commit 2b7abf23e8b155a942ffc9c404ee31ca3586af57 Author: root Date: Tue Aug 13 05:44:19 2024 +0000 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30b7b54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +app/*.pdf +app/*.jpg diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..2c3cd16 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,2 @@ +*.jpg +*.pdf diff --git a/app/API/.htaccess b/app/API/.htaccess new file mode 100644 index 0000000..35fbef5 --- /dev/null +++ b/app/API/.htaccess @@ -0,0 +1,3 @@ +RewriteEngine On +RewriteCond %{HTTP:Authorization} ^(.*) +RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] \ No newline at end of file diff --git a/app/API/data.json b/app/API/data.json new file mode 100644 index 0000000..394ea35 --- /dev/null +++ b/app/API/data.json @@ -0,0 +1,58 @@ +[ + { + "nim":"1234", + "nama":"Agung Saputra", + "alamat":"Semarang", + "jurusan":"Teknik Informatika", + "MK":[ + { + "mk_kode":"101", + "nama_mk":"SISTEM BASIS DATA" + }, + { + "mk_kode":"102", + "nama_mk":"ALJABAR LINIER" + }, + { + "mk_kode":"103", + "nama_mk":"ANALISA ALGORITMA" + }, + { + "mk_kode":"104", + "nama_mk":"KECERDASAN BUATAN" + }, + { + "mk_kode":"105", + "nama_mk":"JARINGAN KOMPUTER" + } + ] + }, + { + "nim":"1236", + "nama":"Mirani Rahmawati", + "alamat":"Pemalang", + "jurusan":"Sistem Informasi", + "MK":[ + { + "mk_kode":"301", + "nama_mk":"ANALISA PROSES BISNIS" + }, + { + "mk_kode":"302", + "nama_mk":"DATABASE TERDISTRIBUSI" + }, + { + "mk_kode":"303", + "nama_mk":"ETIKA PROFESI" + }, + { + "mk_kode":"304", + "nama_mk":"REKAYASA WEB" + }, + { + "mk_kode":"305", + "nama_mk":"AUDIT SISTEM INFORMASI" + } + ] + } +] \ No newline at end of file diff --git a/app/API/main.php b/app/API/main.php new file mode 100644 index 0000000..1cffaf6 --- /dev/null +++ b/app/API/main.php @@ -0,0 +1,34 @@ + + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/API/tabel.php b/app/API/tabel.php new file mode 100644 index 0000000..d39b2bd --- /dev/null +++ b/app/API/tabel.php @@ -0,0 +1,34 @@ + + + + array( + 'method' => 'GET', + 'header' => 'x-token: '.$token +)); +$context = stream_context_create($options); +$content = file_get_contents($url.'/'.$jenis_rawat.'/'.$jenis_filter.'/'.$tgl_awal.'/'.$tgl_akhir, false, $context); +$content=utf8_encode($content); +$result=json_decode($content,true); +?> + + + + + + + + + +
RuangICD CodeJenis PenyakitNama Dokter
+ diff --git a/app/API/tes.php b/app/API/tes.php new file mode 100644 index 0000000..df1cf2f --- /dev/null +++ b/app/API/tes.php @@ -0,0 +1,27 @@ + array( + 'method' => 'GET', + 'header' => 'x-token: '.$token +)); +$context = stream_context_create($options); +$content = file_get_contents($url.'/'.$jenis_rawat.'/'.$jenis_filter.'/'.$tgl_awal.'/'.$tgl_akhir, false, $context); +$content=utf8_encode($content); +$result=json_decode($content,true); +?> + + + + + + +
RuangICD CodeJenis PenyakitNama Dokter
diff --git a/app/bel_inbox/crud.php b/app/bel_inbox/crud.php new file mode 100644 index 0000000..7e0d00b --- /dev/null +++ b/app/bel_inbox/crud.php @@ -0,0 +1,78 @@ + \ No newline at end of file diff --git a/app/bel_inbox/excel.php b/app/bel_inbox/excel.php new file mode 100644 index 0000000..daf4b75 --- /dev/null +++ b/app/bel_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_ibel i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_ibel.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/bel_inbox/main.php b/app/bel_inbox/main.php new file mode 100644 index 0000000..58e9f42 --- /dev/null +++ b/app/bel_inbox/main.php @@ -0,0 +1,169 @@ + +
+
+
+
+

Inbox Ijin Belajar

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/bel_inbox/modal_edit_verifikasi.php b/app/bel_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..536b445 --- /dev/null +++ b/app/bel_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/bel_inbox/modal_verifikasi.php b/app/bel_inbox/modal_verifikasi.php new file mode 100644 index 0000000..36f3fea --- /dev/null +++ b/app/bel_inbox/modal_verifikasi.php @@ -0,0 +1,192 @@ + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Pendidikan
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/bel_inbox/modal_view.php b/app/bel_inbox/modal_view.php new file mode 100644 index 0000000..5325cd3 --- /dev/null +++ b/app/bel_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/bel_inbox/pdf_bkd/.htaccess b/app/bel_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/bel_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/bel_inbox/pdf_bkd/crud.php b/app/bel_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..13390be --- /dev/null +++ b/app/bel_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/bel_inbox/pdf_bkd/pdf/261_ANASTASIA NING W.jpeg b/app/bel_inbox/pdf_bkd/pdf/261_ANASTASIA NING W.jpeg new file mode 100644 index 0000000..7e17e17 Binary files /dev/null and b/app/bel_inbox/pdf_bkd/pdf/261_ANASTASIA NING W.jpeg differ diff --git a/app/bel_inbox/pdf_bkd/pdf/270_ENDANG MUDAYATI.jpeg b/app/bel_inbox/pdf_bkd/pdf/270_ENDANG MUDAYATI.jpeg new file mode 100644 index 0000000..2608507 Binary files /dev/null and b/app/bel_inbox/pdf_bkd/pdf/270_ENDANG MUDAYATI.jpeg differ diff --git a/app/bel_inbox/pdf_bkd/tabel_upl_cv.php b/app/bel_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..f4942ed --- /dev/null +++ b/app/bel_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/bel_inbox/pdf_bkd/upl_cv.php b/app/bel_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..6b3a275 --- /dev/null +++ b/app/bel_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/bel_inbox/pdf_dir/.htaccess b/app/bel_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/bel_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/bel_inbox/pdf_dir/crud.php b/app/bel_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..f792085 --- /dev/null +++ b/app/bel_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/bel_inbox/pdf_dir/tabel_upl_cv.php b/app/bel_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..3e7a9ec --- /dev/null +++ b/app/bel_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/bel_inbox/pdf_dir/upl_cv.php b/app/bel_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..697e5e7 --- /dev/null +++ b/app/bel_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/bel_inbox/tabel.php b/app/bel_inbox/tabel.php new file mode 100644 index 0000000..17aad62 --- /dev/null +++ b/app/bel_inbox/tabel.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/bel_inbox/tabel_verifikasi.php b/app/bel_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..857a3cc --- /dev/null +++ b/app/bel_inbox/tabel_verifikasi.php @@ -0,0 +1,187 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGAN + +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/bel_setting/crud.php b/app/bel_setting/crud.php new file mode 100644 index 0000000..9d78a14 --- /dev/null +++ b/app/bel_setting/crud.php @@ -0,0 +1,43 @@ + 0) { + $upd_bel_setting = pg_query("UPDATE syarat_ibel SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_bel_setting = pg_query("INSERT into syarat_ibel ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_bel_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_ibel WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_bel_setting = pg_query("DELETE FROM syarat_ibel WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/bel_setting/main.php b/app/bel_setting/main.php new file mode 100644 index 0000000..d7e684b --- /dev/null +++ b/app/bel_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Ijin Belajar

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/bel_setting/modal.php b/app/bel_setting/modal.php new file mode 100644 index 0000000..30a2074 --- /dev/null +++ b/app/bel_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/bel_setting/pdf/.htaccess b/app/bel_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/bel_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/bel_setting/pdf/crud.php b/app/bel_setting/pdf/crud.php new file mode 100644 index 0000000..47321b1 --- /dev/null +++ b/app/bel_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/bel_setting/pdf/pdf/10_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/10_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/10_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/pdf/11_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/11_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/11_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/pdf/12_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/12_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/12_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/pdf/13_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/13_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/13_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/pdf/14_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/14_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/14_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/pdf/4_PERSYARATAN IBEL 1.doc b/app/bel_setting/pdf/pdf/4_PERSYARATAN IBEL 1.doc new file mode 100644 index 0000000..28b0ff2 Binary files /dev/null and b/app/bel_setting/pdf/pdf/4_PERSYARATAN IBEL 1.doc differ diff --git a/app/bel_setting/pdf/tabel_upl_cv.php b/app/bel_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..8ff7c77 --- /dev/null +++ b/app/bel_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/bel_setting/pdf/upl_cv.php b/app/bel_setting/pdf/upl_cv.php new file mode 100644 index 0000000..b62fab1 --- /dev/null +++ b/app/bel_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/bel_setting/tabel.php b/app/bel_setting/tabel.php new file mode 100644 index 0000000..644dfd5 --- /dev/null +++ b/app/bel_setting/tabel.php @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#PNSBLUDTools
+ + + + +
+ + + + + diff --git a/app/bel_setting/upd_file.php b/app/bel_setting/upd_file.php new file mode 100644 index 0000000..599ee6f --- /dev/null +++ b/app/bel_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/belajar/crud.php b/app/belajar/crud.php new file mode 100644 index 0000000..6369cf3 --- /dev/null +++ b/app/belajar/crud.php @@ -0,0 +1,98 @@ + 0) { + $upd=pg_query("UPDATE riwayat_belajar SET + data_pegawai_id='$data_pegawai_id', + prodi_id='$prodi_id', + jurusan_id='$jurusan_id', + univ_id='$univ_id', + tanggal_masuk='$tm-$bm-$hm', + tanggal_selesai='$ts-$bs-$hs', + status_persetujuan='$status_persetujuan', + tanggal_rssa='$t-$b-$h', + sk_rssa='$sk_rssa', + tanggal_bkd='$t1-$b1-$h1', + sk_bkd='$sk_bkd' + WHERE id='$id' + "); + } else { + $ins=pg_query("INSERT INTO riwayat_belajar ( + data_pegawai_id, + prodi_id, + jurusan_id, + univ_id, + tanggal_masuk, + tanggal_selesai, + status_persetujuan, + tanggal_rssa, + sk_rssa, + tanggal_bkd, + sk_bkd + ) VALUES ( + '$data_pegawai_id', + '$prodi_id', + '$jurusan_id', + '$univ_id', + '$tm-$bm-$hm', + '$ts-$bs-$hs', + '$status_persetujuan', + '$t-$b-$h', + '$sk_rssa', + '$t1-$b1-$h1', + '$sk_bkd' + )"); + } + +} +?> \ No newline at end of file diff --git a/app/belajar/main.php b/app/belajar/main.php new file mode 100644 index 0000000..36266eb --- /dev/null +++ b/app/belajar/main.php @@ -0,0 +1,112 @@ +
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/app/belajar/modal.php b/app/belajar/modal.php new file mode 100644 index 0000000..e124104 --- /dev/null +++ b/app/belajar/modal.php @@ -0,0 +1,265 @@ + + + + + + + + + +
+
+ + + + + + + +
+ +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ +
+ "> + s/d + "> +
+
+ +
+ + +
+ +
+ + " + > +
+ +
+ + +
+ +
+ + " + > +
+ +
+ + +
+ +
+ + + \ No newline at end of file diff --git a/app/belajar/tabel.php b/app/belajar/tabel.php new file mode 100644 index 0000000..28f6e32 --- /dev/null +++ b/app/belajar/tabel.php @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamaSatuan KerjaProdiJurusanUniversitasMasukSelesaiJenisTools
+ + +
+ + + + + diff --git a/app/cekmentor/main.php b/app/cekmentor/main.php new file mode 100644 index 0000000..00d3d92 --- /dev/null +++ b/app/cekmentor/main.php @@ -0,0 +1,40 @@ + + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/cekmentor/mentor/crud.php b/app/cekmentor/mentor/crud.php new file mode 100644 index 0000000..7f6b136 --- /dev/null +++ b/app/cekmentor/mentor/crud.php @@ -0,0 +1,209 @@ + 0) {} else { + $r=pg_query("SELECT tenaga_id,tenaga2_id FROM data_pegawai WHERE id='$selected'"); + while($rr=pg_fetch_array($r)) {$tenaga_id=$rr[0];$tenaga2_id=$rr[1];} + $ins_peserta = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + status, + tanggal_reg, + satuan_kerja_id, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$selected', + '1', + 'Pending', + NOW(), + '$satuan_kerja_id', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} +} else +if ($key=='delete_peserta') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} else +if ($key=='cek_quota') { + $riwayat_kegiatan_id=$_POST['riwayat_kegiatan_id']; + $satuan_kerja_id=$_POST['satuan_kerja_id']; + $str=$_POST['str']; + $e=pg_query("SELECT DATE_PART('day', NOW()::timestamp - jatuh_tempo_reg::timestamp) FROM riwayat_kegiatan WHERE id='$riwayat_kegiatan_id'"); + while($re=pg_fetch_array($e)) {$jhari=$re[0];} + $c=pg_query("SELECT DISTINCT tenaga_id,(SELECT nama FROM tenaga WHERE id=tenaga_id) FROM bidang WHERE satuan_kerja_id='$satuan_kerja_id'"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[1]; + if ($rc[0]=='1') { + $j=pg_query("SELECT COALESCE(quota1,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_medis=$rj[0];} + if ($q_medis==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=1"); + while($rk=pg_fetch_array($k)) {$tot_quo1=$rk[0];} + echo ''; + } + } else + if ($rc[0]==2) { + $j=pg_query("SELECT COALESCE(quota2,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_nmedis=$rj[0];} + if ($q_nmedis==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=2"); + while($rk=pg_fetch_array($k)) {$tot_quo2=$rk[0];} + echo ''; + } + } else + if ($rc[0]==3) { + $j=pg_query("SELECT COALESCE(quota3,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_perawatan=$rj[0];} + if ($q_perawatan==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=3"); + while($rk=pg_fetch_array($k)) {$tot_quo3=$rk[0];} + echo ' + + + + + + + '; + } + } else + if ($rc[0]==4) { + $j=pg_query("SELECT COALESCE(quota4,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_nperawatan=$rj[0];} + if ($q_nperawatan==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=4"); + while($rk=pg_fetch_array($k)) {$tot_quo4=$rk[0];} + echo ''; + } + } else + if ($rc[0]==5) { + $j=pg_query("SELECT COALESCE(quota5,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_pekarya=$rj[0];} + if ($q_pekarya==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=5"); + while($rk=pg_fetch_array($k)) {$tot_quo5=$rk[0];} + echo ' + + + + + + + '; + } + + } + } +} else +if ($key=='cek_vmentor') { +$id=$_POST['id']; +$upd=pg_query("UPDATE riwayat_peserta SET status_mentor='Ready' WHERE id='$id'"); +} else +if ($key=='ditolak_vmentor') { +$id=$_POST['id']; +$upd=pg_query("UPDATE riwayat_peserta SET status_mentor='Ditolak' WHERE id='$id'"); +} else +if ($key=='batal_vmentor') { +$id=$_POST['id']; +$upd=pg_query("UPDATE riwayat_peserta SET status_mentor='Pending' WHERE id='$id'"); +} +?> + + + + + + + + \ No newline at end of file diff --git a/app/cekmentor/mentor/del_nd.php b/app/cekmentor/mentor/del_nd.php new file mode 100644 index 0000000..31b22b4 --- /dev/null +++ b/app/cekmentor/mentor/del_nd.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/cekmentor/mentor/main.php b/app/cekmentor/mentor/main.php new file mode 100644 index 0000000..8d914c7 --- /dev/null +++ b/app/cekmentor/mentor/main.php @@ -0,0 +1,94 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/app/cekmentor/mentor/modal.php b/app/cekmentor/mentor/modal.php new file mode 100644 index 0000000..cbdbecc --- /dev/null +++ b/app/cekmentor/mentor/modal.php @@ -0,0 +1,26 @@ + + +
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/app/cekmentor/mentor/nd.php b/app/cekmentor/mentor/nd.php new file mode 100644 index 0000000..37559b0 --- /dev/null +++ b/app/cekmentor/mentor/nd.php @@ -0,0 +1,149 @@ +"Senin","Selasa","Rabu","Kamis","Jumat", "Sabtu","Minggu"); +$hari1 = $array_hari[date("N",strtotime($tanggal_mulai))]; +$hari2 = $array_hari[date("N",strtotime($tanggal_selesai))]; + +$bulan = array( + '01' => 'Januari', + '02' => 'Februari', + '03' => 'Maret', + '04' => 'April', + '05' => 'Mei', + '06' => 'Juni', + '07' => 'Juli', + '08' => 'Agustus', + '09' => 'September', + '10' => 'Oktober', + '11' => 'November', + '12' => 'Desember', + ); +$bulan[date('m')]; + +if (($sebagai_id=='2') || ($sebagai_id=='4')) { +$template_file_name = 'nd_permohonan_ns.docx'; +$rand_no = rand(111111, 999999); +$fileName = "NOTA_DINAS_PERMOHONAN_MENTOR_".$nama_nd.'_'.$no_nd_1.".docx"; +} else { +$template_file_name = 'nd_permohonan_pembuka.docx'; +$rand_no = rand(111111, 999999); +$fileName = "NOTA_DINAS_PERMOHONAN_PEMBUKA_".$jabatan_nd.'_'.$no_nd_1.".docx"; +} + +$folder = $id; +$full_path = $folder . '/' . $fileName; + +try +{ + if (!file_exists($folder)) + { + mkdir($folder); + } + + //Copy the Template file to the Result Directory + copy($template_file_name, $full_path); + + // add calss Zip Archive + $zip_val = new ZipArchive; + + //Docx file is nothing but a zip file. Open this Zip File + if($zip_val->open($full_path) == true) + { + // In the Open XML Wordprocessing format content is stored. + // In the document.xml file located in the word directory. + + $key_file_name = 'word/document.xml'; + $message = $zip_val->getFromName($key_file_name); + + $timestamp = date('d-M-Y H:i:s'); + + // this data Replace the placeholders with actual values + $message = str_replace("nama_nd", $nama_nd, $message); + $message = str_replace("jabatan_nd", $jabatan_nd, $message); + $message = str_replace("satker_nd", $satker_nd, $message); + $message = str_replace("tgl_nd_1", date('d',strtotime($tgl_nd_1)).' '.($bulan[date('m',strtotime($tgl_nd_1))]).' '.date('Y',strtotime($tgl_nd_1)), $message); + $message = str_replace("no_nd_1", $no_nd_1, $message); + $message = str_replace("thn_nd_1", $thn_nd_1, $message); + $message = str_replace("perihal_nd", 'Permohonan Sebagai '.$sebagai, $message); + $message = str_replace("nama_pelatihan_nd_1", $nama_pelatihan_nd_1, $message); + + if ($tanggal_mulai==$tanggal_selesai) { + $message = str_replace("hari_nd_1", $hari1, $message); + $message = str_replace("tanggal_nd1", date('d',strtotime($tanggal_mulai)).' '.($bulan[date('m',strtotime($tanggal_mulai))]).' '.date('Y',strtotime($tanggal_mulai)), $message); + } else { + $message = str_replace("hari_nd_1", $hari1.' s/d '.$hari2, $message); + $message = str_replace("tanggal_nd1", date('d',strtotime($tanggal_mulai)).' '.($bulan[date('m',strtotime($tanggal_mulai))]).' '.date('Y',strtotime($tanggal_mulai)).' s/d '.date('d',strtotime($tanggal_selesai)).' '.($bulan[date('m',strtotime($tanggal_selesai))]).' '.date('Y',strtotime($tanggal_selesai)), $message); + } + if (date('H:i',strtotime($waktu_selesai))=='00:00') { + $message = str_replace("waktu_nd_1", date('H:i',strtotime($waktu_mulai)).' s/d Selesai', $message); + } else { + $message = str_replace("waktu_nd_1", date('H:i',strtotime($waktu_mulai)).' s/d '.date('H:i',strtotime($waktu_selesai)), $message); + } + $message = str_replace("tempat_nd_1", $tempat_nd_1, $message); + $message = str_replace("sebagai_nd", $sebagai, $message); + $message = str_replace("kabid_nd_1", $nm_kepala, $message); + $message = str_replace("pangkat_nd_1", $pangkat, $message); + $message = str_replace("nip_nd_1", $nip, $message); + + $zip_val->addFromString($key_file_name, $message); + $zip_val->close(); + + } +} +catch (Exception $exc) +{ + $error_message = "Error creating the Word Document"; + var_dump($exc); +} + +echo $fileName; + + + +?> \ No newline at end of file diff --git a/app/cekmentor/mentor/nd_permohonan_ns.docx b/app/cekmentor/mentor/nd_permohonan_ns.docx new file mode 100644 index 0000000..0448920 Binary files /dev/null and b/app/cekmentor/mentor/nd_permohonan_ns.docx differ diff --git a/app/cekmentor/mentor/nd_permohonan_pembuka.docx b/app/cekmentor/mentor/nd_permohonan_pembuka.docx new file mode 100644 index 0000000..a04c8e1 Binary files /dev/null and b/app/cekmentor/mentor/nd_permohonan_pembuka.docx differ diff --git a/app/cekmentor/mentor/tabel.php b/app/cekmentor/mentor/tabel.php new file mode 100644 index 0000000..9b8ce73 --- /dev/null +++ b/app/cekmentor/mentor/tabel.php @@ -0,0 +1,188 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Permohonan MentorGolSexTenagaSebagaiStatusTools
+ + + + + + +
+ + + + + diff --git a/app/cekmentor/mentor/tabel_peg.php b/app/cekmentor/mentor/tabel_peg.php new file mode 100644 index 0000000..55133a3 --- /dev/null +++ b/app/cekmentor/mentor/tabel_peg.php @@ -0,0 +1,165 @@ + + + + + + + + + + + + +    +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + NamaGolSexJabCountTools
+ + + +
+ + diff --git a/app/cekmentor/tabel.php b/app/cekmentor/tabel.php new file mode 100644 index 0000000..c860b8d --- /dev/null +++ b/app/cekmentor/tabel.php @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + 'Selesai' + AND s.status_mentor IS NOT NULL + AND s.satuan_kerja_id='$satuan_kerja_id' +AND (SELECT COUNT(DISTINCT(COALESCE(s1.no_nd,'-'))) FROM riwayat_peserta s1 WHERE s1.riwayat_kegiatan_id=p.id AND s1.sebagai_id NOT IN ('1','3','5','6') +AND COALESCE(s1.no_nd,'-')='-')=0 + ORDER BY p.jatuh_tempo_reg ASC + "); + while($r=pg_fetch_array($data)) { + + ?> + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusClose RegTools
+ + +
+ + + + \ No newline at end of file diff --git a/app/cekpeserta/main.php b/app/cekpeserta/main.php new file mode 100644 index 0000000..b44b026 --- /dev/null +++ b/app/cekpeserta/main.php @@ -0,0 +1,40 @@ + + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/cekpeserta/peserta/.htaccess b/app/cekpeserta/peserta/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/cekpeserta/peserta/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/cekpeserta/peserta/cek_status.php b/app/cekpeserta/peserta/cek_status.php new file mode 100644 index 0000000..bcf8c54 --- /dev/null +++ b/app/cekpeserta/peserta/cek_status.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/app/cekpeserta/peserta/crud.php b/app/cekpeserta/peserta/crud.php new file mode 100644 index 0000000..148eaf9 --- /dev/null +++ b/app/cekpeserta/peserta/crud.php @@ -0,0 +1,244 @@ + 0) {} else { + $r=pg_query("SELECT tenaga_id,tenaga2_id FROM data_pegawai WHERE id='$selected'"); + while($rr=pg_fetch_array($r)) {$tenaga_id=$rr[0];$tenaga2_id=$rr[1];} + $ins_peserta = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + status, + tanggal_reg, + satuan_kerja_id, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$selected', + '1', + 'Pending', + NOW(), + '$satuan_kerja_id', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} +} else +if ($key=='delete_peserta') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} else +if ($key=='cek_quota') { + $riwayat_kegiatan_id=$_POST['riwayat_kegiatan_id']; + $satuan_kerja_id=$_POST['satuan_kerja_id']; + $str=$_POST['str']; + $e=pg_query("SELECT DATE_PART('day', NOW()::timestamp - jatuh_tempo_reg::timestamp) FROM riwayat_kegiatan WHERE id='$riwayat_kegiatan_id'"); + while($re=pg_fetch_array($e)) {$jhari=$re[0];} + $c=pg_query("SELECT DISTINCT tenaga_id,(SELECT nama FROM tenaga WHERE id=tenaga_id) FROM bidang WHERE satuan_kerja_id='$satuan_kerja_id'"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[1]; + if ($rc[0]=='1') { + $j=pg_query("SELECT COALESCE(quota1,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_medis=$rj[0];} + if ($q_medis==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=1 AND status IS NOT NULL"); + while($rk=pg_fetch_array($k)) {$tot_quo1=$rk[0];} + echo ''; + } + } else + if ($rc[0]==2) { + $j=pg_query("SELECT COALESCE(quota2,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_nmedis=$rj[0];} + if ($q_nmedis==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=2 AND status IS NOT NULL"); + while($rk=pg_fetch_array($k)) {$tot_quo2=$rk[0];} + echo ''; + } + } else + if ($rc[0]==3) { + $j=pg_query("SELECT COALESCE(quota3,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_perawatan=$rj[0];} + if ($q_perawatan==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=3 AND status IS NOT NULL"); + while($rk=pg_fetch_array($k)) {$tot_quo3=$rk[0];} + echo ' + + + + + + + '; + } + } else + if ($rc[0]==4) { + $j=pg_query("SELECT COALESCE(quota4,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_nperawatan=$rj[0];} + if ($q_nperawatan==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=4 AND status IS NOT NULL"); + while($rk=pg_fetch_array($k)) {$tot_quo4=$rk[0];} + echo ''; + } + } else + if ($rc[0]==5) { + $j=pg_query("SELECT COALESCE(quota5,0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str'"); + while($rj=pg_fetch_array($j)) {$q_pekarya=$rj[0];} + if ($q_pekarya==0) {} else { + $k=pg_query("SELECT COALESCE(COUNT(*),0) FROM riwayat_peserta WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id=5 AND status IS NOT NULL"); + while($rk=pg_fetch_array($k)) {$tot_quo5=$rk[0];} + echo ' + + + + + + + '; + } + + } else {} + } +} else +if ($key=='vready') { +$riwayat_kegiatan_id=$_POST['riwayat_kegiatan_id']; +$satuan_kerja_id=$_POST['satuan_kerja_id']; +$str=$_POST['str']; + if (($satuan_kerja_id==null) || ($satuan_kerja_id=="")) { + $c=pg_query("SELECT DISTINCT tenaga_id FROM bidang"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[0]; + $upd=pg_query("UPDATE riwayat_peserta SET status='Ready' WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id='$n' AND status IS NOT NULL"); + } + } else { + $c=pg_query("SELECT DISTINCT tenaga_id FROM bidang WHERE satuan_kerja_id='$satuan_kerja_id'"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[0]; + $upd=pg_query("UPDATE riwayat_peserta SET status='Ready' WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id='$n' AND status IS NOT NULL"); + } + } +} else +if ($key=='vbatal') { +$riwayat_kegiatan_id=$_POST['riwayat_kegiatan_id']; +$satuan_kerja_id=$_POST['satuan_kerja_id']; +$str=$_POST['str']; + if (($satuan_kerja_id==null) || ($satuan_kerja_id=="")) { + $c=pg_query("SELECT DISTINCT tenaga_id FROM bidang"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[0]; + $upd=pg_query("UPDATE riwayat_peserta SET status='Pending' WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id='$n' AND status IS NOT NULL"); + } + } else { + $c=pg_query("SELECT DISTINCT tenaga_id FROM bidang WHERE satuan_kerja_id='$satuan_kerja_id'"); + while(($rc=pg_fetch_array($c)) !== FALSE) {$n=$rc[0]; + $upd=pg_query("UPDATE riwayat_peserta SET status='Pending' WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$str' AND tenaga_id='$n' AND status IS NOT NULL"); + } + } +} else +if ($key=='delete_cv') { +$riwayat_kegiatan_id=$_POST['id']; +$del_cv=pg_query("UPDATE riwayat_kegiatan SET pdf_spt=NULL WHERE id='$riwayat_kegiatan_id'"); +} +?> + + \ No newline at end of file diff --git a/app/cekpeserta/peserta/main.php b/app/cekpeserta/peserta/main.php new file mode 100644 index 0000000..7d6bcaa --- /dev/null +++ b/app/cekpeserta/peserta/main.php @@ -0,0 +1,380 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+ +
+   + + +
+
+
    +[Konfirmasi Bidang]    + + + +   +
+ + +
+ +
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/cekpeserta/peserta/modal.php b/app/cekpeserta/peserta/modal.php new file mode 100644 index 0000000..cbdbecc --- /dev/null +++ b/app/cekpeserta/peserta/modal.php @@ -0,0 +1,26 @@ + + +
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/app/cekpeserta/peserta/modal_nd1.php b/app/cekpeserta/peserta/modal_nd1.php new file mode 100644 index 0000000..3b3628d --- /dev/null +++ b/app/cekpeserta/peserta/modal_nd1.php @@ -0,0 +1,65 @@ + + + + +
+
+ + + +
+
+ + "> +
+ +
+ diff --git a/app/cekpeserta/peserta/modal_spt.php b/app/cekpeserta/peserta/modal_spt.php new file mode 100644 index 0000000..24d7c5b --- /dev/null +++ b/app/cekpeserta/peserta/modal_spt.php @@ -0,0 +1,60 @@ + + +
+ + + +
+

+ + + \ No newline at end of file diff --git a/app/cekpeserta/peserta/tabel.php b/app/cekpeserta/peserta/tabel.php new file mode 100644 index 0000000..07eefa9 --- /dev/null +++ b/app/cekpeserta/peserta/tabel.php @@ -0,0 +1,120 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaSexTenagaTgl DaftarUndanganStatusTools
+ + + + + + +
+ + + + + diff --git a/app/cekpeserta/peserta/tabel_peg.php b/app/cekpeserta/peserta/tabel_peg.php new file mode 100644 index 0000000..55133a3 --- /dev/null +++ b/app/cekpeserta/peserta/tabel_peg.php @@ -0,0 +1,165 @@ + + + + + + + + + + + + +    +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + NamaGolSexJabCountTools
+ + + +
+ + diff --git a/app/cekpeserta/peserta/tabel_upl_cv.php b/app/cekpeserta/peserta/tabel_upl_cv.php new file mode 100644 index 0000000..4a31851 --- /dev/null +++ b/app/cekpeserta/peserta/tabel_upl_cv.php @@ -0,0 +1,47 @@ + + + +
+ + +
+ + + \ No newline at end of file diff --git a/app/cekpeserta/peserta/upl_cv.php b/app/cekpeserta/peserta/upl_cv.php new file mode 100644 index 0000000..519b371 --- /dev/null +++ b/app/cekpeserta/peserta/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/cekpeserta/tabel.php b/app/cekpeserta/tabel.php new file mode 100644 index 0000000..455a986 --- /dev/null +++ b/app/cekpeserta/tabel.php @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + 'Selesai' + ".($jenis_user == 'Bidang' ? "AND p.kode_pelatihan='BID'" : "")." + ORDER BY p.jatuh_tempo_reg ASC + "); + while($r=pg_fetch_array($data)) { + + ?> + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusClose RegTools
+ +
+ + + + + + + + \ No newline at end of file diff --git a/app/evaluasikd/crud.php b/app/evaluasikd/crud.php new file mode 100644 index 0000000..62c8e4b --- /dev/null +++ b/app/evaluasikd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/evaluasikd/form/5/BLANGKO_BONDAN DWI WIJAYANTO.docx b/app/evaluasikd/form/5/BLANGKO_BONDAN DWI WIJAYANTO.docx new file mode 100644 index 0000000..464c4f6 Binary files /dev/null and b/app/evaluasikd/form/5/BLANGKO_BONDAN DWI WIJAYANTO.docx differ diff --git a/app/evaluasikd/form/blangko.docx b/app/evaluasikd/form/blangko.docx new file mode 100644 index 0000000..c34673c Binary files /dev/null and b/app/evaluasikd/form/blangko.docx differ diff --git a/app/evaluasikd/form/blangko.php b/app/evaluasikd/form/blangko.php new file mode 100644 index 0000000..5f94b98 --- /dev/null +++ b/app/evaluasikd/form/blangko.php @@ -0,0 +1,97 @@ +open($full_path) == true) + { + // In the Open XML Wordprocessing format content is stored. + // In the document.xml file located in the word directory. + + $key_file_name = 'word/document.xml'; + $message = $zip_val->getFromName($key_file_name); + $timestamp = date('d-M-Y H:i:s'); + + $message = str_replace("ev_nama_penilai", $ev_nama_penilai, $message); + $message = str_replace("ev_jabatan_penilai", $ev_jabatan_penilai, $message); + $message = str_replace("ev_satker_penilai", $ev_satker_penilai, $message); + $message = str_replace("ev_nip_penilai", $ev_nip_penilai, $message); + + $message = str_replace("ev_nama_peserta", $ev_nama_peserta, $message); + $message = str_replace("ev_jabatan_peserta", $ev_jabatan_peserta, $message); + $message = str_replace("ev_satker_peserta", $ev_satker_peserta, $message); + $message = str_replace("ev_kegiatan", $ev_kegiatan, $message); + + $zip_val->addFromString($key_file_name, $message); + $zip_val->close(); + + } +} +catch (Exception $exc) +{ + $error_message = "Error creating the Word Document"; + var_dump($exc); +} + +echo $fileName; + + + +?> \ No newline at end of file diff --git a/app/evaluasikd/form/crud.php b/app/evaluasikd/form/crud.php new file mode 100644 index 0000000..45cb178 --- /dev/null +++ b/app/evaluasikd/form/crud.php @@ -0,0 +1,67 @@ + 0) { + $upd=pg_query("UPDATE nilai_evaluasi SET nilai='$nilai' WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + } else { + $ins=pg_query("INSERT INTO nilai_evaluasi (form_digital_id,penilai_evaluasi_id,nilai) VALUES ('$form_digital_id','$penilai_evaluasi_id','$nilai') "); + } +} else +if ($key=='simpan_s') { + $form_digital_id=$_POST['form_digital_id']; + $penilai_evaluasi_id=$_POST['penilai_evaluasi_id']; + $nilai=$_POST['nilai']; + $cek=pg_query("SELECT id FROM nilai_evaluasi WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + $row_add = pg_fetch_row($cek); + if ($row_add[0] > 0) { + $upd=pg_query("UPDATE nilai_evaluasi SET nilai='$nilai' WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + } else { + $ins=pg_query("INSERT INTO nilai_evaluasi (form_digital_id,penilai_evaluasi_id,nilai) VALUES ('$form_digital_id','$penilai_evaluasi_id','$nilai') "); + } +} else +if ($key=='simpan_ts') { + $form_digital_id=$_POST['form_digital_id']; + $penilai_evaluasi_id=$_POST['penilai_evaluasi_id']; + $nilai=$_POST['nilai']; + $cek=pg_query("SELECT id FROM nilai_evaluasi WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + $row_add = pg_fetch_row($cek); + if ($row_add[0] > 0) { + $upd=pg_query("UPDATE nilai_evaluasi SET nilai='$nilai' WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + } else { + $ins=pg_query("INSERT INTO nilai_evaluasi (form_digital_id,penilai_evaluasi_id,nilai) VALUES ('$form_digital_id','$penilai_evaluasi_id','$nilai') "); + } +} else +if ($key=='simpan_sts') { + $form_digital_id=$_POST['form_digital_id']; + $penilai_evaluasi_id=$_POST['penilai_evaluasi_id']; + $nilai=$_POST['nilai']; + $cek=pg_query("SELECT id FROM nilai_evaluasi WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + $row_add = pg_fetch_row($cek); + if ($row_add[0] > 0) { + $upd=pg_query("UPDATE nilai_evaluasi SET nilai='$nilai' WHERE form_digital_id='$form_digital_id' AND penilai_evaluasi_id='$penilai_evaluasi_id'"); + } else { + $ins=pg_query("INSERT INTO nilai_evaluasi (form_digital_id,penilai_evaluasi_id,nilai) VALUES ('$form_digital_id','$penilai_evaluasi_id','$nilai') "); + } +} else +if ($key=='send_pp') { +$riwayat_evaluasi_id=$_POST['riwayat_evaluasi_id']; +$upd=pg_query("UPDATE riwayat_evaluasi SET status='Selesai' WHERE id='$riwayat_evaluasi_id'"); +} +?> + diff --git a/app/evaluasikd/form/del_bl.php b/app/evaluasikd/form/del_bl.php new file mode 100644 index 0000000..31b22b4 --- /dev/null +++ b/app/evaluasikd/form/del_bl.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/evaluasikd/form/main.php b/app/evaluasikd/form/main.php new file mode 100644 index 0000000..57f1415 --- /dev/null +++ b/app/evaluasikd/form/main.php @@ -0,0 +1,101 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+ +
+ + + + +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/app/evaluasikd/form/modal_penilai.php b/app/evaluasikd/form/modal_penilai.php new file mode 100644 index 0000000..7ac65ce --- /dev/null +++ b/app/evaluasikd/form/modal_penilai.php @@ -0,0 +1,227 @@ + + + + + + +
+
+
+
+
+
+ + '.$peserta.' : '.strtoupper($jenis_pelatihan); ?>
+
+ +
+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+

+ + + +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/app/evaluasikd/form/tabel.php b/app/evaluasikd/form/tabel.php new file mode 100644 index 0000000..4177a09 --- /dev/null +++ b/app/evaluasikd/form/tabel.php @@ -0,0 +1,87 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaStatus Form DigitalTools
+ + + +
+ + + + diff --git a/app/evaluasikd/form/tabel_nilai.php b/app/evaluasikd/form/tabel_nilai.php new file mode 100644 index 0000000..44c411b --- /dev/null +++ b/app/evaluasikd/form/tabel_nilai.php @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SSSTSSTS
"
+ + \ No newline at end of file diff --git a/app/evaluasikd/form/tabel_penilai.php b/app/evaluasikd/form/tabel_penilai.php new file mode 100644 index 0000000..f6ce070 --- /dev/null +++ b/app/evaluasikd/form/tabel_penilai.php @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + +
SebagaiNamaJabatanTools
+ + + + +
+ + + + \ No newline at end of file diff --git a/app/evaluasikd/main.php b/app/evaluasikd/main.php new file mode 100644 index 0000000..cbf29b4 --- /dev/null +++ b/app/evaluasikd/main.php @@ -0,0 +1,36 @@ + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/evaluasikd/tabel.php b/app/evaluasikd/tabel.php new file mode 100644 index 0000000..548d224 --- /dev/null +++ b/app/evaluasikd/tabel.php @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusTools
+ +
+ + + + + + \ No newline at end of file diff --git a/app/evaluasipp/crud.php b/app/evaluasipp/crud.php new file mode 100644 index 0000000..62c8e4b --- /dev/null +++ b/app/evaluasipp/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/evaluasipp/form/New Folder/crud.php b/app/evaluasipp/form/New Folder/crud.php new file mode 100644 index 0000000..85bf3ad --- /dev/null +++ b/app/evaluasipp/form/New Folder/crud.php @@ -0,0 +1,44 @@ + 0) {} else { + $r=pg_query("SELECT tenaga_id,tenaga2_id FROM data_pegawai WHERE id='$selected'"); + while($rr=pg_fetch_array($r)) {$tenaga_id=$rr[0];$tenaga2_id=$rr[1];} + $ins_peserta = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + status, + tanggal_reg, + satuan_kerja_id, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$selected', + '1', + 'Pending', + NOW(), + '$satuan_kerja_id', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} +} else +if ($key=='delete_peserta') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/evaluasipp/form/New Folder/main.php b/app/evaluasipp/form/New Folder/main.php new file mode 100644 index 0000000..1a15d7d --- /dev/null +++ b/app/evaluasipp/form/New Folder/main.php @@ -0,0 +1,192 @@ + + + + + + + + +
+
+
+
+ + + + + +
+
+ +
+
+
+
+
+ +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/evaluasipp/form/New Folder/modal.php b/app/evaluasipp/form/New Folder/modal.php new file mode 100644 index 0000000..cbdbecc --- /dev/null +++ b/app/evaluasipp/form/New Folder/modal.php @@ -0,0 +1,26 @@ + + +
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/app/evaluasipp/form/New Folder/tabel.php b/app/evaluasipp/form/New Folder/tabel.php new file mode 100644 index 0000000..3c3773a --- /dev/null +++ b/app/evaluasipp/form/New Folder/tabel.php @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaSatuan KerjaTools
+ +
+ + + + + diff --git a/app/evaluasipp/form/New Folder/tabel_peg.php b/app/evaluasipp/form/New Folder/tabel_peg.php new file mode 100644 index 0000000..c58871e --- /dev/null +++ b/app/evaluasipp/form/New Folder/tabel_peg.php @@ -0,0 +1,185 @@ + +
+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + +    +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + NamaGolSexJabCountTools
+ + + +
+ + diff --git a/app/evaluasipp/form/crud.php b/app/evaluasipp/form/crud.php new file mode 100644 index 0000000..da99bfa --- /dev/null +++ b/app/evaluasipp/form/crud.php @@ -0,0 +1,36 @@ + 0) {} else { + $ins_peserta = pg_query("INSERT into riwayat_evaluasi ( + riwayat_kegiatan_id, + riwayat_peserta_id, + satuan_kerja_id + ) values( + '$riwayat_kegiatan_id', + '$selected', + '$satuan_kerja_id' + ) + "); + } +} +} else +if ($key=='delete_peserta') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_evaluasi WHERE id='$id'"); +} else +if ($key=='status_form') { + $riwayat_kegiatan_id=$_POST['riwayat_kegiatan_id']; + $satuan_kerja_id=$_POST['satuan_kerja_id']; + $upd=pg_query("UPDATE riwayat_evaluasi SET status='Kirim' WHERE riwayat_kegiatan_id='$riwayat_kegiatan_id' AND satuan_kerja_id='$satuan_kerja_id'"); +} +?> + diff --git a/app/evaluasipp/form/main.php b/app/evaluasipp/form/main.php new file mode 100644 index 0000000..0007acb --- /dev/null +++ b/app/evaluasipp/form/main.php @@ -0,0 +1,190 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+ +
+ +
+ + +
+ + +
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/evaluasipp/form/modal.php b/app/evaluasipp/form/modal.php new file mode 100644 index 0000000..2bf9d59 --- /dev/null +++ b/app/evaluasipp/form/modal.php @@ -0,0 +1,132 @@ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + Nama PesertaGolSexTenagaSatuan Kerja
+ +
+ + \ No newline at end of file diff --git a/app/evaluasipp/form/modal_hasil.php b/app/evaluasipp/form/modal_hasil.php new file mode 100644 index 0000000..67da664 --- /dev/null +++ b/app/evaluasipp/form/modal_hasil.php @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SSSTSSTS
"
+ + \ No newline at end of file diff --git a/app/evaluasipp/form/tabel.php b/app/evaluasipp/form/tabel.php new file mode 100644 index 0000000..908da1d --- /dev/null +++ b/app/evaluasipp/form/tabel.php @@ -0,0 +1,124 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaStatus Form DigitalTools
+ + + + +
+ + + + + diff --git a/app/evaluasipp/form/tabel_peg.php b/app/evaluasipp/form/tabel_peg.php new file mode 100644 index 0000000..55133a3 --- /dev/null +++ b/app/evaluasipp/form/tabel_peg.php @@ -0,0 +1,165 @@ + + + + + + + + + + + + +    +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + NamaGolSexJabCountTools
+ + + +
+ + diff --git a/app/evaluasipp/main.php b/app/evaluasipp/main.php new file mode 100644 index 0000000..5e959a3 --- /dev/null +++ b/app/evaluasipp/main.php @@ -0,0 +1,32 @@ + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/evaluasipp/tabel.php b/app/evaluasipp/tabel.php new file mode 100644 index 0000000..b761834 --- /dev/null +++ b/app/evaluasipp/tabel.php @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusTools
+ +
+ + + + + + \ No newline at end of file diff --git a/app/import/que.php b/app/import/que.php new file mode 100644 index 0000000..608136a --- /dev/null +++ b/app/import/que.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/app/inbox/crud.php b/app/inbox/crud.php new file mode 100644 index 0000000..1f8faf7 --- /dev/null +++ b/app/inbox/crud.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/app/inbox/del_und.php b/app/inbox/del_und.php new file mode 100644 index 0000000..31b22b4 --- /dev/null +++ b/app/inbox/del_und.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/inbox/main.php b/app/inbox/main.php new file mode 100644 index 0000000..1f988af --- /dev/null +++ b/app/inbox/main.php @@ -0,0 +1,53 @@ + + + + +
+
+
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/app/inbox/mentor/tabel.php b/app/inbox/mentor/tabel.php new file mode 100644 index 0000000..ec91a5e --- /dev/null +++ b/app/inbox/mentor/tabel.php @@ -0,0 +1,82 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama MentorGolSexTenagaAsal satkerTools
+ +
+ + + + + diff --git a/app/inbox/modal_d_spt.php b/app/inbox/modal_d_spt.php new file mode 100644 index 0000000..6e811d7 --- /dev/null +++ b/app/inbox/modal_d_spt.php @@ -0,0 +1,21 @@ + + + +
+ +
+ \ No newline at end of file diff --git a/app/inbox/modal_d_und.php b/app/inbox/modal_d_und.php new file mode 100644 index 0000000..3897040 --- /dev/null +++ b/app/inbox/modal_d_und.php @@ -0,0 +1,12 @@ + + + +
+ \ No newline at end of file diff --git a/app/inbox/peserta/main.php b/app/inbox/peserta/main.php new file mode 100644 index 0000000..82fda95 --- /dev/null +++ b/app/inbox/peserta/main.php @@ -0,0 +1,102 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+ +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/app/inbox/peserta/tabel.php b/app/inbox/peserta/tabel.php new file mode 100644 index 0000000..bbbceec --- /dev/null +++ b/app/inbox/peserta/tabel.php @@ -0,0 +1,80 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaTgl DaftarStatusTools
+ +
+ + + + + diff --git a/app/inbox/tabel.php b/app/inbox/tabel.php new file mode 100644 index 0000000..394d82f --- /dev/null +++ b/app/inbox/tabel.php @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusTools
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/app/inbox/tabel_list_undangan.php b/app/inbox/tabel_list_undangan.php new file mode 100644 index 0000000..97bea00 --- /dev/null +++ b/app/inbox/tabel_list_undangan.php @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaSebagaiTerimaTools
+ + + + + + +
+ + + + + diff --git a/app/inbox/undangan.docx b/app/inbox/undangan.docx new file mode 100644 index 0000000..6187df3 Binary files /dev/null and b/app/inbox/undangan.docx differ diff --git a/app/inbox/undangan.php b/app/inbox/undangan.php new file mode 100644 index 0000000..1393c4a --- /dev/null +++ b/app/inbox/undangan.php @@ -0,0 +1,149 @@ +"Senin","Selasa","Rabu","Kamis","Jumat", "Sabtu","Minggu"); +$hari = $array_hari[date("N",strtotime($tgl_acara_und))]; + +$bulan = array( + '01' => 'Januari', + '02' => 'Februari', + '03' => 'Maret', + '04' => 'April', + '05' => 'Mei', + '06' => 'Juni', + '07' => 'Juli', + '08' => 'Agustus', + '09' => 'September', + '10' => 'Oktober', + '11' => 'November', + '12' => 'Desember', + ); +$bulan[date('m')]; + + +$template_file_name = 'undangan.docx'; + +$rand_no = rand(111111, 999999); +$fileName = "UNDANGAN_".$nama_und.'_'.date('d',strtotime($tgl_und)).''.(date('m',strtotime($tgl_und))).''.date('Y',strtotime($tgl_und)).".docx"; + +$folder = $id; +$full_path = $folder . '/' . $fileName; + +try +{ + if (!file_exists($folder)) + { + mkdir($folder); + } + + //Copy the Template file to the Result Directory + copy($template_file_name, $full_path); + + // add calss Zip Archive + $zip_val = new ZipArchive; + + //Docx file is nothing but a zip file. Open this Zip File + if($zip_val->open($full_path) == true) + { + // In the Open XML Wordprocessing format content is stored. + // In the document.xml file located in the word directory. + + $key_file_name = 'word/document.xml'; + $message = $zip_val->getFromName($key_file_name); + + $timestamp = date('d-M-Y H:i:s'); + + // this data Replace the placeholders with actual values + + $message = str_replace("tgl_und", date('d',strtotime($tgl_und)).' '.($bulan[date('m',strtotime($tgl_und))]).' '.date('Y',strtotime($tgl_und)), $message); + $message = str_replace("no_und", $no_und, $message); + $message = str_replace("thn_und", $thn_und, $message); + $message = str_replace("nama_und", $nama_und, $message); + $message = str_replace("satker_und", $satker_und, $message); + $message = str_replace("tgl_acara_und", date('d',strtotime($tgl_acara_und)).' '.($bulan[date('m',strtotime($tgl_acara_und))]).' '.date('Y',strtotime($tgl_acara_und)), $message); + if (date('H:i',strtotime($waktu_selesai))=='00:00') { + $message = str_replace("waktu_acara_und", date('H:i',strtotime($waktu_mulai)).' s/d Selesai', $message); + } else { + $message = str_replace("waktu_acara_und", date('H:i',strtotime($waktu_mulai)).' s/d '.date('H:i',strtotime($waktu_selesai)), $message); + } + $message = str_replace("tempat_und", $tempat_und, $message); + $message = str_replace("sebagai_und", $sebagai_und, $message); + + + $message = str_replace("jenis_pel", $jenis_pel, $message); + $message = str_replace("nama_pel", $nama_pel, $message); + + $message = str_replace("wadir_und", $wadir_und, $message); + $message = str_replace("pangkat_und", $pangkat_und, $message); + $message = str_replace("nip_und", $nip_und, $message); + /* $message = str_replace("2020", $thn, $message); + $message = str_replace("hd", $head, $message); + $message = str_replace("isi_catatan", $isi_catatan, $message); */ + //Replace the content with the new content created above. + $zip_val->addFromString($key_file_name, $message); + $zip_val->close(); + + } +} +catch (Exception $exc) +{ + $error_message = "Error creating the Word Document"; + var_dump($exc); +} + +echo $fileName; + + + +?> \ No newline at end of file diff --git a/app/info/crud.php b/app/info/crud.php new file mode 100644 index 0000000..15a2877 --- /dev/null +++ b/app/info/crud.php @@ -0,0 +1,97 @@ + 0) { +$upd_add = pg_query("UPDATE riwayat_kegiatan SET + nama_pelatihan='$nama_pelatihan', + jenis_kegiatan_id='$jenis_kegiatan_id', + jenis_pelatihan_id='$jenis_pelatihan_id', + penyelenggara='$penyelenggara', + jatuh_tempo_reg='$t-$b-$h', + max_quota='$max_quota', + tempat='$tempat', + tanggal_mulai='$tm-$bm-$hm', + tanggal_selesai='$ts-$bs-$hs', + waktu_mulai='$waktu_mulai', + waktu_selesai='$waktu_selesai', + bln='$bln', + lama='$lama', + jenis_biaya='$jenis_biaya', + thn='$thn' + WHERE id='$id'"); + } else { + $ins_add = pg_query("INSERT into riwayat_kegiatan ( + thn, + nama_pelatihan, + jenis_kegiatan_id, + jenis_pelatihan_id, + penyelenggara, + jatuh_tempo_reg, + max_quota, + tempat, + tanggal_mulai, + tanggal_selesai, + waktu_mulai, + waktu_selesai, + bln, + lama, + jenis_biaya + ) values( + '$thn', + '$nama_pelatihan', + '$jenis_kegiatan_id', + '$jenis_pelatihan_id', + '$penyelenggara', + '$t-$b-$h', + '$max_quota', + '$tempat', + '$tm-$bm-$hm', + '$ts-$bs-$hs', + '$waktu_mulai', + '$waktu_selesai', + '$bln', + '$lama', + '$jenis_biaya' + ) + "); + } +} +?> \ No newline at end of file diff --git a/app/info/del_nd.php b/app/info/del_nd.php new file mode 100644 index 0000000..31b22b4 --- /dev/null +++ b/app/info/del_nd.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/app/info/main.php b/app/info/main.php new file mode 100644 index 0000000..2e158c6 --- /dev/null +++ b/app/info/main.php @@ -0,0 +1,162 @@ + + + + +
+
+
+
+ +
+
 Informasi 
+ +
+
+
+ +
+

 Informasi 

+
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/info/modal.php b/app/info/modal.php new file mode 100644 index 0000000..2e3544a --- /dev/null +++ b/app/info/modal.php @@ -0,0 +1,257 @@ + + + + + + +
+
+ + +
+
+ + +
+
+ + + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ "> + s/d + "> +
+
+
+ +
+ + s/d + +
+
+ + + + + +
+ + +
+ +
+ + " + > +
+ +
+ + +
+ + + + + + +
\ No newline at end of file diff --git a/app/info/nd.php b/app/info/nd.php new file mode 100644 index 0000000..005fdc4 --- /dev/null +++ b/app/info/nd.php @@ -0,0 +1,140 @@ +"Senin","Selasa","Rabu","Kamis","Jumat", "Sabtu","Minggu"); +$hari1 = $array_hari[date("N",strtotime($tanggal_mulai))]; +$hari2 = $array_hari[date("N",strtotime($tanggal_selesai))]; + +$bulan = array( + '01' => 'Januari', + '02' => 'Februari', + '03' => 'Maret', + '04' => 'April', + '05' => 'Mei', + '06' => 'Juni', + '07' => 'Juli', + '08' => 'Agustus', + '09' => 'September', + '10' => 'Oktober', + '11' => 'November', + '12' => 'Desember', + ); +$bulan[date('m')]; + + +$template_file_name = 'nd_permohonan_peserta.docx'; + +$rand_no = rand(111111, 999999); +$fileName = "NOTA_DINAS_PERMOHONAN_PESERTA_".$satker_nd_1.'_'.$no_nd_1.".docx"; + +$folder = $id; +$full_path = $folder . '/' . $fileName; + +try +{ + if (!file_exists($folder)) + { + mkdir($folder); + } + + //Copy the Template file to the Result Directory + copy($template_file_name, $full_path); + + // add calss Zip Archive + $zip_val = new ZipArchive; + + //Docx file is nothing but a zip file. Open this Zip File + if($zip_val->open($full_path) == true) + { + // In the Open XML Wordprocessing format content is stored. + // In the document.xml file located in the word directory. + + $key_file_name = 'word/document.xml'; + $message = $zip_val->getFromName($key_file_name); + + $timestamp = date('d-M-Y H:i:s'); + + // this data Replace the placeholders with actual values + $message = str_replace("satker_nd_1", $satker_nd_1, $message); + $message = str_replace("tgl_nd_1", date('d',strtotime($tgl_nd_1)).' '.($bulan[date('m',strtotime($tgl_nd_1))]).' '.date('Y',strtotime($tgl_nd_1)), $message); + $message = str_replace("no_nd_1", $no_nd_1, $message); + $message = str_replace("thn_nd_1", $thn_nd_1, $message); + $message = str_replace("nama_pelatihan_nd_1", $nama_pelatihan_nd_1, $message); + + if ($tanggal_mulai==$tanggal_selesai) { + $message = str_replace("hari_nd_1", $hari1, $message); + $message = str_replace("tanggal_nd1", date('d',strtotime($tanggal_mulai)).' '.($bulan[date('m',strtotime($tanggal_mulai))]).' '.date('Y',strtotime($tanggal_mulai)), $message); + } else { + $message = str_replace("hari_nd_1", $hari1.' s/d '.$hari2, $message); + $message = str_replace("tanggal_nd1", date('d',strtotime($tanggal_mulai)).' '.($bulan[date('m',strtotime($tanggal_mulai))]).' '.date('Y',strtotime($tanggal_mulai)).' s/d '.date('d',strtotime($tanggal_selesai)).' '.($bulan[date('m',strtotime($tanggal_selesai))]).' '.date('Y',strtotime($tanggal_selesai)), $message); + } + if (date('H:i',strtotime($waktu_selesai))=='00:00') { + $message = str_replace("waktu_nd_1", date('H:i',strtotime($waktu_mulai)).' s/d Selesai', $message); + } else { + $message = str_replace("waktu_nd_1", date('H:i',strtotime($waktu_mulai)).' s/d '.date('H:i',strtotime($waktu_selesai)), $message); + } + $message = str_replace("tempat_nd_1", $tempat_nd_1, $message); + $message = str_replace("permintaan", $permintaan_nd_1d, $message); + $message = str_replace("tglplnd", date('d',strtotime($tgl_paling_lambat_nd_1)).' '.($bulan[date('m',strtotime($tgl_paling_lambat_nd_1))]).' '.date('Y',strtotime($tgl_paling_lambat_nd_1)), $message); + $message = str_replace("kabid_nd_1", $nm_kepala, $message); + $message = str_replace("pangkat_nd_1", $pangkat, $message); + $message = str_replace("nip_nd_1", $nip, $message); + + $zip_val->addFromString($key_file_name, $message); + $zip_val->close(); + + } +} +catch (Exception $exc) +{ + $error_message = "Error creating the Word Document"; + var_dump($exc); +} + +echo $fileName; + + + +?> \ No newline at end of file diff --git a/app/info/nd_permohonan_peserta.docx b/app/info/nd_permohonan_peserta.docx new file mode 100644 index 0000000..4338940 Binary files /dev/null and b/app/info/nd_permohonan_peserta.docx differ diff --git a/app/info/pendaftaran/crud.php b/app/info/pendaftaran/crud.php new file mode 100644 index 0000000..85bf3ad --- /dev/null +++ b/app/info/pendaftaran/crud.php @@ -0,0 +1,44 @@ + 0) {} else { + $r=pg_query("SELECT tenaga_id,tenaga2_id FROM data_pegawai WHERE id='$selected'"); + while($rr=pg_fetch_array($r)) {$tenaga_id=$rr[0];$tenaga2_id=$rr[1];} + $ins_peserta = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + status, + tanggal_reg, + satuan_kerja_id, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$selected', + '1', + 'Pending', + NOW(), + '$satuan_kerja_id', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} +} else +if ($key=='delete_peserta') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/info/pendaftaran/main.php b/app/info/pendaftaran/main.php new file mode 100644 index 0000000..eabbf98 --- /dev/null +++ b/app/info/pendaftaran/main.php @@ -0,0 +1,196 @@ + + + + + + + + +
+
+
+
+ + + + + +
+
+ +
+
+
+
+
+ +
+ + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/app/info/pendaftaran/modal.php b/app/info/pendaftaran/modal.php new file mode 100644 index 0000000..cbdbecc --- /dev/null +++ b/app/info/pendaftaran/modal.php @@ -0,0 +1,26 @@ + + +
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/app/info/pendaftaran/tabel.php b/app/info/pendaftaran/tabel.php new file mode 100644 index 0000000..388dffb --- /dev/null +++ b/app/info/pendaftaran/tabel.php @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaGolSexTenagaTgl DaftarStatusTools
+ +
+ + + + + diff --git a/app/info/pendaftaran/tabel_peg.php b/app/info/pendaftaran/tabel_peg.php new file mode 100644 index 0000000..9eaa767 --- /dev/null +++ b/app/info/pendaftaran/tabel_peg.php @@ -0,0 +1,198 @@ + +
+
+
+
+ +
+
+
+
+
+
+ + + + + + + + + + + + + +    +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + NamaGolSexJabCountTools
+ + + +
+ + diff --git a/app/info/quota/crud.php b/app/info/quota/crud.php new file mode 100644 index 0000000..daff8d0 --- /dev/null +++ b/app/info/quota/crud.php @@ -0,0 +1,102 @@ + 0) { + $cek1=pg_query("SELECT COALESCE(SUM(quota1),0)+COALESCE(SUM(quota2),0)+COALESCE(SUM(quota3),0)+COALESCE(SUM(quota4),0)+COALESCE(SUM(quota5),0) FROM riwayat_quota WHERE id='$id'"); + while($c=pg_fetch_array($cek1)) {$quo=$c[0];} + $hasil=($tot_quota-$quo)+$quota; + if($hasil>$max_quota) {echo "false";} else { + if ($quota==0) { + $upd=pg_query("DELETE FROM riwayat_quota WHERE id='$id'"); + } else { + $upd=pg_query("UPDATE riwayat_quota SET quota1='$quota1',quota2='$quota2',quota3='$quota3',quota4='$quota4',quota5='$quota5' WHERE id='$id'"); + } + } + } else { + $hasil=($tot_quota+$quota); + if($hasil>$max_quota) {echo "false";} else { + $inp=pg_query("INSERT INTO riwayat_quota ( + satuan_kerja_id, + riwayat_kegiatan_id, + quota1, + quota2, + quota3, + quota4, + quota5 + ) VALUES ( + '$satuan_kerja_id', + '$riwayat_kegiatan_id', + '$quota1', + '$quota2', + '$quota3', + '$quota4', + '$quota5' + )"); + } + } +} else +if ($key=='count_quota') { +$id=$_POST['riwayat_kegiatan_id']; +$max_quota=$_POST['max_quota']; +$j=pg_query("SELECT COALESCE(SUM(quota1),0)+COALESCE(SUM(quota2),0)+COALESCE(SUM(quota3),0)+COALESCE(SUM(quota4),0)+COALESCE(SUM(quota5),0) FROM riwayat_quota WHERE riwayat_kegiatan_id='$id'"); +while($rj=pg_fetch_array($j)) {$tot_quod=$rj[0];} +if ($tot_quod=='') {$tot_quo=0;} else {$tot_quo=$tot_quod;} +echo $max_quota.'/'.$tot_quo; +} else +if ($key=='open') { +$id=$_POST['riwayat_kegiatan_id']; +$u=pg_query("UPDATE riwayat_kegiatan SET status='Open' WHERE id='$id'"); +echo "open"; +} else +if ($key=='batal_open') { +$id=$_POST['riwayat_kegiatan_id']; +$u=pg_query("UPDATE riwayat_kegiatan SET status=NULL WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/info/quota/main.php b/app/info/quota/main.php new file mode 100644 index 0000000..2b411bb --- /dev/null +++ b/app/info/quota/main.php @@ -0,0 +1,335 @@ + + + + + + + + +
+
+
+
+ + + + + +
+
+ +
+
+
+
+
+ +
+ + + + + + +   Total Quota Peserta :  + + + + + + + + +
+ + /> + +
+ + + +
+
+ + + + +
+ + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/info/quota/modal.php b/app/info/quota/modal.php new file mode 100644 index 0000000..0885e57 --- /dev/null +++ b/app/info/quota/modal.php @@ -0,0 +1,112 @@ + + + + + + + + + +
+
+ + + + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + \ No newline at end of file diff --git a/app/info/quota/modal_nd1.php b/app/info/quota/modal_nd1.php new file mode 100644 index 0000000..0eab5d5 --- /dev/null +++ b/app/info/quota/modal_nd1.php @@ -0,0 +1,90 @@ + + + + +
+
+ + + +
+
+ + "> +
+
+ + +
+
+ + "> +
+ +
+ diff --git a/app/info/quota/tabel.php b/app/info/quota/tabel.php new file mode 100644 index 0000000..38d17da --- /dev/null +++ b/app/info/quota/tabel.php @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Satuan KerjaΣ MedisΣ Non-MedisΣ PerawatanΣ Non-PerawatanΣ PekaryaNodin PermohonanTools
'.$r[3].''; ?>'.$r[4].''; ?>'.$r[5].''; ?>'.$r[6].''; ?>'.$r[7].''; ?> + + + + + + +
+ + diff --git a/app/info/tabel.php b/app/info/tabel.php new file mode 100644 index 0000000..a0b4545 --- /dev/null +++ b/app/info/tabel.php @@ -0,0 +1,283 @@ + + + + + + +
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ + "> + + + + + + + + + + + + + + + +

"; + } else {?> +

+   +   +

+ + +
+
+
+    + + +    + + + + + + + +
+
+
+
+ + +
+
+
+ + + + + + + + + diff --git a/app/jbel_inbox/crud.php b/app/jbel_inbox/crud.php new file mode 100644 index 0000000..368eae4 --- /dev/null +++ b/app/jbel_inbox/crud.php @@ -0,0 +1,86 @@ + \ No newline at end of file diff --git a/app/jbel_inbox/excel.php b/app/jbel_inbox/excel.php new file mode 100644 index 0000000..9e01c6a --- /dev/null +++ b/app/jbel_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_jbel i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_pencantuman_gelar.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/jbel_inbox/main.php b/app/jbel_inbox/main.php new file mode 100644 index 0000000..388c104 --- /dev/null +++ b/app/jbel_inbox/main.php @@ -0,0 +1,169 @@ + +
+
+
+
+

Inbox Usulan Pencantuman Gelar

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/jbel_inbox/modal_edit_verifikasi.php b/app/jbel_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..d810f9a --- /dev/null +++ b/app/jbel_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/jbel_inbox/modal_verifikasi.php b/app/jbel_inbox/modal_verifikasi.php new file mode 100644 index 0000000..5b99133 --- /dev/null +++ b/app/jbel_inbox/modal_verifikasi.php @@ -0,0 +1,250 @@ + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Pendidikan
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +
+ + + +
+

+ +
+
+
+ +
+ +
+ + + +
+

+ +
+
+ +
+
+ +
+ + + +
+

+ +
+
+ +
+ + \ No newline at end of file diff --git a/app/jbel_inbox/modal_view.php b/app/jbel_inbox/modal_view.php new file mode 100644 index 0000000..00dc8a3 --- /dev/null +++ b/app/jbel_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkd/.htaccess b/app/jbel_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/jbel_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkd/crud.php b/app/jbel_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..4b43914 --- /dev/null +++ b/app/jbel_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkd/tabel_upl_cv.php b/app/jbel_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..27806dc --- /dev/null +++ b/app/jbel_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkd/upl_cv.php b/app/jbel_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..97e9e73 --- /dev/null +++ b/app/jbel_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/jbel_inbox/pdf_bkn/.htaccess b/app/jbel_inbox/pdf_bkn/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/jbel_inbox/pdf_bkn/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkn/crud.php b/app/jbel_inbox/pdf_bkn/crud.php new file mode 100644 index 0000000..133bb30 --- /dev/null +++ b/app/jbel_inbox/pdf_bkn/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkn/tabel_upl_cv.php b/app/jbel_inbox/pdf_bkn/tabel_upl_cv.php new file mode 100644 index 0000000..4e21fd3 --- /dev/null +++ b/app/jbel_inbox/pdf_bkn/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_bkn/upl_cv.php b/app/jbel_inbox/pdf_bkn/upl_cv.php new file mode 100644 index 0000000..254168e --- /dev/null +++ b/app/jbel_inbox/pdf_bkn/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/jbel_inbox/pdf_dir/.htaccess b/app/jbel_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/jbel_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/jbel_inbox/pdf_dir/crud.php b/app/jbel_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..72a01aa --- /dev/null +++ b/app/jbel_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_dir/tabel_upl_cv.php b/app/jbel_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..a87fb34 --- /dev/null +++ b/app/jbel_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/jbel_inbox/pdf_dir/upl_cv.php b/app/jbel_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..c3ea1c0 --- /dev/null +++ b/app/jbel_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/jbel_inbox/tabel.php b/app/jbel_inbox/tabel.php new file mode 100644 index 0000000..c7921ce --- /dev/null +++ b/app/jbel_inbox/tabel.php @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/jbel_inbox/tabel_verifikasi.php b/app/jbel_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..bb4baaa --- /dev/null +++ b/app/jbel_inbox/tabel_verifikasi.php @@ -0,0 +1,172 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGAN + +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/jbel_setting/crud.php b/app/jbel_setting/crud.php new file mode 100644 index 0000000..86d28b1 --- /dev/null +++ b/app/jbel_setting/crud.php @@ -0,0 +1,32 @@ + 0) { + $upd_jbel_setting = pg_query("UPDATE syarat_jbel SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_jbel_setting = pg_query("INSERT into syarat_jbel ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_jbel_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_jbel WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_jbel_setting = pg_query("DELETE FROM syarat_jbel WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/jbel_setting/main.php b/app/jbel_setting/main.php new file mode 100644 index 0000000..b3f9d6d --- /dev/null +++ b/app/jbel_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Usulan Pencantuman Gelar

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/jbel_setting/modal.php b/app/jbel_setting/modal.php new file mode 100644 index 0000000..bbb2f95 --- /dev/null +++ b/app/jbel_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/jbel_setting/pdf/.htaccess b/app/jbel_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/jbel_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/jbel_setting/pdf/crud.php b/app/jbel_setting/pdf/crud.php new file mode 100644 index 0000000..51ffe60 --- /dev/null +++ b/app/jbel_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/jbel_setting/pdf/tabel_upl_cv.php b/app/jbel_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..312a162 --- /dev/null +++ b/app/jbel_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/jbel_setting/pdf/upl_cv.php b/app/jbel_setting/pdf/upl_cv.php new file mode 100644 index 0000000..b57884e --- /dev/null +++ b/app/jbel_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/jbel_setting/tabel.php b/app/jbel_setting/tabel.php new file mode 100644 index 0000000..6820790 --- /dev/null +++ b/app/jbel_setting/tabel.php @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#Tools
+ + + + +
+ + + + + diff --git a/app/jbel_setting/upd_file.php b/app/jbel_setting/upd_file.php new file mode 100644 index 0000000..e4216b2 --- /dev/null +++ b/app/jbel_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/kbel_inbox/crud.php b/app/kbel_inbox/crud.php new file mode 100644 index 0000000..ec0eaf5 --- /dev/null +++ b/app/kbel_inbox/crud.php @@ -0,0 +1,104 @@ + \ No newline at end of file diff --git a/app/kbel_inbox/excel.php b/app/kbel_inbox/excel.php new file mode 100644 index 0000000..71d4931 --- /dev/null +++ b/app/kbel_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_kbel i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_ket_ibel.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/kbel_inbox/main.php b/app/kbel_inbox/main.php new file mode 100644 index 0000000..d88d709 --- /dev/null +++ b/app/kbel_inbox/main.php @@ -0,0 +1,169 @@ + +
+
+
+
+

Inbox Keterangan Ijin Belajar

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/kbel_inbox/modal_edit_verifikasi.php b/app/kbel_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..5304673 --- /dev/null +++ b/app/kbel_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/kbel_inbox/modal_verifikasi.php b/app/kbel_inbox/modal_verifikasi.php new file mode 100644 index 0000000..7f210cc --- /dev/null +++ b/app/kbel_inbox/modal_verifikasi.php @@ -0,0 +1,193 @@ + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Pendidikan
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/kbel_inbox/modal_view.php b/app/kbel_inbox/modal_view.php new file mode 100644 index 0000000..b758625 --- /dev/null +++ b/app/kbel_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/kbel_inbox/pdf_bkd/.htaccess b/app/kbel_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/kbel_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/kbel_inbox/pdf_bkd/crud.php b/app/kbel_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..ed69dd7 --- /dev/null +++ b/app/kbel_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/kbel_inbox/pdf_bkd/tabel_upl_cv.php b/app/kbel_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..6f4b46d --- /dev/null +++ b/app/kbel_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/kbel_inbox/pdf_bkd/upl_cv.php b/app/kbel_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..4a8e799 --- /dev/null +++ b/app/kbel_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/kbel_inbox/pdf_dir/.htaccess b/app/kbel_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/kbel_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/kbel_inbox/pdf_dir/crud.php b/app/kbel_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..cd8b655 --- /dev/null +++ b/app/kbel_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/kbel_inbox/pdf_dir/tabel_upl_cv.php b/app/kbel_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..a574e4e --- /dev/null +++ b/app/kbel_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/kbel_inbox/pdf_dir/upl_cv.php b/app/kbel_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..95a7f1d --- /dev/null +++ b/app/kbel_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/kbel_inbox/tabel.php b/app/kbel_inbox/tabel.php new file mode 100644 index 0000000..91edb20 --- /dev/null +++ b/app/kbel_inbox/tabel.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/kbel_inbox/tabel_verifikasi.php b/app/kbel_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..ff1f114 --- /dev/null +++ b/app/kbel_inbox/tabel_verifikasi.php @@ -0,0 +1,173 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGAN + +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/kbel_setting/crud.php b/app/kbel_setting/crud.php new file mode 100644 index 0000000..32804c1 --- /dev/null +++ b/app/kbel_setting/crud.php @@ -0,0 +1,32 @@ + 0) { + $upd_kbel_setting = pg_query("UPDATE syarat_kbel SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_kbel_setting = pg_query("INSERT into syarat_kbel ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_kbel_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_kbel WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_kbel_setting = pg_query("DELETE FROM syarat_kbel WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/kbel_setting/main.php b/app/kbel_setting/main.php new file mode 100644 index 0000000..6ca57ef --- /dev/null +++ b/app/kbel_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Keterangan Ijin Belajar

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/kbel_setting/modal.php b/app/kbel_setting/modal.php new file mode 100644 index 0000000..b697c78 --- /dev/null +++ b/app/kbel_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/kbel_setting/pdf/.htaccess b/app/kbel_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/kbel_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/kbel_setting/pdf/crud.php b/app/kbel_setting/pdf/crud.php new file mode 100644 index 0000000..4b41707 --- /dev/null +++ b/app/kbel_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/kbel_setting/pdf/tabel_upl_cv.php b/app/kbel_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..049ed83 --- /dev/null +++ b/app/kbel_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/kbel_setting/pdf/upl_cv.php b/app/kbel_setting/pdf/upl_cv.php new file mode 100644 index 0000000..7349627 --- /dev/null +++ b/app/kbel_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/kbel_setting/tabel.php b/app/kbel_setting/tabel.php new file mode 100644 index 0000000..a6f8b0d --- /dev/null +++ b/app/kbel_setting/tabel.php @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#Tools
+ + + + +
+ + + + + diff --git a/app/kbel_setting/upd_file.php b/app/kbel_setting/upd_file.php new file mode 100644 index 0000000..ef92aa3 --- /dev/null +++ b/app/kbel_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/kegiatan/crud.php b/app/kegiatan/crud.php new file mode 100644 index 0000000..62c8e4b --- /dev/null +++ b/app/kegiatan/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/kegiatan/dokumentasi/delete.php b/app/kegiatan/dokumentasi/delete.php new file mode 100644 index 0000000..0bee110 --- /dev/null +++ b/app/kegiatan/dokumentasi/delete.php @@ -0,0 +1,6 @@ + +?> \ No newline at end of file diff --git a/app/kegiatan/dokumentasi/main.php b/app/kegiatan/dokumentasi/main.php new file mode 100644 index 0000000..42a24ce --- /dev/null +++ b/app/kegiatan/dokumentasi/main.php @@ -0,0 +1,62 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+ +
+ + + + + \ No newline at end of file diff --git a/app/kegiatan/dokumentasi/modal.php b/app/kegiatan/dokumentasi/modal.php new file mode 100644 index 0000000..036cf90 --- /dev/null +++ b/app/kegiatan/dokumentasi/modal.php @@ -0,0 +1,84 @@ + + +
+
+
+
+ +
+ src='app/kehadiran/dokumentasi/pic/no-avatar.png' + + src='app/kehadiran/dokumentasi/pic/ ' + + /> +
+
+
+ +
+
+ + +
+ +
+ +
+
+
+
+ + \ No newline at end of file diff --git a/app/kegiatan/dokumentasi/pic/Thumbs.db b/app/kegiatan/dokumentasi/pic/Thumbs.db new file mode 100644 index 0000000..c685fbd Binary files /dev/null and b/app/kegiatan/dokumentasi/pic/Thumbs.db differ diff --git a/app/kegiatan/dokumentasi/pic/no-avatar.png b/app/kegiatan/dokumentasi/pic/no-avatar.png new file mode 100644 index 0000000..b1ed2fa Binary files /dev/null and b/app/kegiatan/dokumentasi/pic/no-avatar.png differ diff --git a/app/kegiatan/dokumentasi/tabel.php b/app/kegiatan/dokumentasi/tabel.php new file mode 100644 index 0000000..cde6192 --- /dev/null +++ b/app/kegiatan/dokumentasi/tabel.php @@ -0,0 +1,44 @@ + + + +
+
+ +
+
+ + work-thumbnail + +
+
+ +
+
+ + diff --git a/app/kegiatan/dokumentasi/upload.php b/app/kegiatan/dokumentasi/upload.php new file mode 100644 index 0000000..047c9d0 --- /dev/null +++ b/app/kegiatan/dokumentasi/upload.php @@ -0,0 +1,12 @@ + diff --git a/app/kegiatan/jadwal/main.php b/app/kegiatan/jadwal/main.php new file mode 100644 index 0000000..7b1b98c --- /dev/null +++ b/app/kegiatan/jadwal/main.php @@ -0,0 +1,61 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/app/kegiatan/jadwal/tabel.php b/app/kegiatan/jadwal/tabel.php new file mode 100644 index 0000000..e6949ec --- /dev/null +++ b/app/kegiatan/jadwal/tabel.php @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
Hari keWaktuMateriPenanggung-jawabKeterangan
diff --git a/app/kegiatan/main.php b/app/kegiatan/main.php new file mode 100644 index 0000000..c818c33 --- /dev/null +++ b/app/kegiatan/main.php @@ -0,0 +1,37 @@ + + + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/kegiatan/sertifikat/crud.php b/app/kegiatan/sertifikat/crud.php new file mode 100644 index 0000000..0b2ce08 --- /dev/null +++ b/app/kegiatan/sertifikat/crud.php @@ -0,0 +1,46 @@ + \ No newline at end of file diff --git a/app/kegiatan/sertifikat/modal.php b/app/kegiatan/sertifikat/modal.php new file mode 100644 index 0000000..08d6d35 --- /dev/null +++ b/app/kegiatan/sertifikat/modal.php @@ -0,0 +1,167 @@ + + + + + + +
+ +
+ + +
+
+ + +
+ +
+ + + +
+ +
+ + " + > +
+ +
+ + +
+ +
+ +
+ "> + s/d + "> +
+
+ +
+ + +
+ +
+ + +
+
+ + +
+
\ No newline at end of file diff --git a/app/kegiatan/tabel.php b/app/kegiatan/tabel.php new file mode 100644 index 0000000..9b3b925 --- /dev/null +++ b/app/kegiatan/tabel.php @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusTools
+ + + +
+ + + + + \ No newline at end of file diff --git a/app/kehadiran/crud.php b/app/kehadiran/crud.php new file mode 100644 index 0000000..62c8e4b --- /dev/null +++ b/app/kehadiran/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/kehadiran/dokumentasi/delete.php b/app/kehadiran/dokumentasi/delete.php new file mode 100644 index 0000000..0bee110 --- /dev/null +++ b/app/kehadiran/dokumentasi/delete.php @@ -0,0 +1,6 @@ + +?> \ No newline at end of file diff --git a/app/kehadiran/dokumentasi/main.php b/app/kehadiran/dokumentasi/main.php new file mode 100644 index 0000000..b422ffa --- /dev/null +++ b/app/kehadiran/dokumentasi/main.php @@ -0,0 +1,78 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+ + + + + \ No newline at end of file diff --git a/app/kehadiran/dokumentasi/modal.php b/app/kehadiran/dokumentasi/modal.php new file mode 100644 index 0000000..036cf90 --- /dev/null +++ b/app/kehadiran/dokumentasi/modal.php @@ -0,0 +1,84 @@ + + +
+
+
+
+ +
+ src='app/kehadiran/dokumentasi/pic/no-avatar.png' + + src='app/kehadiran/dokumentasi/pic/ ' + + /> +
+
+
+ +
+
+ + +
+ +
+ +
+
+
+
+ + \ No newline at end of file diff --git a/app/kehadiran/dokumentasi/pic/Format Name Tag.jpeg b/app/kehadiran/dokumentasi/pic/Format Name Tag.jpeg new file mode 100644 index 0000000..0f347d1 Binary files /dev/null and b/app/kehadiran/dokumentasi/pic/Format Name Tag.jpeg differ diff --git a/app/kehadiran/dokumentasi/pic/no-avatar.png b/app/kehadiran/dokumentasi/pic/no-avatar.png new file mode 100644 index 0000000..b1ed2fa Binary files /dev/null and b/app/kehadiran/dokumentasi/pic/no-avatar.png differ diff --git a/app/kehadiran/dokumentasi/tabel.php b/app/kehadiran/dokumentasi/tabel.php new file mode 100644 index 0000000..6ce055e --- /dev/null +++ b/app/kehadiran/dokumentasi/tabel.php @@ -0,0 +1,81 @@ + + + +
+
+ +
+
+ + work-thumbnail + + +

+ +

+
+
+ +
+
+ + diff --git a/app/kehadiran/dokumentasi/upload.php b/app/kehadiran/dokumentasi/upload.php new file mode 100644 index 0000000..047c9d0 --- /dev/null +++ b/app/kehadiran/dokumentasi/upload.php @@ -0,0 +1,12 @@ + diff --git a/app/kehadiran/hadir/main.php b/app/kehadiran/hadir/main.php new file mode 100644 index 0000000..ae6c93a --- /dev/null +++ b/app/kehadiran/hadir/main.php @@ -0,0 +1,191 @@ + + + + + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+ +
+ +
+ +
+ +
+ + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/app/kehadiran/hadir/print_dh.php b/app/kehadiran/hadir/print_dh.php new file mode 100644 index 0000000..1e7772a --- /dev/null +++ b/app/kehadiran/hadir/print_dh.php @@ -0,0 +1,270 @@ + + + + + SIMPRO RSSA + + + + + + + + + +"Senin","Selasa","Rabu","Kamis","Jumat", "Sabtu","Minggu"); +$hari = $array_hari[date("N",strtotime($tgl_kegiatan))]; + +$bulan = array( + '01' => 'JANUARI', + '02' => 'FEBRUARI', + '03' => 'MARET', + '04' => 'APRIL', + '05' => 'MEI', + '06' => 'JUNI', + '07' => 'JULI', + '08' => 'AGUSTUS', + '09' => 'SEPTEMBER', + '10' => 'OKTOBER', + '11' => 'NOVEMBER', + '12' => 'DESEMBER', + ); +$bulan[date('m')]; +$a=date('d',strtotime($strDate)).' '.(strtoupper($bulan[date('m',strtotime($strDate))])).' '.date('Y',strtotime($strDate)) ; +?> + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + + "; + while($row_result = pg_fetch_array($result)) { + if ($i > 1 && $i % 20 == 0) + echo ''; + else if ($i) + echo ''; + ++$i; + echo ""; + echo "43) {echo " style='font-size:11px'";} else {} + echo ">"; echo $row_result[0]; echo "
"; echo $row_result[1]; + if (($row_result[2]=='-') || ($row_result[2]=='')) { + echo ''; } else {echo ' - '.$row_result[2].'/'.$row_result[3]; } + echo ""; + echo "30) {echo " style='font-size:11px'";} else {} + echo ">";echo $row_result[4]; echo ""; + + if ($no % 2 == 0){ //Kondisi + + echo "
"; + echo ""; + + } else { + + echo ""; + echo ""; + + } + $no++; +} +echo ''; +?> + + + + + +
NoNama / NIP / GolJabatan/SatkerTanda Tangan
"; echo $no.'.'; echo ""; echo $no.'......'; echo ""; echo $no.'......'; echo "

+
Mengetahui
+
Ka.Bid. Pengembangan Profesi
+
+
+
+
+
+
+
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/app/kehadiran/hadir/tabel.php b/app/kehadiran/hadir/tabel.php new file mode 100644 index 0000000..30bf291 --- /dev/null +++ b/app/kehadiran/hadir/tabel.php @@ -0,0 +1,59 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Nama PesertaNIPGolSatuan KerjaSebagai
+ + + + + diff --git a/app/kehadiran/jadwal/crud.php b/app/kehadiran/jadwal/crud.php new file mode 100644 index 0000000..4f3b710 --- /dev/null +++ b/app/kehadiran/jadwal/crud.php @@ -0,0 +1,56 @@ + 0) { + $upd_add = pg_query("UPDATE jadwal_kegiatan SET + hari_ke='$hari_ke', + waktu_mulai='$waktu_mulai', + waktu_selesai='$waktu_selesai', + materi='$materi', + pj='$pj', + keterangan='$keterangan' + WHERE id='$id'"); + } else { + $ins_add = pg_query("INSERT into jadwal_kegiatan ( + riwayat_kegiatan_id, + hari_ke, + waktu_mulai, + waktu_selesai, + materi, + pj, + keterangan + ) values( + '$riwayat_kegiatan_id', + '$hari_ke', + '$waktu_mulai', + '$waktu_selesai', + '$materi', + '$pj', + '$keterangan' + ) + "); + } +} else +if ($key=='hapus_data') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM jadwal_kegiatan WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/kehadiran/jadwal/ket_acara.php b/app/kehadiran/jadwal/ket_acara.php new file mode 100644 index 0000000..4e5a56e --- /dev/null +++ b/app/kehadiran/jadwal/ket_acara.php @@ -0,0 +1,25 @@ + + + +
+
+ +
+
+
\ No newline at end of file diff --git a/app/kehadiran/jadwal/main.php b/app/kehadiran/jadwal/main.php new file mode 100644 index 0000000..bc42fdf --- /dev/null +++ b/app/kehadiran/jadwal/main.php @@ -0,0 +1,177 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + + +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/app/kehadiran/jadwal/modal.php b/app/kehadiran/jadwal/modal.php new file mode 100644 index 0000000..58e3d93 --- /dev/null +++ b/app/kehadiran/jadwal/modal.php @@ -0,0 +1,56 @@ + + + +
+ + + +
+ + +
+ +
+ +
+ + s/d + +
+
+ +
+ + +
+
+ + +
+ +
+ + +
+
\ No newline at end of file diff --git a/app/kehadiran/jadwal/modal_ket.php b/app/kehadiran/jadwal/modal_ket.php new file mode 100644 index 0000000..6b625da --- /dev/null +++ b/app/kehadiran/jadwal/modal_ket.php @@ -0,0 +1,15 @@ + + +
+
+ + + +
+
\ No newline at end of file diff --git a/app/kehadiran/jadwal/print_jadwal.php b/app/kehadiran/jadwal/print_jadwal.php new file mode 100644 index 0000000..4ff3d66 --- /dev/null +++ b/app/kehadiran/jadwal/print_jadwal.php @@ -0,0 +1,248 @@ + + + + + SIMPRO RSSA + + + + + + + + + +"Senin","Selasa","Rabu","Kamis","Jumat", "Sabtu","Minggu"); +$hari = $array_hari[date("N",strtotime($tgl_kegiatan))]; + +$bulan = array( + '01' => 'JANUARI', + '02' => 'FEBRUARI', + '03' => 'MARET', + '04' => 'APRIL', + '05' => 'MEI', + '06' => 'JUNI', + '07' => 'JULI', + '08' => 'AGUSTUS', + '09' => 'SEPTEMBER', + '10' => 'OKTOBER', + '11' => 'NOVEMBER', + '12' => 'DESEMBER', + ); +$bulan[date('m')]; +$a=date('d',strtotime($tanggal_mulai)).' '.(strtoupper($bulan[date('m',strtotime($tanggal_mulai))])).' '.date('Y',strtotime($tanggal_mulai)) ; +$b=date('d',strtotime($tanggal_selesai)).' '.(strtoupper($bulan[date('m',strtotime($tanggal_selesai))])).' '.date('Y',strtotime($tanggal_selesai)) ; +?> + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + "; + while($row_result = pg_fetch_array($result)) { + if ($i > 1 && $i % 20 == 0) + echo ''; + else if ($i) + echo ''; + ++$i; + echo ""; + echo ""; + echo ""; + echo ""; + $no++; +} +echo ''; +} +?> + + + + + +
WAKTUMATERINARASUMBER/PJKETERANGAN
"; echo date('H:i',strtotime($row_result[3])).' - '.date('H:i',strtotime($row_result[4])); echo ""; echo $row_result[5].'.'; echo ""; echo $row_result[6].'.'; echo ""; echo $row_result[7].'.'; echo "

+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/app/kehadiran/jadwal/tabel.php b/app/kehadiran/jadwal/tabel.php new file mode 100644 index 0000000..9b650d4 --- /dev/null +++ b/app/kehadiran/jadwal/tabel.php @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Hari keWaktuMateriPenanggung-jawabKeteranganTools
+ + +
+ + diff --git a/app/kehadiran/main.php b/app/kehadiran/main.php new file mode 100644 index 0000000..ef15165 --- /dev/null +++ b/app/kehadiran/main.php @@ -0,0 +1,32 @@ + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/kehadiran/sertifikat/crud.php b/app/kehadiran/sertifikat/crud.php new file mode 100644 index 0000000..8d92b3c --- /dev/null +++ b/app/kehadiran/sertifikat/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/kehadiran/sertifikat/modal.php b/app/kehadiran/sertifikat/modal.php new file mode 100644 index 0000000..2e87a2e --- /dev/null +++ b/app/kehadiran/sertifikat/modal.php @@ -0,0 +1,15 @@ + + +
+
+ + + +
+
\ No newline at end of file diff --git a/app/kehadiran/tabel.php b/app/kehadiran/tabel.php new file mode 100644 index 0000000..796e067 --- /dev/null +++ b/app/kehadiran/tabel.php @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusTUTools
+ + + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/app/koneksi.php b/app/koneksi.php new file mode 100644 index 0000000..ff513e9 --- /dev/null +++ b/app/koneksi.php @@ -0,0 +1,14 @@ +connect_error) { + die("Connection failed: " . $con->connect_error); + +} + + +?> \ No newline at end of file diff --git a/app/master/belajar/crud.php b/app/master/belajar/crud.php new file mode 100644 index 0000000..a4ce3d3 --- /dev/null +++ b/app/master/belajar/crud.php @@ -0,0 +1,59 @@ + 0) { + $upd_satker = pg_query("UPDATE prodi SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into prodi ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_mjurusan') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM jurusan WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE jurusan SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into jurusan ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_muniv') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM univ WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE univ SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into univ ( + nama + ) values( + '$nama' + ) + "); + } +} +?> \ No newline at end of file diff --git a/app/master/belajar/main.php b/app/master/belajar/main.php new file mode 100644 index 0000000..76df9fa --- /dev/null +++ b/app/master/belajar/main.php @@ -0,0 +1,231 @@ + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/master/belajar/modal_mjurusan.php b/app/master/belajar/modal_mjurusan.php new file mode 100644 index 0000000..8daeb5e --- /dev/null +++ b/app/master/belajar/modal_mjurusan.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/belajar/modal_mprodi.php b/app/master/belajar/modal_mprodi.php new file mode 100644 index 0000000..62e7aa3 --- /dev/null +++ b/app/master/belajar/modal_mprodi.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/belajar/modal_muniv.php b/app/master/belajar/modal_muniv.php new file mode 100644 index 0000000..2b1ef02 --- /dev/null +++ b/app/master/belajar/modal_muniv.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/belajar/tabel_mjurusan.php b/app/master/belajar/tabel_mjurusan.php new file mode 100644 index 0000000..bd7db36 --- /dev/null +++ b/app/master/belajar/tabel_mjurusan.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDJurusanTools
+ + +
+ + + + + diff --git a/app/master/belajar/tabel_mprodi.php b/app/master/belajar/tabel_mprodi.php new file mode 100644 index 0000000..f52ddaa --- /dev/null +++ b/app/master/belajar/tabel_mprodi.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDProdiTools
+ + +
+ + + + + diff --git a/app/master/belajar/tabel_muniv.php b/app/master/belajar/tabel_muniv.php new file mode 100644 index 0000000..bddf591 --- /dev/null +++ b/app/master/belajar/tabel_muniv.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDUniversitasTools
+ + +
+ + + + + diff --git a/app/master/jabatan/crud.php b/app/master/jabatan/crud.php new file mode 100644 index 0000000..a2ba742 --- /dev/null +++ b/app/master/jabatan/crud.php @@ -0,0 +1,28 @@ + 0) { + $upd_jabatan = pg_query("UPDATE jabatan_pegawai SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_jabatan = pg_query("INSERT into jabatan_pegawai ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='delete_jabatan') { +$id=$_POST['id']; + $del_jabatan = pg_query("DELETE FROM jabatan_pegawai WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/master/jabatan/main.php b/app/master/jabatan/main.php new file mode 100644 index 0000000..df12944 --- /dev/null +++ b/app/master/jabatan/main.php @@ -0,0 +1,78 @@ + + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/app/master/jabatan/modal.php b/app/master/jabatan/modal.php new file mode 100644 index 0000000..7144001 --- /dev/null +++ b/app/master/jabatan/modal.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/jabatan/tabel.php b/app/master/jabatan/tabel.php new file mode 100644 index 0000000..b4fc1e3 --- /dev/null +++ b/app/master/jabatan/tabel.php @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + +
IDJabatanTools
+ + +
+ + + + + diff --git a/app/master/jenis/crud.php b/app/master/jenis/crud.php new file mode 100644 index 0000000..02eff71 --- /dev/null +++ b/app/master/jenis/crud.php @@ -0,0 +1,28 @@ + 0) { + $upd_jenis = pg_query("UPDATE jenis_user SET + jenis='$jenis' + WHERE id='$id'"); + } else { + $ins_jenis = pg_query("INSERT into jenis_user ( + jenis + ) values( + '$jenis' + ) + "); + } +} else +if ($key=='delete_jenis') { +$id=$_POST['id']; + $del_jenis = pg_query("DELETE FROM jenis_user WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/master/jenis/main.php b/app/master/jenis/main.php new file mode 100644 index 0000000..e88fb1d --- /dev/null +++ b/app/master/jenis/main.php @@ -0,0 +1,78 @@ + + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/app/master/jenis/modal.php b/app/master/jenis/modal.php new file mode 100644 index 0000000..12b03a1 --- /dev/null +++ b/app/master/jenis/modal.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/jenis/tabel.php b/app/master/jenis/tabel.php new file mode 100644 index 0000000..6e24bf9 --- /dev/null +++ b/app/master/jenis/tabel.php @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + +
Jenis UserTools
+ + +
+ + + + + diff --git a/app/master/kepala/crud.php b/app/master/kepala/crud.php new file mode 100644 index 0000000..d69d070 --- /dev/null +++ b/app/master/kepala/crud.php @@ -0,0 +1,52 @@ + 0) { + $upd_kepala = pg_query("UPDATE data_kepala SET + pangkat='$pangkat', + data_pegawai_id='$data_pegawai_id', + aktif='$aktif', + modified_at=NOW() + WHERE id='$id'"); + } else { + $ins_kepala = pg_query("INSERT into data_kepala ( + pangkat, + data_pegawai_id, + aktif, + created_at, + modified_at + ) values ( + '$pangkat', + '$data_pegawai_id', + '$aktif', + NOW(), + NOW() + ) + "); + } + echo $pangkat; +} else +if ($key=='list_kepala') { +$id_ms_pegawai=$_POST['id_ms_pegawai']; +$list=pg_query("SELECT p.nipb,s.nama FROM data_pegawai p INNER JOIN jabatan_pegawai s ON (s.id=p.jabatan_pegawai_id) WHERE p.id='$id_ms_pegawai'"); +while($rlist=pg_fetch_array($list)) { + $nipb=$rlist[0]; + $jabatan=$rlist[1]; + echo $nipb.'$%^'.$jabatan; +} +} else +if ($key=='delete_kepala') { +$id=$_POST['id']; + $del_kepala = pg_query("DELETE FROM data_kepala WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/master/kepala/main.php b/app/master/kepala/main.php new file mode 100644 index 0000000..5b42772 --- /dev/null +++ b/app/master/kepala/main.php @@ -0,0 +1,82 @@ + + +
+
+ +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/app/master/kepala/modal.php b/app/master/kepala/modal.php new file mode 100644 index 0000000..95ad511 --- /dev/null +++ b/app/master/kepala/modal.php @@ -0,0 +1,95 @@ + + + +
+
+ + + + + + + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + + \ No newline at end of file diff --git a/app/master/kepala/tabel.php b/app/master/kepala/tabel.php new file mode 100644 index 0000000..0b277bd --- /dev/null +++ b/app/master/kepala/tabel.php @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamaNIPJabatanPangkatAktifTools
+ + +
+ + + + + diff --git a/app/master/lain/crud.php b/app/master/lain/crud.php new file mode 100644 index 0000000..259e686 --- /dev/null +++ b/app/master/lain/crud.php @@ -0,0 +1,113 @@ + 0) { + $upd_satker = pg_query("UPDATE jenis_kegiatan SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into jenis_kegiatan ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_jpelatihan') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM jenis_pelatihan WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE jenis_pelatihan SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into jenis_pelatihan ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_jtenaga') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM jenis_tenaga WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE jenis_tenaga SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into jenis_tenaga ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_jsebagai') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM sebagai WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE sebagai SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into sebagai ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_mtenaga') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM tenaga WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE tenaga SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into tenaga ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='simpan_mtenaga2') { +$id=$_POST['id']; +$nama=$_POST['nama']; +$cek_satker=pg_query("SELECT id FROM tenaga2 WHERE id='$id'"); + $row_satker = pg_fetch_row($cek_satker); + if ($row_satker[0] > 0) { + $upd_satker = pg_query("UPDATE tenaga2 SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into tenaga2 ( + nama + ) values( + '$nama' + ) + "); + } +} +?> \ No newline at end of file diff --git a/app/master/lain/main.php b/app/master/lain/main.php new file mode 100644 index 0000000..3b7708d --- /dev/null +++ b/app/master/lain/main.php @@ -0,0 +1,440 @@ + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + +
+
+ +
+
+ +
+ + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/app/master/lain/modal_jkegiatan.php b/app/master/lain/modal_jkegiatan.php new file mode 100644 index 0000000..24e2f15 --- /dev/null +++ b/app/master/lain/modal_jkegiatan.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/modal_jpelatihan.php b/app/master/lain/modal_jpelatihan.php new file mode 100644 index 0000000..ff73866 --- /dev/null +++ b/app/master/lain/modal_jpelatihan.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/modal_jsebagai.php b/app/master/lain/modal_jsebagai.php new file mode 100644 index 0000000..a1d4fb5 --- /dev/null +++ b/app/master/lain/modal_jsebagai.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/modal_jtenaga.php b/app/master/lain/modal_jtenaga.php new file mode 100644 index 0000000..d4ee189 --- /dev/null +++ b/app/master/lain/modal_jtenaga.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/modal_mtenaga.php b/app/master/lain/modal_mtenaga.php new file mode 100644 index 0000000..ce81a4f --- /dev/null +++ b/app/master/lain/modal_mtenaga.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/modal_mtenaga2.php b/app/master/lain/modal_mtenaga2.php new file mode 100644 index 0000000..34706f0 --- /dev/null +++ b/app/master/lain/modal_mtenaga2.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/lain/tabel_jkegiatan.php b/app/master/lain/tabel_jkegiatan.php new file mode 100644 index 0000000..aaac97b --- /dev/null +++ b/app/master/lain/tabel_jkegiatan.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDJenis KegiatanTools
+ + +
+ + + + + diff --git a/app/master/lain/tabel_jpelatihan.php b/app/master/lain/tabel_jpelatihan.php new file mode 100644 index 0000000..0fe3aaa --- /dev/null +++ b/app/master/lain/tabel_jpelatihan.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDJenis PelatihanTools
+ + +
+ + + + + diff --git a/app/master/lain/tabel_jsebagai.php b/app/master/lain/tabel_jsebagai.php new file mode 100644 index 0000000..d826caf --- /dev/null +++ b/app/master/lain/tabel_jsebagai.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDSebagaiTools
+ + +
+ + + + + diff --git a/app/master/lain/tabel_jtenaga.php b/app/master/lain/tabel_jtenaga.php new file mode 100644 index 0000000..fb2a0e0 --- /dev/null +++ b/app/master/lain/tabel_jtenaga.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDJenis TenagaTools
+ + +
+ + + + + diff --git a/app/master/lain/tabel_mtenaga.php b/app/master/lain/tabel_mtenaga.php new file mode 100644 index 0000000..506a465 --- /dev/null +++ b/app/master/lain/tabel_mtenaga.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDTenagaTools
+ + +
+ + + + + diff --git a/app/master/lain/tabel_mtenaga2.php b/app/master/lain/tabel_mtenaga2.php new file mode 100644 index 0000000..93508df --- /dev/null +++ b/app/master/lain/tabel_mtenaga2.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + +
IDTenaga2Tools
+ + +
+ + + + + diff --git a/app/master/main.php b/app/master/main.php new file mode 100644 index 0000000..4da4c93 --- /dev/null +++ b/app/master/main.php @@ -0,0 +1,171 @@ + + + + + + + + + +
+
+
+
+ + + + +
+ +
+
+
+ + +
+ + +
+
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/app/master/pegawai/crud.php b/app/master/pegawai/crud.php new file mode 100644 index 0000000..381a96e --- /dev/null +++ b/app/master/pegawai/crud.php @@ -0,0 +1,33 @@ + 0) { +$upd_pegawai=pg_query("UPDATE data_pegawai SET nama='$nama',nipb ='$nipb',golongan='$golongan',ruang='$ruang',jenis_kelamin='$jenis_kelamin',satuan_kerja='$satuan_kerja', + jabatan_pegawai_id='$jabatan_pegawai_id',aktif='$aktif',modified_at=NOW() + WHERE id='$id'"); +} else { +$ins_pegawai=pg_query("INSERT INTO data_pegawai + (nama,nipb,golongan,ruang,jenis_kelamin,satuan_kerja,jabatan_pegawai_id,aktif,created_at,modified_at) VALUES + ('$nama','$nipb','$golongan','$ruang','$jenis_kelamin','$satuan_kerja','$jabatan_pegawai_id','$aktif',NOW(),NOW()) + "); +} +} else +if ($key=='delete') { +$id = $_POST['pegawai_id']; +$del_gbersih=pg_query("DELETE FROM data_pegawai WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/master/pegawai/excel_reader.php b/app/master/pegawai/excel_reader.php new file mode 100644 index 0000000..161c05d --- /dev/null +++ b/app/master/pegawai/excel_reader.php @@ -0,0 +1,1737 @@ + + * Maintained at http://code.google.com/p/php-excel-reader/ + * + * Format parsing and MUCH more contributed by: + * Matt Roxburgh < http://www.roxburgh.me.uk > + * + * DOCUMENTATION + * ============= + * http://code.google.com/p/php-excel-reader/wiki/Documentation + * + * CHANGE LOG + * ========== + * http://code.google.com/p/php-excel-reader/wiki/ChangeHistory + * + * DISCUSSION/SUPPORT + * ================== + * http://groups.google.com/group/php-excel-reader-discuss/topics + * + * -------------------------------------------------------------------------- + * + * Originally developed by Vadim Tkachenko under the name PHPExcelReader. + * (http://sourceforge.net/projects/phpexcelreader) + * Based on the Java version by Andy Khan (http://www.andykhan.com). Now + * maintained by David Sanders. Reads only Biff 7 and Biff 8 formats. + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Spreadsheet + * @package Spreadsheet_Excel_Reader + * @author Vadim Tkachenko + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version CVS: $Id: reader.php 19 2007-03-13 12:42:41Z shangxiao $ + * @link http://pear.php.net/package/Spreadsheet_Excel_Reader + * @see OLE, Spreadsheet_Excel_Writer + * -------------------------------------------------------------------------- + */ + +define('NUM_BIG_BLOCK_DEPOT_BLOCKS_POS', 0x2c); +define('SMALL_BLOCK_DEPOT_BLOCK_POS', 0x3c); +define('ROOT_START_BLOCK_POS', 0x30); +define('BIG_BLOCK_SIZE', 0x200); +define('SMALL_BLOCK_SIZE', 0x40); +define('EXTENSION_BLOCK_POS', 0x44); +define('NUM_EXTENSION_BLOCK_POS', 0x48); +define('PROPERTY_STORAGE_BLOCK_SIZE', 0x80); +define('BIG_BLOCK_DEPOT_BLOCKS_POS', 0x4c); +define('SMALL_BLOCK_THRESHOLD', 0x1000); +// property storage offsets +define('SIZE_OF_NAME_POS', 0x40); +define('TYPE_POS', 0x42); +define('START_BLOCK_POS', 0x74); +define('SIZE_POS', 0x78); +define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1)); + + +function GetInt4d($data, $pos) { + $value = ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); + if ($value>=4294967294) { + $value=-2; + } + return $value; +} + +// http://uk.php.net/manual/en/function.getdate.php +function gmgetdate($ts = null){ + $k = array('seconds','minutes','hours','mday','wday','mon','year','yday','weekday','month',0); + return(array_comb($k,split(":",gmdate('s:i:G:j:w:n:Y:z:l:F:U',is_null($ts)?time():$ts)))); + } + +// Added for PHP4 compatibility +function array_comb($array1, $array2) { + $out = array(); + foreach ($array1 as $key => $value) { + $out[$value] = $array2[$key]; + } + return $out; +} + +function v($data,$pos) { + return ord($data[$pos]) | ord($data[$pos+1])<<8; +} + +class OLERead { + var $data = ''; + function OLERead(){ } + + function read($sFileName){ + // check if file exist and is readable (Darko Miljanovic) + if(!is_readable($sFileName)) { + $this->error = 1; + return false; + } + $this->data = @file_get_contents($sFileName); + if (!$this->data) { + $this->error = 1; + return false; + } + if (substr($this->data, 0, 8) != IDENTIFIER_OLE) { + $this->error = 1; + return false; + } + $this->numBigBlockDepotBlocks = GetInt4d($this->data, NUM_BIG_BLOCK_DEPOT_BLOCKS_POS); + $this->sbdStartBlock = GetInt4d($this->data, SMALL_BLOCK_DEPOT_BLOCK_POS); + $this->rootStartBlock = GetInt4d($this->data, ROOT_START_BLOCK_POS); + $this->extensionBlock = GetInt4d($this->data, EXTENSION_BLOCK_POS); + $this->numExtensionBlocks = GetInt4d($this->data, NUM_EXTENSION_BLOCK_POS); + + $bigBlockDepotBlocks = array(); + $pos = BIG_BLOCK_DEPOT_BLOCKS_POS; + $bbdBlocks = $this->numBigBlockDepotBlocks; + if ($this->numExtensionBlocks != 0) { + $bbdBlocks = (BIG_BLOCK_SIZE - BIG_BLOCK_DEPOT_BLOCKS_POS)/4; + } + + for ($i = 0; $i < $bbdBlocks; $i++) { + $bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos); + $pos += 4; + } + + + for ($j = 0; $j < $this->numExtensionBlocks; $j++) { + $pos = ($this->extensionBlock + 1) * BIG_BLOCK_SIZE; + $blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, BIG_BLOCK_SIZE / 4 - 1); + + for ($i = $bbdBlocks; $i < $bbdBlocks + $blocksToRead; $i++) { + $bigBlockDepotBlocks[$i] = GetInt4d($this->data, $pos); + $pos += 4; + } + + $bbdBlocks += $blocksToRead; + if ($bbdBlocks < $this->numBigBlockDepotBlocks) { + $this->extensionBlock = GetInt4d($this->data, $pos); + } + } + + // readBigBlockDepot + $pos = 0; + $index = 0; + $this->bigBlockChain = array(); + + for ($i = 0; $i < $this->numBigBlockDepotBlocks; $i++) { + $pos = ($bigBlockDepotBlocks[$i] + 1) * BIG_BLOCK_SIZE; + //echo "pos = $pos"; + for ($j = 0 ; $j < BIG_BLOCK_SIZE / 4; $j++) { + $this->bigBlockChain[$index] = GetInt4d($this->data, $pos); + $pos += 4 ; + $index++; + } + } + + // readSmallBlockDepot(); + $pos = 0; + $index = 0; + $sbdBlock = $this->sbdStartBlock; + $this->smallBlockChain = array(); + + while ($sbdBlock != -2) { + $pos = ($sbdBlock + 1) * BIG_BLOCK_SIZE; + for ($j = 0; $j < BIG_BLOCK_SIZE / 4; $j++) { + $this->smallBlockChain[$index] = GetInt4d($this->data, $pos); + $pos += 4; + $index++; + } + $sbdBlock = $this->bigBlockChain[$sbdBlock]; + } + + + // readData(rootStartBlock) + $block = $this->rootStartBlock; + $pos = 0; + $this->entry = $this->__readData($block); + $this->__readPropertySets(); + } + + function __readData($bl) { + $block = $bl; + $pos = 0; + $data = ''; + while ($block != -2) { + $pos = ($block + 1) * BIG_BLOCK_SIZE; + $data = $data.substr($this->data, $pos, BIG_BLOCK_SIZE); + $block = $this->bigBlockChain[$block]; + } + return $data; + } + + function __readPropertySets(){ + $offset = 0; + while ($offset < strlen($this->entry)) { + $d = substr($this->entry, $offset, PROPERTY_STORAGE_BLOCK_SIZE); + $nameSize = ord($d[SIZE_OF_NAME_POS]) | (ord($d[SIZE_OF_NAME_POS+1]) << 8); + $type = ord($d[TYPE_POS]); + $startBlock = GetInt4d($d, START_BLOCK_POS); + $size = GetInt4d($d, SIZE_POS); + $name = ''; + for ($i = 0; $i < $nameSize ; $i++) { + $name .= $d[$i]; + } + $name = str_replace("\x00", "", $name); + $this->props[] = array ( + 'name' => $name, + 'type' => $type, + 'startBlock' => $startBlock, + 'size' => $size); + if ((strtolower($name) == "workbook") || ( strtolower($name) == "book")) { + $this->wrkbook = count($this->props) - 1; + } + if ($name == "Root Entry") { + $this->rootentry = count($this->props) - 1; + } + $offset += PROPERTY_STORAGE_BLOCK_SIZE; + } + + } + + + function getWorkBook(){ + if ($this->props[$this->wrkbook]['size'] < SMALL_BLOCK_THRESHOLD){ + $rootdata = $this->__readData($this->props[$this->rootentry]['startBlock']); + $streamData = ''; + $block = $this->props[$this->wrkbook]['startBlock']; + $pos = 0; + while ($block != -2) { + $pos = $block * SMALL_BLOCK_SIZE; + $streamData .= substr($rootdata, $pos, SMALL_BLOCK_SIZE); + $block = $this->smallBlockChain[$block]; + } + return $streamData; + }else{ + $numBlocks = $this->props[$this->wrkbook]['size'] / BIG_BLOCK_SIZE; + if ($this->props[$this->wrkbook]['size'] % BIG_BLOCK_SIZE != 0) { + $numBlocks++; + } + + if ($numBlocks == 0) return ''; + $streamData = ''; + $block = $this->props[$this->wrkbook]['startBlock']; + $pos = 0; + while ($block != -2) { + $pos = ($block + 1) * BIG_BLOCK_SIZE; + $streamData .= substr($this->data, $pos, BIG_BLOCK_SIZE); + $block = $this->bigBlockChain[$block]; + } + return $streamData; + } + } + +} + +define('SPREADSHEET_EXCEL_READER_BIFF8', 0x600); +define('SPREADSHEET_EXCEL_READER_BIFF7', 0x500); +define('SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS', 0x5); +define('SPREADSHEET_EXCEL_READER_WORKSHEET', 0x10); +define('SPREADSHEET_EXCEL_READER_TYPE_BOF', 0x809); +define('SPREADSHEET_EXCEL_READER_TYPE_EOF', 0x0a); +define('SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET', 0x85); +define('SPREADSHEET_EXCEL_READER_TYPE_DIMENSION', 0x200); +define('SPREADSHEET_EXCEL_READER_TYPE_ROW', 0x208); +define('SPREADSHEET_EXCEL_READER_TYPE_DBCELL', 0xd7); +define('SPREADSHEET_EXCEL_READER_TYPE_FILEPASS', 0x2f); +define('SPREADSHEET_EXCEL_READER_TYPE_NOTE', 0x1c); +define('SPREADSHEET_EXCEL_READER_TYPE_TXO', 0x1b6); +define('SPREADSHEET_EXCEL_READER_TYPE_RK', 0x7e); +define('SPREADSHEET_EXCEL_READER_TYPE_RK2', 0x27e); +define('SPREADSHEET_EXCEL_READER_TYPE_MULRK', 0xbd); +define('SPREADSHEET_EXCEL_READER_TYPE_MULBLANK', 0xbe); +define('SPREADSHEET_EXCEL_READER_TYPE_INDEX', 0x20b); +define('SPREADSHEET_EXCEL_READER_TYPE_SST', 0xfc); +define('SPREADSHEET_EXCEL_READER_TYPE_EXTSST', 0xff); +define('SPREADSHEET_EXCEL_READER_TYPE_CONTINUE', 0x3c); +define('SPREADSHEET_EXCEL_READER_TYPE_LABEL', 0x204); +define('SPREADSHEET_EXCEL_READER_TYPE_LABELSST', 0xfd); +define('SPREADSHEET_EXCEL_READER_TYPE_NUMBER', 0x203); +define('SPREADSHEET_EXCEL_READER_TYPE_NAME', 0x18); +define('SPREADSHEET_EXCEL_READER_TYPE_ARRAY', 0x221); +define('SPREADSHEET_EXCEL_READER_TYPE_STRING', 0x207); +define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA', 0x406); +define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA2', 0x6); +define('SPREADSHEET_EXCEL_READER_TYPE_FORMAT', 0x41e); +define('SPREADSHEET_EXCEL_READER_TYPE_XF', 0xe0); +define('SPREADSHEET_EXCEL_READER_TYPE_BOOLERR', 0x205); +define('SPREADSHEET_EXCEL_READER_TYPE_FONT', 0x0031); +define('SPREADSHEET_EXCEL_READER_TYPE_PALETTE', 0x0092); +define('SPREADSHEET_EXCEL_READER_TYPE_UNKNOWN', 0xffff); +define('SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR', 0x22); +define('SPREADSHEET_EXCEL_READER_TYPE_MERGEDCELLS', 0xE5); +define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS' , 25569); +define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904', 24107); +define('SPREADSHEET_EXCEL_READER_MSINADAY', 86400); +define('SPREADSHEET_EXCEL_READER_TYPE_HYPER', 0x01b8); +define('SPREADSHEET_EXCEL_READER_TYPE_COLINFO', 0x7d); +define('SPREADSHEET_EXCEL_READER_TYPE_DEFCOLWIDTH', 0x55); +define('SPREADSHEET_EXCEL_READER_TYPE_STANDARDWIDTH', 0x99); +define('SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT', "%s"); + + +/* +* Main Class +*/ +class Spreadsheet_Excel_Reader { + + // MK: Added to make data retrieval easier + var $colnames = array(); + var $colindexes = array(); + var $standardColWidth = 0; + var $defaultColWidth = 0; + + function myHex($d) { + if ($d < 16) return "0" . dechex($d); + return dechex($d); + } + + function dumpHexData($data, $pos, $length) { + $info = ""; + for ($i = 0; $i <= $length; $i++) { + $info .= ($i==0?"":" ") . $this->myHex(ord($data[$pos + $i])) . (ord($data[$pos + $i])>31? "[" . $data[$pos + $i] . "]":''); + } + return $info; + } + + function getCol($col) { + if (is_string($col)) { + $col = strtolower($col); + if (array_key_exists($col,$this->colnames)) { + $col = $this->colnames[$col]; + } + } + return $col; + } + + // PUBLIC API FUNCTIONS + // -------------------- + + function val($row,$col,$sheet=0) { + $col = $this->getCol($col); + if (array_key_exists($row,$this->sheets[$sheet]['cells']) && array_key_exists($col,$this->sheets[$sheet]['cells'][$row])) { + return $this->sheets[$sheet]['cells'][$row][$col]; + } + return ""; + } + function value($row,$col,$sheet=0) { + return $this->val($row,$col,$sheet); + } + function info($row,$col,$type='',$sheet=0) { + $col = $this->getCol($col); + if (array_key_exists('cellsInfo',$this->sheets[$sheet]) + && array_key_exists($row,$this->sheets[$sheet]['cellsInfo']) + && array_key_exists($col,$this->sheets[$sheet]['cellsInfo'][$row]) + && array_key_exists($type,$this->sheets[$sheet]['cellsInfo'][$row][$col])) { + return $this->sheets[$sheet]['cellsInfo'][$row][$col][$type]; + } + return ""; + } + function type($row,$col,$sheet=0) { + return $this->info($row,$col,'type',$sheet); + } + function raw($row,$col,$sheet=0) { + return $this->info($row,$col,'raw',$sheet); + } + function rowspan($row,$col,$sheet=0) { + $val = $this->info($row,$col,'rowspan',$sheet); + if ($val=="") { return 1; } + return $val; + } + function colspan($row,$col,$sheet=0) { + $val = $this->info($row,$col,'colspan',$sheet); + if ($val=="") { return 1; } + return $val; + } + function hyperlink($row,$col,$sheet=0) { + $link = $this->sheets[$sheet]['cellsInfo'][$row][$col]['hyperlink']; + if ($link) { + return $link['link']; + } + return ''; + } + function rowcount($sheet=0) { + return $this->sheets[$sheet]['numRows']; + } + function colcount($sheet=0) { + return $this->sheets[$sheet]['numCols']; + } + function colwidth($col,$sheet=0) { + // Col width is actually the width of the number 0. So we have to estimate and come close + return $this->colInfo[$sheet][$col]['width']/9142*200; + } + function colhidden($col,$sheet=0) { + return !!$this->colInfo[$sheet][$col]['hidden']; + } + function rowheight($row,$sheet=0) { + return $this->rowInfo[$sheet][$row]['height']; + } + function rowhidden($row,$sheet=0) { + return !!$this->rowInfo[$sheet][$row]['hidden']; + } + + // GET THE CSS FOR FORMATTING + // ========================== + function style($row,$col,$sheet=0,$properties='') { + $css = ""; + $font=$this->font($row,$col,$sheet); + if ($font!="") { + $css .= "font-family:$font;"; + } + $align=$this->align($row,$col,$sheet); + if ($align!="") { + $css .= "text-align:$align;"; + } + $height=$this->height($row,$col,$sheet); + if ($height!="") { + $css .= "font-size:$height"."px;"; + } + $bgcolor=$this->bgColor($row,$col,$sheet); + if ($bgcolor!="") { + $bgcolor = $this->colors[$bgcolor]; + $css .= "background-color:$bgcolor;"; + } + $color=$this->color($row,$col,$sheet); + if ($color!="") { + $css .= "color:$color;"; + } + $bold=$this->bold($row,$col,$sheet); + if ($bold) { + $css .= "font-weight:bold;"; + } + $italic=$this->italic($row,$col,$sheet); + if ($italic) { + $css .= "font-style:italic;"; + } + $underline=$this->underline($row,$col,$sheet); + if ($underline) { + $css .= "text-decoration:underline;"; + } + // Borders + $bLeft = $this->borderLeft($row,$col,$sheet); + $bRight = $this->borderRight($row,$col,$sheet); + $bTop = $this->borderTop($row,$col,$sheet); + $bBottom = $this->borderBottom($row,$col,$sheet); + $bLeftCol = $this->borderLeftColor($row,$col,$sheet); + $bRightCol = $this->borderRightColor($row,$col,$sheet); + $bTopCol = $this->borderTopColor($row,$col,$sheet); + $bBottomCol = $this->borderBottomColor($row,$col,$sheet); + // Try to output the minimal required style + if ($bLeft!="" && $bLeft==$bRight && $bRight==$bTop && $bTop==$bBottom) { + $css .= "border:" . $this->lineStylesCss[$bLeft] .";"; + } + else { + if ($bLeft!="") { $css .= "border-left:" . $this->lineStylesCss[$bLeft] .";"; } + if ($bRight!="") { $css .= "border-right:" . $this->lineStylesCss[$bRight] .";"; } + if ($bTop!="") { $css .= "border-top:" . $this->lineStylesCss[$bTop] .";"; } + if ($bBottom!="") { $css .= "border-bottom:" . $this->lineStylesCss[$bBottom] .";"; } + } + // Only output border colors if there is an actual border specified + if ($bLeft!="" && $bLeftCol!="") { $css .= "border-left-color:" . $bLeftCol .";"; } + if ($bRight!="" && $bRightCol!="") { $css .= "border-right-color:" . $bRightCol .";"; } + if ($bTop!="" && $bTopCol!="") { $css .= "border-top-color:" . $bTopCol . ";"; } + if ($bBottom!="" && $bBottomCol!="") { $css .= "border-bottom-color:" . $bBottomCol .";"; } + + return $css; + } + + // FORMAT PROPERTIES + // ================= + function format($row,$col,$sheet=0) { + return $this->info($row,$col,'format',$sheet); + } + function formatIndex($row,$col,$sheet=0) { + return $this->info($row,$col,'formatIndex',$sheet); + } + function formatColor($row,$col,$sheet=0) { + return $this->info($row,$col,'formatColor',$sheet); + } + + // CELL (XF) PROPERTIES + // ==================== + function xfRecord($row,$col,$sheet=0) { + $xfIndex = $this->info($row,$col,'xfIndex',$sheet); + if ($xfIndex!="") { + return $this->xfRecords[$xfIndex]; + } + return null; + } + function xfProperty($row,$col,$sheet,$prop) { + $xfRecord = $this->xfRecord($row,$col,$sheet); + if ($xfRecord!=null) { + return $xfRecord[$prop]; + } + return ""; + } + function align($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'align'); + } + function bgColor($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'bgColor'); + } + function borderLeft($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'borderLeft'); + } + function borderRight($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'borderRight'); + } + function borderTop($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'borderTop'); + } + function borderBottom($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'borderBottom'); + } + function borderLeftColor($row,$col,$sheet=0) { + return $this->colors[$this->xfProperty($row,$col,$sheet,'borderLeftColor')]; + } + function borderRightColor($row,$col,$sheet=0) { + return $this->colors[$this->xfProperty($row,$col,$sheet,'borderRightColor')]; + } + function borderTopColor($row,$col,$sheet=0) { + return $this->colors[$this->xfProperty($row,$col,$sheet,'borderTopColor')]; + } + function borderBottomColor($row,$col,$sheet=0) { + return $this->colors[$this->xfProperty($row,$col,$sheet,'borderBottomColor')]; + } + + // FONT PROPERTIES + // =============== + function fontRecord($row,$col,$sheet=0) { + $xfRecord = $this->xfRecord($row,$col,$sheet); + if ($xfRecord!=null) { + $font = $xfRecord['fontIndex']; + if ($font!=null) { + return $this->fontRecords[$font]; + } + } + return null; + } + function fontProperty($row,$col,$sheet=0,$prop) { + $font = $this->fontRecord($row,$col,$sheet); + if ($font!=null) { + return $font[$prop]; + } + return false; + } + function fontIndex($row,$col,$sheet=0) { + return $this->xfProperty($row,$col,$sheet,'fontIndex'); + } + function color($row,$col,$sheet=0) { + $formatColor = $this->formatColor($row,$col,$sheet); + if ($formatColor!="") { + return $formatColor; + } + $ci = $this->fontProperty($row,$col,$sheet,'color'); + return $this->rawColor($ci); + } + function rawColor($ci) { + if (($ci <> 0x7FFF) && ($ci <> '')) { + return $this->colors[$ci]; + } + return ""; + } + function bold($row,$col,$sheet=0) { + return $this->fontProperty($row,$col,$sheet,'bold'); + } + function italic($row,$col,$sheet=0) { + return $this->fontProperty($row,$col,$sheet,'italic'); + } + function underline($row,$col,$sheet=0) { + return $this->fontProperty($row,$col,$sheet,'under'); + } + function height($row,$col,$sheet=0) { + return $this->fontProperty($row,$col,$sheet,'height'); + } + function font($row,$col,$sheet=0) { + return $this->fontProperty($row,$col,$sheet,'font'); + } + + // DUMP AN HTML TABLE OF THE ENTIRE XLS DATA + // ========================================= + function dump($row_numbers=false,$col_letters=false,$sheet=0,$table_class='excel') { + $out = ""; + if ($col_letters) { + $out .= "\n\t"; + if ($row_numbers) { + $out .= "\n\t\t"; + } + for($i=1;$i<=$this->colcount($sheet);$i++) { + $style = "width:" . ($this->colwidth($i,$sheet)*1) . "px;"; + if ($this->colhidden($i,$sheet)) { + $style .= "display:none;"; + } + $out .= "\n\t\t"; + } + $out .= "\n"; + } + + $out .= "\n"; + for($row=1;$row<=$this->rowcount($sheet);$row++) { + $rowheight = $this->rowheight($row,$sheet); + $style = "height:" . ($rowheight*(4/3)) . "px;"; + if ($this->rowhidden($row,$sheet)) { + $style .= "display:none;"; + } + $out .= "\n\t"; + if ($row_numbers) { + $out .= "\n\t\t"; + } + for($col=1;$col<=$this->colcount($sheet);$col++) { + // Account for Rowspans/Colspans + $rowspan = $this->rowspan($row,$col,$sheet); + $colspan = $this->colspan($row,$col,$sheet); + for($i=0;$i<$rowspan;$i++) { + for($j=0;$j<$colspan;$j++) { + if ($i>0 || $j>0) { + $this->sheets[$sheet]['cellsInfo'][$row+$i][$col+$j]['dontprint']=1; + } + } + } + if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) { + $style = $this->style($row,$col,$sheet); + if ($this->colhidden($col,$sheet)) { + $style .= "display:none;"; + } + $out .= "\n\t\t"; + } + } + $out .= "\n"; + } + $out .= "
 " . strtoupper($this->colindexes[$i]) . "
$row 1?" colspan=$colspan":"") . ($rowspan > 1?" rowspan=$rowspan":"") . ">"; + $val = $this->val($row,$col,$sheet); + if ($val=='') { $val=" "; } + else { + $val = htmlentities($val); + $link = $this->hyperlink($row,$col,$sheet); + if ($link!='') { + $val = "$val"; + } + } + $out .= "".nl2br($val).""; + $out .= "
"; + return $out; + } + + // -------------- + // END PUBLIC API + + + var $boundsheets = array(); + var $formatRecords = array(); + var $fontRecords = array(); + var $xfRecords = array(); + var $colInfo = array(); + var $rowInfo = array(); + + var $sst = array(); + var $sheets = array(); + + var $data; + var $_ole; + var $_defaultEncoding = "UTF-8"; + var $_defaultFormat = SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT; + var $_columnsFormat = array(); + var $_rowoffset = 1; + var $_coloffset = 1; + + /** + * List of default date formats used by Excel + */ + var $dateFormats = array ( + 0xe => "m/d/Y", + 0xf => "M-d-Y", + 0x10 => "d-M", + 0x11 => "M-Y", + 0x12 => "h:i a", + 0x13 => "h:i:s a", + 0x14 => "H:i", + 0x15 => "H:i:s", + 0x16 => "d/m/Y H:i", + 0x2d => "i:s", + 0x2e => "H:i:s", + 0x2f => "i:s.S" + ); + + /** + * Default number formats used by Excel + */ + var $numberFormats = array( + 0x1 => "0", + 0x2 => "0.00", + 0x3 => "#,##0", + 0x4 => "#,##0.00", + 0x5 => "\$#,##0;(\$#,##0)", + 0x6 => "\$#,##0;[Red](\$#,##0)", + 0x7 => "\$#,##0.00;(\$#,##0.00)", + 0x8 => "\$#,##0.00;[Red](\$#,##0.00)", + 0x9 => "0%", + 0xa => "0.00%", + 0xb => "0.00E+00", + 0x25 => "#,##0;(#,##0)", + 0x26 => "#,##0;[Red](#,##0)", + 0x27 => "#,##0.00;(#,##0.00)", + 0x28 => "#,##0.00;[Red](#,##0.00)", + 0x29 => "#,##0;(#,##0)", // Not exactly + 0x2a => "\$#,##0;(\$#,##0)", // Not exactly + 0x2b => "#,##0.00;(#,##0.00)", // Not exactly + 0x2c => "\$#,##0.00;(\$#,##0.00)", // Not exactly + 0x30 => "##0.0E+0" + ); + + var $colors = Array( + 0x00 => "#000000", + 0x01 => "#FFFFFF", + 0x02 => "#FF0000", + 0x03 => "#00FF00", + 0x04 => "#0000FF", + 0x05 => "#FFFF00", + 0x06 => "#FF00FF", + 0x07 => "#00FFFF", + 0x08 => "#000000", + 0x09 => "#FFFFFF", + 0x0A => "#FF0000", + 0x0B => "#00FF00", + 0x0C => "#0000FF", + 0x0D => "#FFFF00", + 0x0E => "#FF00FF", + 0x0F => "#00FFFF", + 0x10 => "#800000", + 0x11 => "#008000", + 0x12 => "#000080", + 0x13 => "#808000", + 0x14 => "#800080", + 0x15 => "#008080", + 0x16 => "#C0C0C0", + 0x17 => "#808080", + 0x18 => "#9999FF", + 0x19 => "#993366", + 0x1A => "#FFFFCC", + 0x1B => "#CCFFFF", + 0x1C => "#660066", + 0x1D => "#FF8080", + 0x1E => "#0066CC", + 0x1F => "#CCCCFF", + 0x20 => "#000080", + 0x21 => "#FF00FF", + 0x22 => "#FFFF00", + 0x23 => "#00FFFF", + 0x24 => "#800080", + 0x25 => "#800000", + 0x26 => "#008080", + 0x27 => "#0000FF", + 0x28 => "#00CCFF", + 0x29 => "#CCFFFF", + 0x2A => "#CCFFCC", + 0x2B => "#FFFF99", + 0x2C => "#99CCFF", + 0x2D => "#FF99CC", + 0x2E => "#CC99FF", + 0x2F => "#FFCC99", + 0x30 => "#3366FF", + 0x31 => "#33CCCC", + 0x32 => "#99CC00", + 0x33 => "#FFCC00", + 0x34 => "#FF9900", + 0x35 => "#FF6600", + 0x36 => "#666699", + 0x37 => "#969696", + 0x38 => "#003366", + 0x39 => "#339966", + 0x3A => "#003300", + 0x3B => "#333300", + 0x3C => "#993300", + 0x3D => "#993366", + 0x3E => "#333399", + 0x3F => "#333333", + 0x40 => "#000000", + 0x41 => "#FFFFFF", + + 0x43 => "#000000", + 0x4D => "#000000", + 0x4E => "#FFFFFF", + 0x4F => "#000000", + 0x50 => "#FFFFFF", + 0x51 => "#000000", + + 0x7FFF => "#000000" + ); + + var $lineStyles = array( + 0x00 => "", + 0x01 => "Thin", + 0x02 => "Medium", + 0x03 => "Dashed", + 0x04 => "Dotted", + 0x05 => "Thick", + 0x06 => "Double", + 0x07 => "Hair", + 0x08 => "Medium dashed", + 0x09 => "Thin dash-dotted", + 0x0A => "Medium dash-dotted", + 0x0B => "Thin dash-dot-dotted", + 0x0C => "Medium dash-dot-dotted", + 0x0D => "Slanted medium dash-dotted" + ); + + var $lineStylesCss = array( + "Thin" => "1px solid", + "Medium" => "2px solid", + "Dashed" => "1px dashed", + "Dotted" => "1px dotted", + "Thick" => "3px solid", + "Double" => "double", + "Hair" => "1px solid", + "Medium dashed" => "2px dashed", + "Thin dash-dotted" => "1px dashed", + "Medium dash-dotted" => "2px dashed", + "Thin dash-dot-dotted" => "1px dashed", + "Medium dash-dot-dotted" => "2px dashed", + "Slanted medium dash-dotte" => "2px dashed" + ); + + function read16bitstring($data, $start) { + $len = 0; + while (ord($data[$start + $len]) + ord($data[$start + $len + 1]) > 0) $len++; + return substr($data, $start, $len); + } + + // ADDED by Matt Kruse for better formatting + function _format_value($format,$num,$f) { + // 49==TEXT format + // http://code.google.com/p/php-excel-reader/issues/detail?id=7 + if ( (!$f && $format=="%s") || ($f==49) || ($format=="GENERAL") ) { + return array('string'=>$num, 'formatColor'=>null); + } + + // Custom pattern can be POSITIVE;NEGATIVE;ZERO + // The "text" option as 4th parameter is not handled + $parts = split(";",$format); + $pattern = $parts[0]; + // Negative pattern + if (count($parts)>2 && $num==0) { + $pattern = $parts[2]; + } + // Zero pattern + if (count($parts)>1 && $num<0) { + $pattern = $parts[1]; + $num = abs($num); + } + + $color = ""; + $matches = array(); + $color_regex = "/^\[(BLACK|BLUE|CYAN|GREEN|MAGENTA|RED|WHITE|YELLOW)\]/i"; + if (preg_match($color_regex,$pattern,$matches)) { + $color = strtolower($matches[1]); + $pattern = preg_replace($color_regex,"",$pattern); + } + + // In Excel formats, "_" is used to add spacing, which we can't do in HTML + $pattern = preg_replace("/_./","",$pattern); + + // Some non-number characters are escaped with \, which we don't need + $pattern = preg_replace("/\\\/","",$pattern); + + // Some non-number strings are quoted, so we'll get rid of the quotes + $pattern = preg_replace("/\"/","",$pattern); + + // TEMPORARY - Convert # to 0 + $pattern = preg_replace("/\#/","0",$pattern); + + // Find out if we need comma formatting + $has_commas = preg_match("/,/",$pattern); + if ($has_commas) { + $pattern = preg_replace("/,/","",$pattern); + } + + // Handle Percentages + if (preg_match("/\d(\%)([^\%]|$)/",$pattern,$matches)) { + $num = $num * 100; + $pattern = preg_replace("/(\d)(\%)([^\%]|$)/","$1%$3",$pattern); + } + + // Handle the number itself + $number_regex = "/(\d+)(\.?)(\d*)/"; + if (preg_match($number_regex,$pattern,$matches)) { + $left = $matches[1]; + $dec = $matches[2]; + $right = $matches[3]; + if ($has_commas) { + $formatted = number_format($num,strlen($right)); + } + else { + $sprintf_pattern = "%1.".strlen($right)."f"; + $formatted = sprintf($sprintf_pattern, $num); + } + $pattern = preg_replace($number_regex, $formatted, $pattern); + } + + return array( + 'string'=>$pattern, + 'formatColor'=>$color + ); + } + + /** + * Constructor + * + * Some basic initialisation + */ + function Spreadsheet_Excel_Reader($file='',$store_extended_info=true,$outputEncoding='') { + $this->_ole =& new OLERead(); + $this->setUTFEncoder('iconv'); + if ($outputEncoding != '') { + $this->setOutputEncoding($outputEncoding); + } + for ($i=1; $i<245; $i++) { + $name = strtolower(( (($i-1)/26>=1)?chr(($i-1)/26+64):'') . chr(($i-1)%26+65)); + $this->colnames[$name] = $i; + $this->colindexes[$i] = $name; + } + $this->store_extended_info = $store_extended_info; + if ($file!="") { + $this->read($file); + } + } + + /** + * Set the encoding method + */ + function setOutputEncoding($encoding) { + $this->_defaultEncoding = $encoding; + } + + /** + * $encoder = 'iconv' or 'mb' + * set iconv if you would like use 'iconv' for encode UTF-16LE to your encoding + * set mb if you would like use 'mb_convert_encoding' for encode UTF-16LE to your encoding + */ + function setUTFEncoder($encoder = 'iconv') { + $this->_encoderFunction = ''; + if ($encoder == 'iconv') { + $this->_encoderFunction = function_exists('iconv') ? 'iconv' : ''; + } elseif ($encoder == 'mb') { + $this->_encoderFunction = function_exists('mb_convert_encoding') ? 'mb_convert_encoding' : ''; + } + } + + function setRowColOffset($iOffset) { + $this->_rowoffset = $iOffset; + $this->_coloffset = $iOffset; + } + + /** + * Set the default number format + */ + function setDefaultFormat($sFormat) { + $this->_defaultFormat = $sFormat; + } + + /** + * Force a column to use a certain format + */ + function setColumnFormat($column, $sFormat) { + $this->_columnsFormat[$column] = $sFormat; + } + + /** + * Read the spreadsheet file using OLE, then parse + */ + function read($sFileName) { + $res = $this->_ole->read($sFileName); + + // oops, something goes wrong (Darko Miljanovic) + if($res === false) { + // check error code + if($this->_ole->error == 1) { + // bad file + die('The filename ' . $sFileName . ' is not readable'); + } + // check other error codes here (eg bad fileformat, etc...) + } + $this->data = $this->_ole->getWorkBook(); + $this->_parse(); + } + + /** + * Parse a workbook + * + * @access private + * @return bool + */ + function _parse() { + $pos = 0; + $data = $this->data; + + $code = v($data,$pos); + $length = v($data,$pos+2); + $version = v($data,$pos+4); + $substreamType = v($data,$pos+6); + + $this->version = $version; + + if (($version != SPREADSHEET_EXCEL_READER_BIFF8) && + ($version != SPREADSHEET_EXCEL_READER_BIFF7)) { + return false; + } + + if ($substreamType != SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS){ + return false; + } + + $pos += $length + 4; + + $code = v($data,$pos); + $length = v($data,$pos+2); + + while ($code != SPREADSHEET_EXCEL_READER_TYPE_EOF) { + switch ($code) { + case SPREADSHEET_EXCEL_READER_TYPE_SST: + $spos = $pos + 4; + $limitpos = $spos + $length; + $uniqueStrings = $this->_GetInt4d($data, $spos+4); + $spos += 8; + for ($i = 0; $i < $uniqueStrings; $i++) { + // Read in the number of characters + if ($spos == $limitpos) { + $opcode = v($data,$spos); + $conlength = v($data,$spos+2); + if ($opcode != 0x3c) { + return -1; + } + $spos += 4; + $limitpos = $spos + $conlength; + } + $numChars = ord($data[$spos]) | (ord($data[$spos+1]) << 8); + $spos += 2; + $optionFlags = ord($data[$spos]); + $spos++; + $asciiEncoding = (($optionFlags & 0x01) == 0) ; + $extendedString = ( ($optionFlags & 0x04) != 0); + + // See if string contains formatting information + $richString = ( ($optionFlags & 0x08) != 0); + + if ($richString) { + // Read in the crun + $formattingRuns = v($data,$spos); + $spos += 2; + } + + if ($extendedString) { + // Read in cchExtRst + $extendedRunLength = $this->_GetInt4d($data, $spos); + $spos += 4; + } + + $len = ($asciiEncoding)? $numChars : $numChars*2; + if ($spos + $len < $limitpos) { + $retstr = substr($data, $spos, $len); + $spos += $len; + } + else{ + // found countinue + $retstr = substr($data, $spos, $limitpos - $spos); + $bytesRead = $limitpos - $spos; + $charsLeft = $numChars - (($asciiEncoding) ? $bytesRead : ($bytesRead / 2)); + $spos = $limitpos; + + while ($charsLeft > 0){ + $opcode = v($data,$spos); + $conlength = v($data,$spos+2); + if ($opcode != 0x3c) { + return -1; + } + $spos += 4; + $limitpos = $spos + $conlength; + $option = ord($data[$spos]); + $spos += 1; + if ($asciiEncoding && ($option == 0)) { + $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength); + $retstr .= substr($data, $spos, $len); + $charsLeft -= $len; + $asciiEncoding = true; + } + elseif (!$asciiEncoding && ($option != 0)) { + $len = min($charsLeft * 2, $limitpos - $spos); // min($charsLeft, $conlength); + $retstr .= substr($data, $spos, $len); + $charsLeft -= $len/2; + $asciiEncoding = false; + } + elseif (!$asciiEncoding && ($option == 0)) { + // Bummer - the string starts off as Unicode, but after the + // continuation it is in straightforward ASCII encoding + $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength); + for ($j = 0; $j < $len; $j++) { + $retstr .= $data[$spos + $j].chr(0); + } + $charsLeft -= $len; + $asciiEncoding = false; + } + else{ + $newstr = ''; + for ($j = 0; $j < strlen($retstr); $j++) { + $newstr = $retstr[$j].chr(0); + } + $retstr = $newstr; + $len = min($charsLeft * 2, $limitpos - $spos); // min($charsLeft, $conlength); + $retstr .= substr($data, $spos, $len); + $charsLeft -= $len/2; + $asciiEncoding = false; + } + $spos += $len; + } + } + $retstr = ($asciiEncoding) ? $retstr : $this->_encodeUTF16($retstr); + + if ($richString){ + $spos += 4 * $formattingRuns; + } + + // For extended strings, skip over the extended string data + if ($extendedString) { + $spos += $extendedRunLength; + } + $this->sst[]=$retstr; + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_FILEPASS: + return false; + break; + case SPREADSHEET_EXCEL_READER_TYPE_NAME: + break; + case SPREADSHEET_EXCEL_READER_TYPE_FORMAT: + $indexCode = v($data,$pos+4); + if ($version == SPREADSHEET_EXCEL_READER_BIFF8) { + $numchars = v($data,$pos+6); + if (ord($data[$pos+8]) == 0){ + $formatString = substr($data, $pos+9, $numchars); + } else { + $formatString = substr($data, $pos+9, $numchars*2); + } + } else { + $numchars = ord($data[$pos+6]); + $formatString = substr($data, $pos+7, $numchars*2); + } + $this->formatRecords[$indexCode] = $formatString; + break; + case SPREADSHEET_EXCEL_READER_TYPE_FONT: + $height = v($data,$pos+4); + $option = v($data,$pos+6); + $color = v($data,$pos+8); + $weight = v($data,$pos+10); + $under = ord($data[$pos+14]); + $font = ""; + // Font name + $numchars = ord($data[$pos+18]); + if ((ord($data[$pos+19]) & 1) == 0){ + $font = substr($data, $pos+20, $numchars); + } else { + $font = substr($data, $pos+20, $numchars*2); + $font = $this->_encodeUTF16($font); + } + $this->fontRecords[] = array( + 'height' => $height / 20, + 'italic' => !!($option & 2), + 'color' => $color, + 'under' => !($under==0), + 'bold' => ($weight==700), + 'font' => $font, + 'raw' => $this->dumpHexData($data, $pos+3, $length) + ); + break; + + case SPREADSHEET_EXCEL_READER_TYPE_PALETTE: + $colors = ord($data[$pos+4]) | ord($data[$pos+5]) << 8; + for ($coli = 0; $coli < $colors; $coli++) { + $colOff = $pos + 2 + ($coli * 4); + $colr = ord($data[$colOff]); + $colg = ord($data[$colOff+1]); + $colb = ord($data[$colOff+2]); + $this->colors[0x07 + $coli] = '#' . $this->myhex($colr) . $this->myhex($colg) . $this->myhex($colb); + } + break; + + case SPREADSHEET_EXCEL_READER_TYPE_XF: + $fontIndexCode = (ord($data[$pos+4]) | ord($data[$pos+5]) << 8) - 1; + $fontIndexCode = max(0,$fontIndexCode); + $indexCode = ord($data[$pos+6]) | ord($data[$pos+7]) << 8; + $alignbit = ord($data[$pos+10]) & 3; + $bgi = (ord($data[$pos+22]) | ord($data[$pos+23]) << 8) & 0x3FFF; + $bgcolor = ($bgi & 0x7F); +// $bgcolor = ($bgi & 0x3f80) >> 7; + $align = ""; + if ($alignbit==3) { $align="right"; } + if ($alignbit==2) { $align="center"; } + + $fillPattern = (ord($data[$pos+21]) & 0xFC) >> 2; + if ($fillPattern == 0) { + $bgcolor = ""; + } + + $xf = array(); + $xf['formatIndex'] = $indexCode; + $xf['align'] = $align; + $xf['fontIndex'] = $fontIndexCode; + $xf['bgColor'] = $bgcolor; + $xf['fillPattern'] = $fillPattern; + + $border = ord($data[$pos+14]) | (ord($data[$pos+15]) << 8) | (ord($data[$pos+16]) << 16) | (ord($data[$pos+17]) << 24); + $xf['borderLeft'] = $this->lineStyles[($border & 0xF)]; + $xf['borderRight'] = $this->lineStyles[($border & 0xF0) >> 4]; + $xf['borderTop'] = $this->lineStyles[($border & 0xF00) >> 8]; + $xf['borderBottom'] = $this->lineStyles[($border & 0xF000) >> 12]; + + $xf['borderLeftColor'] = ($border & 0x7F0000) >> 16; + $xf['borderRightColor'] = ($border & 0x3F800000) >> 23; + $border = (ord($data[$pos+18]) | ord($data[$pos+19]) << 8); + + $xf['borderTopColor'] = ($border & 0x7F); + $xf['borderBottomColor'] = ($border & 0x3F80) >> 7; + + if (array_key_exists($indexCode, $this->dateFormats)) { + $xf['type'] = 'date'; + $xf['format'] = $this->dateFormats[$indexCode]; + if ($align=='') { $xf['align'] = 'right'; } + }elseif (array_key_exists($indexCode, $this->numberFormats)) { + $xf['type'] = 'number'; + $xf['format'] = $this->numberFormats[$indexCode]; + if ($align=='') { $xf['align'] = 'right'; } + }else{ + $isdate = FALSE; + $formatstr = ''; + if ($indexCode > 0){ + if (isset($this->formatRecords[$indexCode])) + $formatstr = $this->formatRecords[$indexCode]; + if ($formatstr!="") { + $tmp = preg_replace("/\;.*/","",$formatstr); + $tmp = preg_replace("/^\[[^\]]*\]/","",$tmp); + if (preg_match("/[^hmsday\/\-:\s\\\,AMP]/i", $tmp) == 0) { // found day and time format + $isdate = TRUE; + $formatstr = $tmp; + $formatstr = str_replace(array('AM/PM','mmmm','mmm'), array('a','F','M'), $formatstr); + // m/mm are used for both minutes and months - oh SNAP! + // This mess tries to fix for that. + // 'm' == minutes only if following h/hh or preceding s/ss + $formatstr = preg_replace("/(h:?)mm?/","$1i", $formatstr); + $formatstr = preg_replace("/mm?(:?s)/","i$1", $formatstr); + // A single 'm' = n in PHP + $formatstr = preg_replace("/(^|[^m])m([^m]|$)/", '$1n$2', $formatstr); + $formatstr = preg_replace("/(^|[^m])m([^m]|$)/", '$1n$2', $formatstr); + // else it's months + $formatstr = str_replace('mm', 'm', $formatstr); + // Convert single 'd' to 'j' + $formatstr = preg_replace("/(^|[^d])d([^d]|$)/", '$1j$2', $formatstr); + $formatstr = str_replace(array('dddd','ddd','dd','yyyy','yy','hh','h'), array('l','D','d','Y','y','H','g'), $formatstr); + $formatstr = preg_replace("/ss?/", 's', $formatstr); + } + } + } + if ($isdate){ + $xf['type'] = 'date'; + $xf['format'] = $formatstr; + if ($align=='') { $xf['align'] = 'right'; } + }else{ + // If the format string has a 0 or # in it, we'll assume it's a number + if (preg_match("/[0#]/", $formatstr)) { + $xf['type'] = 'number'; + if ($align=='') { $xf['align']='right'; } + } + else { + $xf['type'] = 'other'; + } + $xf['format'] = $formatstr; + $xf['code'] = $indexCode; + } + } + $this->xfRecords[] = $xf; + break; + case SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR: + $this->nineteenFour = (ord($data[$pos+4]) == 1); + break; + case SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET: + $rec_offset = $this->_GetInt4d($data, $pos+4); + $rec_typeFlag = ord($data[$pos+8]); + $rec_visibilityFlag = ord($data[$pos+9]); + $rec_length = ord($data[$pos+10]); + + if ($version == SPREADSHEET_EXCEL_READER_BIFF8){ + $chartype = ord($data[$pos+11]); + if ($chartype == 0){ + $rec_name = substr($data, $pos+12, $rec_length); + } else { + $rec_name = $this->_encodeUTF16(substr($data, $pos+12, $rec_length*2)); + } + }elseif ($version == SPREADSHEET_EXCEL_READER_BIFF7){ + $rec_name = substr($data, $pos+11, $rec_length); + } + $this->boundsheets[] = array('name'=>$rec_name,'offset'=>$rec_offset); + break; + + } + + $pos += $length + 4; + $code = ord($data[$pos]) | ord($data[$pos+1])<<8; + $length = ord($data[$pos+2]) | ord($data[$pos+3])<<8; + } + + foreach ($this->boundsheets as $key=>$val){ + $this->sn = $key; + $this->_parsesheet($val['offset']); + } + return true; + } + + /** + * Parse a worksheet + */ + function _parsesheet($spos) { + $cont = true; + $data = $this->data; + // read BOF + $code = ord($data[$spos]) | ord($data[$spos+1])<<8; + $length = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + + $version = ord($data[$spos + 4]) | ord($data[$spos + 5])<<8; + $substreamType = ord($data[$spos + 6]) | ord($data[$spos + 7])<<8; + + if (($version != SPREADSHEET_EXCEL_READER_BIFF8) && ($version != SPREADSHEET_EXCEL_READER_BIFF7)) { + return -1; + } + + if ($substreamType != SPREADSHEET_EXCEL_READER_WORKSHEET){ + return -2; + } + $spos += $length + 4; + while($cont) { + $lowcode = ord($data[$spos]); + if ($lowcode == SPREADSHEET_EXCEL_READER_TYPE_EOF) break; + $code = $lowcode | ord($data[$spos+1])<<8; + $length = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $spos += 4; + $this->sheets[$this->sn]['maxrow'] = $this->_rowoffset - 1; + $this->sheets[$this->sn]['maxcol'] = $this->_coloffset - 1; + unset($this->rectype); + switch ($code) { + case SPREADSHEET_EXCEL_READER_TYPE_DIMENSION: + if (!isset($this->numRows)) { + if (($length == 10) || ($version == SPREADSHEET_EXCEL_READER_BIFF7)){ + $this->sheets[$this->sn]['numRows'] = ord($data[$spos+2]) | ord($data[$spos+3]) << 8; + $this->sheets[$this->sn]['numCols'] = ord($data[$spos+6]) | ord($data[$spos+7]) << 8; + } else { + $this->sheets[$this->sn]['numRows'] = ord($data[$spos+4]) | ord($data[$spos+5]) << 8; + $this->sheets[$this->sn]['numCols'] = ord($data[$spos+10]) | ord($data[$spos+11]) << 8; + } + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_MERGEDCELLS: + $cellRanges = ord($data[$spos]) | ord($data[$spos+1])<<8; + for ($i = 0; $i < $cellRanges; $i++) { + $fr = ord($data[$spos + 8*$i + 2]) | ord($data[$spos + 8*$i + 3])<<8; + $lr = ord($data[$spos + 8*$i + 4]) | ord($data[$spos + 8*$i + 5])<<8; + $fc = ord($data[$spos + 8*$i + 6]) | ord($data[$spos + 8*$i + 7])<<8; + $lc = ord($data[$spos + 8*$i + 8]) | ord($data[$spos + 8*$i + 9])<<8; + if ($lr - $fr > 0) { + $this->sheets[$this->sn]['cellsInfo'][$fr+1][$fc+1]['rowspan'] = $lr - $fr + 1; + } + if ($lc - $fc > 0) { + $this->sheets[$this->sn]['cellsInfo'][$fr+1][$fc+1]['colspan'] = $lc - $fc + 1; + } + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_RK: + case SPREADSHEET_EXCEL_READER_TYPE_RK2: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $rknum = $this->_GetInt4d($data, $spos + 6); + $numValue = $this->_GetIEEE754($rknum); + $info = $this->_getCellDetails($spos,$numValue,$column); + $this->addcell($row, $column, $info['string'],$info); + break; + case SPREADSHEET_EXCEL_READER_TYPE_LABELSST: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $xfindex = ord($data[$spos+4]) | ord($data[$spos+5])<<8; + $index = $this->_GetInt4d($data, $spos + 6); + $this->addcell($row, $column, $this->sst[$index], array('xfIndex'=>$xfindex) ); + break; + case SPREADSHEET_EXCEL_READER_TYPE_MULRK: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $colFirst = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $colLast = ord($data[$spos + $length - 2]) | ord($data[$spos + $length - 1])<<8; + $columns = $colLast - $colFirst + 1; + $tmppos = $spos+4; + for ($i = 0; $i < $columns; $i++) { + $numValue = $this->_GetIEEE754($this->_GetInt4d($data, $tmppos + 2)); + $info = $this->_getCellDetails($tmppos-4,$numValue,$colFirst + $i + 1); + $tmppos += 6; + $this->addcell($row, $colFirst + $i, $info['string'], $info); + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_NUMBER: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $tmp = unpack("ddouble", substr($data, $spos + 6, 8)); // It machine machine dependent + if ($this->isDate($spos)) { + $numValue = $tmp['double']; + } + else { + $numValue = $this->createNumber($spos); + } + $info = $this->_getCellDetails($spos,$numValue,$column); + $this->addcell($row, $column, $info['string'], $info); + break; + + case SPREADSHEET_EXCEL_READER_TYPE_FORMULA: + case SPREADSHEET_EXCEL_READER_TYPE_FORMULA2: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + if ((ord($data[$spos+6])==0) && (ord($data[$spos+12])==255) && (ord($data[$spos+13])==255)) { + //String formula. Result follows in a STRING record + // This row/col are stored to be referenced in that record + // http://code.google.com/p/php-excel-reader/issues/detail?id=4 + $previousRow = $row; + $previousCol = $column; + } elseif ((ord($data[$spos+6])==1) && (ord($data[$spos+12])==255) && (ord($data[$spos+13])==255)) { + //Boolean formula. Result is in +2; 0=false,1=true + // http://code.google.com/p/php-excel-reader/issues/detail?id=4 + if (ord($this->data[$spos+8])==1) { + $this->addcell($row, $column, "TRUE"); + } else { + $this->addcell($row, $column, "FALSE"); + } + } elseif ((ord($data[$spos+6])==2) && (ord($data[$spos+12])==255) && (ord($data[$spos+13])==255)) { + //Error formula. Error code is in +2; + } elseif ((ord($data[$spos+6])==3) && (ord($data[$spos+12])==255) && (ord($data[$spos+13])==255)) { + //Formula result is a null string. + $this->addcell($row, $column, ''); + } else { + // result is a number, so first 14 bytes are just like a _NUMBER record + $tmp = unpack("ddouble", substr($data, $spos + 6, 8)); // It machine machine dependent + if ($this->isDate($spos)) { + $numValue = $tmp['double']; + } + else { + $numValue = $this->createNumber($spos); + } + $info = $this->_getCellDetails($spos,$numValue,$column); + $this->addcell($row, $column, $info['string'], $info); + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_BOOLERR: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $string = ord($data[$spos+6]); + $this->addcell($row, $column, $string); + break; + case SPREADSHEET_EXCEL_READER_TYPE_STRING: + // http://code.google.com/p/php-excel-reader/issues/detail?id=4 + if ($version == SPREADSHEET_EXCEL_READER_BIFF8){ + // Unicode 16 string, like an SST record + $xpos = $spos; + $numChars =ord($data[$xpos]) | (ord($data[$xpos+1]) << 8); + $xpos += 2; + $optionFlags =ord($data[$xpos]); + $xpos++; + $asciiEncoding = (($optionFlags &0x01) == 0) ; + $extendedString = (($optionFlags & 0x04) != 0); + // See if string contains formatting information + $richString = (($optionFlags & 0x08) != 0); + if ($richString) { + // Read in the crun + $formattingRuns =ord($data[$xpos]) | (ord($data[$xpos+1]) << 8); + $xpos += 2; + } + if ($extendedString) { + // Read in cchExtRst + $extendedRunLength =$this->_GetInt4d($this->data, $xpos); + $xpos += 4; + } + $len = ($asciiEncoding)?$numChars : $numChars*2; + $retstr =substr($data, $xpos, $len); + $xpos += $len; + $retstr = ($asciiEncoding)? $retstr : $this->_encodeUTF16($retstr); + } + elseif ($version == SPREADSHEET_EXCEL_READER_BIFF7){ + // Simple byte string + $xpos = $spos; + $numChars =ord($data[$xpos]) | (ord($data[$xpos+1]) << 8); + $xpos += 2; + $retstr =substr($data, $xpos, $numChars); + } + $this->addcell($previousRow, $previousCol, $retstr); + break; + case SPREADSHEET_EXCEL_READER_TYPE_ROW: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $rowInfo = ord($data[$spos + 6]) | ((ord($data[$spos+7]) << 8) & 0x7FFF); + if (($rowInfo & 0x8000) > 0) { + $rowHeight = -1; + } else { + $rowHeight = $rowInfo & 0x7FFF; + } + $rowHidden = (ord($data[$spos + 12]) & 0x20) >> 5; + $this->rowInfo[$this->sn][$row+1] = Array('height' => $rowHeight / 20, 'hidden'=>$rowHidden ); + break; + case SPREADSHEET_EXCEL_READER_TYPE_DBCELL: + break; + case SPREADSHEET_EXCEL_READER_TYPE_MULBLANK: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $cols = ($length / 2) - 3; + for ($c = 0; $c < $cols; $c++) { + $xfindex = ord($data[$spos + 4 + ($c * 2)]) | ord($data[$spos + 5 + ($c * 2)])<<8; + $this->addcell($row, $column + $c, "", array('xfIndex'=>$xfindex)); + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_LABEL: + $row = ord($data[$spos]) | ord($data[$spos+1])<<8; + $column = ord($data[$spos+2]) | ord($data[$spos+3])<<8; + $this->addcell($row, $column, substr($data, $spos + 8, ord($data[$spos + 6]) | ord($data[$spos + 7])<<8)); + break; + case SPREADSHEET_EXCEL_READER_TYPE_EOF: + $cont = false; + break; + case SPREADSHEET_EXCEL_READER_TYPE_HYPER: + // Only handle hyperlinks to a URL + $row = ord($this->data[$spos]) | ord($this->data[$spos+1])<<8; + $row2 = ord($this->data[$spos+2]) | ord($this->data[$spos+3])<<8; + $column = ord($this->data[$spos+4]) | ord($this->data[$spos+5])<<8; + $column2 = ord($this->data[$spos+6]) | ord($this->data[$spos+7])<<8; + $linkdata = Array(); + $flags = ord($this->data[$spos + 28]); + $udesc = ""; + $ulink = ""; + $uloc = 32; + $linkdata['flags'] = $flags; + if (($flags & 1) > 0 ) { // is a type we understand + // is there a description ? + if (($flags & 0x14) == 0x14 ) { // has a description + $uloc += 4; + $descLen = ord($this->data[$spos + 32]) | ord($this->data[$spos + 33]) << 8; + $udesc = substr($this->data, $spos + $uloc, $descLen * 2); + $uloc += 2 * $descLen; + } + $ulink = $this->read16bitstring($this->data, $spos + $uloc + 20); + if ($udesc == "") { + $udesc = $ulink; + } + } + $linkdata['desc'] = $udesc; + $linkdata['link'] = $this->_encodeUTF16($ulink); + for ($r=$row; $r<=$row2; $r++) { + for ($c=$column; $c<=$column2; $c++) { + $this->sheets[$this->sn]['cellsInfo'][$r+1][$c+1]['hyperlink'] = $linkdata; + } + } + break; + case SPREADSHEET_EXCEL_READER_TYPE_DEFCOLWIDTH: + $this->defaultColWidth = ord($data[$spos+4]) | ord($data[$spos+5]) << 8; + break; + case SPREADSHEET_EXCEL_READER_TYPE_STANDARDWIDTH: + $this->standardColWidth = ord($data[$spos+4]) | ord($data[$spos+5]) << 8; + break; + case SPREADSHEET_EXCEL_READER_TYPE_COLINFO: + $colfrom = ord($data[$spos+0]) | ord($data[$spos+1]) << 8; + $colto = ord($data[$spos+2]) | ord($data[$spos+3]) << 8; + $cw = ord($data[$spos+4]) | ord($data[$spos+5]) << 8; + $cxf = ord($data[$spos+6]) | ord($data[$spos+7]) << 8; + $co = ord($data[$spos+8]); + for ($coli = $colfrom; $coli <= $colto; $coli++) { + $this->colInfo[$this->sn][$coli+1] = Array('width' => $cw, 'xf' => $cxf, 'hidden' => ($co & 0x01), 'collapsed' => ($co & 0x1000) >> 12); + } + break; + + default: + break; + } + $spos += $length; + } + + if (!isset($this->sheets[$this->sn]['numRows'])) + $this->sheets[$this->sn]['numRows'] = $this->sheets[$this->sn]['maxrow']; + if (!isset($this->sheets[$this->sn]['numCols'])) + $this->sheets[$this->sn]['numCols'] = $this->sheets[$this->sn]['maxcol']; + } + + function isDate($spos) { + $xfindex = ord($this->data[$spos+4]) | ord($this->data[$spos+5]) << 8; + return ($this->xfRecords[$xfindex]['type'] == 'date'); + } + + // Get the details for a particular cell + function _getCellDetails($spos,$numValue,$column) { + $xfindex = ord($this->data[$spos+4]) | ord($this->data[$spos+5]) << 8; + $xfrecord = $this->xfRecords[$xfindex]; + $type = $xfrecord['type']; + + $format = $xfrecord['format']; + $formatIndex = $xfrecord['formatIndex']; + $fontIndex = $xfrecord['fontIndex']; + $formatColor = ""; + $rectype = ''; + $string = ''; + $raw = ''; + + if (isset($this->_columnsFormat[$column + 1])){ + $format = $this->_columnsFormat[$column + 1]; + } + + if ($type == 'date') { + // See http://groups.google.com/group/php-excel-reader-discuss/browse_frm/thread/9c3f9790d12d8e10/f2045c2369ac79de + $rectype = 'date'; + // Convert numeric value into a date + $utcDays = floor($numValue - ($this->nineteenFour ? SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904 : SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS)); + $utcValue = ($utcDays) * SPREADSHEET_EXCEL_READER_MSINADAY; + $dateinfo = gmgetdate($utcValue); + + $raw = $numValue; + $fractionalDay = $numValue - floor($numValue) + .0000001; // The .0000001 is to fix for php/excel fractional diffs + + $totalseconds = floor(SPREADSHEET_EXCEL_READER_MSINADAY * $fractionalDay); + $secs = $totalseconds % 60; + $totalseconds -= $secs; + $hours = floor($totalseconds / (60 * 60)); + $mins = floor($totalseconds / 60) % 60; + $string = date ($format, mktime($hours, $mins, $secs, $dateinfo["mon"], $dateinfo["mday"], $dateinfo["year"])); + } else if ($type == 'number') { + $rectype = 'number'; + $formatted = $this->_format_value($format, $numValue, $formatIndex); + $string = $formatted['string']; + $formatColor = $formatted['formatColor']; + $raw = $numValue; + } else{ + if ($format=="") { + $format = $this->_defaultFormat; + } + $rectype = 'unknown'; + $formatted = $this->_format_value($format, $numValue, $formatIndex); + $string = $formatted['string']; + $formatColor = $formatted['formatColor']; + $raw = $numValue; + } + + return array( + 'string'=>$string, + 'raw'=>$raw, + 'rectype'=>$rectype, + 'format'=>$format, + 'formatIndex'=>$formatIndex, + 'fontIndex'=>$fontIndex, + 'formatColor'=>$formatColor, + 'xfIndex'=>$xfindex + ); + + } + + + function createNumber($spos) { + $rknumhigh = $this->_GetInt4d($this->data, $spos + 10); + $rknumlow = $this->_GetInt4d($this->data, $spos + 6); + $sign = ($rknumhigh & 0x80000000) >> 31; + $exp = ($rknumhigh & 0x7ff00000) >> 20; + $mantissa = (0x100000 | ($rknumhigh & 0x000fffff)); + $mantissalow1 = ($rknumlow & 0x80000000) >> 31; + $mantissalow2 = ($rknumlow & 0x7fffffff); + $value = $mantissa / pow( 2 , (20- ($exp - 1023))); + if ($mantissalow1 != 0) $value += 1 / pow (2 , (21 - ($exp - 1023))); + $value += $mantissalow2 / pow (2 , (52 - ($exp - 1023))); + if ($sign) {$value = -1 * $value;} + return $value; + } + + function addcell($row, $col, $string, $info=null) { + $this->sheets[$this->sn]['maxrow'] = max($this->sheets[$this->sn]['maxrow'], $row + $this->_rowoffset); + $this->sheets[$this->sn]['maxcol'] = max($this->sheets[$this->sn]['maxcol'], $col + $this->_coloffset); + $this->sheets[$this->sn]['cells'][$row + $this->_rowoffset][$col + $this->_coloffset] = $string; + if ($this->store_extended_info && $info) { + foreach ($info as $key=>$val) { + $this->sheets[$this->sn]['cellsInfo'][$row + $this->_rowoffset][$col + $this->_coloffset][$key] = $val; + } + } + } + + + function _GetIEEE754($rknum) { + if (($rknum & 0x02) != 0) { + $value = $rknum >> 2; + } else { + //mmp + // I got my info on IEEE754 encoding from + // http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html + // The RK format calls for using only the most significant 30 bits of the + // 64 bit floating point value. The other 34 bits are assumed to be 0 + // So, we use the upper 30 bits of $rknum as follows... + $sign = ($rknum & 0x80000000) >> 31; + $exp = ($rknum & 0x7ff00000) >> 20; + $mantissa = (0x100000 | ($rknum & 0x000ffffc)); + $value = $mantissa / pow( 2 , (20- ($exp - 1023))); + if ($sign) { + $value = -1 * $value; + } + //end of changes by mmp + } + if (($rknum & 0x01) != 0) { + $value /= 100; + } + return $value; + } + + function _encodeUTF16($string) { + $result = $string; + if ($this->_defaultEncoding){ + switch ($this->_encoderFunction){ + case 'iconv' : $result = iconv('UTF-16LE', $this->_defaultEncoding, $string); + break; + case 'mb_convert_encoding' : $result = mb_convert_encoding($string, $this->_defaultEncoding, 'UTF-16LE' ); + break; + } + } + return $result; + } + + function _GetInt4d($data, $pos) { + $value = ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); + if ($value>=4294967294) { + $value=-2; + } + return $value; + } + +} + +?> diff --git a/app/master/pegawai/import.php b/app/master/pegawai/import.php new file mode 100644 index 0000000..09eb253 --- /dev/null +++ b/app/master/pegawai/import.php @@ -0,0 +1,75 @@ +rowcount($sheet_index=0); + +// import data excel mulai baris ke-2 (karena tabel xls ada header pada baris 1) + for ($i=2; $i<=$baris; $i++) + { + $n=$data->val($i, 2); + if (($n=='') || ($n==NULL)) {} else { +// membaca data (kolom ke-1 sd terakhir) + + +// import satker + /*$nama = $data->val($i, 2); + $impegawai = pg_query("INSERT into satuan_kerja (nama) values ('$nama')"); */ + +// import jabatan baru + /* $nama = $data->val($i, 2); + $impegawai = pg_query("INSERT into jabatan_pegawai (nama) values ('$nama')"); */ + +// import tenaga + /* $nama = $data->val($i, 2); + $impegawai = pg_query("INSERT into tenaga (nama) values ('$nama')");*/ + +// import tenaga2 + /* $nama = $data->val($i, 2); + $impegawai = pg_query("INSERT into tenaga2 (nama) values ('$nama')"); */ + + +// import pegawai + $id = $data->val($i, 1); + $nama2 = $data->val($i, 2); + $nam2 = $data->val($i, 3); + $nipb2 = $data->val($i, 4); + $golongan = $data->val($i, 5); + $ruang = $data->val($i, 6); + $gelar_d = $data->val($i, 7); + $gelar_b = $data->val($i, 8); + $satuan_kerja = $data->val($i, 9); + $pendidikan = $data->val($i, 10); + $jabatan_pegawai_id = $data->val($i, 11); + $tenaga_id = $data->val($i, 12); + $tenaga2_id = $data->val($i, 13); + $hp = $data->val($i, 14); + $jenis_kelamin = $data->val($i, 15); + + $nama=str_replace("'", "", $nama2); + $nam=str_replace("'", "", $nam2); + $nipb=str_replace(' ', '', $nipb2); + + $impegawai = "INSERT into data_pegawai (id,nama,nam,nipb,golongan,ruang,gelar_d,gelar_b,satuan_kerja,pendidikan,jabatan_pegawai_id, + tenaga_id,tenaga2_id,hp,jenis_kelamin, + aktif,created_at,modified_at) + values ('$id','$nama','$nam','$nipb','$golongan','$ruang','$gelar_d','$gelar_b','$satuan_kerja','$pendidikan','$jabatan_pegawai_id', + '$tenaga_id','$tenaga2_id','$hp','$jenis_kelamin', + '1',NOW(),NOW() + )"; + $hasil_impegawai = pg_query($impegawai); + + } + } + +// hapus file xls yang udah dibaca +// unlink($_FILES['input_load_impegawai']['name']); +?> diff --git a/app/master/pegawai/main.php b/app/master/pegawai/main.php new file mode 100644 index 0000000..9a0e5f8 --- /dev/null +++ b/app/master/pegawai/main.php @@ -0,0 +1,208 @@ + + + + + +
+
+ +
+
+
+
+
+ + +
+
+ +
+ + + + +
+
+
+
+ + +
+ + + + + + + + + + \ No newline at end of file diff --git a/app/master/pegawai/modal.php b/app/master/pegawai/modal.php new file mode 100644 index 0000000..bd35b9d --- /dev/null +++ b/app/master/pegawai/modal.php @@ -0,0 +1,115 @@ + + + +
+
+ + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/app/master/pegawai/tabel.php b/app/master/pegawai/tabel.php new file mode 100644 index 0000000..ca113d6 --- /dev/null +++ b/app/master/pegawai/tabel.php @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamaNIPGolSexSatkerJabAktifTools
+ + +
+ + + diff --git a/app/master/satker/crud.php b/app/master/satker/crud.php new file mode 100644 index 0000000..c3a4386 --- /dev/null +++ b/app/master/satker/crud.php @@ -0,0 +1,28 @@ + 0) { + $upd_satker = pg_query("UPDATE satuan_kerja SET + nama='$nama' + WHERE id='$id'"); + } else { + $ins_satker = pg_query("INSERT into satuan_kerja ( + nama + ) values( + '$nama' + ) + "); + } +} else +if ($key=='delete_satker') { +$id=$_POST['id']; + $del_satker = pg_query("DELETE FROM satuan_kerja WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/master/satker/main.php b/app/master/satker/main.php new file mode 100644 index 0000000..e398466 --- /dev/null +++ b/app/master/satker/main.php @@ -0,0 +1,77 @@ + + +
+
+ +
+
+ +
+ +
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/app/master/satker/modal.php b/app/master/satker/modal.php new file mode 100644 index 0000000..ca6513e --- /dev/null +++ b/app/master/satker/modal.php @@ -0,0 +1,18 @@ + + + +
+
+ + + +
+
diff --git a/app/master/satker/tabel.php b/app/master/satker/tabel.php new file mode 100644 index 0000000..7e7b640 --- /dev/null +++ b/app/master/satker/tabel.php @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + +
IDSatuan KerjaTools
+ + +
+ + + + + diff --git a/app/master/user/crud.php b/app/master/user/crud.php new file mode 100644 index 0000000..b474eb9 --- /dev/null +++ b/app/master/user/crud.php @@ -0,0 +1,106 @@ + 0) { + if (($data_pegawai_id=='') || ($data_pegawai_id==NULL)) { + $upd_user = pg_query("UPDATE data_user SET + nama='$username', + password='$password', + jenis_user='$jenis', + aktif='$aktif', + satuan_kerja_id='$satuan_kerja_id', + modified_at=NOW() + WHERE id='$id'"); + } else { + $upd_user = pg_query("UPDATE data_user SET + nama='$username', + password='$password', + jenis_user='$jenis', + aktif='$aktif', + modified_at=NOW() + WHERE id='$id'"); + } + } else { + if (($data_pegawai_id=='') || ($data_pegawai_id==NULL)) { + $ins_user = pg_query("INSERT into data_user ( + nama, + password, + jenis_user, + aktif, + created_at, + modified_at, + satuan_kerja_id + ) values( + '$username', + '$password', + '$jenis', + '$aktif', + NOW(), + NOW(), + '$satuan_kerja_id' + )"); + } else { + $ins_user = pg_query("INSERT into data_user ( + nama, + password, + jenis_user, + aktif, + created_at, + modified_at, + data_pegawai_id + ) values( + '$username', + '$password', + '$jenis', + '$aktif', + NOW(), + NOW(), + $data_pegawai_id + )"); + } + } +} else +if ($key=='list_peserta') { +$id_ms_pegawai=$_POST['id_ms_pegawai']; +$list=pg_query("SELECT p.nipb,s.nama FROM data_pegawai p INNER JOIN satuan_kerja s ON (s.id=p.satuan_kerja) WHERE p.id='$id_ms_pegawai'"); +while($rlist=pg_fetch_array($list)) { + $nipb=$rlist[0]; + $satuan_kerja=$rlist[1]; + echo $nipb.'$%^'.$satuan_kerja; +} +} else +if ($key=='delete_user') { +$id=$_POST['id']; + $del_user = pg_query("DELETE FROM data_user WHERE id='$id'"); +} else +if ($key=='ganti_password') { + $nampeg=$_POST['nampeg']; + $d=pg_query("SELECT id FROM data_pegawai WHERE nama='$nampeg'"); + while($r=pg_fetch_array($d)) {$data_pegawai_id=$r[0];} + $baru=$_POST['baru']; + $gp=pg_query("UPDATE data_user SET password='$baru' WHERE data_pegawai_id='$data_pegawai_id'"); +} else +if ($key=='ganti_userlogin') { + $nampeg=$_POST['nampeg']; + $d=pg_query("SELECT id FROM data_pegawai WHERE nama='$nampeg'"); + while($r=pg_fetch_array($d)) {$data_pegawai_id=$r[0];} + $baru=$_POST['baru']; + $gp=pg_query("UPDATE data_user SET nama='$baru' WHERE data_pegawai_id='$data_pegawai_id'"); +} + + + + +?> \ No newline at end of file diff --git a/app/master/user/main.php b/app/master/user/main.php new file mode 100644 index 0000000..2ed03c2 --- /dev/null +++ b/app/master/user/main.php @@ -0,0 +1,93 @@ +
+
+ +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/app/master/user/modal.php b/app/master/user/modal.php new file mode 100644 index 0000000..56e439a --- /dev/null +++ b/app/master/user/modal.php @@ -0,0 +1,153 @@ + + + +
+
+ + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + \ No newline at end of file diff --git a/app/master/user/tabel.php b/app/master/user/tabel.php new file mode 100644 index 0000000..110b3c8 --- /dev/null +++ b/app/master/user/tabel.php @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoNamaSatkerUsernamePasswordJenisAktifTools
+ + + + +
+ + + + + diff --git a/app/pel_inbox/crud.php b/app/pel_inbox/crud.php new file mode 100644 index 0000000..975a40b --- /dev/null +++ b/app/pel_inbox/crud.php @@ -0,0 +1,105 @@ + \ No newline at end of file diff --git a/app/pel_inbox/excel.php b/app/pel_inbox/excel.php new file mode 100644 index 0000000..caf14e6 --- /dev/null +++ b/app/pel_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_pel i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_pelatihan.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/pel_inbox/main.php b/app/pel_inbox/main.php new file mode 100644 index 0000000..79ee449 --- /dev/null +++ b/app/pel_inbox/main.php @@ -0,0 +1,170 @@ + +
+
+
+
+

Inbox Pelatihan

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/pel_inbox/modal_edit_verifikasi.php b/app/pel_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..05377fb --- /dev/null +++ b/app/pel_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/pel_inbox/modal_verifikasi.php b/app/pel_inbox/modal_verifikasi.php new file mode 100644 index 0000000..5a2ee69 --- /dev/null +++ b/app/pel_inbox/modal_verifikasi.php @@ -0,0 +1,246 @@ + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Pelatihan
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+ +
+
+ +
+ + + +
+

+ +
+
+ +
+ + \ No newline at end of file diff --git a/app/pel_inbox/modal_view.php b/app/pel_inbox/modal_view.php new file mode 100644 index 0000000..065b97b --- /dev/null +++ b/app/pel_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/pel_inbox/pdf_bkd/.htaccess b/app/pel_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/pel_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/pel_inbox/pdf_bkd/crud.php b/app/pel_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..cce2d1c --- /dev/null +++ b/app/pel_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/pel_inbox/pdf_bkd/pdf/325_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg b/app/pel_inbox/pdf_bkd/pdf/325_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg new file mode 100644 index 0000000..8bc4691 Binary files /dev/null and b/app/pel_inbox/pdf_bkd/pdf/325_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg differ diff --git a/app/pel_inbox/pdf_bkd/tabel_upl_cv.php b/app/pel_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..6a44f4f --- /dev/null +++ b/app/pel_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/pel_inbox/pdf_bkd/upl_cv.php b/app/pel_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..2b50b0f --- /dev/null +++ b/app/pel_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/pel_inbox/pdf_dir/.htaccess b/app/pel_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/pel_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/pel_inbox/pdf_dir/crud.php b/app/pel_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..f03e224 --- /dev/null +++ b/app/pel_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/pel_inbox/pdf_dir/tabel_upl_cv.php b/app/pel_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..d0de975 --- /dev/null +++ b/app/pel_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/pel_inbox/pdf_dir/upl_cv.php b/app/pel_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..bc990c1 --- /dev/null +++ b/app/pel_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/pel_inbox/pdf_pasca/.htaccess b/app/pel_inbox/pdf_pasca/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/pel_inbox/pdf_pasca/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/pel_inbox/pdf_pasca/crud.php b/app/pel_inbox/pdf_pasca/crud.php new file mode 100644 index 0000000..f75b768 --- /dev/null +++ b/app/pel_inbox/pdf_pasca/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/pel_inbox/pdf_pasca/pdf/197_Pelatihan PPI UTDRS 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/197_Pelatihan PPI UTDRS 5 orang.jpeg new file mode 100644 index 0000000..4d453eb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/197_Pelatihan PPI UTDRS 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/233_Pelatihan PPI UTDRS 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/233_Pelatihan PPI UTDRS 5 orang.jpeg new file mode 100644 index 0000000..4d453eb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/233_Pelatihan PPI UTDRS 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/279_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg b/app/pel_inbox/pdf_pasca/pdf/279_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg new file mode 100644 index 0000000..860abeb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/279_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/280_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg b/app/pel_inbox/pdf_pasca/pdf/280_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg new file mode 100644 index 0000000..860abeb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/280_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/281_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg b/app/pel_inbox/pdf_pasca/pdf/281_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg new file mode 100644 index 0000000..860abeb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/281_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/282_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg b/app/pel_inbox/pdf_pasca/pdf/282_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg new file mode 100644 index 0000000..860abeb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/282_Bukti Transfer Biaya Studi Banding RSUD Dr. Soetomo.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/284_Workshop Rekam Medis.jpeg b/app/pel_inbox/pdf_pasca/pdf/284_Workshop Rekam Medis.jpeg new file mode 100644 index 0000000..9a68f3e Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/284_Workshop Rekam Medis.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/286_Workshop Rekam Medis.jpeg b/app/pel_inbox/pdf_pasca/pdf/286_Workshop Rekam Medis.jpeg new file mode 100644 index 0000000..9a68f3e Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/286_Workshop Rekam Medis.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/322_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/322_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg new file mode 100644 index 0000000..762a1c2 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/322_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/323_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/323_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg new file mode 100644 index 0000000..762a1c2 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/323_Workshop Implementasi PMKP tgl 26-27 Feb 2024 a.n Sariati dkk 2 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/341_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg b/app/pel_inbox/pdf_pasca/pdf/341_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg new file mode 100644 index 0000000..34150af Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/341_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/342_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg b/app/pel_inbox/pdf_pasca/pdf/342_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg new file mode 100644 index 0000000..1ab4286 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/342_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/346_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg b/app/pel_inbox/pdf_pasca/pdf/346_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg new file mode 100644 index 0000000..1ab4286 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/346_Bukti Bayar Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/349_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg b/app/pel_inbox/pdf_pasca/pdf/349_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg new file mode 100644 index 0000000..461db5a Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/349_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/350_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg b/app/pel_inbox/pdf_pasca/pdf/350_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg new file mode 100644 index 0000000..461db5a Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/350_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/359_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg b/app/pel_inbox/pdf_pasca/pdf/359_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg new file mode 100644 index 0000000..461db5a Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/359_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/360_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg b/app/pel_inbox/pdf_pasca/pdf/360_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg new file mode 100644 index 0000000..461db5a Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/360_Studi Banding tim HTA di RSUP Dr. Sardjito.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/361_Pelatihan PPI UTDRS 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/361_Pelatihan PPI UTDRS 5 orang.jpeg new file mode 100644 index 0000000..4d453eb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/361_Pelatihan PPI UTDRS 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/366_Pelatihan PPI UTDRS 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/366_Pelatihan PPI UTDRS 5 orang.jpeg new file mode 100644 index 0000000..4d453eb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/366_Pelatihan PPI UTDRS 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/367_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg b/app/pel_inbox/pdf_pasca/pdf/367_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg new file mode 100644 index 0000000..34150af Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/367_Studi Banding Tim Nyeri ke RSUD Ciawi Bogor.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/368_Pelatihan PPI UTDRS 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/368_Pelatihan PPI UTDRS 5 orang.jpeg new file mode 100644 index 0000000..4d453eb Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/368_Pelatihan PPI UTDRS 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/383_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/383_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg new file mode 100644 index 0000000..8bc4691 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/383_Workshop Sertifikasi Halal tgl 28-29 Feb 2024 a.n Ida Restyani dkk 2 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/422_Pelatihan Manajemen Casemix a.n dr.Dyah Ayu Fahmi dkk 2 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/422_Pelatihan Manajemen Casemix a.n dr.Dyah Ayu Fahmi dkk 2 orang.jpeg new file mode 100644 index 0000000..d422e4f Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/422_Pelatihan Manajemen Casemix a.n dr.Dyah Ayu Fahmi dkk 2 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/525_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/525_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg new file mode 100644 index 0000000..4842768 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/525_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/526_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/526_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg new file mode 100644 index 0000000..4842768 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/526_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/527_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/527_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg new file mode 100644 index 0000000..4842768 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/527_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/529_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/529_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg new file mode 100644 index 0000000..4842768 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/529_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/pdf/532_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg b/app/pel_inbox/pdf_pasca/pdf/532_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg new file mode 100644 index 0000000..4842768 Binary files /dev/null and b/app/pel_inbox/pdf_pasca/pdf/532_Bimtek Klaim JKN a.n dr.Debby Shintiya dkk 5 orang.jpeg differ diff --git a/app/pel_inbox/pdf_pasca/tabel_upl_cv.php b/app/pel_inbox/pdf_pasca/tabel_upl_cv.php new file mode 100644 index 0000000..af865c4 --- /dev/null +++ b/app/pel_inbox/pdf_pasca/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/pel_inbox/pdf_pasca/upl_cv.php b/app/pel_inbox/pdf_pasca/upl_cv.php new file mode 100644 index 0000000..e86578c --- /dev/null +++ b/app/pel_inbox/pdf_pasca/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/pel_inbox/tabel.php b/app/pel_inbox/tabel.php new file mode 100644 index 0000000..b6124e8 --- /dev/null +++ b/app/pel_inbox/tabel.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/pel_inbox/tabel_verifikasi.php b/app/pel_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..230fd99 --- /dev/null +++ b/app/pel_inbox/tabel_verifikasi.php @@ -0,0 +1,150 @@ + + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGANTOOLS
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/pel_setting/crud.php b/app/pel_setting/crud.php new file mode 100644 index 0000000..0cf4197 --- /dev/null +++ b/app/pel_setting/crud.php @@ -0,0 +1,32 @@ + 0) { + $upd_pel_setting = pg_query("UPDATE syarat_pel SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_pel_setting = pg_query("INSERT into syarat_pel ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_pel_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_pel WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_pel_setting = pg_query("DELETE FROM syarat_pel WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/pel_setting/main.php b/app/pel_setting/main.php new file mode 100644 index 0000000..d6eb406 --- /dev/null +++ b/app/pel_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Pelatihan

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/pel_setting/modal.php b/app/pel_setting/modal.php new file mode 100644 index 0000000..f14822e --- /dev/null +++ b/app/pel_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/pel_setting/pdf/.htaccess b/app/pel_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/pel_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/pel_setting/pdf/crud.php b/app/pel_setting/pdf/crud.php new file mode 100644 index 0000000..9f01f02 --- /dev/null +++ b/app/pel_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/pel_setting/pdf/tabel_upl_cv.php b/app/pel_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..61c78e6 --- /dev/null +++ b/app/pel_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/pel_setting/pdf/upl_cv.php b/app/pel_setting/pdf/upl_cv.php new file mode 100644 index 0000000..a8232e8 --- /dev/null +++ b/app/pel_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/pel_setting/tabel.php b/app/pel_setting/tabel.php new file mode 100644 index 0000000..a64b994 --- /dev/null +++ b/app/pel_setting/tabel.php @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#Tools
+ + + + +
+ + + + + diff --git a/app/pel_setting/upd_file.php b/app/pel_setting/upd_file.php new file mode 100644 index 0000000..e17a1d0 --- /dev/null +++ b/app/pel_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/persiapan/crud.php b/app/persiapan/crud.php new file mode 100644 index 0000000..41c9832 --- /dev/null +++ b/app/persiapan/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/persiapan/main.php b/app/persiapan/main.php new file mode 100644 index 0000000..fa53a12 --- /dev/null +++ b/app/persiapan/main.php @@ -0,0 +1,32 @@ + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/app/persiapan/materi/.htaccess b/app/persiapan/materi/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/persiapan/materi/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/persiapan/materi/crud.php b/app/persiapan/materi/crud.php new file mode 100644 index 0000000..1d7040f --- /dev/null +++ b/app/persiapan/materi/crud.php @@ -0,0 +1,38 @@ + 0) { + $upd_add = pg_query("UPDATE riwayat_materi SET + materi='$materi', + keterangan='$keterangan' + WHERE id='$id'"); + } else { + $ins_add = pg_query("INSERT into riwayat_materi ( + riwayat_kegiatan_id, + materi, + keterangan + ) values( + '$riwayat_kegiatan_id', + '$materi', + '$keterangan' + ) + "); + } +} else +if ($key=='hapus_data') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_materi WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/persiapan/materi/main.php b/app/persiapan/materi/main.php new file mode 100644 index 0000000..ea4ed4a --- /dev/null +++ b/app/persiapan/materi/main.php @@ -0,0 +1,156 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+
+
+ + + +
+
+
+ + + + + \ No newline at end of file diff --git a/app/persiapan/materi/modal.php b/app/persiapan/materi/modal.php new file mode 100644 index 0000000..677151b --- /dev/null +++ b/app/persiapan/materi/modal.php @@ -0,0 +1,39 @@ + + + +
+ + +
+ + +
+ +
+ + +
+
\ No newline at end of file diff --git a/app/persiapan/materi/tabel.php b/app/persiapan/materi/tabel.php new file mode 100644 index 0000000..b0acf36 --- /dev/null +++ b/app/persiapan/materi/tabel.php @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + +
JenisKeteranganTools
+ + +
+ + diff --git a/app/persiapan/materi/tabel_upl_cv.php b/app/persiapan/materi/tabel_upl_cv.php new file mode 100644 index 0000000..8b973df --- /dev/null +++ b/app/persiapan/materi/tabel_upl_cv.php @@ -0,0 +1,47 @@ + + + +
+ + +
+ + + \ No newline at end of file diff --git a/app/persiapan/materi/upl_cv.php b/app/persiapan/materi/upl_cv.php new file mode 100644 index 0000000..e9ff3be --- /dev/null +++ b/app/persiapan/materi/upl_cv.php @@ -0,0 +1,15 @@ + + + diff --git a/app/persiapan/mentor/crud.php b/app/persiapan/mentor/crud.php new file mode 100644 index 0000000..e058b21 --- /dev/null +++ b/app/persiapan/mentor/crud.php @@ -0,0 +1,70 @@ + 0) { + $upd_add = pg_query("UPDATE riwayat_peserta SET + data_pegawai_id='$data_pegawai_id', + sebagai_id='$sebagai_id', + satuan_kerja_id='$satuan_kerja_id', + status_mentor='Pending', + tenaga_id='$tenaga_id', + tenaga2_id='$tenaga2_id' + WHERE id='$id'"); + } else { + $ins_add = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + satuan_kerja_id, + status_mentor, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$data_pegawai_id', + '$sebagai_id', + '$satuan_kerja_id', + 'Pending', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} else +if ($key=='hapus_data') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/persiapan/mentor/main.php b/app/persiapan/mentor/main.php new file mode 100644 index 0000000..0f3eff3 --- /dev/null +++ b/app/persiapan/mentor/main.php @@ -0,0 +1,144 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/app/persiapan/mentor/modal.php b/app/persiapan/mentor/modal.php new file mode 100644 index 0000000..7f30e4e --- /dev/null +++ b/app/persiapan/mentor/modal.php @@ -0,0 +1,70 @@ + + + +
+ + + +
+ + +
+ + + +
+ + + + + + + + + + +
+
\ No newline at end of file diff --git a/app/persiapan/mentor/modal_nd1.php b/app/persiapan/mentor/modal_nd1.php new file mode 100644 index 0000000..98f03e1 --- /dev/null +++ b/app/persiapan/mentor/modal_nd1.php @@ -0,0 +1,65 @@ + + + + +
+
+ + + +
+
+ + "> +
+ +
+ diff --git a/app/persiapan/mentor/tabel.php b/app/persiapan/mentor/tabel.php new file mode 100644 index 0000000..0ec68aa --- /dev/null +++ b/app/persiapan/mentor/tabel.php @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama MentorSatuan KerjaJabSebagaiNota DinasStatusTools
+ + TERKIRIM + + + + + +
+ + diff --git a/app/persiapan/panitia/crud.php b/app/persiapan/panitia/crud.php new file mode 100644 index 0000000..2c110c4 --- /dev/null +++ b/app/persiapan/panitia/crud.php @@ -0,0 +1,51 @@ + 0) { + $upd_add = pg_query("UPDATE riwayat_peserta SET + data_pegawai_id='$data_pegawai_id', + sebagai_id='$sebagai_id', + satuan_kerja_id='$satuan_kerja_id', + status='Ready', + tenaga_id='$tenaga_id', + tenaga2_id='$tenaga2_id' + WHERE id='$id'"); + } else { + $ins_add = pg_query("INSERT into riwayat_peserta ( + riwayat_kegiatan_id, + data_pegawai_id, + sebagai_id, + satuan_kerja_id, + status, + tenaga_id, + tenaga2_id + ) values( + '$riwayat_kegiatan_id', + '$data_pegawai_id', + '$sebagai_id', + '$satuan_kerja_id', + 'Ready', + '$tenaga_id', + '$tenaga2_id' + ) + "); + } +} else +if ($key=='hapus_data') { + $id=$_POST['id']; + $del=pg_query("DELETE FROM riwayat_peserta WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/persiapan/panitia/main.php b/app/persiapan/panitia/main.php new file mode 100644 index 0000000..9a19f62 --- /dev/null +++ b/app/persiapan/panitia/main.php @@ -0,0 +1,105 @@ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + +
+
+ +
+ + + + + \ No newline at end of file diff --git a/app/persiapan/panitia/modal.php b/app/persiapan/panitia/modal.php new file mode 100644 index 0000000..2156f80 --- /dev/null +++ b/app/persiapan/panitia/modal.php @@ -0,0 +1,70 @@ + + + +
+ + + +
+ + +
+ + + +
+ + + + + + + + + + +
+
\ No newline at end of file diff --git a/app/persiapan/panitia/tabel.php b/app/persiapan/panitia/tabel.php new file mode 100644 index 0000000..7c3829e --- /dev/null +++ b/app/persiapan/panitia/tabel.php @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nama PanitiaSatuan KerjaGolSexJabSebagaiStatusTools
+ + +
+ + diff --git a/app/persiapan/peserta/!SPT.doc b/app/persiapan/peserta/!SPT.doc new file mode 100644 index 0000000..90443e5 Binary files /dev/null and b/app/persiapan/peserta/!SPT.doc differ diff --git a/app/persiapan/peserta/!UNDANGAN.doc b/app/persiapan/peserta/!UNDANGAN.doc new file mode 100644 index 0000000..ae243a2 Binary files /dev/null and b/app/persiapan/peserta/!UNDANGAN.doc differ diff --git a/app/persiapan/peserta/crud.php b/app/persiapan/peserta/crud.php new file mode 100644 index 0000000..2822981 --- /dev/null +++ b/app/persiapan/peserta/crud.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/app/persiapan/peserta/main.php b/app/persiapan/peserta/main.php new file mode 100644 index 0000000..3f61543 --- /dev/null +++ b/app/persiapan/peserta/main.php @@ -0,0 +1,112 @@ + + + + + + + + +
+
+
+
+ + + + + +
+
+

+
+ +

+
+
+
+ + + + +    +
+ + + + + +
+ + + +
+ + + + + + + + \ No newline at end of file diff --git a/app/persiapan/tabel.php b/app/persiapan/tabel.php new file mode 100644 index 0000000..7338c89 --- /dev/null +++ b/app/persiapan/tabel.php @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JenisNama KegiatanTanggalPukulTempatPenyelenggaraStatusPesertaMentor
Tools
+ + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/app/ship_inbox/crud.php b/app/ship_inbox/crud.php new file mode 100644 index 0000000..5ba8d34 --- /dev/null +++ b/app/ship_inbox/crud.php @@ -0,0 +1,101 @@ + \ No newline at end of file diff --git a/app/ship_inbox/excel.php b/app/ship_inbox/excel.php new file mode 100644 index 0000000..eb5ab82 --- /dev/null +++ b/app/ship_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_ship i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_fellowship.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/ship_inbox/main.php b/app/ship_inbox/main.php new file mode 100644 index 0000000..877c5ea --- /dev/null +++ b/app/ship_inbox/main.php @@ -0,0 +1,170 @@ + +
+
+
+
+

Inbox Fellowship

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/ship_inbox/modal_edit_verifikasi.php b/app/ship_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..7a5ca23 --- /dev/null +++ b/app/ship_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/ship_inbox/modal_verifikasi.php b/app/ship_inbox/modal_verifikasi.php new file mode 100644 index 0000000..da6866a --- /dev/null +++ b/app/ship_inbox/modal_verifikasi.php @@ -0,0 +1,197 @@ + + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Fellowship
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/ship_inbox/modal_view.php b/app/ship_inbox/modal_view.php new file mode 100644 index 0000000..cfc6699 --- /dev/null +++ b/app/ship_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/ship_inbox/pdf_bkd/.htaccess b/app/ship_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/ship_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/ship_inbox/pdf_bkd/crud.php b/app/ship_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..7cdb4eb --- /dev/null +++ b/app/ship_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/ship_inbox/pdf_bkd/tabel_upl_cv.php b/app/ship_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..5ceae8b --- /dev/null +++ b/app/ship_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/ship_inbox/pdf_bkd/upl_cv.php b/app/ship_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..ffd73c7 --- /dev/null +++ b/app/ship_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/ship_inbox/pdf_dir/.htaccess b/app/ship_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/ship_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/ship_inbox/pdf_dir/crud.php b/app/ship_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..b64badd --- /dev/null +++ b/app/ship_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/ship_inbox/pdf_dir/tabel_upl_cv.php b/app/ship_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..aaaecc5 --- /dev/null +++ b/app/ship_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/ship_inbox/pdf_dir/upl_cv.php b/app/ship_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..0fb9343 --- /dev/null +++ b/app/ship_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/ship_inbox/tabel.php b/app/ship_inbox/tabel.php new file mode 100644 index 0000000..01eb869 --- /dev/null +++ b/app/ship_inbox/tabel.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/ship_inbox/tabel_verifikasi.php b/app/ship_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..a267c54 --- /dev/null +++ b/app/ship_inbox/tabel_verifikasi.php @@ -0,0 +1,179 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGAN + +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/ship_setting/crud.php b/app/ship_setting/crud.php new file mode 100644 index 0000000..f88ed07 --- /dev/null +++ b/app/ship_setting/crud.php @@ -0,0 +1,43 @@ + 0) { + $upd_ship_setting = pg_query("UPDATE syarat_ship SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_ship_setting = pg_query("INSERT into syarat_ship ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_ship_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_ship WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_ship_setting = pg_query("DELETE FROM syarat_ship WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/ship_setting/main.php b/app/ship_setting/main.php new file mode 100644 index 0000000..448857c --- /dev/null +++ b/app/ship_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Fellowship

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/ship_setting/modal.php b/app/ship_setting/modal.php new file mode 100644 index 0000000..1032f8b --- /dev/null +++ b/app/ship_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/ship_setting/pdf/.htaccess b/app/ship_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/ship_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/ship_setting/pdf/crud.php b/app/ship_setting/pdf/crud.php new file mode 100644 index 0000000..cfd6742 --- /dev/null +++ b/app/ship_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/ship_setting/pdf/tabel_upl_cv.php b/app/ship_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..b799a27 --- /dev/null +++ b/app/ship_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/ship_setting/pdf/upl_cv.php b/app/ship_setting/pdf/upl_cv.php new file mode 100644 index 0000000..4b7530d --- /dev/null +++ b/app/ship_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/ship_setting/tabel.php b/app/ship_setting/tabel.php new file mode 100644 index 0000000..ea3e363 --- /dev/null +++ b/app/ship_setting/tabel.php @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#DALAM NEGERILUAR NEGERITools
+ + + + +
+ + + + + diff --git a/app/ship_setting/upd_file.php b/app/ship_setting/upd_file.php new file mode 100644 index 0000000..b5e8120 --- /dev/null +++ b/app/ship_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/spo_inbox/crud.php b/app/spo_inbox/crud.php new file mode 100644 index 0000000..9816c10 --- /dev/null +++ b/app/spo_inbox/crud.php @@ -0,0 +1,98 @@ + \ No newline at end of file diff --git a/app/spo_inbox/excel.php b/app/spo_inbox/excel.php new file mode 100644 index 0000000..76d2bba --- /dev/null +++ b/app/spo_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_spo i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_sponsorship.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/spo_inbox/main.php b/app/spo_inbox/main.php new file mode 100644 index 0000000..423caa6 --- /dev/null +++ b/app/spo_inbox/main.php @@ -0,0 +1,171 @@ + +
+
+
+
+

Inbox Sponsorship

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/spo_inbox/modal_edit_verifikasi.php b/app/spo_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..07d94c5 --- /dev/null +++ b/app/spo_inbox/modal_edit_verifikasi.php @@ -0,0 +1,99 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/spo_inbox/modal_verifikasi.php b/app/spo_inbox/modal_verifikasi.php new file mode 100644 index 0000000..acd1c73 --- /dev/null +++ b/app/spo_inbox/modal_verifikasi.php @@ -0,0 +1,197 @@ + + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Sponsorship
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/spo_inbox/modal_view.php b/app/spo_inbox/modal_view.php new file mode 100644 index 0000000..b1bc44c --- /dev/null +++ b/app/spo_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/spo_inbox/pdf_bkd/.htaccess b/app/spo_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/spo_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/spo_inbox/pdf_bkd/crud.php b/app/spo_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..31c33f5 --- /dev/null +++ b/app/spo_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/spo_inbox/pdf_bkd/tabel_upl_cv.php b/app/spo_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..f6f71ec --- /dev/null +++ b/app/spo_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/spo_inbox/pdf_bkd/upl_cv.php b/app/spo_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..43a1d48 --- /dev/null +++ b/app/spo_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/spo_inbox/pdf_dir/.htaccess b/app/spo_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/spo_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/spo_inbox/pdf_dir/crud.php b/app/spo_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..263e652 --- /dev/null +++ b/app/spo_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/spo_inbox/pdf_dir/tabel_upl_cv.php b/app/spo_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..0237239 --- /dev/null +++ b/app/spo_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/spo_inbox/pdf_dir/upl_cv.php b/app/spo_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..40019ac --- /dev/null +++ b/app/spo_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/spo_inbox/tabel.php b/app/spo_inbox/tabel.php new file mode 100644 index 0000000..79b0b33 --- /dev/null +++ b/app/spo_inbox/tabel.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/spo_inbox/tabel_verifikasi.php b/app/spo_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..b4492cf --- /dev/null +++ b/app/spo_inbox/tabel_verifikasi.php @@ -0,0 +1,156 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGANTOOLS
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/spo_setting/crud.php b/app/spo_setting/crud.php new file mode 100644 index 0000000..da4cb87 --- /dev/null +++ b/app/spo_setting/crud.php @@ -0,0 +1,43 @@ + 0) { + $upd_spo_setting = pg_query("UPDATE syarat_spo SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_spo_setting = pg_query("INSERT into syarat_spo ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_spo_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_spo WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_spo_setting = pg_query("DELETE FROM syarat_spo WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/spo_setting/main.php b/app/spo_setting/main.php new file mode 100644 index 0000000..4798a02 --- /dev/null +++ b/app/spo_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Sponsorship

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/spo_setting/modal.php b/app/spo_setting/modal.php new file mode 100644 index 0000000..72a9a73 --- /dev/null +++ b/app/spo_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/spo_setting/pdf/.htaccess b/app/spo_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/spo_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/spo_setting/pdf/crud.php b/app/spo_setting/pdf/crud.php new file mode 100644 index 0000000..a1f286c --- /dev/null +++ b/app/spo_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/spo_setting/pdf/tabel_upl_cv.php b/app/spo_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..e5e4866 --- /dev/null +++ b/app/spo_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/spo_setting/pdf/upl_cv.php b/app/spo_setting/pdf/upl_cv.php new file mode 100644 index 0000000..4a32c32 --- /dev/null +++ b/app/spo_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/spo_setting/tabel.php b/app/spo_setting/tabel.php new file mode 100644 index 0000000..1090a35 --- /dev/null +++ b/app/spo_setting/tabel.php @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#DALAM NEGERILUAR NEGERITools
+ + + + +
+ + + + + diff --git a/app/spo_setting/upd_file.php b/app/spo_setting/upd_file.php new file mode 100644 index 0000000..b524f7f --- /dev/null +++ b/app/spo_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_ibel/crud.php b/app/st_ibel/crud.php new file mode 100644 index 0000000..4e8f85e --- /dev/null +++ b/app/st_ibel/crud.php @@ -0,0 +1,75 @@ + \ No newline at end of file diff --git a/app/st_ibel/main.php b/app/st_ibel/main.php new file mode 100644 index 0000000..61a4d55 --- /dev/null +++ b/app/st_ibel/main.php @@ -0,0 +1,518 @@ + + + + + +
+
+
+
+ + + + + +

Ijin-Belajar

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan Pendidikan + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_ibel/modal_revisi.php b/app/st_ibel/modal_revisi.php new file mode 100644 index 0000000..c5c539f --- /dev/null +++ b/app/st_ibel/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ibel/modal_riwayat.php b/app/st_ibel/modal_riwayat.php new file mode 100644 index 0000000..846c237 --- /dev/null +++ b/app/st_ibel/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ibel/modal_tgg.php b/app/st_ibel/modal_tgg.php new file mode 100644 index 0000000..914d606 --- /dev/null +++ b/app/st_ibel/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ibel/modal_verifikasi.php b/app/st_ibel/modal_verifikasi.php new file mode 100644 index 0000000..522a044 --- /dev/null +++ b/app/st_ibel/modal_verifikasi.php @@ -0,0 +1,90 @@ + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +

+ +
+
+
+
+ +

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_ibel/modal_verifikasi_rev.php b/app/st_ibel/modal_verifikasi_rev.php new file mode 100644 index 0000000..dc3ccb7 --- /dev/null +++ b/app/st_ibel/modal_verifikasi_rev.php @@ -0,0 +1,12 @@ + + +
+ + \ No newline at end of file diff --git a/app/st_ibel/modal_view.php b/app/st_ibel/modal_view.php new file mode 100644 index 0000000..1c401e6 --- /dev/null +++ b/app/st_ibel/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_ibel/not_notif.php b/app/st_ibel/not_notif.php new file mode 100644 index 0000000..201b3e4 --- /dev/null +++ b/app/st_ibel/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_ibel/not_revnotif.php b/app/st_ibel/not_revnotif.php new file mode 100644 index 0000000..41d831b --- /dev/null +++ b/app/st_ibel/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_ibel/not_tggnotif.php b/app/st_ibel/not_tggnotif.php new file mode 100644 index 0000000..cbcc6b4 --- /dev/null +++ b/app/st_ibel/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_ibel/not_tmbnotif.php b/app/st_ibel/not_tmbnotif.php new file mode 100644 index 0000000..a200690 --- /dev/null +++ b/app/st_ibel/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_ibel/pdf/.htaccess b/app/st_ibel/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_ibel/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_ibel/pdf/crud.php b/app/st_ibel/pdf/crud.php new file mode 100644 index 0000000..5fbbcd0 --- /dev/null +++ b/app/st_ibel/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.37.jpeg b/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.37.jpeg new file mode 100644 index 0000000..3833b37 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.37.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.44.jpeg b/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.44.jpeg new file mode 100644 index 0000000..75dfa3e Binary files /dev/null and b/app/st_ibel/pdf/pdf/1038_WhatsApp Image 2023-02-14 at 11.48.44.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1073_NODIN IBEL.jpeg b/app/st_ibel/pdf/pdf/1073_NODIN IBEL.jpeg new file mode 100644 index 0000000..e402bf9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1073_NODIN IBEL.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS 2.jpeg b/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS 2.jpeg new file mode 100644 index 0000000..4fdf8df Binary files /dev/null and b/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS 2.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS.jpeg b/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS.jpeg new file mode 100644 index 0000000..3833b37 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1076_JADWAL KULIAH PROGSUS.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1077_SURAT BERSEDIA TETAP DINAS.jpeg b/app/st_ibel/pdf/pdf/1077_SURAT BERSEDIA TETAP DINAS.jpeg new file mode 100644 index 0000000..4130213 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1077_SURAT BERSEDIA TETAP DINAS.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1078_SURAT BERSEDIA KEMBALI KE RSSA.jpeg b/app/st_ibel/pdf/pdf/1078_SURAT BERSEDIA KEMBALI KE RSSA.jpeg new file mode 100644 index 0000000..221e011 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1078_SURAT BERSEDIA KEMBALI KE RSSA.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1079_SURAT MENANGGUNG BIAYA PENDIDIKAN.jpeg b/app/st_ibel/pdf/pdf/1079_SURAT MENANGGUNG BIAYA PENDIDIKAN.jpeg new file mode 100644 index 0000000..551450e Binary files /dev/null and b/app/st_ibel/pdf/pdf/1079_SURAT MENANGGUNG BIAYA PENDIDIKAN.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1080_SURAT TIDAK MENUNTUT PENYESUAIAN IJAZAH.jpeg b/app/st_ibel/pdf/pdf/1080_SURAT TIDAK MENUNTUT PENYESUAIAN IJAZAH.jpeg new file mode 100644 index 0000000..e5af4e9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1080_SURAT TIDAK MENUNTUT PENYESUAIAN IJAZAH.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1081_AKREDITASI STIKES MAHARANI.jpeg b/app/st_ibel/pdf/pdf/1081_AKREDITASI STIKES MAHARANI.jpeg new file mode 100644 index 0000000..52eb8af Binary files /dev/null and b/app/st_ibel/pdf/pdf/1081_AKREDITASI STIKES MAHARANI.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1082_DRH.jpeg b/app/st_ibel/pdf/pdf/1082_DRH.jpeg new file mode 100644 index 0000000..a4cf7b8 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1082_DRH.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1084_SK PNS.jpeg b/app/st_ibel/pdf/pdf/1084_SK PNS.jpeg new file mode 100644 index 0000000..4b3f6da Binary files /dev/null and b/app/st_ibel/pdf/pdf/1084_SK PNS.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1192_NOMOR HP YANG BISA DIHUBUNGI.docx b/app/st_ibel/pdf/pdf/1192_NOMOR HP YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..3baeac0 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1192_NOMOR HP YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_ibel/pdf/pdf/1199_akreditasi UMM pasca psi.jpeg b/app/st_ibel/pdf/pdf/1199_akreditasi UMM pasca psi.jpeg new file mode 100644 index 0000000..9536694 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1199_akreditasi UMM pasca psi.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1228_NOMOR HP YANG BISA DIHUBUNGI.docx b/app/st_ibel/pdf/pdf/1228_NOMOR HP YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..c876820 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1228_NOMOR HP YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_ibel/pdf/pdf/1229_NOMOR HP YANG BISA DIHUBUNGI.docx b/app/st_ibel/pdf/pdf/1229_NOMOR HP YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..dab7265 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1229_NOMOR HP YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_ibel/pdf/pdf/1230_SURAT PERNYATAAN biaya.docx b/app/st_ibel/pdf/pdf/1230_SURAT PERNYATAAN biaya.docx new file mode 100644 index 0000000..bab23dc Binary files /dev/null and b/app/st_ibel/pdf/pdf/1230_SURAT PERNYATAAN biaya.docx differ diff --git a/app/st_ibel/pdf/pdf/1231_SURAT PERNYATAAN TETAP DINAS.docx b/app/st_ibel/pdf/pdf/1231_SURAT PERNYATAAN TETAP DINAS.docx new file mode 100644 index 0000000..449c9e9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1231_SURAT PERNYATAAN TETAP DINAS.docx differ diff --git a/app/st_ibel/pdf/pdf/1232_Surat Pernyataan Bersedia ditempatkan Kembali di.docx b/app/st_ibel/pdf/pdf/1232_Surat Pernyataan Bersedia ditempatkan Kembali di.docx new file mode 100644 index 0000000..0567647 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1232_Surat Pernyataan Bersedia ditempatkan Kembali di.docx differ diff --git a/app/st_ibel/pdf/pdf/1233_Surat Pernyataan Tidak Menuntut Penyesuaian Ijazah.docx b/app/st_ibel/pdf/pdf/1233_Surat Pernyataan Tidak Menuntut Penyesuaian Ijazah.docx new file mode 100644 index 0000000..64cc092 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1233_Surat Pernyataan Tidak Menuntut Penyesuaian Ijazah.docx differ diff --git a/app/st_ibel/pdf/pdf/1234_DAFTAR RIWAYAT HIDUP.docx b/app/st_ibel/pdf/pdf/1234_DAFTAR RIWAYAT HIDUP.docx new file mode 100644 index 0000000..ed875c7 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1234_DAFTAR RIWAYAT HIDUP.docx differ diff --git a/app/st_ibel/pdf/pdf/1273_NOMOR HP YANG BISA DIHUBUNGI.docx b/app/st_ibel/pdf/pdf/1273_NOMOR HP YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..abe6dc6 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1273_NOMOR HP YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_ibel/pdf/pdf/1468_nomer hp Dewi.docx b/app/st_ibel/pdf/pdf/1468_nomer hp Dewi.docx new file mode 100644 index 0000000..ace5777 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1468_nomer hp Dewi.docx differ diff --git a/app/st_ibel/pdf/pdf/1470_Jadwal kuliah Maret 2023.docx b/app/st_ibel/pdf/pdf/1470_Jadwal kuliah Maret 2023.docx new file mode 100644 index 0000000..ea1791a Binary files /dev/null and b/app/st_ibel/pdf/pdf/1470_Jadwal kuliah Maret 2023.docx differ diff --git a/app/st_ibel/pdf/pdf/1531_Sertifikat-Akreditasi-2026.jpeg b/app/st_ibel/pdf/pdf/1531_Sertifikat-Akreditasi-2026.jpeg new file mode 100644 index 0000000..e6b6d76 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1531_Sertifikat-Akreditasi-2026.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1540_Sertifikat-Akreditasi-2026 magister manajemen RS.jpeg b/app/st_ibel/pdf/pdf/1540_Sertifikat-Akreditasi-2026 magister manajemen RS.jpeg new file mode 100644 index 0000000..e6b6d76 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1540_Sertifikat-Akreditasi-2026 magister manajemen RS.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1579_BAN PT (1).jpeg b/app/st_ibel/pdf/pdf/1579_BAN PT (1).jpeg new file mode 100644 index 0000000..d46feff Binary files /dev/null and b/app/st_ibel/pdf/pdf/1579_BAN PT (1).jpeg differ diff --git a/app/st_ibel/pdf/pdf/1680_NO HP.doc b/app/st_ibel/pdf/pdf/1680_NO HP.doc new file mode 100644 index 0000000..31f2283 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1680_NO HP.doc differ diff --git a/app/st_ibel/pdf/pdf/1711_Dr Rulli Rosandi.docx b/app/st_ibel/pdf/pdf/1711_Dr Rulli Rosandi.docx new file mode 100644 index 0000000..4aae567 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1711_Dr Rulli Rosandi.docx differ diff --git a/app/st_ibel/pdf/pdf/1758_Nomer Telepon.jpg.jpeg b/app/st_ibel/pdf/pdf/1758_Nomer Telepon.jpg.jpeg new file mode 100644 index 0000000..378cf07 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1758_Nomer Telepon.jpg.jpeg differ diff --git a/app/st_ibel/pdf/pdf/1804_Stevani Gresya M.docx b/app/st_ibel/pdf/pdf/1804_Stevani Gresya M.docx new file mode 100644 index 0000000..d28c81d Binary files /dev/null and b/app/st_ibel/pdf/pdf/1804_Stevani Gresya M.docx differ diff --git a/app/st_ibel/pdf/pdf/1819_Nurul M.docx b/app/st_ibel/pdf/pdf/1819_Nurul M.docx new file mode 100644 index 0000000..f8f99a7 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1819_Nurul M.docx differ diff --git a/app/st_ibel/pdf/pdf/1829_NO HP REVI.docx b/app/st_ibel/pdf/pdf/1829_NO HP REVI.docx new file mode 100644 index 0000000..ca30378 Binary files /dev/null and b/app/st_ibel/pdf/pdf/1829_NO HP REVI.docx differ diff --git a/app/st_ibel/pdf/pdf/1838_NO HP.docx b/app/st_ibel/pdf/pdf/1838_NO HP.docx new file mode 100644 index 0000000..adf4f6a Binary files /dev/null and b/app/st_ibel/pdf/pdf/1838_NO HP.docx differ diff --git a/app/st_ibel/pdf/pdf/199_Jadwal Kuliah Bagus W b/app/st_ibel/pdf/pdf/199_Jadwal Kuliah Bagus W new file mode 100644 index 0000000..c592557 Binary files /dev/null and b/app/st_ibel/pdf/pdf/199_Jadwal Kuliah Bagus W differ diff --git a/app/st_ibel/pdf/pdf/2030_Pernyataan bersedia kembali ke RSSA.jpeg b/app/st_ibel/pdf/pdf/2030_Pernyataan bersedia kembali ke RSSA.jpeg new file mode 100644 index 0000000..d958cda Binary files /dev/null and b/app/st_ibel/pdf/pdf/2030_Pernyataan bersedia kembali ke RSSA.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2031_Bersedia menanggung biaya sendiri.jpeg b/app/st_ibel/pdf/pdf/2031_Bersedia menanggung biaya sendiri.jpeg new file mode 100644 index 0000000..0bc27fd Binary files /dev/null and b/app/st_ibel/pdf/pdf/2031_Bersedia menanggung biaya sendiri.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2031_Surat Keterangan Kelulusan Seleksi Substansi Beasiswa LPDP - 3507251109940004 - Nur Rohmat Maulana Saepudin.html b/app/st_ibel/pdf/pdf/2031_Surat Keterangan Kelulusan Seleksi Substansi Beasiswa LPDP - 3507251109940004 - Nur Rohmat Maulana Saepudin.html new file mode 100644 index 0000000..5c3107a --- /dev/null +++ b/app/st_ibel/pdf/pdf/2031_Surat Keterangan Kelulusan Seleksi Substansi Beasiswa LPDP - 3507251109940004 - Nur Rohmat Maulana Saepudin.html @@ -0,0 +1,125 @@ + + + + + + + + +Surat Keterangan Kelulusan Seleksi Substansi Beasiswa LPDP - 3507251109940004 - Nur Rohmat Maulana Saepudin + +
+ + + + + +
+
+
+
+ +
+

KEMENTERIAN KEUANGAN REPUBLIK INDONESIA

+

SEKRETARIAT JENDERAL

+

LEMBAGA PENGELOLA DANA PENDIDIKAN

+

+ GEDUNG DANADYAKSA CIKINI JL. CIKINI RAYA NO. 91 A-D, MENTENG, JAKARTA PUSAT 10330 +
+ TELEPON/FAX (021) 23951607 SITUS www.lpdp.kemenkeu.go.id +

+ +
+
+
+
+
+
+

SURAT KETERANGAN

+
+
+
+

+ Atas nama Lembaga Pengelola Dana Pendidikan, Kementerian Keuangan Republik Indonesia, saya menyampaikan bahwa orang bersangkutan berikut telah lulus proses seleksi Beasiswa Pendidikan Indonesia LPDP Tahap 2 Tahun 2022: +

+
+
+ +
+
+ + + + + + + + + + + + + + + + +
Nama:Nur Rohmat Maulana Saepudin
Kode Registrasi:0015145/SPE/S/19/lpdp2022
Tempat & Tanggal Lahir:Malang, 11 September 1994
+
+
+ +
+
+

+ Perlu diperhatikan bahwa surat ini bukan merupakan jaminan bahwa yang bersangkutan akan menerima beasiswa LPDP. Beasiswa akan diberikan setelah penyampaian Surat Penerimaan tanpa syarat (Unconditional Letter of Acceptance) dari Universitas tujuan dan penandatanganan Surat Pernyataan atau Kontrak Beasiswa. +

+
+
+ +
+
+

+ Terima kasih atas perhatian dan kerja samanya. +

+
+
+
+
+
+
+
+ +

Scan untuk verifikasi

+

Direktur Beasiswa

+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/st_ibel/pdf/pdf/2032_Pernyataan Ijin Orang Tua.jpeg b/app/st_ibel/pdf/pdf/2032_Pernyataan Ijin Orang Tua.jpeg new file mode 100644 index 0000000..761d884 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2032_Pernyataan Ijin Orang Tua.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2033_Tidak menuntut penyesuaian Ijazah.jpeg b/app/st_ibel/pdf/pdf/2033_Tidak menuntut penyesuaian Ijazah.jpeg new file mode 100644 index 0000000..d1e8b2f Binary files /dev/null and b/app/st_ibel/pdf/pdf/2033_Tidak menuntut penyesuaian Ijazah.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2035_Daftar Riwayat Hidup.jpeg b/app/st_ibel/pdf/pdf/2035_Daftar Riwayat Hidup.jpeg new file mode 100644 index 0000000..fe0d0af Binary files /dev/null and b/app/st_ibel/pdf/pdf/2035_Daftar Riwayat Hidup.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2036_No HP Maulana.jpeg b/app/st_ibel/pdf/pdf/2036_No HP Maulana.jpeg new file mode 100644 index 0000000..fe87fc9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2036_No HP Maulana.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 1.jpeg b/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 1.jpeg new file mode 100644 index 0000000..e9075a5 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 1.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 2.jpeg b/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 2.jpeg new file mode 100644 index 0000000..7cb10af Binary files /dev/null and b/app/st_ibel/pdf/pdf/2037_Permohonan kepada Direktur 2.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2051_Bersedia tetap dinas.jpeg b/app/st_ibel/pdf/pdf/2051_Bersedia tetap dinas.jpeg new file mode 100644 index 0000000..cddfeed Binary files /dev/null and b/app/st_ibel/pdf/pdf/2051_Bersedia tetap dinas.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2060_NO TLP.docx b/app/st_ibel/pdf/pdf/2060_NO TLP.docx new file mode 100644 index 0000000..9ea856c Binary files /dev/null and b/app/st_ibel/pdf/pdf/2060_NO TLP.docx differ diff --git a/app/st_ibel/pdf/pdf/2097_akreditasi maharani b/app/st_ibel/pdf/pdf/2097_akreditasi maharani new file mode 100644 index 0000000..73580e9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2097_akreditasi maharani differ diff --git a/app/st_ibel/pdf/pdf/2136_NO TLP.docx b/app/st_ibel/pdf/pdf/2136_NO TLP.docx new file mode 100644 index 0000000..9ea856c Binary files /dev/null and b/app/st_ibel/pdf/pdf/2136_NO TLP.docx differ diff --git a/app/st_ibel/pdf/pdf/2163_NO TLP SHOHIB.docx b/app/st_ibel/pdf/pdf/2163_NO TLP SHOHIB.docx new file mode 100644 index 0000000..87c7b64 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2163_NO TLP SHOHIB.docx differ diff --git a/app/st_ibel/pdf/pdf/2308_SK PNS GRETTA.PDF b/app/st_ibel/pdf/pdf/2308_SK PNS GRETTA.PDF new file mode 100644 index 0000000..8a0a50b Binary files /dev/null and b/app/st_ibel/pdf/pdf/2308_SK PNS GRETTA.PDF differ diff --git a/app/st_ibel/pdf/pdf/2336_BAN PT.jpeg b/app/st_ibel/pdf/pdf/2336_BAN PT.jpeg new file mode 100644 index 0000000..ce12748 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2336_BAN PT.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2337_NO TELP.docx b/app/st_ibel/pdf/pdf/2337_NO TELP.docx new file mode 100644 index 0000000..db395ba Binary files /dev/null and b/app/st_ibel/pdf/pdf/2337_NO TELP.docx differ diff --git a/app/st_ibel/pdf/pdf/2341_082 132 580 268.docx b/app/st_ibel/pdf/pdf/2341_082 132 580 268.docx new file mode 100644 index 0000000..61666b2 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2341_082 132 580 268.docx differ diff --git a/app/st_ibel/pdf/pdf/2379_NO TELPON.docx b/app/st_ibel/pdf/pdf/2379_NO TELPON.docx new file mode 100644 index 0000000..f4d18de Binary files /dev/null and b/app/st_ibel/pdf/pdf/2379_NO TELPON.docx differ diff --git a/app/st_ibel/pdf/pdf/2380_WhatsApp Image 2023-08-21 at 14.31.47.jpeg b/app/st_ibel/pdf/pdf/2380_WhatsApp Image 2023-08-21 at 14.31.47.jpeg new file mode 100644 index 0000000..e5196fd Binary files /dev/null and b/app/st_ibel/pdf/pdf/2380_WhatsApp Image 2023-08-21 at 14.31.47.jpeg differ diff --git a/app/st_ibel/pdf/pdf/23_JADWAL KULIAH SAP SMT GANJIL 22-23.docx b/app/st_ibel/pdf/pdf/23_JADWAL KULIAH SAP SMT GANJIL 22-23.docx new file mode 100644 index 0000000..1e9572a Binary files /dev/null and b/app/st_ibel/pdf/pdf/23_JADWAL KULIAH SAP SMT GANJIL 22-23.docx differ diff --git a/app/st_ibel/pdf/pdf/2410_jadwal kuliah.jpeg b/app/st_ibel/pdf/pdf/2410_jadwal kuliah.jpeg new file mode 100644 index 0000000..5ff3a51 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2410_jadwal kuliah.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2538_RPS S3 Metpen 2023X.docx b/app/st_ibel/pdf/pdf/2538_RPS S3 Metpen 2023X.docx new file mode 100644 index 0000000..02f7cfc Binary files /dev/null and b/app/st_ibel/pdf/pdf/2538_RPS S3 Metpen 2023X.docx differ diff --git a/app/st_ibel/pdf/pdf/2538_Silabus Metode Penelitian S3 2023_2024 Ganjil_x.docx b/app/st_ibel/pdf/pdf/2538_Silabus Metode Penelitian S3 2023_2024 Ganjil_x.docx new file mode 100644 index 0000000..e0f5593 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2538_Silabus Metode Penelitian S3 2023_2024 Ganjil_x.docx differ diff --git a/app/st_ibel/pdf/pdf/2567_NO TLP NURCAHYO.docx b/app/st_ibel/pdf/pdf/2567_NO TLP NURCAHYO.docx new file mode 100644 index 0000000..d3de5ed Binary files /dev/null and b/app/st_ibel/pdf/pdf/2567_NO TLP NURCAHYO.docx differ diff --git a/app/st_ibel/pdf/pdf/2642_surat keterangan Maharani.jpeg b/app/st_ibel/pdf/pdf/2642_surat keterangan Maharani.jpeg new file mode 100644 index 0000000..406c9ef Binary files /dev/null and b/app/st_ibel/pdf/pdf/2642_surat keterangan Maharani.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2643_surat keterangan Maharani.jpeg b/app/st_ibel/pdf/pdf/2643_surat keterangan Maharani.jpeg new file mode 100644 index 0000000..406c9ef Binary files /dev/null and b/app/st_ibel/pdf/pdf/2643_surat keterangan Maharani.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2680_WhatsApp Image 2023-09-20 at 13.37.35.jpeg b/app/st_ibel/pdf/pdf/2680_WhatsApp Image 2023-09-20 at 13.37.35.jpeg new file mode 100644 index 0000000..c8a5876 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2680_WhatsApp Image 2023-09-20 at 13.37.35.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2682_SURATKETKULIAH_HELIN.jfif b/app/st_ibel/pdf/pdf/2682_SURATKETKULIAH_HELIN.jfif new file mode 100644 index 0000000..9e67979 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2682_SURATKETKULIAH_HELIN.jfif differ diff --git a/app/st_ibel/pdf/pdf/2684_WhatsApp Image 2023-09-20 at 13.38.05.jpeg b/app/st_ibel/pdf/pdf/2684_WhatsApp Image 2023-09-20 at 13.38.05.jpeg new file mode 100644 index 0000000..9e67979 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2684_WhatsApp Image 2023-09-20 at 13.38.05.jpeg differ diff --git a/app/st_ibel/pdf/pdf/2852_SK PNS dr DAN (2022).PDF b/app/st_ibel/pdf/pdf/2852_SK PNS dr DAN (2022).PDF new file mode 100644 index 0000000..21fa13a Binary files /dev/null and b/app/st_ibel/pdf/pdf/2852_SK PNS dr DAN (2022).PDF differ diff --git a/app/st_ibel/pdf/pdf/2868_SURAT KETERANGAN JADWAL KULIAH.docx b/app/st_ibel/pdf/pdf/2868_SURAT KETERANGAN JADWAL KULIAH.docx new file mode 100644 index 0000000..12e65f3 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2868_SURAT KETERANGAN JADWAL KULIAH.docx differ diff --git a/app/st_ibel/pdf/pdf/2971_SK Pangkat III C dr RIS.jpeg b/app/st_ibel/pdf/pdf/2971_SK Pangkat III C dr RIS.jpeg new file mode 100644 index 0000000..8fb7e74 Binary files /dev/null and b/app/st_ibel/pdf/pdf/2971_SK Pangkat III C dr RIS.jpeg differ diff --git a/app/st_ibel/pdf/pdf/3160_No Tlp Aktif.docx b/app/st_ibel/pdf/pdf/3160_No Tlp Aktif.docx new file mode 100644 index 0000000..985a72a Binary files /dev/null and b/app/st_ibel/pdf/pdf/3160_No Tlp Aktif.docx differ diff --git a/app/st_ibel/pdf/pdf/318_bersedia ttp dinas.jpeg b/app/st_ibel/pdf/pdf/318_bersedia ttp dinas.jpeg new file mode 100644 index 0000000..75158ab Binary files /dev/null and b/app/st_ibel/pdf/pdf/318_bersedia ttp dinas.jpeg differ diff --git a/app/st_ibel/pdf/pdf/3232_akreditasi kampus b/app/st_ibel/pdf/pdf/3232_akreditasi kampus new file mode 100644 index 0000000..75c16cd Binary files /dev/null and b/app/st_ibel/pdf/pdf/3232_akreditasi kampus differ diff --git a/app/st_ibel/pdf/pdf/3233_no hp b/app/st_ibel/pdf/pdf/3233_no hp new file mode 100644 index 0000000..612b673 Binary files /dev/null and b/app/st_ibel/pdf/pdf/3233_no hp differ diff --git a/app/st_ibel/pdf/pdf/3234_ijin suami b/app/st_ibel/pdf/pdf/3234_ijin suami new file mode 100644 index 0000000..e1af0bd Binary files /dev/null and b/app/st_ibel/pdf/pdf/3234_ijin suami differ diff --git a/app/st_ibel/pdf/pdf/3235_daftar riwayat hidup b/app/st_ibel/pdf/pdf/3235_daftar riwayat hidup new file mode 100644 index 0000000..6dbeb08 Binary files /dev/null and b/app/st_ibel/pdf/pdf/3235_daftar riwayat hidup differ diff --git a/app/st_ibel/pdf/pdf/3315_TEMA.docx b/app/st_ibel/pdf/pdf/3315_TEMA.docx new file mode 100644 index 0000000..3824b0b Binary files /dev/null and b/app/st_ibel/pdf/pdf/3315_TEMA.docx differ diff --git a/app/st_ibel/pdf/pdf/3420_surat bersedia kembali ke rssapdf b/app/st_ibel/pdf/pdf/3420_surat bersedia kembali ke rssapdf new file mode 100644 index 0000000..705f853 Binary files /dev/null and b/app/st_ibel/pdf/pdf/3420_surat bersedia kembali ke rssapdf differ diff --git a/app/st_ibel/pdf/pdf/3446_Ijin Direktur Kuliah b/app/st_ibel/pdf/pdf/3446_Ijin Direktur Kuliah new file mode 100644 index 0000000..9223ca9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/3446_Ijin Direktur Kuliah differ diff --git a/app/st_ibel/pdf/pdf/517_DAFTAR RIWAYAT HIDUP.docx b/app/st_ibel/pdf/pdf/517_DAFTAR RIWAYAT HIDUP.docx new file mode 100644 index 0000000..0045933 Binary files /dev/null and b/app/st_ibel/pdf/pdf/517_DAFTAR RIWAYAT HIDUP.docx differ diff --git a/app/st_ibel/pdf/pdf/518_SURAT PERNYATAAN bersedia dinas.docx b/app/st_ibel/pdf/pdf/518_SURAT PERNYATAAN bersedia dinas.docx new file mode 100644 index 0000000..5c0fa28 Binary files /dev/null and b/app/st_ibel/pdf/pdf/518_SURAT PERNYATAAN bersedia dinas.docx differ diff --git a/app/st_ibel/pdf/pdf/519_SURAT PERNYATAAN bersedia kembali.docx b/app/st_ibel/pdf/pdf/519_SURAT PERNYATAAN bersedia kembali.docx new file mode 100644 index 0000000..959c33a Binary files /dev/null and b/app/st_ibel/pdf/pdf/519_SURAT PERNYATAAN bersedia kembali.docx differ diff --git a/app/st_ibel/pdf/pdf/520_SURAT PERNYATAAN bersedia menanggung biaya.docx b/app/st_ibel/pdf/pdf/520_SURAT PERNYATAAN bersedia menanggung biaya.docx new file mode 100644 index 0000000..af579e4 Binary files /dev/null and b/app/st_ibel/pdf/pdf/520_SURAT PERNYATAAN bersedia menanggung biaya.docx differ diff --git a/app/st_ibel/pdf/pdf/521_SURAT PERNYATAAN ijin suami.docx b/app/st_ibel/pdf/pdf/521_SURAT PERNYATAAN ijin suami.docx new file mode 100644 index 0000000..07b4c76 Binary files /dev/null and b/app/st_ibel/pdf/pdf/521_SURAT PERNYATAAN ijin suami.docx differ diff --git a/app/st_ibel/pdf/pdf/522_SURAT PERNYATAAN tidak menuntut ijazah.docx b/app/st_ibel/pdf/pdf/522_SURAT PERNYATAAN tidak menuntut ijazah.docx new file mode 100644 index 0000000..a6ea128 Binary files /dev/null and b/app/st_ibel/pdf/pdf/522_SURAT PERNYATAAN tidak menuntut ijazah.docx differ diff --git a/app/st_ibel/pdf/pdf/551_SK pns b/app/st_ibel/pdf/pdf/551_SK pns new file mode 100644 index 0000000..cf05470 Binary files /dev/null and b/app/st_ibel/pdf/pdf/551_SK pns differ diff --git a/app/st_ibel/pdf/pdf/554_bersedia kembali b/app/st_ibel/pdf/pdf/554_bersedia kembali new file mode 100644 index 0000000..56bd21c Binary files /dev/null and b/app/st_ibel/pdf/pdf/554_bersedia kembali differ diff --git a/app/st_ibel/pdf/pdf/555_biaya pend b/app/st_ibel/pdf/pdf/555_biaya pend new file mode 100644 index 0000000..0badf50 Binary files /dev/null and b/app/st_ibel/pdf/pdf/555_biaya pend differ diff --git a/app/st_ibel/pdf/pdf/556_ijin istri b/app/st_ibel/pdf/pdf/556_ijin istri new file mode 100644 index 0000000..4a7e300 Binary files /dev/null and b/app/st_ibel/pdf/pdf/556_ijin istri differ diff --git a/app/st_ibel/pdf/pdf/557_TDK menuntut penyesuaian ijazah b/app/st_ibel/pdf/pdf/557_TDK menuntut penyesuaian ijazah new file mode 100644 index 0000000..7e10975 Binary files /dev/null and b/app/st_ibel/pdf/pdf/557_TDK menuntut penyesuaian ijazah differ diff --git a/app/st_ibel/pdf/pdf/558_jadwal kuliah b/app/st_ibel/pdf/pdf/558_jadwal kuliah new file mode 100644 index 0000000..2d3f67d Binary files /dev/null and b/app/st_ibel/pdf/pdf/558_jadwal kuliah differ diff --git a/app/st_ibel/pdf/pdf/559_tetap dinas b/app/st_ibel/pdf/pdf/559_tetap dinas new file mode 100644 index 0000000..df85bc3 Binary files /dev/null and b/app/st_ibel/pdf/pdf/559_tetap dinas differ diff --git a/app/st_ibel/pdf/pdf/562_ aktif mahasiswa.docx b/app/st_ibel/pdf/pdf/562_ aktif mahasiswa.docx new file mode 100644 index 0000000..306c26c Binary files /dev/null and b/app/st_ibel/pdf/pdf/562_ aktif mahasiswa.docx differ diff --git a/app/st_ibel/pdf/pdf/743_Permohonan Ijin Belajar b/app/st_ibel/pdf/pdf/743_Permohonan Ijin Belajar new file mode 100644 index 0000000..148e3c2 Binary files /dev/null and b/app/st_ibel/pdf/pdf/743_Permohonan Ijin Belajar differ diff --git a/app/st_ibel/pdf/pdf/744_Srt Bersedia Tetap Dinas b/app/st_ibel/pdf/pdf/744_Srt Bersedia Tetap Dinas new file mode 100644 index 0000000..d5b4675 Binary files /dev/null and b/app/st_ibel/pdf/pdf/744_Srt Bersedia Tetap Dinas differ diff --git a/app/st_ibel/pdf/pdf/745_Srt Bersedia Kembali b/app/st_ibel/pdf/pdf/745_Srt Bersedia Kembali new file mode 100644 index 0000000..fea0824 Binary files /dev/null and b/app/st_ibel/pdf/pdf/745_Srt Bersedia Kembali differ diff --git a/app/st_ibel/pdf/pdf/746_Srt Bersedia Menanggung Biaya b/app/st_ibel/pdf/pdf/746_Srt Bersedia Menanggung Biaya new file mode 100644 index 0000000..65200d6 Binary files /dev/null and b/app/st_ibel/pdf/pdf/746_Srt Bersedia Menanggung Biaya differ diff --git a/app/st_ibel/pdf/pdf/747_Srt Ijin Suami b/app/st_ibel/pdf/pdf/747_Srt Ijin Suami new file mode 100644 index 0000000..29c5247 Binary files /dev/null and b/app/st_ibel/pdf/pdf/747_Srt Ijin Suami differ diff --git a/app/st_ibel/pdf/pdf/748_Srt Tidak Menuntut Penyesuaian Ijazah b/app/st_ibel/pdf/pdf/748_Srt Tidak Menuntut Penyesuaian Ijazah new file mode 100644 index 0000000..983699f Binary files /dev/null and b/app/st_ibel/pdf/pdf/748_Srt Tidak Menuntut Penyesuaian Ijazah differ diff --git a/app/st_ibel/pdf/pdf/749_Sertificate Akreditasi b/app/st_ibel/pdf/pdf/749_Sertificate Akreditasi new file mode 100644 index 0000000..3fe1a2e Binary files /dev/null and b/app/st_ibel/pdf/pdf/749_Sertificate Akreditasi differ diff --git a/app/st_ibel/pdf/pdf/750_Daftar Riwayat Hidup b/app/st_ibel/pdf/pdf/750_Daftar Riwayat Hidup new file mode 100644 index 0000000..ae285d9 Binary files /dev/null and b/app/st_ibel/pdf/pdf/750_Daftar Riwayat Hidup differ diff --git a/app/st_ibel/pdf/pdf/868_downloadfile.PDF b/app/st_ibel/pdf/pdf/868_downloadfile.PDF new file mode 100644 index 0000000..d735e4a Binary files /dev/null and b/app/st_ibel/pdf/pdf/868_downloadfile.PDF differ diff --git a/app/st_ibel/pdf/pdf/869_Bersedia Kembali.PDF b/app/st_ibel/pdf/pdf/869_Bersedia Kembali.PDF new file mode 100644 index 0000000..fde509b Binary files /dev/null and b/app/st_ibel/pdf/pdf/869_Bersedia Kembali.PDF differ diff --git a/app/st_ibel/pdf/pdf/870_Menanggung Biaya.PDF b/app/st_ibel/pdf/pdf/870_Menanggung Biaya.PDF new file mode 100644 index 0000000..2aed690 Binary files /dev/null and b/app/st_ibel/pdf/pdf/870_Menanggung Biaya.PDF differ diff --git a/app/st_ibel/pdf/pdf/872_Ijin Suami.PDF b/app/st_ibel/pdf/pdf/872_Ijin Suami.PDF new file mode 100644 index 0000000..b0b0f30 Binary files /dev/null and b/app/st_ibel/pdf/pdf/872_Ijin Suami.PDF differ diff --git a/app/st_ibel/pdf/pdf/873_Tidak Menuntut Penyesuaian.PDF b/app/st_ibel/pdf/pdf/873_Tidak Menuntut Penyesuaian.PDF new file mode 100644 index 0000000..119b999 Binary files /dev/null and b/app/st_ibel/pdf/pdf/873_Tidak Menuntut Penyesuaian.PDF differ diff --git a/app/st_ibel/pdf/pdf/874_Riwayat Hidup.PDF b/app/st_ibel/pdf/pdf/874_Riwayat Hidup.PDF new file mode 100644 index 0000000..d2f1d2b Binary files /dev/null and b/app/st_ibel/pdf/pdf/874_Riwayat Hidup.PDF differ diff --git a/app/st_ibel/pdf/pdf/900_Saya sedang berbagi 'SERTIFIKAT PERAWAT 2018' dengan Anda b/app/st_ibel/pdf/pdf/900_Saya sedang berbagi 'SERTIFIKAT PERAWAT 2018' dengan Anda new file mode 100644 index 0000000..194e820 Binary files /dev/null and b/app/st_ibel/pdf/pdf/900_Saya sedang berbagi 'SERTIFIKAT PERAWAT 2018' dengan Anda differ diff --git a/app/st_ibel/pdf/pdf/901_SKP b/app/st_ibel/pdf/pdf/901_SKP new file mode 100644 index 0000000..a787a63 Binary files /dev/null and b/app/st_ibel/pdf/pdf/901_SKP differ diff --git a/app/st_ibel/pdf/pdf/902_akreditasi maharani b/app/st_ibel/pdf/pdf/902_akreditasi maharani new file mode 100644 index 0000000..194e820 Binary files /dev/null and b/app/st_ibel/pdf/pdf/902_akreditasi maharani differ diff --git a/app/st_ibel/pdf/tabel_upl_cv.php b/app/st_ibel/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..c04a02d --- /dev/null +++ b/app/st_ibel/pdf/tabel_upl_cv.php @@ -0,0 +1,86 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_ibel/pdf/upl_cv.php b/app/st_ibel/pdf/upl_cv.php new file mode 100644 index 0000000..6bca394 --- /dev/null +++ b/app/st_ibel/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_ibel (riwayat_ibel_id,syarat_ibel_id) VALUES ('$riwayat_ibel_id','$syarat_ibel_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_ibel WHERE riwayat_ibel_id=$riwayat_ibel_id AND syarat_ibel_id=$syarat_ibel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_ibel_idxx=$r1[0];} + +//$riwayat_syarat_ibel_id=$_POST['riwayat_syarat_ibel_id_uploadz']; +$riwayat_syarat_ibel_id=$riwayat_syarat_ibel_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_ibel_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_ibel_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_ibel (riwayat_syarat_ibel_id,file,tgl_upload) VALUES ('$riwayat_syarat_ibel_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_ibel SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_ibel_id"); +echo $riwayat_syarat_ibel_id.' - '.$name_pdf; +?> + + diff --git a/app/st_ibel/tabel_daftar.php b/app/st_ibel/tabel_daftar.php new file mode 100644 index 0000000..49021dd --- /dev/null +++ b/app/st_ibel/tabel_daftar.php @@ -0,0 +1,168 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_ibel/tabel_daftar_rev.php b/app/st_ibel/tabel_daftar_rev.php new file mode 100644 index 0000000..6f382a4 --- /dev/null +++ b/app/st_ibel/tabel_daftar_rev.php @@ -0,0 +1,227 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_ibel/tabel_revisi.php b/app/st_ibel/tabel_revisi.php new file mode 100644 index 0000000..7332468 --- /dev/null +++ b/app/st_ibel/tabel_revisi.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ibel/tabel_riwayat.php b/app/st_ibel/tabel_riwayat.php new file mode 100644 index 0000000..1db16bb --- /dev/null +++ b/app/st_ibel/tabel_riwayat.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ibel/tabel_tgg.php b/app/st_ibel/tabel_tgg.php new file mode 100644 index 0000000..4616794 --- /dev/null +++ b/app/st_ibel/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ibel/upd_file.php b/app/st_ibel/upd_file.php new file mode 100644 index 0000000..99efac5 --- /dev/null +++ b/app/st_ibel/upd_file.php @@ -0,0 +1,147 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_ibel (riwayat_ibel_id,syarat_ibel_id) VALUES ('$riwayat_ibel_id','$syarat_ibel_id')"); +} + +$d1=pg_query("SELECT id FROM riwayat_syarat_ibel WHERE riwayat_ibel_id=$riwayat_ibel_id AND syarat_ibel_id=$syarat_ibel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_ibel_id=$r1[0];} +*/ +?> + +
+ + + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_jbel/crud.php b/app/st_jbel/crud.php new file mode 100644 index 0000000..5ffaad2 --- /dev/null +++ b/app/st_jbel/crud.php @@ -0,0 +1,72 @@ + \ No newline at end of file diff --git a/app/st_jbel/main.php b/app/st_jbel/main.php new file mode 100644 index 0000000..1a56b90 --- /dev/null +++ b/app/st_jbel/main.php @@ -0,0 +1,547 @@ + + + + + +
+
+
+
+ + + +

Usulan Pencantuman Gelar

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_jbel/modal_revisi.php b/app/st_jbel/modal_revisi.php new file mode 100644 index 0000000..c8cb9f9 --- /dev/null +++ b/app/st_jbel/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_jbel/modal_riwayat.php b/app/st_jbel/modal_riwayat.php new file mode 100644 index 0000000..c5ea620 --- /dev/null +++ b/app/st_jbel/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_jbel/modal_tgg.php b/app/st_jbel/modal_tgg.php new file mode 100644 index 0000000..559efdb --- /dev/null +++ b/app/st_jbel/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_jbel/modal_verifikasi.php b/app/st_jbel/modal_verifikasi.php new file mode 100644 index 0000000..f5d31d8 --- /dev/null +++ b/app/st_jbel/modal_verifikasi.php @@ -0,0 +1,100 @@ + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/app/st_jbel/modal_verifikasi_rev.php b/app/st_jbel/modal_verifikasi_rev.php new file mode 100644 index 0000000..fcf60e8 --- /dev/null +++ b/app/st_jbel/modal_verifikasi_rev.php @@ -0,0 +1,12 @@ + + +
+ + \ No newline at end of file diff --git a/app/st_jbel/modal_view.php b/app/st_jbel/modal_view.php new file mode 100644 index 0000000..ddb1c44 --- /dev/null +++ b/app/st_jbel/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_jbel/not_notif.php b/app/st_jbel/not_notif.php new file mode 100644 index 0000000..e036f49 --- /dev/null +++ b/app/st_jbel/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_jbel/not_revnotif.php b/app/st_jbel/not_revnotif.php new file mode 100644 index 0000000..81b41b0 --- /dev/null +++ b/app/st_jbel/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_jbel/not_tggnotif.php b/app/st_jbel/not_tggnotif.php new file mode 100644 index 0000000..59fdf6a --- /dev/null +++ b/app/st_jbel/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_jbel/not_tmbnotif.php b/app/st_jbel/not_tmbnotif.php new file mode 100644 index 0000000..85f7f6c --- /dev/null +++ b/app/st_jbel/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_jbel/pdf/.htaccess b/app/st_jbel/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_jbel/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_jbel/pdf/crud.php b/app/st_jbel/pdf/crud.php new file mode 100644 index 0000000..cce4983 --- /dev/null +++ b/app/st_jbel/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_jbel/pdf/pdf/1046_NAMA & NO TELP.docx b/app/st_jbel/pdf/pdf/1046_NAMA & NO TELP.docx new file mode 100644 index 0000000..cc6d3b8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1046_NAMA & NO TELP.docx differ diff --git a/app/st_jbel/pdf/pdf/1053_WhatsApp Image 2023-02-16 at 09.06.01.jpeg b/app/st_jbel/pdf/pdf/1053_WhatsApp Image 2023-02-16 at 09.06.01.jpeg new file mode 100644 index 0000000..181bc7e Binary files /dev/null and b/app/st_jbel/pdf/pdf/1053_WhatsApp Image 2023-02-16 at 09.06.01.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1056_No. Telp. Dewi WS.docx b/app/st_jbel/pdf/pdf/1056_No. Telp. Dewi WS.docx new file mode 100644 index 0000000..ca82842 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1056_No. Telp. Dewi WS.docx differ diff --git a/app/st_jbel/pdf/pdf/1065_889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg b/app/st_jbel/pdf/pdf/1065_889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg new file mode 100644 index 0000000..2ef4d60 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1065_889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1358_3A.jpeg b/app/st_jbel/pdf/pdf/1358_3A.jpeg new file mode 100644 index 0000000..f58e3f3 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1358_3A.jpeg differ diff --git a/app/st_jbel/pdf/pdf/136_SURAT IBEL.jpeg b/app/st_jbel/pdf/pdf/136_SURAT IBEL.jpeg new file mode 100644 index 0000000..19fd48d Binary files /dev/null and b/app/st_jbel/pdf/pdf/136_SURAT IBEL.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1371_NO TELPON IDA R.docx b/app/st_jbel/pdf/pdf/1371_NO TELPON IDA R.docx new file mode 100644 index 0000000..873de7f Binary files /dev/null and b/app/st_jbel/pdf/pdf/1371_NO TELPON IDA R.docx differ diff --git a/app/st_jbel/pdf/pdf/1380_2.SK Jab_Fungsional Terakhir b/app/st_jbel/pdf/pdf/1380_2.SK Jab_Fungsional Terakhir new file mode 100644 index 0000000..f0067ea Binary files /dev/null and b/app/st_jbel/pdf/pdf/1380_2.SK Jab_Fungsional Terakhir differ diff --git a/app/st_jbel/pdf/pdf/1439_NO. TELPON_HERU PUJISANTOSO.docx b/app/st_jbel/pdf/pdf/1439_NO. TELPON_HERU PUJISANTOSO.docx new file mode 100644 index 0000000..f2fd513 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1439_NO. TELPON_HERU PUJISANTOSO.docx differ diff --git a/app/st_jbel/pdf/pdf/1496_1046_NAMA & NO TELP.docx b/app/st_jbel/pdf/pdf/1496_1046_NAMA & NO TELP.docx new file mode 100644 index 0000000..cc6d3b8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1496_1046_NAMA & NO TELP.docx differ diff --git a/app/st_jbel/pdf/pdf/1535_Akreditasi unisma.jpeg b/app/st_jbel/pdf/pdf/1535_Akreditasi unisma.jpeg new file mode 100644 index 0000000..b8a3fdd Binary files /dev/null and b/app/st_jbel/pdf/pdf/1535_Akreditasi unisma.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1544_1496_1046_NAMA & NO TELP.docx b/app/st_jbel/pdf/pdf/1544_1496_1046_NAMA & NO TELP.docx new file mode 100644 index 0000000..cc6d3b8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1544_1496_1046_NAMA & NO TELP.docx differ diff --git a/app/st_jbel/pdf/pdf/1551_081344110967.docx b/app/st_jbel/pdf/pdf/1551_081344110967.docx new file mode 100644 index 0000000..a91730d Binary files /dev/null and b/app/st_jbel/pdf/pdf/1551_081344110967.docx differ diff --git a/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-IJAZAH NERS.PDF b/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-IJAZAH NERS.PDF new file mode 100644 index 0000000..ab5b839 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-IJAZAH NERS.PDF differ diff --git a/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF b/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF new file mode 100644 index 0000000..2649400 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1624_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF differ diff --git a/app/st_jbel/pdf/pdf/1654_serkom dr.ani.jpeg b/app/st_jbel/pdf/pdf/1654_serkom dr.ani.jpeg new file mode 100644 index 0000000..743b150 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1654_serkom dr.ani.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1656_NO HP.txt b/app/st_jbel/pdf/pdf/1656_NO HP.txt new file mode 100644 index 0000000..e3ec954 --- /dev/null +++ b/app/st_jbel/pdf/pdf/1656_NO HP.txt @@ -0,0 +1 @@ +DWI INDRIANI LESTARI 085326777724 \ No newline at end of file diff --git a/app/st_jbel/pdf/pdf/1659_NO HP 1.txt b/app/st_jbel/pdf/pdf/1659_NO HP 1.txt new file mode 100644 index 0000000..37ed51b --- /dev/null +++ b/app/st_jbel/pdf/pdf/1659_NO HP 1.txt @@ -0,0 +1 @@ +MOHAMMAD BARLIAN : 081317647987 \ No newline at end of file diff --git a/app/st_jbel/pdf/pdf/1717_SK CPNS aziza.PDF b/app/st_jbel/pdf/pdf/1717_SK CPNS aziza.PDF new file mode 100644 index 0000000..29cb884 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1717_SK CPNS aziza.PDF differ diff --git a/app/st_jbel/pdf/pdf/1718_SK JABATAN FUNGSIONAL LAMA.PDF b/app/st_jbel/pdf/pdf/1718_SK JABATAN FUNGSIONAL LAMA.PDF new file mode 100644 index 0000000..0b6c36d Binary files /dev/null and b/app/st_jbel/pdf/pdf/1718_SK JABATAN FUNGSIONAL LAMA.PDF differ diff --git a/app/st_jbel/pdf/pdf/1723_WhatsApp Image 2023-06-16 at 14.40.14.jpeg b/app/st_jbel/pdf/pdf/1723_WhatsApp Image 2023-06-16 at 14.40.14.jpeg new file mode 100644 index 0000000..14e19ad Binary files /dev/null and b/app/st_jbel/pdf/pdf/1723_WhatsApp Image 2023-06-16 at 14.40.14.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1741_1544_1496_1046_NAMA & NO TELP.docx b/app/st_jbel/pdf/pdf/1741_1544_1496_1046_NAMA & NO TELP.docx new file mode 100644 index 0000000..cc6d3b8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1741_1544_1496_1046_NAMA & NO TELP.docx differ diff --git a/app/st_jbel/pdf/pdf/1884_NO. HP PAULUS.docx b/app/st_jbel/pdf/pdf/1884_NO. HP PAULUS.docx new file mode 100644 index 0000000..afb5b03 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1884_NO. HP PAULUS.docx differ diff --git a/app/st_jbel/pdf/pdf/1891_NOMER HP NIKEN DAMAYANTI.docx b/app/st_jbel/pdf/pdf/1891_NOMER HP NIKEN DAMAYANTI.docx new file mode 100644 index 0000000..002c47d Binary files /dev/null and b/app/st_jbel/pdf/pdf/1891_NOMER HP NIKEN DAMAYANTI.docx differ diff --git a/app/st_jbel/pdf/pdf/1901_nomor hp.docx b/app/st_jbel/pdf/pdf/1901_nomor hp.docx new file mode 100644 index 0000000..f2dcfc0 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1901_nomor hp.docx differ diff --git a/app/st_jbel/pdf/pdf/1908_NO HP.docx b/app/st_jbel/pdf/pdf/1908_NO HP.docx new file mode 100644 index 0000000..3263431 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1908_NO HP.docx differ diff --git a/app/st_jbel/pdf/pdf/1962_385_STR KT_dr. Herman.jpeg b/app/st_jbel/pdf/pdf/1962_385_STR KT_dr. Herman.jpeg new file mode 100644 index 0000000..4bac534 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1962_385_STR KT_dr. Herman.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1962_385_Transkrip Nilai S3 dr. Herman.jpeg b/app/st_jbel/pdf/pdf/1962_385_Transkrip Nilai S3 dr. Herman.jpeg new file mode 100644 index 0000000..3ff9ff6 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1962_385_Transkrip Nilai S3 dr. Herman.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1964_no telp dr. herman.docx b/app/st_jbel/pdf/pdf/1964_no telp dr. herman.docx new file mode 100644 index 0000000..a6ddb7f Binary files /dev/null and b/app/st_jbel/pdf/pdf/1964_no telp dr. herman.docx differ diff --git a/app/st_jbel/pdf/pdf/1967_Sertifikat Akresitasi.jpeg b/app/st_jbel/pdf/pdf/1967_Sertifikat Akresitasi.jpeg new file mode 100644 index 0000000..58af147 Binary files /dev/null and b/app/st_jbel/pdf/pdf/1967_Sertifikat Akresitasi.jpeg differ diff --git a/app/st_jbel/pdf/pdf/1980_WhatsApp Image 2023-09-05 at 09.34.20.jpeg b/app/st_jbel/pdf/pdf/1980_WhatsApp Image 2023-09-05 at 09.34.20.jpeg new file mode 100644 index 0000000..cde7a5e Binary files /dev/null and b/app/st_jbel/pdf/pdf/1980_WhatsApp Image 2023-09-05 at 09.34.20.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2002_NOMER AKTIF YANG DAPAT DIHUBUNGI 085649134033.docx b/app/st_jbel/pdf/pdf/2002_NOMER AKTIF YANG DAPAT DIHUBUNGI 085649134033.docx new file mode 100644 index 0000000..f178a3b Binary files /dev/null and b/app/st_jbel/pdf/pdf/2002_NOMER AKTIF YANG DAPAT DIHUBUNGI 085649134033.docx differ diff --git a/app/st_jbel/pdf/pdf/2076_7_Ijasah S3 Kurnia Penta Seputra.PDF b/app/st_jbel/pdf/pdf/2076_7_Ijasah S3 Kurnia Penta Seputra.PDF new file mode 100644 index 0000000..4c37a2d Binary files /dev/null and b/app/st_jbel/pdf/pdf/2076_7_Ijasah S3 Kurnia Penta Seputra.PDF differ diff --git a/app/st_jbel/pdf/pdf/2086_IJAZAH NERS - Diah Retnoningtyastuti.PDF b/app/st_jbel/pdf/pdf/2086_IJAZAH NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..699d88a Binary files /dev/null and b/app/st_jbel/pdf/pdf/2086_IJAZAH NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_jbel/pdf/pdf/2086_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF b/app/st_jbel/pdf/pdf/2086_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..a1e9d36 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2086_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_jbel/pdf/pdf/2108_2005_akreditasi skep.pdf.crdownload b/app/st_jbel/pdf/pdf/2108_2005_akreditasi skep.pdf.crdownload new file mode 100644 index 0000000..1fb8dff Binary files /dev/null and b/app/st_jbel/pdf/pdf/2108_2005_akreditasi skep.pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/2110_NOMER HP CATUR YULIAWAN.docx b/app/st_jbel/pdf/pdf/2110_NOMER HP CATUR YULIAWAN.docx new file mode 100644 index 0000000..cc7e9e6 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2110_NOMER HP CATUR YULIAWAN.docx differ diff --git a/app/st_jbel/pdf/pdf/2223_WhatsApp Image 2024-01-08 at 08.31.53.jpeg b/app/st_jbel/pdf/pdf/2223_WhatsApp Image 2024-01-08 at 08.31.53.jpeg new file mode 100644 index 0000000..5e08053 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2223_WhatsApp Image 2024-01-08 at 08.31.53.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2227_WhatsApp Image 2024-01-08 at 08.41.33.jpeg b/app/st_jbel/pdf/pdf/2227_WhatsApp Image 2024-01-08 at 08.41.33.jpeg new file mode 100644 index 0000000..ee08fe0 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2227_WhatsApp Image 2024-01-08 at 08.41.33.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2240_WhatsApp Image 2024-01-08 at 09.03.37.jpeg b/app/st_jbel/pdf/pdf/2240_WhatsApp Image 2024-01-08 at 09.03.37.jpeg new file mode 100644 index 0000000..b5d7833 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2240_WhatsApp Image 2024-01-08 at 09.03.37.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2246_No HP Aktif.docx b/app/st_jbel/pdf/pdf/2246_No HP Aktif.docx new file mode 100644 index 0000000..1c1614b Binary files /dev/null and b/app/st_jbel/pdf/pdf/2246_No HP Aktif.docx differ diff --git a/app/st_jbel/pdf/pdf/2254_WhatsApp Image 2024-01-08 at 09.28.33.jpeg b/app/st_jbel/pdf/pdf/2254_WhatsApp Image 2024-01-08 at 09.28.33.jpeg new file mode 100644 index 0000000..db09c14 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2254_WhatsApp Image 2024-01-08 at 09.28.33.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2269_WhatsApp Image 2024-01-08 at 10.24.18.jpeg b/app/st_jbel/pdf/pdf/2269_WhatsApp Image 2024-01-08 at 10.24.18.jpeg new file mode 100644 index 0000000..cc0aa5f Binary files /dev/null and b/app/st_jbel/pdf/pdf/2269_WhatsApp Image 2024-01-08 at 10.24.18.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2287_WhatsApp Image 2024-01-08 at 11.54.35.jpeg b/app/st_jbel/pdf/pdf/2287_WhatsApp Image 2024-01-08 at 11.54.35.jpeg new file mode 100644 index 0000000..474c658 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2287_WhatsApp Image 2024-01-08 at 11.54.35.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2325_WhatsApp Image 2024-01-08 at 14.54.09.jpeg b/app/st_jbel/pdf/pdf/2325_WhatsApp Image 2024-01-08 at 14.54.09.jpeg new file mode 100644 index 0000000..62ab488 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2325_WhatsApp Image 2024-01-08 at 14.54.09.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2342_PAK YUSAK.docx b/app/st_jbel/pdf/pdf/2342_PAK YUSAK.docx new file mode 100644 index 0000000..7bab878 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2342_PAK YUSAK.docx differ diff --git a/app/st_jbel/pdf/pdf/2397_WhatsApp Image 2024-01-10 at 07.23.41.jpeg b/app/st_jbel/pdf/pdf/2397_WhatsApp Image 2024-01-10 at 07.23.41.jpeg new file mode 100644 index 0000000..3742070 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2397_WhatsApp Image 2024-01-10 at 07.23.41.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2424_No hp.docx b/app/st_jbel/pdf/pdf/2424_No hp.docx new file mode 100644 index 0000000..80856d1 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2424_No hp.docx differ diff --git a/app/st_jbel/pdf/pdf/2432_HERMAN HIDAYAT, S.Kep.Ners.docx b/app/st_jbel/pdf/pdf/2432_HERMAN HIDAYAT, S.Kep.Ners.docx new file mode 100644 index 0000000..1fae3da Binary files /dev/null and b/app/st_jbel/pdf/pdf/2432_HERMAN HIDAYAT, S.Kep.Ners.docx differ diff --git a/app/st_jbel/pdf/pdf/2438_nomor hp b/app/st_jbel/pdf/pdf/2438_nomor hp new file mode 100644 index 0000000..3b2f413 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2438_nomor hp differ diff --git a/app/st_jbel/pdf/pdf/2446_WhatsApp Image 2024-01-10 at 12.55.41.jpeg b/app/st_jbel/pdf/pdf/2446_WhatsApp Image 2024-01-10 at 12.55.41.jpeg new file mode 100644 index 0000000..615ee28 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2446_WhatsApp Image 2024-01-10 at 12.55.41.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2490_NO TELP WACHID ABDILLAH.jpeg b/app/st_jbel/pdf/pdf/2490_NO TELP WACHID ABDILLAH.jpeg new file mode 100644 index 0000000..593f9d3 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2490_NO TELP WACHID ABDILLAH.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2496_Nomor Hp.docx b/app/st_jbel/pdf/pdf/2496_Nomor Hp.docx new file mode 100644 index 0000000..4519a72 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2496_Nomor Hp.docx differ diff --git a/app/st_jbel/pdf/pdf/2497_Nomor Hp.docx b/app/st_jbel/pdf/pdf/2497_Nomor Hp.docx new file mode 100644 index 0000000..27d03fe Binary files /dev/null and b/app/st_jbel/pdf/pdf/2497_Nomor Hp.docx differ diff --git a/app/st_jbel/pdf/pdf/2518_SK III b b/app/st_jbel/pdf/pdf/2518_SK III b new file mode 100644 index 0000000..3f524a8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2518_SK III b differ diff --git a/app/st_jbel/pdf/pdf/2520_Ijazah S1 b/app/st_jbel/pdf/pdf/2520_Ijazah S1 new file mode 100644 index 0000000..7b1a2b5 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2520_Ijazah S1 differ diff --git a/app/st_jbel/pdf/pdf/2520_Transkrip S1 b/app/st_jbel/pdf/pdf/2520_Transkrip S1 new file mode 100644 index 0000000..de69e99 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2520_Transkrip S1 differ diff --git a/app/st_jbel/pdf/pdf/2523_10. Surat Ijin Belajar b/app/st_jbel/pdf/pdf/2523_10. Surat Ijin Belajar new file mode 100644 index 0000000..d75b6e5 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2523_10. Surat Ijin Belajar differ diff --git a/app/st_jbel/pdf/pdf/2534_IJAZAH NERS - Diah Retnoningtyastuti.PDF b/app/st_jbel/pdf/pdf/2534_IJAZAH NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..699d88a Binary files /dev/null and b/app/st_jbel/pdf/pdf/2534_IJAZAH NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_jbel/pdf/pdf/2534_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF b/app/st_jbel/pdf/pdf/2534_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..a1e9d36 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2534_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_jbel/pdf/pdf/2578_NO. HP Dr.dr. KRISNI SOEBANDIJAH, Sp.A(K).docx b/app/st_jbel/pdf/pdf/2578_NO. HP Dr.dr. KRISNI SOEBANDIJAH, Sp.A(K).docx new file mode 100644 index 0000000..fbe7201 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2578_NO. HP Dr.dr. KRISNI SOEBANDIJAH, Sp.A(K).docx differ diff --git a/app/st_jbel/pdf/pdf/2592_Nomor telepon aktif.PDF b/app/st_jbel/pdf/pdf/2592_Nomor telepon aktif.PDF new file mode 100644 index 0000000..1e22a25 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2592_Nomor telepon aktif.PDF differ diff --git a/app/st_jbel/pdf/pdf/2601_No. Tlfn_Romi Kiki.docx b/app/st_jbel/pdf/pdf/2601_No. Tlfn_Romi Kiki.docx new file mode 100644 index 0000000..a113e34 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2601_No. Tlfn_Romi Kiki.docx differ diff --git a/app/st_jbel/pdf/pdf/2660_NO TLFN.docx b/app/st_jbel/pdf/pdf/2660_NO TLFN.docx new file mode 100644 index 0000000..1759913 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2660_NO TLFN.docx differ diff --git a/app/st_jbel/pdf/pdf/2672_NO Hp.jpeg b/app/st_jbel/pdf/pdf/2672_NO Hp.jpeg new file mode 100644 index 0000000..3cd10dc Binary files /dev/null and b/app/st_jbel/pdf/pdf/2672_NO Hp.jpeg differ diff --git a/app/st_jbel/pdf/pdf/2746_NOMOR YANG BISA DIHUBUNGI.docx b/app/st_jbel/pdf/pdf/2746_NOMOR YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..1b75aff Binary files /dev/null and b/app/st_jbel/pdf/pdf/2746_NOMOR YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_jbel/pdf/pdf/2782_TRANSKRIP NERS - Wahyu Puji Astutik.PDF b/app/st_jbel/pdf/pdf/2782_TRANSKRIP NERS - Wahyu Puji Astutik.PDF new file mode 100644 index 0000000..211ac20 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2782_TRANSKRIP NERS - Wahyu Puji Astutik.PDF differ diff --git a/app/st_jbel/pdf/pdf/2783_IJAZAH NERS - Wahyu Puji Astutik.PDF b/app/st_jbel/pdf/pdf/2783_IJAZAH NERS - Wahyu Puji Astutik.PDF new file mode 100644 index 0000000..431eca0 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2783_IJAZAH NERS - Wahyu Puji Astutik.PDF differ diff --git a/app/st_jbel/pdf/pdf/2804_Ary Dwi Rahmawati-IJAZAH NERS.PDF b/app/st_jbel/pdf/pdf/2804_Ary Dwi Rahmawati-IJAZAH NERS.PDF new file mode 100644 index 0000000..ab5b839 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2804_Ary Dwi Rahmawati-IJAZAH NERS.PDF differ diff --git a/app/st_jbel/pdf/pdf/2805_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF b/app/st_jbel/pdf/pdf/2805_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF new file mode 100644 index 0000000..2649400 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2805_Ary Dwi Rahmawati-TRANSKRIP NERS.PDF differ diff --git a/app/st_jbel/pdf/pdf/2867_IJAZAH NERS - Herman Hidayat.PDF b/app/st_jbel/pdf/pdf/2867_IJAZAH NERS - Herman Hidayat.PDF new file mode 100644 index 0000000..e633626 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2867_IJAZAH NERS - Herman Hidayat.PDF differ diff --git a/app/st_jbel/pdf/pdf/2868_TRANSKRIP NERS - Herman Hidayat.PDF b/app/st_jbel/pdf/pdf/2868_TRANSKRIP NERS - Herman Hidayat.PDF new file mode 100644 index 0000000..07b4a84 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2868_TRANSKRIP NERS - Herman Hidayat.PDF differ diff --git a/app/st_jbel/pdf/pdf/2870_TRANSKRIP NERS Rohmah.PDF b/app/st_jbel/pdf/pdf/2870_TRANSKRIP NERS Rohmah.PDF new file mode 100644 index 0000000..d21f54c Binary files /dev/null and b/app/st_jbel/pdf/pdf/2870_TRANSKRIP NERS Rohmah.PDF differ diff --git a/app/st_jbel/pdf/pdf/2929_telp wachid abd.docx b/app/st_jbel/pdf/pdf/2929_telp wachid abd.docx new file mode 100644 index 0000000..a9dc3c5 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2929_telp wachid abd.docx differ diff --git a/app/st_jbel/pdf/pdf/2933_65_ijin belajarMASRURIN (1).pdf.crdownload b/app/st_jbel/pdf/pdf/2933_65_ijin belajarMASRURIN (1).pdf.crdownload new file mode 100644 index 0000000..8946d1d Binary files /dev/null and b/app/st_jbel/pdf/pdf/2933_65_ijin belajarMASRURIN (1).pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/2934_66_Sk 3c_Masrurin-1.pdf.crdownload b/app/st_jbel/pdf/pdf/2934_66_Sk 3c_Masrurin-1.pdf.crdownload new file mode 100644 index 0000000..011b0dc Binary files /dev/null and b/app/st_jbel/pdf/pdf/2934_66_Sk 3c_Masrurin-1.pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/2935_67_sk jabfung penyelia_masrurin.pdf.crdownload b/app/st_jbel/pdf/pdf/2935_67_sk jabfung penyelia_masrurin.pdf.crdownload new file mode 100644 index 0000000..7da0580 Binary files /dev/null and b/app/st_jbel/pdf/pdf/2935_67_sk jabfung penyelia_masrurin.pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/3076_No HP.docx b/app/st_jbel/pdf/pdf/3076_No HP.docx new file mode 100644 index 0000000..44746ee Binary files /dev/null and b/app/st_jbel/pdf/pdf/3076_No HP.docx differ diff --git a/app/st_jbel/pdf/pdf/3086_TLP RUDI.txt b/app/st_jbel/pdf/pdf/3086_TLP RUDI.txt new file mode 100644 index 0000000..a85f824 --- /dev/null +++ b/app/st_jbel/pdf/pdf/3086_TLP RUDI.txt @@ -0,0 +1 @@ +NO TLP 085100678922 \ No newline at end of file diff --git a/app/st_jbel/pdf/pdf/3276_SK CPNS.PDF b/app/st_jbel/pdf/pdf/3276_SK CPNS.PDF new file mode 100644 index 0000000..25758c8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3276_SK CPNS.PDF differ diff --git a/app/st_jbel/pdf/pdf/3327_IJAZAH NERS - Theresia Emiliana Rahmawati (2).PDF b/app/st_jbel/pdf/pdf/3327_IJAZAH NERS - Theresia Emiliana Rahmawati (2).PDF new file mode 100644 index 0000000..8008118 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3327_IJAZAH NERS - Theresia Emiliana Rahmawati (2).PDF differ diff --git a/app/st_jbel/pdf/pdf/3328_TRANSKRIP NERS - Theresia Emiliana Rahmawati (1).PDF b/app/st_jbel/pdf/pdf/3328_TRANSKRIP NERS - Theresia Emiliana Rahmawati (1).PDF new file mode 100644 index 0000000..d5e168f Binary files /dev/null and b/app/st_jbel/pdf/pdf/3328_TRANSKRIP NERS - Theresia Emiliana Rahmawati (1).PDF differ diff --git a/app/st_jbel/pdf/pdf/3338_TRANSKRIP NERS - Siti Restutin.PDF b/app/st_jbel/pdf/pdf/3338_TRANSKRIP NERS - Siti Restutin.PDF new file mode 100644 index 0000000..c066b9a Binary files /dev/null and b/app/st_jbel/pdf/pdf/3338_TRANSKRIP NERS - Siti Restutin.PDF differ diff --git a/app/st_jbel/pdf/pdf/3344_IJAZAH NERS - Adi Wiarto.PDF b/app/st_jbel/pdf/pdf/3344_IJAZAH NERS - Adi Wiarto.PDF new file mode 100644 index 0000000..85fac36 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3344_IJAZAH NERS - Adi Wiarto.PDF differ diff --git a/app/st_jbel/pdf/pdf/3385_IJAZAH NERS - Narsiti.PDF b/app/st_jbel/pdf/pdf/3385_IJAZAH NERS - Narsiti.PDF new file mode 100644 index 0000000..4e9b23b Binary files /dev/null and b/app/st_jbel/pdf/pdf/3385_IJAZAH NERS - Narsiti.PDF differ diff --git a/app/st_jbel/pdf/pdf/3466_PAK TERINTEGRASI.jpeg b/app/st_jbel/pdf/pdf/3466_PAK TERINTEGRASI.jpeg new file mode 100644 index 0000000..2ac1651 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3466_PAK TERINTEGRASI.jpeg differ diff --git a/app/st_jbel/pdf/pdf/3542_2094_185_NO HP.pdf.crdownload b/app/st_jbel/pdf/pdf/3542_2094_185_NO HP.pdf.crdownload new file mode 100644 index 0000000..0137101 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3542_2094_185_NO HP.pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/3549_SK AIPT_3166-Universitas Ma Chung 2016.PDF b/app/st_jbel/pdf/pdf/3549_SK AIPT_3166-Universitas Ma Chung 2016.PDF new file mode 100644 index 0000000..086c346 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3549_SK AIPT_3166-Universitas Ma Chung 2016.PDF differ diff --git a/app/st_jbel/pdf/pdf/3549_WhatsApp Image 2024-06-24 at 14.12.52.jpeg b/app/st_jbel/pdf/pdf/3549_WhatsApp Image 2024-06-24 at 14.12.52.jpeg new file mode 100644 index 0000000..00b92f9 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3549_WhatsApp Image 2024-06-24 at 14.12.52.jpeg differ diff --git a/app/st_jbel/pdf/pdf/3617_no telp zainuri.jpeg b/app/st_jbel/pdf/pdf/3617_no telp zainuri.jpeg new file mode 100644 index 0000000..578c26f Binary files /dev/null and b/app/st_jbel/pdf/pdf/3617_no telp zainuri.jpeg differ diff --git a/app/st_jbel/pdf/pdf/3639_Sertifikat Akreditasi prwt,ners.pdf.crdownload b/app/st_jbel/pdf/pdf/3639_Sertifikat Akreditasi prwt,ners.pdf.crdownload new file mode 100644 index 0000000..6a0b31e Binary files /dev/null and b/app/st_jbel/pdf/pdf/3639_Sertifikat Akreditasi prwt,ners.pdf.crdownload differ diff --git a/app/st_jbel/pdf/pdf/3705_SK CPNS.PDF b/app/st_jbel/pdf/pdf/3705_SK CPNS.PDF new file mode 100644 index 0000000..25758c8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3705_SK CPNS.PDF differ diff --git a/app/st_jbel/pdf/pdf/3711_IJAZAH NERS - Mohamad Agus Tiar.PDF b/app/st_jbel/pdf/pdf/3711_IJAZAH NERS - Mohamad Agus Tiar.PDF new file mode 100644 index 0000000..2a2a161 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3711_IJAZAH NERS - Mohamad Agus Tiar.PDF differ diff --git a/app/st_jbel/pdf/pdf/3712_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF b/app/st_jbel/pdf/pdf/3712_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF new file mode 100644 index 0000000..a2e970c Binary files /dev/null and b/app/st_jbel/pdf/pdf/3712_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF differ diff --git a/app/st_jbel/pdf/pdf/3716_akreditasi kampus.jpeg b/app/st_jbel/pdf/pdf/3716_akreditasi kampus.jpeg new file mode 100644 index 0000000..1ac9827 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3716_akreditasi kampus.jpeg differ diff --git a/app/st_jbel/pdf/pdf/3749_ IZIN BELAJAR S2 b/app/st_jbel/pdf/pdf/3749_ IZIN BELAJAR S2 new file mode 100644 index 0000000..989c573 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3749_ IZIN BELAJAR S2 differ diff --git a/app/st_jbel/pdf/pdf/3828_IJAZAH NERS - Muhamad Khoirul Imron.PDF b/app/st_jbel/pdf/pdf/3828_IJAZAH NERS - Muhamad Khoirul Imron.PDF new file mode 100644 index 0000000..bb029c8 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3828_IJAZAH NERS - Muhamad Khoirul Imron.PDF differ diff --git a/app/st_jbel/pdf/pdf/3829_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF b/app/st_jbel/pdf/pdf/3829_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF new file mode 100644 index 0000000..f127010 Binary files /dev/null and b/app/st_jbel/pdf/pdf/3829_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF differ diff --git a/app/st_jbel/pdf/pdf/385_STR KT_dr. Herman.jpeg b/app/st_jbel/pdf/pdf/385_STR KT_dr. Herman.jpeg new file mode 100644 index 0000000..4bac534 Binary files /dev/null and b/app/st_jbel/pdf/pdf/385_STR KT_dr. Herman.jpeg differ diff --git a/app/st_jbel/pdf/pdf/385_Transkrip Nilai S3 dr. Herman.jpeg b/app/st_jbel/pdf/pdf/385_Transkrip Nilai S3 dr. Herman.jpeg new file mode 100644 index 0000000..3ff9ff6 Binary files /dev/null and b/app/st_jbel/pdf/pdf/385_Transkrip Nilai S3 dr. Herman.jpeg differ diff --git a/app/st_jbel/pdf/pdf/389_WMA_surat Keterangan persetujuan fellow Jepang.jpeg b/app/st_jbel/pdf/pdf/389_WMA_surat Keterangan persetujuan fellow Jepang.jpeg new file mode 100644 index 0000000..5c652bf Binary files /dev/null and b/app/st_jbel/pdf/pdf/389_WMA_surat Keterangan persetujuan fellow Jepang.jpeg differ diff --git a/app/st_jbel/pdf/pdf/392_STR KT_dr. Wilma Agustina.jpeg b/app/st_jbel/pdf/pdf/392_STR KT_dr. Wilma Agustina.jpeg new file mode 100644 index 0000000..5782d86 Binary files /dev/null and b/app/st_jbel/pdf/pdf/392_STR KT_dr. Wilma Agustina.jpeg differ diff --git a/app/st_jbel/pdf/pdf/392_WMA_Sertifikat Jepang.jpeg b/app/st_jbel/pdf/pdf/392_WMA_Sertifikat Jepang.jpeg new file mode 100644 index 0000000..238dbed Binary files /dev/null and b/app/st_jbel/pdf/pdf/392_WMA_Sertifikat Jepang.jpeg differ diff --git a/app/st_jbel/pdf/pdf/393_ARV_surat Ket Persetujuan Fellow Jepang.jpeg b/app/st_jbel/pdf/pdf/393_ARV_surat Ket Persetujuan Fellow Jepang.jpeg new file mode 100644 index 0000000..cfbce8e Binary files /dev/null and b/app/st_jbel/pdf/pdf/393_ARV_surat Ket Persetujuan Fellow Jepang.jpeg differ diff --git a/app/st_jbel/pdf/pdf/395_ARV_sertifikat Jepang.jpeg b/app/st_jbel/pdf/pdf/395_ARV_sertifikat Jepang.jpeg new file mode 100644 index 0000000..5ff213c Binary files /dev/null and b/app/st_jbel/pdf/pdf/395_ARV_sertifikat Jepang.jpeg differ diff --git a/app/st_jbel/pdf/pdf/395_STR KT_dr. Arviansyah.jpeg b/app/st_jbel/pdf/pdf/395_STR KT_dr. Arviansyah.jpeg new file mode 100644 index 0000000..61d8663 Binary files /dev/null and b/app/st_jbel/pdf/pdf/395_STR KT_dr. Arviansyah.jpeg differ diff --git a/app/st_jbel/pdf/pdf/396_STR KT dr. Yudi Siswanto (1).jpeg b/app/st_jbel/pdf/pdf/396_STR KT dr. Yudi Siswanto (1).jpeg new file mode 100644 index 0000000..afd5658 Binary files /dev/null and b/app/st_jbel/pdf/pdf/396_STR KT dr. Yudi Siswanto (1).jpeg differ diff --git a/app/st_jbel/pdf/pdf/458_YULIUS_JABFUNG AHLI_2022.PDF b/app/st_jbel/pdf/pdf/458_YULIUS_JABFUNG AHLI_2022.PDF new file mode 100644 index 0000000..cb205ff Binary files /dev/null and b/app/st_jbel/pdf/pdf/458_YULIUS_JABFUNG AHLI_2022.PDF differ diff --git a/app/st_jbel/pdf/pdf/710_BAN.jpg (1) b/app/st_jbel/pdf/pdf/710_BAN.jpg (1) new file mode 100644 index 0000000..75cf44b Binary files /dev/null and b/app/st_jbel/pdf/pdf/710_BAN.jpg (1) differ diff --git a/app/st_jbel/pdf/pdf/866_WhatsApp Image 2023-01-11 at 13.56.24.jpeg b/app/st_jbel/pdf/pdf/866_WhatsApp Image 2023-01-11 at 13.56.24.jpeg new file mode 100644 index 0000000..f58e3f3 Binary files /dev/null and b/app/st_jbel/pdf/pdf/866_WhatsApp Image 2023-01-11 at 13.56.24.jpeg differ diff --git a/app/st_jbel/pdf/pdf/875_3A.jpeg b/app/st_jbel/pdf/pdf/875_3A.jpeg new file mode 100644 index 0000000..f58e3f3 Binary files /dev/null and b/app/st_jbel/pdf/pdf/875_3A.jpeg differ diff --git a/app/st_jbel/pdf/pdf/889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg b/app/st_jbel/pdf/pdf/889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg new file mode 100644 index 0000000..2ef4d60 Binary files /dev/null and b/app/st_jbel/pdf/pdf/889_WhatsApp Image 2022-12-28 at 13.54.56.jpeg differ diff --git a/app/st_jbel/pdf/tabel_upl_cv.php b/app/st_jbel/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..14be6d5 --- /dev/null +++ b/app/st_jbel/pdf/tabel_upl_cv.php @@ -0,0 +1,86 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_jbel/pdf/upl_cv.php b/app/st_jbel/pdf/upl_cv.php new file mode 100644 index 0000000..d4ea69d --- /dev/null +++ b/app/st_jbel/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_jbel (riwayat_jbel_id,syarat_jbel_id) VALUES ('$riwayat_jbel_id','$syarat_jbel_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_jbel WHERE riwayat_jbel_id=$riwayat_jbel_id AND syarat_jbel_id=$syarat_jbel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_jbel_idxx=$r1[0];} + +//$riwayat_syarat_jbel_id=$_POST['riwayat_syarat_jbel_id_uploadz']; +$riwayat_syarat_jbel_id=$riwayat_syarat_jbel_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_jbel_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_jbel_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_jbel (riwayat_syarat_jbel_id,file,tgl_upload) VALUES ('$riwayat_syarat_jbel_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_jbel SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_jbel_id"); +echo $riwayat_syarat_jbel_id.' - '.$name_pdf; +?> + + diff --git a/app/st_jbel/tabel_daftar.php b/app/st_jbel/tabel_daftar.php new file mode 100644 index 0000000..d7b87c8 --- /dev/null +++ b/app/st_jbel/tabel_daftar.php @@ -0,0 +1,156 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_jbel/tabel_daftar_rev.php b/app/st_jbel/tabel_daftar_rev.php new file mode 100644 index 0000000..58bd0e0 --- /dev/null +++ b/app/st_jbel/tabel_daftar_rev.php @@ -0,0 +1,214 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_jbel/tabel_revisi.php b/app/st_jbel/tabel_revisi.php new file mode 100644 index 0000000..e874e44 --- /dev/null +++ b/app/st_jbel/tabel_revisi.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_jbel/tabel_riwayat.php b/app/st_jbel/tabel_riwayat.php new file mode 100644 index 0000000..98654b3 --- /dev/null +++ b/app/st_jbel/tabel_riwayat.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_jbel/tabel_tgg.php b/app/st_jbel/tabel_tgg.php new file mode 100644 index 0000000..d709769 --- /dev/null +++ b/app/st_jbel/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_jbel/upd_file.php b/app/st_jbel/upd_file.php new file mode 100644 index 0000000..964bfe6 --- /dev/null +++ b/app/st_jbel/upd_file.php @@ -0,0 +1,135 @@ + + +
+ + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_kbel/crud.php b/app/st_kbel/crud.php new file mode 100644 index 0000000..b67a559 --- /dev/null +++ b/app/st_kbel/crud.php @@ -0,0 +1,72 @@ + \ No newline at end of file diff --git a/app/st_kbel/main.php b/app/st_kbel/main.php new file mode 100644 index 0000000..914c0ab --- /dev/null +++ b/app/st_kbel/main.php @@ -0,0 +1,539 @@ + + + + + +
+
+
+
+ + + +

Keterangan-Belajar

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_kbel/modal_revisi.php b/app/st_kbel/modal_revisi.php new file mode 100644 index 0000000..e0db1dd --- /dev/null +++ b/app/st_kbel/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_kbel/modal_riwayat.php b/app/st_kbel/modal_riwayat.php new file mode 100644 index 0000000..13b7163 --- /dev/null +++ b/app/st_kbel/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_kbel/modal_tgg.php b/app/st_kbel/modal_tgg.php new file mode 100644 index 0000000..cf9120a --- /dev/null +++ b/app/st_kbel/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_kbel/modal_verifikasi.php b/app/st_kbel/modal_verifikasi.php new file mode 100644 index 0000000..d7ef4f3 --- /dev/null +++ b/app/st_kbel/modal_verifikasi.php @@ -0,0 +1,90 @@ + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +

+ +
+
+
+
+ +

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_kbel/modal_verifikasi_rev.php b/app/st_kbel/modal_verifikasi_rev.php new file mode 100644 index 0000000..f1ad49f --- /dev/null +++ b/app/st_kbel/modal_verifikasi_rev.php @@ -0,0 +1,12 @@ + + +
+ + \ No newline at end of file diff --git a/app/st_kbel/modal_view.php b/app/st_kbel/modal_view.php new file mode 100644 index 0000000..07bd932 --- /dev/null +++ b/app/st_kbel/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_kbel/not_notif.php b/app/st_kbel/not_notif.php new file mode 100644 index 0000000..81d2d91 --- /dev/null +++ b/app/st_kbel/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_kbel/not_revnotif.php b/app/st_kbel/not_revnotif.php new file mode 100644 index 0000000..3c28283 --- /dev/null +++ b/app/st_kbel/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_kbel/not_tggnotif.php b/app/st_kbel/not_tggnotif.php new file mode 100644 index 0000000..76be418 --- /dev/null +++ b/app/st_kbel/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_kbel/not_tmbnotif.php b/app/st_kbel/not_tmbnotif.php new file mode 100644 index 0000000..4271f0e --- /dev/null +++ b/app/st_kbel/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_kbel/pdf/.htaccess b/app/st_kbel/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_kbel/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_kbel/pdf/crud.php b/app/st_kbel/pdf/crud.php new file mode 100644 index 0000000..69eb207 --- /dev/null +++ b/app/st_kbel/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_kbel/pdf/pdf/119_No hp.docx b/app/st_kbel/pdf/pdf/119_No hp.docx new file mode 100644 index 0000000..8c93f7b Binary files /dev/null and b/app/st_kbel/pdf/pdf/119_No hp.docx differ diff --git a/app/st_kbel/pdf/pdf/125_no hp.docx b/app/st_kbel/pdf/pdf/125_no hp.docx new file mode 100644 index 0000000..0c30387 Binary files /dev/null and b/app/st_kbel/pdf/pdf/125_no hp.docx differ diff --git a/app/st_kbel/pdf/pdf/209_WhatsApp Image 2023-05-16 at 12.21.48.jpeg b/app/st_kbel/pdf/pdf/209_WhatsApp Image 2023-05-16 at 12.21.48.jpeg new file mode 100644 index 0000000..297f347 Binary files /dev/null and b/app/st_kbel/pdf/pdf/209_WhatsApp Image 2023-05-16 at 12.21.48.jpeg differ diff --git a/app/st_kbel/pdf/pdf/245_NOMOR YANG BISA DIHUBUNGI.docx b/app/st_kbel/pdf/pdf/245_NOMOR YANG BISA DIHUBUNGI.docx new file mode 100644 index 0000000..1b75aff Binary files /dev/null and b/app/st_kbel/pdf/pdf/245_NOMOR YANG BISA DIHUBUNGI.docx differ diff --git a/app/st_kbel/pdf/pdf/257_WhatsApp Image 2023-06-19 at 13.28.59.jpeg b/app/st_kbel/pdf/pdf/257_WhatsApp Image 2023-06-19 at 13.28.59.jpeg new file mode 100644 index 0000000..e9fa2dd Binary files /dev/null and b/app/st_kbel/pdf/pdf/257_WhatsApp Image 2023-06-19 at 13.28.59.jpeg differ diff --git a/app/st_kbel/pdf/pdf/288_44278-pendidikan-ijazah-20211026-890-IJASAH_DIII_Scan_11_Okt_2021_(1).docx b/app/st_kbel/pdf/pdf/288_44278-pendidikan-ijazah-20211026-890-IJASAH_DIII_Scan_11_Okt_2021_(1).docx new file mode 100644 index 0000000..14a22b1 Binary files /dev/null and b/app/st_kbel/pdf/pdf/288_44278-pendidikan-ijazah-20211026-890-IJASAH_DIII_Scan_11_Okt_2021_(1).docx differ diff --git a/app/st_kbel/pdf/pdf/291_NO HP 081554177133..docx b/app/st_kbel/pdf/pdf/291_NO HP 081554177133..docx new file mode 100644 index 0000000..4103a54 Binary files /dev/null and b/app/st_kbel/pdf/pdf/291_NO HP 081554177133..docx differ diff --git a/app/st_kbel/pdf/pdf/311_suket ibel nisa. b/app/st_kbel/pdf/pdf/311_suket ibel nisa. new file mode 100644 index 0000000..dd6fb63 Binary files /dev/null and b/app/st_kbel/pdf/pdf/311_suket ibel nisa. differ diff --git a/app/st_kbel/pdf/pdf/346_No. Telpon aktif dr. Nanda.docx b/app/st_kbel/pdf/pdf/346_No. Telpon aktif dr. Nanda.docx new file mode 100644 index 0000000..1c92bef Binary files /dev/null and b/app/st_kbel/pdf/pdf/346_No. Telpon aktif dr. Nanda.docx differ diff --git a/app/st_kbel/pdf/pdf/353_WhatsApp Image 2023-11-02 at 11.28.55.jpeg b/app/st_kbel/pdf/pdf/353_WhatsApp Image 2023-11-02 at 11.28.55.jpeg new file mode 100644 index 0000000..d6ee244 Binary files /dev/null and b/app/st_kbel/pdf/pdf/353_WhatsApp Image 2023-11-02 at 11.28.55.jpeg differ diff --git a/app/st_kbel/pdf/pdf/372_SK CPNS.PDF b/app/st_kbel/pdf/pdf/372_SK CPNS.PDF new file mode 100644 index 0000000..d9d47aa Binary files /dev/null and b/app/st_kbel/pdf/pdf/372_SK CPNS.PDF differ diff --git a/app/st_kbel/pdf/pdf/399_Nomor Hp.docx b/app/st_kbel/pdf/pdf/399_Nomor Hp.docx new file mode 100644 index 0000000..9438a0e Binary files /dev/null and b/app/st_kbel/pdf/pdf/399_Nomor Hp.docx differ diff --git a/app/st_kbel/pdf/pdf/3_WMA_surat Keterangan persetujuan fellow Jepang.jpeg b/app/st_kbel/pdf/pdf/3_WMA_surat Keterangan persetujuan fellow Jepang.jpeg new file mode 100644 index 0000000..5c652bf Binary files /dev/null and b/app/st_kbel/pdf/pdf/3_WMA_surat Keterangan persetujuan fellow Jepang.jpeg differ diff --git a/app/st_kbel/pdf/pdf/412_1993_NURHADI NO HP (2).docx b/app/st_kbel/pdf/pdf/412_1993_NURHADI NO HP (2).docx new file mode 100644 index 0000000..2a239f0 Binary files /dev/null and b/app/st_kbel/pdf/pdf/412_1993_NURHADI NO HP (2).docx differ diff --git a/app/st_kbel/pdf/pdf/418_IJAZAH NERS - Titik Nurhidayati (1).PDF b/app/st_kbel/pdf/pdf/418_IJAZAH NERS - Titik Nurhidayati (1).PDF new file mode 100644 index 0000000..ac55001 Binary files /dev/null and b/app/st_kbel/pdf/pdf/418_IJAZAH NERS - Titik Nurhidayati (1).PDF differ diff --git a/app/st_kbel/pdf/pdf/423_TRANSKRIP NERS - Titik Nurhidayati (1).PDF b/app/st_kbel/pdf/pdf/423_TRANSKRIP NERS - Titik Nurhidayati (1).PDF new file mode 100644 index 0000000..19bc291 Binary files /dev/null and b/app/st_kbel/pdf/pdf/423_TRANSKRIP NERS - Titik Nurhidayati (1).PDF differ diff --git a/app/st_kbel/pdf/pdf/427_TRANSKRIP NERS - Wahyu Puji Astutik.PDF b/app/st_kbel/pdf/pdf/427_TRANSKRIP NERS - Wahyu Puji Astutik.PDF new file mode 100644 index 0000000..211ac20 Binary files /dev/null and b/app/st_kbel/pdf/pdf/427_TRANSKRIP NERS - Wahyu Puji Astutik.PDF differ diff --git a/app/st_kbel/pdf/pdf/428_IJAZAH NERS - Wahyu Puji Astutik.PDF b/app/st_kbel/pdf/pdf/428_IJAZAH NERS - Wahyu Puji Astutik.PDF new file mode 100644 index 0000000..431eca0 Binary files /dev/null and b/app/st_kbel/pdf/pdf/428_IJAZAH NERS - Wahyu Puji Astutik.PDF differ diff --git a/app/st_kbel/pdf/pdf/431_IJAZAH NERS - Zainol Ahsan.PDF b/app/st_kbel/pdf/pdf/431_IJAZAH NERS - Zainol Ahsan.PDF new file mode 100644 index 0000000..9e93b0e Binary files /dev/null and b/app/st_kbel/pdf/pdf/431_IJAZAH NERS - Zainol Ahsan.PDF differ diff --git a/app/st_kbel/pdf/pdf/432_TRANSKRIP NERS - Zainol Ahsan.PDF b/app/st_kbel/pdf/pdf/432_TRANSKRIP NERS - Zainol Ahsan.PDF new file mode 100644 index 0000000..a1640ef Binary files /dev/null and b/app/st_kbel/pdf/pdf/432_TRANSKRIP NERS - Zainol Ahsan.PDF differ diff --git a/app/st_kbel/pdf/pdf/433_WhatsApp Image 2024-02-27 at 07.31.47.jpeg b/app/st_kbel/pdf/pdf/433_WhatsApp Image 2024-02-27 at 07.31.47.jpeg new file mode 100644 index 0000000..9a52d43 Binary files /dev/null and b/app/st_kbel/pdf/pdf/433_WhatsApp Image 2024-02-27 at 07.31.47.jpeg differ diff --git a/app/st_kbel/pdf/pdf/453_WhatsApp Image 2024-02-26 at 10.48.59.jpeg b/app/st_kbel/pdf/pdf/453_WhatsApp Image 2024-02-26 at 10.48.59.jpeg new file mode 100644 index 0000000..ad93413 Binary files /dev/null and b/app/st_kbel/pdf/pdf/453_WhatsApp Image 2024-02-26 at 10.48.59.jpeg differ diff --git a/app/st_kbel/pdf/pdf/486_IJAZAH NERS - Siti Restutin (3).PDF b/app/st_kbel/pdf/pdf/486_IJAZAH NERS - Siti Restutin (3).PDF new file mode 100644 index 0000000..95c8e48 Binary files /dev/null and b/app/st_kbel/pdf/pdf/486_IJAZAH NERS - Siti Restutin (3).PDF differ diff --git a/app/st_kbel/pdf/pdf/487_TRANSKRIP NERS - Siti Restutin.PDF b/app/st_kbel/pdf/pdf/487_TRANSKRIP NERS - Siti Restutin.PDF new file mode 100644 index 0000000..c066b9a Binary files /dev/null and b/app/st_kbel/pdf/pdf/487_TRANSKRIP NERS - Siti Restutin.PDF differ diff --git a/app/st_kbel/pdf/pdf/491_SK CPNS.PDF b/app/st_kbel/pdf/pdf/491_SK CPNS.PDF new file mode 100644 index 0000000..25758c8 Binary files /dev/null and b/app/st_kbel/pdf/pdf/491_SK CPNS.PDF differ diff --git a/app/st_kbel/pdf/pdf/492_IJAZAH NERS - Mohamad Agus Tiar.PDF b/app/st_kbel/pdf/pdf/492_IJAZAH NERS - Mohamad Agus Tiar.PDF new file mode 100644 index 0000000..2a2a161 Binary files /dev/null and b/app/st_kbel/pdf/pdf/492_IJAZAH NERS - Mohamad Agus Tiar.PDF differ diff --git a/app/st_kbel/pdf/pdf/493_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF b/app/st_kbel/pdf/pdf/493_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF new file mode 100644 index 0000000..a2e970c Binary files /dev/null and b/app/st_kbel/pdf/pdf/493_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF differ diff --git a/app/st_kbel/pdf/pdf/503_IJAZAH NERS - Dwi Ayu Yunita Sari.PDF b/app/st_kbel/pdf/pdf/503_IJAZAH NERS - Dwi Ayu Yunita Sari.PDF new file mode 100644 index 0000000..31d4349 Binary files /dev/null and b/app/st_kbel/pdf/pdf/503_IJAZAH NERS - Dwi Ayu Yunita Sari.PDF differ diff --git a/app/st_kbel/pdf/pdf/508_IJASAH S.Kep b/app/st_kbel/pdf/pdf/508_IJASAH S.Kep new file mode 100644 index 0000000..0190190 Binary files /dev/null and b/app/st_kbel/pdf/pdf/508_IJASAH S.Kep differ diff --git a/app/st_kbel/pdf/pdf/509_TRANSKRIP NILAI S.Kep b/app/st_kbel/pdf/pdf/509_TRANSKRIP NILAI S.Kep new file mode 100644 index 0000000..b5c4ea1 Binary files /dev/null and b/app/st_kbel/pdf/pdf/509_TRANSKRIP NILAI S.Kep differ diff --git a/app/st_kbel/pdf/pdf/555_IJAZAH NERS - Muhamad Khoirul Imron.PDF b/app/st_kbel/pdf/pdf/555_IJAZAH NERS - Muhamad Khoirul Imron.PDF new file mode 100644 index 0000000..bb029c8 Binary files /dev/null and b/app/st_kbel/pdf/pdf/555_IJAZAH NERS - Muhamad Khoirul Imron.PDF differ diff --git a/app/st_kbel/pdf/pdf/556_TRANSKRIP NERS - Muhamad Khoirul Imron.PDF b/app/st_kbel/pdf/pdf/556_TRANSKRIP NERS - Muhamad Khoirul Imron.PDF new file mode 100644 index 0000000..f127010 Binary files /dev/null and b/app/st_kbel/pdf/pdf/556_TRANSKRIP NERS - Muhamad Khoirul Imron.PDF differ diff --git a/app/st_kbel/pdf/pdf/588_IJAZAH NERS - Herman Hidayat.PDF b/app/st_kbel/pdf/pdf/588_IJAZAH NERS - Herman Hidayat.PDF new file mode 100644 index 0000000..e633626 Binary files /dev/null and b/app/st_kbel/pdf/pdf/588_IJAZAH NERS - Herman Hidayat.PDF differ diff --git a/app/st_kbel/pdf/pdf/589_TRANSKRIP NERS - Herman Hidayat.PDF b/app/st_kbel/pdf/pdf/589_TRANSKRIP NERS - Herman Hidayat.PDF new file mode 100644 index 0000000..07b4a84 Binary files /dev/null and b/app/st_kbel/pdf/pdf/589_TRANSKRIP NERS - Herman Hidayat.PDF differ diff --git a/app/st_kbel/pdf/pdf/596_TRANSKRIP NERS Rohmah.PDF b/app/st_kbel/pdf/pdf/596_TRANSKRIP NERS Rohmah.PDF new file mode 100644 index 0000000..d21f54c Binary files /dev/null and b/app/st_kbel/pdf/pdf/596_TRANSKRIP NERS Rohmah.PDF differ diff --git a/app/st_kbel/pdf/pdf/5_WMA_Sertifikat Jepang.jpeg b/app/st_kbel/pdf/pdf/5_WMA_Sertifikat Jepang.jpeg new file mode 100644 index 0000000..238dbed Binary files /dev/null and b/app/st_kbel/pdf/pdf/5_WMA_Sertifikat Jepang.jpeg differ diff --git a/app/st_kbel/pdf/pdf/600_IJAZAH NERS - Diah Retnoningtyastuti.PDF b/app/st_kbel/pdf/pdf/600_IJAZAH NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..699d88a Binary files /dev/null and b/app/st_kbel/pdf/pdf/600_IJAZAH NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_kbel/pdf/pdf/601_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF b/app/st_kbel/pdf/pdf/601_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF new file mode 100644 index 0000000..a1e9d36 Binary files /dev/null and b/app/st_kbel/pdf/pdf/601_TRANSKRIP NERS - Diah Retnoningtyastuti.PDF differ diff --git a/app/st_kbel/pdf/pdf/605_IJAZAH NERS - Theresia Emiliana Rahmawati (1).PDF b/app/st_kbel/pdf/pdf/605_IJAZAH NERS - Theresia Emiliana Rahmawati (1).PDF new file mode 100644 index 0000000..8008118 Binary files /dev/null and b/app/st_kbel/pdf/pdf/605_IJAZAH NERS - Theresia Emiliana Rahmawati (1).PDF differ diff --git a/app/st_kbel/pdf/pdf/606_TRANSKRIP NERS - Theresia Emiliana Rahmawati.PDF b/app/st_kbel/pdf/pdf/606_TRANSKRIP NERS - Theresia Emiliana Rahmawati.PDF new file mode 100644 index 0000000..d5e168f Binary files /dev/null and b/app/st_kbel/pdf/pdf/606_TRANSKRIP NERS - Theresia Emiliana Rahmawati.PDF differ diff --git a/app/st_kbel/pdf/pdf/629_IJAZAH NERS - Usman Mansur.PDF b/app/st_kbel/pdf/pdf/629_IJAZAH NERS - Usman Mansur.PDF new file mode 100644 index 0000000..615566a Binary files /dev/null and b/app/st_kbel/pdf/pdf/629_IJAZAH NERS - Usman Mansur.PDF differ diff --git a/app/st_kbel/pdf/pdf/630_Usman M-TRANSKRIP NERS.PDF b/app/st_kbel/pdf/pdf/630_Usman M-TRANSKRIP NERS.PDF new file mode 100644 index 0000000..1d7cd79 Binary files /dev/null and b/app/st_kbel/pdf/pdf/630_Usman M-TRANSKRIP NERS.PDF differ diff --git a/app/st_kbel/pdf/pdf/636_IJAZAH NERS - Sri Anjarwati.PDF b/app/st_kbel/pdf/pdf/636_IJAZAH NERS - Sri Anjarwati.PDF new file mode 100644 index 0000000..9629794 Binary files /dev/null and b/app/st_kbel/pdf/pdf/636_IJAZAH NERS - Sri Anjarwati.PDF differ diff --git a/app/st_kbel/pdf/pdf/647_IJAZAH NERS - Titik Sri Rahayu.PDF b/app/st_kbel/pdf/pdf/647_IJAZAH NERS - Titik Sri Rahayu.PDF new file mode 100644 index 0000000..6362cfd Binary files /dev/null and b/app/st_kbel/pdf/pdf/647_IJAZAH NERS - Titik Sri Rahayu.PDF differ diff --git a/app/st_kbel/pdf/pdf/657_SK CPNS.PDF b/app/st_kbel/pdf/pdf/657_SK CPNS.PDF new file mode 100644 index 0000000..9e639dd Binary files /dev/null and b/app/st_kbel/pdf/pdf/657_SK CPNS.PDF differ diff --git a/app/st_kbel/pdf/pdf/658_IJAZAH NERS - M. Fahrur Roji.PDF b/app/st_kbel/pdf/pdf/658_IJAZAH NERS - M. Fahrur Roji.PDF new file mode 100644 index 0000000..0d86582 Binary files /dev/null and b/app/st_kbel/pdf/pdf/658_IJAZAH NERS - M. Fahrur Roji.PDF differ diff --git a/app/st_kbel/pdf/pdf/659_TRANSKRIP NERS - M. Fahrur Roji.PDF b/app/st_kbel/pdf/pdf/659_TRANSKRIP NERS - M. Fahrur Roji.PDF new file mode 100644 index 0000000..3d61996 Binary files /dev/null and b/app/st_kbel/pdf/pdf/659_TRANSKRIP NERS - M. Fahrur Roji.PDF differ diff --git a/app/st_kbel/pdf/pdf/671_SK CPNS.PDF b/app/st_kbel/pdf/pdf/671_SK CPNS.PDF new file mode 100644 index 0000000..25758c8 Binary files /dev/null and b/app/st_kbel/pdf/pdf/671_SK CPNS.PDF differ diff --git a/app/st_kbel/pdf/pdf/674_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF b/app/st_kbel/pdf/pdf/674_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF new file mode 100644 index 0000000..a2e970c Binary files /dev/null and b/app/st_kbel/pdf/pdf/674_TRANSKRIP NERS.fix - Mohamad Agus Tiar.PDF differ diff --git a/app/st_kbel/pdf/pdf/6_ARV_surat Ket Persetujuan Fellow Jepang.jpeg b/app/st_kbel/pdf/pdf/6_ARV_surat Ket Persetujuan Fellow Jepang.jpeg new file mode 100644 index 0000000..cfbce8e Binary files /dev/null and b/app/st_kbel/pdf/pdf/6_ARV_surat Ket Persetujuan Fellow Jepang.jpeg differ diff --git a/app/st_kbel/pdf/pdf/703_639_SK penyelia - Anjar.pdf.crdownload b/app/st_kbel/pdf/pdf/703_639_SK penyelia - Anjar.pdf.crdownload new file mode 100644 index 0000000..7874e0a Binary files /dev/null and b/app/st_kbel/pdf/pdf/703_639_SK penyelia - Anjar.pdf.crdownload differ diff --git a/app/st_kbel/pdf/pdf/715_IJAZAH NERS - Muhamad Khoirul Imron.PDF b/app/st_kbel/pdf/pdf/715_IJAZAH NERS - Muhamad Khoirul Imron.PDF new file mode 100644 index 0000000..bb029c8 Binary files /dev/null and b/app/st_kbel/pdf/pdf/715_IJAZAH NERS - Muhamad Khoirul Imron.PDF differ diff --git a/app/st_kbel/pdf/pdf/716_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF b/app/st_kbel/pdf/pdf/716_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF new file mode 100644 index 0000000..f127010 Binary files /dev/null and b/app/st_kbel/pdf/pdf/716_TRANSKRIP NERS - Muhamad Khoirul Imron (1).PDF differ diff --git a/app/st_kbel/pdf/pdf/8_ARV_sertifikat Jepang.jpeg b/app/st_kbel/pdf/pdf/8_ARV_sertifikat Jepang.jpeg new file mode 100644 index 0000000..5ff213c Binary files /dev/null and b/app/st_kbel/pdf/pdf/8_ARV_sertifikat Jepang.jpeg differ diff --git a/app/st_kbel/pdf/pdf/947_IJAZAH NERS - Zainol Ahsan.PDF b/app/st_kbel/pdf/pdf/947_IJAZAH NERS - Zainol Ahsan.PDF new file mode 100644 index 0000000..9e93b0e Binary files /dev/null and b/app/st_kbel/pdf/pdf/947_IJAZAH NERS - Zainol Ahsan.PDF differ diff --git a/app/st_kbel/pdf/pdf/970_IJAZAH NERS - Siti Restutin.PDF b/app/st_kbel/pdf/pdf/970_IJAZAH NERS - Siti Restutin.PDF new file mode 100644 index 0000000..95c8e48 Binary files /dev/null and b/app/st_kbel/pdf/pdf/970_IJAZAH NERS - Siti Restutin.PDF differ diff --git a/app/st_kbel/pdf/pdf/971_TRANSKRIP NERS - Siti Restutin.PDF b/app/st_kbel/pdf/pdf/971_TRANSKRIP NERS - Siti Restutin.PDF new file mode 100644 index 0000000..c066b9a Binary files /dev/null and b/app/st_kbel/pdf/pdf/971_TRANSKRIP NERS - Siti Restutin.PDF differ diff --git a/app/st_kbel/pdf/tabel_upl_cv.php b/app/st_kbel/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..f0813a8 --- /dev/null +++ b/app/st_kbel/pdf/tabel_upl_cv.php @@ -0,0 +1,86 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_kbel/pdf/upl_cv.php b/app/st_kbel/pdf/upl_cv.php new file mode 100644 index 0000000..ae2c8fc --- /dev/null +++ b/app/st_kbel/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_kbel (riwayat_kbel_id,syarat_kbel_id) VALUES ('$riwayat_kbel_id','$syarat_kbel_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_kbel WHERE riwayat_kbel_id=$riwayat_kbel_id AND syarat_kbel_id=$syarat_kbel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_kbel_idxx=$r1[0];} + +//$riwayat_syarat_kbel_id=$_POST['riwayat_syarat_kbel_id_uploadz']; +$riwayat_syarat_kbel_id=$riwayat_syarat_kbel_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_kbel_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_kbel_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_kbel (riwayat_syarat_kbel_id,file,tgl_upload) VALUES ('$riwayat_syarat_kbel_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_kbel SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_kbel_id"); +echo $riwayat_syarat_kbel_id.' - '.$name_pdf; +?> + + diff --git a/app/st_kbel/tabel_daftar.php b/app/st_kbel/tabel_daftar.php new file mode 100644 index 0000000..d3a6b61 --- /dev/null +++ b/app/st_kbel/tabel_daftar.php @@ -0,0 +1,156 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_kbel/tabel_daftar_rev.php b/app/st_kbel/tabel_daftar_rev.php new file mode 100644 index 0000000..101a668 --- /dev/null +++ b/app/st_kbel/tabel_daftar_rev.php @@ -0,0 +1,215 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_kbel/tabel_revisi.php b/app/st_kbel/tabel_revisi.php new file mode 100644 index 0000000..ec21e03 --- /dev/null +++ b/app/st_kbel/tabel_revisi.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_kbel/tabel_riwayat.php b/app/st_kbel/tabel_riwayat.php new file mode 100644 index 0000000..f2f29a8 --- /dev/null +++ b/app/st_kbel/tabel_riwayat.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_kbel/tabel_tgg.php b/app/st_kbel/tabel_tgg.php new file mode 100644 index 0000000..c753e93 --- /dev/null +++ b/app/st_kbel/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_kbel/upd_file.php b/app/st_kbel/upd_file.php new file mode 100644 index 0000000..6c2d6f9 --- /dev/null +++ b/app/st_kbel/upd_file.php @@ -0,0 +1,135 @@ + + +
+ + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_pel/crud.php b/app/st_pel/crud.php new file mode 100644 index 0000000..b2b2020 --- /dev/null +++ b/app/st_pel/crud.php @@ -0,0 +1,83 @@ + 0) { + $upd=pg_query("UPDATE riwayat_pel SET jenis_data='$jenis_data',jenis_pel='$jenis_pel',nama_pel='$nama_pel' WHERE id=$riwayat_pel_id"); + } else {} +} else +if ($key=='jumlah_nonjpg') { +if ($_POST['riwayat_syarat_pel_id']) { +$riwayat_syarat_pel_id=$_POST['riwayat_syarat_pel_id']; +$k=pg_query("SELECT COUNT(*) +FROM dok_syarat_pel k INNER JOIN riwayat_syarat_pel s ON (k.riwayat_syarat_pel_id=s.id) +WHERE k.riwayat_syarat_pel_id='$riwayat_syarat_pel_id' AND k.file NOT IN ('')"); +while($rk=pg_fetch_array($k)) {echo $rk[0];} +} else { +$syarat_pel_id=$_POST['syarat_pel_idzz']; +$riwayat_pel_id=$_POST['riwayat_pel_idzz']; +$d1=pg_query("SELECT id FROM riwayat_syarat_pel WHERE riwayat_pel_id=$riwayat_pel_id AND syarat_pel_id=$syarat_pel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_pel_idxx=$r1[0];} +$riwayat_syarat_pel_id=$riwayat_syarat_pel_idxx; +$k=pg_query("SELECT COUNT(*) +FROM dok_syarat_pel k INNER JOIN riwayat_syarat_pel s ON (k.riwayat_syarat_pel_id=s.id) +WHERE k.riwayat_syarat_pel_id='$riwayat_syarat_pel_id' AND k.file NOT IN ('')"); +while($rk=pg_fetch_array($k)) {echo $rk[0].'$%^'.$riwayat_syarat_pel_id;} +} +} else +if ($key=='tambah_pel') { +$data_pegawai_id=$_POST['data_pegawai_id']; +pg_query("INSERT INTO riwayat_pel (data_pegawai_id,tgl_usulan,status) VALUES ($data_pegawai_id,NOW(),'PROSES PENGAJUAN')"); +$d1=pg_query("SELECT id,tgl_usulan FROM riwayat_pel WHERE data_pegawai_id=$data_pegawai_id AND tgl_verifikasi IS NULL"); +while($r1=pg_fetch_array($d1)) { +$riwayat_pel_id=$r1[0]; +$tgl_usulan=$r1[1]; +if (($r1[1]==null) || ($r1[1]=='1970-01-01 00:00:00')) {$tgl_usulan='';$nm_tgl_usulan='';} else { +$nm_tgl_usulan='Tanggal usulan: '; +$tgl_usulan=date('d-m-Y',strtotime($r1[1])); +} +} +echo $riwayat_pel_id.'$%^'.$nm_tgl_usulan.' '.'$%^'.$tgl_usulan; +} +?> \ No newline at end of file diff --git a/app/st_pel/main.php b/app/st_pel/main.php new file mode 100644 index 0000000..6ed6c35 --- /dev/null +++ b/app/st_pel/main.php @@ -0,0 +1,516 @@ + + + + + +
+
+
+
+ + + +

Pelatihan

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan Pelatihan + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_pel/modal_revisi.php b/app/st_pel/modal_revisi.php new file mode 100644 index 0000000..c843762 --- /dev/null +++ b/app/st_pel/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_pel/modal_riwayat.php b/app/st_pel/modal_riwayat.php new file mode 100644 index 0000000..07417db --- /dev/null +++ b/app/st_pel/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_pel/modal_tgg.php b/app/st_pel/modal_tgg.php new file mode 100644 index 0000000..5ca8035 --- /dev/null +++ b/app/st_pel/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_pel/modal_verifikasi.php b/app/st_pel/modal_verifikasi.php new file mode 100644 index 0000000..034f80f --- /dev/null +++ b/app/st_pel/modal_verifikasi.php @@ -0,0 +1,195 @@ + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_pel/modal_verifikasi_rev.php b/app/st_pel/modal_verifikasi_rev.php new file mode 100644 index 0000000..77a487c --- /dev/null +++ b/app/st_pel/modal_verifikasi_rev.php @@ -0,0 +1,12 @@ + + +
+ + \ No newline at end of file diff --git a/app/st_pel/modal_view.php b/app/st_pel/modal_view.php new file mode 100644 index 0000000..5c4ff12 --- /dev/null +++ b/app/st_pel/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_pel/not_notif.php b/app/st_pel/not_notif.php new file mode 100644 index 0000000..5b3b488 --- /dev/null +++ b/app/st_pel/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_pel/not_revnotif.php b/app/st_pel/not_revnotif.php new file mode 100644 index 0000000..fab6e12 --- /dev/null +++ b/app/st_pel/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_pel/not_tggnotif.php b/app/st_pel/not_tggnotif.php new file mode 100644 index 0000000..6faca17 --- /dev/null +++ b/app/st_pel/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_pel/not_tmbnotif.php b/app/st_pel/not_tmbnotif.php new file mode 100644 index 0000000..c53b881 --- /dev/null +++ b/app/st_pel/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_pel/pdf/.htaccess b/app/st_pel/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_pel/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_pel/pdf/crud.php b/app/st_pel/pdf/crud.php new file mode 100644 index 0000000..9faa642 --- /dev/null +++ b/app/st_pel/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_pel/pdf/pdf/1001_WhatsApp Image 2024-08-09 at 13.54.02.jpeg b/app/st_pel/pdf/pdf/1001_WhatsApp Image 2024-08-09 at 13.54.02.jpeg new file mode 100644 index 0000000..4bfa416 Binary files /dev/null and b/app/st_pel/pdf/pdf/1001_WhatsApp Image 2024-08-09 at 13.54.02.jpeg differ diff --git a/app/st_pel/pdf/pdf/385_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx b/app/st_pel/pdf/pdf/385_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx new file mode 100644 index 0000000..c4c83a8 Binary files /dev/null and b/app/st_pel/pdf/pdf/385_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx differ diff --git a/app/st_pel/pdf/pdf/430_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx b/app/st_pel/pdf/pdf/430_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx new file mode 100644 index 0000000..c4c83a8 Binary files /dev/null and b/app/st_pel/pdf/pdf/430_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx differ diff --git a/app/st_pel/pdf/pdf/430_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx b/app/st_pel/pdf/pdf/430_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx new file mode 100644 index 0000000..7776032 Binary files /dev/null and b/app/st_pel/pdf/pdf/430_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx differ diff --git a/app/st_pel/pdf/pdf/529_15. Komplikasi Vena Perifer.pdf.crdownload b/app/st_pel/pdf/pdf/529_15. Komplikasi Vena Perifer.pdf.crdownload new file mode 100644 index 0000000..f317eaa Binary files /dev/null and b/app/st_pel/pdf/pdf/529_15. Komplikasi Vena Perifer.pdf.crdownload differ diff --git a/app/st_pel/pdf/pdf/544_brosur pelatihan.jpeg b/app/st_pel/pdf/pdf/544_brosur pelatihan.jpeg new file mode 100644 index 0000000..4b89140 Binary files /dev/null and b/app/st_pel/pdf/pdf/544_brosur pelatihan.jpeg differ diff --git a/app/st_pel/pdf/pdf/830_447_188740_188709_permohonan biaya mengikuti pelatihan via zoom.pdf.crdownload b/app/st_pel/pdf/pdf/830_447_188740_188709_permohonan biaya mengikuti pelatihan via zoom.pdf.crdownload new file mode 100644 index 0000000..aab4a4a Binary files /dev/null and b/app/st_pel/pdf/pdf/830_447_188740_188709_permohonan biaya mengikuti pelatihan via zoom.pdf.crdownload differ diff --git a/app/st_pel/pdf/pdf/844_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx b/app/st_pel/pdf/pdf/844_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx new file mode 100644 index 0000000..c4c83a8 Binary files /dev/null and b/app/st_pel/pdf/pdf/844_Laporan Instalasi Manajemen Nyeri Tahun 2023 ed.pptx differ diff --git a/app/st_pel/pdf/pdf/844_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx b/app/st_pel/pdf/pdf/844_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx new file mode 100644 index 0000000..7776032 Binary files /dev/null and b/app/st_pel/pdf/pdf/844_Tata Kelola JKN di Instalasi Manajemen Nyeri EDIT.pptx differ diff --git a/app/st_pel/pdf/tabel_upl_cv.php b/app/st_pel/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..b377133 --- /dev/null +++ b/app/st_pel/pdf/tabel_upl_cv.php @@ -0,0 +1,86 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_pel/pdf/upl_cv.php b/app/st_pel/pdf/upl_cv.php new file mode 100644 index 0000000..be1a025 --- /dev/null +++ b/app/st_pel/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_pel (riwayat_pel_id,syarat_pel_id) VALUES ('$riwayat_pel_id','$syarat_pel_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_pel WHERE riwayat_pel_id=$riwayat_pel_id AND syarat_pel_id=$syarat_pel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_pel_idxx=$r1[0];} + +//$riwayat_syarat_pel_id=$_POST['riwayat_syarat_pel_id_uploadz']; +$riwayat_syarat_pel_id=$riwayat_syarat_pel_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_pel_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_pel_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_pel (riwayat_syarat_pel_id,file,tgl_upload) VALUES ('$riwayat_syarat_pel_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_pel SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_pel_id"); +echo $riwayat_syarat_pel_id.' - '.$name_pdf; +?> + + diff --git a/app/st_pel/tabel_daftar.php b/app/st_pel/tabel_daftar.php new file mode 100644 index 0000000..8bd9c09 --- /dev/null +++ b/app/st_pel/tabel_daftar.php @@ -0,0 +1,198 @@ + + +
+
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_pel/tabel_daftar_rev.php b/app/st_pel/tabel_daftar_rev.php new file mode 100644 index 0000000..24e8a4e --- /dev/null +++ b/app/st_pel/tabel_daftar_rev.php @@ -0,0 +1,215 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_pel/tabel_revisi.php b/app/st_pel/tabel_revisi.php new file mode 100644 index 0000000..aca59b0 --- /dev/null +++ b/app/st_pel/tabel_revisi.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_pel/tabel_riwayat.php b/app/st_pel/tabel_riwayat.php new file mode 100644 index 0000000..923692f --- /dev/null +++ b/app/st_pel/tabel_riwayat.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_pel/tabel_tgg.php b/app/st_pel/tabel_tgg.php new file mode 100644 index 0000000..b9af8dd --- /dev/null +++ b/app/st_pel/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_pel/upd_file.php b/app/st_pel/upd_file.php new file mode 100644 index 0000000..860398d --- /dev/null +++ b/app/st_pel/upd_file.php @@ -0,0 +1,147 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_pel (riwayat_pel_id,syarat_pel_id) VALUES ('$riwayat_pel_id','$syarat_pel_id')"); +} + +$d1=pg_query("SELECT id FROM riwayat_syarat_pel WHERE riwayat_pel_id=$riwayat_pel_id AND syarat_pel_id=$syarat_pel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_pel_id=$r1[0];} +*/ +?> + +
+ + + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_ship/crud.php b/app/st_ship/crud.php new file mode 100644 index 0000000..94161cd --- /dev/null +++ b/app/st_ship/crud.php @@ -0,0 +1,78 @@ + \ No newline at end of file diff --git a/app/st_ship/main.php b/app/st_ship/main.php new file mode 100644 index 0000000..e3b3d13 --- /dev/null +++ b/app/st_ship/main.php @@ -0,0 +1,570 @@ + + + + + +
+
+
+
+ + + +

Fellowship

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan Fellowship + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_ship/modal_revisi.php b/app/st_ship/modal_revisi.php new file mode 100644 index 0000000..c34e90c --- /dev/null +++ b/app/st_ship/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ship/modal_riwayat.php b/app/st_ship/modal_riwayat.php new file mode 100644 index 0000000..fdffa4c --- /dev/null +++ b/app/st_ship/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ship/modal_tgg.php b/app/st_ship/modal_tgg.php new file mode 100644 index 0000000..bce18db --- /dev/null +++ b/app/st_ship/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_ship/modal_verifikasi.php b/app/st_ship/modal_verifikasi.php new file mode 100644 index 0000000..de457ba --- /dev/null +++ b/app/st_ship/modal_verifikasi.php @@ -0,0 +1,92 @@ + + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +

+ +
+
+
+
+ +

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_ship/modal_verifikasi_rev.php b/app/st_ship/modal_verifikasi_rev.php new file mode 100644 index 0000000..7b8dd44 --- /dev/null +++ b/app/st_ship/modal_verifikasi_rev.php @@ -0,0 +1,15 @@ + + + +
+ + \ No newline at end of file diff --git a/app/st_ship/modal_view.php b/app/st_ship/modal_view.php new file mode 100644 index 0000000..851fd45 --- /dev/null +++ b/app/st_ship/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_ship/not_notif.php b/app/st_ship/not_notif.php new file mode 100644 index 0000000..1fa16c5 --- /dev/null +++ b/app/st_ship/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_ship/not_revnotif.php b/app/st_ship/not_revnotif.php new file mode 100644 index 0000000..ab7e73f --- /dev/null +++ b/app/st_ship/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_ship/not_tggnotif.php b/app/st_ship/not_tggnotif.php new file mode 100644 index 0000000..c9cb342 --- /dev/null +++ b/app/st_ship/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_ship/not_tmbnotif.php b/app/st_ship/not_tmbnotif.php new file mode 100644 index 0000000..597f2d1 --- /dev/null +++ b/app/st_ship/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_ship/pdf/.htaccess b/app/st_ship/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_ship/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_ship/pdf/crud.php b/app/st_ship/pdf/crud.php new file mode 100644 index 0000000..7a5a4fe --- /dev/null +++ b/app/st_ship/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_ship/pdf/pdf/3503_jadwal kegiatan Workshop OR HPMZ_Luring[1]_rev' dengan Anda.docx b/app/st_ship/pdf/pdf/3503_jadwal kegiatan Workshop OR HPMZ_Luring[1]_rev' dengan Anda.docx new file mode 100644 index 0000000..46ebfe3 Binary files /dev/null and b/app/st_ship/pdf/pdf/3503_jadwal kegiatan Workshop OR HPMZ_Luring[1]_rev' dengan Anda.docx differ diff --git a/app/st_ship/pdf/tabel_upl_cv.php b/app/st_ship/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..04c4853 --- /dev/null +++ b/app/st_ship/pdf/tabel_upl_cv.php @@ -0,0 +1,89 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_ship/pdf/upl_cv.php b/app/st_ship/pdf/upl_cv.php new file mode 100644 index 0000000..e7d9a97 --- /dev/null +++ b/app/st_ship/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_ship (riwayat_ship_id,syarat_ship_id) VALUES ('$riwayat_ship_id','$syarat_ship_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_ship WHERE riwayat_ship_id=$riwayat_ship_id AND syarat_ship_id=$syarat_ship_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_ship_idxx=$r1[0];} + +//$riwayat_syarat_ship_id=$_POST['riwayat_syarat_ship_id_uploadz']; +$riwayat_syarat_ship_id=$riwayat_syarat_ship_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_ship_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_ship_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_ship (riwayat_syarat_ship_id,file,tgl_upload) VALUES ('$riwayat_syarat_ship_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_ship SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_ship_id"); +echo $riwayat_syarat_ship_id.' - '.$name_pdf; +?> + + diff --git a/app/st_ship/tabel_daftar.php b/app/st_ship/tabel_daftar.php new file mode 100644 index 0000000..fa833be --- /dev/null +++ b/app/st_ship/tabel_daftar.php @@ -0,0 +1,160 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_ship/tabel_daftar_rev.php b/app/st_ship/tabel_daftar_rev.php new file mode 100644 index 0000000..7e1a6e0 --- /dev/null +++ b/app/st_ship/tabel_daftar_rev.php @@ -0,0 +1,227 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_ship/tabel_revisi.php b/app/st_ship/tabel_revisi.php new file mode 100644 index 0000000..f7b0e14 --- /dev/null +++ b/app/st_ship/tabel_revisi.php @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ship/tabel_riwayat.php b/app/st_ship/tabel_riwayat.php new file mode 100644 index 0000000..5a59bb3 --- /dev/null +++ b/app/st_ship/tabel_riwayat.php @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ship/tabel_tgg.php b/app/st_ship/tabel_tgg.php new file mode 100644 index 0000000..e56d7b4 --- /dev/null +++ b/app/st_ship/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_ship/upd_file.php b/app/st_ship/upd_file.php new file mode 100644 index 0000000..3863c8e --- /dev/null +++ b/app/st_ship/upd_file.php @@ -0,0 +1,150 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_ship (riwayat_ship_id,syarat_ship_id) VALUES ('$riwayat_ship_id','$syarat_ship_id')"); +} + +$d1=pg_query("SELECT id FROM riwayat_syarat_ship WHERE riwayat_ship_id=$riwayat_ship_id AND syarat_ship_id=$syarat_ship_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_ship_id=$r1[0];} +*/ +?> + +
+ + + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_spo/crud.php b/app/st_spo/crud.php new file mode 100644 index 0000000..51a53a5 --- /dev/null +++ b/app/st_spo/crud.php @@ -0,0 +1,89 @@ + 0) { + $upd=pg_query("UPDATE riwayat_spo SET jenis_data='$jenis_data',jenis_spo='$jenis_spo',nama_spo='$nama_spo' WHERE id=$riwayat_spo_id"); + } else {} +} else +if ($key=='jumlah_nonjpg') { +if ($_POST['riwayat_syarat_spo_id']) { +$riwayat_syarat_spo_id=$_POST['riwayat_syarat_spo_id']; +$k=pg_query("SELECT COUNT(*) +FROM dok_syarat_spo k INNER JOIN riwayat_syarat_spo s ON (k.riwayat_syarat_spo_id=s.id) +WHERE k.riwayat_syarat_spo_id='$riwayat_syarat_spo_id' AND k.file NOT IN ('')"); +while($rk=pg_fetch_array($k)) {echo $rk[0];} +} else { +$syarat_spo_id=$_POST['syarat_spo_idzz']; +$riwayat_spo_id=$_POST['riwayat_spo_idzz']; +$d1=pg_query("SELECT id FROM riwayat_syarat_spo WHERE riwayat_spo_id=$riwayat_spo_id AND syarat_spo_id=$syarat_spo_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_spo_idxx=$r1[0];} +$riwayat_syarat_spo_id=$riwayat_syarat_spo_idxx; +$k=pg_query("SELECT COUNT(*) +FROM dok_syarat_spo k INNER JOIN riwayat_syarat_spo s ON (k.riwayat_syarat_spo_id=s.id) +WHERE k.riwayat_syarat_spo_id='$riwayat_syarat_spo_id' AND k.file NOT IN ('')"); +while($rk=pg_fetch_array($k)) {echo $rk[0].'$%^'.$riwayat_syarat_spo_id;} +} +} else +if ($key=='tambah_spo') { +$data_pegawai_id=$_POST['data_pegawai_id']; +$tujuan_spo=$_POST['tujuan_spo']; +pg_query("INSERT INTO riwayat_spo (data_pegawai_id,tgl_usulan,status,tujuan_spo) VALUES ($data_pegawai_id,NOW(),'PROSES PENGAJUAN','$tujuan_spo')"); +$d1=pg_query("SELECT id,tgl_usulan FROM riwayat_spo WHERE data_pegawai_id=$data_pegawai_id AND tgl_verifikasi IS NULL"); +while($r1=pg_fetch_array($d1)) { +$riwayat_spo_id=$r1[0]; +$tgl_usulan=$r1[1]; +if (($r1[1]==null) || ($r1[1]=='1970-01-01 00:00:00')) {$tgl_usulan='';$nm_tgl_usulan='';} else { +$nm_tgl_usulan='Tanggal usulan: '; +$tgl_usulan=date('d-m-Y',strtotime($r1[1])); +} +} +echo $riwayat_spo_id.'$%^'.$nm_tgl_usulan.' '.'$%^'.$tgl_usulan; +} +?> \ No newline at end of file diff --git a/app/st_spo/main.php b/app/st_spo/main.php new file mode 100644 index 0000000..5a83d19 --- /dev/null +++ b/app/st_spo/main.php @@ -0,0 +1,545 @@ + + + + + +
+
+
+
+ + + +

Sponsorship

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan Sponsorship + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_spo/modal_revisi.php b/app/st_spo/modal_revisi.php new file mode 100644 index 0000000..fbc5700 --- /dev/null +++ b/app/st_spo/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_spo/modal_riwayat.php b/app/st_spo/modal_riwayat.php new file mode 100644 index 0000000..c857a5d --- /dev/null +++ b/app/st_spo/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_spo/modal_tgg.php b/app/st_spo/modal_tgg.php new file mode 100644 index 0000000..e23c9f3 --- /dev/null +++ b/app/st_spo/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_spo/modal_verifikasi.php b/app/st_spo/modal_verifikasi.php new file mode 100644 index 0000000..e440923 --- /dev/null +++ b/app/st_spo/modal_verifikasi.php @@ -0,0 +1,147 @@ + + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_spo/modal_verifikasi_rev.php b/app/st_spo/modal_verifikasi_rev.php new file mode 100644 index 0000000..515a18e --- /dev/null +++ b/app/st_spo/modal_verifikasi_rev.php @@ -0,0 +1,15 @@ + + + +
+ + \ No newline at end of file diff --git a/app/st_spo/modal_view.php b/app/st_spo/modal_view.php new file mode 100644 index 0000000..960ab39 --- /dev/null +++ b/app/st_spo/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_spo/not_notif.php b/app/st_spo/not_notif.php new file mode 100644 index 0000000..d4618a3 --- /dev/null +++ b/app/st_spo/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_spo/not_revnotif.php b/app/st_spo/not_revnotif.php new file mode 100644 index 0000000..d9a462e --- /dev/null +++ b/app/st_spo/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_spo/not_tggnotif.php b/app/st_spo/not_tggnotif.php new file mode 100644 index 0000000..e7e376a --- /dev/null +++ b/app/st_spo/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_spo/not_tmbnotif.php b/app/st_spo/not_tmbnotif.php new file mode 100644 index 0000000..e3d87e6 --- /dev/null +++ b/app/st_spo/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_spo/pdf/.htaccess b/app/st_spo/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_spo/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_spo/pdf/crud.php b/app/st_spo/pdf/crud.php new file mode 100644 index 0000000..9cdc226 --- /dev/null +++ b/app/st_spo/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_spo/pdf/pdf/266_WhatsApp Image 2024-01-31 at 11.04.52.jpeg b/app/st_spo/pdf/pdf/266_WhatsApp Image 2024-01-31 at 11.04.52.jpeg new file mode 100644 index 0000000..0fede10 Binary files /dev/null and b/app/st_spo/pdf/pdf/266_WhatsApp Image 2024-01-31 at 11.04.52.jpeg differ diff --git a/app/st_spo/pdf/pdf/348_YULISTIANA_FORM LAPORAN PENERIMAAN SPONSORSHIP.docx b/app/st_spo/pdf/pdf/348_YULISTIANA_FORM LAPORAN PENERIMAAN SPONSORSHIP.docx new file mode 100644 index 0000000..f85f0e8 Binary files /dev/null and b/app/st_spo/pdf/pdf/348_YULISTIANA_FORM LAPORAN PENERIMAAN SPONSORSHIP.docx differ diff --git a/app/st_spo/pdf/pdf/512_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload b/app/st_spo/pdf/pdf/512_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload new file mode 100644 index 0000000..5c06669 Binary files /dev/null and b/app/st_spo/pdf/pdf/512_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/513_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload b/app/st_spo/pdf/pdf/513_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload new file mode 100644 index 0000000..5c06669 Binary files /dev/null and b/app/st_spo/pdf/pdf/513_189724_SURAT PARTISIPASI HISFARSI_RSUD SAIFUL ANWAR Kumaidatun Enita.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/514_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload b/app/st_spo/pdf/pdf/514_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload new file mode 100644 index 0000000..dfb2b59 Binary files /dev/null and b/app/st_spo/pdf/pdf/514_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/515_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload b/app/st_spo/pdf/pdf/515_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload new file mode 100644 index 0000000..dfb2b59 Binary files /dev/null and b/app/st_spo/pdf/pdf/515_190059_img20240313_10285338 PT Sinar Roda Utama, Reny dan Marulita.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/589_194919_44. Surat Izin PKB IDAI.pdf.crdownload b/app/st_spo/pdf/pdf/589_194919_44. Surat Izin PKB IDAI.pdf.crdownload new file mode 100644 index 0000000..9a70ce9 Binary files /dev/null and b/app/st_spo/pdf/pdf/589_194919_44. Surat Izin PKB IDAI.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/590_198298_Surat izin sebagai Fasilitator- Workshop IDAI Malang 24 Mei 2024.pdf.crdownload b/app/st_spo/pdf/pdf/590_198298_Surat izin sebagai Fasilitator- Workshop IDAI Malang 24 Mei 2024.pdf.crdownload new file mode 100644 index 0000000..2de4905 Binary files /dev/null and b/app/st_spo/pdf/pdf/590_198298_Surat izin sebagai Fasilitator- Workshop IDAI Malang 24 Mei 2024.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/723_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload b/app/st_spo/pdf/pdf/723_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload new file mode 100644 index 0000000..f36e5d9 Binary files /dev/null and b/app/st_spo/pdf/pdf/723_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/724_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload b/app/st_spo/pdf/pdf/724_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload new file mode 100644 index 0000000..f36e5d9 Binary files /dev/null and b/app/st_spo/pdf/pdf/724_206708_SURAT UNDANGAN PELATIHAN RSSA-digabungkan.pdf.crdownload differ diff --git a/app/st_spo/pdf/pdf/850_LAPORAN PELATIHAN PAGD 8 LOMBOK 18-21 JULI 2024 - IDA R.docx b/app/st_spo/pdf/pdf/850_LAPORAN PELATIHAN PAGD 8 LOMBOK 18-21 JULI 2024 - IDA R.docx new file mode 100644 index 0000000..f627cde Binary files /dev/null and b/app/st_spo/pdf/pdf/850_LAPORAN PELATIHAN PAGD 8 LOMBOK 18-21 JULI 2024 - IDA R.docx differ diff --git a/app/st_spo/pdf/tabel_upl_cv.php b/app/st_spo/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..daa38cc --- /dev/null +++ b/app/st_spo/pdf/tabel_upl_cv.php @@ -0,0 +1,89 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_spo/pdf/upl_cv.php b/app/st_spo/pdf/upl_cv.php new file mode 100644 index 0000000..cd386df --- /dev/null +++ b/app/st_spo/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_spo (riwayat_spo_id,syarat_spo_id) VALUES ('$riwayat_spo_id','$syarat_spo_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_spo WHERE riwayat_spo_id=$riwayat_spo_id AND syarat_spo_id=$syarat_spo_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_spo_idxx=$r1[0];} + +//$riwayat_syarat_spo_id=$_POST['riwayat_syarat_spo_id_uploadz']; +$riwayat_syarat_spo_id=$riwayat_syarat_spo_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_spo_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_spo_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_spo (riwayat_syarat_spo_id,file,tgl_upload) VALUES ('$riwayat_syarat_spo_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_spo SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_spo_id"); +echo $riwayat_syarat_spo_id.' - '.$name_pdf; +?> + + diff --git a/app/st_spo/tabel_daftar.php b/app/st_spo/tabel_daftar.php new file mode 100644 index 0000000..73bbe05 --- /dev/null +++ b/app/st_spo/tabel_daftar.php @@ -0,0 +1,205 @@ + + +
+
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_spo/tabel_daftar_rev.php b/app/st_spo/tabel_daftar_rev.php new file mode 100644 index 0000000..2e514f5 --- /dev/null +++ b/app/st_spo/tabel_daftar_rev.php @@ -0,0 +1,227 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_spo/tabel_revisi.php b/app/st_spo/tabel_revisi.php new file mode 100644 index 0000000..4c4f44a --- /dev/null +++ b/app/st_spo/tabel_revisi.php @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_spo/tabel_riwayat.php b/app/st_spo/tabel_riwayat.php new file mode 100644 index 0000000..b45d904 --- /dev/null +++ b/app/st_spo/tabel_riwayat.php @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_spo/tabel_tgg.php b/app/st_spo/tabel_tgg.php new file mode 100644 index 0000000..47524a0 --- /dev/null +++ b/app/st_spo/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_spo/upd_file.php b/app/st_spo/upd_file.php new file mode 100644 index 0000000..5778412 --- /dev/null +++ b/app/st_spo/upd_file.php @@ -0,0 +1,150 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_spo (riwayat_spo_id,syarat_spo_id) VALUES ('$riwayat_spo_id','$syarat_spo_id')"); +} + +$d1=pg_query("SELECT id FROM riwayat_syarat_spo WHERE riwayat_spo_id=$riwayat_spo_id AND syarat_spo_id=$syarat_spo_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_spo_id=$r1[0];} +*/ +?> + +
+ + + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/st_tbel/crud.php b/app/st_tbel/crud.php new file mode 100644 index 0000000..db6fa67 --- /dev/null +++ b/app/st_tbel/crud.php @@ -0,0 +1,72 @@ + \ No newline at end of file diff --git a/app/st_tbel/main.php b/app/st_tbel/main.php new file mode 100644 index 0000000..40bfee2 --- /dev/null +++ b/app/st_tbel/main.php @@ -0,0 +1,546 @@ + + + + + +
+
+
+
+ + + +

Tugas-Belajar

+ + + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +Daftar Kelengkapan dan Persyaratan Pendidikan + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + diff --git a/app/st_tbel/modal_revisi.php b/app/st_tbel/modal_revisi.php new file mode 100644 index 0000000..4a773c5 --- /dev/null +++ b/app/st_tbel/modal_revisi.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_tbel/modal_riwayat.php b/app/st_tbel/modal_riwayat.php new file mode 100644 index 0000000..a87a7bb --- /dev/null +++ b/app/st_tbel/modal_riwayat.php @@ -0,0 +1,27 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_tbel/modal_tgg.php b/app/st_tbel/modal_tgg.php new file mode 100644 index 0000000..2e8d2b0 --- /dev/null +++ b/app/st_tbel/modal_tgg.php @@ -0,0 +1,23 @@ + + + +
+
+ + \ No newline at end of file diff --git a/app/st_tbel/modal_verifikasi.php b/app/st_tbel/modal_verifikasi.php new file mode 100644 index 0000000..033adc3 --- /dev/null +++ b/app/st_tbel/modal_verifikasi.php @@ -0,0 +1,90 @@ + + +
+ +
+
+
+
+ + +
+
+ +
+
+ + " + disabled> +
+
+ +
+
+ + +
+
+
+ + +
+
+
+ +

+ +
+
+
+
+ +

+ +
+
+
+ + \ No newline at end of file diff --git a/app/st_tbel/modal_verifikasi_rev.php b/app/st_tbel/modal_verifikasi_rev.php new file mode 100644 index 0000000..e1d7caf --- /dev/null +++ b/app/st_tbel/modal_verifikasi_rev.php @@ -0,0 +1,12 @@ + + +
+ + \ No newline at end of file diff --git a/app/st_tbel/modal_view.php b/app/st_tbel/modal_view.php new file mode 100644 index 0000000..224ab81 --- /dev/null +++ b/app/st_tbel/modal_view.php @@ -0,0 +1,50 @@ + +

+ + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_tbel/not_notif.php b/app/st_tbel/not_notif.php new file mode 100644 index 0000000..fd33565 --- /dev/null +++ b/app/st_tbel/not_notif.php @@ -0,0 +1,12 @@ + 'REVISI' AND COALESCE(status,'')<>'PROSES PENGAJUAN') + "); + while($r=pg_fetch_array($data)) {$j=$r[0];} + if ($j==0) {} else {echo $j;} + ?> \ No newline at end of file diff --git a/app/st_tbel/not_revnotif.php b/app/st_tbel/not_revnotif.php new file mode 100644 index 0000000..985531a --- /dev/null +++ b/app/st_tbel/not_revnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_tbel/not_tggnotif.php b/app/st_tbel/not_tggnotif.php new file mode 100644 index 0000000..bfd3e62 --- /dev/null +++ b/app/st_tbel/not_tggnotif.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/st_tbel/not_tmbnotif.php b/app/st_tbel/not_tmbnotif.php new file mode 100644 index 0000000..98acc3e --- /dev/null +++ b/app/st_tbel/not_tmbnotif.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/app/st_tbel/pdf/.htaccess b/app/st_tbel/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/st_tbel/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/st_tbel/pdf/crud.php b/app/st_tbel/pdf/crud.php new file mode 100644 index 0000000..2884be8 --- /dev/null +++ b/app/st_tbel/pdf/crud.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/app/st_tbel/pdf/pdf/1_surat permohonan tubel direktur + ttd.png b/app/st_tbel/pdf/pdf/1_surat permohonan tubel direktur + ttd.png new file mode 100644 index 0000000..9574d44 Binary files /dev/null and b/app/st_tbel/pdf/pdf/1_surat permohonan tubel direktur + ttd.png differ diff --git a/app/st_tbel/pdf/pdf/2_nota dinas atasan langsung.jpeg b/app/st_tbel/pdf/pdf/2_nota dinas atasan langsung.jpeg new file mode 100644 index 0000000..6cce589 Binary files /dev/null and b/app/st_tbel/pdf/pdf/2_nota dinas atasan langsung.jpeg differ diff --git a/app/st_tbel/pdf/pdf/_IDENTITAS PRIBADI.docx b/app/st_tbel/pdf/pdf/_IDENTITAS PRIBADI.docx new file mode 100644 index 0000000..f1ff9f1 Binary files /dev/null and b/app/st_tbel/pdf/pdf/_IDENTITAS PRIBADI.docx differ diff --git a/app/st_tbel/pdf/pdf/_Nama dan No Telp.docx b/app/st_tbel/pdf/pdf/_Nama dan No Telp.docx new file mode 100644 index 0000000..1496a7e Binary files /dev/null and b/app/st_tbel/pdf/pdf/_Nama dan No Telp.docx differ diff --git a/app/st_tbel/pdf/pdf/_No.handphone.png b/app/st_tbel/pdf/pdf/_No.handphone.png new file mode 100644 index 0000000..d1b3498 Binary files /dev/null and b/app/st_tbel/pdf/pdf/_No.handphone.png differ diff --git a/app/st_tbel/pdf/pdf/_Nomor telepon.docx b/app/st_tbel/pdf/pdf/_Nomor telepon.docx new file mode 100644 index 0000000..903ec3f Binary files /dev/null and b/app/st_tbel/pdf/pdf/_Nomor telepon.docx differ diff --git a/app/st_tbel/pdf/tabel_upl_cv.php b/app/st_tbel/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..7ed484c --- /dev/null +++ b/app/st_tbel/pdf/tabel_upl_cv.php @@ -0,0 +1,86 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/st_tbel/pdf/upl_cv.php b/app/st_tbel/pdf/upl_cv.php new file mode 100644 index 0000000..41501bb --- /dev/null +++ b/app/st_tbel/pdf/upl_cv.php @@ -0,0 +1,27 @@ + 0) {} else { +pg_query("INSERT INTO riwayat_syarat_tbel (riwayat_tbel_id,syarat_tbel_id) VALUES ('$riwayat_tbel_id','$syarat_tbel_id')"); +} +$d1=pg_query("SELECT id FROM riwayat_syarat_tbel WHERE riwayat_tbel_id=$riwayat_tbel_id AND syarat_tbel_id=$syarat_tbel_id"); +while($r1=pg_fetch_array($d1)) {$riwayat_syarat_tbel_idxx=$r1[0];} + +//$riwayat_syarat_tbel_id=$_POST['riwayat_syarat_tbel_id_uploadz']; +$riwayat_syarat_tbel_id=$riwayat_syarat_tbel_idxx; +$folder = "pdf"; +$tmp_name = $_FILES["input_load_cvz"]["tmp_name"]; +$name = $folder."/".$riwayat_syarat_tbel_id."_".$_FILES["input_load_cvz"]["name"]; +$name_pdf = $riwayat_syarat_tbel_id."_".$_FILES["input_load_cvz"]["name"]; + +move_uploaded_file($tmp_name, $name); +$ins=pg_query("INSERT INTO dok_syarat_tbel (riwayat_syarat_tbel_id,file,tgl_upload) VALUES ('$riwayat_syarat_tbel_id','$name_pdf',NOW())"); +$upd=pg_query("UPDATE riwayat_syarat_tbel SET tgl_upload_dok=NOW() WHERE id=$riwayat_syarat_tbel_id"); +echo $riwayat_syarat_tbel_id.' - '.$name_pdf; +?> + + diff --git a/app/st_tbel/tabel_daftar.php b/app/st_tbel/tabel_daftar.php new file mode 100644 index 0000000..1eff1d2 --- /dev/null +++ b/app/st_tbel/tabel_daftar.php @@ -0,0 +1,156 @@ + +
+ + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ + \ No newline at end of file diff --git a/app/st_tbel/tabel_daftar_rev.php b/app/st_tbel/tabel_daftar_rev.php new file mode 100644 index 0000000..61db3c1 --- /dev/null +++ b/app/st_tbel/tabel_daftar_rev.php @@ -0,0 +1,215 @@ + +
+ + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + +
NOBERKAS#UPLSTATUS BERKASTGL UPLOADTGL CEKCEKLISTKETERANGAN
+ + + + + + + +
+ +
+
+ +
+
+ + \ No newline at end of file diff --git a/app/st_tbel/tabel_revisi.php b/app/st_tbel/tabel_revisi.php new file mode 100644 index 0000000..23deeb0 --- /dev/null +++ b/app/st_tbel/tabel_revisi.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_tbel/tabel_riwayat.php b/app/st_tbel/tabel_riwayat.php new file mode 100644 index 0000000..70b19bc --- /dev/null +++ b/app/st_tbel/tabel_riwayat.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI' AND COALESCE(i.status,'')<>'PROSES PENGAJUAN')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_tbel/tabel_tgg.php b/app/st_tbel/tabel_tgg.php new file mode 100644 index 0000000..48db4eb --- /dev/null +++ b/app/st_tbel/tabel_tgg.php @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + 'REVISI')")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.tgl_usulan DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + +
+ + \ No newline at end of file diff --git a/app/st_tbel/upd_file.php b/app/st_tbel/upd_file.php new file mode 100644 index 0000000..25162b8 --- /dev/null +++ b/app/st_tbel/upd_file.php @@ -0,0 +1,135 @@ + + +
+ + + + + +
+ +
+ + \ No newline at end of file diff --git a/app/tbel_inbox/crud.php b/app/tbel_inbox/crud.php new file mode 100644 index 0000000..08f13a7 --- /dev/null +++ b/app/tbel_inbox/crud.php @@ -0,0 +1,104 @@ + \ No newline at end of file diff --git a/app/tbel_inbox/excel.php b/app/tbel_inbox/excel.php new file mode 100644 index 0000000..235931c --- /dev/null +++ b/app/tbel_inbox/excel.php @@ -0,0 +1,104 @@ +getDefaultStyle()->getFont()->setName('Arial'); +$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); +$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true); +//$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode('@'); +$objPHPExcel->getSheet(0)->getColumnDimension('A')->setWidth(5); +$objPHPExcel->getSheet(0)->getColumnDimension('B')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('C')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('D')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('E')->setWidth(45); +$objPHPExcel->getSheet(0)->getColumnDimension('F')->setWidth(13); +$objPHPExcel->getSheet(0)->getColumnDimension('G')->setWidth(25); +$objPHPExcel->getSheet(0)->getColumnDimension('H')->setWidth(25); + +$styleBold = array('font' => array('bold' => true)); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); +$objPHPExcel->getSheet(0)->getStyle('A1:H1')->applyFromArray($styleBold); +$objPHPExcel->getSheet(0)->getRowDimension('1')->setRowHeight(30); +$objPHPExcel->getSheet(0)->setTitle($jsheet); +$objPHPExcel->getSheet(0) + ->setCellValue('A1', 'No') + ->setCellValue('B1', 'Nama') + ->setCellValue('C1', 'Tgl Usulan') + ->setCellValue('D1', 'Status Usulan') + ->setCellValue('E1', 'Keterangan') + ->setCellValue('F1', 'Tgl Verifikasi') + ->setCellValue('G1', 'Keterangan Direktur') + ->setCellValue('H1', 'Keterangan BKD'); + + + $query = "SELECT i.id,i.data_pegawai_id,i.tgl_usulan,i.tgl_verifikasi,i.status,i.ket,p.nama,i.ket_dokdir,i.ket_dokbkd + FROM riwayat_tbel i + INNER JOIN data_pegawai p ON (p.id=i.data_pegawai_id) + WHERE i.id IS NOT NULL + ".($jenis== 'Kordik' ? "AND p.satuan_kerja=$satker_id" : "")." + ".($filter_status== 'BELUM VERIFIKASI' ? "AND i.tgl_verifikasi IS NULL AND i.status IS NULL" : " + ".($filter_status== 'SELESAI VERIFIKASI' ? "AND i.tgl_verifikasi IS NOT NULL AND i.status='SELESAI VERIFIKASI'" : " + ".($filter_status== 'TIDAK MEMENUHI SYARAT' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK MEMENUHI SYARAT'" : " + ".($filter_status== 'TIDAK DISETUJUI' ? "AND i.tgl_verifikasi IS NULL AND i.status='TIDAK DISETUJUI'" : " + ".($filter_status== 'BATAL' ? "AND i.status='BATAL'" : " + ".($filter_status== '' ? "" : "")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC"; + +$hasil = pg_query($query); +$baris = 2; +$a=1; +while ($row = pg_fetch_array($hasil)) +{ +$nama=$row['nama']; +if (($row['tgl_usulan']==NULL) || ($row['tgl_usulan']=='')) {$tgl_usulan='';} else {$tgl_usulan=date('d-m-Y',strtotime($row['tgl_usulan']));} +$status1=$row['status']; +$ket=$row['ket']; +if (($row['tgl_verifikasi']==NULL) || ($row['tgl_verifikasi']=='')) {$tgl_verifikasi='';} else {$tgl_verifikasi=date('d-m-Y',strtotime($row['tgl_verifikasi']));} +if (($row['tgl_verifikasi']==NULL) && ($row['status']==NULL)) {$status='BELUM VERIFIKASI';} else {$status=$status1;} +$ket_dokdir=$row['ket_dokdir']; +$ket_dokbkd=$row['ket_dokbkd']; + + $objPHPExcel->getSheet(0) + ->setCellValue('A'.$baris, $a) + ->setCellValue('B'.$baris, $nama) + ->setCellValue('C'.$baris, $tgl_usulan) + ->setCellValue('D'.$baris, ucwords(strtolower($status))) + ->setCellValue('E'.$baris, $ket) + ->setCellValue('F'.$baris, $tgl_verifikasi) + ->setCellValue('G'.$baris, ucwords(strtolower($ket_dokdir))) + ->setCellValue('H'.$baris, ucwords(strtolower($ket_dokbkd))); + + $objPHPExcel->getSheet(0)->getStyle('A1:A'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('F1:H'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('C'.$baris)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $objPHPExcel->getSheet(0)->getStyle('A1:J'.$baris)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + $a++; + $baris++; +} +$akhir=$baris-1; +$objPHPExcel->setActiveSheetIndex(0); + +header('Content-Type: application/vnd.ms-excel'); +header('Content-Disposition: attachment;filename="laporan_tubel.xls"'); +header('Cache-Control: max-age=0'); + +$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); +$objWriter->save('php://output'); +exit; + +?> + + diff --git a/app/tbel_inbox/main.php b/app/tbel_inbox/main.php new file mode 100644 index 0000000..9c94532 --- /dev/null +++ b/app/tbel_inbox/main.php @@ -0,0 +1,170 @@ + +
+
+
+
+

Inbox Tugas Belajar

+
+
+ +
+
+ +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/app/tbel_inbox/modal_edit_verifikasi.php b/app/tbel_inbox/modal_edit_verifikasi.php new file mode 100644 index 0000000..50d6eec --- /dev/null +++ b/app/tbel_inbox/modal_edit_verifikasi.php @@ -0,0 +1,98 @@ + + +

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + " + > +
+ +
+ + \ No newline at end of file diff --git a/app/tbel_inbox/modal_verifikasi.php b/app/tbel_inbox/modal_verifikasi.php new file mode 100644 index 0000000..0727ad4 --- /dev/null +++ b/app/tbel_inbox/modal_verifikasi.php @@ -0,0 +1,192 @@ + + + + + +
+
+ +
Daftar Kelengkapan dan Persyaratan Pendidikan
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+ + " + > +
+
+ +
+
+ + +
+
+
+ +
+
+
+ +
+ + + +
+

+ +
+
+
+
+ +
+ + + +
+

+ +
+
+
+ + \ No newline at end of file diff --git a/app/tbel_inbox/modal_view.php b/app/tbel_inbox/modal_view.php new file mode 100644 index 0000000..1d685e5 --- /dev/null +++ b/app/tbel_inbox/modal_view.php @@ -0,0 +1,68 @@ + +

+ + +
+ + + + +
+ + + \ No newline at end of file diff --git a/app/tbel_inbox/pdf_bkd/.htaccess b/app/tbel_inbox/pdf_bkd/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/tbel_inbox/pdf_bkd/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/tbel_inbox/pdf_bkd/crud.php b/app/tbel_inbox/pdf_bkd/crud.php new file mode 100644 index 0000000..079f663 --- /dev/null +++ b/app/tbel_inbox/pdf_bkd/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/tbel_inbox/pdf_bkd/tabel_upl_cv.php b/app/tbel_inbox/pdf_bkd/tabel_upl_cv.php new file mode 100644 index 0000000..1567b16 --- /dev/null +++ b/app/tbel_inbox/pdf_bkd/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/tbel_inbox/pdf_bkd/upl_cv.php b/app/tbel_inbox/pdf_bkd/upl_cv.php new file mode 100644 index 0000000..7474149 --- /dev/null +++ b/app/tbel_inbox/pdf_bkd/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/tbel_inbox/pdf_dir/.htaccess b/app/tbel_inbox/pdf_dir/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/tbel_inbox/pdf_dir/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/tbel_inbox/pdf_dir/crud.php b/app/tbel_inbox/pdf_dir/crud.php new file mode 100644 index 0000000..21d6f79 --- /dev/null +++ b/app/tbel_inbox/pdf_dir/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/tbel_inbox/pdf_dir/tabel_upl_cv.php b/app/tbel_inbox/pdf_dir/tabel_upl_cv.php new file mode 100644 index 0000000..d0126cb --- /dev/null +++ b/app/tbel_inbox/pdf_dir/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/tbel_inbox/pdf_dir/upl_cv.php b/app/tbel_inbox/pdf_dir/upl_cv.php new file mode 100644 index 0000000..e794fbd --- /dev/null +++ b/app/tbel_inbox/pdf_dir/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/tbel_inbox/tabel.php b/app/tbel_inbox/tabel.php new file mode 100644 index 0000000..d488013 --- /dev/null +++ b/app/tbel_inbox/tabel.php @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + 'PROSES PENGAJUAN'")." + ")." + ")." + ")." + ")." + ")." + ")." + ORDER BY i.id DESC + "); + while($r=pg_fetch_array($d)) { + if (($r['tgl_verifikasi']==NULL) && ($r['status']==NULL)) {$st='BELUM VERIFIKASI';} else {$st=$r['status'];} + ?> + + + + + + + + + + + +
NONAMATGL USULANSTATUS USULANKETERANGANTGL VERIFIKASITOOLS
+ + + + +
+ + \ No newline at end of file diff --git a/app/tbel_inbox/tabel_verifikasi.php b/app/tbel_inbox/tabel_verifikasi.php new file mode 100644 index 0000000..adb831e --- /dev/null +++ b/app/tbel_inbox/tabel_verifikasi.php @@ -0,0 +1,172 @@ + +
+ + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + +
NOBERKASFILESTATUS BERKASTGL KIRIMTGL CEKCEKLISTKETERANGAN + +
+ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/app/tbel_setting/crud.php b/app/tbel_setting/crud.php new file mode 100644 index 0000000..d7e07bf --- /dev/null +++ b/app/tbel_setting/crud.php @@ -0,0 +1,32 @@ + 0) { + $upd_tbel_setting = pg_query("UPDATE syarat_tbel SET + berkas='$berkas' + WHERE id=$id"); + } else { + $ins_tbel_setting = pg_query("INSERT into syarat_tbel ( + berkas + ) values( + '$berkas' + ) + "); + } +} else +if ($key=='delete_tbel_setting') { + $id=$_POST['id']; + $d=pg_query("SELECT file FROM syarat_tbel WHERE id='$id'"); + while($r=pg_fetch_array($d)) {$fil=$r[0];} + $path = "pdf/pdf/".$fil; + if(file_exists($path)){unlink($path);} + $del_tbel_setting = pg_query("DELETE FROM syarat_tbel WHERE id='$id'"); +} +?> \ No newline at end of file diff --git a/app/tbel_setting/main.php b/app/tbel_setting/main.php new file mode 100644 index 0000000..94a6f25 --- /dev/null +++ b/app/tbel_setting/main.php @@ -0,0 +1,119 @@ + +
+
+
+
+

Setting Tugas Belajar

+ + +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/app/tbel_setting/modal.php b/app/tbel_setting/modal.php new file mode 100644 index 0000000..5f385cd --- /dev/null +++ b/app/tbel_setting/modal.php @@ -0,0 +1,17 @@ + + +
+
+ + + +
+
diff --git a/app/tbel_setting/pdf/.htaccess b/app/tbel_setting/pdf/.htaccess new file mode 100644 index 0000000..3bc908b --- /dev/null +++ b/app/tbel_setting/pdf/.htaccess @@ -0,0 +1,4 @@ +php_value upload_max_filesize 900M +php_value post_max_size 900M +php_value max_execution_time 9000 +php_value max_input_time 9000 \ No newline at end of file diff --git a/app/tbel_setting/pdf/crud.php b/app/tbel_setting/pdf/crud.php new file mode 100644 index 0000000..a7db1ba --- /dev/null +++ b/app/tbel_setting/pdf/crud.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/app/tbel_setting/pdf/pdf/5_PERSYARATAN TUGAS BELAJAR.doc b/app/tbel_setting/pdf/pdf/5_PERSYARATAN TUGAS BELAJAR.doc new file mode 100644 index 0000000..73308f3 Binary files /dev/null and b/app/tbel_setting/pdf/pdf/5_PERSYARATAN TUGAS BELAJAR.doc differ diff --git a/app/tbel_setting/pdf/tabel_upl_cv.php b/app/tbel_setting/pdf/tabel_upl_cv.php new file mode 100644 index 0000000..0205e1e --- /dev/null +++ b/app/tbel_setting/pdf/tabel_upl_cv.php @@ -0,0 +1,46 @@ + + + +
+ + + +
+ + + \ No newline at end of file diff --git a/app/tbel_setting/pdf/upl_cv.php b/app/tbel_setting/pdf/upl_cv.php new file mode 100644 index 0000000..411d86a --- /dev/null +++ b/app/tbel_setting/pdf/upl_cv.php @@ -0,0 +1,14 @@ + + + diff --git a/app/tbel_setting/tabel.php b/app/tbel_setting/tabel.php new file mode 100644 index 0000000..52adf02 --- /dev/null +++ b/app/tbel_setting/tabel.php @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + +
NoBerkas#Tools
+ + + + +
+ + + + + diff --git a/app/tbel_setting/upd_file.php b/app/tbel_setting/upd_file.php new file mode 100644 index 0000000..6cd4d40 --- /dev/null +++ b/app/tbel_setting/upd_file.php @@ -0,0 +1,104 @@ + +

+
+ + + + +
+ +
+ + \ No newline at end of file diff --git a/assets/css/bootstrap.min.css b/assets/css/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/assets/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/assets/css/bootstrap.min.css.map b/assets/css/bootstrap.min.css.map new file mode 100644 index 0000000..6c7fa40 --- /dev/null +++ b/assets/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/normalize.less","less/print.less","bootstrap.css","dist/css/bootstrap.css","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":";;;;4EAQA,KACE,YAAA,WACA,yBAAA,KACA,qBAAA,KAOF,KACE,OAAA,EAaF,QAAA,MAAA,QAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,KAAA,IAAA,QAAA,QAaE,QAAA,MAQF,MAAA,OAAA,SAAA,MAIE,QAAA,aACA,eAAA,SAQF,sBACE,QAAA,KACA,OAAA,EAQF,SAAA,SAEE,QAAA,KAUF,EACE,iBAAA,YAQF,SAAA,QAEE,QAAA,EAUF,YACE,cAAA,IAAA,OAOF,EAAA,OAEE,YAAA,IAOF,IACE,WAAA,OAQF,GACE,OAAA,MAAA,EACA,UAAA,IAOF,KACE,MAAA,KACA,WAAA,KAOF,MACE,UAAA,IAOF,IAAA,IAEE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IACE,IAAA,MAGF,IACE,OAAA,OAUF,IACE,OAAA,EAOF,eACE,SAAA,OAUF,OACE,OAAA,IAAA,KAOF,GACE,OAAA,EAAA,mBAAA,YAAA,gBAAA,YACA,WAAA,YAOF,IACE,SAAA,KAOF,KAAA,IAAA,IAAA,KAIE,YAAA,UAAA,UACA,UAAA,IAkBF,OAAA,MAAA,SAAA,OAAA,SAKE,OAAA,EACA,KAAA,QACA,MAAA,QAOF,OACE,SAAA,QAUF,OAAA,OAEE,eAAA,KAWF,OAAA,wBAAA,kBAAA,mBAIE,mBAAA,OACA,OAAA,QAOF,iBAAA,qBAEE,OAAA,QAOF,yBAAA,wBAEE,QAAA,EACA,OAAA,EAQF,MACE,YAAA,OAWF,qBAAA,kBAEE,mBAAA,WAAA,gBAAA,WAAA,WAAA,WACA,QAAA,EASF,8CAAA,8CAEE,OAAA,KAQF,mBACE,mBAAA,YACA,gBAAA,YAAA,WAAA,YAAA,mBAAA,UASF,iDAAA,8CAEE,mBAAA,KAOF,SACE,QAAA,MAAA,OAAA,MACA,OAAA,EAAA,IACA,OAAA,IAAA,MAAA,OAQF,OACE,QAAA,EACA,OAAA,EAOF,SACE,SAAA,KAQF,SACE,YAAA,IAUF,MACE,eAAA,EACA,gBAAA,SAGF,GAAA,GAEE,QAAA,uFCjUF,aA7FI,EAAA,OAAA,QAGI,MAAA,eACA,YAAA,eACA,WAAA,cAAA,mBAAA,eACA,WAAA,eAGJ,EAAA,UAEI,gBAAA,UAGJ,cACI,QAAA,KAAA,WAAA,IAGJ,kBACI,QAAA,KAAA,YAAA,IAKJ,6BAAA,mBAEI,QAAA,GAGJ,WAAA,IAEI,OAAA,IAAA,MAAA,KC4KL,kBAAA,MDvKK,MC0KL,QAAA,mBDrKK,IE8KN,GDLC,kBAAA,MDrKK,ICwKL,UAAA,eCUD,GF5KM,GE2KN,EF1KM,QAAA,ECuKL,OAAA,ECSD,GF3KM,GCsKL,iBAAA,MD/JK,QCkKL,QAAA,KCSD,YFtKU,oBCiKT,iBAAA,eD7JK,OCgKL,OAAA,IAAA,MAAA,KD5JK,OC+JL,gBAAA,mBCSD,UFpKU,UC+JT,iBAAA,eDzJS,mBEkKV,mBDLC,OAAA,IAAA,MAAA,gBEjPD,WACA,YAAA,uBFsPD,IAAA,+CE7OC,IAAK,sDAAuD,4BAA6B,iDAAkD,gBAAiB,gDAAiD,eAAgB,+CAAgD,mBAAoB,2EAA4E,cAE7W,WACA,SAAA,SACA,IAAA,IACA,QAAA,aACA,YAAA,uBACA,WAAA,OACA,YAAA,IACA,YAAA,EAIkC,uBAAA,YAAW,wBAAA,UACX,2BAAW,QAAA,QAEX,uBDuPlC,QAAS,QCtPyB,sBFiPnC,uBEjP8C,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,qBAAW,QAAA,QACX,0BAAW,QAAA,QACX,qBAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,sBAAW,QAAA,QACX,yBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,+BAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,gCAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,gCAAW,QAAA,QACX,gCAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,0BAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,mCAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,sBAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,0BAAW,QAAA,QACX,4BAAW,QAAA,QACX,qCAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,mCAAW,QAAA,QACX,uCAAW,QAAA,QACX,gCAAW,QAAA,QACX,oCAAW,QAAA,QACX,qCAAW,QAAA,QACX,yCAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,iCAAW,QAAA,QACX,oCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,qBAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QASX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,+BAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,mCAAW,QAAA,QACX,4BAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,kCAAW,QAAA,QACX,mCAAW,QAAA,QACX,sCAAW,QAAA,QACX,0CAAW,QAAA,QACX,oCAAW,QAAA,QACX,wCAAW,QAAA,QACX,qCAAW,QAAA,QACX,iCAAW,QAAA,QACX,gCAAW,QAAA,QACX,kCAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QCtS/C,0BCgEE,QAAA,QHi+BF,EDNC,mBAAA,WGxhCI,gBAAiB,WFiiCZ,WAAY,WGl+BZ,OADL,QJg+BJ,mBAAA,WGthCI,gBAAiB,WACpB,WAAA,WHyhCD,KGrhCC,UAAW,KAEX,4BAAA,cAEA,KACA,YAAA,iBAAA,UAAA,MAAA,WHuhCD,UAAA,KGnhCC,YAAa,WF4hCb,MAAO,KACP,iBAAkB,KExhClB,OADA,MAEA,OHqhCD,SG/gCC,YAAa,QACb,UAAA,QACA,YAAA,QAEA,EFwhCA,MAAO,QEthCL,gBAAA,KAIF,QH8gCD,QKjkCC,MAAA,QACA,gBAAA,UF6DF,QACE,QAAA,IAAA,KAAA,yBHygCD,eAAA,KGlgCC,OHqgCD,OAAA,ECSD,IACE,eAAgB,ODDjB,4BM/kCC,0BLklCF,gBKnlCE,iBADA,eH4EA,QAAS,MACT,UAAA,KHugCD,OAAA,KGhgCC,aACA,cAAA,IAEA,eACA,QAAA,aC6FA,UAAA,KACK,OAAA,KACG,QAAA,IEvLR,YAAA,WACA,iBAAA,KACA,OAAA,IAAA,MAAA,KN+lCD,cAAA,IGjgCC,mBAAoB,IAAI,IAAI,YAC5B,cAAA,IAAA,IAAA,YHmgCD,WAAA,IAAA,IAAA,YG5/BC,YACA,cAAA,IAEA,GH+/BD,WAAA,KGv/BC,cAAe,KACf,OAAA,EACA,WAAA,IAAA,MAAA,KAEA,SACA,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EHy/BD,OAAA,KGj/BC,SAAA,OF0/BA,KAAM,cEx/BJ,OAAA,EAEA,0BACA,yBACA,SAAA,OACA,MAAA,KHm/BH,OAAA,KGx+BC,OAAQ,EACR,SAAA,QH0+BD,KAAA,KCSD,cACE,OAAQ,QAQV,IACA,IMlpCE,IACA,IACA,IACA,INwoCF,GACA,GACA,GACA,GACA,GACA,GDAC,YAAA,QOlpCC,YAAa,IN2pCb,YAAa,IACb,MAAO,QAoBT,WAZA,UAaA,WAZA,UM5pCI,WN6pCJ,UM5pCI,WN6pCJ,UM5pCI,WN6pCJ,UDMC,WCLD,UACA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SMppCE,YAAa,INwqCb,YAAa,EACb,MAAO,KAGT,IMxqCE,IAJF,IN2qCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UM5qCA,WN8qCA,UACA,UANA,SM5qCI,UN8qCJ,SM3qCA,UN6qCA,SAQE,UAAW,IAGb,IMprCE,IAJF,INurCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UMvrCA,WNyrCA,UACA,UANA,SMxrCI,UN0rCJ,SMtrCA,UNwrCA,SMxrCU,UAAA,IACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KAOR,IADF,GPssCC,UAAA,KCSD,EMzsCE,OAAA,EAAA,EAAA,KAEA,MPosCD,cAAA,KO/rCC,UAAW,KAwOX,YAAa,IA1OX,YAAA,IPssCH,yBO7rCC,MNssCE,UAAW,MMjsCf,OAAA,MAEE,UAAA,IAKF,MP0rCC,KO1rCsB,QAAA,KP6rCtB,iBAAA,QO5rCsB,WP+rCtB,WAAA,KO9rCsB,YPisCtB,WAAA,MOhsCsB,aPmsCtB,WAAA,OOlsCsB,cPqsCtB,WAAA,QOlsCsB,aPqsCtB,YAAA,OOpsCsB,gBPusCtB,eAAA,UOtsCsB,gBPysCtB,eAAA,UOrsCC,iBPwsCD,eAAA,WQ3yCC,YR8yCD,MAAA,KCSD,cOpzCI,MAAA,QAHF,qBDwGF,qBP6sCC,MAAA,QCSD,cO3zCI,MAAA,QAHF,qBD2GF,qBPitCC,MAAA,QCSD,WOl0CI,MAAA,QAHF,kBD8GF,kBPqtCC,MAAA,QCSD,cOz0CI,MAAA,QAHF,qBDiHF,qBPytCC,MAAA,QCSD,aOh1CI,MAAA,QDwHF,oBAHF,oBExHE,MAAA,QACA,YR01CA,MAAO,KQx1CL,iBAAA,QAHF,mBF8HF,mBP2tCC,iBAAA,QCSD,YQ/1CI,iBAAA,QAHF,mBFiIF,mBP+tCC,iBAAA,QCSD,SQt2CI,iBAAA,QAHF,gBFoIF,gBPmuCC,iBAAA,QCSD,YQ72CI,iBAAA,QAHF,mBFuIF,mBPuuCC,iBAAA,QCSD,WQp3CI,iBAAA,QF6IF,kBADF,kBAEE,iBAAA,QPsuCD,aO7tCC,eAAgB,INsuChB,OAAQ,KAAK,EAAE,KMpuCf,cAAA,IAAA,MAAA,KAFF,GPkuCC,GCSC,WAAY,EACZ,cAAe,KM9tCf,MP0tCD,MO3tCD,MAPI,MASF,cAAA,EAIF,eALE,aAAA,EACA,WAAA,KPkuCD,aO9tCC,aAAc,EAKZ,YAAA,KACA,WAAA,KP6tCH,gBOvtCC,QAAS,aACT,cAAA,IACA,aAAA,IAEF,GNguCE,WAAY,EM9tCZ,cAAA,KAGA,GADF,GP0tCC,YAAA,WOttCC,GPytCD,YAAA,IOnnCD,GAvFM,YAAA,EAEA,yBACA,kBGtNJ,MAAA,KACA,MAAA,MACA,SAAA,OVq6CC,MAAA,KO7nCC,WAAY,MAhFV,cAAA,SPgtCH,YAAA,OOtsCD,kBNgtCE,YAAa,OM1sCjB,0BPssCC,YOrsCC,OAAA,KA9IqB,cAAA,IAAA,OAAA,KAmJvB,YACE,UAAA,IACA,eAAA,UAEA,WPssCD,QAAA,KAAA,KOjsCG,OAAA,EAAA,EAAA,KN0sCF,UAAW,OACX,YAAa,IAAI,MAAM,KMptCzB,yBP+sCC,wBO/sCD,yBNytCE,cAAe,EMnsCb,kBAFA,kBACA,iBPksCH,QAAA,MO/rCG,UAAA,INwsCF,YAAa,WACb,MAAO,KMhsCT,yBP2rCC,yBO3rCD,wBAEE,QAAA,cAEA,oBACA,sBACA,cAAA,KP6rCD,aAAA,EOvrCG,WAAA,MNgsCF,aAAc,IAAI,MAAM,KACxB,YAAa,EMhsCX,kCNksCJ,kCMnsCe,iCACX,oCNmsCJ,oCDLC,mCCUC,QAAS,GMjsCX,iCNmsCA,iCMzsCM,gCAOJ,mCNmsCF,mCDLC,kCO7rCC,QAAA,cPksCD,QWv+CC,cAAe,KVg/Cf,WAAY,OACZ,YAAa,WU7+Cb,KXy+CD,IWr+CD,IACE,KACA,YAAA,MAAA,OAAA,SAAA,cAAA,UAEA,KACA,QAAA,IAAA,IXu+CD,UAAA,IWn+CC,MAAO,QACP,iBAAA,QACA,cAAA,IAEA,IACA,QAAA,IAAA,IACA,UAAA,IV4+CA,MU5+CA,KXq+CD,iBAAA,KW3+CC,cAAe,IASb,mBAAA,MAAA,EAAA,KAAA,EAAA,gBACA,WAAA,MAAA,EAAA,KAAA,EAAA,gBAEA,QV6+CF,QU7+CE,EXq+CH,UAAA,KWh+CC,YAAa,IACb,mBAAA,KACA,WAAA,KAEA,IACA,QAAA,MACA,QAAA,MACA,OAAA,EAAA,EAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KACA,WAAA,UXk+CD,UAAA,WW7+CC,iBAAkB,QAehB,OAAA,IAAA,MAAA,KACA,cAAA,IAEA,SACA,QAAA,EACA,UAAA,QXi+CH,MAAA,QW59CC,YAAa,SACb,iBAAA,YACA,cAAA,EC1DF,gBCHE,WAAA,MACA,WAAA,OAEA,Wb8hDD,cAAA,KYxhDC,aAAA,KAqEA,aAAc,KAvEZ,YAAA,KZ+hDH,yBY1hDC,WAkEE,MAAO,OZ69CV,yBY5hDC,WA+DE,MAAO,OZk+CV,0BYzhDC,WCvBA,MAAA,QAGA,iBbmjDD,cAAA,KYthDC,aAAc,KCvBd,aAAA,KACA,YAAA,KCAE,KACE,aAAA,MAEA,YAAA,MAGA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UdgjDL,SAAA,SchiDG,WAAA,IACE,cAAA,KdkiDL,aAAA,Kc1hDG,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud6hDH,MAAA,Kc7hDG,WdgiDH,MAAA,KchiDG,WdmiDH,MAAA,acniDG,WdsiDH,MAAA,actiDG,UdyiDH,MAAA,IcziDG,Ud4iDH,MAAA,ac5iDG,Ud+iDH,MAAA,ac/iDG,UdkjDH,MAAA,IcljDG,UdqjDH,MAAA,acrjDG,UdwjDH,MAAA,acxjDG,Ud2jDH,MAAA,Ic3jDG,Ud8jDH,MAAA,ac/iDG,UdkjDH,MAAA,YcljDG,gBdqjDH,MAAA,KcrjDG,gBdwjDH,MAAA,acxjDG,gBd2jDH,MAAA,ac3jDG,ed8jDH,MAAA,Ic9jDG,edikDH,MAAA,acjkDG,edokDH,MAAA,acpkDG,edukDH,MAAA,IcvkDG,ed0kDH,MAAA,ac1kDG,ed6kDH,MAAA,ac7kDG,edglDH,MAAA,IchlDG,edmlDH,MAAA,ac9kDG,edilDH,MAAA,YchmDG,edmmDH,MAAA,KcnmDG,gBdsmDH,KAAA,KctmDG,gBdymDH,KAAA,aczmDG,gBd4mDH,KAAA,ac5mDG,ed+mDH,KAAA,Ic/mDG,edknDH,KAAA,aclnDG,edqnDH,KAAA,acrnDG,edwnDH,KAAA,IcxnDG,ed2nDH,KAAA,ac3nDG,ed8nDH,KAAA,ac9nDG,edioDH,KAAA,IcjoDG,edooDH,KAAA,ac/nDG,edkoDH,KAAA,YcnnDG,edsnDH,KAAA,KctnDG,kBdynDH,YAAA,KcznDG,kBd4nDH,YAAA,ac5nDG,kBd+nDH,YAAA,ac/nDG,iBdkoDH,YAAA,IcloDG,iBdqoDH,YAAA,acroDG,iBdwoDH,YAAA,acxoDG,iBd2oDH,YAAA,Ic3oDG,iBd8oDH,YAAA,ac9oDG,iBdipDH,YAAA,acjpDG,iBdopDH,YAAA,IcppDG,iBdupDH,YAAA,acvpDG,iBd0pDH,YAAA,Yc5rDG,iBACE,YAAA,EAOJ,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud0rDD,MAAA,Kc1rDC,Wd6rDD,MAAA,Kc7rDC,WdgsDD,MAAA,achsDC,WdmsDD,MAAA,acnsDC,UdssDD,MAAA,IctsDC,UdysDD,MAAA,aczsDC,Ud4sDD,MAAA,ac5sDC,Ud+sDD,MAAA,Ic/sDC,UdktDD,MAAA,acltDC,UdqtDD,MAAA,acrtDC,UdwtDD,MAAA,IcxtDC,Ud2tDD,MAAA,ac5sDC,Ud+sDD,MAAA,Yc/sDC,gBdktDD,MAAA,KcltDC,gBdqtDD,MAAA,acrtDC,gBdwtDD,MAAA,acxtDC,ed2tDD,MAAA,Ic3tDC,ed8tDD,MAAA,ac9tDC,ediuDD,MAAA,acjuDC,edouDD,MAAA,IcpuDC,eduuDD,MAAA,acvuDC,ed0uDD,MAAA,ac1uDC,ed6uDD,MAAA,Ic7uDC,edgvDD,MAAA,ac3uDC,ed8uDD,MAAA,Yc7vDC,edgwDD,MAAA,KchwDC,gBdmwDD,KAAA,KcnwDC,gBdswDD,KAAA,actwDC,gBdywDD,KAAA,aczwDC,ed4wDD,KAAA,Ic5wDC,ed+wDD,KAAA,ac/wDC,edkxDD,KAAA,aclxDC,edqxDD,KAAA,IcrxDC,edwxDD,KAAA,acxxDC,ed2xDD,KAAA,ac3xDC,ed8xDD,KAAA,Ic9xDC,ediyDD,KAAA,ac5xDC,ed+xDD,KAAA,YchxDC,edmxDD,KAAA,KcnxDC,kBdsxDD,YAAA,KctxDC,kBdyxDD,YAAA,aczxDC,kBd4xDD,YAAA,ac5xDC,iBd+xDD,YAAA,Ic/xDC,iBdkyDD,YAAA,aclyDC,iBdqyDD,YAAA,acryDC,iBdwyDD,YAAA,IcxyDC,iBd2yDD,YAAA,ac3yDC,iBd8yDD,YAAA,ac9yDC,iBdizDD,YAAA,IcjzDC,iBdozDD,YAAA,acpzDC,iBduzDD,YAAA,YY9yDD,iBE3CE,YAAA,GAQF,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udw1DD,MAAA,Kcx1DC,Wd21DD,MAAA,Kc31DC,Wd81DD,MAAA,ac91DC,Wdi2DD,MAAA,acj2DC,Udo2DD,MAAA,Icp2DC,Udu2DD,MAAA,acv2DC,Ud02DD,MAAA,ac12DC,Ud62DD,MAAA,Ic72DC,Udg3DD,MAAA,ach3DC,Udm3DD,MAAA,acn3DC,Uds3DD,MAAA,Ict3DC,Udy3DD,MAAA,ac12DC,Ud62DD,MAAA,Yc72DC,gBdg3DD,MAAA,Kch3DC,gBdm3DD,MAAA,acn3DC,gBds3DD,MAAA,act3DC,edy3DD,MAAA,Icz3DC,ed43DD,MAAA,ac53DC,ed+3DD,MAAA,ac/3DC,edk4DD,MAAA,Icl4DC,edq4DD,MAAA,acr4DC,edw4DD,MAAA,acx4DC,ed24DD,MAAA,Ic34DC,ed84DD,MAAA,acz4DC,ed44DD,MAAA,Yc35DC,ed85DD,MAAA,Kc95DC,gBdi6DD,KAAA,Kcj6DC,gBdo6DD,KAAA,acp6DC,gBdu6DD,KAAA,acv6DC,ed06DD,KAAA,Ic16DC,ed66DD,KAAA,ac76DC,edg7DD,KAAA,ach7DC,edm7DD,KAAA,Icn7DC,eds7DD,KAAA,act7DC,edy7DD,KAAA,acz7DC,ed47DD,KAAA,Ic57DC,ed+7DD,KAAA,ac17DC,ed67DD,KAAA,Yc96DC,edi7DD,KAAA,Kcj7DC,kBdo7DD,YAAA,Kcp7DC,kBdu7DD,YAAA,acv7DC,kBd07DD,YAAA,ac17DC,iBd67DD,YAAA,Ic77DC,iBdg8DD,YAAA,ach8DC,iBdm8DD,YAAA,acn8DC,iBds8DD,YAAA,Ict8DC,iBdy8DD,YAAA,acz8DC,iBd48DD,YAAA,ac58DC,iBd+8DD,YAAA,Ic/8DC,iBdk9DD,YAAA,acl9DC,iBdq9DD,YAAA,YYz8DD,iBE9CE,YAAA,GAQF,0BACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Uds/DD,MAAA,Kct/DC,Wdy/DD,MAAA,Kcz/DC,Wd4/DD,MAAA,ac5/DC,Wd+/DD,MAAA,ac//DC,UdkgED,MAAA,IclgEC,UdqgED,MAAA,acrgEC,UdwgED,MAAA,acxgEC,Ud2gED,MAAA,Ic3gEC,Ud8gED,MAAA,ac9gEC,UdihED,MAAA,acjhEC,UdohED,MAAA,IcphEC,UduhED,MAAA,acxgEC,Ud2gED,MAAA,Yc3gEC,gBd8gED,MAAA,Kc9gEC,gBdihED,MAAA,acjhEC,gBdohED,MAAA,acphEC,eduhED,MAAA,IcvhEC,ed0hED,MAAA,ac1hEC,ed6hED,MAAA,ac7hEC,edgiED,MAAA,IchiEC,edmiED,MAAA,acniEC,edsiED,MAAA,actiEC,edyiED,MAAA,IcziEC,ed4iED,MAAA,acviEC,ed0iED,MAAA,YczjEC,ed4jED,MAAA,Kc5jEC,gBd+jED,KAAA,Kc/jEC,gBdkkED,KAAA,aclkEC,gBdqkED,KAAA,acrkEC,edwkED,KAAA,IcxkEC,ed2kED,KAAA,ac3kEC,ed8kED,KAAA,ac9kEC,edilED,KAAA,IcjlEC,edolED,KAAA,acplEC,edulED,KAAA,acvlEC,ed0lED,KAAA,Ic1lEC,ed6lED,KAAA,acxlEC,ed2lED,KAAA,Yc5kEC,ed+kED,KAAA,Kc/kEC,kBdklED,YAAA,KcllEC,kBdqlED,YAAA,acrlEC,kBdwlED,YAAA,acxlEC,iBd2lED,YAAA,Ic3lEC,iBd8lED,YAAA,ac9lEC,iBdimED,YAAA,acjmEC,iBdomED,YAAA,IcpmEC,iBdumED,YAAA,acvmEC,iBd0mED,YAAA,ac1mEC,iBd6mED,YAAA,Ic7mEC,iBdgnED,YAAA,achnEC,iBdmnED,YAAA,YetrED,iBACA,YAAA,GAGA,MACA,iBAAA,YAEA,QfyrED,YAAA,IevrEC,eAAgB,IAChB,MAAA,KfyrED,WAAA,KelrEC,GACA,WAAA,KfsrED,OexrEC,MAAO,KdmsEP,UAAW,KACX,cAAe,KcvrET,mBd0rER,mBczrEQ,mBAHA,mBACA,mBd0rER,mBDHC,QAAA,IensEC,YAAa,WAoBX,eAAA,IACA,WAAA,IAAA,MAAA,KArBJ,mBdktEE,eAAgB,OAChB,cAAe,IAAI,MAAM,KDJ1B,uCCMD,uCcrtEA,wCdstEA,wCclrEI,2CANI,2CforEP,WAAA,EezqEG,mBf4qEH,WAAA,IAAA,MAAA,KCWD,cACE,iBAAkB,Kc/pEpB,6BdkqEA,6BcjqEE,6BAZM,6BfsqEP,6BCMD,6BDHC,QAAA,ICWD,gBACE,OAAQ,IAAI,MAAM,Kc1qEpB,4Bd6qEA,4Bc7qEA,4BAQQ,4Bf8pEP,4BCMD,4Bc7pEM,OAAA,IAAA,MAAA,KAYF,4BAFJ,4BfopEC,oBAAA,IevoEG,yCf0oEH,iBAAA,QehoEC,4BACA,iBAAA,QfooED,uBe9nEG,SAAA,OdyoEF,QAAS,acxoEL,MAAA,KAEA,sBfioEL,sBgB7wEC,SAAA,OfwxEA,QAAS,WACT,MAAO,KAST,0BerxEE,0Bf+wEF,0BAGA,0BexxEM,0BAMJ,0BfgxEF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCgBlyEC,sCAAA,oCfyyEF,sCetxEM,sCf2xEJ,iBAAkB,QASpB,2Be1yEE,2BfoyEF,2BAGA,2Be7yEM,2BAMJ,2BfqyEF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBvzEC,uCAAA,qCf8zEF,uCe3yEM,uCfgzEJ,iBAAkB,QASpB,wBe/zEE,wBfyzEF,wBAGA,wBel0EM,wBAMJ,wBf0zEF,wBAGA,wBACA,wBDNC,wBCAD,wBAGA,wBASE,iBAAkB,QDLnB,oCgB50EC,oCAAA,kCfm1EF,oCeh0EM,oCfq0EJ,iBAAkB,QASpB,2Bep1EE,2Bf80EF,2BAGA,2Bev1EM,2BAMJ,2Bf+0EF,2BAGA,2BACA,2BDNC,2BCAD,2BAGA,2BASE,iBAAkB,QDLnB,uCgBj2EC,uCAAA,qCfw2EF,uCer1EM,uCf01EJ,iBAAkB,QASpB,0Bez2EE,0Bfm2EF,0BAGA,0Be52EM,0BAMJ,0Bfo2EF,0BAGA,0BACA,0BDNC,0BCAD,0BAGA,0BASE,iBAAkB,QDLnB,sCehtEC,sCADF,oCdwtEA,sCe12EM,sCDoJJ,iBAAA,QA6DF,kBACE,WAAY,KA3DV,WAAA,KAEA,oCACA,kBACA,MAAA,KfotED,cAAA,Ke7pEC,WAAY,OAnDV,mBAAA,yBfmtEH,OAAA,IAAA,MAAA,KCWD,yBACE,cAAe,Ec5qEjB,qCd+qEA,qCcjtEI,qCARM,qCfktET,qCCMD,qCDHC,YAAA,OCWD,kCACE,OAAQ,EcvrEV,0Dd0rEA,0Dc1rEA,0DAzBU,0Df4sET,0DCMD,0DAME,YAAa,Ec/rEf,yDdksEA,yDclsEA,yDArBU,yDfgtET,yDCMD,yDAME,aAAc,EDLjB,yDe1sEW,yDEzNV,yDjBk6EC,yDiBj6ED,cAAA,GAMA,SjBk6ED,UAAA,EiB/5EC,QAAS,EACT,OAAA,EACA,OAAA,EAEA,OACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,cAAA,KACA,UAAA,KjBi6ED,YAAA,QiB95EC,MAAO,KACP,OAAA,EACA,cAAA,IAAA,MAAA,QAEA,MjBg6ED,QAAA,aiBr5EC,UAAW,Kb4BX,cAAA,IACG,YAAA,IJ63EJ,mBiBr5EC,mBAAoB,WhBg6EjB,gBAAiB,WgB95EpB,WAAA,WjBy5ED,qBiBv5EC,kBAGA,OAAQ,IAAI,EAAE,EACd,WAAA,MjBs5ED,YAAA,OiBj5EC,iBACA,QAAA,MAIF,kBhB25EE,QAAS,MgBz5ET,MAAA,KAIF,iBAAA,ahB05EE,OAAQ,KI99ER,uBY2EF,2BjB64EC,wBiB54EC,QAAA,IAAA,KAAA,yBACA,eAAA,KAEA,OACA,QAAA,MjB+4ED,YAAA,IiBr3EC,UAAW,KACX,YAAA,WACA,MAAA,KAEA,cACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KbxDA,iBAAA,KACQ,iBAAA,KAyHR,OAAA,IAAA,MAAA,KACK,cAAA,IACG,mBAAA,MAAA,EAAA,IAAA,IAAA,iBJwzET,WAAA,MAAA,EAAA,IAAA,IAAA,iBkBh8EC,mBAAA,aAAA,YAAA,KAAA,mBAAA,YAAA,KACE,cAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KACA,WAAA,aAAA,YAAA,KAAA,WAAA,YAAA,KdWM,oBJy7ET,aAAA,QIx5EC,QAAA,EACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,qBAEF,gCAA0B,MAAA,KJ25E3B,QAAA,EI15EiC,oCJ65EjC,MAAA,KiBh4EG,yCACA,MAAA,KAQF,0BhBs4EA,iBAAkB,YAClB,OAAQ,EgBn4EN,wBjB63EH,wBiB13EC,iChBq4EA,iBAAkB,KgBn4EhB,QAAA,EAIF,wBACE,iCjB03EH,OAAA,YiB72EC,sBjBg3ED,OAAA,KiB91EG,mBhB02EF,mBAAoB,KAEtB,qDgB32EM,8BjBo2EH,8BiBj2EC,wCAAA,+BhB62EA,YAAa,KgB32EX,iCjBy2EH,iCiBt2EC,2CAAA,kChB02EF,0BACA,0BACA,oCACA,2BAKE,YAAa,KgBh3EX,iCjB82EH,iCACF,2CiBp2EC,kChBu2EA,0BACA,0BACA,oCACA,2BgBz2EA,YAAA,MhBi3EF,YgBv2EE,cAAA,KAGA,UADA,OjBi2ED,SAAA,SiBr2EC,QAAS,MhBg3ET,WAAY,KgBx2EV,cAAA,KAGA,gBADA,aAEA,WAAA,KjBi2EH,aAAA,KiB91EC,cAAe,EhBy2Ef,YAAa,IACb,OAAQ,QgBp2ER,+BjBg2ED,sCiBl2EC,yBACA,gCAIA,SAAU,ShBw2EV,WAAY,MgBt2EZ,YAAA,MAIF,oBAAA,cAEE,WAAA,KAGA,iBADA,cAEA,SAAA,SACA,QAAA,aACA,aAAA,KjB61ED,cAAA,EiB31EC,YAAa,IhBs2Eb,eAAgB,OgBp2EhB,OAAA,QAUA,kCjBo1ED,4BCWC,WAAY,EACZ,YAAa,KgBv1Eb,wCAAA,qCjBm1ED,8BCOD,+BgBh2EI,2BhB+1EJ,4BAME,OAAQ,YDNT,0BiBv1EG,uBAMF,oCAAA,iChB61EA,OAAQ,YDNT,yBiBp1EK,sBAaJ,mCAFF,gCAGE,OAAA,YAGA,qBjBy0ED,WAAA,KiBv0EC,YAAA,IhBk1EA,eAAgB,IgBh1Ed,cAAA,EjB00EH,8BiB5zED,8BCnQE,cAAA,EACA,aAAA,EAEA,UACA,OAAA,KlBkkFD,QAAA,IAAA,KkBhkFC,UAAA,KACE,YAAA,IACA,cAAA,IAGF,gBjB0kFA,OAAQ,KiBxkFN,YAAA,KD2PA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjBy0EH,QAAA,IAAA,KiB/0EC,UAAW,KAST,YAAA,IACA,cAAA,IAVJ,mChB81EE,OAAQ,KgBh1EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjBy0EH,WAAA,KiBr0EC,QAAS,IAAI,KC/Rb,UAAA,KACA,YAAA,IAEA,UACA,OAAA,KlBumFD,QAAA,KAAA,KkBrmFC,UAAA,KACE,YAAA,UACA,cAAA,IAGF,gBjB+mFA,OAAQ,KiB7mFN,YAAA,KDuRA,0BAFJ,kBAGI,OAAA,KAEA,6BACA,OAAA,KjBk1EH,QAAA,KAAA,KiBx1EC,UAAW,KAST,YAAA,UACA,cAAA,IAVJ,mChBu2EE,OAAQ,KgBz1EN,YAAA,KAGA,6CAjBJ,qCAkBI,OAAA,KAEA,oCACA,OAAA,KjBk1EH,WAAA,KiBz0EC,QAAS,KAAK,KAEd,UAAA,KjB00ED,YAAA,UiBt0EG,cjBy0EH,SAAA,SiBp0EC,4BACA,cAAA,OAEA,uBACA,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,MACA,MAAA,KjBu0ED,OAAA,KiBr0EC,YAAa,KhBg1Eb,WAAY,OACZ,eAAgB,KDLjB,oDiBv0EC,uCADA,iCAGA,MAAO,KhBg1EP,OAAQ,KACR,YAAa,KDLd,oDiBv0EC,uCADA,iCAKA,MAAO,KhB80EP,OAAQ,KACR,YAAa,KAKf,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBruFG,mCAJA,yBD0ZJ,gCbvWE,MAAA,QJ2rFD,2BkBxuFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJgsFD,iCiBz1EC,aAAc,QC5YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlByuFH,gCiB91EC,MAAO,QCtYL,iBAAA,QlBuuFH,aAAA,QCWD,oCACE,MAAO,QAKT,uBAEA,8BAJA,4BADA,yBAEA,oBAEA,2BDNC,4BkBnwFG,mCAJA,yBD6ZJ,gCb1WE,MAAA,QJytFD,2BkBtwFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJ8tFD,iCiBp3EC,aAAc,QC/YZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBuwFH,gCiBz3EC,MAAO,QCzYL,iBAAA,QlBqwFH,aAAA,QCWD,oCACE,MAAO,QAKT,qBAEA,4BAJA,0BADA,uBAEA,kBAEA,yBDNC,0BkBjyFG,iCAJA,uBDgaJ,8Bb7WE,MAAA,QJuvFD,yBkBpyFG,aAAA,QACE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBd4CJ,WAAA,MAAA,EAAA,IAAA,IAAA,iBJ4vFD,+BiB/4EC,aAAc,QClZZ,mBAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QACA,WAAA,MAAA,EAAA,IAAA,IAAA,iBAAA,EAAA,EAAA,IAAA,QlBqyFH,8BiBp5EC,MAAO,QC5YL,iBAAA,QlBmyFH,aAAA,QiB/4EG,kCjBk5EH,MAAA,QiB/4EG,2CjBk5EH,IAAA,KiBv4EC,mDACA,IAAA,EAEA,YjB04ED,QAAA,MiBvzEC,WAAY,IAwEZ,cAAe,KAtIX,MAAA,QAEA,yBjBy3EH,yBiBrvEC,QAAS,aA/HP,cAAA,EACA,eAAA,OjBw3EH,2BiB1vEC,QAAS,aAxHP,MAAA,KjBq3EH,eAAA,OiBj3EG,kCACA,QAAA,aAmHJ,0BhB4wEE,QAAS,aACT,eAAgB,OgBr3Ed,wCjB82EH,6CiBtwED,2CjBywEC,MAAA,KiB72EG,wCACA,MAAA,KAmGJ,4BhBwxEE,cAAe,EgBp3Eb,eAAA,OAGA,uBADA,oBjB82EH,QAAA,aiBpxEC,WAAY,EhB+xEZ,cAAe,EgBr3EX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB6xEC,sCiBx2EG,SAAA,SjB22EH,YAAA,EiBh2ED,kDhB42EE,IAAK,GgBl2EL,2BjB+1EH,kCiBh2EG,wBAEA,+BAXF,YAAa,IhBo3Eb,WAAY,EgBn2EV,cAAA,EJviBF,2BIshBF,wBJrhBE,WAAA,KI4jBA,6BAyBA,aAAc,MAnCV,YAAA,MAEA,yBjBw1EH,gCACF,YAAA,IiBx3EG,cAAe,EAwCf,WAAA,OAwBJ,sDAdQ,MAAA,KjB80EL,yBACF,+CiBn0EC,YAAA,KAEE,UAAW,MjBs0EZ,yBACF,+CmBp6FG,YAAa,IACf,UAAA,MAGA,KACA,QAAA,aACA,QAAA,IAAA,KAAA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,WACA,WAAA,OC0CA,YAAA,OACA,eAAA,OACA,iBAAA,aACA,aAAA,ahB+JA,OAAA,QACG,oBAAA,KACC,iBAAA,KACI,gBAAA,KJ+tFT,YAAA,KmBv6FG,iBAAA,KlBm7FF,OAAQ,IAAI,MAAM,YAClB,cAAe,IkB96Ff,kBdzBA,kBACA,WLk8FD,kBCOD,kBADA,WAME,QAAS,IAAI,KAAK,yBAClB,eAAgB,KkBh7FhB,WnBy6FD,WmB56FG,WlBw7FF,MAAO,KkBn7FL,gBAAA,Kf6BM,YADR,YJk5FD,iBAAA,KmBz6FC,QAAA,ElBq7FA,mBAAoB,MAAM,EAAE,IAAI,IAAI,iBAC5B,WAAY,MAAM,EAAE,IAAI,IAAI,iBoBh+FpC,cAGA,ejB8DA,wBACQ,OAAA,YJ05FT,OAAA,kBmBz6FG,mBAAA,KlBq7FM,WAAY,KkBn7FhB,QAAA,IASN,eC3DE,yBACA,eAAA,KpBi+FD,aoB99FC,MAAA,KnB0+FA,iBAAkB,KmBx+FhB,aAAA,KpBk+FH,mBoBh+FO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBi+FH,mBoB99FC,MAAA,KnB0+FA,iBAAkB,QAClB,aAAc,QmBt+FR,oBADJ,oBpBi+FH,mCoB99FG,MAAA,KnB0+FF,iBAAkB,QAClB,aAAc,QmBt+FN,0BnB4+FV,0BAHA,0BmB1+FM,0BnB4+FN,0BAHA,0BDFC,yCoBx+FK,yCnB4+FN,yCmBv+FE,MAAA,KnB++FA,iBAAkB,QAClB,aAAc,QmBx+FZ,oBpBg+FH,oBoBh+FG,mCnB6+FF,iBAAkB,KmBz+FV,4BnB8+FV,4BAHA,4BDHC,6BCOD,6BAHA,6BkB39FA,sCClBM,sCnB8+FN,sCmBx+FI,iBAAA,KACA,aAAA,KDcJ,oBC9DE,MAAA,KACA,iBAAA,KpB0hGD,aoBvhGC,MAAA,KnBmiGA,iBAAkB,QmBjiGhB,aAAA,QpB2hGH,mBoBzhGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB0hGH,mBoBvhGC,MAAA,KnBmiGA,iBAAkB,QAClB,aAAc,QmB/hGR,oBADJ,oBpB0hGH,mCoBvhGG,MAAA,KnBmiGF,iBAAkB,QAClB,aAAc,QmB/hGN,0BnBqiGV,0BAHA,0BmBniGM,0BnBqiGN,0BAHA,0BDFC,yCoBjiGK,yCnBqiGN,yCmBhiGE,MAAA,KnBwiGA,iBAAkB,QAClB,aAAc,QmBjiGZ,oBpByhGH,oBoBzhGG,mCnBsiGF,iBAAkB,KmBliGV,4BnBuiGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBjhGA,sCCrBM,sCnBuiGN,sCmBjiGI,iBAAA,QACA,aAAA,QDkBJ,oBClEE,MAAA,QACA,iBAAA,KpBmlGD,aoBhlGC,MAAA,KnB4lGA,iBAAkB,QmB1lGhB,aAAA,QpBolGH,mBoBllGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBmlGH,mBoBhlGC,MAAA,KnB4lGA,iBAAkB,QAClB,aAAc,QmBxlGR,oBADJ,oBpBmlGH,mCoBhlGG,MAAA,KnB4lGF,iBAAkB,QAClB,aAAc,QmBxlGN,0BnB8lGV,0BAHA,0BmB5lGM,0BnB8lGN,0BAHA,0BDFC,yCoB1lGK,yCnB8lGN,yCmBzlGE,MAAA,KnBimGA,iBAAkB,QAClB,aAAc,QmB1lGZ,oBpBklGH,oBoBllGG,mCnB+lGF,iBAAkB,KmB3lGV,4BnBgmGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBtkGA,sCCzBM,sCnBgmGN,sCmB1lGI,iBAAA,QACA,aAAA,QDsBJ,oBCtEE,MAAA,QACA,iBAAA,KpB4oGD,UoBzoGC,MAAA,KnBqpGA,iBAAkB,QmBnpGhB,aAAA,QpB6oGH,gBoB3oGO,gBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB4oGH,gBoBzoGC,MAAA,KnBqpGA,iBAAkB,QAClB,aAAc,QmBjpGR,iBADJ,iBpB4oGH,gCoBzoGG,MAAA,KnBqpGF,iBAAkB,QAClB,aAAc,QmBjpGN,uBnBupGV,uBAHA,uBmBrpGM,uBnBupGN,uBAHA,uBDFC,sCoBnpGK,sCnBupGN,sCmBlpGE,MAAA,KnB0pGA,iBAAkB,QAClB,aAAc,QmBnpGZ,iBpB2oGH,iBoB3oGG,gCnBwpGF,iBAAkB,KmBppGV,yBnBypGV,yBAHA,yBDHC,0BCOD,0BAHA,0BkB3nGA,mCC7BM,mCnBypGN,mCmBnpGI,iBAAA,QACA,aAAA,QD0BJ,iBC1EE,MAAA,QACA,iBAAA,KpBqsGD,aoBlsGC,MAAA,KnB8sGA,iBAAkB,QmB5sGhB,aAAA,QpBssGH,mBoBpsGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBqsGH,mBoBlsGC,MAAA,KnB8sGA,iBAAkB,QAClB,aAAc,QmB1sGR,oBADJ,oBpBqsGH,mCoBlsGG,MAAA,KnB8sGF,iBAAkB,QAClB,aAAc,QmB1sGN,0BnBgtGV,0BAHA,0BmB9sGM,0BnBgtGN,0BAHA,0BDFC,yCoB5sGK,yCnBgtGN,yCmB3sGE,MAAA,KnBmtGA,iBAAkB,QAClB,aAAc,QmB5sGZ,oBpBosGH,oBoBpsGG,mCnBitGF,iBAAkB,KmB7sGV,4BnBktGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBhrGA,sCCjCM,sCnBktGN,sCmB5sGI,iBAAA,QACA,aAAA,QD8BJ,oBC9EE,MAAA,QACA,iBAAA,KpB8vGD,YoB3vGC,MAAA,KnBuwGA,iBAAkB,QmBrwGhB,aAAA,QpB+vGH,kBoB7vGO,kBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB8vGH,kBoB3vGC,MAAA,KnBuwGA,iBAAkB,QAClB,aAAc,QmBnwGR,mBADJ,mBpB8vGH,kCoB3vGG,MAAA,KnBuwGF,iBAAkB,QAClB,aAAc,QmBnwGN,yBnBywGV,yBAHA,yBmBvwGM,yBnBywGN,yBAHA,yBDFC,wCoBrwGK,wCnBywGN,wCmBpwGE,MAAA,KnB4wGA,iBAAkB,QAClB,aAAc,QmBrwGZ,mBpB6vGH,mBoB7vGG,kCnB0wGF,iBAAkB,KmBtwGV,2BnB2wGV,2BAHA,2BDHC,4BCOD,4BAHA,4BkBruGA,qCCrCM,qCnB2wGN,qCmBrwGI,iBAAA,QACA,aAAA,QDuCJ,mBACE,MAAA,QACA,iBAAA,KnB+tGD,UmB5tGC,YAAA,IlBwuGA,MAAO,QACP,cAAe,EAEjB,UGzwGE,iBemCE,iBflCM,oBJkwGT,6BmB7tGC,iBAAA,YlByuGA,mBAAoB,KACZ,WAAY,KkBtuGlB,UAEF,iBAAA,gBnB6tGD,gBmB3tGG,aAAA,YnBiuGH,gBmB/tGG,gBAIA,MAAA,QlBuuGF,gBAAiB,UACjB,iBAAkB,YDNnB,0BmBhuGK,0BAUN,mCATM,mClB2uGJ,MAAO,KmB1yGP,gBAAA,KAGA,mBADA,QpBmyGD,QAAA,KAAA,KmBztGC,UAAW,KlBquGX,YAAa,UmBjzGb,cAAA,IAGA,mBADA,QpB0yGD,QAAA,IAAA,KmB5tGC,UAAW,KlBwuGX,YAAa,ImBxzGb,cAAA,IAGA,mBADA,QpBizGD,QAAA,IAAA,ImB3tGC,UAAW,KACX,YAAA,IACA,cAAA,IAIF,WACE,QAAA,MnB2tGD,MAAA,KCYD,sBACE,WAAY,IqBz3GZ,6BADF,4BtBk3GC,6BI7rGC,MAAA,KAEQ,MJisGT,QAAA,EsBr3GC,mBAAA,QAAA,KAAA,OACE,cAAA,QAAA,KAAA,OtBu3GH,WAAA,QAAA,KAAA,OsBl3GC,StBq3GD,QAAA,EsBn3Ga,UtBs3Gb,QAAA,KsBr3Ga,atBw3Gb,QAAA,MsBv3Ga,etB03Gb,QAAA,UsBt3GC,kBACA,QAAA,gBlBwKA,YACQ,SAAA,SAAA,OAAA,EAOR,SAAA,OACQ,mCAAA,KAAA,8BAAA,KAGR,2BAAA,KACQ,4BAAA,KAAA,uBAAA,KJ2sGT,oBAAA,KuBr5GC,4BAA6B,OAAQ,WACrC,uBAAA,OAAA,WACA,oBAAA,OAAA,WAEA,OACA,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,IACA,eAAA,OvBu5GD,WAAA,IAAA,OuBn5GC,WAAY,IAAI,QtBk6GhB,aAAc,IAAI,MAAM,YsBh6GxB,YAAA,IAAA,MAAA,YAKA,UADF,QvBo5GC,SAAA,SuB94GC,uBACA,QAAA,EAEA,eACA,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,IAAA,EACA,OAAA,IAAA,EAAA,EACA,UAAA,KACA,WAAA,KACA,WAAA,KnBsBA,iBAAA,KACQ,wBAAA,YmBrBR,gBAAA,YtB+5GA,OsB/5GA,IAAA,MAAA,KvBk5GD,OAAA,IAAA,MAAA,gBuB74GC,cAAA,IACE,mBAAA,EAAA,IAAA,KAAA,iBACA,WAAA,EAAA,IAAA,KAAA,iBAzBJ,0BCzBE,MAAA,EACA,KAAA,KAEA,wBxBo8GD,OAAA,IuB96GC,OAAQ,IAAI,EAmCV,SAAA,OACA,iBAAA,QAEA,oBACA,QAAA,MACA,QAAA,IAAA,KACA,MAAA,KvB84GH,YAAA,IuBx4GC,YAAA,WtBw5GA,MAAO,KsBt5GL,YAAA,OvB44GH,0BuB14GG,0BAMF,MAAA,QtBo5GA,gBAAiB,KACjB,iBAAkB,QsBj5GhB,yBAEA,+BADA,+BvBu4GH,MAAA,KuB73GC,gBAAA,KtB64GA,iBAAkB,QAClB,QAAS,EDZV,2BuB33GC,iCAAA,iCAEE,MAAA,KEzGF,iCF2GE,iCAEA,gBAAA,KvB63GH,OAAA,YuBx3GC,iBAAkB,YAGhB,iBAAA,KvBw3GH,OAAA,0DuBn3GG,qBvBs3GH,QAAA,MuB72GC,QACA,QAAA,EAQF,qBACE,MAAA,EACA,KAAA,KAIF,oBACE,MAAA,KACA,KAAA,EAEA,iBACA,QAAA,MACA,QAAA,IAAA,KvBw2GD,UAAA,KuBp2GC,YAAa,WACb,MAAA,KACA,YAAA,OAEA,mBACA,SAAA,MACA,IAAA,EvBs2GD,MAAA,EuBl2GC,OAAQ,EACR,KAAA,EACA,QAAA,IAQF,2BtB42GE,MAAO,EsBx2GL,KAAA,KAEA,eACA,sCvB41GH,QAAA,GuBn2GC,WAAY,EtBm3GZ,cAAe,IAAI,OsBx2GjB,cAAA,IAAA,QAEA,uBvB41GH,8CuBv0GC,IAAK,KAXL,OAAA,KApEA,cAAA,IvB25GC,yBuBv1GD,6BA1DA,MAAA,EACA,KAAA,KvBq5GD,kC0BpiHG,MAAO,KzBojHP,KAAM,GyBhjHR,W1BsiHD,oB0B1iHC,SAAU,SzB0jHV,QAAS,ayBpjHP,eAAA,OAGA,yB1BsiHH,gBCgBC,SAAU,SACV,MAAO,KyB7iHT,gC1BsiHC,gCCYD,+BAFA,+ByBhjHA,uBANM,uBzBujHN,sBAFA,sBAQE,QAAS,EyBljHP,qB1BuiHH,2B0BliHD,2BACE,iC1BoiHD,YAAA,KCgBD,aACE,YAAa,KDZd,kB0B1iHD,wBAAA,0BzB2jHE,MAAO,KDZR,kB0B/hHD,wBACE,0B1BiiHD,YAAA,I0B5hHC,yE1B+hHD,cAAA,E2BhlHC,4BACG,YAAA,EDsDL,mEzB6iHE,wBAAyB,E0B5lHzB,2BAAA,E3BilHD,6C0B5hHD,8CACE,uBAAA,E1B8hHD,0BAAA,E0B3hHC,sB1B8hHD,MAAA,KCgBD,8D0B/mHE,cAAA,E3BomHD,mE0B3hHD,oECjEE,wBAAA,EACG,2BAAA,EDqEL,oEzB0iHE,uBAAwB,EyBxiHxB,0BAAA,EAiBF,mCACE,iCACA,QAAA,EAEF,iCACE,cAAA,IACA,aAAA,IAKF,oCtB/CE,cAAA,KACQ,aAAA,KsBkDR,iCtBnDA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBsByDV,0CACE,mBAAA,K1BugHD,WAAA,K0BngHC,YACA,YAAA,EAGF,eACE,aAAA,IAAA,IAAA,E1BqgHD,oBAAA,ECgBD,uBACE,aAAc,EAAE,IAAI,IyB1gHlB,yBACA,+BACA,oC1B+/GH,QAAA,M0BtgHC,MAAO,KAcH,MAAA,K1B2/GL,UAAA,KCgBD,oCACE,MAAO,KyBpgHL,8BACA,oC1By/GH,oC0Bp/GC,0CACE,WAAA,K1Bs/GH,YAAA,E2B/pHC,4DACC,cAAA,EAQA,sD3B4pHF,uBAAA,I0Bt/GC,wBAAA,IC/KA,2BAAA,EACC,0BAAA,EAQA,sD3BkqHF,uBAAA,E0Bv/GC,wBAAyB,EACzB,2BAAA,I1By/GD,0BAAA,ICgBD,uE0BtrHE,cAAA,E3B2qHD,4E0Bt/GD,6EC7LE,2BAAA,EACC,0BAAA,EDoMH,6EACE,uBAAA,EACA,wBAAA,EAEA,qB1Bo/GD,QAAA,M0Bx/GC,MAAO,KzBwgHP,aAAc,MyBjgHZ,gBAAA,SAEA,0B1Bq/GH,gC0B9/GC,QAAS,WAYP,MAAA,K1Bq/GH,MAAA,G0Bj/GG,qC1Bo/GH,MAAA,KCgBD,+CACE,KAAM,KyB7+GF,gDAFA,6C1Bs+GL,2D0Br+GK,wDEzOJ,SAAU,SACV,KAAA,cACA,eAAA,K5BitHD,a4B7sHC,SAAA,SACE,QAAA,MACA,gBAAA,S5BgtHH,0B4BxtHC,MAAO,KAeL,cAAA,EACA,aAAA,EAOA,2BACA,SAAA,S5BusHH,QAAA,E4BrsHG,MAAA,KACE,MAAA,K5BusHL,cAAA,ECgBD,iCACE,QAAS,EiBnrHT,8BACA,mCACA,sCACA,OAAA,KlBwqHD,QAAA,KAAA,KkBtqHC,UAAA,KjBsrHA,YAAa,UACb,cAAe,IiBrrHb,oClB0qHH,yCkBvqHC,4CjBurHA,OAAQ,KACR,YAAa,KDTd,8C4B/sHD,mDAAA,sD3B0tHA,sCACA,2CiBzrHI,8CjB8rHF,OAAQ,KiB1sHR,8BACA,mCACA,sCACA,OAAA,KlB+rHD,QAAA,IAAA,KkB7rHC,UAAA,KjB6sHA,YAAa,IACb,cAAe,IiB5sHb,oClBisHH,yCkB9rHC,4CjB8sHA,OAAQ,KACR,YAAa,KDTd,8C4B7tHD,mDAAA,sD3BwuHA,sCACA,2CiBhtHI,8CjBqtHF,OAAQ,K2BzuHR,2B5B6tHD,mB4B7tHC,iB3B8uHA,QAAS,W2BzuHX,8D5B6tHC,sD4B7tHD,oDAEE,cAAA,EAEA,mB5B+tHD,iB4B1tHC,MAAO,GACP,YAAA,OACA,eAAA,OAEA,mBACA,QAAA,IAAA,KACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,K5B4tHD,WAAA,O4BztHC,iBAAA,KACE,OAAA,IAAA,MAAA,KACA,cAAA,I5B4tHH,4B4BztHC,QAAA,IAAA,KACE,UAAA,KACA,cAAA,I5B4tHH,4B4B/uHC,QAAS,KAAK,K3B+vHd,UAAW,K2BruHT,cAAA,IAKJ,wCAAA,qC3BquHE,WAAY,EAEd,uCACA,+BACA,kC0B70HE,6CACG,8CC4GL,6D5BqtHC,wE4BptHC,wBAAA,E5ButHD,2BAAA,ECgBD,+BACE,aAAc,EAEhB,sCACA,8B2BhuHA,+D5BstHC,oDCWD,iC0Bl1HE,4CACG,6CCiHH,uBAAA,E5BwtHD,0BAAA,E4BltHC,8BAGA,YAAA,E5BotHD,iB4BxtHC,SAAU,SAUR,UAAA,E5BitHH,YAAA,O4B/sHK,sB5BktHL,SAAA,SCgBD,2BACE,YAAa,K2BxtHb,6BAAA,4B5B4sHD,4B4BzsHK,QAAA,EAGJ,kCAAA,wCAGI,aAAA,K5B4sHL,iC6B12HD,uCACE,QAAA,EACA,YAAA,K7B62HD,K6B/2HC,aAAc,EAOZ,cAAA,EACA,WAAA,KARJ,QAWM,SAAA,SACA,QAAA,M7B42HL,U6B12HK,SAAA,S5B03HJ,QAAS,M4Bx3HH,QAAA,KAAA,KAMJ,gB7Bu2HH,gB6Bt2HK,gBAAA,K7By2HL,iBAAA,KCgBD,mB4Br3HQ,MAAA,KAGA,yBADA,yB7B02HP,MAAA,K6Bl2HG,gBAAA,K5Bk3HF,OAAQ,YACR,iBAAkB,Y4B/2Hd,aAzCN,mB7B64HC,mBwBh5HC,iBAAA,KACA,aAAA,QAEA,kBxBm5HD,OAAA,I6Bn5HC,OAAQ,IAAI,EA0DV,SAAA,O7B41HH,iBAAA,Q6Bl1HC,c7Bq1HD,UAAA,K6Bn1HG,UAEA,cAAA,IAAA,MAAA,KALJ,aASM,MAAA,KACA,cAAA,KAEA,e7Bo1HL,aAAA,I6Bn1HK,YAAA,WACE,OAAA,IAAA,MAAA,Y7Bq1HP,cAAA,IAAA,IAAA,EAAA,ECgBD,qBACE,aAAc,KAAK,KAAK,K4B51HlB,sBAEA,4BADA,4BAEA,MAAA,K7Bi1HP,OAAA,Q6B50HC,iBAAA,KAqDA,OAAA,IAAA,MAAA,KA8BA,oBAAA,YAnFA,wBAwDE,MAAA,K7B2xHH,cAAA,E6BzxHK,2BACA,MAAA,KA3DJ,6BAgEE,cAAA,IACA,WAAA,OAYJ,iDA0DE,IAAK,KAjED,KAAA,K7B0xHH,yB6BztHD,2BA9DM,QAAA,W7B0xHL,MAAA,G6Bn2HD,6BAuFE,cAAA,GAvFF,6B5Bw3HA,aAAc,EACd,cAAe,IDZhB,kC6BtuHD,wCA3BA,wCATM,OAAA,IAAA,MAAA,K7B+wHH,yB6B3uHD,6B5B2vHE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,kC6B92HD,wC7B+2HD,wC6B72HG,oBAAA,MAIE,c7B+2HL,MAAA,K6B52HK,gB7B+2HL,cAAA,ICgBD,iBACE,YAAa,I4Bv3HP,uBAQR,6B7Bo2HC,6B6Bl2HG,MAAA,K7Bq2HH,iBAAA,Q6Bn2HK,gBACA,MAAA,KAYN,mBACE,WAAA,I7B41HD,YAAA,E6Bz1HG,e7B41HH,MAAA,K6B11HK,kBACA,MAAA,KAPN,oBAYI,cAAA,IACA,WAAA,OAYJ,wCA0DE,IAAK,KAjED,KAAA,K7B21HH,yB6B1xHD,kBA9DM,QAAA,W7B21HL,MAAA,G6Bl1HD,oBACA,cAAA,GAIE,oBACA,cAAA,EANJ,yB5B02HE,aAAc,EACd,cAAe,IDZhB,8B6B1yHD,oCA3BA,oCATM,OAAA,IAAA,MAAA,K7Bm1HH,yB6B/yHD,yB5B+zHE,cAAe,IAAI,MAAM,KACzB,cAAe,IAAI,IAAI,EAAE,EDZ1B,8B6Bx0HD,oC7By0HD,oC6Bv0HG,oBAAA,MAGA,uB7B00HH,QAAA,K6B/zHC,qBF3OA,QAAA,M3B+iID,yB8BxiIC,WAAY,KACZ,uBAAA,EACA,wBAAA,EAEA,Q9B0iID,SAAA,S8BliIC,WAAY,KA8nBZ,cAAe,KAhoBb,OAAA,IAAA,MAAA,Y9ByiIH,yB8BzhIC,QAgnBE,cAAe,K9B86GlB,yB8BjhIC,eACA,MAAA,MAGA,iBACA,cAAA,KAAA,aAAA,KAEA,WAAA,Q9BkhID,2BAAA,M8BhhIC,WAAA,IAAA,MAAA,YACE,mBAAA,MAAA,EAAA,IAAA,EAAA,qB9BkhIH,WAAA,MAAA,EAAA,IAAA,EAAA,qB8Bz7GD,oBArlBI,WAAA,KAEA,yBAAA,iB9BkhID,MAAA,K8BhhIC,WAAA,EACE,mBAAA,KACA,WAAA,KAEA,0B9BkhIH,QAAA,gB8B/gIC,OAAA,eACE,eAAA,E9BihIH,SAAA,kBCkBD,oBACE,WAAY,QDZf,sC8B/gIK,mC9B8gIH,oC8BzgIC,cAAe,E7B4hIf,aAAc,G6Bj+GlB,sCAnjBE,mC7ByhIA,WAAY,MDdX,4D8BngID,sC9BogID,mCCkBG,WAAY,O6B3gId,kCANE,gC9BsgIH,4B8BvgIG,0BAuiBF,aAAc,M7Bm/Gd,YAAa,MAEf,yBDZC,kC8B3gIK,gC9B0gIH,4B8B3gIG,0BAcF,aAAc,EAChB,YAAA,GAMF,mBA8gBE,QAAS,KAhhBP,aAAA,EAAA,EAAA,I9BkgIH,yB8B7/HC,mB7B+gIE,cAAe,G6B1gIjB,qBADA,kB9BggID,SAAA,M8Bz/HC,MAAO,EAggBP,KAAM,E7B4gHN,QAAS,KDdR,yB8B7/HD,qB9B8/HD,kB8B7/HC,cAAA,GAGF,kBACE,IAAA,EACA,aAAA,EAAA,EAAA,I9BigID,qB8B1/HC,OAAQ,EACR,cAAA,EACA,aAAA,IAAA,EAAA,EAEA,cACA,MAAA,K9B4/HD,OAAA,K8B1/HC,QAAA,KAAA,K7B4gIA,UAAW,K6B1gIT,YAAA,KAIA,oBAbJ,oB9BwgIC,gBAAA,K8Bv/HG,kB7B0gIF,QAAS,MDdR,yBACF,iC8Bh/HC,uCACA,YAAA,OAGA,eC9LA,SAAA,SACA,MAAA,MD+LA,QAAA,IAAA,KACA,WAAA,IACA,aAAA,KACA,cAAA,I9Bm/HD,iBAAA,Y8B/+HC,iBAAA,KACE,OAAA,IAAA,MAAA,Y9Bi/HH,cAAA,I8B5+HG,qBACA,QAAA,EAEA,yB9B++HH,QAAA,M8BrgIC,MAAO,KAyBL,OAAA,I9B++HH,cAAA,I8BpjHD,mCAvbI,WAAA,I9Bg/HH,yB8Bt+HC,eACA,QAAA,MAGE,YACA,OAAA,MAAA,M9By+HH,iB8B58HC,YAAA,KA2YA,eAAgB,KAjaZ,YAAA,KAEA,yBACA,iCACA,SAAA,OACA,MAAA,KACA,MAAA,KAAA,WAAA,E9Bs+HH,iBAAA,Y8B3kHC,OAAQ,E7B8lHR,mBAAoB,K6Bt/HhB,WAAA,KAGA,kDAqZN,sC9BklHC,QAAA,IAAA,KAAA,IAAA,KCmBD,sC6Bv/HQ,YAAA,KAmBR,4C9Bs9HD,4C8BvlHG,iBAAkB,M9B4lHnB,yB8B5lHD,YAtYI,MAAA,K9Bq+HH,OAAA,E8Bn+HK,eACA,MAAA,K9Bu+HP,iB8B39HG,YAAa,KACf,eAAA,MAGA,aACA,QAAA,KAAA,K1B9NA,WAAA,IACQ,aAAA,M2B/DR,cAAA,IACA,YAAA,M/B4vID,WAAA,IAAA,MAAA,YiBtuHC,cAAe,IAAI,MAAM,YAwEzB,mBAAoB,MAAM,EAAE,IAAI,EAAE,qBAAyB,EAAE,IAAI,EAAE,qBAtI/D,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,qBAEA,yBjBwyHH,yBiBpqHC,QAAS,aA/HP,cAAA,EACA,eAAA,OjBuyHH,2BiBzqHC,QAAS,aAxHP,MAAA,KjBoyHH,eAAA,OiBhyHG,kCACA,QAAA,aAmHJ,0BhBmsHE,QAAS,aACT,eAAgB,OgB5yHd,wCjB6xHH,6CiBrrHD,2CjBwrHC,MAAA,KiB5xHG,wCACA,MAAA,KAmGJ,4BhB+sHE,cAAe,EgB3yHb,eAAA,OAGA,uBADA,oBjB6xHH,QAAA,aiBnsHC,WAAY,EhBstHZ,cAAe,EgB5yHX,eAAA,OAsFN,6BAAA,0BAjFI,aAAA,EAiFJ,4CjB4sHC,sCiBvxHG,SAAA,SjB0xHH,YAAA,E8BngID,kDAmWE,IAAK,GAvWH,yBACE,yB9B8gIL,cAAA,I8B5/HD,oCAoVE,cAAe,GA1Vf,yBACA,aACA,MAAA,KACA,YAAA,E1BzPF,eAAA,EACQ,aAAA,EJmwIP,YAAA,EACF,OAAA,E8BngIG,mBAAoB,KACtB,WAAA,M9BugID,8B8BngIC,WAAY,EACZ,uBAAA,EHzUA,wBAAA,EAQA,mDACC,cAAA,E3By0IF,uBAAA,I8B//HC,wBAAyB,IChVzB,2BAAA,EACA,0BAAA,EDkVA,YCnVA,WAAA,IACA,cAAA,IDqVA,mBCtVA,WAAA,KACA,cAAA,KD+VF,mBChWE,WAAA,KACA,cAAA,KDuWF,aAsSE,WAAY,KA1SV,cAAA,KAEA,yB9B+/HD,aACF,MAAA,K8Bl+HG,aAAc,KAhBhB,YAAA,MACA,yBE5WA,aF8WE,MAAA,eAFF,cAKI,MAAA,gB9Bu/HH,aAAA,M8B7+HD,4BACA,aAAA,GADF,gBAKI,iBAAA,Q9Bg/HH,aAAA,QCmBD,8B6BhgIM,MAAA,KARN,oC9B0/HC,oC8B5+HG,MAAA,Q9B++HH,iBAAA,Y8B1+HK,6B9B6+HL,MAAA,KCmBD,iC6B5/HQ,MAAA,KAKF,uC9By+HL,uCCmBC,MAAO,KACP,iBAAkB,Y6Bz/HZ,sCAIF,4C9Bu+HL,4CCmBC,MAAO,KACP,iBAAkB,Q6Bv/HZ,wCAxCR,8C9BihIC,8C8Bn+HG,MAAA,K9Bs+HH,iBAAA,YCmBD,+B6Bt/HM,aAAA,KAGA,qCApDN,qC9B2hIC,iBAAA,KCmBD,yC6Bp/HI,iBAAA,KAOE,iCAAA,6B7Bk/HJ,aAAc,Q6B9+HR,oCAiCN,0C9B+7HD,0C8B3xHC,MAAO,KA7LC,iBAAA,QACA,yB7B8+HR,sD6B5+HU,MAAA,KAKF,4D9By9HP,4DCmBC,MAAO,KACP,iBAAkB,Y6Bz+HV,2DAIF,iE9Bu9HP,iECmBC,MAAO,KACP,iBAAkB,Q6Bv+HV,6D9B09HX,mEADE,mE8B1jIC,MAAO,KA8GP,iBAAA,aAEE,6B9Bi9HL,MAAA,K8B58HG,mC9B+8HH,MAAA,KCmBD,0B6B/9HM,MAAA,KAIA,gCAAA,gC7Bg+HJ,MAAO,K6Bt9HT,0CARQ,0CASN,mD9Bu8HD,mD8Bt8HC,MAAA,KAFF,gBAKI,iBAAA,K9B08HH,aAAA,QCmBD,8B6B19HM,MAAA,QARN,oC9Bo9HC,oC8Bt8HG,MAAA,K9By8HH,iBAAA,Y8Bp8HK,6B9Bu8HL,MAAA,QCmBD,iC6Bt9HQ,MAAA,QAKF,uC9Bm8HL,uCCmBC,MAAO,KACP,iBAAkB,Y6Bn9HZ,sCAIF,4C9Bi8HL,4CCmBC,MAAO,KACP,iBAAkB,Q6Bj9HZ,wCAxCR,8C9B2+HC,8C8B57HG,MAAA,K9B+7HH,iBAAA,YCmBD,+B6B/8HM,aAAA,KAGA,qCArDN,qC9Bq/HC,iBAAA,KCmBD,yC6B78HI,iBAAA,KAME,iCAAA,6B7B48HJ,aAAc,Q6Bx8HR,oCAuCN,0C9Bm5HD,0C8B33HC,MAAO,KAvDC,iBAAA,QAuDV,yBApDU,kE9Bs7HP,aAAA,Q8Bn7HO,0D9Bs7HP,iBAAA,QCmBD,sD6Bt8HU,MAAA,QAKF,4D9Bm7HP,4DCmBC,MAAO,KACP,iBAAkB,Y6Bn8HV,2DAIF,iE9Bi7HP,iECmBC,MAAO,KACP,iBAAkB,Q6Bj8HV,6D9Bo7HX,mEADE,mE8B1hIC,MAAO,KA+GP,iBAAA,aAEE,6B9Bg7HL,MAAA,Q8B36HG,mC9B86HH,MAAA,KCmBD,0B6B97HM,MAAA,QAIA,gCAAA,gC7B+7HJ,MAAO,KgCvkJT,0CH0oBQ,0CGzoBN,mDjCwjJD,mDiCvjJC,MAAA,KAEA,YACA,QAAA,IAAA,KjC2jJD,cAAA,KiChkJC,WAAY,KAQV,iBAAA,QjC2jJH,cAAA,IiCxjJK,eACA,QAAA,ajC4jJL,yBiCxkJC,QAAS,EAAE,IAkBT,MAAA,KjCyjJH,QAAA,SkC5kJC,oBACA,MAAA,KAEA,YlC+kJD,QAAA,akCnlJC,aAAc,EAOZ,OAAA,KAAA,ElC+kJH,cAAA,ICmBD,eiC/lJM,QAAA,OAEA,iBACA,oBACA,SAAA,SACA,MAAA,KACA,QAAA,IAAA,KACA,YAAA,KACA,YAAA,WlCglJL,MAAA,QkC9kJG,gBAAA,KjCimJF,iBAAkB,KiC9lJZ,OAAA,IAAA,MAAA,KPVH,6B3B2lJJ,gCkC7kJG,YAAA,EjCgmJF,uBAAwB,I0BvnJxB,0BAAA,I3BymJD,4BkCxkJG,+BjC2lJF,wBAAyB,IACzB,2BAA4B,IiCxlJxB,uBAFA,uBAGA,0BAFA,0BlC8kJL,QAAA,EkCtkJG,MAAA,QjCylJF,iBAAkB,KAClB,aAAc,KAEhB,sBiCvlJM,4BAFA,4BjC0lJN,yBiCvlJM,+BAFA,+BAGA,QAAA,ElC2kJL,MAAA,KkCloJC,OAAQ,QjCqpJR,iBAAkB,QAClB,aAAc,QiCnlJV,wBAEA,8BADA,8BjColJN,2BiCtlJM,iCjCulJN,iCDZC,MAAA,KkC/jJC,OAAQ,YjCklJR,iBAAkB,KkC7pJd,aAAA,KAEA,oBnC8oJL,uBmC5oJG,QAAA,KAAA,KlC+pJF,UAAW,K0B1pJX,YAAA,U3B4oJD,gCmC3oJG,mClC8pJF,uBAAwB,I0BvqJxB,0BAAA,I3BypJD,+BkC1kJD,kCjC6lJE,wBAAyB,IkC7qJrB,2BAAA,IAEA,oBnC8pJL,uBmC5pJG,QAAA,IAAA,KlC+qJF,UAAW,K0B1qJX,YAAA,I3B4pJD,gCmC3pJG,mClC8qJF,uBAAwB,I0BvrJxB,0BAAA,I3ByqJD,+BoC3qJD,kCACE,wBAAA,IACA,2BAAA,IAEA,OpC6qJD,aAAA,EoCjrJC,OAAQ,KAAK,EAOX,WAAA,OpC6qJH,WAAA,KCmBD,UmC7rJM,QAAA,OAEA,YACA,eACA,QAAA,apC8qJL,QAAA,IAAA,KoC5rJC,iBAAkB,KnC+sJlB,OAAQ,IAAI,MAAM,KmC5rJd,cAAA,KAnBN,kBpCisJC,kBCmBC,gBAAiB,KmCzrJb,iBAAA,KA3BN,eAAA,kBAkCM,MAAA,MAlCN,mBAAA,sBnC6tJE,MAAO,KmClrJH,mBAEA,yBADA,yBpCqqJL,sBqCltJC,MAAO,KACP,OAAA,YACA,iBAAA,KAEA,OACA,QAAA,OACA,QAAA,KAAA,KAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,MAAA,KrCotJD,WAAA,OqChtJG,YAAA,OpCmuJF,eAAgB,SoCjuJZ,cAAA,MrCotJL,cqCltJK,cAKJ,MAAA,KACE,gBAAA,KrC+sJH,OAAA,QqC1sJG,aACA,QAAA,KAOJ,YCtCE,SAAA,StC+uJD,IAAA,KCmBD,eqC7vJM,iBAAA,KALJ,2BD0CF,2BrC4sJC,iBAAA,QCmBD,eqCpwJM,iBAAA,QALJ,2BD8CF,2BrC+sJC,iBAAA,QCmBD,eqC3wJM,iBAAA,QALJ,2BDkDF,2BrCktJC,iBAAA,QCmBD,YqClxJM,iBAAA,QALJ,wBDsDF,wBrCqtJC,iBAAA,QCmBD,eqCzxJM,iBAAA,QALJ,2BD0DF,2BrCwtJC,iBAAA,QCmBD,cqChyJM,iBAAA,QCDJ,0BADF,0BAEE,iBAAA,QAEA,OACA,QAAA,aACA,UAAA,KACA,QAAA,IAAA,IACA,UAAA,KACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OvCqxJD,YAAA,OuClxJC,eAAA,OACE,iBAAA,KvCoxJH,cAAA,KuC/wJG,aACA,QAAA,KAGF,YtCkyJA,SAAU,SsChyJR,IAAA,KAMA,0BvC4wJH,eCmBC,IAAK,EsC7xJD,QAAA,IAAA,IvCgxJL,cuC9wJK,cAKJ,MAAA,KtC4xJA,gBAAiB,KsC1xJf,OAAA,QvC4wJH,+BuCxwJC,4BACE,MAAA,QvC0wJH,iBAAA,KuCtwJG,wBvCywJH,MAAA,MuCrwJG,+BvCwwJH,aAAA,IwCj0JC,uBACA,YAAA,IAEA,WACA,YAAA,KxCo0JD,eAAA,KwCz0JC,cAAe,KvC41Jf,MAAO,QuCn1JL,iBAAA,KAIA,eAbJ,cAcI,MAAA,QxCo0JH,awCl1JC,cAAe,KAmBb,UAAA,KxCk0JH,YAAA,ICmBD,cuCh1JI,iBAAA,QAEA,sBxCi0JH,4BwC31JC,cAAe,KA8Bb,aAAA,KxCg0JH,cAAA,IwC7yJD,sBAfI,UAAA,KxCi0JD,oCwC9zJC,WvCi1JA,YAAa,KuC/0JX,eAAA,KxCi0JH,sBwCvzJD,4BvC00JE,cAAe,KuC90Jb,aAAA,KC5CJ,ezC42JD,cyC32JC,UAAA,MAGA,WACA,QAAA,MACA,QAAA,IACA,cAAA,KrCiLA,YAAA,WACK,iBAAA,KACG,OAAA,IAAA,MAAA,KJ8rJT,cAAA,IyCx3JC,mBAAoB,OAAO,IAAI,YxC24J1B,cAAe,OAAO,IAAI,YwC93J7B,WAAA,OAAA,IAAA,YAKF,iBzC22JD,eCmBC,aAAc,KACd,YAAa,KwCv3JX,mBA1BJ,kBzCk4JC,kByCv2JG,aAAA,QCzBJ,oBACE,QAAA,IACA,MAAA,KAEA,O1Cs4JD,QAAA,K0C14JC,cAAe,KAQb,OAAA,IAAA,MAAA,YAEA,cAAA,IAVJ,UAeI,WAAA,E1Ck4JH,MAAA,QCmBD,mByC/4JI,YAAA,IArBJ,SAyBI,U1C+3JH,cAAA,ECmBD,WyCx4JE,WAAA,IAFF,mBAAA,mBAMI,cAAA,KAEA,0BACA,0B1Cy3JH,SAAA,S0Cj3JC,IAAK,KCvDL,MAAA,MACA,MAAA,Q3C46JD,e0Ct3JC,MAAO,QClDL,iBAAA,Q3C26JH,aAAA,Q2Cx6JG,kB3C26JH,iBAAA,Q2Cn7JC,2BACA,MAAA,Q3Cu7JD,Y0C73JC,MAAO,QCtDL,iBAAA,Q3Cs7JH,aAAA,Q2Cn7JG,e3Cs7JH,iBAAA,Q2C97JC,wBACA,MAAA,Q3Ck8JD,e0Cp4JC,MAAO,QC1DL,iBAAA,Q3Ci8JH,aAAA,Q2C97JG,kB3Ci8JH,iBAAA,Q2Cz8JC,2BACA,MAAA,Q3C68JD,c0C34JC,MAAO,QC9DL,iBAAA,Q3C48JH,aAAA,Q2Cz8JG,iB3C48JH,iBAAA,Q4C78JC,0BAAQ,MAAA,QACR,wCAAQ,K5Cm9JP,oBAAA,KAAA,E4C/8JD,GACA,oBAAA,EAAA,GACA,mCAAQ,K5Cq9JP,oBAAA,KAAA,E4Cv9JD,GACA,oBAAA,EAAA,GACA,gCAAQ,K5Cq9JP,oBAAA,KAAA,E4C78JD,GACA,oBAAA,EAAA,GAGA,UACA,OAAA,KxCsCA,cAAA,KACQ,SAAA,OJ26JT,iBAAA,Q4C78JC,cAAe,IACf,mBAAA,MAAA,EAAA,IAAA,IAAA,eACA,WAAA,MAAA,EAAA,IAAA,IAAA,eAEA,cACA,MAAA,KACA,MAAA,EACA,OAAA,KACA,UAAA,KxCyBA,YAAA,KACQ,MAAA,KAyHR,WAAA,OACK,iBAAA,QACG,mBAAA,MAAA,EAAA,KAAA,EAAA,gBJ+zJT,WAAA,MAAA,EAAA,KAAA,EAAA,gB4C18JC,mBAAoB,MAAM,IAAI,K3Cq+JzB,cAAe,MAAM,IAAI,K4Cp+J5B,WAAA,MAAA,IAAA,KDEF,sBCAE,gCDAF,iBAAA,yK5C88JD,iBAAA,oK4Cv8JC,iBAAiB,iK3Cm+JjB,wBAAyB,KAAK,KG/gK9B,gBAAA,KAAA,KJy/JD,qBIv/JS,+BwCmDR,kBAAmB,qBAAqB,GAAG,OAAO,SErElD,aAAA,qBAAA,GAAA,OAAA,S9C4gKD,UAAA,qBAAA,GAAA,OAAA,S6Cz9JG,sBACA,iBAAA,Q7C69JH,wC4Cx8JC,iBAAkB,yKEzElB,iBAAA,oK9CohKD,iBAAA,iK6Cj+JG,mBACA,iBAAA,Q7Cq+JH,qC4C58JC,iBAAkB,yKE7ElB,iBAAA,oK9C4hKD,iBAAA,iK6Cz+JG,sBACA,iBAAA,Q7C6+JH,wC4Ch9JC,iBAAkB,yKEjFlB,iBAAA,oK9CoiKD,iBAAA,iK6Cj/JG,qBACA,iBAAA,Q7Cq/JH,uC+C5iKC,iBAAkB,yKAElB,iBAAA,oK/C6iKD,iBAAA,iK+C1iKG,O/C6iKH,WAAA,KC4BD,mB8CnkKE,WAAA,E/C4iKD,O+CxiKD,YACE,SAAA,O/C0iKD,KAAA,E+CtiKC,Y/CyiKD,MAAA,Q+CriKG,c/CwiKH,QAAA,MC4BD,4B8C9jKE,UAAA,KAGF,aAAA,mBAEE,aAAA,KAGF,YAAA,kB9C+jKE,cAAe,K8CxjKjB,YAHE,Y/CoiKD,a+ChiKC,QAAA,W/CmiKD,eAAA,I+C/hKC,c/CkiKD,eAAA,O+C7hKC,cACA,eAAA,OAMF,eACE,WAAA,EACA,cAAA,ICvDF,YAEE,aAAA,EACA,WAAA,KAQF,YACE,aAAA,EACA,cAAA,KAGA,iBACA,SAAA,SACA,QAAA,MhD6kKD,QAAA,KAAA,KgD1kKC,cAAA,KrB3BA,iBAAA,KACC,OAAA,IAAA,MAAA,KqB6BD,6BACE,uBAAA,IrBvBF,wBAAA,I3BsmKD,4BgDpkKC,cAAe,E/CgmKf,2BAA4B,I+C9lK5B,0BAAA,IAFF,kBAAA,uBAKI,MAAA,KAIF,2CAAA,gD/CgmKA,MAAO,K+C5lKL,wBAFA,wBhDykKH,6BgDxkKG,6BAKF,MAAO,KACP,gBAAA,KACA,iBAAA,QAKA,uB/C4lKA,MAAO,KACP,WAAY,K+CzlKV,0BhDmkKH,gCgDlkKG,gCALF,MAAA,K/CmmKA,OAAQ,YACR,iBAAkB,KDxBnB,mDgD5kKC,yDAAA,yD/CymKA,MAAO,QDxBR,gDgDhkKC,sDAAA,sD/C6lKA,MAAO,K+CzlKL,wBAEA,8BADA,8BhDmkKH,QAAA,EgDxkKC,MAAA,K/ComKA,iBAAkB,QAClB,aAAc,QAEhB,iDDpBC,wDCuBD,uDADA,uD+CzmKE,8DAYI,6D/C4lKN,uD+CxmKE,8D/C2mKF,6DAKE,MAAO,QDxBR,8CiD1qKG,oDADF,oDAEE,MAAA,QAEA,yBhDusKF,MAAO,QgDrsKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhDwsKJ,MAAO,QDtBR,gCiDhrKO,gCAGF,qCAFE,qChD2sKN,MAAO,QACP,iBAAkB,QAEpB,iCgDvsKQ,uCAFA,uChD0sKR,sCDtBC,4CiDnrKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,sBhDouKF,MAAO,QgDluKH,iBAAA,QAFF,uBAAA,4BAKI,MAAA,QAGF,gDAAA,qDhDquKJ,MAAO,QDtBR,6BiD7sKO,6BAGF,kCAFE,kChDwuKN,MAAO,QACP,iBAAkB,QAEpB,8BgDpuKQ,oCAFA,oChDuuKR,mCDtBC,yCiDhtKO,yCArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,yBhDiwKF,MAAO,QgD/vKH,iBAAA,QAFF,0BAAA,+BAKI,MAAA,QAGF,mDAAA,wDhDkwKJ,MAAO,QDtBR,gCiD1uKO,gCAGF,qCAFE,qChDqwKN,MAAO,QACP,iBAAkB,QAEpB,iCgDjwKQ,uCAFA,uChDowKR,sCDtBC,4CiD7uKO,4CArBN,MAAA,KACE,iBAAA,QACA,aAAA,QAEA,wBhD8xKF,MAAO,QgD5xKH,iBAAA,QAFF,yBAAA,8BAKI,MAAA,QAGF,kDAAA,uDhD+xKJ,MAAO,QDtBR,+BiDvwKO,+BAGF,oCAFE,oChDkyKN,MAAO,QACP,iBAAkB,QAEpB,gCgD9xKQ,sCAFA,sChDiyKR,qCDtBC,2CiD1wKO,2CDkGN,MAAO,KACP,iBAAA,QACA,aAAA,QAEF,yBACE,WAAA,EACA,cAAA,IE1HF,sBACE,cAAA,EACA,YAAA,IAEA,O9C0DA,cAAA,KACQ,iBAAA,KJ6uKT,OAAA,IAAA,MAAA,YkDnyKC,cAAe,IACf,mBAAA,EAAA,IAAA,IAAA,gBlDqyKD,WAAA,EAAA,IAAA,IAAA,gBkD/xKC,YACA,QAAA,KvBnBC,e3BuzKF,QAAA,KAAA,KkDtyKC,cAAe,IAAI,MAAM,YAMvB,uBAAA,IlDmyKH,wBAAA,IkD7xKC,0CACA,MAAA,QAEA,alDgyKD,WAAA,EkDpyKC,cAAe,EjDg0Kf,UAAW,KACX,MAAO,QDtBR,oBkD1xKC,sBjDkzKF,eiDxzKI,mBAKJ,qBAEE,MAAA,QvBvCA,cACC,QAAA,KAAA,K3Bs0KF,iBAAA,QkDrxKC,WAAY,IAAI,MAAM,KjDizKtB,2BAA4B,IiD9yK1B,0BAAA,IAHJ,mBAAA,mCAMM,cAAA,ElDwxKL,oCkDnxKG,oDjD+yKF,aAAc,IAAI,EiD7yKZ,cAAA,EvBtEL,4D3B61KF,4EkDjxKG,WAAA,EjD6yKF,uBAAwB,IiD3yKlB,wBAAA,IvBtEL,0D3B21KF,0EkD1yKC,cAAe,EvB1Df,2BAAA,IACC,0BAAA,IuB0FH,+EAEI,uBAAA,ElD8wKH,wBAAA,EkD1wKC,wDlD6wKD,iBAAA,EC4BD,0BACE,iBAAkB,EiDlyKpB,8BlD0wKC,ckD1wKD,gCjDuyKE,cAAe,EiDvyKjB,sCAQM,sBlDwwKL,wCC4BC,cAAe,K0Br5Kf,aAAA,KuByGF,wDlDqxKC,0BC4BC,uBAAwB,IACxB,wBAAyB,IiDlzK3B,yFAoBQ,yFlDwwKP,2DkDzwKO,2DjDqyKN,uBAAwB,IACxB,wBAAyB,IAK3B,wGiD9zKA,wGjD4zKA,wGDtBC,wGCuBD,0EiD7zKA,0EjD2zKA,0EiDnyKU,0EjD2yKR,uBAAwB,IAK1B,uGiDx0KA,uGjDs0KA,uGDtBC,uGCuBD,yEiDv0KA,yEjDq0KA,yEiDzyKU,yEvB7HR,wBAAA,IuBiGF,sDlDqzKC,yBC4BC,2BAA4B,IAC5B,0BAA2B,IiDxyKrB,qFA1CR,qFAyCQ,wDlDmxKP,wDC4BC,2BAA4B,IAC5B,0BAA2B,IAG7B,oGDtBC,oGCwBD,oGiD91KA,oGjD21KA,uEiD7yKU,uEjD+yKV,uEiD71KA,uEjDm2KE,0BAA2B,IAG7B,mGDtBC,mGCwBD,mGiDx2KA,mGjDq2KA,sEiDnzKU,sEjDqzKV,sEiDv2KA,sEjD62KE,2BAA4B,IiDlzK1B,0BlD2xKH,qCkDt1KD,0BAAA,qCA+DI,WAAA,IAAA,MAAA,KA/DJ,kDAAA,kDAmEI,WAAA,EAnEJ,uBAAA,yCjD23KE,OAAQ,EiDjzKA,+CjDqzKV,+CiD/3KA,+CjDi4KA,+CAEA,+CANA,+CDjBC,iECoBD,iEiDh4KA,iEjDk4KA,iEAEA,iEANA,iEAWE,YAAa,EiD3zKL,8CjD+zKV,8CiD74KA,8CjD+4KA,8CAEA,8CANA,8CDjBC,gECoBD,gEiD94KA,gEjDg5KA,gEAEA,gEANA,gEAWE,aAAc,EAIhB,+CiD35KA,+CjDy5KA,+CiDl0KU,+CjDq0KV,iEiD55KA,iEjD05KA,iEDtBC,iEC6BC,cAAe,EAEjB,8CiDn0KU,8CjDq0KV,8CiDr6KA,8CjDo6KA,gEDtBC,gECwBD,gEiDh0KI,gEACA,cAAA,EAUJ,yBACE,cAAA,ElDmyKD,OAAA,EkD/xKG,aACA,cAAA,KANJ,oBASM,cAAA,ElDkyKL,cAAA,IkD7xKG,2BlDgyKH,WAAA,IC4BD,4BiDxzKM,cAAA,EAKF,wDAvBJ,wDlDqzKC,WAAA,IAAA,MAAA,KkD5xKK,2BlD+xKL,WAAA,EmDlhLC,uDnDqhLD,cAAA,IAAA,MAAA,KmDlhLG,eACA,aAAA,KnDshLH,8BmDxhLC,MAAA,KAMI,iBAAA,QnDqhLL,aAAA,KmDlhLK,0DACA,iBAAA,KAGJ,qCAEI,MAAA,QnDmhLL,iBAAA,KmDpiLC,yDnDuiLD,oBAAA,KmDpiLG,eACA,aAAA,QnDwiLH,8BmD1iLC,MAAA,KAMI,iBAAA,QnDuiLL,aAAA,QmDpiLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDqiLL,iBAAA,KmDtjLC,yDnDyjLD,oBAAA,QmDtjLG,eACA,aAAA,QnD0jLH,8BmD5jLC,MAAA,QAMI,iBAAA,QnDyjLL,aAAA,QmDtjLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDujLL,iBAAA,QmDxkLC,yDnD2kLD,oBAAA,QmDxkLG,YACA,aAAA,QnD4kLH,2BmD9kLC,MAAA,QAMI,iBAAA,QnD2kLL,aAAA,QmDxkLK,uDACA,iBAAA,QAGJ,kCAEI,MAAA,QnDykLL,iBAAA,QmD1lLC,sDnD6lLD,oBAAA,QmD1lLG,eACA,aAAA,QnD8lLH,8BmDhmLC,MAAA,QAMI,iBAAA,QnD6lLL,aAAA,QmD1lLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnD2lLL,iBAAA,QmD5mLC,yDnD+mLD,oBAAA,QmD5mLG,cACA,aAAA,QnDgnLH,6BmDlnLC,MAAA,QAMI,iBAAA,QnD+mLL,aAAA,QmD5mLK,yDACA,iBAAA,QAGJ,oCAEI,MAAA,QnD6mLL,iBAAA,QoD5nLC,wDACA,oBAAA,QAEA,kBACA,SAAA,SpD+nLD,QAAA,MoDpoLC,OAAQ,EnDgqLR,QAAS,EACT,SAAU,OAEZ,yCmDtpLI,wBADA,yBAEA,yBACA,wBACA,SAAA,SACA,IAAA,EACA,OAAA,EpD+nLH,KAAA,EoD1nLC,MAAO,KACP,OAAA,KpD4nLD,OAAA,EoDvnLC,wBpD0nLD,eAAA,OqDppLC,uBACA,eAAA,IAEA,MACA,WAAA,KACA,QAAA,KjDwDA,cAAA,KACQ,iBAAA,QJgmLT,OAAA,IAAA,MAAA,QqD/pLC,cAAe,IASb,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAKJ,iBACE,aAAA,KACA,aAAA,gBAEF,SACE,QAAA,KACA,cAAA,ICtBF,SACE,QAAA,IACA,cAAA,IAEA,OACA,MAAA,MACA,UAAA,KjCRA,YAAA,IAGA,YAAA,ErBqrLD,MAAA,KsD7qLC,YAAA,EAAA,IAAA,EAAA,KrDysLA,OAAQ,kBqDvsLN,QAAA,GjCbF,aiCeE,ajCZF,MAAA,KrB6rLD,gBAAA,KsDzqLC,OAAA,QACE,OAAA,kBACA,QAAA,GAEA,aACA,mBAAA,KtD2qLH,QAAA,EuDhsLC,OAAQ,QACR,WAAA,IvDksLD,OAAA,EuD7rLC,YACA,SAAA,OAEA,OACA,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EAIA,QAAA,KvD6rLD,QAAA,KuD1rLC,SAAA,OnD+GA,2BAAA,MACI,QAAA,EAEI,0BAkER,mBAAA,kBAAA,IAAA,SAEK,cAAA,aAAA,IAAA,SACG,WAAA,UAAA,IAAA,SJ6gLT,kBAAA,kBuDhsLC,cAAA,kBnD2GA,aAAA,kBACI,UAAA,kBAEI,wBJwlLT,kBAAA,euDpsLK,cAAe,eACnB,aAAA,eACA,UAAA,eAIF,mBACE,WAAA,OACA,WAAA,KvDqsLD,cuDhsLC,SAAU,SACV,MAAA,KACA,OAAA,KAEA,eACA,SAAA,SnDaA,iBAAA,KACQ,wBAAA,YmDZR,gBAAA,YtD4tLA,OsD5tLA,IAAA,MAAA,KAEA,OAAA,IAAA,MAAA,evDksLD,cAAA,IuD9rLC,QAAS,EACT,mBAAA,EAAA,IAAA,IAAA,eACA,WAAA,EAAA,IAAA,IAAA,eAEA,gBACA,SAAA,MACA,IAAA,EACA,MAAA,EvDgsLD,OAAA,EuD9rLC,KAAA,ElCrEA,QAAA,KAGA,iBAAA,KkCmEA,qBlCtEA,OAAA,iBAGA,QAAA,EkCwEF,mBACE,OAAA,kBACA,QAAA,GAIF,cACE,QAAA,KvDgsLD,cAAA,IAAA,MAAA,QuD3rLC,qBACA,WAAA,KAKF,aACE,OAAA,EACA,YAAA,WAIF,YACE,SAAA,SACA,QAAA,KvD0rLD,cuD5rLC,QAAS,KAQP,WAAA,MACA,WAAA,IAAA,MAAA,QATJ,wBAaI,cAAA,EvDsrLH,YAAA,IuDlrLG,mCvDqrLH,YAAA,KuD/qLC,oCACA,YAAA,EAEA,yBACA,SAAA,SvDkrLD,IAAA,QuDhqLC,MAAO,KAZP,OAAA,KACE,SAAA,OvDgrLD,yBuD7qLD,cnDvEA,MAAA,MACQ,OAAA,KAAA,KmD2ER,eAAY,mBAAA,EAAA,IAAA,KAAA,evD+qLX,WAAA,EAAA,IAAA,KAAA,euDzqLD,UAFA,MAAA,OvDirLD,yBwD/zLC,UACA,MAAA,OCNA,SAEA,SAAA,SACA,QAAA,KACA,QAAA,MACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,ODHA,WAAA,OnCVA,aAAA,OAGA,UAAA,OrBs1LD,YAAA,OwD30LC,OAAA,iBnCdA,QAAA,ErB61LD,WAAA,KwD90LY,YAAmB,OAAA,kBxDk1L/B,QAAA,GwDj1LY,aAAmB,QAAA,IAAA,ExDq1L/B,WAAA,KwDp1LY,eAAmB,QAAA,EAAA,IxDw1L/B,YAAA,IwDv1LY,gBAAmB,QAAA,IAAA,ExD21L/B,WAAA,IwDt1LC,cACA,QAAA,EAAA,IACA,YAAA,KAEA,eACA,UAAA,MxDy1LD,QAAA,IAAA,IwDr1LC,MAAO,KACP,WAAA,OACA,iBAAA,KACA,cAAA,IAEA,exDu1LD,SAAA,SwDn1LC,MAAA,EACE,OAAA,EACA,aAAA,YACA,aAAA,MAEA,4BxDq1LH,OAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,iCxDq1LH,MAAA,IwDn1LC,OAAA,EACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,kCxDq1LH,OAAA,EwDn1LC,KAAA,IACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,8BxDq1LH,IAAA,IwDn1LC,KAAA,EACE,WAAA,KACA,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KAEA,6BxDq1LH,IAAA,IwDn1LC,MAAA,EACE,WAAA,KACA,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAEA,+BxDq1LH,IAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,oCxDq1LH,IAAA,EwDn1LC,MAAA,IACE,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,qCxDq1LH,IAAA,E0Dl7LC,KAAM,IACN,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,SACA,SAAA,SACA,IAAA,EDXA,KAAA,EAEA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,IACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KCAA,eAAA,OAEA,WAAA,OACA,aAAA,OAAA,UAAA,OACA,YAAA,OACA,iBAAA,KACA,wBAAA,YtD8CA,gBAAA,YACQ,OAAA,IAAA,MAAA,KJk5LT,OAAA,IAAA,MAAA,e0D77LC,cAAA,IAAY,mBAAA,EAAA,IAAA,KAAA,e1Dg8Lb,WAAA,EAAA,IAAA,KAAA,e0D/7La,WAAA,KACZ,aAAY,WAAA,MACZ,eAAY,YAAA,KAGd,gBACE,WAAA,KAEA,cACA,YAAA,MAEA,e1Dq8LD,QAAA,IAAA,K0Dl8LC,OAAQ,EACR,UAAA,K1Do8LD,iBAAA,Q0D57LC,cAAA,IAAA,MAAA,QzDy9LA,cAAe,IAAI,IAAI,EAAE,EyDt9LvB,iBACA,QAAA,IAAA,KAEA,gBACA,sB1D87LH,SAAA,S0D37LC,QAAS,MACT,MAAA,E1D67LD,OAAA,E0D37LC,aAAc,YACd,aAAA,M1D87LD,gB0Dz7LC,aAAA,KAEE,sBACA,QAAA,GACA,aAAA,KAEA,oB1D27LH,OAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,KACA,iBAAA,gBACA,oBAAA,E1D67LL,0B0Dz7LC,OAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,KACA,oBAAA,EAEA,sB1D27LH,IAAA,I0D17LG,KAAA,MACE,WAAA,MACA,mBAAA,KACA,mBAAA,gBACA,kBAAA,E1D67LL,4B0Dz7LC,OAAA,MACE,KAAA,IACA,QAAA,IACA,mBAAA,KACA,kBAAA,EAEA,uB1D27LH,IAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,EACA,oBAAA,KACA,oBAAA,gB1D67LL,6B0Dx7LC,IAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,EACA,oBAAA,KAEA,qB1D07LH,IAAA,I0Dz7LG,MAAA,MACE,WAAA,MACA,mBAAA,EACA,kBAAA,KACA,kBAAA,gB1D47LL,2B2DpjMC,MAAO,IACP,OAAA,M3DsjMD,QAAA,I2DnjMC,mBAAoB,EACpB,kBAAA,KAEA,U3DqjMD,SAAA,S2DljMG,gBACA,SAAA,SvD6KF,MAAA,KACK,SAAA,OJ04LN,sB2D/jMC,SAAU,S1D4lMV,QAAS,K0D9kML,mBAAA,IAAA,YAAA,K3DqjML,cAAA,IAAA,YAAA,K2D3hMC,WAAA,IAAA,YAAA,KvDmKK,4BAFL,0BAGQ,YAAA,EA3JA,qDA+GR,sBAEQ,mBAAA,kBAAA,IAAA,YJ86LP,cAAA,aAAA,IAAA,Y2DzjMG,WAAA,UAAA,IAAA,YvDmHJ,4BAAA,OACQ,oBAAA,OuDjHF,oBAAA,O3D4jML,YAAA,OI58LD,mCHs+LA,2BGr+LQ,KAAA,EuD5GF,kBAAA,sB3D6jML,UAAA,sBC2BD,kCADA,2BG5+LA,KAAA,EACQ,kBAAA,uBuDtGF,UAAA,uBArCN,6B3DomMD,gC2DpmMC,iC1D+nME,KAAM,E0DllMN,kBAAA,mB3D4jMH,UAAA,oBAGA,wB2D5mMD,sBAAA,sBAsDI,QAAA,MAEA,wB3D0jMH,KAAA,E2DtjMG,sB3DyjMH,sB2DrnMC,SAAU,SA+DR,IAAA,E3DyjMH,MAAA,KC0BD,sB0D/kMI,KAAA,KAnEJ,sBAuEI,KAAA,MAvEJ,2BA0EI,4B3DwjMH,KAAA,E2D/iMC,6BACA,KAAA,MAEA,8BACA,KAAA,KtC3FA,kBsC6FA,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,I3DmjMD,UAAA,K2D9iMC,MAAA,KdnGE,WAAA,OACA,YAAA,EAAA,IAAA,IAAA,eACA,iBAAA,cAAA,OAAA,kBACA,QAAA,G7CqpMH,uB2DljMC,iBAAA,sEACE,iBAAA,iEACA,iBAAA,uFdxGA,iBAAA,kEACA,OAAA,+GACA,kBAAA,SACA,wBACA,MAAA,E7C6pMH,KAAA,K2DpjMC,iBAAA,sE1DglMA,iBAAiB,iE0D9kMf,iBAAA,uFACA,iBAAA,kEACA,OAAA,+GtCvHF,kBAAA,SsCyFF,wB3DslMC,wBC4BC,MAAO,KACP,gBAAiB,KACjB,OAAQ,kB0D7kMN,QAAA,EACA,QAAA,G3DwjMH,0C2DhmMD,2CA2CI,6BADA,6B1DklMF,SAAU,S0D7kMR,IAAA,IACA,QAAA,E3DqjMH,QAAA,a2DrmMC,WAAY,MAqDV,0CADA,6B3DsjMH,KAAA,I2D1mMC,YAAa,MA0DX,2CADA,6BAEA,MAAA,IACA,aAAA,MAME,6BADF,6B3DmjMH,MAAA,K2D9iMG,OAAA,KACE,YAAA,M3DgjML,YAAA,E2DriMC,oCACA,QAAA,QAEA,oCACA,QAAA,QAEA,qBACA,SAAA,SACA,OAAA,K3DwiMD,KAAA,I2DjjMC,QAAS,GAYP,MAAA,IACA,aAAA,EACA,YAAA,KACA,WAAA,OACA,WAAA,KAEA,wBACA,QAAA,aAWA,MAAA,KACA,OAAA,K3D8hMH,OAAA,I2D7jMC,YAAa,OAkCX,OAAA,QACA,iBAAA,OACA,iBAAA,cACA,OAAA,IAAA,MAAA,K3D8hMH,cAAA,K2DthMC,6BACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,iBAAA,KAEA,kBACA,SAAA,SACA,MAAA,IACA,OAAA,K3DyhMD,KAAA,I2DxhMC,QAAA,GACE,YAAA,K3D0hMH,eAAA,K2Dj/LC,MAAO,KAhCP,WAAA,O1D8iMA,YAAa,EAAE,IAAI,IAAI,eAEzB,uB0D3iMM,YAAA,KAEA,oCACA,0C3DmhMH,2C2D3hMD,6BAAA,6BAYI,MAAA,K3DmhMH,OAAA,K2D/hMD,WAAA,M1D2jME,UAAW,KDxBZ,0C2D9gMD,6BACE,YAAA,MAEA,2C3DghMD,6B2D5gMD,aAAA,M3D+gMC,kBACF,MAAA,I4D7wMC,KAAA,I3DyyME,eAAgB,KAElB,qBACE,OAAQ,MAkBZ,qCADA,sCADA,mBADA,oBAXA,gBADA,iBAOA,uBADA,wBADA,iBADA,kBADA,wBADA,yBASA,mCADA,oC2DpzME,oBAAA,qBAAA,oBAAA,qB3D2zMF,WADA,YAOA,uBADA,wBADA,qBADA,sBADA,cADA,e2D/zMI,a3Dq0MJ,cDvBC,kB4D7yMG,mB3DqzMJ,WADA,YAwBE,QAAS,MACT,QAAS,IASX,qCADA,mBANA,gBAGA,uBADA,iBADA,wBAIA,mCDhBC,oB6D/0MC,oB5Dk2MF,W+B51MA,uBhCo0MC,qB4D5zMG,cChBF,aACA,kB5D+1MF,W+Br1ME,MAAO,KhCy0MR,cgCt0MC,QAAS,MACT,aAAA,KhCw0MD,YAAA,KgC/zMC,YhCk0MD,MAAA,gBgC/zMC,WhCk0MD,MAAA,egC/zMC,MhCk0MD,QAAA,e8Dz1MC,MACA,QAAA,gBAEA,WACA,WAAA,O9B8BF,WACE,KAAA,EAAA,EAAA,EhCg0MD,MAAA,YgCzzMC,YAAa,KACb,iBAAA,YhC2zMD,OAAA,E+D31MC,Q/D81MD,QAAA,eC4BD,OACE,SAAU,M+Dn4MV,chE42MD,MAAA,aC+BD,YADA,YADA,YADA,YAIE,QAAS,e+Dp5MT,kBhEs4MC,mBgEr4MD,yBhEi4MD,kB+Dl1MD,mBA6IA,yB9D4tMA,kBACA,mB8Dj3ME,yB9D62MF,kBACA,mBACA,yB+Dv5MY,QAAA,eACV,yBAAU,YhE04MT,QAAA,gBC4BD,iB+Dp6MU,QAAA,gBhE64MX,c+D51MG,QAAS,oB/Dg2MV,c+Dl2MC,c/Dm2MH,QAAA,sB+D91MG,yB/Dk2MD,kBACF,QAAA,iB+D91MG,yB/Dk2MD,mBACF,QAAA,kBgEh6MC,yBhEo6MC,yBgEn6MD,QAAA,wBACA,+CAAU,YhEw6MT,QAAA,gBC4BD,iB+Dl8MU,QAAA,gBhE26MX,c+Dr2MG,QAAS,oB/Dy2MV,c+D32MC,c/D42MH,QAAA,sB+Dv2MG,+C/D22MD,kBACF,QAAA,iB+Dv2MG,+C/D22MD,mBACF,QAAA,kBgE97MC,+ChEk8MC,yBgEj8MD,QAAA,wBACA,gDAAU,YhEs8MT,QAAA,gBC4BD,iB+Dh+MU,QAAA,gBhEy8MX,c+D92MG,QAAS,oB/Dk3MV,c+Dp3MC,c/Dq3MH,QAAA,sB+Dh3MG,gD/Do3MD,kBACF,QAAA,iB+Dh3MG,gD/Do3MD,mBACF,QAAA,kBgE59MC,gDhEg+MC,yBgE/9MD,QAAA,wBACA,0BAAU,YhEo+MT,QAAA,gBC4BD,iB+D9/MU,QAAA,gBhEu+MX,c+Dv3MG,QAAS,oB/D23MV,c+D73MC,c/D83MH,QAAA,sB+Dz3MG,0B/D63MD,kBACF,QAAA,iB+Dz3MG,0B/D63MD,mBACF,QAAA,kBgEl/MC,0BhEs/MC,yBACF,QAAA,wBgEv/MC,yBhE2/MC,WACF,QAAA,gBgE5/MC,+ChEggNC,WACF,QAAA,gBgEjgNC,gDhEqgNC,WACF,QAAA,gBAGA,0B+Dh3MC,WA4BE,QAAS,gBC5LX,eAAU,QAAA,eACV,aAAU,ehEyhNT,QAAA,gBC4BD,oB+DnjNU,QAAA,gBhE4hNX,iB+D93MG,QAAS,oBAMX,iB/D23MD,iB+Dt2MG,QAAS,sB/D22MZ,qB+D/3MC,QAAS,e/Dk4MV,a+D53MC,qBAcE,QAAS,iB/Dm3MZ,sB+Dh4MC,QAAS,e/Dm4MV,a+D73MC,sBAOE,QAAS,kB/D23MZ,4B+D53MC,QAAS,eCpLT,ahEojNC,4BACF,QAAA,wBC6BD,aACE,cACE,QAAS","sourcesContent":["/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n margin: .67em 0;\n font-size: 2em;\n}\nmark {\n color: #000;\n background: #ff0;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -.5em;\n}\nsub {\n bottom: -.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n font: inherit;\n color: inherit;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n padding: .35em .625em .75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all .2s ease-in-out;\n -o-transition: all .2s ease-in-out;\n transition: all .2s ease-in-out;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: .2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: .01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity .15s linear;\n -o-transition: opacity .15s linear;\n transition: opacity .15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: .35s;\n -o-transition-duration: .35s;\n transition-duration: .35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.nav > li.disabled > a {\n color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border .2s ease-in-out;\n -o-transition: border .2s ease-in-out;\n transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n float: left;\n width: 0;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n -webkit-transition: width .6s ease;\n -o-transition: width .6s ease;\n transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: .2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: .5;\n}\nbutton.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform .3s ease-out;\n -o-transition: -o-transform .3s ease-out;\n transition: transform .3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n line-break: auto;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, .25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, .25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: .6s ease-in-out left;\n -o-transition: .6s ease-in-out left;\n transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform .6s ease-in-out;\n -o-transition: -o-transform .6s ease-in-out;\n transition: transform .6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
    ,
      , or
      .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-small;\n\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n",".reset-text() {\n font-family: @font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: @line-height-base;\n text-align: left; // Fallback for where `start` is not supported\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.\n // So reset our font and text properties to avoid inheriting weird values.\n .reset-text();\n font-size: @font-size-base;\n\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000px);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: (@carousel-control-font-size * 1.5);\n height: (@carousel-control-font-size * 1.5);\n margin-top: (@carousel-control-font-size / -2);\n font-size: (@carousel-control-font-size * 1.5);\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: (@carousel-control-font-size / -2);\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: (@carousel-control-font-size / -2);\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/assets/css/components.css b/assets/css/components.css new file mode 100644 index 0000000..ba83194 --- /dev/null +++ b/assets/css/components.css @@ -0,0 +1,3593 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Components +*/ +/* ============= + == Components List== + + - Popover / Tooltips + - Buttons + - Panels + - Portlets + - Checkbox and radio + - Modals + - Tabs + - Progressbars + - Notifications + - Alerts + - Carousel + - Sweet Alert + - Widgets + - Nestable + - Rating + - Calendar + - Form + - Tables + - Charts + +============= */ +/* ================= + Popover / Tooltips +==================== */ +/* Popover */ +.popover { + font-family: inherit; + border: none; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; + box-shadow: 0 0 28px rgba(0, 0, 0, 0.15); +} +.popover .popover-title { + background-color: transparent; + color: #7fc1fc; + padding: 12px 15px; + font-size: 15px; +} +.popover .arrow { + border-color: transparent !important; +} +/* Tooltips */ +.tooltip { + font-family: 'Hind Madurai', sans-serif; +} +.tooltip .tooltip-inner { + padding: 4px 10px; + border-radius: 2px; + background-color: #313a46; +} +.tooltip.left .tooltip-arrow { + border-left-color: #313a46; +} +.tooltip.top .tooltip-arrow { + border-top-color: #313a46; +} +.tooltip.bottom .tooltip-arrow { + border-bottom-color: #313a46; +} +.tooltip.right .tooltip-arrow { + border-right-color: #313a46; +} +/* Tooltpster */ +.tooltipster-sidetip .tooltipster-box { + background-color: #7fc1fc; + border: 2px solid #7fc1fc; +} +.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background { + border-top-color: #7fc1fc; +} +.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background { + border-bottom-color: #7fc1fc; +} +.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background { + border-left-color: #7fc1fc; +} +.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background { + border-right-color: #7fc1fc; +} +/* ============= + Buttons +============= */ +.btn { + border-radius: 2px; + padding: 6px 14px; +} +.btn-md { + padding: 8px 18px; +} +.btn-group-lg > .btn, +.btn-lg { + padding: 10px 16px !important; + font-size: 16px; +} +.btn-group-sm > .btn, +.btn-sm { + padding: 5px 10px !important; +} +.btn-group-xs > .btn, +.btn-xs { + padding: 1px 5px !important; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: 0px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: 0 0 0 100px rgba(0, 0, 0, 0.1) inset; + box-shadow: 0 0 0 100px rgba(0, 0, 0, 0.1) inset; +} +.btn-custom, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger, +.btn-inverse, +.btn-purple, +.btn-pink, +.btn-orange, +.btn-brown, +.btn-teal { + color: #ffffff !important; +} +.btn-custom { + background-color: #7fc1fc; + border-color: #7fc1fc; +} +.btn-custom:hover, +.btn-custom:focus, +.btn-custom:active, +.btn-custom.active, +.btn-custom.focus, +.btn-custom:active, +.btn-custom:focus, +.btn-custom:hover, +.open > .dropdown-toggle.btn-custom { + background-color: #66b5fb !important; + border: 1px solid #66b5fb !important; +} +.btn-default { + background-color: #ffffff; + border-color: rgba(49, 58, 70, 0.2); +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.btn-default.focus, +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.open > .dropdown-toggle.btn-default { + background-color: rgba(49, 58, 70, 0.07) !important; + border: 1px solid rgba(49, 58, 70, 0.2) !important; +} +.btn-primary { + background-color: #188ae2 !important; + border: 1px solid #188ae2 !important; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.focus, +.btn-primary:active, +.btn-primary:focus, +.btn-primary:hover, +.open > .dropdown-toggle.btn-primary { + background-color: #167ccb !important; + border: 1px solid #167ccb !important; +} +.btn-success { + background-color: #4bd396 !important; + border: 1px solid #4bd396 !important; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.focus, +.btn-success:active, +.btn-success:focus, +.btn-success:hover, +.open > .dropdown-toggle.btn-success { + background-color: #37ce8a !important; + border: 1px solid #37ce8a !important; +} +.btn-info { + background-color: #3ac9d6 !important; + border: 1px solid #3ac9d6 !important; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.focus, +.btn-info:active, +.btn-info:focus, +.btn-info:hover, +.open > .dropdown-toggle.btn-info { + background-color: #2abfcc !important; + border: 1px solid #2abfcc !important; +} +.btn-warning { + background-color: #f9c851 !important; + border: 1px solid #f9c851 !important; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.focus, +.btn-warning:active, +.btn-warning:focus, +.btn-warning:hover, +.open > .dropdown-toggle.btn-warning { + background-color: #f8c038 !important; + border: 1px solid #f8c038 !important; +} +.btn-danger { + background-color: #f5707a !important; + border: 1px solid #f5707a !important; +} +.btn-danger:active, +.btn-danger:focus, +.btn-danger:hover, +.btn-danger.active, +.btn-danger.focus, +.btn-danger:active, +.btn-danger:focus, +.btn-danger:hover, +.open > .dropdown-toggle.btn-danger { + background-color: #f35864 !important; + border: 1px solid #f35864 !important; +} +.btn-inverse { + background-color: #3b3e47 !important; + border: 1px solid #3b3e47 !important; +} +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.focus, +.btn-inverse:active, +.btn-inverse:focus, +.btn-inverse:hover, +.open > .dropdown-toggle.btn-inverse { + background-color: #2f3239 !important; + border: 1px solid #2f3239 !important; +} +.btn-purple { + background-color: #6b5fb5 !important; + border: 1px solid #6b5fb5 !important; +} +.btn-purple:hover, +.btn-purple:focus, +.btn-purple:active { + background-color: #5c4fab !important; + border: 1px solid #5c4fab !important; +} +.btn-pink { + background-color: #f06292 !important; + border: 1px solid #f06292 !important; +} +.btn-pink:hover, +.btn-pink:focus, +.btn-pink:active { + background-color: #ee4b82 !important; + border: 1px solid #ee4b82 !important; +} +.btn-orange { + background-color: #ff9800 !important; + border: 1px solid #ff9800 !important; +} +.btn-orange:hover, +.btn-orange:focus, +.btn-orange:active { + background-color: #e68900 !important; + border: 1px solid #e68900 !important; +} +.btn-brown { + background-color: #8d6e63 !important; + border: 1px solid #8d6e63 !important; +} +.btn-brown:hover, +.btn-brown:focus, +.btn-brown:active { + background-color: #7e6258 !important; + border: 1px solid #7e6258 !important; +} +.btn-teal { + background-color: #26a69a !important; + border: 1px solid #26a69a !important; +} +.btn-teal:hover, +.btn-teal:focus, +.btn-teal:active { + background-color: #219187 !important; + border: 1px solid #219187 !important; +} +.btn-bordered { + border-bottom: 3px solid transparent; +} +.btn-bordered.btn-default { + background-color: #ffffff; + border-bottom: 2px solid rgba(49, 58, 70, 0.1) !important; +} +.btn-bordered.btn-custom { + background-color: #7fc1fc; + border-bottom: 2px solid #5cb0fb !important; +} +.btn-bordered.btn-primary { + border-bottom: 2px solid #1576c2 !important; +} +.btn-bordered.btn-success { + border-bottom: 2px solid #31c985 !important; +} +.btn-bordered.btn-info { + border-bottom: 2px solid #29b7c4 !important; +} +.btn-bordered.btn-warning { + border-bottom: 2px solid #f7b820 !important; +} +.btn-bordered.btn-danger { + border-bottom: 2px solid #f2404e !important; +} +.btn-bordered.btn-inverse { + border-bottom: 2px solid #0d0d0f !important; +} +.btn-bordered.btn-purple { + border-bottom: 2px solid #584ca4 !important; +} +.btn-bordered.btn-pink { + border-bottom: 2px solid #ed417b !important; +} +.btn-bordered.btn-orange { + border-bottom: 2px solid #db8300 !important; +} +.btn-bordered.btn-brown { + border-bottom: 2px solid #785e54 !important; +} +.btn-bordered.btn-teal { + border-bottom: 2px solid #1f897f !important; +} +.btn-rounded { + border-radius: 2em; + padding: 6px 18px; +} +/* Social Buttons */ +.btn-facebook { + color: #ffffff !important; + background-color: #3b5998 !important; +} +.btn-twitter { + color: #ffffff !important; + background-color: #00aced !important; +} +.btn-linkedin { + color: #ffffff !important; + background-color: #007bb6 !important; +} +.btn-dribbble { + color: #ffffff !important; + background-color: #ea4c89 !important; +} +.btn-googleplus { + color: #ffffff !important; + background-color: #dd4b39 !important; +} +.btn-instagram { + color: #ffffff !important; + background-color: #517fa4 !important; +} +.btn-pinterest { + color: #ffffff !important; + background-color: #cb2027 !important; +} +.btn-dropbox { + color: #ffffff !important; + background-color: #007ee5 !important; +} +.btn-flickr { + color: #ffffff !important; + background-color: #ff0084 !important; +} +.btn-tumblr { + color: #ffffff !important; + background-color: #32506d !important; +} +.btn-skype { + color: #ffffff !important; + background-color: #00aff0 !important; +} +.btn-youtube { + color: #ffffff !important; + background-color: #bb0000 !important; +} +.btn-github { + color: #ffffff !important; + background-color: #171515 !important; +} +/* =========== + Panels + =============*/ +.panel { + border: 2px solid #f3f3f3; + box-shadow: none; + margin-bottom: 20px; +} +.panel .panel-body { + padding: 20px; +} +.panel .panel-body p { + margin-bottom: 0; + line-height: 24px; +} +.panel .panel-body p + p { + padding-top: 10px; +} +.panel-heading { + border: none !important; + padding: 15px 20px; + margin: -2px; + border-radius: 4px 4px 0 0; +} +.panel-default > .panel-heading { + background-color: #f3f3f3; + border-bottom: none; + color: #797979; +} +.panel-title { + font-size: 15px; + font-weight: 600; + margin-bottom: 0; + margin-top: 0; + text-transform: uppercase; + letter-spacing: 0.03em; + font-family: 'Hind Madurai', sans-serif; +} +.panel-sub-title { + margin-bottom: 0px; + color: rgba(255, 255, 255, 0.7) !important; + margin-top: 3px; +} +.panel-footer { + background: #f3f3f3; + border-top: 0; +} +.panel-default .panel-sub-title { + color: inherit !important; +} +.panel-color .panel-title { + color: #ffffff; +} +.panel-primary > .panel-heading { + background-color: #188ae2; +} +.panel-success > .panel-heading { + background-color: #4bd396; +} +.panel-info > .panel-heading { + background-color: #3ac9d6; +} +.panel-warning > .panel-heading { + background-color: #f9c851; +} +.panel-danger > .panel-heading { + background-color: #f5707a; +} +.panel-purple > .panel-heading { + background-color: #6b5fb5; +} +.panel-pink > .panel-heading { + background-color: #f06292; +} +.panel-orange > .panel-heading { + background-color: #ff9800; +} +.panel-brown > .panel-heading { + background-color: #8d6e63; +} +.panel-teal > .panel-heading { + background-color: #26a69a; +} +.panel-inverse > .panel-heading { + background-color: #3b3e47; +} +.panel-border { + border-radius: 3px; +} +.panel-border .panel-heading { + background-color: #ffffff; + border-top: 3px solid #ccc !important; + border-radius: 3px; + padding: 15px 20px 0; + margin: -2px 0 0 0 !important; +} +.panel-border .panel-body { + padding: 15px 20px 20px 20px; +} +.panel-border.panel-primary .panel-heading { + border-color: #188ae2 !important; + color: #188ae2 !important; +} +.panel-border.panel-success .panel-heading { + border-color: #4bd396 !important; + color: #4bd396 !important; +} +.panel-border.panel-info .panel-heading { + border-color: #3ac9d6 !important; + color: #3ac9d6 !important; +} +.panel-border.panel-warning .panel-heading { + border-color: #f9c851 !important; + color: #f9c851 !important; +} +.panel-border.panel-danger .panel-heading { + border-color: #f5707a !important; + color: #f5707a !important; +} +.panel-border.panel-purple .panel-heading { + border-color: #6b5fb5 !important; + color: #6b5fb5 !important; +} +.panel-border.panel-pink .panel-heading { + border-color: #f06292 !important; + color: #f06292 !important; +} +.panel-border.panel-orange .panel-heading { + border-color: #ff9800 !important; + color: #ff9800 !important; +} +.panel-border.panel-brown .panel-heading { + border-color: #8d6e63 !important; + color: #8d6e63 !important; +} +.panel-border.panel-teal .panel-heading { + border-color: #26a69a !important; + color: #26a69a !important; +} +.panel-border.panel-inverse .panel-heading { + border-color: #3b3e47 !important; + color: #3b3e47 !important; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top: 0 !important; +} +/* =========== + Portlets + =============*/ +.portlet { + background: #ffffff; + border-radius: 3px; + margin-bottom: 20px; + transition: all 0.4s; + border: 2px solid #f3f3f3; +} +.portlet .portlet-heading { + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + color: #ffffff; + padding: 12px 20px; + margin: -2px -2px 0 -2px; +} +.portlet .portlet-heading .portlet-title { + color: #ffffff; + float: left; + font-size: 15px; + font-weight: 600; + margin-bottom: 0; + margin-top: 9px; + text-transform: uppercase; + letter-spacing: 0.03em; + font-family: 'Hind Madurai', sans-serif; +} +.portlet .portlet-heading .portlet-widgets { + display: inline-block; + float: right; + font-size: 15px; + line-height: 30px; + padding-left: 15px; + position: relative; + text-align: right; +} +.portlet .portlet-heading .portlet-widgets .divider { + margin: 0 5px; +} +.portlet .portlet-heading a { + color: #999999; +} +.portlet .portlet-body { + -moz-border-radius-bottomleft: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + background: #ffffff; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + padding: 15px; +} +.portlet-default .portlet-title { + color: #797979 !important; +} +.portlet .portlet-heading .portlet-widgets .collapsed .ion-minus-round:before { + content: "\f217" !important; +} +.portlet .portlet-heading.bg-purple a, +.portlet .portlet-heading.bg-info a, +.portlet .portlet-heading.bg-success a, +.portlet .portlet-heading.bg-primary a, +.portlet .portlet-heading.bg-danger a, +.portlet .portlet-heading.bg-warning a, +.portlet .portlet-heading.bg-inverse a, +.portlet .portlet-heading.bg-pink a, +.portlet .portlet-heading.bg-orange a, +.portlet .portlet-heading.bg-brown a, +.portlet .portlet-heading.bg-teal a { + color: #ffffff; +} +.panel-disabled { + background: rgba(49, 58, 70, 0.5); + cursor: progress; + bottom: 20px; + border-radius: 3px; + left: 10px; + position: absolute; + right: 10px; + top: 0; +} +.portlet-loader { + width: 30px; + height: 30px; + background-color: #313a46; + border-radius: 2px; + -webkit-animation: sk-rotateplane 1.2s infinite ease-in-out; + animation: sk-rotateplane 1.2s infinite ease-in-out; + position: absolute; + left: 50%; + top: 50%; + margin-left: -15px; + margin-top: -15px; +} +@-webkit-keyframes sk-rotateplane { + 0% { + -webkit-transform: perspective(120px); + } + 50% { + -webkit-transform: perspective(120px) rotateY(180deg); + } + 100% { + -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg); + } +} +@keyframes sk-rotateplane { + 0% { + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} +/* ==== Draggable card ==== */ +.card-draggable-placeholder { + border: 2px dashed rgba(67, 89, 102, 0.5); + margin-bottom: 16px; + background-color: rgba(67, 89, 102, 0.08); +} +/* ============= + Checkbox and Radios +============= */ +.checkbox { + padding-left: 20px; +} +.checkbox label { + display: inline-block; + padding-left: 5px; + position: relative; + font-family: 'Varela Round', sans-serif; + font-weight: normal; +} +.checkbox label::before { + -o-transition: 0.3s ease-in-out; + -webkit-transition: 0.3s ease-in-out; + background-color: #ffffff; + border-radius: 2px; + border: 1px solid #dadada; + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + position: absolute; + transition: 0.3s ease-in-out; + width: 17px; + outline: none !important; + margin-top: 2px; +} +.checkbox label::after { + color: #797979; + display: inline-block; + font-size: 11px; + height: 16px; + left: 1px; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + position: absolute; + top: 2px; + width: 16px; +} +.checkbox input[type="checkbox"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; +} +.checkbox input[type="checkbox"]:disabled + label { + opacity: 0.65; +} +.checkbox input[type="checkbox"]:focus + label::before { + outline-offset: -2px; + outline: none; +} +.checkbox input[type="checkbox"]:checked + label::after { + content: '\f26b'; + font-family: 'Material-Design-Iconic-Font'; + font-weight: bold; +} +.checkbox input[type="checkbox"]:disabled + label::before { + background-color: #eeeeee; + cursor: not-allowed; +} +.checkbox.checkbox-circle label::before { + border-radius: 50%; +} +.checkbox.checkbox-inline { + margin-top: 0; +} +.checkbox.checkbox-single label { + height: 17px; +} +.checkbox-custom input[type="checkbox"]:checked + label::before { + background-color: #7fc1fc; + border-color: #7fc1fc; +} +.checkbox-custom input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-primary input[type="checkbox"]:checked + label::before { + background-color: #188ae2; + border-color: #188ae2; +} +.checkbox-primary input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-danger input[type="checkbox"]:checked + label::before { + background-color: #f5707a; + border-color: #f5707a; +} +.checkbox-danger input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-info input[type="checkbox"]:checked + label::before { + background-color: #3ac9d6; + border-color: #3ac9d6; +} +.checkbox-info input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-warning input[type="checkbox"]:checked + label::before { + background-color: #f9c851; + border-color: #f9c851; +} +.checkbox-warning input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-success input[type="checkbox"]:checked + label::before { + background-color: #4bd396; + border-color: #4bd396; +} +.checkbox-success input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-purple input[type="checkbox"]:checked + label::before { + background-color: #6b5fb5; + border-color: #6b5fb5; +} +.checkbox-purple input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-pink input[type="checkbox"]:checked + label::before { + background-color: #f06292; + border-color: #f06292; +} +.checkbox-pink input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +.checkbox-inverse input[type="checkbox"]:checked + label::before { + background-color: #3b3e47; + border-color: #3b3e47; +} +.checkbox-inverse input[type="checkbox"]:checked + label::after { + color: #ffffff; +} +/* Radios */ +.radio { + padding-left: 20px; +} +.radio label { + display: inline-block; + padding-left: 5px; + position: relative; + font-family: 'Varela Round', sans-serif; + font-weight: normal; +} +.radio label::before { + -o-transition: border 0.5s ease-in-out; + -webkit-transition: border 0.5s ease-in-out; + background-color: #ffffff; + border-radius: 50%; + border: 1px solid #dadada; + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + outline: none !important; + position: absolute; + transition: border 0.5s ease-in-out; + width: 17px; +} +.radio label::after { + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -ms-transform: scale(0, 0); + -o-transform: scale(0, 0); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -webkit-transform: scale(0, 0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + background-color: #797979; + border-radius: 50%; + content: " "; + display: inline-block; + height: 11px; + left: 3px; + margin-left: -20px; + position: absolute; + top: 3px; + transform: scale(0, 0); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + width: 11px; +} +.radio input[type="radio"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; +} +.radio input[type="radio"]:disabled + label { + opacity: 0.65; +} +.radio input[type="radio"]:focus + label::before { + outline-offset: -2px; +} +.radio input[type="radio"]:checked + label::after { + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); +} +.radio input[type="radio"]:disabled + label::before { + cursor: not-allowed; +} +.radio.radio-inline { + margin-top: 0; +} +.radio.radio-single label { + height: 17px; +} +.radio-custom input[type="radio"] + label::after { + background-color: #7fc1fc; +} +.radio-custom input[type="radio"]:checked + label::before { + border-color: #7fc1fc; +} +.radio-custom input[type="radio"]:checked + label::after { + background-color: #7fc1fc; +} +.radio-primary input[type="radio"] + label::after { + background-color: #188ae2; +} +.radio-primary input[type="radio"]:checked + label::before { + border-color: #188ae2; +} +.radio-primary input[type="radio"]:checked + label::after { + background-color: #188ae2; +} +.radio-danger input[type="radio"] + label::after { + background-color: #f5707a; +} +.radio-danger input[type="radio"]:checked + label::before { + border-color: #f5707a; +} +.radio-danger input[type="radio"]:checked + label::after { + background-color: #f5707a; +} +.radio-info input[type="radio"] + label::after { + background-color: #3ac9d6; +} +.radio-info input[type="radio"]:checked + label::before { + border-color: #3ac9d6; +} +.radio-info input[type="radio"]:checked + label::after { + background-color: #3ac9d6; +} +.radio-warning input[type="radio"] + label::after { + background-color: #f9c851; +} +.radio-warning input[type="radio"]:checked + label::before { + border-color: #f9c851; +} +.radio-warning input[type="radio"]:checked + label::after { + background-color: #f9c851; +} +.radio-success input[type="radio"] + label::after { + background-color: #4bd396; +} +.radio-success input[type="radio"]:checked + label::before { + border-color: #4bd396; +} +.radio-success input[type="radio"]:checked + label::after { + background-color: #4bd396; +} +.radio-purple input[type="radio"] + label::after { + background-color: #6b5fb5; +} +.radio-purple input[type="radio"]:checked + label::before { + border-color: #6b5fb5; +} +.radio-purple input[type="radio"]:checked + label::after { + background-color: #6b5fb5; +} +.radio-pink input[type="radio"] + label::after { + background-color: #f06292; +} +.radio-pink input[type="radio"]:checked + label::before { + border-color: #f06292; +} +.radio-pink input[type="radio"]:checked + label::after { + background-color: #f06292; +} +/* ============= + Modals +============= */ +.modal .modal-dialog .modal-content { + -moz-box-shadow: none; + -webkit-box-shadow: none; + border-color: #DDDDDD; + border-radius: 2px; + box-shadow: none; + padding: 25px; +} +.modal .modal-dialog .modal-content .modal-header { + border-bottom-width: 2px; + margin: 0; + padding: 0; + padding-bottom: 15px; +} +.modal .modal-dialog .modal-content .modal-body { + padding: 20px 0; +} +.modal .modal-dialog .modal-content .modal-footer { + padding: 0; + padding-top: 15px; +} +.modal-full { + width: 98%; +} +.modal-content .nav.nav-tabs + .tab-content { + margin-bottom: 0; +} +.modal-content .panel-group { + margin-bottom: 0; +} +.modal-content .panel { + border-top: none; +} +/* Custom-modal */ +.modal-demo { + background-color: #ffffff; + width: 600px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-border-radius: 4px; + background-clip: padding-box; + display: none; +} +.modal-demo .close { + position: absolute; + top: 15px; + right: 25px; + color: #eeeeee; +} +.custom-modal-title { + padding: 15px 25px 15px 25px; + line-height: 22px; + font-size: 18px; + background-color: #313a46; + color: #ffffff; + text-align: left; + margin: 0; +} +.custom-modal-text { + padding: 20px; +} +.custombox-modal-flash .close, +.custombox-modal-rotatedown .close { + top: 20px; + z-index: 9999; +} +/* ============= + Tabs +============= */ +.tab-content { + padding: 20px 0 0 0; +} +.nav-tabs > li > a { + color: #313a46; + text-transform: uppercase; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +.nav-tabs > li > a:hover { + background-color: rgba(152, 166, 173, 0.1); +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:focus, +.nav-tabs > li.active > a:hover { + color: #7fc1fc; +} +/* Vertial tab */ +.tabs-vertical-env .tab-content { + background: #ffffff; + display: table-cell; + padding: 0 0 0 20px; + vertical-align: top; +} +.tabs-vertical-env .nav.tabs-vertical { + display: table-cell; + min-width: 120px; + vertical-align: top; + width: 150px; +} +.tabs-vertical-env .nav.tabs-vertical li > a { + color: #313a46; + text-align: center; + white-space: nowrap; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; + text-transform: uppercase; +} +.tabs-vertical-env .nav.tabs-vertical li.active > a { + background-color: rgba(152, 166, 173, 0.1); + border: 0; + color: #7fc1fc; +} +.tabs-vertical-env-right .tab-content { + padding: 0 20px 0 0; +} +.tabs-bordered { + border-bottom: 2px solid rgba(152, 166, 173, 0.2) !important; +} +.tabs-bordered li a, +.tabs-bordered li a:hover, +.tabs-bordered li a:focus { + border: 0 !important; + background-color: #ffffff !important; + padding: 10px 20px !important; +} +.tabs-bordered li.active a, +.tabs-bordered li.active a:hover, +.tabs-bordered li.active a:focus { + border-bottom: 2px solid #7fc1fc !important; + margin-bottom: -1px; + color: #7fc1fc; +} +/* Navpills */ +.nav-pills > li > a { + color: #313a46; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:focus, +.nav-pills > li.active > a:hover { + background-color: #7fc1fc; +} +/* ============= + Progressbars +============= */ +.progress { + -webkit-box-shadow: none !important; + background-color: #f3f3f3; + box-shadow: none !important; + height: 10px; + margin-bottom: 18px; + overflow: hidden; +} +.progress-bar { + box-shadow: none; + font-size: 8px; + font-weight: 600; + line-height: 12px; +} +.progress.progress-sm { + height: 5px !important; +} +.progress.progress-sm .progress-bar { + font-size: 8px; + line-height: 5px; +} +.progress.progress-md { + height: 15px !important; +} +.progress.progress-md .progress-bar { + font-size: 10.8px; + line-height: 14.4px; +} +.progress.progress-lg { + height: 20px !important; +} +.progress.progress-lg .progress-bar { + font-size: 12px; + line-height: 20px; +} +.progress-bar-primary { + background-color: #188ae2; +} +.progress-bar-success { + background-color: #4bd396; +} +.progress-bar-info { + background-color: #3ac9d6; +} +.progress-bar-warning { + background-color: #f9c851; +} +.progress-bar-danger { + background-color: #f5707a; +} +.progress-bar-inverse { + background-color: #3b3e47; +} +.progress-bar-purple { + background-color: #6b5fb5; +} +.progress-bar-pink { + background-color: #f06292; +} +.progress-bar-custom { + background-color: #7fc1fc; +} +.progress-bar-orange { + background-color: #ff9800; +} +.progress-bar-brown { + background-color: #8d6e63; +} +.progress-bar-teal { + background-color: #26a69a; +} +/* Progressbar Vertical */ +.progress-vertical { + min-height: 250px; + height: 250px; + width: 10px; + position: relative; + display: inline-block; + margin-bottom: 0; + margin-right: 20px; +} +.progress-vertical .progress-bar { + width: 100%; +} +.progress-vertical-bottom { + min-height: 250px; + height: 250px; + position: relative; + width: 10px; + display: inline-block; + margin-bottom: 0; + margin-right: 20px; +} +.progress-vertical-bottom .progress-bar { + width: 100%; + position: absolute; + bottom: 0; +} +.progress-vertical.progress-sm, +.progress-vertical-bottom.progress-sm { + width: 5px !important; +} +.progress-vertical.progress-sm .progress-bar, +.progress-vertical-bottom.progress-sm .progress-bar { + font-size: 8px; + line-height: 5px; +} +.progress-vertical.progress-md, +.progress-vertical-bottom.progress-md { + width: 15px !important; +} +.progress-vertical.progress-md .progress-bar, +.progress-vertical-bottom.progress-md .progress-bar { + font-size: 10.8px; + line-height: 14.4px; +} +.progress-vertical.progress-lg, +.progress-vertical-bottom.progress-lg { + width: 20px !important; +} +.progress-vertical.progress-lg .progress-bar, +.progress-vertical-bottom.progress-lg .progress-bar { + font-size: 12px; + line-height: 20px; +} +/* ============= + Notification +============= */ +#toast-container > div { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + opacity: 1; +} +#toast-container > :hover { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + opacity: 0.98; +} +.toast { + background-color: #7fc1fc; +} +.toast-success { + background-color: #4bd396; + border: 2px solid #4bd396; +} +.toast-error { + background-color: #f5707a; + border: 2px solid #f5707a; +} +.toast-info { + background-color: #3ac9d6; + border: 2px solid #3ac9d6; +} +.toast-warning { + background-color: #f9c851; + border: 2px solid #f9c851; +} +/* ============= + Alerts +============= */ +.alert { + position: relative; +} +.alert .alert-link { + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +.alert-icon { + padding-left: 50px; +} +.alert-icon i { + position: absolute; + left: 0; + height: 50px; + width: 50px; + text-align: center; + top: 0; + line-height: 50px; + font-size: 22px; +} +.alert-success { + color: #4bd396; + background-color: #daf6ea; + border-color: #9de7c6; +} +.alert-success .alert-link { + color: #2ebd7d; +} +.alert-success hr { + border-top-color: #2ebd7d; +} +.alert-info { + color: #3ac9d6; + background-color: #cef2f5; + border-color: #8ee0e8; +} +.alert-info .alert-link { + color: #26abb7; +} +.alert-info hr { + border-top-color: #26abb7; +} +.alert-warning { + color: #f9c851; + background-color: #fdefcc; + border-color: #fcdf9b; +} +.alert-warning .alert-link { + color: #f7b820; +} +.alert-warning hr { + border-top-color: #f7b820; +} +.alert-danger { + color: #f5707a; + background-color: #fde7e9; + border-color: #fab8bd; +} +.alert-danger .alert-link { + color: #f2404e; +} +.alert-danger hr { + border-top-color: #f2404e; +} +/* ============= + Carousel +============= */ +.carousel-control { + width: 10%; +} +.carousel-control span { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + font-size: 30px; +} +/* =========== */ +/* Sweet Alert */ +/* =========== */ +.sweet-alert { + background: url("../images/bg-pattern.png"); +} +.sweet-alert h2 { + font-size: 24px; + position: relative; +} +.sweet-alert p { + font-size: 14px; + line-height: 22px; +} +.sweet-alert .icon.success .placeholder { + border: 4px solid rgba(75, 211, 150, 0.3); +} +.sweet-alert .icon.success .line { + background-color: #4bd396; +} +.sweet-alert .icon.warning { + border-color: #f9c851; +} +.sweet-alert .icon.info { + border-color: #3ac9d6; +} +.sweet-alert .btn-warning:focus, +.sweet-alert .btn-info:focus, +.sweet-alert .btn-success:focus, +.sweet-alert .btn-danger:focus, +.sweet-alert .btn-default:focus { + box-shadow: none; +} +.sweet-alert .btn-lg { + font-size: 15px !important; + padding: 6px 14px !important; +} +/* ============= + Widgets +============= */ +.widget-box-one .widget-one-icon { + position: absolute; + right: 30px; + font-size: 72px !important; + top: 0; + color: #f3f3f3; + overflow: hidden; + vertical-align: middle; + line-height: 2 !important; +} +.widget-box-one .wigdet-one-content { + position: relative; +} +.widget-box-two .widget-two-icon { + position: absolute; + right: 30px; + font-size: 42px !important; + top: 30px; + overflow: hidden; + vertical-align: middle; + height: 80px; + width: 80px; + text-align: center; + line-height: 80px; + border-radius: 50%; +} +.widget-box-two .wigdet-two-content { + position: relative; +} +.widget-two-primary { + background-color: rgba(24, 138, 226, 0.2); + border-color: rgba(24, 138, 226, 0.5); +} +.widget-two-primary .widget-two-icon { + color: rgba(24, 138, 226, 0.5); + border: 2px solid rgba(24, 138, 226, 0.5); +} +.widget-two-success { + background-color: rgba(75, 211, 150, 0.2); + border-color: rgba(75, 211, 150, 0.5); +} +.widget-two-success .widget-two-icon { + color: rgba(75, 211, 150, 0.5); + border: 2px solid rgba(75, 211, 150, 0.5); +} +.widget-two-warning { + background-color: rgba(249, 200, 81, 0.2); + border-color: rgba(249, 200, 81, 0.5); +} +.widget-two-warning .widget-two-icon { + color: rgba(249, 200, 81, 0.5); + border: 2px solid rgba(249, 200, 81, 0.5); +} +.widget-two-info { + background-color: rgba(58, 201, 214, 0.2); + border-color: rgba(58, 201, 214, 0.5); +} +.widget-two-info .widget-two-icon { + color: rgba(58, 201, 214, 0.5); + border: 2px solid rgba(58, 201, 214, 0.5); +} +.widget-two-danger { + background-color: rgba(245, 112, 122, 0.2); + border-color: rgba(245, 112, 122, 0.5); +} +.widget-two-danger .widget-two-icon { + color: rgba(245, 112, 122, 0.5); + border: 2px solid rgba(245, 112, 122, 0.5); +} +.widget-two-inverse { + background-color: rgba(59, 62, 71, 0.2); + border-color: rgba(59, 62, 71, 0.5); +} +.widget-two-inverse .widget-two-icon { + color: rgba(59, 62, 71, 0.5); + border: 2px solid rgba(59, 62, 71, 0.5); +} +.widget-two-purple { + background-color: rgba(107, 95, 181, 0.2); + border-color: rgba(107, 95, 181, 0.5); +} +.widget-two-purple .widget-two-icon { + color: rgba(107, 95, 181, 0.5); + border: 2px solid rgba(107, 95, 181, 0.5); +} +.widget-two-pink { + background-color: rgba(240, 98, 146, 0.2); + border-color: rgba(240, 98, 146, 0.5); +} +.widget-two-pink .widget-two-icon { + color: rgba(240, 98, 146, 0.5); + border: 2px solid rgba(240, 98, 146, 0.5); +} +.widget-two-orange { + background-color: rgba(255, 152, 0, 0.2); + border-color: rgba(255, 152, 0, 0.5); +} +.widget-two-orange .widget-two-icon { + color: rgba(255, 152, 0, 0.5); + border: 2px solid rgba(255, 152, 0, 0.5); +} +.widget-two-brown { + background-color: rgba(141, 110, 99, 0.2); + border-color: rgba(141, 110, 99, 0.5); +} +.widget-two-brown .widget-two-icon { + color: rgba(141, 110, 99, 0.5); + border: 2px solid rgba(141, 110, 99, 0.5); +} +.widget-two-teal { + background-color: rgba(38, 166, 154, 0.2); + border-color: rgba(38, 166, 154, 0.5); +} +.widget-two-teal .widget-two-icon { + color: rgba(38, 166, 154, 0.5); + border: 2px solid rgba(38, 166, 154, 0.5); +} +.widget-two-default { + background-color: rgba(243, 243, 243, 0.5); + border-color: #e6e6e6; +} +.widget-two-default .widget-two-icon { + color: #c0c0c0; + border: 2px solid #c0c0c0; +} +.widget-box-three .bg-icon { + height: 80px; + width: 80px; + text-align: center; + -webkit-border-radius: 50%; + border-radius: 50%; + -moz-border-radius: 50%; + background-clip: padding-box; + border: 1px dashed #98a6ad; + background-color: #f3f3f3; + margin-right: 20px; +} +.widget-box-three .bg-icon i { + line-height: 80px; + font-size: 36px; + color: #98a6ad; +} +.tilebox-two { + border-left: 4px solid #f3f3f3; + background-color: #f3f3f3; +} +.tilebox-two i { + font-size: 54px; + opacity: 0.3; + margin-top: 15px; +} +.tilebox-custom { + border-left-color: #7fc1fc; +} +.tilebox-primary { + border-left-color: #188ae2; +} +.tilebox-success { + border-left-color: #4bd396; +} +.tilebox-info { + border-left-color: #3ac9d6; +} +.tilebox-warning { + border-left-color: #f9c851; +} +.tilebox-danger { + border-left-color: #f5707a; +} +.tilebox-inverse { + border-left-color: #3b3e47; +} +.tilebox-pink { + border-left-color: #f06292; +} +.tilebox-purple { + border-left-color: #6b5fb5; +} +.tilebox-dark { + border-left-color: #313a46; +} +.tilebox-brown { + border-left-color: #8d6e63; +} +.tilebox-orange { + border-left-color: #ff9800; +} +.tilebox-teal { + border-left-color: #26a69a; +} +/* Inbox-widget */ +.inbox-widget .inbox-item { + border-bottom: 1px solid rgba(243, 243, 243, 0.9); + overflow: hidden; + padding: 10px 0; + position: relative; +} +.inbox-widget .inbox-item .inbox-item-img { + display: block; + float: left; + margin-right: 15px; + width: 40px; +} +.inbox-widget .inbox-item img { + width: 40px; +} +.inbox-widget .inbox-item .inbox-item-author { + color: #313a46; + display: block; + margin: 0; +} +.inbox-widget .inbox-item .inbox-item-text { + color: #a0a0a0; + display: block; + font-size: 12px; + margin: 0; +} +.inbox-widget .inbox-item .inbox-item-date { + color: #a9a9a9; + font-size: 11px; + position: absolute; + right: 7px; + top: 2px; +} +/* Chat widget */ +.conversation-list { + list-style: none; + padding: 0 10px; +} +.conversation-list li { + margin-bottom: 24px; +} +.conversation-list .chat-avatar { + display: inline-block; + float: left; + text-align: center; + width: 42px; +} +.conversation-list .chat-avatar img { + border-radius: 100%; + width: 100%; +} +.conversation-list .chat-avatar i { + font-size: 12px; + font-style: normal; +} +.conversation-list .ctext-wrap { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background: rgba(243, 243, 243, 0.6); + border-radius: 3px; + display: inline-block; + padding: 12px; + position: relative; +} +.conversation-list .ctext-wrap i { + color: #313a46; + display: block; + font-size: 12px; + font-style: normal; + font-weight: bold; + font-family: 'Hind Madurai', sans-serif; + position: relative; +} +.conversation-list .ctext-wrap p { + margin: 0; + padding-top: 3px; +} +.conversation-list .ctext-wrap:after { + right: 100%; + top: 0; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-top-color: rgba(243, 243, 243, 0.6); + border-width: 8px; + margin-left: -1px; + border-right-color: rgba(243, 243, 243, 0.6); +} +.conversation-list .conversation-text { + display: inline-block; + float: left; + font-size: 12px; + margin-left: 12px; + width: 70%; +} +.conversation-list .odd .chat-avatar { + float: right !important; +} +.conversation-list .odd .conversation-text { + float: right !important; + margin-right: 12px; + text-align: right; + width: 70% !important; +} +.conversation-list .odd .ctext-wrap { + background-color: #f5707a; + color: #ffffff; +} +.conversation-list .odd .ctext-wrap i { + color: #ffffff; +} +.conversation-list .odd .ctext-wrap:after { + border-color: rgba(238, 238, 242, 0) !important; + border-left-color: #f5707a !important; + border-top-color: #f5707a !important; + left: 100% !important; + margin-right: -1px; +} +.chat-send { + padding-left: 0; + padding-right: 30px; +} +.chat-send button { + width: 100%; +} +.chat-inputbar { + padding-left: 30px; +} +/* Todos widget */ +#todo-message { + font-size: 16px; +} +.todo-list li { + border-radius: 0; + border: 0; + margin: 0; + padding: 1px; + color: #98a6ad; +} +.todo-list li:last-of-type { + border-bottom: none; +} +.todo-list label { + font-family: 'Varela Round', sans-serif; +} +.todo-send { + padding-left: 0; +} +/* Avatar box */ +.avatar-sm-box { + height: 32px; + width: 32px; + color: #ffffff; + display: block; + line-height: 32px; + text-align: center; + border-radius: 50%; + font-family: 'Hind Madurai', sans-serif; + font-size: 16px; +} +/* ============= + Nestable +============= */ +.custom-dd .dd-list .dd-item .dd-handle { + background: #f3f3f3; + border: none; + padding: 8px 16px; + height: auto; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; +} +.custom-dd .dd-list .dd-item .dd-handle:hover { + color: #7fc1fc; +} +.custom-dd .dd-list .dd-item button { + height: auto; + font-size: 17px; + margin: 8px auto; + color: #797979; + width: 30px; +} +.custom-dd-empty .dd-list .dd3-handle { + border: none; + background: #f3f3f3; + height: 36px !important; + width: 36px !important; +} +.custom-dd-empty .dd-list .dd3-handle:before { + color: inherit; + top: 7px; +} +.custom-dd-empty .dd-list .dd3-handle:hover { + color: #7fc1fc; +} +.custom-dd-empty .dd-list .dd3-content { + height: auto; + border: none; + padding: 8px 16px 8px 46px; + background: #f3f3f3; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +.custom-dd-empty .dd-list .dd3-content:hover { + color: #7fc1fc; +} +.custom-dd-empty .dd-list button { + width: 26px; + height: 26px; + font-size: 16px; + font-weight: 600; +} +.dd-dragel > .dd-item .dd-handle { + padding: 8px 16px !important; + background: #f3f3f3; + height: auto; +} +.dd-placeholder, +.dd-empty { + background: #f3f3f3; + border: 1px dashed #98a6ad; +} +.dd-dragel > .dd3-item > .dd3-handle { + border: none; + background: #f3f3f3; + height: 36px !important; + width: 36px !important; +} +.dd-dragel > .dd3-item > .dd3-handle:before { + color: inherit; + top: 7px; +} +.dd-dragel > .dd3-item > .dd3-content { + padding: 8px 16px 8px 46px; + background: #f3f3f3; + height: auto; +} +/* ============= + Rating +============= */ +.rating-md i { + font-size: 18px; +} +.rating-lg i { + font-size: 24px; +} +/* ============= + Calendar +============= */ +.calendar { + float: left; + margin-bottom: 0; +} +.fc-view { + margin-top: 30px; +} +.none-border .modal-footer { + border-top: none; +} +.fc-toolbar { + margin-bottom: 5px; + margin-top: 15px; +} +.fc-toolbar h2 { + font-size: 18px; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; + line-height: 30px; + text-transform: uppercase; +} +.fc-day-grid-event .fc-time { + font-family: 'Hind Madurai', sans-serif; +} +.fc-day { + background: #ffffff; +} +.fc-toolbar .fc-state-active, +.fc-toolbar .ui-state-active, +.fc-toolbar button:focus, +.fc-toolbar button:hover, +.fc-toolbar .ui-state-hover { + z-index: 0; +} +.fc th.fc-widget-header { + background: #eeeeee; + font-size: 14px; + line-height: 20px; + padding: 10px 0; + text-transform: uppercase; +} +.fc-unthemed th, +.fc-unthemed td, +.fc-unthemed thead, +.fc-unthemed tbody, +.fc-unthemed .fc-divider, +.fc-unthemed .fc-row, +.fc-unthemed .fc-popover { + border-color: #f3f3f3; +} +.fc-button { + background: #f1f1f1; + border: none; + color: #797979; + text-transform: capitalize; + box-shadow: none !important; + border-radius: 3px !important; + margin: 0 3px !important; + padding: 6px 12px !important; + height: auto !important; +} +.fc-text-arrow { + font-family: inherit; + font-size: 16px; +} +.fc-state-hover { + background: #f3f3f3; +} +.fc-state-highlight { + background: #f0f0f0; +} +.fc-state-down, +.fc-state-active, +.fc-state-disabled { + background-color: #7fc1fc !important; + color: #ffffff !important; + text-shadow: none !important; +} +.fc-cell-overlay { + background: #f0f0f0; +} +.fc-unthemed .fc-today { + background: #ffffff; +} +.fc-event { + border-radius: 2px; + border: none; + cursor: move; + font-size: 13px; + margin: 5px 7px; + padding: 5px 5px; + text-align: center; +} +.external-event { + cursor: move; + margin: 10px 0; + padding: 6px 10px; +} +.external-event.bg-primary { + background-color: rgba(24, 138, 226, 0.3) !important; + color: #188ae2; +} +.external-event.bg-success { + background-color: rgba(75, 211, 150, 0.3) !important; + color: #4bd396; +} +.external-event.bg-info { + background-color: rgba(58, 201, 214, 0.3) !important; + color: #3ac9d6; +} +.external-event.bg-warning { + background-color: rgba(249, 200, 81, 0.3) !important; + color: #f9c851; +} +.external-event.bg-danger { + background-color: rgba(245, 112, 122, 0.3) !important; + color: #f5707a; +} +.external-event.bg-pink { + background-color: rgba(240, 98, 146, 0.3) !important; + color: #f06292; +} +.external-event.bg-purple { + background-color: rgba(107, 95, 181, 0.3) !important; + color: #6b5fb5; +} +.external-event.bg-inverse { + background-color: rgba(59, 62, 71, 0.3) !important; + color: #3b3e47; +} +.external-event.bg-orange { + background-color: rgba(255, 152, 0, 0.3) !important; + color: #ff9800; +} +.external-event.bg-brown { + background-color: rgba(141, 110, 99, 0.3) !important; + color: #8d6e63; +} +.external-event.bg-teal { + background-color: rgba(38, 166, 154, 0.3) !important; + color: #26a69a; +} +.fc-basic-view td.fc-week-number span { + padding-right: 8px; + font-weight: 700; + font-family: 'Hind Madurai', sans-serif; +} +.fc-basic-view td.fc-day-number { + padding-right: 8px; + font-weight: 700; + font-family: 'Hind Madurai', sans-serif; +} +/* ============= + Form +============= */ +/* Form components */ +label { + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +textarea.form-control { + min-height: 90px; +} +.form-control { + border: 1px solid #e3e3e3; + border-radius: 4px; + padding: 7px 12px; + height: 38px; + max-width: 100%; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: all 300ms linear; + -moz-transition: all 300ms linear; + -o-transition: all 300ms linear; + -ms-transition: all 300ms linear; + transition: all 300ms linear; +} +.form-control:focus { + border: 1px solid #aaaaaa; + -webkit-box-shadow: none; + box-shadow: none; + outline: 0 !important; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-horizontal .form-group { + margin-left: -10px; + margin-right: -10px; +} +.form-control-feedback { + line-height: 38px !important; +} +.input-group-btn .btn { + padding: 8px 12px; +} +.input-group-btn .btn-sm { + padding: 5px 10px; +} +.input-group-btn .btn-lg { + padding: 10px 17px; +} +.has-success .checkbox, +.has-success .checkbox-inline, +.has-success .control-label, +.has-success .help-block, +.has-success .radio, +.has-success .radio-inline, +.has-success.checkbox label, +.has-success.checkbox-inline label, +.has-success.radio label, +.has-success.radio-inline label, +.has-success .form-control-feedback { + color: #4bd396; +} +.has-warning .checkbox, +.has-warning .checkbox-inline, +.has-warning .control-label, +.has-warning .help-block, +.has-warning .radio, +.has-warning .radio-inline, +.has-warning.checkbox label, +.has-warning.checkbox-inline label, +.has-warning.radio label, +.has-warning.radio-inline label, +.has-warning .form-control-feedback { + color: #f9c851; +} +.has-error .checkbox, +.has-error .checkbox-inline, +.has-error .control-label, +.has-error .help-block, +.has-error .radio, +.has-error .radio-inline, +.has-error.checkbox label, +.has-error.checkbox-inline label, +.has-error.radio label, +.has-error.radio-inline label, +.has-error .form-control-feedback { + color: #f5707a; +} +.has-success .form-control { + border-color: #4bd396; + box-shadow: none !important; +} +.has-warning .form-control { + border-color: #f9c851; + box-shadow: none !important; +} +.has-error .form-control { + border-color: #f5707a; + box-shadow: none !important; +} +.input-group-addon { + border-radius: 2px; + border: 1px solid #eeeeee; +} +/* == Form Advanced */ +/* Bootstrap tagsinput */ +.bootstrap-tagsinput { + box-shadow: none; + padding: 5px 7px 5px; + width: 100%; + border: 1px solid #e3e3e3; +} +.bootstrap-tagsinput .label-info { + background-color: #7fc1fc !important; + display: inline-block; + padding: 5px; + margin: 3px 1px; +} +/* CSS Switch */ +input[switch] { + display: none; +} +input[switch] + label { + font-size: 1em; + line-height: 1; + width: 56px; + height: 24px; + background-color: #ddd; + background-image: none; + border-radius: 2rem; + padding: 0.16667rem; + cursor: pointer; + display: inline-block; + text-align: center; + position: relative; + font-family: inherit; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch] + label:before { + color: #313a46; + content: attr(data-off-label); + display: block; + font-family: inherit; + font-weight: 500; + font-size: 12px; + line-height: 21px; + position: absolute; + right: 6px; + margin: 0.21667rem; + top: 0; + text-align: center; + min-width: 1.66667rem; + overflow: hidden; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch] + label:after { + content: ''; + position: absolute; + left: 3px; + background-color: #f7f7f7; + box-shadow: none; + border-radius: 2rem; + height: 20px; + width: 20px; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch]:checked + label { + background-color: #7fc1fc; +} +input[switch]:checked + label:before { + color: #ffffff; + content: attr(data-on-label); + right: auto; + left: 6px; +} +input[switch]:checked + label:after { + left: 33px; + background-color: #f7f7f7; +} +input[switch="bool"] + label { + background-color: #f5707a; +} +input[switch="bool"] + label:before, +input[switch="bool"]:checked + label:before, +input[switch="default"]:checked + label:before { + color: #ffffff !important; +} +input[switch="bool"]:checked + label { + background-color: #4bd396; +} +input[switch="default"]:checked + label { + background-color: #a2a2a2; +} +input[switch="primary"]:checked + label { + background-color: #188ae2; +} +input[switch="success"]:checked + label { + background-color: #4bd396; +} +input[switch="info"]:checked + label { + background-color: #3ac9d6; +} +input[switch="warning"]:checked + label { + background-color: #f9c851; +} +input[switch="inverse"]:checked + label { + background-color: #3b3e47; +} +input[switch="pink"]:checked + label { + background-color: #f06292; +} +input[switch="purple"]:checked + label { + background-color: #6b5fb5; +} +input[switch="orange"]:checked + label { + background-color: #ff9800; +} +input[switch="brown"]:checked + label { + background-color: #8d6e63; +} +input[switch="teal"]:checked + label { + background-color: #26a69a; +} +/* Button Switch css */ +.btn-switch { + position: relative; + display: inline-block; + cursor: pointer; +} +.btn-switch > input[type="checkbox"] { + position: absolute; + opacity: 0; + visibility: hidden; + cursor: pointer; + left: -100%; + top: -100%; +} +.btn-switch > input[type="checkbox"] + .btn { + background-color: transparent !important; + border-color: #7fc1fc; + color: #7fc1fc !important; +} +.btn-switch > input[type="checkbox"] + .btn > em { + display: inline-block; + border: 1px solid #7fc1fc; + border-radius: 50%; + padding: 2px; + margin: 0 4px 0 0; + top: 1px; + font-size: 10px; + text-align: center; +} +.btn-switch > input[type="checkbox"] + .btn > em:before { + opacity: 0; +} +.btn-switch > input[type="checkbox"]:checked + .btn { + background-color: #7fc1fc !important; + color: #ffffff !important; +} +.btn-switch > input[type="checkbox"]:checked + .btn > em { + background-color: #ffffff; + color: #7fc1fc !important; +} +.btn-switch > input[type="checkbox"]:checked + .btn > em:before { + opacity: 1; +} +.btn-switch-primary > input[type="checkbox"] + .btn, +.btn-switch-primary > input[type="checkbox"]:checked + .btn > em { + color: #188ae2 !important; +} +.btn-switch-primary > input[type="checkbox"] + .btn, +.btn-switch-primary > input[type="checkbox"] + .btn > em { + border-color: #188ae2 !important; +} +.btn-switch-primary > input[type="checkbox"]:checked + .btn { + background-color: #188ae2 !important; +} +.btn-switch-success > input[type="checkbox"] + .btn, +.btn-switch-success > input[type="checkbox"]:checked + .btn > em { + color: #4bd396 !important; +} +.btn-switch-success > input[type="checkbox"] + .btn, +.btn-switch-success > input[type="checkbox"] + .btn > em { + border-color: #4bd396 !important; +} +.btn-switch-success > input[type="checkbox"]:checked + .btn { + background-color: #4bd396 !important; +} +.btn-switch-info > input[type="checkbox"] + .btn, +.btn-switch-info > input[type="checkbox"]:checked + .btn > em { + color: #3ac9d6 !important; +} +.btn-switch-info > input[type="checkbox"] + .btn, +.btn-switch-info > input[type="checkbox"] + .btn > em { + border-color: #3ac9d6 !important; +} +.btn-switch-info > input[type="checkbox"]:checked + .btn { + background-color: #3ac9d6 !important; +} +.btn-switch-warning > input[type="checkbox"] + .btn, +.btn-switch-warning > input[type="checkbox"]:checked + .btn > em { + color: #f9c851 !important; +} +.btn-switch-warning > input[type="checkbox"] + .btn, +.btn-switch-warning > input[type="checkbox"] + .btn > em { + border-color: #f9c851 !important; +} +.btn-switch-warning > input[type="checkbox"]:checked + .btn { + background-color: #f9c851 !important; +} +.btn-switch-danger > input[type="checkbox"] + .btn, +.btn-switch-danger > input[type="checkbox"]:checked + .btn > em { + color: #f5707a !important; +} +.btn-switch-danger > input[type="checkbox"] + .btn, +.btn-switch-danger > input[type="checkbox"] + .btn > em { + border-color: #f5707a !important; +} +.btn-switch-danger > input[type="checkbox"]:checked + .btn { + background-color: #f5707a !important; +} +.btn-switch-inverse > input[type="checkbox"] + .btn, +.btn-switch-inverse > input[type="checkbox"]:checked + .btn > em { + color: #3b3e47 !important; +} +.btn-switch-inverse > input[type="checkbox"] + .btn, +.btn-switch-inverse > input[type="checkbox"] + .btn > em { + border-color: #3b3e47 !important; +} +.btn-switch-inverse > input[type="checkbox"]:checked + .btn { + background-color: #3b3e47 !important; +} +.btn-switch-pink > input[type="checkbox"] + .btn, +.btn-switch-pink > input[type="checkbox"]:checked + .btn > em { + color: #f06292 !important; +} +.btn-switch-pink > input[type="checkbox"] + .btn, +.btn-switch-pink > input[type="checkbox"] + .btn > em { + border-color: #f06292 !important; +} +.btn-switch-pink > input[type="checkbox"]:checked + .btn { + background-color: #f06292 !important; +} +.btn-switch-purple > input[type="checkbox"] + .btn, +.btn-switch-purple > input[type="checkbox"]:checked + .btn > em { + color: #6b5fb5 !important; +} +.btn-switch-purple > input[type="checkbox"] + .btn, +.btn-switch-purple > input[type="checkbox"] + .btn > em { + border-color: #6b5fb5 !important; +} +.btn-switch-purple > input[type="checkbox"]:checked + .btn { + background-color: #6b5fb5 !important; +} +.btn-switch-orange > input[type="checkbox"] + .btn, +.btn-switch-orange > input[type="checkbox"]:checked + .btn > em { + color: #ff9800 !important; +} +.btn-switch-orange > input[type="checkbox"] + .btn, +.btn-switch-orange > input[type="checkbox"] + .btn > em { + border-color: #ff9800 !important; +} +.btn-switch-orange > input[type="checkbox"]:checked + .btn { + background-color: #ff9800 !important; +} +.btn-switch-brown > input[type="checkbox"] + .btn, +.btn-switch-brown > input[type="checkbox"]:checked + .btn > em { + color: #8d6e63 !important; +} +.btn-switch-brown > input[type="checkbox"] + .btn, +.btn-switch-brown > input[type="checkbox"] + .btn > em { + border-color: #8d6e63 !important; +} +.btn-switch-brown > input[type="checkbox"]:checked + .btn { + background-color: #8d6e63 !important; +} +.btn-switch-teal > input[type="checkbox"] + .btn, +.btn-switch-teal > input[type="checkbox"]:checked + .btn > em { + color: #26a69a !important; +} +.btn-switch-teal > input[type="checkbox"] + .btn, +.btn-switch-teal > input[type="checkbox"] + .btn > em { + border-color: #26a69a !important; +} +.btn-switch-teal > input[type="checkbox"]:checked + .btn { + background-color: #26a69a !important; +} +/* Multiple select */ +.search-input { + margin-bottom: 10px; +} +.ms-container { + background: transparent url('../plugins/multiselect/img/multiple-arrow.png') no-repeat 50% 50%; + width: 100% !important; + max-width: 360px !important; +} +.ms-container .ms-list { + box-shadow: none; + border: 1px solid rgba(49, 58, 70, 0.2); +} +.ms-container .ms-list.ms-focus { + box-shadow: none; + border: 1px solid rgba(49, 58, 70, 0.4); +} +.ms-container .ms-selectable { + box-shadow: none; + outline: none !important; +} +.ms-container .ms-selectable li.ms-elem-selectable { + border: none; + padding: 5px 10px; +} +.ms-container .ms-selectable li.ms-hover { + background-color: #7fc1fc; +} +.ms-container .ms-selection li.ms-elem-selection { + border: none; + padding: 5px 10px; +} +.ms-container .ms-selection li.ms-hover { + background-color: #7fc1fc; +} +/* Select 2 */ +.select2-container { + width: 100% !important; +} +.select2-container .select2-selection--single { + border: 1px solid #E3E3E3 !important; + height: 38px !important; +} +.select2-container .select2-selection--single .select2-selection__rendered { + line-height: 36px !important; + padding-left: 12px !important; +} +.select2-container .select2-selection--single .select2-selection__arrow { + height: 34px; + width: 34px; + right: 3px; +} +.select2-container .select2-selection--single .select2-selection__arrow b { + border-color: #999 transparent transparent transparent; + border-width: 6px 6px 0 6px; +} +.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #999 transparent !important; + border-width: 0 6px 6px 6px !important; +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #7fc1fc; +} +.select2-results__option { + padding: 6px 12px; +} +.select2-dropdown { + border: 1px solid #e3e3e3 !important; + padding-top: 5px; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); +} +.select2-search input { + border: 1px solid #e3e3e3 !important; +} +.select2-container .select2-selection--multiple { + min-height: 38px !important; + border: 1px solid #e3e3e3 !important; +} +.select2-container .select2-selection--multiple .select2-selection__rendered { + padding: 2px 10px; +} +.select2-container .select2-selection--multiple .select2-search__field { + margin-top: 7px; + border: 0 !important; +} +.select2-container .select2-selection--multiple .select2-selection__choice { + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 1px; + padding: 0 7px; +} +/* AUTOCOMPLETE */ +.autocomplete-suggestions { + border: 1px solid #f9f9f9; + background: #ffffff; + cursor: default; + overflow: auto; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); +} +.autocomplete-suggestion { + padding: 2px 5px; + white-space: nowrap; + overflow: hidden; +} +.autocomplete-no-suggestion { + padding: 2px 5px; +} +.autocomplete-selected { + background: rgba(152, 166, 173, 0.3); + cursor: pointer; +} +.autocomplete-suggestions strong { + font-weight: bold; + color: #313a46; +} +.autocomplete-group { + padding: 2px 5px; +} +.autocomplete-group strong { + font-weight: bold; + font-size: 16px; + color: #313a46; + display: block; +} +/* Bootstrap-select */ +.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) { + width: 100% !important; +} +.bootstrap-select .dropdown-toggle:focus { + outline: none !important; +} +.bootstrap-select .glyphicon { + padding-right: 6px; +} +/* Bootstrap filestyle */ +.icon-span-filestyle { + padding-right: 5px; +} +/* Bootstrap-touchSpin */ +.bootstrap-touchspin .input-group-btn-vertical .btn { + padding: 9px 12px; +} +.bootstrap-touchspin .input-group-btn-vertical i { + top: 4px; + left: 8px; +} +/* Form validation */ +.parsley-error { + border-color: #f5707a !important; +} +.parsley-errors-list { + display: none; + margin: 0; + padding: 0; +} +.parsley-errors-list.filled { + display: block; +} +.parsley-errors-list > li { + font-size: 12px; + list-style: none; + color: #f5707a; + margin-top: 5px; +} +.bootstrap-timepicker-widget table td input { + border: 1px solid rgba(49, 58, 70, 0.3); + width: 35px; +} +.datepicker-dropdown { + padding: 10px !important; +} +.datepicker td, +.datepicker th { + width: 30px; + height: 30px; +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #7fc1fc !important; + color: #ffffff !important; + background-image: none !important; + text-shadow: none !important; +} +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #4bd396 !important; + color: #ffffff !important; + background-image: none !important; +} +.datepicker-inline { + border: 2px solid rgba(49, 58, 70, 0.1); +} +.daterangepicker td.active, +.daterangepicker td.active:hover { + background-color: #7fc1fc; +} +.daterangepicker .input-mini.active { + border: 1px solid rgba(49, 58, 70, 0.3); +} +.daterangepicker .ranges li { + border-radius: 2px; + color: #313a46; + font-weight: 600; + font-size: 12px; + font-family: 'Hind Madurai', sans-serif; +} +.daterangepicker select.hourselect, +.daterangepicker select.minuteselect, +.daterangepicker select.secondselect, +.daterangepicker select.ampmselect { + border: 1px solid rgba(49, 58, 70, 0.3); + padding: 2px; + width: 60px; +} +.daterangepicker .ranges li.active, +.daterangepicker .ranges li:hover { + background-color: #7fc1fc; + border: 1px solid #7fc1fc; + color: #ffffff; +} +/* Wizard */ +.wizard > .content { + background: #ffffff; + min-height: 240px; + padding: 20px !important; + border: 1px solid #f3f3f3; + margin-top: 10px !important; +} +.wizard > .content > .body { + padding: 0px; + position: relative; + width: 100%; +} +.wizard > .content > .body input { + border: 1px solid #e9e9e9; +} +.wizard > .content > .body ul > li { + display: block; + line-height: 30px; +} +.wizard > .content > .body label.error { + color: #f5707a; + margin-left: 0; + margin-top: 5px; + font-size: 12px; +} +.wizard > .content > .body label { + display: inline-block; + margin-top: 10px; +} +.wizard > .steps a { + font-size: 16px; + text-align: center; + font-family: 'Hind Madurai', sans-serif; +} +.wizard > .steps .number { + font-size: 86px; + line-height: 86px; + font-family: 'Hind Madurai', sans-serif; + position: absolute; + left: 10px; + top: -14px; + opacity: 0.1; +} +.wizard > .steps .disabled a { + background: #f3f3f3; + color: #3c4655 !important; + cursor: default; + border: 1px solid #e6e6e6; +} +.wizard > .steps .disabled a:hover { + background: #e6e6e6; + border: 1px solid #dadada; +} +.wizard > .steps .disabled a:active { + background: #e6e6e6; + border: 1px solid #dadada; +} +.wizard > .steps .current a { + background: #7fc1fc; +} +.wizard > .steps .current a:hover { + background: #7fc1fc; +} +.wizard > .steps .current a:hover .number { + color: #ffffff; + opacity: 0.4; +} +.wizard > .steps .current a:active { + background: #7fc1fc; +} +.wizard > .steps .current a:active .number { + color: #ffffff; + opacity: 0.4; +} +.wizard > .steps .current a .number { + color: #ffffff; + opacity: 0.4; +} +.wizard > .steps .done a { + background: #f3f3f3 !important; + color: #3c4655 !important; +} +.wizard > .steps a, +.wizard > .steps a:hover, +.wizard > .steps a:active, +.wizard > .content { + border-radius: 2px; + position: relative; +} +.wizard > .actions { + margin-top: 15px !important; +} +.wizard > .actions a { + background: #7fc1fc; + border-radius: 2px !important; + color: #ffffff; +} +.wizard > .actions a:hover { + background: #349dfa; + color: #ffffff; +} +.wizard > .actions a:active { + background: #349dfa; + color: #ffffff; +} +.wizard > .actions .disabled a { + background: #ffffff; + color: #313a46; + cursor: default; + border: 1px solid #eaeaea; +} +.wizard > .actions .disabled a:hover { + background: #f3f3f3; + color: #313a46; + cursor: default; + border: 1px solid #eaeaea; +} +.wizard > .actions .disabled a:active { + background: #f3f3f3; + color: #313a46; + cursor: default; + border: 1px solid #eaeaea; +} +.wizard.vertical > .content { + margin-top: 0px !important; +} +@media (max-width: 560px) { + .wizard.vertical > .steps, + .wizard.vertical > .content { + width: 100%; + } +} +/* Summernote */ +.note-editor { + position: relative; +} +.note-editor .btn-default { + background-color: transparent; + border-color: transparent !important; +} +.note-editor .btn-group-sm > .btn, +.note-editor .btn-sm { + padding: 8px 12px !important; +} +.note-editor .note-toolbar { + background-color: #f3f3f3; + border-bottom: 1px solid #eeeeee; + margin: 0; +} +.note-editor .note-statusbar { + background-color: #ffffff; +} +.note-editor .note-statusbar .note-resizebar { + border-top: none; + height: 15px; + padding-top: 3px; +} +.note-editor.note-frame { + border: 1px solid #eeeeee !important; +} +.note-popover .popover .popover-content { + padding: 5px 0 10px 5px; +} +.note-popover .btn-default { + background-color: transparent; + border-color: transparent !important; +} +.note-popover .btn-group-sm > .btn, +.note-popover .btn-sm { + padding: 8px 12px !important; +} +.note-toolbar { + padding: 5px 0 10px 5px; +} +/* Wysiwig css */ +.mce-panel { + border: 1px solid #f3f3f3 !important; + background-color: #f3f3f3 !important; +} +.mce-menu { + background-color: #ffffff !important; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); +} +.mce-menubar .mce-menubtn:hover, +.mce-menubar .mce-menubtn.mce-active, +.mce-menubar .mce-menubtn:focus { + border-color: #f3f3f3 !important; +} +.mce-menu-item:hover, +.mce-menu-item.mce-selected, +.mce-menu-item:focus, +.mce-menu-item-normal.mce-active, +.mce-primary { + background-color: #7fc1fc !important; +} +.mce-window-head .mce-title { + font-family: 'Hind Madurai', sans-serif; +} +.mce-window { + padding: 20px !important; +} +.mce-window-head { + padding-bottom: 20px !important; + border-bottom: 0 !important; +} +/* == Form Uploads == */ +.jFiler-input-dragDrop { + width: 100%; + background-color: #fafafa; +} +.jFiler-theme-default .jFiler-input { + width: 100%; +} +.jFiler-theme-default .jFiler-input-button { + background-color: #7fc1fc; + background-image: none !important; + color: #ffffff; + border: 1px solid #7fc1fc !important; +} +/* ============= + Tables +============= */ +th { + font-family: 'Hind Madurai', sans-serif; + font-weight: 600; +} +.table-centered td { + vertical-align: middle !important; +} +/* Data table */ +table.dataTable { + margin-top: 10px !important; + margin-bottom: 18px !important; +} +.table-bordered.dataTable > thead > tr > td, +.table-bordered.dataTable > thead > tr > th { + border-bottom-width: 1px !important; +} +/* Fixed Header table */ +.fixedHeader-floating { + top: 70px !important; +} +/* Key Table border */ +table.dataTable th.focus, +table.dataTable td.focus { + outline: 2px solid #7fc1fc !important; + outline-offset: -1px; + background-color: #7fc1fc; + color: #ffffff; +} +/* Responsive data table */ +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { + box-shadow: 0 0 3px rgba(67, 89, 102, 0.2); + background-color: #4bd396; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { + background-color: #f5707a; +} +table.dataTable > tbody > tr.child span.dtr-title { + font-family: 'Hind Madurai', sans-serif; +} +/* ColVid Tables */ +div.ColVis { + float: none; + margin-right: 30px; +} +button.ColVis_Button, +.ColVis_Button:hover { + float: none; + border-radius: 3px; + outline: none !important; + background: none; + box-shadow: none; + color: #ffffff !important; + background-color: #7fc1fc !important; + border: 1px solid #7fc1fc !important; +} +.dataTables_length { + float: left; +} +div.ColVis_collectionBackground { + background-color: transparent; +} +ul.ColVis_collection { + padding: 10px 0 0 0; + background-color: #ffffff; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + border: none; +} +ul.ColVis_collection li { + background: transparent !important; + padding: 3px 10px !important; + border: none !important; + box-shadow: none !important; +} +#datatable-colvid_info { + float: left; +} +/* Responsive Table */ +.table-rep-plugin .dropdown-menu li.checkbox-row { + padding: 2px 15px !important; +} +.table-rep-plugin .table-responsive { + border: none !important; +} +.table-rep-plugin tbody th { + font-size: 14px; + font-weight: normal; +} +.table-rep-plugin .checkbox-row { + padding-left: 40px; +} +.table-rep-plugin .checkbox-row label { + display: inline-block; + padding-left: 5px; + position: relative; +} +.table-rep-plugin .checkbox-row label::before { + -o-transition: 0.3s ease-in-out; + -webkit-transition: 0.3s ease-in-out; + background-color: #ffffff; + border-radius: 3px; + border: 1px solid #98a6ad; + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + position: absolute; + transition: 0.3s ease-in-out; + width: 17px; + outline: none !important; +} +.table-rep-plugin .checkbox-row label::after { + color: #f3f3f3; + display: inline-block; + font-size: 11px; + height: 16px; + left: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + position: absolute; + top: -1px; + width: 16px; +} +.table-rep-plugin .checkbox-row input[type="checkbox"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:disabled + label { + opacity: 0.65; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:focus + label::before { + outline-offset: -2px; + outline: none; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:checked + label::after { + content: "\f00c"; + font-family: 'FontAwesome'; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:disabled + label::before { + background-color: #eeeeee; + cursor: not-allowed; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:checked + label::before { + background-color: #ffffff; + border-color: #4bd396; +} +.table-rep-plugin .checkbox-row input[type="checkbox"]:checked + label::after { + color: #4bd396; +} +.table-rep-plugin table.focus-on tbody tr.focused th, +.table-rep-plugin table.focus-on tbody tr.focused td, +.table-rep-plugin .sticky-table-header { + background-color: #4bd396; + color: #ffffff; + border-color: #4bd396; +} +.table-rep-plugin .sticky-table-header.fixed-solution { + top: 70px !important; +} +/* Data table editable */ +.add-edit-table td, +.add-edit-table th { + vertical-align: middle !important; +} +.add-edit-table td { + border: 0 !important; +} +#datatable-editable .actions a { + padding: 5px; +} +#datatable-editable .form-control { + background-color: #ffffff; + width: 100%; +} +#datatable-editable .fa-trash-o { + color: #f05050; +} +#datatable-editable .fa-times { + color: #f05050; +} +#datatable-editable .fa-pencil { + color: #29b6f6; +} +#datatable-editable .fa-save { + color: #33b86c; +} +#datatable td { + font-weight: normal; +} +.modal-block { + background: transparent; + margin: 40px auto; + max-width: 600px; + padding: 0; + position: relative; + text-align: left; +} +.dt-buttons { + float: left; +} +div#datatable-buttons_info { + float: left; +} +table.dataTable thead th { + position: relative; + background-image: none !important; +} +table.dataTable thead th.sorting:after, +table.dataTable thead th.sorting_asc:after, +table.dataTable thead th.sorting_desc:after { + position: absolute; + top: 7px; + right: 8px; + display: block; + font-family: FontAwesome; +} +table.dataTable thead th.sorting:after { + content: "\f0dc"; + padding-top: 0.12em; +} +table.dataTable thead th.sorting_asc:after { + content: "\f0de"; +} +table.dataTable thead th.sorting_desc:after { + content: "\f0dd"; +} +.DTFC_LeftBodyWrapper table thead th.sorting:after, +.dataTables_scrollBody table thead th.sorting:after, +.DTFC_RightBodyLiner table thead th.sorting:after, +.DTFC_LeftBodyWrapper table thead th.sorting_asc:after, +.dataTables_scrollBody table thead th.sorting_asc:after, +.DTFC_RightBodyLiner table thead th.sorting_asc:after, +.DTFC_LeftBodyWrapper table thead th.sorting_desc:after, +.dataTables_scrollBody table thead th.sorting_desc:after, +.DTFC_RightBodyLiner table thead th.sorting_desc:after { + display: none !important; +} +/* Tablesaw Tables */ +.tablesaw thead { + background: rgba(243, 243, 243, 0.7); + background-image: none; + border: none; +} +.tablesaw thead th { + text-shadow: none; + letter-spacing: 0.06em; +} +.tablesaw thead tr:first-child th { + font-weight: 600; + border: none; + font-family: 'Hind Madurai', sans-serif; +} +.tablesaw td { + border-top: 1px solid rgba(243, 243, 243, 0.7) !important; +} +.tablesaw td, +.tablesaw tbody th { + font-size: inherit; + line-height: inherit; + padding: 10px !important; +} +.tablesaw-stack tbody tr, +.tablesaw tbody tr { + border-bottom: none; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after, +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + font-family: FontAwesome; + font-size: 10px; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after { + content: "\f176"; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + content: "\f175"; +} +.tablesaw-bar .btn-select.btn-small:after, +.tablesaw-bar .btn-select.btn-micro:after { + font-size: 8px; + padding-right: 10px; +} +.tablesaw-swipe .tablesaw-cell-persist { + box-shadow: none; +} +.tablesaw-enhanced .tablesaw-bar .btn { + text-shadow: none; + background-image: none; +} +.tablesaw-enhanced .tablesaw-bar .btn.btn-select:hover { + background: #ffffff; +} +.tablesaw-enhanced .tablesaw-bar .btn:hover, +.tablesaw-enhanced .tablesaw-bar .btn:focus, +.tablesaw-enhanced .tablesaw-bar .btn:active { + color: #7fc1fc !important; + background-color: #f3f3f3; + outline: none !important; + box-shadow: none !important; + background-image: none; +} +/* Table colored */ +.table-colored thead th { + color: #ffffff; +} +.table-colored.table-custom thead th { + background-color: #7fc1fc; +} +.table-colored.table-primary thead th { + background-color: #188ae2; +} +.table-colored.table-success thead th { + background-color: #4bd396; +} +.table-colored.table-info thead th { + background-color: #3ac9d6; +} +.table-colored.table-warning thead th { + background-color: #f9c851; +} +.table-colored.table-danger thead th { + background-color: #f5707a; +} +.table-colored.table-inverse thead th { + background-color: #3b3e47; +} +.table-colored.table-pink thead th { + background-color: #f06292; +} +.table-colored.table-purple thead th { + background-color: #6b5fb5; +} +.table-colored.table-brown thead th { + background-color: #8d6e63; +} +.table-colored.table-orange thead th { + background-color: #ff9800; +} +.table-colored.table-teal thead th { + background-color: #26a69a; +} +/* Table colored-bordered */ +.table-colored-bordered thead th { + border-bottom: 0 !important; + color: #ffffff; +} +.table-colored-bordered.table-bordered-primary { + border: 2px solid #188ae2; +} +.table-colored-bordered.table-bordered-primary thead th { + background-color: #188ae2; +} +.table-colored-bordered.table-bordered-success { + border: 2px solid #4bd396; +} +.table-colored-bordered.table-bordered-success thead th { + background-color: #4bd396; +} +.table-colored-bordered.table-bordered-info { + border: 2px solid #3ac9d6; +} +.table-colored-bordered.table-bordered-info thead th { + background-color: #3ac9d6; +} +.table-colored-bordered.table-bordered-custom { + border: 2px solid #7fc1fc; +} +.table-colored-bordered.table-bordered-custom thead th { + background-color: #7fc1fc; +} +.table-colored-bordered.table-bordered-warning { + border: 2px solid #f9c851; +} +.table-colored-bordered.table-bordered-warning thead th { + background-color: #f9c851; +} +.table-colored-bordered.table-bordered-danger { + border: 2px solid #f5707a; +} +.table-colored-bordered.table-bordered-danger thead th { + background-color: #f5707a; +} +.table-colored-bordered.table-bordered-inverse { + border: 2px solid #3b3e47; +} +.table-colored-bordered.table-bordered-inverse thead th { + background-color: #3b3e47; +} +.table-colored-bordered.table-bordered-pink { + border: 2px solid #f06292; +} +.table-colored-bordered.table-bordered-pink thead th { + background-color: #f06292; +} +.table-colored-bordered.table-bordered-purple { + border: 2px solid #6b5fb5; +} +.table-colored-bordered.table-bordered-purple thead th { + background-color: #6b5fb5; +} +.table-colored-bordered.table-bordered-orange { + border: 2px solid #ff9800; +} +.table-colored-bordered.table-bordered-orange thead th { + background-color: #ff9800; +} +.table-colored-bordered.table-bordered-brown { + border: 2px solid #8d6e63; +} +.table-colored-bordered.table-bordered-brown thead th { + background-color: #8d6e63; +} +.table-colored-bordered.table-bordered-teal { + border: 2px solid #26a69a; +} +.table-colored-bordered.table-bordered-teal thead th { + background-color: #26a69a; +} +/* Table full colored */ +.table-colored-full { + color: #ffffff; +} +.table-colored-full thead th { + border-bottom: 0 !important; + padding: 10px !important; +} +.table-colored-full tbody td, +.table-colored-full tbody th { + border: 0 !important; +} +.table-colored-full.table-full-primary { + background-color: rgba(24, 138, 226, 0.8); +} +.table-colored-full.table-full-primary thead th { + background-color: #188ae2; +} +.table-colored-full.table-full-primary tbody tr:hover { + background-color: #188ae2; +} +.table-colored-full.table-full-success { + background-color: rgba(75, 211, 150, 0.8); +} +.table-colored-full.table-full-success thead th { + background-color: #4bd396; +} +.table-colored-full.table-full-success tbody tr:hover { + background-color: #4bd396; +} +.table-colored-full.table-full-info { + background-color: rgba(58, 201, 214, 0.8); +} +.table-colored-full.table-full-info thead th { + background-color: #3ac9d6; +} +.table-colored-full.table-full-info tbody tr:hover { + background-color: #3ac9d6; +} +.table-colored-full.table-full-custom { + background-color: rgba(127, 193, 252, 0.8); +} +.table-colored-full.table-full-custom thead th { + background-color: #7fc1fc; +} +.table-colored-full.table-full-custom tbody tr:hover { + background-color: #7fc1fc; +} +.table-colored-full.table-full-warning { + background-color: rgba(249, 200, 81, 0.8); +} +.table-colored-full.table-full-warning thead th { + background-color: #f9c851; +} +.table-colored-full.table-full-warning tbody tr:hover { + background-color: #f9c851; +} +.table-colored-full.table-full-danger { + background-color: rgba(245, 112, 122, 0.8); +} +.table-colored-full.table-full-danger thead th { + background-color: #f5707a; +} +.table-colored-full.table-full-danger tbody tr:hover { + background-color: #f5707a; +} +.table-colored-full.table-full-inverse { + background-color: rgba(59, 62, 71, 0.8); +} +.table-colored-full.table-full-inverse thead th { + background-color: #3b3e47; +} +.table-colored-full.table-full-inverse tbody tr:hover { + background-color: #3b3e47; +} +.table-colored-full.table-full-pink { + background-color: rgba(240, 98, 146, 0.8); +} +.table-colored-full.table-full-pink thead th { + background-color: #f06292; +} +.table-colored-full.table-full-pink tbody tr:hover { + background-color: #f06292; +} +.table-colored-full.table-full-purple { + background-color: rgba(107, 95, 181, 0.8); +} +.table-colored-full.table-full-purple thead th { + background-color: #6b5fb5; +} +.table-colored-full.table-full-purple tbody tr:hover { + background-color: #6b5fb5; +} +.table-colored-full.table-full-brown { + background-color: rgba(141, 110, 99, 0.8); +} +.table-colored-full.table-full-brown thead th { + background-color: #8d6e63; +} +.table-colored-full.table-full-brown tbody tr:hover { + background-color: #8d6e63; +} +.table-colored-full.table-full-orange { + background-color: rgba(255, 152, 0, 0.8); +} +.table-colored-full.table-full-orange thead th { + background-color: #ff9800; +} +.table-colored-full.table-full-orange tbody tr:hover { + background-color: #ff9800; +} +.table-colored-full.table-full-teal { + background-color: rgba(38, 166, 154, 0.8); +} +.table-colored-full.table-full-teal thead th { + background-color: #26a69a; +} +.table-colored-full.table-full-teal tbody tr:hover { + background-color: #26a69a; +} +/* ===================================== + CHARTS + ===================================== */ +.chart-detail-list li { + margin: 0 10px; +} +/* Flot chart */ +#flotTip { + padding: 8px 12px; + background-color: #313a46 !important; + z-index: 100; + color: #ffffff; + opacity: 0.9; + font-size: 13px; + -webkit-border-radius: 3px !important; + -moz-border-radius: 3px !important; + border-radius: 3px !important; +} +.legend tr { + height: 20px; + font-family: 'Hind Madurai', sans-serif; +} +.legendLabel { + padding-left: 5px !important; + line-height: 10px; + padding-right: 10px; +} +/* Morris chart */ +.morris-hover.morris-default-style { + border-radius: 5px; + padding: 10px 12px; +} +/* Chartist chart */ +.ct-golden-section:before { + float: none; +} +.ct-chart { + max-height: 300px; +} +.ct-chart .ct-label { + fill: #a3afb7; + color: #a3afb7; + font-size: 12px; + line-height: 1; +} +.ct-grid { + stroke: rgba(49, 58, 70, 0.1); +} +.ct-chart.simple-pie-chart-chartist .ct-label { + color: #ffffff; + fill: #ffffff; + font-size: 16px; +} +.ct-chart .ct-series.ct-series-a .ct-bar, +.ct-chart .ct-series.ct-series-a .ct-line, +.ct-chart .ct-series.ct-series-a .ct-point, +.ct-chart .ct-series.ct-series-a .ct-slice-donut { + stroke: #3ac9d6; +} +.ct-chart .ct-series.ct-series-b .ct-bar, +.ct-chart .ct-series.ct-series-b .ct-line, +.ct-chart .ct-series.ct-series-b .ct-point, +.ct-chart .ct-series.ct-series-b .ct-slice-donut { + stroke: #f5707a; +} +.ct-chart .ct-series.ct-series-c .ct-bar, +.ct-chart .ct-series.ct-series-c .ct-line, +.ct-chart .ct-series.ct-series-c .ct-point, +.ct-chart .ct-series.ct-series-c .ct-slice-donut { + stroke: #4bd396; +} +.ct-chart .ct-series.ct-series-d .ct-bar, +.ct-chart .ct-series.ct-series-d .ct-line, +.ct-chart .ct-series.ct-series-d .ct-point, +.ct-chart .ct-series.ct-series-d .ct-slice-donut { + stroke: #ff9800; +} +.ct-chart .ct-series.ct-series-e .ct-bar, +.ct-chart .ct-series.ct-series-e .ct-line, +.ct-chart .ct-series.ct-series-e .ct-point, +.ct-chart .ct-series.ct-series-e .ct-slice-donut { + stroke: #313a46; +} +.ct-chart .ct-series.ct-series-f .ct-bar, +.ct-chart .ct-series.ct-series-f .ct-line, +.ct-chart .ct-series.ct-series-f .ct-point, +.ct-chart .ct-series.ct-series-f .ct-slice-donut { + stroke: #188ae2; +} +.ct-chart .ct-series.ct-series-g .ct-bar, +.ct-chart .ct-series.ct-series-g .ct-line, +.ct-chart .ct-series.ct-series-g .ct-point, +.ct-chart .ct-series.ct-series-g .ct-slice-donut { + stroke: #8d6e63; +} +.ct-series-a .ct-area, +.ct-series-a .ct-slice-pie { + fill: #3ac9d6; +} +.ct-series-b .ct-area, +.ct-series-b .ct-slice-pie { + fill: #f5707a; +} +.ct-series-c .ct-area, +.ct-series-c .ct-slice-pie { + fill: #4bd396; +} +.ct-series-d .ct-area, +.ct-series-d .ct-slice-pie { + fill: #ff9800; +} +.chartist-tooltip { + position: absolute; + display: inline-block; + opacity: 0; + min-width: 10px; + padding: 2px 10px; + border-radius: 3px; + background: #313a46; + color: #ffffff; + text-align: center; + pointer-events: none; + z-index: 1; + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + -o-transition: opacity .2s linear; + transition: opacity .2s linear; +} +.chartist-tooltip.tooltip-show { + opacity: 1; +} +/* C3 chart */ +.c3 svg { + max-width: 100%; +} +.c3-tooltip td > span { + background: #313a46; +} +.c3-tooltip td { + border-left: none; +} +.c3-tooltip { + box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12); + opacity: 1; +} +.c3-chart-arcs-title { + font-size: 18px; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +.c3-tooltip tr { + border: none !important; +} +.c3-tooltip th { + background-color: #313a46; +} +.c3-tooltip .value { + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +/* Sparkline chart */ +.jqstooltip { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: auto !important; + height: auto !important; + background-color: #313a46 !important; + padding: 5px 10px !important; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + border-color: #313a46 !important; +} +.jqsfield { + font-size: 12px !important; + line-height: 18px !important; +} +/* Google Chart*/ +.google-chart .chart { + display: inline-block; +} diff --git a/assets/css/core.css b/assets/css/core.css new file mode 100644 index 0000000..da4afeb --- /dev/null +++ b/assets/css/core.css @@ -0,0 +1,948 @@ +@import url(https://fonts.googleapis.com/css?family=Varela+Round); +@import 'https://fonts.googleapis.com/css?family=Hind+Madurai:600,700'; +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Core +*/ +/* ============= + == Core List== + + - Common + - Helper classes + - Extra + - Bootstrap Custom + - Waves effect + - Print (Invoice css) + - Demo Css (Demo purpose only) + +============= */ +/* ============= + Common +============= */ +body { + font-family: 'Varela Round', sans-serif; + margin: 0; + padding-bottom: 60px; + overflow-x: hidden; + color: #797979; +} +html { + position: relative; + min-height: 100%; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + color: #505458; + font-family: 'Hind Madurai', sans-serif; + margin: 10px 0; +} +h5 { + font-size: 15px; +} +p { + line-height: 1.6; +} +* { + outline: none !important; +} +b, +strong { + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; +} +a:hover { + outline: 0; + text-decoration: none; +} +a:active { + outline: 0; + text-decoration: none; +} +a:focus { + outline: 0; + text-decoration: none; +} +.container { + width: auto; +} +.container-alt { + margin-left: auto; + margin-right: auto; + padding-left: 15px; + padding-right: 15px; +} +/* Footer */ +.footer { + border-top: 1px solid rgba(152, 166, 173, 0.2); + bottom: 0; + text-align: left !important; + padding: 19px 30px 20px; + position: absolute; + right: 0; + left: 225px; +} +#wrapper { + height: 100%; + overflow: hidden; + width: 100%; +} +/* ============= + Helper classes +============= */ +.p-0 { + padding: 0 !important; +} +.p-20 { + padding: 20px !important; +} +.p-30 { + padding: 30px !important; +} +.p-l-0 { + padding-left: 0 !important; +} +.p-r-0 { + padding-right: 0 !important; +} +.p-t-0 { + padding-top: 0 !important; +} +.p-b-0 { + padding-bottom: 0 !important; +} +.p-t-10 { + padding-top: 10px !important; +} +.p-b-10 { + padding-bottom: 10px !important; +} +.p-l-r-10 { + padding-left: 10px; + padding-right: 10px; +} +.m-0 { + margin: 0 !important; +} +.m-r-5 { + margin-right: 5px !important; +} +.m-r-10 { + margin-right: 10px !important; +} +.m-r-15 { + margin-right: 15px !important; +} +.m-l-5 { + margin-left: 5px !important; +} +.m-l-10 { + margin-left: 10px !important; +} +.m-l-15 { + margin-left: 15px !important; +} +.m-t-5 { + margin-top: 5px !important; +} +.m-t-0 { + margin-top: 0 !important; +} +.m-t-10 { + margin-top: 10px !important; +} +.m-t-15 { + margin-top: 15px !important; +} +.m-t-20 { + margin-top: 20px !important; +} +.m-t-30 { + margin-top: 30px !important; +} +.m-t-40 { + margin-top: 40px !important; +} +.m-t-50 { + margin-top: 50px !important; +} +.m-b-0 { + margin-bottom: 0 !important; +} +.m-b-5 { + margin-bottom: 5px !important; +} +.m-b-10 { + margin-bottom: 10px !important; +} +.m-b-15 { + margin-bottom: 15px !important; +} +.m-b-20 { + margin-bottom: 20px !important; +} +.m-b-25 { + margin-bottom: 25px !important; +} +.m-b-30 { + margin-bottom: 30px !important; +} +.w-xs { + min-width: 80px; +} +.w-sm { + min-width: 95px; +} +.w-md { + min-width: 110px; +} +.w-lg { + min-width: 140px; +} +.center-page { + float: none !important; + margin: 0 auto !important; +} +.text-overflow { + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; +} +.font-secondary { + font-family: 'Hind Madurai', sans-serif; +} +.font-600 { + font-weight: 600; +} +.font-normal { + font-weight: normal; +} +.font-light { + font-weight: 300; +} +.font-13 { + font-size: 13px !important; +} +.wrapper-md { + padding: 20px; +} +.pull-in { + margin-left: -20px; + margin-right: -20px; +} +.b-0 { + border: none !important; +} +.vertical-middle { + vertical-align: middle; +} +.bx-shadow { + -moz-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1); +} +.bx-shadow-none { + box-shadow: none !important; +} +.mx-box { + max-height: 380px; + min-height: 380px; +} +.thumb-sm { + height: 32px; + width: 32px; +} +.thumb-md { + height: 48px; + width: 48px; +} +.thumb-lg { + height: 88px; + width: 88px; +} +.thumb-xl { + height: 120px; + width: 120px; +} +.bg-transparent { + background-color: transparent !important; +} +.slimScrollDiv { + height: auto !important; +} +/* ============= + Extras +============= */ +/* Table type box */ +.table-box { + display: table; + height: 100%; + width: 100%; +} +.table-box .table-detail { + display: table-cell; + vertical-align: middle; +} +/* Card Box */ +.card-box { + padding: 20px; + border: 2px solid #f3f3f3; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + background-clip: padding-box; + margin-bottom: 20px; + background-color: #ffffff; +} +/* Search box */ +.search-box { + position: relative; +} +.search-box .btn-search { + position: absolute; + top: 3px; + right: 3px; + background-color: transparent !important; + border: none !important; + font-size: 16px; + box-shadow: none !important; + outline: none !important; + color: #98a6ad; +} +.search-box .form-control { + border: 2px solid rgba(152, 166, 173, 0.5); + height: 38px; + border-radius: 30px; + padding: 8px 45px 8px 20px; +} +.search-box .form-control:focus { + border-width: 2px !important; +} +/* ============= + Bootstrap-custom +============= */ +.row { + margin-right: -10px; + margin-left: -10px; +} +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + padding-left: 10px; + padding-right: 10px; +} +.breadcrumb { + background-color: transparent; + margin-bottom: 15px; + padding-top: 10px; + padding-left: 0; +} +/* Dropdown */ +.dropdown-menu { + padding: 4px 0; + transition: all 300ms ease; + -moz-transition: all 300ms ease; + -webkit-transition: all 300ms ease; + -o-transition: all 300ms ease; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + border: 1px solid rgba(152, 166, 173, 0.15); +} +.dropdown-menu > li { + padding: 0 4px !important; +} +.dropdown-menu > li > a { + padding: 6px 20px; +} +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:hover { + background-color: #f3f3f3 !important; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: rgba(152, 166, 173, 0.1); + color: #313a46; +} +.dropdown-lg { + width: 260px; +} +.arrow-dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid rgba(152, 166, 173, 0.15); + border-left: 7px solid transparent; + content: ''; +} +.arrow-dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} +.arrow-dropdown-menu.arrow-menu-right:before { + left: auto; + right: 11px; +} +.arrow-dropdown-menu.arrow-menu-right:after { + left: auto; + right: 12px; +} +/* Background colors */ +.bg-custom { + background-color: #7fc1fc !important; +} +.bg-primary { + background-color: #188ae2 !important; +} +.bg-success { + background-color: #4bd396 !important; +} +.bg-info { + background-color: #3ac9d6 !important; +} +.bg-warning { + background-color: #f9c851 !important; +} +.bg-danger { + background-color: #f5707a !important; +} +.bg-muted { + background-color: #797979 !important; +} +.bg-inverse { + background-color: #3b3e47 !important; +} +.bg-purple { + background-color: #6b5fb5 !important; +} +.bg-pink { + background-color: #f06292 !important; +} +.bg-orange { + background-color: #ff9800 !important; +} +.bg-brown { + background-color: #8d6e63 !important; +} +.bg-teal { + background-color: #26a69a !important; +} +.bg-white { + background-color: #ffffff !important; +} +.bg-dark { + background-color: #313a46 !important; +} +/* Text colors */ +.text-custom { + color: #7fc1fc !important; +} +.text-white { + color: #ffffff !important; +} +.text-danger { + color: #f5707a !important; +} +.text-muted { + color: #98a6ad !important; +} +.text-primary { + color: #188ae2 !important; +} +.text-warning { + color: #f9c851 !important; +} +.text-success { + color: #4bd396 !important; +} +.text-info { + color: #3ac9d6 !important; +} +.text-inverse { + color: #3b3e47 !important; +} +.text-pink { + color: #f06292 !important; +} +.text-purple { + color: #6b5fb5 !important; +} +.text-orange { + color: #ff9800 !important; +} +.text-brown { + color: #8d6e63 !important; +} +.text-teal { + color: #26a69a !important; +} +.text-dark { + color: #313a46 !important; +} +/* Labels */ +.label { + font-weight: 600; + letter-spacing: 0.05em; + padding: .3em .6em .2em; + font-family: 'Hind Madurai', sans-serif; +} +.label-white { + background-color: rgba(255, 255, 255, 0.7); + color: #313a46 !important; +} +.label-default { + background-color: #7fc1fc; +} +.label-primary { + background-color: #188ae2; +} +.label-success { + background-color: #4bd396; +} +.label-info { + background-color: #3ac9d6; +} +.label-warning { + background-color: #f9c851; +} +.label-danger { + background-color: #f5707a; +} +.label-purple { + background-color: #6b5fb5; +} +.label-pink { + background-color: #f06292; +} +.label-orange { + background-color: #ff9800; +} +.label-brown { + background-color: #8d6e63; +} +.label-teal { + background-color: #26a69a; +} +.label-inverse { + background-color: #3b3e47; +} +/* Badge */ +.badge { + text-transform: uppercase; + padding: 3px 5px; + font-size: 11px; + margin-top: 1px; + background-color: #7fc1fc; +} +.badge-xs { + font-size: 9px; +} +.badge-xs, +.badge-sm { + -webkit-transform: translate(0, -2px); + -ms-transform: translate(0, -2px); + -o-transform: translate(0, -2px); + transform: translate(0, -2px); +} +.badge-white { + background-color: rgba(255, 255, 255, 0.7); + color: #313a46 !important; +} +.badge-primary { + background-color: #188ae2; +} +.badge-success { + background-color: #4bd396; +} +.badge-info { + background-color: #3ac9d6; +} +.badge-warning { + background-color: #f9c851; +} +.badge-danger { + background-color: #f5707a; +} +.badge-purple { + background-color: #6b5fb5; +} +.badge-pink { + background-color: #f06292; +} +.badge-orange { + background-color: #ff9800; +} +.badge-brown { + background-color: #8d6e63; +} +.badge-teal { + background-color: #26a69a; +} +.badge-inverse { + background-color: #3b3e47; +} +/* Pagination/ Pager */ +.pagination > li:first-child > a, +.pagination > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pagination > li > a, +.pagination > li > span { + color: #636e7b; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #e4e7ea; +} +.pagination-split li { + margin-left: 5px; + display: inline-block; + float: left; +} +.pagination-split li:first-child { + margin-left: 0; +} +.pagination-split li a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + background-color: #7fc1fc; + border-color: #7fc1fc; +} +.pager li > a, +.pager li > span { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #636e7b; +} +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { + background-color: #7fc1fc; + border-color: #7fc1fc; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:focus .list-group-item-text, +.list-group-item.active:hover .list-group-item-text { + color: rgba(255, 255, 255, 0.7); +} +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; +} +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} +.waves-block { + display: block; +} +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.4); +} +.waves-effect.waves-custom .waves-ripple { + background-color: rgba(127, 193, 252, 0.4); +} +.waves-effect.waves-primary .waves-ripple { + background-color: rgba(24, 138, 226, 0.4); +} +.waves-effect.waves-success .waves-ripple { + background-color: rgba(75, 211, 150, 0.4); +} +.waves-effect.waves-info .waves-ripple { + background-color: rgba(58, 201, 214, 0.4); +} +.waves-effect.waves-warning .waves-ripple { + background-color: rgba(249, 200, 81, 0.4); +} +.waves-effect.waves-danger .waves-ripple { + background-color: rgba(245, 112, 122, 0.4); +} +.waves-effect.waves-pink .waves-ripple { + background-color: rgba(240, 98, 146, 0.4); +} +.waves-effect.purple .waves-ripple { + background-color: rgba(107, 95, 181, 0.2); +} +.waves-effect.waves-inverse .waves-ripple { + background-color: rgba(59, 62, 71, 0.4); +} +/* ============= + Print css +============= */ +@media print { + .page-title-box, + .topbar-left, + .hidden-print, + .breadcrumb, + .page-title, + .footer { + display: none; + margin: 0; + padding: 0; + } + .left, + .right-bar { + display: none; + } + .content { + margin-top: 0 !important; + padding-top: 0; + } + .content-page { + margin-left: 0; + margin-top: 0; + } +} +/* ============= + Demo Css +============= */ +.demo-box { + padding: 10px 15px; +} +/* Button demo */ +.button-list { + margin-left: -8px; + margin-bottom: -12px; +} +.button-list .btn { + margin-bottom: 12px; + margin-left: 8px; +} +/* Popover */ +.demo-popover .popover { + position: relative; + display: block; + float: left; + width: 260px; + margin: 20px; + z-index: 9; +} +/* Tooltips */ +.demo-tooltip .tooltip { + position: relative; + display: inline-block; + margin: 10px 20px; + opacity: 1; +} +/* Grid page */ +.grid-structure .grid-container { + background-color: rgba(243, 243, 243, 0.5); + margin-bottom: 10px; + padding: 10px 20px; +} +/* Demo Animation */ +.demo-animation { + text-align: center; +} +.demo-animation img { + position: relative; + width: 120px; + display: block; + margin: 0 auto 40px auto; + z-index: 1; + border-radius: 2px; +} +/* Demo only */ +.icon-list-demo div { + cursor: pointer; + line-height: 45px; + white-space: nowrap; + text-overflow: ellipsis; + display: block; + overflow: hidden; +} +.icon-list-demo div p { + margin-bottom: 0; + line-height: inherit; +} +.icon-list-demo i { + text-align: center; + vertical-align: middle; + font-size: 24px; + border: 1px solid #f3f3f3; + width: 50px; + height: 50px; + line-height: 50px; + margin-right: 12px; + color: rgba(43, 61, 81, 0.7); + border-radius: 3px; + display: inline-block; + transition: all 0.2s; +} +.icon-list-demo .col-md-4 { + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; + margin-bottom: 10px; +} +.icon-list-demo .col-md-4:hover i { + color: #4bd396; +} +/* Switchery demo */ +.switchery-demo .switchery { + margin-bottom: 10px; + margin-right: 5px; +} +/* Icon colored demo */ +.icon-colored { + height: 48px; + width: 48px; + margin: 2rem; +} diff --git a/assets/css/elements.css b/assets/css/elements.css new file mode 100644 index 0000000..e69de29 diff --git a/assets/css/icons.css b/assets/css/icons.css new file mode 100644 index 0000000..97edc8d --- /dev/null +++ b/assets/css/icons.css @@ -0,0 +1,12186 @@ +@charset 'UTF-8'; +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Icons +*/ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +@font-face { + font-family: 'themify'; + src: url('../fonts/themify.eot?-fvbane'); + src: url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), url('../fonts/themify.woff?-fvbane') format('woff'), url('../fonts/themify.ttf?-fvbane') format('truetype'), url('../fonts/themify.svg?-fvbane#themify') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="ti-"], +[class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} +/* MaterialDesignIcons.com */ +@font-face { + font-family: "Material Design Icons"; + src: url("../fonts/materialdesignicons-webfont.eot?v=1.6.50"); + src: url("../fonts/materialdesignicons-webfont.eot?#iefix&v=1.6.50") format("embedded-opentype"), url("../fonts/materialdesignicons-webfont.woff2?v=1.6.50") format("woff2"), url("../fonts/materialdesignicons-webfont.woff?v=1.6.50") format("woff"), url("../fonts/materialdesignicons-webfont.ttf?v=1.6.50") format("truetype"), url("../fonts/materialdesignicons-webfont.svg?v=1.6.50#materialdesigniconsregular") format("svg"); + font-weight: normal; + font-style: normal; +} +.mdi { + display: inline-block; + font: normal normal normal 24px/1 "Material Design Icons"; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} +.mdi-access-point:before { + content: "\F002"; +} +.mdi-access-point-network:before { + content: "\F003"; +} +.mdi-account:before { + content: "\F004"; +} +.mdi-account-alert:before { + content: "\F005"; +} +.mdi-account-box:before { + content: "\F006"; +} +.mdi-account-box-outline:before { + content: "\F007"; +} +.mdi-account-card-details:before { + content: "\F5D2"; +} +.mdi-account-check:before { + content: "\F008"; +} +.mdi-account-circle:before { + content: "\F009"; +} +.mdi-account-convert:before { + content: "\F00A"; +} +.mdi-account-key:before { + content: "\F00B"; +} +.mdi-account-location:before { + content: "\F00C"; +} +.mdi-account-minus:before { + content: "\F00D"; +} +.mdi-account-multiple:before { + content: "\F00E"; +} +.mdi-account-multiple-minus:before { + content: "\F5D3"; +} +.mdi-account-multiple-outline:before { + content: "\F00F"; +} +.mdi-account-multiple-plus:before { + content: "\F010"; +} +.mdi-account-network:before { + content: "\F011"; +} +.mdi-account-off:before { + content: "\F012"; +} +.mdi-account-outline:before { + content: "\F013"; +} +.mdi-account-plus:before { + content: "\F014"; +} +.mdi-account-remove:before { + content: "\F015"; +} +.mdi-account-search:before { + content: "\F016"; +} +.mdi-account-settings:before { + content: "\F630"; +} +.mdi-account-settings-variant:before { + content: "\F631"; +} +.mdi-account-star:before { + content: "\F017"; +} +.mdi-account-star-variant:before { + content: "\F018"; +} +.mdi-account-switch:before { + content: "\F019"; +} +.mdi-adjust:before { + content: "\F01A"; +} +.mdi-air-conditioner:before { + content: "\F01B"; +} +.mdi-airballoon:before { + content: "\F01C"; +} +.mdi-airplane:before { + content: "\F01D"; +} +.mdi-airplane-landing:before { + content: "\F5D4"; +} +.mdi-airplane-off:before { + content: "\F01E"; +} +.mdi-airplane-takeoff:before { + content: "\F5D5"; +} +.mdi-airplay:before { + content: "\F01F"; +} +.mdi-alarm:before { + content: "\F020"; +} +.mdi-alarm-check:before { + content: "\F021"; +} +.mdi-alarm-multiple:before { + content: "\F022"; +} +.mdi-alarm-off:before { + content: "\F023"; +} +.mdi-alarm-plus:before { + content: "\F024"; +} +.mdi-album:before { + content: "\F025"; +} +.mdi-alert:before { + content: "\F026"; +} +.mdi-alert-box:before { + content: "\F027"; +} +.mdi-alert-circle:before { + content: "\F028"; +} +.mdi-alert-circle-outline:before { + content: "\F5D6"; +} +.mdi-alert-octagon:before { + content: "\F029"; +} +.mdi-alert-outline:before { + content: "\F02A"; +} +.mdi-alpha:before { + content: "\F02B"; +} +.mdi-alphabetical:before { + content: "\F02C"; +} +.mdi-altimeter:before { + content: "\F5D7"; +} +.mdi-amazon:before { + content: "\F02D"; +} +.mdi-amazon-clouddrive:before { + content: "\F02E"; +} +.mdi-ambulance:before { + content: "\F02F"; +} +.mdi-amplifier:before { + content: "\F030"; +} +.mdi-anchor:before { + content: "\F031"; +} +.mdi-android:before { + content: "\F032"; +} +.mdi-android-debug-bridge:before { + content: "\F033"; +} +.mdi-android-studio:before { + content: "\F034"; +} +.mdi-animation:before { + content: "\F5D8"; +} +.mdi-apple:before { + content: "\F035"; +} +.mdi-apple-finder:before { + content: "\F036"; +} +.mdi-apple-ios:before { + content: "\F037"; +} +.mdi-apple-keyboard-caps:before { + content: "\F632"; +} +.mdi-apple-keyboard-command:before { + content: "\F633"; +} +.mdi-apple-keyboard-control:before { + content: "\F634"; +} +.mdi-apple-keyboard-option:before { + content: "\F635"; +} +.mdi-apple-keyboard-shift:before { + content: "\F636"; +} +.mdi-apple-mobileme:before { + content: "\F038"; +} +.mdi-apple-safari:before { + content: "\F039"; +} +.mdi-application:before { + content: "\F614"; +} +.mdi-appnet:before { + content: "\F03A"; +} +.mdi-apps:before { + content: "\F03B"; +} +.mdi-archive:before { + content: "\F03C"; +} +.mdi-arrange-bring-forward:before { + content: "\F03D"; +} +.mdi-arrange-bring-to-front:before { + content: "\F03E"; +} +.mdi-arrange-send-backward:before { + content: "\F03F"; +} +.mdi-arrange-send-to-back:before { + content: "\F040"; +} +.mdi-arrow-all:before { + content: "\F041"; +} +.mdi-arrow-bottom-left:before { + content: "\F042"; +} +.mdi-arrow-bottom-right:before { + content: "\F043"; +} +.mdi-arrow-compress:before { + content: "\F615"; +} +.mdi-arrow-compress-all:before { + content: "\F044"; +} +.mdi-arrow-down:before { + content: "\F045"; +} +.mdi-arrow-down-bold:before { + content: "\F046"; +} +.mdi-arrow-down-bold-circle:before { + content: "\F047"; +} +.mdi-arrow-down-bold-circle-outline:before { + content: "\F048"; +} +.mdi-arrow-down-bold-hexagon-outline:before { + content: "\F049"; +} +.mdi-arrow-down-drop-circle:before { + content: "\F04A"; +} +.mdi-arrow-down-drop-circle-outline:before { + content: "\F04B"; +} +.mdi-arrow-expand:before { + content: "\F616"; +} +.mdi-arrow-expand-all:before { + content: "\F04C"; +} +.mdi-arrow-left:before { + content: "\F04D"; +} +.mdi-arrow-left-bold:before { + content: "\F04E"; +} +.mdi-arrow-left-bold-circle:before { + content: "\F04F"; +} +.mdi-arrow-left-bold-circle-outline:before { + content: "\F050"; +} +.mdi-arrow-left-bold-hexagon-outline:before { + content: "\F051"; +} +.mdi-arrow-left-drop-circle:before { + content: "\F052"; +} +.mdi-arrow-left-drop-circle-outline:before { + content: "\F053"; +} +.mdi-arrow-right:before { + content: "\F054"; +} +.mdi-arrow-right-bold:before { + content: "\F055"; +} +.mdi-arrow-right-bold-circle:before { + content: "\F056"; +} +.mdi-arrow-right-bold-circle-outline:before { + content: "\F057"; +} +.mdi-arrow-right-bold-hexagon-outline:before { + content: "\F058"; +} +.mdi-arrow-right-drop-circle:before { + content: "\F059"; +} +.mdi-arrow-right-drop-circle-outline:before { + content: "\F05A"; +} +.mdi-arrow-top-left:before { + content: "\F05B"; +} +.mdi-arrow-top-right:before { + content: "\F05C"; +} +.mdi-arrow-up:before { + content: "\F05D"; +} +.mdi-arrow-up-bold:before { + content: "\F05E"; +} +.mdi-arrow-up-bold-circle:before { + content: "\F05F"; +} +.mdi-arrow-up-bold-circle-outline:before { + content: "\F060"; +} +.mdi-arrow-up-bold-hexagon-outline:before { + content: "\F061"; +} +.mdi-arrow-up-drop-circle:before { + content: "\F062"; +} +.mdi-arrow-up-drop-circle-outline:before { + content: "\F063"; +} +.mdi-assistant:before { + content: "\F064"; +} +.mdi-at:before { + content: "\F065"; +} +.mdi-attachment:before { + content: "\F066"; +} +.mdi-audiobook:before { + content: "\F067"; +} +.mdi-auto-fix:before { + content: "\F068"; +} +.mdi-auto-upload:before { + content: "\F069"; +} +.mdi-autorenew:before { + content: "\F06A"; +} +.mdi-av-timer:before { + content: "\F06B"; +} +.mdi-baby:before { + content: "\F06C"; +} +.mdi-backburger:before { + content: "\F06D"; +} +.mdi-backspace:before { + content: "\F06E"; +} +.mdi-backup-restore:before { + content: "\F06F"; +} +.mdi-bank:before { + content: "\F070"; +} +.mdi-barcode:before { + content: "\F071"; +} +.mdi-barcode-scan:before { + content: "\F072"; +} +.mdi-barley:before { + content: "\F073"; +} +.mdi-barrel:before { + content: "\F074"; +} +.mdi-basecamp:before { + content: "\F075"; +} +.mdi-basket:before { + content: "\F076"; +} +.mdi-basket-fill:before { + content: "\F077"; +} +.mdi-basket-unfill:before { + content: "\F078"; +} +.mdi-battery:before { + content: "\F079"; +} +.mdi-battery-10:before { + content: "\F07A"; +} +.mdi-battery-20:before { + content: "\F07B"; +} +.mdi-battery-30:before { + content: "\F07C"; +} +.mdi-battery-40:before { + content: "\F07D"; +} +.mdi-battery-50:before { + content: "\F07E"; +} +.mdi-battery-60:before { + content: "\F07F"; +} +.mdi-battery-70:before { + content: "\F080"; +} +.mdi-battery-80:before { + content: "\F081"; +} +.mdi-battery-90:before { + content: "\F082"; +} +.mdi-battery-alert:before { + content: "\F083"; +} +.mdi-battery-charging:before { + content: "\F084"; +} +.mdi-battery-charging-100:before { + content: "\F085"; +} +.mdi-battery-charging-20:before { + content: "\F086"; +} +.mdi-battery-charging-30:before { + content: "\F087"; +} +.mdi-battery-charging-40:before { + content: "\F088"; +} +.mdi-battery-charging-60:before { + content: "\F089"; +} +.mdi-battery-charging-80:before { + content: "\F08A"; +} +.mdi-battery-charging-90:before { + content: "\F08B"; +} +.mdi-battery-minus:before { + content: "\F08C"; +} +.mdi-battery-negative:before { + content: "\F08D"; +} +.mdi-battery-outline:before { + content: "\F08E"; +} +.mdi-battery-plus:before { + content: "\F08F"; +} +.mdi-battery-positive:before { + content: "\F090"; +} +.mdi-battery-unknown:before { + content: "\F091"; +} +.mdi-beach:before { + content: "\F092"; +} +.mdi-beats:before { + content: "\F097"; +} +.mdi-beer:before { + content: "\F098"; +} +.mdi-behance:before { + content: "\F099"; +} +.mdi-bell:before { + content: "\F09A"; +} +.mdi-bell-off:before { + content: "\F09B"; +} +.mdi-bell-outline:before { + content: "\F09C"; +} +.mdi-bell-plus:before { + content: "\F09D"; +} +.mdi-bell-ring:before { + content: "\F09E"; +} +.mdi-bell-ring-outline:before { + content: "\F09F"; +} +.mdi-bell-sleep:before { + content: "\F0A0"; +} +.mdi-beta:before { + content: "\F0A1"; +} +.mdi-bible:before { + content: "\F0A2"; +} +.mdi-bike:before { + content: "\F0A3"; +} +.mdi-bing:before { + content: "\F0A4"; +} +.mdi-binoculars:before { + content: "\F0A5"; +} +.mdi-bio:before { + content: "\F0A6"; +} +.mdi-biohazard:before { + content: "\F0A7"; +} +.mdi-bitbucket:before { + content: "\F0A8"; +} +.mdi-black-mesa:before { + content: "\F0A9"; +} +.mdi-blackberry:before { + content: "\F0AA"; +} +.mdi-blender:before { + content: "\F0AB"; +} +.mdi-blinds:before { + content: "\F0AC"; +} +.mdi-block-helper:before { + content: "\F0AD"; +} +.mdi-blogger:before { + content: "\F0AE"; +} +.mdi-bluetooth:before { + content: "\F0AF"; +} +.mdi-bluetooth-audio:before { + content: "\F0B0"; +} +.mdi-bluetooth-connect:before { + content: "\F0B1"; +} +.mdi-bluetooth-off:before { + content: "\F0B2"; +} +.mdi-bluetooth-settings:before { + content: "\F0B3"; +} +.mdi-bluetooth-transfer:before { + content: "\F0B4"; +} +.mdi-blur:before { + content: "\F0B5"; +} +.mdi-blur-linear:before { + content: "\F0B6"; +} +.mdi-blur-off:before { + content: "\F0B7"; +} +.mdi-blur-radial:before { + content: "\F0B8"; +} +.mdi-bone:before { + content: "\F0B9"; +} +.mdi-book:before { + content: "\F0BA"; +} +.mdi-book-minus:before { + content: "\F5D9"; +} +.mdi-book-multiple:before { + content: "\F0BB"; +} +.mdi-book-multiple-variant:before { + content: "\F0BC"; +} +.mdi-book-open:before { + content: "\F0BD"; +} +.mdi-book-open-page-variant:before { + content: "\F5DA"; +} +.mdi-book-open-variant:before { + content: "\F0BE"; +} +.mdi-book-plus:before { + content: "\F5DB"; +} +.mdi-book-variant:before { + content: "\F0BF"; +} +.mdi-bookmark:before { + content: "\F0C0"; +} +.mdi-bookmark-check:before { + content: "\F0C1"; +} +.mdi-bookmark-music:before { + content: "\F0C2"; +} +.mdi-bookmark-outline:before { + content: "\F0C3"; +} +.mdi-bookmark-plus:before { + content: "\F0C5"; +} +.mdi-bookmark-plus-outline:before { + content: "\F0C4"; +} +.mdi-bookmark-remove:before { + content: "\F0C6"; +} +.mdi-boombox:before { + content: "\F5DC"; +} +.mdi-border-all:before { + content: "\F0C7"; +} +.mdi-border-bottom:before { + content: "\F0C8"; +} +.mdi-border-color:before { + content: "\F0C9"; +} +.mdi-border-horizontal:before { + content: "\F0CA"; +} +.mdi-border-inside:before { + content: "\F0CB"; +} +.mdi-border-left:before { + content: "\F0CC"; +} +.mdi-border-none:before { + content: "\F0CD"; +} +.mdi-border-outside:before { + content: "\F0CE"; +} +.mdi-border-right:before { + content: "\F0CF"; +} +.mdi-border-style:before { + content: "\F0D0"; +} +.mdi-border-top:before { + content: "\F0D1"; +} +.mdi-border-vertical:before { + content: "\F0D2"; +} +.mdi-bowl:before { + content: "\F617"; +} +.mdi-bowling:before { + content: "\F0D3"; +} +.mdi-box:before { + content: "\F0D4"; +} +.mdi-box-cutter:before { + content: "\F0D5"; +} +.mdi-box-shadow:before { + content: "\F637"; +} +.mdi-bridge:before { + content: "\F618"; +} +.mdi-briefcase:before { + content: "\F0D6"; +} +.mdi-briefcase-check:before { + content: "\F0D7"; +} +.mdi-briefcase-download:before { + content: "\F0D8"; +} +.mdi-briefcase-upload:before { + content: "\F0D9"; +} +.mdi-brightness-1:before { + content: "\F0DA"; +} +.mdi-brightness-2:before { + content: "\F0DB"; +} +.mdi-brightness-3:before { + content: "\F0DC"; +} +.mdi-brightness-4:before { + content: "\F0DD"; +} +.mdi-brightness-5:before { + content: "\F0DE"; +} +.mdi-brightness-6:before { + content: "\F0DF"; +} +.mdi-brightness-7:before { + content: "\F0E0"; +} +.mdi-brightness-auto:before { + content: "\F0E1"; +} +.mdi-broom:before { + content: "\F0E2"; +} +.mdi-brush:before { + content: "\F0E3"; +} +.mdi-buffer:before { + content: "\F619"; +} +.mdi-bug:before { + content: "\F0E4"; +} +.mdi-bulletin-board:before { + content: "\F0E5"; +} +.mdi-bullhorn:before { + content: "\F0E6"; +} +.mdi-bullseye:before { + content: "\F5DD"; +} +.mdi-burst-mode:before { + content: "\F5DE"; +} +.mdi-bus:before { + content: "\F0E7"; +} +.mdi-cached:before { + content: "\F0E8"; +} +.mdi-cake:before { + content: "\F0E9"; +} +.mdi-cake-layered:before { + content: "\F0EA"; +} +.mdi-cake-variant:before { + content: "\F0EB"; +} +.mdi-calculator:before { + content: "\F0EC"; +} +.mdi-calendar:before { + content: "\F0ED"; +} +.mdi-calendar-blank:before { + content: "\F0EE"; +} +.mdi-calendar-check:before { + content: "\F0EF"; +} +.mdi-calendar-clock:before { + content: "\F0F0"; +} +.mdi-calendar-multiple:before { + content: "\F0F1"; +} +.mdi-calendar-multiple-check:before { + content: "\F0F2"; +} +.mdi-calendar-plus:before { + content: "\F0F3"; +} +.mdi-calendar-remove:before { + content: "\F0F4"; +} +.mdi-calendar-text:before { + content: "\F0F5"; +} +.mdi-calendar-today:before { + content: "\F0F6"; +} +.mdi-call-made:before { + content: "\F0F7"; +} +.mdi-call-merge:before { + content: "\F0F8"; +} +.mdi-call-missed:before { + content: "\F0F9"; +} +.mdi-call-received:before { + content: "\F0FA"; +} +.mdi-call-split:before { + content: "\F0FB"; +} +.mdi-camcorder:before { + content: "\F0FC"; +} +.mdi-camcorder-box:before { + content: "\F0FD"; +} +.mdi-camcorder-box-off:before { + content: "\F0FE"; +} +.mdi-camcorder-off:before { + content: "\F0FF"; +} +.mdi-camera:before { + content: "\F100"; +} +.mdi-camera-enhance:before { + content: "\F101"; +} +.mdi-camera-front:before { + content: "\F102"; +} +.mdi-camera-front-variant:before { + content: "\F103"; +} +.mdi-camera-iris:before { + content: "\F104"; +} +.mdi-camera-off:before { + content: "\F5DF"; +} +.mdi-camera-party-mode:before { + content: "\F105"; +} +.mdi-camera-rear:before { + content: "\F106"; +} +.mdi-camera-rear-variant:before { + content: "\F107"; +} +.mdi-camera-switch:before { + content: "\F108"; +} +.mdi-camera-timer:before { + content: "\F109"; +} +.mdi-candle:before { + content: "\F5E2"; +} +.mdi-candycane:before { + content: "\F10A"; +} +.mdi-car:before { + content: "\F10B"; +} +.mdi-car-battery:before { + content: "\F10C"; +} +.mdi-car-connected:before { + content: "\F10D"; +} +.mdi-car-wash:before { + content: "\F10E"; +} +.mdi-cards:before { + content: "\F638"; +} +.mdi-cards-outline:before { + content: "\F639"; +} +.mdi-cards-playing-outline:before { + content: "\F63A"; +} +.mdi-carrot:before { + content: "\F10F"; +} +.mdi-cart:before { + content: "\F110"; +} +.mdi-cart-off:before { + content: "\F66B"; +} +.mdi-cart-outline:before { + content: "\F111"; +} +.mdi-cart-plus:before { + content: "\F112"; +} +.mdi-case-sensitive-alt:before { + content: "\F113"; +} +.mdi-cash:before { + content: "\F114"; +} +.mdi-cash-100:before { + content: "\F115"; +} +.mdi-cash-multiple:before { + content: "\F116"; +} +.mdi-cash-usd:before { + content: "\F117"; +} +.mdi-cast:before { + content: "\F118"; +} +.mdi-cast-connected:before { + content: "\F119"; +} +.mdi-castle:before { + content: "\F11A"; +} +.mdi-cat:before { + content: "\F11B"; +} +.mdi-cellphone:before { + content: "\F11C"; +} +.mdi-cellphone-android:before { + content: "\F11D"; +} +.mdi-cellphone-basic:before { + content: "\F11E"; +} +.mdi-cellphone-dock:before { + content: "\F11F"; +} +.mdi-cellphone-iphone:before { + content: "\F120"; +} +.mdi-cellphone-link:before { + content: "\F121"; +} +.mdi-cellphone-link-off:before { + content: "\F122"; +} +.mdi-cellphone-settings:before { + content: "\F123"; +} +.mdi-certificate:before { + content: "\F124"; +} +.mdi-chair-school:before { + content: "\F125"; +} +.mdi-chart-arc:before { + content: "\F126"; +} +.mdi-chart-areaspline:before { + content: "\F127"; +} +.mdi-chart-bar:before { + content: "\F128"; +} +.mdi-chart-bubble:before { + content: "\F5E3"; +} +.mdi-chart-gantt:before { + content: "\F66C"; +} +.mdi-chart-histogram:before { + content: "\F129"; +} +.mdi-chart-line:before { + content: "\F12A"; +} +.mdi-chart-pie:before { + content: "\F12B"; +} +.mdi-chart-scatterplot-hexbin:before { + content: "\F66D"; +} +.mdi-chart-timeline:before { + content: "\F66E"; +} +.mdi-check:before { + content: "\F12C"; +} +.mdi-check-all:before { + content: "\F12D"; +} +.mdi-check-circle:before { + content: "\F5E0"; +} +.mdi-check-circle-outline:before { + content: "\F5E1"; +} +.mdi-checkbox-blank:before { + content: "\F12E"; +} +.mdi-checkbox-blank-circle:before { + content: "\F12F"; +} +.mdi-checkbox-blank-circle-outline:before { + content: "\F130"; +} +.mdi-checkbox-blank-outline:before { + content: "\F131"; +} +.mdi-checkbox-marked:before { + content: "\F132"; +} +.mdi-checkbox-marked-circle:before { + content: "\F133"; +} +.mdi-checkbox-marked-circle-outline:before { + content: "\F134"; +} +.mdi-checkbox-marked-outline:before { + content: "\F135"; +} +.mdi-checkbox-multiple-blank:before { + content: "\F136"; +} +.mdi-checkbox-multiple-blank-circle:before { + content: "\F63B"; +} +.mdi-checkbox-multiple-blank-circle-outline:before { + content: "\F63C"; +} +.mdi-checkbox-multiple-blank-outline:before { + content: "\F137"; +} +.mdi-checkbox-multiple-marked:before { + content: "\F138"; +} +.mdi-checkbox-multiple-marked-circle:before { + content: "\F63D"; +} +.mdi-checkbox-multiple-marked-circle-outline:before { + content: "\F63E"; +} +.mdi-checkbox-multiple-marked-outline:before { + content: "\F139"; +} +.mdi-checkerboard:before { + content: "\F13A"; +} +.mdi-chemical-weapon:before { + content: "\F13B"; +} +.mdi-chevron-double-down:before { + content: "\F13C"; +} +.mdi-chevron-double-left:before { + content: "\F13D"; +} +.mdi-chevron-double-right:before { + content: "\F13E"; +} +.mdi-chevron-double-up:before { + content: "\F13F"; +} +.mdi-chevron-down:before { + content: "\F140"; +} +.mdi-chevron-left:before { + content: "\F141"; +} +.mdi-chevron-right:before { + content: "\F142"; +} +.mdi-chevron-up:before { + content: "\F143"; +} +.mdi-chip:before { + content: "\F61A"; +} +.mdi-church:before { + content: "\F144"; +} +.mdi-cisco-webex:before { + content: "\F145"; +} +.mdi-city:before { + content: "\F146"; +} +.mdi-clipboard:before { + content: "\F147"; +} +.mdi-clipboard-account:before { + content: "\F148"; +} +.mdi-clipboard-alert:before { + content: "\F149"; +} +.mdi-clipboard-arrow-down:before { + content: "\F14A"; +} +.mdi-clipboard-arrow-left:before { + content: "\F14B"; +} +.mdi-clipboard-check:before { + content: "\F14C"; +} +.mdi-clipboard-outline:before { + content: "\F14D"; +} +.mdi-clipboard-text:before { + content: "\F14E"; +} +.mdi-clippy:before { + content: "\F14F"; +} +.mdi-clock:before { + content: "\F150"; +} +.mdi-clock-alert:before { + content: "\F5CE"; +} +.mdi-clock-end:before { + content: "\F151"; +} +.mdi-clock-fast:before { + content: "\F152"; +} +.mdi-clock-in:before { + content: "\F153"; +} +.mdi-clock-out:before { + content: "\F154"; +} +.mdi-clock-start:before { + content: "\F155"; +} +.mdi-close:before { + content: "\F156"; +} +.mdi-close-box:before { + content: "\F157"; +} +.mdi-close-box-outline:before { + content: "\F158"; +} +.mdi-close-circle:before { + content: "\F159"; +} +.mdi-close-circle-outline:before { + content: "\F15A"; +} +.mdi-close-network:before { + content: "\F15B"; +} +.mdi-close-octagon:before { + content: "\F15C"; +} +.mdi-close-octagon-outline:before { + content: "\F15D"; +} +.mdi-closed-caption:before { + content: "\F15E"; +} +.mdi-cloud:before { + content: "\F15F"; +} +.mdi-cloud-check:before { + content: "\F160"; +} +.mdi-cloud-circle:before { + content: "\F161"; +} +.mdi-cloud-download:before { + content: "\F162"; +} +.mdi-cloud-outline:before { + content: "\F163"; +} +.mdi-cloud-outline-off:before { + content: "\F164"; +} +.mdi-cloud-print:before { + content: "\F165"; +} +.mdi-cloud-print-outline:before { + content: "\F166"; +} +.mdi-cloud-sync:before { + content: "\F63F"; +} +.mdi-cloud-upload:before { + content: "\F167"; +} +.mdi-code-array:before { + content: "\F168"; +} +.mdi-code-braces:before { + content: "\F169"; +} +.mdi-code-brackets:before { + content: "\F16A"; +} +.mdi-code-equal:before { + content: "\F16B"; +} +.mdi-code-greater-than:before { + content: "\F16C"; +} +.mdi-code-greater-than-or-equal:before { + content: "\F16D"; +} +.mdi-code-less-than:before { + content: "\F16E"; +} +.mdi-code-less-than-or-equal:before { + content: "\F16F"; +} +.mdi-code-not-equal:before { + content: "\F170"; +} +.mdi-code-not-equal-variant:before { + content: "\F171"; +} +.mdi-code-parentheses:before { + content: "\F172"; +} +.mdi-code-string:before { + content: "\F173"; +} +.mdi-code-tags:before { + content: "\F174"; +} +.mdi-codepen:before { + content: "\F175"; +} +.mdi-coffee:before { + content: "\F176"; +} +.mdi-coffee-to-go:before { + content: "\F177"; +} +.mdi-coin:before { + content: "\F178"; +} +.mdi-collage:before { + content: "\F640"; +} +.mdi-color-helper:before { + content: "\F179"; +} +.mdi-comment:before { + content: "\F17A"; +} +.mdi-comment-account:before { + content: "\F17B"; +} +.mdi-comment-account-outline:before { + content: "\F17C"; +} +.mdi-comment-alert:before { + content: "\F17D"; +} +.mdi-comment-alert-outline:before { + content: "\F17E"; +} +.mdi-comment-check:before { + content: "\F17F"; +} +.mdi-comment-check-outline:before { + content: "\F180"; +} +.mdi-comment-multiple-outline:before { + content: "\F181"; +} +.mdi-comment-outline:before { + content: "\F182"; +} +.mdi-comment-plus-outline:before { + content: "\F183"; +} +.mdi-comment-processing:before { + content: "\F184"; +} +.mdi-comment-processing-outline:before { + content: "\F185"; +} +.mdi-comment-question-outline:before { + content: "\F186"; +} +.mdi-comment-remove-outline:before { + content: "\F187"; +} +.mdi-comment-text:before { + content: "\F188"; +} +.mdi-comment-text-outline:before { + content: "\F189"; +} +.mdi-compare:before { + content: "\F18A"; +} +.mdi-compass:before { + content: "\F18B"; +} +.mdi-compass-outline:before { + content: "\F18C"; +} +.mdi-console:before { + content: "\F18D"; +} +.mdi-contact-mail:before { + content: "\F18E"; +} +.mdi-content-copy:before { + content: "\F18F"; +} +.mdi-content-cut:before { + content: "\F190"; +} +.mdi-content-duplicate:before { + content: "\F191"; +} +.mdi-content-paste:before { + content: "\F192"; +} +.mdi-content-save:before { + content: "\F193"; +} +.mdi-content-save-all:before { + content: "\F194"; +} +.mdi-content-save-settings:before { + content: "\F61B"; +} +.mdi-contrast:before { + content: "\F195"; +} +.mdi-contrast-box:before { + content: "\F196"; +} +.mdi-contrast-circle:before { + content: "\F197"; +} +.mdi-cookie:before { + content: "\F198"; +} +.mdi-copyright:before { + content: "\F5E6"; +} +.mdi-counter:before { + content: "\F199"; +} +.mdi-cow:before { + content: "\F19A"; +} +.mdi-credit-card:before { + content: "\F19B"; +} +.mdi-credit-card-multiple:before { + content: "\F19C"; +} +.mdi-credit-card-off:before { + content: "\F5E4"; +} +.mdi-credit-card-scan:before { + content: "\F19D"; +} +.mdi-crop:before { + content: "\F19E"; +} +.mdi-crop-free:before { + content: "\F19F"; +} +.mdi-crop-landscape:before { + content: "\F1A0"; +} +.mdi-crop-portrait:before { + content: "\F1A1"; +} +.mdi-crop-square:before { + content: "\F1A2"; +} +.mdi-crosshairs:before { + content: "\F1A3"; +} +.mdi-crosshairs-gps:before { + content: "\F1A4"; +} +.mdi-crown:before { + content: "\F1A5"; +} +.mdi-cube:before { + content: "\F1A6"; +} +.mdi-cube-outline:before { + content: "\F1A7"; +} +.mdi-cube-send:before { + content: "\F1A8"; +} +.mdi-cube-unfolded:before { + content: "\F1A9"; +} +.mdi-cup:before { + content: "\F1AA"; +} +.mdi-cup-off:before { + content: "\F5E5"; +} +.mdi-cup-water:before { + content: "\F1AB"; +} +.mdi-currency-btc:before { + content: "\F1AC"; +} +.mdi-currency-eur:before { + content: "\F1AD"; +} +.mdi-currency-gbp:before { + content: "\F1AE"; +} +.mdi-currency-inr:before { + content: "\F1AF"; +} +.mdi-currency-ngn:before { + content: "\F1B0"; +} +.mdi-currency-rub:before { + content: "\F1B1"; +} +.mdi-currency-try:before { + content: "\F1B2"; +} +.mdi-currency-usd:before { + content: "\F1B3"; +} +.mdi-cursor-default:before { + content: "\F1B4"; +} +.mdi-cursor-default-outline:before { + content: "\F1B5"; +} +.mdi-cursor-move:before { + content: "\F1B6"; +} +.mdi-cursor-pointer:before { + content: "\F1B7"; +} +.mdi-cursor-text:before { + content: "\F5E7"; +} +.mdi-database:before { + content: "\F1B8"; +} +.mdi-database-minus:before { + content: "\F1B9"; +} +.mdi-database-plus:before { + content: "\F1BA"; +} +.mdi-debug-step-into:before { + content: "\F1BB"; +} +.mdi-debug-step-out:before { + content: "\F1BC"; +} +.mdi-debug-step-over:before { + content: "\F1BD"; +} +.mdi-decimal-decrease:before { + content: "\F1BE"; +} +.mdi-decimal-increase:before { + content: "\F1BF"; +} +.mdi-delete:before { + content: "\F1C0"; +} +.mdi-delete-forever:before { + content: "\F5E8"; +} +.mdi-delete-sweep:before { + content: "\F5E9"; +} +.mdi-delete-variant:before { + content: "\F1C1"; +} +.mdi-delta:before { + content: "\F1C2"; +} +.mdi-deskphone:before { + content: "\F1C3"; +} +.mdi-desktop-mac:before { + content: "\F1C4"; +} +.mdi-desktop-tower:before { + content: "\F1C5"; +} +.mdi-details:before { + content: "\F1C6"; +} +.mdi-deviantart:before { + content: "\F1C7"; +} +.mdi-dialpad:before { + content: "\F61C"; +} +.mdi-diamond:before { + content: "\F1C8"; +} +.mdi-dice-1:before { + content: "\F1CA"; +} +.mdi-dice-2:before { + content: "\F1CB"; +} +.mdi-dice-3:before { + content: "\F1CC"; +} +.mdi-dice-4:before { + content: "\F1CD"; +} +.mdi-dice-5:before { + content: "\F1CE"; +} +.mdi-dice-6:before { + content: "\F1CF"; +} +.mdi-dice-d20:before { + content: "\F5EA"; +} +.mdi-dice-d4:before { + content: "\F5EB"; +} +.mdi-dice-d6:before { + content: "\F5EC"; +} +.mdi-dice-d8:before { + content: "\F5ED"; +} +.mdi-dictionary:before { + content: "\F61D"; +} +.mdi-directions:before { + content: "\F1D0"; +} +.mdi-directions-fork:before { + content: "\F641"; +} +.mdi-discord:before { + content: "\F66F"; +} +.mdi-disk:before { + content: "\F5EE"; +} +.mdi-disk-alert:before { + content: "\F1D1"; +} +.mdi-disqus:before { + content: "\F1D2"; +} +.mdi-disqus-outline:before { + content: "\F1D3"; +} +.mdi-division:before { + content: "\F1D4"; +} +.mdi-division-box:before { + content: "\F1D5"; +} +.mdi-dns:before { + content: "\F1D6"; +} +.mdi-domain:before { + content: "\F1D7"; +} +.mdi-dots-horizontal:before { + content: "\F1D8"; +} +.mdi-dots-vertical:before { + content: "\F1D9"; +} +.mdi-download:before { + content: "\F1DA"; +} +.mdi-drag:before { + content: "\F1DB"; +} +.mdi-drag-horizontal:before { + content: "\F1DC"; +} +.mdi-drag-vertical:before { + content: "\F1DD"; +} +.mdi-drawing:before { + content: "\F1DE"; +} +.mdi-drawing-box:before { + content: "\F1DF"; +} +.mdi-dribbble:before { + content: "\F1E0"; +} +.mdi-dribbble-box:before { + content: "\F1E1"; +} +.mdi-drone:before { + content: "\F1E2"; +} +.mdi-dropbox:before { + content: "\F1E3"; +} +.mdi-drupal:before { + content: "\F1E4"; +} +.mdi-duck:before { + content: "\F1E5"; +} +.mdi-dumbbell:before { + content: "\F1E6"; +} +.mdi-earth:before { + content: "\F1E7"; +} +.mdi-earth-off:before { + content: "\F1E8"; +} +.mdi-edge:before { + content: "\F1E9"; +} +.mdi-eject:before { + content: "\F1EA"; +} +.mdi-elevation-decline:before { + content: "\F1EB"; +} +.mdi-elevation-rise:before { + content: "\F1EC"; +} +.mdi-elevator:before { + content: "\F1ED"; +} +.mdi-email:before { + content: "\F1EE"; +} +.mdi-email-open:before { + content: "\F1EF"; +} +.mdi-email-open-outline:before { + content: "\F5EF"; +} +.mdi-email-outline:before { + content: "\F1F0"; +} +.mdi-email-secure:before { + content: "\F1F1"; +} +.mdi-email-variant:before { + content: "\F5F0"; +} +.mdi-emoticon:before { + content: "\F1F2"; +} +.mdi-emoticon-cool:before { + content: "\F1F3"; +} +.mdi-emoticon-devil:before { + content: "\F1F4"; +} +.mdi-emoticon-happy:before { + content: "\F1F5"; +} +.mdi-emoticon-neutral:before { + content: "\F1F6"; +} +.mdi-emoticon-poop:before { + content: "\F1F7"; +} +.mdi-emoticon-sad:before { + content: "\F1F8"; +} +.mdi-emoticon-tongue:before { + content: "\F1F9"; +} +.mdi-engine:before { + content: "\F1FA"; +} +.mdi-engine-outline:before { + content: "\F1FB"; +} +.mdi-equal:before { + content: "\F1FC"; +} +.mdi-equal-box:before { + content: "\F1FD"; +} +.mdi-eraser:before { + content: "\F1FE"; +} +.mdi-eraser-variant:before { + content: "\F642"; +} +.mdi-escalator:before { + content: "\F1FF"; +} +.mdi-ethernet:before { + content: "\F200"; +} +.mdi-ethernet-cable:before { + content: "\F201"; +} +.mdi-ethernet-cable-off:before { + content: "\F202"; +} +.mdi-etsy:before { + content: "\F203"; +} +.mdi-ev-station:before { + content: "\F5F1"; +} +.mdi-evernote:before { + content: "\F204"; +} +.mdi-exclamation:before { + content: "\F205"; +} +.mdi-exit-to-app:before { + content: "\F206"; +} +.mdi-export:before { + content: "\F207"; +} +.mdi-eye:before { + content: "\F208"; +} +.mdi-eye-off:before { + content: "\F209"; +} +.mdi-eyedropper:before { + content: "\F20A"; +} +.mdi-eyedropper-variant:before { + content: "\F20B"; +} +.mdi-face:before { + content: "\F643"; +} +.mdi-face-profile:before { + content: "\F644"; +} +.mdi-facebook:before { + content: "\F20C"; +} +.mdi-facebook-box:before { + content: "\F20D"; +} +.mdi-facebook-messenger:before { + content: "\F20E"; +} +.mdi-factory:before { + content: "\F20F"; +} +.mdi-fan:before { + content: "\F210"; +} +.mdi-fast-forward:before { + content: "\F211"; +} +.mdi-fax:before { + content: "\F212"; +} +.mdi-ferry:before { + content: "\F213"; +} +.mdi-file:before { + content: "\F214"; +} +.mdi-file-chart:before { + content: "\F215"; +} +.mdi-file-check:before { + content: "\F216"; +} +.mdi-file-cloud:before { + content: "\F217"; +} +.mdi-file-delimited:before { + content: "\F218"; +} +.mdi-file-document:before { + content: "\F219"; +} +.mdi-file-document-box:before { + content: "\F21A"; +} +.mdi-file-excel:before { + content: "\F21B"; +} +.mdi-file-excel-box:before { + content: "\F21C"; +} +.mdi-file-export:before { + content: "\F21D"; +} +.mdi-file-find:before { + content: "\F21E"; +} +.mdi-file-hidden:before { + content: "\F613"; +} +.mdi-file-image:before { + content: "\F21F"; +} +.mdi-file-import:before { + content: "\F220"; +} +.mdi-file-lock:before { + content: "\F221"; +} +.mdi-file-multiple:before { + content: "\F222"; +} +.mdi-file-music:before { + content: "\F223"; +} +.mdi-file-outline:before { + content: "\F224"; +} +.mdi-file-pdf:before { + content: "\F225"; +} +.mdi-file-pdf-box:before { + content: "\F226"; +} +.mdi-file-powerpoint:before { + content: "\F227"; +} +.mdi-file-powerpoint-box:before { + content: "\F228"; +} +.mdi-file-presentation-box:before { + content: "\F229"; +} +.mdi-file-restore:before { + content: "\F670"; +} +.mdi-file-send:before { + content: "\F22A"; +} +.mdi-file-tree:before { + content: "\F645"; +} +.mdi-file-video:before { + content: "\F22B"; +} +.mdi-file-word:before { + content: "\F22C"; +} +.mdi-file-word-box:before { + content: "\F22D"; +} +.mdi-file-xml:before { + content: "\F22E"; +} +.mdi-film:before { + content: "\F22F"; +} +.mdi-filmstrip:before { + content: "\F230"; +} +.mdi-filmstrip-off:before { + content: "\F231"; +} +.mdi-filter:before { + content: "\F232"; +} +.mdi-filter-outline:before { + content: "\F233"; +} +.mdi-filter-remove:before { + content: "\F234"; +} +.mdi-filter-remove-outline:before { + content: "\F235"; +} +.mdi-filter-variant:before { + content: "\F236"; +} +.mdi-fingerprint:before { + content: "\F237"; +} +.mdi-fire:before { + content: "\F238"; +} +.mdi-firefox:before { + content: "\F239"; +} +.mdi-fish:before { + content: "\F23A"; +} +.mdi-flag:before { + content: "\F23B"; +} +.mdi-flag-checkered:before { + content: "\F23C"; +} +.mdi-flag-outline:before { + content: "\F23D"; +} +.mdi-flag-outline-variant:before { + content: "\F23E"; +} +.mdi-flag-triangle:before { + content: "\F23F"; +} +.mdi-flag-variant:before { + content: "\F240"; +} +.mdi-flash:before { + content: "\F241"; +} +.mdi-flash-auto:before { + content: "\F242"; +} +.mdi-flash-off:before { + content: "\F243"; +} +.mdi-flashlight:before { + content: "\F244"; +} +.mdi-flashlight-off:before { + content: "\F245"; +} +.mdi-flask:before { + content: "\F093"; +} +.mdi-flask-empty:before { + content: "\F094"; +} +.mdi-flask-empty-outline:before { + content: "\F095"; +} +.mdi-flask-outline:before { + content: "\F096"; +} +.mdi-flattr:before { + content: "\F246"; +} +.mdi-flip-to-back:before { + content: "\F247"; +} +.mdi-flip-to-front:before { + content: "\F248"; +} +.mdi-floppy:before { + content: "\F249"; +} +.mdi-flower:before { + content: "\F24A"; +} +.mdi-folder:before { + content: "\F24B"; +} +.mdi-folder-account:before { + content: "\F24C"; +} +.mdi-folder-download:before { + content: "\F24D"; +} +.mdi-folder-google-drive:before { + content: "\F24E"; +} +.mdi-folder-image:before { + content: "\F24F"; +} +.mdi-folder-lock:before { + content: "\F250"; +} +.mdi-folder-lock-open:before { + content: "\F251"; +} +.mdi-folder-move:before { + content: "\F252"; +} +.mdi-folder-multiple:before { + content: "\F253"; +} +.mdi-folder-multiple-image:before { + content: "\F254"; +} +.mdi-folder-multiple-outline:before { + content: "\F255"; +} +.mdi-folder-outline:before { + content: "\F256"; +} +.mdi-folder-plus:before { + content: "\F257"; +} +.mdi-folder-remove:before { + content: "\F258"; +} +.mdi-folder-upload:before { + content: "\F259"; +} +.mdi-food:before { + content: "\F25A"; +} +.mdi-food-apple:before { + content: "\F25B"; +} +.mdi-food-fork-drink:before { + content: "\F5F2"; +} +.mdi-food-off:before { + content: "\F5F3"; +} +.mdi-food-variant:before { + content: "\F25C"; +} +.mdi-football:before { + content: "\F25D"; +} +.mdi-football-australian:before { + content: "\F25E"; +} +.mdi-football-helmet:before { + content: "\F25F"; +} +.mdi-format-align-center:before { + content: "\F260"; +} +.mdi-format-align-justify:before { + content: "\F261"; +} +.mdi-format-align-left:before { + content: "\F262"; +} +.mdi-format-align-right:before { + content: "\F263"; +} +.mdi-format-annotation-plus:before { + content: "\F646"; +} +.mdi-format-bold:before { + content: "\F264"; +} +.mdi-format-clear:before { + content: "\F265"; +} +.mdi-format-color-fill:before { + content: "\F266"; +} +.mdi-format-float-center:before { + content: "\F267"; +} +.mdi-format-float-left:before { + content: "\F268"; +} +.mdi-format-float-none:before { + content: "\F269"; +} +.mdi-format-float-right:before { + content: "\F26A"; +} +.mdi-format-header-1:before { + content: "\F26B"; +} +.mdi-format-header-2:before { + content: "\F26C"; +} +.mdi-format-header-3:before { + content: "\F26D"; +} +.mdi-format-header-4:before { + content: "\F26E"; +} +.mdi-format-header-5:before { + content: "\F26F"; +} +.mdi-format-header-6:before { + content: "\F270"; +} +.mdi-format-header-decrease:before { + content: "\F271"; +} +.mdi-format-header-equal:before { + content: "\F272"; +} +.mdi-format-header-increase:before { + content: "\F273"; +} +.mdi-format-header-pound:before { + content: "\F274"; +} +.mdi-format-horizontal-align-center:before { + content: "\F61E"; +} +.mdi-format-horizontal-align-left:before { + content: "\F61F"; +} +.mdi-format-horizontal-align-right:before { + content: "\F620"; +} +.mdi-format-indent-decrease:before { + content: "\F275"; +} +.mdi-format-indent-increase:before { + content: "\F276"; +} +.mdi-format-italic:before { + content: "\F277"; +} +.mdi-format-line-spacing:before { + content: "\F278"; +} +.mdi-format-line-style:before { + content: "\F5C8"; +} +.mdi-format-line-weight:before { + content: "\F5C9"; +} +.mdi-format-list-bulleted:before { + content: "\F279"; +} +.mdi-format-list-bulleted-type:before { + content: "\F27A"; +} +.mdi-format-list-numbers:before { + content: "\F27B"; +} +.mdi-format-paint:before { + content: "\F27C"; +} +.mdi-format-paragraph:before { + content: "\F27D"; +} +.mdi-format-quote:before { + content: "\F27E"; +} +.mdi-format-size:before { + content: "\F27F"; +} +.mdi-format-strikethrough:before { + content: "\F280"; +} +.mdi-format-strikethrough-variant:before { + content: "\F281"; +} +.mdi-format-subscript:before { + content: "\F282"; +} +.mdi-format-superscript:before { + content: "\F283"; +} +.mdi-format-text:before { + content: "\F284"; +} +.mdi-format-textdirection-l-to-r:before { + content: "\F285"; +} +.mdi-format-textdirection-r-to-l:before { + content: "\F286"; +} +.mdi-format-title:before { + content: "\F5F4"; +} +.mdi-format-underline:before { + content: "\F287"; +} +.mdi-format-vertical-align-bottom:before { + content: "\F621"; +} +.mdi-format-vertical-align-center:before { + content: "\F622"; +} +.mdi-format-vertical-align-top:before { + content: "\F623"; +} +.mdi-format-wrap-inline:before { + content: "\F288"; +} +.mdi-format-wrap-square:before { + content: "\F289"; +} +.mdi-format-wrap-tight:before { + content: "\F28A"; +} +.mdi-format-wrap-top-bottom:before { + content: "\F28B"; +} +.mdi-forum:before { + content: "\F28C"; +} +.mdi-forward:before { + content: "\F28D"; +} +.mdi-foursquare:before { + content: "\F28E"; +} +.mdi-fridge:before { + content: "\F28F"; +} +.mdi-fridge-filled:before { + content: "\F290"; +} +.mdi-fridge-filled-bottom:before { + content: "\F291"; +} +.mdi-fridge-filled-top:before { + content: "\F292"; +} +.mdi-fullscreen:before { + content: "\F293"; +} +.mdi-fullscreen-exit:before { + content: "\F294"; +} +.mdi-function:before { + content: "\F295"; +} +.mdi-gamepad:before { + content: "\F296"; +} +.mdi-gamepad-variant:before { + content: "\F297"; +} +.mdi-gas-cylinder:before { + content: "\F647"; +} +.mdi-gas-station:before { + content: "\F298"; +} +.mdi-gate:before { + content: "\F299"; +} +.mdi-gauge:before { + content: "\F29A"; +} +.mdi-gavel:before { + content: "\F29B"; +} +.mdi-gender-female:before { + content: "\F29C"; +} +.mdi-gender-male:before { + content: "\F29D"; +} +.mdi-gender-male-female:before { + content: "\F29E"; +} +.mdi-gender-transgender:before { + content: "\F29F"; +} +.mdi-ghost:before { + content: "\F2A0"; +} +.mdi-gift:before { + content: "\F2A1"; +} +.mdi-git:before { + content: "\F2A2"; +} +.mdi-github-box:before { + content: "\F2A3"; +} +.mdi-github-circle:before { + content: "\F2A4"; +} +.mdi-glass-flute:before { + content: "\F2A5"; +} +.mdi-glass-mug:before { + content: "\F2A6"; +} +.mdi-glass-stange:before { + content: "\F2A7"; +} +.mdi-glass-tulip:before { + content: "\F2A8"; +} +.mdi-glassdoor:before { + content: "\F2A9"; +} +.mdi-glasses:before { + content: "\F2AA"; +} +.mdi-gmail:before { + content: "\F2AB"; +} +.mdi-gnome:before { + content: "\F2AC"; +} +.mdi-google:before { + content: "\F2AD"; +} +.mdi-google-cardboard:before { + content: "\F2AE"; +} +.mdi-google-chrome:before { + content: "\F2AF"; +} +.mdi-google-circles:before { + content: "\F2B0"; +} +.mdi-google-circles-communities:before { + content: "\F2B1"; +} +.mdi-google-circles-extended:before { + content: "\F2B2"; +} +.mdi-google-circles-group:before { + content: "\F2B3"; +} +.mdi-google-controller:before { + content: "\F2B4"; +} +.mdi-google-controller-off:before { + content: "\F2B5"; +} +.mdi-google-drive:before { + content: "\F2B6"; +} +.mdi-google-earth:before { + content: "\F2B7"; +} +.mdi-google-glass:before { + content: "\F2B8"; +} +.mdi-google-maps:before { + content: "\F5F5"; +} +.mdi-google-nearby:before { + content: "\F2B9"; +} +.mdi-google-pages:before { + content: "\F2BA"; +} +.mdi-google-physical-web:before { + content: "\F2BB"; +} +.mdi-google-play:before { + content: "\F2BC"; +} +.mdi-google-plus:before { + content: "\F2BD"; +} +.mdi-google-plus-box:before { + content: "\F2BE"; +} +.mdi-google-translate:before { + content: "\F2BF"; +} +.mdi-google-wallet:before { + content: "\F2C0"; +} +.mdi-grease-pencil:before { + content: "\F648"; +} +.mdi-grid:before { + content: "\F2C1"; +} +.mdi-grid-off:before { + content: "\F2C2"; +} +.mdi-group:before { + content: "\F2C3"; +} +.mdi-guitar-electric:before { + content: "\F2C4"; +} +.mdi-guitar-pick:before { + content: "\F2C5"; +} +.mdi-guitar-pick-outline:before { + content: "\F2C6"; +} +.mdi-hackernews:before { + content: "\F624"; +} +.mdi-hand-pointing-right:before { + content: "\F2C7"; +} +.mdi-hanger:before { + content: "\F2C8"; +} +.mdi-hangouts:before { + content: "\F2C9"; +} +.mdi-harddisk:before { + content: "\F2CA"; +} +.mdi-headphones:before { + content: "\F2CB"; +} +.mdi-headphones-box:before { + content: "\F2CC"; +} +.mdi-headphones-settings:before { + content: "\F2CD"; +} +.mdi-headset:before { + content: "\F2CE"; +} +.mdi-headset-dock:before { + content: "\F2CF"; +} +.mdi-headset-off:before { + content: "\F2D0"; +} +.mdi-heart:before { + content: "\F2D1"; +} +.mdi-heart-box:before { + content: "\F2D2"; +} +.mdi-heart-box-outline:before { + content: "\F2D3"; +} +.mdi-heart-broken:before { + content: "\F2D4"; +} +.mdi-heart-outline:before { + content: "\F2D5"; +} +.mdi-heart-pulse:before { + content: "\F5F6"; +} +.mdi-help:before { + content: "\F2D6"; +} +.mdi-help-circle:before { + content: "\F2D7"; +} +.mdi-help-circle-outline:before { + content: "\F625"; +} +.mdi-hexagon:before { + content: "\F2D8"; +} +.mdi-hexagon-outline:before { + content: "\F2D9"; +} +.mdi-highway:before { + content: "\F5F7"; +} +.mdi-history:before { + content: "\F2DA"; +} +.mdi-hololens:before { + content: "\F2DB"; +} +.mdi-home:before { + content: "\F2DC"; +} +.mdi-home-map-marker:before { + content: "\F5F8"; +} +.mdi-home-modern:before { + content: "\F2DD"; +} +.mdi-home-variant:before { + content: "\F2DE"; +} +.mdi-hops:before { + content: "\F2DF"; +} +.mdi-hospital:before { + content: "\F2E0"; +} +.mdi-hospital-building:before { + content: "\F2E1"; +} +.mdi-hospital-marker:before { + content: "\F2E2"; +} +.mdi-hotel:before { + content: "\F2E3"; +} +.mdi-houzz:before { + content: "\F2E4"; +} +.mdi-houzz-box:before { + content: "\F2E5"; +} +.mdi-human:before { + content: "\F2E6"; +} +.mdi-human-child:before { + content: "\F2E7"; +} +.mdi-human-female:before { + content: "\F649"; +} +.mdi-human-greeting:before { + content: "\F64A"; +} +.mdi-human-handsdown:before { + content: "\F64B"; +} +.mdi-human-handsup:before { + content: "\F64C"; +} +.mdi-human-male:before { + content: "\F64D"; +} +.mdi-human-male-female:before { + content: "\F2E8"; +} +.mdi-human-pregnant:before { + content: "\F5CF"; +} +.mdi-image:before { + content: "\F2E9"; +} +.mdi-image-album:before { + content: "\F2EA"; +} +.mdi-image-area:before { + content: "\F2EB"; +} +.mdi-image-area-close:before { + content: "\F2EC"; +} +.mdi-image-broken:before { + content: "\F2ED"; +} +.mdi-image-broken-variant:before { + content: "\F2EE"; +} +.mdi-image-filter:before { + content: "\F2EF"; +} +.mdi-image-filter-black-white:before { + content: "\F2F0"; +} +.mdi-image-filter-center-focus:before { + content: "\F2F1"; +} +.mdi-image-filter-center-focus-weak:before { + content: "\F2F2"; +} +.mdi-image-filter-drama:before { + content: "\F2F3"; +} +.mdi-image-filter-frames:before { + content: "\F2F4"; +} +.mdi-image-filter-hdr:before { + content: "\F2F5"; +} +.mdi-image-filter-none:before { + content: "\F2F6"; +} +.mdi-image-filter-tilt-shift:before { + content: "\F2F7"; +} +.mdi-image-filter-vintage:before { + content: "\F2F8"; +} +.mdi-image-multiple:before { + content: "\F2F9"; +} +.mdi-import:before { + content: "\F2FA"; +} +.mdi-inbox:before { + content: "\F2FB"; +} +.mdi-incognito:before { + content: "\F5F9"; +} +.mdi-information:before { + content: "\F2FC"; +} +.mdi-information-outline:before { + content: "\F2FD"; +} +.mdi-information-variant:before { + content: "\F64E"; +} +.mdi-instagram:before { + content: "\F2FE"; +} +.mdi-instapaper:before { + content: "\F2FF"; +} +.mdi-internet-explorer:before { + content: "\F300"; +} +.mdi-invert-colors:before { + content: "\F301"; +} +.mdi-jeepney:before { + content: "\F302"; +} +.mdi-jira:before { + content: "\F303"; +} +.mdi-jsfiddle:before { + content: "\F304"; +} +.mdi-json:before { + content: "\F626"; +} +.mdi-keg:before { + content: "\F305"; +} +.mdi-kettle:before { + content: "\F5FA"; +} +.mdi-key:before { + content: "\F306"; +} +.mdi-key-change:before { + content: "\F307"; +} +.mdi-key-minus:before { + content: "\F308"; +} +.mdi-key-plus:before { + content: "\F309"; +} +.mdi-key-remove:before { + content: "\F30A"; +} +.mdi-key-variant:before { + content: "\F30B"; +} +.mdi-keyboard:before { + content: "\F30C"; +} +.mdi-keyboard-backspace:before { + content: "\F30D"; +} +.mdi-keyboard-caps:before { + content: "\F30E"; +} +.mdi-keyboard-close:before { + content: "\F30F"; +} +.mdi-keyboard-off:before { + content: "\F310"; +} +.mdi-keyboard-return:before { + content: "\F311"; +} +.mdi-keyboard-tab:before { + content: "\F312"; +} +.mdi-keyboard-variant:before { + content: "\F313"; +} +.mdi-kodi:before { + content: "\F314"; +} +.mdi-label:before { + content: "\F315"; +} +.mdi-label-outline:before { + content: "\F316"; +} +.mdi-lambda:before { + content: "\F627"; +} +.mdi-lan:before { + content: "\F317"; +} +.mdi-lan-connect:before { + content: "\F318"; +} +.mdi-lan-disconnect:before { + content: "\F319"; +} +.mdi-lan-pending:before { + content: "\F31A"; +} +.mdi-language-c:before { + content: "\F671"; +} +.mdi-language-cpp:before { + content: "\F672"; +} +.mdi-language-csharp:before { + content: "\F31B"; +} +.mdi-language-css3:before { + content: "\F31C"; +} +.mdi-language-html5:before { + content: "\F31D"; +} +.mdi-language-javascript:before { + content: "\F31E"; +} +.mdi-language-php:before { + content: "\F31F"; +} +.mdi-language-python:before { + content: "\F320"; +} +.mdi-language-python-text:before { + content: "\F321"; +} +.mdi-laptop:before { + content: "\F322"; +} +.mdi-laptop-chromebook:before { + content: "\F323"; +} +.mdi-laptop-mac:before { + content: "\F324"; +} +.mdi-laptop-windows:before { + content: "\F325"; +} +.mdi-lastfm:before { + content: "\F326"; +} +.mdi-launch:before { + content: "\F327"; +} +.mdi-layers:before { + content: "\F328"; +} +.mdi-layers-off:before { + content: "\F329"; +} +.mdi-lead-pencil:before { + content: "\F64F"; +} +.mdi-leaf:before { + content: "\F32A"; +} +.mdi-led-off:before { + content: "\F32B"; +} +.mdi-led-on:before { + content: "\F32C"; +} +.mdi-led-outline:before { + content: "\F32D"; +} +.mdi-led-variant-off:before { + content: "\F32E"; +} +.mdi-led-variant-on:before { + content: "\F32F"; +} +.mdi-led-variant-outline:before { + content: "\F330"; +} +.mdi-library:before { + content: "\F331"; +} +.mdi-library-books:before { + content: "\F332"; +} +.mdi-library-music:before { + content: "\F333"; +} +.mdi-library-plus:before { + content: "\F334"; +} +.mdi-lightbulb:before { + content: "\F335"; +} +.mdi-lightbulb-outline:before { + content: "\F336"; +} +.mdi-link:before { + content: "\F337"; +} +.mdi-link-off:before { + content: "\F338"; +} +.mdi-link-variant:before { + content: "\F339"; +} +.mdi-link-variant-off:before { + content: "\F33A"; +} +.mdi-linkedin:before { + content: "\F33B"; +} +.mdi-linkedin-box:before { + content: "\F33C"; +} +.mdi-linux:before { + content: "\F33D"; +} +.mdi-lock:before { + content: "\F33E"; +} +.mdi-lock-open:before { + content: "\F33F"; +} +.mdi-lock-open-outline:before { + content: "\F340"; +} +.mdi-lock-outline:before { + content: "\F341"; +} +.mdi-lock-plus:before { + content: "\F5FB"; +} +.mdi-login:before { + content: "\F342"; +} +.mdi-login-variant:before { + content: "\F5FC"; +} +.mdi-logout:before { + content: "\F343"; +} +.mdi-logout-variant:before { + content: "\F5FD"; +} +.mdi-looks:before { + content: "\F344"; +} +.mdi-loupe:before { + content: "\F345"; +} +.mdi-lumx:before { + content: "\F346"; +} +.mdi-magnet:before { + content: "\F347"; +} +.mdi-magnet-on:before { + content: "\F348"; +} +.mdi-magnify:before { + content: "\F349"; +} +.mdi-magnify-minus:before { + content: "\F34A"; +} +.mdi-magnify-plus:before { + content: "\F34B"; +} +.mdi-mail-ru:before { + content: "\F34C"; +} +.mdi-map:before { + content: "\F34D"; +} +.mdi-map-marker:before { + content: "\F34E"; +} +.mdi-map-marker-circle:before { + content: "\F34F"; +} +.mdi-map-marker-minus:before { + content: "\F650"; +} +.mdi-map-marker-multiple:before { + content: "\F350"; +} +.mdi-map-marker-off:before { + content: "\F351"; +} +.mdi-map-marker-plus:before { + content: "\F651"; +} +.mdi-map-marker-radius:before { + content: "\F352"; +} +.mdi-margin:before { + content: "\F353"; +} +.mdi-markdown:before { + content: "\F354"; +} +.mdi-marker:before { + content: "\F652"; +} +.mdi-marker-check:before { + content: "\F355"; +} +.mdi-martini:before { + content: "\F356"; +} +.mdi-material-ui:before { + content: "\F357"; +} +.mdi-math-compass:before { + content: "\F358"; +} +.mdi-matrix:before { + content: "\F628"; +} +.mdi-maxcdn:before { + content: "\F359"; +} +.mdi-medium:before { + content: "\F35A"; +} +.mdi-memory:before { + content: "\F35B"; +} +.mdi-menu:before { + content: "\F35C"; +} +.mdi-menu-down:before { + content: "\F35D"; +} +.mdi-menu-left:before { + content: "\F35E"; +} +.mdi-menu-right:before { + content: "\F35F"; +} +.mdi-menu-up:before { + content: "\F360"; +} +.mdi-message:before { + content: "\F361"; +} +.mdi-message-alert:before { + content: "\F362"; +} +.mdi-message-draw:before { + content: "\F363"; +} +.mdi-message-image:before { + content: "\F364"; +} +.mdi-message-outline:before { + content: "\F365"; +} +.mdi-message-plus:before { + content: "\F653"; +} +.mdi-message-processing:before { + content: "\F366"; +} +.mdi-message-reply:before { + content: "\F367"; +} +.mdi-message-reply-text:before { + content: "\F368"; +} +.mdi-message-text:before { + content: "\F369"; +} +.mdi-message-text-outline:before { + content: "\F36A"; +} +.mdi-message-video:before { + content: "\F36B"; +} +.mdi-meteor:before { + content: "\F629"; +} +.mdi-microphone:before { + content: "\F36C"; +} +.mdi-microphone-off:before { + content: "\F36D"; +} +.mdi-microphone-outline:before { + content: "\F36E"; +} +.mdi-microphone-settings:before { + content: "\F36F"; +} +.mdi-microphone-variant:before { + content: "\F370"; +} +.mdi-microphone-variant-off:before { + content: "\F371"; +} +.mdi-microscope:before { + content: "\F654"; +} +.mdi-microsoft:before { + content: "\F372"; +} +.mdi-minecraft:before { + content: "\F373"; +} +.mdi-minus:before { + content: "\F374"; +} +.mdi-minus-box:before { + content: "\F375"; +} +.mdi-minus-circle:before { + content: "\F376"; +} +.mdi-minus-circle-outline:before { + content: "\F377"; +} +.mdi-minus-network:before { + content: "\F378"; +} +.mdi-mixcloud:before { + content: "\F62A"; +} +.mdi-monitor:before { + content: "\F379"; +} +.mdi-monitor-multiple:before { + content: "\F37A"; +} +.mdi-more:before { + content: "\F37B"; +} +.mdi-motorbike:before { + content: "\F37C"; +} +.mdi-mouse:before { + content: "\F37D"; +} +.mdi-mouse-off:before { + content: "\F37E"; +} +.mdi-mouse-variant:before { + content: "\F37F"; +} +.mdi-mouse-variant-off:before { + content: "\F380"; +} +.mdi-move-resize:before { + content: "\F655"; +} +.mdi-move-resize-variant:before { + content: "\F656"; +} +.mdi-movie:before { + content: "\F381"; +} +.mdi-multiplication:before { + content: "\F382"; +} +.mdi-multiplication-box:before { + content: "\F383"; +} +.mdi-music-box:before { + content: "\F384"; +} +.mdi-music-box-outline:before { + content: "\F385"; +} +.mdi-music-circle:before { + content: "\F386"; +} +.mdi-music-note:before { + content: "\F387"; +} +.mdi-music-note-bluetooth:before { + content: "\F5FE"; +} +.mdi-music-note-bluetooth-off:before { + content: "\F5FF"; +} +.mdi-music-note-eighth:before { + content: "\F388"; +} +.mdi-music-note-half:before { + content: "\F389"; +} +.mdi-music-note-off:before { + content: "\F38A"; +} +.mdi-music-note-quarter:before { + content: "\F38B"; +} +.mdi-music-note-sixteenth:before { + content: "\F38C"; +} +.mdi-music-note-whole:before { + content: "\F38D"; +} +.mdi-nature:before { + content: "\F38E"; +} +.mdi-nature-people:before { + content: "\F38F"; +} +.mdi-navigation:before { + content: "\F390"; +} +.mdi-near-me:before { + content: "\F5CD"; +} +.mdi-needle:before { + content: "\F391"; +} +.mdi-nest-protect:before { + content: "\F392"; +} +.mdi-nest-thermostat:before { + content: "\F393"; +} +.mdi-new-box:before { + content: "\F394"; +} +.mdi-newspaper:before { + content: "\F395"; +} +.mdi-nfc:before { + content: "\F396"; +} +.mdi-nfc-tap:before { + content: "\F397"; +} +.mdi-nfc-variant:before { + content: "\F398"; +} +.mdi-nodejs:before { + content: "\F399"; +} +.mdi-note:before { + content: "\F39A"; +} +.mdi-note-outline:before { + content: "\F39B"; +} +.mdi-note-plus:before { + content: "\F39C"; +} +.mdi-note-plus-outline:before { + content: "\F39D"; +} +.mdi-note-text:before { + content: "\F39E"; +} +.mdi-notification-clear-all:before { + content: "\F39F"; +} +.mdi-numeric:before { + content: "\F3A0"; +} +.mdi-numeric-0-box:before { + content: "\F3A1"; +} +.mdi-numeric-0-box-multiple-outline:before { + content: "\F3A2"; +} +.mdi-numeric-0-box-outline:before { + content: "\F3A3"; +} +.mdi-numeric-1-box:before { + content: "\F3A4"; +} +.mdi-numeric-1-box-multiple-outline:before { + content: "\F3A5"; +} +.mdi-numeric-1-box-outline:before { + content: "\F3A6"; +} +.mdi-numeric-2-box:before { + content: "\F3A7"; +} +.mdi-numeric-2-box-multiple-outline:before { + content: "\F3A8"; +} +.mdi-numeric-2-box-outline:before { + content: "\F3A9"; +} +.mdi-numeric-3-box:before { + content: "\F3AA"; +} +.mdi-numeric-3-box-multiple-outline:before { + content: "\F3AB"; +} +.mdi-numeric-3-box-outline:before { + content: "\F3AC"; +} +.mdi-numeric-4-box:before { + content: "\F3AD"; +} +.mdi-numeric-4-box-multiple-outline:before { + content: "\F3AE"; +} +.mdi-numeric-4-box-outline:before { + content: "\F3AF"; +} +.mdi-numeric-5-box:before { + content: "\F3B0"; +} +.mdi-numeric-5-box-multiple-outline:before { + content: "\F3B1"; +} +.mdi-numeric-5-box-outline:before { + content: "\F3B2"; +} +.mdi-numeric-6-box:before { + content: "\F3B3"; +} +.mdi-numeric-6-box-multiple-outline:before { + content: "\F3B4"; +} +.mdi-numeric-6-box-outline:before { + content: "\F3B5"; +} +.mdi-numeric-7-box:before { + content: "\F3B6"; +} +.mdi-numeric-7-box-multiple-outline:before { + content: "\F3B7"; +} +.mdi-numeric-7-box-outline:before { + content: "\F3B8"; +} +.mdi-numeric-8-box:before { + content: "\F3B9"; +} +.mdi-numeric-8-box-multiple-outline:before { + content: "\F3BA"; +} +.mdi-numeric-8-box-outline:before { + content: "\F3BB"; +} +.mdi-numeric-9-box:before { + content: "\F3BC"; +} +.mdi-numeric-9-box-multiple-outline:before { + content: "\F3BD"; +} +.mdi-numeric-9-box-outline:before { + content: "\F3BE"; +} +.mdi-numeric-9-plus-box:before { + content: "\F3BF"; +} +.mdi-numeric-9-plus-box-multiple-outline:before { + content: "\F3C0"; +} +.mdi-numeric-9-plus-box-outline:before { + content: "\F3C1"; +} +.mdi-nutrition:before { + content: "\F3C2"; +} +.mdi-octagon:before { + content: "\F3C3"; +} +.mdi-octagon-outline:before { + content: "\F3C4"; +} +.mdi-odnoklassniki:before { + content: "\F3C5"; +} +.mdi-office:before { + content: "\F3C6"; +} +.mdi-oil:before { + content: "\F3C7"; +} +.mdi-oil-temperature:before { + content: "\F3C8"; +} +.mdi-omega:before { + content: "\F3C9"; +} +.mdi-onedrive:before { + content: "\F3CA"; +} +.mdi-opacity:before { + content: "\F5CC"; +} +.mdi-open-in-app:before { + content: "\F3CB"; +} +.mdi-open-in-new:before { + content: "\F3CC"; +} +.mdi-openid:before { + content: "\F3CD"; +} +.mdi-opera:before { + content: "\F3CE"; +} +.mdi-ornament:before { + content: "\F3CF"; +} +.mdi-ornament-variant:before { + content: "\F3D0"; +} +.mdi-outbox:before { + content: "\F3D1"; +} +.mdi-owl:before { + content: "\F3D2"; +} +.mdi-package:before { + content: "\F3D3"; +} +.mdi-package-down:before { + content: "\F3D4"; +} +.mdi-package-up:before { + content: "\F3D5"; +} +.mdi-package-variant:before { + content: "\F3D6"; +} +.mdi-package-variant-closed:before { + content: "\F3D7"; +} +.mdi-page-first:before { + content: "\F600"; +} +.mdi-page-last:before { + content: "\F601"; +} +.mdi-palette:before { + content: "\F3D8"; +} +.mdi-palette-advanced:before { + content: "\F3D9"; +} +.mdi-panda:before { + content: "\F3DA"; +} +.mdi-pandora:before { + content: "\F3DB"; +} +.mdi-panorama:before { + content: "\F3DC"; +} +.mdi-panorama-fisheye:before { + content: "\F3DD"; +} +.mdi-panorama-horizontal:before { + content: "\F3DE"; +} +.mdi-panorama-vertical:before { + content: "\F3DF"; +} +.mdi-panorama-wide-angle:before { + content: "\F3E0"; +} +.mdi-paper-cut-vertical:before { + content: "\F3E1"; +} +.mdi-paperclip:before { + content: "\F3E2"; +} +.mdi-parking:before { + content: "\F3E3"; +} +.mdi-pause:before { + content: "\F3E4"; +} +.mdi-pause-circle:before { + content: "\F3E5"; +} +.mdi-pause-circle-outline:before { + content: "\F3E6"; +} +.mdi-pause-octagon:before { + content: "\F3E7"; +} +.mdi-pause-octagon-outline:before { + content: "\F3E8"; +} +.mdi-paw:before { + content: "\F3E9"; +} +.mdi-paw-off:before { + content: "\F657"; +} +.mdi-pen:before { + content: "\F3EA"; +} +.mdi-pencil:before { + content: "\F3EB"; +} +.mdi-pencil-box:before { + content: "\F3EC"; +} +.mdi-pencil-box-outline:before { + content: "\F3ED"; +} +.mdi-pencil-lock:before { + content: "\F3EE"; +} +.mdi-pencil-off:before { + content: "\F3EF"; +} +.mdi-percent:before { + content: "\F3F0"; +} +.mdi-pharmacy:before { + content: "\F3F1"; +} +.mdi-phone:before { + content: "\F3F2"; +} +.mdi-phone-bluetooth:before { + content: "\F3F3"; +} +.mdi-phone-classic:before { + content: "\F602"; +} +.mdi-phone-forward:before { + content: "\F3F4"; +} +.mdi-phone-hangup:before { + content: "\F3F5"; +} +.mdi-phone-in-talk:before { + content: "\F3F6"; +} +.mdi-phone-incoming:before { + content: "\F3F7"; +} +.mdi-phone-locked:before { + content: "\F3F8"; +} +.mdi-phone-log:before { + content: "\F3F9"; +} +.mdi-phone-minus:before { + content: "\F658"; +} +.mdi-phone-missed:before { + content: "\F3FA"; +} +.mdi-phone-outgoing:before { + content: "\F3FB"; +} +.mdi-phone-paused:before { + content: "\F3FC"; +} +.mdi-phone-plus:before { + content: "\F659"; +} +.mdi-phone-settings:before { + content: "\F3FD"; +} +.mdi-phone-voip:before { + content: "\F3FE"; +} +.mdi-pi:before { + content: "\F3FF"; +} +.mdi-pi-box:before { + content: "\F400"; +} +.mdi-pig:before { + content: "\F401"; +} +.mdi-pill:before { + content: "\F402"; +} +.mdi-pin:before { + content: "\F403"; +} +.mdi-pin-off:before { + content: "\F404"; +} +.mdi-pine-tree:before { + content: "\F405"; +} +.mdi-pine-tree-box:before { + content: "\F406"; +} +.mdi-pinterest:before { + content: "\F407"; +} +.mdi-pinterest-box:before { + content: "\F408"; +} +.mdi-pizza:before { + content: "\F409"; +} +.mdi-play:before { + content: "\F40A"; +} +.mdi-play-box-outline:before { + content: "\F40B"; +} +.mdi-play-circle:before { + content: "\F40C"; +} +.mdi-play-circle-outline:before { + content: "\F40D"; +} +.mdi-play-pause:before { + content: "\F40E"; +} +.mdi-play-protected-content:before { + content: "\F40F"; +} +.mdi-playlist-check:before { + content: "\F5C7"; +} +.mdi-playlist-minus:before { + content: "\F410"; +} +.mdi-playlist-play:before { + content: "\F411"; +} +.mdi-playlist-plus:before { + content: "\F412"; +} +.mdi-playlist-remove:before { + content: "\F413"; +} +.mdi-playstation:before { + content: "\F414"; +} +.mdi-plus:before { + content: "\F415"; +} +.mdi-plus-box:before { + content: "\F416"; +} +.mdi-plus-circle:before { + content: "\F417"; +} +.mdi-plus-circle-multiple-outline:before { + content: "\F418"; +} +.mdi-plus-circle-outline:before { + content: "\F419"; +} +.mdi-plus-network:before { + content: "\F41A"; +} +.mdi-plus-one:before { + content: "\F41B"; +} +.mdi-pocket:before { + content: "\F41C"; +} +.mdi-pokeball:before { + content: "\F41D"; +} +.mdi-polaroid:before { + content: "\F41E"; +} +.mdi-poll:before { + content: "\F41F"; +} +.mdi-poll-box:before { + content: "\F420"; +} +.mdi-polymer:before { + content: "\F421"; +} +.mdi-pool:before { + content: "\F606"; +} +.mdi-popcorn:before { + content: "\F422"; +} +.mdi-pot:before { + content: "\F65A"; +} +.mdi-pot-mix:before { + content: "\F65B"; +} +.mdi-pound:before { + content: "\F423"; +} +.mdi-pound-box:before { + content: "\F424"; +} +.mdi-power:before { + content: "\F425"; +} +.mdi-power-settings:before { + content: "\F426"; +} +.mdi-power-socket:before { + content: "\F427"; +} +.mdi-presentation:before { + content: "\F428"; +} +.mdi-presentation-play:before { + content: "\F429"; +} +.mdi-printer:before { + content: "\F42A"; +} +.mdi-printer-3d:before { + content: "\F42B"; +} +.mdi-printer-alert:before { + content: "\F42C"; +} +.mdi-priority-high:before { + content: "\F603"; +} +.mdi-priority-low:before { + content: "\F604"; +} +.mdi-professional-hexagon:before { + content: "\F42D"; +} +.mdi-projector:before { + content: "\F42E"; +} +.mdi-projector-screen:before { + content: "\F42F"; +} +.mdi-pulse:before { + content: "\F430"; +} +.mdi-puzzle:before { + content: "\F431"; +} +.mdi-qqchat:before { + content: "\F605"; +} +.mdi-qrcode:before { + content: "\F432"; +} +.mdi-qrcode-scan:before { + content: "\F433"; +} +.mdi-quadcopter:before { + content: "\F434"; +} +.mdi-quality-high:before { + content: "\F435"; +} +.mdi-quicktime:before { + content: "\F436"; +} +.mdi-radar:before { + content: "\F437"; +} +.mdi-radiator:before { + content: "\F438"; +} +.mdi-radio:before { + content: "\F439"; +} +.mdi-radio-handheld:before { + content: "\F43A"; +} +.mdi-radio-tower:before { + content: "\F43B"; +} +.mdi-radioactive:before { + content: "\F43C"; +} +.mdi-radiobox-blank:before { + content: "\F43D"; +} +.mdi-radiobox-marked:before { + content: "\F43E"; +} +.mdi-raspberrypi:before { + content: "\F43F"; +} +.mdi-ray-end:before { + content: "\F440"; +} +.mdi-ray-end-arrow:before { + content: "\F441"; +} +.mdi-ray-start:before { + content: "\F442"; +} +.mdi-ray-start-arrow:before { + content: "\F443"; +} +.mdi-ray-start-end:before { + content: "\F444"; +} +.mdi-ray-vertex:before { + content: "\F445"; +} +.mdi-rdio:before { + content: "\F446"; +} +.mdi-read:before { + content: "\F447"; +} +.mdi-readability:before { + content: "\F448"; +} +.mdi-receipt:before { + content: "\F449"; +} +.mdi-record:before { + content: "\F44A"; +} +.mdi-record-rec:before { + content: "\F44B"; +} +.mdi-recycle:before { + content: "\F44C"; +} +.mdi-reddit:before { + content: "\F44D"; +} +.mdi-redo:before { + content: "\F44E"; +} +.mdi-redo-variant:before { + content: "\F44F"; +} +.mdi-refresh:before { + content: "\F450"; +} +.mdi-regex:before { + content: "\F451"; +} +.mdi-relative-scale:before { + content: "\F452"; +} +.mdi-reload:before { + content: "\F453"; +} +.mdi-remote:before { + content: "\F454"; +} +.mdi-rename-box:before { + content: "\F455"; +} +.mdi-repeat:before { + content: "\F456"; +} +.mdi-repeat-off:before { + content: "\F457"; +} +.mdi-repeat-once:before { + content: "\F458"; +} +.mdi-replay:before { + content: "\F459"; +} +.mdi-reply:before { + content: "\F45A"; +} +.mdi-reply-all:before { + content: "\F45B"; +} +.mdi-reproduction:before { + content: "\F45C"; +} +.mdi-resize-bottom-right:before { + content: "\F45D"; +} +.mdi-responsive:before { + content: "\F45E"; +} +.mdi-rewind:before { + content: "\F45F"; +} +.mdi-ribbon:before { + content: "\F460"; +} +.mdi-road:before { + content: "\F461"; +} +.mdi-road-variant:before { + content: "\F462"; +} +.mdi-rocket:before { + content: "\F463"; +} +.mdi-rotate-3d:before { + content: "\F464"; +} +.mdi-rotate-left:before { + content: "\F465"; +} +.mdi-rotate-left-variant:before { + content: "\F466"; +} +.mdi-rotate-right:before { + content: "\F467"; +} +.mdi-rotate-right-variant:before { + content: "\F468"; +} +.mdi-rounded-corner:before { + content: "\F607"; +} +.mdi-router-wireless:before { + content: "\F469"; +} +.mdi-routes:before { + content: "\F46A"; +} +.mdi-rowing:before { + content: "\F608"; +} +.mdi-rss:before { + content: "\F46B"; +} +.mdi-rss-box:before { + content: "\F46C"; +} +.mdi-ruler:before { + content: "\F46D"; +} +.mdi-run:before { + content: "\F46E"; +} +.mdi-sale:before { + content: "\F46F"; +} +.mdi-satellite:before { + content: "\F470"; +} +.mdi-satellite-variant:before { + content: "\F471"; +} +.mdi-saxophone:before { + content: "\F609"; +} +.mdi-scale:before { + content: "\F472"; +} +.mdi-scale-balance:before { + content: "\F5D1"; +} +.mdi-scale-bathroom:before { + content: "\F473"; +} +.mdi-school:before { + content: "\F474"; +} +.mdi-screen-rotation:before { + content: "\F475"; +} +.mdi-screen-rotation-lock:before { + content: "\F476"; +} +.mdi-screwdriver:before { + content: "\F477"; +} +.mdi-script:before { + content: "\F478"; +} +.mdi-sd:before { + content: "\F479"; +} +.mdi-seal:before { + content: "\F47A"; +} +.mdi-seat-flat:before { + content: "\F47B"; +} +.mdi-seat-flat-angled:before { + content: "\F47C"; +} +.mdi-seat-individual-suite:before { + content: "\F47D"; +} +.mdi-seat-legroom-extra:before { + content: "\F47E"; +} +.mdi-seat-legroom-normal:before { + content: "\F47F"; +} +.mdi-seat-legroom-reduced:before { + content: "\F480"; +} +.mdi-seat-recline-extra:before { + content: "\F481"; +} +.mdi-seat-recline-normal:before { + content: "\F482"; +} +.mdi-security:before { + content: "\F483"; +} +.mdi-security-network:before { + content: "\F484"; +} +.mdi-select:before { + content: "\F485"; +} +.mdi-select-all:before { + content: "\F486"; +} +.mdi-select-inverse:before { + content: "\F487"; +} +.mdi-select-off:before { + content: "\F488"; +} +.mdi-selection:before { + content: "\F489"; +} +.mdi-send:before { + content: "\F48A"; +} +.mdi-serial-port:before { + content: "\F65C"; +} +.mdi-server:before { + content: "\F48B"; +} +.mdi-server-minus:before { + content: "\F48C"; +} +.mdi-server-network:before { + content: "\F48D"; +} +.mdi-server-network-off:before { + content: "\F48E"; +} +.mdi-server-off:before { + content: "\F48F"; +} +.mdi-server-plus:before { + content: "\F490"; +} +.mdi-server-remove:before { + content: "\F491"; +} +.mdi-server-security:before { + content: "\F492"; +} +.mdi-settings:before { + content: "\F493"; +} +.mdi-settings-box:before { + content: "\F494"; +} +.mdi-shape-circle-plus:before { + content: "\F65D"; +} +.mdi-shape-plus:before { + content: "\F495"; +} +.mdi-shape-polygon-plus:before { + content: "\F65E"; +} +.mdi-shape-rectangle-plus:before { + content: "\F65F"; +} +.mdi-shape-square-plus:before { + content: "\F660"; +} +.mdi-share:before { + content: "\F496"; +} +.mdi-share-variant:before { + content: "\F497"; +} +.mdi-shield:before { + content: "\F498"; +} +.mdi-shield-outline:before { + content: "\F499"; +} +.mdi-shopping:before { + content: "\F49A"; +} +.mdi-shopping-music:before { + content: "\F49B"; +} +.mdi-shredder:before { + content: "\F49C"; +} +.mdi-shuffle:before { + content: "\F49D"; +} +.mdi-shuffle-disabled:before { + content: "\F49E"; +} +.mdi-shuffle-variant:before { + content: "\F49F"; +} +.mdi-sigma:before { + content: "\F4A0"; +} +.mdi-sigma-lower:before { + content: "\F62B"; +} +.mdi-sign-caution:before { + content: "\F4A1"; +} +.mdi-signal:before { + content: "\F4A2"; +} +.mdi-signal-variant:before { + content: "\F60A"; +} +.mdi-silverware:before { + content: "\F4A3"; +} +.mdi-silverware-fork:before { + content: "\F4A4"; +} +.mdi-silverware-spoon:before { + content: "\F4A5"; +} +.mdi-silverware-variant:before { + content: "\F4A6"; +} +.mdi-sim:before { + content: "\F4A7"; +} +.mdi-sim-alert:before { + content: "\F4A8"; +} +.mdi-sim-off:before { + content: "\F4A9"; +} +.mdi-sitemap:before { + content: "\F4AA"; +} +.mdi-skip-backward:before { + content: "\F4AB"; +} +.mdi-skip-forward:before { + content: "\F4AC"; +} +.mdi-skip-next:before { + content: "\F4AD"; +} +.mdi-skip-next-circle:before { + content: "\F661"; +} +.mdi-skip-next-circle-outline:before { + content: "\F662"; +} +.mdi-skip-previous:before { + content: "\F4AE"; +} +.mdi-skip-previous-circle:before { + content: "\F663"; +} +.mdi-skip-previous-circle-outline:before { + content: "\F664"; +} +.mdi-skype:before { + content: "\F4AF"; +} +.mdi-skype-business:before { + content: "\F4B0"; +} +.mdi-slack:before { + content: "\F4B1"; +} +.mdi-sleep:before { + content: "\F4B2"; +} +.mdi-sleep-off:before { + content: "\F4B3"; +} +.mdi-smoking:before { + content: "\F4B4"; +} +.mdi-smoking-off:before { + content: "\F4B5"; +} +.mdi-snapchat:before { + content: "\F4B6"; +} +.mdi-snowman:before { + content: "\F4B7"; +} +.mdi-soccer:before { + content: "\F4B8"; +} +.mdi-sofa:before { + content: "\F4B9"; +} +.mdi-sort:before { + content: "\F4BA"; +} +.mdi-sort-alphabetical:before { + content: "\F4BB"; +} +.mdi-sort-ascending:before { + content: "\F4BC"; +} +.mdi-sort-descending:before { + content: "\F4BD"; +} +.mdi-sort-numeric:before { + content: "\F4BE"; +} +.mdi-sort-variant:before { + content: "\F4BF"; +} +.mdi-soundcloud:before { + content: "\F4C0"; +} +.mdi-source-branch:before { + content: "\F62C"; +} +.mdi-source-fork:before { + content: "\F4C1"; +} +.mdi-source-merge:before { + content: "\F62D"; +} +.mdi-source-pull:before { + content: "\F4C2"; +} +.mdi-speaker:before { + content: "\F4C3"; +} +.mdi-speaker-off:before { + content: "\F4C4"; +} +.mdi-speedometer:before { + content: "\F4C5"; +} +.mdi-spellcheck:before { + content: "\F4C6"; +} +.mdi-spotify:before { + content: "\F4C7"; +} +.mdi-spotlight:before { + content: "\F4C8"; +} +.mdi-spotlight-beam:before { + content: "\F4C9"; +} +.mdi-spray:before { + content: "\F665"; +} +.mdi-square-inc:before { + content: "\F4CA"; +} +.mdi-square-inc-cash:before { + content: "\F4CB"; +} +.mdi-stackexchange:before { + content: "\F60B"; +} +.mdi-stackoverflow:before { + content: "\F4CC"; +} +.mdi-stairs:before { + content: "\F4CD"; +} +.mdi-star:before { + content: "\F4CE"; +} +.mdi-star-circle:before { + content: "\F4CF"; +} +.mdi-star-half:before { + content: "\F4D0"; +} +.mdi-star-off:before { + content: "\F4D1"; +} +.mdi-star-outline:before { + content: "\F4D2"; +} +.mdi-steam:before { + content: "\F4D3"; +} +.mdi-steering:before { + content: "\F4D4"; +} +.mdi-step-backward:before { + content: "\F4D5"; +} +.mdi-step-backward-2:before { + content: "\F4D6"; +} +.mdi-step-forward:before { + content: "\F4D7"; +} +.mdi-step-forward-2:before { + content: "\F4D8"; +} +.mdi-stethoscope:before { + content: "\F4D9"; +} +.mdi-sticker:before { + content: "\F5D0"; +} +.mdi-stocking:before { + content: "\F4DA"; +} +.mdi-stop:before { + content: "\F4DB"; +} +.mdi-stop-circle:before { + content: "\F666"; +} +.mdi-stop-circle-outline:before { + content: "\F667"; +} +.mdi-store:before { + content: "\F4DC"; +} +.mdi-store-24-hour:before { + content: "\F4DD"; +} +.mdi-stove:before { + content: "\F4DE"; +} +.mdi-subdirectory-arrow-left:before { + content: "\F60C"; +} +.mdi-subdirectory-arrow-right:before { + content: "\F60D"; +} +.mdi-subway:before { + content: "\F4DF"; +} +.mdi-sunglasses:before { + content: "\F4E0"; +} +.mdi-surround-sound:before { + content: "\F5C5"; +} +.mdi-swap-horizontal:before { + content: "\F4E1"; +} +.mdi-swap-vertical:before { + content: "\F4E2"; +} +.mdi-swim:before { + content: "\F4E3"; +} +.mdi-switch:before { + content: "\F4E4"; +} +.mdi-sword:before { + content: "\F4E5"; +} +.mdi-sync:before { + content: "\F4E6"; +} +.mdi-sync-alert:before { + content: "\F4E7"; +} +.mdi-sync-off:before { + content: "\F4E8"; +} +.mdi-tab:before { + content: "\F4E9"; +} +.mdi-tab-unselected:before { + content: "\F4EA"; +} +.mdi-table:before { + content: "\F4EB"; +} +.mdi-table-column-plus-after:before { + content: "\F4EC"; +} +.mdi-table-column-plus-before:before { + content: "\F4ED"; +} +.mdi-table-column-remove:before { + content: "\F4EE"; +} +.mdi-table-column-width:before { + content: "\F4EF"; +} +.mdi-table-edit:before { + content: "\F4F0"; +} +.mdi-table-large:before { + content: "\F4F1"; +} +.mdi-table-row-height:before { + content: "\F4F2"; +} +.mdi-table-row-plus-after:before { + content: "\F4F3"; +} +.mdi-table-row-plus-before:before { + content: "\F4F4"; +} +.mdi-table-row-remove:before { + content: "\F4F5"; +} +.mdi-tablet:before { + content: "\F4F6"; +} +.mdi-tablet-android:before { + content: "\F4F7"; +} +.mdi-tablet-ipad:before { + content: "\F4F8"; +} +.mdi-tag:before { + content: "\F4F9"; +} +.mdi-tag-faces:before { + content: "\F4FA"; +} +.mdi-tag-multiple:before { + content: "\F4FB"; +} +.mdi-tag-outline:before { + content: "\F4FC"; +} +.mdi-tag-text-outline:before { + content: "\F4FD"; +} +.mdi-target:before { + content: "\F4FE"; +} +.mdi-taxi:before { + content: "\F4FF"; +} +.mdi-teamviewer:before { + content: "\F500"; +} +.mdi-telegram:before { + content: "\F501"; +} +.mdi-television:before { + content: "\F502"; +} +.mdi-television-guide:before { + content: "\F503"; +} +.mdi-temperature-celsius:before { + content: "\F504"; +} +.mdi-temperature-fahrenheit:before { + content: "\F505"; +} +.mdi-temperature-kelvin:before { + content: "\F506"; +} +.mdi-tennis:before { + content: "\F507"; +} +.mdi-tent:before { + content: "\F508"; +} +.mdi-terrain:before { + content: "\F509"; +} +.mdi-test-tube:before { + content: "\F668"; +} +.mdi-text-shadow:before { + content: "\F669"; +} +.mdi-text-to-speech:before { + content: "\F50A"; +} +.mdi-text-to-speech-off:before { + content: "\F50B"; +} +.mdi-textbox:before { + content: "\F60E"; +} +.mdi-texture:before { + content: "\F50C"; +} +.mdi-theater:before { + content: "\F50D"; +} +.mdi-theme-light-dark:before { + content: "\F50E"; +} +.mdi-thermometer:before { + content: "\F50F"; +} +.mdi-thermometer-lines:before { + content: "\F510"; +} +.mdi-thumb-down:before { + content: "\F511"; +} +.mdi-thumb-down-outline:before { + content: "\F512"; +} +.mdi-thumb-up:before { + content: "\F513"; +} +.mdi-thumb-up-outline:before { + content: "\F514"; +} +.mdi-thumbs-up-down:before { + content: "\F515"; +} +.mdi-ticket:before { + content: "\F516"; +} +.mdi-ticket-account:before { + content: "\F517"; +} +.mdi-ticket-confirmation:before { + content: "\F518"; +} +.mdi-tie:before { + content: "\F519"; +} +.mdi-timelapse:before { + content: "\F51A"; +} +.mdi-timer:before { + content: "\F51B"; +} +.mdi-timer-10:before { + content: "\F51C"; +} +.mdi-timer-3:before { + content: "\F51D"; +} +.mdi-timer-off:before { + content: "\F51E"; +} +.mdi-timer-sand:before { + content: "\F51F"; +} +.mdi-timetable:before { + content: "\F520"; +} +.mdi-toggle-switch:before { + content: "\F521"; +} +.mdi-toggle-switch-off:before { + content: "\F522"; +} +.mdi-tooltip:before { + content: "\F523"; +} +.mdi-tooltip-edit:before { + content: "\F524"; +} +.mdi-tooltip-image:before { + content: "\F525"; +} +.mdi-tooltip-outline:before { + content: "\F526"; +} +.mdi-tooltip-outline-plus:before { + content: "\F527"; +} +.mdi-tooltip-text:before { + content: "\F528"; +} +.mdi-tooth:before { + content: "\F529"; +} +.mdi-tor:before { + content: "\F52A"; +} +.mdi-traffic-light:before { + content: "\F52B"; +} +.mdi-train:before { + content: "\F52C"; +} +.mdi-tram:before { + content: "\F52D"; +} +.mdi-transcribe:before { + content: "\F52E"; +} +.mdi-transcribe-close:before { + content: "\F52F"; +} +.mdi-transfer:before { + content: "\F530"; +} +.mdi-translate:before { + content: "\F5CA"; +} +.mdi-tree:before { + content: "\F531"; +} +.mdi-trello:before { + content: "\F532"; +} +.mdi-trending-down:before { + content: "\F533"; +} +.mdi-trending-neutral:before { + content: "\F534"; +} +.mdi-trending-up:before { + content: "\F535"; +} +.mdi-triangle:before { + content: "\F536"; +} +.mdi-triangle-outline:before { + content: "\F537"; +} +.mdi-trophy:before { + content: "\F538"; +} +.mdi-trophy-award:before { + content: "\F539"; +} +.mdi-trophy-outline:before { + content: "\F53A"; +} +.mdi-trophy-variant:before { + content: "\F53B"; +} +.mdi-trophy-variant-outline:before { + content: "\F53C"; +} +.mdi-truck:before { + content: "\F53D"; +} +.mdi-truck-delivery:before { + content: "\F53E"; +} +.mdi-tshirt-crew:before { + content: "\F53F"; +} +.mdi-tshirt-v:before { + content: "\F540"; +} +.mdi-tumblr:before { + content: "\F541"; +} +.mdi-tumblr-reblog:before { + content: "\F542"; +} +.mdi-tune:before { + content: "\F62E"; +} +.mdi-tune-vertical:before { + content: "\F66A"; +} +.mdi-twitch:before { + content: "\F543"; +} +.mdi-twitter:before { + content: "\F544"; +} +.mdi-twitter-box:before { + content: "\F545"; +} +.mdi-twitter-circle:before { + content: "\F546"; +} +.mdi-twitter-retweet:before { + content: "\F547"; +} +.mdi-ubuntu:before { + content: "\F548"; +} +.mdi-umbraco:before { + content: "\F549"; +} +.mdi-umbrella:before { + content: "\F54A"; +} +.mdi-umbrella-outline:before { + content: "\F54B"; +} +.mdi-undo:before { + content: "\F54C"; +} +.mdi-undo-variant:before { + content: "\F54D"; +} +.mdi-unfold-less:before { + content: "\F54E"; +} +.mdi-unfold-more:before { + content: "\F54F"; +} +.mdi-ungroup:before { + content: "\F550"; +} +.mdi-untappd:before { + content: "\F551"; +} +.mdi-upload:before { + content: "\F552"; +} +.mdi-usb:before { + content: "\F553"; +} +.mdi-vector-arrange-above:before { + content: "\F554"; +} +.mdi-vector-arrange-below:before { + content: "\F555"; +} +.mdi-vector-circle:before { + content: "\F556"; +} +.mdi-vector-circle-variant:before { + content: "\F557"; +} +.mdi-vector-combine:before { + content: "\F558"; +} +.mdi-vector-curve:before { + content: "\F559"; +} +.mdi-vector-difference:before { + content: "\F55A"; +} +.mdi-vector-difference-ab:before { + content: "\F55B"; +} +.mdi-vector-difference-ba:before { + content: "\F55C"; +} +.mdi-vector-intersection:before { + content: "\F55D"; +} +.mdi-vector-line:before { + content: "\F55E"; +} +.mdi-vector-point:before { + content: "\F55F"; +} +.mdi-vector-polygon:before { + content: "\F560"; +} +.mdi-vector-polyline:before { + content: "\F561"; +} +.mdi-vector-rectangle:before { + content: "\F5C6"; +} +.mdi-vector-selection:before { + content: "\F562"; +} +.mdi-vector-square:before { + content: "\F001"; +} +.mdi-vector-triangle:before { + content: "\F563"; +} +.mdi-vector-union:before { + content: "\F564"; +} +.mdi-verified:before { + content: "\F565"; +} +.mdi-vibrate:before { + content: "\F566"; +} +.mdi-video:before { + content: "\F567"; +} +.mdi-video-off:before { + content: "\F568"; +} +.mdi-video-switch:before { + content: "\F569"; +} +.mdi-view-agenda:before { + content: "\F56A"; +} +.mdi-view-array:before { + content: "\F56B"; +} +.mdi-view-carousel:before { + content: "\F56C"; +} +.mdi-view-column:before { + content: "\F56D"; +} +.mdi-view-dashboard:before { + content: "\F56E"; +} +.mdi-view-day:before { + content: "\F56F"; +} +.mdi-view-grid:before { + content: "\F570"; +} +.mdi-view-headline:before { + content: "\F571"; +} +.mdi-view-list:before { + content: "\F572"; +} +.mdi-view-module:before { + content: "\F573"; +} +.mdi-view-quilt:before { + content: "\F574"; +} +.mdi-view-stream:before { + content: "\F575"; +} +.mdi-view-week:before { + content: "\F576"; +} +.mdi-vimeo:before { + content: "\F577"; +} +.mdi-vine:before { + content: "\F578"; +} +.mdi-violin:before { + content: "\F60F"; +} +.mdi-visualstudio:before { + content: "\F610"; +} +.mdi-vk:before { + content: "\F579"; +} +.mdi-vk-box:before { + content: "\F57A"; +} +.mdi-vk-circle:before { + content: "\F57B"; +} +.mdi-vlc:before { + content: "\F57C"; +} +.mdi-voice:before { + content: "\F5CB"; +} +.mdi-voicemail:before { + content: "\F57D"; +} +.mdi-volume-high:before { + content: "\F57E"; +} +.mdi-volume-low:before { + content: "\F57F"; +} +.mdi-volume-medium:before { + content: "\F580"; +} +.mdi-volume-off:before { + content: "\F581"; +} +.mdi-vpn:before { + content: "\F582"; +} +.mdi-walk:before { + content: "\F583"; +} +.mdi-wallet:before { + content: "\F584"; +} +.mdi-wallet-giftcard:before { + content: "\F585"; +} +.mdi-wallet-membership:before { + content: "\F586"; +} +.mdi-wallet-travel:before { + content: "\F587"; +} +.mdi-wan:before { + content: "\F588"; +} +.mdi-watch:before { + content: "\F589"; +} +.mdi-watch-export:before { + content: "\F58A"; +} +.mdi-watch-import:before { + content: "\F58B"; +} +.mdi-water:before { + content: "\F58C"; +} +.mdi-water-off:before { + content: "\F58D"; +} +.mdi-water-percent:before { + content: "\F58E"; +} +.mdi-water-pump:before { + content: "\F58F"; +} +.mdi-watermark:before { + content: "\F612"; +} +.mdi-weather-cloudy:before { + content: "\F590"; +} +.mdi-weather-fog:before { + content: "\F591"; +} +.mdi-weather-hail:before { + content: "\F592"; +} +.mdi-weather-lightning:before { + content: "\F593"; +} +.mdi-weather-night:before { + content: "\F594"; +} +.mdi-weather-partlycloudy:before { + content: "\F595"; +} +.mdi-weather-pouring:before { + content: "\F596"; +} +.mdi-weather-rainy:before { + content: "\F597"; +} +.mdi-weather-snowy:before { + content: "\F598"; +} +.mdi-weather-sunny:before { + content: "\F599"; +} +.mdi-weather-sunset:before { + content: "\F59A"; +} +.mdi-weather-sunset-down:before { + content: "\F59B"; +} +.mdi-weather-sunset-up:before { + content: "\F59C"; +} +.mdi-weather-windy:before { + content: "\F59D"; +} +.mdi-weather-windy-variant:before { + content: "\F59E"; +} +.mdi-web:before { + content: "\F59F"; +} +.mdi-webcam:before { + content: "\F5A0"; +} +.mdi-webhook:before { + content: "\F62F"; +} +.mdi-wechat:before { + content: "\F611"; +} +.mdi-weight:before { + content: "\F5A1"; +} +.mdi-weight-kilogram:before { + content: "\F5A2"; +} +.mdi-whatsapp:before { + content: "\F5A3"; +} +.mdi-wheelchair-accessibility:before { + content: "\F5A4"; +} +.mdi-white-balance-auto:before { + content: "\F5A5"; +} +.mdi-white-balance-incandescent:before { + content: "\F5A6"; +} +.mdi-white-balance-iridescent:before { + content: "\F5A7"; +} +.mdi-white-balance-sunny:before { + content: "\F5A8"; +} +.mdi-wifi:before { + content: "\F5A9"; +} +.mdi-wifi-off:before { + content: "\F5AA"; +} +.mdi-wii:before { + content: "\F5AB"; +} +.mdi-wikipedia:before { + content: "\F5AC"; +} +.mdi-window-close:before { + content: "\F5AD"; +} +.mdi-window-closed:before { + content: "\F5AE"; +} +.mdi-window-maximize:before { + content: "\F5AF"; +} +.mdi-window-minimize:before { + content: "\F5B0"; +} +.mdi-window-open:before { + content: "\F5B1"; +} +.mdi-window-restore:before { + content: "\F5B2"; +} +.mdi-windows:before { + content: "\F5B3"; +} +.mdi-wordpress:before { + content: "\F5B4"; +} +.mdi-worker:before { + content: "\F5B5"; +} +.mdi-wrap:before { + content: "\F5B6"; +} +.mdi-wrench:before { + content: "\F5B7"; +} +.mdi-wunderlist:before { + content: "\F5B8"; +} +.mdi-xaml:before { + content: "\F673"; +} +.mdi-xbox:before { + content: "\F5B9"; +} +.mdi-xbox-controller:before { + content: "\F5BA"; +} +.mdi-xbox-controller-off:before { + content: "\F5BB"; +} +.mdi-xda:before { + content: "\F5BC"; +} +.mdi-xing:before { + content: "\F5BD"; +} +.mdi-xing-box:before { + content: "\F5BE"; +} +.mdi-xing-circle:before { + content: "\F5BF"; +} +.mdi-xml:before { + content: "\F5C0"; +} +.mdi-yeast:before { + content: "\F5C1"; +} +.mdi-yelp:before { + content: "\F5C2"; +} +.mdi-youtube-play:before { + content: "\F5C3"; +} +.mdi-zip-box:before { + content: "\F5C4"; +} +.mdi-18px { + font-size: 18px; +} +.mdi-24px { + font-size: 24px; +} +.mdi-36px { + font-size: 36px; +} +.mdi-48px { + font-size: 48px; +} +.mdi-dark { + color: rgba(0, 0, 0, 0.54); +} +.mdi-dark.mdi-inactive { + color: rgba(0, 0, 0, 0.26); +} +.mdi-light { + color: white; +} +.mdi-light.mdi-inactive { + color: rgba(255, 255, 255, 0.3); +} +.mdi-rotate-45 { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.mdi-rotate-90 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.mdi-rotate-135 { + -webkit-transform: rotate(135deg); + -ms-transform: rotate(135deg); + transform: rotate(135deg); +} +.mdi-rotate-180 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.mdi-rotate-225 { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + transform: rotate(225deg); +} +.mdi-rotate-270 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.mdi-rotate-315 { + -webkit-transform: rotate(315deg); + -ms-transform: rotate(315deg); + transform: rotate(315deg); +} +.mdi-flip-horizontal { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} +.mdi-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); + filter: FlipV; + -ms-filter: "FlipV"; +} +/*# sourceMappingURL=materialdesignicons.css.map */ +/*! +Ionicons, v1.5.0 +Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ +https://twitter.com/benjsperry https://twitter.com/ionicframework +MIT License: https://github.com/driftyco/ionicons +*/ +@font-face { + font-family: "Ionicons"; + src: url("../fonts/ionicons.eot?v=1.5.0"); + src: url("../fonts/ionicons.eot?v=1.5.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=1.5.0") format("truetype"), url("../fonts/ionicons.woff?v=1.5.0") format("woff"), url("../fonts/ionicons.svg?v=1.5.0#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; +} +.ion, +.ion-loading-a, +.ion-loading-b, +.ion-loading-c, +.ion-loading-d, +.ion-looping, +.ion-refreshing, +.ion-ios7-reloading, +.ionicons, +.ion-alert, +.ion-alert-circled, +.ion-android-add, +.ion-android-add-contact, +.ion-android-alarm, +.ion-android-archive, +.ion-android-arrow-back, +.ion-android-arrow-down-left, +.ion-android-arrow-down-right, +.ion-android-arrow-forward, +.ion-android-arrow-up-left, +.ion-android-arrow-up-right, +.ion-android-battery, +.ion-android-book, +.ion-android-calendar, +.ion-android-call, +.ion-android-camera, +.ion-android-chat, +.ion-android-checkmark, +.ion-android-clock, +.ion-android-close, +.ion-android-contact, +.ion-android-contacts, +.ion-android-data, +.ion-android-developer, +.ion-android-display, +.ion-android-download, +.ion-android-drawer, +.ion-android-dropdown, +.ion-android-earth, +.ion-android-folder, +.ion-android-forums, +.ion-android-friends, +.ion-android-hand, +.ion-android-image, +.ion-android-inbox, +.ion-android-information, +.ion-android-keypad, +.ion-android-lightbulb, +.ion-android-locate, +.ion-android-location, +.ion-android-mail, +.ion-android-microphone, +.ion-android-mixer, +.ion-android-more, +.ion-android-note, +.ion-android-playstore, +.ion-android-printer, +.ion-android-promotion, +.ion-android-reminder, +.ion-android-remove, +.ion-android-search, +.ion-android-send, +.ion-android-settings, +.ion-android-share, +.ion-android-social, +.ion-android-social-user, +.ion-android-sort, +.ion-android-stair-drawer, +.ion-android-star, +.ion-android-stopwatch, +.ion-android-storage, +.ion-android-system-back, +.ion-android-system-home, +.ion-android-system-windows, +.ion-android-timer, +.ion-android-trash, +.ion-android-user-menu, +.ion-android-volume, +.ion-android-wifi, +.ion-aperture, +.ion-archive, +.ion-arrow-down-a, +.ion-arrow-down-b, +.ion-arrow-down-c, +.ion-arrow-expand, +.ion-arrow-graph-down-left, +.ion-arrow-graph-down-right, +.ion-arrow-graph-up-left, +.ion-arrow-graph-up-right, +.ion-arrow-left-a, +.ion-arrow-left-b, +.ion-arrow-left-c, +.ion-arrow-move, +.ion-arrow-resize, +.ion-arrow-return-left, +.ion-arrow-return-right, +.ion-arrow-right-a, +.ion-arrow-right-b, +.ion-arrow-right-c, +.ion-arrow-shrink, +.ion-arrow-swap, +.ion-arrow-up-a, +.ion-arrow-up-b, +.ion-arrow-up-c, +.ion-asterisk, +.ion-at, +.ion-bag, +.ion-battery-charging, +.ion-battery-empty, +.ion-battery-full, +.ion-battery-half, +.ion-battery-low, +.ion-beaker, +.ion-beer, +.ion-bluetooth, +.ion-bonfire, +.ion-bookmark, +.ion-briefcase, +.ion-bug, +.ion-calculator, +.ion-calendar, +.ion-camera, +.ion-card, +.ion-cash, +.ion-chatbox, +.ion-chatbox-working, +.ion-chatboxes, +.ion-chatbubble, +.ion-chatbubble-working, +.ion-chatbubbles, +.ion-checkmark, +.ion-checkmark-circled, +.ion-checkmark-round, +.ion-chevron-down, +.ion-chevron-left, +.ion-chevron-right, +.ion-chevron-up, +.ion-clipboard, +.ion-clock, +.ion-close, +.ion-close-circled, +.ion-close-round, +.ion-closed-captioning, +.ion-cloud, +.ion-code, +.ion-code-download, +.ion-code-working, +.ion-coffee, +.ion-compass, +.ion-compose, +.ion-connection-bars, +.ion-contrast, +.ion-cube, +.ion-disc, +.ion-document, +.ion-document-text, +.ion-drag, +.ion-earth, +.ion-edit, +.ion-egg, +.ion-eject, +.ion-email, +.ion-eye, +.ion-eye-disabled, +.ion-female, +.ion-filing, +.ion-film-marker, +.ion-fireball, +.ion-flag, +.ion-flame, +.ion-flash, +.ion-flash-off, +.ion-flask, +.ion-folder, +.ion-fork, +.ion-fork-repo, +.ion-forward, +.ion-funnel, +.ion-game-controller-a, +.ion-game-controller-b, +.ion-gear-a, +.ion-gear-b, +.ion-grid, +.ion-hammer, +.ion-happy, +.ion-headphone, +.ion-heart, +.ion-heart-broken, +.ion-help, +.ion-help-buoy, +.ion-help-circled, +.ion-home, +.ion-icecream, +.ion-icon-social-google-plus, +.ion-icon-social-google-plus-outline, +.ion-image, +.ion-images, +.ion-information, +.ion-information-circled, +.ion-ionic, +.ion-ios7-alarm, +.ion-ios7-alarm-outline, +.ion-ios7-albums, +.ion-ios7-albums-outline, +.ion-ios7-americanfootball, +.ion-ios7-americanfootball-outline, +.ion-ios7-analytics, +.ion-ios7-analytics-outline, +.ion-ios7-arrow-back, +.ion-ios7-arrow-down, +.ion-ios7-arrow-forward, +.ion-ios7-arrow-left, +.ion-ios7-arrow-right, +.ion-ios7-arrow-thin-down, +.ion-ios7-arrow-thin-left, +.ion-ios7-arrow-thin-right, +.ion-ios7-arrow-thin-up, +.ion-ios7-arrow-up, +.ion-ios7-at, +.ion-ios7-at-outline, +.ion-ios7-barcode, +.ion-ios7-barcode-outline, +.ion-ios7-baseball, +.ion-ios7-baseball-outline, +.ion-ios7-basketball, +.ion-ios7-basketball-outline, +.ion-ios7-bell, +.ion-ios7-bell-outline, +.ion-ios7-bolt, +.ion-ios7-bolt-outline, +.ion-ios7-bookmarks, +.ion-ios7-bookmarks-outline, +.ion-ios7-box, +.ion-ios7-box-outline, +.ion-ios7-briefcase, +.ion-ios7-briefcase-outline, +.ion-ios7-browsers, +.ion-ios7-browsers-outline, +.ion-ios7-calculator, +.ion-ios7-calculator-outline, +.ion-ios7-calendar, +.ion-ios7-calendar-outline, +.ion-ios7-camera, +.ion-ios7-camera-outline, +.ion-ios7-cart, +.ion-ios7-cart-outline, +.ion-ios7-chatboxes, +.ion-ios7-chatboxes-outline, +.ion-ios7-chatbubble, +.ion-ios7-chatbubble-outline, +.ion-ios7-checkmark, +.ion-ios7-checkmark-empty, +.ion-ios7-checkmark-outline, +.ion-ios7-circle-filled, +.ion-ios7-circle-outline, +.ion-ios7-clock, +.ion-ios7-clock-outline, +.ion-ios7-close, +.ion-ios7-close-empty, +.ion-ios7-close-outline, +.ion-ios7-cloud, +.ion-ios7-cloud-download, +.ion-ios7-cloud-download-outline, +.ion-ios7-cloud-outline, +.ion-ios7-cloud-upload, +.ion-ios7-cloud-upload-outline, +.ion-ios7-cloudy, +.ion-ios7-cloudy-night, +.ion-ios7-cloudy-night-outline, +.ion-ios7-cloudy-outline, +.ion-ios7-cog, +.ion-ios7-cog-outline, +.ion-ios7-compose, +.ion-ios7-compose-outline, +.ion-ios7-contact, +.ion-ios7-contact-outline, +.ion-ios7-copy, +.ion-ios7-copy-outline, +.ion-ios7-download, +.ion-ios7-download-outline, +.ion-ios7-drag, +.ion-ios7-email, +.ion-ios7-email-outline, +.ion-ios7-expand, +.ion-ios7-eye, +.ion-ios7-eye-outline, +.ion-ios7-fastforward, +.ion-ios7-fastforward-outline, +.ion-ios7-filing, +.ion-ios7-filing-outline, +.ion-ios7-film, +.ion-ios7-film-outline, +.ion-ios7-flag, +.ion-ios7-flag-outline, +.ion-ios7-folder, +.ion-ios7-folder-outline, +.ion-ios7-football, +.ion-ios7-football-outline, +.ion-ios7-gear, +.ion-ios7-gear-outline, +.ion-ios7-glasses, +.ion-ios7-glasses-outline, +.ion-ios7-heart, +.ion-ios7-heart-outline, +.ion-ios7-help, +.ion-ios7-help-empty, +.ion-ios7-help-outline, +.ion-ios7-home, +.ion-ios7-home-outline, +.ion-ios7-infinite, +.ion-ios7-infinite-outline, +.ion-ios7-information, +.ion-ios7-information-empty, +.ion-ios7-information-outline, +.ion-ios7-ionic-outline, +.ion-ios7-keypad, +.ion-ios7-keypad-outline, +.ion-ios7-lightbulb, +.ion-ios7-lightbulb-outline, +.ion-ios7-location, +.ion-ios7-location-outline, +.ion-ios7-locked, +.ion-ios7-locked-outline, +.ion-ios7-loop, +.ion-ios7-loop-strong, +.ion-ios7-medkit, +.ion-ios7-medkit-outline, +.ion-ios7-mic, +.ion-ios7-mic-off, +.ion-ios7-mic-outline, +.ion-ios7-minus, +.ion-ios7-minus-empty, +.ion-ios7-minus-outline, +.ion-ios7-monitor, +.ion-ios7-monitor-outline, +.ion-ios7-moon, +.ion-ios7-moon-outline, +.ion-ios7-more, +.ion-ios7-more-outline, +.ion-ios7-musical-note, +.ion-ios7-musical-notes, +.ion-ios7-navigate, +.ion-ios7-navigate-outline, +.ion-ios7-paper, +.ion-ios7-paper-outline, +.ion-ios7-paperplane, +.ion-ios7-paperplane-outline, +.ion-ios7-partlysunny, +.ion-ios7-partlysunny-outline, +.ion-ios7-pause, +.ion-ios7-pause-outline, +.ion-ios7-paw, +.ion-ios7-paw-outline, +.ion-ios7-people, +.ion-ios7-people-outline, +.ion-ios7-person, +.ion-ios7-person-outline, +.ion-ios7-personadd, +.ion-ios7-personadd-outline, +.ion-ios7-photos, +.ion-ios7-photos-outline, +.ion-ios7-pie, +.ion-ios7-pie-outline, +.ion-ios7-play, +.ion-ios7-play-outline, +.ion-ios7-plus, +.ion-ios7-plus-empty, +.ion-ios7-plus-outline, +.ion-ios7-pricetag, +.ion-ios7-pricetag-outline, +.ion-ios7-pricetags, +.ion-ios7-pricetags-outline, +.ion-ios7-printer, +.ion-ios7-printer-outline, +.ion-ios7-pulse, +.ion-ios7-pulse-strong, +.ion-ios7-rainy, +.ion-ios7-rainy-outline, +.ion-ios7-recording, +.ion-ios7-recording-outline, +.ion-ios7-redo, +.ion-ios7-redo-outline, +.ion-ios7-refresh, +.ion-ios7-refresh-empty, +.ion-ios7-refresh-outline, +.ion-ios7-reload, +.ion-ios7-reverse-camera, +.ion-ios7-reverse-camera-outline, +.ion-ios7-rewind, +.ion-ios7-rewind-outline, +.ion-ios7-search, +.ion-ios7-search-strong, +.ion-ios7-settings, +.ion-ios7-settings-strong, +.ion-ios7-shrink, +.ion-ios7-skipbackward, +.ion-ios7-skipbackward-outline, +.ion-ios7-skipforward, +.ion-ios7-skipforward-outline, +.ion-ios7-snowy, +.ion-ios7-speedometer, +.ion-ios7-speedometer-outline, +.ion-ios7-star, +.ion-ios7-star-half, +.ion-ios7-star-outline, +.ion-ios7-stopwatch, +.ion-ios7-stopwatch-outline, +.ion-ios7-sunny, +.ion-ios7-sunny-outline, +.ion-ios7-telephone, +.ion-ios7-telephone-outline, +.ion-ios7-tennisball, +.ion-ios7-tennisball-outline, +.ion-ios7-thunderstorm, +.ion-ios7-thunderstorm-outline, +.ion-ios7-time, +.ion-ios7-time-outline, +.ion-ios7-timer, +.ion-ios7-timer-outline, +.ion-ios7-toggle, +.ion-ios7-toggle-outline, +.ion-ios7-trash, +.ion-ios7-trash-outline, +.ion-ios7-undo, +.ion-ios7-undo-outline, +.ion-ios7-unlocked, +.ion-ios7-unlocked-outline, +.ion-ios7-upload, +.ion-ios7-upload-outline, +.ion-ios7-videocam, +.ion-ios7-videocam-outline, +.ion-ios7-volume-high, +.ion-ios7-volume-low, +.ion-ios7-wineglass, +.ion-ios7-wineglass-outline, +.ion-ios7-world, +.ion-ios7-world-outline, +.ion-ipad, +.ion-iphone, +.ion-ipod, +.ion-jet, +.ion-key, +.ion-knife, +.ion-laptop, +.ion-leaf, +.ion-levels, +.ion-lightbulb, +.ion-link, +.ion-load-a, +.ion-load-b, +.ion-load-c, +.ion-load-d, +.ion-location, +.ion-locked, +.ion-log-in, +.ion-log-out, +.ion-loop, +.ion-magnet, +.ion-male, +.ion-man, +.ion-map, +.ion-medkit, +.ion-merge, +.ion-mic-a, +.ion-mic-b, +.ion-mic-c, +.ion-minus, +.ion-minus-circled, +.ion-minus-round, +.ion-model-s, +.ion-monitor, +.ion-more, +.ion-mouse, +.ion-music-note, +.ion-navicon, +.ion-navicon-round, +.ion-navigate, +.ion-network, +.ion-no-smoking, +.ion-nuclear, +.ion-outlet, +.ion-paper-airplane, +.ion-paperclip, +.ion-pause, +.ion-person, +.ion-person-add, +.ion-person-stalker, +.ion-pie-graph, +.ion-pin, +.ion-pinpoint, +.ion-pizza, +.ion-plane, +.ion-planet, +.ion-play, +.ion-playstation, +.ion-plus, +.ion-plus-circled, +.ion-plus-round, +.ion-podium, +.ion-pound, +.ion-power, +.ion-pricetag, +.ion-pricetags, +.ion-printer, +.ion-pull-request, +.ion-qr-scanner, +.ion-quote, +.ion-radio-waves, +.ion-record, +.ion-refresh, +.ion-reply, +.ion-reply-all, +.ion-ribbon-a, +.ion-ribbon-b, +.ion-sad, +.ion-scissors, +.ion-search, +.ion-settings, +.ion-share, +.ion-shuffle, +.ion-skip-backward, +.ion-skip-forward, +.ion-social-android, +.ion-social-android-outline, +.ion-social-apple, +.ion-social-apple-outline, +.ion-social-bitcoin, +.ion-social-bitcoin-outline, +.ion-social-buffer, +.ion-social-buffer-outline, +.ion-social-designernews, +.ion-social-designernews-outline, +.ion-social-dribbble, +.ion-social-dribbble-outline, +.ion-social-dropbox, +.ion-social-dropbox-outline, +.ion-social-facebook, +.ion-social-facebook-outline, +.ion-social-foursquare, +.ion-social-foursquare-outline, +.ion-social-freebsd-devil, +.ion-social-github, +.ion-social-github-outline, +.ion-social-google, +.ion-social-google-outline, +.ion-social-googleplus, +.ion-social-googleplus-outline, +.ion-social-hackernews, +.ion-social-hackernews-outline, +.ion-social-instagram, +.ion-social-instagram-outline, +.ion-social-linkedin, +.ion-social-linkedin-outline, +.ion-social-pinterest, +.ion-social-pinterest-outline, +.ion-social-reddit, +.ion-social-reddit-outline, +.ion-social-rss, +.ion-social-rss-outline, +.ion-social-skype, +.ion-social-skype-outline, +.ion-social-tumblr, +.ion-social-tumblr-outline, +.ion-social-tux, +.ion-social-twitter, +.ion-social-twitter-outline, +.ion-social-usd, +.ion-social-usd-outline, +.ion-social-vimeo, +.ion-social-vimeo-outline, +.ion-social-windows, +.ion-social-windows-outline, +.ion-social-wordpress, +.ion-social-wordpress-outline, +.ion-social-yahoo, +.ion-social-yahoo-outline, +.ion-social-youtube, +.ion-social-youtube-outline, +.ion-speakerphone, +.ion-speedometer, +.ion-spoon, +.ion-star, +.ion-stats-bars, +.ion-steam, +.ion-stop, +.ion-thermometer, +.ion-thumbsdown, +.ion-thumbsup, +.ion-toggle, +.ion-toggle-filled, +.ion-trash-a, +.ion-trash-b, +.ion-trophy, +.ion-umbrella, +.ion-university, +.ion-unlocked, +.ion-upload, +.ion-usb, +.ion-videocamera, +.ion-volume-high, +.ion-volume-low, +.ion-volume-medium, +.ion-volume-mute, +.ion-wand, +.ion-waterdrop, +.ion-wifi, +.ion-wineglass, +.ion-woman, +.ion-wrench, +.ion-xbox { + display: inline-block; + font-family: "Ionicons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ion-spin, +.ion-loading-a, +.ion-loading-b, +.ion-loading-c, +.ion-loading-d, +.ion-looping, +.ion-refreshing, +.ion-ios7-reloading { + -webkit-animation: spin 1s infinite linear; + -moz-animation: spin 1s infinite linear; + -o-animation: spin 1s infinite linear; + animation: spin 1s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.ion-loading-a { + -webkit-animation-timing-function: steps(8, start); + -moz-animation-timing-function: steps(8, start); + animation-timing-function: steps(8, start); +} +.ion-alert:before { + content: "\f101"; +} +.ion-alert-circled:before { + content: "\f100"; +} +.ion-android-add:before { + content: "\f2c7"; +} +.ion-android-add-contact:before { + content: "\f2c6"; +} +.ion-android-alarm:before { + content: "\f2c8"; +} +.ion-android-archive:before { + content: "\f2c9"; +} +.ion-android-arrow-back:before { + content: "\f2ca"; +} +.ion-android-arrow-down-left:before { + content: "\f2cb"; +} +.ion-android-arrow-down-right:before { + content: "\f2cc"; +} +.ion-android-arrow-forward:before { + content: "\f30f"; +} +.ion-android-arrow-up-left:before { + content: "\f2cd"; +} +.ion-android-arrow-up-right:before { + content: "\f2ce"; +} +.ion-android-battery:before { + content: "\f2cf"; +} +.ion-android-book:before { + content: "\f2d0"; +} +.ion-android-calendar:before { + content: "\f2d1"; +} +.ion-android-call:before { + content: "\f2d2"; +} +.ion-android-camera:before { + content: "\f2d3"; +} +.ion-android-chat:before { + content: "\f2d4"; +} +.ion-android-checkmark:before { + content: "\f2d5"; +} +.ion-android-clock:before { + content: "\f2d6"; +} +.ion-android-close:before { + content: "\f2d7"; +} +.ion-android-contact:before { + content: "\f2d8"; +} +.ion-android-contacts:before { + content: "\f2d9"; +} +.ion-android-data:before { + content: "\f2da"; +} +.ion-android-developer:before { + content: "\f2db"; +} +.ion-android-display:before { + content: "\f2dc"; +} +.ion-android-download:before { + content: "\f2dd"; +} +.ion-android-drawer:before { + content: "\f310"; +} +.ion-android-dropdown:before { + content: "\f2de"; +} +.ion-android-earth:before { + content: "\f2df"; +} +.ion-android-folder:before { + content: "\f2e0"; +} +.ion-android-forums:before { + content: "\f2e1"; +} +.ion-android-friends:before { + content: "\f2e2"; +} +.ion-android-hand:before { + content: "\f2e3"; +} +.ion-android-image:before { + content: "\f2e4"; +} +.ion-android-inbox:before { + content: "\f2e5"; +} +.ion-android-information:before { + content: "\f2e6"; +} +.ion-android-keypad:before { + content: "\f2e7"; +} +.ion-android-lightbulb:before { + content: "\f2e8"; +} +.ion-android-locate:before { + content: "\f2e9"; +} +.ion-android-location:before { + content: "\f2ea"; +} +.ion-android-mail:before { + content: "\f2eb"; +} +.ion-android-microphone:before { + content: "\f2ec"; +} +.ion-android-mixer:before { + content: "\f2ed"; +} +.ion-android-more:before { + content: "\f2ee"; +} +.ion-android-note:before { + content: "\f2ef"; +} +.ion-android-playstore:before { + content: "\f2f0"; +} +.ion-android-printer:before { + content: "\f2f1"; +} +.ion-android-promotion:before { + content: "\f2f2"; +} +.ion-android-reminder:before { + content: "\f2f3"; +} +.ion-android-remove:before { + content: "\f2f4"; +} +.ion-android-search:before { + content: "\f2f5"; +} +.ion-android-send:before { + content: "\f2f6"; +} +.ion-android-settings:before { + content: "\f2f7"; +} +.ion-android-share:before { + content: "\f2f8"; +} +.ion-android-social:before { + content: "\f2fa"; +} +.ion-android-social-user:before { + content: "\f2f9"; +} +.ion-android-sort:before { + content: "\f2fb"; +} +.ion-android-stair-drawer:before { + content: "\f311"; +} +.ion-android-star:before { + content: "\f2fc"; +} +.ion-android-stopwatch:before { + content: "\f2fd"; +} +.ion-android-storage:before { + content: "\f2fe"; +} +.ion-android-system-back:before { + content: "\f2ff"; +} +.ion-android-system-home:before { + content: "\f300"; +} +.ion-android-system-windows:before { + content: "\f301"; +} +.ion-android-timer:before { + content: "\f302"; +} +.ion-android-trash:before { + content: "\f303"; +} +.ion-android-user-menu:before { + content: "\f312"; +} +.ion-android-volume:before { + content: "\f304"; +} +.ion-android-wifi:before { + content: "\f305"; +} +.ion-aperture:before { + content: "\f313"; +} +.ion-archive:before { + content: "\f102"; +} +.ion-arrow-down-a:before { + content: "\f103"; +} +.ion-arrow-down-b:before { + content: "\f104"; +} +.ion-arrow-down-c:before { + content: "\f105"; +} +.ion-arrow-expand:before { + content: "\f25e"; +} +.ion-arrow-graph-down-left:before { + content: "\f25f"; +} +.ion-arrow-graph-down-right:before { + content: "\f260"; +} +.ion-arrow-graph-up-left:before { + content: "\f261"; +} +.ion-arrow-graph-up-right:before { + content: "\f262"; +} +.ion-arrow-left-a:before { + content: "\f106"; +} +.ion-arrow-left-b:before { + content: "\f107"; +} +.ion-arrow-left-c:before { + content: "\f108"; +} +.ion-arrow-move:before { + content: "\f263"; +} +.ion-arrow-resize:before { + content: "\f264"; +} +.ion-arrow-return-left:before { + content: "\f265"; +} +.ion-arrow-return-right:before { + content: "\f266"; +} +.ion-arrow-right-a:before { + content: "\f109"; +} +.ion-arrow-right-b:before { + content: "\f10a"; +} +.ion-arrow-right-c:before { + content: "\f10b"; +} +.ion-arrow-shrink:before { + content: "\f267"; +} +.ion-arrow-swap:before { + content: "\f268"; +} +.ion-arrow-up-a:before { + content: "\f10c"; +} +.ion-arrow-up-b:before { + content: "\f10d"; +} +.ion-arrow-up-c:before { + content: "\f10e"; +} +.ion-asterisk:before { + content: "\f314"; +} +.ion-at:before { + content: "\f10f"; +} +.ion-bag:before { + content: "\f110"; +} +.ion-battery-charging:before { + content: "\f111"; +} +.ion-battery-empty:before { + content: "\f112"; +} +.ion-battery-full:before { + content: "\f113"; +} +.ion-battery-half:before { + content: "\f114"; +} +.ion-battery-low:before { + content: "\f115"; +} +.ion-beaker:before { + content: "\f269"; +} +.ion-beer:before { + content: "\f26a"; +} +.ion-bluetooth:before { + content: "\f116"; +} +.ion-bonfire:before { + content: "\f315"; +} +.ion-bookmark:before { + content: "\f26b"; +} +.ion-briefcase:before { + content: "\f26c"; +} +.ion-bug:before { + content: "\f2be"; +} +.ion-calculator:before { + content: "\f26d"; +} +.ion-calendar:before { + content: "\f117"; +} +.ion-camera:before { + content: "\f118"; +} +.ion-card:before { + content: "\f119"; +} +.ion-cash:before { + content: "\f316"; +} +.ion-chatbox:before { + content: "\f11b"; +} +.ion-chatbox-working:before { + content: "\f11a"; +} +.ion-chatboxes:before { + content: "\f11c"; +} +.ion-chatbubble:before { + content: "\f11e"; +} +.ion-chatbubble-working:before { + content: "\f11d"; +} +.ion-chatbubbles:before { + content: "\f11f"; +} +.ion-checkmark:before { + content: "\f122"; +} +.ion-checkmark-circled:before { + content: "\f120"; +} +.ion-checkmark-round:before { + content: "\f121"; +} +.ion-chevron-down:before { + content: "\f123"; +} +.ion-chevron-left:before { + content: "\f124"; +} +.ion-chevron-right:before { + content: "\f125"; +} +.ion-chevron-up:before { + content: "\f126"; +} +.ion-clipboard:before { + content: "\f127"; +} +.ion-clock:before { + content: "\f26e"; +} +.ion-close:before { + content: "\f12a"; +} +.ion-close-circled:before { + content: "\f128"; +} +.ion-close-round:before { + content: "\f129"; +} +.ion-closed-captioning:before { + content: "\f317"; +} +.ion-cloud:before { + content: "\f12b"; +} +.ion-code:before { + content: "\f271"; +} +.ion-code-download:before { + content: "\f26f"; +} +.ion-code-working:before { + content: "\f270"; +} +.ion-coffee:before { + content: "\f272"; +} +.ion-compass:before { + content: "\f273"; +} +.ion-compose:before { + content: "\f12c"; +} +.ion-connection-bars:before { + content: "\f274"; +} +.ion-contrast:before { + content: "\f275"; +} +.ion-cube:before { + content: "\f318"; +} +.ion-disc:before { + content: "\f12d"; +} +.ion-document:before { + content: "\f12f"; +} +.ion-document-text:before { + content: "\f12e"; +} +.ion-drag:before { + content: "\f130"; +} +.ion-earth:before { + content: "\f276"; +} +.ion-edit:before { + content: "\f2bf"; +} +.ion-egg:before { + content: "\f277"; +} +.ion-eject:before { + content: "\f131"; +} +.ion-email:before { + content: "\f132"; +} +.ion-eye:before { + content: "\f133"; +} +.ion-eye-disabled:before { + content: "\f306"; +} +.ion-female:before { + content: "\f278"; +} +.ion-filing:before { + content: "\f134"; +} +.ion-film-marker:before { + content: "\f135"; +} +.ion-fireball:before { + content: "\f319"; +} +.ion-flag:before { + content: "\f279"; +} +.ion-flame:before { + content: "\f31a"; +} +.ion-flash:before { + content: "\f137"; +} +.ion-flash-off:before { + content: "\f136"; +} +.ion-flask:before { + content: "\f138"; +} +.ion-folder:before { + content: "\f139"; +} +.ion-fork:before { + content: "\f27a"; +} +.ion-fork-repo:before { + content: "\f2c0"; +} +.ion-forward:before { + content: "\f13a"; +} +.ion-funnel:before { + content: "\f31b"; +} +.ion-game-controller-a:before { + content: "\f13b"; +} +.ion-game-controller-b:before { + content: "\f13c"; +} +.ion-gear-a:before { + content: "\f13d"; +} +.ion-gear-b:before { + content: "\f13e"; +} +.ion-grid:before { + content: "\f13f"; +} +.ion-hammer:before { + content: "\f27b"; +} +.ion-happy:before { + content: "\f31c"; +} +.ion-headphone:before { + content: "\f140"; +} +.ion-heart:before { + content: "\f141"; +} +.ion-heart-broken:before { + content: "\f31d"; +} +.ion-help:before { + content: "\f143"; +} +.ion-help-buoy:before { + content: "\f27c"; +} +.ion-help-circled:before { + content: "\f142"; +} +.ion-home:before { + content: "\f144"; +} +.ion-icecream:before { + content: "\f27d"; +} +.ion-icon-social-google-plus:before { + content: "\f146"; +} +.ion-icon-social-google-plus-outline:before { + content: "\f145"; +} +.ion-image:before { + content: "\f147"; +} +.ion-images:before { + content: "\f148"; +} +.ion-information:before { + content: "\f14a"; +} +.ion-information-circled:before { + content: "\f149"; +} +.ion-ionic:before { + content: "\f14b"; +} +.ion-ios7-alarm:before { + content: "\f14d"; +} +.ion-ios7-alarm-outline:before { + content: "\f14c"; +} +.ion-ios7-albums:before { + content: "\f14f"; +} +.ion-ios7-albums-outline:before { + content: "\f14e"; +} +.ion-ios7-americanfootball:before { + content: "\f31f"; +} +.ion-ios7-americanfootball-outline:before { + content: "\f31e"; +} +.ion-ios7-analytics:before { + content: "\f321"; +} +.ion-ios7-analytics-outline:before { + content: "\f320"; +} +.ion-ios7-arrow-back:before { + content: "\f150"; +} +.ion-ios7-arrow-down:before { + content: "\f151"; +} +.ion-ios7-arrow-forward:before { + content: "\f152"; +} +.ion-ios7-arrow-left:before { + content: "\f153"; +} +.ion-ios7-arrow-right:before { + content: "\f154"; +} +.ion-ios7-arrow-thin-down:before { + content: "\f27e"; +} +.ion-ios7-arrow-thin-left:before { + content: "\f27f"; +} +.ion-ios7-arrow-thin-right:before { + content: "\f280"; +} +.ion-ios7-arrow-thin-up:before { + content: "\f281"; +} +.ion-ios7-arrow-up:before { + content: "\f155"; +} +.ion-ios7-at:before { + content: "\f157"; +} +.ion-ios7-at-outline:before { + content: "\f156"; +} +.ion-ios7-barcode:before { + content: "\f323"; +} +.ion-ios7-barcode-outline:before { + content: "\f322"; +} +.ion-ios7-baseball:before { + content: "\f325"; +} +.ion-ios7-baseball-outline:before { + content: "\f324"; +} +.ion-ios7-basketball:before { + content: "\f327"; +} +.ion-ios7-basketball-outline:before { + content: "\f326"; +} +.ion-ios7-bell:before { + content: "\f159"; +} +.ion-ios7-bell-outline:before { + content: "\f158"; +} +.ion-ios7-bolt:before { + content: "\f15b"; +} +.ion-ios7-bolt-outline:before { + content: "\f15a"; +} +.ion-ios7-bookmarks:before { + content: "\f15d"; +} +.ion-ios7-bookmarks-outline:before { + content: "\f15c"; +} +.ion-ios7-box:before { + content: "\f15f"; +} +.ion-ios7-box-outline:before { + content: "\f15e"; +} +.ion-ios7-briefcase:before { + content: "\f283"; +} +.ion-ios7-briefcase-outline:before { + content: "\f282"; +} +.ion-ios7-browsers:before { + content: "\f161"; +} +.ion-ios7-browsers-outline:before { + content: "\f160"; +} +.ion-ios7-calculator:before { + content: "\f285"; +} +.ion-ios7-calculator-outline:before { + content: "\f284"; +} +.ion-ios7-calendar:before { + content: "\f163"; +} +.ion-ios7-calendar-outline:before { + content: "\f162"; +} +.ion-ios7-camera:before { + content: "\f165"; +} +.ion-ios7-camera-outline:before { + content: "\f164"; +} +.ion-ios7-cart:before { + content: "\f167"; +} +.ion-ios7-cart-outline:before { + content: "\f166"; +} +.ion-ios7-chatboxes:before { + content: "\f169"; +} +.ion-ios7-chatboxes-outline:before { + content: "\f168"; +} +.ion-ios7-chatbubble:before { + content: "\f16b"; +} +.ion-ios7-chatbubble-outline:before { + content: "\f16a"; +} +.ion-ios7-checkmark:before { + content: "\f16e"; +} +.ion-ios7-checkmark-empty:before { + content: "\f16c"; +} +.ion-ios7-checkmark-outline:before { + content: "\f16d"; +} +.ion-ios7-circle-filled:before { + content: "\f16f"; +} +.ion-ios7-circle-outline:before { + content: "\f170"; +} +.ion-ios7-clock:before { + content: "\f172"; +} +.ion-ios7-clock-outline:before { + content: "\f171"; +} +.ion-ios7-close:before { + content: "\f2bc"; +} +.ion-ios7-close-empty:before { + content: "\f2bd"; +} +.ion-ios7-close-outline:before { + content: "\f2bb"; +} +.ion-ios7-cloud:before { + content: "\f178"; +} +.ion-ios7-cloud-download:before { + content: "\f174"; +} +.ion-ios7-cloud-download-outline:before { + content: "\f173"; +} +.ion-ios7-cloud-outline:before { + content: "\f175"; +} +.ion-ios7-cloud-upload:before { + content: "\f177"; +} +.ion-ios7-cloud-upload-outline:before { + content: "\f176"; +} +.ion-ios7-cloudy:before { + content: "\f17a"; +} +.ion-ios7-cloudy-night:before { + content: "\f308"; +} +.ion-ios7-cloudy-night-outline:before { + content: "\f307"; +} +.ion-ios7-cloudy-outline:before { + content: "\f179"; +} +.ion-ios7-cog:before { + content: "\f17c"; +} +.ion-ios7-cog-outline:before { + content: "\f17b"; +} +.ion-ios7-compose:before { + content: "\f17e"; +} +.ion-ios7-compose-outline:before { + content: "\f17d"; +} +.ion-ios7-contact:before { + content: "\f180"; +} +.ion-ios7-contact-outline:before { + content: "\f17f"; +} +.ion-ios7-copy:before { + content: "\f182"; +} +.ion-ios7-copy-outline:before { + content: "\f181"; +} +.ion-ios7-download:before { + content: "\f184"; +} +.ion-ios7-download-outline:before { + content: "\f183"; +} +.ion-ios7-drag:before { + content: "\f185"; +} +.ion-ios7-email:before { + content: "\f187"; +} +.ion-ios7-email-outline:before { + content: "\f186"; +} +.ion-ios7-expand:before { + content: "\f30d"; +} +.ion-ios7-eye:before { + content: "\f189"; +} +.ion-ios7-eye-outline:before { + content: "\f188"; +} +.ion-ios7-fastforward:before { + content: "\f18b"; +} +.ion-ios7-fastforward-outline:before { + content: "\f18a"; +} +.ion-ios7-filing:before { + content: "\f18d"; +} +.ion-ios7-filing-outline:before { + content: "\f18c"; +} +.ion-ios7-film:before { + content: "\f18f"; +} +.ion-ios7-film-outline:before { + content: "\f18e"; +} +.ion-ios7-flag:before { + content: "\f191"; +} +.ion-ios7-flag-outline:before { + content: "\f190"; +} +.ion-ios7-folder:before { + content: "\f193"; +} +.ion-ios7-folder-outline:before { + content: "\f192"; +} +.ion-ios7-football:before { + content: "\f329"; +} +.ion-ios7-football-outline:before { + content: "\f328"; +} +.ion-ios7-gear:before { + content: "\f195"; +} +.ion-ios7-gear-outline:before { + content: "\f194"; +} +.ion-ios7-glasses:before { + content: "\f197"; +} +.ion-ios7-glasses-outline:before { + content: "\f196"; +} +.ion-ios7-heart:before { + content: "\f199"; +} +.ion-ios7-heart-outline:before { + content: "\f198"; +} +.ion-ios7-help:before { + content: "\f19c"; +} +.ion-ios7-help-empty:before { + content: "\f19a"; +} +.ion-ios7-help-outline:before { + content: "\f19b"; +} +.ion-ios7-home:before { + content: "\f32b"; +} +.ion-ios7-home-outline:before { + content: "\f32a"; +} +.ion-ios7-infinite:before { + content: "\f19e"; +} +.ion-ios7-infinite-outline:before { + content: "\f19d"; +} +.ion-ios7-information:before { + content: "\f1a1"; +} +.ion-ios7-information-empty:before { + content: "\f19f"; +} +.ion-ios7-information-outline:before { + content: "\f1a0"; +} +.ion-ios7-ionic-outline:before { + content: "\f1a2"; +} +.ion-ios7-keypad:before { + content: "\f1a4"; +} +.ion-ios7-keypad-outline:before { + content: "\f1a3"; +} +.ion-ios7-lightbulb:before { + content: "\f287"; +} +.ion-ios7-lightbulb-outline:before { + content: "\f286"; +} +.ion-ios7-location:before { + content: "\f1a6"; +} +.ion-ios7-location-outline:before { + content: "\f1a5"; +} +.ion-ios7-locked:before { + content: "\f1a8"; +} +.ion-ios7-locked-outline:before { + content: "\f1a7"; +} +.ion-ios7-loop:before { + content: "\f32d"; +} +.ion-ios7-loop-strong:before { + content: "\f32c"; +} +.ion-ios7-medkit:before { + content: "\f289"; +} +.ion-ios7-medkit-outline:before { + content: "\f288"; +} +.ion-ios7-mic:before { + content: "\f1ab"; +} +.ion-ios7-mic-off:before { + content: "\f1a9"; +} +.ion-ios7-mic-outline:before { + content: "\f1aa"; +} +.ion-ios7-minus:before { + content: "\f1ae"; +} +.ion-ios7-minus-empty:before { + content: "\f1ac"; +} +.ion-ios7-minus-outline:before { + content: "\f1ad"; +} +.ion-ios7-monitor:before { + content: "\f1b0"; +} +.ion-ios7-monitor-outline:before { + content: "\f1af"; +} +.ion-ios7-moon:before { + content: "\f1b2"; +} +.ion-ios7-moon-outline:before { + content: "\f1b1"; +} +.ion-ios7-more:before { + content: "\f1b4"; +} +.ion-ios7-more-outline:before { + content: "\f1b3"; +} +.ion-ios7-musical-note:before { + content: "\f1b5"; +} +.ion-ios7-musical-notes:before { + content: "\f1b6"; +} +.ion-ios7-navigate:before { + content: "\f1b8"; +} +.ion-ios7-navigate-outline:before { + content: "\f1b7"; +} +.ion-ios7-paper:before { + content: "\f32f"; +} +.ion-ios7-paper-outline:before { + content: "\f32e"; +} +.ion-ios7-paperplane:before { + content: "\f1ba"; +} +.ion-ios7-paperplane-outline:before { + content: "\f1b9"; +} +.ion-ios7-partlysunny:before { + content: "\f1bc"; +} +.ion-ios7-partlysunny-outline:before { + content: "\f1bb"; +} +.ion-ios7-pause:before { + content: "\f1be"; +} +.ion-ios7-pause-outline:before { + content: "\f1bd"; +} +.ion-ios7-paw:before { + content: "\f331"; +} +.ion-ios7-paw-outline:before { + content: "\f330"; +} +.ion-ios7-people:before { + content: "\f1c0"; +} +.ion-ios7-people-outline:before { + content: "\f1bf"; +} +.ion-ios7-person:before { + content: "\f1c2"; +} +.ion-ios7-person-outline:before { + content: "\f1c1"; +} +.ion-ios7-personadd:before { + content: "\f1c4"; +} +.ion-ios7-personadd-outline:before { + content: "\f1c3"; +} +.ion-ios7-photos:before { + content: "\f1c6"; +} +.ion-ios7-photos-outline:before { + content: "\f1c5"; +} +.ion-ios7-pie:before { + content: "\f28b"; +} +.ion-ios7-pie-outline:before { + content: "\f28a"; +} +.ion-ios7-play:before { + content: "\f1c8"; +} +.ion-ios7-play-outline:before { + content: "\f1c7"; +} +.ion-ios7-plus:before { + content: "\f1cb"; +} +.ion-ios7-plus-empty:before { + content: "\f1c9"; +} +.ion-ios7-plus-outline:before { + content: "\f1ca"; +} +.ion-ios7-pricetag:before { + content: "\f28d"; +} +.ion-ios7-pricetag-outline:before { + content: "\f28c"; +} +.ion-ios7-pricetags:before { + content: "\f333"; +} +.ion-ios7-pricetags-outline:before { + content: "\f332"; +} +.ion-ios7-printer:before { + content: "\f1cd"; +} +.ion-ios7-printer-outline:before { + content: "\f1cc"; +} +.ion-ios7-pulse:before { + content: "\f335"; +} +.ion-ios7-pulse-strong:before { + content: "\f334"; +} +.ion-ios7-rainy:before { + content: "\f1cf"; +} +.ion-ios7-rainy-outline:before { + content: "\f1ce"; +} +.ion-ios7-recording:before { + content: "\f1d1"; +} +.ion-ios7-recording-outline:before { + content: "\f1d0"; +} +.ion-ios7-redo:before { + content: "\f1d3"; +} +.ion-ios7-redo-outline:before { + content: "\f1d2"; +} +.ion-ios7-refresh:before { + content: "\f1d6"; +} +.ion-ios7-refresh-empty:before { + content: "\f1d4"; +} +.ion-ios7-refresh-outline:before { + content: "\f1d5"; +} +.ion-ios7-reload:before { + content: "\f28e"; +} +.ion-ios7-reverse-camera:before { + content: "\f337"; +} +.ion-ios7-reverse-camera-outline:before { + content: "\f336"; +} +.ion-ios7-rewind:before { + content: "\f1d8"; +} +.ion-ios7-rewind-outline:before { + content: "\f1d7"; +} +.ion-ios7-search:before { + content: "\f1da"; +} +.ion-ios7-search-strong:before { + content: "\f1d9"; +} +.ion-ios7-settings:before { + content: "\f339"; +} +.ion-ios7-settings-strong:before { + content: "\f338"; +} +.ion-ios7-shrink:before { + content: "\f30e"; +} +.ion-ios7-skipbackward:before { + content: "\f1dc"; +} +.ion-ios7-skipbackward-outline:before { + content: "\f1db"; +} +.ion-ios7-skipforward:before { + content: "\f1de"; +} +.ion-ios7-skipforward-outline:before { + content: "\f1dd"; +} +.ion-ios7-snowy:before { + content: "\f309"; +} +.ion-ios7-speedometer:before { + content: "\f290"; +} +.ion-ios7-speedometer-outline:before { + content: "\f28f"; +} +.ion-ios7-star:before { + content: "\f1e0"; +} +.ion-ios7-star-half:before { + content: "\f33a"; +} +.ion-ios7-star-outline:before { + content: "\f1df"; +} +.ion-ios7-stopwatch:before { + content: "\f1e2"; +} +.ion-ios7-stopwatch-outline:before { + content: "\f1e1"; +} +.ion-ios7-sunny:before { + content: "\f1e4"; +} +.ion-ios7-sunny-outline:before { + content: "\f1e3"; +} +.ion-ios7-telephone:before { + content: "\f1e6"; +} +.ion-ios7-telephone-outline:before { + content: "\f1e5"; +} +.ion-ios7-tennisball:before { + content: "\f33c"; +} +.ion-ios7-tennisball-outline:before { + content: "\f33b"; +} +.ion-ios7-thunderstorm:before { + content: "\f1e8"; +} +.ion-ios7-thunderstorm-outline:before { + content: "\f1e7"; +} +.ion-ios7-time:before { + content: "\f292"; +} +.ion-ios7-time-outline:before { + content: "\f291"; +} +.ion-ios7-timer:before { + content: "\f1ea"; +} +.ion-ios7-timer-outline:before { + content: "\f1e9"; +} +.ion-ios7-toggle:before { + content: "\f33e"; +} +.ion-ios7-toggle-outline:before { + content: "\f33d"; +} +.ion-ios7-trash:before { + content: "\f1ec"; +} +.ion-ios7-trash-outline:before { + content: "\f1eb"; +} +.ion-ios7-undo:before { + content: "\f1ee"; +} +.ion-ios7-undo-outline:before { + content: "\f1ed"; +} +.ion-ios7-unlocked:before { + content: "\f1f0"; +} +.ion-ios7-unlocked-outline:before { + content: "\f1ef"; +} +.ion-ios7-upload:before { + content: "\f1f2"; +} +.ion-ios7-upload-outline:before { + content: "\f1f1"; +} +.ion-ios7-videocam:before { + content: "\f1f4"; +} +.ion-ios7-videocam-outline:before { + content: "\f1f3"; +} +.ion-ios7-volume-high:before { + content: "\f1f5"; +} +.ion-ios7-volume-low:before { + content: "\f1f6"; +} +.ion-ios7-wineglass:before { + content: "\f294"; +} +.ion-ios7-wineglass-outline:before { + content: "\f293"; +} +.ion-ios7-world:before { + content: "\f1f8"; +} +.ion-ios7-world-outline:before { + content: "\f1f7"; +} +.ion-ipad:before { + content: "\f1f9"; +} +.ion-iphone:before { + content: "\f1fa"; +} +.ion-ipod:before { + content: "\f1fb"; +} +.ion-jet:before { + content: "\f295"; +} +.ion-key:before { + content: "\f296"; +} +.ion-knife:before { + content: "\f297"; +} +.ion-laptop:before { + content: "\f1fc"; +} +.ion-leaf:before { + content: "\f1fd"; +} +.ion-levels:before { + content: "\f298"; +} +.ion-lightbulb:before { + content: "\f299"; +} +.ion-link:before { + content: "\f1fe"; +} +.ion-load-a:before { + content: "\f29a"; +} +.ion-load-b:before { + content: "\f29b"; +} +.ion-load-c:before { + content: "\f29c"; +} +.ion-load-d:before { + content: "\f29d"; +} +.ion-location:before { + content: "\f1ff"; +} +.ion-locked:before { + content: "\f200"; +} +.ion-log-in:before { + content: "\f29e"; +} +.ion-log-out:before { + content: "\f29f"; +} +.ion-loop:before { + content: "\f201"; +} +.ion-magnet:before { + content: "\f2a0"; +} +.ion-male:before { + content: "\f2a1"; +} +.ion-man:before { + content: "\f202"; +} +.ion-map:before { + content: "\f203"; +} +.ion-medkit:before { + content: "\f2a2"; +} +.ion-merge:before { + content: "\f33f"; +} +.ion-mic-a:before { + content: "\f204"; +} +.ion-mic-b:before { + content: "\f205"; +} +.ion-mic-c:before { + content: "\f206"; +} +.ion-minus:before { + content: "\f209"; +} +.ion-minus-circled:before { + content: "\f207"; +} +.ion-minus-round:before { + content: "\f208"; +} +.ion-model-s:before { + content: "\f2c1"; +} +.ion-monitor:before { + content: "\f20a"; +} +.ion-more:before { + content: "\f20b"; +} +.ion-mouse:before { + content: "\f340"; +} +.ion-music-note:before { + content: "\f20c"; +} +.ion-navicon:before { + content: "\f20e"; +} +.ion-navicon-round:before { + content: "\f20d"; +} +.ion-navigate:before { + content: "\f2a3"; +} +.ion-network:before { + content: "\f341"; +} +.ion-no-smoking:before { + content: "\f2c2"; +} +.ion-nuclear:before { + content: "\f2a4"; +} +.ion-outlet:before { + content: "\f342"; +} +.ion-paper-airplane:before { + content: "\f2c3"; +} +.ion-paperclip:before { + content: "\f20f"; +} +.ion-pause:before { + content: "\f210"; +} +.ion-person:before { + content: "\f213"; +} +.ion-person-add:before { + content: "\f211"; +} +.ion-person-stalker:before { + content: "\f212"; +} +.ion-pie-graph:before { + content: "\f2a5"; +} +.ion-pin:before { + content: "\f2a6"; +} +.ion-pinpoint:before { + content: "\f2a7"; +} +.ion-pizza:before { + content: "\f2a8"; +} +.ion-plane:before { + content: "\f214"; +} +.ion-planet:before { + content: "\f343"; +} +.ion-play:before { + content: "\f215"; +} +.ion-playstation:before { + content: "\f30a"; +} +.ion-plus:before { + content: "\f218"; +} +.ion-plus-circled:before { + content: "\f216"; +} +.ion-plus-round:before { + content: "\f217"; +} +.ion-podium:before { + content: "\f344"; +} +.ion-pound:before { + content: "\f219"; +} +.ion-power:before { + content: "\f2a9"; +} +.ion-pricetag:before { + content: "\f2aa"; +} +.ion-pricetags:before { + content: "\f2ab"; +} +.ion-printer:before { + content: "\f21a"; +} +.ion-pull-request:before { + content: "\f345"; +} +.ion-qr-scanner:before { + content: "\f346"; +} +.ion-quote:before { + content: "\f347"; +} +.ion-radio-waves:before { + content: "\f2ac"; +} +.ion-record:before { + content: "\f21b"; +} +.ion-refresh:before { + content: "\f21c"; +} +.ion-reply:before { + content: "\f21e"; +} +.ion-reply-all:before { + content: "\f21d"; +} +.ion-ribbon-a:before { + content: "\f348"; +} +.ion-ribbon-b:before { + content: "\f349"; +} +.ion-sad:before { + content: "\f34a"; +} +.ion-scissors:before { + content: "\f34b"; +} +.ion-search:before { + content: "\f21f"; +} +.ion-settings:before { + content: "\f2ad"; +} +.ion-share:before { + content: "\f220"; +} +.ion-shuffle:before { + content: "\f221"; +} +.ion-skip-backward:before { + content: "\f222"; +} +.ion-skip-forward:before { + content: "\f223"; +} +.ion-social-android:before { + content: "\f225"; +} +.ion-social-android-outline:before { + content: "\f224"; +} +.ion-social-apple:before { + content: "\f227"; +} +.ion-social-apple-outline:before { + content: "\f226"; +} +.ion-social-bitcoin:before { + content: "\f2af"; +} +.ion-social-bitcoin-outline:before { + content: "\f2ae"; +} +.ion-social-buffer:before { + content: "\f229"; +} +.ion-social-buffer-outline:before { + content: "\f228"; +} +.ion-social-designernews:before { + content: "\f22b"; +} +.ion-social-designernews-outline:before { + content: "\f22a"; +} +.ion-social-dribbble:before { + content: "\f22d"; +} +.ion-social-dribbble-outline:before { + content: "\f22c"; +} +.ion-social-dropbox:before { + content: "\f22f"; +} +.ion-social-dropbox-outline:before { + content: "\f22e"; +} +.ion-social-facebook:before { + content: "\f231"; +} +.ion-social-facebook-outline:before { + content: "\f230"; +} +.ion-social-foursquare:before { + content: "\f34d"; +} +.ion-social-foursquare-outline:before { + content: "\f34c"; +} +.ion-social-freebsd-devil:before { + content: "\f2c4"; +} +.ion-social-github:before { + content: "\f233"; +} +.ion-social-github-outline:before { + content: "\f232"; +} +.ion-social-google:before { + content: "\f34f"; +} +.ion-social-google-outline:before { + content: "\f34e"; +} +.ion-social-googleplus:before { + content: "\f235"; +} +.ion-social-googleplus-outline:before { + content: "\f234"; +} +.ion-social-hackernews:before { + content: "\f237"; +} +.ion-social-hackernews-outline:before { + content: "\f236"; +} +.ion-social-instagram:before { + content: "\f351"; +} +.ion-social-instagram-outline:before { + content: "\f350"; +} +.ion-social-linkedin:before { + content: "\f239"; +} +.ion-social-linkedin-outline:before { + content: "\f238"; +} +.ion-social-pinterest:before { + content: "\f2b1"; +} +.ion-social-pinterest-outline:before { + content: "\f2b0"; +} +.ion-social-reddit:before { + content: "\f23b"; +} +.ion-social-reddit-outline:before { + content: "\f23a"; +} +.ion-social-rss:before { + content: "\f23d"; +} +.ion-social-rss-outline:before { + content: "\f23c"; +} +.ion-social-skype:before { + content: "\f23f"; +} +.ion-social-skype-outline:before { + content: "\f23e"; +} +.ion-social-tumblr:before { + content: "\f241"; +} +.ion-social-tumblr-outline:before { + content: "\f240"; +} +.ion-social-tux:before { + content: "\f2c5"; +} +.ion-social-twitter:before { + content: "\f243"; +} +.ion-social-twitter-outline:before { + content: "\f242"; +} +.ion-social-usd:before { + content: "\f353"; +} +.ion-social-usd-outline:before { + content: "\f352"; +} +.ion-social-vimeo:before { + content: "\f245"; +} +.ion-social-vimeo-outline:before { + content: "\f244"; +} +.ion-social-windows:before { + content: "\f247"; +} +.ion-social-windows-outline:before { + content: "\f246"; +} +.ion-social-wordpress:before { + content: "\f249"; +} +.ion-social-wordpress-outline:before { + content: "\f248"; +} +.ion-social-yahoo:before { + content: "\f24b"; +} +.ion-social-yahoo-outline:before { + content: "\f24a"; +} +.ion-social-youtube:before { + content: "\f24d"; +} +.ion-social-youtube-outline:before { + content: "\f24c"; +} +.ion-speakerphone:before { + content: "\f2b2"; +} +.ion-speedometer:before { + content: "\f2b3"; +} +.ion-spoon:before { + content: "\f2b4"; +} +.ion-star:before { + content: "\f24e"; +} +.ion-stats-bars:before { + content: "\f2b5"; +} +.ion-steam:before { + content: "\f30b"; +} +.ion-stop:before { + content: "\f24f"; +} +.ion-thermometer:before { + content: "\f2b6"; +} +.ion-thumbsdown:before { + content: "\f250"; +} +.ion-thumbsup:before { + content: "\f251"; +} +.ion-toggle:before { + content: "\f355"; +} +.ion-toggle-filled:before { + content: "\f354"; +} +.ion-trash-a:before { + content: "\f252"; +} +.ion-trash-b:before { + content: "\f253"; +} +.ion-trophy:before { + content: "\f356"; +} +.ion-umbrella:before { + content: "\f2b7"; +} +.ion-university:before { + content: "\f357"; +} +.ion-unlocked:before { + content: "\f254"; +} +.ion-upload:before { + content: "\f255"; +} +.ion-usb:before { + content: "\f2b8"; +} +.ion-videocamera:before { + content: "\f256"; +} +.ion-volume-high:before { + content: "\f257"; +} +.ion-volume-low:before { + content: "\f258"; +} +.ion-volume-medium:before { + content: "\f259"; +} +.ion-volume-mute:before { + content: "\f25a"; +} +.ion-wand:before { + content: "\f358"; +} +.ion-waterdrop:before { + content: "\f25b"; +} +.ion-wifi:before { + content: "\f25c"; +} +.ion-wineglass:before { + content: "\f2b9"; +} +.ion-woman:before { + content: "\f25d"; +} +.ion-wrench:before { + content: "\f2ba"; +} +.ion-xbox:before { + content: "\f30c"; +} +/* @FONT-FACE loads font into browser */ +@font-face { + font-family: 'typicons'; + font-weight: normal; + font-style: normal; + src: url('../fonts/typicons.eot'); + src: url('../fonts/typicons.eot?#iefix') format('embedded-opentype'), url('../fonts/typicons.woff') format('woff'), url('../fonts/typicons.ttf') format('truetype'), url('../fonts/typicons.svg#typicons') format('svg'); +} +/* :before psuedo-selector inserts and styles icon */ +.typcn:before { + font-family: 'typicons'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + height: 1em; + font-size: 1em; + text-align: center; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} +/* Code for individual icons */ +.typcn-adjust-brightness:before { + content: '\e000'; + /* '' */ +} +.typcn-adjust-contrast:before { + content: '\e001'; + /* '' */ +} +.typcn-anchor-outline:before { + content: '\e002'; + /* '' */ +} +.typcn-anchor:before { + content: '\e003'; + /* '' */ +} +.typcn-archive:before { + content: '\e004'; + /* '' */ +} +.typcn-arrow-back-outline:before { + content: '\e005'; + /* '' */ +} +.typcn-arrow-back:before { + content: '\e006'; + /* '' */ +} +.typcn-arrow-down-outline:before { + content: '\e007'; + /* '' */ +} +.typcn-arrow-down-thick:before { + content: '\e008'; + /* '' */ +} +.typcn-arrow-down:before { + content: '\e009'; + /* '' */ +} +.typcn-arrow-forward-outline:before { + content: '\e00a'; + /* '' */ +} +.typcn-arrow-forward:before { + content: '\e00b'; + /* '' */ +} +.typcn-arrow-left-outline:before { + content: '\e00c'; + /* '' */ +} +.typcn-arrow-left-thick:before { + content: '\e00d'; + /* '' */ +} +.typcn-arrow-left:before { + content: '\e00e'; + /* '' */ +} +.typcn-arrow-loop-outline:before { + content: '\e00f'; + /* '' */ +} +.typcn-arrow-loop:before { + content: '\e010'; + /* '' */ +} +.typcn-arrow-maximise-outline:before { + content: '\e011'; + /* '' */ +} +.typcn-arrow-maximise:before { + content: '\e012'; + /* '' */ +} +.typcn-arrow-minimise-outline:before { + content: '\e013'; + /* '' */ +} +.typcn-arrow-minimise:before { + content: '\e014'; + /* '' */ +} +.typcn-arrow-move-outline:before { + content: '\e015'; + /* '' */ +} +.typcn-arrow-move:before { + content: '\e016'; + /* '' */ +} +.typcn-arrow-repeat-outline:before { + content: '\e017'; + /* '' */ +} +.typcn-arrow-repeat:before { + content: '\e018'; + /* '' */ +} +.typcn-arrow-right-outline:before { + content: '\e019'; + /* '' */ +} +.typcn-arrow-right-thick:before { + content: '\e01a'; + /* '' */ +} +.typcn-arrow-right:before { + content: '\e01b'; + /* '' */ +} +.typcn-arrow-shuffle:before { + content: '\e01c'; + /* '' */ +} +.typcn-arrow-sorted-down:before { + content: '\e01d'; + /* '' */ +} +.typcn-arrow-sorted-up:before { + content: '\e01e'; + /* '' */ +} +.typcn-arrow-sync-outline:before { + content: '\e01f'; + /* '' */ +} +.typcn-arrow-sync:before { + content: '\e020'; + /* '' */ +} +.typcn-arrow-unsorted:before { + content: '\e021'; + /* '' */ +} +.typcn-arrow-up-outline:before { + content: '\e022'; + /* '' */ +} +.typcn-arrow-up-thick:before { + content: '\e023'; + /* '' */ +} +.typcn-arrow-up:before { + content: '\e024'; + /* '' */ +} +.typcn-at:before { + content: '\e025'; + /* '' */ +} +.typcn-attachment-outline:before { + content: '\e026'; + /* '' */ +} +.typcn-attachment:before { + content: '\e027'; + /* '' */ +} +.typcn-backspace-outline:before { + content: '\e028'; + /* '' */ +} +.typcn-backspace:before { + content: '\e029'; + /* '' */ +} +.typcn-battery-charge:before { + content: '\e02a'; + /* '' */ +} +.typcn-battery-full:before { + content: '\e02b'; + /* '' */ +} +.typcn-battery-high:before { + content: '\e02c'; + /* '' */ +} +.typcn-battery-low:before { + content: '\e02d'; + /* '' */ +} +.typcn-battery-mid:before { + content: '\e02e'; + /* '' */ +} +.typcn-beaker:before { + content: '\e02f'; + /* '' */ +} +.typcn-beer:before { + content: '\e030'; + /* '' */ +} +.typcn-bell:before { + content: '\e031'; + /* '' */ +} +.typcn-book:before { + content: '\e032'; + /* '' */ +} +.typcn-bookmark:before { + content: '\e033'; + /* '' */ +} +.typcn-briefcase:before { + content: '\e034'; + /* '' */ +} +.typcn-brush:before { + content: '\e035'; + /* '' */ +} +.typcn-business-card:before { + content: '\e036'; + /* '' */ +} +.typcn-calculator:before { + content: '\e037'; + /* '' */ +} +.typcn-calendar-outline:before { + content: '\e038'; + /* '' */ +} +.typcn-calendar:before { + content: '\e039'; + /* '' */ +} +.typcn-camera-outline:before { + content: '\e03a'; + /* '' */ +} +.typcn-camera:before { + content: '\e03b'; + /* '' */ +} +.typcn-cancel-outline:before { + content: '\e03c'; + /* '' */ +} +.typcn-cancel:before { + content: '\e03d'; + /* '' */ +} +.typcn-chart-area-outline:before { + content: '\e03e'; + /* '' */ +} +.typcn-chart-area:before { + content: '\e03f'; + /* '' */ +} +.typcn-chart-bar-outline:before { + content: '\e040'; + /* '' */ +} +.typcn-chart-bar:before { + content: '\e041'; + /* '' */ +} +.typcn-chart-line-outline:before { + content: '\e042'; + /* '' */ +} +.typcn-chart-line:before { + content: '\e043'; + /* '' */ +} +.typcn-chart-pie-outline:before { + content: '\e044'; + /* '' */ +} +.typcn-chart-pie:before { + content: '\e045'; + /* '' */ +} +.typcn-chevron-left-outline:before { + content: '\e046'; + /* '' */ +} +.typcn-chevron-left:before { + content: '\e047'; + /* '' */ +} +.typcn-chevron-right-outline:before { + content: '\e048'; + /* '' */ +} +.typcn-chevron-right:before { + content: '\e049'; + /* '' */ +} +.typcn-clipboard:before { + content: '\e04a'; + /* '' */ +} +.typcn-cloud-storage:before { + content: '\e04b'; + /* '' */ +} +.typcn-cloud-storage-outline:before { + content: '\e054'; + /* '' */ +} +.typcn-code-outline:before { + content: '\e04c'; + /* '' */ +} +.typcn-code:before { + content: '\e04d'; + /* '' */ +} +.typcn-coffee:before { + content: '\e04e'; + /* '' */ +} +.typcn-cog-outline:before { + content: '\e04f'; + /* '' */ +} +.typcn-cog:before { + content: '\e050'; + /* '' */ +} +.typcn-compass:before { + content: '\e051'; + /* '' */ +} +.typcn-contacts:before { + content: '\e052'; + /* '' */ +} +.typcn-credit-card:before { + content: '\e053'; + /* '' */ +} +.typcn-css3:before { + content: '\e055'; + /* '' */ +} +.typcn-database:before { + content: '\e056'; + /* '' */ +} +.typcn-delete-outline:before { + content: '\e057'; + /* '' */ +} +.typcn-delete:before { + content: '\e058'; + /* '' */ +} +.typcn-device-desktop:before { + content: '\e059'; + /* '' */ +} +.typcn-device-laptop:before { + content: '\e05a'; + /* '' */ +} +.typcn-device-phone:before { + content: '\e05b'; + /* '' */ +} +.typcn-device-tablet:before { + content: '\e05c'; + /* '' */ +} +.typcn-directions:before { + content: '\e05d'; + /* '' */ +} +.typcn-divide-outline:before { + content: '\e05e'; + /* '' */ +} +.typcn-divide:before { + content: '\e05f'; + /* '' */ +} +.typcn-document-add:before { + content: '\e060'; + /* '' */ +} +.typcn-document-delete:before { + content: '\e061'; + /* '' */ +} +.typcn-document-text:before { + content: '\e062'; + /* '' */ +} +.typcn-document:before { + content: '\e063'; + /* '' */ +} +.typcn-download-outline:before { + content: '\e064'; + /* '' */ +} +.typcn-download:before { + content: '\e065'; + /* '' */ +} +.typcn-dropbox:before { + content: '\e066'; + /* '' */ +} +.typcn-edit:before { + content: '\e067'; + /* '' */ +} +.typcn-eject-outline:before { + content: '\e068'; + /* '' */ +} +.typcn-eject:before { + content: '\e069'; + /* '' */ +} +.typcn-equals-outline:before { + content: '\e06a'; + /* '' */ +} +.typcn-equals:before { + content: '\e06b'; + /* '' */ +} +.typcn-export-outline:before { + content: '\e06c'; + /* '' */ +} +.typcn-export:before { + content: '\e06d'; + /* '' */ +} +.typcn-eye-outline:before { + content: '\e06e'; + /* '' */ +} +.typcn-eye:before { + content: '\e06f'; + /* '' */ +} +.typcn-feather:before { + content: '\e070'; + /* '' */ +} +.typcn-film:before { + content: '\e071'; + /* '' */ +} +.typcn-filter:before { + content: '\e072'; + /* '' */ +} +.typcn-flag-outline:before { + content: '\e073'; + /* '' */ +} +.typcn-flag:before { + content: '\e074'; + /* '' */ +} +.typcn-flash-outline:before { + content: '\e075'; + /* '' */ +} +.typcn-flash:before { + content: '\e076'; + /* '' */ +} +.typcn-flow-children:before { + content: '\e077'; + /* '' */ +} +.typcn-flow-merge:before { + content: '\e078'; + /* '' */ +} +.typcn-flow-parallel:before { + content: '\e079'; + /* '' */ +} +.typcn-flow-switch:before { + content: '\e07a'; + /* '' */ +} +.typcn-folder-add:before { + content: '\e07b'; + /* '' */ +} +.typcn-folder-delete:before { + content: '\e07c'; + /* '' */ +} +.typcn-folder-open:before { + content: '\e07d'; + /* '' */ +} +.typcn-folder:before { + content: '\e07e'; + /* '' */ +} +.typcn-gift:before { + content: '\e07f'; + /* '' */ +} +.typcn-globe-outline:before { + content: '\e080'; + /* '' */ +} +.typcn-globe:before { + content: '\e081'; + /* '' */ +} +.typcn-group-outline:before { + content: '\e082'; + /* '' */ +} +.typcn-group:before { + content: '\e083'; + /* '' */ +} +.typcn-headphones:before { + content: '\e084'; + /* '' */ +} +.typcn-heart-full-outline:before { + content: '\e085'; + /* '' */ +} +.typcn-heart-half-outline:before { + content: '\e086'; + /* '' */ +} +.typcn-heart-outline:before { + content: '\e087'; + /* '' */ +} +.typcn-heart:before { + content: '\e088'; + /* '' */ +} +.typcn-home-outline:before { + content: '\e089'; + /* '' */ +} +.typcn-home:before { + content: '\e08a'; + /* '' */ +} +.typcn-html5:before { + content: '\e08b'; + /* '' */ +} +.typcn-image-outline:before { + content: '\e08c'; + /* '' */ +} +.typcn-image:before { + content: '\e08d'; + /* '' */ +} +.typcn-infinity-outline:before { + content: '\e08e'; + /* '' */ +} +.typcn-infinity:before { + content: '\e08f'; + /* '' */ +} +.typcn-info-large-outline:before { + content: '\e090'; + /* '' */ +} +.typcn-info-large:before { + content: '\e091'; + /* '' */ +} +.typcn-info-outline:before { + content: '\e092'; + /* '' */ +} +.typcn-info:before { + content: '\e093'; + /* '' */ +} +.typcn-input-checked-outline:before { + content: '\e094'; + /* '' */ +} +.typcn-input-checked:before { + content: '\e095'; + /* '' */ +} +.typcn-key-outline:before { + content: '\e096'; + /* '' */ +} +.typcn-key:before { + content: '\e097'; + /* '' */ +} +.typcn-keyboard:before { + content: '\e098'; + /* '' */ +} +.typcn-leaf:before { + content: '\e099'; + /* '' */ +} +.typcn-lightbulb:before { + content: '\e09a'; + /* '' */ +} +.typcn-link-outline:before { + content: '\e09b'; + /* '' */ +} +.typcn-link:before { + content: '\e09c'; + /* '' */ +} +.typcn-location-arrow-outline:before { + content: '\e09d'; + /* '' */ +} +.typcn-location-arrow:before { + content: '\e09e'; + /* '' */ +} +.typcn-location-outline:before { + content: '\e09f'; + /* '' */ +} +.typcn-location:before { + content: '\e0a0'; + /* '' */ +} +.typcn-lock-closed-outline:before { + content: '\e0a1'; + /* '' */ +} +.typcn-lock-closed:before { + content: '\e0a2'; + /* '' */ +} +.typcn-lock-open-outline:before { + content: '\e0a3'; + /* '' */ +} +.typcn-lock-open:before { + content: '\e0a4'; + /* '' */ +} +.typcn-mail:before { + content: '\e0a5'; + /* '' */ +} +.typcn-map:before { + content: '\e0a6'; + /* '' */ +} +.typcn-media-eject-outline:before { + content: '\e0a7'; + /* '' */ +} +.typcn-media-eject:before { + content: '\e0a8'; + /* '' */ +} +.typcn-media-fast-forward-outline:before { + content: '\e0a9'; + /* '' */ +} +.typcn-media-fast-forward:before { + content: '\e0aa'; + /* '' */ +} +.typcn-media-pause-outline:before { + content: '\e0ab'; + /* '' */ +} +.typcn-media-pause:before { + content: '\e0ac'; + /* '' */ +} +.typcn-media-play-outline:before { + content: '\e0ad'; + /* '' */ +} +.typcn-media-play-reverse-outline:before { + content: '\e0ae'; + /* '' */ +} +.typcn-media-play-reverse:before { + content: '\e0af'; + /* '' */ +} +.typcn-media-play:before { + content: '\e0b0'; + /* '' */ +} +.typcn-media-record-outline:before { + content: '\e0b1'; + /* '' */ +} +.typcn-media-record:before { + content: '\e0b2'; + /* '' */ +} +.typcn-media-rewind-outline:before { + content: '\e0b3'; + /* '' */ +} +.typcn-media-rewind:before { + content: '\e0b4'; + /* '' */ +} +.typcn-media-stop-outline:before { + content: '\e0b5'; + /* '' */ +} +.typcn-media-stop:before { + content: '\e0b6'; + /* '' */ +} +.typcn-message-typing:before { + content: '\e0b7'; + /* '' */ +} +.typcn-message:before { + content: '\e0b8'; + /* '' */ +} +.typcn-messages:before { + content: '\e0b9'; + /* '' */ +} +.typcn-microphone-outline:before { + content: '\e0ba'; + /* '' */ +} +.typcn-microphone:before { + content: '\e0bb'; + /* '' */ +} +.typcn-minus-outline:before { + content: '\e0bc'; + /* '' */ +} +.typcn-minus:before { + content: '\e0bd'; + /* '' */ +} +.typcn-mortar-board:before { + content: '\e0be'; + /* '' */ +} +.typcn-news:before { + content: '\e0bf'; + /* '' */ +} +.typcn-notes-outline:before { + content: '\e0c0'; + /* '' */ +} +.typcn-notes:before { + content: '\e0c1'; + /* '' */ +} +.typcn-pen:before { + content: '\e0c2'; + /* '' */ +} +.typcn-pencil:before { + content: '\e0c3'; + /* '' */ +} +.typcn-phone-outline:before { + content: '\e0c4'; + /* '' */ +} +.typcn-phone:before { + content: '\e0c5'; + /* '' */ +} +.typcn-pi-outline:before { + content: '\e0c6'; + /* '' */ +} +.typcn-pi:before { + content: '\e0c7'; + /* '' */ +} +.typcn-pin-outline:before { + content: '\e0c8'; + /* '' */ +} +.typcn-pin:before { + content: '\e0c9'; + /* '' */ +} +.typcn-pipette:before { + content: '\e0ca'; + /* '' */ +} +.typcn-plane-outline:before { + content: '\e0cb'; + /* '' */ +} +.typcn-plane:before { + content: '\e0cc'; + /* '' */ +} +.typcn-plug:before { + content: '\e0cd'; + /* '' */ +} +.typcn-plus-outline:before { + content: '\e0ce'; + /* '' */ +} +.typcn-plus:before { + content: '\e0cf'; + /* '' */ +} +.typcn-point-of-interest-outline:before { + content: '\e0d0'; + /* '' */ +} +.typcn-point-of-interest:before { + content: '\e0d1'; + /* '' */ +} +.typcn-power-outline:before { + content: '\e0d2'; + /* '' */ +} +.typcn-power:before { + content: '\e0d3'; + /* '' */ +} +.typcn-printer:before { + content: '\e0d4'; + /* '' */ +} +.typcn-puzzle-outline:before { + content: '\e0d5'; + /* '' */ +} +.typcn-puzzle:before { + content: '\e0d6'; + /* '' */ +} +.typcn-radar-outline:before { + content: '\e0d7'; + /* '' */ +} +.typcn-radar:before { + content: '\e0d8'; + /* '' */ +} +.typcn-refresh-outline:before { + content: '\e0d9'; + /* '' */ +} +.typcn-refresh:before { + content: '\e0da'; + /* '' */ +} +.typcn-rss-outline:before { + content: '\e0db'; + /* '' */ +} +.typcn-rss:before { + content: '\e0dc'; + /* '' */ +} +.typcn-scissors-outline:before { + content: '\e0dd'; + /* '' */ +} +.typcn-scissors:before { + content: '\e0de'; + /* '' */ +} +.typcn-shopping-bag:before { + content: '\e0df'; + /* '' */ +} +.typcn-shopping-cart:before { + content: '\e0e0'; + /* '' */ +} +.typcn-social-at-circular:before { + content: '\e0e1'; + /* '' */ +} +.typcn-social-dribbble-circular:before { + content: '\e0e2'; + /* '' */ +} +.typcn-social-dribbble:before { + content: '\e0e3'; + /* '' */ +} +.typcn-social-facebook-circular:before { + content: '\e0e4'; + /* '' */ +} +.typcn-social-facebook:before { + content: '\e0e5'; + /* '' */ +} +.typcn-social-flickr-circular:before { + content: '\e0e6'; + /* '' */ +} +.typcn-social-flickr:before { + content: '\e0e7'; + /* '' */ +} +.typcn-social-github-circular:before { + content: '\e0e8'; + /* '' */ +} +.typcn-social-github:before { + content: '\e0e9'; + /* '' */ +} +.typcn-social-google-plus-circular:before { + content: '\e0ea'; + /* '' */ +} +.typcn-social-google-plus:before { + content: '\e0eb'; + /* '' */ +} +.typcn-social-instagram-circular:before { + content: '\e0ec'; + /* '' */ +} +.typcn-social-instagram:before { + content: '\e0ed'; + /* '' */ +} +.typcn-social-last-fm-circular:before { + content: '\e0ee'; + /* '' */ +} +.typcn-social-last-fm:before { + content: '\e0ef'; + /* '' */ +} +.typcn-social-linkedin-circular:before { + content: '\e0f0'; + /* '' */ +} +.typcn-social-linkedin:before { + content: '\e0f1'; + /* '' */ +} +.typcn-social-pinterest-circular:before { + content: '\e0f2'; + /* '' */ +} +.typcn-social-pinterest:before { + content: '\e0f3'; + /* '' */ +} +.typcn-social-skype-outline:before { + content: '\e0f4'; + /* '' */ +} +.typcn-social-skype:before { + content: '\e0f5'; + /* '' */ +} +.typcn-social-tumbler-circular:before { + content: '\e0f6'; + /* '' */ +} +.typcn-social-tumbler:before { + content: '\e0f7'; + /* '' */ +} +.typcn-social-twitter-circular:before { + content: '\e0f8'; + /* '' */ +} +.typcn-social-twitter:before { + content: '\e0f9'; + /* '' */ +} +.typcn-social-vimeo-circular:before { + content: '\e0fa'; + /* '' */ +} +.typcn-social-vimeo:before { + content: '\e0fb'; + /* '' */ +} +.typcn-social-youtube-circular:before { + content: '\e0fc'; + /* '' */ +} +.typcn-social-youtube:before { + content: '\e0fd'; + /* '' */ +} +.typcn-sort-alphabetically-outline:before { + content: '\e0fe'; + /* '' */ +} +.typcn-sort-alphabetically:before { + content: '\e0ff'; + /* '' */ +} +.typcn-sort-numerically-outline:before { + content: '\e100'; + /* '' */ +} +.typcn-sort-numerically:before { + content: '\e101'; + /* '' */ +} +.typcn-spanner-outline:before { + content: '\e102'; + /* '' */ +} +.typcn-spanner:before { + content: '\e103'; + /* '' */ +} +.typcn-spiral:before { + content: '\e104'; + /* '' */ +} +.typcn-star-full-outline:before { + content: '\e105'; + /* '' */ +} +.typcn-star-half-outline:before { + content: '\e106'; + /* '' */ +} +.typcn-star-half:before { + content: '\e107'; + /* '' */ +} +.typcn-star-outline:before { + content: '\e108'; + /* '' */ +} +.typcn-star:before { + content: '\e109'; + /* '' */ +} +.typcn-starburst-outline:before { + content: '\e10a'; + /* '' */ +} +.typcn-starburst:before { + content: '\e10b'; + /* '' */ +} +.typcn-stopwatch:before { + content: '\e10c'; + /* '' */ +} +.typcn-support:before { + content: '\e10d'; + /* '' */ +} +.typcn-tabs-outline:before { + content: '\e10e'; + /* '' */ +} +.typcn-tag:before { + content: '\e10f'; + /* '' */ +} +.typcn-tags:before { + content: '\e110'; + /* '' */ +} +.typcn-th-large-outline:before { + content: '\e111'; + /* '' */ +} +.typcn-th-large:before { + content: '\e112'; + /* '' */ +} +.typcn-th-list-outline:before { + content: '\e113'; + /* '' */ +} +.typcn-th-list:before { + content: '\e114'; + /* '' */ +} +.typcn-th-menu-outline:before { + content: '\e115'; + /* '' */ +} +.typcn-th-menu:before { + content: '\e116'; + /* '' */ +} +.typcn-th-small-outline:before { + content: '\e117'; + /* '' */ +} +.typcn-th-small:before { + content: '\e118'; + /* '' */ +} +.typcn-thermometer:before { + content: '\e119'; + /* '' */ +} +.typcn-thumbs-down:before { + content: '\e11a'; + /* '' */ +} +.typcn-thumbs-ok:before { + content: '\e11b'; + /* '' */ +} +.typcn-thumbs-up:before { + content: '\e11c'; + /* '' */ +} +.typcn-tick-outline:before { + content: '\e11d'; + /* '' */ +} +.typcn-tick:before { + content: '\e11e'; + /* '' */ +} +.typcn-ticket:before { + content: '\e11f'; + /* '' */ +} +.typcn-time:before { + content: '\e120'; + /* '' */ +} +.typcn-times-outline:before { + content: '\e121'; + /* '' */ +} +.typcn-times:before { + content: '\e122'; + /* '' */ +} +.typcn-trash:before { + content: '\e123'; + /* '' */ +} +.typcn-tree:before { + content: '\e124'; + /* '' */ +} +.typcn-upload-outline:before { + content: '\e125'; + /* '' */ +} +.typcn-upload:before { + content: '\e126'; + /* '' */ +} +.typcn-user-add-outline:before { + content: '\e127'; + /* '' */ +} +.typcn-user-add:before { + content: '\e128'; + /* '' */ +} +.typcn-user-delete-outline:before { + content: '\e129'; + /* '' */ +} +.typcn-user-delete:before { + content: '\e12a'; + /* '' */ +} +.typcn-user-outline:before { + content: '\e12b'; + /* '' */ +} +.typcn-user:before { + content: '\e12c'; + /* '' */ +} +.typcn-vendor-android:before { + content: '\e12d'; + /* '' */ +} +.typcn-vendor-apple:before { + content: '\e12e'; + /* '' */ +} +.typcn-vendor-microsoft:before { + content: '\e12f'; + /* '' */ +} +.typcn-video-outline:before { + content: '\e130'; + /* '' */ +} +.typcn-video:before { + content: '\e131'; + /* '' */ +} +.typcn-volume-down:before { + content: '\e132'; + /* '' */ +} +.typcn-volume-mute:before { + content: '\e133'; + /* '' */ +} +.typcn-volume-up:before { + content: '\e134'; + /* '' */ +} +.typcn-volume:before { + content: '\e135'; + /* '' */ +} +.typcn-warning-outline:before { + content: '\e136'; + /* '' */ +} +.typcn-warning:before { + content: '\e137'; + /* '' */ +} +.typcn-watch:before { + content: '\e138'; + /* '' */ +} +.typcn-waves-outline:before { + content: '\e139'; + /* '' */ +} +.typcn-waves:before { + content: '\e13a'; + /* '' */ +} +.typcn-weather-cloudy:before { + content: '\e13b'; + /* '' */ +} +.typcn-weather-downpour:before { + content: '\e13c'; + /* '' */ +} +.typcn-weather-night:before { + content: '\e13d'; + /* '' */ +} +.typcn-weather-partly-sunny:before { + content: '\e13e'; + /* '' */ +} +.typcn-weather-shower:before { + content: '\e13f'; + /* '' */ +} +.typcn-weather-snow:before { + content: '\e140'; + /* '' */ +} +.typcn-weather-stormy:before { + content: '\e141'; + /* '' */ +} +.typcn-weather-sunny:before { + content: '\e142'; + /* '' */ +} +.typcn-weather-windy-cloudy:before { + content: '\e143'; + /* '' */ +} +.typcn-weather-windy:before { + content: '\e144'; + /* '' */ +} +.typcn-wi-fi-outline:before { + content: '\e145'; + /* '' */ +} +.typcn-wi-fi:before { + content: '\e146'; + /* '' */ +} +.typcn-wine:before { + content: '\e147'; + /* '' */ +} +.typcn-world-outline:before { + content: '\e148'; + /* '' */ +} +.typcn-world:before { + content: '\e149'; + /* '' */ +} +.typcn-zoom-in-outline:before { + content: '\e14a'; + /* '' */ +} +.typcn-zoom-in:before { + content: '\e14b'; + /* '' */ +} +.typcn-zoom-out-outline:before { + content: '\e14c'; + /* '' */ +} +.typcn-zoom-out:before { + content: '\e14d'; + /* '' */ +} +.typcn-zoom-outline:before { + content: '\e14e'; + /* '' */ +} +.typcn-zoom:before { + content: '\e14f'; + /* '' */ +} diff --git a/assets/css/menu.css b/assets/css/menu.css new file mode 100644 index 0000000..5821300 --- /dev/null +++ b/assets/css/menu.css @@ -0,0 +1,557 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ +.topbar { + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} +.topbar .topbar-left { + background: #36404e; + float: left; + text-align: center; + height: 70px; + position: relative; + width: 225px; + z-index: 1; +} +.navbar-default { + background-color: #f3f3f3; + border-radius: 0; + border: none; + margin-bottom: 0; + padding: 0 20px; +} +.navbar-default .navbar-left li a.menu-item { + padding: 0 15px; + line-height: 68px; +} +.logo { + color: #ffffff !important; + font-size: 24px; + text-transform: uppercase; + font-family: 'Hind Madurai', sans-serif; + font-weight: 600; + letter-spacing: 1px; + line-height: 70px; +} +.logo i { + display: none; +} +.logo span span { + color: #7fc1fc; +} +.user-box a.user-link { + padding-top: 17px !important; + padding-bottom: 17px !important; +} +.user-box .user-img { + position: relative; + height: 36px; + width: 36px; + margin: 0px auto; +} +.navbar-default .right-menu-item { + height: 36px; + width: 36px; + padding: 0; + font-size: 18px; + border: 2px solid #ccc !important; + line-height: 35px; + text-align: center; + border-radius: 50%; + margin: 17px 5px; +} +.navbar-default .right-menu-item .badge { + position: absolute; + top: -8px; + right: 0px; +} +/* Notification */ +.notify-list h5 { + margin: 0 0 5px 0; + padding: 10px; + background-color: #f3f3f3; + text-align: center; +} +.notify-list .all-msgs a { + color: #313a46; + padding: 6px 10px; + display: block; +} +.side-menu { + width: 225px; + padding-top: 10px; + z-index: 10; + background: #36404e; + bottom: 50px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; + top: 0; + box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); +} +.side-menu .waves-effect .waves-ripple { + background-color: rgba(127, 193, 252, 0.4); +} +.side-menu.left { + position: absolute; + top: 60px; + bottom: 0; +} +body.fixed-left .side-menu.left { + bottom: 50px; + margin-bottom: -70px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; +} +.content-page { + margin-left: 225px; + overflow: hidden; +} +.content-page .content { + padding: 0 5px 10px 5px; + margin-top: 70px; +} +.button-menu-mobile { + background: transparent; + border: none; + color: #313a46; + padding: 0 20px; + display: inline-block; +} +.button-menu-mobile i { + font-size: 24px; + line-height: 70px; +} +.button-menu-mobile:hover { + color: #7fc1fc; +} +.sidebar-inner { + height: 100%; +} +#sidebar-menu, +#sidebar-menu ul, +#sidebar-menu li, +#sidebar-menu a { + border: 0; + font-weight: normal; + line-height: 1; + list-style: none; + margin: 0; + padding: 0; + position: relative; + text-decoration: none; +} +#sidebar-menu { + padding-bottom: 30px; + width: 100%; +} +#sidebar-menu a { + line-height: 1.3; +} +#sidebar-menu ul li .menu-arrow { + -webkit-transition: -webkit-transform 0.15s; + -o-transition: -o-transform 0.15s; + transition: transform .15s; + position: absolute; + right: 20px; + display: inline-block; + font-family: 'Material Design Icons'; + text-rendering: auto; + line-height: 18px; + font-size: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +#sidebar-menu ul li .menu-arrow:before { + content: "\F142"; +} +#sidebar-menu ul li a.subdrop .menu-arrow { + -ms-transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +#sidebar-menu ul ul { + display: none; +} +#sidebar-menu ul ul li { + border-top: 0; +} +#sidebar-menu ul ul li.active a { + color: #7fc1fc; +} +#sidebar-menu ul ul a { + color: #98a6ad; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + border-left: 3px solid transparent; + display: block; + padding: 10px 20px 10px 59px; + font-size: 13px; +} +#sidebar-menu ul ul a:hover { + color: #ffffff; +} +#sidebar-menu ul ul a i { + margin-right: 5px; +} +#sidebar-menu ul ul ul a { + padding-left: 80px; +} +#sidebar-menu .label { + margin-top: 2px; +} +#sidebar-menu .subdrop { + color: #ffffff !important; + background-color: #313a46; +} +#sidebar-menu > ul > li > a { + color: #98a6ad; + display: block; + padding: 12px 20px; + margin: 2px 0; +} +#sidebar-menu > ul > li > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #313a46; +} +#sidebar-menu > ul > li > a > span { + vertical-align: middle; +} +#sidebar-menu ul li a i { + display: inline-block; + font-size: 18px; + line-height: 17px; + margin-left: 3px; + margin-right: 15px; + text-align: center; + vertical-align: middle; + width: 20px; +} +#sidebar-menu ul li a .drop-arrow { + float: right; +} +#sidebar-menu ul li a .drop-arrow i { + margin-right: 0px; +} +#sidebar-menu > ul > li > a.active { + color: #ffffff !important; + background-color: #313a46; +} +.menu-title { + padding: 12px 20px !important; + letter-spacing: .05em; + pointer-events: none; + cursor: default; + font-size: 11px; + text-transform: uppercase; + color: #98a6ad; + font-family: 'Hind Madurai', sans-serif; +} +/* Help Box */ +.help-box { + color: rgba(255, 255, 255, 0.5); + padding: 20px; + margin: 20px; + border: 2px solid rgba(255, 255, 255, 0.2); + border-radius: 5px; + font-size: 12px; +} +#wrapper.enlarged .menu-title, +#wrapper.enlarged .menu-arrow, +#wrapper.enlarged .help-box { + display: none !important; +} +#wrapper.enlarged #sidebar-menu ul ul { + margin-top: -2px; + padding-bottom: 5px; + padding-top: 5px; + z-index: 9999; + background-color: #36404e; +} +#wrapper.enlarged .left.side-menu { + width: 70px; + z-index: 5; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a { + padding: 15px 20px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:hover { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:active { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:focus { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a i { + margin-right: 20px !important; + font-size: 20px; +} +#wrapper.enlarged .left.side-menu .label { + position: absolute; + top: 5px; + left: 35px; + text-indent: 0; + display: block !important; + padding: .2em .6em .3em !important; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li { + position: relative; + white-space: nowrap; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > a { + position: relative; + width: 260px; + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul { + display: block; + left: 70px; + position: absolute; + width: 190px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul a { + box-shadow: none; + padding-left: 15px; + position: relative; + width: 186px; + z-index: 6; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul a:hover { + color: #ffffff; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover a span { + display: inline; +} +#wrapper.enlarged .left.side-menu #sidebar-menu a.subdrop { + color: #ffffff !important; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > ul { + display: none; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li:hover > ul { + display: block; + left: 190px; + margin-top: -36px; + position: absolute; + width: 190px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li > a span.pull-right { + -ms-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + position: absolute; + right: 20px; + top: 12px; + transform: rotate(270deg); +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li.active a { + color: #ffffff; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > a span { + display: none; + padding-left: 10px; +} +#wrapper.enlarged .left.side-menu .user-details { + display: none; +} +#wrapper.enlarged .content-page { + margin-left: 70px; +} +#wrapper.enlarged .footer { + left: 70px; +} +#wrapper.enlarged .topbar .topbar-left { + width: 70px !important; +} +#wrapper.enlarged .topbar .topbar-left .logo span { + display: none; + opacity: 0; +} +#wrapper.enlarged .topbar .topbar-left .logo i { + display: block; + line-height: 70px; + color: #7fc1fc !important; +} +#wrapper.enlarged #sidebar-menu > ul > li:hover > a.open :after { + display: none; +} +#wrapper.enlarged #sidebar-menu > ul > li:hover > a.active :after { + display: none; +} +#wrapper.right-bar-enabled .right-bar { + right: 0; +} +#wrapper.right-bar-enabled .left-layout { + left: 0; +} +/* Right sidebar */ +.side-bar.right-bar { + float: right !important; + right: -266px; + top: 0px; +} +.side-bar { + -moz-transition: all 200ms ease-out; + -webkit-transition: all 200ms ease-out; + background-color: #ffffff; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + display: block; + float: left; + height: 100%; + position: fixed; + transition: all 200ms ease-out; + width: 240px; +} +.right-bar { + background: #ffffff !important; + z-index: 999 !important; +} +.right-bar h4 { + border-bottom: 1px solid rgba(152, 166, 173, 0.5); + padding: 4px 10px 10px 18px; + text-transform: uppercase; + font-size: 14px; + letter-spacing: 0.03em; +} +.right-bar .right-bar-toggle { + float: right; + line-height: 46px; + font-size: 20px; + color: #333; + padding: 0 10px; +} +.right-bar .setting-list { + padding: 0 20px 20px 20px; +} +.user-list .user-list-item { + padding: 10px 12px !important; + border-bottom: 1px solid #EEEEEE !important; +} +.user-list .user-list-item .avatar { + float: left; + margin-right: 5px; + width: 30px; + height: 30px; +} +.user-list .user-list-item .avatar img { + border-radius: 50%; + width: 100%; +} +.user-list .user-list-item .icon { + float: left; + margin-right: 5px; + height: 30px; + width: 30px; + border-radius: 50%; + text-align: center; +} +.user-list .user-list-item .icon i { + color: #ffffff; + line-height: 30px; + font-size: 16px; +} +.user-list .user-list-item .user-desc { + margin-left: 40px; +} +.user-list .user-list-item .user-desc span.name { + color: #313a46; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 13px; +} +.user-list .user-list-item .user-desc span.desc { + color: #98a6ad; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 12px; +} +.user-list .user-list-item .user-desc span.time { + font-size: 11px; +} +/* Seach */ +.app-search { + position: relative; +} +.app-search a { + position: absolute; + top: 7px; + right: 26px; + color: rgba(152, 166, 173, 0.7); +} +.app-search a:hover { + color: #98a6ad; +} +.app-search .form-control, +.app-search .form-control:focus { + border: 1px solid rgba(152, 166, 173, 0.15); + font-size: 13px; + height: 34px; + color: #313a46; + padding: 7px 40px 7px 20px; + margin: 19px 12px 0 5px; + background: rgba(152, 166, 173, 0.1); + box-shadow: none; + border-radius: 30px; + width: 190px; +} +/* Page titles */ +.page-title { + font-size: 20px; + margin-bottom: 0; + margin-top: 0; + font-weight: 600; +} +.page-header { + border-bottom: 1px solid #DBDDDE; +} +.header-title { + font-size: 16px; + line-height: 16px; + margin-bottom: 8px; + font-weight: 600; +} +.page-title-box { + padding: 20px; + border-bottom: 1px solid #eee; + margin: 0 -20px 20px -20px; +} +.page-title-box .page-title { + margin-bottom: 0; + float: left; +} +.page-title-box .breadcrumb { + float: right; + background-color: transparent !important; +} +/* Body min-height set */ +body.fixed-left-void { + min-height: 1250px; +} diff --git a/assets/css/menu_sm.css b/assets/css/menu_sm.css new file mode 100644 index 0000000..a6df833 --- /dev/null +++ b/assets/css/menu_sm.css @@ -0,0 +1,525 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ +.topbar { + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} +.topbar .topbar-left { + background: #36404e; + float: left; + text-align: center; + height: 70px; + position: relative; + width: 160px; + z-index: 1; +} +.navbar-default { + background-color: #f3f3f3; + border-radius: 0; + border: none; + margin-bottom: 0; + padding: 0 20px; +} +.navbar-default .navbar-left li a.menu-item { + padding: 0 15px; + line-height: 68px; +} +.logo { + color: #ffffff !important; + font-size: 24px; + text-transform: uppercase; + font-family: 'Hind Madurai', sans-serif; + font-weight: 600; + letter-spacing: 1px; + line-height: 70px; +} +.logo i { + display: none; +} +.logo span span { + color: #7fc1fc; +} +.user-box a.user-link { + padding-top: 17px !important; + padding-bottom: 17px !important; +} +.user-box .user-img { + position: relative; + height: 36px; + width: 36px; + margin: 0px auto; +} +.navbar-default .right-menu-item { + height: 36px; + width: 36px; + padding: 0; + font-size: 18px; + border: 2px solid #ccc !important; + line-height: 35px; + text-align: center; + border-radius: 50%; + margin: 17px 5px; +} +.navbar-default .right-menu-item .badge { + position: absolute; + top: -8px; + right: 0px; +} +/* Notification */ +.notify-list h5 { + margin: 0 0 5px 0; + padding: 10px; + background-color: #f3f3f3; + text-align: center; +} +.notify-list .all-msgs a { + color: #313a46; + padding: 6px 10px; + display: block; +} +.side-menu { + width: 160px; + padding-top: 10px; + z-index: 10; + background: #36404e; + bottom: 50px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; + top: 0; + box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); +} +.side-menu .waves-effect .waves-ripple { + background-color: rgba(127, 193, 252, 0.4); +} +.side-menu.left { + position: absolute; + top: 60px; + bottom: 0; +} +body.fixed-left .side-menu.left { + bottom: 50px; + margin-bottom: -70px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; +} +.content-page { + margin-left: 160px; + overflow: hidden; +} +.content-page .content { + padding: 0 5px 10px 5px; + margin-top: 70px; +} +.button-menu-mobile { + background: transparent; + border: none; + color: #313a46; + padding: 0 20px; + display: inline-block; +} +.button-menu-mobile i { + font-size: 24px; + line-height: 70px; +} +.button-menu-mobile:hover { + color: #7fc1fc; +} +.sidebar-inner { + height: 100%; +} +#sidebar-menu, +#sidebar-menu ul, +#sidebar-menu li, +#sidebar-menu a { + border: 0; + font-weight: normal; + line-height: 1; + list-style: none; + margin: 0; + padding: 0; + position: relative; + text-decoration: none; +} +#sidebar-menu > ul > li { + margin: 15px 0; +} +#sidebar-menu { + padding-bottom: 30px; + width: 100%; + text-align: center; +} +#sidebar-menu a { + line-height: 1.3; +} +#sidebar-menu ul ul { + display: none; +} +#sidebar-menu ul ul li { + border-top: 0; +} +#sidebar-menu ul ul li.active a { + color: #7fc1fc; +} +#sidebar-menu ul ul a { + color: #98a6ad; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + border-left: 3px solid transparent; + display: block; + padding: 10px 20px; + font-size: 13px; +} +#sidebar-menu ul ul a:hover { + color: #ffffff; +} +#sidebar-menu ul ul a i { + margin-right: 5px; +} +#sidebar-menu ul ul ul a { + padding-left: 80px; +} +#sidebar-menu .label { + display: none; +} +#sidebar-menu .subdrop { + color: #ffffff !important; + background-color: #313a46; +} +#sidebar-menu > ul > li > a { + color: #98a6ad; + display: block; + padding: 12px 20px; + margin: 2px 0; +} +#sidebar-menu > ul > li > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #313a46; +} +#sidebar-menu > ul > li > a > span { + vertical-align: middle; +} +#sidebar-menu ul li a i { + display: block; + font-size: 22px; + line-height: 18px; + text-align: center; + margin-bottom: 10px; + vertical-align: middle; +} +#sidebar-menu ul li a .drop-arrow { + float: right; +} +#sidebar-menu ul li a .drop-arrow i { + margin-right: 0; +} +#sidebar-menu > ul > li > a.active { + color: #ffffff !important; + background-color: #313a46; +} +#sidebar-menu > ul > li > a.active i { + color: #7fc1fc; +} +.menu-title { + display: none; +} +/* Help Box */ +.help-box { + display: none; +} +#wrapper.enlarged .menu-title, +#wrapper.enlarged .menu-arrow, +#wrapper.enlarged .help-box { + display: none !important; +} +#wrapper.enlarged #sidebar-menu { + text-align: left; +} +#wrapper.enlarged #sidebar-menu ul ul { + margin-top: -2px; + padding-bottom: 5px; + padding-top: 5px; + z-index: 9999; + background-color: #36404e; +} +#wrapper.enlarged #sidebar-menu > ul > li { + margin: 4px 0; +} +#wrapper.enlarged .left.side-menu { + width: 70px; + z-index: 5; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a { + padding: 15px 20px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:hover { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:active { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a:focus { + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu > ul > li > a i { + font-size: 20px; + float: left; + margin: 0 25px 0 5px; +} +#wrapper.enlarged .left.side-menu .label { + display: none !important; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li { + position: relative; + white-space: nowrap; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > a { + position: relative; + width: 260px; + color: #ffffff !important; + background-color: #313a46; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul { + display: block; + left: 70px; + position: absolute; + width: 190px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul a { + box-shadow: none; + padding-left: 15px; + position: relative; + width: 186px; + z-index: 6; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul a:hover { + color: #ffffff; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover a span { + display: inline; +} +#wrapper.enlarged .left.side-menu #sidebar-menu a.subdrop { + color: #ffffff !important; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > ul { + display: none; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li:hover > ul { + display: block; + left: 190px; + margin-top: -36px; + position: absolute; + width: 190px; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li > a span.pull-right { + -ms-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + position: absolute; + right: 20px; + top: 12px; + transform: rotate(270deg); +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li.active a { + color: #ffffff; +} +#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > a span { + display: none; + padding-left: 10px; +} +#wrapper.enlarged .left.side-menu .user-details { + display: none; +} +#wrapper.enlarged .content-page { + margin-left: 70px; +} +#wrapper.enlarged .footer { + left: 70px; +} +#wrapper.enlarged .topbar .topbar-left { + width: 70px !important; +} +#wrapper.enlarged .topbar .topbar-left .logo span { + display: none; + opacity: 0; +} +#wrapper.enlarged .topbar .topbar-left .logo i { + display: block; + line-height: 70px; + color: #7fc1fc !important; +} +#wrapper.enlarged #sidebar-menu > ul > li:hover > a.open :after { + display: none; +} +#wrapper.enlarged #sidebar-menu > ul > li:hover > a.active :after { + display: none; +} +#wrapper.right-bar-enabled .right-bar { + right: 0; +} +#wrapper.right-bar-enabled .left-layout { + left: 0; +} +/* Right sidebar */ +.side-bar.right-bar { + float: right !important; + right: -266px; + top: 0px; +} +.side-bar { + -moz-transition: all 200ms ease-out; + -webkit-transition: all 200ms ease-out; + background-color: #ffffff; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + display: block; + float: left; + height: 100%; + position: fixed; + transition: all 200ms ease-out; + width: 240px; +} +.right-bar { + background: #ffffff !important; + z-index: 999 !important; +} +.right-bar h4 { + border-bottom: 1px solid rgba(152, 166, 173, 0.5); + padding: 4px 10px 10px 18px; + text-transform: uppercase; + font-size: 14px; + letter-spacing: 0.03em; +} +.right-bar .right-bar-toggle { + float: right; + line-height: 46px; + font-size: 20px; + color: #333; + padding: 0 10px; +} +.right-bar .setting-list { + padding: 0 20px 20px 20px; +} +.user-list .user-list-item { + padding: 10px 12px !important; + border-bottom: 1px solid #EEEEEE !important; +} +.user-list .user-list-item .avatar { + float: left; + margin-right: 5px; + width: 30px; + height: 30px; +} +.user-list .user-list-item .avatar img { + border-radius: 50%; + width: 100%; +} +.user-list .user-list-item .icon { + float: left; + margin-right: 5px; + height: 30px; + width: 30px; + border-radius: 50%; + text-align: center; +} +.user-list .user-list-item .icon i { + color: #ffffff; + line-height: 30px; + font-size: 16px; +} +.user-list .user-list-item .user-desc { + margin-left: 40px; +} +.user-list .user-list-item .user-desc span.name { + color: #313a46; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 13px; +} +.user-list .user-list-item .user-desc span.desc { + color: #98a6ad; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 12px; +} +.user-list .user-list-item .user-desc span.time { + font-size: 11px; +} +/* Seach */ +.app-search { + position: relative; +} +.app-search a { + position: absolute; + top: 7px; + right: 26px; + color: rgba(152, 166, 173, 0.7); +} +.app-search a:hover { + color: #98a6ad; +} +.app-search .form-control, +.app-search .form-control:focus { + border: 1px solid rgba(152, 166, 173, 0.15); + font-size: 13px; + height: 34px; + color: #313a46; + padding: 7px 40px 7px 20px; + margin: 19px 12px 0 5px; + background: rgba(152, 166, 173, 0.1); + box-shadow: none; + border-radius: 30px; + width: 190px; +} +/* Page titles */ +.page-title { + font-size: 20px; + margin-bottom: 0; + margin-top: 0; + font-weight: 600; +} +.page-header { + border-bottom: 1px solid #DBDDDE; +} +.header-title { + font-size: 16px; + line-height: 16px; + margin-bottom: 8px; + font-weight: 600; +} +.page-title-box { + padding: 20px; + border-bottom: 1px solid #eee; + margin: 0 -20px 20px -20px; +} +.page-title-box .page-title { + margin-bottom: 0; + float: left; +} +.page-title-box .breadcrumb { + float: right; + background-color: transparent !important; +} +/* Body min-height set */ +body.fixed-left-void { + min-height: 1250px; +} diff --git a/assets/css/pages.css b/assets/css/pages.css new file mode 100644 index 0000000..1c5e185 --- /dev/null +++ b/assets/css/pages.css @@ -0,0 +1,1035 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ +/* ============= + == Components List== + + - Email + - Maps + - About Us + - Contact Us + - Member List + - Timeline + - Pages (Common) + - Countdown + - FAQ + - Gallery + - Pricing + - Account Pages + - Sitemaps (v1.1) + - Search Results (v1.1) + - Blog (v1.2) + - Real Estate (v1.5) + +============= */ +/* ============= + Email +============= */ +.mails { + /* chat-widget */ +} +.mails a { + color: #797979; +} +.mails td { + vertical-align: middle !important; + position: relative; + border: 0 !important; +} +.mails td:last-of-type { + width: 100px; + padding-right: 20px; +} +.mails tr:hover .text-white { + display: none; +} +.mails .mail-select { + padding: 15px 20px; + min-width: 134px; +} +.mails .checkbox { + margin-bottom: 0; + margin-top: -4px; + vertical-align: middle; + display: inline-block; + height: 17px; +} +.mails .checkbox label { + min-height: 16px; +} +.mails .mail-list .list-group-item { + background-color: transparent !important; +} +.mails .mail-list .list-group-item.active { + background-color: #188ae2; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; +} +.mails .unread a { + font-family: 'Hind Madurai', sans-serif; + color: #313a46; +} +.mails .table-detail { + vertical-align: top; +} +.mails .chat-right-text { + overflow: hidden; +} +.mails .chat-widget .chat-item { + overflow: hidden; + padding: 10px 0; + position: relative; +} +.mails .chat-widget .chat-item .chat-item-img { + display: block; + float: left; + margin-right: 15px; + width: 40px; +} +.mails .chat-widget .chat-item img { + width: 40px; +} +.mails .chat-widget .chat-item .chat-item-author { + color: #313a46; + display: block; + margin: 0; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + overflow: hidden; +} +.mails .chat-widget .chat-item .chat-item-text { + color: #a0a0a0; + display: block; + font-size: 12px; + margin: 0; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + overflow: hidden; +} +/* ============= + Maps +============= */ +.gmaps, +.gmaps-panaroma { + height: 300px; + background: #eeeeee; + border-radius: 3px; +} +.gmaps-overlay { + display: block; + text-align: center; + color: #ffffff; + font-size: 16px; + line-height: 40px; + background: #5d9cec; + border-radius: 4px; + padding: 10px 20px; +} +.gmaps-overlay_arrow { + left: 50%; + margin-left: -16px; + width: 0; + height: 0; + position: absolute; +} +.gmaps-overlay_arrow.above { + bottom: -15px; + border-left: 16px solid transparent; + border-right: 16px solid transparent; + border-top: 16px solid #5d9cec; +} +.gmaps-overlay_arrow.below { + top: -15px; + border-left: 16px solid transparent; + border-right: 16px solid transparent; + border-bottom: 16px solid #5d9cec; +} +/* Vector Map */ +.jvectormap-zoomin, +.jvectormap-zoomout { + width: 10px; + height: 10px; + line-height: 10px; +} +.jvectormap-zoomout { + top: 40px; +} +/* Mapael Map */ +.mapael .map { + position: relative; +} +.mapael .mapTooltip { + position: absolute; + background-color: #7fc1fc; + opacity: 0.95; + border-radius: 3px; + padding: 2px 10px; + z-index: 1000; + max-width: 200px; + display: none; + color: #ffffff; + font-family: 'Hind Madurai', sans-serif; +} +.mapael .zoomIn, +.mapael .zoomOut, +.mapael .zoomReset { + display: inline-block; + text-align: center; + vertical-align: middle; + border-radius: 2px; + font-weight: 500; + cursor: pointer; + background-color: #26a69a; + text-decoration: none; + color: #ffffff; + font-size: 14px; + position: absolute; + top: 0; + left: 10px; + width: 24px; + height: 24px; + line-height: 24px; +} +.map .zoomIn { + top: 25px; +} +.map .zoomOut { + top: 50px; +} +/* ============= + About Us +============= */ +.border { + height: 4px; + width: 48px; + border-radius: 5px; + background-color: #188ae2; +} +.about-features-box { + margin: 20px 0; +} +.about-features-box p { + line-height: 24px; + width: 90%; + margin: 0 auto; +} +.feature-icon { + height: 80px; + width: 80px; + border: 2px solid #767D8E; + margin: 0px auto; + border-radius: 50%; + font-size: 42px; + line-height: 80px; +} +.about-team img { + max-width: 150px; + margin: 0 auto; +} +.about-team .about-team-member { + margin: 30px 0px; +} +.about-team .about-team-member h4 { + padding-top: 10px; + font-weight: 600; +} +.about-team .about-team-member p { + color: #98a6ad; +} +/* ============= + Contact Us +============= */ +.contact-map { + background-color: #f3f3f3; +} +.contact-box { + padding: 30px; +} +.contact-detail { + margin-bottom: 40px; +} +.contact-detail i { + float: left; + width: 32px; + font-size: 20px; +} +.contact-detail p, +.contact-detail address { + overflow: hidden; +} +.contact-detail a { + color: #496174; +} +/* ============= + Members list +============= */ +.member-card .member-thumb { + position: relative; +} +.member-card .member-star { + position: absolute; + top: 12px; + right: 10px; + font-size: 16px; + background-color: #ffffff; + height: 20px; + width: 20px; + border-radius: 50%; + line-height: 20px; + text-align: center; +} +.social-links li a { + border-radius: 50%; + color: rgba(121, 121, 121, 0.5); + display: inline-block; + height: 30px; + line-height: 30px; + border: 2px solid rgba(121, 121, 121, 0.5); + text-align: center; + width: 30px; +} +.social-links li a:hover { + color: #797979; + border: 2px solid #797979; +} +/* ============= + Timeline +============= */ +.timeline { + border-collapse: collapse; + border-spacing: 0; + display: table; + margin-bottom: 50px; + position: relative; + table-layout: fixed; + width: 100%; +} +.timeline .time-show { + margin-bottom: 30px; + margin-right: -75px; + margin-top: 30px; + position: relative; +} +.timeline .time-show a { + color: #ffffff; +} +.timeline:before { + background-color: rgba(121, 121, 121, 0.3); + bottom: 0; + content: ""; + left: 50%; + position: absolute; + top: 30px; + width: 2px; + z-index: 0; +} +.timeline .timeline-icon { + -webkit-border-radius: 50%; + background: #797979; + border-radius: 50%; + color: #ffffff; + display: block; + height: 20px; + left: -54px; + margin-top: -10px; + position: absolute; + text-align: center; + top: 50%; + width: 20px; +} +.timeline .timeline-icon i { + color: #ffffff; + font-size: 13px; + margin-top: 4px; + position: absolute; + left: 4px; +} +.timeline .time-icon:before { + font-size: 16px; + margin-top: 5px; +} +h3.timeline-title { + color: #797979; + font-size: 20px; + font-weight: 400; + margin: 0 0 5px; + text-transform: uppercase; +} +.timeline-item { + display: table-row; +} +.timeline-item:before { + content: ""; + display: block; + width: 50%; +} +.timeline-item .timeline-desk .arrow { + border-bottom: 12px solid transparent; + border-right: 12px solid rgba(238, 238, 238, 0.3) !important; + border-top: 12px solid transparent; + display: block; + height: 0; + left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + width: 0; +} +.timeline-item .timeline-desk .timeline-box { + padding: 20px; +} +.timeline-item .timeline-date { + margin-bottom: 10px; +} +.timeline-item.alt:after { + content: ""; + display: block; + width: 50%; +} +.timeline-item.alt .timeline-desk .arrow-alt { + border-bottom: 12px solid transparent; + border-left: 12px solid rgba(238, 238, 238, 0.3) !important; + border-top: 12px solid transparent; + display: block; + height: 0; + left: auto; + margin-top: -12px; + position: absolute; + right: -12px; + top: 50%; + width: 0; +} +.timeline-item.alt .timeline-desk .album { + float: right; + margin-top: 20px; +} +.timeline-item.alt .timeline-desk .album a { + float: right; + margin-left: 5px; +} +.timeline-item.alt .timeline-icon { + left: auto; + right: -56px; +} +.timeline-item.alt:before { + display: none; +} +.timeline-item.alt .panel { + margin-left: 0; + margin-right: 45px; +} +.timeline-item.alt h4 { + text-align: right; +} +.timeline-item.alt p { + text-align: right; +} +.timeline-item.alt .timeline-date { + text-align: right; +} +.timeline-desk { + display: table-cell; + vertical-align: top; + width: 50%; +} +.timeline-desk h4 { + font-size: 16px; + font-weight: 300; + margin: 0; +} +.timeline-desk .panel { + background: rgba(238, 238, 238, 0.25); + display: block; + margin-bottom: 5px; + margin-left: 45px; + position: relative; + text-align: left; + border: 0; +} +.timeline-desk h5 span { + color: #797979; + display: block; + font-size: 12px; + margin-bottom: 4px; +} +.timeline-desk p { + color: #999999; + font-size: 14px; + margin-bottom: 0; +} +.timeline-desk .album { + margin-top: 12px; +} +.timeline-desk .album a { + float: left; + margin-right: 5px; +} +.timeline-desk .album img { + height: 36px; + width: auto; + border-radius: 3px; +} +.timeline-desk .notification { + background: none repeat scroll 0 0 #ffffff; + margin-top: 20px; + padding: 8px; +} +.timeline-left { + margin-left: 20px; + width: auto; + display: block; +} +.timeline-left:before { + left: 0 !important; +} +.timeline-left .timeline-item { + display: block; +} +.timeline-left .timeline-desk { + display: block; + width: 100%; +} +.timeline-left .panel { + margin-bottom: 20px; +} +/* ============= + Pages - Common +============= */ +/* Pages */ +.account-pages-bg { + background: url("../images/dust.png"); +} +.home-wrapper { + margin: 10% 0; +} +/* ============= + Count Down +============= */ +#count-down { + margin-top: 50px; +} +#count-down .clock-presenter { + height: 140px; + line-height: 30px; + padding: 0px 30px; + text-align: center; +} +#count-down .clock-presenter .digit { + margin-top: 20px; + font-size: 60px; + font-family: 'Hind Madurai', sans-serif; + line-height: 60px; + height: 60px; + display: inline-block; + overflow: hidden; + text-align: center; + position: relative; + cursor: default; +} +#count-down .clock-presenter .note { + position: relative; + bottom: 0px; + padding-top: 5px; + cursor: default; + font-size: 16px; + color: #4bd396; + font-family: 'Hind Madurai', sans-serif; + text-transform: uppercase; +} +@media (max-width: 992px) { + #count-down .clock-presenter .digit { + font-size: 42px; + } +} +@media (max-width: 767px) { + #count-down .clock-presenter { + width: 50%; + float: left; + } + #count-down .clock-presenter .digit { + font-size: 36px; + } + #count-down .hours_dash { + border-right: none; + } +} +/* ============= + FAQ +============= */ +.question-q-box { + height: 30px; + width: 30px; + color: #ffffff; + background-color: #f5707a; + text-align: center; + border-radius: 3px; + float: left; + line-height: 30px; +} +.question { + margin-top: 0; + margin-left: 50px; + font-weight: 400; + font-size: 16px; +} +.answer { + margin-left: 50px; + color: #98a6ad; + margin-bottom: 40px; +} +/* ============= + Gallery +============= */ +.portfolioFilter a { + transition: all 0.3s ease-out; + color: #313a46; + font-weight: 600; + font-family: 'Hind Madurai', sans-serif; + padding: 5px 10px; + display: inline-block; + margin-bottom: 5px; +} +.portfolioFilter a:hover, +.portfolioFilter a.current { + color: #4bd396; +} +.thumb { + border-radius: 3px; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + margin-top: 20px; + width: 100%; + overflow: hidden; +} +.thumb:hover .thumb-img { + overflow: hidden; + position: relative; + -webkit-transform: scale(1.05); + -moz-transform: scale(1.05); + -o-transform: scale(1.05); + -ms-transform: scale(1.05); + transform: scale(1.05); +} +.thumb-img { + border-radius: 2px; + overflow: hidden; + width: 100%; + transition: all 0.2s ease-out; +} +.gal-detail { + padding: 10px; + position: relative; + background-color: #ffffff; +} +.gal-detail h4 { + font-weight: 600; + font-size: 16px; + padding: 0 5px; +} +.gal-detail p { + padding: 0 5px; + font-size: 13px; +} +/* ============= + Pricing +============= */ +.pricing-column { + position: relative; + margin-bottom: 40px; +} +.pricing-column .inner-box { + position: relative; + padding: 0 0 50px; +} +.pricing-column .plan-header { + position: relative; + padding: 30px 20px 25px; +} +.pricing-column .plan-title { + font-size: 16px; + font-family: 'Hind Madurai', sans-serif; + margin-bottom: 10px; + color: #4bd396; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 400; +} +.pricing-column .plan-price { + font-size: 48px; + font-family: 'Hind Madurai', sans-serif; + margin-bottom: 10px; + color: #313a46; +} +.pricing-column .plan-duration { + font-size: 13px; + color: #98a6ad; +} +.pricing-column .plan-stats { + position: relative; + padding: 30px 20px 15px; +} +.pricing-column .plan-stats li { + margin-bottom: 15px; + line-height: 24px; +} +.ribbon { + position: absolute; + left: 5px; + top: -5px; + z-index: 1; + overflow: hidden; + width: 75px; + height: 75px; + text-align: right; + font-family: 'Hind Madurai', sans-serif; +} +.ribbon span { + font-size: 10px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + text-align: center; + line-height: 20px; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + width: 100px; + display: block; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + background: #7fc1fc; + background: linear-gradient(#188ae2 0%, #188ae2 100%); + position: absolute; + top: 19px; + letter-spacing: 1px; + left: -21px; +} +.ribbon span:before { + content: ""; + position: absolute; + left: 0; + top: 100%; + z-index: -1; + border-left: 3px solid #136eb4; + border-right: 3px solid transparent; + border-bottom: 3px solid transparent; + border-top: 3px solid #136eb4; +} +.ribbon span:after { + content: ""; + position: absolute; + right: 0; + top: 100%; + z-index: -1; + border-left: 3px solid transparent; + border-right: 3px solid #136eb4; + border-bottom: 3px solid transparent; + border-top: 3px solid #136eb4; +} +/* ============= + Account Pages +============= */ +.wrapper-page { + margin: 5% auto; + position: relative; + max-width: 420px; +} +.account-pages { + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + border-radius: 5px; +} +.account-pages .account-content { + padding: 30px; +} +.account-pages .account-btn { + position: absolute; + left: 0; + right: 0; +} +.account-logo-box { + background-color: #505458; + padding: 10px; + border-radius: 5px 5px 0 0; +} +.checkmark { + width: 120px; + margin: 0 auto; + padding: 20px 0; +} +.path { + stroke-dasharray: 1000; + stroke-dashoffset: 0; + animation: dash 2s ease-in-out; + -webkit-animation: dash 2s ease-in-out; +} +.spin { + animation: spin 2s; + -webkit-animation: spin 2s; + transform-origin: 50% 50%; + -webkit-transform-origin: 50% 50%; +} +@-webkit-keyframes dash { + 0% { + stroke-dashoffset: 1000; + } + 100% { + stroke-dashoffset: 0; + } +} +@keyframes dash { + 0% { + stroke-dashoffset: 1000; + } + 100% { + stroke-dashoffset: 0; + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@-webkit-keyframes text { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes text { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +/* ============= + Sitemaps +============= */ +.sitemap > li > ul { + margin-top: 1.5rem; + padding-left: 0; +} +ul.sitemap { + list-style: none; + padding-left: 0; +} +ul.sitemap li { + line-height: 2.5rem ; + vertical-align: top ; + list-style: none; + position: relative ; +} +ul.sitemap li a { + text-decoration: none ; + color: #7c8d96; + display: inline-block; +} +ul.sitemap li a:hover { + color: #7fc1fc; +} +ul.sitemap ul { + margin-left: 1.5rem ; + margin-bottom: 1.5rem ; + padding-top: 10px; +} +ul.sitemap ul li { + position: relative ; +} +ul.sitemap ul li::before { + content: ""; + display: inline-block; + width: 3rem; + height: 100% ; + border-left: 1px solid rgba(152, 166, 173, 0.5); + position: absolute ; + top: -1.25; +} +ul.sitemap ul li::before { + content: ""; + display: inline-block; + width: 3rem; + height: 2.5rem ; + border-bottom: 1px #ccc solid ; + position: absolute ; + top: -1.25rem; +} +ul.sitemap ul li a { + margin-left: 3.75rem; +} +/* ============= + Search Results +============= */ +.search-result-box .search-item { + padding-bottom: 20px; + border-bottom: 1px solid rgba(152, 166, 173, 0.2); + margin-bottom: 25px; +} +/* ============= + Blogs +============= */ +.blog-list-wrapper { + max-width: 1170px; + margin: 0 auto; +} +.blog-post .post-image { + position: relative; + margin-bottom: 20px; +} +.blog-post .post-image .label { + position: absolute; + bottom: 8px; + left: 10px; + text-transform: uppercase; +} +.blog-post .post-title a { + color: #188ae2; + line-height: 28px; +} +.blog-post .post-title a:hover { + color: #136eb4; +} +.blog-categories-list li { + display: block; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #ededed; +} +.blog-categories-list li a { + display: block; + color: rgba(49, 58, 70, 0.7); +} +.blog-categories-list li a:hover { + color: #f5707a; +} +.latest-post-item h5 a { + color: rgba(49, 58, 70, 0.6); + line-height: 20px; +} +.blog-post-column { + box-shadow: 0 8px 42px 0 rgba(0, 0, 0, 0.08); +} +.blog-post-column .post-image { + margin-bottom: 0; +} +.blog-post-comment .media { + margin-bottom: 20px; + padding-bottom: 20px; +} +.blog-post-comment .media img { + height: 52px; + width: 52px; +} +.blog-post-comment .media .media { + margin-bottom: 0; + border-bottom: 0; + padding-top: 20px; + padding-bottom: 0; +} +/* ========== +Real Estate +============ */ +.property-card { + box-sizing: border-box; + margin-bottom: 30px; + background-clip: padding-box; + box-shadow: 0 0 11px 0 rgba(49, 58, 70, 0.15); +} +.property-card .property-content { + position: relative; + box-sizing: border-box; + padding: 15px; + border-radius: 0 0 2px 2px; + background-clip: padding-box; +} +.property-card .property-image { + display: block; + height: 230px; + position: relative; + overflow: hidden; +} +.property-card .property-action { + padding: 12px 15px; + border-top: 1px solid rgba(160, 160, 160, 0.2); +} +.property-card .property-label { + position: absolute; + top: 10px; + right: 10px; + text-transform: uppercase; +} +.property-card.property-horizontal .property-content { + width: 100%; + height: 230px; +} +.property-card.property-horizontal .property-content .listingInfo { + display: table-cell; + height: 155px; + vertical-align: middle; +} +.property-card.property-horizontal .property-content .property-action { + position: absolute; + right: 0; + bottom: 0; + left: 0; +} +.property-card.property-horizontal .property-content .property-action a { + margin-right: 7px; + color: #313a46; + -webkit-transition: color .3s ease; + transition: color .3s ease; + display: inline-block; + border: 1px solid #dcdee0; + padding: 1px 6px; + border-radius: 3px; +} +.property-card.property-horizontal .property-content .property-action a i { + font-size: 16px; + margin-right: 5px; + vertical-align: middle; +} +/* Property detail page */ +.property-detail-wrapper { + max-width: 1170px; + margin: 0 auto; +} +.property-detail-wrapper .bx-wrapper { + margin-bottom: 0; +} +.property-detail-wrapper .bx-wrapper .bx-next { + right: 20px; +} +.property-detail-wrapper .bx-wrapper .bx-controls-direction a { + z-index: 9; +} +.property-detail-wrapper #bx-pager a.active img { + border: 1px solid #7fc1fc; +} +.property-detail-wrapper #bx-pager a img { + padding: 3px; + border: solid #ccc 1px; +} +.property-detail-wrapper .proprerty-features li { + line-height: 30px; +} +.property-detail-wrapper #map-property { + height: 300px; + background: #69c; +} diff --git a/assets/css/responsive.css b/assets/css/responsive.css new file mode 100644 index 0000000..7133ca6 --- /dev/null +++ b/assets/css/responsive.css @@ -0,0 +1,230 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Responsive +*/ +@media only screen and (max-width: 6000px) and (min-width: 700px) { + .wrapper.right-bar-enabled .right-bar { + right: 0; + z-index: 99; + } +} +@media (max-width: 1023px) { + .button-menu-mobile { + display: block !important; + } + .email-msg { + display: none; + } +} +@media (min-width: 768px) and (max-width: 991px) { + body { + overflow-x: hidden; + } +} +@media (max-width: 768px) { + body { + overflow-x: hidden; + } + .side-menu { + position: absolute !important; + } + .enlarged .left.side-menu { + margin-left: -75px; + } + .topbar-left { + width: 70px !important; + } + .topbar-left span { + display: none !important; + } + .topbar-left i { + display: block !important; + line-height: 70px !important; + } + .content-page .content { + margin-top: 75px; + } + .topbar .topbar-left { + height: 70px; + } + .navbar-default { + background-color: #ffffff; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + } + .navbar-nav { + margin: 0px; + display: inline-block; + } + .navbar-nav li { + display: inline-block; + line-height: 1px; + } + .navbar-nav.navbar-right { + float: right; + } + .content-page { + margin-left: 0px !important; + } + .footer { + left: 0px !important; + } + .mobile-sidebar { + left: 0px; + } + .mobile-content { + left: 250px; + right: -250px; + } + .wrapper-page { + width: 90%; + } + .dataTables_wrapper .col-xs-6 { + width: 100%; + text-align: left; + } + div#datatable-buttons_info { + float: none; + } + .ms-container { + width: 100%; + } + .m-t-sm-50 { + margin-top: 50px !important; + } +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + background-color: #ffffff; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + left: auto; + position: absolute; + right: 0; + } + .navbar-nav .open .dropdown-menu li { + display: block; + } + .dropdown-lg { + width: 200px !important; + } + .user-box { + float: right; + } + .dataTables_length { + float: none; + margin-bottom: 10px; + } +} +@media (max-width: 480px) { + .side-menu { + z-index: 10 !important; + } + .button-menu-mobile { + display: block; + } + .search-bar { + display: none !important; + } +} +@media (max-width: 420px) { + .hide-phone { + display: none !important; + } +} +/* Container-alt */ +@media (min-width: 768px) { + .container-alt { + width: 750px; + } + .nav-tabs.nav-justified > li > a { + border-bottom: 2px solid #eeeeee; + } +} +@media (min-width: 992px) { + .container-alt { + width: 970px; + } +} +@media (min-width: 1200px) { + .container-alt { + width: 1170px; + } +} +@media (max-width: 419px) { + .hidden-xxs { + display: none; + } + .topbar-left { + width: 70px !important; + } + .logo .icon-c-logo { + display: inline-block !important; + line-height: 58px !important; + } + .logo span { + display: none !important; + } + .wrapper-page .logo span { + display: inline-block !important; + } + .content-page { + margin-left: 70px; + } + .forced .side-menu.left { + box-shadow: 0 12px 12px rgba(0, 0, 0, 0.1); + } + .enlarged .side-menu.left { + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) !important; + } + .page-title { + font-size: 15px; + max-width: 250px; + white-space: nowrap; + } + .navbar-default { + padding: 0px; + } + .navbar-default .navbar-left { + padding-left: 0px !important; + } + .navbar-default .navbar-left li { + padding: 0px 5px; + } + .topbar-left { + display: none; + } + .editable-responsive { + overflow-x: auto; + } + .profile-info-name img { + float: none; + margin: 0px auto; + margin-bottom: 20px; + } + div.hopscotch-bubble .hopscotch-bubble-container { + max-width: 180px; + } + .page-title-box .breadcrumb { + display: none; + } + .navbar-nav .open .dropdown-menu { + margin-right: -20px; + } + .user-box .dropdown-menu { + margin-right: 0 !important; + } + .dropdown-lg { + width: 160px !important; + } + .user-list .user-list-item .icon, + .user-list .user-list-item .avatar { + display: none; + } + .user-list .user-list-item .user-desc { + margin-left: 0; + } + .mails .table-detail { + display: block; + } +} diff --git a/assets/css/select2.css b/assets/css/select2.css new file mode 100644 index 0000000..0a1008a --- /dev/null +++ b/assets/css/select2.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} \ No newline at end of file diff --git a/assets/css/typicons.css b/assets/css/typicons.css new file mode 100644 index 0000000..67cf57c --- /dev/null +++ b/assets/css/typicons.css @@ -0,0 +1,1370 @@ +@charset 'UTF-8'; +/* @FONT-FACE loads font into browser */ +@font-face { + font-family: 'typicons'; + font-weight: normal; + font-style: normal; + src: url('../fonts/typicons.eot'); + src: url('../fonts/typicons.eot?#iefix') format('embedded-opentype'), url('../fonts/typicons.woff') format('woff'), url('../fonts/typicons.ttf') format('truetype'), url('../fonts/typicons.svg#typicons') format('svg'); +} +/* :before psuedo-selector inserts and styles icon */ +.typcn:before { + font-family: 'typicons'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + height: 1em; + font-size: 1em; + text-align: center; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} +/* Code for individual icons */ +.typcn-adjust-brightness:before { + content: '\e000'; + /* '' */ +} +.typcn-adjust-contrast:before { + content: '\e001'; + /* '' */ +} +.typcn-anchor-outline:before { + content: '\e002'; + /* '' */ +} +.typcn-anchor:before { + content: '\e003'; + /* '' */ +} +.typcn-archive:before { + content: '\e004'; + /* '' */ +} +.typcn-arrow-back-outline:before { + content: '\e005'; + /* '' */ +} +.typcn-arrow-back:before { + content: '\e006'; + /* '' */ +} +.typcn-arrow-down-outline:before { + content: '\e007'; + /* '' */ +} +.typcn-arrow-down-thick:before { + content: '\e008'; + /* '' */ +} +.typcn-arrow-down:before { + content: '\e009'; + /* '' */ +} +.typcn-arrow-forward-outline:before { + content: '\e00a'; + /* '' */ +} +.typcn-arrow-forward:before { + content: '\e00b'; + /* '' */ +} +.typcn-arrow-left-outline:before { + content: '\e00c'; + /* '' */ +} +.typcn-arrow-left-thick:before { + content: '\e00d'; + /* '' */ +} +.typcn-arrow-left:before { + content: '\e00e'; + /* '' */ +} +.typcn-arrow-loop-outline:before { + content: '\e00f'; + /* '' */ +} +.typcn-arrow-loop:before { + content: '\e010'; + /* '' */ +} +.typcn-arrow-maximise-outline:before { + content: '\e011'; + /* '' */ +} +.typcn-arrow-maximise:before { + content: '\e012'; + /* '' */ +} +.typcn-arrow-minimise-outline:before { + content: '\e013'; + /* '' */ +} +.typcn-arrow-minimise:before { + content: '\e014'; + /* '' */ +} +.typcn-arrow-move-outline:before { + content: '\e015'; + /* '' */ +} +.typcn-arrow-move:before { + content: '\e016'; + /* '' */ +} +.typcn-arrow-repeat-outline:before { + content: '\e017'; + /* '' */ +} +.typcn-arrow-repeat:before { + content: '\e018'; + /* '' */ +} +.typcn-arrow-right-outline:before { + content: '\e019'; + /* '' */ +} +.typcn-arrow-right-thick:before { + content: '\e01a'; + /* '' */ +} +.typcn-arrow-right:before { + content: '\e01b'; + /* '' */ +} +.typcn-arrow-shuffle:before { + content: '\e01c'; + /* '' */ +} +.typcn-arrow-sorted-down:before { + content: '\e01d'; + /* '' */ +} +.typcn-arrow-sorted-up:before { + content: '\e01e'; + /* '' */ +} +.typcn-arrow-sync-outline:before { + content: '\e01f'; + /* '' */ +} +.typcn-arrow-sync:before { + content: '\e020'; + /* '' */ +} +.typcn-arrow-unsorted:before { + content: '\e021'; + /* '' */ +} +.typcn-arrow-up-outline:before { + content: '\e022'; + /* '' */ +} +.typcn-arrow-up-thick:before { + content: '\e023'; + /* '' */ +} +.typcn-arrow-up:before { + content: '\e024'; + /* '' */ +} +.typcn-at:before { + content: '\e025'; + /* '' */ +} +.typcn-attachment-outline:before { + content: '\e026'; + /* '' */ +} +.typcn-attachment:before { + content: '\e027'; + /* '' */ +} +.typcn-backspace-outline:before { + content: '\e028'; + /* '' */ +} +.typcn-backspace:before { + content: '\e029'; + /* '' */ +} +.typcn-battery-charge:before { + content: '\e02a'; + /* '' */ +} +.typcn-battery-full:before { + content: '\e02b'; + /* '' */ +} +.typcn-battery-high:before { + content: '\e02c'; + /* '' */ +} +.typcn-battery-low:before { + content: '\e02d'; + /* '' */ +} +.typcn-battery-mid:before { + content: '\e02e'; + /* '' */ +} +.typcn-beaker:before { + content: '\e02f'; + /* '' */ +} +.typcn-beer:before { + content: '\e030'; + /* '' */ +} +.typcn-bell:before { + content: '\e031'; + /* '' */ +} +.typcn-book:before { + content: '\e032'; + /* '' */ +} +.typcn-bookmark:before { + content: '\e033'; + /* '' */ +} +.typcn-briefcase:before { + content: '\e034'; + /* '' */ +} +.typcn-brush:before { + content: '\e035'; + /* '' */ +} +.typcn-business-card:before { + content: '\e036'; + /* '' */ +} +.typcn-calculator:before { + content: '\e037'; + /* '' */ +} +.typcn-calendar-outline:before { + content: '\e038'; + /* '' */ +} +.typcn-calendar:before { + content: '\e039'; + /* '' */ +} +.typcn-camera-outline:before { + content: '\e03a'; + /* '' */ +} +.typcn-camera:before { + content: '\e03b'; + /* '' */ +} +.typcn-cancel-outline:before { + content: '\e03c'; + /* '' */ +} +.typcn-cancel:before { + content: '\e03d'; + /* '' */ +} +.typcn-chart-area-outline:before { + content: '\e03e'; + /* '' */ +} +.typcn-chart-area:before { + content: '\e03f'; + /* '' */ +} +.typcn-chart-bar-outline:before { + content: '\e040'; + /* '' */ +} +.typcn-chart-bar:before { + content: '\e041'; + /* '' */ +} +.typcn-chart-line-outline:before { + content: '\e042'; + /* '' */ +} +.typcn-chart-line:before { + content: '\e043'; + /* '' */ +} +.typcn-chart-pie-outline:before { + content: '\e044'; + /* '' */ +} +.typcn-chart-pie:before { + content: '\e045'; + /* '' */ +} +.typcn-chevron-left-outline:before { + content: '\e046'; + /* '' */ +} +.typcn-chevron-left:before { + content: '\e047'; + /* '' */ +} +.typcn-chevron-right-outline:before { + content: '\e048'; + /* '' */ +} +.typcn-chevron-right:before { + content: '\e049'; + /* '' */ +} +.typcn-clipboard:before { + content: '\e04a'; + /* '' */ +} +.typcn-cloud-storage:before { + content: '\e04b'; + /* '' */ +} +.typcn-cloud-storage-outline:before { + content: '\e054'; + /* '' */ +} +.typcn-code-outline:before { + content: '\e04c'; + /* '' */ +} +.typcn-code:before { + content: '\e04d'; + /* '' */ +} +.typcn-coffee:before { + content: '\e04e'; + /* '' */ +} +.typcn-cog-outline:before { + content: '\e04f'; + /* '' */ +} +.typcn-cog:before { + content: '\e050'; + /* '' */ +} +.typcn-compass:before { + content: '\e051'; + /* '' */ +} +.typcn-contacts:before { + content: '\e052'; + /* '' */ +} +.typcn-credit-card:before { + content: '\e053'; + /* '' */ +} +.typcn-css3:before { + content: '\e055'; + /* '' */ +} +.typcn-database:before { + content: '\e056'; + /* '' */ +} +.typcn-delete-outline:before { + content: '\e057'; + /* '' */ +} +.typcn-delete:before { + content: '\e058'; + /* '' */ +} +.typcn-device-desktop:before { + content: '\e059'; + /* '' */ +} +.typcn-device-laptop:before { + content: '\e05a'; + /* '' */ +} +.typcn-device-phone:before { + content: '\e05b'; + /* '' */ +} +.typcn-device-tablet:before { + content: '\e05c'; + /* '' */ +} +.typcn-directions:before { + content: '\e05d'; + /* '' */ +} +.typcn-divide-outline:before { + content: '\e05e'; + /* '' */ +} +.typcn-divide:before { + content: '\e05f'; + /* '' */ +} +.typcn-document-add:before { + content: '\e060'; + /* '' */ +} +.typcn-document-delete:before { + content: '\e061'; + /* '' */ +} +.typcn-document-text:before { + content: '\e062'; + /* '' */ +} +.typcn-document:before { + content: '\e063'; + /* '' */ +} +.typcn-download-outline:before { + content: '\e064'; + /* '' */ +} +.typcn-download:before { + content: '\e065'; + /* '' */ +} +.typcn-dropbox:before { + content: '\e066'; + /* '' */ +} +.typcn-edit:before { + content: '\e067'; + /* '' */ +} +.typcn-eject-outline:before { + content: '\e068'; + /* '' */ +} +.typcn-eject:before { + content: '\e069'; + /* '' */ +} +.typcn-equals-outline:before { + content: '\e06a'; + /* '' */ +} +.typcn-equals:before { + content: '\e06b'; + /* '' */ +} +.typcn-export-outline:before { + content: '\e06c'; + /* '' */ +} +.typcn-export:before { + content: '\e06d'; + /* '' */ +} +.typcn-eye-outline:before { + content: '\e06e'; + /* '' */ +} +.typcn-eye:before { + content: '\e06f'; + /* '' */ +} +.typcn-feather:before { + content: '\e070'; + /* '' */ +} +.typcn-film:before { + content: '\e071'; + /* '' */ +} +.typcn-filter:before { + content: '\e072'; + /* '' */ +} +.typcn-flag-outline:before { + content: '\e073'; + /* '' */ +} +.typcn-flag:before { + content: '\e074'; + /* '' */ +} +.typcn-flash-outline:before { + content: '\e075'; + /* '' */ +} +.typcn-flash:before { + content: '\e076'; + /* '' */ +} +.typcn-flow-children:before { + content: '\e077'; + /* '' */ +} +.typcn-flow-merge:before { + content: '\e078'; + /* '' */ +} +.typcn-flow-parallel:before { + content: '\e079'; + /* '' */ +} +.typcn-flow-switch:before { + content: '\e07a'; + /* '' */ +} +.typcn-folder-add:before { + content: '\e07b'; + /* '' */ +} +.typcn-folder-delete:before { + content: '\e07c'; + /* '' */ +} +.typcn-folder-open:before { + content: '\e07d'; + /* '' */ +} +.typcn-folder:before { + content: '\e07e'; + /* '' */ +} +.typcn-gift:before { + content: '\e07f'; + /* '' */ +} +.typcn-globe-outline:before { + content: '\e080'; + /* '' */ +} +.typcn-globe:before { + content: '\e081'; + /* '' */ +} +.typcn-group-outline:before { + content: '\e082'; + /* '' */ +} +.typcn-group:before { + content: '\e083'; + /* '' */ +} +.typcn-headphones:before { + content: '\e084'; + /* '' */ +} +.typcn-heart-full-outline:before { + content: '\e085'; + /* '' */ +} +.typcn-heart-half-outline:before { + content: '\e086'; + /* '' */ +} +.typcn-heart-outline:before { + content: '\e087'; + /* '' */ +} +.typcn-heart:before { + content: '\e088'; + /* '' */ +} +.typcn-home-outline:before { + content: '\e089'; + /* '' */ +} +.typcn-home:before { + content: '\e08a'; + /* '' */ +} +.typcn-html5:before { + content: '\e08b'; + /* '' */ +} +.typcn-image-outline:before { + content: '\e08c'; + /* '' */ +} +.typcn-image:before { + content: '\e08d'; + /* '' */ +} +.typcn-infinity-outline:before { + content: '\e08e'; + /* '' */ +} +.typcn-infinity:before { + content: '\e08f'; + /* '' */ +} +.typcn-info-large-outline:before { + content: '\e090'; + /* '' */ +} +.typcn-info-large:before { + content: '\e091'; + /* '' */ +} +.typcn-info-outline:before { + content: '\e092'; + /* '' */ +} +.typcn-info:before { + content: '\e093'; + /* '' */ +} +.typcn-input-checked-outline:before { + content: '\e094'; + /* '' */ +} +.typcn-input-checked:before { + content: '\e095'; + /* '' */ +} +.typcn-key-outline:before { + content: '\e096'; + /* '' */ +} +.typcn-key:before { + content: '\e097'; + /* '' */ +} +.typcn-keyboard:before { + content: '\e098'; + /* '' */ +} +.typcn-leaf:before { + content: '\e099'; + /* '' */ +} +.typcn-lightbulb:before { + content: '\e09a'; + /* '' */ +} +.typcn-link-outline:before { + content: '\e09b'; + /* '' */ +} +.typcn-link:before { + content: '\e09c'; + /* '' */ +} +.typcn-location-arrow-outline:before { + content: '\e09d'; + /* '' */ +} +.typcn-location-arrow:before { + content: '\e09e'; + /* '' */ +} +.typcn-location-outline:before { + content: '\e09f'; + /* '' */ +} +.typcn-location:before { + content: '\e0a0'; + /* '' */ +} +.typcn-lock-closed-outline:before { + content: '\e0a1'; + /* '' */ +} +.typcn-lock-closed:before { + content: '\e0a2'; + /* '' */ +} +.typcn-lock-open-outline:before { + content: '\e0a3'; + /* '' */ +} +.typcn-lock-open:before { + content: '\e0a4'; + /* '' */ +} +.typcn-mail:before { + content: '\e0a5'; + /* '' */ +} +.typcn-map:before { + content: '\e0a6'; + /* '' */ +} +.typcn-media-eject-outline:before { + content: '\e0a7'; + /* '' */ +} +.typcn-media-eject:before { + content: '\e0a8'; + /* '' */ +} +.typcn-media-fast-forward-outline:before { + content: '\e0a9'; + /* '' */ +} +.typcn-media-fast-forward:before { + content: '\e0aa'; + /* '' */ +} +.typcn-media-pause-outline:before { + content: '\e0ab'; + /* '' */ +} +.typcn-media-pause:before { + content: '\e0ac'; + /* '' */ +} +.typcn-media-play-outline:before { + content: '\e0ad'; + /* '' */ +} +.typcn-media-play-reverse-outline:before { + content: '\e0ae'; + /* '' */ +} +.typcn-media-play-reverse:before { + content: '\e0af'; + /* '' */ +} +.typcn-media-play:before { + content: '\e0b0'; + /* '' */ +} +.typcn-media-record-outline:before { + content: '\e0b1'; + /* '' */ +} +.typcn-media-record:before { + content: '\e0b2'; + /* '' */ +} +.typcn-media-rewind-outline:before { + content: '\e0b3'; + /* '' */ +} +.typcn-media-rewind:before { + content: '\e0b4'; + /* '' */ +} +.typcn-media-stop-outline:before { + content: '\e0b5'; + /* '' */ +} +.typcn-media-stop:before { + content: '\e0b6'; + /* '' */ +} +.typcn-message-typing:before { + content: '\e0b7'; + /* '' */ +} +.typcn-message:before { + content: '\e0b8'; + /* '' */ +} +.typcn-messages:before { + content: '\e0b9'; + /* '' */ +} +.typcn-microphone-outline:before { + content: '\e0ba'; + /* '' */ +} +.typcn-microphone:before { + content: '\e0bb'; + /* '' */ +} +.typcn-minus-outline:before { + content: '\e0bc'; + /* '' */ +} +.typcn-minus:before { + content: '\e0bd'; + /* '' */ +} +.typcn-mortar-board:before { + content: '\e0be'; + /* '' */ +} +.typcn-news:before { + content: '\e0bf'; + /* '' */ +} +.typcn-notes-outline:before { + content: '\e0c0'; + /* '' */ +} +.typcn-notes:before { + content: '\e0c1'; + /* '' */ +} +.typcn-pen:before { + content: '\e0c2'; + /* '' */ +} +.typcn-pencil:before { + content: '\e0c3'; + /* '' */ +} +.typcn-phone-outline:before { + content: '\e0c4'; + /* '' */ +} +.typcn-phone:before { + content: '\e0c5'; + /* '' */ +} +.typcn-pi-outline:before { + content: '\e0c6'; + /* '' */ +} +.typcn-pi:before { + content: '\e0c7'; + /* '' */ +} +.typcn-pin-outline:before { + content: '\e0c8'; + /* '' */ +} +.typcn-pin:before { + content: '\e0c9'; + /* '' */ +} +.typcn-pipette:before { + content: '\e0ca'; + /* '' */ +} +.typcn-plane-outline:before { + content: '\e0cb'; + /* '' */ +} +.typcn-plane:before { + content: '\e0cc'; + /* '' */ +} +.typcn-plug:before { + content: '\e0cd'; + /* '' */ +} +.typcn-plus-outline:before { + content: '\e0ce'; + /* '' */ +} +.typcn-plus:before { + content: '\e0cf'; + /* '' */ +} +.typcn-point-of-interest-outline:before { + content: '\e0d0'; + /* '' */ +} +.typcn-point-of-interest:before { + content: '\e0d1'; + /* '' */ +} +.typcn-power-outline:before { + content: '\e0d2'; + /* '' */ +} +.typcn-power:before { + content: '\e0d3'; + /* '' */ +} +.typcn-printer:before { + content: '\e0d4'; + /* '' */ +} +.typcn-puzzle-outline:before { + content: '\e0d5'; + /* '' */ +} +.typcn-puzzle:before { + content: '\e0d6'; + /* '' */ +} +.typcn-radar-outline:before { + content: '\e0d7'; + /* '' */ +} +.typcn-radar:before { + content: '\e0d8'; + /* '' */ +} +.typcn-refresh-outline:before { + content: '\e0d9'; + /* '' */ +} +.typcn-refresh:before { + content: '\e0da'; + /* '' */ +} +.typcn-rss-outline:before { + content: '\e0db'; + /* '' */ +} +.typcn-rss:before { + content: '\e0dc'; + /* '' */ +} +.typcn-scissors-outline:before { + content: '\e0dd'; + /* '' */ +} +.typcn-scissors:before { + content: '\e0de'; + /* '' */ +} +.typcn-shopping-bag:before { + content: '\e0df'; + /* '' */ +} +.typcn-shopping-cart:before { + content: '\e0e0'; + /* '' */ +} +.typcn-social-at-circular:before { + content: '\e0e1'; + /* '' */ +} +.typcn-social-dribbble-circular:before { + content: '\e0e2'; + /* '' */ +} +.typcn-social-dribbble:before { + content: '\e0e3'; + /* '' */ +} +.typcn-social-facebook-circular:before { + content: '\e0e4'; + /* '' */ +} +.typcn-social-facebook:before { + content: '\e0e5'; + /* '' */ +} +.typcn-social-flickr-circular:before { + content: '\e0e6'; + /* '' */ +} +.typcn-social-flickr:before { + content: '\e0e7'; + /* '' */ +} +.typcn-social-github-circular:before { + content: '\e0e8'; + /* '' */ +} +.typcn-social-github:before { + content: '\e0e9'; + /* '' */ +} +.typcn-social-google-plus-circular:before { + content: '\e0ea'; + /* '' */ +} +.typcn-social-google-plus:before { + content: '\e0eb'; + /* '' */ +} +.typcn-social-instagram-circular:before { + content: '\e0ec'; + /* '' */ +} +.typcn-social-instagram:before { + content: '\e0ed'; + /* '' */ +} +.typcn-social-last-fm-circular:before { + content: '\e0ee'; + /* '' */ +} +.typcn-social-last-fm:before { + content: '\e0ef'; + /* '' */ +} +.typcn-social-linkedin-circular:before { + content: '\e0f0'; + /* '' */ +} +.typcn-social-linkedin:before { + content: '\e0f1'; + /* '' */ +} +.typcn-social-pinterest-circular:before { + content: '\e0f2'; + /* '' */ +} +.typcn-social-pinterest:before { + content: '\e0f3'; + /* '' */ +} +.typcn-social-skype-outline:before { + content: '\e0f4'; + /* '' */ +} +.typcn-social-skype:before { + content: '\e0f5'; + /* '' */ +} +.typcn-social-tumbler-circular:before { + content: '\e0f6'; + /* '' */ +} +.typcn-social-tumbler:before { + content: '\e0f7'; + /* '' */ +} +.typcn-social-twitter-circular:before { + content: '\e0f8'; + /* '' */ +} +.typcn-social-twitter:before { + content: '\e0f9'; + /* '' */ +} +.typcn-social-vimeo-circular:before { + content: '\e0fa'; + /* '' */ +} +.typcn-social-vimeo:before { + content: '\e0fb'; + /* '' */ +} +.typcn-social-youtube-circular:before { + content: '\e0fc'; + /* '' */ +} +.typcn-social-youtube:before { + content: '\e0fd'; + /* '' */ +} +.typcn-sort-alphabetically-outline:before { + content: '\e0fe'; + /* '' */ +} +.typcn-sort-alphabetically:before { + content: '\e0ff'; + /* '' */ +} +.typcn-sort-numerically-outline:before { + content: '\e100'; + /* '' */ +} +.typcn-sort-numerically:before { + content: '\e101'; + /* '' */ +} +.typcn-spanner-outline:before { + content: '\e102'; + /* '' */ +} +.typcn-spanner:before { + content: '\e103'; + /* '' */ +} +.typcn-spiral:before { + content: '\e104'; + /* '' */ +} +.typcn-star-full-outline:before { + content: '\e105'; + /* '' */ +} +.typcn-star-half-outline:before { + content: '\e106'; + /* '' */ +} +.typcn-star-half:before { + content: '\e107'; + /* '' */ +} +.typcn-star-outline:before { + content: '\e108'; + /* '' */ +} +.typcn-star:before { + content: '\e109'; + /* '' */ +} +.typcn-starburst-outline:before { + content: '\e10a'; + /* '' */ +} +.typcn-starburst:before { + content: '\e10b'; + /* '' */ +} +.typcn-stopwatch:before { + content: '\e10c'; + /* '' */ +} +.typcn-support:before { + content: '\e10d'; + /* '' */ +} +.typcn-tabs-outline:before { + content: '\e10e'; + /* '' */ +} +.typcn-tag:before { + content: '\e10f'; + /* '' */ +} +.typcn-tags:before { + content: '\e110'; + /* '' */ +} +.typcn-th-large-outline:before { + content: '\e111'; + /* '' */ +} +.typcn-th-large:before { + content: '\e112'; + /* '' */ +} +.typcn-th-list-outline:before { + content: '\e113'; + /* '' */ +} +.typcn-th-list:before { + content: '\e114'; + /* '' */ +} +.typcn-th-menu-outline:before { + content: '\e115'; + /* '' */ +} +.typcn-th-menu:before { + content: '\e116'; + /* '' */ +} +.typcn-th-small-outline:before { + content: '\e117'; + /* '' */ +} +.typcn-th-small:before { + content: '\e118'; + /* '' */ +} +.typcn-thermometer:before { + content: '\e119'; + /* '' */ +} +.typcn-thumbs-down:before { + content: '\e11a'; + /* '' */ +} +.typcn-thumbs-ok:before { + content: '\e11b'; + /* '' */ +} +.typcn-thumbs-up:before { + content: '\e11c'; + /* '' */ +} +.typcn-tick-outline:before { + content: '\e11d'; + /* '' */ +} +.typcn-tick:before { + content: '\e11e'; + /* '' */ +} +.typcn-ticket:before { + content: '\e11f'; + /* '' */ +} +.typcn-time:before { + content: '\e120'; + /* '' */ +} +.typcn-times-outline:before { + content: '\e121'; + /* '' */ +} +.typcn-times:before { + content: '\e122'; + /* '' */ +} +.typcn-trash:before { + content: '\e123'; + /* '' */ +} +.typcn-tree:before { + content: '\e124'; + /* '' */ +} +.typcn-upload-outline:before { + content: '\e125'; + /* '' */ +} +.typcn-upload:before { + content: '\e126'; + /* '' */ +} +.typcn-user-add-outline:before { + content: '\e127'; + /* '' */ +} +.typcn-user-add:before { + content: '\e128'; + /* '' */ +} +.typcn-user-delete-outline:before { + content: '\e129'; + /* '' */ +} +.typcn-user-delete:before { + content: '\e12a'; + /* '' */ +} +.typcn-user-outline:before { + content: '\e12b'; + /* '' */ +} +.typcn-user:before { + content: '\e12c'; + /* '' */ +} +.typcn-vendor-android:before { + content: '\e12d'; + /* '' */ +} +.typcn-vendor-apple:before { + content: '\e12e'; + /* '' */ +} +.typcn-vendor-microsoft:before { + content: '\e12f'; + /* '' */ +} +.typcn-video-outline:before { + content: '\e130'; + /* '' */ +} +.typcn-video:before { + content: '\e131'; + /* '' */ +} +.typcn-volume-down:before { + content: '\e132'; + /* '' */ +} +.typcn-volume-mute:before { + content: '\e133'; + /* '' */ +} +.typcn-volume-up:before { + content: '\e134'; + /* '' */ +} +.typcn-volume:before { + content: '\e135'; + /* '' */ +} +.typcn-warning-outline:before { + content: '\e136'; + /* '' */ +} +.typcn-warning:before { + content: '\e137'; + /* '' */ +} +.typcn-watch:before { + content: '\e138'; + /* '' */ +} +.typcn-waves-outline:before { + content: '\e139'; + /* '' */ +} +.typcn-waves:before { + content: '\e13a'; + /* '' */ +} +.typcn-weather-cloudy:before { + content: '\e13b'; + /* '' */ +} +.typcn-weather-downpour:before { + content: '\e13c'; + /* '' */ +} +.typcn-weather-night:before { + content: '\e13d'; + /* '' */ +} +.typcn-weather-partly-sunny:before { + content: '\e13e'; + /* '' */ +} +.typcn-weather-shower:before { + content: '\e13f'; + /* '' */ +} +.typcn-weather-snow:before { + content: '\e140'; + /* '' */ +} +.typcn-weather-stormy:before { + content: '\e141'; + /* '' */ +} +.typcn-weather-sunny:before { + content: '\e142'; + /* '' */ +} +.typcn-weather-windy-cloudy:before { + content: '\e143'; + /* '' */ +} +.typcn-weather-windy:before { + content: '\e144'; + /* '' */ +} +.typcn-wi-fi-outline:before { + content: '\e145'; + /* '' */ +} +.typcn-wi-fi:before { + content: '\e146'; + /* '' */ +} +.typcn-wine:before { + content: '\e147'; + /* '' */ +} +.typcn-world-outline:before { + content: '\e148'; + /* '' */ +} +.typcn-world:before { + content: '\e149'; + /* '' */ +} +.typcn-zoom-in-outline:before { + content: '\e14a'; + /* '' */ +} +.typcn-zoom-in:before { + content: '\e14b'; + /* '' */ +} +.typcn-zoom-out-outline:before { + content: '\e14c'; + /* '' */ +} +.typcn-zoom-out:before { + content: '\e14d'; + /* '' */ +} +.typcn-zoom-outline:before { + content: '\e14e'; + /* '' */ +} +.typcn-zoom:before { + content: '\e14f'; + /* '' */ +} diff --git a/assets/css/variables.css b/assets/css/variables.css new file mode 100644 index 0000000..e69de29 diff --git a/assets/excel/PHPExcel.php b/assets/excel/PHPExcel.php new file mode 100644 index 0000000..b8dbe0e --- /dev/null +++ b/assets/excel/PHPExcel.php @@ -0,0 +1,1153 @@ +hasMacros; + } + + /** + * Define if a workbook has macros + * + * @param boolean $hasMacros true|false + */ + public function setHasMacros($hasMacros = false) + { + $this->hasMacros = (bool) $hasMacros; + } + + /** + * Set the macros code + * + * @param string $MacrosCode string|null + */ + public function setMacrosCode($MacrosCode = null) + { + $this->macrosCode=$MacrosCode; + $this->setHasMacros(!is_null($MacrosCode)); + } + + /** + * Return the macros code + * + * @return string|null + */ + public function getMacrosCode() + { + return $this->macrosCode; + } + + /** + * Set the macros certificate + * + * @param string|null $Certificate + */ + public function setMacrosCertificate($Certificate = null) + { + $this->macrosCertificate=$Certificate; + } + + /** + * Is the project signed ? + * + * @return boolean true|false + */ + public function hasMacrosCertificate() + { + return !is_null($this->macrosCertificate); + } + + /** + * Return the macros certificate + * + * @return string|null + */ + public function getMacrosCertificate() + { + return $this->macrosCertificate; + } + + /** + * Remove all macros, certificate from spreadsheet + * + */ + public function discardMacros() + { + $this->hasMacros=false; + $this->macrosCode=null; + $this->macrosCertificate=null; + } + + /** + * set ribbon XML data + * + */ + public function setRibbonXMLData($Target = null, $XMLData = null) + { + if (!is_null($Target) && !is_null($XMLData)) { + $this->ribbonXMLData = array('target' => $Target, 'data' => $XMLData); + } else { + $this->ribbonXMLData = null; + } + } + + /** + * retrieve ribbon XML Data + * + * return string|null|array + */ + public function getRibbonXMLData($What = 'all') //we need some constants here... + { + $ReturnData = null; + $What = strtolower($What); + switch ($What){ + case 'all': + $ReturnData = $this->ribbonXMLData; + break; + case 'target': + case 'data': + if (is_array($this->ribbonXMLData) && array_key_exists($What, $this->ribbonXMLData)) { + $ReturnData = $this->ribbonXMLData[$What]; + } + break; + } + + return $ReturnData; + } + + /** + * store binaries ribbon objects (pictures) + * + */ + public function setRibbonBinObjects($BinObjectsNames = null, $BinObjectsData = null) + { + if (!is_null($BinObjectsNames) && !is_null($BinObjectsData)) { + $this->ribbonBinObjects = array('names' => $BinObjectsNames, 'data' => $BinObjectsData); + } else { + $this->ribbonBinObjects = null; + } + } + /** + * return the extension of a filename. Internal use for a array_map callback (php<5.3 don't like lambda function) + * + */ + private function getExtensionOnly($ThePath) + { + return pathinfo($ThePath, PATHINFO_EXTENSION); + } + + /** + * retrieve Binaries Ribbon Objects + * + */ + public function getRibbonBinObjects($What = 'all') + { + $ReturnData = null; + $What = strtolower($What); + switch($What) { + case 'all': + return $this->ribbonBinObjects; + break; + case 'names': + case 'data': + if (is_array($this->ribbonBinObjects) && array_key_exists($What, $this->ribbonBinObjects)) { + $ReturnData=$this->ribbonBinObjects[$What]; + } + break; + case 'types': + if (is_array($this->ribbonBinObjects) && + array_key_exists('data', $this->ribbonBinObjects) && is_array($this->ribbonBinObjects['data'])) { + $tmpTypes=array_keys($this->ribbonBinObjects['data']); + $ReturnData = array_unique(array_map(array($this, 'getExtensionOnly'), $tmpTypes)); + } else { + $ReturnData=array(); // the caller want an array... not null if empty + } + break; + } + return $ReturnData; + } + + /** + * This workbook have a custom UI ? + * + * @return boolean true|false + */ + public function hasRibbon() + { + return !is_null($this->ribbonXMLData); + } + + /** + * This workbook have additionnal object for the ribbon ? + * + * @return boolean true|false + */ + public function hasRibbonBinObjects() + { + return !is_null($this->ribbonBinObjects); + } + + /** + * Check if a sheet with a specified code name already exists + * + * @param string $pSheetCodeName Name of the worksheet to check + * @return boolean + */ + public function sheetCodeNameExists($pSheetCodeName) + { + return ($this->getSheetByCodeName($pSheetCodeName) !== null); + } + + /** + * Get sheet by code name. Warning : sheet don't have always a code name ! + * + * @param string $pName Sheet name + * @return PHPExcel_Worksheet + */ + public function getSheetByCodeName($pName = '') + { + $worksheetCount = count($this->workSheetCollection); + for ($i = 0; $i < $worksheetCount; ++$i) { + if ($this->workSheetCollection[$i]->getCodeName() == $pName) { + return $this->workSheetCollection[$i]; + } + } + + return null; + } + + /** + * Create a new PHPExcel with one Worksheet + */ + public function __construct() + { + $this->uniqueID = uniqid(); + $this->calculationEngine = new PHPExcel_Calculation($this); + + // Initialise worksheet collection and add one worksheet + $this->workSheetCollection = array(); + $this->workSheetCollection[] = new PHPExcel_Worksheet($this); + $this->activeSheetIndex = 0; + + // Create document properties + $this->properties = new PHPExcel_DocumentProperties(); + + // Create document security + $this->security = new PHPExcel_DocumentSecurity(); + + // Set named ranges + $this->namedRanges = array(); + + // Create the cellXf supervisor + $this->cellXfSupervisor = new PHPExcel_Style(true); + $this->cellXfSupervisor->bindParent($this); + + // Create the default style + $this->addCellXf(new PHPExcel_Style); + $this->addCellStyleXf(new PHPExcel_Style); + } + + /** + * Code to execute when this worksheet is unset() + * + */ + public function __destruct() + { + $this->calculationEngine = null; + $this->disconnectWorksheets(); + } + + /** + * Disconnect all worksheets from this PHPExcel workbook object, + * typically so that the PHPExcel object can be unset + * + */ + public function disconnectWorksheets() + { + $worksheet = null; + foreach ($this->workSheetCollection as $k => &$worksheet) { + $worksheet->disconnectCells(); + $this->workSheetCollection[$k] = null; + } + unset($worksheet); + $this->workSheetCollection = array(); + } + + /** + * Return the calculation engine for this worksheet + * + * @return PHPExcel_Calculation + */ + public function getCalculationEngine() + { + return $this->calculationEngine; + } // function getCellCacheController() + + /** + * Get properties + * + * @return PHPExcel_DocumentProperties + */ + public function getProperties() + { + return $this->properties; + } + + /** + * Set properties + * + * @param PHPExcel_DocumentProperties $pValue + */ + public function setProperties(PHPExcel_DocumentProperties $pValue) + { + $this->properties = $pValue; + } + + /** + * Get security + * + * @return PHPExcel_DocumentSecurity + */ + public function getSecurity() + { + return $this->security; + } + + /** + * Set security + * + * @param PHPExcel_DocumentSecurity $pValue + */ + public function setSecurity(PHPExcel_DocumentSecurity $pValue) + { + $this->security = $pValue; + } + + /** + * Get active sheet + * + * @return PHPExcel_Worksheet + * + * @throws PHPExcel_Exception + */ + public function getActiveSheet() + { + return $this->getSheet($this->activeSheetIndex); + } + + /** + * Create sheet and add it to this workbook + * + * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) + * @return PHPExcel_Worksheet + * @throws PHPExcel_Exception + */ + public function createSheet($iSheetIndex = null) + { + $newSheet = new PHPExcel_Worksheet($this); + $this->addSheet($newSheet, $iSheetIndex); + return $newSheet; + } + + /** + * Check if a sheet with a specified name already exists + * + * @param string $pSheetName Name of the worksheet to check + * @return boolean + */ + public function sheetNameExists($pSheetName) + { + return ($this->getSheetByName($pSheetName) !== null); + } + + /** + * Add sheet + * + * @param PHPExcel_Worksheet $pSheet + * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) + * @return PHPExcel_Worksheet + * @throws PHPExcel_Exception + */ + public function addSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = null) + { + if ($this->sheetNameExists($pSheet->getTitle())) { + throw new PHPExcel_Exception( + "Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename this worksheet first." + ); + } + + if ($iSheetIndex === null) { + if ($this->activeSheetIndex < 0) { + $this->activeSheetIndex = 0; + } + $this->workSheetCollection[] = $pSheet; + } else { + // Insert the sheet at the requested index + array_splice( + $this->workSheetCollection, + $iSheetIndex, + 0, + array($pSheet) + ); + + // Adjust active sheet index if necessary + if ($this->activeSheetIndex >= $iSheetIndex) { + ++$this->activeSheetIndex; + } + } + + if ($pSheet->getParent() === null) { + $pSheet->rebindParent($this); + } + + return $pSheet; + } + + /** + * Remove sheet by index + * + * @param int $pIndex Active sheet index + * @throws PHPExcel_Exception + */ + public function removeSheetByIndex($pIndex = 0) + { + + $numSheets = count($this->workSheetCollection); + if ($pIndex > $numSheets - 1) { + throw new PHPExcel_Exception( + "You tried to remove a sheet by the out of bounds index: {$pIndex}. The actual number of sheets is {$numSheets}." + ); + } else { + array_splice($this->workSheetCollection, $pIndex, 1); + } + // Adjust active sheet index if necessary + if (($this->activeSheetIndex >= $pIndex) && + ($pIndex > count($this->workSheetCollection) - 1)) { + --$this->activeSheetIndex; + } + + } + + /** + * Get sheet by index + * + * @param int $pIndex Sheet index + * @return PHPExcel_Worksheet + * @throws PHPExcel_Exception + */ + public function getSheet($pIndex = 0) + { + if (!isset($this->workSheetCollection[$pIndex])) { + $numSheets = $this->getSheetCount(); + throw new PHPExcel_Exception( + "Your requested sheet index: {$pIndex} is out of bounds. The actual number of sheets is {$numSheets}." + ); + } + + return $this->workSheetCollection[$pIndex]; + } + + /** + * Get all sheets + * + * @return PHPExcel_Worksheet[] + */ + public function getAllSheets() + { + return $this->workSheetCollection; + } + + /** + * Get sheet by name + * + * @param string $pName Sheet name + * @return PHPExcel_Worksheet + */ + public function getSheetByName($pName = '') + { + $worksheetCount = count($this->workSheetCollection); + for ($i = 0; $i < $worksheetCount; ++$i) { + if ($this->workSheetCollection[$i]->getTitle() === $pName) { + return $this->workSheetCollection[$i]; + } + } + + return null; + } + + /** + * Get index for sheet + * + * @param PHPExcel_Worksheet $pSheet + * @return int Sheet index + * @throws PHPExcel_Exception + */ + public function getIndex(PHPExcel_Worksheet $pSheet) + { + foreach ($this->workSheetCollection as $key => $value) { + if ($value->getHashCode() == $pSheet->getHashCode()) { + return $key; + } + } + + throw new PHPExcel_Exception("Sheet does not exist."); + } + + /** + * Set index for sheet by sheet name. + * + * @param string $sheetName Sheet name to modify index for + * @param int $newIndex New index for the sheet + * @return int New sheet index + * @throws PHPExcel_Exception + */ + public function setIndexByName($sheetName, $newIndex) + { + $oldIndex = $this->getIndex($this->getSheetByName($sheetName)); + $pSheet = array_splice( + $this->workSheetCollection, + $oldIndex, + 1 + ); + array_splice( + $this->workSheetCollection, + $newIndex, + 0, + $pSheet + ); + return $newIndex; + } + + /** + * Get sheet count + * + * @return int + */ + public function getSheetCount() + { + return count($this->workSheetCollection); + } + + /** + * Get active sheet index + * + * @return int Active sheet index + */ + public function getActiveSheetIndex() + { + return $this->activeSheetIndex; + } + + /** + * Set active sheet index + * + * @param int $pIndex Active sheet index + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setActiveSheetIndex($pIndex = 0) + { + $numSheets = count($this->workSheetCollection); + + if ($pIndex > $numSheets - 1) { + throw new PHPExcel_Exception( + "You tried to set a sheet active by the out of bounds index: {$pIndex}. The actual number of sheets is {$numSheets}." + ); + } else { + $this->activeSheetIndex = $pIndex; + } + return $this->getActiveSheet(); + } + + /** + * Set active sheet index by name + * + * @param string $pValue Sheet title + * @return PHPExcel_Worksheet + * @throws PHPExcel_Exception + */ + public function setActiveSheetIndexByName($pValue = '') + { + if (($worksheet = $this->getSheetByName($pValue)) instanceof PHPExcel_Worksheet) { + $this->setActiveSheetIndex($this->getIndex($worksheet)); + return $worksheet; + } + + throw new PHPExcel_Exception('Workbook does not contain sheet:' . $pValue); + } + + /** + * Get sheet names + * + * @return string[] + */ + public function getSheetNames() + { + $returnValue = array(); + $worksheetCount = $this->getSheetCount(); + for ($i = 0; $i < $worksheetCount; ++$i) { + $returnValue[] = $this->getSheet($i)->getTitle(); + } + + return $returnValue; + } + + /** + * Add external sheet + * + * @param PHPExcel_Worksheet $pSheet External sheet to add + * @param int|null $iSheetIndex Index where sheet should go (0,1,..., or null for last) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function addExternalSheet(PHPExcel_Worksheet $pSheet, $iSheetIndex = null) + { + if ($this->sheetNameExists($pSheet->getTitle())) { + throw new PHPExcel_Exception("Workbook already contains a worksheet named '{$pSheet->getTitle()}'. Rename the external sheet first."); + } + + // count how many cellXfs there are in this workbook currently, we will need this below + $countCellXfs = count($this->cellXfCollection); + + // copy all the shared cellXfs from the external workbook and append them to the current + foreach ($pSheet->getParent()->getCellXfCollection() as $cellXf) { + $this->addCellXf(clone $cellXf); + } + + // move sheet to this workbook + $pSheet->rebindParent($this); + + // update the cellXfs + foreach ($pSheet->getCellCollection(false) as $cellID) { + $cell = $pSheet->getCell($cellID); + $cell->setXfIndex($cell->getXfIndex() + $countCellXfs); + } + + return $this->addSheet($pSheet, $iSheetIndex); + } + + /** + * Get named ranges + * + * @return PHPExcel_NamedRange[] + */ + public function getNamedRanges() + { + return $this->namedRanges; + } + + /** + * Add named range + * + * @param PHPExcel_NamedRange $namedRange + * @return boolean + */ + public function addNamedRange(PHPExcel_NamedRange $namedRange) + { + if ($namedRange->getScope() == null) { + // global scope + $this->namedRanges[$namedRange->getName()] = $namedRange; + } else { + // local scope + $this->namedRanges[$namedRange->getScope()->getTitle().'!'.$namedRange->getName()] = $namedRange; + } + return true; + } + + /** + * Get named range + * + * @param string $namedRange + * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope + * @return PHPExcel_NamedRange|null + */ + public function getNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) + { + $returnValue = null; + + if ($namedRange != '' && ($namedRange !== null)) { + // first look for global defined name + if (isset($this->namedRanges[$namedRange])) { + $returnValue = $this->namedRanges[$namedRange]; + } + + // then look for local defined name (has priority over global defined name if both names exist) + if (($pSheet !== null) && isset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange])) { + $returnValue = $this->namedRanges[$pSheet->getTitle() . '!' . $namedRange]; + } + } + + return $returnValue; + } + + /** + * Remove named range + * + * @param string $namedRange + * @param PHPExcel_Worksheet|null $pSheet Scope: use null for global scope. + * @return PHPExcel + */ + public function removeNamedRange($namedRange, PHPExcel_Worksheet $pSheet = null) + { + if ($pSheet === null) { + if (isset($this->namedRanges[$namedRange])) { + unset($this->namedRanges[$namedRange]); + } + } else { + if (isset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange])) { + unset($this->namedRanges[$pSheet->getTitle() . '!' . $namedRange]); + } + } + return $this; + } + + /** + * Get worksheet iterator + * + * @return PHPExcel_WorksheetIterator + */ + public function getWorksheetIterator() + { + return new PHPExcel_WorksheetIterator($this); + } + + /** + * Copy workbook (!= clone!) + * + * @return PHPExcel + */ + public function copy() + { + $copied = clone $this; + + $worksheetCount = count($this->workSheetCollection); + for ($i = 0; $i < $worksheetCount; ++$i) { + $this->workSheetCollection[$i] = $this->workSheetCollection[$i]->copy(); + $this->workSheetCollection[$i]->rebindParent($this); + } + + return $copied; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + foreach ($this as $key => $val) { + if (is_object($val) || (is_array($val))) { + $this->{$key} = unserialize(serialize($val)); + } + } + } + + /** + * Get the workbook collection of cellXfs + * + * @return PHPExcel_Style[] + */ + public function getCellXfCollection() + { + return $this->cellXfCollection; + } + + /** + * Get cellXf by index + * + * @param int $pIndex + * @return PHPExcel_Style + */ + public function getCellXfByIndex($pIndex = 0) + { + return $this->cellXfCollection[$pIndex]; + } + + /** + * Get cellXf by hash code + * + * @param string $pValue + * @return PHPExcel_Style|boolean False if no match found + */ + public function getCellXfByHashCode($pValue = '') + { + foreach ($this->cellXfCollection as $cellXf) { + if ($cellXf->getHashCode() == $pValue) { + return $cellXf; + } + } + return false; + } + + /** + * Check if style exists in style collection + * + * @param PHPExcel_Style $pCellStyle + * @return boolean + */ + public function cellXfExists($pCellStyle = null) + { + return in_array($pCellStyle, $this->cellXfCollection, true); + } + + /** + * Get default style + * + * @return PHPExcel_Style + * @throws PHPExcel_Exception + */ + public function getDefaultStyle() + { + if (isset($this->cellXfCollection[0])) { + return $this->cellXfCollection[0]; + } + throw new PHPExcel_Exception('No default style found for this workbook'); + } + + /** + * Add a cellXf to the workbook + * + * @param PHPExcel_Style $style + */ + public function addCellXf(PHPExcel_Style $style) + { + $this->cellXfCollection[] = $style; + $style->setIndex(count($this->cellXfCollection) - 1); + } + + /** + * Remove cellXf by index. It is ensured that all cells get their xf index updated. + * + * @param integer $pIndex Index to cellXf + * @throws PHPExcel_Exception + */ + public function removeCellXfByIndex($pIndex = 0) + { + if ($pIndex > count($this->cellXfCollection) - 1) { + throw new PHPExcel_Exception("CellXf index is out of bounds."); + } else { + // first remove the cellXf + array_splice($this->cellXfCollection, $pIndex, 1); + + // then update cellXf indexes for cells + foreach ($this->workSheetCollection as $worksheet) { + foreach ($worksheet->getCellCollection(false) as $cellID) { + $cell = $worksheet->getCell($cellID); + $xfIndex = $cell->getXfIndex(); + if ($xfIndex > $pIndex) { + // decrease xf index by 1 + $cell->setXfIndex($xfIndex - 1); + } elseif ($xfIndex == $pIndex) { + // set to default xf index 0 + $cell->setXfIndex(0); + } + } + } + } + } + + /** + * Get the cellXf supervisor + * + * @return PHPExcel_Style + */ + public function getCellXfSupervisor() + { + return $this->cellXfSupervisor; + } + + /** + * Get the workbook collection of cellStyleXfs + * + * @return PHPExcel_Style[] + */ + public function getCellStyleXfCollection() + { + return $this->cellStyleXfCollection; + } + + /** + * Get cellStyleXf by index + * + * @param integer $pIndex Index to cellXf + * @return PHPExcel_Style + */ + public function getCellStyleXfByIndex($pIndex = 0) + { + return $this->cellStyleXfCollection[$pIndex]; + } + + /** + * Get cellStyleXf by hash code + * + * @param string $pValue + * @return PHPExcel_Style|boolean False if no match found + */ + public function getCellStyleXfByHashCode($pValue = '') + { + foreach ($this->cellStyleXfCollection as $cellStyleXf) { + if ($cellStyleXf->getHashCode() == $pValue) { + return $cellStyleXf; + } + } + return false; + } + + /** + * Add a cellStyleXf to the workbook + * + * @param PHPExcel_Style $pStyle + */ + public function addCellStyleXf(PHPExcel_Style $pStyle) + { + $this->cellStyleXfCollection[] = $pStyle; + $pStyle->setIndex(count($this->cellStyleXfCollection) - 1); + } + + /** + * Remove cellStyleXf by index + * + * @param integer $pIndex Index to cellXf + * @throws PHPExcel_Exception + */ + public function removeCellStyleXfByIndex($pIndex = 0) + { + if ($pIndex > count($this->cellStyleXfCollection) - 1) { + throw new PHPExcel_Exception("CellStyleXf index is out of bounds."); + } else { + array_splice($this->cellStyleXfCollection, $pIndex, 1); + } + } + + /** + * Eliminate all unneeded cellXf and afterwards update the xfIndex for all cells + * and columns in the workbook + */ + public function garbageCollect() + { + // how many references are there to each cellXf ? + $countReferencesCellXf = array(); + foreach ($this->cellXfCollection as $index => $cellXf) { + $countReferencesCellXf[$index] = 0; + } + + foreach ($this->getWorksheetIterator() as $sheet) { + // from cells + foreach ($sheet->getCellCollection(false) as $cellID) { + $cell = $sheet->getCell($cellID); + ++$countReferencesCellXf[$cell->getXfIndex()]; + } + + // from row dimensions + foreach ($sheet->getRowDimensions() as $rowDimension) { + if ($rowDimension->getXfIndex() !== null) { + ++$countReferencesCellXf[$rowDimension->getXfIndex()]; + } + } + + // from column dimensions + foreach ($sheet->getColumnDimensions() as $columnDimension) { + ++$countReferencesCellXf[$columnDimension->getXfIndex()]; + } + } + + // remove cellXfs without references and create mapping so we can update xfIndex + // for all cells and columns + $countNeededCellXfs = 0; + $map = array(); + foreach ($this->cellXfCollection as $index => $cellXf) { + if ($countReferencesCellXf[$index] > 0 || $index == 0) { // we must never remove the first cellXf + ++$countNeededCellXfs; + } else { + unset($this->cellXfCollection[$index]); + } + $map[$index] = $countNeededCellXfs - 1; + } + $this->cellXfCollection = array_values($this->cellXfCollection); + + // update the index for all cellXfs + foreach ($this->cellXfCollection as $i => $cellXf) { + $cellXf->setIndex($i); + } + + // make sure there is always at least one cellXf (there should be) + if (empty($this->cellXfCollection)) { + $this->cellXfCollection[] = new PHPExcel_Style(); + } + + // update the xfIndex for all cells, row dimensions, column dimensions + foreach ($this->getWorksheetIterator() as $sheet) { + // for all cells + foreach ($sheet->getCellCollection(false) as $cellID) { + $cell = $sheet->getCell($cellID); + $cell->setXfIndex($map[$cell->getXfIndex()]); + } + + // for all row dimensions + foreach ($sheet->getRowDimensions() as $rowDimension) { + if ($rowDimension->getXfIndex() !== null) { + $rowDimension->setXfIndex($map[$rowDimension->getXfIndex()]); + } + } + + // for all column dimensions + foreach ($sheet->getColumnDimensions() as $columnDimension) { + $columnDimension->setXfIndex($map[$columnDimension->getXfIndex()]); + } + + // also do garbage collection for all the sheets + $sheet->garbageCollect(); + } + } + + /** + * Return the unique ID value assigned to this spreadsheet workbook + * + * @return string + */ + public function getID() + { + return $this->uniqueID; + } +} diff --git a/assets/excel/PHPExcel/Autoloader.php b/assets/excel/PHPExcel/Autoloader.php new file mode 100644 index 0000000..c3b95a2 --- /dev/null +++ b/assets/excel/PHPExcel/Autoloader.php @@ -0,0 +1,81 @@ += 0) { + return spl_autoload_register(array('PHPExcel_Autoloader', 'load'), true, true); + } else { + return spl_autoload_register(array('PHPExcel_Autoloader', 'load')); + } + } + + /** + * Autoload a class identified by name + * + * @param string $pClassName Name of the object to load + */ + public static function load($pClassName) + { + if ((class_exists($pClassName, false)) || (strpos($pClassName, 'PHPExcel') !== 0)) { + // Either already loaded, or not a PHPExcel class request + return false; + } + + $pClassFilePath = PHPEXCEL_ROOT . + str_replace('_', DIRECTORY_SEPARATOR, $pClassName) . + '.php'; + + if ((file_exists($pClassFilePath) === false) || (is_readable($pClassFilePath) === false)) { + // Can't load + return false; + } + + require($pClassFilePath); + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/APC.php b/assets/excel/PHPExcel/CachedObjectStorage/APC.php new file mode 100644 index 0000000..c74b07f --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/APC.php @@ -0,0 +1,290 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + if (!apc_store( + $this->cachePrefix . $this->currentObjectID . '.cache', + serialize($this->currentObject), + $this->cacheTime + )) { + $this->__destruct(); + throw new PHPExcel_Exception('Failed to store cell ' . $this->currentObjectID . ' in APC'); + } + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @access public + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + $this->cellCache[$pCoord] = true; + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? + * + * @access public + * @param string $pCoord Coordinate address of the cell to check + * @throws PHPExcel_Exception + * @return boolean + */ + public function isDataSet($pCoord) + { + // Check if the requested entry is the current object, or exists in the cache + if (parent::isDataSet($pCoord)) { + if ($this->currentObjectID == $pCoord) { + return true; + } + // Check if the requested entry still exists in apc + $success = apc_fetch($this->cachePrefix.$pCoord.'.cache'); + if ($success === false) { + // Entry no longer exists in APC, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in APC cache'); + } + return true; + } + return false; + } + + /** + * Get cell at a specific coordinate + * + * @access public + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (parent::isDataSet($pCoord)) { + $obj = apc_fetch($this->cachePrefix . $pCoord . '.cache'); + if ($obj === false) { + // Entry no longer exists in APC, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in APC cache'); + } + } else { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = unserialize($obj); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @access public + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + // Delete the entry from APC + apc_delete($this->cachePrefix.$pCoord.'.cache'); + + // Delete the entry from our cell address array + parent::deleteCacheData($pCoord); + } + + /** + * Clone the cell collection + * + * @access public + * @param PHPExcel_Worksheet $parent The new worksheet + * @throws PHPExcel_Exception + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + // Get a new id for the new file name + $baseUnique = $this->getUniqueID(); + $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + if ($cellID != $this->currentObjectID) { + $obj = apc_fetch($this->cachePrefix . $cellID . '.cache'); + if ($obj === false) { + // Entry no longer exists in APC, so clear it from the cache array + parent::deleteCacheData($cellID); + throw new PHPExcel_Exception('Cell entry ' . $cellID . ' no longer exists in APC'); + } + if (!apc_store($newCachePrefix . $cellID . '.cache', $obj, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception('Failed to store cell ' . $cellID . ' in APC'); + } + } + } + $this->cachePrefix = $newCachePrefix; + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if ($this->currentObject !== null) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + + // Flush the APC cache + $this->__destruct(); + + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + * @param array of mixed $arguments Additional initialisation arguments + */ + public function __construct(PHPExcel_Worksheet $parent, $arguments) + { + $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; + + if ($this->cachePrefix === null) { + $baseUnique = $this->getUniqueID(); + $this->cachePrefix = substr(md5($baseUnique), 0, 8) . '.'; + $this->cacheTime = $cacheTime; + + parent::__construct($parent); + } + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + apc_delete($this->cachePrefix . $cellID . '.cache'); + } + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!function_exists('apc_store')) { + return false; + } + if (apc_sma_info() === false) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/CacheBase.php b/assets/excel/PHPExcel/CachedObjectStorage/CacheBase.php new file mode 100644 index 0000000..9a12ec8 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/CacheBase.php @@ -0,0 +1,368 @@ +parent = $parent; + } + + /** + * Return the parent worksheet for this cell collection + * + * @return PHPExcel_Worksheet + */ + public function getParent() + { + return $this->parent; + } + + /** + * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return true; + } + // Check if the requested entry exists in the cache + return isset($this->cellCache[$pCoord]); + } + + /** + * Move a cell object from one address to another + * + * @param string $fromAddress Current address of the cell to move + * @param string $toAddress Destination address of the cell to move + * @return boolean + */ + public function moveCell($fromAddress, $toAddress) + { + if ($fromAddress === $this->currentObjectID) { + $this->currentObjectID = $toAddress; + } + $this->currentCellIsDirty = true; + if (isset($this->cellCache[$fromAddress])) { + $this->cellCache[$toAddress] = &$this->cellCache[$fromAddress]; + unset($this->cellCache[$fromAddress]); + } + + return true; + } + + /** + * Add or Update a cell in cache + * + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function updateCacheData(PHPExcel_Cell $cell) + { + return $this->addCacheData($cell->getCoordinate(), $cell); + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID && !is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObjectID = $this->currentObject = null; + } + + if (is_object($this->cellCache[$pCoord])) { + $this->cellCache[$pCoord]->detach(); + unset($this->cellCache[$pCoord]); + } + $this->currentCellIsDirty = false; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + return array_keys($this->cellCache); + } + + /** + * Sort the list of all cell addresses currently held in cache by row and column + * + * @return string[] + */ + public function getSortedCellList() + { + $sortKeys = array(); + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $column, $row); + $sortKeys[sprintf('%09d%3s', $row, $column)] = $coord; + } + ksort($sortKeys); + + return array_values($sortKeys); + } + + /** + * Get highest worksheet column and highest row that have cell records + * + * @return array Highest column name and highest row number + */ + public function getHighestRowAndColumn() + { + // Lookup highest column and highest row + $col = array('A' => '1A'); + $row = array(1); + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $c, $r); + $row[$r] = $r; + $col[$c] = strlen($c).$c; + } + if (!empty($row)) { + // Determine highest column and row + $highestRow = max($row); + $highestColumn = substr(max($col), 1); + } + + return array( + 'row' => $highestRow, + 'column' => $highestColumn + ); + } + + /** + * Return the cell address of the currently active cell object + * + * @return string + */ + public function getCurrentAddress() + { + return $this->currentObjectID; + } + + /** + * Return the column address of the currently active cell object + * + * @return string + */ + public function getCurrentColumn() + { + sscanf($this->currentObjectID, '%[A-Z]%d', $column, $row); + return $column; + } + + /** + * Return the row address of the currently active cell object + * + * @return integer + */ + public function getCurrentRow() + { + sscanf($this->currentObjectID, '%[A-Z]%d', $column, $row); + return (integer) $row; + } + + /** + * Get highest worksheet column + * + * @param string $row Return the highest column for the specified row, + * or the highest column of any row if no row number is passed + * @return string Highest column name + */ + public function getHighestColumn($row = null) + { + if ($row == null) { + $colRow = $this->getHighestRowAndColumn(); + return $colRow['column']; + } + + $columnList = array(1); + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $c, $r); + if ($r != $row) { + continue; + } + $columnList[] = PHPExcel_Cell::columnIndexFromString($c); + } + return PHPExcel_Cell::stringFromColumnIndex(max($columnList) - 1); + } + + /** + * Get highest worksheet row + * + * @param string $column Return the highest row for the specified column, + * or the highest row of any column if no column letter is passed + * @return int Highest row number + */ + public function getHighestRow($column = null) + { + if ($column == null) { + $colRow = $this->getHighestRowAndColumn(); + return $colRow['row']; + } + + $rowList = array(0); + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $c, $r); + if ($c != $column) { + continue; + } + $rowList[] = $r; + } + + return max($rowList); + } + + /** + * Generate a unique ID for cache referencing + * + * @return string Unique Reference + */ + protected function getUniqueID() + { + if (function_exists('posix_getpid')) { + $baseUnique = posix_getpid(); + } else { + $baseUnique = mt_rand(); + } + return uniqid($baseUnique, true); + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + $this->currentCellIsDirty; + $this->storeData(); + + $this->parent = $parent; + if (($this->currentObject !== null) && (is_object($this->currentObject))) { + $this->currentObject->attach($this); + } + } // function copyCellCollection() + + /** + * Remove a row, deleting all cells in that row + * + * @param string $row Row number to remove + * @return void + */ + public function removeRow($row) + { + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $c, $r); + if ($r == $row) { + $this->deleteCacheData($coord); + } + } + } + + /** + * Remove a column, deleting all cells in that column + * + * @param string $column Column ID to remove + * @return void + */ + public function removeColumn($column) + { + foreach ($this->getCellList() as $coord) { + sscanf($coord, '%[A-Z]%d', $c, $r); + if ($c == $column) { + $this->deleteCacheData($coord); + } + } + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/DiscISAM.php b/assets/excel/PHPExcel/CachedObjectStorage/DiscISAM.php new file mode 100644 index 0000000..13bc033 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/DiscISAM.php @@ -0,0 +1,208 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + fseek($this->fileHandle, 0, SEEK_END); + + $this->cellCache[$this->currentObjectID] = array( + 'ptr' => ftell($this->fileHandle), + 'sz' => fwrite($this->fileHandle, serialize($this->currentObject)) + ); + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + fseek($this->fileHandle, $this->cellCache[$pCoord]['ptr']); + $this->currentObject = unserialize(fread($this->fileHandle, $this->cellCache[$pCoord]['sz'])); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + // Get a new id for the new file name + $baseUnique = $this->getUniqueID(); + $newFileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; + // Copy the existing cell cache file + copy($this->fileName, $newFileName); + $this->fileName = $newFileName; + // Open the copied cell cache file + $this->fileHandle = fopen($this->fileName, 'a+'); + } + + /** + * Clear the cell collection and disconnect from our parent + * + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + + // Close down the temporary cache file + $this->__destruct(); + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + * @param array of mixed $arguments Additional initialisation arguments + */ + public function __construct(PHPExcel_Worksheet $parent, $arguments) + { + $this->cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== null)) + ? $arguments['dir'] + : PHPExcel_Shared_File::sys_get_temp_dir(); + + parent::__construct($parent); + if (is_null($this->fileHandle)) { + $baseUnique = $this->getUniqueID(); + $this->fileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache'; + $this->fileHandle = fopen($this->fileName, 'a+'); + } + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + if (!is_null($this->fileHandle)) { + fclose($this->fileHandle); + unlink($this->fileName); + } + $this->fileHandle = null; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/ICache.php b/assets/excel/PHPExcel/CachedObjectStorage/ICache.php new file mode 100644 index 0000000..aafef6e --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/ICache.php @@ -0,0 +1,103 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $this->cellCache[$this->currentObjectID] = igbinary_serialize($this->currentObject); + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } // function _storeData() + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } // function addCacheData() + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = igbinary_unserialize($this->cellCache[$pCoord]); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } // function getCacheData() + + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } // function unsetWorksheetCells() + + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!function_exists('igbinary_serialize')) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/Memcache.php b/assets/excel/PHPExcel/CachedObjectStorage/Memcache.php new file mode 100644 index 0000000..07942cc --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/Memcache.php @@ -0,0 +1,308 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $obj = serialize($this->currentObject); + if (!$this->memcache->replace($this->cachePrefix . $this->currentObjectID . '.cache', $obj, null, $this->cacheTime)) { + if (!$this->memcache->add($this->cachePrefix . $this->currentObjectID . '.cache', $obj, null, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception("Failed to store cell {$this->currentObjectID} in MemCache"); + } + } + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } // function _storeData() + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + $this->cellCache[$pCoord] = true; + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } // function addCacheData() + + + /** + * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + * @return boolean + */ + public function isDataSet($pCoord) + { + // Check if the requested entry is the current object, or exists in the cache + if (parent::isDataSet($pCoord)) { + if ($this->currentObjectID == $pCoord) { + return true; + } + // Check if the requested entry still exists in Memcache + $success = $this->memcache->get($this->cachePrefix.$pCoord.'.cache'); + if ($success === false) { + // Entry no longer exists in Memcache, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in MemCache'); + } + return true; + } + return false; + } + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (parent::isDataSet($pCoord)) { + $obj = $this->memcache->get($this->cachePrefix . $pCoord . '.cache'); + if ($obj === false) { + // Entry no longer exists in Memcache, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception("Cell entry {$pCoord} no longer exists in MemCache"); + } + } else { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = unserialize($obj); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + // Delete the entry from Memcache + $this->memcache->delete($this->cachePrefix . $pCoord . '.cache'); + + // Delete the entry from our cell address array + parent::deleteCacheData($pCoord); + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + // Get a new id for the new file name + $baseUnique = $this->getUniqueID(); + $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + if ($cellID != $this->currentObjectID) { + $obj = $this->memcache->get($this->cachePrefix.$cellID.'.cache'); + if ($obj === false) { + // Entry no longer exists in Memcache, so clear it from the cache array + parent::deleteCacheData($cellID); + throw new PHPExcel_Exception("Cell entry {$cellID} no longer exists in MemCache"); + } + if (!$this->memcache->add($newCachePrefix . $cellID . '.cache', $obj, null, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception("Failed to store cell {$cellID} in MemCache"); + } + } + } + $this->cachePrefix = $newCachePrefix; + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + + // Flush the Memcache cache + $this->__destruct(); + + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + * @param array of mixed $arguments Additional initialisation arguments + */ + public function __construct(PHPExcel_Worksheet $parent, $arguments) + { + $memcacheServer = (isset($arguments['memcacheServer'])) ? $arguments['memcacheServer'] : 'localhost'; + $memcachePort = (isset($arguments['memcachePort'])) ? $arguments['memcachePort'] : 11211; + $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; + + if (is_null($this->cachePrefix)) { + $baseUnique = $this->getUniqueID(); + $this->cachePrefix = substr(md5($baseUnique), 0, 8) . '.'; + + // Set a new Memcache object and connect to the Memcache server + $this->memcache = new Memcache(); + if (!$this->memcache->addServer($memcacheServer, $memcachePort, false, 50, 5, 5, true, array($this, 'failureCallback'))) { + throw new PHPExcel_Exception("Could not connect to MemCache server at {$memcacheServer}:{$memcachePort}"); + } + $this->cacheTime = $cacheTime; + + parent::__construct($parent); + } + } + + /** + * Memcache error handler + * + * @param string $host Memcache server + * @param integer $port Memcache port + * @throws PHPExcel_Exception + */ + public function failureCallback($host, $port) + { + throw new PHPExcel_Exception("memcache {$host}:{$port} failed"); + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + $this->memcache->delete($this->cachePrefix.$cellID . '.cache'); + } + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!function_exists('memcache_add')) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/Memory.php b/assets/excel/PHPExcel/CachedObjectStorage/Memory.php new file mode 100644 index 0000000..0e2ea0b --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/Memory.php @@ -0,0 +1,118 @@ +cellCache[$pCoord] = $cell; + + // Set current entry to the new/updated entry + $this->currentObjectID = $pCoord; + + return $cell; + } + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + $this->currentObjectID = null; + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + + // Return requested entry + return $this->cellCache[$pCoord]; + } + + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + + $newCollection = array(); + foreach ($this->cellCache as $k => &$cell) { + $newCollection[$k] = clone $cell; + $newCollection[$k]->attach($this); + } + + $this->cellCache = $newCollection; + } + + /** + * Clear the cell collection and disconnect from our parent + * + */ + public function unsetWorksheetCells() + { + // Because cells are all stored as intact objects in memory, we need to detach each one from the parent + foreach ($this->cellCache as $k => &$cell) { + $cell->detach(); + $this->cellCache[$k] = null; + } + unset($cell); + + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php b/assets/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php new file mode 100644 index 0000000..c06ec71 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/MemoryGZip.php @@ -0,0 +1,133 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $this->cellCache[$this->currentObjectID] = gzdeflate(serialize($this->currentObject)); + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = unserialize(gzinflate($this->cellCache[$pCoord])); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php b/assets/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php new file mode 100644 index 0000000..1332514 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/MemorySerialized.php @@ -0,0 +1,129 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $this->cellCache[$this->currentObjectID] = serialize($this->currentObject); + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = unserialize($this->cellCache[$pCoord]); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/PHPTemp.php b/assets/excel/PHPExcel/CachedObjectStorage/PHPTemp.php new file mode 100644 index 0000000..43c7819 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/PHPTemp.php @@ -0,0 +1,200 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + fseek($this->fileHandle, 0, SEEK_END); + + $this->cellCache[$this->currentObjectID] = array( + 'ptr' => ftell($this->fileHandle), + 'sz' => fwrite($this->fileHandle, serialize($this->currentObject)) + ); + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + if (!isset($this->cellCache[$pCoord])) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + fseek($this->fileHandle, $this->cellCache[$pCoord]['ptr']); + $this->currentObject = unserialize(fread($this->fileHandle, $this->cellCache[$pCoord]['sz'])); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + // Open a new stream for the cell cache data + $newFileHandle = fopen('php://temp/maxmemory:' . $this->memoryCacheSize, 'a+'); + // Copy the existing cell cache data to the new stream + fseek($this->fileHandle, 0); + while (!feof($this->fileHandle)) { + fwrite($newFileHandle, fread($this->fileHandle, 1024)); + } + $this->fileHandle = $newFileHandle; + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + + // Close down the php://temp file + $this->__destruct(); + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + * @param array of mixed $arguments Additional initialisation arguments + */ + public function __construct(PHPExcel_Worksheet $parent, $arguments) + { + $this->memoryCacheSize = (isset($arguments['memoryCacheSize'])) ? $arguments['memoryCacheSize'] : '1MB'; + + parent::__construct($parent); + if (is_null($this->fileHandle)) { + $this->fileHandle = fopen('php://temp/maxmemory:' . $this->memoryCacheSize, 'a+'); + } + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + if (!is_null($this->fileHandle)) { + fclose($this->fileHandle); + } + $this->fileHandle = null; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/SQLite.php b/assets/excel/PHPExcel/CachedObjectStorage/SQLite.php new file mode 100644 index 0000000..e7b50c5 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/SQLite.php @@ -0,0 +1,307 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + if (!$this->DBHandle->queryExec("INSERT OR REPLACE INTO kvp_".$this->TableName." VALUES('".$this->currentObjectID."','".sqlite_escape_string(serialize($this->currentObject))."')")) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + $query = "SELECT value FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; + $cellResultSet = $this->DBHandle->query($query, SQLITE_ASSOC); + if ($cellResultSet === false) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } elseif ($cellResultSet->numRows() == 0) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + + $cellResult = $cellResultSet->fetchSingle(); + $this->currentObject = unserialize($cellResult); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Is a value set for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return true; + } + + // Check if the requested entry exists in the cache + $query = "SELECT id FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; + $cellResultSet = $this->DBHandle->query($query, SQLITE_ASSOC); + if ($cellResultSet === false) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } elseif ($cellResultSet->numRows() == 0) { + // Return null if requested entry doesn't exist in cache + return false; + } + return true; + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + $this->currentObject->detach(); + $this->currentObjectID = $this->currentObject = null; + } + + // Check if the requested entry exists in the cache + $query = "DELETE FROM kvp_".$this->TableName." WHERE id='".$pCoord."'"; + if (!$this->DBHandle->queryExec($query)) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + + $this->currentCellIsDirty = false; + } + + /** + * Move a cell object from one address to another + * + * @param string $fromAddress Current address of the cell to move + * @param string $toAddress Destination address of the cell to move + * @return boolean + */ + public function moveCell($fromAddress, $toAddress) + { + if ($fromAddress === $this->currentObjectID) { + $this->currentObjectID = $toAddress; + } + + $query = "DELETE FROM kvp_".$this->TableName." WHERE id='".$toAddress."'"; + $result = $this->DBHandle->exec($query); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + $query = "UPDATE kvp_".$this->TableName." SET id='".$toAddress."' WHERE id='".$fromAddress."'"; + $result = $this->DBHandle->exec($query); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + return true; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + $query = "SELECT id FROM kvp_".$this->TableName; + $cellIdsResult = $this->DBHandle->unbufferedQuery($query, SQLITE_ASSOC); + if ($cellIdsResult === false) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + + $cellKeys = array(); + foreach ($cellIdsResult as $row) { + $cellKeys[] = $row['id']; + } + + return $cellKeys; + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + $this->currentCellIsDirty; + $this->storeData(); + + // Get a new id for the new table name + $tableName = str_replace('.', '_', $this->getUniqueID()); + if (!$this->DBHandle->queryExec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) + AS SELECT * FROM kvp_'.$this->TableName) + ) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + + // Copy the existing cell cache file + $this->TableName = $tableName; + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + + // Close down the temporary cache file + $this->__destruct(); + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + */ + public function __construct(PHPExcel_Worksheet $parent) + { + parent::__construct($parent); + if (is_null($this->DBHandle)) { + $this->TableName = str_replace('.', '_', $this->getUniqueID()); + $_DBName = ':memory:'; + + $this->DBHandle = new SQLiteDatabase($_DBName); + if ($this->DBHandle === false) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + if (!$this->DBHandle->queryExec('CREATE TABLE kvp_'.$this->TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)')) { + throw new PHPExcel_Exception(sqlite_error_string($this->DBHandle->lastError())); + } + } + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + if (!is_null($this->DBHandle)) { + $this->DBHandle->queryExec('DROP TABLE kvp_'.$this->TableName); + } + $this->DBHandle = null; + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!function_exists('sqlite_open')) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/SQLite3.php b/assets/excel/PHPExcel/CachedObjectStorage/SQLite3.php new file mode 100644 index 0000000..27473d6 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/SQLite3.php @@ -0,0 +1,346 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $this->insertQuery->bindValue('id', $this->currentObjectID, SQLITE3_TEXT); + $this->insertQuery->bindValue('data', serialize($this->currentObject), SQLITE3_BLOB); + $result = $this->insertQuery->execute(); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + $this->currentCellIsDirty = false; + } + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + $this->selectQuery->bindValue('id', $pCoord, SQLITE3_TEXT); + $cellResult = $this->selectQuery->execute(); + if ($cellResult === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + $cellData = $cellResult->fetchArray(SQLITE3_ASSOC); + if ($cellData === false) { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + + $this->currentObject = unserialize($cellData['value']); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + /** + * Is a value set for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return true; + } + + // Check if the requested entry exists in the cache + $this->selectQuery->bindValue('id', $pCoord, SQLITE3_TEXT); + $cellResult = $this->selectQuery->execute(); + if ($cellResult === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + $cellData = $cellResult->fetchArray(SQLITE3_ASSOC); + + return ($cellData === false) ? false : true; + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + $this->currentObject->detach(); + $this->currentObjectID = $this->currentObject = null; + } + + // Check if the requested entry exists in the cache + $this->deleteQuery->bindValue('id', $pCoord, SQLITE3_TEXT); + $result = $this->deleteQuery->execute(); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + $this->currentCellIsDirty = false; + } + + /** + * Move a cell object from one address to another + * + * @param string $fromAddress Current address of the cell to move + * @param string $toAddress Destination address of the cell to move + * @return boolean + */ + public function moveCell($fromAddress, $toAddress) + { + if ($fromAddress === $this->currentObjectID) { + $this->currentObjectID = $toAddress; + } + + $this->deleteQuery->bindValue('id', $toAddress, SQLITE3_TEXT); + $result = $this->deleteQuery->execute(); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + $this->updateQuery->bindValue('toid', $toAddress, SQLITE3_TEXT); + $this->updateQuery->bindValue('fromid', $fromAddress, SQLITE3_TEXT); + $result = $this->updateQuery->execute(); + if ($result === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + return true; + } + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + $query = "SELECT id FROM kvp_".$this->TableName; + $cellIdsResult = $this->DBHandle->query($query); + if ($cellIdsResult === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + $cellKeys = array(); + while ($row = $cellIdsResult->fetchArray(SQLITE3_ASSOC)) { + $cellKeys[] = $row['id']; + } + + return $cellKeys; + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + $this->currentCellIsDirty; + $this->storeData(); + + // Get a new id for the new table name + $tableName = str_replace('.', '_', $this->getUniqueID()); + if (!$this->DBHandle->exec('CREATE TABLE kvp_'.$tableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB) + AS SELECT * FROM kvp_'.$this->TableName) + ) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + + // Copy the existing cell cache file + $this->TableName = $tableName; + } + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + + // Close down the temporary cache file + $this->__destruct(); + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + */ + public function __construct(PHPExcel_Worksheet $parent) + { + parent::__construct($parent); + if (is_null($this->DBHandle)) { + $this->TableName = str_replace('.', '_', $this->getUniqueID()); + $_DBName = ':memory:'; + + $this->DBHandle = new SQLite3($_DBName); + if ($this->DBHandle === false) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + if (!$this->DBHandle->exec('CREATE TABLE kvp_'.$this->TableName.' (id VARCHAR(12) PRIMARY KEY, value BLOB)')) { + throw new PHPExcel_Exception($this->DBHandle->lastErrorMsg()); + } + } + + $this->selectQuery = $this->DBHandle->prepare("SELECT value FROM kvp_".$this->TableName." WHERE id = :id"); + $this->insertQuery = $this->DBHandle->prepare("INSERT OR REPLACE INTO kvp_".$this->TableName." VALUES(:id,:data)"); + $this->updateQuery = $this->DBHandle->prepare("UPDATE kvp_".$this->TableName." SET id=:toId WHERE id=:fromId"); + $this->deleteQuery = $this->DBHandle->prepare("DELETE FROM kvp_".$this->TableName." WHERE id = :id"); + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + if (!is_null($this->DBHandle)) { + $this->DBHandle->exec('DROP TABLE kvp_'.$this->TableName); + $this->DBHandle->close(); + } + $this->DBHandle = null; + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!class_exists('SQLite3', false)) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorage/Wincache.php b/assets/excel/PHPExcel/CachedObjectStorage/Wincache.php new file mode 100644 index 0000000..1567874 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorage/Wincache.php @@ -0,0 +1,289 @@ +currentCellIsDirty && !empty($this->currentObjectID)) { + $this->currentObject->detach(); + + $obj = serialize($this->currentObject); + if (wincache_ucache_exists($this->cachePrefix.$this->currentObjectID.'.cache')) { + if (!wincache_ucache_set($this->cachePrefix.$this->currentObjectID.'.cache', $obj, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception('Failed to store cell '.$this->currentObjectID.' in WinCache'); + } + } else { + if (!wincache_ucache_add($this->cachePrefix.$this->currentObjectID.'.cache', $obj, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception('Failed to store cell '.$this->currentObjectID.' in WinCache'); + } + } + $this->currentCellIsDirty = false; + } + + $this->currentObjectID = $this->currentObject = null; + } + + /** + * Add or Update a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to update + * @param PHPExcel_Cell $cell Cell to update + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function addCacheData($pCoord, PHPExcel_Cell $cell) + { + if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) { + $this->storeData(); + } + $this->cellCache[$pCoord] = true; + + $this->currentObjectID = $pCoord; + $this->currentObject = $cell; + $this->currentCellIsDirty = true; + + return $cell; + } + + /** + * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? + * + * @param string $pCoord Coordinate address of the cell to check + * @return boolean + */ + public function isDataSet($pCoord) + { + // Check if the requested entry is the current object, or exists in the cache + if (parent::isDataSet($pCoord)) { + if ($this->currentObjectID == $pCoord) { + return true; + } + // Check if the requested entry still exists in cache + $success = wincache_ucache_exists($this->cachePrefix.$pCoord.'.cache'); + if ($success === false) { + // Entry no longer exists in Wincache, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); + } + return true; + } + return false; + } + + + /** + * Get cell at a specific coordinate + * + * @param string $pCoord Coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Cell Cell that was found, or null if not found + */ + public function getCacheData($pCoord) + { + if ($pCoord === $this->currentObjectID) { + return $this->currentObject; + } + $this->storeData(); + + // Check if the entry that has been requested actually exists + $obj = null; + if (parent::isDataSet($pCoord)) { + $success = false; + $obj = wincache_ucache_get($this->cachePrefix.$pCoord.'.cache', $success); + if ($success === false) { + // Entry no longer exists in WinCache, so clear it from the cache array + parent::deleteCacheData($pCoord); + throw new PHPExcel_Exception('Cell entry '.$pCoord.' no longer exists in WinCache'); + } + } else { + // Return null if requested entry doesn't exist in cache + return null; + } + + // Set current entry to the requested entry + $this->currentObjectID = $pCoord; + $this->currentObject = unserialize($obj); + // Re-attach this as the cell's parent + $this->currentObject->attach($this); + + // Return requested entry + return $this->currentObject; + } + + + /** + * Get a list of all cell addresses currently held in cache + * + * @return string[] + */ + public function getCellList() + { + if ($this->currentObjectID !== null) { + $this->storeData(); + } + + return parent::getCellList(); + } + + /** + * Delete a cell in cache identified by coordinate address + * + * @param string $pCoord Coordinate address of the cell to delete + * @throws PHPExcel_Exception + */ + public function deleteCacheData($pCoord) + { + // Delete the entry from Wincache + wincache_ucache_delete($this->cachePrefix.$pCoord.'.cache'); + + // Delete the entry from our cell address array + parent::deleteCacheData($pCoord); + } + + /** + * Clone the cell collection + * + * @param PHPExcel_Worksheet $parent The new worksheet + * @return void + */ + public function copyCellCollection(PHPExcel_Worksheet $parent) + { + parent::copyCellCollection($parent); + // Get a new id for the new file name + $baseUnique = $this->getUniqueID(); + $newCachePrefix = substr(md5($baseUnique), 0, 8) . '.'; + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + if ($cellID != $this->currentObjectID) { + $success = false; + $obj = wincache_ucache_get($this->cachePrefix.$cellID.'.cache', $success); + if ($success === false) { + // Entry no longer exists in WinCache, so clear it from the cache array + parent::deleteCacheData($cellID); + throw new PHPExcel_Exception('Cell entry '.$cellID.' no longer exists in Wincache'); + } + if (!wincache_ucache_add($newCachePrefix.$cellID.'.cache', $obj, $this->cacheTime)) { + $this->__destruct(); + throw new PHPExcel_Exception('Failed to store cell '.$cellID.' in Wincache'); + } + } + } + $this->cachePrefix = $newCachePrefix; + } + + + /** + * Clear the cell collection and disconnect from our parent + * + * @return void + */ + public function unsetWorksheetCells() + { + if (!is_null($this->currentObject)) { + $this->currentObject->detach(); + $this->currentObject = $this->currentObjectID = null; + } + + // Flush the WinCache cache + $this->__destruct(); + + $this->cellCache = array(); + + // detach ourself from the worksheet, so that it can then delete this object successfully + $this->parent = null; + } + + /** + * Initialise this new cell collection + * + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection + * @param array of mixed $arguments Additional initialisation arguments + */ + public function __construct(PHPExcel_Worksheet $parent, $arguments) + { + $cacheTime = (isset($arguments['cacheTime'])) ? $arguments['cacheTime'] : 600; + + if (is_null($this->cachePrefix)) { + $baseUnique = $this->getUniqueID(); + $this->cachePrefix = substr(md5($baseUnique), 0, 8).'.'; + $this->cacheTime = $cacheTime; + + parent::__construct($parent); + } + } + + /** + * Destroy this cell collection + */ + public function __destruct() + { + $cacheList = $this->getCellList(); + foreach ($cacheList as $cellID) { + wincache_ucache_delete($this->cachePrefix.$cellID.'.cache'); + } + } + + /** + * Identify whether the caching method is currently available + * Some methods are dependent on the availability of certain extensions being enabled in the PHP build + * + * @return boolean + */ + public static function cacheMethodIsAvailable() + { + if (!function_exists('wincache_ucache_add')) { + return false; + } + + return true; + } +} diff --git a/assets/excel/PHPExcel/CachedObjectStorageFactory.php b/assets/excel/PHPExcel/CachedObjectStorageFactory.php new file mode 100644 index 0000000..0a96978 --- /dev/null +++ b/assets/excel/PHPExcel/CachedObjectStorageFactory.php @@ -0,0 +1,231 @@ + array( + ), + self::cache_in_memory_gzip => array( + ), + self::cache_in_memory_serialized => array( + ), + self::cache_igbinary => array( + ), + self::cache_to_phpTemp => array( 'memoryCacheSize' => '1MB' + ), + self::cache_to_discISAM => array( 'dir' => null + ), + self::cache_to_apc => array( 'cacheTime' => 600 + ), + self::cache_to_memcache => array( 'memcacheServer' => 'localhost', + 'memcachePort' => 11211, + 'cacheTime' => 600 + ), + self::cache_to_wincache => array( 'cacheTime' => 600 + ), + self::cache_to_sqlite => array( + ), + self::cache_to_sqlite3 => array( + ), + ); + + /** + * Arguments for the active cache storage method + * + * @var array of mixed array + */ + private static $storageMethodParameters = array(); + + /** + * Return the current cache storage method + * + * @return string|null + **/ + public static function getCacheStorageMethod() + { + return self::$cacheStorageMethod; + } + + /** + * Return the current cache storage class + * + * @return PHPExcel_CachedObjectStorage_ICache|null + **/ + public static function getCacheStorageClass() + { + return self::$cacheStorageClass; + } + + /** + * Return the list of all possible cache storage methods + * + * @return string[] + **/ + public static function getAllCacheStorageMethods() + { + return self::$storageMethods; + } + + /** + * Return the list of all available cache storage methods + * + * @return string[] + **/ + public static function getCacheStorageMethods() + { + $activeMethods = array(); + foreach (self::$storageMethods as $storageMethod) { + $cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $storageMethod; + if (call_user_func(array($cacheStorageClass, 'cacheMethodIsAvailable'))) { + $activeMethods[] = $storageMethod; + } + } + return $activeMethods; + } + + /** + * Identify the cache storage method to use + * + * @param string $method Name of the method to use for cell cacheing + * @param array of mixed $arguments Additional arguments to pass to the cell caching class + * when instantiating + * @return boolean + **/ + public static function initialize($method = self::cache_in_memory, $arguments = array()) + { + if (!in_array($method, self::$storageMethods)) { + return false; + } + + $cacheStorageClass = 'PHPExcel_CachedObjectStorage_'.$method; + if (!call_user_func(array( $cacheStorageClass, + 'cacheMethodIsAvailable'))) { + return false; + } + + self::$storageMethodParameters[$method] = self::$storageMethodDefaultParameters[$method]; + foreach ($arguments as $k => $v) { + if (array_key_exists($k, self::$storageMethodParameters[$method])) { + self::$storageMethodParameters[$method][$k] = $v; + } + } + + if (self::$cacheStorageMethod === null) { + self::$cacheStorageClass = 'PHPExcel_CachedObjectStorage_' . $method; + self::$cacheStorageMethod = $method; + } + return true; + } + + /** + * Initialise the cache storage + * + * @param PHPExcel_Worksheet $parent Enable cell caching for this worksheet + * @return PHPExcel_CachedObjectStorage_ICache + **/ + public static function getInstance(PHPExcel_Worksheet $parent) + { + $cacheMethodIsAvailable = true; + if (self::$cacheStorageMethod === null) { + $cacheMethodIsAvailable = self::initialize(); + } + + if ($cacheMethodIsAvailable) { + $instance = new self::$cacheStorageClass( + $parent, + self::$storageMethodParameters[self::$cacheStorageMethod] + ); + if ($instance !== null) { + return $instance; + } + } + + return false; + } + + /** + * Clear the cache storage + * + **/ + public static function finalize() + { + self::$cacheStorageMethod = null; + self::$cacheStorageClass = null; + self::$storageMethodParameters = array(); + } +} diff --git a/assets/excel/PHPExcel/CalcEngine/CyclicReferenceStack.php b/assets/excel/PHPExcel/CalcEngine/CyclicReferenceStack.php new file mode 100644 index 0000000..1072fc7 --- /dev/null +++ b/assets/excel/PHPExcel/CalcEngine/CyclicReferenceStack.php @@ -0,0 +1,94 @@ +stack); + } + + /** + * Push a new entry onto the stack + * + * @param mixed $value + */ + public function push($value) + { + $this->stack[$value] = $value; + } + + /** + * Pop the last entry from the stack + * + * @return mixed + */ + public function pop() + { + return array_pop($this->stack); + } + + /** + * Test to see if a specified entry exists on the stack + * + * @param mixed $value The value to test + */ + public function onStack($value) + { + return isset($this->stack[$value]); + } + + /** + * Clear the stack + */ + public function clear() + { + $this->stack = array(); + } + + /** + * Return an array of all entries on the stack + * + * @return mixed[] + */ + public function showStack() + { + return $this->stack; + } +} diff --git a/assets/excel/PHPExcel/CalcEngine/Logger.php b/assets/excel/PHPExcel/CalcEngine/Logger.php new file mode 100644 index 0000000..c5ffe73 --- /dev/null +++ b/assets/excel/PHPExcel/CalcEngine/Logger.php @@ -0,0 +1,151 @@ +cellStack = $stack; + } + + /** + * Enable/Disable Calculation engine logging + * + * @param boolean $pValue + */ + public function setWriteDebugLog($pValue = false) + { + $this->writeDebugLog = $pValue; + } + + /** + * Return whether calculation engine logging is enabled or disabled + * + * @return boolean + */ + public function getWriteDebugLog() + { + return $this->writeDebugLog; + } + + /** + * Enable/Disable echoing of debug log information + * + * @param boolean $pValue + */ + public function setEchoDebugLog($pValue = false) + { + $this->echoDebugLog = $pValue; + } + + /** + * Return whether echoing of debug log information is enabled or disabled + * + * @return boolean + */ + public function getEchoDebugLog() + { + return $this->echoDebugLog; + } + + /** + * Write an entry to the calculation engine debug log + */ + public function writeDebugLog() + { + // Only write the debug log if logging is enabled + if ($this->writeDebugLog) { + $message = implode(func_get_args()); + $cellReference = implode(' -> ', $this->cellStack->showStack()); + if ($this->echoDebugLog) { + echo $cellReference, + ($this->cellStack->count() > 0 ? ' => ' : ''), + $message, + PHP_EOL; + } + $this->debugLog[] = $cellReference . + ($this->cellStack->count() > 0 ? ' => ' : '') . + $message; + } + } + + /** + * Clear the calculation engine debug log + */ + public function clearLog() + { + $this->debugLog = array(); + } + + /** + * Return the calculation engine debug log + * + * @return string[] + */ + public function getLog() + { + return $this->debugLog; + } +} diff --git a/assets/excel/PHPExcel/Calculation.php b/assets/excel/PHPExcel/Calculation.php new file mode 100644 index 0000000..20b1ec3 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation.php @@ -0,0 +1,4391 @@ +=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d{1,7})'); + // Named Range of cells + define('CALCULATION_REGEXP_NAMEDRANGE', '((([^\s,!&%^\/\*\+<>=-]*)|(\'[^\']*\')|(\"[^\"]*\"))!)?([_A-Z][_A-Z0-9\.]*)'); + } else { + // Cell reference (cell or range of cells, with or without a sheet reference) + define('CALCULATION_REGEXP_CELLREF', '(((\w*)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+)'); + // Named Range of cells + define('CALCULATION_REGEXP_NAMEDRANGE', '(((\w*)|(\'.*\')|(\".*\"))!)?([_A-Z][_A-Z0-9\.]*)'); + } +} + +/** + * PHPExcel_Calculation (Multiton) + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Calculation + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Calculation +{ + /** Constants */ + /** Regular Expressions */ + // Numeric operand + const CALCULATION_REGEXP_NUMBER = '[-+]?\d*\.?\d+(e[-+]?\d+)?'; + // String operand + const CALCULATION_REGEXP_STRING = '"(?:[^"]|"")*"'; + // Opening bracket + const CALCULATION_REGEXP_OPENBRACE = '\('; + // Function (allow for the old @ symbol that could be used to prefix a function, but we'll ignore it) + const CALCULATION_REGEXP_FUNCTION = '@?([A-Z][A-Z0-9\.]*)[\s]*\('; + // Cell reference (cell or range of cells, with or without a sheet reference) + const CALCULATION_REGEXP_CELLREF = CALCULATION_REGEXP_CELLREF; + // Named Range of cells + const CALCULATION_REGEXP_NAMEDRANGE = CALCULATION_REGEXP_NAMEDRANGE; + // Error + const CALCULATION_REGEXP_ERROR = '\#[A-Z][A-Z0_\/]*[!\?]?'; + + + /** constants */ + const RETURN_ARRAY_AS_ERROR = 'error'; + const RETURN_ARRAY_AS_VALUE = 'value'; + const RETURN_ARRAY_AS_ARRAY = 'array'; + + private static $returnArrayAsType = self::RETURN_ARRAY_AS_VALUE; + + + /** + * Instance of this class + * + * @access private + * @var PHPExcel_Calculation + */ + private static $instance; + + + /** + * Instance of the workbook this Calculation Engine is using + * + * @access private + * @var PHPExcel + */ + private $workbook; + + /** + * List of instances of the calculation engine that we've instantiated for individual workbooks + * + * @access private + * @var PHPExcel_Calculation[] + */ + private static $workbookSets; + + /** + * Calculation cache + * + * @access private + * @var array + */ + private $calculationCache = array (); + + + /** + * Calculation cache enabled + * + * @access private + * @var boolean + */ + private $calculationCacheEnabled = true; + + + /** + * List of operators that can be used within formulae + * The true/false value indicates whether it is a binary operator or a unary operator + * + * @access private + * @var array + */ + private static $operators = array( + '+' => true, '-' => true, '*' => true, '/' => true, + '^' => true, '&' => true, '%' => false, '~' => false, + '>' => true, '<' => true, '=' => true, '>=' => true, + '<=' => true, '<>' => true, '|' => true, ':' => true + ); + + /** + * List of binary operators (those that expect two operands) + * + * @access private + * @var array + */ + private static $binaryOperators = array( + '+' => true, '-' => true, '*' => true, '/' => true, + '^' => true, '&' => true, '>' => true, '<' => true, + '=' => true, '>=' => true, '<=' => true, '<>' => true, + '|' => true, ':' => true + ); + + /** + * The debug log generated by the calculation engine + * + * @access private + * @var PHPExcel_CalcEngine_Logger + * + */ + private $debugLog; + + /** + * Flag to determine how formula errors should be handled + * If true, then a user error will be triggered + * If false, then an exception will be thrown + * + * @access public + * @var boolean + * + */ + public $suppressFormulaErrors = false; + + /** + * Error message for any error that was raised/thrown by the calculation engine + * + * @access public + * @var string + * + */ + public $formulaError = null; + + /** + * An array of the nested cell references accessed by the calculation engine, used for the debug log + * + * @access private + * @var array of string + * + */ + private $cyclicReferenceStack; + + private $cellStack = array(); + + /** + * Current iteration counter for cyclic formulae + * If the value is 0 (or less) then cyclic formulae will throw an exception, + * otherwise they will iterate to the limit defined here before returning a result + * + * @var integer + * + */ + private $cyclicFormulaCounter = 1; + + private $cyclicFormulaCell = ''; + + /** + * Number of iterations for cyclic formulae + * + * @var integer + * + */ + public $cyclicFormulaCount = 1; + + /** + * Epsilon Precision used for comparisons in calculations + * + * @var float + * + */ + private $delta = 0.1e-12; + + + /** + * The current locale setting + * + * @var string + * + */ + private static $localeLanguage = 'en_us'; // US English (default locale) + + /** + * List of available locale settings + * Note that this is read for the locale subdirectory only when requested + * + * @var string[] + * + */ + private static $validLocaleLanguages = array( + 'en' // English (default language) + ); + + /** + * Locale-specific argument separator for function arguments + * + * @var string + * + */ + private static $localeArgumentSeparator = ','; + private static $localeFunctions = array(); + + /** + * Locale-specific translations for Excel constants (True, False and Null) + * + * @var string[] + * + */ + public static $localeBoolean = array( + 'TRUE' => 'TRUE', + 'FALSE' => 'FALSE', + 'NULL' => 'NULL' + ); + + /** + * Excel constant string translations to their PHP equivalents + * Constant conversion from text name/value to actual (datatyped) value + * + * @var string[] + * + */ + private static $excelConstants = array( + 'TRUE' => true, + 'FALSE' => false, + 'NULL' => null + ); + + // PHPExcel functions + private static $PHPExcelFunctions = array( + 'ABS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'abs', + 'argumentCount' => '1' + ), + 'ACCRINT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINT', + 'argumentCount' => '4-7' + ), + 'ACCRINTM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::ACCRINTM', + 'argumentCount' => '3-5' + ), + 'ACOS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'acos', + 'argumentCount' => '1' + ), + 'ACOSH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'acosh', + 'argumentCount' => '1' + ), + 'ADDRESS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::CELL_ADDRESS', + 'argumentCount' => '2-5' + ), + 'AMORDEGRC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::AMORDEGRC', + 'argumentCount' => '6,7' + ), + 'AMORLINC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::AMORLINC', + 'argumentCount' => '6,7' + ), + 'AND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_AND', + 'argumentCount' => '1+' + ), + 'AREAS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'ASC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'ASIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'asin', + 'argumentCount' => '1' + ), + 'ASINH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'asinh', + 'argumentCount' => '1' + ), + 'ATAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'atan', + 'argumentCount' => '1' + ), + 'ATAN2' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::ATAN2', + 'argumentCount' => '2' + ), + 'ATANH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'atanh', + 'argumentCount' => '1' + ), + 'AVEDEV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::AVEDEV', + 'argumentCount' => '1+' + ), + 'AVERAGE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGE', + 'argumentCount' => '1+' + ), + 'AVERAGEA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEA', + 'argumentCount' => '1+' + ), + 'AVERAGEIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::AVERAGEIF', + 'argumentCount' => '2,3' + ), + 'AVERAGEIFS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '3+' + ), + 'BAHTTEXT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'BESSELI' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELI', + 'argumentCount' => '2' + ), + 'BESSELJ' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELJ', + 'argumentCount' => '2' + ), + 'BESSELK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELK', + 'argumentCount' => '2' + ), + 'BESSELY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BESSELY', + 'argumentCount' => '2' + ), + 'BETADIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::BETADIST', + 'argumentCount' => '3-5' + ), + 'BETAINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::BETAINV', + 'argumentCount' => '3-5' + ), + 'BIN2DEC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTODEC', + 'argumentCount' => '1' + ), + 'BIN2HEX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOHEX', + 'argumentCount' => '1,2' + ), + 'BIN2OCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::BINTOOCT', + 'argumentCount' => '1,2' + ), + 'BINOMDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::BINOMDIST', + 'argumentCount' => '4' + ), + 'CEILING' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::CEILING', + 'argumentCount' => '2' + ), + 'CELL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1,2' + ), + 'CHAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::CHARACTER', + 'argumentCount' => '1' + ), + 'CHIDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIDIST', + 'argumentCount' => '2' + ), + 'CHIINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CHIINV', + 'argumentCount' => '2' + ), + 'CHITEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'CHOOSE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::CHOOSE', + 'argumentCount' => '2+' + ), + 'CLEAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMNONPRINTABLE', + 'argumentCount' => '1' + ), + 'CODE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::ASCIICODE', + 'argumentCount' => '1' + ), + 'COLUMN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMN', + 'argumentCount' => '-1', + 'passByReference' => array(true) + ), + 'COLUMNS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::COLUMNS', + 'argumentCount' => '1' + ), + 'COMBIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::COMBIN', + 'argumentCount' => '2' + ), + 'COMPLEX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::COMPLEX', + 'argumentCount' => '2,3' + ), + 'CONCATENATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::CONCATENATE', + 'argumentCount' => '1+' + ), + 'CONFIDENCE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CONFIDENCE', + 'argumentCount' => '3' + ), + 'CONVERT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::CONVERTUOM', + 'argumentCount' => '3' + ), + 'CORREL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL', + 'argumentCount' => '2' + ), + 'COS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'cos', + 'argumentCount' => '1' + ), + 'COSH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'cosh', + 'argumentCount' => '1' + ), + 'COUNT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNT', + 'argumentCount' => '1+' + ), + 'COUNTA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTA', + 'argumentCount' => '1+' + ), + 'COUNTBLANK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTBLANK', + 'argumentCount' => '1' + ), + 'COUNTIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::COUNTIF', + 'argumentCount' => '2' + ), + 'COUNTIFS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'COUPDAYBS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYBS', + 'argumentCount' => '3,4' + ), + 'COUPDAYS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYS', + 'argumentCount' => '3,4' + ), + 'COUPDAYSNC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPDAYSNC', + 'argumentCount' => '3,4' + ), + 'COUPNCD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNCD', + 'argumentCount' => '3,4' + ), + 'COUPNUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPNUM', + 'argumentCount' => '3,4' + ), + 'COUPPCD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::COUPPCD', + 'argumentCount' => '3,4' + ), + 'COVAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::COVAR', + 'argumentCount' => '2' + ), + 'CRITBINOM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CRITBINOM', + 'argumentCount' => '3' + ), + 'CUBEKPIMEMBER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBEMEMBER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBEMEMBERPROPERTY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBERANKEDMEMBER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBESET' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBESETCOUNT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUBEVALUE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_CUBE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '?' + ), + 'CUMIPMT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::CUMIPMT', + 'argumentCount' => '6' + ), + 'CUMPRINC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::CUMPRINC', + 'argumentCount' => '6' + ), + 'DATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DATE', + 'argumentCount' => '3' + ), + 'DATEDIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEDIF', + 'argumentCount' => '2,3' + ), + 'DATEVALUE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DATEVALUE', + 'argumentCount' => '1' + ), + 'DAVERAGE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DAVERAGE', + 'argumentCount' => '3' + ), + 'DAY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFMONTH', + 'argumentCount' => '1' + ), + 'DAYS360' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYS360', + 'argumentCount' => '2,3' + ), + 'DB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::DB', + 'argumentCount' => '4,5' + ), + 'DCOUNT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNT', + 'argumentCount' => '3' + ), + 'DCOUNTA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DCOUNTA', + 'argumentCount' => '3' + ), + 'DDB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::DDB', + 'argumentCount' => '4,5' + ), + 'DEC2BIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOBIN', + 'argumentCount' => '1,2' + ), + 'DEC2HEX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOHEX', + 'argumentCount' => '1,2' + ), + 'DEC2OCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::DECTOOCT', + 'argumentCount' => '1,2' + ), + 'DEGREES' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'rad2deg', + 'argumentCount' => '1' + ), + 'DELTA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::DELTA', + 'argumentCount' => '1,2' + ), + 'DEVSQ' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::DEVSQ', + 'argumentCount' => '1+' + ), + 'DGET' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DGET', + 'argumentCount' => '3' + ), + 'DISC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::DISC', + 'argumentCount' => '4,5' + ), + 'DMAX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DMAX', + 'argumentCount' => '3' + ), + 'DMIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DMIN', + 'argumentCount' => '3' + ), + 'DOLLAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::DOLLAR', + 'argumentCount' => '1,2' + ), + 'DOLLARDE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARDE', + 'argumentCount' => '2' + ), + 'DOLLARFR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::DOLLARFR', + 'argumentCount' => '2' + ), + 'DPRODUCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DPRODUCT', + 'argumentCount' => '3' + ), + 'DSTDEV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEV', + 'argumentCount' => '3' + ), + 'DSTDEVP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DSTDEVP', + 'argumentCount' => '3' + ), + 'DSUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DSUM', + 'argumentCount' => '3' + ), + 'DURATION' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '5,6' + ), + 'DVAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DVAR', + 'argumentCount' => '3' + ), + 'DVARP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATABASE, + 'functionCall' => 'PHPExcel_Calculation_Database::DVARP', + 'argumentCount' => '3' + ), + 'EDATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::EDATE', + 'argumentCount' => '2' + ), + 'EFFECT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::EFFECT', + 'argumentCount' => '2' + ), + 'EOMONTH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::EOMONTH', + 'argumentCount' => '2' + ), + 'ERF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::ERF', + 'argumentCount' => '1,2' + ), + 'ERFC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::ERFC', + 'argumentCount' => '1' + ), + 'ERROR.TYPE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::ERROR_TYPE', + 'argumentCount' => '1' + ), + 'EVEN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::EVEN', + 'argumentCount' => '1' + ), + 'EXACT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'EXP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'exp', + 'argumentCount' => '1' + ), + 'EXPONDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::EXPONDIST', + 'argumentCount' => '3' + ), + 'FACT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACT', + 'argumentCount' => '1' + ), + 'FACTDOUBLE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::FACTDOUBLE', + 'argumentCount' => '1' + ), + 'FALSE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::FALSE', + 'argumentCount' => '0' + ), + 'FDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '3' + ), + 'FIND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE', + 'argumentCount' => '2,3' + ), + 'FINDB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHSENSITIVE', + 'argumentCount' => '2,3' + ), + 'FINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '3' + ), + 'FISHER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHER', + 'argumentCount' => '1' + ), + 'FISHERINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::FISHERINV', + 'argumentCount' => '1' + ), + 'FIXED' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::FIXEDFORMAT', + 'argumentCount' => '1-3' + ), + 'FLOOR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::FLOOR', + 'argumentCount' => '2' + ), + 'FORECAST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::FORECAST', + 'argumentCount' => '3' + ), + 'FREQUENCY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'FTEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'FV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::FV', + 'argumentCount' => '3-5' + ), + 'FVSCHEDULE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::FVSCHEDULE', + 'argumentCount' => '2' + ), + 'GAMMADIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMADIST', + 'argumentCount' => '4' + ), + 'GAMMAINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMAINV', + 'argumentCount' => '3' + ), + 'GAMMALN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::GAMMALN', + 'argumentCount' => '1' + ), + 'GCD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::GCD', + 'argumentCount' => '1+' + ), + 'GEOMEAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::GEOMEAN', + 'argumentCount' => '1+' + ), + 'GESTEP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::GESTEP', + 'argumentCount' => '1,2' + ), + 'GETPIVOTDATA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2+' + ), + 'GROWTH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::GROWTH', + 'argumentCount' => '1-4' + ), + 'HARMEAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::HARMEAN', + 'argumentCount' => '1+' + ), + 'HEX2BIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOBIN', + 'argumentCount' => '1,2' + ), + 'HEX2DEC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTODEC', + 'argumentCount' => '1' + ), + 'HEX2OCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::HEXTOOCT', + 'argumentCount' => '1,2' + ), + 'HLOOKUP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::HLOOKUP', + 'argumentCount' => '3,4' + ), + 'HOUR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::HOUROFDAY', + 'argumentCount' => '1' + ), + 'HYPERLINK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::HYPERLINK', + 'argumentCount' => '1,2', + 'passCellReference' => true + ), + 'HYPGEOMDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::HYPGEOMDIST', + 'argumentCount' => '4' + ), + 'IF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::STATEMENT_IF', + 'argumentCount' => '1-3' + ), + 'IFERROR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::IFERROR', + 'argumentCount' => '2' + ), + 'IMABS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMABS', + 'argumentCount' => '1' + ), + 'IMAGINARY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMAGINARY', + 'argumentCount' => '1' + ), + 'IMARGUMENT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMARGUMENT', + 'argumentCount' => '1' + ), + 'IMCONJUGATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCONJUGATE', + 'argumentCount' => '1' + ), + 'IMCOS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMCOS', + 'argumentCount' => '1' + ), + 'IMDIV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMDIV', + 'argumentCount' => '2' + ), + 'IMEXP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMEXP', + 'argumentCount' => '1' + ), + 'IMLN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLN', + 'argumentCount' => '1' + ), + 'IMLOG10' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG10', + 'argumentCount' => '1' + ), + 'IMLOG2' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMLOG2', + 'argumentCount' => '1' + ), + 'IMPOWER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPOWER', + 'argumentCount' => '2' + ), + 'IMPRODUCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMPRODUCT', + 'argumentCount' => '1+' + ), + 'IMREAL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMREAL', + 'argumentCount' => '1' + ), + 'IMSIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSIN', + 'argumentCount' => '1' + ), + 'IMSQRT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSQRT', + 'argumentCount' => '1' + ), + 'IMSUB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUB', + 'argumentCount' => '2' + ), + 'IMSUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::IMSUM', + 'argumentCount' => '1+' + ), + 'INDEX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDEX', + 'argumentCount' => '1-4' + ), + 'INDIRECT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::INDIRECT', + 'argumentCount' => '1,2', + 'passCellReference' => true + ), + 'INFO' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'INT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::INT', + 'argumentCount' => '1' + ), + 'INTERCEPT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::INTERCEPT', + 'argumentCount' => '2' + ), + 'INTRATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::INTRATE', + 'argumentCount' => '4,5' + ), + 'IPMT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::IPMT', + 'argumentCount' => '4-6' + ), + 'IRR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::IRR', + 'argumentCount' => '1,2' + ), + 'ISBLANK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_BLANK', + 'argumentCount' => '1' + ), + 'ISERR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERR', + 'argumentCount' => '1' + ), + 'ISERROR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ERROR', + 'argumentCount' => '1' + ), + 'ISEVEN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_EVEN', + 'argumentCount' => '1' + ), + 'ISLOGICAL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_LOGICAL', + 'argumentCount' => '1' + ), + 'ISNA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NA', + 'argumentCount' => '1' + ), + 'ISNONTEXT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NONTEXT', + 'argumentCount' => '1' + ), + 'ISNUMBER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_NUMBER', + 'argumentCount' => '1' + ), + 'ISODD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_ODD', + 'argumentCount' => '1' + ), + 'ISPMT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::ISPMT', + 'argumentCount' => '4' + ), + 'ISREF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'ISTEXT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::IS_TEXT', + 'argumentCount' => '1' + ), + 'JIS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'KURT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::KURT', + 'argumentCount' => '1+' + ), + 'LARGE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::LARGE', + 'argumentCount' => '2' + ), + 'LCM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::LCM', + 'argumentCount' => '1+' + ), + 'LEFT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT', + 'argumentCount' => '1,2' + ), + 'LEFTB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::LEFT', + 'argumentCount' => '1,2' + ), + 'LEN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH', + 'argumentCount' => '1' + ), + 'LENB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::STRINGLENGTH', + 'argumentCount' => '1' + ), + 'LINEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::LINEST', + 'argumentCount' => '1-4' + ), + 'LN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'log', + 'argumentCount' => '1' + ), + 'LOG' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::LOG_BASE', + 'argumentCount' => '1,2' + ), + 'LOG10' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'log10', + 'argumentCount' => '1' + ), + 'LOGEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGEST', + 'argumentCount' => '1-4' + ), + 'LOGINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGINV', + 'argumentCount' => '3' + ), + 'LOGNORMDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::LOGNORMDIST', + 'argumentCount' => '3' + ), + 'LOOKUP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::LOOKUP', + 'argumentCount' => '2,3' + ), + 'LOWER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::LOWERCASE', + 'argumentCount' => '1' + ), + 'MATCH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::MATCH', + 'argumentCount' => '2,3' + ), + 'MAX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MAX', + 'argumentCount' => '1+' + ), + 'MAXA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXA', + 'argumentCount' => '1+' + ), + 'MAXIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MAXIF', + 'argumentCount' => '2+' + ), + 'MDETERM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MDETERM', + 'argumentCount' => '1' + ), + 'MDURATION' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '5,6' + ), + 'MEDIAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MEDIAN', + 'argumentCount' => '1+' + ), + 'MEDIANIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2+' + ), + 'MID' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::MID', + 'argumentCount' => '3' + ), + 'MIDB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::MID', + 'argumentCount' => '3' + ), + 'MIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MIN', + 'argumentCount' => '1+' + ), + 'MINA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MINA', + 'argumentCount' => '1+' + ), + 'MINIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MINIF', + 'argumentCount' => '2+' + ), + 'MINUTE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::MINUTEOFHOUR', + 'argumentCount' => '1' + ), + 'MINVERSE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MINVERSE', + 'argumentCount' => '1' + ), + 'MIRR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::MIRR', + 'argumentCount' => '3' + ), + 'MMULT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MMULT', + 'argumentCount' => '2' + ), + 'MOD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MOD', + 'argumentCount' => '2' + ), + 'MODE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::MODE', + 'argumentCount' => '1+' + ), + 'MONTH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::MONTHOFYEAR', + 'argumentCount' => '1' + ), + 'MROUND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MROUND', + 'argumentCount' => '2' + ), + 'MULTINOMIAL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::MULTINOMIAL', + 'argumentCount' => '1+' + ), + 'N' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::N', + 'argumentCount' => '1' + ), + 'NA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::NA', + 'argumentCount' => '0' + ), + 'NEGBINOMDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::NEGBINOMDIST', + 'argumentCount' => '3' + ), + 'NETWORKDAYS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::NETWORKDAYS', + 'argumentCount' => '2+' + ), + 'NOMINAL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::NOMINAL', + 'argumentCount' => '2' + ), + 'NORMDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMDIST', + 'argumentCount' => '4' + ), + 'NORMINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMINV', + 'argumentCount' => '3' + ), + 'NORMSDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSDIST', + 'argumentCount' => '1' + ), + 'NORMSINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::NORMSINV', + 'argumentCount' => '1' + ), + 'NOT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::NOT', + 'argumentCount' => '1' + ), + 'NOW' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DATETIMENOW', + 'argumentCount' => '0' + ), + 'NPER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::NPER', + 'argumentCount' => '3-5' + ), + 'NPV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::NPV', + 'argumentCount' => '2+' + ), + 'OCT2BIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOBIN', + 'argumentCount' => '1,2' + ), + 'OCT2DEC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTODEC', + 'argumentCount' => '1' + ), + 'OCT2HEX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_ENGINEERING, + 'functionCall' => 'PHPExcel_Calculation_Engineering::OCTTOHEX', + 'argumentCount' => '1,2' + ), + 'ODD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::ODD', + 'argumentCount' => '1' + ), + 'ODDFPRICE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '8,9' + ), + 'ODDFYIELD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '8,9' + ), + 'ODDLPRICE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '7,8' + ), + 'ODDLYIELD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '7,8' + ), + 'OFFSET' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::OFFSET', + 'argumentCount' => '3-5', + 'passCellReference' => true, + 'passByReference' => array(true) + ), + 'OR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::LOGICAL_OR', + 'argumentCount' => '1+' + ), + 'PEARSON' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::CORREL', + 'argumentCount' => '2' + ), + 'PERCENTILE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTILE', + 'argumentCount' => '2' + ), + 'PERCENTRANK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::PERCENTRANK', + 'argumentCount' => '2,3' + ), + 'PERMUT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::PERMUT', + 'argumentCount' => '2' + ), + 'PHONETIC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1' + ), + 'PI' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'pi', + 'argumentCount' => '0' + ), + 'PMT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PMT', + 'argumentCount' => '3-5' + ), + 'POISSON' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::POISSON', + 'argumentCount' => '3' + ), + 'POWER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::POWER', + 'argumentCount' => '2' + ), + 'PPMT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PPMT', + 'argumentCount' => '4-6' + ), + 'PRICE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PRICE', + 'argumentCount' => '6,7' + ), + 'PRICEDISC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEDISC', + 'argumentCount' => '4,5' + ), + 'PRICEMAT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PRICEMAT', + 'argumentCount' => '5,6' + ), + 'PROB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '3,4' + ), + 'PRODUCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::PRODUCT', + 'argumentCount' => '1+' + ), + 'PROPER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::PROPERCASE', + 'argumentCount' => '1' + ), + 'PV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::PV', + 'argumentCount' => '3-5' + ), + 'QUARTILE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::QUARTILE', + 'argumentCount' => '2' + ), + 'QUOTIENT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::QUOTIENT', + 'argumentCount' => '2' + ), + 'RADIANS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'deg2rad', + 'argumentCount' => '1' + ), + 'RAND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND', + 'argumentCount' => '0' + ), + 'RANDBETWEEN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::RAND', + 'argumentCount' => '2' + ), + 'RANK' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::RANK', + 'argumentCount' => '2,3' + ), + 'RATE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::RATE', + 'argumentCount' => '3-6' + ), + 'RECEIVED' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::RECEIVED', + 'argumentCount' => '4-5' + ), + 'REPLACE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE', + 'argumentCount' => '4' + ), + 'REPLACEB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::REPLACE', + 'argumentCount' => '4' + ), + 'REPT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'str_repeat', + 'argumentCount' => '2' + ), + 'RIGHT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT', + 'argumentCount' => '1,2' + ), + 'RIGHTB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::RIGHT', + 'argumentCount' => '1,2' + ), + 'ROMAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROMAN', + 'argumentCount' => '1,2' + ), + 'ROUND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'round', + 'argumentCount' => '2' + ), + 'ROUNDDOWN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDDOWN', + 'argumentCount' => '2' + ), + 'ROUNDUP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::ROUNDUP', + 'argumentCount' => '2' + ), + 'ROW' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROW', + 'argumentCount' => '-1', + 'passByReference' => array(true) + ), + 'ROWS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::ROWS', + 'argumentCount' => '1' + ), + 'RSQ' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::RSQ', + 'argumentCount' => '2' + ), + 'RTD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '1+' + ), + 'SEARCH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE', + 'argumentCount' => '2,3' + ), + 'SEARCHB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::SEARCHINSENSITIVE', + 'argumentCount' => '2,3' + ), + 'SECOND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::SECONDOFMINUTE', + 'argumentCount' => '1' + ), + 'SERIESSUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SERIESSUM', + 'argumentCount' => '4' + ), + 'SIGN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SIGN', + 'argumentCount' => '1' + ), + 'SIN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'sin', + 'argumentCount' => '1' + ), + 'SINH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'sinh', + 'argumentCount' => '1' + ), + 'SKEW' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::SKEW', + 'argumentCount' => '1+' + ), + 'SLN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::SLN', + 'argumentCount' => '3' + ), + 'SLOPE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::SLOPE', + 'argumentCount' => '2' + ), + 'SMALL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::SMALL', + 'argumentCount' => '2' + ), + 'SQRT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'sqrt', + 'argumentCount' => '1' + ), + 'SQRTPI' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SQRTPI', + 'argumentCount' => '1' + ), + 'STANDARDIZE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STANDARDIZE', + 'argumentCount' => '3' + ), + 'STDEV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEV', + 'argumentCount' => '1+' + ), + 'STDEVA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVA', + 'argumentCount' => '1+' + ), + 'STDEVP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVP', + 'argumentCount' => '1+' + ), + 'STDEVPA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STDEVPA', + 'argumentCount' => '1+' + ), + 'STEYX' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::STEYX', + 'argumentCount' => '2' + ), + 'SUBSTITUTE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::SUBSTITUTE', + 'argumentCount' => '3,4' + ), + 'SUBTOTAL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUBTOTAL', + 'argumentCount' => '2+' + ), + 'SUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUM', + 'argumentCount' => '1+' + ), + 'SUMIF' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMIF', + 'argumentCount' => '2,3' + ), + 'SUMIFS' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMIFS', + 'argumentCount' => '3+' + ), + 'SUMPRODUCT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMPRODUCT', + 'argumentCount' => '1+' + ), + 'SUMSQ' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMSQ', + 'argumentCount' => '1+' + ), + 'SUMX2MY2' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2MY2', + 'argumentCount' => '2' + ), + 'SUMX2PY2' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMX2PY2', + 'argumentCount' => '2' + ), + 'SUMXMY2' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::SUMXMY2', + 'argumentCount' => '2' + ), + 'SYD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::SYD', + 'argumentCount' => '4' + ), + 'T' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::RETURNSTRING', + 'argumentCount' => '1' + ), + 'TAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'tan', + 'argumentCount' => '1' + ), + 'TANH' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'tanh', + 'argumentCount' => '1' + ), + 'TBILLEQ' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLEQ', + 'argumentCount' => '3' + ), + 'TBILLPRICE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLPRICE', + 'argumentCount' => '3' + ), + 'TBILLYIELD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::TBILLYIELD', + 'argumentCount' => '3' + ), + 'TDIST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::TDIST', + 'argumentCount' => '3' + ), + 'TEXT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::TEXTFORMAT', + 'argumentCount' => '2' + ), + 'TIME' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::TIME', + 'argumentCount' => '3' + ), + 'TIMEVALUE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::TIMEVALUE', + 'argumentCount' => '1' + ), + 'TINV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::TINV', + 'argumentCount' => '2' + ), + 'TODAY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DATENOW', + 'argumentCount' => '0' + ), + 'TRANSPOSE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::TRANSPOSE', + 'argumentCount' => '1' + ), + 'TREND' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::TREND', + 'argumentCount' => '1-4' + ), + 'TRIM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::TRIMSPACES', + 'argumentCount' => '1' + ), + 'TRIMMEAN' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::TRIMMEAN', + 'argumentCount' => '2' + ), + 'TRUE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOGICAL, + 'functionCall' => 'PHPExcel_Calculation_Logical::TRUE', + 'argumentCount' => '0' + ), + 'TRUNC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_MATH_AND_TRIG, + 'functionCall' => 'PHPExcel_Calculation_MathTrig::TRUNC', + 'argumentCount' => '1,2' + ), + 'TTEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '4' + ), + 'TYPE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::TYPE', + 'argumentCount' => '1' + ), + 'UPPER' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::UPPERCASE', + 'argumentCount' => '1' + ), + 'USDOLLAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '2' + ), + 'VALUE' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_TEXT_AND_DATA, + 'functionCall' => 'PHPExcel_Calculation_TextData::VALUE', + 'argumentCount' => '1' + ), + 'VAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::VARFunc', + 'argumentCount' => '1+' + ), + 'VARA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::VARA', + 'argumentCount' => '1+' + ), + 'VARP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::VARP', + 'argumentCount' => '1+' + ), + 'VARPA' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::VARPA', + 'argumentCount' => '1+' + ), + 'VDB' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '5-7' + ), + 'VERSION' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_INFORMATION, + 'functionCall' => 'PHPExcel_Calculation_Functions::VERSION', + 'argumentCount' => '0' + ), + 'VLOOKUP' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_LOOKUP_AND_REFERENCE, + 'functionCall' => 'PHPExcel_Calculation_LookupRef::VLOOKUP', + 'argumentCount' => '3,4' + ), + 'WEEKDAY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::DAYOFWEEK', + 'argumentCount' => '1,2' + ), + 'WEEKNUM' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::WEEKOFYEAR', + 'argumentCount' => '1,2' + ), + 'WEIBULL' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::WEIBULL', + 'argumentCount' => '4' + ), + 'WORKDAY' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::WORKDAY', + 'argumentCount' => '2+' + ), + 'XIRR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::XIRR', + 'argumentCount' => '2,3' + ), + 'XNPV' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::XNPV', + 'argumentCount' => '3' + ), + 'YEAR' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::YEAR', + 'argumentCount' => '1' + ), + 'YEARFRAC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_DATE_AND_TIME, + 'functionCall' => 'PHPExcel_Calculation_DateTime::YEARFRAC', + 'argumentCount' => '2,3' + ), + 'YIELD' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Functions::DUMMY', + 'argumentCount' => '6,7' + ), + 'YIELDDISC' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDDISC', + 'argumentCount' => '4,5' + ), + 'YIELDMAT' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_FINANCIAL, + 'functionCall' => 'PHPExcel_Calculation_Financial::YIELDMAT', + 'argumentCount' => '5,6' + ), + 'ZTEST' => array( + 'category' => PHPExcel_Calculation_Function::CATEGORY_STATISTICAL, + 'functionCall' => 'PHPExcel_Calculation_Statistical::ZTEST', + 'argumentCount' => '2-3' + ) + ); + + // Internal functions used for special control purposes + private static $controlFunctions = array( + 'MKMATRIX' => array( + 'argumentCount' => '*', + 'functionCall' => 'self::mkMatrix' + ) + ); + + + public function __construct(PHPExcel $workbook = null) + { + $this->delta = 1 * pow(10, 0 - ini_get('precision')); + + $this->workbook = $workbook; + $this->cyclicReferenceStack = new PHPExcel_CalcEngine_CyclicReferenceStack(); + $this->_debugLog = new PHPExcel_CalcEngine_Logger($this->cyclicReferenceStack); + } + + + private static function loadLocales() + { + $localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/'; + foreach (glob($localeFileDirectory.'/*', GLOB_ONLYDIR) as $filename) { + $filename = substr($filename, strlen($localeFileDirectory)+1); + if ($filename != 'en') { + self::$validLocaleLanguages[] = $filename; + } + } + } + + /** + * Get an instance of this class + * + * @access public + * @param PHPExcel $workbook Injected workbook for working with a PHPExcel object, + * or NULL to create a standalone claculation engine + * @return PHPExcel_Calculation + */ + public static function getInstance(PHPExcel $workbook = null) + { + if ($workbook !== null) { + $instance = $workbook->getCalculationEngine(); + if (isset($instance)) { + return $instance; + } + } + + if (!isset(self::$instance) || (self::$instance === null)) { + self::$instance = new PHPExcel_Calculation(); + } + return self::$instance; + } + + /** + * Unset an instance of this class + * + * @access public + */ + public function __destruct() + { + $this->workbook = null; + } + + /** + * Flush the calculation cache for any existing instance of this class + * but only if a PHPExcel_Calculation instance exists + * + * @access public + * @return null + */ + public function flushInstance() + { + $this->clearCalculationCache(); + } + + + /** + * Get the debuglog for this claculation engine instance + * + * @access public + * @return PHPExcel_CalcEngine_Logger + */ + public function getDebugLog() + { + return $this->_debugLog; + } + + /** + * __clone implementation. Cloning should not be allowed in a Singleton! + * + * @access public + * @throws PHPExcel_Calculation_Exception + */ + final public function __clone() + { + throw new PHPExcel_Calculation_Exception('Cloning the calculation engine is not allowed!'); + } + + + /** + * Return the locale-specific translation of TRUE + * + * @access public + * @return string locale-specific translation of TRUE + */ + public static function getTRUE() + { + return self::$localeBoolean['TRUE']; + } + + /** + * Return the locale-specific translation of FALSE + * + * @access public + * @return string locale-specific translation of FALSE + */ + public static function getFALSE() + { + return self::$localeBoolean['FALSE']; + } + + /** + * Set the Array Return Type (Array or Value of first element in the array) + * + * @access public + * @param string $returnType Array return type + * @return boolean Success or failure + */ + public static function setArrayReturnType($returnType) + { + if (($returnType == self::RETURN_ARRAY_AS_VALUE) || + ($returnType == self::RETURN_ARRAY_AS_ERROR) || + ($returnType == self::RETURN_ARRAY_AS_ARRAY)) { + self::$returnArrayAsType = $returnType; + return true; + } + return false; + } + + + /** + * Return the Array Return Type (Array or Value of first element in the array) + * + * @access public + * @return string $returnType Array return type + */ + public static function getArrayReturnType() + { + return self::$returnArrayAsType; + } + + + /** + * Is calculation caching enabled? + * + * @access public + * @return boolean + */ + public function getCalculationCacheEnabled() + { + return $this->calculationCacheEnabled; + } + + /** + * Enable/disable calculation cache + * + * @access public + * @param boolean $pValue + */ + public function setCalculationCacheEnabled($pValue = true) + { + $this->calculationCacheEnabled = $pValue; + $this->clearCalculationCache(); + } + + + /** + * Enable calculation cache + */ + public function enableCalculationCache() + { + $this->setCalculationCacheEnabled(true); + } + + + /** + * Disable calculation cache + */ + public function disableCalculationCache() + { + $this->setCalculationCacheEnabled(false); + } + + + /** + * Clear calculation cache + */ + public function clearCalculationCache() + { + $this->calculationCache = array(); + } + + /** + * Clear calculation cache for a specified worksheet + * + * @param string $worksheetName + */ + public function clearCalculationCacheForWorksheet($worksheetName) + { + if (isset($this->calculationCache[$worksheetName])) { + unset($this->calculationCache[$worksheetName]); + } + } + + /** + * Rename calculation cache for a specified worksheet + * + * @param string $fromWorksheetName + * @param string $toWorksheetName + */ + public function renameCalculationCacheForWorksheet($fromWorksheetName, $toWorksheetName) + { + if (isset($this->calculationCache[$fromWorksheetName])) { + $this->calculationCache[$toWorksheetName] = &$this->calculationCache[$fromWorksheetName]; + unset($this->calculationCache[$fromWorksheetName]); + } + } + + + /** + * Get the currently defined locale code + * + * @return string + */ + public function getLocale() + { + return self::$localeLanguage; + } + + + /** + * Set the locale code + * + * @param string $locale The locale to use for formula translation + * @return boolean + */ + public function setLocale($locale = 'en_us') + { + // Identify our locale and language + $language = $locale = strtolower($locale); + if (strpos($locale, '_') !== false) { + list($language) = explode('_', $locale); + } + + if (count(self::$validLocaleLanguages) == 1) { + self::loadLocales(); + } + // Test whether we have any language data for this language (any locale) + if (in_array($language, self::$validLocaleLanguages)) { + // initialise language/locale settings + self::$localeFunctions = array(); + self::$localeArgumentSeparator = ','; + self::$localeBoolean = array('TRUE' => 'TRUE', 'FALSE' => 'FALSE', 'NULL' => 'NULL'); + // Default is English, if user isn't requesting english, then read the necessary data from the locale files + if ($locale != 'en_us') { + // Search for a file with a list of function names for locale + $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $locale).DIRECTORY_SEPARATOR.'functions'; + if (!file_exists($functionNamesFile)) { + // If there isn't a locale specific function file, look for a language specific function file + $functionNamesFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'functions'; + if (!file_exists($functionNamesFile)) { + return false; + } + } + // Retrieve the list of locale or language specific function names + $localeFunctions = file($functionNamesFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + foreach ($localeFunctions as $localeFunction) { + list($localeFunction) = explode('##', $localeFunction); // Strip out comments + if (strpos($localeFunction, '=') !== false) { + list($fName, $lfName) = explode('=', $localeFunction); + $fName = trim($fName); + $lfName = trim($lfName); + if ((isset(self::$PHPExcelFunctions[$fName])) && ($lfName != '') && ($fName != $lfName)) { + self::$localeFunctions[$fName] = $lfName; + } + } + } + // Default the TRUE and FALSE constants to the locale names of the TRUE() and FALSE() functions + if (isset(self::$localeFunctions['TRUE'])) { + self::$localeBoolean['TRUE'] = self::$localeFunctions['TRUE']; + } + if (isset(self::$localeFunctions['FALSE'])) { + self::$localeBoolean['FALSE'] = self::$localeFunctions['FALSE']; + } + + $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $locale).DIRECTORY_SEPARATOR.'config'; + if (!file_exists($configFile)) { + $configFile = PHPEXCEL_ROOT . 'PHPExcel'.DIRECTORY_SEPARATOR.'locale'.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'config'; + } + if (file_exists($configFile)) { + $localeSettings = file($configFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + foreach ($localeSettings as $localeSetting) { + list($localeSetting) = explode('##', $localeSetting); // Strip out comments + if (strpos($localeSetting, '=') !== false) { + list($settingName, $settingValue) = explode('=', $localeSetting); + $settingName = strtoupper(trim($settingName)); + switch ($settingName) { + case 'ARGUMENTSEPARATOR': + self::$localeArgumentSeparator = trim($settingValue); + break; + } + } + } + } + } + + self::$functionReplaceFromExcel = self::$functionReplaceToExcel = + self::$functionReplaceFromLocale = self::$functionReplaceToLocale = null; + self::$localeLanguage = $locale; + return true; + } + return false; + } + + + + public static function translateSeparator($fromSeparator, $toSeparator, $formula, &$inBraces) + { + $strlen = mb_strlen($formula); + for ($i = 0; $i < $strlen; ++$i) { + $chr = mb_substr($formula, $i, 1); + switch ($chr) { + case '{': + $inBraces = true; + break; + case '}': + $inBraces = false; + break; + case $fromSeparator: + if (!$inBraces) { + $formula = mb_substr($formula, 0, $i).$toSeparator.mb_substr($formula, $i+1); + } + } + } + return $formula; + } + + private static function translateFormula($from, $to, $formula, $fromSeparator, $toSeparator) + { + // Convert any Excel function names to the required language + if (self::$localeLanguage !== 'en_us') { + $inBraces = false; + // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators + if (strpos($formula, '"') !== false) { + // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded + // the formula + $temp = explode('"', $formula); + $i = false; + foreach ($temp as &$value) { + // Only count/replace in alternating array entries + if ($i = !$i) { + $value = preg_replace($from, $to, $value); + $value = self::translateSeparator($fromSeparator, $toSeparator, $value, $inBraces); + } + } + unset($value); + // Then rebuild the formula string + $formula = implode('"', $temp); + } else { + // If there's no quoted strings, then we do a simple count/replace + $formula = preg_replace($from, $to, $formula); + $formula = self::translateSeparator($fromSeparator, $toSeparator, $formula, $inBraces); + } + } + + return $formula; + } + + private static $functionReplaceFromExcel = null; + private static $functionReplaceToLocale = null; + + public function _translateFormulaToLocale($formula) + { + if (self::$functionReplaceFromExcel === null) { + self::$functionReplaceFromExcel = array(); + foreach (array_keys(self::$localeFunctions) as $excelFunctionName) { + self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelFunctionName).'([\s]*\()/Ui'; + } + foreach (array_keys(self::$localeBoolean) as $excelBoolean) { + self::$functionReplaceFromExcel[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui'; + } + + } + + if (self::$functionReplaceToLocale === null) { + self::$functionReplaceToLocale = array(); + foreach (array_values(self::$localeFunctions) as $localeFunctionName) { + self::$functionReplaceToLocale[] = '$1'.trim($localeFunctionName).'$2'; + } + foreach (array_values(self::$localeBoolean) as $localeBoolean) { + self::$functionReplaceToLocale[] = '$1'.trim($localeBoolean).'$2'; + } + } + + return self::translateFormula(self::$functionReplaceFromExcel, self::$functionReplaceToLocale, $formula, ',', self::$localeArgumentSeparator); + } + + + private static $functionReplaceFromLocale = null; + private static $functionReplaceToExcel = null; + + public function _translateFormulaToEnglish($formula) + { + if (self::$functionReplaceFromLocale === null) { + self::$functionReplaceFromLocale = array(); + foreach (array_values(self::$localeFunctions) as $localeFunctionName) { + self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($localeFunctionName).'([\s]*\()/Ui'; + } + foreach (array_values(self::$localeBoolean) as $excelBoolean) { + self::$functionReplaceFromLocale[] = '/(@?[^\w\.])'.preg_quote($excelBoolean).'([^\w\.])/Ui'; + } + } + + if (self::$functionReplaceToExcel === null) { + self::$functionReplaceToExcel = array(); + foreach (array_keys(self::$localeFunctions) as $excelFunctionName) { + self::$functionReplaceToExcel[] = '$1'.trim($excelFunctionName).'$2'; + } + foreach (array_keys(self::$localeBoolean) as $excelBoolean) { + self::$functionReplaceToExcel[] = '$1'.trim($excelBoolean).'$2'; + } + } + + return self::translateFormula(self::$functionReplaceFromLocale, self::$functionReplaceToExcel, $formula, self::$localeArgumentSeparator, ','); + } + + + public static function localeFunc($function) + { + if (self::$localeLanguage !== 'en_us') { + $functionName = trim($function, '('); + if (isset(self::$localeFunctions[$functionName])) { + $brace = ($functionName != $function); + $function = self::$localeFunctions[$functionName]; + if ($brace) { + $function .= '('; + } + } + } + return $function; + } + + + + + /** + * Wrap string values in quotes + * + * @param mixed $value + * @return mixed + */ + public static function wrapResult($value) + { + if (is_string($value)) { + // Error values cannot be "wrapped" + if (preg_match('/^'.self::CALCULATION_REGEXP_ERROR.'$/i', $value, $match)) { + // Return Excel errors "as is" + return $value; + } + // Return strings wrapped in quotes + return '"'.$value.'"'; + // Convert numeric errors to NaN error + } elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return $value; + } + + + /** + * Remove quotes used as a wrapper to identify string values + * + * @param mixed $value + * @return mixed + */ + public static function unwrapResult($value) + { + if (is_string($value)) { + if ((isset($value{0})) && ($value{0} == '"') && (substr($value, -1) == '"')) { + return substr($value, 1, -1); + } + // Convert numeric errors to NaN error + } elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) { + return PHPExcel_Calculation_Functions::NaN(); + } + return $value; + } + + + + + /** + * Calculate cell value (using formula from a cell ID) + * Retained for backward compatibility + * + * @access public + * @param PHPExcel_Cell $pCell Cell to calculate + * @return mixed + * @throws PHPExcel_Calculation_Exception + */ + public function calculate(PHPExcel_Cell $pCell = null) + { + try { + return $this->calculateCellValue($pCell); + } catch (PHPExcel_Exception $e) { + throw new PHPExcel_Calculation_Exception($e->getMessage()); + } + } + + + /** + * Calculate the value of a cell formula + * + * @access public + * @param PHPExcel_Cell $pCell Cell to calculate + * @param Boolean $resetLog Flag indicating whether the debug log should be reset or not + * @return mixed + * @throws PHPExcel_Calculation_Exception + */ + public function calculateCellValue(PHPExcel_Cell $pCell = null, $resetLog = true) + { + if ($pCell === null) { + return null; + } + + $returnArrayAsType = self::$returnArrayAsType; + if ($resetLog) { + // Initialise the logging settings if requested + $this->formulaError = null; + $this->_debugLog->clearLog(); + $this->cyclicReferenceStack->clear(); + $this->cyclicFormulaCounter = 1; + + self::$returnArrayAsType = self::RETURN_ARRAY_AS_ARRAY; + } + + // Execute the calculation for the cell formula + $this->cellStack[] = array( + 'sheet' => $pCell->getWorksheet()->getTitle(), + 'cell' => $pCell->getCoordinate(), + ); + try { + $result = self::unwrapResult($this->_calculateFormulaValue($pCell->getValue(), $pCell->getCoordinate(), $pCell)); + $cellAddress = array_pop($this->cellStack); + $this->workbook->getSheetByName($cellAddress['sheet'])->getCell($cellAddress['cell']); + } catch (PHPExcel_Exception $e) { + $cellAddress = array_pop($this->cellStack); + $this->workbook->getSheetByName($cellAddress['sheet'])->getCell($cellAddress['cell']); + throw new PHPExcel_Calculation_Exception($e->getMessage()); + } + + if ((is_array($result)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) { + self::$returnArrayAsType = $returnArrayAsType; + $testResult = PHPExcel_Calculation_Functions::flattenArray($result); + if (self::$returnArrayAsType == self::RETURN_ARRAY_AS_ERROR) { + return PHPExcel_Calculation_Functions::VALUE(); + } + // If there's only a single cell in the array, then we allow it + if (count($testResult) != 1) { + // If keys are numeric, then it's a matrix result rather than a cell range result, so we permit it + $r = array_keys($result); + $r = array_shift($r); + if (!is_numeric($r)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_array($result[$r])) { + $c = array_keys($result[$r]); + $c = array_shift($c); + if (!is_numeric($c)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + } + $result = array_shift($testResult); + } + self::$returnArrayAsType = $returnArrayAsType; + + + if ($result === null) { + return 0; + } elseif ((is_float($result)) && ((is_nan($result)) || (is_infinite($result)))) { + return PHPExcel_Calculation_Functions::NaN(); + } + return $result; + } + + + /** + * Validate and parse a formula string + * + * @param string $formula Formula to parse + * @return array + * @throws PHPExcel_Calculation_Exception + */ + public function parseFormula($formula) + { + // Basic validation that this is indeed a formula + // We return an empty array if not + $formula = trim($formula); + if ((!isset($formula{0})) || ($formula{0} != '=')) { + return array(); + } + $formula = ltrim(substr($formula, 1)); + if (!isset($formula{0})) { + return array(); + } + + // Parse the formula and return the token stack + return $this->_parseFormula($formula); + } + + + /** + * Calculate the value of a formula + * + * @param string $formula Formula to parse + * @param string $cellID Address of the cell to calculate + * @param PHPExcel_Cell $pCell Cell to calculate + * @return mixed + * @throws PHPExcel_Calculation_Exception + */ + public function calculateFormula($formula, $cellID = null, PHPExcel_Cell $pCell = null) + { + // Initialise the logging settings + $this->formulaError = null; + $this->_debugLog->clearLog(); + $this->cyclicReferenceStack->clear(); + + if ($this->workbook !== null && $cellID === null && $pCell === null) { + $cellID = 'A1'; + $pCell = $this->workbook->getActiveSheet()->getCell($cellID); + } else { + // Disable calculation cacheing because it only applies to cell calculations, not straight formulae + // But don't actually flush any cache + $resetCache = $this->getCalculationCacheEnabled(); + $this->calculationCacheEnabled = false; + } + + // Execute the calculation + try { + $result = self::unwrapResult($this->_calculateFormulaValue($formula, $cellID, $pCell)); + } catch (PHPExcel_Exception $e) { + throw new PHPExcel_Calculation_Exception($e->getMessage()); + } + + if ($this->workbook === null) { + // Reset calculation cacheing to its previous state + $this->calculationCacheEnabled = $resetCache; + } + + return $result; + } + + + public function getValueFromCache($cellReference, &$cellValue) + { + // Is calculation cacheing enabled? + // Is the value present in calculation cache? + $this->_debugLog->writeDebugLog('Testing cache value for cell ', $cellReference); + if (($this->calculationCacheEnabled) && (isset($this->calculationCache[$cellReference]))) { + $this->_debugLog->writeDebugLog('Retrieving value for cell ', $cellReference, ' from cache'); + // Return the cached result + $cellValue = $this->calculationCache[$cellReference]; + return true; + } + return false; + } + + public function saveValueToCache($cellReference, $cellValue) + { + if ($this->calculationCacheEnabled) { + $this->calculationCache[$cellReference] = $cellValue; + } + } + + /** + * Parse a cell formula and calculate its value + * + * @param string $formula The formula to parse and calculate + * @param string $cellID The ID (e.g. A3) of the cell that we are calculating + * @param PHPExcel_Cell $pCell Cell to calculate + * @return mixed + * @throws PHPExcel_Calculation_Exception + */ + public function _calculateFormulaValue($formula, $cellID = null, PHPExcel_Cell $pCell = null) + { + $cellValue = null; + + // Basic validation that this is indeed a formula + // We simply return the cell value if not + $formula = trim($formula); + if ($formula{0} != '=') { + return self::wrapResult($formula); + } + $formula = ltrim(substr($formula, 1)); + if (!isset($formula{0})) { + return self::wrapResult($formula); + } + + $pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null; + $wsTitle = ($pCellParent !== null) ? $pCellParent->getTitle() : "\x00Wrk"; + $wsCellReference = $wsTitle . '!' . $cellID; + + if (($cellID !== null) && ($this->getValueFromCache($wsCellReference, $cellValue))) { + return $cellValue; + } + + if (($wsTitle{0} !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) { + if ($this->cyclicFormulaCount <= 0) { + $this->cyclicFormulaCell = ''; + return $this->raiseFormulaError('Cyclic Reference in Formula'); + } elseif ($this->cyclicFormulaCell === $wsCellReference) { + ++$this->cyclicFormulaCounter; + if ($this->cyclicFormulaCounter >= $this->cyclicFormulaCount) { + $this->cyclicFormulaCell = ''; + return $cellValue; + } + } elseif ($this->cyclicFormulaCell == '') { + if ($this->cyclicFormulaCounter >= $this->cyclicFormulaCount) { + return $cellValue; + } + $this->cyclicFormulaCell = $wsCellReference; + } + } + + // Parse the formula onto the token stack and calculate the value + $this->cyclicReferenceStack->push($wsCellReference); + $cellValue = $this->processTokenStack($this->_parseFormula($formula, $pCell), $cellID, $pCell); + $this->cyclicReferenceStack->pop(); + + // Save to calculation cache + if ($cellID !== null) { + $this->saveValueToCache($wsCellReference, $cellValue); + } + + // Return the calculated value + return $cellValue; + } + + + /** + * Ensure that paired matrix operands are both matrices and of the same size + * + * @param mixed &$operand1 First matrix operand + * @param mixed &$operand2 Second matrix operand + * @param integer $resize Flag indicating whether the matrices should be resized to match + * and (if so), whether the smaller dimension should grow or the + * larger should shrink. + * 0 = no resize + * 1 = shrink to fit + * 2 = extend to fit + */ + private static function checkMatrixOperands(&$operand1, &$operand2, $resize = 1) + { + // Examine each of the two operands, and turn them into an array if they aren't one already + // Note that this function should only be called if one or both of the operand is already an array + if (!is_array($operand1)) { + list($matrixRows, $matrixColumns) = self::getMatrixDimensions($operand2); + $operand1 = array_fill(0, $matrixRows, array_fill(0, $matrixColumns, $operand1)); + $resize = 0; + } elseif (!is_array($operand2)) { + list($matrixRows, $matrixColumns) = self::getMatrixDimensions($operand1); + $operand2 = array_fill(0, $matrixRows, array_fill(0, $matrixColumns, $operand2)); + $resize = 0; + } + + list($matrix1Rows, $matrix1Columns) = self::getMatrixDimensions($operand1); + list($matrix2Rows, $matrix2Columns) = self::getMatrixDimensions($operand2); + if (($matrix1Rows == $matrix2Columns) && ($matrix2Rows == $matrix1Columns)) { + $resize = 1; + } + + if ($resize == 2) { + // Given two matrices of (potentially) unequal size, convert the smaller in each dimension to match the larger + self::resizeMatricesExtend($operand1, $operand2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); + } elseif ($resize == 1) { + // Given two matrices of (potentially) unequal size, convert the larger in each dimension to match the smaller + self::resizeMatricesShrink($operand1, $operand2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); + } + return array( $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns); + } + + + /** + * Read the dimensions of a matrix, and re-index it with straight numeric keys starting from row 0, column 0 + * + * @param mixed &$matrix matrix operand + * @return array An array comprising the number of rows, and number of columns + */ + private static function getMatrixDimensions(&$matrix) + { + $matrixRows = count($matrix); + $matrixColumns = 0; + foreach ($matrix as $rowKey => $rowValue) { + $matrixColumns = max(count($rowValue), $matrixColumns); + if (!is_array($rowValue)) { + $matrix[$rowKey] = array($rowValue); + } else { + $matrix[$rowKey] = array_values($rowValue); + } + } + $matrix = array_values($matrix); + return array($matrixRows, $matrixColumns); + } + + + /** + * Ensure that paired matrix operands are both matrices of the same size + * + * @param mixed &$matrix1 First matrix operand + * @param mixed &$matrix2 Second matrix operand + * @param integer $matrix1Rows Row size of first matrix operand + * @param integer $matrix1Columns Column size of first matrix operand + * @param integer $matrix2Rows Row size of second matrix operand + * @param integer $matrix2Columns Column size of second matrix operand + */ + private static function resizeMatricesShrink(&$matrix1, &$matrix2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns) + { + if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) { + if ($matrix2Rows < $matrix1Rows) { + for ($i = $matrix2Rows; $i < $matrix1Rows; ++$i) { + unset($matrix1[$i]); + } + } + if ($matrix2Columns < $matrix1Columns) { + for ($i = 0; $i < $matrix1Rows; ++$i) { + for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) { + unset($matrix1[$i][$j]); + } + } + } + } + + if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) { + if ($matrix1Rows < $matrix2Rows) { + for ($i = $matrix1Rows; $i < $matrix2Rows; ++$i) { + unset($matrix2[$i]); + } + } + if ($matrix1Columns < $matrix2Columns) { + for ($i = 0; $i < $matrix2Rows; ++$i) { + for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) { + unset($matrix2[$i][$j]); + } + } + } + } + } + + + /** + * Ensure that paired matrix operands are both matrices of the same size + * + * @param mixed &$matrix1 First matrix operand + * @param mixed &$matrix2 Second matrix operand + * @param integer $matrix1Rows Row size of first matrix operand + * @param integer $matrix1Columns Column size of first matrix operand + * @param integer $matrix2Rows Row size of second matrix operand + * @param integer $matrix2Columns Column size of second matrix operand + */ + private static function resizeMatricesExtend(&$matrix1, &$matrix2, $matrix1Rows, $matrix1Columns, $matrix2Rows, $matrix2Columns) + { + if (($matrix2Columns < $matrix1Columns) || ($matrix2Rows < $matrix1Rows)) { + if ($matrix2Columns < $matrix1Columns) { + for ($i = 0; $i < $matrix2Rows; ++$i) { + $x = $matrix2[$i][$matrix2Columns-1]; + for ($j = $matrix2Columns; $j < $matrix1Columns; ++$j) { + $matrix2[$i][$j] = $x; + } + } + } + if ($matrix2Rows < $matrix1Rows) { + $x = $matrix2[$matrix2Rows-1]; + for ($i = 0; $i < $matrix1Rows; ++$i) { + $matrix2[$i] = $x; + } + } + } + + if (($matrix1Columns < $matrix2Columns) || ($matrix1Rows < $matrix2Rows)) { + if ($matrix1Columns < $matrix2Columns) { + for ($i = 0; $i < $matrix1Rows; ++$i) { + $x = $matrix1[$i][$matrix1Columns-1]; + for ($j = $matrix1Columns; $j < $matrix2Columns; ++$j) { + $matrix1[$i][$j] = $x; + } + } + } + if ($matrix1Rows < $matrix2Rows) { + $x = $matrix1[$matrix1Rows-1]; + for ($i = 0; $i < $matrix2Rows; ++$i) { + $matrix1[$i] = $x; + } + } + } + } + + + /** + * Format details of an operand for display in the log (based on operand type) + * + * @param mixed $value First matrix operand + * @return mixed + */ + private function showValue($value) + { + if ($this->_debugLog->getWriteDebugLog()) { + $testArray = PHPExcel_Calculation_Functions::flattenArray($value); + if (count($testArray) == 1) { + $value = array_pop($testArray); + } + + if (is_array($value)) { + $returnMatrix = array(); + $pad = $rpad = ', '; + foreach ($value as $row) { + if (is_array($row)) { + $returnMatrix[] = implode($pad, array_map(array($this, 'showValue'), $row)); + $rpad = '; '; + } else { + $returnMatrix[] = $this->showValue($row); + } + } + return '{ '.implode($rpad, $returnMatrix).' }'; + } elseif (is_string($value) && (trim($value, '"') == $value)) { + return '"'.$value.'"'; + } elseif (is_bool($value)) { + return ($value) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; + } + } + return PHPExcel_Calculation_Functions::flattenSingleValue($value); + } + + + /** + * Format type and details of an operand for display in the log (based on operand type) + * + * @param mixed $value First matrix operand + * @return mixed + */ + private function showTypeDetails($value) + { + if ($this->_debugLog->getWriteDebugLog()) { + $testArray = PHPExcel_Calculation_Functions::flattenArray($value); + if (count($testArray) == 1) { + $value = array_pop($testArray); + } + + if ($value === null) { + return 'a NULL value'; + } elseif (is_float($value)) { + $typeString = 'a floating point number'; + } elseif (is_int($value)) { + $typeString = 'an integer number'; + } elseif (is_bool($value)) { + $typeString = 'a boolean'; + } elseif (is_array($value)) { + $typeString = 'a matrix'; + } else { + if ($value == '') { + return 'an empty string'; + } elseif ($value{0} == '#') { + return 'a '.$value.' error'; + } else { + $typeString = 'a string'; + } + } + return $typeString.' with a value of '.$this->showValue($value); + } + } + + + private function convertMatrixReferences($formula) + { + static $matrixReplaceFrom = array('{', ';', '}'); + static $matrixReplaceTo = array('MKMATRIX(MKMATRIX(', '),MKMATRIX(', '))'); + + // Convert any Excel matrix references to the MKMATRIX() function + if (strpos($formula, '{') !== false) { + // If there is the possibility of braces within a quoted string, then we don't treat those as matrix indicators + if (strpos($formula, '"') !== false) { + // So instead we skip replacing in any quoted strings by only replacing in every other array element after we've exploded + // the formula + $temp = explode('"', $formula); + // Open and Closed counts used for trapping mismatched braces in the formula + $openCount = $closeCount = 0; + $i = false; + foreach ($temp as &$value) { + // Only count/replace in alternating array entries + if ($i = !$i) { + $openCount += substr_count($value, '{'); + $closeCount += substr_count($value, '}'); + $value = str_replace($matrixReplaceFrom, $matrixReplaceTo, $value); + } + } + unset($value); + // Then rebuild the formula string + $formula = implode('"', $temp); + } else { + // If there's no quoted strings, then we do a simple count/replace + $openCount = substr_count($formula, '{'); + $closeCount = substr_count($formula, '}'); + $formula = str_replace($matrixReplaceFrom, $matrixReplaceTo, $formula); + } + // Trap for mismatched braces and trigger an appropriate error + if ($openCount < $closeCount) { + if ($openCount > 0) { + return $this->raiseFormulaError("Formula Error: Mismatched matrix braces '}'"); + } else { + return $this->raiseFormulaError("Formula Error: Unexpected '}' encountered"); + } + } elseif ($openCount > $closeCount) { + if ($closeCount > 0) { + return $this->raiseFormulaError("Formula Error: Mismatched matrix braces '{'"); + } else { + return $this->raiseFormulaError("Formula Error: Unexpected '{' encountered"); + } + } + } + + return $formula; + } + + + private static function mkMatrix() + { + return func_get_args(); + } + + + // Binary Operators + // These operators always work on two values + // Array key is the operator, the value indicates whether this is a left or right associative operator + private static $operatorAssociativity = array( + '^' => 0, // Exponentiation + '*' => 0, '/' => 0, // Multiplication and Division + '+' => 0, '-' => 0, // Addition and Subtraction + '&' => 0, // Concatenation + '|' => 0, ':' => 0, // Intersect and Range + '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison + ); + + // Comparison (Boolean) Operators + // These operators work on two values, but always return a boolean result + private static $comparisonOperators = array('>' => true, '<' => true, '=' => true, '>=' => true, '<=' => true, '<>' => true); + + // Operator Precedence + // This list includes all valid operators, whether binary (including boolean) or unary (such as %) + // Array key is the operator, the value is its precedence + private static $operatorPrecedence = array( + ':' => 8, // Range + '|' => 7, // Intersect + '~' => 6, // Negation + '%' => 5, // Percentage + '^' => 4, // Exponentiation + '*' => 3, '/' => 3, // Multiplication and Division + '+' => 2, '-' => 2, // Addition and Subtraction + '&' => 1, // Concatenation + '>' => 0, '<' => 0, '=' => 0, '>=' => 0, '<=' => 0, '<>' => 0 // Comparison + ); + + // Convert infix to postfix notation + private function _parseFormula($formula, PHPExcel_Cell $pCell = null) + { + if (($formula = $this->convertMatrixReferences(trim($formula))) === false) { + return false; + } + + // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent worksheet), + // so we store the parent worksheet so that we can re-attach it when necessary + $pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null; + + $regexpMatchString = '/^('.self::CALCULATION_REGEXP_FUNCTION. + '|'.self::CALCULATION_REGEXP_CELLREF. + '|'.self::CALCULATION_REGEXP_NUMBER. + '|'.self::CALCULATION_REGEXP_STRING. + '|'.self::CALCULATION_REGEXP_OPENBRACE. + '|'.self::CALCULATION_REGEXP_NAMEDRANGE. + '|'.self::CALCULATION_REGEXP_ERROR. + ')/si'; + + // Start with initialisation + $index = 0; + $stack = new PHPExcel_Calculation_Token_Stack; + $output = array(); + $expectingOperator = false; // We use this test in syntax-checking the expression to determine when a + // - is a negation or + is a positive operator rather than an operation + $expectingOperand = false; // We use this test in syntax-checking the expression to determine whether an operand + // should be null in a function call + // The guts of the lexical parser + // Loop through the formula extracting each operator and operand in turn + while (true) { +//echo 'Assessing Expression '.substr($formula, $index), PHP_EOL; + $opCharacter = $formula{$index}; // Get the first character of the value at the current index position +//echo 'Initial character of expression block is '.$opCharacter, PHP_EOL; + if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula{$index+1}]))) { + $opCharacter .= $formula{++$index}; +//echo 'Initial character of expression block is comparison operator '.$opCharacter.PHP_EOL; + } + + // Find out if we're currently at the beginning of a number, variable, cell reference, function, parenthesis or operand + $isOperandOrFunction = preg_match($regexpMatchString, substr($formula, $index), $match); +//echo '$isOperandOrFunction is '.(($isOperandOrFunction) ? 'True' : 'False').PHP_EOL; +//var_dump($match); + + if ($opCharacter == '-' && !$expectingOperator) { // Is it a negation instead of a minus? +//echo 'Element is a Negation operator', PHP_EOL; + $stack->push('Unary Operator', '~'); // Put a negation on the stack + ++$index; // and drop the negation symbol + } elseif ($opCharacter == '%' && $expectingOperator) { +//echo 'Element is a Percentage operator', PHP_EOL; + $stack->push('Unary Operator', '%'); // Put a percentage on the stack + ++$index; + } elseif ($opCharacter == '+' && !$expectingOperator) { // Positive (unary plus rather than binary operator plus) can be discarded? +//echo 'Element is a Positive number, not Plus operator', PHP_EOL; + ++$index; // Drop the redundant plus symbol + } elseif ((($opCharacter == '~') || ($opCharacter == '|')) && (!$isOperandOrFunction)) { // We have to explicitly deny a tilde or pipe, because they are legal + return $this->raiseFormulaError("Formula Error: Illegal character '~'"); // on the stack but not in the input expression + + } elseif ((isset(self::$operators[$opCharacter]) or $isOperandOrFunction) && $expectingOperator) { // Are we putting an operator on the stack? +//echo 'Element with value '.$opCharacter.' is an Operator', PHP_EOL; + while ($stack->count() > 0 && + ($o2 = $stack->last()) && + isset(self::$operators[$o2['value']]) && + @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { + $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output + } + $stack->push('Binary Operator', $opCharacter); // Finally put our current operator onto the stack + ++$index; + $expectingOperator = false; + + } elseif ($opCharacter == ')' && $expectingOperator) { // Are we expecting to close a parenthesis? +//echo 'Element is a Closing bracket', PHP_EOL; + $expectingOperand = false; + while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last ( + if ($o2 === null) { + return $this->raiseFormulaError('Formula Error: Unexpected closing brace ")"'); + } else { + $output[] = $o2; + } + } + $d = $stack->last(2); + if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches)) { // Did this parenthesis just close a function? + $functionName = $matches[1]; // Get the function name +//echo 'Closed Function is '.$functionName, PHP_EOL; + $d = $stack->pop(); + $argumentCount = $d['value']; // See how many arguments there were (argument count is the next value stored on the stack) +//if ($argumentCount == 0) { +// echo 'With no arguments', PHP_EOL; +//} elseif ($argumentCount == 1) { +// echo 'With 1 argument', PHP_EOL; +//} else { +// echo 'With '.$argumentCount.' arguments', PHP_EOL; +//} + $output[] = $d; // Dump the argument count on the output + $output[] = $stack->pop(); // Pop the function and push onto the output + if (isset(self::$controlFunctions[$functionName])) { +//echo 'Built-in function '.$functionName, PHP_EOL; + $expectedArgumentCount = self::$controlFunctions[$functionName]['argumentCount']; + $functionCall = self::$controlFunctions[$functionName]['functionCall']; + } elseif (isset(self::$PHPExcelFunctions[$functionName])) { +//echo 'PHPExcel function '.$functionName, PHP_EOL; + $expectedArgumentCount = self::$PHPExcelFunctions[$functionName]['argumentCount']; + $functionCall = self::$PHPExcelFunctions[$functionName]['functionCall']; + } else { // did we somehow push a non-function on the stack? this should never happen + return $this->raiseFormulaError("Formula Error: Internal error, non-function on stack"); + } + // Check the argument count + $argumentCountError = false; + if (is_numeric($expectedArgumentCount)) { + if ($expectedArgumentCount < 0) { +//echo '$expectedArgumentCount is between 0 and '.abs($expectedArgumentCount), PHP_EOL; + if ($argumentCount > abs($expectedArgumentCount)) { + $argumentCountError = true; + $expectedArgumentCountString = 'no more than '.abs($expectedArgumentCount); + } + } else { +//echo '$expectedArgumentCount is numeric '.$expectedArgumentCount, PHP_EOL; + if ($argumentCount != $expectedArgumentCount) { + $argumentCountError = true; + $expectedArgumentCountString = $expectedArgumentCount; + } + } + } elseif ($expectedArgumentCount != '*') { + $isOperandOrFunction = preg_match('/(\d*)([-+,])(\d*)/', $expectedArgumentCount, $argMatch); +//print_r($argMatch); +//echo PHP_EOL; + switch ($argMatch[2]) { + case '+': + if ($argumentCount < $argMatch[1]) { + $argumentCountError = true; + $expectedArgumentCountString = $argMatch[1].' or more '; + } + break; + case '-': + if (($argumentCount < $argMatch[1]) || ($argumentCount > $argMatch[3])) { + $argumentCountError = true; + $expectedArgumentCountString = 'between '.$argMatch[1].' and '.$argMatch[3]; + } + break; + case ',': + if (($argumentCount != $argMatch[1]) && ($argumentCount != $argMatch[3])) { + $argumentCountError = true; + $expectedArgumentCountString = 'either '.$argMatch[1].' or '.$argMatch[3]; + } + break; + } + } + if ($argumentCountError) { + return $this->raiseFormulaError("Formula Error: Wrong number of arguments for $functionName() function: $argumentCount given, ".$expectedArgumentCountString." expected"); + } + } + ++$index; + + } elseif ($opCharacter == ',') { // Is this the separator for function arguments? +//echo 'Element is a Function argument separator', PHP_EOL; + while (($o2 = $stack->pop()) && $o2['value'] != '(') { // Pop off the stack back to the last ( + if ($o2 === null) { + return $this->raiseFormulaError("Formula Error: Unexpected ,"); + } else { + $output[] = $o2; // pop the argument expression stuff and push onto the output + } + } + // If we've a comma when we're expecting an operand, then what we actually have is a null operand; + // so push a null onto the stack + if (($expectingOperand) || (!$expectingOperator)) { + $output[] = array('type' => 'NULL Value', 'value' => self::$excelConstants['NULL'], 'reference' => null); + } + // make sure there was a function + $d = $stack->last(2); + if (!preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $d['value'], $matches)) { + return $this->raiseFormulaError("Formula Error: Unexpected ,"); + } + $d = $stack->pop(); + $stack->push($d['type'], ++$d['value'], $d['reference']); // increment the argument count + $stack->push('Brace', '('); // put the ( back on, we'll need to pop back to it again + $expectingOperator = false; + $expectingOperand = true; + ++$index; + + } elseif ($opCharacter == '(' && !$expectingOperator) { +// echo 'Element is an Opening Bracket
      '; + $stack->push('Brace', '('); + ++$index; + + } elseif ($isOperandOrFunction && !$expectingOperator) { // do we now have a function/variable/number? + $expectingOperator = true; + $expectingOperand = false; + $val = $match[1]; + $length = strlen($val); +// echo 'Element with value '.$val.' is an Operand, Variable, Constant, String, Number, Cell Reference or Function
      '; + + if (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $val, $matches)) { + $val = preg_replace('/\s/u', '', $val); +// echo 'Element '.$val.' is a Function
      '; + if (isset(self::$PHPExcelFunctions[strtoupper($matches[1])]) || isset(self::$controlFunctions[strtoupper($matches[1])])) { // it's a function + $stack->push('Function', strtoupper($val)); + $ax = preg_match('/^\s*(\s*\))/ui', substr($formula, $index+$length), $amatch); + if ($ax) { + $stack->push('Operand Count for Function '.strtoupper($val).')', 0); + $expectingOperator = true; + } else { + $stack->push('Operand Count for Function '.strtoupper($val).')', 1); + $expectingOperator = false; + } + $stack->push('Brace', '('); + } else { // it's a var w/ implicit multiplication + $output[] = array('type' => 'Value', 'value' => $matches[1], 'reference' => null); + } + } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $val, $matches)) { +// echo 'Element '.$val.' is a Cell reference
      '; + // Watch for this case-change when modifying to allow cell references in different worksheets... + // Should only be applied to the actual cell column, not the worksheet name + + // If the last entry on the stack was a : operator, then we have a cell range reference + $testPrevOp = $stack->last(1); + if ($testPrevOp['value'] == ':') { + // If we have a worksheet reference, then we're playing with a 3D reference + if ($matches[2] == '') { + // Otherwise, we 'inherit' the worksheet reference from the start cell reference + // The start of the cell range reference should be the last entry in $output + $startCellRef = $output[count($output)-1]['value']; + preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $startCellRef, $startMatches); + if ($startMatches[2] > '') { + $val = $startMatches[2].'!'.$val; + } + } else { + return $this->raiseFormulaError("3D Range references are not yet supported"); + } + } + + $output[] = array('type' => 'Cell Reference', 'value' => $val, 'reference' => $val); +// $expectingOperator = FALSE; + } else { // it's a variable, constant, string, number or boolean +// echo 'Element is a Variable, Constant, String, Number or Boolean
      '; + // If the last entry on the stack was a : operator, then we may have a row or column range reference + $testPrevOp = $stack->last(1); + if ($testPrevOp['value'] == ':') { + $startRowColRef = $output[count($output)-1]['value']; + $rangeWS1 = ''; + if (strpos('!', $startRowColRef) !== false) { + list($rangeWS1, $startRowColRef) = explode('!', $startRowColRef); + } + if ($rangeWS1 != '') { + $rangeWS1 .= '!'; + } + $rangeWS2 = $rangeWS1; + if (strpos('!', $val) !== false) { + list($rangeWS2, $val) = explode('!', $val); + } + if ($rangeWS2 != '') { + $rangeWS2 .= '!'; + } + if ((is_integer($startRowColRef)) && (ctype_digit($val)) && + ($startRowColRef <= 1048576) && ($val <= 1048576)) { + // Row range + $endRowColRef = ($pCellParent !== null) ? $pCellParent->getHighestColumn() : 'XFD'; // Max 16,384 columns for Excel2007 + $output[count($output)-1]['value'] = $rangeWS1.'A'.$startRowColRef; + $val = $rangeWS2.$endRowColRef.$val; + } elseif ((ctype_alpha($startRowColRef)) && (ctype_alpha($val)) && + (strlen($startRowColRef) <= 3) && (strlen($val) <= 3)) { + // Column range + $endRowColRef = ($pCellParent !== null) ? $pCellParent->getHighestRow() : 1048576; // Max 1,048,576 rows for Excel2007 + $output[count($output)-1]['value'] = $rangeWS1.strtoupper($startRowColRef).'1'; + $val = $rangeWS2.$val.$endRowColRef; + } + } + + $localeConstant = false; + if ($opCharacter == '"') { +// echo 'Element is a String
      '; + // UnEscape any quotes within the string + $val = self::wrapResult(str_replace('""', '"', self::unwrapResult($val))); + } elseif (is_numeric($val)) { +// echo 'Element is a Number
      '; + if ((strpos($val, '.') !== false) || (stripos($val, 'e') !== false) || ($val > PHP_INT_MAX) || ($val < -PHP_INT_MAX)) { +// echo 'Casting '.$val.' to float
      '; + $val = (float) $val; + } else { +// echo 'Casting '.$val.' to integer
      '; + $val = (integer) $val; + } + } elseif (isset(self::$excelConstants[trim(strtoupper($val))])) { + $excelConstant = trim(strtoupper($val)); +// echo 'Element '.$excelConstant.' is an Excel Constant
      '; + $val = self::$excelConstants[$excelConstant]; + } elseif (($localeConstant = array_search(trim(strtoupper($val)), self::$localeBoolean)) !== false) { +// echo 'Element '.$localeConstant.' is an Excel Constant
      '; + $val = self::$excelConstants[$localeConstant]; + } + $details = array('type' => 'Value', 'value' => $val, 'reference' => null); + if ($localeConstant) { + $details['localeValue'] = $localeConstant; + } + $output[] = $details; + } + $index += $length; + + } elseif ($opCharacter == '$') { // absolute row or column range + ++$index; + } elseif ($opCharacter == ')') { // miscellaneous error checking + if ($expectingOperand) { + $output[] = array('type' => 'NULL Value', 'value' => self::$excelConstants['NULL'], 'reference' => null); + $expectingOperand = false; + $expectingOperator = true; + } else { + return $this->raiseFormulaError("Formula Error: Unexpected ')'"); + } + } elseif (isset(self::$operators[$opCharacter]) && !$expectingOperator) { + return $this->raiseFormulaError("Formula Error: Unexpected operator '$opCharacter'"); + } else { // I don't even want to know what you did to get here + return $this->raiseFormulaError("Formula Error: An unexpected error occured"); + } + // Test for end of formula string + if ($index == strlen($formula)) { + // Did we end with an operator?. + // Only valid for the % unary operator + if ((isset(self::$operators[$opCharacter])) && ($opCharacter != '%')) { + return $this->raiseFormulaError("Formula Error: Operator '$opCharacter' has no operands"); + } else { + break; + } + } + // Ignore white space + while (($formula{$index} == "\n") || ($formula{$index} == "\r")) { + ++$index; + } + if ($formula{$index} == ' ') { + while ($formula{$index} == ' ') { + ++$index; + } + // If we're expecting an operator, but only have a space between the previous and next operands (and both are + // Cell References) then we have an INTERSECTION operator +// echo 'Possible Intersect Operator
      '; + if (($expectingOperator) && (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'.*/Ui', substr($formula, $index), $match)) && + ($output[count($output)-1]['type'] == 'Cell Reference')) { +// echo 'Element is an Intersect Operator
      '; + while ($stack->count() > 0 && + ($o2 = $stack->last()) && + isset(self::$operators[$o2['value']]) && + @(self::$operatorAssociativity[$opCharacter] ? self::$operatorPrecedence[$opCharacter] < self::$operatorPrecedence[$o2['value']] : self::$operatorPrecedence[$opCharacter] <= self::$operatorPrecedence[$o2['value']])) { + $output[] = $stack->pop(); // Swap operands and higher precedence operators from the stack to the output + } + $stack->push('Binary Operator', '|'); // Put an Intersect Operator on the stack + $expectingOperator = false; + } + } + } + + while (($op = $stack->pop()) !== null) { // pop everything off the stack and push onto output + if ((is_array($op) && $op['value'] == '(') || ($op === '(')) { + return $this->raiseFormulaError("Formula Error: Expecting ')'"); // if there are any opening braces on the stack, then braces were unbalanced + } + $output[] = $op; + } + return $output; + } + + + private static function dataTestReference(&$operandData) + { + $operand = $operandData['value']; + if (($operandData['reference'] === null) && (is_array($operand))) { + $rKeys = array_keys($operand); + $rowKey = array_shift($rKeys); + $cKeys = array_keys(array_keys($operand[$rowKey])); + $colKey = array_shift($cKeys); + if (ctype_upper($colKey)) { + $operandData['reference'] = $colKey.$rowKey; + } + } + return $operand; + } + + // evaluate postfix notation + private function processTokenStack($tokens, $cellID = null, PHPExcel_Cell $pCell = null) + { + if ($tokens == false) { + return false; + } + + // If we're using cell caching, then $pCell may well be flushed back to the cache (which detaches the parent cell collection), + // so we store the parent cell collection so that we can re-attach it when necessary + $pCellWorksheet = ($pCell !== null) ? $pCell->getWorksheet() : null; + $pCellParent = ($pCell !== null) ? $pCell->getParent() : null; + $stack = new PHPExcel_Calculation_Token_Stack; + + // Loop through each token in turn + foreach ($tokens as $tokenData) { +// print_r($tokenData); +// echo '
      '; + $token = $tokenData['value']; +// echo 'Token is '.$token.'
      '; + // if the token is a binary operator, pop the top two values off the stack, do the operation, and push the result back on the stack + if (isset(self::$binaryOperators[$token])) { +// echo 'Token is a binary operator
      '; + // We must have two operands, error if we don't + if (($operand2Data = $stack->pop()) === null) { + return $this->raiseFormulaError('Internal error - Operand value missing from stack'); + } + if (($operand1Data = $stack->pop()) === null) { + return $this->raiseFormulaError('Internal error - Operand value missing from stack'); + } + + $operand1 = self::dataTestReference($operand1Data); + $operand2 = self::dataTestReference($operand2Data); + + // Log what we're doing + if ($token == ':') { + $this->_debugLog->writeDebugLog('Evaluating Range ', $this->showValue($operand1Data['reference']), ' ', $token, ' ', $this->showValue($operand2Data['reference'])); + } else { + $this->_debugLog->writeDebugLog('Evaluating ', $this->showValue($operand1), ' ', $token, ' ', $this->showValue($operand2)); + } + + // Process the operation in the appropriate manner + switch ($token) { + // Comparison (Boolean) Operators + case '>': // Greater than + case '<': // Less than + case '>=': // Greater than or Equal to + case '<=': // Less than or Equal to + case '=': // Equality + case '<>': // Inequality + $this->executeBinaryComparisonOperation($cellID, $operand1, $operand2, $token, $stack); + break; + // Binary Operators + case ':': // Range + $sheet1 = $sheet2 = ''; + if (strpos($operand1Data['reference'], '!') !== false) { + list($sheet1, $operand1Data['reference']) = explode('!', $operand1Data['reference']); + } else { + $sheet1 = ($pCellParent !== null) ? $pCellWorksheet->getTitle() : ''; + } + if (strpos($operand2Data['reference'], '!') !== false) { + list($sheet2, $operand2Data['reference']) = explode('!', $operand2Data['reference']); + } else { + $sheet2 = $sheet1; + } + if ($sheet1 == $sheet2) { + if ($operand1Data['reference'] === null) { + if ((trim($operand1Data['value']) != '') && (is_numeric($operand1Data['value']))) { + $operand1Data['reference'] = $pCell->getColumn().$operand1Data['value']; + } elseif (trim($operand1Data['reference']) == '') { + $operand1Data['reference'] = $pCell->getCoordinate(); + } else { + $operand1Data['reference'] = $operand1Data['value'].$pCell->getRow(); + } + } + if ($operand2Data['reference'] === null) { + if ((trim($operand2Data['value']) != '') && (is_numeric($operand2Data['value']))) { + $operand2Data['reference'] = $pCell->getColumn().$operand2Data['value']; + } elseif (trim($operand2Data['reference']) == '') { + $operand2Data['reference'] = $pCell->getCoordinate(); + } else { + $operand2Data['reference'] = $operand2Data['value'].$pCell->getRow(); + } + } + + $oData = array_merge(explode(':', $operand1Data['reference']), explode(':', $operand2Data['reference'])); + $oCol = $oRow = array(); + foreach ($oData as $oDatum) { + $oCR = PHPExcel_Cell::coordinateFromString($oDatum); + $oCol[] = PHPExcel_Cell::columnIndexFromString($oCR[0]) - 1; + $oRow[] = $oCR[1]; + } + $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow); + if ($pCellParent !== null) { + $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($sheet1), false); + } else { + return $this->raiseFormulaError('Unable to access Cell Reference'); + } + $stack->push('Cell Reference', $cellValue, $cellRef); + } else { + $stack->push('Error', PHPExcel_Calculation_Functions::REF(), null); + } + break; + case '+': // Addition + $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'plusEquals', $stack); + break; + case '-': // Subtraction + $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'minusEquals', $stack); + break; + case '*': // Multiplication + $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'arrayTimesEquals', $stack); + break; + case '/': // Division + $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'arrayRightDivide', $stack); + break; + case '^': // Exponential + $this->executeNumericBinaryOperation($cellID, $operand1, $operand2, $token, 'power', $stack); + break; + case '&': // Concatenation + // If either of the operands is a matrix, we need to treat them both as matrices + // (converting the other operand to a matrix if need be); then perform the required + // matrix operation + if (is_bool($operand1)) { + $operand1 = ($operand1) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; + } + if (is_bool($operand2)) { + $operand2 = ($operand2) ? self::$localeBoolean['TRUE'] : self::$localeBoolean['FALSE']; + } + if ((is_array($operand1)) || (is_array($operand2))) { + // Ensure that both operands are arrays/matrices + self::checkMatrixOperands($operand1, $operand2, 2); + try { + // Convert operand 1 from a PHP array to a matrix + $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1); + // Perform the required operation against the operand 1 matrix, passing in operand 2 + $matrixResult = $matrix->concat($operand2); + $result = $matrixResult->getArray(); + } catch (PHPExcel_Exception $ex) { + $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); + $result = '#VALUE!'; + } + } else { + $result = '"'.str_replace('""', '"', self::unwrapResult($operand1, '"').self::unwrapResult($operand2, '"')).'"'; + } + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); + $stack->push('Value', $result); + break; + case '|': // Intersect + $rowIntersect = array_intersect_key($operand1, $operand2); + $cellIntersect = $oCol = $oRow = array(); + foreach (array_keys($rowIntersect) as $row) { + $oRow[] = $row; + foreach ($rowIntersect[$row] as $col => $data) { + $oCol[] = PHPExcel_Cell::columnIndexFromString($col) - 1; + $cellIntersect[$row] = array_intersect_key($operand1[$row], $operand2[$row]); + } + } + $cellRef = PHPExcel_Cell::stringFromColumnIndex(min($oCol)).min($oRow).':'.PHPExcel_Cell::stringFromColumnIndex(max($oCol)).max($oRow); + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($cellIntersect)); + $stack->push('Value', $cellIntersect, $cellRef); + break; + } + + // if the token is a unary operator, pop one value off the stack, do the operation, and push it back on + } elseif (($token === '~') || ($token === '%')) { +// echo 'Token is a unary operator
      '; + if (($arg = $stack->pop()) === null) { + return $this->raiseFormulaError('Internal error - Operand value missing from stack'); + } + $arg = $arg['value']; + if ($token === '~') { +// echo 'Token is a negation operator
      '; + $this->_debugLog->writeDebugLog('Evaluating Negation of ', $this->showValue($arg)); + $multiplier = -1; + } else { +// echo 'Token is a percentile operator
      '; + $this->_debugLog->writeDebugLog('Evaluating Percentile of ', $this->showValue($arg)); + $multiplier = 0.01; + } + if (is_array($arg)) { + self::checkMatrixOperands($arg, $multiplier, 2); + try { + $matrix1 = new PHPExcel_Shared_JAMA_Matrix($arg); + $matrixResult = $matrix1->arrayTimesEquals($multiplier); + $result = $matrixResult->getArray(); + } catch (PHPExcel_Exception $ex) { + $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); + $result = '#VALUE!'; + } + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); + $stack->push('Value', $result); + } else { + $this->executeNumericBinaryOperation($cellID, $multiplier, $arg, '*', 'arrayTimesEquals', $stack); + } + + } elseif (preg_match('/^'.self::CALCULATION_REGEXP_CELLREF.'$/i', $token, $matches)) { + $cellRef = null; +// echo 'Element '.$token.' is a Cell reference
      '; + if (isset($matches[8])) { +// echo 'Reference is a Range of cells
      '; + if ($pCell === null) { +// We can't access the range, so return a REF error + $cellValue = PHPExcel_Calculation_Functions::REF(); + } else { + $cellRef = $matches[6].$matches[7].':'.$matches[9].$matches[10]; + if ($matches[2] > '') { + $matches[2] = trim($matches[2], "\"'"); + if ((strpos($matches[2], '[') !== false) || (strpos($matches[2], ']') !== false)) { + // It's a Reference to an external workbook (not currently supported) + return $this->raiseFormulaError('Unable to access External Workbook'); + } + $matches[2] = trim($matches[2], "\"'"); +// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'
      '; + $this->_debugLog->writeDebugLog('Evaluating Cell Range ', $cellRef, ' in worksheet ', $matches[2]); + if ($pCellParent !== null) { + $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($matches[2]), false); + } else { + return $this->raiseFormulaError('Unable to access Cell Reference'); + } + $this->_debugLog->writeDebugLog('Evaluation Result for cells ', $cellRef, ' in worksheet ', $matches[2], ' is ', $this->showTypeDetails($cellValue)); +// $cellRef = $matches[2].'!'.$cellRef; + } else { +// echo '$cellRef='.$cellRef.' in current worksheet
      '; + $this->_debugLog->writeDebugLog('Evaluating Cell Range ', $cellRef, ' in current worksheet'); + if ($pCellParent !== null) { + $cellValue = $this->extractCellRange($cellRef, $pCellWorksheet, false); + } else { + return $this->raiseFormulaError('Unable to access Cell Reference'); + } + $this->_debugLog->writeDebugLog('Evaluation Result for cells ', $cellRef, ' is ', $this->showTypeDetails($cellValue)); + } + } + } else { +// echo 'Reference is a single Cell
      '; + if ($pCell === null) { +// We can't access the cell, so return a REF error + $cellValue = PHPExcel_Calculation_Functions::REF(); + } else { + $cellRef = $matches[6].$matches[7]; + if ($matches[2] > '') { + $matches[2] = trim($matches[2], "\"'"); + if ((strpos($matches[2], '[') !== false) || (strpos($matches[2], ']') !== false)) { + // It's a Reference to an external workbook (not currently supported) + return $this->raiseFormulaError('Unable to access External Workbook'); + } +// echo '$cellRef='.$cellRef.' in worksheet '.$matches[2].'
      '; + $this->_debugLog->writeDebugLog('Evaluating Cell ', $cellRef, ' in worksheet ', $matches[2]); + if ($pCellParent !== null) { + $cellSheet = $this->workbook->getSheetByName($matches[2]); + if ($cellSheet && $cellSheet->cellExists($cellRef)) { + $cellValue = $this->extractCellRange($cellRef, $this->workbook->getSheetByName($matches[2]), false); + $pCell->attach($pCellParent); + } else { + $cellValue = null; + } + } else { + return $this->raiseFormulaError('Unable to access Cell Reference'); + } + $this->_debugLog->writeDebugLog('Evaluation Result for cell ', $cellRef, ' in worksheet ', $matches[2], ' is ', $this->showTypeDetails($cellValue)); +// $cellRef = $matches[2].'!'.$cellRef; + } else { +// echo '$cellRef='.$cellRef.' in current worksheet
      '; + $this->_debugLog->writeDebugLog('Evaluating Cell ', $cellRef, ' in current worksheet'); + if ($pCellParent->isDataSet($cellRef)) { + $cellValue = $this->extractCellRange($cellRef, $pCellWorksheet, false); + $pCell->attach($pCellParent); + } else { + $cellValue = null; + } + $this->_debugLog->writeDebugLog('Evaluation Result for cell ', $cellRef, ' is ', $this->showTypeDetails($cellValue)); + } + } + } + $stack->push('Value', $cellValue, $cellRef); + + // if the token is a function, pop arguments off the stack, hand them to the function, and push the result back on + } elseif (preg_match('/^'.self::CALCULATION_REGEXP_FUNCTION.'$/i', $token, $matches)) { +// echo 'Token is a function
      '; + $functionName = $matches[1]; + $argCount = $stack->pop(); + $argCount = $argCount['value']; + if ($functionName != 'MKMATRIX') { + $this->_debugLog->writeDebugLog('Evaluating Function ', self::localeFunc($functionName), '() with ', (($argCount == 0) ? 'no' : $argCount), ' argument', (($argCount == 1) ? '' : 's')); + } + if ((isset(self::$PHPExcelFunctions[$functionName])) || (isset(self::$controlFunctions[$functionName]))) { // function + if (isset(self::$PHPExcelFunctions[$functionName])) { + $functionCall = self::$PHPExcelFunctions[$functionName]['functionCall']; + $passByReference = isset(self::$PHPExcelFunctions[$functionName]['passByReference']); + $passCellReference = isset(self::$PHPExcelFunctions[$functionName]['passCellReference']); + } elseif (isset(self::$controlFunctions[$functionName])) { + $functionCall = self::$controlFunctions[$functionName]['functionCall']; + $passByReference = isset(self::$controlFunctions[$functionName]['passByReference']); + $passCellReference = isset(self::$controlFunctions[$functionName]['passCellReference']); + } + // get the arguments for this function +// echo 'Function '.$functionName.' expects '.$argCount.' arguments
      '; + $args = $argArrayVals = array(); + for ($i = 0; $i < $argCount; ++$i) { + $arg = $stack->pop(); + $a = $argCount - $i - 1; + if (($passByReference) && + (isset(self::$PHPExcelFunctions[$functionName]['passByReference'][$a])) && + (self::$PHPExcelFunctions[$functionName]['passByReference'][$a])) { + if ($arg['reference'] === null) { + $args[] = $cellID; + if ($functionName != 'MKMATRIX') { + $argArrayVals[] = $this->showValue($cellID); + } + } else { + $args[] = $arg['reference']; + if ($functionName != 'MKMATRIX') { + $argArrayVals[] = $this->showValue($arg['reference']); + } + } + } else { + $args[] = self::unwrapResult($arg['value']); + if ($functionName != 'MKMATRIX') { + $argArrayVals[] = $this->showValue($arg['value']); + } + } + } + // Reverse the order of the arguments + krsort($args); + if (($passByReference) && ($argCount == 0)) { + $args[] = $cellID; + $argArrayVals[] = $this->showValue($cellID); + } +// echo 'Arguments are: '; +// print_r($args); +// echo '
      '; + if ($functionName != 'MKMATRIX') { + if ($this->_debugLog->getWriteDebugLog()) { + krsort($argArrayVals); + $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', implode(self::$localeArgumentSeparator.' ', PHPExcel_Calculation_Functions::flattenArray($argArrayVals)), ' )'); + } + } + // Process each argument in turn, building the return value as an array +// if (($argCount == 1) && (is_array($args[1])) && ($functionName != 'MKMATRIX')) { +// $operand1 = $args[1]; +// $this->_debugLog->writeDebugLog('Argument is a matrix: ', $this->showValue($operand1)); +// $result = array(); +// $row = 0; +// foreach($operand1 as $args) { +// if (is_array($args)) { +// foreach($args as $arg) { +// $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', $this->showValue($arg), ' )'); +// $r = call_user_func_array($functionCall, $arg); +// $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($r)); +// $result[$row][] = $r; +// } +// ++$row; +// } else { +// $this->_debugLog->writeDebugLog('Evaluating ', self::localeFunc($functionName), '( ', $this->showValue($args), ' )'); +// $r = call_user_func_array($functionCall, $args); +// $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($r)); +// $result[] = $r; +// } +// } +// } else { + // Process the argument with the appropriate function call + if ($passCellReference) { + $args[] = $pCell; + } + if (strpos($functionCall, '::') !== false) { + $result = call_user_func_array(explode('::', $functionCall), $args); + } else { + foreach ($args as &$arg) { + $arg = PHPExcel_Calculation_Functions::flattenSingleValue($arg); + } + unset($arg); + $result = call_user_func_array($functionCall, $args); + } + if ($functionName != 'MKMATRIX') { + $this->_debugLog->writeDebugLog('Evaluation Result for ', self::localeFunc($functionName), '() function call is ', $this->showTypeDetails($result)); + } + $stack->push('Value', self::wrapResult($result)); + } + + } else { + // if the token is a number, boolean, string or an Excel error, push it onto the stack + if (isset(self::$excelConstants[strtoupper($token)])) { + $excelConstant = strtoupper($token); +// echo 'Token is a PHPExcel constant: '.$excelConstant.'
      '; + $stack->push('Constant Value', self::$excelConstants[$excelConstant]); + $this->_debugLog->writeDebugLog('Evaluating Constant ', $excelConstant, ' as ', $this->showTypeDetails(self::$excelConstants[$excelConstant])); + } elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token{0} == '"') || ($token{0} == '#')) { +// echo 'Token is a number, boolean, string, null or an Excel error
      '; + $stack->push('Value', $token); + // if the token is a named range, push the named range name onto the stack + } elseif (preg_match('/^'.self::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $token, $matches)) { +// echo 'Token is a named range
      '; + $namedRange = $matches[6]; +// echo 'Named Range is '.$namedRange.'
      '; + $this->_debugLog->writeDebugLog('Evaluating Named Range ', $namedRange); + $cellValue = $this->extractNamedRange($namedRange, ((null !== $pCell) ? $pCellWorksheet : null), false); + $pCell->attach($pCellParent); + $this->_debugLog->writeDebugLog('Evaluation Result for named range ', $namedRange, ' is ', $this->showTypeDetails($cellValue)); + $stack->push('Named Range', $cellValue, $namedRange); + } else { + return $this->raiseFormulaError("undefined variable '$token'"); + } + } + } + // when we're out of tokens, the stack should have a single element, the final result + if ($stack->count() != 1) { + return $this->raiseFormulaError("internal error"); + } + $output = $stack->pop(); + $output = $output['value']; + +// if ((is_array($output)) && (self::$returnArrayAsType != self::RETURN_ARRAY_AS_ARRAY)) { +// return array_shift(PHPExcel_Calculation_Functions::flattenArray($output)); +// } + return $output; + } + + + private function validateBinaryOperand($cellID, &$operand, &$stack) + { + if (is_array($operand)) { + if ((count($operand, COUNT_RECURSIVE) - count($operand)) == 1) { + do { + $operand = array_pop($operand); + } while (is_array($operand)); + } + } + // Numbers, matrices and booleans can pass straight through, as they're already valid + if (is_string($operand)) { + // We only need special validations for the operand if it is a string + // Start by stripping off the quotation marks we use to identify true excel string values internally + if ($operand > '' && $operand{0} == '"') { + $operand = self::unwrapResult($operand); + } + // If the string is a numeric value, we treat it as a numeric, so no further testing + if (!is_numeric($operand)) { + // If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations + if ($operand > '' && $operand{0} == '#') { + $stack->push('Value', $operand); + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($operand)); + return false; + } elseif (!PHPExcel_Shared_String::convertToNumberIfFraction($operand)) { + // If not a numeric or a fraction, then it's a text string, and so can't be used in mathematical binary operations + $stack->push('Value', '#VALUE!'); + $this->_debugLog->writeDebugLog('Evaluation Result is a ', $this->showTypeDetails('#VALUE!')); + return false; + } + } + } + + // return a true if the value of the operand is one that we can use in normal binary operations + return true; + } + + + private function executeBinaryComparisonOperation($cellID, $operand1, $operand2, $operation, &$stack, $recursingArrays = false) + { + // If we're dealing with matrix operations, we want a matrix result + if ((is_array($operand1)) || (is_array($operand2))) { + $result = array(); + if ((is_array($operand1)) && (!is_array($operand2))) { + foreach ($operand1 as $x => $operandData) { + $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operandData), ' ', $operation, ' ', $this->showValue($operand2)); + $this->executeBinaryComparisonOperation($cellID, $operandData, $operand2, $operation, $stack); + $r = $stack->pop(); + $result[$x] = $r['value']; + } + } elseif ((!is_array($operand1)) && (is_array($operand2))) { + foreach ($operand2 as $x => $operandData) { + $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operand1), ' ', $operation, ' ', $this->showValue($operandData)); + $this->executeBinaryComparisonOperation($cellID, $operand1, $operandData, $operation, $stack); + $r = $stack->pop(); + $result[$x] = $r['value']; + } + } else { + if (!$recursingArrays) { + self::checkMatrixOperands($operand1, $operand2, 2); + } + foreach ($operand1 as $x => $operandData) { + $this->_debugLog->writeDebugLog('Evaluating Comparison ', $this->showValue($operandData), ' ', $operation, ' ', $this->showValue($operand2[$x])); + $this->executeBinaryComparisonOperation($cellID, $operandData, $operand2[$x], $operation, $stack, true); + $r = $stack->pop(); + $result[$x] = $r['value']; + } + } + // Log the result details + $this->_debugLog->writeDebugLog('Comparison Evaluation Result is ', $this->showTypeDetails($result)); + // And push the result onto the stack + $stack->push('Array', $result); + return true; + } + + // Simple validate the two operands if they are string values + if (is_string($operand1) && $operand1 > '' && $operand1{0} == '"') { + $operand1 = self::unwrapResult($operand1); + } + if (is_string($operand2) && $operand2 > '' && $operand2{0} == '"') { + $operand2 = self::unwrapResult($operand2); + } + + // Use case insensitive comparaison if not OpenOffice mode + if (PHPExcel_Calculation_Functions::getCompatibilityMode() != PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + if (is_string($operand1)) { + $operand1 = strtoupper($operand1); + } + if (is_string($operand2)) { + $operand2 = strtoupper($operand2); + } + } + + $useLowercaseFirstComparison = is_string($operand1) && is_string($operand2) && PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE; + + // execute the necessary operation + switch ($operation) { + // Greater than + case '>': + if ($useLowercaseFirstComparison) { + $result = $this->strcmpLowercaseFirst($operand1, $operand2) > 0; + } else { + $result = ($operand1 > $operand2); + } + break; + // Less than + case '<': + if ($useLowercaseFirstComparison) { + $result = $this->strcmpLowercaseFirst($operand1, $operand2) < 0; + } else { + $result = ($operand1 < $operand2); + } + break; + // Equality + case '=': + if (is_numeric($operand1) && is_numeric($operand2)) { + $result = (abs($operand1 - $operand2) < $this->delta); + } else { + $result = strcmp($operand1, $operand2) == 0; + } + break; + // Greater than or equal + case '>=': + if (is_numeric($operand1) && is_numeric($operand2)) { + $result = ((abs($operand1 - $operand2) < $this->delta) || ($operand1 > $operand2)); + } elseif ($useLowercaseFirstComparison) { + $result = $this->strcmpLowercaseFirst($operand1, $operand2) >= 0; + } else { + $result = strcmp($operand1, $operand2) >= 0; + } + break; + // Less than or equal + case '<=': + if (is_numeric($operand1) && is_numeric($operand2)) { + $result = ((abs($operand1 - $operand2) < $this->delta) || ($operand1 < $operand2)); + } elseif ($useLowercaseFirstComparison) { + $result = $this->strcmpLowercaseFirst($operand1, $operand2) <= 0; + } else { + $result = strcmp($operand1, $operand2) <= 0; + } + break; + // Inequality + case '<>': + if (is_numeric($operand1) && is_numeric($operand2)) { + $result = (abs($operand1 - $operand2) > 1E-14); + } else { + $result = strcmp($operand1, $operand2) != 0; + } + break; + } + + // Log the result details + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); + // And push the result onto the stack + $stack->push('Value', $result); + return true; + } + + /** + * Compare two strings in the same way as strcmp() except that lowercase come before uppercase letters + * @param string $str1 First string value for the comparison + * @param string $str2 Second string value for the comparison + * @return integer + */ + private function strcmpLowercaseFirst($str1, $str2) + { + $inversedStr1 = PHPExcel_Shared_String::StrCaseReverse($str1); + $inversedStr2 = PHPExcel_Shared_String::StrCaseReverse($str2); + + return strcmp($inversedStr1, $inversedStr2); + } + + private function executeNumericBinaryOperation($cellID, $operand1, $operand2, $operation, $matrixFunction, &$stack) + { + // Validate the two operands + if (!$this->validateBinaryOperand($cellID, $operand1, $stack)) { + return false; + } + if (!$this->validateBinaryOperand($cellID, $operand2, $stack)) { + return false; + } + + // If either of the operands is a matrix, we need to treat them both as matrices + // (converting the other operand to a matrix if need be); then perform the required + // matrix operation + if ((is_array($operand1)) || (is_array($operand2))) { + // Ensure that both operands are arrays/matrices of the same size + self::checkMatrixOperands($operand1, $operand2, 2); + + try { + // Convert operand 1 from a PHP array to a matrix + $matrix = new PHPExcel_Shared_JAMA_Matrix($operand1); + // Perform the required operation against the operand 1 matrix, passing in operand 2 + $matrixResult = $matrix->$matrixFunction($operand2); + $result = $matrixResult->getArray(); + } catch (PHPExcel_Exception $ex) { + $this->_debugLog->writeDebugLog('JAMA Matrix Exception: ', $ex->getMessage()); + $result = '#VALUE!'; + } + } else { + if ((PHPExcel_Calculation_Functions::getCompatibilityMode() != PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) && + ((is_string($operand1) && !is_numeric($operand1) && strlen($operand1)>0) || + (is_string($operand2) && !is_numeric($operand2) && strlen($operand2)>0))) { + $result = PHPExcel_Calculation_Functions::VALUE(); + } else { + // If we're dealing with non-matrix operations, execute the necessary operation + switch ($operation) { + // Addition + case '+': + $result = $operand1 + $operand2; + break; + // Subtraction + case '-': + $result = $operand1 - $operand2; + break; + // Multiplication + case '*': + $result = $operand1 * $operand2; + break; + // Division + case '/': + if ($operand2 == 0) { + // Trap for Divide by Zero error + $stack->push('Value', '#DIV/0!'); + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails('#DIV/0!')); + return false; + } else { + $result = $operand1 / $operand2; + } + break; + // Power + case '^': + $result = pow($operand1, $operand2); + break; + } + } + } + + // Log the result details + $this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($result)); + // And push the result onto the stack + $stack->push('Value', $result); + return true; + } + + + // trigger an error, but nicely, if need be + protected function raiseFormulaError($errorMessage) + { + $this->formulaError = $errorMessage; + $this->cyclicReferenceStack->clear(); + if (!$this->suppressFormulaErrors) { + throw new PHPExcel_Calculation_Exception($errorMessage); + } + trigger_error($errorMessage, E_USER_ERROR); + } + + + /** + * Extract range values + * + * @param string &$pRange String based range representation + * @param PHPExcel_Worksheet $pSheet Worksheet + * @param boolean $resetLog Flag indicating whether calculation log should be reset or not + * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned. + * @throws PHPExcel_Calculation_Exception + */ + public function extractCellRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog = true) + { + // Return value + $returnValue = array (); + +// echo 'extractCellRange('.$pRange.')', PHP_EOL; + if ($pSheet !== null) { + $pSheetName = $pSheet->getTitle(); +// echo 'Passed sheet name is '.$pSheetName.PHP_EOL; +// echo 'Range reference is '.$pRange.PHP_EOL; + if (strpos($pRange, '!') !== false) { +// echo '$pRange reference includes sheet reference', PHP_EOL; + list($pSheetName, $pRange) = PHPExcel_Worksheet::extractSheetTitle($pRange, true); +// echo 'New sheet name is '.$pSheetName, PHP_EOL; +// echo 'Adjusted Range reference is '.$pRange, PHP_EOL; + $pSheet = $this->workbook->getSheetByName($pSheetName); + } + + // Extract range + $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); + $pRange = $pSheetName.'!'.$pRange; + if (!isset($aReferences[1])) { + // Single cell in range + sscanf($aReferences[0], '%[A-Z]%d', $currentCol, $currentRow); + $cellValue = null; + if ($pSheet->cellExists($aReferences[0])) { + $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog); + } else { + $returnValue[$currentRow][$currentCol] = null; + } + } else { + // Extract cell data for all cells in the range + foreach ($aReferences as $reference) { + // Extract range + sscanf($reference, '%[A-Z]%d', $currentCol, $currentRow); + $cellValue = null; + if ($pSheet->cellExists($reference)) { + $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog); + } else { + $returnValue[$currentRow][$currentCol] = null; + } + } + } + } + + return $returnValue; + } + + + /** + * Extract range values + * + * @param string &$pRange String based range representation + * @param PHPExcel_Worksheet $pSheet Worksheet + * @return mixed Array of values in range if range contains more than one element. Otherwise, a single value is returned. + * @param boolean $resetLog Flag indicating whether calculation log should be reset or not + * @throws PHPExcel_Calculation_Exception + */ + public function extractNamedRange(&$pRange = 'A1', PHPExcel_Worksheet $pSheet = null, $resetLog = true) + { + // Return value + $returnValue = array (); + +// echo 'extractNamedRange('.$pRange.')
      '; + if ($pSheet !== null) { + $pSheetName = $pSheet->getTitle(); +// echo 'Current sheet name is '.$pSheetName.'
      '; +// echo 'Range reference is '.$pRange.'
      '; + if (strpos($pRange, '!') !== false) { +// echo '$pRange reference includes sheet reference', PHP_EOL; + list($pSheetName, $pRange) = PHPExcel_Worksheet::extractSheetTitle($pRange, true); +// echo 'New sheet name is '.$pSheetName, PHP_EOL; +// echo 'Adjusted Range reference is '.$pRange, PHP_EOL; + $pSheet = $this->workbook->getSheetByName($pSheetName); + } + + // Named range? + $namedRange = PHPExcel_NamedRange::resolveRange($pRange, $pSheet); + if ($namedRange !== null) { + $pSheet = $namedRange->getWorksheet(); +// echo 'Named Range '.$pRange.' ('; + $pRange = $namedRange->getRange(); + $splitRange = PHPExcel_Cell::splitRange($pRange); + // Convert row and column references + if (ctype_alpha($splitRange[0][0])) { + $pRange = $splitRange[0][0] . '1:' . $splitRange[0][1] . $namedRange->getWorksheet()->getHighestRow(); + } elseif (ctype_digit($splitRange[0][0])) { + $pRange = 'A' . $splitRange[0][0] . ':' . $namedRange->getWorksheet()->getHighestColumn() . $splitRange[0][1]; + } +// echo $pRange.') is in sheet '.$namedRange->getWorksheet()->getTitle().'
      '; + +// if ($pSheet->getTitle() != $namedRange->getWorksheet()->getTitle()) { +// if (!$namedRange->getLocalOnly()) { +// $pSheet = $namedRange->getWorksheet(); +// } else { +// return $returnValue; +// } +// } + } else { + return PHPExcel_Calculation_Functions::REF(); + } + + // Extract range + $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); +// var_dump($aReferences); + if (!isset($aReferences[1])) { + // Single cell (or single column or row) in range + list($currentCol, $currentRow) = PHPExcel_Cell::coordinateFromString($aReferences[0]); + $cellValue = null; + if ($pSheet->cellExists($aReferences[0])) { + $returnValue[$currentRow][$currentCol] = $pSheet->getCell($aReferences[0])->getCalculatedValue($resetLog); + } else { + $returnValue[$currentRow][$currentCol] = null; + } + } else { + // Extract cell data for all cells in the range + foreach ($aReferences as $reference) { + // Extract range + list($currentCol, $currentRow) = PHPExcel_Cell::coordinateFromString($reference); +// echo 'NAMED RANGE: $currentCol='.$currentCol.' $currentRow='.$currentRow.'
      '; + $cellValue = null; + if ($pSheet->cellExists($reference)) { + $returnValue[$currentRow][$currentCol] = $pSheet->getCell($reference)->getCalculatedValue($resetLog); + } else { + $returnValue[$currentRow][$currentCol] = null; + } + } + } +// print_r($returnValue); +// echo '
      '; + } + + return $returnValue; + } + + + /** + * Is a specific function implemented? + * + * @param string $pFunction Function Name + * @return boolean + */ + public function isImplemented($pFunction = '') + { + $pFunction = strtoupper($pFunction); + if (isset(self::$PHPExcelFunctions[$pFunction])) { + return (self::$PHPExcelFunctions[$pFunction]['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY'); + } else { + return false; + } + } + + + /** + * Get a list of all implemented functions as an array of function objects + * + * @return array of PHPExcel_Calculation_Function + */ + public function listFunctions() + { + $returnValue = array(); + + foreach (self::$PHPExcelFunctions as $functionName => $function) { + if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') { + $returnValue[$functionName] = new PHPExcel_Calculation_Function( + $function['category'], + $functionName, + $function['functionCall'] + ); + } + } + + return $returnValue; + } + + + /** + * Get a list of all Excel function names + * + * @return array + */ + public function listAllFunctionNames() + { + return array_keys(self::$PHPExcelFunctions); + } + + /** + * Get a list of implemented Excel function names + * + * @return array + */ + public function listFunctionNames() + { + $returnValue = array(); + foreach (self::$PHPExcelFunctions as $functionName => $function) { + if ($function['functionCall'] != 'PHPExcel_Calculation_Functions::DUMMY') { + $returnValue[] = $functionName; + } + } + + return $returnValue; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Database.php b/assets/excel/PHPExcel/Calculation/Database.php new file mode 100644 index 0000000..b8d91cb --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Database.php @@ -0,0 +1,676 @@ + $criteriaName) { + $testCondition = array(); + $testConditionCount = 0; + foreach ($criteria as $row => $criterion) { + if ($criterion[$key] > '') { + $testCondition[] = '[:'.$criteriaName.']'.PHPExcel_Calculation_Functions::ifCondition($criterion[$key]); + $testConditionCount++; + } + } + if ($testConditionCount > 1) { + $testConditions[] = 'OR(' . implode(',', $testCondition) . ')'; + $testConditionsCount++; + } elseif ($testConditionCount == 1) { + $testConditions[] = $testCondition[0]; + $testConditionsCount++; + } + } + + if ($testConditionsCount > 1) { + $testConditionSet = 'AND(' . implode(',', $testConditions) . ')'; + } elseif ($testConditionsCount == 1) { + $testConditionSet = $testConditions[0]; + } + + // Loop through each row of the database + foreach ($database as $dataRow => $dataValues) { + // Substitute actual values from the database row for our [:placeholders] + $testConditionList = $testConditionSet; + foreach ($criteriaNames as $key => $criteriaName) { + $k = array_search($criteriaName, $fieldNames); + if (isset($dataValues[$k])) { + $dataValue = $dataValues[$k]; + $dataValue = (is_string($dataValue)) ? PHPExcel_Calculation::wrapResult(strtoupper($dataValue)) : $dataValue; + $testConditionList = str_replace('[:' . $criteriaName . ']', $dataValue, $testConditionList); + } + } + // evaluate the criteria against the row data + $result = PHPExcel_Calculation::getInstance()->_calculateFormulaValue('='.$testConditionList); + // If the row failed to meet the criteria, remove it from the database + if (!$result) { + unset($database[$dataRow]); + } + } + + return $database; + } + + + private static function getFilteredColumn($database, $field, $criteria) + { + // reduce the database to a set of rows that match all the criteria + $database = self::filter($database, $criteria); + // extract an array of values for the requested column + $colData = array(); + foreach ($database as $row) { + $colData[] = $row[$field]; + } + + return $colData; + } + + /** + * DAVERAGE + * + * Averages the values in a column of a list or database that match conditions you specify. + * + * Excel Function: + * DAVERAGE(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DAVERAGE($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::AVERAGE( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DCOUNT + * + * Counts the cells that contain numbers in a column of a list or database that match conditions + * that you specify. + * + * Excel Function: + * DCOUNT(database,[field],criteria) + * + * Excel Function: + * DAVERAGE(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return integer + * + * @TODO The field argument is optional. If field is omitted, DCOUNT counts all records in the + * database that match the criteria. + * + */ + public static function DCOUNT($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::COUNT( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DCOUNTA + * + * Counts the nonblank cells in a column of a list or database that match conditions that you specify. + * + * Excel Function: + * DCOUNTA(database,[field],criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return integer + * + * @TODO The field argument is optional. If field is omitted, DCOUNTA counts all records in the + * database that match the criteria. + * + */ + public static function DCOUNTA($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // reduce the database to a set of rows that match all the criteria + $database = self::filter($database, $criteria); + // extract an array of values for the requested column + $colData = array(); + foreach ($database as $row) { + $colData[] = $row[$field]; + } + + // Return + return PHPExcel_Calculation_Statistical::COUNTA( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DGET + * + * Extracts a single value from a column of a list or database that matches conditions that you + * specify. + * + * Excel Function: + * DGET(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return mixed + * + */ + public static function DGET($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + $colData = self::getFilteredColumn($database, $field, $criteria); + if (count($colData) > 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return $colData[0]; + } + + + /** + * DMAX + * + * Returns the largest number in a column of a list or database that matches conditions you that + * specify. + * + * Excel Function: + * DMAX(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DMAX($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::MAX( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DMIN + * + * Returns the smallest number in a column of a list or database that matches conditions you that + * specify. + * + * Excel Function: + * DMIN(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DMIN($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::MIN( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DPRODUCT + * + * Multiplies the values in a column of a list or database that match conditions that you specify. + * + * Excel Function: + * DPRODUCT(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DPRODUCT($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_MathTrig::PRODUCT( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DSTDEV + * + * Estimates the standard deviation of a population based on a sample by using the numbers in a + * column of a list or database that match conditions that you specify. + * + * Excel Function: + * DSTDEV(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DSTDEV($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::STDEV( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DSTDEVP + * + * Calculates the standard deviation of a population based on the entire population by using the + * numbers in a column of a list or database that match conditions that you specify. + * + * Excel Function: + * DSTDEVP(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DSTDEVP($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::STDEVP( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DSUM + * + * Adds the numbers in a column of a list or database that match conditions that you specify. + * + * Excel Function: + * DSUM(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DSUM($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_MathTrig::SUM( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DVAR + * + * Estimates the variance of a population based on a sample by using the numbers in a column + * of a list or database that match conditions that you specify. + * + * Excel Function: + * DVAR(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DVAR($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::VARFunc( + self::getFilteredColumn($database, $field, $criteria) + ); + } + + + /** + * DVARP + * + * Calculates the variance of a population based on the entire population by using the numbers + * in a column of a list or database that match conditions that you specify. + * + * Excel Function: + * DVARP(database,field,criteria) + * + * @access public + * @category Database Functions + * @param mixed[] $database The range of cells that makes up the list or database. + * A database is a list of related data in which rows of related + * information are records, and columns of data are fields. The + * first row of the list contains labels for each column. + * @param string|integer $field Indicates which column is used in the function. Enter the + * column label enclosed between double quotation marks, such as + * "Age" or "Yield," or a number (without quotation marks) that + * represents the position of the column within the list: 1 for + * the first column, 2 for the second column, and so on. + * @param mixed[] $criteria The range of cells that contains the conditions you specify. + * You can use any range for the criteria argument, as long as it + * includes at least one column label and at least one cell below + * the column label in which you specify a condition for the + * column. + * @return float + * + */ + public static function DVARP($database, $field, $criteria) + { + $field = self::fieldExtract($database, $field); + if (is_null($field)) { + return null; + } + + // Return + return PHPExcel_Calculation_Statistical::VARP( + self::getFilteredColumn($database, $field, $criteria) + ); + } +} diff --git a/assets/excel/PHPExcel/Calculation/DateTime.php b/assets/excel/PHPExcel/Calculation/DateTime.php new file mode 100644 index 0000000..72f4c7a --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/DateTime.php @@ -0,0 +1,1553 @@ +format('m'); + $oYear = (int) $PHPDateObject->format('Y'); + + $adjustmentMonthsString = (string) $adjustmentMonths; + if ($adjustmentMonths > 0) { + $adjustmentMonthsString = '+'.$adjustmentMonths; + } + if ($adjustmentMonths != 0) { + $PHPDateObject->modify($adjustmentMonthsString.' months'); + } + $nMonth = (int) $PHPDateObject->format('m'); + $nYear = (int) $PHPDateObject->format('Y'); + + $monthDiff = ($nMonth - $oMonth) + (($nYear - $oYear) * 12); + if ($monthDiff != $adjustmentMonths) { + $adjustDays = (int) $PHPDateObject->format('d'); + $adjustDaysString = '-'.$adjustDays.' days'; + $PHPDateObject->modify($adjustDaysString); + } + return $PHPDateObject; + } + + + /** + * DATETIMENOW + * + * Returns the current date and time. + * The NOW function is useful when you need to display the current date and time on a worksheet or + * calculate a value based on the current date and time, and have that value updated each time you + * open the worksheet. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date + * and time format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * NOW() + * + * @access public + * @category Date/Time Functions + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function DATETIMENOW() + { + $saveTimeZone = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $retValue = false; + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + $retValue = (float) PHPExcel_Shared_Date::PHPToExcel(time()); + break; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + $retValue = (integer) time(); + break; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + $retValue = new DateTime(); + break; + } + date_default_timezone_set($saveTimeZone); + + return $retValue; + } + + + /** + * DATENOW + * + * Returns the current date. + * The NOW function is useful when you need to display the current date and time on a worksheet or + * calculate a value based on the current date and time, and have that value updated each time you + * open the worksheet. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date + * and time format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * TODAY() + * + * @access public + * @category Date/Time Functions + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function DATENOW() + { + $saveTimeZone = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $retValue = false; + $excelDateTime = floor(PHPExcel_Shared_Date::PHPToExcel(time())); + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + $retValue = (float) $excelDateTime; + break; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + $retValue = (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateTime); + break; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + $retValue = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateTime); + break; + } + date_default_timezone_set($saveTimeZone); + + return $retValue; + } + + + /** + * DATE + * + * The DATE function returns a value that represents a particular date. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date + * format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * DATE(year,month,day) + * + * PHPExcel is a lot more forgiving than MS Excel when passing non numeric values to this function. + * A Month name or abbreviation (English only at this point) such as 'January' or 'Jan' will still be accepted, + * as will a day value with a suffix (e.g. '21st' rather than simply 21); again only English language. + * + * @access public + * @category Date/Time Functions + * @param integer $year The value of the year argument can include one to four digits. + * Excel interprets the year argument according to the configured + * date system: 1900 or 1904. + * If year is between 0 (zero) and 1899 (inclusive), Excel adds that + * value to 1900 to calculate the year. For example, DATE(108,1,2) + * returns January 2, 2008 (1900+108). + * If year is between 1900 and 9999 (inclusive), Excel uses that + * value as the year. For example, DATE(2008,1,2) returns January 2, + * 2008. + * If year is less than 0 or is 10000 or greater, Excel returns the + * #NUM! error value. + * @param integer $month A positive or negative integer representing the month of the year + * from 1 to 12 (January to December). + * If month is greater than 12, month adds that number of months to + * the first month in the year specified. For example, DATE(2008,14,2) + * returns the serial number representing February 2, 2009. + * If month is less than 1, month subtracts the magnitude of that + * number of months, plus 1, from the first month in the year + * specified. For example, DATE(2008,-3,2) returns the serial number + * representing September 2, 2007. + * @param integer $day A positive or negative integer representing the day of the month + * from 1 to 31. + * If day is greater than the number of days in the month specified, + * day adds that number of days to the first day in the month. For + * example, DATE(2008,1,35) returns the serial number representing + * February 4, 2008. + * If day is less than 1, day subtracts the magnitude that number of + * days, plus one, from the first day of the month specified. For + * example, DATE(2008,1,-15) returns the serial number representing + * December 16, 2007. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function DATE($year = 0, $month = 1, $day = 1) + { + $year = PHPExcel_Calculation_Functions::flattenSingleValue($year); + $month = PHPExcel_Calculation_Functions::flattenSingleValue($month); + $day = PHPExcel_Calculation_Functions::flattenSingleValue($day); + + if (($month !== null) && (!is_numeric($month))) { + $month = PHPExcel_Shared_Date::monthStringToNumber($month); + } + + if (($day !== null) && (!is_numeric($day))) { + $day = PHPExcel_Shared_Date::dayStringToNumber($day); + } + + $year = ($year !== null) ? PHPExcel_Shared_String::testStringAsNumeric($year) : 0; + $month = ($month !== null) ? PHPExcel_Shared_String::testStringAsNumeric($month) : 0; + $day = ($day !== null) ? PHPExcel_Shared_String::testStringAsNumeric($day) : 0; + if ((!is_numeric($year)) || + (!is_numeric($month)) || + (!is_numeric($day))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $year = (integer) $year; + $month = (integer) $month; + $day = (integer) $day; + + $baseYear = PHPExcel_Shared_Date::getExcelCalendar(); + // Validate parameters + if ($year < ($baseYear-1900)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((($baseYear-1900) != 0) && ($year < $baseYear) && ($year >= 1900)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + if (($year < $baseYear) && ($year >= ($baseYear-1900))) { + $year += 1900; + } + + if ($month < 1) { + // Handle year/month adjustment if month < 1 + --$month; + $year += ceil($month / 12) - 1; + $month = 13 - abs($month % 12); + } elseif ($month > 12) { + // Handle year/month adjustment if month > 12 + $year += floor($month / 12); + $month = ($month % 12); + } + + // Re-validate the year parameter after adjustments + if (($year < $baseYear) || ($year >= 10000)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day); + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) $excelDateValue; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue); + } + } + + + /** + * TIME + * + * The TIME function returns a value that represents a particular time. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time + * format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * TIME(hour,minute,second) + * + * @access public + * @category Date/Time Functions + * @param integer $hour A number from 0 (zero) to 32767 representing the hour. + * Any value greater than 23 will be divided by 24 and the remainder + * will be treated as the hour value. For example, TIME(27,0,0) = + * TIME(3,0,0) = .125 or 3:00 AM. + * @param integer $minute A number from 0 to 32767 representing the minute. + * Any value greater than 59 will be converted to hours and minutes. + * For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM. + * @param integer $second A number from 0 to 32767 representing the second. + * Any value greater than 59 will be converted to hours, minutes, + * and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148 + * or 12:33:20 AM + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function TIME($hour = 0, $minute = 0, $second = 0) + { + $hour = PHPExcel_Calculation_Functions::flattenSingleValue($hour); + $minute = PHPExcel_Calculation_Functions::flattenSingleValue($minute); + $second = PHPExcel_Calculation_Functions::flattenSingleValue($second); + + if ($hour == '') { + $hour = 0; + } + if ($minute == '') { + $minute = 0; + } + if ($second == '') { + $second = 0; + } + + if ((!is_numeric($hour)) || (!is_numeric($minute)) || (!is_numeric($second))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $hour = (integer) $hour; + $minute = (integer) $minute; + $second = (integer) $second; + + if ($second < 0) { + $minute += floor($second / 60); + $second = 60 - abs($second % 60); + if ($second == 60) { + $second = 0; + } + } elseif ($second >= 60) { + $minute += floor($second / 60); + $second = $second % 60; + } + if ($minute < 0) { + $hour += floor($minute / 60); + $minute = 60 - abs($minute % 60); + if ($minute == 60) { + $minute = 0; + } + } elseif ($minute >= 60) { + $hour += floor($minute / 60); + $minute = $minute % 60; + } + + if ($hour > 23) { + $hour = $hour % 24; + } elseif ($hour < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + $date = 0; + $calendar = PHPExcel_Shared_Date::getExcelCalendar(); + if ($calendar != PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900) { + $date = 1; + } + return (float) PHPExcel_Shared_Date::FormattedPHPToExcel($calendar, 1, $date, $hour, $minute, $second); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::FormattedPHPToExcel(1970, 1, 1, $hour, $minute, $second)); // -2147468400; // -2147472000 + 3600 + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + $dayAdjust = 0; + if ($hour < 0) { + $dayAdjust = floor($hour / 24); + $hour = 24 - abs($hour % 24); + if ($hour == 24) { + $hour = 0; + } + } elseif ($hour >= 24) { + $dayAdjust = floor($hour / 24); + $hour = $hour % 24; + } + $phpDateObject = new DateTime('1900-01-01 '.$hour.':'.$minute.':'.$second); + if ($dayAdjust != 0) { + $phpDateObject->modify($dayAdjust.' days'); + } + return $phpDateObject; + } + } + + + /** + * DATEVALUE + * + * Returns a value that represents a particular date. + * Use DATEVALUE to convert a date represented by a text string to an Excel or PHP date/time stamp + * value. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date + * format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * DATEVALUE(dateValue) + * + * @access public + * @category Date/Time Functions + * @param string $dateValue Text that represents a date in a Microsoft Excel date format. + * For example, "1/30/2008" or "30-Jan-2008" are text strings within + * quotation marks that represent dates. Using the default date + * system in Excel for Windows, date_text must represent a date from + * January 1, 1900, to December 31, 9999. Using the default date + * system in Excel for the Macintosh, date_text must represent a date + * from January 1, 1904, to December 31, 9999. DATEVALUE returns the + * #VALUE! error value if date_text is out of this range. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function DATEVALUE($dateValue = 1) + { + $dateValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($dateValue), '"'); + // Strip any ordinals because they're allowed in Excel (English only) + $dateValue = preg_replace('/(\d)(st|nd|rd|th)([ -\/])/Ui', '$1$3', $dateValue); + // Convert separators (/ . or space) to hyphens (should also handle dot used for ordinals in some countries, e.g. Denmark, Germany) + $dateValue = str_replace(array('/', '.', '-', ' '), array(' ', ' ', ' ', ' '), $dateValue); + + $yearFound = false; + $t1 = explode(' ', $dateValue); + foreach ($t1 as &$t) { + if ((is_numeric($t)) && ($t > 31)) { + if ($yearFound) { + return PHPExcel_Calculation_Functions::VALUE(); + } else { + if ($t < 100) { + $t += 1900; + } + $yearFound = true; + } + } + } + if ((count($t1) == 1) && (strpos($t, ':') != false)) { + // We've been fed a time value without any date + return 0.0; + } elseif (count($t1) == 2) { + // We only have two parts of the date: either day/month or month/year + if ($yearFound) { + array_unshift($t1, 1); + } else { + array_push($t1, date('Y')); + } + } + unset($t); + $dateValue = implode(' ', $t1); + + $PHPDateArray = date_parse($dateValue); + if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { + $testVal1 = strtok($dateValue, '- '); + if ($testVal1 !== false) { + $testVal2 = strtok('- '); + if ($testVal2 !== false) { + $testVal3 = strtok('- '); + if ($testVal3 === false) { + $testVal3 = strftime('%Y'); + } + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + $PHPDateArray = date_parse($testVal1.'-'.$testVal2.'-'.$testVal3); + if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { + $PHPDateArray = date_parse($testVal2.'-'.$testVal1.'-'.$testVal3); + if (($PHPDateArray === false) || ($PHPDateArray['error_count'] > 0)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + } + + if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) { + // Execute function + if ($PHPDateArray['year'] == '') { + $PHPDateArray['year'] = strftime('%Y'); + } + if ($PHPDateArray['year'] < 1900) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if ($PHPDateArray['month'] == '') { + $PHPDateArray['month'] = strftime('%m'); + } + if ($PHPDateArray['day'] == '') { + $PHPDateArray['day'] = strftime('%d'); + } + $excelDateValue = floor( + PHPExcel_Shared_Date::FormattedPHPToExcel( + $PHPDateArray['year'], + $PHPDateArray['month'], + $PHPDateArray['day'], + $PHPDateArray['hour'], + $PHPDateArray['minute'], + $PHPDateArray['second'] + ) + ); + + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) $excelDateValue; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP($excelDateValue); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return new DateTime($PHPDateArray['year'].'-'.$PHPDateArray['month'].'-'.$PHPDateArray['day'].' 00:00:00'); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * TIMEVALUE + * + * Returns a value that represents a particular time. + * Use TIMEVALUE to convert a time represented by a text string to an Excel or PHP date/time stamp + * value. + * + * NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time + * format of your regional settings. PHPExcel does not change cell formatting in this way. + * + * Excel Function: + * TIMEVALUE(timeValue) + * + * @access public + * @category Date/Time Functions + * @param string $timeValue A text string that represents a time in any one of the Microsoft + * Excel time formats; for example, "6:45 PM" and "18:45" text strings + * within quotation marks that represent time. + * Date information in time_text is ignored. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function TIMEVALUE($timeValue) + { + $timeValue = trim(PHPExcel_Calculation_Functions::flattenSingleValue($timeValue), '"'); + $timeValue = str_replace(array('/', '.'), array('-', '-'), $timeValue); + + $PHPDateArray = date_parse($timeValue); + if (($PHPDateArray !== false) && ($PHPDateArray['error_count'] == 0)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel( + $PHPDateArray['year'], + $PHPDateArray['month'], + $PHPDateArray['day'], + $PHPDateArray['hour'], + $PHPDateArray['minute'], + $PHPDateArray['second'] + ); + } else { + $excelDateValue = PHPExcel_Shared_Date::FormattedPHPToExcel(1900, 1, 1, $PHPDateArray['hour'], $PHPDateArray['minute'], $PHPDateArray['second']) - 1; + } + + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) $excelDateValue; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) $phpDateValue = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue+25569) - 3600; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return new DateTime('1900-01-01 '.$PHPDateArray['hour'].':'.$PHPDateArray['minute'].':'.$PHPDateArray['second']); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * DATEDIF + * + * @param mixed $startDate Excel date serial value, PHP date/time stamp, PHP DateTime object + * or a standard date string + * @param mixed $endDate Excel date serial value, PHP date/time stamp, PHP DateTime object + * or a standard date string + * @param string $unit + * @return integer Interval between the dates + */ + public static function DATEDIF($startDate = 0, $endDate = 0, $unit = 'D') + { + $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); + $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); + $unit = strtoupper(PHPExcel_Calculation_Functions::flattenSingleValue($unit)); + + if (is_string($startDate = self::getDateValue($startDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($endDate = self::getDateValue($endDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Validate parameters + if ($startDate >= $endDate) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $difference = $endDate - $startDate; + + $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate); + $startDays = $PHPStartDateObject->format('j'); + $startMonths = $PHPStartDateObject->format('n'); + $startYears = $PHPStartDateObject->format('Y'); + + $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate); + $endDays = $PHPEndDateObject->format('j'); + $endMonths = $PHPEndDateObject->format('n'); + $endYears = $PHPEndDateObject->format('Y'); + + $retVal = PHPExcel_Calculation_Functions::NaN(); + switch ($unit) { + case 'D': + $retVal = intval($difference); + break; + case 'M': + $retVal = intval($endMonths - $startMonths) + (intval($endYears - $startYears) * 12); + // We're only interested in full months + if ($endDays < $startDays) { + --$retVal; + } + break; + case 'Y': + $retVal = intval($endYears - $startYears); + // We're only interested in full months + if ($endMonths < $startMonths) { + --$retVal; + } elseif (($endMonths == $startMonths) && ($endDays < $startDays)) { + --$retVal; + } + break; + case 'MD': + if ($endDays < $startDays) { + $retVal = $endDays; + $PHPEndDateObject->modify('-'.$endDays.' days'); + $adjustDays = $PHPEndDateObject->format('j'); + if ($adjustDays > $startDays) { + $retVal += ($adjustDays - $startDays); + } + } else { + $retVal = $endDays - $startDays; + } + break; + case 'YM': + $retVal = intval($endMonths - $startMonths); + if ($retVal < 0) { + $retVal += 12; + } + // We're only interested in full months + if ($endDays < $startDays) { + --$retVal; + } + break; + case 'YD': + $retVal = intval($difference); + if ($endYears > $startYears) { + while ($endYears > $startYears) { + $PHPEndDateObject->modify('-1 year'); + $endYears = $PHPEndDateObject->format('Y'); + } + $retVal = $PHPEndDateObject->format('z') - $PHPStartDateObject->format('z'); + if ($retVal < 0) { + $retVal += 365; + } + } + break; + default: + $retVal = PHPExcel_Calculation_Functions::NaN(); + } + return $retVal; + } + + + /** + * DAYS360 + * + * Returns the number of days between two dates based on a 360-day year (twelve 30-day months), + * which is used in some accounting calculations. Use this function to help compute payments if + * your accounting system is based on twelve 30-day months. + * + * Excel Function: + * DAYS360(startDate,endDate[,method]) + * + * @access public + * @category Date/Time Functions + * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param boolean $method US or European Method + * FALSE or omitted: U.S. (NASD) method. If the starting date is + * the last day of a month, it becomes equal to the 30th of the + * same month. If the ending date is the last day of a month and + * the starting date is earlier than the 30th of a month, the + * ending date becomes equal to the 1st of the next month; + * otherwise the ending date becomes equal to the 30th of the + * same month. + * TRUE: European method. Starting dates and ending dates that + * occur on the 31st of a month become equal to the 30th of the + * same month. + * @return integer Number of days between start date and end date + */ + public static function DAYS360($startDate = 0, $endDate = 0, $method = false) + { + $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); + $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); + + if (is_string($startDate = self::getDateValue($startDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($endDate = self::getDateValue($endDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (!is_bool($method)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Execute function + $PHPStartDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($startDate); + $startDay = $PHPStartDateObject->format('j'); + $startMonth = $PHPStartDateObject->format('n'); + $startYear = $PHPStartDateObject->format('Y'); + + $PHPEndDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($endDate); + $endDay = $PHPEndDateObject->format('j'); + $endMonth = $PHPEndDateObject->format('n'); + $endYear = $PHPEndDateObject->format('Y'); + + return self::dateDiff360($startDay, $startMonth, $startYear, $endDay, $endMonth, $endYear, !$method); + } + + + /** + * YEARFRAC + * + * Calculates the fraction of the year represented by the number of whole days between two dates + * (the start_date and the end_date). + * Use the YEARFRAC worksheet function to identify the proportion of a whole year's benefits or + * obligations to assign to a specific term. + * + * Excel Function: + * YEARFRAC(startDate,endDate[,method]) + * + * @access public + * @category Date/Time Functions + * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param integer $method Method used for the calculation + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float fraction of the year + */ + public static function YEARFRAC($startDate = 0, $endDate = 0, $method = 0) + { + $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); + $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); + $method = PHPExcel_Calculation_Functions::flattenSingleValue($method); + + if (is_string($startDate = self::getDateValue($startDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($endDate = self::getDateValue($endDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (((is_numeric($method)) && (!is_string($method))) || ($method == '')) { + switch ($method) { + case 0: + return self::DAYS360($startDate, $endDate) / 360; + case 1: + $days = self::DATEDIF($startDate, $endDate); + $startYear = self::YEAR($startDate); + $endYear = self::YEAR($endDate); + $years = $endYear - $startYear + 1; + $leapDays = 0; + if ($years == 1) { + if (self::isLeapYear($endYear)) { + $startMonth = self::MONTHOFYEAR($startDate); + $endMonth = self::MONTHOFYEAR($endDate); + $endDay = self::DAYOFMONTH($endDate); + if (($startMonth < 3) || + (($endMonth * 100 + $endDay) >= (2 * 100 + 29))) { + $leapDays += 1; + } + } + } else { + for ($year = $startYear; $year <= $endYear; ++$year) { + if ($year == $startYear) { + $startMonth = self::MONTHOFYEAR($startDate); + $startDay = self::DAYOFMONTH($startDate); + if ($startMonth < 3) { + $leapDays += (self::isLeapYear($year)) ? 1 : 0; + } + } elseif ($year == $endYear) { + $endMonth = self::MONTHOFYEAR($endDate); + $endDay = self::DAYOFMONTH($endDate); + if (($endMonth * 100 + $endDay) >= (2 * 100 + 29)) { + $leapDays += (self::isLeapYear($year)) ? 1 : 0; + } + } else { + $leapDays += (self::isLeapYear($year)) ? 1 : 0; + } + } + if ($years == 2) { + if (($leapDays == 0) && (self::isLeapYear($startYear)) && ($days > 365)) { + $leapDays = 1; + } elseif ($days < 366) { + $years = 1; + } + } + $leapDays /= $years; + } + return $days / (365 + $leapDays); + case 2: + return self::DATEDIF($startDate, $endDate) / 360; + case 3: + return self::DATEDIF($startDate, $endDate) / 365; + case 4: + return self::DAYS360($startDate, $endDate, true) / 360; + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * NETWORKDAYS + * + * Returns the number of whole working days between start_date and end_date. Working days + * exclude weekends and any dates identified in holidays. + * Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days + * worked during a specific term. + * + * Excel Function: + * NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]]) + * + * @access public + * @category Date/Time Functions + * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date + * timestamp (integer), PHP DateTime object, or a standard date + * strings that will be excluded from the working calendar, such + * as state and federal holidays and floating holidays. + * @return integer Interval between the dates + */ + public static function NETWORKDAYS($startDate, $endDate) + { + // Retrieve the mandatory start and end date that are referenced in the function definition + $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); + $endDate = PHPExcel_Calculation_Functions::flattenSingleValue($endDate); + // Flush the mandatory start and end date that are referenced in the function definition, and get the optional days + $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + array_shift($dateArgs); + array_shift($dateArgs); + + // Validate the start and end dates + if (is_string($startDate = $sDate = self::getDateValue($startDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $startDate = (float) floor($startDate); + if (is_string($endDate = $eDate = self::getDateValue($endDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $endDate = (float) floor($endDate); + + if ($sDate > $eDate) { + $startDate = $eDate; + $endDate = $sDate; + } + + // Execute function + $startDoW = 6 - self::DAYOFWEEK($startDate, 2); + if ($startDoW < 0) { + $startDoW = 0; + } + $endDoW = self::DAYOFWEEK($endDate, 2); + if ($endDoW >= 6) { + $endDoW = 0; + } + + $wholeWeekDays = floor(($endDate - $startDate) / 7) * 5; + $partWeekDays = $endDoW + $startDoW; + if ($partWeekDays > 5) { + $partWeekDays -= 5; + } + + // Test any extra holiday parameters + $holidayCountedArray = array(); + foreach ($dateArgs as $holidayDate) { + if (is_string($holidayDate = self::getDateValue($holidayDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) { + if ((self::DAYOFWEEK($holidayDate, 2) < 6) && (!in_array($holidayDate, $holidayCountedArray))) { + --$partWeekDays; + $holidayCountedArray[] = $holidayDate; + } + } + } + + if ($sDate > $eDate) { + return 0 - ($wholeWeekDays + $partWeekDays); + } + return $wholeWeekDays + $partWeekDays; + } + + + /** + * WORKDAY + * + * Returns the date that is the indicated number of working days before or after a date (the + * starting date). Working days exclude weekends and any dates identified as holidays. + * Use WORKDAY to exclude weekends or holidays when you calculate invoice due dates, expected + * delivery times, or the number of days of work performed. + * + * Excel Function: + * WORKDAY(startDate,endDays[,holidays[,holiday[,...]]]) + * + * @access public + * @category Date/Time Functions + * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param integer $endDays The number of nonweekend and nonholiday days before or after + * startDate. A positive value for days yields a future date; a + * negative value yields a past date. + * @param mixed $holidays,... Optional series of Excel date serial value (float), PHP date + * timestamp (integer), PHP DateTime object, or a standard date + * strings that will be excluded from the working calendar, such + * as state and federal holidays and floating holidays. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function WORKDAY($startDate, $endDays) + { + // Retrieve the mandatory start date and days that are referenced in the function definition + $startDate = PHPExcel_Calculation_Functions::flattenSingleValue($startDate); + $endDays = PHPExcel_Calculation_Functions::flattenSingleValue($endDays); + // Flush the mandatory start date and days that are referenced in the function definition, and get the optional days + $dateArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + array_shift($dateArgs); + array_shift($dateArgs); + + if ((is_string($startDate = self::getDateValue($startDate))) || (!is_numeric($endDays))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $startDate = (float) floor($startDate); + $endDays = (int) floor($endDays); + // If endDays is 0, we always return startDate + if ($endDays == 0) { + return $startDate; + } + + $decrementing = ($endDays < 0) ? true : false; + + // Adjust the start date if it falls over a weekend + + $startDoW = self::DAYOFWEEK($startDate, 3); + if (self::DAYOFWEEK($startDate, 3) >= 5) { + $startDate += ($decrementing) ? -$startDoW + 4: 7 - $startDoW; + ($decrementing) ? $endDays++ : $endDays--; + } + + // Add endDays + $endDate = (float) $startDate + (intval($endDays / 5) * 7) + ($endDays % 5); + + // Adjust the calculated end date if it falls over a weekend + $endDoW = self::DAYOFWEEK($endDate, 3); + if ($endDoW >= 5) { + $endDate += ($decrementing) ? -$endDoW + 4: 7 - $endDoW; + } + + // Test any extra holiday parameters + if (!empty($dateArgs)) { + $holidayCountedArray = $holidayDates = array(); + foreach ($dateArgs as $holidayDate) { + if (($holidayDate !== null) && (trim($holidayDate) > '')) { + if (is_string($holidayDate = self::getDateValue($holidayDate))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (self::DAYOFWEEK($holidayDate, 3) < 5) { + $holidayDates[] = $holidayDate; + } + } + } + if ($decrementing) { + rsort($holidayDates, SORT_NUMERIC); + } else { + sort($holidayDates, SORT_NUMERIC); + } + foreach ($holidayDates as $holidayDate) { + if ($decrementing) { + if (($holidayDate <= $startDate) && ($holidayDate >= $endDate)) { + if (!in_array($holidayDate, $holidayCountedArray)) { + --$endDate; + $holidayCountedArray[] = $holidayDate; + } + } + } else { + if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) { + if (!in_array($holidayDate, $holidayCountedArray)) { + ++$endDate; + $holidayCountedArray[] = $holidayDate; + } + } + } + // Adjust the calculated end date if it falls over a weekend + $endDoW = self::DAYOFWEEK($endDate, 3); + if ($endDoW >= 5) { + $endDate += ($decrementing) ? -$endDoW + 4 : 7 - $endDoW; + } + } + } + + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) $endDate; + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP($endDate); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return PHPExcel_Shared_Date::ExcelToPHPObject($endDate); + } + } + + + /** + * DAYOFMONTH + * + * Returns the day of the month, for a specified date. The day is given as an integer + * ranging from 1 to 31. + * + * Excel Function: + * DAY(dateValue) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @return int Day of the month + */ + public static function DAYOFMONTH($dateValue = 1) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + + if ($dateValue === null) { + $dateValue = 1; + } elseif (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($dateValue == 0.0) { + return 0; + } elseif ($dateValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); + + return (int) $PHPDateObject->format('j'); + } + + + /** + * DAYOFWEEK + * + * Returns the day of the week for a specified date. The day is given as an integer + * ranging from 0 to 7 (dependent on the requested style). + * + * Excel Function: + * WEEKDAY(dateValue[,style]) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param int $style A number that determines the type of return value + * 1 or omitted Numbers 1 (Sunday) through 7 (Saturday). + * 2 Numbers 1 (Monday) through 7 (Sunday). + * 3 Numbers 0 (Monday) through 6 (Sunday). + * @return int Day of the week value + */ + public static function DAYOFWEEK($dateValue = 1, $style = 1) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + $style = PHPExcel_Calculation_Functions::flattenSingleValue($style); + + if (!is_numeric($style)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif (($style < 1) || ($style > 3)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $style = floor($style); + + if ($dateValue === null) { + $dateValue = 1; + } elseif (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($dateValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); + $DoW = $PHPDateObject->format('w'); + + $firstDay = 1; + switch ($style) { + case 1: + ++$DoW; + break; + case 2: + if ($DoW == 0) { + $DoW = 7; + } + break; + case 3: + if ($DoW == 0) { + $DoW = 7; + } + $firstDay = 0; + --$DoW; + break; + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL) { + // Test for Excel's 1900 leap year, and introduce the error as required + if (($PHPDateObject->format('Y') == 1900) && ($PHPDateObject->format('n') <= 2)) { + --$DoW; + if ($DoW < $firstDay) { + $DoW += 7; + } + } + } + + return (int) $DoW; + } + + + /** + * WEEKOFYEAR + * + * Returns the week of the year for a specified date. + * The WEEKNUM function considers the week containing January 1 to be the first week of the year. + * However, there is a European standard that defines the first week as the one with the majority + * of days (four or more) falling in the new year. This means that for years in which there are + * three days or less in the first week of January, the WEEKNUM function returns week numbers + * that are incorrect according to the European standard. + * + * Excel Function: + * WEEKNUM(dateValue[,style]) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param boolean $method Week begins on Sunday or Monday + * 1 or omitted Week begins on Sunday. + * 2 Week begins on Monday. + * @return int Week Number + */ + public static function WEEKOFYEAR($dateValue = 1, $method = 1) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + $method = PHPExcel_Calculation_Functions::flattenSingleValue($method); + + if (!is_numeric($method)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif (($method < 1) || ($method > 2)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $method = floor($method); + + if ($dateValue === null) { + $dateValue = 1; + } elseif (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($dateValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); + $dayOfYear = $PHPDateObject->format('z'); + $dow = $PHPDateObject->format('w'); + $PHPDateObject->modify('-' . $dayOfYear . ' days'); + $dow = $PHPDateObject->format('w'); + $daysInFirstWeek = 7 - (($dow + (2 - $method)) % 7); + $dayOfYear -= $daysInFirstWeek; + $weekOfYear = ceil($dayOfYear / 7) + 1; + + return (int) $weekOfYear; + } + + + /** + * MONTHOFYEAR + * + * Returns the month of a date represented by a serial number. + * The month is given as an integer, ranging from 1 (January) to 12 (December). + * + * Excel Function: + * MONTH(dateValue) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @return int Month of the year + */ + public static function MONTHOFYEAR($dateValue = 1) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + + if ($dateValue === null) { + $dateValue = 1; + } elseif (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($dateValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); + + return (int) $PHPDateObject->format('n'); + } + + + /** + * YEAR + * + * Returns the year corresponding to a date. + * The year is returned as an integer in the range 1900-9999. + * + * Excel Function: + * YEAR(dateValue) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @return int Year + */ + public static function YEAR($dateValue = 1) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + + if ($dateValue === null) { + $dateValue = 1; + } elseif (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($dateValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Execute function + $PHPDateObject = PHPExcel_Shared_Date::ExcelToPHPObject($dateValue); + + return (int) $PHPDateObject->format('Y'); + } + + + /** + * HOUROFDAY + * + * Returns the hour of a time value. + * The hour is given as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.). + * + * Excel Function: + * HOUR(timeValue) + * + * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard time string + * @return int Hour + */ + public static function HOUROFDAY($timeValue = 0) + { + $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); + + if (!is_numeric($timeValue)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $testVal = strtok($timeValue, '/-: '); + if (strlen($testVal) < strlen($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $timeValue = self::getTimeValue($timeValue); + if (is_string($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + // Execute function + if ($timeValue >= 1) { + $timeValue = fmod($timeValue, 1); + } elseif ($timeValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); + + return (int) gmdate('G', $timeValue); + } + + + /** + * MINUTEOFHOUR + * + * Returns the minutes of a time value. + * The minute is given as an integer, ranging from 0 to 59. + * + * Excel Function: + * MINUTE(timeValue) + * + * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard time string + * @return int Minute + */ + public static function MINUTEOFHOUR($timeValue = 0) + { + $timeValue = $timeTester = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); + + if (!is_numeric($timeValue)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $testVal = strtok($timeValue, '/-: '); + if (strlen($testVal) < strlen($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $timeValue = self::getTimeValue($timeValue); + if (is_string($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + // Execute function + if ($timeValue >= 1) { + $timeValue = fmod($timeValue, 1); + } elseif ($timeValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); + + return (int) gmdate('i', $timeValue); + } + + + /** + * SECONDOFMINUTE + * + * Returns the seconds of a time value. + * The second is given as an integer in the range 0 (zero) to 59. + * + * Excel Function: + * SECOND(timeValue) + * + * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard time string + * @return int Second + */ + public static function SECONDOFMINUTE($timeValue = 0) + { + $timeValue = PHPExcel_Calculation_Functions::flattenSingleValue($timeValue); + + if (!is_numeric($timeValue)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $testVal = strtok($timeValue, '/-: '); + if (strlen($testVal) < strlen($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $timeValue = self::getTimeValue($timeValue); + if (is_string($timeValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + // Execute function + if ($timeValue >= 1) { + $timeValue = fmod($timeValue, 1); + } elseif ($timeValue < 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $timeValue = PHPExcel_Shared_Date::ExcelToPHP($timeValue); + + return (int) gmdate('s', $timeValue); + } + + + /** + * EDATE + * + * Returns the serial number that represents the date that is the indicated number of months + * before or after a specified date (the start_date). + * Use EDATE to calculate maturity dates or due dates that fall on the same day of the month + * as the date of issue. + * + * Excel Function: + * EDATE(dateValue,adjustmentMonths) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param int $adjustmentMonths The number of months before or after start_date. + * A positive value for months yields a future date; + * a negative value yields a past date. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function EDATE($dateValue = 1, $adjustmentMonths = 0) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths); + + if (!is_numeric($adjustmentMonths)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $adjustmentMonths = floor($adjustmentMonths); + + if (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Execute function + $PHPDateObject = self::adjustDateByMonths($dateValue, $adjustmentMonths); + + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject)); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return $PHPDateObject; + } + } + + + /** + * EOMONTH + * + * Returns the date value for the last day of the month that is the indicated number of months + * before or after start_date. + * Use EOMONTH to calculate maturity dates or due dates that fall on the last day of the month. + * + * Excel Function: + * EOMONTH(dateValue,adjustmentMonths) + * + * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), + * PHP DateTime object, or a standard date string + * @param int $adjustmentMonths The number of months before or after start_date. + * A positive value for months yields a future date; + * a negative value yields a past date. + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function EOMONTH($dateValue = 1, $adjustmentMonths = 0) + { + $dateValue = PHPExcel_Calculation_Functions::flattenSingleValue($dateValue); + $adjustmentMonths = PHPExcel_Calculation_Functions::flattenSingleValue($adjustmentMonths); + + if (!is_numeric($adjustmentMonths)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $adjustmentMonths = floor($adjustmentMonths); + + if (is_string($dateValue = self::getDateValue($dateValue))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Execute function + $PHPDateObject = self::adjustDateByMonths($dateValue, $adjustmentMonths+1); + $adjustDays = (int) $PHPDateObject->format('d'); + $adjustDaysString = '-' . $adjustDays . ' days'; + $PHPDateObject->modify($adjustDaysString); + + switch (PHPExcel_Calculation_Functions::getReturnDateType()) { + case PHPExcel_Calculation_Functions::RETURNDATE_EXCEL: + return (float) PHPExcel_Shared_Date::PHPToExcel($PHPDateObject); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC: + return (integer) PHPExcel_Shared_Date::ExcelToPHP(PHPExcel_Shared_Date::PHPToExcel($PHPDateObject)); + case PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT: + return $PHPDateObject; + } + } +} diff --git a/assets/excel/PHPExcel/Calculation/Engineering.php b/assets/excel/PHPExcel/Calculation/Engineering.php new file mode 100644 index 0000000..75e2784 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Engineering.php @@ -0,0 +1,2650 @@ + array('Group' => 'Mass', 'Unit Name' => 'Gram', 'AllowPrefix' => true), + 'sg' => array('Group' => 'Mass', 'Unit Name' => 'Slug', 'AllowPrefix' => false), + 'lbm' => array('Group' => 'Mass', 'Unit Name' => 'Pound mass (avoirdupois)', 'AllowPrefix' => false), + 'u' => array('Group' => 'Mass', 'Unit Name' => 'U (atomic mass unit)', 'AllowPrefix' => true), + 'ozm' => array('Group' => 'Mass', 'Unit Name' => 'Ounce mass (avoirdupois)', 'AllowPrefix' => false), + 'm' => array('Group' => 'Distance', 'Unit Name' => 'Meter', 'AllowPrefix' => true), + 'mi' => array('Group' => 'Distance', 'Unit Name' => 'Statute mile', 'AllowPrefix' => false), + 'Nmi' => array('Group' => 'Distance', 'Unit Name' => 'Nautical mile', 'AllowPrefix' => false), + 'in' => array('Group' => 'Distance', 'Unit Name' => 'Inch', 'AllowPrefix' => false), + 'ft' => array('Group' => 'Distance', 'Unit Name' => 'Foot', 'AllowPrefix' => false), + 'yd' => array('Group' => 'Distance', 'Unit Name' => 'Yard', 'AllowPrefix' => false), + 'ang' => array('Group' => 'Distance', 'Unit Name' => 'Angstrom', 'AllowPrefix' => true), + 'Pica' => array('Group' => 'Distance', 'Unit Name' => 'Pica (1/72 in)', 'AllowPrefix' => false), + 'yr' => array('Group' => 'Time', 'Unit Name' => 'Year', 'AllowPrefix' => false), + 'day' => array('Group' => 'Time', 'Unit Name' => 'Day', 'AllowPrefix' => false), + 'hr' => array('Group' => 'Time', 'Unit Name' => 'Hour', 'AllowPrefix' => false), + 'mn' => array('Group' => 'Time', 'Unit Name' => 'Minute', 'AllowPrefix' => false), + 'sec' => array('Group' => 'Time', 'Unit Name' => 'Second', 'AllowPrefix' => true), + 'Pa' => array('Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => true), + 'p' => array('Group' => 'Pressure', 'Unit Name' => 'Pascal', 'AllowPrefix' => true), + 'atm' => array('Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => true), + 'at' => array('Group' => 'Pressure', 'Unit Name' => 'Atmosphere', 'AllowPrefix' => true), + 'mmHg' => array('Group' => 'Pressure', 'Unit Name' => 'mm of Mercury', 'AllowPrefix' => true), + 'N' => array('Group' => 'Force', 'Unit Name' => 'Newton', 'AllowPrefix' => true), + 'dyn' => array('Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => true), + 'dy' => array('Group' => 'Force', 'Unit Name' => 'Dyne', 'AllowPrefix' => true), + 'lbf' => array('Group' => 'Force', 'Unit Name' => 'Pound force', 'AllowPrefix' => false), + 'J' => array('Group' => 'Energy', 'Unit Name' => 'Joule', 'AllowPrefix' => true), + 'e' => array('Group' => 'Energy', 'Unit Name' => 'Erg', 'AllowPrefix' => true), + 'c' => array('Group' => 'Energy', 'Unit Name' => 'Thermodynamic calorie', 'AllowPrefix' => true), + 'cal' => array('Group' => 'Energy', 'Unit Name' => 'IT calorie', 'AllowPrefix' => true), + 'eV' => array('Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => true), + 'ev' => array('Group' => 'Energy', 'Unit Name' => 'Electron volt', 'AllowPrefix' => true), + 'HPh' => array('Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => false), + 'hh' => array('Group' => 'Energy', 'Unit Name' => 'Horsepower-hour', 'AllowPrefix' => false), + 'Wh' => array('Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => true), + 'wh' => array('Group' => 'Energy', 'Unit Name' => 'Watt-hour', 'AllowPrefix' => true), + 'flb' => array('Group' => 'Energy', 'Unit Name' => 'Foot-pound', 'AllowPrefix' => false), + 'BTU' => array('Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => false), + 'btu' => array('Group' => 'Energy', 'Unit Name' => 'BTU', 'AllowPrefix' => false), + 'HP' => array('Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => false), + 'h' => array('Group' => 'Power', 'Unit Name' => 'Horsepower', 'AllowPrefix' => false), + 'W' => array('Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => true), + 'w' => array('Group' => 'Power', 'Unit Name' => 'Watt', 'AllowPrefix' => true), + 'T' => array('Group' => 'Magnetism', 'Unit Name' => 'Tesla', 'AllowPrefix' => true), + 'ga' => array('Group' => 'Magnetism', 'Unit Name' => 'Gauss', 'AllowPrefix' => true), + 'C' => array('Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => false), + 'cel' => array('Group' => 'Temperature', 'Unit Name' => 'Celsius', 'AllowPrefix' => false), + 'F' => array('Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => false), + 'fah' => array('Group' => 'Temperature', 'Unit Name' => 'Fahrenheit', 'AllowPrefix' => false), + 'K' => array('Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => false), + 'kel' => array('Group' => 'Temperature', 'Unit Name' => 'Kelvin', 'AllowPrefix' => false), + 'tsp' => array('Group' => 'Liquid', 'Unit Name' => 'Teaspoon', 'AllowPrefix' => false), + 'tbs' => array('Group' => 'Liquid', 'Unit Name' => 'Tablespoon', 'AllowPrefix' => false), + 'oz' => array('Group' => 'Liquid', 'Unit Name' => 'Fluid Ounce', 'AllowPrefix' => false), + 'cup' => array('Group' => 'Liquid', 'Unit Name' => 'Cup', 'AllowPrefix' => false), + 'pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => false), + 'us_pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.S. Pint', 'AllowPrefix' => false), + 'uk_pt' => array('Group' => 'Liquid', 'Unit Name' => 'U.K. Pint', 'AllowPrefix' => false), + 'qt' => array('Group' => 'Liquid', 'Unit Name' => 'Quart', 'AllowPrefix' => false), + 'gal' => array('Group' => 'Liquid', 'Unit Name' => 'Gallon', 'AllowPrefix' => false), + 'l' => array('Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => true), + 'lt' => array('Group' => 'Liquid', 'Unit Name' => 'Litre', 'AllowPrefix' => true), + ); + + /** + * Details of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM() + * + * @var mixed[] + */ + private static $conversionMultipliers = array( + 'Y' => array('multiplier' => 1E24, 'name' => 'yotta'), + 'Z' => array('multiplier' => 1E21, 'name' => 'zetta'), + 'E' => array('multiplier' => 1E18, 'name' => 'exa'), + 'P' => array('multiplier' => 1E15, 'name' => 'peta'), + 'T' => array('multiplier' => 1E12, 'name' => 'tera'), + 'G' => array('multiplier' => 1E9, 'name' => 'giga'), + 'M' => array('multiplier' => 1E6, 'name' => 'mega'), + 'k' => array('multiplier' => 1E3, 'name' => 'kilo'), + 'h' => array('multiplier' => 1E2, 'name' => 'hecto'), + 'e' => array('multiplier' => 1E1, 'name' => 'deka'), + 'd' => array('multiplier' => 1E-1, 'name' => 'deci'), + 'c' => array('multiplier' => 1E-2, 'name' => 'centi'), + 'm' => array('multiplier' => 1E-3, 'name' => 'milli'), + 'u' => array('multiplier' => 1E-6, 'name' => 'micro'), + 'n' => array('multiplier' => 1E-9, 'name' => 'nano'), + 'p' => array('multiplier' => 1E-12, 'name' => 'pico'), + 'f' => array('multiplier' => 1E-15, 'name' => 'femto'), + 'a' => array('multiplier' => 1E-18, 'name' => 'atto'), + 'z' => array('multiplier' => 1E-21, 'name' => 'zepto'), + 'y' => array('multiplier' => 1E-24, 'name' => 'yocto'), + ); + + /** + * Details of the Units of measure conversion factors, organised by group + * + * @var mixed[] + */ + private static $unitConversions = array( + 'Mass' => array( + 'g' => array( + 'g' => 1.0, + 'sg' => 6.85220500053478E-05, + 'lbm' => 2.20462291469134E-03, + 'u' => 6.02217000000000E+23, + 'ozm' => 3.52739718003627E-02, + ), + 'sg' => array( + 'g' => 1.45938424189287E+04, + 'sg' => 1.0, + 'lbm' => 3.21739194101647E+01, + 'u' => 8.78866000000000E+27, + 'ozm' => 5.14782785944229E+02, + ), + 'lbm' => array( + 'g' => 4.5359230974881148E+02, + 'sg' => 3.10810749306493E-02, + 'lbm' => 1.0, + 'u' => 2.73161000000000E+26, + 'ozm' => 1.60000023429410E+01, + ), + 'u' => array( + 'g' => 1.66053100460465E-24, + 'sg' => 1.13782988532950E-28, + 'lbm' => 3.66084470330684E-27, + 'u' => 1.0, + 'ozm' => 5.85735238300524E-26, + ), + 'ozm' => array( + 'g' => 2.83495152079732E+01, + 'sg' => 1.94256689870811E-03, + 'lbm' => 6.24999908478882E-02, + 'u' => 1.70725600000000E+25, + 'ozm' => 1.0, + ), + ), + 'Distance' => array( + 'm' => array( + 'm' => 1.0, + 'mi' => 6.21371192237334E-04, + 'Nmi' => 5.39956803455724E-04, + 'in' => 3.93700787401575E+01, + 'ft' => 3.28083989501312E+00, + 'yd' => 1.09361329797891E+00, + 'ang' => 1.00000000000000E+10, + 'Pica' => 2.83464566929116E+03, + ), + 'mi' => array( + 'm' => 1.60934400000000E+03, + 'mi' => 1.0, + 'Nmi' => 8.68976241900648E-01, + 'in' => 6.33600000000000E+04, + 'ft' => 5.28000000000000E+03, + 'yd' => 1.76000000000000E+03, + 'ang' => 1.60934400000000E+13, + 'Pica' => 4.56191999999971E+06, + ), + 'Nmi' => array( + 'm' => 1.85200000000000E+03, + 'mi' => 1.15077944802354E+00, + 'Nmi' => 1.0, + 'in' => 7.29133858267717E+04, + 'ft' => 6.07611548556430E+03, + 'yd' => 2.02537182785694E+03, + 'ang' => 1.85200000000000E+13, + 'Pica' => 5.24976377952723E+06, + ), + 'in' => array( + 'm' => 2.54000000000000E-02, + 'mi' => 1.57828282828283E-05, + 'Nmi' => 1.37149028077754E-05, + 'in' => 1.0, + 'ft' => 8.33333333333333E-02, + 'yd' => 2.77777777686643E-02, + 'ang' => 2.54000000000000E+08, + 'Pica' => 7.19999999999955E+01, + ), + 'ft' => array( + 'm' => 3.04800000000000E-01, + 'mi' => 1.89393939393939E-04, + 'Nmi' => 1.64578833693305E-04, + 'in' => 1.20000000000000E+01, + 'ft' => 1.0, + 'yd' => 3.33333333223972E-01, + 'ang' => 3.04800000000000E+09, + 'Pica' => 8.63999999999946E+02, + ), + 'yd' => array( + 'm' => 9.14400000300000E-01, + 'mi' => 5.68181818368230E-04, + 'Nmi' => 4.93736501241901E-04, + 'in' => 3.60000000118110E+01, + 'ft' => 3.00000000000000E+00, + 'yd' => 1.0, + 'ang' => 9.14400000300000E+09, + 'Pica' => 2.59200000085023E+03, + ), + 'ang' => array( + 'm' => 1.00000000000000E-10, + 'mi' => 6.21371192237334E-14, + 'Nmi' => 5.39956803455724E-14, + 'in' => 3.93700787401575E-09, + 'ft' => 3.28083989501312E-10, + 'yd' => 1.09361329797891E-10, + 'ang' => 1.0, + 'Pica' => 2.83464566929116E-07, + ), + 'Pica' => array( + 'm' => 3.52777777777800E-04, + 'mi' => 2.19205948372629E-07, + 'Nmi' => 1.90484761219114E-07, + 'in' => 1.38888888888898E-02, + 'ft' => 1.15740740740748E-03, + 'yd' => 3.85802469009251E-04, + 'ang' => 3.52777777777800E+06, + 'Pica' => 1.0, + ), + ), + 'Time' => array( + 'yr' => array( + 'yr' => 1.0, + 'day' => 365.25, + 'hr' => 8766.0, + 'mn' => 525960.0, + 'sec' => 31557600.0, + ), + 'day' => array( + 'yr' => 2.73785078713210E-03, + 'day' => 1.0, + 'hr' => 24.0, + 'mn' => 1440.0, + 'sec' => 86400.0, + ), + 'hr' => array( + 'yr' => 1.14077116130504E-04, + 'day' => 4.16666666666667E-02, + 'hr' => 1.0, + 'mn' => 60.0, + 'sec' => 3600.0, + ), + 'mn' => array( + 'yr' => 1.90128526884174E-06, + 'day' => 6.94444444444444E-04, + 'hr' => 1.66666666666667E-02, + 'mn' => 1.0, + 'sec' => 60.0, + ), + 'sec' => array( + 'yr' => 3.16880878140289E-08, + 'day' => 1.15740740740741E-05, + 'hr' => 2.77777777777778E-04, + 'mn' => 1.66666666666667E-02, + 'sec' => 1.0, + ), + ), + 'Pressure' => array( + 'Pa' => array( + 'Pa' => 1.0, + 'p' => 1.0, + 'atm' => 9.86923299998193E-06, + 'at' => 9.86923299998193E-06, + 'mmHg' => 7.50061707998627E-03, + ), + 'p' => array( + 'Pa' => 1.0, + 'p' => 1.0, + 'atm' => 9.86923299998193E-06, + 'at' => 9.86923299998193E-06, + 'mmHg' => 7.50061707998627E-03, + ), + 'atm' => array( + 'Pa' => 1.01324996583000E+05, + 'p' => 1.01324996583000E+05, + 'atm' => 1.0, + 'at' => 1.0, + 'mmHg' => 760.0, + ), + 'at' => array( + 'Pa' => 1.01324996583000E+05, + 'p' => 1.01324996583000E+05, + 'atm' => 1.0, + 'at' => 1.0, + 'mmHg' => 760.0, + ), + 'mmHg' => array( + 'Pa' => 1.33322363925000E+02, + 'p' => 1.33322363925000E+02, + 'atm' => 1.31578947368421E-03, + 'at' => 1.31578947368421E-03, + 'mmHg' => 1.0, + ), + ), + 'Force' => array( + 'N' => array( + 'N' => 1.0, + 'dyn' => 1.0E+5, + 'dy' => 1.0E+5, + 'lbf' => 2.24808923655339E-01, + ), + 'dyn' => array( + 'N' => 1.0E-5, + 'dyn' => 1.0, + 'dy' => 1.0, + 'lbf' => 2.24808923655339E-06, + ), + 'dy' => array( + 'N' => 1.0E-5, + 'dyn' => 1.0, + 'dy' => 1.0, + 'lbf' => 2.24808923655339E-06, + ), + 'lbf' => array( + 'N' => 4.448222, + 'dyn' => 4.448222E+5, + 'dy' => 4.448222E+5, + 'lbf' => 1.0, + ), + ), + 'Energy' => array( + 'J' => array( + 'J' => 1.0, + 'e' => 9.99999519343231E+06, + 'c' => 2.39006249473467E-01, + 'cal' => 2.38846190642017E-01, + 'eV' => 6.24145700000000E+18, + 'ev' => 6.24145700000000E+18, + 'HPh' => 3.72506430801000E-07, + 'hh' => 3.72506430801000E-07, + 'Wh' => 2.77777916238711E-04, + 'wh' => 2.77777916238711E-04, + 'flb' => 2.37304222192651E+01, + 'BTU' => 9.47815067349015E-04, + 'btu' => 9.47815067349015E-04, + ), + 'e' => array( + 'J' => 1.00000048065700E-07, + 'e' => 1.0, + 'c' => 2.39006364353494E-08, + 'cal' => 2.38846305445111E-08, + 'eV' => 6.24146000000000E+11, + 'ev' => 6.24146000000000E+11, + 'HPh' => 3.72506609848824E-14, + 'hh' => 3.72506609848824E-14, + 'Wh' => 2.77778049754611E-11, + 'wh' => 2.77778049754611E-11, + 'flb' => 2.37304336254586E-06, + 'BTU' => 9.47815522922962E-11, + 'btu' => 9.47815522922962E-11, + ), + 'c' => array( + 'J' => 4.18399101363672E+00, + 'e' => 4.18398900257312E+07, + 'c' => 1.0, + 'cal' => 9.99330315287563E-01, + 'eV' => 2.61142000000000E+19, + 'ev' => 2.61142000000000E+19, + 'HPh' => 1.55856355899327E-06, + 'hh' => 1.55856355899327E-06, + 'Wh' => 1.16222030532950E-03, + 'wh' => 1.16222030532950E-03, + 'flb' => 9.92878733152102E+01, + 'BTU' => 3.96564972437776E-03, + 'btu' => 3.96564972437776E-03, + ), + 'cal' => array( + 'J' => 4.18679484613929E+00, + 'e' => 4.18679283372801E+07, + 'c' => 1.00067013349059E+00, + 'cal' => 1.0, + 'eV' => 2.61317000000000E+19, + 'ev' => 2.61317000000000E+19, + 'HPh' => 1.55960800463137E-06, + 'hh' => 1.55960800463137E-06, + 'Wh' => 1.16299914807955E-03, + 'wh' => 1.16299914807955E-03, + 'flb' => 9.93544094443283E+01, + 'BTU' => 3.96830723907002E-03, + 'btu' => 3.96830723907002E-03, + ), + 'eV' => array( + 'J' => 1.60219000146921E-19, + 'e' => 1.60218923136574E-12, + 'c' => 3.82933423195043E-20, + 'cal' => 3.82676978535648E-20, + 'eV' => 1.0, + 'ev' => 1.0, + 'HPh' => 5.96826078912344E-26, + 'hh' => 5.96826078912344E-26, + 'Wh' => 4.45053000026614E-23, + 'wh' => 4.45053000026614E-23, + 'flb' => 3.80206452103492E-18, + 'BTU' => 1.51857982414846E-22, + 'btu' => 1.51857982414846E-22, + ), + 'ev' => array( + 'J' => 1.60219000146921E-19, + 'e' => 1.60218923136574E-12, + 'c' => 3.82933423195043E-20, + 'cal' => 3.82676978535648E-20, + 'eV' => 1.0, + 'ev' => 1.0, + 'HPh' => 5.96826078912344E-26, + 'hh' => 5.96826078912344E-26, + 'Wh' => 4.45053000026614E-23, + 'wh' => 4.45053000026614E-23, + 'flb' => 3.80206452103492E-18, + 'BTU' => 1.51857982414846E-22, + 'btu' => 1.51857982414846E-22, + ), + 'HPh' => array( + 'J' => 2.68451741316170E+06, + 'e' => 2.68451612283024E+13, + 'c' => 6.41616438565991E+05, + 'cal' => 6.41186757845835E+05, + 'eV' => 1.67553000000000E+25, + 'ev' => 1.67553000000000E+25, + 'HPh' => 1.0, + 'hh' => 1.0, + 'Wh' => 7.45699653134593E+02, + 'wh' => 7.45699653134593E+02, + 'flb' => 6.37047316692964E+07, + 'BTU' => 2.54442605275546E+03, + 'btu' => 2.54442605275546E+03, + ), + 'hh' => array( + 'J' => 2.68451741316170E+06, + 'e' => 2.68451612283024E+13, + 'c' => 6.41616438565991E+05, + 'cal' => 6.41186757845835E+05, + 'eV' => 1.67553000000000E+25, + 'ev' => 1.67553000000000E+25, + 'HPh' => 1.0, + 'hh' => 1.0, + 'Wh' => 7.45699653134593E+02, + 'wh' => 7.45699653134593E+02, + 'flb' => 6.37047316692964E+07, + 'BTU' => 2.54442605275546E+03, + 'btu' => 2.54442605275546E+03, + ), + 'Wh' => array( + 'J' => 3.59999820554720E+03, + 'e' => 3.59999647518369E+10, + 'c' => 8.60422069219046E+02, + 'cal' => 8.59845857713046E+02, + 'eV' => 2.24692340000000E+22, + 'ev' => 2.24692340000000E+22, + 'HPh' => 1.34102248243839E-03, + 'hh' => 1.34102248243839E-03, + 'Wh' => 1.0, + 'wh' => 1.0, + 'flb' => 8.54294774062316E+04, + 'BTU' => 3.41213254164705E+00, + 'btu' => 3.41213254164705E+00, + ), + 'wh' => array( + 'J' => 3.59999820554720E+03, + 'e' => 3.59999647518369E+10, + 'c' => 8.60422069219046E+02, + 'cal' => 8.59845857713046E+02, + 'eV' => 2.24692340000000E+22, + 'ev' => 2.24692340000000E+22, + 'HPh' => 1.34102248243839E-03, + 'hh' => 1.34102248243839E-03, + 'Wh' => 1.0, + 'wh' => 1.0, + 'flb' => 8.54294774062316E+04, + 'BTU' => 3.41213254164705E+00, + 'btu' => 3.41213254164705E+00, + ), + 'flb' => array( + 'J' => 4.21400003236424E-02, + 'e' => 4.21399800687660E+05, + 'c' => 1.00717234301644E-02, + 'cal' => 1.00649785509554E-02, + 'eV' => 2.63015000000000E+17, + 'ev' => 2.63015000000000E+17, + 'HPh' => 1.56974211145130E-08, + 'hh' => 1.56974211145130E-08, + 'Wh' => 1.17055614802000E-05, + 'wh' => 1.17055614802000E-05, + 'flb' => 1.0, + 'BTU' => 3.99409272448406E-05, + 'btu' => 3.99409272448406E-05, + ), + 'BTU' => array( + 'J' => 1.05505813786749E+03, + 'e' => 1.05505763074665E+10, + 'c' => 2.52165488508168E+02, + 'cal' => 2.51996617135510E+02, + 'eV' => 6.58510000000000E+21, + 'ev' => 6.58510000000000E+21, + 'HPh' => 3.93015941224568E-04, + 'hh' => 3.93015941224568E-04, + 'Wh' => 2.93071851047526E-01, + 'wh' => 2.93071851047526E-01, + 'flb' => 2.50369750774671E+04, + 'BTU' => 1.0, + 'btu' => 1.0, + ), + 'btu' => array( + 'J' => 1.05505813786749E+03, + 'e' => 1.05505763074665E+10, + 'c' => 2.52165488508168E+02, + 'cal' => 2.51996617135510E+02, + 'eV' => 6.58510000000000E+21, + 'ev' => 6.58510000000000E+21, + 'HPh' => 3.93015941224568E-04, + 'hh' => 3.93015941224568E-04, + 'Wh' => 2.93071851047526E-01, + 'wh' => 2.93071851047526E-01, + 'flb' => 2.50369750774671E+04, + 'BTU' => 1.0, + 'btu' => 1.0, + ), + ), + 'Power' => array( + 'HP' => array( + 'HP' => 1.0, + 'h' => 1.0, + 'W' => 7.45701000000000E+02, + 'w' => 7.45701000000000E+02, + ), + 'h' => array( + 'HP' => 1.0, + 'h' => 1.0, + 'W' => 7.45701000000000E+02, + 'w' => 7.45701000000000E+02, + ), + 'W' => array( + 'HP' => 1.34102006031908E-03, + 'h' => 1.34102006031908E-03, + 'W' => 1.0, + 'w' => 1.0, + ), + 'w' => array( + 'HP' => 1.34102006031908E-03, + 'h' => 1.34102006031908E-03, + 'W' => 1.0, + 'w' => 1.0, + ), + ), + 'Magnetism' => array( + 'T' => array( + 'T' => 1.0, + 'ga' => 10000.0, + ), + 'ga' => array( + 'T' => 0.0001, + 'ga' => 1.0, + ), + ), + 'Liquid' => array( + 'tsp' => array( + 'tsp' => 1.0, + 'tbs' => 3.33333333333333E-01, + 'oz' => 1.66666666666667E-01, + 'cup' => 2.08333333333333E-02, + 'pt' => 1.04166666666667E-02, + 'us_pt' => 1.04166666666667E-02, + 'uk_pt' => 8.67558516821960E-03, + 'qt' => 5.20833333333333E-03, + 'gal' => 1.30208333333333E-03, + 'l' => 4.92999408400710E-03, + 'lt' => 4.92999408400710E-03, + ), + 'tbs' => array( + 'tsp' => 3.00000000000000E+00, + 'tbs' => 1.0, + 'oz' => 5.00000000000000E-01, + 'cup' => 6.25000000000000E-02, + 'pt' => 3.12500000000000E-02, + 'us_pt' => 3.12500000000000E-02, + 'uk_pt' => 2.60267555046588E-02, + 'qt' => 1.56250000000000E-02, + 'gal' => 3.90625000000000E-03, + 'l' => 1.47899822520213E-02, + 'lt' => 1.47899822520213E-02, + ), + 'oz' => array( + 'tsp' => 6.00000000000000E+00, + 'tbs' => 2.00000000000000E+00, + 'oz' => 1.0, + 'cup' => 1.25000000000000E-01, + 'pt' => 6.25000000000000E-02, + 'us_pt' => 6.25000000000000E-02, + 'uk_pt' => 5.20535110093176E-02, + 'qt' => 3.12500000000000E-02, + 'gal' => 7.81250000000000E-03, + 'l' => 2.95799645040426E-02, + 'lt' => 2.95799645040426E-02, + ), + 'cup' => array( + 'tsp' => 4.80000000000000E+01, + 'tbs' => 1.60000000000000E+01, + 'oz' => 8.00000000000000E+00, + 'cup' => 1.0, + 'pt' => 5.00000000000000E-01, + 'us_pt' => 5.00000000000000E-01, + 'uk_pt' => 4.16428088074541E-01, + 'qt' => 2.50000000000000E-01, + 'gal' => 6.25000000000000E-02, + 'l' => 2.36639716032341E-01, + 'lt' => 2.36639716032341E-01, + ), + 'pt' => array( + 'tsp' => 9.60000000000000E+01, + 'tbs' => 3.20000000000000E+01, + 'oz' => 1.60000000000000E+01, + 'cup' => 2.00000000000000E+00, + 'pt' => 1.0, + 'us_pt' => 1.0, + 'uk_pt' => 8.32856176149081E-01, + 'qt' => 5.00000000000000E-01, + 'gal' => 1.25000000000000E-01, + 'l' => 4.73279432064682E-01, + 'lt' => 4.73279432064682E-01, + ), + 'us_pt' => array( + 'tsp' => 9.60000000000000E+01, + 'tbs' => 3.20000000000000E+01, + 'oz' => 1.60000000000000E+01, + 'cup' => 2.00000000000000E+00, + 'pt' => 1.0, + 'us_pt' => 1.0, + 'uk_pt' => 8.32856176149081E-01, + 'qt' => 5.00000000000000E-01, + 'gal' => 1.25000000000000E-01, + 'l' => 4.73279432064682E-01, + 'lt' => 4.73279432064682E-01, + ), + 'uk_pt' => array( + 'tsp' => 1.15266000000000E+02, + 'tbs' => 3.84220000000000E+01, + 'oz' => 1.92110000000000E+01, + 'cup' => 2.40137500000000E+00, + 'pt' => 1.20068750000000E+00, + 'us_pt' => 1.20068750000000E+00, + 'uk_pt' => 1.0, + 'qt' => 6.00343750000000E-01, + 'gal' => 1.50085937500000E-01, + 'l' => 5.68260698087162E-01, + 'lt' => 5.68260698087162E-01, + ), + 'qt' => array( + 'tsp' => 1.92000000000000E+02, + 'tbs' => 6.40000000000000E+01, + 'oz' => 3.20000000000000E+01, + 'cup' => 4.00000000000000E+00, + 'pt' => 2.00000000000000E+00, + 'us_pt' => 2.00000000000000E+00, + 'uk_pt' => 1.66571235229816E+00, + 'qt' => 1.0, + 'gal' => 2.50000000000000E-01, + 'l' => 9.46558864129363E-01, + 'lt' => 9.46558864129363E-01, + ), + 'gal' => array( + 'tsp' => 7.68000000000000E+02, + 'tbs' => 2.56000000000000E+02, + 'oz' => 1.28000000000000E+02, + 'cup' => 1.60000000000000E+01, + 'pt' => 8.00000000000000E+00, + 'us_pt' => 8.00000000000000E+00, + 'uk_pt' => 6.66284940919265E+00, + 'qt' => 4.00000000000000E+00, + 'gal' => 1.0, + 'l' => 3.78623545651745E+00, + 'lt' => 3.78623545651745E+00, + ), + 'l' => array( + 'tsp' => 2.02840000000000E+02, + 'tbs' => 6.76133333333333E+01, + 'oz' => 3.38066666666667E+01, + 'cup' => 4.22583333333333E+00, + 'pt' => 2.11291666666667E+00, + 'us_pt' => 2.11291666666667E+00, + 'uk_pt' => 1.75975569552166E+00, + 'qt' => 1.05645833333333E+00, + 'gal' => 2.64114583333333E-01, + 'l' => 1.0, + 'lt' => 1.0, + ), + 'lt' => array( + 'tsp' => 2.02840000000000E+02, + 'tbs' => 6.76133333333333E+01, + 'oz' => 3.38066666666667E+01, + 'cup' => 4.22583333333333E+00, + 'pt' => 2.11291666666667E+00, + 'us_pt' => 2.11291666666667E+00, + 'uk_pt' => 1.75975569552166E+00, + 'qt' => 1.05645833333333E+00, + 'gal' => 2.64114583333333E-01, + 'l' => 1.0, + 'lt' => 1.0, + ), + ), + ); + + + /** + * parseComplex + * + * Parses a complex number into its real and imaginary parts, and an I or J suffix + * + * @param string $complexNumber The complex number + * @return string[] Indexed on "real", "imaginary" and "suffix" + */ + public static function parseComplex($complexNumber) + { + $workString = (string) $complexNumber; + + $realNumber = $imaginary = 0; + // Extract the suffix, if there is one + $suffix = substr($workString, -1); + if (!is_numeric($suffix)) { + $workString = substr($workString, 0, -1); + } else { + $suffix = ''; + } + + // Split the input into its Real and Imaginary components + $leadingSign = 0; + if (strlen($workString) > 0) { + $leadingSign = (($workString{0} == '+') || ($workString{0} == '-')) ? 1 : 0; + } + $power = ''; + $realNumber = strtok($workString, '+-'); + if (strtoupper(substr($realNumber, -1)) == 'E') { + $power = strtok('+-'); + ++$leadingSign; + } + + $realNumber = substr($workString, 0, strlen($realNumber)+strlen($power)+$leadingSign); + + if ($suffix != '') { + $imaginary = substr($workString, strlen($realNumber)); + + if (($imaginary == '') && (($realNumber == '') || ($realNumber == '+') || ($realNumber == '-'))) { + $imaginary = $realNumber.'1'; + $realNumber = '0'; + } elseif ($imaginary == '') { + $imaginary = $realNumber; + $realNumber = '0'; + } elseif (($imaginary == '+') || ($imaginary == '-')) { + $imaginary .= '1'; + } + } + + return array( + 'real' => $realNumber, + 'imaginary' => $imaginary, + 'suffix' => $suffix + ); + } + + + /** + * Cleans the leading characters in a complex number string + * + * @param string $complexNumber The complex number to clean + * @return string The "cleaned" complex number + */ + private static function cleanComplex($complexNumber) + { + if ($complexNumber{0} == '+') { + $complexNumber = substr($complexNumber, 1); + } + if ($complexNumber{0} == '0') { + $complexNumber = substr($complexNumber, 1); + } + if ($complexNumber{0} == '.') { + $complexNumber = '0'.$complexNumber; + } + if ($complexNumber{0} == '+') { + $complexNumber = substr($complexNumber, 1); + } + return $complexNumber; + } + + /** + * Formats a number base string value with leading zeroes + * + * @param string $xVal The "number" to pad + * @param integer $places The length that we want to pad this value + * @return string The padded "number" + */ + private static function nbrConversionFormat($xVal, $places) + { + if (!is_null($places)) { + if (strlen($xVal) <= $places) { + return substr(str_pad($xVal, $places, '0', STR_PAD_LEFT), -10); + } else { + return PHPExcel_Calculation_Functions::NaN(); + } + } + + return substr($xVal, -10); + } + + /** + * BESSELI + * + * Returns the modified Bessel function In(x), which is equivalent to the Bessel function evaluated + * for purely imaginary arguments + * + * Excel Function: + * BESSELI(x,ord) + * + * @access public + * @category Engineering Functions + * @param float $x The value at which to evaluate the function. + * If x is nonnumeric, BESSELI returns the #VALUE! error value. + * @param integer $ord The order of the Bessel function. + * If ord is not an integer, it is truncated. + * If $ord is nonnumeric, BESSELI returns the #VALUE! error value. + * If $ord < 0, BESSELI returns the #NUM! error value. + * @return float + * + */ + public static function BESSELI($x, $ord) + { + $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); + $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); + + if ((is_numeric($x)) && (is_numeric($ord))) { + $ord = floor($ord); + if ($ord < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + if (abs($x) <= 30) { + $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord); + $ordK = 1; + $fSqrX = ($x * $x) / 4; + do { + $fTerm *= $fSqrX; + $fTerm /= ($ordK * ($ordK + $ord)); + $fResult += $fTerm; + } while ((abs($fTerm) > 1e-12) && (++$ordK < 100)); + } else { + $f_2_PI = 2 * M_PI; + + $fXAbs = abs($x); + $fResult = exp($fXAbs) / sqrt($f_2_PI * $fXAbs); + if (($ord & 1) && ($x < 0)) { + $fResult = -$fResult; + } + } + return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * BESSELJ + * + * Returns the Bessel function + * + * Excel Function: + * BESSELJ(x,ord) + * + * @access public + * @category Engineering Functions + * @param float $x The value at which to evaluate the function. + * If x is nonnumeric, BESSELJ returns the #VALUE! error value. + * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. + * If $ord is nonnumeric, BESSELJ returns the #VALUE! error value. + * If $ord < 0, BESSELJ returns the #NUM! error value. + * @return float + * + */ + public static function BESSELJ($x, $ord) + { + $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); + $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); + + if ((is_numeric($x)) && (is_numeric($ord))) { + $ord = floor($ord); + if ($ord < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $fResult = 0; + if (abs($x) <= 30) { + $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord); + $ordK = 1; + $fSqrX = ($x * $x) / -4; + do { + $fTerm *= $fSqrX; + $fTerm /= ($ordK * ($ordK + $ord)); + $fResult += $fTerm; + } while ((abs($fTerm) > 1e-12) && (++$ordK < 100)); + } else { + $f_PI_DIV_2 = M_PI / 2; + $f_PI_DIV_4 = M_PI / 4; + + $fXAbs = abs($x); + $fResult = sqrt(M_2DIVPI / $fXAbs) * cos($fXAbs - $ord * $f_PI_DIV_2 - $f_PI_DIV_4); + if (($ord & 1) && ($x < 0)) { + $fResult = -$fResult; + } + } + return (is_nan($fResult)) ? PHPExcel_Calculation_Functions::NaN() : $fResult; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + private static function besselK0($fNum) + { + if ($fNum <= 2) { + $fNum2 = $fNum * 0.5; + $y = ($fNum2 * $fNum2); + $fRet = -log($fNum2) * self::BESSELI($fNum, 0) + + (-0.57721566 + $y * (0.42278420 + $y * (0.23069756 + $y * (0.3488590e-1 + $y * (0.262698e-2 + $y * + (0.10750e-3 + $y * 0.74e-5)))))); + } else { + $y = 2 / $fNum; + $fRet = exp(-$fNum) / sqrt($fNum) * + (1.25331414 + $y * (-0.7832358e-1 + $y * (0.2189568e-1 + $y * (-0.1062446e-1 + $y * + (0.587872e-2 + $y * (-0.251540e-2 + $y * 0.53208e-3)))))); + } + return $fRet; + } + + + private static function besselK1($fNum) + { + if ($fNum <= 2) { + $fNum2 = $fNum * 0.5; + $y = ($fNum2 * $fNum2); + $fRet = log($fNum2) * self::BESSELI($fNum, 1) + + (1 + $y * (0.15443144 + $y * (-0.67278579 + $y * (-0.18156897 + $y * (-0.1919402e-1 + $y * + (-0.110404e-2 + $y * (-0.4686e-4))))))) / $fNum; + } else { + $y = 2 / $fNum; + $fRet = exp(-$fNum) / sqrt($fNum) * + (1.25331414 + $y * (0.23498619 + $y * (-0.3655620e-1 + $y * (0.1504268e-1 + $y * (-0.780353e-2 + $y * + (0.325614e-2 + $y * (-0.68245e-3))))))); + } + return $fRet; + } + + + /** + * BESSELK + * + * Returns the modified Bessel function Kn(x), which is equivalent to the Bessel functions evaluated + * for purely imaginary arguments. + * + * Excel Function: + * BESSELK(x,ord) + * + * @access public + * @category Engineering Functions + * @param float $x The value at which to evaluate the function. + * If x is nonnumeric, BESSELK returns the #VALUE! error value. + * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. + * If $ord is nonnumeric, BESSELK returns the #VALUE! error value. + * If $ord < 0, BESSELK returns the #NUM! error value. + * @return float + * + */ + public static function BESSELK($x, $ord) + { + $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); + $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); + + if ((is_numeric($x)) && (is_numeric($ord))) { + if (($ord < 0) || ($x == 0.0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + switch (floor($ord)) { + case 0: + return self::besselK0($x); + case 1: + return self::besselK1($x); + default: + $fTox = 2 / $x; + $fBkm = self::besselK0($x); + $fBk = self::besselK1($x); + for ($n = 1; $n < $ord; ++$n) { + $fBkp = $fBkm + $n * $fTox * $fBk; + $fBkm = $fBk; + $fBk = $fBkp; + } + } + return (is_nan($fBk)) ? PHPExcel_Calculation_Functions::NaN() : $fBk; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + private static function besselY0($fNum) + { + if ($fNum < 8.0) { + $y = ($fNum * $fNum); + $f1 = -2957821389.0 + $y * (7062834065.0 + $y * (-512359803.6 + $y * (10879881.29 + $y * (-86327.92757 + $y * 228.4622733)))); + $f2 = 40076544269.0 + $y * (745249964.8 + $y * (7189466.438 + $y * (47447.26470 + $y * (226.1030244 + $y)))); + $fRet = $f1 / $f2 + 0.636619772 * self::BESSELJ($fNum, 0) * log($fNum); + } else { + $z = 8.0 / $fNum; + $y = ($z * $z); + $xx = $fNum - 0.785398164; + $f1 = 1 + $y * (-0.1098628627e-2 + $y * (0.2734510407e-4 + $y * (-0.2073370639e-5 + $y * 0.2093887211e-6))); + $f2 = -0.1562499995e-1 + $y * (0.1430488765e-3 + $y * (-0.6911147651e-5 + $y * (0.7621095161e-6 + $y * (-0.934945152e-7)))); + $fRet = sqrt(0.636619772 / $fNum) * (sin($xx) * $f1 + $z * cos($xx) * $f2); + } + return $fRet; + } + + + private static function besselY1($fNum) + { + if ($fNum < 8.0) { + $y = ($fNum * $fNum); + $f1 = $fNum * (-0.4900604943e13 + $y * (0.1275274390e13 + $y * (-0.5153438139e11 + $y * (0.7349264551e9 + $y * + (-0.4237922726e7 + $y * 0.8511937935e4))))); + $f2 = 0.2499580570e14 + $y * (0.4244419664e12 + $y * (0.3733650367e10 + $y * (0.2245904002e8 + $y * + (0.1020426050e6 + $y * (0.3549632885e3 + $y))))); + $fRet = $f1 / $f2 + 0.636619772 * ( self::BESSELJ($fNum, 1) * log($fNum) - 1 / $fNum); + } else { + $fRet = sqrt(0.636619772 / $fNum) * sin($fNum - 2.356194491); + } + return $fRet; + } + + + /** + * BESSELY + * + * Returns the Bessel function, which is also called the Weber function or the Neumann function. + * + * Excel Function: + * BESSELY(x,ord) + * + * @access public + * @category Engineering Functions + * @param float $x The value at which to evaluate the function. + * If x is nonnumeric, BESSELK returns the #VALUE! error value. + * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. + * If $ord is nonnumeric, BESSELK returns the #VALUE! error value. + * If $ord < 0, BESSELK returns the #NUM! error value. + * + * @return float + */ + public static function BESSELY($x, $ord) + { + $x = (is_null($x)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x); + $ord = (is_null($ord)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord); + + if ((is_numeric($x)) && (is_numeric($ord))) { + if (($ord < 0) || ($x == 0.0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + switch (floor($ord)) { + case 0: + return self::besselY0($x); + case 1: + return self::besselY1($x); + default: + $fTox = 2 / $x; + $fBym = self::besselY0($x); + $fBy = self::besselY1($x); + for ($n = 1; $n < $ord; ++$n) { + $fByp = $n * $fTox * $fBy - $fBym; + $fBym = $fBy; + $fBy = $fByp; + } + } + return (is_nan($fBy)) ? PHPExcel_Calculation_Functions::NaN() : $fBy; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * BINTODEC + * + * Return a binary value as decimal. + * + * Excel Function: + * BIN2DEC(x) + * + * @access public + * @category Engineering Functions + * @param string $x The binary number (as a string) that you want to convert. The number + * cannot contain more than 10 characters (10 bits). The most significant + * bit of number is the sign bit. The remaining 9 bits are magnitude bits. + * Negative numbers are represented using two's-complement notation. + * If number is not a valid binary number, or if number contains more than + * 10 characters (10 bits), BIN2DEC returns the #NUM! error value. + * @return string + */ + public static function BINTODEC($x) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $x = floor($x); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (strlen($x) > 10) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (strlen($x) == 10) { + // Two's Complement + $x = substr($x, -9); + return '-'.(512-bindec($x)); + } + return bindec($x); + } + + + /** + * BINTOHEX + * + * Return a binary value as hex. + * + * Excel Function: + * BIN2HEX(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The binary number (as a string) that you want to convert. The number + * cannot contain more than 10 characters (10 bits). The most significant + * bit of number is the sign bit. The remaining 9 bits are magnitude bits. + * Negative numbers are represented using two's-complement notation. + * If number is not a valid binary number, or if number contains more than + * 10 characters (10 bits), BIN2HEX returns the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, BIN2HEX uses the + * minimum number of characters necessary. Places is useful for padding the + * return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, BIN2HEX returns the #VALUE! error value. + * If places is negative, BIN2HEX returns the #NUM! error value. + * @return string + */ + public static function BINTOHEX($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $x = floor($x); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (strlen($x) > 10) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (strlen($x) == 10) { + // Two's Complement + return str_repeat('F', 8).substr(strtoupper(dechex(bindec(substr($x, -9)))), -2); + } + $hexVal = (string) strtoupper(dechex(bindec($x))); + + return self::nbrConversionFormat($hexVal, $places); + } + + + /** + * BINTOOCT + * + * Return a binary value as octal. + * + * Excel Function: + * BIN2OCT(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The binary number (as a string) that you want to convert. The number + * cannot contain more than 10 characters (10 bits). The most significant + * bit of number is the sign bit. The remaining 9 bits are magnitude bits. + * Negative numbers are represented using two's-complement notation. + * If number is not a valid binary number, or if number contains more than + * 10 characters (10 bits), BIN2OCT returns the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, BIN2OCT uses the + * minimum number of characters necessary. Places is useful for padding the + * return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, BIN2OCT returns the #VALUE! error value. + * If places is negative, BIN2OCT returns the #NUM! error value. + * @return string + */ + public static function BINTOOCT($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $x = floor($x); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[01]/', $x, $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (strlen($x) > 10) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (strlen($x) == 10) { + // Two's Complement + return str_repeat('7', 7).substr(strtoupper(decoct(bindec(substr($x, -9)))), -3); + } + $octVal = (string) decoct(bindec($x)); + + return self::nbrConversionFormat($octVal, $places); + } + + + /** + * DECTOBIN + * + * Return a decimal value as binary. + * + * Excel Function: + * DEC2BIN(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The decimal integer you want to convert. If number is negative, + * valid place values are ignored and DEC2BIN returns a 10-character + * (10-bit) binary number in which the most significant bit is the sign + * bit. The remaining 9 bits are magnitude bits. Negative numbers are + * represented using two's-complement notation. + * If number < -512 or if number > 511, DEC2BIN returns the #NUM! error + * value. + * If number is nonnumeric, DEC2BIN returns the #VALUE! error value. + * If DEC2BIN requires more than places characters, it returns the #NUM! + * error value. + * @param integer $places The number of characters to use. If places is omitted, DEC2BIN uses + * the minimum number of characters necessary. Places is useful for + * padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, DEC2BIN returns the #VALUE! error value. + * If places is zero or negative, DEC2BIN returns the #NUM! error value. + * @return string + */ + public static function DECTOBIN($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) floor($x); + $r = decbin($x); + if (strlen($r) == 32) { + // Two's Complement + $r = substr($r, -10); + } elseif (strlen($r) > 11) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return self::nbrConversionFormat($r, $places); + } + + + /** + * DECTOHEX + * + * Return a decimal value as hex. + * + * Excel Function: + * DEC2HEX(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The decimal integer you want to convert. If number is negative, + * places is ignored and DEC2HEX returns a 10-character (40-bit) + * hexadecimal number in which the most significant bit is the sign + * bit. The remaining 39 bits are magnitude bits. Negative numbers + * are represented using two's-complement notation. + * If number < -549,755,813,888 or if number > 549,755,813,887, + * DEC2HEX returns the #NUM! error value. + * If number is nonnumeric, DEC2HEX returns the #VALUE! error value. + * If DEC2HEX requires more than places characters, it returns the + * #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, DEC2HEX uses + * the minimum number of characters necessary. Places is useful for + * padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, DEC2HEX returns the #VALUE! error value. + * If places is zero or negative, DEC2HEX returns the #NUM! error value. + * @return string + */ + public static function DECTOHEX($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) floor($x); + $r = strtoupper(dechex($x)); + if (strlen($r) == 8) { + // Two's Complement + $r = 'FF'.$r; + } + + return self::nbrConversionFormat($r, $places); + } + + + /** + * DECTOOCT + * + * Return an decimal value as octal. + * + * Excel Function: + * DEC2OCT(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The decimal integer you want to convert. If number is negative, + * places is ignored and DEC2OCT returns a 10-character (30-bit) + * octal number in which the most significant bit is the sign bit. + * The remaining 29 bits are magnitude bits. Negative numbers are + * represented using two's-complement notation. + * If number < -536,870,912 or if number > 536,870,911, DEC2OCT + * returns the #NUM! error value. + * If number is nonnumeric, DEC2OCT returns the #VALUE! error value. + * If DEC2OCT requires more than places characters, it returns the + * #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, DEC2OCT uses + * the minimum number of characters necessary. Places is useful for + * padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, DEC2OCT returns the #VALUE! error value. + * If places is zero or negative, DEC2OCT returns the #NUM! error value. + * @return string + */ + public static function DECTOOCT($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $x = (int) $x; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) floor($x); + $r = decoct($x); + if (strlen($r) == 11) { + // Two's Complement + $r = substr($r, -10); + } + + return self::nbrConversionFormat($r, $places); + } + + + /** + * HEXTOBIN + * + * Return a hex value as binary. + * + * Excel Function: + * HEX2BIN(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x the hexadecimal number you want to convert. Number cannot + * contain more than 10 characters. The most significant bit of + * number is the sign bit (40th bit from the right). The remaining + * 9 bits are magnitude bits. Negative numbers are represented + * using two's-complement notation. + * If number is negative, HEX2BIN ignores places and returns a + * 10-character binary number. + * If number is negative, it cannot be less than FFFFFFFE00, and + * if number is positive, it cannot be greater than 1FF. + * If number is not a valid hexadecimal number, HEX2BIN returns + * the #NUM! error value. + * If HEX2BIN requires more than places characters, it returns + * the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, + * HEX2BIN uses the minimum number of characters necessary. Places + * is useful for padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, HEX2BIN returns the #VALUE! error value. + * If places is negative, HEX2BIN returns the #NUM! error value. + * @return string + */ + public static function HEXTOBIN($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $binVal = decbin(hexdec($x)); + + return substr(self::nbrConversionFormat($binVal, $places), -10); + } + + + /** + * HEXTODEC + * + * Return a hex value as decimal. + * + * Excel Function: + * HEX2DEC(x) + * + * @access public + * @category Engineering Functions + * @param string $x The hexadecimal number you want to convert. This number cannot + * contain more than 10 characters (40 bits). The most significant + * bit of number is the sign bit. The remaining 39 bits are magnitude + * bits. Negative numbers are represented using two's-complement + * notation. + * If number is not a valid hexadecimal number, HEX2DEC returns the + * #NUM! error value. + * @return string + */ + public static function HEXTODEC($x) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return hexdec($x); + } + + + /** + * HEXTOOCT + * + * Return a hex value as octal. + * + * Excel Function: + * HEX2OCT(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The hexadecimal number you want to convert. Number cannot + * contain more than 10 characters. The most significant bit of + * number is the sign bit. The remaining 39 bits are magnitude + * bits. Negative numbers are represented using two's-complement + * notation. + * If number is negative, HEX2OCT ignores places and returns a + * 10-character octal number. + * If number is negative, it cannot be less than FFE0000000, and + * if number is positive, it cannot be greater than 1FFFFFFF. + * If number is not a valid hexadecimal number, HEX2OCT returns + * the #NUM! error value. + * If HEX2OCT requires more than places characters, it returns + * the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, HEX2OCT + * uses the minimum number of characters necessary. Places is + * useful for padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, HEX2OCT returns the #VALUE! error + * value. + * If places is negative, HEX2OCT returns the #NUM! error value. + * @return string + */ + public static function HEXTOOCT($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (strlen($x) > preg_match_all('/[0123456789ABCDEF]/', strtoupper($x), $out)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $octVal = decoct(hexdec($x)); + + return self::nbrConversionFormat($octVal, $places); + } // function HEXTOOCT() + + + /** + * OCTTOBIN + * + * Return an octal value as binary. + * + * Excel Function: + * OCT2BIN(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The octal number you want to convert. Number may not + * contain more than 10 characters. The most significant + * bit of number is the sign bit. The remaining 29 bits + * are magnitude bits. Negative numbers are represented + * using two's-complement notation. + * If number is negative, OCT2BIN ignores places and returns + * a 10-character binary number. + * If number is negative, it cannot be less than 7777777000, + * and if number is positive, it cannot be greater than 777. + * If number is not a valid octal number, OCT2BIN returns + * the #NUM! error value. + * If OCT2BIN requires more than places characters, it + * returns the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, + * OCT2BIN uses the minimum number of characters necessary. + * Places is useful for padding the return value with + * leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, OCT2BIN returns the #VALUE! + * error value. + * If places is negative, OCT2BIN returns the #NUM! error + * value. + * @return string + */ + public static function OCTTOBIN($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $r = decbin(octdec($x)); + + return self::nbrConversionFormat($r, $places); + } + + + /** + * OCTTODEC + * + * Return an octal value as decimal. + * + * Excel Function: + * OCT2DEC(x) + * + * @access public + * @category Engineering Functions + * @param string $x The octal number you want to convert. Number may not contain + * more than 10 octal characters (30 bits). The most significant + * bit of number is the sign bit. The remaining 29 bits are + * magnitude bits. Negative numbers are represented using + * two's-complement notation. + * If number is not a valid octal number, OCT2DEC returns the + * #NUM! error value. + * @return string + */ + public static function OCTTODEC($x) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return octdec($x); + } + + + /** + * OCTTOHEX + * + * Return an octal value as hex. + * + * Excel Function: + * OCT2HEX(x[,places]) + * + * @access public + * @category Engineering Functions + * @param string $x The octal number you want to convert. Number may not contain + * more than 10 octal characters (30 bits). The most significant + * bit of number is the sign bit. The remaining 29 bits are + * magnitude bits. Negative numbers are represented using + * two's-complement notation. + * If number is negative, OCT2HEX ignores places and returns a + * 10-character hexadecimal number. + * If number is not a valid octal number, OCT2HEX returns the + * #NUM! error value. + * If OCT2HEX requires more than places characters, it returns + * the #NUM! error value. + * @param integer $places The number of characters to use. If places is omitted, OCT2HEX + * uses the minimum number of characters necessary. Places is useful + * for padding the return value with leading 0s (zeros). + * If places is not an integer, it is truncated. + * If places is nonnumeric, OCT2HEX returns the #VALUE! error value. + * If places is negative, OCT2HEX returns the #NUM! error value. + * @return string + */ + public static function OCTTOHEX($x, $places = null) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $places = PHPExcel_Calculation_Functions::flattenSingleValue($places); + + if (is_bool($x)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $x = (string) $x; + if (preg_match_all('/[01234567]/', $x, $out) != strlen($x)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $hexVal = strtoupper(dechex(octdec($x))); + + return self::nbrConversionFormat($hexVal, $places); + } + + + /** + * COMPLEX + * + * Converts real and imaginary coefficients into a complex number of the form x + yi or x + yj. + * + * Excel Function: + * COMPLEX(realNumber,imaginary[,places]) + * + * @access public + * @category Engineering Functions + * @param float $realNumber The real coefficient of the complex number. + * @param float $imaginary The imaginary coefficient of the complex number. + * @param string $suffix The suffix for the imaginary component of the complex number. + * If omitted, the suffix is assumed to be "i". + * @return string + */ + public static function COMPLEX($realNumber = 0.0, $imaginary = 0.0, $suffix = 'i') + { + $realNumber = (is_null($realNumber)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($realNumber); + $imaginary = (is_null($imaginary)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($imaginary); + $suffix = (is_null($suffix)) ? 'i' : PHPExcel_Calculation_Functions::flattenSingleValue($suffix); + + if (((is_numeric($realNumber)) && (is_numeric($imaginary))) && + (($suffix == 'i') || ($suffix == 'j') || ($suffix == ''))) { + $realNumber = (float) $realNumber; + $imaginary = (float) $imaginary; + + if ($suffix == '') { + $suffix = 'i'; + } + if ($realNumber == 0.0) { + if ($imaginary == 0.0) { + return (string) '0'; + } elseif ($imaginary == 1.0) { + return (string) $suffix; + } elseif ($imaginary == -1.0) { + return (string) '-'.$suffix; + } + return (string) $imaginary.$suffix; + } elseif ($imaginary == 0.0) { + return (string) $realNumber; + } elseif ($imaginary == 1.0) { + return (string) $realNumber.'+'.$suffix; + } elseif ($imaginary == -1.0) { + return (string) $realNumber.'-'.$suffix; + } + if ($imaginary > 0) { + $imaginary = (string) '+'.$imaginary; + } + return (string) $realNumber.$imaginary.$suffix; + } + + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * IMAGINARY + * + * Returns the imaginary coefficient of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMAGINARY(complexNumber) + * + * @access public + * @category Engineering Functions + * @param string $complexNumber The complex number for which you want the imaginary + * coefficient. + * @return float + */ + public static function IMAGINARY($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + return $parsedComplex['imaginary']; + } + + + /** + * IMREAL + * + * Returns the real coefficient of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMREAL(complexNumber) + * + * @access public + * @category Engineering Functions + * @param string $complexNumber The complex number for which you want the real coefficient. + * @return float + */ + public static function IMREAL($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + return $parsedComplex['real']; + } + + + /** + * IMABS + * + * Returns the absolute value (modulus) of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMABS(complexNumber) + * + * @param string $complexNumber The complex number for which you want the absolute value. + * @return float + */ + public static function IMABS($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + return sqrt( + ($parsedComplex['real'] * $parsedComplex['real']) + + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']) + ); + } + + + /** + * IMARGUMENT + * + * Returns the argument theta of a complex number, i.e. the angle in radians from the real + * axis to the representation of the number in polar coordinates. + * + * Excel Function: + * IMARGUMENT(complexNumber) + * + * @param string $complexNumber The complex number for which you want the argument theta. + * @return float + */ + public static function IMARGUMENT($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if ($parsedComplex['real'] == 0.0) { + if ($parsedComplex['imaginary'] == 0.0) { + return 0.0; + } elseif ($parsedComplex['imaginary'] < 0.0) { + return M_PI / -2; + } else { + return M_PI / 2; + } + } elseif ($parsedComplex['real'] > 0.0) { + return atan($parsedComplex['imaginary'] / $parsedComplex['real']); + } elseif ($parsedComplex['imaginary'] < 0.0) { + return 0 - (M_PI - atan(abs($parsedComplex['imaginary']) / abs($parsedComplex['real']))); + } else { + return M_PI - atan($parsedComplex['imaginary'] / abs($parsedComplex['real'])); + } + } + + + /** + * IMCONJUGATE + * + * Returns the complex conjugate of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMCONJUGATE(complexNumber) + * + * @param string $complexNumber The complex number for which you want the conjugate. + * @return string + */ + public static function IMCONJUGATE($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if ($parsedComplex['imaginary'] == 0.0) { + return $parsedComplex['real']; + } else { + return self::cleanComplex( + self::COMPLEX( + $parsedComplex['real'], + 0 - $parsedComplex['imaginary'], + $parsedComplex['suffix'] + ) + ); + } + } + + + /** + * IMCOS + * + * Returns the cosine of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMCOS(complexNumber) + * + * @param string $complexNumber The complex number for which you want the cosine. + * @return string|float + */ + public static function IMCOS($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if ($parsedComplex['imaginary'] == 0.0) { + return cos($parsedComplex['real']); + } else { + return self::IMCONJUGATE( + self::COMPLEX( + cos($parsedComplex['real']) * cosh($parsedComplex['imaginary']), + sin($parsedComplex['real']) * sinh($parsedComplex['imaginary']), + $parsedComplex['suffix'] + ) + ); + } + } + + + /** + * IMSIN + * + * Returns the sine of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMSIN(complexNumber) + * + * @param string $complexNumber The complex number for which you want the sine. + * @return string|float + */ + public static function IMSIN($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if ($parsedComplex['imaginary'] == 0.0) { + return sin($parsedComplex['real']); + } else { + return self::COMPLEX( + sin($parsedComplex['real']) * cosh($parsedComplex['imaginary']), + cos($parsedComplex['real']) * sinh($parsedComplex['imaginary']), + $parsedComplex['suffix'] + ); + } + } + + + /** + * IMSQRT + * + * Returns the square root of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMSQRT(complexNumber) + * + * @param string $complexNumber The complex number for which you want the square root. + * @return string + */ + public static function IMSQRT($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + $theta = self::IMARGUMENT($complexNumber); + $d1 = cos($theta / 2); + $d2 = sin($theta / 2); + $r = sqrt(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']))); + + if ($parsedComplex['suffix'] == '') { + return self::COMPLEX($d1 * $r, $d2 * $r); + } else { + return self::COMPLEX($d1 * $r, $d2 * $r, $parsedComplex['suffix']); + } + } + + + /** + * IMLN + * + * Returns the natural logarithm of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMLN(complexNumber) + * + * @param string $complexNumber The complex number for which you want the natural logarithm. + * @return string + */ + public static function IMLN($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $logR = log(sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary']))); + $t = self::IMARGUMENT($complexNumber); + + if ($parsedComplex['suffix'] == '') { + return self::COMPLEX($logR, $t); + } else { + return self::COMPLEX($logR, $t, $parsedComplex['suffix']); + } + } + + + /** + * IMLOG10 + * + * Returns the common logarithm (base 10) of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMLOG10(complexNumber) + * + * @param string $complexNumber The complex number for which you want the common logarithm. + * @return string + */ + public static function IMLOG10($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return log10($parsedComplex['real']); + } + + return self::IMPRODUCT(log10(EULER), self::IMLN($complexNumber)); + } + + + /** + * IMLOG2 + * + * Returns the base-2 logarithm of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMLOG2(complexNumber) + * + * @param string $complexNumber The complex number for which you want the base-2 logarithm. + * @return string + */ + public static function IMLOG2($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($parsedComplex['real'] > 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return log($parsedComplex['real'], 2); + } + + return self::IMPRODUCT(log(EULER, 2), self::IMLN($complexNumber)); + } + + + /** + * IMEXP + * + * Returns the exponential of a complex number in x + yi or x + yj text format. + * + * Excel Function: + * IMEXP(complexNumber) + * + * @param string $complexNumber The complex number for which you want the exponential. + * @return string + */ + public static function IMEXP($complexNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + + $parsedComplex = self::parseComplex($complexNumber); + + if (($parsedComplex['real'] == 0.0) && ($parsedComplex['imaginary'] == 0.0)) { + return '1'; + } + + $e = exp($parsedComplex['real']); + $eX = $e * cos($parsedComplex['imaginary']); + $eY = $e * sin($parsedComplex['imaginary']); + + if ($parsedComplex['suffix'] == '') { + return self::COMPLEX($eX, $eY); + } else { + return self::COMPLEX($eX, $eY, $parsedComplex['suffix']); + } + } + + + /** + * IMPOWER + * + * Returns a complex number in x + yi or x + yj text format raised to a power. + * + * Excel Function: + * IMPOWER(complexNumber,realNumber) + * + * @param string $complexNumber The complex number you want to raise to a power. + * @param float $realNumber The power to which you want to raise the complex number. + * @return string + */ + public static function IMPOWER($complexNumber, $realNumber) + { + $complexNumber = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber); + $realNumber = PHPExcel_Calculation_Functions::flattenSingleValue($realNumber); + + if (!is_numeric($realNumber)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $parsedComplex = self::parseComplex($complexNumber); + + $r = sqrt(($parsedComplex['real'] * $parsedComplex['real']) + ($parsedComplex['imaginary'] * $parsedComplex['imaginary'])); + $rPower = pow($r, $realNumber); + $theta = self::IMARGUMENT($complexNumber) * $realNumber; + if ($theta == 0) { + return 1; + } elseif ($parsedComplex['imaginary'] == 0.0) { + return self::COMPLEX($rPower * cos($theta), $rPower * sin($theta), $parsedComplex['suffix']); + } else { + return self::COMPLEX($rPower * cos($theta), $rPower * sin($theta), $parsedComplex['suffix']); + } + } + + + /** + * IMDIV + * + * Returns the quotient of two complex numbers in x + yi or x + yj text format. + * + * Excel Function: + * IMDIV(complexDividend,complexDivisor) + * + * @param string $complexDividend The complex numerator or dividend. + * @param string $complexDivisor The complex denominator or divisor. + * @return string + */ + public static function IMDIV($complexDividend, $complexDivisor) + { + $complexDividend = PHPExcel_Calculation_Functions::flattenSingleValue($complexDividend); + $complexDivisor = PHPExcel_Calculation_Functions::flattenSingleValue($complexDivisor); + + $parsedComplexDividend = self::parseComplex($complexDividend); + $parsedComplexDivisor = self::parseComplex($complexDivisor); + + if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] != '') && + ($parsedComplexDividend['suffix'] != $parsedComplexDivisor['suffix'])) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (($parsedComplexDividend['suffix'] != '') && ($parsedComplexDivisor['suffix'] == '')) { + $parsedComplexDivisor['suffix'] = $parsedComplexDividend['suffix']; + } + + $d1 = ($parsedComplexDividend['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['imaginary']); + $d2 = ($parsedComplexDividend['imaginary'] * $parsedComplexDivisor['real']) - ($parsedComplexDividend['real'] * $parsedComplexDivisor['imaginary']); + $d3 = ($parsedComplexDivisor['real'] * $parsedComplexDivisor['real']) + ($parsedComplexDivisor['imaginary'] * $parsedComplexDivisor['imaginary']); + + $r = $d1 / $d3; + $i = $d2 / $d3; + + if ($i > 0.0) { + return self::cleanComplex($r.'+'.$i.$parsedComplexDivisor['suffix']); + } elseif ($i < 0.0) { + return self::cleanComplex($r.$i.$parsedComplexDivisor['suffix']); + } else { + return $r; + } + } + + + /** + * IMSUB + * + * Returns the difference of two complex numbers in x + yi or x + yj text format. + * + * Excel Function: + * IMSUB(complexNumber1,complexNumber2) + * + * @param string $complexNumber1 The complex number from which to subtract complexNumber2. + * @param string $complexNumber2 The complex number to subtract from complexNumber1. + * @return string + */ + public static function IMSUB($complexNumber1, $complexNumber2) + { + $complexNumber1 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber1); + $complexNumber2 = PHPExcel_Calculation_Functions::flattenSingleValue($complexNumber2); + + $parsedComplex1 = self::parseComplex($complexNumber1); + $parsedComplex2 = self::parseComplex($complexNumber2); + + if ((($parsedComplex1['suffix'] != '') && ($parsedComplex2['suffix'] != '')) && + ($parsedComplex1['suffix'] != $parsedComplex2['suffix'])) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($parsedComplex1['suffix'] == '') && ($parsedComplex2['suffix'] != '')) { + $parsedComplex1['suffix'] = $parsedComplex2['suffix']; + } + + $d1 = $parsedComplex1['real'] - $parsedComplex2['real']; + $d2 = $parsedComplex1['imaginary'] - $parsedComplex2['imaginary']; + + return self::COMPLEX($d1, $d2, $parsedComplex1['suffix']); + } + + + /** + * IMSUM + * + * Returns the sum of two or more complex numbers in x + yi or x + yj text format. + * + * Excel Function: + * IMSUM(complexNumber[,complexNumber[,...]]) + * + * @param string $complexNumber,... Series of complex numbers to add + * @return string + */ + public static function IMSUM() + { + // Return value + $returnValue = self::parseComplex('0'); + $activeSuffix = ''; + + // Loop through the arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + $parsedComplex = self::parseComplex($arg); + + if ($activeSuffix == '') { + $activeSuffix = $parsedComplex['suffix']; + } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $returnValue['real'] += $parsedComplex['real']; + $returnValue['imaginary'] += $parsedComplex['imaginary']; + } + + if ($returnValue['imaginary'] == 0.0) { + $activeSuffix = ''; + } + return self::COMPLEX($returnValue['real'], $returnValue['imaginary'], $activeSuffix); + } + + + /** + * IMPRODUCT + * + * Returns the product of two or more complex numbers in x + yi or x + yj text format. + * + * Excel Function: + * IMPRODUCT(complexNumber[,complexNumber[,...]]) + * + * @param string $complexNumber,... Series of complex numbers to multiply + * @return string + */ + public static function IMPRODUCT() + { + // Return value + $returnValue = self::parseComplex('1'); + $activeSuffix = ''; + + // Loop through the arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + $parsedComplex = self::parseComplex($arg); + + $workValue = $returnValue; + if (($parsedComplex['suffix'] != '') && ($activeSuffix == '')) { + $activeSuffix = $parsedComplex['suffix']; + } elseif (($parsedComplex['suffix'] != '') && ($activeSuffix != $parsedComplex['suffix'])) { + return PHPExcel_Calculation_Functions::NaN(); + } + $returnValue['real'] = ($workValue['real'] * $parsedComplex['real']) - ($workValue['imaginary'] * $parsedComplex['imaginary']); + $returnValue['imaginary'] = ($workValue['real'] * $parsedComplex['imaginary']) + ($workValue['imaginary'] * $parsedComplex['real']); + } + + if ($returnValue['imaginary'] == 0.0) { + $activeSuffix = ''; + } + return self::COMPLEX($returnValue['real'], $returnValue['imaginary'], $activeSuffix); + } + + + /** + * DELTA + * + * Tests whether two values are equal. Returns 1 if number1 = number2; returns 0 otherwise. + * Use this function to filter a set of values. For example, by summing several DELTA + * functions you calculate the count of equal pairs. This function is also known as the + * Kronecker Delta function. + * + * Excel Function: + * DELTA(a[,b]) + * + * @param float $a The first number. + * @param float $b The second number. If omitted, b is assumed to be zero. + * @return int + */ + public static function DELTA($a, $b = 0) + { + $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); + $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); + + return (int) ($a == $b); + } + + + /** + * GESTEP + * + * Excel Function: + * GESTEP(number[,step]) + * + * Returns 1 if number >= step; returns 0 (zero) otherwise + * Use this function to filter a set of values. For example, by summing several GESTEP + * functions you calculate the count of values that exceed a threshold. + * + * @param float $number The value to test against step. + * @param float $step The threshold value. + * If you omit a value for step, GESTEP uses zero. + * @return int + */ + public static function GESTEP($number, $step = 0) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $step = PHPExcel_Calculation_Functions::flattenSingleValue($step); + + return (int) ($number >= $step); + } + + + // + // Private method to calculate the erf value + // + private static $twoSqrtPi = 1.128379167095512574; + + public static function erfVal($x) + { + if (abs($x) > 2.2) { + return 1 - self::erfcVal($x); + } + $sum = $term = $x; + $xsqr = ($x * $x); + $j = 1; + do { + $term *= $xsqr / $j; + $sum -= $term / (2 * $j + 1); + ++$j; + $term *= $xsqr / $j; + $sum += $term / (2 * $j + 1); + ++$j; + if ($sum == 0.0) { + break; + } + } while (abs($term / $sum) > PRECISION); + return self::$twoSqrtPi * $sum; + } + + + /** + * ERF + * + * Returns the error function integrated between the lower and upper bound arguments. + * + * Note: In Excel 2007 or earlier, if you input a negative value for the upper or lower bound arguments, + * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was + * improved, so that it can now calculate the function for both positive and negative ranges. + * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments. + * + * Excel Function: + * ERF(lower[,upper]) + * + * @param float $lower lower bound for integrating ERF + * @param float $upper upper bound for integrating ERF. + * If omitted, ERF integrates between zero and lower_limit + * @return float + */ + public static function ERF($lower, $upper = null) + { + $lower = PHPExcel_Calculation_Functions::flattenSingleValue($lower); + $upper = PHPExcel_Calculation_Functions::flattenSingleValue($upper); + + if (is_numeric($lower)) { + if (is_null($upper)) { + return self::erfVal($lower); + } + if (is_numeric($upper)) { + return self::erfVal($upper) - self::erfVal($lower); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + // + // Private method to calculate the erfc value + // + private static $oneSqrtPi = 0.564189583547756287; + + private static function erfcVal($x) + { + if (abs($x) < 2.2) { + return 1 - self::erfVal($x); + } + if ($x < 0) { + return 2 - self::ERFC(-$x); + } + $a = $n = 1; + $b = $c = $x; + $d = ($x * $x) + 0.5; + $q1 = $q2 = $b / $d; + $t = 0; + do { + $t = $a * $n + $b * $x; + $a = $b; + $b = $t; + $t = $c * $n + $d * $x; + $c = $d; + $d = $t; + $n += 0.5; + $q1 = $q2; + $q2 = $b / $d; + } while ((abs($q1 - $q2) / $q2) > PRECISION); + return self::$oneSqrtPi * exp(-$x * $x) * $q2; + } + + + /** + * ERFC + * + * Returns the complementary ERF function integrated between x and infinity + * + * Note: In Excel 2007 or earlier, if you input a negative value for the lower bound argument, + * the function would return a #NUM! error. However, in Excel 2010, the function algorithm was + * improved, so that it can now calculate the function for both positive and negative x values. + * PHPExcel follows Excel 2010 behaviour, and accepts nagative arguments. + * + * Excel Function: + * ERFC(x) + * + * @param float $x The lower bound for integrating ERFC + * @return float + */ + public static function ERFC($x) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + + if (is_numeric($x)) { + return self::erfcVal($x); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * getConversionGroups + * Returns a list of the different conversion groups for UOM conversions + * + * @return array + */ + public static function getConversionGroups() + { + $conversionGroups = array(); + foreach (self::$conversionUnits as $conversionUnit) { + $conversionGroups[] = $conversionUnit['Group']; + } + return array_merge(array_unique($conversionGroups)); + } + + + /** + * getConversionGroupUnits + * Returns an array of units of measure, for a specified conversion group, or for all groups + * + * @param string $group The group whose units of measure you want to retrieve + * @return array + */ + public static function getConversionGroupUnits($group = null) + { + $conversionGroups = array(); + foreach (self::$conversionUnits as $conversionUnit => $conversionGroup) { + if ((is_null($group)) || ($conversionGroup['Group'] == $group)) { + $conversionGroups[$conversionGroup['Group']][] = $conversionUnit; + } + } + return $conversionGroups; + } + + + /** + * getConversionGroupUnitDetails + * + * @param string $group The group whose units of measure you want to retrieve + * @return array + */ + public static function getConversionGroupUnitDetails($group = null) + { + $conversionGroups = array(); + foreach (self::$conversionUnits as $conversionUnit => $conversionGroup) { + if ((is_null($group)) || ($conversionGroup['Group'] == $group)) { + $conversionGroups[$conversionGroup['Group']][] = array( + 'unit' => $conversionUnit, + 'description' => $conversionGroup['Unit Name'] + ); + } + } + return $conversionGroups; + } + + + /** + * getConversionMultipliers + * Returns an array of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM() + * + * @return array of mixed + */ + public static function getConversionMultipliers() + { + return self::$conversionMultipliers; + } + + + /** + * CONVERTUOM + * + * Converts a number from one measurement system to another. + * For example, CONVERT can translate a table of distances in miles to a table of distances + * in kilometers. + * + * Excel Function: + * CONVERT(value,fromUOM,toUOM) + * + * @param float $value The value in fromUOM to convert. + * @param string $fromUOM The units for value. + * @param string $toUOM The units for the result. + * + * @return float + */ + public static function CONVERTUOM($value, $fromUOM, $toUOM) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $fromUOM = PHPExcel_Calculation_Functions::flattenSingleValue($fromUOM); + $toUOM = PHPExcel_Calculation_Functions::flattenSingleValue($toUOM); + + if (!is_numeric($value)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $fromMultiplier = 1.0; + if (isset(self::$conversionUnits[$fromUOM])) { + $unitGroup1 = self::$conversionUnits[$fromUOM]['Group']; + } else { + $fromMultiplier = substr($fromUOM, 0, 1); + $fromUOM = substr($fromUOM, 1); + if (isset(self::$conversionMultipliers[$fromMultiplier])) { + $fromMultiplier = self::$conversionMultipliers[$fromMultiplier]['multiplier']; + } else { + return PHPExcel_Calculation_Functions::NA(); + } + if ((isset(self::$conversionUnits[$fromUOM])) && (self::$conversionUnits[$fromUOM]['AllowPrefix'])) { + $unitGroup1 = self::$conversionUnits[$fromUOM]['Group']; + } else { + return PHPExcel_Calculation_Functions::NA(); + } + } + $value *= $fromMultiplier; + + $toMultiplier = 1.0; + if (isset(self::$conversionUnits[$toUOM])) { + $unitGroup2 = self::$conversionUnits[$toUOM]['Group']; + } else { + $toMultiplier = substr($toUOM, 0, 1); + $toUOM = substr($toUOM, 1); + if (isset(self::$conversionMultipliers[$toMultiplier])) { + $toMultiplier = self::$conversionMultipliers[$toMultiplier]['multiplier']; + } else { + return PHPExcel_Calculation_Functions::NA(); + } + if ((isset(self::$conversionUnits[$toUOM])) && (self::$conversionUnits[$toUOM]['AllowPrefix'])) { + $unitGroup2 = self::$conversionUnits[$toUOM]['Group']; + } else { + return PHPExcel_Calculation_Functions::NA(); + } + } + if ($unitGroup1 != $unitGroup2) { + return PHPExcel_Calculation_Functions::NA(); + } + + if (($fromUOM == $toUOM) && ($fromMultiplier == $toMultiplier)) { + // We've already factored $fromMultiplier into the value, so we need + // to reverse it again + return $value / $fromMultiplier; + } elseif ($unitGroup1 == 'Temperature') { + if (($fromUOM == 'F') || ($fromUOM == 'fah')) { + if (($toUOM == 'F') || ($toUOM == 'fah')) { + return $value; + } else { + $value = (($value - 32) / 1.8); + if (($toUOM == 'K') || ($toUOM == 'kel')) { + $value += 273.15; + } + return $value; + } + } elseif ((($fromUOM == 'K') || ($fromUOM == 'kel')) && + (($toUOM == 'K') || ($toUOM == 'kel'))) { + return $value; + } elseif ((($fromUOM == 'C') || ($fromUOM == 'cel')) && + (($toUOM == 'C') || ($toUOM == 'cel'))) { + return $value; + } + if (($toUOM == 'F') || ($toUOM == 'fah')) { + if (($fromUOM == 'K') || ($fromUOM == 'kel')) { + $value -= 273.15; + } + return ($value * 1.8) + 32; + } + if (($toUOM == 'C') || ($toUOM == 'cel')) { + return $value - 273.15; + } + return $value + 273.15; + } + return ($value * self::$unitConversions[$unitGroup1][$fromUOM][$toUOM]) / $toMultiplier; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Exception.php b/assets/excel/PHPExcel/Calculation/Exception.php new file mode 100644 index 0000000..52d73fc --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Exception.php @@ -0,0 +1,46 @@ +line = $line; + $e->file = $file; + throw $e; + } +} diff --git a/assets/excel/PHPExcel/Calculation/ExceptionHandler.php b/assets/excel/PHPExcel/Calculation/ExceptionHandler.php new file mode 100644 index 0000000..4cb0a68 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/ExceptionHandler.php @@ -0,0 +1,45 @@ +format('d') == $testDate->format('t')); + } + + + /** + * isFirstDayOfMonth + * + * Returns a boolean TRUE/FALSE indicating if this date is the first date of the month + * + * @param DateTime $testDate The date for testing + * @return boolean + */ + private static function isFirstDayOfMonth($testDate) + { + return ($testDate->format('d') == 1); + } + + + private static function couponFirstPeriodDate($settlement, $maturity, $frequency, $next) + { + $months = 12 / $frequency; + + $result = PHPExcel_Shared_Date::ExcelToPHPObject($maturity); + $eom = self::isLastDayOfMonth($result); + + while ($settlement < PHPExcel_Shared_Date::PHPToExcel($result)) { + $result->modify('-'.$months.' months'); + } + if ($next) { + $result->modify('+'.$months.' months'); + } + + if ($eom) { + $result->modify('-1 day'); + } + + return PHPExcel_Shared_Date::PHPToExcel($result); + } + + + private static function isValidFrequency($frequency) + { + if (($frequency == 1) || ($frequency == 2) || ($frequency == 4)) { + return true; + } + if ((PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) && + (($frequency == 6) || ($frequency == 12))) { + return true; + } + return false; + } + + + /** + * daysPerYear + * + * Returns the number of days in a specified year, as defined by the "basis" value + * + * @param integer $year The year against which we're testing + * @param integer $basis The type of day count: + * 0 or omitted US (NASD) 360 + * 1 Actual (365 or 366 in a leap year) + * 2 360 + * 3 365 + * 4 European 360 + * @return integer + */ + private static function daysPerYear($year, $basis = 0) + { + switch ($basis) { + case 0: + case 2: + case 4: + $daysPerYear = 360; + break; + case 3: + $daysPerYear = 365; + break; + case 1: + $daysPerYear = (PHPExcel_Calculation_DateTime::isLeapYear($year)) ? 366 : 365; + break; + default: + return PHPExcel_Calculation_Functions::NaN(); + } + return $daysPerYear; + } + + + private static function interestAndPrincipal($rate = 0, $per = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) + { + $pmt = self::PMT($rate, $nper, $pv, $fv, $type); + $capital = $pv; + for ($i = 1; $i<= $per; ++$i) { + $interest = ($type && $i == 1) ? 0 : -$capital * $rate; + $principal = $pmt - $interest; + $capital += $principal; + } + return array($interest, $principal); + } + + + /** + * ACCRINT + * + * Returns the accrued interest for a security that pays periodic interest. + * + * Excel Function: + * ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed $issue The security's issue date. + * @param mixed $firstinterest The security's first interest date. + * @param mixed $settlement The security's settlement date. + * The security settlement date is the date after the issue date + * when the security is traded to the buyer. + * @param float $rate The security's annual coupon rate. + * @param float $par The security's par value. + * If you omit par, ACCRINT uses $1,000. + * @param integer $frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer $basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function ACCRINT($issue, $firstinterest, $settlement, $rate, $par = 1000, $frequency = 1, $basis = 0) + { + $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); + $firstinterest = PHPExcel_Calculation_Functions::flattenSingleValue($firstinterest); + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par); + $frequency = (is_null($frequency)) ? 1 : PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($rate)) && (is_numeric($par))) { + $rate = (float) $rate; + $par = (float) $par; + if (($rate <= 0) || ($par <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); + if (!is_numeric($daysBetweenIssueAndSettlement)) { + // return date error + return $daysBetweenIssueAndSettlement; + } + + return $par * $rate * $daysBetweenIssueAndSettlement; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * ACCRINTM + * + * Returns the accrued interest for a security that pays interest at maturity. + * + * Excel Function: + * ACCRINTM(issue,settlement,rate[,par[,basis]]) + * + * @access public + * @category Financial Functions + * @param mixed issue The security's issue date. + * @param mixed settlement The security's settlement (or maturity) date. + * @param float rate The security's annual coupon rate. + * @param float par The security's par value. + * If you omit par, ACCRINT uses $1,000. + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function ACCRINTM($issue, $settlement, $rate, $par = 1000, $basis = 0) + { + $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $par = (is_null($par)) ? 1000 : PHPExcel_Calculation_Functions::flattenSingleValue($par); + $basis = (is_null($basis)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($rate)) && (is_numeric($par))) { + $rate = (float) $rate; + $par = (float) $par; + if (($rate <= 0) || ($par <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); + if (!is_numeric($daysBetweenIssueAndSettlement)) { + // return date error + return $daysBetweenIssueAndSettlement; + } + return $par * $rate * $daysBetweenIssueAndSettlement; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * AMORDEGRC + * + * Returns the depreciation for each accounting period. + * This function is provided for the French accounting system. If an asset is purchased in + * the middle of the accounting period, the prorated depreciation is taken into account. + * The function is similar to AMORLINC, except that a depreciation coefficient is applied in + * the calculation depending on the life of the assets. + * This function will return the depreciation until the last period of the life of the assets + * or until the cumulated value of depreciation is greater than the cost of the assets minus + * the salvage value. + * + * Excel Function: + * AMORDEGRC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) + * + * @access public + * @category Financial Functions + * @param float cost The cost of the asset. + * @param mixed purchased Date of the purchase of the asset. + * @param mixed firstPeriod Date of the end of the first period. + * @param mixed salvage The salvage value at the end of the life of the asset. + * @param float period The period. + * @param float rate Rate of depreciation. + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function AMORDEGRC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased); + $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $period = floor(PHPExcel_Calculation_Functions::flattenSingleValue($period)); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // The depreciation coefficients are: + // Life of assets (1/rate) Depreciation coefficient + // Less than 3 years 1 + // Between 3 and 4 years 1.5 + // Between 5 and 6 years 2 + // More than 6 years 2.5 + $fUsePer = 1.0 / $rate; + if ($fUsePer < 3.0) { + $amortiseCoeff = 1.0; + } elseif ($fUsePer < 5.0) { + $amortiseCoeff = 1.5; + } elseif ($fUsePer <= 6.0) { + $amortiseCoeff = 2.0; + } else { + $amortiseCoeff = 2.5; + } + + $rate *= $amortiseCoeff; + $fNRate = round(PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis) * $rate * $cost, 0); + $cost -= $fNRate; + $fRest = $cost - $salvage; + + for ($n = 0; $n < $period; ++$n) { + $fNRate = round($rate * $cost, 0); + $fRest -= $fNRate; + + if ($fRest < 0.0) { + switch ($period - $n) { + case 0: + case 1: + return round($cost * 0.5, 0); + default: + return 0.0; + } + } + $cost -= $fNRate; + } + return $fNRate; + } + + + /** + * AMORLINC + * + * Returns the depreciation for each accounting period. + * This function is provided for the French accounting system. If an asset is purchased in + * the middle of the accounting period, the prorated depreciation is taken into account. + * + * Excel Function: + * AMORLINC(cost,purchased,firstPeriod,salvage,period,rate[,basis]) + * + * @access public + * @category Financial Functions + * @param float cost The cost of the asset. + * @param mixed purchased Date of the purchase of the asset. + * @param mixed firstPeriod Date of the end of the first period. + * @param mixed salvage The salvage value at the end of the life of the asset. + * @param float period The period. + * @param float rate Rate of depreciation. + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function AMORLINC($cost, $purchased, $firstPeriod, $salvage, $period, $rate, $basis = 0) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $purchased = PHPExcel_Calculation_Functions::flattenSingleValue($purchased); + $firstPeriod = PHPExcel_Calculation_Functions::flattenSingleValue($firstPeriod); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + $fOneRate = $cost * $rate; + $fCostDelta = $cost - $salvage; + // Note, quirky variation for leap years on the YEARFRAC for this function + $purchasedYear = PHPExcel_Calculation_DateTime::YEAR($purchased); + $yearFrac = PHPExcel_Calculation_DateTime::YEARFRAC($purchased, $firstPeriod, $basis); + + if (($basis == 1) && ($yearFrac < 1) && (PHPExcel_Calculation_DateTime::isLeapYear($purchasedYear))) { + $yearFrac *= 365 / 366; + } + + $f0Rate = $yearFrac * $rate * $cost; + $nNumOfFullPeriods = intval(($cost - $salvage - $f0Rate) / $fOneRate); + + if ($period == 0) { + return $f0Rate; + } elseif ($period <= $nNumOfFullPeriods) { + return $fOneRate; + } elseif ($period == ($nNumOfFullPeriods + 1)) { + return ($fCostDelta - $fOneRate * $nNumOfFullPeriods - $f0Rate); + } else { + return 0.0; + } + } + + + /** + * COUPDAYBS + * + * Returns the number of days from the beginning of the coupon period to the settlement date. + * + * Excel Function: + * COUPDAYBS(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function COUPDAYBS($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); + $prev = self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); + + return PHPExcel_Calculation_DateTime::YEARFRAC($prev, $settlement, $basis) * $daysPerYear; + } + + + /** + * COUPDAYS + * + * Returns the number of days in the coupon period that contains the settlement date. + * + * Excel Function: + * COUPDAYS(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function COUPDAYS($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + switch ($basis) { + case 3: + // Actual/365 + return 365 / $frequency; + case 1: + // Actual/actual + if ($frequency == 1) { + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($maturity), $basis); + return ($daysPerYear / $frequency); + } + $prev = self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); + $next = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); + return ($next - $prev); + default: + // US (NASD) 30/360, Actual/360 or European 30/360 + return 360 / $frequency; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * COUPDAYSNC + * + * Returns the number of days from the settlement date to the next coupon date. + * + * Excel Function: + * COUPDAYSNC(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function COUPDAYSNC($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); + $next = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); + + return PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $next, $basis) * $daysPerYear; + } + + + /** + * COUPNCD + * + * Returns the next coupon date after the settlement date. + * + * Excel Function: + * COUPNCD(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function COUPNCD($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); + } + + + /** + * COUPNUM + * + * Returns the number of coupons payable between the settlement date and maturity date, + * rounded up to the nearest whole coupon. + * + * Excel Function: + * COUPNUM(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return integer + */ + public static function COUPNUM($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $settlement = self::couponFirstPeriodDate($settlement, $maturity, $frequency, true); + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis) * 365; + + switch ($frequency) { + case 1: // annual payments + return ceil($daysBetweenSettlementAndMaturity / 360); + case 2: // half-yearly + return ceil($daysBetweenSettlementAndMaturity / 180); + case 4: // quarterly + return ceil($daysBetweenSettlementAndMaturity / 90); + case 6: // bimonthly + return ceil($daysBetweenSettlementAndMaturity / 60); + case 12: // monthly + return ceil($daysBetweenSettlementAndMaturity / 30); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * COUPPCD + * + * Returns the previous coupon date before the settlement date. + * + * Excel Function: + * COUPPCD(settlement,maturity,frequency[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed frequency the number of coupon payments per year. + * Valid frequency values are: + * 1 Annual + * 2 Semi-Annual + * 4 Quarterly + * If working in Gnumeric Mode, the following frequency options are + * also available + * 6 Bimonthly + * 12 Monthly + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, + * depending on the value of the ReturnDateType flag + */ + public static function COUPPCD($settlement, $maturity, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return self::couponFirstPeriodDate($settlement, $maturity, $frequency, false); + } + + + /** + * CUMIPMT + * + * Returns the cumulative interest paid on a loan between the start and end periods. + * + * Excel Function: + * CUMIPMT(rate,nper,pv,start,end[,type]) + * + * @access public + * @category Financial Functions + * @param float $rate The Interest rate + * @param integer $nper The total number of payment periods + * @param float $pv Present Value + * @param integer $start The first period in the calculation. + * Payment periods are numbered beginning with 1. + * @param integer $end The last period in the calculation. + * @param integer $type A number 0 or 1 and indicates when payments are due: + * 0 or omitted At the end of the period. + * 1 At the beginning of the period. + * @return float + */ + public static function CUMIPMT($rate, $nper, $pv, $start, $end, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start); + $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end); + $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($start < 1 || $start > $end) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Calculate + $interest = 0; + for ($per = $start; $per <= $end; ++$per) { + $interest += self::IPMT($rate, $per, $nper, $pv, 0, $type); + } + + return $interest; + } + + + /** + * CUMPRINC + * + * Returns the cumulative principal paid on a loan between the start and end periods. + * + * Excel Function: + * CUMPRINC(rate,nper,pv,start,end[,type]) + * + * @access public + * @category Financial Functions + * @param float $rate The Interest rate + * @param integer $nper The total number of payment periods + * @param float $pv Present Value + * @param integer $start The first period in the calculation. + * Payment periods are numbered beginning with 1. + * @param integer $end The last period in the calculation. + * @param integer $type A number 0 or 1 and indicates when payments are due: + * 0 or omitted At the end of the period. + * 1 At the beginning of the period. + * @return float + */ + public static function CUMPRINC($rate, $nper, $pv, $start, $end, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $start = (int) PHPExcel_Calculation_Functions::flattenSingleValue($start); + $end = (int) PHPExcel_Calculation_Functions::flattenSingleValue($end); + $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($start < 1 || $start > $end) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Calculate + $principal = 0; + for ($per = $start; $per <= $end; ++$per) { + $principal += self::PPMT($rate, $per, $nper, $pv, 0, $type); + } + + return $principal; + } + + + /** + * DB + * + * Returns the depreciation of an asset for a specified period using the + * fixed-declining balance method. + * This form of depreciation is used if you want to get a higher depreciation value + * at the beginning of the depreciation (as opposed to linear depreciation). The + * depreciation value is reduced with every depreciation period by the depreciation + * already deducted from the initial cost. + * + * Excel Function: + * DB(cost,salvage,life,period[,month]) + * + * @access public + * @category Financial Functions + * @param float cost Initial cost of the asset. + * @param float salvage Value at the end of the depreciation. + * (Sometimes called the salvage value of the asset) + * @param integer life Number of periods over which the asset is depreciated. + * (Sometimes called the useful life of the asset) + * @param integer period The period for which you want to calculate the + * depreciation. Period must use the same units as life. + * @param integer month Number of months in the first year. If month is omitted, + * it defaults to 12. + * @return float + */ + public static function DB($cost, $salvage, $life, $period, $month = 12) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); + $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); + $month = PHPExcel_Calculation_Functions::flattenSingleValue($month); + + // Validate + if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($month))) { + $cost = (float) $cost; + $salvage = (float) $salvage; + $life = (int) $life; + $period = (int) $period; + $month = (int) $month; + if ($cost == 0) { + return 0.0; + } elseif (($cost < 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($month < 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + // Set Fixed Depreciation Rate + $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life)); + $fixedDepreciationRate = round($fixedDepreciationRate, 3); + + // Loop through each period calculating the depreciation + $previousDepreciation = 0; + for ($per = 1; $per <= $period; ++$per) { + if ($per == 1) { + $depreciation = $cost * $fixedDepreciationRate * $month / 12; + } elseif ($per == ($life + 1)) { + $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate * (12 - $month) / 12; + } else { + $depreciation = ($cost - $previousDepreciation) * $fixedDepreciationRate; + } + $previousDepreciation += $depreciation; + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $depreciation = round($depreciation, 2); + } + return $depreciation; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * DDB + * + * Returns the depreciation of an asset for a specified period using the + * double-declining balance method or some other method you specify. + * + * Excel Function: + * DDB(cost,salvage,life,period[,factor]) + * + * @access public + * @category Financial Functions + * @param float cost Initial cost of the asset. + * @param float salvage Value at the end of the depreciation. + * (Sometimes called the salvage value of the asset) + * @param integer life Number of periods over which the asset is depreciated. + * (Sometimes called the useful life of the asset) + * @param integer period The period for which you want to calculate the + * depreciation. Period must use the same units as life. + * @param float factor The rate at which the balance declines. + * If factor is omitted, it is assumed to be 2 (the + * double-declining balance method). + * @return float + */ + public static function DDB($cost, $salvage, $life, $period, $factor = 2.0) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); + $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); + $factor = PHPExcel_Calculation_Functions::flattenSingleValue($factor); + + // Validate + if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period)) && (is_numeric($factor))) { + $cost = (float) $cost; + $salvage = (float) $salvage; + $life = (int) $life; + $period = (int) $period; + $factor = (float) $factor; + if (($cost <= 0) || (($salvage / $cost) < 0) || ($life <= 0) || ($period < 1) || ($factor <= 0.0) || ($period > $life)) { + return PHPExcel_Calculation_Functions::NaN(); + } + // Set Fixed Depreciation Rate + $fixedDepreciationRate = 1 - pow(($salvage / $cost), (1 / $life)); + $fixedDepreciationRate = round($fixedDepreciationRate, 3); + + // Loop through each period calculating the depreciation + $previousDepreciation = 0; + for ($per = 1; $per <= $period; ++$per) { + $depreciation = min(($cost - $previousDepreciation) * ($factor / $life), ($cost - $salvage - $previousDepreciation)); + $previousDepreciation += $depreciation; + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + $depreciation = round($depreciation, 2); + } + return $depreciation; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * DISC + * + * Returns the discount rate for a security. + * + * Excel Function: + * DISC(settlement,maturity,price,redemption[,basis]) + * + * @access public + * @category Financial Functions + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue + * date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param integer price The security's price per $100 face value. + * @param integer redemption The security's redemption value per $100 face value. + * @param integer basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function DISC($settlement, $maturity, $price, $redemption, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); + $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); + $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($price)) && (is_numeric($redemption)) && (is_numeric($basis))) { + $price = (float) $price; + $redemption = (float) $redemption; + $basis = (int) $basis; + if (($price <= 0) || ($redemption <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + + return ((1 - $price / $redemption) / $daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * DOLLARDE + * + * Converts a dollar price expressed as an integer part and a fraction + * part into a dollar price expressed as a decimal number. + * Fractional dollar numbers are sometimes used for security prices. + * + * Excel Function: + * DOLLARDE(fractional_dollar,fraction) + * + * @access public + * @category Financial Functions + * @param float $fractional_dollar Fractional Dollar + * @param integer $fraction Fraction + * @return float + */ + public static function DOLLARDE($fractional_dollar = null, $fraction = 0) + { + $fractional_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($fractional_dollar); + $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction); + + // Validate parameters + if (is_null($fractional_dollar) || $fraction < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($fraction == 0) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $dollars = floor($fractional_dollar); + $cents = fmod($fractional_dollar, 1); + $cents /= $fraction; + $cents *= pow(10, ceil(log10($fraction))); + return $dollars + $cents; + } + + + /** + * DOLLARFR + * + * Converts a dollar price expressed as a decimal number into a dollar price + * expressed as a fraction. + * Fractional dollar numbers are sometimes used for security prices. + * + * Excel Function: + * DOLLARFR(decimal_dollar,fraction) + * + * @access public + * @category Financial Functions + * @param float $decimal_dollar Decimal Dollar + * @param integer $fraction Fraction + * @return float + */ + public static function DOLLARFR($decimal_dollar = null, $fraction = 0) + { + $decimal_dollar = PHPExcel_Calculation_Functions::flattenSingleValue($decimal_dollar); + $fraction = (int)PHPExcel_Calculation_Functions::flattenSingleValue($fraction); + + // Validate parameters + if (is_null($decimal_dollar) || $fraction < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($fraction == 0) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $dollars = floor($decimal_dollar); + $cents = fmod($decimal_dollar, 1); + $cents *= $fraction; + $cents *= pow(10, -ceil(log10($fraction))); + return $dollars + $cents; + } + + + /** + * EFFECT + * + * Returns the effective interest rate given the nominal rate and the number of + * compounding payments per year. + * + * Excel Function: + * EFFECT(nominal_rate,npery) + * + * @access public + * @category Financial Functions + * @param float $nominal_rate Nominal interest rate + * @param integer $npery Number of compounding payments per year + * @return float + */ + public static function EFFECT($nominal_rate = 0, $npery = 0) + { + $nominal_rate = PHPExcel_Calculation_Functions::flattenSingleValue($nominal_rate); + $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery); + + // Validate parameters + if ($nominal_rate <= 0 || $npery < 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return pow((1 + $nominal_rate / $npery), $npery) - 1; + } + + + /** + * FV + * + * Returns the Future Value of a cash flow with constant payments and interest rate (annuities). + * + * Excel Function: + * FV(rate,nper,pmt[,pv[,type]]) + * + * @access public + * @category Financial Functions + * @param float $rate The interest rate per period + * @param int $nper Total number of payment periods in an annuity + * @param float $pmt The payment made each period: it cannot change over the + * life of the annuity. Typically, pmt contains principal + * and interest but no other fees or taxes. + * @param float $pv Present Value, or the lump-sum amount that a series of + * future payments is worth right now. + * @param integer $type A number 0 or 1 and indicates when payments are due: + * 0 or omitted At the end of the period. + * 1 At the beginning of the period. + * @return float + */ + public static function FV($rate = 0, $nper = 0, $pmt = 0, $pv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Calculate + if (!is_null($rate) && $rate != 0) { + return -$pv * pow(1 + $rate, $nper) - $pmt * (1 + $rate * $type) * (pow(1 + $rate, $nper) - 1) / $rate; + } + return -$pv - $pmt * $nper; + } + + + /** + * FVSCHEDULE + * + * Returns the future value of an initial principal after applying a series of compound interest rates. + * Use FVSCHEDULE to calculate the future value of an investment with a variable or adjustable rate. + * + * Excel Function: + * FVSCHEDULE(principal,schedule) + * + * @param float $principal The present value. + * @param float[] $schedule An array of interest rates to apply. + * @return float + */ + public static function FVSCHEDULE($principal, $schedule) + { + $principal = PHPExcel_Calculation_Functions::flattenSingleValue($principal); + $schedule = PHPExcel_Calculation_Functions::flattenArray($schedule); + + foreach ($schedule as $rate) { + $principal *= 1 + $rate; + } + + return $principal; + } + + + /** + * INTRATE + * + * Returns the interest rate for a fully invested security. + * + * Excel Function: + * INTRATE(settlement,maturity,investment,redemption[,basis]) + * + * @param mixed $settlement The security's settlement date. + * The security settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed $maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param integer $investment The amount invested in the security. + * @param integer $redemption The amount to be received at maturity. + * @param integer $basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function INTRATE($settlement, $maturity, $investment, $redemption, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $investment = PHPExcel_Calculation_Functions::flattenSingleValue($investment); + $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); + $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($investment)) && (is_numeric($redemption)) && (is_numeric($basis))) { + $investment = (float) $investment; + $redemption = (float) $redemption; + $basis = (int) $basis; + if (($investment <= 0) || ($redemption <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + + return (($redemption / $investment) - 1) / ($daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * IPMT + * + * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate. + * + * Excel Function: + * IPMT(rate,per,nper,pv[,fv][,type]) + * + * @param float $rate Interest rate per period + * @param int $per Period for which we want to find the interest + * @param int $nper Number of periods + * @param float $pv Present Value + * @param float $fv Future Value + * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period + * @return float + */ + public static function IPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per); + $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($per <= 0 || $per > $nper) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Calculate + $interestAndPrincipal = self::interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type); + return $interestAndPrincipal[0]; + } + + /** + * IRR + * + * Returns the internal rate of return for a series of cash flows represented by the numbers in values. + * These cash flows do not have to be even, as they would be for an annuity. However, the cash flows must occur + * at regular intervals, such as monthly or annually. The internal rate of return is the interest rate received + * for an investment consisting of payments (negative values) and income (positive values) that occur at regular + * periods. + * + * Excel Function: + * IRR(values[,guess]) + * + * @param float[] $values An array or a reference to cells that contain numbers for which you want + * to calculate the internal rate of return. + * Values must contain at least one positive value and one negative value to + * calculate the internal rate of return. + * @param float $guess A number that you guess is close to the result of IRR + * @return float + */ + public static function IRR($values, $guess = 0.1) + { + if (!is_array($values)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $values = PHPExcel_Calculation_Functions::flattenArray($values); + $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess); + + // create an initial range, with a root somewhere between 0 and guess + $x1 = 0.0; + $x2 = $guess; + $f1 = self::NPV($x1, $values); + $f2 = self::NPV($x2, $values); + for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { + if (($f1 * $f2) < 0.0) { + break; + } + if (abs($f1) < abs($f2)) { + $f1 = self::NPV($x1 += 1.6 * ($x1 - $x2), $values); + } else { + $f2 = self::NPV($x2 += 1.6 * ($x2 - $x1), $values); + } + } + if (($f1 * $f2) > 0.0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $f = self::NPV($x1, $values); + if ($f < 0.0) { + $rtb = $x1; + $dx = $x2 - $x1; + } else { + $rtb = $x2; + $dx = $x1 - $x2; + } + + for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { + $dx *= 0.5; + $x_mid = $rtb + $dx; + $f_mid = self::NPV($x_mid, $values); + if ($f_mid <= 0.0) { + $rtb = $x_mid; + } + if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) { + return $x_mid; + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * ISPMT + * + * Returns the interest payment for an investment based on an interest rate and a constant payment schedule. + * + * Excel Function: + * =ISPMT(interest_rate, period, number_payments, PV) + * + * interest_rate is the interest rate for the investment + * + * period is the period to calculate the interest rate. It must be betweeen 1 and number_payments. + * + * number_payments is the number of payments for the annuity + * + * PV is the loan amount or present value of the payments + */ + public static function ISPMT() + { + // Return value + $returnValue = 0; + + // Get the parameters + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + $interestRate = array_shift($aArgs); + $period = array_shift($aArgs); + $numberPeriods = array_shift($aArgs); + $principleRemaining = array_shift($aArgs); + + // Calculate + $principlePayment = ($principleRemaining * 1.0) / ($numberPeriods * 1.0); + for ($i=0; $i <= $period; ++$i) { + $returnValue = $interestRate * $principleRemaining * -1; + $principleRemaining -= $principlePayment; + // principle needs to be 0 after the last payment, don't let floating point screw it up + if ($i == $numberPeriods) { + $returnValue = 0; + } + } + return($returnValue); + } + + + /** + * MIRR + * + * Returns the modified internal rate of return for a series of periodic cash flows. MIRR considers both + * the cost of the investment and the interest received on reinvestment of cash. + * + * Excel Function: + * MIRR(values,finance_rate, reinvestment_rate) + * + * @param float[] $values An array or a reference to cells that contain a series of payments and + * income occurring at regular intervals. + * Payments are negative value, income is positive values. + * @param float $finance_rate The interest rate you pay on the money used in the cash flows + * @param float $reinvestment_rate The interest rate you receive on the cash flows as you reinvest them + * @return float + */ + public static function MIRR($values, $finance_rate, $reinvestment_rate) + { + if (!is_array($values)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $values = PHPExcel_Calculation_Functions::flattenArray($values); + $finance_rate = PHPExcel_Calculation_Functions::flattenSingleValue($finance_rate); + $reinvestment_rate = PHPExcel_Calculation_Functions::flattenSingleValue($reinvestment_rate); + $n = count($values); + + $rr = 1.0 + $reinvestment_rate; + $fr = 1.0 + $finance_rate; + + $npv_pos = $npv_neg = 0.0; + foreach ($values as $i => $v) { + if ($v >= 0) { + $npv_pos += $v / pow($rr, $i); + } else { + $npv_neg += $v / pow($fr, $i); + } + } + + if (($npv_neg == 0) || ($npv_pos == 0) || ($reinvestment_rate <= -1)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $mirr = pow((-$npv_pos * pow($rr, $n)) + / ($npv_neg * ($rr)), (1.0 / ($n - 1))) - 1.0; + + return (is_finite($mirr) ? $mirr : PHPExcel_Calculation_Functions::VALUE()); + } + + + /** + * NOMINAL + * + * Returns the nominal interest rate given the effective rate and the number of compounding payments per year. + * + * @param float $effect_rate Effective interest rate + * @param int $npery Number of compounding payments per year + * @return float + */ + public static function NOMINAL($effect_rate = 0, $npery = 0) + { + $effect_rate = PHPExcel_Calculation_Functions::flattenSingleValue($effect_rate); + $npery = (int)PHPExcel_Calculation_Functions::flattenSingleValue($npery); + + // Validate parameters + if ($effect_rate <= 0 || $npery < 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Calculate + return $npery * (pow($effect_rate + 1, 1 / $npery) - 1); + } + + + /** + * NPER + * + * Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate. + * + * @param float $rate Interest rate per period + * @param int $pmt Periodic payment (annuity) + * @param float $pv Present Value + * @param float $fv Future Value + * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period + * @return float + */ + public static function NPER($rate = 0, $pmt = 0, $pv = 0, $fv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Calculate + if (!is_null($rate) && $rate != 0) { + if ($pmt == 0 && $pv == 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return log(($pmt * (1 + $rate * $type) / $rate - $fv) / ($pv + $pmt * (1 + $rate * $type) / $rate)) / log(1 + $rate); + } + if ($pmt == 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return (-$pv -$fv) / $pmt; + } + + /** + * NPV + * + * Returns the Net Present Value of a cash flow series given a discount rate. + * + * @return float + */ + public static function NPV() + { + // Return value + $returnValue = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $rate = array_shift($aArgs); + for ($i = 1; $i <= count($aArgs); ++$i) { + // Is it a numeric value? + if (is_numeric($aArgs[$i - 1])) { + $returnValue += $aArgs[$i - 1] / pow(1 + $rate, $i); + } + } + + // Return + return $returnValue; + } + + /** + * PMT + * + * Returns the constant payment (annuity) for a cash flow with a constant interest rate. + * + * @param float $rate Interest rate per period + * @param int $nper Number of periods + * @param float $pv Present Value + * @param float $fv Future Value + * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period + * @return float + */ + public static function PMT($rate = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Calculate + if (!is_null($rate) && $rate != 0) { + return (-$fv - $pv * pow(1 + $rate, $nper)) / (1 + $rate * $type) / ((pow(1 + $rate, $nper) - 1) / $rate); + } + return (-$pv - $fv) / $nper; + } + + + /** + * PPMT + * + * Returns the interest payment for a given period for an investment based on periodic, constant payments and a constant interest rate. + * + * @param float $rate Interest rate per period + * @param int $per Period for which we want to find the interest + * @param int $nper Number of periods + * @param float $pv Present Value + * @param float $fv Future Value + * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period + * @return float + */ + public static function PPMT($rate, $per, $nper, $pv, $fv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $per = (int) PHPExcel_Calculation_Functions::flattenSingleValue($per); + $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($per <= 0 || $per > $nper) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Calculate + $interestAndPrincipal = self::interestAndPrincipal($rate, $per, $nper, $pv, $fv, $type); + return $interestAndPrincipal[1]; + } + + + public static function PRICE($settlement, $maturity, $rate, $yield, $redemption, $frequency, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $rate = (float) PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $yield = (float) PHPExcel_Calculation_Functions::flattenSingleValue($yield); + $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption); + $frequency = (int) PHPExcel_Calculation_Functions::flattenSingleValue($frequency); + $basis = (is_null($basis)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + if (is_string($settlement = PHPExcel_Calculation_DateTime::getDateValue($settlement))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (($settlement > $maturity) || + (!self::isValidFrequency($frequency)) || + (($basis < 0) || ($basis > 4))) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $dsc = self::COUPDAYSNC($settlement, $maturity, $frequency, $basis); + $e = self::COUPDAYS($settlement, $maturity, $frequency, $basis); + $n = self::COUPNUM($settlement, $maturity, $frequency, $basis); + $a = self::COUPDAYBS($settlement, $maturity, $frequency, $basis); + + $baseYF = 1.0 + ($yield / $frequency); + $rfp = 100 * ($rate / $frequency); + $de = $dsc / $e; + + $result = $redemption / pow($baseYF, (--$n + $de)); + for ($k = 0; $k <= $n; ++$k) { + $result += $rfp / (pow($baseYF, ($k + $de))); + } + $result -= $rfp * ($a / $e); + + return $result; + } + + + /** + * PRICEDISC + * + * Returns the price per $100 face value of a discounted security. + * + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param int discount The security's discount rate. + * @param int redemption The security's redemption value per $100 face value. + * @param int basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function PRICEDISC($settlement, $maturity, $discount, $redemption, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount); + $redemption = (float) PHPExcel_Calculation_Functions::flattenSingleValue($redemption); + $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($discount)) && (is_numeric($redemption)) && (is_numeric($basis))) { + if (($discount <= 0) || ($redemption <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + + return $redemption * (1 - $discount * $daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * PRICEMAT + * + * Returns the price per $100 face value of a security that pays interest at maturity. + * + * @param mixed settlement The security's settlement date. + * The security's settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed issue The security's issue date. + * @param int rate The security's interest rate at date of issue. + * @param int yield The security's annual yield. + * @param int basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function PRICEMAT($settlement, $maturity, $issue, $rate, $yield, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $yield = PHPExcel_Calculation_Functions::flattenSingleValue($yield); + $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if (is_numeric($rate) && is_numeric($yield)) { + if (($rate <= 0) || ($yield <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); + if (!is_numeric($daysPerYear)) { + return $daysPerYear; + } + $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); + if (!is_numeric($daysBetweenIssueAndSettlement)) { + // return date error + return $daysBetweenIssueAndSettlement; + } + $daysBetweenIssueAndSettlement *= $daysPerYear; + $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis); + if (!is_numeric($daysBetweenIssueAndMaturity)) { + // return date error + return $daysBetweenIssueAndMaturity; + } + $daysBetweenIssueAndMaturity *= $daysPerYear; + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + $daysBetweenSettlementAndMaturity *= $daysPerYear; + + return ((100 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate * 100)) / + (1 + (($daysBetweenSettlementAndMaturity / $daysPerYear) * $yield)) - + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate * 100)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * PV + * + * Returns the Present Value of a cash flow with constant payments and interest rate (annuities). + * + * @param float $rate Interest rate per period + * @param int $nper Number of periods + * @param float $pmt Periodic payment (annuity) + * @param float $fv Future Value + * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period + * @return float + */ + public static function PV($rate = 0, $nper = 0, $pmt = 0, $fv = 0, $type = 0) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $nper = PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); + $fv = PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = PHPExcel_Calculation_Functions::flattenSingleValue($type); + + // Validate parameters + if ($type != 0 && $type != 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // Calculate + if (!is_null($rate) && $rate != 0) { + return (-$pmt * (1 + $rate * $type) * ((pow(1 + $rate, $nper) - 1) / $rate) - $fv) / pow(1 + $rate, $nper); + } + return -$fv - $pmt * $nper; + } + + + /** + * RATE + * + * Returns the interest rate per period of an annuity. + * RATE is calculated by iteration and can have zero or more solutions. + * If the successive results of RATE do not converge to within 0.0000001 after 20 iterations, + * RATE returns the #NUM! error value. + * + * Excel Function: + * RATE(nper,pmt,pv[,fv[,type[,guess]]]) + * + * @access public + * @category Financial Functions + * @param float nper The total number of payment periods in an annuity. + * @param float pmt The payment made each period and cannot change over the life + * of the annuity. + * Typically, pmt includes principal and interest but no other + * fees or taxes. + * @param float pv The present value - the total amount that a series of future + * payments is worth now. + * @param float fv The future value, or a cash balance you want to attain after + * the last payment is made. If fv is omitted, it is assumed + * to be 0 (the future value of a loan, for example, is 0). + * @param integer type A number 0 or 1 and indicates when payments are due: + * 0 or omitted At the end of the period. + * 1 At the beginning of the period. + * @param float guess Your guess for what the rate will be. + * If you omit guess, it is assumed to be 10 percent. + * @return float + **/ + public static function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) + { + $nper = (int) PHPExcel_Calculation_Functions::flattenSingleValue($nper); + $pmt = PHPExcel_Calculation_Functions::flattenSingleValue($pmt); + $pv = PHPExcel_Calculation_Functions::flattenSingleValue($pv); + $fv = (is_null($fv)) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($fv); + $type = (is_null($type)) ? 0 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($type); + $guess = (is_null($guess)) ? 0.1 : PHPExcel_Calculation_Functions::flattenSingleValue($guess); + + $rate = $guess; + if (abs($rate) < FINANCIAL_PRECISION) { + $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv; + } else { + $f = exp($nper * log(1 + $rate)); + $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; + } + $y0 = $pv + $pmt * $nper + $fv; + $y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; + + // find root by secant method + $i = $x0 = 0.0; + $x1 = $rate; + while ((abs($y0 - $y1) > FINANCIAL_PRECISION) && ($i < FINANCIAL_MAX_ITERATIONS)) { + $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0); + $x0 = $x1; + $x1 = $rate; + if (($nper * abs($pmt)) > ($pv - $fv)) { + $x1 = abs($x1); + } + if (abs($rate) < FINANCIAL_PRECISION) { + $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv; + } else { + $f = exp($nper * log(1 + $rate)); + $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv; + } + + $y0 = $y1; + $y1 = $y; + ++$i; + } + return $rate; + } + + + /** + * RECEIVED + * + * Returns the price per $100 face value of a discounted security. + * + * @param mixed settlement The security's settlement date. + * The security settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param int investment The amount invested in the security. + * @param int discount The security's discount rate. + * @param int basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function RECEIVED($settlement, $maturity, $investment, $discount, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $investment = (float) PHPExcel_Calculation_Functions::flattenSingleValue($investment); + $discount = (float) PHPExcel_Calculation_Functions::flattenSingleValue($discount); + $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if ((is_numeric($investment)) && (is_numeric($discount)) && (is_numeric($basis))) { + if (($investment <= 0) || ($discount <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + + return $investment / ( 1 - ($discount * $daysBetweenSettlementAndMaturity)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SLN + * + * Returns the straight-line depreciation of an asset for one period + * + * @param cost Initial cost of the asset + * @param salvage Value at the end of the depreciation + * @param life Number of periods over which the asset is depreciated + * @return float + */ + public static function SLN($cost, $salvage, $life) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); + + // Calculate + if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life))) { + if ($life < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return ($cost - $salvage) / $life; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SYD + * + * Returns the sum-of-years' digits depreciation of an asset for a specified period. + * + * @param cost Initial cost of the asset + * @param salvage Value at the end of the depreciation + * @param life Number of periods over which the asset is depreciated + * @param period Period + * @return float + */ + public static function SYD($cost, $salvage, $life, $period) + { + $cost = PHPExcel_Calculation_Functions::flattenSingleValue($cost); + $salvage = PHPExcel_Calculation_Functions::flattenSingleValue($salvage); + $life = PHPExcel_Calculation_Functions::flattenSingleValue($life); + $period = PHPExcel_Calculation_Functions::flattenSingleValue($period); + + // Calculate + if ((is_numeric($cost)) && (is_numeric($salvage)) && (is_numeric($life)) && (is_numeric($period))) { + if (($life < 1) || ($period > $life)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return (($cost - $salvage) * ($life - $period + 1) * 2) / ($life * ($life + 1)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * TBILLEQ + * + * Returns the bond-equivalent yield for a Treasury bill. + * + * @param mixed settlement The Treasury bill's settlement date. + * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. + * @param mixed maturity The Treasury bill's maturity date. + * The maturity date is the date when the Treasury bill expires. + * @param int discount The Treasury bill's discount rate. + * @return float + */ + public static function TBILLEQ($settlement, $maturity, $discount) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount); + + // Use TBILLPRICE for validation + $testValue = self::TBILLPRICE($settlement, $maturity, $discount); + if (is_string($testValue)) { + return $testValue; + } + + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + ++$maturity; + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; + } else { + $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); + } + + return (365 * $discount) / (360 - $discount * $daysBetweenSettlementAndMaturity); + } + + + /** + * TBILLPRICE + * + * Returns the yield for a Treasury bill. + * + * @param mixed settlement The Treasury bill's settlement date. + * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. + * @param mixed maturity The Treasury bill's maturity date. + * The maturity date is the date when the Treasury bill expires. + * @param int discount The Treasury bill's discount rate. + * @return float + */ + public static function TBILLPRICE($settlement, $maturity, $discount) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $discount = PHPExcel_Calculation_Functions::flattenSingleValue($discount); + + if (is_string($maturity = PHPExcel_Calculation_DateTime::getDateValue($maturity))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // Validate + if (is_numeric($discount)) { + if ($discount <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + ++$maturity; + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + } else { + $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); + } + + if ($daysBetweenSettlementAndMaturity > 360) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $price = 100 * (1 - (($discount * $daysBetweenSettlementAndMaturity) / 360)); + if ($price <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return $price; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * TBILLYIELD + * + * Returns the yield for a Treasury bill. + * + * @param mixed settlement The Treasury bill's settlement date. + * The Treasury bill's settlement date is the date after the issue date when the Treasury bill is traded to the buyer. + * @param mixed maturity The Treasury bill's maturity date. + * The maturity date is the date when the Treasury bill expires. + * @param int price The Treasury bill's price per $100 face value. + * @return float + */ + public static function TBILLYIELD($settlement, $maturity, $price) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); + + // Validate + if (is_numeric($price)) { + if ($price <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + ++$maturity; + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity) * 360; + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + } else { + $daysBetweenSettlementAndMaturity = (PHPExcel_Calculation_DateTime::getDateValue($maturity) - PHPExcel_Calculation_DateTime::getDateValue($settlement)); + } + + if ($daysBetweenSettlementAndMaturity > 360) { + return PHPExcel_Calculation_Functions::NaN(); + } + + return ((100 - $price) / $price) * (360 / $daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + public static function XIRR($values, $dates, $guess = 0.1) + { + if ((!is_array($values)) && (!is_array($dates))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $values = PHPExcel_Calculation_Functions::flattenArray($values); + $dates = PHPExcel_Calculation_Functions::flattenArray($dates); + $guess = PHPExcel_Calculation_Functions::flattenSingleValue($guess); + if (count($values) != count($dates)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + // create an initial range, with a root somewhere between 0 and guess + $x1 = 0.0; + $x2 = $guess; + $f1 = self::XNPV($x1, $values, $dates); + $f2 = self::XNPV($x2, $values, $dates); + for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { + if (($f1 * $f2) < 0.0) { + break; + } elseif (abs($f1) < abs($f2)) { + $f1 = self::XNPV($x1 += 1.6 * ($x1 - $x2), $values, $dates); + } else { + $f2 = self::XNPV($x2 += 1.6 * ($x2 - $x1), $values, $dates); + } + } + if (($f1 * $f2) > 0.0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $f = self::XNPV($x1, $values, $dates); + if ($f < 0.0) { + $rtb = $x1; + $dx = $x2 - $x1; + } else { + $rtb = $x2; + $dx = $x1 - $x2; + } + + for ($i = 0; $i < FINANCIAL_MAX_ITERATIONS; ++$i) { + $dx *= 0.5; + $x_mid = $rtb + $dx; + $f_mid = self::XNPV($x_mid, $values, $dates); + if ($f_mid <= 0.0) { + $rtb = $x_mid; + } + if ((abs($f_mid) < FINANCIAL_PRECISION) || (abs($dx) < FINANCIAL_PRECISION)) { + return $x_mid; + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * XNPV + * + * Returns the net present value for a schedule of cash flows that is not necessarily periodic. + * To calculate the net present value for a series of cash flows that is periodic, use the NPV function. + * + * Excel Function: + * =XNPV(rate,values,dates) + * + * @param float $rate The discount rate to apply to the cash flows. + * @param array of float $values A series of cash flows that corresponds to a schedule of payments in dates. + * The first payment is optional and corresponds to a cost or payment that occurs at the beginning of the investment. + * If the first value is a cost or payment, it must be a negative value. All succeeding payments are discounted based on a 365-day year. + * The series of values must contain at least one positive value and one negative value. + * @param array of mixed $dates A schedule of payment dates that corresponds to the cash flow payments. + * The first payment date indicates the beginning of the schedule of payments. + * All other dates must be later than this date, but they may occur in any order. + * @return float + */ + public static function XNPV($rate, $values, $dates) + { + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + if (!is_numeric($rate)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if ((!is_array($values)) || (!is_array($dates))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $values = PHPExcel_Calculation_Functions::flattenArray($values); + $dates = PHPExcel_Calculation_Functions::flattenArray($dates); + $valCount = count($values); + if ($valCount != count($dates)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((min($values) > 0) || (max($values) < 0)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + $xnpv = 0.0; + for ($i = 0; $i < $valCount; ++$i) { + if (!is_numeric($values[$i])) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $xnpv += $values[$i] / pow(1 + $rate, PHPExcel_Calculation_DateTime::DATEDIF($dates[0], $dates[$i], 'd') / 365); + } + return (is_finite($xnpv)) ? $xnpv : PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * YIELDDISC + * + * Returns the annual yield of a security that pays interest at maturity. + * + * @param mixed settlement The security's settlement date. + * The security's settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param int price The security's price per $100 face value. + * @param int redemption The security's redemption value per $100 face value. + * @param int basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function YIELDDISC($settlement, $maturity, $price, $redemption, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); + $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption); + $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if (is_numeric($price) && is_numeric($redemption)) { + if (($price <= 0) || ($redemption <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); + if (!is_numeric($daysPerYear)) { + return $daysPerYear; + } + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + $daysBetweenSettlementAndMaturity *= $daysPerYear; + + return (($redemption - $price) / $price) * ($daysPerYear / $daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * YIELDMAT + * + * Returns the annual yield of a security that pays interest at maturity. + * + * @param mixed settlement The security's settlement date. + * The security's settlement date is the date after the issue date when the security is traded to the buyer. + * @param mixed maturity The security's maturity date. + * The maturity date is the date when the security expires. + * @param mixed issue The security's issue date. + * @param int rate The security's interest rate at date of issue. + * @param int price The security's price per $100 face value. + * @param int basis The type of day count to use. + * 0 or omitted US (NASD) 30/360 + * 1 Actual/actual + * 2 Actual/360 + * 3 Actual/365 + * 4 European 30/360 + * @return float + */ + public static function YIELDMAT($settlement, $maturity, $issue, $rate, $price, $basis = 0) + { + $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement); + $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity); + $issue = PHPExcel_Calculation_Functions::flattenSingleValue($issue); + $rate = PHPExcel_Calculation_Functions::flattenSingleValue($rate); + $price = PHPExcel_Calculation_Functions::flattenSingleValue($price); + $basis = (int) PHPExcel_Calculation_Functions::flattenSingleValue($basis); + + // Validate + if (is_numeric($rate) && is_numeric($price)) { + if (($rate <= 0) || ($price <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $daysPerYear = self::daysPerYear(PHPExcel_Calculation_DateTime::YEAR($settlement), $basis); + if (!is_numeric($daysPerYear)) { + return $daysPerYear; + } + $daysBetweenIssueAndSettlement = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $settlement, $basis); + if (!is_numeric($daysBetweenIssueAndSettlement)) { + // return date error + return $daysBetweenIssueAndSettlement; + } + $daysBetweenIssueAndSettlement *= $daysPerYear; + $daysBetweenIssueAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($issue, $maturity, $basis); + if (!is_numeric($daysBetweenIssueAndMaturity)) { + // return date error + return $daysBetweenIssueAndMaturity; + } + $daysBetweenIssueAndMaturity *= $daysPerYear; + $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis); + if (!is_numeric($daysBetweenSettlementAndMaturity)) { + // return date error + return $daysBetweenSettlementAndMaturity; + } + $daysBetweenSettlementAndMaturity *= $daysPerYear; + + return ((1 + (($daysBetweenIssueAndMaturity / $daysPerYear) * $rate) - (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) / + (($price / 100) + (($daysBetweenIssueAndSettlement / $daysPerYear) * $rate))) * + ($daysPerYear / $daysBetweenSettlementAndMaturity); + } + return PHPExcel_Calculation_Functions::VALUE(); + } +} diff --git a/assets/excel/PHPExcel/Calculation/FormulaParser.php b/assets/excel/PHPExcel/Calculation/FormulaParser.php new file mode 100644 index 0000000..893f19e --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/FormulaParser.php @@ -0,0 +1,622 @@ +<"; + const OPERATORS_POSTFIX = "%"; + + /** + * Formula + * + * @var string + */ + private $formula; + + /** + * Tokens + * + * @var PHPExcel_Calculation_FormulaToken[] + */ + private $tokens = array(); + + /** + * Create a new PHPExcel_Calculation_FormulaParser + * + * @param string $pFormula Formula to parse + * @throws PHPExcel_Calculation_Exception + */ + public function __construct($pFormula = '') + { + // Check parameters + if (is_null($pFormula)) { + throw new PHPExcel_Calculation_Exception("Invalid parameter passed: formula"); + } + + // Initialise values + $this->formula = trim($pFormula); + // Parse! + $this->parseToTokens(); + } + + /** + * Get Formula + * + * @return string + */ + public function getFormula() + { + return $this->formula; + } + + /** + * Get Token + * + * @param int $pId Token id + * @return string + * @throws PHPExcel_Calculation_Exception + */ + public function getToken($pId = 0) + { + if (isset($this->tokens[$pId])) { + return $this->tokens[$pId]; + } else { + throw new PHPExcel_Calculation_Exception("Token with id $pId does not exist."); + } + } + + /** + * Get Token count + * + * @return string + */ + public function getTokenCount() + { + return count($this->tokens); + } + + /** + * Get Tokens + * + * @return PHPExcel_Calculation_FormulaToken[] + */ + public function getTokens() + { + return $this->tokens; + } + + /** + * Parse to tokens + */ + private function parseToTokens() + { + // No attempt is made to verify formulas; assumes formulas are derived from Excel, where + // they can only exist if valid; stack overflows/underflows sunk as nulls without exceptions. + + // Check if the formula has a valid starting = + $formulaLength = strlen($this->formula); + if ($formulaLength < 2 || $this->formula{0} != '=') { + return; + } + + // Helper variables + $tokens1 = $tokens2 = $stack = array(); + $inString = $inPath = $inRange = $inError = false; + $token = $previousToken = $nextToken = null; + + $index = 1; + $value = ''; + + $ERRORS = array("#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A"); + $COMPARATORS_MULTI = array(">=", "<=", "<>"); + + while ($index < $formulaLength) { + // state-dependent character evaluation (order is important) + + // double-quoted strings + // embeds are doubled + // end marks token + if ($inString) { + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) { + if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE)) { + $value .= PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE; + ++$index; + } else { + $inString = false; + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_TEXT); + $value = ""; + } + } else { + $value .= $this->formula{$index}; + } + ++$index; + continue; + } + + // single-quoted strings (links) + // embeds are double + // end does not mark a token + if ($inPath) { + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) { + if ((($index + 2) <= $formulaLength) && ($this->formula{$index + 1} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE)) { + $value .= PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE; + ++$index; + } else { + $inPath = false; + } + } else { + $value .= $this->formula{$index}; + } + ++$index; + continue; + } + + // bracked strings (R1C1 range index or linked workbook name) + // no embeds (changed to "()" by Excel) + // end does not mark a token + if ($inRange) { + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_CLOSE) { + $inRange = false; + } + $value .= $this->formula{$index}; + ++$index; + continue; + } + + // error values + // end marks a token, determined from absolute list of values + if ($inError) { + $value .= $this->formula{$index}; + ++$index; + if (in_array($value, $ERRORS)) { + $inError = false; + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_ERROR); + $value = ""; + } + continue; + } + + // scientific notation check + if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_SN, $this->formula{$index}) !== false) { + if (strlen($value) > 1) { + if (preg_match("/^[1-9]{1}(\.[0-9]+)?E{1}$/", $this->formula{$index}) != 0) { + $value .= $this->formula{$index}; + ++$index; + continue; + } + } + } + + // independent character evaluation (order not important) + + // establish state-dependent character evaluations + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_DOUBLE) { + if (strlen($value > 0)) { + // unexpected + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); + $value = ""; + } + $inString = true; + ++$index; + continue; + } + + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::QUOTE_SINGLE) { + if (strlen($value) > 0) { + // unexpected + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); + $value = ""; + } + $inPath = true; + ++$index; + continue; + } + + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACKET_OPEN) { + $inRange = true; + $value .= PHPExcel_Calculation_FormulaParser::BRACKET_OPEN; + ++$index; + continue; + } + + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::ERROR_START) { + if (strlen($value) > 0) { + // unexpected + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); + $value = ""; + } + $inError = true; + $value .= PHPExcel_Calculation_FormulaParser::ERROR_START; + ++$index; + continue; + } + + // mark start and end of arrays and array rows + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_OPEN) { + if (strlen($value) > 0) { + // unexpected + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN); + $value = ""; + } + + $tmp = new PHPExcel_Calculation_FormulaToken("ARRAY", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); + $tokens1[] = $tmp; + $stack[] = clone $tmp; + + $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); + $tokens1[] = $tmp; + $stack[] = clone $tmp; + + ++$index; + continue; + } + + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::SEMICOLON) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + + $tmp = array_pop($stack); + $tmp->setValue(""); + $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); + $tokens1[] = $tmp; + + $tmp = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT); + $tokens1[] = $tmp; + + $tmp = new PHPExcel_Calculation_FormulaToken("ARRAYROW", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); + $tokens1[] = $tmp; + $stack[] = clone $tmp; + + ++$index; + continue; + } + + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::BRACE_CLOSE) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + + $tmp = array_pop($stack); + $tmp->setValue(""); + $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); + $tokens1[] = $tmp; + + $tmp = array_pop($stack); + $tmp->setValue(""); + $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); + $tokens1[] = $tmp; + + ++$index; + continue; + } + + // trim white-space + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + $tokens1[] = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE); + ++$index; + while (($this->formula{$index} == PHPExcel_Calculation_FormulaParser::WHITESPACE) && ($index < $formulaLength)) { + ++$index; + } + continue; + } + + // multi-character comparators + if (($index + 2) <= $formulaLength) { + if (in_array(substr($this->formula, $index, 2), $COMPARATORS_MULTI)) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + $tokens1[] = new PHPExcel_Calculation_FormulaToken(substr($this->formula, $index, 2), PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); + $index += 2; + continue; + } + } + + // standard infix operators + if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_INFIX, $this->formula{$index}) !== false) { + if (strlen($value) > 0) { + $tokens1[] =new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX); + ++$index; + continue; + } + + // standard postfix operators (only one) + if (strpos(PHPExcel_Calculation_FormulaParser::OPERATORS_POSTFIX, $this->formula{$index}) !== false) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + $tokens1[] = new PHPExcel_Calculation_FormulaToken($this->formula{$index}, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX); + ++$index; + continue; + } + + // start subexpression or function + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_OPEN) { + if (strlen($value) > 0) { + $tmp = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); + $tokens1[] = $tmp; + $stack[] = clone $tmp; + $value = ""; + } else { + $tmp = new PHPExcel_Calculation_FormulaToken("", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START); + $tokens1[] = $tmp; + $stack[] = clone $tmp; + } + ++$index; + continue; + } + + // function, subexpression, or array parameters, or operand unions + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::COMMA) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + + $tmp = array_pop($stack); + $tmp->setValue(""); + $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); + $stack[] = $tmp; + + if ($tmp->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_UNION); + } else { + $tokens1[] = new PHPExcel_Calculation_FormulaToken(",", PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_ARGUMENT); + } + ++$index; + continue; + } + + // stop subexpression + if ($this->formula{$index} == PHPExcel_Calculation_FormulaParser::PAREN_CLOSE) { + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + $value = ""; + } + + $tmp = array_pop($stack); + $tmp->setValue(""); + $tmp->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP); + $tokens1[] = $tmp; + + ++$index; + continue; + } + + // token accumulation + $value .= $this->formula{$index}; + ++$index; + } + + // dump remaining accumulation + if (strlen($value) > 0) { + $tokens1[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND); + } + + // move tokenList to new set, excluding unnecessary white-space tokens and converting necessary ones to intersections + $tokenCount = count($tokens1); + for ($i = 0; $i < $tokenCount; ++$i) { + $token = $tokens1[$i]; + if (isset($tokens1[$i - 1])) { + $previousToken = $tokens1[$i - 1]; + } else { + $previousToken = null; + } + if (isset($tokens1[$i + 1])) { + $nextToken = $tokens1[$i + 1]; + } else { + $nextToken = null; + } + + if (is_null($token)) { + continue; + } + + if ($token->getTokenType() != PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_WHITESPACE) { + $tokens2[] = $token; + continue; + } + + if (is_null($previousToken)) { + continue; + } + + if (! ( + (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND) + ) ) { + continue; + } + + if (is_null($nextToken)) { + continue; + } + + if (! ( + (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) || + (($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_START)) || + ($nextToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND) + ) ) { + continue; + } + + $tokens2[] = new PHPExcel_Calculation_FormulaToken($value, PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX, PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_INTERSECTION); + } + + // move tokens to final list, switching infix "-" operators to prefix when appropriate, switching infix "+" operators + // to noop when appropriate, identifying operand and infix-operator subtypes, and pulling "@" from function names + $this->tokens = array(); + + $tokenCount = count($tokens2); + for ($i = 0; $i < $tokenCount; ++$i) { + $token = $tokens2[$i]; + if (isset($tokens2[$i - 1])) { + $previousToken = $tokens2[$i - 1]; + } else { + $previousToken = null; + } + if (isset($tokens2[$i + 1])) { + $nextToken = $tokens2[$i + 1]; + } else { + $nextToken = null; + } + + if (is_null($token)) { + continue; + } + + if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "-") { + if ($i == 0) { + $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX); + } elseif ((($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && + ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && + ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || + ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)) { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); + } else { + $token->setTokenType(PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPREFIX); + } + + $this->tokens[] = $token; + continue; + } + + if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == "+") { + if ($i == 0) { + continue; + } elseif ((($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) && + ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + (($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && + ($previousToken->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_STOP)) || + ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || + ($previousToken->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND)) { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); + } else { + continue; + } + + $this->tokens[] = $token; + continue; + } + + if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERATORINFIX && + $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) { + if (strpos("<>=", substr($token->getValue(), 0, 1)) !== false) { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); + } elseif ($token->getValue() == "&") { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_CONCATENATION); + } else { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_MATH); + } + + $this->tokens[] = $token; + continue; + } + + if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_OPERAND && + $token->getTokenSubType() == PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) { + if (!is_numeric($token->getValue())) { + if (strtoupper($token->getValue()) == "TRUE" || strtoupper($token->getValue() == "FALSE")) { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_LOGICAL); + } else { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_RANGE); + } + } else { + $token->setTokenSubType(PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NUMBER); + } + + $this->tokens[] = $token; + continue; + } + + if ($token->getTokenType() == PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_FUNCTION) { + if (strlen($token->getValue() > 0)) { + if (substr($token->getValue(), 0, 1) == "@") { + $token->setValue(substr($token->getValue(), 1)); + } + } + } + + $this->tokens[] = $token; + } + } +} diff --git a/assets/excel/PHPExcel/Calculation/FormulaToken.php b/assets/excel/PHPExcel/Calculation/FormulaToken.php new file mode 100644 index 0000000..41c6e3d --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/FormulaToken.php @@ -0,0 +1,176 @@ +value = $pValue; + $this->tokenType = $pTokenType; + $this->tokenSubType = $pTokenSubType; + } + + /** + * Get Value + * + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Set Value + * + * @param string $value + */ + public function setValue($value) + { + $this->value = $value; + } + + /** + * Get Token Type (represented by TOKEN_TYPE_*) + * + * @return string + */ + public function getTokenType() + { + return $this->tokenType; + } + + /** + * Set Token Type + * + * @param string $value + */ + public function setTokenType($value = PHPExcel_Calculation_FormulaToken::TOKEN_TYPE_UNKNOWN) + { + $this->tokenType = $value; + } + + /** + * Get Token SubType (represented by TOKEN_SUBTYPE_*) + * + * @return string + */ + public function getTokenSubType() + { + return $this->tokenSubType; + } + + /** + * Set Token SubType + * + * @param string $value + */ + public function setTokenSubType($value = PHPExcel_Calculation_FormulaToken::TOKEN_SUBTYPE_NOTHING) + { + $this->tokenSubType = $value; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Function.php b/assets/excel/PHPExcel/Calculation/Function.php new file mode 100644 index 0000000..d58cef2 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Function.php @@ -0,0 +1,148 @@ +category = $pCategory; + $this->excelName = $pExcelName; + $this->phpExcelName = $pPHPExcelName; + } else { + throw new PHPExcel_Calculation_Exception("Invalid parameters passed."); + } + } + + /** + * Get Category (represented by CATEGORY_*) + * + * @return string + */ + public function getCategory() + { + return $this->category; + } + + /** + * Set Category (represented by CATEGORY_*) + * + * @param string $value + * @throws PHPExcel_Calculation_Exception + */ + public function setCategory($value = null) + { + if (!is_null($value)) { + $this->category = $value; + } else { + throw new PHPExcel_Calculation_Exception("Invalid parameter passed."); + } + } + + /** + * Get Excel name + * + * @return string + */ + public function getExcelName() + { + return $this->excelName; + } + + /** + * Set Excel name + * + * @param string $value + */ + public function setExcelName($value) + { + $this->excelName = $value; + } + + /** + * Get PHPExcel name + * + * @return string + */ + public function getPHPExcelName() + { + return $this->phpExcelName; + } + + /** + * Set PHPExcel name + * + * @param string $value + */ + public function setPHPExcelName($value) + { + $this->phpExcelName = $value; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Functions.php b/assets/excel/PHPExcel/Calculation/Functions.php new file mode 100644 index 0000000..5a1e5ee --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Functions.php @@ -0,0 +1,760 @@ + '#NULL!', + 'divisionbyzero' => '#DIV/0!', + 'value' => '#VALUE!', + 'reference' => '#REF!', + 'name' => '#NAME?', + 'num' => '#NUM!', + 'na' => '#N/A', + 'gettingdata' => '#GETTING_DATA' + ); + + + /** + * Set the Compatibility Mode + * + * @access public + * @category Function Configuration + * @param string $compatibilityMode Compatibility Mode + * Permitted values are: + * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel' + * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' + * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' + * @return boolean (Success or Failure) + */ + public static function setCompatibilityMode($compatibilityMode) + { + if (($compatibilityMode == self::COMPATIBILITY_EXCEL) || + ($compatibilityMode == self::COMPATIBILITY_GNUMERIC) || + ($compatibilityMode == self::COMPATIBILITY_OPENOFFICE)) { + self::$compatibilityMode = $compatibilityMode; + return true; + } + return false; + } + + + /** + * Return the current Compatibility Mode + * + * @access public + * @category Function Configuration + * @return string Compatibility Mode + * Possible Return values are: + * PHPExcel_Calculation_Functions::COMPATIBILITY_EXCEL 'Excel' + * PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' + * PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' + */ + public static function getCompatibilityMode() + { + return self::$compatibilityMode; + } + + + /** + * Set the Return Date Format used by functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object) + * + * @access public + * @category Function Configuration + * @param string $returnDateType Return Date Format + * Permitted values are: + * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P' + * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O' + * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E' + * @return boolean Success or failure + */ + public static function setReturnDateType($returnDateType) + { + if (($returnDateType == self::RETURNDATE_PHP_NUMERIC) || + ($returnDateType == self::RETURNDATE_PHP_OBJECT) || + ($returnDateType == self::RETURNDATE_EXCEL)) { + self::$returnDateType = $returnDateType; + return true; + } + return false; + } + + + /** + * Return the current Return Date Format for functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object) + * + * @access public + * @category Function Configuration + * @return string Return Date Format + * Possible Return values are: + * PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC 'P' + * PHPExcel_Calculation_Functions::RETURNDATE_PHP_OBJECT 'O' + * PHPExcel_Calculation_Functions::RETURNDATE_EXCEL 'E' + */ + public static function getReturnDateType() + { + return self::$returnDateType; + } + + + /** + * DUMMY + * + * @access public + * @category Error Returns + * @return string #Not Yet Implemented + */ + public static function DUMMY() + { + return '#Not Yet Implemented'; + } + + + /** + * DIV0 + * + * @access public + * @category Error Returns + * @return string #Not Yet Implemented + */ + public static function DIV0() + { + return self::$errorCodes['divisionbyzero']; + } + + + /** + * NA + * + * Excel Function: + * =NA() + * + * Returns the error value #N/A + * #N/A is the error value that means "no value is available." + * + * @access public + * @category Logical Functions + * @return string #N/A! + */ + public static function NA() + { + return self::$errorCodes['na']; + } + + + /** + * NaN + * + * Returns the error value #NUM! + * + * @access public + * @category Error Returns + * @return string #NUM! + */ + public static function NaN() + { + return self::$errorCodes['num']; + } + + + /** + * NAME + * + * Returns the error value #NAME? + * + * @access public + * @category Error Returns + * @return string #NAME? + */ + public static function NAME() + { + return self::$errorCodes['name']; + } + + + /** + * REF + * + * Returns the error value #REF! + * + * @access public + * @category Error Returns + * @return string #REF! + */ + public static function REF() + { + return self::$errorCodes['reference']; + } + + + /** + * NULL + * + * Returns the error value #NULL! + * + * @access public + * @category Error Returns + * @return string #NULL! + */ + public static function NULL() + { + return self::$errorCodes['null']; + } + + + /** + * VALUE + * + * Returns the error value #VALUE! + * + * @access public + * @category Error Returns + * @return string #VALUE! + */ + public static function VALUE() + { + return self::$errorCodes['value']; + } + + + public static function isMatrixValue($idx) + { + return ((substr_count($idx, '.') <= 1) || (preg_match('/\.[A-Z]/', $idx) > 0)); + } + + + public static function isValue($idx) + { + return (substr_count($idx, '.') == 0); + } + + + public static function isCellValue($idx) + { + return (substr_count($idx, '.') > 1); + } + + + public static function ifCondition($condition) + { + $condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition); + if (!isset($condition{0})) { + $condition = '=""'; + } + if (!in_array($condition{0}, array('>', '<', '='))) { + if (!is_numeric($condition)) { + $condition = PHPExcel_Calculation::wrapResult(strtoupper($condition)); + } + return '=' . $condition; + } else { + preg_match('/([<>=]+)(.*)/', $condition, $matches); + list(, $operator, $operand) = $matches; + + if (!is_numeric($operand)) { + $operand = str_replace('"', '""', $operand); + $operand = PHPExcel_Calculation::wrapResult(strtoupper($operand)); + } + + return $operator.$operand; + } + } + + /** + * ERROR_TYPE + * + * @param mixed $value Value to check + * @return boolean + */ + public static function ERROR_TYPE($value = '') + { + $value = self::flattenSingleValue($value); + + $i = 1; + foreach (self::$errorCodes as $errorCode) { + if ($value === $errorCode) { + return $i; + } + ++$i; + } + return self::NA(); + } + + + /** + * IS_BLANK + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_BLANK($value = null) + { + if (!is_null($value)) { + $value = self::flattenSingleValue($value); + } + + return is_null($value); + } + + + /** + * IS_ERR + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_ERR($value = '') + { + $value = self::flattenSingleValue($value); + + return self::IS_ERROR($value) && (!self::IS_NA($value)); + } + + + /** + * IS_ERROR + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_ERROR($value = '') + { + $value = self::flattenSingleValue($value); + + if (!is_string($value)) { + return false; + } + return in_array($value, array_values(self::$errorCodes)); + } + + + /** + * IS_NA + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_NA($value = '') + { + $value = self::flattenSingleValue($value); + + return ($value === self::NA()); + } + + + /** + * IS_EVEN + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_EVEN($value = null) + { + $value = self::flattenSingleValue($value); + + if ($value === null) { + return self::NAME(); + } elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { + return self::VALUE(); + } + + return ($value % 2 == 0); + } + + + /** + * IS_ODD + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_ODD($value = null) + { + $value = self::flattenSingleValue($value); + + if ($value === null) { + return self::NAME(); + } elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { + return self::VALUE(); + } + + return (abs($value) % 2 == 1); + } + + + /** + * IS_NUMBER + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_NUMBER($value = null) + { + $value = self::flattenSingleValue($value); + + if (is_string($value)) { + return false; + } + return is_numeric($value); + } + + + /** + * IS_LOGICAL + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_LOGICAL($value = null) + { + $value = self::flattenSingleValue($value); + + return is_bool($value); + } + + + /** + * IS_TEXT + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_TEXT($value = null) + { + $value = self::flattenSingleValue($value); + + return (is_string($value) && !self::IS_ERROR($value)); + } + + + /** + * IS_NONTEXT + * + * @param mixed $value Value to check + * @return boolean + */ + public static function IS_NONTEXT($value = null) + { + return !self::IS_TEXT($value); + } + + + /** + * VERSION + * + * @return string Version information + */ + public static function VERSION() + { + return 'PHPExcel ##VERSION##, ##DATE##'; + } + + + /** + * N + * + * Returns a value converted to a number + * + * @param value The value you want converted + * @return number N converts values listed in the following table + * If value is or refers to N returns + * A number That number + * A date The serial number of that date + * TRUE 1 + * FALSE 0 + * An error value The error value + * Anything else 0 + */ + public static function N($value = null) + { + while (is_array($value)) { + $value = array_shift($value); + } + + switch (gettype($value)) { + case 'double': + case 'float': + case 'integer': + return $value; + case 'boolean': + return (integer) $value; + case 'string': + // Errors + if ((strlen($value) > 0) && ($value{0} == '#')) { + return $value; + } + break; + } + return 0; + } + + + /** + * TYPE + * + * Returns a number that identifies the type of a value + * + * @param value The value you want tested + * @return number N converts values listed in the following table + * If value is or refers to N returns + * A number 1 + * Text 2 + * Logical Value 4 + * An error value 16 + * Array or Matrix 64 + */ + public static function TYPE($value = null) + { + $value = self::flattenArrayIndexed($value); + if (is_array($value) && (count($value) > 1)) { + end($value); + $a = key($value); + // Range of cells is an error + if (self::isCellValue($a)) { + return 16; + // Test for Matrix + } elseif (self::isMatrixValue($a)) { + return 64; + } + } elseif (empty($value)) { + // Empty Cell + return 1; + } + $value = self::flattenSingleValue($value); + + if (($value === null) || (is_float($value)) || (is_int($value))) { + return 1; + } elseif (is_bool($value)) { + return 4; + } elseif (is_array($value)) { + return 64; + } elseif (is_string($value)) { + // Errors + if ((strlen($value) > 0) && ($value{0} == '#')) { + return 16; + } + return 2; + } + return 0; + } + + + /** + * Convert a multi-dimensional array to a simple 1-dimensional array + * + * @param array $array Array to be flattened + * @return array Flattened array + */ + public static function flattenArray($array) + { + if (!is_array($array)) { + return (array) $array; + } + + $arrayValues = array(); + foreach ($array as $value) { + if (is_array($value)) { + foreach ($value as $val) { + if (is_array($val)) { + foreach ($val as $v) { + $arrayValues[] = $v; + } + } else { + $arrayValues[] = $val; + } + } + } else { + $arrayValues[] = $value; + } + } + + return $arrayValues; + } + + + /** + * Convert a multi-dimensional array to a simple 1-dimensional array, but retain an element of indexing + * + * @param array $array Array to be flattened + * @return array Flattened array + */ + public static function flattenArrayIndexed($array) + { + if (!is_array($array)) { + return (array) $array; + } + + $arrayValues = array(); + foreach ($array as $k1 => $value) { + if (is_array($value)) { + foreach ($value as $k2 => $val) { + if (is_array($val)) { + foreach ($val as $k3 => $v) { + $arrayValues[$k1.'.'.$k2.'.'.$k3] = $v; + } + } else { + $arrayValues[$k1.'.'.$k2] = $val; + } + } + } else { + $arrayValues[$k1] = $value; + } + } + + return $arrayValues; + } + + + /** + * Convert an array to a single scalar value by extracting the first element + * + * @param mixed $value Array or scalar value + * @return mixed + */ + public static function flattenSingleValue($value = '') + { + while (is_array($value)) { + $value = array_pop($value); + } + + return $value; + } +} + + +// +// There are a few mathematical functions that aren't available on all versions of PHP for all platforms +// These functions aren't available in Windows implementations of PHP prior to version 5.3.0 +// So we test if they do exist for this version of PHP/operating platform; and if not we create them +// +if (!function_exists('acosh')) { + function acosh($x) + { + return 2 * log(sqrt(($x + 1) / 2) + sqrt(($x - 1) / 2)); + } // function acosh() +} + +if (!function_exists('asinh')) { + function asinh($x) + { + return log($x + sqrt(1 + $x * $x)); + } // function asinh() +} + +if (!function_exists('atanh')) { + function atanh($x) + { + return (log(1 + $x) - log(1 - $x)) / 2; + } // function atanh() +} + + +// +// Strangely, PHP doesn't have a mb_str_replace multibyte function +// As we'll only ever use this function with UTF-8 characters, we can simply "hard-code" the character set +// +if ((!function_exists('mb_str_replace')) && + (function_exists('mb_substr')) && (function_exists('mb_strlen')) && (function_exists('mb_strpos'))) { + function mb_str_replace($search, $replace, $subject) + { + if (is_array($subject)) { + $ret = array(); + foreach ($subject as $key => $val) { + $ret[$key] = mb_str_replace($search, $replace, $val); + } + return $ret; + } + + foreach ((array) $search as $key => $s) { + if ($s == '' && $s !== 0) { + continue; + } + $r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : ''); + $pos = mb_strpos($subject, $s, 0, 'UTF-8'); + while ($pos !== false) { + $subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8'); + $pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8'); + } + } + return $subject; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Logical.php b/assets/excel/PHPExcel/Calculation/Logical.php new file mode 100644 index 0000000..dd65f01 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Logical.php @@ -0,0 +1,285 @@ + $arg) { + // Is it a boolean value? + if (is_bool($arg)) { + $returnValue = $returnValue && $arg; + } elseif ((is_numeric($arg)) && (!is_string($arg))) { + $returnValue = $returnValue && ($arg != 0); + } elseif (is_string($arg)) { + $arg = strtoupper($arg); + if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) { + $arg = true; + } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) { + $arg = false; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + $returnValue = $returnValue && ($arg != 0); + } + } + + // Return + if ($argCount < 0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + return $returnValue; + } + + + /** + * LOGICAL_OR + * + * Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE. + * + * Excel Function: + * =OR(logical1[,logical2[, ...]]) + * + * The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays + * or references that contain logical values. + * + * Boolean arguments are treated as True or False as appropriate + * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False + * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds + * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value + * + * @access public + * @category Logical Functions + * @param mixed $arg,... Data values + * @return boolean The logical OR of the arguments. + */ + public static function LOGICAL_OR() + { + // Return value + $returnValue = false; + + // Loop through the arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + $argCount = -1; + foreach ($aArgs as $argCount => $arg) { + // Is it a boolean value? + if (is_bool($arg)) { + $returnValue = $returnValue || $arg; + } elseif ((is_numeric($arg)) && (!is_string($arg))) { + $returnValue = $returnValue || ($arg != 0); + } elseif (is_string($arg)) { + $arg = strtoupper($arg); + if (($arg == 'TRUE') || ($arg == PHPExcel_Calculation::getTRUE())) { + $arg = true; + } elseif (($arg == 'FALSE') || ($arg == PHPExcel_Calculation::getFALSE())) { + $arg = false; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + $returnValue = $returnValue || ($arg != 0); + } + } + + // Return + if ($argCount < 0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + return $returnValue; + } + + + /** + * NOT + * + * Returns the boolean inverse of the argument. + * + * Excel Function: + * =NOT(logical) + * + * The argument must evaluate to a logical value such as TRUE or FALSE + * + * Boolean arguments are treated as True or False as appropriate + * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False + * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string holds + * the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value + * + * @access public + * @category Logical Functions + * @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE + * @return boolean The boolean inverse of the argument. + */ + public static function NOT($logical = false) + { + $logical = PHPExcel_Calculation_Functions::flattenSingleValue($logical); + if (is_string($logical)) { + $logical = strtoupper($logical); + if (($logical == 'TRUE') || ($logical == PHPExcel_Calculation::getTRUE())) { + return false; + } elseif (($logical == 'FALSE') || ($logical == PHPExcel_Calculation::getFALSE())) { + return true; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + + return !$logical; + } + + /** + * STATEMENT_IF + * + * Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE. + * + * Excel Function: + * =IF(condition[,returnIfTrue[,returnIfFalse]]) + * + * Condition is any value or expression that can be evaluated to TRUE or FALSE. + * For example, A10=100 is a logical expression; if the value in cell A10 is equal to 100, + * the expression evaluates to TRUE. Otherwise, the expression evaluates to FALSE. + * This argument can use any comparison calculation operator. + * ReturnIfTrue is the value that is returned if condition evaluates to TRUE. + * For example, if this argument is the text string "Within budget" and the condition argument evaluates to TRUE, + * then the IF function returns the text "Within budget" + * If condition is TRUE and ReturnIfTrue is blank, this argument returns 0 (zero). To display the word TRUE, use + * the logical value TRUE for this argument. + * ReturnIfTrue can be another formula. + * ReturnIfFalse is the value that is returned if condition evaluates to FALSE. + * For example, if this argument is the text string "Over budget" and the condition argument evaluates to FALSE, + * then the IF function returns the text "Over budget". + * If condition is FALSE and ReturnIfFalse is omitted, then the logical value FALSE is returned. + * If condition is FALSE and ReturnIfFalse is blank, then the value 0 (zero) is returned. + * ReturnIfFalse can be another formula. + * + * @access public + * @category Logical Functions + * @param mixed $condition Condition to evaluate + * @param mixed $returnIfTrue Value to return when condition is true + * @param mixed $returnIfFalse Optional value to return when condition is false + * @return mixed The value of returnIfTrue or returnIfFalse determined by condition + */ + public static function STATEMENT_IF($condition = true, $returnIfTrue = 0, $returnIfFalse = false) + { + $condition = (is_null($condition)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($condition); + $returnIfTrue = (is_null($returnIfTrue)) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfTrue); + $returnIfFalse = (is_null($returnIfFalse)) ? false : PHPExcel_Calculation_Functions::flattenSingleValue($returnIfFalse); + + return ($condition) ? $returnIfTrue : $returnIfFalse; + } + + + /** + * IFERROR + * + * Excel Function: + * =IFERROR(testValue,errorpart) + * + * @access public + * @category Logical Functions + * @param mixed $testValue Value to check, is also the value returned when no error + * @param mixed $errorpart Value to return when testValue is an error condition + * @return mixed The value of errorpart or testValue determined by error condition + */ + public static function IFERROR($testValue = '', $errorpart = '') + { + $testValue = (is_null($testValue)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($testValue); + $errorpart = (is_null($errorpart)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($errorpart); + + return self::STATEMENT_IF(PHPExcel_Calculation_Functions::IS_ERROR($testValue), $errorpart, $testValue); + } +} diff --git a/assets/excel/PHPExcel/Calculation/LookupRef.php b/assets/excel/PHPExcel/Calculation/LookupRef.php new file mode 100644 index 0000000..1fe7790 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/LookupRef.php @@ -0,0 +1,879 @@ + '') { + if (strpos($sheetText, ' ') !== false) { + $sheetText = "'".$sheetText."'"; + } + $sheetText .='!'; + } + if ((!is_bool($referenceStyle)) || $referenceStyle) { + $rowRelative = $columnRelative = '$'; + $column = PHPExcel_Cell::stringFromColumnIndex($column-1); + if (($relativity == 2) || ($relativity == 4)) { + $columnRelative = ''; + } + if (($relativity == 3) || ($relativity == 4)) { + $rowRelative = ''; + } + return $sheetText.$columnRelative.$column.$rowRelative.$row; + } else { + if (($relativity == 2) || ($relativity == 4)) { + $column = '['.$column.']'; + } + if (($relativity == 3) || ($relativity == 4)) { + $row = '['.$row.']'; + } + return $sheetText.'R'.$row.'C'.$column; + } + } + + + /** + * COLUMN + * + * Returns the column number of the given cell reference + * If the cell reference is a range of cells, COLUMN returns the column numbers of each column in the reference as a horizontal array. + * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the + * reference of the cell in which the COLUMN function appears; otherwise this function returns 0. + * + * Excel Function: + * =COLUMN([cellAddress]) + * + * @param cellAddress A reference to a range of cells for which you want the column numbers + * @return integer or array of integer + */ + public static function COLUMN($cellAddress = null) + { + if (is_null($cellAddress) || trim($cellAddress) === '') { + return 0; + } + + if (is_array($cellAddress)) { + foreach ($cellAddress as $columnKey => $value) { + $columnKey = preg_replace('/[^a-z]/i', '', $columnKey); + return (integer) PHPExcel_Cell::columnIndexFromString($columnKey); + } + } else { + if (strpos($cellAddress, '!') !== false) { + list($sheet, $cellAddress) = explode('!', $cellAddress); + } + if (strpos($cellAddress, ':') !== false) { + list($startAddress, $endAddress) = explode(':', $cellAddress); + $startAddress = preg_replace('/[^a-z]/i', '', $startAddress); + $endAddress = preg_replace('/[^a-z]/i', '', $endAddress); + $returnValue = array(); + do { + $returnValue[] = (integer) PHPExcel_Cell::columnIndexFromString($startAddress); + } while ($startAddress++ != $endAddress); + return $returnValue; + } else { + $cellAddress = preg_replace('/[^a-z]/i', '', $cellAddress); + return (integer) PHPExcel_Cell::columnIndexFromString($cellAddress); + } + } + } + + + /** + * COLUMNS + * + * Returns the number of columns in an array or reference. + * + * Excel Function: + * =COLUMNS(cellAddress) + * + * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of columns + * @return integer The number of columns in cellAddress + */ + public static function COLUMNS($cellAddress = null) + { + if (is_null($cellAddress) || $cellAddress === '') { + return 1; + } elseif (!is_array($cellAddress)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + reset($cellAddress); + $isMatrix = (is_numeric(key($cellAddress))); + list($columns, $rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress); + + if ($isMatrix) { + return $rows; + } else { + return $columns; + } + } + + + /** + * ROW + * + * Returns the row number of the given cell reference + * If the cell reference is a range of cells, ROW returns the row numbers of each row in the reference as a vertical array. + * If cell reference is omitted, and the function is being called through the calculation engine, then it is assumed to be the + * reference of the cell in which the ROW function appears; otherwise this function returns 0. + * + * Excel Function: + * =ROW([cellAddress]) + * + * @param cellAddress A reference to a range of cells for which you want the row numbers + * @return integer or array of integer + */ + public static function ROW($cellAddress = null) + { + if (is_null($cellAddress) || trim($cellAddress) === '') { + return 0; + } + + if (is_array($cellAddress)) { + foreach ($cellAddress as $columnKey => $rowValue) { + foreach ($rowValue as $rowKey => $cellValue) { + return (integer) preg_replace('/[^0-9]/i', '', $rowKey); + } + } + } else { + if (strpos($cellAddress, '!') !== false) { + list($sheet, $cellAddress) = explode('!', $cellAddress); + } + if (strpos($cellAddress, ':') !== false) { + list($startAddress, $endAddress) = explode(':', $cellAddress); + $startAddress = preg_replace('/[^0-9]/', '', $startAddress); + $endAddress = preg_replace('/[^0-9]/', '', $endAddress); + $returnValue = array(); + do { + $returnValue[][] = (integer) $startAddress; + } while ($startAddress++ != $endAddress); + return $returnValue; + } else { + list($cellAddress) = explode(':', $cellAddress); + return (integer) preg_replace('/[^0-9]/', '', $cellAddress); + } + } + } + + + /** + * ROWS + * + * Returns the number of rows in an array or reference. + * + * Excel Function: + * =ROWS(cellAddress) + * + * @param cellAddress An array or array formula, or a reference to a range of cells for which you want the number of rows + * @return integer The number of rows in cellAddress + */ + public static function ROWS($cellAddress = null) + { + if (is_null($cellAddress) || $cellAddress === '') { + return 1; + } elseif (!is_array($cellAddress)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + reset($cellAddress); + $isMatrix = (is_numeric(key($cellAddress))); + list($columns, $rows) = PHPExcel_Calculation::_getMatrixDimensions($cellAddress); + + if ($isMatrix) { + return $columns; + } else { + return $rows; + } + } + + + /** + * HYPERLINK + * + * Excel Function: + * =HYPERLINK(linkURL,displayName) + * + * @access public + * @category Logical Functions + * @param string $linkURL Value to check, is also the value returned when no error + * @param string $displayName Value to return when testValue is an error condition + * @param PHPExcel_Cell $pCell The cell to set the hyperlink in + * @return mixed The value of $displayName (or $linkURL if $displayName was blank) + */ + public static function HYPERLINK($linkURL = '', $displayName = null, PHPExcel_Cell $pCell = null) + { + $args = func_get_args(); + $pCell = array_pop($args); + + $linkURL = (is_null($linkURL)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($linkURL); + $displayName = (is_null($displayName)) ? '' : PHPExcel_Calculation_Functions::flattenSingleValue($displayName); + + if ((!is_object($pCell)) || (trim($linkURL) == '')) { + return PHPExcel_Calculation_Functions::REF(); + } + + if ((is_object($displayName)) || trim($displayName) == '') { + $displayName = $linkURL; + } + + $pCell->getHyperlink()->setUrl($linkURL); + $pCell->getHyperlink()->setTooltip($displayName); + + return $displayName; + } + + + /** + * INDIRECT + * + * Returns the reference specified by a text string. + * References are immediately evaluated to display their contents. + * + * Excel Function: + * =INDIRECT(cellAddress) + * + * NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010 + * + * @param cellAddress $cellAddress The cell address of the current cell (containing this formula) + * @param PHPExcel_Cell $pCell The current cell (containing this formula) + * @return mixed The cells referenced by cellAddress + * + * @todo Support for the optional a1 parameter introduced in Excel 2010 + * + */ + public static function INDIRECT($cellAddress = null, PHPExcel_Cell $pCell = null) + { + $cellAddress = PHPExcel_Calculation_Functions::flattenSingleValue($cellAddress); + if (is_null($cellAddress) || $cellAddress === '') { + return PHPExcel_Calculation_Functions::REF(); + } + + $cellAddress1 = $cellAddress; + $cellAddress2 = null; + if (strpos($cellAddress, ':') !== false) { + list($cellAddress1, $cellAddress2) = explode(':', $cellAddress); + } + + if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress1, $matches)) || + ((!is_null($cellAddress2)) && (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $cellAddress2, $matches)))) { + if (!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $cellAddress1, $matches)) { + return PHPExcel_Calculation_Functions::REF(); + } + + if (strpos($cellAddress, '!') !== false) { + list($sheetName, $cellAddress) = explode('!', $cellAddress); + $sheetName = trim($sheetName, "'"); + $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); + } else { + $pSheet = $pCell->getWorksheet(); + } + + return PHPExcel_Calculation::getInstance()->extractNamedRange($cellAddress, $pSheet, false); + } + + if (strpos($cellAddress, '!') !== false) { + list($sheetName, $cellAddress) = explode('!', $cellAddress); + $sheetName = trim($sheetName, "'"); + $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); + } else { + $pSheet = $pCell->getWorksheet(); + } + + return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false); + } + + + /** + * OFFSET + * + * Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells. + * The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and + * the number of columns to be returned. + * + * Excel Function: + * =OFFSET(cellAddress, rows, cols, [height], [width]) + * + * @param cellAddress The reference from which you want to base the offset. Reference must refer to a cell or + * range of adjacent cells; otherwise, OFFSET returns the #VALUE! error value. + * @param rows The number of rows, up or down, that you want the upper-left cell to refer to. + * Using 5 as the rows argument specifies that the upper-left cell in the reference is + * five rows below reference. Rows can be positive (which means below the starting reference) + * or negative (which means above the starting reference). + * @param cols The number of columns, to the left or right, that you want the upper-left cell of the result + * to refer to. Using 5 as the cols argument specifies that the upper-left cell in the + * reference is five columns to the right of reference. Cols can be positive (which means + * to the right of the starting reference) or negative (which means to the left of the + * starting reference). + * @param height The height, in number of rows, that you want the returned reference to be. Height must be a positive number. + * @param width The width, in number of columns, that you want the returned reference to be. Width must be a positive number. + * @return string A reference to a cell or range of cells + */ + public static function OFFSET($cellAddress = null, $rows = 0, $columns = 0, $height = null, $width = null) + { + $rows = PHPExcel_Calculation_Functions::flattenSingleValue($rows); + $columns = PHPExcel_Calculation_Functions::flattenSingleValue($columns); + $height = PHPExcel_Calculation_Functions::flattenSingleValue($height); + $width = PHPExcel_Calculation_Functions::flattenSingleValue($width); + if ($cellAddress == null) { + return 0; + } + + $args = func_get_args(); + $pCell = array_pop($args); + if (!is_object($pCell)) { + return PHPExcel_Calculation_Functions::REF(); + } + + $sheetName = null; + if (strpos($cellAddress, "!")) { + list($sheetName, $cellAddress) = explode("!", $cellAddress); + $sheetName = trim($sheetName, "'"); + } + if (strpos($cellAddress, ":")) { + list($startCell, $endCell) = explode(":", $cellAddress); + } else { + $startCell = $endCell = $cellAddress; + } + list($startCellColumn, $startCellRow) = PHPExcel_Cell::coordinateFromString($startCell); + list($endCellColumn, $endCellRow) = PHPExcel_Cell::coordinateFromString($endCell); + + $startCellRow += $rows; + $startCellColumn = PHPExcel_Cell::columnIndexFromString($startCellColumn) - 1; + $startCellColumn += $columns; + + if (($startCellRow <= 0) || ($startCellColumn < 0)) { + return PHPExcel_Calculation_Functions::REF(); + } + $endCellColumn = PHPExcel_Cell::columnIndexFromString($endCellColumn) - 1; + if (($width != null) && (!is_object($width))) { + $endCellColumn = $startCellColumn + $width - 1; + } else { + $endCellColumn += $columns; + } + $startCellColumn = PHPExcel_Cell::stringFromColumnIndex($startCellColumn); + + if (($height != null) && (!is_object($height))) { + $endCellRow = $startCellRow + $height - 1; + } else { + $endCellRow += $rows; + } + + if (($endCellRow <= 0) || ($endCellColumn < 0)) { + return PHPExcel_Calculation_Functions::REF(); + } + $endCellColumn = PHPExcel_Cell::stringFromColumnIndex($endCellColumn); + + $cellAddress = $startCellColumn.$startCellRow; + if (($startCellColumn != $endCellColumn) || ($startCellRow != $endCellRow)) { + $cellAddress .= ':'.$endCellColumn.$endCellRow; + } + + if ($sheetName !== null) { + $pSheet = $pCell->getWorksheet()->getParent()->getSheetByName($sheetName); + } else { + $pSheet = $pCell->getWorksheet(); + } + + return PHPExcel_Calculation::getInstance()->extractCellRange($cellAddress, $pSheet, false); + } + + + /** + * CHOOSE + * + * Uses lookup_value to return a value from the list of value arguments. + * Use CHOOSE to select one of up to 254 values based on the lookup_value. + * + * Excel Function: + * =CHOOSE(index_num, value1, [value2], ...) + * + * @param index_num Specifies which value argument is selected. + * Index_num must be a number between 1 and 254, or a formula or reference to a cell containing a number + * between 1 and 254. + * @param value1... Value1 is required, subsequent values are optional. + * Between 1 to 254 value arguments from which CHOOSE selects a value or an action to perform based on + * index_num. The arguments can be numbers, cell references, defined names, formulas, functions, or + * text. + * @return mixed The selected value + */ + public static function CHOOSE() + { + $chooseArgs = func_get_args(); + $chosenEntry = PHPExcel_Calculation_Functions::flattenArray(array_shift($chooseArgs)); + $entryCount = count($chooseArgs) - 1; + + if (is_array($chosenEntry)) { + $chosenEntry = array_shift($chosenEntry); + } + if ((is_numeric($chosenEntry)) && (!is_bool($chosenEntry))) { + --$chosenEntry; + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + $chosenEntry = floor($chosenEntry); + if (($chosenEntry < 0) || ($chosenEntry > $entryCount)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (is_array($chooseArgs[$chosenEntry])) { + return PHPExcel_Calculation_Functions::flattenArray($chooseArgs[$chosenEntry]); + } else { + return $chooseArgs[$chosenEntry]; + } + } + + + /** + * MATCH + * + * The MATCH function searches for a specified item in a range of cells + * + * Excel Function: + * =MATCH(lookup_value, lookup_array, [match_type]) + * + * @param lookup_value The value that you want to match in lookup_array + * @param lookup_array The range of cells being searched + * @param match_type The number -1, 0, or 1. -1 means above, 0 means exact match, 1 means below. If match_type is 1 or -1, the list has to be ordered. + * @return integer The relative position of the found item + */ + public static function MATCH($lookup_value, $lookup_array, $match_type = 1) + { + $lookup_array = PHPExcel_Calculation_Functions::flattenArray($lookup_array); + $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); + $match_type = (is_null($match_type)) ? 1 : (int) PHPExcel_Calculation_Functions::flattenSingleValue($match_type); + // MATCH is not case sensitive + $lookup_value = strtolower($lookup_value); + + // lookup_value type has to be number, text, or logical values + if ((!is_numeric($lookup_value)) && (!is_string($lookup_value)) && (!is_bool($lookup_value))) { + return PHPExcel_Calculation_Functions::NA(); + } + + // match_type is 0, 1 or -1 + if (($match_type !== 0) && ($match_type !== -1) && ($match_type !== 1)) { + return PHPExcel_Calculation_Functions::NA(); + } + + // lookup_array should not be empty + $lookupArraySize = count($lookup_array); + if ($lookupArraySize <= 0) { + return PHPExcel_Calculation_Functions::NA(); + } + + // lookup_array should contain only number, text, or logical values, or empty (null) cells + foreach ($lookup_array as $i => $lookupArrayValue) { + // check the type of the value + if ((!is_numeric($lookupArrayValue)) && (!is_string($lookupArrayValue)) && + (!is_bool($lookupArrayValue)) && (!is_null($lookupArrayValue))) { + return PHPExcel_Calculation_Functions::NA(); + } + // convert strings to lowercase for case-insensitive testing + if (is_string($lookupArrayValue)) { + $lookup_array[$i] = strtolower($lookupArrayValue); + } + if ((is_null($lookupArrayValue)) && (($match_type == 1) || ($match_type == -1))) { + $lookup_array = array_slice($lookup_array, 0, $i-1); + } + } + + // if match_type is 1 or -1, the list has to be ordered + if ($match_type == 1) { + asort($lookup_array); + $keySet = array_keys($lookup_array); + } elseif ($match_type == -1) { + arsort($lookup_array); + $keySet = array_keys($lookup_array); + } + + // ** + // find the match + // ** + foreach ($lookup_array as $i => $lookupArrayValue) { + if (($match_type == 0) && ($lookupArrayValue == $lookup_value)) { + // exact match + return ++$i; + } elseif (($match_type == -1) && ($lookupArrayValue <= $lookup_value)) { + $i = array_search($i, $keySet); + // if match_type is -1 <=> find the smallest value that is greater than or equal to lookup_value + if ($i < 1) { + // 1st cell was already smaller than the lookup_value + break; + } else { + // the previous cell was the match + return $keySet[$i-1]+1; + } + } elseif (($match_type == 1) && ($lookupArrayValue >= $lookup_value)) { + $i = array_search($i, $keySet); + // if match_type is 1 <=> find the largest value that is less than or equal to lookup_value + if ($i < 1) { + // 1st cell was already bigger than the lookup_value + break; + } else { + // the previous cell was the match + return $keySet[$i-1]+1; + } + } + } + + // unsuccessful in finding a match, return #N/A error value + return PHPExcel_Calculation_Functions::NA(); + } + + + /** + * INDEX + * + * Uses an index to choose a value from a reference or array + * + * Excel Function: + * =INDEX(range_array, row_num, [column_num]) + * + * @param range_array A range of cells or an array constant + * @param row_num The row in array from which to return a value. If row_num is omitted, column_num is required. + * @param column_num The column in array from which to return a value. If column_num is omitted, row_num is required. + * @return mixed the value of a specified cell or array of cells + */ + public static function INDEX($arrayValues, $rowNum = 0, $columnNum = 0) + { + if (($rowNum < 0) || ($columnNum < 0)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (!is_array($arrayValues)) { + return PHPExcel_Calculation_Functions::REF(); + } + + $rowKeys = array_keys($arrayValues); + $columnKeys = @array_keys($arrayValues[$rowKeys[0]]); + + if ($columnNum > count($columnKeys)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($columnNum == 0) { + if ($rowNum == 0) { + return $arrayValues; + } + $rowNum = $rowKeys[--$rowNum]; + $returnArray = array(); + foreach ($arrayValues as $arrayColumn) { + if (is_array($arrayColumn)) { + if (isset($arrayColumn[$rowNum])) { + $returnArray[] = $arrayColumn[$rowNum]; + } else { + return $arrayValues[$rowNum]; + } + } else { + return $arrayValues[$rowNum]; + } + } + return $returnArray; + } + $columnNum = $columnKeys[--$columnNum]; + if ($rowNum > count($rowKeys)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($rowNum == 0) { + return $arrayValues[$columnNum]; + } + $rowNum = $rowKeys[--$rowNum]; + + return $arrayValues[$rowNum][$columnNum]; + } + + + /** + * TRANSPOSE + * + * @param array $matrixData A matrix of values + * @return array + * + * Unlike the Excel TRANSPOSE function, which will only work on a single row or column, this function will transpose a full matrix. + */ + public static function TRANSPOSE($matrixData) + { + $returnMatrix = array(); + if (!is_array($matrixData)) { + $matrixData = array(array($matrixData)); + } + + $column = 0; + foreach ($matrixData as $matrixRow) { + $row = 0; + foreach ($matrixRow as $matrixCell) { + $returnMatrix[$row][$column] = $matrixCell; + ++$row; + } + ++$column; + } + return $returnMatrix; + } + + + private static function vlookupSort($a, $b) + { + reset($a); + $firstColumn = key($a); + if (($aLower = strtolower($a[$firstColumn])) == ($bLower = strtolower($b[$firstColumn]))) { + return 0; + } + return ($aLower < $bLower) ? -1 : 1; + } + + + /** + * VLOOKUP + * The VLOOKUP function searches for value in the left-most column of lookup_array and returns the value in the same row based on the index_number. + * @param lookup_value The value that you want to match in lookup_array + * @param lookup_array The range of cells being searched + * @param index_number The column number in table_array from which the matching value must be returned. The first column is 1. + * @param not_exact_match Determines if you are looking for an exact match based on lookup_value. + * @return mixed The value of the found cell + */ + public static function VLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) + { + $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); + $index_number = PHPExcel_Calculation_Functions::flattenSingleValue($index_number); + $not_exact_match = PHPExcel_Calculation_Functions::flattenSingleValue($not_exact_match); + + // index_number must be greater than or equal to 1 + if ($index_number < 1) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // index_number must be less than or equal to the number of columns in lookup_array + if ((!is_array($lookup_array)) || (empty($lookup_array))) { + return PHPExcel_Calculation_Functions::REF(); + } else { + $f = array_keys($lookup_array); + $firstRow = array_pop($f); + if ((!is_array($lookup_array[$firstRow])) || ($index_number > count($lookup_array[$firstRow]))) { + return PHPExcel_Calculation_Functions::REF(); + } else { + $columnKeys = array_keys($lookup_array[$firstRow]); + $returnColumn = $columnKeys[--$index_number]; + $firstColumn = array_shift($columnKeys); + } + } + + if (!$not_exact_match) { + uasort($lookup_array, array('self', 'vlookupSort')); + } + + $rowNumber = $rowValue = false; + foreach ($lookup_array as $rowKey => $rowData) { + if ((is_numeric($lookup_value) && is_numeric($rowData[$firstColumn]) && ($rowData[$firstColumn] > $lookup_value)) || + (!is_numeric($lookup_value) && !is_numeric($rowData[$firstColumn]) && (strtolower($rowData[$firstColumn]) > strtolower($lookup_value)))) { + break; + } + $rowNumber = $rowKey; + $rowValue = $rowData[$firstColumn]; + } + + if ($rowNumber !== false) { + if ((!$not_exact_match) && ($rowValue != $lookup_value)) { + // if an exact match is required, we have what we need to return an appropriate response + return PHPExcel_Calculation_Functions::NA(); + } else { + // otherwise return the appropriate value + return $lookup_array[$rowNumber][$returnColumn]; + } + } + + return PHPExcel_Calculation_Functions::NA(); + } + + + /** + * HLOOKUP + * The HLOOKUP function searches for value in the top-most row of lookup_array and returns the value in the same column based on the index_number. + * @param lookup_value The value that you want to match in lookup_array + * @param lookup_array The range of cells being searched + * @param index_number The row number in table_array from which the matching value must be returned. The first row is 1. + * @param not_exact_match Determines if you are looking for an exact match based on lookup_value. + * @return mixed The value of the found cell + */ + public static function HLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) + { + $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); + $index_number = PHPExcel_Calculation_Functions::flattenSingleValue($index_number); + $not_exact_match = PHPExcel_Calculation_Functions::flattenSingleValue($not_exact_match); + + // index_number must be greater than or equal to 1 + if ($index_number < 1) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + // index_number must be less than or equal to the number of columns in lookup_array + if ((!is_array($lookup_array)) || (empty($lookup_array))) { + return PHPExcel_Calculation_Functions::REF(); + } else { + $f = array_keys($lookup_array); + $firstRow = array_pop($f); + if ((!is_array($lookup_array[$firstRow])) || ($index_number > count($lookup_array[$firstRow]))) { + return PHPExcel_Calculation_Functions::REF(); + } else { + $columnKeys = array_keys($lookup_array[$firstRow]); + $firstkey = $f[0] - 1; + $returnColumn = $firstkey + $index_number; + $firstColumn = array_shift($f); + } + } + + if (!$not_exact_match) { + $firstRowH = asort($lookup_array[$firstColumn]); + } + + $rowNumber = $rowValue = false; + foreach ($lookup_array[$firstColumn] as $rowKey => $rowData) { + if ((is_numeric($lookup_value) && is_numeric($rowData) && ($rowData > $lookup_value)) || + (!is_numeric($lookup_value) && !is_numeric($rowData) && (strtolower($rowData) > strtolower($lookup_value)))) { + break; + } + $rowNumber = $rowKey; + $rowValue = $rowData; + } + + if ($rowNumber !== false) { + if ((!$not_exact_match) && ($rowValue != $lookup_value)) { + // if an exact match is required, we have what we need to return an appropriate response + return PHPExcel_Calculation_Functions::NA(); + } else { + // otherwise return the appropriate value + return $lookup_array[$returnColumn][$rowNumber]; + } + } + + return PHPExcel_Calculation_Functions::NA(); + } + + + /** + * LOOKUP + * The LOOKUP function searches for value either from a one-row or one-column range or from an array. + * @param lookup_value The value that you want to match in lookup_array + * @param lookup_vector The range of cells being searched + * @param result_vector The column from which the matching value must be returned + * @return mixed The value of the found cell + */ + public static function LOOKUP($lookup_value, $lookup_vector, $result_vector = null) + { + $lookup_value = PHPExcel_Calculation_Functions::flattenSingleValue($lookup_value); + + if (!is_array($lookup_vector)) { + return PHPExcel_Calculation_Functions::NA(); + } + $lookupRows = count($lookup_vector); + $l = array_keys($lookup_vector); + $l = array_shift($l); + $lookupColumns = count($lookup_vector[$l]); + if ((($lookupRows == 1) && ($lookupColumns > 1)) || (($lookupRows == 2) && ($lookupColumns != 2))) { + $lookup_vector = self::TRANSPOSE($lookup_vector); + $lookupRows = count($lookup_vector); + $l = array_keys($lookup_vector); + $lookupColumns = count($lookup_vector[array_shift($l)]); + } + + if (is_null($result_vector)) { + $result_vector = $lookup_vector; + } + $resultRows = count($result_vector); + $l = array_keys($result_vector); + $l = array_shift($l); + $resultColumns = count($result_vector[$l]); + if ((($resultRows == 1) && ($resultColumns > 1)) || (($resultRows == 2) && ($resultColumns != 2))) { + $result_vector = self::TRANSPOSE($result_vector); + $resultRows = count($result_vector); + $r = array_keys($result_vector); + $resultColumns = count($result_vector[array_shift($r)]); + } + + if ($lookupRows == 2) { + $result_vector = array_pop($lookup_vector); + $lookup_vector = array_shift($lookup_vector); + } + if ($lookupColumns != 2) { + foreach ($lookup_vector as &$value) { + if (is_array($value)) { + $k = array_keys($value); + $key1 = $key2 = array_shift($k); + $key2++; + $dataValue1 = $value[$key1]; + } else { + $key1 = 0; + $key2 = 1; + $dataValue1 = $value; + } + $dataValue2 = array_shift($result_vector); + if (is_array($dataValue2)) { + $dataValue2 = array_shift($dataValue2); + } + $value = array($key1 => $dataValue1, $key2 => $dataValue2); + } + unset($value); + } + + return self::VLOOKUP($lookup_value, $lookup_vector, 2); + } +} diff --git a/assets/excel/PHPExcel/Calculation/MathTrig.php b/assets/excel/PHPExcel/Calculation/MathTrig.php new file mode 100644 index 0000000..894ba9c --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/MathTrig.php @@ -0,0 +1,1459 @@ + 1; --$i) { + if (($value % $i) == 0) { + $factorArray = array_merge($factorArray, self::factors($value / $i)); + $factorArray = array_merge($factorArray, self::factors($i)); + if ($i <= sqrt($value)) { + break; + } + } + } + if (!empty($factorArray)) { + rsort($factorArray); + return $factorArray; + } else { + return array((integer) $value); + } + } + + + private static function romanCut($num, $n) + { + return ($num - ($num % $n ) ) / $n; + } + + + /** + * ATAN2 + * + * This function calculates the arc tangent of the two variables x and y. It is similar to + * calculating the arc tangent of y ÷ x, except that the signs of both arguments are used + * to determine the quadrant of the result. + * The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a + * point with coordinates (xCoordinate, yCoordinate). The angle is given in radians between + * -pi and pi, excluding -pi. + * + * Note that the Excel ATAN2() function accepts its arguments in the reverse order to the standard + * PHP atan2() function, so we need to reverse them here before calling the PHP atan() function. + * + * Excel Function: + * ATAN2(xCoordinate,yCoordinate) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $xCoordinate The x-coordinate of the point. + * @param float $yCoordinate The y-coordinate of the point. + * @return float The inverse tangent of the specified x- and y-coordinates. + */ + public static function ATAN2($xCoordinate = null, $yCoordinate = null) + { + $xCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($xCoordinate); + $yCoordinate = PHPExcel_Calculation_Functions::flattenSingleValue($yCoordinate); + + $xCoordinate = ($xCoordinate !== null) ? $xCoordinate : 0.0; + $yCoordinate = ($yCoordinate !== null) ? $yCoordinate : 0.0; + + if (((is_numeric($xCoordinate)) || (is_bool($xCoordinate))) && + ((is_numeric($yCoordinate))) || (is_bool($yCoordinate))) { + $xCoordinate = (float) $xCoordinate; + $yCoordinate = (float) $yCoordinate; + + if (($xCoordinate == 0) && ($yCoordinate == 0)) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + return atan2($yCoordinate, $xCoordinate); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * CEILING + * + * Returns number rounded up, away from zero, to the nearest multiple of significance. + * For example, if you want to avoid using pennies in your prices and your product is + * priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the + * nearest nickel. + * + * Excel Function: + * CEILING(number[,significance]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $number The number you want to round. + * @param float $significance The multiple to which you want to round. + * @return float Rounded Number + */ + public static function CEILING($number, $significance = null) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance); + + if ((is_null($significance)) && + (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) { + $significance = $number / abs($number); + } + + if ((is_numeric($number)) && (is_numeric($significance))) { + if (($number == 0.0 ) || ($significance == 0.0)) { + return 0.0; + } elseif (self::SIGN($number) == self::SIGN($significance)) { + return ceil($number / $significance) * $significance; + } else { + return PHPExcel_Calculation_Functions::NaN(); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * COMBIN + * + * Returns the number of combinations for a given number of items. Use COMBIN to + * determine the total possible number of groups for a given number of items. + * + * Excel Function: + * COMBIN(numObjs,numInSet) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param int $numObjs Number of different objects + * @param int $numInSet Number of objects in each combination + * @return int Number of combinations + */ + public static function COMBIN($numObjs, $numInSet) + { + $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs); + $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet); + + if ((is_numeric($numObjs)) && (is_numeric($numInSet))) { + if ($numObjs < $numInSet) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif ($numInSet < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return round(self::FACT($numObjs) / self::FACT($numObjs - $numInSet)) / self::FACT($numInSet); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * EVEN + * + * Returns number rounded up to the nearest even integer. + * You can use this function for processing items that come in twos. For example, + * a packing crate accepts rows of one or two items. The crate is full when + * the number of items, rounded up to the nearest two, matches the crate's + * capacity. + * + * Excel Function: + * EVEN(number) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $number Number to round + * @return int Rounded Number + */ + public static function EVEN($number) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + + if (is_null($number)) { + return 0; + } elseif (is_bool($number)) { + $number = (int) $number; + } + + if (is_numeric($number)) { + $significance = 2 * self::SIGN($number); + return (int) self::CEILING($number, $significance); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FACT + * + * Returns the factorial of a number. + * The factorial of a number is equal to 1*2*3*...* number. + * + * Excel Function: + * FACT(factVal) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $factVal Factorial Value + * @return int Factorial + */ + public static function FACT($factVal) + { + $factVal = PHPExcel_Calculation_Functions::flattenSingleValue($factVal); + + if (is_numeric($factVal)) { + if ($factVal < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $factLoop = floor($factVal); + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + if ($factVal > $factLoop) { + return PHPExcel_Calculation_Functions::NaN(); + } + } + + $factorial = 1; + while ($factLoop > 1) { + $factorial *= $factLoop--; + } + return $factorial ; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FACTDOUBLE + * + * Returns the double factorial of a number. + * + * Excel Function: + * FACTDOUBLE(factVal) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $factVal Factorial Value + * @return int Double Factorial + */ + public static function FACTDOUBLE($factVal) + { + $factLoop = PHPExcel_Calculation_Functions::flattenSingleValue($factVal); + + if (is_numeric($factLoop)) { + $factLoop = floor($factLoop); + if ($factVal < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $factorial = 1; + while ($factLoop > 1) { + $factorial *= $factLoop--; + --$factLoop; + } + return $factorial ; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FLOOR + * + * Rounds number down, toward zero, to the nearest multiple of significance. + * + * Excel Function: + * FLOOR(number[,significance]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $number Number to round + * @param float $significance Significance + * @return float Rounded Number + */ + public static function FLOOR($number, $significance = null) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $significance = PHPExcel_Calculation_Functions::flattenSingleValue($significance); + + if ((is_null($significance)) && + (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC)) { + $significance = $number/abs($number); + } + + if ((is_numeric($number)) && (is_numeric($significance))) { + if ($significance == 0.0) { + return PHPExcel_Calculation_Functions::DIV0(); + } elseif ($number == 0.0) { + return 0.0; + } elseif (self::SIGN($number) == self::SIGN($significance)) { + return floor($number / $significance) * $significance; + } else { + return PHPExcel_Calculation_Functions::NaN(); + } + } + + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * GCD + * + * Returns the greatest common divisor of a series of numbers. + * The greatest common divisor is the largest integer that divides both + * number1 and number2 without a remainder. + * + * Excel Function: + * GCD(number1[,number2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return integer Greatest Common Divisor + */ + public static function GCD() + { + $returnValue = 1; + $allValuesFactors = array(); + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) { + if (!is_numeric($value)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ($value == 0) { + continue; + } elseif ($value < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $myFactors = self::factors($value); + $myCountedFactors = array_count_values($myFactors); + $allValuesFactors[] = $myCountedFactors; + } + $allValuesCount = count($allValuesFactors); + if ($allValuesCount == 0) { + return 0; + } + + $mergedArray = $allValuesFactors[0]; + for ($i=1; $i < $allValuesCount; ++$i) { + $mergedArray = array_intersect_key($mergedArray, $allValuesFactors[$i]); + } + $mergedArrayValues = count($mergedArray); + if ($mergedArrayValues == 0) { + return $returnValue; + } elseif ($mergedArrayValues > 1) { + foreach ($mergedArray as $mergedKey => $mergedValue) { + foreach ($allValuesFactors as $highestPowerTest) { + foreach ($highestPowerTest as $testKey => $testValue) { + if (($testKey == $mergedKey) && ($testValue < $mergedValue)) { + $mergedArray[$mergedKey] = $testValue; + $mergedValue = $testValue; + } + } + } + } + + $returnValue = 1; + foreach ($mergedArray as $key => $value) { + $returnValue *= pow($key, $value); + } + return $returnValue; + } else { + $keys = array_keys($mergedArray); + $key = $keys[0]; + $value = $mergedArray[$key]; + foreach ($allValuesFactors as $testValue) { + foreach ($testValue as $mergedKey => $mergedValue) { + if (($mergedKey == $key) && ($mergedValue < $value)) { + $value = $mergedValue; + } + } + } + return pow($key, $value); + } + } + + + /** + * INT + * + * Casts a floating point value to an integer + * + * Excel Function: + * INT(number) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $number Number to cast to an integer + * @return integer Integer value + */ + public static function INT($number) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + + if (is_null($number)) { + return 0; + } elseif (is_bool($number)) { + return (int) $number; + } + if (is_numeric($number)) { + return (int) floor($number); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * LCM + * + * Returns the lowest common multiplier of a series of numbers + * The least common multiple is the smallest positive integer that is a multiple + * of all integer arguments number1, number2, and so on. Use LCM to add fractions + * with different denominators. + * + * Excel Function: + * LCM(number1[,number2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return int Lowest Common Multiplier + */ + public static function LCM() + { + $returnValue = 1; + $allPoweredFactors = array(); + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $value) { + if (!is_numeric($value)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if ($value == 0) { + return 0; + } elseif ($value < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $myFactors = self::factors(floor($value)); + $myCountedFactors = array_count_values($myFactors); + $myPoweredFactors = array(); + foreach ($myCountedFactors as $myCountedFactor => $myCountedPower) { + $myPoweredFactors[$myCountedFactor] = pow($myCountedFactor, $myCountedPower); + } + foreach ($myPoweredFactors as $myPoweredValue => $myPoweredFactor) { + if (array_key_exists($myPoweredValue, $allPoweredFactors)) { + if ($allPoweredFactors[$myPoweredValue] < $myPoweredFactor) { + $allPoweredFactors[$myPoweredValue] = $myPoweredFactor; + } + } else { + $allPoweredFactors[$myPoweredValue] = $myPoweredFactor; + } + } + } + foreach ($allPoweredFactors as $allPoweredFactor) { + $returnValue *= (integer) $allPoweredFactor; + } + return $returnValue; + } + + + /** + * LOG_BASE + * + * Returns the logarithm of a number to a specified base. The default base is 10. + * + * Excel Function: + * LOG(number[,base]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param float $number The positive real number for which you want the logarithm + * @param float $base The base of the logarithm. If base is omitted, it is assumed to be 10. + * @return float + */ + public static function LOG_BASE($number = null, $base = 10) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $base = (is_null($base)) ? 10 : (float) PHPExcel_Calculation_Functions::flattenSingleValue($base); + + if ((!is_numeric($base)) || (!is_numeric($number))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (($base <= 0) || ($number <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return log($number, $base); + } + + + /** + * MDETERM + * + * Returns the matrix determinant of an array. + * + * Excel Function: + * MDETERM(array) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param array $matrixValues A matrix of values + * @return float + */ + public static function MDETERM($matrixValues) + { + $matrixData = array(); + if (!is_array($matrixValues)) { + $matrixValues = array(array($matrixValues)); + } + + $row = $maxColumn = 0; + foreach ($matrixValues as $matrixRow) { + if (!is_array($matrixRow)) { + $matrixRow = array($matrixRow); + } + $column = 0; + foreach ($matrixRow as $matrixCell) { + if ((is_string($matrixCell)) || ($matrixCell === null)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $matrixData[$column][$row] = $matrixCell; + ++$column; + } + if ($column > $maxColumn) { + $maxColumn = $column; + } + ++$row; + } + if ($row != $maxColumn) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + try { + $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData); + return $matrix->det(); + } catch (PHPExcel_Exception $ex) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + + + /** + * MINVERSE + * + * Returns the inverse matrix for the matrix stored in an array. + * + * Excel Function: + * MINVERSE(array) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param array $matrixValues A matrix of values + * @return array + */ + public static function MINVERSE($matrixValues) + { + $matrixData = array(); + if (!is_array($matrixValues)) { + $matrixValues = array(array($matrixValues)); + } + + $row = $maxColumn = 0; + foreach ($matrixValues as $matrixRow) { + if (!is_array($matrixRow)) { + $matrixRow = array($matrixRow); + } + $column = 0; + foreach ($matrixRow as $matrixCell) { + if ((is_string($matrixCell)) || ($matrixCell === null)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $matrixData[$column][$row] = $matrixCell; + ++$column; + } + if ($column > $maxColumn) { + $maxColumn = $column; + } + ++$row; + } + if ($row != $maxColumn) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + try { + $matrix = new PHPExcel_Shared_JAMA_Matrix($matrixData); + return $matrix->inverse()->getArray(); + } catch (PHPExcel_Exception $ex) { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + + + /** + * MMULT + * + * @param array $matrixData1 A matrix of values + * @param array $matrixData2 A matrix of values + * @return array + */ + public static function MMULT($matrixData1, $matrixData2) + { + $matrixAData = $matrixBData = array(); + if (!is_array($matrixData1)) { + $matrixData1 = array(array($matrixData1)); + } + if (!is_array($matrixData2)) { + $matrixData2 = array(array($matrixData2)); + } + + try { + $rowA = 0; + foreach ($matrixData1 as $matrixRow) { + if (!is_array($matrixRow)) { + $matrixRow = array($matrixRow); + } + $columnA = 0; + foreach ($matrixRow as $matrixCell) { + if ((!is_numeric($matrixCell)) || ($matrixCell === null)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $matrixAData[$rowA][$columnA] = $matrixCell; + ++$columnA; + } + ++$rowA; + } + $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData); + $rowB = 0; + foreach ($matrixData2 as $matrixRow) { + if (!is_array($matrixRow)) { + $matrixRow = array($matrixRow); + } + $columnB = 0; + foreach ($matrixRow as $matrixCell) { + if ((!is_numeric($matrixCell)) || ($matrixCell === null)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $matrixBData[$rowB][$columnB] = $matrixCell; + ++$columnB; + } + ++$rowB; + } + $matrixB = new PHPExcel_Shared_JAMA_Matrix($matrixBData); + + if ($columnA != $rowB) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + return $matrixA->times($matrixB)->getArray(); + } catch (PHPExcel_Exception $ex) { + var_dump($ex->getMessage()); + return PHPExcel_Calculation_Functions::VALUE(); + } + } + + + /** + * MOD + * + * @param int $a Dividend + * @param int $b Divisor + * @return int Remainder + */ + public static function MOD($a = 1, $b = 1) + { + $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); + $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); + + if ($b == 0.0) { + return PHPExcel_Calculation_Functions::DIV0(); + } elseif (($a < 0.0) && ($b > 0.0)) { + return $b - fmod(abs($a), $b); + } elseif (($a > 0.0) && ($b < 0.0)) { + return $b + fmod($a, abs($b)); + } + + return fmod($a, $b); + } + + + /** + * MROUND + * + * Rounds a number to the nearest multiple of a specified value + * + * @param float $number Number to round + * @param int $multiple Multiple to which you want to round $number + * @return float Rounded Number + */ + public static function MROUND($number, $multiple) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $multiple = PHPExcel_Calculation_Functions::flattenSingleValue($multiple); + + if ((is_numeric($number)) && (is_numeric($multiple))) { + if ($multiple == 0) { + return 0; + } + if ((self::SIGN($number)) == (self::SIGN($multiple))) { + $multiplier = 1 / $multiple; + return round($number * $multiplier) / $multiplier; + } + return PHPExcel_Calculation_Functions::NaN(); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * MULTINOMIAL + * + * Returns the ratio of the factorial of a sum of values to the product of factorials. + * + * @param array of mixed Data Series + * @return float + */ + public static function MULTINOMIAL() + { + $summer = 0; + $divisor = 1; + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { + // Is it a numeric value? + if (is_numeric($arg)) { + if ($arg < 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + $summer += floor($arg); + $divisor *= self::FACT($arg); + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + + // Return + if ($summer > 0) { + $summer = self::FACT($summer); + return $summer / $divisor; + } + return 0; + } + + + /** + * ODD + * + * Returns number rounded up to the nearest odd integer. + * + * @param float $number Number to round + * @return int Rounded Number + */ + public static function ODD($number) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + + if (is_null($number)) { + return 1; + } elseif (is_bool($number)) { + return 1; + } elseif (is_numeric($number)) { + $significance = self::SIGN($number); + if ($significance == 0) { + return 1; + } + + $result = self::CEILING($number, $significance); + if ($result == self::EVEN($result)) { + $result += $significance; + } + + return (int) $result; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * POWER + * + * Computes x raised to the power y. + * + * @param float $x + * @param float $y + * @return float + */ + public static function POWER($x = 0, $y = 2) + { + $x = PHPExcel_Calculation_Functions::flattenSingleValue($x); + $y = PHPExcel_Calculation_Functions::flattenSingleValue($y); + + // Validate parameters + if ($x == 0.0 && $y == 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif ($x == 0.0 && $y < 0.0) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + // Return + $result = pow($x, $y); + return (!is_nan($result) && !is_infinite($result)) ? $result : PHPExcel_Calculation_Functions::NaN(); + } + + + /** + * PRODUCT + * + * PRODUCT returns the product of all the values and cells referenced in the argument list. + * + * Excel Function: + * PRODUCT(value1[,value2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function PRODUCT() + { + // Return value + $returnValue = null; + + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = $arg; + } else { + $returnValue *= $arg; + } + } + } + + // Return + if (is_null($returnValue)) { + return 0; + } + return $returnValue; + } + + + /** + * QUOTIENT + * + * QUOTIENT function returns the integer portion of a division. Numerator is the divided number + * and denominator is the divisor. + * + * Excel Function: + * QUOTIENT(value1[,value2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function QUOTIENT() + { + // Return value + $returnValue = null; + + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = ($arg == 0) ? 0 : $arg; + } else { + if (($returnValue == 0) || ($arg == 0)) { + $returnValue = 0; + } else { + $returnValue /= $arg; + } + } + } + } + + // Return + return intval($returnValue); + } + + + /** + * RAND + * + * @param int $min Minimal value + * @param int $max Maximal value + * @return int Random number + */ + public static function RAND($min = 0, $max = 0) + { + $min = PHPExcel_Calculation_Functions::flattenSingleValue($min); + $max = PHPExcel_Calculation_Functions::flattenSingleValue($max); + + if ($min == 0 && $max == 0) { + return (mt_rand(0, 10000000)) / 10000000; + } else { + return mt_rand($min, $max); + } + } + + + public static function ROMAN($aValue, $style = 0) + { + $aValue = PHPExcel_Calculation_Functions::flattenSingleValue($aValue); + $style = (is_null($style)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($style); + if ((!is_numeric($aValue)) || ($aValue < 0) || ($aValue >= 4000)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $aValue = (integer) $aValue; + if ($aValue == 0) { + return ''; + } + + $mill = array('', 'M', 'MM', 'MMM', 'MMMM', 'MMMMM'); + $cent = array('', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'); + $tens = array('', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'); + $ones = array('', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'); + + $roman = ''; + while ($aValue > 5999) { + $roman .= 'M'; + $aValue -= 1000; + } + $m = self::romanCut($aValue, 1000); + $aValue %= 1000; + $c = self::romanCut($aValue, 100); + $aValue %= 100; + $t = self::romanCut($aValue, 10); + $aValue %= 10; + + return $roman.$mill[$m].$cent[$c].$tens[$t].$ones[$aValue]; + } + + + /** + * ROUNDUP + * + * Rounds a number up to a specified number of decimal places + * + * @param float $number Number to round + * @param int $digits Number of digits to which you want to round $number + * @return float Rounded Number + */ + public static function ROUNDUP($number, $digits) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); + + if ((is_numeric($number)) && (is_numeric($digits))) { + $significance = pow(10, (int) $digits); + if ($number < 0.0) { + return floor($number * $significance) / $significance; + } else { + return ceil($number * $significance) / $significance; + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * ROUNDDOWN + * + * Rounds a number down to a specified number of decimal places + * + * @param float $number Number to round + * @param int $digits Number of digits to which you want to round $number + * @return float Rounded Number + */ + public static function ROUNDDOWN($number, $digits) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); + + if ((is_numeric($number)) && (is_numeric($digits))) { + $significance = pow(10, (int) $digits); + if ($number < 0.0) { + return ceil($number * $significance) / $significance; + } else { + return floor($number * $significance) / $significance; + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SERIESSUM + * + * Returns the sum of a power series + * + * @param float $x Input value to the power series + * @param float $n Initial power to which you want to raise $x + * @param float $m Step by which to increase $n for each term in the series + * @param array of mixed Data Series + * @return float + */ + public static function SERIESSUM() + { + $returnValue = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + $x = array_shift($aArgs); + $n = array_shift($aArgs); + $m = array_shift($aArgs); + + if ((is_numeric($x)) && (is_numeric($n)) && (is_numeric($m))) { + // Calculate + $i = 0; + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $returnValue += $arg * pow($x, $n + ($m * $i++)); + } else { + return PHPExcel_Calculation_Functions::VALUE(); + } + } + return $returnValue; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SIGN + * + * Determines the sign of a number. Returns 1 if the number is positive, zero (0) + * if the number is 0, and -1 if the number is negative. + * + * @param float $number Number to round + * @return int sign value + */ + public static function SIGN($number) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + + if (is_bool($number)) { + return (int) $number; + } + if (is_numeric($number)) { + if ($number == 0.0) { + return 0; + } + return $number / abs($number); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SQRTPI + * + * Returns the square root of (number * pi). + * + * @param float $number Number + * @return float Square Root of Number * Pi + */ + public static function SQRTPI($number) + { + $number = PHPExcel_Calculation_Functions::flattenSingleValue($number); + + if (is_numeric($number)) { + if ($number < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return sqrt($number * M_PI) ; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SUBTOTAL + * + * Returns a subtotal in a list or database. + * + * @param int the number 1 to 11 that specifies which function to + * use in calculating subtotals within a list. + * @param array of mixed Data Series + * @return float + */ + public static function SUBTOTAL() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $subtotal = array_shift($aArgs); + + if ((is_numeric($subtotal)) && (!is_string($subtotal))) { + switch ($subtotal) { + case 1: + return PHPExcel_Calculation_Statistical::AVERAGE($aArgs); + case 2: + return PHPExcel_Calculation_Statistical::COUNT($aArgs); + case 3: + return PHPExcel_Calculation_Statistical::COUNTA($aArgs); + case 4: + return PHPExcel_Calculation_Statistical::MAX($aArgs); + case 5: + return PHPExcel_Calculation_Statistical::MIN($aArgs); + case 6: + return self::PRODUCT($aArgs); + case 7: + return PHPExcel_Calculation_Statistical::STDEV($aArgs); + case 8: + return PHPExcel_Calculation_Statistical::STDEVP($aArgs); + case 9: + return self::SUM($aArgs); + case 10: + return PHPExcel_Calculation_Statistical::VARFunc($aArgs); + case 11: + return PHPExcel_Calculation_Statistical::VARP($aArgs); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SUM + * + * SUM computes the sum of all the values and cells referenced in the argument list. + * + * Excel Function: + * SUM(value1[,value2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function SUM() + { + $returnValue = 0; + + // Loop through the arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $returnValue += $arg; + } + } + + return $returnValue; + } + + + /** + * SUMIF + * + * Counts the number of cells that contain numbers within the list of arguments + * + * Excel Function: + * SUMIF(value1[,value2[, ...]],condition) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be summed. + * @return float + */ + public static function SUMIF($aArgs, $condition, $sumArgs = array()) + { + $returnValue = 0; + + $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); + $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); + if (empty($sumArgs)) { + $sumArgs = $aArgs; + } + $condition = PHPExcel_Calculation_Functions::ifCondition($condition); + // Loop through arguments + foreach ($aArgs as $key => $arg) { + if (!is_numeric($arg)) { + $arg = str_replace('"', '""', $arg); + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + + $testCondition = '='.$arg.$condition; + if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + // Is it a value within our criteria + $returnValue += $sumArgs[$key]; + } + } + + return $returnValue; + } + + + /** + * SUMIFS + * + * Counts the number of cells that contain numbers within the list of arguments + * + * Excel Function: + * SUMIFS(value1[,value2[, ...]],condition) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be summed. + * @return float + */ + public static function SUMIFS() { + $arrayList = func_get_args(); + + $sumArgs = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); + + while (count($arrayList) > 0) { + $aArgsArray[] = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); + $conditions[] = PHPExcel_Calculation_Functions::ifCondition(array_shift($arrayList)); + } + + // Loop through each set of arguments and conditions + foreach ($conditions as $index => $condition) { + $aArgs = $aArgsArray[$index]; + $wildcard = false; + if ((strpos($condition, '*') !== false) || (strpos($condition, '?') !== false)) { + // * and ? are wildcard characters. + // Use ~* and ~? for literal star and question mark + // Code logic doesn't yet handle escaping + $condition = trim(ltrim($condition, '=<>'), '"'); + $wildcard = true; + } + // Loop through arguments + foreach ($aArgs as $key => $arg) { + if ($wildcard) { + if (!fnmatch($condition, $arg, FNM_CASEFOLD)) { + // Is it a value within our criteria + $sumArgs[$key] = 0.0; + } + } else { + if (!is_numeric($arg)) { + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + $testCondition = '='.$arg.$condition; + if (!PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + // Is it a value within our criteria + $sumArgs[$key] = 0.0; + } + } + } + } + + // Return + return array_sum($sumArgs); + } + + + /** + * SUMPRODUCT + * + * Excel Function: + * SUMPRODUCT(value1[,value2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function SUMPRODUCT() + { + $arrayList = func_get_args(); + + $wrkArray = PHPExcel_Calculation_Functions::flattenArray(array_shift($arrayList)); + $wrkCellCount = count($wrkArray); + + for ($i=0; $i< $wrkCellCount; ++$i) { + if ((!is_numeric($wrkArray[$i])) || (is_string($wrkArray[$i]))) { + $wrkArray[$i] = 0; + } + } + + foreach ($arrayList as $matrixData) { + $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData); + $count = count($array2); + if ($wrkCellCount != $count) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + foreach ($array2 as $i => $val) { + if ((!is_numeric($val)) || (is_string($val))) { + $val = 0; + } + $wrkArray[$i] *= $val; + } + } + + return array_sum($wrkArray); + } + + + /** + * SUMSQ + * + * SUMSQ returns the sum of the squares of the arguments + * + * Excel Function: + * SUMSQ(value1[,value2[, ...]]) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function SUMSQ() + { + $returnValue = 0; + + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArray(func_get_args()) as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $returnValue += ($arg * $arg); + } + } + + return $returnValue; + } + + + /** + * SUMX2MY2 + * + * @param mixed[] $matrixData1 Matrix #1 + * @param mixed[] $matrixData2 Matrix #2 + * @return float + */ + public static function SUMX2MY2($matrixData1, $matrixData2) + { + $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); + $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); + $count = min(count($array1), count($array2)); + + $result = 0; + for ($i = 0; $i < $count; ++$i) { + if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && + ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { + $result += ($array1[$i] * $array1[$i]) - ($array2[$i] * $array2[$i]); + } + } + + return $result; + } + + + /** + * SUMX2PY2 + * + * @param mixed[] $matrixData1 Matrix #1 + * @param mixed[] $matrixData2 Matrix #2 + * @return float + */ + public static function SUMX2PY2($matrixData1, $matrixData2) + { + $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); + $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); + $count = min(count($array1), count($array2)); + + $result = 0; + for ($i = 0; $i < $count; ++$i) { + if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && + ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { + $result += ($array1[$i] * $array1[$i]) + ($array2[$i] * $array2[$i]); + } + } + + return $result; + } + + + /** + * SUMXMY2 + * + * @param mixed[] $matrixData1 Matrix #1 + * @param mixed[] $matrixData2 Matrix #2 + * @return float + */ + public static function SUMXMY2($matrixData1, $matrixData2) + { + $array1 = PHPExcel_Calculation_Functions::flattenArray($matrixData1); + $array2 = PHPExcel_Calculation_Functions::flattenArray($matrixData2); + $count = min(count($array1), count($array2)); + + $result = 0; + for ($i = 0; $i < $count; ++$i) { + if (((is_numeric($array1[$i])) && (!is_string($array1[$i]))) && + ((is_numeric($array2[$i])) && (!is_string($array2[$i])))) { + $result += ($array1[$i] - $array2[$i]) * ($array1[$i] - $array2[$i]); + } + } + + return $result; + } + + + /** + * TRUNC + * + * Truncates value to the number of fractional digits by number_digits. + * + * @param float $value + * @param int $digits + * @return float Truncated value + */ + public static function TRUNC($value = 0, $digits = 0) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $digits = PHPExcel_Calculation_Functions::flattenSingleValue($digits); + + // Validate parameters + if ((!is_numeric($value)) || (!is_numeric($digits))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $digits = floor($digits); + + // Truncate + $adjust = pow(10, $digits); + + if (($digits > 0) && (rtrim(intval((abs($value) - abs(intval($value))) * $adjust), '0') < $adjust/10)) { + return $value; + } + + return (intval($value * $adjust)) / $adjust; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Statistical.php b/assets/excel/PHPExcel/Calculation/Statistical.php new file mode 100644 index 0000000..1a33610 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Statistical.php @@ -0,0 +1,3745 @@ + $value) { + if ((is_bool($value)) || (is_string($value)) || (is_null($value))) { + unset($array1[$key]); + unset($array2[$key]); + } + } + foreach ($array2 as $key => $value) { + if ((is_bool($value)) || (is_string($value)) || (is_null($value))) { + unset($array1[$key]); + unset($array2[$key]); + } + } + $array1 = array_merge($array1); + $array2 = array_merge($array2); + + return true; + } + + + /** + * Beta function. + * + * @author Jaco van Kooten + * + * @param p require p>0 + * @param q require q>0 + * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow + */ + private static function beta($p, $q) + { + if ($p <= 0.0 || $q <= 0.0 || ($p + $q) > LOG_GAMMA_X_MAX_VALUE) { + return 0.0; + } else { + return exp(self::logBeta($p, $q)); + } + } + + + /** + * Incomplete beta function + * + * @author Jaco van Kooten + * @author Paul Meagher + * + * The computation is based on formulas from Numerical Recipes, Chapter 6.4 (W.H. Press et al, 1992). + * @param x require 0<=x<=1 + * @param p require p>0 + * @param q require q>0 + * @return 0 if x<0, p<=0, q<=0 or p+q>2.55E305 and 1 if x>1 to avoid errors and over/underflow + */ + private static function incompleteBeta($x, $p, $q) + { + if ($x <= 0.0) { + return 0.0; + } elseif ($x >= 1.0) { + return 1.0; + } elseif (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) { + return 0.0; + } + $beta_gam = exp((0 - self::logBeta($p, $q)) + $p * log($x) + $q * log(1.0 - $x)); + if ($x < ($p + 1.0) / ($p + $q + 2.0)) { + return $beta_gam * self::betaFraction($x, $p, $q) / $p; + } else { + return 1.0 - ($beta_gam * self::betaFraction(1 - $x, $q, $p) / $q); + } + } + + + // Function cache for logBeta function + private static $logBetaCacheP = 0.0; + private static $logBetaCacheQ = 0.0; + private static $logBetaCacheResult = 0.0; + + /** + * The natural logarithm of the beta function. + * + * @param p require p>0 + * @param q require q>0 + * @return 0 if p<=0, q<=0 or p+q>2.55E305 to avoid errors and over/underflow + * @author Jaco van Kooten + */ + private static function logBeta($p, $q) + { + if ($p != self::$logBetaCacheP || $q != self::$logBetaCacheQ) { + self::$logBetaCacheP = $p; + self::$logBetaCacheQ = $q; + if (($p <= 0.0) || ($q <= 0.0) || (($p + $q) > LOG_GAMMA_X_MAX_VALUE)) { + self::$logBetaCacheResult = 0.0; + } else { + self::$logBetaCacheResult = self::logGamma($p) + self::logGamma($q) - self::logGamma($p + $q); + } + } + return self::$logBetaCacheResult; + } + + + /** + * Evaluates of continued fraction part of incomplete beta function. + * Based on an idea from Numerical Recipes (W.H. Press et al, 1992). + * @author Jaco van Kooten + */ + private static function betaFraction($x, $p, $q) + { + $c = 1.0; + $sum_pq = $p + $q; + $p_plus = $p + 1.0; + $p_minus = $p - 1.0; + $h = 1.0 - $sum_pq * $x / $p_plus; + if (abs($h) < XMININ) { + $h = XMININ; + } + $h = 1.0 / $h; + $frac = $h; + $m = 1; + $delta = 0.0; + while ($m <= MAX_ITERATIONS && abs($delta-1.0) > PRECISION) { + $m2 = 2 * $m; + // even index for d + $d = $m * ($q - $m) * $x / ( ($p_minus + $m2) * ($p + $m2)); + $h = 1.0 + $d * $h; + if (abs($h) < XMININ) { + $h = XMININ; + } + $h = 1.0 / $h; + $c = 1.0 + $d / $c; + if (abs($c) < XMININ) { + $c = XMININ; + } + $frac *= $h * $c; + // odd index for d + $d = -($p + $m) * ($sum_pq + $m) * $x / (($p + $m2) * ($p_plus + $m2)); + $h = 1.0 + $d * $h; + if (abs($h) < XMININ) { + $h = XMININ; + } + $h = 1.0 / $h; + $c = 1.0 + $d / $c; + if (abs($c) < XMININ) { + $c = XMININ; + } + $delta = $h * $c; + $frac *= $delta; + ++$m; + } + return $frac; + } + + + /** + * logGamma function + * + * @version 1.1 + * @author Jaco van Kooten + * + * Original author was Jaco van Kooten. Ported to PHP by Paul Meagher. + * + * The natural logarithm of the gamma function.
      + * Based on public domain NETLIB (Fortran) code by W. J. Cody and L. Stoltz
      + * Applied Mathematics Division
      + * Argonne National Laboratory
      + * Argonne, IL 60439
      + *

      + * References: + *

        + *
      1. W. J. Cody and K. E. Hillstrom, 'Chebyshev Approximations for the Natural + * Logarithm of the Gamma Function,' Math. Comp. 21, 1967, pp. 198-203.
      2. + *
      3. K. E. Hillstrom, ANL/AMD Program ANLC366S, DGAMMA/DLGAMA, May, 1969.
      4. + *
      5. Hart, Et. Al., Computer Approximations, Wiley and sons, New York, 1968.
      6. + *
      + *

      + *

      + * From the original documentation: + *

      + *

      + * This routine calculates the LOG(GAMMA) function for a positive real argument X. + * Computation is based on an algorithm outlined in references 1 and 2. + * The program uses rational functions that theoretically approximate LOG(GAMMA) + * to at least 18 significant decimal digits. The approximation for X > 12 is from + * reference 3, while approximations for X < 12.0 are similar to those in reference + * 1, but are unpublished. The accuracy achieved depends on the arithmetic system, + * the compiler, the intrinsic functions, and proper selection of the + * machine-dependent constants. + *

      + *

      + * Error returns:
      + * The program returns the value XINF for X .LE. 0.0 or when overflow would occur. + * The computation is believed to be free of underflow and overflow. + *

      + * @return MAX_VALUE for x < 0.0 or when overflow would occur, i.e. x > 2.55E305 + */ + + // Function cache for logGamma + private static $logGammaCacheResult = 0.0; + private static $logGammaCacheX = 0.0; + + private static function logGamma($x) + { + // Log Gamma related constants + static $lg_d1 = -0.5772156649015328605195174; + static $lg_d2 = 0.4227843350984671393993777; + static $lg_d4 = 1.791759469228055000094023; + + static $lg_p1 = array( + 4.945235359296727046734888, + 201.8112620856775083915565, + 2290.838373831346393026739, + 11319.67205903380828685045, + 28557.24635671635335736389, + 38484.96228443793359990269, + 26377.48787624195437963534, + 7225.813979700288197698961 + ); + static $lg_p2 = array( + 4.974607845568932035012064, + 542.4138599891070494101986, + 15506.93864978364947665077, + 184793.2904445632425417223, + 1088204.76946882876749847, + 3338152.967987029735917223, + 5106661.678927352456275255, + 3074109.054850539556250927 + ); + static $lg_p4 = array( + 14745.02166059939948905062, + 2426813.369486704502836312, + 121475557.4045093227939592, + 2663432449.630976949898078, + 29403789566.34553899906876, + 170266573776.5398868392998, + 492612579337.743088758812, + 560625185622.3951465078242 + ); + static $lg_q1 = array( + 67.48212550303777196073036, + 1113.332393857199323513008, + 7738.757056935398733233834, + 27639.87074403340708898585, + 54993.10206226157329794414, + 61611.22180066002127833352, + 36351.27591501940507276287, + 8785.536302431013170870835 + ); + static $lg_q2 = array( + 183.0328399370592604055942, + 7765.049321445005871323047, + 133190.3827966074194402448, + 1136705.821321969608938755, + 5267964.117437946917577538, + 13467014.54311101692290052, + 17827365.30353274213975932, + 9533095.591844353613395747 + ); + static $lg_q4 = array( + 2690.530175870899333379843, + 639388.5654300092398984238, + 41355999.30241388052042842, + 1120872109.61614794137657, + 14886137286.78813811542398, + 101680358627.2438228077304, + 341747634550.7377132798597, + 446315818741.9713286462081 + ); + static $lg_c = array( + -0.001910444077728, + 8.4171387781295e-4, + -5.952379913043012e-4, + 7.93650793500350248e-4, + -0.002777777777777681622553, + 0.08333333333333333331554247, + 0.0057083835261 + ); + + // Rough estimate of the fourth root of logGamma_xBig + static $lg_frtbig = 2.25e76; + static $pnt68 = 0.6796875; + + + if ($x == self::$logGammaCacheX) { + return self::$logGammaCacheResult; + } + $y = $x; + if ($y > 0.0 && $y <= LOG_GAMMA_X_MAX_VALUE) { + if ($y <= EPS) { + $res = -log(y); + } elseif ($y <= 1.5) { + // --------------------- + // EPS .LT. X .LE. 1.5 + // --------------------- + if ($y < $pnt68) { + $corr = -log($y); + $xm1 = $y; + } else { + $corr = 0.0; + $xm1 = $y - 1.0; + } + if ($y <= 0.5 || $y >= $pnt68) { + $xden = 1.0; + $xnum = 0.0; + for ($i = 0; $i < 8; ++$i) { + $xnum = $xnum * $xm1 + $lg_p1[$i]; + $xden = $xden * $xm1 + $lg_q1[$i]; + } + $res = $corr + $xm1 * ($lg_d1 + $xm1 * ($xnum / $xden)); + } else { + $xm2 = $y - 1.0; + $xden = 1.0; + $xnum = 0.0; + for ($i = 0; $i < 8; ++$i) { + $xnum = $xnum * $xm2 + $lg_p2[$i]; + $xden = $xden * $xm2 + $lg_q2[$i]; + } + $res = $corr + $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden)); + } + } elseif ($y <= 4.0) { + // --------------------- + // 1.5 .LT. X .LE. 4.0 + // --------------------- + $xm2 = $y - 2.0; + $xden = 1.0; + $xnum = 0.0; + for ($i = 0; $i < 8; ++$i) { + $xnum = $xnum * $xm2 + $lg_p2[$i]; + $xden = $xden * $xm2 + $lg_q2[$i]; + } + $res = $xm2 * ($lg_d2 + $xm2 * ($xnum / $xden)); + } elseif ($y <= 12.0) { + // ---------------------- + // 4.0 .LT. X .LE. 12.0 + // ---------------------- + $xm4 = $y - 4.0; + $xden = -1.0; + $xnum = 0.0; + for ($i = 0; $i < 8; ++$i) { + $xnum = $xnum * $xm4 + $lg_p4[$i]; + $xden = $xden * $xm4 + $lg_q4[$i]; + } + $res = $lg_d4 + $xm4 * ($xnum / $xden); + } else { + // --------------------------------- + // Evaluate for argument .GE. 12.0 + // --------------------------------- + $res = 0.0; + if ($y <= $lg_frtbig) { + $res = $lg_c[6]; + $ysq = $y * $y; + for ($i = 0; $i < 6; ++$i) { + $res = $res / $ysq + $lg_c[$i]; + } + $res /= $y; + $corr = log($y); + $res = $res + log(SQRT2PI) - 0.5 * $corr; + $res += $y * ($corr - 1.0); + } + } + } else { + // -------------------------- + // Return for bad arguments + // -------------------------- + $res = MAX_VALUE; + } + // ------------------------------ + // Final adjustments and return + // ------------------------------ + self::$logGammaCacheX = $x; + self::$logGammaCacheResult = $res; + return $res; + } + + + // + // Private implementation of the incomplete Gamma function + // + private static function incompleteGamma($a, $x) + { + static $max = 32; + $summer = 0; + for ($n=0; $n<=$max; ++$n) { + $divisor = $a; + for ($i=1; $i<=$n; ++$i) { + $divisor *= ($a + $i); + } + $summer += (pow($x, $n) / $divisor); + } + return pow($x, $a) * exp(0-$x) * $summer; + } + + + // + // Private implementation of the Gamma function + // + private static function gamma($data) + { + if ($data == 0.0) { + return 0; + } + + static $p0 = 1.000000000190015; + static $p = array( + 1 => 76.18009172947146, + 2 => -86.50532032941677, + 3 => 24.01409824083091, + 4 => -1.231739572450155, + 5 => 1.208650973866179e-3, + 6 => -5.395239384953e-6 + ); + + $y = $x = $data; + $tmp = $x + 5.5; + $tmp -= ($x + 0.5) * log($tmp); + + $summer = $p0; + for ($j=1; $j<=6; ++$j) { + $summer += ($p[$j] / ++$y); + } + return exp(0 - $tmp + log(SQRT2PI * $summer / $x)); + } + + + /*************************************************************************** + * inverse_ncdf.php + * ------------------- + * begin : Friday, January 16, 2004 + * copyright : (C) 2004 Michael Nickerson + * email : nickersonm@yahoo.com + * + ***************************************************************************/ + private static function inverseNcdf($p) + { + // Inverse ncdf approximation by Peter J. Acklam, implementation adapted to + // PHP by Michael Nickerson, using Dr. Thomas Ziegler's C implementation as + // a guide. http://home.online.no/~pjacklam/notes/invnorm/index.html + // I have not checked the accuracy of this implementation. Be aware that PHP + // will truncate the coeficcients to 14 digits. + + // You have permission to use and distribute this function freely for + // whatever purpose you want, but please show common courtesy and give credit + // where credit is due. + + // Input paramater is $p - probability - where 0 < p < 1. + + // Coefficients in rational approximations + static $a = array( + 1 => -3.969683028665376e+01, + 2 => 2.209460984245205e+02, + 3 => -2.759285104469687e+02, + 4 => 1.383577518672690e+02, + 5 => -3.066479806614716e+01, + 6 => 2.506628277459239e+00 + ); + + static $b = array( + 1 => -5.447609879822406e+01, + 2 => 1.615858368580409e+02, + 3 => -1.556989798598866e+02, + 4 => 6.680131188771972e+01, + 5 => -1.328068155288572e+01 + ); + + static $c = array( + 1 => -7.784894002430293e-03, + 2 => -3.223964580411365e-01, + 3 => -2.400758277161838e+00, + 4 => -2.549732539343734e+00, + 5 => 4.374664141464968e+00, + 6 => 2.938163982698783e+00 + ); + + static $d = array( + 1 => 7.784695709041462e-03, + 2 => 3.224671290700398e-01, + 3 => 2.445134137142996e+00, + 4 => 3.754408661907416e+00 + ); + + // Define lower and upper region break-points. + $p_low = 0.02425; //Use lower region approx. below this + $p_high = 1 - $p_low; //Use upper region approx. above this + + if (0 < $p && $p < $p_low) { + // Rational approximation for lower region. + $q = sqrt(-2 * log($p)); + return ((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / + (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); + } elseif ($p_low <= $p && $p <= $p_high) { + // Rational approximation for central region. + $q = $p - 0.5; + $r = $q * $q; + return ((((($a[1] * $r + $a[2]) * $r + $a[3]) * $r + $a[4]) * $r + $a[5]) * $r + $a[6]) * $q / + ((((($b[1] * $r + $b[2]) * $r + $b[3]) * $r + $b[4]) * $r + $b[5]) * $r + 1); + } elseif ($p_high < $p && $p < 1) { + // Rational approximation for upper region. + $q = sqrt(-2 * log(1 - $p)); + return -((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / + (((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); + } + // If 0 < p < 1, return a null value + return PHPExcel_Calculation_Functions::NULL(); + } + + + private static function inverseNcdf2($prob) + { + // Approximation of inverse standard normal CDF developed by + // B. Moro, "The Full Monte," Risk 8(2), Feb 1995, 57-58. + + $a1 = 2.50662823884; + $a2 = -18.61500062529; + $a3 = 41.39119773534; + $a4 = -25.44106049637; + + $b1 = -8.4735109309; + $b2 = 23.08336743743; + $b3 = -21.06224101826; + $b4 = 3.13082909833; + + $c1 = 0.337475482272615; + $c2 = 0.976169019091719; + $c3 = 0.160797971491821; + $c4 = 2.76438810333863E-02; + $c5 = 3.8405729373609E-03; + $c6 = 3.951896511919E-04; + $c7 = 3.21767881768E-05; + $c8 = 2.888167364E-07; + $c9 = 3.960315187E-07; + + $y = $prob - 0.5; + if (abs($y) < 0.42) { + $z = ($y * $y); + $z = $y * ((($a4 * $z + $a3) * $z + $a2) * $z + $a1) / (((($b4 * $z + $b3) * $z + $b2) * $z + $b1) * $z + 1); + } else { + if ($y > 0) { + $z = log(-log(1 - $prob)); + } else { + $z = log(-log($prob)); + } + $z = $c1 + $z * ($c2 + $z * ($c3 + $z * ($c4 + $z * ($c5 + $z * ($c6 + $z * ($c7 + $z * ($c8 + $z * $c9))))))); + if ($y < 0) { + $z = -$z; + } + } + return $z; + } // function inverseNcdf2() + + + private static function inverseNcdf3($p) + { + // ALGORITHM AS241 APPL. STATIST. (1988) VOL. 37, NO. 3. + // Produces the normal deviate Z corresponding to a given lower + // tail area of P; Z is accurate to about 1 part in 10**16. + // + // This is a PHP version of the original FORTRAN code that can + // be found at http://lib.stat.cmu.edu/apstat/ + $split1 = 0.425; + $split2 = 5; + $const1 = 0.180625; + $const2 = 1.6; + + // coefficients for p close to 0.5 + $a0 = 3.3871328727963666080; + $a1 = 1.3314166789178437745E+2; + $a2 = 1.9715909503065514427E+3; + $a3 = 1.3731693765509461125E+4; + $a4 = 4.5921953931549871457E+4; + $a5 = 6.7265770927008700853E+4; + $a6 = 3.3430575583588128105E+4; + $a7 = 2.5090809287301226727E+3; + + $b1 = 4.2313330701600911252E+1; + $b2 = 6.8718700749205790830E+2; + $b3 = 5.3941960214247511077E+3; + $b4 = 2.1213794301586595867E+4; + $b5 = 3.9307895800092710610E+4; + $b6 = 2.8729085735721942674E+4; + $b7 = 5.2264952788528545610E+3; + + // coefficients for p not close to 0, 0.5 or 1. + $c0 = 1.42343711074968357734; + $c1 = 4.63033784615654529590; + $c2 = 5.76949722146069140550; + $c3 = 3.64784832476320460504; + $c4 = 1.27045825245236838258; + $c5 = 2.41780725177450611770E-1; + $c6 = 2.27238449892691845833E-2; + $c7 = 7.74545014278341407640E-4; + + $d1 = 2.05319162663775882187; + $d2 = 1.67638483018380384940; + $d3 = 6.89767334985100004550E-1; + $d4 = 1.48103976427480074590E-1; + $d5 = 1.51986665636164571966E-2; + $d6 = 5.47593808499534494600E-4; + $d7 = 1.05075007164441684324E-9; + + // coefficients for p near 0 or 1. + $e0 = 6.65790464350110377720; + $e1 = 5.46378491116411436990; + $e2 = 1.78482653991729133580; + $e3 = 2.96560571828504891230E-1; + $e4 = 2.65321895265761230930E-2; + $e5 = 1.24266094738807843860E-3; + $e6 = 2.71155556874348757815E-5; + $e7 = 2.01033439929228813265E-7; + + $f1 = 5.99832206555887937690E-1; + $f2 = 1.36929880922735805310E-1; + $f3 = 1.48753612908506148525E-2; + $f4 = 7.86869131145613259100E-4; + $f5 = 1.84631831751005468180E-5; + $f6 = 1.42151175831644588870E-7; + $f7 = 2.04426310338993978564E-15; + + $q = $p - 0.5; + + // computation for p close to 0.5 + if (abs($q) <= split1) { + $R = $const1 - $q * $q; + $z = $q * ((((((($a7 * $R + $a6) * $R + $a5) * $R + $a4) * $R + $a3) * $R + $a2) * $R + $a1) * $R + $a0) / + ((((((($b7 * $R + $b6) * $R + $b5) * $R + $b4) * $R + $b3) * $R + $b2) * $R + $b1) * $R + 1); + } else { + if ($q < 0) { + $R = $p; + } else { + $R = 1 - $p; + } + $R = pow(-log($R), 2); + + // computation for p not close to 0, 0.5 or 1. + if ($R <= $split2) { + $R = $R - $const2; + $z = ((((((($c7 * $R + $c6) * $R + $c5) * $R + $c4) * $R + $c3) * $R + $c2) * $R + $c1) * $R + $c0) / + ((((((($d7 * $R + $d6) * $R + $d5) * $R + $d4) * $R + $d3) * $R + $d2) * $R + $d1) * $R + 1); + } else { + // computation for p near 0 or 1. + $R = $R - $split2; + $z = ((((((($e7 * $R + $e6) * $R + $e5) * $R + $e4) * $R + $e3) * $R + $e2) * $R + $e1) * $R + $e0) / + ((((((($f7 * $R + $f6) * $R + $f5) * $R + $f4) * $R + $f3) * $R + $f2) * $R + $f1) * $R + 1); + } + if ($q < 0) { + $z = -$z; + } + } + return $z; + } + + + /** + * AVEDEV + * + * Returns the average of the absolute deviations of data points from their mean. + * AVEDEV is a measure of the variability in a data set. + * + * Excel Function: + * AVEDEV(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function AVEDEV() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + // Return value + $returnValue = null; + + $aMean = self::AVERAGE($aArgs); + if ($aMean != PHPExcel_Calculation_Functions::DIV0()) { + $aCount = 0; + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = abs($arg - $aMean); + } else { + $returnValue += abs($arg - $aMean); + } + ++$aCount; + } + } + + // Return + if ($aCount == 0) { + return PHPExcel_Calculation_Functions::DIV0(); + } + return $returnValue / $aCount; + } + return PHPExcel_Calculation_Functions::NaN(); + } + + + /** + * AVERAGE + * + * Returns the average (arithmetic mean) of the arguments + * + * Excel Function: + * AVERAGE(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function AVERAGE() + { + $returnValue = $aCount = 0; + + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) { + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = $arg; + } else { + $returnValue += $arg; + } + ++$aCount; + } + } + + // Return + if ($aCount > 0) { + return $returnValue / $aCount; + } else { + return PHPExcel_Calculation_Functions::DIV0(); + } + } + + + /** + * AVERAGEA + * + * Returns the average of its arguments, including numbers, text, and logical values + * + * Excel Function: + * AVERAGEA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function AVERAGEA() + { + $returnValue = null; + + $aCount = 0; + // Loop through arguments + foreach (PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()) as $k => $arg) { + if ((is_bool($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + if (is_null($returnValue)) { + $returnValue = $arg; + } else { + $returnValue += $arg; + } + ++$aCount; + } + } + } + + if ($aCount > 0) { + return $returnValue / $aCount; + } else { + return PHPExcel_Calculation_Functions::DIV0(); + } + } + + + /** + * AVERAGEIF + * + * Returns the average value from a range of cells that contain numbers within the list of arguments + * + * Excel Function: + * AVERAGEIF(value1[,value2[, ...]],condition) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be checked. + * @param mixed[] $averageArgs Data values + * @return float + */ + public static function AVERAGEIF($aArgs, $condition, $averageArgs = array()) + { + $returnValue = 0; + + $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); + $averageArgs = PHPExcel_Calculation_Functions::flattenArray($averageArgs); + if (empty($averageArgs)) { + $averageArgs = $aArgs; + } + $condition = PHPExcel_Calculation_Functions::ifCondition($condition); + // Loop through arguments + $aCount = 0; + foreach ($aArgs as $key => $arg) { + if (!is_numeric($arg)) { + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + $testCondition = '='.$arg.$condition; + if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + if ((is_null($returnValue)) || ($arg > $returnValue)) { + $returnValue += $arg; + ++$aCount; + } + } + } + + if ($aCount > 0) { + return $returnValue / $aCount; + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * BETADIST + * + * Returns the beta distribution. + * + * @param float $value Value at which you want to evaluate the distribution + * @param float $alpha Parameter to the distribution + * @param float $beta Parameter to the distribution + * @param boolean $cumulative + * @return float + * + */ + public static function BETADIST($value, $alpha, $beta, $rMin = 0, $rMax = 1) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); + $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin); + $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax); + + if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) { + if (($value < $rMin) || ($value > $rMax) || ($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($rMin > $rMax) { + $tmp = $rMin; + $rMin = $rMax; + $rMax = $tmp; + } + $value -= $rMin; + $value /= ($rMax - $rMin); + return self::incompleteBeta($value, $alpha, $beta); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * BETAINV + * + * Returns the inverse of the beta distribution. + * + * @param float $probability Probability at which you want to evaluate the distribution + * @param float $alpha Parameter to the distribution + * @param float $beta Parameter to the distribution + * @param float $rMin Minimum value + * @param float $rMax Maximum value + * @param boolean $cumulative + * @return float + * + */ + public static function BETAINV($probability, $alpha, $beta, $rMin = 0, $rMax = 1) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); + $rMin = PHPExcel_Calculation_Functions::flattenSingleValue($rMin); + $rMax = PHPExcel_Calculation_Functions::flattenSingleValue($rMax); + + if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta)) && (is_numeric($rMin)) && (is_numeric($rMax))) { + if (($alpha <= 0) || ($beta <= 0) || ($rMin == $rMax) || ($probability <= 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($rMin > $rMax) { + $tmp = $rMin; + $rMin = $rMax; + $rMax = $tmp; + } + $a = 0; + $b = 2; + + $i = 0; + while ((($b - $a) > PRECISION) && ($i++ < MAX_ITERATIONS)) { + $guess = ($a + $b) / 2; + $result = self::BETADIST($guess, $alpha, $beta); + if (($result == $probability) || ($result == 0)) { + $b = $a; + } elseif ($result > $probability) { + $b = $guess; + } else { + $a = $guess; + } + } + if ($i == MAX_ITERATIONS) { + return PHPExcel_Calculation_Functions::NA(); + } + return round($rMin + $guess * ($rMax - $rMin), 12); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * BINOMDIST + * + * Returns the individual term binomial distribution probability. Use BINOMDIST in problems with + * a fixed number of tests or trials, when the outcomes of any trial are only success or failure, + * when trials are independent, and when the probability of success is constant throughout the + * experiment. For example, BINOMDIST can calculate the probability that two of the next three + * babies born are male. + * + * @param float $value Number of successes in trials + * @param float $trials Number of trials + * @param float $probability Probability of success on each trial + * @param boolean $cumulative + * @return float + * + * @todo Cumulative distribution function + * + */ + public static function BINOMDIST($value, $trials, $probability, $cumulative) + { + $value = floor(PHPExcel_Calculation_Functions::flattenSingleValue($value)); + $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials)); + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + + if ((is_numeric($value)) && (is_numeric($trials)) && (is_numeric($probability))) { + if (($value < 0) || ($value > $trials)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (($probability < 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + $summer = 0; + for ($i = 0; $i <= $value; ++$i) { + $summer += PHPExcel_Calculation_MathTrig::COMBIN($trials, $i) * pow($probability, $i) * pow(1 - $probability, $trials - $i); + } + return $summer; + } else { + return PHPExcel_Calculation_MathTrig::COMBIN($trials, $value) * pow($probability, $value) * pow(1 - $probability, $trials - $value) ; + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * CHIDIST + * + * Returns the one-tailed probability of the chi-squared distribution. + * + * @param float $value Value for the function + * @param float $degrees degrees of freedom + * @return float + */ + public static function CHIDIST($value, $degrees) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); + + if ((is_numeric($value)) && (is_numeric($degrees))) { + if ($degrees < 1) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($value < 0) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + return 1; + } + return PHPExcel_Calculation_Functions::NaN(); + } + return 1 - (self::incompleteGamma($degrees/2, $value/2) / self::gamma($degrees/2)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * CHIINV + * + * Returns the one-tailed probability of the chi-squared distribution. + * + * @param float $probability Probability for the function + * @param float $degrees degrees of freedom + * @return float + */ + public static function CHIINV($probability, $degrees) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); + + if ((is_numeric($probability)) && (is_numeric($degrees))) { + $xLo = 100; + $xHi = 0; + + $x = $xNew = 1; + $dx = 1; + $i = 0; + + while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { + // Apply Newton-Raphson step + $result = self::CHIDIST($x, $degrees); + $error = $result - $probability; + if ($error == 0.0) { + $dx = 0; + } elseif ($error < 0.0) { + $xLo = $x; + } else { + $xHi = $x; + } + // Avoid division by zero + if ($result != 0.0) { + $dx = $error / $result; + $xNew = $x - $dx; + } + // If the NR fails to converge (which for example may be the + // case if the initial guess is too rough) we apply a bisection + // step to determine a more narrow interval around the root. + if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) { + $xNew = ($xLo + $xHi) / 2; + $dx = $xNew - $x; + } + $x = $xNew; + } + if ($i == MAX_ITERATIONS) { + return PHPExcel_Calculation_Functions::NA(); + } + return round($x, 12); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * CONFIDENCE + * + * Returns the confidence interval for a population mean + * + * @param float $alpha + * @param float $stdDev Standard Deviation + * @param float $size + * @return float + * + */ + public static function CONFIDENCE($alpha, $stdDev, $size) + { + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + $size = floor(PHPExcel_Calculation_Functions::flattenSingleValue($size)); + + if ((is_numeric($alpha)) && (is_numeric($stdDev)) && (is_numeric($size))) { + if (($alpha <= 0) || ($alpha >= 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (($stdDev <= 0) || ($size < 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return self::NORMSINV(1 - $alpha / 2) * $stdDev / sqrt($size); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * CORREL + * + * Returns covariance, the average of the products of deviations for each data point pair. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function CORREL($yValues, $xValues = null) + { + if ((is_null($xValues)) || (!is_array($yValues)) || (!is_array($xValues))) { + return PHPExcel_Calculation_Functions::VALUE(); + } + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getCorrelation(); + } + + + /** + * COUNT + * + * Counts the number of cells that contain numbers within the list of arguments + * + * Excel Function: + * COUNT(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return int + */ + public static function COUNT() + { + $returnValue = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + ++$returnValue; + } + } + + return $returnValue; + } + + + /** + * COUNTA + * + * Counts the number of cells that are not empty within the list of arguments + * + * Excel Function: + * COUNTA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return int + */ + public static function COUNTA() + { + $returnValue = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric, boolean or string value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { + ++$returnValue; + } + } + + return $returnValue; + } + + + /** + * COUNTBLANK + * + * Counts the number of empty cells within the list of arguments + * + * Excel Function: + * COUNTBLANK(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return int + */ + public static function COUNTBLANK() + { + $returnValue = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a blank cell? + if ((is_null($arg)) || ((is_string($arg)) && ($arg == ''))) { + ++$returnValue; + } + } + + return $returnValue; + } + + + /** + * COUNTIF + * + * Counts the number of cells that contain numbers within the list of arguments + * + * Excel Function: + * COUNTIF(value1[,value2[, ...]],condition) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be counted. + * @return int + */ + public static function COUNTIF($aArgs, $condition) + { + $returnValue = 0; + + $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); + $condition = PHPExcel_Calculation_Functions::ifCondition($condition); + // Loop through arguments + foreach ($aArgs as $arg) { + if (!is_numeric($arg)) { + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + $testCondition = '='.$arg.$condition; + if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + // Is it a value within our criteria + ++$returnValue; + } + } + + return $returnValue; + } + + + /** + * COVAR + * + * Returns covariance, the average of the products of deviations for each data point pair. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function COVAR($yValues, $xValues) + { + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getCovariance(); + } + + + /** + * CRITBINOM + * + * Returns the smallest value for which the cumulative binomial distribution is greater + * than or equal to a criterion value + * + * See http://support.microsoft.com/kb/828117/ for details of the algorithm used + * + * @param float $trials number of Bernoulli trials + * @param float $probability probability of a success on each trial + * @param float $alpha criterion value + * @return int + * + * @todo Warning. This implementation differs from the algorithm detailed on the MS + * web site in that $CumPGuessMinus1 = $CumPGuess - 1 rather than $CumPGuess - $PGuess + * This eliminates a potential endless loop error, but may have an adverse affect on the + * accuracy of the function (although all my tests have so far returned correct results). + * + */ + public static function CRITBINOM($trials, $probability, $alpha) + { + $trials = floor(PHPExcel_Calculation_Functions::flattenSingleValue($trials)); + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + + if ((is_numeric($trials)) && (is_numeric($probability)) && (is_numeric($alpha))) { + if ($trials < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($probability < 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($alpha < 0) || ($alpha > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif ($alpha <= 0.5) { + $t = sqrt(log(1 / ($alpha * $alpha))); + $trialsApprox = 0 - ($t + (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t)); + } else { + $t = sqrt(log(1 / pow(1 - $alpha, 2))); + $trialsApprox = $t - (2.515517 + 0.802853 * $t + 0.010328 * $t * $t) / (1 + 1.432788 * $t + 0.189269 * $t * $t + 0.001308 * $t * $t * $t); + } + $Guess = floor($trials * $probability + $trialsApprox * sqrt($trials * $probability * (1 - $probability))); + if ($Guess < 0) { + $Guess = 0; + } elseif ($Guess > $trials) { + $Guess = $trials; + } + + $TotalUnscaledProbability = $UnscaledPGuess = $UnscaledCumPGuess = 0.0; + $EssentiallyZero = 10e-12; + + $m = floor($trials * $probability); + ++$TotalUnscaledProbability; + if ($m == $Guess) { + ++$UnscaledPGuess; + } + if ($m <= $Guess) { + ++$UnscaledCumPGuess; + } + + $PreviousValue = 1; + $Done = false; + $k = $m + 1; + while ((!$Done) && ($k <= $trials)) { + $CurrentValue = $PreviousValue * ($trials - $k + 1) * $probability / ($k * (1 - $probability)); + $TotalUnscaledProbability += $CurrentValue; + if ($k == $Guess) { + $UnscaledPGuess += $CurrentValue; + } + if ($k <= $Guess) { + $UnscaledCumPGuess += $CurrentValue; + } + if ($CurrentValue <= $EssentiallyZero) { + $Done = true; + } + $PreviousValue = $CurrentValue; + ++$k; + } + + $PreviousValue = 1; + $Done = false; + $k = $m - 1; + while ((!$Done) && ($k >= 0)) { + $CurrentValue = $PreviousValue * $k + 1 * (1 - $probability) / (($trials - $k) * $probability); + $TotalUnscaledProbability += $CurrentValue; + if ($k == $Guess) { + $UnscaledPGuess += $CurrentValue; + } + if ($k <= $Guess) { + $UnscaledCumPGuess += $CurrentValue; + } + if ($CurrentValue <= $EssentiallyZero) { + $Done = true; + } + $PreviousValue = $CurrentValue; + --$k; + } + + $PGuess = $UnscaledPGuess / $TotalUnscaledProbability; + $CumPGuess = $UnscaledCumPGuess / $TotalUnscaledProbability; + +// $CumPGuessMinus1 = $CumPGuess - $PGuess; + $CumPGuessMinus1 = $CumPGuess - 1; + + while (true) { + if (($CumPGuessMinus1 < $alpha) && ($CumPGuess >= $alpha)) { + return $Guess; + } elseif (($CumPGuessMinus1 < $alpha) && ($CumPGuess < $alpha)) { + $PGuessPlus1 = $PGuess * ($trials - $Guess) * $probability / $Guess / (1 - $probability); + $CumPGuessMinus1 = $CumPGuess; + $CumPGuess = $CumPGuess + $PGuessPlus1; + $PGuess = $PGuessPlus1; + ++$Guess; + } elseif (($CumPGuessMinus1 >= $alpha) && ($CumPGuess >= $alpha)) { + $PGuessMinus1 = $PGuess * $Guess * (1 - $probability) / ($trials - $Guess + 1) / $probability; + $CumPGuess = $CumPGuessMinus1; + $CumPGuessMinus1 = $CumPGuessMinus1 - $PGuess; + $PGuess = $PGuessMinus1; + --$Guess; + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * DEVSQ + * + * Returns the sum of squares of deviations of data points from their sample mean. + * + * Excel Function: + * DEVSQ(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function DEVSQ() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + // Return value + $returnValue = null; + + $aMean = self::AVERAGE($aArgs); + if ($aMean != PHPExcel_Calculation_Functions::DIV0()) { + $aCount = -1; + foreach ($aArgs as $k => $arg) { + // Is it a numeric value? + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || + (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = pow(($arg - $aMean), 2); + } else { + $returnValue += pow(($arg - $aMean), 2); + } + ++$aCount; + } + } + + // Return + if (is_null($returnValue)) { + return PHPExcel_Calculation_Functions::NaN(); + } else { + return $returnValue; + } + } + return self::NA(); + } + + + /** + * EXPONDIST + * + * Returns the exponential distribution. Use EXPONDIST to model the time between events, + * such as how long an automated bank teller takes to deliver cash. For example, you can + * use EXPONDIST to determine the probability that the process takes at most 1 minute. + * + * @param float $value Value of the function + * @param float $lambda The parameter value + * @param boolean $cumulative + * @return float + */ + public static function EXPONDIST($value, $lambda, $cumulative) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $lambda = PHPExcel_Calculation_Functions::flattenSingleValue($lambda); + $cumulative = PHPExcel_Calculation_Functions::flattenSingleValue($cumulative); + + if ((is_numeric($value)) && (is_numeric($lambda))) { + if (($value < 0) || ($lambda < 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + return 1 - exp(0-$value*$lambda); + } else { + return $lambda * exp(0-$value*$lambda); + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FISHER + * + * Returns the Fisher transformation at x. This transformation produces a function that + * is normally distributed rather than skewed. Use this function to perform hypothesis + * testing on the correlation coefficient. + * + * @param float $value + * @return float + */ + public static function FISHER($value) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + if (is_numeric($value)) { + if (($value <= -1) || ($value >= 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return 0.5 * log((1+$value)/(1-$value)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FISHERINV + * + * Returns the inverse of the Fisher transformation. Use this transformation when + * analyzing correlations between ranges or arrays of data. If y = FISHER(x), then + * FISHERINV(y) = x. + * + * @param float $value + * @return float + */ + public static function FISHERINV($value) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + if (is_numeric($value)) { + return (exp(2 * $value) - 1) / (exp(2 * $value) + 1); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FORECAST + * + * Calculates, or predicts, a future value by using existing values. The predicted value is a y-value for a given x-value. + * + * @param float Value of X for which we want to find Y + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function FORECAST($xValue, $yValues, $xValues) + { + $xValue = PHPExcel_Calculation_Functions::flattenSingleValue($xValue); + if (!is_numeric($xValue)) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getValueOfYForX($xValue); + } + + + /** + * GAMMADIST + * + * Returns the gamma distribution. + * + * @param float $value Value at which you want to evaluate the distribution + * @param float $a Parameter to the distribution + * @param float $b Parameter to the distribution + * @param boolean $cumulative + * @return float + * + */ + public static function GAMMADIST($value, $a, $b, $cumulative) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $a = PHPExcel_Calculation_Functions::flattenSingleValue($a); + $b = PHPExcel_Calculation_Functions::flattenSingleValue($b); + + if ((is_numeric($value)) && (is_numeric($a)) && (is_numeric($b))) { + if (($value < 0) || ($a <= 0) || ($b <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + return self::incompleteGamma($a, $value / $b) / self::gamma($a); + } else { + return (1 / (pow($b, $a) * self::gamma($a))) * pow($value, $a-1) * exp(0-($value / $b)); + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * GAMMAINV + * + * Returns the inverse of the beta distribution. + * + * @param float $probability Probability at which you want to evaluate the distribution + * @param float $alpha Parameter to the distribution + * @param float $beta Parameter to the distribution + * @return float + * + */ + public static function GAMMAINV($probability, $alpha, $beta) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); + + if ((is_numeric($probability)) && (is_numeric($alpha)) && (is_numeric($beta))) { + if (($alpha <= 0) || ($beta <= 0) || ($probability < 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $xLo = 0; + $xHi = $alpha * $beta * 5; + + $x = $xNew = 1; + $error = $pdf = 0; + $dx = 1024; + $i = 0; + + while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { + // Apply Newton-Raphson step + $error = self::GAMMADIST($x, $alpha, $beta, true) - $probability; + if ($error < 0.0) { + $xLo = $x; + } else { + $xHi = $x; + } + $pdf = self::GAMMADIST($x, $alpha, $beta, false); + // Avoid division by zero + if ($pdf != 0.0) { + $dx = $error / $pdf; + $xNew = $x - $dx; + } + // If the NR fails to converge (which for example may be the + // case if the initial guess is too rough) we apply a bisection + // step to determine a more narrow interval around the root. + if (($xNew < $xLo) || ($xNew > $xHi) || ($pdf == 0.0)) { + $xNew = ($xLo + $xHi) / 2; + $dx = $xNew - $x; + } + $x = $xNew; + } + if ($i == MAX_ITERATIONS) { + return PHPExcel_Calculation_Functions::NA(); + } + return $x; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * GAMMALN + * + * Returns the natural logarithm of the gamma function. + * + * @param float $value + * @return float + */ + public static function GAMMALN($value) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + if (is_numeric($value)) { + if ($value <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return log(self::gamma($value)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * GEOMEAN + * + * Returns the geometric mean of an array or range of positive data. For example, you + * can use GEOMEAN to calculate average growth rate given compound interest with + * variable rates. + * + * Excel Function: + * GEOMEAN(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function GEOMEAN() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + $aMean = PHPExcel_Calculation_MathTrig::PRODUCT($aArgs); + if (is_numeric($aMean) && ($aMean > 0)) { + $aCount = self::COUNT($aArgs) ; + if (self::MIN($aArgs) > 0) { + return pow($aMean, (1 / $aCount)); + } + } + return PHPExcel_Calculation_Functions::NaN(); + } + + + /** + * GROWTH + * + * Returns values along a predicted emponential trend + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @param array of mixed Values of X for which we want to find Y + * @param boolean A logical value specifying whether to force the intersect to equal 0. + * @return array of float + */ + public static function GROWTH($yValues, $xValues = array(), $newValues = array(), $const = true) + { + $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues); + $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues); + $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues); + $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); + + $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL, $yValues, $xValues, $const); + if (empty($newValues)) { + $newValues = $bestFitExponential->getXValues(); + } + + $returnArray = array(); + foreach ($newValues as $xValue) { + $returnArray[0][] = $bestFitExponential->getValueOfYForX($xValue); + } + + return $returnArray; + } + + + /** + * HARMEAN + * + * Returns the harmonic mean of a data set. The harmonic mean is the reciprocal of the + * arithmetic mean of reciprocals. + * + * Excel Function: + * HARMEAN(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function HARMEAN() + { + // Return value + $returnValue = PHPExcel_Calculation_Functions::NA(); + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + if (self::MIN($aArgs) < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + $aCount = 0; + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if ($arg <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (is_null($returnValue)) { + $returnValue = (1 / $arg); + } else { + $returnValue += (1 / $arg); + } + ++$aCount; + } + } + + // Return + if ($aCount > 0) { + return 1 / ($returnValue / $aCount); + } else { + return $returnValue; + } + } + + + /** + * HYPGEOMDIST + * + * Returns the hypergeometric distribution. HYPGEOMDIST returns the probability of a given number of + * sample successes, given the sample size, population successes, and population size. + * + * @param float $sampleSuccesses Number of successes in the sample + * @param float $sampleNumber Size of the sample + * @param float $populationSuccesses Number of successes in the population + * @param float $populationNumber Population size + * @return float + * + */ + public static function HYPGEOMDIST($sampleSuccesses, $sampleNumber, $populationSuccesses, $populationNumber) + { + $sampleSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleSuccesses)); + $sampleNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($sampleNumber)); + $populationSuccesses = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationSuccesses)); + $populationNumber = floor(PHPExcel_Calculation_Functions::flattenSingleValue($populationNumber)); + + if ((is_numeric($sampleSuccesses)) && (is_numeric($sampleNumber)) && (is_numeric($populationSuccesses)) && (is_numeric($populationNumber))) { + if (($sampleSuccesses < 0) || ($sampleSuccesses > $sampleNumber) || ($sampleSuccesses > $populationSuccesses)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (($sampleNumber <= 0) || ($sampleNumber > $populationNumber)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (($populationSuccesses <= 0) || ($populationSuccesses > $populationNumber)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return PHPExcel_Calculation_MathTrig::COMBIN($populationSuccesses, $sampleSuccesses) * + PHPExcel_Calculation_MathTrig::COMBIN($populationNumber - $populationSuccesses, $sampleNumber - $sampleSuccesses) / + PHPExcel_Calculation_MathTrig::COMBIN($populationNumber, $sampleNumber); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * INTERCEPT + * + * Calculates the point at which a line will intersect the y-axis by using existing x-values and y-values. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function INTERCEPT($yValues, $xValues) + { + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getIntersect(); + } + + + /** + * KURT + * + * Returns the kurtosis of a data set. Kurtosis characterizes the relative peakedness + * or flatness of a distribution compared with the normal distribution. Positive + * kurtosis indicates a relatively peaked distribution. Negative kurtosis indicates a + * relatively flat distribution. + * + * @param array Data Series + * @return float + */ + public static function KURT() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + $mean = self::AVERAGE($aArgs); + $stdDev = self::STDEV($aArgs); + + if ($stdDev > 0) { + $count = $summer = 0; + // Loop through arguments + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $summer += pow((($arg - $mean) / $stdDev), 4); + ++$count; + } + } + } + + // Return + if ($count > 3) { + return $summer * ($count * ($count+1) / (($count-1) * ($count-2) * ($count-3))) - (3 * pow($count-1, 2) / (($count-2) * ($count-3))); + } + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * LARGE + * + * Returns the nth largest value in a data set. You can use this function to + * select a value based on its relative standing. + * + * Excel Function: + * LARGE(value1[,value2[, ...]],entry) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param int $entry Position (ordered from the largest) in the array or range of data to return + * @return float + * + */ + public static function LARGE() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $entry = floor(array_pop($aArgs)); + + if ((is_numeric($entry)) && (!is_string($entry))) { + $mArgs = array(); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + $count = self::COUNT($mArgs); + $entry = floor(--$entry); + if (($entry < 0) || ($entry >= $count) || ($count == 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + rsort($mArgs); + return $mArgs[$entry]; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * LINEST + * + * Calculates the statistics for a line by using the "least squares" method to calculate a straight line that best fits your data, + * and then returns an array that describes the line. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @param boolean A logical value specifying whether to force the intersect to equal 0. + * @param boolean A logical value specifying whether to return additional regression statistics. + * @return array + */ + public static function LINEST($yValues, $xValues = null, $const = true, $stats = false) + { + $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); + $stats = (is_null($stats)) ? false : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats); + if (is_null($xValues)) { + $xValues = range(1, count(PHPExcel_Calculation_Functions::flattenArray($yValues))); + } + + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return 0; + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues, $const); + if ($stats) { + return array( + array( + $bestFitLinear->getSlope(), + $bestFitLinear->getSlopeSE(), + $bestFitLinear->getGoodnessOfFit(), + $bestFitLinear->getF(), + $bestFitLinear->getSSRegression(), + ), + array( + $bestFitLinear->getIntersect(), + $bestFitLinear->getIntersectSE(), + $bestFitLinear->getStdevOfResiduals(), + $bestFitLinear->getDFResiduals(), + $bestFitLinear->getSSResiduals() + ) + ); + } else { + return array( + $bestFitLinear->getSlope(), + $bestFitLinear->getIntersect() + ); + } + } + + + /** + * LOGEST + * + * Calculates an exponential curve that best fits the X and Y data series, + * and then returns an array that describes the line. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @param boolean A logical value specifying whether to force the intersect to equal 0. + * @param boolean A logical value specifying whether to return additional regression statistics. + * @return array + */ + public static function LOGEST($yValues, $xValues = null, $const = true, $stats = false) + { + $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); + $stats = (is_null($stats)) ? false : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($stats); + if (is_null($xValues)) { + $xValues = range(1, count(PHPExcel_Calculation_Functions::flattenArray($yValues))); + } + + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + foreach ($yValues as $value) { + if ($value <= 0.0) { + return PHPExcel_Calculation_Functions::NaN(); + } + } + + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return 1; + } + + $bestFitExponential = trendClass::calculate(trendClass::TREND_EXPONENTIAL, $yValues, $xValues, $const); + if ($stats) { + return array( + array( + $bestFitExponential->getSlope(), + $bestFitExponential->getSlopeSE(), + $bestFitExponential->getGoodnessOfFit(), + $bestFitExponential->getF(), + $bestFitExponential->getSSRegression(), + ), + array( + $bestFitExponential->getIntersect(), + $bestFitExponential->getIntersectSE(), + $bestFitExponential->getStdevOfResiduals(), + $bestFitExponential->getDFResiduals(), + $bestFitExponential->getSSResiduals() + ) + ); + } else { + return array( + $bestFitExponential->getSlope(), + $bestFitExponential->getIntersect() + ); + } + } + + + /** + * LOGINV + * + * Returns the inverse of the normal cumulative distribution + * + * @param float $probability + * @param float $mean + * @param float $stdDev + * @return float + * + * @todo Try implementing P J Acklam's refinement algorithm for greater + * accuracy if I can get my head round the mathematics + * (as described at) http://home.online.no/~pjacklam/notes/invnorm/ + */ + public static function LOGINV($probability, $mean, $stdDev) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + + if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) { + if (($probability < 0) || ($probability > 1) || ($stdDev <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return exp($mean + $stdDev * self::NORMSINV($probability)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * LOGNORMDIST + * + * Returns the cumulative lognormal distribution of x, where ln(x) is normally distributed + * with parameters mean and standard_dev. + * + * @param float $value + * @param float $mean + * @param float $stdDev + * @return float + */ + public static function LOGNORMDIST($value, $mean, $stdDev) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + + if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { + if (($value <= 0) || ($stdDev <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return self::NORMSDIST((log($value) - $mean) / $stdDev); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * MAX + * + * MAX returns the value of the element of the values passed that has the highest value, + * with negative numbers considered smaller than positive numbers. + * + * Excel Function: + * MAX(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MAX() + { + $returnValue = null; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if ((is_null($returnValue)) || ($arg > $returnValue)) { + $returnValue = $arg; + } + } + } + + if (is_null($returnValue)) { + return 0; + } + return $returnValue; + } + + + /** + * MAXA + * + * Returns the greatest value in a list of arguments, including numbers, text, and logical values + * + * Excel Function: + * MAXA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MAXA() + { + $returnValue = null; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + if ((is_null($returnValue)) || ($arg > $returnValue)) { + $returnValue = $arg; + } + } + } + + if (is_null($returnValue)) { + return 0; + } + return $returnValue; + } + + + /** + * MAXIF + * + * Counts the maximum value within a range of cells that contain numbers within the list of arguments + * + * Excel Function: + * MAXIF(value1[,value2[, ...]],condition) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be checked. + * @return float + */ + public static function MAXIF($aArgs, $condition, $sumArgs = array()) + { + $returnValue = null; + + $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); + $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); + if (empty($sumArgs)) { + $sumArgs = $aArgs; + } + $condition = PHPExcel_Calculation_Functions::ifCondition($condition); + // Loop through arguments + foreach ($aArgs as $key => $arg) { + if (!is_numeric($arg)) { + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + $testCondition = '='.$arg.$condition; + if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + if ((is_null($returnValue)) || ($arg > $returnValue)) { + $returnValue = $arg; + } + } + } + + return $returnValue; + } + + /** + * MEDIAN + * + * Returns the median of the given numbers. The median is the number in the middle of a set of numbers. + * + * Excel Function: + * MEDIAN(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MEDIAN() + { + $returnValue = PHPExcel_Calculation_Functions::NaN(); + + $mArgs = array(); + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + + $mValueCount = count($mArgs); + if ($mValueCount > 0) { + sort($mArgs, SORT_NUMERIC); + $mValueCount = $mValueCount / 2; + if ($mValueCount == floor($mValueCount)) { + $returnValue = ($mArgs[$mValueCount--] + $mArgs[$mValueCount]) / 2; + } else { + $mValueCount = floor($mValueCount); + $returnValue = $mArgs[$mValueCount]; + } + } + + return $returnValue; + } + + + /** + * MIN + * + * MIN returns the value of the element of the values passed that has the smallest value, + * with negative numbers considered smaller than positive numbers. + * + * Excel Function: + * MIN(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MIN() + { + $returnValue = null; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if ((is_null($returnValue)) || ($arg < $returnValue)) { + $returnValue = $arg; + } + } + } + + if (is_null($returnValue)) { + return 0; + } + return $returnValue; + } + + + /** + * MINA + * + * Returns the smallest value in a list of arguments, including numbers, text, and logical values + * + * Excel Function: + * MINA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MINA() + { + $returnValue = null; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + if ((is_null($returnValue)) || ($arg < $returnValue)) { + $returnValue = $arg; + } + } + } + + if (is_null($returnValue)) { + return 0; + } + return $returnValue; + } + + + /** + * MINIF + * + * Returns the minimum value within a range of cells that contain numbers within the list of arguments + * + * Excel Function: + * MINIF(value1[,value2[, ...]],condition) + * + * @access public + * @category Mathematical and Trigonometric Functions + * @param mixed $arg,... Data values + * @param string $condition The criteria that defines which cells will be checked. + * @return float + */ + public static function MINIF($aArgs, $condition, $sumArgs = array()) + { + $returnValue = null; + + $aArgs = PHPExcel_Calculation_Functions::flattenArray($aArgs); + $sumArgs = PHPExcel_Calculation_Functions::flattenArray($sumArgs); + if (empty($sumArgs)) { + $sumArgs = $aArgs; + } + $condition = PHPExcel_Calculation_Functions::ifCondition($condition); + // Loop through arguments + foreach ($aArgs as $key => $arg) { + if (!is_numeric($arg)) { + $arg = PHPExcel_Calculation::wrapResult(strtoupper($arg)); + } + $testCondition = '='.$arg.$condition; + if (PHPExcel_Calculation::getInstance()->_calculateFormulaValue($testCondition)) { + if ((is_null($returnValue)) || ($arg < $returnValue)) { + $returnValue = $arg; + } + } + } + + return $returnValue; + } + + + // + // Special variant of array_count_values that isn't limited to strings and integers, + // but can work with floating point numbers as values + // + private static function modeCalc($data) + { + $frequencyArray = array(); + foreach ($data as $datum) { + $found = false; + foreach ($frequencyArray as $key => $value) { + if ((string) $value['value'] == (string) $datum) { + ++$frequencyArray[$key]['frequency']; + $found = true; + break; + } + } + if (!$found) { + $frequencyArray[] = array( + 'value' => $datum, + 'frequency' => 1 + ); + } + } + + foreach ($frequencyArray as $key => $value) { + $frequencyList[$key] = $value['frequency']; + $valueList[$key] = $value['value']; + } + array_multisort($frequencyList, SORT_DESC, $valueList, SORT_ASC, SORT_NUMERIC, $frequencyArray); + + if ($frequencyArray[0]['frequency'] == 1) { + return PHPExcel_Calculation_Functions::NA(); + } + return $frequencyArray[0]['value']; + } + + + /** + * MODE + * + * Returns the most frequently occurring, or repetitive, value in an array or range of data + * + * Excel Function: + * MODE(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function MODE() + { + $returnValue = PHPExcel_Calculation_Functions::NA(); + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + $mArgs = array(); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + + if (!empty($mArgs)) { + return self::modeCalc($mArgs); + } + + return $returnValue; + } + + + /** + * NEGBINOMDIST + * + * Returns the negative binomial distribution. NEGBINOMDIST returns the probability that + * there will be number_f failures before the number_s-th success, when the constant + * probability of a success is probability_s. This function is similar to the binomial + * distribution, except that the number of successes is fixed, and the number of trials is + * variable. Like the binomial, trials are assumed to be independent. + * + * @param float $failures Number of Failures + * @param float $successes Threshold number of Successes + * @param float $probability Probability of success on each trial + * @return float + * + */ + public static function NEGBINOMDIST($failures, $successes, $probability) + { + $failures = floor(PHPExcel_Calculation_Functions::flattenSingleValue($failures)); + $successes = floor(PHPExcel_Calculation_Functions::flattenSingleValue($successes)); + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + + if ((is_numeric($failures)) && (is_numeric($successes)) && (is_numeric($probability))) { + if (($failures < 0) || ($successes < 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } elseif (($probability < 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_GNUMERIC) { + if (($failures + $successes - 1) <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + } + return (PHPExcel_Calculation_MathTrig::COMBIN($failures + $successes - 1, $successes - 1)) * (pow($probability, $successes)) * (pow(1 - $probability, $failures)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * NORMDIST + * + * Returns the normal distribution for the specified mean and standard deviation. This + * function has a very wide range of applications in statistics, including hypothesis + * testing. + * + * @param float $value + * @param float $mean Mean Value + * @param float $stdDev Standard Deviation + * @param boolean $cumulative + * @return float + * + */ + public static function NORMDIST($value, $mean, $stdDev, $cumulative) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + + if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { + if ($stdDev < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + return 0.5 * (1 + PHPExcel_Calculation_Engineering::erfVal(($value - $mean) / ($stdDev * sqrt(2)))); + } else { + return (1 / (SQRT2PI * $stdDev)) * exp(0 - (pow($value - $mean, 2) / (2 * ($stdDev * $stdDev)))); + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * NORMINV + * + * Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation. + * + * @param float $value + * @param float $mean Mean Value + * @param float $stdDev Standard Deviation + * @return float + * + */ + public static function NORMINV($probability, $mean, $stdDev) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + + if ((is_numeric($probability)) && (is_numeric($mean)) && (is_numeric($stdDev))) { + if (($probability < 0) || ($probability > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ($stdDev < 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return (self::inverseNcdf($probability) * $stdDev) + $mean; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * NORMSDIST + * + * Returns the standard normal cumulative distribution function. The distribution has + * a mean of 0 (zero) and a standard deviation of one. Use this function in place of a + * table of standard normal curve areas. + * + * @param float $value + * @return float + */ + public static function NORMSDIST($value) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + return self::NORMDIST($value, 0, 1, true); + } + + + /** + * NORMSINV + * + * Returns the inverse of the standard normal cumulative distribution + * + * @param float $value + * @return float + */ + public static function NORMSINV($value) + { + return self::NORMINV($value, 0, 1); + } + + + /** + * PERCENTILE + * + * Returns the nth percentile of values in a range.. + * + * Excel Function: + * PERCENTILE(value1[,value2[, ...]],entry) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param float $entry Percentile value in the range 0..1, inclusive. + * @return float + */ + public static function PERCENTILE() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $entry = array_pop($aArgs); + + if ((is_numeric($entry)) && (!is_string($entry))) { + if (($entry < 0) || ($entry > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $mArgs = array(); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + $mValueCount = count($mArgs); + if ($mValueCount > 0) { + sort($mArgs); + $count = self::COUNT($mArgs); + $index = $entry * ($count-1); + $iBase = floor($index); + if ($index == $iBase) { + return $mArgs[$index]; + } else { + $iNext = $iBase + 1; + $iProportion = $index - $iBase; + return $mArgs[$iBase] + (($mArgs[$iNext] - $mArgs[$iBase]) * $iProportion) ; + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * PERCENTRANK + * + * Returns the rank of a value in a data set as a percentage of the data set. + * + * @param array of number An array of, or a reference to, a list of numbers. + * @param number The number whose rank you want to find. + * @param number The number of significant digits for the returned percentage value. + * @return float + */ + public static function PERCENTRANK($valueSet, $value, $significance = 3) + { + $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet); + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $significance = (is_null($significance)) ? 3 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($significance); + + foreach ($valueSet as $key => $valueEntry) { + if (!is_numeric($valueEntry)) { + unset($valueSet[$key]); + } + } + sort($valueSet, SORT_NUMERIC); + $valueCount = count($valueSet); + if ($valueCount == 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + + $valueAdjustor = $valueCount - 1; + if (($value < $valueSet[0]) || ($value > $valueSet[$valueAdjustor])) { + return PHPExcel_Calculation_Functions::NA(); + } + + $pos = array_search($value, $valueSet); + if ($pos === false) { + $pos = 0; + $testValue = $valueSet[0]; + while ($testValue < $value) { + $testValue = $valueSet[++$pos]; + } + --$pos; + $pos += (($value - $valueSet[$pos]) / ($testValue - $valueSet[$pos])); + } + + return round($pos / $valueAdjustor, $significance); + } + + + /** + * PERMUT + * + * Returns the number of permutations for a given number of objects that can be + * selected from number objects. A permutation is any set or subset of objects or + * events where internal order is significant. Permutations are different from + * combinations, for which the internal order is not significant. Use this function + * for lottery-style probability calculations. + * + * @param int $numObjs Number of different objects + * @param int $numInSet Number of objects in each permutation + * @return int Number of permutations + */ + public static function PERMUT($numObjs, $numInSet) + { + $numObjs = PHPExcel_Calculation_Functions::flattenSingleValue($numObjs); + $numInSet = PHPExcel_Calculation_Functions::flattenSingleValue($numInSet); + + if ((is_numeric($numObjs)) && (is_numeric($numInSet))) { + $numInSet = floor($numInSet); + if ($numObjs < $numInSet) { + return PHPExcel_Calculation_Functions::NaN(); + } + return round(PHPExcel_Calculation_MathTrig::FACT($numObjs) / PHPExcel_Calculation_MathTrig::FACT($numObjs - $numInSet)); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * POISSON + * + * Returns the Poisson distribution. A common application of the Poisson distribution + * is predicting the number of events over a specific time, such as the number of + * cars arriving at a toll plaza in 1 minute. + * + * @param float $value + * @param float $mean Mean Value + * @param boolean $cumulative + * @return float + * + */ + public static function POISSON($value, $mean, $cumulative) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + + if ((is_numeric($value)) && (is_numeric($mean))) { + if (($value < 0) || ($mean <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + $summer = 0; + for ($i = 0; $i <= floor($value); ++$i) { + $summer += pow($mean, $i) / PHPExcel_Calculation_MathTrig::FACT($i); + } + return exp(0-$mean) * $summer; + } else { + return (exp(0-$mean) * pow($mean, $value)) / PHPExcel_Calculation_MathTrig::FACT($value); + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * QUARTILE + * + * Returns the quartile of a data set. + * + * Excel Function: + * QUARTILE(value1[,value2[, ...]],entry) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param int $entry Quartile value in the range 1..3, inclusive. + * @return float + */ + public static function QUARTILE() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $entry = floor(array_pop($aArgs)); + + if ((is_numeric($entry)) && (!is_string($entry))) { + $entry /= 4; + if (($entry < 0) || ($entry > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + return self::PERCENTILE($aArgs, $entry); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * RANK + * + * Returns the rank of a number in a list of numbers. + * + * @param number The number whose rank you want to find. + * @param array of number An array of, or a reference to, a list of numbers. + * @param mixed Order to sort the values in the value set + * @return float + */ + public static function RANK($value, $valueSet, $order = 0) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $valueSet = PHPExcel_Calculation_Functions::flattenArray($valueSet); + $order = (is_null($order)) ? 0 : (integer) PHPExcel_Calculation_Functions::flattenSingleValue($order); + + foreach ($valueSet as $key => $valueEntry) { + if (!is_numeric($valueEntry)) { + unset($valueSet[$key]); + } + } + + if ($order == 0) { + rsort($valueSet, SORT_NUMERIC); + } else { + sort($valueSet, SORT_NUMERIC); + } + $pos = array_search($value, $valueSet); + if ($pos === false) { + return PHPExcel_Calculation_Functions::NA(); + } + + return ++$pos; + } + + + /** + * RSQ + * + * Returns the square of the Pearson product moment correlation coefficient through data points in known_y's and known_x's. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function RSQ($yValues, $xValues) + { + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getGoodnessOfFit(); + } + + + /** + * SKEW + * + * Returns the skewness of a distribution. Skewness characterizes the degree of asymmetry + * of a distribution around its mean. Positive skewness indicates a distribution with an + * asymmetric tail extending toward more positive values. Negative skewness indicates a + * distribution with an asymmetric tail extending toward more negative values. + * + * @param array Data Series + * @return float + */ + public static function SKEW() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + $mean = self::AVERAGE($aArgs); + $stdDev = self::STDEV($aArgs); + + $count = $summer = 0; + // Loop through arguments + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $summer += pow((($arg - $mean) / $stdDev), 3); + ++$count; + } + } + } + + if ($count > 2) { + return $summer * ($count / (($count-1) * ($count-2))); + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * SLOPE + * + * Returns the slope of the linear regression line through data points in known_y's and known_x's. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function SLOPE($yValues, $xValues) + { + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getSlope(); + } + + + /** + * SMALL + * + * Returns the nth smallest value in a data set. You can use this function to + * select a value based on its relative standing. + * + * Excel Function: + * SMALL(value1[,value2[, ...]],entry) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param int $entry Position (ordered from the smallest) in the array or range of data to return + * @return float + */ + public static function SMALL() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $entry = array_pop($aArgs); + + if ((is_numeric($entry)) && (!is_string($entry))) { + $mArgs = array(); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + $count = self::COUNT($mArgs); + $entry = floor(--$entry); + if (($entry < 0) || ($entry >= $count) || ($count == 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + sort($mArgs); + return $mArgs[$entry]; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * STANDARDIZE + * + * Returns a normalized value from a distribution characterized by mean and standard_dev. + * + * @param float $value Value to normalize + * @param float $mean Mean Value + * @param float $stdDev Standard Deviation + * @return float Standardized value + */ + public static function STANDARDIZE($value, $mean, $stdDev) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $mean = PHPExcel_Calculation_Functions::flattenSingleValue($mean); + $stdDev = PHPExcel_Calculation_Functions::flattenSingleValue($stdDev); + + if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) { + if ($stdDev <= 0) { + return PHPExcel_Calculation_Functions::NaN(); + } + return ($value - $mean) / $stdDev ; + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * STDEV + * + * Estimates standard deviation based on a sample. The standard deviation is a measure of how + * widely values are dispersed from the average value (the mean). + * + * Excel Function: + * STDEV(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function STDEV() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + // Return value + $returnValue = null; + + $aMean = self::AVERAGE($aArgs); + if (!is_null($aMean)) { + $aCount = -1; + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = pow(($arg - $aMean), 2); + } else { + $returnValue += pow(($arg - $aMean), 2); + } + ++$aCount; + } + } + + // Return + if (($aCount > 0) && ($returnValue >= 0)) { + return sqrt($returnValue / $aCount); + } + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * STDEVA + * + * Estimates standard deviation based on a sample, including numbers, text, and logical values + * + * Excel Function: + * STDEVA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function STDEVA() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + $returnValue = null; + + $aMean = self::AVERAGEA($aArgs); + if (!is_null($aMean)) { + $aCount = -1; + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + if (is_null($returnValue)) { + $returnValue = pow(($arg - $aMean), 2); + } else { + $returnValue += pow(($arg - $aMean), 2); + } + ++$aCount; + } + } + } + + if (($aCount > 0) && ($returnValue >= 0)) { + return sqrt($returnValue / $aCount); + } + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * STDEVP + * + * Calculates standard deviation based on the entire population + * + * Excel Function: + * STDEVP(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function STDEVP() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + $returnValue = null; + + $aMean = self::AVERAGE($aArgs); + if (!is_null($aMean)) { + $aCount = 0; + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + ((!PHPExcel_Calculation_Functions::isCellValue($k)) || (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE))) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + if (is_null($returnValue)) { + $returnValue = pow(($arg - $aMean), 2); + } else { + $returnValue += pow(($arg - $aMean), 2); + } + ++$aCount; + } + } + + if (($aCount > 0) && ($returnValue >= 0)) { + return sqrt($returnValue / $aCount); + } + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * STDEVPA + * + * Calculates standard deviation based on the entire population, including numbers, text, and logical values + * + * Excel Function: + * STDEVPA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function STDEVPA() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + + $returnValue = null; + + $aMean = self::AVERAGEA($aArgs); + if (!is_null($aMean)) { + $aCount = 0; + foreach ($aArgs as $k => $arg) { + if ((is_bool($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + if (is_null($returnValue)) { + $returnValue = pow(($arg - $aMean), 2); + } else { + $returnValue += pow(($arg - $aMean), 2); + } + ++$aCount; + } + } + } + + if (($aCount > 0) && ($returnValue >= 0)) { + return sqrt($returnValue / $aCount); + } + } + return PHPExcel_Calculation_Functions::DIV0(); + } + + + /** + * STEYX + * + * Returns the standard error of the predicted y-value for each x in the regression. + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @return float + */ + public static function STEYX($yValues, $xValues) + { + if (!self::checkTrendArrays($yValues, $xValues)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $yValueCount = count($yValues); + $xValueCount = count($xValues); + + if (($yValueCount == 0) || ($yValueCount != $xValueCount)) { + return PHPExcel_Calculation_Functions::NA(); + } elseif ($yValueCount == 1) { + return PHPExcel_Calculation_Functions::DIV0(); + } + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues); + return $bestFitLinear->getStdevOfResiduals(); + } + + + /** + * TDIST + * + * Returns the probability of Student's T distribution. + * + * @param float $value Value for the function + * @param float $degrees degrees of freedom + * @param float $tails number of tails (1 or 2) + * @return float + */ + public static function TDIST($value, $degrees, $tails) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); + $tails = floor(PHPExcel_Calculation_Functions::flattenSingleValue($tails)); + + if ((is_numeric($value)) && (is_numeric($degrees)) && (is_numeric($tails))) { + if (($value < 0) || ($degrees < 1) || ($tails < 1) || ($tails > 2)) { + return PHPExcel_Calculation_Functions::NaN(); + } + // tdist, which finds the probability that corresponds to a given value + // of t with k degrees of freedom. This algorithm is translated from a + // pascal function on p81 of "Statistical Computing in Pascal" by D + // Cooke, A H Craven & G M Clark (1985: Edward Arnold (Pubs.) Ltd: + // London). The above Pascal algorithm is itself a translation of the + // fortran algoritm "AS 3" by B E Cooper of the Atlas Computer + // Laboratory as reported in (among other places) "Applied Statistics + // Algorithms", editied by P Griffiths and I D Hill (1985; Ellis + // Horwood Ltd.; W. Sussex, England). + $tterm = $degrees; + $ttheta = atan2($value, sqrt($tterm)); + $tc = cos($ttheta); + $ts = sin($ttheta); + $tsum = 0; + + if (($degrees % 2) == 1) { + $ti = 3; + $tterm = $tc; + } else { + $ti = 2; + $tterm = 1; + } + + $tsum = $tterm; + while ($ti < $degrees) { + $tterm *= $tc * $tc * ($ti - 1) / $ti; + $tsum += $tterm; + $ti += 2; + } + $tsum *= $ts; + if (($degrees % 2) == 1) { + $tsum = M_2DIVPI * ($tsum + $ttheta); + } + $tValue = 0.5 * (1 + $tsum); + if ($tails == 1) { + return 1 - abs($tValue); + } else { + return 1 - abs((1 - $tValue) - $tValue); + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * TINV + * + * Returns the one-tailed probability of the chi-squared distribution. + * + * @param float $probability Probability for the function + * @param float $degrees degrees of freedom + * @return float + */ + public static function TINV($probability, $degrees) + { + $probability = PHPExcel_Calculation_Functions::flattenSingleValue($probability); + $degrees = floor(PHPExcel_Calculation_Functions::flattenSingleValue($degrees)); + + if ((is_numeric($probability)) && (is_numeric($degrees))) { + $xLo = 100; + $xHi = 0; + + $x = $xNew = 1; + $dx = 1; + $i = 0; + + while ((abs($dx) > PRECISION) && ($i++ < MAX_ITERATIONS)) { + // Apply Newton-Raphson step + $result = self::TDIST($x, $degrees, 2); + $error = $result - $probability; + if ($error == 0.0) { + $dx = 0; + } elseif ($error < 0.0) { + $xLo = $x; + } else { + $xHi = $x; + } + // Avoid division by zero + if ($result != 0.0) { + $dx = $error / $result; + $xNew = $x - $dx; + } + // If the NR fails to converge (which for example may be the + // case if the initial guess is too rough) we apply a bisection + // step to determine a more narrow interval around the root. + if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) { + $xNew = ($xLo + $xHi) / 2; + $dx = $xNew - $x; + } + $x = $xNew; + } + if ($i == MAX_ITERATIONS) { + return PHPExcel_Calculation_Functions::NA(); + } + return round($x, 12); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * TREND + * + * Returns values along a linear trend + * + * @param array of mixed Data Series Y + * @param array of mixed Data Series X + * @param array of mixed Values of X for which we want to find Y + * @param boolean A logical value specifying whether to force the intersect to equal 0. + * @return array of float + */ + public static function TREND($yValues, $xValues = array(), $newValues = array(), $const = true) + { + $yValues = PHPExcel_Calculation_Functions::flattenArray($yValues); + $xValues = PHPExcel_Calculation_Functions::flattenArray($xValues); + $newValues = PHPExcel_Calculation_Functions::flattenArray($newValues); + $const = (is_null($const)) ? true : (boolean) PHPExcel_Calculation_Functions::flattenSingleValue($const); + + $bestFitLinear = trendClass::calculate(trendClass::TREND_LINEAR, $yValues, $xValues, $const); + if (empty($newValues)) { + $newValues = $bestFitLinear->getXValues(); + } + + $returnArray = array(); + foreach ($newValues as $xValue) { + $returnArray[0][] = $bestFitLinear->getValueOfYForX($xValue); + } + + return $returnArray; + } + + + /** + * TRIMMEAN + * + * Returns the mean of the interior of a data set. TRIMMEAN calculates the mean + * taken by excluding a percentage of data points from the top and bottom tails + * of a data set. + * + * Excel Function: + * TRIMEAN(value1[,value2[, ...]], $discard) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @param float $discard Percentage to discard + * @return float + */ + public static function TRIMMEAN() + { + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + + // Calculate + $percent = array_pop($aArgs); + + if ((is_numeric($percent)) && (!is_string($percent))) { + if (($percent < 0) || ($percent > 1)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $mArgs = array(); + foreach ($aArgs as $arg) { + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $mArgs[] = $arg; + } + } + $discard = floor(self::COUNT($mArgs) * $percent / 2); + sort($mArgs); + for ($i=0; $i < $discard; ++$i) { + array_pop($mArgs); + array_shift($mArgs); + } + return self::AVERAGE($mArgs); + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * VARFunc + * + * Estimates variance based on a sample. + * + * Excel Function: + * VAR(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function VARFunc() + { + $returnValue = PHPExcel_Calculation_Functions::DIV0(); + + $summerA = $summerB = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + $aCount = 0; + foreach ($aArgs as $arg) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $summerA += ($arg * $arg); + $summerB += $arg; + ++$aCount; + } + } + + if ($aCount > 1) { + $summerA *= $aCount; + $summerB *= $summerB; + $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1)); + } + return $returnValue; + } + + + /** + * VARA + * + * Estimates variance based on a sample, including numbers, text, and logical values + * + * Excel Function: + * VARA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function VARA() + { + $returnValue = PHPExcel_Calculation_Functions::DIV0(); + + $summerA = $summerB = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + $aCount = 0; + foreach ($aArgs as $k => $arg) { + if ((is_string($arg)) && + (PHPExcel_Calculation_Functions::isValue($k))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ((is_string($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + $summerA += ($arg * $arg); + $summerB += $arg; + ++$aCount; + } + } + } + + if ($aCount > 1) { + $summerA *= $aCount; + $summerB *= $summerB; + $returnValue = ($summerA - $summerB) / ($aCount * ($aCount - 1)); + } + return $returnValue; + } + + + /** + * VARP + * + * Calculates variance based on the entire population + * + * Excel Function: + * VARP(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function VARP() + { + // Return value + $returnValue = PHPExcel_Calculation_Functions::DIV0(); + + $summerA = $summerB = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + $aCount = 0; + foreach ($aArgs as $arg) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } + // Is it a numeric value? + if ((is_numeric($arg)) && (!is_string($arg))) { + $summerA += ($arg * $arg); + $summerB += $arg; + ++$aCount; + } + } + + if ($aCount > 0) { + $summerA *= $aCount; + $summerB *= $summerB; + $returnValue = ($summerA - $summerB) / ($aCount * $aCount); + } + return $returnValue; + } + + + /** + * VARPA + * + * Calculates variance based on the entire population, including numbers, text, and logical values + * + * Excel Function: + * VARPA(value1[,value2[, ...]]) + * + * @access public + * @category Statistical Functions + * @param mixed $arg,... Data values + * @return float + */ + public static function VARPA() + { + $returnValue = PHPExcel_Calculation_Functions::DIV0(); + + $summerA = $summerB = 0; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArrayIndexed(func_get_args()); + $aCount = 0; + foreach ($aArgs as $k => $arg) { + if ((is_string($arg)) && + (PHPExcel_Calculation_Functions::isValue($k))) { + return PHPExcel_Calculation_Functions::VALUE(); + } elseif ((is_string($arg)) && + (!PHPExcel_Calculation_Functions::isMatrixValue($k))) { + } else { + // Is it a numeric value? + if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) & ($arg != '')))) { + if (is_bool($arg)) { + $arg = (integer) $arg; + } elseif (is_string($arg)) { + $arg = 0; + } + $summerA += ($arg * $arg); + $summerB += $arg; + ++$aCount; + } + } + } + + if ($aCount > 0) { + $summerA *= $aCount; + $summerB *= $summerB; + $returnValue = ($summerA - $summerB) / ($aCount * $aCount); + } + return $returnValue; + } + + + /** + * WEIBULL + * + * Returns the Weibull distribution. Use this distribution in reliability + * analysis, such as calculating a device's mean time to failure. + * + * @param float $value + * @param float $alpha Alpha Parameter + * @param float $beta Beta Parameter + * @param boolean $cumulative + * @return float + * + */ + public static function WEIBULL($value, $alpha, $beta, $cumulative) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $alpha = PHPExcel_Calculation_Functions::flattenSingleValue($alpha); + $beta = PHPExcel_Calculation_Functions::flattenSingleValue($beta); + + if ((is_numeric($value)) && (is_numeric($alpha)) && (is_numeric($beta))) { + if (($value < 0) || ($alpha <= 0) || ($beta <= 0)) { + return PHPExcel_Calculation_Functions::NaN(); + } + if ((is_numeric($cumulative)) || (is_bool($cumulative))) { + if ($cumulative) { + return 1 - exp(0 - pow($value / $beta, $alpha)); + } else { + return ($alpha / pow($beta, $alpha)) * pow($value, $alpha - 1) * exp(0 - pow($value / $beta, $alpha)); + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * ZTEST + * + * Returns the Weibull distribution. Use this distribution in reliability + * analysis, such as calculating a device's mean time to failure. + * + * @param float $dataSet + * @param float $m0 Alpha Parameter + * @param float $sigma Beta Parameter + * @param boolean $cumulative + * @return float + * + */ + public static function ZTEST($dataSet, $m0, $sigma = null) + { + $dataSet = PHPExcel_Calculation_Functions::flattenArrayIndexed($dataSet); + $m0 = PHPExcel_Calculation_Functions::flattenSingleValue($m0); + $sigma = PHPExcel_Calculation_Functions::flattenSingleValue($sigma); + + if (is_null($sigma)) { + $sigma = self::STDEV($dataSet); + } + $n = count($dataSet); + + return 1 - self::NORMSDIST((self::AVERAGE($dataSet) - $m0) / ($sigma / SQRT($n))); + } +} diff --git a/assets/excel/PHPExcel/Calculation/TextData.php b/assets/excel/PHPExcel/Calculation/TextData.php new file mode 100644 index 0000000..6461d06 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/TextData.php @@ -0,0 +1,651 @@ +=0 && ord($c{0}) <= 127) { + return ord($c{0}); + } elseif (ord($c{0}) >= 192 && ord($c{0}) <= 223) { + return (ord($c{0})-192)*64 + (ord($c{1})-128); + } elseif (ord($c{0}) >= 224 && ord($c{0}) <= 239) { + return (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); + } elseif (ord($c{0}) >= 240 && ord($c{0}) <= 247) { + return (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); + } elseif (ord($c{0}) >= 248 && ord($c{0}) <= 251) { + return (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); + } elseif (ord($c{0}) >= 252 && ord($c{0}) <= 253) { + return (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); + } elseif (ord($c{0}) >= 254 && ord($c{0}) <= 255) { + // error + return PHPExcel_Calculation_Functions::VALUE(); + } + return 0; + } + + /** + * CHARACTER + * + * @param string $character Value + * @return int + */ + public static function CHARACTER($character) + { + $character = PHPExcel_Calculation_Functions::flattenSingleValue($character); + + if ((!is_numeric($character)) || ($character < 0)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (function_exists('mb_convert_encoding')) { + return mb_convert_encoding('&#'.intval($character).';', 'UTF-8', 'HTML-ENTITIES'); + } else { + return chr(intval($character)); + } + } + + + /** + * TRIMNONPRINTABLE + * + * @param mixed $stringValue Value to check + * @return string + */ + public static function TRIMNONPRINTABLE($stringValue = '') + { + $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue); + + if (is_bool($stringValue)) { + return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (self::$invalidChars == null) { + self::$invalidChars = range(chr(0), chr(31)); + } + + if (is_string($stringValue) || is_numeric($stringValue)) { + return str_replace(self::$invalidChars, '', trim($stringValue, "\x00..\x1F")); + } + return null; + } + + + /** + * TRIMSPACES + * + * @param mixed $stringValue Value to check + * @return string + */ + public static function TRIMSPACES($stringValue = '') + { + $stringValue = PHPExcel_Calculation_Functions::flattenSingleValue($stringValue); + if (is_bool($stringValue)) { + return ($stringValue) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (is_string($stringValue) || is_numeric($stringValue)) { + return trim(preg_replace('/ +/', ' ', trim($stringValue, ' ')), ' '); + } + return null; + } + + + /** + * ASCIICODE + * + * @param string $characters Value + * @return int + */ + public static function ASCIICODE($characters) + { + if (($characters === null) || ($characters === '')) { + return PHPExcel_Calculation_Functions::VALUE(); + } + $characters = PHPExcel_Calculation_Functions::flattenSingleValue($characters); + if (is_bool($characters)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $characters = (int) $characters; + } else { + $characters = ($characters) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + } + + $character = $characters; + if ((function_exists('mb_strlen')) && (function_exists('mb_substr'))) { + if (mb_strlen($characters, 'UTF-8') > 1) { + $character = mb_substr($characters, 0, 1, 'UTF-8'); + } + return self::unicodeToOrd($character); + } else { + if (strlen($characters) > 0) { + $character = substr($characters, 0, 1); + } + return ord($character); + } + } + + + /** + * CONCATENATE + * + * @return string + */ + public static function CONCATENATE() + { + $returnValue = ''; + + // Loop through arguments + $aArgs = PHPExcel_Calculation_Functions::flattenArray(func_get_args()); + foreach ($aArgs as $arg) { + if (is_bool($arg)) { + if (PHPExcel_Calculation_Functions::getCompatibilityMode() == PHPExcel_Calculation_Functions::COMPATIBILITY_OPENOFFICE) { + $arg = (int) $arg; + } else { + $arg = ($arg) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + } + $returnValue .= $arg; + } + + return $returnValue; + } + + + /** + * DOLLAR + * + * This function converts a number to text using currency format, with the decimals rounded to the specified place. + * The format used is $#,##0.00_);($#,##0.00).. + * + * @param float $value The value to format + * @param int $decimals The number of digits to display to the right of the decimal point. + * If decimals is negative, number is rounded to the left of the decimal point. + * If you omit decimals, it is assumed to be 2 + * @return string + */ + public static function DOLLAR($value = 0, $decimals = 2) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $decimals = is_null($decimals) ? 0 : PHPExcel_Calculation_Functions::flattenSingleValue($decimals); + + // Validate parameters + if (!is_numeric($value) || !is_numeric($decimals)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $decimals = floor($decimals); + + $mask = '$#,##0'; + if ($decimals > 0) { + $mask .= '.' . str_repeat('0', $decimals); + } else { + $round = pow(10, abs($decimals)); + if ($value < 0) { + $round = 0-$round; + } + $value = PHPExcel_Calculation_MathTrig::MROUND($value, $round); + } + + return PHPExcel_Style_NumberFormat::toFormattedString($value, $mask); + + } + + + /** + * SEARCHSENSITIVE + * + * @param string $needle The string to look for + * @param string $haystack The string in which to look + * @param int $offset Offset within $haystack + * @return string + */ + public static function SEARCHSENSITIVE($needle, $haystack, $offset = 1) + { + $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle); + $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack); + $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset); + + if (!is_bool($needle)) { + if (is_bool($haystack)) { + $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) { + if (PHPExcel_Shared_String::CountCharacters($needle) == 0) { + return $offset; + } + if (function_exists('mb_strpos')) { + $pos = mb_strpos($haystack, $needle, --$offset, 'UTF-8'); + } else { + $pos = strpos($haystack, $needle, --$offset); + } + if ($pos !== false) { + return ++$pos; + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * SEARCHINSENSITIVE + * + * @param string $needle The string to look for + * @param string $haystack The string in which to look + * @param int $offset Offset within $haystack + * @return string + */ + public static function SEARCHINSENSITIVE($needle, $haystack, $offset = 1) + { + $needle = PHPExcel_Calculation_Functions::flattenSingleValue($needle); + $haystack = PHPExcel_Calculation_Functions::flattenSingleValue($haystack); + $offset = PHPExcel_Calculation_Functions::flattenSingleValue($offset); + + if (!is_bool($needle)) { + if (is_bool($haystack)) { + $haystack = ($haystack) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (($offset > 0) && (PHPExcel_Shared_String::CountCharacters($haystack) > $offset)) { + if (PHPExcel_Shared_String::CountCharacters($needle) == 0) { + return $offset; + } + if (function_exists('mb_stripos')) { + $pos = mb_stripos($haystack, $needle, --$offset, 'UTF-8'); + } else { + $pos = stripos($haystack, $needle, --$offset); + } + if ($pos !== false) { + return ++$pos; + } + } + } + return PHPExcel_Calculation_Functions::VALUE(); + } + + + /** + * FIXEDFORMAT + * + * @param mixed $value Value to check + * @param integer $decimals + * @param boolean $no_commas + * @return boolean + */ + public static function FIXEDFORMAT($value, $decimals = 2, $no_commas = false) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $decimals = PHPExcel_Calculation_Functions::flattenSingleValue($decimals); + $no_commas = PHPExcel_Calculation_Functions::flattenSingleValue($no_commas); + + // Validate parameters + if (!is_numeric($value) || !is_numeric($decimals)) { + return PHPExcel_Calculation_Functions::NaN(); + } + $decimals = floor($decimals); + + $valueResult = round($value, $decimals); + if ($decimals < 0) { + $decimals = 0; + } + if (!$no_commas) { + $valueResult = number_format($valueResult, $decimals); + } + + return (string) $valueResult; + } + + + /** + * LEFT + * + * @param string $value Value + * @param int $chars Number of characters + * @return string + */ + public static function LEFT($value = '', $chars = 1) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); + + if ($chars < 0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (is_bool($value)) { + $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (function_exists('mb_substr')) { + return mb_substr($value, 0, $chars, 'UTF-8'); + } else { + return substr($value, 0, $chars); + } + } + + + /** + * MID + * + * @param string $value Value + * @param int $start Start character + * @param int $chars Number of characters + * @return string + */ + public static function MID($value = '', $start = 1, $chars = null) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $start = PHPExcel_Calculation_Functions::flattenSingleValue($start); + $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); + + if (($start < 1) || ($chars < 0)) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (is_bool($value)) { + $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (function_exists('mb_substr')) { + return mb_substr($value, --$start, $chars, 'UTF-8'); + } else { + return substr($value, --$start, $chars); + } + } + + + /** + * RIGHT + * + * @param string $value Value + * @param int $chars Number of characters + * @return string + */ + public static function RIGHT($value = '', $chars = 1) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); + + if ($chars < 0) { + return PHPExcel_Calculation_Functions::VALUE(); + } + + if (is_bool($value)) { + $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if ((function_exists('mb_substr')) && (function_exists('mb_strlen'))) { + return mb_substr($value, mb_strlen($value, 'UTF-8') - $chars, $chars, 'UTF-8'); + } else { + return substr($value, strlen($value) - $chars); + } + } + + + /** + * STRINGLENGTH + * + * @param string $value Value + * @return string + */ + public static function STRINGLENGTH($value = '') + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + if (is_bool($value)) { + $value = ($value) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + if (function_exists('mb_strlen')) { + return mb_strlen($value, 'UTF-8'); + } else { + return strlen($value); + } + } + + + /** + * LOWERCASE + * + * Converts a string value to upper case. + * + * @param string $mixedCaseString + * @return string + */ + public static function LOWERCASE($mixedCaseString) + { + $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); + + if (is_bool($mixedCaseString)) { + $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + return PHPExcel_Shared_String::StrToLower($mixedCaseString); + } + + + /** + * UPPERCASE + * + * Converts a string value to upper case. + * + * @param string $mixedCaseString + * @return string + */ + public static function UPPERCASE($mixedCaseString) + { + $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); + + if (is_bool($mixedCaseString)) { + $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + return PHPExcel_Shared_String::StrToUpper($mixedCaseString); + } + + + /** + * PROPERCASE + * + * Converts a string value to upper case. + * + * @param string $mixedCaseString + * @return string + */ + public static function PROPERCASE($mixedCaseString) + { + $mixedCaseString = PHPExcel_Calculation_Functions::flattenSingleValue($mixedCaseString); + + if (is_bool($mixedCaseString)) { + $mixedCaseString = ($mixedCaseString) ? PHPExcel_Calculation::getTRUE() : PHPExcel_Calculation::getFALSE(); + } + + return PHPExcel_Shared_String::StrToTitle($mixedCaseString); + } + + + /** + * REPLACE + * + * @param string $oldText String to modify + * @param int $start Start character + * @param int $chars Number of characters + * @param string $newText String to replace in defined position + * @return string + */ + public static function REPLACE($oldText = '', $start = 1, $chars = null, $newText) + { + $oldText = PHPExcel_Calculation_Functions::flattenSingleValue($oldText); + $start = PHPExcel_Calculation_Functions::flattenSingleValue($start); + $chars = PHPExcel_Calculation_Functions::flattenSingleValue($chars); + $newText = PHPExcel_Calculation_Functions::flattenSingleValue($newText); + + $left = self::LEFT($oldText, $start-1); + $right = self::RIGHT($oldText, self::STRINGLENGTH($oldText)-($start+$chars)+1); + + return $left.$newText.$right; + } + + + /** + * SUBSTITUTE + * + * @param string $text Value + * @param string $fromText From Value + * @param string $toText To Value + * @param integer $instance Instance Number + * @return string + */ + public static function SUBSTITUTE($text = '', $fromText = '', $toText = '', $instance = 0) + { + $text = PHPExcel_Calculation_Functions::flattenSingleValue($text); + $fromText = PHPExcel_Calculation_Functions::flattenSingleValue($fromText); + $toText = PHPExcel_Calculation_Functions::flattenSingleValue($toText); + $instance = floor(PHPExcel_Calculation_Functions::flattenSingleValue($instance)); + + if ($instance == 0) { + if (function_exists('mb_str_replace')) { + return mb_str_replace($fromText, $toText, $text); + } else { + return str_replace($fromText, $toText, $text); + } + } else { + $pos = -1; + while ($instance > 0) { + if (function_exists('mb_strpos')) { + $pos = mb_strpos($text, $fromText, $pos+1, 'UTF-8'); + } else { + $pos = strpos($text, $fromText, $pos+1); + } + if ($pos === false) { + break; + } + --$instance; + } + if ($pos !== false) { + if (function_exists('mb_strlen')) { + return self::REPLACE($text, ++$pos, mb_strlen($fromText, 'UTF-8'), $toText); + } else { + return self::REPLACE($text, ++$pos, strlen($fromText), $toText); + } + } + } + + return $text; + } + + + /** + * RETURNSTRING + * + * @param mixed $testValue Value to check + * @return boolean + */ + public static function RETURNSTRING($testValue = '') + { + $testValue = PHPExcel_Calculation_Functions::flattenSingleValue($testValue); + + if (is_string($testValue)) { + return $testValue; + } + return null; + } + + + /** + * TEXTFORMAT + * + * @param mixed $value Value to check + * @param string $format Format mask to use + * @return boolean + */ + public static function TEXTFORMAT($value, $format) + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + $format = PHPExcel_Calculation_Functions::flattenSingleValue($format); + + if ((is_string($value)) && (!is_numeric($value)) && PHPExcel_Shared_Date::isDateTimeFormatCode($format)) { + $value = PHPExcel_Calculation_DateTime::DATEVALUE($value); + } + + return (string) PHPExcel_Style_NumberFormat::toFormattedString($value, $format); + } + + /** + * VALUE + * + * @param mixed $value Value to check + * @return boolean + */ + public static function VALUE($value = '') + { + $value = PHPExcel_Calculation_Functions::flattenSingleValue($value); + + if (!is_numeric($value)) { + $numberValue = str_replace( + PHPExcel_Shared_String::getThousandsSeparator(), + '', + trim($value, " \t\n\r\0\x0B" . PHPExcel_Shared_String::getCurrencyCode()) + ); + if (is_numeric($numberValue)) { + return (float) $numberValue; + } + + $dateSetting = PHPExcel_Calculation_Functions::getReturnDateType(); + PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); + + if (strpos($value, ':') !== false) { + $timeValue = PHPExcel_Calculation_DateTime::TIMEVALUE($value); + if ($timeValue !== PHPExcel_Calculation_Functions::VALUE()) { + PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); + return $timeValue; + } + } + $dateValue = PHPExcel_Calculation_DateTime::DATEVALUE($value); + if ($dateValue !== PHPExcel_Calculation_Functions::VALUE()) { + PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); + return $dateValue; + } + PHPExcel_Calculation_Functions::setReturnDateType($dateSetting); + + return PHPExcel_Calculation_Functions::VALUE(); + } + return (float) $value; + } +} diff --git a/assets/excel/PHPExcel/Calculation/Token/Stack.php b/assets/excel/PHPExcel/Calculation/Token/Stack.php new file mode 100644 index 0000000..02ed5aa --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/Token/Stack.php @@ -0,0 +1,111 @@ +count; + } + + /** + * Push a new entry onto the stack + * + * @param mixed $type + * @param mixed $value + * @param mixed $reference + */ + public function push($type, $value, $reference = null) + { + $this->stack[$this->count++] = array( + 'type' => $type, + 'value' => $value, + 'reference' => $reference + ); + if ($type == 'Function') { + $localeFunction = PHPExcel_Calculation::localeFunc($value); + if ($localeFunction != $value) { + $this->stack[($this->count - 1)]['localeValue'] = $localeFunction; + } + } + } + + /** + * Pop the last entry from the stack + * + * @return mixed + */ + public function pop() + { + if ($this->count > 0) { + return $this->stack[--$this->count]; + } + return null; + } + + /** + * Return an entry from the stack without removing it + * + * @param integer $n number indicating how far back in the stack we want to look + * @return mixed + */ + public function last($n = 1) + { + if ($this->count - $n < 0) { + return null; + } + return $this->stack[$this->count - $n]; + } + + /** + * Clear the stack + */ + public function clear() + { + $this->stack = array(); + $this->count = 0; + } +} diff --git a/assets/excel/PHPExcel/Calculation/functionlist.txt b/assets/excel/PHPExcel/Calculation/functionlist.txt new file mode 100644 index 0000000..67dbd49 --- /dev/null +++ b/assets/excel/PHPExcel/Calculation/functionlist.txt @@ -0,0 +1,351 @@ +ABS +ACCRINT +ACCRINTM +ACOS +ACOSH +ADDRESS +AMORDEGRC +AMORLINC +AND +AREAS +ASC +ASIN +ASINH +ATAN +ATAN2 +ATANH +AVEDEV +AVERAGE +AVERAGEA +AVERAGEIF +AVERAGEIFS +BAHTTEXT +BESSELI +BESSELJ +BESSELK +BESSELY +BETADIST +BETAINV +BIN2DEC +BIN2HEX +BIN2OCT +BINOMDIST +CEILING +CELL +CHAR +CHIDIST +CHIINV +CHITEST +CHOOSE +CLEAN +CODE +COLUMN +COLUMNS +COMBIN +COMPLEX +CONCATENATE +CONFIDENCE +CONVERT +CORREL +COS +COSH +COUNT +COUNTA +COUNTBLANK +COUNTIF +COUNTIFS +COUPDAYBS +COUPDAYBS +COUPDAYSNC +COUPNCD +COUPNUM +COUPPCD +COVAR +CRITBINOM +CUBEKPIMEMBER +CUBEMEMBER +CUBEMEMBERPROPERTY +CUBERANKEDMEMBER +CUBESET +CUBESETCOUNT +CUBEVALUE +CUMIPMT +CUMPRINC +DATE +DATEDIF +DATEVALUE +DAVERAGE +DAY +DAYS360 +DB +DCOUNT +DCOUNTA +DDB +DEC2BIN +DEC2HEX +DEC2OCT +DEGREES +DELTA +DEVSQ +DGET +DISC +DMAX +DMIN +DOLLAR +DOLLARDE +DOLLARFR +DPRODUCT +DSTDEV +DSTDEVP +DSUM +DURATION +DVAR +DVARP +EDATE +EFFECT +EOMONTH +ERF +ERFC +ERROR.TYPE +EVEN +EXACT +EXP +EXPONDIST +FACT +FACTDOUBLE +FALSE +FDIST +FIND +FINDB +FINV +FISHER +FISHERINV +FIXED +FLOOR +FORECAST +FREQUENCY +FTEST +FV +FVSCHEDULE +GAMAMDIST +GAMMAINV +GAMMALN +GCD +GEOMEAN +GESTEP +GETPIVOTDATA +GROWTH +HARMEAN +HEX2BIN +HEX2OCT +HLOOKUP +HOUR +HYPERLINK +HYPGEOMDIST +IF +IFERROR +IMABS +IMAGINARY +IMARGUMENT +IMCONJUGATE +IMCOS +IMEXP +IMLN +IMLOG10 +IMLOG2 +IMPOWER +IMPRODUCT +IMREAL +IMSIN +IMSQRT +IMSUB +IMSUM +INDEX +INDIRECT +INFO +INT +INTERCEPT +INTRATE +IPMT +IRR +ISBLANK +ISERR +ISERROR +ISEVEN +ISLOGICAL +ISNA +ISNONTEXT +ISNUMBER +ISODD +ISPMT +ISREF +ISTEXT +JIS +KURT +LARGE +LCM +LEFT +LEFTB +LEN +LENB +LINEST +LN +LOG +LOG10 +LOGEST +LOGINV +LOGNORMDIST +LOOKUP +LOWER +MATCH +MAX +MAXA +MDETERM +MDURATION +MEDIAN +MID +MIDB +MIN +MINA +MINUTE +MINVERSE +MIRR +MMULT +MOD +MODE +MONTH +MROUND +MULTINOMIAL +N +NA +NEGBINOMDIST +NETWORKDAYS +NOMINAL +NORMDIST +NORMINV +NORMSDIST +NORMSINV +NOT +NOW +NPER +NPV +OCT2BIN +OCT2DEC +OCT2HEX +ODD +ODDFPRICE +ODDFYIELD +ODDLPRICE +ODDLYIELD +OFFSET +OR +PEARSON +PERCENTILE +PERCENTRANK +PERMUT +PHONETIC +PI +PMT +POISSON +POWER +PPMT +PRICE +PRICEDISC +PRICEMAT +PROB +PRODUCT +PROPER +PV +QUARTILE +QUOTIENT +RADIANS +RAND +RANDBETWEEN +RANK +RATE +RECEIVED +REPLACE +REPLACEB +REPT +RIGHT +RIGHTB +ROMAN +ROUND +ROUNDDOWN +ROUNDUP +ROW +ROWS +RSQ +RTD +SEARCH +SEARCHB +SECOND +SERIESSUM +SIGN +SIN +SINH +SKEW +SLN +SLOPE +SMALL +SQRT +SQRTPI +STANDARDIZE +STDEV +STDEVA +STDEVP +STDEVPA +STEYX +SUBSTITUTE +SUBTOTAL +SUM +SUMIF +SUMIFS +SUMPRODUCT +SUMSQ +SUMX2MY2 +SUMX2PY2 +SUMXMY2 +SYD +T +TAN +TANH +TBILLEQ +TBILLPRICE +TBILLYIELD +TDIST +TEXT +TIME +TIMEVALUE +TINV +TODAY +TRANSPOSE +TREND +TRIM +TRIMMEAN +TRUE +TRUNC +TTEST +TYPE +UPPER +USDOLLAR +VALUE +VAR +VARA +VARP +VARPA +VDB +VERSION +VLOOKUP +WEEKDAY +WEEKNUM +WEIBULL +WORKDAY +XIRR +XNPV +YEAR +YEARFRAC +YIELD +YIELDDISC +YIELDMAT +ZTEST diff --git a/assets/excel/PHPExcel/Cell.php b/assets/excel/PHPExcel/Cell.php new file mode 100644 index 0000000..c99a3c8 --- /dev/null +++ b/assets/excel/PHPExcel/Cell.php @@ -0,0 +1,1032 @@ +parent->updateCacheData($this); + + return $this; + } + + public function detach() + { + $this->parent = null; + } + + public function attach(PHPExcel_CachedObjectStorage_CacheBase $parent) + { + $this->parent = $parent; + } + + + /** + * Create a new Cell + * + * @param mixed $pValue + * @param string $pDataType + * @param PHPExcel_Worksheet $pSheet + * @throws PHPExcel_Exception + */ + public function __construct($pValue = null, $pDataType = null, PHPExcel_Worksheet $pSheet = null) + { + // Initialise cell value + $this->value = $pValue; + + // Set worksheet cache + $this->parent = $pSheet->getCellCacheController(); + + // Set datatype? + if ($pDataType !== null) { + if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2) { + $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; + } + $this->dataType = $pDataType; + } elseif (!self::getValueBinder()->bindValue($this, $pValue)) { + throw new PHPExcel_Exception("Value could not be bound to cell."); + } + } + + /** + * Get cell coordinate column + * + * @return string + */ + public function getColumn() + { + return $this->parent->getCurrentColumn(); + } + + /** + * Get cell coordinate row + * + * @return int + */ + public function getRow() + { + return $this->parent->getCurrentRow(); + } + + /** + * Get cell coordinate + * + * @return string + */ + public function getCoordinate() + { + return $this->parent->getCurrentAddress(); + } + + /** + * Get cell value + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Get cell value with formatting + * + * @return string + */ + public function getFormattedValue() + { + return (string) PHPExcel_Style_NumberFormat::toFormattedString( + $this->getCalculatedValue(), + $this->getStyle() + ->getNumberFormat()->getFormatCode() + ); + } + + /** + * Set cell value + * + * Sets the value for a cell, automatically determining the datatype using the value binder + * + * @param mixed $pValue Value + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function setValue($pValue = null) + { + if (!self::getValueBinder()->bindValue($this, $pValue)) { + throw new PHPExcel_Exception("Value could not be bound to cell."); + } + return $this; + } + + /** + * Set the value for a cell, with the explicit data type passed to the method (bypassing any use of the value binder) + * + * @param mixed $pValue Value + * @param string $pDataType Explicit data type + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function setValueExplicit($pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING) + { + // set the value according to data type + switch ($pDataType) { + case PHPExcel_Cell_DataType::TYPE_NULL: + $this->value = $pValue; + break; + case PHPExcel_Cell_DataType::TYPE_STRING2: + $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; + // no break + case PHPExcel_Cell_DataType::TYPE_STRING: + // Synonym for string + case PHPExcel_Cell_DataType::TYPE_INLINE: + // Rich text + $this->value = PHPExcel_Cell_DataType::checkString($pValue); + break; + case PHPExcel_Cell_DataType::TYPE_NUMERIC: + $this->value = (float) $pValue; + break; + case PHPExcel_Cell_DataType::TYPE_FORMULA: + $this->value = (string) $pValue; + break; + case PHPExcel_Cell_DataType::TYPE_BOOL: + $this->value = (bool) $pValue; + break; + case PHPExcel_Cell_DataType::TYPE_ERROR: + $this->value = PHPExcel_Cell_DataType::checkErrorCode($pValue); + break; + default: + throw new PHPExcel_Exception('Invalid datatype: ' . $pDataType); + break; + } + + // set the datatype + $this->dataType = $pDataType; + + return $this->notifyCacheController(); + } + + /** + * Get calculated cell value + * + * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling + * + * @param boolean $resetLog Whether the calculation engine logger should be reset or not + * @return mixed + * @throws PHPExcel_Exception + */ + public function getCalculatedValue($resetLog = true) + { +//echo 'Cell '.$this->getCoordinate().' value is a '.$this->dataType.' with a value of '.$this->getValue().PHP_EOL; + if ($this->dataType == PHPExcel_Cell_DataType::TYPE_FORMULA) { + try { +//echo 'Cell value for '.$this->getCoordinate().' is a formula: Calculating value'.PHP_EOL; + $result = PHPExcel_Calculation::getInstance( + $this->getWorksheet()->getParent() + )->calculateCellValue($this, $resetLog); +//echo $this->getCoordinate().' calculation result is '.$result.PHP_EOL; + // We don't yet handle array returns + if (is_array($result)) { + while (is_array($result)) { + $result = array_pop($result); + } + } + } catch (PHPExcel_Exception $ex) { + if (($ex->getMessage() === 'Unable to access External Workbook') && ($this->calculatedValue !== null)) { +//echo 'Returning fallback value of '.$this->calculatedValue.' for cell '.$this->getCoordinate().PHP_EOL; + return $this->calculatedValue; // Fallback for calculations referencing external files. + } +//echo 'Calculation Exception: '.$ex->getMessage().PHP_EOL; + $result = '#N/A'; + throw new PHPExcel_Calculation_Exception( + $this->getWorksheet()->getTitle().'!'.$this->getCoordinate().' -> '.$ex->getMessage() + ); + } + + if ($result === '#Not Yet Implemented') { +//echo 'Returning fallback value of '.$this->calculatedValue.' for cell '.$this->getCoordinate().PHP_EOL; + return $this->calculatedValue; // Fallback if calculation engine does not support the formula. + } +//echo 'Returning calculated value of '.$result.' for cell '.$this->getCoordinate().PHP_EOL; + return $result; + } elseif ($this->value instanceof PHPExcel_RichText) { +// echo 'Cell value for '.$this->getCoordinate().' is rich text: Returning data value of '.$this->value.'
      '; + return $this->value->getPlainText(); + } +// echo 'Cell value for '.$this->getCoordinate().' is not a formula: Returning data value of '.$this->value.'
      '; + return $this->value; + } + + /** + * Set old calculated value (cached) + * + * @param mixed $pValue Value + * @return PHPExcel_Cell + */ + public function setCalculatedValue($pValue = null) + { + if ($pValue !== null) { + $this->calculatedValue = (is_numeric($pValue)) ? (float) $pValue : $pValue; + } + + return $this->notifyCacheController(); + } + + /** + * Get old calculated value (cached) + * This returns the value last calculated by MS Excel or whichever spreadsheet program was used to + * create the original spreadsheet file. + * Note that this value is not guaranteed to refelect the actual calculated value because it is + * possible that auto-calculation was disabled in the original spreadsheet, and underlying data + * values used by the formula have changed since it was last calculated. + * + * @return mixed + */ + public function getOldCalculatedValue() + { + return $this->calculatedValue; + } + + /** + * Get cell data type + * + * @return string + */ + public function getDataType() + { + return $this->dataType; + } + + /** + * Set cell data type + * + * @param string $pDataType + * @return PHPExcel_Cell + */ + public function setDataType($pDataType = PHPExcel_Cell_DataType::TYPE_STRING) + { + if ($pDataType == PHPExcel_Cell_DataType::TYPE_STRING2) { + $pDataType = PHPExcel_Cell_DataType::TYPE_STRING; + } + $this->dataType = $pDataType; + + return $this->notifyCacheController(); + } + + /** + * Identify if the cell contains a formula + * + * @return boolean + */ + public function isFormula() + { + return $this->dataType == PHPExcel_Cell_DataType::TYPE_FORMULA; + } + + /** + * Does this cell contain Data validation rules? + * + * @return boolean + * @throws PHPExcel_Exception + */ + public function hasDataValidation() + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot check for data validation when cell is not bound to a worksheet'); + } + + return $this->getWorksheet()->dataValidationExists($this->getCoordinate()); + } + + /** + * Get Data validation rules + * + * @return PHPExcel_Cell_DataValidation + * @throws PHPExcel_Exception + */ + public function getDataValidation() + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot get data validation for cell that is not bound to a worksheet'); + } + + return $this->getWorksheet()->getDataValidation($this->getCoordinate()); + } + + /** + * Set Data validation rules + * + * @param PHPExcel_Cell_DataValidation $pDataValidation + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function setDataValidation(PHPExcel_Cell_DataValidation $pDataValidation = null) + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot set data validation for cell that is not bound to a worksheet'); + } + + $this->getWorksheet()->setDataValidation($this->getCoordinate(), $pDataValidation); + + return $this->notifyCacheController(); + } + + /** + * Does this cell contain a Hyperlink? + * + * @return boolean + * @throws PHPExcel_Exception + */ + public function hasHyperlink() + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot check for hyperlink when cell is not bound to a worksheet'); + } + + return $this->getWorksheet()->hyperlinkExists($this->getCoordinate()); + } + + /** + * Get Hyperlink + * + * @return PHPExcel_Cell_Hyperlink + * @throws PHPExcel_Exception + */ + public function getHyperlink() + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot get hyperlink for cell that is not bound to a worksheet'); + } + + return $this->getWorksheet()->getHyperlink($this->getCoordinate()); + } + + /** + * Set Hyperlink + * + * @param PHPExcel_Cell_Hyperlink $pHyperlink + * @return PHPExcel_Cell + * @throws PHPExcel_Exception + */ + public function setHyperlink(PHPExcel_Cell_Hyperlink $pHyperlink = null) + { + if (!isset($this->parent)) { + throw new PHPExcel_Exception('Cannot set hyperlink for cell that is not bound to a worksheet'); + } + + $this->getWorksheet()->setHyperlink($this->getCoordinate(), $pHyperlink); + + return $this->notifyCacheController(); + } + + /** + * Get parent worksheet + * + * @return PHPExcel_CachedObjectStorage_CacheBase + */ + public function getParent() + { + return $this->parent; + } + + /** + * Get parent worksheet + * + * @return PHPExcel_Worksheet + */ + public function getWorksheet() + { + return $this->parent->getParent(); + } + + /** + * Is this cell in a merge range + * + * @return boolean + */ + public function isInMergeRange() + { + return (boolean) $this->getMergeRange(); + } + + /** + * Is this cell the master (top left cell) in a merge range (that holds the actual data value) + * + * @return boolean + */ + public function isMergeRangeValueCell() + { + if ($mergeRange = $this->getMergeRange()) { + $mergeRange = PHPExcel_Cell::splitRange($mergeRange); + list($startCell) = $mergeRange[0]; + if ($this->getCoordinate() === $startCell) { + return true; + } + } + return false; + } + + /** + * If this cell is in a merge range, then return the range + * + * @return string + */ + public function getMergeRange() + { + foreach ($this->getWorksheet()->getMergeCells() as $mergeRange) { + if ($this->isInRange($mergeRange)) { + return $mergeRange; + } + } + return false; + } + + /** + * Get cell style + * + * @return PHPExcel_Style + */ + public function getStyle() + { + return $this->getWorksheet()->getStyle($this->getCoordinate()); + } + + /** + * Re-bind parent + * + * @param PHPExcel_Worksheet $parent + * @return PHPExcel_Cell + */ + public function rebindParent(PHPExcel_Worksheet $parent) + { + $this->parent = $parent->getCellCacheController(); + + return $this->notifyCacheController(); + } + + /** + * Is cell in a specific range? + * + * @param string $pRange Cell range (e.g. A1:A1) + * @return boolean + */ + public function isInRange($pRange = 'A1:A1') + { + list($rangeStart, $rangeEnd) = self::rangeBoundaries($pRange); + + // Translate properties + $myColumn = self::columnIndexFromString($this->getColumn()); + $myRow = $this->getRow(); + + // Verify if cell is in range + return (($rangeStart[0] <= $myColumn) && ($rangeEnd[0] >= $myColumn) && + ($rangeStart[1] <= $myRow) && ($rangeEnd[1] >= $myRow) + ); + } + + /** + * Coordinate from string + * + * @param string $pCoordinateString + * @return array Array containing column and row (indexes 0 and 1) + * @throws PHPExcel_Exception + */ + public static function coordinateFromString($pCoordinateString = 'A1') + { + if (preg_match("/^([$]?[A-Z]{1,3})([$]?\d{1,7})$/", $pCoordinateString, $matches)) { + return array($matches[1],$matches[2]); + } elseif ((strpos($pCoordinateString, ':') !== false) || (strpos($pCoordinateString, ',') !== false)) { + throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); + } elseif ($pCoordinateString == '') { + throw new PHPExcel_Exception('Cell coordinate can not be zero-length string'); + } + + throw new PHPExcel_Exception('Invalid cell coordinate '.$pCoordinateString); + } + + /** + * Make string row, column or cell coordinate absolute + * + * @param string $pCoordinateString e.g. 'A' or '1' or 'A1' + * Note that this value can be a row or column reference as well as a cell reference + * @return string Absolute coordinate e.g. '$A' or '$1' or '$A$1' + * @throws PHPExcel_Exception + */ + public static function absoluteReference($pCoordinateString = 'A1') + { + if (strpos($pCoordinateString, ':') === false && strpos($pCoordinateString, ',') === false) { + // Split out any worksheet name from the reference + $worksheet = ''; + $cellAddress = explode('!', $pCoordinateString); + if (count($cellAddress) > 1) { + list($worksheet, $pCoordinateString) = $cellAddress; + } + if ($worksheet > '') { + $worksheet .= '!'; + } + + // Create absolute coordinate + if (ctype_digit($pCoordinateString)) { + return $worksheet . '$' . $pCoordinateString; + } elseif (ctype_alpha($pCoordinateString)) { + return $worksheet . '$' . strtoupper($pCoordinateString); + } + return $worksheet . self::absoluteCoordinate($pCoordinateString); + } + + throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); + } + + /** + * Make string coordinate absolute + * + * @param string $pCoordinateString e.g. 'A1' + * @return string Absolute coordinate e.g. '$A$1' + * @throws PHPExcel_Exception + */ + public static function absoluteCoordinate($pCoordinateString = 'A1') + { + if (strpos($pCoordinateString, ':') === false && strpos($pCoordinateString, ',') === false) { + // Split out any worksheet name from the coordinate + $worksheet = ''; + $cellAddress = explode('!', $pCoordinateString); + if (count($cellAddress) > 1) { + list($worksheet, $pCoordinateString) = $cellAddress; + } + if ($worksheet > '') { + $worksheet .= '!'; + } + + // Create absolute coordinate + list($column, $row) = self::coordinateFromString($pCoordinateString); + $column = ltrim($column, '$'); + $row = ltrim($row, '$'); + return $worksheet . '$' . $column . '$' . $row; + } + + throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells'); + } + + /** + * Split range into coordinate strings + * + * @param string $pRange e.g. 'B4:D9' or 'B4:D9,H2:O11' or 'B4' + * @return array Array containg one or more arrays containing one or two coordinate strings + * e.g. array('B4','D9') or array(array('B4','D9'),array('H2','O11')) + * or array('B4') + */ + public static function splitRange($pRange = 'A1:A1') + { + // Ensure $pRange is a valid range + if (empty($pRange)) { + $pRange = self::DEFAULT_RANGE; + } + + $exploded = explode(',', $pRange); + $counter = count($exploded); + for ($i = 0; $i < $counter; ++$i) { + $exploded[$i] = explode(':', $exploded[$i]); + } + return $exploded; + } + + /** + * Build range from coordinate strings + * + * @param array $pRange Array containg one or more arrays containing one or two coordinate strings + * @return string String representation of $pRange + * @throws PHPExcel_Exception + */ + public static function buildRange($pRange) + { + // Verify range + if (!is_array($pRange) || empty($pRange) || !is_array($pRange[0])) { + throw new PHPExcel_Exception('Range does not contain any information'); + } + + // Build range + $imploded = array(); + $counter = count($pRange); + for ($i = 0; $i < $counter; ++$i) { + $pRange[$i] = implode(':', $pRange[$i]); + } + $imploded = implode(',', $pRange); + + return $imploded; + } + + /** + * Calculate range boundaries + * + * @param string $pRange Cell range (e.g. A1:A1) + * @return array Range coordinates array(Start Cell, End Cell) + * where Start Cell and End Cell are arrays (Column Number, Row Number) + */ + public static function rangeBoundaries($pRange = 'A1:A1') + { + // Ensure $pRange is a valid range + if (empty($pRange)) { + $pRange = self::DEFAULT_RANGE; + } + + // Uppercase coordinate + $pRange = strtoupper($pRange); + + // Extract range + if (strpos($pRange, ':') === false) { + $rangeA = $rangeB = $pRange; + } else { + list($rangeA, $rangeB) = explode(':', $pRange); + } + + // Calculate range outer borders + $rangeStart = self::coordinateFromString($rangeA); + $rangeEnd = self::coordinateFromString($rangeB); + + // Translate column into index + $rangeStart[0] = self::columnIndexFromString($rangeStart[0]); + $rangeEnd[0] = self::columnIndexFromString($rangeEnd[0]); + + return array($rangeStart, $rangeEnd); + } + + /** + * Calculate range dimension + * + * @param string $pRange Cell range (e.g. A1:A1) + * @return array Range dimension (width, height) + */ + public static function rangeDimension($pRange = 'A1:A1') + { + // Calculate range outer borders + list($rangeStart, $rangeEnd) = self::rangeBoundaries($pRange); + + return array( ($rangeEnd[0] - $rangeStart[0] + 1), ($rangeEnd[1] - $rangeStart[1] + 1) ); + } + + /** + * Calculate range boundaries + * + * @param string $pRange Cell range (e.g. A1:A1) + * @return array Range coordinates array(Start Cell, End Cell) + * where Start Cell and End Cell are arrays (Column ID, Row Number) + */ + public static function getRangeBoundaries($pRange = 'A1:A1') + { + // Ensure $pRange is a valid range + if (empty($pRange)) { + $pRange = self::DEFAULT_RANGE; + } + + // Uppercase coordinate + $pRange = strtoupper($pRange); + + // Extract range + if (strpos($pRange, ':') === false) { + $rangeA = $rangeB = $pRange; + } else { + list($rangeA, $rangeB) = explode(':', $pRange); + } + + return array( self::coordinateFromString($rangeA), self::coordinateFromString($rangeB)); + } + + /** + * Column index from string + * + * @param string $pString + * @return int Column index (base 1 !!!) + */ + public static function columnIndexFromString($pString = 'A') + { + // Using a lookup cache adds a slight memory overhead, but boosts speed + // caching using a static within the method is faster than a class static, + // though it's additional memory overhead + static $_indexCache = array(); + + if (isset($_indexCache[$pString])) { + return $_indexCache[$pString]; + } + // It's surprising how costly the strtoupper() and ord() calls actually are, so we use a lookup array rather than use ord() + // and make it case insensitive to get rid of the strtoupper() as well. Because it's a static, there's no significant + // memory overhead either + static $_columnLookup = array( + 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8, 'I' => 9, 'J' => 10, 'K' => 11, 'L' => 12, 'M' => 13, + 'N' => 14, 'O' => 15, 'P' => 16, 'Q' => 17, 'R' => 18, 'S' => 19, 'T' => 20, 'U' => 21, 'V' => 22, 'W' => 23, 'X' => 24, 'Y' => 25, 'Z' => 26, + 'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6, 'g' => 7, 'h' => 8, 'i' => 9, 'j' => 10, 'k' => 11, 'l' => 12, 'm' => 13, + 'n' => 14, 'o' => 15, 'p' => 16, 'q' => 17, 'r' => 18, 's' => 19, 't' => 20, 'u' => 21, 'v' => 22, 'w' => 23, 'x' => 24, 'y' => 25, 'z' => 26 + ); + + // We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString + // for improved performance + if (isset($pString{0})) { + if (!isset($pString{1})) { + $_indexCache[$pString] = $_columnLookup[$pString]; + return $_indexCache[$pString]; + } elseif (!isset($pString{2})) { + $_indexCache[$pString] = $_columnLookup[$pString{0}] * 26 + $_columnLookup[$pString{1}]; + return $_indexCache[$pString]; + } elseif (!isset($pString{3})) { + $_indexCache[$pString] = $_columnLookup[$pString{0}] * 676 + $_columnLookup[$pString{1}] * 26 + $_columnLookup[$pString{2}]; + return $_indexCache[$pString]; + } + } + throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString{0})) ? "longer than 3 characters" : "empty")); + } + + /** + * String from columnindex + * + * @param int $pColumnIndex Column index (base 0 !!!) + * @return string + */ + public static function stringFromColumnIndex($pColumnIndex = 0) + { + // Using a lookup cache adds a slight memory overhead, but boosts speed + // caching using a static within the method is faster than a class static, + // though it's additional memory overhead + static $_indexCache = array(); + + if (!isset($_indexCache[$pColumnIndex])) { + // Determine column string + if ($pColumnIndex < 26) { + $_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex); + } elseif ($pColumnIndex < 702) { + $_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) . + chr(65 + $pColumnIndex % 26); + } else { + $_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) . + chr(65 + ((($pColumnIndex - 26) % 676) / 26)) . + chr(65 + $pColumnIndex % 26); + } + } + return $_indexCache[$pColumnIndex]; + } + + /** + * Extract all cell references in range + * + * @param string $pRange Range (e.g. A1 or A1:C10 or A1:E10 A20:E25) + * @return array Array containing single cell references + */ + public static function extractAllCellReferencesInRange($pRange = 'A1') + { + // Returnvalue + $returnValue = array(); + + // Explode spaces + $cellBlocks = explode(' ', str_replace('$', '', strtoupper($pRange))); + foreach ($cellBlocks as $cellBlock) { + // Single cell? + if (strpos($cellBlock, ':') === false && strpos($cellBlock, ',') === false) { + $returnValue[] = $cellBlock; + continue; + } + + // Range... + $ranges = self::splitRange($cellBlock); + foreach ($ranges as $range) { + // Single cell? + if (!isset($range[1])) { + $returnValue[] = $range[0]; + continue; + } + + // Range... + list($rangeStart, $rangeEnd) = $range; + sscanf($rangeStart, '%[A-Z]%d', $startCol, $startRow); + sscanf($rangeEnd, '%[A-Z]%d', $endCol, $endRow); + ++$endCol; + + // Current data + $currentCol = $startCol; + $currentRow = $startRow; + + // Loop cells + while ($currentCol != $endCol) { + while ($currentRow <= $endRow) { + $returnValue[] = $currentCol.$currentRow; + ++$currentRow; + } + ++$currentCol; + $currentRow = $startRow; + } + } + } + + // Sort the result by column and row + $sortKeys = array(); + foreach (array_unique($returnValue) as $coord) { + sscanf($coord, '%[A-Z]%d', $column, $row); + $sortKeys[sprintf('%3s%09d', $column, $row)] = $coord; + } + ksort($sortKeys); + + // Return value + return array_values($sortKeys); + } + + /** + * Compare 2 cells + * + * @param PHPExcel_Cell $a Cell a + * @param PHPExcel_Cell $b Cell b + * @return int Result of comparison (always -1 or 1, never zero!) + */ + public static function compareCells(PHPExcel_Cell $a, PHPExcel_Cell $b) + { + if ($a->getRow() < $b->getRow()) { + return -1; + } elseif ($a->getRow() > $b->getRow()) { + return 1; + } elseif (self::columnIndexFromString($a->getColumn()) < self::columnIndexFromString($b->getColumn())) { + return -1; + } else { + return 1; + } + } + + /** + * Get value binder to use + * + * @return PHPExcel_Cell_IValueBinder + */ + public static function getValueBinder() + { + if (self::$valueBinder === null) { + self::$valueBinder = new PHPExcel_Cell_DefaultValueBinder(); + } + + return self::$valueBinder; + } + + /** + * Set value binder to use + * + * @param PHPExcel_Cell_IValueBinder $binder + * @throws PHPExcel_Exception + */ + public static function setValueBinder(PHPExcel_Cell_IValueBinder $binder = null) + { + if ($binder === null) { + throw new PHPExcel_Exception("A PHPExcel_Cell_IValueBinder is required for PHPExcel to function correctly."); + } + + self::$valueBinder = $binder; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if ((is_object($value)) && ($key != 'parent')) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } + + /** + * Get index to cellXf + * + * @return int + */ + public function getXfIndex() + { + return $this->xfIndex; + } + + /** + * Set index to cellXf + * + * @param int $pValue + * @return PHPExcel_Cell + */ + public function setXfIndex($pValue = 0) + { + $this->xfIndex = $pValue; + + return $this->notifyCacheController(); + } + + /** + * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling + */ + public function setFormulaAttributes($pAttributes) + { + $this->formulaAttributes = $pAttributes; + return $this; + } + + /** + * @deprecated Since version 1.7.8 for planned changes to cell for array formula handling + */ + public function getFormulaAttributes() + { + return $this->formulaAttributes; + } + + /** + * Convert to string + * + * @return string + */ + public function __toString() + { + return (string) $this->getValue(); + } +} diff --git a/assets/excel/PHPExcel/Cell/AdvancedValueBinder.php b/assets/excel/PHPExcel/Cell/AdvancedValueBinder.php new file mode 100644 index 0000000..061d04e --- /dev/null +++ b/assets/excel/PHPExcel/Cell/AdvancedValueBinder.php @@ -0,0 +1,187 @@ +setValueExplicit(true, PHPExcel_Cell_DataType::TYPE_BOOL); + return true; + } elseif ($value == PHPExcel_Calculation::getFALSE()) { + $cell->setValueExplicit(false, PHPExcel_Cell_DataType::TYPE_BOOL); + return true; + } + + // Check for number in scientific format + if (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NUMBER.'$/', $value)) { + $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + return true; + } + + // Check for fraction + if (preg_match('/^([+-]?)\s*([0-9]+)\s?\/\s*([0-9]+)$/', $value, $matches)) { + // Convert value to number + $value = $matches[2] / $matches[3]; + if ($matches[1] == '-') { + $value = 0 - $value; + } + $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode('??/??'); + return true; + } elseif (preg_match('/^([+-]?)([0-9]*) +([0-9]*)\s?\/\s*([0-9]*)$/', $value, $matches)) { + // Convert value to number + $value = $matches[2] + ($matches[3] / $matches[4]); + if ($matches[1] == '-') { + $value = 0 - $value; + } + $cell->setValueExplicit((float) $value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode('# ??/??'); + return true; + } + + // Check for percentage + if (preg_match('/^\-?[0-9]*\.?[0-9]*\s?\%$/', $value)) { + // Convert value to number + $value = (float) str_replace('%', '', $value) / 100; + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00); + return true; + } + + // Check for currency + $currencyCode = PHPExcel_Shared_String::getCurrencyCode(); + $decimalSeparator = PHPExcel_Shared_String::getDecimalSeparator(); + $thousandsSeparator = PHPExcel_Shared_String::getThousandsSeparator(); + if (preg_match('/^'.preg_quote($currencyCode).' *(\d{1,3}('.preg_quote($thousandsSeparator).'\d{3})*|(\d+))('.preg_quote($decimalSeparator).'\d{2})?$/', $value)) { + // Convert value to number + $value = (float) trim(str_replace(array($currencyCode, $thousandsSeparator, $decimalSeparator), array('', '', '.'), $value)); + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode( + str_replace('$', $currencyCode, PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE) + ); + return true; + } elseif (preg_match('/^\$ *(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/', $value)) { + // Convert value to number + $value = (float) trim(str_replace(array('$',','), '', $value)); + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); + return true; + } + + // Check for time without seconds e.g. '9:45', '09:45' + if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d$/', $value)) { + // Convert value to number + list($h, $m) = explode(':', $value); + $days = $h / 24 + $m / 1440; + $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3); + return true; + } + + // Check for time with seconds '9:45:59', '09:45:59' + if (preg_match('/^(\d|[0-1]\d|2[0-3]):[0-5]\d:[0-5]\d$/', $value)) { + // Convert value to number + list($h, $m, $s) = explode(':', $value); + $days = $h / 24 + $m / 1440 + $s / 86400; + // Convert value to number + $cell->setValueExplicit($days, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); + return true; + } + + // Check for datetime, e.g. '2008-12-31', '2008-12-31 15:59', '2008-12-31 15:59:10' + if (($d = PHPExcel_Shared_Date::stringToExcel($value)) !== false) { + // Convert value to number + $cell->setValueExplicit($d, PHPExcel_Cell_DataType::TYPE_NUMERIC); + // Determine style. Either there is a time part or not. Look for ':' + if (strpos($value, ':') !== false) { + $formatCode = 'yyyy-mm-dd h:mm'; + } else { + $formatCode = 'yyyy-mm-dd'; + } + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getNumberFormat()->setFormatCode($formatCode); + return true; + } + + // Check for newline character "\n" + if (strpos($value, "\n") !== false) { + $value = PHPExcel_Shared_String::SanitizeUTF8($value); + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); + // Set style + $cell->getWorksheet()->getStyle($cell->getCoordinate()) + ->getAlignment()->setWrapText(true); + return true; + } + } + + // Not bound yet? Use parent... + return parent::bindValue($cell, $value); + } +} diff --git a/assets/excel/PHPExcel/Cell/DataType.php b/assets/excel/PHPExcel/Cell/DataType.php new file mode 100644 index 0000000..fc010e6 --- /dev/null +++ b/assets/excel/PHPExcel/Cell/DataType.php @@ -0,0 +1,115 @@ + 0, + '#DIV/0!' => 1, + '#VALUE!' => 2, + '#REF!' => 3, + '#NAME?' => 4, + '#NUM!' => 5, + '#N/A' => 6 + ); + + /** + * Get list of error codes + * + * @return array + */ + public static function getErrorCodes() + { + return self::$errorCodes; + } + + /** + * DataType for value + * + * @deprecated Replaced by PHPExcel_Cell_IValueBinder infrastructure, will be removed in version 1.8.0 + * @param mixed $pValue + * @return string + */ + public static function dataTypeForValue($pValue = null) + { + return PHPExcel_Cell_DefaultValueBinder::dataTypeForValue($pValue); + } + + /** + * Check a string that it satisfies Excel requirements + * + * @param mixed Value to sanitize to an Excel string + * @return mixed Sanitized value + */ + public static function checkString($pValue = null) + { + if ($pValue instanceof PHPExcel_RichText) { + // TODO: Sanitize Rich-Text string (max. character count is 32,767) + return $pValue; + } + + // string must never be longer than 32,767 characters, truncate if necessary + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 32767); + + // we require that newline is represented as "\n" in core, not as "\r\n" or "\r" + $pValue = str_replace(array("\r\n", "\r"), "\n", $pValue); + + return $pValue; + } + + /** + * Check a value that it is a valid error code + * + * @param mixed Value to sanitize to an Excel error code + * @return string Sanitized value + */ + public static function checkErrorCode($pValue = null) + { + $pValue = (string) $pValue; + + if (!array_key_exists($pValue, self::$errorCodes)) { + $pValue = '#NULL!'; + } + + return $pValue; + } +} diff --git a/assets/excel/PHPExcel/Cell/DataValidation.php b/assets/excel/PHPExcel/Cell/DataValidation.php new file mode 100644 index 0000000..9883633 --- /dev/null +++ b/assets/excel/PHPExcel/Cell/DataValidation.php @@ -0,0 +1,492 @@ +formula1 = ''; + $this->formula2 = ''; + $this->type = PHPExcel_Cell_DataValidation::TYPE_NONE; + $this->errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP; + $this->operator = ''; + $this->allowBlank = false; + $this->showDropDown = false; + $this->showInputMessage = false; + $this->showErrorMessage = false; + $this->errorTitle = ''; + $this->error = ''; + $this->promptTitle = ''; + $this->prompt = ''; + } + + /** + * Get Formula 1 + * + * @return string + */ + public function getFormula1() + { + return $this->formula1; + } + + /** + * Set Formula 1 + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setFormula1($value = '') + { + $this->formula1 = $value; + return $this; + } + + /** + * Get Formula 2 + * + * @return string + */ + public function getFormula2() + { + return $this->formula2; + } + + /** + * Set Formula 2 + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setFormula2($value = '') + { + $this->formula2 = $value; + return $this; + } + + /** + * Get Type + * + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Set Type + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setType($value = PHPExcel_Cell_DataValidation::TYPE_NONE) + { + $this->type = $value; + return $this; + } + + /** + * Get Error style + * + * @return string + */ + public function getErrorStyle() + { + return $this->errorStyle; + } + + /** + * Set Error style + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setErrorStyle($value = PHPExcel_Cell_DataValidation::STYLE_STOP) + { + $this->errorStyle = $value; + return $this; + } + + /** + * Get Operator + * + * @return string + */ + public function getOperator() + { + return $this->operator; + } + + /** + * Set Operator + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setOperator($value = '') + { + $this->operator = $value; + return $this; + } + + /** + * Get Allow Blank + * + * @return boolean + */ + public function getAllowBlank() + { + return $this->allowBlank; + } + + /** + * Set Allow Blank + * + * @param boolean $value + * @return PHPExcel_Cell_DataValidation + */ + public function setAllowBlank($value = false) + { + $this->allowBlank = $value; + return $this; + } + + /** + * Get Show DropDown + * + * @return boolean + */ + public function getShowDropDown() + { + return $this->showDropDown; + } + + /** + * Set Show DropDown + * + * @param boolean $value + * @return PHPExcel_Cell_DataValidation + */ + public function setShowDropDown($value = false) + { + $this->showDropDown = $value; + return $this; + } + + /** + * Get Show InputMessage + * + * @return boolean + */ + public function getShowInputMessage() + { + return $this->showInputMessage; + } + + /** + * Set Show InputMessage + * + * @param boolean $value + * @return PHPExcel_Cell_DataValidation + */ + public function setShowInputMessage($value = false) + { + $this->showInputMessage = $value; + return $this; + } + + /** + * Get Show ErrorMessage + * + * @return boolean + */ + public function getShowErrorMessage() + { + return $this->showErrorMessage; + } + + /** + * Set Show ErrorMessage + * + * @param boolean $value + * @return PHPExcel_Cell_DataValidation + */ + public function setShowErrorMessage($value = false) + { + $this->showErrorMessage = $value; + return $this; + } + + /** + * Get Error title + * + * @return string + */ + public function getErrorTitle() + { + return $this->errorTitle; + } + + /** + * Set Error title + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setErrorTitle($value = '') + { + $this->errorTitle = $value; + return $this; + } + + /** + * Get Error + * + * @return string + */ + public function getError() + { + return $this->error; + } + + /** + * Set Error + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setError($value = '') + { + $this->error = $value; + return $this; + } + + /** + * Get Prompt title + * + * @return string + */ + public function getPromptTitle() + { + return $this->promptTitle; + } + + /** + * Set Prompt title + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setPromptTitle($value = '') + { + $this->promptTitle = $value; + return $this; + } + + /** + * Get Prompt + * + * @return string + */ + public function getPrompt() + { + return $this->prompt; + } + + /** + * Set Prompt + * + * @param string $value + * @return PHPExcel_Cell_DataValidation + */ + public function setPrompt($value = '') + { + $this->prompt = $value; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->formula1 . + $this->formula2 . + $this->type = PHPExcel_Cell_DataValidation::TYPE_NONE . + $this->errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP . + $this->operator . + ($this->allowBlank ? 't' : 'f') . + ($this->showDropDown ? 't' : 'f') . + ($this->showInputMessage ? 't' : 'f') . + ($this->showErrorMessage ? 't' : 'f') . + $this->errorTitle . + $this->error . + $this->promptTitle . + $this->prompt . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Cell/DefaultValueBinder.php b/assets/excel/PHPExcel/Cell/DefaultValueBinder.php new file mode 100644 index 0000000..dc19e6c --- /dev/null +++ b/assets/excel/PHPExcel/Cell/DefaultValueBinder.php @@ -0,0 +1,102 @@ +format('Y-m-d H:i:s'); + } elseif (!($value instanceof PHPExcel_RichText)) { + $value = (string) $value; + } + } + + // Set value explicit + $cell->setValueExplicit($value, self::dataTypeForValue($value)); + + // Done! + return true; + } + + /** + * DataType for value + * + * @param mixed $pValue + * @return string + */ + public static function dataTypeForValue($pValue = null) + { + // Match the value against a few data types + if ($pValue === null) { + return PHPExcel_Cell_DataType::TYPE_NULL; + } elseif ($pValue === '') { + return PHPExcel_Cell_DataType::TYPE_STRING; + } elseif ($pValue instanceof PHPExcel_RichText) { + return PHPExcel_Cell_DataType::TYPE_INLINE; + } elseif ($pValue{0} === '=' && strlen($pValue) > 1) { + return PHPExcel_Cell_DataType::TYPE_FORMULA; + } elseif (is_bool($pValue)) { + return PHPExcel_Cell_DataType::TYPE_BOOL; + } elseif (is_float($pValue) || is_int($pValue)) { + return PHPExcel_Cell_DataType::TYPE_NUMERIC; + } elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) { + $tValue = ltrim($pValue, '+-'); + if (is_string($pValue) && $tValue{0} === '0' && strlen($tValue) > 1 && $tValue{1} !== '.') { + return PHPExcel_Cell_DataType::TYPE_STRING; + } elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) { + return PHPExcel_Cell_DataType::TYPE_STRING; + } + return PHPExcel_Cell_DataType::TYPE_NUMERIC; + } elseif (is_string($pValue) && array_key_exists($pValue, PHPExcel_Cell_DataType::getErrorCodes())) { + return PHPExcel_Cell_DataType::TYPE_ERROR; + } + + return PHPExcel_Cell_DataType::TYPE_STRING; + } +} diff --git a/assets/excel/PHPExcel/Cell/Hyperlink.php b/assets/excel/PHPExcel/Cell/Hyperlink.php new file mode 100644 index 0000000..daab54c --- /dev/null +++ b/assets/excel/PHPExcel/Cell/Hyperlink.php @@ -0,0 +1,124 @@ +url = $pUrl; + $this->tooltip = $pTooltip; + } + + /** + * Get URL + * + * @return string + */ + public function getUrl() + { + return $this->url; + } + + /** + * Set URL + * + * @param string $value + * @return PHPExcel_Cell_Hyperlink + */ + public function setUrl($value = '') + { + $this->url = $value; + return $this; + } + + /** + * Get tooltip + * + * @return string + */ + public function getTooltip() + { + return $this->tooltip; + } + + /** + * Set tooltip + * + * @param string $value + * @return PHPExcel_Cell_Hyperlink + */ + public function setTooltip($value = '') + { + $this->tooltip = $value; + return $this; + } + + /** + * Is this hyperlink internal? (to another worksheet) + * + * @return boolean + */ + public function isInternal() + { + return strpos($this->url, 'sheet://') !== false; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->url . + $this->tooltip . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Cell/IValueBinder.php b/assets/excel/PHPExcel/Cell/IValueBinder.php new file mode 100644 index 0000000..de2d0ac --- /dev/null +++ b/assets/excel/PHPExcel/Cell/IValueBinder.php @@ -0,0 +1,47 @@ +name = $name; + $this->title = $title; + $this->legend = $legend; + $this->xAxisLabel = $xAxisLabel; + $this->yAxisLabel = $yAxisLabel; + $this->plotArea = $plotArea; + $this->plotVisibleOnly = $plotVisibleOnly; + $this->displayBlanksAs = $displayBlanksAs; + $this->xAxis = $xAxis; + $this->yAxis = $yAxis; + $this->majorGridlines = $majorGridlines; + $this->minorGridlines = $minorGridlines; + } + + /** + * Get Name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Get Worksheet + * + * @return PHPExcel_Worksheet + */ + public function getWorksheet() + { + return $this->worksheet; + } + + /** + * Set Worksheet + * + * @param PHPExcel_Worksheet $pValue + * @throws PHPExcel_Chart_Exception + * @return PHPExcel_Chart + */ + public function setWorksheet(PHPExcel_Worksheet $pValue = null) + { + $this->worksheet = $pValue; + + return $this; + } + + /** + * Get Title + * + * @return PHPExcel_Chart_Title + */ + public function getTitle() + { + return $this->title; + } + + /** + * Set Title + * + * @param PHPExcel_Chart_Title $title + * @return PHPExcel_Chart + */ + public function setTitle(PHPExcel_Chart_Title $title) + { + $this->title = $title; + + return $this; + } + + /** + * Get Legend + * + * @return PHPExcel_Chart_Legend + */ + public function getLegend() + { + return $this->legend; + } + + /** + * Set Legend + * + * @param PHPExcel_Chart_Legend $legend + * @return PHPExcel_Chart + */ + public function setLegend(PHPExcel_Chart_Legend $legend) + { + $this->legend = $legend; + + return $this; + } + + /** + * Get X-Axis Label + * + * @return PHPExcel_Chart_Title + */ + public function getXAxisLabel() + { + return $this->xAxisLabel; + } + + /** + * Set X-Axis Label + * + * @param PHPExcel_Chart_Title $label + * @return PHPExcel_Chart + */ + public function setXAxisLabel(PHPExcel_Chart_Title $label) + { + $this->xAxisLabel = $label; + + return $this; + } + + /** + * Get Y-Axis Label + * + * @return PHPExcel_Chart_Title + */ + public function getYAxisLabel() + { + return $this->yAxisLabel; + } + + /** + * Set Y-Axis Label + * + * @param PHPExcel_Chart_Title $label + * @return PHPExcel_Chart + */ + public function setYAxisLabel(PHPExcel_Chart_Title $label) + { + $this->yAxisLabel = $label; + + return $this; + } + + /** + * Get Plot Area + * + * @return PHPExcel_Chart_PlotArea + */ + public function getPlotArea() + { + return $this->plotArea; + } + + /** + * Get Plot Visible Only + * + * @return boolean + */ + public function getPlotVisibleOnly() + { + return $this->plotVisibleOnly; + } + + /** + * Set Plot Visible Only + * + * @param boolean $plotVisibleOnly + * @return PHPExcel_Chart + */ + public function setPlotVisibleOnly($plotVisibleOnly = true) + { + $this->plotVisibleOnly = $plotVisibleOnly; + + return $this; + } + + /** + * Get Display Blanks as + * + * @return string + */ + public function getDisplayBlanksAs() + { + return $this->displayBlanksAs; + } + + /** + * Set Display Blanks as + * + * @param string $displayBlanksAs + * @return PHPExcel_Chart + */ + public function setDisplayBlanksAs($displayBlanksAs = '0') + { + $this->displayBlanksAs = $displayBlanksAs; + } + + + /** + * Get yAxis + * + * @return PHPExcel_Chart_Axis + */ + public function getChartAxisY() + { + if ($this->yAxis !== null) { + return $this->yAxis; + } + + return new PHPExcel_Chart_Axis(); + } + + /** + * Get xAxis + * + * @return PHPExcel_Chart_Axis + */ + public function getChartAxisX() + { + if ($this->xAxis !== null) { + return $this->xAxis; + } + + return new PHPExcel_Chart_Axis(); + } + + /** + * Get Major Gridlines + * + * @return PHPExcel_Chart_GridLines + */ + public function getMajorGridlines() + { + if ($this->majorGridlines !== null) { + return $this->majorGridlines; + } + + return new PHPExcel_Chart_GridLines(); + } + + /** + * Get Minor Gridlines + * + * @return PHPExcel_Chart_GridLines + */ + public function getMinorGridlines() + { + if ($this->minorGridlines !== null) { + return $this->minorGridlines; + } + + return new PHPExcel_Chart_GridLines(); + } + + + /** + * Set the Top Left position for the chart + * + * @param string $cell + * @param integer $xOffset + * @param integer $yOffset + * @return PHPExcel_Chart + */ + public function setTopLeftPosition($cell, $xOffset = null, $yOffset = null) + { + $this->topLeftCellRef = $cell; + if (!is_null($xOffset)) { + $this->setTopLeftXOffset($xOffset); + } + if (!is_null($yOffset)) { + $this->setTopLeftYOffset($yOffset); + } + + return $this; + } + + /** + * Get the top left position of the chart + * + * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell + */ + public function getTopLeftPosition() + { + return array( + 'cell' => $this->topLeftCellRef, + 'xOffset' => $this->topLeftXOffset, + 'yOffset' => $this->topLeftYOffset + ); + } + + /** + * Get the cell address where the top left of the chart is fixed + * + * @return string + */ + public function getTopLeftCell() + { + return $this->topLeftCellRef; + } + + /** + * Set the Top Left cell position for the chart + * + * @param string $cell + * @return PHPExcel_Chart + */ + public function setTopLeftCell($cell) + { + $this->topLeftCellRef = $cell; + + return $this; + } + + /** + * Set the offset position within the Top Left cell for the chart + * + * @param integer $xOffset + * @param integer $yOffset + * @return PHPExcel_Chart + */ + public function setTopLeftOffset($xOffset = null, $yOffset = null) + { + if (!is_null($xOffset)) { + $this->setTopLeftXOffset($xOffset); + } + if (!is_null($yOffset)) { + $this->setTopLeftYOffset($yOffset); + } + + return $this; + } + + /** + * Get the offset position within the Top Left cell for the chart + * + * @return integer[] + */ + public function getTopLeftOffset() + { + return array( + 'X' => $this->topLeftXOffset, + 'Y' => $this->topLeftYOffset + ); + } + + public function setTopLeftXOffset($xOffset) + { + $this->topLeftXOffset = $xOffset; + + return $this; + } + + public function getTopLeftXOffset() + { + return $this->topLeftXOffset; + } + + public function setTopLeftYOffset($yOffset) + { + $this->topLeftYOffset = $yOffset; + + return $this; + } + + public function getTopLeftYOffset() + { + return $this->topLeftYOffset; + } + + /** + * Set the Bottom Right position of the chart + * + * @param string $cell + * @param integer $xOffset + * @param integer $yOffset + * @return PHPExcel_Chart + */ + public function setBottomRightPosition($cell, $xOffset = null, $yOffset = null) + { + $this->bottomRightCellRef = $cell; + if (!is_null($xOffset)) { + $this->setBottomRightXOffset($xOffset); + } + if (!is_null($yOffset)) { + $this->setBottomRightYOffset($yOffset); + } + + return $this; + } + + /** + * Get the bottom right position of the chart + * + * @return array an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell + */ + public function getBottomRightPosition() + { + return array( + 'cell' => $this->bottomRightCellRef, + 'xOffset' => $this->bottomRightXOffset, + 'yOffset' => $this->bottomRightYOffset + ); + } + + public function setBottomRightCell($cell) + { + $this->bottomRightCellRef = $cell; + + return $this; + } + + /** + * Get the cell address where the bottom right of the chart is fixed + * + * @return string + */ + public function getBottomRightCell() + { + return $this->bottomRightCellRef; + } + + /** + * Set the offset position within the Bottom Right cell for the chart + * + * @param integer $xOffset + * @param integer $yOffset + * @return PHPExcel_Chart + */ + public function setBottomRightOffset($xOffset = null, $yOffset = null) + { + if (!is_null($xOffset)) { + $this->setBottomRightXOffset($xOffset); + } + if (!is_null($yOffset)) { + $this->setBottomRightYOffset($yOffset); + } + + return $this; + } + + /** + * Get the offset position within the Bottom Right cell for the chart + * + * @return integer[] + */ + public function getBottomRightOffset() + { + return array( + 'X' => $this->bottomRightXOffset, + 'Y' => $this->bottomRightYOffset + ); + } + + public function setBottomRightXOffset($xOffset) + { + $this->bottomRightXOffset = $xOffset; + + return $this; + } + + public function getBottomRightXOffset() + { + return $this->bottomRightXOffset; + } + + public function setBottomRightYOffset($yOffset) + { + $this->bottomRightYOffset = $yOffset; + + return $this; + } + + public function getBottomRightYOffset() + { + return $this->bottomRightYOffset; + } + + + public function refresh() + { + if ($this->worksheet !== null) { + $this->plotArea->refresh($this->worksheet); + } + } + + public function render($outputDestination = null) + { + $libraryName = PHPExcel_Settings::getChartRendererName(); + if (is_null($libraryName)) { + return false; + } + // Ensure that data series values are up-to-date before we render + $this->refresh(); + + $libraryPath = PHPExcel_Settings::getChartRendererPath(); + $includePath = str_replace('\\', '/', get_include_path()); + $rendererPath = str_replace('\\', '/', $libraryPath); + if (strpos($rendererPath, $includePath) === false) { + set_include_path(get_include_path() . PATH_SEPARATOR . $libraryPath); + } + + $rendererName = 'PHPExcel_Chart_Renderer_'.$libraryName; + $renderer = new $rendererName($this); + + if ($outputDestination == 'php://output') { + $outputDestination = null; + } + return $renderer->render($outputDestination); + } +} diff --git a/assets/excel/PHPExcel/Chart/Axis.php b/assets/excel/PHPExcel/Chart/Axis.php new file mode 100644 index 0000000..9aeafc6 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Axis.php @@ -0,0 +1,561 @@ + self::FORMAT_CODE_GENERAL, + 'source_linked' => 1 + ); + + /** + * Axis Options + * + * @var array of mixed + */ + private $axisOptions = array( + 'minimum' => null, + 'maximum' => null, + 'major_unit' => null, + 'minor_unit' => null, + 'orientation' => self::ORIENTATION_NORMAL, + 'minor_tick_mark' => self::TICK_MARK_NONE, + 'major_tick_mark' => self::TICK_MARK_NONE, + 'axis_labels' => self::AXIS_LABELS_NEXT_TO, + 'horizontal_crosses' => self::HORIZONTAL_CROSSES_AUTOZERO, + 'horizontal_crosses_value' => null + ); + + /** + * Fill Properties + * + * @var array of mixed + */ + private $fillProperties = array( + 'type' => self::EXCEL_COLOR_TYPE_ARGB, + 'value' => null, + 'alpha' => 0 + ); + + /** + * Line Properties + * + * @var array of mixed + */ + private $lineProperties = array( + 'type' => self::EXCEL_COLOR_TYPE_ARGB, + 'value' => null, + 'alpha' => 0 + ); + + /** + * Line Style Properties + * + * @var array of mixed + */ + private $lineStyleProperties = array( + 'width' => '9525', + 'compound' => self::LINE_STYLE_COMPOUND_SIMPLE, + 'dash' => self::LINE_STYLE_DASH_SOLID, + 'cap' => self::LINE_STYLE_CAP_FLAT, + 'join' => self::LINE_STYLE_JOIN_BEVEL, + 'arrow' => array( + 'head' => array( + 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, + 'size' => self::LINE_STYLE_ARROW_SIZE_5 + ), + 'end' => array( + 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, + 'size' => self::LINE_STYLE_ARROW_SIZE_8 + ), + ) + ); + + /** + * Shadow Properties + * + * @var array of mixed + */ + private $shadowProperties = array( + 'presets' => self::SHADOW_PRESETS_NOSHADOW, + 'effect' => null, + 'color' => array( + 'type' => self::EXCEL_COLOR_TYPE_STANDARD, + 'value' => 'black', + 'alpha' => 40, + ), + 'size' => array( + 'sx' => null, + 'sy' => null, + 'kx' => null + ), + 'blur' => null, + 'direction' => null, + 'distance' => null, + 'algn' => null, + 'rotWithShape' => null + ); + + /** + * Glow Properties + * + * @var array of mixed + */ + private $glowProperties = array( + 'size' => null, + 'color' => array( + 'type' => self::EXCEL_COLOR_TYPE_STANDARD, + 'value' => 'black', + 'alpha' => 40 + ) + ); + + /** + * Soft Edge Properties + * + * @var array of mixed + */ + private $softEdges = array( + 'size' => null + ); + + /** + * Get Series Data Type + * + * @return string + */ + public function setAxisNumberProperties($format_code) + { + $this->axisNumber['format'] = (string) $format_code; + $this->axisNumber['source_linked'] = 0; + } + + /** + * Get Axis Number Format Data Type + * + * @return string + */ + public function getAxisNumberFormat() + { + return $this->axisNumber['format']; + } + + /** + * Get Axis Number Source Linked + * + * @return string + */ + public function getAxisNumberSourceLinked() + { + return (string) $this->axisNumber['source_linked']; + } + + /** + * Set Axis Options Properties + * + * @param string $axis_labels + * @param string $horizontal_crosses_value + * @param string $horizontal_crosses + * @param string $axis_orientation + * @param string $major_tmt + * @param string $minor_tmt + * @param string $minimum + * @param string $maximum + * @param string $major_unit + * @param string $minor_unit + * + */ + public function setAxisOptionsProperties($axis_labels, $horizontal_crosses_value = null, $horizontal_crosses = null, $axis_orientation = null, $major_tmt = null, $minor_tmt = null, $minimum = null, $maximum = null, $major_unit = null, $minor_unit = null) + { + $this->axisOptions['axis_labels'] = (string) $axis_labels; + ($horizontal_crosses_value !== null) ? $this->axisOptions['horizontal_crosses_value'] = (string) $horizontal_crosses_value : null; + ($horizontal_crosses !== null) ? $this->axisOptions['horizontal_crosses'] = (string) $horizontal_crosses : null; + ($axis_orientation !== null) ? $this->axisOptions['orientation'] = (string) $axis_orientation : null; + ($major_tmt !== null) ? $this->axisOptions['major_tick_mark'] = (string) $major_tmt : null; + ($minor_tmt !== null) ? $this->axisOptions['minor_tick_mark'] = (string) $minor_tmt : null; + ($minor_tmt !== null) ? $this->axisOptions['minor_tick_mark'] = (string) $minor_tmt : null; + ($minimum !== null) ? $this->axisOptions['minimum'] = (string) $minimum : null; + ($maximum !== null) ? $this->axisOptions['maximum'] = (string) $maximum : null; + ($major_unit !== null) ? $this->axisOptions['major_unit'] = (string) $major_unit : null; + ($minor_unit !== null) ? $this->axisOptions['minor_unit'] = (string) $minor_unit : null; + } + + /** + * Get Axis Options Property + * + * @param string $property + * + * @return string + */ + public function getAxisOptionsProperty($property) + { + return $this->axisOptions[$property]; + } + + /** + * Set Axis Orientation Property + * + * @param string $orientation + * + */ + public function setAxisOrientation($orientation) + { + $this->orientation = (string) $orientation; + } + + /** + * Set Fill Property + * + * @param string $color + * @param int $alpha + * @param string $type + * + */ + public function setFillParameters($color, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_ARGB) + { + $this->fillProperties = $this->setColorProperties($color, $alpha, $type); + } + + /** + * Set Line Property + * + * @param string $color + * @param int $alpha + * @param string $type + * + */ + public function setLineParameters($color, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_ARGB) + { + $this->lineProperties = $this->setColorProperties($color, $alpha, $type); + } + + /** + * Get Fill Property + * + * @param string $property + * + * @return string + */ + public function getFillProperty($property) + { + return $this->fillProperties[$property]; + } + + /** + * Get Line Property + * + * @param string $property + * + * @return string + */ + public function getLineProperty($property) + { + return $this->lineProperties[$property]; + } + + /** + * Set Line Style Properties + * + * @param float $line_width + * @param string $compound_type + * @param string $dash_type + * @param string $cap_type + * @param string $join_type + * @param string $head_arrow_type + * @param string $head_arrow_size + * @param string $end_arrow_type + * @param string $end_arrow_size + * + */ + public function setLineStyleProperties($line_width = null, $compound_type = null, $dash_type = null, $cap_type = null, $join_type = null, $head_arrow_type = null, $head_arrow_size = null, $end_arrow_type = null, $end_arrow_size = null) + { + (!is_null($line_width)) ? $this->lineStyleProperties['width'] = $this->getExcelPointsWidth((float) $line_width) : null; + (!is_null($compound_type)) ? $this->lineStyleProperties['compound'] = (string) $compound_type : null; + (!is_null($dash_type)) ? $this->lineStyleProperties['dash'] = (string) $dash_type : null; + (!is_null($cap_type)) ? $this->lineStyleProperties['cap'] = (string) $cap_type : null; + (!is_null($join_type)) ? $this->lineStyleProperties['join'] = (string) $join_type : null; + (!is_null($head_arrow_type)) ? $this->lineStyleProperties['arrow']['head']['type'] = (string) $head_arrow_type : null; + (!is_null($head_arrow_size)) ? $this->lineStyleProperties['arrow']['head']['size'] = (string) $head_arrow_size : null; + (!is_null($end_arrow_type)) ? $this->lineStyleProperties['arrow']['end']['type'] = (string) $end_arrow_type : null; + (!is_null($end_arrow_size)) ? $this->lineStyleProperties['arrow']['end']['size'] = (string) $end_arrow_size : null; + } + + /** + * Get Line Style Property + * + * @param array|string $elements + * + * @return string + */ + public function getLineStyleProperty($elements) + { + return $this->getArrayElementsValue($this->lineStyleProperties, $elements); + } + + /** + * Get Line Style Arrow Excel Width + * + * @param string $arrow + * + * @return string + */ + public function getLineStyleArrowWidth($arrow) + { + return $this->getLineStyleArrowSize($this->lineStyleProperties['arrow'][$arrow]['size'], 'w'); + } + + /** + * Get Line Style Arrow Excel Length + * + * @param string $arrow + * + * @return string + */ + public function getLineStyleArrowLength($arrow) + { + return $this->getLineStyleArrowSize($this->lineStyleProperties['arrow'][$arrow]['size'], 'len'); + } + + /** + * Set Shadow Properties + * + * @param int $shadow_presets + * @param string $sh_color_value + * @param string $sh_color_type + * @param string $sh_color_alpha + * @param float $sh_blur + * @param int $sh_angle + * @param float $sh_distance + * + */ + public function setShadowProperties($sh_presets, $sh_color_value = null, $sh_color_type = null, $sh_color_alpha = null, $sh_blur = null, $sh_angle = null, $sh_distance = null) + { + $this->setShadowPresetsProperties((int) $sh_presets) + ->setShadowColor( + is_null($sh_color_value) ? $this->shadowProperties['color']['value'] : $sh_color_value, + is_null($sh_color_alpha) ? (int) $this->shadowProperties['color']['alpha'] : $sh_color_alpha, + is_null($sh_color_type) ? $this->shadowProperties['color']['type'] : $sh_color_type + ) + ->setShadowBlur($sh_blur) + ->setShadowAngle($sh_angle) + ->setShadowDistance($sh_distance); + } + + /** + * Set Shadow Color + * + * @param int $shadow_presets + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowPresetsProperties($shadow_presets) + { + $this->shadowProperties['presets'] = $shadow_presets; + $this->setShadowProperiesMapValues($this->getShadowPresetsMap($shadow_presets)); + + return $this; + } + + /** + * Set Shadow Properties from Maped Values + * + * @param array $properties_map + * @param * $reference + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowProperiesMapValues(array $properties_map, &$reference = null) + { + $base_reference = $reference; + foreach ($properties_map as $property_key => $property_val) { + if (is_array($property_val)) { + if ($reference === null) { + $reference = & $this->shadowProperties[$property_key]; + } else { + $reference = & $reference[$property_key]; + } + $this->setShadowProperiesMapValues($property_val, $reference); + } else { + if ($base_reference === null) { + $this->shadowProperties[$property_key] = $property_val; + } else { + $reference[$property_key] = $property_val; + } + } + } + + return $this; + } + + /** + * Set Shadow Color + * + * @param string $color + * @param int $alpha + * @param string $type + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowColor($color, $alpha, $type) + { + $this->shadowProperties['color'] = $this->setColorProperties($color, $alpha, $type); + + return $this; + } + + /** + * Set Shadow Blur + * + * @param float $blur + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowBlur($blur) + { + if ($blur !== null) { + $this->shadowProperties['blur'] = (string) $this->getExcelPointsWidth($blur); + } + + return $this; + } + + /** + * Set Shadow Angle + * + * @param int $angle + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowAngle($angle) + { + if ($angle !== null) { + $this->shadowProperties['direction'] = (string) $this->getExcelPointsAngle($angle); + } + + return $this; + } + + /** + * Set Shadow Distance + * + * @param float $distance + * + * @return PHPExcel_Chart_Axis + */ + private function setShadowDistance($distance) + { + if ($distance !== null) { + $this->shadowProperties['distance'] = (string) $this->getExcelPointsWidth($distance); + } + + return $this; + } + + /** + * Get Glow Property + * + * @param float $size + * @param string $color_value + * @param int $color_alpha + * @param string $color_type + */ + public function getShadowProperty($elements) + { + return $this->getArrayElementsValue($this->shadowProperties, $elements); + } + + /** + * Set Glow Properties + * + * @param float $size + * @param string $color_value + * @param int $color_alpha + * @param string $color_type + */ + public function setGlowProperties($size, $color_value = null, $color_alpha = null, $color_type = null) + { + $this->setGlowSize($size) + ->setGlowColor( + is_null($color_value) ? $this->glowProperties['color']['value'] : $color_value, + is_null($color_alpha) ? (int) $this->glowProperties['color']['alpha'] : $color_alpha, + is_null($color_type) ? $this->glowProperties['color']['type'] : $color_type + ); + } + + /** + * Get Glow Property + * + * @param array|string $property + * + * @return string + */ + public function getGlowProperty($property) + { + return $this->getArrayElementsValue($this->glowProperties, $property); + } + + /** + * Set Glow Color + * + * @param float $size + * + * @return PHPExcel_Chart_Axis + */ + private function setGlowSize($size) + { + if (!is_null($size)) { + $this->glowProperties['size'] = $this->getExcelPointsWidth($size); + } + + return $this; + } + + /** + * Set Glow Color + * + * @param string $color + * @param int $alpha + * @param string $type + * + * @return PHPExcel_Chart_Axis + */ + private function setGlowColor($color, $alpha, $type) + { + $this->glowProperties['color'] = $this->setColorProperties($color, $alpha, $type); + + return $this; + } + + /** + * Set Soft Edges Size + * + * @param float $size + */ + public function setSoftEdges($size) + { + if (!is_null($size)) { + $softEdges['size'] = (string) $this->getExcelPointsWidth($size); + } + } + + /** + * Get Soft Edges Size + * + * @return string + */ + public function getSoftEdgesSize() + { + return $this->softEdges['size']; + } +} diff --git a/assets/excel/PHPExcel/Chart/DataSeries.php b/assets/excel/PHPExcel/Chart/DataSeries.php new file mode 100644 index 0000000..9ecd543 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/DataSeries.php @@ -0,0 +1,390 @@ +plotType = $plotType; + $this->plotGrouping = $plotGrouping; + $this->plotOrder = $plotOrder; + $keys = array_keys($plotValues); + $this->plotValues = $plotValues; + if ((count($plotLabel) == 0) || (is_null($plotLabel[$keys[0]]))) { + $plotLabel[$keys[0]] = new PHPExcel_Chart_DataSeriesValues(); + } + + $this->plotLabel = $plotLabel; + if ((count($plotCategory) == 0) || (is_null($plotCategory[$keys[0]]))) { + $plotCategory[$keys[0]] = new PHPExcel_Chart_DataSeriesValues(); + } + $this->plotCategory = $plotCategory; + $this->smoothLine = $smoothLine; + $this->plotStyle = $plotStyle; + + if (is_null($plotDirection)) { + $plotDirection = self::DIRECTION_COL; + } + $this->plotDirection = $plotDirection; + } + + /** + * Get Plot Type + * + * @return string + */ + public function getPlotType() + { + return $this->plotType; + } + + /** + * Set Plot Type + * + * @param string $plotType + * @return PHPExcel_Chart_DataSeries + */ + public function setPlotType($plotType = '') + { + $this->plotType = $plotType; + return $this; + } + + /** + * Get Plot Grouping Type + * + * @return string + */ + public function getPlotGrouping() + { + return $this->plotGrouping; + } + + /** + * Set Plot Grouping Type + * + * @param string $groupingType + * @return PHPExcel_Chart_DataSeries + */ + public function setPlotGrouping($groupingType = null) + { + $this->plotGrouping = $groupingType; + return $this; + } + + /** + * Get Plot Direction + * + * @return string + */ + public function getPlotDirection() + { + return $this->plotDirection; + } + + /** + * Set Plot Direction + * + * @param string $plotDirection + * @return PHPExcel_Chart_DataSeries + */ + public function setPlotDirection($plotDirection = null) + { + $this->plotDirection = $plotDirection; + return $this; + } + + /** + * Get Plot Order + * + * @return string + */ + public function getPlotOrder() + { + return $this->plotOrder; + } + + /** + * Get Plot Labels + * + * @return array of PHPExcel_Chart_DataSeriesValues + */ + public function getPlotLabels() + { + return $this->plotLabel; + } + + /** + * Get Plot Label by Index + * + * @return PHPExcel_Chart_DataSeriesValues + */ + public function getPlotLabelByIndex($index) + { + $keys = array_keys($this->plotLabel); + if (in_array($index, $keys)) { + return $this->plotLabel[$index]; + } elseif (isset($keys[$index])) { + return $this->plotLabel[$keys[$index]]; + } + return false; + } + + /** + * Get Plot Categories + * + * @return array of PHPExcel_Chart_DataSeriesValues + */ + public function getPlotCategories() + { + return $this->plotCategory; + } + + /** + * Get Plot Category by Index + * + * @return PHPExcel_Chart_DataSeriesValues + */ + public function getPlotCategoryByIndex($index) + { + $keys = array_keys($this->plotCategory); + if (in_array($index, $keys)) { + return $this->plotCategory[$index]; + } elseif (isset($keys[$index])) { + return $this->plotCategory[$keys[$index]]; + } + return false; + } + + /** + * Get Plot Style + * + * @return string + */ + public function getPlotStyle() + { + return $this->plotStyle; + } + + /** + * Set Plot Style + * + * @param string $plotStyle + * @return PHPExcel_Chart_DataSeries + */ + public function setPlotStyle($plotStyle = null) + { + $this->plotStyle = $plotStyle; + return $this; + } + + /** + * Get Plot Values + * + * @return array of PHPExcel_Chart_DataSeriesValues + */ + public function getPlotValues() + { + return $this->plotValues; + } + + /** + * Get Plot Values by Index + * + * @return PHPExcel_Chart_DataSeriesValues + */ + public function getPlotValuesByIndex($index) + { + $keys = array_keys($this->plotValues); + if (in_array($index, $keys)) { + return $this->plotValues[$index]; + } elseif (isset($keys[$index])) { + return $this->plotValues[$keys[$index]]; + } + return false; + } + + /** + * Get Number of Plot Series + * + * @return integer + */ + public function getPlotSeriesCount() + { + return count($this->plotValues); + } + + /** + * Get Smooth Line + * + * @return boolean + */ + public function getSmoothLine() + { + return $this->smoothLine; + } + + /** + * Set Smooth Line + * + * @param boolean $smoothLine + * @return PHPExcel_Chart_DataSeries + */ + public function setSmoothLine($smoothLine = true) + { + $this->smoothLine = $smoothLine; + return $this; + } + + public function refresh(PHPExcel_Worksheet $worksheet) + { + foreach ($this->plotValues as $plotValues) { + if ($plotValues !== null) { + $plotValues->refresh($worksheet, true); + } + } + foreach ($this->plotLabel as $plotValues) { + if ($plotValues !== null) { + $plotValues->refresh($worksheet, true); + } + } + foreach ($this->plotCategory as $plotValues) { + if ($plotValues !== null) { + $plotValues->refresh($worksheet, false); + } + } + } +} diff --git a/assets/excel/PHPExcel/Chart/DataSeriesValues.php b/assets/excel/PHPExcel/Chart/DataSeriesValues.php new file mode 100644 index 0000000..ea57e52 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/DataSeriesValues.php @@ -0,0 +1,333 @@ +setDataType($dataType); + $this->dataSource = $dataSource; + $this->formatCode = $formatCode; + $this->pointCount = $pointCount; + $this->dataValues = $dataValues; + $this->pointMarker = $marker; + } + + /** + * Get Series Data Type + * + * @return string + */ + public function getDataType() + { + return $this->dataType; + } + + /** + * Set Series Data Type + * + * @param string $dataType Datatype of this data series + * Typical values are: + * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_STRING + * Normally used for axis point values + * PHPExcel_Chart_DataSeriesValues::DATASERIES_TYPE_NUMBER + * Normally used for chart data values + * @return PHPExcel_Chart_DataSeriesValues + */ + public function setDataType($dataType = self::DATASERIES_TYPE_NUMBER) + { + if (!in_array($dataType, self::$dataTypeValues)) { + throw new PHPExcel_Chart_Exception('Invalid datatype for chart data series values'); + } + $this->dataType = $dataType; + + return $this; + } + + /** + * Get Series Data Source (formula) + * + * @return string + */ + public function getDataSource() + { + return $this->dataSource; + } + + /** + * Set Series Data Source (formula) + * + * @param string $dataSource + * @return PHPExcel_Chart_DataSeriesValues + */ + public function setDataSource($dataSource = null, $refreshDataValues = true) + { + $this->dataSource = $dataSource; + + if ($refreshDataValues) { + // TO DO + } + + return $this; + } + + /** + * Get Point Marker + * + * @return string + */ + public function getPointMarker() + { + return $this->pointMarker; + } + + /** + * Set Point Marker + * + * @param string $marker + * @return PHPExcel_Chart_DataSeriesValues + */ + public function setPointMarker($marker = null) + { + $this->pointMarker = $marker; + + return $this; + } + + /** + * Get Series Format Code + * + * @return string + */ + public function getFormatCode() + { + return $this->formatCode; + } + + /** + * Set Series Format Code + * + * @param string $formatCode + * @return PHPExcel_Chart_DataSeriesValues + */ + public function setFormatCode($formatCode = null) + { + $this->formatCode = $formatCode; + + return $this; + } + + /** + * Get Series Point Count + * + * @return integer + */ + public function getPointCount() + { + return $this->pointCount; + } + + /** + * Identify if the Data Series is a multi-level or a simple series + * + * @return boolean + */ + public function isMultiLevelSeries() + { + if (count($this->dataValues) > 0) { + return is_array($this->dataValues[0]); + } + return null; + } + + /** + * Return the level count of a multi-level Data Series + * + * @return boolean + */ + public function multiLevelCount() + { + $levelCount = 0; + foreach ($this->dataValues as $dataValueSet) { + $levelCount = max($levelCount, count($dataValueSet)); + } + return $levelCount; + } + + /** + * Get Series Data Values + * + * @return array of mixed + */ + public function getDataValues() + { + return $this->dataValues; + } + + /** + * Get the first Series Data value + * + * @return mixed + */ + public function getDataValue() + { + $count = count($this->dataValues); + if ($count == 0) { + return null; + } elseif ($count == 1) { + return $this->dataValues[0]; + } + return $this->dataValues; + } + + /** + * Set Series Data Values + * + * @param array $dataValues + * @param boolean $refreshDataSource + * TRUE - refresh the value of dataSource based on the values of $dataValues + * FALSE - don't change the value of dataSource + * @return PHPExcel_Chart_DataSeriesValues + */ + public function setDataValues($dataValues = array(), $refreshDataSource = true) + { + $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($dataValues); + $this->pointCount = count($dataValues); + + if ($refreshDataSource) { + // TO DO + } + + return $this; + } + + private function stripNulls($var) + { + return $var !== null; + } + + public function refresh(PHPExcel_Worksheet $worksheet, $flatten = true) + { + if ($this->dataSource !== null) { + $calcEngine = PHPExcel_Calculation::getInstance($worksheet->getParent()); + $newDataValues = PHPExcel_Calculation::unwrapResult( + $calcEngine->_calculateFormulaValue( + '='.$this->dataSource, + null, + $worksheet->getCell('A1') + ) + ); + if ($flatten) { + $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues); + foreach ($this->dataValues as &$dataValue) { + if ((!empty($dataValue)) && ($dataValue[0] == '#')) { + $dataValue = 0.0; + } + } + unset($dataValue); + } else { + $cellRange = explode('!', $this->dataSource); + if (count($cellRange) > 1) { + list(, $cellRange) = $cellRange; + } + + $dimensions = PHPExcel_Cell::rangeDimension(str_replace('$', '', $cellRange)); + if (($dimensions[0] == 1) || ($dimensions[1] == 1)) { + $this->dataValues = PHPExcel_Calculation_Functions::flattenArray($newDataValues); + } else { + $newArray = array_values(array_shift($newDataValues)); + foreach ($newArray as $i => $newDataSet) { + $newArray[$i] = array($newDataSet); + } + + foreach ($newDataValues as $newDataSet) { + $i = 0; + foreach ($newDataSet as $newDataVal) { + array_unshift($newArray[$i++], $newDataVal); + } + } + $this->dataValues = $newArray; + } + } + $this->pointCount = count($this->dataValues); + } + } +} diff --git a/assets/excel/PHPExcel/Chart/Exception.php b/assets/excel/PHPExcel/Chart/Exception.php new file mode 100644 index 0000000..e20dfa5 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Exception.php @@ -0,0 +1,46 @@ +line = $line; + $e->file = $file; + throw $e; + } +} diff --git a/assets/excel/PHPExcel/Chart/GridLines.php b/assets/excel/PHPExcel/Chart/GridLines.php new file mode 100644 index 0000000..898012e --- /dev/null +++ b/assets/excel/PHPExcel/Chart/GridLines.php @@ -0,0 +1,472 @@ + array( + 'type' => self::EXCEL_COLOR_TYPE_STANDARD, + 'value' => null, + 'alpha' => 0 + ), + 'style' => array( + 'width' => '9525', + 'compound' => self::LINE_STYLE_COMPOUND_SIMPLE, + 'dash' => self::LINE_STYLE_DASH_SOLID, + 'cap' => self::LINE_STYLE_CAP_FLAT, + 'join' => self::LINE_STYLE_JOIN_BEVEL, + 'arrow' => array( + 'head' => array( + 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, + 'size' => self::LINE_STYLE_ARROW_SIZE_5 + ), + 'end' => array( + 'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, + 'size' => self::LINE_STYLE_ARROW_SIZE_8 + ), + ) + ) + ); + + private $shadowProperties = array( + 'presets' => self::SHADOW_PRESETS_NOSHADOW, + 'effect' => null, + 'color' => array( + 'type' => self::EXCEL_COLOR_TYPE_STANDARD, + 'value' => 'black', + 'alpha' => 85, + ), + 'size' => array( + 'sx' => null, + 'sy' => null, + 'kx' => null + ), + 'blur' => null, + 'direction' => null, + 'distance' => null, + 'algn' => null, + 'rotWithShape' => null + ); + + private $glowProperties = array( + 'size' => null, + 'color' => array( + 'type' => self::EXCEL_COLOR_TYPE_STANDARD, + 'value' => 'black', + 'alpha' => 40 + ) + ); + + private $softEdges = array( + 'size' => null + ); + + /** + * Get Object State + * + * @return bool + */ + + public function getObjectState() + { + return $this->objectState; + } + + /** + * Change Object State to True + * + * @return PHPExcel_Chart_GridLines + */ + + private function activateObject() + { + $this->objectState = true; + + return $this; + } + + /** + * Set Line Color Properties + * + * @param string $value + * @param int $alpha + * @param string $type + */ + + public function setLineColorProperties($value, $alpha = 0, $type = self::EXCEL_COLOR_TYPE_STANDARD) + { + $this->activateObject() + ->lineProperties['color'] = $this->setColorProperties( + $value, + $alpha, + $type + ); + } + + /** + * Set Line Color Properties + * + * @param float $line_width + * @param string $compound_type + * @param string $dash_type + * @param string $cap_type + * @param string $join_type + * @param string $head_arrow_type + * @param string $head_arrow_size + * @param string $end_arrow_type + * @param string $end_arrow_size + */ + + public function setLineStyleProperties($line_width = null, $compound_type = null, $dash_type = null, $cap_type = null, $join_type = null, $head_arrow_type = null, $head_arrow_size = null, $end_arrow_type = null, $end_arrow_size = null) + { + $this->activateObject(); + (!is_null($line_width)) + ? $this->lineProperties['style']['width'] = $this->getExcelPointsWidth((float) $line_width) + : null; + (!is_null($compound_type)) + ? $this->lineProperties['style']['compound'] = (string) $compound_type + : null; + (!is_null($dash_type)) + ? $this->lineProperties['style']['dash'] = (string) $dash_type + : null; + (!is_null($cap_type)) + ? $this->lineProperties['style']['cap'] = (string) $cap_type + : null; + (!is_null($join_type)) + ? $this->lineProperties['style']['join'] = (string) $join_type + : null; + (!is_null($head_arrow_type)) + ? $this->lineProperties['style']['arrow']['head']['type'] = (string) $head_arrow_type + : null; + (!is_null($head_arrow_size)) + ? $this->lineProperties['style']['arrow']['head']['size'] = (string) $head_arrow_size + : null; + (!is_null($end_arrow_type)) + ? $this->lineProperties['style']['arrow']['end']['type'] = (string) $end_arrow_type + : null; + (!is_null($end_arrow_size)) + ? $this->lineProperties['style']['arrow']['end']['size'] = (string) $end_arrow_size + : null; + } + + /** + * Get Line Color Property + * + * @param string $parameter + * + * @return string + */ + + public function getLineColorProperty($parameter) + { + return $this->lineProperties['color'][$parameter]; + } + + /** + * Get Line Style Property + * + * @param array|string $elements + * + * @return string + */ + + public function getLineStyleProperty($elements) + { + return $this->getArrayElementsValue($this->lineProperties['style'], $elements); + } + + /** + * Set Glow Properties + * + * @param float $size + * @param string $color_value + * @param int $color_alpha + * @param string $color_type + * + */ + + public function setGlowProperties($size, $color_value = null, $color_alpha = null, $color_type = null) + { + $this + ->activateObject() + ->setGlowSize($size) + ->setGlowColor($color_value, $color_alpha, $color_type); + } + + /** + * Get Glow Color Property + * + * @param string $property + * + * @return string + */ + + public function getGlowColor($property) + { + return $this->glowProperties['color'][$property]; + } + + /** + * Get Glow Size + * + * @return string + */ + + public function getGlowSize() + { + return $this->glowProperties['size']; + } + + /** + * Set Glow Size + * + * @param float $size + * + * @return PHPExcel_Chart_GridLines + */ + + private function setGlowSize($size) + { + $this->glowProperties['size'] = $this->getExcelPointsWidth((float) $size); + + return $this; + } + + /** + * Set Glow Color + * + * @param string $color + * @param int $alpha + * @param string $type + * + * @return PHPExcel_Chart_GridLines + */ + + private function setGlowColor($color, $alpha, $type) + { + if (!is_null($color)) { + $this->glowProperties['color']['value'] = (string) $color; + } + if (!is_null($alpha)) { + $this->glowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); + } + if (!is_null($type)) { + $this->glowProperties['color']['type'] = (string) $type; + } + + return $this; + } + + /** + * Get Line Style Arrow Parameters + * + * @param string $arrow_selector + * @param string $property_selector + * + * @return string + */ + + public function getLineStyleArrowParameters($arrow_selector, $property_selector) + { + return $this->getLineStyleArrowSize($this->lineProperties['style']['arrow'][$arrow_selector]['size'], $property_selector); + } + + /** + * Set Shadow Properties + * + * @param int $sh_presets + * @param string $sh_color_value + * @param string $sh_color_type + * @param int $sh_color_alpha + * @param string $sh_blur + * @param int $sh_angle + * @param float $sh_distance + * + */ + + public function setShadowProperties($sh_presets, $sh_color_value = null, $sh_color_type = null, $sh_color_alpha = null, $sh_blur = null, $sh_angle = null, $sh_distance = null) + { + $this->activateObject() + ->setShadowPresetsProperties((int) $sh_presets) + ->setShadowColor( + is_null($sh_color_value) ? $this->shadowProperties['color']['value'] : $sh_color_value, + is_null($sh_color_alpha) ? (int) $this->shadowProperties['color']['alpha'] : $this->getTrueAlpha($sh_color_alpha), + is_null($sh_color_type) ? $this->shadowProperties['color']['type'] : $sh_color_type + ) + ->setShadowBlur($sh_blur) + ->setShadowAngle($sh_angle) + ->setShadowDistance($sh_distance); + } + + /** + * Set Shadow Presets Properties + * + * @param int $shadow_presets + * + * @return PHPExcel_Chart_GridLines + */ + + private function setShadowPresetsProperties($shadow_presets) + { + $this->shadowProperties['presets'] = $shadow_presets; + $this->setShadowProperiesMapValues($this->getShadowPresetsMap($shadow_presets)); + + return $this; + } + + /** + * Set Shadow Properties Values + * + * @param array $properties_map + * @param * $reference + * + * @return PHPExcel_Chart_GridLines + */ + + private function setShadowProperiesMapValues(array $properties_map, &$reference = null) + { + $base_reference = $reference; + foreach ($properties_map as $property_key => $property_val) { + if (is_array($property_val)) { + if ($reference === null) { + $reference = & $this->shadowProperties[$property_key]; + } else { + $reference = & $reference[$property_key]; + } + $this->setShadowProperiesMapValues($property_val, $reference); + } else { + if ($base_reference === null) { + $this->shadowProperties[$property_key] = $property_val; + } else { + $reference[$property_key] = $property_val; + } + } + } + + return $this; + } + + /** + * Set Shadow Color + * + * @param string $color + * @param int $alpha + * @param string $type + * @return PHPExcel_Chart_GridLines + */ + private function setShadowColor($color, $alpha, $type) + { + if (!is_null($color)) { + $this->shadowProperties['color']['value'] = (string) $color; + } + if (!is_null($alpha)) { + $this->shadowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); + } + if (!is_null($type)) { + $this->shadowProperties['color']['type'] = (string) $type; + } + + return $this; + } + + /** + * Set Shadow Blur + * + * @param float $blur + * + * @return PHPExcel_Chart_GridLines + */ + private function setShadowBlur($blur) + { + if ($blur !== null) { + $this->shadowProperties['blur'] = (string) $this->getExcelPointsWidth($blur); + } + + return $this; + } + + /** + * Set Shadow Angle + * + * @param int $angle + * @return PHPExcel_Chart_GridLines + */ + + private function setShadowAngle($angle) + { + if ($angle !== null) { + $this->shadowProperties['direction'] = (string) $this->getExcelPointsAngle($angle); + } + + return $this; + } + + /** + * Set Shadow Distance + * + * @param float $distance + * @return PHPExcel_Chart_GridLines + */ + private function setShadowDistance($distance) + { + if ($distance !== null) { + $this->shadowProperties['distance'] = (string) $this->getExcelPointsWidth($distance); + } + + return $this; + } + + /** + * Get Shadow Property + * + * @param string $elements + * @param array $elements + * @return string + */ + public function getShadowProperty($elements) + { + return $this->getArrayElementsValue($this->shadowProperties, $elements); + } + + /** + * Set Soft Edges Size + * + * @param float $size + */ + public function setSoftEdgesSize($size) + { + if (!is_null($size)) { + $this->activateObject(); + $softEdges['size'] = (string) $this->getExcelPointsWidth($size); + } + } + + /** + * Get Soft Edges Size + * + * @return string + */ + public function getSoftEdgesSize() + { + return $this->softEdges['size']; + } +} diff --git a/assets/excel/PHPExcel/Chart/Layout.php b/assets/excel/PHPExcel/Chart/Layout.php new file mode 100644 index 0000000..7fef074 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Layout.php @@ -0,0 +1,486 @@ +layoutTarget = $layout['layoutTarget']; + } + if (isset($layout['xMode'])) { + $this->xMode = $layout['xMode']; + } + if (isset($layout['yMode'])) { + $this->yMode = $layout['yMode']; + } + if (isset($layout['x'])) { + $this->xPos = (float) $layout['x']; + } + if (isset($layout['y'])) { + $this->yPos = (float) $layout['y']; + } + if (isset($layout['w'])) { + $this->width = (float) $layout['w']; + } + if (isset($layout['h'])) { + $this->height = (float) $layout['h']; + } + } + + /** + * Get Layout Target + * + * @return string + */ + public function getLayoutTarget() + { + return $this->layoutTarget; + } + + /** + * Set Layout Target + * + * @param Layout Target $value + * @return PHPExcel_Chart_Layout + */ + public function setLayoutTarget($value) + { + $this->layoutTarget = $value; + return $this; + } + + /** + * Get X-Mode + * + * @return string + */ + public function getXMode() + { + return $this->xMode; + } + + /** + * Set X-Mode + * + * @param X-Mode $value + * @return PHPExcel_Chart_Layout + */ + public function setXMode($value) + { + $this->xMode = $value; + return $this; + } + + /** + * Get Y-Mode + * + * @return string + */ + public function getYMode() + { + return $this->yMode; + } + + /** + * Set Y-Mode + * + * @param Y-Mode $value + * @return PHPExcel_Chart_Layout + */ + public function setYMode($value) + { + $this->yMode = $value; + return $this; + } + + /** + * Get X-Position + * + * @return number + */ + public function getXPosition() + { + return $this->xPos; + } + + /** + * Set X-Position + * + * @param X-Position $value + * @return PHPExcel_Chart_Layout + */ + public function setXPosition($value) + { + $this->xPos = $value; + return $this; + } + + /** + * Get Y-Position + * + * @return number + */ + public function getYPosition() + { + return $this->yPos; + } + + /** + * Set Y-Position + * + * @param Y-Position $value + * @return PHPExcel_Chart_Layout + */ + public function setYPosition($value) + { + $this->yPos = $value; + return $this; + } + + /** + * Get Width + * + * @return number + */ + public function getWidth() + { + return $this->width; + } + + /** + * Set Width + * + * @param Width $value + * @return PHPExcel_Chart_Layout + */ + public function setWidth($value) + { + $this->width = $value; + return $this; + } + + /** + * Get Height + * + * @return number + */ + public function getHeight() + { + return $this->height; + } + + /** + * Set Height + * + * @param Height $value + * @return PHPExcel_Chart_Layout + */ + public function setHeight($value) + { + $this->height = $value; + return $this; + } + + + /** + * Get show legend key + * + * @return boolean + */ + public function getShowLegendKey() + { + return $this->showLegendKey; + } + + /** + * Set show legend key + * Specifies that legend keys should be shown in data labels. + * + * @param boolean $value Show legend key + * @return PHPExcel_Chart_Layout + */ + public function setShowLegendKey($value) + { + $this->showLegendKey = $value; + return $this; + } + + /** + * Get show value + * + * @return boolean + */ + public function getShowVal() + { + return $this->showVal; + } + + /** + * Set show val + * Specifies that the value should be shown in data labels. + * + * @param boolean $value Show val + * @return PHPExcel_Chart_Layout + */ + public function setShowVal($value) + { + $this->showVal = $value; + return $this; + } + + /** + * Get show category name + * + * @return boolean + */ + public function getShowCatName() + { + return $this->showCatName; + } + + /** + * Set show cat name + * Specifies that the category name should be shown in data labels. + * + * @param boolean $value Show cat name + * @return PHPExcel_Chart_Layout + */ + public function setShowCatName($value) + { + $this->showCatName = $value; + return $this; + } + + /** + * Get show data series name + * + * @return boolean + */ + public function getShowSerName() + { + return $this->showSerName; + } + + /** + * Set show ser name + * Specifies that the series name should be shown in data labels. + * + * @param boolean $value Show series name + * @return PHPExcel_Chart_Layout + */ + public function setShowSerName($value) + { + $this->showSerName = $value; + return $this; + } + + /** + * Get show percentage + * + * @return boolean + */ + public function getShowPercent() + { + return $this->showPercent; + } + + /** + * Set show percentage + * Specifies that the percentage should be shown in data labels. + * + * @param boolean $value Show percentage + * @return PHPExcel_Chart_Layout + */ + public function setShowPercent($value) + { + $this->showPercent = $value; + return $this; + } + + /** + * Get show bubble size + * + * @return boolean + */ + public function getShowBubbleSize() + { + return $this->showBubbleSize; + } + + /** + * Set show bubble size + * Specifies that the bubble size should be shown in data labels. + * + * @param boolean $value Show bubble size + * @return PHPExcel_Chart_Layout + */ + public function setShowBubbleSize($value) + { + $this->showBubbleSize = $value; + return $this; + } + + /** + * Get show leader lines + * + * @return boolean + */ + public function getShowLeaderLines() + { + return $this->showLeaderLines; + } + + /** + * Set show leader lines + * Specifies that leader lines should be shown in data labels. + * + * @param boolean $value Show leader lines + * @return PHPExcel_Chart_Layout + */ + public function setShowLeaderLines($value) + { + $this->showLeaderLines = $value; + return $this; + } +} diff --git a/assets/excel/PHPExcel/Chart/Legend.php b/assets/excel/PHPExcel/Chart/Legend.php new file mode 100644 index 0000000..e850eb5 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Legend.php @@ -0,0 +1,170 @@ + self::POSITION_BOTTOM, + self::xlLegendPositionCorner => self::POSITION_TOPRIGHT, + self::xlLegendPositionCustom => '??', + self::xlLegendPositionLeft => self::POSITION_LEFT, + self::xlLegendPositionRight => self::POSITION_RIGHT, + self::xlLegendPositionTop => self::POSITION_TOP + ); + + /** + * Legend position + * + * @var string + */ + private $position = self::POSITION_RIGHT; + + /** + * Allow overlay of other elements? + * + * @var boolean + */ + private $overlay = true; + + /** + * Legend Layout + * + * @var PHPExcel_Chart_Layout + */ + private $layout = null; + + + /** + * Create a new PHPExcel_Chart_Legend + */ + public function __construct($position = self::POSITION_RIGHT, PHPExcel_Chart_Layout $layout = null, $overlay = false) + { + $this->setPosition($position); + $this->layout = $layout; + $this->setOverlay($overlay); + } + + /** + * Get legend position as an excel string value + * + * @return string + */ + public function getPosition() + { + return $this->position; + } + + /** + * Get legend position using an excel string value + * + * @param string $position + */ + public function setPosition($position = self::POSITION_RIGHT) + { + if (!in_array($position, self::$positionXLref)) { + return false; + } + + $this->position = $position; + return true; + } + + /** + * Get legend position as an Excel internal numeric value + * + * @return number + */ + public function getPositionXL() + { + return array_search($this->position, self::$positionXLref); + } + + /** + * Set legend position using an Excel internal numeric value + * + * @param number $positionXL + */ + public function setPositionXL($positionXL = self::xlLegendPositionRight) + { + if (!array_key_exists($positionXL, self::$positionXLref)) { + return false; + } + + $this->position = self::$positionXLref[$positionXL]; + return true; + } + + /** + * Get allow overlay of other elements? + * + * @return boolean + */ + public function getOverlay() + { + return $this->overlay; + } + + /** + * Set allow overlay of other elements? + * + * @param boolean $overlay + * @return boolean + */ + public function setOverlay($overlay = false) + { + if (!is_bool($overlay)) { + return false; + } + + $this->overlay = $overlay; + return true; + } + + /** + * Get Layout + * + * @return PHPExcel_Chart_Layout + */ + public function getLayout() + { + return $this->layout; + } +} diff --git a/assets/excel/PHPExcel/Chart/PlotArea.php b/assets/excel/PHPExcel/Chart/PlotArea.php new file mode 100644 index 0000000..551cc51 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/PlotArea.php @@ -0,0 +1,126 @@ +layout = $layout; + $this->plotSeries = $plotSeries; + } + + /** + * Get Layout + * + * @return PHPExcel_Chart_Layout + */ + public function getLayout() + { + return $this->layout; + } + + /** + * Get Number of Plot Groups + * + * @return array of PHPExcel_Chart_DataSeries + */ + public function getPlotGroupCount() + { + return count($this->plotSeries); + } + + /** + * Get Number of Plot Series + * + * @return integer + */ + public function getPlotSeriesCount() + { + $seriesCount = 0; + foreach ($this->plotSeries as $plot) { + $seriesCount += $plot->getPlotSeriesCount(); + } + return $seriesCount; + } + + /** + * Get Plot Series + * + * @return array of PHPExcel_Chart_DataSeries + */ + public function getPlotGroup() + { + return $this->plotSeries; + } + + /** + * Get Plot Series by Index + * + * @return PHPExcel_Chart_DataSeries + */ + public function getPlotGroupByIndex($index) + { + return $this->plotSeries[$index]; + } + + /** + * Set Plot Series + * + * @param [PHPExcel_Chart_DataSeries] + * @return PHPExcel_Chart_PlotArea + */ + public function setPlotSeries($plotSeries = array()) + { + $this->plotSeries = $plotSeries; + + return $this; + } + + public function refresh(PHPExcel_Worksheet $worksheet) + { + foreach ($this->plotSeries as $plotSeries) { + $plotSeries->refresh($worksheet); + } + } +} diff --git a/assets/excel/PHPExcel/Chart/Properties.php b/assets/excel/PHPExcel/Chart/Properties.php new file mode 100644 index 0000000..9bb6e93 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Properties.php @@ -0,0 +1,363 @@ + (string) $type, + 'value' => (string) $color, + 'alpha' => (string) $this->getTrueAlpha($alpha) + ); + } + + protected function getLineStyleArrowSize($array_selector, $array_kay_selector) + { + $sizes = array( + 1 => array('w' => 'sm', 'len' => 'sm'), + 2 => array('w' => 'sm', 'len' => 'med'), + 3 => array('w' => 'sm', 'len' => 'lg'), + 4 => array('w' => 'med', 'len' => 'sm'), + 5 => array('w' => 'med', 'len' => 'med'), + 6 => array('w' => 'med', 'len' => 'lg'), + 7 => array('w' => 'lg', 'len' => 'sm'), + 8 => array('w' => 'lg', 'len' => 'med'), + 9 => array('w' => 'lg', 'len' => 'lg') + ); + + return $sizes[$array_selector][$array_kay_selector]; + } + + protected function getShadowPresetsMap($shadow_presets_option) + { + $presets_options = array( + //OUTER + 1 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '2700000', + 'algn' => 'tl', + 'rotWithShape' => '0' + ), + 2 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '5400000', + 'algn' => 't', + 'rotWithShape' => '0' + ), + 3 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '8100000', + 'algn' => 'tr', + 'rotWithShape' => '0' + ), + 4 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'algn' => 'l', + 'rotWithShape' => '0' + ), + 5 => array( + 'effect' => 'outerShdw', + 'size' => array( + 'sx' => '102000', + 'sy' => '102000' + ) + , + 'blur' => '63500', + 'distance' => '38100', + 'algn' => 'ctr', + 'rotWithShape' => '0' + ), + 6 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '10800000', + 'algn' => 'r', + 'rotWithShape' => '0' + ), + 7 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '18900000', + 'algn' => 'bl', + 'rotWithShape' => '0' + ), + 8 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '16200000', + 'rotWithShape' => '0' + ), + 9 => array( + 'effect' => 'outerShdw', + 'blur' => '50800', + 'distance' => '38100', + 'direction' => '13500000', + 'algn' => 'br', + 'rotWithShape' => '0' + ), + //INNER + 10 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '2700000', + ), + 11 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '5400000', + ), + 12 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '8100000', + ), + 13 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + ), + 14 => array( + 'effect' => 'innerShdw', + 'blur' => '114300', + ), + 15 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '10800000', + ), + 16 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '18900000', + ), + 17 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '16200000', + ), + 18 => array( + 'effect' => 'innerShdw', + 'blur' => '63500', + 'distance' => '50800', + 'direction' => '13500000', + ), + //perspective + 19 => array( + 'effect' => 'outerShdw', + 'blur' => '152400', + 'distance' => '317500', + 'size' => array( + 'sx' => '90000', + 'sy' => '-19000', + ), + 'direction' => '5400000', + 'rotWithShape' => '0', + ), + 20 => array( + 'effect' => 'outerShdw', + 'blur' => '76200', + 'direction' => '18900000', + 'size' => array( + 'sy' => '23000', + 'kx' => '-1200000', + ), + 'algn' => 'bl', + 'rotWithShape' => '0', + ), + 21 => array( + 'effect' => 'outerShdw', + 'blur' => '76200', + 'direction' => '13500000', + 'size' => array( + 'sy' => '23000', + 'kx' => '1200000', + ), + 'algn' => 'br', + 'rotWithShape' => '0', + ), + 22 => array( + 'effect' => 'outerShdw', + 'blur' => '76200', + 'distance' => '12700', + 'direction' => '2700000', + 'size' => array( + 'sy' => '-23000', + 'kx' => '-800400', + ), + 'algn' => 'bl', + 'rotWithShape' => '0', + ), + 23 => array( + 'effect' => 'outerShdw', + 'blur' => '76200', + 'distance' => '12700', + 'direction' => '8100000', + 'size' => array( + 'sy' => '-23000', + 'kx' => '800400', + ), + 'algn' => 'br', + 'rotWithShape' => '0', + ), + ); + + return $presets_options[$shadow_presets_option]; + } + + protected function getArrayElementsValue($properties, $elements) + { + $reference = & $properties; + if (!is_array($elements)) { + return $reference[$elements]; + } else { + foreach ($elements as $keys) { + $reference = & $reference[$keys]; + } + return $reference; + } + return $this; + } +} diff --git a/assets/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt b/assets/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt new file mode 100644 index 0000000..a088989 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt @@ -0,0 +1,20 @@ +ChartDirector + http://www.advsofteng.com/cdphp.html + +GraPHPite + http://graphpite.sourceforge.net/ + +JpGraph + http://www.aditus.nu/jpgraph/ + +LibChart + http://naku.dohcrew.com/libchart/pages/introduction/ + +pChart + http://pchart.sourceforge.net/ + +TeeChart + http://www.steema.com/products/teechart/overview.html + +PHPGraphLib + http://www.ebrueggeman.com/phpgraphlib \ No newline at end of file diff --git a/assets/excel/PHPExcel/Chart/Renderer/jpgraph.php b/assets/excel/PHPExcel/Chart/Renderer/jpgraph.php new file mode 100644 index 0000000..b3d7396 --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Renderer/jpgraph.php @@ -0,0 +1,883 @@ + MARK_DIAMOND, + 'square' => MARK_SQUARE, + 'triangle' => MARK_UTRIANGLE, + 'x' => MARK_X, + 'star' => MARK_STAR, + 'dot' => MARK_FILLEDCIRCLE, + 'dash' => MARK_DTRIANGLE, + 'circle' => MARK_CIRCLE, + 'plus' => MARK_CROSS + ); + + + private $chart; + + private $graph; + + private static $plotColour = 0; + + private static $plotMark = 0; + + + private function formatPointMarker($seriesPlot, $markerID) + { + $plotMarkKeys = array_keys(self::$markSet); + if (is_null($markerID)) { + // Use default plot marker (next marker in the series) + self::$plotMark %= count(self::$markSet); + $seriesPlot->mark->SetType(self::$markSet[$plotMarkKeys[self::$plotMark++]]); + } elseif ($markerID !== 'none') { + // Use specified plot marker (if it exists) + if (isset(self::$markSet[$markerID])) { + $seriesPlot->mark->SetType(self::$markSet[$markerID]); + } else { + // If the specified plot marker doesn't exist, use default plot marker (next marker in the series) + self::$plotMark %= count(self::$markSet); + $seriesPlot->mark->SetType(self::$markSet[$plotMarkKeys[self::$plotMark++]]); + } + } else { + // Hide plot marker + $seriesPlot->mark->Hide(); + } + $seriesPlot->mark->SetColor(self::$colourSet[self::$plotColour]); + $seriesPlot->mark->SetFillColor(self::$colourSet[self::$plotColour]); + $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); + + return $seriesPlot; + } + + + private function formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation = '') + { + $datasetLabelFormatCode = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getFormatCode(); + if (!is_null($datasetLabelFormatCode)) { + // Retrieve any label formatting code + $datasetLabelFormatCode = stripslashes($datasetLabelFormatCode); + } + + $testCurrentIndex = 0; + foreach ($datasetLabels as $i => $datasetLabel) { + if (is_array($datasetLabel)) { + if ($rotation == 'bar') { + $datasetLabels[$i] = implode(" ", $datasetLabel); + } else { + $datasetLabel = array_reverse($datasetLabel); + $datasetLabels[$i] = implode("\n", $datasetLabel); + } + } else { + // Format labels according to any formatting code + if (!is_null($datasetLabelFormatCode)) { + $datasetLabels[$i] = PHPExcel_Style_NumberFormat::toFormattedString($datasetLabel, $datasetLabelFormatCode); + } + } + ++$testCurrentIndex; + } + + return $datasetLabels; + } + + + private function percentageSumCalculation($groupID, $seriesCount) + { + // Adjust our values to a percentage value across all series in the group + for ($i = 0; $i < $seriesCount; ++$i) { + if ($i == 0) { + $sumValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + } else { + $nextValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + foreach ($nextValues as $k => $value) { + if (isset($sumValues[$k])) { + $sumValues[$k] += $value; + } else { + $sumValues[$k] = $value; + } + } + } + } + + return $sumValues; + } + + + private function percentageAdjustValues($dataValues, $sumValues) + { + foreach ($dataValues as $k => $dataValue) { + $dataValues[$k] = $dataValue / $sumValues[$k] * 100; + } + + return $dataValues; + } + + + private function getCaption($captionElement) + { + // Read any caption + $caption = (!is_null($captionElement)) ? $captionElement->getCaption() : null; + // Test if we have a title caption to display + if (!is_null($caption)) { + // If we do, it could be a plain string or an array + if (is_array($caption)) { + // Implode an array to a plain string + $caption = implode('', $caption); + } + } + return $caption; + } + + + private function renderTitle() + { + $title = $this->getCaption($this->chart->getTitle()); + if (!is_null($title)) { + $this->graph->title->Set($title); + } + } + + + private function renderLegend() + { + $legend = $this->chart->getLegend(); + if (!is_null($legend)) { + $legendPosition = $legend->getPosition(); + $legendOverlay = $legend->getOverlay(); + switch ($legendPosition) { + case 'r': + $this->graph->legend->SetPos(0.01, 0.5, 'right', 'center'); // right + $this->graph->legend->SetColumns(1); + break; + case 'l': + $this->graph->legend->SetPos(0.01, 0.5, 'left', 'center'); // left + $this->graph->legend->SetColumns(1); + break; + case 't': + $this->graph->legend->SetPos(0.5, 0.01, 'center', 'top'); // top + break; + case 'b': + $this->graph->legend->SetPos(0.5, 0.99, 'center', 'bottom'); // bottom + break; + default: + $this->graph->legend->SetPos(0.01, 0.01, 'right', 'top'); // top-right + $this->graph->legend->SetColumns(1); + break; + } + } else { + $this->graph->legend->Hide(); + } + } + + + private function renderCartesianPlotArea($type = 'textlin') + { + $this->graph = new Graph(self::$width, self::$height); + $this->graph->SetScale($type); + + $this->renderTitle(); + + // Rotate for bar rather than column chart + $rotation = $this->chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotDirection(); + $reverse = ($rotation == 'bar') ? true : false; + + $xAxisLabel = $this->chart->getXAxisLabel(); + if (!is_null($xAxisLabel)) { + $title = $this->getCaption($xAxisLabel); + if (!is_null($title)) { + $this->graph->xaxis->SetTitle($title, 'center'); + $this->graph->xaxis->title->SetMargin(35); + if ($reverse) { + $this->graph->xaxis->title->SetAngle(90); + $this->graph->xaxis->title->SetMargin(90); + } + } + } + + $yAxisLabel = $this->chart->getYAxisLabel(); + if (!is_null($yAxisLabel)) { + $title = $this->getCaption($yAxisLabel); + if (!is_null($title)) { + $this->graph->yaxis->SetTitle($title, 'center'); + if ($reverse) { + $this->graph->yaxis->title->SetAngle(0); + $this->graph->yaxis->title->SetMargin(-55); + } + } + } + } + + + private function renderPiePlotArea($doughnut = false) + { + $this->graph = new PieGraph(self::$width, self::$height); + + $this->renderTitle(); + } + + + private function renderRadarPlotArea() + { + $this->graph = new RadarGraph(self::$width, self::$height); + $this->graph->SetScale('lin'); + + $this->renderTitle(); + } + + + private function renderPlotLine($groupID, $filled = false, $combination = false, $dimensions = '2d') + { + $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); + + $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); + if ($labelCount > 0) { + $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); + $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); + $this->graph->xaxis->SetTickLabels($datasetLabels); + } + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + if ($grouping == 'percentStacked') { + $sumValues = $this->percentageSumCalculation($groupID, $seriesCount); + } + + // Loop through each data series in turn + for ($i = 0; $i < $seriesCount; ++$i) { + $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); + + if ($grouping == 'percentStacked') { + $dataValues = $this->percentageAdjustValues($dataValues, $sumValues); + } + + // Fill in any missing values in the $dataValues array + $testCurrentIndex = 0; + foreach ($dataValues as $k => $dataValue) { + while ($k != $testCurrentIndex) { + $dataValues[$testCurrentIndex] = null; + ++$testCurrentIndex; + } + ++$testCurrentIndex; + } + + $seriesPlot = new LinePlot($dataValues); + if ($combination) { + $seriesPlot->SetBarCenter(); + } + + if ($filled) { + $seriesPlot->SetFilled(true); + $seriesPlot->SetColor('black'); + $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour++]); + } else { + // Set the appropriate plot marker + $this->formatPointMarker($seriesPlot, $marker); + } + $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); + $seriesPlot->SetLegend($dataLabel); + + $seriesPlots[] = $seriesPlot; + } + + if ($grouping == 'standard') { + $groupPlot = $seriesPlots; + } else { + $groupPlot = new AccLinePlot($seriesPlots); + } + $this->graph->Add($groupPlot); + } + + + private function renderPlotBar($groupID, $dimensions = '2d') + { + $rotation = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotDirection(); + // Rotate for bar rather than column chart + if (($groupID == 0) && ($rotation == 'bar')) { + $this->graph->Set90AndMargin(); + } + $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); + + $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); + if ($labelCount > 0) { + $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); + $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation); + // Rotate for bar rather than column chart + if ($rotation == 'bar') { + $datasetLabels = array_reverse($datasetLabels); + $this->graph->yaxis->SetPos('max'); + $this->graph->yaxis->SetLabelAlign('center', 'top'); + $this->graph->yaxis->SetLabelSide(SIDE_RIGHT); + } + $this->graph->xaxis->SetTickLabels($datasetLabels); + } + + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + if ($grouping == 'percentStacked') { + $sumValues = $this->percentageSumCalculation($groupID, $seriesCount); + } + + // Loop through each data series in turn + for ($j = 0; $j < $seriesCount; ++$j) { + $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues(); + if ($grouping == 'percentStacked') { + $dataValues = $this->percentageAdjustValues($dataValues, $sumValues); + } + + // Fill in any missing values in the $dataValues array + $testCurrentIndex = 0; + foreach ($dataValues as $k => $dataValue) { + while ($k != $testCurrentIndex) { + $dataValues[$testCurrentIndex] = null; + ++$testCurrentIndex; + } + ++$testCurrentIndex; + } + + // Reverse the $dataValues order for bar rather than column chart + if ($rotation == 'bar') { + $dataValues = array_reverse($dataValues); + } + $seriesPlot = new BarPlot($dataValues); + $seriesPlot->SetColor('black'); + $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour++]); + if ($dimensions == '3d') { + $seriesPlot->SetShadow(); + } + if (!$this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)) { + $dataLabel = ''; + } else { + $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)->getDataValue(); + } + $seriesPlot->SetLegend($dataLabel); + + $seriesPlots[] = $seriesPlot; + } + // Reverse the plot order for bar rather than column chart + if (($rotation == 'bar') && (!($grouping == 'percentStacked'))) { + $seriesPlots = array_reverse($seriesPlots); + } + + if ($grouping == 'clustered') { + $groupPlot = new GroupBarPlot($seriesPlots); + } elseif ($grouping == 'standard') { + $groupPlot = new GroupBarPlot($seriesPlots); + } else { + $groupPlot = new AccBarPlot($seriesPlots); + if ($dimensions == '3d') { + $groupPlot->SetShadow(); + } + } + + $this->graph->Add($groupPlot); + } + + + private function renderPlotScatter($groupID, $bubble) + { + $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); + $scatterStyle = $bubbleSize = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + + // Loop through each data series in turn + for ($i = 0; $i < $seriesCount; ++$i) { + $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); + $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + + foreach ($dataValuesY as $k => $dataValueY) { + $dataValuesY[$k] = $k; + } + + $seriesPlot = new ScatterPlot($dataValuesX, $dataValuesY); + if ($scatterStyle == 'lineMarker') { + $seriesPlot->SetLinkPoints(); + $seriesPlot->link->SetColor(self::$colourSet[self::$plotColour]); + } elseif ($scatterStyle == 'smoothMarker') { + $spline = new Spline($dataValuesY, $dataValuesX); + list($splineDataY, $splineDataX) = $spline->Get(count($dataValuesX) * self::$width / 20); + $lplot = new LinePlot($splineDataX, $splineDataY); + $lplot->SetColor(self::$colourSet[self::$plotColour]); + + $this->graph->Add($lplot); + } + + if ($bubble) { + $this->formatPointMarker($seriesPlot, 'dot'); + $seriesPlot->mark->SetColor('black'); + $seriesPlot->mark->SetSize($bubbleSize); + } else { + $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); + $this->formatPointMarker($seriesPlot, $marker); + } + $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); + $seriesPlot->SetLegend($dataLabel); + + $this->graph->Add($seriesPlot); + } + } + + + private function renderPlotRadar($groupID) + { + $radarStyle = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + + // Loop through each data series in turn + for ($i = 0; $i < $seriesCount; ++$i) { + $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); + $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + $marker = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker(); + + $dataValues = array(); + foreach ($dataValuesY as $k => $dataValueY) { + $dataValues[$k] = implode(' ', array_reverse($dataValueY)); + } + $tmp = array_shift($dataValues); + $dataValues[] = $tmp; + $tmp = array_shift($dataValuesX); + $dataValuesX[] = $tmp; + + $this->graph->SetTitles(array_reverse($dataValues)); + + $seriesPlot = new RadarPlot(array_reverse($dataValuesX)); + + $dataLabel = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue(); + $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); + if ($radarStyle == 'filled') { + $seriesPlot->SetFillColor(self::$colourSet[self::$plotColour]); + } + $this->formatPointMarker($seriesPlot, $marker); + $seriesPlot->SetLegend($dataLabel); + + $this->graph->Add($seriesPlot); + } + } + + + private function renderPlotContour($groupID) + { + $contourStyle = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + + $dataValues = array(); + // Loop through each data series in turn + for ($i = 0; $i < $seriesCount; ++$i) { + $dataValuesY = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues(); + $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues(); + + $dataValues[$i] = $dataValuesX; + } + $seriesPlot = new ContourPlot($dataValues); + + $this->graph->Add($seriesPlot); + } + + + private function renderPlotStock($groupID) + { + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $plotOrder = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotOrder(); + + $dataValues = array(); + // Loop through each data series in turn and build the plot arrays + foreach ($plotOrder as $i => $v) { + $dataValuesX = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($v)->getDataValues(); + foreach ($dataValuesX as $j => $dataValueX) { + $dataValues[$plotOrder[$i]][$j] = $dataValueX; + } + } + if (empty($dataValues)) { + return; + } + + $dataValuesPlot = array(); + // Flatten the plot arrays to a single dimensional array to work with jpgraph + for ($j = 0; $j < count($dataValues[0]); ++$j) { + for ($i = 0; $i < $seriesCount; ++$i) { + $dataValuesPlot[] = $dataValues[$i][$j]; + } + } + + // Set the x-axis labels + $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); + if ($labelCount > 0) { + $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); + $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); + $this->graph->xaxis->SetTickLabels($datasetLabels); + } + + $seriesPlot = new StockPlot($dataValuesPlot); + $seriesPlot->SetWidth(20); + + $this->graph->Add($seriesPlot); + } + + + private function renderAreaChart($groupCount, $dimensions = '2d') + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); + + $this->renderCartesianPlotArea(); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotLine($i, true, false, $dimensions); + } + } + + + private function renderLineChart($groupCount, $dimensions = '2d') + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); + + $this->renderCartesianPlotArea(); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotLine($i, false, false, $dimensions); + } + } + + + private function renderBarChart($groupCount, $dimensions = '2d') + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_bar.php'); + + $this->renderCartesianPlotArea(); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotBar($i, $dimensions); + } + } + + + private function renderScatterChart($groupCount) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_regstat.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); + + $this->renderCartesianPlotArea('linlin'); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotScatter($i, false); + } + } + + + private function renderBubbleChart($groupCount) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); + + $this->renderCartesianPlotArea('linlin'); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotScatter($i, true); + } + } + + + private function renderPieChart($groupCount, $dimensions = '2d', $doughnut = false, $multiplePlots = false) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_pie.php'); + if ($dimensions == '3d') { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_pie3d.php'); + } + + $this->renderPiePlotArea($doughnut); + + $iLimit = ($multiplePlots) ? $groupCount : 1; + for ($groupID = 0; $groupID < $iLimit; ++$groupID) { + $grouping = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping(); + $exploded = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle(); + if ($groupID == 0) { + $labelCount = count($this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount()); + if ($labelCount > 0) { + $datasetLabels = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues(); + $datasetLabels = $this->formatDataSetLabels($groupID, $datasetLabels, $labelCount); + } + } + + $seriesCount = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount(); + $seriesPlots = array(); + // For pie charts, we only display the first series: doughnut charts generally display all series + $jLimit = ($multiplePlots) ? $seriesCount : 1; + // Loop through each data series in turn + for ($j = 0; $j < $jLimit; ++$j) { + $dataValues = $this->chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues(); + + // Fill in any missing values in the $dataValues array + $testCurrentIndex = 0; + foreach ($dataValues as $k => $dataValue) { + while ($k != $testCurrentIndex) { + $dataValues[$testCurrentIndex] = null; + ++$testCurrentIndex; + } + ++$testCurrentIndex; + } + + if ($dimensions == '3d') { + $seriesPlot = new PiePlot3D($dataValues); + } else { + if ($doughnut) { + $seriesPlot = new PiePlotC($dataValues); + } else { + $seriesPlot = new PiePlot($dataValues); + } + } + + if ($multiplePlots) { + $seriesPlot->SetSize(($jLimit-$j) / ($jLimit * 4)); + } + + if ($doughnut) { + $seriesPlot->SetMidColor('white'); + } + + $seriesPlot->SetColor(self::$colourSet[self::$plotColour++]); + if (count($datasetLabels) > 0) { + $seriesPlot->SetLabels(array_fill(0, count($datasetLabels), '')); + } + if ($dimensions != '3d') { + $seriesPlot->SetGuideLines(false); + } + if ($j == 0) { + if ($exploded) { + $seriesPlot->ExplodeAll(); + } + $seriesPlot->SetLegends($datasetLabels); + } + + $this->graph->Add($seriesPlot); + } + } + } + + + private function renderRadarChart($groupCount) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_radar.php'); + + $this->renderRadarPlotArea(); + + for ($groupID = 0; $groupID < $groupCount; ++$groupID) { + $this->renderPlotRadar($groupID); + } + } + + + private function renderStockChart($groupCount) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_stock.php'); + + $this->renderCartesianPlotArea('intint'); + + for ($groupID = 0; $groupID < $groupCount; ++$groupID) { + $this->renderPlotStock($groupID); + } + } + + + private function renderContourChart($groupCount, $dimensions) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_contour.php'); + + $this->renderCartesianPlotArea('intint'); + + for ($i = 0; $i < $groupCount; ++$i) { + $this->renderPlotContour($i); + } + } + + + private function renderCombinationChart($groupCount, $dimensions, $outputDestination) + { + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_bar.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_scatter.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_regstat.php'); + require_once(PHPExcel_Settings::getChartRendererPath().'jpgraph_line.php'); + + $this->renderCartesianPlotArea(); + + for ($i = 0; $i < $groupCount; ++$i) { + $dimensions = null; + $chartType = $this->chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); + switch ($chartType) { + case 'area3DChart': + $dimensions = '3d'; + // no break + case 'areaChart': + $this->renderPlotLine($i, true, true, $dimensions); + break; + case 'bar3DChart': + $dimensions = '3d'; + // no break + case 'barChart': + $this->renderPlotBar($i, $dimensions); + break; + case 'line3DChart': + $dimensions = '3d'; + // no break + case 'lineChart': + $this->renderPlotLine($i, false, true, $dimensions); + break; + case 'scatterChart': + $this->renderPlotScatter($i, false); + break; + case 'bubbleChart': + $this->renderPlotScatter($i, true); + break; + default: + $this->graph = null; + return false; + } + } + + $this->renderLegend(); + + $this->graph->Stroke($outputDestination); + return true; + } + + + public function render($outputDestination) + { + self::$plotColour = 0; + + $groupCount = $this->chart->getPlotArea()->getPlotGroupCount(); + + $dimensions = null; + if ($groupCount == 1) { + $chartType = $this->chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType(); + } else { + $chartTypes = array(); + for ($i = 0; $i < $groupCount; ++$i) { + $chartTypes[] = $this->chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType(); + } + $chartTypes = array_unique($chartTypes); + if (count($chartTypes) == 1) { + $chartType = array_pop($chartTypes); + } elseif (count($chartTypes) == 0) { + echo 'Chart is not yet implemented
      '; + return false; + } else { + return $this->renderCombinationChart($groupCount, $dimensions, $outputDestination); + } + } + + switch ($chartType) { + case 'area3DChart': + $dimensions = '3d'; + // no break + case 'areaChart': + $this->renderAreaChart($groupCount, $dimensions); + break; + case 'bar3DChart': + $dimensions = '3d'; + // no break + case 'barChart': + $this->renderBarChart($groupCount, $dimensions); + break; + case 'line3DChart': + $dimensions = '3d'; + // no break + case 'lineChart': + $this->renderLineChart($groupCount, $dimensions); + break; + case 'pie3DChart': + $dimensions = '3d'; + // no break + case 'pieChart': + $this->renderPieChart($groupCount, $dimensions, false, false); + break; + case 'doughnut3DChart': + $dimensions = '3d'; + // no break + case 'doughnutChart': + $this->renderPieChart($groupCount, $dimensions, true, true); + break; + case 'scatterChart': + $this->renderScatterChart($groupCount); + break; + case 'bubbleChart': + $this->renderBubbleChart($groupCount); + break; + case 'radarChart': + $this->renderRadarChart($groupCount); + break; + case 'surface3DChart': + $dimensions = '3d'; + // no break + case 'surfaceChart': + $this->renderContourChart($groupCount, $dimensions); + break; + case 'stockChart': + $this->renderStockChart($groupCount, $dimensions); + break; + default: + echo $chartType.' is not yet implemented
      '; + return false; + } + $this->renderLegend(); + + $this->graph->Stroke($outputDestination); + return true; + } + + + /** + * Create a new PHPExcel_Chart_Renderer_jpgraph + */ + public function __construct(PHPExcel_Chart $chart) + { + $this->graph = null; + $this->chart = $chart; + } +} diff --git a/assets/excel/PHPExcel/Chart/Title.php b/assets/excel/PHPExcel/Chart/Title.php new file mode 100644 index 0000000..d8dc14f --- /dev/null +++ b/assets/excel/PHPExcel/Chart/Title.php @@ -0,0 +1,86 @@ +caption = $caption; + $this->layout = $layout; + } + + /** + * Get caption + * + * @return string + */ + public function getCaption() + { + return $this->caption; + } + + /** + * Set caption + * + * @param string $caption + * @return PHPExcel_Chart_Title + */ + public function setCaption($caption = null) + { + $this->caption = $caption; + + return $this; + } + + /** + * Get Layout + * + * @return PHPExcel_Chart_Layout + */ + public function getLayout() + { + return $this->layout; + } +} diff --git a/assets/excel/PHPExcel/Comment.php b/assets/excel/PHPExcel/Comment.php new file mode 100644 index 0000000..d55363f --- /dev/null +++ b/assets/excel/PHPExcel/Comment.php @@ -0,0 +1,338 @@ +author = 'Author'; + $this->text = new PHPExcel_RichText(); + $this->fillColor = new PHPExcel_Style_Color('FFFFFFE1'); + $this->alignment = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; + } + + /** + * Get Author + * + * @return string + */ + public function getAuthor() + { + return $this->author; + } + + /** + * Set Author + * + * @param string $pValue + * @return PHPExcel_Comment + */ + public function setAuthor($pValue = '') + { + $this->author = $pValue; + return $this; + } + + /** + * Get Rich text comment + * + * @return PHPExcel_RichText + */ + public function getText() + { + return $this->text; + } + + /** + * Set Rich text comment + * + * @param PHPExcel_RichText $pValue + * @return PHPExcel_Comment + */ + public function setText(PHPExcel_RichText $pValue) + { + $this->text = $pValue; + return $this; + } + + /** + * Get comment width (CSS style, i.e. XXpx or YYpt) + * + * @return string + */ + public function getWidth() + { + return $this->width; + } + + /** + * Set comment width (CSS style, i.e. XXpx or YYpt) + * + * @param string $value + * @return PHPExcel_Comment + */ + public function setWidth($value = '96pt') + { + $this->width = $value; + return $this; + } + + /** + * Get comment height (CSS style, i.e. XXpx or YYpt) + * + * @return string + */ + public function getHeight() + { + return $this->height; + } + + /** + * Set comment height (CSS style, i.e. XXpx or YYpt) + * + * @param string $value + * @return PHPExcel_Comment + */ + public function setHeight($value = '55.5pt') + { + $this->height = $value; + return $this; + } + + /** + * Get left margin (CSS style, i.e. XXpx or YYpt) + * + * @return string + */ + public function getMarginLeft() + { + return $this->marginLeft; + } + + /** + * Set left margin (CSS style, i.e. XXpx or YYpt) + * + * @param string $value + * @return PHPExcel_Comment + */ + public function setMarginLeft($value = '59.25pt') + { + $this->marginLeft = $value; + return $this; + } + + /** + * Get top margin (CSS style, i.e. XXpx or YYpt) + * + * @return string + */ + public function getMarginTop() + { + return $this->marginTop; + } + + /** + * Set top margin (CSS style, i.e. XXpx or YYpt) + * + * @param string $value + * @return PHPExcel_Comment + */ + public function setMarginTop($value = '1.5pt') + { + $this->marginTop = $value; + return $this; + } + + /** + * Is the comment visible by default? + * + * @return boolean + */ + public function getVisible() + { + return $this->visible; + } + + /** + * Set comment default visibility + * + * @param boolean $value + * @return PHPExcel_Comment + */ + public function setVisible($value = false) + { + $this->visible = $value; + return $this; + } + + /** + * Get fill color + * + * @return PHPExcel_Style_Color + */ + public function getFillColor() + { + return $this->fillColor; + } + + /** + * Set Alignment + * + * @param string $pValue + * @return PHPExcel_Comment + */ + public function setAlignment($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) + { + $this->alignment = $pValue; + return $this; + } + + /** + * Get Alignment + * + * @return string + */ + public function getAlignment() + { + return $this->alignment; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->author . + $this->text->getHashCode() . + $this->width . + $this->height . + $this->marginLeft . + $this->marginTop . + ($this->visible ? 1 : 0) . + $this->fillColor->getHashCode() . + $this->alignment . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } + + /** + * Convert to string + * + * @return string + */ + public function __toString() + { + return $this->text->getPlainText(); + } +} diff --git a/assets/excel/PHPExcel/DocumentProperties.php b/assets/excel/PHPExcel/DocumentProperties.php new file mode 100644 index 0000000..2395ba9 --- /dev/null +++ b/assets/excel/PHPExcel/DocumentProperties.php @@ -0,0 +1,611 @@ +lastModifiedBy = $this->creator; + $this->created = time(); + $this->modified = time(); + } + + /** + * Get Creator + * + * @return string + */ + public function getCreator() + { + return $this->creator; + } + + /** + * Set Creator + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setCreator($pValue = '') + { + $this->creator = $pValue; + return $this; + } + + /** + * Get Last Modified By + * + * @return string + */ + public function getLastModifiedBy() + { + return $this->lastModifiedBy; + } + + /** + * Set Last Modified By + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setLastModifiedBy($pValue = '') + { + $this->lastModifiedBy = $pValue; + return $this; + } + + /** + * Get Created + * + * @return datetime + */ + public function getCreated() + { + return $this->created; + } + + /** + * Set Created + * + * @param datetime $pValue + * @return PHPExcel_DocumentProperties + */ + public function setCreated($pValue = null) + { + if ($pValue === null) { + $pValue = time(); + } elseif (is_string($pValue)) { + if (is_numeric($pValue)) { + $pValue = intval($pValue); + } else { + $pValue = strtotime($pValue); + } + } + + $this->created = $pValue; + return $this; + } + + /** + * Get Modified + * + * @return datetime + */ + public function getModified() + { + return $this->modified; + } + + /** + * Set Modified + * + * @param datetime $pValue + * @return PHPExcel_DocumentProperties + */ + public function setModified($pValue = null) + { + if ($pValue === null) { + $pValue = time(); + } elseif (is_string($pValue)) { + if (is_numeric($pValue)) { + $pValue = intval($pValue); + } else { + $pValue = strtotime($pValue); + } + } + + $this->modified = $pValue; + return $this; + } + + /** + * Get Title + * + * @return string + */ + public function getTitle() + { + return $this->title; + } + + /** + * Set Title + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setTitle($pValue = '') + { + $this->title = $pValue; + return $this; + } + + /** + * Get Description + * + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set Description + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setDescription($pValue = '') + { + $this->description = $pValue; + return $this; + } + + /** + * Get Subject + * + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * Set Subject + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setSubject($pValue = '') + { + $this->subject = $pValue; + return $this; + } + + /** + * Get Keywords + * + * @return string + */ + public function getKeywords() + { + return $this->keywords; + } + + /** + * Set Keywords + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setKeywords($pValue = '') + { + $this->keywords = $pValue; + return $this; + } + + /** + * Get Category + * + * @return string + */ + public function getCategory() + { + return $this->category; + } + + /** + * Set Category + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setCategory($pValue = '') + { + $this->category = $pValue; + return $this; + } + + /** + * Get Company + * + * @return string + */ + public function getCompany() + { + return $this->company; + } + + /** + * Set Company + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setCompany($pValue = '') + { + $this->company = $pValue; + return $this; + } + + /** + * Get Manager + * + * @return string + */ + public function getManager() + { + return $this->manager; + } + + /** + * Set Manager + * + * @param string $pValue + * @return PHPExcel_DocumentProperties + */ + public function setManager($pValue = '') + { + $this->manager = $pValue; + return $this; + } + + /** + * Get a List of Custom Property Names + * + * @return array of string + */ + public function getCustomProperties() + { + return array_keys($this->customProperties); + } + + /** + * Check if a Custom Property is defined + * + * @param string $propertyName + * @return boolean + */ + public function isCustomPropertySet($propertyName) + { + return isset($this->customProperties[$propertyName]); + } + + /** + * Get a Custom Property Value + * + * @param string $propertyName + * @return string + */ + public function getCustomPropertyValue($propertyName) + { + if (isset($this->customProperties[$propertyName])) { + return $this->customProperties[$propertyName]['value']; + } + + } + + /** + * Get a Custom Property Type + * + * @param string $propertyName + * @return string + */ + public function getCustomPropertyType($propertyName) + { + if (isset($this->customProperties[$propertyName])) { + return $this->customProperties[$propertyName]['type']; + } + + } + + /** + * Set a Custom Property + * + * @param string $propertyName + * @param mixed $propertyValue + * @param string $propertyType + * 'i' : Integer + * 'f' : Floating Point + * 's' : String + * 'd' : Date/Time + * 'b' : Boolean + * @return PHPExcel_DocumentProperties + */ + public function setCustomProperty($propertyName, $propertyValue = '', $propertyType = null) + { + if (($propertyType === null) || (!in_array($propertyType, array(self::PROPERTY_TYPE_INTEGER, + self::PROPERTY_TYPE_FLOAT, + self::PROPERTY_TYPE_STRING, + self::PROPERTY_TYPE_DATE, + self::PROPERTY_TYPE_BOOLEAN)))) { + if ($propertyValue === null) { + $propertyType = self::PROPERTY_TYPE_STRING; + } elseif (is_float($propertyValue)) { + $propertyType = self::PROPERTY_TYPE_FLOAT; + } elseif (is_int($propertyValue)) { + $propertyType = self::PROPERTY_TYPE_INTEGER; + } elseif (is_bool($propertyValue)) { + $propertyType = self::PROPERTY_TYPE_BOOLEAN; + } else { + $propertyType = self::PROPERTY_TYPE_STRING; + } + } + + $this->customProperties[$propertyName] = array( + 'value' => $propertyValue, + 'type' => $propertyType + ); + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } + + public static function convertProperty($propertyValue, $propertyType) + { + switch ($propertyType) { + case 'empty': // Empty + return ''; + break; + case 'null': // Null + return null; + break; + case 'i1': // 1-Byte Signed Integer + case 'i2': // 2-Byte Signed Integer + case 'i4': // 4-Byte Signed Integer + case 'i8': // 8-Byte Signed Integer + case 'int': // Integer + return (int) $propertyValue; + break; + case 'ui1': // 1-Byte Unsigned Integer + case 'ui2': // 2-Byte Unsigned Integer + case 'ui4': // 4-Byte Unsigned Integer + case 'ui8': // 8-Byte Unsigned Integer + case 'uint': // Unsigned Integer + return abs((int) $propertyValue); + break; + case 'r4': // 4-Byte Real Number + case 'r8': // 8-Byte Real Number + case 'decimal': // Decimal + return (float) $propertyValue; + break; + case 'lpstr': // LPSTR + case 'lpwstr': // LPWSTR + case 'bstr': // Basic String + return $propertyValue; + break; + case 'date': // Date and Time + case 'filetime': // File Time + return strtotime($propertyValue); + break; + case 'bool': // Boolean + return ($propertyValue == 'true') ? true : false; + break; + case 'cy': // Currency + case 'error': // Error Status Code + case 'vector': // Vector + case 'array': // Array + case 'blob': // Binary Blob + case 'oblob': // Binary Blob Object + case 'stream': // Binary Stream + case 'ostream': // Binary Stream Object + case 'storage': // Binary Storage + case 'ostorage': // Binary Storage Object + case 'vstream': // Binary Versioned Stream + case 'clsid': // Class ID + case 'cf': // Clipboard Data + return $propertyValue; + break; + } + return $propertyValue; + } + + public static function convertPropertyType($propertyType) + { + switch ($propertyType) { + case 'i1': // 1-Byte Signed Integer + case 'i2': // 2-Byte Signed Integer + case 'i4': // 4-Byte Signed Integer + case 'i8': // 8-Byte Signed Integer + case 'int': // Integer + case 'ui1': // 1-Byte Unsigned Integer + case 'ui2': // 2-Byte Unsigned Integer + case 'ui4': // 4-Byte Unsigned Integer + case 'ui8': // 8-Byte Unsigned Integer + case 'uint': // Unsigned Integer + return self::PROPERTY_TYPE_INTEGER; + break; + case 'r4': // 4-Byte Real Number + case 'r8': // 8-Byte Real Number + case 'decimal': // Decimal + return self::PROPERTY_TYPE_FLOAT; + break; + case 'empty': // Empty + case 'null': // Null + case 'lpstr': // LPSTR + case 'lpwstr': // LPWSTR + case 'bstr': // Basic String + return self::PROPERTY_TYPE_STRING; + break; + case 'date': // Date and Time + case 'filetime': // File Time + return self::PROPERTY_TYPE_DATE; + break; + case 'bool': // Boolean + return self::PROPERTY_TYPE_BOOLEAN; + break; + case 'cy': // Currency + case 'error': // Error Status Code + case 'vector': // Vector + case 'array': // Array + case 'blob': // Binary Blob + case 'oblob': // Binary Blob Object + case 'stream': // Binary Stream + case 'ostream': // Binary Stream Object + case 'storage': // Binary Storage + case 'ostorage': // Binary Storage Object + case 'vstream': // Binary Versioned Stream + case 'clsid': // Class ID + case 'cf': // Clipboard Data + return self::PROPERTY_TYPE_UNKNOWN; + break; + } + return self::PROPERTY_TYPE_UNKNOWN; + } +} diff --git a/assets/excel/PHPExcel/DocumentSecurity.php b/assets/excel/PHPExcel/DocumentSecurity.php new file mode 100644 index 0000000..ecea0da --- /dev/null +++ b/assets/excel/PHPExcel/DocumentSecurity.php @@ -0,0 +1,222 @@ +lockRevision = false; + $this->lockStructure = false; + $this->lockWindows = false; + $this->revisionsPassword = ''; + $this->workbookPassword = ''; + } + + /** + * Is some sort of document security enabled? + * + * @return boolean + */ + public function isSecurityEnabled() + { + return $this->lockRevision || + $this->lockStructure || + $this->lockWindows; + } + + /** + * Get LockRevision + * + * @return boolean + */ + public function getLockRevision() + { + return $this->lockRevision; + } + + /** + * Set LockRevision + * + * @param boolean $pValue + * @return PHPExcel_DocumentSecurity + */ + public function setLockRevision($pValue = false) + { + $this->lockRevision = $pValue; + return $this; + } + + /** + * Get LockStructure + * + * @return boolean + */ + public function getLockStructure() + { + return $this->lockStructure; + } + + /** + * Set LockStructure + * + * @param boolean $pValue + * @return PHPExcel_DocumentSecurity + */ + public function setLockStructure($pValue = false) + { + $this->lockStructure = $pValue; + return $this; + } + + /** + * Get LockWindows + * + * @return boolean + */ + public function getLockWindows() + { + return $this->lockWindows; + } + + /** + * Set LockWindows + * + * @param boolean $pValue + * @return PHPExcel_DocumentSecurity + */ + public function setLockWindows($pValue = false) + { + $this->lockWindows = $pValue; + return $this; + } + + /** + * Get RevisionsPassword (hashed) + * + * @return string + */ + public function getRevisionsPassword() + { + return $this->revisionsPassword; + } + + /** + * Set RevisionsPassword + * + * @param string $pValue + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @return PHPExcel_DocumentSecurity + */ + public function setRevisionsPassword($pValue = '', $pAlreadyHashed = false) + { + if (!$pAlreadyHashed) { + $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); + } + $this->revisionsPassword = $pValue; + return $this; + } + + /** + * Get WorkbookPassword (hashed) + * + * @return string + */ + public function getWorkbookPassword() + { + return $this->workbookPassword; + } + + /** + * Set WorkbookPassword + * + * @param string $pValue + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @return PHPExcel_DocumentSecurity + */ + public function setWorkbookPassword($pValue = '', $pAlreadyHashed = false) + { + if (!$pAlreadyHashed) { + $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); + } + $this->workbookPassword = $pValue; + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Exception.php b/assets/excel/PHPExcel/Exception.php new file mode 100644 index 0000000..b27750e --- /dev/null +++ b/assets/excel/PHPExcel/Exception.php @@ -0,0 +1,54 @@ +line = $line; + $e->file = $file; + throw $e; + } +} diff --git a/assets/excel/PHPExcel/HashTable.php b/assets/excel/PHPExcel/HashTable.php new file mode 100644 index 0000000..c21d18c --- /dev/null +++ b/assets/excel/PHPExcel/HashTable.php @@ -0,0 +1,204 @@ +addFromSource($pSource); + } + } + + /** + * Add HashTable items from source + * + * @param PHPExcel_IComparable[] $pSource Source array to create HashTable from + * @throws PHPExcel_Exception + */ + public function addFromSource($pSource = null) + { + // Check if an array was passed + if ($pSource == null) { + return; + } elseif (!is_array($pSource)) { + throw new PHPExcel_Exception('Invalid array parameter passed.'); + } + + foreach ($pSource as $item) { + $this->add($item); + } + } + + /** + * Add HashTable item + * + * @param PHPExcel_IComparable $pSource Item to add + * @throws PHPExcel_Exception + */ + public function add(PHPExcel_IComparable $pSource = null) + { + $hash = $pSource->getHashCode(); + if (!isset($this->items[$hash])) { + $this->items[$hash] = $pSource; + $this->keyMap[count($this->items) - 1] = $hash; + } + } + + /** + * Remove HashTable item + * + * @param PHPExcel_IComparable $pSource Item to remove + * @throws PHPExcel_Exception + */ + public function remove(PHPExcel_IComparable $pSource = null) + { + $hash = $pSource->getHashCode(); + if (isset($this->items[$hash])) { + unset($this->items[$hash]); + + $deleteKey = -1; + foreach ($this->keyMap as $key => $value) { + if ($deleteKey >= 0) { + $this->keyMap[$key - 1] = $value; + } + + if ($value == $hash) { + $deleteKey = $key; + } + } + unset($this->keyMap[count($this->keyMap) - 1]); + } + } + + /** + * Clear HashTable + * + */ + public function clear() + { + $this->items = array(); + $this->keyMap = array(); + } + + /** + * Count + * + * @return int + */ + public function count() + { + return count($this->items); + } + + /** + * Get index for hash code + * + * @param string $pHashCode + * @return int Index + */ + public function getIndexForHashCode($pHashCode = '') + { + return array_search($pHashCode, $this->keyMap); + } + + /** + * Get by index + * + * @param int $pIndex + * @return PHPExcel_IComparable + * + */ + public function getByIndex($pIndex = 0) + { + if (isset($this->keyMap[$pIndex])) { + return $this->getByHashCode($this->keyMap[$pIndex]); + } + + return null; + } + + /** + * Get by hashcode + * + * @param string $pHashCode + * @return PHPExcel_IComparable + * + */ + public function getByHashCode($pHashCode = '') + { + if (isset($this->items[$pHashCode])) { + return $this->items[$pHashCode]; + } + + return null; + } + + /** + * HashTable to array + * + * @return PHPExcel_IComparable[] + */ + public function toArray() + { + return $this->items; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Helper/HTML.php b/assets/excel/PHPExcel/Helper/HTML.php new file mode 100644 index 0000000..a78f11c --- /dev/null +++ b/assets/excel/PHPExcel/Helper/HTML.php @@ -0,0 +1,808 @@ + 'f0f8ff', + 'antiquewhite' => 'faebd7', + 'antiquewhite1' => 'ffefdb', + 'antiquewhite2' => 'eedfcc', + 'antiquewhite3' => 'cdc0b0', + 'antiquewhite4' => '8b8378', + 'aqua' => '00ffff', + 'aquamarine1' => '7fffd4', + 'aquamarine2' => '76eec6', + 'aquamarine4' => '458b74', + 'azure1' => 'f0ffff', + 'azure2' => 'e0eeee', + 'azure3' => 'c1cdcd', + 'azure4' => '838b8b', + 'beige' => 'f5f5dc', + 'bisque1' => 'ffe4c4', + 'bisque2' => 'eed5b7', + 'bisque3' => 'cdb79e', + 'bisque4' => '8b7d6b', + 'black' => '000000', + 'blanchedalmond' => 'ffebcd', + 'blue' => '0000ff', + 'blue1' => '0000ff', + 'blue2' => '0000ee', + 'blue4' => '00008b', + 'blueviolet' => '8a2be2', + 'brown' => 'a52a2a', + 'brown1' => 'ff4040', + 'brown2' => 'ee3b3b', + 'brown3' => 'cd3333', + 'brown4' => '8b2323', + 'burlywood' => 'deb887', + 'burlywood1' => 'ffd39b', + 'burlywood2' => 'eec591', + 'burlywood3' => 'cdaa7d', + 'burlywood4' => '8b7355', + 'cadetblue' => '5f9ea0', + 'cadetblue1' => '98f5ff', + 'cadetblue2' => '8ee5ee', + 'cadetblue3' => '7ac5cd', + 'cadetblue4' => '53868b', + 'chartreuse1' => '7fff00', + 'chartreuse2' => '76ee00', + 'chartreuse3' => '66cd00', + 'chartreuse4' => '458b00', + 'chocolate' => 'd2691e', + 'chocolate1' => 'ff7f24', + 'chocolate2' => 'ee7621', + 'chocolate3' => 'cd661d', + 'coral' => 'ff7f50', + 'coral1' => 'ff7256', + 'coral2' => 'ee6a50', + 'coral3' => 'cd5b45', + 'coral4' => '8b3e2f', + 'cornflowerblue' => '6495ed', + 'cornsilk1' => 'fff8dc', + 'cornsilk2' => 'eee8cd', + 'cornsilk3' => 'cdc8b1', + 'cornsilk4' => '8b8878', + 'cyan1' => '00ffff', + 'cyan2' => '00eeee', + 'cyan3' => '00cdcd', + 'cyan4' => '008b8b', + 'darkgoldenrod' => 'b8860b', + 'darkgoldenrod1' => 'ffb90f', + 'darkgoldenrod2' => 'eead0e', + 'darkgoldenrod3' => 'cd950c', + 'darkgoldenrod4' => '8b6508', + 'darkgreen' => '006400', + 'darkkhaki' => 'bdb76b', + 'darkolivegreen' => '556b2f', + 'darkolivegreen1' => 'caff70', + 'darkolivegreen2' => 'bcee68', + 'darkolivegreen3' => 'a2cd5a', + 'darkolivegreen4' => '6e8b3d', + 'darkorange' => 'ff8c00', + 'darkorange1' => 'ff7f00', + 'darkorange2' => 'ee7600', + 'darkorange3' => 'cd6600', + 'darkorange4' => '8b4500', + 'darkorchid' => '9932cc', + 'darkorchid1' => 'bf3eff', + 'darkorchid2' => 'b23aee', + 'darkorchid3' => '9a32cd', + 'darkorchid4' => '68228b', + 'darksalmon' => 'e9967a', + 'darkseagreen' => '8fbc8f', + 'darkseagreen1' => 'c1ffc1', + 'darkseagreen2' => 'b4eeb4', + 'darkseagreen3' => '9bcd9b', + 'darkseagreen4' => '698b69', + 'darkslateblue' => '483d8b', + 'darkslategray' => '2f4f4f', + 'darkslategray1' => '97ffff', + 'darkslategray2' => '8deeee', + 'darkslategray3' => '79cdcd', + 'darkslategray4' => '528b8b', + 'darkturquoise' => '00ced1', + 'darkviolet' => '9400d3', + 'deeppink1' => 'ff1493', + 'deeppink2' => 'ee1289', + 'deeppink3' => 'cd1076', + 'deeppink4' => '8b0a50', + 'deepskyblue1' => '00bfff', + 'deepskyblue2' => '00b2ee', + 'deepskyblue3' => '009acd', + 'deepskyblue4' => '00688b', + 'dimgray' => '696969', + 'dodgerblue1' => '1e90ff', + 'dodgerblue2' => '1c86ee', + 'dodgerblue3' => '1874cd', + 'dodgerblue4' => '104e8b', + 'firebrick' => 'b22222', + 'firebrick1' => 'ff3030', + 'firebrick2' => 'ee2c2c', + 'firebrick3' => 'cd2626', + 'firebrick4' => '8b1a1a', + 'floralwhite' => 'fffaf0', + 'forestgreen' => '228b22', + 'fuchsia' => 'ff00ff', + 'gainsboro' => 'dcdcdc', + 'ghostwhite' => 'f8f8ff', + 'gold1' => 'ffd700', + 'gold2' => 'eec900', + 'gold3' => 'cdad00', + 'gold4' => '8b7500', + 'goldenrod' => 'daa520', + 'goldenrod1' => 'ffc125', + 'goldenrod2' => 'eeb422', + 'goldenrod3' => 'cd9b1d', + 'goldenrod4' => '8b6914', + 'gray' => 'bebebe', + 'gray1' => '030303', + 'gray10' => '1a1a1a', + 'gray11' => '1c1c1c', + 'gray12' => '1f1f1f', + 'gray13' => '212121', + 'gray14' => '242424', + 'gray15' => '262626', + 'gray16' => '292929', + 'gray17' => '2b2b2b', + 'gray18' => '2e2e2e', + 'gray19' => '303030', + 'gray2' => '050505', + 'gray20' => '333333', + 'gray21' => '363636', + 'gray22' => '383838', + 'gray23' => '3b3b3b', + 'gray24' => '3d3d3d', + 'gray25' => '404040', + 'gray26' => '424242', + 'gray27' => '454545', + 'gray28' => '474747', + 'gray29' => '4a4a4a', + 'gray3' => '080808', + 'gray30' => '4d4d4d', + 'gray31' => '4f4f4f', + 'gray32' => '525252', + 'gray33' => '545454', + 'gray34' => '575757', + 'gray35' => '595959', + 'gray36' => '5c5c5c', + 'gray37' => '5e5e5e', + 'gray38' => '616161', + 'gray39' => '636363', + 'gray4' => '0a0a0a', + 'gray40' => '666666', + 'gray41' => '696969', + 'gray42' => '6b6b6b', + 'gray43' => '6e6e6e', + 'gray44' => '707070', + 'gray45' => '737373', + 'gray46' => '757575', + 'gray47' => '787878', + 'gray48' => '7a7a7a', + 'gray49' => '7d7d7d', + 'gray5' => '0d0d0d', + 'gray50' => '7f7f7f', + 'gray51' => '828282', + 'gray52' => '858585', + 'gray53' => '878787', + 'gray54' => '8a8a8a', + 'gray55' => '8c8c8c', + 'gray56' => '8f8f8f', + 'gray57' => '919191', + 'gray58' => '949494', + 'gray59' => '969696', + 'gray6' => '0f0f0f', + 'gray60' => '999999', + 'gray61' => '9c9c9c', + 'gray62' => '9e9e9e', + 'gray63' => 'a1a1a1', + 'gray64' => 'a3a3a3', + 'gray65' => 'a6a6a6', + 'gray66' => 'a8a8a8', + 'gray67' => 'ababab', + 'gray68' => 'adadad', + 'gray69' => 'b0b0b0', + 'gray7' => '121212', + 'gray70' => 'b3b3b3', + 'gray71' => 'b5b5b5', + 'gray72' => 'b8b8b8', + 'gray73' => 'bababa', + 'gray74' => 'bdbdbd', + 'gray75' => 'bfbfbf', + 'gray76' => 'c2c2c2', + 'gray77' => 'c4c4c4', + 'gray78' => 'c7c7c7', + 'gray79' => 'c9c9c9', + 'gray8' => '141414', + 'gray80' => 'cccccc', + 'gray81' => 'cfcfcf', + 'gray82' => 'd1d1d1', + 'gray83' => 'd4d4d4', + 'gray84' => 'd6d6d6', + 'gray85' => 'd9d9d9', + 'gray86' => 'dbdbdb', + 'gray87' => 'dedede', + 'gray88' => 'e0e0e0', + 'gray89' => 'e3e3e3', + 'gray9' => '171717', + 'gray90' => 'e5e5e5', + 'gray91' => 'e8e8e8', + 'gray92' => 'ebebeb', + 'gray93' => 'ededed', + 'gray94' => 'f0f0f0', + 'gray95' => 'f2f2f2', + 'gray97' => 'f7f7f7', + 'gray98' => 'fafafa', + 'gray99' => 'fcfcfc', + 'green' => '00ff00', + 'green1' => '00ff00', + 'green2' => '00ee00', + 'green3' => '00cd00', + 'green4' => '008b00', + 'greenyellow' => 'adff2f', + 'honeydew1' => 'f0fff0', + 'honeydew2' => 'e0eee0', + 'honeydew3' => 'c1cdc1', + 'honeydew4' => '838b83', + 'hotpink' => 'ff69b4', + 'hotpink1' => 'ff6eb4', + 'hotpink2' => 'ee6aa7', + 'hotpink3' => 'cd6090', + 'hotpink4' => '8b3a62', + 'indianred' => 'cd5c5c', + 'indianred1' => 'ff6a6a', + 'indianred2' => 'ee6363', + 'indianred3' => 'cd5555', + 'indianred4' => '8b3a3a', + 'ivory1' => 'fffff0', + 'ivory2' => 'eeeee0', + 'ivory3' => 'cdcdc1', + 'ivory4' => '8b8b83', + 'khaki' => 'f0e68c', + 'khaki1' => 'fff68f', + 'khaki2' => 'eee685', + 'khaki3' => 'cdc673', + 'khaki4' => '8b864e', + 'lavender' => 'e6e6fa', + 'lavenderblush1' => 'fff0f5', + 'lavenderblush2' => 'eee0e5', + 'lavenderblush3' => 'cdc1c5', + 'lavenderblush4' => '8b8386', + 'lawngreen' => '7cfc00', + 'lemonchiffon1' => 'fffacd', + 'lemonchiffon2' => 'eee9bf', + 'lemonchiffon3' => 'cdc9a5', + 'lemonchiffon4' => '8b8970', + 'light' => 'eedd82', + 'lightblue' => 'add8e6', + 'lightblue1' => 'bfefff', + 'lightblue2' => 'b2dfee', + 'lightblue3' => '9ac0cd', + 'lightblue4' => '68838b', + 'lightcoral' => 'f08080', + 'lightcyan1' => 'e0ffff', + 'lightcyan2' => 'd1eeee', + 'lightcyan3' => 'b4cdcd', + 'lightcyan4' => '7a8b8b', + 'lightgoldenrod1' => 'ffec8b', + 'lightgoldenrod2' => 'eedc82', + 'lightgoldenrod3' => 'cdbe70', + 'lightgoldenrod4' => '8b814c', + 'lightgoldenrodyellow' => 'fafad2', + 'lightgray' => 'd3d3d3', + 'lightpink' => 'ffb6c1', + 'lightpink1' => 'ffaeb9', + 'lightpink2' => 'eea2ad', + 'lightpink3' => 'cd8c95', + 'lightpink4' => '8b5f65', + 'lightsalmon1' => 'ffa07a', + 'lightsalmon2' => 'ee9572', + 'lightsalmon3' => 'cd8162', + 'lightsalmon4' => '8b5742', + 'lightseagreen' => '20b2aa', + 'lightskyblue' => '87cefa', + 'lightskyblue1' => 'b0e2ff', + 'lightskyblue2' => 'a4d3ee', + 'lightskyblue3' => '8db6cd', + 'lightskyblue4' => '607b8b', + 'lightslateblue' => '8470ff', + 'lightslategray' => '778899', + 'lightsteelblue' => 'b0c4de', + 'lightsteelblue1' => 'cae1ff', + 'lightsteelblue2' => 'bcd2ee', + 'lightsteelblue3' => 'a2b5cd', + 'lightsteelblue4' => '6e7b8b', + 'lightyellow1' => 'ffffe0', + 'lightyellow2' => 'eeeed1', + 'lightyellow3' => 'cdcdb4', + 'lightyellow4' => '8b8b7a', + 'lime' => '00ff00', + 'limegreen' => '32cd32', + 'linen' => 'faf0e6', + 'magenta' => 'ff00ff', + 'magenta2' => 'ee00ee', + 'magenta3' => 'cd00cd', + 'magenta4' => '8b008b', + 'maroon' => 'b03060', + 'maroon1' => 'ff34b3', + 'maroon2' => 'ee30a7', + 'maroon3' => 'cd2990', + 'maroon4' => '8b1c62', + 'medium' => '66cdaa', + 'mediumaquamarine' => '66cdaa', + 'mediumblue' => '0000cd', + 'mediumorchid' => 'ba55d3', + 'mediumorchid1' => 'e066ff', + 'mediumorchid2' => 'd15fee', + 'mediumorchid3' => 'b452cd', + 'mediumorchid4' => '7a378b', + 'mediumpurple' => '9370db', + 'mediumpurple1' => 'ab82ff', + 'mediumpurple2' => '9f79ee', + 'mediumpurple3' => '8968cd', + 'mediumpurple4' => '5d478b', + 'mediumseagreen' => '3cb371', + 'mediumslateblue' => '7b68ee', + 'mediumspringgreen' => '00fa9a', + 'mediumturquoise' => '48d1cc', + 'mediumvioletred' => 'c71585', + 'midnightblue' => '191970', + 'mintcream' => 'f5fffa', + 'mistyrose1' => 'ffe4e1', + 'mistyrose2' => 'eed5d2', + 'mistyrose3' => 'cdb7b5', + 'mistyrose4' => '8b7d7b', + 'moccasin' => 'ffe4b5', + 'navajowhite1' => 'ffdead', + 'navajowhite2' => 'eecfa1', + 'navajowhite3' => 'cdb38b', + 'navajowhite4' => '8b795e', + 'navy' => '000080', + 'navyblue' => '000080', + 'oldlace' => 'fdf5e6', + 'olive' => '808000', + 'olivedrab' => '6b8e23', + 'olivedrab1' => 'c0ff3e', + 'olivedrab2' => 'b3ee3a', + 'olivedrab4' => '698b22', + 'orange' => 'ffa500', + 'orange1' => 'ffa500', + 'orange2' => 'ee9a00', + 'orange3' => 'cd8500', + 'orange4' => '8b5a00', + 'orangered1' => 'ff4500', + 'orangered2' => 'ee4000', + 'orangered3' => 'cd3700', + 'orangered4' => '8b2500', + 'orchid' => 'da70d6', + 'orchid1' => 'ff83fa', + 'orchid2' => 'ee7ae9', + 'orchid3' => 'cd69c9', + 'orchid4' => '8b4789', + 'pale' => 'db7093', + 'palegoldenrod' => 'eee8aa', + 'palegreen' => '98fb98', + 'palegreen1' => '9aff9a', + 'palegreen2' => '90ee90', + 'palegreen3' => '7ccd7c', + 'palegreen4' => '548b54', + 'paleturquoise' => 'afeeee', + 'paleturquoise1' => 'bbffff', + 'paleturquoise2' => 'aeeeee', + 'paleturquoise3' => '96cdcd', + 'paleturquoise4' => '668b8b', + 'palevioletred' => 'db7093', + 'palevioletred1' => 'ff82ab', + 'palevioletred2' => 'ee799f', + 'palevioletred3' => 'cd6889', + 'palevioletred4' => '8b475d', + 'papayawhip' => 'ffefd5', + 'peachpuff1' => 'ffdab9', + 'peachpuff2' => 'eecbad', + 'peachpuff3' => 'cdaf95', + 'peachpuff4' => '8b7765', + 'pink' => 'ffc0cb', + 'pink1' => 'ffb5c5', + 'pink2' => 'eea9b8', + 'pink3' => 'cd919e', + 'pink4' => '8b636c', + 'plum' => 'dda0dd', + 'plum1' => 'ffbbff', + 'plum2' => 'eeaeee', + 'plum3' => 'cd96cd', + 'plum4' => '8b668b', + 'powderblue' => 'b0e0e6', + 'purple' => 'a020f0', + 'rebeccapurple' => '663399', + 'purple1' => '9b30ff', + 'purple2' => '912cee', + 'purple3' => '7d26cd', + 'purple4' => '551a8b', + 'red' => 'ff0000', + 'red1' => 'ff0000', + 'red2' => 'ee0000', + 'red3' => 'cd0000', + 'red4' => '8b0000', + 'rosybrown' => 'bc8f8f', + 'rosybrown1' => 'ffc1c1', + 'rosybrown2' => 'eeb4b4', + 'rosybrown3' => 'cd9b9b', + 'rosybrown4' => '8b6969', + 'royalblue' => '4169e1', + 'royalblue1' => '4876ff', + 'royalblue2' => '436eee', + 'royalblue3' => '3a5fcd', + 'royalblue4' => '27408b', + 'saddlebrown' => '8b4513', + 'salmon' => 'fa8072', + 'salmon1' => 'ff8c69', + 'salmon2' => 'ee8262', + 'salmon3' => 'cd7054', + 'salmon4' => '8b4c39', + 'sandybrown' => 'f4a460', + 'seagreen1' => '54ff9f', + 'seagreen2' => '4eee94', + 'seagreen3' => '43cd80', + 'seagreen4' => '2e8b57', + 'seashell1' => 'fff5ee', + 'seashell2' => 'eee5de', + 'seashell3' => 'cdc5bf', + 'seashell4' => '8b8682', + 'sienna' => 'a0522d', + 'sienna1' => 'ff8247', + 'sienna2' => 'ee7942', + 'sienna3' => 'cd6839', + 'sienna4' => '8b4726', + 'silver' => 'c0c0c0', + 'skyblue' => '87ceeb', + 'skyblue1' => '87ceff', + 'skyblue2' => '7ec0ee', + 'skyblue3' => '6ca6cd', + 'skyblue4' => '4a708b', + 'slateblue' => '6a5acd', + 'slateblue1' => '836fff', + 'slateblue2' => '7a67ee', + 'slateblue3' => '6959cd', + 'slateblue4' => '473c8b', + 'slategray' => '708090', + 'slategray1' => 'c6e2ff', + 'slategray2' => 'b9d3ee', + 'slategray3' => '9fb6cd', + 'slategray4' => '6c7b8b', + 'snow1' => 'fffafa', + 'snow2' => 'eee9e9', + 'snow3' => 'cdc9c9', + 'snow4' => '8b8989', + 'springgreen1' => '00ff7f', + 'springgreen2' => '00ee76', + 'springgreen3' => '00cd66', + 'springgreen4' => '008b45', + 'steelblue' => '4682b4', + 'steelblue1' => '63b8ff', + 'steelblue2' => '5cacee', + 'steelblue3' => '4f94cd', + 'steelblue4' => '36648b', + 'tan' => 'd2b48c', + 'tan1' => 'ffa54f', + 'tan2' => 'ee9a49', + 'tan3' => 'cd853f', + 'tan4' => '8b5a2b', + 'teal' => '008080', + 'thistle' => 'd8bfd8', + 'thistle1' => 'ffe1ff', + 'thistle2' => 'eed2ee', + 'thistle3' => 'cdb5cd', + 'thistle4' => '8b7b8b', + 'tomato1' => 'ff6347', + 'tomato2' => 'ee5c42', + 'tomato3' => 'cd4f39', + 'tomato4' => '8b3626', + 'turquoise' => '40e0d0', + 'turquoise1' => '00f5ff', + 'turquoise2' => '00e5ee', + 'turquoise3' => '00c5cd', + 'turquoise4' => '00868b', + 'violet' => 'ee82ee', + 'violetred' => 'd02090', + 'violetred1' => 'ff3e96', + 'violetred2' => 'ee3a8c', + 'violetred3' => 'cd3278', + 'violetred4' => '8b2252', + 'wheat' => 'f5deb3', + 'wheat1' => 'ffe7ba', + 'wheat2' => 'eed8ae', + 'wheat3' => 'cdba96', + 'wheat4' => '8b7e66', + 'white' => 'ffffff', + 'whitesmoke' => 'f5f5f5', + 'yellow' => 'ffff00', + 'yellow1' => 'ffff00', + 'yellow2' => 'eeee00', + 'yellow3' => 'cdcd00', + 'yellow4' => '8b8b00', + 'yellowgreen' => '9acd32', + ); + + protected $face; + protected $size; + protected $color; + + protected $bold = false; + protected $italic = false; + protected $underline = false; + protected $superscript = false; + protected $subscript = false; + protected $strikethrough = false; + + protected $startTagCallbacks = array( + 'font' => 'startFontTag', + 'b' => 'startBoldTag', + 'strong' => 'startBoldTag', + 'i' => 'startItalicTag', + 'em' => 'startItalicTag', + 'u' => 'startUnderlineTag', + 'ins' => 'startUnderlineTag', + 'del' => 'startStrikethruTag', + 'sup' => 'startSuperscriptTag', + 'sub' => 'startSubscriptTag', + ); + + protected $endTagCallbacks = array( + 'font' => 'endFontTag', + 'b' => 'endBoldTag', + 'strong' => 'endBoldTag', + 'i' => 'endItalicTag', + 'em' => 'endItalicTag', + 'u' => 'endUnderlineTag', + 'ins' => 'endUnderlineTag', + 'del' => 'endStrikethruTag', + 'sup' => 'endSuperscriptTag', + 'sub' => 'endSubscriptTag', + 'br' => 'breakTag', + 'p' => 'breakTag', + 'h1' => 'breakTag', + 'h2' => 'breakTag', + 'h3' => 'breakTag', + 'h4' => 'breakTag', + 'h5' => 'breakTag', + 'h6' => 'breakTag', + ); + + protected $stack = array(); + + protected $stringData = ''; + + protected $richTextObject; + + protected function initialise() + { + $this->face = $this->size = $this->color = null; + $this->bold = $this->italic = $this->underline = $this->superscript = $this->subscript = $this->strikethrough = false; + + $this->stack = array(); + + $this->stringData = ''; + } + + public function toRichTextObject($html) + { + $this->initialise(); + + // Create a new DOM object + $dom = new \DOMDocument; + // Load the HTML file into the DOM object + // Note the use of error suppression, because typically this will be an html fragment, so not fully valid markup + $loaded = @$dom->loadHTML($html); + + // Discard excess white space + $dom->preserveWhiteSpace = false; + + $this->richTextObject = new PHPExcel_RichText();; + $this->parseElements($dom); + + // Clean any further spurious whitespace + $this->cleanWhitespace(); + + return $this->richTextObject; + } + + protected function cleanWhitespace() + { + foreach ($this->richTextObject->getRichTextElements() as $key => $element) { + $text = $element->getText(); + // Trim any leading spaces on the first run + if ($key == 0) { + $text = ltrim($text); + } + // Trim any spaces immediately after a line break + $text = preg_replace('/\n */mu', "\n", $text); + $element->setText($text); + } + } + + protected function buildTextRun() + { + $text = $this->stringData; + if (trim($text) === '') { + return; + } + + $richtextRun = $this->richTextObject->createTextRun($this->stringData); + if ($this->face) { + $richtextRun->getFont()->setName($this->face); + } + if ($this->size) { + $richtextRun->getFont()->setSize($this->size); + } + if ($this->color) { + $richtextRun->getFont()->setColor(new PHPExcel_Style_Color('ff' . $this->color)); + } + if ($this->bold) { + $richtextRun->getFont()->setBold(true); + } + if ($this->italic) { + $richtextRun->getFont()->setItalic(true); + } + if ($this->underline) { + $richtextRun->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); + } + if ($this->superscript) { + $richtextRun->getFont()->setSuperScript(true); + } + if ($this->subscript) { + $richtextRun->getFont()->setSubScript(true); + } + if ($this->strikethrough) { + $richtextRun->getFont()->setStrikethrough(true); + } + $this->stringData = ''; + } + + protected function rgbToColour($rgb) + { + preg_match_all('/\d+/', $rgb, $values); + foreach ($values[0] as &$value) { + $value = str_pad(dechex($value), 2, '0', STR_PAD_LEFT); + } + return implode($values[0]); + } + + protected function colourNameLookup($rgb) + { + return self::$colourMap[$rgb]; + } + + protected function startFontTag($tag) + { + foreach ($tag->attributes as $attribute) { + $attributeName = strtolower($attribute->name); + $attributeValue = $attribute->value; + + if ($attributeName == 'color') { + if (preg_match('/rgb\s*\(/', $attributeValue)) { + $this->$attributeName = $this->rgbToColour($attributeValue); + } elseif (strpos(trim($attributeValue), '#') === 0) { + $this->$attributeName = ltrim($attributeValue, '#'); + } else { + $this->$attributeName = $this->colourNameLookup($attributeValue); + } + } else { + $this->$attributeName = $attributeValue; + } + } + } + + protected function endFontTag() + { + $this->face = $this->size = $this->color = null; + } + + protected function startBoldTag() + { + $this->bold = true; + } + + protected function endBoldTag() + { + $this->bold = false; + } + + protected function startItalicTag() + { + $this->italic = true; + } + + protected function endItalicTag() + { + $this->italic = false; + } + + protected function startUnderlineTag() + { + $this->underline = true; + } + + protected function endUnderlineTag() + { + $this->underline = false; + } + + protected function startSubscriptTag() + { + $this->subscript = true; + } + + protected function endSubscriptTag() + { + $this->subscript = false; + } + + protected function startSuperscriptTag() + { + $this->superscript = true; + } + + protected function endSuperscriptTag() + { + $this->superscript = false; + } + + protected function startStrikethruTag() + { + $this->strikethrough = true; + } + + protected function endStrikethruTag() + { + $this->strikethrough = false; + } + + protected function breakTag() + { + $this->stringData .= "\n"; + } + + protected function parseTextNode(DOMText $textNode) + { + $domText = preg_replace( + '/\s+/u', + ' ', + str_replace(array("\r", "\n"), ' ', $textNode->nodeValue) + ); + $this->stringData .= $domText; + $this->buildTextRun(); + } + + protected function handleCallback($element, $callbackTag, $callbacks) + { + if (isset($callbacks[$callbackTag])) { + $elementHandler = $callbacks[$callbackTag]; + if (method_exists($this, $elementHandler)) { + call_user_func(array($this, $elementHandler), $element); + } + } + } + + protected function parseElementNode(DOMElement $element) + { + $callbackTag = strtolower($element->nodeName); + $this->stack[] = $callbackTag; + + $this->handleCallback($element, $callbackTag, $this->startTagCallbacks); + + $this->parseElements($element); + array_pop($this->stack); + + $this->handleCallback($element, $callbackTag, $this->endTagCallbacks); + } + + protected function parseElements(DOMNode $element) + { + foreach ($element->childNodes as $child) { + if ($child instanceof DOMText) { + $this->parseTextNode($child); + } elseif ($child instanceof DOMElement) { + $this->parseElementNode($child); + } + } + } +} diff --git a/assets/excel/PHPExcel/IComparable.php b/assets/excel/PHPExcel/IComparable.php new file mode 100644 index 0000000..6dc36a9 --- /dev/null +++ b/assets/excel/PHPExcel/IComparable.php @@ -0,0 +1,34 @@ + 'IWriter', 'path' => 'PHPExcel/Writer/{0}.php', 'class' => 'PHPExcel_Writer_{0}' ), + array( 'type' => 'IReader', 'path' => 'PHPExcel/Reader/{0}.php', 'class' => 'PHPExcel_Reader_{0}' ) + ); + + /** + * Autoresolve classes + * + * @var array + * @access private + * @static + */ + private static $autoResolveClasses = array( + 'Excel2007', + 'Excel5', + 'Excel2003XML', + 'OOCalc', + 'SYLK', + 'Gnumeric', + 'HTML', + 'CSV', + ); + + /** + * Private constructor for PHPExcel_IOFactory + */ + private function __construct() + { + } + + /** + * Get search locations + * + * @static + * @access public + * @return array + */ + public static function getSearchLocations() + { + return self::$searchLocations; + } + + /** + * Set search locations + * + * @static + * @access public + * @param array $value + * @throws PHPExcel_Reader_Exception + */ + public static function setSearchLocations($value) + { + if (is_array($value)) { + self::$searchLocations = $value; + } else { + throw new PHPExcel_Reader_Exception('Invalid parameter passed.'); + } + } + + /** + * Add search location + * + * @static + * @access public + * @param string $type Example: IWriter + * @param string $location Example: PHPExcel/Writer/{0}.php + * @param string $classname Example: PHPExcel_Writer_{0} + */ + public static function addSearchLocation($type = '', $location = '', $classname = '') + { + self::$searchLocations[] = array( 'type' => $type, 'path' => $location, 'class' => $classname ); + } + + /** + * Create PHPExcel_Writer_IWriter + * + * @static + * @access public + * @param PHPExcel $phpExcel + * @param string $writerType Example: Excel2007 + * @return PHPExcel_Writer_IWriter + * @throws PHPExcel_Reader_Exception + */ + public static function createWriter(PHPExcel $phpExcel, $writerType = '') + { + // Search type + $searchType = 'IWriter'; + + // Include class + foreach (self::$searchLocations as $searchLocation) { + if ($searchLocation['type'] == $searchType) { + $className = str_replace('{0}', $writerType, $searchLocation['class']); + + $instance = new $className($phpExcel); + if ($instance !== null) { + return $instance; + } + } + } + + // Nothing found... + throw new PHPExcel_Reader_Exception("No $searchType found for type $writerType"); + } + + /** + * Create PHPExcel_Reader_IReader + * + * @static + * @access public + * @param string $readerType Example: Excel2007 + * @return PHPExcel_Reader_IReader + * @throws PHPExcel_Reader_Exception + */ + public static function createReader($readerType = '') + { + // Search type + $searchType = 'IReader'; + + // Include class + foreach (self::$searchLocations as $searchLocation) { + if ($searchLocation['type'] == $searchType) { + $className = str_replace('{0}', $readerType, $searchLocation['class']); + + $instance = new $className(); + if ($instance !== null) { + return $instance; + } + } + } + + // Nothing found... + throw new PHPExcel_Reader_Exception("No $searchType found for type $readerType"); + } + + /** + * Loads PHPExcel from file using automatic PHPExcel_Reader_IReader resolution + * + * @static + * @access public + * @param string $pFilename The name of the spreadsheet file + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public static function load($pFilename) + { + $reader = self::createReaderForFile($pFilename); + return $reader->load($pFilename); + } + + /** + * Identify file type using automatic PHPExcel_Reader_IReader resolution + * + * @static + * @access public + * @param string $pFilename The name of the spreadsheet file to identify + * @return string + * @throws PHPExcel_Reader_Exception + */ + public static function identify($pFilename) + { + $reader = self::createReaderForFile($pFilename); + $className = get_class($reader); + $classType = explode('_', $className); + unset($reader); + return array_pop($classType); + } + + /** + * Create PHPExcel_Reader_IReader for file using automatic PHPExcel_Reader_IReader resolution + * + * @static + * @access public + * @param string $pFilename The name of the spreadsheet file + * @return PHPExcel_Reader_IReader + * @throws PHPExcel_Reader_Exception + */ + public static function createReaderForFile($pFilename) + { + // First, lucky guess by inspecting file extension + $pathinfo = pathinfo($pFilename); + + $extensionType = null; + if (isset($pathinfo['extension'])) { + switch (strtolower($pathinfo['extension'])) { + case 'xlsx': // Excel (OfficeOpenXML) Spreadsheet + case 'xlsm': // Excel (OfficeOpenXML) Macro Spreadsheet (macros will be discarded) + case 'xltx': // Excel (OfficeOpenXML) Template + case 'xltm': // Excel (OfficeOpenXML) Macro Template (macros will be discarded) + $extensionType = 'Excel2007'; + break; + case 'xls': // Excel (BIFF) Spreadsheet + case 'xlt': // Excel (BIFF) Template + $extensionType = 'Excel5'; + break; + case 'ods': // Open/Libre Offic Calc + case 'ots': // Open/Libre Offic Calc Template + $extensionType = 'OOCalc'; + break; + case 'slk': + $extensionType = 'SYLK'; + break; + case 'xml': // Excel 2003 SpreadSheetML + $extensionType = 'Excel2003XML'; + break; + case 'gnumeric': + $extensionType = 'Gnumeric'; + break; + case 'htm': + case 'html': + $extensionType = 'HTML'; + break; + case 'csv': + // Do nothing + // We must not try to use CSV reader since it loads + // all files including Excel files etc. + break; + default: + break; + } + + if ($extensionType !== null) { + $reader = self::createReader($extensionType); + // Let's see if we are lucky + if (isset($reader) && $reader->canRead($pFilename)) { + return $reader; + } + } + } + + // If we reach here then "lucky guess" didn't give any result + // Try walking through all the options in self::$autoResolveClasses + foreach (self::$autoResolveClasses as $autoResolveClass) { + // Ignore our original guess, we know that won't work + if ($autoResolveClass !== $extensionType) { + $reader = self::createReader($autoResolveClass); + if ($reader->canRead($pFilename)) { + return $reader; + } + } + } + + throw new PHPExcel_Reader_Exception('Unable to identify a reader for this file'); + } +} diff --git a/assets/excel/PHPExcel/NamedRange.php b/assets/excel/PHPExcel/NamedRange.php new file mode 100644 index 0000000..2848db8 --- /dev/null +++ b/assets/excel/PHPExcel/NamedRange.php @@ -0,0 +1,249 @@ +worksheet) + * + * @var bool + */ + private $localOnly; + + /** + * Scope + * + * @var PHPExcel_Worksheet + */ + private $scope; + + /** + * Create a new NamedRange + * + * @param string $pName + * @param PHPExcel_Worksheet $pWorksheet + * @param string $pRange + * @param bool $pLocalOnly + * @param PHPExcel_Worksheet|null $pScope Scope. Only applies when $pLocalOnly = true. Null for global scope. + * @throws PHPExcel_Exception + */ + public function __construct($pName = null, PHPExcel_Worksheet $pWorksheet, $pRange = 'A1', $pLocalOnly = false, $pScope = null) + { + // Validate data + if (($pName === null) || ($pWorksheet === null) || ($pRange === null)) { + throw new PHPExcel_Exception('Parameters can not be null.'); + } + + // Set local members + $this->name = $pName; + $this->worksheet = $pWorksheet; + $this->range = $pRange; + $this->localOnly = $pLocalOnly; + $this->scope = ($pLocalOnly == true) ? (($pScope == null) ? $pWorksheet : $pScope) : null; + } + + /** + * Get name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Set name + * + * @param string $value + * @return PHPExcel_NamedRange + */ + public function setName($value = null) + { + if ($value !== null) { + // Old title + $oldTitle = $this->name; + + // Re-attach + if ($this->worksheet !== null) { + $this->worksheet->getParent()->removeNamedRange($this->name, $this->worksheet); + } + $this->name = $value; + + if ($this->worksheet !== null) { + $this->worksheet->getParent()->addNamedRange($this); + } + + // New title + $newTitle = $this->name; + PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->worksheet->getParent(), $oldTitle, $newTitle); + } + return $this; + } + + /** + * Get worksheet + * + * @return PHPExcel_Worksheet + */ + public function getWorksheet() + { + return $this->worksheet; + } + + /** + * Set worksheet + * + * @param PHPExcel_Worksheet $value + * @return PHPExcel_NamedRange + */ + public function setWorksheet(PHPExcel_Worksheet $value = null) + { + if ($value !== null) { + $this->worksheet = $value; + } + return $this; + } + + /** + * Get range + * + * @return string + */ + public function getRange() + { + return $this->range; + } + + /** + * Set range + * + * @param string $value + * @return PHPExcel_NamedRange + */ + public function setRange($value = null) + { + if ($value !== null) { + $this->range = $value; + } + return $this; + } + + /** + * Get localOnly + * + * @return bool + */ + public function getLocalOnly() + { + return $this->localOnly; + } + + /** + * Set localOnly + * + * @param bool $value + * @return PHPExcel_NamedRange + */ + public function setLocalOnly($value = false) + { + $this->localOnly = $value; + $this->scope = $value ? $this->worksheet : null; + return $this; + } + + /** + * Get scope + * + * @return PHPExcel_Worksheet|null + */ + public function getScope() + { + return $this->scope; + } + + /** + * Set scope + * + * @param PHPExcel_Worksheet|null $value + * @return PHPExcel_NamedRange + */ + public function setScope(PHPExcel_Worksheet $value = null) + { + $this->scope = $value; + $this->localOnly = ($value == null) ? false : true; + return $this; + } + + /** + * Resolve a named range to a regular cell range + * + * @param string $pNamedRange Named range + * @param PHPExcel_Worksheet|null $pSheet Scope. Use null for global scope + * @return PHPExcel_NamedRange + */ + public static function resolveRange($pNamedRange = '', PHPExcel_Worksheet $pSheet) + { + return $pSheet->getParent()->getNamedRange($pNamedRange, $pSheet); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Reader/Abstract.php b/assets/excel/PHPExcel/Reader/Abstract.php new file mode 100644 index 0000000..189c70a --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Abstract.php @@ -0,0 +1,289 @@ +readDataOnly; + } + + /** + * Set read data only + * Set to true, to advise the Reader only to read data values for cells, and to ignore any formatting information. + * Set to false (the default) to advise the Reader to read both data and formatting for cells. + * + * @param boolean $pValue + * + * @return PHPExcel_Reader_IReader + */ + public function setReadDataOnly($pValue = false) + { + $this->readDataOnly = $pValue; + return $this; + } + + /** + * Read empty cells? + * If this is true (the default), then the Reader will read data values for all cells, irrespective of value. + * If false it will not read data for cells containing a null value or an empty string. + * + * @return boolean + */ + public function getReadEmptyCells() + { + return $this->readEmptyCells; + } + + /** + * Set read empty cells + * Set to true (the default) to advise the Reader read data values for all cells, irrespective of value. + * Set to false to advise the Reader to ignore cells containing a null value or an empty string. + * + * @param boolean $pValue + * + * @return PHPExcel_Reader_IReader + */ + public function setReadEmptyCells($pValue = true) + { + $this->readEmptyCells = $pValue; + return $this; + } + + /** + * Read charts in workbook? + * If this is true, then the Reader will include any charts that exist in the workbook. + * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. + * If false (the default) it will ignore any charts defined in the workbook file. + * + * @return boolean + */ + public function getIncludeCharts() + { + return $this->includeCharts; + } + + /** + * Set read charts in workbook + * Set to true, to advise the Reader to include any charts that exist in the workbook. + * Note that a ReadDataOnly value of false overrides, and charts won't be read regardless of the IncludeCharts value. + * Set to false (the default) to discard charts. + * + * @param boolean $pValue + * + * @return PHPExcel_Reader_IReader + */ + public function setIncludeCharts($pValue = false) + { + $this->includeCharts = (boolean) $pValue; + return $this; + } + + /** + * Get which sheets to load + * Returns either an array of worksheet names (the list of worksheets that should be loaded), or a null + * indicating that all worksheets in the workbook should be loaded. + * + * @return mixed + */ + public function getLoadSheetsOnly() + { + return $this->loadSheetsOnly; + } + + /** + * Set which sheets to load + * + * @param mixed $value + * This should be either an array of worksheet names to be loaded, or a string containing a single worksheet name. + * If NULL, then it tells the Reader to read all worksheets in the workbook + * + * @return PHPExcel_Reader_IReader + */ + public function setLoadSheetsOnly($value = null) + { + if ($value === null) { + return $this->setLoadAllSheets(); + } + + $this->loadSheetsOnly = is_array($value) ? $value : array($value); + return $this; + } + + /** + * Set all sheets to load + * Tells the Reader to load all worksheets from the workbook. + * + * @return PHPExcel_Reader_IReader + */ + public function setLoadAllSheets() + { + $this->loadSheetsOnly = null; + return $this; + } + + /** + * Read filter + * + * @return PHPExcel_Reader_IReadFilter + */ + public function getReadFilter() + { + return $this->readFilter; + } + + /** + * Set read filter + * + * @param PHPExcel_Reader_IReadFilter $pValue + * @return PHPExcel_Reader_IReader + */ + public function setReadFilter(PHPExcel_Reader_IReadFilter $pValue) + { + $this->readFilter = $pValue; + return $this; + } + + /** + * Open file for reading + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + * @return resource + */ + protected function openFile($pFilename) + { + // Check if file exists + if (!file_exists($pFilename) || !is_readable($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + // Open file + $this->fileHandle = fopen($pFilename, 'r'); + if ($this->fileHandle === false) { + throw new PHPExcel_Reader_Exception("Could not open file " . $pFilename . " for reading."); + } + } + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + // Check if file exists + try { + $this->openFile($pFilename); + } catch (Exception $e) { + return false; + } + + $readable = $this->isValidFormat(); + fclose($this->fileHandle); + return $readable; + } + + /** + * Scan theXML for use of securityScan(file_get_contents($filestream)); + } +} diff --git a/assets/excel/PHPExcel/Reader/CSV.php b/assets/excel/PHPExcel/Reader/CSV.php new file mode 100644 index 0000000..db96b60 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/CSV.php @@ -0,0 +1,386 @@ +readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + /** + * Validate that the current file is a CSV file + * + * @return boolean + */ + protected function isValidFormat() + { + return true; + } + + /** + * Set input encoding + * + * @param string $pValue Input encoding + */ + public function setInputEncoding($pValue = 'UTF-8') + { + $this->inputEncoding = $pValue; + return $this; + } + + /** + * Get input encoding + * + * @return string + */ + public function getInputEncoding() + { + return $this->inputEncoding; + } + + /** + * Move filepointer past any BOM marker + * + */ + protected function skipBOM() + { + rewind($this->fileHandle); + + switch ($this->inputEncoding) { + case 'UTF-8': + fgets($this->fileHandle, 4) == "\xEF\xBB\xBF" ? + fseek($this->fileHandle, 3) : fseek($this->fileHandle, 0); + break; + case 'UTF-16LE': + fgets($this->fileHandle, 3) == "\xFF\xFE" ? + fseek($this->fileHandle, 2) : fseek($this->fileHandle, 0); + break; + case 'UTF-16BE': + fgets($this->fileHandle, 3) == "\xFE\xFF" ? + fseek($this->fileHandle, 2) : fseek($this->fileHandle, 0); + break; + case 'UTF-32LE': + fgets($this->fileHandle, 5) == "\xFF\xFE\x00\x00" ? + fseek($this->fileHandle, 4) : fseek($this->fileHandle, 0); + break; + case 'UTF-32BE': + fgets($this->fileHandle, 5) == "\x00\x00\xFE\xFF" ? + fseek($this->fileHandle, 4) : fseek($this->fileHandle, 0); + break; + default: + break; + } + } + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Open file + $this->openFile($pFilename); + if (!$this->isValidFormat()) { + fclose($this->fileHandle); + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + $fileHandle = $this->fileHandle; + + // Skip BOM, if any + $this->skipBOM(); + + $escapeEnclosures = array( "\\" . $this->enclosure, $this->enclosure . $this->enclosure ); + + $worksheetInfo = array(); + $worksheetInfo[0]['worksheetName'] = 'Worksheet'; + $worksheetInfo[0]['lastColumnLetter'] = 'A'; + $worksheetInfo[0]['lastColumnIndex'] = 0; + $worksheetInfo[0]['totalRows'] = 0; + $worksheetInfo[0]['totalColumns'] = 0; + + // Loop through each line of the file in turn + while (($rowData = fgetcsv($fileHandle, 0, $this->delimiter, $this->enclosure)) !== false) { + $worksheetInfo[0]['totalRows']++; + $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], count($rowData) - 1); + } + + $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']); + $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1; + + // Close file + fclose($fileHandle); + + return $worksheetInfo; + } + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + $lineEnding = ini_get('auto_detect_line_endings'); + ini_set('auto_detect_line_endings', true); + + // Open file + $this->openFile($pFilename); + if (!$this->isValidFormat()) { + fclose($this->fileHandle); + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + $fileHandle = $this->fileHandle; + + // Skip BOM, if any + $this->skipBOM(); + + // Create new PHPExcel object + while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { + $objPHPExcel->createSheet(); + } + $sheet = $objPHPExcel->setActiveSheetIndex($this->sheetIndex); + + $escapeEnclosures = array( "\\" . $this->enclosure, + $this->enclosure . $this->enclosure + ); + + // Set our starting row based on whether we're in contiguous mode or not + $currentRow = 1; + if ($this->contiguous) { + $currentRow = ($this->contiguousRow == -1) ? $sheet->getHighestRow(): $this->contiguousRow; + } + + // Loop through each line of the file in turn + while (($rowData = fgetcsv($fileHandle, 0, $this->delimiter, $this->enclosure)) !== false) { + $columnLetter = 'A'; + foreach ($rowData as $rowDatum) { + if ($rowDatum != '' && $this->readFilter->readCell($columnLetter, $currentRow)) { + // Unescape enclosures + $rowDatum = str_replace($escapeEnclosures, $this->enclosure, $rowDatum); + + // Convert encoding if necessary + if ($this->inputEncoding !== 'UTF-8') { + $rowDatum = PHPExcel_Shared_String::ConvertEncoding($rowDatum, 'UTF-8', $this->inputEncoding); + } + + // Set cell value + $sheet->getCell($columnLetter . $currentRow)->setValue($rowDatum); + } + ++$columnLetter; + } + ++$currentRow; + } + + // Close file + fclose($fileHandle); + + if ($this->contiguous) { + $this->contiguousRow = $currentRow; + } + + ini_set('auto_detect_line_endings', $lineEnding); + + // Return + return $objPHPExcel; + } + + /** + * Get delimiter + * + * @return string + */ + public function getDelimiter() + { + return $this->delimiter; + } + + /** + * Set delimiter + * + * @param string $pValue Delimiter, defaults to , + * @return PHPExcel_Reader_CSV + */ + public function setDelimiter($pValue = ',') + { + $this->delimiter = $pValue; + return $this; + } + + /** + * Get enclosure + * + * @return string + */ + public function getEnclosure() + { + return $this->enclosure; + } + + /** + * Set enclosure + * + * @param string $pValue Enclosure, defaults to " + * @return PHPExcel_Reader_CSV + */ + public function setEnclosure($pValue = '"') + { + if ($pValue == '') { + $pValue = '"'; + } + $this->enclosure = $pValue; + return $this; + } + + /** + * Get sheet index + * + * @return integer + */ + public function getSheetIndex() + { + return $this->sheetIndex; + } + + /** + * Set sheet index + * + * @param integer $pValue Sheet index + * @return PHPExcel_Reader_CSV + */ + public function setSheetIndex($pValue = 0) + { + $this->sheetIndex = $pValue; + return $this; + } + + /** + * Set Contiguous + * + * @param boolean $contiguous + */ + public function setContiguous($contiguous = false) + { + $this->contiguous = (bool) $contiguous; + if (!$contiguous) { + $this->contiguousRow = -1; + } + + return $this; + } + + /** + * Get Contiguous + * + * @return boolean + */ + public function getContiguous() + { + return $this->contiguous; + } +} diff --git a/assets/excel/PHPExcel/Reader/DefaultReadFilter.php b/assets/excel/PHPExcel/Reader/DefaultReadFilter.php new file mode 100644 index 0000000..ea25f63 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/DefaultReadFilter.php @@ -0,0 +1,51 @@ +readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + + // Office xmlns:o="urn:schemas-microsoft-com:office:office" + // Excel xmlns:x="urn:schemas-microsoft-com:office:excel" + // XML Spreadsheet xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" + // Spreadsheet component xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" + // XML schema xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" + // XML data type xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" + // MS-persist recordset xmlns:rs="urn:schemas-microsoft-com:rowset" + // Rowset xmlns:z="#RowsetSchema" + // + + $signature = array( + '' + ); + + // Open file + $this->openFile($pFilename); + $fileHandle = $this->fileHandle; + + // Read sample data (first 2 KB will do) + $data = fread($fileHandle, 2048); + fclose($fileHandle); + + $valid = true; + foreach ($signature as $match) { + // every part of the signature must be present + if (strpos($data, $match) === false) { + $valid = false; + break; + } + } + + // Retrieve charset encoding + if (preg_match('//um', $data, $matches)) { + $this->charSet = strtoupper($matches[1]); + } +// echo 'Character Set is ', $this->charSet,'
      '; + + return $valid; + } + + + /** + * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetNames($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + if (!$this->canRead($pFilename)) { + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + + $worksheetNames = array(); + + $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespaces = $xml->getNamespaces(true); + + $xml_ss = $xml->children($namespaces['ss']); + foreach ($xml_ss->Worksheet as $worksheet) { + $worksheet_ss = $worksheet->attributes($namespaces['ss']); + $worksheetNames[] = self::convertStringEncoding((string) $worksheet_ss['Name'], $this->charSet); + } + + return $worksheetNames; + } + + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetInfo = array(); + + $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespaces = $xml->getNamespaces(true); + + $worksheetID = 1; + $xml_ss = $xml->children($namespaces['ss']); + foreach ($xml_ss->Worksheet as $worksheet) { + $worksheet_ss = $worksheet->attributes($namespaces['ss']); + + $tmpInfo = array(); + $tmpInfo['worksheetName'] = ''; + $tmpInfo['lastColumnLetter'] = 'A'; + $tmpInfo['lastColumnIndex'] = 0; + $tmpInfo['totalRows'] = 0; + $tmpInfo['totalColumns'] = 0; + + if (isset($worksheet_ss['Name'])) { + $tmpInfo['worksheetName'] = (string) $worksheet_ss['Name']; + } else { + $tmpInfo['worksheetName'] = "Worksheet_{$worksheetID}"; + } + + if (isset($worksheet->Table->Row)) { + $rowIndex = 0; + + foreach ($worksheet->Table->Row as $rowData) { + $columnIndex = 0; + $rowHasData = false; + + foreach ($rowData->Cell as $cell) { + if (isset($cell->Data)) { + $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex); + $rowHasData = true; + } + + ++$columnIndex; + } + + ++$rowIndex; + + if ($rowHasData) { + $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex); + } + } + } + + $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); + $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; + + $worksheetInfo[] = $tmpInfo; + ++$worksheetID; + } + + return $worksheetInfo; + } + + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + $objPHPExcel->removeSheetByIndex(0); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + protected static function identifyFixedStyleValue($styleList, &$styleAttributeValue) + { + $styleAttributeValue = strtolower($styleAttributeValue); + foreach ($styleList as $style) { + if ($styleAttributeValue == strtolower($style)) { + $styleAttributeValue = $style; + return true; + } + } + return false; + } + + /** + * pixel units to excel width units(units of 1/256th of a character width) + * @param pxs + * @return + */ + protected static function pixel2WidthUnits($pxs) + { + $UNIT_OFFSET_MAP = array(0, 36, 73, 109, 146, 182, 219); + + $widthUnits = 256 * ($pxs / 7); + $widthUnits += $UNIT_OFFSET_MAP[($pxs % 7)]; + return $widthUnits; + } + + /** + * excel width units(units of 1/256th of a character width) to pixel units + * @param widthUnits + * @return + */ + protected static function widthUnits2Pixel($widthUnits) + { + $pixels = ($widthUnits / 256) * 7; + $offsetWidthUnits = $widthUnits % 256; + $pixels += round($offsetWidthUnits / (256 / 7)); + return $pixels; + } + + protected static function hex2str($hex) + { + return chr(hexdec($hex[1])); + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + $fromFormats = array('\-', '\ '); + $toFormats = array('-', ' '); + + $underlineStyles = array ( + PHPExcel_Style_Font::UNDERLINE_NONE, + PHPExcel_Style_Font::UNDERLINE_DOUBLE, + PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING, + PHPExcel_Style_Font::UNDERLINE_SINGLE, + PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING + ); + $verticalAlignmentStyles = array ( + PHPExcel_Style_Alignment::VERTICAL_BOTTOM, + PHPExcel_Style_Alignment::VERTICAL_TOP, + PHPExcel_Style_Alignment::VERTICAL_CENTER, + PHPExcel_Style_Alignment::VERTICAL_JUSTIFY + ); + $horizontalAlignmentStyles = array ( + PHPExcel_Style_Alignment::HORIZONTAL_GENERAL, + PHPExcel_Style_Alignment::HORIZONTAL_LEFT, + PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, + PHPExcel_Style_Alignment::HORIZONTAL_CENTER, + PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS, + PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY + ); + + $timezoneObj = new DateTimeZone('Europe/London'); + $GMT = new DateTimeZone('UTC'); + + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + if (!$this->canRead($pFilename)) { + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + + $xml = simplexml_load_string($this->securityScan(file_get_contents($pFilename)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespaces = $xml->getNamespaces(true); + + $docProps = $objPHPExcel->getProperties(); + if (isset($xml->DocumentProperties[0])) { + foreach ($xml->DocumentProperties[0] as $propertyName => $propertyValue) { + switch ($propertyName) { + case 'Title': + $docProps->setTitle(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Subject': + $docProps->setSubject(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Author': + $docProps->setCreator(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Created': + $creationDate = strtotime($propertyValue); + $docProps->setCreated($creationDate); + break; + case 'LastAuthor': + $docProps->setLastModifiedBy(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'LastSaved': + $lastSaveDate = strtotime($propertyValue); + $docProps->setModified($lastSaveDate); + break; + case 'Company': + $docProps->setCompany(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Category': + $docProps->setCategory(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Manager': + $docProps->setManager(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Keywords': + $docProps->setKeywords(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + case 'Description': + $docProps->setDescription(self::convertStringEncoding($propertyValue, $this->charSet)); + break; + } + } + } + if (isset($xml->CustomDocumentProperties)) { + foreach ($xml->CustomDocumentProperties[0] as $propertyName => $propertyValue) { + $propertyAttributes = $propertyValue->attributes($namespaces['dt']); + $propertyName = preg_replace_callback('/_x([0-9a-z]{4})_/', 'PHPExcel_Reader_Excel2003XML::hex2str', $propertyName); + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_UNKNOWN; + switch ((string) $propertyAttributes) { + case 'string': + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; + $propertyValue = trim($propertyValue); + break; + case 'boolean': + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN; + $propertyValue = (bool) $propertyValue; + break; + case 'integer': + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_INTEGER; + $propertyValue = intval($propertyValue); + break; + case 'float': + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT; + $propertyValue = floatval($propertyValue); + break; + case 'dateTime.tz': + $propertyType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE; + $propertyValue = strtotime(trim($propertyValue)); + break; + } + $docProps->setCustomProperty($propertyName, $propertyValue, $propertyType); + } + } + + foreach ($xml->Styles[0] as $style) { + $style_ss = $style->attributes($namespaces['ss']); + $styleID = (string) $style_ss['ID']; +// echo 'Style ID = '.$styleID.'
      '; + $this->styles[$styleID] = (isset($this->styles['Default'])) ? $this->styles['Default'] : array(); + foreach ($style as $styleType => $styleData) { + $styleAttributes = $styleData->attributes($namespaces['ss']); +// echo $styleType.'
      '; + switch ($styleType) { + case 'Alignment': + foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { +// echo $styleAttributeKey.' = '.$styleAttributeValue.'
      '; + $styleAttributeValue = (string) $styleAttributeValue; + switch ($styleAttributeKey) { + case 'Vertical': + if (self::identifyFixedStyleValue($verticalAlignmentStyles, $styleAttributeValue)) { + $this->styles[$styleID]['alignment']['vertical'] = $styleAttributeValue; + } + break; + case 'Horizontal': + if (self::identifyFixedStyleValue($horizontalAlignmentStyles, $styleAttributeValue)) { + $this->styles[$styleID]['alignment']['horizontal'] = $styleAttributeValue; + } + break; + case 'WrapText': + $this->styles[$styleID]['alignment']['wrap'] = true; + break; + } + } + break; + case 'Borders': + foreach ($styleData->Border as $borderStyle) { + $borderAttributes = $borderStyle->attributes($namespaces['ss']); + $thisBorder = array(); + foreach ($borderAttributes as $borderStyleKey => $borderStyleValue) { +// echo $borderStyleKey.' = '.$borderStyleValue.'
      '; + switch ($borderStyleKey) { + case 'LineStyle': + $thisBorder['style'] = PHPExcel_Style_Border::BORDER_MEDIUM; +// $thisBorder['style'] = $borderStyleValue; + break; + case 'Weight': +// $thisBorder['style'] = $borderStyleValue; + break; + case 'Position': + $borderPosition = strtolower($borderStyleValue); + break; + case 'Color': + $borderColour = substr($borderStyleValue, 1); + $thisBorder['color']['rgb'] = $borderColour; + break; + } + } + if (!empty($thisBorder)) { + if (($borderPosition == 'left') || ($borderPosition == 'right') || ($borderPosition == 'top') || ($borderPosition == 'bottom')) { + $this->styles[$styleID]['borders'][$borderPosition] = $thisBorder; + } + } + } + break; + case 'Font': + foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { +// echo $styleAttributeKey.' = '.$styleAttributeValue.'
      '; + $styleAttributeValue = (string) $styleAttributeValue; + switch ($styleAttributeKey) { + case 'FontName': + $this->styles[$styleID]['font']['name'] = $styleAttributeValue; + break; + case 'Size': + $this->styles[$styleID]['font']['size'] = $styleAttributeValue; + break; + case 'Color': + $this->styles[$styleID]['font']['color']['rgb'] = substr($styleAttributeValue, 1); + break; + case 'Bold': + $this->styles[$styleID]['font']['bold'] = true; + break; + case 'Italic': + $this->styles[$styleID]['font']['italic'] = true; + break; + case 'Underline': + if (self::identifyFixedStyleValue($underlineStyles, $styleAttributeValue)) { + $this->styles[$styleID]['font']['underline'] = $styleAttributeValue; + } + break; + } + } + break; + case 'Interior': + foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { +// echo $styleAttributeKey.' = '.$styleAttributeValue.'
      '; + switch ($styleAttributeKey) { + case 'Color': + $this->styles[$styleID]['fill']['color']['rgb'] = substr($styleAttributeValue, 1); + break; + } + } + break; + case 'NumberFormat': + foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { +// echo $styleAttributeKey.' = '.$styleAttributeValue.'
      '; + $styleAttributeValue = str_replace($fromFormats, $toFormats, $styleAttributeValue); + switch ($styleAttributeValue) { + case 'Short Date': + $styleAttributeValue = 'dd/mm/yyyy'; + break; + } + if ($styleAttributeValue > '') { + $this->styles[$styleID]['numberformat']['code'] = $styleAttributeValue; + } + } + break; + case 'Protection': + foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValue) { +// echo $styleAttributeKey.' = '.$styleAttributeValue.'
      '; + } + break; + } + } +// print_r($this->styles[$styleID]); +// echo '
      '; + } +// echo '
      '; + + $worksheetID = 0; + $xml_ss = $xml->children($namespaces['ss']); + + foreach ($xml_ss->Worksheet as $worksheet) { + $worksheet_ss = $worksheet->attributes($namespaces['ss']); + + if ((isset($this->loadSheetsOnly)) && (isset($worksheet_ss['Name'])) && + (!in_array($worksheet_ss['Name'], $this->loadSheetsOnly))) { + continue; + } + +// echo '

      Worksheet: ', $worksheet_ss['Name'],'

      '; +// + // Create new Worksheet + $objPHPExcel->createSheet(); + $objPHPExcel->setActiveSheetIndex($worksheetID); + if (isset($worksheet_ss['Name'])) { + $worksheetName = self::convertStringEncoding((string) $worksheet_ss['Name'], $this->charSet); + // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in + // formula cells... during the load, all formulae should be correct, and we're simply bringing + // the worksheet name in line with the formula, not the reverse + $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); + } + + $columnID = 'A'; + if (isset($worksheet->Table->Column)) { + foreach ($worksheet->Table->Column as $columnData) { + $columnData_ss = $columnData->attributes($namespaces['ss']); + if (isset($columnData_ss['Index'])) { + $columnID = PHPExcel_Cell::stringFromColumnIndex($columnData_ss['Index']-1); + } + if (isset($columnData_ss['Width'])) { + $columnWidth = $columnData_ss['Width']; +// echo 'Setting column width for '.$columnID.' to '.$columnWidth.'
      '; + $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setWidth($columnWidth / 5.4); + } + ++$columnID; + } + } + + $rowID = 1; + if (isset($worksheet->Table->Row)) { + $additionalMergedCells = 0; + foreach ($worksheet->Table->Row as $rowData) { + $rowHasData = false; + $row_ss = $rowData->attributes($namespaces['ss']); + if (isset($row_ss['Index'])) { + $rowID = (integer) $row_ss['Index']; + } +// echo 'Row '.$rowID.'
      '; + + $columnID = 'A'; + foreach ($rowData->Cell as $cell) { + $cell_ss = $cell->attributes($namespaces['ss']); + if (isset($cell_ss['Index'])) { + $columnID = PHPExcel_Cell::stringFromColumnIndex($cell_ss['Index']-1); + } + $cellRange = $columnID.$rowID; + + if ($this->getReadFilter() !== null) { + if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) { + continue; + } + } + + if ((isset($cell_ss['MergeAcross'])) || (isset($cell_ss['MergeDown']))) { + $columnTo = $columnID; + if (isset($cell_ss['MergeAcross'])) { + $additionalMergedCells += (int)$cell_ss['MergeAcross']; + $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cell_ss['MergeAcross'] -1); + } + $rowTo = $rowID; + if (isset($cell_ss['MergeDown'])) { + $rowTo = $rowTo + $cell_ss['MergeDown']; + } + $cellRange .= ':'.$columnTo.$rowTo; + $objPHPExcel->getActiveSheet()->mergeCells($cellRange); + } + + $cellIsSet = $hasCalculatedValue = false; + $cellDataFormula = ''; + if (isset($cell_ss['Formula'])) { + $cellDataFormula = $cell_ss['Formula']; + // added this as a check for array formulas + if (isset($cell_ss['ArrayRange'])) { + $cellDataCSEFormula = $cell_ss['ArrayRange']; +// echo "found an array formula at ".$columnID.$rowID."
      "; + } + $hasCalculatedValue = true; + } + if (isset($cell->Data)) { + $cellValue = $cellData = $cell->Data; + $type = PHPExcel_Cell_DataType::TYPE_NULL; + $cellData_ss = $cellData->attributes($namespaces['ss']); + if (isset($cellData_ss['Type'])) { + $cellDataType = $cellData_ss['Type']; + switch ($cellDataType) { + /* + const TYPE_STRING = 's'; + const TYPE_FORMULA = 'f'; + const TYPE_NUMERIC = 'n'; + const TYPE_BOOL = 'b'; + const TYPE_NULL = 'null'; + const TYPE_INLINE = 'inlineStr'; + const TYPE_ERROR = 'e'; + */ + case 'String': + $cellValue = self::convertStringEncoding($cellValue, $this->charSet); + $type = PHPExcel_Cell_DataType::TYPE_STRING; + break; + case 'Number': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $cellValue = (float) $cellValue; + if (floor($cellValue) == $cellValue) { + $cellValue = (integer) $cellValue; + } + break; + case 'Boolean': + $type = PHPExcel_Cell_DataType::TYPE_BOOL; + $cellValue = ($cellValue != 0); + break; + case 'DateTime': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $cellValue = PHPExcel_Shared_Date::PHPToExcel(strtotime($cellValue)); + break; + case 'Error': + $type = PHPExcel_Cell_DataType::TYPE_ERROR; + break; + } + } + + if ($hasCalculatedValue) { +// echo 'FORMULA
      '; + $type = PHPExcel_Cell_DataType::TYPE_FORMULA; + $columnNumber = PHPExcel_Cell::columnIndexFromString($columnID); + if (substr($cellDataFormula, 0, 3) == 'of:') { + $cellDataFormula = substr($cellDataFormula, 3); +// echo 'Before: ', $cellDataFormula,'
      '; + $temp = explode('"', $cellDataFormula); + $key = false; + foreach ($temp as &$value) { + // Only replace in alternate array entries (i.e. non-quoted blocks) + if ($key = !$key) { + $value = str_replace(array('[.', '.', ']'), '', $value); + } + } + } else { + // Convert R1C1 style references to A1 style references (but only when not quoted) +// echo 'Before: ', $cellDataFormula,'
      '; + $temp = explode('"', $cellDataFormula); + $key = false; + foreach ($temp as &$value) { + // Only replace in alternate array entries (i.e. non-quoted blocks) + if ($key = !$key) { + preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/', $value, $cellReferences, PREG_SET_ORDER + PREG_OFFSET_CAPTURE); + // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way + // through the formula from left to right. Reversing means that we work right to left.through + // the formula + $cellReferences = array_reverse($cellReferences); + // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent, + // then modify the formula to use that new reference + foreach ($cellReferences as $cellReference) { + $rowReference = $cellReference[2][0]; + // Empty R reference is the current row + if ($rowReference == '') { + $rowReference = $rowID; + } + // Bracketed R references are relative to the current row + if ($rowReference{0} == '[') { + $rowReference = $rowID + trim($rowReference, '[]'); + } + $columnReference = $cellReference[4][0]; + // Empty C reference is the current column + if ($columnReference == '') { + $columnReference = $columnNumber; + } + // Bracketed C references are relative to the current column + if ($columnReference{0} == '[') { + $columnReference = $columnNumber + trim($columnReference, '[]'); + } + $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference; + $value = substr_replace($value, $A1CellReference, $cellReference[0][1], strlen($cellReference[0][0])); + } + } + } + } + unset($value); + // Then rebuild the formula string + $cellDataFormula = implode('"', $temp); +// echo 'After: ', $cellDataFormula,'
      '; + } + +// echo 'Cell '.$columnID.$rowID.' is a '.$type.' with a value of '.(($hasCalculatedValue) ? $cellDataFormula : $cellValue).'
      '; +// + $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $cellValue), $type); + if ($hasCalculatedValue) { +// echo 'Formula result is '.$cellValue.'
      '; + $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setCalculatedValue($cellValue); + } + $cellIsSet = $rowHasData = true; + } + + if (isset($cell->Comment)) { +// echo 'comment found
      '; + $commentAttributes = $cell->Comment->attributes($namespaces['ss']); + $author = 'unknown'; + if (isset($commentAttributes->Author)) { + $author = (string)$commentAttributes->Author; +// echo 'Author: ', $author,'
      '; + } + $node = $cell->Comment->Data->asXML(); +// $annotation = str_replace('html:','',substr($node,49,-10)); +// echo $annotation,'
      '; + $annotation = strip_tags($node); +// echo 'Annotation: ', $annotation,'
      '; + $objPHPExcel->getActiveSheet()->getComment($columnID.$rowID)->setAuthor(self::convertStringEncoding($author, $this->charSet))->setText($this->parseRichText($annotation)); + } + + if (($cellIsSet) && (isset($cell_ss['StyleID']))) { + $style = (string) $cell_ss['StyleID']; +// echo 'Cell style for '.$columnID.$rowID.' is '.$style.'
      '; + if ((isset($this->styles[$style])) && (!empty($this->styles[$style]))) { +// echo 'Cell '.$columnID.$rowID.'
      '; +// print_r($this->styles[$style]); +// echo '
      '; + if (!$objPHPExcel->getActiveSheet()->cellExists($columnID.$rowID)) { + $objPHPExcel->getActiveSheet()->getCell($columnID.$rowID)->setValue(null); + } + $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($this->styles[$style]); + } + } + ++$columnID; + while ($additionalMergedCells > 0) { + ++$columnID; + $additionalMergedCells--; + } + } + + if ($rowHasData) { + if (isset($row_ss['StyleID'])) { + $rowStyle = $row_ss['StyleID']; + } + if (isset($row_ss['Height'])) { + $rowHeight = $row_ss['Height']; +// echo 'Setting row height to '.$rowHeight.'
      '; + $objPHPExcel->getActiveSheet()->getRowDimension($rowID)->setRowHeight($rowHeight); + } + } + + ++$rowID; + } + } + ++$worksheetID; + } + + // Return + return $objPHPExcel; + } + + + protected static function convertStringEncoding($string, $charset) + { + if ($charset != 'UTF-8') { + return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', $charset); + } + return $string; + } + + + protected function parseRichText($is = '') + { + $value = new PHPExcel_RichText(); + + $value->createText(self::convertStringEncoding($is, $this->charSet)); + + return $value; + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel2007.php b/assets/excel/PHPExcel/Reader/Excel2007.php new file mode 100644 index 0000000..bf387a0 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel2007.php @@ -0,0 +1,2050 @@ +readFilter = new PHPExcel_Reader_DefaultReadFilter(); + $this->referenceHelper = PHPExcel_ReferenceHelper::getInstance(); + } + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $zipClass = PHPExcel_Settings::getZipClass(); + + // Check if zip class exists +// if (!class_exists($zipClass, false)) { +// throw new PHPExcel_Reader_Exception($zipClass . " library is not enabled"); +// } + + $xl = false; + // Load file + $zip = new $zipClass; + if ($zip->open($pFilename) === true) { + // check if it is an OOXML archive + $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if ($rels !== false) { + foreach ($rels->Relationship as $rel) { + switch ($rel["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": + if (basename($rel["Target"]) == 'workbook.xml') { + $xl = true; + } + break; + + } + } + } + $zip->close(); + } + + return $xl; + } + + + /** + * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetNames($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetNames = array(); + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + $zip->open($pFilename); + + // The files we're looking at here are small enough that simpleXML is more efficient than XMLReader + $rels = simplexml_load_string( + $this->securityScan($this->getFromZipArchive($zip, "_rels/.rels"), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()) + ); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($rels->Relationship as $rel) { + switch ($rel["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": + $xmlWorkbook = simplexml_load_string( + $this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}"), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()) + ); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + + if ($xmlWorkbook->sheets) { + foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { + // Check if sheet should be skipped + $worksheetNames[] = (string) $eleSheet["name"]; + } + } + } + } + + $zip->close(); + + return $worksheetNames; + } + + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetInfo = array(); + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + $zip->open($pFilename); + + $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($rels->Relationship as $rel) { + if ($rel["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument") { + $dir = dirname($rel["Target"]); + $relsWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships"); + + $worksheets = array(); + foreach ($relsWorkbook->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") { + $worksheets[(string) $ele["Id"]] = $ele["Target"]; + } + } + + $xmlWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + if ($xmlWorkbook->sheets) { + $dir = dirname($rel["Target"]); + foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { + $tmpInfo = array( + 'worksheetName' => (string) $eleSheet["name"], + 'lastColumnLetter' => 'A', + 'lastColumnIndex' => 0, + 'totalRows' => 0, + 'totalColumns' => 0, + ); + + $fileWorksheet = $worksheets[(string) self::getArrayItem($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; + + $xml = new XMLReader(); + $res = $xml->xml($this->securityScanFile('zip://'.PHPExcel_Shared_File::realpath($pFilename).'#'."$dir/$fileWorksheet"), null, PHPExcel_Settings::getLibXmlLoaderOptions()); + $xml->setParserProperty(2, true); + + $currCells = 0; + while ($xml->read()) { + if ($xml->name == 'row' && $xml->nodeType == XMLReader::ELEMENT) { + $row = $xml->getAttribute('r'); + $tmpInfo['totalRows'] = $row; + $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); + $currCells = 0; + } elseif ($xml->name == 'c' && $xml->nodeType == XMLReader::ELEMENT) { + $currCells++; + } + } + $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); + $xml->close(); + + $tmpInfo['lastColumnIndex'] = $tmpInfo['totalColumns'] - 1; + $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); + + $worksheetInfo[] = $tmpInfo; + } + } + } + } + + $zip->close(); + + return $worksheetInfo; + } + + private static function castToBoolean($c) + { +// echo 'Initial Cast to Boolean', PHP_EOL; + $value = isset($c->v) ? (string) $c->v : null; + if ($value == '0') { + return false; + } elseif ($value == '1') { + return true; + } else { + return (bool)$c->v; + } + return $value; + } + + private static function castToError($c) + { +// echo 'Initial Cast to Error', PHP_EOL; + return isset($c->v) ? (string) $c->v : null; + } + + private static function castToString($c) + { +// echo 'Initial Cast to String, PHP_EOL; + return isset($c->v) ? (string) $c->v : null; + } + + private function castToFormula($c, $r, &$cellDataType, &$value, &$calculatedValue, &$sharedFormulas, $castBaseType) + { +// echo 'Formula', PHP_EOL; +// echo '$c->f is ', $c->f, PHP_EOL; + $cellDataType = 'f'; + $value = "={$c->f}"; + $calculatedValue = self::$castBaseType($c); + + // Shared formula? + if (isset($c->f['t']) && strtolower((string)$c->f['t']) == 'shared') { +// echo 'SHARED FORMULA', PHP_EOL; + $instance = (string)$c->f['si']; + +// echo 'Instance ID = ', $instance, PHP_EOL; +// +// echo 'Shared Formula Array:', PHP_EOL; +// print_r($sharedFormulas); + if (!isset($sharedFormulas[(string)$c->f['si']])) { +// echo 'SETTING NEW SHARED FORMULA', PHP_EOL; +// echo 'Master is ', $r, PHP_EOL; +// echo 'Formula is ', $value, PHP_EOL; + $sharedFormulas[$instance] = array('master' => $r, 'formula' => $value); +// echo 'New Shared Formula Array:', PHP_EOL; +// print_r($sharedFormulas); + } else { +// echo 'GETTING SHARED FORMULA', PHP_EOL; +// echo 'Master is ', $sharedFormulas[$instance]['master'], PHP_EOL; +// echo 'Formula is ', $sharedFormulas[$instance]['formula'], PHP_EOL; + $master = PHPExcel_Cell::coordinateFromString($sharedFormulas[$instance]['master']); + $current = PHPExcel_Cell::coordinateFromString($r); + + $difference = array(0, 0); + $difference[0] = PHPExcel_Cell::columnIndexFromString($current[0]) - PHPExcel_Cell::columnIndexFromString($master[0]); + $difference[1] = $current[1] - $master[1]; + + $value = $this->referenceHelper->updateFormulaReferences($sharedFormulas[$instance]['formula'], 'A1', $difference[0], $difference[1]); +// echo 'Adjusted Formula is ', $value, PHP_EOL; + } + } + } + + + private function getFromZipArchive($archive, $fileName = '') + { + // Root-relative paths + if (strpos($fileName, '//') !== false) { + $fileName = substr($fileName, strpos($fileName, '//') + 1); + } + $fileName = PHPExcel_Shared_File::realpath($fileName); + + // Sadly, some 3rd party xlsx generators don't use consistent case for filenaming + // so we need to load case-insensitively from the zip file + + // Apache POI fixes + $contents = $archive->getFromIndex( + $archive->locateName($fileName, ZIPARCHIVE::FL_NOCASE) + ); + if ($contents === false) { + $contents = $archive->getFromIndex( + $archive->locateName(substr($fileName, 1), ZIPARCHIVE::FL_NOCASE) + ); + } + + return $contents; + } + + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + // Initialisations + $excel = new PHPExcel; + $excel->removeSheetByIndex(0); + if (!$this->readDataOnly) { + $excel->removeCellStyleXfByIndex(0); // remove the default style + $excel->removeCellXfByIndex(0); // remove the default style + } + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + $zip->open($pFilename); + + // Read the theme first, because we need the colour scheme when reading the styles + $wbRels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "xl/_rels/workbook.xml.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($wbRels->Relationship as $rel) { + switch ($rel["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme": + $themeOrderArray = array('lt1', 'dk1', 'lt2', 'dk2'); + $themeOrderAdditional = count($themeOrderArray); + + $xmlTheme = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "xl/{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if (is_object($xmlTheme)) { + $xmlThemeName = $xmlTheme->attributes(); + $xmlTheme = $xmlTheme->children("http://schemas.openxmlformats.org/drawingml/2006/main"); + $themeName = (string)$xmlThemeName['name']; + + $colourScheme = $xmlTheme->themeElements->clrScheme->attributes(); + $colourSchemeName = (string)$colourScheme['name']; + $colourScheme = $xmlTheme->themeElements->clrScheme->children("http://schemas.openxmlformats.org/drawingml/2006/main"); + + $themeColours = array(); + foreach ($colourScheme as $k => $xmlColour) { + $themePos = array_search($k, $themeOrderArray); + if ($themePos === false) { + $themePos = $themeOrderAdditional++; + } + if (isset($xmlColour->sysClr)) { + $xmlColourData = $xmlColour->sysClr->attributes(); + $themeColours[$themePos] = $xmlColourData['lastClr']; + } elseif (isset($xmlColour->srgbClr)) { + $xmlColourData = $xmlColour->srgbClr->attributes(); + $themeColours[$themePos] = $xmlColourData['val']; + } + } + self::$theme = new PHPExcel_Reader_Excel2007_Theme($themeName, $colourSchemeName, $themeColours); + } + break; + } + } + + $rels = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "_rels/.rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($rels->Relationship as $rel) { + switch ($rel["Type"]) { + case "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties": + $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if (is_object($xmlCore)) { + $xmlCore->registerXPathNamespace("dc", "http://purl.org/dc/elements/1.1/"); + $xmlCore->registerXPathNamespace("dcterms", "http://purl.org/dc/terms/"); + $xmlCore->registerXPathNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"); + $docProps = $excel->getProperties(); + $docProps->setCreator((string) self::getArrayItem($xmlCore->xpath("dc:creator"))); + $docProps->setLastModifiedBy((string) self::getArrayItem($xmlCore->xpath("cp:lastModifiedBy"))); + $docProps->setCreated(strtotime(self::getArrayItem($xmlCore->xpath("dcterms:created")))); //! respect xsi:type + $docProps->setModified(strtotime(self::getArrayItem($xmlCore->xpath("dcterms:modified")))); //! respect xsi:type + $docProps->setTitle((string) self::getArrayItem($xmlCore->xpath("dc:title"))); + $docProps->setDescription((string) self::getArrayItem($xmlCore->xpath("dc:description"))); + $docProps->setSubject((string) self::getArrayItem($xmlCore->xpath("dc:subject"))); + $docProps->setKeywords((string) self::getArrayItem($xmlCore->xpath("cp:keywords"))); + $docProps->setCategory((string) self::getArrayItem($xmlCore->xpath("cp:category"))); + } + break; + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties": + $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if (is_object($xmlCore)) { + $docProps = $excel->getProperties(); + if (isset($xmlCore->Company)) { + $docProps->setCompany((string) $xmlCore->Company); + } + if (isset($xmlCore->Manager)) { + $docProps->setManager((string) $xmlCore->Manager); + } + } + break; + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties": + $xmlCore = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if (is_object($xmlCore)) { + $docProps = $excel->getProperties(); + foreach ($xmlCore as $xmlProperty) { + $cellDataOfficeAttributes = $xmlProperty->attributes(); + if (isset($cellDataOfficeAttributes['name'])) { + $propertyName = (string) $cellDataOfficeAttributes['name']; + $cellDataOfficeChildren = $xmlProperty->children('http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); + $attributeType = $cellDataOfficeChildren->getName(); + $attributeValue = (string) $cellDataOfficeChildren->{$attributeType}; + $attributeValue = PHPExcel_DocumentProperties::convertProperty($attributeValue, $attributeType); + $attributeType = PHPExcel_DocumentProperties::convertPropertyType($attributeType); + $docProps->setCustomProperty($propertyName, $attributeValue, $attributeType); + } + } + } + break; + //Ribbon + case "http://schemas.microsoft.com/office/2006/relationships/ui/extensibility": + $customUI = $rel['Target']; + if (!is_null($customUI)) { + $this->readRibbon($excel, $customUI, $zip); + } + break; + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument": + $dir = dirname($rel["Target"]); + $relsWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/_rels/" . basename($rel["Target"]) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $relsWorkbook->registerXPathNamespace("rel", "http://schemas.openxmlformats.org/package/2006/relationships"); + + $sharedStrings = array(); + $xpath = self::getArrayItem($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings']")); + $xmlStrings = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$xpath[Target]")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + if (isset($xmlStrings) && isset($xmlStrings->si)) { + foreach ($xmlStrings->si as $val) { + if (isset($val->t)) { + $sharedStrings[] = PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $val->t); + } elseif (isset($val->r)) { + $sharedStrings[] = $this->parseRichText($val); + } + } + } + + $worksheets = array(); + $macros = $customUI = null; + foreach ($relsWorkbook->Relationship as $ele) { + switch ($ele['Type']) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet": + $worksheets[(string) $ele["Id"]] = $ele["Target"]; + break; + // a vbaProject ? (: some macros) + case "http://schemas.microsoft.com/office/2006/relationships/vbaProject": + $macros = $ele["Target"]; + break; + } + } + + if (!is_null($macros)) { + $macrosCode = $this->getFromZipArchive($zip, 'xl/vbaProject.bin');//vbaProject.bin always in 'xl' dir and always named vbaProject.bin + if ($macrosCode !== false) { + $excel->setMacrosCode($macrosCode); + $excel->setHasMacros(true); + //short-circuit : not reading vbaProject.bin.rel to get Signature =>allways vbaProjectSignature.bin in 'xl' dir + $Certificate = $this->getFromZipArchive($zip, 'xl/vbaProjectSignature.bin'); + if ($Certificate !== false) { + $excel->setMacrosCertificate($Certificate); + } + } + } + $styles = array(); + $cellStyles = array(); + $xpath = self::getArrayItem($relsWorkbook->xpath("rel:Relationship[@Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles']")); + $xmlStyles = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$xpath[Target]")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + + $numFmts = null; + if ($xmlStyles && $xmlStyles->numFmts[0]) { + $numFmts = $xmlStyles->numFmts[0]; + } + if (isset($numFmts) && ($numFmts !== null)) { + $numFmts->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + } + if (!$this->readDataOnly && $xmlStyles) { + foreach ($xmlStyles->cellXfs->xf as $xf) { + $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; + if ($xf["numFmtId"]) { + if (isset($numFmts)) { + $tmpNumFmt = self::getArrayItem($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]")); + + if (isset($tmpNumFmt["formatCode"])) { + $numFmt = (string) $tmpNumFmt["formatCode"]; + } + } + + // We shouldn't override any of the built-in MS Excel values (values below id 164) + // But there's a lot of naughty homebrew xlsx writers that do use "reserved" id values that aren't actually used + // So we make allowance for them rather than lose formatting masks + if ((int)$xf["numFmtId"] < 164 && PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]) !== '') { + $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]); + } + } + $quotePrefix = false; + if (isset($xf["quotePrefix"])) { + $quotePrefix = (boolean) $xf["quotePrefix"]; + } + + $style = (object) array( + "numFmt" => $numFmt, + "font" => $xmlStyles->fonts->font[intval($xf["fontId"])], + "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])], + "border" => $xmlStyles->borders->border[intval($xf["borderId"])], + "alignment" => $xf->alignment, + "protection" => $xf->protection, + "quotePrefix" => $quotePrefix, + ); + $styles[] = $style; + + // add style to cellXf collection + $objStyle = new PHPExcel_Style; + self::readStyle($objStyle, $style); + $excel->addCellXf($objStyle); + } + + foreach ($xmlStyles->cellStyleXfs->xf as $xf) { + $numFmt = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; + if ($numFmts && $xf["numFmtId"]) { + $tmpNumFmt = self::getArrayItem($numFmts->xpath("sml:numFmt[@numFmtId=$xf[numFmtId]]")); + if (isset($tmpNumFmt["formatCode"])) { + $numFmt = (string) $tmpNumFmt["formatCode"]; + } elseif ((int)$xf["numFmtId"] < 165) { + $numFmt = PHPExcel_Style_NumberFormat::builtInFormatCode((int)$xf["numFmtId"]); + } + } + + $cellStyle = (object) array( + "numFmt" => $numFmt, + "font" => $xmlStyles->fonts->font[intval($xf["fontId"])], + "fill" => $xmlStyles->fills->fill[intval($xf["fillId"])], + "border" => $xmlStyles->borders->border[intval($xf["borderId"])], + "alignment" => $xf->alignment, + "protection" => $xf->protection, + "quotePrefix" => $quotePrefix, + ); + $cellStyles[] = $cellStyle; + + // add style to cellStyleXf collection + $objStyle = new PHPExcel_Style; + self::readStyle($objStyle, $cellStyle); + $excel->addCellStyleXf($objStyle); + } + } + + $dxfs = array(); + if (!$this->readDataOnly && $xmlStyles) { + // Conditional Styles + if ($xmlStyles->dxfs) { + foreach ($xmlStyles->dxfs->dxf as $dxf) { + $style = new PHPExcel_Style(false, true); + self::readStyle($style, $dxf); + $dxfs[] = $style; + } + } + // Cell Styles + if ($xmlStyles->cellStyles) { + foreach ($xmlStyles->cellStyles->cellStyle as $cellStyle) { + if (intval($cellStyle['builtinId']) == 0) { + if (isset($cellStyles[intval($cellStyle['xfId'])])) { + // Set default style + $style = new PHPExcel_Style; + self::readStyle($style, $cellStyles[intval($cellStyle['xfId'])]); + + // normal style, currently not using it for anything + } + } + } + } + } + + $xmlWorkbook = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "{$rel['Target']}")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + + // Set base date + if ($xmlWorkbook->workbookPr) { + PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); + if (isset($xmlWorkbook->workbookPr['date1904'])) { + if (self::boolean((string) $xmlWorkbook->workbookPr['date1904'])) { + PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); + } + } + } + + $sheetId = 0; // keep track of new sheet id in final workbook + $oldSheetId = -1; // keep track of old sheet id in final workbook + $countSkippedSheets = 0; // keep track of number of skipped sheets + $mapSheetId = array(); // mapping of sheet ids from old to new + + $charts = $chartDetails = array(); + + if ($xmlWorkbook->sheets) { + foreach ($xmlWorkbook->sheets->sheet as $eleSheet) { + ++$oldSheetId; + + // Check if sheet should be skipped + if (isset($this->loadSheetsOnly) && !in_array((string) $eleSheet["name"], $this->loadSheetsOnly)) { + ++$countSkippedSheets; + $mapSheetId[$oldSheetId] = null; + continue; + } + + // Map old sheet id in original workbook to new sheet id. + // They will differ if loadSheetsOnly() is being used + $mapSheetId[$oldSheetId] = $oldSheetId - $countSkippedSheets; + + // Load sheet + $docSheet = $excel->createSheet(); + // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet + // references in formula cells... during the load, all formulae should be correct, + // and we're simply bringing the worksheet name in line with the formula, not the + // reverse + $docSheet->setTitle((string) $eleSheet["name"], false); + $fileWorksheet = $worksheets[(string) self::getArrayItem($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; + $xmlSheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "$dir/$fileWorksheet")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + + $sharedFormulas = array(); + + if (isset($eleSheet["state"]) && (string) $eleSheet["state"] != '') { + $docSheet->setSheetState((string) $eleSheet["state"]); + } + + if (isset($xmlSheet->sheetViews) && isset($xmlSheet->sheetViews->sheetView)) { + if (isset($xmlSheet->sheetViews->sheetView['zoomScale'])) { + $docSheet->getSheetView()->setZoomScale(intval($xmlSheet->sheetViews->sheetView['zoomScale'])); + } + if (isset($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])) { + $docSheet->getSheetView()->setZoomScaleNormal(intval($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])); + } + if (isset($xmlSheet->sheetViews->sheetView['view'])) { + $docSheet->getSheetView()->setView((string) $xmlSheet->sheetViews->sheetView['view']); + } + if (isset($xmlSheet->sheetViews->sheetView['showGridLines'])) { + $docSheet->setShowGridLines(self::boolean((string)$xmlSheet->sheetViews->sheetView['showGridLines'])); + } + if (isset($xmlSheet->sheetViews->sheetView['showRowColHeaders'])) { + $docSheet->setShowRowColHeaders(self::boolean((string)$xmlSheet->sheetViews->sheetView['showRowColHeaders'])); + } + if (isset($xmlSheet->sheetViews->sheetView['rightToLeft'])) { + $docSheet->setRightToLeft(self::boolean((string)$xmlSheet->sheetViews->sheetView['rightToLeft'])); + } + if (isset($xmlSheet->sheetViews->sheetView->pane)) { + if (isset($xmlSheet->sheetViews->sheetView->pane['topLeftCell'])) { + $docSheet->freezePane((string)$xmlSheet->sheetViews->sheetView->pane['topLeftCell']); + } else { + $xSplit = 0; + $ySplit = 0; + + if (isset($xmlSheet->sheetViews->sheetView->pane['xSplit'])) { + $xSplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['xSplit']); + } + + if (isset($xmlSheet->sheetViews->sheetView->pane['ySplit'])) { + $ySplit = 1 + intval($xmlSheet->sheetViews->sheetView->pane['ySplit']); + } + + $docSheet->freezePaneByColumnAndRow($xSplit, $ySplit); + } + } + + if (isset($xmlSheet->sheetViews->sheetView->selection)) { + if (isset($xmlSheet->sheetViews->sheetView->selection['sqref'])) { + $sqref = (string)$xmlSheet->sheetViews->sheetView->selection['sqref']; + $sqref = explode(' ', $sqref); + $sqref = $sqref[0]; + $docSheet->setSelectedCells($sqref); + } + } + } + + if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->tabColor)) { + if (isset($xmlSheet->sheetPr->tabColor['rgb'])) { + $docSheet->getTabColor()->setARGB((string)$xmlSheet->sheetPr->tabColor['rgb']); + } + } + if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr['codeName'])) { + $docSheet->setCodeName((string) $xmlSheet->sheetPr['codeName']); + } + if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->outlinePr)) { + if (isset($xmlSheet->sheetPr->outlinePr['summaryRight']) && + !self::boolean((string) $xmlSheet->sheetPr->outlinePr['summaryRight'])) { + $docSheet->setShowSummaryRight(false); + } else { + $docSheet->setShowSummaryRight(true); + } + + if (isset($xmlSheet->sheetPr->outlinePr['summaryBelow']) && + !self::boolean((string) $xmlSheet->sheetPr->outlinePr['summaryBelow'])) { + $docSheet->setShowSummaryBelow(false); + } else { + $docSheet->setShowSummaryBelow(true); + } + } + + if (isset($xmlSheet->sheetPr) && isset($xmlSheet->sheetPr->pageSetUpPr)) { + if (isset($xmlSheet->sheetPr->pageSetUpPr['fitToPage']) && + !self::boolean((string) $xmlSheet->sheetPr->pageSetUpPr['fitToPage'])) { + $docSheet->getPageSetup()->setFitToPage(false); + } else { + $docSheet->getPageSetup()->setFitToPage(true); + } + } + + if (isset($xmlSheet->sheetFormatPr)) { + if (isset($xmlSheet->sheetFormatPr['customHeight']) && + self::boolean((string) $xmlSheet->sheetFormatPr['customHeight']) && + isset($xmlSheet->sheetFormatPr['defaultRowHeight'])) { + $docSheet->getDefaultRowDimension()->setRowHeight((float)$xmlSheet->sheetFormatPr['defaultRowHeight']); + } + if (isset($xmlSheet->sheetFormatPr['defaultColWidth'])) { + $docSheet->getDefaultColumnDimension()->setWidth((float)$xmlSheet->sheetFormatPr['defaultColWidth']); + } + if (isset($xmlSheet->sheetFormatPr['zeroHeight']) && + ((string)$xmlSheet->sheetFormatPr['zeroHeight'] == '1')) { + $docSheet->getDefaultRowDimension()->setZeroHeight(true); + } + } + + if (isset($xmlSheet->cols) && !$this->readDataOnly) { + foreach ($xmlSheet->cols->col as $col) { + for ($i = intval($col["min"]) - 1; $i < intval($col["max"]); ++$i) { + if ($col["style"] && !$this->readDataOnly) { + $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setXfIndex(intval($col["style"])); + } + if (self::boolean($col["bestFit"])) { + //$docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setAutoSize(true); + } + if (self::boolean($col["hidden"])) { + // echo PHPExcel_Cell::stringFromColumnIndex($i), ': HIDDEN COLUMN',PHP_EOL; + $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setVisible(false); + } + if (self::boolean($col["collapsed"])) { + $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setCollapsed(true); + } + if ($col["outlineLevel"] > 0) { + $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setOutlineLevel(intval($col["outlineLevel"])); + } + $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setWidth(floatval($col["width"])); + + if (intval($col["max"]) == 16384) { + break; + } + } + } + } + + if (isset($xmlSheet->printOptions) && !$this->readDataOnly) { + if (self::boolean((string) $xmlSheet->printOptions['gridLinesSet'])) { + $docSheet->setShowGridlines(true); + } + if (self::boolean((string) $xmlSheet->printOptions['gridLines'])) { + $docSheet->setPrintGridlines(true); + } + if (self::boolean((string) $xmlSheet->printOptions['horizontalCentered'])) { + $docSheet->getPageSetup()->setHorizontalCentered(true); + } + if (self::boolean((string) $xmlSheet->printOptions['verticalCentered'])) { + $docSheet->getPageSetup()->setVerticalCentered(true); + } + } + + if ($xmlSheet && $xmlSheet->sheetData && $xmlSheet->sheetData->row) { + foreach ($xmlSheet->sheetData->row as $row) { + if ($row["ht"] && !$this->readDataOnly) { + $docSheet->getRowDimension(intval($row["r"]))->setRowHeight(floatval($row["ht"])); + } + if (self::boolean($row["hidden"]) && !$this->readDataOnly) { + $docSheet->getRowDimension(intval($row["r"]))->setVisible(false); + } + if (self::boolean($row["collapsed"])) { + $docSheet->getRowDimension(intval($row["r"]))->setCollapsed(true); + } + if ($row["outlineLevel"] > 0) { + $docSheet->getRowDimension(intval($row["r"]))->setOutlineLevel(intval($row["outlineLevel"])); + } + if ($row["s"] && !$this->readDataOnly) { + $docSheet->getRowDimension(intval($row["r"]))->setXfIndex(intval($row["s"])); + } + + foreach ($row->c as $c) { + $r = (string) $c["r"]; + $cellDataType = (string) $c["t"]; + $value = null; + $calculatedValue = null; + + // Read cell? + if ($this->getReadFilter() !== null) { + $coordinates = PHPExcel_Cell::coordinateFromString($r); + + if (!$this->getReadFilter()->readCell($coordinates[0], $coordinates[1], $docSheet->getTitle())) { + continue; + } + } + + // echo 'Reading cell ', $coordinates[0], $coordinates[1], PHP_EOL; + // print_r($c); + // echo PHP_EOL; + // echo 'Cell Data Type is ', $cellDataType, ': '; + // + // Read cell! + switch ($cellDataType) { + case "s": + // echo 'String', PHP_EOL; + if ((string)$c->v != '') { + $value = $sharedStrings[intval($c->v)]; + + if ($value instanceof PHPExcel_RichText) { + $value = clone $value; + } + } else { + $value = ''; + } + break; + case "b": + // echo 'Boolean', PHP_EOL; + if (!isset($c->f)) { + $value = self::castToBoolean($c); + } else { + // Formula + $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToBoolean'); + if (isset($c->f['t'])) { + $att = array(); + $att = $c->f; + $docSheet->getCell($r)->setFormulaAttributes($att); + } + // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; + } + break; + case "inlineStr": +// echo 'Inline String', PHP_EOL; + if (isset($c->f)) { + $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToError'); + } else { + $value = $this->parseRichText($c->is); + } + break; + case "e": + // echo 'Error', PHP_EOL; + if (!isset($c->f)) { + $value = self::castToError($c); + } else { + // Formula + $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToError'); + // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; + } + break; + default: +// echo 'Default', PHP_EOL; + if (!isset($c->f)) { + // echo 'Not a Formula', PHP_EOL; + $value = self::castToString($c); + } else { + // echo 'Treat as Formula', PHP_EOL; + // Formula + $this->castToFormula($c, $r, $cellDataType, $value, $calculatedValue, $sharedFormulas, 'castToString'); + // echo '$calculatedValue = ', $calculatedValue, PHP_EOL; + } + break; + } + // echo 'Value is ', $value, PHP_EOL; + + // Check for numeric values + if (is_numeric($value) && $cellDataType != 's') { + if ($value == (int)$value) { + $value = (int)$value; + } elseif ($value == (float)$value) { + $value = (float)$value; + } elseif ($value == (double)$value) { + $value = (double)$value; + } + } + + // Rich text? + if ($value instanceof PHPExcel_RichText && $this->readDataOnly) { + $value = $value->getPlainText(); + } + + $cell = $docSheet->getCell($r); + // Assign value + if ($cellDataType != '') { + $cell->setValueExplicit($value, $cellDataType); + } else { + $cell->setValue($value); + } + if ($calculatedValue !== null) { + $cell->setCalculatedValue($calculatedValue); + } + + // Style information? + if ($c["s"] && !$this->readDataOnly) { + // no style index means 0, it seems + $cell->setXfIndex(isset($styles[intval($c["s"])]) ? + intval($c["s"]) : 0); + } + } + } + } + + $conditionals = array(); + if (!$this->readDataOnly && $xmlSheet && $xmlSheet->conditionalFormatting) { + foreach ($xmlSheet->conditionalFormatting as $conditional) { + foreach ($conditional->cfRule as $cfRule) { + if (((string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_NONE || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CELLIS || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT || (string)$cfRule["type"] == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) && isset($dxfs[intval($cfRule["dxfId"])])) { + $conditionals[(string) $conditional["sqref"]][intval($cfRule["priority"])] = $cfRule; + } + } + } + + foreach ($conditionals as $ref => $cfRules) { + ksort($cfRules); + $conditionalStyles = array(); + foreach ($cfRules as $cfRule) { + $objConditional = new PHPExcel_Style_Conditional(); + $objConditional->setConditionType((string)$cfRule["type"]); + $objConditional->setOperatorType((string)$cfRule["operator"]); + + if ((string)$cfRule["text"] != '') { + $objConditional->setText((string)$cfRule["text"]); + } + + if (count($cfRule->formula) > 1) { + foreach ($cfRule->formula as $formula) { + $objConditional->addCondition((string)$formula); + } + } else { + $objConditional->addCondition((string)$cfRule->formula); + } + $objConditional->setStyle(clone $dxfs[intval($cfRule["dxfId"])]); + $conditionalStyles[] = $objConditional; + } + + // Extract all cell references in $ref + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($ref) as $reference) { + $docSheet->getStyle($reference)->setConditionalStyles($conditionalStyles); + } + } + } + + $aKeys = array("sheet", "objects", "scenarios", "formatCells", "formatColumns", "formatRows", "insertColumns", "insertRows", "insertHyperlinks", "deleteColumns", "deleteRows", "selectLockedCells", "sort", "autoFilter", "pivotTables", "selectUnlockedCells"); + if (!$this->readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) { + foreach ($aKeys as $key) { + $method = "set" . ucfirst($key); + $docSheet->getProtection()->$method(self::boolean((string) $xmlSheet->sheetProtection[$key])); + } + } + + if (!$this->readDataOnly && $xmlSheet && $xmlSheet->sheetProtection) { + $docSheet->getProtection()->setPassword((string) $xmlSheet->sheetProtection["password"], true); + if ($xmlSheet->protectedRanges->protectedRange) { + foreach ($xmlSheet->protectedRanges->protectedRange as $protectedRange) { + $docSheet->protectCells((string) $protectedRange["sqref"], (string) $protectedRange["password"], true); + } + } + } + + if ($xmlSheet && $xmlSheet->autoFilter && !$this->readDataOnly) { + $autoFilterRange = (string) $xmlSheet->autoFilter["ref"]; + if (strpos($autoFilterRange, ':') !== false) { + $autoFilter = $docSheet->getAutoFilter(); + $autoFilter->setRange($autoFilterRange); + + foreach ($xmlSheet->autoFilter->filterColumn as $filterColumn) { + $column = $autoFilter->getColumnByOffset((integer) $filterColumn["colId"]); + // Check for standard filters + if ($filterColumn->filters) { + $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER); + $filters = $filterColumn->filters; + if ((isset($filters["blank"])) && ($filters["blank"] == 1)) { + // Operator is undefined, but always treated as EQUAL + $column->createRule()->setRule(null, '')->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER); + } + // Standard filters are always an OR join, so no join rule needs to be set + // Entries can be either filter elements + foreach ($filters->filter as $filterRule) { + // Operator is undefined, but always treated as EQUAL + $column->createRule()->setRule(null, (string) $filterRule["val"])->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER); + } + // Or Date Group elements + foreach ($filters->dateGroupItem as $dateGroupItem) { + $column->createRule()->setRule( + // Operator is undefined, but always treated as EQUAL + null, + array( + 'year' => (string) $dateGroupItem["year"], + 'month' => (string) $dateGroupItem["month"], + 'day' => (string) $dateGroupItem["day"], + 'hour' => (string) $dateGroupItem["hour"], + 'minute' => (string) $dateGroupItem["minute"], + 'second' => (string) $dateGroupItem["second"], + ), + (string) $dateGroupItem["dateTimeGrouping"] + ) + ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP); + } + } + // Check for custom filters + if ($filterColumn->customFilters) { + $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER); + $customFilters = $filterColumn->customFilters; + // Custom filters can an AND or an OR join; + // and there should only ever be one or two entries + if ((isset($customFilters["and"])) && ($customFilters["and"] == 1)) { + $column->setJoin(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); + } + foreach ($customFilters->customFilter as $filterRule) { + $column->createRule()->setRule( + (string) $filterRule["operator"], + (string) $filterRule["val"] + ) + ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER); + } + } + // Check for dynamic filters + if ($filterColumn->dynamicFilter) { + $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER); + // We should only ever have one dynamic filter + foreach ($filterColumn->dynamicFilter as $filterRule) { + $column->createRule()->setRule( + // Operator is undefined, but always treated as EQUAL + null, + (string) $filterRule["val"], + (string) $filterRule["type"] + ) + ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER); + if (isset($filterRule["val"])) { + $column->setAttribute('val', (string) $filterRule["val"]); + } + if (isset($filterRule["maxVal"])) { + $column->setAttribute('maxVal', (string) $filterRule["maxVal"]); + } + } + } + // Check for dynamic filters + if ($filterColumn->top10) { + $column->setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER); + // We should only ever have one top10 filter + foreach ($filterColumn->top10 as $filterRule) { + $column->createRule()->setRule( + (((isset($filterRule["percent"])) && ($filterRule["percent"] == 1)) + ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT + : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE + ), + (string) $filterRule["val"], + (((isset($filterRule["top"])) && ($filterRule["top"] == 1)) + ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP + : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM + ) + ) + ->setRuleType(PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER); + } + } + } + } + } + + if ($xmlSheet && $xmlSheet->mergeCells && $xmlSheet->mergeCells->mergeCell && !$this->readDataOnly) { + foreach ($xmlSheet->mergeCells->mergeCell as $mergeCell) { + $mergeRef = (string) $mergeCell["ref"]; + if (strpos($mergeRef, ':') !== false) { + $docSheet->mergeCells((string) $mergeCell["ref"]); + } + } + } + + if ($xmlSheet && $xmlSheet->pageMargins && !$this->readDataOnly) { + $docPageMargins = $docSheet->getPageMargins(); + $docPageMargins->setLeft(floatval($xmlSheet->pageMargins["left"])); + $docPageMargins->setRight(floatval($xmlSheet->pageMargins["right"])); + $docPageMargins->setTop(floatval($xmlSheet->pageMargins["top"])); + $docPageMargins->setBottom(floatval($xmlSheet->pageMargins["bottom"])); + $docPageMargins->setHeader(floatval($xmlSheet->pageMargins["header"])); + $docPageMargins->setFooter(floatval($xmlSheet->pageMargins["footer"])); + } + + if ($xmlSheet && $xmlSheet->pageSetup && !$this->readDataOnly) { + $docPageSetup = $docSheet->getPageSetup(); + + if (isset($xmlSheet->pageSetup["orientation"])) { + $docPageSetup->setOrientation((string) $xmlSheet->pageSetup["orientation"]); + } + if (isset($xmlSheet->pageSetup["paperSize"])) { + $docPageSetup->setPaperSize(intval($xmlSheet->pageSetup["paperSize"])); + } + if (isset($xmlSheet->pageSetup["scale"])) { + $docPageSetup->setScale(intval($xmlSheet->pageSetup["scale"]), false); + } + if (isset($xmlSheet->pageSetup["fitToHeight"]) && intval($xmlSheet->pageSetup["fitToHeight"]) >= 0) { + $docPageSetup->setFitToHeight(intval($xmlSheet->pageSetup["fitToHeight"]), false); + } + if (isset($xmlSheet->pageSetup["fitToWidth"]) && intval($xmlSheet->pageSetup["fitToWidth"]) >= 0) { + $docPageSetup->setFitToWidth(intval($xmlSheet->pageSetup["fitToWidth"]), false); + } + if (isset($xmlSheet->pageSetup["firstPageNumber"]) && isset($xmlSheet->pageSetup["useFirstPageNumber"]) && + self::boolean((string) $xmlSheet->pageSetup["useFirstPageNumber"])) { + $docPageSetup->setFirstPageNumber(intval($xmlSheet->pageSetup["firstPageNumber"])); + } + } + + if ($xmlSheet && $xmlSheet->headerFooter && !$this->readDataOnly) { + $docHeaderFooter = $docSheet->getHeaderFooter(); + + if (isset($xmlSheet->headerFooter["differentOddEven"]) && + self::boolean((string)$xmlSheet->headerFooter["differentOddEven"])) { + $docHeaderFooter->setDifferentOddEven(true); + } else { + $docHeaderFooter->setDifferentOddEven(false); + } + if (isset($xmlSheet->headerFooter["differentFirst"]) && + self::boolean((string)$xmlSheet->headerFooter["differentFirst"])) { + $docHeaderFooter->setDifferentFirst(true); + } else { + $docHeaderFooter->setDifferentFirst(false); + } + if (isset($xmlSheet->headerFooter["scaleWithDoc"]) && + !self::boolean((string)$xmlSheet->headerFooter["scaleWithDoc"])) { + $docHeaderFooter->setScaleWithDocument(false); + } else { + $docHeaderFooter->setScaleWithDocument(true); + } + if (isset($xmlSheet->headerFooter["alignWithMargins"]) && + !self::boolean((string)$xmlSheet->headerFooter["alignWithMargins"])) { + $docHeaderFooter->setAlignWithMargins(false); + } else { + $docHeaderFooter->setAlignWithMargins(true); + } + + $docHeaderFooter->setOddHeader((string) $xmlSheet->headerFooter->oddHeader); + $docHeaderFooter->setOddFooter((string) $xmlSheet->headerFooter->oddFooter); + $docHeaderFooter->setEvenHeader((string) $xmlSheet->headerFooter->evenHeader); + $docHeaderFooter->setEvenFooter((string) $xmlSheet->headerFooter->evenFooter); + $docHeaderFooter->setFirstHeader((string) $xmlSheet->headerFooter->firstHeader); + $docHeaderFooter->setFirstFooter((string) $xmlSheet->headerFooter->firstFooter); + } + + if ($xmlSheet && $xmlSheet->rowBreaks && $xmlSheet->rowBreaks->brk && !$this->readDataOnly) { + foreach ($xmlSheet->rowBreaks->brk as $brk) { + if ($brk["man"]) { + $docSheet->setBreak("A$brk[id]", PHPExcel_Worksheet::BREAK_ROW); + } + } + } + if ($xmlSheet && $xmlSheet->colBreaks && $xmlSheet->colBreaks->brk && !$this->readDataOnly) { + foreach ($xmlSheet->colBreaks->brk as $brk) { + if ($brk["man"]) { + $docSheet->setBreak(PHPExcel_Cell::stringFromColumnIndex((string) $brk["id"]) . "1", PHPExcel_Worksheet::BREAK_COLUMN); + } + } + } + + if ($xmlSheet && $xmlSheet->dataValidations && !$this->readDataOnly) { + foreach ($xmlSheet->dataValidations->dataValidation as $dataValidation) { + // Uppercase coordinate + $range = strtoupper($dataValidation["sqref"]); + $rangeSet = explode(' ', $range); + foreach ($rangeSet as $range) { + $stRange = $docSheet->shrinkRangeToFit($range); + + // Extract all cell references in $range + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($stRange) as $reference) { + // Create validation + $docValidation = $docSheet->getCell($reference)->getDataValidation(); + $docValidation->setType((string) $dataValidation["type"]); + $docValidation->setErrorStyle((string) $dataValidation["errorStyle"]); + $docValidation->setOperator((string) $dataValidation["operator"]); + $docValidation->setAllowBlank($dataValidation["allowBlank"] != 0); + $docValidation->setShowDropDown($dataValidation["showDropDown"] == 0); + $docValidation->setShowInputMessage($dataValidation["showInputMessage"] != 0); + $docValidation->setShowErrorMessage($dataValidation["showErrorMessage"] != 0); + $docValidation->setErrorTitle((string) $dataValidation["errorTitle"]); + $docValidation->setError((string) $dataValidation["error"]); + $docValidation->setPromptTitle((string) $dataValidation["promptTitle"]); + $docValidation->setPrompt((string) $dataValidation["prompt"]); + $docValidation->setFormula1((string) $dataValidation->formula1); + $docValidation->setFormula2((string) $dataValidation->formula2); + } + } + } + } + + // Add hyperlinks + $hyperlinks = array(); + if (!$this->readDataOnly) { + // Locate hyperlink relations + if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { + $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($relsWorksheet->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink") { + $hyperlinks[(string)$ele["Id"]] = (string)$ele["Target"]; + } + } + } + + // Loop through hyperlinks + if ($xmlSheet && $xmlSheet->hyperlinks) { + foreach ($xmlSheet->hyperlinks->hyperlink as $hyperlink) { + // Link url + $linkRel = $hyperlink->attributes('http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($hyperlink['ref']) as $cellReference) { + $cell = $docSheet->getCell($cellReference); + if (isset($linkRel['id'])) { + $hyperlinkUrl = $hyperlinks[ (string)$linkRel['id'] ]; + if (isset($hyperlink['location'])) { + $hyperlinkUrl .= '#' . (string) $hyperlink['location']; + } + $cell->getHyperlink()->setUrl($hyperlinkUrl); + } elseif (isset($hyperlink['location'])) { + $cell->getHyperlink()->setUrl('sheet://' . (string)$hyperlink['location']); + } + + // Tooltip + if (isset($hyperlink['tooltip'])) { + $cell->getHyperlink()->setTooltip((string)$hyperlink['tooltip']); + } + } + } + } + } + + // Add comments + $comments = array(); + $vmlComments = array(); + if (!$this->readDataOnly) { + // Locate comment relations + if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { + $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + foreach ($relsWorksheet->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments") { + $comments[(string)$ele["Id"]] = (string)$ele["Target"]; + } + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") { + $vmlComments[(string)$ele["Id"]] = (string)$ele["Target"]; + } + } + } + + // Loop through comments + foreach ($comments as $relName => $relPath) { + // Load comments file + $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath); + $commentsFile = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $relPath)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + + // Utility variables + $authors = array(); + + // Loop through authors + foreach ($commentsFile->authors->author as $author) { + $authors[] = (string)$author; + } + + // Loop through contents + foreach ($commentsFile->commentList->comment as $comment) { + if (!empty($comment['authorId'])) { + $docSheet->getComment((string)$comment['ref'])->setAuthor($authors[(string)$comment['authorId']]); + } + $docSheet->getComment((string)$comment['ref'])->setText($this->parseRichText($comment->text)); + } + } + + // Loop through VML comments + foreach ($vmlComments as $relName => $relPath) { + // Load VML comments file + $relPath = PHPExcel_Shared_File::realpath(dirname("$dir/$fileWorksheet") . "/" . $relPath); + $vmlCommentsFile = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $relPath)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $vmlCommentsFile->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); + + $shapes = $vmlCommentsFile->xpath('//v:shape'); + foreach ($shapes as $shape) { + $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); + + if (isset($shape['style'])) { + $style = (string)$shape['style']; + $fillColor = strtoupper(substr((string)$shape['fillcolor'], 1)); + $column = null; + $row = null; + + $clientData = $shape->xpath('.//x:ClientData'); + if (is_array($clientData) && !empty($clientData)) { + $clientData = $clientData[0]; + + if (isset($clientData['ObjectType']) && (string)$clientData['ObjectType'] == 'Note') { + $temp = $clientData->xpath('.//x:Row'); + if (is_array($temp)) { + $row = $temp[0]; + } + + $temp = $clientData->xpath('.//x:Column'); + if (is_array($temp)) { + $column = $temp[0]; + } + } + } + + if (($column !== null) && ($row !== null)) { + // Set comment properties + $comment = $docSheet->getCommentByColumnAndRow((string) $column, $row + 1); + $comment->getFillColor()->setRGB($fillColor); + + // Parse style + $styleArray = explode(';', str_replace(' ', '', $style)); + foreach ($styleArray as $stylePair) { + $stylePair = explode(':', $stylePair); + + if ($stylePair[0] == 'margin-left') { + $comment->setMarginLeft($stylePair[1]); + } + if ($stylePair[0] == 'margin-top') { + $comment->setMarginTop($stylePair[1]); + } + if ($stylePair[0] == 'width') { + $comment->setWidth($stylePair[1]); + } + if ($stylePair[0] == 'height') { + $comment->setHeight($stylePair[1]); + } + if ($stylePair[0] == 'visibility') { + $comment->setVisible($stylePair[1] == 'visible'); + } + } + } + } + } + } + + // Header/footer images + if ($xmlSheet && $xmlSheet->legacyDrawingHF && !$this->readDataOnly) { + if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { + $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $vmlRelationship = ''; + + foreach ($relsWorksheet->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing") { + $vmlRelationship = self::dirAdd("$dir/$fileWorksheet", $ele["Target"]); + } + } + + if ($vmlRelationship != '') { + // Fetch linked images + $relsVML = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname($vmlRelationship) . '/_rels/' . basename($vmlRelationship) . '.rels')), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $drawings = array(); + foreach ($relsVML->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") { + $drawings[(string) $ele["Id"]] = self::dirAdd($vmlRelationship, $ele["Target"]); + } + } + + // Fetch VML document + $vmlDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $vmlRelationship)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $vmlDrawing->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); + + $hfImages = array(); + + $shapes = $vmlDrawing->xpath('//v:shape'); + foreach ($shapes as $idx => $shape) { + $shape->registerXPathNamespace('v', 'urn:schemas-microsoft-com:vml'); + $imageData = $shape->xpath('//v:imagedata'); + $imageData = $imageData[$idx]; + + $imageData = $imageData->attributes('urn:schemas-microsoft-com:office:office'); + $style = self::toCSSArray((string)$shape['style']); + + $hfImages[ (string)$shape['id'] ] = new PHPExcel_Worksheet_HeaderFooterDrawing(); + if (isset($imageData['title'])) { + $hfImages[ (string)$shape['id'] ]->setName((string)$imageData['title']); + } + + $hfImages[ (string)$shape['id'] ]->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $drawings[(string)$imageData['relid']], false); + $hfImages[ (string)$shape['id'] ]->setResizeProportional(false); + $hfImages[ (string)$shape['id'] ]->setWidth($style['width']); + $hfImages[ (string)$shape['id'] ]->setHeight($style['height']); + if (isset($style['margin-left'])) { + $hfImages[ (string)$shape['id'] ]->setOffsetX($style['margin-left']); + } + $hfImages[ (string)$shape['id'] ]->setOffsetY($style['margin-top']); + $hfImages[ (string)$shape['id'] ]->setResizeProportional(true); + } + + $docSheet->getHeaderFooter()->setImages($hfImages); + } + } + } + + } + + // TODO: Autoshapes from twoCellAnchors! + if ($zip->locateName(dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")) { + $relsWorksheet = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname("$dir/$fileWorksheet") . "/_rels/" . basename($fileWorksheet) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $drawings = array(); + foreach ($relsWorksheet->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing") { + $drawings[(string) $ele["Id"]] = self::dirAdd("$dir/$fileWorksheet", $ele["Target"]); + } + } + if ($xmlSheet->drawing && !$this->readDataOnly) { + foreach ($xmlSheet->drawing as $drawing) { + $fileDrawing = $drawings[(string) self::getArrayItem($drawing->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")]; + $relsDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, dirname($fileDrawing) . "/_rels/" . basename($fileDrawing) . ".rels")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); //~ http://schemas.openxmlformats.org/package/2006/relationships"); + $images = array(); + + if ($relsDrawing && $relsDrawing->Relationship) { + foreach ($relsDrawing->Relationship as $ele) { + if ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") { + $images[(string) $ele["Id"]] = self::dirAdd($fileDrawing, $ele["Target"]); + } elseif ($ele["Type"] == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart") { + if ($this->includeCharts) { + $charts[self::dirAdd($fileDrawing, $ele["Target"])] = array( + 'id' => (string) $ele["Id"], + 'sheet' => $docSheet->getTitle() + ); + } + } + } + } + $xmlDrawing = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $fileDrawing)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions())->children("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"); + + if ($xmlDrawing->oneCellAnchor) { + foreach ($xmlDrawing->oneCellAnchor as $oneCellAnchor) { + if ($oneCellAnchor->pic->blipFill) { + $blip = $oneCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip; + $xfrm = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm; + $outerShdw = $oneCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw; + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setName((string) self::getArrayItem($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name")); + $objDrawing->setDescription((string) self::getArrayItem($oneCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr")); + $objDrawing->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $images[(string) self::getArrayItem($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false); + $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1)); + $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff)); + $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff)); + $objDrawing->setResizeProportional(false); + $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cx"))); + $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cy"))); + if ($xfrm) { + $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($xfrm->attributes(), "rot"))); + } + if ($outerShdw) { + $shadow = $objDrawing->getShadow(); + $shadow->setVisible(true); + $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "blurRad"))); + $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "dist"))); + $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($outerShdw->attributes(), "dir"))); + $shadow->setAlignment((string) self::getArrayItem($outerShdw->attributes(), "algn")); + $shadow->getColor()->setRGB(self::getArrayItem($outerShdw->srgbClr->attributes(), "val")); + $shadow->setAlpha(self::getArrayItem($outerShdw->srgbClr->alpha->attributes(), "val") / 1000); + } + $objDrawing->setWorksheet($docSheet); + } else { + // ? Can charts be positioned with a oneCellAnchor ? + $coordinates = PHPExcel_Cell::stringFromColumnIndex((string) $oneCellAnchor->from->col) . ($oneCellAnchor->from->row + 1); + $offsetX = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->colOff); + $offsetY = PHPExcel_Shared_Drawing::EMUToPixels($oneCellAnchor->from->rowOff); + $width = PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cx")); + $height = PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($oneCellAnchor->ext->attributes(), "cy")); + } + } + } + if ($xmlDrawing->twoCellAnchor) { + foreach ($xmlDrawing->twoCellAnchor as $twoCellAnchor) { + if ($twoCellAnchor->pic->blipFill) { + $blip = $twoCellAnchor->pic->blipFill->children("http://schemas.openxmlformats.org/drawingml/2006/main")->blip; + $xfrm = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->xfrm; + $outerShdw = $twoCellAnchor->pic->spPr->children("http://schemas.openxmlformats.org/drawingml/2006/main")->effectLst->outerShdw; + $objDrawing = new PHPExcel_Worksheet_Drawing; + $objDrawing->setName((string) self::getArrayItem($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "name")); + $objDrawing->setDescription((string) self::getArrayItem($twoCellAnchor->pic->nvPicPr->cNvPr->attributes(), "descr")); + $objDrawing->setPath("zip://".PHPExcel_Shared_File::realpath($pFilename)."#" . $images[(string) self::getArrayItem($blip->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "embed")], false); + $objDrawing->setCoordinates(PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1)); + $objDrawing->setOffsetX(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff)); + $objDrawing->setOffsetY(PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff)); + $objDrawing->setResizeProportional(false); + + if ($xfrm) { + $objDrawing->setWidth(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($xfrm->ext->attributes(), "cx"))); + $objDrawing->setHeight(PHPExcel_Shared_Drawing::EMUToPixels(self::getArrayItem($xfrm->ext->attributes(), "cy"))); + $objDrawing->setRotation(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($xfrm->attributes(), "rot"))); + } + if ($outerShdw) { + $shadow = $objDrawing->getShadow(); + $shadow->setVisible(true); + $shadow->setBlurRadius(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "blurRad"))); + $shadow->setDistance(PHPExcel_Shared_Drawing::EMUTopixels(self::getArrayItem($outerShdw->attributes(), "dist"))); + $shadow->setDirection(PHPExcel_Shared_Drawing::angleToDegrees(self::getArrayItem($outerShdw->attributes(), "dir"))); + $shadow->setAlignment((string) self::getArrayItem($outerShdw->attributes(), "algn")); + $shadow->getColor()->setRGB(self::getArrayItem($outerShdw->srgbClr->attributes(), "val")); + $shadow->setAlpha(self::getArrayItem($outerShdw->srgbClr->alpha->attributes(), "val") / 1000); + } + $objDrawing->setWorksheet($docSheet); + } elseif (($this->includeCharts) && ($twoCellAnchor->graphicFrame)) { + $fromCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->from->col) . ($twoCellAnchor->from->row + 1); + $fromOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->colOff); + $fromOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->from->rowOff); + $toCoordinate = PHPExcel_Cell::stringFromColumnIndex((string) $twoCellAnchor->to->col) . ($twoCellAnchor->to->row + 1); + $toOffsetX = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->colOff); + $toOffsetY = PHPExcel_Shared_Drawing::EMUToPixels($twoCellAnchor->to->rowOff); + $graphic = $twoCellAnchor->graphicFrame->children("http://schemas.openxmlformats.org/drawingml/2006/main")->graphic; + $chartRef = $graphic->graphicData->children("http://schemas.openxmlformats.org/drawingml/2006/chart")->chart; + $thisChart = (string) $chartRef->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"); + + $chartDetails[$docSheet->getTitle().'!'.$thisChart] = array( + 'fromCoordinate' => $fromCoordinate, + 'fromOffsetX' => $fromOffsetX, + 'fromOffsetY' => $fromOffsetY, + 'toCoordinate' => $toCoordinate, + 'toOffsetX' => $toOffsetX, + 'toOffsetY' => $toOffsetY, + 'worksheetTitle' => $docSheet->getTitle() + ); + } + } + } + } + } + } + + // Loop through definedNames + if ($xmlWorkbook->definedNames) { + foreach ($xmlWorkbook->definedNames->definedName as $definedName) { + // Extract range + $extractedRange = (string)$definedName; + $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange); + if (($spos = strpos($extractedRange, '!')) !== false) { + $extractedRange = substr($extractedRange, 0, $spos).str_replace('$', '', substr($extractedRange, $spos)); + } else { + $extractedRange = str_replace('$', '', $extractedRange); + } + + // Valid range? + if (stripos((string)$definedName, '#REF!') !== false || $extractedRange == '') { + continue; + } + + // Some definedNames are only applicable if we are on the same sheet... + if ((string)$definedName['localSheetId'] != '' && (string)$definedName['localSheetId'] == $sheetId) { + // Switch on type + switch ((string)$definedName['name']) { + case '_xlnm._FilterDatabase': + if ((string)$definedName['hidden'] !== '1') { + $extractedRange = explode(',', $extractedRange); + foreach ($extractedRange as $range) { + $autoFilterRange = $range; + if (strpos($autoFilterRange, ':') !== false) { + $docSheet->getAutoFilter()->setRange($autoFilterRange); + } + } + } + break; + case '_xlnm.Print_Titles': + // Split $extractedRange + $extractedRange = explode(',', $extractedRange); + + // Set print titles + foreach ($extractedRange as $range) { + $matches = array(); + $range = str_replace('$', '', $range); + + // check for repeating columns, e g. 'A:A' or 'A:D' + if (preg_match('/!?([A-Z]+)\:([A-Z]+)$/', $range, $matches)) { + $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($matches[1], $matches[2])); + } elseif (preg_match('/!?(\d+)\:(\d+)$/', $range, $matches)) { + // check for repeating rows, e.g. '1:1' or '1:5' + $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($matches[1], $matches[2])); + } + } + break; + case '_xlnm.Print_Area': + $rangeSets = explode(',', $extractedRange); // FIXME: what if sheetname contains comma? + $newRangeSets = array(); + foreach ($rangeSets as $rangeSet) { + $range = explode('!', $rangeSet); // FIXME: what if sheetname contains exclamation mark? + $rangeSet = isset($range[1]) ? $range[1] : $range[0]; + if (strpos($rangeSet, ':') === false) { + $rangeSet = $rangeSet . ':' . $rangeSet; + } + $newRangeSets[] = str_replace('$', '', $rangeSet); + } + $docSheet->getPageSetup()->setPrintArea(implode(',', $newRangeSets)); + break; + + default: + break; + } + } + } + } + + // Next sheet id + ++$sheetId; + } + + // Loop through definedNames + if ($xmlWorkbook->definedNames) { + foreach ($xmlWorkbook->definedNames->definedName as $definedName) { + // Extract range + $extractedRange = (string)$definedName; + $extractedRange = preg_replace('/\'(\w+)\'\!/', '', $extractedRange); + if (($spos = strpos($extractedRange, '!')) !== false) { + $extractedRange = substr($extractedRange, 0, $spos).str_replace('$', '', substr($extractedRange, $spos)); + } else { + $extractedRange = str_replace('$', '', $extractedRange); + } + + // Valid range? + if (stripos((string)$definedName, '#REF!') !== false || $extractedRange == '') { + continue; + } + + // Some definedNames are only applicable if we are on the same sheet... + if ((string)$definedName['localSheetId'] != '') { + // Local defined name + // Switch on type + switch ((string)$definedName['name']) { + case '_xlnm._FilterDatabase': + case '_xlnm.Print_Titles': + case '_xlnm.Print_Area': + break; + default: + if ($mapSheetId[(integer) $definedName['localSheetId']] !== null) { + $range = explode('!', (string)$definedName); + if (count($range) == 2) { + $range[0] = str_replace("''", "'", $range[0]); + $range[0] = str_replace("'", "", $range[0]); + if ($worksheet = $docSheet->getParent()->getSheetByName($range[0])) { + $extractedRange = str_replace('$', '', $range[1]); + $scope = $docSheet->getParent()->getSheet($mapSheetId[(integer) $definedName['localSheetId']]); + $excel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $worksheet, $extractedRange, true, $scope)); + } + } + } + break; + } + } elseif (!isset($definedName['localSheetId'])) { + // "Global" definedNames + $locatedSheet = null; + $extractedSheetName = ''; + if (strpos((string)$definedName, '!') !== false) { + // Extract sheet name + $extractedSheetName = PHPExcel_Worksheet::extractSheetTitle((string)$definedName, true); + $extractedSheetName = $extractedSheetName[0]; + + // Locate sheet + $locatedSheet = $excel->getSheetByName($extractedSheetName); + + // Modify range + $range = explode('!', $extractedRange); + $extractedRange = isset($range[1]) ? $range[1] : $range[0]; + } + + if ($locatedSheet !== null) { + $excel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $locatedSheet, $extractedRange, false)); + } + } + } + } + } + + if ((!$this->readDataOnly) || (!empty($this->loadSheetsOnly))) { + // active sheet index + $activeTab = intval($xmlWorkbook->bookViews->workbookView["activeTab"]); // refers to old sheet index + + // keep active sheet index if sheet is still loaded, else first sheet is set as the active + if (isset($mapSheetId[$activeTab]) && $mapSheetId[$activeTab] !== null) { + $excel->setActiveSheetIndex($mapSheetId[$activeTab]); + } else { + if ($excel->getSheetCount() == 0) { + $excel->createSheet(); + } + $excel->setActiveSheetIndex(0); + } + } + break; + } + } + + if (!$this->readDataOnly) { + $contentTypes = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, "[Content_Types].xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + foreach ($contentTypes->Override as $contentType) { + switch ($contentType["ContentType"]) { + case "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": + if ($this->includeCharts) { + $chartEntryRef = ltrim($contentType['PartName'], '/'); + $chartElements = simplexml_load_string($this->securityScan($this->getFromZipArchive($zip, $chartEntryRef)), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $objChart = PHPExcel_Reader_Excel2007_Chart::readChart($chartElements, basename($chartEntryRef, '.xml')); + +// echo 'Chart ', $chartEntryRef, '
      '; +// var_dump($charts[$chartEntryRef]); +// + if (isset($charts[$chartEntryRef])) { + $chartPositionRef = $charts[$chartEntryRef]['sheet'].'!'.$charts[$chartEntryRef]['id']; +// echo 'Position Ref ', $chartPositionRef, '
      '; + if (isset($chartDetails[$chartPositionRef])) { +// var_dump($chartDetails[$chartPositionRef]); + + $excel->getSheetByName($charts[$chartEntryRef]['sheet'])->addChart($objChart); + $objChart->setWorksheet($excel->getSheetByName($charts[$chartEntryRef]['sheet'])); + $objChart->setTopLeftPosition($chartDetails[$chartPositionRef]['fromCoordinate'], $chartDetails[$chartPositionRef]['fromOffsetX'], $chartDetails[$chartPositionRef]['fromOffsetY']); + $objChart->setBottomRightPosition($chartDetails[$chartPositionRef]['toCoordinate'], $chartDetails[$chartPositionRef]['toOffsetX'], $chartDetails[$chartPositionRef]['toOffsetY']); + } + } + } + } + } + } + + $zip->close(); + + return $excel; + } + + private static function readColor($color, $background = false) + { + if (isset($color["rgb"])) { + return (string)$color["rgb"]; + } elseif (isset($color["indexed"])) { + return PHPExcel_Style_Color::indexedColor($color["indexed"]-7, $background)->getARGB(); + } elseif (isset($color["theme"])) { + if (self::$theme !== null) { + $returnColour = self::$theme->getColourByIndex((int)$color["theme"]); + if (isset($color["tint"])) { + $tintAdjust = (float) $color["tint"]; + $returnColour = PHPExcel_Style_Color::changeBrightness($returnColour, $tintAdjust); + } + return 'FF'.$returnColour; + } + } + + if ($background) { + return 'FFFFFFFF'; + } + return 'FF000000'; + } + + private static function readStyle($docStyle, $style) + { + // format code +// if (isset($style->numFmt)) { +// if (isset($style->numFmt['formatCode'])) { +// $docStyle->getNumberFormat()->setFormatCode((string) $style->numFmt['formatCode']); +// } else { + $docStyle->getNumberFormat()->setFormatCode($style->numFmt); +// } +// } + + // font + if (isset($style->font)) { + $docStyle->getFont()->setName((string) $style->font->name["val"]); + $docStyle->getFont()->setSize((string) $style->font->sz["val"]); + if (isset($style->font->b)) { + $docStyle->getFont()->setBold(!isset($style->font->b["val"]) || self::boolean((string) $style->font->b["val"])); + } + if (isset($style->font->i)) { + $docStyle->getFont()->setItalic(!isset($style->font->i["val"]) || self::boolean((string) $style->font->i["val"])); + } + if (isset($style->font->strike)) { + $docStyle->getFont()->setStrikethrough(!isset($style->font->strike["val"]) || self::boolean((string) $style->font->strike["val"])); + } + $docStyle->getFont()->getColor()->setARGB(self::readColor($style->font->color)); + + if (isset($style->font->u) && !isset($style->font->u["val"])) { + $docStyle->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); + } elseif (isset($style->font->u) && isset($style->font->u["val"])) { + $docStyle->getFont()->setUnderline((string)$style->font->u["val"]); + } + + if (isset($style->font->vertAlign) && isset($style->font->vertAlign["val"])) { + $vertAlign = strtolower((string)$style->font->vertAlign["val"]); + if ($vertAlign == 'superscript') { + $docStyle->getFont()->setSuperScript(true); + } + if ($vertAlign == 'subscript') { + $docStyle->getFont()->setSubScript(true); + } + } + } + + // fill + if (isset($style->fill)) { + if ($style->fill->gradientFill) { + $gradientFill = $style->fill->gradientFill[0]; + if (!empty($gradientFill["type"])) { + $docStyle->getFill()->setFillType((string) $gradientFill["type"]); + } + $docStyle->getFill()->setRotation(floatval($gradientFill["degree"])); + $gradientFill->registerXPathNamespace("sml", "http://schemas.openxmlformats.org/spreadsheetml/2006/main"); + $docStyle->getFill()->getStartColor()->setARGB(self::readColor(self::getArrayItem($gradientFill->xpath("sml:stop[@position=0]"))->color)); + $docStyle->getFill()->getEndColor()->setARGB(self::readColor(self::getArrayItem($gradientFill->xpath("sml:stop[@position=1]"))->color)); + } elseif ($style->fill->patternFill) { + $patternType = (string)$style->fill->patternFill["patternType"] != '' ? (string)$style->fill->patternFill["patternType"] : 'solid'; + $docStyle->getFill()->setFillType($patternType); + if ($style->fill->patternFill->fgColor) { + $docStyle->getFill()->getStartColor()->setARGB(self::readColor($style->fill->patternFill->fgColor, true)); + } else { + $docStyle->getFill()->getStartColor()->setARGB('FF000000'); + } + if ($style->fill->patternFill->bgColor) { + $docStyle->getFill()->getEndColor()->setARGB(self::readColor($style->fill->patternFill->bgColor, true)); + } + } + } + + // border + if (isset($style->border)) { + $diagonalUp = self::boolean((string) $style->border["diagonalUp"]); + $diagonalDown = self::boolean((string) $style->border["diagonalDown"]); + if (!$diagonalUp && !$diagonalDown) { + $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE); + } elseif ($diagonalUp && !$diagonalDown) { + $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP); + } elseif (!$diagonalUp && $diagonalDown) { + $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN); + } else { + $docStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH); + } + self::readBorder($docStyle->getBorders()->getLeft(), $style->border->left); + self::readBorder($docStyle->getBorders()->getRight(), $style->border->right); + self::readBorder($docStyle->getBorders()->getTop(), $style->border->top); + self::readBorder($docStyle->getBorders()->getBottom(), $style->border->bottom); + self::readBorder($docStyle->getBorders()->getDiagonal(), $style->border->diagonal); + } + + // alignment + if (isset($style->alignment)) { + $docStyle->getAlignment()->setHorizontal((string) $style->alignment["horizontal"]); + $docStyle->getAlignment()->setVertical((string) $style->alignment["vertical"]); + + $textRotation = 0; + if ((int)$style->alignment["textRotation"] <= 90) { + $textRotation = (int)$style->alignment["textRotation"]; + } elseif ((int)$style->alignment["textRotation"] > 90) { + $textRotation = 90 - (int)$style->alignment["textRotation"]; + } + + $docStyle->getAlignment()->setTextRotation(intval($textRotation)); + $docStyle->getAlignment()->setWrapText(self::boolean((string) $style->alignment["wrapText"])); + $docStyle->getAlignment()->setShrinkToFit(self::boolean((string) $style->alignment["shrinkToFit"])); + $docStyle->getAlignment()->setIndent(intval((string)$style->alignment["indent"]) > 0 ? intval((string)$style->alignment["indent"]) : 0); + $docStyle->getAlignment()->setReadorder(intval((string)$style->alignment["readingOrder"]) > 0 ? intval((string)$style->alignment["readingOrder"]) : 0); + } + + // protection + if (isset($style->protection)) { + if (isset($style->protection['locked'])) { + if (self::boolean((string) $style->protection['locked'])) { + $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_PROTECTED); + } else { + $docStyle->getProtection()->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); + } + } + + if (isset($style->protection['hidden'])) { + if (self::boolean((string) $style->protection['hidden'])) { + $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_PROTECTED); + } else { + $docStyle->getProtection()->setHidden(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); + } + } + } + + // top-level style settings + if (isset($style->quotePrefix)) { + $docStyle->setQuotePrefix($style->quotePrefix); + } + } + + private static function readBorder($docBorder, $eleBorder) + { + if (isset($eleBorder["style"])) { + $docBorder->setBorderStyle((string) $eleBorder["style"]); + } + if (isset($eleBorder->color)) { + $docBorder->getColor()->setARGB(self::readColor($eleBorder->color)); + } + } + + private function parseRichText($is = null) + { + $value = new PHPExcel_RichText(); + + if (isset($is->t)) { + $value->createText(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $is->t)); + } else { + if (is_object($is->r)) { + foreach ($is->r as $run) { + if (!isset($run->rPr)) { + $objText = $value->createText(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $run->t)); + + } else { + $objText = $value->createTextRun(PHPExcel_Shared_String::ControlCharacterOOXML2PHP((string) $run->t)); + + if (isset($run->rPr->rFont["val"])) { + $objText->getFont()->setName((string) $run->rPr->rFont["val"]); + } + if (isset($run->rPr->sz["val"])) { + $objText->getFont()->setSize((string) $run->rPr->sz["val"]); + } + if (isset($run->rPr->color)) { + $objText->getFont()->setColor(new PHPExcel_Style_Color(self::readColor($run->rPr->color))); + } + if ((isset($run->rPr->b["val"]) && self::boolean((string) $run->rPr->b["val"])) || + (isset($run->rPr->b) && !isset($run->rPr->b["val"]))) { + $objText->getFont()->setBold(true); + } + if ((isset($run->rPr->i["val"]) && self::boolean((string) $run->rPr->i["val"])) || + (isset($run->rPr->i) && !isset($run->rPr->i["val"]))) { + $objText->getFont()->setItalic(true); + } + if (isset($run->rPr->vertAlign) && isset($run->rPr->vertAlign["val"])) { + $vertAlign = strtolower((string)$run->rPr->vertAlign["val"]); + if ($vertAlign == 'superscript') { + $objText->getFont()->setSuperScript(true); + } + if ($vertAlign == 'subscript') { + $objText->getFont()->setSubScript(true); + } + } + if (isset($run->rPr->u) && !isset($run->rPr->u["val"])) { + $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); + } elseif (isset($run->rPr->u) && isset($run->rPr->u["val"])) { + $objText->getFont()->setUnderline((string)$run->rPr->u["val"]); + } + if ((isset($run->rPr->strike["val"]) && self::boolean((string) $run->rPr->strike["val"])) || + (isset($run->rPr->strike) && !isset($run->rPr->strike["val"]))) { + $objText->getFont()->setStrikethrough(true); + } + } + } + } + } + + return $value; + } + + private function readRibbon($excel, $customUITarget, $zip) + { + $baseDir = dirname($customUITarget); + $nameCustomUI = basename($customUITarget); + // get the xml file (ribbon) + $localRibbon = $this->getFromZipArchive($zip, $customUITarget); + $customUIImagesNames = array(); + $customUIImagesBinaries = array(); + // something like customUI/_rels/customUI.xml.rels + $pathRels = $baseDir . '/_rels/' . $nameCustomUI . '.rels'; + $dataRels = $this->getFromZipArchive($zip, $pathRels); + if ($dataRels) { + // exists and not empty if the ribbon have some pictures (other than internal MSO) + $UIRels = simplexml_load_string($this->securityScan($dataRels), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + if ($UIRels) { + // we need to save id and target to avoid parsing customUI.xml and "guess" if it's a pseudo callback who load the image + foreach ($UIRels->Relationship as $ele) { + if ($ele["Type"] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image') { + // an image ? + $customUIImagesNames[(string) $ele['Id']] = (string)$ele['Target']; + $customUIImagesBinaries[(string)$ele['Target']] = $this->getFromZipArchive($zip, $baseDir . '/' . (string) $ele['Target']); + } + } + } + } + if ($localRibbon) { + $excel->setRibbonXMLData($customUITarget, $localRibbon); + if (count($customUIImagesNames) > 0 && count($customUIImagesBinaries) > 0) { + $excel->setRibbonBinObjects($customUIImagesNames, $customUIImagesBinaries); + } else { + $excel->setRibbonBinObjects(null); + } + } else { + $excel->setRibbonXMLData(null); + $excel->setRibbonBinObjects(null); + } + } + + private static function getArrayItem($array, $key = 0) + { + return (isset($array[$key]) ? $array[$key] : null); + } + + private static function dirAdd($base, $add) + { + return preg_replace('~[^/]+/\.\./~', '', dirname($base) . "/$add"); + } + + private static function toCSSArray($style) + { + $style = str_replace(array("\r","\n"), "", $style); + + $temp = explode(';', $style); + $style = array(); + foreach ($temp as $item) { + $item = explode(':', $item); + + if (strpos($item[1], 'px') !== false) { + $item[1] = str_replace('px', '', $item[1]); + } + if (strpos($item[1], 'pt') !== false) { + $item[1] = str_replace('pt', '', $item[1]); + $item[1] = PHPExcel_Shared_Font::fontSizeToPixels($item[1]); + } + if (strpos($item[1], 'in') !== false) { + $item[1] = str_replace('in', '', $item[1]); + $item[1] = PHPExcel_Shared_Font::inchSizeToPixels($item[1]); + } + if (strpos($item[1], 'cm') !== false) { + $item[1] = str_replace('cm', '', $item[1]); + $item[1] = PHPExcel_Shared_Font::centimeterSizeToPixels($item[1]); + } + + $style[$item[0]] = $item[1]; + } + + return $style; + } + + private static function boolean($value = null) + { + if (is_object($value)) { + $value = (string) $value; + } + if (is_numeric($value)) { + return (bool) $value; + } + return ($value === 'true' || $value === 'TRUE'); + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel2007/Chart.php b/assets/excel/PHPExcel/Reader/Excel2007/Chart.php new file mode 100644 index 0000000..590bf2d --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel2007/Chart.php @@ -0,0 +1,520 @@ +attributes(); + if (isset($attributes[$name])) { + if ($format == 'string') { + return (string) $attributes[$name]; + } elseif ($format == 'integer') { + return (integer) $attributes[$name]; + } elseif ($format == 'boolean') { + return (boolean) ($attributes[$name] === '0' || $attributes[$name] !== 'true') ? false : true; + } else { + return (float) $attributes[$name]; + } + } + return null; + } + + + private static function readColor($color, $background = false) + { + if (isset($color["rgb"])) { + return (string)$color["rgb"]; + } elseif (isset($color["indexed"])) { + return PHPExcel_Style_Color::indexedColor($color["indexed"]-7, $background)->getARGB(); + } + } + + public static function readChart($chartElements, $chartName) + { + $namespacesChartMeta = $chartElements->getNamespaces(true); + $chartElementsC = $chartElements->children($namespacesChartMeta['c']); + + $XaxisLabel = $YaxisLabel = $legend = $title = null; + $dispBlanksAs = $plotVisOnly = null; + + foreach ($chartElementsC as $chartElementKey => $chartElement) { + switch ($chartElementKey) { + case "chart": + foreach ($chartElement as $chartDetailsKey => $chartDetails) { + $chartDetailsC = $chartDetails->children($namespacesChartMeta['c']); + switch ($chartDetailsKey) { + case "plotArea": + $plotAreaLayout = $XaxisLable = $YaxisLable = null; + $plotSeries = $plotAttributes = array(); + foreach ($chartDetails as $chartDetailKey => $chartDetail) { + switch ($chartDetailKey) { + case "layout": + $plotAreaLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta, 'plotArea'); + break; + case "catAx": + if (isset($chartDetail->title)) { + $XaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); + } + break; + case "dateAx": + if (isset($chartDetail->title)) { + $XaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); + } + break; + case "valAx": + if (isset($chartDetail->title)) { + $YaxisLabel = self::chartTitle($chartDetail->title->children($namespacesChartMeta['c']), $namespacesChartMeta, 'cat'); + } + break; + case "barChart": + case "bar3DChart": + $barDirection = self::getAttribute($chartDetail->barDir, 'val', 'string'); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotDirection($barDirection); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "lineChart": + case "line3DChart": + $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "areaChart": + case "area3DChart": + $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "doughnutChart": + case "pieChart": + case "pie3DChart": + $explosion = isset($chartDetail->ser->explosion); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotStyle($explosion); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "scatterChart": + $scatterStyle = self::getAttribute($chartDetail->scatterStyle, 'val', 'string'); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotStyle($scatterStyle); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "bubbleChart": + $bubbleScale = self::getAttribute($chartDetail->bubbleScale, 'val', 'integer'); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotStyle($bubbleScale); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "radarChart": + $radarStyle = self::getAttribute($chartDetail->radarStyle, 'val', 'string'); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotStyle($radarStyle); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "surfaceChart": + case "surface3DChart": + $wireFrame = self::getAttribute($chartDetail->wireframe, 'val', 'boolean'); + $plotSer = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotSer->setPlotStyle($wireFrame); + $plotSeries[] = $plotSer; + $plotAttributes = self::readChartAttributes($chartDetail); + break; + case "stockChart": + $plotSeries[] = self::chartDataSeries($chartDetail, $namespacesChartMeta, $chartDetailKey); + $plotAttributes = self::readChartAttributes($plotAreaLayout); + break; + } + } + if ($plotAreaLayout == null) { + $plotAreaLayout = new PHPExcel_Chart_Layout(); + } + $plotArea = new PHPExcel_Chart_PlotArea($plotAreaLayout, $plotSeries); + self::setChartAttributes($plotAreaLayout, $plotAttributes); + break; + case "plotVisOnly": + $plotVisOnly = self::getAttribute($chartDetails, 'val', 'string'); + break; + case "dispBlanksAs": + $dispBlanksAs = self::getAttribute($chartDetails, 'val', 'string'); + break; + case "title": + $title = self::chartTitle($chartDetails, $namespacesChartMeta, 'title'); + break; + case "legend": + $legendPos = 'r'; + $legendLayout = null; + $legendOverlay = false; + foreach ($chartDetails as $chartDetailKey => $chartDetail) { + switch ($chartDetailKey) { + case "legendPos": + $legendPos = self::getAttribute($chartDetail, 'val', 'string'); + break; + case "overlay": + $legendOverlay = self::getAttribute($chartDetail, 'val', 'boolean'); + break; + case "layout": + $legendLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta, 'legend'); + break; + } + } + $legend = new PHPExcel_Chart_Legend($legendPos, $legendLayout, $legendOverlay); + break; + } + } + } + } + $chart = new PHPExcel_Chart($chartName, $title, $legend, $plotArea, $plotVisOnly, $dispBlanksAs, $XaxisLabel, $YaxisLabel); + + return $chart; + } + + private static function chartTitle($titleDetails, $namespacesChartMeta, $type) + { + $caption = array(); + $titleLayout = null; + foreach ($titleDetails as $titleDetailKey => $chartDetail) { + switch ($titleDetailKey) { + case "tx": + $titleDetails = $chartDetail->rich->children($namespacesChartMeta['a']); + foreach ($titleDetails as $titleKey => $titleDetail) { + switch ($titleKey) { + case "p": + $titleDetailPart = $titleDetail->children($namespacesChartMeta['a']); + $caption[] = self::parseRichText($titleDetailPart); + } + } + break; + case "layout": + $titleLayout = self::chartLayoutDetails($chartDetail, $namespacesChartMeta); + break; + } + } + + return new PHPExcel_Chart_Title($caption, $titleLayout); + } + + private static function chartLayoutDetails($chartDetail, $namespacesChartMeta) + { + if (!isset($chartDetail->manualLayout)) { + return null; + } + $details = $chartDetail->manualLayout->children($namespacesChartMeta['c']); + if (is_null($details)) { + return null; + } + $layout = array(); + foreach ($details as $detailKey => $detail) { +// echo $detailKey, ' => ',self::getAttribute($detail, 'val', 'string'),PHP_EOL; + $layout[$detailKey] = self::getAttribute($detail, 'val', 'string'); + } + return new PHPExcel_Chart_Layout($layout); + } + + private static function chartDataSeries($chartDetail, $namespacesChartMeta, $plotType) + { + $multiSeriesType = null; + $smoothLine = false; + $seriesLabel = $seriesCategory = $seriesValues = $plotOrder = array(); + + $seriesDetailSet = $chartDetail->children($namespacesChartMeta['c']); + foreach ($seriesDetailSet as $seriesDetailKey => $seriesDetails) { + switch ($seriesDetailKey) { + case "grouping": + $multiSeriesType = self::getAttribute($chartDetail->grouping, 'val', 'string'); + break; + case "ser": + $marker = null; + foreach ($seriesDetails as $seriesKey => $seriesDetail) { + switch ($seriesKey) { + case "idx": + $seriesIndex = self::getAttribute($seriesDetail, 'val', 'integer'); + break; + case "order": + $seriesOrder = self::getAttribute($seriesDetail, 'val', 'integer'); + $plotOrder[$seriesIndex] = $seriesOrder; + break; + case "tx": + $seriesLabel[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta); + break; + case "marker": + $marker = self::getAttribute($seriesDetail->symbol, 'val', 'string'); + break; + case "smooth": + $smoothLine = self::getAttribute($seriesDetail, 'val', 'boolean'); + break; + case "cat": + $seriesCategory[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta); + break; + case "val": + $seriesValues[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); + break; + case "xVal": + $seriesCategory[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); + break; + case "yVal": + $seriesValues[$seriesIndex] = self::chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker); + break; + } + } + } + } + return new PHPExcel_Chart_DataSeries($plotType, $multiSeriesType, $plotOrder, $seriesLabel, $seriesCategory, $seriesValues, $smoothLine); + } + + + private static function chartDataSeriesValueSet($seriesDetail, $namespacesChartMeta, $marker = null, $smoothLine = false) + { + if (isset($seriesDetail->strRef)) { + $seriesSource = (string) $seriesDetail->strRef->f; + $seriesData = self::chartDataSeriesValues($seriesDetail->strRef->strCache->children($namespacesChartMeta['c']), 's'); + + return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); + } elseif (isset($seriesDetail->numRef)) { + $seriesSource = (string) $seriesDetail->numRef->f; + $seriesData = self::chartDataSeriesValues($seriesDetail->numRef->numCache->children($namespacesChartMeta['c'])); + + return new PHPExcel_Chart_DataSeriesValues('Number', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); + } elseif (isset($seriesDetail->multiLvlStrRef)) { + $seriesSource = (string) $seriesDetail->multiLvlStrRef->f; + $seriesData = self::chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlStrRef->multiLvlStrCache->children($namespacesChartMeta['c']), 's'); + $seriesData['pointCount'] = count($seriesData['dataValues']); + + return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); + } elseif (isset($seriesDetail->multiLvlNumRef)) { + $seriesSource = (string) $seriesDetail->multiLvlNumRef->f; + $seriesData = self::chartDataSeriesValuesMultiLevel($seriesDetail->multiLvlNumRef->multiLvlNumCache->children($namespacesChartMeta['c']), 's'); + $seriesData['pointCount'] = count($seriesData['dataValues']); + + return new PHPExcel_Chart_DataSeriesValues('String', $seriesSource, $seriesData['formatCode'], $seriesData['pointCount'], $seriesData['dataValues'], $marker, $smoothLine); + } + return null; + } + + + private static function chartDataSeriesValues($seriesValueSet, $dataType = 'n') + { + $seriesVal = array(); + $formatCode = ''; + $pointCount = 0; + + foreach ($seriesValueSet as $seriesValueIdx => $seriesValue) { + switch ($seriesValueIdx) { + case 'ptCount': + $pointCount = self::getAttribute($seriesValue, 'val', 'integer'); + break; + case 'formatCode': + $formatCode = (string) $seriesValue; + break; + case 'pt': + $pointVal = self::getAttribute($seriesValue, 'idx', 'integer'); + if ($dataType == 's') { + $seriesVal[$pointVal] = (string) $seriesValue->v; + } else { + $seriesVal[$pointVal] = (float) $seriesValue->v; + } + break; + } + } + + return array( + 'formatCode' => $formatCode, + 'pointCount' => $pointCount, + 'dataValues' => $seriesVal + ); + } + + private static function chartDataSeriesValuesMultiLevel($seriesValueSet, $dataType = 'n') + { + $seriesVal = array(); + $formatCode = ''; + $pointCount = 0; + + foreach ($seriesValueSet->lvl as $seriesLevelIdx => $seriesLevel) { + foreach ($seriesLevel as $seriesValueIdx => $seriesValue) { + switch ($seriesValueIdx) { + case 'ptCount': + $pointCount = self::getAttribute($seriesValue, 'val', 'integer'); + break; + case 'formatCode': + $formatCode = (string) $seriesValue; + break; + case 'pt': + $pointVal = self::getAttribute($seriesValue, 'idx', 'integer'); + if ($dataType == 's') { + $seriesVal[$pointVal][] = (string) $seriesValue->v; + } else { + $seriesVal[$pointVal][] = (float) $seriesValue->v; + } + break; + } + } + } + + return array( + 'formatCode' => $formatCode, + 'pointCount' => $pointCount, + 'dataValues' => $seriesVal + ); + } + + private static function parseRichText($titleDetailPart = null) + { + $value = new PHPExcel_RichText(); + + foreach ($titleDetailPart as $titleDetailElementKey => $titleDetailElement) { + if (isset($titleDetailElement->t)) { + $objText = $value->createTextRun((string) $titleDetailElement->t); + } + if (isset($titleDetailElement->rPr)) { + if (isset($titleDetailElement->rPr->rFont["val"])) { + $objText->getFont()->setName((string) $titleDetailElement->rPr->rFont["val"]); + } + + $fontSize = (self::getAttribute($titleDetailElement->rPr, 'sz', 'integer')); + if (!is_null($fontSize)) { + $objText->getFont()->setSize(floor($fontSize / 100)); + } + + $fontColor = (self::getAttribute($titleDetailElement->rPr, 'color', 'string')); + if (!is_null($fontColor)) { + $objText->getFont()->setColor(new PHPExcel_Style_Color(self::readColor($fontColor))); + } + + $bold = self::getAttribute($titleDetailElement->rPr, 'b', 'boolean'); + if (!is_null($bold)) { + $objText->getFont()->setBold($bold); + } + + $italic = self::getAttribute($titleDetailElement->rPr, 'i', 'boolean'); + if (!is_null($italic)) { + $objText->getFont()->setItalic($italic); + } + + $baseline = self::getAttribute($titleDetailElement->rPr, 'baseline', 'integer'); + if (!is_null($baseline)) { + if ($baseline > 0) { + $objText->getFont()->setSuperScript(true); + } elseif ($baseline < 0) { + $objText->getFont()->setSubScript(true); + } + } + + $underscore = (self::getAttribute($titleDetailElement->rPr, 'u', 'string')); + if (!is_null($underscore)) { + if ($underscore == 'sng') { + $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); + } elseif ($underscore == 'dbl') { + $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE); + } else { + $objText->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_NONE); + } + } + + $strikethrough = (self::getAttribute($titleDetailElement->rPr, 's', 'string')); + if (!is_null($strikethrough)) { + if ($strikethrough == 'noStrike') { + $objText->getFont()->setStrikethrough(false); + } else { + $objText->getFont()->setStrikethrough(true); + } + } + } + } + + return $value; + } + + private static function readChartAttributes($chartDetail) + { + $plotAttributes = array(); + if (isset($chartDetail->dLbls)) { + if (isset($chartDetail->dLbls->howLegendKey)) { + $plotAttributes['showLegendKey'] = self::getAttribute($chartDetail->dLbls->showLegendKey, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showVal)) { + $plotAttributes['showVal'] = self::getAttribute($chartDetail->dLbls->showVal, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showCatName)) { + $plotAttributes['showCatName'] = self::getAttribute($chartDetail->dLbls->showCatName, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showSerName)) { + $plotAttributes['showSerName'] = self::getAttribute($chartDetail->dLbls->showSerName, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showPercent)) { + $plotAttributes['showPercent'] = self::getAttribute($chartDetail->dLbls->showPercent, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showBubbleSize)) { + $plotAttributes['showBubbleSize'] = self::getAttribute($chartDetail->dLbls->showBubbleSize, 'val', 'string'); + } + if (isset($chartDetail->dLbls->showLeaderLines)) { + $plotAttributes['showLeaderLines'] = self::getAttribute($chartDetail->dLbls->showLeaderLines, 'val', 'string'); + } + } + + return $plotAttributes; + } + + private static function setChartAttributes($plotArea, $plotAttributes) + { + foreach ($plotAttributes as $plotAttributeKey => $plotAttributeValue) { + switch ($plotAttributeKey) { + case 'showLegendKey': + $plotArea->setShowLegendKey($plotAttributeValue); + break; + case 'showVal': + $plotArea->setShowVal($plotAttributeValue); + break; + case 'showCatName': + $plotArea->setShowCatName($plotAttributeValue); + break; + case 'showSerName': + $plotArea->setShowSerName($plotAttributeValue); + break; + case 'showPercent': + $plotArea->setShowPercent($plotAttributeValue); + break; + case 'showBubbleSize': + $plotArea->setShowBubbleSize($plotAttributeValue); + break; + case 'showLeaderLines': + $plotArea->setShowLeaderLines($plotAttributeValue); + break; + } + } + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel2007/Theme.php b/assets/excel/PHPExcel/Reader/Excel2007/Theme.php new file mode 100644 index 0000000..134f4b6 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel2007/Theme.php @@ -0,0 +1,127 @@ +themeName = $themeName; + $this->colourSchemeName = $colourSchemeName; + $this->colourMap = $colourMap; + } + + /** + * Get Theme Name + * + * @return string + */ + public function getThemeName() + { + return $this->themeName; + } + + /** + * Get colour Scheme Name + * + * @return string + */ + public function getColourSchemeName() + { + return $this->colourSchemeName; + } + + /** + * Get colour Map Value by Position + * + * @return string + */ + public function getColourByIndex($index = 0) + { + if (isset($this->colourMap[$index])) { + return $this->colourMap[$index]; + } + return null; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if ((is_object($value)) && ($key != '_parent')) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel5.php b/assets/excel/PHPExcel/Reader/Excel5.php new file mode 100644 index 0000000..62e971d --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5.php @@ -0,0 +1,7594 @@ +data + * + * @var int + */ + private $dataSize; + + /** + * Current position in stream + * + * @var integer + */ + private $pos; + + /** + * Workbook to be returned by the reader. + * + * @var PHPExcel + */ + private $phpExcel; + + /** + * Worksheet that is currently being built by the reader. + * + * @var PHPExcel_Worksheet + */ + private $phpSheet; + + /** + * BIFF version + * + * @var int + */ + private $version; + + /** + * Codepage set in the Excel file being read. Only important for BIFF5 (Excel 5.0 - Excel 95) + * For BIFF8 (Excel 97 - Excel 2003) this will always have the value 'UTF-16LE' + * + * @var string + */ + private $codepage; + + /** + * Shared formats + * + * @var array + */ + private $formats; + + /** + * Shared fonts + * + * @var array + */ + private $objFonts; + + /** + * Color palette + * + * @var array + */ + private $palette; + + /** + * Worksheets + * + * @var array + */ + private $sheets; + + /** + * External books + * + * @var array + */ + private $externalBooks; + + /** + * REF structures. Only applies to BIFF8. + * + * @var array + */ + private $ref; + + /** + * External names + * + * @var array + */ + private $externalNames; + + /** + * Defined names + * + * @var array + */ + private $definedname; + + /** + * Shared strings. Only applies to BIFF8. + * + * @var array + */ + private $sst; + + /** + * Panes are frozen? (in sheet currently being read). See WINDOW2 record. + * + * @var boolean + */ + private $frozen; + + /** + * Fit printout to number of pages? (in sheet currently being read). See SHEETPR record. + * + * @var boolean + */ + private $isFitToPages; + + /** + * Objects. One OBJ record contributes with one entry. + * + * @var array + */ + private $objs; + + /** + * Text Objects. One TXO record corresponds with one entry. + * + * @var array + */ + private $textObjects; + + /** + * Cell Annotations (BIFF8) + * + * @var array + */ + private $cellNotes; + + /** + * The combined MSODRAWINGGROUP data + * + * @var string + */ + private $drawingGroupData; + + /** + * The combined MSODRAWING data (per sheet) + * + * @var string + */ + private $drawingData; + + /** + * Keep track of XF index + * + * @var int + */ + private $xfIndex; + + /** + * Mapping of XF index (that is a cell XF) to final index in cellXf collection + * + * @var array + */ + private $mapCellXfIndex; + + /** + * Mapping of XF index (that is a style XF) to final index in cellStyleXf collection + * + * @var array + */ + private $mapCellStyleXfIndex; + + /** + * The shared formulas in a sheet. One SHAREDFMLA record contributes with one value. + * + * @var array + */ + private $sharedFormulas; + + /** + * The shared formula parts in a sheet. One FORMULA record contributes with one value if it + * refers to a shared formula. + * + * @var array + */ + private $sharedFormulaParts; + + /** + * The type of encryption in use + * + * @var int + */ + private $encryption = 0; + + /** + * The position in the stream after which contents are encrypted + * + * @var int + */ + private $encryptionStartPos = false; + + /** + * The current RC4 decryption object + * + * @var PHPExcel_Reader_Excel5_RC4 + */ + private $rc4Key = null; + + /** + * The position in the stream that the RC4 decryption object was left at + * + * @var int + */ + private $rc4Pos = 0; + + /** + * The current MD5 context state + * + * @var string + */ + private $md5Ctxt = null; + + /** + * Create a new PHPExcel_Reader_Excel5 instance + */ + public function __construct() + { + $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + try { + // Use ParseXL for the hard work. + $ole = new PHPExcel_Shared_OLERead(); + + // get excel data + $res = $ole->read($pFilename); + return true; + } catch (PHPExcel_Exception $e) { + return false; + } + } + + /** + * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetNames($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetNames = array(); + + // Read the OLE file + $this->loadOLE($pFilename); + + // total byte size of Excel data (workbook global substream + sheet substreams) + $this->dataSize = strlen($this->data); + + $this->pos = 0; + $this->sheets = array(); + + // Parse Workbook Global Substream + while ($this->pos < $this->dataSize) { + $code = self::getInt2d($this->data, $this->pos); + + switch ($code) { + case self::XLS_TYPE_BOF: + $this->readBof(); + break; + case self::XLS_TYPE_SHEET: + $this->readSheet(); + break; + case self::XLS_TYPE_EOF: + $this->readDefault(); + break 2; + default: + $this->readDefault(); + break; + } + } + + foreach ($this->sheets as $sheet) { + if ($sheet['sheetType'] != 0x00) { + // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module + continue; + } + + $worksheetNames[] = $sheet['name']; + } + + return $worksheetNames; + } + + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetInfo = array(); + + // Read the OLE file + $this->loadOLE($pFilename); + + // total byte size of Excel data (workbook global substream + sheet substreams) + $this->dataSize = strlen($this->data); + + // initialize + $this->pos = 0; + $this->sheets = array(); + + // Parse Workbook Global Substream + while ($this->pos < $this->dataSize) { + $code = self::getInt2d($this->data, $this->pos); + + switch ($code) { + case self::XLS_TYPE_BOF: + $this->readBof(); + break; + case self::XLS_TYPE_SHEET: + $this->readSheet(); + break; + case self::XLS_TYPE_EOF: + $this->readDefault(); + break 2; + default: + $this->readDefault(); + break; + } + } + + // Parse the individual sheets + foreach ($this->sheets as $sheet) { + if ($sheet['sheetType'] != 0x00) { + // 0x00: Worksheet + // 0x02: Chart + // 0x06: Visual Basic module + continue; + } + + $tmpInfo = array(); + $tmpInfo['worksheetName'] = $sheet['name']; + $tmpInfo['lastColumnLetter'] = 'A'; + $tmpInfo['lastColumnIndex'] = 0; + $tmpInfo['totalRows'] = 0; + $tmpInfo['totalColumns'] = 0; + + $this->pos = $sheet['offset']; + + while ($this->pos <= $this->dataSize - 4) { + $code = self::getInt2d($this->data, $this->pos); + + switch ($code) { + case self::XLS_TYPE_RK: + case self::XLS_TYPE_LABELSST: + case self::XLS_TYPE_NUMBER: + case self::XLS_TYPE_FORMULA: + case self::XLS_TYPE_BOOLERR: + case self::XLS_TYPE_LABEL: + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + $rowIndex = self::getInt2d($recordData, 0) + 1; + $columnIndex = self::getInt2d($recordData, 2); + + $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex); + $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex); + break; + case self::XLS_TYPE_BOF: + $this->readBof(); + break; + case self::XLS_TYPE_EOF: + $this->readDefault(); + break 2; + default: + $this->readDefault(); + break; + } + } + + $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); + $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; + + $worksheetInfo[] = $tmpInfo; + } + + return $worksheetInfo; + } + + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Read the OLE file + $this->loadOLE($pFilename); + + // Initialisations + $this->phpExcel = new PHPExcel; + $this->phpExcel->removeSheetByIndex(0); // remove 1st sheet + if (!$this->readDataOnly) { + $this->phpExcel->removeCellStyleXfByIndex(0); // remove the default style + $this->phpExcel->removeCellXfByIndex(0); // remove the default style + } + + // Read the summary information stream (containing meta data) + $this->readSummaryInformation(); + + // Read the Additional document summary information stream (containing application-specific meta data) + $this->readDocumentSummaryInformation(); + + // total byte size of Excel data (workbook global substream + sheet substreams) + $this->dataSize = strlen($this->data); + + // initialize + $this->pos = 0; + $this->codepage = 'CP1252'; + $this->formats = array(); + $this->objFonts = array(); + $this->palette = array(); + $this->sheets = array(); + $this->externalBooks = array(); + $this->ref = array(); + $this->definedname = array(); + $this->sst = array(); + $this->drawingGroupData = ''; + $this->xfIndex = ''; + $this->mapCellXfIndex = array(); + $this->mapCellStyleXfIndex = array(); + + // Parse Workbook Global Substream + while ($this->pos < $this->dataSize) { + $code = self::getInt2d($this->data, $this->pos); + + switch ($code) { + case self::XLS_TYPE_BOF: + $this->readBof(); + break; + case self::XLS_TYPE_FILEPASS: + $this->readFilepass(); + break; + case self::XLS_TYPE_CODEPAGE: + $this->readCodepage(); + break; + case self::XLS_TYPE_DATEMODE: + $this->readDateMode(); + break; + case self::XLS_TYPE_FONT: + $this->readFont(); + break; + case self::XLS_TYPE_FORMAT: + $this->readFormat(); + break; + case self::XLS_TYPE_XF: + $this->readXf(); + break; + case self::XLS_TYPE_XFEXT: + $this->readXfExt(); + break; + case self::XLS_TYPE_STYLE: + $this->readStyle(); + break; + case self::XLS_TYPE_PALETTE: + $this->readPalette(); + break; + case self::XLS_TYPE_SHEET: + $this->readSheet(); + break; + case self::XLS_TYPE_EXTERNALBOOK: + $this->readExternalBook(); + break; + case self::XLS_TYPE_EXTERNNAME: + $this->readExternName(); + break; + case self::XLS_TYPE_EXTERNSHEET: + $this->readExternSheet(); + break; + case self::XLS_TYPE_DEFINEDNAME: + $this->readDefinedName(); + break; + case self::XLS_TYPE_MSODRAWINGGROUP: + $this->readMsoDrawingGroup(); + break; + case self::XLS_TYPE_SST: + $this->readSst(); + break; + case self::XLS_TYPE_EOF: + $this->readDefault(); + break 2; + default: + $this->readDefault(); + break; + } + } + + // Resolve indexed colors for font, fill, and border colors + // Cannot be resolved already in XF record, because PALETTE record comes afterwards + if (!$this->readDataOnly) { + foreach ($this->objFonts as $objFont) { + if (isset($objFont->colorIndex)) { + $color = PHPExcel_Reader_Excel5_Color::map($objFont->colorIndex, $this->palette, $this->version); + $objFont->getColor()->setRGB($color['rgb']); + } + } + + foreach ($this->phpExcel->getCellXfCollection() as $objStyle) { + // fill start and end color + $fill = $objStyle->getFill(); + + if (isset($fill->startcolorIndex)) { + $startColor = PHPExcel_Reader_Excel5_Color::map($fill->startcolorIndex, $this->palette, $this->version); + $fill->getStartColor()->setRGB($startColor['rgb']); + } + if (isset($fill->endcolorIndex)) { + $endColor = PHPExcel_Reader_Excel5_Color::map($fill->endcolorIndex, $this->palette, $this->version); + $fill->getEndColor()->setRGB($endColor['rgb']); + } + + // border colors + $top = $objStyle->getBorders()->getTop(); + $right = $objStyle->getBorders()->getRight(); + $bottom = $objStyle->getBorders()->getBottom(); + $left = $objStyle->getBorders()->getLeft(); + $diagonal = $objStyle->getBorders()->getDiagonal(); + + if (isset($top->colorIndex)) { + $borderTopColor = PHPExcel_Reader_Excel5_Color::map($top->colorIndex, $this->palette, $this->version); + $top->getColor()->setRGB($borderTopColor['rgb']); + } + if (isset($right->colorIndex)) { + $borderRightColor = PHPExcel_Reader_Excel5_Color::map($right->colorIndex, $this->palette, $this->version); + $right->getColor()->setRGB($borderRightColor['rgb']); + } + if (isset($bottom->colorIndex)) { + $borderBottomColor = PHPExcel_Reader_Excel5_Color::map($bottom->colorIndex, $this->palette, $this->version); + $bottom->getColor()->setRGB($borderBottomColor['rgb']); + } + if (isset($left->colorIndex)) { + $borderLeftColor = PHPExcel_Reader_Excel5_Color::map($left->colorIndex, $this->palette, $this->version); + $left->getColor()->setRGB($borderLeftColor['rgb']); + } + if (isset($diagonal->colorIndex)) { + $borderDiagonalColor = PHPExcel_Reader_Excel5_Color::map($diagonal->colorIndex, $this->palette, $this->version); + $diagonal->getColor()->setRGB($borderDiagonalColor['rgb']); + } + } + } + + // treat MSODRAWINGGROUP records, workbook-level Escher + if (!$this->readDataOnly && $this->drawingGroupData) { + $escherWorkbook = new PHPExcel_Shared_Escher(); + $reader = new PHPExcel_Reader_Excel5_Escher($escherWorkbook); + $escherWorkbook = $reader->load($this->drawingGroupData); + + // debug Escher stream + //$debug = new Debug_Escher(new PHPExcel_Shared_Escher()); + //$debug->load($this->drawingGroupData); + } + + // Parse the individual sheets + foreach ($this->sheets as $sheet) { + if ($sheet['sheetType'] != 0x00) { + // 0x00: Worksheet, 0x02: Chart, 0x06: Visual Basic module + continue; + } + + // check if sheet should be skipped + if (isset($this->loadSheetsOnly) && !in_array($sheet['name'], $this->loadSheetsOnly)) { + continue; + } + + // add sheet to PHPExcel object + $this->phpSheet = $this->phpExcel->createSheet(); + // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula + // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet + // name in line with the formula, not the reverse + $this->phpSheet->setTitle($sheet['name'], false); + $this->phpSheet->setSheetState($sheet['sheetState']); + + $this->pos = $sheet['offset']; + + // Initialize isFitToPages. May change after reading SHEETPR record. + $this->isFitToPages = false; + + // Initialize drawingData + $this->drawingData = ''; + + // Initialize objs + $this->objs = array(); + + // Initialize shared formula parts + $this->sharedFormulaParts = array(); + + // Initialize shared formulas + $this->sharedFormulas = array(); + + // Initialize text objs + $this->textObjects = array(); + + // Initialize cell annotations + $this->cellNotes = array(); + $this->textObjRef = -1; + + while ($this->pos <= $this->dataSize - 4) { + $code = self::getInt2d($this->data, $this->pos); + + switch ($code) { + case self::XLS_TYPE_BOF: + $this->readBof(); + break; + case self::XLS_TYPE_PRINTGRIDLINES: + $this->readPrintGridlines(); + break; + case self::XLS_TYPE_DEFAULTROWHEIGHT: + $this->readDefaultRowHeight(); + break; + case self::XLS_TYPE_SHEETPR: + $this->readSheetPr(); + break; + case self::XLS_TYPE_HORIZONTALPAGEBREAKS: + $this->readHorizontalPageBreaks(); + break; + case self::XLS_TYPE_VERTICALPAGEBREAKS: + $this->readVerticalPageBreaks(); + break; + case self::XLS_TYPE_HEADER: + $this->readHeader(); + break; + case self::XLS_TYPE_FOOTER: + $this->readFooter(); + break; + case self::XLS_TYPE_HCENTER: + $this->readHcenter(); + break; + case self::XLS_TYPE_VCENTER: + $this->readVcenter(); + break; + case self::XLS_TYPE_LEFTMARGIN: + $this->readLeftMargin(); + break; + case self::XLS_TYPE_RIGHTMARGIN: + $this->readRightMargin(); + break; + case self::XLS_TYPE_TOPMARGIN: + $this->readTopMargin(); + break; + case self::XLS_TYPE_BOTTOMMARGIN: + $this->readBottomMargin(); + break; + case self::XLS_TYPE_PAGESETUP: + $this->readPageSetup(); + break; + case self::XLS_TYPE_PROTECT: + $this->readProtect(); + break; + case self::XLS_TYPE_SCENPROTECT: + $this->readScenProtect(); + break; + case self::XLS_TYPE_OBJECTPROTECT: + $this->readObjectProtect(); + break; + case self::XLS_TYPE_PASSWORD: + $this->readPassword(); + break; + case self::XLS_TYPE_DEFCOLWIDTH: + $this->readDefColWidth(); + break; + case self::XLS_TYPE_COLINFO: + $this->readColInfo(); + break; + case self::XLS_TYPE_DIMENSION: + $this->readDefault(); + break; + case self::XLS_TYPE_ROW: + $this->readRow(); + break; + case self::XLS_TYPE_DBCELL: + $this->readDefault(); + break; + case self::XLS_TYPE_RK: + $this->readRk(); + break; + case self::XLS_TYPE_LABELSST: + $this->readLabelSst(); + break; + case self::XLS_TYPE_MULRK: + $this->readMulRk(); + break; + case self::XLS_TYPE_NUMBER: + $this->readNumber(); + break; + case self::XLS_TYPE_FORMULA: + $this->readFormula(); + break; + case self::XLS_TYPE_SHAREDFMLA: + $this->readSharedFmla(); + break; + case self::XLS_TYPE_BOOLERR: + $this->readBoolErr(); + break; + case self::XLS_TYPE_MULBLANK: + $this->readMulBlank(); + break; + case self::XLS_TYPE_LABEL: + $this->readLabel(); + break; + case self::XLS_TYPE_BLANK: + $this->readBlank(); + break; + case self::XLS_TYPE_MSODRAWING: + $this->readMsoDrawing(); + break; + case self::XLS_TYPE_OBJ: + $this->readObj(); + break; + case self::XLS_TYPE_WINDOW2: + $this->readWindow2(); + break; + case self::XLS_TYPE_PAGELAYOUTVIEW: + $this->readPageLayoutView(); + break; + case self::XLS_TYPE_SCL: + $this->readScl(); + break; + case self::XLS_TYPE_PANE: + $this->readPane(); + break; + case self::XLS_TYPE_SELECTION: + $this->readSelection(); + break; + case self::XLS_TYPE_MERGEDCELLS: + $this->readMergedCells(); + break; + case self::XLS_TYPE_HYPERLINK: + $this->readHyperLink(); + break; + case self::XLS_TYPE_DATAVALIDATIONS: + $this->readDataValidations(); + break; + case self::XLS_TYPE_DATAVALIDATION: + $this->readDataValidation(); + break; + case self::XLS_TYPE_SHEETLAYOUT: + $this->readSheetLayout(); + break; + case self::XLS_TYPE_SHEETPROTECTION: + $this->readSheetProtection(); + break; + case self::XLS_TYPE_RANGEPROTECTION: + $this->readRangeProtection(); + break; + case self::XLS_TYPE_NOTE: + $this->readNote(); + break; + //case self::XLS_TYPE_IMDATA: $this->readImData(); break; + case self::XLS_TYPE_TXO: + $this->readTextObject(); + break; + case self::XLS_TYPE_CONTINUE: + $this->readContinue(); + break; + case self::XLS_TYPE_EOF: + $this->readDefault(); + break 2; + default: + $this->readDefault(); + break; + } + + } + + // treat MSODRAWING records, sheet-level Escher + if (!$this->readDataOnly && $this->drawingData) { + $escherWorksheet = new PHPExcel_Shared_Escher(); + $reader = new PHPExcel_Reader_Excel5_Escher($escherWorksheet); + $escherWorksheet = $reader->load($this->drawingData); + + // debug Escher stream + //$debug = new Debug_Escher(new PHPExcel_Shared_Escher()); + //$debug->load($this->drawingData); + + // get all spContainers in one long array, so they can be mapped to OBJ records + $allSpContainers = $escherWorksheet->getDgContainer()->getSpgrContainer()->getAllSpContainers(); + } + + // treat OBJ records + foreach ($this->objs as $n => $obj) { +// echo '
      Object reference is ', $n,'
      '; +// var_dump($obj); +// echo '
      '; + + // the first shape container never has a corresponding OBJ record, hence $n + 1 + if (isset($allSpContainers[$n + 1]) && is_object($allSpContainers[$n + 1])) { + $spContainer = $allSpContainers[$n + 1]; + + // we skip all spContainers that are a part of a group shape since we cannot yet handle those + if ($spContainer->getNestingLevel() > 1) { + continue; + } + + // calculate the width and height of the shape + list($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($spContainer->getStartCoordinates()); + list($endColumn, $endRow) = PHPExcel_Cell::coordinateFromString($spContainer->getEndCoordinates()); + + $startOffsetX = $spContainer->getStartOffsetX(); + $startOffsetY = $spContainer->getStartOffsetY(); + $endOffsetX = $spContainer->getEndOffsetX(); + $endOffsetY = $spContainer->getEndOffsetY(); + + $width = PHPExcel_Shared_Excel5::getDistanceX($this->phpSheet, $startColumn, $startOffsetX, $endColumn, $endOffsetX); + $height = PHPExcel_Shared_Excel5::getDistanceY($this->phpSheet, $startRow, $startOffsetY, $endRow, $endOffsetY); + + // calculate offsetX and offsetY of the shape + $offsetX = $startOffsetX * PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, $startColumn) / 1024; + $offsetY = $startOffsetY * PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $startRow) / 256; + + switch ($obj['otObjType']) { + case 0x19: + // Note +// echo 'Cell Annotation Object
      '; +// echo 'Object ID is ', $obj['idObjID'],'
      '; + if (isset($this->cellNotes[$obj['idObjID']])) { + $cellNote = $this->cellNotes[$obj['idObjID']]; + + if (isset($this->textObjects[$obj['idObjID']])) { + $textObject = $this->textObjects[$obj['idObjID']]; + $this->cellNotes[$obj['idObjID']]['objTextData'] = $textObject; + } + } + break; + case 0x08: +// echo 'Picture Object
      '; + // picture + // get index to BSE entry (1-based) + $BSEindex = $spContainer->getOPT(0x0104); + $BSECollection = $escherWorkbook->getDggContainer()->getBstoreContainer()->getBSECollection(); + $BSE = $BSECollection[$BSEindex - 1]; + $blipType = $BSE->getBlipType(); + + // need check because some blip types are not supported by Escher reader such as EMF + if ($blip = $BSE->getBlip()) { + $ih = imagecreatefromstring($blip->getData()); + $drawing = new PHPExcel_Worksheet_MemoryDrawing(); + $drawing->setImageResource($ih); + + // width, height, offsetX, offsetY + $drawing->setResizeProportional(false); + $drawing->setWidth($width); + $drawing->setHeight($height); + $drawing->setOffsetX($offsetX); + $drawing->setOffsetY($offsetY); + + switch ($blipType) { + case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG: + $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG); + $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG); + break; + case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG: + $drawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG); + $drawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG); + break; + } + + $drawing->setWorksheet($this->phpSheet); + $drawing->setCoordinates($spContainer->getStartCoordinates()); + } + break; + default: + // other object type + break; + } + } + } + + // treat SHAREDFMLA records + if ($this->version == self::XLS_BIFF8) { + foreach ($this->sharedFormulaParts as $cell => $baseCell) { + list($column, $row) = PHPExcel_Cell::coordinateFromString($cell); + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($column, $row, $this->phpSheet->getTitle())) { + $formula = $this->getFormulaFromStructure($this->sharedFormulas[$baseCell], $cell); + $this->phpSheet->getCell($cell)->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA); + } + } + } + + if (!empty($this->cellNotes)) { + foreach ($this->cellNotes as $note => $noteDetails) { + if (!isset($noteDetails['objTextData'])) { + if (isset($this->textObjects[$note])) { + $textObject = $this->textObjects[$note]; + $noteDetails['objTextData'] = $textObject; + } else { + $noteDetails['objTextData']['text'] = ''; + } + } +// echo 'Cell annotation ', $note,'
      '; +// var_dump($noteDetails); +// echo '
      '; + $cellAddress = str_replace('$', '', $noteDetails['cellRef']); + $this->phpSheet->getComment($cellAddress)->setAuthor($noteDetails['author'])->setText($this->parseRichText($noteDetails['objTextData']['text'])); + } + } + } + + // add the named ranges (defined names) + foreach ($this->definedname as $definedName) { + if ($definedName['isBuiltInName']) { + switch ($definedName['name']) { + case pack('C', 0x06): + // print area + // in general, formula looks like this: Foo!$C$7:$J$66,Bar!$A$1:$IV$2 + $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma? + + $extractedRanges = array(); + foreach ($ranges as $range) { + // $range should look like one of these + // Foo!$C$7:$J$66 + // Bar!$A$1:$IV$2 + $explodes = explode('!', $range); // FIXME: what if sheetname contains exclamation mark? + $sheetName = trim($explodes[0], "'"); + if (count($explodes) == 2) { + if (strpos($explodes[1], ':') === false) { + $explodes[1] = $explodes[1] . ':' . $explodes[1]; + } + $extractedRanges[] = str_replace('$', '', $explodes[1]); // C7:J66 + } + } + if ($docSheet = $this->phpExcel->getSheetByName($sheetName)) { + $docSheet->getPageSetup()->setPrintArea(implode(',', $extractedRanges)); // C7:J66,A1:IV2 + } + break; + case pack('C', 0x07): + // print titles (repeating rows) + // Assuming BIFF8, there are 3 cases + // 1. repeating rows + // formula looks like this: Sheet!$A$1:$IV$2 + // rows 1-2 repeat + // 2. repeating columns + // formula looks like this: Sheet!$A$1:$B$65536 + // columns A-B repeat + // 3. both repeating rows and repeating columns + // formula looks like this: Sheet!$A$1:$B$65536,Sheet!$A$1:$IV$2 + $ranges = explode(',', $definedName['formula']); // FIXME: what if sheetname contains comma? + foreach ($ranges as $range) { + // $range should look like this one of these + // Sheet!$A$1:$B$65536 + // Sheet!$A$1:$IV$2 + $explodes = explode('!', $range); + if (count($explodes) == 2) { + if ($docSheet = $this->phpExcel->getSheetByName($explodes[0])) { + $extractedRange = $explodes[1]; + $extractedRange = str_replace('$', '', $extractedRange); + + $coordinateStrings = explode(':', $extractedRange); + if (count($coordinateStrings) == 2) { + list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[0]); + list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($coordinateStrings[1]); + + if ($firstColumn == 'A' and $lastColumn == 'IV') { + // then we have repeating rows + $docSheet->getPageSetup()->setRowsToRepeatAtTop(array($firstRow, $lastRow)); + } elseif ($firstRow == 1 and $lastRow == 65536) { + // then we have repeating columns + $docSheet->getPageSetup()->setColumnsToRepeatAtLeft(array($firstColumn, $lastColumn)); + } + } + } + } + } + break; + } + } else { + // Extract range + $explodes = explode('!', $definedName['formula']); + + if (count($explodes) == 2) { + if (($docSheet = $this->phpExcel->getSheetByName($explodes[0])) || + ($docSheet = $this->phpExcel->getSheetByName(trim($explodes[0], "'")))) { + $extractedRange = $explodes[1]; + $extractedRange = str_replace('$', '', $extractedRange); + + $localOnly = ($definedName['scope'] == 0) ? false : true; + + $scope = ($definedName['scope'] == 0) ? null : $this->phpExcel->getSheetByName($this->sheets[$definedName['scope'] - 1]['name']); + + $this->phpExcel->addNamedRange(new PHPExcel_NamedRange((string)$definedName['name'], $docSheet, $extractedRange, $localOnly, $scope)); + } + } else { + // Named Value + // TODO Provide support for named values + } + } + } + $this->data = null; + + return $this->phpExcel; + } + + /** + * Read record data from stream, decrypting as required + * + * @param string $data Data stream to read from + * @param int $pos Position to start reading from + * @param int $length Record data length + * + * @return string Record data + */ + private function readRecordData($data, $pos, $len) + { + $data = substr($data, $pos, $len); + + // File not encrypted, or record before encryption start point + if ($this->encryption == self::MS_BIFF_CRYPTO_NONE || $pos < $this->encryptionStartPos) { + return $data; + } + + $recordData = ''; + if ($this->encryption == self::MS_BIFF_CRYPTO_RC4) { + $oldBlock = floor($this->rc4Pos / self::REKEY_BLOCK); + $block = floor($pos / self::REKEY_BLOCK); + $endBlock = floor(($pos + $len) / self::REKEY_BLOCK); + + // Spin an RC4 decryptor to the right spot. If we have a decryptor sitting + // at a point earlier in the current block, re-use it as we can save some time. + if ($block != $oldBlock || $pos < $this->rc4Pos || !$this->rc4Key) { + $this->rc4Key = $this->makeKey($block, $this->md5Ctxt); + $step = $pos % self::REKEY_BLOCK; + } else { + $step = $pos - $this->rc4Pos; + } + $this->rc4Key->RC4(str_repeat("\0", $step)); + + // Decrypt record data (re-keying at the end of every block) + while ($block != $endBlock) { + $step = self::REKEY_BLOCK - ($pos % self::REKEY_BLOCK); + $recordData .= $this->rc4Key->RC4(substr($data, 0, $step)); + $data = substr($data, $step); + $pos += $step; + $len -= $step; + $block++; + $this->rc4Key = $this->makeKey($block, $this->md5Ctxt); + } + $recordData .= $this->rc4Key->RC4(substr($data, 0, $len)); + + // Keep track of the position of this decryptor. + // We'll try and re-use it later if we can to speed things up + $this->rc4Pos = $pos + $len; + } elseif ($this->encryption == self::MS_BIFF_CRYPTO_XOR) { + throw new PHPExcel_Reader_Exception('XOr encryption not supported'); + } + return $recordData; + } + + /** + * Use OLE reader to extract the relevant data streams from the OLE file + * + * @param string $pFilename + */ + private function loadOLE($pFilename) + { + // OLE reader + $ole = new PHPExcel_Shared_OLERead(); + // get excel data, + $res = $ole->read($pFilename); + // Get workbook data: workbook stream + sheet streams + $this->data = $ole->getStream($ole->wrkbook); + // Get summary information data + $this->summaryInformation = $ole->getStream($ole->summaryInformation); + // Get additional document summary information data + $this->documentSummaryInformation = $ole->getStream($ole->documentSummaryInformation); + // Get user-defined property data +// $this->userDefinedProperties = $ole->getUserDefinedProperties(); + } + + + /** + * Read summary information + */ + private function readSummaryInformation() + { + if (!isset($this->summaryInformation)) { + return; + } + + // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) + // offset: 2; size: 2; + // offset: 4; size: 2; OS version + // offset: 6; size: 2; OS indicator + // offset: 8; size: 16 + // offset: 24; size: 4; section count + $secCount = self::getInt4d($this->summaryInformation, 24); + + // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9 + // offset: 44; size: 4 + $secOffset = self::getInt4d($this->summaryInformation, 44); + + // section header + // offset: $secOffset; size: 4; section length + $secLength = self::getInt4d($this->summaryInformation, $secOffset); + + // offset: $secOffset+4; size: 4; property count + $countProperties = self::getInt4d($this->summaryInformation, $secOffset+4); + + // initialize code page (used to resolve string values) + $codePage = 'CP1252'; + + // offset: ($secOffset+8); size: var + // loop through property decarations and properties + for ($i = 0; $i < $countProperties; ++$i) { + // offset: ($secOffset+8) + (8 * $i); size: 4; property ID + $id = self::getInt4d($this->summaryInformation, ($secOffset+8) + (8 * $i)); + + // Use value of property id as appropriate + // offset: ($secOffset+12) + (8 * $i); size: 4; offset from beginning of section (48) + $offset = self::getInt4d($this->summaryInformation, ($secOffset+12) + (8 * $i)); + + $type = self::getInt4d($this->summaryInformation, $secOffset + $offset); + + // initialize property value + $value = null; + + // extract property value based on property type + switch ($type) { + case 0x02: // 2 byte signed integer + $value = self::getInt2d($this->summaryInformation, $secOffset + 4 + $offset); + break; + case 0x03: // 4 byte signed integer + $value = self::getInt4d($this->summaryInformation, $secOffset + 4 + $offset); + break; + case 0x13: // 4 byte unsigned integer + // not needed yet, fix later if necessary + break; + case 0x1E: // null-terminated string prepended by dword string length + $byteLength = self::getInt4d($this->summaryInformation, $secOffset + 4 + $offset); + $value = substr($this->summaryInformation, $secOffset + 8 + $offset, $byteLength); + $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage); + $value = rtrim($value); + break; + case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + // PHP-time + $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->summaryInformation, $secOffset + 4 + $offset, 8)); + break; + case 0x47: // Clipboard format + // not needed yet, fix later if necessary + break; + } + + switch ($id) { + case 0x01: // Code Page + $codePage = PHPExcel_Shared_CodePage::NumberToName($value); + break; + case 0x02: // Title + $this->phpExcel->getProperties()->setTitle($value); + break; + case 0x03: // Subject + $this->phpExcel->getProperties()->setSubject($value); + break; + case 0x04: // Author (Creator) + $this->phpExcel->getProperties()->setCreator($value); + break; + case 0x05: // Keywords + $this->phpExcel->getProperties()->setKeywords($value); + break; + case 0x06: // Comments (Description) + $this->phpExcel->getProperties()->setDescription($value); + break; + case 0x07: // Template + // Not supported by PHPExcel + break; + case 0x08: // Last Saved By (LastModifiedBy) + $this->phpExcel->getProperties()->setLastModifiedBy($value); + break; + case 0x09: // Revision + // Not supported by PHPExcel + break; + case 0x0A: // Total Editing Time + // Not supported by PHPExcel + break; + case 0x0B: // Last Printed + // Not supported by PHPExcel + break; + case 0x0C: // Created Date/Time + $this->phpExcel->getProperties()->setCreated($value); + break; + case 0x0D: // Modified Date/Time + $this->phpExcel->getProperties()->setModified($value); + break; + case 0x0E: // Number of Pages + // Not supported by PHPExcel + break; + case 0x0F: // Number of Words + // Not supported by PHPExcel + break; + case 0x10: // Number of Characters + // Not supported by PHPExcel + break; + case 0x11: // Thumbnail + // Not supported by PHPExcel + break; + case 0x12: // Name of creating application + // Not supported by PHPExcel + break; + case 0x13: // Security + // Not supported by PHPExcel + break; + } + } + } + + + /** + * Read additional document summary information + */ + private function readDocumentSummaryInformation() + { + if (!isset($this->documentSummaryInformation)) { + return; + } + + // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) + // offset: 2; size: 2; + // offset: 4; size: 2; OS version + // offset: 6; size: 2; OS indicator + // offset: 8; size: 16 + // offset: 24; size: 4; section count + $secCount = self::getInt4d($this->documentSummaryInformation, 24); +// echo '$secCount = ', $secCount,'
      '; + + // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae + // offset: 44; size: 4; first section offset + $secOffset = self::getInt4d($this->documentSummaryInformation, 44); +// echo '$secOffset = ', $secOffset,'
      '; + + // section header + // offset: $secOffset; size: 4; section length + $secLength = self::getInt4d($this->documentSummaryInformation, $secOffset); +// echo '$secLength = ', $secLength,'
      '; + + // offset: $secOffset+4; size: 4; property count + $countProperties = self::getInt4d($this->documentSummaryInformation, $secOffset+4); +// echo '$countProperties = ', $countProperties,'
      '; + + // initialize code page (used to resolve string values) + $codePage = 'CP1252'; + + // offset: ($secOffset+8); size: var + // loop through property decarations and properties + for ($i = 0; $i < $countProperties; ++$i) { +// echo 'Property ', $i,'
      '; + // offset: ($secOffset+8) + (8 * $i); size: 4; property ID + $id = self::getInt4d($this->documentSummaryInformation, ($secOffset+8) + (8 * $i)); +// echo 'ID is ', $id,'
      '; + + // Use value of property id as appropriate + // offset: 60 + 8 * $i; size: 4; offset from beginning of section (48) + $offset = self::getInt4d($this->documentSummaryInformation, ($secOffset+12) + (8 * $i)); + + $type = self::getInt4d($this->documentSummaryInformation, $secOffset + $offset); +// echo 'Type is ', $type,', '; + + // initialize property value + $value = null; + + // extract property value based on property type + switch ($type) { + case 0x02: // 2 byte signed integer + $value = self::getInt2d($this->documentSummaryInformation, $secOffset + 4 + $offset); + break; + case 0x03: // 4 byte signed integer + $value = self::getInt4d($this->documentSummaryInformation, $secOffset + 4 + $offset); + break; + case 0x0B: // Boolean + $value = self::getInt2d($this->documentSummaryInformation, $secOffset + 4 + $offset); + $value = ($value == 0 ? false : true); + break; + case 0x13: // 4 byte unsigned integer + // not needed yet, fix later if necessary + break; + case 0x1E: // null-terminated string prepended by dword string length + $byteLength = self::getInt4d($this->documentSummaryInformation, $secOffset + 4 + $offset); + $value = substr($this->documentSummaryInformation, $secOffset + 8 + $offset, $byteLength); + $value = PHPExcel_Shared_String::ConvertEncoding($value, 'UTF-8', $codePage); + $value = rtrim($value); + break; + case 0x40: // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + // PHP-Time + $value = PHPExcel_Shared_OLE::OLE2LocalDate(substr($this->documentSummaryInformation, $secOffset + 4 + $offset, 8)); + break; + case 0x47: // Clipboard format + // not needed yet, fix later if necessary + break; + } + + switch ($id) { + case 0x01: // Code Page + $codePage = PHPExcel_Shared_CodePage::NumberToName($value); + break; + case 0x02: // Category + $this->phpExcel->getProperties()->setCategory($value); + break; + case 0x03: // Presentation Target + // Not supported by PHPExcel + break; + case 0x04: // Bytes + // Not supported by PHPExcel + break; + case 0x05: // Lines + // Not supported by PHPExcel + break; + case 0x06: // Paragraphs + // Not supported by PHPExcel + break; + case 0x07: // Slides + // Not supported by PHPExcel + break; + case 0x08: // Notes + // Not supported by PHPExcel + break; + case 0x09: // Hidden Slides + // Not supported by PHPExcel + break; + case 0x0A: // MM Clips + // Not supported by PHPExcel + break; + case 0x0B: // Scale Crop + // Not supported by PHPExcel + break; + case 0x0C: // Heading Pairs + // Not supported by PHPExcel + break; + case 0x0D: // Titles of Parts + // Not supported by PHPExcel + break; + case 0x0E: // Manager + $this->phpExcel->getProperties()->setManager($value); + break; + case 0x0F: // Company + $this->phpExcel->getProperties()->setCompany($value); + break; + case 0x10: // Links up-to-date + // Not supported by PHPExcel + break; + } + } + } + + + /** + * Reads a general type of BIFF record. Does nothing except for moving stream pointer forward to next record. + */ + private function readDefault() + { + $length = self::getInt2d($this->data, $this->pos + 2); +// $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + } + + + /** + * The NOTE record specifies a comment associated with a particular cell. In Excel 95 (BIFF7) and earlier versions, + * this record stores a note (cell note). This feature was significantly enhanced in Excel 97. + */ + private function readNote() + { +// echo 'Read Cell Annotation
      '; + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + $cellAddress = $this->readBIFF8CellAddress(substr($recordData, 0, 4)); + if ($this->version == self::XLS_BIFF8) { + $noteObjID = self::getInt2d($recordData, 6); + $noteAuthor = self::readUnicodeStringLong(substr($recordData, 8)); + $noteAuthor = $noteAuthor['value']; +// echo 'Note Address=', $cellAddress,'
      '; +// echo 'Note Object ID=', $noteObjID,'
      '; +// echo 'Note Author=', $noteAuthor,'
      '; +// + $this->cellNotes[$noteObjID] = array( + 'cellRef' => $cellAddress, + 'objectID' => $noteObjID, + 'author' => $noteAuthor + ); + } else { + $extension = false; + if ($cellAddress == '$B$65536') { + // If the address row is -1 and the column is 0, (which translates as $B$65536) then this is a continuation + // note from the previous cell annotation. We're not yet handling this, so annotations longer than the + // max 2048 bytes will probably throw a wobbly. + $row = self::getInt2d($recordData, 0); + $extension = true; + $cellAddress = array_pop(array_keys($this->phpSheet->getComments())); + } +// echo 'Note Address=', $cellAddress,'
      '; + + $cellAddress = str_replace('$', '', $cellAddress); + $noteLength = self::getInt2d($recordData, 4); + $noteText = trim(substr($recordData, 6)); +// echo 'Note Length=', $noteLength,'
      '; +// echo 'Note Text=', $noteText,'
      '; + + if ($extension) { + // Concatenate this extension with the currently set comment for the cell + $comment = $this->phpSheet->getComment($cellAddress); + $commentText = $comment->getText()->getPlainText(); + $comment->setText($this->parseRichText($commentText.$noteText)); + } else { + // Set comment for the cell + $this->phpSheet->getComment($cellAddress)->setText($this->parseRichText($noteText)); +// ->setAuthor($author) + } + } + + } + + + /** + * The TEXT Object record contains the text associated with a cell annotation. + */ + private function readTextObject() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // recordData consists of an array of subrecords looking like this: + // grbit: 2 bytes; Option Flags + // rot: 2 bytes; rotation + // cchText: 2 bytes; length of the text (in the first continue record) + // cbRuns: 2 bytes; length of the formatting (in the second continue record) + // followed by the continuation records containing the actual text and formatting + $grbitOpts = self::getInt2d($recordData, 0); + $rot = self::getInt2d($recordData, 2); + $cchText = self::getInt2d($recordData, 10); + $cbRuns = self::getInt2d($recordData, 12); + $text = $this->getSplicedRecordData(); + + $this->textObjects[$this->textObjRef] = array( + 'text' => substr($text["recordData"], $text["spliceOffsets"][0]+1, $cchText), + 'format' => substr($text["recordData"], $text["spliceOffsets"][1], $cbRuns), + 'alignment' => $grbitOpts, + 'rotation' => $rot + ); + +// echo '_readTextObject()
      '; +// var_dump($this->textObjects[$this->textObjRef]); +// echo '
      '; + } + + + /** + * Read BOF + */ + private function readBof() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = substr($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 2; size: 2; type of the following data + $substreamType = self::getInt2d($recordData, 2); + + switch ($substreamType) { + case self::XLS_WorkbookGlobals: + $version = self::getInt2d($recordData, 0); + if (($version != self::XLS_BIFF8) && ($version != self::XLS_BIFF7)) { + throw new PHPExcel_Reader_Exception('Cannot read this Excel file. Version is too old.'); + } + $this->version = $version; + break; + case self::XLS_Worksheet: + // do not use this version information for anything + // it is unreliable (OpenOffice doc, 5.8), use only version information from the global stream + break; + default: + // substream, e.g. chart + // just skip the entire substream + do { + $code = self::getInt2d($this->data, $this->pos); + $this->readDefault(); + } while ($code != self::XLS_TYPE_EOF && $this->pos < $this->dataSize); + break; + } + } + + + /** + * FILEPASS + * + * This record is part of the File Protection Block. It + * contains information about the read/write password of the + * file. All record contents following this record will be + * encrypted. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + * + * The decryption functions and objects used from here on in + * are based on the source of Spreadsheet-ParseExcel: + * http://search.cpan.org/~jmcnamara/Spreadsheet-ParseExcel/ + */ + private function readFilepass() + { + $length = self::getInt2d($this->data, $this->pos + 2); + + if ($length != 54) { + throw new PHPExcel_Reader_Exception('Unexpected file pass record length'); + } + + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->verifyPassword('VelvetSweatshop', substr($recordData, 6, 16), substr($recordData, 22, 16), substr($recordData, 38, 16), $this->md5Ctxt)) { + throw new PHPExcel_Reader_Exception('Decryption password incorrect'); + } + + $this->encryption = self::MS_BIFF_CRYPTO_RC4; + + // Decryption required from the record after next onwards + $this->encryptionStartPos = $this->pos + self::getInt2d($this->data, $this->pos + 2); + } + + /** + * Make an RC4 decryptor for the given block + * + * @var int $block Block for which to create decrypto + * @var string $valContext MD5 context state + * + * @return PHPExcel_Reader_Excel5_RC4 + */ + private function makeKey($block, $valContext) + { + $pwarray = str_repeat("\0", 64); + + for ($i = 0; $i < 5; $i++) { + $pwarray[$i] = $valContext[$i]; + } + + $pwarray[5] = chr($block & 0xff); + $pwarray[6] = chr(($block >> 8) & 0xff); + $pwarray[7] = chr(($block >> 16) & 0xff); + $pwarray[8] = chr(($block >> 24) & 0xff); + + $pwarray[9] = "\x80"; + $pwarray[56] = "\x48"; + + $md5 = new PHPExcel_Reader_Excel5_MD5(); + $md5->add($pwarray); + + $s = $md5->getContext(); + return new PHPExcel_Reader_Excel5_RC4($s); + } + + /** + * Verify RC4 file password + * + * @var string $password Password to check + * @var string $docid Document id + * @var string $salt_data Salt data + * @var string $hashedsalt_data Hashed salt data + * @var string &$valContext Set to the MD5 context of the value + * + * @return bool Success + */ + private function verifyPassword($password, $docid, $salt_data, $hashedsalt_data, &$valContext) + { + $pwarray = str_repeat("\0", 64); + + for ($i = 0; $i < strlen($password); $i++) { + $o = ord(substr($password, $i, 1)); + $pwarray[2 * $i] = chr($o & 0xff); + $pwarray[2 * $i + 1] = chr(($o >> 8) & 0xff); + } + $pwarray[2 * $i] = chr(0x80); + $pwarray[56] = chr(($i << 4) & 0xff); + + $md5 = new PHPExcel_Reader_Excel5_MD5(); + $md5->add($pwarray); + + $mdContext1 = $md5->getContext(); + + $offset = 0; + $keyoffset = 0; + $tocopy = 5; + + $md5->reset(); + + while ($offset != 16) { + if ((64 - $offset) < 5) { + $tocopy = 64 - $offset; + } + for ($i = 0; $i <= $tocopy; $i++) { + $pwarray[$offset + $i] = $mdContext1[$keyoffset + $i]; + } + $offset += $tocopy; + + if ($offset == 64) { + $md5->add($pwarray); + $keyoffset = $tocopy; + $tocopy = 5 - $tocopy; + $offset = 0; + continue; + } + + $keyoffset = 0; + $tocopy = 5; + for ($i = 0; $i < 16; $i++) { + $pwarray[$offset + $i] = $docid[$i]; + } + $offset += 16; + } + + $pwarray[16] = "\x80"; + for ($i = 0; $i < 47; $i++) { + $pwarray[17 + $i] = "\0"; + } + $pwarray[56] = "\x80"; + $pwarray[57] = "\x0a"; + + $md5->add($pwarray); + $valContext = $md5->getContext(); + + $key = $this->makeKey(0, $valContext); + + $salt = $key->RC4($salt_data); + $hashedsalt = $key->RC4($hashedsalt_data); + + $salt .= "\x80" . str_repeat("\0", 47); + $salt[56] = "\x80"; + + $md5->reset(); + $md5->add($salt); + $mdContext2 = $md5->getContext(); + + return $mdContext2 == $hashedsalt; + } + + /** + * CODEPAGE + * + * This record stores the text encoding used to write byte + * strings, stored as MS Windows code page identifier. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readCodepage() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; code page identifier + $codepage = self::getInt2d($recordData, 0); + + $this->codepage = PHPExcel_Shared_CodePage::NumberToName($codepage); + } + + + /** + * DATEMODE + * + * This record specifies the base date for displaying date + * values. All dates are stored as count of days past this + * base date. In BIFF2-BIFF4 this record is part of the + * Calculation Settings Block. In BIFF5-BIFF8 it is + * stored in the Workbook Globals Substream. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readDateMode() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; 0 = base 1900, 1 = base 1904 + PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_WINDOWS_1900); + if (ord($recordData{0}) == 1) { + PHPExcel_Shared_Date::setExcelCalendar(PHPExcel_Shared_Date::CALENDAR_MAC_1904); + } + } + + + /** + * Read a FONT record + */ + private function readFont() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + $objFont = new PHPExcel_Style_Font(); + + // offset: 0; size: 2; height of the font (in twips = 1/20 of a point) + $size = self::getInt2d($recordData, 0); + $objFont->setSize($size / 20); + + // offset: 2; size: 2; option flags + // bit: 0; mask 0x0001; bold (redundant in BIFF5-BIFF8) + // bit: 1; mask 0x0002; italic + $isItalic = (0x0002 & self::getInt2d($recordData, 2)) >> 1; + if ($isItalic) { + $objFont->setItalic(true); + } + + // bit: 2; mask 0x0004; underlined (redundant in BIFF5-BIFF8) + // bit: 3; mask 0x0008; strike + $isStrike = (0x0008 & self::getInt2d($recordData, 2)) >> 3; + if ($isStrike) { + $objFont->setStrikethrough(true); + } + + // offset: 4; size: 2; colour index + $colorIndex = self::getInt2d($recordData, 4); + $objFont->colorIndex = $colorIndex; + + // offset: 6; size: 2; font weight + $weight = self::getInt2d($recordData, 6); + switch ($weight) { + case 0x02BC: + $objFont->setBold(true); + break; + } + + // offset: 8; size: 2; escapement type + $escapement = self::getInt2d($recordData, 8); + switch ($escapement) { + case 0x0001: + $objFont->setSuperScript(true); + break; + case 0x0002: + $objFont->setSubScript(true); + break; + } + + // offset: 10; size: 1; underline type + $underlineType = ord($recordData{10}); + switch ($underlineType) { + case 0x00: + break; // no underline + case 0x01: + $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); + break; + case 0x02: + $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLE); + break; + case 0x21: + $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING); + break; + case 0x22: + $objFont->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING); + break; + } + + // offset: 11; size: 1; font family + // offset: 12; size: 1; character set + // offset: 13; size: 1; not used + // offset: 14; size: var; font name + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringShort(substr($recordData, 14)); + } else { + $string = $this->readByteStringShort(substr($recordData, 14)); + } + $objFont->setName($string['value']); + + $this->objFonts[] = $objFont; + } + } + + + /** + * FORMAT + * + * This record contains information about a number format. + * All FORMAT records occur together in a sequential list. + * + * In BIFF2-BIFF4 other records referencing a FORMAT record + * contain a zero-based index into this list. From BIFF5 on + * the FORMAT record contains the index itself that will be + * used by other records. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readFormat() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + $indexCode = self::getInt2d($recordData, 0); + + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringLong(substr($recordData, 2)); + } else { + // BIFF7 + $string = $this->readByteStringShort(substr($recordData, 2)); + } + + $formatString = $string['value']; + $this->formats[$indexCode] = $formatString; + } + } + + + /** + * XF - Extended Format + * + * This record contains formatting information for cells, rows, columns or styles. + * According to http://support.microsoft.com/kb/147732 there are always at least 15 cell style XF + * and 1 cell XF. + * Inspection of Excel files generated by MS Office Excel shows that XF records 0-14 are cell style XF + * and XF record 15 is a cell XF + * We only read the first cell style XF and skip the remaining cell style XF records + * We read all cell XF records. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readXf() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + $objStyle = new PHPExcel_Style(); + + if (!$this->readDataOnly) { + // offset: 0; size: 2; Index to FONT record + if (self::getInt2d($recordData, 0) < 4) { + $fontIndex = self::getInt2d($recordData, 0); + } else { + // this has to do with that index 4 is omitted in all BIFF versions for some strange reason + // check the OpenOffice documentation of the FONT record + $fontIndex = self::getInt2d($recordData, 0) - 1; + } + $objStyle->setFont($this->objFonts[$fontIndex]); + + // offset: 2; size: 2; Index to FORMAT record + $numberFormatIndex = self::getInt2d($recordData, 2); + if (isset($this->formats[$numberFormatIndex])) { + // then we have user-defined format code + $numberformat = array('code' => $this->formats[$numberFormatIndex]); + } elseif (($code = PHPExcel_Style_NumberFormat::builtInFormatCode($numberFormatIndex)) !== '') { + // then we have built-in format code + $numberformat = array('code' => $code); + } else { + // we set the general format code + $numberformat = array('code' => 'General'); + } + $objStyle->getNumberFormat()->setFormatCode($numberformat['code']); + + // offset: 4; size: 2; XF type, cell protection, and parent style XF + // bit 2-0; mask 0x0007; XF_TYPE_PROT + $xfTypeProt = self::getInt2d($recordData, 4); + // bit 0; mask 0x01; 1 = cell is locked + $isLocked = (0x01 & $xfTypeProt) >> 0; + $objStyle->getProtection()->setLocked($isLocked ? PHPExcel_Style_Protection::PROTECTION_INHERIT : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); + + // bit 1; mask 0x02; 1 = Formula is hidden + $isHidden = (0x02 & $xfTypeProt) >> 1; + $objStyle->getProtection()->setHidden($isHidden ? PHPExcel_Style_Protection::PROTECTION_PROTECTED : PHPExcel_Style_Protection::PROTECTION_UNPROTECTED); + + // bit 2; mask 0x04; 0 = Cell XF, 1 = Cell Style XF + $isCellStyleXf = (0x04 & $xfTypeProt) >> 2; + + // offset: 6; size: 1; Alignment and text break + // bit 2-0, mask 0x07; horizontal alignment + $horAlign = (0x07 & ord($recordData{6})) >> 0; + switch ($horAlign) { + case 0: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_GENERAL); + break; + case 1: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); + break; + case 2: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + break; + case 3: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); + break; + case 4: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_FILL); + break; + case 5: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); + break; + case 6: + $objStyle->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS); + break; + } + // bit 3, mask 0x08; wrap text + $wrapText = (0x08 & ord($recordData{6})) >> 3; + switch ($wrapText) { + case 0: + $objStyle->getAlignment()->setWrapText(false); + break; + case 1: + $objStyle->getAlignment()->setWrapText(true); + break; + } + // bit 6-4, mask 0x70; vertical alignment + $vertAlign = (0x70 & ord($recordData{6})) >> 4; + switch ($vertAlign) { + case 0: + $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP); + break; + case 1: + $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); + break; + case 2: + $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_BOTTOM); + break; + case 3: + $objStyle->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_JUSTIFY); + break; + } + + if ($this->version == self::XLS_BIFF8) { + // offset: 7; size: 1; XF_ROTATION: Text rotation angle + $angle = ord($recordData{7}); + $rotation = 0; + if ($angle <= 90) { + $rotation = $angle; + } elseif ($angle <= 180) { + $rotation = 90 - $angle; + } elseif ($angle == 255) { + $rotation = -165; + } + $objStyle->getAlignment()->setTextRotation($rotation); + + // offset: 8; size: 1; Indentation, shrink to cell size, and text direction + // bit: 3-0; mask: 0x0F; indent level + $indent = (0x0F & ord($recordData{8})) >> 0; + $objStyle->getAlignment()->setIndent($indent); + + // bit: 4; mask: 0x10; 1 = shrink content to fit into cell + $shrinkToFit = (0x10 & ord($recordData{8})) >> 4; + switch ($shrinkToFit) { + case 0: + $objStyle->getAlignment()->setShrinkToFit(false); + break; + case 1: + $objStyle->getAlignment()->setShrinkToFit(true); + break; + } + + // offset: 9; size: 1; Flags used for attribute groups + + // offset: 10; size: 4; Cell border lines and background area + // bit: 3-0; mask: 0x0000000F; left style + if ($bordersLeftStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x0000000F & self::getInt4d($recordData, 10)) >> 0)) { + $objStyle->getBorders()->getLeft()->setBorderStyle($bordersLeftStyle); + } + // bit: 7-4; mask: 0x000000F0; right style + if ($bordersRightStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x000000F0 & self::getInt4d($recordData, 10)) >> 4)) { + $objStyle->getBorders()->getRight()->setBorderStyle($bordersRightStyle); + } + // bit: 11-8; mask: 0x00000F00; top style + if ($bordersTopStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000F00 & self::getInt4d($recordData, 10)) >> 8)) { + $objStyle->getBorders()->getTop()->setBorderStyle($bordersTopStyle); + } + // bit: 15-12; mask: 0x0000F000; bottom style + if ($bordersBottomStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x0000F000 & self::getInt4d($recordData, 10)) >> 12)) { + $objStyle->getBorders()->getBottom()->setBorderStyle($bordersBottomStyle); + } + // bit: 22-16; mask: 0x007F0000; left color + $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & self::getInt4d($recordData, 10)) >> 16; + + // bit: 29-23; mask: 0x3F800000; right color + $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & self::getInt4d($recordData, 10)) >> 23; + + // bit: 30; mask: 0x40000000; 1 = diagonal line from top left to right bottom + $diagonalDown = (0x40000000 & self::getInt4d($recordData, 10)) >> 30 ? true : false; + + // bit: 31; mask: 0x80000000; 1 = diagonal line from bottom left to top right + $diagonalUp = (0x80000000 & self::getInt4d($recordData, 10)) >> 31 ? true : false; + + if ($diagonalUp == false && $diagonalDown == false) { + $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_NONE); + } elseif ($diagonalUp == true && $diagonalDown == false) { + $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_UP); + } elseif ($diagonalUp == false && $diagonalDown == true) { + $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_DOWN); + } elseif ($diagonalUp == true && $diagonalDown == true) { + $objStyle->getBorders()->setDiagonalDirection(PHPExcel_Style_Borders::DIAGONAL_BOTH); + } + + // offset: 14; size: 4; + // bit: 6-0; mask: 0x0000007F; top color + $objStyle->getBorders()->getTop()->colorIndex = (0x0000007F & self::getInt4d($recordData, 14)) >> 0; + + // bit: 13-7; mask: 0x00003F80; bottom color + $objStyle->getBorders()->getBottom()->colorIndex = (0x00003F80 & self::getInt4d($recordData, 14)) >> 7; + + // bit: 20-14; mask: 0x001FC000; diagonal color + $objStyle->getBorders()->getDiagonal()->colorIndex = (0x001FC000 & self::getInt4d($recordData, 14)) >> 14; + + // bit: 24-21; mask: 0x01E00000; diagonal style + if ($bordersDiagonalStyle = PHPExcel_Reader_Excel5_Style_Border::lookup((0x01E00000 & self::getInt4d($recordData, 14)) >> 21)) { + $objStyle->getBorders()->getDiagonal()->setBorderStyle($bordersDiagonalStyle); + } + + // bit: 31-26; mask: 0xFC000000 fill pattern + if ($fillType = PHPExcel_Reader_Excel5_Style_FillPattern::lookup((0xFC000000 & self::getInt4d($recordData, 14)) >> 26)) { + $objStyle->getFill()->setFillType($fillType); + } + // offset: 18; size: 2; pattern and background colour + // bit: 6-0; mask: 0x007F; color index for pattern color + $objStyle->getFill()->startcolorIndex = (0x007F & self::getInt2d($recordData, 18)) >> 0; + + // bit: 13-7; mask: 0x3F80; color index for pattern background + $objStyle->getFill()->endcolorIndex = (0x3F80 & self::getInt2d($recordData, 18)) >> 7; + } else { + // BIFF5 + + // offset: 7; size: 1; Text orientation and flags + $orientationAndFlags = ord($recordData{7}); + + // bit: 1-0; mask: 0x03; XF_ORIENTATION: Text orientation + $xfOrientation = (0x03 & $orientationAndFlags) >> 0; + switch ($xfOrientation) { + case 0: + $objStyle->getAlignment()->setTextRotation(0); + break; + case 1: + $objStyle->getAlignment()->setTextRotation(-165); + break; + case 2: + $objStyle->getAlignment()->setTextRotation(90); + break; + case 3: + $objStyle->getAlignment()->setTextRotation(-90); + break; + } + + // offset: 8; size: 4; cell border lines and background area + $borderAndBackground = self::getInt4d($recordData, 8); + + // bit: 6-0; mask: 0x0000007F; color index for pattern color + $objStyle->getFill()->startcolorIndex = (0x0000007F & $borderAndBackground) >> 0; + + // bit: 13-7; mask: 0x00003F80; color index for pattern background + $objStyle->getFill()->endcolorIndex = (0x00003F80 & $borderAndBackground) >> 7; + + // bit: 21-16; mask: 0x003F0000; fill pattern + $objStyle->getFill()->setFillType(PHPExcel_Reader_Excel5_Style_FillPattern::lookup((0x003F0000 & $borderAndBackground) >> 16)); + + // bit: 24-22; mask: 0x01C00000; bottom line style + $objStyle->getBorders()->getBottom()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x01C00000 & $borderAndBackground) >> 22)); + + // bit: 31-25; mask: 0xFE000000; bottom line color + $objStyle->getBorders()->getBottom()->colorIndex = (0xFE000000 & $borderAndBackground) >> 25; + + // offset: 12; size: 4; cell border lines + $borderLines = self::getInt4d($recordData, 12); + + // bit: 2-0; mask: 0x00000007; top line style + $objStyle->getBorders()->getTop()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000007 & $borderLines) >> 0)); + + // bit: 5-3; mask: 0x00000038; left line style + $objStyle->getBorders()->getLeft()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x00000038 & $borderLines) >> 3)); + + // bit: 8-6; mask: 0x000001C0; right line style + $objStyle->getBorders()->getRight()->setBorderStyle(PHPExcel_Reader_Excel5_Style_Border::lookup((0x000001C0 & $borderLines) >> 6)); + + // bit: 15-9; mask: 0x0000FE00; top line color index + $objStyle->getBorders()->getTop()->colorIndex = (0x0000FE00 & $borderLines) >> 9; + + // bit: 22-16; mask: 0x007F0000; left line color index + $objStyle->getBorders()->getLeft()->colorIndex = (0x007F0000 & $borderLines) >> 16; + + // bit: 29-23; mask: 0x3F800000; right line color index + $objStyle->getBorders()->getRight()->colorIndex = (0x3F800000 & $borderLines) >> 23; + } + + // add cellStyleXf or cellXf and update mapping + if ($isCellStyleXf) { + // we only read one style XF record which is always the first + if ($this->xfIndex == 0) { + $this->phpExcel->addCellStyleXf($objStyle); + $this->mapCellStyleXfIndex[$this->xfIndex] = 0; + } + } else { + // we read all cell XF records + $this->phpExcel->addCellXf($objStyle); + $this->mapCellXfIndex[$this->xfIndex] = count($this->phpExcel->getCellXfCollection()) - 1; + } + + // update XF index for when we read next record + ++$this->xfIndex; + } + } + + + /** + * + */ + private function readXfExt() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; 0x087D = repeated header + + // offset: 2; size: 2 + + // offset: 4; size: 8; not used + + // offset: 12; size: 2; record version + + // offset: 14; size: 2; index to XF record which this record modifies + $ixfe = self::getInt2d($recordData, 14); + + // offset: 16; size: 2; not used + + // offset: 18; size: 2; number of extension properties that follow + $cexts = self::getInt2d($recordData, 18); + + // start reading the actual extension data + $offset = 20; + while ($offset < $length) { + // extension type + $extType = self::getInt2d($recordData, $offset); + + // extension length + $cb = self::getInt2d($recordData, $offset + 2); + + // extension data + $extData = substr($recordData, $offset + 4, $cb); + + switch ($extType) { + case 4: // fill start color + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $fill = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFill(); + $fill->getStartColor()->setRGB($rgb); + unset($fill->startcolorIndex); // normal color index does not apply, discard + } + } + break; + case 5: // fill end color + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $fill = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFill(); + $fill->getEndColor()->setRGB($rgb); + unset($fill->endcolorIndex); // normal color index does not apply, discard + } + } + break; + case 7: // border color top + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $top = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getTop(); + $top->getColor()->setRGB($rgb); + unset($top->colorIndex); // normal color index does not apply, discard + } + } + break; + case 8: // border color bottom + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $bottom = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getBottom(); + $bottom->getColor()->setRGB($rgb); + unset($bottom->colorIndex); // normal color index does not apply, discard + } + } + break; + case 9: // border color left + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $left = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getLeft(); + $left->getColor()->setRGB($rgb); + unset($left->colorIndex); // normal color index does not apply, discard + } + } + break; + case 10: // border color right + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $right = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getRight(); + $right->getColor()->setRGB($rgb); + unset($right->colorIndex); // normal color index does not apply, discard + } + } + break; + case 11: // border color diagonal + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $diagonal = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getBorders()->getDiagonal(); + $diagonal->getColor()->setRGB($rgb); + unset($diagonal->colorIndex); // normal color index does not apply, discard + } + } + break; + case 13: // font color + $xclfType = self::getInt2d($extData, 0); // color type + $xclrValue = substr($extData, 4, 4); // color value (value based on color type) + + if ($xclfType == 2) { + $rgb = sprintf('%02X%02X%02X', ord($xclrValue{0}), ord($xclrValue{1}), ord($xclrValue{2})); + + // modify the relevant style property + if (isset($this->mapCellXfIndex[$ixfe])) { + $font = $this->phpExcel->getCellXfByIndex($this->mapCellXfIndex[$ixfe])->getFont(); + $font->getColor()->setRGB($rgb); + unset($font->colorIndex); // normal color index does not apply, discard + } + } + break; + } + + $offset += $cb; + } + } + + } + + + /** + * Read STYLE record + */ + private function readStyle() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; index to XF record and flag for built-in style + $ixfe = self::getInt2d($recordData, 0); + + // bit: 11-0; mask 0x0FFF; index to XF record + $xfIndex = (0x0FFF & $ixfe) >> 0; + + // bit: 15; mask 0x8000; 0 = user-defined style, 1 = built-in style + $isBuiltIn = (bool) ((0x8000 & $ixfe) >> 15); + + if ($isBuiltIn) { + // offset: 2; size: 1; identifier for built-in style + $builtInId = ord($recordData{2}); + + switch ($builtInId) { + case 0x00: + // currently, we are not using this for anything + break; + default: + break; + } + } else { + // user-defined; not supported by PHPExcel + } + } + } + + + /** + * Read PALETTE record + */ + private function readPalette() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; number of following colors + $nm = self::getInt2d($recordData, 0); + + // list of RGB colors + for ($i = 0; $i < $nm; ++$i) { + $rgb = substr($recordData, 2 + 4 * $i, 4); + $this->palette[] = self::readRGB($rgb); + } + } + } + + + /** + * SHEET + * + * This record is located in the Workbook Globals + * Substream and represents a sheet inside the workbook. + * One SHEET record is written for each sheet. It stores the + * sheet name and a stream offset to the BOF record of the + * respective Sheet Substream within the Workbook Stream. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readSheet() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // offset: 0; size: 4; absolute stream position of the BOF record of the sheet + // NOTE: not encrypted + $rec_offset = self::getInt4d($this->data, $this->pos + 4); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 4; size: 1; sheet state + switch (ord($recordData{4})) { + case 0x00: + $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; + break; + case 0x01: + $sheetState = PHPExcel_Worksheet::SHEETSTATE_HIDDEN; + break; + case 0x02: + $sheetState = PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN; + break; + default: + $sheetState = PHPExcel_Worksheet::SHEETSTATE_VISIBLE; + break; + } + + // offset: 5; size: 1; sheet type + $sheetType = ord($recordData{5}); + + // offset: 6; size: var; sheet name + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringShort(substr($recordData, 6)); + $rec_name = $string['value']; + } elseif ($this->version == self::XLS_BIFF7) { + $string = $this->readByteStringShort(substr($recordData, 6)); + $rec_name = $string['value']; + } + + $this->sheets[] = array( + 'name' => $rec_name, + 'offset' => $rec_offset, + 'sheetState' => $sheetState, + 'sheetType' => $sheetType, + ); + } + + + /** + * Read EXTERNALBOOK record + */ + private function readExternalBook() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset within record data + $offset = 0; + + // there are 4 types of records + if (strlen($recordData) > 4) { + // external reference + // offset: 0; size: 2; number of sheet names ($nm) + $nm = self::getInt2d($recordData, 0); + $offset += 2; + + // offset: 2; size: var; encoded URL without sheet name (Unicode string, 16-bit length) + $encodedUrlString = self::readUnicodeStringLong(substr($recordData, 2)); + $offset += $encodedUrlString['size']; + + // offset: var; size: var; list of $nm sheet names (Unicode strings, 16-bit length) + $externalSheetNames = array(); + for ($i = 0; $i < $nm; ++$i) { + $externalSheetNameString = self::readUnicodeStringLong(substr($recordData, $offset)); + $externalSheetNames[] = $externalSheetNameString['value']; + $offset += $externalSheetNameString['size']; + } + + // store the record data + $this->externalBooks[] = array( + 'type' => 'external', + 'encodedUrl' => $encodedUrlString['value'], + 'externalSheetNames' => $externalSheetNames, + ); + } elseif (substr($recordData, 2, 2) == pack('CC', 0x01, 0x04)) { + // internal reference + // offset: 0; size: 2; number of sheet in this document + // offset: 2; size: 2; 0x01 0x04 + $this->externalBooks[] = array( + 'type' => 'internal', + ); + } elseif (substr($recordData, 0, 4) == pack('vCC', 0x0001, 0x01, 0x3A)) { + // add-in function + // offset: 0; size: 2; 0x0001 + $this->externalBooks[] = array( + 'type' => 'addInFunction', + ); + } elseif (substr($recordData, 0, 2) == pack('v', 0x0000)) { + // DDE links, OLE links + // offset: 0; size: 2; 0x0000 + // offset: 2; size: var; encoded source document name + $this->externalBooks[] = array( + 'type' => 'DDEorOLE', + ); + } + } + + + /** + * Read EXTERNNAME record. + */ + private function readExternName() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // external sheet references provided for named cells + if ($this->version == self::XLS_BIFF8) { + // offset: 0; size: 2; options + $options = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; + + // offset: 4; size: 2; not used + + // offset: 6; size: var + $nameString = self::readUnicodeStringShort(substr($recordData, 6)); + + // offset: var; size: var; formula data + $offset = 6 + $nameString['size']; + $formula = $this->getFormulaFromStructure(substr($recordData, $offset)); + + $this->externalNames[] = array( + 'name' => $nameString['value'], + 'formula' => $formula, + ); + } + } + + + /** + * Read EXTERNSHEET record + */ + private function readExternSheet() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // external sheet references provided for named cells + if ($this->version == self::XLS_BIFF8) { + // offset: 0; size: 2; number of following ref structures + $nm = self::getInt2d($recordData, 0); + for ($i = 0; $i < $nm; ++$i) { + $this->ref[] = array( + // offset: 2 + 6 * $i; index to EXTERNALBOOK record + 'externalBookIndex' => self::getInt2d($recordData, 2 + 6 * $i), + // offset: 4 + 6 * $i; index to first sheet in EXTERNALBOOK record + 'firstSheetIndex' => self::getInt2d($recordData, 4 + 6 * $i), + // offset: 6 + 6 * $i; index to last sheet in EXTERNALBOOK record + 'lastSheetIndex' => self::getInt2d($recordData, 6 + 6 * $i), + ); + } + } + } + + + /** + * DEFINEDNAME + * + * This record is part of a Link Table. It contains the name + * and the token array of an internal defined name. Token + * arrays of defined names contain tokens with aberrant + * token classes. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readDefinedName() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8) { + // retrieves named cells + + // offset: 0; size: 2; option flags + $opts = self::getInt2d($recordData, 0); + + // bit: 5; mask: 0x0020; 0 = user-defined name, 1 = built-in-name + $isBuiltInName = (0x0020 & $opts) >> 5; + + // offset: 2; size: 1; keyboard shortcut + + // offset: 3; size: 1; length of the name (character count) + $nlen = ord($recordData{3}); + + // offset: 4; size: 2; size of the formula data (it can happen that this is zero) + // note: there can also be additional data, this is not included in $flen + $flen = self::getInt2d($recordData, 4); + + // offset: 8; size: 2; 0=Global name, otherwise index to sheet (1-based) + $scope = self::getInt2d($recordData, 8); + + // offset: 14; size: var; Name (Unicode string without length field) + $string = self::readUnicodeString(substr($recordData, 14), $nlen); + + // offset: var; size: $flen; formula data + $offset = 14 + $string['size']; + $formulaStructure = pack('v', $flen) . substr($recordData, $offset); + + try { + $formula = $this->getFormulaFromStructure($formulaStructure); + } catch (PHPExcel_Exception $e) { + $formula = ''; + } + + $this->definedname[] = array( + 'isBuiltInName' => $isBuiltInName, + 'name' => $string['value'], + 'formula' => $formula, + 'scope' => $scope, + ); + } + } + + + /** + * Read MSODRAWINGGROUP record + */ + private function readMsoDrawingGroup() + { + $length = self::getInt2d($this->data, $this->pos + 2); + + // get spliced record data + $splicedRecordData = $this->getSplicedRecordData(); + $recordData = $splicedRecordData['recordData']; + + $this->drawingGroupData .= $recordData; + } + + + /** + * SST - Shared String Table + * + * This record contains a list of all strings used anywhere + * in the workbook. Each string occurs only once. The + * workbook uses indexes into the list to reference the + * strings. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + **/ + private function readSst() + { + // offset within (spliced) record data + $pos = 0; + + // get spliced record data + $splicedRecordData = $this->getSplicedRecordData(); + + $recordData = $splicedRecordData['recordData']; + $spliceOffsets = $splicedRecordData['spliceOffsets']; + + // offset: 0; size: 4; total number of strings in the workbook + $pos += 4; + + // offset: 4; size: 4; number of following strings ($nm) + $nm = self::getInt4d($recordData, 4); + $pos += 4; + + // loop through the Unicode strings (16-bit length) + for ($i = 0; $i < $nm; ++$i) { + // number of characters in the Unicode string + $numChars = self::getInt2d($recordData, $pos); + $pos += 2; + + // option flags + $optionFlags = ord($recordData{$pos}); + ++$pos; + + // bit: 0; mask: 0x01; 0 = compressed; 1 = uncompressed + $isCompressed = (($optionFlags & 0x01) == 0) ; + + // bit: 2; mask: 0x02; 0 = ordinary; 1 = Asian phonetic + $hasAsian = (($optionFlags & 0x04) != 0); + + // bit: 3; mask: 0x03; 0 = ordinary; 1 = Rich-Text + $hasRichText = (($optionFlags & 0x08) != 0); + + if ($hasRichText) { + // number of Rich-Text formatting runs + $formattingRuns = self::getInt2d($recordData, $pos); + $pos += 2; + } + + if ($hasAsian) { + // size of Asian phonetic setting + $extendedRunLength = self::getInt4d($recordData, $pos); + $pos += 4; + } + + // expected byte length of character array if not split + $len = ($isCompressed) ? $numChars : $numChars * 2; + + // look up limit position + foreach ($spliceOffsets as $spliceOffset) { + // it can happen that the string is empty, therefore we need + // <= and not just < + if ($pos <= $spliceOffset) { + $limitpos = $spliceOffset; + break; + } + } + + if ($pos + $len <= $limitpos) { + // character array is not split between records + + $retstr = substr($recordData, $pos, $len); + $pos += $len; + } else { + // character array is split between records + + // first part of character array + $retstr = substr($recordData, $pos, $limitpos - $pos); + + $bytesRead = $limitpos - $pos; + + // remaining characters in Unicode string + $charsLeft = $numChars - (($isCompressed) ? $bytesRead : ($bytesRead / 2)); + + $pos = $limitpos; + + // keep reading the characters + while ($charsLeft > 0) { + // look up next limit position, in case the string span more than one continue record + foreach ($spliceOffsets as $spliceOffset) { + if ($pos < $spliceOffset) { + $limitpos = $spliceOffset; + break; + } + } + + // repeated option flags + // OpenOffice.org documentation 5.21 + $option = ord($recordData{$pos}); + ++$pos; + + if ($isCompressed && ($option == 0)) { + // 1st fragment compressed + // this fragment compressed + $len = min($charsLeft, $limitpos - $pos); + $retstr .= substr($recordData, $pos, $len); + $charsLeft -= $len; + $isCompressed = true; + } elseif (!$isCompressed && ($option != 0)) { + // 1st fragment uncompressed + // this fragment uncompressed + $len = min($charsLeft * 2, $limitpos - $pos); + $retstr .= substr($recordData, $pos, $len); + $charsLeft -= $len / 2; + $isCompressed = false; + } elseif (!$isCompressed && ($option == 0)) { + // 1st fragment uncompressed + // this fragment compressed + $len = min($charsLeft, $limitpos - $pos); + for ($j = 0; $j < $len; ++$j) { + $retstr .= $recordData{$pos + $j} . chr(0); + } + $charsLeft -= $len; + $isCompressed = false; + } else { + // 1st fragment compressed + // this fragment uncompressed + $newstr = ''; + for ($j = 0; $j < strlen($retstr); ++$j) { + $newstr .= $retstr[$j] . chr(0); + } + $retstr = $newstr; + $len = min($charsLeft * 2, $limitpos - $pos); + $retstr .= substr($recordData, $pos, $len); + $charsLeft -= $len / 2; + $isCompressed = false; + } + + $pos += $len; + } + } + + // convert to UTF-8 + $retstr = self::encodeUTF16($retstr, $isCompressed); + + // read additional Rich-Text information, if any + $fmtRuns = array(); + if ($hasRichText) { + // list of formatting runs + for ($j = 0; $j < $formattingRuns; ++$j) { + // first formatted character; zero-based + $charPos = self::getInt2d($recordData, $pos + $j * 4); + + // index to font record + $fontIndex = self::getInt2d($recordData, $pos + 2 + $j * 4); + + $fmtRuns[] = array( + 'charPos' => $charPos, + 'fontIndex' => $fontIndex, + ); + } + $pos += 4 * $formattingRuns; + } + + // read additional Asian phonetics information, if any + if ($hasAsian) { + // For Asian phonetic settings, we skip the extended string data + $pos += $extendedRunLength; + } + + // store the shared sting + $this->sst[] = array( + 'value' => $retstr, + 'fmtRuns' => $fmtRuns, + ); + } + + // getSplicedRecordData() takes care of moving current position in data stream + } + + + /** + * Read PRINTGRIDLINES record + */ + private function readPrintGridlines() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { + // offset: 0; size: 2; 0 = do not print sheet grid lines; 1 = print sheet gridlines + $printGridlines = (bool) self::getInt2d($recordData, 0); + $this->phpSheet->setPrintGridlines($printGridlines); + } + } + + + /** + * Read DEFAULTROWHEIGHT record + */ + private function readDefaultRowHeight() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; option flags + // offset: 2; size: 2; default height for unused rows, (twips 1/20 point) + $height = self::getInt2d($recordData, 2); + $this->phpSheet->getDefaultRowDimension()->setRowHeight($height / 20); + } + + + /** + * Read SHEETPR record + */ + private function readSheetPr() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2 + + // bit: 6; mask: 0x0040; 0 = outline buttons above outline group + $isSummaryBelow = (0x0040 & self::getInt2d($recordData, 0)) >> 6; + $this->phpSheet->setShowSummaryBelow($isSummaryBelow); + + // bit: 7; mask: 0x0080; 0 = outline buttons left of outline group + $isSummaryRight = (0x0080 & self::getInt2d($recordData, 0)) >> 7; + $this->phpSheet->setShowSummaryRight($isSummaryRight); + + // bit: 8; mask: 0x100; 0 = scale printout in percent, 1 = fit printout to number of pages + // this corresponds to radio button setting in page setup dialog in Excel + $this->isFitToPages = (bool) ((0x0100 & self::getInt2d($recordData, 0)) >> 8); + } + + + /** + * Read HORIZONTALPAGEBREAKS record + */ + private function readHorizontalPageBreaks() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { + // offset: 0; size: 2; number of the following row index structures + $nm = self::getInt2d($recordData, 0); + + // offset: 2; size: 6 * $nm; list of $nm row index structures + for ($i = 0; $i < $nm; ++$i) { + $r = self::getInt2d($recordData, 2 + 6 * $i); + $cf = self::getInt2d($recordData, 2 + 6 * $i + 2); + $cl = self::getInt2d($recordData, 2 + 6 * $i + 4); + + // not sure why two column indexes are necessary? + $this->phpSheet->setBreakByColumnAndRow($cf, $r, PHPExcel_Worksheet::BREAK_ROW); + } + } + } + + + /** + * Read VERTICALPAGEBREAKS record + */ + private function readVerticalPageBreaks() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { + // offset: 0; size: 2; number of the following column index structures + $nm = self::getInt2d($recordData, 0); + + // offset: 2; size: 6 * $nm; list of $nm row index structures + for ($i = 0; $i < $nm; ++$i) { + $c = self::getInt2d($recordData, 2 + 6 * $i); + $rf = self::getInt2d($recordData, 2 + 6 * $i + 2); + $rl = self::getInt2d($recordData, 2 + 6 * $i + 4); + + // not sure why two row indexes are necessary? + $this->phpSheet->setBreakByColumnAndRow($c, $rf, PHPExcel_Worksheet::BREAK_COLUMN); + } + } + } + + + /** + * Read HEADER record + */ + private function readHeader() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: var + // realized that $recordData can be empty even when record exists + if ($recordData) { + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringLong($recordData); + } else { + $string = $this->readByteStringShort($recordData); + } + + $this->phpSheet->getHeaderFooter()->setOddHeader($string['value']); + $this->phpSheet->getHeaderFooter()->setEvenHeader($string['value']); + } + } + } + + + /** + * Read FOOTER record + */ + private function readFooter() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: var + // realized that $recordData can be empty even when record exists + if ($recordData) { + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringLong($recordData); + } else { + $string = $this->readByteStringShort($recordData); + } + $this->phpSheet->getHeaderFooter()->setOddFooter($string['value']); + $this->phpSheet->getHeaderFooter()->setEvenFooter($string['value']); + } + } + } + + + /** + * Read HCENTER record + */ + private function readHcenter() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; 0 = print sheet left aligned, 1 = print sheet centered horizontally + $isHorizontalCentered = (bool) self::getInt2d($recordData, 0); + + $this->phpSheet->getPageSetup()->setHorizontalCentered($isHorizontalCentered); + } + } + + + /** + * Read VCENTER record + */ + private function readVcenter() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; 0 = print sheet aligned at top page border, 1 = print sheet vertically centered + $isVerticalCentered = (bool) self::getInt2d($recordData, 0); + + $this->phpSheet->getPageSetup()->setVerticalCentered($isVerticalCentered); + } + } + + + /** + * Read LEFTMARGIN record + */ + private function readLeftMargin() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 8 + $this->phpSheet->getPageMargins()->setLeft(self::extractNumber($recordData)); + } + } + + + /** + * Read RIGHTMARGIN record + */ + private function readRightMargin() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 8 + $this->phpSheet->getPageMargins()->setRight(self::extractNumber($recordData)); + } + } + + + /** + * Read TOPMARGIN record + */ + private function readTopMargin() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 8 + $this->phpSheet->getPageMargins()->setTop(self::extractNumber($recordData)); + } + } + + + /** + * Read BOTTOMMARGIN record + */ + private function readBottomMargin() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 8 + $this->phpSheet->getPageMargins()->setBottom(self::extractNumber($recordData)); + } + } + + + /** + * Read PAGESETUP record + */ + private function readPageSetup() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; paper size + $paperSize = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; scaling factor + $scale = self::getInt2d($recordData, 2); + + // offset: 6; size: 2; fit worksheet width to this number of pages, 0 = use as many as needed + $fitToWidth = self::getInt2d($recordData, 6); + + // offset: 8; size: 2; fit worksheet height to this number of pages, 0 = use as many as needed + $fitToHeight = self::getInt2d($recordData, 8); + + // offset: 10; size: 2; option flags + + // bit: 1; mask: 0x0002; 0=landscape, 1=portrait + $isPortrait = (0x0002 & self::getInt2d($recordData, 10)) >> 1; + + // bit: 2; mask: 0x0004; 1= paper size, scaling factor, paper orient. not init + // when this bit is set, do not use flags for those properties + $isNotInit = (0x0004 & self::getInt2d($recordData, 10)) >> 2; + + if (!$isNotInit) { + $this->phpSheet->getPageSetup()->setPaperSize($paperSize); + switch ($isPortrait) { + case 0: + $this->phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); + break; + case 1: + $this->phpSheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); + break; + } + + $this->phpSheet->getPageSetup()->setScale($scale, false); + $this->phpSheet->getPageSetup()->setFitToPage((bool) $this->isFitToPages); + $this->phpSheet->getPageSetup()->setFitToWidth($fitToWidth, false); + $this->phpSheet->getPageSetup()->setFitToHeight($fitToHeight, false); + } + + // offset: 16; size: 8; header margin (IEEE 754 floating-point value) + $marginHeader = self::extractNumber(substr($recordData, 16, 8)); + $this->phpSheet->getPageMargins()->setHeader($marginHeader); + + // offset: 24; size: 8; footer margin (IEEE 754 floating-point value) + $marginFooter = self::extractNumber(substr($recordData, 24, 8)); + $this->phpSheet->getPageMargins()->setFooter($marginFooter); + } + } + + + /** + * PROTECT - Sheet protection (BIFF2 through BIFF8) + * if this record is omitted, then it also means no sheet protection + */ + private function readProtect() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // offset: 0; size: 2; + + // bit 0, mask 0x01; 1 = sheet is protected + $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; + $this->phpSheet->getProtection()->setSheet((bool)$bool); + } + + + /** + * SCENPROTECT + */ + private function readScenProtect() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // offset: 0; size: 2; + + // bit: 0, mask 0x01; 1 = scenarios are protected + $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; + + $this->phpSheet->getProtection()->setScenarios((bool)$bool); + } + + + /** + * OBJECTPROTECT + */ + private function readObjectProtect() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // offset: 0; size: 2; + + // bit: 0, mask 0x01; 1 = objects are protected + $bool = (0x01 & self::getInt2d($recordData, 0)) >> 0; + + $this->phpSheet->getProtection()->setObjects((bool)$bool); + } + + + /** + * PASSWORD - Sheet protection (hashed) password (BIFF2 through BIFF8) + */ + private function readPassword() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; 16-bit hash value of password + $password = strtoupper(dechex(self::getInt2d($recordData, 0))); // the hashed password + $this->phpSheet->getProtection()->setPassword($password, true); + } + } + + + /** + * Read DEFCOLWIDTH record + */ + private function readDefColWidth() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; default column width + $width = self::getInt2d($recordData, 0); + if ($width != 8) { + $this->phpSheet->getDefaultColumnDimension()->setWidth($width); + } + } + + + /** + * Read COLINFO record + */ + private function readColInfo() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; index to first column in range + $fc = self::getInt2d($recordData, 0); // first column index + + // offset: 2; size: 2; index to last column in range + $lc = self::getInt2d($recordData, 2); // first column index + + // offset: 4; size: 2; width of the column in 1/256 of the width of the zero character + $width = self::getInt2d($recordData, 4); + + // offset: 6; size: 2; index to XF record for default column formatting + $xfIndex = self::getInt2d($recordData, 6); + + // offset: 8; size: 2; option flags + // bit: 0; mask: 0x0001; 1= columns are hidden + $isHidden = (0x0001 & self::getInt2d($recordData, 8)) >> 0; + + // bit: 10-8; mask: 0x0700; outline level of the columns (0 = no outline) + $level = (0x0700 & self::getInt2d($recordData, 8)) >> 8; + + // bit: 12; mask: 0x1000; 1 = collapsed + $isCollapsed = (0x1000 & self::getInt2d($recordData, 8)) >> 12; + + // offset: 10; size: 2; not used + + for ($i = $fc; $i <= $lc; ++$i) { + if ($lc == 255 || $lc == 256) { + $this->phpSheet->getDefaultColumnDimension()->setWidth($width / 256); + break; + } + $this->phpSheet->getColumnDimensionByColumn($i)->setWidth($width / 256); + $this->phpSheet->getColumnDimensionByColumn($i)->setVisible(!$isHidden); + $this->phpSheet->getColumnDimensionByColumn($i)->setOutlineLevel($level); + $this->phpSheet->getColumnDimensionByColumn($i)->setCollapsed($isCollapsed); + $this->phpSheet->getColumnDimensionByColumn($i)->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + + /** + * ROW + * + * This record contains the properties of a single row in a + * sheet. Rows and cells in a sheet are divided into blocks + * of 32 rows. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readRow() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; index of this row + $r = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to column of the first cell which is described by a cell record + + // offset: 4; size: 2; index to column of the last cell which is described by a cell record, increased by 1 + + // offset: 6; size: 2; + + // bit: 14-0; mask: 0x7FFF; height of the row, in twips = 1/20 of a point + $height = (0x7FFF & self::getInt2d($recordData, 6)) >> 0; + + // bit: 15: mask: 0x8000; 0 = row has custom height; 1= row has default height + $useDefaultHeight = (0x8000 & self::getInt2d($recordData, 6)) >> 15; + + if (!$useDefaultHeight) { + $this->phpSheet->getRowDimension($r + 1)->setRowHeight($height / 20); + } + + // offset: 8; size: 2; not used + + // offset: 10; size: 2; not used in BIFF5-BIFF8 + + // offset: 12; size: 4; option flags and default row formatting + + // bit: 2-0: mask: 0x00000007; outline level of the row + $level = (0x00000007 & self::getInt4d($recordData, 12)) >> 0; + $this->phpSheet->getRowDimension($r + 1)->setOutlineLevel($level); + + // bit: 4; mask: 0x00000010; 1 = outline group start or ends here... and is collapsed + $isCollapsed = (0x00000010 & self::getInt4d($recordData, 12)) >> 4; + $this->phpSheet->getRowDimension($r + 1)->setCollapsed($isCollapsed); + + // bit: 5; mask: 0x00000020; 1 = row is hidden + $isHidden = (0x00000020 & self::getInt4d($recordData, 12)) >> 5; + $this->phpSheet->getRowDimension($r + 1)->setVisible(!$isHidden); + + // bit: 7; mask: 0x00000080; 1 = row has explicit format + $hasExplicitFormat = (0x00000080 & self::getInt4d($recordData, 12)) >> 7; + + // bit: 27-16; mask: 0x0FFF0000; only applies when hasExplicitFormat = 1; index to XF record + $xfIndex = (0x0FFF0000 & self::getInt4d($recordData, 12)) >> 16; + + if ($hasExplicitFormat) { + $this->phpSheet->getRowDimension($r + 1)->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + + /** + * Read RK record + * This record represents a cell that contains an RK value + * (encoded integer or floating-point value). If a + * floating-point value cannot be encoded to an RK value, + * a NUMBER record will be written. This record replaces the + * record INTEGER written in BIFF2. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readRk() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to column + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: 4; size: 2; index to XF record + $xfIndex = self::getInt2d($recordData, 4); + + // offset: 6; size: 4; RK value + $rknum = self::getInt4d($recordData, 6); + $numValue = self::getIEEE754($rknum); + + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + if (!$this->readDataOnly) { + // add style information + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + + // add cell + $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); + } + } + + + /** + * Read LABELSST record + * This record represents a cell that contains a string. It + * replaces the LABEL record and RSTRING record used in + * BIFF2-BIFF5. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readLabelSst() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to column + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + $emptyCell = true; + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: 4; size: 2; index to XF record + $xfIndex = self::getInt2d($recordData, 4); + + // offset: 6; size: 4; index to SST record + $index = self::getInt4d($recordData, 6); + + // add cell + if (($fmtRuns = $this->sst[$index]['fmtRuns']) && !$this->readDataOnly) { + // then we should treat as rich text + $richText = new PHPExcel_RichText(); + $charPos = 0; + $sstCount = count($this->sst[$index]['fmtRuns']); + for ($i = 0; $i <= $sstCount; ++$i) { + if (isset($fmtRuns[$i])) { + $text = PHPExcel_Shared_String::Substring($this->sst[$index]['value'], $charPos, $fmtRuns[$i]['charPos'] - $charPos); + $charPos = $fmtRuns[$i]['charPos']; + } else { + $text = PHPExcel_Shared_String::Substring($this->sst[$index]['value'], $charPos, PHPExcel_Shared_String::CountCharacters($this->sst[$index]['value'])); + } + + if (PHPExcel_Shared_String::CountCharacters($text) > 0) { + if ($i == 0) { // first text run, no style + $richText->createText($text); + } else { + $textRun = $richText->createTextRun($text); + if (isset($fmtRuns[$i - 1])) { + if ($fmtRuns[$i - 1]['fontIndex'] < 4) { + $fontIndex = $fmtRuns[$i - 1]['fontIndex']; + } else { + // this has to do with that index 4 is omitted in all BIFF versions for some strange reason + // check the OpenOffice documentation of the FONT record + $fontIndex = $fmtRuns[$i - 1]['fontIndex'] - 1; + } + $textRun->setFont(clone $this->objFonts[$fontIndex]); + } + } + } + } + if ($this->readEmptyCells || trim($richText->getPlainText()) !== '') { + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + $cell->setValueExplicit($richText, PHPExcel_Cell_DataType::TYPE_STRING); + $emptyCell = false; + } + } else { + if ($this->readEmptyCells || trim($this->sst[$index]['value']) !== '') { + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + $cell->setValueExplicit($this->sst[$index]['value'], PHPExcel_Cell_DataType::TYPE_STRING); + $emptyCell = false; + } + } + + if (!$this->readDataOnly && !$emptyCell) { + // add style information + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + + /** + * Read MULRK record + * This record represents a cell range containing RK value + * cells. All cells are located in the same row. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readMulRk() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to first column + $colFirst = self::getInt2d($recordData, 2); + + // offset: var; size: 2; index to last column + $colLast = self::getInt2d($recordData, $length - 2); + $columns = $colLast - $colFirst + 1; + + // offset within record data + $offset = 4; + + for ($i = 0; $i < $columns; ++$i) { + $columnString = PHPExcel_Cell::stringFromColumnIndex($colFirst + $i); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: var; size: 2; index to XF record + $xfIndex = self::getInt2d($recordData, $offset); + + // offset: var; size: 4; RK value + $numValue = self::getIEEE754(self::getInt4d($recordData, $offset + 2)); + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + if (!$this->readDataOnly) { + // add style + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + + // add cell value + $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); + } + + $offset += 6; + } + } + + + /** + * Read NUMBER record + * This record represents a cell that contains a + * floating-point value. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readNumber() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size 2; index to column + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset 4; size: 2; index to XF record + $xfIndex = self::getInt2d($recordData, 4); + + $numValue = self::extractNumber(substr($recordData, 6, 8)); + + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + if (!$this->readDataOnly) { + // add cell style + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + + // add cell value + $cell->setValueExplicit($numValue, PHPExcel_Cell_DataType::TYPE_NUMERIC); + } + } + + + /** + * Read FORMULA record + perhaps a following STRING record if formula result is a string + * This record contains the token array and the result of a + * formula cell. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readFormula() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; row index + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; col index + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + // offset: 20: size: variable; formula structure + $formulaStructure = substr($recordData, 20); + + // offset: 14: size: 2; option flags, recalculate always, recalculate on open etc. + $options = self::getInt2d($recordData, 14); + + // bit: 0; mask: 0x0001; 1 = recalculate always + // bit: 1; mask: 0x0002; 1 = calculate on open + // bit: 2; mask: 0x0008; 1 = part of a shared formula + $isPartOfSharedFormula = (bool) (0x0008 & $options); + + // WARNING: + // We can apparently not rely on $isPartOfSharedFormula. Even when $isPartOfSharedFormula = true + // the formula data may be ordinary formula data, therefore we need to check + // explicitly for the tExp token (0x01) + $isPartOfSharedFormula = $isPartOfSharedFormula && ord($formulaStructure{2}) == 0x01; + + if ($isPartOfSharedFormula) { + // part of shared formula which means there will be a formula with a tExp token and nothing else + // get the base cell, grab tExp token + $baseRow = self::getInt2d($formulaStructure, 3); + $baseCol = self::getInt2d($formulaStructure, 5); + $this->_baseCell = PHPExcel_Cell::stringFromColumnIndex($baseCol). ($baseRow + 1); + } + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + if ($isPartOfSharedFormula) { + // formula is added to this cell after the sheet has been read + $this->sharedFormulaParts[$columnString . ($row + 1)] = $this->_baseCell; + } + + // offset: 16: size: 4; not used + + // offset: 4; size: 2; XF index + $xfIndex = self::getInt2d($recordData, 4); + + // offset: 6; size: 8; result of the formula + if ((ord($recordData{6}) == 0) && (ord($recordData{12}) == 255) && (ord($recordData{13}) == 255)) { + // String formula. Result follows in appended STRING record + $dataType = PHPExcel_Cell_DataType::TYPE_STRING; + + // read possible SHAREDFMLA record + $code = self::getInt2d($this->data, $this->pos); + if ($code == self::XLS_TYPE_SHAREDFMLA) { + $this->readSharedFmla(); + } + + // read STRING record + $value = $this->readString(); + } elseif ((ord($recordData{6}) == 1) + && (ord($recordData{12}) == 255) + && (ord($recordData{13}) == 255)) { + // Boolean formula. Result is in +2; 0=false, 1=true + $dataType = PHPExcel_Cell_DataType::TYPE_BOOL; + $value = (bool) ord($recordData{8}); + } elseif ((ord($recordData{6}) == 2) + && (ord($recordData{12}) == 255) + && (ord($recordData{13}) == 255)) { + // Error formula. Error code is in +2 + $dataType = PHPExcel_Cell_DataType::TYPE_ERROR; + $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($recordData{8})); + } elseif ((ord($recordData{6}) == 3) + && (ord($recordData{12}) == 255) + && (ord($recordData{13}) == 255)) { + // Formula result is a null string + $dataType = PHPExcel_Cell_DataType::TYPE_NULL; + $value = ''; + } else { + // forumla result is a number, first 14 bytes like _NUMBER record + $dataType = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $value = self::extractNumber(substr($recordData, 6, 8)); + } + + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + if (!$this->readDataOnly) { + // add cell style + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + + // store the formula + if (!$isPartOfSharedFormula) { + // not part of shared formula + // add cell value. If we can read formula, populate with formula, otherwise just used cached value + try { + if ($this->version != self::XLS_BIFF8) { + throw new PHPExcel_Reader_Exception('Not BIFF8. Can only read BIFF8 formulas'); + } + $formula = $this->getFormulaFromStructure($formulaStructure); // get formula in human language + $cell->setValueExplicit('=' . $formula, PHPExcel_Cell_DataType::TYPE_FORMULA); + + } catch (PHPExcel_Exception $e) { + $cell->setValueExplicit($value, $dataType); + } + } else { + if ($this->version == self::XLS_BIFF8) { + // do nothing at this point, formula id added later in the code + } else { + $cell->setValueExplicit($value, $dataType); + } + } + + // store the cached calculated value + $cell->setCalculatedValue($value); + } + } + + + /** + * Read a SHAREDFMLA record. This function just stores the binary shared formula in the reader, + * which usually contains relative references. + * These will be used to construct the formula in each shared formula part after the sheet is read. + */ + private function readSharedFmla() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0, size: 6; cell range address of the area used by the shared formula, not used for anything + $cellRange = substr($recordData, 0, 6); + $cellRange = $this->readBIFF5CellRangeAddressFixed($cellRange); // note: even BIFF8 uses BIFF5 syntax + + // offset: 6, size: 1; not used + + // offset: 7, size: 1; number of existing FORMULA records for this shared formula + $no = ord($recordData{7}); + + // offset: 8, size: var; Binary token array of the shared formula + $formula = substr($recordData, 8); + + // at this point we only store the shared formula for later use + $this->sharedFormulas[$this->_baseCell] = $formula; + } + + + /** + * Read a STRING record from current stream position and advance the stream pointer to next record + * This record is used for storing result from FORMULA record when it is a string, and + * it occurs directly after the FORMULA record + * + * @return string The string contents as UTF-8 + */ + private function readString() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringLong($recordData); + $value = $string['value']; + } else { + $string = $this->readByteStringLong($recordData); + $value = $string['value']; + } + + return $value; + } + + + /** + * Read BOOLERR record + * This record represents a Boolean value or error value + * cell. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readBoolErr() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; row index + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; column index + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: 4; size: 2; index to XF record + $xfIndex = self::getInt2d($recordData, 4); + + // offset: 6; size: 1; the boolean value or error value + $boolErr = ord($recordData{6}); + + // offset: 7; size: 1; 0=boolean; 1=error + $isError = ord($recordData{7}); + + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + switch ($isError) { + case 0: // boolean + $value = (bool) $boolErr; + + // add cell value + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_BOOL); + break; + case 1: // error type + $value = PHPExcel_Reader_Excel5_ErrorCode::lookup($boolErr); + + // add cell value + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_ERROR); + break; + } + + if (!$this->readDataOnly) { + // add cell style + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + + /** + * Read MULBLANK record + * This record represents a cell range of empty cells. All + * cells are located in the same row + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readMulBlank() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to first column + $fc = self::getInt2d($recordData, 2); + + // offset: 4; size: 2 x nc; list of indexes to XF records + // add style information + if (!$this->readDataOnly && $this->readEmptyCells) { + for ($i = 0; $i < $length / 2 - 3; ++$i) { + $columnString = PHPExcel_Cell::stringFromColumnIndex($fc + $i); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + $xfIndex = self::getInt2d($recordData, 4 + 2 * $i); + $this->phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + // offset: 6; size 2; index to last column (not needed) + } + + + /** + * Read LABEL record + * This record represents a cell that contains a string. In + * BIFF8 it is usually replaced by the LABELSST record. + * Excel still uses this record, if it copies unformatted + * text cells to the clipboard. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readLabel() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; index to row + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to column + $column = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($column); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: 4; size: 2; XF index + $xfIndex = self::getInt2d($recordData, 4); + + // add cell value + // todo: what if string is very long? continue record + if ($this->version == self::XLS_BIFF8) { + $string = self::readUnicodeStringLong(substr($recordData, 6)); + $value = $string['value']; + } else { + $string = $this->readByteStringLong(substr($recordData, 6)); + $value = $string['value']; + } + if ($this->readEmptyCells || trim($value) !== '') { + $cell = $this->phpSheet->getCell($columnString . ($row + 1)); + $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); + + if (!$this->readDataOnly) { + // add cell style + $cell->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + } + + + /** + * Read BLANK record + */ + private function readBlank() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; row index + $row = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; col index + $col = self::getInt2d($recordData, 2); + $columnString = PHPExcel_Cell::stringFromColumnIndex($col); + + // Read cell? + if (($this->getReadFilter() !== null) && $this->getReadFilter()->readCell($columnString, $row + 1, $this->phpSheet->getTitle())) { + // offset: 4; size: 2; XF index + $xfIndex = self::getInt2d($recordData, 4); + + // add style information + if (!$this->readDataOnly && $this->readEmptyCells) { + $this->phpSheet->getCell($columnString . ($row + 1))->setXfIndex($this->mapCellXfIndex[$xfIndex]); + } + } + } + + + /** + * Read MSODRAWING record + */ + private function readMsoDrawing() + { + $length = self::getInt2d($this->data, $this->pos + 2); + + // get spliced record data + $splicedRecordData = $this->getSplicedRecordData(); + $recordData = $splicedRecordData['recordData']; + + $this->drawingData .= $recordData; + } + + + /** + * Read OBJ record + */ + private function readObj() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly || $this->version != self::XLS_BIFF8) { + return; + } + + // recordData consists of an array of subrecords looking like this: + // ft: 2 bytes; ftCmo type (0x15) + // cb: 2 bytes; size in bytes of ftCmo data + // ot: 2 bytes; Object Type + // id: 2 bytes; Object id number + // grbit: 2 bytes; Option Flags + // data: var; subrecord data + + // for now, we are just interested in the second subrecord containing the object type + $ftCmoType = self::getInt2d($recordData, 0); + $cbCmoSize = self::getInt2d($recordData, 2); + $otObjType = self::getInt2d($recordData, 4); + $idObjID = self::getInt2d($recordData, 6); + $grbitOpts = self::getInt2d($recordData, 6); + + $this->objs[] = array( + 'ftCmoType' => $ftCmoType, + 'cbCmoSize' => $cbCmoSize, + 'otObjType' => $otObjType, + 'idObjID' => $idObjID, + 'grbitOpts' => $grbitOpts + ); + $this->textObjRef = $idObjID; + +// echo '_readObj()
      '; +// var_dump(end($this->objs)); +// echo '
      '; + } + + + /** + * Read WINDOW2 record + */ + private function readWindow2() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; option flags + $options = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; index to first visible row + $firstVisibleRow = self::getInt2d($recordData, 2); + + // offset: 4; size: 2; index to first visible colum + $firstVisibleColumn = self::getInt2d($recordData, 4); + if ($this->version === self::XLS_BIFF8) { + // offset: 8; size: 2; not used + // offset: 10; size: 2; cached magnification factor in page break preview (in percent); 0 = Default (60%) + // offset: 12; size: 2; cached magnification factor in normal view (in percent); 0 = Default (100%) + // offset: 14; size: 4; not used + $zoomscaleInPageBreakPreview = self::getInt2d($recordData, 10); + if ($zoomscaleInPageBreakPreview === 0) { + $zoomscaleInPageBreakPreview = 60; + } + $zoomscaleInNormalView = self::getInt2d($recordData, 12); + if ($zoomscaleInNormalView === 0) { + $zoomscaleInNormalView = 100; + } + } + + // bit: 1; mask: 0x0002; 0 = do not show gridlines, 1 = show gridlines + $showGridlines = (bool) ((0x0002 & $options) >> 1); + $this->phpSheet->setShowGridlines($showGridlines); + + // bit: 2; mask: 0x0004; 0 = do not show headers, 1 = show headers + $showRowColHeaders = (bool) ((0x0004 & $options) >> 2); + $this->phpSheet->setShowRowColHeaders($showRowColHeaders); + + // bit: 3; mask: 0x0008; 0 = panes are not frozen, 1 = panes are frozen + $this->frozen = (bool) ((0x0008 & $options) >> 3); + + // bit: 6; mask: 0x0040; 0 = columns from left to right, 1 = columns from right to left + $this->phpSheet->setRightToLeft((bool)((0x0040 & $options) >> 6)); + + // bit: 10; mask: 0x0400; 0 = sheet not active, 1 = sheet active + $isActive = (bool) ((0x0400 & $options) >> 10); + if ($isActive) { + $this->phpExcel->setActiveSheetIndex($this->phpExcel->getIndex($this->phpSheet)); + } + + // bit: 11; mask: 0x0800; 0 = normal view, 1 = page break view + $isPageBreakPreview = (bool) ((0x0800 & $options) >> 11); + + //FIXME: set $firstVisibleRow and $firstVisibleColumn + + if ($this->phpSheet->getSheetView()->getView() !== PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT) { + //NOTE: this setting is inferior to page layout view(Excel2007-) + $view = $isPageBreakPreview ? PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_BREAK_PREVIEW : PHPExcel_Worksheet_SheetView::SHEETVIEW_NORMAL; + $this->phpSheet->getSheetView()->setView($view); + if ($this->version === self::XLS_BIFF8) { + $zoomScale = $isPageBreakPreview ? $zoomscaleInPageBreakPreview : $zoomscaleInNormalView; + $this->phpSheet->getSheetView()->setZoomScale($zoomScale); + $this->phpSheet->getSheetView()->setZoomScaleNormal($zoomscaleInNormalView); + } + } + } + + /** + * Read PLV Record(Created by Excel2007 or upper) + */ + private function readPageLayoutView() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + //var_dump(unpack("vrt/vgrbitFrt/V2reserved/vwScalePLV/vgrbit", $recordData)); + + // offset: 0; size: 2; rt + //->ignore + $rt = self::getInt2d($recordData, 0); + // offset: 2; size: 2; grbitfr + //->ignore + $grbitFrt = self::getInt2d($recordData, 2); + // offset: 4; size: 8; reserved + //->ignore + + // offset: 12; size 2; zoom scale + $wScalePLV = self::getInt2d($recordData, 12); + // offset: 14; size 2; grbit + $grbit = self::getInt2d($recordData, 14); + + // decomprise grbit + $fPageLayoutView = $grbit & 0x01; + $fRulerVisible = ($grbit >> 1) & 0x01; //no support + $fWhitespaceHidden = ($grbit >> 3) & 0x01; //no support + + if ($fPageLayoutView === 1) { + $this->phpSheet->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT); + $this->phpSheet->getSheetView()->setZoomScale($wScalePLV); //set by Excel2007 only if SHEETVIEW_PAGE_LAYOUT + } + //otherwise, we cannot know whether SHEETVIEW_PAGE_LAYOUT or SHEETVIEW_PAGE_BREAK_PREVIEW. + } + + /** + * Read SCL record + */ + private function readScl() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // offset: 0; size: 2; numerator of the view magnification + $numerator = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; numerator of the view magnification + $denumerator = self::getInt2d($recordData, 2); + + // set the zoom scale (in percent) + $this->phpSheet->getSheetView()->setZoomScale($numerator * 100 / $denumerator); + } + + + /** + * Read PANE record + */ + private function readPane() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; position of vertical split + $px = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; position of horizontal split + $py = self::getInt2d($recordData, 2); + + if ($this->frozen) { + // frozen panes + $this->phpSheet->freezePane(PHPExcel_Cell::stringFromColumnIndex($px) . ($py + 1)); + } else { + // unfrozen panes; split windows; not supported by PHPExcel core + } + } + } + + + /** + * Read SELECTION record. There is one such record for each pane in the sheet. + */ + private function readSelection() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 1; pane identifier + $paneId = ord($recordData{0}); + + // offset: 1; size: 2; index to row of the active cell + $r = self::getInt2d($recordData, 1); + + // offset: 3; size: 2; index to column of the active cell + $c = self::getInt2d($recordData, 3); + + // offset: 5; size: 2; index into the following cell range list to the + // entry that contains the active cell + $index = self::getInt2d($recordData, 5); + + // offset: 7; size: var; cell range address list containing all selected cell ranges + $data = substr($recordData, 7); + $cellRangeAddressList = $this->readBIFF5CellRangeAddressList($data); // note: also BIFF8 uses BIFF5 syntax + + $selectedCells = $cellRangeAddressList['cellRangeAddresses'][0]; + + // first row '1' + last row '16384' indicates that full column is selected (apparently also in BIFF8!) + if (preg_match('/^([A-Z]+1\:[A-Z]+)16384$/', $selectedCells)) { + $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)16384$/', '${1}1048576', $selectedCells); + } + + // first row '1' + last row '65536' indicates that full column is selected + if (preg_match('/^([A-Z]+1\:[A-Z]+)65536$/', $selectedCells)) { + $selectedCells = preg_replace('/^([A-Z]+1\:[A-Z]+)65536$/', '${1}1048576', $selectedCells); + } + + // first column 'A' + last column 'IV' indicates that full row is selected + if (preg_match('/^(A[0-9]+\:)IV([0-9]+)$/', $selectedCells)) { + $selectedCells = preg_replace('/^(A[0-9]+\:)IV([0-9]+)$/', '${1}XFD${2}', $selectedCells); + } + + $this->phpSheet->setSelectedCells($selectedCells); + } + } + + + private function includeCellRangeFiltered($cellRangeAddress) + { + $includeCellRange = true; + if ($this->getReadFilter() !== null) { + $includeCellRange = false; + $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($cellRangeAddress); + $rangeBoundaries[1][0]++; + for ($row = $rangeBoundaries[0][1]; $row <= $rangeBoundaries[1][1]; $row++) { + for ($column = $rangeBoundaries[0][0]; $column != $rangeBoundaries[1][0]; $column++) { + if ($this->getReadFilter()->readCell($column, $row, $this->phpSheet->getTitle())) { + $includeCellRange = true; + break 2; + } + } + } + } + return $includeCellRange; + } + + + /** + * MERGEDCELLS + * + * This record contains the addresses of merged cell ranges + * in the current sheet. + * + * -- "OpenOffice.org's Documentation of the Microsoft + * Excel File Format" + */ + private function readMergedCells() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->version == self::XLS_BIFF8 && !$this->readDataOnly) { + $cellRangeAddressList = $this->readBIFF8CellRangeAddressList($recordData); + foreach ($cellRangeAddressList['cellRangeAddresses'] as $cellRangeAddress) { + if ((strpos($cellRangeAddress, ':') !== false) && + ($this->includeCellRangeFiltered($cellRangeAddress))) { + $this->phpSheet->mergeCells($cellRangeAddress); + } + } + } + } + + + /** + * Read HYPERLINK record + */ + private function readHyperLink() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer forward to next record + $this->pos += 4 + $length; + + if (!$this->readDataOnly) { + // offset: 0; size: 8; cell range address of all cells containing this hyperlink + try { + $cellRange = $this->readBIFF8CellRangeAddressFixed($recordData, 0, 8); + } catch (PHPExcel_Exception $e) { + return; + } + + // offset: 8, size: 16; GUID of StdLink + + // offset: 24, size: 4; unknown value + + // offset: 28, size: 4; option flags + // bit: 0; mask: 0x00000001; 0 = no link or extant, 1 = file link or URL + $isFileLinkOrUrl = (0x00000001 & self::getInt2d($recordData, 28)) >> 0; + + // bit: 1; mask: 0x00000002; 0 = relative path, 1 = absolute path or URL + $isAbsPathOrUrl = (0x00000001 & self::getInt2d($recordData, 28)) >> 1; + + // bit: 2 (and 4); mask: 0x00000014; 0 = no description + $hasDesc = (0x00000014 & self::getInt2d($recordData, 28)) >> 2; + + // bit: 3; mask: 0x00000008; 0 = no text, 1 = has text + $hasText = (0x00000008 & self::getInt2d($recordData, 28)) >> 3; + + // bit: 7; mask: 0x00000080; 0 = no target frame, 1 = has target frame + $hasFrame = (0x00000080 & self::getInt2d($recordData, 28)) >> 7; + + // bit: 8; mask: 0x00000100; 0 = file link or URL, 1 = UNC path (inc. server name) + $isUNC = (0x00000100 & self::getInt2d($recordData, 28)) >> 8; + + // offset within record data + $offset = 32; + + if ($hasDesc) { + // offset: 32; size: var; character count of description text + $dl = self::getInt4d($recordData, 32); + // offset: 36; size: var; character array of description text, no Unicode string header, always 16-bit characters, zero terminated + $desc = self::encodeUTF16(substr($recordData, 36, 2 * ($dl - 1)), false); + $offset += 4 + 2 * $dl; + } + if ($hasFrame) { + $fl = self::getInt4d($recordData, $offset); + $offset += 4 + 2 * $fl; + } + + // detect type of hyperlink (there are 4 types) + $hyperlinkType = null; + + if ($isUNC) { + $hyperlinkType = 'UNC'; + } elseif (!$isFileLinkOrUrl) { + $hyperlinkType = 'workbook'; + } elseif (ord($recordData{$offset}) == 0x03) { + $hyperlinkType = 'local'; + } elseif (ord($recordData{$offset}) == 0xE0) { + $hyperlinkType = 'URL'; + } + + switch ($hyperlinkType) { + case 'URL': + // section 5.58.2: Hyperlink containing a URL + // e.g. http://example.org/index.php + + // offset: var; size: 16; GUID of URL Moniker + $offset += 16; + // offset: var; size: 4; size (in bytes) of character array of the URL including trailing zero word + $us = self::getInt4d($recordData, $offset); + $offset += 4; + // offset: var; size: $us; character array of the URL, no Unicode string header, always 16-bit characters, zero-terminated + $url = self::encodeUTF16(substr($recordData, $offset, $us - 2), false); + $nullOffset = strpos($url, 0x00); + if ($nullOffset) { + $url = substr($url, 0, $nullOffset); + } + $url .= $hasText ? '#' : ''; + $offset += $us; + break; + case 'local': + // section 5.58.3: Hyperlink to local file + // examples: + // mydoc.txt + // ../../somedoc.xls#Sheet!A1 + + // offset: var; size: 16; GUI of File Moniker + $offset += 16; + + // offset: var; size: 2; directory up-level count. + $upLevelCount = self::getInt2d($recordData, $offset); + $offset += 2; + + // offset: var; size: 4; character count of the shortened file path and name, including trailing zero word + $sl = self::getInt4d($recordData, $offset); + $offset += 4; + + // offset: var; size: sl; character array of the shortened file path and name in 8.3-DOS-format (compressed Unicode string) + $shortenedFilePath = substr($recordData, $offset, $sl); + $shortenedFilePath = self::encodeUTF16($shortenedFilePath, true); + $shortenedFilePath = substr($shortenedFilePath, 0, -1); // remove trailing zero + + $offset += $sl; + + // offset: var; size: 24; unknown sequence + $offset += 24; + + // extended file path + // offset: var; size: 4; size of the following file link field including string lenth mark + $sz = self::getInt4d($recordData, $offset); + $offset += 4; + + // only present if $sz > 0 + if ($sz > 0) { + // offset: var; size: 4; size of the character array of the extended file path and name + $xl = self::getInt4d($recordData, $offset); + $offset += 4; + + // offset: var; size 2; unknown + $offset += 2; + + // offset: var; size $xl; character array of the extended file path and name. + $extendedFilePath = substr($recordData, $offset, $xl); + $extendedFilePath = self::encodeUTF16($extendedFilePath, false); + $offset += $xl; + } + + // construct the path + $url = str_repeat('..\\', $upLevelCount); + $url .= ($sz > 0) ? $extendedFilePath : $shortenedFilePath; // use extended path if available + $url .= $hasText ? '#' : ''; + + break; + case 'UNC': + // section 5.58.4: Hyperlink to a File with UNC (Universal Naming Convention) Path + // todo: implement + return; + case 'workbook': + // section 5.58.5: Hyperlink to the Current Workbook + // e.g. Sheet2!B1:C2, stored in text mark field + $url = 'sheet://'; + break; + default: + return; + } + + if ($hasText) { + // offset: var; size: 4; character count of text mark including trailing zero word + $tl = self::getInt4d($recordData, $offset); + $offset += 4; + // offset: var; size: var; character array of the text mark without the # sign, no Unicode header, always 16-bit characters, zero-terminated + $text = self::encodeUTF16(substr($recordData, $offset, 2 * ($tl - 1)), false); + $url .= $text; + } + + // apply the hyperlink to all the relevant cells + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cellRange) as $coordinate) { + $this->phpSheet->getCell($coordinate)->getHyperLink()->setUrl($url); + } + } + } + + + /** + * Read DATAVALIDATIONS record + */ + private function readDataValidations() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer forward to next record + $this->pos += 4 + $length; + } + + + /** + * Read DATAVALIDATION record + */ + private function readDataValidation() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer forward to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // offset: 0; size: 4; Options + $options = self::getInt4d($recordData, 0); + + // bit: 0-3; mask: 0x0000000F; type + $type = (0x0000000F & $options) >> 0; + switch ($type) { + case 0x00: + $type = PHPExcel_Cell_DataValidation::TYPE_NONE; + break; + case 0x01: + $type = PHPExcel_Cell_DataValidation::TYPE_WHOLE; + break; + case 0x02: + $type = PHPExcel_Cell_DataValidation::TYPE_DECIMAL; + break; + case 0x03: + $type = PHPExcel_Cell_DataValidation::TYPE_LIST; + break; + case 0x04: + $type = PHPExcel_Cell_DataValidation::TYPE_DATE; + break; + case 0x05: + $type = PHPExcel_Cell_DataValidation::TYPE_TIME; + break; + case 0x06: + $type = PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH; + break; + case 0x07: + $type = PHPExcel_Cell_DataValidation::TYPE_CUSTOM; + break; + } + + // bit: 4-6; mask: 0x00000070; error type + $errorStyle = (0x00000070 & $options) >> 4; + switch ($errorStyle) { + case 0x00: + $errorStyle = PHPExcel_Cell_DataValidation::STYLE_STOP; + break; + case 0x01: + $errorStyle = PHPExcel_Cell_DataValidation::STYLE_WARNING; + break; + case 0x02: + $errorStyle = PHPExcel_Cell_DataValidation::STYLE_INFORMATION; + break; + } + + // bit: 7; mask: 0x00000080; 1= formula is explicit (only applies to list) + // I have only seen cases where this is 1 + $explicitFormula = (0x00000080 & $options) >> 7; + + // bit: 8; mask: 0x00000100; 1= empty cells allowed + $allowBlank = (0x00000100 & $options) >> 8; + + // bit: 9; mask: 0x00000200; 1= suppress drop down arrow in list type validity + $suppressDropDown = (0x00000200 & $options) >> 9; + + // bit: 18; mask: 0x00040000; 1= show prompt box if cell selected + $showInputMessage = (0x00040000 & $options) >> 18; + + // bit: 19; mask: 0x00080000; 1= show error box if invalid values entered + $showErrorMessage = (0x00080000 & $options) >> 19; + + // bit: 20-23; mask: 0x00F00000; condition operator + $operator = (0x00F00000 & $options) >> 20; + switch ($operator) { + case 0x00: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN; + break; + case 0x01: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN; + break; + case 0x02: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_EQUAL; + break; + case 0x03: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL; + break; + case 0x04: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN; + break; + case 0x05: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN; + break; + case 0x06: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL; + break; + case 0x07: + $operator = PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL; + break; + } + + // offset: 4; size: var; title of the prompt box + $offset = 4; + $string = self::readUnicodeStringLong(substr($recordData, $offset)); + $promptTitle = $string['value'] !== chr(0) ? $string['value'] : ''; + $offset += $string['size']; + + // offset: var; size: var; title of the error box + $string = self::readUnicodeStringLong(substr($recordData, $offset)); + $errorTitle = $string['value'] !== chr(0) ? $string['value'] : ''; + $offset += $string['size']; + + // offset: var; size: var; text of the prompt box + $string = self::readUnicodeStringLong(substr($recordData, $offset)); + $prompt = $string['value'] !== chr(0) ? $string['value'] : ''; + $offset += $string['size']; + + // offset: var; size: var; text of the error box + $string = self::readUnicodeStringLong(substr($recordData, $offset)); + $error = $string['value'] !== chr(0) ? $string['value'] : ''; + $offset += $string['size']; + + // offset: var; size: 2; size of the formula data for the first condition + $sz1 = self::getInt2d($recordData, $offset); + $offset += 2; + + // offset: var; size: 2; not used + $offset += 2; + + // offset: var; size: $sz1; formula data for first condition (without size field) + $formula1 = substr($recordData, $offset, $sz1); + $formula1 = pack('v', $sz1) . $formula1; // prepend the length + try { + $formula1 = $this->getFormulaFromStructure($formula1); + + // in list type validity, null characters are used as item separators + if ($type == PHPExcel_Cell_DataValidation::TYPE_LIST) { + $formula1 = str_replace(chr(0), ',', $formula1); + } + } catch (PHPExcel_Exception $e) { + return; + } + $offset += $sz1; + + // offset: var; size: 2; size of the formula data for the first condition + $sz2 = self::getInt2d($recordData, $offset); + $offset += 2; + + // offset: var; size: 2; not used + $offset += 2; + + // offset: var; size: $sz2; formula data for second condition (without size field) + $formula2 = substr($recordData, $offset, $sz2); + $formula2 = pack('v', $sz2) . $formula2; // prepend the length + try { + $formula2 = $this->getFormulaFromStructure($formula2); + } catch (PHPExcel_Exception $e) { + return; + } + $offset += $sz2; + + // offset: var; size: var; cell range address list with + $cellRangeAddressList = $this->readBIFF8CellRangeAddressList(substr($recordData, $offset)); + $cellRangeAddresses = $cellRangeAddressList['cellRangeAddresses']; + + foreach ($cellRangeAddresses as $cellRange) { + $stRange = $this->phpSheet->shrinkRangeToFit($cellRange); + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($stRange) as $coordinate) { + $objValidation = $this->phpSheet->getCell($coordinate)->getDataValidation(); + $objValidation->setType($type); + $objValidation->setErrorStyle($errorStyle); + $objValidation->setAllowBlank((bool)$allowBlank); + $objValidation->setShowInputMessage((bool)$showInputMessage); + $objValidation->setShowErrorMessage((bool)$showErrorMessage); + $objValidation->setShowDropDown(!$suppressDropDown); + $objValidation->setOperator($operator); + $objValidation->setErrorTitle($errorTitle); + $objValidation->setError($error); + $objValidation->setPromptTitle($promptTitle); + $objValidation->setPrompt($prompt); + $objValidation->setFormula1($formula1); + $objValidation->setFormula2($formula2); + } + } + } + + /** + * Read SHEETLAYOUT record. Stores sheet tab color information. + */ + private function readSheetLayout() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // local pointer in record data + $offset = 0; + + if (!$this->readDataOnly) { + // offset: 0; size: 2; repeated record identifier 0x0862 + + // offset: 2; size: 10; not used + + // offset: 12; size: 4; size of record data + // Excel 2003 uses size of 0x14 (documented), Excel 2007 uses size of 0x28 (not documented?) + $sz = self::getInt4d($recordData, 12); + + switch ($sz) { + case 0x14: + // offset: 16; size: 2; color index for sheet tab + $colorIndex = self::getInt2d($recordData, 16); + $color = PHPExcel_Reader_Excel5_Color::map($colorIndex, $this->palette, $this->version); + $this->phpSheet->getTabColor()->setRGB($color['rgb']); + break; + case 0x28: + // TODO: Investigate structure for .xls SHEETLAYOUT record as saved by MS Office Excel 2007 + return; + break; + } + } + } + + + /** + * Read SHEETPROTECTION record (FEATHEADR) + */ + private function readSheetProtection() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + if ($this->readDataOnly) { + return; + } + + // offset: 0; size: 2; repeated record header + + // offset: 2; size: 2; FRT cell reference flag (=0 currently) + + // offset: 4; size: 8; Currently not used and set to 0 + + // offset: 12; size: 2; Shared feature type index (2=Enhanced Protetion, 4=SmartTag) + $isf = self::getInt2d($recordData, 12); + if ($isf != 2) { + return; + } + + // offset: 14; size: 1; =1 since this is a feat header + + // offset: 15; size: 4; size of rgbHdrSData + + // rgbHdrSData, assume "Enhanced Protection" + // offset: 19; size: 2; option flags + $options = self::getInt2d($recordData, 19); + + // bit: 0; mask 0x0001; 1 = user may edit objects, 0 = users must not edit objects + $bool = (0x0001 & $options) >> 0; + $this->phpSheet->getProtection()->setObjects(!$bool); + + // bit: 1; mask 0x0002; edit scenarios + $bool = (0x0002 & $options) >> 1; + $this->phpSheet->getProtection()->setScenarios(!$bool); + + // bit: 2; mask 0x0004; format cells + $bool = (0x0004 & $options) >> 2; + $this->phpSheet->getProtection()->setFormatCells(!$bool); + + // bit: 3; mask 0x0008; format columns + $bool = (0x0008 & $options) >> 3; + $this->phpSheet->getProtection()->setFormatColumns(!$bool); + + // bit: 4; mask 0x0010; format rows + $bool = (0x0010 & $options) >> 4; + $this->phpSheet->getProtection()->setFormatRows(!$bool); + + // bit: 5; mask 0x0020; insert columns + $bool = (0x0020 & $options) >> 5; + $this->phpSheet->getProtection()->setInsertColumns(!$bool); + + // bit: 6; mask 0x0040; insert rows + $bool = (0x0040 & $options) >> 6; + $this->phpSheet->getProtection()->setInsertRows(!$bool); + + // bit: 7; mask 0x0080; insert hyperlinks + $bool = (0x0080 & $options) >> 7; + $this->phpSheet->getProtection()->setInsertHyperlinks(!$bool); + + // bit: 8; mask 0x0100; delete columns + $bool = (0x0100 & $options) >> 8; + $this->phpSheet->getProtection()->setDeleteColumns(!$bool); + + // bit: 9; mask 0x0200; delete rows + $bool = (0x0200 & $options) >> 9; + $this->phpSheet->getProtection()->setDeleteRows(!$bool); + + // bit: 10; mask 0x0400; select locked cells + $bool = (0x0400 & $options) >> 10; + $this->phpSheet->getProtection()->setSelectLockedCells(!$bool); + + // bit: 11; mask 0x0800; sort cell range + $bool = (0x0800 & $options) >> 11; + $this->phpSheet->getProtection()->setSort(!$bool); + + // bit: 12; mask 0x1000; auto filter + $bool = (0x1000 & $options) >> 12; + $this->phpSheet->getProtection()->setAutoFilter(!$bool); + + // bit: 13; mask 0x2000; pivot tables + $bool = (0x2000 & $options) >> 13; + $this->phpSheet->getProtection()->setPivotTables(!$bool); + + // bit: 14; mask 0x4000; select unlocked cells + $bool = (0x4000 & $options) >> 14; + $this->phpSheet->getProtection()->setSelectUnlockedCells(!$bool); + + // offset: 21; size: 2; not used + } + + + /** + * Read RANGEPROTECTION record + * Reading of this record is based on Microsoft Office Excel 97-2000 Binary File Format Specification, + * where it is referred to as FEAT record + */ + private function readRangeProtection() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // move stream pointer to next record + $this->pos += 4 + $length; + + // local pointer in record data + $offset = 0; + + if (!$this->readDataOnly) { + $offset += 12; + + // offset: 12; size: 2; shared feature type, 2 = enhanced protection, 4 = smart tag + $isf = self::getInt2d($recordData, 12); + if ($isf != 2) { + // we only read FEAT records of type 2 + return; + } + $offset += 2; + + $offset += 5; + + // offset: 19; size: 2; count of ref ranges this feature is on + $cref = self::getInt2d($recordData, 19); + $offset += 2; + + $offset += 6; + + // offset: 27; size: 8 * $cref; list of cell ranges (like in hyperlink record) + $cellRanges = array(); + for ($i = 0; $i < $cref; ++$i) { + try { + $cellRange = $this->readBIFF8CellRangeAddressFixed(substr($recordData, 27 + 8 * $i, 8)); + } catch (PHPExcel_Exception $e) { + return; + } + $cellRanges[] = $cellRange; + $offset += 8; + } + + // offset: var; size: var; variable length of feature specific data + $rgbFeat = substr($recordData, $offset); + $offset += 4; + + // offset: var; size: 4; the encrypted password (only 16-bit although field is 32-bit) + $wPassword = self::getInt4d($recordData, $offset); + $offset += 4; + + // Apply range protection to sheet + if ($cellRanges) { + $this->phpSheet->protectCells(implode(' ', $cellRanges), strtoupper(dechex($wPassword)), true); + } + } + } + + + /** + * Read IMDATA record + */ + private function readImData() + { + $length = self::getInt2d($this->data, $this->pos + 2); + + // get spliced record data + $splicedRecordData = $this->getSplicedRecordData(); + $recordData = $splicedRecordData['recordData']; + + // UNDER CONSTRUCTION + + // offset: 0; size: 2; image format + $cf = self::getInt2d($recordData, 0); + + // offset: 2; size: 2; environment from which the file was written + $env = self::getInt2d($recordData, 2); + + // offset: 4; size: 4; length of the image data + $lcb = self::getInt4d($recordData, 4); + + // offset: 8; size: var; image data + $iData = substr($recordData, 8); + + switch ($cf) { + case 0x09: // Windows bitmap format + // BITMAPCOREINFO + // 1. BITMAPCOREHEADER + // offset: 0; size: 4; bcSize, Specifies the number of bytes required by the structure + $bcSize = self::getInt4d($iData, 0); + // var_dump($bcSize); + + // offset: 4; size: 2; bcWidth, specifies the width of the bitmap, in pixels + $bcWidth = self::getInt2d($iData, 4); + // var_dump($bcWidth); + + // offset: 6; size: 2; bcHeight, specifies the height of the bitmap, in pixels. + $bcHeight = self::getInt2d($iData, 6); + // var_dump($bcHeight); + $ih = imagecreatetruecolor($bcWidth, $bcHeight); + + // offset: 8; size: 2; bcPlanes, specifies the number of planes for the target device. This value must be 1 + + // offset: 10; size: 2; bcBitCount specifies the number of bits-per-pixel. This value must be 1, 4, 8, or 24 + $bcBitCount = self::getInt2d($iData, 10); + // var_dump($bcBitCount); + + $rgbString = substr($iData, 12); + $rgbTriples = array(); + while (strlen($rgbString) > 0) { + $rgbTriples[] = unpack('Cb/Cg/Cr', $rgbString); + $rgbString = substr($rgbString, 3); + } + $x = 0; + $y = 0; + foreach ($rgbTriples as $i => $rgbTriple) { + $color = imagecolorallocate($ih, $rgbTriple['r'], $rgbTriple['g'], $rgbTriple['b']); + imagesetpixel($ih, $x, $bcHeight - 1 - $y, $color); + $x = ($x + 1) % $bcWidth; + $y = $y + floor(($x + 1) / $bcWidth); + } + //imagepng($ih, 'image.png'); + + $drawing = new PHPExcel_Worksheet_Drawing(); + $drawing->setPath($filename); + $drawing->setWorksheet($this->phpSheet); + break; + case 0x02: // Windows metafile or Macintosh PICT format + case 0x0e: // native format + default: + break; + } + + // getSplicedRecordData() takes care of moving current position in data stream + } + + + /** + * Read a free CONTINUE record. Free CONTINUE record may be a camouflaged MSODRAWING record + * When MSODRAWING data on a sheet exceeds 8224 bytes, CONTINUE records are used instead. Undocumented. + * In this case, we must treat the CONTINUE record as a MSODRAWING record + */ + private function readContinue() + { + $length = self::getInt2d($this->data, $this->pos + 2); + $recordData = $this->readRecordData($this->data, $this->pos + 4, $length); + + // check if we are reading drawing data + // this is in case a free CONTINUE record occurs in other circumstances we are unaware of + if ($this->drawingData == '') { + // move stream pointer to next record + $this->pos += 4 + $length; + + return; + } + + // check if record data is at least 4 bytes long, otherwise there is no chance this is MSODRAWING data + if ($length < 4) { + // move stream pointer to next record + $this->pos += 4 + $length; + + return; + } + + // dirty check to see if CONTINUE record could be a camouflaged MSODRAWING record + // look inside CONTINUE record to see if it looks like a part of an Escher stream + // we know that Escher stream may be split at least at + // 0xF003 MsofbtSpgrContainer + // 0xF004 MsofbtSpContainer + // 0xF00D MsofbtClientTextbox + $validSplitPoints = array(0xF003, 0xF004, 0xF00D); // add identifiers if we find more + + $splitPoint = self::getInt2d($recordData, 2); + if (in_array($splitPoint, $validSplitPoints)) { + // get spliced record data (and move pointer to next record) + $splicedRecordData = $this->getSplicedRecordData(); + $this->drawingData .= $splicedRecordData['recordData']; + + return; + } + + // move stream pointer to next record + $this->pos += 4 + $length; + } + + + /** + * Reads a record from current position in data stream and continues reading data as long as CONTINUE + * records are found. Splices the record data pieces and returns the combined string as if record data + * is in one piece. + * Moves to next current position in data stream to start of next record different from a CONtINUE record + * + * @return array + */ + private function getSplicedRecordData() + { + $data = ''; + $spliceOffsets = array(); + + $i = 0; + $spliceOffsets[0] = 0; + + do { + ++$i; + + // offset: 0; size: 2; identifier + $identifier = self::getInt2d($this->data, $this->pos); + // offset: 2; size: 2; length + $length = self::getInt2d($this->data, $this->pos + 2); + $data .= $this->readRecordData($this->data, $this->pos + 4, $length); + + $spliceOffsets[$i] = $spliceOffsets[$i - 1] + $length; + + $this->pos += 4 + $length; + $nextIdentifier = self::getInt2d($this->data, $this->pos); + } while ($nextIdentifier == self::XLS_TYPE_CONTINUE); + + $splicedData = array( + 'recordData' => $data, + 'spliceOffsets' => $spliceOffsets, + ); + + return $splicedData; + + } + + + /** + * Convert formula structure into human readable Excel formula like 'A3+A5*5' + * + * @param string $formulaStructure The complete binary data for the formula + * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas + * @return string Human readable formula + */ + private function getFormulaFromStructure($formulaStructure, $baseCell = 'A1') + { + // offset: 0; size: 2; size of the following formula data + $sz = self::getInt2d($formulaStructure, 0); + + // offset: 2; size: sz + $formulaData = substr($formulaStructure, 2, $sz); + + // for debug: dump the formula data + //echo ''; + //echo 'size: ' . $sz . "\n"; + //echo 'the entire formula data: '; + //Debug::dump($formulaData); + //echo "\n----\n"; + + // offset: 2 + sz; size: variable (optional) + if (strlen($formulaStructure) > 2 + $sz) { + $additionalData = substr($formulaStructure, 2 + $sz); + + // for debug: dump the additional data + //echo 'the entire additional data: '; + //Debug::dump($additionalData); + //echo "\n----\n"; + } else { + $additionalData = ''; + } + + return $this->getFormulaFromData($formulaData, $additionalData, $baseCell); + } + + + /** + * Take formula data and additional data for formula and return human readable formula + * + * @param string $formulaData The binary data for the formula itself + * @param string $additionalData Additional binary data going with the formula + * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas + * @return string Human readable formula + */ + private function getFormulaFromData($formulaData, $additionalData = '', $baseCell = 'A1') + { + // start parsing the formula data + $tokens = array(); + + while (strlen($formulaData) > 0 and $token = $this->getNextToken($formulaData, $baseCell)) { + $tokens[] = $token; + $formulaData = substr($formulaData, $token['size']); + + // for debug: dump the token + //var_dump($token); + } + + $formulaString = $this->createFormulaFromTokens($tokens, $additionalData); + + return $formulaString; + } + + + /** + * Take array of tokens together with additional data for formula and return human readable formula + * + * @param array $tokens + * @param array $additionalData Additional binary data going with the formula + * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas + * @return string Human readable formula + */ + private function createFormulaFromTokens($tokens, $additionalData) + { + // empty formula? + if (empty($tokens)) { + return ''; + } + + $formulaStrings = array(); + foreach ($tokens as $token) { + // initialize spaces + $space0 = isset($space0) ? $space0 : ''; // spaces before next token, not tParen + $space1 = isset($space1) ? $space1 : ''; // carriage returns before next token, not tParen + $space2 = isset($space2) ? $space2 : ''; // spaces before opening parenthesis + $space3 = isset($space3) ? $space3 : ''; // carriage returns before opening parenthesis + $space4 = isset($space4) ? $space4 : ''; // spaces before closing parenthesis + $space5 = isset($space5) ? $space5 : ''; // carriage returns before closing parenthesis + + switch ($token['name']) { + case 'tAdd': // addition + case 'tConcat': // addition + case 'tDiv': // division + case 'tEQ': // equality + case 'tGE': // greater than or equal + case 'tGT': // greater than + case 'tIsect': // intersection + case 'tLE': // less than or equal + case 'tList': // less than or equal + case 'tLT': // less than + case 'tMul': // multiplication + case 'tNE': // multiplication + case 'tPower': // power + case 'tRange': // range + case 'tSub': // subtraction + $op2 = array_pop($formulaStrings); + $op1 = array_pop($formulaStrings); + $formulaStrings[] = "$op1$space1$space0{$token['data']}$op2"; + unset($space0, $space1); + break; + case 'tUplus': // unary plus + case 'tUminus': // unary minus + $op = array_pop($formulaStrings); + $formulaStrings[] = "$space1$space0{$token['data']}$op"; + unset($space0, $space1); + break; + case 'tPercent': // percent sign + $op = array_pop($formulaStrings); + $formulaStrings[] = "$op$space1$space0{$token['data']}"; + unset($space0, $space1); + break; + case 'tAttrVolatile': // indicates volatile function + case 'tAttrIf': + case 'tAttrSkip': + case 'tAttrChoose': + // token is only important for Excel formula evaluator + // do nothing + break; + case 'tAttrSpace': // space / carriage return + // space will be used when next token arrives, do not alter formulaString stack + switch ($token['data']['spacetype']) { + case 'type0': + $space0 = str_repeat(' ', $token['data']['spacecount']); + break; + case 'type1': + $space1 = str_repeat("\n", $token['data']['spacecount']); + break; + case 'type2': + $space2 = str_repeat(' ', $token['data']['spacecount']); + break; + case 'type3': + $space3 = str_repeat("\n", $token['data']['spacecount']); + break; + case 'type4': + $space4 = str_repeat(' ', $token['data']['spacecount']); + break; + case 'type5': + $space5 = str_repeat("\n", $token['data']['spacecount']); + break; + } + break; + case 'tAttrSum': // SUM function with one parameter + $op = array_pop($formulaStrings); + $formulaStrings[] = "{$space1}{$space0}SUM($op)"; + unset($space0, $space1); + break; + case 'tFunc': // function with fixed number of arguments + case 'tFuncV': // function with variable number of arguments + if ($token['data']['function'] != '') { + // normal function + $ops = array(); // array of operators + for ($i = 0; $i < $token['data']['args']; ++$i) { + $ops[] = array_pop($formulaStrings); + } + $ops = array_reverse($ops); + $formulaStrings[] = "$space1$space0{$token['data']['function']}(" . implode(',', $ops) . ")"; + unset($space0, $space1); + } else { + // add-in function + $ops = array(); // array of operators + for ($i = 0; $i < $token['data']['args'] - 1; ++$i) { + $ops[] = array_pop($formulaStrings); + } + $ops = array_reverse($ops); + $function = array_pop($formulaStrings); + $formulaStrings[] = "$space1$space0$function(" . implode(',', $ops) . ")"; + unset($space0, $space1); + } + break; + case 'tParen': // parenthesis + $expression = array_pop($formulaStrings); + $formulaStrings[] = "$space3$space2($expression$space5$space4)"; + unset($space2, $space3, $space4, $space5); + break; + case 'tArray': // array constant + $constantArray = self::readBIFF8ConstantArray($additionalData); + $formulaStrings[] = $space1 . $space0 . $constantArray['value']; + $additionalData = substr($additionalData, $constantArray['size']); // bite of chunk of additional data + unset($space0, $space1); + break; + case 'tMemArea': + // bite off chunk of additional data + $cellRangeAddressList = $this->readBIFF8CellRangeAddressList($additionalData); + $additionalData = substr($additionalData, $cellRangeAddressList['size']); + $formulaStrings[] = "$space1$space0{$token['data']}"; + unset($space0, $space1); + break; + case 'tArea': // cell range address + case 'tBool': // boolean + case 'tErr': // error code + case 'tInt': // integer + case 'tMemErr': + case 'tMemFunc': + case 'tMissArg': + case 'tName': + case 'tNameX': + case 'tNum': // number + case 'tRef': // single cell reference + case 'tRef3d': // 3d cell reference + case 'tArea3d': // 3d cell range reference + case 'tRefN': + case 'tAreaN': + case 'tStr': // string + $formulaStrings[] = "$space1$space0{$token['data']}"; + unset($space0, $space1); + break; + } + } + $formulaString = $formulaStrings[0]; + + // for debug: dump the human readable formula + //echo '----' . "\n"; + //echo 'Formula: ' . $formulaString; + + return $formulaString; + } + + + /** + * Fetch next token from binary formula data + * + * @param string Formula data + * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas + * @return array + * @throws PHPExcel_Reader_Exception + */ + private function getNextToken($formulaData, $baseCell = 'A1') + { + // offset: 0; size: 1; token id + $id = ord($formulaData[0]); // token id + $name = false; // initialize token name + + switch ($id) { + case 0x03: + $name = 'tAdd'; + $size = 1; + $data = '+'; + break; + case 0x04: + $name = 'tSub'; + $size = 1; + $data = '-'; + break; + case 0x05: + $name = 'tMul'; + $size = 1; + $data = '*'; + break; + case 0x06: + $name = 'tDiv'; + $size = 1; + $data = '/'; + break; + case 0x07: + $name = 'tPower'; + $size = 1; + $data = '^'; + break; + case 0x08: + $name = 'tConcat'; + $size = 1; + $data = '&'; + break; + case 0x09: + $name = 'tLT'; + $size = 1; + $data = '<'; + break; + case 0x0A: + $name = 'tLE'; + $size = 1; + $data = '<='; + break; + case 0x0B: + $name = 'tEQ'; + $size = 1; + $data = '='; + break; + case 0x0C: + $name = 'tGE'; + $size = 1; + $data = '>='; + break; + case 0x0D: + $name = 'tGT'; + $size = 1; + $data = '>'; + break; + case 0x0E: + $name = 'tNE'; + $size = 1; + $data = '<>'; + break; + case 0x0F: + $name = 'tIsect'; + $size = 1; + $data = ' '; + break; + case 0x10: + $name = 'tList'; + $size = 1; + $data = ','; + break; + case 0x11: + $name = 'tRange'; + $size = 1; + $data = ':'; + break; + case 0x12: + $name = 'tUplus'; + $size = 1; + $data = '+'; + break; + case 0x13: + $name = 'tUminus'; + $size = 1; + $data = '-'; + break; + case 0x14: + $name = 'tPercent'; + $size = 1; + $data = '%'; + break; + case 0x15: // parenthesis + $name = 'tParen'; + $size = 1; + $data = null; + break; + case 0x16: // missing argument + $name = 'tMissArg'; + $size = 1; + $data = ''; + break; + case 0x17: // string + $name = 'tStr'; + // offset: 1; size: var; Unicode string, 8-bit string length + $string = self::readUnicodeStringShort(substr($formulaData, 1)); + $size = 1 + $string['size']; + $data = self::UTF8toExcelDoubleQuoted($string['value']); + break; + case 0x19: // Special attribute + // offset: 1; size: 1; attribute type flags: + switch (ord($formulaData[1])) { + case 0x01: + $name = 'tAttrVolatile'; + $size = 4; + $data = null; + break; + case 0x02: + $name = 'tAttrIf'; + $size = 4; + $data = null; + break; + case 0x04: + $name = 'tAttrChoose'; + // offset: 2; size: 2; number of choices in the CHOOSE function ($nc, number of parameters decreased by 1) + $nc = self::getInt2d($formulaData, 2); + // offset: 4; size: 2 * $nc + // offset: 4 + 2 * $nc; size: 2 + $size = 2 * $nc + 6; + $data = null; + break; + case 0x08: + $name = 'tAttrSkip'; + $size = 4; + $data = null; + break; + case 0x10: + $name = 'tAttrSum'; + $size = 4; + $data = null; + break; + case 0x40: + case 0x41: + $name = 'tAttrSpace'; + $size = 4; + // offset: 2; size: 2; space type and position + switch (ord($formulaData[2])) { + case 0x00: + $spacetype = 'type0'; + break; + case 0x01: + $spacetype = 'type1'; + break; + case 0x02: + $spacetype = 'type2'; + break; + case 0x03: + $spacetype = 'type3'; + break; + case 0x04: + $spacetype = 'type4'; + break; + case 0x05: + $spacetype = 'type5'; + break; + default: + throw new PHPExcel_Reader_Exception('Unrecognized space type in tAttrSpace token'); + break; + } + // offset: 3; size: 1; number of inserted spaces/carriage returns + $spacecount = ord($formulaData[3]); + + $data = array('spacetype' => $spacetype, 'spacecount' => $spacecount); + break; + default: + throw new PHPExcel_Reader_Exception('Unrecognized attribute flag in tAttr token'); + break; + } + break; + case 0x1C: // error code + // offset: 1; size: 1; error code + $name = 'tErr'; + $size = 2; + $data = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($formulaData[1])); + break; + case 0x1D: // boolean + // offset: 1; size: 1; 0 = false, 1 = true; + $name = 'tBool'; + $size = 2; + $data = ord($formulaData[1]) ? 'TRUE' : 'FALSE'; + break; + case 0x1E: // integer + // offset: 1; size: 2; unsigned 16-bit integer + $name = 'tInt'; + $size = 3; + $data = self::getInt2d($formulaData, 1); + break; + case 0x1F: // number + // offset: 1; size: 8; + $name = 'tNum'; + $size = 9; + $data = self::extractNumber(substr($formulaData, 1)); + $data = str_replace(',', '.', (string)$data); // in case non-English locale + break; + case 0x20: // array constant + case 0x40: + case 0x60: + // offset: 1; size: 7; not used + $name = 'tArray'; + $size = 8; + $data = null; + break; + case 0x21: // function with fixed number of arguments + case 0x41: + case 0x61: + $name = 'tFunc'; + $size = 3; + // offset: 1; size: 2; index to built-in sheet function + switch (self::getInt2d($formulaData, 1)) { + case 2: + $function = 'ISNA'; + $args = 1; + break; + case 3: + $function = 'ISERROR'; + $args = 1; + break; + case 10: + $function = 'NA'; + $args = 0; + break; + case 15: + $function = 'SIN'; + $args = 1; + break; + case 16: + $function = 'COS'; + $args = 1; + break; + case 17: + $function = 'TAN'; + $args = 1; + break; + case 18: + $function = 'ATAN'; + $args = 1; + break; + case 19: + $function = 'PI'; + $args = 0; + break; + case 20: + $function = 'SQRT'; + $args = 1; + break; + case 21: + $function = 'EXP'; + $args = 1; + break; + case 22: + $function = 'LN'; + $args = 1; + break; + case 23: + $function = 'LOG10'; + $args = 1; + break; + case 24: + $function = 'ABS'; + $args = 1; + break; + case 25: + $function = 'INT'; + $args = 1; + break; + case 26: + $function = 'SIGN'; + $args = 1; + break; + case 27: + $function = 'ROUND'; + $args = 2; + break; + case 30: + $function = 'REPT'; + $args = 2; + break; + case 31: + $function = 'MID'; + $args = 3; + break; + case 32: + $function = 'LEN'; + $args = 1; + break; + case 33: + $function = 'VALUE'; + $args = 1; + break; + case 34: + $function = 'TRUE'; + $args = 0; + break; + case 35: + $function = 'FALSE'; + $args = 0; + break; + case 38: + $function = 'NOT'; + $args = 1; + break; + case 39: + $function = 'MOD'; + $args = 2; + break; + case 40: + $function = 'DCOUNT'; + $args = 3; + break; + case 41: + $function = 'DSUM'; + $args = 3; + break; + case 42: + $function = 'DAVERAGE'; + $args = 3; + break; + case 43: + $function = 'DMIN'; + $args = 3; + break; + case 44: + $function = 'DMAX'; + $args = 3; + break; + case 45: + $function = 'DSTDEV'; + $args = 3; + break; + case 48: + $function = 'TEXT'; + $args = 2; + break; + case 61: + $function = 'MIRR'; + $args = 3; + break; + case 63: + $function = 'RAND'; + $args = 0; + break; + case 65: + $function = 'DATE'; + $args = 3; + break; + case 66: + $function = 'TIME'; + $args = 3; + break; + case 67: + $function = 'DAY'; + $args = 1; + break; + case 68: + $function = 'MONTH'; + $args = 1; + break; + case 69: + $function = 'YEAR'; + $args = 1; + break; + case 71: + $function = 'HOUR'; + $args = 1; + break; + case 72: + $function = 'MINUTE'; + $args = 1; + break; + case 73: + $function = 'SECOND'; + $args = 1; + break; + case 74: + $function = 'NOW'; + $args = 0; + break; + case 75: + $function = 'AREAS'; + $args = 1; + break; + case 76: + $function = 'ROWS'; + $args = 1; + break; + case 77: + $function = 'COLUMNS'; + $args = 1; + break; + case 83: + $function = 'TRANSPOSE'; + $args = 1; + break; + case 86: + $function = 'TYPE'; + $args = 1; + break; + case 97: + $function = 'ATAN2'; + $args = 2; + break; + case 98: + $function = 'ASIN'; + $args = 1; + break; + case 99: + $function = 'ACOS'; + $args = 1; + break; + case 105: + $function = 'ISREF'; + $args = 1; + break; + case 111: + $function = 'CHAR'; + $args = 1; + break; + case 112: + $function = 'LOWER'; + $args = 1; + break; + case 113: + $function = 'UPPER'; + $args = 1; + break; + case 114: + $function = 'PROPER'; + $args = 1; + break; + case 117: + $function = 'EXACT'; + $args = 2; + break; + case 118: + $function = 'TRIM'; + $args = 1; + break; + case 119: + $function = 'REPLACE'; + $args = 4; + break; + case 121: + $function = 'CODE'; + $args = 1; + break; + case 126: + $function = 'ISERR'; + $args = 1; + break; + case 127: + $function = 'ISTEXT'; + $args = 1; + break; + case 128: + $function = 'ISNUMBER'; + $args = 1; + break; + case 129: + $function = 'ISBLANK'; + $args = 1; + break; + case 130: + $function = 'T'; + $args = 1; + break; + case 131: + $function = 'N'; + $args = 1; + break; + case 140: + $function = 'DATEVALUE'; + $args = 1; + break; + case 141: + $function = 'TIMEVALUE'; + $args = 1; + break; + case 142: + $function = 'SLN'; + $args = 3; + break; + case 143: + $function = 'SYD'; + $args = 4; + break; + case 162: + $function = 'CLEAN'; + $args = 1; + break; + case 163: + $function = 'MDETERM'; + $args = 1; + break; + case 164: + $function = 'MINVERSE'; + $args = 1; + break; + case 165: + $function = 'MMULT'; + $args = 2; + break; + case 184: + $function = 'FACT'; + $args = 1; + break; + case 189: + $function = 'DPRODUCT'; + $args = 3; + break; + case 190: + $function = 'ISNONTEXT'; + $args = 1; + break; + case 195: + $function = 'DSTDEVP'; + $args = 3; + break; + case 196: + $function = 'DVARP'; + $args = 3; + break; + case 198: + $function = 'ISLOGICAL'; + $args = 1; + break; + case 199: + $function = 'DCOUNTA'; + $args = 3; + break; + case 207: + $function = 'REPLACEB'; + $args = 4; + break; + case 210: + $function = 'MIDB'; + $args = 3; + break; + case 211: + $function = 'LENB'; + $args = 1; + break; + case 212: + $function = 'ROUNDUP'; + $args = 2; + break; + case 213: + $function = 'ROUNDDOWN'; + $args = 2; + break; + case 214: + $function = 'ASC'; + $args = 1; + break; + case 215: + $function = 'DBCS'; + $args = 1; + break; + case 221: + $function = 'TODAY'; + $args = 0; + break; + case 229: + $function = 'SINH'; + $args = 1; + break; + case 230: + $function = 'COSH'; + $args = 1; + break; + case 231: + $function = 'TANH'; + $args = 1; + break; + case 232: + $function = 'ASINH'; + $args = 1; + break; + case 233: + $function = 'ACOSH'; + $args = 1; + break; + case 234: + $function = 'ATANH'; + $args = 1; + break; + case 235: + $function = 'DGET'; + $args = 3; + break; + case 244: + $function = 'INFO'; + $args = 1; + break; + case 252: + $function = 'FREQUENCY'; + $args = 2; + break; + case 261: + $function = 'ERROR.TYPE'; + $args = 1; + break; + case 271: + $function = 'GAMMALN'; + $args = 1; + break; + case 273: + $function = 'BINOMDIST'; + $args = 4; + break; + case 274: + $function = 'CHIDIST'; + $args = 2; + break; + case 275: + $function = 'CHIINV'; + $args = 2; + break; + case 276: + $function = 'COMBIN'; + $args = 2; + break; + case 277: + $function = 'CONFIDENCE'; + $args = 3; + break; + case 278: + $function = 'CRITBINOM'; + $args = 3; + break; + case 279: + $function = 'EVEN'; + $args = 1; + break; + case 280: + $function = 'EXPONDIST'; + $args = 3; + break; + case 281: + $function = 'FDIST'; + $args = 3; + break; + case 282: + $function = 'FINV'; + $args = 3; + break; + case 283: + $function = 'FISHER'; + $args = 1; + break; + case 284: + $function = 'FISHERINV'; + $args = 1; + break; + case 285: + $function = 'FLOOR'; + $args = 2; + break; + case 286: + $function = 'GAMMADIST'; + $args = 4; + break; + case 287: + $function = 'GAMMAINV'; + $args = 3; + break; + case 288: + $function = 'CEILING'; + $args = 2; + break; + case 289: + $function = 'HYPGEOMDIST'; + $args = 4; + break; + case 290: + $function = 'LOGNORMDIST'; + $args = 3; + break; + case 291: + $function = 'LOGINV'; + $args = 3; + break; + case 292: + $function = 'NEGBINOMDIST'; + $args = 3; + break; + case 293: + $function = 'NORMDIST'; + $args = 4; + break; + case 294: + $function = 'NORMSDIST'; + $args = 1; + break; + case 295: + $function = 'NORMINV'; + $args = 3; + break; + case 296: + $function = 'NORMSINV'; + $args = 1; + break; + case 297: + $function = 'STANDARDIZE'; + $args = 3; + break; + case 298: + $function = 'ODD'; + $args = 1; + break; + case 299: + $function = 'PERMUT'; + $args = 2; + break; + case 300: + $function = 'POISSON'; + $args = 3; + break; + case 301: + $function = 'TDIST'; + $args = 3; + break; + case 302: + $function = 'WEIBULL'; + $args = 4; + break; + case 303: + $function = 'SUMXMY2'; + $args = 2; + break; + case 304: + $function = 'SUMX2MY2'; + $args = 2; + break; + case 305: + $function = 'SUMX2PY2'; + $args = 2; + break; + case 306: + $function = 'CHITEST'; + $args = 2; + break; + case 307: + $function = 'CORREL'; + $args = 2; + break; + case 308: + $function = 'COVAR'; + $args = 2; + break; + case 309: + $function = 'FORECAST'; + $args = 3; + break; + case 310: + $function = 'FTEST'; + $args = 2; + break; + case 311: + $function = 'INTERCEPT'; + $args = 2; + break; + case 312: + $function = 'PEARSON'; + $args = 2; + break; + case 313: + $function = 'RSQ'; + $args = 2; + break; + case 314: + $function = 'STEYX'; + $args = 2; + break; + case 315: + $function = 'SLOPE'; + $args = 2; + break; + case 316: + $function = 'TTEST'; + $args = 4; + break; + case 325: + $function = 'LARGE'; + $args = 2; + break; + case 326: + $function = 'SMALL'; + $args = 2; + break; + case 327: + $function = 'QUARTILE'; + $args = 2; + break; + case 328: + $function = 'PERCENTILE'; + $args = 2; + break; + case 331: + $function = 'TRIMMEAN'; + $args = 2; + break; + case 332: + $function = 'TINV'; + $args = 2; + break; + case 337: + $function = 'POWER'; + $args = 2; + break; + case 342: + $function = 'RADIANS'; + $args = 1; + break; + case 343: + $function = 'DEGREES'; + $args = 1; + break; + case 346: + $function = 'COUNTIF'; + $args = 2; + break; + case 347: + $function = 'COUNTBLANK'; + $args = 1; + break; + case 350: + $function = 'ISPMT'; + $args = 4; + break; + case 351: + $function = 'DATEDIF'; + $args = 3; + break; + case 352: + $function = 'DATESTRING'; + $args = 1; + break; + case 353: + $function = 'NUMBERSTRING'; + $args = 2; + break; + case 360: + $function = 'PHONETIC'; + $args = 1; + break; + case 368: + $function = 'BAHTTEXT'; + $args = 1; + break; + default: + throw new PHPExcel_Reader_Exception('Unrecognized function in formula'); + break; + } + $data = array('function' => $function, 'args' => $args); + break; + case 0x22: // function with variable number of arguments + case 0x42: + case 0x62: + $name = 'tFuncV'; + $size = 4; + // offset: 1; size: 1; number of arguments + $args = ord($formulaData[1]); + // offset: 2: size: 2; index to built-in sheet function + $index = self::getInt2d($formulaData, 2); + switch ($index) { + case 0: + $function = 'COUNT'; + break; + case 1: + $function = 'IF'; + break; + case 4: + $function = 'SUM'; + break; + case 5: + $function = 'AVERAGE'; + break; + case 6: + $function = 'MIN'; + break; + case 7: + $function = 'MAX'; + break; + case 8: + $function = 'ROW'; + break; + case 9: + $function = 'COLUMN'; + break; + case 11: + $function = 'NPV'; + break; + case 12: + $function = 'STDEV'; + break; + case 13: + $function = 'DOLLAR'; + break; + case 14: + $function = 'FIXED'; + break; + case 28: + $function = 'LOOKUP'; + break; + case 29: + $function = 'INDEX'; + break; + case 36: + $function = 'AND'; + break; + case 37: + $function = 'OR'; + break; + case 46: + $function = 'VAR'; + break; + case 49: + $function = 'LINEST'; + break; + case 50: + $function = 'TREND'; + break; + case 51: + $function = 'LOGEST'; + break; + case 52: + $function = 'GROWTH'; + break; + case 56: + $function = 'PV'; + break; + case 57: + $function = 'FV'; + break; + case 58: + $function = 'NPER'; + break; + case 59: + $function = 'PMT'; + break; + case 60: + $function = 'RATE'; + break; + case 62: + $function = 'IRR'; + break; + case 64: + $function = 'MATCH'; + break; + case 70: + $function = 'WEEKDAY'; + break; + case 78: + $function = 'OFFSET'; + break; + case 82: + $function = 'SEARCH'; + break; + case 100: + $function = 'CHOOSE'; + break; + case 101: + $function = 'HLOOKUP'; + break; + case 102: + $function = 'VLOOKUP'; + break; + case 109: + $function = 'LOG'; + break; + case 115: + $function = 'LEFT'; + break; + case 116: + $function = 'RIGHT'; + break; + case 120: + $function = 'SUBSTITUTE'; + break; + case 124: + $function = 'FIND'; + break; + case 125: + $function = 'CELL'; + break; + case 144: + $function = 'DDB'; + break; + case 148: + $function = 'INDIRECT'; + break; + case 167: + $function = 'IPMT'; + break; + case 168: + $function = 'PPMT'; + break; + case 169: + $function = 'COUNTA'; + break; + case 183: + $function = 'PRODUCT'; + break; + case 193: + $function = 'STDEVP'; + break; + case 194: + $function = 'VARP'; + break; + case 197: + $function = 'TRUNC'; + break; + case 204: + $function = 'USDOLLAR'; + break; + case 205: + $function = 'FINDB'; + break; + case 206: + $function = 'SEARCHB'; + break; + case 208: + $function = 'LEFTB'; + break; + case 209: + $function = 'RIGHTB'; + break; + case 216: + $function = 'RANK'; + break; + case 219: + $function = 'ADDRESS'; + break; + case 220: + $function = 'DAYS360'; + break; + case 222: + $function = 'VDB'; + break; + case 227: + $function = 'MEDIAN'; + break; + case 228: + $function = 'SUMPRODUCT'; + break; + case 247: + $function = 'DB'; + break; + case 255: + $function = ''; + break; + case 269: + $function = 'AVEDEV'; + break; + case 270: + $function = 'BETADIST'; + break; + case 272: + $function = 'BETAINV'; + break; + case 317: + $function = 'PROB'; + break; + case 318: + $function = 'DEVSQ'; + break; + case 319: + $function = 'GEOMEAN'; + break; + case 320: + $function = 'HARMEAN'; + break; + case 321: + $function = 'SUMSQ'; + break; + case 322: + $function = 'KURT'; + break; + case 323: + $function = 'SKEW'; + break; + case 324: + $function = 'ZTEST'; + break; + case 329: + $function = 'PERCENTRANK'; + break; + case 330: + $function = 'MODE'; + break; + case 336: + $function = 'CONCATENATE'; + break; + case 344: + $function = 'SUBTOTAL'; + break; + case 345: + $function = 'SUMIF'; + break; + case 354: + $function = 'ROMAN'; + break; + case 358: + $function = 'GETPIVOTDATA'; + break; + case 359: + $function = 'HYPERLINK'; + break; + case 361: + $function = 'AVERAGEA'; + break; + case 362: + $function = 'MAXA'; + break; + case 363: + $function = 'MINA'; + break; + case 364: + $function = 'STDEVPA'; + break; + case 365: + $function = 'VARPA'; + break; + case 366: + $function = 'STDEVA'; + break; + case 367: + $function = 'VARA'; + break; + default: + throw new PHPExcel_Reader_Exception('Unrecognized function in formula'); + break; + } + $data = array('function' => $function, 'args' => $args); + break; + case 0x23: // index to defined name + case 0x43: + case 0x63: + $name = 'tName'; + $size = 5; + // offset: 1; size: 2; one-based index to definedname record + $definedNameIndex = self::getInt2d($formulaData, 1) - 1; + // offset: 2; size: 2; not used + $data = $this->definedname[$definedNameIndex]['name']; + break; + case 0x24: // single cell reference e.g. A5 + case 0x44: + case 0x64: + $name = 'tRef'; + $size = 5; + $data = $this->readBIFF8CellAddress(substr($formulaData, 1, 4)); + break; + case 0x25: // cell range reference to cells in the same sheet (2d) + case 0x45: + case 0x65: + $name = 'tArea'; + $size = 9; + $data = $this->readBIFF8CellRangeAddress(substr($formulaData, 1, 8)); + break; + case 0x26: // Constant reference sub-expression + case 0x46: + case 0x66: + $name = 'tMemArea'; + // offset: 1; size: 4; not used + // offset: 5; size: 2; size of the following subexpression + $subSize = self::getInt2d($formulaData, 5); + $size = 7 + $subSize; + $data = $this->getFormulaFromData(substr($formulaData, 7, $subSize)); + break; + case 0x27: // Deleted constant reference sub-expression + case 0x47: + case 0x67: + $name = 'tMemErr'; + // offset: 1; size: 4; not used + // offset: 5; size: 2; size of the following subexpression + $subSize = self::getInt2d($formulaData, 5); + $size = 7 + $subSize; + $data = $this->getFormulaFromData(substr($formulaData, 7, $subSize)); + break; + case 0x29: // Variable reference sub-expression + case 0x49: + case 0x69: + $name = 'tMemFunc'; + // offset: 1; size: 2; size of the following sub-expression + $subSize = self::getInt2d($formulaData, 1); + $size = 3 + $subSize; + $data = $this->getFormulaFromData(substr($formulaData, 3, $subSize)); + break; + case 0x2C: // Relative 2d cell reference reference, used in shared formulas and some other places + case 0x4C: + case 0x6C: + $name = 'tRefN'; + $size = 5; + $data = $this->readBIFF8CellAddressB(substr($formulaData, 1, 4), $baseCell); + break; + case 0x2D: // Relative 2d range reference + case 0x4D: + case 0x6D: + $name = 'tAreaN'; + $size = 9; + $data = $this->readBIFF8CellRangeAddressB(substr($formulaData, 1, 8), $baseCell); + break; + case 0x39: // External name + case 0x59: + case 0x79: + $name = 'tNameX'; + $size = 7; + // offset: 1; size: 2; index to REF entry in EXTERNSHEET record + // offset: 3; size: 2; one-based index to DEFINEDNAME or EXTERNNAME record + $index = self::getInt2d($formulaData, 3); + // assume index is to EXTERNNAME record + $data = $this->externalNames[$index - 1]['name']; + // offset: 5; size: 2; not used + break; + case 0x3A: // 3d reference to cell + case 0x5A: + case 0x7A: + $name = 'tRef3d'; + $size = 7; + + try { + // offset: 1; size: 2; index to REF entry + $sheetRange = $this->readSheetRangeByRefIndex(self::getInt2d($formulaData, 1)); + // offset: 3; size: 4; cell address + $cellAddress = $this->readBIFF8CellAddress(substr($formulaData, 3, 4)); + + $data = "$sheetRange!$cellAddress"; + } catch (PHPExcel_Exception $e) { + // deleted sheet reference + $data = '#REF!'; + } + break; + case 0x3B: // 3d reference to cell range + case 0x5B: + case 0x7B: + $name = 'tArea3d'; + $size = 11; + + try { + // offset: 1; size: 2; index to REF entry + $sheetRange = $this->readSheetRangeByRefIndex(self::getInt2d($formulaData, 1)); + // offset: 3; size: 8; cell address + $cellRangeAddress = $this->readBIFF8CellRangeAddress(substr($formulaData, 3, 8)); + + $data = "$sheetRange!$cellRangeAddress"; + } catch (PHPExcel_Exception $e) { + // deleted sheet reference + $data = '#REF!'; + } + break; + // Unknown cases // don't know how to deal with + default: + throw new PHPExcel_Reader_Exception('Unrecognized token ' . sprintf('%02X', $id) . ' in formula'); + break; + } + + return array( + 'id' => $id, + 'name' => $name, + 'size' => $size, + 'data' => $data, + ); + } + + + /** + * Reads a cell address in BIFF8 e.g. 'A2' or '$A$2' + * section 3.3.4 + * + * @param string $cellAddressStructure + * @return string + */ + private function readBIFF8CellAddress($cellAddressStructure) + { + // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767)) + $row = self::getInt2d($cellAddressStructure, 0) + 1; + + // offset: 2; size: 2; index to column or column offset + relative flags + // bit: 7-0; mask 0x00FF; column index + $column = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($cellAddressStructure, 2)); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($cellAddressStructure, 2))) { + $column = '$' . $column; + } + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($cellAddressStructure, 2))) { + $row = '$' . $row; + } + + return $column . $row; + } + + + /** + * Reads a cell address in BIFF8 for shared formulas. Uses positive and negative values for row and column + * to indicate offsets from a base cell + * section 3.3.4 + * + * @param string $cellAddressStructure + * @param string $baseCell Base cell, only needed when formula contains tRefN tokens, e.g. with shared formulas + * @return string + */ + private function readBIFF8CellAddressB($cellAddressStructure, $baseCell = 'A1') + { + list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell); + $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1; + + // offset: 0; size: 2; index to row (0... 65535) (or offset (-32768... 32767)) + $rowIndex = self::getInt2d($cellAddressStructure, 0); + $row = self::getInt2d($cellAddressStructure, 0) + 1; + + // offset: 2; size: 2; index to column or column offset + relative flags + // bit: 7-0; mask 0x00FF; column index + $colIndex = 0x00FF & self::getInt2d($cellAddressStructure, 2); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($cellAddressStructure, 2))) { + $column = PHPExcel_Cell::stringFromColumnIndex($colIndex); + $column = '$' . $column; + } else { + $colIndex = ($colIndex <= 127) ? $colIndex : $colIndex - 256; + $column = PHPExcel_Cell::stringFromColumnIndex($baseCol + $colIndex); + } + + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($cellAddressStructure, 2))) { + $row = '$' . $row; + } else { + $rowIndex = ($rowIndex <= 32767) ? $rowIndex : $rowIndex - 65536; + $row = $baseRow + $rowIndex; + } + + return $column . $row; + } + + + /** + * Reads a cell range address in BIFF5 e.g. 'A2:B6' or 'A1' + * always fixed range + * section 2.5.14 + * + * @param string $subData + * @return string + * @throws PHPExcel_Reader_Exception + */ + private function readBIFF5CellRangeAddressFixed($subData) + { + // offset: 0; size: 2; index to first row + $fr = self::getInt2d($subData, 0) + 1; + + // offset: 2; size: 2; index to last row + $lr = self::getInt2d($subData, 2) + 1; + + // offset: 4; size: 1; index to first column + $fc = ord($subData{4}); + + // offset: 5; size: 1; index to last column + $lc = ord($subData{5}); + + // check values + if ($fr > $lr || $fc > $lc) { + throw new PHPExcel_Reader_Exception('Not a cell range address'); + } + + // column index to letter + $fc = PHPExcel_Cell::stringFromColumnIndex($fc); + $lc = PHPExcel_Cell::stringFromColumnIndex($lc); + + if ($fr == $lr and $fc == $lc) { + return "$fc$fr"; + } + return "$fc$fr:$lc$lr"; + } + + + /** + * Reads a cell range address in BIFF8 e.g. 'A2:B6' or 'A1' + * always fixed range + * section 2.5.14 + * + * @param string $subData + * @return string + * @throws PHPExcel_Reader_Exception + */ + private function readBIFF8CellRangeAddressFixed($subData) + { + // offset: 0; size: 2; index to first row + $fr = self::getInt2d($subData, 0) + 1; + + // offset: 2; size: 2; index to last row + $lr = self::getInt2d($subData, 2) + 1; + + // offset: 4; size: 2; index to first column + $fc = self::getInt2d($subData, 4); + + // offset: 6; size: 2; index to last column + $lc = self::getInt2d($subData, 6); + + // check values + if ($fr > $lr || $fc > $lc) { + throw new PHPExcel_Reader_Exception('Not a cell range address'); + } + + // column index to letter + $fc = PHPExcel_Cell::stringFromColumnIndex($fc); + $lc = PHPExcel_Cell::stringFromColumnIndex($lc); + + if ($fr == $lr and $fc == $lc) { + return "$fc$fr"; + } + return "$fc$fr:$lc$lr"; + } + + + /** + * Reads a cell range address in BIFF8 e.g. 'A2:B6' or '$A$2:$B$6' + * there are flags indicating whether column/row index is relative + * section 3.3.4 + * + * @param string $subData + * @return string + */ + private function readBIFF8CellRangeAddress($subData) + { + // todo: if cell range is just a single cell, should this funciton + // not just return e.g. 'A1' and not 'A1:A1' ? + + // offset: 0; size: 2; index to first row (0... 65535) (or offset (-32768... 32767)) + $fr = self::getInt2d($subData, 0) + 1; + + // offset: 2; size: 2; index to last row (0... 65535) (or offset (-32768... 32767)) + $lr = self::getInt2d($subData, 2) + 1; + + // offset: 4; size: 2; index to first column or column offset + relative flags + + // bit: 7-0; mask 0x00FF; column index + $fc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($subData, 4)); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($subData, 4))) { + $fc = '$' . $fc; + } + + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($subData, 4))) { + $fr = '$' . $fr; + } + + // offset: 6; size: 2; index to last column or column offset + relative flags + + // bit: 7-0; mask 0x00FF; column index + $lc = PHPExcel_Cell::stringFromColumnIndex(0x00FF & self::getInt2d($subData, 6)); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($subData, 6))) { + $lc = '$' . $lc; + } + + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($subData, 6))) { + $lr = '$' . $lr; + } + + return "$fc$fr:$lc$lr"; + } + + + /** + * Reads a cell range address in BIFF8 for shared formulas. Uses positive and negative values for row and column + * to indicate offsets from a base cell + * section 3.3.4 + * + * @param string $subData + * @param string $baseCell Base cell + * @return string Cell range address + */ + private function readBIFF8CellRangeAddressB($subData, $baseCell = 'A1') + { + list($baseCol, $baseRow) = PHPExcel_Cell::coordinateFromString($baseCell); + $baseCol = PHPExcel_Cell::columnIndexFromString($baseCol) - 1; + + // TODO: if cell range is just a single cell, should this funciton + // not just return e.g. 'A1' and not 'A1:A1' ? + + // offset: 0; size: 2; first row + $frIndex = self::getInt2d($subData, 0); // adjust below + + // offset: 2; size: 2; relative index to first row (0... 65535) should be treated as offset (-32768... 32767) + $lrIndex = self::getInt2d($subData, 2); // adjust below + + // offset: 4; size: 2; first column with relative/absolute flags + + // bit: 7-0; mask 0x00FF; column index + $fcIndex = 0x00FF & self::getInt2d($subData, 4); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($subData, 4))) { + // absolute column index + $fc = PHPExcel_Cell::stringFromColumnIndex($fcIndex); + $fc = '$' . $fc; + } else { + // column offset + $fcIndex = ($fcIndex <= 127) ? $fcIndex : $fcIndex - 256; + $fc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $fcIndex); + } + + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($subData, 4))) { + // absolute row index + $fr = $frIndex + 1; + $fr = '$' . $fr; + } else { + // row offset + $frIndex = ($frIndex <= 32767) ? $frIndex : $frIndex - 65536; + $fr = $baseRow + $frIndex; + } + + // offset: 6; size: 2; last column with relative/absolute flags + + // bit: 7-0; mask 0x00FF; column index + $lcIndex = 0x00FF & self::getInt2d($subData, 6); + $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256; + $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex); + + // bit: 14; mask 0x4000; (1 = relative column index, 0 = absolute column index) + if (!(0x4000 & self::getInt2d($subData, 6))) { + // absolute column index + $lc = PHPExcel_Cell::stringFromColumnIndex($lcIndex); + $lc = '$' . $lc; + } else { + // column offset + $lcIndex = ($lcIndex <= 127) ? $lcIndex : $lcIndex - 256; + $lc = PHPExcel_Cell::stringFromColumnIndex($baseCol + $lcIndex); + } + + // bit: 15; mask 0x8000; (1 = relative row index, 0 = absolute row index) + if (!(0x8000 & self::getInt2d($subData, 6))) { + // absolute row index + $lr = $lrIndex + 1; + $lr = '$' . $lr; + } else { + // row offset + $lrIndex = ($lrIndex <= 32767) ? $lrIndex : $lrIndex - 65536; + $lr = $baseRow + $lrIndex; + } + + return "$fc$fr:$lc$lr"; + } + + + /** + * Read BIFF8 cell range address list + * section 2.5.15 + * + * @param string $subData + * @return array + */ + private function readBIFF8CellRangeAddressList($subData) + { + $cellRangeAddresses = array(); + + // offset: 0; size: 2; number of the following cell range addresses + $nm = self::getInt2d($subData, 0); + + $offset = 2; + // offset: 2; size: 8 * $nm; list of $nm (fixed) cell range addresses + for ($i = 0; $i < $nm; ++$i) { + $cellRangeAddresses[] = $this->readBIFF8CellRangeAddressFixed(substr($subData, $offset, 8)); + $offset += 8; + } + + return array( + 'size' => 2 + 8 * $nm, + 'cellRangeAddresses' => $cellRangeAddresses, + ); + } + + + /** + * Read BIFF5 cell range address list + * section 2.5.15 + * + * @param string $subData + * @return array + */ + private function readBIFF5CellRangeAddressList($subData) + { + $cellRangeAddresses = array(); + + // offset: 0; size: 2; number of the following cell range addresses + $nm = self::getInt2d($subData, 0); + + $offset = 2; + // offset: 2; size: 6 * $nm; list of $nm (fixed) cell range addresses + for ($i = 0; $i < $nm; ++$i) { + $cellRangeAddresses[] = $this->readBIFF5CellRangeAddressFixed(substr($subData, $offset, 6)); + $offset += 6; + } + + return array( + 'size' => 2 + 6 * $nm, + 'cellRangeAddresses' => $cellRangeAddresses, + ); + } + + + /** + * Get a sheet range like Sheet1:Sheet3 from REF index + * Note: If there is only one sheet in the range, one gets e.g Sheet1 + * It can also happen that the REF structure uses the -1 (FFFF) code to indicate deleted sheets, + * in which case an PHPExcel_Reader_Exception is thrown + * + * @param int $index + * @return string|false + * @throws PHPExcel_Reader_Exception + */ + private function readSheetRangeByRefIndex($index) + { + if (isset($this->ref[$index])) { + $type = $this->externalBooks[$this->ref[$index]['externalBookIndex']]['type']; + + switch ($type) { + case 'internal': + // check if we have a deleted 3d reference + if ($this->ref[$index]['firstSheetIndex'] == 0xFFFF or $this->ref[$index]['lastSheetIndex'] == 0xFFFF) { + throw new PHPExcel_Reader_Exception('Deleted sheet reference'); + } + + // we have normal sheet range (collapsed or uncollapsed) + $firstSheetName = $this->sheets[$this->ref[$index]['firstSheetIndex']]['name']; + $lastSheetName = $this->sheets[$this->ref[$index]['lastSheetIndex']]['name']; + + if ($firstSheetName == $lastSheetName) { + // collapsed sheet range + $sheetRange = $firstSheetName; + } else { + $sheetRange = "$firstSheetName:$lastSheetName"; + } + + // escape the single-quotes + $sheetRange = str_replace("'", "''", $sheetRange); + + // if there are special characters, we need to enclose the range in single-quotes + // todo: check if we have identified the whole set of special characters + // it seems that the following characters are not accepted for sheet names + // and we may assume that they are not present: []*/:\? + if (preg_match("/[ !\"@#£$%&{()}<>=+'|^,;-]/", $sheetRange)) { + $sheetRange = "'$sheetRange'"; + } + + return $sheetRange; + break; + default: + // TODO: external sheet support + throw new PHPExcel_Reader_Exception('Excel5 reader only supports internal sheets in fomulas'); + break; + } + } + return false; + } + + + /** + * read BIFF8 constant value array from array data + * returns e.g. array('value' => '{1,2;3,4}', 'size' => 40} + * section 2.5.8 + * + * @param string $arrayData + * @return array + */ + private static function readBIFF8ConstantArray($arrayData) + { + // offset: 0; size: 1; number of columns decreased by 1 + $nc = ord($arrayData[0]); + + // offset: 1; size: 2; number of rows decreased by 1 + $nr = self::getInt2d($arrayData, 1); + $size = 3; // initialize + $arrayData = substr($arrayData, 3); + + // offset: 3; size: var; list of ($nc + 1) * ($nr + 1) constant values + $matrixChunks = array(); + for ($r = 1; $r <= $nr + 1; ++$r) { + $items = array(); + for ($c = 1; $c <= $nc + 1; ++$c) { + $constant = self::readBIFF8Constant($arrayData); + $items[] = $constant['value']; + $arrayData = substr($arrayData, $constant['size']); + $size += $constant['size']; + } + $matrixChunks[] = implode(',', $items); // looks like e.g. '1,"hello"' + } + $matrix = '{' . implode(';', $matrixChunks) . '}'; + + return array( + 'value' => $matrix, + 'size' => $size, + ); + } + + + /** + * read BIFF8 constant value which may be 'Empty Value', 'Number', 'String Value', 'Boolean Value', 'Error Value' + * section 2.5.7 + * returns e.g. array('value' => '5', 'size' => 9) + * + * @param string $valueData + * @return array + */ + private static function readBIFF8Constant($valueData) + { + // offset: 0; size: 1; identifier for type of constant + $identifier = ord($valueData[0]); + + switch ($identifier) { + case 0x00: // empty constant (what is this?) + $value = ''; + $size = 9; + break; + case 0x01: // number + // offset: 1; size: 8; IEEE 754 floating-point value + $value = self::extractNumber(substr($valueData, 1, 8)); + $size = 9; + break; + case 0x02: // string value + // offset: 1; size: var; Unicode string, 16-bit string length + $string = self::readUnicodeStringLong(substr($valueData, 1)); + $value = '"' . $string['value'] . '"'; + $size = 1 + $string['size']; + break; + case 0x04: // boolean + // offset: 1; size: 1; 0 = FALSE, 1 = TRUE + if (ord($valueData[1])) { + $value = 'TRUE'; + } else { + $value = 'FALSE'; + } + $size = 9; + break; + case 0x10: // error code + // offset: 1; size: 1; error code + $value = PHPExcel_Reader_Excel5_ErrorCode::lookup(ord($valueData[1])); + $size = 9; + break; + } + return array( + 'value' => $value, + 'size' => $size, + ); + } + + + /** + * Extract RGB color + * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.4 + * + * @param string $rgb Encoded RGB value (4 bytes) + * @return array + */ + private static function readRGB($rgb) + { + // offset: 0; size 1; Red component + $r = ord($rgb{0}); + + // offset: 1; size: 1; Green component + $g = ord($rgb{1}); + + // offset: 2; size: 1; Blue component + $b = ord($rgb{2}); + + // HEX notation, e.g. 'FF00FC' + $rgb = sprintf('%02X%02X%02X', $r, $g, $b); + + return array('rgb' => $rgb); + } + + + /** + * Read byte string (8-bit string length) + * OpenOffice documentation: 2.5.2 + * + * @param string $subData + * @return array + */ + private function readByteStringShort($subData) + { + // offset: 0; size: 1; length of the string (character count) + $ln = ord($subData[0]); + + // offset: 1: size: var; character array (8-bit characters) + $value = $this->decodeCodepage(substr($subData, 1, $ln)); + + return array( + 'value' => $value, + 'size' => 1 + $ln, // size in bytes of data structure + ); + } + + + /** + * Read byte string (16-bit string length) + * OpenOffice documentation: 2.5.2 + * + * @param string $subData + * @return array + */ + private function readByteStringLong($subData) + { + // offset: 0; size: 2; length of the string (character count) + $ln = self::getInt2d($subData, 0); + + // offset: 2: size: var; character array (8-bit characters) + $value = $this->decodeCodepage(substr($subData, 2)); + + //return $string; + return array( + 'value' => $value, + 'size' => 2 + $ln, // size in bytes of data structure + ); + } + + + /** + * Extracts an Excel Unicode short string (8-bit string length) + * OpenOffice documentation: 2.5.3 + * function will automatically find out where the Unicode string ends. + * + * @param string $subData + * @return array + */ + private static function readUnicodeStringShort($subData) + { + $value = ''; + + // offset: 0: size: 1; length of the string (character count) + $characterCount = ord($subData[0]); + + $string = self::readUnicodeString(substr($subData, 1), $characterCount); + + // add 1 for the string length + $string['size'] += 1; + + return $string; + } + + + /** + * Extracts an Excel Unicode long string (16-bit string length) + * OpenOffice documentation: 2.5.3 + * this function is under construction, needs to support rich text, and Asian phonetic settings + * + * @param string $subData + * @return array + */ + private static function readUnicodeStringLong($subData) + { + $value = ''; + + // offset: 0: size: 2; length of the string (character count) + $characterCount = self::getInt2d($subData, 0); + + $string = self::readUnicodeString(substr($subData, 2), $characterCount); + + // add 2 for the string length + $string['size'] += 2; + + return $string; + } + + + /** + * Read Unicode string with no string length field, but with known character count + * this function is under construction, needs to support rich text, and Asian phonetic settings + * OpenOffice.org's Documentation of the Microsoft Excel File Format, section 2.5.3 + * + * @param string $subData + * @param int $characterCount + * @return array + */ + private static function readUnicodeString($subData, $characterCount) + { + $value = ''; + + // offset: 0: size: 1; option flags + // bit: 0; mask: 0x01; character compression (0 = compressed 8-bit, 1 = uncompressed 16-bit) + $isCompressed = !((0x01 & ord($subData[0])) >> 0); + + // bit: 2; mask: 0x04; Asian phonetic settings + $hasAsian = (0x04) & ord($subData[0]) >> 2; + + // bit: 3; mask: 0x08; Rich-Text settings + $hasRichText = (0x08) & ord($subData[0]) >> 3; + + // offset: 1: size: var; character array + // this offset assumes richtext and Asian phonetic settings are off which is generally wrong + // needs to be fixed + $value = self::encodeUTF16(substr($subData, 1, $isCompressed ? $characterCount : 2 * $characterCount), $isCompressed); + + return array( + 'value' => $value, + 'size' => $isCompressed ? 1 + $characterCount : 1 + 2 * $characterCount, // the size in bytes including the option flags + ); + } + + + /** + * Convert UTF-8 string to string surounded by double quotes. Used for explicit string tokens in formulas. + * Example: hello"world --> "hello""world" + * + * @param string $value UTF-8 encoded string + * @return string + */ + private static function UTF8toExcelDoubleQuoted($value) + { + return '"' . str_replace('"', '""', $value) . '"'; + } + + + /** + * Reads first 8 bytes of a string and return IEEE 754 float + * + * @param string $data Binary string that is at least 8 bytes long + * @return float + */ + private static function extractNumber($data) + { + $rknumhigh = self::getInt4d($data, 4); + $rknumlow = self::getInt4d($data, 0); + $sign = ($rknumhigh & 0x80000000) >> 31; + $exp = (($rknumhigh & 0x7ff00000) >> 20) - 1023; + $mantissa = (0x100000 | ($rknumhigh & 0x000fffff)); + $mantissalow1 = ($rknumlow & 0x80000000) >> 31; + $mantissalow2 = ($rknumlow & 0x7fffffff); + $value = $mantissa / pow(2, (20 - $exp)); + + if ($mantissalow1 != 0) { + $value += 1 / pow(2, (21 - $exp)); + } + + $value += $mantissalow2 / pow(2, (52 - $exp)); + if ($sign) { + $value *= -1; + } + + return $value; + } + + + private static function getIEEE754($rknum) + { + if (($rknum & 0x02) != 0) { + $value = $rknum >> 2; + } else { + // changes by mmp, info on IEEE754 encoding from + // research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html + // The RK format calls for using only the most significant 30 bits + // of the 64 bit floating point value. The other 34 bits are assumed + // to be 0 so we use the upper 30 bits of $rknum as follows... + $sign = ($rknum & 0x80000000) >> 31; + $exp = ($rknum & 0x7ff00000) >> 20; + $mantissa = (0x100000 | ($rknum & 0x000ffffc)); + $value = $mantissa / pow(2, (20- ($exp - 1023))); + if ($sign) { + $value = -1 * $value; + } + //end of changes by mmp + } + if (($rknum & 0x01) != 0) { + $value /= 100; + } + return $value; + } + + + /** + * Get UTF-8 string from (compressed or uncompressed) UTF-16 string + * + * @param string $string + * @param bool $compressed + * @return string + */ + private static function encodeUTF16($string, $compressed = '') + { + if ($compressed) { + $string = self::uncompressByteString($string); + } + + return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', 'UTF-16LE'); + } + + /** + * Convert UTF-16 string in compressed notation to uncompressed form. Only used for BIFF8. + * + * @param string $string + * @return string + */ + private static function uncompressByteString($string) + { + $uncompressedString = ''; + $strLen = strlen($string); + for ($i = 0; $i < $strLen; ++$i) { + $uncompressedString .= $string[$i] . "\0"; + } + + return $uncompressedString; + } + + /** + * Convert string to UTF-8. Only used for BIFF5. + * + * @param string $string + * @return string + */ + private function decodeCodepage($string) + { + return PHPExcel_Shared_String::ConvertEncoding($string, 'UTF-8', $this->codepage); + } + + /** + * Read 16-bit unsigned integer + * + * @param string $data + * @param int $pos + * @return int + */ + public static function getInt2d($data, $pos) + { + return ord($data[$pos]) | (ord($data[$pos+1]) << 8); + } + + /** + * Read 32-bit signed integer + * + * @param string $data + * @param int $pos + * @return int + */ + public static function getInt4d($data, $pos) + { + // FIX: represent numbers correctly on 64-bit system + // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334 + // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems + $_or_24 = ord($data[$pos + 3]); + if ($_or_24 >= 128) { + // negative number + $_ord_24 = -abs((256 - $_or_24) << 24); + } else { + $_ord_24 = ($_or_24 & 127) << 24; + } + return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24; + } + + private function parseRichText($is = '') + { + $value = new PHPExcel_RichText(); + $value->createText($is); + + return $value; + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel5/Color.php b/assets/excel/PHPExcel/Reader/Excel5/Color.php new file mode 100644 index 0000000..1801df5 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Color.php @@ -0,0 +1,32 @@ +<?php + +class PHPExcel_Reader_Excel5_Color +{ + /** + * Read color + * + * @param int $color Indexed color + * @param array $palette Color palette + * @return array RGB color value, example: array('rgb' => 'FF0000') + */ + public static function map($color, $palette, $version) + { + if ($color <= 0x07 || $color >= 0x40) { + // special built-in color + return PHPExcel_Reader_Excel5_Color_BuiltIn::lookup($color); + } elseif (isset($palette) && isset($palette[$color - 8])) { + // palette color, color index 0x08 maps to pallete index 0 + return $palette[$color - 8]; + } else { + // default color table + if ($version == PHPExcel_Reader_Excel5::XLS_BIFF8) { + return PHPExcel_Reader_Excel5_Color_BIFF8::lookup($color); + } else { + // BIFF5 + return PHPExcel_Reader_Excel5_Color_BIFF5::lookup($color); + } + } + + return $color; + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF5.php b/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF5.php new file mode 100644 index 0000000..159c27f --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF5.php @@ -0,0 +1,77 @@ +<?php + +class PHPExcel_Reader_Excel5_Color_BIFF5 +{ + protected static $map = array( + 0x08 => '000000', + 0x09 => 'FFFFFF', + 0x0A => 'FF0000', + 0x0B => '00FF00', + 0x0C => '0000FF', + 0x0D => 'FFFF00', + 0x0E => 'FF00FF', + 0x0F => '00FFFF', + 0x10 => '800000', + 0x11 => '008000', + 0x12 => '000080', + 0x13 => '808000', + 0x14 => '800080', + 0x15 => '008080', + 0x16 => 'C0C0C0', + 0x17 => '808080', + 0x18 => '8080FF', + 0x19 => '802060', + 0x1A => 'FFFFC0', + 0x1B => 'A0E0F0', + 0x1C => '600080', + 0x1D => 'FF8080', + 0x1E => '0080C0', + 0x1F => 'C0C0FF', + 0x20 => '000080', + 0x21 => 'FF00FF', + 0x22 => 'FFFF00', + 0x23 => '00FFFF', + 0x24 => '800080', + 0x25 => '800000', + 0x26 => '008080', + 0x27 => '0000FF', + 0x28 => '00CFFF', + 0x29 => '69FFFF', + 0x2A => 'E0FFE0', + 0x2B => 'FFFF80', + 0x2C => 'A6CAF0', + 0x2D => 'DD9CB3', + 0x2E => 'B38FEE', + 0x2F => 'E3E3E3', + 0x30 => '2A6FF9', + 0x31 => '3FB8CD', + 0x32 => '488436', + 0x33 => '958C41', + 0x34 => '8E5E42', + 0x35 => 'A0627A', + 0x36 => '624FAC', + 0x37 => '969696', + 0x38 => '1D2FBE', + 0x39 => '286676', + 0x3A => '004500', + 0x3B => '453E01', + 0x3C => '6A2813', + 0x3D => '85396A', + 0x3E => '4A3285', + 0x3F => '424242', + ); + + /** + * Map color array from BIFF5 built-in color index + * + * @param int $color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF8.php b/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF8.php new file mode 100644 index 0000000..4d3f2d0 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Color/BIFF8.php @@ -0,0 +1,77 @@ +<?php + +class PHPExcel_Reader_Excel5_Color_BIFF8 +{ + protected static $map = array( + 0x08 => '000000', + 0x09 => 'FFFFFF', + 0x0A => 'FF0000', + 0x0B => '00FF00', + 0x0C => '0000FF', + 0x0D => 'FFFF00', + 0x0E => 'FF00FF', + 0x0F => '00FFFF', + 0x10 => '800000', + 0x11 => '008000', + 0x12 => '000080', + 0x13 => '808000', + 0x14 => '800080', + 0x15 => '008080', + 0x16 => 'C0C0C0', + 0x17 => '808080', + 0x18 => '9999FF', + 0x19 => '993366', + 0x1A => 'FFFFCC', + 0x1B => 'CCFFFF', + 0x1C => '660066', + 0x1D => 'FF8080', + 0x1E => '0066CC', + 0x1F => 'CCCCFF', + 0x20 => '000080', + 0x21 => 'FF00FF', + 0x22 => 'FFFF00', + 0x23 => '00FFFF', + 0x24 => '800080', + 0x25 => '800000', + 0x26 => '008080', + 0x27 => '0000FF', + 0x28 => '00CCFF', + 0x29 => 'CCFFFF', + 0x2A => 'CCFFCC', + 0x2B => 'FFFF99', + 0x2C => '99CCFF', + 0x2D => 'FF99CC', + 0x2E => 'CC99FF', + 0x2F => 'FFCC99', + 0x30 => '3366FF', + 0x31 => '33CCCC', + 0x32 => '99CC00', + 0x33 => 'FFCC00', + 0x34 => 'FF9900', + 0x35 => 'FF6600', + 0x36 => '666699', + 0x37 => '969696', + 0x38 => '003366', + 0x39 => '339966', + 0x3A => '003300', + 0x3B => '333300', + 0x3C => '993300', + 0x3D => '993366', + 0x3E => '333399', + 0x3F => '333333', + ); + + /** + * Map color array from BIFF8 built-in color index + * + * @param int $color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/Color/BuiltIn.php b/assets/excel/PHPExcel/Reader/Excel5/Color/BuiltIn.php new file mode 100644 index 0000000..a5b7e59 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Color/BuiltIn.php @@ -0,0 +1,31 @@ +<?php + +class PHPExcel_Reader_Excel5_Color_BuiltIn +{ + protected static $map = array( + 0x00 => '000000', + 0x01 => 'FFFFFF', + 0x02 => 'FF0000', + 0x03 => '00FF00', + 0x04 => '0000FF', + 0x05 => 'FFFF00', + 0x06 => 'FF00FF', + 0x07 => '00FFFF', + 0x40 => '000000', // system window text color + 0x41 => 'FFFFFF', // system window background color + ); + + /** + * Map built-in color to RGB value + * + * @param int $color Indexed color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/ErrorCode.php b/assets/excel/PHPExcel/Reader/Excel5/ErrorCode.php new file mode 100644 index 0000000..f1d1cb6 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/ErrorCode.php @@ -0,0 +1,28 @@ +<?php + +class PHPExcel_Reader_Excel5_ErrorCode +{ + protected static $map = array( + 0x00 => '#NULL!', + 0x07 => '#DIV/0!', + 0x0F => '#VALUE!', + 0x17 => '#REF!', + 0x1D => '#NAME?', + 0x24 => '#NUM!', + 0x2A => '#N/A', + ); + + /** + * Map error code, e.g. '#N/A' + * + * @param int $code + * @return string + */ + public static function lookup($code) + { + if (isset(self::$map[$code])) { + return self::$map[$code]; + } + return false; + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/Escher.php b/assets/excel/PHPExcel/Reader/Excel5/Escher.php new file mode 100644 index 0000000..2b99e22 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Escher.php @@ -0,0 +1,669 @@ +<?php + +/** + * PHPExcel_Reader_Excel5_Escher + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_Excel5_Escher +{ + const DGGCONTAINER = 0xF000; + const BSTORECONTAINER = 0xF001; + const DGCONTAINER = 0xF002; + const SPGRCONTAINER = 0xF003; + const SPCONTAINER = 0xF004; + const DGG = 0xF006; + const BSE = 0xF007; + const DG = 0xF008; + const SPGR = 0xF009; + const SP = 0xF00A; + const OPT = 0xF00B; + const CLIENTTEXTBOX = 0xF00D; + const CLIENTANCHOR = 0xF010; + const CLIENTDATA = 0xF011; + const BLIPJPEG = 0xF01D; + const BLIPPNG = 0xF01E; + const SPLITMENUCOLORS = 0xF11E; + const TERTIARYOPT = 0xF122; + + /** + * Escher stream data (binary) + * + * @var string + */ + private $data; + + /** + * Size in bytes of the Escher stream data + * + * @var int + */ + private $dataSize; + + /** + * Current position of stream pointer in Escher stream data + * + * @var int + */ + private $pos; + + /** + * The object to be returned by the reader. Modified during load. + * + * @var mixed + */ + private $object; + + /** + * Create a new PHPExcel_Reader_Excel5_Escher instance + * + * @param mixed $object + */ + public function __construct($object) + { + $this->object = $object; + } + + /** + * Load Escher stream data. May be a partial Escher stream. + * + * @param string $data + */ + public function load($data) + { + $this->data = $data; + + // total byte size of Excel data (workbook global substream + sheet substreams) + $this->dataSize = strlen($this->data); + + $this->pos = 0; + + // Parse Escher stream + while ($this->pos < $this->dataSize) { + // offset: 2; size: 2: Record Type + $fbt = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos + 2); + + switch ($fbt) { + case self::DGGCONTAINER: + $this->readDggContainer(); + break; + case self::DGG: + $this->readDgg(); + break; + case self::BSTORECONTAINER: + $this->readBstoreContainer(); + break; + case self::BSE: + $this->readBSE(); + break; + case self::BLIPJPEG: + $this->readBlipJPEG(); + break; + case self::BLIPPNG: + $this->readBlipPNG(); + break; + case self::OPT: + $this->readOPT(); + break; + case self::TERTIARYOPT: + $this->readTertiaryOPT(); + break; + case self::SPLITMENUCOLORS: + $this->readSplitMenuColors(); + break; + case self::DGCONTAINER: + $this->readDgContainer(); + break; + case self::DG: + $this->readDg(); + break; + case self::SPGRCONTAINER: + $this->readSpgrContainer(); + break; + case self::SPCONTAINER: + $this->readSpContainer(); + break; + case self::SPGR: + $this->readSpgr(); + break; + case self::SP: + $this->readSp(); + break; + case self::CLIENTTEXTBOX: + $this->readClientTextbox(); + break; + case self::CLIENTANCHOR: + $this->readClientAnchor(); + break; + case self::CLIENTDATA: + $this->readClientData(); + break; + default: + $this->readDefault(); + break; + } + } + + return $this->object; + } + + /** + * Read a generic record + */ + private function readDefault() + { + // offset 0; size: 2; recVer and recInstance + $verInstance = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos); + + // offset: 2; size: 2: Record Type + $fbt = PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos + 2); + + // bit: 0-3; mask: 0x000F; recVer + $recVer = (0x000F & $verInstance) >> 0; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read DggContainer record (Drawing Group Container) + */ + private function readDggContainer() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // record is a container, read contents + $dggContainer = new PHPExcel_Shared_Escher_DggContainer(); + $this->object->setDggContainer($dggContainer); + $reader = new PHPExcel_Reader_Excel5_Escher($dggContainer); + $reader->load($recordData); + } + + /** + * Read Dgg record (Drawing Group) + */ + private function readDgg() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read BstoreContainer record (Blip Store Container) + */ + private function readBstoreContainer() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // record is a container, read contents + $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer(); + $this->object->setBstoreContainer($bstoreContainer); + $reader = new PHPExcel_Reader_Excel5_Escher($bstoreContainer); + $reader->load($recordData); + } + + /** + * Read BSE record + */ + private function readBSE() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // add BSE to BstoreContainer + $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); + $this->object->addBSE($BSE); + + $BSE->setBLIPType($recInstance); + + // offset: 0; size: 1; btWin32 (MSOBLIPTYPE) + $btWin32 = ord($recordData[0]); + + // offset: 1; size: 1; btWin32 (MSOBLIPTYPE) + $btMacOS = ord($recordData[1]); + + // offset: 2; size: 16; MD4 digest + $rgbUid = substr($recordData, 2, 16); + + // offset: 18; size: 2; tag + $tag = PHPExcel_Reader_Excel5::getInt2d($recordData, 18); + + // offset: 20; size: 4; size of BLIP in bytes + $size = PHPExcel_Reader_Excel5::getInt4d($recordData, 20); + + // offset: 24; size: 4; number of references to this BLIP + $cRef = PHPExcel_Reader_Excel5::getInt4d($recordData, 24); + + // offset: 28; size: 4; MSOFO file offset + $foDelay = PHPExcel_Reader_Excel5::getInt4d($recordData, 28); + + // offset: 32; size: 1; unused1 + $unused1 = ord($recordData{32}); + + // offset: 33; size: 1; size of nameData in bytes (including null terminator) + $cbName = ord($recordData{33}); + + // offset: 34; size: 1; unused2 + $unused2 = ord($recordData{34}); + + // offset: 35; size: 1; unused3 + $unused3 = ord($recordData{35}); + + // offset: 36; size: $cbName; nameData + $nameData = substr($recordData, 36, $cbName); + + // offset: 36 + $cbName, size: var; the BLIP data + $blipData = substr($recordData, 36 + $cbName); + + // record is a container, read contents + $reader = new PHPExcel_Reader_Excel5_Escher($BSE); + $reader->load($blipData); + } + + /** + * Read BlipJPEG record. Holds raw JPEG image data + */ + private function readBlipJPEG() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + $pos = 0; + + // offset: 0; size: 16; rgbUid1 (MD4 digest of) + $rgbUid1 = substr($recordData, 0, 16); + $pos += 16; + + // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3 + if (in_array($recInstance, array(0x046B, 0x06E3))) { + $rgbUid2 = substr($recordData, 16, 16); + $pos += 16; + } + + // offset: var; size: 1; tag + $tag = ord($recordData{$pos}); + $pos += 1; + + // offset: var; size: var; the raw image data + $data = substr($recordData, $pos); + + $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); + $blip->setData($data); + + $this->object->setBlip($blip); + } + + /** + * Read BlipPNG record. Holds raw PNG image data + */ + private function readBlipPNG() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + $pos = 0; + + // offset: 0; size: 16; rgbUid1 (MD4 digest of) + $rgbUid1 = substr($recordData, 0, 16); + $pos += 16; + + // offset: 16; size: 16; rgbUid2 (MD4 digest), only if $recInstance = 0x46B or 0x6E3 + if ($recInstance == 0x06E1) { + $rgbUid2 = substr($recordData, 16, 16); + $pos += 16; + } + + // offset: var; size: 1; tag + $tag = ord($recordData{$pos}); + $pos += 1; + + // offset: var; size: var; the raw image data + $data = substr($recordData, $pos); + + $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); + $blip->setData($data); + + $this->object->setBlip($blip); + } + + /** + * Read OPT record. This record may occur within DggContainer record or SpContainer + */ + private function readOPT() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + $this->readOfficeArtRGFOPTE($recordData, $recInstance); + } + + /** + * Read TertiaryOPT record + */ + private function readTertiaryOPT() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read SplitMenuColors record + */ + private function readSplitMenuColors() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read DgContainer record (Drawing Container) + */ + private function readDgContainer() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // record is a container, read contents + $dgContainer = new PHPExcel_Shared_Escher_DgContainer(); + $this->object->setDgContainer($dgContainer); + $reader = new PHPExcel_Reader_Excel5_Escher($dgContainer); + $escher = $reader->load($recordData); + } + + /** + * Read Dg record (Drawing) + */ + private function readDg() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read SpgrContainer record (Shape Group Container) + */ + private function readSpgrContainer() + { + // context is either context DgContainer or SpgrContainer + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // record is a container, read contents + $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer(); + + if ($this->object instanceof PHPExcel_Shared_Escher_DgContainer) { + // DgContainer + $this->object->setSpgrContainer($spgrContainer); + } else { + // SpgrContainer + $this->object->addChild($spgrContainer); + } + + $reader = new PHPExcel_Reader_Excel5_Escher($spgrContainer); + $escher = $reader->load($recordData); + } + + /** + * Read SpContainer record (Shape Container) + */ + private function readSpContainer() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // add spContainer to spgrContainer + $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); + $this->object->addChild($spContainer); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // record is a container, read contents + $reader = new PHPExcel_Reader_Excel5_Escher($spContainer); + $escher = $reader->load($recordData); + } + + /** + * Read Spgr record (Shape Group) + */ + private function readSpgr() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read Sp record (Shape) + */ + private function readSp() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read ClientTextbox record + */ + private function readClientTextbox() + { + // offset: 0; size: 2; recVer and recInstance + + // bit: 4-15; mask: 0xFFF0; recInstance + $recInstance = (0xFFF0 & PHPExcel_Reader_Excel5::getInt2d($this->data, $this->pos)) >> 4; + + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read ClientAnchor record. This record holds information about where the shape is anchored in worksheet + */ + private function readClientAnchor() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + + // offset: 2; size: 2; upper-left corner column index (0-based) + $c1 = PHPExcel_Reader_Excel5::getInt2d($recordData, 2); + + // offset: 4; size: 2; upper-left corner horizontal offset in 1/1024 of column width + $startOffsetX = PHPExcel_Reader_Excel5::getInt2d($recordData, 4); + + // offset: 6; size: 2; upper-left corner row index (0-based) + $r1 = PHPExcel_Reader_Excel5::getInt2d($recordData, 6); + + // offset: 8; size: 2; upper-left corner vertical offset in 1/256 of row height + $startOffsetY = PHPExcel_Reader_Excel5::getInt2d($recordData, 8); + + // offset: 10; size: 2; bottom-right corner column index (0-based) + $c2 = PHPExcel_Reader_Excel5::getInt2d($recordData, 10); + + // offset: 12; size: 2; bottom-right corner horizontal offset in 1/1024 of column width + $endOffsetX = PHPExcel_Reader_Excel5::getInt2d($recordData, 12); + + // offset: 14; size: 2; bottom-right corner row index (0-based) + $r2 = PHPExcel_Reader_Excel5::getInt2d($recordData, 14); + + // offset: 16; size: 2; bottom-right corner vertical offset in 1/256 of row height + $endOffsetY = PHPExcel_Reader_Excel5::getInt2d($recordData, 16); + + // set the start coordinates + $this->object->setStartCoordinates(PHPExcel_Cell::stringFromColumnIndex($c1) . ($r1 + 1)); + + // set the start offsetX + $this->object->setStartOffsetX($startOffsetX); + + // set the start offsetY + $this->object->setStartOffsetY($startOffsetY); + + // set the end coordinates + $this->object->setEndCoordinates(PHPExcel_Cell::stringFromColumnIndex($c2) . ($r2 + 1)); + + // set the end offsetX + $this->object->setEndOffsetX($endOffsetX); + + // set the end offsetY + $this->object->setEndOffsetY($endOffsetY); + } + + /** + * Read ClientData record + */ + private function readClientData() + { + $length = PHPExcel_Reader_Excel5::getInt4d($this->data, $this->pos + 4); + $recordData = substr($this->data, $this->pos + 8, $length); + + // move stream pointer to next record + $this->pos += 8 + $length; + } + + /** + * Read OfficeArtRGFOPTE table of property-value pairs + * + * @param string $data Binary data + * @param int $n Number of properties + */ + private function readOfficeArtRGFOPTE($data, $n) + { + $splicedComplexData = substr($data, 6 * $n); + + // loop through property-value pairs + for ($i = 0; $i < $n; ++$i) { + // read 6 bytes at a time + $fopte = substr($data, 6 * $i, 6); + + // offset: 0; size: 2; opid + $opid = PHPExcel_Reader_Excel5::getInt2d($fopte, 0); + + // bit: 0-13; mask: 0x3FFF; opid.opid + $opidOpid = (0x3FFF & $opid) >> 0; + + // bit: 14; mask 0x4000; 1 = value in op field is BLIP identifier + $opidFBid = (0x4000 & $opid) >> 14; + + // bit: 15; mask 0x8000; 1 = this is a complex property, op field specifies size of complex data + $opidFComplex = (0x8000 & $opid) >> 15; + + // offset: 2; size: 4; the value for this property + $op = PHPExcel_Reader_Excel5::getInt4d($fopte, 2); + + if ($opidFComplex) { + $complexData = substr($splicedComplexData, 0, $op); + $splicedComplexData = substr($splicedComplexData, $op); + + // we store string value with complex data + $value = $complexData; + } else { + // we store integer value + $value = $op; + } + + $this->object->setOPT($opidOpid, $value); + } + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel5/MD5.php b/assets/excel/PHPExcel/Reader/Excel5/MD5.php new file mode 100644 index 0000000..f14ea94 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/MD5.php @@ -0,0 +1,203 @@ +<?php + +/** + * PHPExcel_Reader_Excel5_MD5 + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_Excel5_MD5 +{ + // Context + private $a; + private $b; + private $c; + private $d; + + /** + * MD5 stream constructor + */ + public function __construct() + { + $this->reset(); + } + + /** + * Reset the MD5 stream context + */ + public function reset() + { + $this->a = 0x67452301; + $this->b = 0xEFCDAB89; + $this->c = 0x98BADCFE; + $this->d = 0x10325476; + } + + /** + * Get MD5 stream context + * + * @return string + */ + public function getContext() + { + $s = ''; + foreach (array('a', 'b', 'c', 'd') as $i) { + $v = $this->{$i}; + $s .= chr($v & 0xff); + $s .= chr(($v >> 8) & 0xff); + $s .= chr(($v >> 16) & 0xff); + $s .= chr(($v >> 24) & 0xff); + } + + return $s; + } + + /** + * Add data to context + * + * @param string $data Data to add + */ + public function add($data) + { + $words = array_values(unpack('V16', $data)); + + $A = $this->a; + $B = $this->b; + $C = $this->c; + $D = $this->d; + + $F = array('PHPExcel_Reader_Excel5_MD5','f'); + $G = array('PHPExcel_Reader_Excel5_MD5','g'); + $H = array('PHPExcel_Reader_Excel5_MD5','h'); + $I = array('PHPExcel_Reader_Excel5_MD5','i'); + + /* ROUND 1 */ + self::step($F, $A, $B, $C, $D, $words[0], 7, 0xd76aa478); + self::step($F, $D, $A, $B, $C, $words[1], 12, 0xe8c7b756); + self::step($F, $C, $D, $A, $B, $words[2], 17, 0x242070db); + self::step($F, $B, $C, $D, $A, $words[3], 22, 0xc1bdceee); + self::step($F, $A, $B, $C, $D, $words[4], 7, 0xf57c0faf); + self::step($F, $D, $A, $B, $C, $words[5], 12, 0x4787c62a); + self::step($F, $C, $D, $A, $B, $words[6], 17, 0xa8304613); + self::step($F, $B, $C, $D, $A, $words[7], 22, 0xfd469501); + self::step($F, $A, $B, $C, $D, $words[8], 7, 0x698098d8); + self::step($F, $D, $A, $B, $C, $words[9], 12, 0x8b44f7af); + self::step($F, $C, $D, $A, $B, $words[10], 17, 0xffff5bb1); + self::step($F, $B, $C, $D, $A, $words[11], 22, 0x895cd7be); + self::step($F, $A, $B, $C, $D, $words[12], 7, 0x6b901122); + self::step($F, $D, $A, $B, $C, $words[13], 12, 0xfd987193); + self::step($F, $C, $D, $A, $B, $words[14], 17, 0xa679438e); + self::step($F, $B, $C, $D, $A, $words[15], 22, 0x49b40821); + + /* ROUND 2 */ + self::step($G, $A, $B, $C, $D, $words[1], 5, 0xf61e2562); + self::step($G, $D, $A, $B, $C, $words[6], 9, 0xc040b340); + self::step($G, $C, $D, $A, $B, $words[11], 14, 0x265e5a51); + self::step($G, $B, $C, $D, $A, $words[0], 20, 0xe9b6c7aa); + self::step($G, $A, $B, $C, $D, $words[5], 5, 0xd62f105d); + self::step($G, $D, $A, $B, $C, $words[10], 9, 0x02441453); + self::step($G, $C, $D, $A, $B, $words[15], 14, 0xd8a1e681); + self::step($G, $B, $C, $D, $A, $words[4], 20, 0xe7d3fbc8); + self::step($G, $A, $B, $C, $D, $words[9], 5, 0x21e1cde6); + self::step($G, $D, $A, $B, $C, $words[14], 9, 0xc33707d6); + self::step($G, $C, $D, $A, $B, $words[3], 14, 0xf4d50d87); + self::step($G, $B, $C, $D, $A, $words[8], 20, 0x455a14ed); + self::step($G, $A, $B, $C, $D, $words[13], 5, 0xa9e3e905); + self::step($G, $D, $A, $B, $C, $words[2], 9, 0xfcefa3f8); + self::step($G, $C, $D, $A, $B, $words[7], 14, 0x676f02d9); + self::step($G, $B, $C, $D, $A, $words[12], 20, 0x8d2a4c8a); + + /* ROUND 3 */ + self::step($H, $A, $B, $C, $D, $words[5], 4, 0xfffa3942); + self::step($H, $D, $A, $B, $C, $words[8], 11, 0x8771f681); + self::step($H, $C, $D, $A, $B, $words[11], 16, 0x6d9d6122); + self::step($H, $B, $C, $D, $A, $words[14], 23, 0xfde5380c); + self::step($H, $A, $B, $C, $D, $words[1], 4, 0xa4beea44); + self::step($H, $D, $A, $B, $C, $words[4], 11, 0x4bdecfa9); + self::step($H, $C, $D, $A, $B, $words[7], 16, 0xf6bb4b60); + self::step($H, $B, $C, $D, $A, $words[10], 23, 0xbebfbc70); + self::step($H, $A, $B, $C, $D, $words[13], 4, 0x289b7ec6); + self::step($H, $D, $A, $B, $C, $words[0], 11, 0xeaa127fa); + self::step($H, $C, $D, $A, $B, $words[3], 16, 0xd4ef3085); + self::step($H, $B, $C, $D, $A, $words[6], 23, 0x04881d05); + self::step($H, $A, $B, $C, $D, $words[9], 4, 0xd9d4d039); + self::step($H, $D, $A, $B, $C, $words[12], 11, 0xe6db99e5); + self::step($H, $C, $D, $A, $B, $words[15], 16, 0x1fa27cf8); + self::step($H, $B, $C, $D, $A, $words[2], 23, 0xc4ac5665); + + /* ROUND 4 */ + self::step($I, $A, $B, $C, $D, $words[0], 6, 0xf4292244); + self::step($I, $D, $A, $B, $C, $words[7], 10, 0x432aff97); + self::step($I, $C, $D, $A, $B, $words[14], 15, 0xab9423a7); + self::step($I, $B, $C, $D, $A, $words[5], 21, 0xfc93a039); + self::step($I, $A, $B, $C, $D, $words[12], 6, 0x655b59c3); + self::step($I, $D, $A, $B, $C, $words[3], 10, 0x8f0ccc92); + self::step($I, $C, $D, $A, $B, $words[10], 15, 0xffeff47d); + self::step($I, $B, $C, $D, $A, $words[1], 21, 0x85845dd1); + self::step($I, $A, $B, $C, $D, $words[8], 6, 0x6fa87e4f); + self::step($I, $D, $A, $B, $C, $words[15], 10, 0xfe2ce6e0); + self::step($I, $C, $D, $A, $B, $words[6], 15, 0xa3014314); + self::step($I, $B, $C, $D, $A, $words[13], 21, 0x4e0811a1); + self::step($I, $A, $B, $C, $D, $words[4], 6, 0xf7537e82); + self::step($I, $D, $A, $B, $C, $words[11], 10, 0xbd3af235); + self::step($I, $C, $D, $A, $B, $words[2], 15, 0x2ad7d2bb); + self::step($I, $B, $C, $D, $A, $words[9], 21, 0xeb86d391); + + $this->a = ($this->a + $A) & 0xffffffff; + $this->b = ($this->b + $B) & 0xffffffff; + $this->c = ($this->c + $C) & 0xffffffff; + $this->d = ($this->d + $D) & 0xffffffff; + } + + private static function f($X, $Y, $Z) + { + return (($X & $Y) | ((~ $X) & $Z)); // X AND Y OR NOT X AND Z + } + + private static function g($X, $Y, $Z) + { + return (($X & $Z) | ($Y & (~ $Z))); // X AND Z OR Y AND NOT Z + } + + private static function h($X, $Y, $Z) + { + return ($X ^ $Y ^ $Z); // X XOR Y XOR Z + } + + private static function i($X, $Y, $Z) + { + return ($Y ^ ($X | (~ $Z))) ; // Y XOR (X OR NOT Z) + } + + private static function step($func, &$A, $B, $C, $D, $M, $s, $t) + { + $A = ($A + call_user_func($func, $B, $C, $D) + $M + $t) & 0xffffffff; + $A = self::rotate($A, $s); + $A = ($B + $A) & 0xffffffff; + } + + private static function rotate($decimal, $bits) + { + $binary = str_pad(decbin($decimal), 32, "0", STR_PAD_LEFT); + return bindec(substr($binary, $bits).substr($binary, 0, $bits)); + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel5/RC4.php b/assets/excel/PHPExcel/Reader/Excel5/RC4.php new file mode 100644 index 0000000..5640539 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/RC4.php @@ -0,0 +1,81 @@ +<?php + +/** + * PHPExcel_Reader_Excel5_RC4 + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_Excel5_RC4 +{ + // Context + protected $s = array(); + protected $i = 0; + protected $j = 0; + + /** + * RC4 stream decryption/encryption constrcutor + * + * @param string $key Encryption key/passphrase + */ + public function __construct($key) + { + $len = strlen($key); + + for ($this->i = 0; $this->i < 256; $this->i++) { + $this->s[$this->i] = $this->i; + } + + $this->j = 0; + for ($this->i = 0; $this->i < 256; $this->i++) { + $this->j = ($this->j + $this->s[$this->i] + ord($key[$this->i % $len])) % 256; + $t = $this->s[$this->i]; + $this->s[$this->i] = $this->s[$this->j]; + $this->s[$this->j] = $t; + } + $this->i = $this->j = 0; + } + + /** + * Symmetric decryption/encryption function + * + * @param string $data Data to encrypt/decrypt + * + * @return string + */ + public function RC4($data) + { + $len = strlen($data); + for ($c = 0; $c < $len; $c++) { + $this->i = ($this->i + 1) % 256; + $this->j = ($this->j + $this->s[$this->i]) % 256; + $t = $this->s[$this->i]; + $this->s[$this->i] = $this->s[$this->j]; + $this->s[$this->j] = $t; + + $t = ($this->s[$this->i] + $this->s[$this->j]) % 256; + + $data[$c] = chr(ord($data[$c]) ^ $this->s[$t]); + } + return $data; + } +} diff --git a/assets/excel/PHPExcel/Reader/Excel5/Style/Border.php b/assets/excel/PHPExcel/Reader/Excel5/Style/Border.php new file mode 100644 index 0000000..fb45b9d --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Style/Border.php @@ -0,0 +1,36 @@ +<?php + +class PHPExcel_Reader_Excel5_Style_Border +{ + protected static $map = array( + 0x00 => PHPExcel_Style_Border::BORDER_NONE, + 0x01 => PHPExcel_Style_Border::BORDER_THIN, + 0x02 => PHPExcel_Style_Border::BORDER_MEDIUM, + 0x03 => PHPExcel_Style_Border::BORDER_DASHED, + 0x04 => PHPExcel_Style_Border::BORDER_DOTTED, + 0x05 => PHPExcel_Style_Border::BORDER_THICK, + 0x06 => PHPExcel_Style_Border::BORDER_DOUBLE, + 0x07 => PHPExcel_Style_Border::BORDER_HAIR, + 0x08 => PHPExcel_Style_Border::BORDER_MEDIUMDASHED, + 0x09 => PHPExcel_Style_Border::BORDER_DASHDOT, + 0x0A => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT, + 0x0B => PHPExcel_Style_Border::BORDER_DASHDOTDOT, + 0x0C => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT, + 0x0D => PHPExcel_Style_Border::BORDER_SLANTDASHDOT, + ); + + /** + * Map border style + * OpenOffice documentation: 2.5.11 + * + * @param int $index + * @return string + */ + public static function lookup($index) + { + if (isset(self::$map[$index])) { + return self::$map[$index]; + } + return PHPExcel_Style_Border::BORDER_NONE; + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Excel5/Style/FillPattern.php b/assets/excel/PHPExcel/Reader/Excel5/Style/FillPattern.php new file mode 100644 index 0000000..c92d19a --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Excel5/Style/FillPattern.php @@ -0,0 +1,41 @@ +<?php + +class PHPExcel_Reader_Excel5_Style_FillPattern +{ + protected static $map = array( + 0x00 => PHPExcel_Style_Fill::FILL_NONE, + 0x01 => PHPExcel_Style_Fill::FILL_SOLID, + 0x02 => PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY, + 0x03 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY, + 0x04 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY, + 0x05 => PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL, + 0x06 => PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL, + 0x07 => PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN, + 0x08 => PHPExcel_Style_Fill::FILL_PATTERN_DARKUP, + 0x09 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID, + 0x0A => PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS, + 0x0B => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL, + 0x0C => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL, + 0x0D => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN, + 0x0E => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP, + 0x0F => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID, + 0x10 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS, + 0x11 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY125, + 0x12 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625, + ); + + /** + * Get fill pattern from index + * OpenOffice documentation: 2.5.12 + * + * @param int $index + * @return string + */ + public static function lookup($index) + { + if (isset(self::$map[$index])) { + return self::$map[$index]; + } + return PHPExcel_Style_Fill::FILL_NONE; + } +} \ No newline at end of file diff --git a/assets/excel/PHPExcel/Reader/Exception.php b/assets/excel/PHPExcel/Reader/Exception.php new file mode 100644 index 0000000..48b3f82 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Exception.php @@ -0,0 +1,46 @@ +<?php + +/** + * PHPExcel_Reader_Exception + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_Exception extends PHPExcel_Exception +{ + /** + * Error handler callback + * + * @param mixed $code + * @param mixed $string + * @param mixed $file + * @param mixed $line + * @param mixed $context + */ + public static function errorHandlerCallback($code, $string, $file, $line, $context) + { + $e = new self($string, $code); + $e->line = $line; + $e->file = $file; + throw $e; + } +} diff --git a/assets/excel/PHPExcel/Reader/Gnumeric.php b/assets/excel/PHPExcel/Reader/Gnumeric.php new file mode 100644 index 0000000..913e52b --- /dev/null +++ b/assets/excel/PHPExcel/Reader/Gnumeric.php @@ -0,0 +1,850 @@ +<?php + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +/** + * PHPExcel_Reader_Gnumeric + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_Gnumeric extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader +{ + /** + * Formats + * + * @var array + */ + private $styles = array(); + + /** + * Shared Expressions + * + * @var array + */ + private $expressions = array(); + + private $referenceHelper = null; + + /** + * Create a new PHPExcel_Reader_Gnumeric + */ + public function __construct() + { + $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); + $this->referenceHelper = PHPExcel_ReferenceHelper::getInstance(); + } + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + // Check if gzlib functions are available + if (!function_exists('gzread')) { + throw new PHPExcel_Reader_Exception("gzlib library is not enabled"); + } + + // Read signature data (first 3 bytes) + $fh = fopen($pFilename, 'r'); + $data = fread($fh, 2); + fclose($fh); + + if ($data != chr(0x1F).chr(0x8B)) { + return false; + } + + return true; + } + + /** + * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetNames($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $xml = new XMLReader(); + $xml->xml($this->securityScanFile('compress.zlib://'.realpath($pFilename)), null, PHPExcel_Settings::getLibXmlLoaderOptions()); + $xml->setParserProperty(2, true); + + $worksheetNames = array(); + while ($xml->read()) { + if ($xml->name == 'gnm:SheetName' && $xml->nodeType == XMLReader::ELEMENT) { + $xml->read(); // Move onto the value node + $worksheetNames[] = (string) $xml->value; + } elseif ($xml->name == 'gnm:Sheets') { + // break out of the loop once we've got our sheet names rather than parse the entire file + break; + } + } + + return $worksheetNames; + } + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $xml = new XMLReader(); + $xml->xml($this->securityScanFile('compress.zlib://'.realpath($pFilename)), null, PHPExcel_Settings::getLibXmlLoaderOptions()); + $xml->setParserProperty(2, true); + + $worksheetInfo = array(); + while ($xml->read()) { + if ($xml->name == 'gnm:Sheet' && $xml->nodeType == XMLReader::ELEMENT) { + $tmpInfo = array( + 'worksheetName' => '', + 'lastColumnLetter' => 'A', + 'lastColumnIndex' => 0, + 'totalRows' => 0, + 'totalColumns' => 0, + ); + + while ($xml->read()) { + if ($xml->name == 'gnm:Name' && $xml->nodeType == XMLReader::ELEMENT) { + $xml->read(); // Move onto the value node + $tmpInfo['worksheetName'] = (string) $xml->value; + } elseif ($xml->name == 'gnm:MaxCol' && $xml->nodeType == XMLReader::ELEMENT) { + $xml->read(); // Move onto the value node + $tmpInfo['lastColumnIndex'] = (int) $xml->value; + $tmpInfo['totalColumns'] = (int) $xml->value + 1; + } elseif ($xml->name == 'gnm:MaxRow' && $xml->nodeType == XMLReader::ELEMENT) { + $xml->read(); // Move onto the value node + $tmpInfo['totalRows'] = (int) $xml->value + 1; + break; + } + } + $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); + $worksheetInfo[] = $tmpInfo; + } + } + + return $worksheetInfo; + } + + private function gzfileGetContents($filename) + { + $file = @gzopen($filename, 'rb'); + if ($file !== false) { + $data = ''; + while (!gzeof($file)) { + $data .= gzread($file, 1024); + } + gzclose($file); + } + return $data; + } + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $timezoneObj = new DateTimeZone('Europe/London'); + $GMT = new DateTimeZone('UTC'); + + $gFileData = $this->gzfileGetContents($pFilename); + +// echo '<pre>'; +// echo htmlentities($gFileData,ENT_QUOTES,'UTF-8'); +// echo '</pre><hr />'; +// + $xml = simplexml_load_string($this->securityScan($gFileData), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespacesMeta = $xml->getNamespaces(true); + +// var_dump($namespacesMeta); +// + $gnmXML = $xml->children($namespacesMeta['gnm']); + + $docProps = $objPHPExcel->getProperties(); + // Document Properties are held differently, depending on the version of Gnumeric + if (isset($namespacesMeta['office'])) { + $officeXML = $xml->children($namespacesMeta['office']); + $officeDocXML = $officeXML->{'document-meta'}; + $officeDocMetaXML = $officeDocXML->meta; + + foreach ($officeDocMetaXML as $officePropertyData) { + $officePropertyDC = array(); + if (isset($namespacesMeta['dc'])) { + $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']); + } + foreach ($officePropertyDC as $propertyName => $propertyValue) { + $propertyValue = (string) $propertyValue; + switch ($propertyName) { + case 'title': + $docProps->setTitle(trim($propertyValue)); + break; + case 'subject': + $docProps->setSubject(trim($propertyValue)); + break; + case 'creator': + $docProps->setCreator(trim($propertyValue)); + $docProps->setLastModifiedBy(trim($propertyValue)); + break; + case 'date': + $creationDate = strtotime(trim($propertyValue)); + $docProps->setCreated($creationDate); + $docProps->setModified($creationDate); + break; + case 'description': + $docProps->setDescription(trim($propertyValue)); + break; + } + } + $officePropertyMeta = array(); + if (isset($namespacesMeta['meta'])) { + $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']); + } + foreach ($officePropertyMeta as $propertyName => $propertyValue) { + $attributes = $propertyValue->attributes($namespacesMeta['meta']); + $propertyValue = (string) $propertyValue; + switch ($propertyName) { + case 'keyword': + $docProps->setKeywords(trim($propertyValue)); + break; + case 'initial-creator': + $docProps->setCreator(trim($propertyValue)); + $docProps->setLastModifiedBy(trim($propertyValue)); + break; + case 'creation-date': + $creationDate = strtotime(trim($propertyValue)); + $docProps->setCreated($creationDate); + $docProps->setModified($creationDate); + break; + case 'user-defined': + list(, $attrName) = explode(':', $attributes['name']); + switch ($attrName) { + case 'publisher': + $docProps->setCompany(trim($propertyValue)); + break; + case 'category': + $docProps->setCategory(trim($propertyValue)); + break; + case 'manager': + $docProps->setManager(trim($propertyValue)); + break; + } + break; + } + } + } + } elseif (isset($gnmXML->Summary)) { + foreach ($gnmXML->Summary->Item as $summaryItem) { + $propertyName = $summaryItem->name; + $propertyValue = $summaryItem->{'val-string'}; + switch ($propertyName) { + case 'title': + $docProps->setTitle(trim($propertyValue)); + break; + case 'comments': + $docProps->setDescription(trim($propertyValue)); + break; + case 'keywords': + $docProps->setKeywords(trim($propertyValue)); + break; + case 'category': + $docProps->setCategory(trim($propertyValue)); + break; + case 'manager': + $docProps->setManager(trim($propertyValue)); + break; + case 'author': + $docProps->setCreator(trim($propertyValue)); + $docProps->setLastModifiedBy(trim($propertyValue)); + break; + case 'company': + $docProps->setCompany(trim($propertyValue)); + break; + } + } + } + + $worksheetID = 0; + foreach ($gnmXML->Sheets->Sheet as $sheet) { + $worksheetName = (string) $sheet->Name; +// echo '<b>Worksheet: ', $worksheetName,'</b><br />'; + if ((isset($this->loadSheetsOnly)) && (!in_array($worksheetName, $this->loadSheetsOnly))) { + continue; + } + + $maxRow = $maxCol = 0; + + // Create new Worksheet + $objPHPExcel->createSheet(); + $objPHPExcel->setActiveSheetIndex($worksheetID); + // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula + // cells... during the load, all formulae should be correct, and we're simply bringing the worksheet + // name in line with the formula, not the reverse + $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); + + if ((!$this->readDataOnly) && (isset($sheet->PrintInformation))) { + if (isset($sheet->PrintInformation->Margins)) { + foreach ($sheet->PrintInformation->Margins->children('gnm', true) as $key => $margin) { + $marginAttributes = $margin->attributes(); + $marginSize = 72 / 100; // Default + switch ($marginAttributes['PrefUnit']) { + case 'mm': + $marginSize = intval($marginAttributes['Points']) / 100; + break; + } + switch ($key) { + case 'top': + $objPHPExcel->getActiveSheet()->getPageMargins()->setTop($marginSize); + break; + case 'bottom': + $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom($marginSize); + break; + case 'left': + $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft($marginSize); + break; + case 'right': + $objPHPExcel->getActiveSheet()->getPageMargins()->setRight($marginSize); + break; + case 'header': + $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader($marginSize); + break; + case 'footer': + $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter($marginSize); + break; + } + } + } + } + + foreach ($sheet->Cells->Cell as $cell) { + $cellAttributes = $cell->attributes(); + $row = (int) $cellAttributes->Row + 1; + $column = (int) $cellAttributes->Col; + + if ($row > $maxRow) { + $maxRow = $row; + } + if ($column > $maxCol) { + $maxCol = $column; + } + + $column = PHPExcel_Cell::stringFromColumnIndex($column); + + // Read cell? + if ($this->getReadFilter() !== null) { + if (!$this->getReadFilter()->readCell($column, $row, $worksheetName)) { + continue; + } + } + + $ValueType = $cellAttributes->ValueType; + $ExprID = (string) $cellAttributes->ExprID; +// echo 'Cell ', $column, $row,'<br />'; +// echo 'Type is ', $ValueType,'<br />'; +// echo 'Value is ', $cell,'<br />'; + $type = PHPExcel_Cell_DataType::TYPE_FORMULA; + if ($ExprID > '') { + if (((string) $cell) > '') { + $this->expressions[$ExprID] = array( + 'column' => $cellAttributes->Col, + 'row' => $cellAttributes->Row, + 'formula' => (string) $cell + ); +// echo 'NEW EXPRESSION ', $ExprID,'<br />'; + } else { + $expression = $this->expressions[$ExprID]; + + $cell = $this->referenceHelper->updateFormulaReferences( + $expression['formula'], + 'A1', + $cellAttributes->Col - $expression['column'], + $cellAttributes->Row - $expression['row'], + $worksheetName + ); +// echo 'SHARED EXPRESSION ', $ExprID,'<br />'; +// echo 'New Value is ', $cell,'<br />'; + } + $type = PHPExcel_Cell_DataType::TYPE_FORMULA; + } else { + switch ($ValueType) { + case '10': // NULL + $type = PHPExcel_Cell_DataType::TYPE_NULL; + break; + case '20': // Boolean + $type = PHPExcel_Cell_DataType::TYPE_BOOL; + $cell = ($cell == 'TRUE') ? true: false; + break; + case '30': // Integer + $cell = intval($cell); + // Excel 2007+ doesn't differentiate between integer and float, so set the value and dropthru to the next (numeric) case + case '40': // Float + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + break; + case '50': // Error + $type = PHPExcel_Cell_DataType::TYPE_ERROR; + break; + case '60': // String + $type = PHPExcel_Cell_DataType::TYPE_STRING; + break; + case '70': // Cell Range + case '80': // Array + } + } + $objPHPExcel->getActiveSheet()->getCell($column.$row)->setValueExplicit($cell, $type); + } + + if ((!$this->readDataOnly) && (isset($sheet->Objects))) { + foreach ($sheet->Objects->children('gnm', true) as $key => $comment) { + $commentAttributes = $comment->attributes(); + // Only comment objects are handled at the moment + if ($commentAttributes->Text) { + $objPHPExcel->getActiveSheet()->getComment((string)$commentAttributes->ObjectBound)->setAuthor((string)$commentAttributes->Author)->setText($this->parseRichText((string)$commentAttributes->Text)); + } + } + } +// echo '$maxCol=', $maxCol,'; $maxRow=', $maxRow,'<br />'; +// + foreach ($sheet->Styles->StyleRegion as $styleRegion) { + $styleAttributes = $styleRegion->attributes(); + if (($styleAttributes['startRow'] <= $maxRow) && + ($styleAttributes['startCol'] <= $maxCol)) { + $startColumn = PHPExcel_Cell::stringFromColumnIndex((int) $styleAttributes['startCol']); + $startRow = $styleAttributes['startRow'] + 1; + + $endColumn = ($styleAttributes['endCol'] > $maxCol) ? $maxCol : (int) $styleAttributes['endCol']; + $endColumn = PHPExcel_Cell::stringFromColumnIndex($endColumn); + $endRow = ($styleAttributes['endRow'] > $maxRow) ? $maxRow : $styleAttributes['endRow']; + $endRow += 1; + $cellRange = $startColumn.$startRow.':'.$endColumn.$endRow; +// echo $cellRange,'<br />'; + + $styleAttributes = $styleRegion->Style->attributes(); +// var_dump($styleAttributes); +// echo '<br />'; + + // We still set the number format mask for date/time values, even if readDataOnly is true + if ((!$this->readDataOnly) || + (PHPExcel_Shared_Date::isDateTimeFormatCode((string) $styleAttributes['Format']))) { + $styleArray = array(); + $styleArray['numberformat']['code'] = (string) $styleAttributes['Format']; + // If readDataOnly is false, we set all formatting information + if (!$this->readDataOnly) { + switch ($styleAttributes['HAlign']) { + case '1': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; + break; + case '2': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_LEFT; + break; + case '4': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_RIGHT; + break; + case '8': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER; + break; + case '16': + case '64': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS; + break; + case '32': + $styleArray['alignment']['horizontal'] = PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY; + break; + } + + switch ($styleAttributes['VAlign']) { + case '1': + $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_TOP; + break; + case '2': + $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; + break; + case '4': + $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_CENTER; + break; + case '8': + $styleArray['alignment']['vertical'] = PHPExcel_Style_Alignment::VERTICAL_JUSTIFY; + break; + } + + $styleArray['alignment']['wrap'] = ($styleAttributes['WrapText'] == '1') ? true : false; + $styleArray['alignment']['shrinkToFit'] = ($styleAttributes['ShrinkToFit'] == '1') ? true : false; + $styleArray['alignment']['indent'] = (intval($styleAttributes["Indent"]) > 0) ? $styleAttributes["indent"] : 0; + + $RGB = self::parseGnumericColour($styleAttributes["Fore"]); + $styleArray['font']['color']['rgb'] = $RGB; + $RGB = self::parseGnumericColour($styleAttributes["Back"]); + $shade = $styleAttributes["Shade"]; + if (($RGB != '000000') || ($shade != '0')) { + $styleArray['fill']['color']['rgb'] = $styleArray['fill']['startcolor']['rgb'] = $RGB; + $RGB2 = self::parseGnumericColour($styleAttributes["PatternColor"]); + $styleArray['fill']['endcolor']['rgb'] = $RGB2; + switch ($shade) { + case '1': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_SOLID; + break; + case '2': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR; + break; + case '3': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_GRADIENT_PATH; + break; + case '4': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN; + break; + case '5': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY; + break; + case '6': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID; + break; + case '7': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL; + break; + case '8': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS; + break; + case '9': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKUP; + break; + case '10': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL; + break; + case '11': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625; + break; + case '12': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_GRAY125; + break; + case '13': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN; + break; + case '14': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY; + break; + case '15': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID; + break; + case '16': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL; + break; + case '17': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS; + break; + case '18': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP; + break; + case '19': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL; + break; + case '20': + $styleArray['fill']['type'] = PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY; + break; + } + } + + $fontAttributes = $styleRegion->Style->Font->attributes(); +// var_dump($fontAttributes); +// echo '<br />'; + $styleArray['font']['name'] = (string) $styleRegion->Style->Font; + $styleArray['font']['size'] = intval($fontAttributes['Unit']); + $styleArray['font']['bold'] = ($fontAttributes['Bold'] == '1') ? true : false; + $styleArray['font']['italic'] = ($fontAttributes['Italic'] == '1') ? true : false; + $styleArray['font']['strike'] = ($fontAttributes['StrikeThrough'] == '1') ? true : false; + switch ($fontAttributes['Underline']) { + case '1': + $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLE; + break; + case '2': + $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLE; + break; + case '3': + $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING; + break; + case '4': + $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING; + break; + default: + $styleArray['font']['underline'] = PHPExcel_Style_Font::UNDERLINE_NONE; + break; + } + switch ($fontAttributes['Script']) { + case '1': + $styleArray['font']['superScript'] = true; + break; + case '-1': + $styleArray['font']['subScript'] = true; + break; + } + + if (isset($styleRegion->Style->StyleBorder)) { + if (isset($styleRegion->Style->StyleBorder->Top)) { + $styleArray['borders']['top'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Top->attributes()); + } + if (isset($styleRegion->Style->StyleBorder->Bottom)) { + $styleArray['borders']['bottom'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Bottom->attributes()); + } + if (isset($styleRegion->Style->StyleBorder->Left)) { + $styleArray['borders']['left'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Left->attributes()); + } + if (isset($styleRegion->Style->StyleBorder->Right)) { + $styleArray['borders']['right'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Right->attributes()); + } + if ((isset($styleRegion->Style->StyleBorder->Diagonal)) && (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}))) { + $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes()); + $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_BOTH; + } elseif (isset($styleRegion->Style->StyleBorder->Diagonal)) { + $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->Diagonal->attributes()); + $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_UP; + } elseif (isset($styleRegion->Style->StyleBorder->{'Rev-Diagonal'})) { + $styleArray['borders']['diagonal'] = self::parseBorderAttributes($styleRegion->Style->StyleBorder->{'Rev-Diagonal'}->attributes()); + $styleArray['borders']['diagonaldirection'] = PHPExcel_Style_Borders::DIAGONAL_DOWN; + } + } + if (isset($styleRegion->Style->HyperLink)) { + // TO DO + $hyperlink = $styleRegion->Style->HyperLink->attributes(); + } + } +// var_dump($styleArray); +// echo '<br />'; + $objPHPExcel->getActiveSheet()->getStyle($cellRange)->applyFromArray($styleArray); + } + } + } + + if ((!$this->readDataOnly) && (isset($sheet->Cols))) { + // Column Widths + $columnAttributes = $sheet->Cols->attributes(); + $defaultWidth = $columnAttributes['DefaultSizePts'] / 5.4; + $c = 0; + foreach ($sheet->Cols->ColInfo as $columnOverride) { + $columnAttributes = $columnOverride->attributes(); + $column = $columnAttributes['No']; + $columnWidth = $columnAttributes['Unit'] / 5.4; + $hidden = ((isset($columnAttributes['Hidden'])) && ($columnAttributes['Hidden'] == '1')) ? true : false; + $columnCount = (isset($columnAttributes['Count'])) ? $columnAttributes['Count'] : 1; + while ($c < $column) { + $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth); + ++$c; + } + while (($c < ($column+$columnCount)) && ($c <= $maxCol)) { + $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($columnWidth); + if ($hidden) { + $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setVisible(false); + } + ++$c; + } + } + while ($c <= $maxCol) { + $objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($c))->setWidth($defaultWidth); + ++$c; + } + } + + if ((!$this->readDataOnly) && (isset($sheet->Rows))) { + // Row Heights + $rowAttributes = $sheet->Rows->attributes(); + $defaultHeight = $rowAttributes['DefaultSizePts']; + $r = 0; + + foreach ($sheet->Rows->RowInfo as $rowOverride) { + $rowAttributes = $rowOverride->attributes(); + $row = $rowAttributes['No']; + $rowHeight = $rowAttributes['Unit']; + $hidden = ((isset($rowAttributes['Hidden'])) && ($rowAttributes['Hidden'] == '1')) ? true : false; + $rowCount = (isset($rowAttributes['Count'])) ? $rowAttributes['Count'] : 1; + while ($r < $row) { + ++$r; + $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight); + } + while (($r < ($row+$rowCount)) && ($r < $maxRow)) { + ++$r; + $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($rowHeight); + if ($hidden) { + $objPHPExcel->getActiveSheet()->getRowDimension($r)->setVisible(false); + } + } + } + while ($r < $maxRow) { + ++$r; + $objPHPExcel->getActiveSheet()->getRowDimension($r)->setRowHeight($defaultHeight); + } + } + + // Handle Merged Cells in this worksheet + if (isset($sheet->MergedRegions)) { + foreach ($sheet->MergedRegions->Merge as $mergeCells) { + if (strpos($mergeCells, ':') !== false) { + $objPHPExcel->getActiveSheet()->mergeCells($mergeCells); + } + } + } + + $worksheetID++; + } + + // Loop through definedNames (global named ranges) + if (isset($gnmXML->Names)) { + foreach ($gnmXML->Names->Name as $namedRange) { + $name = (string) $namedRange->name; + $range = (string) $namedRange->value; + if (stripos($range, '#REF!') !== false) { + continue; + } + + $range = explode('!', $range); + $range[0] = trim($range[0], "'"); + if ($worksheet = $objPHPExcel->getSheetByName($range[0])) { + $extractedRange = str_replace('$', '', $range[1]); + $objPHPExcel->addNamedRange(new PHPExcel_NamedRange($name, $worksheet, $extractedRange)); + } + } + } + + // Return + return $objPHPExcel; + } + + private static function parseBorderAttributes($borderAttributes) + { + $styleArray = array(); + if (isset($borderAttributes["Color"])) { + $styleArray['color']['rgb'] = self::parseGnumericColour($borderAttributes["Color"]); + } + + switch ($borderAttributes["Style"]) { + case '0': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_NONE; + break; + case '1': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case '2': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUM; + break; + case '3': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_SLANTDASHDOT; + break; + case '4': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHED; + break; + case '5': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_THICK; + break; + case '6': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOUBLE; + break; + case '7': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_DOTTED; + break; + case '8': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHED; + break; + case '9': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOT; + break; + case '10': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT; + break; + case '11': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_DASHDOTDOT; + break; + case '12': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT; + break; + case '13': + $styleArray['style'] = PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT; + break; + } + return $styleArray; + } + + private function parseRichText($is = '') + { + $value = new PHPExcel_RichText(); + $value->createText($is); + + return $value; + } + + private static function parseGnumericColour($gnmColour) + { + list($gnmR, $gnmG, $gnmB) = explode(':', $gnmColour); + $gnmR = substr(str_pad($gnmR, 4, '0', STR_PAD_RIGHT), 0, 2); + $gnmG = substr(str_pad($gnmG, 4, '0', STR_PAD_RIGHT), 0, 2); + $gnmB = substr(str_pad($gnmB, 4, '0', STR_PAD_RIGHT), 0, 2); + return $gnmR . $gnmG . $gnmB; + } +} diff --git a/assets/excel/PHPExcel/Reader/HTML.php b/assets/excel/PHPExcel/Reader/HTML.php new file mode 100644 index 0000000..ac762a4 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/HTML.php @@ -0,0 +1,549 @@ +<?php + +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +/** + * PHPExcel_Reader_HTML + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +/** PHPExcel root directory */ +class PHPExcel_Reader_HTML extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader +{ + + /** + * Input encoding + * + * @var string + */ + protected $inputEncoding = 'ANSI'; + + /** + * Sheet index to read + * + * @var int + */ + protected $sheetIndex = 0; + + /** + * Formats + * + * @var array + */ + protected $formats = array( + 'h1' => array( + 'font' => array( + 'bold' => true, + 'size' => 24, + ), + ), // Bold, 24pt + 'h2' => array( + 'font' => array( + 'bold' => true, + 'size' => 18, + ), + ), // Bold, 18pt + 'h3' => array( + 'font' => array( + 'bold' => true, + 'size' => 13.5, + ), + ), // Bold, 13.5pt + 'h4' => array( + 'font' => array( + 'bold' => true, + 'size' => 12, + ), + ), // Bold, 12pt + 'h5' => array( + 'font' => array( + 'bold' => true, + 'size' => 10, + ), + ), // Bold, 10pt + 'h6' => array( + 'font' => array( + 'bold' => true, + 'size' => 7.5, + ), + ), // Bold, 7.5pt + 'a' => array( + 'font' => array( + 'underline' => true, + 'color' => array( + 'argb' => PHPExcel_Style_Color::COLOR_BLUE, + ), + ), + ), // Blue underlined + 'hr' => array( + 'borders' => array( + 'bottom' => array( + 'style' => PHPExcel_Style_Border::BORDER_THIN, + 'color' => array( + PHPExcel_Style_Color::COLOR_BLACK, + ), + ), + ), + ), // Bottom border + ); + + protected $rowspan = array(); + + /** + * Create a new PHPExcel_Reader_HTML + */ + public function __construct() + { + $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + /** + * Validate that the current file is an HTML file + * + * @return boolean + */ + protected function isValidFormat() + { + // Reading 2048 bytes should be enough to validate that the format is HTML + $data = fread($this->fileHandle, 2048); + if ((strpos($data, '<') !== false) && + (strlen($data) !== strlen(strip_tags($data)))) { + return true; + } + + return false; + } + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + /** + * Set input encoding + * + * @param string $pValue Input encoding + */ + public function setInputEncoding($pValue = 'ANSI') + { + $this->inputEncoding = $pValue; + + return $this; + } + + /** + * Get input encoding + * + * @return string + */ + public function getInputEncoding() + { + return $this->inputEncoding; + } + + // Data Array used for testing only, should write to PHPExcel object on completion of tests + protected $dataArray = array(); + protected $tableLevel = 0; + protected $nestedColumn = array('A'); + + protected function setTableStartColumn($column) + { + if ($this->tableLevel == 0) { + $column = 'A'; + } + ++$this->tableLevel; + $this->nestedColumn[$this->tableLevel] = $column; + + return $this->nestedColumn[$this->tableLevel]; + } + + protected function getTableStartColumn() + { + return $this->nestedColumn[$this->tableLevel]; + } + + protected function releaseTableStartColumn() + { + --$this->tableLevel; + + return array_pop($this->nestedColumn); + } + + protected function flushCell($sheet, $column, $row, &$cellContent) + { + if (is_string($cellContent)) { + // Simple String content + if (trim($cellContent) > '') { + // Only actually write it if there's content in the string +// echo 'FLUSH CELL: ' , $column , $row , ' => ' , $cellContent , '<br />'; + // Write to worksheet to be done here... + // ... we return the cell so we can mess about with styles more easily + $sheet->setCellValue($column . $row, $cellContent, true); + $this->dataArray[$row][$column] = $cellContent; + } + } else { + // We have a Rich Text run + // TODO + $this->dataArray[$row][$column] = 'RICH TEXT: ' . $cellContent; + } + $cellContent = (string) ''; + } + + protected function processDomElement(DOMNode $element, $sheet, &$row, &$column, &$cellContent, $format = null) + { + foreach ($element->childNodes as $child) { + if ($child instanceof DOMText) { + $domText = preg_replace('/\s+/u', ' ', trim($child->nodeValue)); + if (is_string($cellContent)) { + // simply append the text if the cell content is a plain text string + $cellContent .= $domText; + } else { + // but if we have a rich text run instead, we need to append it correctly + // TODO + } + } elseif ($child instanceof DOMElement) { +// echo '<b>DOM ELEMENT: </b>' , strtoupper($child->nodeName) , '<br />'; + + $attributeArray = array(); + foreach ($child->attributes as $attribute) { +// echo '<b>ATTRIBUTE: </b>' , $attribute->name , ' => ' , $attribute->value , '<br />'; + $attributeArray[$attribute->name] = $attribute->value; + } + + switch ($child->nodeName) { + case 'meta': + foreach ($attributeArray as $attributeName => $attributeValue) { + switch ($attributeName) { + case 'content': + // TODO + // Extract character set, so we can convert to UTF-8 if required + break; + } + } + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + break; + case 'title': + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + $sheet->setTitle($cellContent); + $cellContent = ''; + break; + case 'span': + case 'div': + case 'font': + case 'i': + case 'em': + case 'strong': + case 'b': +// echo 'STYLING, SPAN OR DIV<br />'; + if ($cellContent > '') { + $cellContent .= ' '; + } + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + if ($cellContent > '') { + $cellContent .= ' '; + } +// echo 'END OF STYLING, SPAN OR DIV<br />'; + break; + case 'hr': + $this->flushCell($sheet, $column, $row, $cellContent); + ++$row; + if (isset($this->formats[$child->nodeName])) { + $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); + } else { + $cellContent = '----------'; + $this->flushCell($sheet, $column, $row, $cellContent); + } + ++$row; + // Add a break after a horizontal rule, simply by allowing the code to dropthru + case 'br': + if ($this->tableLevel > 0) { + // If we're inside a table, replace with a \n + $cellContent .= "\n"; + } else { + // Otherwise flush our existing content and move the row cursor on + $this->flushCell($sheet, $column, $row, $cellContent); + ++$row; + } +// echo 'HARD LINE BREAK: ' , '<br />'; + break; + case 'a': +// echo 'START OF HYPERLINK: ' , '<br />'; + foreach ($attributeArray as $attributeName => $attributeValue) { + switch ($attributeName) { + case 'href': +// echo 'Link to ' , $attributeValue , '<br />'; + $sheet->getCell($column . $row)->getHyperlink()->setUrl($attributeValue); + if (isset($this->formats[$child->nodeName])) { + $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); + } + break; + } + } + $cellContent .= ' '; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF HYPERLINK:' , '<br />'; + break; + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': + case 'ol': + case 'ul': + case 'p': + if ($this->tableLevel > 0) { + // If we're inside a table, replace with a \n + $cellContent .= "\n"; +// echo 'LIST ENTRY: ' , '<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF LIST ENTRY:' , '<br />'; + } else { + if ($cellContent > '') { + $this->flushCell($sheet, $column, $row, $cellContent); + $row++; + } +// echo 'START OF PARAGRAPH: ' , '<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF PARAGRAPH:' , '<br />'; + $this->flushCell($sheet, $column, $row, $cellContent); + + if (isset($this->formats[$child->nodeName])) { + $sheet->getStyle($column . $row)->applyFromArray($this->formats[$child->nodeName]); + } + + $row++; + $column = 'A'; + } + break; + case 'li': + if ($this->tableLevel > 0) { + // If we're inside a table, replace with a \n + $cellContent .= "\n"; +// echo 'LIST ENTRY: ' , '<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF LIST ENTRY:' , '<br />'; + } else { + if ($cellContent > '') { + $this->flushCell($sheet, $column, $row, $cellContent); + } + ++$row; +// echo 'LIST ENTRY: ' , '<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF LIST ENTRY:' , '<br />'; + $this->flushCell($sheet, $column, $row, $cellContent); + $column = 'A'; + } + break; + case 'table': + $this->flushCell($sheet, $column, $row, $cellContent); + $column = $this->setTableStartColumn($column); +// echo 'START OF TABLE LEVEL ' , $this->tableLevel , '<br />'; + if ($this->tableLevel > 1) { + --$row; + } + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF TABLE LEVEL ' , $this->tableLevel , '<br />'; + $column = $this->releaseTableStartColumn(); + if ($this->tableLevel > 1) { + ++$column; + } else { + ++$row; + } + break; + case 'thead': + case 'tbody': + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + break; + case 'tr': + $column = $this->getTableStartColumn(); + $cellContent = ''; +// echo 'START OF TABLE ' , $this->tableLevel , ' ROW<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + ++$row; +// echo 'END OF TABLE ' , $this->tableLevel , ' ROW<br />'; + break; + case 'th': + case 'td': +// echo 'START OF TABLE ' , $this->tableLevel , ' CELL<br />'; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); +// echo 'END OF TABLE ' , $this->tableLevel , ' CELL<br />'; + + while (isset($this->rowspan[$column . $row])) { + ++$column; + } + + $this->flushCell($sheet, $column, $row, $cellContent); + +// if (isset($attributeArray['style']) && !empty($attributeArray['style'])) { +// $styleAry = $this->getPhpExcelStyleArray($attributeArray['style']); +// +// if (!empty($styleAry)) { +// $sheet->getStyle($column . $row)->applyFromArray($styleAry); +// } +// } + + if (isset($attributeArray['rowspan']) && isset($attributeArray['colspan'])) { + //create merging rowspan and colspan + $columnTo = $column; + for ($i = 0; $i < $attributeArray['colspan'] - 1; $i++) { + ++$columnTo; + } + $range = $column . $row . ':' . $columnTo . ($row + $attributeArray['rowspan'] - 1); + foreach (\PHPExcel_Cell::extractAllCellReferencesInRange($range) as $value) { + $this->rowspan[$value] = true; + } + $sheet->mergeCells($range); + $column = $columnTo; + } elseif (isset($attributeArray['rowspan'])) { + //create merging rowspan + $range = $column . $row . ':' . $column . ($row + $attributeArray['rowspan'] - 1); + foreach (\PHPExcel_Cell::extractAllCellReferencesInRange($range) as $value) { + $this->rowspan[$value] = true; + } + $sheet->mergeCells($range); + } elseif (isset($attributeArray['colspan'])) { + //create merging colspan + $columnTo = $column; + for ($i = 0; $i < $attributeArray['colspan'] - 1; $i++) { + ++$columnTo; + } + $sheet->mergeCells($column . $row . ':' . $columnTo . $row); + $column = $columnTo; + } + ++$column; + break; + case 'body': + $row = 1; + $column = 'A'; + $content = ''; + $this->tableLevel = 0; + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + break; + default: + $this->processDomElement($child, $sheet, $row, $column, $cellContent); + } + } + } + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + // Open file to validate + $this->openFile($pFilename); + if (!$this->isValidFormat()) { + fclose($this->fileHandle); + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid HTML file."); + } + // Close after validating + fclose($this->fileHandle); + + // Create new PHPExcel + while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { + $objPHPExcel->createSheet(); + } + $objPHPExcel->setActiveSheetIndex($this->sheetIndex); + + // Create a new DOM object + $dom = new domDocument; + // Reload the HTML file into the DOM object + $loaded = $dom->loadHTML(mb_convert_encoding($this->securityScanFile($pFilename), 'HTML-ENTITIES', 'UTF-8')); + if ($loaded === false) { + throw new PHPExcel_Reader_Exception('Failed to load ' . $pFilename . ' as a DOM Document'); + } + + // Discard white space + $dom->preserveWhiteSpace = false; + + $row = 0; + $column = 'A'; + $content = ''; + $this->processDomElement($dom, $objPHPExcel->getActiveSheet(), $row, $column, $content); + + // Return + return $objPHPExcel; + } + + /** + * Get sheet index + * + * @return int + */ + public function getSheetIndex() + { + return $this->sheetIndex; + } + + /** + * Set sheet index + * + * @param int $pValue Sheet index + * @return PHPExcel_Reader_HTML + */ + public function setSheetIndex($pValue = 0) + { + $this->sheetIndex = $pValue; + + return $this; + } + + /** + * Scan theXML for use of <!ENTITY to prevent XXE/XEE attacks + * + * @param string $xml + * @throws PHPExcel_Reader_Exception + */ + public function securityScan($xml) + { + $pattern = '/\\0?' . implode('\\0?', str_split('<!ENTITY')) . '\\0?/'; + if (preg_match($pattern, $xml)) { + throw new PHPExcel_Reader_Exception('Detected use of ENTITY in XML, spreadsheet file load() aborted to prevent XXE/XEE attacks'); + } + return $xml; + } +} diff --git a/assets/excel/PHPExcel/Reader/IReadFilter.php b/assets/excel/PHPExcel/Reader/IReadFilter.php new file mode 100644 index 0000000..f7c852d --- /dev/null +++ b/assets/excel/PHPExcel/Reader/IReadFilter.php @@ -0,0 +1,39 @@ +<?php + +/** + * PHPExcel_Reader_IReadFilter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +interface PHPExcel_Reader_IReadFilter +{ + /** + * Should this cell be read? + * + * @param $column Column address (as a string value like "A", or "IV") + * @param $row Row number + * @param $worksheetName Optional worksheet name + * @return boolean + */ + public function readCell($column, $row, $worksheetName = ''); +} diff --git a/assets/excel/PHPExcel/Reader/IReader.php b/assets/excel/PHPExcel/Reader/IReader.php new file mode 100644 index 0000000..9034546 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/IReader.php @@ -0,0 +1,46 @@ +<?php + +/** + * PHPExcel_Reader_IReader + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +interface PHPExcel_Reader_IReader +{ + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + */ + public function canRead($pFilename); + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename); +} diff --git a/assets/excel/PHPExcel/Reader/OOCalc.php b/assets/excel/PHPExcel/Reader/OOCalc.php new file mode 100644 index 0000000..a889d95 --- /dev/null +++ b/assets/excel/PHPExcel/Reader/OOCalc.php @@ -0,0 +1,696 @@ +<?php + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +/** + * PHPExcel_Reader_OOCalc + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_OOCalc extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader +{ + /** + * Formats + * + * @var array + */ + private $styles = array(); + + /** + * Create a new PHPExcel_Reader_OOCalc + */ + public function __construct() + { + $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + /** + * Can the current PHPExcel_Reader_IReader read the file? + * + * @param string $pFilename + * @return boolean + * @throws PHPExcel_Reader_Exception + */ + public function canRead($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $zipClass = PHPExcel_Settings::getZipClass(); + + // Check if zip class exists +// if (!class_exists($zipClass, false)) { +// throw new PHPExcel_Reader_Exception($zipClass . " library is not enabled"); +// } + + $mimeType = 'UNKNOWN'; + // Load file + $zip = new $zipClass; + if ($zip->open($pFilename) === true) { + // check if it is an OOXML archive + $stat = $zip->statName('mimetype'); + if ($stat && ($stat['size'] <= 255)) { + $mimeType = $zip->getFromName($stat['name']); + } elseif ($stat = $zip->statName('META-INF/manifest.xml')) { + $xml = simplexml_load_string($this->securityScan($zip->getFromName('META-INF/manifest.xml')), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespacesContent = $xml->getNamespaces(true); + if (isset($namespacesContent['manifest'])) { + $manifest = $xml->children($namespacesContent['manifest']); + foreach ($manifest as $manifestDataSet) { + $manifestAttributes = $manifestDataSet->attributes($namespacesContent['manifest']); + if ($manifestAttributes->{'full-path'} == '/') { + $mimeType = (string) $manifestAttributes->{'media-type'}; + break; + } + } + } + } + + $zip->close(); + + return ($mimeType === 'application/vnd.oasis.opendocument.spreadsheet'); + } + + return false; + } + + + /** + * Reads names of the worksheets from a file, without parsing the whole file to a PHPExcel object + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetNames($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + if (!$zip->open($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); + } + + $worksheetNames = array(); + + $xml = new XMLReader(); + $res = $xml->xml($this->securityScanFile('zip://'.realpath($pFilename).'#content.xml'), null, PHPExcel_Settings::getLibXmlLoaderOptions()); + $xml->setParserProperty(2, true); + + // Step into the first level of content of the XML + $xml->read(); + while ($xml->read()) { + // Quickly jump through to the office:body node + while ($xml->name !== 'office:body') { + if ($xml->isEmptyElement) { + $xml->read(); + } else { + $xml->next(); + } + } + // Now read each node until we find our first table:table node + while ($xml->read()) { + if ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT) { + // Loop through each table:table node reading the table:name attribute for each worksheet name + do { + $worksheetNames[] = $xml->getAttribute('table:name'); + $xml->next(); + } while ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT); + } + } + } + + return $worksheetNames; + } + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $worksheetInfo = array(); + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + if (!$zip->open($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); + } + + $xml = new XMLReader(); + $res = $xml->xml($this->securityScanFile('zip://'.realpath($pFilename).'#content.xml'), null, PHPExcel_Settings::getLibXmlLoaderOptions()); + $xml->setParserProperty(2, true); + + // Step into the first level of content of the XML + $xml->read(); + while ($xml->read()) { + // Quickly jump through to the office:body node + while ($xml->name !== 'office:body') { + if ($xml->isEmptyElement) { + $xml->read(); + } else { + $xml->next(); + } + } + // Now read each node until we find our first table:table node + while ($xml->read()) { + if ($xml->name == 'table:table' && $xml->nodeType == XMLReader::ELEMENT) { + $worksheetNames[] = $xml->getAttribute('table:name'); + + $tmpInfo = array( + 'worksheetName' => $xml->getAttribute('table:name'), + 'lastColumnLetter' => 'A', + 'lastColumnIndex' => 0, + 'totalRows' => 0, + 'totalColumns' => 0, + ); + + // Loop through each child node of the table:table element reading + $currCells = 0; + do { + $xml->read(); + if ($xml->name == 'table:table-row' && $xml->nodeType == XMLReader::ELEMENT) { + $rowspan = $xml->getAttribute('table:number-rows-repeated'); + $rowspan = empty($rowspan) ? 1 : $rowspan; + $tmpInfo['totalRows'] += $rowspan; + $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); + $currCells = 0; + // Step into the row + $xml->read(); + do { + if ($xml->name == 'table:table-cell' && $xml->nodeType == XMLReader::ELEMENT) { + if (!$xml->isEmptyElement) { + $currCells++; + $xml->next(); + } else { + $xml->read(); + } + } elseif ($xml->name == 'table:covered-table-cell' && $xml->nodeType == XMLReader::ELEMENT) { + $mergeSize = $xml->getAttribute('table:number-columns-repeated'); + $currCells += $mergeSize; + $xml->read(); + } + } while ($xml->name != 'table:table-row'); + } + } while ($xml->name != 'table:table'); + + $tmpInfo['totalColumns'] = max($tmpInfo['totalColumns'], $currCells); + $tmpInfo['lastColumnIndex'] = $tmpInfo['totalColumns'] - 1; + $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); + $worksheetInfo[] = $tmpInfo; + } + } + +// foreach ($workbookData->table as $worksheetDataSet) { +// $worksheetData = $worksheetDataSet->children($namespacesContent['table']); +// $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']); +// +// $rowIndex = 0; +// foreach ($worksheetData as $key => $rowData) { +// switch ($key) { +// case 'table-row' : +// $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']); +// $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ? +// $rowDataTableAttributes['number-rows-repeated'] : 1; +// $columnIndex = 0; +// +// foreach ($rowData as $key => $cellData) { +// $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']); +// $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ? +// $cellDataTableAttributes['number-columns-repeated'] : 1; +// $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']); +// if (isset($cellDataOfficeAttributes['value-type'])) { +// $tmpInfo['lastColumnIndex'] = max($tmpInfo['lastColumnIndex'], $columnIndex + $colRepeats - 1); +// $tmpInfo['totalRows'] = max($tmpInfo['totalRows'], $rowIndex + $rowRepeats); +// } +// $columnIndex += $colRepeats; +// } +// $rowIndex += $rowRepeats; +// break; +// } +// } +// +// $tmpInfo['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($tmpInfo['lastColumnIndex']); +// $tmpInfo['totalColumns'] = $tmpInfo['lastColumnIndex'] + 1; +// +// } +// } + } + + return $worksheetInfo; + } + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + private static function identifyFixedStyleValue($styleList, &$styleAttributeValue) + { + $styleAttributeValue = strtolower($styleAttributeValue); + foreach ($styleList as $style) { + if ($styleAttributeValue == strtolower($style)) { + $styleAttributeValue = $style; + return true; + } + } + return false; + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + // Check if file exists + if (!file_exists($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist."); + } + + $timezoneObj = new DateTimeZone('Europe/London'); + $GMT = new DateTimeZone('UTC'); + + $zipClass = PHPExcel_Settings::getZipClass(); + + $zip = new $zipClass; + if (!$zip->open($pFilename)) { + throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! Error opening file."); + } + +// echo '<h1>Meta Information</h1>'; + $xml = simplexml_load_string($this->securityScan($zip->getFromName("meta.xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespacesMeta = $xml->getNamespaces(true); +// echo '<pre>'; +// print_r($namespacesMeta); +// echo '</pre><hr />'; + + $docProps = $objPHPExcel->getProperties(); + $officeProperty = $xml->children($namespacesMeta['office']); + foreach ($officeProperty as $officePropertyData) { + $officePropertyDC = array(); + if (isset($namespacesMeta['dc'])) { + $officePropertyDC = $officePropertyData->children($namespacesMeta['dc']); + } + foreach ($officePropertyDC as $propertyName => $propertyValue) { + $propertyValue = (string) $propertyValue; + switch ($propertyName) { + case 'title': + $docProps->setTitle($propertyValue); + break; + case 'subject': + $docProps->setSubject($propertyValue); + break; + case 'creator': + $docProps->setCreator($propertyValue); + $docProps->setLastModifiedBy($propertyValue); + break; + case 'date': + $creationDate = strtotime($propertyValue); + $docProps->setCreated($creationDate); + $docProps->setModified($creationDate); + break; + case 'description': + $docProps->setDescription($propertyValue); + break; + } + } + $officePropertyMeta = array(); + if (isset($namespacesMeta['dc'])) { + $officePropertyMeta = $officePropertyData->children($namespacesMeta['meta']); + } + foreach ($officePropertyMeta as $propertyName => $propertyValue) { + $propertyValueAttributes = $propertyValue->attributes($namespacesMeta['meta']); + $propertyValue = (string) $propertyValue; + switch ($propertyName) { + case 'initial-creator': + $docProps->setCreator($propertyValue); + break; + case 'keyword': + $docProps->setKeywords($propertyValue); + break; + case 'creation-date': + $creationDate = strtotime($propertyValue); + $docProps->setCreated($creationDate); + break; + case 'user-defined': + $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; + foreach ($propertyValueAttributes as $key => $value) { + if ($key == 'name') { + $propertyValueName = (string) $value; + } elseif ($key == 'value-type') { + switch ($value) { + case 'date': + $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'date'); + $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_DATE; + break; + case 'boolean': + $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'bool'); + $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_BOOLEAN; + break; + case 'float': + $propertyValue = PHPExcel_DocumentProperties::convertProperty($propertyValue, 'r4'); + $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_FLOAT; + break; + default: + $propertyValueType = PHPExcel_DocumentProperties::PROPERTY_TYPE_STRING; + } + } + } + $docProps->setCustomProperty($propertyValueName, $propertyValue, $propertyValueType); + break; + } + } + } + + +// echo '<h1>Workbook Content</h1>'; + $xml = simplexml_load_string($this->securityScan($zip->getFromName("content.xml")), 'SimpleXMLElement', PHPExcel_Settings::getLibXmlLoaderOptions()); + $namespacesContent = $xml->getNamespaces(true); +// echo '<pre>'; +// print_r($namespacesContent); +// echo '</pre><hr />'; + + $workbook = $xml->children($namespacesContent['office']); + foreach ($workbook->body->spreadsheet as $workbookData) { + $workbookData = $workbookData->children($namespacesContent['table']); + $worksheetID = 0; + foreach ($workbookData->table as $worksheetDataSet) { + $worksheetData = $worksheetDataSet->children($namespacesContent['table']); +// print_r($worksheetData); +// echo '<br />'; + $worksheetDataAttributes = $worksheetDataSet->attributes($namespacesContent['table']); +// print_r($worksheetDataAttributes); +// echo '<br />'; + if ((isset($this->loadSheetsOnly)) && (isset($worksheetDataAttributes['name'])) && + (!in_array($worksheetDataAttributes['name'], $this->loadSheetsOnly))) { + continue; + } + +// echo '<h2>Worksheet '.$worksheetDataAttributes['name'].'</h2>'; + // Create new Worksheet + $objPHPExcel->createSheet(); + $objPHPExcel->setActiveSheetIndex($worksheetID); + if (isset($worksheetDataAttributes['name'])) { + $worksheetName = (string) $worksheetDataAttributes['name']; + // Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in + // formula cells... during the load, all formulae should be correct, and we're simply + // bringing the worksheet name in line with the formula, not the reverse + $objPHPExcel->getActiveSheet()->setTitle($worksheetName, false); + } + + $rowID = 1; + foreach ($worksheetData as $key => $rowData) { +// echo '<b>'.$key.'</b><br />'; + switch ($key) { + case 'table-header-rows': + foreach ($rowData as $key => $cellData) { + $rowData = $cellData; + break; + } + case 'table-row': + $rowDataTableAttributes = $rowData->attributes($namespacesContent['table']); + $rowRepeats = (isset($rowDataTableAttributes['number-rows-repeated'])) ? $rowDataTableAttributes['number-rows-repeated'] : 1; + $columnID = 'A'; + foreach ($rowData as $key => $cellData) { + if ($this->getReadFilter() !== null) { + if (!$this->getReadFilter()->readCell($columnID, $rowID, $worksheetName)) { + continue; + } + } + +// echo '<b>'.$columnID.$rowID.'</b><br />'; + $cellDataText = (isset($namespacesContent['text'])) ? $cellData->children($namespacesContent['text']) : ''; + $cellDataOffice = $cellData->children($namespacesContent['office']); + $cellDataOfficeAttributes = $cellData->attributes($namespacesContent['office']); + $cellDataTableAttributes = $cellData->attributes($namespacesContent['table']); + +// echo 'Office Attributes: '; +// print_r($cellDataOfficeAttributes); +// echo '<br />Table Attributes: '; +// print_r($cellDataTableAttributes); +// echo '<br />Cell Data Text'; +// print_r($cellDataText); +// echo '<br />'; +// + $type = $formatting = $hyperlink = null; + $hasCalculatedValue = false; + $cellDataFormula = ''; + if (isset($cellDataTableAttributes['formula'])) { + $cellDataFormula = $cellDataTableAttributes['formula']; + $hasCalculatedValue = true; + } + + if (isset($cellDataOffice->annotation)) { +// echo 'Cell has comment<br />'; + $annotationText = $cellDataOffice->annotation->children($namespacesContent['text']); + $textArray = array(); + foreach ($annotationText as $t) { + if (isset($t->span)) { + foreach ($t->span as $text) { + $textArray[] = (string)$text; + } + } else { + $textArray[] = (string) $t; + } + } + $text = implode("\n", $textArray); +// echo $text, '<br />'; + $objPHPExcel->getActiveSheet()->getComment($columnID.$rowID)->setText($this->parseRichText($text)); +// ->setAuthor( $author ) + } + + if (isset($cellDataText->p)) { + // Consolidate if there are multiple p records (maybe with spans as well) + $dataArray = array(); + // Text can have multiple text:p and within those, multiple text:span. + // text:p newlines, but text:span does not. + // Also, here we assume there is no text data is span fields are specified, since + // we have no way of knowing proper positioning anyway. + foreach ($cellDataText->p as $pData) { + if (isset($pData->span)) { + // span sections do not newline, so we just create one large string here + $spanSection = ""; + foreach ($pData->span as $spanData) { + $spanSection .= $spanData; + } + array_push($dataArray, $spanSection); + } else { + array_push($dataArray, $pData); + } + } + $allCellDataText = implode($dataArray, "\n"); + +// echo 'Value Type is '.$cellDataOfficeAttributes['value-type'].'<br />'; + switch ($cellDataOfficeAttributes['value-type']) { + case 'string': + $type = PHPExcel_Cell_DataType::TYPE_STRING; + $dataValue = $allCellDataText; + if (isset($dataValue->a)) { + $dataValue = $dataValue->a; + $cellXLinkAttributes = $dataValue->attributes($namespacesContent['xlink']); + $hyperlink = $cellXLinkAttributes['href']; + } + break; + case 'boolean': + $type = PHPExcel_Cell_DataType::TYPE_BOOL; + $dataValue = ($allCellDataText == 'TRUE') ? true : false; + break; + case 'percentage': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $dataValue = (float) $cellDataOfficeAttributes['value']; + if (floor($dataValue) == $dataValue) { + $dataValue = (integer) $dataValue; + } + $formatting = PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00; + break; + case 'currency': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $dataValue = (float) $cellDataOfficeAttributes['value']; + if (floor($dataValue) == $dataValue) { + $dataValue = (integer) $dataValue; + } + $formatting = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE; + break; + case 'float': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $dataValue = (float) $cellDataOfficeAttributes['value']; + if (floor($dataValue) == $dataValue) { + if ($dataValue == (integer) $dataValue) { + $dataValue = (integer) $dataValue; + } else { + $dataValue = (float) $dataValue; + } + } + break; + case 'date': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $dateObj = new DateTime($cellDataOfficeAttributes['date-value'], $GMT); + $dateObj->setTimeZone($timezoneObj); + list($year, $month, $day, $hour, $minute, $second) = explode(' ', $dateObj->format('Y m d H i s')); + $dataValue = PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hour, $minute, $second); + if ($dataValue != floor($dataValue)) { + $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15.' '.PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4; + } else { + $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15; + } + break; + case 'time': + $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; + $dataValue = PHPExcel_Shared_Date::PHPToExcel(strtotime('01-01-1970 '.implode(':', sscanf($cellDataOfficeAttributes['time-value'], 'PT%dH%dM%dS')))); + $formatting = PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4; + break; + } +// echo 'Data value is '.$dataValue.'<br />'; +// if ($hyperlink !== null) { +// echo 'Hyperlink is '.$hyperlink.'<br />'; +// } + } else { + $type = PHPExcel_Cell_DataType::TYPE_NULL; + $dataValue = null; + } + + if ($hasCalculatedValue) { + $type = PHPExcel_Cell_DataType::TYPE_FORMULA; +// echo 'Formula: ', $cellDataFormula, PHP_EOL; + $cellDataFormula = substr($cellDataFormula, strpos($cellDataFormula, ':=')+1); + $temp = explode('"', $cellDataFormula); + $tKey = false; + foreach ($temp as &$value) { + // Only replace in alternate array entries (i.e. non-quoted blocks) + if ($tKey = !$tKey) { + $value = preg_replace('/\[([^\.]+)\.([^\.]+):\.([^\.]+)\]/Ui', '$1!$2:$3', $value); // Cell range reference in another sheet + $value = preg_replace('/\[([^\.]+)\.([^\.]+)\]/Ui', '$1!$2', $value); // Cell reference in another sheet + $value = preg_replace('/\[\.([^\.]+):\.([^\.]+)\]/Ui', '$1:$2', $value); // Cell range reference + $value = preg_replace('/\[\.([^\.]+)\]/Ui', '$1', $value); // Simple cell reference + $value = PHPExcel_Calculation::translateSeparator(';', ',', $value, $inBraces); + } + } + unset($value); + // Then rebuild the formula string + $cellDataFormula = implode('"', $temp); +// echo 'Adjusted Formula: ', $cellDataFormula, PHP_EOL; + } + + $colRepeats = (isset($cellDataTableAttributes['number-columns-repeated'])) ? $cellDataTableAttributes['number-columns-repeated'] : 1; + if ($type !== null) { + for ($i = 0; $i < $colRepeats; ++$i) { + if ($i > 0) { + ++$columnID; + } + if ($type !== PHPExcel_Cell_DataType::TYPE_NULL) { + for ($rowAdjust = 0; $rowAdjust < $rowRepeats; ++$rowAdjust) { + $rID = $rowID + $rowAdjust; + $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setValueExplicit((($hasCalculatedValue) ? $cellDataFormula : $dataValue), $type); + if ($hasCalculatedValue) { +// echo 'Forumla result is '.$dataValue.'<br />'; + $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->setCalculatedValue($dataValue); + } + if ($formatting !== null) { + $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode($formatting); + } else { + $objPHPExcel->getActiveSheet()->getStyle($columnID.$rID)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_GENERAL); + } + if ($hyperlink !== null) { + $objPHPExcel->getActiveSheet()->getCell($columnID.$rID)->getHyperlink()->setUrl($hyperlink); + } + } + } + } + } + + // Merged cells + if ((isset($cellDataTableAttributes['number-columns-spanned'])) || (isset($cellDataTableAttributes['number-rows-spanned']))) { + if (($type !== PHPExcel_Cell_DataType::TYPE_NULL) || (!$this->readDataOnly)) { + $columnTo = $columnID; + if (isset($cellDataTableAttributes['number-columns-spanned'])) { + $columnTo = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($columnID) + $cellDataTableAttributes['number-columns-spanned'] -2); + } + $rowTo = $rowID; + if (isset($cellDataTableAttributes['number-rows-spanned'])) { + $rowTo = $rowTo + $cellDataTableAttributes['number-rows-spanned'] - 1; + } + $cellRange = $columnID.$rowID.':'.$columnTo.$rowTo; + $objPHPExcel->getActiveSheet()->mergeCells($cellRange); + } + } + + ++$columnID; + } + $rowID += $rowRepeats; + break; + } + } + ++$worksheetID; + } + } + + // Return + return $objPHPExcel; + } + + private function parseRichText($is = '') + { + $value = new PHPExcel_RichText(); + + $value->createText($is); + + return $value; + } +} diff --git a/assets/excel/PHPExcel/Reader/SYLK.php b/assets/excel/PHPExcel/Reader/SYLK.php new file mode 100644 index 0000000..eb7ef1a --- /dev/null +++ b/assets/excel/PHPExcel/Reader/SYLK.php @@ -0,0 +1,478 @@ +<?php + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +/** + * PHPExcel_Reader_SYLK + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Reader + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Reader_SYLK extends PHPExcel_Reader_Abstract implements PHPExcel_Reader_IReader +{ + /** + * Input encoding + * + * @var string + */ + private $inputEncoding = 'ANSI'; + + /** + * Sheet index to read + * + * @var int + */ + private $sheetIndex = 0; + + /** + * Formats + * + * @var array + */ + private $formats = array(); + + /** + * Format Count + * + * @var int + */ + private $format = 0; + + /** + * Create a new PHPExcel_Reader_SYLK + */ + public function __construct() + { + $this->readFilter = new PHPExcel_Reader_DefaultReadFilter(); + } + + /** + * Validate that the current file is a SYLK file + * + * @return boolean + */ + protected function isValidFormat() + { + // Read sample data (first 2 KB will do) + $data = fread($this->fileHandle, 2048); + + // Count delimiters in file + $delimiterCount = substr_count($data, ';'); + if ($delimiterCount < 1) { + return false; + } + + // Analyze first line looking for ID; signature + $lines = explode("\n", $data); + if (substr($lines[0], 0, 4) != 'ID;P') { + return false; + } + + return true; + } + + /** + * Set input encoding + * + * @param string $pValue Input encoding + */ + public function setInputEncoding($pValue = 'ANSI') + { + $this->inputEncoding = $pValue; + return $this; + } + + /** + * Get input encoding + * + * @return string + */ + public function getInputEncoding() + { + return $this->inputEncoding; + } + + /** + * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) + * + * @param string $pFilename + * @throws PHPExcel_Reader_Exception + */ + public function listWorksheetInfo($pFilename) + { + // Open file + $this->openFile($pFilename); + if (!$this->isValidFormat()) { + fclose($this->fileHandle); + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + $fileHandle = $this->fileHandle; + rewind($fileHandle); + + $worksheetInfo = array(); + $worksheetInfo[0]['worksheetName'] = 'Worksheet'; + $worksheetInfo[0]['lastColumnLetter'] = 'A'; + $worksheetInfo[0]['lastColumnIndex'] = 0; + $worksheetInfo[0]['totalRows'] = 0; + $worksheetInfo[0]['totalColumns'] = 0; + + // Loop through file + $rowData = array(); + + // loop through one row (line) at a time in the file + $rowIndex = 0; + while (($rowData = fgets($fileHandle)) !== false) { + $columnIndex = 0; + + // convert SYLK encoded $rowData to UTF-8 + $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData); + + // explode each row at semicolons while taking into account that literal semicolon (;) + // is escaped like this (;;) + $rowData = explode("\t", str_replace('¤', ';', str_replace(';', "\t", str_replace(';;', '¤', rtrim($rowData))))); + + $dataType = array_shift($rowData); + if ($dataType == 'C') { + // Read cell value data + foreach ($rowData as $rowDatum) { + switch ($rowDatum{0}) { + case 'C': + case 'X': + $columnIndex = substr($rowDatum, 1) - 1; + break; + case 'R': + case 'Y': + $rowIndex = substr($rowDatum, 1); + break; + } + + $worksheetInfo[0]['totalRows'] = max($worksheetInfo[0]['totalRows'], $rowIndex); + $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], $columnIndex); + } + } + } + + $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']); + $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1; + + // Close file + fclose($fileHandle); + + return $worksheetInfo; + } + + /** + * Loads PHPExcel from file + * + * @param string $pFilename + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function load($pFilename) + { + // Create new PHPExcel + $objPHPExcel = new PHPExcel(); + + // Load into this instance + return $this->loadIntoExisting($pFilename, $objPHPExcel); + } + + /** + * Loads PHPExcel from file into PHPExcel instance + * + * @param string $pFilename + * @param PHPExcel $objPHPExcel + * @return PHPExcel + * @throws PHPExcel_Reader_Exception + */ + public function loadIntoExisting($pFilename, PHPExcel $objPHPExcel) + { + // Open file + $this->openFile($pFilename); + if (!$this->isValidFormat()) { + fclose($this->fileHandle); + throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file."); + } + $fileHandle = $this->fileHandle; + rewind($fileHandle); + + // Create new PHPExcel + while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { + $objPHPExcel->createSheet(); + } + $objPHPExcel->setActiveSheetIndex($this->sheetIndex); + + $fromFormats = array('\-', '\ '); + $toFormats = array('-', ' '); + + // Loop through file + $rowData = array(); + $column = $row = ''; + + // loop through one row (line) at a time in the file + while (($rowData = fgets($fileHandle)) !== false) { + // convert SYLK encoded $rowData to UTF-8 + $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData); + + // explode each row at semicolons while taking into account that literal semicolon (;) + // is escaped like this (;;) + $rowData = explode("\t", str_replace('¤', ';', str_replace(';', "\t", str_replace(';;', '¤', rtrim($rowData))))); + + $dataType = array_shift($rowData); + // Read shared styles + if ($dataType == 'P') { + $formatArray = array(); + foreach ($rowData as $rowDatum) { + switch ($rowDatum{0}) { + case 'P': + $formatArray['numberformat']['code'] = str_replace($fromFormats, $toFormats, substr($rowDatum, 1)); + break; + case 'E': + case 'F': + $formatArray['font']['name'] = substr($rowDatum, 1); + break; + case 'L': + $formatArray['font']['size'] = substr($rowDatum, 1); + break; + case 'S': + $styleSettings = substr($rowDatum, 1); + for ($i=0; $i<strlen($styleSettings); ++$i) { + switch ($styleSettings{$i}) { + case 'I': + $formatArray['font']['italic'] = true; + break; + case 'D': + $formatArray['font']['bold'] = true; + break; + case 'T': + $formatArray['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'B': + $formatArray['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'L': + $formatArray['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'R': + $formatArray['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + } + } + break; + } + } + $this->formats['P'.$this->format++] = $formatArray; + // Read cell value data + } elseif ($dataType == 'C') { + $hasCalculatedValue = false; + $cellData = $cellDataFormula = ''; + foreach ($rowData as $rowDatum) { + switch ($rowDatum{0}) { + case 'C': + case 'X': + $column = substr($rowDatum, 1); + break; + case 'R': + case 'Y': + $row = substr($rowDatum, 1); + break; + case 'K': + $cellData = substr($rowDatum, 1); + break; + case 'E': + $cellDataFormula = '='.substr($rowDatum, 1); + // Convert R1C1 style references to A1 style references (but only when not quoted) + $temp = explode('"', $cellDataFormula); + $key = false; + foreach ($temp as &$value) { + // Only count/replace in alternate array entries + if ($key = !$key) { + preg_match_all('/(R(\[?-?\d*\]?))(C(\[?-?\d*\]?))/', $value, $cellReferences, PREG_SET_ORDER+PREG_OFFSET_CAPTURE); + // Reverse the matches array, otherwise all our offsets will become incorrect if we modify our way + // through the formula from left to right. Reversing means that we work right to left.through + // the formula + $cellReferences = array_reverse($cellReferences); + // Loop through each R1C1 style reference in turn, converting it to its A1 style equivalent, + // then modify the formula to use that new reference + foreach ($cellReferences as $cellReference) { + $rowReference = $cellReference[2][0]; + // Empty R reference is the current row + if ($rowReference == '') { + $rowReference = $row; + } + // Bracketed R references are relative to the current row + if ($rowReference{0} == '[') { + $rowReference = $row + trim($rowReference, '[]'); + } + $columnReference = $cellReference[4][0]; + // Empty C reference is the current column + if ($columnReference == '') { + $columnReference = $column; + } + // Bracketed C references are relative to the current column + if ($columnReference{0} == '[') { + $columnReference = $column + trim($columnReference, '[]'); + } + $A1CellReference = PHPExcel_Cell::stringFromColumnIndex($columnReference-1).$rowReference; + + $value = substr_replace($value, $A1CellReference, $cellReference[0][1], strlen($cellReference[0][0])); + } + } + } + unset($value); + // Then rebuild the formula string + $cellDataFormula = implode('"', $temp); + $hasCalculatedValue = true; + break; + } + } + $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); + $cellData = PHPExcel_Calculation::unwrapResult($cellData); + + // Set cell value + $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setValue(($hasCalculatedValue) ? $cellDataFormula : $cellData); + if ($hasCalculatedValue) { + $cellData = PHPExcel_Calculation::unwrapResult($cellData); + $objPHPExcel->getActiveSheet()->getCell($columnLetter.$row)->setCalculatedValue($cellData); + } + // Read cell formatting + } elseif ($dataType == 'F') { + $formatStyle = $columnWidth = $styleSettings = ''; + $styleData = array(); + foreach ($rowData as $rowDatum) { + switch ($rowDatum{0}) { + case 'C': + case 'X': + $column = substr($rowDatum, 1); + break; + case 'R': + case 'Y': + $row = substr($rowDatum, 1); + break; + case 'P': + $formatStyle = $rowDatum; + break; + case 'W': + list($startCol, $endCol, $columnWidth) = explode(' ', substr($rowDatum, 1)); + break; + case 'S': + $styleSettings = substr($rowDatum, 1); + for ($i=0; $i<strlen($styleSettings); ++$i) { + switch ($styleSettings{$i}) { + case 'I': + $styleData['font']['italic'] = true; + break; + case 'D': + $styleData['font']['bold'] = true; + break; + case 'T': + $styleData['borders']['top']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'B': + $styleData['borders']['bottom']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'L': + $styleData['borders']['left']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + case 'R': + $styleData['borders']['right']['style'] = PHPExcel_Style_Border::BORDER_THIN; + break; + } + } + break; + } + } + if (($formatStyle > '') && ($column > '') && ($row > '')) { + $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); + if (isset($this->formats[$formatStyle])) { + $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($this->formats[$formatStyle]); + } + } + if ((!empty($styleData)) && ($column > '') && ($row > '')) { + $columnLetter = PHPExcel_Cell::stringFromColumnIndex($column-1); + $objPHPExcel->getActiveSheet()->getStyle($columnLetter.$row)->applyFromArray($styleData); + } + if ($columnWidth > '') { + if ($startCol == $endCol) { + $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1); + $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth); + } else { + $startCol = PHPExcel_Cell::stringFromColumnIndex($startCol-1); + $endCol = PHPExcel_Cell::stringFromColumnIndex($endCol-1); + $objPHPExcel->getActiveSheet()->getColumnDimension($startCol)->setWidth($columnWidth); + do { + $objPHPExcel->getActiveSheet()->getColumnDimension(++$startCol)->setWidth($columnWidth); + } while ($startCol != $endCol); + } + } + } else { + foreach ($rowData as $rowDatum) { + switch ($rowDatum{0}) { + case 'C': + case 'X': + $column = substr($rowDatum, 1); + break; + case 'R': + case 'Y': + $row = substr($rowDatum, 1); + break; + } + } + } + } + + // Close file + fclose($fileHandle); + + // Return + return $objPHPExcel; + } + + /** + * Get sheet index + * + * @return int + */ + public function getSheetIndex() + { + return $this->sheetIndex; + } + + /** + * Set sheet index + * + * @param int $pValue Sheet index + * @return PHPExcel_Reader_SYLK + */ + public function setSheetIndex($pValue = 0) + { + $this->sheetIndex = $pValue; + return $this; + } +} diff --git a/assets/excel/PHPExcel/ReferenceHelper.php b/assets/excel/PHPExcel/ReferenceHelper.php new file mode 100644 index 0000000..7d7de93 --- /dev/null +++ b/assets/excel/PHPExcel/ReferenceHelper.php @@ -0,0 +1,913 @@ +<?php + +/** + * PHPExcel_ReferenceHelper (Singleton) + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_ReferenceHelper +{ + /** Constants */ + /** Regular Expressions */ + const REFHELPER_REGEXP_CELLREF = '((\w*|\'[^!]*\')!)?(?<![:a-z\$])(\$?[a-z]{1,3}\$?\d+)(?=[^:!\d\'])'; + const REFHELPER_REGEXP_CELLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}\$?\d+):(\$?[a-z]{1,3}\$?\d+)'; + const REFHELPER_REGEXP_ROWRANGE = '((\w*|\'[^!]*\')!)?(\$?\d+):(\$?\d+)'; + const REFHELPER_REGEXP_COLRANGE = '((\w*|\'[^!]*\')!)?(\$?[a-z]{1,3}):(\$?[a-z]{1,3})'; + + /** + * Instance of this class + * + * @var PHPExcel_ReferenceHelper + */ + private static $instance; + + /** + * Get an instance of this class + * + * @return PHPExcel_ReferenceHelper + */ + public static function getInstance() + { + if (!isset(self::$instance) || (self::$instance === null)) { + self::$instance = new PHPExcel_ReferenceHelper(); + } + + return self::$instance; + } + + /** + * Create a new PHPExcel_ReferenceHelper + */ + protected function __construct() + { + } + + /** + * Compare two column addresses + * Intended for use as a Callback function for sorting column addresses by column + * + * @param string $a First column to test (e.g. 'AA') + * @param string $b Second column to test (e.g. 'Z') + * @return integer + */ + public static function columnSort($a, $b) + { + return strcasecmp(strlen($a) . $a, strlen($b) . $b); + } + + /** + * Compare two column addresses + * Intended for use as a Callback function for reverse sorting column addresses by column + * + * @param string $a First column to test (e.g. 'AA') + * @param string $b Second column to test (e.g. 'Z') + * @return integer + */ + public static function columnReverseSort($a, $b) + { + return 1 - strcasecmp(strlen($a) . $a, strlen($b) . $b); + } + + /** + * Compare two cell addresses + * Intended for use as a Callback function for sorting cell addresses by column and row + * + * @param string $a First cell to test (e.g. 'AA1') + * @param string $b Second cell to test (e.g. 'Z1') + * @return integer + */ + public static function cellSort($a, $b) + { + sscanf($a, '%[A-Z]%d', $ac, $ar); + sscanf($b, '%[A-Z]%d', $bc, $br); + + if ($ar == $br) { + return strcasecmp(strlen($ac) . $ac, strlen($bc) . $bc); + } + return ($ar < $br) ? -1 : 1; + } + + /** + * Compare two cell addresses + * Intended for use as a Callback function for sorting cell addresses by column and row + * + * @param string $a First cell to test (e.g. 'AA1') + * @param string $b Second cell to test (e.g. 'Z1') + * @return integer + */ + public static function cellReverseSort($a, $b) + { + sscanf($a, '%[A-Z]%d', $ac, $ar); + sscanf($b, '%[A-Z]%d', $bc, $br); + + if ($ar == $br) { + return 1 - strcasecmp(strlen($ac) . $ac, strlen($bc) . $bc); + } + return ($ar < $br) ? 1 : -1; + } + + /** + * Test whether a cell address falls within a defined range of cells + * + * @param string $cellAddress Address of the cell we're testing + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @return boolean + */ + private static function cellAddressInDeleteRange($cellAddress, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols) + { + list($cellColumn, $cellRow) = PHPExcel_Cell::coordinateFromString($cellAddress); + $cellColumnIndex = PHPExcel_Cell::columnIndexFromString($cellColumn); + // Is cell within the range of rows/columns if we're deleting + if ($pNumRows < 0 && + ($cellRow >= ($beforeRow + $pNumRows)) && + ($cellRow < $beforeRow)) { + return true; + } elseif ($pNumCols < 0 && + ($cellColumnIndex >= ($beforeColumnIndex + $pNumCols)) && + ($cellColumnIndex < $beforeColumnIndex)) { + return true; + } + return false; + } + + /** + * Update page breaks when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustPageBreaks(PHPExcel_Worksheet $pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aBreaks = $pSheet->getBreaks(); + ($pNumCols > 0 || $pNumRows > 0) ? + uksort($aBreaks, array('PHPExcel_ReferenceHelper','cellReverseSort')) : + uksort($aBreaks, array('PHPExcel_ReferenceHelper','cellSort')); + + foreach ($aBreaks as $key => $value) { + if (self::cellAddressInDeleteRange($key, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols)) { + // If we're deleting, then clear any defined breaks that are within the range + // of rows/columns that we're deleting + $pSheet->setBreak($key, PHPExcel_Worksheet::BREAK_NONE); + } else { + // Otherwise update any affected breaks by inserting a new break at the appropriate point + // and removing the old affected break + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + if ($key != $newReference) { + $pSheet->setBreak($newReference, $value) + ->setBreak($key, PHPExcel_Worksheet::BREAK_NONE); + } + } + } + } + + /** + * Update cell comments when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustComments($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aComments = $pSheet->getComments(); + $aNewComments = array(); // the new array of all comments + + foreach ($aComments as $key => &$value) { + // Any comments inside a deleted range will be ignored + if (!self::cellAddressInDeleteRange($key, $beforeRow, $pNumRows, $beforeColumnIndex, $pNumCols)) { + // Otherwise build a new array of comments indexed by the adjusted cell reference + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + $aNewComments[$newReference] = $value; + } + } + // Replace the comments array with the new set of comments + $pSheet->setComments($aNewComments); + } + + /** + * Update hyperlinks when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustHyperlinks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aHyperlinkCollection = $pSheet->getHyperlinkCollection(); + ($pNumCols > 0 || $pNumRows > 0) ? uksort($aHyperlinkCollection, array('PHPExcel_ReferenceHelper','cellReverseSort')) : uksort($aHyperlinkCollection, array('PHPExcel_ReferenceHelper','cellSort')); + + foreach ($aHyperlinkCollection as $key => $value) { + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + if ($key != $newReference) { + $pSheet->setHyperlink($newReference, $value); + $pSheet->setHyperlink($key, null); + } + } + } + + /** + * Update data validations when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustDataValidations($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aDataValidationCollection = $pSheet->getDataValidationCollection(); + ($pNumCols > 0 || $pNumRows > 0) ? uksort($aDataValidationCollection, array('PHPExcel_ReferenceHelper','cellReverseSort')) : uksort($aDataValidationCollection, array('PHPExcel_ReferenceHelper','cellSort')); + + foreach ($aDataValidationCollection as $key => $value) { + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + if ($key != $newReference) { + $pSheet->setDataValidation($newReference, $value); + $pSheet->setDataValidation($key, null); + } + } + } + + /** + * Update merged cells when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustMergeCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aMergeCells = $pSheet->getMergeCells(); + $aNewMergeCells = array(); // the new array of all merge cells + foreach ($aMergeCells as $key => &$value) { + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + $aNewMergeCells[$newReference] = $newReference; + } + $pSheet->setMergeCells($aNewMergeCells); // replace the merge cells array + } + + /** + * Update protected cells when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustProtectedCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aProtectedCells = $pSheet->getProtectedCells(); + ($pNumCols > 0 || $pNumRows > 0) ? + uksort($aProtectedCells, array('PHPExcel_ReferenceHelper','cellReverseSort')) : + uksort($aProtectedCells, array('PHPExcel_ReferenceHelper','cellSort')); + foreach ($aProtectedCells as $key => $value) { + $newReference = $this->updateCellReference($key, $pBefore, $pNumCols, $pNumRows); + if ($key != $newReference) { + $pSheet->protectCells($newReference, $value, true); + $pSheet->unprotectCells($key); + } + } + } + + /** + * Update column dimensions when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aColumnDimensions = array_reverse($pSheet->getColumnDimensions(), true); + if (!empty($aColumnDimensions)) { + foreach ($aColumnDimensions as $objColumnDimension) { + $newReference = $this->updateCellReference($objColumnDimension->getColumnIndex() . '1', $pBefore, $pNumCols, $pNumRows); + list($newReference) = PHPExcel_Cell::coordinateFromString($newReference); + if ($objColumnDimension->getColumnIndex() != $newReference) { + $objColumnDimension->setColumnIndex($newReference); + } + } + $pSheet->refreshColumnDimensions(); + } + } + + /** + * Update row dimensions when inserting/deleting rows/columns + * + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @param string $pBefore Insert/Delete before this cell address (e.g. 'A1') + * @param integer $beforeColumnIndex Index number of the column we're inserting/deleting before + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $beforeRow Number of the row we're inserting/deleting before + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + */ + protected function adjustRowDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows) + { + $aRowDimensions = array_reverse($pSheet->getRowDimensions(), true); + if (!empty($aRowDimensions)) { + foreach ($aRowDimensions as $objRowDimension) { + $newReference = $this->updateCellReference('A' . $objRowDimension->getRowIndex(), $pBefore, $pNumCols, $pNumRows); + list(, $newReference) = PHPExcel_Cell::coordinateFromString($newReference); + if ($objRowDimension->getRowIndex() != $newReference) { + $objRowDimension->setRowIndex($newReference); + } + } + $pSheet->refreshRowDimensions(); + + $copyDimension = $pSheet->getRowDimension($beforeRow - 1); + for ($i = $beforeRow; $i <= $beforeRow - 1 + $pNumRows; ++$i) { + $newDimension = $pSheet->getRowDimension($i); + $newDimension->setRowHeight($copyDimension->getRowHeight()); + $newDimension->setVisible($copyDimension->getVisible()); + $newDimension->setOutlineLevel($copyDimension->getOutlineLevel()); + $newDimension->setCollapsed($copyDimension->getCollapsed()); + } + } + } + + /** + * Insert a new column or row, updating all possible related data + * + * @param string $pBefore Insert before this cell address (e.g. 'A1') + * @param integer $pNumCols Number of columns to insert/delete (negative values indicate deletion) + * @param integer $pNumRows Number of rows to insert/delete (negative values indicate deletion) + * @param PHPExcel_Worksheet $pSheet The worksheet that we're editing + * @throws PHPExcel_Exception + */ + public function insertNewBefore($pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, PHPExcel_Worksheet $pSheet = null) + { + $remove = ($pNumCols < 0 || $pNumRows < 0); + $aCellCollection = $pSheet->getCellCollection(); + + // Get coordinates of $pBefore + $beforeColumn = 'A'; + $beforeRow = 1; + list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString($pBefore); + $beforeColumnIndex = PHPExcel_Cell::columnIndexFromString($beforeColumn); + + // Clear cells if we are removing columns or rows + $highestColumn = $pSheet->getHighestColumn(); + $highestRow = $pSheet->getHighestRow(); + + // 1. Clear column strips if we are removing columns + if ($pNumCols < 0 && $beforeColumnIndex - 2 + $pNumCols > 0) { + for ($i = 1; $i <= $highestRow - 1; ++$i) { + for ($j = $beforeColumnIndex - 1 + $pNumCols; $j <= $beforeColumnIndex - 2; ++$j) { + $coordinate = PHPExcel_Cell::stringFromColumnIndex($j) . $i; + $pSheet->removeConditionalStyles($coordinate); + if ($pSheet->cellExists($coordinate)) { + $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL); + $pSheet->getCell($coordinate)->setXfIndex(0); + } + } + } + } + + // 2. Clear row strips if we are removing rows + if ($pNumRows < 0 && $beforeRow - 1 + $pNumRows > 0) { + for ($i = $beforeColumnIndex - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) { + for ($j = $beforeRow + $pNumRows; $j <= $beforeRow - 1; ++$j) { + $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . $j; + $pSheet->removeConditionalStyles($coordinate); + if ($pSheet->cellExists($coordinate)) { + $pSheet->getCell($coordinate)->setValueExplicit('', PHPExcel_Cell_DataType::TYPE_NULL); + $pSheet->getCell($coordinate)->setXfIndex(0); + } + } + } + } + + // Loop through cells, bottom-up, and change cell coordinates + if ($remove) { + // It's faster to reverse and pop than to use unshift, especially with large cell collections + $aCellCollection = array_reverse($aCellCollection); + } + while ($cellID = array_pop($aCellCollection)) { + $cell = $pSheet->getCell($cellID); + $cellIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn()); + + if ($cellIndex-1 + $pNumCols < 0) { + continue; + } + + // New coordinates + $newCoordinates = PHPExcel_Cell::stringFromColumnIndex($cellIndex-1 + $pNumCols) . ($cell->getRow() + $pNumRows); + + // Should the cell be updated? Move value and cellXf index from one cell to another. + if (($cellIndex >= $beforeColumnIndex) && ($cell->getRow() >= $beforeRow)) { + // Update cell styles + $pSheet->getCell($newCoordinates)->setXfIndex($cell->getXfIndex()); + + // Insert this cell at its new location + if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) { + // Formula should be adjusted + $pSheet->getCell($newCoordinates) + ->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle())); + } else { + // Formula should not be adjusted + $pSheet->getCell($newCoordinates)->setValue($cell->getValue()); + } + + // Clear the original cell + $pSheet->getCellCacheController()->deleteCacheData($cellID); + } else { + /* We don't need to update styles for rows/columns before our insertion position, + but we do still need to adjust any formulae in those cells */ + if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) { + // Formula should be adjusted + $cell->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle())); + } + + } + } + + // Duplicate styles for the newly inserted cells + $highestColumn = $pSheet->getHighestColumn(); + $highestRow = $pSheet->getHighestRow(); + + if ($pNumCols > 0 && $beforeColumnIndex - 2 > 0) { + for ($i = $beforeRow; $i <= $highestRow - 1; ++$i) { + // Style + $coordinate = PHPExcel_Cell::stringFromColumnIndex($beforeColumnIndex - 2) . $i; + if ($pSheet->cellExists($coordinate)) { + $xfIndex = $pSheet->getCell($coordinate)->getXfIndex(); + $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ? + $pSheet->getConditionalStyles($coordinate) : false; + for ($j = $beforeColumnIndex - 1; $j <= $beforeColumnIndex - 2 + $pNumCols; ++$j) { + $pSheet->getCellByColumnAndRow($j, $i)->setXfIndex($xfIndex); + if ($conditionalStyles) { + $cloned = array(); + foreach ($conditionalStyles as $conditionalStyle) { + $cloned[] = clone $conditionalStyle; + } + $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($j) . $i, $cloned); + } + } + } + + } + } + + if ($pNumRows > 0 && $beforeRow - 1 > 0) { + for ($i = $beforeColumnIndex - 1; $i <= PHPExcel_Cell::columnIndexFromString($highestColumn) - 1; ++$i) { + // Style + $coordinate = PHPExcel_Cell::stringFromColumnIndex($i) . ($beforeRow - 1); + if ($pSheet->cellExists($coordinate)) { + $xfIndex = $pSheet->getCell($coordinate)->getXfIndex(); + $conditionalStyles = $pSheet->conditionalStylesExists($coordinate) ? + $pSheet->getConditionalStyles($coordinate) : false; + for ($j = $beforeRow; $j <= $beforeRow - 1 + $pNumRows; ++$j) { + $pSheet->getCell(PHPExcel_Cell::stringFromColumnIndex($i) . $j)->setXfIndex($xfIndex); + if ($conditionalStyles) { + $cloned = array(); + foreach ($conditionalStyles as $conditionalStyle) { + $cloned[] = clone $conditionalStyle; + } + $pSheet->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($i) . $j, $cloned); + } + } + } + } + } + + // Update worksheet: column dimensions + $this->adjustColumnDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: row dimensions + $this->adjustRowDimensions($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: page breaks + $this->adjustPageBreaks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: comments + $this->adjustComments($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: hyperlinks + $this->adjustHyperlinks($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: data validations + $this->adjustDataValidations($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: merge cells + $this->adjustMergeCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: protected cells + $this->adjustProtectedCells($pSheet, $pBefore, $beforeColumnIndex, $pNumCols, $beforeRow, $pNumRows); + + // Update worksheet: autofilter + $autoFilter = $pSheet->getAutoFilter(); + $autoFilterRange = $autoFilter->getRange(); + if (!empty($autoFilterRange)) { + if ($pNumCols != 0) { + $autoFilterColumns = array_keys($autoFilter->getColumns()); + if (count($autoFilterColumns) > 0) { + sscanf($pBefore, '%[A-Z]%d', $column, $row); + $columnIndex = PHPExcel_Cell::columnIndexFromString($column); + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($autoFilterRange); + if ($columnIndex <= $rangeEnd[0]) { + if ($pNumCols < 0) { + // If we're actually deleting any columns that fall within the autofilter range, + // then we delete any rules for those columns + $deleteColumn = $columnIndex + $pNumCols - 1; + $deleteCount = abs($pNumCols); + for ($i = 1; $i <= $deleteCount; ++$i) { + if (in_array(PHPExcel_Cell::stringFromColumnIndex($deleteColumn), $autoFilterColumns)) { + $autoFilter->clearColumn(PHPExcel_Cell::stringFromColumnIndex($deleteColumn)); + } + ++$deleteColumn; + } + } + $startCol = ($columnIndex > $rangeStart[0]) ? $columnIndex : $rangeStart[0]; + + // Shuffle columns in autofilter range + if ($pNumCols > 0) { + // For insert, we shuffle from end to beginning to avoid overwriting + $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1); + $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1); + $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]); + + $startColRef = $startCol; + $endColRef = $rangeEnd[0]; + $toColRef = $rangeEnd[0]+$pNumCols; + + do { + $autoFilter->shiftColumn(PHPExcel_Cell::stringFromColumnIndex($endColRef-1), PHPExcel_Cell::stringFromColumnIndex($toColRef-1)); + --$endColRef; + --$toColRef; + } while ($startColRef <= $endColRef); + } else { + // For delete, we shuffle from beginning to end to avoid overwriting + $startColID = PHPExcel_Cell::stringFromColumnIndex($startCol-1); + $toColID = PHPExcel_Cell::stringFromColumnIndex($startCol+$pNumCols-1); + $endColID = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]); + do { + $autoFilter->shiftColumn($startColID, $toColID); + ++$startColID; + ++$toColID; + } while ($startColID != $endColID); + } + } + } + } + $pSheet->setAutoFilter($this->updateCellReference($autoFilterRange, $pBefore, $pNumCols, $pNumRows)); + } + + // Update worksheet: freeze pane + if ($pSheet->getFreezePane() != '') { + $pSheet->freezePane($this->updateCellReference($pSheet->getFreezePane(), $pBefore, $pNumCols, $pNumRows)); + } + + // Page setup + if ($pSheet->getPageSetup()->isPrintAreaSet()) { + $pSheet->getPageSetup()->setPrintArea($this->updateCellReference($pSheet->getPageSetup()->getPrintArea(), $pBefore, $pNumCols, $pNumRows)); + } + + // Update worksheet: drawings + $aDrawings = $pSheet->getDrawingCollection(); + foreach ($aDrawings as $objDrawing) { + $newReference = $this->updateCellReference($objDrawing->getCoordinates(), $pBefore, $pNumCols, $pNumRows); + if ($objDrawing->getCoordinates() != $newReference) { + $objDrawing->setCoordinates($newReference); + } + } + + // Update workbook: named ranges + if (count($pSheet->getParent()->getNamedRanges()) > 0) { + foreach ($pSheet->getParent()->getNamedRanges() as $namedRange) { + if ($namedRange->getWorksheet()->getHashCode() == $pSheet->getHashCode()) { + $namedRange->setRange($this->updateCellReference($namedRange->getRange(), $pBefore, $pNumCols, $pNumRows)); + } + } + } + + // Garbage collect + $pSheet->garbageCollect(); + } + + /** + * Update references within formulas + * + * @param string $pFormula Formula to update + * @param int $pBefore Insert before this one + * @param int $pNumCols Number of columns to insert + * @param int $pNumRows Number of rows to insert + * @param string $sheetName Worksheet name/title + * @return string Updated formula + * @throws PHPExcel_Exception + */ + public function updateFormulaReferences($pFormula = '', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0, $sheetName = '') + { + // Update cell references in the formula + $formulaBlocks = explode('"', $pFormula); + $i = false; + foreach ($formulaBlocks as &$formulaBlock) { + // Ignore blocks that were enclosed in quotes (alternating entries in the $formulaBlocks array after the explode) + if ($i = !$i) { + $adjustCount = 0; + $newCellTokens = $cellTokens = array(); + // Search for row ranges (e.g. 'Sheet1'!3:5 or 3:5) with or without $ absolutes (e.g. $3:5) + $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_ROWRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); + if ($matchCount > 0) { + foreach ($matches as $match) { + $fromString = ($match[2] > '') ? $match[2].'!' : ''; + $fromString .= $match[3].':'.$match[4]; + $modified3 = substr($this->updateCellReference('$A'.$match[3], $pBefore, $pNumCols, $pNumRows), 2); + $modified4 = substr($this->updateCellReference('$A'.$match[4], $pBefore, $pNumCols, $pNumRows), 2); + + if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) { + if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { + $toString = ($match[2] > '') ? $match[2].'!' : ''; + $toString .= $modified3.':'.$modified4; + // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more + $column = 100000; + $row = 10000000 + trim($match[3], '$'); + $cellIndex = $column.$row; + + $newCellTokens[$cellIndex] = preg_quote($toString); + $cellTokens[$cellIndex] = '/(?<!\d\$\!)'.preg_quote($fromString).'(?!\d)/i'; + ++$adjustCount; + } + } + } + } + // Search for column ranges (e.g. 'Sheet1'!C:E or C:E) with or without $ absolutes (e.g. $C:E) + $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_COLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); + if ($matchCount > 0) { + foreach ($matches as $match) { + $fromString = ($match[2] > '') ? $match[2].'!' : ''; + $fromString .= $match[3].':'.$match[4]; + $modified3 = substr($this->updateCellReference($match[3].'$1', $pBefore, $pNumCols, $pNumRows), 0, -2); + $modified4 = substr($this->updateCellReference($match[4].'$1', $pBefore, $pNumCols, $pNumRows), 0, -2); + + if ($match[3].':'.$match[4] !== $modified3.':'.$modified4) { + if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { + $toString = ($match[2] > '') ? $match[2].'!' : ''; + $toString .= $modified3.':'.$modified4; + // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more + $column = PHPExcel_Cell::columnIndexFromString(trim($match[3], '$')) + 100000; + $row = 10000000; + $cellIndex = $column.$row; + + $newCellTokens[$cellIndex] = preg_quote($toString); + $cellTokens[$cellIndex] = '/(?<![A-Z\$\!])'.preg_quote($fromString).'(?![A-Z])/i'; + ++$adjustCount; + } + } + } + } + // Search for cell ranges (e.g. 'Sheet1'!A3:C5 or A3:C5) with or without $ absolutes (e.g. $A1:C$5) + $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLRANGE.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); + if ($matchCount > 0) { + foreach ($matches as $match) { + $fromString = ($match[2] > '') ? $match[2].'!' : ''; + $fromString .= $match[3].':'.$match[4]; + $modified3 = $this->updateCellReference($match[3], $pBefore, $pNumCols, $pNumRows); + $modified4 = $this->updateCellReference($match[4], $pBefore, $pNumCols, $pNumRows); + + if ($match[3].$match[4] !== $modified3.$modified4) { + if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { + $toString = ($match[2] > '') ? $match[2].'!' : ''; + $toString .= $modified3.':'.$modified4; + list($column, $row) = PHPExcel_Cell::coordinateFromString($match[3]); + // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more + $column = PHPExcel_Cell::columnIndexFromString(trim($column, '$')) + 100000; + $row = trim($row, '$') + 10000000; + $cellIndex = $column.$row; + + $newCellTokens[$cellIndex] = preg_quote($toString); + $cellTokens[$cellIndex] = '/(?<![A-Z]\$\!)'.preg_quote($fromString).'(?!\d)/i'; + ++$adjustCount; + } + } + } + } + // Search for cell references (e.g. 'Sheet1'!A3 or C5) with or without $ absolutes (e.g. $A1 or C$5) + $matchCount = preg_match_all('/'.self::REFHELPER_REGEXP_CELLREF.'/i', ' '.$formulaBlock.' ', $matches, PREG_SET_ORDER); + + if ($matchCount > 0) { + foreach ($matches as $match) { + $fromString = ($match[2] > '') ? $match[2].'!' : ''; + $fromString .= $match[3]; + + $modified3 = $this->updateCellReference($match[3], $pBefore, $pNumCols, $pNumRows); + if ($match[3] !== $modified3) { + if (($match[2] == '') || (trim($match[2], "'") == $sheetName)) { + $toString = ($match[2] > '') ? $match[2].'!' : ''; + $toString .= $modified3; + list($column, $row) = PHPExcel_Cell::coordinateFromString($match[3]); + // Max worksheet size is 1,048,576 rows by 16,384 columns in Excel 2007, so our adjustments need to be at least one digit more + $column = PHPExcel_Cell::columnIndexFromString(trim($column, '$')) + 100000; + $row = trim($row, '$') + 10000000; + $cellIndex = $row . $column; + + $newCellTokens[$cellIndex] = preg_quote($toString); + $cellTokens[$cellIndex] = '/(?<![A-Z\$\!])'.preg_quote($fromString).'(?!\d)/i'; + ++$adjustCount; + } + } + } + } + if ($adjustCount > 0) { + if ($pNumCols > 0 || $pNumRows > 0) { + krsort($cellTokens); + krsort($newCellTokens); + } else { + ksort($cellTokens); + ksort($newCellTokens); + } // Update cell references in the formula + $formulaBlock = str_replace('\\', '', preg_replace($cellTokens, $newCellTokens, $formulaBlock)); + } + } + } + unset($formulaBlock); + + // Then rebuild the formula string + return implode('"', $formulaBlocks); + } + + /** + * Update cell reference + * + * @param string $pCellRange Cell range + * @param int $pBefore Insert before this one + * @param int $pNumCols Number of columns to increment + * @param int $pNumRows Number of rows to increment + * @return string Updated cell range + * @throws PHPExcel_Exception + */ + public function updateCellReference($pCellRange = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) + { + // Is it in another worksheet? Will not have to update anything. + if (strpos($pCellRange, "!") !== false) { + return $pCellRange; + // Is it a range or a single cell? + } elseif (strpos($pCellRange, ':') === false && strpos($pCellRange, ',') === false) { + // Single cell + return $this->updateSingleCellReference($pCellRange, $pBefore, $pNumCols, $pNumRows); + } elseif (strpos($pCellRange, ':') !== false || strpos($pCellRange, ',') !== false) { + // Range + return $this->updateCellRange($pCellRange, $pBefore, $pNumCols, $pNumRows); + } else { + // Return original + return $pCellRange; + } + } + + /** + * Update named formulas (i.e. containing worksheet references / named ranges) + * + * @param PHPExcel $pPhpExcel Object to update + * @param string $oldName Old name (name to replace) + * @param string $newName New name + */ + public function updateNamedFormulas(PHPExcel $pPhpExcel, $oldName = '', $newName = '') + { + if ($oldName == '') { + return; + } + + foreach ($pPhpExcel->getWorksheetIterator() as $sheet) { + foreach ($sheet->getCellCollection(false) as $cellID) { + $cell = $sheet->getCell($cellID); + if (($cell !== null) && ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA)) { + $formula = $cell->getValue(); + if (strpos($formula, $oldName) !== false) { + $formula = str_replace("'" . $oldName . "'!", "'" . $newName . "'!", $formula); + $formula = str_replace($oldName . "!", $newName . "!", $formula); + $cell->setValueExplicit($formula, PHPExcel_Cell_DataType::TYPE_FORMULA); + } + } + } + } + } + + /** + * Update cell range + * + * @param string $pCellRange Cell range (e.g. 'B2:D4', 'B:C' or '2:3') + * @param int $pBefore Insert before this one + * @param int $pNumCols Number of columns to increment + * @param int $pNumRows Number of rows to increment + * @return string Updated cell range + * @throws PHPExcel_Exception + */ + private function updateCellRange($pCellRange = 'A1:A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) + { + if (strpos($pCellRange, ':') !== false || strpos($pCellRange, ',') !== false) { + // Update range + $range = PHPExcel_Cell::splitRange($pCellRange); + $ic = count($range); + for ($i = 0; $i < $ic; ++$i) { + $jc = count($range[$i]); + for ($j = 0; $j < $jc; ++$j) { + if (ctype_alpha($range[$i][$j])) { + $r = PHPExcel_Cell::coordinateFromString($this->updateSingleCellReference($range[$i][$j].'1', $pBefore, $pNumCols, $pNumRows)); + $range[$i][$j] = $r[0]; + } elseif (ctype_digit($range[$i][$j])) { + $r = PHPExcel_Cell::coordinateFromString($this->updateSingleCellReference('A'.$range[$i][$j], $pBefore, $pNumCols, $pNumRows)); + $range[$i][$j] = $r[1]; + } else { + $range[$i][$j] = $this->updateSingleCellReference($range[$i][$j], $pBefore, $pNumCols, $pNumRows); + } + } + } + + // Recreate range string + return PHPExcel_Cell::buildRange($range); + } else { + throw new PHPExcel_Exception("Only cell ranges may be passed to this method."); + } + } + + /** + * Update single cell reference + * + * @param string $pCellReference Single cell reference + * @param int $pBefore Insert before this one + * @param int $pNumCols Number of columns to increment + * @param int $pNumRows Number of rows to increment + * @return string Updated cell reference + * @throws PHPExcel_Exception + */ + private function updateSingleCellReference($pCellReference = 'A1', $pBefore = 'A1', $pNumCols = 0, $pNumRows = 0) + { + if (strpos($pCellReference, ':') === false && strpos($pCellReference, ',') === false) { + // Get coordinates of $pBefore + list($beforeColumn, $beforeRow) = PHPExcel_Cell::coordinateFromString($pBefore); + + // Get coordinates of $pCellReference + list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString($pCellReference); + + // Verify which parts should be updated + $updateColumn = (($newColumn{0} != '$') && ($beforeColumn{0} != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn))); + $updateRow = (($newRow{0} != '$') && ($beforeRow{0} != '$') && $newRow >= $beforeRow); + + // Create new column reference + if ($updateColumn) { + $newColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($newColumn) - 1 + $pNumCols); + } + + // Create new row reference + if ($updateRow) { + $newRow = $newRow + $pNumRows; + } + + // Return new reference + return $newColumn . $newRow; + } else { + throw new PHPExcel_Exception("Only single cell references may be passed to this method."); + } + } + + /** + * __clone implementation. Cloning should not be allowed in a Singleton! + * + * @throws PHPExcel_Exception + */ + final public function __clone() + { + throw new PHPExcel_Exception("Cloning a Singleton is not allowed!"); + } +} diff --git a/assets/excel/PHPExcel/RichText.php b/assets/excel/PHPExcel/RichText.php new file mode 100644 index 0000000..74a3534 --- /dev/null +++ b/assets/excel/PHPExcel/RichText.php @@ -0,0 +1,191 @@ +<?php + +/** + * PHPExcel_RichText + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_RichText + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_RichText implements PHPExcel_IComparable +{ + /** + * Rich text elements + * + * @var PHPExcel_RichText_ITextElement[] + */ + private $richTextElements; + + /** + * Create a new PHPExcel_RichText instance + * + * @param PHPExcel_Cell $pCell + * @throws PHPExcel_Exception + */ + public function __construct(PHPExcel_Cell $pCell = null) + { + // Initialise variables + $this->richTextElements = array(); + + // Rich-Text string attached to cell? + if ($pCell !== null) { + // Add cell text and style + if ($pCell->getValue() != "") { + $objRun = new PHPExcel_RichText_Run($pCell->getValue()); + $objRun->setFont(clone $pCell->getParent()->getStyle($pCell->getCoordinate())->getFont()); + $this->addText($objRun); + } + + // Set parent value + $pCell->setValueExplicit($this, PHPExcel_Cell_DataType::TYPE_STRING); + } + } + + /** + * Add text + * + * @param PHPExcel_RichText_ITextElement $pText Rich text element + * @throws PHPExcel_Exception + * @return PHPExcel_RichText + */ + public function addText(PHPExcel_RichText_ITextElement $pText = null) + { + $this->richTextElements[] = $pText; + return $this; + } + + /** + * Create text + * + * @param string $pText Text + * @return PHPExcel_RichText_TextElement + * @throws PHPExcel_Exception + */ + public function createText($pText = '') + { + $objText = new PHPExcel_RichText_TextElement($pText); + $this->addText($objText); + return $objText; + } + + /** + * Create text run + * + * @param string $pText Text + * @return PHPExcel_RichText_Run + * @throws PHPExcel_Exception + */ + public function createTextRun($pText = '') + { + $objText = new PHPExcel_RichText_Run($pText); + $this->addText($objText); + return $objText; + } + + /** + * Get plain text + * + * @return string + */ + public function getPlainText() + { + // Return value + $returnValue = ''; + + // Loop through all PHPExcel_RichText_ITextElement + foreach ($this->richTextElements as $text) { + $returnValue .= $text->getText(); + } + + // Return + return $returnValue; + } + + /** + * Convert to string + * + * @return string + */ + public function __toString() + { + return $this->getPlainText(); + } + + /** + * Get Rich Text elements + * + * @return PHPExcel_RichText_ITextElement[] + */ + public function getRichTextElements() + { + return $this->richTextElements; + } + + /** + * Set Rich Text elements + * + * @param PHPExcel_RichText_ITextElement[] $pElements Array of elements + * @throws PHPExcel_Exception + * @return PHPExcel_RichText + */ + public function setRichTextElements($pElements = null) + { + if (is_array($pElements)) { + $this->richTextElements = $pElements; + } else { + throw new PHPExcel_Exception("Invalid PHPExcel_RichText_ITextElement[] array passed."); + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + $hashElements = ''; + foreach ($this->richTextElements as $element) { + $hashElements .= $element->getHashCode(); + } + + return md5( + $hashElements . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/RichText/ITextElement.php b/assets/excel/PHPExcel/RichText/ITextElement.php new file mode 100644 index 0000000..5db3432 --- /dev/null +++ b/assets/excel/PHPExcel/RichText/ITextElement.php @@ -0,0 +1,56 @@ +<?php + +/** + * PHPExcel_RichText_ITextElement + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_RichText + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +interface PHPExcel_RichText_ITextElement +{ + /** + * Get text + * + * @return string Text + */ + public function getText(); + + /** + * Set text + * + * @param $pText string Text + * @return PHPExcel_RichText_ITextElement + */ + public function setText($pText = ''); + + /** + * Get font + * + * @return PHPExcel_Style_Font + */ + public function getFont(); + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode(); +} diff --git a/assets/excel/PHPExcel/RichText/Run.php b/assets/excel/PHPExcel/RichText/Run.php new file mode 100644 index 0000000..5737bb0 --- /dev/null +++ b/assets/excel/PHPExcel/RichText/Run.php @@ -0,0 +1,98 @@ +<?php + +/** + * PHPExcel_RichText_Run + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_RichText + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_RichText_Run extends PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement +{ + /** + * Font + * + * @var PHPExcel_Style_Font + */ + private $font; + + /** + * Create a new PHPExcel_RichText_Run instance + * + * @param string $pText Text + */ + public function __construct($pText = '') + { + // Initialise variables + $this->setText($pText); + $this->font = new PHPExcel_Style_Font(); + } + + /** + * Get font + * + * @return PHPExcel_Style_Font + */ + public function getFont() + { + return $this->font; + } + + /** + * Set font + * + * @param PHPExcel_Style_Font $pFont Font + * @throws PHPExcel_Exception + * @return PHPExcel_RichText_ITextElement + */ + public function setFont(PHPExcel_Style_Font $pFont = null) + { + $this->font = $pFont; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->getText() . + $this->font->getHashCode() . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/RichText/TextElement.php b/assets/excel/PHPExcel/RichText/TextElement.php new file mode 100644 index 0000000..f86e703 --- /dev/null +++ b/assets/excel/PHPExcel/RichText/TextElement.php @@ -0,0 +1,105 @@ +<?php + +/** + * PHPExcel_RichText_TextElement + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_RichText + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_RichText_TextElement implements PHPExcel_RichText_ITextElement +{ + /** + * Text + * + * @var string + */ + private $text; + + /** + * Create a new PHPExcel_RichText_TextElement instance + * + * @param string $pText Text + */ + public function __construct($pText = '') + { + // Initialise variables + $this->text = $pText; + } + + /** + * Get text + * + * @return string Text + */ + public function getText() + { + return $this->text; + } + + /** + * Set text + * + * @param $pText string Text + * @return PHPExcel_RichText_ITextElement + */ + public function setText($pText = '') + { + $this->text = $pText; + return $this; + } + + /** + * Get font + * + * @return PHPExcel_Style_Font + */ + public function getFont() + { + return null; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->text . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Settings.php b/assets/excel/PHPExcel/Settings.php new file mode 100644 index 0000000..eff33f0 --- /dev/null +++ b/assets/excel/PHPExcel/Settings.php @@ -0,0 +1,387 @@ +<?php + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +/** + * PHPExcel_Settings + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Settings + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Settings +{ + /** constants */ + /** Available Zip library classes */ + const PCLZIP = 'PHPExcel_Shared_ZipArchive'; + const ZIPARCHIVE = 'ZipArchive'; + + /** Optional Chart Rendering libraries */ + const CHART_RENDERER_JPGRAPH = 'jpgraph'; + + /** Optional PDF Rendering libraries */ + const PDF_RENDERER_TCPDF = 'tcPDF'; + const PDF_RENDERER_DOMPDF = 'DomPDF'; + const PDF_RENDERER_MPDF = 'mPDF'; + + + private static $chartRenderers = array( + self::CHART_RENDERER_JPGRAPH, + ); + + private static $pdfRenderers = array( + self::PDF_RENDERER_TCPDF, + self::PDF_RENDERER_DOMPDF, + self::PDF_RENDERER_MPDF, + ); + + + /** + * Name of the class used for Zip file management + * e.g. + * ZipArchive + * + * @var string + */ + private static $zipClass = self::ZIPARCHIVE; + + + /** + * Name of the external Library used for rendering charts + * e.g. + * jpgraph + * + * @var string + */ + private static $chartRendererName; + + /** + * Directory Path to the external Library used for rendering charts + * + * @var string + */ + private static $chartRendererPath; + + + /** + * Name of the external Library used for rendering PDF files + * e.g. + * mPDF + * + * @var string + */ + private static $pdfRendererName; + + /** + * Directory Path to the external Library used for rendering PDF files + * + * @var string + */ + private static $pdfRendererPath; + + /** + * Default options for libxml loader + * + * @var int + */ + private static $libXmlLoaderOptions = null; + + /** + * Set the Zip handler Class that PHPExcel should use for Zip file management (PCLZip or ZipArchive) + * + * @param string $zipClass The Zip handler class that PHPExcel should use for Zip file management + * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive + * @return boolean Success or failure + */ + public static function setZipClass($zipClass) + { + if (($zipClass === self::PCLZIP) || + ($zipClass === self::ZIPARCHIVE)) { + self::$zipClass = $zipClass; + return true; + } + return false; + } + + + /** + * Return the name of the Zip handler Class that PHPExcel is configured to use (PCLZip or ZipArchive) + * or Zip file management + * + * @return string Name of the Zip handler Class that PHPExcel is configured to use + * for Zip file management + * e.g. PHPExcel_Settings::PCLZip or PHPExcel_Settings::ZipArchive + */ + public static function getZipClass() + { + return self::$zipClass; + } + + + /** + * Return the name of the method that is currently configured for cell cacheing + * + * @return string Name of the cacheing method + */ + public static function getCacheStorageMethod() + { + return PHPExcel_CachedObjectStorageFactory::getCacheStorageMethod(); + } + + + /** + * Return the name of the class that is currently being used for cell cacheing + * + * @return string Name of the class currently being used for cacheing + */ + public static function getCacheStorageClass() + { + return PHPExcel_CachedObjectStorageFactory::getCacheStorageClass(); + } + + + /** + * Set the method that should be used for cell cacheing + * + * @param string $method Name of the cacheing method + * @param array $arguments Optional configuration arguments for the cacheing method + * @return boolean Success or failure + */ + public static function setCacheStorageMethod($method = PHPExcel_CachedObjectStorageFactory::cache_in_memory, $arguments = array()) + { + return PHPExcel_CachedObjectStorageFactory::initialize($method, $arguments); + } + + + /** + * Set the locale code to use for formula translations and any special formatting + * + * @param string $locale The locale code to use (e.g. "fr" or "pt_br" or "en_uk") + * @return boolean Success or failure + */ + public static function setLocale($locale = 'en_us') + { + return PHPExcel_Calculation::getInstance()->setLocale($locale); + } + + + /** + * Set details of the external library that PHPExcel should use for rendering charts + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + * @param string $libraryBaseDir Directory path to the library's base folder + * + * @return boolean Success or failure + */ + public static function setChartRenderer($libraryName, $libraryBaseDir) + { + if (!self::setChartRendererName($libraryName)) { + return false; + } + return self::setChartRendererPath($libraryBaseDir); + } + + + /** + * Identify to PHPExcel the external library to use for rendering charts + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + * + * @return boolean Success or failure + */ + public static function setChartRendererName($libraryName) + { + if (!in_array($libraryName, self::$chartRenderers)) { + return false; + } + self::$chartRendererName = $libraryName; + + return true; + } + + + /** + * Tell PHPExcel where to find the external library to use for rendering charts + * + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setChartRendererPath($libraryBaseDir) + { + if ((file_exists($libraryBaseDir) === false) || (is_readable($libraryBaseDir) === false)) { + return false; + } + self::$chartRendererPath = $libraryBaseDir; + + return true; + } + + + /** + * Return the Chart Rendering Library that PHPExcel is currently configured to use (e.g. jpgraph) + * + * @return string|NULL Internal reference name of the Chart Rendering Library that PHPExcel is + * currently configured to use + * e.g. PHPExcel_Settings::CHART_RENDERER_JPGRAPH + */ + public static function getChartRendererName() + { + return self::$chartRendererName; + } + + + /** + * Return the directory path to the Chart Rendering Library that PHPExcel is currently configured to use + * + * @return string|NULL Directory Path to the Chart Rendering Library that PHPExcel is + * currently configured to use + */ + public static function getChartRendererPath() + { + return self::$chartRendererPath; + } + + + /** + * Set details of the external library that PHPExcel should use for rendering PDF files + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + * @param string $libraryBaseDir Directory path to the library's base folder + * + * @return boolean Success or failure + */ + public static function setPdfRenderer($libraryName, $libraryBaseDir) + { + if (!self::setPdfRendererName($libraryName)) { + return false; + } + return self::setPdfRendererPath($libraryBaseDir); + } + + + /** + * Identify to PHPExcel the external library to use for rendering PDF files + * + * @param string $libraryName Internal reference name of the library + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + * + * @return boolean Success or failure + */ + public static function setPdfRendererName($libraryName) + { + if (!in_array($libraryName, self::$pdfRenderers)) { + return false; + } + self::$pdfRendererName = $libraryName; + + return true; + } + + + /** + * Tell PHPExcel where to find the external library to use for rendering PDF files + * + * @param string $libraryBaseDir Directory path to the library's base folder + * @return boolean Success or failure + */ + public static function setPdfRendererPath($libraryBaseDir) + { + if ((file_exists($libraryBaseDir) === false) || (is_readable($libraryBaseDir) === false)) { + return false; + } + self::$pdfRendererPath = $libraryBaseDir; + + return true; + } + + + /** + * Return the PDF Rendering Library that PHPExcel is currently configured to use (e.g. dompdf) + * + * @return string|NULL Internal reference name of the PDF Rendering Library that PHPExcel is + * currently configured to use + * e.g. PHPExcel_Settings::PDF_RENDERER_TCPDF, + * PHPExcel_Settings::PDF_RENDERER_DOMPDF + * or PHPExcel_Settings::PDF_RENDERER_MPDF + */ + public static function getPdfRendererName() + { + return self::$pdfRendererName; + } + + /** + * Return the directory path to the PDF Rendering Library that PHPExcel is currently configured to use + * + * @return string|NULL Directory Path to the PDF Rendering Library that PHPExcel is + * currently configured to use + */ + public static function getPdfRendererPath() + { + return self::$pdfRendererPath; + } + + /** + * Set default options for libxml loader + * + * @param int $options Default options for libxml loader + */ + public static function setLibXmlLoaderOptions($options = null) + { + if (is_null($options) && defined(LIBXML_DTDLOAD)) { + $options = LIBXML_DTDLOAD | LIBXML_DTDATTR; + } + if (version_compare(PHP_VERSION, '5.2.11') >= 0) { + @libxml_disable_entity_loader($options == (LIBXML_DTDLOAD | LIBXML_DTDATTR)); + } + self::$libXmlLoaderOptions = $options; + } + + /** + * Get default options for libxml loader. + * Defaults to LIBXML_DTDLOAD | LIBXML_DTDATTR when not set explicitly. + * + * @return int Default options for libxml loader + */ + public static function getLibXmlLoaderOptions() + { + if (is_null(self::$libXmlLoaderOptions) && defined(LIBXML_DTDLOAD)) { + self::setLibXmlLoaderOptions(LIBXML_DTDLOAD | LIBXML_DTDATTR); + } + if (version_compare(PHP_VERSION, '5.2.11') >= 0) { + @libxml_disable_entity_loader(self::$libXmlLoaderOptions == (LIBXML_DTDLOAD | LIBXML_DTDATTR)); + } + return self::$libXmlLoaderOptions; + } +} diff --git a/assets/excel/PHPExcel/Shared/CodePage.php b/assets/excel/PHPExcel/Shared/CodePage.php new file mode 100644 index 0000000..b3e440e --- /dev/null +++ b/assets/excel/PHPExcel/Shared/CodePage.php @@ -0,0 +1,156 @@ +<?php + +/** + * PHPExcel_Shared_CodePage + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_CodePage +{ + /** + * Convert Microsoft Code Page Identifier to Code Page Name which iconv + * and mbstring understands + * + * @param integer $codePage Microsoft Code Page Indentifier + * @return string Code Page Name + * @throws PHPExcel_Exception + */ + public static function NumberToName($codePage = 1252) + { + switch ($codePage) { + case 367: + return 'ASCII'; // ASCII + case 437: + return 'CP437'; // OEM US + case 720: + throw new PHPExcel_Exception('Code page 720 not supported.'); // OEM Arabic + case 737: + return 'CP737'; // OEM Greek + case 775: + return 'CP775'; // OEM Baltic + case 850: + return 'CP850'; // OEM Latin I + case 852: + return 'CP852'; // OEM Latin II (Central European) + case 855: + return 'CP855'; // OEM Cyrillic + case 857: + return 'CP857'; // OEM Turkish + case 858: + return 'CP858'; // OEM Multilingual Latin I with Euro + case 860: + return 'CP860'; // OEM Portugese + case 861: + return 'CP861'; // OEM Icelandic + case 862: + return 'CP862'; // OEM Hebrew + case 863: + return 'CP863'; // OEM Canadian (French) + case 864: + return 'CP864'; // OEM Arabic + case 865: + return 'CP865'; // OEM Nordic + case 866: + return 'CP866'; // OEM Cyrillic (Russian) + case 869: + return 'CP869'; // OEM Greek (Modern) + case 874: + return 'CP874'; // ANSI Thai + case 932: + return 'CP932'; // ANSI Japanese Shift-JIS + case 936: + return 'CP936'; // ANSI Chinese Simplified GBK + case 949: + return 'CP949'; // ANSI Korean (Wansung) + case 950: + return 'CP950'; // ANSI Chinese Traditional BIG5 + case 1200: + return 'UTF-16LE'; // UTF-16 (BIFF8) + case 1250: + return 'CP1250'; // ANSI Latin II (Central European) + case 1251: + return 'CP1251'; // ANSI Cyrillic + case 0: + // CodePage is not always correctly set when the xls file was saved by Apple's Numbers program + case 1252: + return 'CP1252'; // ANSI Latin I (BIFF4-BIFF7) + case 1253: + return 'CP1253'; // ANSI Greek + case 1254: + return 'CP1254'; // ANSI Turkish + case 1255: + return 'CP1255'; // ANSI Hebrew + case 1256: + return 'CP1256'; // ANSI Arabic + case 1257: + return 'CP1257'; // ANSI Baltic + case 1258: + return 'CP1258'; // ANSI Vietnamese + case 1361: + return 'CP1361'; // ANSI Korean (Johab) + case 10000: + return 'MAC'; // Apple Roman + case 10001: + return 'CP932'; // Macintosh Japanese + case 10002: + return 'CP950'; // Macintosh Chinese Traditional + case 10003: + return 'CP1361'; // Macintosh Korean + case 10004: + return 'MACARABIC'; // Apple Arabic + case 10005: + return 'MACHEBREW'; // Apple Hebrew + case 10006: + return 'MACGREEK'; // Macintosh Greek + case 10007: + return 'MACCYRILLIC'; // Macintosh Cyrillic + case 10008: + return 'CP936'; // Macintosh - Simplified Chinese (GB 2312) + case 10010: + return 'MACROMANIA'; // Macintosh Romania + case 10017: + return 'MACUKRAINE'; // Macintosh Ukraine + case 10021: + return 'MACTHAI'; // Macintosh Thai + case 10029: + return 'MACCENTRALEUROPE'; // Macintosh Central Europe + case 10079: + return 'MACICELAND'; // Macintosh Icelandic + case 10081: + return 'MACTURKISH'; // Macintosh Turkish + case 10082: + return 'MACCROATIAN'; // Macintosh Croatian + case 21010: + return 'UTF-16LE'; // UTF-16 (BIFF8) This isn't correct, but some Excel writer libraries erroneously use Codepage 21010 for UTF-16LE + case 32768: + return 'MAC'; // Apple Roman + case 32769: + throw new PHPExcel_Exception('Code page 32769 not supported.'); // ANSI Latin I (BIFF2-BIFF3) + case 65000: + return 'UTF-7'; // Unicode (UTF-7) + case 65001: + return 'UTF-8'; // Unicode (UTF-8) + } + throw new PHPExcel_Exception('Unknown codepage: ' . $codePage); + } +} diff --git a/assets/excel/PHPExcel/Shared/Date.php b/assets/excel/PHPExcel/Shared/Date.php new file mode 100644 index 0000000..c772bd4 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Date.php @@ -0,0 +1,411 @@ +<?php + +/** + * PHPExcel_Shared_Date + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Date +{ + /** constants */ + const CALENDAR_WINDOWS_1900 = 1900; // Base date of 1st Jan 1900 = 1.0 + const CALENDAR_MAC_1904 = 1904; // Base date of 2nd Jan 1904 = 1.0 + + /* + * Names of the months of the year, indexed by shortname + * Planned usage for locale settings + * + * @public + * @var string[] + */ + public static $monthNames = array( + 'Jan' => 'January', + 'Feb' => 'February', + 'Mar' => 'March', + 'Apr' => 'April', + 'May' => 'May', + 'Jun' => 'June', + 'Jul' => 'July', + 'Aug' => 'August', + 'Sep' => 'September', + 'Oct' => 'October', + 'Nov' => 'November', + 'Dec' => 'December', + ); + + /* + * Names of the months of the year, indexed by shortname + * Planned usage for locale settings + * + * @public + * @var string[] + */ + public static $numberSuffixes = array( + 'st', + 'nd', + 'rd', + 'th', + ); + + /* + * Base calendar year to use for calculations + * + * @private + * @var int + */ + protected static $excelBaseDate = self::CALENDAR_WINDOWS_1900; + + /** + * Set the Excel calendar (Windows 1900 or Mac 1904) + * + * @param integer $baseDate Excel base date (1900 or 1904) + * @return boolean Success or failure + */ + public static function setExcelCalendar($baseDate) + { + if (($baseDate == self::CALENDAR_WINDOWS_1900) || + ($baseDate == self::CALENDAR_MAC_1904)) { + self::$excelBaseDate = $baseDate; + return true; + } + return false; + } + + + /** + * Return the Excel calendar (Windows 1900 or Mac 1904) + * + * @return integer Excel base date (1900 or 1904) + */ + public static function getExcelCalendar() + { + return self::$excelBaseDate; + } + + + /** + * Convert a date from Excel to PHP + * + * @param integer $dateValue Excel date/time value + * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as + * a UST timestamp, or adjusted to UST + * @param string $timezone The timezone for finding the adjustment from UST + * @return integer PHP serialized date/time + */ + public static function ExcelToPHP($dateValue = 0, $adjustToTimezone = false, $timezone = null) + { + if (self::$excelBaseDate == self::CALENDAR_WINDOWS_1900) { + $myexcelBaseDate = 25569; + // Adjust for the spurious 29-Feb-1900 (Day 60) + if ($dateValue < 60) { + --$myexcelBaseDate; + } + } else { + $myexcelBaseDate = 24107; + } + + // Perform conversion + if ($dateValue >= 1) { + $utcDays = $dateValue - $myexcelBaseDate; + $returnValue = round($utcDays * 86400); + if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) { + $returnValue = (integer) $returnValue; + } + } else { + $hours = round($dateValue * 24); + $mins = round($dateValue * 1440) - round($hours * 60); + $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60); + $returnValue = (integer) gmmktime($hours, $mins, $secs); + } + + $timezoneAdjustment = ($adjustToTimezone) ? + PHPExcel_Shared_TimeZone::getTimezoneAdjustment($timezone, $returnValue) : + 0; + + return $returnValue + $timezoneAdjustment; + } + + + /** + * Convert a date from Excel to a PHP Date/Time object + * + * @param integer $dateValue Excel date/time value + * @return DateTime PHP date/time object + */ + public static function ExcelToPHPObject($dateValue = 0) + { + $dateTime = self::ExcelToPHP($dateValue); + $days = floor($dateTime / 86400); + $time = round((($dateTime / 86400) - $days) * 86400); + $hours = round($time / 3600); + $minutes = round($time / 60) - ($hours * 60); + $seconds = round($time) - ($hours * 3600) - ($minutes * 60); + + $dateObj = date_create('1-Jan-1970+'.$days.' days'); + $dateObj->setTime($hours, $minutes, $seconds); + + return $dateObj; + } + + + /** + * Convert a date from PHP to Excel + * + * @param mixed $dateValue PHP serialized date/time or date object + * @param boolean $adjustToTimezone Flag indicating whether $dateValue should be treated as + * a UST timestamp, or adjusted to UST + * @param string $timezone The timezone for finding the adjustment from UST + * @return mixed Excel date/time value + * or boolean FALSE on failure + */ + public static function PHPToExcel($dateValue = 0, $adjustToTimezone = false, $timezone = null) + { + $saveTimeZone = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $retValue = false; + if ((is_object($dateValue)) && ($dateValue instanceof DateTime)) { + $retValue = self::FormattedPHPToExcel($dateValue->format('Y'), $dateValue->format('m'), $dateValue->format('d'), $dateValue->format('H'), $dateValue->format('i'), $dateValue->format('s')); + } elseif (is_numeric($dateValue)) { + $retValue = self::FormattedPHPToExcel(date('Y', $dateValue), date('m', $dateValue), date('d', $dateValue), date('H', $dateValue), date('i', $dateValue), date('s', $dateValue)); + } elseif (is_string($dateValue)) { + $retValue = self::stringToExcel($dateValue); + } + date_default_timezone_set($saveTimeZone); + + return $retValue; + } + + + /** + * FormattedPHPToExcel + * + * @param integer $year + * @param integer $month + * @param integer $day + * @param integer $hours + * @param integer $minutes + * @param integer $seconds + * @return integer Excel date/time value + */ + public static function FormattedPHPToExcel($year, $month, $day, $hours = 0, $minutes = 0, $seconds = 0) + { + if (self::$excelBaseDate == self::CALENDAR_WINDOWS_1900) { + // + // Fudge factor for the erroneous fact that the year 1900 is treated as a Leap Year in MS Excel + // This affects every date following 28th February 1900 + // + $excel1900isLeapYear = true; + if (($year == 1900) && ($month <= 2)) { + $excel1900isLeapYear = false; + } + $myexcelBaseDate = 2415020; + } else { + $myexcelBaseDate = 2416481; + $excel1900isLeapYear = false; + } + + // Julian base date Adjustment + if ($month > 2) { + $month -= 3; + } else { + $month += 9; + --$year; + } + + // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0) + $century = substr($year, 0, 2); + $decade = substr($year, 2, 2); + $excelDate = floor((146097 * $century) / 4) + floor((1461 * $decade) / 4) + floor((153 * $month + 2) / 5) + $day + 1721119 - $myexcelBaseDate + $excel1900isLeapYear; + + $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400; + + return (float) $excelDate + $excelTime; + } + + + /** + * Is a given cell a date/time? + * + * @param PHPExcel_Cell $pCell + * @return boolean + */ + public static function isDateTime(PHPExcel_Cell $pCell) + { + return self::isDateTimeFormat( + $pCell->getWorksheet()->getStyle( + $pCell->getCoordinate() + )->getNumberFormat() + ); + } + + + /** + * Is a given number format a date/time? + * + * @param PHPExcel_Style_NumberFormat $pFormat + * @return boolean + */ + public static function isDateTimeFormat(PHPExcel_Style_NumberFormat $pFormat) + { + return self::isDateTimeFormatCode($pFormat->getFormatCode()); + } + + + private static $possibleDateFormatCharacters = 'eymdHs'; + + /** + * Is a given number format code a date/time? + * + * @param string $pFormatCode + * @return boolean + */ + public static function isDateTimeFormatCode($pFormatCode = '') + { + if (strtolower($pFormatCode) === strtolower(PHPExcel_Style_NumberFormat::FORMAT_GENERAL)) { + // "General" contains an epoch letter 'e', so we trap for it explicitly here (case-insensitive check) + return false; + } + if (preg_match('/[0#]E[+-]0/i', $pFormatCode)) { + // Scientific format + return false; + } + + // Switch on formatcode + switch ($pFormatCode) { + // Explicitly defined date formats + case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYMINUS: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_DMMINUS: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_MYMINUS: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME1: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME2: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME5: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME6: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME7: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME8: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX15: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX16: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX17: + case PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX22: + return true; + } + + // Typically number, currency or accounting (or occasionally fraction) formats + if ((substr($pFormatCode, 0, 1) == '_') || (substr($pFormatCode, 0, 2) == '0 ')) { + return false; + } + // Try checking for any of the date formatting characters that don't appear within square braces + if (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i', $pFormatCode)) { + // We might also have a format mask containing quoted strings... + // we don't want to test for any of our characters within the quoted blocks + if (strpos($pFormatCode, '"') !== false) { + $segMatcher = false; + foreach (explode('"', $pFormatCode) as $subVal) { + // Only test in alternate array entries (the non-quoted blocks) + if (($segMatcher = !$segMatcher) && + (preg_match('/(^|\])[^\[]*['.self::$possibleDateFormatCharacters.']/i', $subVal))) { + return true; + } + } + return false; + } + return true; + } + + // No date... + return false; + } + + + /** + * Convert a date/time string to Excel time + * + * @param string $dateValue Examples: '2009-12-31', '2009-12-31 15:59', '2009-12-31 15:59:10' + * @return float|FALSE Excel date/time serial value + */ + public static function stringToExcel($dateValue = '') + { + if (strlen($dateValue) < 2) { + return false; + } + if (!preg_match('/^(\d{1,4}[ \.\/\-][A-Z]{3,9}([ \.\/\-]\d{1,4})?|[A-Z]{3,9}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?|\d{1,4}[ \.\/\-]\d{1,4}([ \.\/\-]\d{1,4})?)( \d{1,2}:\d{1,2}(:\d{1,2})?)?$/iu', $dateValue)) { + return false; + } + + $dateValueNew = PHPExcel_Calculation_DateTime::DATEVALUE($dateValue); + + if ($dateValueNew === PHPExcel_Calculation_Functions::VALUE()) { + return false; + } + + if (strpos($dateValue, ':') !== false) { + $timeValue = PHPExcel_Calculation_DateTime::TIMEVALUE($dateValue); + if ($timeValue === PHPExcel_Calculation_Functions::VALUE()) { + return false; + } + $dateValueNew += $timeValue; + } + return $dateValueNew; + } + + /** + * Converts a month name (either a long or a short name) to a month number + * + * @param string $month Month name or abbreviation + * @return integer|string Month number (1 - 12), or the original string argument if it isn't a valid month name + */ + public static function monthStringToNumber($month) + { + $monthIndex = 1; + foreach (self::$monthNames as $shortMonthName => $longMonthName) { + if (($month === $longMonthName) || ($month === $shortMonthName)) { + return $monthIndex; + } + ++$monthIndex; + } + return $month; + } + + /** + * Strips an ordinal froma numeric value + * + * @param string $day Day number with an ordinal + * @return integer|string The integer value with any ordinal stripped, or the original string argument if it isn't a valid numeric + */ + public static function dayStringToNumber($day) + { + $strippedDayValue = (str_replace(self::$numberSuffixes, '', $day)); + if (is_numeric($strippedDayValue)) { + return (integer) $strippedDayValue; + } + return $day; + } +} diff --git a/assets/excel/PHPExcel/Shared/Drawing.php b/assets/excel/PHPExcel/Shared/Drawing.php new file mode 100644 index 0000000..3e027b4 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Drawing.php @@ -0,0 +1,270 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Shared_Drawing + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Shared_Drawing +{ + /** + * Convert pixels to EMU + * + * @param int $pValue Value in pixels + * @return int Value in EMU + */ + public static function pixelsToEMU($pValue = 0) + { + return round($pValue * 9525); + } + + /** + * Convert EMU to pixels + * + * @param int $pValue Value in EMU + * @return int Value in pixels + */ + public static function EMUToPixels($pValue = 0) + { + if ($pValue != 0) { + return round($pValue / 9525); + } else { + return 0; + } + } + + /** + * Convert pixels to column width. Exact algorithm not known. + * By inspection of a real Excel file using Calibri 11, one finds 1000px ~ 142.85546875 + * This gives a conversion factor of 7. Also, we assume that pixels and font size are proportional. + * + * @param int $pValue Value in pixels + * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook + * @return int Value in cell dimension + */ + public static function pixelsToCellDimension($pValue = 0, PHPExcel_Style_Font $pDefaultFont) + { + // Font name and size + $name = $pDefaultFont->getName(); + $size = $pDefaultFont->getSize(); + + if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) { + // Exact width can be determined + $colWidth = $pValue * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width'] / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px']; + } else { + // We don't have data for this particular font and size, use approximation by + // extrapolating from Calibri 11 + $colWidth = $pValue * 11 * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px'] / $size; + } + + return $colWidth; + } + + /** + * Convert column width from (intrinsic) Excel units to pixels + * + * @param float $pValue Value in cell dimension + * @param PHPExcel_Style_Font $pDefaultFont Default font of the workbook + * @return int Value in pixels + */ + public static function cellDimensionToPixels($pValue = 0, PHPExcel_Style_Font $pDefaultFont) + { + // Font name and size + $name = $pDefaultFont->getName(); + $size = $pDefaultFont->getSize(); + + if (isset(PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size])) { + // Exact width can be determined + $colWidth = $pValue * PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['px'] / PHPExcel_Shared_Font::$defaultColumnWidths[$name][$size]['width']; + } else { + // We don't have data for this particular font and size, use approximation by + // extrapolating from Calibri 11 + $colWidth = $pValue * $size * PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['px'] / PHPExcel_Shared_Font::$defaultColumnWidths['Calibri'][11]['width'] / 11; + } + + // Round pixels to closest integer + $colWidth = (int) round($colWidth); + + return $colWidth; + } + + /** + * Convert pixels to points + * + * @param int $pValue Value in pixels + * @return int Value in points + */ + public static function pixelsToPoints($pValue = 0) + { + return $pValue * 0.67777777; + } + + /** + * Convert points to pixels + * + * @param int $pValue Value in points + * @return int Value in pixels + */ + public static function pointsToPixels($pValue = 0) + { + if ($pValue != 0) { + return (int) ceil($pValue * 1.333333333); + } else { + return 0; + } + } + + /** + * Convert degrees to angle + * + * @param int $pValue Degrees + * @return int Angle + */ + public static function degreesToAngle($pValue = 0) + { + return (int)round($pValue * 60000); + } + + /** + * Convert angle to degrees + * + * @param int $pValue Angle + * @return int Degrees + */ + public static function angleToDegrees($pValue = 0) + { + if ($pValue != 0) { + return round($pValue / 60000); + } else { + return 0; + } + } + + /** + * Create a new image from file. By alexander at alexauto dot nl + * + * @link http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214 + * @param string $filename Path to Windows DIB (BMP) image + * @return resource + */ + public static function imagecreatefrombmp($p_sFile) + { + // Load the image into a string + $file = fopen($p_sFile, "rb"); + $read = fread($file, 10); + while (!feof($file) && ($read<>"")) { + $read .= fread($file, 1024); + } + + $temp = unpack("H*", $read); + $hex = $temp[1]; + $header = substr($hex, 0, 108); + + // Process the header + // Structure: http://www.fastgraph.com/help/bmp_header_format.html + if (substr($header, 0, 4)=="424d") { + // Cut it in parts of 2 bytes + $header_parts = str_split($header, 2); + + // Get the width 4 bytes + $width = hexdec($header_parts[19].$header_parts[18]); + + // Get the height 4 bytes + $height = hexdec($header_parts[23].$header_parts[22]); + + // Unset the header params + unset($header_parts); + } + + // Define starting X and Y + $x = 0; + $y = 1; + + // Create newimage + $image = imagecreatetruecolor($width, $height); + + // Grab the body from the image + $body = substr($hex, 108); + + // Calculate if padding at the end-line is needed + // Divided by two to keep overview. + // 1 byte = 2 HEX-chars + $body_size = (strlen($body)/2); + $header_size = ($width*$height); + + // Use end-line padding? Only when needed + $usePadding = ($body_size>($header_size*3)+4); + + // Using a for-loop with index-calculation instaid of str_split to avoid large memory consumption + // Calculate the next DWORD-position in the body + for ($i = 0; $i < $body_size; $i += 3) { + // Calculate line-ending and padding + if ($x >= $width) { + // If padding needed, ignore image-padding + // Shift i to the ending of the current 32-bit-block + if ($usePadding) { + $i += $width%4; + } + + // Reset horizontal position + $x = 0; + + // Raise the height-position (bottom-up) + $y++; + + // Reached the image-height? Break the for-loop + if ($y > $height) { + break; + } + } + + // Calculation of the RGB-pixel (defined as BGR in image-data) + // Define $i_pos as absolute position in the body + $i_pos = $i * 2; + $r = hexdec($body[$i_pos+4].$body[$i_pos+5]); + $g = hexdec($body[$i_pos+2].$body[$i_pos+3]); + $b = hexdec($body[$i_pos].$body[$i_pos+1]); + + // Calculate and draw the pixel + $color = imagecolorallocate($image, $r, $g, $b); + imagesetpixel($image, $x, $height-$y, $color); + + // Raise the horizontal position + $x++; + } + + // Unset the body / free the memory + unset($body); + + // Return image-object + return $image; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher.php b/assets/excel/PHPExcel/Shared/Escher.php new file mode 100644 index 0000000..1aedb9d --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher.php @@ -0,0 +1,83 @@ +<?php + +/** + * PHPExcel_Shared_Escher + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher +{ + /** + * Drawing Group Container + * + * @var PHPExcel_Shared_Escher_DggContainer + */ + private $dggContainer; + + /** + * Drawing Container + * + * @var PHPExcel_Shared_Escher_DgContainer + */ + private $dgContainer; + + /** + * Get Drawing Group Container + * + * @return PHPExcel_Shared_Escher_DgContainer + */ + public function getDggContainer() + { + return $this->dggContainer; + } + + /** + * Set Drawing Group Container + * + * @param PHPExcel_Shared_Escher_DggContainer $dggContainer + */ + public function setDggContainer($dggContainer) + { + return $this->dggContainer = $dggContainer; + } + + /** + * Get Drawing Container + * + * @return PHPExcel_Shared_Escher_DgContainer + */ + public function getDgContainer() + { + return $this->dgContainer; + } + + /** + * Set Drawing Container + * + * @param PHPExcel_Shared_Escher_DgContainer $dgContainer + */ + public function setDgContainer($dgContainer) + { + return $this->dgContainer = $dgContainer; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DgContainer.php b/assets/excel/PHPExcel/Shared/Escher/DgContainer.php new file mode 100644 index 0000000..739cd90 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DgContainer.php @@ -0,0 +1,75 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DgContainer + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DgContainer +{ + /** + * Drawing index, 1-based. + * + * @var int + */ + private $dgId; + + /** + * Last shape index in this drawing + * + * @var int + */ + private $lastSpId; + + private $spgrContainer = null; + + public function getDgId() + { + return $this->dgId; + } + + public function setDgId($value) + { + $this->dgId = $value; + } + + public function getLastSpId() + { + return $this->lastSpId; + } + + public function setLastSpId($value) + { + $this->lastSpId = $value; + } + + public function getSpgrContainer() + { + return $this->spgrContainer; + } + + public function setSpgrContainer($spgrContainer) + { + return $this->spgrContainer = $spgrContainer; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php b/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php new file mode 100644 index 0000000..49e7d68 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php @@ -0,0 +1,102 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DgContainer_SpgrContainer + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DgContainer_SpgrContainer +{ + /** + * Parent Shape Group Container + * + * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer + */ + private $parent; + + /** + * Shape Container collection + * + * @var array + */ + private $children = array(); + + /** + * Set parent Shape Group Container + * + * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent + */ + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * Get the parent Shape Group Container if any + * + * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer|null + */ + public function getParent() + { + return $this->parent; + } + + /** + * Add a child. This will be either spgrContainer or spContainer + * + * @param mixed $child + */ + public function addChild($child) + { + $this->children[] = $child; + $child->setParent($this); + } + + /** + * Get collection of Shape Containers + */ + public function getChildren() + { + return $this->children; + } + + /** + * Recursively get all spContainers within this spgrContainer + * + * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer[] + */ + public function getAllSpContainers() + { + $allSpContainers = array(); + + foreach ($this->children as $child) { + if ($child instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) { + $allSpContainers = array_merge($allSpContainers, $child->getAllSpContainers()); + } else { + $allSpContainers[] = $child; + } + } + + return $allSpContainers; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php b/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php new file mode 100644 index 0000000..a1f1a46 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php @@ -0,0 +1,388 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer +{ + /** + * Parent Shape Group Container + * + * @var PHPExcel_Shared_Escher_DgContainer_SpgrContainer + */ + private $parent; + + /** + * Is this a group shape? + * + * @var boolean + */ + private $spgr = false; + + /** + * Shape type + * + * @var int + */ + private $spType; + + /** + * Shape flag + * + * @var int + */ + private $spFlag; + + /** + * Shape index (usually group shape has index 0, and the rest: 1,2,3...) + * + * @var boolean + */ + private $spId; + + /** + * Array of options + * + * @var array + */ + private $OPT; + + /** + * Cell coordinates of upper-left corner of shape, e.g. 'A1' + * + * @var string + */ + private $startCoordinates; + + /** + * Horizontal offset of upper-left corner of shape measured in 1/1024 of column width + * + * @var int + */ + private $startOffsetX; + + /** + * Vertical offset of upper-left corner of shape measured in 1/256 of row height + * + * @var int + */ + private $startOffsetY; + + /** + * Cell coordinates of bottom-right corner of shape, e.g. 'B2' + * + * @var string + */ + private $endCoordinates; + + /** + * Horizontal offset of bottom-right corner of shape measured in 1/1024 of column width + * + * @var int + */ + private $endOffsetX; + + /** + * Vertical offset of bottom-right corner of shape measured in 1/256 of row height + * + * @var int + */ + private $endOffsetY; + + /** + * Set parent Shape Group Container + * + * @param PHPExcel_Shared_Escher_DgContainer_SpgrContainer $parent + */ + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * Get the parent Shape Group Container + * + * @return PHPExcel_Shared_Escher_DgContainer_SpgrContainer + */ + public function getParent() + { + return $this->parent; + } + + /** + * Set whether this is a group shape + * + * @param boolean $value + */ + public function setSpgr($value = false) + { + $this->spgr = $value; + } + + /** + * Get whether this is a group shape + * + * @return boolean + */ + public function getSpgr() + { + return $this->spgr; + } + + /** + * Set the shape type + * + * @param int $value + */ + public function setSpType($value) + { + $this->spType = $value; + } + + /** + * Get the shape type + * + * @return int + */ + public function getSpType() + { + return $this->spType; + } + + /** + * Set the shape flag + * + * @param int $value + */ + public function setSpFlag($value) + { + $this->spFlag = $value; + } + + /** + * Get the shape flag + * + * @return int + */ + public function getSpFlag() + { + return $this->spFlag; + } + + /** + * Set the shape index + * + * @param int $value + */ + public function setSpId($value) + { + $this->spId = $value; + } + + /** + * Get the shape index + * + * @return int + */ + public function getSpId() + { + return $this->spId; + } + + /** + * Set an option for the Shape Group Container + * + * @param int $property The number specifies the option + * @param mixed $value + */ + public function setOPT($property, $value) + { + $this->OPT[$property] = $value; + } + + /** + * Get an option for the Shape Group Container + * + * @param int $property The number specifies the option + * @return mixed + */ + public function getOPT($property) + { + if (isset($this->OPT[$property])) { + return $this->OPT[$property]; + } + return null; + } + + /** + * Get the collection of options + * + * @return array + */ + public function getOPTCollection() + { + return $this->OPT; + } + + /** + * Set cell coordinates of upper-left corner of shape + * + * @param string $value + */ + public function setStartCoordinates($value = 'A1') + { + $this->startCoordinates = $value; + } + + /** + * Get cell coordinates of upper-left corner of shape + * + * @return string + */ + public function getStartCoordinates() + { + return $this->startCoordinates; + } + + /** + * Set offset in x-direction of upper-left corner of shape measured in 1/1024 of column width + * + * @param int $startOffsetX + */ + public function setStartOffsetX($startOffsetX = 0) + { + $this->startOffsetX = $startOffsetX; + } + + /** + * Get offset in x-direction of upper-left corner of shape measured in 1/1024 of column width + * + * @return int + */ + public function getStartOffsetX() + { + return $this->startOffsetX; + } + + /** + * Set offset in y-direction of upper-left corner of shape measured in 1/256 of row height + * + * @param int $startOffsetY + */ + public function setStartOffsetY($startOffsetY = 0) + { + $this->startOffsetY = $startOffsetY; + } + + /** + * Get offset in y-direction of upper-left corner of shape measured in 1/256 of row height + * + * @return int + */ + public function getStartOffsetY() + { + return $this->startOffsetY; + } + + /** + * Set cell coordinates of bottom-right corner of shape + * + * @param string $value + */ + public function setEndCoordinates($value = 'A1') + { + $this->endCoordinates = $value; + } + + /** + * Get cell coordinates of bottom-right corner of shape + * + * @return string + */ + public function getEndCoordinates() + { + return $this->endCoordinates; + } + + /** + * Set offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width + * + * @param int $startOffsetX + */ + public function setEndOffsetX($endOffsetX = 0) + { + $this->endOffsetX = $endOffsetX; + } + + /** + * Get offset in x-direction of bottom-right corner of shape measured in 1/1024 of column width + * + * @return int + */ + public function getEndOffsetX() + { + return $this->endOffsetX; + } + + /** + * Set offset in y-direction of bottom-right corner of shape measured in 1/256 of row height + * + * @param int $endOffsetY + */ + public function setEndOffsetY($endOffsetY = 0) + { + $this->endOffsetY = $endOffsetY; + } + + /** + * Get offset in y-direction of bottom-right corner of shape measured in 1/256 of row height + * + * @return int + */ + public function getEndOffsetY() + { + return $this->endOffsetY; + } + + /** + * Get the nesting level of this spContainer. This is the number of spgrContainers between this spContainer and + * the dgContainer. A value of 1 = immediately within first spgrContainer + * Higher nesting level occurs if and only if spContainer is part of a shape group + * + * @return int Nesting level + */ + public function getNestingLevel() + { + $nestingLevel = 0; + + $parent = $this->getParent(); + while ($parent instanceof PHPExcel_Shared_Escher_DgContainer_SpgrContainer) { + ++$nestingLevel; + $parent = $parent->getParent(); + } + + return $nestingLevel; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DggContainer.php b/assets/excel/PHPExcel/Shared/Escher/DggContainer.php new file mode 100644 index 0000000..b116b1b --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DggContainer.php @@ -0,0 +1,196 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DggContainer + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DggContainer +{ + /** + * Maximum shape index of all shapes in all drawings increased by one + * + * @var int + */ + private $spIdMax; + + /** + * Total number of drawings saved + * + * @var int + */ + private $cDgSaved; + + /** + * Total number of shapes saved (including group shapes) + * + * @var int + */ + private $cSpSaved; + + /** + * BLIP Store Container + * + * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer + */ + private $bstoreContainer; + + /** + * Array of options for the drawing group + * + * @var array + */ + private $OPT = array(); + + /** + * Array of identifier clusters containg information about the maximum shape identifiers + * + * @var array + */ + private $IDCLs = array(); + + /** + * Get maximum shape index of all shapes in all drawings (plus one) + * + * @return int + */ + public function getSpIdMax() + { + return $this->spIdMax; + } + + /** + * Set maximum shape index of all shapes in all drawings (plus one) + * + * @param int + */ + public function setSpIdMax($value) + { + $this->spIdMax = $value; + } + + /** + * Get total number of drawings saved + * + * @return int + */ + public function getCDgSaved() + { + return $this->cDgSaved; + } + + /** + * Set total number of drawings saved + * + * @param int + */ + public function setCDgSaved($value) + { + $this->cDgSaved = $value; + } + + /** + * Get total number of shapes saved (including group shapes) + * + * @return int + */ + public function getCSpSaved() + { + return $this->cSpSaved; + } + + /** + * Set total number of shapes saved (including group shapes) + * + * @param int + */ + public function setCSpSaved($value) + { + $this->cSpSaved = $value; + } + + /** + * Get BLIP Store Container + * + * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer + */ + public function getBstoreContainer() + { + return $this->bstoreContainer; + } + + /** + * Set BLIP Store Container + * + * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $bstoreContainer + */ + public function setBstoreContainer($bstoreContainer) + { + $this->bstoreContainer = $bstoreContainer; + } + + /** + * Set an option for the drawing group + * + * @param int $property The number specifies the option + * @param mixed $value + */ + public function setOPT($property, $value) + { + $this->OPT[$property] = $value; + } + + /** + * Get an option for the drawing group + * + * @param int $property The number specifies the option + * @return mixed + */ + public function getOPT($property) + { + if (isset($this->OPT[$property])) { + return $this->OPT[$property]; + } + return null; + } + + /** + * Get identifier clusters + * + * @return array + */ + public function getIDCLs() + { + return $this->IDCLs; + } + + /** + * Set identifier clusters. array(<drawingId> => <max shape id>, ...) + * + * @param array $pValue + */ + public function setIDCLs($pValue) + { + $this->IDCLs = $pValue; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php new file mode 100644 index 0000000..1af2432 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php @@ -0,0 +1,57 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DggContainer_BstoreContainer + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DggContainer_BstoreContainer +{ + /** + * BLIP Store Entries. Each of them holds one BLIP (Big Large Image or Picture) + * + * @var array + */ + private $BSECollection = array(); + + /** + * Add a BLIP Store Entry + * + * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $BSE + */ + public function addBSE($BSE) + { + $this->BSECollection[] = $BSE; + $BSE->setParent($this); + } + + /** + * Get the collection of BLIP Store Entries + * + * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE[] + */ + public function getBSECollection() + { + return $this->BSECollection; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php new file mode 100644 index 0000000..d17e91e --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php @@ -0,0 +1,112 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE +{ + const BLIPTYPE_ERROR = 0x00; + const BLIPTYPE_UNKNOWN = 0x01; + const BLIPTYPE_EMF = 0x02; + const BLIPTYPE_WMF = 0x03; + const BLIPTYPE_PICT = 0x04; + const BLIPTYPE_JPEG = 0x05; + const BLIPTYPE_PNG = 0x06; + const BLIPTYPE_DIB = 0x07; + const BLIPTYPE_TIFF = 0x11; + const BLIPTYPE_CMYKJPEG = 0x12; + + /** + * The parent BLIP Store Entry Container + * + * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer + */ + private $parent; + + /** + * The BLIP (Big Large Image or Picture) + * + * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip + */ + private $blip; + + /** + * The BLIP type + * + * @var int + */ + private $blipType; + + /** + * Set parent BLIP Store Entry Container + * + * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer $parent + */ + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * Get the BLIP + * + * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip + */ + public function getBlip() + { + return $this->blip; + } + + /** + * Set the BLIP + * + * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip $blip + */ + public function setBlip($blip) + { + $this->blip = $blip; + $blip->setParent($this); + } + + /** + * Get the BLIP type + * + * @return int + */ + public function getBlipType() + { + return $this->blipType; + } + + /** + * Set the BLIP type + * + * @param int + */ + public function setBlipType($blipType) + { + $this->blipType = $blipType; + } +} diff --git a/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php new file mode 100644 index 0000000..3bcbbbe --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php @@ -0,0 +1,83 @@ +<?php + +/** + * PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Escher + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip +{ + /** + * The parent BSE + * + * @var PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE + */ + private $parent; + + /** + * Raw image data + * + * @var string + */ + private $data; + + /** + * Get the raw image data + * + * @return string + */ + public function getData() + { + return $this->data; + } + + /** + * Set the raw image data + * + * @param string + */ + public function setData($data) + { + $this->data = $data; + } + + /** + * Set parent BSE + * + * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent + */ + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * Get parent BSE + * + * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent + */ + public function getParent() + { + return $this->parent; + } +} diff --git a/assets/excel/PHPExcel/Shared/Excel5.php b/assets/excel/PHPExcel/Shared/Excel5.php new file mode 100644 index 0000000..c3ff209 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Excel5.php @@ -0,0 +1,298 @@ +<?php + +/** + * PHPExcel_Shared_Excel5 + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_Excel5 +{ + /** + * Get the width of a column in pixels. We use the relationship y = ceil(7x) where + * x is the width in intrinsic Excel units (measuring width in number of normal characters) + * This holds for Arial 10 + * + * @param PHPExcel_Worksheet $sheet The sheet + * @param string $col The column + * @return integer The width in pixels + */ + public static function sizeCol($sheet, $col = 'A') + { + // default font of the workbook + $font = $sheet->getParent()->getDefaultStyle()->getFont(); + + $columnDimensions = $sheet->getColumnDimensions(); + + // first find the true column width in pixels (uncollapsed and unhidden) + if (isset($columnDimensions[$col]) and $columnDimensions[$col]->getWidth() != -1) { + // then we have column dimension with explicit width + $columnDimension = $columnDimensions[$col]; + $width = $columnDimension->getWidth(); + $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font); + } elseif ($sheet->getDefaultColumnDimension()->getWidth() != -1) { + // then we have default column dimension with explicit width + $defaultColumnDimension = $sheet->getDefaultColumnDimension(); + $width = $defaultColumnDimension->getWidth(); + $pixelWidth = PHPExcel_Shared_Drawing::cellDimensionToPixels($width, $font); + } else { + // we don't even have any default column dimension. Width depends on default font + $pixelWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($font, true); + } + + // now find the effective column width in pixels + if (isset($columnDimensions[$col]) and !$columnDimensions[$col]->getVisible()) { + $effectivePixelWidth = 0; + } else { + $effectivePixelWidth = $pixelWidth; + } + + return $effectivePixelWidth; + } + + /** + * Convert the height of a cell from user's units to pixels. By interpolation + * the relationship is: y = 4/3x. If the height hasn't been set by the user we + * use the default value. If the row is hidden we use a value of zero. + * + * @param PHPExcel_Worksheet $sheet The sheet + * @param integer $row The row index (1-based) + * @return integer The width in pixels + */ + public static function sizeRow($sheet, $row = 1) + { + // default font of the workbook + $font = $sheet->getParent()->getDefaultStyle()->getFont(); + + $rowDimensions = $sheet->getRowDimensions(); + + // first find the true row height in pixels (uncollapsed and unhidden) + if (isset($rowDimensions[$row]) and $rowDimensions[$row]->getRowHeight() != -1) { + // then we have a row dimension + $rowDimension = $rowDimensions[$row]; + $rowHeight = $rowDimension->getRowHeight(); + $pixelRowHeight = (int) ceil(4 * $rowHeight / 3); // here we assume Arial 10 + } elseif ($sheet->getDefaultRowDimension()->getRowHeight() != -1) { + // then we have a default row dimension with explicit height + $defaultRowDimension = $sheet->getDefaultRowDimension(); + $rowHeight = $defaultRowDimension->getRowHeight(); + $pixelRowHeight = PHPExcel_Shared_Drawing::pointsToPixels($rowHeight); + } else { + // we don't even have any default row dimension. Height depends on default font + $pointRowHeight = PHPExcel_Shared_Font::getDefaultRowHeightByFont($font); + $pixelRowHeight = PHPExcel_Shared_Font::fontSizeToPixels($pointRowHeight); + } + + // now find the effective row height in pixels + if (isset($rowDimensions[$row]) and !$rowDimensions[$row]->getVisible()) { + $effectivePixelRowHeight = 0; + } else { + $effectivePixelRowHeight = $pixelRowHeight; + } + + return $effectivePixelRowHeight; + } + + /** + * Get the horizontal distance in pixels between two anchors + * The distanceX is found as sum of all the spanning columns widths minus correction for the two offsets + * + * @param PHPExcel_Worksheet $sheet + * @param string $startColumn + * @param integer $startOffsetX Offset within start cell measured in 1/1024 of the cell width + * @param string $endColumn + * @param integer $endOffsetX Offset within end cell measured in 1/1024 of the cell width + * @return integer Horizontal measured in pixels + */ + public static function getDistanceX(PHPExcel_Worksheet $sheet, $startColumn = 'A', $startOffsetX = 0, $endColumn = 'A', $endOffsetX = 0) + { + $distanceX = 0; + + // add the widths of the spanning columns + $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; // 1-based + $endColumnIndex = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; // 1-based + for ($i = $startColumnIndex; $i <= $endColumnIndex; ++$i) { + $distanceX += self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($i)); + } + + // correct for offsetX in startcell + $distanceX -= (int) floor(self::sizeCol($sheet, $startColumn) * $startOffsetX / 1024); + + // correct for offsetX in endcell + $distanceX -= (int) floor(self::sizeCol($sheet, $endColumn) * (1 - $endOffsetX / 1024)); + + return $distanceX; + } + + /** + * Get the vertical distance in pixels between two anchors + * The distanceY is found as sum of all the spanning rows minus two offsets + * + * @param PHPExcel_Worksheet $sheet + * @param integer $startRow (1-based) + * @param integer $startOffsetY Offset within start cell measured in 1/256 of the cell height + * @param integer $endRow (1-based) + * @param integer $endOffsetY Offset within end cell measured in 1/256 of the cell height + * @return integer Vertical distance measured in pixels + */ + public static function getDistanceY(PHPExcel_Worksheet $sheet, $startRow = 1, $startOffsetY = 0, $endRow = 1, $endOffsetY = 0) + { + $distanceY = 0; + + // add the widths of the spanning rows + for ($row = $startRow; $row <= $endRow; ++$row) { + $distanceY += self::sizeRow($sheet, $row); + } + + // correct for offsetX in startcell + $distanceY -= (int) floor(self::sizeRow($sheet, $startRow) * $startOffsetY / 256); + + // correct for offsetX in endcell + $distanceY -= (int) floor(self::sizeRow($sheet, $endRow) * (1 - $endOffsetY / 256)); + + return $distanceY; + } + + /** + * Convert 1-cell anchor coordinates to 2-cell anchor coordinates + * This function is ported from PEAR Spreadsheet_Writer_Excel with small modifications + * + * Calculate the vertices that define the position of the image as required by + * the OBJ record. + * + * +------------+------------+ + * | A | B | + * +-----+------------+------------+ + * | |(x1,y1) | | + * | 1 |(A1)._______|______ | + * | | | | | + * | | | | | + * +-----+----| BITMAP |-----+ + * | | | | | + * | 2 | |______________. | + * | | | (B2)| + * | | | (x2,y2)| + * +---- +------------+------------+ + * + * Example of a bitmap that covers some of the area from cell A1 to cell B2. + * + * Based on the width and height of the bitmap we need to calculate 8 vars: + * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2. + * The width and height of the cells are also variable and have to be taken into + * account. + * The values of $col_start and $row_start are passed in from the calling + * function. The values of $col_end and $row_end are calculated by subtracting + * the width and height of the bitmap from the width and height of the + * underlying cells. + * The vertices are expressed as a percentage of the underlying cell width as + * follows (rhs values are in pixels): + * + * x1 = X / W *1024 + * y1 = Y / H *256 + * x2 = (X-1) / W *1024 + * y2 = (Y-1) / H *256 + * + * Where: X is distance from the left side of the underlying cell + * Y is distance from the top of the underlying cell + * W is the width of the cell + * H is the height of the cell + * + * @param PHPExcel_Worksheet $sheet + * @param string $coordinates E.g. 'A1' + * @param integer $offsetX Horizontal offset in pixels + * @param integer $offsetY Vertical offset in pixels + * @param integer $width Width in pixels + * @param integer $height Height in pixels + * @return array + */ + public static function oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height) + { + list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinates); + $col_start = PHPExcel_Cell::columnIndexFromString($column) - 1; + $row_start = $row - 1; + + $x1 = $offsetX; + $y1 = $offsetY; + + // Initialise end cell to the same as the start cell + $col_end = $col_start; // Col containing lower right corner of object + $row_end = $row_start; // Row containing bottom right corner of object + + // Zero the specified offset if greater than the cell dimensions + if ($x1 >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) { + $x1 = 0; + } + if ($y1 >= self::sizeRow($sheet, $row_start + 1)) { + $y1 = 0; + } + + $width = $width + $x1 -1; + $height = $height + $y1 -1; + + // Subtract the underlying cell widths to find the end cell of the image + while ($width >= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) { + $width -= self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)); + ++$col_end; + } + + // Subtract the underlying cell heights to find the end cell of the image + while ($height >= self::sizeRow($sheet, $row_end + 1)) { + $height -= self::sizeRow($sheet, $row_end + 1); + ++$row_end; + } + + // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell + // with zero height or width. + if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) { + return; + } + if (self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) { + return; + } + if (self::sizeRow($sheet, $row_start + 1) == 0) { + return; + } + if (self::sizeRow($sheet, $row_end + 1) == 0) { + return; + } + + // Convert the pixel values to the percentage value expected by Excel + $x1 = $x1 / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024; + $y1 = $y1 / self::sizeRow($sheet, $row_start + 1) * 256; + $x2 = ($width + 1) / self::sizeCol($sheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object + $y2 = ($height + 1) / self::sizeRow($sheet, $row_end + 1) * 256; // Distance to bottom of object + + $startCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_start) . ($row_start + 1); + $endCoordinates = PHPExcel_Cell::stringFromColumnIndex($col_end) . ($row_end + 1); + + $twoAnchor = array( + 'startCoordinates' => $startCoordinates, + 'startOffsetX' => $x1, + 'startOffsetY' => $y1, + 'endCoordinates' => $endCoordinates, + 'endOffsetX' => $x2, + 'endOffsetY' => $y2, + ); + + return $twoAnchor; + } +} diff --git a/assets/excel/PHPExcel/Shared/File.php b/assets/excel/PHPExcel/Shared/File.php new file mode 100644 index 0000000..a62df75 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/File.php @@ -0,0 +1,180 @@ +<?php + +/** + * PHPExcel_Shared_File + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_File +{ + /* + * Use Temp or File Upload Temp for temporary files + * + * @protected + * @var boolean + */ + protected static $useUploadTempDirectory = false; + + + /** + * Set the flag indicating whether the File Upload Temp directory should be used for temporary files + * + * @param boolean $useUploadTempDir Use File Upload Temporary directory (true or false) + */ + public static function setUseUploadTempDirectory($useUploadTempDir = false) + { + self::$useUploadTempDirectory = (boolean) $useUploadTempDir; + } + + + /** + * Get the flag indicating whether the File Upload Temp directory should be used for temporary files + * + * @return boolean Use File Upload Temporary directory (true or false) + */ + public static function getUseUploadTempDirectory() + { + return self::$useUploadTempDirectory; + } + + + /** + * Verify if a file exists + * + * @param string $pFilename Filename + * @return bool + */ + public static function file_exists($pFilename) + { + // Sick construction, but it seems that + // file_exists returns strange values when + // doing the original file_exists on ZIP archives... + if (strtolower(substr($pFilename, 0, 3)) == 'zip') { + // Open ZIP file and verify if the file exists + $zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6); + $archiveFile = substr($pFilename, strpos($pFilename, '#') + 1); + + $zip = new ZipArchive(); + if ($zip->open($zipFile) === true) { + $returnValue = ($zip->getFromName($archiveFile) !== false); + $zip->close(); + return $returnValue; + } else { + return false; + } + } else { + // Regular file_exists + return file_exists($pFilename); + } + } + + /** + * Returns canonicalized absolute pathname, also for ZIP archives + * + * @param string $pFilename + * @return string + */ + public static function realpath($pFilename) + { + // Returnvalue + $returnValue = ''; + + // Try using realpath() + if (file_exists($pFilename)) { + $returnValue = realpath($pFilename); + } + + // Found something? + if ($returnValue == '' || ($returnValue === null)) { + $pathArray = explode('/', $pFilename); + while (in_array('..', $pathArray) && $pathArray[0] != '..') { + for ($i = 0; $i < count($pathArray); ++$i) { + if ($pathArray[$i] == '..' && $i > 0) { + unset($pathArray[$i]); + unset($pathArray[$i - 1]); + break; + } + } + } + $returnValue = implode('/', $pathArray); + } + + // Return + return $returnValue; + } + + /** + * Get the systems temporary directory. + * + * @return string + */ + public static function sys_get_temp_dir() + { + if (self::$useUploadTempDirectory) { + // use upload-directory when defined to allow running on environments having very restricted + // open_basedir configs + if (ini_get('upload_tmp_dir') !== false) { + if ($temp = ini_get('upload_tmp_dir')) { + if (file_exists($temp)) { + return realpath($temp); + } + } + } + } + + // sys_get_temp_dir is only available since PHP 5.2.1 + // http://php.net/manual/en/function.sys-get-temp-dir.php#94119 + if (!function_exists('sys_get_temp_dir')) { + if ($temp = getenv('TMP')) { + if ((!empty($temp)) && (file_exists($temp))) { + return realpath($temp); + } + } + if ($temp = getenv('TEMP')) { + if ((!empty($temp)) && (file_exists($temp))) { + return realpath($temp); + } + } + if ($temp = getenv('TMPDIR')) { + if ((!empty($temp)) && (file_exists($temp))) { + return realpath($temp); + } + } + + // trick for creating a file in system's temporary dir + // without knowing the path of the system's temporary dir + $temp = tempnam(__FILE__, ''); + if (file_exists($temp)) { + unlink($temp); + return realpath(dirname($temp)); + } + + return null; + } + + // use ordinary built-in PHP function + // There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only + // be called if we're running 5.2.1 or earlier + return realpath(sys_get_temp_dir()); + } +} diff --git a/assets/excel/PHPExcel/Shared/Font.php b/assets/excel/PHPExcel/Shared/Font.php new file mode 100644 index 0000000..7efb3c9 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/Font.php @@ -0,0 +1,741 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Shared_Font + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Shared_Font +{ + /* Methods for resolving autosize value */ + const AUTOSIZE_METHOD_APPROX = 'approx'; + const AUTOSIZE_METHOD_EXACT = 'exact'; + + private static $autoSizeMethods = array( + self::AUTOSIZE_METHOD_APPROX, + self::AUTOSIZE_METHOD_EXACT, + ); + + /** Character set codes used by BIFF5-8 in Font records */ + const CHARSET_ANSI_LATIN = 0x00; + const CHARSET_SYSTEM_DEFAULT = 0x01; + const CHARSET_SYMBOL = 0x02; + const CHARSET_APPLE_ROMAN = 0x4D; + const CHARSET_ANSI_JAPANESE_SHIFTJIS = 0x80; + const CHARSET_ANSI_KOREAN_HANGUL = 0x81; + const CHARSET_ANSI_KOREAN_JOHAB = 0x82; + const CHARSET_ANSI_CHINESE_SIMIPLIFIED = 0x86; // gb2312 + const CHARSET_ANSI_CHINESE_TRADITIONAL = 0x88; // big5 + const CHARSET_ANSI_GREEK = 0xA1; + const CHARSET_ANSI_TURKISH = 0xA2; + const CHARSET_ANSI_VIETNAMESE = 0xA3; + const CHARSET_ANSI_HEBREW = 0xB1; + const CHARSET_ANSI_ARABIC = 0xB2; + const CHARSET_ANSI_BALTIC = 0xBA; + const CHARSET_ANSI_CYRILLIC = 0xCC; + const CHARSET_ANSI_THAI = 0xDD; + const CHARSET_ANSI_LATIN_II = 0xEE; + const CHARSET_OEM_LATIN_I = 0xFF; + + // XXX: Constants created! + /** Font filenames */ + const ARIAL = 'arial.ttf'; + const ARIAL_BOLD = 'arialbd.ttf'; + const ARIAL_ITALIC = 'ariali.ttf'; + const ARIAL_BOLD_ITALIC = 'arialbi.ttf'; + + const CALIBRI = 'CALIBRI.TTF'; + const CALIBRI_BOLD = 'CALIBRIB.TTF'; + const CALIBRI_ITALIC = 'CALIBRII.TTF'; + const CALIBRI_BOLD_ITALIC = 'CALIBRIZ.TTF'; + + const COMIC_SANS_MS = 'comic.ttf'; + const COMIC_SANS_MS_BOLD = 'comicbd.ttf'; + + const COURIER_NEW = 'cour.ttf'; + const COURIER_NEW_BOLD = 'courbd.ttf'; + const COURIER_NEW_ITALIC = 'couri.ttf'; + const COURIER_NEW_BOLD_ITALIC = 'courbi.ttf'; + + const GEORGIA = 'georgia.ttf'; + const GEORGIA_BOLD = 'georgiab.ttf'; + const GEORGIA_ITALIC = 'georgiai.ttf'; + const GEORGIA_BOLD_ITALIC = 'georgiaz.ttf'; + + const IMPACT = 'impact.ttf'; + + const LIBERATION_SANS = 'LiberationSans-Regular.ttf'; + const LIBERATION_SANS_BOLD = 'LiberationSans-Bold.ttf'; + const LIBERATION_SANS_ITALIC = 'LiberationSans-Italic.ttf'; + const LIBERATION_SANS_BOLD_ITALIC = 'LiberationSans-BoldItalic.ttf'; + + const LUCIDA_CONSOLE = 'lucon.ttf'; + const LUCIDA_SANS_UNICODE = 'l_10646.ttf'; + + const MICROSOFT_SANS_SERIF = 'micross.ttf'; + + const PALATINO_LINOTYPE = 'pala.ttf'; + const PALATINO_LINOTYPE_BOLD = 'palab.ttf'; + const PALATINO_LINOTYPE_ITALIC = 'palai.ttf'; + const PALATINO_LINOTYPE_BOLD_ITALIC = 'palabi.ttf'; + + const SYMBOL = 'symbol.ttf'; + + const TAHOMA = 'tahoma.ttf'; + const TAHOMA_BOLD = 'tahomabd.ttf'; + + const TIMES_NEW_ROMAN = 'times.ttf'; + const TIMES_NEW_ROMAN_BOLD = 'timesbd.ttf'; + const TIMES_NEW_ROMAN_ITALIC = 'timesi.ttf'; + const TIMES_NEW_ROMAN_BOLD_ITALIC = 'timesbi.ttf'; + + const TREBUCHET_MS = 'trebuc.ttf'; + const TREBUCHET_MS_BOLD = 'trebucbd.ttf'; + const TREBUCHET_MS_ITALIC = 'trebucit.ttf'; + const TREBUCHET_MS_BOLD_ITALIC = 'trebucbi.ttf'; + + const VERDANA = 'verdana.ttf'; + const VERDANA_BOLD = 'verdanab.ttf'; + const VERDANA_ITALIC = 'verdanai.ttf'; + const VERDANA_BOLD_ITALIC = 'verdanaz.ttf'; + + /** + * AutoSize method + * + * @var string + */ + private static $autoSizeMethod = self::AUTOSIZE_METHOD_APPROX; + + /** + * Path to folder containing TrueType font .ttf files + * + * @var string + */ + private static $trueTypeFontPath = null; + + /** + * How wide is a default column for a given default font and size? + * Empirical data found by inspecting real Excel files and reading off the pixel width + * in Microsoft Office Excel 2007. + * + * @var array + */ + public static $defaultColumnWidths = array( + 'Arial' => array( + 1 => array('px' => 24, 'width' => 12.00000000), + 2 => array('px' => 24, 'width' => 12.00000000), + 3 => array('px' => 32, 'width' => 10.66406250), + 4 => array('px' => 32, 'width' => 10.66406250), + 5 => array('px' => 40, 'width' => 10.00000000), + 6 => array('px' => 48, 'width' => 9.59765625), + 7 => array('px' => 48, 'width' => 9.59765625), + 8 => array('px' => 56, 'width' => 9.33203125), + 9 => array('px' => 64, 'width' => 9.14062500), + 10 => array('px' => 64, 'width' => 9.14062500), + ), + 'Calibri' => array( + 1 => array('px' => 24, 'width' => 12.00000000), + 2 => array('px' => 24, 'width' => 12.00000000), + 3 => array('px' => 32, 'width' => 10.66406250), + 4 => array('px' => 32, 'width' => 10.66406250), + 5 => array('px' => 40, 'width' => 10.00000000), + 6 => array('px' => 48, 'width' => 9.59765625), + 7 => array('px' => 48, 'width' => 9.59765625), + 8 => array('px' => 56, 'width' => 9.33203125), + 9 => array('px' => 56, 'width' => 9.33203125), + 10 => array('px' => 64, 'width' => 9.14062500), + 11 => array('px' => 64, 'width' => 9.14062500), + ), + 'Verdana' => array( + 1 => array('px' => 24, 'width' => 12.00000000), + 2 => array('px' => 24, 'width' => 12.00000000), + 3 => array('px' => 32, 'width' => 10.66406250), + 4 => array('px' => 32, 'width' => 10.66406250), + 5 => array('px' => 40, 'width' => 10.00000000), + 6 => array('px' => 48, 'width' => 9.59765625), + 7 => array('px' => 48, 'width' => 9.59765625), + 8 => array('px' => 64, 'width' => 9.14062500), + 9 => array('px' => 72, 'width' => 9.00000000), + 10 => array('px' => 72, 'width' => 9.00000000), + ), + ); + + /** + * Set autoSize method + * + * @param string $pValue + * @return boolean Success or failure + */ + public static function setAutoSizeMethod($pValue = self::AUTOSIZE_METHOD_APPROX) + { + if (!in_array($pValue, self::$autoSizeMethods)) { + return false; + } + self::$autoSizeMethod = $pValue; + + return true; + } + + /** + * Get autoSize method + * + * @return string + */ + public static function getAutoSizeMethod() + { + return self::$autoSizeMethod; + } + + /** + * Set the path to the folder containing .ttf files. There should be a trailing slash. + * Typical locations on variout some platforms: + * <ul> + * <li>C:/Windows/Fonts/</li> + * <li>/usr/share/fonts/truetype/</li> + * <li>~/.fonts/</li> + * </ul> + * + * @param string $pValue + */ + public static function setTrueTypeFontPath($pValue = '') + { + self::$trueTypeFontPath = $pValue; + } + + /** + * Get the path to the folder containing .ttf files. + * + * @return string + */ + public static function getTrueTypeFontPath() + { + return self::$trueTypeFontPath; + } + + /** + * Calculate an (approximate) OpenXML column width, based on font size and text contained + * + * @param PHPExcel_Style_Font $font Font object + * @param PHPExcel_RichText|string $cellText Text to calculate width + * @param integer $rotation Rotation angle + * @param PHPExcel_Style_Font|NULL $defaultFont Font object + * @return integer Column width + */ + public static function calculateColumnWidth(PHPExcel_Style_Font $font, $cellText = '', $rotation = 0, PHPExcel_Style_Font $defaultFont = null) + { + // If it is rich text, use plain text + if ($cellText instanceof PHPExcel_RichText) { + $cellText = $cellText->getPlainText(); + } + + // Special case if there are one or more newline characters ("\n") + if (strpos($cellText, "\n") !== false) { + $lineTexts = explode("\n", $cellText); + $lineWidths = array(); + foreach ($lineTexts as $lineText) { + $lineWidths[] = self::calculateColumnWidth($font, $lineText, $rotation = 0, $defaultFont); + } + return max($lineWidths); // width of longest line in cell + } + + // Try to get the exact text width in pixels + $approximate = self::$autoSizeMethod == self::AUTOSIZE_METHOD_APPROX; + if (!$approximate) { + $columnWidthAdjust = ceil(self::getTextWidthPixelsExact('n', $font, 0) * 1.07); + try { + // Width of text in pixels excl. padding + // and addition because Excel adds some padding, just use approx width of 'n' glyph + $columnWidth = self::getTextWidthPixelsExact($cellText, $font, $rotation) + $columnWidthAdjust; + } catch (PHPExcel_Exception $e) { + $approximate = true; + } + } + + if ($approximate) { + $columnWidthAdjust = self::getTextWidthPixelsApprox('n', $font, 0); + // Width of text in pixels excl. padding, approximation + // and addition because Excel adds some padding, just use approx width of 'n' glyph + $columnWidth = self::getTextWidthPixelsApprox($cellText, $font, $rotation) + $columnWidthAdjust; + } + + // Convert from pixel width to column width + $columnWidth = PHPExcel_Shared_Drawing::pixelsToCellDimension($columnWidth, $defaultFont); + + // Return + return round($columnWidth, 6); + } + + /** + * Get GD text width in pixels for a string of text in a certain font at a certain rotation angle + * + * @param string $text + * @param PHPExcel_Style_Font + * @param int $rotation + * @return int + * @throws PHPExcel_Exception + */ + public static function getTextWidthPixelsExact($text, PHPExcel_Style_Font $font, $rotation = 0) + { + if (!function_exists('imagettfbbox')) { + throw new PHPExcel_Exception('GD library needs to be enabled'); + } + + // font size should really be supplied in pixels in GD2, + // but since GD2 seems to assume 72dpi, pixels and points are the same + $fontFile = self::getTrueTypeFontFileFromFont($font); + $textBox = imagettfbbox($font->getSize(), $rotation, $fontFile, $text); + + // Get corners positions + $lowerLeftCornerX = $textBox[0]; +// $lowerLeftCornerY = $textBox[1]; + $lowerRightCornerX = $textBox[2]; +// $lowerRightCornerY = $textBox[3]; + $upperRightCornerX = $textBox[4]; +// $upperRightCornerY = $textBox[5]; + $upperLeftCornerX = $textBox[6]; +// $upperLeftCornerY = $textBox[7]; + + // Consider the rotation when calculating the width + $textWidth = max($lowerRightCornerX - $upperLeftCornerX, $upperRightCornerX - $lowerLeftCornerX); + + return $textWidth; + } + + /** + * Get approximate width in pixels for a string of text in a certain font at a certain rotation angle + * + * @param string $columnText + * @param PHPExcel_Style_Font $font + * @param int $rotation + * @return int Text width in pixels (no padding added) + */ + public static function getTextWidthPixelsApprox($columnText, PHPExcel_Style_Font $font = null, $rotation = 0) + { + $fontName = $font->getName(); + $fontSize = $font->getSize(); + + // Calculate column width in pixels. We assume fixed glyph width. Result varies with font name and size. + switch ($fontName) { + case 'Calibri': + // value 8.26 was found via interpolation by inspecting real Excel files with Calibri 11 font. + $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText)); + $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size + break; + + case 'Arial': + // value 7 was found via interpolation by inspecting real Excel files with Arial 10 font. +// $columnWidth = (int) (7 * PHPExcel_Shared_String::CountCharacters($columnText)); + // value 8 was set because of experience in different exports at Arial 10 font. + $columnWidth = (int) (8 * PHPExcel_Shared_String::CountCharacters($columnText)); + $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size + break; + + case 'Verdana': + // value 8 was found via interpolation by inspecting real Excel files with Verdana 10 font. + $columnWidth = (int) (8 * PHPExcel_Shared_String::CountCharacters($columnText)); + $columnWidth = $columnWidth * $fontSize / 10; // extrapolate from font size + break; + + default: + // just assume Calibri + $columnWidth = (int) (8.26 * PHPExcel_Shared_String::CountCharacters($columnText)); + $columnWidth = $columnWidth * $fontSize / 11; // extrapolate from font size + break; + } + + // Calculate approximate rotated column width + if ($rotation !== 0) { + if ($rotation == -165) { + // stacked text + $columnWidth = 4; // approximation + } else { + // rotated text + $columnWidth = $columnWidth * cos(deg2rad($rotation)) + + $fontSize * abs(sin(deg2rad($rotation))) / 5; // approximation + } + } + + // pixel width is an integer + return (int) $columnWidth; + } + + /** + * Calculate an (approximate) pixel size, based on a font points size + * + * @param int $fontSizeInPoints Font size (in points) + * @return int Font size (in pixels) + */ + public static function fontSizeToPixels($fontSizeInPoints = 11) + { + return (int) ((4 / 3) * $fontSizeInPoints); + } + + /** + * Calculate an (approximate) pixel size, based on inch size + * + * @param int $sizeInInch Font size (in inch) + * @return int Size (in pixels) + */ + public static function inchSizeToPixels($sizeInInch = 1) + { + return ($sizeInInch * 96); + } + + /** + * Calculate an (approximate) pixel size, based on centimeter size + * + * @param int $sizeInCm Font size (in centimeters) + * @return int Size (in pixels) + */ + public static function centimeterSizeToPixels($sizeInCm = 1) + { + return ($sizeInCm * 37.795275591); + } + + /** + * Returns the font path given the font + * + * @param PHPExcel_Style_Font + * @return string Path to TrueType font file + */ + public static function getTrueTypeFontFileFromFont($font) + { + if (!file_exists(self::$trueTypeFontPath) || !is_dir(self::$trueTypeFontPath)) { + throw new PHPExcel_Exception('Valid directory to TrueType Font files not specified'); + } + + $name = $font->getName(); + $bold = $font->getBold(); + $italic = $font->getItalic(); + + // Check if we can map font to true type font file + switch ($name) { + case 'Arial': + $fontFile = ( + $bold ? ($italic ? self::ARIAL_BOLD_ITALIC : self::ARIAL_BOLD) + : ($italic ? self::ARIAL_ITALIC : self::ARIAL) + ); + break; + case 'Calibri': + $fontFile = ( + $bold ? ($italic ? self::CALIBRI_BOLD_ITALIC : self::CALIBRI_BOLD) + : ($italic ? self::CALIBRI_ITALIC : self::CALIBRI) + ); + break; + case 'Courier New': + $fontFile = ( + $bold ? ($italic ? self::COURIER_NEW_BOLD_ITALIC : self::COURIER_NEW_BOLD) + : ($italic ? self::COURIER_NEW_ITALIC : self::COURIER_NEW) + ); + break; + case 'Comic Sans MS': + $fontFile = ( + $bold ? self::COMIC_SANS_MS_BOLD : self::COMIC_SANS_MS + ); + break; + case 'Georgia': + $fontFile = ( + $bold ? ($italic ? self::GEORGIA_BOLD_ITALIC : self::GEORGIA_BOLD) + : ($italic ? self::GEORGIA_ITALIC : self::GEORGIA) + ); + break; + case 'Impact': + $fontFile = self::IMPACT; + break; + case 'Liberation Sans': + $fontFile = ( + $bold ? ($italic ? self::LIBERATION_SANS_BOLD_ITALIC : self::LIBERATION_SANS_BOLD) + : ($italic ? self::LIBERATION_SANS_ITALIC : self::LIBERATION_SANS) + ); + break; + case 'Lucida Console': + $fontFile = self::LUCIDA_CONSOLE; + break; + case 'Lucida Sans Unicode': + $fontFile = self::LUCIDA_SANS_UNICODE; + break; + case 'Microsoft Sans Serif': + $fontFile = self::MICROSOFT_SANS_SERIF; + break; + case 'Palatino Linotype': + $fontFile = ( + $bold ? ($italic ? self::PALATINO_LINOTYPE_BOLD_ITALIC : self::PALATINO_LINOTYPE_BOLD) + : ($italic ? self::PALATINO_LINOTYPE_ITALIC : self::PALATINO_LINOTYPE) + ); + break; + case 'Symbol': + $fontFile = self::SYMBOL; + break; + case 'Tahoma': + $fontFile = ( + $bold ? self::TAHOMA_BOLD : self::TAHOMA + ); + break; + case 'Times New Roman': + $fontFile = ( + $bold ? ($italic ? self::TIMES_NEW_ROMAN_BOLD_ITALIC : self::TIMES_NEW_ROMAN_BOLD) + : ($italic ? self::TIMES_NEW_ROMAN_ITALIC : self::TIMES_NEW_ROMAN) + ); + break; + case 'Trebuchet MS': + $fontFile = ( + $bold ? ($italic ? self::TREBUCHET_MS_BOLD_ITALIC : self::TREBUCHET_MS_BOLD) + : ($italic ? self::TREBUCHET_MS_ITALIC : self::TREBUCHET_MS) + ); + break; + case 'Verdana': + $fontFile = ( + $bold ? ($italic ? self::VERDANA_BOLD_ITALIC : self::VERDANA_BOLD) + : ($italic ? self::VERDANA_ITALIC : self::VERDANA) + ); + break; + default: + throw new PHPExcel_Exception('Unknown font name "'. $name .'". Cannot map to TrueType font file'); + break; + } + + $fontFile = self::$trueTypeFontPath . $fontFile; + + // Check if file actually exists + if (!file_exists($fontFile)) { + throw new PHPExcel_Exception('TrueType Font file not found'); + } + + return $fontFile; + } + + /** + * Returns the associated charset for the font name. + * + * @param string $name Font name + * @return int Character set code + */ + public static function getCharsetFromFontName($name) + { + switch ($name) { + // Add more cases. Check FONT records in real Excel files. + case 'EucrosiaUPC': + return self::CHARSET_ANSI_THAI; + case 'Wingdings': + return self::CHARSET_SYMBOL; + case 'Wingdings 2': + return self::CHARSET_SYMBOL; + case 'Wingdings 3': + return self::CHARSET_SYMBOL; + default: + return self::CHARSET_ANSI_LATIN; + } + } + + /** + * Get the effective column width for columns without a column dimension or column with width -1 + * For example, for Calibri 11 this is 9.140625 (64 px) + * + * @param PHPExcel_Style_Font $font The workbooks default font + * @param boolean $pPixels true = return column width in pixels, false = return in OOXML units + * @return mixed Column width + */ + public static function getDefaultColumnWidthByFont(PHPExcel_Style_Font $font, $pPixels = false) + { + if (isset(self::$defaultColumnWidths[$font->getName()][$font->getSize()])) { + // Exact width can be determined + $columnWidth = $pPixels ? + self::$defaultColumnWidths[$font->getName()][$font->getSize()]['px'] + : self::$defaultColumnWidths[$font->getName()][$font->getSize()]['width']; + + } else { + // We don't have data for this particular font and size, use approximation by + // extrapolating from Calibri 11 + $columnWidth = $pPixels ? + self::$defaultColumnWidths['Calibri'][11]['px'] + : self::$defaultColumnWidths['Calibri'][11]['width']; + $columnWidth = $columnWidth * $font->getSize() / 11; + + // Round pixels to closest integer + if ($pPixels) { + $columnWidth = (int) round($columnWidth); + } + } + + return $columnWidth; + } + + /** + * Get the effective row height for rows without a row dimension or rows with height -1 + * For example, for Calibri 11 this is 15 points + * + * @param PHPExcel_Style_Font $font The workbooks default font + * @return float Row height in points + */ + public static function getDefaultRowHeightByFont(PHPExcel_Style_Font $font) + { + switch ($font->getName()) { + case 'Arial': + switch ($font->getSize()) { + case 10: + // inspection of Arial 10 workbook says 12.75pt ~17px + $rowHeight = 12.75; + break; + case 9: + // inspection of Arial 9 workbook says 12.00pt ~16px + $rowHeight = 12; + break; + case 8: + // inspection of Arial 8 workbook says 11.25pt ~15px + $rowHeight = 11.25; + break; + case 7: + // inspection of Arial 7 workbook says 9.00pt ~12px + $rowHeight = 9; + break; + case 6: + case 5: + // inspection of Arial 5,6 workbook says 8.25pt ~11px + $rowHeight = 8.25; + break; + case 4: + // inspection of Arial 4 workbook says 6.75pt ~9px + $rowHeight = 6.75; + break; + case 3: + // inspection of Arial 3 workbook says 6.00pt ~8px + $rowHeight = 6; + break; + case 2: + case 1: + // inspection of Arial 1,2 workbook says 5.25pt ~7px + $rowHeight = 5.25; + break; + default: + // use Arial 10 workbook as an approximation, extrapolation + $rowHeight = 12.75 * $font->getSize() / 10; + break; + } + break; + + case 'Calibri': + switch ($font->getSize()) { + case 11: + // inspection of Calibri 11 workbook says 15.00pt ~20px + $rowHeight = 15; + break; + case 10: + // inspection of Calibri 10 workbook says 12.75pt ~17px + $rowHeight = 12.75; + break; + case 9: + // inspection of Calibri 9 workbook says 12.00pt ~16px + $rowHeight = 12; + break; + case 8: + // inspection of Calibri 8 workbook says 11.25pt ~15px + $rowHeight = 11.25; + break; + case 7: + // inspection of Calibri 7 workbook says 9.00pt ~12px + $rowHeight = 9; + break; + case 6: + case 5: + // inspection of Calibri 5,6 workbook says 8.25pt ~11px + $rowHeight = 8.25; + break; + case 4: + // inspection of Calibri 4 workbook says 6.75pt ~9px + $rowHeight = 6.75; + break; + case 3: + // inspection of Calibri 3 workbook says 6.00pt ~8px + $rowHeight = 6.00; + break; + case 2: + case 1: + // inspection of Calibri 1,2 workbook says 5.25pt ~7px + $rowHeight = 5.25; + break; + default: + // use Calibri 11 workbook as an approximation, extrapolation + $rowHeight = 15 * $font->getSize() / 11; + break; + } + break; + + case 'Verdana': + switch ($font->getSize()) { + case 10: + // inspection of Verdana 10 workbook says 12.75pt ~17px + $rowHeight = 12.75; + break; + case 9: + // inspection of Verdana 9 workbook says 11.25pt ~15px + $rowHeight = 11.25; + break; + case 8: + // inspection of Verdana 8 workbook says 10.50pt ~14px + $rowHeight = 10.50; + break; + case 7: + // inspection of Verdana 7 workbook says 9.00pt ~12px + $rowHeight = 9.00; + break; + case 6: + case 5: + // inspection of Verdana 5,6 workbook says 8.25pt ~11px + $rowHeight = 8.25; + break; + case 4: + // inspection of Verdana 4 workbook says 6.75pt ~9px + $rowHeight = 6.75; + break; + case 3: + // inspection of Verdana 3 workbook says 6.00pt ~8px + $rowHeight = 6; + break; + case 2: + case 1: + // inspection of Verdana 1,2 workbook says 5.25pt ~7px + $rowHeight = 5.25; + break; + default: + // use Verdana 10 workbook as an approximation, extrapolation + $rowHeight = 12.75 * $font->getSize() / 10; + break; + } + break; + default: + // just use Calibri as an approximation + $rowHeight = 15 * $font->getSize() / 11; + break; + } + + return $rowHeight; + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT b/assets/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT new file mode 100644 index 0000000..1c18a5d --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/CHANGELOG.TXT @@ -0,0 +1,16 @@ +Mar 1, 2005 11:15 AST by PM + ++ For consistency, renamed Math.php to Maths.java, utils to util, + tests to test, docs to doc - + ++ Removed conditional logic from top of Matrix class. + ++ Switched to using hypo function in Maths.php for all php-hypot calls. + NOTE TO SELF: Need to make sure that all decompositions have been + switched over to using the bundled hypo. + +Feb 25, 2005 at 10:00 AST by PM + ++ Recommend using simpler Error.php instead of JAMA_Error.php but + can be persuaded otherwise. + diff --git a/assets/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php b/assets/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php new file mode 100644 index 0000000..d68109b --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php @@ -0,0 +1,148 @@ +<?php +/** + * @package JAMA + * + * Cholesky decomposition class + * + * For a symmetric, positive definite matrix A, the Cholesky decomposition + * is an lower triangular matrix L so that A = L*L'. + * + * If the matrix is not symmetric or positive definite, the constructor + * returns a partial decomposition and sets an internal flag that may + * be queried by the isSPD() method. + * + * @author Paul Meagher + * @author Michael Bommarito + * @version 1.2 + */ +class CholeskyDecomposition +{ + /** + * Decomposition storage + * @var array + * @access private + */ + private $L = array(); + + /** + * Matrix row and column dimension + * @var int + * @access private + */ + private $m; + + /** + * Symmetric positive definite flag + * @var boolean + * @access private + */ + private $isspd = true; + + /** + * CholeskyDecomposition + * + * Class constructor - decomposes symmetric positive definite matrix + * @param mixed Matrix square symmetric positive definite matrix + */ + public function __construct($A = null) + { + if ($A instanceof Matrix) { + $this->L = $A->getArray(); + $this->m = $A->getRowDimension(); + + for ($i = 0; $i < $this->m; ++$i) { + for ($j = $i; $j < $this->m; ++$j) { + for ($sum = $this->L[$i][$j], $k = $i - 1; $k >= 0; --$k) { + $sum -= $this->L[$i][$k] * $this->L[$j][$k]; + } + if ($i == $j) { + if ($sum >= 0) { + $this->L[$i][$i] = sqrt($sum); + } else { + $this->isspd = false; + } + } else { + if ($this->L[$i][$i] != 0) { + $this->L[$j][$i] = $sum / $this->L[$i][$i]; + } + } + } + + for ($k = $i+1; $k < $this->m; ++$k) { + $this->L[$i][$k] = 0.0; + } + } + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); + } + } // function __construct() + + /** + * Is the matrix symmetric and positive definite? + * + * @return boolean + */ + public function isSPD() + { + return $this->isspd; + } // function isSPD() + + /** + * getL + * + * Return triangular factor. + * @return Matrix Lower triangular matrix + */ + public function getL() + { + return new Matrix($this->L); + } // function getL() + + /** + * Solve A*X = B + * + * @param $B Row-equal matrix + * @return Matrix L * L' * X = B + */ + public function solve($B = null) + { + if ($B instanceof Matrix) { + if ($B->getRowDimension() == $this->m) { + if ($this->isspd) { + $X = $B->getArrayCopy(); + $nx = $B->getColumnDimension(); + + for ($k = 0; $k < $this->m; ++$k) { + for ($i = $k + 1; $i < $this->m; ++$i) { + for ($j = 0; $j < $nx; ++$j) { + $X[$i][$j] -= $X[$k][$j] * $this->L[$i][$k]; + } + } + for ($j = 0; $j < $nx; ++$j) { + $X[$k][$j] /= $this->L[$k][$k]; + } + } + + for ($k = $this->m - 1; $k >= 0; --$k) { + for ($j = 0; $j < $nx; ++$j) { + $X[$k][$j] /= $this->L[$k][$k]; + } + for ($i = 0; $i < $k; ++$i) { + for ($j = 0; $j < $nx; ++$j) { + $X[$i][$j] -= $X[$k][$j] * $this->L[$k][$i]; + } + } + } + + return new Matrix($X, $this->m, $nx); + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(MatrixSPDException)); + } + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(MATRIX_DIMENSION_EXCEPTION)); + } + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); + } + } // function solve() +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php b/assets/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php new file mode 100644 index 0000000..d4ae397 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php @@ -0,0 +1,864 @@ +<?php +/** + * @package JAMA + * + * Class to obtain eigenvalues and eigenvectors of a real matrix. + * + * If A is symmetric, then A = V*D*V' where the eigenvalue matrix D + * is diagonal and the eigenvector matrix V is orthogonal (i.e. + * A = V.times(D.times(V.transpose())) and V.times(V.transpose()) + * equals the identity matrix). + * + * If A is not symmetric, then the eigenvalue matrix D is block diagonal + * with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + * lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + * columns of V represent the eigenvectors in the sense that A*V = V*D, + * i.e. A.times(V) equals V.times(D). The matrix V may be badly + * conditioned, or even singular, so the validity of the equation + * A = V*D*inverse(V) depends upon V.cond(). + * + * @author Paul Meagher + * @license PHP v3.0 + * @version 1.1 + */ +class EigenvalueDecomposition +{ + /** + * Row and column dimension (square matrix). + * @var int + */ + private $n; + + /** + * Internal symmetry flag. + * @var int + */ + private $issymmetric; + + /** + * Arrays for internal storage of eigenvalues. + * @var array + */ + private $d = array(); + private $e = array(); + + /** + * Array for internal storage of eigenvectors. + * @var array + */ + private $V = array(); + + /** + * Array for internal storage of nonsymmetric Hessenberg form. + * @var array + */ + private $H = array(); + + /** + * Working storage for nonsymmetric algorithm. + * @var array + */ + private $ort; + + /** + * Used for complex scalar division. + * @var float + */ + private $cdivr; + private $cdivi; + + /** + * Symmetric Householder reduction to tridiagonal form. + * + * @access private + */ + private function tred2() + { + // This is derived from the Algol procedures tred2 by + // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + // Fortran subroutine in EISPACK. + $this->d = $this->V[$this->n-1]; + // Householder reduction to tridiagonal form. + for ($i = $this->n-1; $i > 0; --$i) { + $i_ = $i -1; + // Scale to avoid under/overflow. + $h = $scale = 0.0; + $scale += array_sum(array_map(abs, $this->d)); + if ($scale == 0.0) { + $this->e[$i] = $this->d[$i_]; + $this->d = array_slice($this->V[$i_], 0, $i_); + for ($j = 0; $j < $i; ++$j) { + $this->V[$j][$i] = $this->V[$i][$j] = 0.0; + } + } else { + // Generate Householder vector. + for ($k = 0; $k < $i; ++$k) { + $this->d[$k] /= $scale; + $h += pow($this->d[$k], 2); + } + $f = $this->d[$i_]; + $g = sqrt($h); + if ($f > 0) { + $g = -$g; + } + $this->e[$i] = $scale * $g; + $h = $h - $f * $g; + $this->d[$i_] = $f - $g; + for ($j = 0; $j < $i; ++$j) { + $this->e[$j] = 0.0; + } + // Apply similarity transformation to remaining columns. + for ($j = 0; $j < $i; ++$j) { + $f = $this->d[$j]; + $this->V[$j][$i] = $f; + $g = $this->e[$j] + $this->V[$j][$j] * $f; + for ($k = $j+1; $k <= $i_; ++$k) { + $g += $this->V[$k][$j] * $this->d[$k]; + $this->e[$k] += $this->V[$k][$j] * $f; + } + $this->e[$j] = $g; + } + $f = 0.0; + for ($j = 0; $j < $i; ++$j) { + $this->e[$j] /= $h; + $f += $this->e[$j] * $this->d[$j]; + } + $hh = $f / (2 * $h); + for ($j=0; $j < $i; ++$j) { + $this->e[$j] -= $hh * $this->d[$j]; + } + for ($j = 0; $j < $i; ++$j) { + $f = $this->d[$j]; + $g = $this->e[$j]; + for ($k = $j; $k <= $i_; ++$k) { + $this->V[$k][$j] -= ($f * $this->e[$k] + $g * $this->d[$k]); + } + $this->d[$j] = $this->V[$i-1][$j]; + $this->V[$i][$j] = 0.0; + } + } + $this->d[$i] = $h; + } + + // Accumulate transformations. + for ($i = 0; $i < $this->n-1; ++$i) { + $this->V[$this->n-1][$i] = $this->V[$i][$i]; + $this->V[$i][$i] = 1.0; + $h = $this->d[$i+1]; + if ($h != 0.0) { + for ($k = 0; $k <= $i; ++$k) { + $this->d[$k] = $this->V[$k][$i+1] / $h; + } + for ($j = 0; $j <= $i; ++$j) { + $g = 0.0; + for ($k = 0; $k <= $i; ++$k) { + $g += $this->V[$k][$i+1] * $this->V[$k][$j]; + } + for ($k = 0; $k <= $i; ++$k) { + $this->V[$k][$j] -= $g * $this->d[$k]; + } + } + } + for ($k = 0; $k <= $i; ++$k) { + $this->V[$k][$i+1] = 0.0; + } + } + + $this->d = $this->V[$this->n-1]; + $this->V[$this->n-1] = array_fill(0, $j, 0.0); + $this->V[$this->n-1][$this->n-1] = 1.0; + $this->e[0] = 0.0; + } + + /** + * Symmetric tridiagonal QL algorithm. + * + * This is derived from the Algol procedures tql2, by + * Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + * Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + * Fortran subroutine in EISPACK. + * + * @access private + */ + private function tql2() + { + for ($i = 1; $i < $this->n; ++$i) { + $this->e[$i-1] = $this->e[$i]; + } + $this->e[$this->n-1] = 0.0; + $f = 0.0; + $tst1 = 0.0; + $eps = pow(2.0, -52.0); + + for ($l = 0; $l < $this->n; ++$l) { + // Find small subdiagonal element + $tst1 = max($tst1, abs($this->d[$l]) + abs($this->e[$l])); + $m = $l; + while ($m < $this->n) { + if (abs($this->e[$m]) <= $eps * $tst1) { + break; + } + ++$m; + } + // If m == l, $this->d[l] is an eigenvalue, + // otherwise, iterate. + if ($m > $l) { + $iter = 0; + do { + // Could check iteration count here. + $iter += 1; + // Compute implicit shift + $g = $this->d[$l]; + $p = ($this->d[$l+1] - $g) / (2.0 * $this->e[$l]); + $r = hypo($p, 1.0); + if ($p < 0) { + $r *= -1; + } + $this->d[$l] = $this->e[$l] / ($p + $r); + $this->d[$l+1] = $this->e[$l] * ($p + $r); + $dl1 = $this->d[$l+1]; + $h = $g - $this->d[$l]; + for ($i = $l + 2; $i < $this->n; ++$i) { + $this->d[$i] -= $h; + } + $f += $h; + // Implicit QL transformation. + $p = $this->d[$m]; + $c = 1.0; + $c2 = $c3 = $c; + $el1 = $this->e[$l + 1]; + $s = $s2 = 0.0; + for ($i = $m-1; $i >= $l; --$i) { + $c3 = $c2; + $c2 = $c; + $s2 = $s; + $g = $c * $this->e[$i]; + $h = $c * $p; + $r = hypo($p, $this->e[$i]); + $this->e[$i+1] = $s * $r; + $s = $this->e[$i] / $r; + $c = $p / $r; + $p = $c * $this->d[$i] - $s * $g; + $this->d[$i+1] = $h + $s * ($c * $g + $s * $this->d[$i]); + // Accumulate transformation. + for ($k = 0; $k < $this->n; ++$k) { + $h = $this->V[$k][$i+1]; + $this->V[$k][$i+1] = $s * $this->V[$k][$i] + $c * $h; + $this->V[$k][$i] = $c * $this->V[$k][$i] - $s * $h; + } + } + $p = -$s * $s2 * $c3 * $el1 * $this->e[$l] / $dl1; + $this->e[$l] = $s * $p; + $this->d[$l] = $c * $p; + // Check for convergence. + } while (abs($this->e[$l]) > $eps * $tst1); + } + $this->d[$l] = $this->d[$l] + $f; + $this->e[$l] = 0.0; + } + + // Sort eigenvalues and corresponding vectors. + for ($i = 0; $i < $this->n - 1; ++$i) { + $k = $i; + $p = $this->d[$i]; + for ($j = $i+1; $j < $this->n; ++$j) { + if ($this->d[$j] < $p) { + $k = $j; + $p = $this->d[$j]; + } + } + if ($k != $i) { + $this->d[$k] = $this->d[$i]; + $this->d[$i] = $p; + for ($j = 0; $j < $this->n; ++$j) { + $p = $this->V[$j][$i]; + $this->V[$j][$i] = $this->V[$j][$k]; + $this->V[$j][$k] = $p; + } + } + } + } + + /** + * Nonsymmetric reduction to Hessenberg form. + * + * This is derived from the Algol procedures orthes and ortran, + * by Martin and Wilkinson, Handbook for Auto. Comp., + * Vol.ii-Linear Algebra, and the corresponding + * Fortran subroutines in EISPACK. + * + * @access private + */ + private function orthes() + { + $low = 0; + $high = $this->n-1; + + for ($m = $low+1; $m <= $high-1; ++$m) { + // Scale column. + $scale = 0.0; + for ($i = $m; $i <= $high; ++$i) { + $scale = $scale + abs($this->H[$i][$m-1]); + } + if ($scale != 0.0) { + // Compute Householder transformation. + $h = 0.0; + for ($i = $high; $i >= $m; --$i) { + $this->ort[$i] = $this->H[$i][$m-1] / $scale; + $h += $this->ort[$i] * $this->ort[$i]; + } + $g = sqrt($h); + if ($this->ort[$m] > 0) { + $g *= -1; + } + $h -= $this->ort[$m] * $g; + $this->ort[$m] -= $g; + // Apply Householder similarity transformation + // H = (I -u * u' / h) * H * (I -u * u') / h) + for ($j = $m; $j < $this->n; ++$j) { + $f = 0.0; + for ($i = $high; $i >= $m; --$i) { + $f += $this->ort[$i] * $this->H[$i][$j]; + } + $f /= $h; + for ($i = $m; $i <= $high; ++$i) { + $this->H[$i][$j] -= $f * $this->ort[$i]; + } + } + for ($i = 0; $i <= $high; ++$i) { + $f = 0.0; + for ($j = $high; $j >= $m; --$j) { + $f += $this->ort[$j] * $this->H[$i][$j]; + } + $f = $f / $h; + for ($j = $m; $j <= $high; ++$j) { + $this->H[$i][$j] -= $f * $this->ort[$j]; + } + } + $this->ort[$m] = $scale * $this->ort[$m]; + $this->H[$m][$m-1] = $scale * $g; + } + } + + // Accumulate transformations (Algol's ortran). + for ($i = 0; $i < $this->n; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $this->V[$i][$j] = ($i == $j ? 1.0 : 0.0); + } + } + for ($m = $high-1; $m >= $low+1; --$m) { + if ($this->H[$m][$m-1] != 0.0) { + for ($i = $m+1; $i <= $high; ++$i) { + $this->ort[$i] = $this->H[$i][$m-1]; + } + for ($j = $m; $j <= $high; ++$j) { + $g = 0.0; + for ($i = $m; $i <= $high; ++$i) { + $g += $this->ort[$i] * $this->V[$i][$j]; + } + // Double division avoids possible underflow + $g = ($g / $this->ort[$m]) / $this->H[$m][$m-1]; + for ($i = $m; $i <= $high; ++$i) { + $this->V[$i][$j] += $g * $this->ort[$i]; + } + } + } + } + } + + /** + * Performs complex division. + * + * @access private + */ + private function cdiv($xr, $xi, $yr, $yi) + { + if (abs($yr) > abs($yi)) { + $r = $yi / $yr; + $d = $yr + $r * $yi; + $this->cdivr = ($xr + $r * $xi) / $d; + $this->cdivi = ($xi - $r * $xr) / $d; + } else { + $r = $yr / $yi; + $d = $yi + $r * $yr; + $this->cdivr = ($r * $xr + $xi) / $d; + $this->cdivi = ($r * $xi - $xr) / $d; + } + } + + /** + * Nonsymmetric reduction from Hessenberg to real Schur form. + * + * Code is derived from the Algol procedure hqr2, + * by Martin and Wilkinson, Handbook for Auto. Comp., + * Vol.ii-Linear Algebra, and the corresponding + * Fortran subroutine in EISPACK. + * + * @access private + */ + private function hqr2() + { + // Initialize + $nn = $this->n; + $n = $nn - 1; + $low = 0; + $high = $nn - 1; + $eps = pow(2.0, -52.0); + $exshift = 0.0; + $p = $q = $r = $s = $z = 0; + // Store roots isolated by balanc and compute matrix norm + $norm = 0.0; + + for ($i = 0; $i < $nn; ++$i) { + if (($i < $low) or ($i > $high)) { + $this->d[$i] = $this->H[$i][$i]; + $this->e[$i] = 0.0; + } + for ($j = max($i-1, 0); $j < $nn; ++$j) { + $norm = $norm + abs($this->H[$i][$j]); + } + } + + // Outer loop over eigenvalue index + $iter = 0; + while ($n >= $low) { + // Look for single small sub-diagonal element + $l = $n; + while ($l > $low) { + $s = abs($this->H[$l-1][$l-1]) + abs($this->H[$l][$l]); + if ($s == 0.0) { + $s = $norm; + } + if (abs($this->H[$l][$l-1]) < $eps * $s) { + break; + } + --$l; + } + // Check for convergence + // One root found + if ($l == $n) { + $this->H[$n][$n] = $this->H[$n][$n] + $exshift; + $this->d[$n] = $this->H[$n][$n]; + $this->e[$n] = 0.0; + --$n; + $iter = 0; + // Two roots found + } elseif ($l == $n-1) { + $w = $this->H[$n][$n-1] * $this->H[$n-1][$n]; + $p = ($this->H[$n-1][$n-1] - $this->H[$n][$n]) / 2.0; + $q = $p * $p + $w; + $z = sqrt(abs($q)); + $this->H[$n][$n] = $this->H[$n][$n] + $exshift; + $this->H[$n-1][$n-1] = $this->H[$n-1][$n-1] + $exshift; + $x = $this->H[$n][$n]; + // Real pair + if ($q >= 0) { + if ($p >= 0) { + $z = $p + $z; + } else { + $z = $p - $z; + } + $this->d[$n-1] = $x + $z; + $this->d[$n] = $this->d[$n-1]; + if ($z != 0.0) { + $this->d[$n] = $x - $w / $z; + } + $this->e[$n-1] = 0.0; + $this->e[$n] = 0.0; + $x = $this->H[$n][$n-1]; + $s = abs($x) + abs($z); + $p = $x / $s; + $q = $z / $s; + $r = sqrt($p * $p + $q * $q); + $p = $p / $r; + $q = $q / $r; + // Row modification + for ($j = $n-1; $j < $nn; ++$j) { + $z = $this->H[$n-1][$j]; + $this->H[$n-1][$j] = $q * $z + $p * $this->H[$n][$j]; + $this->H[$n][$j] = $q * $this->H[$n][$j] - $p * $z; + } + // Column modification + for ($i = 0; $i <= $n; ++$i) { + $z = $this->H[$i][$n-1]; + $this->H[$i][$n-1] = $q * $z + $p * $this->H[$i][$n]; + $this->H[$i][$n] = $q * $this->H[$i][$n] - $p * $z; + } + // Accumulate transformations + for ($i = $low; $i <= $high; ++$i) { + $z = $this->V[$i][$n-1]; + $this->V[$i][$n-1] = $q * $z + $p * $this->V[$i][$n]; + $this->V[$i][$n] = $q * $this->V[$i][$n] - $p * $z; + } + // Complex pair + } else { + $this->d[$n-1] = $x + $p; + $this->d[$n] = $x + $p; + $this->e[$n-1] = $z; + $this->e[$n] = -$z; + } + $n = $n - 2; + $iter = 0; + // No convergence yet + } else { + // Form shift + $x = $this->H[$n][$n]; + $y = 0.0; + $w = 0.0; + if ($l < $n) { + $y = $this->H[$n-1][$n-1]; + $w = $this->H[$n][$n-1] * $this->H[$n-1][$n]; + } + // Wilkinson's original ad hoc shift + if ($iter == 10) { + $exshift += $x; + for ($i = $low; $i <= $n; ++$i) { + $this->H[$i][$i] -= $x; + } + $s = abs($this->H[$n][$n-1]) + abs($this->H[$n-1][$n-2]); + $x = $y = 0.75 * $s; + $w = -0.4375 * $s * $s; + } + // MATLAB's new ad hoc shift + if ($iter == 30) { + $s = ($y - $x) / 2.0; + $s = $s * $s + $w; + if ($s > 0) { + $s = sqrt($s); + if ($y < $x) { + $s = -$s; + } + $s = $x - $w / (($y - $x) / 2.0 + $s); + for ($i = $low; $i <= $n; ++$i) { + $this->H[$i][$i] -= $s; + } + $exshift += $s; + $x = $y = $w = 0.964; + } + } + // Could check iteration count here. + $iter = $iter + 1; + // Look for two consecutive small sub-diagonal elements + $m = $n - 2; + while ($m >= $l) { + $z = $this->H[$m][$m]; + $r = $x - $z; + $s = $y - $z; + $p = ($r * $s - $w) / $this->H[$m+1][$m] + $this->H[$m][$m+1]; + $q = $this->H[$m+1][$m+1] - $z - $r - $s; + $r = $this->H[$m+2][$m+1]; + $s = abs($p) + abs($q) + abs($r); + $p = $p / $s; + $q = $q / $s; + $r = $r / $s; + if ($m == $l) { + break; + } + if (abs($this->H[$m][$m-1]) * (abs($q) + abs($r)) < + $eps * (abs($p) * (abs($this->H[$m-1][$m-1]) + abs($z) + abs($this->H[$m+1][$m+1])))) { + break; + } + --$m; + } + for ($i = $m + 2; $i <= $n; ++$i) { + $this->H[$i][$i-2] = 0.0; + if ($i > $m+2) { + $this->H[$i][$i-3] = 0.0; + } + } + // Double QR step involving rows l:n and columns m:n + for ($k = $m; $k <= $n-1; ++$k) { + $notlast = ($k != $n-1); + if ($k != $m) { + $p = $this->H[$k][$k-1]; + $q = $this->H[$k+1][$k-1]; + $r = ($notlast ? $this->H[$k+2][$k-1] : 0.0); + $x = abs($p) + abs($q) + abs($r); + if ($x != 0.0) { + $p = $p / $x; + $q = $q / $x; + $r = $r / $x; + } + } + if ($x == 0.0) { + break; + } + $s = sqrt($p * $p + $q * $q + $r * $r); + if ($p < 0) { + $s = -$s; + } + if ($s != 0) { + if ($k != $m) { + $this->H[$k][$k-1] = -$s * $x; + } elseif ($l != $m) { + $this->H[$k][$k-1] = -$this->H[$k][$k-1]; + } + $p = $p + $s; + $x = $p / $s; + $y = $q / $s; + $z = $r / $s; + $q = $q / $p; + $r = $r / $p; + // Row modification + for ($j = $k; $j < $nn; ++$j) { + $p = $this->H[$k][$j] + $q * $this->H[$k+1][$j]; + if ($notlast) { + $p = $p + $r * $this->H[$k+2][$j]; + $this->H[$k+2][$j] = $this->H[$k+2][$j] - $p * $z; + } + $this->H[$k][$j] = $this->H[$k][$j] - $p * $x; + $this->H[$k+1][$j] = $this->H[$k+1][$j] - $p * $y; + } + // Column modification + for ($i = 0; $i <= min($n, $k+3); ++$i) { + $p = $x * $this->H[$i][$k] + $y * $this->H[$i][$k+1]; + if ($notlast) { + $p = $p + $z * $this->H[$i][$k+2]; + $this->H[$i][$k+2] = $this->H[$i][$k+2] - $p * $r; + } + $this->H[$i][$k] = $this->H[$i][$k] - $p; + $this->H[$i][$k+1] = $this->H[$i][$k+1] - $p * $q; + } + // Accumulate transformations + for ($i = $low; $i <= $high; ++$i) { + $p = $x * $this->V[$i][$k] + $y * $this->V[$i][$k+1]; + if ($notlast) { + $p = $p + $z * $this->V[$i][$k+2]; + $this->V[$i][$k+2] = $this->V[$i][$k+2] - $p * $r; + } + $this->V[$i][$k] = $this->V[$i][$k] - $p; + $this->V[$i][$k+1] = $this->V[$i][$k+1] - $p * $q; + } + } // ($s != 0) + } // k loop + } // check convergence + } // while ($n >= $low) + + // Backsubstitute to find vectors of upper triangular form + if ($norm == 0.0) { + return; + } + + for ($n = $nn-1; $n >= 0; --$n) { + $p = $this->d[$n]; + $q = $this->e[$n]; + // Real vector + if ($q == 0) { + $l = $n; + $this->H[$n][$n] = 1.0; + for ($i = $n-1; $i >= 0; --$i) { + $w = $this->H[$i][$i] - $p; + $r = 0.0; + for ($j = $l; $j <= $n; ++$j) { + $r = $r + $this->H[$i][$j] * $this->H[$j][$n]; + } + if ($this->e[$i] < 0.0) { + $z = $w; + $s = $r; + } else { + $l = $i; + if ($this->e[$i] == 0.0) { + if ($w != 0.0) { + $this->H[$i][$n] = -$r / $w; + } else { + $this->H[$i][$n] = -$r / ($eps * $norm); + } + // Solve real equations + } else { + $x = $this->H[$i][$i+1]; + $y = $this->H[$i+1][$i]; + $q = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i]; + $t = ($x * $s - $z * $r) / $q; + $this->H[$i][$n] = $t; + if (abs($x) > abs($z)) { + $this->H[$i+1][$n] = (-$r - $w * $t) / $x; + } else { + $this->H[$i+1][$n] = (-$s - $y * $t) / $z; + } + } + // Overflow control + $t = abs($this->H[$i][$n]); + if (($eps * $t) * $t > 1) { + for ($j = $i; $j <= $n; ++$j) { + $this->H[$j][$n] = $this->H[$j][$n] / $t; + } + } + } + } + // Complex vector + } elseif ($q < 0) { + $l = $n-1; + // Last vector component imaginary so matrix is triangular + if (abs($this->H[$n][$n-1]) > abs($this->H[$n-1][$n])) { + $this->H[$n-1][$n-1] = $q / $this->H[$n][$n-1]; + $this->H[$n-1][$n] = -($this->H[$n][$n] - $p) / $this->H[$n][$n-1]; + } else { + $this->cdiv(0.0, -$this->H[$n-1][$n], $this->H[$n-1][$n-1] - $p, $q); + $this->H[$n-1][$n-1] = $this->cdivr; + $this->H[$n-1][$n] = $this->cdivi; + } + $this->H[$n][$n-1] = 0.0; + $this->H[$n][$n] = 1.0; + for ($i = $n-2; $i >= 0; --$i) { + // double ra,sa,vr,vi; + $ra = 0.0; + $sa = 0.0; + for ($j = $l; $j <= $n; ++$j) { + $ra = $ra + $this->H[$i][$j] * $this->H[$j][$n-1]; + $sa = $sa + $this->H[$i][$j] * $this->H[$j][$n]; + } + $w = $this->H[$i][$i] - $p; + if ($this->e[$i] < 0.0) { + $z = $w; + $r = $ra; + $s = $sa; + } else { + $l = $i; + if ($this->e[$i] == 0) { + $this->cdiv(-$ra, -$sa, $w, $q); + $this->H[$i][$n-1] = $this->cdivr; + $this->H[$i][$n] = $this->cdivi; + } else { + // Solve complex equations + $x = $this->H[$i][$i+1]; + $y = $this->H[$i+1][$i]; + $vr = ($this->d[$i] - $p) * ($this->d[$i] - $p) + $this->e[$i] * $this->e[$i] - $q * $q; + $vi = ($this->d[$i] - $p) * 2.0 * $q; + if ($vr == 0.0 & $vi == 0.0) { + $vr = $eps * $norm * (abs($w) + abs($q) + abs($x) + abs($y) + abs($z)); + } + $this->cdiv($x * $r - $z * $ra + $q * $sa, $x * $s - $z * $sa - $q * $ra, $vr, $vi); + $this->H[$i][$n-1] = $this->cdivr; + $this->H[$i][$n] = $this->cdivi; + if (abs($x) > (abs($z) + abs($q))) { + $this->H[$i+1][$n-1] = (-$ra - $w * $this->H[$i][$n-1] + $q * $this->H[$i][$n]) / $x; + $this->H[$i+1][$n] = (-$sa - $w * $this->H[$i][$n] - $q * $this->H[$i][$n-1]) / $x; + } else { + $this->cdiv(-$r - $y * $this->H[$i][$n-1], -$s - $y * $this->H[$i][$n], $z, $q); + $this->H[$i+1][$n-1] = $this->cdivr; + $this->H[$i+1][$n] = $this->cdivi; + } + } + // Overflow control + $t = max(abs($this->H[$i][$n-1]), abs($this->H[$i][$n])); + if (($eps * $t) * $t > 1) { + for ($j = $i; $j <= $n; ++$j) { + $this->H[$j][$n-1] = $this->H[$j][$n-1] / $t; + $this->H[$j][$n] = $this->H[$j][$n] / $t; + } + } + } // end else + } // end for + } // end else for complex case + } // end for + + // Vectors of isolated roots + for ($i = 0; $i < $nn; ++$i) { + if ($i < $low | $i > $high) { + for ($j = $i; $j < $nn; ++$j) { + $this->V[$i][$j] = $this->H[$i][$j]; + } + } + } + + // Back transformation to get eigenvectors of original matrix + for ($j = $nn-1; $j >= $low; --$j) { + for ($i = $low; $i <= $high; ++$i) { + $z = 0.0; + for ($k = $low; $k <= min($j, $high); ++$k) { + $z = $z + $this->V[$i][$k] * $this->H[$k][$j]; + } + $this->V[$i][$j] = $z; + } + } + } // end hqr2 + + /** + * Constructor: Check for symmetry, then construct the eigenvalue decomposition + * + * @access public + * @param A Square matrix + * @return Structure to access D and V. + */ + public function __construct($Arg) + { + $this->A = $Arg->getArray(); + $this->n = $Arg->getColumnDimension(); + + $issymmetric = true; + for ($j = 0; ($j < $this->n) & $issymmetric; ++$j) { + for ($i = 0; ($i < $this->n) & $issymmetric; ++$i) { + $issymmetric = ($this->A[$i][$j] == $this->A[$j][$i]); + } + } + + if ($issymmetric) { + $this->V = $this->A; + // Tridiagonalize. + $this->tred2(); + // Diagonalize. + $this->tql2(); + } else { + $this->H = $this->A; + $this->ort = array(); + // Reduce to Hessenberg form. + $this->orthes(); + // Reduce Hessenberg to real Schur form. + $this->hqr2(); + } + } + + /** + * Return the eigenvector matrix + * + * @access public + * @return V + */ + public function getV() + { + return new Matrix($this->V, $this->n, $this->n); + } + + /** + * Return the real parts of the eigenvalues + * + * @access public + * @return real(diag(D)) + */ + public function getRealEigenvalues() + { + return $this->d; + } + + /** + * Return the imaginary parts of the eigenvalues + * + * @access public + * @return imag(diag(D)) + */ + public function getImagEigenvalues() + { + return $this->e; + } + + /** + * Return the block diagonal eigenvalue matrix + * + * @access public + * @return D + */ + public function getD() + { + for ($i = 0; $i < $this->n; ++$i) { + $D[$i] = array_fill(0, $this->n, 0.0); + $D[$i][$i] = $this->d[$i]; + if ($this->e[$i] == 0) { + continue; + } + $o = ($this->e[$i] > 0) ? $i + 1 : $i - 1; + $D[$i][$o] = $this->e[$i]; + } + return new Matrix($D); + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/LUDecomposition.php b/assets/excel/PHPExcel/Shared/JAMA/LUDecomposition.php new file mode 100644 index 0000000..2505d92 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/LUDecomposition.php @@ -0,0 +1,257 @@ +<?php +/** + * @package JAMA + * + * For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n + * unit lower triangular matrix L, an n-by-n upper triangular matrix U, + * and a permutation vector piv of length m so that A(piv,:) = L*U. + * If m < n, then L is m-by-m and U is m-by-n. + * + * The LU decompostion with pivoting always exists, even if the matrix is + * singular, so the constructor will never fail. The primary use of the + * LU decomposition is in the solution of square systems of simultaneous + * linear equations. This will fail if isNonsingular() returns false. + * + * @author Paul Meagher + * @author Bartosz Matosiuk + * @author Michael Bommarito + * @version 1.1 + * @license PHP v3.0 + */ +class PHPExcel_Shared_JAMA_LUDecomposition +{ + const MATRIX_SINGULAR_EXCEPTION = "Can only perform operation on singular matrix."; + const MATRIX_SQUARE_EXCEPTION = "Mismatched Row dimension"; + + /** + * Decomposition storage + * @var array + */ + private $LU = array(); + + /** + * Row dimension. + * @var int + */ + private $m; + + /** + * Column dimension. + * @var int + */ + private $n; + + /** + * Pivot sign. + * @var int + */ + private $pivsign; + + /** + * Internal storage of pivot vector. + * @var array + */ + private $piv = array(); + + /** + * LU Decomposition constructor. + * + * @param $A Rectangular matrix + * @return Structure to access L, U and piv. + */ + public function __construct($A) + { + if ($A instanceof PHPExcel_Shared_JAMA_Matrix) { + // Use a "left-looking", dot-product, Crout/Doolittle algorithm. + $this->LU = $A->getArray(); + $this->m = $A->getRowDimension(); + $this->n = $A->getColumnDimension(); + for ($i = 0; $i < $this->m; ++$i) { + $this->piv[$i] = $i; + } + $this->pivsign = 1; + $LUrowi = $LUcolj = array(); + + // Outer loop. + for ($j = 0; $j < $this->n; ++$j) { + // Make a copy of the j-th column to localize references. + for ($i = 0; $i < $this->m; ++$i) { + $LUcolj[$i] = &$this->LU[$i][$j]; + } + // Apply previous transformations. + for ($i = 0; $i < $this->m; ++$i) { + $LUrowi = $this->LU[$i]; + // Most of the time is spent in the following dot product. + $kmax = min($i, $j); + $s = 0.0; + for ($k = 0; $k < $kmax; ++$k) { + $s += $LUrowi[$k] * $LUcolj[$k]; + } + $LUrowi[$j] = $LUcolj[$i] -= $s; + } + // Find pivot and exchange if necessary. + $p = $j; + for ($i = $j+1; $i < $this->m; ++$i) { + if (abs($LUcolj[$i]) > abs($LUcolj[$p])) { + $p = $i; + } + } + if ($p != $j) { + for ($k = 0; $k < $this->n; ++$k) { + $t = $this->LU[$p][$k]; + $this->LU[$p][$k] = $this->LU[$j][$k]; + $this->LU[$j][$k] = $t; + } + $k = $this->piv[$p]; + $this->piv[$p] = $this->piv[$j]; + $this->piv[$j] = $k; + $this->pivsign = $this->pivsign * -1; + } + // Compute multipliers. + if (($j < $this->m) && ($this->LU[$j][$j] != 0.0)) { + for ($i = $j+1; $i < $this->m; ++$i) { + $this->LU[$i][$j] /= $this->LU[$j][$j]; + } + } + } + } else { + throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::ARGUMENT_TYPE_EXCEPTION); + } + } // function __construct() + + /** + * Get lower triangular factor. + * + * @return array Lower triangular factor + */ + public function getL() + { + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + if ($i > $j) { + $L[$i][$j] = $this->LU[$i][$j]; + } elseif ($i == $j) { + $L[$i][$j] = 1.0; + } else { + $L[$i][$j] = 0.0; + } + } + } + return new PHPExcel_Shared_JAMA_Matrix($L); + } // function getL() + + /** + * Get upper triangular factor. + * + * @return array Upper triangular factor + */ + public function getU() + { + for ($i = 0; $i < $this->n; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + if ($i <= $j) { + $U[$i][$j] = $this->LU[$i][$j]; + } else { + $U[$i][$j] = 0.0; + } + } + } + return new PHPExcel_Shared_JAMA_Matrix($U); + } // function getU() + + /** + * Return pivot permutation vector. + * + * @return array Pivot vector + */ + public function getPivot() + { + return $this->piv; + } // function getPivot() + + /** + * Alias for getPivot + * + * @see getPivot + */ + public function getDoublePivot() + { + return $this->getPivot(); + } // function getDoublePivot() + + /** + * Is the matrix nonsingular? + * + * @return true if U, and hence A, is nonsingular. + */ + public function isNonsingular() + { + for ($j = 0; $j < $this->n; ++$j) { + if ($this->LU[$j][$j] == 0) { + return false; + } + } + return true; + } // function isNonsingular() + + /** + * Count determinants + * + * @return array d matrix deterninat + */ + public function det() + { + if ($this->m == $this->n) { + $d = $this->pivsign; + for ($j = 0; $j < $this->n; ++$j) { + $d *= $this->LU[$j][$j]; + } + return $d; + } else { + throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::MATRIX_DIMENSION_EXCEPTION); + } + } // function det() + + /** + * Solve A*X = B + * + * @param $B A Matrix with as many rows as A and any number of columns. + * @return X so that L*U*X = B(piv,:) + * @PHPExcel_Calculation_Exception IllegalArgumentException Matrix row dimensions must agree. + * @PHPExcel_Calculation_Exception RuntimeException Matrix is singular. + */ + public function solve($B) + { + if ($B->getRowDimension() == $this->m) { + if ($this->isNonsingular()) { + // Copy right hand side with pivoting + $nx = $B->getColumnDimension(); + $X = $B->getMatrix($this->piv, 0, $nx-1); + // Solve L*Y = B(piv,:) + for ($k = 0; $k < $this->n; ++$k) { + for ($i = $k+1; $i < $this->n; ++$i) { + for ($j = 0; $j < $nx; ++$j) { + $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k]; + } + } + } + // Solve U*X = Y; + for ($k = $this->n-1; $k >= 0; --$k) { + for ($j = 0; $j < $nx; ++$j) { + $X->A[$k][$j] /= $this->LU[$k][$k]; + } + for ($i = 0; $i < $k; ++$i) { + for ($j = 0; $j < $nx; ++$j) { + $X->A[$i][$j] -= $X->A[$k][$j] * $this->LU[$i][$k]; + } + } + } + return $X; + } else { + throw new PHPExcel_Calculation_Exception(self::MATRIX_SINGULAR_EXCEPTION); + } + } else { + throw new PHPExcel_Calculation_Exception(self::MATRIX_SQUARE_EXCEPTION); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/Matrix.php b/assets/excel/PHPExcel/Shared/JAMA/Matrix.php new file mode 100644 index 0000000..82fb0fb --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/Matrix.php @@ -0,0 +1,1159 @@ +<?php +/** + * @package JAMA + */ + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + + +/* + * Matrix class + * + * @author Paul Meagher + * @author Michael Bommarito + * @author Lukasz Karapuda + * @author Bartek Matosiuk + * @version 1.8 + * @license PHP v3.0 + * @see http://math.nist.gov/javanumerics/jama/ + */ +class PHPExcel_Shared_JAMA_Matrix +{ + const POLYMORPHIC_ARGUMENT_EXCEPTION = "Invalid argument pattern for polymorphic function."; + const ARGUMENT_TYPE_EXCEPTION = "Invalid argument type."; + const ARGUMENT_BOUNDS_EXCEPTION = "Invalid argument range."; + const MATRIX_DIMENSION_EXCEPTION = "Matrix dimensions are not equal."; + const ARRAY_LENGTH_EXCEPTION = "Array length must be a multiple of m."; + + /** + * Matrix storage + * + * @var array + * @access public + */ + public $A = array(); + + /** + * Matrix row dimension + * + * @var int + * @access private + */ + private $m; + + /** + * Matrix column dimension + * + * @var int + * @access private + */ + private $n; + + /** + * Polymorphic constructor + * + * As PHP has no support for polymorphic constructors, we hack our own sort of polymorphism using func_num_args, func_get_arg, and gettype. In essence, we're just implementing a simple RTTI filter and calling the appropriate constructor. + */ + public function __construct() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + //Rectangular matrix - m x n initialized from 2D array + case 'array': + $this->m = count($args[0]); + $this->n = count($args[0][0]); + $this->A = $args[0]; + break; + //Square matrix - n x n + case 'integer': + $this->m = $args[0]; + $this->n = $args[0]; + $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0)); + break; + //Rectangular matrix - m x n + case 'integer,integer': + $this->m = $args[0]; + $this->n = $args[1]; + $this->A = array_fill(0, $this->m, array_fill(0, $this->n, 0)); + break; + //Rectangular matrix - m x n initialized from packed array + case 'array,integer': + $this->m = $args[1]; + if ($this->m != 0) { + $this->n = count($args[0]) / $this->m; + } else { + $this->n = 0; + } + if (($this->m * $this->n) == count($args[0])) { + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $this->A[$i][$j] = $args[0][$i + $j * $this->m]; + } + } + } else { + throw new PHPExcel_Calculation_Exception(self::ARRAY_LENGTH_EXCEPTION); + } + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * getArray + * + * @return array Matrix array + */ + public function getArray() + { + return $this->A; + } + + /** + * getRowDimension + * + * @return int Row dimension + */ + public function getRowDimension() + { + return $this->m; + } + + /** + * getColumnDimension + * + * @return int Column dimension + */ + public function getColumnDimension() + { + return $this->n; + } + + /** + * get + * + * Get the i,j-th element of the matrix. + * @param int $i Row position + * @param int $j Column position + * @return mixed Element (int/float/double) + */ + public function get($i = null, $j = null) + { + return $this->A[$i][$j]; + } + + /** + * getMatrix + * + * Get a submatrix + * @param int $i0 Initial row index + * @param int $iF Final row index + * @param int $j0 Initial column index + * @param int $jF Final column index + * @return Matrix Submatrix + */ + public function getMatrix() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + //A($i0...; $j0...) + case 'integer,integer': + list($i0, $j0) = $args; + if ($i0 >= 0) { + $m = $this->m - $i0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if ($j0 >= 0) { + $n = $this->n - $j0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); + for ($i = $i0; $i < $this->m; ++$i) { + for ($j = $j0; $j < $this->n; ++$j) { + $R->set($i, $j, $this->A[$i][$j]); + } + } + return $R; + break; + //A($i0...$iF; $j0...$jF) + case 'integer,integer,integer,integer': + list($i0, $iF, $j0, $jF) = $args; + if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { + $m = $iF - $i0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if (($jF > $j0) && ($this->n >= $jF) && ($j0 >= 0)) { + $n = $jF - $j0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m+1, $n+1); + for ($i = $i0; $i <= $iF; ++$i) { + for ($j = $j0; $j <= $jF; ++$j) { + $R->set($i - $i0, $j - $j0, $this->A[$i][$j]); + } + } + return $R; + break; + //$R = array of row indices; $C = array of column indices + case 'array,array': + list($RL, $CL) = $args; + if (count($RL) > 0) { + $m = count($RL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if (count($CL) > 0) { + $n = count($CL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); + for ($i = 0; $i < $m; ++$i) { + for ($j = 0; $j < $n; ++$j) { + $R->set($i - $i0, $j - $j0, $this->A[$RL[$i]][$CL[$j]]); + } + } + return $R; + break; + //$RL = array of row indices; $CL = array of column indices + case 'array,array': + list($RL, $CL) = $args; + if (count($RL) > 0) { + $m = count($RL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if (count($CL) > 0) { + $n = count($CL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); + for ($i = 0; $i < $m; ++$i) { + for ($j = 0; $j < $n; ++$j) { + $R->set($i, $j, $this->A[$RL[$i]][$CL[$j]]); + } + } + return $R; + break; + //A($i0...$iF); $CL = array of column indices + case 'integer,integer,array': + list($i0, $iF, $CL) = $args; + if (($iF > $i0) && ($this->m >= $iF) && ($i0 >= 0)) { + $m = $iF - $i0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if (count($CL) > 0) { + $n = count($CL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); + for ($i = $i0; $i < $iF; ++$i) { + for ($j = 0; $j < $n; ++$j) { + $R->set($i - $i0, $j, $this->A[$RL[$i]][$j]); + } + } + return $R; + break; + //$RL = array of row indices + case 'array,integer,integer': + list($RL, $j0, $jF) = $args; + if (count($RL) > 0) { + $m = count($RL); + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + if (($jF >= $j0) && ($this->n >= $jF) && ($j0 >= 0)) { + $n = $jF - $j0; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_BOUNDS_EXCEPTION); + } + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n+1); + for ($i = 0; $i < $m; ++$i) { + for ($j = $j0; $j <= $jF; ++$j) { + $R->set($i, $j - $j0, $this->A[$RL[$i]][$j]); + } + } + return $R; + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * checkMatrixDimensions + * + * Is matrix B the same size? + * @param Matrix $B Matrix B + * @return boolean + */ + public function checkMatrixDimensions($B = null) + { + if ($B instanceof PHPExcel_Shared_JAMA_Matrix) { + if (($this->m == $B->getRowDimension()) && ($this->n == $B->getColumnDimension())) { + return true; + } else { + throw new PHPExcel_Calculation_Exception(self::MATRIX_DIMENSION_EXCEPTION); + } + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + } // function checkMatrixDimensions() + + /** + * set + * + * Set the i,j-th element of the matrix. + * @param int $i Row position + * @param int $j Column position + * @param mixed $c Int/float/double value + * @return mixed Element (int/float/double) + */ + public function set($i = null, $j = null, $c = null) + { + // Optimized set version just has this + $this->A[$i][$j] = $c; + } // function set() + + /** + * identity + * + * Generate an identity matrix. + * @param int $m Row dimension + * @param int $n Column dimension + * @return Matrix Identity matrix + */ + public function identity($m = null, $n = null) + { + return $this->diagonal($m, $n, 1); + } + + /** + * diagonal + * + * Generate a diagonal matrix + * @param int $m Row dimension + * @param int $n Column dimension + * @param mixed $c Diagonal value + * @return Matrix Diagonal matrix + */ + public function diagonal($m = null, $n = null, $c = 1) + { + $R = new PHPExcel_Shared_JAMA_Matrix($m, $n); + for ($i = 0; $i < $m; ++$i) { + $R->set($i, $i, $c); + } + return $R; + } + + /** + * getMatrixByRow + * + * Get a submatrix by row index/range + * @param int $i0 Initial row index + * @param int $iF Final row index + * @return Matrix Submatrix + */ + public function getMatrixByRow($i0 = null, $iF = null) + { + if (is_int($i0)) { + if (is_int($iF)) { + return $this->getMatrix($i0, 0, $iF + 1, $this->n); + } else { + return $this->getMatrix($i0, 0, $i0 + 1, $this->n); + } + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + } + + /** + * getMatrixByCol + * + * Get a submatrix by column index/range + * @param int $i0 Initial column index + * @param int $iF Final column index + * @return Matrix Submatrix + */ + public function getMatrixByCol($j0 = null, $jF = null) + { + if (is_int($j0)) { + if (is_int($jF)) { + return $this->getMatrix(0, $j0, $this->m, $jF + 1); + } else { + return $this->getMatrix(0, $j0, $this->m, $j0 + 1); + } + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + } + + /** + * transpose + * + * Tranpose matrix + * @return Matrix Transposed matrix + */ + public function transpose() + { + $R = new PHPExcel_Shared_JAMA_Matrix($this->n, $this->m); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $R->set($j, $i, $this->A[$i][$j]); + } + } + return $R; + } // function transpose() + + /** + * trace + * + * Sum of diagonal elements + * @return float Sum of diagonal elements + */ + public function trace() + { + $s = 0; + $n = min($this->m, $this->n); + for ($i = 0; $i < $n; ++$i) { + $s += $this->A[$i][$i]; + } + return $s; + } + + /** + * uminus + * + * Unary minus matrix -A + * @return Matrix Unary minus matrix + */ + public function uminus() + { + } + + /** + * plus + * + * A + B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function plus() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $M->set($i, $j, $M->get($i, $j) + $this->A[$i][$j]); + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * plusEquals + * + * A = A + B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function plusEquals() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $validValues = true; + $value = $M->get($i, $j); + if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); + } + if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { + $value = trim($value, '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); + } + if ($validValues) { + $this->A[$i][$j] += $value; + } else { + $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); + } + } + } + return $this; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * minus + * + * A - B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function minus() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $M->set($i, $j, $M->get($i, $j) - $this->A[$i][$j]); + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * minusEquals + * + * A = A - B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function minusEquals() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $validValues = true; + $value = $M->get($i, $j); + if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); + } + if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { + $value = trim($value, '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); + } + if ($validValues) { + $this->A[$i][$j] -= $value; + } else { + $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); + } + } + } + return $this; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * arrayTimes + * + * Element-by-element multiplication + * Cij = Aij * Bij + * @param mixed $B Matrix/Array + * @return Matrix Matrix Cij + */ + public function arrayTimes() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $M->set($i, $j, $M->get($i, $j) * $this->A[$i][$j]); + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * arrayTimesEquals + * + * Element-by-element multiplication + * Aij = Aij * Bij + * @param mixed $B Matrix/Array + * @return Matrix Matrix Aij + */ + public function arrayTimesEquals() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $validValues = true; + $value = $M->get($i, $j); + if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); + } + if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { + $value = trim($value, '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); + } + if ($validValues) { + $this->A[$i][$j] *= $value; + } else { + $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); + } + } + } + return $this; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * arrayRightDivide + * + * Element-by-element right division + * A / B + * @param Matrix $B Matrix B + * @return Matrix Division result + */ + public function arrayRightDivide() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $validValues = true; + $value = $M->get($i, $j); + if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); + } + if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { + $value = trim($value, '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); + } + if ($validValues) { + if ($value == 0) { + // Trap for Divide by Zero error + $M->set($i, $j, '#DIV/0!'); + } else { + $M->set($i, $j, $this->A[$i][$j] / $value); + } + } else { + $M->set($i, $j, PHPExcel_Calculation_Functions::NaN()); + } + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + + /** + * arrayRightDivideEquals + * + * Element-by-element right division + * Aij = Aij / Bij + * @param mixed $B Matrix/Array + * @return Matrix Matrix Aij + */ + public function arrayRightDivideEquals() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $this->A[$i][$j] = $this->A[$i][$j] / $M->get($i, $j); + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + + /** + * arrayLeftDivide + * + * Element-by-element Left division + * A / B + * @param Matrix $B Matrix B + * @return Matrix Division result + */ + public function arrayLeftDivide() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $M->set($i, $j, $M->get($i, $j) / $this->A[$i][$j]); + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + + /** + * arrayLeftDivideEquals + * + * Element-by-element Left division + * Aij = Aij / Bij + * @param mixed $B Matrix/Array + * @return Matrix Matrix Aij + */ + public function arrayLeftDivideEquals() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $this->A[$i][$j] = $M->get($i, $j) / $this->A[$i][$j]; + } + } + return $M; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + + /** + * times + * + * Matrix multiplication + * @param mixed $n Matrix/Array/Scalar + * @return Matrix Product + */ + public function times() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $B = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + if ($this->n == $B->m) { + $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n); + for ($j = 0; $j < $B->n; ++$j) { + for ($k = 0; $k < $this->n; ++$k) { + $Bcolj[$k] = $B->A[$k][$j]; + } + for ($i = 0; $i < $this->m; ++$i) { + $Arowi = $this->A[$i]; + $s = 0; + for ($k = 0; $k < $this->n; ++$k) { + $s += $Arowi[$k] * $Bcolj[$k]; + } + $C->A[$i][$j] = $s; + } + } + return $C; + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(MatrixDimensionMismatch)); + } + break; + case 'array': + $B = new PHPExcel_Shared_JAMA_Matrix($args[0]); + if ($this->n == $B->m) { + $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $B->n); + for ($i = 0; $i < $C->m; ++$i) { + for ($j = 0; $j < $C->n; ++$j) { + $s = "0"; + for ($k = 0; $k < $C->n; ++$k) { + $s += $this->A[$i][$k] * $B->A[$k][$j]; + } + $C->A[$i][$j] = $s; + } + } + return $C; + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(MatrixDimensionMismatch)); + } + return $M; + break; + case 'integer': + $C = new PHPExcel_Shared_JAMA_Matrix($this->A); + for ($i = 0; $i < $C->m; ++$i) { + for ($j = 0; $j < $C->n; ++$j) { + $C->A[$i][$j] *= $args[0]; + } + } + return $C; + break; + case 'double': + $C = new PHPExcel_Shared_JAMA_Matrix($this->m, $this->n); + for ($i = 0; $i < $C->m; ++$i) { + for ($j = 0; $j < $C->n; ++$j) { + $C->A[$i][$j] = $args[0] * $this->A[$i][$j]; + } + } + return $C; + break; + case 'float': + $C = new PHPExcel_Shared_JAMA_Matrix($this->A); + for ($i = 0; $i < $C->m; ++$i) { + for ($j = 0; $j < $C->n; ++$j) { + $C->A[$i][$j] *= $args[0]; + } + } + return $C; + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * power + * + * A = A ^ B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function power() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + break; + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $validValues = true; + $value = $M->get($i, $j); + if ((is_string($this->A[$i][$j])) && (strlen($this->A[$i][$j]) > 0) && (!is_numeric($this->A[$i][$j]))) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($this->A[$i][$j]); + } + if ((is_string($value)) && (strlen($value) > 0) && (!is_numeric($value))) { + $value = trim($value, '"'); + $validValues &= PHPExcel_Shared_String::convertToNumberIfFraction($value); + } + if ($validValues) { + $this->A[$i][$j] = pow($this->A[$i][$j], $value); + } else { + $this->A[$i][$j] = PHPExcel_Calculation_Functions::NaN(); + } + } + } + return $this; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * concat + * + * A = A & B + * @param mixed $B Matrix/Array + * @return Matrix Sum + */ + public function concat() + { + if (func_num_args() > 0) { + $args = func_get_args(); + $match = implode(",", array_map('gettype', $args)); + + switch ($match) { + case 'object': + if ($args[0] instanceof PHPExcel_Shared_JAMA_Matrix) { + $M = $args[0]; + } else { + throw new PHPExcel_Calculation_Exception(self::ARGUMENT_TYPE_EXCEPTION); + } + case 'array': + $M = new PHPExcel_Shared_JAMA_Matrix($args[0]); + break; + default: + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + break; + } + $this->checkMatrixDimensions($M); + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $this->A[$i][$j] = trim($this->A[$i][$j], '"').trim($M->get($i, $j), '"'); + } + } + return $this; + } else { + throw new PHPExcel_Calculation_Exception(self::POLYMORPHIC_ARGUMENT_EXCEPTION); + } + } + + /** + * Solve A*X = B. + * + * @param Matrix $B Right hand side + * @return Matrix ... Solution if A is square, least squares solution otherwise + */ + public function solve($B) + { + if ($this->m == $this->n) { + $LU = new PHPExcel_Shared_JAMA_LUDecomposition($this); + return $LU->solve($B); + } else { + $QR = new PHPExcel_Shared_JAMA_QRDecomposition($this); + return $QR->solve($B); + } + } + + /** + * Matrix inverse or pseudoinverse. + * + * @return Matrix ... Inverse(A) if A is square, pseudoinverse otherwise. + */ + public function inverse() + { + return $this->solve($this->identity($this->m, $this->m)); + } + + /** + * det + * + * Calculate determinant + * @return float Determinant + */ + public function det() + { + $L = new PHPExcel_Shared_JAMA_LUDecomposition($this); + return $L->det(); + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/QRDecomposition.php b/assets/excel/PHPExcel/Shared/JAMA/QRDecomposition.php new file mode 100644 index 0000000..1e43c7c --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/QRDecomposition.php @@ -0,0 +1,235 @@ +<?php +/** + * @package JAMA + * + * For an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n + * orthogonal matrix Q and an n-by-n upper triangular matrix R so that + * A = Q*R. + * + * The QR decompostion always exists, even if the matrix does not have + * full rank, so the constructor will never fail. The primary use of the + * QR decomposition is in the least squares solution of nonsquare systems + * of simultaneous linear equations. This will fail if isFullRank() + * returns false. + * + * @author Paul Meagher + * @license PHP v3.0 + * @version 1.1 + */ +class PHPExcel_Shared_JAMA_QRDecomposition +{ + const MATRIX_RANK_EXCEPTION = "Can only perform operation on full-rank matrix."; + + /** + * Array for internal storage of decomposition. + * @var array + */ + private $QR = array(); + + /** + * Row dimension. + * @var integer + */ + private $m; + + /** + * Column dimension. + * @var integer + */ + private $n; + + /** + * Array for internal storage of diagonal of R. + * @var array + */ + private $Rdiag = array(); + + + /** + * QR Decomposition computed by Householder reflections. + * + * @param matrix $A Rectangular matrix + * @return Structure to access R and the Householder vectors and compute Q. + */ + public function __construct($A) + { + if ($A instanceof PHPExcel_Shared_JAMA_Matrix) { + // Initialize. + $this->QR = $A->getArrayCopy(); + $this->m = $A->getRowDimension(); + $this->n = $A->getColumnDimension(); + // Main loop. + for ($k = 0; $k < $this->n; ++$k) { + // Compute 2-norm of k-th column without under/overflow. + $nrm = 0.0; + for ($i = $k; $i < $this->m; ++$i) { + $nrm = hypo($nrm, $this->QR[$i][$k]); + } + if ($nrm != 0.0) { + // Form k-th Householder vector. + if ($this->QR[$k][$k] < 0) { + $nrm = -$nrm; + } + for ($i = $k; $i < $this->m; ++$i) { + $this->QR[$i][$k] /= $nrm; + } + $this->QR[$k][$k] += 1.0; + // Apply transformation to remaining columns. + for ($j = $k+1; $j < $this->n; ++$j) { + $s = 0.0; + for ($i = $k; $i < $this->m; ++$i) { + $s += $this->QR[$i][$k] * $this->QR[$i][$j]; + } + $s = -$s/$this->QR[$k][$k]; + for ($i = $k; $i < $this->m; ++$i) { + $this->QR[$i][$j] += $s * $this->QR[$i][$k]; + } + } + } + $this->Rdiag[$k] = -$nrm; + } + } else { + throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::ARGUMENT_TYPE_EXCEPTION); + } + } // function __construct() + + + /** + * Is the matrix full rank? + * + * @return boolean true if R, and hence A, has full rank, else false. + */ + public function isFullRank() + { + for ($j = 0; $j < $this->n; ++$j) { + if ($this->Rdiag[$j] == 0) { + return false; + } + } + return true; + } // function isFullRank() + + /** + * Return the Householder vectors + * + * @return Matrix Lower trapezoidal matrix whose columns define the reflections + */ + public function getH() + { + for ($i = 0; $i < $this->m; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + if ($i >= $j) { + $H[$i][$j] = $this->QR[$i][$j]; + } else { + $H[$i][$j] = 0.0; + } + } + } + return new PHPExcel_Shared_JAMA_Matrix($H); + } // function getH() + + /** + * Return the upper triangular factor + * + * @return Matrix upper triangular factor + */ + public function getR() + { + for ($i = 0; $i < $this->n; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + if ($i < $j) { + $R[$i][$j] = $this->QR[$i][$j]; + } elseif ($i == $j) { + $R[$i][$j] = $this->Rdiag[$i]; + } else { + $R[$i][$j] = 0.0; + } + } + } + return new PHPExcel_Shared_JAMA_Matrix($R); + } // function getR() + + /** + * Generate and return the (economy-sized) orthogonal factor + * + * @return Matrix orthogonal factor + */ + public function getQ() + { + for ($k = $this->n-1; $k >= 0; --$k) { + for ($i = 0; $i < $this->m; ++$i) { + $Q[$i][$k] = 0.0; + } + $Q[$k][$k] = 1.0; + for ($j = $k; $j < $this->n; ++$j) { + if ($this->QR[$k][$k] != 0) { + $s = 0.0; + for ($i = $k; $i < $this->m; ++$i) { + $s += $this->QR[$i][$k] * $Q[$i][$j]; + } + $s = -$s/$this->QR[$k][$k]; + for ($i = $k; $i < $this->m; ++$i) { + $Q[$i][$j] += $s * $this->QR[$i][$k]; + } + } + } + } + /* + for($i = 0; $i < count($Q); ++$i) { + for($j = 0; $j < count($Q); ++$j) { + if (! isset($Q[$i][$j]) ) { + $Q[$i][$j] = 0; + } + } + } + */ + return new PHPExcel_Shared_JAMA_Matrix($Q); + } // function getQ() + + /** + * Least squares solution of A*X = B + * + * @param Matrix $B A Matrix with as many rows as A and any number of columns. + * @return Matrix Matrix that minimizes the two norm of Q*R*X-B. + */ + public function solve($B) + { + if ($B->getRowDimension() == $this->m) { + if ($this->isFullRank()) { + // Copy right hand side + $nx = $B->getColumnDimension(); + $X = $B->getArrayCopy(); + // Compute Y = transpose(Q)*B + for ($k = 0; $k < $this->n; ++$k) { + for ($j = 0; $j < $nx; ++$j) { + $s = 0.0; + for ($i = $k; $i < $this->m; ++$i) { + $s += $this->QR[$i][$k] * $X[$i][$j]; + } + $s = -$s/$this->QR[$k][$k]; + for ($i = $k; $i < $this->m; ++$i) { + $X[$i][$j] += $s * $this->QR[$i][$k]; + } + } + } + // Solve R*X = Y; + for ($k = $this->n-1; $k >= 0; --$k) { + for ($j = 0; $j < $nx; ++$j) { + $X[$k][$j] /= $this->Rdiag[$k]; + } + for ($i = 0; $i < $k; ++$i) { + for ($j = 0; $j < $nx; ++$j) { + $X[$i][$j] -= $X[$k][$j]* $this->QR[$i][$k]; + } + } + } + $X = new PHPExcel_Shared_JAMA_Matrix($X); + return ($X->getMatrix(0, $this->n-1, 0, $nx)); + } else { + throw new PHPExcel_Calculation_Exception(self::MATRIX_RANK_EXCEPTION); + } + } else { + throw new PHPExcel_Calculation_Exception(PHPExcel_Shared_JAMA_Matrix::MATRIX_DIMENSION_EXCEPTION); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php b/assets/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php new file mode 100644 index 0000000..f57d122 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php @@ -0,0 +1,528 @@ +<?php +/** + * @package JAMA + * + * For an m-by-n matrix A with m >= n, the singular value decomposition is + * an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and + * an n-by-n orthogonal matrix V so that A = U*S*V'. + * + * The singular values, sigma[$k] = S[$k][$k], are ordered so that + * sigma[0] >= sigma[1] >= ... >= sigma[n-1]. + * + * The singular value decompostion always exists, so the constructor will + * never fail. The matrix condition number and the effective numerical + * rank can be computed from this decomposition. + * + * @author Paul Meagher + * @license PHP v3.0 + * @version 1.1 + */ +class SingularValueDecomposition +{ + /** + * Internal storage of U. + * @var array + */ + private $U = array(); + + /** + * Internal storage of V. + * @var array + */ + private $V = array(); + + /** + * Internal storage of singular values. + * @var array + */ + private $s = array(); + + /** + * Row dimension. + * @var int + */ + private $m; + + /** + * Column dimension. + * @var int + */ + private $n; + + /** + * Construct the singular value decomposition + * + * Derived from LINPACK code. + * + * @param $A Rectangular matrix + * @return Structure to access U, S and V. + */ + public function __construct($Arg) + { + // Initialize. + $A = $Arg->getArrayCopy(); + $this->m = $Arg->getRowDimension(); + $this->n = $Arg->getColumnDimension(); + $nu = min($this->m, $this->n); + $e = array(); + $work = array(); + $wantu = true; + $wantv = true; + $nct = min($this->m - 1, $this->n); + $nrt = max(0, min($this->n - 2, $this->m)); + + // Reduce A to bidiagonal form, storing the diagonal elements + // in s and the super-diagonal elements in e. + for ($k = 0; $k < max($nct, $nrt); ++$k) { + if ($k < $nct) { + // Compute the transformation for the k-th column and + // place the k-th diagonal in s[$k]. + // Compute 2-norm of k-th column without under/overflow. + $this->s[$k] = 0; + for ($i = $k; $i < $this->m; ++$i) { + $this->s[$k] = hypo($this->s[$k], $A[$i][$k]); + } + if ($this->s[$k] != 0.0) { + if ($A[$k][$k] < 0.0) { + $this->s[$k] = -$this->s[$k]; + } + for ($i = $k; $i < $this->m; ++$i) { + $A[$i][$k] /= $this->s[$k]; + } + $A[$k][$k] += 1.0; + } + $this->s[$k] = -$this->s[$k]; + } + + for ($j = $k + 1; $j < $this->n; ++$j) { + if (($k < $nct) & ($this->s[$k] != 0.0)) { + // Apply the transformation. + $t = 0; + for ($i = $k; $i < $this->m; ++$i) { + $t += $A[$i][$k] * $A[$i][$j]; + } + $t = -$t / $A[$k][$k]; + for ($i = $k; $i < $this->m; ++$i) { + $A[$i][$j] += $t * $A[$i][$k]; + } + // Place the k-th row of A into e for the + // subsequent calculation of the row transformation. + $e[$j] = $A[$k][$j]; + } + } + + if ($wantu and ($k < $nct)) { + // Place the transformation in U for subsequent back + // multiplication. + for ($i = $k; $i < $this->m; ++$i) { + $this->U[$i][$k] = $A[$i][$k]; + } + } + + if ($k < $nrt) { + // Compute the k-th row transformation and place the + // k-th super-diagonal in e[$k]. + // Compute 2-norm without under/overflow. + $e[$k] = 0; + for ($i = $k + 1; $i < $this->n; ++$i) { + $e[$k] = hypo($e[$k], $e[$i]); + } + if ($e[$k] != 0.0) { + if ($e[$k+1] < 0.0) { + $e[$k] = -$e[$k]; + } + for ($i = $k + 1; $i < $this->n; ++$i) { + $e[$i] /= $e[$k]; + } + $e[$k+1] += 1.0; + } + $e[$k] = -$e[$k]; + if (($k+1 < $this->m) and ($e[$k] != 0.0)) { + // Apply the transformation. + for ($i = $k+1; $i < $this->m; ++$i) { + $work[$i] = 0.0; + } + for ($j = $k+1; $j < $this->n; ++$j) { + for ($i = $k+1; $i < $this->m; ++$i) { + $work[$i] += $e[$j] * $A[$i][$j]; + } + } + for ($j = $k + 1; $j < $this->n; ++$j) { + $t = -$e[$j] / $e[$k+1]; + for ($i = $k + 1; $i < $this->m; ++$i) { + $A[$i][$j] += $t * $work[$i]; + } + } + } + if ($wantv) { + // Place the transformation in V for subsequent + // back multiplication. + for ($i = $k + 1; $i < $this->n; ++$i) { + $this->V[$i][$k] = $e[$i]; + } + } + } + } + + // Set up the final bidiagonal matrix or order p. + $p = min($this->n, $this->m + 1); + if ($nct < $this->n) { + $this->s[$nct] = $A[$nct][$nct]; + } + if ($this->m < $p) { + $this->s[$p-1] = 0.0; + } + if ($nrt + 1 < $p) { + $e[$nrt] = $A[$nrt][$p-1]; + } + $e[$p-1] = 0.0; + // If required, generate U. + if ($wantu) { + for ($j = $nct; $j < $nu; ++$j) { + for ($i = 0; $i < $this->m; ++$i) { + $this->U[$i][$j] = 0.0; + } + $this->U[$j][$j] = 1.0; + } + for ($k = $nct - 1; $k >= 0; --$k) { + if ($this->s[$k] != 0.0) { + for ($j = $k + 1; $j < $nu; ++$j) { + $t = 0; + for ($i = $k; $i < $this->m; ++$i) { + $t += $this->U[$i][$k] * $this->U[$i][$j]; + } + $t = -$t / $this->U[$k][$k]; + for ($i = $k; $i < $this->m; ++$i) { + $this->U[$i][$j] += $t * $this->U[$i][$k]; + } + } + for ($i = $k; $i < $this->m; ++$i) { + $this->U[$i][$k] = -$this->U[$i][$k]; + } + $this->U[$k][$k] = 1.0 + $this->U[$k][$k]; + for ($i = 0; $i < $k - 1; ++$i) { + $this->U[$i][$k] = 0.0; + } + } else { + for ($i = 0; $i < $this->m; ++$i) { + $this->U[$i][$k] = 0.0; + } + $this->U[$k][$k] = 1.0; + } + } + } + + // If required, generate V. + if ($wantv) { + for ($k = $this->n - 1; $k >= 0; --$k) { + if (($k < $nrt) and ($e[$k] != 0.0)) { + for ($j = $k + 1; $j < $nu; ++$j) { + $t = 0; + for ($i = $k + 1; $i < $this->n; ++$i) { + $t += $this->V[$i][$k]* $this->V[$i][$j]; + } + $t = -$t / $this->V[$k+1][$k]; + for ($i = $k + 1; $i < $this->n; ++$i) { + $this->V[$i][$j] += $t * $this->V[$i][$k]; + } + } + } + for ($i = 0; $i < $this->n; ++$i) { + $this->V[$i][$k] = 0.0; + } + $this->V[$k][$k] = 1.0; + } + } + + // Main iteration loop for the singular values. + $pp = $p - 1; + $iter = 0; + $eps = pow(2.0, -52.0); + + while ($p > 0) { + // Here is where a test for too many iterations would go. + // This section of the program inspects for negligible + // elements in the s and e arrays. On completion the + // variables kase and k are set as follows: + // kase = 1 if s(p) and e[k-1] are negligible and k<p + // kase = 2 if s(k) is negligible and k<p + // kase = 3 if e[k-1] is negligible, k<p, and + // s(k), ..., s(p) are not negligible (qr step). + // kase = 4 if e(p-1) is negligible (convergence). + for ($k = $p - 2; $k >= -1; --$k) { + if ($k == -1) { + break; + } + if (abs($e[$k]) <= $eps * (abs($this->s[$k]) + abs($this->s[$k+1]))) { + $e[$k] = 0.0; + break; + } + } + if ($k == $p - 2) { + $kase = 4; + } else { + for ($ks = $p - 1; $ks >= $k; --$ks) { + if ($ks == $k) { + break; + } + $t = ($ks != $p ? abs($e[$ks]) : 0.) + ($ks != $k + 1 ? abs($e[$ks-1]) : 0.); + if (abs($this->s[$ks]) <= $eps * $t) { + $this->s[$ks] = 0.0; + break; + } + } + if ($ks == $k) { + $kase = 3; + } elseif ($ks == $p-1) { + $kase = 1; + } else { + $kase = 2; + $k = $ks; + } + } + ++$k; + + // Perform the task indicated by kase. + switch ($kase) { + // Deflate negligible s(p). + case 1: + $f = $e[$p-2]; + $e[$p-2] = 0.0; + for ($j = $p - 2; $j >= $k; --$j) { + $t = hypo($this->s[$j], $f); + $cs = $this->s[$j] / $t; + $sn = $f / $t; + $this->s[$j] = $t; + if ($j != $k) { + $f = -$sn * $e[$j-1]; + $e[$j-1] = $cs * $e[$j-1]; + } + if ($wantv) { + for ($i = 0; $i < $this->n; ++$i) { + $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$p-1]; + $this->V[$i][$p-1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$p-1]; + $this->V[$i][$j] = $t; + } + } + } + break; + // Split at negligible s(k). + case 2: + $f = $e[$k-1]; + $e[$k-1] = 0.0; + for ($j = $k; $j < $p; ++$j) { + $t = hypo($this->s[$j], $f); + $cs = $this->s[$j] / $t; + $sn = $f / $t; + $this->s[$j] = $t; + $f = -$sn * $e[$j]; + $e[$j] = $cs * $e[$j]; + if ($wantu) { + for ($i = 0; $i < $this->m; ++$i) { + $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$k-1]; + $this->U[$i][$k-1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$k-1]; + $this->U[$i][$j] = $t; + } + } + } + break; + // Perform one qr step. + case 3: + // Calculate the shift. + $scale = max(max(max(max(abs($this->s[$p-1]), abs($this->s[$p-2])), abs($e[$p-2])), abs($this->s[$k])), abs($e[$k])); + $sp = $this->s[$p-1] / $scale; + $spm1 = $this->s[$p-2] / $scale; + $epm1 = $e[$p-2] / $scale; + $sk = $this->s[$k] / $scale; + $ek = $e[$k] / $scale; + $b = (($spm1 + $sp) * ($spm1 - $sp) + $epm1 * $epm1) / 2.0; + $c = ($sp * $epm1) * ($sp * $epm1); + $shift = 0.0; + if (($b != 0.0) || ($c != 0.0)) { + $shift = sqrt($b * $b + $c); + if ($b < 0.0) { + $shift = -$shift; + } + $shift = $c / ($b + $shift); + } + $f = ($sk + $sp) * ($sk - $sp) + $shift; + $g = $sk * $ek; + // Chase zeros. + for ($j = $k; $j < $p-1; ++$j) { + $t = hypo($f, $g); + $cs = $f/$t; + $sn = $g/$t; + if ($j != $k) { + $e[$j-1] = $t; + } + $f = $cs * $this->s[$j] + $sn * $e[$j]; + $e[$j] = $cs * $e[$j] - $sn * $this->s[$j]; + $g = $sn * $this->s[$j+1]; + $this->s[$j+1] = $cs * $this->s[$j+1]; + if ($wantv) { + for ($i = 0; $i < $this->n; ++$i) { + $t = $cs * $this->V[$i][$j] + $sn * $this->V[$i][$j+1]; + $this->V[$i][$j+1] = -$sn * $this->V[$i][$j] + $cs * $this->V[$i][$j+1]; + $this->V[$i][$j] = $t; + } + } + $t = hypo($f, $g); + $cs = $f/$t; + $sn = $g/$t; + $this->s[$j] = $t; + $f = $cs * $e[$j] + $sn * $this->s[$j+1]; + $this->s[$j+1] = -$sn * $e[$j] + $cs * $this->s[$j+1]; + $g = $sn * $e[$j+1]; + $e[$j+1] = $cs * $e[$j+1]; + if ($wantu && ($j < $this->m - 1)) { + for ($i = 0; $i < $this->m; ++$i) { + $t = $cs * $this->U[$i][$j] + $sn * $this->U[$i][$j+1]; + $this->U[$i][$j+1] = -$sn * $this->U[$i][$j] + $cs * $this->U[$i][$j+1]; + $this->U[$i][$j] = $t; + } + } + } + $e[$p-2] = $f; + $iter = $iter + 1; + break; + // Convergence. + case 4: + // Make the singular values positive. + if ($this->s[$k] <= 0.0) { + $this->s[$k] = ($this->s[$k] < 0.0 ? -$this->s[$k] : 0.0); + if ($wantv) { + for ($i = 0; $i <= $pp; ++$i) { + $this->V[$i][$k] = -$this->V[$i][$k]; + } + } + } + // Order the singular values. + while ($k < $pp) { + if ($this->s[$k] >= $this->s[$k+1]) { + break; + } + $t = $this->s[$k]; + $this->s[$k] = $this->s[$k+1]; + $this->s[$k+1] = $t; + if ($wantv and ($k < $this->n - 1)) { + for ($i = 0; $i < $this->n; ++$i) { + $t = $this->V[$i][$k+1]; + $this->V[$i][$k+1] = $this->V[$i][$k]; + $this->V[$i][$k] = $t; + } + } + if ($wantu and ($k < $this->m-1)) { + for ($i = 0; $i < $this->m; ++$i) { + $t = $this->U[$i][$k+1]; + $this->U[$i][$k+1] = $this->U[$i][$k]; + $this->U[$i][$k] = $t; + } + } + ++$k; + } + $iter = 0; + --$p; + break; + } // end switch + } // end while + + } // end constructor + + + /** + * Return the left singular vectors + * + * @access public + * @return U + */ + public function getU() + { + return new Matrix($this->U, $this->m, min($this->m + 1, $this->n)); + } + + + /** + * Return the right singular vectors + * + * @access public + * @return V + */ + public function getV() + { + return new Matrix($this->V); + } + + + /** + * Return the one-dimensional array of singular values + * + * @access public + * @return diagonal of S. + */ + public function getSingularValues() + { + return $this->s; + } + + + /** + * Return the diagonal matrix of singular values + * + * @access public + * @return S + */ + public function getS() + { + for ($i = 0; $i < $this->n; ++$i) { + for ($j = 0; $j < $this->n; ++$j) { + $S[$i][$j] = 0.0; + } + $S[$i][$i] = $this->s[$i]; + } + return new Matrix($S); + } + + + /** + * Two norm + * + * @access public + * @return max(S) + */ + public function norm2() + { + return $this->s[0]; + } + + + /** + * Two norm condition number + * + * @access public + * @return max(S)/min(S) + */ + public function cond() + { + return $this->s[0] / $this->s[min($this->m, $this->n) - 1]; + } + + + /** + * Effective numerical matrix rank + * + * @access public + * @return Number of nonnegligible singular values. + */ + public function rank() + { + $eps = pow(2.0, -52.0); + $tol = max($this->m, $this->n) * $this->s[0] * $eps; + $r = 0; + for ($i = 0; $i < count($this->s); ++$i) { + if ($this->s[$i] > $tol) { + ++$r; + } + } + return $r; + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/utils/Error.php b/assets/excel/PHPExcel/Shared/JAMA/utils/Error.php new file mode 100644 index 0000000..71b8c99 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/utils/Error.php @@ -0,0 +1,83 @@ +<?php +/** + * @package JAMA + * + * Error handling + * @author Michael Bommarito + * @version 01292005 + */ + +//Language constant +define('JAMALANG', 'EN'); + + +//All errors may be defined by the following format: +//define('ExceptionName', N); +//$error['lang'][ExceptionName] = 'Error message'; +$error = array(); + +/* +I've used Babelfish and a little poor knowledge of Romance/Germanic languages for the translations here. +Feel free to correct anything that looks amiss to you. +*/ + +define('POLYMORPHIC_ARGUMENT_EXCEPTION', -1); +$error['EN'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Invalid argument pattern for polymorphic function."; +$error['FR'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Modèle inadmissible d'argument pour la fonction polymorphe.". +$error['DE'][POLYMORPHIC_ARGUMENT_EXCEPTION] = "Unzulässiges Argumentmuster für polymorphe Funktion."; + +define('ARGUMENT_TYPE_EXCEPTION', -2); +$error['EN'][ARGUMENT_TYPE_EXCEPTION] = "Invalid argument type."; +$error['FR'][ARGUMENT_TYPE_EXCEPTION] = "Type inadmissible d'argument."; +$error['DE'][ARGUMENT_TYPE_EXCEPTION] = "Unzulässige Argumentart."; + +define('ARGUMENT_BOUNDS_EXCEPTION', -3); +$error['EN'][ARGUMENT_BOUNDS_EXCEPTION] = "Invalid argument range."; +$error['FR'][ARGUMENT_BOUNDS_EXCEPTION] = "Gamme inadmissible d'argument."; +$error['DE'][ARGUMENT_BOUNDS_EXCEPTION] = "Unzulässige Argumentstrecke."; + +define('MATRIX_DIMENSION_EXCEPTION', -4); +$error['EN'][MATRIX_DIMENSION_EXCEPTION] = "Matrix dimensions are not equal."; +$error['FR'][MATRIX_DIMENSION_EXCEPTION] = "Les dimensions de Matrix ne sont pas égales."; +$error['DE'][MATRIX_DIMENSION_EXCEPTION] = "Matrixmaße sind nicht gleich."; + +define('PRECISION_LOSS_EXCEPTION', -5); +$error['EN'][PRECISION_LOSS_EXCEPTION] = "Significant precision loss detected."; +$error['FR'][PRECISION_LOSS_EXCEPTION] = "Perte significative de précision détectée."; +$error['DE'][PRECISION_LOSS_EXCEPTION] = "Bedeutender Präzision Verlust ermittelte."; + +define('MATRIX_SPD_EXCEPTION', -6); +$error['EN'][MATRIX_SPD_EXCEPTION] = "Can only perform operation on symmetric positive definite matrix."; +$error['FR'][MATRIX_SPD_EXCEPTION] = "Perte significative de précision détectée."; +$error['DE'][MATRIX_SPD_EXCEPTION] = "Bedeutender Präzision Verlust ermittelte."; + +define('MATRIX_SINGULAR_EXCEPTION', -7); +$error['EN'][MATRIX_SINGULAR_EXCEPTION] = "Can only perform operation on singular matrix."; + +define('MATRIX_RANK_EXCEPTION', -8); +$error['EN'][MATRIX_RANK_EXCEPTION] = "Can only perform operation on full-rank matrix."; + +define('ARRAY_LENGTH_EXCEPTION', -9); +$error['EN'][ARRAY_LENGTH_EXCEPTION] = "Array length must be a multiple of m."; + +define('ROW_LENGTH_EXCEPTION', -10); +$error['EN'][ROW_LENGTH_EXCEPTION] = "All rows must have the same length."; + +/** + * Custom error handler + * @param int $num Error number + */ +function JAMAError($errorNumber = null) +{ + global $error; + + if (isset($errorNumber)) { + if (isset($error[JAMALANG][$errorNumber])) { + return $error[JAMALANG][$errorNumber]; + } else { + return $error['EN'][$errorNumber]; + } + } else { + return ("Invalid argument to JAMAError()"); + } +} diff --git a/assets/excel/PHPExcel/Shared/JAMA/utils/Maths.php b/assets/excel/PHPExcel/Shared/JAMA/utils/Maths.php new file mode 100644 index 0000000..386c1e6 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/JAMA/utils/Maths.php @@ -0,0 +1,44 @@ +<?php +/** + * @package JAMA + * + * Pythagorean Theorem: + * + * a = 3 + * b = 4 + * r = sqrt(square(a) + square(b)) + * r = 5 + * + * r = sqrt(a^2 + b^2) without under/overflow. + */ +function hypo($a, $b) +{ + if (abs($a) > abs($b)) { + $r = $b / $a; + $r = abs($a) * sqrt(1 + $r * $r); + } elseif ($b != 0) { + $r = $a / $b; + $r = abs($b) * sqrt(1 + $r * $r); + } else { + $r = 0.0; + } + return $r; +} // function hypo() + + +/** + * Mike Bommarito's version. + * Compute n-dimensional hyotheneuse. + * +function hypot() { + $s = 0; + foreach (func_get_args() as $d) { + if (is_numeric($d)) { + $s += pow($d, 2); + } else { + throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); + } + } + return sqrt($s); +} +*/ diff --git a/assets/excel/PHPExcel/Shared/OLE.php b/assets/excel/PHPExcel/Shared/OLE.php new file mode 100644 index 0000000..42a3c52 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLE.php @@ -0,0 +1,526 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP Version 4 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1997-2002 The PHP Group | +// +----------------------------------------------------------------------+ +// | This source file is subject to version 2.02 of the PHP license, | +// | that is bundled with this package in the file LICENSE, and is | +// | available at through the world-wide-web at | +// | http://www.php.net/license/2_02.txt. | +// | If you did not receive a copy of the PHP license and are unable to | +// | obtain it through the world-wide-web, please send a note to | +// | license@php.net so we can mail you a copy immediately. | +// +----------------------------------------------------------------------+ +// | Author: Xavier Noguer <xnoguer@php.net> | +// | Based on OLE::Storage_Lite by Kawai, Takanori | +// +----------------------------------------------------------------------+ +// +// $Id: OLE.php,v 1.13 2007/03/07 14:38:25 schmidt Exp $ + + +/** +* Array for storing OLE instances that are accessed from +* OLE_ChainedBlockStream::stream_open(). +* @var array +*/ +$GLOBALS['_OLE_INSTANCES'] = array(); + +/** +* OLE package base class. +* +* @author Xavier Noguer <xnoguer@php.net> +* @author Christian Schmidt <schmidt@php.net> +* @category PHPExcel +* @package PHPExcel_Shared_OLE +*/ +class PHPExcel_Shared_OLE +{ + const OLE_PPS_TYPE_ROOT = 5; + const OLE_PPS_TYPE_DIR = 1; + const OLE_PPS_TYPE_FILE = 2; + const OLE_DATA_SIZE_SMALL = 0x1000; + const OLE_LONG_INT_SIZE = 4; + const OLE_PPS_SIZE = 0x80; + + /** + * The file handle for reading an OLE container + * @var resource + */ + public $_file_handle; + + /** + * Array of PPS's found on the OLE container + * @var array + */ + public $_list = array(); + + /** + * Root directory of OLE container + * @var OLE_PPS_Root + */ + public $root; + + /** + * Big Block Allocation Table + * @var array (blockId => nextBlockId) + */ + public $bbat; + + /** + * Short Block Allocation Table + * @var array (blockId => nextBlockId) + */ + public $sbat; + + /** + * Size of big blocks. This is usually 512. + * @var int number of octets per block. + */ + public $bigBlockSize; + + /** + * Size of small blocks. This is usually 64. + * @var int number of octets per block + */ + public $smallBlockSize; + + /** + * Reads an OLE container from the contents of the file given. + * + * @acces public + * @param string $file + * @return mixed true on success, PEAR_Error on failure + */ + public function read($file) + { + $fh = fopen($file, "r"); + if (!$fh) { + throw new PHPExcel_Reader_Exception("Can't open file $file"); + } + $this->_file_handle = $fh; + + $signature = fread($fh, 8); + if ("\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" != $signature) { + throw new PHPExcel_Reader_Exception("File doesn't seem to be an OLE container."); + } + fseek($fh, 28); + if (fread($fh, 2) != "\xFE\xFF") { + // This shouldn't be a problem in practice + throw new PHPExcel_Reader_Exception("Only Little-Endian encoding is supported."); + } + // Size of blocks and short blocks in bytes + $this->bigBlockSize = pow(2, self::_readInt2($fh)); + $this->smallBlockSize = pow(2, self::_readInt2($fh)); + + // Skip UID, revision number and version number + fseek($fh, 44); + // Number of blocks in Big Block Allocation Table + $bbatBlockCount = self::_readInt4($fh); + + // Root chain 1st block + $directoryFirstBlockId = self::_readInt4($fh); + + // Skip unused bytes + fseek($fh, 56); + // Streams shorter than this are stored using small blocks + $this->bigBlockThreshold = self::_readInt4($fh); + // Block id of first sector in Short Block Allocation Table + $sbatFirstBlockId = self::_readInt4($fh); + // Number of blocks in Short Block Allocation Table + $sbbatBlockCount = self::_readInt4($fh); + // Block id of first sector in Master Block Allocation Table + $mbatFirstBlockId = self::_readInt4($fh); + // Number of blocks in Master Block Allocation Table + $mbbatBlockCount = self::_readInt4($fh); + $this->bbat = array(); + + // Remaining 4 * 109 bytes of current block is beginning of Master + // Block Allocation Table + $mbatBlocks = array(); + for ($i = 0; $i < 109; ++$i) { + $mbatBlocks[] = self::_readInt4($fh); + } + + // Read rest of Master Block Allocation Table (if any is left) + $pos = $this->_getBlockOffset($mbatFirstBlockId); + for ($i = 0; $i < $mbbatBlockCount; ++$i) { + fseek($fh, $pos); + for ($j = 0; $j < $this->bigBlockSize / 4 - 1; ++$j) { + $mbatBlocks[] = self::_readInt4($fh); + } + // Last block id in each block points to next block + $pos = $this->_getBlockOffset(self::_readInt4($fh)); + } + + // Read Big Block Allocation Table according to chain specified by + // $mbatBlocks + for ($i = 0; $i < $bbatBlockCount; ++$i) { + $pos = $this->_getBlockOffset($mbatBlocks[$i]); + fseek($fh, $pos); + for ($j = 0; $j < $this->bigBlockSize / 4; ++$j) { + $this->bbat[] = self::_readInt4($fh); + } + } + + // Read short block allocation table (SBAT) + $this->sbat = array(); + $shortBlockCount = $sbbatBlockCount * $this->bigBlockSize / 4; + $sbatFh = $this->getStream($sbatFirstBlockId); + for ($blockId = 0; $blockId < $shortBlockCount; ++$blockId) { + $this->sbat[$blockId] = self::_readInt4($sbatFh); + } + fclose($sbatFh); + + $this->_readPpsWks($directoryFirstBlockId); + + return true; + } + + /** + * @param int block id + * @param int byte offset from beginning of file + * @access public + */ + public function _getBlockOffset($blockId) + { + return 512 + $blockId * $this->bigBlockSize; + } + + /** + * Returns a stream for use with fread() etc. External callers should + * use PHPExcel_Shared_OLE_PPS_File::getStream(). + * @param int|PPS block id or PPS + * @return resource read-only stream + */ + public function getStream($blockIdOrPps) + { + static $isRegistered = false; + if (!$isRegistered) { + stream_wrapper_register('ole-chainedblockstream', 'PHPExcel_Shared_OLE_ChainedBlockStream'); + $isRegistered = true; + } + + // Store current instance in global array, so that it can be accessed + // in OLE_ChainedBlockStream::stream_open(). + // Object is removed from self::$instances in OLE_Stream::close(). + $GLOBALS['_OLE_INSTANCES'][] = $this; + $instanceId = end(array_keys($GLOBALS['_OLE_INSTANCES'])); + + $path = 'ole-chainedblockstream://oleInstanceId=' . $instanceId; + if ($blockIdOrPps instanceof PHPExcel_Shared_OLE_PPS) { + $path .= '&blockId=' . $blockIdOrPps->_StartBlock; + $path .= '&size=' . $blockIdOrPps->Size; + } else { + $path .= '&blockId=' . $blockIdOrPps; + } + return fopen($path, 'r'); + } + + /** + * Reads a signed char. + * @param resource file handle + * @return int + * @access public + */ + private static function _readInt1($fh) + { + list(, $tmp) = unpack("c", fread($fh, 1)); + return $tmp; + } + + /** + * Reads an unsigned short (2 octets). + * @param resource file handle + * @return int + * @access public + */ + private static function _readInt2($fh) + { + list(, $tmp) = unpack("v", fread($fh, 2)); + return $tmp; + } + + /** + * Reads an unsigned long (4 octets). + * @param resource file handle + * @return int + * @access public + */ + private static function _readInt4($fh) + { + list(, $tmp) = unpack("V", fread($fh, 4)); + return $tmp; + } + + /** + * Gets information about all PPS's on the OLE container from the PPS WK's + * creates an OLE_PPS object for each one. + * + * @access public + * @param integer the block id of the first block + * @return mixed true on success, PEAR_Error on failure + */ + public function _readPpsWks($blockId) + { + $fh = $this->getStream($blockId); + for ($pos = 0;; $pos += 128) { + fseek($fh, $pos, SEEK_SET); + $nameUtf16 = fread($fh, 64); + $nameLength = self::_readInt2($fh); + $nameUtf16 = substr($nameUtf16, 0, $nameLength - 2); + // Simple conversion from UTF-16LE to ISO-8859-1 + $name = str_replace("\x00", "", $nameUtf16); + $type = self::_readInt1($fh); + switch ($type) { + case self::OLE_PPS_TYPE_ROOT: + $pps = new PHPExcel_Shared_OLE_PPS_Root(null, null, array()); + $this->root = $pps; + break; + case self::OLE_PPS_TYPE_DIR: + $pps = new PHPExcel_Shared_OLE_PPS(null, null, null, null, null, null, null, null, null, array()); + break; + case self::OLE_PPS_TYPE_FILE: + $pps = new PHPExcel_Shared_OLE_PPS_File($name); + break; + default: + continue; + } + fseek($fh, 1, SEEK_CUR); + $pps->Type = $type; + $pps->Name = $name; + $pps->PrevPps = self::_readInt4($fh); + $pps->NextPps = self::_readInt4($fh); + $pps->DirPps = self::_readInt4($fh); + fseek($fh, 20, SEEK_CUR); + $pps->Time1st = self::OLE2LocalDate(fread($fh, 8)); + $pps->Time2nd = self::OLE2LocalDate(fread($fh, 8)); + $pps->_StartBlock = self::_readInt4($fh); + $pps->Size = self::_readInt4($fh); + $pps->No = count($this->_list); + $this->_list[] = $pps; + + // check if the PPS tree (starting from root) is complete + if (isset($this->root) && $this->_ppsTreeComplete($this->root->No)) { + break; + } + } + fclose($fh); + + // Initialize $pps->children on directories + foreach ($this->_list as $pps) { + if ($pps->Type == self::OLE_PPS_TYPE_DIR || $pps->Type == self::OLE_PPS_TYPE_ROOT) { + $nos = array($pps->DirPps); + $pps->children = array(); + while ($nos) { + $no = array_pop($nos); + if ($no != -1) { + $childPps = $this->_list[$no]; + $nos[] = $childPps->PrevPps; + $nos[] = $childPps->NextPps; + $pps->children[] = $childPps; + } + } + } + } + + return true; + } + + /** + * It checks whether the PPS tree is complete (all PPS's read) + * starting with the given PPS (not necessarily root) + * + * @access public + * @param integer $index The index of the PPS from which we are checking + * @return boolean Whether the PPS tree for the given PPS is complete + */ + public function _ppsTreeComplete($index) + { + return isset($this->_list[$index]) && + ($pps = $this->_list[$index]) && + ($pps->PrevPps == -1 || + $this->_ppsTreeComplete($pps->PrevPps)) && + ($pps->NextPps == -1 || + $this->_ppsTreeComplete($pps->NextPps)) && + ($pps->DirPps == -1 || + $this->_ppsTreeComplete($pps->DirPps)); + } + + /** + * Checks whether a PPS is a File PPS or not. + * If there is no PPS for the index given, it will return false. + * + * @access public + * @param integer $index The index for the PPS + * @return bool true if it's a File PPS, false otherwise + */ + public function isFile($index) + { + if (isset($this->_list[$index])) { + return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_FILE); + } + return false; + } + + /** + * Checks whether a PPS is a Root PPS or not. + * If there is no PPS for the index given, it will return false. + * + * @access public + * @param integer $index The index for the PPS. + * @return bool true if it's a Root PPS, false otherwise + */ + public function isRoot($index) + { + if (isset($this->_list[$index])) { + return ($this->_list[$index]->Type == self::OLE_PPS_TYPE_ROOT); + } + return false; + } + + /** + * Gives the total number of PPS's found in the OLE container. + * + * @access public + * @return integer The total number of PPS's found in the OLE container + */ + public function ppsTotal() + { + return count($this->_list); + } + + /** + * Gets data from a PPS + * If there is no PPS for the index given, it will return an empty string. + * + * @access public + * @param integer $index The index for the PPS + * @param integer $position The position from which to start reading + * (relative to the PPS) + * @param integer $length The amount of bytes to read (at most) + * @return string The binary string containing the data requested + * @see OLE_PPS_File::getStream() + */ + public function getData($index, $position, $length) + { + // if position is not valid return empty string + if (!isset($this->_list[$index]) || ($position >= $this->_list[$index]->Size) || ($position < 0)) { + return ''; + } + $fh = $this->getStream($this->_list[$index]); + $data = stream_get_contents($fh, $length, $position); + fclose($fh); + return $data; + } + + /** + * Gets the data length from a PPS + * If there is no PPS for the index given, it will return 0. + * + * @access public + * @param integer $index The index for the PPS + * @return integer The amount of bytes in data the PPS has + */ + public function getDataLength($index) + { + if (isset($this->_list[$index])) { + return $this->_list[$index]->Size; + } + return 0; + } + + /** + * Utility function to transform ASCII text to Unicode + * + * @access public + * @static + * @param string $ascii The ASCII string to transform + * @return string The string in Unicode + */ + public static function Asc2Ucs($ascii) + { + $rawname = ''; + for ($i = 0; $i < strlen($ascii); ++$i) { + $rawname .= $ascii{$i} . "\x00"; + } + return $rawname; + } + + /** + * Utility function + * Returns a string for the OLE container with the date given + * + * @access public + * @static + * @param integer $date A timestamp + * @return string The string for the OLE container + */ + public static function LocalDate2OLE($date = null) + { + if (!isset($date)) { + return "\x00\x00\x00\x00\x00\x00\x00\x00"; + } + + // factor used for separating numbers into 4 bytes parts + $factor = pow(2, 32); + + // days from 1-1-1601 until the beggining of UNIX era + $days = 134774; + // calculate seconds + $big_date = $days*24*3600 + gmmktime(date("H", $date), date("i", $date), date("s", $date), date("m", $date), date("d", $date), date("Y", $date)); + // multiply just to make MS happy + $big_date *= 10000000; + + $high_part = floor($big_date / $factor); + // lower 4 bytes + $low_part = floor((($big_date / $factor) - $high_part) * $factor); + + // Make HEX string + $res = ''; + + for ($i = 0; $i < 4; ++$i) { + $hex = $low_part % 0x100; + $res .= pack('c', $hex); + $low_part /= 0x100; + } + for ($i = 0; $i < 4; ++$i) { + $hex = $high_part % 0x100; + $res .= pack('c', $hex); + $high_part /= 0x100; + } + return $res; + } + + /** + * Returns a timestamp from an OLE container's date + * + * @access public + * @static + * @param integer $string A binary string with the encoded date + * @return string The timestamp corresponding to the string + */ + public static function OLE2LocalDate($string) + { + if (strlen($string) != 8) { + return new PEAR_Error("Expecting 8 byte string"); + } + + // factor used for separating numbers into 4 bytes parts + $factor = pow(2, 32); + list(, $high_part) = unpack('V', substr($string, 4, 4)); + list(, $low_part) = unpack('V', substr($string, 0, 4)); + + $big_date = ($high_part * $factor) + $low_part; + // translate to seconds + $big_date /= 10000000; + + // days from 1-1-1601 until the beggining of UNIX era + $days = 134774; + + // translate to seconds from beggining of UNIX era + $big_date -= $days * 24 * 3600; + return floor($big_date); + } +} diff --git a/assets/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php b/assets/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php new file mode 100644 index 0000000..84d2cc5 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLE/ChainedBlockStream.php @@ -0,0 +1,206 @@ +<?php + +/** + * PHPExcel_Shared_OLE_ChainedBlockStream + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_OLE + * @copyright Copyright (c) 2006 - 2007 Christian Schmidt + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_OLE_ChainedBlockStream +{ + /** + * The OLE container of the file that is being read. + * @var OLE + */ + public $ole; + + /** + * Parameters specified by fopen(). + * @var array + */ + public $params; + + /** + * The binary data of the file. + * @var string + */ + public $data; + + /** + * The file pointer. + * @var int byte offset + */ + public $pos; + + /** + * Implements support for fopen(). + * For creating streams using this wrapper, use OLE_PPS_File::getStream(). + * + * @param string $path resource name including scheme, e.g. + * ole-chainedblockstream://oleInstanceId=1 + * @param string $mode only "r" is supported + * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH + * @param string &$openedPath absolute path of the opened stream (out parameter) + * @return bool true on success + */ + public function stream_open($path, $mode, $options, &$openedPath) + { + if ($mode != 'r') { + if ($options & STREAM_REPORT_ERRORS) { + trigger_error('Only reading is supported', E_USER_WARNING); + } + return false; + } + + // 25 is length of "ole-chainedblockstream://" + parse_str(substr($path, 25), $this->params); + if (!isset($this->params['oleInstanceId'], $this->params['blockId'], $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']])) { + if ($options & STREAM_REPORT_ERRORS) { + trigger_error('OLE stream not found', E_USER_WARNING); + } + return false; + } + $this->ole = $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']]; + + $blockId = $this->params['blockId']; + $this->data = ''; + if (isset($this->params['size']) && $this->params['size'] < $this->ole->bigBlockThreshold && $blockId != $this->ole->root->_StartBlock) { + // Block id refers to small blocks + $rootPos = $this->ole->_getBlockOffset($this->ole->root->_StartBlock); + while ($blockId != -2) { + $pos = $rootPos + $blockId * $this->ole->bigBlockSize; + $blockId = $this->ole->sbat[$blockId]; + fseek($this->ole->_file_handle, $pos); + $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize); + } + } else { + // Block id refers to big blocks + while ($blockId != -2) { + $pos = $this->ole->_getBlockOffset($blockId); + fseek($this->ole->_file_handle, $pos); + $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize); + $blockId = $this->ole->bbat[$blockId]; + } + } + if (isset($this->params['size'])) { + $this->data = substr($this->data, 0, $this->params['size']); + } + + if ($options & STREAM_USE_PATH) { + $openedPath = $path; + } + + return true; + } + + /** + * Implements support for fclose(). + * + */ + public function stream_close() + { + $this->ole = null; + unset($GLOBALS['_OLE_INSTANCES']); + } + + /** + * Implements support for fread(), fgets() etc. + * + * @param int $count maximum number of bytes to read + * @return string + */ + public function stream_read($count) + { + if ($this->stream_eof()) { + return false; + } + $s = substr($this->data, $this->pos, $count); + $this->pos += $count; + return $s; + } + + /** + * Implements support for feof(). + * + * @return bool TRUE if the file pointer is at EOF; otherwise FALSE + */ + public function stream_eof() + { + return $this->pos >= strlen($this->data); + } + + /** + * Returns the position of the file pointer, i.e. its offset into the file + * stream. Implements support for ftell(). + * + * @return int + */ + public function stream_tell() + { + return $this->pos; + } + + /** + * Implements support for fseek(). + * + * @param int $offset byte offset + * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END + * @return bool + */ + public function stream_seek($offset, $whence) + { + if ($whence == SEEK_SET && $offset >= 0) { + $this->pos = $offset; + } elseif ($whence == SEEK_CUR && -$offset <= $this->pos) { + $this->pos += $offset; + } elseif ($whence == SEEK_END && -$offset <= sizeof($this->data)) { + $this->pos = strlen($this->data) + $offset; + } else { + return false; + } + return true; + } + + /** + * Implements support for fstat(). Currently the only supported field is + * "size". + * @return array + */ + public function stream_stat() + { + return array( + 'size' => strlen($this->data), + ); + } + + // Methods used by stream_wrapper_register() that are not implemented: + // bool stream_flush ( void ) + // int stream_write ( string data ) + // bool rename ( string path_from, string path_to ) + // bool mkdir ( string path, int mode, int options ) + // bool rmdir ( string path, int options ) + // bool dir_opendir ( string path, int options ) + // array url_stat ( string path, int flags ) + // string dir_readdir ( void ) + // bool dir_rewinddir ( void ) + // bool dir_closedir ( void ) +} diff --git a/assets/excel/PHPExcel/Shared/OLE/PPS.php b/assets/excel/PHPExcel/Shared/OLE/PPS.php new file mode 100644 index 0000000..608a892 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLE/PPS.php @@ -0,0 +1,230 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP Version 4 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1997-2002 The PHP Group | +// +----------------------------------------------------------------------+ +// | This source file is subject to version 2.02 of the PHP license, | +// | that is bundled with this package in the file LICENSE, and is | +// | available at through the world-wide-web at | +// | http://www.php.net/license/2_02.txt. | +// | If you did not receive a copy of the PHP license and are unable to | +// | obtain it through the world-wide-web, please send a note to | +// | license@php.net so we can mail you a copy immediately. | +// +----------------------------------------------------------------------+ +// | Author: Xavier Noguer <xnoguer@php.net> | +// | Based on OLE::Storage_Lite by Kawai, Takanori | +// +----------------------------------------------------------------------+ +// +// $Id: PPS.php,v 1.7 2007/02/13 21:00:42 schmidt Exp $ + + +/** +* Class for creating PPS's for OLE containers +* +* @author Xavier Noguer <xnoguer@php.net> +* @category PHPExcel +* @package PHPExcel_Shared_OLE +*/ +class PHPExcel_Shared_OLE_PPS +{ + /** + * The PPS index + * @var integer + */ + public $No; + + /** + * The PPS name (in Unicode) + * @var string + */ + public $Name; + + /** + * The PPS type. Dir, Root or File + * @var integer + */ + public $Type; + + /** + * The index of the previous PPS + * @var integer + */ + public $PrevPps; + + /** + * The index of the next PPS + * @var integer + */ + public $NextPps; + + /** + * The index of it's first child if this is a Dir or Root PPS + * @var integer + */ + public $DirPps; + + /** + * A timestamp + * @var integer + */ + public $Time1st; + + /** + * A timestamp + * @var integer + */ + public $Time2nd; + + /** + * Starting block (small or big) for this PPS's data inside the container + * @var integer + */ + public $_StartBlock; + + /** + * The size of the PPS's data (in bytes) + * @var integer + */ + public $Size; + + /** + * The PPS's data (only used if it's not using a temporary file) + * @var string + */ + public $_data; + + /** + * Array of child PPS's (only used by Root and Dir PPS's) + * @var array + */ + public $children = array(); + + /** + * Pointer to OLE container + * @var OLE + */ + public $ole; + + /** + * The constructor + * + * @access public + * @param integer $No The PPS index + * @param string $name The PPS name + * @param integer $type The PPS type. Dir, Root or File + * @param integer $prev The index of the previous PPS + * @param integer $next The index of the next PPS + * @param integer $dir The index of it's first child if this is a Dir or Root PPS + * @param integer $time_1st A timestamp + * @param integer $time_2nd A timestamp + * @param string $data The (usually binary) source data of the PPS + * @param array $children Array containing children PPS for this PPS + */ + public function __construct($No, $name, $type, $prev, $next, $dir, $time_1st, $time_2nd, $data, $children) + { + $this->No = $No; + $this->Name = $name; + $this->Type = $type; + $this->PrevPps = $prev; + $this->NextPps = $next; + $this->DirPps = $dir; + $this->Time1st = $time_1st; + $this->Time2nd = $time_2nd; + $this->_data = $data; + $this->children = $children; + if ($data != '') { + $this->Size = strlen($data); + } else { + $this->Size = 0; + } + } + + /** + * Returns the amount of data saved for this PPS + * + * @access public + * @return integer The amount of data (in bytes) + */ + public function _DataLen() + { + if (!isset($this->_data)) { + return 0; + } + //if (isset($this->_PPS_FILE)) { + // fseek($this->_PPS_FILE, 0); + // $stats = fstat($this->_PPS_FILE); + // return $stats[7]; + //} else { + return strlen($this->_data); + //} + } + + /** + * Returns a string with the PPS's WK (What is a WK?) + * + * @access public + * @return string The binary string + */ + public function _getPpsWk() + { + $ret = str_pad($this->Name, 64, "\x00"); + + $ret .= pack("v", strlen($this->Name) + 2) // 66 + . pack("c", $this->Type) // 67 + . pack("c", 0x00) //UK // 68 + . pack("V", $this->PrevPps) //Prev // 72 + . pack("V", $this->NextPps) //Next // 76 + . pack("V", $this->DirPps) //Dir // 80 + . "\x00\x09\x02\x00" // 84 + . "\x00\x00\x00\x00" // 88 + . "\xc0\x00\x00\x00" // 92 + . "\x00\x00\x00\x46" // 96 // Seems to be ok only for Root + . "\x00\x00\x00\x00" // 100 + . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time1st) // 108 + . PHPExcel_Shared_OLE::LocalDate2OLE($this->Time2nd) // 116 + . pack("V", isset($this->_StartBlock)? + $this->_StartBlock:0) // 120 + . pack("V", $this->Size) // 124 + . pack("V", 0); // 128 + return $ret; + } + + /** + * Updates index and pointers to previous, next and children PPS's for this + * PPS. I don't think it'll work with Dir PPS's. + * + * @access public + * @param array &$raList Reference to the array of PPS's for the whole OLE + * container + * @return integer The index for this PPS + */ + public static function _savePpsSetPnt(&$raList, $to_save, $depth = 0) + { + if (!is_array($to_save) || (empty($to_save))) { + return 0xFFFFFFFF; + } elseif (count($to_save) == 1) { + $cnt = count($raList); + // If the first entry, it's the root... Don't clone it! + $raList[$cnt] = ( $depth == 0 ) ? $to_save[0] : clone $to_save[0]; + $raList[$cnt]->No = $cnt; + $raList[$cnt]->PrevPps = 0xFFFFFFFF; + $raList[$cnt]->NextPps = 0xFFFFFFFF; + $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++); + } else { + $iPos = floor(count($to_save) / 2); + $aPrev = array_slice($to_save, 0, $iPos); + $aNext = array_slice($to_save, $iPos + 1); + $cnt = count($raList); + // If the first entry, it's the root... Don't clone it! + $raList[$cnt] = ( $depth == 0 ) ? $to_save[$iPos] : clone $to_save[$iPos]; + $raList[$cnt]->No = $cnt; + $raList[$cnt]->PrevPps = self::_savePpsSetPnt($raList, $aPrev, $depth++); + $raList[$cnt]->NextPps = self::_savePpsSetPnt($raList, $aNext, $depth++); + $raList[$cnt]->DirPps = self::_savePpsSetPnt($raList, @$raList[$cnt]->children, $depth++); + + } + return $cnt; + } +} diff --git a/assets/excel/PHPExcel/Shared/OLE/PPS/File.php b/assets/excel/PHPExcel/Shared/OLE/PPS/File.php new file mode 100644 index 0000000..1ca337c --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLE/PPS/File.php @@ -0,0 +1,74 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP Version 4 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1997-2002 The PHP Group | +// +----------------------------------------------------------------------+ +// | This source file is subject to version 2.02 of the PHP license, | +// | that is bundled with this package in the file LICENSE, and is | +// | available at through the world-wide-web at | +// | http://www.php.net/license/2_02.txt. | +// | If you did not receive a copy of the PHP license and are unable to | +// | obtain it through the world-wide-web, please send a note to | +// | license@php.net so we can mail you a copy immediately. | +// +----------------------------------------------------------------------+ +// | Author: Xavier Noguer <xnoguer@php.net> | +// | Based on OLE::Storage_Lite by Kawai, Takanori | +// +----------------------------------------------------------------------+ +// +// $Id: File.php,v 1.11 2007/02/13 21:00:42 schmidt Exp $ + + +/** +* Class for creating File PPS's for OLE containers +* +* @author Xavier Noguer <xnoguer@php.net> +* @category PHPExcel +* @package PHPExcel_Shared_OLE +*/ +class PHPExcel_Shared_OLE_PPS_File extends PHPExcel_Shared_OLE_PPS +{ + /** + * The constructor + * + * @access public + * @param string $name The name of the file (in Unicode) + * @see OLE::Asc2Ucs() + */ + public function __construct($name) + { + parent::__construct(null, $name, PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE, null, null, null, null, null, '', array()); + } + + /** + * Initialization method. Has to be called right after OLE_PPS_File(). + * + * @access public + * @return mixed true on success + */ + public function init() + { + return true; + } + + /** + * Append data to PPS + * + * @access public + * @param string $data The data to append + */ + public function append($data) + { + $this->_data .= $data; + } + + /** + * Returns a stream for reading this file using fread() etc. + * @return resource a read-only stream + */ + public function getStream() + { + $this->ole->getStream($this); + } +} diff --git a/assets/excel/PHPExcel/Shared/OLE/PPS/Root.php b/assets/excel/PHPExcel/Shared/OLE/PPS/Root.php new file mode 100644 index 0000000..5d4052f --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLE/PPS/Root.php @@ -0,0 +1,462 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP Version 4 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1997-2002 The PHP Group | +// +----------------------------------------------------------------------+ +// | This source file is subject to version 2.02 of the PHP license, | +// | that is bundled with this package in the file LICENSE, and is | +// | available at through the world-wide-web at | +// | http://www.php.net/license/2_02.txt. | +// | If you did not receive a copy of the PHP license and are unable to | +// | obtain it through the world-wide-web, please send a note to | +// | license@php.net so we can mail you a copy immediately. | +// +----------------------------------------------------------------------+ +// | Author: Xavier Noguer <xnoguer@php.net> | +// | Based on OLE::Storage_Lite by Kawai, Takanori | +// +----------------------------------------------------------------------+ +// +// $Id: Root.php,v 1.9 2005/04/23 21:53:49 dufuz Exp $ + + +/** +* Class for creating Root PPS's for OLE containers +* +* @author Xavier Noguer <xnoguer@php.net> +* @category PHPExcel +* @package PHPExcel_Shared_OLE +*/ +class PHPExcel_Shared_OLE_PPS_Root extends PHPExcel_Shared_OLE_PPS +{ + + /** + * Directory for temporary files + * @var string + */ + protected $tempDirectory = null; + + /** + * @param integer $time_1st A timestamp + * @param integer $time_2nd A timestamp + */ + public function __construct($time_1st, $time_2nd, $raChild) + { + $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); + + parent::__construct(null, PHPExcel_Shared_OLE::Asc2Ucs('Root Entry'), PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT, null, null, null, $time_1st, $time_2nd, null, $raChild); + } + + /** + * Method for saving the whole OLE container (including files). + * In fact, if called with an empty argument (or '-'), it saves to a + * temporary file and then outputs it's contents to stdout. + * If a resource pointer to a stream created by fopen() is passed + * it will be used, but you have to close such stream by yourself. + * + * @param string|resource $filename The name of the file or stream where to save the OLE container. + * @access public + * @return mixed true on success + */ + public function save($filename) + { + // Initial Setting for saving + $this->_BIG_BLOCK_SIZE = pow( + 2, + (isset($this->_BIG_BLOCK_SIZE))? self::adjust2($this->_BIG_BLOCK_SIZE) : 9 + ); + $this->_SMALL_BLOCK_SIZE= pow( + 2, + (isset($this->_SMALL_BLOCK_SIZE))? self::adjust2($this->_SMALL_BLOCK_SIZE) : 6 + ); + + if (is_resource($filename)) { + $this->_FILEH_ = $filename; + } elseif ($filename == '-' || $filename == '') { + if ($this->tempDirectory === null) { + $this->tempDirectory = PHPExcel_Shared_File::sys_get_temp_dir(); + } + $this->_tmp_filename = tempnam($this->tempDirectory, "OLE_PPS_Root"); + $this->_FILEH_ = fopen($this->_tmp_filename, "w+b"); + if ($this->_FILEH_ == false) { + throw new PHPExcel_Writer_Exception("Can't create temporary file."); + } + } else { + $this->_FILEH_ = fopen($filename, "wb"); + } + if ($this->_FILEH_ == false) { + throw new PHPExcel_Writer_Exception("Can't open $filename. It may be in use or protected."); + } + // Make an array of PPS's (for Save) + $aList = array(); + PHPExcel_Shared_OLE_PPS::_savePpsSetPnt($aList, array($this)); + // calculate values for header + list($iSBDcnt, $iBBcnt, $iPPScnt) = $this->_calcSize($aList); //, $rhInfo); + // Save Header + $this->_saveHeader($iSBDcnt, $iBBcnt, $iPPScnt); + + // Make Small Data string (write SBD) + $this->_data = $this->_makeSmallData($aList); + + // Write BB + $this->_saveBigData($iSBDcnt, $aList); + // Write PPS + $this->_savePps($aList); + // Write Big Block Depot and BDList and Adding Header informations + $this->_saveBbd($iSBDcnt, $iBBcnt, $iPPScnt); + + if (!is_resource($filename)) { + fclose($this->_FILEH_); + } + + return true; + } + + /** + * Calculate some numbers + * + * @access public + * @param array $raList Reference to an array of PPS's + * @return array The array of numbers + */ + public function _calcSize(&$raList) + { + // Calculate Basic Setting + list($iSBDcnt, $iBBcnt, $iPPScnt) = array(0,0,0); + $iSmallLen = 0; + $iSBcnt = 0; + $iCount = count($raList); + for ($i = 0; $i < $iCount; ++$i) { + if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) { + $raList[$i]->Size = $raList[$i]->_DataLen(); + if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) { + $iSBcnt += floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE) + + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0); + } else { + $iBBcnt += (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) + + (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0)); + } + } + } + $iSmallLen = $iSBcnt * $this->_SMALL_BLOCK_SIZE; + $iSlCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE); + $iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt)? 1:0); + $iBBcnt += (floor($iSmallLen / $this->_BIG_BLOCK_SIZE) + + (( $iSmallLen % $this->_BIG_BLOCK_SIZE)? 1: 0)); + $iCnt = count($raList); + $iBdCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE; + $iPPScnt = (floor($iCnt/$iBdCnt) + (($iCnt % $iBdCnt)? 1: 0)); + + return array($iSBDcnt, $iBBcnt, $iPPScnt); + } + + /** + * Helper function for caculating a magic value for block sizes + * + * @access public + * @param integer $i2 The argument + * @see save() + * @return integer + */ + private static function adjust2($i2) + { + $iWk = log($i2)/log(2); + return ($iWk > floor($iWk))? floor($iWk)+1:$iWk; + } + + /** + * Save OLE header + * + * @access public + * @param integer $iSBDcnt + * @param integer $iBBcnt + * @param integer $iPPScnt + */ + public function _saveHeader($iSBDcnt, $iBBcnt, $iPPScnt) + { + $FILE = $this->_FILEH_; + + // Calculate Basic Setting + $iBlCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; + $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; + + $iBdExL = 0; + $iAll = $iBBcnt + $iPPScnt + $iSBDcnt; + $iAllW = $iAll; + $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0); + $iBdCnt = floor(($iAll + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0); + + // Calculate BD count + if ($iBdCnt > $i1stBdL) { + while (1) { + ++$iBdExL; + ++$iAllW; + $iBdCntW = floor($iAllW / $iBlCnt) + (($iAllW % $iBlCnt)? 1: 0); + $iBdCnt = floor(($iAllW + $iBdCntW) / $iBlCnt) + ((($iAllW+$iBdCntW) % $iBlCnt)? 1: 0); + if ($iBdCnt <= ($iBdExL*$iBlCnt+ $i1stBdL)) { + break; + } + } + } + + // Save Header + fwrite( + $FILE, + "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1" + . "\x00\x00\x00\x00" + . "\x00\x00\x00\x00" + . "\x00\x00\x00\x00" + . "\x00\x00\x00\x00" + . pack("v", 0x3b) + . pack("v", 0x03) + . pack("v", -2) + . pack("v", 9) + . pack("v", 6) + . pack("v", 0) + . "\x00\x00\x00\x00" + . "\x00\x00\x00\x00" + . pack("V", $iBdCnt) + . pack("V", $iBBcnt+$iSBDcnt) //ROOT START + . pack("V", 0) + . pack("V", 0x1000) + . pack("V", $iSBDcnt ? 0 : -2) //Small Block Depot + . pack("V", $iSBDcnt) + ); + // Extra BDList Start, Count + if ($iBdCnt < $i1stBdL) { + fwrite( + $FILE, + pack("V", -2) // Extra BDList Start + . pack("V", 0)// Extra BDList Count + ); + } else { + fwrite($FILE, pack("V", $iAll+$iBdCnt) . pack("V", $iBdExL)); + } + + // BDList + for ($i = 0; $i < $i1stBdL && $i < $iBdCnt; ++$i) { + fwrite($FILE, pack("V", $iAll+$i)); + } + if ($i < $i1stBdL) { + $jB = $i1stBdL - $i; + for ($j = 0; $j < $jB; ++$j) { + fwrite($FILE, (pack("V", -1))); + } + } + } + + /** + * Saving big data (PPS's with data bigger than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) + * + * @access public + * @param integer $iStBlk + * @param array &$raList Reference to array of PPS's + */ + public function _saveBigData($iStBlk, &$raList) + { + $FILE = $this->_FILEH_; + + // cycle through PPS's + $iCount = count($raList); + for ($i = 0; $i < $iCount; ++$i) { + if ($raList[$i]->Type != PHPExcel_Shared_OLE::OLE_PPS_TYPE_DIR) { + $raList[$i]->Size = $raList[$i]->_DataLen(); + if (($raList[$i]->Size >= PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) || (($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_ROOT) && isset($raList[$i]->_data))) { + // Write Data + //if (isset($raList[$i]->_PPS_FILE)) { + // $iLen = 0; + // fseek($raList[$i]->_PPS_FILE, 0); // To The Top + // while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) { + // $iLen += strlen($sBuff); + // fwrite($FILE, $sBuff); + // } + //} else { + fwrite($FILE, $raList[$i]->_data); + //} + + if ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE) { + fwrite($FILE, str_repeat("\x00", $this->_BIG_BLOCK_SIZE - ($raList[$i]->Size % $this->_BIG_BLOCK_SIZE))); + } + // Set For PPS + $raList[$i]->_StartBlock = $iStBlk; + $iStBlk += + (floor($raList[$i]->Size / $this->_BIG_BLOCK_SIZE) + + (($raList[$i]->Size % $this->_BIG_BLOCK_SIZE)? 1: 0)); + } + // Close file for each PPS, and unlink it + //if (isset($raList[$i]->_PPS_FILE)) { + // fclose($raList[$i]->_PPS_FILE); + // $raList[$i]->_PPS_FILE = null; + // unlink($raList[$i]->_tmp_filename); + //} + } + } + } + + /** + * get small data (PPS's with data smaller than PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) + * + * @access public + * @param array &$raList Reference to array of PPS's + */ + public function _makeSmallData(&$raList) + { + $sRes = ''; + $FILE = $this->_FILEH_; + $iSmBlk = 0; + + $iCount = count($raList); + for ($i = 0; $i < $iCount; ++$i) { + // Make SBD, small data string + if ($raList[$i]->Type == PHPExcel_Shared_OLE::OLE_PPS_TYPE_FILE) { + if ($raList[$i]->Size <= 0) { + continue; + } + if ($raList[$i]->Size < PHPExcel_Shared_OLE::OLE_DATA_SIZE_SMALL) { + $iSmbCnt = floor($raList[$i]->Size / $this->_SMALL_BLOCK_SIZE) + + (($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)? 1: 0); + // Add to SBD + $jB = $iSmbCnt - 1; + for ($j = 0; $j < $jB; ++$j) { + fwrite($FILE, pack("V", $j+$iSmBlk+1)); + } + fwrite($FILE, pack("V", -2)); + + //// Add to Data String(this will be written for RootEntry) + //if ($raList[$i]->_PPS_FILE) { + // fseek($raList[$i]->_PPS_FILE, 0); // To The Top + // while ($sBuff = fread($raList[$i]->_PPS_FILE, 4096)) { + // $sRes .= $sBuff; + // } + //} else { + $sRes .= $raList[$i]->_data; + //} + if ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE) { + $sRes .= str_repeat("\x00", $this->_SMALL_BLOCK_SIZE - ($raList[$i]->Size % $this->_SMALL_BLOCK_SIZE)); + } + // Set for PPS + $raList[$i]->_StartBlock = $iSmBlk; + $iSmBlk += $iSmbCnt; + } + } + } + $iSbCnt = floor($this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE); + if ($iSmBlk % $iSbCnt) { + $iB = $iSbCnt - ($iSmBlk % $iSbCnt); + for ($i = 0; $i < $iB; ++$i) { + fwrite($FILE, pack("V", -1)); + } + } + return $sRes; + } + + /** + * Saves all the PPS's WKs + * + * @access public + * @param array $raList Reference to an array with all PPS's + */ + public function _savePps(&$raList) + { + // Save each PPS WK + $iC = count($raList); + for ($i = 0; $i < $iC; ++$i) { + fwrite($this->_FILEH_, $raList[$i]->_getPpsWk()); + } + // Adjust for Block + $iCnt = count($raList); + $iBCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_PPS_SIZE; + if ($iCnt % $iBCnt) { + fwrite($this->_FILEH_, str_repeat("\x00", ($iBCnt - ($iCnt % $iBCnt)) * PHPExcel_Shared_OLE::OLE_PPS_SIZE)); + } + } + + /** + * Saving Big Block Depot + * + * @access public + * @param integer $iSbdSize + * @param integer $iBsize + * @param integer $iPpsCnt + */ + public function _saveBbd($iSbdSize, $iBsize, $iPpsCnt) + { + $FILE = $this->_FILEH_; + // Calculate Basic Setting + $iBbCnt = $this->_BIG_BLOCK_SIZE / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; + $i1stBdL = ($this->_BIG_BLOCK_SIZE - 0x4C) / PHPExcel_Shared_OLE::OLE_LONG_INT_SIZE; + + $iBdExL = 0; + $iAll = $iBsize + $iPpsCnt + $iSbdSize; + $iAllW = $iAll; + $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0); + $iBdCnt = floor(($iAll + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0); + // Calculate BD count + if ($iBdCnt >$i1stBdL) { + while (1) { + ++$iBdExL; + ++$iAllW; + $iBdCntW = floor($iAllW / $iBbCnt) + (($iAllW % $iBbCnt)? 1: 0); + $iBdCnt = floor(($iAllW + $iBdCntW) / $iBbCnt) + ((($iAllW+$iBdCntW) % $iBbCnt)? 1: 0); + if ($iBdCnt <= ($iBdExL*$iBbCnt+ $i1stBdL)) { + break; + } + } + } + + // Making BD + // Set for SBD + if ($iSbdSize > 0) { + for ($i = 0; $i < ($iSbdSize - 1); ++$i) { + fwrite($FILE, pack("V", $i+1)); + } + fwrite($FILE, pack("V", -2)); + } + // Set for B + for ($i = 0; $i < ($iBsize - 1); ++$i) { + fwrite($FILE, pack("V", $i+$iSbdSize+1)); + } + fwrite($FILE, pack("V", -2)); + + // Set for PPS + for ($i = 0; $i < ($iPpsCnt - 1); ++$i) { + fwrite($FILE, pack("V", $i+$iSbdSize+$iBsize+1)); + } + fwrite($FILE, pack("V", -2)); + // Set for BBD itself ( 0xFFFFFFFD : BBD) + for ($i = 0; $i < $iBdCnt; ++$i) { + fwrite($FILE, pack("V", 0xFFFFFFFD)); + } + // Set for ExtraBDList + for ($i = 0; $i < $iBdExL; ++$i) { + fwrite($FILE, pack("V", 0xFFFFFFFC)); + } + // Adjust for Block + if (($iAllW + $iBdCnt) % $iBbCnt) { + $iBlock = ($iBbCnt - (($iAllW + $iBdCnt) % $iBbCnt)); + for ($i = 0; $i < $iBlock; ++$i) { + fwrite($FILE, pack("V", -1)); + } + } + // Extra BDList + if ($iBdCnt > $i1stBdL) { + $iN=0; + $iNb=0; + for ($i = $i1stBdL; $i < $iBdCnt; $i++, ++$iN) { + if ($iN >= ($iBbCnt - 1)) { + $iN = 0; + ++$iNb; + fwrite($FILE, pack("V", $iAll+$iBdCnt+$iNb)); + } + fwrite($FILE, pack("V", $iBsize+$iSbdSize+$iPpsCnt+$i)); + } + if (($iBdCnt-$i1stBdL) % ($iBbCnt-1)) { + $iB = ($iBbCnt - 1) - (($iBdCnt - $i1stBdL) % ($iBbCnt - 1)); + for ($i = 0; $i < $iB; ++$i) { + fwrite($FILE, pack("V", -1)); + } + } + fwrite($FILE, pack("V", -2)); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/OLERead.php b/assets/excel/PHPExcel/Shared/OLERead.php new file mode 100644 index 0000000..6b15d97 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/OLERead.php @@ -0,0 +1,318 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +defined('IDENTIFIER_OLE') || + define('IDENTIFIER_OLE', pack('CCCCCCCC', 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1)); + +class PHPExcel_Shared_OLERead +{ + private $data = ''; + + // OLE identifier + const IDENTIFIER_OLE = IDENTIFIER_OLE; + + // Size of a sector = 512 bytes + const BIG_BLOCK_SIZE = 0x200; + + // Size of a short sector = 64 bytes + const SMALL_BLOCK_SIZE = 0x40; + + // Size of a directory entry always = 128 bytes + const PROPERTY_STORAGE_BLOCK_SIZE = 0x80; + + // Minimum size of a standard stream = 4096 bytes, streams smaller than this are stored as short streams + const SMALL_BLOCK_THRESHOLD = 0x1000; + + // header offsets + const NUM_BIG_BLOCK_DEPOT_BLOCKS_POS = 0x2c; + const ROOT_START_BLOCK_POS = 0x30; + const SMALL_BLOCK_DEPOT_BLOCK_POS = 0x3c; + const EXTENSION_BLOCK_POS = 0x44; + const NUM_EXTENSION_BLOCK_POS = 0x48; + const BIG_BLOCK_DEPOT_BLOCKS_POS = 0x4c; + + // property storage offsets (directory offsets) + const SIZE_OF_NAME_POS = 0x40; + const TYPE_POS = 0x42; + const START_BLOCK_POS = 0x74; + const SIZE_POS = 0x78; + + + + public $wrkbook = null; + public $summaryInformation = null; + public $documentSummaryInformation = null; + + + /** + * Read the file + * + * @param $sFileName string Filename + * @throws PHPExcel_Reader_Exception + */ + public function read($sFileName) + { + // Check if file exists and is readable + if (!is_readable($sFileName)) { + throw new PHPExcel_Reader_Exception("Could not open " . $sFileName . " for reading! File does not exist, or it is not readable."); + } + + // Get the file identifier + // Don't bother reading the whole file until we know it's a valid OLE file + $this->data = file_get_contents($sFileName, false, null, 0, 8); + + // Check OLE identifier + if ($this->data != self::IDENTIFIER_OLE) { + throw new PHPExcel_Reader_Exception('The filename ' . $sFileName . ' is not recognised as an OLE file'); + } + + // Get the file data + $this->data = file_get_contents($sFileName); + + // Total number of sectors used for the SAT + $this->numBigBlockDepotBlocks = self::getInt4d($this->data, self::NUM_BIG_BLOCK_DEPOT_BLOCKS_POS); + + // SecID of the first sector of the directory stream + $this->rootStartBlock = self::getInt4d($this->data, self::ROOT_START_BLOCK_POS); + + // SecID of the first sector of the SSAT (or -2 if not extant) + $this->sbdStartBlock = self::getInt4d($this->data, self::SMALL_BLOCK_DEPOT_BLOCK_POS); + + // SecID of the first sector of the MSAT (or -2 if no additional sectors are used) + $this->extensionBlock = self::getInt4d($this->data, self::EXTENSION_BLOCK_POS); + + // Total number of sectors used by MSAT + $this->numExtensionBlocks = self::getInt4d($this->data, self::NUM_EXTENSION_BLOCK_POS); + + $bigBlockDepotBlocks = array(); + $pos = self::BIG_BLOCK_DEPOT_BLOCKS_POS; + + $bbdBlocks = $this->numBigBlockDepotBlocks; + + if ($this->numExtensionBlocks != 0) { + $bbdBlocks = (self::BIG_BLOCK_SIZE - self::BIG_BLOCK_DEPOT_BLOCKS_POS)/4; + } + + for ($i = 0; $i < $bbdBlocks; ++$i) { + $bigBlockDepotBlocks[$i] = self::getInt4d($this->data, $pos); + $pos += 4; + } + + for ($j = 0; $j < $this->numExtensionBlocks; ++$j) { + $pos = ($this->extensionBlock + 1) * self::BIG_BLOCK_SIZE; + $blocksToRead = min($this->numBigBlockDepotBlocks - $bbdBlocks, self::BIG_BLOCK_SIZE / 4 - 1); + + for ($i = $bbdBlocks; $i < $bbdBlocks + $blocksToRead; ++$i) { + $bigBlockDepotBlocks[$i] = self::getInt4d($this->data, $pos); + $pos += 4; + } + + $bbdBlocks += $blocksToRead; + if ($bbdBlocks < $this->numBigBlockDepotBlocks) { + $this->extensionBlock = self::getInt4d($this->data, $pos); + } + } + + $pos = 0; + $this->bigBlockChain = ''; + $bbs = self::BIG_BLOCK_SIZE / 4; + for ($i = 0; $i < $this->numBigBlockDepotBlocks; ++$i) { + $pos = ($bigBlockDepotBlocks[$i] + 1) * self::BIG_BLOCK_SIZE; + + $this->bigBlockChain .= substr($this->data, $pos, 4*$bbs); + $pos += 4*$bbs; + } + + $pos = 0; + $sbdBlock = $this->sbdStartBlock; + $this->smallBlockChain = ''; + while ($sbdBlock != -2) { + $pos = ($sbdBlock + 1) * self::BIG_BLOCK_SIZE; + + $this->smallBlockChain .= substr($this->data, $pos, 4*$bbs); + $pos += 4*$bbs; + + $sbdBlock = self::getInt4d($this->bigBlockChain, $sbdBlock*4); + } + + // read the directory stream + $block = $this->rootStartBlock; + $this->entry = $this->_readData($block); + + $this->readPropertySets(); + } + + /** + * Extract binary stream data + * + * @return string + */ + public function getStream($stream) + { + if ($stream === null) { + return null; + } + + $streamData = ''; + + if ($this->props[$stream]['size'] < self::SMALL_BLOCK_THRESHOLD) { + $rootdata = $this->_readData($this->props[$this->rootentry]['startBlock']); + + $block = $this->props[$stream]['startBlock']; + + while ($block != -2) { + $pos = $block * self::SMALL_BLOCK_SIZE; + $streamData .= substr($rootdata, $pos, self::SMALL_BLOCK_SIZE); + + $block = self::getInt4d($this->smallBlockChain, $block*4); + } + + return $streamData; + } else { + $numBlocks = $this->props[$stream]['size'] / self::BIG_BLOCK_SIZE; + if ($this->props[$stream]['size'] % self::BIG_BLOCK_SIZE != 0) { + ++$numBlocks; + } + + if ($numBlocks == 0) { + return ''; + } + + $block = $this->props[$stream]['startBlock']; + + while ($block != -2) { + $pos = ($block + 1) * self::BIG_BLOCK_SIZE; + $streamData .= substr($this->data, $pos, self::BIG_BLOCK_SIZE); + $block = self::getInt4d($this->bigBlockChain, $block*4); + } + + return $streamData; + } + } + + /** + * Read a standard stream (by joining sectors using information from SAT) + * + * @param int $bl Sector ID where the stream starts + * @return string Data for standard stream + */ + private function _readData($bl) + { + $block = $bl; + $data = ''; + + while ($block != -2) { + $pos = ($block + 1) * self::BIG_BLOCK_SIZE; + $data .= substr($this->data, $pos, self::BIG_BLOCK_SIZE); + $block = self::getInt4d($this->bigBlockChain, $block*4); + } + return $data; + } + + /** + * Read entries in the directory stream. + */ + private function readPropertySets() + { + $offset = 0; + + // loop through entires, each entry is 128 bytes + $entryLen = strlen($this->entry); + while ($offset < $entryLen) { + // entry data (128 bytes) + $d = substr($this->entry, $offset, self::PROPERTY_STORAGE_BLOCK_SIZE); + + // size in bytes of name + $nameSize = ord($d[self::SIZE_OF_NAME_POS]) | (ord($d[self::SIZE_OF_NAME_POS+1]) << 8); + + // type of entry + $type = ord($d[self::TYPE_POS]); + + // sectorID of first sector or short sector, if this entry refers to a stream (the case with workbook) + // sectorID of first sector of the short-stream container stream, if this entry is root entry + $startBlock = self::getInt4d($d, self::START_BLOCK_POS); + + $size = self::getInt4d($d, self::SIZE_POS); + + $name = str_replace("\x00", "", substr($d, 0, $nameSize)); + + $this->props[] = array( + 'name' => $name, + 'type' => $type, + 'startBlock' => $startBlock, + 'size' => $size + ); + + // tmp helper to simplify checks + $upName = strtoupper($name); + + // Workbook directory entry (BIFF5 uses Book, BIFF8 uses Workbook) + if (($upName === 'WORKBOOK') || ($upName === 'BOOK')) { + $this->wrkbook = count($this->props) - 1; + } elseif ($upName === 'ROOT ENTRY' || $upName === 'R') { + // Root entry + $this->rootentry = count($this->props) - 1; + } + + // Summary information + if ($name == chr(5) . 'SummaryInformation') { +// echo 'Summary Information<br />'; + $this->summaryInformation = count($this->props) - 1; + } + + // Additional Document Summary information + if ($name == chr(5) . 'DocumentSummaryInformation') { +// echo 'Document Summary Information<br />'; + $this->documentSummaryInformation = count($this->props) - 1; + } + + $offset += self::PROPERTY_STORAGE_BLOCK_SIZE; + } + } + + /** + * Read 4 bytes of data at specified position + * + * @param string $data + * @param int $pos + * @return int + */ + private static function getInt4d($data, $pos) + { + // FIX: represent numbers correctly on 64-bit system + // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334 + // Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems + $_or_24 = ord($data[$pos + 3]); + if ($_or_24 >= 128) { + // negative number + $_ord_24 = -abs((256 - $_or_24) << 24); + } else { + $_ord_24 = ($_or_24 & 127) << 24; + } + return ord($data[$pos]) | (ord($data[$pos + 1]) << 8) | (ord($data[$pos + 2]) << 16) | $_ord_24; + } +} diff --git a/assets/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt b/assets/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt new file mode 100644 index 0000000..cbee875 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/PCLZip/gnu-lgpl.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/assets/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php b/assets/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php new file mode 100644 index 0000000..a5a9b0a --- /dev/null +++ b/assets/excel/PHPExcel/Shared/PCLZip/pclzip.lib.php @@ -0,0 +1,5173 @@ +<?php +// -------------------------------------------------------------------------------- +// PhpConcept Library - Zip Module 2.8.2 +// -------------------------------------------------------------------------------- +// License GNU/LGPL - Vincent Blavet - August 2009 +// http://www.phpconcept.net +// -------------------------------------------------------------------------------- +// +// Presentation : +// PclZip is a PHP library that manage ZIP archives. +// So far tests show that archives generated by PclZip are readable by +// WinZip application and other tools. +// +// Description : +// See readme.txt and http://www.phpconcept.net +// +// Warning : +// This library and the associated files are non commercial, non professional +// work. +// It should not have unexpected results. However if any damage is caused by +// this software the author can not be responsible. +// The use of this software is at the risk of the user. +// +// -------------------------------------------------------------------------------- +// $Id: pclzip.lib.php,v 1.60 2009/09/30 21:01:04 vblavet Exp $ +// -------------------------------------------------------------------------------- + +// ----- Constants +if (!defined('PCLZIP_READ_BLOCK_SIZE')) { + define('PCLZIP_READ_BLOCK_SIZE', 2048); +} + +// ----- File list separator +// In version 1.x of PclZip, the separator for file list is a space +// (which is not a very smart choice, specifically for windows paths !). +// A better separator should be a comma (,). This constant gives you the +// abilty to change that. +// However notice that changing this value, may have impact on existing +// scripts, using space separated filenames. +// Recommanded values for compatibility with older versions : +//define('PCLZIP_SEPARATOR', ' '); +// Recommanded values for smart separation of filenames. +if (!defined('PCLZIP_SEPARATOR')) { + define('PCLZIP_SEPARATOR', ','); +} + +// ----- Error configuration +// 0 : PclZip Class integrated error handling +// 1 : PclError external library error handling. By enabling this +// you must ensure that you have included PclError library. +// [2,...] : reserved for futur use +if (!defined('PCLZIP_ERROR_EXTERNAL')) { + define('PCLZIP_ERROR_EXTERNAL', 0); +} + +// ----- Optional static temporary directory +// By default temporary files are generated in the script current +// path. +// If defined : +// - MUST BE terminated by a '/'. +// - MUST be a valid, already created directory +// Samples : +// define('PCLZIP_TEMPORARY_DIR', '/temp/'); +// define('PCLZIP_TEMPORARY_DIR', 'C:/Temp/'); +if (!defined('PCLZIP_TEMPORARY_DIR')) { + define('PCLZIP_TEMPORARY_DIR', ''); +} + +// ----- Optional threshold ratio for use of temporary files +// Pclzip sense the size of the file to add/extract and decide to +// use or not temporary file. The algorythm is looking for +// memory_limit of PHP and apply a ratio. +// threshold = memory_limit * ratio. +// Recommended values are under 0.5. Default 0.47. +// Samples : +// define('PCLZIP_TEMPORARY_FILE_RATIO', 0.5); +if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) { + define('PCLZIP_TEMPORARY_FILE_RATIO', 0.47); +} + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE NOTHING NEEDS TO BE MODIFIED ***** +// -------------------------------------------------------------------------------- + +// ----- Global variables +$g_pclzip_version = "2.8.2"; + +// ----- Error codes +// -1 : Unable to open file in binary write mode +// -2 : Unable to open file in binary read mode +// -3 : Invalid parameters +// -4 : File does not exist +// -5 : Filename is too long (max. 255) +// -6 : Not a valid zip file +// -7 : Invalid extracted file size +// -8 : Unable to create directory +// -9 : Invalid archive extension +// -10 : Invalid archive format +// -11 : Unable to delete file (unlink) +// -12 : Unable to rename file (rename) +// -13 : Invalid header checksum +// -14 : Invalid archive size +define('PCLZIP_ERR_USER_ABORTED', 2); +define('PCLZIP_ERR_NO_ERROR', 0); +define('PCLZIP_ERR_WRITE_OPEN_FAIL', -1); +define('PCLZIP_ERR_READ_OPEN_FAIL', -2); +define('PCLZIP_ERR_INVALID_PARAMETER', -3); +define('PCLZIP_ERR_MISSING_FILE', -4); +define('PCLZIP_ERR_FILENAME_TOO_LONG', -5); +define('PCLZIP_ERR_INVALID_ZIP', -6); +define('PCLZIP_ERR_BAD_EXTRACTED_FILE', -7); +define('PCLZIP_ERR_DIR_CREATE_FAIL', -8); +define('PCLZIP_ERR_BAD_EXTENSION', -9); +define('PCLZIP_ERR_BAD_FORMAT', -10); +define('PCLZIP_ERR_DELETE_FILE_FAIL', -11); +define('PCLZIP_ERR_RENAME_FILE_FAIL', -12); +define('PCLZIP_ERR_BAD_CHECKSUM', -13); +define('PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14); +define('PCLZIP_ERR_MISSING_OPTION_VALUE', -15); +define('PCLZIP_ERR_INVALID_OPTION_VALUE', -16); +define('PCLZIP_ERR_ALREADY_A_DIRECTORY', -17); +define('PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18); +define('PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19); +define('PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20); +define('PCLZIP_ERR_DIRECTORY_RESTRICTION', -21); + +// ----- Options values +define('PCLZIP_OPT_PATH', 77001); +define('PCLZIP_OPT_ADD_PATH', 77002); +define('PCLZIP_OPT_REMOVE_PATH', 77003); +define('PCLZIP_OPT_REMOVE_ALL_PATH', 77004); +define('PCLZIP_OPT_SET_CHMOD', 77005); +define('PCLZIP_OPT_EXTRACT_AS_STRING', 77006); +define('PCLZIP_OPT_NO_COMPRESSION', 77007); +define('PCLZIP_OPT_BY_NAME', 77008); +define('PCLZIP_OPT_BY_INDEX', 77009); +define('PCLZIP_OPT_BY_EREG', 77010); +define('PCLZIP_OPT_BY_PREG', 77011); +define('PCLZIP_OPT_COMMENT', 77012); +define('PCLZIP_OPT_ADD_COMMENT', 77013); +define('PCLZIP_OPT_PREPEND_COMMENT', 77014); +define('PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015); +define('PCLZIP_OPT_REPLACE_NEWER', 77016); +define('PCLZIP_OPT_STOP_ON_ERROR', 77017); +// Having big trouble with crypt. Need to multiply 2 long int +// which is not correctly supported by PHP ... +//define('PCLZIP_OPT_CRYPT', 77018); +define('PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019); +define('PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020); +define('PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020); // alias +define('PCLZIP_OPT_TEMP_FILE_ON', 77021); +define('PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021); // alias +define('PCLZIP_OPT_TEMP_FILE_OFF', 77022); +define('PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022); // alias + +// ----- File description attributes +define('PCLZIP_ATT_FILE_NAME', 79001); +define('PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002); +define('PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003); +define('PCLZIP_ATT_FILE_MTIME', 79004); +define('PCLZIP_ATT_FILE_CONTENT', 79005); +define('PCLZIP_ATT_FILE_COMMENT', 79006); + +// ----- Call backs values +define('PCLZIP_CB_PRE_EXTRACT', 78001); +define('PCLZIP_CB_POST_EXTRACT', 78002); +define('PCLZIP_CB_PRE_ADD', 78003); +define('PCLZIP_CB_POST_ADD', 78004); +/* For futur use +define('PCLZIP_CB_PRE_LIST', 78005); +define('PCLZIP_CB_POST_LIST', 78006); +define('PCLZIP_CB_PRE_DELETE', 78007); +define('PCLZIP_CB_POST_DELETE', 78008); +*/ + +// -------------------------------------------------------------------------------- +// Class : PclZip +// Description : +// PclZip is the class that represent a Zip archive. +// The public methods allow the manipulation of the archive. +// Attributes : +// Attributes must not be accessed directly. +// Methods : +// PclZip() : Object creator +// create() : Creates the Zip archive +// listContent() : List the content of the Zip archive +// extract() : Extract the content of the archive +// properties() : List the properties of the archive +// -------------------------------------------------------------------------------- +class PclZip +{ + // ----- Filename of the zip file + public $zipname = ''; + + // ----- File descriptor of the zip file + public $zip_fd = 0; + + // ----- Internal error handling + public $error_code = 1; + public $error_string = ''; + + // ----- Current status of the magic_quotes_runtime + // This value store the php configuration for magic_quotes + // The class can then disable the magic_quotes and reset it after + public $magic_quotes_status; + + // -------------------------------------------------------------------------------- + // Function : PclZip() + // Description : + // Creates a PclZip object and set the name of the associated Zip archive + // filename. + // Note that no real action is taken, if the archive does not exist it is not + // created. Use create() for that. + // -------------------------------------------------------------------------------- + public function __construct($p_zipname) + { + + // ----- Tests the zlib + if (!function_exists('gzopen')) { + die('Abort '.basename(__FILE__).' : Missing zlib extensions'); + } + + // ----- Set the attributes + $this->zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function create($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } else { + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } elseif ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } else { + // ----- The list is a list of string names + $v_string_list = $p_filelist; + } + } elseif (is_string($p_filelist)) { + // ----- Look if the $p_filelist is a string + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } else { + // ----- Invalid variable type for $p_filelist + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes = array( + PCLZIP_ATT_FILE_NAME => 'mandatory', + PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', + PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', + PCLZIP_ATT_FILE_MTIME => 'optional', + PCLZIP_ATT_FILE_CONTENT => 'optional', + PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function add($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } else { + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } else { + // ----- The list is a list of string names + $v_string_list = $p_filelist; + } + } elseif (is_string($p_filelist)) { + // ----- Look if the $p_filelist is a string + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } else { + // ----- Invalid variable type for $p_filelist + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes = array( + PCLZIP_ATT_FILE_NAME => 'mandatory', + PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', + PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', + PCLZIP_ATT_FILE_MTIME => 'optional', + PCLZIP_ATT_FILE_CONTENT => 'optional', + PCLZIP_ATT_FILE_COMMENT => 'optional', + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + public function listContent() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function extract() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + // $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( + PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional', + PCLZIP_OPT_STOP_ON_ERROR => 'optional', + PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } else { + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + public function extractByIndex($p_index) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + // $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional', + PCLZIP_OPT_STOP_ON_ERROR => 'optional', + PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + } else { + } + } else { + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array (PCLZIP_OPT_BY_INDEX => 'optional')); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function delete() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array ( + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + return(0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + public function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + public function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privSwapBackMagicQuotes(); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + public function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } elseif (is_string($p_archive)) { + // ----- Look if the $p_archive is a string (so a filename) + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } else { + // ----- Invalid variable + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + public function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) { + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } elseif (is_string($p_archive_to_add)) { + // ----- Look if the $p_archive_to_add is a string (so a filename) + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } else { + // ----- Invalid variable + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorName($p_with_code = false) + { + $v_name = array( + PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', + PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', + PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION', + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorInfo($p_full = false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** + // ***** ***** + // ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + public function privCheckFormat($p_level = 0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options = false) + { + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH: + case PCLZIP_OPT_REMOVE_PATH: + case PCLZIP_OPT_ADD_PATH: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i+1]; + if ((!is_integer($v_value)) || ($v_value<0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value*1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON: + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF: + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + return PclZip::errorCode(); + } + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1]) && ($p_options_list[$i+1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], false); + $i++; + } else { + } + break; + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } elseif (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG: + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + case PCLZIP_OPT_BY_PREG: + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT: + case PCLZIP_OPT_ADD_COMMENT: + case PCLZIP_OPT_PREPEND_COMMENT: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" .PclZipUtilOptionText($p_options_list[$i]) ."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } elseif (is_integer($p_options_list[$i+1])) { + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } elseif (is_array($p_options_list[$i+1])) { + $v_work_list = $p_options_list[$i+1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j<sizeof($v_work_list); $j++) { + // ----- Explode the item + $v_item_list = explode("-", $v_work_list[$j]); + $v_size_item_list = sizeof($v_item_list); + + // ----- TBC : Here we might check that each item is a + // real integer ... + + // ----- Look for single value + if ($v_size_item_list == 1) { + // ----- Set the option value + $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; + $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0]; + } elseif ($v_size_item_list == 2) { + // ----- Set the option value + $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; + $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + + // ----- Look for list sort + if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) { + $v_sort_flag=true; + + // ----- TBC : An automatic sort should be writen ... + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; + } + + // ----- Sort the items + if ($v_sort_flag) { + // TBC : To Be Completed + } + // ----- Next option + $i++; + break; + // ----- Look for options that request no value + case PCLZIP_OPT_REMOVE_ALL_PATH: + case PCLZIP_OPT_EXTRACT_AS_STRING: + case PCLZIP_OPT_NO_COMPRESSION: + case PCLZIP_OPT_EXTRACT_IN_OUTPUT: + case PCLZIP_OPT_REPLACE_NEWER: + case PCLZIP_OPT_STOP_ON_ERROR: + $v_result_list[$p_options_list[$i]] = true; + break; + // ----- Look for options that request an octal value + case PCLZIP_OPT_SET_CHMOD: + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT: + case PCLZIP_CB_POST_EXTRACT: + case PCLZIP_CB_PRE_ADD: + case PCLZIP_CB_POST_ADD: + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + default: + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" .$p_options_list[$i]."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privOptionDefaultThreshold(&$p_options) + { + $v_result=1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + + if ($last == 'g') { + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit*1073741824; + } + if ($last == 'm') { + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit*1048576; + } + if ($last == 'k') { + $v_memory_limit = $v_memory_limit*1024; + } + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options = false) + { + $v_result=1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + case PCLZIP_ATT_FILE_NEW_SHORT_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + case PCLZIP_ATT_FILE_NEW_FULL_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + $p_filedescr['comment'] = $v_value; + break; + case PCLZIP_ATT_FILE_MTIME: + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + $p_filedescr['mtime'] = $v_value; + break; + case PCLZIP_ATT_FILE_CONTENT: + $p_filedescr['content'] = $v_value; + break; + default: + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '".$v_key."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + return PclZip::errorCode(); + } + } + } + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result=1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i=0; $i<sizeof($p_filedescr_list); $i++) { + // ----- Get filedescr + $v_descr = $p_filedescr_list[$i]; + + // ----- Reduce the filename + $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); + $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); + + // ----- Look for real file or folder + if (file_exists($v_descr['filename'])) { + if (@is_file($v_descr['filename'])) { + $v_descr['type'] = 'file'; + } elseif (@is_dir($v_descr['filename'])) { + $v_descr['type'] = 'folder'; + } elseif (@is_link($v_descr['filename'])) { + // skip + continue; + } else { + // skip + continue; + } + } elseif (isset($v_descr['content'])) { + // ----- Look for string added as file + $v_descr['type'] = 'virtual_file'; + } else { + // ----- Missing file + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$v_descr['filename']."' does not exist"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Calculate the stored filename + $this->privCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) + && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; + } else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) { + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) { + // ----- Create the file header + if ($v_header_list[$i]['status'] == 'ok') { + if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privOpenFd($p_mode) + { + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privCloseFd() + { + $v_result=1; + + if ($this->zip_fd != 0) { + @fclose($this->zip_fd); + } + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- + // public function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + public function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) { + // ----- Create the file header + if ($v_header_list[$i]['status'] == 'ok') { + if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) { + // ----- Format the filename + $p_filedescr_list[$j]['filename'] = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); + + // ----- Skip empty file names + // TBC : Can this be possible ? not checked in DescrParseAtt ? + if ($p_filedescr_list[$j]['filename'] == "") { + continue; + } + + // ----- Check the filename + if (($p_filedescr_list[$j]['type'] != 'virtual_file') && (!file_exists($p_filedescr_list[$j]['filename']))) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '".$p_filedescr_list[$j]['filename']."' does not exist"); + return PclZip::errorCode(); + } + + // ----- Look if it is a file or a dir with no all path remove option + // or a dir with all its path removed + // if ( (is_file($p_filedescr_list[$j]['filename'])) + // || ( is_dir($p_filedescr_list[$j]['filename']) + if (($p_filedescr_list[$j]['type'] == 'file') || ($p_filedescr_list[$j]['type'] == 'virtual_file') || (($p_filedescr_list[$j]['type'] == 'folder') && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + // ----- Add the file + $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } + else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; + // TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type']=='file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + } elseif ($p_filedescr['type']=='folder') { + // ----- Look for regular folder + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + } elseif ($p_filedescr['type'] == 'virtual_file') { + // ----- Look for virtual file + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } elseif ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])))) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } else { + // ----- Use "in memory" zip algo + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } else { + // ----- Look for normal compression + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } + } elseif ($p_filedescr['type'] == 'virtual_file') { + // ----- Look for a virtual file (a file from string) + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } else { + // ----- Look for normal compression + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } elseif ($p_filedescr['type'] == 'folder') { + // ----- Look for a directory + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result=1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } else { + $p_remove_all_dir = 0; + } + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + } else { + // ----- Look for path and/or short name change + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'].'/'; + } + $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; + } else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } elseif ($p_remove_dir != "") { + // ----- Look for partial path remove + if (substr($p_remove_dir, -1) != '/') { + $p_remove_dir .= "/"; + } + + if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { + if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./".$p_remove_dir; + } + if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } else { + $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") { + $v_stored_filename = $p_add_dir.$v_stored_filename; + } else { + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + } + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteFileHeader(&$p_header) + { + $v_result=1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteCentralFileHeader(&$p_header) + { + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result = 1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privList(&$p_list) + { + $v_result = 1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result=1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + public function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path, 1, 2)!=":/"))) { + $p_path = "./".$p_path; + } + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") { + $p_path = substr($p_path, 0, strlen($p_path)-1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + // ----- Look if the filename is in the list + for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { + // ----- Look for a directory + if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { + // ----- Look if the directory is in the filename path + if ((strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + } elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + // ----- Look for a filename + $v_extract = true; + } + } + } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + // ----- Look for extract by preg rule + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + // ----- Look for extract by index rule + // ----- Look if the index is in the list + for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { + if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } else { + // ----- Look for no rule, which means extract all the archive + $v_extract = true; + } + + // ----- Check compression method + if (($v_extract) && (($v_header['compression'] != 8) && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename '".$v_header['stored_filename']."' is compressed by an unsupported compression method (".$v_header['compression'].") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, "Unsupported encryption for filename '".$v_header['stored_filename']."'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) { + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } elseif ((isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Look for extraction in standard output + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } else { + // ----- Look for normal extraction + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + public function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external']&0x00000010)==0x00000010) { + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } elseif ($p_remove_path != "") { + // ----- Look for path to remove + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) { + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) { + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], $p_entry['filename']); + if ($v_inclusion == 0) { + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, "Filename '".$p_entry['filename']."' is outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) { + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) { + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, "Filename '".$p_entry['filename']."' is already used by an existing directory"); + return PclZip::errorCode(); + } + } elseif (!is_writeable($p_entry['filename'])) { + // ----- Look if file is write protected + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Filename '".$p_entry['filename']."' exists and is write protected"); + return PclZip::errorCode(); + } + } elseif (filemtime($p_entry['filename']) > $p_entry['mtime']) { + // ----- Look if the extracted file is older + // ----- Change the file status + if ((isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) && ($p_options[PCLZIP_OPT_REPLACE_NEWER] === true)) { + } else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Newer version of '".$p_entry['filename']."' exists and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + return PclZip::errorCode(); + } + } + } else { + } + } else { + // ----- Check the directory availability and create it if necessary + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) { + $v_dir_to_check = $p_entry['filename']; + } elseif (!strstr($p_entry['filename'], "/")) { + $v_dir_to_check = ""; + } else { + $v_dir_to_check = dirname($p_entry['filename']); + } + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010) == 0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + } else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); + return PclZip::errorCode(); + } + + // ----- Look for using temporary file to unzip + if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])))) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } else { + // ----- Look for extract in memory + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === false) { + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + // ----- Look for post-extract callback + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } else { + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + // ----- Look for post-extract callback + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + // ----- Return + return $v_result; + } + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } else { + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === false) { + // TBC + } + } + // ----- Trace + } else { + // TBC : error : can not extract a folder in a string + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + // ----- Look for post-extract callback + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } else { + $p_header['mtime'] = time(); + } + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadCentralFileHeader(&$p_header) + { + $v_result = 1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) { + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + } else { + $p_header['filename'] = ''; + } + + // ----- Get extra + if ($p_header['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + } else { + $p_header['extra'] = ''; + } + + // ----- Get comment + if ($p_header['comment_len'] != 0) { + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + } else { + $p_header['comment'] = ''; + } + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } else { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + public function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result=1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadEndCentralDir(&$p_central_dir) + { + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size-22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) { + $v_maximum_size = $v_size; + } + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = (($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'The central dir is not at the end of the archive. Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } else { + $p_central_dir['comment'] = ''; + } + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + // ----- Look if the filename is in the list + for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { + // ----- Look for a directory + if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { + // ----- Look if the directory is in the filename path + if ((strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } elseif ((($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + } elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + // ----- Look for a filename + $v_found = true; + } + } + } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + // ----- Look for extract by preg rule + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + // ----- Look for extract by index rule + // ----- Look if the index is in the list + for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { + if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) { + unset($v_header_list[$v_nb_extracted]); + } else { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $i<sizeof($v_header_list); $i++) { + // ----- Calculate the position of the header + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i=0; $i<sizeof($v_header_list); $i++) { + // ----- Create the file header + if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } elseif ($v_central_dir['entries'] != 0) { + // ----- Remove every files : reset the file + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + public function privDirCheck($p_dir, $p_is_dir = false) + { + $v_result = 1; + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) { + // ----- Look for parent directory + if ($p_parent_dir != "") { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privMerge(&$p_archive_to_add) + { + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) { + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) { + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDuplicate($p_archive_filename) + { + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) { + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('wb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privErrorLog($p_error_code = 0, $p_error_string = '') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDisableMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privSwapBackMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- +} +// End of class +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilPathReduction() +// Description : +// Parameters : +// Return Values : +// -------------------------------------------------------------------------------- +function PclZipUtilPathReduction($p_dir) +{ + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i=sizeof($v_list)-1; $i>=0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } elseif ($v_list[$i] == "..") { + $v_skip++; + } elseif ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/".$v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + } elseif ($i == (sizeof($v_list)-1)) { + // ----- Last '/' i.e. indicates a directory + $v_result = $v_list[$i]; + } else { + // ----- Double '/' inside the path + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } else { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../'.$v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilPathInclusion() +// Description : +// This function indicates if the path $p_path is under the $p_dir tree. Or, +// said in an other way, if the file or sub-dir $p_path is inside the dir +// $p_dir. +// The function indicates also if the path is exactly the same as the dir. +// This function supports path with duplicated '/' like '//', but does not +// support '.' or '..' statements. +// Parameters : +// Return Values : +// 0 if $p_path is not inside directory $p_dir +// 1 if $p_path is inside directory $p_dir +// 2 if $p_path is exactly the same as $p_dir +// -------------------------------------------------------------------------------- +function PclZipUtilPathInclusion($p_dir, $p_path) +{ + $v_result = 1; + + // ----- Look for path beginning by ./ + if (($p_dir == '.') || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), false).'/'.substr($p_dir, 1); + } + if (($p_path == '.') || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), false).'/'.substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ($v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) { + $j++; + } + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) { + $i++; + } + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } elseif ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilCopyBlock() +// Description : +// Parameters : +// $p_mode : read/write compression mode +// 0 : src & dest normal +// 1 : src gzip, dest normal +// 2 : src normal, dest gzip +// 3 : src & dest gzip +// Return Values : +// -------------------------------------------------------------------------------- +function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode = 0) +{ + $v_result = 1; + + if ($p_mode==0) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode==1) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode==2) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode==3) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilRename() +// Description : +// This function tries to do a simple rename() function. If it fails, it +// tries to copy the $p_src file in a new $p_dest file and then unlink the +// first one. +// Parameters : +// $p_src : Old filename +// $p_dest : New filename +// Return Values : +// 1 on success, 0 on failure. +// -------------------------------------------------------------------------------- +function PclZipUtilRename($p_src, $p_dest) +{ + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } elseif (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilOptionText() +// Description : +// Translate option value in text. Mainly for debug purpose. +// Parameters : +// $p_option : the option value. +// Return Values : +// The option text value. +// -------------------------------------------------------------------------------- +function PclZipUtilOptionText($p_option) +{ + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if ((($v_prefix == 'PCLZIP_OPT') || ($v_prefix == 'PCLZIP_CB_') || ($v_prefix == 'PCLZIP_ATT')) && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilTranslateWinPath() +// Description : +// Translate windows path by replacing '\' by '/' and optionally removing +// drive letter. +// Parameters : +// $p_path : path to translate. +// $p_remove_disk_letter : true | false +// Return Values : +// The path translated. +// -------------------------------------------------------------------------------- +function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter = true) +{ + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0, 1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; +} diff --git a/assets/excel/PHPExcel/Shared/PCLZip/readme.txt b/assets/excel/PHPExcel/Shared/PCLZip/readme.txt new file mode 100644 index 0000000..6ed8839 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/PCLZip/readme.txt @@ -0,0 +1,421 @@ +// -------------------------------------------------------------------------------- +// PclZip 2.8.2 - readme.txt +// -------------------------------------------------------------------------------- +// License GNU/LGPL - August 2009 +// Vincent Blavet - vincent@phpconcept.net +// http://www.phpconcept.net +// -------------------------------------------------------------------------------- +// $Id: readme.txt,v 1.60 2009/09/30 20:35:21 vblavet Exp $ +// -------------------------------------------------------------------------------- + + + +0 - Sommaire +============ + 1 - Introduction + 2 - What's new + 3 - Corrected bugs + 4 - Known bugs or limitations + 5 - License + 6 - Warning + 7 - Documentation + 8 - Author + 9 - Contribute + +1 - Introduction +================ + + PclZip is a library that allow you to manage a Zip archive. + + Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip + +2 - What's new +============== + + Version 2.8.2 : + - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with + extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string + can also be modified in the post-extract call back. + **Bugs correction : + - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly + - Remove use of eval() and do direct call to callback functions + - Correct support of 64bits systems (Thanks to WordPress team) + + Version 2.8.1 : + - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is + deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will + automatically replace it by PCLZIP_OPT_BY_PREG. + + Version 2.8 : + - Improve extraction of zip archive for large files by using temporary files + This feature is working like the one defined in r2.7. + Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF, + PCLZIP_OPT_TEMP_FILE_THRESHOLD + - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto + sense of temporary file use. + - Bug correction : Reduce filepath in returned file list to remove ennoying + './/' preambule in file path. + + Version 2.7 : + - Improve creation of zip archive for large files : + PclZip will now autosense the configured memory and use temporary files + when large file is suspected. + This feature can also ne triggered by manual options in create() and add() + methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files, + 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, + 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size + threshold to use temporary files. + Using "temporary files" rather than "memory" might take more time, but + might give the ability to zip very large files : + Tested on my win laptop with a 88Mo file : + Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo) + Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo) + - Replace use of mktime() by time() to limit the E_STRICT error messages. + - Bug correction : When adding files with full windows path (drive letter) + PclZip is now working. Before, if the drive letter is not the default + path, PclZip was not able to add the file. + + Version 2.6 : + - Code optimisation + - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to + add a comment for a specific file. (Don't really know if this is usefull) + - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string + as a file. + - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with + a file. + - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted + with current time + - Add CRC value in the informations returned back for each file after an + action. + - Add missing closedir() statement. + - When adding a folder, and removing the path of this folder, files were + incorrectly added with a '/' at the beginning. Which means files are + related to root in unix systems. Corrected. + - Add conditional if before constant definition. This will allow users + to redefine constants without changing the file, and then improve + upgrade of pclzip code for new versions. + + Version 2.5 : + - Introduce the ability to add file/folder with individual properties (file descriptor). + This gives for example the ability to change the filename of a zipped file. + . Able to add files individually + . Able to change full name + . Able to change short name + . Compatible with global options + - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME + - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE + - Add a security control feature. PclZip can extract any file in any folder + of a system. People may use this to upload a zip file and try to override + a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the + ability to forgive any directory transversal behavior. + - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path + - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION + - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend + by current path (getcwd()) + + Version 2.4 : + - Code improvment : try to speed up the code by removing unusefull call to pack() + - Correct bug in delete() : delete() should be called with no argument. This was not + the case in 2.3. This is corrected in 2.4. + - Correct a bug in path_inclusion function. When the path has several '../../', the + result was bad. + - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will + disable it while working and det it back to its original value. + This resolve a lots of bad formated archive errors. + - Bug correction : PclZip now correctly unzip file in some specific situation, + when compressed content has same size as uncompressed content. + - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', + directories are not any more created. + - Code improvment : correct unclosed opendir(), better handling of . and .. in + loops. + + + Version 2.3 : + - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not + give the same result in PHP4 and PHP5 .... + + Version 2.2 : + - Try development of PCLZIP_OPT_CRYPT ..... + However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, + the result (greater than a long) is not supported by PHP. Even the use of bcmath + functions does not help. I did not find yet a solution ...; + - Add missing '/' at end of directory entries + - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or + error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. + - Corrected : Bad "version need to extract" field in local file header + - Add private method privCheckFileHeaders() in order to check local and central + file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives + the ability to have a local file header without size, compressed size and crc filled. + - Add a generic status 'error' for file status + - Add control of compression type. PclZip only support deflate compression method. + Before v2.2, PclZip does not check the compression method used in an archive while + extracting. With v2.2 PclZip returns a new error status for a file using an unsupported + compression method. New status is "unsupported_compression". New error code is + PCLZIP_ERR_UNSUPPORTED_COMPRESSION. + - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files + when errors like 'a folder with same name exists' or 'a newer file exists' or + 'a write protected file' exists, rather than set a status for the concerning file + and resume the extract of the zip. + - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the + replacement of the file, even if a newer version of the file exists. + Note that today if a file with the same name already exists but is older it will be + replaced by the extracted one. + - Improve PclZipUtilOption() + - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central + directory structure is the last data in the archive. Crypt encryption/decryption of + zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. + + Version 2.1 : + - Add the ability to abort the extraction by using a user callback function. + The user can now return the value '2' in its callback which indicates to stop the + extraction. For a pre call-back extract is stopped before the extration of the current + file. For a post call back, the extraction is stopped after. + - Add the ability to extract a file (or several files) directly in the standard output. + This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). + - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, + PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments + in the zip archive. + - When merging two archives, the comments are not any more lost, but merged, with a + blank space separator. + - Corrected bug : Files are not deleted when all files are asked to be deleted. + - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. + + + Version 2.0 : + ***** Warning : Some new features may break the backward compatibility for your scripts. + Please carefully read the readme file. + - Add the ability to delete by Index, name and regular expression. This feature is + performed by the method delete(), which uses the optional parameters + PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. + - Add the ability to extract by regular expression. To extract by regexp you must use the method + extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG + (depending if you want to use ereg() or preg_match() syntax) followed by the + regular expression pattern. + - Add the ability to extract by index, directly with the extract() method. This is a + code improvment of the extractByIndex() method. + - Add the ability to extract by name. To extract by name you must use the method + extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to + extract or an array of filenames to extract. To extract all a folder, use the folder + name rather than the filename with a '/' at the end. + - Add the ability to add files without compression. This is done with a new attribute + which is PCLZIP_OPT_NO_COMPRESSION. + - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly + in a string without using any file (or temporary file). + - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. + The default separator is now a comma (,) and not any more a blank space. + THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with + your script. + - Improve algorythm performance by removing the use of temporary files when adding or + extracting files in an archive. + - Add (correct) detection of empty filename zipping. This can occurs when the removed + path is the same + as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. + - Add better support for windows paths (thanks for help from manus@manusfreedom.com). + - Corrected bug : When the archive file already exists with size=0, the add() method + fails. Corrected in 2.0. + - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. + - Control the order of index ranges in extract by index feature. + - Change the internal management of folders (better handling of internal flag). + + + Version 1.3 : + - Removing the double include check. This is now done by include_once() and require_once() + PHP directives. + - Changing the error handling mecanism : Remove the use of an external error library. + The former PclError...() functions are replaced by internal equivalent methods. + By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. + Introducing the use of constants for error codes rather than integer values. This will help + in futur improvment. + Introduction of error handling functions like errorCode(), errorName() and errorInfo(). + - Remove the deprecated use of calling function with arguments passed by reference. + - Add the calling of extract(), extractByIndex(), create() and add() functions + with variable options rather than fixed arguments. + - Add the ability to remove all the file path while extracting or adding, + without any need to specify the path to remove. + This is available for extract(), extractByIndex(), create() and add() functionS by using + the new variable options parameters : + - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. + - Ability to change the mode of a file after the extraction (chmod()). + This is available for extract() and extractByIndex() functionS by using + the new variable options parameters. + - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. + - Ability to definition call-back options. These call-back will be called during the adding, + or the extracting of file (extract(), extractByIndex(), create() and add() functions) : + - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user + can trigerred the change the filename of the extracted file. The user can triggered the + skip of the extraction. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. + Nothing can be triggered from that point. + - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user + can trigerred the change the stored filename of the added file. The user can triggered the + skip of the add. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_ADD : will be called after each add of a file. + Nothing can be triggered from that point. + - Two status are added in the file list returned as function result : skipped & filename_too_long + 'skipped' is used when a call-back function ask for skipping the file. + 'filename_too_long' is used while adding a file with a too long filename to archive (the file is + not added) + - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into + a directory. + - Add a check of the presence of the archive file before some actions (like list, ...) + - Add the initialisation of field "index" in header array. This means that by + default index will be -1 when not explicitly set by the methods. + + Version 1.2 : + - Adding a duplicate function. + - Adding a merge function. The merge function is a "quick merge" function, + it just append the content of an archive at the end of the first one. There + is no check for duplicate files or more recent files. + - Improve the search of the central directory end. + + Version 1.1.2 : + + - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license + (see License section). + - Adding the optional support of a static temporary directory. You will need to configure + the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. + - Improving the rename() function. In some cases rename() does not work (different + Filesystems), so it will be replaced by a copy() + unlink() functions. + + Version 1.1.1 : + + - Maintenance release, no new feature. + + Version 1.1 : + + - New method Add() : adding files in the archive + - New method ExtractByIndex() : partial extract of the archive, files are identified by + their index in the archive + - New method DeleteByIndex() : delete some files/folder entries from the archive, + files are identified by their index in the archive. + - Adding a test of the zlib extension presence. If not present abort the script. + + Version 1.0.1 : + + - No new feature + + +3 - Corrected bugs +================== + + Corrected in Version 2.0 : + - Corrected : During an extraction, if a call-back fucntion is used and try to skip + a file, all the extraction process is stopped. + + Corrected in Version 1.3 : + - Corrected : Support of static synopsis for method extract() is broken. + - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). + - Corrected : When an extract is done with a remove_path parameter, the entry for + the directory with exactly the same path is not skipped/filtered. + - Corrected : extractByIndex() and deleteByIndex() were not managing index in the + right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This + is due to a sort of the index resulting table that puts 11 before 3-5 (sort on + string and not interger). The sort is temporarilly removed, this means that + you must provide a sorted list of index ranges. + + Corrected in Version 1.2 : + + - Nothing. + + Corrected in Version 1.1.2 : + + - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. + + Corrected in Version 1.1.1 : + + - Corrected : When archived file is not compressed (0% compression), the + extract method fails. + + Corrected in Version 1.1 : + + - Corrected : Adding a complete tree of folder may result in a bad archive + creation. + + Corrected in Version 1.0.1 : + + - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + + +4 - Known bugs or limitations +============================= + + Please publish bugs reports in SourceForge : + http://sourceforge.net/tracker/?group_id=40254&atid=427564 + + In Version 2.x : + - PclZip does only support file uncompressed or compressed with deflate (compression method 8) + - PclZip does not support password protected zip archive + - Some concern were seen when changing mtime of a file while archiving. + Seems to be linked to Daylight Saving Time (PclTest_changing_mtime). + + In Version 1.2 : + + - merge() methods does not check for duplicate files or last date of modifications. + + In Version 1.1 : + + - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. + - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to + add a file in a PclZip created archive. (Corrected in v.1.2) + + In Version 1.0.1 : + + - Adding a complete tree of folder may result in a bad archive + creation. (Corrected in V.1.1). + - Path given to methods must be in the unix format (/) and not the Windows format (\). + Workaround : Use only / directory separators. + - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz + added suffix. Files with these names may already exist and may be overwritten. + Workaround : none. + - PclZip does not check if the zlib extension is present. If it is absent, the zip + file is not created and the lib abort without warning. + Workaround : enable the zlib extension on the php install + + In Version 1.0 : + + - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + (Corrected in v.1.0.1) + - Limitation : Multi-disk zip archive are not supported. + + +5 - License +=========== + + Since version 1.1.2, PclZip Library is released under GNU/LGPL license. + This library is free, so you can use it at no cost. + + HOWEVER, if you release a script, an application, a library or any kind of + code using PclZip library (or a part of it), YOU MUST : + - Indicate in the documentation (or a readme file), that your work + uses PclZip Library, and make a reference to the author and the web site + http://www.phpconcept.net + - Gives the ability to the final user to update the PclZip libary. + + I will also appreciate that you send me a mail (vincent@phpconcept.net), just to + be aware that someone is using PclZip. + + For more information about GNU/LGPL license : http://www.gnu.org + +6 - Warning +================= + + This library and the associated files are non commercial, non professional work. + It should not have unexpected results. However if any damage is caused by this software + the author can not be responsible. + The use of this software is at the risk of the user. + +7 - Documentation +================= + PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php + A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/ + +8 - Author +========== + + This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. + +9 - Contribute +============== + If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. + If you can help in financing PhpConcept hosting service, please go to + http://www.phpconcept.net/soutien.php diff --git a/assets/excel/PHPExcel/Shared/PasswordHasher.php b/assets/excel/PHPExcel/Shared/PasswordHasher.php new file mode 100644 index 0000000..946742b --- /dev/null +++ b/assets/excel/PHPExcel/Shared/PasswordHasher.php @@ -0,0 +1,67 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Shared_PasswordHasher + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Shared_PasswordHasher +{ + /** + * Create a password hash from a given string. + * + * This method is based on the algorithm provided by + * Daniel Rentz of OpenOffice and the PEAR package + * Spreadsheet_Excel_Writer by Xavier Noguer <xnoguer@rezebra.com>. + * + * @param string $pPassword Password to hash + * @return string Hashed password + */ + public static function hashPassword($pPassword = '') + { + $password = 0x0000; + $charPos = 1; // char position + + // split the plain text password in its component characters + $chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY); + foreach ($chars as $char) { + $value = ord($char) << $charPos++; // shifted ASCII value + $rotated_bits = $value >> 15; // rotated bits beyond bit 15 + $value &= 0x7fff; // first 15 bits + $password ^= ($value | $rotated_bits); + } + + $password ^= strlen($pPassword); + $password ^= 0xCE4B; + + return(strtoupper(dechex($password))); + } +} diff --git a/assets/excel/PHPExcel/Shared/String.php b/assets/excel/PHPExcel/Shared/String.php new file mode 100644 index 0000000..fa1a64e --- /dev/null +++ b/assets/excel/PHPExcel/Shared/String.php @@ -0,0 +1,819 @@ +<?php + +/** + * PHPExcel_Shared_String + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_String +{ + /** Constants */ + /** Regular Expressions */ + // Fraction + const STRING_REGEXP_FRACTION = '(-?)(\d+)\s+(\d+\/\d+)'; + + + /** + * Control characters array + * + * @var string[] + */ + private static $controlCharacters = array(); + + /** + * SYLK Characters array + * + * $var array + */ + private static $SYLKCharacters = array(); + + /** + * Decimal separator + * + * @var string + */ + private static $decimalSeparator; + + /** + * Thousands separator + * + * @var string + */ + private static $thousandsSeparator; + + /** + * Currency code + * + * @var string + */ + private static $currencyCode; + + /** + * Is mbstring extension avalable? + * + * @var boolean + */ + private static $isMbstringEnabled; + + /** + * Is iconv extension avalable? + * + * @var boolean + */ + private static $isIconvEnabled; + + /** + * Build control characters array + */ + private static function buildControlCharacters() + { + for ($i = 0; $i <= 31; ++$i) { + if ($i != 9 && $i != 10 && $i != 13) { + $find = '_x' . sprintf('%04s', strtoupper(dechex($i))) . '_'; + $replace = chr($i); + self::$controlCharacters[$find] = $replace; + } + } + } + + /** + * Build SYLK characters array + */ + private static function buildSYLKCharacters() + { + self::$SYLKCharacters = array( + "\x1B 0" => chr(0), + "\x1B 1" => chr(1), + "\x1B 2" => chr(2), + "\x1B 3" => chr(3), + "\x1B 4" => chr(4), + "\x1B 5" => chr(5), + "\x1B 6" => chr(6), + "\x1B 7" => chr(7), + "\x1B 8" => chr(8), + "\x1B 9" => chr(9), + "\x1B :" => chr(10), + "\x1B ;" => chr(11), + "\x1B <" => chr(12), + "\x1B :" => chr(13), + "\x1B >" => chr(14), + "\x1B ?" => chr(15), + "\x1B!0" => chr(16), + "\x1B!1" => chr(17), + "\x1B!2" => chr(18), + "\x1B!3" => chr(19), + "\x1B!4" => chr(20), + "\x1B!5" => chr(21), + "\x1B!6" => chr(22), + "\x1B!7" => chr(23), + "\x1B!8" => chr(24), + "\x1B!9" => chr(25), + "\x1B!:" => chr(26), + "\x1B!;" => chr(27), + "\x1B!<" => chr(28), + "\x1B!=" => chr(29), + "\x1B!>" => chr(30), + "\x1B!?" => chr(31), + "\x1B'?" => chr(127), + "\x1B(0" => '€', // 128 in CP1252 + "\x1B(2" => '‚', // 130 in CP1252 + "\x1B(3" => 'ƒ', // 131 in CP1252 + "\x1B(4" => '„', // 132 in CP1252 + "\x1B(5" => '…', // 133 in CP1252 + "\x1B(6" => '†', // 134 in CP1252 + "\x1B(7" => '‡', // 135 in CP1252 + "\x1B(8" => 'ˆ', // 136 in CP1252 + "\x1B(9" => '‰', // 137 in CP1252 + "\x1B(:" => 'Š', // 138 in CP1252 + "\x1B(;" => '‹', // 139 in CP1252 + "\x1BNj" => 'Œ', // 140 in CP1252 + "\x1B(>" => 'Ž', // 142 in CP1252 + "\x1B)1" => '‘', // 145 in CP1252 + "\x1B)2" => '’', // 146 in CP1252 + "\x1B)3" => '“', // 147 in CP1252 + "\x1B)4" => '”', // 148 in CP1252 + "\x1B)5" => '•', // 149 in CP1252 + "\x1B)6" => '–', // 150 in CP1252 + "\x1B)7" => '—', // 151 in CP1252 + "\x1B)8" => '˜', // 152 in CP1252 + "\x1B)9" => '™', // 153 in CP1252 + "\x1B):" => 'š', // 154 in CP1252 + "\x1B);" => '›', // 155 in CP1252 + "\x1BNz" => 'œ', // 156 in CP1252 + "\x1B)>" => 'ž', // 158 in CP1252 + "\x1B)?" => 'Ÿ', // 159 in CP1252 + "\x1B*0" => ' ', // 160 in CP1252 + "\x1BN!" => '¡', // 161 in CP1252 + "\x1BN\"" => '¢', // 162 in CP1252 + "\x1BN#" => '£', // 163 in CP1252 + "\x1BN(" => '¤', // 164 in CP1252 + "\x1BN%" => '¥', // 165 in CP1252 + "\x1B*6" => '¦', // 166 in CP1252 + "\x1BN'" => '§', // 167 in CP1252 + "\x1BNH " => '¨', // 168 in CP1252 + "\x1BNS" => '©', // 169 in CP1252 + "\x1BNc" => 'ª', // 170 in CP1252 + "\x1BN+" => '«', // 171 in CP1252 + "\x1B*<" => '¬', // 172 in CP1252 + "\x1B*=" => '­', // 173 in CP1252 + "\x1BNR" => '®', // 174 in CP1252 + "\x1B*?" => '¯', // 175 in CP1252 + "\x1BN0" => '°', // 176 in CP1252 + "\x1BN1" => '±', // 177 in CP1252 + "\x1BN2" => '²', // 178 in CP1252 + "\x1BN3" => '³', // 179 in CP1252 + "\x1BNB " => '´', // 180 in CP1252 + "\x1BN5" => 'µ', // 181 in CP1252 + "\x1BN6" => '¶', // 182 in CP1252 + "\x1BN7" => '·', // 183 in CP1252 + "\x1B+8" => '¸', // 184 in CP1252 + "\x1BNQ" => '¹', // 185 in CP1252 + "\x1BNk" => 'º', // 186 in CP1252 + "\x1BN;" => '»', // 187 in CP1252 + "\x1BN<" => '¼', // 188 in CP1252 + "\x1BN=" => '½', // 189 in CP1252 + "\x1BN>" => '¾', // 190 in CP1252 + "\x1BN?" => '¿', // 191 in CP1252 + "\x1BNAA" => 'À', // 192 in CP1252 + "\x1BNBA" => 'Á', // 193 in CP1252 + "\x1BNCA" => 'Â', // 194 in CP1252 + "\x1BNDA" => 'Ã', // 195 in CP1252 + "\x1BNHA" => 'Ä', // 196 in CP1252 + "\x1BNJA" => 'Å', // 197 in CP1252 + "\x1BNa" => 'Æ', // 198 in CP1252 + "\x1BNKC" => 'Ç', // 199 in CP1252 + "\x1BNAE" => 'È', // 200 in CP1252 + "\x1BNBE" => 'É', // 201 in CP1252 + "\x1BNCE" => 'Ê', // 202 in CP1252 + "\x1BNHE" => 'Ë', // 203 in CP1252 + "\x1BNAI" => 'Ì', // 204 in CP1252 + "\x1BNBI" => 'Í', // 205 in CP1252 + "\x1BNCI" => 'Î', // 206 in CP1252 + "\x1BNHI" => 'Ï', // 207 in CP1252 + "\x1BNb" => 'Ð', // 208 in CP1252 + "\x1BNDN" => 'Ñ', // 209 in CP1252 + "\x1BNAO" => 'Ò', // 210 in CP1252 + "\x1BNBO" => 'Ó', // 211 in CP1252 + "\x1BNCO" => 'Ô', // 212 in CP1252 + "\x1BNDO" => 'Õ', // 213 in CP1252 + "\x1BNHO" => 'Ö', // 214 in CP1252 + "\x1B-7" => '×', // 215 in CP1252 + "\x1BNi" => 'Ø', // 216 in CP1252 + "\x1BNAU" => 'Ù', // 217 in CP1252 + "\x1BNBU" => 'Ú', // 218 in CP1252 + "\x1BNCU" => 'Û', // 219 in CP1252 + "\x1BNHU" => 'Ü', // 220 in CP1252 + "\x1B-=" => 'Ý', // 221 in CP1252 + "\x1BNl" => 'Þ', // 222 in CP1252 + "\x1BN{" => 'ß', // 223 in CP1252 + "\x1BNAa" => 'à', // 224 in CP1252 + "\x1BNBa" => 'á', // 225 in CP1252 + "\x1BNCa" => 'â', // 226 in CP1252 + "\x1BNDa" => 'ã', // 227 in CP1252 + "\x1BNHa" => 'ä', // 228 in CP1252 + "\x1BNJa" => 'å', // 229 in CP1252 + "\x1BNq" => 'æ', // 230 in CP1252 + "\x1BNKc" => 'ç', // 231 in CP1252 + "\x1BNAe" => 'è', // 232 in CP1252 + "\x1BNBe" => 'é', // 233 in CP1252 + "\x1BNCe" => 'ê', // 234 in CP1252 + "\x1BNHe" => 'ë', // 235 in CP1252 + "\x1BNAi" => 'ì', // 236 in CP1252 + "\x1BNBi" => 'í', // 237 in CP1252 + "\x1BNCi" => 'î', // 238 in CP1252 + "\x1BNHi" => 'ï', // 239 in CP1252 + "\x1BNs" => 'ð', // 240 in CP1252 + "\x1BNDn" => 'ñ', // 241 in CP1252 + "\x1BNAo" => 'ò', // 242 in CP1252 + "\x1BNBo" => 'ó', // 243 in CP1252 + "\x1BNCo" => 'ô', // 244 in CP1252 + "\x1BNDo" => 'õ', // 245 in CP1252 + "\x1BNHo" => 'ö', // 246 in CP1252 + "\x1B/7" => '÷', // 247 in CP1252 + "\x1BNy" => 'ø', // 248 in CP1252 + "\x1BNAu" => 'ù', // 249 in CP1252 + "\x1BNBu" => 'ú', // 250 in CP1252 + "\x1BNCu" => 'û', // 251 in CP1252 + "\x1BNHu" => 'ü', // 252 in CP1252 + "\x1B/=" => 'ý', // 253 in CP1252 + "\x1BN|" => 'þ', // 254 in CP1252 + "\x1BNHy" => 'ÿ', // 255 in CP1252 + ); + } + + /** + * Get whether mbstring extension is available + * + * @return boolean + */ + public static function getIsMbstringEnabled() + { + if (isset(self::$isMbstringEnabled)) { + return self::$isMbstringEnabled; + } + + self::$isMbstringEnabled = function_exists('mb_convert_encoding') ? + true : false; + + return self::$isMbstringEnabled; + } + + /** + * Get whether iconv extension is available + * + * @return boolean + */ + public static function getIsIconvEnabled() + { + if (isset(self::$isIconvEnabled)) { + return self::$isIconvEnabled; + } + + // Fail if iconv doesn't exist + if (!function_exists('iconv')) { + self::$isIconvEnabled = false; + return false; + } + + // Sometimes iconv is not working, and e.g. iconv('UTF-8', 'UTF-16LE', 'x') just returns false, + if (!@iconv('UTF-8', 'UTF-16LE', 'x')) { + self::$isIconvEnabled = false; + return false; + } + + // Sometimes iconv_substr('A', 0, 1, 'UTF-8') just returns false in PHP 5.2.0 + // we cannot use iconv in that case either (http://bugs.php.net/bug.php?id=37773) + if (!@iconv_substr('A', 0, 1, 'UTF-8')) { + self::$isIconvEnabled = false; + return false; + } + + // CUSTOM: IBM AIX iconv() does not work + if (defined('PHP_OS') && @stristr(PHP_OS, 'AIX') && defined('ICONV_IMPL') && (@strcasecmp(ICONV_IMPL, 'unknown') == 0) && defined('ICONV_VERSION') && (@strcasecmp(ICONV_VERSION, 'unknown') == 0)) { + self::$isIconvEnabled = false; + return false; + } + + // If we reach here no problems were detected with iconv + self::$isIconvEnabled = true; + return true; + } + + public static function buildCharacterSets() + { + if (empty(self::$controlCharacters)) { + self::buildControlCharacters(); + } + if (empty(self::$SYLKCharacters)) { + self::buildSYLKCharacters(); + } + } + + /** + * Convert from OpenXML escaped control character to PHP control character + * + * Excel 2007 team: + * ---------------- + * That's correct, control characters are stored directly in the shared-strings table. + * We do encode characters that cannot be represented in XML using the following escape sequence: + * _xHHHH_ where H represents a hexadecimal character in the character's value... + * So you could end up with something like _x0008_ in a string (either in a cell value (<v>) + * element or in the shared string <t> element. + * + * @param string $value Value to unescape + * @return string + */ + public static function ControlCharacterOOXML2PHP($value = '') + { + return str_replace(array_keys(self::$controlCharacters), array_values(self::$controlCharacters), $value); + } + + /** + * Convert from PHP control character to OpenXML escaped control character + * + * Excel 2007 team: + * ---------------- + * That's correct, control characters are stored directly in the shared-strings table. + * We do encode characters that cannot be represented in XML using the following escape sequence: + * _xHHHH_ where H represents a hexadecimal character in the character's value... + * So you could end up with something like _x0008_ in a string (either in a cell value (<v>) + * element or in the shared string <t> element. + * + * @param string $value Value to escape + * @return string + */ + public static function ControlCharacterPHP2OOXML($value = '') + { + return str_replace(array_values(self::$controlCharacters), array_keys(self::$controlCharacters), $value); + } + + /** + * Try to sanitize UTF8, stripping invalid byte sequences. Not perfect. Does not surrogate characters. + * + * @param string $value + * @return string + */ + public static function SanitizeUTF8($value) + { + if (self::getIsIconvEnabled()) { + $value = @iconv('UTF-8', 'UTF-8', $value); + return $value; + } + + if (self::getIsMbstringEnabled()) { + $value = mb_convert_encoding($value, 'UTF-8', 'UTF-8'); + return $value; + } + + // else, no conversion + return $value; + } + + /** + * Check if a string contains UTF8 data + * + * @param string $value + * @return boolean + */ + public static function IsUTF8($value = '') + { + return $value === '' || preg_match('/^./su', $value) === 1; + } + + /** + * Formats a numeric value as a string for output in various output writers forcing + * point as decimal separator in case locale is other than English. + * + * @param mixed $value + * @return string + */ + public static function FormatNumber($value) + { + if (is_float($value)) { + return str_replace(',', '.', $value); + } + return (string) $value; + } + + /** + * Converts a UTF-8 string into BIFF8 Unicode string data (8-bit string length) + * Writes the string using uncompressed notation, no rich text, no Asian phonetics + * If mbstring extension is not available, ASCII is assumed, and compressed notation is used + * although this will give wrong results for non-ASCII strings + * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 + * + * @param string $value UTF-8 encoded string + * @param mixed[] $arrcRuns Details of rich text runs in $value + * @return string + */ + public static function UTF8toBIFF8UnicodeShort($value, $arrcRuns = array()) + { + // character count + $ln = self::CountCharacters($value, 'UTF-8'); + // option flags + if (empty($arrcRuns)) { + $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ? + 0x0001 : 0x0000; + $data = pack('CC', $ln, $opt); + // characters + $data .= self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); + } else { + $data = pack('vC', $ln, 0x09); + $data .= pack('v', count($arrcRuns)); + // characters + $data .= self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); + foreach ($arrcRuns as $cRun) { + $data .= pack('v', $cRun['strlen']); + $data .= pack('v', $cRun['fontidx']); + } + } + return $data; + } + + /** + * Converts a UTF-8 string into BIFF8 Unicode string data (16-bit string length) + * Writes the string using uncompressed notation, no rich text, no Asian phonetics + * If mbstring extension is not available, ASCII is assumed, and compressed notation is used + * although this will give wrong results for non-ASCII strings + * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 + * + * @param string $value UTF-8 encoded string + * @return string + */ + public static function UTF8toBIFF8UnicodeLong($value) + { + // character count + $ln = self::CountCharacters($value, 'UTF-8'); + + // option flags + $opt = (self::getIsIconvEnabled() || self::getIsMbstringEnabled()) ? + 0x0001 : 0x0000; + + // characters + $chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); + + $data = pack('vC', $ln, $opt) . $chars; + return $data; + } + + /** + * Convert string from one encoding to another. First try mbstring, then iconv, finally strlen + * + * @param string $value + * @param string $to Encoding to convert to, e.g. 'UTF-8' + * @param string $from Encoding to convert from, e.g. 'UTF-16LE' + * @return string + */ + public static function ConvertEncoding($value, $to, $from) + { + if (self::getIsIconvEnabled()) { + return iconv($from, $to, $value); + } + + if (self::getIsMbstringEnabled()) { + return mb_convert_encoding($value, $to, $from); + } + + if ($from == 'UTF-16LE') { + return self::utf16_decode($value, false); + } elseif ($from == 'UTF-16BE') { + return self::utf16_decode($value); + } + // else, no conversion + return $value; + } + + /** + * Decode UTF-16 encoded strings. + * + * Can handle both BOM'ed data and un-BOM'ed data. + * Assumes Big-Endian byte order if no BOM is available. + * This function was taken from http://php.net/manual/en/function.utf8-decode.php + * and $bom_be parameter added. + * + * @param string $str UTF-16 encoded data to decode. + * @return string UTF-8 / ISO encoded data. + * @access public + * @version 0.2 / 2010-05-13 + * @author Rasmus Andersson {@link http://rasmusandersson.se/} + * @author vadik56 + */ + public static function utf16_decode($str, $bom_be = true) + { + if (strlen($str) < 2) { + return $str; + } + $c0 = ord($str{0}); + $c1 = ord($str{1}); + if ($c0 == 0xfe && $c1 == 0xff) { + $str = substr($str, 2); + } elseif ($c0 == 0xff && $c1 == 0xfe) { + $str = substr($str, 2); + $bom_be = false; + } + $len = strlen($str); + $newstr = ''; + for ($i=0; $i<$len; $i+=2) { + if ($bom_be) { + $val = ord($str{$i}) << 4; + $val += ord($str{$i+1}); + } else { + $val = ord($str{$i+1}) << 4; + $val += ord($str{$i}); + } + $newstr .= ($val == 0x228) ? "\n" : chr($val); + } + return $newstr; + } + + /** + * Get character count. First try mbstring, then iconv, finally strlen + * + * @param string $value + * @param string $enc Encoding + * @return int Character count + */ + public static function CountCharacters($value, $enc = 'UTF-8') + { + if (self::getIsMbstringEnabled()) { + return mb_strlen($value, $enc); + } + + if (self::getIsIconvEnabled()) { + return iconv_strlen($value, $enc); + } + + // else strlen + return strlen($value); + } + + /** + * Get a substring of a UTF-8 encoded string. First try mbstring, then iconv, finally strlen + * + * @param string $pValue UTF-8 encoded string + * @param int $pStart Start offset + * @param int $pLength Maximum number of characters in substring + * @return string + */ + public static function Substring($pValue = '', $pStart = 0, $pLength = 0) + { + if (self::getIsMbstringEnabled()) { + return mb_substr($pValue, $pStart, $pLength, 'UTF-8'); + } + + if (self::getIsIconvEnabled()) { + return iconv_substr($pValue, $pStart, $pLength, 'UTF-8'); + } + + // else substr + return substr($pValue, $pStart, $pLength); + } + + /** + * Convert a UTF-8 encoded string to upper case + * + * @param string $pValue UTF-8 encoded string + * @return string + */ + public static function StrToUpper($pValue = '') + { + if (function_exists('mb_convert_case')) { + return mb_convert_case($pValue, MB_CASE_UPPER, "UTF-8"); + } + return strtoupper($pValue); + } + + /** + * Convert a UTF-8 encoded string to lower case + * + * @param string $pValue UTF-8 encoded string + * @return string + */ + public static function StrToLower($pValue = '') + { + if (function_exists('mb_convert_case')) { + return mb_convert_case($pValue, MB_CASE_LOWER, "UTF-8"); + } + return strtolower($pValue); + } + + /** + * Convert a UTF-8 encoded string to title/proper case + * (uppercase every first character in each word, lower case all other characters) + * + * @param string $pValue UTF-8 encoded string + * @return string + */ + public static function StrToTitle($pValue = '') + { + if (function_exists('mb_convert_case')) { + return mb_convert_case($pValue, MB_CASE_TITLE, "UTF-8"); + } + return ucwords($pValue); + } + + public static function mb_is_upper($char) + { + return mb_strtolower($char, "UTF-8") != $char; + } + + public static function mb_str_split($string) + { + # Split at all position not after the start: ^ + # and not before the end: $ + return preg_split('/(?<!^)(?!$)/u', $string); + } + + /** + * Reverse the case of a string, so that all uppercase characters become lowercase + * and all lowercase characters become uppercase + * + * @param string $pValue UTF-8 encoded string + * @return string + */ + public static function StrCaseReverse($pValue = '') + { + if (self::getIsMbstringEnabled()) { + $characters = self::mb_str_split($pValue); + foreach ($characters as &$character) { + if (self::mb_is_upper($character)) { + $character = mb_strtolower($character, 'UTF-8'); + } else { + $character = mb_strtoupper($character, 'UTF-8'); + } + } + return implode('', $characters); + } + return strtolower($pValue) ^ strtoupper($pValue) ^ $pValue; + } + + /** + * Identify whether a string contains a fractional numeric value, + * and convert it to a numeric if it is + * + * @param string &$operand string value to test + * @return boolean + */ + public static function convertToNumberIfFraction(&$operand) + { + if (preg_match('/^'.self::STRING_REGEXP_FRACTION.'$/i', $operand, $match)) { + $sign = ($match[1] == '-') ? '-' : '+'; + $fractionFormula = '='.$sign.$match[2].$sign.$match[3]; + $operand = PHPExcel_Calculation::getInstance()->_calculateFormulaValue($fractionFormula); + return true; + } + return false; + } // function convertToNumberIfFraction() + + /** + * Get the decimal separator. If it has not yet been set explicitly, try to obtain number + * formatting information from locale. + * + * @return string + */ + public static function getDecimalSeparator() + { + if (!isset(self::$decimalSeparator)) { + $localeconv = localeconv(); + self::$decimalSeparator = ($localeconv['decimal_point'] != '') + ? $localeconv['decimal_point'] : $localeconv['mon_decimal_point']; + + if (self::$decimalSeparator == '') { + // Default to . + self::$decimalSeparator = '.'; + } + } + return self::$decimalSeparator; + } + + /** + * Set the decimal separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString() + * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF + * + * @param string $pValue Character for decimal separator + */ + public static function setDecimalSeparator($pValue = '.') + { + self::$decimalSeparator = $pValue; + } + + /** + * Get the thousands separator. If it has not yet been set explicitly, try to obtain number + * formatting information from locale. + * + * @return string + */ + public static function getThousandsSeparator() + { + if (!isset(self::$thousandsSeparator)) { + $localeconv = localeconv(); + self::$thousandsSeparator = ($localeconv['thousands_sep'] != '') + ? $localeconv['thousands_sep'] : $localeconv['mon_thousands_sep']; + + if (self::$thousandsSeparator == '') { + // Default to . + self::$thousandsSeparator = ','; + } + } + return self::$thousandsSeparator; + } + + /** + * Set the thousands separator. Only used by PHPExcel_Style_NumberFormat::toFormattedString() + * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF + * + * @param string $pValue Character for thousands separator + */ + public static function setThousandsSeparator($pValue = ',') + { + self::$thousandsSeparator = $pValue; + } + + /** + * Get the currency code. If it has not yet been set explicitly, try to obtain the + * symbol information from locale. + * + * @return string + */ + public static function getCurrencyCode() + { + if (!isset(self::$currencyCode)) { + $localeconv = localeconv(); + self::$currencyCode = ($localeconv['currency_symbol'] != '') + ? $localeconv['currency_symbol'] : $localeconv['int_curr_symbol']; + + if (self::$currencyCode == '') { + // Default to $ + self::$currencyCode = '$'; + } + } + return self::$currencyCode; + } + + /** + * Set the currency code. Only used by PHPExcel_Style_NumberFormat::toFormattedString() + * to format output by PHPExcel_Writer_HTML and PHPExcel_Writer_PDF + * + * @param string $pValue Character for currency code + */ + public static function setCurrencyCode($pValue = '$') + { + self::$currencyCode = $pValue; + } + + /** + * Convert SYLK encoded string to UTF-8 + * + * @param string $pValue + * @return string UTF-8 encoded string + */ + public static function SYLKtoUTF8($pValue = '') + { + // If there is no escape character in the string there is nothing to do + if (strpos($pValue, '') === false) { + return $pValue; + } + + foreach (self::$SYLKCharacters as $k => $v) { + $pValue = str_replace($k, $v, $pValue); + } + + return $pValue; + } + + /** + * Retrieve any leading numeric part of a string, or return the full string if no leading numeric + * (handles basic integer or float, but not exponent or non decimal) + * + * @param string $value + * @return mixed string or only the leading numeric part of the string + */ + public static function testStringAsNumeric($value) + { + if (is_numeric($value)) { + return $value; + } + $v = floatval($value); + return (is_numeric(substr($value, 0, strlen($v)))) ? $v : $value; + } +} diff --git a/assets/excel/PHPExcel/Shared/TimeZone.php b/assets/excel/PHPExcel/Shared/TimeZone.php new file mode 100644 index 0000000..73373e0 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/TimeZone.php @@ -0,0 +1,144 @@ +<?php + +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Shared_TimeZone + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Shared_TimeZone +{ + /* + * Default Timezone used for date/time conversions + * + * @private + * @var string + */ + protected static $timezone = 'UTC'; + + /** + * Validate a Timezone name + * + * @param string $timezone Time zone (e.g. 'Europe/London') + * @return boolean Success or failure + */ + public static function _validateTimeZone($timezone) + { + if (in_array($timezone, DateTimeZone::listIdentifiers())) { + return true; + } + return false; + } + + /** + * Set the Default Timezone used for date/time conversions + * + * @param string $timezone Time zone (e.g. 'Europe/London') + * @return boolean Success or failure + */ + public static function setTimeZone($timezone) + { + if (self::_validateTimezone($timezone)) { + self::$timezone = $timezone; + return true; + } + return false; + } + + + /** + * Return the Default Timezone used for date/time conversions + * + * @return string Timezone (e.g. 'Europe/London') + */ + public static function getTimeZone() + { + return self::$timezone; + } + + + /** + * Return the Timezone transition for the specified timezone and timestamp + * + * @param DateTimeZone $objTimezone The timezone for finding the transitions + * @param integer $timestamp PHP date/time value for finding the current transition + * @return array The current transition details + */ + private static function getTimezoneTransitions($objTimezone, $timestamp) + { + $allTransitions = $objTimezone->getTransitions(); + $transitions = array(); + foreach ($allTransitions as $key => $transition) { + if ($transition['ts'] > $timestamp) { + $transitions[] = ($key > 0) ? $allTransitions[$key - 1] : $transition; + break; + } + if (empty($transitions)) { + $transitions[] = end($allTransitions); + } + } + + return $transitions; + } + + /** + * Return the Timezone offset used for date/time conversions to/from UST + * This requires both the timezone and the calculated date/time to allow for local DST + * + * @param string $timezone The timezone for finding the adjustment to UST + * @param integer $timestamp PHP date/time value + * @return integer Number of seconds for timezone adjustment + * @throws PHPExcel_Exception + */ + public static function getTimeZoneAdjustment($timezone, $timestamp) + { + if ($timezone !== null) { + if (!self::_validateTimezone($timezone)) { + throw new PHPExcel_Exception("Invalid timezone " . $timezone); + } + } else { + $timezone = self::$timezone; + } + + if ($timezone == 'UST') { + return 0; + } + + $objTimezone = new DateTimeZone($timezone); + if (version_compare(PHP_VERSION, '5.3.0') >= 0) { + $transitions = $objTimezone->getTransitions($timestamp, $timestamp); + } else { + $transitions = self::getTimezoneTransitions($objTimezone, $timestamp); + } + + return (count($transitions) > 0) ? $transitions[0]['offset'] : 0; + } +} diff --git a/assets/excel/PHPExcel/Shared/XMLWriter.php b/assets/excel/PHPExcel/Shared/XMLWriter.php new file mode 100644 index 0000000..1dc119b --- /dev/null +++ b/assets/excel/PHPExcel/Shared/XMLWriter.php @@ -0,0 +1,124 @@ +<?php + +if (!defined('DATE_W3C')) { + define('DATE_W3C', 'Y-m-d\TH:i:sP'); +} + +if (!defined('DEBUGMODE_ENABLED')) { + define('DEBUGMODE_ENABLED', false); +} + +/** + * PHPExcel_Shared_XMLWriter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_XMLWriter extends XMLWriter +{ + /** Temporary storage method */ + const STORAGE_MEMORY = 1; + const STORAGE_DISK = 2; + + /** + * Temporary filename + * + * @var string + */ + private $tempFileName = ''; + + /** + * Create a new PHPExcel_Shared_XMLWriter instance + * + * @param int $pTemporaryStorage Temporary storage location + * @param string $pTemporaryStorageFolder Temporary storage folder + */ + public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = null) + { + // Open temporary storage + if ($pTemporaryStorage == self::STORAGE_MEMORY) { + $this->openMemory(); + } else { + // Create temporary filename + if ($pTemporaryStorageFolder === null) { + $pTemporaryStorageFolder = PHPExcel_Shared_File::sys_get_temp_dir(); + } + $this->tempFileName = @tempnam($pTemporaryStorageFolder, 'xml'); + + // Open storage + if ($this->openUri($this->tempFileName) === false) { + // Fallback to memory... + $this->openMemory(); + } + } + + // Set default values + if (DEBUGMODE_ENABLED) { + $this->setIndent(true); + } + } + + /** + * Destructor + */ + public function __destruct() + { + // Unlink temporary files + if ($this->tempFileName != '') { + @unlink($this->tempFileName); + } + } + + /** + * Get written data + * + * @return $data + */ + public function getData() + { + if ($this->tempFileName == '') { + return $this->outputMemory(true); + } else { + $this->flush(); + return file_get_contents($this->tempFileName); + } + } + + /** + * Fallback method for writeRaw, introduced in PHP 5.2 + * + * @param string $text + * @return string + */ + public function writeRawData($text) + { + if (is_array($text)) { + $text = implode("\n", $text); + } + + if (method_exists($this, 'writeRaw')) { + return $this->writeRaw(htmlspecialchars($text)); + } + + return $this->text($text); + } +} diff --git a/assets/excel/PHPExcel/Shared/ZipArchive.php b/assets/excel/PHPExcel/Shared/ZipArchive.php new file mode 100644 index 0000000..9eac8ca --- /dev/null +++ b/assets/excel/PHPExcel/Shared/ZipArchive.php @@ -0,0 +1,163 @@ +<?php + +if (!defined('PCLZIP_TEMPORARY_DIR')) { + define('PCLZIP_TEMPORARY_DIR', PHPExcel_Shared_File::sys_get_temp_dir() . DIRECTORY_SEPARATOR); +} +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/PCLZip/pclzip.lib.php'; + +/** + * PHPExcel_Shared_ZipArchive + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_ZipArchive + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_ZipArchive +{ + + /** constants */ + const OVERWRITE = 'OVERWRITE'; + const CREATE = 'CREATE'; + + + /** + * Temporary storage directory + * + * @var string + */ + private $tempDir; + + /** + * Zip Archive Stream Handle + * + * @var string + */ + private $zip; + + + /** + * Open a new zip archive + * + * @param string $fileName Filename for the zip archive + * @return boolean + */ + public function open($fileName) + { + $this->tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); + $this->zip = new PclZip($fileName); + + return true; + } + + + /** + * Close this zip archive + * + */ + public function close() + { + } + + + /** + * Add a new file to the zip archive from a string of raw data. + * + * @param string $localname Directory/Name of the file to add to the zip archive + * @param string $contents String of data to add to the zip archive + */ + public function addFromString($localname, $contents) + { + $filenameParts = pathinfo($localname); + + $handle = fopen($this->tempDir.'/'.$filenameParts["basename"], "wb"); + fwrite($handle, $contents); + fclose($handle); + + $res = $this->zip->add($this->tempDir.'/'.$filenameParts["basename"], PCLZIP_OPT_REMOVE_PATH, $this->tempDir, PCLZIP_OPT_ADD_PATH, $filenameParts["dirname"]); + if ($res == 0) { + throw new PHPExcel_Writer_Exception("Error zipping files : " . $this->zip->errorInfo(true)); + } + + unlink($this->tempDir.'/'.$filenameParts["basename"]); + } + + /** + * Find if given fileName exist in archive (Emulate ZipArchive locateName()) + * + * @param string $fileName Filename for the file in zip archive + * @return boolean + */ + public function locateName($fileName) + { + $fileName = strtolower($fileName); + + $list = $this->zip->listContent(); + $listCount = count($list); + $index = -1; + for ($i = 0; $i < $listCount; ++$i) { + if (strtolower($list[$i]["filename"]) == $fileName || + strtolower($list[$i]["stored_filename"]) == $fileName) { + $index = $i; + break; + } + } + return ($index > -1) ? $index : false; + } + + /** + * Extract file from archive by given fileName (Emulate ZipArchive getFromName()) + * + * @param string $fileName Filename for the file in zip archive + * @return string $contents File string contents + */ + public function getFromName($fileName) + { + $index = $this->locateName($fileName); + + if ($index !== false) { + $extracted = $this->getFromIndex($index); + } else { + $fileName = substr($fileName, 1); + $index = $this->locateName($fileName); + if ($index === false) { + return false; + } + $extracted = $this->zip->getFromIndex($index); + } + + $contents = $extracted; + if ((is_array($extracted)) && ($extracted != 0)) { + $contents = $extracted[0]["content"]; + } + + return $contents; + } + + public function getFromIndex($index) { + $extracted = $this->zip->extractByIndex($index, PCLZIP_OPT_EXTRACT_AS_STRING); + $contents = ''; + if ((is_array($extracted)) && ($extracted != 0)) { + $contents = $extracted[0]["content"]; + } + + return $contents; + } +} diff --git a/assets/excel/PHPExcel/Shared/ZipStreamWrapper.php b/assets/excel/PHPExcel/Shared/ZipStreamWrapper.php new file mode 100644 index 0000000..2e0324c --- /dev/null +++ b/assets/excel/PHPExcel/Shared/ZipStreamWrapper.php @@ -0,0 +1,200 @@ +<?php + +/** + * PHPExcel_Shared_ZipStreamWrapper + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Shared_ZipStreamWrapper +{ + /** + * Internal ZipAcrhive + * + * @var ZipArchive + */ + private $archive; + + /** + * Filename in ZipAcrhive + * + * @var string + */ + private $fileNameInArchive = ''; + + /** + * Position in file + * + * @var int + */ + private $position = 0; + + /** + * Data + * + * @var mixed + */ + private $data = ''; + + /** + * Register wrapper + */ + public static function register() + { + @stream_wrapper_unregister('zip'); + @stream_wrapper_register('zip', __CLASS__); + } + + /** + * Implements support for fopen(). + * + * @param string $path resource name including scheme, e.g. + * @param string $mode only "r" is supported + * @param int $options mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH + * @param string &$openedPath absolute path of the opened stream (out parameter) + * @return bool true on success + */ + public function stream_open($path, $mode, $options, &$opened_path) + { + // Check for mode + if ($mode{0} != 'r') { + throw new PHPExcel_Reader_Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.'); + } + + $pos = strrpos($path, '#'); + $url['host'] = substr($path, 6, $pos - 6); // 6: strlen('zip://') + $url['fragment'] = substr($path, $pos + 1); + + // Open archive + $this->archive = new ZipArchive(); + $this->archive->open($url['host']); + + $this->fileNameInArchive = $url['fragment']; + $this->position = 0; + $this->data = $this->archive->getFromName($this->fileNameInArchive); + + return true; + } + + /** + * Implements support for fstat(). + * + * @return boolean + */ + public function statName() + { + return $this->fileNameInArchive; + } + + /** + * Implements support for fstat(). + * + * @return boolean + */ + public function url_stat() + { + return $this->statName($this->fileNameInArchive); + } + + /** + * Implements support for fstat(). + * + * @return boolean + */ + public function stream_stat() + { + return $this->archive->statName($this->fileNameInArchive); + } + + /** + * Implements support for fread(), fgets() etc. + * + * @param int $count maximum number of bytes to read + * @return string + */ + public function stream_read($count) + { + $ret = substr($this->data, $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + /** + * Returns the position of the file pointer, i.e. its offset into the file + * stream. Implements support for ftell(). + * + * @return int + */ + public function stream_tell() + { + return $this->position; + } + + /** + * EOF stream + * + * @return bool + */ + public function stream_eof() + { + return $this->position >= strlen($this->data); + } + + /** + * Seek stream + * + * @param int $offset byte offset + * @param int $whence SEEK_SET, SEEK_CUR or SEEK_END + * @return bool + */ + public function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($this->data) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + case SEEK_END: + if (strlen($this->data) + $offset >= 0) { + $this->position = strlen($this->data) + $offset; + return true; + } else { + return false; + } + break; + default: + return false; + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/bestFitClass.php b/assets/excel/PHPExcel/Shared/trend/bestFitClass.php new file mode 100644 index 0000000..2de029f --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/bestFitClass.php @@ -0,0 +1,425 @@ +<?php + +/** + * PHPExcel_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Best_Fit +{ + /** + * Indicator flag for a calculation error + * + * @var boolean + **/ + protected $error = false; + + /** + * Algorithm type to use for best-fit + * + * @var string + **/ + protected $bestFitType = 'undetermined'; + + /** + * Number of entries in the sets of x- and y-value arrays + * + * @var int + **/ + protected $valueCount = 0; + + /** + * X-value dataseries of values + * + * @var float[] + **/ + protected $xValues = array(); + + /** + * Y-value dataseries of values + * + * @var float[] + **/ + protected $yValues = array(); + + /** + * Flag indicating whether values should be adjusted to Y=0 + * + * @var boolean + **/ + protected $adjustToZero = false; + + /** + * Y-value series of best-fit values + * + * @var float[] + **/ + protected $yBestFitValues = array(); + + protected $goodnessOfFit = 1; + + protected $stdevOfResiduals = 0; + + protected $covariance = 0; + + protected $correlation = 0; + + protected $SSRegression = 0; + + protected $SSResiduals = 0; + + protected $DFResiduals = 0; + + protected $f = 0; + + protected $slope = 0; + + protected $slopeSE = 0; + + protected $intersect = 0; + + protected $intersectSE = 0; + + protected $xOffset = 0; + + protected $yOffset = 0; + + + public function getError() + { + return $this->error; + } + + + public function getBestFitType() + { + return $this->bestFitType; + } + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + */ + public function getValueOfYForX($xValue) + { + return false; + } + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + */ + public function getValueOfXForY($yValue) + { + return false; + } + + /** + * Return the original set of X-Values + * + * @return float[] X-Values + */ + public function getXValues() + { + return $this->xValues; + } + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + */ + public function getEquation($dp = 0) + { + return false; + } + + /** + * Return the Slope of the line + * + * @param int $dp Number of places of decimal precision to display + * @return string + */ + public function getSlope($dp = 0) + { + if ($dp != 0) { + return round($this->slope, $dp); + } + return $this->slope; + } + + /** + * Return the standard error of the Slope + * + * @param int $dp Number of places of decimal precision to display + * @return string + */ + public function getSlopeSE($dp = 0) + { + if ($dp != 0) { + return round($this->slopeSE, $dp); + } + return $this->slopeSE; + } + + /** + * Return the Value of X where it intersects Y = 0 + * + * @param int $dp Number of places of decimal precision to display + * @return string + */ + public function getIntersect($dp = 0) + { + if ($dp != 0) { + return round($this->intersect, $dp); + } + return $this->intersect; + } + + /** + * Return the standard error of the Intersect + * + * @param int $dp Number of places of decimal precision to display + * @return string + */ + public function getIntersectSE($dp = 0) + { + if ($dp != 0) { + return round($this->intersectSE, $dp); + } + return $this->intersectSE; + } + + /** + * Return the goodness of fit for this regression + * + * @param int $dp Number of places of decimal precision to return + * @return float + */ + public function getGoodnessOfFit($dp = 0) + { + if ($dp != 0) { + return round($this->goodnessOfFit, $dp); + } + return $this->goodnessOfFit; + } + + public function getGoodnessOfFitPercent($dp = 0) + { + if ($dp != 0) { + return round($this->goodnessOfFit * 100, $dp); + } + return $this->goodnessOfFit * 100; + } + + /** + * Return the standard deviation of the residuals for this regression + * + * @param int $dp Number of places of decimal precision to return + * @return float + */ + public function getStdevOfResiduals($dp = 0) + { + if ($dp != 0) { + return round($this->stdevOfResiduals, $dp); + } + return $this->stdevOfResiduals; + } + + public function getSSRegression($dp = 0) + { + if ($dp != 0) { + return round($this->SSRegression, $dp); + } + return $this->SSRegression; + } + + public function getSSResiduals($dp = 0) + { + if ($dp != 0) { + return round($this->SSResiduals, $dp); + } + return $this->SSResiduals; + } + + public function getDFResiduals($dp = 0) + { + if ($dp != 0) { + return round($this->DFResiduals, $dp); + } + return $this->DFResiduals; + } + + public function getF($dp = 0) + { + if ($dp != 0) { + return round($this->f, $dp); + } + return $this->f; + } + + public function getCovariance($dp = 0) + { + if ($dp != 0) { + return round($this->covariance, $dp); + } + return $this->covariance; + } + + public function getCorrelation($dp = 0) + { + if ($dp != 0) { + return round($this->correlation, $dp); + } + return $this->correlation; + } + + public function getYBestFitValues() + { + return $this->yBestFitValues; + } + + protected function calculateGoodnessOfFit($sumX, $sumY, $sumX2, $sumY2, $sumXY, $meanX, $meanY, $const) + { + $SSres = $SScov = $SScor = $SStot = $SSsex = 0.0; + foreach ($this->xValues as $xKey => $xValue) { + $bestFitY = $this->yBestFitValues[$xKey] = $this->getValueOfYForX($xValue); + + $SSres += ($this->yValues[$xKey] - $bestFitY) * ($this->yValues[$xKey] - $bestFitY); + if ($const) { + $SStot += ($this->yValues[$xKey] - $meanY) * ($this->yValues[$xKey] - $meanY); + } else { + $SStot += $this->yValues[$xKey] * $this->yValues[$xKey]; + } + $SScov += ($this->xValues[$xKey] - $meanX) * ($this->yValues[$xKey] - $meanY); + if ($const) { + $SSsex += ($this->xValues[$xKey] - $meanX) * ($this->xValues[$xKey] - $meanX); + } else { + $SSsex += $this->xValues[$xKey] * $this->xValues[$xKey]; + } + } + + $this->SSResiduals = $SSres; + $this->DFResiduals = $this->valueCount - 1 - $const; + + if ($this->DFResiduals == 0.0) { + $this->stdevOfResiduals = 0.0; + } else { + $this->stdevOfResiduals = sqrt($SSres / $this->DFResiduals); + } + if (($SStot == 0.0) || ($SSres == $SStot)) { + $this->goodnessOfFit = 1; + } else { + $this->goodnessOfFit = 1 - ($SSres / $SStot); + } + + $this->SSRegression = $this->goodnessOfFit * $SStot; + $this->covariance = $SScov / $this->valueCount; + $this->correlation = ($this->valueCount * $sumXY - $sumX * $sumY) / sqrt(($this->valueCount * $sumX2 - pow($sumX, 2)) * ($this->valueCount * $sumY2 - pow($sumY, 2))); + $this->slopeSE = $this->stdevOfResiduals / sqrt($SSsex); + $this->intersectSE = $this->stdevOfResiduals * sqrt(1 / ($this->valueCount - ($sumX * $sumX) / $sumX2)); + if ($this->SSResiduals != 0.0) { + if ($this->DFResiduals == 0.0) { + $this->f = 0.0; + } else { + $this->f = $this->SSRegression / ($this->SSResiduals / $this->DFResiduals); + } + } else { + if ($this->DFResiduals == 0.0) { + $this->f = 0.0; + } else { + $this->f = $this->SSRegression / $this->DFResiduals; + } + } + } + + protected function leastSquareFit($yValues, $xValues, $const) + { + // calculate sums + $x_sum = array_sum($xValues); + $y_sum = array_sum($yValues); + $meanX = $x_sum / $this->valueCount; + $meanY = $y_sum / $this->valueCount; + $mBase = $mDivisor = $xx_sum = $xy_sum = $yy_sum = 0.0; + for ($i = 0; $i < $this->valueCount; ++$i) { + $xy_sum += $xValues[$i] * $yValues[$i]; + $xx_sum += $xValues[$i] * $xValues[$i]; + $yy_sum += $yValues[$i] * $yValues[$i]; + + if ($const) { + $mBase += ($xValues[$i] - $meanX) * ($yValues[$i] - $meanY); + $mDivisor += ($xValues[$i] - $meanX) * ($xValues[$i] - $meanX); + } else { + $mBase += $xValues[$i] * $yValues[$i]; + $mDivisor += $xValues[$i] * $xValues[$i]; + } + } + + // calculate slope +// $this->slope = (($this->valueCount * $xy_sum) - ($x_sum * $y_sum)) / (($this->valueCount * $xx_sum) - ($x_sum * $x_sum)); + $this->slope = $mBase / $mDivisor; + + // calculate intersect +// $this->intersect = ($y_sum - ($this->slope * $x_sum)) / $this->valueCount; + if ($const) { + $this->intersect = $meanY - ($this->slope * $meanX); + } else { + $this->intersect = 0; + } + + $this->calculateGoodnessOfFit($x_sum, $y_sum, $xx_sum, $yy_sum, $xy_sum, $meanX, $meanY, $const); + } + + /** + * Define the regression + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($yValues, $xValues = array(), $const = true) + { + // Calculate number of points + $nY = count($yValues); + $nX = count($xValues); + + // Define X Values if necessary + if ($nX == 0) { + $xValues = range(1, $nY); + $nX = $nY; + } elseif ($nY != $nX) { + // Ensure both arrays of points are the same size + $this->error = true; + return false; + } + + $this->valueCount = $nY; + $this->xValues = $xValues; + $this->yValues = $yValues; + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php b/assets/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php new file mode 100644 index 0000000..4448735 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/exponentialBestFitClass.php @@ -0,0 +1,138 @@ +<?php + +require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); + +/** + * PHPExcel_Exponential_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Exponential_Best_Fit extends PHPExcel_Best_Fit +{ + /** + * Algorithm type to use for best-fit + * (Name of this trend class) + * + * @var string + **/ + protected $bestFitType = 'exponential'; + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + **/ + public function getValueOfYForX($xValue) + { + return $this->getIntersect() * pow($this->getSlope(), ($xValue - $this->xOffset)); + } + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + **/ + public function getValueOfXForY($yValue) + { + return log(($yValue + $this->yOffset) / $this->getIntersect()) / log($this->getSlope()); + } + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getEquation($dp = 0) + { + $slope = $this->getSlope($dp); + $intersect = $this->getIntersect($dp); + + return 'Y = ' . $intersect . ' * ' . $slope . '^X'; + } + + /** + * Return the Slope of the line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getSlope($dp = 0) + { + if ($dp != 0) { + return round(exp($this->_slope), $dp); + } + return exp($this->_slope); + } + + /** + * Return the Value of X where it intersects Y = 0 + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getIntersect($dp = 0) + { + if ($dp != 0) { + return round(exp($this->intersect), $dp); + } + return exp($this->intersect); + } + + /** + * Execute the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + private function exponentialRegression($yValues, $xValues, $const) + { + foreach ($yValues as &$value) { + if ($value < 0.0) { + $value = 0 - log(abs($value)); + } elseif ($value > 0.0) { + $value = log($value); + } + } + unset($value); + + $this->leastSquareFit($yValues, $xValues, $const); + } + + /** + * Define the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($yValues, $xValues = array(), $const = true) + { + if (parent::__construct($yValues, $xValues) !== false) { + $this->exponentialRegression($yValues, $xValues, $const); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/linearBestFitClass.php b/assets/excel/PHPExcel/Shared/trend/linearBestFitClass.php new file mode 100644 index 0000000..76b55b3 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/linearBestFitClass.php @@ -0,0 +1,102 @@ +<?php + +require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); + +/** + * PHPExcel_Linear_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Linear_Best_Fit extends PHPExcel_Best_Fit +{ + /** + * Algorithm type to use for best-fit + * (Name of this trend class) + * + * @var string + **/ + protected $bestFitType = 'linear'; + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + **/ + public function getValueOfYForX($xValue) + { + return $this->getIntersect() + $this->getSlope() * $xValue; + } + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + **/ + public function getValueOfXForY($yValue) + { + return ($yValue - $this->getIntersect()) / $this->getSlope(); + } + + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getEquation($dp = 0) + { + $slope = $this->getSlope($dp); + $intersect = $this->getIntersect($dp); + + return 'Y = ' . $intersect . ' + ' . $slope . ' * X'; + } + + /** + * Execute the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + private function linearRegression($yValues, $xValues, $const) + { + $this->leastSquareFit($yValues, $xValues, $const); + } + + /** + * Define the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($yValues, $xValues = array(), $const = true) + { + if (parent::__construct($yValues, $xValues) !== false) { + $this->linearRegression($yValues, $xValues, $const); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php b/assets/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php new file mode 100644 index 0000000..221c538 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/logarithmicBestFitClass.php @@ -0,0 +1,110 @@ +<?php + +require_once(PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'); + +/** + * PHPExcel_Logarithmic_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Logarithmic_Best_Fit extends PHPExcel_Best_Fit +{ + /** + * Algorithm type to use for best-fit + * (Name of this trend class) + * + * @var string + **/ + protected $bestFitType = 'logarithmic'; + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + **/ + public function getValueOfYForX($xValue) + { + return $this->getIntersect() + $this->getSlope() * log($xValue - $this->xOffset); + } + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + **/ + public function getValueOfXForY($yValue) + { + return exp(($yValue - $this->getIntersect()) / $this->getSlope()); + } + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getEquation($dp = 0) + { + $slope = $this->getSlope($dp); + $intersect = $this->getIntersect($dp); + + return 'Y = '.$intersect.' + '.$slope.' * log(X)'; + } + + /** + * Execute the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + private function logarithmicRegression($yValues, $xValues, $const) + { + foreach ($xValues as &$value) { + if ($value < 0.0) { + $value = 0 - log(abs($value)); + } elseif ($value > 0.0) { + $value = log($value); + } + } + unset($value); + + $this->leastSquareFit($yValues, $xValues, $const); + } + + /** + * Define the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($yValues, $xValues = array(), $const = true) + { + if (parent::__construct($yValues, $xValues) !== false) { + $this->logarithmicRegression($yValues, $xValues, $const); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php b/assets/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php new file mode 100644 index 0000000..8a882b7 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/polynomialBestFitClass.php @@ -0,0 +1,222 @@ +<?php + +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'; +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/JAMA/Matrix.php'; + +/** + * PHPExcel_Polynomial_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Polynomial_Best_Fit extends PHPExcel_Best_Fit +{ + /** + * Algorithm type to use for best-fit + * (Name of this trend class) + * + * @var string + **/ + protected $bestFitType = 'polynomial'; + + /** + * Polynomial order + * + * @protected + * @var int + **/ + protected $order = 0; + + + /** + * Return the order of this polynomial + * + * @return int + **/ + public function getOrder() + { + return $this->order; + } + + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + **/ + public function getValueOfYForX($xValue) + { + $retVal = $this->getIntersect(); + $slope = $this->getSlope(); + foreach ($slope as $key => $value) { + if ($value != 0.0) { + $retVal += $value * pow($xValue, $key + 1); + } + } + return $retVal; + } + + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + **/ + public function getValueOfXForY($yValue) + { + return ($yValue - $this->getIntersect()) / $this->getSlope(); + } + + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getEquation($dp = 0) + { + $slope = $this->getSlope($dp); + $intersect = $this->getIntersect($dp); + + $equation = 'Y = ' . $intersect; + foreach ($slope as $key => $value) { + if ($value != 0.0) { + $equation .= ' + ' . $value . ' * X'; + if ($key > 0) { + $equation .= '^' . ($key + 1); + } + } + } + return $equation; + } + + + /** + * Return the Slope of the line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getSlope($dp = 0) + { + if ($dp != 0) { + $coefficients = array(); + foreach ($this->_slope as $coefficient) { + $coefficients[] = round($coefficient, $dp); + } + return $coefficients; + } + return $this->_slope; + } + + + public function getCoefficients($dp = 0) + { + return array_merge(array($this->getIntersect($dp)), $this->getSlope($dp)); + } + + + /** + * Execute the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param int $order Order of Polynomial for this regression + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + private function polynomialRegression($order, $yValues, $xValues, $const) + { + // calculate sums + $x_sum = array_sum($xValues); + $y_sum = array_sum($yValues); + $xx_sum = $xy_sum = 0; + for ($i = 0; $i < $this->valueCount; ++$i) { + $xy_sum += $xValues[$i] * $yValues[$i]; + $xx_sum += $xValues[$i] * $xValues[$i]; + $yy_sum += $yValues[$i] * $yValues[$i]; + } + /* + * This routine uses logic from the PHP port of polyfit version 0.1 + * written by Michael Bommarito and Paul Meagher + * + * The function fits a polynomial function of order $order through + * a series of x-y data points using least squares. + * + */ + for ($i = 0; $i < $this->valueCount; ++$i) { + for ($j = 0; $j <= $order; ++$j) { + $A[$i][$j] = pow($xValues[$i], $j); + } + } + for ($i=0; $i < $this->valueCount; ++$i) { + $B[$i] = array($yValues[$i]); + } + $matrixA = new Matrix($A); + $matrixB = new Matrix($B); + $C = $matrixA->solve($matrixB); + + $coefficients = array(); + for ($i = 0; $i < $C->m; ++$i) { + $r = $C->get($i, 0); + if (abs($r) <= pow(10, -9)) { + $r = 0; + } + $coefficients[] = $r; + } + + $this->intersect = array_shift($coefficients); + $this->_slope = $coefficients; + + $this->calculateGoodnessOfFit($x_sum, $y_sum, $xx_sum, $yy_sum, $xy_sum); + foreach ($this->xValues as $xKey => $xValue) { + $this->yBestFitValues[$xKey] = $this->getValueOfYForX($xValue); + } + } + + + /** + * Define the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param int $order Order of Polynomial for this regression + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($order, $yValues, $xValues = array(), $const = true) + { + if (parent::__construct($yValues, $xValues) !== false) { + if ($order < $this->valueCount) { + $this->bestFitType .= '_'.$order; + $this->order = $order; + $this->polynomialRegression($order, $yValues, $xValues, $const); + if (($this->getGoodnessOfFit() < 0.0) || ($this->getGoodnessOfFit() > 1.0)) { + $this->_error = true; + } + } else { + $this->_error = true; + } + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/powerBestFitClass.php b/assets/excel/PHPExcel/Shared/trend/powerBestFitClass.php new file mode 100644 index 0000000..77c4734 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/powerBestFitClass.php @@ -0,0 +1,138 @@ +<?php + +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/bestFitClass.php'; + +/** + * PHPExcel_Power_Best_Fit + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Power_Best_Fit extends PHPExcel_Best_Fit +{ + /** + * Algorithm type to use for best-fit + * (Name of this trend class) + * + * @var string + **/ + protected $bestFitType = 'power'; + + + /** + * Return the Y-Value for a specified value of X + * + * @param float $xValue X-Value + * @return float Y-Value + **/ + public function getValueOfYForX($xValue) + { + return $this->getIntersect() * pow(($xValue - $this->xOffset), $this->getSlope()); + } + + + /** + * Return the X-Value for a specified value of Y + * + * @param float $yValue Y-Value + * @return float X-Value + **/ + public function getValueOfXForY($yValue) + { + return pow((($yValue + $this->yOffset) / $this->getIntersect()), (1 / $this->getSlope())); + } + + + /** + * Return the Equation of the best-fit line + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getEquation($dp = 0) + { + $slope = $this->getSlope($dp); + $intersect = $this->getIntersect($dp); + + return 'Y = ' . $intersect . ' * X^' . $slope; + } + + + /** + * Return the Value of X where it intersects Y = 0 + * + * @param int $dp Number of places of decimal precision to display + * @return string + **/ + public function getIntersect($dp = 0) + { + if ($dp != 0) { + return round(exp($this->intersect), $dp); + } + return exp($this->intersect); + } + + + /** + * Execute the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + private function powerRegression($yValues, $xValues, $const) + { + foreach ($xValues as &$value) { + if ($value < 0.0) { + $value = 0 - log(abs($value)); + } elseif ($value > 0.0) { + $value = log($value); + } + } + unset($value); + foreach ($yValues as &$value) { + if ($value < 0.0) { + $value = 0 - log(abs($value)); + } elseif ($value > 0.0) { + $value = log($value); + } + } + unset($value); + + $this->leastSquareFit($yValues, $xValues, $const); + } + + + /** + * Define the regression and calculate the goodness of fit for a set of X and Y data values + * + * @param float[] $yValues The set of Y-values for this regression + * @param float[] $xValues The set of X-values for this regression + * @param boolean $const + */ + public function __construct($yValues, $xValues = array(), $const = true) + { + if (parent::__construct($yValues, $xValues) !== false) { + $this->powerRegression($yValues, $xValues, $const); + } + } +} diff --git a/assets/excel/PHPExcel/Shared/trend/trendClass.php b/assets/excel/PHPExcel/Shared/trend/trendClass.php new file mode 100644 index 0000000..715cd41 --- /dev/null +++ b/assets/excel/PHPExcel/Shared/trend/trendClass.php @@ -0,0 +1,147 @@ +<?php + +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/linearBestFitClass.php'; +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/logarithmicBestFitClass.php'; +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/exponentialBestFitClass.php'; +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/powerBestFitClass.php'; +require_once PHPEXCEL_ROOT . 'PHPExcel/Shared/trend/polynomialBestFitClass.php'; + +/** + * PHPExcel_trendClass + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Shared_Trend + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class trendClass +{ + const TREND_LINEAR = 'Linear'; + const TREND_LOGARITHMIC = 'Logarithmic'; + const TREND_EXPONENTIAL = 'Exponential'; + const TREND_POWER = 'Power'; + const TREND_POLYNOMIAL_2 = 'Polynomial_2'; + const TREND_POLYNOMIAL_3 = 'Polynomial_3'; + const TREND_POLYNOMIAL_4 = 'Polynomial_4'; + const TREND_POLYNOMIAL_5 = 'Polynomial_5'; + const TREND_POLYNOMIAL_6 = 'Polynomial_6'; + const TREND_BEST_FIT = 'Bestfit'; + const TREND_BEST_FIT_NO_POLY = 'Bestfit_no_Polynomials'; + + /** + * Names of the best-fit trend analysis methods + * + * @var string[] + **/ + private static $trendTypes = array( + self::TREND_LINEAR, + self::TREND_LOGARITHMIC, + self::TREND_EXPONENTIAL, + self::TREND_POWER + ); + + /** + * Names of the best-fit trend polynomial orders + * + * @var string[] + **/ + private static $trendTypePolynomialOrders = array( + self::TREND_POLYNOMIAL_2, + self::TREND_POLYNOMIAL_3, + self::TREND_POLYNOMIAL_4, + self::TREND_POLYNOMIAL_5, + self::TREND_POLYNOMIAL_6 + ); + + /** + * Cached results for each method when trying to identify which provides the best fit + * + * @var PHPExcel_Best_Fit[] + **/ + private static $trendCache = array(); + + + public static function calculate($trendType = self::TREND_BEST_FIT, $yValues, $xValues = array(), $const = true) + { + // Calculate number of points in each dataset + $nY = count($yValues); + $nX = count($xValues); + + // Define X Values if necessary + if ($nX == 0) { + $xValues = range(1, $nY); + $nX = $nY; + } elseif ($nY != $nX) { + // Ensure both arrays of points are the same size + trigger_error("trend(): Number of elements in coordinate arrays do not match.", E_USER_ERROR); + } + + $key = md5($trendType.$const.serialize($yValues).serialize($xValues)); + // Determine which trend method has been requested + switch ($trendType) { + // Instantiate and return the class for the requested trend method + case self::TREND_LINEAR: + case self::TREND_LOGARITHMIC: + case self::TREND_EXPONENTIAL: + case self::TREND_POWER: + if (!isset(self::$trendCache[$key])) { + $className = 'PHPExcel_'.$trendType.'_Best_Fit'; + self::$trendCache[$key] = new $className($yValues, $xValues, $const); + } + return self::$trendCache[$key]; + case self::TREND_POLYNOMIAL_2: + case self::TREND_POLYNOMIAL_3: + case self::TREND_POLYNOMIAL_4: + case self::TREND_POLYNOMIAL_5: + case self::TREND_POLYNOMIAL_6: + if (!isset(self::$trendCache[$key])) { + $order = substr($trendType, -1); + self::$trendCache[$key] = new PHPExcel_Polynomial_Best_Fit($order, $yValues, $xValues, $const); + } + return self::$trendCache[$key]; + case self::TREND_BEST_FIT: + case self::TREND_BEST_FIT_NO_POLY: + // If the request is to determine the best fit regression, then we test each trend line in turn + // Start by generating an instance of each available trend method + foreach (self::$trendTypes as $trendMethod) { + $className = 'PHPExcel_'.$trendMethod.'BestFit'; + $bestFit[$trendMethod] = new $className($yValues, $xValues, $const); + $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit(); + } + if ($trendType != self::TREND_BEST_FIT_NO_POLY) { + foreach (self::$trendTypePolynomialOrders as $trendMethod) { + $order = substr($trendMethod, -1); + $bestFit[$trendMethod] = new PHPExcel_Polynomial_Best_Fit($order, $yValues, $xValues, $const); + if ($bestFit[$trendMethod]->getError()) { + unset($bestFit[$trendMethod]); + } else { + $bestFitValue[$trendMethod] = $bestFit[$trendMethod]->getGoodnessOfFit(); + } + } + } + // Determine which of our trend lines is the best fit, and then we return the instance of that trend class + arsort($bestFitValue); + $bestFitType = key($bestFitValue); + return $bestFit[$bestFitType]; + default: + return false; + } + } +} diff --git a/assets/excel/PHPExcel/Style.php b/assets/excel/PHPExcel/Style.php new file mode 100644 index 0000000..6b952ef --- /dev/null +++ b/assets/excel/PHPExcel/Style.php @@ -0,0 +1,644 @@ +<?php + +/** + * PHPExcel_Style + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /** + * Font + * + * @var PHPExcel_Style_Font + */ + protected $font; + + /** + * Fill + * + * @var PHPExcel_Style_Fill + */ + protected $fill; + + /** + * Borders + * + * @var PHPExcel_Style_Borders + */ + protected $borders; + + /** + * Alignment + * + * @var PHPExcel_Style_Alignment + */ + protected $alignment; + + /** + * Number Format + * + * @var PHPExcel_Style_NumberFormat + */ + protected $numberFormat; + + /** + * Conditional styles + * + * @var PHPExcel_Style_Conditional[] + */ + protected $conditionalStyles; + + /** + * Protection + * + * @var PHPExcel_Style_Protection + */ + protected $protection; + + /** + * Index of style in collection. Only used for real style. + * + * @var int + */ + protected $index; + + /** + * Use Quote Prefix when displaying in cell editor. Only used for real style. + * + * @var boolean + */ + protected $quotePrefix = false; + + /** + * Create a new PHPExcel_Style + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + $this->isSupervisor = $isSupervisor; + + // Initialise values + $this->conditionalStyles = array(); + $this->font = new PHPExcel_Style_Font($isSupervisor, $isConditional); + $this->fill = new PHPExcel_Style_Fill($isSupervisor, $isConditional); + $this->borders = new PHPExcel_Style_Borders($isSupervisor, $isConditional); + $this->alignment = new PHPExcel_Style_Alignment($isSupervisor, $isConditional); + $this->numberFormat = new PHPExcel_Style_NumberFormat($isSupervisor, $isConditional); + $this->protection = new PHPExcel_Style_Protection($isSupervisor, $isConditional); + + // bind parent if we are a supervisor + if ($isSupervisor) { + $this->font->bindParent($this); + $this->fill->bindParent($this); + $this->borders->bindParent($this); + $this->alignment->bindParent($this); + $this->numberFormat->bindParent($this); + $this->protection->bindParent($this); + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style + */ + public function getSharedComponent() + { + $activeSheet = $this->getActiveSheet(); + $selectedCell = $this->getActiveCell(); // e.g. 'A1' + + if ($activeSheet->cellExists($selectedCell)) { + $xfIndex = $activeSheet->getCell($selectedCell)->getXfIndex(); + } else { + $xfIndex = 0; + } + + return $this->parent->getCellXfByIndex($xfIndex); + } + + /** + * Get parent. Only used for style supervisor + * + * @return PHPExcel + */ + public function getParent() + { + return $this->parent; + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('quotePrefix' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->applyFromArray( + * array( + * 'font' => array( + * 'name' => 'Arial', + * 'bold' => true, + * 'italic' => false, + * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE, + * 'strike' => false, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ), + * 'borders' => array( + * 'bottom' => array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ), + * 'top' => array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ) + * ), + * 'quotePrefix' => true + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @param boolean $pAdvanced Advanced mode for setting borders. + * @throws PHPExcel_Exception + * @return PHPExcel_Style + */ + public function applyFromArray($pStyles = null, $pAdvanced = true) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $pRange = $this->getSelectedCells(); + + // Uppercase coordinate + $pRange = strtoupper($pRange); + + // Is it a cell range or a single cell? + if (strpos($pRange, ':') === false) { + $rangeA = $pRange; + $rangeB = $pRange; + } else { + list($rangeA, $rangeB) = explode(':', $pRange); + } + + // Calculate range outer borders + $rangeStart = PHPExcel_Cell::coordinateFromString($rangeA); + $rangeEnd = PHPExcel_Cell::coordinateFromString($rangeB); + + // Translate column into index + $rangeStart[0] = PHPExcel_Cell::columnIndexFromString($rangeStart[0]) - 1; + $rangeEnd[0] = PHPExcel_Cell::columnIndexFromString($rangeEnd[0]) - 1; + + // Make sure we can loop upwards on rows and columns + if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { + $tmp = $rangeStart; + $rangeStart = $rangeEnd; + $rangeEnd = $tmp; + } + + // ADVANCED MODE: + if ($pAdvanced && isset($pStyles['borders'])) { + // 'allborders' is a shorthand property for 'outline' and 'inside' and + // it applies to components that have not been set explicitly + if (isset($pStyles['borders']['allborders'])) { + foreach (array('outline', 'inside') as $component) { + if (!isset($pStyles['borders'][$component])) { + $pStyles['borders'][$component] = $pStyles['borders']['allborders']; + } + } + unset($pStyles['borders']['allborders']); // not needed any more + } + // 'outline' is a shorthand property for 'top', 'right', 'bottom', 'left' + // it applies to components that have not been set explicitly + if (isset($pStyles['borders']['outline'])) { + foreach (array('top', 'right', 'bottom', 'left') as $component) { + if (!isset($pStyles['borders'][$component])) { + $pStyles['borders'][$component] = $pStyles['borders']['outline']; + } + } + unset($pStyles['borders']['outline']); // not needed any more + } + // 'inside' is a shorthand property for 'vertical' and 'horizontal' + // it applies to components that have not been set explicitly + if (isset($pStyles['borders']['inside'])) { + foreach (array('vertical', 'horizontal') as $component) { + if (!isset($pStyles['borders'][$component])) { + $pStyles['borders'][$component] = $pStyles['borders']['inside']; + } + } + unset($pStyles['borders']['inside']); // not needed any more + } + // width and height characteristics of selection, 1, 2, or 3 (for 3 or more) + $xMax = min($rangeEnd[0] - $rangeStart[0] + 1, 3); + $yMax = min($rangeEnd[1] - $rangeStart[1] + 1, 3); + + // loop through up to 3 x 3 = 9 regions + for ($x = 1; $x <= $xMax; ++$x) { + // start column index for region + $colStart = ($x == 3) ? + PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0]) + : PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $x - 1); + // end column index for region + $colEnd = ($x == 1) ? + PHPExcel_Cell::stringFromColumnIndex($rangeStart[0]) + : PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] - $xMax + $x); + + for ($y = 1; $y <= $yMax; ++$y) { + // which edges are touching the region + $edges = array(); + if ($x == 1) { + // are we at left edge + $edges[] = 'left'; + } + if ($x == $xMax) { + // are we at right edge + $edges[] = 'right'; + } + if ($y == 1) { + // are we at top edge? + $edges[] = 'top'; + } + if ($y == $yMax) { + // are we at bottom edge? + $edges[] = 'bottom'; + } + + // start row index for region + $rowStart = ($y == 3) ? + $rangeEnd[1] : $rangeStart[1] + $y - 1; + + // end row index for region + $rowEnd = ($y == 1) ? + $rangeStart[1] : $rangeEnd[1] - $yMax + $y; + + // build range for region + $range = $colStart . $rowStart . ':' . $colEnd . $rowEnd; + + // retrieve relevant style array for region + $regionStyles = $pStyles; + unset($regionStyles['borders']['inside']); + + // what are the inner edges of the region when looking at the selection + $innerEdges = array_diff(array('top', 'right', 'bottom', 'left'), $edges); + + // inner edges that are not touching the region should take the 'inside' border properties if they have been set + foreach ($innerEdges as $innerEdge) { + switch ($innerEdge) { + case 'top': + case 'bottom': + // should pick up 'horizontal' border property if set + if (isset($pStyles['borders']['horizontal'])) { + $regionStyles['borders'][$innerEdge] = $pStyles['borders']['horizontal']; + } else { + unset($regionStyles['borders'][$innerEdge]); + } + break; + case 'left': + case 'right': + // should pick up 'vertical' border property if set + if (isset($pStyles['borders']['vertical'])) { + $regionStyles['borders'][$innerEdge] = $pStyles['borders']['vertical']; + } else { + unset($regionStyles['borders'][$innerEdge]); + } + break; + } + } + + // apply region style to region by calling applyFromArray() in simple mode + $this->getActiveSheet()->getStyle($range)->applyFromArray($regionStyles, false); + } + } + return $this; + } + + // SIMPLE MODE: + // Selection type, inspect + if (preg_match('/^[A-Z]+1:[A-Z]+1048576$/', $pRange)) { + $selectionType = 'COLUMN'; + } elseif (preg_match('/^A[0-9]+:XFD[0-9]+$/', $pRange)) { + $selectionType = 'ROW'; + } else { + $selectionType = 'CELL'; + } + + // First loop through columns, rows, or cells to find out which styles are affected by this operation + switch ($selectionType) { + case 'COLUMN': + $oldXfIndexes = array(); + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + $oldXfIndexes[$this->getActiveSheet()->getColumnDimensionByColumn($col)->getXfIndex()] = true; + } + break; + case 'ROW': + $oldXfIndexes = array(); + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + if ($this->getActiveSheet()->getRowDimension($row)->getXfIndex() == null) { + $oldXfIndexes[0] = true; // row without explicit style should be formatted based on default style + } else { + $oldXfIndexes[$this->getActiveSheet()->getRowDimension($row)->getXfIndex()] = true; + } + } + break; + case 'CELL': + $oldXfIndexes = array(); + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + $oldXfIndexes[$this->getActiveSheet()->getCellByColumnAndRow($col, $row)->getXfIndex()] = true; + } + } + break; + } + + // clone each of the affected styles, apply the style array, and add the new styles to the workbook + $workbook = $this->getActiveSheet()->getParent(); + foreach ($oldXfIndexes as $oldXfIndex => $dummy) { + $style = $workbook->getCellXfByIndex($oldXfIndex); + $newStyle = clone $style; + $newStyle->applyFromArray($pStyles); + + if ($existingStyle = $workbook->getCellXfByHashCode($newStyle->getHashCode())) { + // there is already such cell Xf in our collection + $newXfIndexes[$oldXfIndex] = $existingStyle->getIndex(); + } else { + // we don't have such a cell Xf, need to add + $workbook->addCellXf($newStyle); + $newXfIndexes[$oldXfIndex] = $newStyle->getIndex(); + } + } + + // Loop through columns, rows, or cells again and update the XF index + switch ($selectionType) { + case 'COLUMN': + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + $columnDimension = $this->getActiveSheet()->getColumnDimensionByColumn($col); + $oldXfIndex = $columnDimension->getXfIndex(); + $columnDimension->setXfIndex($newXfIndexes[$oldXfIndex]); + } + break; + + case 'ROW': + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + $rowDimension = $this->getActiveSheet()->getRowDimension($row); + $oldXfIndex = $rowDimension->getXfIndex() === null ? + 0 : $rowDimension->getXfIndex(); // row without explicit style should be formatted based on default style + $rowDimension->setXfIndex($newXfIndexes[$oldXfIndex]); + } + break; + + case 'CELL': + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + $cell = $this->getActiveSheet()->getCellByColumnAndRow($col, $row); + $oldXfIndex = $cell->getXfIndex(); + $cell->setXfIndex($newXfIndexes[$oldXfIndex]); + } + } + break; + } + + } else { + // not a supervisor, just apply the style array directly on style object + if (array_key_exists('fill', $pStyles)) { + $this->getFill()->applyFromArray($pStyles['fill']); + } + if (array_key_exists('font', $pStyles)) { + $this->getFont()->applyFromArray($pStyles['font']); + } + if (array_key_exists('borders', $pStyles)) { + $this->getBorders()->applyFromArray($pStyles['borders']); + } + if (array_key_exists('alignment', $pStyles)) { + $this->getAlignment()->applyFromArray($pStyles['alignment']); + } + if (array_key_exists('numberformat', $pStyles)) { + $this->getNumberFormat()->applyFromArray($pStyles['numberformat']); + } + if (array_key_exists('protection', $pStyles)) { + $this->getProtection()->applyFromArray($pStyles['protection']); + } + if (array_key_exists('quotePrefix', $pStyles)) { + $this->quotePrefix = $pStyles['quotePrefix']; + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Fill + * + * @return PHPExcel_Style_Fill + */ + public function getFill() + { + return $this->fill; + } + + /** + * Get Font + * + * @return PHPExcel_Style_Font + */ + public function getFont() + { + return $this->font; + } + + /** + * Set font + * + * @param PHPExcel_Style_Font $font + * @return PHPExcel_Style + */ + public function setFont(PHPExcel_Style_Font $font) + { + $this->font = $font; + return $this; + } + + /** + * Get Borders + * + * @return PHPExcel_Style_Borders + */ + public function getBorders() + { + return $this->borders; + } + + /** + * Get Alignment + * + * @return PHPExcel_Style_Alignment + */ + public function getAlignment() + { + return $this->alignment; + } + + /** + * Get Number Format + * + * @return PHPExcel_Style_NumberFormat + */ + public function getNumberFormat() + { + return $this->numberFormat; + } + + /** + * Get Conditional Styles. Only used on supervisor. + * + * @return PHPExcel_Style_Conditional[] + */ + public function getConditionalStyles() + { + return $this->getActiveSheet()->getConditionalStyles($this->getActiveCell()); + } + + /** + * Set Conditional Styles. Only used on supervisor. + * + * @param PHPExcel_Style_Conditional[] $pValue Array of condtional styles + * @return PHPExcel_Style + */ + public function setConditionalStyles($pValue = null) + { + if (is_array($pValue)) { + $this->getActiveSheet()->setConditionalStyles($this->getSelectedCells(), $pValue); + } + return $this; + } + + /** + * Get Protection + * + * @return PHPExcel_Style_Protection + */ + public function getProtection() + { + return $this->protection; + } + + /** + * Get quote prefix + * + * @return boolean + */ + public function getQuotePrefix() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getQuotePrefix(); + } + return $this->quotePrefix; + } + + /** + * Set quote prefix + * + * @param boolean $pValue + */ + public function setQuotePrefix($pValue) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = array('quotePrefix' => $pValue); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->quotePrefix = (boolean) $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + $hashConditionals = ''; + foreach ($this->conditionalStyles as $conditional) { + $hashConditionals .= $conditional->getHashCode(); + } + + return md5( + $this->fill->getHashCode() . + $this->font->getHashCode() . + $this->borders->getHashCode() . + $this->alignment->getHashCode() . + $this->numberFormat->getHashCode() . + $hashConditionals . + $this->protection->getHashCode() . + ($this->quotePrefix ? 't' : 'f') . + __CLASS__ + ); + } + + /** + * Get own index in style collection + * + * @return int + */ + public function getIndex() + { + return $this->index; + } + + /** + * Set own index in style collection + * + * @param int $pValue + */ + public function setIndex($pValue) + { + $this->index = $pValue; + } +} diff --git a/assets/excel/PHPExcel/Style/Alignment.php b/assets/excel/PHPExcel/Style/Alignment.php new file mode 100644 index 0000000..bfc4947 --- /dev/null +++ b/assets/excel/PHPExcel/Style/Alignment.php @@ -0,0 +1,464 @@ +<?php +/** + * PHPExcel_Style_Alignment + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Alignment extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Horizontal alignment styles */ + const HORIZONTAL_GENERAL = 'general'; + const HORIZONTAL_LEFT = 'left'; + const HORIZONTAL_RIGHT = 'right'; + const HORIZONTAL_CENTER = 'center'; + const HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous'; + const HORIZONTAL_JUSTIFY = 'justify'; + const HORIZONTAL_FILL = 'fill'; + const HORIZONTAL_DISTRIBUTED = 'distributed'; // Excel2007 only + + /* Vertical alignment styles */ + const VERTICAL_BOTTOM = 'bottom'; + const VERTICAL_TOP = 'top'; + const VERTICAL_CENTER = 'center'; + const VERTICAL_JUSTIFY = 'justify'; + const VERTICAL_DISTRIBUTED = 'distributed'; // Excel2007 only + + /* Read order */ + const READORDER_CONTEXT = 0; + const READORDER_LTR = 1; + const READORDER_RTL = 2; + + /** + * Horizontal alignment + * + * @var string + */ + protected $horizontal = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; + + /** + * Vertical alignment + * + * @var string + */ + protected $vertical = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; + + /** + * Text rotation + * + * @var integer + */ + protected $textRotation = 0; + + /** + * Wrap text + * + * @var boolean + */ + protected $wrapText = false; + + /** + * Shrink to fit + * + * @var boolean + */ + protected $shrinkToFit = false; + + /** + * Indent - only possible with horizontal alignment left and right + * + * @var integer + */ + protected $indent = 0; + + /** + * Read order + * + * @var integer + */ + protected $readorder = 0; + + /** + * Create a new PHPExcel_Style_Alignment + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + if ($isConditional) { + $this->horizontal = null; + $this->vertical = null; + $this->textRotation = null; + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Alignment + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getAlignment(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('alignment' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->applyFromArray( + * array( + * 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, + * 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER, + * 'rotation' => 0, + * 'wrap' => TRUE + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Alignment + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells()) + ->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (isset($pStyles['horizontal'])) { + $this->setHorizontal($pStyles['horizontal']); + } + if (isset($pStyles['vertical'])) { + $this->setVertical($pStyles['vertical']); + } + if (isset($pStyles['rotation'])) { + $this->setTextRotation($pStyles['rotation']); + } + if (isset($pStyles['wrap'])) { + $this->setWrapText($pStyles['wrap']); + } + if (isset($pStyles['shrinkToFit'])) { + $this->setShrinkToFit($pStyles['shrinkToFit']); + } + if (isset($pStyles['indent'])) { + $this->setIndent($pStyles['indent']); + } + if (isset($pStyles['readorder'])) { + $this->setReadorder($pStyles['readorder']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Horizontal + * + * @return string + */ + public function getHorizontal() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHorizontal(); + } + return $this->horizontal; + } + + /** + * Set Horizontal + * + * @param string $pValue + * @return PHPExcel_Style_Alignment + */ + public function setHorizontal($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) + { + if ($pValue == '') { + $pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL; + } + + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('horizontal' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->horizontal = $pValue; + } + return $this; + } + + /** + * Get Vertical + * + * @return string + */ + public function getVertical() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getVertical(); + } + return $this->vertical; + } + + /** + * Set Vertical + * + * @param string $pValue + * @return PHPExcel_Style_Alignment + */ + public function setVertical($pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM) + { + if ($pValue == '') { + $pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM; + } + + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('vertical' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->vertical = $pValue; + } + return $this; + } + + /** + * Get TextRotation + * + * @return int + */ + public function getTextRotation() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getTextRotation(); + } + return $this->textRotation; + } + + /** + * Set TextRotation + * + * @param int $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Alignment + */ + public function setTextRotation($pValue = 0) + { + // Excel2007 value 255 => PHPExcel value -165 + if ($pValue == 255) { + $pValue = -165; + } + + // Set rotation + if (($pValue >= -90 && $pValue <= 90) || $pValue == -165) { + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('rotation' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->textRotation = $pValue; + } + } else { + throw new PHPExcel_Exception("Text rotation should be a value between -90 and 90."); + } + + return $this; + } + + /** + * Get Wrap Text + * + * @return boolean + */ + public function getWrapText() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getWrapText(); + } + return $this->wrapText; + } + + /** + * Set Wrap Text + * + * @param boolean $pValue + * @return PHPExcel_Style_Alignment + */ + public function setWrapText($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('wrap' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->wrapText = $pValue; + } + return $this; + } + + /** + * Get Shrink to fit + * + * @return boolean + */ + public function getShrinkToFit() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getShrinkToFit(); + } + return $this->shrinkToFit; + } + + /** + * Set Shrink to fit + * + * @param boolean $pValue + * @return PHPExcel_Style_Alignment + */ + public function setShrinkToFit($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('shrinkToFit' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->shrinkToFit = $pValue; + } + return $this; + } + + /** + * Get indent + * + * @return int + */ + public function getIndent() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getIndent(); + } + return $this->indent; + } + + /** + * Set indent + * + * @param int $pValue + * @return PHPExcel_Style_Alignment + */ + public function setIndent($pValue = 0) + { + if ($pValue > 0) { + if ($this->getHorizontal() != self::HORIZONTAL_GENERAL && + $this->getHorizontal() != self::HORIZONTAL_LEFT && + $this->getHorizontal() != self::HORIZONTAL_RIGHT) { + $pValue = 0; // indent not supported + } + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('indent' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->indent = $pValue; + } + return $this; + } + + /** + * Get read order + * + * @return integer + */ + public function getReadorder() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getReadorder(); + } + return $this->readorder; + } + + /** + * Set read order + * + * @param int $pValue + * @return PHPExcel_Style_Alignment + */ + public function setReadorder($pValue = 0) + { + if ($pValue < 0 || $pValue > 2) { + $pValue = 0; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('readorder' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->readorder = $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->horizontal . + $this->vertical . + $this->textRotation . + ($this->wrapText ? 't' : 'f') . + ($this->shrinkToFit ? 't' : 'f') . + $this->indent . + $this->readorder . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Border.php b/assets/excel/PHPExcel/Style/Border.php new file mode 100644 index 0000000..55efc50 --- /dev/null +++ b/assets/excel/PHPExcel/Style/Border.php @@ -0,0 +1,282 @@ +<?php + +/** + * PHPExcel_Style_Border + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Border extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Border style */ + const BORDER_NONE = 'none'; + const BORDER_DASHDOT = 'dashDot'; + const BORDER_DASHDOTDOT = 'dashDotDot'; + const BORDER_DASHED = 'dashed'; + const BORDER_DOTTED = 'dotted'; + const BORDER_DOUBLE = 'double'; + const BORDER_HAIR = 'hair'; + const BORDER_MEDIUM = 'medium'; + const BORDER_MEDIUMDASHDOT = 'mediumDashDot'; + const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot'; + const BORDER_MEDIUMDASHED = 'mediumDashed'; + const BORDER_SLANTDASHDOT = 'slantDashDot'; + const BORDER_THICK = 'thick'; + const BORDER_THIN = 'thin'; + + /** + * Border style + * + * @var string + */ + protected $borderStyle = PHPExcel_Style_Border::BORDER_NONE; + + /** + * Border color + * + * @var PHPExcel_Style_Color + */ + protected $color; + + /** + * Parent property name + * + * @var string + */ + protected $parentPropertyName; + + /** + * Create a new PHPExcel_Style_Border + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor); + + // bind parent if we are a supervisor + if ($isSupervisor) { + $this->color->bindParent($this, 'color'); + } + } + + /** + * Bind parent. Only used for supervisor + * + * @param PHPExcel_Style_Borders $parent + * @param string $parentPropertyName + * @return PHPExcel_Style_Border + */ + public function bindParent($parent, $parentPropertyName = null) + { + $this->parent = $parent; + $this->parentPropertyName = $parentPropertyName; + return $this; + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Border + * @throws PHPExcel_Exception + */ + public function getSharedComponent() + { + switch ($this->parentPropertyName) { + case 'allBorders': + case 'horizontal': + case 'inside': + case 'outline': + case 'vertical': + throw new PHPExcel_Exception('Cannot get shared component for a pseudo-border.'); + break; + case 'bottom': + return $this->parent->getSharedComponent()->getBottom(); + case 'diagonal': + return $this->parent->getSharedComponent()->getDiagonal(); + case 'left': + return $this->parent->getSharedComponent()->getLeft(); + case 'right': + return $this->parent->getSharedComponent()->getRight(); + case 'top': + return $this->parent->getSharedComponent()->getTop(); + } + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + switch ($this->parentPropertyName) { + case 'allBorders': + case 'bottom': + case 'diagonal': + case 'horizontal': + case 'inside': + case 'left': + case 'outline': + case 'right': + case 'top': + case 'vertical': + $key = strtolower('vertical'); + break; + } + return $this->parent->getStyleArray(array($key => $array)); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getTop()->applyFromArray( + * array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Border + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (isset($pStyles['style'])) { + $this->setBorderStyle($pStyles['style']); + } + if (isset($pStyles['color'])) { + $this->getColor()->applyFromArray($pStyles['color']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Border style + * + * @return string + */ + public function getBorderStyle() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getBorderStyle(); + } + return $this->borderStyle; + } + + /** + * Set Border style + * + * @param string|boolean $pValue + * When passing a boolean, FALSE equates PHPExcel_Style_Border::BORDER_NONE + * and TRUE to PHPExcel_Style_Border::BORDER_MEDIUM + * @return PHPExcel_Style_Border + */ + public function setBorderStyle($pValue = PHPExcel_Style_Border::BORDER_NONE) + { + + if (empty($pValue)) { + $pValue = PHPExcel_Style_Border::BORDER_NONE; + } elseif (is_bool($pValue) && $pValue) { + $pValue = PHPExcel_Style_Border::BORDER_MEDIUM; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('style' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->borderStyle = $pValue; + } + return $this; + } + + /** + * Get Border Color + * + * @return PHPExcel_Style_Color + */ + public function getColor() + { + return $this->color; + } + + /** + * Set Border Color + * + * @param PHPExcel_Style_Color $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Border + */ + public function setColor(PHPExcel_Style_Color $pValue = null) + { + // make sure parameter is a real color and not a supervisor + $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; + + if ($this->isSupervisor) { + $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB())); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->color = $color; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->borderStyle . + $this->color->getHashCode() . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Borders.php b/assets/excel/PHPExcel/Style/Borders.php new file mode 100644 index 0000000..27c40a4 --- /dev/null +++ b/assets/excel/PHPExcel/Style/Borders.php @@ -0,0 +1,429 @@ +<?php + +/** + * PHPExcel_Style_Borders + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Borders extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Diagonal directions */ + const DIAGONAL_NONE = 0; + const DIAGONAL_UP = 1; + const DIAGONAL_DOWN = 2; + const DIAGONAL_BOTH = 3; + + /** + * Left + * + * @var PHPExcel_Style_Border + */ + protected $left; + + /** + * Right + * + * @var PHPExcel_Style_Border + */ + protected $right; + + /** + * Top + * + * @var PHPExcel_Style_Border + */ + protected $top; + + /** + * Bottom + * + * @var PHPExcel_Style_Border + */ + protected $bottom; + + /** + * Diagonal + * + * @var PHPExcel_Style_Border + */ + protected $diagonal; + + /** + * DiagonalDirection + * + * @var int + */ + protected $diagonalDirection; + + /** + * All borders psedo-border. Only applies to supervisor. + * + * @var PHPExcel_Style_Border + */ + protected $allBorders; + + /** + * Outline psedo-border. Only applies to supervisor. + * + * @var PHPExcel_Style_Border + */ + protected $outline; + + /** + * Inside psedo-border. Only applies to supervisor. + * + * @var PHPExcel_Style_Border + */ + protected $inside; + + /** + * Vertical pseudo-border. Only applies to supervisor. + * + * @var PHPExcel_Style_Border + */ + protected $vertical; + + /** + * Horizontal pseudo-border. Only applies to supervisor. + * + * @var PHPExcel_Style_Border + */ + protected $horizontal; + + /** + * Create a new PHPExcel_Style_Borders + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + $this->left = new PHPExcel_Style_Border($isSupervisor, $isConditional); + $this->right = new PHPExcel_Style_Border($isSupervisor, $isConditional); + $this->top = new PHPExcel_Style_Border($isSupervisor, $isConditional); + $this->bottom = new PHPExcel_Style_Border($isSupervisor, $isConditional); + $this->diagonal = new PHPExcel_Style_Border($isSupervisor, $isConditional); + $this->diagonalDirection = PHPExcel_Style_Borders::DIAGONAL_NONE; + + // Specially for supervisor + if ($isSupervisor) { + // Initialize pseudo-borders + $this->allBorders = new PHPExcel_Style_Border(true); + $this->outline = new PHPExcel_Style_Border(true); + $this->inside = new PHPExcel_Style_Border(true); + $this->vertical = new PHPExcel_Style_Border(true); + $this->horizontal = new PHPExcel_Style_Border(true); + + // bind parent if we are a supervisor + $this->left->bindParent($this, 'left'); + $this->right->bindParent($this, 'right'); + $this->top->bindParent($this, 'top'); + $this->bottom->bindParent($this, 'bottom'); + $this->diagonal->bindParent($this, 'diagonal'); + $this->allBorders->bindParent($this, 'allBorders'); + $this->outline->bindParent($this, 'outline'); + $this->inside->bindParent($this, 'inside'); + $this->vertical->bindParent($this, 'vertical'); + $this->horizontal->bindParent($this, 'horizontal'); + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Borders + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getBorders(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('borders' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray( + * array( + * 'bottom' => array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ), + * 'top' => array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ) + * ) + * ); + * </code> + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray( + * array( + * 'allborders' => array( + * 'style' => PHPExcel_Style_Border::BORDER_DASHDOT, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ) + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Borders + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (array_key_exists('left', $pStyles)) { + $this->getLeft()->applyFromArray($pStyles['left']); + } + if (array_key_exists('right', $pStyles)) { + $this->getRight()->applyFromArray($pStyles['right']); + } + if (array_key_exists('top', $pStyles)) { + $this->getTop()->applyFromArray($pStyles['top']); + } + if (array_key_exists('bottom', $pStyles)) { + $this->getBottom()->applyFromArray($pStyles['bottom']); + } + if (array_key_exists('diagonal', $pStyles)) { + $this->getDiagonal()->applyFromArray($pStyles['diagonal']); + } + if (array_key_exists('diagonaldirection', $pStyles)) { + $this->setDiagonalDirection($pStyles['diagonaldirection']); + } + if (array_key_exists('allborders', $pStyles)) { + $this->getLeft()->applyFromArray($pStyles['allborders']); + $this->getRight()->applyFromArray($pStyles['allborders']); + $this->getTop()->applyFromArray($pStyles['allborders']); + $this->getBottom()->applyFromArray($pStyles['allborders']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Left + * + * @return PHPExcel_Style_Border + */ + public function getLeft() + { + return $this->left; + } + + /** + * Get Right + * + * @return PHPExcel_Style_Border + */ + public function getRight() + { + return $this->right; + } + + /** + * Get Top + * + * @return PHPExcel_Style_Border + */ + public function getTop() + { + return $this->top; + } + + /** + * Get Bottom + * + * @return PHPExcel_Style_Border + */ + public function getBottom() + { + return $this->bottom; + } + + /** + * Get Diagonal + * + * @return PHPExcel_Style_Border + */ + public function getDiagonal() + { + return $this->diagonal; + } + + /** + * Get AllBorders (pseudo-border). Only applies to supervisor. + * + * @return PHPExcel_Style_Border + * @throws PHPExcel_Exception + */ + public function getAllBorders() + { + if (!$this->isSupervisor) { + throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); + } + return $this->allBorders; + } + + /** + * Get Outline (pseudo-border). Only applies to supervisor. + * + * @return boolean + * @throws PHPExcel_Exception + */ + public function getOutline() + { + if (!$this->isSupervisor) { + throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); + } + return $this->outline; + } + + /** + * Get Inside (pseudo-border). Only applies to supervisor. + * + * @return boolean + * @throws PHPExcel_Exception + */ + public function getInside() + { + if (!$this->isSupervisor) { + throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); + } + return $this->inside; + } + + /** + * Get Vertical (pseudo-border). Only applies to supervisor. + * + * @return PHPExcel_Style_Border + * @throws PHPExcel_Exception + */ + public function getVertical() + { + if (!$this->isSupervisor) { + throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); + } + return $this->vertical; + } + + /** + * Get Horizontal (pseudo-border). Only applies to supervisor. + * + * @return PHPExcel_Style_Border + * @throws PHPExcel_Exception + */ + public function getHorizontal() + { + if (!$this->isSupervisor) { + throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.'); + } + return $this->horizontal; + } + + /** + * Get DiagonalDirection + * + * @return int + */ + public function getDiagonalDirection() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getDiagonalDirection(); + } + return $this->diagonalDirection; + } + + /** + * Set DiagonalDirection + * + * @param int $pValue + * @return PHPExcel_Style_Borders + */ + public function setDiagonalDirection($pValue = PHPExcel_Style_Borders::DIAGONAL_NONE) + { + if ($pValue == '') { + $pValue = PHPExcel_Style_Borders::DIAGONAL_NONE; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('diagonaldirection' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->diagonalDirection = $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashcode(); + } + return md5( + $this->getLeft()->getHashCode() . + $this->getRight()->getHashCode() . + $this->getTop()->getHashCode() . + $this->getBottom()->getHashCode() . + $this->getDiagonal()->getHashCode() . + $this->getDiagonalDirection() . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Color.php b/assets/excel/PHPExcel/Style/Color.php new file mode 100644 index 0000000..9c7790f --- /dev/null +++ b/assets/excel/PHPExcel/Style/Color.php @@ -0,0 +1,443 @@ +<?php + +/** + * PHPExcel_Style_Color + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Color extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Colors */ + const COLOR_BLACK = 'FF000000'; + const COLOR_WHITE = 'FFFFFFFF'; + const COLOR_RED = 'FFFF0000'; + const COLOR_DARKRED = 'FF800000'; + const COLOR_BLUE = 'FF0000FF'; + const COLOR_DARKBLUE = 'FF000080'; + const COLOR_GREEN = 'FF00FF00'; + const COLOR_DARKGREEN = 'FF008000'; + const COLOR_YELLOW = 'FFFFFF00'; + const COLOR_DARKYELLOW = 'FF808000'; + + /** + * Indexed colors array + * + * @var array + */ + protected static $indexedColors; + + /** + * ARGB - Alpha RGB + * + * @var string + */ + protected $argb = null; + + /** + * Parent property name + * + * @var string + */ + protected $parentPropertyName; + + + /** + * Create a new PHPExcel_Style_Color + * + * @param string $pARGB ARGB value for the colour + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + if (!$isConditional) { + $this->argb = $pARGB; + } + } + + /** + * Bind parent. Only used for supervisor + * + * @param mixed $parent + * @param string $parentPropertyName + * @return PHPExcel_Style_Color + */ + public function bindParent($parent, $parentPropertyName = null) + { + $this->parent = $parent; + $this->parentPropertyName = $parentPropertyName; + return $this; + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Color + */ + public function getSharedComponent() + { + switch ($this->parentPropertyName) { + case 'endColor': + return $this->parent->getSharedComponent()->getEndColor(); + case 'color': + return $this->parent->getSharedComponent()->getColor(); + case 'startColor': + return $this->parent->getSharedComponent()->getStartColor(); + } + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + switch ($this->parentPropertyName) { + case 'endColor': + $key = 'endcolor'; + break; + case 'color': + $key = 'color'; + break; + case 'startColor': + $key = 'startcolor'; + break; + + } + return $this->parent->getStyleArray(array($key => $array)); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Color + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (array_key_exists('rgb', $pStyles)) { + $this->setRGB($pStyles['rgb']); + } + if (array_key_exists('argb', $pStyles)) { + $this->setARGB($pStyles['argb']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get ARGB + * + * @return string + */ + public function getARGB() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getARGB(); + } + return $this->argb; + } + + /** + * Set ARGB + * + * @param string $pValue + * @return PHPExcel_Style_Color + */ + public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) + { + if ($pValue == '') { + $pValue = PHPExcel_Style_Color::COLOR_BLACK; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('argb' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->argb = $pValue; + } + return $this; + } + + /** + * Get RGB + * + * @return string + */ + public function getRGB() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getRGB(); + } + return substr($this->argb, 2); + } + + /** + * Set RGB + * + * @param string $pValue RGB value + * @return PHPExcel_Style_Color + */ + public function setRGB($pValue = '000000') + { + if ($pValue == '') { + $pValue = '000000'; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('argb' => 'FF' . $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->argb = 'FF' . $pValue; + } + return $this; + } + + /** + * Get a specified colour component of an RGB value + * + * @private + * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE + * @param int $offset Position within the RGB value to extract + * @param boolean $hex Flag indicating whether the component should be returned as a hex or a + * decimal value + * @return string The extracted colour component + */ + private static function getColourComponent($RGB, $offset, $hex = true) + { + $colour = substr($RGB, $offset, 2); + if (!$hex) { + $colour = hexdec($colour); + } + return $colour; + } + + /** + * Get the red colour component of an RGB value + * + * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE + * @param boolean $hex Flag indicating whether the component should be returned as a hex or a + * decimal value + * @return string The red colour component + */ + public static function getRed($RGB, $hex = true) + { + return self::getColourComponent($RGB, strlen($RGB) - 6, $hex); + } + + /** + * Get the green colour component of an RGB value + * + * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE + * @param boolean $hex Flag indicating whether the component should be returned as a hex or a + * decimal value + * @return string The green colour component + */ + public static function getGreen($RGB, $hex = true) + { + return self::getColourComponent($RGB, strlen($RGB) - 4, $hex); + } + + /** + * Get the blue colour component of an RGB value + * + * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE + * @param boolean $hex Flag indicating whether the component should be returned as a hex or a + * decimal value + * @return string The blue colour component + */ + public static function getBlue($RGB, $hex = true) + { + return self::getColourComponent($RGB, strlen($RGB) - 2, $hex); + } + + /** + * Adjust the brightness of a color + * + * @param string $hex The colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) + * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1 + * @return string The adjusted colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) + */ + public static function changeBrightness($hex, $adjustPercentage) + { + $rgba = (strlen($hex) == 8); + + $red = self::getRed($hex, false); + $green = self::getGreen($hex, false); + $blue = self::getBlue($hex, false); + if ($adjustPercentage > 0) { + $red += (255 - $red) * $adjustPercentage; + $green += (255 - $green) * $adjustPercentage; + $blue += (255 - $blue) * $adjustPercentage; + } else { + $red += $red * $adjustPercentage; + $green += $green * $adjustPercentage; + $blue += $blue * $adjustPercentage; + } + + if ($red < 0) { + $red = 0; + } elseif ($red > 255) { + $red = 255; + } + if ($green < 0) { + $green = 0; + } elseif ($green > 255) { + $green = 255; + } + if ($blue < 0) { + $blue = 0; + } elseif ($blue > 255) { + $blue = 255; + } + + $rgb = strtoupper( + str_pad(dechex($red), 2, '0', 0) . + str_pad(dechex($green), 2, '0', 0) . + str_pad(dechex($blue), 2, '0', 0) + ); + return (($rgba) ? 'FF' : '') . $rgb; + } + + /** + * Get indexed color + * + * @param int $pIndex Index entry point into the colour array + * @param boolean $background Flag to indicate whether default background or foreground colour + * should be returned if the indexed colour doesn't exist + * @return PHPExcel_Style_Color + */ + public static function indexedColor($pIndex, $background = false) + { + // Clean parameter + $pIndex = intval($pIndex); + + // Indexed colors + if (is_null(self::$indexedColors)) { + self::$indexedColors = array( + 1 => 'FF000000', // System Colour #1 - Black + 2 => 'FFFFFFFF', // System Colour #2 - White + 3 => 'FFFF0000', // System Colour #3 - Red + 4 => 'FF00FF00', // System Colour #4 - Green + 5 => 'FF0000FF', // System Colour #5 - Blue + 6 => 'FFFFFF00', // System Colour #6 - Yellow + 7 => 'FFFF00FF', // System Colour #7- Magenta + 8 => 'FF00FFFF', // System Colour #8- Cyan + 9 => 'FF800000', // Standard Colour #9 + 10 => 'FF008000', // Standard Colour #10 + 11 => 'FF000080', // Standard Colour #11 + 12 => 'FF808000', // Standard Colour #12 + 13 => 'FF800080', // Standard Colour #13 + 14 => 'FF008080', // Standard Colour #14 + 15 => 'FFC0C0C0', // Standard Colour #15 + 16 => 'FF808080', // Standard Colour #16 + 17 => 'FF9999FF', // Chart Fill Colour #17 + 18 => 'FF993366', // Chart Fill Colour #18 + 19 => 'FFFFFFCC', // Chart Fill Colour #19 + 20 => 'FFCCFFFF', // Chart Fill Colour #20 + 21 => 'FF660066', // Chart Fill Colour #21 + 22 => 'FFFF8080', // Chart Fill Colour #22 + 23 => 'FF0066CC', // Chart Fill Colour #23 + 24 => 'FFCCCCFF', // Chart Fill Colour #24 + 25 => 'FF000080', // Chart Line Colour #25 + 26 => 'FFFF00FF', // Chart Line Colour #26 + 27 => 'FFFFFF00', // Chart Line Colour #27 + 28 => 'FF00FFFF', // Chart Line Colour #28 + 29 => 'FF800080', // Chart Line Colour #29 + 30 => 'FF800000', // Chart Line Colour #30 + 31 => 'FF008080', // Chart Line Colour #31 + 32 => 'FF0000FF', // Chart Line Colour #32 + 33 => 'FF00CCFF', // Standard Colour #33 + 34 => 'FFCCFFFF', // Standard Colour #34 + 35 => 'FFCCFFCC', // Standard Colour #35 + 36 => 'FFFFFF99', // Standard Colour #36 + 37 => 'FF99CCFF', // Standard Colour #37 + 38 => 'FFFF99CC', // Standard Colour #38 + 39 => 'FFCC99FF', // Standard Colour #39 + 40 => 'FFFFCC99', // Standard Colour #40 + 41 => 'FF3366FF', // Standard Colour #41 + 42 => 'FF33CCCC', // Standard Colour #42 + 43 => 'FF99CC00', // Standard Colour #43 + 44 => 'FFFFCC00', // Standard Colour #44 + 45 => 'FFFF9900', // Standard Colour #45 + 46 => 'FFFF6600', // Standard Colour #46 + 47 => 'FF666699', // Standard Colour #47 + 48 => 'FF969696', // Standard Colour #48 + 49 => 'FF003366', // Standard Colour #49 + 50 => 'FF339966', // Standard Colour #50 + 51 => 'FF003300', // Standard Colour #51 + 52 => 'FF333300', // Standard Colour #52 + 53 => 'FF993300', // Standard Colour #53 + 54 => 'FF993366', // Standard Colour #54 + 55 => 'FF333399', // Standard Colour #55 + 56 => 'FF333333' // Standard Colour #56 + ); + } + + if (array_key_exists($pIndex, self::$indexedColors)) { + return new PHPExcel_Style_Color(self::$indexedColors[$pIndex]); + } + + if ($background) { + return new PHPExcel_Style_Color(self::COLOR_WHITE); + } + return new PHPExcel_Style_Color(self::COLOR_BLACK); + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->argb . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Conditional.php b/assets/excel/PHPExcel/Style/Conditional.php new file mode 100644 index 0000000..331362b --- /dev/null +++ b/assets/excel/PHPExcel/Style/Conditional.php @@ -0,0 +1,293 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Style_Conditional + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Style_Conditional implements PHPExcel_IComparable +{ + /* Condition types */ + const CONDITION_NONE = 'none'; + const CONDITION_CELLIS = 'cellIs'; + const CONDITION_CONTAINSTEXT = 'containsText'; + const CONDITION_EXPRESSION = 'expression'; + + /* Operator types */ + const OPERATOR_NONE = ''; + const OPERATOR_BEGINSWITH = 'beginsWith'; + const OPERATOR_ENDSWITH = 'endsWith'; + const OPERATOR_EQUAL = 'equal'; + const OPERATOR_GREATERTHAN = 'greaterThan'; + const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual'; + const OPERATOR_LESSTHAN = 'lessThan'; + const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual'; + const OPERATOR_NOTEQUAL = 'notEqual'; + const OPERATOR_CONTAINSTEXT = 'containsText'; + const OPERATOR_NOTCONTAINS = 'notContains'; + const OPERATOR_BETWEEN = 'between'; + + /** + * Condition type + * + * @var int + */ + private $conditionType; + + /** + * Operator type + * + * @var int + */ + private $operatorType; + + /** + * Text + * + * @var string + */ + private $text; + + /** + * Condition + * + * @var string[] + */ + private $condition = array(); + + /** + * Style + * + * @var PHPExcel_Style + */ + private $style; + + /** + * Create a new PHPExcel_Style_Conditional + */ + public function __construct() + { + // Initialise values + $this->conditionType = PHPExcel_Style_Conditional::CONDITION_NONE; + $this->operatorType = PHPExcel_Style_Conditional::OPERATOR_NONE; + $this->text = null; + $this->condition = array(); + $this->style = new PHPExcel_Style(false, true); + } + + /** + * Get Condition type + * + * @return string + */ + public function getConditionType() + { + return $this->conditionType; + } + + /** + * Set Condition type + * + * @param string $pValue PHPExcel_Style_Conditional condition type + * @return PHPExcel_Style_Conditional + */ + public function setConditionType($pValue = PHPExcel_Style_Conditional::CONDITION_NONE) + { + $this->conditionType = $pValue; + return $this; + } + + /** + * Get Operator type + * + * @return string + */ + public function getOperatorType() + { + return $this->operatorType; + } + + /** + * Set Operator type + * + * @param string $pValue PHPExcel_Style_Conditional operator type + * @return PHPExcel_Style_Conditional + */ + public function setOperatorType($pValue = PHPExcel_Style_Conditional::OPERATOR_NONE) + { + $this->operatorType = $pValue; + return $this; + } + + /** + * Get text + * + * @return string + */ + public function getText() + { + return $this->text; + } + + /** + * Set text + * + * @param string $value + * @return PHPExcel_Style_Conditional + */ + public function setText($value = null) + { + $this->text = $value; + return $this; + } + + /** + * Get Condition + * + * @deprecated Deprecated, use getConditions instead + * @return string + */ + public function getCondition() + { + if (isset($this->condition[0])) { + return $this->condition[0]; + } + + return ''; + } + + /** + * Set Condition + * + * @deprecated Deprecated, use setConditions instead + * @param string $pValue Condition + * @return PHPExcel_Style_Conditional + */ + public function setCondition($pValue = '') + { + if (!is_array($pValue)) { + $pValue = array($pValue); + } + + return $this->setConditions($pValue); + } + + /** + * Get Conditions + * + * @return string[] + */ + public function getConditions() + { + return $this->condition; + } + + /** + * Set Conditions + * + * @param string[] $pValue Condition + * @return PHPExcel_Style_Conditional + */ + public function setConditions($pValue) + { + if (!is_array($pValue)) { + $pValue = array($pValue); + } + $this->condition = $pValue; + return $this; + } + + /** + * Add Condition + * + * @param string $pValue Condition + * @return PHPExcel_Style_Conditional + */ + public function addCondition($pValue = '') + { + $this->condition[] = $pValue; + return $this; + } + + /** + * Get Style + * + * @return PHPExcel_Style + */ + public function getStyle() + { + return $this->style; + } + + /** + * Set Style + * + * @param PHPExcel_Style $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Conditional + */ + public function setStyle(PHPExcel_Style $pValue = null) + { + $this->style = $pValue; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->conditionType . + $this->operatorType . + implode(';', $this->condition) . + $this->style->getHashCode() . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Style/Fill.php b/assets/excel/PHPExcel/Style/Fill.php new file mode 100644 index 0000000..26343ff --- /dev/null +++ b/assets/excel/PHPExcel/Style/Fill.php @@ -0,0 +1,322 @@ +<?php + +/** + * PHPExcel_Style_Fill + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Fill extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Fill types */ + const FILL_NONE = 'none'; + const FILL_SOLID = 'solid'; + const FILL_GRADIENT_LINEAR = 'linear'; + const FILL_GRADIENT_PATH = 'path'; + const FILL_PATTERN_DARKDOWN = 'darkDown'; + const FILL_PATTERN_DARKGRAY = 'darkGray'; + const FILL_PATTERN_DARKGRID = 'darkGrid'; + const FILL_PATTERN_DARKHORIZONTAL = 'darkHorizontal'; + const FILL_PATTERN_DARKTRELLIS = 'darkTrellis'; + const FILL_PATTERN_DARKUP = 'darkUp'; + const FILL_PATTERN_DARKVERTICAL = 'darkVertical'; + const FILL_PATTERN_GRAY0625 = 'gray0625'; + const FILL_PATTERN_GRAY125 = 'gray125'; + const FILL_PATTERN_LIGHTDOWN = 'lightDown'; + const FILL_PATTERN_LIGHTGRAY = 'lightGray'; + const FILL_PATTERN_LIGHTGRID = 'lightGrid'; + const FILL_PATTERN_LIGHTHORIZONTAL = 'lightHorizontal'; + const FILL_PATTERN_LIGHTTRELLIS = 'lightTrellis'; + const FILL_PATTERN_LIGHTUP = 'lightUp'; + const FILL_PATTERN_LIGHTVERTICAL = 'lightVertical'; + const FILL_PATTERN_MEDIUMGRAY = 'mediumGray'; + + /** + * Fill type + * + * @var string + */ + protected $fillType = PHPExcel_Style_Fill::FILL_NONE; + + /** + * Rotation + * + * @var double + */ + protected $rotation = 0; + + /** + * Start color + * + * @var PHPExcel_Style_Color + */ + protected $startColor; + + /** + * End color + * + * @var PHPExcel_Style_Color + */ + protected $endColor; + + /** + * Create a new PHPExcel_Style_Fill + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + if ($isConditional) { + $this->fillType = null; + } + $this->startColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_WHITE, $isSupervisor, $isConditional); + $this->endColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional); + + // bind parent if we are a supervisor + if ($isSupervisor) { + $this->startColor->bindParent($this, 'startColor'); + $this->endColor->bindParent($this, 'endColor'); + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Fill + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getFill(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('fill' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->applyFromArray( + * array( + * 'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, + * 'rotation' => 0, + * 'startcolor' => array( + * 'rgb' => '000000' + * ), + * 'endcolor' => array( + * 'argb' => 'FFFFFFFF' + * ) + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Fill + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (array_key_exists('type', $pStyles)) { + $this->setFillType($pStyles['type']); + } + if (array_key_exists('rotation', $pStyles)) { + $this->setRotation($pStyles['rotation']); + } + if (array_key_exists('startcolor', $pStyles)) { + $this->getStartColor()->applyFromArray($pStyles['startcolor']); + } + if (array_key_exists('endcolor', $pStyles)) { + $this->getEndColor()->applyFromArray($pStyles['endcolor']); + } + if (array_key_exists('color', $pStyles)) { + $this->getStartColor()->applyFromArray($pStyles['color']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Fill Type + * + * @return string + */ + public function getFillType() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getFillType(); + } + return $this->fillType; + } + + /** + * Set Fill Type + * + * @param string $pValue PHPExcel_Style_Fill fill type + * @return PHPExcel_Style_Fill + */ + public function setFillType($pValue = PHPExcel_Style_Fill::FILL_NONE) + { + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('type' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->fillType = $pValue; + } + return $this; + } + + /** + * Get Rotation + * + * @return double + */ + public function getRotation() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getRotation(); + } + return $this->rotation; + } + + /** + * Set Rotation + * + * @param double $pValue + * @return PHPExcel_Style_Fill + */ + public function setRotation($pValue = 0) + { + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('rotation' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->rotation = $pValue; + } + return $this; + } + + /** + * Get Start Color + * + * @return PHPExcel_Style_Color + */ + public function getStartColor() + { + return $this->startColor; + } + + /** + * Set Start Color + * + * @param PHPExcel_Style_Color $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Fill + */ + public function setStartColor(PHPExcel_Style_Color $pValue = null) + { + // make sure parameter is a real color and not a supervisor + $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; + + if ($this->isSupervisor) { + $styleArray = $this->getStartColor()->getStyleArray(array('argb' => $color->getARGB())); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->startColor = $color; + } + return $this; + } + + /** + * Get End Color + * + * @return PHPExcel_Style_Color + */ + public function getEndColor() + { + return $this->endColor; + } + + /** + * Set End Color + * + * @param PHPExcel_Style_Color $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Fill + */ + public function setEndColor(PHPExcel_Style_Color $pValue = null) + { + // make sure parameter is a real color and not a supervisor + $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; + + if ($this->isSupervisor) { + $styleArray = $this->getEndColor()->getStyleArray(array('argb' => $color->getARGB())); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->endColor = $color; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->getFillType() . + $this->getRotation() . + $this->getStartColor()->getHashCode() . + $this->getEndColor()->getHashCode() . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Font.php b/assets/excel/PHPExcel/Style/Font.php new file mode 100644 index 0000000..9566e1d --- /dev/null +++ b/assets/excel/PHPExcel/Style/Font.php @@ -0,0 +1,543 @@ +<?php + +/** + * PHPExcel_Style_Font + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Font extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Underline types */ + const UNDERLINE_NONE = 'none'; + const UNDERLINE_DOUBLE = 'double'; + const UNDERLINE_DOUBLEACCOUNTING = 'doubleAccounting'; + const UNDERLINE_SINGLE = 'single'; + const UNDERLINE_SINGLEACCOUNTING = 'singleAccounting'; + + /** + * Font Name + * + * @var string + */ + protected $name = 'Calibri'; + + /** + * Font Size + * + * @var float + */ + protected $size = 11; + + /** + * Bold + * + * @var boolean + */ + protected $bold = false; + + /** + * Italic + * + * @var boolean + */ + protected $italic = false; + + /** + * Superscript + * + * @var boolean + */ + protected $superScript = false; + + /** + * Subscript + * + * @var boolean + */ + protected $subScript = false; + + /** + * Underline + * + * @var string + */ + protected $underline = self::UNDERLINE_NONE; + + /** + * Strikethrough + * + * @var boolean + */ + protected $strikethrough = false; + + /** + * Foreground color + * + * @var PHPExcel_Style_Color + */ + protected $color; + + /** + * Create a new PHPExcel_Style_Font + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + if ($isConditional) { + $this->name = null; + $this->size = null; + $this->bold = null; + $this->italic = null; + $this->superScript = null; + $this->subScript = null; + $this->underline = null; + $this->strikethrough = null; + $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional); + } else { + $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor); + } + // bind parent if we are a supervisor + if ($isSupervisor) { + $this->color->bindParent($this, 'color'); + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Font + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getFont(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('font' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->applyFromArray( + * array( + * 'name' => 'Arial', + * 'bold' => TRUE, + * 'italic' => FALSE, + * 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE, + * 'strike' => FALSE, + * 'color' => array( + * 'rgb' => '808080' + * ) + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Font + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (array_key_exists('name', $pStyles)) { + $this->setName($pStyles['name']); + } + if (array_key_exists('bold', $pStyles)) { + $this->setBold($pStyles['bold']); + } + if (array_key_exists('italic', $pStyles)) { + $this->setItalic($pStyles['italic']); + } + if (array_key_exists('superScript', $pStyles)) { + $this->setSuperScript($pStyles['superScript']); + } + if (array_key_exists('subScript', $pStyles)) { + $this->setSubScript($pStyles['subScript']); + } + if (array_key_exists('underline', $pStyles)) { + $this->setUnderline($pStyles['underline']); + } + if (array_key_exists('strike', $pStyles)) { + $this->setStrikethrough($pStyles['strike']); + } + if (array_key_exists('color', $pStyles)) { + $this->getColor()->applyFromArray($pStyles['color']); + } + if (array_key_exists('size', $pStyles)) { + $this->setSize($pStyles['size']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Name + * + * @return string + */ + public function getName() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getName(); + } + return $this->name; + } + + /** + * Set Name + * + * @param string $pValue + * @return PHPExcel_Style_Font + */ + public function setName($pValue = 'Calibri') + { + if ($pValue == '') { + $pValue = 'Calibri'; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('name' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->name = $pValue; + } + return $this; + } + + /** + * Get Size + * + * @return double + */ + public function getSize() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getSize(); + } + return $this->size; + } + + /** + * Set Size + * + * @param double $pValue + * @return PHPExcel_Style_Font + */ + public function setSize($pValue = 10) + { + if ($pValue == '') { + $pValue = 10; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('size' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->size = $pValue; + } + return $this; + } + + /** + * Get Bold + * + * @return boolean + */ + public function getBold() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getBold(); + } + return $this->bold; + } + + /** + * Set Bold + * + * @param boolean $pValue + * @return PHPExcel_Style_Font + */ + public function setBold($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('bold' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->bold = $pValue; + } + return $this; + } + + /** + * Get Italic + * + * @return boolean + */ + public function getItalic() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getItalic(); + } + return $this->italic; + } + + /** + * Set Italic + * + * @param boolean $pValue + * @return PHPExcel_Style_Font + */ + public function setItalic($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('italic' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->italic = $pValue; + } + return $this; + } + + /** + * Get SuperScript + * + * @return boolean + */ + public function getSuperScript() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getSuperScript(); + } + return $this->superScript; + } + + /** + * Set SuperScript + * + * @param boolean $pValue + * @return PHPExcel_Style_Font + */ + public function setSuperScript($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('superScript' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->superScript = $pValue; + $this->subScript = !$pValue; + } + return $this; + } + + /** + * Get SubScript + * + * @return boolean + */ + public function getSubScript() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getSubScript(); + } + return $this->subScript; + } + + /** + * Set SubScript + * + * @param boolean $pValue + * @return PHPExcel_Style_Font + */ + public function setSubScript($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('subScript' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->subScript = $pValue; + $this->superScript = !$pValue; + } + return $this; + } + + /** + * Get Underline + * + * @return string + */ + public function getUnderline() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getUnderline(); + } + return $this->underline; + } + + /** + * Set Underline + * + * @param string|boolean $pValue PHPExcel_Style_Font underline type + * If a boolean is passed, then TRUE equates to UNDERLINE_SINGLE, + * false equates to UNDERLINE_NONE + * @return PHPExcel_Style_Font + */ + public function setUnderline($pValue = self::UNDERLINE_NONE) + { + if (is_bool($pValue)) { + $pValue = ($pValue) ? self::UNDERLINE_SINGLE : self::UNDERLINE_NONE; + } elseif ($pValue == '') { + $pValue = self::UNDERLINE_NONE; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('underline' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->underline = $pValue; + } + return $this; + } + + /** + * Get Strikethrough + * + * @return boolean + */ + public function getStrikethrough() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getStrikethrough(); + } + return $this->strikethrough; + } + + /** + * Set Strikethrough + * + * @param boolean $pValue + * @return PHPExcel_Style_Font + */ + public function setStrikethrough($pValue = false) + { + if ($pValue == '') { + $pValue = false; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('strike' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->strikethrough = $pValue; + } + return $this; + } + + /** + * Get Color + * + * @return PHPExcel_Style_Color + */ + public function getColor() + { + return $this->color; + } + + /** + * Set Color + * + * @param PHPExcel_Style_Color $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Font + */ + public function setColor(PHPExcel_Style_Color $pValue = null) + { + // make sure parameter is a real color and not a supervisor + $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; + + if ($this->isSupervisor) { + $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB())); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->color = $color; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->name . + $this->size . + ($this->bold ? 't' : 'f') . + ($this->italic ? 't' : 'f') . + ($this->superScript ? 't' : 'f') . + ($this->subScript ? 't' : 'f') . + $this->underline . + ($this->strikethrough ? 't' : 'f') . + $this->color->getHashCode() . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/NumberFormat.php b/assets/excel/PHPExcel/Style/NumberFormat.php new file mode 100644 index 0000000..1b72cda --- /dev/null +++ b/assets/excel/PHPExcel/Style/NumberFormat.php @@ -0,0 +1,751 @@ +<?php + +/** + * PHPExcel_Style_NumberFormat + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_NumberFormat extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /* Pre-defined formats */ + const FORMAT_GENERAL = 'General'; + + const FORMAT_TEXT = '@'; + + const FORMAT_NUMBER = '0'; + const FORMAT_NUMBER_00 = '0.00'; + const FORMAT_NUMBER_COMMA_SEPARATED1 = '#,##0.00'; + const FORMAT_NUMBER_COMMA_SEPARATED2 = '#,##0.00_-'; + + const FORMAT_PERCENTAGE = '0%'; + const FORMAT_PERCENTAGE_00 = '0.00%'; + + const FORMAT_DATE_YYYYMMDD2 = 'yyyy-mm-dd'; + const FORMAT_DATE_YYYYMMDD = 'yy-mm-dd'; + const FORMAT_DATE_DDMMYYYY = 'dd/mm/yy'; + const FORMAT_DATE_DMYSLASH = 'd/m/y'; + const FORMAT_DATE_DMYMINUS = 'd-m-y'; + const FORMAT_DATE_DMMINUS = 'd-m'; + const FORMAT_DATE_MYMINUS = 'm-y'; + const FORMAT_DATE_XLSX14 = 'mm-dd-yy'; + const FORMAT_DATE_XLSX15 = 'd-mmm-yy'; + const FORMAT_DATE_XLSX16 = 'd-mmm'; + const FORMAT_DATE_XLSX17 = 'mmm-yy'; + const FORMAT_DATE_XLSX22 = 'm/d/yy h:mm'; + const FORMAT_DATE_DATETIME = 'd/m/y h:mm'; + const FORMAT_DATE_TIME1 = 'h:mm AM/PM'; + const FORMAT_DATE_TIME2 = 'h:mm:ss AM/PM'; + const FORMAT_DATE_TIME3 = 'h:mm'; + const FORMAT_DATE_TIME4 = 'h:mm:ss'; + const FORMAT_DATE_TIME5 = 'mm:ss'; + const FORMAT_DATE_TIME6 = 'h:mm:ss'; + const FORMAT_DATE_TIME7 = 'i:s.S'; + const FORMAT_DATE_TIME8 = 'h:mm:ss;@'; + const FORMAT_DATE_YYYYMMDDSLASH = 'yy/mm/dd;@'; + + const FORMAT_CURRENCY_USD_SIMPLE = '"$"#,##0.00_-'; + const FORMAT_CURRENCY_USD = '$#,##0_-'; + const FORMAT_CURRENCY_EUR_SIMPLE = '[$EUR ]#,##0.00_-'; + + /** + * Excel built-in number formats + * + * @var array + */ + protected static $builtInFormats; + + /** + * Excel built-in number formats (flipped, for faster lookups) + * + * @var array + */ + protected static $flippedBuiltInFormats; + + /** + * Format Code + * + * @var string + */ + protected $formatCode = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; + + /** + * Built-in format Code + * + * @var string + */ + protected $builtInFormatCode = 0; + + /** + * Create a new PHPExcel_Style_NumberFormat + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + if ($isConditional) { + $this->formatCode = null; + $this->builtInFormatCode = false; + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_NumberFormat + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getNumberFormat(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('numberformat' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getNumberFormat()->applyFromArray( + * array( + * 'code' => PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_NumberFormat + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (array_key_exists('code', $pStyles)) { + $this->setFormatCode($pStyles['code']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get Format Code + * + * @return string + */ + public function getFormatCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getFormatCode(); + } + if ($this->builtInFormatCode !== false) { + return self::builtInFormatCode($this->builtInFormatCode); + } + return $this->formatCode; + } + + /** + * Set Format Code + * + * @param string $pValue + * @return PHPExcel_Style_NumberFormat + */ + public function setFormatCode($pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL) + { + if ($pValue == '') { + $pValue = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; + } + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('code' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->formatCode = $pValue; + $this->builtInFormatCode = self::builtInFormatCodeIndex($pValue); + } + return $this; + } + + /** + * Get Built-In Format Code + * + * @return int + */ + public function getBuiltInFormatCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getBuiltInFormatCode(); + } + return $this->builtInFormatCode; + } + + /** + * Set Built-In Format Code + * + * @param int $pValue + * @return PHPExcel_Style_NumberFormat + */ + public function setBuiltInFormatCode($pValue = 0) + { + + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('code' => self::builtInFormatCode($pValue))); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->builtInFormatCode = $pValue; + $this->formatCode = self::builtInFormatCode($pValue); + } + return $this; + } + + /** + * Fill built-in format codes + */ + private static function fillBuiltInFormatCodes() + { + // [MS-OI29500: Microsoft Office Implementation Information for ISO/IEC-29500 Standard Compliance] + // 18.8.30. numFmt (Number Format) + // + // The ECMA standard defines built-in format IDs + // 14: "mm-dd-yy" + // 22: "m/d/yy h:mm" + // 37: "#,##0 ;(#,##0)" + // 38: "#,##0 ;[Red](#,##0)" + // 39: "#,##0.00;(#,##0.00)" + // 40: "#,##0.00;[Red](#,##0.00)" + // 47: "mmss.0" + // KOR fmt 55: "yyyy-mm-dd" + // Excel defines built-in format IDs + // 14: "m/d/yyyy" + // 22: "m/d/yyyy h:mm" + // 37: "#,##0_);(#,##0)" + // 38: "#,##0_);[Red](#,##0)" + // 39: "#,##0.00_);(#,##0.00)" + // 40: "#,##0.00_);[Red](#,##0.00)" + // 47: "mm:ss.0" + // KOR fmt 55: "yyyy/mm/dd" + + // Built-in format codes + if (is_null(self::$builtInFormats)) { + self::$builtInFormats = array(); + + // General + self::$builtInFormats[0] = PHPExcel_Style_NumberFormat::FORMAT_GENERAL; + self::$builtInFormats[1] = '0'; + self::$builtInFormats[2] = '0.00'; + self::$builtInFormats[3] = '#,##0'; + self::$builtInFormats[4] = '#,##0.00'; + + self::$builtInFormats[9] = '0%'; + self::$builtInFormats[10] = '0.00%'; + self::$builtInFormats[11] = '0.00E+00'; + self::$builtInFormats[12] = '# ?/?'; + self::$builtInFormats[13] = '# ??/??'; + self::$builtInFormats[14] = 'm/d/yyyy'; // Despite ECMA 'mm-dd-yy'; + self::$builtInFormats[15] = 'd-mmm-yy'; + self::$builtInFormats[16] = 'd-mmm'; + self::$builtInFormats[17] = 'mmm-yy'; + self::$builtInFormats[18] = 'h:mm AM/PM'; + self::$builtInFormats[19] = 'h:mm:ss AM/PM'; + self::$builtInFormats[20] = 'h:mm'; + self::$builtInFormats[21] = 'h:mm:ss'; + self::$builtInFormats[22] = 'm/d/yyyy h:mm'; // Despite ECMA 'm/d/yy h:mm'; + + self::$builtInFormats[37] = '#,##0_);(#,##0)'; // Despite ECMA '#,##0 ;(#,##0)'; + self::$builtInFormats[38] = '#,##0_);[Red](#,##0)'; // Despite ECMA '#,##0 ;[Red](#,##0)'; + self::$builtInFormats[39] = '#,##0.00_);(#,##0.00)'; // Despite ECMA '#,##0.00;(#,##0.00)'; + self::$builtInFormats[40] = '#,##0.00_);[Red](#,##0.00)'; // Despite ECMA '#,##0.00;[Red](#,##0.00)'; + + self::$builtInFormats[44] = '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)'; + self::$builtInFormats[45] = 'mm:ss'; + self::$builtInFormats[46] = '[h]:mm:ss'; + self::$builtInFormats[47] = 'mm:ss.0'; // Despite ECMA 'mmss.0'; + self::$builtInFormats[48] = '##0.0E+0'; + self::$builtInFormats[49] = '@'; + + // CHT + self::$builtInFormats[27] = '[$-404]e/m/d'; + self::$builtInFormats[30] = 'm/d/yy'; + self::$builtInFormats[36] = '[$-404]e/m/d'; + self::$builtInFormats[50] = '[$-404]e/m/d'; + self::$builtInFormats[57] = '[$-404]e/m/d'; + + // THA + self::$builtInFormats[59] = 't0'; + self::$builtInFormats[60] = 't0.00'; + self::$builtInFormats[61] = 't#,##0'; + self::$builtInFormats[62] = 't#,##0.00'; + self::$builtInFormats[67] = 't0%'; + self::$builtInFormats[68] = 't0.00%'; + self::$builtInFormats[69] = 't# ?/?'; + self::$builtInFormats[70] = 't# ??/??'; + + // Flip array (for faster lookups) + self::$flippedBuiltInFormats = array_flip(self::$builtInFormats); + } + } + + /** + * Get built-in format code + * + * @param int $pIndex + * @return string + */ + public static function builtInFormatCode($pIndex) + { + // Clean parameter + $pIndex = intval($pIndex); + + // Ensure built-in format codes are available + self::fillBuiltInFormatCodes(); + // Lookup format code + if (isset(self::$builtInFormats[$pIndex])) { + return self::$builtInFormats[$pIndex]; + } + + return ''; + } + + /** + * Get built-in format code index + * + * @param string $formatCode + * @return int|boolean + */ + public static function builtInFormatCodeIndex($formatCode) + { + // Ensure built-in format codes are available + self::fillBuiltInFormatCodes(); + + // Lookup format code + if (isset(self::$flippedBuiltInFormats[$formatCode])) { + return self::$flippedBuiltInFormats[$formatCode]; + } + + return false; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->formatCode . + $this->builtInFormatCode . + __CLASS__ + ); + } + + /** + * Search/replace values to convert Excel date/time format masks to PHP format masks + * + * @var array + */ + private static $dateFormatReplacements = array( + // first remove escapes related to non-format characters + '\\' => '', + // 12-hour suffix + 'am/pm' => 'A', + // 4-digit year + 'e' => 'Y', + 'yyyy' => 'Y', + // 2-digit year + 'yy' => 'y', + // first letter of month - no php equivalent + 'mmmmm' => 'M', + // full month name + 'mmmm' => 'F', + // short month name + 'mmm' => 'M', + // mm is minutes if time, but can also be month w/leading zero + // so we try to identify times be the inclusion of a : separator in the mask + // It isn't perfect, but the best way I know how + ':mm' => ':i', + 'mm:' => 'i:', + // month leading zero + 'mm' => 'm', + // month no leading zero + 'm' => 'n', + // full day of week name + 'dddd' => 'l', + // short day of week name + 'ddd' => 'D', + // days leading zero + 'dd' => 'd', + // days no leading zero + 'd' => 'j', + // seconds + 'ss' => 's', + // fractional seconds - no php equivalent + '.s' => '' + ); + /** + * Search/replace values to convert Excel date/time format masks hours to PHP format masks (24 hr clock) + * + * @var array + */ + private static $dateFormatReplacements24 = array( + 'hh' => 'H', + 'h' => 'G' + ); + /** + * Search/replace values to convert Excel date/time format masks hours to PHP format masks (12 hr clock) + * + * @var array + */ + private static $dateFormatReplacements12 = array( + 'hh' => 'h', + 'h' => 'g' + ); + + private static function setLowercaseCallback($matches) { + return mb_strtolower($matches[0]); + } + + private static function escapeQuotesCallback($matches) { + return '\\' . implode('\\', str_split($matches[1])); + } + + private static function formatAsDate(&$value, &$format) + { + // strip off first part containing e.g. [$-F800] or [$USD-409] + // general syntax: [$<Currency string>-<language info>] + // language info is in hexadecimal + $format = preg_replace('/^(\[\$[A-Z]*-[0-9A-F]*\])/i', '', $format); + + // OpenOffice.org uses upper-case number formats, e.g. 'YYYY', convert to lower-case; + // but we don't want to change any quoted strings + $format = preg_replace_callback('/(?:^|")([^"]*)(?:$|")/', array('self', 'setLowercaseCallback'), $format); + + // Only process the non-quoted blocks for date format characters + $blocks = explode('"', $format); + foreach($blocks as $key => &$block) { + if ($key % 2 == 0) { + $block = strtr($block, self::$dateFormatReplacements); + if (!strpos($block, 'A')) { + // 24-hour time format + $block = strtr($block, self::$dateFormatReplacements24); + } else { + // 12-hour time format + $block = strtr($block, self::$dateFormatReplacements12); + } + } + } + $format = implode('"', $blocks); + + // escape any quoted characters so that DateTime format() will render them correctly + $format = preg_replace_callback('/"(.*)"/U', array('self', 'escapeQuotesCallback'), $format); + + $dateObj = PHPExcel_Shared_Date::ExcelToPHPObject($value); + $value = $dateObj->format($format); + } + + private static function formatAsPercentage(&$value, &$format) + { + if ($format === self::FORMAT_PERCENTAGE) { + $value = round((100 * $value), 0) . '%'; + } else { + if (preg_match('/\.[#0]+/i', $format, $m)) { + $s = substr($m[0], 0, 1) . (strlen($m[0]) - 1); + $format = str_replace($m[0], $s, $format); + } + if (preg_match('/^[#0]+/', $format, $m)) { + $format = str_replace($m[0], strlen($m[0]), $format); + } + $format = '%' . str_replace('%', 'f%%', $format); + + $value = sprintf($format, 100 * $value); + } + } + + private static function formatAsFraction(&$value, &$format) + { + $sign = ($value < 0) ? '-' : ''; + + $integerPart = floor(abs($value)); + $decimalPart = trim(fmod(abs($value), 1), '0.'); + $decimalLength = strlen($decimalPart); + $decimalDivisor = pow(10, $decimalLength); + + $GCD = PHPExcel_Calculation_MathTrig::GCD($decimalPart, $decimalDivisor); + + $adjustedDecimalPart = $decimalPart/$GCD; + $adjustedDecimalDivisor = $decimalDivisor/$GCD; + + if ((strpos($format, '0') !== false) || (strpos($format, '#') !== false) || (substr($format, 0, 3) == '? ?')) { + if ($integerPart == 0) { + $integerPart = ''; + } + $value = "$sign$integerPart $adjustedDecimalPart/$adjustedDecimalDivisor"; + } else { + $adjustedDecimalPart += $integerPart * $adjustedDecimalDivisor; + $value = "$sign$adjustedDecimalPart/$adjustedDecimalDivisor"; + } + } + + private static function complexNumberFormatMask($number, $mask, $level = 0) + { + $sign = ($number < 0.0); + $number = abs($number); + if (strpos($mask, '.') !== false) { + $numbers = explode('.', $number . '.0'); + $masks = explode('.', $mask . '.0'); + $result1 = self::complexNumberFormatMask($numbers[0], $masks[0], 1); + $result2 = strrev(self::complexNumberFormatMask(strrev($numbers[1]), strrev($masks[1]), 1)); + return (($sign) ? '-' : '') . $result1 . '.' . $result2; + } + + $r = preg_match_all('/0+/', $mask, $result, PREG_OFFSET_CAPTURE); + if ($r > 1) { + $result = array_reverse($result[0]); + + foreach ($result as $block) { + $divisor = 1 . $block[0]; + $size = strlen($block[0]); + $offset = $block[1]; + + $blockValue = sprintf( + '%0' . $size . 'd', + fmod($number, $divisor) + ); + $number = floor($number / $divisor); + $mask = substr_replace($mask, $blockValue, $offset, $size); + } + if ($number > 0) { + $mask = substr_replace($mask, $number, $offset, 0); + } + $result = $mask; + } else { + $result = $number; + } + + return (($sign) ? '-' : '') . $result; + } + + /** + * Convert a value in a pre-defined format to a PHP string + * + * @param mixed $value Value to format + * @param string $format Format code + * @param array $callBack Callback function for additional formatting of string + * @return string Formatted string + */ + public static function toFormattedString($value = '0', $format = PHPExcel_Style_NumberFormat::FORMAT_GENERAL, $callBack = null) + { + // For now we do not treat strings although section 4 of a format code affects strings + if (!is_numeric($value)) { + return $value; + } + + // For 'General' format code, we just pass the value although this is not entirely the way Excel does it, + // it seems to round numbers to a total of 10 digits. + if (($format === PHPExcel_Style_NumberFormat::FORMAT_GENERAL) || ($format === PHPExcel_Style_NumberFormat::FORMAT_TEXT)) { + return $value; + } + + // Convert any other escaped characters to quoted strings, e.g. (\T to "T") + $format = preg_replace('/(\\\(.))(?=(?:[^"]|"[^"]*")*$)/u', '"${2}"', $format); + + // Get the sections, there can be up to four sections, separated with a semi-colon (but only if not a quoted literal) + $sections = preg_split('/(;)(?=(?:[^"]|"[^"]*")*$)/u', $format); + + // Extract the relevant section depending on whether number is positive, negative, or zero? + // Text not supported yet. + // Here is how the sections apply to various values in Excel: + // 1 section: [POSITIVE/NEGATIVE/ZERO/TEXT] + // 2 sections: [POSITIVE/ZERO/TEXT] [NEGATIVE] + // 3 sections: [POSITIVE/TEXT] [NEGATIVE] [ZERO] + // 4 sections: [POSITIVE] [NEGATIVE] [ZERO] [TEXT] + switch (count($sections)) { + case 1: + $format = $sections[0]; + break; + case 2: + $format = ($value >= 0) ? $sections[0] : $sections[1]; + $value = abs($value); // Use the absolute value + break; + case 3: + $format = ($value > 0) ? + $sections[0] : ( ($value < 0) ? + $sections[1] : $sections[2]); + $value = abs($value); // Use the absolute value + break; + case 4: + $format = ($value > 0) ? + $sections[0] : ( ($value < 0) ? + $sections[1] : $sections[2]); + $value = abs($value); // Use the absolute value + break; + default: + // something is wrong, just use first section + $format = $sections[0]; + break; + } + + // In Excel formats, "_" is used to add spacing, + // The following character indicates the size of the spacing, which we can't do in HTML, so we just use a standard space + $format = preg_replace('/_./', ' ', $format); + + // Save format with color information for later use below + $formatColor = $format; + + // Strip color information + $color_regex = '/^\\[[a-zA-Z]+\\]/'; + $format = preg_replace($color_regex, '', $format); + + // Let's begin inspecting the format and converting the value to a formatted string + + // Check for date/time characters (not inside quotes) + if (preg_match('/(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy](?=(?:[^"]|"[^"]*")*$)/miu', $format, $matches)) { + // datetime format + self::formatAsDate($value, $format); + } elseif (preg_match('/%$/', $format)) { + // % number format + self::formatAsPercentage($value, $format); + } else { + if ($format === self::FORMAT_CURRENCY_EUR_SIMPLE) { + $value = 'EUR ' . sprintf('%1.2f', $value); + } else { + // Some non-number strings are quoted, so we'll get rid of the quotes, likewise any positional * symbols + $format = str_replace(array('"', '*'), '', $format); + + // Find out if we need thousands separator + // This is indicated by a comma enclosed by a digit placeholder: + // #,# or 0,0 + $useThousands = preg_match('/(#,#|0,0)/', $format); + if ($useThousands) { + $format = preg_replace('/0,0/', '00', $format); + $format = preg_replace('/#,#/', '##', $format); + } + + // Scale thousands, millions,... + // This is indicated by a number of commas after a digit placeholder: + // #, or 0.0,, + $scale = 1; // same as no scale + $matches = array(); + if (preg_match('/(#|0)(,+)/', $format, $matches)) { + $scale = pow(1000, strlen($matches[2])); + + // strip the commas + $format = preg_replace('/0,+/', '0', $format); + $format = preg_replace('/#,+/', '#', $format); + } + + if (preg_match('/#?.*\?\/\?/', $format, $m)) { + //echo 'Format mask is fractional '.$format.' <br />'; + if ($value != (int)$value) { + self::formatAsFraction($value, $format); + } + + } else { + // Handle the number itself + + // scale number + $value = $value / $scale; + + // Strip # + $format = preg_replace('/\\#/', '0', $format); + + $n = "/\[[^\]]+\]/"; + $m = preg_replace($n, '', $format); + $number_regex = "/(0+)(\.?)(0*)/"; + if (preg_match($number_regex, $m, $matches)) { + $left = $matches[1]; + $dec = $matches[2]; + $right = $matches[3]; + + // minimun width of formatted number (including dot) + $minWidth = strlen($left) + strlen($dec) + strlen($right); + if ($useThousands) { + $value = number_format( + $value, + strlen($right), + PHPExcel_Shared_String::getDecimalSeparator(), + PHPExcel_Shared_String::getThousandsSeparator() + ); + $value = preg_replace($number_regex, $value, $format); + } else { + if (preg_match('/[0#]E[+-]0/i', $format)) { + // Scientific format + $value = sprintf('%5.2E', $value); + } elseif (preg_match('/0([^\d\.]+)0/', $format)) { + $value = self::complexNumberFormatMask($value, $format); + } else { + $sprintf_pattern = "%0$minWidth." . strlen($right) . "f"; + $value = sprintf($sprintf_pattern, $value); + $value = preg_replace($number_regex, $value, $format); + } + } + } + } + if (preg_match('/\[\$(.*)\]/u', $format, $m)) { + // Currency or Accounting + $currencyFormat = $m[0]; + $currencyCode = $m[1]; + list($currencyCode) = explode('-', $currencyCode); + if ($currencyCode == '') { + $currencyCode = PHPExcel_Shared_String::getCurrencyCode(); + } + $value = preg_replace('/\[\$([^\]]*)\]/u', $currencyCode, $value); + } + } + } + + // Escape any escaped slashes to a single slash + $format = preg_replace("/\\\\/u", '\\', $format); + + // Additional formatting provided by callback function + if ($callBack !== null) { + list($writerInstance, $function) = $callBack; + $value = $writerInstance->$function($value, $formatColor); + } + + return $value; + } +} diff --git a/assets/excel/PHPExcel/Style/Protection.php b/assets/excel/PHPExcel/Style/Protection.php new file mode 100644 index 0000000..d5568f6 --- /dev/null +++ b/assets/excel/PHPExcel/Style/Protection.php @@ -0,0 +1,204 @@ +<?php + +/** + * PHPExcel_Style_Protection + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Style_Protection extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable +{ + /** Protection styles */ + const PROTECTION_INHERIT = 'inherit'; + const PROTECTION_PROTECTED = 'protected'; + const PROTECTION_UNPROTECTED = 'unprotected'; + + /** + * Locked + * + * @var string + */ + protected $locked; + + /** + * Hidden + * + * @var string + */ + protected $hidden; + + /** + * Create a new PHPExcel_Style_Protection + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + * @param boolean $isConditional Flag indicating if this is a conditional style or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false, $isConditional = false) + { + // Supervisor? + parent::__construct($isSupervisor); + + // Initialise values + if (!$isConditional) { + $this->locked = self::PROTECTION_INHERIT; + $this->hidden = self::PROTECTION_INHERIT; + } + } + + /** + * Get the shared style component for the currently active cell in currently active sheet. + * Only used for style supervisor + * + * @return PHPExcel_Style_Protection + */ + public function getSharedComponent() + { + return $this->parent->getSharedComponent()->getProtection(); + } + + /** + * Build style array from subcomponents + * + * @param array $array + * @return array + */ + public function getStyleArray($array) + { + return array('protection' => $array); + } + + /** + * Apply styles from array + * + * <code> + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getLocked()->applyFromArray( + * array( + * 'locked' => TRUE, + * 'hidden' => FALSE + * ) + * ); + * </code> + * + * @param array $pStyles Array containing style information + * @throws PHPExcel_Exception + * @return PHPExcel_Style_Protection + */ + public function applyFromArray($pStyles = null) + { + if (is_array($pStyles)) { + if ($this->isSupervisor) { + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); + } else { + if (isset($pStyles['locked'])) { + $this->setLocked($pStyles['locked']); + } + if (isset($pStyles['hidden'])) { + $this->setHidden($pStyles['hidden']); + } + } + } else { + throw new PHPExcel_Exception("Invalid style array passed."); + } + return $this; + } + + /** + * Get locked + * + * @return string + */ + public function getLocked() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getLocked(); + } + return $this->locked; + } + + /** + * Set locked + * + * @param string $pValue + * @return PHPExcel_Style_Protection + */ + public function setLocked($pValue = self::PROTECTION_INHERIT) + { + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('locked' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->locked = $pValue; + } + return $this; + } + + /** + * Get hidden + * + * @return string + */ + public function getHidden() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHidden(); + } + return $this->hidden; + } + + /** + * Set hidden + * + * @param string $pValue + * @return PHPExcel_Style_Protection + */ + public function setHidden($pValue = self::PROTECTION_INHERIT) + { + if ($this->isSupervisor) { + $styleArray = $this->getStyleArray(array('hidden' => $pValue)); + $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); + } else { + $this->hidden = $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->isSupervisor) { + return $this->getSharedComponent()->getHashCode(); + } + return md5( + $this->locked . + $this->hidden . + __CLASS__ + ); + } +} diff --git a/assets/excel/PHPExcel/Style/Supervisor.php b/assets/excel/PHPExcel/Style/Supervisor.php new file mode 100644 index 0000000..a90e1c6 --- /dev/null +++ b/assets/excel/PHPExcel/Style/Supervisor.php @@ -0,0 +1,125 @@ +<?php + +/** + * PHPExcel_Style_Supervisor + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Style_Supervisor +{ + /** + * Supervisor? + * + * @var boolean + */ + protected $isSupervisor; + + /** + * Parent. Only used for supervisor + * + * @var PHPExcel_Style + */ + protected $parent; + + /** + * Create a new PHPExcel_Style_Alignment + * + * @param boolean $isSupervisor Flag indicating if this is a supervisor or not + * Leave this value at default unless you understand exactly what + * its ramifications are + */ + public function __construct($isSupervisor = false) + { + // Supervisor? + $this->isSupervisor = $isSupervisor; + } + + /** + * Bind parent. Only used for supervisor + * + * @param PHPExcel $parent + * @return PHPExcel_Style_Supervisor + */ + public function bindParent($parent, $parentPropertyName = null) + { + $this->parent = $parent; + return $this; + } + + /** + * Is this a supervisor or a cell style component? + * + * @return boolean + */ + public function getIsSupervisor() + { + return $this->isSupervisor; + } + + /** + * Get the currently active sheet. Only used for supervisor + * + * @return PHPExcel_Worksheet + */ + public function getActiveSheet() + { + return $this->parent->getActiveSheet(); + } + + /** + * Get the currently active cell coordinate in currently active sheet. + * Only used for supervisor + * + * @return string E.g. 'A1' + */ + public function getSelectedCells() + { + return $this->getActiveSheet()->getSelectedCells(); + } + + /** + * Get the currently active cell coordinate in currently active sheet. + * Only used for supervisor + * + * @return string E.g. 'A1' + */ + public function getActiveCell() + { + return $this->getActiveSheet()->getActiveCell(); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if ((is_object($value)) && ($key != 'parent')) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet.php b/assets/excel/PHPExcel/Worksheet.php new file mode 100644 index 0000000..483aa00 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet.php @@ -0,0 +1,2968 @@ +<?php + +/** + * PHPExcel_Worksheet + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet implements PHPExcel_IComparable +{ + /* Break types */ + const BREAK_NONE = 0; + const BREAK_ROW = 1; + const BREAK_COLUMN = 2; + + /* Sheet state */ + const SHEETSTATE_VISIBLE = 'visible'; + const SHEETSTATE_HIDDEN = 'hidden'; + const SHEETSTATE_VERYHIDDEN = 'veryHidden'; + + /** + * Invalid characters in sheet title + * + * @var array + */ + private static $invalidCharacters = array('*', ':', '/', '\\', '?', '[', ']'); + + /** + * Parent spreadsheet + * + * @var PHPExcel + */ + private $parent; + + /** + * Cacheable collection of cells + * + * @var PHPExcel_CachedObjectStorage_xxx + */ + private $cellCollection; + + /** + * Collection of row dimensions + * + * @var PHPExcel_Worksheet_RowDimension[] + */ + private $rowDimensions = array(); + + /** + * Default row dimension + * + * @var PHPExcel_Worksheet_RowDimension + */ + private $defaultRowDimension; + + /** + * Collection of column dimensions + * + * @var PHPExcel_Worksheet_ColumnDimension[] + */ + private $columnDimensions = array(); + + /** + * Default column dimension + * + * @var PHPExcel_Worksheet_ColumnDimension + */ + private $defaultColumnDimension = null; + + /** + * Collection of drawings + * + * @var PHPExcel_Worksheet_BaseDrawing[] + */ + private $drawingCollection = null; + + /** + * Collection of Chart objects + * + * @var PHPExcel_Chart[] + */ + private $chartCollection = array(); + + /** + * Worksheet title + * + * @var string + */ + private $title; + + /** + * Sheet state + * + * @var string + */ + private $sheetState; + + /** + * Page setup + * + * @var PHPExcel_Worksheet_PageSetup + */ + private $pageSetup; + + /** + * Page margins + * + * @var PHPExcel_Worksheet_PageMargins + */ + private $pageMargins; + + /** + * Page header/footer + * + * @var PHPExcel_Worksheet_HeaderFooter + */ + private $headerFooter; + + /** + * Sheet view + * + * @var PHPExcel_Worksheet_SheetView + */ + private $sheetView; + + /** + * Protection + * + * @var PHPExcel_Worksheet_Protection + */ + private $protection; + + /** + * Collection of styles + * + * @var PHPExcel_Style[] + */ + private $styles = array(); + + /** + * Conditional styles. Indexed by cell coordinate, e.g. 'A1' + * + * @var array + */ + private $conditionalStylesCollection = array(); + + /** + * Is the current cell collection sorted already? + * + * @var boolean + */ + private $cellCollectionIsSorted = false; + + /** + * Collection of breaks + * + * @var array + */ + private $breaks = array(); + + /** + * Collection of merged cell ranges + * + * @var array + */ + private $mergeCells = array(); + + /** + * Collection of protected cell ranges + * + * @var array + */ + private $protectedCells = array(); + + /** + * Autofilter Range and selection + * + * @var PHPExcel_Worksheet_AutoFilter + */ + private $autoFilter; + + /** + * Freeze pane + * + * @var string + */ + private $freezePane = ''; + + /** + * Show gridlines? + * + * @var boolean + */ + private $showGridlines = true; + + /** + * Print gridlines? + * + * @var boolean + */ + private $printGridlines = false; + + /** + * Show row and column headers? + * + * @var boolean + */ + private $showRowColHeaders = true; + + /** + * Show summary below? (Row/Column outline) + * + * @var boolean + */ + private $showSummaryBelow = true; + + /** + * Show summary right? (Row/Column outline) + * + * @var boolean + */ + private $showSummaryRight = true; + + /** + * Collection of comments + * + * @var PHPExcel_Comment[] + */ + private $comments = array(); + + /** + * Active cell. (Only one!) + * + * @var string + */ + private $activeCell = 'A1'; + + /** + * Selected cells + * + * @var string + */ + private $selectedCells = 'A1'; + + /** + * Cached highest column + * + * @var string + */ + private $cachedHighestColumn = 'A'; + + /** + * Cached highest row + * + * @var int + */ + private $cachedHighestRow = 1; + + /** + * Right-to-left? + * + * @var boolean + */ + private $rightToLeft = false; + + /** + * Hyperlinks. Indexed by cell coordinate, e.g. 'A1' + * + * @var array + */ + private $hyperlinkCollection = array(); + + /** + * Data validation objects. Indexed by cell coordinate, e.g. 'A1' + * + * @var array + */ + private $dataValidationCollection = array(); + + /** + * Tab color + * + * @var PHPExcel_Style_Color + */ + private $tabColor; + + /** + * Dirty flag + * + * @var boolean + */ + private $dirty = true; + + /** + * Hash + * + * @var string + */ + private $hash; + + /** + * CodeName + * + * @var string + */ + private $codeName = null; + + /** + * Create a new worksheet + * + * @param PHPExcel $pParent + * @param string $pTitle + */ + public function __construct(PHPExcel $pParent = null, $pTitle = 'Worksheet') + { + // Set parent and title + $this->parent = $pParent; + $this->setTitle($pTitle, false); + // setTitle can change $pTitle + $this->setCodeName($this->getTitle()); + $this->setSheetState(PHPExcel_Worksheet::SHEETSTATE_VISIBLE); + + $this->cellCollection = PHPExcel_CachedObjectStorageFactory::getInstance($this); + // Set page setup + $this->pageSetup = new PHPExcel_Worksheet_PageSetup(); + // Set page margins + $this->pageMargins = new PHPExcel_Worksheet_PageMargins(); + // Set page header/footer + $this->headerFooter = new PHPExcel_Worksheet_HeaderFooter(); + // Set sheet view + $this->sheetView = new PHPExcel_Worksheet_SheetView(); + // Drawing collection + $this->drawingCollection = new ArrayObject(); + // Chart collection + $this->chartCollection = new ArrayObject(); + // Protection + $this->protection = new PHPExcel_Worksheet_Protection(); + // Default row dimension + $this->defaultRowDimension = new PHPExcel_Worksheet_RowDimension(null); + // Default column dimension + $this->defaultColumnDimension = new PHPExcel_Worksheet_ColumnDimension(null); + $this->autoFilter = new PHPExcel_Worksheet_AutoFilter(null, $this); + } + + + /** + * Disconnect all cells from this PHPExcel_Worksheet object, + * typically so that the worksheet object can be unset + * + */ + public function disconnectCells() + { + if ($this->cellCollection !== null) { + $this->cellCollection->unsetWorksheetCells(); + $this->cellCollection = null; + } + // detach ourself from the workbook, so that it can then delete this worksheet successfully + $this->parent = null; + } + + /** + * Code to execute when this worksheet is unset() + * + */ + public function __destruct() + { + PHPExcel_Calculation::getInstance($this->parent)->clearCalculationCacheForWorksheet($this->title); + + $this->disconnectCells(); + } + + /** + * Return the cache controller for the cell collection + * + * @return PHPExcel_CachedObjectStorage_xxx + */ + public function getCellCacheController() + { + return $this->cellCollection; + } + + + /** + * Get array of invalid characters for sheet title + * + * @return array + */ + public static function getInvalidCharacters() + { + return self::$invalidCharacters; + } + + /** + * Check sheet code name for valid Excel syntax + * + * @param string $pValue The string to check + * @return string The valid string + * @throws Exception + */ + private static function checkSheetCodeName($pValue) + { + $CharCount = PHPExcel_Shared_String::CountCharacters($pValue); + if ($CharCount == 0) { + throw new PHPExcel_Exception('Sheet code name cannot be empty.'); + } + // Some of the printable ASCII characters are invalid: * : / \ ? [ ] and first and last characters cannot be a "'" + if ((str_replace(self::$invalidCharacters, '', $pValue) !== $pValue) || + (PHPExcel_Shared_String::Substring($pValue, -1, 1)=='\'') || + (PHPExcel_Shared_String::Substring($pValue, 0, 1)=='\'')) { + throw new PHPExcel_Exception('Invalid character found in sheet code name'); + } + + // Maximum 31 characters allowed for sheet title + if ($CharCount > 31) { + throw new PHPExcel_Exception('Maximum 31 characters allowed in sheet code name.'); + } + + return $pValue; + } + + /** + * Check sheet title for valid Excel syntax + * + * @param string $pValue The string to check + * @return string The valid string + * @throws PHPExcel_Exception + */ + private static function checkSheetTitle($pValue) + { + // Some of the printable ASCII characters are invalid: * : / \ ? [ ] + if (str_replace(self::$invalidCharacters, '', $pValue) !== $pValue) { + throw new PHPExcel_Exception('Invalid character found in sheet title'); + } + + // Maximum 31 characters allowed for sheet title + if (PHPExcel_Shared_String::CountCharacters($pValue) > 31) { + throw new PHPExcel_Exception('Maximum 31 characters allowed in sheet title.'); + } + + return $pValue; + } + + /** + * Get collection of cells + * + * @param boolean $pSorted Also sort the cell collection? + * @return PHPExcel_Cell[] + */ + public function getCellCollection($pSorted = true) + { + if ($pSorted) { + // Re-order cell collection + return $this->sortCellCollection(); + } + if ($this->cellCollection !== null) { + return $this->cellCollection->getCellList(); + } + return array(); + } + + /** + * Sort collection of cells + * + * @return PHPExcel_Worksheet + */ + public function sortCellCollection() + { + if ($this->cellCollection !== null) { + return $this->cellCollection->getSortedCellList(); + } + return array(); + } + + /** + * Get collection of row dimensions + * + * @return PHPExcel_Worksheet_RowDimension[] + */ + public function getRowDimensions() + { + return $this->rowDimensions; + } + + /** + * Get default row dimension + * + * @return PHPExcel_Worksheet_RowDimension + */ + public function getDefaultRowDimension() + { + return $this->defaultRowDimension; + } + + /** + * Get collection of column dimensions + * + * @return PHPExcel_Worksheet_ColumnDimension[] + */ + public function getColumnDimensions() + { + return $this->columnDimensions; + } + + /** + * Get default column dimension + * + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function getDefaultColumnDimension() + { + return $this->defaultColumnDimension; + } + + /** + * Get collection of drawings + * + * @return PHPExcel_Worksheet_BaseDrawing[] + */ + public function getDrawingCollection() + { + return $this->drawingCollection; + } + + /** + * Get collection of charts + * + * @return PHPExcel_Chart[] + */ + public function getChartCollection() + { + return $this->chartCollection; + } + + /** + * Add chart + * + * @param PHPExcel_Chart $pChart + * @param int|null $iChartIndex Index where chart should go (0,1,..., or null for last) + * @return PHPExcel_Chart + */ + public function addChart(PHPExcel_Chart $pChart = null, $iChartIndex = null) + { + $pChart->setWorksheet($this); + if (is_null($iChartIndex)) { + $this->chartCollection[] = $pChart; + } else { + // Insert the chart at the requested index + array_splice($this->chartCollection, $iChartIndex, 0, array($pChart)); + } + + return $pChart; + } + + /** + * Return the count of charts on this worksheet + * + * @return int The number of charts + */ + public function getChartCount() + { + return count($this->chartCollection); + } + + /** + * Get a chart by its index position + * + * @param string $index Chart index position + * @return false|PHPExcel_Chart + * @throws PHPExcel_Exception + */ + public function getChartByIndex($index = null) + { + $chartCount = count($this->chartCollection); + if ($chartCount == 0) { + return false; + } + if (is_null($index)) { + $index = --$chartCount; + } + if (!isset($this->chartCollection[$index])) { + return false; + } + + return $this->chartCollection[$index]; + } + + /** + * Return an array of the names of charts on this worksheet + * + * @return string[] The names of charts + * @throws PHPExcel_Exception + */ + public function getChartNames() + { + $chartNames = array(); + foreach ($this->chartCollection as $chart) { + $chartNames[] = $chart->getName(); + } + return $chartNames; + } + + /** + * Get a chart by name + * + * @param string $chartName Chart name + * @return false|PHPExcel_Chart + * @throws PHPExcel_Exception + */ + public function getChartByName($chartName = '') + { + $chartCount = count($this->chartCollection); + if ($chartCount == 0) { + return false; + } + foreach ($this->chartCollection as $index => $chart) { + if ($chart->getName() == $chartName) { + return $this->chartCollection[$index]; + } + } + return false; + } + + /** + * Refresh column dimensions + * + * @return PHPExcel_Worksheet + */ + public function refreshColumnDimensions() + { + $currentColumnDimensions = $this->getColumnDimensions(); + $newColumnDimensions = array(); + + foreach ($currentColumnDimensions as $objColumnDimension) { + $newColumnDimensions[$objColumnDimension->getColumnIndex()] = $objColumnDimension; + } + + $this->columnDimensions = $newColumnDimensions; + + return $this; + } + + /** + * Refresh row dimensions + * + * @return PHPExcel_Worksheet + */ + public function refreshRowDimensions() + { + $currentRowDimensions = $this->getRowDimensions(); + $newRowDimensions = array(); + + foreach ($currentRowDimensions as $objRowDimension) { + $newRowDimensions[$objRowDimension->getRowIndex()] = $objRowDimension; + } + + $this->rowDimensions = $newRowDimensions; + + return $this; + } + + /** + * Calculate worksheet dimension + * + * @return string String containing the dimension of this worksheet + */ + public function calculateWorksheetDimension() + { + // Return + return 'A1' . ':' . $this->getHighestColumn() . $this->getHighestRow(); + } + + /** + * Calculate worksheet data dimension + * + * @return string String containing the dimension of this worksheet that actually contain data + */ + public function calculateWorksheetDataDimension() + { + // Return + return 'A1' . ':' . $this->getHighestDataColumn() . $this->getHighestDataRow(); + } + + /** + * Calculate widths for auto-size columns + * + * @param boolean $calculateMergeCells Calculate merge cell width + * @return PHPExcel_Worksheet; + */ + public function calculateColumnWidths($calculateMergeCells = false) + { + // initialize $autoSizes array + $autoSizes = array(); + foreach ($this->getColumnDimensions() as $colDimension) { + if ($colDimension->getAutoSize()) { + $autoSizes[$colDimension->getColumnIndex()] = -1; + } + } + + // There is only something to do if there are some auto-size columns + if (!empty($autoSizes)) { + // build list of cells references that participate in a merge + $isMergeCell = array(); + foreach ($this->getMergeCells() as $cells) { + foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) { + $isMergeCell[$cellReference] = true; + } + } + + // loop through all cells in the worksheet + foreach ($this->getCellCollection(false) as $cellID) { + $cell = $this->getCell($cellID, false); + if ($cell !== null && isset($autoSizes[$this->cellCollection->getCurrentColumn()])) { + // Determine width if cell does not participate in a merge + if (!isset($isMergeCell[$this->cellCollection->getCurrentAddress()])) { + // Calculated value + // To formatted string + $cellValue = PHPExcel_Style_NumberFormat::toFormattedString( + $cell->getCalculatedValue(), + $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode() + ); + + $autoSizes[$this->cellCollection->getCurrentColumn()] = max( + (float) $autoSizes[$this->cellCollection->getCurrentColumn()], + (float)PHPExcel_Shared_Font::calculateColumnWidth( + $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont(), + $cellValue, + $this->getParent()->getCellXfByIndex($cell->getXfIndex())->getAlignment()->getTextRotation(), + $this->getDefaultStyle()->getFont() + ) + ); + } + } + } + + // adjust column widths + foreach ($autoSizes as $columnIndex => $width) { + if ($width == -1) { + $width = $this->getDefaultColumnDimension()->getWidth(); + } + $this->getColumnDimension($columnIndex)->setWidth($width); + } + } + + return $this; + } + + /** + * Get parent + * + * @return PHPExcel + */ + public function getParent() + { + return $this->parent; + } + + /** + * Re-bind parent + * + * @param PHPExcel $parent + * @return PHPExcel_Worksheet + */ + public function rebindParent(PHPExcel $parent) + { + if ($this->parent !== null) { + $namedRanges = $this->parent->getNamedRanges(); + foreach ($namedRanges as $namedRange) { + $parent->addNamedRange($namedRange); + } + + $this->parent->removeSheetByIndex( + $this->parent->getIndex($this) + ); + } + $this->parent = $parent; + + return $this; + } + + /** + * Get title + * + * @return string + */ + public function getTitle() + { + return $this->title; + } + + /** + * Set title + * + * @param string $pValue String containing the dimension of this worksheet + * @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should + * be updated to reflect the new sheet name. + * This should be left as the default true, unless you are + * certain that no formula cells on any worksheet contain + * references to this worksheet + * @return PHPExcel_Worksheet + */ + public function setTitle($pValue = 'Worksheet', $updateFormulaCellReferences = true) + { + // Is this a 'rename' or not? + if ($this->getTitle() == $pValue) { + return $this; + } + + // Syntax check + self::checkSheetTitle($pValue); + + // Old title + $oldTitle = $this->getTitle(); + + if ($this->parent) { + // Is there already such sheet name? + if ($this->parent->sheetNameExists($pValue)) { + // Use name, but append with lowest possible integer + + if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 29); + } + $i = 1; + while ($this->parent->sheetNameExists($pValue . ' ' . $i)) { + ++$i; + if ($i == 10) { + if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 28); + } + } elseif ($i == 100) { + if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 27); + } + } + } + + $altTitle = $pValue . ' ' . $i; + return $this->setTitle($altTitle, $updateFormulaCellReferences); + } + } + + // Set title + $this->title = $pValue; + $this->dirty = true; + + if ($this->parent && $this->parent->getCalculationEngine()) { + // New title + $newTitle = $this->getTitle(); + $this->parent->getCalculationEngine() + ->renameCalculationCacheForWorksheet($oldTitle, $newTitle); + if ($updateFormulaCellReferences) { + PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->parent, $oldTitle, $newTitle); + } + } + + return $this; + } + + /** + * Get sheet state + * + * @return string Sheet state (visible, hidden, veryHidden) + */ + public function getSheetState() + { + return $this->sheetState; + } + + /** + * Set sheet state + * + * @param string $value Sheet state (visible, hidden, veryHidden) + * @return PHPExcel_Worksheet + */ + public function setSheetState($value = PHPExcel_Worksheet::SHEETSTATE_VISIBLE) + { + $this->sheetState = $value; + return $this; + } + + /** + * Get page setup + * + * @return PHPExcel_Worksheet_PageSetup + */ + public function getPageSetup() + { + return $this->pageSetup; + } + + /** + * Set page setup + * + * @param PHPExcel_Worksheet_PageSetup $pValue + * @return PHPExcel_Worksheet + */ + public function setPageSetup(PHPExcel_Worksheet_PageSetup $pValue) + { + $this->pageSetup = $pValue; + return $this; + } + + /** + * Get page margins + * + * @return PHPExcel_Worksheet_PageMargins + */ + public function getPageMargins() + { + return $this->pageMargins; + } + + /** + * Set page margins + * + * @param PHPExcel_Worksheet_PageMargins $pValue + * @return PHPExcel_Worksheet + */ + public function setPageMargins(PHPExcel_Worksheet_PageMargins $pValue) + { + $this->pageMargins = $pValue; + return $this; + } + + /** + * Get page header/footer + * + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function getHeaderFooter() + { + return $this->headerFooter; + } + + /** + * Set page header/footer + * + * @param PHPExcel_Worksheet_HeaderFooter $pValue + * @return PHPExcel_Worksheet + */ + public function setHeaderFooter(PHPExcel_Worksheet_HeaderFooter $pValue) + { + $this->headerFooter = $pValue; + return $this; + } + + /** + * Get sheet view + * + * @return PHPExcel_Worksheet_SheetView + */ + public function getSheetView() + { + return $this->sheetView; + } + + /** + * Set sheet view + * + * @param PHPExcel_Worksheet_SheetView $pValue + * @return PHPExcel_Worksheet + */ + public function setSheetView(PHPExcel_Worksheet_SheetView $pValue) + { + $this->sheetView = $pValue; + return $this; + } + + /** + * Get Protection + * + * @return PHPExcel_Worksheet_Protection + */ + public function getProtection() + { + return $this->protection; + } + + /** + * Set Protection + * + * @param PHPExcel_Worksheet_Protection $pValue + * @return PHPExcel_Worksheet + */ + public function setProtection(PHPExcel_Worksheet_Protection $pValue) + { + $this->protection = $pValue; + $this->dirty = true; + + return $this; + } + + /** + * Get highest worksheet column + * + * @param string $row Return the data highest column for the specified row, + * or the highest column of any row if no row number is passed + * @return string Highest column name + */ + public function getHighestColumn($row = null) + { + if ($row == null) { + return $this->cachedHighestColumn; + } + return $this->getHighestDataColumn($row); + } + + /** + * Get highest worksheet column that contains data + * + * @param string $row Return the highest data column for the specified row, + * or the highest data column of any row if no row number is passed + * @return string Highest column name that contains data + */ + public function getHighestDataColumn($row = null) + { + return $this->cellCollection->getHighestColumn($row); + } + + /** + * Get highest worksheet row + * + * @param string $column Return the highest data row for the specified column, + * or the highest row of any column if no column letter is passed + * @return int Highest row number + */ + public function getHighestRow($column = null) + { + if ($column == null) { + return $this->cachedHighestRow; + } + return $this->getHighestDataRow($column); + } + + /** + * Get highest worksheet row that contains data + * + * @param string $column Return the highest data row for the specified column, + * or the highest data row of any column if no column letter is passed + * @return string Highest row number that contains data + */ + public function getHighestDataRow($column = null) + { + return $this->cellCollection->getHighestRow($column); + } + + /** + * Get highest worksheet column and highest row that have cell records + * + * @return array Highest column name and highest row number + */ + public function getHighestRowAndColumn() + { + return $this->cellCollection->getHighestRowAndColumn(); + } + + /** + * Set a cell value + * + * @param string $pCoordinate Coordinate of the cell + * @param mixed $pValue Value of the cell + * @param bool $returnCell Return the worksheet (false, default) or the cell (true) + * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified + */ + public function setCellValue($pCoordinate = 'A1', $pValue = null, $returnCell = false) + { + $cell = $this->getCell(strtoupper($pCoordinate))->setValue($pValue); + return ($returnCell) ? $cell : $this; + } + + /** + * Set a cell value by using numeric cell coordinates + * + * @param string $pColumn Numeric column coordinate of the cell (A = 0) + * @param string $pRow Numeric row coordinate of the cell + * @param mixed $pValue Value of the cell + * @param bool $returnCell Return the worksheet (false, default) or the cell (true) + * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified + */ + public function setCellValueByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $returnCell = false) + { + $cell = $this->getCellByColumnAndRow($pColumn, $pRow)->setValue($pValue); + return ($returnCell) ? $cell : $this; + } + + /** + * Set a cell value + * + * @param string $pCoordinate Coordinate of the cell + * @param mixed $pValue Value of the cell + * @param string $pDataType Explicit data type + * @param bool $returnCell Return the worksheet (false, default) or the cell (true) + * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified + */ + public function setCellValueExplicit($pCoordinate = 'A1', $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false) + { + // Set value + $cell = $this->getCell(strtoupper($pCoordinate))->setValueExplicit($pValue, $pDataType); + return ($returnCell) ? $cell : $this; + } + + /** + * Set a cell value by using numeric cell coordinates + * + * @param string $pColumn Numeric column coordinate of the cell + * @param string $pRow Numeric row coordinate of the cell + * @param mixed $pValue Value of the cell + * @param string $pDataType Explicit data type + * @param bool $returnCell Return the worksheet (false, default) or the cell (true) + * @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified + */ + public function setCellValueExplicitByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING, $returnCell = false) + { + $cell = $this->getCellByColumnAndRow($pColumn, $pRow)->setValueExplicit($pValue, $pDataType); + return ($returnCell) ? $cell : $this; + } + + /** + * Get cell at a specific coordinate + * + * @param string $pCoordinate Coordinate of the cell + * @param boolean $createIfNotExists Flag indicating whether a new cell should be created if it doesn't + * already exist, or a null should be returned instead + * @throws PHPExcel_Exception + * @return null|PHPExcel_Cell Cell that was found/created or null + */ + public function getCell($pCoordinate = 'A1', $createIfNotExists = true) + { + // Check cell collection + if ($this->cellCollection->isDataSet(strtoupper($pCoordinate))) { + return $this->cellCollection->getCacheData($pCoordinate); + } + + // Worksheet reference? + if (strpos($pCoordinate, '!') !== false) { + $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true); + return $this->parent->getSheetByName($worksheetReference[0])->getCell(strtoupper($worksheetReference[1]), $createIfNotExists); + } + + // Named range? + if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) && + (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) { + $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this); + if ($namedRange !== null) { + $pCoordinate = $namedRange->getRange(); + return $namedRange->getWorksheet()->getCell($pCoordinate, $createIfNotExists); + } + } + + // Uppercase coordinate + $pCoordinate = strtoupper($pCoordinate); + + if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { + throw new PHPExcel_Exception('Cell coordinate can not be a range of cells.'); + } elseif (strpos($pCoordinate, '$') !== false) { + throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); + } + + // Create new cell object, if required + return $createIfNotExists ? $this->createNewCell($pCoordinate) : null; + } + + /** + * Get cell at a specific coordinate by using numeric cell coordinates + * + * @param string $pColumn Numeric column coordinate of the cell (starting from 0) + * @param string $pRow Numeric row coordinate of the cell + * @param boolean $createIfNotExists Flag indicating whether a new cell should be created if it doesn't + * already exist, or a null should be returned instead + * @return null|PHPExcel_Cell Cell that was found/created or null + */ + public function getCellByColumnAndRow($pColumn = 0, $pRow = 1, $createIfNotExists = true) + { + $columnLetter = PHPExcel_Cell::stringFromColumnIndex($pColumn); + $coordinate = $columnLetter . $pRow; + + if ($this->cellCollection->isDataSet($coordinate)) { + return $this->cellCollection->getCacheData($coordinate); + } + + // Create new cell object, if required + return $createIfNotExists ? $this->createNewCell($coordinate) : null; + } + + /** + * Create a new cell at the specified coordinate + * + * @param string $pCoordinate Coordinate of the cell + * @return PHPExcel_Cell Cell that was created + */ + private function createNewCell($pCoordinate) + { + $cell = $this->cellCollection->addCacheData( + $pCoordinate, + new PHPExcel_Cell(null, PHPExcel_Cell_DataType::TYPE_NULL, $this) + ); + $this->cellCollectionIsSorted = false; + + // Coordinates + $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate); + if (PHPExcel_Cell::columnIndexFromString($this->cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($aCoordinates[0])) { + $this->cachedHighestColumn = $aCoordinates[0]; + } + $this->cachedHighestRow = max($this->cachedHighestRow, $aCoordinates[1]); + + // Cell needs appropriate xfIndex from dimensions records + // but don't create dimension records if they don't already exist + $rowDimension = $this->getRowDimension($aCoordinates[1], false); + $columnDimension = $this->getColumnDimension($aCoordinates[0], false); + + if ($rowDimension !== null && $rowDimension->getXfIndex() > 0) { + // then there is a row dimension with explicit style, assign it to the cell + $cell->setXfIndex($rowDimension->getXfIndex()); + } elseif ($columnDimension !== null && $columnDimension->getXfIndex() > 0) { + // then there is a column dimension, assign it to the cell + $cell->setXfIndex($columnDimension->getXfIndex()); + } + + return $cell; + } + + /** + * Does the cell at a specific coordinate exist? + * + * @param string $pCoordinate Coordinate of the cell + * @throws PHPExcel_Exception + * @return boolean + */ + public function cellExists($pCoordinate = 'A1') + { + // Worksheet reference? + if (strpos($pCoordinate, '!') !== false) { + $worksheetReference = PHPExcel_Worksheet::extractSheetTitle($pCoordinate, true); + return $this->parent->getSheetByName($worksheetReference[0])->cellExists(strtoupper($worksheetReference[1])); + } + + // Named range? + if ((!preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_CELLREF.'$/i', $pCoordinate, $matches)) && + (preg_match('/^'.PHPExcel_Calculation::CALCULATION_REGEXP_NAMEDRANGE.'$/i', $pCoordinate, $matches))) { + $namedRange = PHPExcel_NamedRange::resolveRange($pCoordinate, $this); + if ($namedRange !== null) { + $pCoordinate = $namedRange->getRange(); + if ($this->getHashCode() != $namedRange->getWorksheet()->getHashCode()) { + if (!$namedRange->getLocalOnly()) { + return $namedRange->getWorksheet()->cellExists($pCoordinate); + } else { + throw new PHPExcel_Exception('Named range ' . $namedRange->getName() . ' is not accessible from within sheet ' . $this->getTitle()); + } + } + } else { + return false; + } + } + + // Uppercase coordinate + $pCoordinate = strtoupper($pCoordinate); + + if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { + throw new PHPExcel_Exception('Cell coordinate can not be a range of cells.'); + } elseif (strpos($pCoordinate, '$') !== false) { + throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); + } else { + // Coordinates + $aCoordinates = PHPExcel_Cell::coordinateFromString($pCoordinate); + + // Cell exists? + return $this->cellCollection->isDataSet($pCoordinate); + } + } + + /** + * Cell at a specific coordinate by using numeric cell coordinates exists? + * + * @param string $pColumn Numeric column coordinate of the cell + * @param string $pRow Numeric row coordinate of the cell + * @return boolean + */ + public function cellExistsByColumnAndRow($pColumn = 0, $pRow = 1) + { + return $this->cellExists(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); + } + + /** + * Get row dimension at a specific row + * + * @param int $pRow Numeric index of the row + * @return PHPExcel_Worksheet_RowDimension + */ + public function getRowDimension($pRow = 1, $create = true) + { + // Found + $found = null; + + // Get row dimension + if (!isset($this->rowDimensions[$pRow])) { + if (!$create) { + return null; + } + $this->rowDimensions[$pRow] = new PHPExcel_Worksheet_RowDimension($pRow); + + $this->cachedHighestRow = max($this->cachedHighestRow, $pRow); + } + return $this->rowDimensions[$pRow]; + } + + /** + * Get column dimension at a specific column + * + * @param string $pColumn String index of the column + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function getColumnDimension($pColumn = 'A', $create = true) + { + // Uppercase coordinate + $pColumn = strtoupper($pColumn); + + // Fetch dimensions + if (!isset($this->columnDimensions[$pColumn])) { + if (!$create) { + return null; + } + $this->columnDimensions[$pColumn] = new PHPExcel_Worksheet_ColumnDimension($pColumn); + + if (PHPExcel_Cell::columnIndexFromString($this->cachedHighestColumn) < PHPExcel_Cell::columnIndexFromString($pColumn)) { + $this->cachedHighestColumn = $pColumn; + } + } + return $this->columnDimensions[$pColumn]; + } + + /** + * Get column dimension at a specific column by using numeric cell coordinates + * + * @param string $pColumn Numeric column coordinate of the cell + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function getColumnDimensionByColumn($pColumn = 0) + { + return $this->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($pColumn)); + } + + /** + * Get styles + * + * @return PHPExcel_Style[] + */ + public function getStyles() + { + return $this->styles; + } + + /** + * Get default style of workbook. + * + * @deprecated + * @return PHPExcel_Style + * @throws PHPExcel_Exception + */ + public function getDefaultStyle() + { + return $this->parent->getDefaultStyle(); + } + + /** + * Set default style - should only be used by PHPExcel_IReader implementations! + * + * @deprecated + * @param PHPExcel_Style $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setDefaultStyle(PHPExcel_Style $pValue) + { + $this->parent->getDefaultStyle()->applyFromArray(array( + 'font' => array( + 'name' => $pValue->getFont()->getName(), + 'size' => $pValue->getFont()->getSize(), + ), + )); + return $this; + } + + /** + * Get style for cell + * + * @param string $pCellCoordinate Cell coordinate (or range) to get style for + * @return PHPExcel_Style + * @throws PHPExcel_Exception + */ + public function getStyle($pCellCoordinate = 'A1') + { + // set this sheet as active + $this->parent->setActiveSheetIndex($this->parent->getIndex($this)); + + // set cell coordinate as active + $this->setSelectedCells(strtoupper($pCellCoordinate)); + + return $this->parent->getCellXfSupervisor(); + } + + /** + * Get conditional styles for a cell + * + * @param string $pCoordinate + * @return PHPExcel_Style_Conditional[] + */ + public function getConditionalStyles($pCoordinate = 'A1') + { + $pCoordinate = strtoupper($pCoordinate); + if (!isset($this->conditionalStylesCollection[$pCoordinate])) { + $this->conditionalStylesCollection[$pCoordinate] = array(); + } + return $this->conditionalStylesCollection[$pCoordinate]; + } + + /** + * Do conditional styles exist for this cell? + * + * @param string $pCoordinate + * @return boolean + */ + public function conditionalStylesExists($pCoordinate = 'A1') + { + if (isset($this->conditionalStylesCollection[strtoupper($pCoordinate)])) { + return true; + } + return false; + } + + /** + * Removes conditional styles for a cell + * + * @param string $pCoordinate + * @return PHPExcel_Worksheet + */ + public function removeConditionalStyles($pCoordinate = 'A1') + { + unset($this->conditionalStylesCollection[strtoupper($pCoordinate)]); + return $this; + } + + /** + * Get collection of conditional styles + * + * @return array + */ + public function getConditionalStylesCollection() + { + return $this->conditionalStylesCollection; + } + + /** + * Set conditional styles + * + * @param $pCoordinate string E.g. 'A1' + * @param $pValue PHPExcel_Style_Conditional[] + * @return PHPExcel_Worksheet + */ + public function setConditionalStyles($pCoordinate = 'A1', $pValue) + { + $this->conditionalStylesCollection[strtoupper($pCoordinate)] = $pValue; + return $this; + } + + /** + * Get style for cell by using numeric cell coordinates + * + * @param int $pColumn Numeric column coordinate of the cell + * @param int $pRow Numeric row coordinate of the cell + * @param int pColumn2 Numeric column coordinate of the range cell + * @param int pRow2 Numeric row coordinate of the range cell + * @return PHPExcel_Style + */ + public function getStyleByColumnAndRow($pColumn = 0, $pRow = 1, $pColumn2 = null, $pRow2 = null) + { + if (!is_null($pColumn2) && !is_null($pRow2)) { + $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; + return $this->getStyle($cellRange); + } + + return $this->getStyle(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); + } + + /** + * Set shared cell style to a range of cells + * + * Please note that this will overwrite existing cell styles for cells in range! + * + * @deprecated + * @param PHPExcel_Style $pSharedCellStyle Cell style to share + * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setSharedStyle(PHPExcel_Style $pSharedCellStyle = null, $pRange = '') + { + $this->duplicateStyle($pSharedCellStyle, $pRange); + return $this; + } + + /** + * Duplicate cell style to a range of cells + * + * Please note that this will overwrite existing cell styles for cells in range! + * + * @param PHPExcel_Style $pCellStyle Cell style to duplicate + * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function duplicateStyle(PHPExcel_Style $pCellStyle = null, $pRange = '') + { + // make sure we have a real style and not supervisor + $style = $pCellStyle->getIsSupervisor() ? $pCellStyle->getSharedComponent() : $pCellStyle; + + // Add the style to the workbook if necessary + $workbook = $this->parent; + if ($existingStyle = $this->parent->getCellXfByHashCode($pCellStyle->getHashCode())) { + // there is already such cell Xf in our collection + $xfIndex = $existingStyle->getIndex(); + } else { + // we don't have such a cell Xf, need to add + $workbook->addCellXf($pCellStyle); + $xfIndex = $pCellStyle->getIndex(); + } + + // Calculate range outer borders + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange . ':' . $pRange); + + // Make sure we can loop upwards on rows and columns + if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { + $tmp = $rangeStart; + $rangeStart = $rangeEnd; + $rangeEnd = $tmp; + } + + // Loop through cells and apply styles + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + $this->getCell(PHPExcel_Cell::stringFromColumnIndex($col - 1) . $row)->setXfIndex($xfIndex); + } + } + + return $this; + } + + /** + * Duplicate conditional style to a range of cells + * + * Please note that this will overwrite existing cell styles for cells in range! + * + * @param array of PHPExcel_Style_Conditional $pCellStyle Cell style to duplicate + * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function duplicateConditionalStyle(array $pCellStyle = null, $pRange = '') + { + foreach ($pCellStyle as $cellStyle) { + if (!($cellStyle instanceof PHPExcel_Style_Conditional)) { + throw new PHPExcel_Exception('Style is not a conditional style'); + } + } + + // Calculate range outer borders + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange . ':' . $pRange); + + // Make sure we can loop upwards on rows and columns + if ($rangeStart[0] > $rangeEnd[0] && $rangeStart[1] > $rangeEnd[1]) { + $tmp = $rangeStart; + $rangeStart = $rangeEnd; + $rangeEnd = $tmp; + } + + // Loop through cells and apply styles + for ($col = $rangeStart[0]; $col <= $rangeEnd[0]; ++$col) { + for ($row = $rangeStart[1]; $row <= $rangeEnd[1]; ++$row) { + $this->setConditionalStyles(PHPExcel_Cell::stringFromColumnIndex($col - 1) . $row, $pCellStyle); + } + } + + return $this; + } + + /** + * Duplicate cell style array to a range of cells + * + * Please note that this will overwrite existing cell styles for cells in range, + * if they are in the styles array. For example, if you decide to set a range of + * cells to font bold, only include font bold in the styles array. + * + * @deprecated + * @param array $pStyles Array containing style information + * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") + * @param boolean $pAdvanced Advanced mode for setting borders. + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function duplicateStyleArray($pStyles = null, $pRange = '', $pAdvanced = true) + { + $this->getStyle($pRange)->applyFromArray($pStyles, $pAdvanced); + return $this; + } + + /** + * Set break on a cell + * + * @param string $pCell Cell coordinate (e.g. A1) + * @param int $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setBreak($pCell = 'A1', $pBreak = PHPExcel_Worksheet::BREAK_NONE) + { + // Uppercase coordinate + $pCell = strtoupper($pCell); + + if ($pCell != '') { + if ($pBreak == PHPExcel_Worksheet::BREAK_NONE) { + if (isset($this->breaks[$pCell])) { + unset($this->breaks[$pCell]); + } + } else { + $this->breaks[$pCell] = $pBreak; + } + } else { + throw new PHPExcel_Exception('No cell coordinate specified.'); + } + + return $this; + } + + /** + * Set break on a cell by using numeric cell coordinates + * + * @param integer $pColumn Numeric column coordinate of the cell + * @param integer $pRow Numeric row coordinate of the cell + * @param integer $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*) + * @return PHPExcel_Worksheet + */ + public function setBreakByColumnAndRow($pColumn = 0, $pRow = 1, $pBreak = PHPExcel_Worksheet::BREAK_NONE) + { + return $this->setBreak(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow, $pBreak); + } + + /** + * Get breaks + * + * @return array[] + */ + public function getBreaks() + { + return $this->breaks; + } + + /** + * Set merge on a cell range + * + * @param string $pRange Cell range (e.g. A1:E1) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function mergeCells($pRange = 'A1:A1') + { + // Uppercase coordinate + $pRange = strtoupper($pRange); + + if (strpos($pRange, ':') !== false) { + $this->mergeCells[$pRange] = $pRange; + + // make sure cells are created + + // get the cells in the range + $aReferences = PHPExcel_Cell::extractAllCellReferencesInRange($pRange); + + // create upper left cell if it does not already exist + $upperLeft = $aReferences[0]; + if (!$this->cellExists($upperLeft)) { + $this->getCell($upperLeft)->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL); + } + + // Blank out the rest of the cells in the range (if they exist) + $count = count($aReferences); + for ($i = 1; $i < $count; $i++) { + if ($this->cellExists($aReferences[$i])) { + $this->getCell($aReferences[$i])->setValueExplicit(null, PHPExcel_Cell_DataType::TYPE_NULL); + } + } + } else { + throw new PHPExcel_Exception('Merge must be set on a range of cells.'); + } + + return $this; + } + + /** + * Set merge on a cell range by using numeric cell coordinates + * + * @param int $pColumn1 Numeric column coordinate of the first cell + * @param int $pRow1 Numeric row coordinate of the first cell + * @param int $pColumn2 Numeric column coordinate of the last cell + * @param int $pRow2 Numeric row coordinate of the last cell + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) + { + $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; + return $this->mergeCells($cellRange); + } + + /** + * Remove merge on a cell range + * + * @param string $pRange Cell range (e.g. A1:E1) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function unmergeCells($pRange = 'A1:A1') + { + // Uppercase coordinate + $pRange = strtoupper($pRange); + + if (strpos($pRange, ':') !== false) { + if (isset($this->mergeCells[$pRange])) { + unset($this->mergeCells[$pRange]); + } else { + throw new PHPExcel_Exception('Cell range ' . $pRange . ' not known as merged.'); + } + } else { + throw new PHPExcel_Exception('Merge can only be removed from a range of cells.'); + } + + return $this; + } + + /** + * Remove merge on a cell range by using numeric cell coordinates + * + * @param int $pColumn1 Numeric column coordinate of the first cell + * @param int $pRow1 Numeric row coordinate of the first cell + * @param int $pColumn2 Numeric column coordinate of the last cell + * @param int $pRow2 Numeric row coordinate of the last cell + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function unmergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) + { + $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; + return $this->unmergeCells($cellRange); + } + + /** + * Get merge cells array. + * + * @return array[] + */ + public function getMergeCells() + { + return $this->mergeCells; + } + + /** + * Set merge cells array for the entire sheet. Use instead mergeCells() to merge + * a single cell range. + * + * @param array + */ + public function setMergeCells($pValue = array()) + { + $this->mergeCells = $pValue; + return $this; + } + + /** + * Set protection on a cell range + * + * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1) + * @param string $pPassword Password to unlock the protection + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function protectCells($pRange = 'A1', $pPassword = '', $pAlreadyHashed = false) + { + // Uppercase coordinate + $pRange = strtoupper($pRange); + + if (!$pAlreadyHashed) { + $pPassword = PHPExcel_Shared_PasswordHasher::hashPassword($pPassword); + } + $this->protectedCells[$pRange] = $pPassword; + + return $this; + } + + /** + * Set protection on a cell range by using numeric cell coordinates + * + * @param int $pColumn1 Numeric column coordinate of the first cell + * @param int $pRow1 Numeric row coordinate of the first cell + * @param int $pColumn2 Numeric column coordinate of the last cell + * @param int $pRow2 Numeric row coordinate of the last cell + * @param string $pPassword Password to unlock the protection + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function protectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false) + { + $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; + return $this->protectCells($cellRange, $pPassword, $pAlreadyHashed); + } + + /** + * Remove protection on a cell range + * + * @param string $pRange Cell (e.g. A1) or cell range (e.g. A1:E1) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function unprotectCells($pRange = 'A1') + { + // Uppercase coordinate + $pRange = strtoupper($pRange); + + if (isset($this->protectedCells[$pRange])) { + unset($this->protectedCells[$pRange]); + } else { + throw new PHPExcel_Exception('Cell range ' . $pRange . ' not known as protected.'); + } + return $this; + } + + /** + * Remove protection on a cell range by using numeric cell coordinates + * + * @param int $pColumn1 Numeric column coordinate of the first cell + * @param int $pRow1 Numeric row coordinate of the first cell + * @param int $pColumn2 Numeric column coordinate of the last cell + * @param int $pRow2 Numeric row coordinate of the last cell + * @param string $pPassword Password to unlock the protection + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function unprotectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false) + { + $cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2; + return $this->unprotectCells($cellRange, $pPassword, $pAlreadyHashed); + } + + /** + * Get protected cells + * + * @return array[] + */ + public function getProtectedCells() + { + return $this->protectedCells; + } + + /** + * Get Autofilter + * + * @return PHPExcel_Worksheet_AutoFilter + */ + public function getAutoFilter() + { + return $this->autoFilter; + } + + /** + * Set AutoFilter + * + * @param PHPExcel_Worksheet_AutoFilter|string $pValue + * A simple string containing a Cell range like 'A1:E10' is permitted for backward compatibility + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setAutoFilter($pValue) + { + $pRange = strtoupper($pValue); + if (is_string($pValue)) { + $this->autoFilter->setRange($pValue); + } elseif (is_object($pValue) && ($pValue instanceof PHPExcel_Worksheet_AutoFilter)) { + $this->autoFilter = $pValue; + } + return $this; + } + + /** + * Set Autofilter Range by using numeric cell coordinates + * + * @param integer $pColumn1 Numeric column coordinate of the first cell + * @param integer $pRow1 Numeric row coordinate of the first cell + * @param integer $pColumn2 Numeric column coordinate of the second cell + * @param integer $pRow2 Numeric row coordinate of the second cell + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setAutoFilterByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1) + { + return $this->setAutoFilter( + PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 + . ':' . + PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2 + ); + } + + /** + * Remove autofilter + * + * @return PHPExcel_Worksheet + */ + public function removeAutoFilter() + { + $this->autoFilter->setRange(null); + return $this; + } + + /** + * Get Freeze Pane + * + * @return string + */ + public function getFreezePane() + { + return $this->freezePane; + } + + /** + * Freeze Pane + * + * @param string $pCell Cell (i.e. A2) + * Examples: + * A2 will freeze the rows above cell A2 (i.e row 1) + * B1 will freeze the columns to the left of cell B1 (i.e column A) + * B2 will freeze the rows above and to the left of cell A2 + * (i.e row 1 and column A) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function freezePane($pCell = '') + { + // Uppercase coordinate + $pCell = strtoupper($pCell); + if (strpos($pCell, ':') === false && strpos($pCell, ',') === false) { + $this->freezePane = $pCell; + } else { + throw new PHPExcel_Exception('Freeze pane can not be set on a range of cells.'); + } + return $this; + } + + /** + * Freeze Pane by using numeric cell coordinates + * + * @param int $pColumn Numeric column coordinate of the cell + * @param int $pRow Numeric row coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 1) + { + return $this->freezePane(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); + } + + /** + * Unfreeze Pane + * + * @return PHPExcel_Worksheet + */ + public function unfreezePane() + { + return $this->freezePane(''); + } + + /** + * Insert a new row, updating all possible related data + * + * @param int $pBefore Insert before this one + * @param int $pNumRows Number of rows to insert + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function insertNewRowBefore($pBefore = 1, $pNumRows = 1) + { + if ($pBefore >= 1) { + $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); + $objReferenceHelper->insertNewBefore('A' . $pBefore, 0, $pNumRows, $this); + } else { + throw new PHPExcel_Exception("Rows can only be inserted before at least row 1."); + } + return $this; + } + + /** + * Insert a new column, updating all possible related data + * + * @param int $pBefore Insert before this one + * @param int $pNumCols Number of columns to insert + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function insertNewColumnBefore($pBefore = 'A', $pNumCols = 1) + { + if (!is_numeric($pBefore)) { + $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); + $objReferenceHelper->insertNewBefore($pBefore . '1', $pNumCols, 0, $this); + } else { + throw new PHPExcel_Exception("Column references should not be numeric."); + } + return $this; + } + + /** + * Insert a new column, updating all possible related data + * + * @param int $pBefore Insert before this one (numeric column coordinate of the cell) + * @param int $pNumCols Number of columns to insert + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function insertNewColumnBeforeByIndex($pBefore = 0, $pNumCols = 1) + { + if ($pBefore >= 0) { + return $this->insertNewColumnBefore(PHPExcel_Cell::stringFromColumnIndex($pBefore), $pNumCols); + } else { + throw new PHPExcel_Exception("Columns can only be inserted before at least column A (0)."); + } + } + + /** + * Delete a row, updating all possible related data + * + * @param int $pRow Remove starting with this one + * @param int $pNumRows Number of rows to remove + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function removeRow($pRow = 1, $pNumRows = 1) + { + if ($pRow >= 1) { + $highestRow = $this->getHighestDataRow(); + $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); + $objReferenceHelper->insertNewBefore('A' . ($pRow + $pNumRows), 0, -$pNumRows, $this); + for ($r = 0; $r < $pNumRows; ++$r) { + $this->getCellCacheController()->removeRow($highestRow); + --$highestRow; + } + } else { + throw new PHPExcel_Exception("Rows to be deleted should at least start from row 1."); + } + return $this; + } + + /** + * Remove a column, updating all possible related data + * + * @param string $pColumn Remove starting with this one + * @param int $pNumCols Number of columns to remove + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function removeColumn($pColumn = 'A', $pNumCols = 1) + { + if (!is_numeric($pColumn)) { + $highestColumn = $this->getHighestDataColumn(); + $pColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($pColumn) - 1 + $pNumCols); + $objReferenceHelper = PHPExcel_ReferenceHelper::getInstance(); + $objReferenceHelper->insertNewBefore($pColumn . '1', -$pNumCols, 0, $this); + for ($c = 0; $c < $pNumCols; ++$c) { + $this->getCellCacheController()->removeColumn($highestColumn); + $highestColumn = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::columnIndexFromString($highestColumn) - 2); + } + } else { + throw new PHPExcel_Exception("Column references should not be numeric."); + } + return $this; + } + + /** + * Remove a column, updating all possible related data + * + * @param int $pColumn Remove starting with this one (numeric column coordinate of the cell) + * @param int $pNumCols Number of columns to remove + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function removeColumnByIndex($pColumn = 0, $pNumCols = 1) + { + if ($pColumn >= 0) { + return $this->removeColumn(PHPExcel_Cell::stringFromColumnIndex($pColumn), $pNumCols); + } else { + throw new PHPExcel_Exception("Columns to be deleted should at least start from column 0"); + } + } + + /** + * Show gridlines? + * + * @return boolean + */ + public function getShowGridlines() + { + return $this->showGridlines; + } + + /** + * Set show gridlines + * + * @param boolean $pValue Show gridlines (true/false) + * @return PHPExcel_Worksheet + */ + public function setShowGridlines($pValue = false) + { + $this->showGridlines = $pValue; + return $this; + } + + /** + * Print gridlines? + * + * @return boolean + */ + public function getPrintGridlines() + { + return $this->printGridlines; + } + + /** + * Set print gridlines + * + * @param boolean $pValue Print gridlines (true/false) + * @return PHPExcel_Worksheet + */ + public function setPrintGridlines($pValue = false) + { + $this->printGridlines = $pValue; + return $this; + } + + /** + * Show row and column headers? + * + * @return boolean + */ + public function getShowRowColHeaders() + { + return $this->showRowColHeaders; + } + + /** + * Set show row and column headers + * + * @param boolean $pValue Show row and column headers (true/false) + * @return PHPExcel_Worksheet + */ + public function setShowRowColHeaders($pValue = false) + { + $this->showRowColHeaders = $pValue; + return $this; + } + + /** + * Show summary below? (Row/Column outlining) + * + * @return boolean + */ + public function getShowSummaryBelow() + { + return $this->showSummaryBelow; + } + + /** + * Set show summary below + * + * @param boolean $pValue Show summary below (true/false) + * @return PHPExcel_Worksheet + */ + public function setShowSummaryBelow($pValue = true) + { + $this->showSummaryBelow = $pValue; + return $this; + } + + /** + * Show summary right? (Row/Column outlining) + * + * @return boolean + */ + public function getShowSummaryRight() + { + return $this->showSummaryRight; + } + + /** + * Set show summary right + * + * @param boolean $pValue Show summary right (true/false) + * @return PHPExcel_Worksheet + */ + public function setShowSummaryRight($pValue = true) + { + $this->showSummaryRight = $pValue; + return $this; + } + + /** + * Get comments + * + * @return PHPExcel_Comment[] + */ + public function getComments() + { + return $this->comments; + } + + /** + * Set comments array for the entire sheet. + * + * @param array of PHPExcel_Comment + * @return PHPExcel_Worksheet + */ + public function setComments($pValue = array()) + { + $this->comments = $pValue; + + return $this; + } + + /** + * Get comment for cell + * + * @param string $pCellCoordinate Cell coordinate to get comment for + * @return PHPExcel_Comment + * @throws PHPExcel_Exception + */ + public function getComment($pCellCoordinate = 'A1') + { + // Uppercase coordinate + $pCellCoordinate = strtoupper($pCellCoordinate); + + if (strpos($pCellCoordinate, ':') !== false || strpos($pCellCoordinate, ',') !== false) { + throw new PHPExcel_Exception('Cell coordinate string can not be a range of cells.'); + } elseif (strpos($pCellCoordinate, '$') !== false) { + throw new PHPExcel_Exception('Cell coordinate string must not be absolute.'); + } elseif ($pCellCoordinate == '') { + throw new PHPExcel_Exception('Cell coordinate can not be zero-length string.'); + } else { + // Check if we already have a comment for this cell. + // If not, create a new comment. + if (isset($this->comments[$pCellCoordinate])) { + return $this->comments[$pCellCoordinate]; + } else { + $newComment = new PHPExcel_Comment(); + $this->comments[$pCellCoordinate] = $newComment; + return $newComment; + } + } + } + + /** + * Get comment for cell by using numeric cell coordinates + * + * @param int $pColumn Numeric column coordinate of the cell + * @param int $pRow Numeric row coordinate of the cell + * @return PHPExcel_Comment + */ + public function getCommentByColumnAndRow($pColumn = 0, $pRow = 1) + { + return $this->getComment(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); + } + + /** + * Get selected cell + * + * @deprecated + * @return string + */ + public function getSelectedCell() + { + return $this->getSelectedCells(); + } + + /** + * Get active cell + * + * @return string Example: 'A1' + */ + public function getActiveCell() + { + return $this->activeCell; + } + + /** + * Get selected cells + * + * @return string + */ + public function getSelectedCells() + { + return $this->selectedCells; + } + + /** + * Selected cell + * + * @param string $pCoordinate Cell (i.e. A1) + * @return PHPExcel_Worksheet + */ + public function setSelectedCell($pCoordinate = 'A1') + { + return $this->setSelectedCells($pCoordinate); + } + + /** + * Select a range of cells. + * + * @param string $pCoordinate Cell range, examples: 'A1', 'B2:G5', 'A:C', '3:6' + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setSelectedCells($pCoordinate = 'A1') + { + // Uppercase coordinate + $pCoordinate = strtoupper($pCoordinate); + + // Convert 'A' to 'A:A' + $pCoordinate = preg_replace('/^([A-Z]+)$/', '${1}:${1}', $pCoordinate); + + // Convert '1' to '1:1' + $pCoordinate = preg_replace('/^([0-9]+)$/', '${1}:${1}', $pCoordinate); + + // Convert 'A:C' to 'A1:C1048576' + $pCoordinate = preg_replace('/^([A-Z]+):([A-Z]+)$/', '${1}1:${2}1048576', $pCoordinate); + + // Convert '1:3' to 'A1:XFD3' + $pCoordinate = preg_replace('/^([0-9]+):([0-9]+)$/', 'A${1}:XFD${2}', $pCoordinate); + + if (strpos($pCoordinate, ':') !== false || strpos($pCoordinate, ',') !== false) { + list($first, ) = PHPExcel_Cell::splitRange($pCoordinate); + $this->activeCell = $first[0]; + } else { + $this->activeCell = $pCoordinate; + } + $this->selectedCells = $pCoordinate; + return $this; + } + + /** + * Selected cell by using numeric cell coordinates + * + * @param int $pColumn Numeric column coordinate of the cell + * @param int $pRow Numeric row coordinate of the cell + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function setSelectedCellByColumnAndRow($pColumn = 0, $pRow = 1) + { + return $this->setSelectedCells(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow); + } + + /** + * Get right-to-left + * + * @return boolean + */ + public function getRightToLeft() + { + return $this->rightToLeft; + } + + /** + * Set right-to-left + * + * @param boolean $value Right-to-left true/false + * @return PHPExcel_Worksheet + */ + public function setRightToLeft($value = false) + { + $this->rightToLeft = $value; + return $this; + } + + /** + * Fill worksheet from values in array + * + * @param array $source Source array + * @param mixed $nullValue Value in source array that stands for blank cell + * @param string $startCell Insert array starting from this cell address as the top left coordinate + * @param boolean $strictNullComparison Apply strict comparison when testing for null values in the array + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet + */ + public function fromArray($source = null, $nullValue = null, $startCell = 'A1', $strictNullComparison = false) + { + if (is_array($source)) { + // Convert a 1-D array to 2-D (for ease of looping) + if (!is_array(end($source))) { + $source = array($source); + } + + // start coordinate + list ($startColumn, $startRow) = PHPExcel_Cell::coordinateFromString($startCell); + + // Loop through $source + foreach ($source as $rowData) { + $currentColumn = $startColumn; + foreach ($rowData as $cellValue) { + if ($strictNullComparison) { + if ($cellValue !== $nullValue) { + // Set cell value + $this->getCell($currentColumn . $startRow)->setValue($cellValue); + } + } else { + if ($cellValue != $nullValue) { + // Set cell value + $this->getCell($currentColumn . $startRow)->setValue($cellValue); + } + } + ++$currentColumn; + } + ++$startRow; + } + } else { + throw new PHPExcel_Exception("Parameter \$source should be an array."); + } + return $this; + } + + /** + * Create array from a range of cells + * + * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1") + * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist + * @param boolean $calculateFormulas Should formulas be calculated? + * @param boolean $formatData Should formatting be applied to cell values? + * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero + * True - Return rows and columns indexed by their actual row and column IDs + * @return array + */ + public function rangeToArray($pRange = 'A1', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) + { + // Returnvalue + $returnValue = array(); + // Identify the range that we need to extract from the worksheet + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange); + $minCol = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] -1); + $minRow = $rangeStart[1]; + $maxCol = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] -1); + $maxRow = $rangeEnd[1]; + + $maxCol++; + // Loop through rows + $r = -1; + for ($row = $minRow; $row <= $maxRow; ++$row) { + $rRef = ($returnCellRef) ? $row : ++$r; + $c = -1; + // Loop through columns in the current row + for ($col = $minCol; $col != $maxCol; ++$col) { + $cRef = ($returnCellRef) ? $col : ++$c; + // Using getCell() will create a new cell if it doesn't already exist. We don't want that to happen + // so we test and retrieve directly against cellCollection + if ($this->cellCollection->isDataSet($col.$row)) { + // Cell exists + $cell = $this->cellCollection->getCacheData($col.$row); + if ($cell->getValue() !== null) { + if ($cell->getValue() instanceof PHPExcel_RichText) { + $returnValue[$rRef][$cRef] = $cell->getValue()->getPlainText(); + } else { + if ($calculateFormulas) { + $returnValue[$rRef][$cRef] = $cell->getCalculatedValue(); + } else { + $returnValue[$rRef][$cRef] = $cell->getValue(); + } + } + + if ($formatData) { + $style = $this->parent->getCellXfByIndex($cell->getXfIndex()); + $returnValue[$rRef][$cRef] = PHPExcel_Style_NumberFormat::toFormattedString( + $returnValue[$rRef][$cRef], + ($style && $style->getNumberFormat()) ? $style->getNumberFormat()->getFormatCode() : PHPExcel_Style_NumberFormat::FORMAT_GENERAL + ); + } + } else { + // Cell holds a NULL + $returnValue[$rRef][$cRef] = $nullValue; + } + } else { + // Cell doesn't exist + $returnValue[$rRef][$cRef] = $nullValue; + } + } + } + + // Return + return $returnValue; + } + + + /** + * Create array from a range of cells + * + * @param string $pNamedRange Name of the Named Range + * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist + * @param boolean $calculateFormulas Should formulas be calculated? + * @param boolean $formatData Should formatting be applied to cell values? + * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero + * True - Return rows and columns indexed by their actual row and column IDs + * @return array + * @throws PHPExcel_Exception + */ + public function namedRangeToArray($pNamedRange = '', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) + { + $namedRange = PHPExcel_NamedRange::resolveRange($pNamedRange, $this); + if ($namedRange !== null) { + $pWorkSheet = $namedRange->getWorksheet(); + $pCellRange = $namedRange->getRange(); + + return $pWorkSheet->rangeToArray($pCellRange, $nullValue, $calculateFormulas, $formatData, $returnCellRef); + } + + throw new PHPExcel_Exception('Named Range '.$pNamedRange.' does not exist.'); + } + + + /** + * Create array from worksheet + * + * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist + * @param boolean $calculateFormulas Should formulas be calculated? + * @param boolean $formatData Should formatting be applied to cell values? + * @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero + * True - Return rows and columns indexed by their actual row and column IDs + * @return array + */ + public function toArray($nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) + { + // Garbage collect... + $this->garbageCollect(); + + // Identify the range that we need to extract from the worksheet + $maxCol = $this->getHighestColumn(); + $maxRow = $this->getHighestRow(); + // Return + return $this->rangeToArray('A1:'.$maxCol.$maxRow, $nullValue, $calculateFormulas, $formatData, $returnCellRef); + } + + /** + * Get row iterator + * + * @param integer $startRow The row number at which to start iterating + * @param integer $endRow The row number at which to stop iterating + * + * @return PHPExcel_Worksheet_RowIterator + */ + public function getRowIterator($startRow = 1, $endRow = null) + { + return new PHPExcel_Worksheet_RowIterator($this, $startRow, $endRow); + } + + /** + * Get column iterator + * + * @param string $startColumn The column address at which to start iterating + * @param string $endColumn The column address at which to stop iterating + * + * @return PHPExcel_Worksheet_ColumnIterator + */ + public function getColumnIterator($startColumn = 'A', $endColumn = null) + { + return new PHPExcel_Worksheet_ColumnIterator($this, $startColumn, $endColumn); + } + + /** + * Run PHPExcel garabage collector. + * + * @return PHPExcel_Worksheet + */ + public function garbageCollect() + { + // Flush cache + $this->cellCollection->getCacheData('A1'); + // Build a reference table from images +// $imageCoordinates = array(); +// $iterator = $this->getDrawingCollection()->getIterator(); +// while ($iterator->valid()) { +// $imageCoordinates[$iterator->current()->getCoordinates()] = true; +// +// $iterator->next(); +// } +// + // Lookup highest column and highest row if cells are cleaned + $colRow = $this->cellCollection->getHighestRowAndColumn(); + $highestRow = $colRow['row']; + $highestColumn = PHPExcel_Cell::columnIndexFromString($colRow['column']); + + // Loop through column dimensions + foreach ($this->columnDimensions as $dimension) { + $highestColumn = max($highestColumn, PHPExcel_Cell::columnIndexFromString($dimension->getColumnIndex())); + } + + // Loop through row dimensions + foreach ($this->rowDimensions as $dimension) { + $highestRow = max($highestRow, $dimension->getRowIndex()); + } + + // Cache values + if ($highestColumn < 0) { + $this->cachedHighestColumn = 'A'; + } else { + $this->cachedHighestColumn = PHPExcel_Cell::stringFromColumnIndex(--$highestColumn); + } + $this->cachedHighestRow = $highestRow; + + // Return + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + if ($this->dirty) { + $this->hash = md5($this->title . $this->autoFilter . ($this->protection->isProtectionEnabled() ? 't' : 'f') . __CLASS__); + $this->dirty = false; + } + return $this->hash; + } + + /** + * Extract worksheet title from range. + * + * Example: extractSheetTitle("testSheet!A1") ==> 'A1' + * Example: extractSheetTitle("'testSheet 1'!A1", true) ==> array('testSheet 1', 'A1'); + * + * @param string $pRange Range to extract title from + * @param bool $returnRange Return range? (see example) + * @return mixed + */ + public static function extractSheetTitle($pRange, $returnRange = false) + { + // Sheet title included? + if (($sep = strpos($pRange, '!')) === false) { + return ''; + } + + if ($returnRange) { + return array(trim(substr($pRange, 0, $sep), "'"), substr($pRange, $sep + 1)); + } + + return substr($pRange, $sep + 1); + } + + /** + * Get hyperlink + * + * @param string $pCellCoordinate Cell coordinate to get hyperlink for + */ + public function getHyperlink($pCellCoordinate = 'A1') + { + // return hyperlink if we already have one + if (isset($this->hyperlinkCollection[$pCellCoordinate])) { + return $this->hyperlinkCollection[$pCellCoordinate]; + } + + // else create hyperlink + $this->hyperlinkCollection[$pCellCoordinate] = new PHPExcel_Cell_Hyperlink(); + return $this->hyperlinkCollection[$pCellCoordinate]; + } + + /** + * Set hyperlnk + * + * @param string $pCellCoordinate Cell coordinate to insert hyperlink + * @param PHPExcel_Cell_Hyperlink $pHyperlink + * @return PHPExcel_Worksheet + */ + public function setHyperlink($pCellCoordinate = 'A1', PHPExcel_Cell_Hyperlink $pHyperlink = null) + { + if ($pHyperlink === null) { + unset($this->hyperlinkCollection[$pCellCoordinate]); + } else { + $this->hyperlinkCollection[$pCellCoordinate] = $pHyperlink; + } + return $this; + } + + /** + * Hyperlink at a specific coordinate exists? + * + * @param string $pCoordinate + * @return boolean + */ + public function hyperlinkExists($pCoordinate = 'A1') + { + return isset($this->hyperlinkCollection[$pCoordinate]); + } + + /** + * Get collection of hyperlinks + * + * @return PHPExcel_Cell_Hyperlink[] + */ + public function getHyperlinkCollection() + { + return $this->hyperlinkCollection; + } + + /** + * Get data validation + * + * @param string $pCellCoordinate Cell coordinate to get data validation for + */ + public function getDataValidation($pCellCoordinate = 'A1') + { + // return data validation if we already have one + if (isset($this->dataValidationCollection[$pCellCoordinate])) { + return $this->dataValidationCollection[$pCellCoordinate]; + } + + // else create data validation + $this->dataValidationCollection[$pCellCoordinate] = new PHPExcel_Cell_DataValidation(); + return $this->dataValidationCollection[$pCellCoordinate]; + } + + /** + * Set data validation + * + * @param string $pCellCoordinate Cell coordinate to insert data validation + * @param PHPExcel_Cell_DataValidation $pDataValidation + * @return PHPExcel_Worksheet + */ + public function setDataValidation($pCellCoordinate = 'A1', PHPExcel_Cell_DataValidation $pDataValidation = null) + { + if ($pDataValidation === null) { + unset($this->dataValidationCollection[$pCellCoordinate]); + } else { + $this->dataValidationCollection[$pCellCoordinate] = $pDataValidation; + } + return $this; + } + + /** + * Data validation at a specific coordinate exists? + * + * @param string $pCoordinate + * @return boolean + */ + public function dataValidationExists($pCoordinate = 'A1') + { + return isset($this->dataValidationCollection[$pCoordinate]); + } + + /** + * Get collection of data validations + * + * @return PHPExcel_Cell_DataValidation[] + */ + public function getDataValidationCollection() + { + return $this->dataValidationCollection; + } + + /** + * Accepts a range, returning it as a range that falls within the current highest row and column of the worksheet + * + * @param string $range + * @return string Adjusted range value + */ + public function shrinkRangeToFit($range) + { + $maxCol = $this->getHighestColumn(); + $maxRow = $this->getHighestRow(); + $maxCol = PHPExcel_Cell::columnIndexFromString($maxCol); + + $rangeBlocks = explode(' ', $range); + foreach ($rangeBlocks as &$rangeSet) { + $rangeBoundaries = PHPExcel_Cell::getRangeBoundaries($rangeSet); + + if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[0][0]) > $maxCol) { + $rangeBoundaries[0][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); + } + if ($rangeBoundaries[0][1] > $maxRow) { + $rangeBoundaries[0][1] = $maxRow; + } + if (PHPExcel_Cell::columnIndexFromString($rangeBoundaries[1][0]) > $maxCol) { + $rangeBoundaries[1][0] = PHPExcel_Cell::stringFromColumnIndex($maxCol); + } + if ($rangeBoundaries[1][1] > $maxRow) { + $rangeBoundaries[1][1] = $maxRow; + } + $rangeSet = $rangeBoundaries[0][0].$rangeBoundaries[0][1].':'.$rangeBoundaries[1][0].$rangeBoundaries[1][1]; + } + unset($rangeSet); + $stRange = implode(' ', $rangeBlocks); + + return $stRange; + } + + /** + * Get tab color + * + * @return PHPExcel_Style_Color + */ + public function getTabColor() + { + if ($this->tabColor === null) { + $this->tabColor = new PHPExcel_Style_Color(); + } + return $this->tabColor; + } + + /** + * Reset tab color + * + * @return PHPExcel_Worksheet + */ + public function resetTabColor() + { + $this->tabColor = null; + unset($this->tabColor); + + return $this; + } + + /** + * Tab color set? + * + * @return boolean + */ + public function isTabColorSet() + { + return ($this->tabColor !== null); + } + + /** + * Copy worksheet (!= clone!) + * + * @return PHPExcel_Worksheet + */ + public function copy() + { + $copied = clone $this; + + return $copied; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + foreach ($this as $key => $val) { + if ($key == 'parent') { + continue; + } + + if (is_object($val) || (is_array($val))) { + if ($key == 'cellCollection') { + $newCollection = clone $this->cellCollection; + $newCollection->copyCellCollection($this); + $this->cellCollection = $newCollection; + } elseif ($key == 'drawingCollection') { + $newCollection = clone $this->drawingCollection; + $this->drawingCollection = $newCollection; + } elseif (($key == 'autoFilter') && ($this->autoFilter instanceof PHPExcel_Worksheet_AutoFilter)) { + $newAutoFilter = clone $this->autoFilter; + $this->autoFilter = $newAutoFilter; + $this->autoFilter->setParent($this); + } else { + $this->{$key} = unserialize(serialize($val)); + } + } + } + } +/** + * Define the code name of the sheet + * + * @param null|string Same rule as Title minus space not allowed (but, like Excel, change silently space to underscore) + * @return objWorksheet + * @throws PHPExcel_Exception + */ + public function setCodeName($pValue = null) + { + // Is this a 'rename' or not? + if ($this->getCodeName() == $pValue) { + return $this; + } + $pValue = str_replace(' ', '_', $pValue);//Excel does this automatically without flinching, we are doing the same + // Syntax check + // throw an exception if not valid + self::checkSheetCodeName($pValue); + + // We use the same code that setTitle to find a valid codeName else not using a space (Excel don't like) but a '_' + + if ($this->getParent()) { + // Is there already such sheet name? + if ($this->getParent()->sheetCodeNameExists($pValue)) { + // Use name, but append with lowest possible integer + + if (PHPExcel_Shared_String::CountCharacters($pValue) > 29) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 29); + } + $i = 1; + while ($this->getParent()->sheetCodeNameExists($pValue . '_' . $i)) { + ++$i; + if ($i == 10) { + if (PHPExcel_Shared_String::CountCharacters($pValue) > 28) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 28); + } + } elseif ($i == 100) { + if (PHPExcel_Shared_String::CountCharacters($pValue) > 27) { + $pValue = PHPExcel_Shared_String::Substring($pValue, 0, 27); + } + } + } + + $pValue = $pValue . '_' . $i;// ok, we have a valid name + //codeName is'nt used in formula : no need to call for an update + //return $this->setTitle($altTitle, $updateFormulaCellReferences); + } + } + + $this->codeName=$pValue; + return $this; + } + /** + * Return the code name of the sheet + * + * @return null|string + */ + public function getCodeName() + { + return $this->codeName; + } + /** + * Sheet has a code name ? + * @return boolean + */ + public function hasCodeName() + { + return !(is_null($this->codeName)); + } +} diff --git a/assets/excel/PHPExcel/Worksheet/AutoFilter.php b/assets/excel/PHPExcel/Worksheet/AutoFilter.php new file mode 100644 index 0000000..6ec8a44 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/AutoFilter.php @@ -0,0 +1,846 @@ +<?php + +/** + * PHPExcel_Worksheet_AutoFilter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_AutoFilter +{ + /** + * Autofilter Worksheet + * + * @var PHPExcel_Worksheet + */ + private $workSheet; + + + /** + * Autofilter Range + * + * @var string + */ + private $range = ''; + + + /** + * Autofilter Column Ruleset + * + * @var array of PHPExcel_Worksheet_AutoFilter_Column + */ + private $columns = array(); + + + /** + * Create a new PHPExcel_Worksheet_AutoFilter + * + * @param string $pRange Cell range (i.e. A1:E10) + * @param PHPExcel_Worksheet $pSheet + */ + public function __construct($pRange = '', PHPExcel_Worksheet $pSheet = null) + { + $this->range = $pRange; + $this->workSheet = $pSheet; + } + + /** + * Get AutoFilter Parent Worksheet + * + * @return PHPExcel_Worksheet + */ + public function getParent() + { + return $this->workSheet; + } + + /** + * Set AutoFilter Parent Worksheet + * + * @param PHPExcel_Worksheet $pSheet + * @return PHPExcel_Worksheet_AutoFilter + */ + public function setParent(PHPExcel_Worksheet $pSheet = null) + { + $this->workSheet = $pSheet; + + return $this; + } + + /** + * Get AutoFilter Range + * + * @return string + */ + public function getRange() + { + return $this->range; + } + + /** + * Set AutoFilter Range + * + * @param string $pRange Cell range (i.e. A1:E10) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter + */ + public function setRange($pRange = '') + { + // Uppercase coordinate + $cellAddress = explode('!', strtoupper($pRange)); + if (count($cellAddress) > 1) { + list($worksheet, $pRange) = $cellAddress; + } + + if (strpos($pRange, ':') !== false) { + $this->range = $pRange; + } elseif (empty($pRange)) { + $this->range = ''; + } else { + throw new PHPExcel_Exception('Autofilter must be set on a range of cells.'); + } + + if (empty($pRange)) { + // Discard all column rules + $this->columns = array(); + } else { + // Discard any column rules that are no longer valid within this range + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); + foreach ($this->columns as $key => $value) { + $colIndex = PHPExcel_Cell::columnIndexFromString($key); + if (($rangeStart[0] > $colIndex) || ($rangeEnd[0] < $colIndex)) { + unset($this->columns[$key]); + } + } + } + + return $this; + } + + /** + * Get all AutoFilter Columns + * + * @throws PHPExcel_Exception + * @return array of PHPExcel_Worksheet_AutoFilter_Column + */ + public function getColumns() + { + return $this->columns; + } + + /** + * Validate that the specified column is in the AutoFilter range + * + * @param string $column Column name (e.g. A) + * @throws PHPExcel_Exception + * @return integer The column offset within the autofilter range + */ + public function testColumnInRange($column) + { + if (empty($this->range)) { + throw new PHPExcel_Exception("No autofilter range is defined."); + } + + $columnIndex = PHPExcel_Cell::columnIndexFromString($column); + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); + if (($rangeStart[0] > $columnIndex) || ($rangeEnd[0] < $columnIndex)) { + throw new PHPExcel_Exception("Column is outside of current autofilter range."); + } + + return $columnIndex - $rangeStart[0]; + } + + /** + * Get a specified AutoFilter Column Offset within the defined AutoFilter range + * + * @param string $pColumn Column name (e.g. A) + * @throws PHPExcel_Exception + * @return integer The offset of the specified column within the autofilter range + */ + public function getColumnOffset($pColumn) + { + return $this->testColumnInRange($pColumn); + } + + /** + * Get a specified AutoFilter Column + * + * @param string $pColumn Column name (e.g. A) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function getColumn($pColumn) + { + $this->testColumnInRange($pColumn); + + if (!isset($this->columns[$pColumn])) { + $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); + } + + return $this->columns[$pColumn]; + } + + /** + * Get a specified AutoFilter Column by it's offset + * + * @param integer $pColumnOffset Column offset within range (starting from 0) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function getColumnByOffset($pColumnOffset = 0) + { + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); + $pColumn = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] + $pColumnOffset - 1); + + return $this->getColumn($pColumn); + } + + /** + * Set AutoFilter + * + * @param PHPExcel_Worksheet_AutoFilter_Column|string $pColumn + * A simple string containing a Column ID like 'A' is permitted + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter + */ + public function setColumn($pColumn) + { + if ((is_string($pColumn)) && (!empty($pColumn))) { + $column = $pColumn; + } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { + $column = $pColumn->getColumnIndex(); + } else { + throw new PHPExcel_Exception("Column is not within the autofilter range."); + } + $this->testColumnInRange($column); + + if (is_string($pColumn)) { + $this->columns[$pColumn] = new PHPExcel_Worksheet_AutoFilter_Column($pColumn, $this); + } elseif (is_object($pColumn) && ($pColumn instanceof PHPExcel_Worksheet_AutoFilter_Column)) { + $pColumn->setParent($this); + $this->columns[$column] = $pColumn; + } + ksort($this->columns); + + return $this; + } + + /** + * Clear a specified AutoFilter Column + * + * @param string $pColumn Column name (e.g. A) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter + */ + public function clearColumn($pColumn) + { + $this->testColumnInRange($pColumn); + + if (isset($this->columns[$pColumn])) { + unset($this->columns[$pColumn]); + } + + return $this; + } + + /** + * Shift an AutoFilter Column Rule to a different column + * + * Note: This method bypasses validation of the destination column to ensure it is within this AutoFilter range. + * Nor does it verify whether any column rule already exists at $toColumn, but will simply overrideany existing value. + * Use with caution. + * + * @param string $fromColumn Column name (e.g. A) + * @param string $toColumn Column name (e.g. B) + * @return PHPExcel_Worksheet_AutoFilter + */ + public function shiftColumn($fromColumn = null, $toColumn = null) + { + $fromColumn = strtoupper($fromColumn); + $toColumn = strtoupper($toColumn); + + if (($fromColumn !== null) && (isset($this->columns[$fromColumn])) && ($toColumn !== null)) { + $this->columns[$fromColumn]->setParent(); + $this->columns[$fromColumn]->setColumnIndex($toColumn); + $this->columns[$toColumn] = $this->columns[$fromColumn]; + $this->columns[$toColumn]->setParent($this); + unset($this->columns[$fromColumn]); + + ksort($this->columns); + } + + return $this; + } + + + /** + * Test if cell value is in the defined set of values + * + * @param mixed $cellValue + * @param mixed[] $dataSet + * @return boolean + */ + private static function filterTestInSimpleDataSet($cellValue, $dataSet) + { + $dataSetValues = $dataSet['filterValues']; + $blanks = $dataSet['blanks']; + if (($cellValue == '') || ($cellValue === null)) { + return $blanks; + } + return in_array($cellValue, $dataSetValues); + } + + /** + * Test if cell value is in the defined set of Excel date values + * + * @param mixed $cellValue + * @param mixed[] $dataSet + * @return boolean + */ + private static function filterTestInDateGroupSet($cellValue, $dataSet) + { + $dateSet = $dataSet['filterValues']; + $blanks = $dataSet['blanks']; + if (($cellValue == '') || ($cellValue === null)) { + return $blanks; + } + + if (is_numeric($cellValue)) { + $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue); + if ($cellValue < 1) { + // Just the time part + $dtVal = date('His', $dateValue); + $dateSet = $dateSet['time']; + } elseif ($cellValue == floor($cellValue)) { + // Just the date part + $dtVal = date('Ymd', $dateValue); + $dateSet = $dateSet['date']; + } else { + // date and time parts + $dtVal = date('YmdHis', $dateValue); + $dateSet = $dateSet['dateTime']; + } + foreach ($dateSet as $dateValue) { + // Use of substr to extract value at the appropriate group level + if (substr($dtVal, 0, strlen($dateValue)) == $dateValue) { + return true; + } + } + } + return false; + } + + /** + * Test if cell value is within a set of values defined by a ruleset + * + * @param mixed $cellValue + * @param mixed[] $ruleSet + * @return boolean + */ + private static function filterTestInCustomDataSet($cellValue, $ruleSet) + { + $dataSet = $ruleSet['filterRules']; + $join = $ruleSet['join']; + $customRuleForBlanks = isset($ruleSet['customRuleForBlanks']) ? $ruleSet['customRuleForBlanks'] : false; + + if (!$customRuleForBlanks) { + // Blank cells are always ignored, so return a FALSE + if (($cellValue == '') || ($cellValue === null)) { + return false; + } + } + $returnVal = ($join == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND); + foreach ($dataSet as $rule) { + if (is_numeric($rule['value'])) { + // Numeric values are tested using the appropriate operator + switch ($rule['operator']) { + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL: + $retVal = ($cellValue == $rule['value']); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL: + $retVal = ($cellValue != $rule['value']); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN: + $retVal = ($cellValue > $rule['value']); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL: + $retVal = ($cellValue >= $rule['value']); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN: + $retVal = ($cellValue < $rule['value']); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL: + $retVal = ($cellValue <= $rule['value']); + break; + } + } elseif ($rule['value'] == '') { + switch ($rule['operator']) { + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL: + $retVal = (($cellValue == '') || ($cellValue === null)); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL: + $retVal = (($cellValue != '') && ($cellValue !== null)); + break; + default: + $retVal = true; + break; + } + } else { + // String values are always tested for equality, factoring in for wildcards (hence a regexp test) + $retVal = preg_match('/^'.$rule['value'].'$/i', $cellValue); + } + // If there are multiple conditions, then we need to test both using the appropriate join operator + switch ($join) { + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR: + $returnVal = $returnVal || $retVal; + // Break as soon as we have a TRUE match for OR joins, + // to avoid unnecessary additional code execution + if ($returnVal) { + return $returnVal; + } + break; + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND: + $returnVal = $returnVal && $retVal; + break; + } + } + + return $returnVal; + } + + /** + * Test if cell date value is matches a set of values defined by a set of months + * + * @param mixed $cellValue + * @param mixed[] $monthSet + * @return boolean + */ + private static function filterTestInPeriodDateSet($cellValue, $monthSet) + { + // Blank cells are always ignored, so return a FALSE + if (($cellValue == '') || ($cellValue === null)) { + return false; + } + + if (is_numeric($cellValue)) { + $dateValue = date('m', PHPExcel_Shared_Date::ExcelToPHP($cellValue)); + if (in_array($dateValue, $monthSet)) { + return true; + } + } + + return false; + } + + /** + * Search/Replace arrays to convert Excel wildcard syntax to a regexp syntax for preg_matching + * + * @var array + */ + private static $fromReplace = array('\*', '\?', '~~', '~.*', '~.?'); + private static $toReplace = array('.*', '.', '~', '\*', '\?'); + + + /** + * Convert a dynamic rule daterange to a custom filter range expression for ease of calculation + * + * @param string $dynamicRuleType + * @param PHPExcel_Worksheet_AutoFilter_Column &$filterColumn + * @return mixed[] + */ + private function dynamicFilterDateRange($dynamicRuleType, &$filterColumn) + { + $rDateType = PHPExcel_Calculation_Functions::getReturnDateType(); + PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_PHP_NUMERIC); + $val = $maxVal = null; + + $ruleValues = array(); + $baseDate = PHPExcel_Calculation_DateTime::DATENOW(); + // Calculate start/end dates for the required date range based on current date + switch ($dynamicRuleType) { + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK: + $baseDate = strtotime('-7 days', $baseDate); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK: + $baseDate = strtotime('-7 days', $baseDate); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH: + $baseDate = strtotime('-1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH: + $baseDate = strtotime('+1 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER: + $baseDate = strtotime('-3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER: + $baseDate = strtotime('+3 month', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR: + $baseDate = strtotime('-1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR: + $baseDate = strtotime('+1 year', gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + } + + switch ($dynamicRuleType) { + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TODAY: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW: + $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate)); + $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE: + $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(strtotime('+1 day', $baseDate)); + $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR: + $maxVal = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 31, 12, date('Y', $baseDate))); + ++$maxVal; + $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1, date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER: + $thisMonth = date('m', $baseDate); + $thisQuarter = floor(--$thisMonth / 3); + $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), (1+$thisQuarter)*3, date('Y', $baseDate))); + ++$maxVal; + $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, 1+$thisQuarter*3, date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH: + $maxVal = (int) PHPExcel_Shared_Date::PHPtoExcel(gmmktime(0, 0, 0, date('t', $baseDate), date('m', $baseDate), date('Y', $baseDate))); + ++$maxVal; + $val = (int) PHPExcel_Shared_Date::PHPToExcel(gmmktime(0, 0, 0, 1, date('m', $baseDate), date('Y', $baseDate))); + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK: + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK: + $dayOfWeek = date('w', $baseDate); + $val = (int) PHPExcel_Shared_Date::PHPToExcel($baseDate) - $dayOfWeek; + $maxVal = $val + 7; + break; + } + + switch ($dynamicRuleType) { + // Adjust Today dates for Yesterday and Tomorrow + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY: + --$maxVal; + --$val; + break; + case PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW: + ++$maxVal; + ++$val; + break; + } + + // Set the filter column rule attributes ready for writing + $filterColumn->setAttributes(array('val' => $val, 'maxVal' => $maxVal)); + + // Set the rules for identifying rows for hide/show + $ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, 'value' => $val); + $ruleValues[] = array('operator' => PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN, 'value' => $maxVal); + PHPExcel_Calculation_Functions::setReturnDateType($rDateType); + + return array('method' => 'filterTestInCustomDataSet', 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND)); + } + + private function calculateTopTenValue($columnID, $startRow, $endRow, $ruleType, $ruleValue) + { + $range = $columnID.$startRow.':'.$columnID.$endRow; + $dataValues = PHPExcel_Calculation_Functions::flattenArray($this->workSheet->rangeToArray($range, null, true, false)); + + $dataValues = array_filter($dataValues); + if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) { + rsort($dataValues); + } else { + sort($dataValues); + } + + return array_pop(array_slice($dataValues, 0, $ruleValue)); + } + + /** + * Apply the AutoFilter rules to the AutoFilter Range + * + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter + */ + public function showHideRows() + { + list($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($this->range); + + // The heading row should always be visible +// echo 'AutoFilter Heading Row ', $rangeStart[1],' is always SHOWN',PHP_EOL; + $this->workSheet->getRowDimension($rangeStart[1])->setVisible(true); + + $columnFilterTests = array(); + foreach ($this->columns as $columnID => $filterColumn) { + $rules = $filterColumn->getRules(); + switch ($filterColumn->getFilterType()) { + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER: + $ruleValues = array(); + // Build a list of the filter value selections + foreach ($rules as $rule) { + $ruleType = $rule->getRuleType(); + $ruleValues[] = $rule->getValue(); + } + // Test if we want to include blanks in our filter criteria + $blanks = false; + $ruleDataSet = array_filter($ruleValues); + if (count($ruleValues) != count($ruleDataSet)) { + $blanks = true; + } + if ($ruleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_FILTER) { + // Filter on absolute values + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInSimpleDataSet', + 'arguments' => array('filterValues' => $ruleDataSet, 'blanks' => $blanks) + ); + } else { + // Filter on date group values + $arguments = array( + 'date' => array(), + 'time' => array(), + 'dateTime' => array(), + ); + foreach ($ruleDataSet as $ruleValue) { + $date = $time = ''; + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR] !== '')) { + $date .= sprintf('%04d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_YEAR]); + } + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH] != '')) { + $date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MONTH]); + } + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY] !== '')) { + $date .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_DAY]); + } + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR] !== '')) { + $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_HOUR]); + } + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE] !== '')) { + $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE]); + } + if ((isset($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND])) && + ($ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND] !== '')) { + $time .= sprintf('%02d', $ruleValue[PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP_SECOND]); + } + $dateTime = $date . $time; + $arguments['date'][] = $date; + $arguments['time'][] = $time; + $arguments['dateTime'][] = $dateTime; + } + // Remove empty elements + $arguments['date'] = array_filter($arguments['date']); + $arguments['time'] = array_filter($arguments['time']); + $arguments['dateTime'] = array_filter($arguments['dateTime']); + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInDateGroupSet', + 'arguments' => array('filterValues' => $arguments, 'blanks' => $blanks) + ); + } + break; + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER: + $customRuleForBlanks = false; + $ruleValues = array(); + // Build a list of the filter value selections + foreach ($rules as $rule) { + $ruleType = $rule->getRuleType(); + $ruleValue = $rule->getValue(); + if (!is_numeric($ruleValue)) { + // Convert to a regexp allowing for regexp reserved characters, wildcards and escaped wildcards + $ruleValue = preg_quote($ruleValue); + $ruleValue = str_replace(self::$fromReplace, self::$toReplace, $ruleValue); + if (trim($ruleValue) == '') { + $customRuleForBlanks = true; + $ruleValue = trim($ruleValue); + } + } + $ruleValues[] = array('operator' => $rule->getOperator(), 'value' => $ruleValue); + } + $join = $filterColumn->getJoin(); + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInCustomDataSet', + 'arguments' => array('filterRules' => $ruleValues, 'join' => $join, 'customRuleForBlanks' => $customRuleForBlanks) + ); + break; + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER: + $ruleValues = array(); + foreach ($rules as $rule) { + // We should only ever have one Dynamic Filter Rule anyway + $dynamicRuleType = $rule->getGrouping(); + if (($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) || + ($dynamicRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE)) { + // Number (Average) based + // Calculate the average + $averageFormula = '=AVERAGE('.$columnID.($rangeStart[1]+1).':'.$columnID.$rangeEnd[1].')'; + $average = PHPExcel_Calculation::getInstance()->calculateFormula($averageFormula, null, $this->workSheet->getCell('A1')); + // Set above/below rule based on greaterThan or LessTan + $operator = ($dynamicRuleType === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE) + ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN + : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN; + $ruleValues[] = array('operator' => $operator, + 'value' => $average + ); + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInCustomDataSet', + 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR) + ); + } else { + // Date based + if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') { + // Month or Quarter + sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period); + if ($periodType == 'M') { + $ruleValues = array($period); + } else { + --$period; + $periodEnd = (1+$period)*3; + $periodStart = 1+$period*3; + $ruleValues = range($periodStart, $periodEnd); + } + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInPeriodDateSet', + 'arguments' => $ruleValues + ); + $filterColumn->setAttributes(array()); + } else { + // Date Range + $columnFilterTests[$columnID] = $this->dynamicFilterDateRange($dynamicRuleType, $filterColumn); + break; + } + } + } + break; + case PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER: + $ruleValues = array(); + $dataRowCount = $rangeEnd[1] - $rangeStart[1]; + foreach ($rules as $rule) { + // We should only ever have one Dynamic Filter Rule anyway + $toptenRuleType = $rule->getGrouping(); + $ruleValue = $rule->getValue(); + $ruleOperator = $rule->getOperator(); + } + if ($ruleOperator === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) { + $ruleValue = floor($ruleValue * ($dataRowCount / 100)); + } + if ($ruleValue < 1) { + $ruleValue = 1; + } + if ($ruleValue > 500) { + $ruleValue = 500; + } + + $maxVal = $this->calculateTopTenValue($columnID, $rangeStart[1]+1, $rangeEnd[1], $toptenRuleType, $ruleValue); + + $operator = ($toptenRuleType == PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) + ? PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL + : PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL; + $ruleValues[] = array('operator' => $operator, 'value' => $maxVal); + $columnFilterTests[$columnID] = array( + 'method' => 'filterTestInCustomDataSet', + 'arguments' => array('filterRules' => $ruleValues, 'join' => PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_OR) + ); + $filterColumn->setAttributes(array('maxVal' => $maxVal)); + break; + } + } + +// echo 'Column Filter Test CRITERIA',PHP_EOL; +// var_dump($columnFilterTests); +// + // Execute the column tests for each row in the autoFilter range to determine show/hide, + for ($row = $rangeStart[1]+1; $row <= $rangeEnd[1]; ++$row) { +// echo 'Testing Row = ', $row,PHP_EOL; + $result = true; + foreach ($columnFilterTests as $columnID => $columnFilterTest) { +// echo 'Testing cell ', $columnID.$row,PHP_EOL; + $cellValue = $this->workSheet->getCell($columnID.$row)->getCalculatedValue(); +// echo 'Value is ', $cellValue,PHP_EOL; + // Execute the filter test + $result = $result && + call_user_func_array( + array('PHPExcel_Worksheet_AutoFilter', $columnFilterTest['method']), + array($cellValue, $columnFilterTest['arguments']) + ); +// echo (($result) ? 'VALID' : 'INVALID'),PHP_EOL; + // If filter test has resulted in FALSE, exit the loop straightaway rather than running any more tests + if (!$result) { + break; + } + } + // Set show/hide for the row based on the result of the autoFilter result +// echo (($result) ? 'SHOW' : 'HIDE'),PHP_EOL; + $this->workSheet->getRowDimension($row)->setVisible($result); + } + + return $this; + } + + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + if ($key == 'workSheet') { + // Detach from worksheet + $this->{$key} = null; + } else { + $this->{$key} = clone $value; + } + } elseif ((is_array($value)) && ($key == 'columns')) { + // The columns array of PHPExcel_Worksheet_AutoFilter objects + $this->{$key} = array(); + foreach ($value as $k => $v) { + $this->{$key}[$k] = clone $v; + // attach the new cloned Column to this new cloned Autofilter object + $this->{$key}[$k]->setParent($this); + } + } else { + $this->{$key} = $value; + } + } + } + + /** + * toString method replicates previous behavior by returning the range if object is + * referenced as a property of its parent. + */ + public function __toString() + { + return (string) $this->range; + } +} diff --git a/assets/excel/PHPExcel/Worksheet/AutoFilter/Column.php b/assets/excel/PHPExcel/Worksheet/AutoFilter/Column.php new file mode 100644 index 0000000..d64fd81 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/AutoFilter/Column.php @@ -0,0 +1,405 @@ +<?php + +/** + * PHPExcel_Worksheet_AutoFilter_Column + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_AutoFilter_Column +{ + const AUTOFILTER_FILTERTYPE_FILTER = 'filters'; + const AUTOFILTER_FILTERTYPE_CUSTOMFILTER = 'customFilters'; + // Supports no more than 2 rules, with an And/Or join criteria + // if more than 1 rule is defined + const AUTOFILTER_FILTERTYPE_DYNAMICFILTER = 'dynamicFilter'; + // Even though the filter rule is constant, the filtered data can vary + // e.g. filtered by date = TODAY + const AUTOFILTER_FILTERTYPE_TOPTENFILTER = 'top10'; + + /** + * Types of autofilter rules + * + * @var string[] + */ + private static $filterTypes = array( + // Currently we're not handling + // colorFilter + // extLst + // iconFilter + self::AUTOFILTER_FILTERTYPE_FILTER, + self::AUTOFILTER_FILTERTYPE_CUSTOMFILTER, + self::AUTOFILTER_FILTERTYPE_DYNAMICFILTER, + self::AUTOFILTER_FILTERTYPE_TOPTENFILTER, + ); + + /* Multiple Rule Connections */ + const AUTOFILTER_COLUMN_JOIN_AND = 'and'; + const AUTOFILTER_COLUMN_JOIN_OR = 'or'; + + /** + * Join options for autofilter rules + * + * @var string[] + */ + private static $ruleJoins = array( + self::AUTOFILTER_COLUMN_JOIN_AND, + self::AUTOFILTER_COLUMN_JOIN_OR, + ); + + /** + * Autofilter + * + * @var PHPExcel_Worksheet_AutoFilter + */ + private $parent; + + + /** + * Autofilter Column Index + * + * @var string + */ + private $columnIndex = ''; + + + /** + * Autofilter Column Filter Type + * + * @var string + */ + private $filterType = self::AUTOFILTER_FILTERTYPE_FILTER; + + + /** + * Autofilter Multiple Rules And/Or + * + * @var string + */ + private $join = self::AUTOFILTER_COLUMN_JOIN_OR; + + + /** + * Autofilter Column Rules + * + * @var array of PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + private $ruleset = array(); + + + /** + * Autofilter Column Dynamic Attributes + * + * @var array of mixed + */ + private $attributes = array(); + + + /** + * Create a new PHPExcel_Worksheet_AutoFilter_Column + * + * @param string $pColumn Column (e.g. A) + * @param PHPExcel_Worksheet_AutoFilter $pParent Autofilter for this column + */ + public function __construct($pColumn, PHPExcel_Worksheet_AutoFilter $pParent = null) + { + $this->columnIndex = $pColumn; + $this->parent = $pParent; + } + + /** + * Get AutoFilter Column Index + * + * @return string + */ + public function getColumnIndex() + { + return $this->columnIndex; + } + + /** + * Set AutoFilter Column Index + * + * @param string $pColumn Column (e.g. A) + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setColumnIndex($pColumn) + { + // Uppercase coordinate + $pColumn = strtoupper($pColumn); + if ($this->parent !== null) { + $this->parent->testColumnInRange($pColumn); + } + + $this->columnIndex = $pColumn; + + return $this; + } + + /** + * Get this Column's AutoFilter Parent + * + * @return PHPExcel_Worksheet_AutoFilter + */ + public function getParent() + { + return $this->parent; + } + + /** + * Set this Column's AutoFilter Parent + * + * @param PHPExcel_Worksheet_AutoFilter + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setParent(PHPExcel_Worksheet_AutoFilter $pParent = null) + { + $this->parent = $pParent; + + return $this; + } + + /** + * Get AutoFilter Type + * + * @return string + */ + public function getFilterType() + { + return $this->filterType; + } + + /** + * Set AutoFilter Type + * + * @param string $pFilterType + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setFilterType($pFilterType = self::AUTOFILTER_FILTERTYPE_FILTER) + { + if (!in_array($pFilterType, self::$filterTypes)) { + throw new PHPExcel_Exception('Invalid filter type for column AutoFilter.'); + } + + $this->filterType = $pFilterType; + + return $this; + } + + /** + * Get AutoFilter Multiple Rules And/Or Join + * + * @return string + */ + public function getJoin() + { + return $this->join; + } + + /** + * Set AutoFilter Multiple Rules And/Or + * + * @param string $pJoin And/Or + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setJoin($pJoin = self::AUTOFILTER_COLUMN_JOIN_OR) + { + // Lowercase And/Or + $pJoin = strtolower($pJoin); + if (!in_array($pJoin, self::$ruleJoins)) { + throw new PHPExcel_Exception('Invalid rule connection for column AutoFilter.'); + } + + $this->join = $pJoin; + + return $this; + } + + /** + * Set AutoFilter Attributes + * + * @param string[] $pAttributes + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setAttributes($pAttributes = array()) + { + $this->attributes = $pAttributes; + + return $this; + } + + /** + * Set An AutoFilter Attribute + * + * @param string $pName Attribute Name + * @param string $pValue Attribute Value + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setAttribute($pName, $pValue) + { + $this->attributes[$pName] = $pValue; + + return $this; + } + + /** + * Get AutoFilter Column Attributes + * + * @return string + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Get specific AutoFilter Column Attribute + * + * @param string $pName Attribute Name + * @return string + */ + public function getAttribute($pName) + { + if (isset($this->attributes[$pName])) { + return $this->attributes[$pName]; + } + return null; + } + + /** + * Get all AutoFilter Column Rules + * + * @throws PHPExcel_Exception + * @return array of PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function getRules() + { + return $this->ruleset; + } + + /** + * Get a specified AutoFilter Column Rule + * + * @param integer $pIndex Rule index in the ruleset array + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function getRule($pIndex) + { + if (!isset($this->ruleset[$pIndex])) { + $this->ruleset[$pIndex] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this); + } + return $this->ruleset[$pIndex]; + } + + /** + * Create a new AutoFilter Column Rule in the ruleset + * + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function createRule() + { + $this->ruleset[] = new PHPExcel_Worksheet_AutoFilter_Column_Rule($this); + + return end($this->ruleset); + } + + /** + * Add a new AutoFilter Column Rule to the ruleset + * + * @param PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule + * @param boolean $returnRule Flag indicating whether the rule object or the column object should be returned + * @return PHPExcel_Worksheet_AutoFilter_Column|PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function addRule(PHPExcel_Worksheet_AutoFilter_Column_Rule $pRule, $returnRule = true) + { + $pRule->setParent($this); + $this->ruleset[] = $pRule; + + return ($returnRule) ? $pRule : $this; + } + + /** + * Delete a specified AutoFilter Column Rule + * If the number of rules is reduced to 1, then we reset And/Or logic to Or + * + * @param integer $pIndex Rule index in the ruleset array + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function deleteRule($pIndex) + { + if (isset($this->ruleset[$pIndex])) { + unset($this->ruleset[$pIndex]); + // If we've just deleted down to a single rule, then reset And/Or joining to Or + if (count($this->ruleset) <= 1) { + $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR); + } + } + + return $this; + } + + /** + * Delete all AutoFilter Column Rules + * + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function clearRules() + { + $this->ruleset = array(); + $this->setJoin(self::AUTOFILTER_COLUMN_JOIN_OR); + + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + if ($key == 'parent') { + // Detach from autofilter parent + $this->$key = null; + } else { + $this->$key = clone $value; + } + } elseif ((is_array($value)) && ($key == 'ruleset')) { + // The columns array of PHPExcel_Worksheet_AutoFilter objects + $this->$key = array(); + foreach ($value as $k => $v) { + $this->$key[$k] = clone $v; + // attach the new cloned Rule to this new cloned Autofilter Cloned object + $this->$key[$k]->setParent($this); + } + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php b/assets/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php new file mode 100644 index 0000000..39ad18b --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php @@ -0,0 +1,468 @@ +<?php + +/** + * PHPExcel_Worksheet_AutoFilter_Column_Rule + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_AutoFilter_Column_Rule +{ + const AUTOFILTER_RULETYPE_FILTER = 'filter'; + const AUTOFILTER_RULETYPE_DATEGROUP = 'dateGroupItem'; + const AUTOFILTER_RULETYPE_CUSTOMFILTER = 'customFilter'; + const AUTOFILTER_RULETYPE_DYNAMICFILTER = 'dynamicFilter'; + const AUTOFILTER_RULETYPE_TOPTENFILTER = 'top10Filter'; + + private static $ruleTypes = array( + // Currently we're not handling + // colorFilter + // extLst + // iconFilter + self::AUTOFILTER_RULETYPE_FILTER, + self::AUTOFILTER_RULETYPE_DATEGROUP, + self::AUTOFILTER_RULETYPE_CUSTOMFILTER, + self::AUTOFILTER_RULETYPE_DYNAMICFILTER, + self::AUTOFILTER_RULETYPE_TOPTENFILTER, + ); + + const AUTOFILTER_RULETYPE_DATEGROUP_YEAR = 'year'; + const AUTOFILTER_RULETYPE_DATEGROUP_MONTH = 'month'; + const AUTOFILTER_RULETYPE_DATEGROUP_DAY = 'day'; + const AUTOFILTER_RULETYPE_DATEGROUP_HOUR = 'hour'; + const AUTOFILTER_RULETYPE_DATEGROUP_MINUTE = 'minute'; + const AUTOFILTER_RULETYPE_DATEGROUP_SECOND = 'second'; + + private static $dateTimeGroups = array( + self::AUTOFILTER_RULETYPE_DATEGROUP_YEAR, + self::AUTOFILTER_RULETYPE_DATEGROUP_MONTH, + self::AUTOFILTER_RULETYPE_DATEGROUP_DAY, + self::AUTOFILTER_RULETYPE_DATEGROUP_HOUR, + self::AUTOFILTER_RULETYPE_DATEGROUP_MINUTE, + self::AUTOFILTER_RULETYPE_DATEGROUP_SECOND, + ); + + const AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY = 'yesterday'; + const AUTOFILTER_RULETYPE_DYNAMIC_TODAY = 'today'; + const AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW = 'tomorrow'; + const AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE = 'yearToDate'; + const AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR = 'thisYear'; + const AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER = 'thisQuarter'; + const AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH = 'thisMonth'; + const AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK = 'thisWeek'; + const AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR = 'lastYear'; + const AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER = 'lastQuarter'; + const AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH = 'lastMonth'; + const AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK = 'lastWeek'; + const AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR = 'nextYear'; + const AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER = 'nextQuarter'; + const AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH = 'nextMonth'; + const AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK = 'nextWeek'; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 = 'M1'; + const AUTOFILTER_RULETYPE_DYNAMIC_JANUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 = 'M2'; + const AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 = 'M3'; + const AUTOFILTER_RULETYPE_DYNAMIC_MARCH = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 = 'M4'; + const AUTOFILTER_RULETYPE_DYNAMIC_APRIL = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 = 'M5'; + const AUTOFILTER_RULETYPE_DYNAMIC_MAY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 = 'M6'; + const AUTOFILTER_RULETYPE_DYNAMIC_JUNE = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 = 'M7'; + const AUTOFILTER_RULETYPE_DYNAMIC_JULY = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 = 'M8'; + const AUTOFILTER_RULETYPE_DYNAMIC_AUGUST = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 = 'M9'; + const AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 = 'M10'; + const AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 = 'M11'; + const AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11; + const AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 = 'M12'; + const AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER = self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12; + const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 = 'Q1'; + const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 = 'Q2'; + const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 = 'Q3'; + const AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 = 'Q4'; + const AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE = 'aboveAverage'; + const AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE = 'belowAverage'; + + private static $dynamicTypes = array( + self::AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY, + self::AUTOFILTER_RULETYPE_DYNAMIC_TODAY, + self::AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW, + self::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE, + self::AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR, + self::AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER, + self::AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH, + self::AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK, + self::AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR, + self::AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER, + self::AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH, + self::AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK, + self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR, + self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER, + self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH, + self::AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11, + self::AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12, + self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1, + self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2, + self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3, + self::AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4, + self::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE, + self::AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE, + ); + + /* + * The only valid filter rule operators for filter and customFilter types are: + * <xsd:enumeration value="equal"/> + * <xsd:enumeration value="lessThan"/> + * <xsd:enumeration value="lessThanOrEqual"/> + * <xsd:enumeration value="notEqual"/> + * <xsd:enumeration value="greaterThanOrEqual"/> + * <xsd:enumeration value="greaterThan"/> + */ + const AUTOFILTER_COLUMN_RULE_EQUAL = 'equal'; + const AUTOFILTER_COLUMN_RULE_NOTEQUAL = 'notEqual'; + const AUTOFILTER_COLUMN_RULE_GREATERTHAN = 'greaterThan'; + const AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL = 'greaterThanOrEqual'; + const AUTOFILTER_COLUMN_RULE_LESSTHAN = 'lessThan'; + const AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL = 'lessThanOrEqual'; + + private static $operators = array( + self::AUTOFILTER_COLUMN_RULE_EQUAL, + self::AUTOFILTER_COLUMN_RULE_NOTEQUAL, + self::AUTOFILTER_COLUMN_RULE_GREATERTHAN, + self::AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, + self::AUTOFILTER_COLUMN_RULE_LESSTHAN, + self::AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, + ); + + const AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE = 'byValue'; + const AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT = 'byPercent'; + + private static $topTenValue = array( + self::AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE, + self::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT, + ); + + const AUTOFILTER_COLUMN_RULE_TOPTEN_TOP = 'top'; + const AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM = 'bottom'; + + private static $topTenType = array( + self::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP, + self::AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM, + ); + + + /* Rule Operators (Numeric, Boolean etc) */ +// const AUTOFILTER_COLUMN_RULE_BETWEEN = 'between'; // greaterThanOrEqual 1 && lessThanOrEqual 2 + /* Rule Operators (Numeric Special) which are translated to standard numeric operators with calculated values */ +// const AUTOFILTER_COLUMN_RULE_TOPTEN = 'topTen'; // greaterThan calculated value +// const AUTOFILTER_COLUMN_RULE_TOPTENPERCENT = 'topTenPercent'; // greaterThan calculated value +// const AUTOFILTER_COLUMN_RULE_ABOVEAVERAGE = 'aboveAverage'; // Value is calculated as the average +// const AUTOFILTER_COLUMN_RULE_BELOWAVERAGE = 'belowAverage'; // Value is calculated as the average + /* Rule Operators (String) which are set as wild-carded values */ +// const AUTOFILTER_COLUMN_RULE_BEGINSWITH = 'beginsWith'; // A* +// const AUTOFILTER_COLUMN_RULE_ENDSWITH = 'endsWith'; // *Z +// const AUTOFILTER_COLUMN_RULE_CONTAINS = 'contains'; // *B* +// const AUTOFILTER_COLUMN_RULE_DOESNTCONTAIN = 'notEqual'; // notEqual *B* + /* Rule Operators (Date Special) which are translated to standard numeric operators with calculated values */ +// const AUTOFILTER_COLUMN_RULE_BEFORE = 'lessThan'; +// const AUTOFILTER_COLUMN_RULE_AFTER = 'greaterThan'; +// const AUTOFILTER_COLUMN_RULE_YESTERDAY = 'yesterday'; +// const AUTOFILTER_COLUMN_RULE_TODAY = 'today'; +// const AUTOFILTER_COLUMN_RULE_TOMORROW = 'tomorrow'; +// const AUTOFILTER_COLUMN_RULE_LASTWEEK = 'lastWeek'; +// const AUTOFILTER_COLUMN_RULE_THISWEEK = 'thisWeek'; +// const AUTOFILTER_COLUMN_RULE_NEXTWEEK = 'nextWeek'; +// const AUTOFILTER_COLUMN_RULE_LASTMONTH = 'lastMonth'; +// const AUTOFILTER_COLUMN_RULE_THISMONTH = 'thisMonth'; +// const AUTOFILTER_COLUMN_RULE_NEXTMONTH = 'nextMonth'; +// const AUTOFILTER_COLUMN_RULE_LASTQUARTER = 'lastQuarter'; +// const AUTOFILTER_COLUMN_RULE_THISQUARTER = 'thisQuarter'; +// const AUTOFILTER_COLUMN_RULE_NEXTQUARTER = 'nextQuarter'; +// const AUTOFILTER_COLUMN_RULE_LASTYEAR = 'lastYear'; +// const AUTOFILTER_COLUMN_RULE_THISYEAR = 'thisYear'; +// const AUTOFILTER_COLUMN_RULE_NEXTYEAR = 'nextYear'; +// const AUTOFILTER_COLUMN_RULE_YEARTODATE = 'yearToDate'; // <dynamicFilter val="40909" type="yearToDate" maxVal="41113"/> +// const AUTOFILTER_COLUMN_RULE_ALLDATESINMONTH = 'allDatesInMonth'; // <dynamicFilter type="M2"/> for Month/February +// const AUTOFILTER_COLUMN_RULE_ALLDATESINQUARTER = 'allDatesInQuarter'; // <dynamicFilter type="Q2"/> for Quarter 2 + + /** + * Autofilter Column + * + * @var PHPExcel_Worksheet_AutoFilter_Column + */ + private $parent = null; + + + /** + * Autofilter Rule Type + * + * @var string + */ + private $ruleType = self::AUTOFILTER_RULETYPE_FILTER; + + + /** + * Autofilter Rule Value + * + * @var string + */ + private $value = ''; + + /** + * Autofilter Rule Operator + * + * @var string + */ + private $operator = self::AUTOFILTER_COLUMN_RULE_EQUAL; + + /** + * DateTimeGrouping Group Value + * + * @var string + */ + private $grouping = ''; + + + /** + * Create a new PHPExcel_Worksheet_AutoFilter_Column_Rule + * + * @param PHPExcel_Worksheet_AutoFilter_Column $pParent + */ + public function __construct(PHPExcel_Worksheet_AutoFilter_Column $pParent = null) + { + $this->parent = $pParent; + } + + /** + * Get AutoFilter Rule Type + * + * @return string + */ + public function getRuleType() + { + return $this->ruleType; + } + + /** + * Set AutoFilter Rule Type + * + * @param string $pRuleType + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function setRuleType($pRuleType = self::AUTOFILTER_RULETYPE_FILTER) + { + if (!in_array($pRuleType, self::$ruleTypes)) { + throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.'); + } + + $this->ruleType = $pRuleType; + + return $this; + } + + /** + * Get AutoFilter Rule Value + * + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Set AutoFilter Rule Value + * + * @param string|string[] $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function setValue($pValue = '') + { + if (is_array($pValue)) { + $grouping = -1; + foreach ($pValue as $key => $value) { + // Validate array entries + if (!in_array($key, self::$dateTimeGroups)) { + // Remove any invalid entries from the value array + unset($pValue[$key]); + } else { + // Work out what the dateTime grouping will be + $grouping = max($grouping, array_search($key, self::$dateTimeGroups)); + } + } + if (count($pValue) == 0) { + throw new PHPExcel_Exception('Invalid rule value for column AutoFilter Rule.'); + } + // Set the dateTime grouping that we've anticipated + $this->setGrouping(self::$dateTimeGroups[$grouping]); + } + $this->value = $pValue; + + return $this; + } + + /** + * Get AutoFilter Rule Operator + * + * @return string + */ + public function getOperator() + { + return $this->operator; + } + + /** + * Set AutoFilter Rule Operator + * + * @param string $pOperator + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function setOperator($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL) + { + if (empty($pOperator)) { + $pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL; + } + if ((!in_array($pOperator, self::$operators)) && + (!in_array($pOperator, self::$topTenValue))) { + throw new PHPExcel_Exception('Invalid operator for column AutoFilter Rule.'); + } + $this->operator = $pOperator; + + return $this; + } + + /** + * Get AutoFilter Rule Grouping + * + * @return string + */ + public function getGrouping() + { + return $this->grouping; + } + + /** + * Set AutoFilter Rule Grouping + * + * @param string $pGrouping + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function setGrouping($pGrouping = null) + { + if (($pGrouping !== null) && + (!in_array($pGrouping, self::$dateTimeGroups)) && + (!in_array($pGrouping, self::$dynamicTypes)) && + (!in_array($pGrouping, self::$topTenType))) { + throw new PHPExcel_Exception('Invalid rule type for column AutoFilter Rule.'); + } + $this->grouping = $pGrouping; + + return $this; + } + + /** + * Set AutoFilter Rule + * + * @param string $pOperator + * @param string|string[] $pValue + * @param string $pGrouping + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function setRule($pOperator = self::AUTOFILTER_COLUMN_RULE_EQUAL, $pValue = '', $pGrouping = null) + { + $this->setOperator($pOperator); + $this->setValue($pValue); + // Only set grouping if it's been passed in as a user-supplied argument, + // otherwise we're calculating it when we setValue() and don't want to overwrite that + // If the user supplies an argumnet for grouping, then on their own head be it + if ($pGrouping !== null) { + $this->setGrouping($pGrouping); + } + + return $this; + } + + /** + * Get this Rule's AutoFilter Column Parent + * + * @return PHPExcel_Worksheet_AutoFilter_Column + */ + public function getParent() + { + return $this->parent; + } + + /** + * Set this Rule's AutoFilter Column Parent + * + * @param PHPExcel_Worksheet_AutoFilter_Column + * @return PHPExcel_Worksheet_AutoFilter_Column_Rule + */ + public function setParent(PHPExcel_Worksheet_AutoFilter_Column $pParent = null) + { + $this->parent = $pParent; + + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + if ($key == 'parent') { + // Detach from autofilter column parent + $this->$key = null; + } else { + $this->$key = clone $value; + } + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/BaseDrawing.php b/assets/excel/PHPExcel/Worksheet/BaseDrawing.php new file mode 100644 index 0000000..9ad15c7 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/BaseDrawing.php @@ -0,0 +1,507 @@ +<?php + +/** + * PHPExcel_Worksheet_BaseDrawing + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable +{ + /** + * Image counter + * + * @var int + */ + private static $imageCounter = 0; + + /** + * Image index + * + * @var int + */ + private $imageIndex = 0; + + /** + * Name + * + * @var string + */ + protected $name; + + /** + * Description + * + * @var string + */ + protected $description; + + /** + * Worksheet + * + * @var PHPExcel_Worksheet + */ + protected $worksheet; + + /** + * Coordinates + * + * @var string + */ + protected $coordinates; + + /** + * Offset X + * + * @var int + */ + protected $offsetX; + + /** + * Offset Y + * + * @var int + */ + protected $offsetY; + + /** + * Width + * + * @var int + */ + protected $width; + + /** + * Height + * + * @var int + */ + protected $height; + + /** + * Proportional resize + * + * @var boolean + */ + protected $resizeProportional; + + /** + * Rotation + * + * @var int + */ + protected $rotation; + + /** + * Shadow + * + * @var PHPExcel_Worksheet_Drawing_Shadow + */ + protected $shadow; + + /** + * Create a new PHPExcel_Worksheet_BaseDrawing + */ + public function __construct() + { + // Initialise values + $this->name = ''; + $this->description = ''; + $this->worksheet = null; + $this->coordinates = 'A1'; + $this->offsetX = 0; + $this->offsetY = 0; + $this->width = 0; + $this->height = 0; + $this->resizeProportional = true; + $this->rotation = 0; + $this->shadow = new PHPExcel_Worksheet_Drawing_Shadow(); + + // Set image index + self::$imageCounter++; + $this->imageIndex = self::$imageCounter; + } + + /** + * Get image index + * + * @return int + */ + public function getImageIndex() + { + return $this->imageIndex; + } + + /** + * Get Name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Set Name + * + * @param string $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setName($pValue = '') + { + $this->name = $pValue; + return $this; + } + + /** + * Get Description + * + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Set Description + * + * @param string $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setDescription($pValue = '') + { + $this->description = $pValue; + return $this; + } + + /** + * Get Worksheet + * + * @return PHPExcel_Worksheet + */ + public function getWorksheet() + { + return $this->worksheet; + } + + /** + * Set Worksheet + * + * @param PHPExcel_Worksheet $pValue + * @param bool $pOverrideOld If a Worksheet has already been assigned, overwrite it and remove image from old Worksheet? + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setWorksheet(PHPExcel_Worksheet $pValue = null, $pOverrideOld = false) + { + if (is_null($this->worksheet)) { + // Add drawing to PHPExcel_Worksheet + $this->worksheet = $pValue; + $this->worksheet->getCell($this->coordinates); + $this->worksheet->getDrawingCollection()->append($this); + } else { + if ($pOverrideOld) { + // Remove drawing from old PHPExcel_Worksheet + $iterator = $this->worksheet->getDrawingCollection()->getIterator(); + + while ($iterator->valid()) { + if ($iterator->current()->getHashCode() == $this->getHashCode()) { + $this->worksheet->getDrawingCollection()->offsetUnset($iterator->key()); + $this->worksheet = null; + break; + } + } + + // Set new PHPExcel_Worksheet + $this->setWorksheet($pValue); + } else { + throw new PHPExcel_Exception("A PHPExcel_Worksheet has already been assigned. Drawings can only exist on one PHPExcel_Worksheet."); + } + } + return $this; + } + + /** + * Get Coordinates + * + * @return string + */ + public function getCoordinates() + { + return $this->coordinates; + } + + /** + * Set Coordinates + * + * @param string $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setCoordinates($pValue = 'A1') + { + $this->coordinates = $pValue; + return $this; + } + + /** + * Get OffsetX + * + * @return int + */ + public function getOffsetX() + { + return $this->offsetX; + } + + /** + * Set OffsetX + * + * @param int $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setOffsetX($pValue = 0) + { + $this->offsetX = $pValue; + return $this; + } + + /** + * Get OffsetY + * + * @return int + */ + public function getOffsetY() + { + return $this->offsetY; + } + + /** + * Set OffsetY + * + * @param int $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setOffsetY($pValue = 0) + { + $this->offsetY = $pValue; + return $this; + } + + /** + * Get Width + * + * @return int + */ + public function getWidth() + { + return $this->width; + } + + /** + * Set Width + * + * @param int $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setWidth($pValue = 0) + { + // Resize proportional? + if ($this->resizeProportional && $pValue != 0) { + $ratio = $this->height / ($this->width != 0 ? $this->width : 1); + $this->height = round($ratio * $pValue); + } + + // Set width + $this->width = $pValue; + + return $this; + } + + /** + * Get Height + * + * @return int + */ + public function getHeight() + { + return $this->height; + } + + /** + * Set Height + * + * @param int $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setHeight($pValue = 0) + { + // Resize proportional? + if ($this->resizeProportional && $pValue != 0) { + $ratio = $this->width / ($this->height != 0 ? $this->height : 1); + $this->width = round($ratio * $pValue); + } + + // Set height + $this->height = $pValue; + + return $this; + } + + /** + * Set width and height with proportional resize + * Example: + * <code> + * $objDrawing->setResizeProportional(true); + * $objDrawing->setWidthAndHeight(160,120); + * </code> + * + * @author Vincent@luo MSN:kele_100@hotmail.com + * @param int $width + * @param int $height + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setWidthAndHeight($width = 0, $height = 0) + { + $xratio = $width / ($this->width != 0 ? $this->width : 1); + $yratio = $height / ($this->height != 0 ? $this->height : 1); + if ($this->resizeProportional && !($width == 0 || $height == 0)) { + if (($xratio * $this->height) < $height) { + $this->height = ceil($xratio * $this->height); + $this->width = $width; + } else { + $this->width = ceil($yratio * $this->width); + $this->height = $height; + } + } else { + $this->width = $width; + $this->height = $height; + } + + return $this; + } + + /** + * Get ResizeProportional + * + * @return boolean + */ + public function getResizeProportional() + { + return $this->resizeProportional; + } + + /** + * Set ResizeProportional + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setResizeProportional($pValue = true) + { + $this->resizeProportional = $pValue; + return $this; + } + + /** + * Get Rotation + * + * @return int + */ + public function getRotation() + { + return $this->rotation; + } + + /** + * Set Rotation + * + * @param int $pValue + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setRotation($pValue = 0) + { + $this->rotation = $pValue; + return $this; + } + + /** + * Get Shadow + * + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function getShadow() + { + return $this->shadow; + } + + /** + * Set Shadow + * + * @param PHPExcel_Worksheet_Drawing_Shadow $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_BaseDrawing + */ + public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) + { + $this->shadow = $pValue; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->name . + $this->description . + $this->worksheet->getHashCode() . + $this->coordinates . + $this->offsetX . + $this->offsetY . + $this->width . + $this->height . + $this->rotation . + $this->shadow->getHashCode() . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/CellIterator.php b/assets/excel/PHPExcel/Worksheet/CellIterator.php new file mode 100644 index 0000000..151c17f --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/CellIterator.php @@ -0,0 +1,88 @@ +<?php + +/** + * PHPExcel_Worksheet_CellIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Worksheet_CellIterator +{ + /** + * PHPExcel_Worksheet to iterate + * + * @var PHPExcel_Worksheet + */ + protected $subject; + + /** + * Current iterator position + * + * @var mixed + */ + protected $position = null; + + /** + * Iterate only existing cells + * + * @var boolean + */ + protected $onlyExistingCells = false; + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * Get loop only existing cells + * + * @return boolean + */ + public function getIterateOnlyExistingCells() + { + return $this->onlyExistingCells; + } + + /** + * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary + * + * @throws PHPExcel_Exception + */ + abstract protected function adjustForExistingOnlyRange(); + + /** + * Set the iterator to loop only existing cells + * + * @param boolean $value + * @throws PHPExcel_Exception + */ + public function setIterateOnlyExistingCells($value = true) + { + $this->onlyExistingCells = (boolean) $value; + + $this->adjustForExistingOnlyRange(); + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Column.php b/assets/excel/PHPExcel/Worksheet/Column.php new file mode 100644 index 0000000..6d3f36d --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Column.php @@ -0,0 +1,86 @@ +<?php + +/** + * PHPExcel_Worksheet_Column + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_Column +{ + /** + * PHPExcel_Worksheet + * + * @var PHPExcel_Worksheet + */ + private $parent; + + /** + * Column index + * + * @var string + */ + private $columnIndex; + + /** + * Create a new column + * + * @param PHPExcel_Worksheet $parent + * @param string $columnIndex + */ + public function __construct(PHPExcel_Worksheet $parent = null, $columnIndex = 'A') + { + // Set parent and column index + $this->parent = $parent; + $this->columnIndex = $columnIndex; + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->parent); + } + + /** + * Get column index + * + * @return string + */ + public function getColumnIndex() + { + return $this->columnIndex; + } + + /** + * Get cell iterator + * + * @param integer $startRow The row number at which to start iterating + * @param integer $endRow Optionally, the row number at which to stop iterating + * @return PHPExcel_Worksheet_CellIterator + */ + public function getCellIterator($startRow = 1, $endRow = null) + { + return new PHPExcel_Worksheet_ColumnCellIterator($this->parent, $this->columnIndex, $startRow, $endRow); + } +} diff --git a/assets/excel/PHPExcel/Worksheet/ColumnCellIterator.php b/assets/excel/PHPExcel/Worksheet/ColumnCellIterator.php new file mode 100644 index 0000000..7b8c219 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/ColumnCellIterator.php @@ -0,0 +1,216 @@ +<?php + +/** + * PHPExcel_Worksheet_ColumnCellIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_ColumnCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator +{ + /** + * Column index + * + * @var string + */ + protected $columnIndex; + + /** + * Start position + * + * @var int + */ + protected $startRow = 1; + + /** + * End position + * + * @var int + */ + protected $endRow = 1; + + /** + * Create a new row iterator + * + * @param PHPExcel_Worksheet $subject The worksheet to iterate over + * @param string $columnIndex The column that we want to iterate + * @param integer $startRow The row number at which to start iterating + * @param integer $endRow Optionally, the row number at which to stop iterating + */ + public function __construct(PHPExcel_Worksheet $subject = null, $columnIndex = 'A', $startRow = 1, $endRow = null) + { + // Set subject + $this->subject = $subject; + $this->columnIndex = PHPExcel_Cell::columnIndexFromString($columnIndex) - 1; + $this->resetEnd($endRow); + $this->resetStart($startRow); + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * (Re)Set the start row and the current row pointer + * + * @param integer $startRow The row number at which to start iterating + * @return PHPExcel_Worksheet_ColumnCellIterator + * @throws PHPExcel_Exception + */ + public function resetStart($startRow = 1) + { + $this->startRow = $startRow; + $this->adjustForExistingOnlyRange(); + $this->seek($startRow); + + return $this; + } + + /** + * (Re)Set the end row + * + * @param integer $endRow The row number at which to stop iterating + * @return PHPExcel_Worksheet_ColumnCellIterator + * @throws PHPExcel_Exception + */ + public function resetEnd($endRow = null) + { + $this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow(); + $this->adjustForExistingOnlyRange(); + + return $this; + } + + /** + * Set the row pointer to the selected row + * + * @param integer $row The row number to set the current pointer at + * @return PHPExcel_Worksheet_ColumnCellIterator + * @throws PHPExcel_Exception + */ + public function seek($row = 1) + { + if (($row < $this->startRow) || ($row > $this->endRow)) { + throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})"); + } elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($this->columnIndex, $row))) { + throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist'); + } + $this->position = $row; + + return $this; + } + + /** + * Rewind the iterator to the starting row + */ + public function rewind() + { + $this->position = $this->startRow; + } + + /** + * Return the current cell in this worksheet column + * + * @return PHPExcel_Worksheet_Row + */ + public function current() + { + return $this->subject->getCellByColumnAndRow($this->columnIndex, $this->position); + } + + /** + * Return the current iterator key + * + * @return int + */ + public function key() + { + return $this->position; + } + + /** + * Set the iterator to its next value + */ + public function next() + { + do { + ++$this->position; + } while (($this->onlyExistingCells) && + (!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) && + ($this->position <= $this->endRow)); + } + + /** + * Set the iterator to its previous value + */ + public function prev() + { + if ($this->position <= $this->startRow) { + throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})"); + } + + do { + --$this->position; + } while (($this->onlyExistingCells) && + (!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->position)) && + ($this->position >= $this->startRow)); + } + + /** + * Indicate if more rows exist in the worksheet range of rows that we're iterating + * + * @return boolean + */ + public function valid() + { + return $this->position <= $this->endRow; + } + + /** + * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary + * + * @throws PHPExcel_Exception + */ + protected function adjustForExistingOnlyRange() + { + if ($this->onlyExistingCells) { + while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->startRow)) && + ($this->startRow <= $this->endRow)) { + ++$this->startRow; + } + if ($this->startRow > $this->endRow) { + throw new PHPExcel_Exception('No cells exist within the specified range'); + } + while ((!$this->subject->cellExistsByColumnAndRow($this->columnIndex, $this->endRow)) && + ($this->endRow >= $this->startRow)) { + --$this->endRow; + } + if ($this->endRow < $this->startRow) { + throw new PHPExcel_Exception('No cells exist within the specified range'); + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/ColumnDimension.php b/assets/excel/PHPExcel/Worksheet/ColumnDimension.php new file mode 100644 index 0000000..405b825 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/ColumnDimension.php @@ -0,0 +1,132 @@ +<?php + +/** + * PHPExcel_Worksheet_ColumnDimension + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_ColumnDimension extends PHPExcel_Worksheet_Dimension +{ + /** + * Column index + * + * @var int + */ + private $columnIndex; + + /** + * Column width + * + * When this is set to a negative value, the column width should be ignored by IWriter + * + * @var double + */ + private $width = -1; + + /** + * Auto size? + * + * @var bool + */ + private $autoSize = false; + + /** + * Create a new PHPExcel_Worksheet_ColumnDimension + * + * @param string $pIndex Character column index + */ + public function __construct($pIndex = 'A') + { + // Initialise values + $this->columnIndex = $pIndex; + + // set dimension as unformatted by default + parent::__construct(0); + } + + /** + * Get ColumnIndex + * + * @return string + */ + public function getColumnIndex() + { + return $this->columnIndex; + } + + /** + * Set ColumnIndex + * + * @param string $pValue + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function setColumnIndex($pValue) + { + $this->columnIndex = $pValue; + return $this; + } + + /** + * Get Width + * + * @return double + */ + public function getWidth() + { + return $this->width; + } + + /** + * Set Width + * + * @param double $pValue + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function setWidth($pValue = -1) + { + $this->width = $pValue; + return $this; + } + + /** + * Get Auto Size + * + * @return bool + */ + public function getAutoSize() + { + return $this->autoSize; + } + + /** + * Set Auto Size + * + * @param bool $pValue + * @return PHPExcel_Worksheet_ColumnDimension + */ + public function setAutoSize($pValue = false) + { + $this->autoSize = $pValue; + return $this; + } +} diff --git a/assets/excel/PHPExcel/Worksheet/ColumnIterator.php b/assets/excel/PHPExcel/Worksheet/ColumnIterator.php new file mode 100644 index 0000000..0db3e53 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/ColumnIterator.php @@ -0,0 +1,201 @@ +<?php + +/** + * PHPExcel_Worksheet_ColumnIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_ColumnIterator implements Iterator +{ + /** + * PHPExcel_Worksheet to iterate + * + * @var PHPExcel_Worksheet + */ + private $subject; + + /** + * Current iterator position + * + * @var int + */ + private $position = 0; + + /** + * Start position + * + * @var int + */ + private $startColumn = 0; + + + /** + * End position + * + * @var int + */ + private $endColumn = 0; + + + /** + * Create a new column iterator + * + * @param PHPExcel_Worksheet $subject The worksheet to iterate over + * @param string $startColumn The column address at which to start iterating + * @param string $endColumn Optionally, the column address at which to stop iterating + */ + public function __construct(PHPExcel_Worksheet $subject = null, $startColumn = 'A', $endColumn = null) + { + // Set subject + $this->subject = $subject; + $this->resetEnd($endColumn); + $this->resetStart($startColumn); + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * (Re)Set the start column and the current column pointer + * + * @param integer $startColumn The column address at which to start iterating + * @return PHPExcel_Worksheet_ColumnIterator + * @throws PHPExcel_Exception + */ + public function resetStart($startColumn = 'A') + { + $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; + if ($startColumnIndex > PHPExcel_Cell::columnIndexFromString($this->subject->getHighestColumn()) - 1) { + throw new PHPExcel_Exception("Start column ({$startColumn}) is beyond highest column ({$this->subject->getHighestColumn()})"); + } + + $this->startColumn = $startColumnIndex; + if ($this->endColumn < $this->startColumn) { + $this->endColumn = $this->startColumn; + } + $this->seek($startColumn); + + return $this; + } + + /** + * (Re)Set the end column + * + * @param string $endColumn The column address at which to stop iterating + * @return PHPExcel_Worksheet_ColumnIterator + */ + public function resetEnd($endColumn = null) + { + $endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn(); + $this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; + + return $this; + } + + /** + * Set the column pointer to the selected column + * + * @param string $column The column address to set the current pointer at + * @return PHPExcel_Worksheet_ColumnIterator + * @throws PHPExcel_Exception + */ + public function seek($column = 'A') + { + $column = PHPExcel_Cell::columnIndexFromString($column) - 1; + if (($column < $this->startColumn) || ($column > $this->endColumn)) { + throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})"); + } + $this->position = $column; + + return $this; + } + + /** + * Rewind the iterator to the starting column + */ + public function rewind() + { + $this->position = $this->startColumn; + } + + /** + * Return the current column in this worksheet + * + * @return PHPExcel_Worksheet_Column + */ + public function current() + { + return new PHPExcel_Worksheet_Column($this->subject, PHPExcel_Cell::stringFromColumnIndex($this->position)); + } + + /** + * Return the current iterator key + * + * @return string + */ + public function key() + { + return PHPExcel_Cell::stringFromColumnIndex($this->position); + } + + /** + * Set the iterator to its next value + */ + public function next() + { + ++$this->position; + } + + /** + * Set the iterator to its previous value + * + * @throws PHPExcel_Exception + */ + public function prev() + { + if ($this->position <= $this->startColumn) { + throw new PHPExcel_Exception( + "Column is already at the beginning of range (" . + PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " . + PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")" + ); + } + + --$this->position; + } + + /** + * Indicate if more columns exist in the worksheet range of columns that we're iterating + * + * @return boolean + */ + public function valid() + { + return $this->position <= $this->endColumn; + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Dimension.php b/assets/excel/PHPExcel/Worksheet/Dimension.php new file mode 100644 index 0000000..84f692c --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Dimension.php @@ -0,0 +1,178 @@ +<?php + +/** + * PHPExcel_Worksheet_Dimension + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Worksheet_Dimension +{ + /** + * Visible? + * + * @var bool + */ + private $visible = true; + + /** + * Outline level + * + * @var int + */ + private $outlineLevel = 0; + + /** + * Collapsed + * + * @var bool + */ + private $collapsed = false; + + /** + * Index to cellXf. Null value means row has no explicit cellXf format. + * + * @var int|null + */ + private $xfIndex; + + /** + * Create a new PHPExcel_Worksheet_Dimension + * + * @param int $pIndex Numeric row index + */ + public function __construct($initialValue = null) + { + // set dimension as unformatted by default + $this->xfIndex = $initialValue; + } + + /** + * Get Visible + * + * @return bool + */ + public function getVisible() + { + return $this->visible; + } + + /** + * Set Visible + * + * @param bool $pValue + * @return PHPExcel_Worksheet_Dimension + */ + public function setVisible($pValue = true) + { + $this->visible = $pValue; + return $this; + } + + /** + * Get Outline Level + * + * @return int + */ + public function getOutlineLevel() + { + return $this->outlineLevel; + } + + /** + * Set Outline Level + * + * Value must be between 0 and 7 + * + * @param int $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_Dimension + */ + public function setOutlineLevel($pValue) + { + if ($pValue < 0 || $pValue > 7) { + throw new PHPExcel_Exception("Outline level must range between 0 and 7."); + } + + $this->outlineLevel = $pValue; + return $this; + } + + /** + * Get Collapsed + * + * @return bool + */ + public function getCollapsed() + { + return $this->collapsed; + } + + /** + * Set Collapsed + * + * @param bool $pValue + * @return PHPExcel_Worksheet_Dimension + */ + public function setCollapsed($pValue = true) + { + $this->collapsed = $pValue; + return $this; + } + + /** + * Get index to cellXf + * + * @return int + */ + public function getXfIndex() + { + return $this->xfIndex; + } + + /** + * Set index to cellXf + * + * @param int $pValue + * @return PHPExcel_Worksheet_Dimension + */ + public function setXfIndex($pValue = 0) + { + $this->xfIndex = $pValue; + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Drawing.php b/assets/excel/PHPExcel/Worksheet/Drawing.php new file mode 100644 index 0000000..e39d3eb --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Drawing.php @@ -0,0 +1,147 @@ +<?php + +/** + * PHPExcel_Worksheet_Drawing + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet_Drawing + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_Drawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable +{ + /** + * Path + * + * @var string + */ + private $path; + + /** + * Create a new PHPExcel_Worksheet_Drawing + */ + public function __construct() + { + // Initialise values + $this->path = ''; + + // Initialize parent + parent::__construct(); + } + + /** + * Get Filename + * + * @return string + */ + public function getFilename() + { + return basename($this->path); + } + + /** + * Get indexed filename (using image index) + * + * @return string + */ + public function getIndexedFilename() + { + $fileName = $this->getFilename(); + $fileName = str_replace(' ', '_', $fileName); + return str_replace('.' . $this->getExtension(), '', $fileName) . $this->getImageIndex() . '.' . $this->getExtension(); + } + + /** + * Get Extension + * + * @return string + */ + public function getExtension() + { + $exploded = explode(".", basename($this->path)); + return $exploded[count($exploded) - 1]; + } + + /** + * Get Path + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Set Path + * + * @param string $pValue File path + * @param boolean $pVerifyFile Verify file + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_Drawing + */ + public function setPath($pValue = '', $pVerifyFile = true) + { + if ($pVerifyFile) { + if (file_exists($pValue)) { + $this->path = $pValue; + + if ($this->width == 0 && $this->height == 0) { + // Get width/height + list($this->width, $this->height) = getimagesize($pValue); + } + } else { + throw new PHPExcel_Exception("File $pValue not found!"); + } + } else { + $this->path = $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->path . + parent::getHashCode() . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Drawing/Shadow.php b/assets/excel/PHPExcel/Worksheet/Drawing/Shadow.php new file mode 100644 index 0000000..84db91d --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Drawing/Shadow.php @@ -0,0 +1,296 @@ +<?php + +/** + * PHPExcel_Worksheet_Drawing_Shadow + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet_Drawing + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_Drawing_Shadow implements PHPExcel_IComparable +{ + /* Shadow alignment */ + const SHADOW_BOTTOM = 'b'; + const SHADOW_BOTTOM_LEFT = 'bl'; + const SHADOW_BOTTOM_RIGHT = 'br'; + const SHADOW_CENTER = 'ctr'; + const SHADOW_LEFT = 'l'; + const SHADOW_TOP = 't'; + const SHADOW_TOP_LEFT = 'tl'; + const SHADOW_TOP_RIGHT = 'tr'; + + /** + * Visible + * + * @var boolean + */ + private $visible; + + /** + * Blur radius + * + * Defaults to 6 + * + * @var int + */ + private $blurRadius; + + /** + * Shadow distance + * + * Defaults to 2 + * + * @var int + */ + private $distance; + + /** + * Shadow direction (in degrees) + * + * @var int + */ + private $direction; + + /** + * Shadow alignment + * + * @var int + */ + private $alignment; + + /** + * Color + * + * @var PHPExcel_Style_Color + */ + private $color; + + /** + * Alpha + * + * @var int + */ + private $alpha; + + /** + * Create a new PHPExcel_Worksheet_Drawing_Shadow + */ + public function __construct() + { + // Initialise values + $this->visible = false; + $this->blurRadius = 6; + $this->distance = 2; + $this->direction = 0; + $this->alignment = PHPExcel_Worksheet_Drawing_Shadow::SHADOW_BOTTOM_RIGHT; + $this->color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK); + $this->alpha = 50; + } + + /** + * Get Visible + * + * @return boolean + */ + public function getVisible() + { + return $this->visible; + } + + /** + * Set Visible + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setVisible($pValue = false) + { + $this->visible = $pValue; + return $this; + } + + /** + * Get Blur radius + * + * @return int + */ + public function getBlurRadius() + { + return $this->blurRadius; + } + + /** + * Set Blur radius + * + * @param int $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setBlurRadius($pValue = 6) + { + $this->blurRadius = $pValue; + return $this; + } + + /** + * Get Shadow distance + * + * @return int + */ + public function getDistance() + { + return $this->distance; + } + + /** + * Set Shadow distance + * + * @param int $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setDistance($pValue = 2) + { + $this->distance = $pValue; + return $this; + } + + /** + * Get Shadow direction (in degrees) + * + * @return int + */ + public function getDirection() + { + return $this->direction; + } + + /** + * Set Shadow direction (in degrees) + * + * @param int $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setDirection($pValue = 0) + { + $this->direction = $pValue; + return $this; + } + + /** + * Get Shadow alignment + * + * @return int + */ + public function getAlignment() + { + return $this->alignment; + } + + /** + * Set Shadow alignment + * + * @param int $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setAlignment($pValue = 0) + { + $this->alignment = $pValue; + return $this; + } + + /** + * Get Color + * + * @return PHPExcel_Style_Color + */ + public function getColor() + { + return $this->color; + } + + /** + * Set Color + * + * @param PHPExcel_Style_Color $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setColor(PHPExcel_Style_Color $pValue = null) + { + $this->color = $pValue; + return $this; + } + + /** + * Get Alpha + * + * @return int + */ + public function getAlpha() + { + return $this->alpha; + } + + /** + * Set Alpha + * + * @param int $pValue + * @return PHPExcel_Worksheet_Drawing_Shadow + */ + public function setAlpha($pValue = 0) + { + $this->alpha = $pValue; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + ($this->visible ? 't' : 'f') . + $this->blurRadius . + $this->distance . + $this->direction . + $this->alignment . + $this->color->getHashCode() . + $this->alpha . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/HeaderFooter.php b/assets/excel/PHPExcel/Worksheet/HeaderFooter.php new file mode 100644 index 0000000..3a88923 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/HeaderFooter.php @@ -0,0 +1,494 @@ +<?php +/** + * PHPExcel_Worksheet_HeaderFooter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not,241 write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + * + * <code> + * Header/Footer Formatting Syntax taken from Office Open XML Part 4 - Markup Language Reference, page 1970: + * + * There are a number of formatting codes that can be written inline with the actual header / footer text, which + * affect the formatting in the header or footer. + * + * Example: This example shows the text "Center Bold Header" on the first line (center section), and the date on + * the second line (center section). + * &CCenter &"-,Bold"Bold&"-,Regular"Header_x000A_&D + * + * General Rules: + * There is no required order in which these codes must appear. + * + * The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again: + * - strikethrough + * - superscript + * - subscript + * Superscript and subscript cannot both be ON at same time. Whichever comes first wins and the other is ignored, + * while the first is ON. + * &L - code for "left section" (there are three header / footer locations, "left", "center", and "right"). When + * two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the + * order of appearance, and placed into the left section. + * &P - code for "current page #" + * &N - code for "total pages" + * &font size - code for "text font size", where font size is a font size in points. + * &K - code for "text font color" + * RGB Color is specified as RRGGBB + * Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade + * value, NN is the tint/shade value. + * &S - code for "text strikethrough" on / off + * &X - code for "text super script" on / off + * &Y - code for "text subscript" on / off + * &C - code for "center section". When two or more occurrences of this section marker exist, the contents + * from all markers are concatenated, in the order of appearance, and placed into the center section. + * + * &D - code for "date" + * &T - code for "time" + * &G - code for "picture as background" + * &U - code for "text single underline" + * &E - code for "double underline" + * &R - code for "right section". When two or more occurrences of this section marker exist, the contents + * from all markers are concatenated, in the order of appearance, and placed into the right section. + * &Z - code for "this workbook's file path" + * &F - code for "this workbook's file name" + * &A - code for "sheet tab name" + * &+ - code for add to page #. + * &- - code for subtract from page #. + * &"font name,font type" - code for "text font name" and "text font type", where font name and font type + * are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font + * name, it means "none specified". Both of font name and font type can be localized values. + * &"-,Bold" - code for "bold font style" + * &B - also means "bold font style". + * &"-,Regular" - code for "regular font style" + * &"-,Italic" - code for "italic font style" + * &I - also means "italic font style" + * &"-,Bold Italic" code for "bold italic font style" + * &O - code for "outline style" + * &H - code for "shadow style" + * </code> + * + */ +class PHPExcel_Worksheet_HeaderFooter +{ + /* Header/footer image location */ + const IMAGE_HEADER_LEFT = 'LH'; + const IMAGE_HEADER_CENTER = 'CH'; + const IMAGE_HEADER_RIGHT = 'RH'; + const IMAGE_FOOTER_LEFT = 'LF'; + const IMAGE_FOOTER_CENTER = 'CF'; + const IMAGE_FOOTER_RIGHT = 'RF'; + + /** + * OddHeader + * + * @var string + */ + private $oddHeader = ''; + + /** + * OddFooter + * + * @var string + */ + private $oddFooter = ''; + + /** + * EvenHeader + * + * @var string + */ + private $evenHeader = ''; + + /** + * EvenFooter + * + * @var string + */ + private $evenFooter = ''; + + /** + * FirstHeader + * + * @var string + */ + private $firstHeader = ''; + + /** + * FirstFooter + * + * @var string + */ + private $firstFooter = ''; + + /** + * Different header for Odd/Even, defaults to false + * + * @var boolean + */ + private $differentOddEven = false; + + /** + * Different header for first page, defaults to false + * + * @var boolean + */ + private $differentFirst = false; + + /** + * Scale with document, defaults to true + * + * @var boolean + */ + private $scaleWithDocument = true; + + /** + * Align with margins, defaults to true + * + * @var boolean + */ + private $alignWithMargins = true; + + /** + * Header/footer images + * + * @var PHPExcel_Worksheet_HeaderFooterDrawing[] + */ + private $headerFooterImages = array(); + + /** + * Create a new PHPExcel_Worksheet_HeaderFooter + */ + public function __construct() + { + } + + /** + * Get OddHeader + * + * @return string + */ + public function getOddHeader() + { + return $this->oddHeader; + } + + /** + * Set OddHeader + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setOddHeader($pValue) + { + $this->oddHeader = $pValue; + return $this; + } + + /** + * Get OddFooter + * + * @return string + */ + public function getOddFooter() + { + return $this->oddFooter; + } + + /** + * Set OddFooter + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setOddFooter($pValue) + { + $this->oddFooter = $pValue; + return $this; + } + + /** + * Get EvenHeader + * + * @return string + */ + public function getEvenHeader() + { + return $this->evenHeader; + } + + /** + * Set EvenHeader + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setEvenHeader($pValue) + { + $this->evenHeader = $pValue; + return $this; + } + + /** + * Get EvenFooter + * + * @return string + */ + public function getEvenFooter() + { + return $this->evenFooter; + } + + /** + * Set EvenFooter + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setEvenFooter($pValue) + { + $this->evenFooter = $pValue; + return $this; + } + + /** + * Get FirstHeader + * + * @return string + */ + public function getFirstHeader() + { + return $this->firstHeader; + } + + /** + * Set FirstHeader + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setFirstHeader($pValue) + { + $this->firstHeader = $pValue; + return $this; + } + + /** + * Get FirstFooter + * + * @return string + */ + public function getFirstFooter() + { + return $this->firstFooter; + } + + /** + * Set FirstFooter + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setFirstFooter($pValue) + { + $this->firstFooter = $pValue; + return $this; + } + + /** + * Get DifferentOddEven + * + * @return boolean + */ + public function getDifferentOddEven() + { + return $this->differentOddEven; + } + + /** + * Set DifferentOddEven + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setDifferentOddEven($pValue = false) + { + $this->differentOddEven = $pValue; + return $this; + } + + /** + * Get DifferentFirst + * + * @return boolean + */ + public function getDifferentFirst() + { + return $this->differentFirst; + } + + /** + * Set DifferentFirst + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setDifferentFirst($pValue = false) + { + $this->differentFirst = $pValue; + return $this; + } + + /** + * Get ScaleWithDocument + * + * @return boolean + */ + public function getScaleWithDocument() + { + return $this->scaleWithDocument; + } + + /** + * Set ScaleWithDocument + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setScaleWithDocument($pValue = true) + { + $this->scaleWithDocument = $pValue; + return $this; + } + + /** + * Get AlignWithMargins + * + * @return boolean + */ + public function getAlignWithMargins() + { + return $this->alignWithMargins; + } + + /** + * Set AlignWithMargins + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setAlignWithMargins($pValue = true) + { + $this->alignWithMargins = $pValue; + return $this; + } + + /** + * Add header/footer image + * + * @param PHPExcel_Worksheet_HeaderFooterDrawing $image + * @param string $location + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function addImage(PHPExcel_Worksheet_HeaderFooterDrawing $image = null, $location = self::IMAGE_HEADER_LEFT) + { + $this->headerFooterImages[$location] = $image; + return $this; + } + + /** + * Remove header/footer image + * + * @param string $location + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function removeImage($location = self::IMAGE_HEADER_LEFT) + { + if (isset($this->headerFooterImages[$location])) { + unset($this->headerFooterImages[$location]); + } + return $this; + } + + /** + * Set header/footer images + * + * @param PHPExcel_Worksheet_HeaderFooterDrawing[] $images + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setImages($images) + { + if (!is_array($images)) { + throw new PHPExcel_Exception('Invalid parameter!'); + } + + $this->headerFooterImages = $images; + return $this; + } + + /** + * Get header/footer images + * + * @return PHPExcel_Worksheet_HeaderFooterDrawing[] + */ + public function getImages() + { + // Sort array + $images = array(); + if (isset($this->headerFooterImages[self::IMAGE_HEADER_LEFT])) { + $images[self::IMAGE_HEADER_LEFT] = $this->headerFooterImages[self::IMAGE_HEADER_LEFT]; + } + if (isset($this->headerFooterImages[self::IMAGE_HEADER_CENTER])) { + $images[self::IMAGE_HEADER_CENTER] = $this->headerFooterImages[self::IMAGE_HEADER_CENTER]; + } + if (isset($this->headerFooterImages[self::IMAGE_HEADER_RIGHT])) { + $images[self::IMAGE_HEADER_RIGHT] = $this->headerFooterImages[self::IMAGE_HEADER_RIGHT]; + } + if (isset($this->headerFooterImages[self::IMAGE_FOOTER_LEFT])) { + $images[self::IMAGE_FOOTER_LEFT] = $this->headerFooterImages[self::IMAGE_FOOTER_LEFT]; + } + if (isset($this->headerFooterImages[self::IMAGE_FOOTER_CENTER])) { + $images[self::IMAGE_FOOTER_CENTER] = $this->headerFooterImages[self::IMAGE_FOOTER_CENTER]; + } + if (isset($this->headerFooterImages[self::IMAGE_FOOTER_RIGHT])) { + $images[self::IMAGE_FOOTER_RIGHT] = $this->headerFooterImages[self::IMAGE_FOOTER_RIGHT]; + } + $this->headerFooterImages = $images; + + return $this->headerFooterImages; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php b/assets/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php new file mode 100644 index 0000000..a491f4b --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/HeaderFooterDrawing.php @@ -0,0 +1,361 @@ +<?php + +/** + * PHPExcel_Worksheet_HeaderFooterDrawing + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_HeaderFooterDrawing extends PHPExcel_Worksheet_Drawing implements PHPExcel_IComparable +{ + /** + * Path + * + * @var string + */ + private $path; + + /** + * Name + * + * @var string + */ + protected $name; + + /** + * Offset X + * + * @var int + */ + protected $offsetX; + + /** + * Offset Y + * + * @var int + */ + protected $offsetY; + + /** + * Width + * + * @var int + */ + protected $width; + + /** + * Height + * + * @var int + */ + protected $height; + + /** + * Proportional resize + * + * @var boolean + */ + protected $resizeProportional; + + /** + * Create a new PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function __construct() + { + // Initialise values + $this->path = ''; + $this->name = ''; + $this->offsetX = 0; + $this->offsetY = 0; + $this->width = 0; + $this->height = 0; + $this->resizeProportional = true; + } + + /** + * Get Name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Set Name + * + * @param string $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setName($pValue = '') + { + $this->name = $pValue; + return $this; + } + + /** + * Get OffsetX + * + * @return int + */ + public function getOffsetX() + { + return $this->offsetX; + } + + /** + * Set OffsetX + * + * @param int $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setOffsetX($pValue = 0) + { + $this->offsetX = $pValue; + return $this; + } + + /** + * Get OffsetY + * + * @return int + */ + public function getOffsetY() + { + return $this->offsetY; + } + + /** + * Set OffsetY + * + * @param int $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setOffsetY($pValue = 0) + { + $this->offsetY = $pValue; + return $this; + } + + /** + * Get Width + * + * @return int + */ + public function getWidth() + { + return $this->width; + } + + /** + * Set Width + * + * @param int $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setWidth($pValue = 0) + { + // Resize proportional? + if ($this->resizeProportional && $pValue != 0) { + $ratio = $this->width / $this->height; + $this->height = round($ratio * $pValue); + } + + // Set width + $this->width = $pValue; + + return $this; + } + + /** + * Get Height + * + * @return int + */ + public function getHeight() + { + return $this->height; + } + + /** + * Set Height + * + * @param int $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setHeight($pValue = 0) + { + // Resize proportional? + if ($this->resizeProportional && $pValue != 0) { + $ratio = $this->width / $this->height; + $this->width = round($ratio * $pValue); + } + + // Set height + $this->height = $pValue; + + return $this; + } + + /** + * Set width and height with proportional resize + * Example: + * <code> + * $objDrawing->setResizeProportional(true); + * $objDrawing->setWidthAndHeight(160,120); + * </code> + * + * @author Vincent@luo MSN:kele_100@hotmail.com + * @param int $width + * @param int $height + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setWidthAndHeight($width = 0, $height = 0) + { + $xratio = $width / $this->width; + $yratio = $height / $this->height; + if ($this->resizeProportional && !($width == 0 || $height == 0)) { + if (($xratio * $this->height) < $height) { + $this->height = ceil($xratio * $this->height); + $this->width = $width; + } else { + $this->width = ceil($yratio * $this->width); + $this->height = $height; + } + } + return $this; + } + + /** + * Get ResizeProportional + * + * @return boolean + */ + public function getResizeProportional() + { + return $this->resizeProportional; + } + + /** + * Set ResizeProportional + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setResizeProportional($pValue = true) + { + $this->resizeProportional = $pValue; + return $this; + } + + /** + * Get Filename + * + * @return string + */ + public function getFilename() + { + return basename($this->path); + } + + /** + * Get Extension + * + * @return string + */ + public function getExtension() + { + $parts = explode(".", basename($this->path)); + return end($parts); + } + + /** + * Get Path + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Set Path + * + * @param string $pValue File path + * @param boolean $pVerifyFile Verify file + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_HeaderFooterDrawing + */ + public function setPath($pValue = '', $pVerifyFile = true) + { + if ($pVerifyFile) { + if (file_exists($pValue)) { + $this->path = $pValue; + + if ($this->width == 0 && $this->height == 0) { + // Get width/height + list($this->width, $this->height) = getimagesize($pValue); + } + } else { + throw new PHPExcel_Exception("File $pValue not found!"); + } + } else { + $this->path = $pValue; + } + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->path . + $this->name . + $this->offsetX . + $this->offsetY . + $this->width . + $this->height . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/MemoryDrawing.php b/assets/excel/PHPExcel/Worksheet/MemoryDrawing.php new file mode 100644 index 0000000..438ed2c --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/MemoryDrawing.php @@ -0,0 +1,201 @@ +<?php + +/** + * PHPExcel_Worksheet_MemoryDrawing + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_MemoryDrawing extends PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable +{ + /* Rendering functions */ + const RENDERING_DEFAULT = 'imagepng'; + const RENDERING_PNG = 'imagepng'; + const RENDERING_GIF = 'imagegif'; + const RENDERING_JPEG = 'imagejpeg'; + + /* MIME types */ + const MIMETYPE_DEFAULT = 'image/png'; + const MIMETYPE_PNG = 'image/png'; + const MIMETYPE_GIF = 'image/gif'; + const MIMETYPE_JPEG = 'image/jpeg'; + + /** + * Image resource + * + * @var resource + */ + private $imageResource; + + /** + * Rendering function + * + * @var string + */ + private $renderingFunction; + + /** + * Mime type + * + * @var string + */ + private $mimeType; + + /** + * Unique name + * + * @var string + */ + private $uniqueName; + + /** + * Create a new PHPExcel_Worksheet_MemoryDrawing + */ + public function __construct() + { + // Initialise values + $this->imageResource = null; + $this->renderingFunction = self::RENDERING_DEFAULT; + $this->mimeType = self::MIMETYPE_DEFAULT; + $this->uniqueName = md5(rand(0, 9999). time() . rand(0, 9999)); + + // Initialize parent + parent::__construct(); + } + + /** + * Get image resource + * + * @return resource + */ + public function getImageResource() + { + return $this->imageResource; + } + + /** + * Set image resource + * + * @param $value resource + * @return PHPExcel_Worksheet_MemoryDrawing + */ + public function setImageResource($value = null) + { + $this->imageResource = $value; + + if (!is_null($this->imageResource)) { + // Get width/height + $this->width = imagesx($this->imageResource); + $this->height = imagesy($this->imageResource); + } + return $this; + } + + /** + * Get rendering function + * + * @return string + */ + public function getRenderingFunction() + { + return $this->renderingFunction; + } + + /** + * Set rendering function + * + * @param string $value + * @return PHPExcel_Worksheet_MemoryDrawing + */ + public function setRenderingFunction($value = PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT) + { + $this->renderingFunction = $value; + return $this; + } + + /** + * Get mime type + * + * @return string + */ + public function getMimeType() + { + return $this->mimeType; + } + + /** + * Set mime type + * + * @param string $value + * @return PHPExcel_Worksheet_MemoryDrawing + */ + public function setMimeType($value = PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT) + { + $this->mimeType = $value; + return $this; + } + + /** + * Get indexed filename (using image index) + * + * @return string + */ + public function getIndexedFilename() + { + $extension = strtolower($this->getMimeType()); + $extension = explode('/', $extension); + $extension = $extension[1]; + + return $this->uniqueName . $this->getImageIndex() . '.' . $extension; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5( + $this->renderingFunction . + $this->mimeType . + $this->uniqueName . + parent::getHashCode() . + __CLASS__ + ); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/PageMargins.php b/assets/excel/PHPExcel/Worksheet/PageMargins.php new file mode 100644 index 0000000..70f5ee0 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/PageMargins.php @@ -0,0 +1,233 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Worksheet_PageMargins + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Worksheet_PageMargins +{ + /** + * Left + * + * @var double + */ + private $left = 0.7; + + /** + * Right + * + * @var double + */ + private $right = 0.7; + + /** + * Top + * + * @var double + */ + private $top = 0.75; + + /** + * Bottom + * + * @var double + */ + private $bottom = 0.75; + + /** + * Header + * + * @var double + */ + private $header = 0.3; + + /** + * Footer + * + * @var double + */ + private $footer = 0.3; + + /** + * Create a new PHPExcel_Worksheet_PageMargins + */ + public function __construct() + { + } + + /** + * Get Left + * + * @return double + */ + public function getLeft() + { + return $this->left; + } + + /** + * Set Left + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setLeft($pValue) + { + $this->left = $pValue; + return $this; + } + + /** + * Get Right + * + * @return double + */ + public function getRight() + { + return $this->right; + } + + /** + * Set Right + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setRight($pValue) + { + $this->right = $pValue; + return $this; + } + + /** + * Get Top + * + * @return double + */ + public function getTop() + { + return $this->top; + } + + /** + * Set Top + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setTop($pValue) + { + $this->top = $pValue; + return $this; + } + + /** + * Get Bottom + * + * @return double + */ + public function getBottom() + { + return $this->bottom; + } + + /** + * Set Bottom + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setBottom($pValue) + { + $this->bottom = $pValue; + return $this; + } + + /** + * Get Header + * + * @return double + */ + public function getHeader() + { + return $this->header; + } + + /** + * Set Header + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setHeader($pValue) + { + $this->header = $pValue; + return $this; + } + + /** + * Get Footer + * + * @return double + */ + public function getFooter() + { + return $this->footer; + } + + /** + * Set Footer + * + * @param double $pValue + * @return PHPExcel_Worksheet_PageMargins + */ + public function setFooter($pValue) + { + $this->footer = $pValue; + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/PageSetup.php b/assets/excel/PHPExcel/Worksheet/PageSetup.php new file mode 100644 index 0000000..c67053e --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/PageSetup.php @@ -0,0 +1,839 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Worksheet_PageSetup + * + * <code> + * Paper size taken from Office Open XML Part 4 - Markup Language Reference, page 1988: + * + * 1 = Letter paper (8.5 in. by 11 in.) + * 2 = Letter small paper (8.5 in. by 11 in.) + * 3 = Tabloid paper (11 in. by 17 in.) + * 4 = Ledger paper (17 in. by 11 in.) + * 5 = Legal paper (8.5 in. by 14 in.) + * 6 = Statement paper (5.5 in. by 8.5 in.) + * 7 = Executive paper (7.25 in. by 10.5 in.) + * 8 = A3 paper (297 mm by 420 mm) + * 9 = A4 paper (210 mm by 297 mm) + * 10 = A4 small paper (210 mm by 297 mm) + * 11 = A5 paper (148 mm by 210 mm) + * 12 = B4 paper (250 mm by 353 mm) + * 13 = B5 paper (176 mm by 250 mm) + * 14 = Folio paper (8.5 in. by 13 in.) + * 15 = Quarto paper (215 mm by 275 mm) + * 16 = Standard paper (10 in. by 14 in.) + * 17 = Standard paper (11 in. by 17 in.) + * 18 = Note paper (8.5 in. by 11 in.) + * 19 = #9 envelope (3.875 in. by 8.875 in.) + * 20 = #10 envelope (4.125 in. by 9.5 in.) + * 21 = #11 envelope (4.5 in. by 10.375 in.) + * 22 = #12 envelope (4.75 in. by 11 in.) + * 23 = #14 envelope (5 in. by 11.5 in.) + * 24 = C paper (17 in. by 22 in.) + * 25 = D paper (22 in. by 34 in.) + * 26 = E paper (34 in. by 44 in.) + * 27 = DL envelope (110 mm by 220 mm) + * 28 = C5 envelope (162 mm by 229 mm) + * 29 = C3 envelope (324 mm by 458 mm) + * 30 = C4 envelope (229 mm by 324 mm) + * 31 = C6 envelope (114 mm by 162 mm) + * 32 = C65 envelope (114 mm by 229 mm) + * 33 = B4 envelope (250 mm by 353 mm) + * 34 = B5 envelope (176 mm by 250 mm) + * 35 = B6 envelope (176 mm by 125 mm) + * 36 = Italy envelope (110 mm by 230 mm) + * 37 = Monarch envelope (3.875 in. by 7.5 in.). + * 38 = 6 3/4 envelope (3.625 in. by 6.5 in.) + * 39 = US standard fanfold (14.875 in. by 11 in.) + * 40 = German standard fanfold (8.5 in. by 12 in.) + * 41 = German legal fanfold (8.5 in. by 13 in.) + * 42 = ISO B4 (250 mm by 353 mm) + * 43 = Japanese double postcard (200 mm by 148 mm) + * 44 = Standard paper (9 in. by 11 in.) + * 45 = Standard paper (10 in. by 11 in.) + * 46 = Standard paper (15 in. by 11 in.) + * 47 = Invite envelope (220 mm by 220 mm) + * 50 = Letter extra paper (9.275 in. by 12 in.) + * 51 = Legal extra paper (9.275 in. by 15 in.) + * 52 = Tabloid extra paper (11.69 in. by 18 in.) + * 53 = A4 extra paper (236 mm by 322 mm) + * 54 = Letter transverse paper (8.275 in. by 11 in.) + * 55 = A4 transverse paper (210 mm by 297 mm) + * 56 = Letter extra transverse paper (9.275 in. by 12 in.) + * 57 = SuperA/SuperA/A4 paper (227 mm by 356 mm) + * 58 = SuperB/SuperB/A3 paper (305 mm by 487 mm) + * 59 = Letter plus paper (8.5 in. by 12.69 in.) + * 60 = A4 plus paper (210 mm by 330 mm) + * 61 = A5 transverse paper (148 mm by 210 mm) + * 62 = JIS B5 transverse paper (182 mm by 257 mm) + * 63 = A3 extra paper (322 mm by 445 mm) + * 64 = A5 extra paper (174 mm by 235 mm) + * 65 = ISO B5 extra paper (201 mm by 276 mm) + * 66 = A2 paper (420 mm by 594 mm) + * 67 = A3 transverse paper (297 mm by 420 mm) + * 68 = A3 extra transverse paper (322 mm by 445 mm) + * </code> + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Worksheet_PageSetup +{ + /* Paper size */ + const PAPERSIZE_LETTER = 1; + const PAPERSIZE_LETTER_SMALL = 2; + const PAPERSIZE_TABLOID = 3; + const PAPERSIZE_LEDGER = 4; + const PAPERSIZE_LEGAL = 5; + const PAPERSIZE_STATEMENT = 6; + const PAPERSIZE_EXECUTIVE = 7; + const PAPERSIZE_A3 = 8; + const PAPERSIZE_A4 = 9; + const PAPERSIZE_A4_SMALL = 10; + const PAPERSIZE_A5 = 11; + const PAPERSIZE_B4 = 12; + const PAPERSIZE_B5 = 13; + const PAPERSIZE_FOLIO = 14; + const PAPERSIZE_QUARTO = 15; + const PAPERSIZE_STANDARD_1 = 16; + const PAPERSIZE_STANDARD_2 = 17; + const PAPERSIZE_NOTE = 18; + const PAPERSIZE_NO9_ENVELOPE = 19; + const PAPERSIZE_NO10_ENVELOPE = 20; + const PAPERSIZE_NO11_ENVELOPE = 21; + const PAPERSIZE_NO12_ENVELOPE = 22; + const PAPERSIZE_NO14_ENVELOPE = 23; + const PAPERSIZE_C = 24; + const PAPERSIZE_D = 25; + const PAPERSIZE_E = 26; + const PAPERSIZE_DL_ENVELOPE = 27; + const PAPERSIZE_C5_ENVELOPE = 28; + const PAPERSIZE_C3_ENVELOPE = 29; + const PAPERSIZE_C4_ENVELOPE = 30; + const PAPERSIZE_C6_ENVELOPE = 31; + const PAPERSIZE_C65_ENVELOPE = 32; + const PAPERSIZE_B4_ENVELOPE = 33; + const PAPERSIZE_B5_ENVELOPE = 34; + const PAPERSIZE_B6_ENVELOPE = 35; + const PAPERSIZE_ITALY_ENVELOPE = 36; + const PAPERSIZE_MONARCH_ENVELOPE = 37; + const PAPERSIZE_6_3_4_ENVELOPE = 38; + const PAPERSIZE_US_STANDARD_FANFOLD = 39; + const PAPERSIZE_GERMAN_STANDARD_FANFOLD = 40; + const PAPERSIZE_GERMAN_LEGAL_FANFOLD = 41; + const PAPERSIZE_ISO_B4 = 42; + const PAPERSIZE_JAPANESE_DOUBLE_POSTCARD = 43; + const PAPERSIZE_STANDARD_PAPER_1 = 44; + const PAPERSIZE_STANDARD_PAPER_2 = 45; + const PAPERSIZE_STANDARD_PAPER_3 = 46; + const PAPERSIZE_INVITE_ENVELOPE = 47; + const PAPERSIZE_LETTER_EXTRA_PAPER = 48; + const PAPERSIZE_LEGAL_EXTRA_PAPER = 49; + const PAPERSIZE_TABLOID_EXTRA_PAPER = 50; + const PAPERSIZE_A4_EXTRA_PAPER = 51; + const PAPERSIZE_LETTER_TRANSVERSE_PAPER = 52; + const PAPERSIZE_A4_TRANSVERSE_PAPER = 53; + const PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER = 54; + const PAPERSIZE_SUPERA_SUPERA_A4_PAPER = 55; + const PAPERSIZE_SUPERB_SUPERB_A3_PAPER = 56; + const PAPERSIZE_LETTER_PLUS_PAPER = 57; + const PAPERSIZE_A4_PLUS_PAPER = 58; + const PAPERSIZE_A5_TRANSVERSE_PAPER = 59; + const PAPERSIZE_JIS_B5_TRANSVERSE_PAPER = 60; + const PAPERSIZE_A3_EXTRA_PAPER = 61; + const PAPERSIZE_A5_EXTRA_PAPER = 62; + const PAPERSIZE_ISO_B5_EXTRA_PAPER = 63; + const PAPERSIZE_A2_PAPER = 64; + const PAPERSIZE_A3_TRANSVERSE_PAPER = 65; + const PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER = 66; + + /* Page orientation */ + const ORIENTATION_DEFAULT = 'default'; + const ORIENTATION_LANDSCAPE = 'landscape'; + const ORIENTATION_PORTRAIT = 'portrait'; + + /* Print Range Set Method */ + const SETPRINTRANGE_OVERWRITE = 'O'; + const SETPRINTRANGE_INSERT = 'I'; + + + /** + * Paper size + * + * @var int + */ + private $paperSize = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER; + + /** + * Orientation + * + * @var string + */ + private $orientation = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT; + + /** + * Scale (Print Scale) + * + * Print scaling. Valid values range from 10 to 400 + * This setting is overridden when fitToWidth and/or fitToHeight are in use + * + * @var int? + */ + private $scale = 100; + + /** + * Fit To Page + * Whether scale or fitToWith / fitToHeight applies + * + * @var boolean + */ + private $fitToPage = false; + + /** + * Fit To Height + * Number of vertical pages to fit on + * + * @var int? + */ + private $fitToHeight = 1; + + /** + * Fit To Width + * Number of horizontal pages to fit on + * + * @var int? + */ + private $fitToWidth = 1; + + /** + * Columns to repeat at left + * + * @var array Containing start column and end column, empty array if option unset + */ + private $columnsToRepeatAtLeft = array('', ''); + + /** + * Rows to repeat at top + * + * @var array Containing start row number and end row number, empty array if option unset + */ + private $rowsToRepeatAtTop = array(0, 0); + + /** + * Center page horizontally + * + * @var boolean + */ + private $horizontalCentered = false; + + /** + * Center page vertically + * + * @var boolean + */ + private $verticalCentered = false; + + /** + * Print area + * + * @var string + */ + private $printArea = null; + + /** + * First page number + * + * @var int + */ + private $firstPageNumber = null; + + /** + * Create a new PHPExcel_Worksheet_PageSetup + */ + public function __construct() + { + } + + /** + * Get Paper Size + * + * @return int + */ + public function getPaperSize() + { + return $this->paperSize; + } + + /** + * Set Paper Size + * + * @param int $pValue + * @return PHPExcel_Worksheet_PageSetup + */ + public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) + { + $this->paperSize = $pValue; + return $this; + } + + /** + * Get Orientation + * + * @return string + */ + public function getOrientation() + { + return $this->orientation; + } + + /** + * Set Orientation + * + * @param string $pValue + * @return PHPExcel_Worksheet_PageSetup + */ + public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) + { + $this->orientation = $pValue; + return $this; + } + + /** + * Get Scale + * + * @return int? + */ + public function getScale() + { + return $this->scale; + } + + /** + * Set Scale + * + * Print scaling. Valid values range from 10 to 400 + * This setting is overridden when fitToWidth and/or fitToHeight are in use + * + * @param int? $pValue + * @param boolean $pUpdate Update fitToPage so scaling applies rather than fitToHeight / fitToWidth + * @return PHPExcel_Worksheet_PageSetup + * @throws PHPExcel_Exception + */ + public function setScale($pValue = 100, $pUpdate = true) + { + // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface, + // but it is apparently still able to handle any scale >= 0, where 0 results in 100 + if (($pValue >= 0) || is_null($pValue)) { + $this->scale = $pValue; + if ($pUpdate) { + $this->fitToPage = false; + } + } else { + throw new PHPExcel_Exception("Scale must not be negative"); + } + return $this; + } + + /** + * Get Fit To Page + * + * @return boolean + */ + public function getFitToPage() + { + return $this->fitToPage; + } + + /** + * Set Fit To Page + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_PageSetup + */ + public function setFitToPage($pValue = true) + { + $this->fitToPage = $pValue; + return $this; + } + + /** + * Get Fit To Height + * + * @return int? + */ + public function getFitToHeight() + { + return $this->fitToHeight; + } + + /** + * Set Fit To Height + * + * @param int? $pValue + * @param boolean $pUpdate Update fitToPage so it applies rather than scaling + * @return PHPExcel_Worksheet_PageSetup + */ + public function setFitToHeight($pValue = 1, $pUpdate = true) + { + $this->fitToHeight = $pValue; + if ($pUpdate) { + $this->fitToPage = true; + } + return $this; + } + + /** + * Get Fit To Width + * + * @return int? + */ + public function getFitToWidth() + { + return $this->fitToWidth; + } + + /** + * Set Fit To Width + * + * @param int? $pValue + * @param boolean $pUpdate Update fitToPage so it applies rather than scaling + * @return PHPExcel_Worksheet_PageSetup + */ + public function setFitToWidth($pValue = 1, $pUpdate = true) + { + $this->fitToWidth = $pValue; + if ($pUpdate) { + $this->fitToPage = true; + } + return $this; + } + + /** + * Is Columns to repeat at left set? + * + * @return boolean + */ + public function isColumnsToRepeatAtLeftSet() + { + if (is_array($this->columnsToRepeatAtLeft)) { + if ($this->columnsToRepeatAtLeft[0] != '' && $this->columnsToRepeatAtLeft[1] != '') { + return true; + } + } + + return false; + } + + /** + * Get Columns to repeat at left + * + * @return array Containing start column and end column, empty array if option unset + */ + public function getColumnsToRepeatAtLeft() + { + return $this->columnsToRepeatAtLeft; + } + + /** + * Set Columns to repeat at left + * + * @param array $pValue Containing start column and end column, empty array if option unset + * @return PHPExcel_Worksheet_PageSetup + */ + public function setColumnsToRepeatAtLeft($pValue = null) + { + if (is_array($pValue)) { + $this->columnsToRepeatAtLeft = $pValue; + } + return $this; + } + + /** + * Set Columns to repeat at left by start and end + * + * @param string $pStart + * @param string $pEnd + * @return PHPExcel_Worksheet_PageSetup + */ + public function setColumnsToRepeatAtLeftByStartAndEnd($pStart = 'A', $pEnd = 'A') + { + $this->columnsToRepeatAtLeft = array($pStart, $pEnd); + return $this; + } + + /** + * Is Rows to repeat at top set? + * + * @return boolean + */ + public function isRowsToRepeatAtTopSet() + { + if (is_array($this->rowsToRepeatAtTop)) { + if ($this->rowsToRepeatAtTop[0] != 0 && $this->rowsToRepeatAtTop[1] != 0) { + return true; + } + } + + return false; + } + + /** + * Get Rows to repeat at top + * + * @return array Containing start column and end column, empty array if option unset + */ + public function getRowsToRepeatAtTop() + { + return $this->rowsToRepeatAtTop; + } + + /** + * Set Rows to repeat at top + * + * @param array $pValue Containing start column and end column, empty array if option unset + * @return PHPExcel_Worksheet_PageSetup + */ + public function setRowsToRepeatAtTop($pValue = null) + { + if (is_array($pValue)) { + $this->rowsToRepeatAtTop = $pValue; + } + return $this; + } + + /** + * Set Rows to repeat at top by start and end + * + * @param int $pStart + * @param int $pEnd + * @return PHPExcel_Worksheet_PageSetup + */ + public function setRowsToRepeatAtTopByStartAndEnd($pStart = 1, $pEnd = 1) + { + $this->rowsToRepeatAtTop = array($pStart, $pEnd); + return $this; + } + + /** + * Get center page horizontally + * + * @return bool + */ + public function getHorizontalCentered() + { + return $this->horizontalCentered; + } + + /** + * Set center page horizontally + * + * @param bool $value + * @return PHPExcel_Worksheet_PageSetup + */ + public function setHorizontalCentered($value = false) + { + $this->horizontalCentered = $value; + return $this; + } + + /** + * Get center page vertically + * + * @return bool + */ + public function getVerticalCentered() + { + return $this->verticalCentered; + } + + /** + * Set center page vertically + * + * @param bool $value + * @return PHPExcel_Worksheet_PageSetup + */ + public function setVerticalCentered($value = false) + { + $this->verticalCentered = $value; + return $this; + } + + /** + * Get print area + * + * @param int $index Identifier for a specific print area range if several ranges have been set + * Default behaviour, or a index value of 0, will return all ranges as a comma-separated string + * Otherwise, the specific range identified by the value of $index will be returned + * Print areas are numbered from 1 + * @throws PHPExcel_Exception + * @return string + */ + public function getPrintArea($index = 0) + { + if ($index == 0) { + return $this->printArea; + } + $printAreas = explode(',', $this->printArea); + if (isset($printAreas[$index-1])) { + return $printAreas[$index-1]; + } + throw new PHPExcel_Exception("Requested Print Area does not exist"); + } + + /** + * Is print area set? + * + * @param int $index Identifier for a specific print area range if several ranges have been set + * Default behaviour, or an index value of 0, will identify whether any print range is set + * Otherwise, existence of the range identified by the value of $index will be returned + * Print areas are numbered from 1 + * @return boolean + */ + public function isPrintAreaSet($index = 0) + { + if ($index == 0) { + return !is_null($this->printArea); + } + $printAreas = explode(',', $this->printArea); + return isset($printAreas[$index-1]); + } + + /** + * Clear a print area + * + * @param int $index Identifier for a specific print area range if several ranges have been set + * Default behaviour, or an index value of 0, will clear all print ranges that are set + * Otherwise, the range identified by the value of $index will be removed from the series + * Print areas are numbered from 1 + * @return PHPExcel_Worksheet_PageSetup + */ + public function clearPrintArea($index = 0) + { + if ($index == 0) { + $this->printArea = null; + } else { + $printAreas = explode(',', $this->printArea); + if (isset($printAreas[$index-1])) { + unset($printAreas[$index-1]); + $this->printArea = implode(',', $printAreas); + } + } + + return $this; + } + + /** + * Set print area. e.g. 'A1:D10' or 'A1:D10,G5:M20' + * + * @param string $value + * @param int $index Identifier for a specific print area range allowing several ranges to be set + * When the method is "O"verwrite, then a positive integer index will overwrite that indexed + * entry in the print areas list; a negative index value will identify which entry to + * overwrite working bacward through the print area to the list, with the last entry as -1. + * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges. + * When the method is "I"nsert, then a positive index will insert after that indexed entry in + * the print areas list, while a negative index will insert before the indexed entry. + * Specifying an index value of 0, will always append the new print range at the end of the + * list. + * Print areas are numbered from 1 + * @param string $method Determines the method used when setting multiple print areas + * Default behaviour, or the "O" method, overwrites existing print area + * The "I" method, inserts the new print area before any specified index, or at the end of the list + * @return PHPExcel_Worksheet_PageSetup + * @throws PHPExcel_Exception + */ + public function setPrintArea($value, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) + { + if (strpos($value, '!') !== false) { + throw new PHPExcel_Exception('Cell coordinate must not specify a worksheet.'); + } elseif (strpos($value, ':') === false) { + throw new PHPExcel_Exception('Cell coordinate must be a range of cells.'); + } elseif (strpos($value, '$') !== false) { + throw new PHPExcel_Exception('Cell coordinate must not be absolute.'); + } + $value = strtoupper($value); + + if ($method == self::SETPRINTRANGE_OVERWRITE) { + if ($index == 0) { + $this->printArea = $value; + } else { + $printAreas = explode(',', $this->printArea); + if ($index < 0) { + $index = count($printAreas) - abs($index) + 1; + } + if (($index <= 0) || ($index > count($printAreas))) { + throw new PHPExcel_Exception('Invalid index for setting print range.'); + } + $printAreas[$index-1] = $value; + $this->printArea = implode(',', $printAreas); + } + } elseif ($method == self::SETPRINTRANGE_INSERT) { + if ($index == 0) { + $this->printArea .= ($this->printArea == '') ? $value : ','.$value; + } else { + $printAreas = explode(',', $this->printArea); + if ($index < 0) { + $index = abs($index) - 1; + } + if ($index > count($printAreas)) { + throw new PHPExcel_Exception('Invalid index for setting print range.'); + } + $printAreas = array_merge(array_slice($printAreas, 0, $index), array($value), array_slice($printAreas, $index)); + $this->printArea = implode(',', $printAreas); + } + } else { + throw new PHPExcel_Exception('Invalid method for setting print range.'); + } + + return $this; + } + + /** + * Add a new print area (e.g. 'A1:D10' or 'A1:D10,G5:M20') to the list of print areas + * + * @param string $value + * @param int $index Identifier for a specific print area range allowing several ranges to be set + * A positive index will insert after that indexed entry in the print areas list, while a + * negative index will insert before the indexed entry. + * Specifying an index value of 0, will always append the new print range at the end of the + * list. + * Print areas are numbered from 1 + * @return PHPExcel_Worksheet_PageSetup + * @throws PHPExcel_Exception + */ + public function addPrintArea($value, $index = -1) + { + return $this->setPrintArea($value, $index, self::SETPRINTRANGE_INSERT); + } + + /** + * Set print area + * + * @param int $column1 Column 1 + * @param int $row1 Row 1 + * @param int $column2 Column 2 + * @param int $row2 Row 2 + * @param int $index Identifier for a specific print area range allowing several ranges to be set + * When the method is "O"verwrite, then a positive integer index will overwrite that indexed + * entry in the print areas list; a negative index value will identify which entry to + * overwrite working bacward through the print area to the list, with the last entry as -1. + * Specifying an index value of 0, will overwrite <b>all</b> existing print ranges. + * When the method is "I"nsert, then a positive index will insert after that indexed entry in + * the print areas list, while a negative index will insert before the indexed entry. + * Specifying an index value of 0, will always append the new print range at the end of the + * list. + * Print areas are numbered from 1 + * @param string $method Determines the method used when setting multiple print areas + * Default behaviour, or the "O" method, overwrites existing print area + * The "I" method, inserts the new print area before any specified index, or at the end of the list + * @return PHPExcel_Worksheet_PageSetup + * @throws PHPExcel_Exception + */ + public function setPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = 0, $method = self::SETPRINTRANGE_OVERWRITE) + { + return $this->setPrintArea( + PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, + $index, + $method + ); + } + + /** + * Add a new print area to the list of print areas + * + * @param int $column1 Start Column for the print area + * @param int $row1 Start Row for the print area + * @param int $column2 End Column for the print area + * @param int $row2 End Row for the print area + * @param int $index Identifier for a specific print area range allowing several ranges to be set + * A positive index will insert after that indexed entry in the print areas list, while a + * negative index will insert before the indexed entry. + * Specifying an index value of 0, will always append the new print range at the end of the + * list. + * Print areas are numbered from 1 + * @return PHPExcel_Worksheet_PageSetup + * @throws PHPExcel_Exception + */ + public function addPrintAreaByColumnAndRow($column1, $row1, $column2, $row2, $index = -1) + { + return $this->setPrintArea( + PHPExcel_Cell::stringFromColumnIndex($column1) . $row1 . ':' . PHPExcel_Cell::stringFromColumnIndex($column2) . $row2, + $index, + self::SETPRINTRANGE_INSERT + ); + } + + /** + * Get first page number + * + * @return int + */ + public function getFirstPageNumber() + { + return $this->firstPageNumber; + } + + /** + * Set first page number + * + * @param int $value + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function setFirstPageNumber($value = null) + { + $this->firstPageNumber = $value; + return $this; + } + + /** + * Reset first page number + * + * @return PHPExcel_Worksheet_HeaderFooter + */ + public function resetFirstPageNumber() + { + return $this->setFirstPageNumber(null); + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Protection.php b/assets/excel/PHPExcel/Worksheet/Protection.php new file mode 100644 index 0000000..00633ee --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Protection.php @@ -0,0 +1,581 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Worksheet_Protection + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Worksheet_Protection +{ + /** + * Sheet + * + * @var boolean + */ + private $sheet = false; + + /** + * Objects + * + * @var boolean + */ + private $objects = false; + + /** + * Scenarios + * + * @var boolean + */ + private $scenarios = false; + + /** + * Format cells + * + * @var boolean + */ + private $formatCells = false; + + /** + * Format columns + * + * @var boolean + */ + private $formatColumns = false; + + /** + * Format rows + * + * @var boolean + */ + private $formatRows = false; + + /** + * Insert columns + * + * @var boolean + */ + private $insertColumns = false; + + /** + * Insert rows + * + * @var boolean + */ + private $insertRows = false; + + /** + * Insert hyperlinks + * + * @var boolean + */ + private $insertHyperlinks = false; + + /** + * Delete columns + * + * @var boolean + */ + private $deleteColumns = false; + + /** + * Delete rows + * + * @var boolean + */ + private $deleteRows = false; + + /** + * Select locked cells + * + * @var boolean + */ + private $selectLockedCells = false; + + /** + * Sort + * + * @var boolean + */ + private $sort = false; + + /** + * AutoFilter + * + * @var boolean + */ + private $autoFilter = false; + + /** + * Pivot tables + * + * @var boolean + */ + private $pivotTables = false; + + /** + * Select unlocked cells + * + * @var boolean + */ + private $selectUnlockedCells = false; + + /** + * Password + * + * @var string + */ + private $password = ''; + + /** + * Create a new PHPExcel_Worksheet_Protection + */ + public function __construct() + { + } + + /** + * Is some sort of protection enabled? + * + * @return boolean + */ + public function isProtectionEnabled() + { + return $this->sheet || + $this->objects || + $this->scenarios || + $this->formatCells || + $this->formatColumns || + $this->formatRows || + $this->insertColumns || + $this->insertRows || + $this->insertHyperlinks || + $this->deleteColumns || + $this->deleteRows || + $this->selectLockedCells || + $this->sort || + $this->autoFilter || + $this->pivotTables || + $this->selectUnlockedCells; + } + + /** + * Get Sheet + * + * @return boolean + */ + public function getSheet() + { + return $this->sheet; + } + + /** + * Set Sheet + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setSheet($pValue = false) + { + $this->sheet = $pValue; + return $this; + } + + /** + * Get Objects + * + * @return boolean + */ + public function getObjects() + { + return $this->objects; + } + + /** + * Set Objects + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setObjects($pValue = false) + { + $this->objects = $pValue; + return $this; + } + + /** + * Get Scenarios + * + * @return boolean + */ + public function getScenarios() + { + return $this->scenarios; + } + + /** + * Set Scenarios + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setScenarios($pValue = false) + { + $this->scenarios = $pValue; + return $this; + } + + /** + * Get FormatCells + * + * @return boolean + */ + public function getFormatCells() + { + return $this->formatCells; + } + + /** + * Set FormatCells + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setFormatCells($pValue = false) + { + $this->formatCells = $pValue; + return $this; + } + + /** + * Get FormatColumns + * + * @return boolean + */ + public function getFormatColumns() + { + return $this->formatColumns; + } + + /** + * Set FormatColumns + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setFormatColumns($pValue = false) + { + $this->formatColumns = $pValue; + return $this; + } + + /** + * Get FormatRows + * + * @return boolean + */ + public function getFormatRows() + { + return $this->formatRows; + } + + /** + * Set FormatRows + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setFormatRows($pValue = false) + { + $this->formatRows = $pValue; + return $this; + } + + /** + * Get InsertColumns + * + * @return boolean + */ + public function getInsertColumns() + { + return $this->insertColumns; + } + + /** + * Set InsertColumns + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setInsertColumns($pValue = false) + { + $this->insertColumns = $pValue; + return $this; + } + + /** + * Get InsertRows + * + * @return boolean + */ + public function getInsertRows() + { + return $this->insertRows; + } + + /** + * Set InsertRows + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setInsertRows($pValue = false) + { + $this->insertRows = $pValue; + return $this; + } + + /** + * Get InsertHyperlinks + * + * @return boolean + */ + public function getInsertHyperlinks() + { + return $this->insertHyperlinks; + } + + /** + * Set InsertHyperlinks + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setInsertHyperlinks($pValue = false) + { + $this->insertHyperlinks = $pValue; + return $this; + } + + /** + * Get DeleteColumns + * + * @return boolean + */ + public function getDeleteColumns() + { + return $this->deleteColumns; + } + + /** + * Set DeleteColumns + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setDeleteColumns($pValue = false) + { + $this->deleteColumns = $pValue; + return $this; + } + + /** + * Get DeleteRows + * + * @return boolean + */ + public function getDeleteRows() + { + return $this->deleteRows; + } + + /** + * Set DeleteRows + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setDeleteRows($pValue = false) + { + $this->deleteRows = $pValue; + return $this; + } + + /** + * Get SelectLockedCells + * + * @return boolean + */ + public function getSelectLockedCells() + { + return $this->selectLockedCells; + } + + /** + * Set SelectLockedCells + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setSelectLockedCells($pValue = false) + { + $this->selectLockedCells = $pValue; + return $this; + } + + /** + * Get Sort + * + * @return boolean + */ + public function getSort() + { + return $this->sort; + } + + /** + * Set Sort + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setSort($pValue = false) + { + $this->sort = $pValue; + return $this; + } + + /** + * Get AutoFilter + * + * @return boolean + */ + public function getAutoFilter() + { + return $this->autoFilter; + } + + /** + * Set AutoFilter + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setAutoFilter($pValue = false) + { + $this->autoFilter = $pValue; + return $this; + } + + /** + * Get PivotTables + * + * @return boolean + */ + public function getPivotTables() + { + return $this->pivotTables; + } + + /** + * Set PivotTables + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setPivotTables($pValue = false) + { + $this->pivotTables = $pValue; + return $this; + } + + /** + * Get SelectUnlockedCells + * + * @return boolean + */ + public function getSelectUnlockedCells() + { + return $this->selectUnlockedCells; + } + + /** + * Set SelectUnlockedCells + * + * @param boolean $pValue + * @return PHPExcel_Worksheet_Protection + */ + public function setSelectUnlockedCells($pValue = false) + { + $this->selectUnlockedCells = $pValue; + return $this; + } + + /** + * Get Password (hashed) + * + * @return string + */ + public function getPassword() + { + return $this->password; + } + + /** + * Set Password + * + * @param string $pValue + * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true + * @return PHPExcel_Worksheet_Protection + */ + public function setPassword($pValue = '', $pAlreadyHashed = false) + { + if (!$pAlreadyHashed) { + $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue); + } + $this->password = $pValue; + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/Row.php b/assets/excel/PHPExcel/Worksheet/Row.php new file mode 100644 index 0000000..4f6034f --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/Row.php @@ -0,0 +1,86 @@ +<?php + +/** + * PHPExcel_Worksheet_Row + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_Row +{ + /** + * PHPExcel_Worksheet + * + * @var PHPExcel_Worksheet + */ + private $parent; + + /** + * Row index + * + * @var int + */ + private $rowIndex = 0; + + /** + * Create a new row + * + * @param PHPExcel_Worksheet $parent + * @param int $rowIndex + */ + public function __construct(PHPExcel_Worksheet $parent = null, $rowIndex = 1) + { + // Set parent and row index + $this->parent = $parent; + $this->rowIndex = $rowIndex; + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->parent); + } + + /** + * Get row index + * + * @return int + */ + public function getRowIndex() + { + return $this->rowIndex; + } + + /** + * Get cell iterator + * + * @param string $startColumn The column address at which to start iterating + * @param string $endColumn Optionally, the column address at which to stop iterating + * @return PHPExcel_Worksheet_CellIterator + */ + public function getCellIterator($startColumn = 'A', $endColumn = null) + { + return new PHPExcel_Worksheet_RowCellIterator($this->parent, $this->rowIndex, $startColumn, $endColumn); + } +} diff --git a/assets/excel/PHPExcel/Worksheet/RowCellIterator.php b/assets/excel/PHPExcel/Worksheet/RowCellIterator.php new file mode 100644 index 0000000..90eb9c9 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/RowCellIterator.php @@ -0,0 +1,225 @@ +<?php + +/** + * PHPExcel_Worksheet_RowCellIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_RowCellIterator extends PHPExcel_Worksheet_CellIterator implements Iterator +{ + /** + * Row index + * + * @var int + */ + protected $rowIndex; + + /** + * Start position + * + * @var int + */ + protected $startColumn = 0; + + /** + * End position + * + * @var int + */ + protected $endColumn = 0; + + /** + * Create a new column iterator + * + * @param PHPExcel_Worksheet $subject The worksheet to iterate over + * @param integer $rowIndex The row that we want to iterate + * @param string $startColumn The column address at which to start iterating + * @param string $endColumn Optionally, the column address at which to stop iterating + */ + public function __construct(PHPExcel_Worksheet $subject = null, $rowIndex = 1, $startColumn = 'A', $endColumn = null) + { + // Set subject and row index + $this->subject = $subject; + $this->rowIndex = $rowIndex; + $this->resetEnd($endColumn); + $this->resetStart($startColumn); + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * (Re)Set the start column and the current column pointer + * + * @param integer $startColumn The column address at which to start iterating + * @return PHPExcel_Worksheet_RowCellIterator + * @throws PHPExcel_Exception + */ + public function resetStart($startColumn = 'A') + { + $startColumnIndex = PHPExcel_Cell::columnIndexFromString($startColumn) - 1; + $this->startColumn = $startColumnIndex; + $this->adjustForExistingOnlyRange(); + $this->seek(PHPExcel_Cell::stringFromColumnIndex($this->startColumn)); + + return $this; + } + + /** + * (Re)Set the end column + * + * @param string $endColumn The column address at which to stop iterating + * @return PHPExcel_Worksheet_RowCellIterator + * @throws PHPExcel_Exception + */ + public function resetEnd($endColumn = null) + { + $endColumn = ($endColumn) ? $endColumn : $this->subject->getHighestColumn(); + $this->endColumn = PHPExcel_Cell::columnIndexFromString($endColumn) - 1; + $this->adjustForExistingOnlyRange(); + + return $this; + } + + /** + * Set the column pointer to the selected column + * + * @param string $column The column address to set the current pointer at + * @return PHPExcel_Worksheet_RowCellIterator + * @throws PHPExcel_Exception + */ + public function seek($column = 'A') + { + $column = PHPExcel_Cell::columnIndexFromString($column) - 1; + if (($column < $this->startColumn) || ($column > $this->endColumn)) { + throw new PHPExcel_Exception("Column $column is out of range ({$this->startColumn} - {$this->endColumn})"); + } elseif ($this->onlyExistingCells && !($this->subject->cellExistsByColumnAndRow($column, $this->rowIndex))) { + throw new PHPExcel_Exception('In "IterateOnlyExistingCells" mode and Cell does not exist'); + } + $this->position = $column; + + return $this; + } + + /** + * Rewind the iterator to the starting column + */ + public function rewind() + { + $this->position = $this->startColumn; + } + + /** + * Return the current cell in this worksheet row + * + * @return PHPExcel_Cell + */ + public function current() + { + return $this->subject->getCellByColumnAndRow($this->position, $this->rowIndex); + } + + /** + * Return the current iterator key + * + * @return string + */ + public function key() + { + return PHPExcel_Cell::stringFromColumnIndex($this->position); + } + + /** + * Set the iterator to its next value + */ + public function next() + { + do { + ++$this->position; + } while (($this->onlyExistingCells) && + (!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) && + ($this->position <= $this->endColumn)); + } + + /** + * Set the iterator to its previous value + * + * @throws PHPExcel_Exception + */ + public function prev() + { + if ($this->position <= $this->startColumn) { + throw new PHPExcel_Exception( + "Column is already at the beginning of range (" . + PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . " - " . + PHPExcel_Cell::stringFromColumnIndex($this->endColumn) . ")" + ); + } + + do { + --$this->position; + } while (($this->onlyExistingCells) && + (!$this->subject->cellExistsByColumnAndRow($this->position, $this->rowIndex)) && + ($this->position >= $this->startColumn)); + } + + /** + * Indicate if more columns exist in the worksheet range of columns that we're iterating + * + * @return boolean + */ + public function valid() + { + return $this->position <= $this->endColumn; + } + + /** + * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary + * + * @throws PHPExcel_Exception + */ + protected function adjustForExistingOnlyRange() + { + if ($this->onlyExistingCells) { + while ((!$this->subject->cellExistsByColumnAndRow($this->startColumn, $this->rowIndex)) && + ($this->startColumn <= $this->endColumn)) { + ++$this->startColumn; + } + if ($this->startColumn > $this->endColumn) { + throw new PHPExcel_Exception('No cells exist within the specified range'); + } + while ((!$this->subject->cellExistsByColumnAndRow($this->endColumn, $this->rowIndex)) && + ($this->endColumn >= $this->startColumn)) { + --$this->endColumn; + } + if ($this->endColumn < $this->startColumn) { + throw new PHPExcel_Exception('No cells exist within the specified range'); + } + } + } +} diff --git a/assets/excel/PHPExcel/Worksheet/RowDimension.php b/assets/excel/PHPExcel/Worksheet/RowDimension.php new file mode 100644 index 0000000..c147486 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/RowDimension.php @@ -0,0 +1,132 @@ +<?php + +/** + * PHPExcel_Worksheet_RowDimension + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_RowDimension extends PHPExcel_Worksheet_Dimension +{ + /** + * Row index + * + * @var int + */ + private $rowIndex; + + /** + * Row height (in pt) + * + * When this is set to a negative value, the row height should be ignored by IWriter + * + * @var double + */ + private $height = -1; + + /** + * ZeroHeight for Row? + * + * @var bool + */ + private $zeroHeight = false; + + /** + * Create a new PHPExcel_Worksheet_RowDimension + * + * @param int $pIndex Numeric row index + */ + public function __construct($pIndex = 0) + { + // Initialise values + $this->rowIndex = $pIndex; + + // set dimension as unformatted by default + parent::__construct(null); + } + + /** + * Get Row Index + * + * @return int + */ + public function getRowIndex() + { + return $this->rowIndex; + } + + /** + * Set Row Index + * + * @param int $pValue + * @return PHPExcel_Worksheet_RowDimension + */ + public function setRowIndex($pValue) + { + $this->rowIndex = $pValue; + return $this; + } + + /** + * Get Row Height + * + * @return double + */ + public function getRowHeight() + { + return $this->height; + } + + /** + * Set Row Height + * + * @param double $pValue + * @return PHPExcel_Worksheet_RowDimension + */ + public function setRowHeight($pValue = -1) + { + $this->height = $pValue; + return $this; + } + + /** + * Get ZeroHeight + * + * @return bool + */ + public function getZeroHeight() + { + return $this->zeroHeight; + } + + /** + * Set ZeroHeight + * + * @param bool $pValue + * @return PHPExcel_Worksheet_RowDimension + */ + public function setZeroHeight($pValue = false) + { + $this->zeroHeight = $pValue; + return $this; + } +} diff --git a/assets/excel/PHPExcel/Worksheet/RowIterator.php b/assets/excel/PHPExcel/Worksheet/RowIterator.php new file mode 100644 index 0000000..9ddb3e0 --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/RowIterator.php @@ -0,0 +1,192 @@ +<?php + +/** + * PHPExcel_Worksheet_RowIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_RowIterator implements Iterator +{ + /** + * PHPExcel_Worksheet to iterate + * + * @var PHPExcel_Worksheet + */ + private $subject; + + /** + * Current iterator position + * + * @var int + */ + private $position = 1; + + /** + * Start position + * + * @var int + */ + private $startRow = 1; + + + /** + * End position + * + * @var int + */ + private $endRow = 1; + + + /** + * Create a new row iterator + * + * @param PHPExcel_Worksheet $subject The worksheet to iterate over + * @param integer $startRow The row number at which to start iterating + * @param integer $endRow Optionally, the row number at which to stop iterating + */ + public function __construct(PHPExcel_Worksheet $subject, $startRow = 1, $endRow = null) + { + // Set subject + $this->subject = $subject; + $this->resetEnd($endRow); + $this->resetStart($startRow); + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * (Re)Set the start row and the current row pointer + * + * @param integer $startRow The row number at which to start iterating + * @return PHPExcel_Worksheet_RowIterator + * @throws PHPExcel_Exception + */ + public function resetStart($startRow = 1) + { + if ($startRow > $this->subject->getHighestRow()) { + throw new PHPExcel_Exception("Start row ({$startRow}) is beyond highest row ({$this->subject->getHighestRow()})"); + } + + $this->startRow = $startRow; + if ($this->endRow < $this->startRow) { + $this->endRow = $this->startRow; + } + $this->seek($startRow); + + return $this; + } + + /** + * (Re)Set the end row + * + * @param integer $endRow The row number at which to stop iterating + * @return PHPExcel_Worksheet_RowIterator + */ + public function resetEnd($endRow = null) + { + $this->endRow = ($endRow) ? $endRow : $this->subject->getHighestRow(); + + return $this; + } + + /** + * Set the row pointer to the selected row + * + * @param integer $row The row number to set the current pointer at + * @return PHPExcel_Worksheet_RowIterator + * @throws PHPExcel_Exception + */ + public function seek($row = 1) + { + if (($row < $this->startRow) || ($row > $this->endRow)) { + throw new PHPExcel_Exception("Row $row is out of range ({$this->startRow} - {$this->endRow})"); + } + $this->position = $row; + + return $this; + } + + /** + * Rewind the iterator to the starting row + */ + public function rewind() + { + $this->position = $this->startRow; + } + + /** + * Return the current row in this worksheet + * + * @return PHPExcel_Worksheet_Row + */ + public function current() + { + return new PHPExcel_Worksheet_Row($this->subject, $this->position); + } + + /** + * Return the current iterator key + * + * @return int + */ + public function key() + { + return $this->position; + } + + /** + * Set the iterator to its next value + */ + public function next() + { + ++$this->position; + } + + /** + * Set the iterator to its previous value + */ + public function prev() + { + if ($this->position <= $this->startRow) { + throw new PHPExcel_Exception("Row is already at the beginning of range ({$this->startRow} - {$this->endRow})"); + } + + --$this->position; + } + + /** + * Indicate if more rows exist in the worksheet range of rows that we're iterating + * + * @return boolean + */ + public function valid() + { + return $this->position <= $this->endRow; + } +} diff --git a/assets/excel/PHPExcel/Worksheet/SheetView.php b/assets/excel/PHPExcel/Worksheet/SheetView.php new file mode 100644 index 0000000..5aaef3b --- /dev/null +++ b/assets/excel/PHPExcel/Worksheet/SheetView.php @@ -0,0 +1,187 @@ +<?php + +/** + * PHPExcel_Worksheet_SheetView + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Worksheet + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Worksheet_SheetView +{ + + /* Sheet View types */ + const SHEETVIEW_NORMAL = 'normal'; + const SHEETVIEW_PAGE_LAYOUT = 'pageLayout'; + const SHEETVIEW_PAGE_BREAK_PREVIEW = 'pageBreakPreview'; + + private static $sheetViewTypes = array( + self::SHEETVIEW_NORMAL, + self::SHEETVIEW_PAGE_LAYOUT, + self::SHEETVIEW_PAGE_BREAK_PREVIEW, + ); + + /** + * ZoomScale + * + * Valid values range from 10 to 400. + * + * @var int + */ + private $zoomScale = 100; + + /** + * ZoomScaleNormal + * + * Valid values range from 10 to 400. + * + * @var int + */ + private $zoomScaleNormal = 100; + + /** + * View + * + * Valid values range from 10 to 400. + * + * @var string + */ + private $sheetviewType = self::SHEETVIEW_NORMAL; + + /** + * Create a new PHPExcel_Worksheet_SheetView + */ + public function __construct() + { + } + + /** + * Get ZoomScale + * + * @return int + */ + public function getZoomScale() + { + return $this->zoomScale; + } + + /** + * Set ZoomScale + * + * Valid values range from 10 to 400. + * + * @param int $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_SheetView + */ + public function setZoomScale($pValue = 100) + { + // Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface, + // but it is apparently still able to handle any scale >= 1 + if (($pValue >= 1) || is_null($pValue)) { + $this->zoomScale = $pValue; + } else { + throw new PHPExcel_Exception("Scale must be greater than or equal to 1."); + } + return $this; + } + + /** + * Get ZoomScaleNormal + * + * @return int + */ + public function getZoomScaleNormal() + { + return $this->zoomScaleNormal; + } + + /** + * Set ZoomScale + * + * Valid values range from 10 to 400. + * + * @param int $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_SheetView + */ + public function setZoomScaleNormal($pValue = 100) + { + if (($pValue >= 1) || is_null($pValue)) { + $this->zoomScaleNormal = $pValue; + } else { + throw new PHPExcel_Exception("Scale must be greater than or equal to 1."); + } + return $this; + } + + /** + * Get View + * + * @return string + */ + public function getView() + { + return $this->sheetviewType; + } + + /** + * Set View + * + * Valid values are + * 'normal' self::SHEETVIEW_NORMAL + * 'pageLayout' self::SHEETVIEW_PAGE_LAYOUT + * 'pageBreakPreview' self::SHEETVIEW_PAGE_BREAK_PREVIEW + * + * @param string $pValue + * @throws PHPExcel_Exception + * @return PHPExcel_Worksheet_SheetView + */ + public function setView($pValue = null) + { + // MS Excel 2007 allows setting the view to 'normal', 'pageLayout' or 'pageBreakPreview' via the user interface + if ($pValue === null) { + $pValue = self::SHEETVIEW_NORMAL; + } + if (in_array($pValue, self::$sheetViewTypes)) { + $this->sheetviewType = $pValue; + } else { + throw new PHPExcel_Exception("Invalid sheetview layout type."); + } + + return $this; + } + + /** + * Implement PHP __clone to create a deep clone, not just a shallow copy. + */ + public function __clone() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if (is_object($value)) { + $this->$key = clone $value; + } else { + $this->$key = $value; + } + } + } +} diff --git a/assets/excel/PHPExcel/WorksheetIterator.php b/assets/excel/PHPExcel/WorksheetIterator.php new file mode 100644 index 0000000..cb1b281 --- /dev/null +++ b/assets/excel/PHPExcel/WorksheetIterator.php @@ -0,0 +1,108 @@ +<?php + +/** + * PHPExcel_WorksheetIterator + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_WorksheetIterator implements Iterator +{ + /** + * Spreadsheet to iterate + * + * @var PHPExcel + */ + private $subject; + + /** + * Current iterator position + * + * @var int + */ + private $position = 0; + + /** + * Create a new worksheet iterator + * + * @param PHPExcel $subject + */ + public function __construct(PHPExcel $subject = null) + { + // Set subject + $this->subject = $subject; + } + + /** + * Destructor + */ + public function __destruct() + { + unset($this->subject); + } + + /** + * Rewind iterator + */ + public function rewind() + { + $this->position = 0; + } + + /** + * Current PHPExcel_Worksheet + * + * @return PHPExcel_Worksheet + */ + public function current() + { + return $this->subject->getSheet($this->position); + } + + /** + * Current key + * + * @return int + */ + public function key() + { + return $this->position; + } + + /** + * Next value + */ + public function next() + { + ++$this->position; + } + + /** + * More PHPExcel_Worksheet instances available? + * + * @return boolean + */ + public function valid() + { + return $this->position < $this->subject->getSheetCount(); + } +} diff --git a/assets/excel/PHPExcel/Writer/Abstract.php b/assets/excel/PHPExcel/Writer/Abstract.php new file mode 100644 index 0000000..2a797a9 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Abstract.php @@ -0,0 +1,157 @@ +<?php + +/** + * PHPExcel_Writer_Abstract + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * Write charts that are defined in the workbook? + * Identifies whether the Writer should write definitions for any charts that exist in the PHPExcel object; + * + * @var boolean + */ + protected $includeCharts = false; + + /** + * Pre-calculate formulas + * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are + * immediately available to MS Excel or other office spreadsheet viewer when opening the file + * + * @var boolean + */ + protected $preCalculateFormulas = true; + + /** + * Use disk caching where possible? + * + * @var boolean + */ + protected $_useDiskCaching = false; + + /** + * Disk caching directory + * + * @var string + */ + protected $_diskCachingDirectory = './'; + + /** + * Write charts in workbook? + * If this is true, then the Writer will write definitions for any charts that exist in the PHPExcel object. + * If false (the default) it will ignore any charts defined in the PHPExcel object. + * + * @return boolean + */ + public function getIncludeCharts() + { + return $this->includeCharts; + } + + /** + * Set write charts in workbook + * Set to true, to advise the Writer to include any charts that exist in the PHPExcel object. + * Set to false (the default) to ignore charts. + * + * @param boolean $pValue + * @return PHPExcel_Writer_IWriter + */ + public function setIncludeCharts($pValue = false) + { + $this->includeCharts = (boolean) $pValue; + return $this; + } + + /** + * Get Pre-Calculate Formulas flag + * If this is true (the default), then the writer will recalculate all formulae in a workbook when saving, + * so that the pre-calculated values are immediately available to MS Excel or other office spreadsheet + * viewer when opening the file + * If false, then formulae are not calculated on save. This is faster for saving in PHPExcel, but slower + * when opening the resulting file in MS Excel, because Excel has to recalculate the formulae itself + * + * @return boolean + */ + public function getPreCalculateFormulas() + { + return $this->preCalculateFormulas; + } + + /** + * Set Pre-Calculate Formulas + * Set to true (the default) to advise the Writer to calculate all formulae on save + * Set to false to prevent precalculation of formulae on save. + * + * @param boolean $pValue Pre-Calculate Formulas? + * @return PHPExcel_Writer_IWriter + */ + public function setPreCalculateFormulas($pValue = true) + { + $this->preCalculateFormulas = (boolean) $pValue; + return $this; + } + + /** + * Get use disk caching where possible? + * + * @return boolean + */ + public function getUseDiskCaching() + { + return $this->_useDiskCaching; + } + + /** + * Set use disk caching where possible? + * + * @param boolean $pValue + * @param string $pDirectory Disk caching directory + * @throws PHPExcel_Writer_Exception when directory does not exist + * @return PHPExcel_Writer_Excel2007 + */ + public function setUseDiskCaching($pValue = false, $pDirectory = null) + { + $this->_useDiskCaching = $pValue; + + if ($pDirectory !== null) { + if (is_dir($pDirectory)) { + $this->_diskCachingDirectory = $pDirectory; + } else { + throw new PHPExcel_Writer_Exception("Directory does not exist: $pDirectory"); + } + } + return $this; + } + + /** + * Get disk caching directory + * + * @return string + */ + public function getDiskCachingDirectory() + { + return $this->_diskCachingDirectory; + } +} diff --git a/assets/excel/PHPExcel/Writer/CSV.php b/assets/excel/PHPExcel/Writer/CSV.php new file mode 100644 index 0000000..31ca874 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/CSV.php @@ -0,0 +1,317 @@ +<?php + +/** + * PHPExcel_Writer_CSV + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_CSV + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * PHPExcel object + * + * @var PHPExcel + */ + private $phpExcel; + + /** + * Delimiter + * + * @var string + */ + private $delimiter = ','; + + /** + * Enclosure + * + * @var string + */ + private $enclosure = '"'; + + /** + * Line ending + * + * @var string + */ + private $lineEnding = PHP_EOL; + + /** + * Sheet index to write + * + * @var int + */ + private $sheetIndex = 0; + + /** + * Whether to write a BOM (for UTF8). + * + * @var boolean + */ + private $useBOM = false; + + /** + * Whether to write a fully Excel compatible CSV file. + * + * @var boolean + */ + private $excelCompatibility = false; + + /** + * Create a new PHPExcel_Writer_CSV + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + $this->phpExcel = $phpExcel; + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + // Fetch sheet + $sheet = $this->phpExcel->getSheet($this->sheetIndex); + + $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); + $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); + PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); + + // Open file + $fileHandle = fopen($pFilename, 'wb+'); + if ($fileHandle === false) { + throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); + } + + if ($this->excelCompatibility) { + fwrite($fileHandle, "\xEF\xBB\xBF"); // Enforce UTF-8 BOM Header + $this->setEnclosure('"'); // Set enclosure to " + $this->setDelimiter(";"); // Set delimiter to a semi-colon + $this->setLineEnding("\r\n"); + fwrite($fileHandle, 'sep=' . $this->getDelimiter() . $this->lineEnding); + } elseif ($this->useBOM) { + // Write the UTF-8 BOM code if required + fwrite($fileHandle, "\xEF\xBB\xBF"); + } + + // Identify the range that we need to extract from the worksheet + $maxCol = $sheet->getHighestDataColumn(); + $maxRow = $sheet->getHighestDataRow(); + + // Write rows to file + for ($row = 1; $row <= $maxRow; ++$row) { + // Convert the row to an array... + $cellsArray = $sheet->rangeToArray('A'.$row.':'.$maxCol.$row, '', $this->preCalculateFormulas); + // ... and write to the file + $this->writeLine($fileHandle, $cellsArray[0]); + } + + // Close file + fclose($fileHandle); + + PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); + } + + /** + * Get delimiter + * + * @return string + */ + public function getDelimiter() + { + return $this->delimiter; + } + + /** + * Set delimiter + * + * @param string $pValue Delimiter, defaults to , + * @return PHPExcel_Writer_CSV + */ + public function setDelimiter($pValue = ',') + { + $this->delimiter = $pValue; + return $this; + } + + /** + * Get enclosure + * + * @return string + */ + public function getEnclosure() + { + return $this->enclosure; + } + + /** + * Set enclosure + * + * @param string $pValue Enclosure, defaults to " + * @return PHPExcel_Writer_CSV + */ + public function setEnclosure($pValue = '"') + { + if ($pValue == '') { + $pValue = null; + } + $this->enclosure = $pValue; + return $this; + } + + /** + * Get line ending + * + * @return string + */ + public function getLineEnding() + { + return $this->lineEnding; + } + + /** + * Set line ending + * + * @param string $pValue Line ending, defaults to OS line ending (PHP_EOL) + * @return PHPExcel_Writer_CSV + */ + public function setLineEnding($pValue = PHP_EOL) + { + $this->lineEnding = $pValue; + return $this; + } + + /** + * Get whether BOM should be used + * + * @return boolean + */ + public function getUseBOM() + { + return $this->useBOM; + } + + /** + * Set whether BOM should be used + * + * @param boolean $pValue Use UTF-8 byte-order mark? Defaults to false + * @return PHPExcel_Writer_CSV + */ + public function setUseBOM($pValue = false) + { + $this->useBOM = $pValue; + return $this; + } + + /** + * Get whether the file should be saved with full Excel Compatibility + * + * @return boolean + */ + public function getExcelCompatibility() + { + return $this->excelCompatibility; + } + + /** + * Set whether the file should be saved with full Excel Compatibility + * + * @param boolean $pValue Set the file to be written as a fully Excel compatible csv file + * Note that this overrides other settings such as useBOM, enclosure and delimiter + * @return PHPExcel_Writer_CSV + */ + public function setExcelCompatibility($pValue = false) + { + $this->excelCompatibility = $pValue; + return $this; + } + + /** + * Get sheet index + * + * @return int + */ + public function getSheetIndex() + { + return $this->sheetIndex; + } + + /** + * Set sheet index + * + * @param int $pValue Sheet index + * @return PHPExcel_Writer_CSV + */ + public function setSheetIndex($pValue = 0) + { + $this->sheetIndex = $pValue; + return $this; + } + + /** + * Write line to CSV file + * + * @param mixed $pFileHandle PHP filehandle + * @param array $pValues Array containing values in a row + * @throws PHPExcel_Writer_Exception + */ + private function writeLine($pFileHandle = null, $pValues = null) + { + if (is_array($pValues)) { + // No leading delimiter + $writeDelimiter = false; + + // Build the line + $line = ''; + + foreach ($pValues as $element) { + // Escape enclosures + $element = str_replace($this->enclosure, $this->enclosure . $this->enclosure, $element); + + // Add delimiter + if ($writeDelimiter) { + $line .= $this->delimiter; + } else { + $writeDelimiter = true; + } + + // Add enclosed string + $line .= $this->enclosure . $element . $this->enclosure; + } + + // Add line ending + $line .= $this->lineEnding; + + // Write to file + fwrite($pFileHandle, $line); + } else { + throw new PHPExcel_Writer_Exception("Invalid data row passed to CSV writer."); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007.php b/assets/excel/PHPExcel/Writer/Excel2007.php new file mode 100644 index 0000000..11d354b --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007.php @@ -0,0 +1,533 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007 + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007 extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * Pre-calculate formulas + * Forces PHPExcel to recalculate all formulae in a workbook when saving, so that the pre-calculated values are + * immediately available to MS Excel or other office spreadsheet viewer when opening the file + * + * Overrides the default TRUE for this specific writer for performance reasons + * + * @var boolean + */ + protected $preCalculateFormulas = false; + + /** + * Office2003 compatibility + * + * @var boolean + */ + private $office2003compatibility = false; + + /** + * Private writer parts + * + * @var PHPExcel_Writer_Excel2007_WriterPart[] + */ + private $writerParts = array(); + + /** + * Private PHPExcel + * + * @var PHPExcel + */ + private $spreadSheet; + + /** + * Private string table + * + * @var string[] + */ + private $stringTable = array(); + + /** + * Private unique PHPExcel_Style_Conditional HashTable + * + * @var PHPExcel_HashTable + */ + private $stylesConditionalHashTable; + + /** + * Private unique PHPExcel_Style HashTable + * + * @var PHPExcel_HashTable + */ + private $styleHashTable; + + /** + * Private unique PHPExcel_Style_Fill HashTable + * + * @var PHPExcel_HashTable + */ + private $fillHashTable; + + /** + * Private unique PHPExcel_Style_Font HashTable + * + * @var PHPExcel_HashTable + */ + private $fontHashTable; + + /** + * Private unique PHPExcel_Style_Borders HashTable + * + * @var PHPExcel_HashTable + */ + private $bordersHashTable ; + + /** + * Private unique PHPExcel_Style_NumberFormat HashTable + * + * @var PHPExcel_HashTable + */ + private $numFmtHashTable; + + /** + * Private unique PHPExcel_Worksheet_BaseDrawing HashTable + * + * @var PHPExcel_HashTable + */ + private $drawingHashTable; + + /** + * Create a new PHPExcel_Writer_Excel2007 + * + * @param PHPExcel $pPHPExcel + */ + public function __construct(PHPExcel $pPHPExcel = null) + { + // Assign PHPExcel + $this->setPHPExcel($pPHPExcel); + + $writerPartsArray = array( 'stringtable' => 'PHPExcel_Writer_Excel2007_StringTable', + 'contenttypes' => 'PHPExcel_Writer_Excel2007_ContentTypes', + 'docprops' => 'PHPExcel_Writer_Excel2007_DocProps', + 'rels' => 'PHPExcel_Writer_Excel2007_Rels', + 'theme' => 'PHPExcel_Writer_Excel2007_Theme', + 'style' => 'PHPExcel_Writer_Excel2007_Style', + 'workbook' => 'PHPExcel_Writer_Excel2007_Workbook', + 'worksheet' => 'PHPExcel_Writer_Excel2007_Worksheet', + 'drawing' => 'PHPExcel_Writer_Excel2007_Drawing', + 'comments' => 'PHPExcel_Writer_Excel2007_Comments', + 'chart' => 'PHPExcel_Writer_Excel2007_Chart', + 'relsvba' => 'PHPExcel_Writer_Excel2007_RelsVBA', + 'relsribbonobjects' => 'PHPExcel_Writer_Excel2007_RelsRibbon' + ); + + // Initialise writer parts + // and Assign their parent IWriters + foreach ($writerPartsArray as $writer => $class) { + $this->writerParts[$writer] = new $class($this); + } + + $hashTablesArray = array( 'stylesConditionalHashTable', 'fillHashTable', 'fontHashTable', + 'bordersHashTable', 'numFmtHashTable', 'drawingHashTable', + 'styleHashTable' + ); + + // Set HashTable variables + foreach ($hashTablesArray as $tableName) { + $this->$tableName = new PHPExcel_HashTable(); + } + } + + /** + * Get writer part + * + * @param string $pPartName Writer part name + * @return PHPExcel_Writer_Excel2007_WriterPart + */ + public function getWriterPart($pPartName = '') + { + if ($pPartName != '' && isset($this->writerParts[strtolower($pPartName)])) { + return $this->writerParts[strtolower($pPartName)]; + } else { + return null; + } + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + if ($this->spreadSheet !== null) { + // garbage collect + $this->spreadSheet->garbageCollect(); + + // If $pFilename is php://output or php://stdout, make it a temporary file... + $originalFilename = $pFilename; + if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { + $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp'); + if ($pFilename == '') { + $pFilename = $originalFilename; + } + } + + $saveDebugLog = PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->getWriteDebugLog(); + PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->setWriteDebugLog(false); + $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType(); + PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); + + // Create string lookup table + $this->stringTable = array(); + for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { + $this->stringTable = $this->getWriterPart('StringTable')->createStringTable($this->spreadSheet->getSheet($i), $this->stringTable); + } + + // Create styles dictionaries + $this->styleHashTable->addFromSource($this->getWriterPart('Style')->allStyles($this->spreadSheet)); + $this->stylesConditionalHashTable->addFromSource($this->getWriterPart('Style')->allConditionalStyles($this->spreadSheet)); + $this->fillHashTable->addFromSource($this->getWriterPart('Style')->allFills($this->spreadSheet)); + $this->fontHashTable->addFromSource($this->getWriterPart('Style')->allFonts($this->spreadSheet)); + $this->bordersHashTable->addFromSource($this->getWriterPart('Style')->allBorders($this->spreadSheet)); + $this->numFmtHashTable->addFromSource($this->getWriterPart('Style')->allNumberFormats($this->spreadSheet)); + + // Create drawing dictionary + $this->drawingHashTable->addFromSource($this->getWriterPart('Drawing')->allDrawings($this->spreadSheet)); + + // Create new ZIP file and open it for writing + $zipClass = PHPExcel_Settings::getZipClass(); + $objZip = new $zipClass(); + + // Retrieve OVERWRITE and CREATE constants from the instantiated zip class + // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP + $ro = new ReflectionObject($objZip); + $zipOverWrite = $ro->getConstant('OVERWRITE'); + $zipCreate = $ro->getConstant('CREATE'); + + if (file_exists($pFilename)) { + unlink($pFilename); + } + // Try opening the ZIP file + if ($objZip->open($pFilename, $zipOverWrite) !== true) { + if ($objZip->open($pFilename, $zipCreate) !== true) { + throw new PHPExcel_Writer_Exception("Could not open " . $pFilename . " for writing."); + } + } + + // Add [Content_Types].xml to ZIP file + $objZip->addFromString('[Content_Types].xml', $this->getWriterPart('ContentTypes')->writeContentTypes($this->spreadSheet, $this->includeCharts)); + + //if hasMacros, add the vbaProject.bin file, Certificate file(if exists) + if ($this->spreadSheet->hasMacros()) { + $macrosCode=$this->spreadSheet->getMacrosCode(); + if (!is_null($macrosCode)) {// we have the code ? + $objZip->addFromString('xl/vbaProject.bin', $macrosCode);//allways in 'xl', allways named vbaProject.bin + if ($this->spreadSheet->hasMacrosCertificate()) {//signed macros ? + // Yes : add the certificate file and the related rels file + $objZip->addFromString('xl/vbaProjectSignature.bin', $this->spreadSheet->getMacrosCertificate()); + $objZip->addFromString('xl/_rels/vbaProject.bin.rels', $this->getWriterPart('RelsVBA')->writeVBARelationships($this->spreadSheet)); + } + } + } + //a custom UI in this workbook ? add it ("base" xml and additional objects (pictures) and rels) + if ($this->spreadSheet->hasRibbon()) { + $tmpRibbonTarget=$this->spreadSheet->getRibbonXMLData('target'); + $objZip->addFromString($tmpRibbonTarget, $this->spreadSheet->getRibbonXMLData('data')); + if ($this->spreadSheet->hasRibbonBinObjects()) { + $tmpRootPath=dirname($tmpRibbonTarget).'/'; + $ribbonBinObjects=$this->spreadSheet->getRibbonBinObjects('data');//the files to write + foreach ($ribbonBinObjects as $aPath => $aContent) { + $objZip->addFromString($tmpRootPath.$aPath, $aContent); + } + //the rels for files + $objZip->addFromString($tmpRootPath.'_rels/'.basename($tmpRibbonTarget).'.rels', $this->getWriterPart('RelsRibbonObjects')->writeRibbonRelationships($this->spreadSheet)); + } + } + + // Add relationships to ZIP file + $objZip->addFromString('_rels/.rels', $this->getWriterPart('Rels')->writeRelationships($this->spreadSheet)); + $objZip->addFromString('xl/_rels/workbook.xml.rels', $this->getWriterPart('Rels')->writeWorkbookRelationships($this->spreadSheet)); + + // Add document properties to ZIP file + $objZip->addFromString('docProps/app.xml', $this->getWriterPart('DocProps')->writeDocPropsApp($this->spreadSheet)); + $objZip->addFromString('docProps/core.xml', $this->getWriterPart('DocProps')->writeDocPropsCore($this->spreadSheet)); + $customPropertiesPart = $this->getWriterPart('DocProps')->writeDocPropsCustom($this->spreadSheet); + if ($customPropertiesPart !== null) { + $objZip->addFromString('docProps/custom.xml', $customPropertiesPart); + } + + // Add theme to ZIP file + $objZip->addFromString('xl/theme/theme1.xml', $this->getWriterPart('Theme')->writeTheme($this->spreadSheet)); + + // Add string table to ZIP file + $objZip->addFromString('xl/sharedStrings.xml', $this->getWriterPart('StringTable')->writeStringTable($this->stringTable)); + + // Add styles to ZIP file + $objZip->addFromString('xl/styles.xml', $this->getWriterPart('Style')->writeStyles($this->spreadSheet)); + + // Add workbook to ZIP file + $objZip->addFromString('xl/workbook.xml', $this->getWriterPart('Workbook')->writeWorkbook($this->spreadSheet, $this->preCalculateFormulas)); + + $chartCount = 0; + // Add worksheets + for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { + $objZip->addFromString('xl/worksheets/sheet' . ($i + 1) . '.xml', $this->getWriterPart('Worksheet')->writeWorksheet($this->spreadSheet->getSheet($i), $this->stringTable, $this->includeCharts)); + if ($this->includeCharts) { + $charts = $this->spreadSheet->getSheet($i)->getChartCollection(); + if (count($charts) > 0) { + foreach ($charts as $chart) { + $objZip->addFromString('xl/charts/chart' . ($chartCount + 1) . '.xml', $this->getWriterPart('Chart')->writeChart($chart, $this->preCalculateFormulas)); + $chartCount++; + } + } + } + } + + $chartRef1 = $chartRef2 = 0; + // Add worksheet relationships (drawings, ...) + for ($i = 0; $i < $this->spreadSheet->getSheetCount(); ++$i) { + // Add relationships + $objZip->addFromString('xl/worksheets/_rels/sheet' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeWorksheetRelationships($this->spreadSheet->getSheet($i), ($i + 1), $this->includeCharts)); + + $drawings = $this->spreadSheet->getSheet($i)->getDrawingCollection(); + $drawingCount = count($drawings); + if ($this->includeCharts) { + $chartCount = $this->spreadSheet->getSheet($i)->getChartCount(); + } + + // Add drawing and image relationship parts + if (($drawingCount > 0) || ($chartCount > 0)) { + // Drawing relationships + $objZip->addFromString('xl/drawings/_rels/drawing' . ($i + 1) . '.xml.rels', $this->getWriterPart('Rels')->writeDrawingRelationships($this->spreadSheet->getSheet($i), $chartRef1, $this->includeCharts)); + + // Drawings + $objZip->addFromString('xl/drawings/drawing' . ($i + 1) . '.xml', $this->getWriterPart('Drawing')->writeDrawings($this->spreadSheet->getSheet($i), $chartRef2, $this->includeCharts)); + } + + // Add comment relationship parts + if (count($this->spreadSheet->getSheet($i)->getComments()) > 0) { + // VML Comments + $objZip->addFromString('xl/drawings/vmlDrawing' . ($i + 1) . '.vml', $this->getWriterPart('Comments')->writeVMLComments($this->spreadSheet->getSheet($i))); + + // Comments + $objZip->addFromString('xl/comments' . ($i + 1) . '.xml', $this->getWriterPart('Comments')->writeComments($this->spreadSheet->getSheet($i))); + } + + // Add header/footer relationship parts + if (count($this->spreadSheet->getSheet($i)->getHeaderFooter()->getImages()) > 0) { + // VML Drawings + $objZip->addFromString('xl/drawings/vmlDrawingHF' . ($i + 1) . '.vml', $this->getWriterPart('Drawing')->writeVMLHeaderFooterImages($this->spreadSheet->getSheet($i))); + + // VML Drawing relationships + $objZip->addFromString('xl/drawings/_rels/vmlDrawingHF' . ($i + 1) . '.vml.rels', $this->getWriterPart('Rels')->writeHeaderFooterDrawingRelationships($this->spreadSheet->getSheet($i))); + + // Media + foreach ($this->spreadSheet->getSheet($i)->getHeaderFooter()->getImages() as $image) { + $objZip->addFromString('xl/media/' . $image->getIndexedFilename(), file_get_contents($image->getPath())); + } + } + } + + // Add media + for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) { + if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) { + $imageContents = null; + $imagePath = $this->getDrawingHashTable()->getByIndex($i)->getPath(); + if (strpos($imagePath, 'zip://') !== false) { + $imagePath = substr($imagePath, 6); + $imagePathSplitted = explode('#', $imagePath); + + $imageZip = new ZipArchive(); + $imageZip->open($imagePathSplitted[0]); + $imageContents = $imageZip->getFromName($imagePathSplitted[1]); + $imageZip->close(); + unset($imageZip); + } else { + $imageContents = file_get_contents($imagePath); + } + + $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); + } elseif ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) { + ob_start(); + call_user_func( + $this->getDrawingHashTable()->getByIndex($i)->getRenderingFunction(), + $this->getDrawingHashTable()->getByIndex($i)->getImageResource() + ); + $imageContents = ob_get_contents(); + ob_end_clean(); + + $objZip->addFromString('xl/media/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); + } + } + + PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType); + PHPExcel_Calculation::getInstance($this->spreadSheet)->getDebugLog()->setWriteDebugLog($saveDebugLog); + + // Close file + if ($objZip->close() === false) { + throw new PHPExcel_Writer_Exception("Could not close zip file $pFilename."); + } + + // If a temporary file was used, copy it to the correct file stream + if ($originalFilename != $pFilename) { + if (copy($pFilename, $originalFilename) === false) { + throw new PHPExcel_Writer_Exception("Could not copy temporary zip file $pFilename to $originalFilename."); + } + @unlink($pFilename); + } + } else { + throw new PHPExcel_Writer_Exception("PHPExcel object unassigned."); + } + } + + /** + * Get PHPExcel object + * + * @return PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function getPHPExcel() + { + if ($this->spreadSheet !== null) { + return $this->spreadSheet; + } else { + throw new PHPExcel_Writer_Exception("No PHPExcel object assigned."); + } + } + + /** + * Set PHPExcel object + * + * @param PHPExcel $pPHPExcel PHPExcel object + * @throws PHPExcel_Writer_Exception + * @return PHPExcel_Writer_Excel2007 + */ + public function setPHPExcel(PHPExcel $pPHPExcel = null) + { + $this->spreadSheet = $pPHPExcel; + return $this; + } + + /** + * Get string table + * + * @return string[] + */ + public function getStringTable() + { + return $this->stringTable; + } + + /** + * Get PHPExcel_Style HashTable + * + * @return PHPExcel_HashTable + */ + public function getStyleHashTable() + { + return $this->styleHashTable; + } + + /** + * Get PHPExcel_Style_Conditional HashTable + * + * @return PHPExcel_HashTable + */ + public function getStylesConditionalHashTable() + { + return $this->stylesConditionalHashTable; + } + + /** + * Get PHPExcel_Style_Fill HashTable + * + * @return PHPExcel_HashTable + */ + public function getFillHashTable() + { + return $this->fillHashTable; + } + + /** + * Get PHPExcel_Style_Font HashTable + * + * @return PHPExcel_HashTable + */ + public function getFontHashTable() + { + return $this->fontHashTable; + } + + /** + * Get PHPExcel_Style_Borders HashTable + * + * @return PHPExcel_HashTable + */ + public function getBordersHashTable() + { + return $this->bordersHashTable; + } + + /** + * Get PHPExcel_Style_NumberFormat HashTable + * + * @return PHPExcel_HashTable + */ + public function getNumFmtHashTable() + { + return $this->numFmtHashTable; + } + + /** + * Get PHPExcel_Worksheet_BaseDrawing HashTable + * + * @return PHPExcel_HashTable + */ + public function getDrawingHashTable() + { + return $this->drawingHashTable; + } + + /** + * Get Office2003 compatibility + * + * @return boolean + */ + public function getOffice2003Compatibility() + { + return $this->office2003compatibility; + } + + /** + * Set Office2003 compatibility + * + * @param boolean $pValue Office2003 compatibility? + * @return PHPExcel_Writer_Excel2007 + */ + public function setOffice2003Compatibility($pValue = false) + { + $this->office2003compatibility = $pValue; + return $this; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Chart.php b/assets/excel/PHPExcel/Writer/Excel2007/Chart.php new file mode 100644 index 0000000..c0f86bf --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Chart.php @@ -0,0 +1,1518 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Chart + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Chart extends PHPExcel_Writer_Excel2007_WriterPart +{ + protected $calculateCellValues; + + /** + * Write charts to XML format + * + * @param PHPExcel_Chart $pChart + * + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeChart(PHPExcel_Chart $pChart = null, $calculateCellValues = true) + { + $this->calculateCellValues = $calculateCellValues; + + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + // Ensure that data series values are up-to-date before we save + if ($this->calculateCellValues) { + $pChart->refresh(); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // c:chartSpace + $objWriter->startElement('c:chartSpace'); + $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); + $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); + $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + + $objWriter->startElement('c:date1904'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + $objWriter->startElement('c:lang'); + $objWriter->writeAttribute('val', "en-GB"); + $objWriter->endElement(); + $objWriter->startElement('c:roundedCorners'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $this->writeAlternateContent($objWriter); + + $objWriter->startElement('c:chart'); + + $this->writeTitle($pChart->getTitle(), $objWriter); + + $objWriter->startElement('c:autoTitleDeleted'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $this->writePlotArea($pChart->getPlotArea(), $pChart->getXAxisLabel(), $pChart->getYAxisLabel(), $objWriter, $pChart->getWorksheet(), $pChart->getChartAxisX(), $pChart->getChartAxisY(), $pChart->getMajorGridlines(), $pChart->getMinorGridlines()); + + $this->writeLegend($pChart->getLegend(), $objWriter); + + $objWriter->startElement('c:plotVisOnly'); + $objWriter->writeAttribute('val', 1); + $objWriter->endElement(); + + $objWriter->startElement('c:dispBlanksAs'); + $objWriter->writeAttribute('val', "gap"); + $objWriter->endElement(); + + $objWriter->startElement('c:showDLblsOverMax'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + + $this->writePrintSettings($objWriter); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write Chart Title + * + * @param PHPExcel_Chart_Title $title + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writeTitle(PHPExcel_Chart_Title $title = null, $objWriter) + { + if (is_null($title)) { + return; + } + + $objWriter->startElement('c:title'); + $objWriter->startElement('c:tx'); + $objWriter->startElement('c:rich'); + + $objWriter->startElement('a:bodyPr'); + $objWriter->endElement(); + + $objWriter->startElement('a:lstStyle'); + $objWriter->endElement(); + + $objWriter->startElement('a:p'); + + $caption = $title->getCaption(); + if ((is_array($caption)) && (count($caption) > 0)) { + $caption = $caption[0]; + } + $this->getParentWriter()->getWriterPart('stringtable')->writeRichTextForCharts($objWriter, $caption, 'a'); + + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + $this->writeLayout($title->getLayout(), $objWriter); + + $objWriter->startElement('c:overlay'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Chart Legend + * + * @param PHPExcel_Chart_Legend $legend + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writeLegend(PHPExcel_Chart_Legend $legend = null, $objWriter) + { + if (is_null($legend)) { + return; + } + + $objWriter->startElement('c:legend'); + + $objWriter->startElement('c:legendPos'); + $objWriter->writeAttribute('val', $legend->getPosition()); + $objWriter->endElement(); + + $this->writeLayout($legend->getLayout(), $objWriter); + + $objWriter->startElement('c:overlay'); + $objWriter->writeAttribute('val', ($legend->getOverlay()) ? '1' : '0'); + $objWriter->endElement(); + + $objWriter->startElement('c:txPr'); + $objWriter->startElement('a:bodyPr'); + $objWriter->endElement(); + + $objWriter->startElement('a:lstStyle'); + $objWriter->endElement(); + + $objWriter->startElement('a:p'); + $objWriter->startElement('a:pPr'); + $objWriter->writeAttribute('rtl', 0); + + $objWriter->startElement('a:defRPr'); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', "en-US"); + $objWriter->endElement(); + + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Chart Plot Area + * + * @param PHPExcel_Chart_PlotArea $plotArea + * @param PHPExcel_Chart_Title $xAxisLabel + * @param PHPExcel_Chart_Title $yAxisLabel + * @param PHPExcel_Chart_Axis $xAxis + * @param PHPExcel_Chart_Axis $yAxis + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writePlotArea(PHPExcel_Chart_PlotArea $plotArea, PHPExcel_Chart_Title $xAxisLabel = null, PHPExcel_Chart_Title $yAxisLabel = null, $objWriter, PHPExcel_Worksheet $pSheet, PHPExcel_Chart_Axis $xAxis, PHPExcel_Chart_Axis $yAxis, PHPExcel_Chart_GridLines $majorGridlines, PHPExcel_Chart_GridLines $minorGridlines) + { + if (is_null($plotArea)) { + return; + } + + $id1 = $id2 = 0; + $this->_seriesIndex = 0; + $objWriter->startElement('c:plotArea'); + + $layout = $plotArea->getLayout(); + + $this->writeLayout($layout, $objWriter); + + $chartTypes = self::getChartType($plotArea); + $catIsMultiLevelSeries = $valIsMultiLevelSeries = false; + $plotGroupingType = ''; + foreach ($chartTypes as $chartType) { + $objWriter->startElement('c:' . $chartType); + + $groupCount = $plotArea->getPlotGroupCount(); + for ($i = 0; $i < $groupCount; ++$i) { + $plotGroup = $plotArea->getPlotGroupByIndex($i); + $groupType = $plotGroup->getPlotType(); + if ($groupType == $chartType) { + $plotStyle = $plotGroup->getPlotStyle(); + if ($groupType === PHPExcel_Chart_DataSeries::TYPE_RADARCHART) { + $objWriter->startElement('c:radarStyle'); + $objWriter->writeAttribute('val', $plotStyle); + $objWriter->endElement(); + } elseif ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART) { + $objWriter->startElement('c:scatterStyle'); + $objWriter->writeAttribute('val', $plotStyle); + $objWriter->endElement(); + } + + $this->writePlotGroup($plotGroup, $chartType, $objWriter, $catIsMultiLevelSeries, $valIsMultiLevelSeries, $plotGroupingType, $pSheet); + } + } + + $this->writeDataLabels($objWriter, $layout); + + if ($chartType === PHPExcel_Chart_DataSeries::TYPE_LINECHART) { + // Line only, Line3D can't be smoothed + + $objWriter->startElement('c:smooth'); + $objWriter->writeAttribute('val', (integer) $plotGroup->getSmoothLine()); + $objWriter->endElement(); + } elseif (($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) ||($chartType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) { + $objWriter->startElement('c:gapWidth'); + $objWriter->writeAttribute('val', 150); + $objWriter->endElement(); + + if ($plotGroupingType == 'percentStacked' || $plotGroupingType == 'stacked') { + $objWriter->startElement('c:overlap'); + $objWriter->writeAttribute('val', 100); + $objWriter->endElement(); + } + } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { + $objWriter->startElement('c:bubbleScale'); + $objWriter->writeAttribute('val', 25); + $objWriter->endElement(); + + $objWriter->startElement('c:showNegBubbles'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } elseif ($chartType === PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) { + $objWriter->startElement('c:hiLowLines'); + $objWriter->endElement(); + + $objWriter->startElement('c:upDownBars'); + + $objWriter->startElement('c:gapWidth'); + $objWriter->writeAttribute('val', 300); + $objWriter->endElement(); + + $objWriter->startElement('c:upBars'); + $objWriter->endElement(); + + $objWriter->startElement('c:downBars'); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + // Generate 2 unique numbers to use for axId values + // $id1 = $id2 = rand(10000000,99999999); + // do { + // $id2 = rand(10000000,99999999); + // } while ($id1 == $id2); + $id1 = '75091328'; + $id2 = '75089408'; + + if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', $id1); + $objWriter->endElement(); + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', $id2); + $objWriter->endElement(); + } else { + $objWriter->startElement('c:firstSliceAng'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + if ($chartType === PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) { + $objWriter->startElement('c:holeSize'); + $objWriter->writeAttribute('val', 50); + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + } + + if (($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($chartType !== PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { + if ($chartType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { + $this->writeValueAxis($objWriter, $plotArea, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines); + } else { + $this->writeCategoryAxis($objWriter, $plotArea, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $yAxis); + } + + $this->writeValueAxis($objWriter, $plotArea, $yAxisLabel, $chartType, $id1, $id2, $valIsMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines); + } + + $objWriter->endElement(); + } + + /** + * Write Data Labels + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Chart_Layout $chartLayout Chart layout + * + * @throws PHPExcel_Writer_Exception + */ + private function writeDataLabels($objWriter, $chartLayout) + { + $objWriter->startElement('c:dLbls'); + + $objWriter->startElement('c:showLegendKey'); + $showLegendKey = (empty($chartLayout)) ? 0 : $chartLayout->getShowLegendKey(); + $objWriter->writeAttribute('val', ((empty($showLegendKey)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showVal'); + $showVal = (empty($chartLayout)) ? 0 : $chartLayout->getShowVal(); + $objWriter->writeAttribute('val', ((empty($showVal)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showCatName'); + $showCatName = (empty($chartLayout)) ? 0 : $chartLayout->getShowCatName(); + $objWriter->writeAttribute('val', ((empty($showCatName)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showSerName'); + $showSerName = (empty($chartLayout)) ? 0 : $chartLayout->getShowSerName(); + $objWriter->writeAttribute('val', ((empty($showSerName)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showPercent'); + $showPercent = (empty($chartLayout)) ? 0 : $chartLayout->getShowPercent(); + $objWriter->writeAttribute('val', ((empty($showPercent)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showBubbleSize'); + $showBubbleSize = (empty($chartLayout)) ? 0 : $chartLayout->getShowBubbleSize(); + $objWriter->writeAttribute('val', ((empty($showBubbleSize)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->startElement('c:showLeaderLines'); + $showLeaderLines = (empty($chartLayout)) ? 1 : $chartLayout->getShowLeaderLines(); + $objWriter->writeAttribute('val', ((empty($showLeaderLines)) ? 0 : 1)); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Category Axis + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Chart_PlotArea $plotArea + * @param PHPExcel_Chart_Title $xAxisLabel + * @param string $groupType Chart type + * @param string $id1 + * @param string $id2 + * @param boolean $isMultiLevelSeries + * + * @throws PHPExcel_Writer_Exception + */ + private function writeCategoryAxis($objWriter, PHPExcel_Chart_PlotArea $plotArea, $xAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, $xAxis, $yAxis) + { + $objWriter->startElement('c:catAx'); + + if ($id1 > 0) { + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', $id1); + $objWriter->endElement(); + } + + $objWriter->startElement('c:scaling'); + $objWriter->startElement('c:orientation'); + $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('orientation')); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('c:delete'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->startElement('c:axPos'); + $objWriter->writeAttribute('val', "b"); + $objWriter->endElement(); + + if (!is_null($xAxisLabel)) { + $objWriter->startElement('c:title'); + $objWriter->startElement('c:tx'); + $objWriter->startElement('c:rich'); + + $objWriter->startElement('a:bodyPr'); + $objWriter->endElement(); + + $objWriter->startElement('a:lstStyle'); + $objWriter->endElement(); + + $objWriter->startElement('a:p'); + $objWriter->startElement('a:r'); + + $caption = $xAxisLabel->getCaption(); + if (is_array($caption)) { + $caption = $caption[0]; + } + $objWriter->startElement('a:t'); + // $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($caption)); + $objWriter->endElement(); + + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + $layout = $xAxisLabel->getLayout(); + $this->writeLayout($layout, $objWriter); + + $objWriter->startElement('c:overlay'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $yAxis->getAxisNumberFormat()); + $objWriter->writeAttribute('sourceLinked', $yAxis->getAxisNumberSourceLinked()); + $objWriter->endElement(); + + $objWriter->startElement('c:majorTickMark'); + $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('major_tick_mark')); + $objWriter->endElement(); + + $objWriter->startElement('c:minorTickMark'); + $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('minor_tick_mark')); + $objWriter->endElement(); + + $objWriter->startElement('c:tickLblPos'); + $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('axis_labels')); + $objWriter->endElement(); + + if ($id2 > 0) { + $objWriter->startElement('c:crossAx'); + $objWriter->writeAttribute('val', $id2); + $objWriter->endElement(); + + $objWriter->startElement('c:crosses'); + $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('horizontal_crosses')); + $objWriter->endElement(); + } + + $objWriter->startElement('c:auto'); + $objWriter->writeAttribute('val', 1); + $objWriter->endElement(); + + $objWriter->startElement('c:lblAlgn'); + $objWriter->writeAttribute('val', "ctr"); + $objWriter->endElement(); + + $objWriter->startElement('c:lblOffset'); + $objWriter->writeAttribute('val', 100); + $objWriter->endElement(); + + if ($isMultiLevelSeries) { + $objWriter->startElement('c:noMultiLvlLbl'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } + $objWriter->endElement(); + } + + /** + * Write Value Axis + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Chart_PlotArea $plotArea + * @param PHPExcel_Chart_Title $yAxisLabel + * @param string $groupType Chart type + * @param string $id1 + * @param string $id2 + * @param boolean $isMultiLevelSeries + * + * @throws PHPExcel_Writer_Exception + */ + private function writeValueAxis($objWriter, PHPExcel_Chart_PlotArea $plotArea, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, $xAxis, $yAxis, $majorGridlines, $minorGridlines) + { + $objWriter->startElement('c:valAx'); + + if ($id2 > 0) { + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', $id2); + $objWriter->endElement(); + } + + $objWriter->startElement('c:scaling'); + $objWriter->startElement('c:orientation'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('orientation')); + + if (!is_null($xAxis->getAxisOptionsProperty('maximum'))) { + $objWriter->startElement('c:max'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('maximum')); + $objWriter->endElement(); + } + + if (!is_null($xAxis->getAxisOptionsProperty('minimum'))) { + $objWriter->startElement('c:min'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minimum')); + $objWriter->endElement(); + } + + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('c:delete'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->startElement('c:axPos'); + $objWriter->writeAttribute('val', "l"); + $objWriter->endElement(); + + $objWriter->startElement('c:majorGridlines'); + $objWriter->startElement('c:spPr'); + + if (!is_null($majorGridlines->getLineColorProperty('value'))) { + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', $majorGridlines->getLineStyleProperty('width')); + $objWriter->startElement('a:solidFill'); + $objWriter->startElement("a:{$majorGridlines->getLineColorProperty('type')}"); + $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('alpha')); + $objWriter->endElement(); //end alpha + $objWriter->endElement(); //end srgbClr + $objWriter->endElement(); //end solidFill + + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', $majorGridlines->getLineStyleProperty('dash')); + $objWriter->endElement(); + + if ($majorGridlines->getLineStyleProperty('join') == 'miter') { + $objWriter->startElement('a:miter'); + $objWriter->writeAttribute('lim', '800000'); + $objWriter->endElement(); + } else { + $objWriter->startElement('a:bevel'); + $objWriter->endElement(); + } + + if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { + $objWriter->startElement('a:headEnd'); + $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); + $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('head', 'w')); + $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('head', 'len')); + $objWriter->endElement(); + } + + if (!is_null($majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { + $objWriter->startElement('a:tailEnd'); + $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); + $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('end', 'w')); + $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('end', 'len')); + $objWriter->endElement(); + } + $objWriter->endElement(); //end ln + } + $objWriter->startElement('a:effectLst'); + + if (!is_null($majorGridlines->getGlowSize())) { + $objWriter->startElement('a:glow'); + $objWriter->writeAttribute('rad', $majorGridlines->getGlowSize()); + $objWriter->startElement("a:{$majorGridlines->getGlowColor('type')}"); + $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('alpha')); + $objWriter->endElement(); //end alpha + $objWriter->endElement(); //end schemeClr + $objWriter->endElement(); //end glow + } + + if (!is_null($majorGridlines->getShadowProperty('presets'))) { + $objWriter->startElement("a:{$majorGridlines->getShadowProperty('effect')}"); + if (!is_null($majorGridlines->getShadowProperty('blur'))) { + $objWriter->writeAttribute('blurRad', $majorGridlines->getShadowProperty('blur')); + } + if (!is_null($majorGridlines->getShadowProperty('distance'))) { + $objWriter->writeAttribute('dist', $majorGridlines->getShadowProperty('distance')); + } + if (!is_null($majorGridlines->getShadowProperty('direction'))) { + $objWriter->writeAttribute('dir', $majorGridlines->getShadowProperty('direction')); + } + if (!is_null($majorGridlines->getShadowProperty('algn'))) { + $objWriter->writeAttribute('algn', $majorGridlines->getShadowProperty('algn')); + } + if (!is_null($majorGridlines->getShadowProperty(array('size', 'sx')))) { + $objWriter->writeAttribute('sx', $majorGridlines->getShadowProperty(array('size', 'sx'))); + } + if (!is_null($majorGridlines->getShadowProperty(array('size', 'sy')))) { + $objWriter->writeAttribute('sy', $majorGridlines->getShadowProperty(array('size', 'sy'))); + } + if (!is_null($majorGridlines->getShadowProperty(array('size', 'kx')))) { + $objWriter->writeAttribute('kx', $majorGridlines->getShadowProperty(array('size', 'kx'))); + } + if (!is_null($majorGridlines->getShadowProperty('rotWithShape'))) { + $objWriter->writeAttribute('rotWithShape', $majorGridlines->getShadowProperty('rotWithShape')); + } + $objWriter->startElement("a:{$majorGridlines->getShadowProperty(array('color', 'type'))}"); + $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'value'))); + + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(array('color', 'alpha'))); + $objWriter->endElement(); //end alpha + + $objWriter->endElement(); //end color:type + $objWriter->endElement(); //end shadow + } + + if (!is_null($majorGridlines->getSoftEdgesSize())) { + $objWriter->startElement('a:softEdge'); + $objWriter->writeAttribute('rad', $majorGridlines->getSoftEdgesSize()); + $objWriter->endElement(); //end softEdge + } + + $objWriter->endElement(); //end effectLst + $objWriter->endElement(); //end spPr + $objWriter->endElement(); //end majorGridLines + + if ($minorGridlines->getObjectState()) { + $objWriter->startElement('c:minorGridlines'); + $objWriter->startElement('c:spPr'); + + if (!is_null($minorGridlines->getLineColorProperty('value'))) { + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', $minorGridlines->getLineStyleProperty('width')); + $objWriter->startElement('a:solidFill'); + $objWriter->startElement("a:{$minorGridlines->getLineColorProperty('type')}"); + $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('alpha')); + $objWriter->endElement(); //end alpha + $objWriter->endElement(); //end srgbClr + $objWriter->endElement(); //end solidFill + + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', $minorGridlines->getLineStyleProperty('dash')); + $objWriter->endElement(); + + if ($minorGridlines->getLineStyleProperty('join') == 'miter') { + $objWriter->startElement('a:miter'); + $objWriter->writeAttribute('lim', '800000'); + $objWriter->endElement(); + } else { + $objWriter->startElement('a:bevel'); + $objWriter->endElement(); + } + + if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type')))) { + $objWriter->startElement('a:headEnd'); + $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'head', 'type'))); + $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('head', 'w')); + $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('head', 'len')); + $objWriter->endElement(); + } + + if (!is_null($minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type')))) { + $objWriter->startElement('a:tailEnd'); + $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(array('arrow', 'end', 'type'))); + $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('end', 'w')); + $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('end', 'len')); + $objWriter->endElement(); + } + $objWriter->endElement(); //end ln + } + + $objWriter->startElement('a:effectLst'); + + if (!is_null($minorGridlines->getGlowSize())) { + $objWriter->startElement('a:glow'); + $objWriter->writeAttribute('rad', $minorGridlines->getGlowSize()); + $objWriter->startElement("a:{$minorGridlines->getGlowColor('type')}"); + $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('alpha')); + $objWriter->endElement(); //end alpha + $objWriter->endElement(); //end schemeClr + $objWriter->endElement(); //end glow + } + + if (!is_null($minorGridlines->getShadowProperty('presets'))) { + $objWriter->startElement("a:{$minorGridlines->getShadowProperty('effect')}"); + if (!is_null($minorGridlines->getShadowProperty('blur'))) { + $objWriter->writeAttribute('blurRad', $minorGridlines->getShadowProperty('blur')); + } + if (!is_null($minorGridlines->getShadowProperty('distance'))) { + $objWriter->writeAttribute('dist', $minorGridlines->getShadowProperty('distance')); + } + if (!is_null($minorGridlines->getShadowProperty('direction'))) { + $objWriter->writeAttribute('dir', $minorGridlines->getShadowProperty('direction')); + } + if (!is_null($minorGridlines->getShadowProperty('algn'))) { + $objWriter->writeAttribute('algn', $minorGridlines->getShadowProperty('algn')); + } + if (!is_null($minorGridlines->getShadowProperty(array('size', 'sx')))) { + $objWriter->writeAttribute('sx', $minorGridlines->getShadowProperty(array('size', 'sx'))); + } + if (!is_null($minorGridlines->getShadowProperty(array('size', 'sy')))) { + $objWriter->writeAttribute('sy', $minorGridlines->getShadowProperty(array('size', 'sy'))); + } + if (!is_null($minorGridlines->getShadowProperty(array('size', 'kx')))) { + $objWriter->writeAttribute('kx', $minorGridlines->getShadowProperty(array('size', 'kx'))); + } + if (!is_null($minorGridlines->getShadowProperty('rotWithShape'))) { + $objWriter->writeAttribute('rotWithShape', $minorGridlines->getShadowProperty('rotWithShape')); + } + $objWriter->startElement("a:{$minorGridlines->getShadowProperty(array('color', 'type'))}"); + $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'value'))); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(array('color', 'alpha'))); + $objWriter->endElement(); //end alpha + $objWriter->endElement(); //end color:type + $objWriter->endElement(); //end shadow + } + + if (!is_null($minorGridlines->getSoftEdgesSize())) { + $objWriter->startElement('a:softEdge'); + $objWriter->writeAttribute('rad', $minorGridlines->getSoftEdgesSize()); + $objWriter->endElement(); //end softEdge + } + + $objWriter->endElement(); //end effectLst + $objWriter->endElement(); //end spPr + $objWriter->endElement(); //end minorGridLines + } + + if (!is_null($yAxisLabel)) { + $objWriter->startElement('c:title'); + $objWriter->startElement('c:tx'); + $objWriter->startElement('c:rich'); + + $objWriter->startElement('a:bodyPr'); + $objWriter->endElement(); + + $objWriter->startElement('a:lstStyle'); + $objWriter->endElement(); + + $objWriter->startElement('a:p'); + $objWriter->startElement('a:r'); + + $caption = $yAxisLabel->getCaption(); + if (is_array($caption)) { + $caption = $caption[0]; + } + + $objWriter->startElement('a:t'); + // $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($caption)); + $objWriter->endElement(); + + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { + $layout = $yAxisLabel->getLayout(); + $this->writeLayout($layout, $objWriter); + } + + $objWriter->startElement('c:overlay'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $xAxis->getAxisNumberFormat()); + $objWriter->writeAttribute('sourceLinked', $xAxis->getAxisNumberSourceLinked()); + $objWriter->endElement(); + + $objWriter->startElement('c:majorTickMark'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_tick_mark')); + $objWriter->endElement(); + + $objWriter->startElement('c:minorTickMark'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_tick_mark')); + $objWriter->endElement(); + + $objWriter->startElement('c:tickLblPos'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('axis_labels')); + $objWriter->endElement(); + + $objWriter->startElement('c:spPr'); + + if (!is_null($xAxis->getFillProperty('value'))) { + $objWriter->startElement('a:solidFill'); + $objWriter->startElement("a:" . $xAxis->getFillProperty('type')); + $objWriter->writeAttribute('val', $xAxis->getFillProperty('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $xAxis->getFillProperty('alpha')); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } + + $objWriter->startElement('a:ln'); + + $objWriter->writeAttribute('w', $xAxis->getLineStyleProperty('width')); + $objWriter->writeAttribute('cap', $xAxis->getLineStyleProperty('cap')); + $objWriter->writeAttribute('cmpd', $xAxis->getLineStyleProperty('compound')); + + if (!is_null($xAxis->getLineProperty('value'))) { + $objWriter->startElement('a:solidFill'); + $objWriter->startElement("a:" . $xAxis->getLineProperty('type')); + $objWriter->writeAttribute('val', $xAxis->getLineProperty('value')); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $xAxis->getLineProperty('alpha')); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } + + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', $xAxis->getLineStyleProperty('dash')); + $objWriter->endElement(); + + if ($xAxis->getLineStyleProperty('join') == 'miter') { + $objWriter->startElement('a:miter'); + $objWriter->writeAttribute('lim', '800000'); + $objWriter->endElement(); + } else { + $objWriter->startElement('a:bevel'); + $objWriter->endElement(); + } + + if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'head', 'type')))) { + $objWriter->startElement('a:headEnd'); + $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'head', 'type'))); + $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('head')); + $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('head')); + $objWriter->endElement(); + } + + if (!is_null($xAxis->getLineStyleProperty(array('arrow', 'end', 'type')))) { + $objWriter->startElement('a:tailEnd'); + $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(array('arrow', 'end', 'type'))); + $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('end')); + $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('end')); + $objWriter->endElement(); + } + + $objWriter->endElement(); + + $objWriter->startElement('a:effectLst'); + + if (!is_null($xAxis->getGlowProperty('size'))) { + $objWriter->startElement('a:glow'); + $objWriter->writeAttribute('rad', $xAxis->getGlowProperty('size')); + $objWriter->startElement("a:{$xAxis->getGlowProperty(array('color','type'))}"); + $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color','value'))); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $xAxis->getGlowProperty(array('color','alpha'))); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } + + if (!is_null($xAxis->getShadowProperty('presets'))) { + $objWriter->startElement("a:{$xAxis->getShadowProperty('effect')}"); + + if (!is_null($xAxis->getShadowProperty('blur'))) { + $objWriter->writeAttribute('blurRad', $xAxis->getShadowProperty('blur')); + } + if (!is_null($xAxis->getShadowProperty('distance'))) { + $objWriter->writeAttribute('dist', $xAxis->getShadowProperty('distance')); + } + if (!is_null($xAxis->getShadowProperty('direction'))) { + $objWriter->writeAttribute('dir', $xAxis->getShadowProperty('direction')); + } + if (!is_null($xAxis->getShadowProperty('algn'))) { + $objWriter->writeAttribute('algn', $xAxis->getShadowProperty('algn')); + } + if (!is_null($xAxis->getShadowProperty(array('size','sx')))) { + $objWriter->writeAttribute('sx', $xAxis->getShadowProperty(array('size','sx'))); + } + if (!is_null($xAxis->getShadowProperty(array('size','sy')))) { + $objWriter->writeAttribute('sy', $xAxis->getShadowProperty(array('size','sy'))); + } + if (!is_null($xAxis->getShadowProperty(array('size','kx')))) { + $objWriter->writeAttribute('kx', $xAxis->getShadowProperty(array('size','kx'))); + } + if (!is_null($xAxis->getShadowProperty('rotWithShape'))) { + $objWriter->writeAttribute('rotWithShape', $xAxis->getShadowProperty('rotWithShape')); + } + + $objWriter->startElement("a:{$xAxis->getShadowProperty(array('color','type'))}"); + $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color','value'))); + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $xAxis->getShadowProperty(array('color','alpha'))); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + if (!is_null($xAxis->getSoftEdgesSize())) { + $objWriter->startElement('a:softEdge'); + $objWriter->writeAttribute('rad', $xAxis->getSoftEdgesSize()); + $objWriter->endElement(); + } + + $objWriter->endElement(); //effectList + $objWriter->endElement(); //end spPr + + if ($id1 > 0) { + $objWriter->startElement('c:crossAx'); + $objWriter->writeAttribute('val', $id2); + $objWriter->endElement(); + + if (!is_null($xAxis->getAxisOptionsProperty('horizontal_crosses_value'))) { + $objWriter->startElement('c:crossesAt'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses_value')); + $objWriter->endElement(); + } else { + $objWriter->startElement('c:crosses'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses')); + $objWriter->endElement(); + } + + $objWriter->startElement('c:crossBetween'); + $objWriter->writeAttribute('val', "midCat"); + $objWriter->endElement(); + + if (!is_null($xAxis->getAxisOptionsProperty('major_unit'))) { + $objWriter->startElement('c:majorUnit'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_unit')); + $objWriter->endElement(); + } + + if (!is_null($xAxis->getAxisOptionsProperty('minor_unit'))) { + $objWriter->startElement('c:minorUnit'); + $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_unit')); + $objWriter->endElement(); + } + } + + if ($isMultiLevelSeries) { + if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { + $objWriter->startElement('c:noMultiLvlLbl'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + } + + /** + * Get the data series type(s) for a chart plot series + * + * @param PHPExcel_Chart_PlotArea $plotArea + * + * @return string|array + * @throws PHPExcel_Writer_Exception + */ + private static function getChartType($plotArea) + { + $groupCount = $plotArea->getPlotGroupCount(); + + if ($groupCount == 1) { + $chartType = array($plotArea->getPlotGroupByIndex(0)->getPlotType()); + } else { + $chartTypes = array(); + for ($i = 0; $i < $groupCount; ++$i) { + $chartTypes[] = $plotArea->getPlotGroupByIndex($i)->getPlotType(); + } + $chartType = array_unique($chartTypes); + if (count($chartTypes) == 0) { + throw new PHPExcel_Writer_Exception('Chart is not yet implemented'); + } + } + + return $chartType; + } + + /** + * Write Plot Group (series of related plots) + * + * @param PHPExcel_Chart_DataSeries $plotGroup + * @param string $groupType Type of plot for dataseries + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param boolean &$catIsMultiLevelSeries Is category a multi-series category + * @param boolean &$valIsMultiLevelSeries Is value set a multi-series set + * @param string &$plotGroupingType Type of grouping for multi-series values + * @param PHPExcel_Worksheet $pSheet + * + * @throws PHPExcel_Writer_Exception + */ + private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMultiLevelSeries, &$valIsMultiLevelSeries, &$plotGroupingType, PHPExcel_Worksheet $pSheet) + { + if (is_null($plotGroup)) { + return; + } + + if (($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D)) { + $objWriter->startElement('c:barDir'); + $objWriter->writeAttribute('val', $plotGroup->getPlotDirection()); + $objWriter->endElement(); + } + + if (!is_null($plotGroup->getPlotGrouping())) { + $plotGroupingType = $plotGroup->getPlotGrouping(); + $objWriter->startElement('c:grouping'); + $objWriter->writeAttribute('val', $plotGroupingType); + $objWriter->endElement(); + } + + // Get these details before the loop, because we can use the count to check for varyColors + $plotSeriesOrder = $plotGroup->getPlotOrder(); + $plotSeriesCount = count($plotSeriesOrder); + + if (($groupType !== PHPExcel_Chart_DataSeries::TYPE_RADARCHART) && ($groupType !== PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) { + if ($groupType !== PHPExcel_Chart_DataSeries::TYPE_LINECHART) { + if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART) || ($plotSeriesCount > 1)) { + $objWriter->startElement('c:varyColors'); + $objWriter->writeAttribute('val', 1); + $objWriter->endElement(); + } else { + $objWriter->startElement('c:varyColors'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } + } + } + + foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) { + $objWriter->startElement('c:ser'); + + $objWriter->startElement('c:idx'); + $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesIdx); + $objWriter->endElement(); + + $objWriter->startElement('c:order'); + $objWriter->writeAttribute('val', $this->_seriesIndex + $plotSeriesRef); + $objWriter->endElement(); + + if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { + $objWriter->startElement('c:dPt'); + $objWriter->startElement('c:idx'); + $objWriter->writeAttribute('val', 3); + $objWriter->endElement(); + + $objWriter->startElement('c:bubble3D'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + + $objWriter->startElement('c:spPr'); + $objWriter->startElement('a:solidFill'); + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', 'FF9900'); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + } + + // Labels + $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef); + if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) { + $objWriter->startElement('c:tx'); + $objWriter->startElement('c:strRef'); + $this->writePlotSeriesLabel($plotSeriesLabel, $objWriter); + $objWriter->endElement(); + $objWriter->endElement(); + } + + // Formatting for the points + if (($groupType == PHPExcel_Chart_DataSeries::TYPE_LINECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART)) { + $objWriter->startElement('c:spPr'); + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', 12700); + if ($groupType == PHPExcel_Chart_DataSeries::TYPE_STOCKCHART) { + $objWriter->startElement('a:noFill'); + $objWriter->endElement(); + } + $objWriter->endElement(); + $objWriter->endElement(); + } + + $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef); + if ($plotSeriesValues) { + $plotSeriesMarker = $plotSeriesValues->getPointMarker(); + if ($plotSeriesMarker) { + $objWriter->startElement('c:marker'); + $objWriter->startElement('c:symbol'); + $objWriter->writeAttribute('val', $plotSeriesMarker); + $objWriter->endElement(); + + if ($plotSeriesMarker !== 'none') { + $objWriter->startElement('c:size'); + $objWriter->writeAttribute('val', 3); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_BARCHART_3D) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART)) { + $objWriter->startElement('c:invertIfNegative'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } + + // Category Labels + $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef); + if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) { + $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries(); + + if (($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) || ($groupType == PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { + if (!is_null($plotGroup->getPlotStyle())) { + $plotStyle = $plotGroup->getPlotStyle(); + if ($plotStyle) { + $objWriter->startElement('c:explosion'); + $objWriter->writeAttribute('val', 25); + $objWriter->endElement(); + } + } + } + + if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) { + $objWriter->startElement('c:xVal'); + } else { + $objWriter->startElement('c:cat'); + } + + $this->writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str', $pSheet); + $objWriter->endElement(); + } + + // Values + if ($plotSeriesValues) { + $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries(); + + if (($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) || ($groupType === PHPExcel_Chart_DataSeries::TYPE_SCATTERCHART)) { + $objWriter->startElement('c:yVal'); + } else { + $objWriter->startElement('c:val'); + } + + $this->writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num', $pSheet); + $objWriter->endElement(); + } + + if ($groupType === PHPExcel_Chart_DataSeries::TYPE_BUBBLECHART) { + $this->writeBubbles($plotSeriesValues, $objWriter, $pSheet); + } + + $objWriter->endElement(); + } + + $this->_seriesIndex += $plotSeriesIdx + 1; + } + + /** + * Write Plot Series Label + * + * @param PHPExcel_Chart_DataSeriesValues $plotSeriesLabel + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writePlotSeriesLabel($plotSeriesLabel, $objWriter) + { + if (is_null($plotSeriesLabel)) { + return; + } + + $objWriter->startElement('c:f'); + $objWriter->writeRawData($plotSeriesLabel->getDataSource()); + $objWriter->endElement(); + + $objWriter->startElement('c:strCache'); + $objWriter->startElement('c:ptCount'); + $objWriter->writeAttribute('val', $plotSeriesLabel->getPointCount()); + $objWriter->endElement(); + + foreach ($plotSeriesLabel->getDataValues() as $plotLabelKey => $plotLabelValue) { + $objWriter->startElement('c:pt'); + $objWriter->writeAttribute('idx', $plotLabelKey); + + $objWriter->startElement('c:v'); + $objWriter->writeRawData($plotLabelValue); + $objWriter->endElement(); + $objWriter->endElement(); + } + $objWriter->endElement(); + } + + /** + * Write Plot Series Values + * + * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $groupType Type of plot for dataseries + * @param string $dataType Datatype of series values + * @param PHPExcel_Worksheet $pSheet + * + * @throws PHPExcel_Writer_Exception + */ + private function writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, $dataType = 'str', PHPExcel_Worksheet $pSheet) + { + if (is_null($plotSeriesValues)) { + return; + } + + if ($plotSeriesValues->isMultiLevelSeries()) { + $levelCount = $plotSeriesValues->multiLevelCount(); + + $objWriter->startElement('c:multiLvlStrRef'); + + $objWriter->startElement('c:f'); + $objWriter->writeRawData($plotSeriesValues->getDataSource()); + $objWriter->endElement(); + + $objWriter->startElement('c:multiLvlStrCache'); + + $objWriter->startElement('c:ptCount'); + $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); + $objWriter->endElement(); + + for ($level = 0; $level < $levelCount; ++$level) { + $objWriter->startElement('c:lvl'); + + foreach ($plotSeriesValues->getDataValues() as $plotSeriesKey => $plotSeriesValue) { + if (isset($plotSeriesValue[$level])) { + $objWriter->startElement('c:pt'); + $objWriter->writeAttribute('idx', $plotSeriesKey); + + $objWriter->startElement('c:v'); + $objWriter->writeRawData($plotSeriesValue[$level]); + $objWriter->endElement(); + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + } + + $objWriter->endElement(); + + $objWriter->endElement(); + } else { + $objWriter->startElement('c:' . $dataType . 'Ref'); + + $objWriter->startElement('c:f'); + $objWriter->writeRawData($plotSeriesValues->getDataSource()); + $objWriter->endElement(); + + $objWriter->startElement('c:' . $dataType . 'Cache'); + + if (($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART) && ($groupType != PHPExcel_Chart_DataSeries::TYPE_PIECHART_3D) && ($groupType != PHPExcel_Chart_DataSeries::TYPE_DONUTCHART)) { + if (($plotSeriesValues->getFormatCode() !== null) && ($plotSeriesValues->getFormatCode() !== '')) { + $objWriter->startElement('c:formatCode'); + $objWriter->writeRawData($plotSeriesValues->getFormatCode()); + $objWriter->endElement(); + } + } + + $objWriter->startElement('c:ptCount'); + $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); + $objWriter->endElement(); + + $dataValues = $plotSeriesValues->getDataValues(); + if (!empty($dataValues)) { + if (is_array($dataValues)) { + foreach ($dataValues as $plotSeriesKey => $plotSeriesValue) { + $objWriter->startElement('c:pt'); + $objWriter->writeAttribute('idx', $plotSeriesKey); + + $objWriter->startElement('c:v'); + $objWriter->writeRawData($plotSeriesValue); + $objWriter->endElement(); + $objWriter->endElement(); + } + } + } + + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + + /** + * Write Bubble Chart Details + * + * @param PHPExcel_Chart_DataSeriesValues $plotSeriesValues + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writeBubbles($plotSeriesValues, $objWriter, PHPExcel_Worksheet $pSheet) + { + if (is_null($plotSeriesValues)) { + return; + } + + $objWriter->startElement('c:bubbleSize'); + $objWriter->startElement('c:numLit'); + + $objWriter->startElement('c:formatCode'); + $objWriter->writeRawData('General'); + $objWriter->endElement(); + + $objWriter->startElement('c:ptCount'); + $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); + $objWriter->endElement(); + + $dataValues = $plotSeriesValues->getDataValues(); + if (!empty($dataValues)) { + if (is_array($dataValues)) { + foreach ($dataValues as $plotSeriesKey => $plotSeriesValue) { + $objWriter->startElement('c:pt'); + $objWriter->writeAttribute('idx', $plotSeriesKey); + $objWriter->startElement('c:v'); + $objWriter->writeRawData(1); + $objWriter->endElement(); + $objWriter->endElement(); + } + } + } + + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('c:bubble3D'); + $objWriter->writeAttribute('val', 0); + $objWriter->endElement(); + } + + /** + * Write Layout + * + * @param PHPExcel_Chart_Layout $layout + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writeLayout(PHPExcel_Chart_Layout $layout = null, $objWriter) + { + $objWriter->startElement('c:layout'); + + if (!is_null($layout)) { + $objWriter->startElement('c:manualLayout'); + + $layoutTarget = $layout->getLayoutTarget(); + if (!is_null($layoutTarget)) { + $objWriter->startElement('c:layoutTarget'); + $objWriter->writeAttribute('val', $layoutTarget); + $objWriter->endElement(); + } + + $xMode = $layout->getXMode(); + if (!is_null($xMode)) { + $objWriter->startElement('c:xMode'); + $objWriter->writeAttribute('val', $xMode); + $objWriter->endElement(); + } + + $yMode = $layout->getYMode(); + if (!is_null($yMode)) { + $objWriter->startElement('c:yMode'); + $objWriter->writeAttribute('val', $yMode); + $objWriter->endElement(); + } + + $x = $layout->getXPosition(); + if (!is_null($x)) { + $objWriter->startElement('c:x'); + $objWriter->writeAttribute('val', $x); + $objWriter->endElement(); + } + + $y = $layout->getYPosition(); + if (!is_null($y)) { + $objWriter->startElement('c:y'); + $objWriter->writeAttribute('val', $y); + $objWriter->endElement(); + } + + $w = $layout->getWidth(); + if (!is_null($w)) { + $objWriter->startElement('c:w'); + $objWriter->writeAttribute('val', $w); + $objWriter->endElement(); + } + + $h = $layout->getHeight(); + if (!is_null($h)) { + $objWriter->startElement('c:h'); + $objWriter->writeAttribute('val', $h); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + /** + * Write Alternate Content block + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writeAlternateContent($objWriter) + { + $objWriter->startElement('mc:AlternateContent'); + $objWriter->writeAttribute('xmlns:mc', 'http://schemas.openxmlformats.org/markup-compatibility/2006'); + + $objWriter->startElement('mc:Choice'); + $objWriter->writeAttribute('xmlns:c14', 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart'); + $objWriter->writeAttribute('Requires', 'c14'); + + $objWriter->startElement('c14:style'); + $objWriter->writeAttribute('val', '102'); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('mc:Fallback'); + $objWriter->startElement('c:style'); + $objWriter->writeAttribute('val', '2'); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Printer Settings + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * + * @throws PHPExcel_Writer_Exception + */ + private function writePrintSettings($objWriter) + { + $objWriter->startElement('c:printSettings'); + + $objWriter->startElement('c:headerFooter'); + $objWriter->endElement(); + + $objWriter->startElement('c:pageMargins'); + $objWriter->writeAttribute('footer', 0.3); + $objWriter->writeAttribute('header', 0.3); + $objWriter->writeAttribute('r', 0.7); + $objWriter->writeAttribute('l', 0.7); + $objWriter->writeAttribute('t', 0.75); + $objWriter->writeAttribute('b', 0.75); + $objWriter->endElement(); + + $objWriter->startElement('c:pageSetup'); + $objWriter->writeAttribute('orientation', "portrait"); + $objWriter->endElement(); + + $objWriter->endElement(); + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Comments.php b/assets/excel/PHPExcel/Writer/Excel2007/Comments.php new file mode 100644 index 0000000..7139f6c --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Comments.php @@ -0,0 +1,260 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Comments + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Comments extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write comments to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeComments(PHPExcel_Worksheet $pWorksheet = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Comments cache + $comments = $pWorksheet->getComments(); + + // Authors cache + $authors = array(); + $authorId = 0; + foreach ($comments as $comment) { + if (!isset($authors[$comment->getAuthor()])) { + $authors[$comment->getAuthor()] = $authorId++; + } + } + + // comments + $objWriter->startElement('comments'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); + + // Loop through authors + $objWriter->startElement('authors'); + foreach ($authors as $author => $index) { + $objWriter->writeElement('author', $author); + } + $objWriter->endElement(); + + // Loop through comments + $objWriter->startElement('commentList'); + foreach ($comments as $key => $value) { + $this->writeComment($objWriter, $key, $value, $authors); + } + $objWriter->endElement(); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write comment to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pCellReference Cell reference + * @param PHPExcel_Comment $pComment Comment + * @param array $pAuthors Array of authors + * @throws PHPExcel_Writer_Exception + */ + private function writeComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null, $pAuthors = null) + { + // comment + $objWriter->startElement('comment'); + $objWriter->writeAttribute('ref', $pCellReference); + $objWriter->writeAttribute('authorId', $pAuthors[$pComment->getAuthor()]); + + // text + $objWriter->startElement('text'); + $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $pComment->getText()); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write VML comments to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeVMLComments(PHPExcel_Worksheet $pWorksheet = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Comments cache + $comments = $pWorksheet->getComments(); + + // xml + $objWriter->startElement('xml'); + $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml'); + $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office'); + $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel'); + + // o:shapelayout + $objWriter->startElement('o:shapelayout'); + $objWriter->writeAttribute('v:ext', 'edit'); + + // o:idmap + $objWriter->startElement('o:idmap'); + $objWriter->writeAttribute('v:ext', 'edit'); + $objWriter->writeAttribute('data', '1'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // v:shapetype + $objWriter->startElement('v:shapetype'); + $objWriter->writeAttribute('id', '_x0000_t202'); + $objWriter->writeAttribute('coordsize', '21600,21600'); + $objWriter->writeAttribute('o:spt', '202'); + $objWriter->writeAttribute('path', 'm,l,21600r21600,l21600,xe'); + + // v:stroke + $objWriter->startElement('v:stroke'); + $objWriter->writeAttribute('joinstyle', 'miter'); + $objWriter->endElement(); + + // v:path + $objWriter->startElement('v:path'); + $objWriter->writeAttribute('gradientshapeok', 't'); + $objWriter->writeAttribute('o:connecttype', 'rect'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // Loop through comments + foreach ($comments as $key => $value) { + $this->writeVMLComment($objWriter, $key, $value); + } + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write VML comment to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pCellReference Cell reference + * @param PHPExcel_Comment $pComment Comment + * @throws PHPExcel_Writer_Exception + */ + private function writeVMLComment(PHPExcel_Shared_XMLWriter $objWriter = null, $pCellReference = 'A1', PHPExcel_Comment $pComment = null) + { + // Metadata + list($column, $row) = PHPExcel_Cell::coordinateFromString($pCellReference); + $column = PHPExcel_Cell::columnIndexFromString($column); + $id = 1024 + $column + $row; + $id = substr($id, 0, 4); + + // v:shape + $objWriter->startElement('v:shape'); + $objWriter->writeAttribute('id', '_x0000_s' . $id); + $objWriter->writeAttribute('type', '#_x0000_t202'); + $objWriter->writeAttribute('style', 'position:absolute;margin-left:' . $pComment->getMarginLeft() . ';margin-top:' . $pComment->getMarginTop() . ';width:' . $pComment->getWidth() . ';height:' . $pComment->getHeight() . ';z-index:1;visibility:' . ($pComment->getVisible() ? 'visible' : 'hidden')); + $objWriter->writeAttribute('fillcolor', '#' . $pComment->getFillColor()->getRGB()); + $objWriter->writeAttribute('o:insetmode', 'auto'); + + // v:fill + $objWriter->startElement('v:fill'); + $objWriter->writeAttribute('color2', '#' . $pComment->getFillColor()->getRGB()); + $objWriter->endElement(); + + // v:shadow + $objWriter->startElement('v:shadow'); + $objWriter->writeAttribute('on', 't'); + $objWriter->writeAttribute('color', 'black'); + $objWriter->writeAttribute('obscured', 't'); + $objWriter->endElement(); + + // v:path + $objWriter->startElement('v:path'); + $objWriter->writeAttribute('o:connecttype', 'none'); + $objWriter->endElement(); + + // v:textbox + $objWriter->startElement('v:textbox'); + $objWriter->writeAttribute('style', 'mso-direction-alt:auto'); + + // div + $objWriter->startElement('div'); + $objWriter->writeAttribute('style', 'text-align:left'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // x:ClientData + $objWriter->startElement('x:ClientData'); + $objWriter->writeAttribute('ObjectType', 'Note'); + + // x:MoveWithCells + $objWriter->writeElement('x:MoveWithCells', ''); + + // x:SizeWithCells + $objWriter->writeElement('x:SizeWithCells', ''); + + // x:Anchor + //$objWriter->writeElement('x:Anchor', $column . ', 15, ' . ($row - 2) . ', 10, ' . ($column + 4) . ', 15, ' . ($row + 5) . ', 18'); + + // x:AutoFill + $objWriter->writeElement('x:AutoFill', 'False'); + + // x:Row + $objWriter->writeElement('x:Row', ($row - 1)); + + // x:Column + $objWriter->writeElement('x:Column', ($column - 1)); + + $objWriter->endElement(); + + $objWriter->endElement(); + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/ContentTypes.php b/assets/excel/PHPExcel/Writer/Excel2007/ContentTypes.php new file mode 100644 index 0000000..0d91189 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/ContentTypes.php @@ -0,0 +1,240 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_ContentTypes + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_ContentTypes extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write content types to XML format + * + * @param PHPExcel $pPHPExcel + * @param boolean $includeCharts Flag indicating if we should include drawing details for charts + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeContentTypes(PHPExcel $pPHPExcel = null, $includeCharts = false) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Types + $objWriter->startElement('Types'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types'); + + // Theme + $this->writeOverrideContentType($objWriter, '/xl/theme/theme1.xml', 'application/vnd.openxmlformats-officedocument.theme+xml'); + + // Styles + $this->writeOverrideContentType($objWriter, '/xl/styles.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml'); + + // Rels + $this->writeDefaultContentType($objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml'); + + // XML + $this->writeDefaultContentType($objWriter, 'xml', 'application/xml'); + + // VML + $this->writeDefaultContentType($objWriter, 'vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'); + + // Workbook + if ($pPHPExcel->hasMacros()) { //Macros in workbook ? + // Yes : not standard content but "macroEnabled" + $this->writeOverrideContentType($objWriter, '/xl/workbook.xml', 'application/vnd.ms-excel.sheet.macroEnabled.main+xml'); + //... and define a new type for the VBA project + $this->writeDefaultContentType($objWriter, 'bin', 'application/vnd.ms-office.vbaProject'); + if ($pPHPExcel->hasMacrosCertificate()) {// signed macros ? + // Yes : add needed information + $this->writeOverrideContentType($objWriter, '/xl/vbaProjectSignature.bin', 'application/vnd.ms-office.vbaProjectSignature'); + } + } else {// no macros in workbook, so standard type + $this->writeOverrideContentType($objWriter, '/xl/workbook.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'); + } + + // DocProps + $this->writeOverrideContentType($objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml'); + + $this->writeOverrideContentType($objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml'); + + $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); + if (!empty($customPropertyList)) { + $this->writeOverrideContentType($objWriter, '/docProps/custom.xml', 'application/vnd.openxmlformats-officedocument.custom-properties+xml'); + } + + // Worksheets + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + $this->writeOverrideContentType($objWriter, '/xl/worksheets/sheet' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'); + } + + // Shared strings + $this->writeOverrideContentType($objWriter, '/xl/sharedStrings.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'); + + // Add worksheet relationship content types + $chart = 1; + for ($i = 0; $i < $sheetCount; ++$i) { + $drawings = $pPHPExcel->getSheet($i)->getDrawingCollection(); + $drawingCount = count($drawings); + $chartCount = ($includeCharts) ? $pPHPExcel->getSheet($i)->getChartCount() : 0; + + // We need a drawing relationship for the worksheet if we have either drawings or charts + if (($drawingCount > 0) || ($chartCount > 0)) { + $this->writeOverrideContentType($objWriter, '/xl/drawings/drawing' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.drawing+xml'); + } + + // If we have charts, then we need a chart relationship for every individual chart + if ($chartCount > 0) { + for ($c = 0; $c < $chartCount; ++$c) { + $this->writeOverrideContentType($objWriter, '/xl/charts/chart' . $chart++ . '.xml', 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'); + } + } + } + + // Comments + for ($i = 0; $i < $sheetCount; ++$i) { + if (count($pPHPExcel->getSheet($i)->getComments()) > 0) { + $this->writeOverrideContentType($objWriter, '/xl/comments' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml'); + } + } + + // Add media content-types + $aMediaContentTypes = array(); + $mediaCount = $this->getParentWriter()->getDrawingHashTable()->count(); + for ($i = 0; $i < $mediaCount; ++$i) { + $extension = ''; + $mimeType = ''; + + if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_Drawing) { + $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension()); + $mimeType = $this->getImageMimeType($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath()); + } elseif ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPExcel_Worksheet_MemoryDrawing) { + $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType()); + $extension = explode('/', $extension); + $extension = $extension[1]; + + $mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType(); + } + + if (!isset( $aMediaContentTypes[$extension])) { + $aMediaContentTypes[$extension] = $mimeType; + + $this->writeDefaultContentType($objWriter, $extension, $mimeType); + } + } + if ($pPHPExcel->hasRibbonBinObjects()) { + // Some additional objects in the ribbon ? + // we need to write "Extension" but not already write for media content + $tabRibbonTypes=array_diff($pPHPExcel->getRibbonBinObjects('types'), array_keys($aMediaContentTypes)); + foreach ($tabRibbonTypes as $aRibbonType) { + $mimeType='image/.'.$aRibbonType;//we wrote $mimeType like customUI Editor + $this->writeDefaultContentType($objWriter, $aRibbonType, $mimeType); + } + } + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + if (count($pPHPExcel->getSheet()->getHeaderFooter()->getImages()) > 0) { + foreach ($pPHPExcel->getSheet()->getHeaderFooter()->getImages() as $image) { + if (!isset( $aMediaContentTypes[strtolower($image->getExtension())])) { + $aMediaContentTypes[strtolower($image->getExtension())] = $this->getImageMimeType($image->getPath()); + + $this->writeDefaultContentType($objWriter, strtolower($image->getExtension()), $aMediaContentTypes[strtolower($image->getExtension())]); + } + } + } + } + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Get image mime type + * + * @param string $pFile Filename + * @return string Mime Type + * @throws PHPExcel_Writer_Exception + */ + private function getImageMimeType($pFile = '') + { + if (PHPExcel_Shared_File::file_exists($pFile)) { + $image = getimagesize($pFile); + return image_type_to_mime_type($image[2]); + } else { + throw new PHPExcel_Writer_Exception("File $pFile does not exist"); + } + } + + /** + * Write Default content type + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pPartname Part name + * @param string $pContentType Content type + * @throws PHPExcel_Writer_Exception + */ + private function writeDefaultContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') + { + if ($pPartname != '' && $pContentType != '') { + // Write content type + $objWriter->startElement('Default'); + $objWriter->writeAttribute('Extension', $pPartname); + $objWriter->writeAttribute('ContentType', $pContentType); + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Write Override content type + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pPartname Part name + * @param string $pContentType Content type + * @throws PHPExcel_Writer_Exception + */ + private function writeOverrideContentType(PHPExcel_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') + { + if ($pPartname != '' && $pContentType != '') { + // Write content type + $objWriter->startElement('Override'); + $objWriter->writeAttribute('PartName', $pPartname); + $objWriter->writeAttribute('ContentType', $pContentType); + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/DocProps.php b/assets/excel/PHPExcel/Writer/Excel2007/DocProps.php new file mode 100644 index 0000000..fef3d93 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/DocProps.php @@ -0,0 +1,262 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_DocProps + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write docProps/app.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeDocPropsApp(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Properties + $objWriter->startElement('Properties'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties'); + $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); + + // Application + $objWriter->writeElement('Application', 'Microsoft Excel'); + + // DocSecurity + $objWriter->writeElement('DocSecurity', '0'); + + // ScaleCrop + $objWriter->writeElement('ScaleCrop', 'false'); + + // HeadingPairs + $objWriter->startElement('HeadingPairs'); + + // Vector + $objWriter->startElement('vt:vector'); + $objWriter->writeAttribute('size', '2'); + $objWriter->writeAttribute('baseType', 'variant'); + + // Variant + $objWriter->startElement('vt:variant'); + $objWriter->writeElement('vt:lpstr', 'Worksheets'); + $objWriter->endElement(); + + // Variant + $objWriter->startElement('vt:variant'); + $objWriter->writeElement('vt:i4', $pPHPExcel->getSheetCount()); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // TitlesOfParts + $objWriter->startElement('TitlesOfParts'); + + // Vector + $objWriter->startElement('vt:vector'); + $objWriter->writeAttribute('size', $pPHPExcel->getSheetCount()); + $objWriter->writeAttribute('baseType', 'lpstr'); + + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + $objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle()); + } + + $objWriter->endElement(); + + $objWriter->endElement(); + + // Company + $objWriter->writeElement('Company', $pPHPExcel->getProperties()->getCompany()); + + // Company + $objWriter->writeElement('Manager', $pPHPExcel->getProperties()->getManager()); + + // LinksUpToDate + $objWriter->writeElement('LinksUpToDate', 'false'); + + // SharedDoc + $objWriter->writeElement('SharedDoc', 'false'); + + // HyperlinksChanged + $objWriter->writeElement('HyperlinksChanged', 'false'); + + // AppVersion + $objWriter->writeElement('AppVersion', '12.0000'); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write docProps/core.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeDocPropsCore(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // cp:coreProperties + $objWriter->startElement('cp:coreProperties'); + $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties'); + $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); + $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/'); + $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/'); + $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); + + // dc:creator + $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); + + // cp:lastModifiedBy + $objWriter->writeElement('cp:lastModifiedBy', $pPHPExcel->getProperties()->getLastModifiedBy()); + + // dcterms:created + $objWriter->startElement('dcterms:created'); + $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); + $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); + $objWriter->endElement(); + + // dcterms:modified + $objWriter->startElement('dcterms:modified'); + $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); + $objWriter->writeRawData(date(DATE_W3C, $pPHPExcel->getProperties()->getModified())); + $objWriter->endElement(); + + // dc:title + $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); + + // dc:description + $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); + + // dc:subject + $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); + + // cp:keywords + $objWriter->writeElement('cp:keywords', $pPHPExcel->getProperties()->getKeywords()); + + // cp:category + $objWriter->writeElement('cp:category', $pPHPExcel->getProperties()->getCategory()); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write docProps/custom.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeDocPropsCustom(PHPExcel $pPHPExcel = null) + { + $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); + if (empty($customPropertyList)) { + return; + } + + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // cp:coreProperties + $objWriter->startElement('Properties'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties'); + $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); + + + foreach ($customPropertyList as $key => $customProperty) { + $propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty); + $propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty); + + $objWriter->startElement('property'); + $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'); + $objWriter->writeAttribute('pid', $key+2); + $objWriter->writeAttribute('name', $customProperty); + + switch ($propertyType) { + case 'i': + $objWriter->writeElement('vt:i4', $propertyValue); + break; + case 'f': + $objWriter->writeElement('vt:r8', $propertyValue); + break; + case 'b': + $objWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false'); + break; + case 'd': + $objWriter->startElement('vt:filetime'); + $objWriter->writeRawData(date(DATE_W3C, $propertyValue)); + $objWriter->endElement(); + break; + default: + $objWriter->writeElement('vt:lpwstr', $propertyValue); + break; + } + + $objWriter->endElement(); + } + + + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Drawing.php b/assets/excel/PHPExcel/Writer/Excel2007/Drawing.php new file mode 100644 index 0000000..2814388 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Drawing.php @@ -0,0 +1,589 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Drawing + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Drawing extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write drawings to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @param int &$chartRef Chart ID + * @param boolean $includeCharts Flag indicating if we should include drawing details for charts + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeDrawings(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = false) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // xdr:wsDr + $objWriter->startElement('xdr:wsDr'); + $objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'); + $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); + + // Loop through images and write drawings + $i = 1; + $iterator = $pWorksheet->getDrawingCollection()->getIterator(); + while ($iterator->valid()) { + $this->writeDrawing($objWriter, $iterator->current(), $i); + + $iterator->next(); + ++$i; + } + + if ($includeCharts) { + $chartCount = $pWorksheet->getChartCount(); + // Loop through charts and write the chart position + if ($chartCount > 0) { + for ($c = 0; $c < $chartCount; ++$c) { + $this->writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c+$i); + } + } + } + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write drawings to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Chart $pChart + * @param int $pRelationId + * @throws PHPExcel_Writer_Exception + */ + public function writeChart(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Chart $pChart = null, $pRelationId = -1) + { + $tl = $pChart->getTopLeftPosition(); + $tl['colRow'] = PHPExcel_Cell::coordinateFromString($tl['cell']); + $br = $pChart->getBottomRightPosition(); + $br['colRow'] = PHPExcel_Cell::coordinateFromString($br['cell']); + + $objWriter->startElement('xdr:twoCellAnchor'); + + $objWriter->startElement('xdr:from'); + $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($tl['colRow'][0]) - 1); + $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['xOffset'])); + $objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1); + $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['yOffset'])); + $objWriter->endElement(); + $objWriter->startElement('xdr:to'); + $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($br['colRow'][0]) - 1); + $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['xOffset'])); + $objWriter->writeElement('xdr:row', $br['colRow'][1] - 1); + $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['yOffset'])); + $objWriter->endElement(); + + $objWriter->startElement('xdr:graphicFrame'); + $objWriter->writeAttribute('macro', ''); + $objWriter->startElement('xdr:nvGraphicFramePr'); + $objWriter->startElement('xdr:cNvPr'); + $objWriter->writeAttribute('name', 'Chart '.$pRelationId); + $objWriter->writeAttribute('id', 1025 * $pRelationId); + $objWriter->endElement(); + $objWriter->startElement('xdr:cNvGraphicFramePr'); + $objWriter->startElement('a:graphicFrameLocks'); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('xdr:xfrm'); + $objWriter->startElement('a:off'); + $objWriter->writeAttribute('x', '0'); + $objWriter->writeAttribute('y', '0'); + $objWriter->endElement(); + $objWriter->startElement('a:ext'); + $objWriter->writeAttribute('cx', '0'); + $objWriter->writeAttribute('cy', '0'); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('a:graphic'); + $objWriter->startElement('a:graphicData'); + $objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); + $objWriter->startElement('c:chart'); + $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); + $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + $objWriter->writeAttribute('r:id', 'rId'.$pRelationId); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + $objWriter->startElement('xdr:clientData'); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write drawings to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet_BaseDrawing $pDrawing + * @param int $pRelationId + * @throws PHPExcel_Writer_Exception + */ + public function writeDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet_BaseDrawing $pDrawing = null, $pRelationId = -1) + { + if ($pRelationId >= 0) { + // xdr:oneCellAnchor + $objWriter->startElement('xdr:oneCellAnchor'); + // Image location + $aCoordinates = PHPExcel_Cell::coordinateFromString($pDrawing->getCoordinates()); + $aCoordinates[0] = PHPExcel_Cell::columnIndexFromString($aCoordinates[0]); + + // xdr:from + $objWriter->startElement('xdr:from'); + $objWriter->writeElement('xdr:col', $aCoordinates[0] - 1); + $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetX())); + $objWriter->writeElement('xdr:row', $aCoordinates[1] - 1); + $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetY())); + $objWriter->endElement(); + + // xdr:ext + $objWriter->startElement('xdr:ext'); + $objWriter->writeAttribute('cx', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getWidth())); + $objWriter->writeAttribute('cy', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getHeight())); + $objWriter->endElement(); + + // xdr:pic + $objWriter->startElement('xdr:pic'); + + // xdr:nvPicPr + $objWriter->startElement('xdr:nvPicPr'); + + // xdr:cNvPr + $objWriter->startElement('xdr:cNvPr'); + $objWriter->writeAttribute('id', $pRelationId); + $objWriter->writeAttribute('name', $pDrawing->getName()); + $objWriter->writeAttribute('descr', $pDrawing->getDescription()); + $objWriter->endElement(); + + // xdr:cNvPicPr + $objWriter->startElement('xdr:cNvPicPr'); + + // a:picLocks + $objWriter->startElement('a:picLocks'); + $objWriter->writeAttribute('noChangeAspect', '1'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // xdr:blipFill + $objWriter->startElement('xdr:blipFill'); + + // a:blip + $objWriter->startElement('a:blip'); + $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + $objWriter->writeAttribute('r:embed', 'rId' . $pRelationId); + $objWriter->endElement(); + + // a:stretch + $objWriter->startElement('a:stretch'); + $objWriter->writeElement('a:fillRect', null); + $objWriter->endElement(); + + $objWriter->endElement(); + + // xdr:spPr + $objWriter->startElement('xdr:spPr'); + + // a:xfrm + $objWriter->startElement('a:xfrm'); + $objWriter->writeAttribute('rot', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getRotation())); + $objWriter->endElement(); + + // a:prstGeom + $objWriter->startElement('a:prstGeom'); + $objWriter->writeAttribute('prst', 'rect'); + + // a:avLst + $objWriter->writeElement('a:avLst', null); + + $objWriter->endElement(); + +// // a:solidFill +// $objWriter->startElement('a:solidFill'); + +// // a:srgbClr +// $objWriter->startElement('a:srgbClr'); +// $objWriter->writeAttribute('val', 'FFFFFF'); + +///* SHADE +// // a:shade +// $objWriter->startElement('a:shade'); +// $objWriter->writeAttribute('val', '85000'); +// $objWriter->endElement(); +//*/ + +// $objWriter->endElement(); + +// $objWriter->endElement(); +/* + // a:ln + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', '88900'); + $objWriter->writeAttribute('cap', 'sq'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', 'FFFFFF'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:miter + $objWriter->startElement('a:miter'); + $objWriter->writeAttribute('lim', '800000'); + $objWriter->endElement(); + + $objWriter->endElement(); +*/ + + if ($pDrawing->getShadow()->getVisible()) { + // a:effectLst + $objWriter->startElement('a:effectLst'); + + // a:outerShdw + $objWriter->startElement('a:outerShdw'); + $objWriter->writeAttribute('blurRad', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius())); + $objWriter->writeAttribute('dist', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance())); + $objWriter->writeAttribute('dir', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getShadow()->getDirection())); + $objWriter->writeAttribute('algn', $pDrawing->getShadow()->getAlignment()); + $objWriter->writeAttribute('rotWithShape', '0'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', $pDrawing->getShadow()->getColor()->getRGB()); + + // a:alpha + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', $pDrawing->getShadow()->getAlpha() * 1000); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + } +/* + + // a:scene3d + $objWriter->startElement('a:scene3d'); + + // a:camera + $objWriter->startElement('a:camera'); + $objWriter->writeAttribute('prst', 'orthographicFront'); + $objWriter->endElement(); + + // a:lightRig + $objWriter->startElement('a:lightRig'); + $objWriter->writeAttribute('rig', 'twoPt'); + $objWriter->writeAttribute('dir', 't'); + + // a:rot + $objWriter->startElement('a:rot'); + $objWriter->writeAttribute('lat', '0'); + $objWriter->writeAttribute('lon', '0'); + $objWriter->writeAttribute('rev', '0'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); +*/ +/* + // a:sp3d + $objWriter->startElement('a:sp3d'); + + // a:bevelT + $objWriter->startElement('a:bevelT'); + $objWriter->writeAttribute('w', '25400'); + $objWriter->writeAttribute('h', '19050'); + $objWriter->endElement(); + + // a:contourClr + $objWriter->startElement('a:contourClr'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', 'FFFFFF'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); +*/ + $objWriter->endElement(); + + $objWriter->endElement(); + + // xdr:clientData + $objWriter->writeElement('xdr:clientData', null); + + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Write VML header/footer images to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeVMLHeaderFooterImages(PHPExcel_Worksheet $pWorksheet = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Header/footer images + $images = $pWorksheet->getHeaderFooter()->getImages(); + + // xml + $objWriter->startElement('xml'); + $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml'); + $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office'); + $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel'); + + // o:shapelayout + $objWriter->startElement('o:shapelayout'); + $objWriter->writeAttribute('v:ext', 'edit'); + + // o:idmap + $objWriter->startElement('o:idmap'); + $objWriter->writeAttribute('v:ext', 'edit'); + $objWriter->writeAttribute('data', '1'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // v:shapetype + $objWriter->startElement('v:shapetype'); + $objWriter->writeAttribute('id', '_x0000_t75'); + $objWriter->writeAttribute('coordsize', '21600,21600'); + $objWriter->writeAttribute('o:spt', '75'); + $objWriter->writeAttribute('o:preferrelative', 't'); + $objWriter->writeAttribute('path', 'm@4@5l@4@11@9@11@9@5xe'); + $objWriter->writeAttribute('filled', 'f'); + $objWriter->writeAttribute('stroked', 'f'); + + // v:stroke + $objWriter->startElement('v:stroke'); + $objWriter->writeAttribute('joinstyle', 'miter'); + $objWriter->endElement(); + + // v:formulas + $objWriter->startElement('v:formulas'); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'if lineDrawn pixelLineWidth 0'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'sum @0 1 0'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'sum 0 0 @1'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @2 1 2'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelWidth'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @3 21600 pixelHeight'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'sum @0 0 1'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @6 1 2'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelWidth'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'sum @8 21600 0'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'prod @7 21600 pixelHeight'); + $objWriter->endElement(); + + // v:f + $objWriter->startElement('v:f'); + $objWriter->writeAttribute('eqn', 'sum @10 21600 0'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // v:path + $objWriter->startElement('v:path'); + $objWriter->writeAttribute('o:extrusionok', 'f'); + $objWriter->writeAttribute('gradientshapeok', 't'); + $objWriter->writeAttribute('o:connecttype', 'rect'); + $objWriter->endElement(); + + // o:lock + $objWriter->startElement('o:lock'); + $objWriter->writeAttribute('v:ext', 'edit'); + $objWriter->writeAttribute('aspectratio', 't'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // Loop through images + foreach ($images as $key => $value) { + $this->writeVMLHeaderFooterImage($objWriter, $key, $value); + } + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write VML comment to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pReference Reference + * @param PHPExcel_Worksheet_HeaderFooterDrawing $pImage Image + * @throws PHPExcel_Writer_Exception + */ + private function writeVMLHeaderFooterImage(PHPExcel_Shared_XMLWriter $objWriter = null, $pReference = '', PHPExcel_Worksheet_HeaderFooterDrawing $pImage = null) + { + // Calculate object id + preg_match('{(\d+)}', md5($pReference), $m); + $id = 1500 + (substr($m[1], 0, 2) * 1); + + // Calculate offset + $width = $pImage->getWidth(); + $height = $pImage->getHeight(); + $marginLeft = $pImage->getOffsetX(); + $marginTop = $pImage->getOffsetY(); + + // v:shape + $objWriter->startElement('v:shape'); + $objWriter->writeAttribute('id', $pReference); + $objWriter->writeAttribute('o:spid', '_x0000_s' . $id); + $objWriter->writeAttribute('type', '#_x0000_t75'); + $objWriter->writeAttribute('style', "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1"); + + // v:imagedata + $objWriter->startElement('v:imagedata'); + $objWriter->writeAttribute('o:relid', 'rId' . $pReference); + $objWriter->writeAttribute('o:title', $pImage->getName()); + $objWriter->endElement(); + + // o:lock + $objWriter->startElement('o:lock'); + $objWriter->writeAttribute('v:ext', 'edit'); + $objWriter->writeAttribute('rotation', 't'); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + + /** + * Get an array of all drawings + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Worksheet_Drawing[] All drawings in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allDrawings(PHPExcel $pPHPExcel = null) + { + // Get an array of all drawings + $aDrawings = array(); + + // Loop through PHPExcel + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + // Loop through images and add to array + $iterator = $pPHPExcel->getSheet($i)->getDrawingCollection()->getIterator(); + while ($iterator->valid()) { + $aDrawings[] = $iterator->current(); + + $iterator->next(); + } + } + + return $aDrawings; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Rels.php b/assets/excel/PHPExcel/Writer/Excel2007/Rels.php new file mode 100644 index 0000000..14ff337 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Rels.php @@ -0,0 +1,424 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Rels + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Rels extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write relationships to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeRelationships(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + + $customPropertyList = $pPHPExcel->getProperties()->getCustomProperties(); + if (!empty($customPropertyList)) { + // Relationship docProps/app.xml + $this->writeRelationship( + $objWriter, + 4, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties', + 'docProps/custom.xml' + ); + + } + + // Relationship docProps/app.xml + $this->writeRelationship( + $objWriter, + 3, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', + 'docProps/app.xml' + ); + + // Relationship docProps/core.xml + $this->writeRelationship( + $objWriter, + 2, + 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', + 'docProps/core.xml' + ); + + // Relationship xl/workbook.xml + $this->writeRelationship( + $objWriter, + 1, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', + 'xl/workbook.xml' + ); + // a custom UI in workbook ? + if ($pPHPExcel->hasRibbon()) { + $this->writeRelationShip( + $objWriter, + 5, + 'http://schemas.microsoft.com/office/2006/relationships/ui/extensibility', + $pPHPExcel->getRibbonXMLData('target') + ); + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write workbook relationships to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeWorkbookRelationships(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + + // Relationship styles.xml + $this->writeRelationship( + $objWriter, + 1, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', + 'styles.xml' + ); + + // Relationship theme/theme1.xml + $this->writeRelationship( + $objWriter, + 2, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', + 'theme/theme1.xml' + ); + + // Relationship sharedStrings.xml + $this->writeRelationship( + $objWriter, + 3, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', + 'sharedStrings.xml' + ); + + // Relationships with sheets + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + $this->writeRelationship( + $objWriter, + ($i + 1 + 3), + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', + 'worksheets/sheet' . ($i + 1) . '.xml' + ); + } + // Relationships for vbaProject if needed + // id : just after the last sheet + if ($pPHPExcel->hasMacros()) { + $this->writeRelationShip( + $objWriter, + ($i + 1 + 3), + 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', + 'vbaProject.bin' + ); + ++$i;//increment i if needed for an another relation + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write worksheet relationships to XML format + * + * Numbering is as follows: + * rId1 - Drawings + * rId_hyperlink_x - Hyperlinks + * + * @param PHPExcel_Worksheet $pWorksheet + * @param int $pWorksheetId + * @param boolean $includeCharts Flag indicating if we should write charts + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeWorksheetRelationships(PHPExcel_Worksheet $pWorksheet = null, $pWorksheetId = 1, $includeCharts = false) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + + // Write drawing relationships? + $d = 0; + if ($includeCharts) { + $charts = $pWorksheet->getChartCollection(); + } else { + $charts = array(); + } + if (($pWorksheet->getDrawingCollection()->count() > 0) || + (count($charts) > 0)) { + $this->writeRelationship( + $objWriter, + ++$d, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', + '../drawings/drawing' . $pWorksheetId . '.xml' + ); + } + + // Write chart relationships? +// $chartCount = 0; +// $charts = $pWorksheet->getChartCollection(); +// echo 'Chart Rels: ' , count($charts) , '<br />'; +// if (count($charts) > 0) { +// foreach ($charts as $chart) { +// $this->writeRelationship( +// $objWriter, +// ++$d, +// 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', +// '../charts/chart' . ++$chartCount . '.xml' +// ); +// } +// } +// + // Write hyperlink relationships? + $i = 1; + foreach ($pWorksheet->getHyperlinkCollection() as $hyperlink) { + if (!$hyperlink->isInternal()) { + $this->writeRelationship( + $objWriter, + '_hyperlink_' . $i, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', + $hyperlink->getUrl(), + 'External' + ); + + ++$i; + } + } + + // Write comments relationship? + $i = 1; + if (count($pWorksheet->getComments()) > 0) { + $this->writeRelationship( + $objWriter, + '_comments_vml' . $i, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', + '../drawings/vmlDrawing' . $pWorksheetId . '.vml' + ); + + $this->writeRelationship( + $objWriter, + '_comments' . $i, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', + '../comments' . $pWorksheetId . '.xml' + ); + } + + // Write header/footer relationship? + $i = 1; + if (count($pWorksheet->getHeaderFooter()->getImages()) > 0) { + $this->writeRelationship( + $objWriter, + '_headerfooter_vml' . $i, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', + '../drawings/vmlDrawingHF' . $pWorksheetId . '.vml' + ); + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write drawing relationships to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @param int &$chartRef Chart ID + * @param boolean $includeCharts Flag indicating if we should write charts + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = false) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + + // Loop through images and write relationships + $i = 1; + $iterator = $pWorksheet->getDrawingCollection()->getIterator(); + while ($iterator->valid()) { + if ($iterator->current() instanceof PHPExcel_Worksheet_Drawing + || $iterator->current() instanceof PHPExcel_Worksheet_MemoryDrawing) { + // Write relationship for image drawing + $this->writeRelationship( + $objWriter, + $i, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', + '../media/' . str_replace(' ', '', $iterator->current()->getIndexedFilename()) + ); + } + + $iterator->next(); + ++$i; + } + + if ($includeCharts) { + // Loop through charts and write relationships + $chartCount = $pWorksheet->getChartCount(); + if ($chartCount > 0) { + for ($c = 0; $c < $chartCount; ++$c) { + $this->writeRelationship( + $objWriter, + $i++, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', + '../charts/chart' . ++$chartRef . '.xml' + ); + } + } + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write header/footer drawing relationships to XML format + * + * @param PHPExcel_Worksheet $pWorksheet + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeHeaderFooterDrawingRelationships(PHPExcel_Worksheet $pWorksheet = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + + // Loop through images and write relationships + foreach ($pWorksheet->getHeaderFooter()->getImages() as $key => $value) { + // Write relationship for image drawing + $this->writeRelationship( + $objWriter, + $key, + 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', + '../media/' . $value->getIndexedFilename() + ); + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write Override content type + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param int $pId Relationship ID. rId will be prepended! + * @param string $pType Relationship type + * @param string $pTarget Relationship target + * @param string $pTargetMode Relationship target mode + * @throws PHPExcel_Writer_Exception + */ + private function writeRelationship(PHPExcel_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '') + { + if ($pType != '' && $pTarget != '') { + // Write relationship + $objWriter->startElement('Relationship'); + $objWriter->writeAttribute('Id', 'rId' . $pId); + $objWriter->writeAttribute('Type', $pType); + $objWriter->writeAttribute('Target', $pTarget); + + if ($pTargetMode != '') { + $objWriter->writeAttribute('TargetMode', $pTargetMode); + } + + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/RelsRibbon.php b/assets/excel/PHPExcel/Writer/Excel2007/RelsRibbon.php new file mode 100644 index 0000000..5a4a9fc --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/RelsRibbon.php @@ -0,0 +1,67 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_RelsRibbon + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_RelsRibbon extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write relationships for additional objects of custom UI (ribbon) + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeRibbonRelationships(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + $localRels = $pPHPExcel->getRibbonBinObjects('names'); + if (is_array($localRels)) { + foreach ($localRels as $aId => $aTarget) { + $objWriter->startElement('Relationship'); + $objWriter->writeAttribute('Id', $aId); + $objWriter->writeAttribute('Type', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'); + $objWriter->writeAttribute('Target', $aTarget); + $objWriter->endElement(); + } + } + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/RelsVBA.php b/assets/excel/PHPExcel/Writer/Excel2007/RelsVBA.php new file mode 100644 index 0000000..bee0e64 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/RelsVBA.php @@ -0,0 +1,63 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_RelsVBA + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_RelsVBA extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write relationships for a signed VBA Project + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeVBARelationships(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Relationships + $objWriter->startElement('Relationships'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + $objWriter->startElement('Relationship'); + $objWriter->writeAttribute('Id', 'rId1'); + $objWriter->writeAttribute('Type', 'http://schemas.microsoft.com/office/2006/relationships/vbaProjectSignature'); + $objWriter->writeAttribute('Target', 'vbaProjectSignature.bin'); + $objWriter->endElement(); + $objWriter->endElement(); + + return $objWriter->getData(); + + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/StringTable.php b/assets/excel/PHPExcel/Writer/Excel2007/StringTable.php new file mode 100644 index 0000000..fccec66 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/StringTable.php @@ -0,0 +1,313 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_StringTable + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_StringTable extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Create worksheet stringtable + * + * @param PHPExcel_Worksheet $pSheet Worksheet + * @param string[] $pExistingTable Existing table to eventually merge with + * @return string[] String table for worksheet + * @throws PHPExcel_Writer_Exception + */ + public function createStringTable($pSheet = null, $pExistingTable = null) + { + if ($pSheet !== null) { + // Create string lookup table + $aStringTable = array(); + $cellCollection = null; + $aFlippedStringTable = null; // For faster lookup + + // Is an existing table given? + if (($pExistingTable !== null) && is_array($pExistingTable)) { + $aStringTable = $pExistingTable; + } + + // Fill index array + $aFlippedStringTable = $this->flipStringTable($aStringTable); + + // Loop through cells + foreach ($pSheet->getCellCollection() as $cellID) { + $cell = $pSheet->getCell($cellID); + $cellValue = $cell->getValue(); + if (!is_object($cellValue) && + ($cellValue !== null) && + $cellValue !== '' && + !isset($aFlippedStringTable[$cellValue]) && + ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_STRING2 || $cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NULL)) { + $aStringTable[] = $cellValue; + $aFlippedStringTable[$cellValue] = true; + } elseif ($cellValue instanceof PHPExcel_RichText && + ($cellValue !== null) && + !isset($aFlippedStringTable[$cellValue->getHashCode()])) { + $aStringTable[] = $cellValue; + $aFlippedStringTable[$cellValue->getHashCode()] = true; + } + } + + return $aStringTable; + } else { + throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed."); + } + } + + /** + * Write string table to XML format + * + * @param string[] $pStringTable + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeStringTable($pStringTable = null) + { + if ($pStringTable !== null) { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // String table + $objWriter->startElement('sst'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); + $objWriter->writeAttribute('uniqueCount', count($pStringTable)); + + // Loop through string table + foreach ($pStringTable as $textElement) { + $objWriter->startElement('si'); + + if (! $textElement instanceof PHPExcel_RichText) { + $textToWrite = PHPExcel_Shared_String::ControlCharacterPHP2OOXML($textElement); + $objWriter->startElement('t'); + if ($textToWrite !== trim($textToWrite)) { + $objWriter->writeAttribute('xml:space', 'preserve'); + } + $objWriter->writeRawData($textToWrite); + $objWriter->endElement(); + } elseif ($textElement instanceof PHPExcel_RichText) { + $this->writeRichText($objWriter, $textElement); + } + + $objWriter->endElement(); + } + + $objWriter->endElement(); + + return $objWriter->getData(); + } else { + throw new PHPExcel_Writer_Exception("Invalid string table array passed."); + } + } + + /** + * Write Rich Text + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_RichText $pRichText Rich text + * @param string $prefix Optional Namespace prefix + * @throws PHPExcel_Writer_Exception + */ + public function writeRichText(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_RichText $pRichText = null, $prefix = null) + { + if ($prefix !== null) { + $prefix .= ':'; + } + + // Loop through rich text elements + $elements = $pRichText->getRichTextElements(); + foreach ($elements as $element) { + // r + $objWriter->startElement($prefix.'r'); + + // rPr + if ($element instanceof PHPExcel_RichText_Run) { + // rPr + $objWriter->startElement($prefix.'rPr'); + + // rFont + $objWriter->startElement($prefix.'rFont'); + $objWriter->writeAttribute('val', $element->getFont()->getName()); + $objWriter->endElement(); + + // Bold + $objWriter->startElement($prefix.'b'); + $objWriter->writeAttribute('val', ($element->getFont()->getBold() ? 'true' : 'false')); + $objWriter->endElement(); + + // Italic + $objWriter->startElement($prefix.'i'); + $objWriter->writeAttribute('val', ($element->getFont()->getItalic() ? 'true' : 'false')); + $objWriter->endElement(); + + // Superscript / subscript + if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) { + $objWriter->startElement($prefix.'vertAlign'); + if ($element->getFont()->getSuperScript()) { + $objWriter->writeAttribute('val', 'superscript'); + } elseif ($element->getFont()->getSubScript()) { + $objWriter->writeAttribute('val', 'subscript'); + } + $objWriter->endElement(); + } + + // Strikethrough + $objWriter->startElement($prefix.'strike'); + $objWriter->writeAttribute('val', ($element->getFont()->getStrikethrough() ? 'true' : 'false')); + $objWriter->endElement(); + + // Color + $objWriter->startElement($prefix.'color'); + $objWriter->writeAttribute('rgb', $element->getFont()->getColor()->getARGB()); + $objWriter->endElement(); + + // Size + $objWriter->startElement($prefix.'sz'); + $objWriter->writeAttribute('val', $element->getFont()->getSize()); + $objWriter->endElement(); + + // Underline + $objWriter->startElement($prefix.'u'); + $objWriter->writeAttribute('val', $element->getFont()->getUnderline()); + $objWriter->endElement(); + + $objWriter->endElement(); + } + + // t + $objWriter->startElement($prefix.'t'); + $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText())); + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + + /** + * Write Rich Text + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string|PHPExcel_RichText $pRichText text string or Rich text + * @param string $prefix Optional Namespace prefix + * @throws PHPExcel_Writer_Exception + */ + public function writeRichTextForCharts(PHPExcel_Shared_XMLWriter $objWriter = null, $pRichText = null, $prefix = null) + { + if (!$pRichText instanceof PHPExcel_RichText) { + $textRun = $pRichText; + $pRichText = new PHPExcel_RichText(); + $pRichText->createTextRun($textRun); + } + + if ($prefix !== null) { + $prefix .= ':'; + } + + // Loop through rich text elements + $elements = $pRichText->getRichTextElements(); + foreach ($elements as $element) { + // r + $objWriter->startElement($prefix.'r'); + + // rPr + $objWriter->startElement($prefix.'rPr'); + + // Bold + $objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 1 : 0)); + // Italic + $objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 1 : 0)); + // Underline + $underlineType = $element->getFont()->getUnderline(); + switch ($underlineType) { + case 'single': + $underlineType = 'sng'; + break; + case 'double': + $underlineType = 'dbl'; + break; + } + $objWriter->writeAttribute('u', $underlineType); + // Strikethrough + $objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike')); + + // rFont + $objWriter->startElement($prefix.'latin'); + $objWriter->writeAttribute('typeface', $element->getFont()->getName()); + $objWriter->endElement(); + + // Superscript / subscript +// if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) { +// $objWriter->startElement($prefix.'vertAlign'); +// if ($element->getFont()->getSuperScript()) { +// $objWriter->writeAttribute('val', 'superscript'); +// } elseif ($element->getFont()->getSubScript()) { +// $objWriter->writeAttribute('val', 'subscript'); +// } +// $objWriter->endElement(); +// } +// + $objWriter->endElement(); + + // t + $objWriter->startElement($prefix.'t'); +// $objWriter->writeAttribute('xml:space', 'preserve'); // Excel2010 accepts, Excel2007 complains + $objWriter->writeRawData(PHPExcel_Shared_String::ControlCharacterPHP2OOXML($element->getText())); + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + + /** + * Flip string table (for index searching) + * + * @param array $stringTable Stringtable + * @return array + */ + public function flipStringTable($stringTable = array()) + { + // Return value + $returnValue = array(); + + // Loop through stringtable and add flipped items to $returnValue + foreach ($stringTable as $key => $value) { + if (! $value instanceof PHPExcel_RichText) { + $returnValue[$value] = $key; + } elseif ($value instanceof PHPExcel_RichText) { + $returnValue[$value->getHashCode()] = $key; + } + } + + return $returnValue; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Style.php b/assets/excel/PHPExcel/Writer/Excel2007/Style.php new file mode 100644 index 0000000..d3f0af7 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Style.php @@ -0,0 +1,696 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Style + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Style extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write styles to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeStyles(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // styleSheet + $objWriter->startElement('styleSheet'); + $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); + + // numFmts + $objWriter->startElement('numFmts'); + $objWriter->writeAttribute('count', $this->getParentWriter()->getNumFmtHashTable()->count()); + + // numFmt + for ($i = 0; $i < $this->getParentWriter()->getNumFmtHashTable()->count(); ++$i) { + $this->writeNumFmt($objWriter, $this->getParentWriter()->getNumFmtHashTable()->getByIndex($i), $i); + } + + $objWriter->endElement(); + + // fonts + $objWriter->startElement('fonts'); + $objWriter->writeAttribute('count', $this->getParentWriter()->getFontHashTable()->count()); + + // font + for ($i = 0; $i < $this->getParentWriter()->getFontHashTable()->count(); ++$i) { + $this->writeFont($objWriter, $this->getParentWriter()->getFontHashTable()->getByIndex($i)); + } + + $objWriter->endElement(); + + // fills + $objWriter->startElement('fills'); + $objWriter->writeAttribute('count', $this->getParentWriter()->getFillHashTable()->count()); + + // fill + for ($i = 0; $i < $this->getParentWriter()->getFillHashTable()->count(); ++$i) { + $this->writeFill($objWriter, $this->getParentWriter()->getFillHashTable()->getByIndex($i)); + } + + $objWriter->endElement(); + + // borders + $objWriter->startElement('borders'); + $objWriter->writeAttribute('count', $this->getParentWriter()->getBordersHashTable()->count()); + + // border + for ($i = 0; $i < $this->getParentWriter()->getBordersHashTable()->count(); ++$i) { + $this->writeBorder($objWriter, $this->getParentWriter()->getBordersHashTable()->getByIndex($i)); + } + + $objWriter->endElement(); + + // cellStyleXfs + $objWriter->startElement('cellStyleXfs'); + $objWriter->writeAttribute('count', 1); + + // xf + $objWriter->startElement('xf'); + $objWriter->writeAttribute('numFmtId', 0); + $objWriter->writeAttribute('fontId', 0); + $objWriter->writeAttribute('fillId', 0); + $objWriter->writeAttribute('borderId', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + + // cellXfs + $objWriter->startElement('cellXfs'); + $objWriter->writeAttribute('count', count($pPHPExcel->getCellXfCollection())); + + // xf + foreach ($pPHPExcel->getCellXfCollection() as $cellXf) { + $this->writeCellStyleXf($objWriter, $cellXf, $pPHPExcel); + } + + $objWriter->endElement(); + + // cellStyles + $objWriter->startElement('cellStyles'); + $objWriter->writeAttribute('count', 1); + + // cellStyle + $objWriter->startElement('cellStyle'); + $objWriter->writeAttribute('name', 'Normal'); + $objWriter->writeAttribute('xfId', 0); + $objWriter->writeAttribute('builtinId', 0); + $objWriter->endElement(); + + $objWriter->endElement(); + + // dxfs + $objWriter->startElement('dxfs'); + $objWriter->writeAttribute('count', $this->getParentWriter()->getStylesConditionalHashTable()->count()); + + // dxf + for ($i = 0; $i < $this->getParentWriter()->getStylesConditionalHashTable()->count(); ++$i) { + $this->writeCellStyleDxf($objWriter, $this->getParentWriter()->getStylesConditionalHashTable()->getByIndex($i)->getStyle()); + } + + $objWriter->endElement(); + + // tableStyles + $objWriter->startElement('tableStyles'); + $objWriter->writeAttribute('defaultTableStyle', 'TableStyleMedium9'); + $objWriter->writeAttribute('defaultPivotStyle', 'PivotTableStyle1'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write Fill + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_Fill $pFill Fill style + * @throws PHPExcel_Writer_Exception + */ + private function writeFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) + { + // Check if this is a pattern type or gradient type + if ($pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR || + $pFill->getFillType() === PHPExcel_Style_Fill::FILL_GRADIENT_PATH) { + // Gradient fill + $this->writeGradientFill($objWriter, $pFill); + } elseif ($pFill->getFillType() !== null) { + // Pattern fill + $this->writePatternFill($objWriter, $pFill); + } + } + + /** + * Write Gradient Fill + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_Fill $pFill Fill style + * @throws PHPExcel_Writer_Exception + */ + private function writeGradientFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) + { + // fill + $objWriter->startElement('fill'); + + // gradientFill + $objWriter->startElement('gradientFill'); + $objWriter->writeAttribute('type', $pFill->getFillType()); + $objWriter->writeAttribute('degree', $pFill->getRotation()); + + // stop + $objWriter->startElement('stop'); + $objWriter->writeAttribute('position', '0'); + + // color + $objWriter->startElement('color'); + $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB()); + $objWriter->endElement(); + + $objWriter->endElement(); + + // stop + $objWriter->startElement('stop'); + $objWriter->writeAttribute('position', '1'); + + // color + $objWriter->startElement('color'); + $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB()); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Pattern Fill + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_Fill $pFill Fill style + * @throws PHPExcel_Writer_Exception + */ + private function writePatternFill(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Fill $pFill = null) + { + // fill + $objWriter->startElement('fill'); + + // patternFill + $objWriter->startElement('patternFill'); + $objWriter->writeAttribute('patternType', $pFill->getFillType()); + + if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) { + // fgColor + if ($pFill->getStartColor()->getARGB()) { + $objWriter->startElement('fgColor'); + $objWriter->writeAttribute('rgb', $pFill->getStartColor()->getARGB()); + $objWriter->endElement(); + } + } + if ($pFill->getFillType() !== PHPExcel_Style_Fill::FILL_NONE) { + // bgColor + if ($pFill->getEndColor()->getARGB()) { + $objWriter->startElement('bgColor'); + $objWriter->writeAttribute('rgb', $pFill->getEndColor()->getARGB()); + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write Font + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_Font $pFont Font style + * @throws PHPExcel_Writer_Exception + */ + private function writeFont(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Font $pFont = null) + { + // font + $objWriter->startElement('font'); + // Weird! The order of these elements actually makes a difference when opening Excel2007 + // files in Excel2003 with the compatibility pack. It's not documented behaviour, + // and makes for a real WTF! + + // Bold. We explicitly write this element also when false (like MS Office Excel 2007 does + // for conditional formatting). Otherwise it will apparently not be picked up in conditional + // formatting style dialog + if ($pFont->getBold() !== null) { + $objWriter->startElement('b'); + $objWriter->writeAttribute('val', $pFont->getBold() ? '1' : '0'); + $objWriter->endElement(); + } + + // Italic + if ($pFont->getItalic() !== null) { + $objWriter->startElement('i'); + $objWriter->writeAttribute('val', $pFont->getItalic() ? '1' : '0'); + $objWriter->endElement(); + } + + // Strikethrough + if ($pFont->getStrikethrough() !== null) { + $objWriter->startElement('strike'); + $objWriter->writeAttribute('val', $pFont->getStrikethrough() ? '1' : '0'); + $objWriter->endElement(); + } + + // Underline + if ($pFont->getUnderline() !== null) { + $objWriter->startElement('u'); + $objWriter->writeAttribute('val', $pFont->getUnderline()); + $objWriter->endElement(); + } + + // Superscript / subscript + if ($pFont->getSuperScript() === true || $pFont->getSubScript() === true) { + $objWriter->startElement('vertAlign'); + if ($pFont->getSuperScript() === true) { + $objWriter->writeAttribute('val', 'superscript'); + } elseif ($pFont->getSubScript() === true) { + $objWriter->writeAttribute('val', 'subscript'); + } + $objWriter->endElement(); + } + + // Size + if ($pFont->getSize() !== null) { + $objWriter->startElement('sz'); + $objWriter->writeAttribute('val', $pFont->getSize()); + $objWriter->endElement(); + } + + // Foreground color + if ($pFont->getColor()->getARGB() !== null) { + $objWriter->startElement('color'); + $objWriter->writeAttribute('rgb', $pFont->getColor()->getARGB()); + $objWriter->endElement(); + } + + // Name + if ($pFont->getName() !== null) { + $objWriter->startElement('name'); + $objWriter->writeAttribute('val', $pFont->getName()); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + /** + * Write Border + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_Borders $pBorders Borders style + * @throws PHPExcel_Writer_Exception + */ + private function writeBorder(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_Borders $pBorders = null) + { + // Write border + $objWriter->startElement('border'); + // Diagonal? + switch ($pBorders->getDiagonalDirection()) { + case PHPExcel_Style_Borders::DIAGONAL_UP: + $objWriter->writeAttribute('diagonalUp', 'true'); + $objWriter->writeAttribute('diagonalDown', 'false'); + break; + case PHPExcel_Style_Borders::DIAGONAL_DOWN: + $objWriter->writeAttribute('diagonalUp', 'false'); + $objWriter->writeAttribute('diagonalDown', 'true'); + break; + case PHPExcel_Style_Borders::DIAGONAL_BOTH: + $objWriter->writeAttribute('diagonalUp', 'true'); + $objWriter->writeAttribute('diagonalDown', 'true'); + break; + } + + // BorderPr + $this->writeBorderPr($objWriter, 'left', $pBorders->getLeft()); + $this->writeBorderPr($objWriter, 'right', $pBorders->getRight()); + $this->writeBorderPr($objWriter, 'top', $pBorders->getTop()); + $this->writeBorderPr($objWriter, 'bottom', $pBorders->getBottom()); + $this->writeBorderPr($objWriter, 'diagonal', $pBorders->getDiagonal()); + $objWriter->endElement(); + } + + /** + * Write Cell Style Xf + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style $pStyle Style + * @param PHPExcel $pPHPExcel Workbook + * @throws PHPExcel_Writer_Exception + */ + private function writeCellStyleXf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null, PHPExcel $pPHPExcel = null) + { + // xf + $objWriter->startElement('xf'); + $objWriter->writeAttribute('xfId', 0); + $objWriter->writeAttribute('fontId', (int)$this->getParentWriter()->getFontHashTable()->getIndexForHashCode($pStyle->getFont()->getHashCode())); + if ($pStyle->getQuotePrefix()) { + $objWriter->writeAttribute('quotePrefix', 1); + } + + if ($pStyle->getNumberFormat()->getBuiltInFormatCode() === false) { + $objWriter->writeAttribute('numFmtId', (int)($this->getParentWriter()->getNumFmtHashTable()->getIndexForHashCode($pStyle->getNumberFormat()->getHashCode()) + 164)); + } else { + $objWriter->writeAttribute('numFmtId', (int)$pStyle->getNumberFormat()->getBuiltInFormatCode()); + } + + $objWriter->writeAttribute('fillId', (int)$this->getParentWriter()->getFillHashTable()->getIndexForHashCode($pStyle->getFill()->getHashCode())); + $objWriter->writeAttribute('borderId', (int)$this->getParentWriter()->getBordersHashTable()->getIndexForHashCode($pStyle->getBorders()->getHashCode())); + + // Apply styles? + $objWriter->writeAttribute('applyFont', ($pPHPExcel->getDefaultStyle()->getFont()->getHashCode() != $pStyle->getFont()->getHashCode()) ? '1' : '0'); + $objWriter->writeAttribute('applyNumberFormat', ($pPHPExcel->getDefaultStyle()->getNumberFormat()->getHashCode() != $pStyle->getNumberFormat()->getHashCode()) ? '1' : '0'); + $objWriter->writeAttribute('applyFill', ($pPHPExcel->getDefaultStyle()->getFill()->getHashCode() != $pStyle->getFill()->getHashCode()) ? '1' : '0'); + $objWriter->writeAttribute('applyBorder', ($pPHPExcel->getDefaultStyle()->getBorders()->getHashCode() != $pStyle->getBorders()->getHashCode()) ? '1' : '0'); + $objWriter->writeAttribute('applyAlignment', ($pPHPExcel->getDefaultStyle()->getAlignment()->getHashCode() != $pStyle->getAlignment()->getHashCode()) ? '1' : '0'); + if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { + $objWriter->writeAttribute('applyProtection', 'true'); + } + + // alignment + $objWriter->startElement('alignment'); + $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal()); + $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical()); + + $textRotation = 0; + if ($pStyle->getAlignment()->getTextRotation() >= 0) { + $textRotation = $pStyle->getAlignment()->getTextRotation(); + } elseif ($pStyle->getAlignment()->getTextRotation() < 0) { + $textRotation = 90 - $pStyle->getAlignment()->getTextRotation(); + } + $objWriter->writeAttribute('textRotation', $textRotation); + + $objWriter->writeAttribute('wrapText', ($pStyle->getAlignment()->getWrapText() ? 'true' : 'false')); + $objWriter->writeAttribute('shrinkToFit', ($pStyle->getAlignment()->getShrinkToFit() ? 'true' : 'false')); + + if ($pStyle->getAlignment()->getIndent() > 0) { + $objWriter->writeAttribute('indent', $pStyle->getAlignment()->getIndent()); + } + if ($pStyle->getAlignment()->getReadorder() > 0) { + $objWriter->writeAttribute('readingOrder', $pStyle->getAlignment()->getReadorder()); + } + $objWriter->endElement(); + + // protection + if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT || $pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { + $objWriter->startElement('protection'); + if ($pStyle->getProtection()->getLocked() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { + $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); + } + if ($pStyle->getProtection()->getHidden() != PHPExcel_Style_Protection::PROTECTION_INHERIT) { + $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); + } + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + /** + * Write Cell Style Dxf + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style $pStyle Style + * @throws PHPExcel_Writer_Exception + */ + private function writeCellStyleDxf(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style $pStyle = null) + { + // dxf + $objWriter->startElement('dxf'); + + // font + $this->writeFont($objWriter, $pStyle->getFont()); + + // numFmt + $this->writeNumFmt($objWriter, $pStyle->getNumberFormat()); + + // fill + $this->writeFill($objWriter, $pStyle->getFill()); + + // alignment + $objWriter->startElement('alignment'); + if ($pStyle->getAlignment()->getHorizontal() !== null) { + $objWriter->writeAttribute('horizontal', $pStyle->getAlignment()->getHorizontal()); + } + if ($pStyle->getAlignment()->getVertical() !== null) { + $objWriter->writeAttribute('vertical', $pStyle->getAlignment()->getVertical()); + } + + if ($pStyle->getAlignment()->getTextRotation() !== null) { + $textRotation = 0; + if ($pStyle->getAlignment()->getTextRotation() >= 0) { + $textRotation = $pStyle->getAlignment()->getTextRotation(); + } elseif ($pStyle->getAlignment()->getTextRotation() < 0) { + $textRotation = 90 - $pStyle->getAlignment()->getTextRotation(); + } + $objWriter->writeAttribute('textRotation', $textRotation); + } + $objWriter->endElement(); + + // border + $this->writeBorder($objWriter, $pStyle->getBorders()); + + // protection + if (($pStyle->getProtection()->getLocked() !== null) || ($pStyle->getProtection()->getHidden() !== null)) { + if ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT || + $pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT) { + $objWriter->startElement('protection'); + if (($pStyle->getProtection()->getLocked() !== null) && + ($pStyle->getProtection()->getLocked() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) { + $objWriter->writeAttribute('locked', ($pStyle->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); + } + if (($pStyle->getProtection()->getHidden() !== null) && + ($pStyle->getProtection()->getHidden() !== PHPExcel_Style_Protection::PROTECTION_INHERIT)) { + $objWriter->writeAttribute('hidden', ($pStyle->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED ? 'true' : 'false')); + } + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + } + + /** + * Write BorderPr + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pName Element name + * @param PHPExcel_Style_Border $pBorder Border style + * @throws PHPExcel_Writer_Exception + */ + private function writeBorderPr(PHPExcel_Shared_XMLWriter $objWriter = null, $pName = 'left', PHPExcel_Style_Border $pBorder = null) + { + // Write BorderPr + if ($pBorder->getBorderStyle() != PHPExcel_Style_Border::BORDER_NONE) { + $objWriter->startElement($pName); + $objWriter->writeAttribute('style', $pBorder->getBorderStyle()); + + // color + $objWriter->startElement('color'); + $objWriter->writeAttribute('rgb', $pBorder->getColor()->getARGB()); + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + + /** + * Write NumberFormat + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Style_NumberFormat $pNumberFormat Number Format + * @param int $pId Number Format identifier + * @throws PHPExcel_Writer_Exception + */ + private function writeNumFmt(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Style_NumberFormat $pNumberFormat = null, $pId = 0) + { + // Translate formatcode + $formatCode = $pNumberFormat->getFormatCode(); + + // numFmt + if ($formatCode !== null) { + $objWriter->startElement('numFmt'); + $objWriter->writeAttribute('numFmtId', ($pId + 164)); + $objWriter->writeAttribute('formatCode', $formatCode); + $objWriter->endElement(); + } + } + + /** + * Get an array of all styles + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style[] All styles in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allStyles(PHPExcel $pPHPExcel = null) + { + return $pPHPExcel->getCellXfCollection(); + } + + /** + * Get an array of all conditional styles + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style_Conditional[] All conditional styles in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allConditionalStyles(PHPExcel $pPHPExcel = null) + { + // Get an array of all styles + $aStyles = array(); + + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + foreach ($pPHPExcel->getSheet($i)->getConditionalStylesCollection() as $conditionalStyles) { + foreach ($conditionalStyles as $conditionalStyle) { + $aStyles[] = $conditionalStyle; + } + } + } + + return $aStyles; + } + + /** + * Get an array of all fills + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style_Fill[] All fills in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allFills(PHPExcel $pPHPExcel = null) + { + // Get an array of unique fills + $aFills = array(); + + // Two first fills are predefined + $fill0 = new PHPExcel_Style_Fill(); + $fill0->setFillType(PHPExcel_Style_Fill::FILL_NONE); + $aFills[] = $fill0; + + $fill1 = new PHPExcel_Style_Fill(); + $fill1->setFillType(PHPExcel_Style_Fill::FILL_PATTERN_GRAY125); + $aFills[] = $fill1; + // The remaining fills + $aStyles = $this->allStyles($pPHPExcel); + foreach ($aStyles as $style) { + if (!array_key_exists($style->getFill()->getHashCode(), $aFills)) { + $aFills[ $style->getFill()->getHashCode() ] = $style->getFill(); + } + } + + return $aFills; + } + + /** + * Get an array of all fonts + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style_Font[] All fonts in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allFonts(PHPExcel $pPHPExcel = null) + { + // Get an array of unique fonts + $aFonts = array(); + $aStyles = $this->allStyles($pPHPExcel); + + foreach ($aStyles as $style) { + if (!array_key_exists($style->getFont()->getHashCode(), $aFonts)) { + $aFonts[ $style->getFont()->getHashCode() ] = $style->getFont(); + } + } + + return $aFonts; + } + + /** + * Get an array of all borders + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style_Borders[] All borders in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allBorders(PHPExcel $pPHPExcel = null) + { + // Get an array of unique borders + $aBorders = array(); + $aStyles = $this->allStyles($pPHPExcel); + + foreach ($aStyles as $style) { + if (!array_key_exists($style->getBorders()->getHashCode(), $aBorders)) { + $aBorders[ $style->getBorders()->getHashCode() ] = $style->getBorders(); + } + } + + return $aBorders; + } + + /** + * Get an array of all number formats + * + * @param PHPExcel $pPHPExcel + * @return PHPExcel_Style_NumberFormat[] All number formats in PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function allNumberFormats(PHPExcel $pPHPExcel = null) + { + // Get an array of unique number formats + $aNumFmts = array(); + $aStyles = $this->allStyles($pPHPExcel); + + foreach ($aStyles as $style) { + if ($style->getNumberFormat()->getBuiltInFormatCode() === false && !array_key_exists($style->getNumberFormat()->getHashCode(), $aNumFmts)) { + $aNumFmts[ $style->getNumberFormat()->getHashCode() ] = $style->getNumberFormat(); + } + } + + return $aNumFmts; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Theme.php b/assets/excel/PHPExcel/Writer/Excel2007/Theme.php new file mode 100644 index 0000000..223e402 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Theme.php @@ -0,0 +1,869 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Writer_Excel2007_Theme + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Writer_Excel2007_Theme extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Map of Major fonts to write + * @static array of string + * + */ + private static $majorFonts = array( + 'Jpan' => 'MS Pゴシック', + 'Hang' => '맑은 고딕', + 'Hans' => '宋体', + 'Hant' => '新細明體', + 'Arab' => 'Times New Roman', + 'Hebr' => 'Times New Roman', + 'Thai' => 'Tahoma', + 'Ethi' => 'Nyala', + 'Beng' => 'Vrinda', + 'Gujr' => 'Shruti', + 'Khmr' => 'MoolBoran', + 'Knda' => 'Tunga', + 'Guru' => 'Raavi', + 'Cans' => 'Euphemia', + 'Cher' => 'Plantagenet Cherokee', + 'Yiii' => 'Microsoft Yi Baiti', + 'Tibt' => 'Microsoft Himalaya', + 'Thaa' => 'MV Boli', + 'Deva' => 'Mangal', + 'Telu' => 'Gautami', + 'Taml' => 'Latha', + 'Syrc' => 'Estrangelo Edessa', + 'Orya' => 'Kalinga', + 'Mlym' => 'Kartika', + 'Laoo' => 'DokChampa', + 'Sinh' => 'Iskoola Pota', + 'Mong' => 'Mongolian Baiti', + 'Viet' => 'Times New Roman', + 'Uigh' => 'Microsoft Uighur', + 'Geor' => 'Sylfaen', + ); + + /** + * Map of Minor fonts to write + * @static array of string + * + */ + private static $minorFonts = array( + 'Jpan' => 'MS Pゴシック', + 'Hang' => '맑은 고딕', + 'Hans' => '宋体', + 'Hant' => '新細明體', + 'Arab' => 'Arial', + 'Hebr' => 'Arial', + 'Thai' => 'Tahoma', + 'Ethi' => 'Nyala', + 'Beng' => 'Vrinda', + 'Gujr' => 'Shruti', + 'Khmr' => 'DaunPenh', + 'Knda' => 'Tunga', + 'Guru' => 'Raavi', + 'Cans' => 'Euphemia', + 'Cher' => 'Plantagenet Cherokee', + 'Yiii' => 'Microsoft Yi Baiti', + 'Tibt' => 'Microsoft Himalaya', + 'Thaa' => 'MV Boli', + 'Deva' => 'Mangal', + 'Telu' => 'Gautami', + 'Taml' => 'Latha', + 'Syrc' => 'Estrangelo Edessa', + 'Orya' => 'Kalinga', + 'Mlym' => 'Kartika', + 'Laoo' => 'DokChampa', + 'Sinh' => 'Iskoola Pota', + 'Mong' => 'Mongolian Baiti', + 'Viet' => 'Arial', + 'Uigh' => 'Microsoft Uighur', + 'Geor' => 'Sylfaen', + ); + + /** + * Map of core colours + * @static array of string + * + */ + private static $colourScheme = array( + 'dk2' => '1F497D', + 'lt2' => 'EEECE1', + 'accent1' => '4F81BD', + 'accent2' => 'C0504D', + 'accent3' => '9BBB59', + 'accent4' => '8064A2', + 'accent5' => '4BACC6', + 'accent6' => 'F79646', + 'hlink' => '0000FF', + 'folHlink' => '800080', + ); + + /** + * Write theme to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeTheme(PHPExcel $pPHPExcel = null) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // a:theme + $objWriter->startElement('a:theme'); + $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); + $objWriter->writeAttribute('name', 'Office Theme'); + + // a:themeElements + $objWriter->startElement('a:themeElements'); + + // a:clrScheme + $objWriter->startElement('a:clrScheme'); + $objWriter->writeAttribute('name', 'Office'); + + // a:dk1 + $objWriter->startElement('a:dk1'); + + // a:sysClr + $objWriter->startElement('a:sysClr'); + $objWriter->writeAttribute('val', 'windowText'); + $objWriter->writeAttribute('lastClr', '000000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:lt1 + $objWriter->startElement('a:lt1'); + + // a:sysClr + $objWriter->startElement('a:sysClr'); + $objWriter->writeAttribute('val', 'window'); + $objWriter->writeAttribute('lastClr', 'FFFFFF'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:dk2 + $this->writeColourScheme($objWriter); + + $objWriter->endElement(); + + // a:fontScheme + $objWriter->startElement('a:fontScheme'); + $objWriter->writeAttribute('name', 'Office'); + + // a:majorFont + $objWriter->startElement('a:majorFont'); + $this->writeFonts($objWriter, 'Cambria', self::$majorFonts); + $objWriter->endElement(); + + // a:minorFont + $objWriter->startElement('a:minorFont'); + $this->writeFonts($objWriter, 'Calibri', self::$minorFonts); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:fmtScheme + $objWriter->startElement('a:fmtScheme'); + $objWriter->writeAttribute('name', 'Office'); + + // a:fillStyleLst + $objWriter->startElement('a:fillStyleLst'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gradFill + $objWriter->startElement('a:gradFill'); + $objWriter->writeAttribute('rotWithShape', '1'); + + // a:gsLst + $objWriter->startElement('a:gsLst'); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '0'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '50000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '300000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '35000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '37000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '300000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '100000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '15000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '350000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:lin + $objWriter->startElement('a:lin'); + $objWriter->writeAttribute('ang', '16200000'); + $objWriter->writeAttribute('scaled', '1'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gradFill + $objWriter->startElement('a:gradFill'); + $objWriter->writeAttribute('rotWithShape', '1'); + + // a:gsLst + $objWriter->startElement('a:gsLst'); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '0'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '51000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '130000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '80000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '93000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '130000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '100000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '94000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '135000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:lin + $objWriter->startElement('a:lin'); + $objWriter->writeAttribute('ang', '16200000'); + $objWriter->writeAttribute('scaled', '0'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:lnStyleLst + $objWriter->startElement('a:lnStyleLst'); + + // a:ln + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', '9525'); + $objWriter->writeAttribute('cap', 'flat'); + $objWriter->writeAttribute('cmpd', 'sng'); + $objWriter->writeAttribute('algn', 'ctr'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '95000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '105000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:prstDash + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', 'solid'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:ln + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', '25400'); + $objWriter->writeAttribute('cap', 'flat'); + $objWriter->writeAttribute('cmpd', 'sng'); + $objWriter->writeAttribute('algn', 'ctr'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:prstDash + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', 'solid'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:ln + $objWriter->startElement('a:ln'); + $objWriter->writeAttribute('w', '38100'); + $objWriter->writeAttribute('cap', 'flat'); + $objWriter->writeAttribute('cmpd', 'sng'); + $objWriter->writeAttribute('algn', 'ctr'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:prstDash + $objWriter->startElement('a:prstDash'); + $objWriter->writeAttribute('val', 'solid'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + + + // a:effectStyleLst + $objWriter->startElement('a:effectStyleLst'); + + // a:effectStyle + $objWriter->startElement('a:effectStyle'); + + // a:effectLst + $objWriter->startElement('a:effectLst'); + + // a:outerShdw + $objWriter->startElement('a:outerShdw'); + $objWriter->writeAttribute('blurRad', '40000'); + $objWriter->writeAttribute('dist', '20000'); + $objWriter->writeAttribute('dir', '5400000'); + $objWriter->writeAttribute('rotWithShape', '0'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', '000000'); + + // a:alpha + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', '38000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:effectStyle + $objWriter->startElement('a:effectStyle'); + + // a:effectLst + $objWriter->startElement('a:effectLst'); + + // a:outerShdw + $objWriter->startElement('a:outerShdw'); + $objWriter->writeAttribute('blurRad', '40000'); + $objWriter->writeAttribute('dist', '23000'); + $objWriter->writeAttribute('dir', '5400000'); + $objWriter->writeAttribute('rotWithShape', '0'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', '000000'); + + // a:alpha + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', '35000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:effectStyle + $objWriter->startElement('a:effectStyle'); + + // a:effectLst + $objWriter->startElement('a:effectLst'); + + // a:outerShdw + $objWriter->startElement('a:outerShdw'); + $objWriter->writeAttribute('blurRad', '40000'); + $objWriter->writeAttribute('dist', '23000'); + $objWriter->writeAttribute('dir', '5400000'); + $objWriter->writeAttribute('rotWithShape', '0'); + + // a:srgbClr + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', '000000'); + + // a:alpha + $objWriter->startElement('a:alpha'); + $objWriter->writeAttribute('val', '35000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:scene3d + $objWriter->startElement('a:scene3d'); + + // a:camera + $objWriter->startElement('a:camera'); + $objWriter->writeAttribute('prst', 'orthographicFront'); + + // a:rot + $objWriter->startElement('a:rot'); + $objWriter->writeAttribute('lat', '0'); + $objWriter->writeAttribute('lon', '0'); + $objWriter->writeAttribute('rev', '0'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:lightRig + $objWriter->startElement('a:lightRig'); + $objWriter->writeAttribute('rig', 'threePt'); + $objWriter->writeAttribute('dir', 't'); + + // a:rot + $objWriter->startElement('a:rot'); + $objWriter->writeAttribute('lat', '0'); + $objWriter->writeAttribute('lon', '0'); + $objWriter->writeAttribute('rev', '1200000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:sp3d + $objWriter->startElement('a:sp3d'); + + // a:bevelT + $objWriter->startElement('a:bevelT'); + $objWriter->writeAttribute('w', '63500'); + $objWriter->writeAttribute('h', '25400'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:bgFillStyleLst + $objWriter->startElement('a:bgFillStyleLst'); + + // a:solidFill + $objWriter->startElement('a:solidFill'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gradFill + $objWriter->startElement('a:gradFill'); + $objWriter->writeAttribute('rotWithShape', '1'); + + // a:gsLst + $objWriter->startElement('a:gsLst'); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '0'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '40000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '350000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '40000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '45000'); + $objWriter->endElement(); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '99000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '350000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '100000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '20000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '255000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:path + $objWriter->startElement('a:path'); + $objWriter->writeAttribute('path', 'circle'); + + // a:fillToRect + $objWriter->startElement('a:fillToRect'); + $objWriter->writeAttribute('l', '50000'); + $objWriter->writeAttribute('t', '-80000'); + $objWriter->writeAttribute('r', '50000'); + $objWriter->writeAttribute('b', '180000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gradFill + $objWriter->startElement('a:gradFill'); + $objWriter->writeAttribute('rotWithShape', '1'); + + // a:gsLst + $objWriter->startElement('a:gsLst'); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '0'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:tint + $objWriter->startElement('a:tint'); + $objWriter->writeAttribute('val', '80000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '300000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:gs + $objWriter->startElement('a:gs'); + $objWriter->writeAttribute('pos', '100000'); + + // a:schemeClr + $objWriter->startElement('a:schemeClr'); + $objWriter->writeAttribute('val', 'phClr'); + + // a:shade + $objWriter->startElement('a:shade'); + $objWriter->writeAttribute('val', '30000'); + $objWriter->endElement(); + + // a:satMod + $objWriter->startElement('a:satMod'); + $objWriter->writeAttribute('val', '200000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:path + $objWriter->startElement('a:path'); + $objWriter->writeAttribute('path', 'circle'); + + // a:fillToRect + $objWriter->startElement('a:fillToRect'); + $objWriter->writeAttribute('l', '50000'); + $objWriter->writeAttribute('t', '50000'); + $objWriter->writeAttribute('r', '50000'); + $objWriter->writeAttribute('b', '50000'); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + // a:objectDefaults + $objWriter->writeElement('a:objectDefaults', null); + + // a:extraClrSchemeLst + $objWriter->writeElement('a:extraClrSchemeLst', null); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write fonts to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter + * @param string $latinFont + * @param array of string $fontSet + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + private function writeFonts($objWriter, $latinFont, $fontSet) + { + // a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $latinFont); + $objWriter->endElement(); + + // a:ea + $objWriter->startElement('a:ea'); + $objWriter->writeAttribute('typeface', ''); + $objWriter->endElement(); + + // a:cs + $objWriter->startElement('a:cs'); + $objWriter->writeAttribute('typeface', ''); + $objWriter->endElement(); + + foreach ($fontSet as $fontScript => $typeface) { + $objWriter->startElement('a:font'); + $objWriter->writeAttribute('script', $fontScript); + $objWriter->writeAttribute('typeface', $typeface); + $objWriter->endElement(); + } + } + + /** + * Write colour scheme to XML format + * + * @param PHPExcel_Shared_XMLWriter $objWriter + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + private function writeColourScheme($objWriter) + { + foreach (self::$colourScheme as $colourName => $colourValue) { + $objWriter->startElement('a:'.$colourName); + + $objWriter->startElement('a:srgbClr'); + $objWriter->writeAttribute('val', $colourValue); + $objWriter->endElement(); + + $objWriter->endElement(); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Workbook.php b/assets/excel/PHPExcel/Writer/Excel2007/Workbook.php new file mode 100644 index 0000000..87c877e --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Workbook.php @@ -0,0 +1,448 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_Workbook + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel2007_Workbook extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write workbook to XML format + * + * @param PHPExcel $pPHPExcel + * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeWorkbook(PHPExcel $pPHPExcel = null, $recalcRequired = false) + { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // workbook + $objWriter->startElement('workbook'); + $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); + $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + + // fileVersion + $this->writeFileVersion($objWriter); + + // workbookPr + $this->writeWorkbookPr($objWriter); + + // workbookProtection + $this->writeWorkbookProtection($objWriter, $pPHPExcel); + + // bookViews + if ($this->getParentWriter()->getOffice2003Compatibility() === false) { + $this->writeBookViews($objWriter, $pPHPExcel); + } + + // sheets + $this->writeSheets($objWriter, $pPHPExcel); + + // definedNames + $this->writeDefinedNames($objWriter, $pPHPExcel); + + // calcPr + $this->writeCalcPr($objWriter, $recalcRequired); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } + + /** + * Write file version + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @throws PHPExcel_Writer_Exception + */ + private function writeFileVersion(PHPExcel_Shared_XMLWriter $objWriter = null) + { + $objWriter->startElement('fileVersion'); + $objWriter->writeAttribute('appName', 'xl'); + $objWriter->writeAttribute('lastEdited', '4'); + $objWriter->writeAttribute('lowestEdited', '4'); + $objWriter->writeAttribute('rupBuild', '4505'); + $objWriter->endElement(); + } + + /** + * Write WorkbookPr + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @throws PHPExcel_Writer_Exception + */ + private function writeWorkbookPr(PHPExcel_Shared_XMLWriter $objWriter = null) + { + $objWriter->startElement('workbookPr'); + + if (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) { + $objWriter->writeAttribute('date1904', '1'); + } + + $objWriter->writeAttribute('codeName', 'ThisWorkbook'); + + $objWriter->endElement(); + } + + /** + * Write BookViews + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel $pPHPExcel + * @throws PHPExcel_Writer_Exception + */ + private function writeBookViews(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) + { + // bookViews + $objWriter->startElement('bookViews'); + + // workbookView + $objWriter->startElement('workbookView'); + + $objWriter->writeAttribute('activeTab', $pPHPExcel->getActiveSheetIndex()); + $objWriter->writeAttribute('autoFilterDateGrouping', '1'); + $objWriter->writeAttribute('firstSheet', '0'); + $objWriter->writeAttribute('minimized', '0'); + $objWriter->writeAttribute('showHorizontalScroll', '1'); + $objWriter->writeAttribute('showSheetTabs', '1'); + $objWriter->writeAttribute('showVerticalScroll', '1'); + $objWriter->writeAttribute('tabRatio', '600'); + $objWriter->writeAttribute('visibility', 'visible'); + + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write WorkbookProtection + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel $pPHPExcel + * @throws PHPExcel_Writer_Exception + */ + private function writeWorkbookProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) + { + if ($pPHPExcel->getSecurity()->isSecurityEnabled()) { + $objWriter->startElement('workbookProtection'); + $objWriter->writeAttribute('lockRevision', ($pPHPExcel->getSecurity()->getLockRevision() ? 'true' : 'false')); + $objWriter->writeAttribute('lockStructure', ($pPHPExcel->getSecurity()->getLockStructure() ? 'true' : 'false')); + $objWriter->writeAttribute('lockWindows', ($pPHPExcel->getSecurity()->getLockWindows() ? 'true' : 'false')); + + if ($pPHPExcel->getSecurity()->getRevisionsPassword() != '') { + $objWriter->writeAttribute('revisionsPassword', $pPHPExcel->getSecurity()->getRevisionsPassword()); + } + + if ($pPHPExcel->getSecurity()->getWorkbookPassword() != '') { + $objWriter->writeAttribute('workbookPassword', $pPHPExcel->getSecurity()->getWorkbookPassword()); + } + + $objWriter->endElement(); + } + } + + /** + * Write calcPr + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param boolean $recalcRequired Indicate whether formulas should be recalculated before writing + * @throws PHPExcel_Writer_Exception + */ + private function writeCalcPr(PHPExcel_Shared_XMLWriter $objWriter = null, $recalcRequired = true) + { + $objWriter->startElement('calcPr'); + + // Set the calcid to a higher value than Excel itself will use, otherwise Excel will always recalc + // If MS Excel does do a recalc, then users opening a file in MS Excel will be prompted to save on exit + // because the file has changed + $objWriter->writeAttribute('calcId', '999999'); + $objWriter->writeAttribute('calcMode', 'auto'); + // fullCalcOnLoad isn't needed if we've recalculating for the save + $objWriter->writeAttribute('calcCompleted', ($recalcRequired) ? 1 : 0); + $objWriter->writeAttribute('fullCalcOnLoad', ($recalcRequired) ? 0 : 1); + + $objWriter->endElement(); + } + + /** + * Write sheets + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel $pPHPExcel + * @throws PHPExcel_Writer_Exception + */ + private function writeSheets(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) + { + // Write sheets + $objWriter->startElement('sheets'); + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + // sheet + $this->writeSheet( + $objWriter, + $pPHPExcel->getSheet($i)->getTitle(), + ($i + 1), + ($i + 1 + 3), + $pPHPExcel->getSheet($i)->getSheetState() + ); + } + + $objWriter->endElement(); + } + + /** + * Write sheet + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param string $pSheetname Sheet name + * @param int $pSheetId Sheet id + * @param int $pRelId Relationship ID + * @param string $sheetState Sheet state (visible, hidden, veryHidden) + * @throws PHPExcel_Writer_Exception + */ + private function writeSheet(PHPExcel_Shared_XMLWriter $objWriter = null, $pSheetname = '', $pSheetId = 1, $pRelId = 1, $sheetState = 'visible') + { + if ($pSheetname != '') { + // Write sheet + $objWriter->startElement('sheet'); + $objWriter->writeAttribute('name', $pSheetname); + $objWriter->writeAttribute('sheetId', $pSheetId); + if ($sheetState != 'visible' && $sheetState != '') { + $objWriter->writeAttribute('state', $sheetState); + } + $objWriter->writeAttribute('r:id', 'rId' . $pRelId); + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Write Defined Names + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel $pPHPExcel + * @throws PHPExcel_Writer_Exception + */ + private function writeDefinedNames(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel = null) + { + // Write defined names + $objWriter->startElement('definedNames'); + + // Named ranges + if (count($pPHPExcel->getNamedRanges()) > 0) { + // Named ranges + $this->writeNamedRanges($objWriter, $pPHPExcel); + } + + // Other defined names + $sheetCount = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheetCount; ++$i) { + // definedName for autoFilter + $this->writeDefinedNameForAutofilter($objWriter, $pPHPExcel->getSheet($i), $i); + + // definedName for Print_Titles + $this->writeDefinedNameForPrintTitles($objWriter, $pPHPExcel->getSheet($i), $i); + + // definedName for Print_Area + $this->writeDefinedNameForPrintArea($objWriter, $pPHPExcel->getSheet($i), $i); + } + + $objWriter->endElement(); + } + + /** + * Write named ranges + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel $pPHPExcel + * @throws PHPExcel_Writer_Exception + */ + private function writeNamedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel $pPHPExcel) + { + // Loop named ranges + $namedRanges = $pPHPExcel->getNamedRanges(); + foreach ($namedRanges as $namedRange) { + $this->writeDefinedNameForNamedRange($objWriter, $namedRange); + } + } + + /** + * Write Defined Name for named range + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_NamedRange $pNamedRange + * @throws PHPExcel_Writer_Exception + */ + private function writeDefinedNameForNamedRange(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_NamedRange $pNamedRange) + { + // definedName for named range + $objWriter->startElement('definedName'); + $objWriter->writeAttribute('name', $pNamedRange->getName()); + if ($pNamedRange->getLocalOnly()) { + $objWriter->writeAttribute('localSheetId', $pNamedRange->getScope()->getParent()->getIndex($pNamedRange->getScope())); + } + + // Create absolute coordinate and write as raw text + $range = PHPExcel_Cell::splitRange($pNamedRange->getRange()); + for ($i = 0; $i < count($range); $i++) { + $range[$i][0] = '\'' . str_replace("'", "''", $pNamedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteReference($range[$i][0]); + if (isset($range[$i][1])) { + $range[$i][1] = PHPExcel_Cell::absoluteReference($range[$i][1]); + } + } + $range = PHPExcel_Cell::buildRange($range); + + $objWriter->writeRawData($range); + + $objWriter->endElement(); + } + + /** + * Write Defined Name for autoFilter + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet + * @param int $pSheetId + * @throws PHPExcel_Writer_Exception + */ + private function writeDefinedNameForAutofilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) + { + // definedName for autoFilter + $autoFilterRange = $pSheet->getAutoFilter()->getRange(); + if (!empty($autoFilterRange)) { + $objWriter->startElement('definedName'); + $objWriter->writeAttribute('name', '_xlnm._FilterDatabase'); + $objWriter->writeAttribute('localSheetId', $pSheetId); + $objWriter->writeAttribute('hidden', '1'); + + // Create absolute coordinate and write as raw text + $range = PHPExcel_Cell::splitRange($autoFilterRange); + $range = $range[0]; + // Strip any worksheet ref so we can make the cell ref absolute + if (strpos($range[0], '!') !== false) { + list($ws, $range[0]) = explode('!', $range[0]); + } + + $range[0] = PHPExcel_Cell::absoluteCoordinate($range[0]); + $range[1] = PHPExcel_Cell::absoluteCoordinate($range[1]); + $range = implode(':', $range); + + $objWriter->writeRawData('\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . $range); + + $objWriter->endElement(); + } + } + + /** + * Write Defined Name for PrintTitles + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet + * @param int $pSheetId + * @throws PHPExcel_Writer_Exception + */ + private function writeDefinedNameForPrintTitles(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) + { + // definedName for PrintTitles + if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet() || $pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { + $objWriter->startElement('definedName'); + $objWriter->writeAttribute('name', '_xlnm.Print_Titles'); + $objWriter->writeAttribute('localSheetId', $pSheetId); + + // Setting string + $settingString = ''; + + // Columns to repeat + if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { + $repeat = $pSheet->getPageSetup()->getColumnsToRepeatAtLeft(); + + $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1]; + } + + // Rows to repeat + if ($pSheet->getPageSetup()->isRowsToRepeatAtTopSet()) { + if ($pSheet->getPageSetup()->isColumnsToRepeatAtLeftSet()) { + $settingString .= ','; + } + + $repeat = $pSheet->getPageSetup()->getRowsToRepeatAtTop(); + + $settingString .= '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!$' . $repeat[0] . ':$' . $repeat[1]; + } + + $objWriter->writeRawData($settingString); + + $objWriter->endElement(); + } + } + + /** + * Write Defined Name for PrintTitles + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet + * @param int $pSheetId + * @throws PHPExcel_Writer_Exception + */ + private function writeDefinedNameForPrintArea(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pSheetId = 0) + { + // definedName for PrintArea + if ($pSheet->getPageSetup()->isPrintAreaSet()) { + $objWriter->startElement('definedName'); + $objWriter->writeAttribute('name', '_xlnm.Print_Area'); + $objWriter->writeAttribute('localSheetId', $pSheetId); + + // Setting string + $settingString = ''; + + // Print area + $printArea = PHPExcel_Cell::splitRange($pSheet->getPageSetup()->getPrintArea()); + + $chunks = array(); + foreach ($printArea as $printAreaRect) { + $printAreaRect[0] = PHPExcel_Cell::absoluteReference($printAreaRect[0]); + $printAreaRect[1] = PHPExcel_Cell::absoluteReference($printAreaRect[1]); + $chunks[] = '\'' . str_replace("'", "''", $pSheet->getTitle()) . '\'!' . implode(':', $printAreaRect); + } + + $objWriter->writeRawData(implode(',', $chunks)); + + $objWriter->endElement(); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/Worksheet.php b/assets/excel/PHPExcel/Writer/Excel2007/Worksheet.php new file mode 100644 index 0000000..c211403 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/Worksheet.php @@ -0,0 +1,1219 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Writer_Excel2007_Worksheet + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Write worksheet to XML format + * + * @param PHPExcel_Worksheet $pSheet + * @param string[] $pStringTable + * @param boolean $includeCharts Flag indicating if we should write charts + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeWorksheet($pSheet = null, $pStringTable = null, $includeCharts = false) + { + if (!is_null($pSheet)) { + // Create XML writer + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8', 'yes'); + + // Worksheet + $objWriter->startElement('worksheet'); + $objWriter->writeAttribute('xml:space', 'preserve'); + $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'); + $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); + + // sheetPr + $this->writeSheetPr($objWriter, $pSheet); + + // Dimension + $this->writeDimension($objWriter, $pSheet); + + // sheetViews + $this->writeSheetViews($objWriter, $pSheet); + + // sheetFormatPr + $this->writeSheetFormatPr($objWriter, $pSheet); + + // cols + $this->writeCols($objWriter, $pSheet); + + // sheetData + $this->writeSheetData($objWriter, $pSheet, $pStringTable); + + // sheetProtection + $this->writeSheetProtection($objWriter, $pSheet); + + // protectedRanges + $this->writeProtectedRanges($objWriter, $pSheet); + + // autoFilter + $this->writeAutoFilter($objWriter, $pSheet); + + // mergeCells + $this->writeMergeCells($objWriter, $pSheet); + + // conditionalFormatting + $this->writeConditionalFormatting($objWriter, $pSheet); + + // dataValidations + $this->writeDataValidations($objWriter, $pSheet); + + // hyperlinks + $this->writeHyperlinks($objWriter, $pSheet); + + // Print options + $this->writePrintOptions($objWriter, $pSheet); + + // Page margins + $this->writePageMargins($objWriter, $pSheet); + + // Page setup + $this->writePageSetup($objWriter, $pSheet); + + // Header / footer + $this->writeHeaderFooter($objWriter, $pSheet); + + // Breaks + $this->writeBreaks($objWriter, $pSheet); + + // Drawings and/or Charts + $this->writeDrawings($objWriter, $pSheet, $includeCharts); + + // LegacyDrawing + $this->writeLegacyDrawing($objWriter, $pSheet); + + // LegacyDrawingHF + $this->writeLegacyDrawingHF($objWriter, $pSheet); + + $objWriter->endElement(); + + // Return + return $objWriter->getData(); + } else { + throw new PHPExcel_Writer_Exception("Invalid PHPExcel_Worksheet object passed."); + } + } + + /** + * Write SheetPr + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeSheetPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // sheetPr + $objWriter->startElement('sheetPr'); + //$objWriter->writeAttribute('codeName', $pSheet->getTitle()); + if ($pSheet->getParent()->hasMacros()) {//if the workbook have macros, we need to have codeName for the sheet + if ($pSheet->hasCodeName()==false) { + $pSheet->setCodeName($pSheet->getTitle()); + } + $objWriter->writeAttribute('codeName', $pSheet->getCodeName()); + } + $autoFilterRange = $pSheet->getAutoFilter()->getRange(); + if (!empty($autoFilterRange)) { + $objWriter->writeAttribute('filterMode', 1); + $pSheet->getAutoFilter()->showHideRows(); + } + + // tabColor + if ($pSheet->isTabColorSet()) { + $objWriter->startElement('tabColor'); + $objWriter->writeAttribute('rgb', $pSheet->getTabColor()->getARGB()); + $objWriter->endElement(); + } + + // outlinePr + $objWriter->startElement('outlinePr'); + $objWriter->writeAttribute('summaryBelow', ($pSheet->getShowSummaryBelow() ? '1' : '0')); + $objWriter->writeAttribute('summaryRight', ($pSheet->getShowSummaryRight() ? '1' : '0')); + $objWriter->endElement(); + + // pageSetUpPr + if ($pSheet->getPageSetup()->getFitToPage()) { + $objWriter->startElement('pageSetUpPr'); + $objWriter->writeAttribute('fitToPage', '1'); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + /** + * Write Dimension + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeDimension(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // dimension + $objWriter->startElement('dimension'); + $objWriter->writeAttribute('ref', $pSheet->calculateWorksheetDimension()); + $objWriter->endElement(); + } + + /** + * Write SheetViews + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeSheetViews(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // sheetViews + $objWriter->startElement('sheetViews'); + + // Sheet selected? + $sheetSelected = false; + if ($this->getParentWriter()->getPHPExcel()->getIndex($pSheet) == $this->getParentWriter()->getPHPExcel()->getActiveSheetIndex()) { + $sheetSelected = true; + } + + // sheetView + $objWriter->startElement('sheetView'); + $objWriter->writeAttribute('tabSelected', $sheetSelected ? '1' : '0'); + $objWriter->writeAttribute('workbookViewId', '0'); + + // Zoom scales + if ($pSheet->getSheetView()->getZoomScale() != 100) { + $objWriter->writeAttribute('zoomScale', $pSheet->getSheetView()->getZoomScale()); + } + if ($pSheet->getSheetView()->getZoomScaleNormal() != 100) { + $objWriter->writeAttribute('zoomScaleNormal', $pSheet->getSheetView()->getZoomScaleNormal()); + } + + // View Layout Type + if ($pSheet->getSheetView()->getView() !== PHPExcel_Worksheet_SheetView::SHEETVIEW_NORMAL) { + $objWriter->writeAttribute('view', $pSheet->getSheetView()->getView()); + } + + // Gridlines + if ($pSheet->getShowGridlines()) { + $objWriter->writeAttribute('showGridLines', 'true'); + } else { + $objWriter->writeAttribute('showGridLines', 'false'); + } + + // Row and column headers + if ($pSheet->getShowRowColHeaders()) { + $objWriter->writeAttribute('showRowColHeaders', '1'); + } else { + $objWriter->writeAttribute('showRowColHeaders', '0'); + } + + // Right-to-left + if ($pSheet->getRightToLeft()) { + $objWriter->writeAttribute('rightToLeft', 'true'); + } + + $activeCell = $pSheet->getActiveCell(); + + // Pane + $pane = ''; + $topLeftCell = $pSheet->getFreezePane(); + if (($topLeftCell != '') && ($topLeftCell != 'A1')) { + $activeCell = empty($activeCell) ? $topLeftCell : $activeCell; + // Calculate freeze coordinates + $xSplit = $ySplit = 0; + + list($xSplit, $ySplit) = PHPExcel_Cell::coordinateFromString($topLeftCell); + $xSplit = PHPExcel_Cell::columnIndexFromString($xSplit); + + // pane + $pane = 'topRight'; + $objWriter->startElement('pane'); + if ($xSplit > 1) { + $objWriter->writeAttribute('xSplit', $xSplit - 1); + } + if ($ySplit > 1) { + $objWriter->writeAttribute('ySplit', $ySplit - 1); + $pane = ($xSplit > 1) ? 'bottomRight' : 'bottomLeft'; + } + $objWriter->writeAttribute('topLeftCell', $topLeftCell); + $objWriter->writeAttribute('activePane', $pane); + $objWriter->writeAttribute('state', 'frozen'); + $objWriter->endElement(); + + if (($xSplit > 1) && ($ySplit > 1)) { + // Write additional selections if more than two panes (ie both an X and a Y split) + $objWriter->startElement('selection'); + $objWriter->writeAttribute('pane', 'topRight'); + $objWriter->endElement(); + $objWriter->startElement('selection'); + $objWriter->writeAttribute('pane', 'bottomLeft'); + $objWriter->endElement(); + } + } + + // Selection +// if ($pane != '') { + // Only need to write selection element if we have a split pane + // We cheat a little by over-riding the active cell selection, setting it to the split cell + $objWriter->startElement('selection'); + if ($pane != '') { + $objWriter->writeAttribute('pane', $pane); + } + $objWriter->writeAttribute('activeCell', $activeCell); + $objWriter->writeAttribute('sqref', $activeCell); + $objWriter->endElement(); +// } + + $objWriter->endElement(); + + $objWriter->endElement(); + } + + /** + * Write SheetFormatPr + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeSheetFormatPr(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // sheetFormatPr + $objWriter->startElement('sheetFormatPr'); + + // Default row height + if ($pSheet->getDefaultRowDimension()->getRowHeight() >= 0) { + $objWriter->writeAttribute('customHeight', 'true'); + $objWriter->writeAttribute('defaultRowHeight', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultRowDimension()->getRowHeight())); + } else { + $objWriter->writeAttribute('defaultRowHeight', '14.4'); + } + + // Set Zero Height row + if ((string)$pSheet->getDefaultRowDimension()->getZeroHeight() == '1' || + strtolower((string)$pSheet->getDefaultRowDimension()->getZeroHeight()) == 'true') { + $objWriter->writeAttribute('zeroHeight', '1'); + } + + // Default column width + if ($pSheet->getDefaultColumnDimension()->getWidth() >= 0) { + $objWriter->writeAttribute('defaultColWidth', PHPExcel_Shared_String::FormatNumber($pSheet->getDefaultColumnDimension()->getWidth())); + } + + // Outline level - row + $outlineLevelRow = 0; + foreach ($pSheet->getRowDimensions() as $dimension) { + if ($dimension->getOutlineLevel() > $outlineLevelRow) { + $outlineLevelRow = $dimension->getOutlineLevel(); + } + } + $objWriter->writeAttribute('outlineLevelRow', (int)$outlineLevelRow); + + // Outline level - column + $outlineLevelCol = 0; + foreach ($pSheet->getColumnDimensions() as $dimension) { + if ($dimension->getOutlineLevel() > $outlineLevelCol) { + $outlineLevelCol = $dimension->getOutlineLevel(); + } + } + $objWriter->writeAttribute('outlineLevelCol', (int)$outlineLevelCol); + + $objWriter->endElement(); + } + + /** + * Write Cols + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeCols(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // cols + if (count($pSheet->getColumnDimensions()) > 0) { + $objWriter->startElement('cols'); + + $pSheet->calculateColumnWidths(); + + // Loop through column dimensions + foreach ($pSheet->getColumnDimensions() as $colDimension) { + // col + $objWriter->startElement('col'); + $objWriter->writeAttribute('min', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex())); + $objWriter->writeAttribute('max', PHPExcel_Cell::columnIndexFromString($colDimension->getColumnIndex())); + + if ($colDimension->getWidth() < 0) { + // No width set, apply default of 10 + $objWriter->writeAttribute('width', '9.10'); + } else { + // Width set + $objWriter->writeAttribute('width', PHPExcel_Shared_String::FormatNumber($colDimension->getWidth())); + } + + // Column visibility + if ($colDimension->getVisible() == false) { + $objWriter->writeAttribute('hidden', 'true'); + } + + // Auto size? + if ($colDimension->getAutoSize()) { + $objWriter->writeAttribute('bestFit', 'true'); + } + + // Custom width? + if ($colDimension->getWidth() != $pSheet->getDefaultColumnDimension()->getWidth()) { + $objWriter->writeAttribute('customWidth', 'true'); + } + + // Collapsed + if ($colDimension->getCollapsed() == true) { + $objWriter->writeAttribute('collapsed', 'true'); + } + + // Outline level + if ($colDimension->getOutlineLevel() > 0) { + $objWriter->writeAttribute('outlineLevel', $colDimension->getOutlineLevel()); + } + + // Style + $objWriter->writeAttribute('style', $colDimension->getXfIndex()); + + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write SheetProtection + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeSheetProtection(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // sheetProtection + $objWriter->startElement('sheetProtection'); + + if ($pSheet->getProtection()->getPassword() != '') { + $objWriter->writeAttribute('password', $pSheet->getProtection()->getPassword()); + } + + $objWriter->writeAttribute('sheet', ($pSheet->getProtection()->getSheet() ? 'true' : 'false')); + $objWriter->writeAttribute('objects', ($pSheet->getProtection()->getObjects() ? 'true' : 'false')); + $objWriter->writeAttribute('scenarios', ($pSheet->getProtection()->getScenarios() ? 'true' : 'false')); + $objWriter->writeAttribute('formatCells', ($pSheet->getProtection()->getFormatCells() ? 'true' : 'false')); + $objWriter->writeAttribute('formatColumns', ($pSheet->getProtection()->getFormatColumns() ? 'true' : 'false')); + $objWriter->writeAttribute('formatRows', ($pSheet->getProtection()->getFormatRows() ? 'true' : 'false')); + $objWriter->writeAttribute('insertColumns', ($pSheet->getProtection()->getInsertColumns() ? 'true' : 'false')); + $objWriter->writeAttribute('insertRows', ($pSheet->getProtection()->getInsertRows() ? 'true' : 'false')); + $objWriter->writeAttribute('insertHyperlinks', ($pSheet->getProtection()->getInsertHyperlinks() ? 'true' : 'false')); + $objWriter->writeAttribute('deleteColumns', ($pSheet->getProtection()->getDeleteColumns() ? 'true' : 'false')); + $objWriter->writeAttribute('deleteRows', ($pSheet->getProtection()->getDeleteRows() ? 'true' : 'false')); + $objWriter->writeAttribute('selectLockedCells', ($pSheet->getProtection()->getSelectLockedCells() ? 'true' : 'false')); + $objWriter->writeAttribute('sort', ($pSheet->getProtection()->getSort() ? 'true' : 'false')); + $objWriter->writeAttribute('autoFilter', ($pSheet->getProtection()->getAutoFilter() ? 'true' : 'false')); + $objWriter->writeAttribute('pivotTables', ($pSheet->getProtection()->getPivotTables() ? 'true' : 'false')); + $objWriter->writeAttribute('selectUnlockedCells', ($pSheet->getProtection()->getSelectUnlockedCells() ? 'true' : 'false')); + $objWriter->endElement(); + } + + /** + * Write ConditionalFormatting + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeConditionalFormatting(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // Conditional id + $id = 1; + + // Loop through styles in the current worksheet + foreach ($pSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) { + foreach ($conditionalStyles as $conditional) { + // WHY was this again? + // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) == '') { + // continue; + // } + if ($conditional->getConditionType() != PHPExcel_Style_Conditional::CONDITION_NONE) { + // conditionalFormatting + $objWriter->startElement('conditionalFormatting'); + $objWriter->writeAttribute('sqref', $cellCoordinate); + + // cfRule + $objWriter->startElement('cfRule'); + $objWriter->writeAttribute('type', $conditional->getConditionType()); + $objWriter->writeAttribute('dxfId', $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode())); + $objWriter->writeAttribute('priority', $id++); + + if (($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT) + && $conditional->getOperatorType() != PHPExcel_Style_Conditional::OPERATOR_NONE) { + $objWriter->writeAttribute('operator', $conditional->getOperatorType()); + } + + if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + && !is_null($conditional->getText())) { + $objWriter->writeAttribute('text', $conditional->getText()); + } + + if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_CONTAINSTEXT + && !is_null($conditional->getText())) { + $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . ')))'); + } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BEGINSWITH + && !is_null($conditional->getText())) { + $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"'); + } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_ENDSWITH + && !is_null($conditional->getText())) { + $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',' . strlen($conditional->getText()) . ')="' . $conditional->getText() . '"'); + } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + && $conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_NOTCONTAINS + && !is_null($conditional->getText())) { + $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $conditional->getText() . '",' . $cellCoordinate . '))'); + } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS + || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CONTAINSTEXT + || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) { + foreach ($conditional->getConditions() as $formula) { + // Formula + $objWriter->writeElement('formula', $formula); + } + } + + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + } + } + + /** + * Write DataValidations + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeDataValidations(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // Datavalidation collection + $dataValidationCollection = $pSheet->getDataValidationCollection(); + + // Write data validations? + if (!empty($dataValidationCollection)) { + $objWriter->startElement('dataValidations'); + $objWriter->writeAttribute('count', count($dataValidationCollection)); + + foreach ($dataValidationCollection as $coordinate => $dv) { + $objWriter->startElement('dataValidation'); + + if ($dv->getType() != '') { + $objWriter->writeAttribute('type', $dv->getType()); + } + + if ($dv->getErrorStyle() != '') { + $objWriter->writeAttribute('errorStyle', $dv->getErrorStyle()); + } + + if ($dv->getOperator() != '') { + $objWriter->writeAttribute('operator', $dv->getOperator()); + } + + $objWriter->writeAttribute('allowBlank', ($dv->getAllowBlank() ? '1' : '0')); + $objWriter->writeAttribute('showDropDown', (!$dv->getShowDropDown() ? '1' : '0')); + $objWriter->writeAttribute('showInputMessage', ($dv->getShowInputMessage() ? '1' : '0')); + $objWriter->writeAttribute('showErrorMessage', ($dv->getShowErrorMessage() ? '1' : '0')); + + if ($dv->getErrorTitle() !== '') { + $objWriter->writeAttribute('errorTitle', $dv->getErrorTitle()); + } + if ($dv->getError() !== '') { + $objWriter->writeAttribute('error', $dv->getError()); + } + if ($dv->getPromptTitle() !== '') { + $objWriter->writeAttribute('promptTitle', $dv->getPromptTitle()); + } + if ($dv->getPrompt() !== '') { + $objWriter->writeAttribute('prompt', $dv->getPrompt()); + } + + $objWriter->writeAttribute('sqref', $coordinate); + + if ($dv->getFormula1() !== '') { + $objWriter->writeElement('formula1', $dv->getFormula1()); + } + if ($dv->getFormula2() !== '') { + $objWriter->writeElement('formula2', $dv->getFormula2()); + } + + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write Hyperlinks + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeHyperlinks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // Hyperlink collection + $hyperlinkCollection = $pSheet->getHyperlinkCollection(); + + // Relation ID + $relationId = 1; + + // Write hyperlinks? + if (!empty($hyperlinkCollection)) { + $objWriter->startElement('hyperlinks'); + + foreach ($hyperlinkCollection as $coordinate => $hyperlink) { + $objWriter->startElement('hyperlink'); + + $objWriter->writeAttribute('ref', $coordinate); + if (!$hyperlink->isInternal()) { + $objWriter->writeAttribute('r:id', 'rId_hyperlink_' . $relationId); + ++$relationId; + } else { + $objWriter->writeAttribute('location', str_replace('sheet://', '', $hyperlink->getUrl())); + } + + if ($hyperlink->getTooltip() != '') { + $objWriter->writeAttribute('tooltip', $hyperlink->getTooltip()); + } + + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write ProtectedRanges + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeProtectedRanges(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + if (count($pSheet->getProtectedCells()) > 0) { + // protectedRanges + $objWriter->startElement('protectedRanges'); + + // Loop protectedRanges + foreach ($pSheet->getProtectedCells() as $protectedCell => $passwordHash) { + // protectedRange + $objWriter->startElement('protectedRange'); + $objWriter->writeAttribute('name', 'p' . md5($protectedCell)); + $objWriter->writeAttribute('sqref', $protectedCell); + if (!empty($passwordHash)) { + $objWriter->writeAttribute('password', $passwordHash); + } + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write MergeCells + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeMergeCells(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + if (count($pSheet->getMergeCells()) > 0) { + // mergeCells + $objWriter->startElement('mergeCells'); + + // Loop mergeCells + foreach ($pSheet->getMergeCells() as $mergeCell) { + // mergeCell + $objWriter->startElement('mergeCell'); + $objWriter->writeAttribute('ref', $mergeCell); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write PrintOptions + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writePrintOptions(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // printOptions + $objWriter->startElement('printOptions'); + + $objWriter->writeAttribute('gridLines', ($pSheet->getPrintGridlines() ? 'true': 'false')); + $objWriter->writeAttribute('gridLinesSet', 'true'); + + if ($pSheet->getPageSetup()->getHorizontalCentered()) { + $objWriter->writeAttribute('horizontalCentered', 'true'); + } + + if ($pSheet->getPageSetup()->getVerticalCentered()) { + $objWriter->writeAttribute('verticalCentered', 'true'); + } + + $objWriter->endElement(); + } + + /** + * Write PageMargins + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writePageMargins(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // pageMargins + $objWriter->startElement('pageMargins'); + $objWriter->writeAttribute('left', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft())); + $objWriter->writeAttribute('right', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight())); + $objWriter->writeAttribute('top', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop())); + $objWriter->writeAttribute('bottom', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom())); + $objWriter->writeAttribute('header', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getHeader())); + $objWriter->writeAttribute('footer', PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getFooter())); + $objWriter->endElement(); + } + + /** + * Write AutoFilter + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeAutoFilter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + $autoFilterRange = $pSheet->getAutoFilter()->getRange(); + if (!empty($autoFilterRange)) { + // autoFilter + $objWriter->startElement('autoFilter'); + + // Strip any worksheet reference from the filter coordinates + $range = PHPExcel_Cell::splitRange($autoFilterRange); + $range = $range[0]; + // Strip any worksheet ref + if (strpos($range[0], '!') !== false) { + list($ws, $range[0]) = explode('!', $range[0]); + } + $range = implode(':', $range); + + $objWriter->writeAttribute('ref', str_replace('$', '', $range)); + + $columns = $pSheet->getAutoFilter()->getColumns(); + if (count($columns > 0)) { + foreach ($columns as $columnID => $column) { + $rules = $column->getRules(); + if (count($rules) > 0) { + $objWriter->startElement('filterColumn'); + $objWriter->writeAttribute('colId', $pSheet->getAutoFilter()->getColumnOffset($columnID)); + + $objWriter->startElement($column->getFilterType()); + if ($column->getJoin() == PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_JOIN_AND) { + $objWriter->writeAttribute('and', 1); + } + + foreach ($rules as $rule) { + if (($column->getFilterType() === PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER) && + ($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) && + ($rule->getValue() === '')) { + // Filter rule for Blanks + $objWriter->writeAttribute('blank', 1); + } elseif ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER) { + // Dynamic Filter Rule + $objWriter->writeAttribute('type', $rule->getGrouping()); + $val = $column->getAttribute('val'); + if ($val !== null) { + $objWriter->writeAttribute('val', $val); + } + $maxVal = $column->getAttribute('maxVal'); + if ($maxVal !== null) { + $objWriter->writeAttribute('maxVal', $maxVal); + } + } elseif ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER) { + // Top 10 Filter Rule + $objWriter->writeAttribute('val', $rule->getValue()); + $objWriter->writeAttribute('percent', (($rule->getOperator() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT) ? '1' : '0')); + $objWriter->writeAttribute('top', (($rule->getGrouping() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP) ? '1': '0')); + } else { + // Filter, DateGroupItem or CustomFilter + $objWriter->startElement($rule->getRuleType()); + + if ($rule->getOperator() !== PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL) { + $objWriter->writeAttribute('operator', $rule->getOperator()); + } + if ($rule->getRuleType() === PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP) { + // Date Group filters + foreach ($rule->getValue() as $key => $value) { + if ($value > '') { + $objWriter->writeAttribute($key, $value); + } + } + $objWriter->writeAttribute('dateTimeGrouping', $rule->getGrouping()); + } else { + $objWriter->writeAttribute('val', $rule->getValue()); + } + + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + + $objWriter->endElement(); + } + } + } + $objWriter->endElement(); + } + } + + /** + * Write PageSetup + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writePageSetup(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // pageSetup + $objWriter->startElement('pageSetup'); + $objWriter->writeAttribute('paperSize', $pSheet->getPageSetup()->getPaperSize()); + $objWriter->writeAttribute('orientation', $pSheet->getPageSetup()->getOrientation()); + + if (!is_null($pSheet->getPageSetup()->getScale())) { + $objWriter->writeAttribute('scale', $pSheet->getPageSetup()->getScale()); + } + if (!is_null($pSheet->getPageSetup()->getFitToHeight())) { + $objWriter->writeAttribute('fitToHeight', $pSheet->getPageSetup()->getFitToHeight()); + } else { + $objWriter->writeAttribute('fitToHeight', '0'); + } + if (!is_null($pSheet->getPageSetup()->getFitToWidth())) { + $objWriter->writeAttribute('fitToWidth', $pSheet->getPageSetup()->getFitToWidth()); + } else { + $objWriter->writeAttribute('fitToWidth', '0'); + } + if (!is_null($pSheet->getPageSetup()->getFirstPageNumber())) { + $objWriter->writeAttribute('firstPageNumber', $pSheet->getPageSetup()->getFirstPageNumber()); + $objWriter->writeAttribute('useFirstPageNumber', '1'); + } + + $objWriter->endElement(); + } + + /** + * Write Header / Footer + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeHeaderFooter(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // headerFooter + $objWriter->startElement('headerFooter'); + $objWriter->writeAttribute('differentOddEven', ($pSheet->getHeaderFooter()->getDifferentOddEven() ? 'true' : 'false')); + $objWriter->writeAttribute('differentFirst', ($pSheet->getHeaderFooter()->getDifferentFirst() ? 'true' : 'false')); + $objWriter->writeAttribute('scaleWithDoc', ($pSheet->getHeaderFooter()->getScaleWithDocument() ? 'true' : 'false')); + $objWriter->writeAttribute('alignWithMargins', ($pSheet->getHeaderFooter()->getAlignWithMargins() ? 'true' : 'false')); + + $objWriter->writeElement('oddHeader', $pSheet->getHeaderFooter()->getOddHeader()); + $objWriter->writeElement('oddFooter', $pSheet->getHeaderFooter()->getOddFooter()); + $objWriter->writeElement('evenHeader', $pSheet->getHeaderFooter()->getEvenHeader()); + $objWriter->writeElement('evenFooter', $pSheet->getHeaderFooter()->getEvenFooter()); + $objWriter->writeElement('firstHeader', $pSheet->getHeaderFooter()->getFirstHeader()); + $objWriter->writeElement('firstFooter', $pSheet->getHeaderFooter()->getFirstFooter()); + $objWriter->endElement(); + } + + /** + * Write Breaks + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeBreaks(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // Get row and column breaks + $aRowBreaks = array(); + $aColumnBreaks = array(); + foreach ($pSheet->getBreaks() as $cell => $breakType) { + if ($breakType == PHPExcel_Worksheet::BREAK_ROW) { + $aRowBreaks[] = $cell; + } elseif ($breakType == PHPExcel_Worksheet::BREAK_COLUMN) { + $aColumnBreaks[] = $cell; + } + } + + // rowBreaks + if (!empty($aRowBreaks)) { + $objWriter->startElement('rowBreaks'); + $objWriter->writeAttribute('count', count($aRowBreaks)); + $objWriter->writeAttribute('manualBreakCount', count($aRowBreaks)); + + foreach ($aRowBreaks as $cell) { + $coords = PHPExcel_Cell::coordinateFromString($cell); + + $objWriter->startElement('brk'); + $objWriter->writeAttribute('id', $coords[1]); + $objWriter->writeAttribute('man', '1'); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + + // Second, write column breaks + if (!empty($aColumnBreaks)) { + $objWriter->startElement('colBreaks'); + $objWriter->writeAttribute('count', count($aColumnBreaks)); + $objWriter->writeAttribute('manualBreakCount', count($aColumnBreaks)); + + foreach ($aColumnBreaks as $cell) { + $coords = PHPExcel_Cell::coordinateFromString($cell); + + $objWriter->startElement('brk'); + $objWriter->writeAttribute('id', PHPExcel_Cell::columnIndexFromString($coords[0]) - 1); + $objWriter->writeAttribute('man', '1'); + $objWriter->endElement(); + } + + $objWriter->endElement(); + } + } + + /** + * Write SheetData + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @param string[] $pStringTable String table + * @throws PHPExcel_Writer_Exception + */ + private function writeSheetData(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pStringTable = null) + { + if (is_array($pStringTable)) { + // Flipped stringtable, for faster index searching + $aFlippedStringTable = $this->getParentWriter()->getWriterPart('stringtable')->flipStringTable($pStringTable); + + // sheetData + $objWriter->startElement('sheetData'); + + // Get column count + $colCount = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn()); + + // Highest row number + $highestRow = $pSheet->getHighestRow(); + + // Loop through cells + $cellsByRow = array(); + foreach ($pSheet->getCellCollection() as $cellID) { + $cellAddress = PHPExcel_Cell::coordinateFromString($cellID); + $cellsByRow[$cellAddress[1]][] = $cellID; + } + + $currentRow = 0; + while ($currentRow++ < $highestRow) { + // Get row dimension + $rowDimension = $pSheet->getRowDimension($currentRow); + + // Write current row? + $writeCurrentRow = isset($cellsByRow[$currentRow]) || $rowDimension->getRowHeight() >= 0 || $rowDimension->getVisible() == false || $rowDimension->getCollapsed() == true || $rowDimension->getOutlineLevel() > 0 || $rowDimension->getXfIndex() !== null; + + if ($writeCurrentRow) { + // Start a new row + $objWriter->startElement('row'); + $objWriter->writeAttribute('r', $currentRow); + $objWriter->writeAttribute('spans', '1:' . $colCount); + + // Row dimensions + if ($rowDimension->getRowHeight() >= 0) { + $objWriter->writeAttribute('customHeight', '1'); + $objWriter->writeAttribute('ht', PHPExcel_Shared_String::FormatNumber($rowDimension->getRowHeight())); + } + + // Row visibility + if ($rowDimension->getVisible() == false) { + $objWriter->writeAttribute('hidden', 'true'); + } + + // Collapsed + if ($rowDimension->getCollapsed() == true) { + $objWriter->writeAttribute('collapsed', 'true'); + } + + // Outline level + if ($rowDimension->getOutlineLevel() > 0) { + $objWriter->writeAttribute('outlineLevel', $rowDimension->getOutlineLevel()); + } + + // Style + if ($rowDimension->getXfIndex() !== null) { + $objWriter->writeAttribute('s', $rowDimension->getXfIndex()); + $objWriter->writeAttribute('customFormat', '1'); + } + + // Write cells + if (isset($cellsByRow[$currentRow])) { + foreach ($cellsByRow[$currentRow] as $cellAddress) { + // Write cell + $this->writeCell($objWriter, $pSheet, $cellAddress, $pStringTable, $aFlippedStringTable); + } + } + + // End row + $objWriter->endElement(); + } + } + + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Write Cell + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @param PHPExcel_Cell $pCellAddress Cell Address + * @param string[] $pStringTable String table + * @param string[] $pFlippedStringTable String table (flipped), for faster index searching + * @throws PHPExcel_Writer_Exception + */ + private function writeCell(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $pCellAddress = null, $pStringTable = null, $pFlippedStringTable = null) + { + if (is_array($pStringTable) && is_array($pFlippedStringTable)) { + // Cell + $pCell = $pSheet->getCell($pCellAddress); + $objWriter->startElement('c'); + $objWriter->writeAttribute('r', $pCellAddress); + + // Sheet styles + if ($pCell->getXfIndex() != '') { + $objWriter->writeAttribute('s', $pCell->getXfIndex()); + } + + // If cell value is supplied, write cell value + $cellValue = $pCell->getValue(); + if (is_object($cellValue) || $cellValue !== '') { + // Map type + $mappedType = $pCell->getDataType(); + + // Write data type depending on its type + switch (strtolower($mappedType)) { + case 'inlinestr': // Inline string + case 's': // String + case 'b': // Boolean + $objWriter->writeAttribute('t', $mappedType); + break; + case 'f': // Formula + $calculatedValue = ($this->getParentWriter()->getPreCalculateFormulas()) ? + $pCell->getCalculatedValue() : + $cellValue; + if (is_string($calculatedValue)) { + $objWriter->writeAttribute('t', 'str'); + } + break; + case 'e': // Error + $objWriter->writeAttribute('t', $mappedType); + } + + // Write data depending on its type + switch (strtolower($mappedType)) { + case 'inlinestr': // Inline string + if (! $cellValue instanceof PHPExcel_RichText) { + $objWriter->writeElement('t', PHPExcel_Shared_String::ControlCharacterPHP2OOXML(htmlspecialchars($cellValue))); + } elseif ($cellValue instanceof PHPExcel_RichText) { + $objWriter->startElement('is'); + $this->getParentWriter()->getWriterPart('stringtable')->writeRichText($objWriter, $cellValue); + $objWriter->endElement(); + } + + break; + case 's': // String + if (! $cellValue instanceof PHPExcel_RichText) { + if (isset($pFlippedStringTable[$cellValue])) { + $objWriter->writeElement('v', $pFlippedStringTable[$cellValue]); + } + } elseif ($cellValue instanceof PHPExcel_RichText) { + $objWriter->writeElement('v', $pFlippedStringTable[$cellValue->getHashCode()]); + } + + break; + case 'f': // Formula + $attributes = $pCell->getFormulaAttributes(); + if ($attributes['t'] == 'array') { + $objWriter->startElement('f'); + $objWriter->writeAttribute('t', 'array'); + $objWriter->writeAttribute('ref', $pCellAddress); + $objWriter->writeAttribute('aca', '1'); + $objWriter->writeAttribute('ca', '1'); + $objWriter->text(substr($cellValue, 1)); + $objWriter->endElement(); + } else { + $objWriter->writeElement('f', substr($cellValue, 1)); + } + if ($this->getParentWriter()->getOffice2003Compatibility() === false) { + if ($this->getParentWriter()->getPreCalculateFormulas()) { +// $calculatedValue = $pCell->getCalculatedValue(); + if (!is_array($calculatedValue) && substr($calculatedValue, 0, 1) != '#') { + $objWriter->writeElement('v', PHPExcel_Shared_String::FormatNumber($calculatedValue)); + } else { + $objWriter->writeElement('v', '0'); + } + } else { + $objWriter->writeElement('v', '0'); + } + } + break; + case 'n': // Numeric + // force point as decimal separator in case current locale uses comma + $objWriter->writeElement('v', str_replace(',', '.', $cellValue)); + break; + case 'b': // Boolean + $objWriter->writeElement('v', ($cellValue ? '1' : '0')); + break; + case 'e': // Error + if (substr($cellValue, 0, 1) == '=') { + $objWriter->writeElement('f', substr($cellValue, 1)); + $objWriter->writeElement('v', substr($cellValue, 1)); + } else { + $objWriter->writeElement('v', $cellValue); + } + + break; + } + } + + $objWriter->endElement(); + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Write Drawings + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @param boolean $includeCharts Flag indicating if we should include drawing details for charts + * @throws PHPExcel_Writer_Exception + */ + private function writeDrawings(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null, $includeCharts = false) + { + $chartCount = ($includeCharts) ? $pSheet->getChartCollection()->count() : 0; + // If sheet contains drawings, add the relationships + if (($pSheet->getDrawingCollection()->count() > 0) || + ($chartCount > 0)) { + $objWriter->startElement('drawing'); + $objWriter->writeAttribute('r:id', 'rId1'); + $objWriter->endElement(); + } + } + + /** + * Write LegacyDrawing + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeLegacyDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // If sheet contains comments, add the relationships + if (count($pSheet->getComments()) > 0) { + $objWriter->startElement('legacyDrawing'); + $objWriter->writeAttribute('r:id', 'rId_comments_vml1'); + $objWriter->endElement(); + } + } + + /** + * Write LegacyDrawingHF + * + * @param PHPExcel_Shared_XMLWriter $objWriter XML Writer + * @param PHPExcel_Worksheet $pSheet Worksheet + * @throws PHPExcel_Writer_Exception + */ + private function writeLegacyDrawingHF(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet $pSheet = null) + { + // If sheet contains images, add the relationships + if (count($pSheet->getHeaderFooter()->getImages()) > 0) { + $objWriter->startElement('legacyDrawingHF'); + $objWriter->writeAttribute('r:id', 'rId_headerfooter_vml1'); + $objWriter->endElement(); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel2007/WriterPart.php b/assets/excel/PHPExcel/Writer/Excel2007/WriterPart.php new file mode 100644 index 0000000..806ebe5 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel2007/WriterPart.php @@ -0,0 +1,75 @@ +<?php + +/** + * PHPExcel_Writer_Excel2007_WriterPart + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel2007 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Writer_Excel2007_WriterPart +{ + /** + * Parent IWriter object + * + * @var PHPExcel_Writer_IWriter + */ + private $parentWriter; + + /** + * Set parent IWriter object + * + * @param PHPExcel_Writer_IWriter $pWriter + * @throws PHPExcel_Writer_Exception + */ + public function setParentWriter(PHPExcel_Writer_IWriter $pWriter = null) + { + $this->parentWriter = $pWriter; + } + + /** + * Get parent IWriter object + * + * @return PHPExcel_Writer_IWriter + * @throws PHPExcel_Writer_Exception + */ + public function getParentWriter() + { + if (!is_null($this->parentWriter)) { + return $this->parentWriter; + } else { + throw new PHPExcel_Writer_Exception("No parent PHPExcel_Writer_IWriter assigned."); + } + } + + /** + * Set parent IWriter object + * + * @param PHPExcel_Writer_IWriter $pWriter + * @throws PHPExcel_Writer_Exception + */ + public function __construct(PHPExcel_Writer_IWriter $pWriter = null) + { + if (!is_null($pWriter)) { + $this->parentWriter = $pWriter; + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5.php b/assets/excel/PHPExcel/Writer/Excel5.php new file mode 100644 index 0000000..2dede81 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5.php @@ -0,0 +1,904 @@ +<?php + +/** + * PHPExcel_Writer_Excel5 + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel5 extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * PHPExcel object + * + * @var PHPExcel + */ + private $phpExcel; + + /** + * Total number of shared strings in workbook + * + * @var int + */ + private $strTotal = 0; + + /** + * Number of unique shared strings in workbook + * + * @var int + */ + private $strUnique = 0; + + /** + * Array of unique shared strings in workbook + * + * @var array + */ + private $strTable = array(); + + /** + * Color cache. Mapping between RGB value and color index. + * + * @var array + */ + private $colors; + + /** + * Formula parser + * + * @var PHPExcel_Writer_Excel5_Parser + */ + private $parser; + + /** + * Identifier clusters for drawings. Used in MSODRAWINGGROUP record. + * + * @var array + */ + private $IDCLs; + + /** + * Basic OLE object summary information + * + * @var array + */ + private $summaryInformation; + + /** + * Extended OLE object document summary information + * + * @var array + */ + private $documentSummaryInformation; + + /** + * Create a new PHPExcel_Writer_Excel5 + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + $this->phpExcel = $phpExcel; + + $this->parser = new PHPExcel_Writer_Excel5_Parser(); + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + + // garbage collect + $this->phpExcel->garbageCollect(); + + $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); + $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType(); + PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL); + + // initialize colors array + $this->colors = array(); + + // Initialise workbook writer + $this->writerWorkbook = new PHPExcel_Writer_Excel5_Workbook($this->phpExcel, $this->strTotal, $this->strUnique, $this->strTable, $this->colors, $this->parser); + + // Initialise worksheet writers + $countSheets = $this->phpExcel->getSheetCount(); + for ($i = 0; $i < $countSheets; ++$i) { + $this->writerWorksheets[$i] = new PHPExcel_Writer_Excel5_Worksheet($this->strTotal, $this->strUnique, $this->strTable, $this->colors, $this->parser, $this->preCalculateFormulas, $this->phpExcel->getSheet($i)); + } + + // build Escher objects. Escher objects for workbooks needs to be build before Escher object for workbook. + $this->buildWorksheetEschers(); + $this->buildWorkbookEscher(); + + // add 15 identical cell style Xfs + // for now, we use the first cellXf instead of cellStyleXf + $cellXfCollection = $this->phpExcel->getCellXfCollection(); + for ($i = 0; $i < 15; ++$i) { + $this->writerWorkbook->addXfWriter($cellXfCollection[0], true); + } + + // add all the cell Xfs + foreach ($this->phpExcel->getCellXfCollection() as $style) { + $this->writerWorkbook->addXfWriter($style, false); + } + + // add fonts from rich text eleemnts + for ($i = 0; $i < $countSheets; ++$i) { + foreach ($this->writerWorksheets[$i]->phpSheet->getCellCollection() as $cellID) { + $cell = $this->writerWorksheets[$i]->phpSheet->getCell($cellID); + $cVal = $cell->getValue(); + if ($cVal instanceof PHPExcel_RichText) { + $elements = $cVal->getRichTextElements(); + foreach ($elements as $element) { + if ($element instanceof PHPExcel_RichText_Run) { + $font = $element->getFont(); + $this->writerWorksheets[$i]->fontHashIndex[$font->getHashCode()] = $this->writerWorkbook->addFont($font); + } + } + } + } + } + + // initialize OLE file + $workbookStreamName = 'Workbook'; + $OLE = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs($workbookStreamName)); + + // Write the worksheet streams before the global workbook stream, + // because the byte sizes of these are needed in the global workbook stream + $worksheetSizes = array(); + for ($i = 0; $i < $countSheets; ++$i) { + $this->writerWorksheets[$i]->close(); + $worksheetSizes[] = $this->writerWorksheets[$i]->_datasize; + } + + // add binary data for global workbook stream + $OLE->append($this->writerWorkbook->writeWorkbook($worksheetSizes)); + + // add binary data for sheet streams + for ($i = 0; $i < $countSheets; ++$i) { + $OLE->append($this->writerWorksheets[$i]->getData()); + } + + $this->documentSummaryInformation = $this->writeDocumentSummaryInformation(); + // initialize OLE Document Summary Information + if (isset($this->documentSummaryInformation) && !empty($this->documentSummaryInformation)) { + $OLE_DocumentSummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'DocumentSummaryInformation')); + $OLE_DocumentSummaryInformation->append($this->documentSummaryInformation); + } + + $this->summaryInformation = $this->writeSummaryInformation(); + // initialize OLE Summary Information + if (isset($this->summaryInformation) && !empty($this->summaryInformation)) { + $OLE_SummaryInformation = new PHPExcel_Shared_OLE_PPS_File(PHPExcel_Shared_OLE::Asc2Ucs(chr(5) . 'SummaryInformation')); + $OLE_SummaryInformation->append($this->summaryInformation); + } + + // define OLE Parts + $arrRootData = array($OLE); + // initialize OLE Properties file + if (isset($OLE_SummaryInformation)) { + $arrRootData[] = $OLE_SummaryInformation; + } + // initialize OLE Extended Properties file + if (isset($OLE_DocumentSummaryInformation)) { + $arrRootData[] = $OLE_DocumentSummaryInformation; + } + + $root = new PHPExcel_Shared_OLE_PPS_Root(time(), time(), $arrRootData); + // save the OLE file + $res = $root->save($pFilename); + + PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); + } + + /** + * Set temporary storage directory + * + * @deprecated + * @param string $pValue Temporary storage directory + * @throws PHPExcel_Writer_Exception when directory does not exist + * @return PHPExcel_Writer_Excel5 + */ + public function setTempDir($pValue = '') + { + return $this; + } + + /** + * Build the Worksheet Escher objects + * + */ + private function buildWorksheetEschers() + { + // 1-based index to BstoreContainer + $blipIndex = 0; + $lastReducedSpId = 0; + $lastSpId = 0; + + foreach ($this->phpExcel->getAllsheets() as $sheet) { + // sheet index + $sheetIndex = $sheet->getParent()->getIndex($sheet); + + $escher = null; + + // check if there are any shapes for this sheet + $filterRange = $sheet->getAutoFilter()->getRange(); + if (count($sheet->getDrawingCollection()) == 0 && empty($filterRange)) { + continue; + } + + // create intermediate Escher object + $escher = new PHPExcel_Shared_Escher(); + + // dgContainer + $dgContainer = new PHPExcel_Shared_Escher_DgContainer(); + + // set the drawing index (we use sheet index + 1) + $dgId = $sheet->getParent()->getIndex($sheet) + 1; + $dgContainer->setDgId($dgId); + $escher->setDgContainer($dgContainer); + + // spgrContainer + $spgrContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer(); + $dgContainer->setSpgrContainer($spgrContainer); + + // add one shape which is the group shape + $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); + $spContainer->setSpgr(true); + $spContainer->setSpType(0); + $spContainer->setSpId(($sheet->getParent()->getIndex($sheet) + 1) << 10); + $spgrContainer->addChild($spContainer); + + // add the shapes + + $countShapes[$sheetIndex] = 0; // count number of shapes (minus group shape), in sheet + + foreach ($sheet->getDrawingCollection() as $drawing) { + ++$blipIndex; + + ++$countShapes[$sheetIndex]; + + // add the shape + $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); + + // set the shape type + $spContainer->setSpType(0x004B); + // set the shape flag + $spContainer->setSpFlag(0x02); + + // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index) + $reducedSpId = $countShapes[$sheetIndex]; + $spId = $reducedSpId + | ($sheet->getParent()->getIndex($sheet) + 1) << 10; + $spContainer->setSpId($spId); + + // keep track of last reducedSpId + $lastReducedSpId = $reducedSpId; + + // keep track of last spId + $lastSpId = $spId; + + // set the BLIP index + $spContainer->setOPT(0x4104, $blipIndex); + + // set coordinates and offsets, client anchor + $coordinates = $drawing->getCoordinates(); + $offsetX = $drawing->getOffsetX(); + $offsetY = $drawing->getOffsetY(); + $width = $drawing->getWidth(); + $height = $drawing->getHeight(); + + $twoAnchor = PHPExcel_Shared_Excel5::oneAnchor2twoAnchor($sheet, $coordinates, $offsetX, $offsetY, $width, $height); + + $spContainer->setStartCoordinates($twoAnchor['startCoordinates']); + $spContainer->setStartOffsetX($twoAnchor['startOffsetX']); + $spContainer->setStartOffsetY($twoAnchor['startOffsetY']); + $spContainer->setEndCoordinates($twoAnchor['endCoordinates']); + $spContainer->setEndOffsetX($twoAnchor['endOffsetX']); + $spContainer->setEndOffsetY($twoAnchor['endOffsetY']); + + $spgrContainer->addChild($spContainer); + } + + // AutoFilters + if (!empty($filterRange)) { + $rangeBounds = PHPExcel_Cell::rangeBoundaries($filterRange); + $iNumColStart = $rangeBounds[0][0]; + $iNumColEnd = $rangeBounds[1][0]; + + $iInc = $iNumColStart; + while ($iInc <= $iNumColEnd) { + ++$countShapes[$sheetIndex]; + + // create an Drawing Object for the dropdown + $oDrawing = new PHPExcel_Worksheet_BaseDrawing(); + // get the coordinates of drawing + $cDrawing = PHPExcel_Cell::stringFromColumnIndex($iInc - 1) . $rangeBounds[0][1]; + $oDrawing->setCoordinates($cDrawing); + $oDrawing->setWorksheet($sheet); + + // add the shape + $spContainer = new PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer(); + // set the shape type + $spContainer->setSpType(0x00C9); + // set the shape flag + $spContainer->setSpFlag(0x01); + + // set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index) + $reducedSpId = $countShapes[$sheetIndex]; + $spId = $reducedSpId + | ($sheet->getParent()->getIndex($sheet) + 1) << 10; + $spContainer->setSpId($spId); + + // keep track of last reducedSpId + $lastReducedSpId = $reducedSpId; + + // keep track of last spId + $lastSpId = $spId; + + $spContainer->setOPT(0x007F, 0x01040104); // Protection -> fLockAgainstGrouping + $spContainer->setOPT(0x00BF, 0x00080008); // Text -> fFitTextToShape + $spContainer->setOPT(0x01BF, 0x00010000); // Fill Style -> fNoFillHitTest + $spContainer->setOPT(0x01FF, 0x00080000); // Line Style -> fNoLineDrawDash + $spContainer->setOPT(0x03BF, 0x000A0000); // Group Shape -> fPrint + + // set coordinates and offsets, client anchor + $endCoordinates = PHPExcel_Cell::stringFromColumnIndex(PHPExcel_Cell::stringFromColumnIndex($iInc - 1)); + $endCoordinates .= $rangeBounds[0][1] + 1; + + $spContainer->setStartCoordinates($cDrawing); + $spContainer->setStartOffsetX(0); + $spContainer->setStartOffsetY(0); + $spContainer->setEndCoordinates($endCoordinates); + $spContainer->setEndOffsetX(0); + $spContainer->setEndOffsetY(0); + + $spgrContainer->addChild($spContainer); + $iInc++; + } + } + + // identifier clusters, used for workbook Escher object + $this->IDCLs[$dgId] = $lastReducedSpId; + + // set last shape index + $dgContainer->setLastSpId($lastSpId); + + // set the Escher object + $this->writerWorksheets[$sheetIndex]->setEscher($escher); + } + } + + /** + * Build the Escher object corresponding to the MSODRAWINGGROUP record + */ + private function buildWorkbookEscher() + { + $escher = null; + + // any drawings in this workbook? + $found = false; + foreach ($this->phpExcel->getAllSheets() as $sheet) { + if (count($sheet->getDrawingCollection()) > 0) { + $found = true; + break; + } + } + + // nothing to do if there are no drawings + if (!$found) { + return; + } + + // if we reach here, then there are drawings in the workbook + $escher = new PHPExcel_Shared_Escher(); + + // dggContainer + $dggContainer = new PHPExcel_Shared_Escher_DggContainer(); + $escher->setDggContainer($dggContainer); + + // set IDCLs (identifier clusters) + $dggContainer->setIDCLs($this->IDCLs); + + // this loop is for determining maximum shape identifier of all drawing + $spIdMax = 0; + $totalCountShapes = 0; + $countDrawings = 0; + + foreach ($this->phpExcel->getAllsheets() as $sheet) { + $sheetCountShapes = 0; // count number of shapes (minus group shape), in sheet + + if (count($sheet->getDrawingCollection()) > 0) { + ++$countDrawings; + + foreach ($sheet->getDrawingCollection() as $drawing) { + ++$sheetCountShapes; + ++$totalCountShapes; + + $spId = $sheetCountShapes | ($this->phpExcel->getIndex($sheet) + 1) << 10; + $spIdMax = max($spId, $spIdMax); + } + } + } + + $dggContainer->setSpIdMax($spIdMax + 1); + $dggContainer->setCDgSaved($countDrawings); + $dggContainer->setCSpSaved($totalCountShapes + $countDrawings); // total number of shapes incl. one group shapes per drawing + + // bstoreContainer + $bstoreContainer = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer(); + $dggContainer->setBstoreContainer($bstoreContainer); + + // the BSE's (all the images) + foreach ($this->phpExcel->getAllsheets() as $sheet) { + foreach ($sheet->getDrawingCollection() as $drawing) { + if ($drawing instanceof PHPExcel_Worksheet_Drawing) { + $filename = $drawing->getPath(); + + list($imagesx, $imagesy, $imageFormat) = getimagesize($filename); + + switch ($imageFormat) { + case 1: // GIF, not supported by BIFF8, we convert to PNG + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; + ob_start(); + imagepng(imagecreatefromgif($filename)); + $blipData = ob_get_contents(); + ob_end_clean(); + break; + case 2: // JPEG + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG; + $blipData = file_get_contents($filename); + break; + case 3: // PNG + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; + $blipData = file_get_contents($filename); + break; + case 6: // Windows DIB (BMP), we convert to PNG + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; + ob_start(); + imagepng(PHPExcel_Shared_Drawing::imagecreatefrombmp($filename)); + $blipData = ob_get_contents(); + ob_end_clean(); + break; + default: + continue 2; + } + + $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); + $blip->setData($blipData); + + $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); + $BSE->setBlipType($blipType); + $BSE->setBlip($blip); + + $bstoreContainer->addBSE($BSE); + } elseif ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { + switch ($drawing->getRenderingFunction()) { + case PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG: + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG; + $renderingFunction = 'imagejpeg'; + break; + case PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF: + case PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG: + case PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT: + $blipType = PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG; + $renderingFunction = 'imagepng'; + break; + } + + ob_start(); + call_user_func($renderingFunction, $drawing->getImageResource()); + $blipData = ob_get_contents(); + ob_end_clean(); + + $blip = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip(); + $blip->setData($blipData); + + $BSE = new PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE(); + $BSE->setBlipType($blipType); + $BSE->setBlip($blip); + + $bstoreContainer->addBSE($BSE); + } + } + } + + // Set the Escher object + $this->writerWorkbook->setEscher($escher); + } + + /** + * Build the OLE Part for DocumentSummary Information + * @return string + */ + private function writeDocumentSummaryInformation() + { + // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) + $data = pack('v', 0xFFFE); + // offset: 2; size: 2; + $data .= pack('v', 0x0000); + // offset: 4; size: 2; OS version + $data .= pack('v', 0x0106); + // offset: 6; size: 2; OS indicator + $data .= pack('v', 0x0002); + // offset: 8; size: 16 + $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00); + // offset: 24; size: 4; section count + $data .= pack('V', 0x0001); + + // offset: 28; size: 16; first section's class id: 02 d5 cd d5 9c 2e 1b 10 93 97 08 00 2b 2c f9 ae + $data .= pack('vvvvvvvv', 0xD502, 0xD5CD, 0x2E9C, 0x101B, 0x9793, 0x0008, 0x2C2B, 0xAEF9); + // offset: 44; size: 4; offset of the start + $data .= pack('V', 0x30); + + // SECTION + $dataSection = array(); + $dataSection_NumProps = 0; + $dataSection_Summary = ''; + $dataSection_Content = ''; + + // GKPIDDSI_CODEPAGE: CodePage + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer + 'data' => array('data' => 1252)); + $dataSection_NumProps++; + + // GKPIDDSI_CATEGORY : Category + if ($this->phpExcel->getProperties()->getCategory()) { + $dataProp = $this->phpExcel->getProperties()->getCategory(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // GKPIDDSI_VERSION :Version of the application that wrote the property storage + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x17), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x03), + 'data' => array('pack' => 'V', 'data' => 0x000C0000)); + $dataSection_NumProps++; + // GKPIDDSI_SCALE : FALSE + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0B), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x0B), + 'data' => array('data' => false)); + $dataSection_NumProps++; + // GKPIDDSI_LINKSDIRTY : True if any of the values for the linked properties have changed outside of the application + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x10), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x0B), + 'data' => array('data' => false)); + $dataSection_NumProps++; + // GKPIDDSI_SHAREDOC : FALSE + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x0B), + 'data' => array('data' => false)); + $dataSection_NumProps++; + // GKPIDDSI_HYPERLINKSCHANGED : True if any of the values for the _PID_LINKS (hyperlink text) have changed outside of the application + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x16), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x0B), + 'data' => array('data' => false)); + $dataSection_NumProps++; + + // GKPIDDSI_DOCSPARTS + // MS-OSHARED p75 (2.3.3.2.2.1) + // Structure is VtVecUnalignedLpstrValue (2.3.3.1.9) + // cElements + $dataProp = pack('v', 0x0001); + $dataProp .= pack('v', 0x0000); + // array of UnalignedLpstr + // cch + $dataProp .= pack('v', 0x000A); + $dataProp .= pack('v', 0x0000); + // value + $dataProp .= 'Worksheet'.chr(0); + + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x101E), + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + + // GKPIDDSI_HEADINGPAIR + // VtVecHeadingPairValue + // cElements + $dataProp = pack('v', 0x0002); + $dataProp .= pack('v', 0x0000); + // Array of vtHeadingPair + // vtUnalignedString - headingString + // stringType + $dataProp .= pack('v', 0x001E); + // padding + $dataProp .= pack('v', 0x0000); + // UnalignedLpstr + // cch + $dataProp .= pack('v', 0x0013); + $dataProp .= pack('v', 0x0000); + // value + $dataProp .= 'Feuilles de calcul'; + // vtUnalignedString - headingParts + // wType : 0x0003 = 32 bit signed integer + $dataProp .= pack('v', 0x0300); + // padding + $dataProp .= pack('v', 0x0000); + // value + $dataProp .= pack('v', 0x0100); + $dataProp .= pack('v', 0x0000); + $dataProp .= pack('v', 0x0000); + $dataProp .= pack('v', 0x0000); + + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x100C), + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + + // 4 Section Length + // 4 Property count + // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4)) + $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8; + foreach ($dataSection as $dataProp) { + // Summary + $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']); + // Offset + $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset); + // DataType + $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']); + // Data + if ($dataProp['type']['data'] == 0x02) { // 2 byte signed integer + $dataSection_Content .= pack('V', $dataProp['data']['data']); + + $dataSection_Content_Offset += 4 + 4; + } elseif ($dataProp['type']['data'] == 0x03) { // 4 byte signed integer + $dataSection_Content .= pack('V', $dataProp['data']['data']); + + $dataSection_Content_Offset += 4 + 4; + } elseif ($dataProp['type']['data'] == 0x0B) { // Boolean + if ($dataProp['data']['data'] == false) { + $dataSection_Content .= pack('V', 0x0000); + } else { + $dataSection_Content .= pack('V', 0x0001); + } + $dataSection_Content_Offset += 4 + 4; + } elseif ($dataProp['type']['data'] == 0x1E) { // null-terminated string prepended by dword string length + // Null-terminated string + $dataProp['data']['data'] .= chr(0); + $dataProp['data']['length'] += 1; + // Complete the string with null string for being a %4 + $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4)); + $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT); + + $dataSection_Content .= pack('V', $dataProp['data']['length']); + $dataSection_Content .= $dataProp['data']['data']; + + $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']); + } elseif ($dataProp['type']['data'] == 0x40) { // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + $dataSection_Content .= $dataProp['data']['data']; + + $dataSection_Content_Offset += 4 + 8; + } else { + // Data Type Not Used at the moment + $dataSection_Content .= $dataProp['data']['data']; + + $dataSection_Content_Offset += 4 + $dataProp['data']['length']; + } + } + // Now $dataSection_Content_Offset contains the size of the content + + // section header + // offset: $secOffset; size: 4; section length + // + x Size of the content (summary + content) + $data .= pack('V', $dataSection_Content_Offset); + // offset: $secOffset+4; size: 4; property count + $data .= pack('V', $dataSection_NumProps); + // Section Summary + $data .= $dataSection_Summary; + // Section Content + $data .= $dataSection_Content; + + return $data; + } + + /** + * Build the OLE Part for Summary Information + * @return string + */ + private function writeSummaryInformation() + { + // offset: 0; size: 2; must be 0xFE 0xFF (UTF-16 LE byte order mark) + $data = pack('v', 0xFFFE); + // offset: 2; size: 2; + $data .= pack('v', 0x0000); + // offset: 4; size: 2; OS version + $data .= pack('v', 0x0106); + // offset: 6; size: 2; OS indicator + $data .= pack('v', 0x0002); + // offset: 8; size: 16 + $data .= pack('VVVV', 0x00, 0x00, 0x00, 0x00); + // offset: 24; size: 4; section count + $data .= pack('V', 0x0001); + + // offset: 28; size: 16; first section's class id: e0 85 9f f2 f9 4f 68 10 ab 91 08 00 2b 27 b3 d9 + $data .= pack('vvvvvvvv', 0x85E0, 0xF29F, 0x4FF9, 0x1068, 0x91AB, 0x0008, 0x272B, 0xD9B3); + // offset: 44; size: 4; offset of the start + $data .= pack('V', 0x30); + + // SECTION + $dataSection = array(); + $dataSection_NumProps = 0; + $dataSection_Summary = ''; + $dataSection_Content = ''; + + // CodePage : CP-1252 + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x01), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x02), // 2 byte signed integer + 'data' => array('data' => 1252)); + $dataSection_NumProps++; + + // Title + if ($this->phpExcel->getProperties()->getTitle()) { + $dataProp = $this->phpExcel->getProperties()->getTitle(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x02), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Subject + if ($this->phpExcel->getProperties()->getSubject()) { + $dataProp = $this->phpExcel->getProperties()->getSubject(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x03), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Author (Creator) + if ($this->phpExcel->getProperties()->getCreator()) { + $dataProp = $this->phpExcel->getProperties()->getCreator(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x04), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Keywords + if ($this->phpExcel->getProperties()->getKeywords()) { + $dataProp = $this->phpExcel->getProperties()->getKeywords(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x05), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Comments (Description) + if ($this->phpExcel->getProperties()->getDescription()) { + $dataProp = $this->phpExcel->getProperties()->getDescription(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x06), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Last Saved By (LastModifiedBy) + if ($this->phpExcel->getProperties()->getLastModifiedBy()) { + $dataProp = $this->phpExcel->getProperties()->getLastModifiedBy(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x08), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x1E), // null-terminated string prepended by dword string length + 'data' => array('data' => $dataProp, 'length' => strlen($dataProp))); + $dataSection_NumProps++; + } + // Created Date/Time + if ($this->phpExcel->getProperties()->getCreated()) { + $dataProp = $this->phpExcel->getProperties()->getCreated(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0C), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp))); + $dataSection_NumProps++; + } + // Modified Date/Time + if ($this->phpExcel->getProperties()->getModified()) { + $dataProp = $this->phpExcel->getProperties()->getModified(); + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x0D), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x40), // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + 'data' => array('data' => PHPExcel_Shared_OLE::LocalDate2OLE($dataProp))); + $dataSection_NumProps++; + } + // Security + $dataSection[] = array('summary'=> array('pack' => 'V', 'data' => 0x13), + 'offset' => array('pack' => 'V'), + 'type' => array('pack' => 'V', 'data' => 0x03), // 4 byte signed integer + 'data' => array('data' => 0x00)); + $dataSection_NumProps++; + + + // 4 Section Length + // 4 Property count + // 8 * $dataSection_NumProps (8 = ID (4) + OffSet(4)) + $dataSection_Content_Offset = 8 + $dataSection_NumProps * 8; + foreach ($dataSection as $dataProp) { + // Summary + $dataSection_Summary .= pack($dataProp['summary']['pack'], $dataProp['summary']['data']); + // Offset + $dataSection_Summary .= pack($dataProp['offset']['pack'], $dataSection_Content_Offset); + // DataType + $dataSection_Content .= pack($dataProp['type']['pack'], $dataProp['type']['data']); + // Data + if ($dataProp['type']['data'] == 0x02) { // 2 byte signed integer + $dataSection_Content .= pack('V', $dataProp['data']['data']); + + $dataSection_Content_Offset += 4 + 4; + } elseif ($dataProp['type']['data'] == 0x03) { // 4 byte signed integer + $dataSection_Content .= pack('V', $dataProp['data']['data']); + + $dataSection_Content_Offset += 4 + 4; + } elseif ($dataProp['type']['data'] == 0x1E) { // null-terminated string prepended by dword string length + // Null-terminated string + $dataProp['data']['data'] .= chr(0); + $dataProp['data']['length'] += 1; + // Complete the string with null string for being a %4 + $dataProp['data']['length'] = $dataProp['data']['length'] + ((4 - $dataProp['data']['length'] % 4)==4 ? 0 : (4 - $dataProp['data']['length'] % 4)); + $dataProp['data']['data'] = str_pad($dataProp['data']['data'], $dataProp['data']['length'], chr(0), STR_PAD_RIGHT); + + $dataSection_Content .= pack('V', $dataProp['data']['length']); + $dataSection_Content .= $dataProp['data']['data']; + + $dataSection_Content_Offset += 4 + 4 + strlen($dataProp['data']['data']); + } elseif ($dataProp['type']['data'] == 0x40) { // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601) + $dataSection_Content .= $dataProp['data']['data']; + + $dataSection_Content_Offset += 4 + 8; + } else { + // Data Type Not Used at the moment + } + } + // Now $dataSection_Content_Offset contains the size of the content + + // section header + // offset: $secOffset; size: 4; section length + // + x Size of the content (summary + content) + $data .= pack('V', $dataSection_Content_Offset); + // offset: $secOffset+4; size: 4; property count + $data .= pack('V', $dataSection_NumProps); + // Section Summary + $data .= $dataSection_Summary; + // Section Content + $data .= $dataSection_Content; + + return $data; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/BIFFwriter.php b/assets/excel/PHPExcel/Writer/Excel5/BIFFwriter.php new file mode 100644 index 0000000..a795752 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/BIFFwriter.php @@ -0,0 +1,246 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_BIFFwriter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +// Original file header of PEAR::Spreadsheet_Excel_Writer_BIFFwriter (used as the base for this class): +// ----------------------------------------------------------------------------------------- +// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> +// * +// * The majority of this is _NOT_ my code. I simply ported it from the +// * PERL Spreadsheet::WriteExcel module. +// * +// * The author of the Spreadsheet::WriteExcel module is John McNamara +// * <jmcnamara@cpan.org> +// * +// * I _DO_ maintain this code, and John McNamara has nothing to do with the +// * porting of this code to PHP. Any questions directly related to this +// * class library should be directed to me. +// * +// * License Information: +// * +// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets +// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com +// * +// * This library is free software; you can redistribute it and/or +// * modify it under the terms of the GNU Lesser General Public +// * License as published by the Free Software Foundation; either +// * version 2.1 of the License, or (at your option) any later version. +// * +// * This library is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// * Lesser General Public License for more details. +// * +// * You should have received a copy of the GNU Lesser General Public +// * License along with this library; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +class PHPExcel_Writer_Excel5_BIFFwriter +{ + /** + * The byte order of this architecture. 0 => little endian, 1 => big endian + * @var integer + */ + private static $byteOrder; + + /** + * The string containing the data of the BIFF stream + * @var string + */ + public $_data; + + /** + * The size of the data in bytes. Should be the same as strlen($this->_data) + * @var integer + */ + public $_datasize; + + /** + * The maximum length for a BIFF record (excluding record header and length field). See addContinue() + * @var integer + * @see addContinue() + */ + private $limit = 8224; + + /** + * Constructor + */ + public function __construct() + { + $this->_data = ''; + $this->_datasize = 0; +// $this->limit = 8224; + } + + /** + * Determine the byte order and store it as class data to avoid + * recalculating it for each call to new(). + * + * @return int + */ + public static function getByteOrder() + { + if (!isset(self::$byteOrder)) { + // Check if "pack" gives the required IEEE 64bit float + $teststr = pack("d", 1.2345); + $number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F); + if ($number == $teststr) { + $byte_order = 0; // Little Endian + } elseif ($number == strrev($teststr)) { + $byte_order = 1; // Big Endian + } else { + // Give up. I'll fix this in a later version. + throw new PHPExcel_Writer_Exception("Required floating point format not supported on this platform."); + } + self::$byteOrder = $byte_order; + } + + return self::$byteOrder; + } + + /** + * General storage function + * + * @param string $data binary data to append + * @access private + */ + protected function append($data) + { + if (strlen($data) - 4 > $this->limit) { + $data = $this->addContinue($data); + } + $this->_data .= $data; + $this->_datasize += strlen($data); + } + + /** + * General storage function like append, but returns string instead of modifying $this->_data + * + * @param string $data binary data to write + * @return string + */ + public function writeData($data) + { + if (strlen($data) - 4 > $this->limit) { + $data = $this->addContinue($data); + } + $this->_datasize += strlen($data); + + return $data; + } + + /** + * Writes Excel BOF record to indicate the beginning of a stream or + * sub-stream in the BIFF file. + * + * @param integer $type Type of BIFF file to write: 0x0005 Workbook, + * 0x0010 Worksheet. + * @access private + */ + protected function storeBof($type) + { + $record = 0x0809; // Record identifier (BIFF5-BIFF8) + $length = 0x0010; + + // by inspection of real files, MS Office Excel 2007 writes the following + $unknown = pack("VV", 0x000100D1, 0x00000406); + + $build = 0x0DBB; // Excel 97 + $year = 0x07CC; // Excel 97 + + $version = 0x0600; // BIFF8 + + $header = pack("vv", $record, $length); + $data = pack("vvvv", $version, $type, $build, $year); + $this->append($header . $data . $unknown); + } + + /** + * Writes Excel EOF record to indicate the end of a BIFF stream. + * + * @access private + */ + protected function storeEof() + { + $record = 0x000A; // Record identifier + $length = 0x0000; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $this->append($header); + } + + /** + * Writes Excel EOF record to indicate the end of a BIFF stream. + * + * @access private + */ + public function writeEof() + { + $record = 0x000A; // Record identifier + $length = 0x0000; // Number of bytes to follow + $header = pack("vv", $record, $length); + return $this->writeData($header); + } + + /** + * Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In + * Excel 97 the limit is 8228 bytes. Records that are longer than these limits + * must be split up into CONTINUE blocks. + * + * This function takes a long BIFF record and inserts CONTINUE records as + * necessary. + * + * @param string $data The original binary data to be written + * @return string A very convenient string of continue blocks + * @access private + */ + private function addContinue($data) + { + $limit = $this->limit; + $record = 0x003C; // Record identifier + + // The first 2080/8224 bytes remain intact. However, we have to change + // the length field of the record. + $tmp = substr($data, 0, 2) . pack("v", $limit) . substr($data, 4, $limit); + + $header = pack("vv", $record, $limit); // Headers for continue records + + // Retrieve chunks of 2080/8224 bytes +4 for the header. + $data_length = strlen($data); + for ($i = $limit + 4; $i < ($data_length - $limit); $i += $limit) { + $tmp .= $header; + $tmp .= substr($data, $i, $limit); + } + + // Retrieve the last chunk of data + $header = pack("vv", $record, strlen($data) - $i); + $tmp .= $header; + $tmp .= substr($data, $i, strlen($data) - $i); + + return $tmp; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Escher.php b/assets/excel/PHPExcel/Writer/Excel5/Escher.php new file mode 100644 index 0000000..c37fda9 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Escher.php @@ -0,0 +1,523 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Shared_Escher_DggContainer_BstoreContainer + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + */ +class PHPExcel_Writer_Excel5_Escher +{ + /** + * The object we are writing + */ + private $object; + + /** + * The written binary data + */ + private $data; + + /** + * Shape offsets. Positions in binary stream where a new shape record begins + * + * @var array + */ + private $spOffsets; + + /** + * Shape types. + * + * @var array + */ + private $spTypes; + + /** + * Constructor + * + * @param mixed + */ + public function __construct($object) + { + $this->object = $object; + } + + /** + * Process the object to be written + */ + public function close() + { + // initialize + $this->data = ''; + + switch (get_class($this->object)) { + case 'PHPExcel_Shared_Escher': + if ($dggContainer = $this->object->getDggContainer()) { + $writer = new PHPExcel_Writer_Excel5_Escher($dggContainer); + $this->data = $writer->close(); + } elseif ($dgContainer = $this->object->getDgContainer()) { + $writer = new PHPExcel_Writer_Excel5_Escher($dgContainer); + $this->data = $writer->close(); + $this->spOffsets = $writer->getSpOffsets(); + $this->spTypes = $writer->getSpTypes(); + } + break; + case 'PHPExcel_Shared_Escher_DggContainer': + // this is a container record + + // initialize + $innerData = ''; + + // write the dgg + $recVer = 0x0; + $recInstance = 0x0000; + $recType = 0xF006; + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + // dgg data + $dggData = + pack( + 'VVVV', + $this->object->getSpIdMax(), // maximum shape identifier increased by one + $this->object->getCDgSaved() + 1, // number of file identifier clusters increased by one + $this->object->getCSpSaved(), + $this->object->getCDgSaved() // count total number of drawings saved + ); + + // add file identifier clusters (one per drawing) + $IDCLs = $this->object->getIDCLs(); + + foreach ($IDCLs as $dgId => $maxReducedSpId) { + $dggData .= pack('VV', $dgId, $maxReducedSpId + 1); + } + + $header = pack('vvV', $recVerInstance, $recType, strlen($dggData)); + $innerData .= $header . $dggData; + + // write the bstoreContainer + if ($bstoreContainer = $this->object->getBstoreContainer()) { + $writer = new PHPExcel_Writer_Excel5_Escher($bstoreContainer); + $innerData .= $writer->close(); + } + + // write the record + $recVer = 0xF; + $recInstance = 0x0000; + $recType = 0xF000; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header . $innerData; + break; + case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer': + // this is a container record + + // initialize + $innerData = ''; + + // treat the inner data + if ($BSECollection = $this->object->getBSECollection()) { + foreach ($BSECollection as $BSE) { + $writer = new PHPExcel_Writer_Excel5_Escher($BSE); + $innerData .= $writer->close(); + } + } + + // write the record + $recVer = 0xF; + $recInstance = count($this->object->getBSECollection()); + $recType = 0xF001; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header . $innerData; + break; + case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE': + // this is a semi-container record + + // initialize + $innerData = ''; + + // here we treat the inner data + if ($blip = $this->object->getBlip()) { + $writer = new PHPExcel_Writer_Excel5_Escher($blip); + $innerData .= $writer->close(); + } + + // initialize + $data = ''; + + $btWin32 = $this->object->getBlipType(); + $btMacOS = $this->object->getBlipType(); + $data .= pack('CC', $btWin32, $btMacOS); + + $rgbUid = pack('VVVV', 0, 0, 0, 0); // todo + $data .= $rgbUid; + + $tag = 0; + $size = strlen($innerData); + $cRef = 1; + $foDelay = 0; //todo + $unused1 = 0x0; + $cbName = 0x0; + $unused2 = 0x0; + $unused3 = 0x0; + $data .= pack('vVVVCCCC', $tag, $size, $cRef, $foDelay, $unused1, $cbName, $unused2, $unused3); + + $data .= $innerData; + + // write the record + $recVer = 0x2; + $recInstance = $this->object->getBlipType(); + $recType = 0xF007; + $length = strlen($data); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header; + + $this->data .= $data; + break; + case 'PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip': + // this is an atom record + + // write the record + switch ($this->object->getParent()->getBlipType()) { + case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_JPEG: + // initialize + $innerData = ''; + + $rgbUid1 = pack('VVVV', 0, 0, 0, 0); // todo + $innerData .= $rgbUid1; + + $tag = 0xFF; // todo + $innerData .= pack('C', $tag); + + $innerData .= $this->object->getData(); + + $recVer = 0x0; + $recInstance = 0x46A; + $recType = 0xF01D; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header; + + $this->data .= $innerData; + break; + + case PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE::BLIPTYPE_PNG: + // initialize + $innerData = ''; + + $rgbUid1 = pack('VVVV', 0, 0, 0, 0); // todo + $innerData .= $rgbUid1; + + $tag = 0xFF; // todo + $innerData .= pack('C', $tag); + + $innerData .= $this->object->getData(); + + $recVer = 0x0; + $recInstance = 0x6E0; + $recType = 0xF01E; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header; + + $this->data .= $innerData; + break; + } + break; + case 'PHPExcel_Shared_Escher_DgContainer': + // this is a container record + + // initialize + $innerData = ''; + + // write the dg + $recVer = 0x0; + $recInstance = $this->object->getDgId(); + $recType = 0xF008; + $length = 8; + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + // number of shapes in this drawing (including group shape) + $countShapes = count($this->object->getSpgrContainer()->getChildren()); + $innerData .= $header . pack('VV', $countShapes, $this->object->getLastSpId()); + //$innerData .= $header . pack('VV', 0, 0); + + // write the spgrContainer + if ($spgrContainer = $this->object->getSpgrContainer()) { + $writer = new PHPExcel_Writer_Excel5_Escher($spgrContainer); + $innerData .= $writer->close(); + + // get the shape offsets relative to the spgrContainer record + $spOffsets = $writer->getSpOffsets(); + $spTypes = $writer->getSpTypes(); + + // save the shape offsets relative to dgContainer + foreach ($spOffsets as & $spOffset) { + $spOffset += 24; // add length of dgContainer header data (8 bytes) plus dg data (16 bytes) + } + + $this->spOffsets = $spOffsets; + $this->spTypes = $spTypes; + } + + // write the record + $recVer = 0xF; + $recInstance = 0x0000; + $recType = 0xF002; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header . $innerData; + break; + case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer': + // this is a container record + + // initialize + $innerData = ''; + + // initialize spape offsets + $totalSize = 8; + $spOffsets = array(); + $spTypes = array(); + + // treat the inner data + foreach ($this->object->getChildren() as $spContainer) { + $writer = new PHPExcel_Writer_Excel5_Escher($spContainer); + $spData = $writer->close(); + $innerData .= $spData; + + // save the shape offsets (where new shape records begin) + $totalSize += strlen($spData); + $spOffsets[] = $totalSize; + + $spTypes = array_merge($spTypes, $writer->getSpTypes()); + } + + // write the record + $recVer = 0xF; + $recInstance = 0x0000; + $recType = 0xF003; + $length = strlen($innerData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header . $innerData; + $this->spOffsets = $spOffsets; + $this->spTypes = $spTypes; + break; + case 'PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer': + // initialize + $data = ''; + + // build the data + + // write group shape record, if necessary? + if ($this->object->getSpgr()) { + $recVer = 0x1; + $recInstance = 0x0000; + $recType = 0xF009; + $length = 0x00000010; + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $data .= $header . pack('VVVV', 0, 0, 0, 0); + } + $this->spTypes[] = ($this->object->getSpType()); + + // write the shape record + $recVer = 0x2; + $recInstance = $this->object->getSpType(); // shape type + $recType = 0xF00A; + $length = 0x00000008; + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $data .= $header . pack('VV', $this->object->getSpId(), $this->object->getSpgr() ? 0x0005 : 0x0A00); + + + // the options + if ($this->object->getOPTCollection()) { + $optData = ''; + + $recVer = 0x3; + $recInstance = count($this->object->getOPTCollection()); + $recType = 0xF00B; + foreach ($this->object->getOPTCollection() as $property => $value) { + $optData .= pack('vV', $property, $value); + } + $length = strlen($optData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + $data .= $header . $optData; + } + + // the client anchor + if ($this->object->getStartCoordinates()) { + $clientAnchorData = ''; + + $recVer = 0x0; + $recInstance = 0x0; + $recType = 0xF010; + + // start coordinates + list($column, $row) = PHPExcel_Cell::coordinateFromString($this->object->getStartCoordinates()); + $c1 = PHPExcel_Cell::columnIndexFromString($column) - 1; + $r1 = $row - 1; + + // start offsetX + $startOffsetX = $this->object->getStartOffsetX(); + + // start offsetY + $startOffsetY = $this->object->getStartOffsetY(); + + // end coordinates + list($column, $row) = PHPExcel_Cell::coordinateFromString($this->object->getEndCoordinates()); + $c2 = PHPExcel_Cell::columnIndexFromString($column) - 1; + $r2 = $row - 1; + + // end offsetX + $endOffsetX = $this->object->getEndOffsetX(); + + // end offsetY + $endOffsetY = $this->object->getEndOffsetY(); + + $clientAnchorData = pack('vvvvvvvvv', $this->object->getSpFlag(), $c1, $startOffsetX, $r1, $startOffsetY, $c2, $endOffsetX, $r2, $endOffsetY); + + $length = strlen($clientAnchorData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + $data .= $header . $clientAnchorData; + } + + // the client data, just empty for now + if (!$this->object->getSpgr()) { + $clientDataData = ''; + + $recVer = 0x0; + $recInstance = 0x0; + $recType = 0xF011; + + $length = strlen($clientDataData); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + $data .= $header . $clientDataData; + } + + // write the record + $recVer = 0xF; + $recInstance = 0x0000; + $recType = 0xF004; + $length = strlen($data); + + $recVerInstance = $recVer; + $recVerInstance |= $recInstance << 4; + + $header = pack('vvV', $recVerInstance, $recType, $length); + + $this->data = $header . $data; + break; + } + + return $this->data; + } + + /** + * Gets the shape offsets + * + * @return array + */ + public function getSpOffsets() + { + return $this->spOffsets; + } + + /** + * Gets the shape types + * + * @return array + */ + public function getSpTypes() + { + return $this->spTypes; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Font.php b/assets/excel/PHPExcel/Writer/Excel5/Font.php new file mode 100644 index 0000000..ed85ff4 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Font.php @@ -0,0 +1,166 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_Font + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Excel5_Font +{ + /** + * Color index + * + * @var int + */ + private $colorIndex; + + /** + * Font + * + * @var PHPExcel_Style_Font + */ + private $font; + + /** + * Constructor + * + * @param PHPExcel_Style_Font $font + */ + public function __construct(PHPExcel_Style_Font $font = null) + { + $this->colorIndex = 0x7FFF; + $this->font = $font; + } + + /** + * Set the color index + * + * @param int $colorIndex + */ + public function setColorIndex($colorIndex) + { + $this->colorIndex = $colorIndex; + } + + /** + * Get font record data + * + * @return string + */ + public function writeFont() + { + $font_outline = 0; + $font_shadow = 0; + + $icv = $this->colorIndex; // Index to color palette + if ($this->font->getSuperScript()) { + $sss = 1; + } elseif ($this->font->getSubScript()) { + $sss = 2; + } else { + $sss = 0; + } + $bFamily = 0; // Font family + $bCharSet = PHPExcel_Shared_Font::getCharsetFromFontName($this->font->getName()); // Character set + + $record = 0x31; // Record identifier + $reserved = 0x00; // Reserved + $grbit = 0x00; // Font attributes + if ($this->font->getItalic()) { + $grbit |= 0x02; + } + if ($this->font->getStrikethrough()) { + $grbit |= 0x08; + } + if ($font_outline) { + $grbit |= 0x10; + } + if ($font_shadow) { + $grbit |= 0x20; + } + + $data = pack( + "vvvvvCCCC", + // Fontsize (in twips) + $this->font->getSize() * 20, + $grbit, + // Colour + $icv, + // Font weight + self::mapBold($this->font->getBold()), + // Superscript/Subscript + $sss, + self::mapUnderline($this->font->getUnderline()), + $bFamily, + $bCharSet, + $reserved + ); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($this->font->getName()); + + $length = strlen($data); + $header = pack("vv", $record, $length); + + return($header . $data); + } + + /** + * Map to BIFF5-BIFF8 codes for bold + * + * @param boolean $bold + * @return int + */ + private static function mapBold($bold) + { + if ($bold) { + return 0x2BC; // 700 = Bold font weight + } + return 0x190; // 400 = Normal font weight + } + + /** + * Map of BIFF2-BIFF8 codes for underline styles + * @static array of int + * + */ + private static $mapUnderline = array( + PHPExcel_Style_Font::UNDERLINE_NONE => 0x00, + PHPExcel_Style_Font::UNDERLINE_SINGLE => 0x01, + PHPExcel_Style_Font::UNDERLINE_DOUBLE => 0x02, + PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING => 0x21, + PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING => 0x22, + ); + + /** + * Map underline + * + * @param string + * @return int + */ + private static function mapUnderline($underline) + { + if (isset(self::$mapUnderline[$underline])) { + return self::$mapUnderline[$underline]; + } + return 0x00; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Parser.php b/assets/excel/PHPExcel/Writer/Excel5/Parser.php new file mode 100644 index 0000000..0cf1c1d --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Parser.php @@ -0,0 +1,1531 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_Parser + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +// Original file header of PEAR::Spreadsheet_Excel_Writer_Parser (used as the base for this class): +// ----------------------------------------------------------------------------------------- +// * Class for parsing Excel formulas +// * +// * License Information: +// * +// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets +// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com +// * +// * This library is free software; you can redistribute it and/or +// * modify it under the terms of the GNU Lesser General Public +// * License as published by the Free Software Foundation; either +// * version 2.1 of the License, or (at your option) any later version. +// * +// * This library is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// * Lesser General Public License for more details. +// * +// * You should have received a copy of the GNU Lesser General Public +// * License along with this library; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +class PHPExcel_Writer_Excel5_Parser +{ + /** Constants */ + // Sheet title in unquoted form + // Invalid sheet title characters cannot occur in the sheet title: + // *:/\?[] + // Moreover, there are valid sheet title characters that cannot occur in unquoted form (there may be more?) + // +-% '^&<>=,;#()"{} + const REGEX_SHEET_TITLE_UNQUOTED = '[^\*\:\/\\\\\?\[\]\+\-\% \\\'\^\&\<\>\=\,\;\#\(\)\"\{\}]+'; + + // Sheet title in quoted form (without surrounding quotes) + // Invalid sheet title characters cannot occur in the sheet title: + // *:/\?[] (usual invalid sheet title characters) + // Single quote is represented as a pair '' + const REGEX_SHEET_TITLE_QUOTED = '(([^\*\:\/\\\\\?\[\]\\\'])+|(\\\'\\\')+)+'; + + /** + * The index of the character we are currently looking at + * @var integer + */ + public $currentCharacter; + + /** + * The token we are working on. + * @var string + */ + public $currentToken; + + /** + * The formula to parse + * @var string + */ + private $formula; + + /** + * The character ahead of the current char + * @var string + */ + public $lookAhead; + + /** + * The parse tree to be generated + * @var string + */ + private $parseTree; + + /** + * Array of external sheets + * @var array + */ + private $externalSheets; + + /** + * Array of sheet references in the form of REF structures + * @var array + */ + public $references; + + /** + * The class constructor + * + */ + public function __construct() + { + $this->currentCharacter = 0; + $this->currentToken = ''; // The token we are working on. + $this->formula = ''; // The formula to parse. + $this->lookAhead = ''; // The character ahead of the current char. + $this->parseTree = ''; // The parse tree to be generated. + $this->initializeHashes(); // Initialize the hashes: ptg's and function's ptg's + $this->externalSheets = array(); + $this->references = array(); + } + + /** + * Initialize the ptg and function hashes. + * + * @access private + */ + private function initializeHashes() + { + // The Excel ptg indices + $this->ptg = array( + 'ptgExp' => 0x01, + 'ptgTbl' => 0x02, + 'ptgAdd' => 0x03, + 'ptgSub' => 0x04, + 'ptgMul' => 0x05, + 'ptgDiv' => 0x06, + 'ptgPower' => 0x07, + 'ptgConcat' => 0x08, + 'ptgLT' => 0x09, + 'ptgLE' => 0x0A, + 'ptgEQ' => 0x0B, + 'ptgGE' => 0x0C, + 'ptgGT' => 0x0D, + 'ptgNE' => 0x0E, + 'ptgIsect' => 0x0F, + 'ptgUnion' => 0x10, + 'ptgRange' => 0x11, + 'ptgUplus' => 0x12, + 'ptgUminus' => 0x13, + 'ptgPercent' => 0x14, + 'ptgParen' => 0x15, + 'ptgMissArg' => 0x16, + 'ptgStr' => 0x17, + 'ptgAttr' => 0x19, + 'ptgSheet' => 0x1A, + 'ptgEndSheet' => 0x1B, + 'ptgErr' => 0x1C, + 'ptgBool' => 0x1D, + 'ptgInt' => 0x1E, + 'ptgNum' => 0x1F, + 'ptgArray' => 0x20, + 'ptgFunc' => 0x21, + 'ptgFuncVar' => 0x22, + 'ptgName' => 0x23, + 'ptgRef' => 0x24, + 'ptgArea' => 0x25, + 'ptgMemArea' => 0x26, + 'ptgMemErr' => 0x27, + 'ptgMemNoMem' => 0x28, + 'ptgMemFunc' => 0x29, + 'ptgRefErr' => 0x2A, + 'ptgAreaErr' => 0x2B, + 'ptgRefN' => 0x2C, + 'ptgAreaN' => 0x2D, + 'ptgMemAreaN' => 0x2E, + 'ptgMemNoMemN' => 0x2F, + 'ptgNameX' => 0x39, + 'ptgRef3d' => 0x3A, + 'ptgArea3d' => 0x3B, + 'ptgRefErr3d' => 0x3C, + 'ptgAreaErr3d' => 0x3D, + 'ptgArrayV' => 0x40, + 'ptgFuncV' => 0x41, + 'ptgFuncVarV' => 0x42, + 'ptgNameV' => 0x43, + 'ptgRefV' => 0x44, + 'ptgAreaV' => 0x45, + 'ptgMemAreaV' => 0x46, + 'ptgMemErrV' => 0x47, + 'ptgMemNoMemV' => 0x48, + 'ptgMemFuncV' => 0x49, + 'ptgRefErrV' => 0x4A, + 'ptgAreaErrV' => 0x4B, + 'ptgRefNV' => 0x4C, + 'ptgAreaNV' => 0x4D, + 'ptgMemAreaNV' => 0x4E, + 'ptgMemNoMemN' => 0x4F, + 'ptgFuncCEV' => 0x58, + 'ptgNameXV' => 0x59, + 'ptgRef3dV' => 0x5A, + 'ptgArea3dV' => 0x5B, + 'ptgRefErr3dV' => 0x5C, + 'ptgAreaErr3d' => 0x5D, + 'ptgArrayA' => 0x60, + 'ptgFuncA' => 0x61, + 'ptgFuncVarA' => 0x62, + 'ptgNameA' => 0x63, + 'ptgRefA' => 0x64, + 'ptgAreaA' => 0x65, + 'ptgMemAreaA' => 0x66, + 'ptgMemErrA' => 0x67, + 'ptgMemNoMemA' => 0x68, + 'ptgMemFuncA' => 0x69, + 'ptgRefErrA' => 0x6A, + 'ptgAreaErrA' => 0x6B, + 'ptgRefNA' => 0x6C, + 'ptgAreaNA' => 0x6D, + 'ptgMemAreaNA' => 0x6E, + 'ptgMemNoMemN' => 0x6F, + 'ptgFuncCEA' => 0x78, + 'ptgNameXA' => 0x79, + 'ptgRef3dA' => 0x7A, + 'ptgArea3dA' => 0x7B, + 'ptgRefErr3dA' => 0x7C, + 'ptgAreaErr3d' => 0x7D + ); + + // Thanks to Michael Meeks and Gnumeric for the initial arg values. + // + // The following hash was generated by "function_locale.pl" in the distro. + // Refer to function_locale.pl for non-English function names. + // + // The array elements are as follow: + // ptg: The Excel function ptg code. + // args: The number of arguments that the function takes: + // >=0 is a fixed number of arguments. + // -1 is a variable number of arguments. + // class: The reference, value or array class of the function args. + // vol: The function is volatile. + // + $this->functions = array( + // function ptg args class vol + 'COUNT' => array( 0, -1, 0, 0 ), + 'IF' => array( 1, -1, 1, 0 ), + 'ISNA' => array( 2, 1, 1, 0 ), + 'ISERROR' => array( 3, 1, 1, 0 ), + 'SUM' => array( 4, -1, 0, 0 ), + 'AVERAGE' => array( 5, -1, 0, 0 ), + 'MIN' => array( 6, -1, 0, 0 ), + 'MAX' => array( 7, -1, 0, 0 ), + 'ROW' => array( 8, -1, 0, 0 ), + 'COLUMN' => array( 9, -1, 0, 0 ), + 'NA' => array( 10, 0, 0, 0 ), + 'NPV' => array( 11, -1, 1, 0 ), + 'STDEV' => array( 12, -1, 0, 0 ), + 'DOLLAR' => array( 13, -1, 1, 0 ), + 'FIXED' => array( 14, -1, 1, 0 ), + 'SIN' => array( 15, 1, 1, 0 ), + 'COS' => array( 16, 1, 1, 0 ), + 'TAN' => array( 17, 1, 1, 0 ), + 'ATAN' => array( 18, 1, 1, 0 ), + 'PI' => array( 19, 0, 1, 0 ), + 'SQRT' => array( 20, 1, 1, 0 ), + 'EXP' => array( 21, 1, 1, 0 ), + 'LN' => array( 22, 1, 1, 0 ), + 'LOG10' => array( 23, 1, 1, 0 ), + 'ABS' => array( 24, 1, 1, 0 ), + 'INT' => array( 25, 1, 1, 0 ), + 'SIGN' => array( 26, 1, 1, 0 ), + 'ROUND' => array( 27, 2, 1, 0 ), + 'LOOKUP' => array( 28, -1, 0, 0 ), + 'INDEX' => array( 29, -1, 0, 1 ), + 'REPT' => array( 30, 2, 1, 0 ), + 'MID' => array( 31, 3, 1, 0 ), + 'LEN' => array( 32, 1, 1, 0 ), + 'VALUE' => array( 33, 1, 1, 0 ), + 'TRUE' => array( 34, 0, 1, 0 ), + 'FALSE' => array( 35, 0, 1, 0 ), + 'AND' => array( 36, -1, 0, 0 ), + 'OR' => array( 37, -1, 0, 0 ), + 'NOT' => array( 38, 1, 1, 0 ), + 'MOD' => array( 39, 2, 1, 0 ), + 'DCOUNT' => array( 40, 3, 0, 0 ), + 'DSUM' => array( 41, 3, 0, 0 ), + 'DAVERAGE' => array( 42, 3, 0, 0 ), + 'DMIN' => array( 43, 3, 0, 0 ), + 'DMAX' => array( 44, 3, 0, 0 ), + 'DSTDEV' => array( 45, 3, 0, 0 ), + 'VAR' => array( 46, -1, 0, 0 ), + 'DVAR' => array( 47, 3, 0, 0 ), + 'TEXT' => array( 48, 2, 1, 0 ), + 'LINEST' => array( 49, -1, 0, 0 ), + 'TREND' => array( 50, -1, 0, 0 ), + 'LOGEST' => array( 51, -1, 0, 0 ), + 'GROWTH' => array( 52, -1, 0, 0 ), + 'PV' => array( 56, -1, 1, 0 ), + 'FV' => array( 57, -1, 1, 0 ), + 'NPER' => array( 58, -1, 1, 0 ), + 'PMT' => array( 59, -1, 1, 0 ), + 'RATE' => array( 60, -1, 1, 0 ), + 'MIRR' => array( 61, 3, 0, 0 ), + 'IRR' => array( 62, -1, 0, 0 ), + 'RAND' => array( 63, 0, 1, 1 ), + 'MATCH' => array( 64, -1, 0, 0 ), + 'DATE' => array( 65, 3, 1, 0 ), + 'TIME' => array( 66, 3, 1, 0 ), + 'DAY' => array( 67, 1, 1, 0 ), + 'MONTH' => array( 68, 1, 1, 0 ), + 'YEAR' => array( 69, 1, 1, 0 ), + 'WEEKDAY' => array( 70, -1, 1, 0 ), + 'HOUR' => array( 71, 1, 1, 0 ), + 'MINUTE' => array( 72, 1, 1, 0 ), + 'SECOND' => array( 73, 1, 1, 0 ), + 'NOW' => array( 74, 0, 1, 1 ), + 'AREAS' => array( 75, 1, 0, 1 ), + 'ROWS' => array( 76, 1, 0, 1 ), + 'COLUMNS' => array( 77, 1, 0, 1 ), + 'OFFSET' => array( 78, -1, 0, 1 ), + 'SEARCH' => array( 82, -1, 1, 0 ), + 'TRANSPOSE' => array( 83, 1, 1, 0 ), + 'TYPE' => array( 86, 1, 1, 0 ), + 'ATAN2' => array( 97, 2, 1, 0 ), + 'ASIN' => array( 98, 1, 1, 0 ), + 'ACOS' => array( 99, 1, 1, 0 ), + 'CHOOSE' => array( 100, -1, 1, 0 ), + 'HLOOKUP' => array( 101, -1, 0, 0 ), + 'VLOOKUP' => array( 102, -1, 0, 0 ), + 'ISREF' => array( 105, 1, 0, 0 ), + 'LOG' => array( 109, -1, 1, 0 ), + 'CHAR' => array( 111, 1, 1, 0 ), + 'LOWER' => array( 112, 1, 1, 0 ), + 'UPPER' => array( 113, 1, 1, 0 ), + 'PROPER' => array( 114, 1, 1, 0 ), + 'LEFT' => array( 115, -1, 1, 0 ), + 'RIGHT' => array( 116, -1, 1, 0 ), + 'EXACT' => array( 117, 2, 1, 0 ), + 'TRIM' => array( 118, 1, 1, 0 ), + 'REPLACE' => array( 119, 4, 1, 0 ), + 'SUBSTITUTE' => array( 120, -1, 1, 0 ), + 'CODE' => array( 121, 1, 1, 0 ), + 'FIND' => array( 124, -1, 1, 0 ), + 'CELL' => array( 125, -1, 0, 1 ), + 'ISERR' => array( 126, 1, 1, 0 ), + 'ISTEXT' => array( 127, 1, 1, 0 ), + 'ISNUMBER' => array( 128, 1, 1, 0 ), + 'ISBLANK' => array( 129, 1, 1, 0 ), + 'T' => array( 130, 1, 0, 0 ), + 'N' => array( 131, 1, 0, 0 ), + 'DATEVALUE' => array( 140, 1, 1, 0 ), + 'TIMEVALUE' => array( 141, 1, 1, 0 ), + 'SLN' => array( 142, 3, 1, 0 ), + 'SYD' => array( 143, 4, 1, 0 ), + 'DDB' => array( 144, -1, 1, 0 ), + 'INDIRECT' => array( 148, -1, 1, 1 ), + 'CALL' => array( 150, -1, 1, 0 ), + 'CLEAN' => array( 162, 1, 1, 0 ), + 'MDETERM' => array( 163, 1, 2, 0 ), + 'MINVERSE' => array( 164, 1, 2, 0 ), + 'MMULT' => array( 165, 2, 2, 0 ), + 'IPMT' => array( 167, -1, 1, 0 ), + 'PPMT' => array( 168, -1, 1, 0 ), + 'COUNTA' => array( 169, -1, 0, 0 ), + 'PRODUCT' => array( 183, -1, 0, 0 ), + 'FACT' => array( 184, 1, 1, 0 ), + 'DPRODUCT' => array( 189, 3, 0, 0 ), + 'ISNONTEXT' => array( 190, 1, 1, 0 ), + 'STDEVP' => array( 193, -1, 0, 0 ), + 'VARP' => array( 194, -1, 0, 0 ), + 'DSTDEVP' => array( 195, 3, 0, 0 ), + 'DVARP' => array( 196, 3, 0, 0 ), + 'TRUNC' => array( 197, -1, 1, 0 ), + 'ISLOGICAL' => array( 198, 1, 1, 0 ), + 'DCOUNTA' => array( 199, 3, 0, 0 ), + 'USDOLLAR' => array( 204, -1, 1, 0 ), + 'FINDB' => array( 205, -1, 1, 0 ), + 'SEARCHB' => array( 206, -1, 1, 0 ), + 'REPLACEB' => array( 207, 4, 1, 0 ), + 'LEFTB' => array( 208, -1, 1, 0 ), + 'RIGHTB' => array( 209, -1, 1, 0 ), + 'MIDB' => array( 210, 3, 1, 0 ), + 'LENB' => array( 211, 1, 1, 0 ), + 'ROUNDUP' => array( 212, 2, 1, 0 ), + 'ROUNDDOWN' => array( 213, 2, 1, 0 ), + 'ASC' => array( 214, 1, 1, 0 ), + 'DBCS' => array( 215, 1, 1, 0 ), + 'RANK' => array( 216, -1, 0, 0 ), + 'ADDRESS' => array( 219, -1, 1, 0 ), + 'DAYS360' => array( 220, -1, 1, 0 ), + 'TODAY' => array( 221, 0, 1, 1 ), + 'VDB' => array( 222, -1, 1, 0 ), + 'MEDIAN' => array( 227, -1, 0, 0 ), + 'SUMPRODUCT' => array( 228, -1, 2, 0 ), + 'SINH' => array( 229, 1, 1, 0 ), + 'COSH' => array( 230, 1, 1, 0 ), + 'TANH' => array( 231, 1, 1, 0 ), + 'ASINH' => array( 232, 1, 1, 0 ), + 'ACOSH' => array( 233, 1, 1, 0 ), + 'ATANH' => array( 234, 1, 1, 0 ), + 'DGET' => array( 235, 3, 0, 0 ), + 'INFO' => array( 244, 1, 1, 1 ), + 'DB' => array( 247, -1, 1, 0 ), + 'FREQUENCY' => array( 252, 2, 0, 0 ), + 'ERROR.TYPE' => array( 261, 1, 1, 0 ), + 'REGISTER.ID' => array( 267, -1, 1, 0 ), + 'AVEDEV' => array( 269, -1, 0, 0 ), + 'BETADIST' => array( 270, -1, 1, 0 ), + 'GAMMALN' => array( 271, 1, 1, 0 ), + 'BETAINV' => array( 272, -1, 1, 0 ), + 'BINOMDIST' => array( 273, 4, 1, 0 ), + 'CHIDIST' => array( 274, 2, 1, 0 ), + 'CHIINV' => array( 275, 2, 1, 0 ), + 'COMBIN' => array( 276, 2, 1, 0 ), + 'CONFIDENCE' => array( 277, 3, 1, 0 ), + 'CRITBINOM' => array( 278, 3, 1, 0 ), + 'EVEN' => array( 279, 1, 1, 0 ), + 'EXPONDIST' => array( 280, 3, 1, 0 ), + 'FDIST' => array( 281, 3, 1, 0 ), + 'FINV' => array( 282, 3, 1, 0 ), + 'FISHER' => array( 283, 1, 1, 0 ), + 'FISHERINV' => array( 284, 1, 1, 0 ), + 'FLOOR' => array( 285, 2, 1, 0 ), + 'GAMMADIST' => array( 286, 4, 1, 0 ), + 'GAMMAINV' => array( 287, 3, 1, 0 ), + 'CEILING' => array( 288, 2, 1, 0 ), + 'HYPGEOMDIST' => array( 289, 4, 1, 0 ), + 'LOGNORMDIST' => array( 290, 3, 1, 0 ), + 'LOGINV' => array( 291, 3, 1, 0 ), + 'NEGBINOMDIST' => array( 292, 3, 1, 0 ), + 'NORMDIST' => array( 293, 4, 1, 0 ), + 'NORMSDIST' => array( 294, 1, 1, 0 ), + 'NORMINV' => array( 295, 3, 1, 0 ), + 'NORMSINV' => array( 296, 1, 1, 0 ), + 'STANDARDIZE' => array( 297, 3, 1, 0 ), + 'ODD' => array( 298, 1, 1, 0 ), + 'PERMUT' => array( 299, 2, 1, 0 ), + 'POISSON' => array( 300, 3, 1, 0 ), + 'TDIST' => array( 301, 3, 1, 0 ), + 'WEIBULL' => array( 302, 4, 1, 0 ), + 'SUMXMY2' => array( 303, 2, 2, 0 ), + 'SUMX2MY2' => array( 304, 2, 2, 0 ), + 'SUMX2PY2' => array( 305, 2, 2, 0 ), + 'CHITEST' => array( 306, 2, 2, 0 ), + 'CORREL' => array( 307, 2, 2, 0 ), + 'COVAR' => array( 308, 2, 2, 0 ), + 'FORECAST' => array( 309, 3, 2, 0 ), + 'FTEST' => array( 310, 2, 2, 0 ), + 'INTERCEPT' => array( 311, 2, 2, 0 ), + 'PEARSON' => array( 312, 2, 2, 0 ), + 'RSQ' => array( 313, 2, 2, 0 ), + 'STEYX' => array( 314, 2, 2, 0 ), + 'SLOPE' => array( 315, 2, 2, 0 ), + 'TTEST' => array( 316, 4, 2, 0 ), + 'PROB' => array( 317, -1, 2, 0 ), + 'DEVSQ' => array( 318, -1, 0, 0 ), + 'GEOMEAN' => array( 319, -1, 0, 0 ), + 'HARMEAN' => array( 320, -1, 0, 0 ), + 'SUMSQ' => array( 321, -1, 0, 0 ), + 'KURT' => array( 322, -1, 0, 0 ), + 'SKEW' => array( 323, -1, 0, 0 ), + 'ZTEST' => array( 324, -1, 0, 0 ), + 'LARGE' => array( 325, 2, 0, 0 ), + 'SMALL' => array( 326, 2, 0, 0 ), + 'QUARTILE' => array( 327, 2, 0, 0 ), + 'PERCENTILE' => array( 328, 2, 0, 0 ), + 'PERCENTRANK' => array( 329, -1, 0, 0 ), + 'MODE' => array( 330, -1, 2, 0 ), + 'TRIMMEAN' => array( 331, 2, 0, 0 ), + 'TINV' => array( 332, 2, 1, 0 ), + 'CONCATENATE' => array( 336, -1, 1, 0 ), + 'POWER' => array( 337, 2, 1, 0 ), + 'RADIANS' => array( 342, 1, 1, 0 ), + 'DEGREES' => array( 343, 1, 1, 0 ), + 'SUBTOTAL' => array( 344, -1, 0, 0 ), + 'SUMIF' => array( 345, -1, 0, 0 ), + 'COUNTIF' => array( 346, 2, 0, 0 ), + 'COUNTBLANK' => array( 347, 1, 0, 0 ), + 'ISPMT' => array( 350, 4, 1, 0 ), + 'DATEDIF' => array( 351, 3, 1, 0 ), + 'DATESTRING' => array( 352, 1, 1, 0 ), + 'NUMBERSTRING' => array( 353, 2, 1, 0 ), + 'ROMAN' => array( 354, -1, 1, 0 ), + 'GETPIVOTDATA' => array( 358, -1, 0, 0 ), + 'HYPERLINK' => array( 359, -1, 1, 0 ), + 'PHONETIC' => array( 360, 1, 0, 0 ), + 'AVERAGEA' => array( 361, -1, 0, 0 ), + 'MAXA' => array( 362, -1, 0, 0 ), + 'MINA' => array( 363, -1, 0, 0 ), + 'STDEVPA' => array( 364, -1, 0, 0 ), + 'VARPA' => array( 365, -1, 0, 0 ), + 'STDEVA' => array( 366, -1, 0, 0 ), + 'VARA' => array( 367, -1, 0, 0 ), + 'BAHTTEXT' => array( 368, 1, 0, 0 ), + ); + } + + /** + * Convert a token to the proper ptg value. + * + * @access private + * @param mixed $token The token to convert. + * @return mixed the converted token on success + */ + private function convert($token) + { + if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $token)) { + return $this->convertString($token); + + } elseif (is_numeric($token)) { + return $this->convertNumber($token); + + // match references like A1 or $A$1 + } elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/', $token)) { + return $this->convertRef2d($token); + + // match external references like Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1 + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u", $token)) { + return $this->convertRef3d($token); + + // match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1 + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?(\d+)$/u", $token)) { + return $this->convertRef3d($token); + + // match ranges like A1:B2 or $A$1:$B$2 + } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/', $token)) { + return $this->convertRange2d($token); + + // match external ranges like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2 + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u", $token)) { + return $this->convertRange3d($token); + + // match external ranges like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2 + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)\:\\$?([A-Ia-i]?[A-Za-z])?\\$?(\d+)$/u", $token)) { + return $this->convertRange3d($token); + + // operators (including parentheses) + } elseif (isset($this->ptg[$token])) { + return pack("C", $this->ptg[$token]); + + // match error codes + } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A') { + return $this->convertError($token); + + // commented so argument number can be processed correctly. See toReversePolish(). + /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/", $token)) + { + return($this->convertFunction($token, $this->_func_args)); + }*/ + + // if it's an argument, ignore the token (the argument remains) + } elseif ($token == 'arg') { + return ''; + } + + // TODO: use real error codes + throw new PHPExcel_Writer_Exception("Unknown token $token"); + } + + /** + * Convert a number token to ptgInt or ptgNum + * + * @access private + * @param mixed $num an integer or double for conversion to its ptg value + */ + private function convertNumber($num) + { + // Integer in the range 0..2**16-1 + if ((preg_match("/^\d+$/", $num)) and ($num <= 65535)) { + return pack("Cv", $this->ptg['ptgInt'], $num); + } else { // A float + if (PHPExcel_Writer_Excel5_BIFFwriter::getByteOrder()) { // if it's Big Endian + $num = strrev($num); + } + return pack("Cd", $this->ptg['ptgNum'], $num); + } + } + + /** + * Convert a string token to ptgStr + * + * @access private + * @param string $string A string for conversion to its ptg value. + * @return mixed the converted token on success + */ + private function convertString($string) + { + // chop away beggining and ending quotes + $string = substr($string, 1, strlen($string) - 2); + if (strlen($string) > 255) { + throw new PHPExcel_Writer_Exception("String is too long"); + } + + return pack('C', $this->ptg['ptgStr']) . PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($string); + } + + /** + * Convert a function to a ptgFunc or ptgFuncVarV depending on the number of + * args that it takes. + * + * @access private + * @param string $token The name of the function for convertion to ptg value. + * @param integer $num_args The number of arguments the function receives. + * @return string The packed ptg for the function + */ + private function convertFunction($token, $num_args) + { + $args = $this->functions[$token][1]; +// $volatile = $this->functions[$token][3]; + + // Fixed number of args eg. TIME($i, $j, $k). + if ($args >= 0) { + return pack("Cv", $this->ptg['ptgFuncV'], $this->functions[$token][0]); + } + // Variable number of args eg. SUM($i, $j, $k, ..). + if ($args == -1) { + return pack("CCv", $this->ptg['ptgFuncVarV'], $num_args, $this->functions[$token][0]); + } + } + + /** + * Convert an Excel range such as A1:D4 to a ptgRefV. + * + * @access private + * @param string $range An Excel range in the A1:A2 + * @param int $class + */ + private function convertRange2d($range, $class = 0) + { + + // TODO: possible class value 0,1,2 check Formula.pm + // Split the range into 2 cell refs + if (preg_match('/^(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)\:(\$)?([A-Ia-i]?[A-Za-z])(\$)?(\d+)$/', $range)) { + list($cell1, $cell2) = explode(':', $range); + } else { + // TODO: use real error codes + throw new PHPExcel_Writer_Exception("Unknown range separator"); + } + + // Convert the cell references + list($row1, $col1) = $this->cellToPackedRowcol($cell1); + list($row2, $col2) = $this->cellToPackedRowcol($cell2); + + // The ptg value depends on the class of the ptg. + if ($class == 0) { + $ptgArea = pack("C", $this->ptg['ptgArea']); + } elseif ($class == 1) { + $ptgArea = pack("C", $this->ptg['ptgAreaV']); + } elseif ($class == 2) { + $ptgArea = pack("C", $this->ptg['ptgAreaA']); + } else { + // TODO: use real error codes + throw new PHPExcel_Writer_Exception("Unknown class $class"); + } + return $ptgArea . $row1 . $row2 . $col1. $col2; + } + + /** + * Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to + * a ptgArea3d. + * + * @access private + * @param string $token An Excel range in the Sheet1!A1:A2 format. + * @return mixed The packed ptgArea3d token on success. + */ + private function convertRange3d($token) + { +// $class = 0; // formulas like Sheet1!$A$1:$A$2 in list type data validation need this class (0x3B) + + // Split the ref at the ! symbol + list($ext_ref, $range) = explode('!', $token); + + // Convert the external reference part (different for BIFF8) + $ext_ref = $this->getRefIndex($ext_ref); + + // Split the range into 2 cell refs + list($cell1, $cell2) = explode(':', $range); + + // Convert the cell references + if (preg_match("/^(\\$)?[A-Ia-i]?[A-Za-z](\\$)?(\d+)$/", $cell1)) { + list($row1, $col1) = $this->cellToPackedRowcol($cell1); + list($row2, $col2) = $this->cellToPackedRowcol($cell2); + } else { // It's a rows range (like 26:27) + list($row1, $col1, $row2, $col2) = $this->rangeToPackedRange($cell1.':'.$cell2); + } + + // The ptg value depends on the class of the ptg. +// if ($class == 0) { + $ptgArea = pack("C", $this->ptg['ptgArea3d']); +// } elseif ($class == 1) { +// $ptgArea = pack("C", $this->ptg['ptgArea3dV']); +// } elseif ($class == 2) { +// $ptgArea = pack("C", $this->ptg['ptgArea3dA']); +// } else { +// throw new PHPExcel_Writer_Exception("Unknown class $class"); +// } + + return $ptgArea . $ext_ref . $row1 . $row2 . $col1. $col2; + } + + /** + * Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV. + * + * @access private + * @param string $cell An Excel cell reference + * @return string The cell in packed() format with the corresponding ptg + */ + private function convertRef2d($cell) + { +// $class = 2; // as far as I know, this is magick. + + // Convert the cell reference + $cell_array = $this->cellToPackedRowcol($cell); + list($row, $col) = $cell_array; + + // The ptg value depends on the class of the ptg. +// if ($class == 0) { +// $ptgRef = pack("C", $this->ptg['ptgRef']); +// } elseif ($class == 1) { +// $ptgRef = pack("C", $this->ptg['ptgRefV']); +// } elseif ($class == 2) { + $ptgRef = pack("C", $this->ptg['ptgRefA']); +// } else { +// // TODO: use real error codes +// throw new PHPExcel_Writer_Exception("Unknown class $class"); +// } + return $ptgRef.$row.$col; + } + + /** + * Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a + * ptgRef3d. + * + * @access private + * @param string $cell An Excel cell reference + * @return mixed The packed ptgRef3d token on success. + */ + private function convertRef3d($cell) + { +// $class = 2; // as far as I know, this is magick. + + // Split the ref at the ! symbol + list($ext_ref, $cell) = explode('!', $cell); + + // Convert the external reference part (different for BIFF8) + $ext_ref = $this->getRefIndex($ext_ref); + + // Convert the cell reference part + list($row, $col) = $this->cellToPackedRowcol($cell); + + // The ptg value depends on the class of the ptg. +// if ($class == 0) { +// $ptgRef = pack("C", $this->ptg['ptgRef3d']); +// } elseif ($class == 1) { +// $ptgRef = pack("C", $this->ptg['ptgRef3dV']); +// } elseif ($class == 2) { + $ptgRef = pack("C", $this->ptg['ptgRef3dA']); +// } else { +// throw new PHPExcel_Writer_Exception("Unknown class $class"); +// } + + return $ptgRef . $ext_ref. $row . $col; + } + + /** + * Convert an error code to a ptgErr + * + * @access private + * @param string $errorCode The error code for conversion to its ptg value + * @return string The error code ptgErr + */ + private function convertError($errorCode) + { + switch ($errorCode) { + case '#NULL!': + return pack("C", 0x00); + case '#DIV/0!': + return pack("C", 0x07); + case '#VALUE!': + return pack("C", 0x0F); + case '#REF!': + return pack("C", 0x17); + case '#NAME?': + return pack("C", 0x1D); + case '#NUM!': + return pack("C", 0x24); + case '#N/A': + return pack("C", 0x2A); + } + return pack("C", 0xFF); + } + + /** + * Convert the sheet name part of an external reference, for example "Sheet1" or + * "Sheet1:Sheet2", to a packed structure. + * + * @access private + * @param string $ext_ref The name of the external reference + * @return string The reference index in packed() format + */ + private function packExtRef($ext_ref) + { + $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any. + $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any. + + // Check if there is a sheet range eg., Sheet1:Sheet2. + if (preg_match("/:/", $ext_ref)) { + list($sheet_name1, $sheet_name2) = explode(':', $ext_ref); + + $sheet1 = $this->getSheetIndex($sheet_name1); + if ($sheet1 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name1 in formula"); + } + $sheet2 = $this->getSheetIndex($sheet_name2); + if ($sheet2 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name2 in formula"); + } + + // Reverse max and min sheet numbers if necessary + if ($sheet1 > $sheet2) { + list($sheet1, $sheet2) = array($sheet2, $sheet1); + } + } else { // Single sheet name only. + $sheet1 = $this->getSheetIndex($ext_ref); + if ($sheet1 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $ext_ref in formula"); + } + $sheet2 = $sheet1; + } + + // References are stored relative to 0xFFFF. + $offset = -1 - $sheet1; + + return pack('vdvv', $offset, 0x00, $sheet1, $sheet2); + } + + /** + * Look up the REF index that corresponds to an external sheet name + * (or range). If it doesn't exist yet add it to the workbook's references + * array. It assumes all sheet names given must exist. + * + * @access private + * @param string $ext_ref The name of the external reference + * @return mixed The reference index in packed() format on success + */ + private function getRefIndex($ext_ref) + { + $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any. + $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any. + $ext_ref = str_replace('\'\'', '\'', $ext_ref); // Replace escaped '' with ' + + // Check if there is a sheet range eg., Sheet1:Sheet2. + if (preg_match("/:/", $ext_ref)) { + list($sheet_name1, $sheet_name2) = explode(':', $ext_ref); + + $sheet1 = $this->getSheetIndex($sheet_name1); + if ($sheet1 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name1 in formula"); + } + $sheet2 = $this->getSheetIndex($sheet_name2); + if ($sheet2 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $sheet_name2 in formula"); + } + + // Reverse max and min sheet numbers if necessary + if ($sheet1 > $sheet2) { + list($sheet1, $sheet2) = array($sheet2, $sheet1); + } + } else { // Single sheet name only. + $sheet1 = $this->getSheetIndex($ext_ref); + if ($sheet1 == -1) { + throw new PHPExcel_Writer_Exception("Unknown sheet name $ext_ref in formula"); + } + $sheet2 = $sheet1; + } + + // assume all references belong to this document + $supbook_index = 0x00; + $ref = pack('vvv', $supbook_index, $sheet1, $sheet2); + $totalreferences = count($this->references); + $index = -1; + for ($i = 0; $i < $totalreferences; ++$i) { + if ($ref == $this->references[$i]) { + $index = $i; + break; + } + } + // if REF was not found add it to references array + if ($index == -1) { + $this->references[$totalreferences] = $ref; + $index = $totalreferences; + } + + return pack('v', $index); + } + + /** + * Look up the index that corresponds to an external sheet name. The hash of + * sheet names is updated by the addworksheet() method of the + * PHPExcel_Writer_Excel5_Workbook class. + * + * @access private + * @param string $sheet_name Sheet name + * @return integer The sheet index, -1 if the sheet was not found + */ + private function getSheetIndex($sheet_name) + { + if (!isset($this->externalSheets[$sheet_name])) { + return -1; + } else { + return $this->externalSheets[$sheet_name]; + } + } + + /** + * This method is used to update the array of sheet names. It is + * called by the addWorksheet() method of the + * PHPExcel_Writer_Excel5_Workbook class. + * + * @access public + * @see PHPExcel_Writer_Excel5_Workbook::addWorksheet() + * @param string $name The name of the worksheet being added + * @param integer $index The index of the worksheet being added + */ + public function setExtSheet($name, $index) + { + $this->externalSheets[$name] = $index; + } + + /** + * pack() row and column into the required 3 or 4 byte format. + * + * @access private + * @param string $cell The Excel cell reference to be packed + * @return array Array containing the row and column in packed() format + */ + private function cellToPackedRowcol($cell) + { + $cell = strtoupper($cell); + list($row, $col, $row_rel, $col_rel) = $this->cellToRowcol($cell); + if ($col >= 256) { + throw new PHPExcel_Writer_Exception("Column in: $cell greater than 255"); + } + if ($row >= 65536) { + throw new PHPExcel_Writer_Exception("Row in: $cell greater than 65536 "); + } + + // Set the high bits to indicate if row or col are relative. + $col |= $col_rel << 14; + $col |= $row_rel << 15; + $col = pack('v', $col); + + $row = pack('v', $row); + + return array($row, $col); + } + + /** + * pack() row range into the required 3 or 4 byte format. + * Just using maximum col/rows, which is probably not the correct solution + * + * @access private + * @param string $range The Excel range to be packed + * @return array Array containing (row1,col1,row2,col2) in packed() format + */ + private function rangeToPackedRange($range) + { + preg_match('/(\$)?(\d+)\:(\$)?(\d+)/', $range, $match); + // return absolute rows if there is a $ in the ref + $row1_rel = empty($match[1]) ? 1 : 0; + $row1 = $match[2]; + $row2_rel = empty($match[3]) ? 1 : 0; + $row2 = $match[4]; + // Convert 1-index to zero-index + --$row1; + --$row2; + // Trick poor inocent Excel + $col1 = 0; + $col2 = 65535; // FIXME: maximum possible value for Excel 5 (change this!!!) + + // FIXME: this changes for BIFF8 + if (($row1 >= 65536) or ($row2 >= 65536)) { + throw new PHPExcel_Writer_Exception("Row in: $range greater than 65536 "); + } + + // Set the high bits to indicate if rows are relative. + $col1 |= $row1_rel << 15; + $col2 |= $row2_rel << 15; + $col1 = pack('v', $col1); + $col2 = pack('v', $col2); + + $row1 = pack('v', $row1); + $row2 = pack('v', $row2); + + return array($row1, $col1, $row2, $col2); + } + + /** + * Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero + * indexed row and column number. Also returns two (0,1) values to indicate + * whether the row or column are relative references. + * + * @access private + * @param string $cell The Excel cell reference in A1 format. + * @return array + */ + private function cellToRowcol($cell) + { + preg_match('/(\$)?([A-I]?[A-Z])(\$)?(\d+)/', $cell, $match); + // return absolute column if there is a $ in the ref + $col_rel = empty($match[1]) ? 1 : 0; + $col_ref = $match[2]; + $row_rel = empty($match[3]) ? 1 : 0; + $row = $match[4]; + + // Convert base26 column string to a number. + $expn = strlen($col_ref) - 1; + $col = 0; + $col_ref_length = strlen($col_ref); + for ($i = 0; $i < $col_ref_length; ++$i) { + $col += (ord($col_ref{$i}) - 64) * pow(26, $expn); + --$expn; + } + + // Convert 1-index to zero-index + --$row; + --$col; + + return array($row, $col, $row_rel, $col_rel); + } + + /** + * Advance to the next valid token. + * + * @access private + */ + private function advance() + { + $i = $this->currentCharacter; + $formula_length = strlen($this->formula); + // eat up white spaces + if ($i < $formula_length) { + while ($this->formula{$i} == " ") { + ++$i; + } + + if ($i < ($formula_length - 1)) { + $this->lookAhead = $this->formula{$i+1}; + } + $token = ''; + } + + while ($i < $formula_length) { + $token .= $this->formula{$i}; + + if ($i < ($formula_length - 1)) { + $this->lookAhead = $this->formula{$i+1}; + } else { + $this->lookAhead = ''; + } + + if ($this->match($token) != '') { + //if ($i < strlen($this->formula) - 1) { + // $this->lookAhead = $this->formula{$i+1}; + //} + $this->currentCharacter = $i + 1; + $this->currentToken = $token; + return 1; + } + + if ($i < ($formula_length - 2)) { + $this->lookAhead = $this->formula{$i+2}; + } else { // if we run out of characters lookAhead becomes empty + $this->lookAhead = ''; + } + ++$i; + } + //die("Lexical error ".$this->currentCharacter); + } + + /** + * Checks if it's a valid token. + * + * @access private + * @param mixed $token The token to check. + * @return mixed The checked token or false on failure + */ + private function match($token) + { + switch ($token) { + case "+": + case "-": + case "*": + case "/": + case "(": + case ")": + case ",": + case ";": + case ">=": + case "<=": + case "=": + case "<>": + case "^": + case "&": + case "%": + return $token; + break; + case ">": + if ($this->lookAhead == '=') { // it's a GE token + break; + } + return $token; + break; + case "<": + // it's a LE or a NE token + if (($this->lookAhead == '=') or ($this->lookAhead == '>')) { + break; + } + return $token; + break; + default: + // if it's a reference A1 or $A$1 or $A1 or A$1 + if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.') and ($this->lookAhead != '!')) { + return $token; + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.')) { + // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1) + return $token; + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead) and ($this->lookAhead != ':') and ($this->lookAhead != '.')) { + // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1) + return $token; + } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $token) && !preg_match("/[0-9]/", $this->lookAhead)) { + // if it's a range A1:A2 or $A$1:$A$2 + return $token; + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead)) { + // If it's an external range like Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2 + return $token; + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $token) and !preg_match("/[0-9]/", $this->lookAhead)) { + // If it's an external range like 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1:Sheet2'!$A$1:$B$2 + return $token; + } elseif (is_numeric($token) and (!is_numeric($token.$this->lookAhead) or ($this->lookAhead == '')) and ($this->lookAhead != '!') and ($this->lookAhead != ':')) { + // If it's a number (check that it's not a sheet name or range) + return $token; + } elseif (preg_match("/\"([^\"]|\"\"){0,255}\"/", $token) and $this->lookAhead != '"' and (substr_count($token, '"')%2 == 0)) { + // If it's a string (of maximum 255 characters) + return $token; + } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $token) or $token == '#N/A') { + // If it's an error code + return $token; + } elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i", $token) and ($this->lookAhead == "(")) { + // if it's a function call + return $token; + } elseif (substr($token, -1) == ')') { + // It's an argument of some description (e.g. a named range), + // precise nature yet to be determined + return $token; + } + return ''; + } + } + + /** + * The parsing method. It parses a formula. + * + * @access public + * @param string $formula The formula to parse, without the initial equal + * sign (=). + * @return mixed true on success + */ + public function parse($formula) + { + $this->currentCharacter = 0; + $this->formula = $formula; + $this->lookAhead = isset($formula{1}) ? $formula{1} : ''; + $this->advance(); + $this->parseTree = $this->condition(); + return true; + } + + /** + * It parses a condition. It assumes the following rule: + * Cond -> Expr [(">" | "<") Expr] + * + * @access private + * @return mixed The parsed ptg'd tree on success + */ + private function condition() + { + $result = $this->expression(); + if ($this->currentToken == "<") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgLT', $result, $result2); + } elseif ($this->currentToken == ">") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgGT', $result, $result2); + } elseif ($this->currentToken == "<=") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgLE', $result, $result2); + } elseif ($this->currentToken == ">=") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgGE', $result, $result2); + } elseif ($this->currentToken == "=") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgEQ', $result, $result2); + } elseif ($this->currentToken == "<>") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgNE', $result, $result2); + } elseif ($this->currentToken == "&") { + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgConcat', $result, $result2); + } + return $result; + } + + /** + * It parses a expression. It assumes the following rule: + * Expr -> Term [("+" | "-") Term] + * -> "string" + * -> "-" Term : Negative value + * -> "+" Term : Positive value + * -> Error code + * + * @access private + * @return mixed The parsed ptg'd tree on success + */ + private function expression() + { + // If it's a string return a string node + if (preg_match("/\"([^\"]|\"\"){0,255}\"/", $this->currentToken)) { + $tmp = str_replace('""', '"', $this->currentToken); + if (($tmp == '"') || ($tmp == '')) { + // Trap for "" that has been used for an empty string + $tmp = '""'; + } + $result = $this->createTree($tmp, '', ''); + $this->advance(); + return $result; + // If it's an error code + } elseif (preg_match("/^#[A-Z0\/]{3,5}[!?]{1}$/", $this->currentToken) or $this->currentToken == '#N/A') { + $result = $this->createTree($this->currentToken, 'ptgErr', ''); + $this->advance(); + return $result; + // If it's a negative value + } elseif ($this->currentToken == "-") { + // catch "-" Term + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgUminus', $result2, ''); + return $result; + // If it's a positive value + } elseif ($this->currentToken == "+") { + // catch "+" Term + $this->advance(); + $result2 = $this->expression(); + $result = $this->createTree('ptgUplus', $result2, ''); + return $result; + } + $result = $this->term(); + while (($this->currentToken == "+") or + ($this->currentToken == "-") or + ($this->currentToken == "^")) { + /**/ + if ($this->currentToken == "+") { + $this->advance(); + $result2 = $this->term(); + $result = $this->createTree('ptgAdd', $result, $result2); + } elseif ($this->currentToken == "-") { + $this->advance(); + $result2 = $this->term(); + $result = $this->createTree('ptgSub', $result, $result2); + } else { + $this->advance(); + $result2 = $this->term(); + $result = $this->createTree('ptgPower', $result, $result2); + } + } + return $result; + } + + /** + * This function just introduces a ptgParen element in the tree, so that Excel + * doesn't get confused when working with a parenthesized formula afterwards. + * + * @access private + * @see fact() + * @return array The parsed ptg'd tree + */ + private function parenthesizedExpression() + { + $result = $this->createTree('ptgParen', $this->expression(), ''); + return $result; + } + + /** + * It parses a term. It assumes the following rule: + * Term -> Fact [("*" | "/") Fact] + * + * @access private + * @return mixed The parsed ptg'd tree on success + */ + private function term() + { + $result = $this->fact(); + while (($this->currentToken == "*") or + ($this->currentToken == "/")) { + /**/ + if ($this->currentToken == "*") { + $this->advance(); + $result2 = $this->fact(); + $result = $this->createTree('ptgMul', $result, $result2); + } else { + $this->advance(); + $result2 = $this->fact(); + $result = $this->createTree('ptgDiv', $result, $result2); + } + } + return $result; + } + + /** + * It parses a factor. It assumes the following rule: + * Fact -> ( Expr ) + * | CellRef + * | CellRange + * | Number + * | Function + * + * @access private + * @return mixed The parsed ptg'd tree on success + */ + private function fact() + { + if ($this->currentToken == "(") { + $this->advance(); // eat the "(" + $result = $this->parenthesizedExpression(); + if ($this->currentToken != ")") { + throw new PHPExcel_Writer_Exception("')' token expected."); + } + $this->advance(); // eat the ")" + return $result; + } + // if it's a reference + if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/', $this->currentToken)) { + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $this->currentToken)) { + // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1 or Sheet1!$A$1 or Sheet1:Sheet2!$A$1) + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?[A-Ia-i]?[A-Za-z]\\$?[0-9]+$/u", $this->currentToken)) { + // If it's an external reference ('Sheet1'!A1 or 'Sheet1:Sheet2'!A1 or 'Sheet1'!$A$1 or 'Sheet1:Sheet2'!$A$1) + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $this->currentToken) or + preg_match('/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/', $this->currentToken)) { + // if it's a range A1:B2 or $A$1:$B$2 + // must be an error? + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (preg_match("/^" . self::REGEX_SHEET_TITLE_UNQUOTED . "(\:" . self::REGEX_SHEET_TITLE_UNQUOTED . ")?\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $this->currentToken)) { + // If it's an external range (Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 or Sheet1!$A$1:$B$2 or Sheet1:Sheet2!$A$1:$B$2) + // must be an error? + //$result = $this->currentToken; + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (preg_match("/^'" . self::REGEX_SHEET_TITLE_QUOTED . "(\:" . self::REGEX_SHEET_TITLE_QUOTED . ")?'\!\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+:\\$?([A-Ia-i]?[A-Za-z])?\\$?[0-9]+$/u", $this->currentToken)) { + // If it's an external range ('Sheet1'!A1:B2 or 'Sheet1'!A1:B2 or 'Sheet1'!$A$1:$B$2 or 'Sheet1'!$A$1:$B$2) + // must be an error? + //$result = $this->currentToken; + $result = $this->createTree($this->currentToken, '', ''); + $this->advance(); + return $result; + } elseif (is_numeric($this->currentToken)) { + // If it's a number or a percent + if ($this->lookAhead == '%') { + $result = $this->createTree('ptgPercent', $this->currentToken, ''); + $this->advance(); // Skip the percentage operator once we've pre-built that tree + } else { + $result = $this->createTree($this->currentToken, '', ''); + } + $this->advance(); + return $result; + } elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i", $this->currentToken)) { + // if it's a function call + $result = $this->func(); + return $result; + } + throw new PHPExcel_Writer_Exception("Syntax error: ".$this->currentToken.", lookahead: ".$this->lookAhead.", current char: ".$this->currentCharacter); + } + + /** + * It parses a function call. It assumes the following rule: + * Func -> ( Expr [,Expr]* ) + * + * @access private + * @return mixed The parsed ptg'd tree on success + */ + private function func() + { + $num_args = 0; // number of arguments received + $function = strtoupper($this->currentToken); + $result = ''; // initialize result + $this->advance(); + $this->advance(); // eat the "(" + while ($this->currentToken != ')') { + /**/ + if ($num_args > 0) { + if ($this->currentToken == "," || $this->currentToken == ";") { + $this->advance(); // eat the "," or ";" + } else { + throw new PHPExcel_Writer_Exception("Syntax error: comma expected in function $function, arg #{$num_args}"); + } + $result2 = $this->condition(); + $result = $this->createTree('arg', $result, $result2); + } else { // first argument + $result2 = $this->condition(); + $result = $this->createTree('arg', '', $result2); + } + ++$num_args; + } + if (!isset($this->functions[$function])) { + throw new PHPExcel_Writer_Exception("Function $function() doesn't exist"); + } + $args = $this->functions[$function][1]; + // If fixed number of args eg. TIME($i, $j, $k). Check that the number of args is valid. + if (($args >= 0) and ($args != $num_args)) { + throw new PHPExcel_Writer_Exception("Incorrect number of arguments in function $function() "); + } + + $result = $this->createTree($function, $result, $num_args); + $this->advance(); // eat the ")" + return $result; + } + + /** + * Creates a tree. In fact an array which may have one or two arrays (sub-trees) + * as elements. + * + * @access private + * @param mixed $value The value of this node. + * @param mixed $left The left array (sub-tree) or a final node. + * @param mixed $right The right array (sub-tree) or a final node. + * @return array A tree + */ + private function createTree($value, $left, $right) + { + return array('value' => $value, 'left' => $left, 'right' => $right); + } + + /** + * Builds a string containing the tree in reverse polish notation (What you + * would use in a HP calculator stack). + * The following tree: + * + * + + * / \ + * 2 3 + * + * produces: "23+" + * + * The following tree: + * + * + + * / \ + * 3 * + * / \ + * 6 A1 + * + * produces: "36A1*+" + * + * In fact all operands, functions, references, etc... are written as ptg's + * + * @access public + * @param array $tree The optional tree to convert. + * @return string The tree in reverse polish notation + */ + public function toReversePolish($tree = array()) + { + $polish = ""; // the string we are going to return + if (empty($tree)) { // If it's the first call use parseTree + $tree = $this->parseTree; + } + + if (is_array($tree['left'])) { + $converted_tree = $this->toReversePolish($tree['left']); + $polish .= $converted_tree; + } elseif ($tree['left'] != '') { // It's a final node + $converted_tree = $this->convert($tree['left']); + $polish .= $converted_tree; + } + if (is_array($tree['right'])) { + $converted_tree = $this->toReversePolish($tree['right']); + $polish .= $converted_tree; + } elseif ($tree['right'] != '') { // It's a final node + $converted_tree = $this->convert($tree['right']); + $polish .= $converted_tree; + } + // if it's a function convert it here (so we can set it's arguments) + if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/", $tree['value']) and + !preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/', $tree['value']) and + !preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/", $tree['value']) and + !is_numeric($tree['value']) and + !isset($this->ptg[$tree['value']])) { + // left subtree for a function is always an array. + if ($tree['left'] != '') { + $left_tree = $this->toReversePolish($tree['left']); + } else { + $left_tree = ''; + } + // add it's left subtree and return. + return $left_tree.$this->convertFunction($tree['value'], $tree['right']); + } else { + $converted_tree = $this->convert($tree['value']); + } + $polish .= $converted_tree; + return $polish; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Workbook.php b/assets/excel/PHPExcel/Writer/Excel5/Workbook.php new file mode 100644 index 0000000..8b06843 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Workbook.php @@ -0,0 +1,1444 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_Workbook + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +// Original file header of PEAR::Spreadsheet_Excel_Writer_Workbook (used as the base for this class): +// ----------------------------------------------------------------------------------------- +// /* +// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> +// * +// * The majority of this is _NOT_ my code. I simply ported it from the +// * PERL Spreadsheet::WriteExcel module. +// * +// * The author of the Spreadsheet::WriteExcel module is John McNamara +// * <jmcnamara@cpan.org> +// * +// * I _DO_ maintain this code, and John McNamara has nothing to do with the +// * porting of this code to PHP. Any questions directly related to this +// * class library should be directed to me. +// * +// * License Information: +// * +// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets +// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com +// * +// * This library is free software; you can redistribute it and/or +// * modify it under the terms of the GNU Lesser General Public +// * License as published by the Free Software Foundation; either +// * version 2.1 of the License, or (at your option) any later version. +// * +// * This library is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// * Lesser General Public License for more details. +// * +// * You should have received a copy of the GNU Lesser General Public +// * License along with this library; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +class PHPExcel_Writer_Excel5_Workbook extends PHPExcel_Writer_Excel5_BIFFwriter +{ + /** + * Formula parser + * + * @var PHPExcel_Writer_Excel5_Parser + */ + private $parser; + + /** + * The BIFF file size for the workbook. + * @var integer + * @see calcSheetOffsets() + */ + private $biffSize; + + /** + * XF Writers + * @var PHPExcel_Writer_Excel5_Xf[] + */ + private $xfWriters = array(); + + /** + * Array containing the colour palette + * @var array + */ + private $palette; + + /** + * The codepage indicates the text encoding used for strings + * @var integer + */ + private $codepage; + + /** + * The country code used for localization + * @var integer + */ + private $countryCode; + + /** + * Workbook + * @var PHPExcel + */ + private $phpExcel; + + /** + * Fonts writers + * + * @var PHPExcel_Writer_Excel5_Font[] + */ + private $fontWriters = array(); + + /** + * Added fonts. Maps from font's hash => index in workbook + * + * @var array + */ + private $addedFonts = array(); + + /** + * Shared number formats + * + * @var array + */ + private $numberFormats = array(); + + /** + * Added number formats. Maps from numberFormat's hash => index in workbook + * + * @var array + */ + private $addedNumberFormats = array(); + + /** + * Sizes of the binary worksheet streams + * + * @var array + */ + private $worksheetSizes = array(); + + /** + * Offsets of the binary worksheet streams relative to the start of the global workbook stream + * + * @var array + */ + private $worksheetOffsets = array(); + + /** + * Total number of shared strings in workbook + * + * @var int + */ + private $stringTotal; + + /** + * Number of unique shared strings in workbook + * + * @var int + */ + private $stringUnique; + + /** + * Array of unique shared strings in workbook + * + * @var array + */ + private $stringTable; + + /** + * Color cache + */ + private $colors; + + /** + * Escher object corresponding to MSODRAWINGGROUP + * + * @var PHPExcel_Shared_Escher + */ + private $escher; + + + /** + * Class constructor + * + * @param PHPExcel $phpExcel The Workbook + * @param int &$str_total Total number of strings + * @param int &$str_unique Total number of unique strings + * @param array &$str_table String Table + * @param array &$colors Colour Table + * @param mixed $parser The formula parser created for the Workbook + */ + public function __construct(PHPExcel $phpExcel = null, &$str_total, &$str_unique, &$str_table, &$colors, $parser) + { + // It needs to call its parent's constructor explicitly + parent::__construct(); + + $this->parser = $parser; + $this->biffSize = 0; + $this->palette = array(); + $this->countryCode = -1; + + $this->stringTotal = &$str_total; + $this->stringUnique = &$str_unique; + $this->stringTable = &$str_table; + $this->colors = &$colors; + $this->setPaletteXl97(); + + $this->phpExcel = $phpExcel; + + // set BIFFwriter limit for CONTINUE records + // $this->_limit = 8224; + $this->codepage = 0x04B0; + + // Add empty sheets and Build color cache + $countSheets = $phpExcel->getSheetCount(); + for ($i = 0; $i < $countSheets; ++$i) { + $phpSheet = $phpExcel->getSheet($i); + + $this->parser->setExtSheet($phpSheet->getTitle(), $i); // Register worksheet name with parser + + $supbook_index = 0x00; + $ref = pack('vvv', $supbook_index, $i, $i); + $this->parser->references[] = $ref; // Register reference with parser + + // Sheet tab colors? + if ($phpSheet->isTabColorSet()) { + $this->addColor($phpSheet->getTabColor()->getRGB()); + } + } + + } + + /** + * Add a new XF writer + * + * @param PHPExcel_Style + * @param boolean Is it a style XF? + * @return int Index to XF record + */ + public function addXfWriter($style, $isStyleXf = false) + { + $xfWriter = new PHPExcel_Writer_Excel5_Xf($style); + $xfWriter->setIsStyleXf($isStyleXf); + + // Add the font if not already added + $fontIndex = $this->addFont($style->getFont()); + + // Assign the font index to the xf record + $xfWriter->setFontIndex($fontIndex); + + // Background colors, best to treat these after the font so black will come after white in custom palette + $xfWriter->setFgColor($this->addColor($style->getFill()->getStartColor()->getRGB())); + $xfWriter->setBgColor($this->addColor($style->getFill()->getEndColor()->getRGB())); + $xfWriter->setBottomColor($this->addColor($style->getBorders()->getBottom()->getColor()->getRGB())); + $xfWriter->setTopColor($this->addColor($style->getBorders()->getTop()->getColor()->getRGB())); + $xfWriter->setRightColor($this->addColor($style->getBorders()->getRight()->getColor()->getRGB())); + $xfWriter->setLeftColor($this->addColor($style->getBorders()->getLeft()->getColor()->getRGB())); + $xfWriter->setDiagColor($this->addColor($style->getBorders()->getDiagonal()->getColor()->getRGB())); + + // Add the number format if it is not a built-in one and not already added + if ($style->getNumberFormat()->getBuiltInFormatCode() === false) { + $numberFormatHashCode = $style->getNumberFormat()->getHashCode(); + + if (isset($this->addedNumberFormats[$numberFormatHashCode])) { + $numberFormatIndex = $this->addedNumberFormats[$numberFormatHashCode]; + } else { + $numberFormatIndex = 164 + count($this->numberFormats); + $this->numberFormats[$numberFormatIndex] = $style->getNumberFormat(); + $this->addedNumberFormats[$numberFormatHashCode] = $numberFormatIndex; + } + } else { + $numberFormatIndex = (int) $style->getNumberFormat()->getBuiltInFormatCode(); + } + + // Assign the number format index to xf record + $xfWriter->setNumberFormatIndex($numberFormatIndex); + + $this->xfWriters[] = $xfWriter; + + $xfIndex = count($this->xfWriters) - 1; + return $xfIndex; + } + + /** + * Add a font to added fonts + * + * @param PHPExcel_Style_Font $font + * @return int Index to FONT record + */ + public function addFont(PHPExcel_Style_Font $font) + { + $fontHashCode = $font->getHashCode(); + if (isset($this->addedFonts[$fontHashCode])) { + $fontIndex = $this->addedFonts[$fontHashCode]; + } else { + $countFonts = count($this->fontWriters); + $fontIndex = ($countFonts < 4) ? $countFonts : $countFonts + 1; + + $fontWriter = new PHPExcel_Writer_Excel5_Font($font); + $fontWriter->setColorIndex($this->addColor($font->getColor()->getRGB())); + $this->fontWriters[] = $fontWriter; + + $this->addedFonts[$fontHashCode] = $fontIndex; + } + return $fontIndex; + } + + /** + * Alter color palette adding a custom color + * + * @param string $rgb E.g. 'FF00AA' + * @return int Color index + */ + private function addColor($rgb) + { + if (!isset($this->colors[$rgb])) { + if (count($this->colors) < 57) { + // then we add a custom color altering the palette + $colorIndex = 8 + count($this->colors); + $this->palette[$colorIndex] = + array( + hexdec(substr($rgb, 0, 2)), + hexdec(substr($rgb, 2, 2)), + hexdec(substr($rgb, 4)), + 0 + ); + $this->colors[$rgb] = $colorIndex; + } else { + // no room for more custom colors, just map to black + $colorIndex = 0; + } + } else { + // fetch already added custom color + $colorIndex = $this->colors[$rgb]; + } + + return $colorIndex; + } + + /** + * Sets the colour palette to the Excel 97+ default. + * + * @access private + */ + private function setPaletteXl97() + { + $this->palette = array( + 0x08 => array(0x00, 0x00, 0x00, 0x00), + 0x09 => array(0xff, 0xff, 0xff, 0x00), + 0x0A => array(0xff, 0x00, 0x00, 0x00), + 0x0B => array(0x00, 0xff, 0x00, 0x00), + 0x0C => array(0x00, 0x00, 0xff, 0x00), + 0x0D => array(0xff, 0xff, 0x00, 0x00), + 0x0E => array(0xff, 0x00, 0xff, 0x00), + 0x0F => array(0x00, 0xff, 0xff, 0x00), + 0x10 => array(0x80, 0x00, 0x00, 0x00), + 0x11 => array(0x00, 0x80, 0x00, 0x00), + 0x12 => array(0x00, 0x00, 0x80, 0x00), + 0x13 => array(0x80, 0x80, 0x00, 0x00), + 0x14 => array(0x80, 0x00, 0x80, 0x00), + 0x15 => array(0x00, 0x80, 0x80, 0x00), + 0x16 => array(0xc0, 0xc0, 0xc0, 0x00), + 0x17 => array(0x80, 0x80, 0x80, 0x00), + 0x18 => array(0x99, 0x99, 0xff, 0x00), + 0x19 => array(0x99, 0x33, 0x66, 0x00), + 0x1A => array(0xff, 0xff, 0xcc, 0x00), + 0x1B => array(0xcc, 0xff, 0xff, 0x00), + 0x1C => array(0x66, 0x00, 0x66, 0x00), + 0x1D => array(0xff, 0x80, 0x80, 0x00), + 0x1E => array(0x00, 0x66, 0xcc, 0x00), + 0x1F => array(0xcc, 0xcc, 0xff, 0x00), + 0x20 => array(0x00, 0x00, 0x80, 0x00), + 0x21 => array(0xff, 0x00, 0xff, 0x00), + 0x22 => array(0xff, 0xff, 0x00, 0x00), + 0x23 => array(0x00, 0xff, 0xff, 0x00), + 0x24 => array(0x80, 0x00, 0x80, 0x00), + 0x25 => array(0x80, 0x00, 0x00, 0x00), + 0x26 => array(0x00, 0x80, 0x80, 0x00), + 0x27 => array(0x00, 0x00, 0xff, 0x00), + 0x28 => array(0x00, 0xcc, 0xff, 0x00), + 0x29 => array(0xcc, 0xff, 0xff, 0x00), + 0x2A => array(0xcc, 0xff, 0xcc, 0x00), + 0x2B => array(0xff, 0xff, 0x99, 0x00), + 0x2C => array(0x99, 0xcc, 0xff, 0x00), + 0x2D => array(0xff, 0x99, 0xcc, 0x00), + 0x2E => array(0xcc, 0x99, 0xff, 0x00), + 0x2F => array(0xff, 0xcc, 0x99, 0x00), + 0x30 => array(0x33, 0x66, 0xff, 0x00), + 0x31 => array(0x33, 0xcc, 0xcc, 0x00), + 0x32 => array(0x99, 0xcc, 0x00, 0x00), + 0x33 => array(0xff, 0xcc, 0x00, 0x00), + 0x34 => array(0xff, 0x99, 0x00, 0x00), + 0x35 => array(0xff, 0x66, 0x00, 0x00), + 0x36 => array(0x66, 0x66, 0x99, 0x00), + 0x37 => array(0x96, 0x96, 0x96, 0x00), + 0x38 => array(0x00, 0x33, 0x66, 0x00), + 0x39 => array(0x33, 0x99, 0x66, 0x00), + 0x3A => array(0x00, 0x33, 0x00, 0x00), + 0x3B => array(0x33, 0x33, 0x00, 0x00), + 0x3C => array(0x99, 0x33, 0x00, 0x00), + 0x3D => array(0x99, 0x33, 0x66, 0x00), + 0x3E => array(0x33, 0x33, 0x99, 0x00), + 0x3F => array(0x33, 0x33, 0x33, 0x00), + ); + } + + /** + * Assemble worksheets into a workbook and send the BIFF data to an OLE + * storage. + * + * @param array $pWorksheetSizes The sizes in bytes of the binary worksheet streams + * @return string Binary data for workbook stream + */ + public function writeWorkbook($pWorksheetSizes = null) + { + $this->worksheetSizes = $pWorksheetSizes; + + // Calculate the number of selected worksheet tabs and call the finalization + // methods for each worksheet + $total_worksheets = $this->phpExcel->getSheetCount(); + + // Add part 1 of the Workbook globals, what goes before the SHEET records + $this->storeBof(0x0005); + $this->writeCodepage(); + $this->writeWindow1(); + + $this->writeDateMode(); + $this->writeAllFonts(); + $this->writeAllNumberFormats(); + $this->writeAllXfs(); + $this->writeAllStyles(); + $this->writePalette(); + + // Prepare part 3 of the workbook global stream, what goes after the SHEET records + $part3 = ''; + if ($this->countryCode != -1) { + $part3 .= $this->writeCountry(); + } + $part3 .= $this->writeRecalcId(); + + $part3 .= $this->writeSupbookInternal(); + /* TODO: store external SUPBOOK records and XCT and CRN records + in case of external references for BIFF8 */ + $part3 .= $this->writeExternalsheetBiff8(); + $part3 .= $this->writeAllDefinedNamesBiff8(); + $part3 .= $this->writeMsoDrawingGroup(); + $part3 .= $this->writeSharedStringsTable(); + + $part3 .= $this->writeEof(); + + // Add part 2 of the Workbook globals, the SHEET records + $this->calcSheetOffsets(); + for ($i = 0; $i < $total_worksheets; ++$i) { + $this->writeBoundSheet($this->phpExcel->getSheet($i), $this->worksheetOffsets[$i]); + } + + // Add part 3 of the Workbook globals + $this->_data .= $part3; + + return $this->_data; + } + + /** + * Calculate offsets for Worksheet BOF records. + * + * @access private + */ + private function calcSheetOffsets() + { + $boundsheet_length = 10; // fixed length for a BOUNDSHEET record + + // size of Workbook globals part 1 + 3 + $offset = $this->_datasize; + + // add size of Workbook globals part 2, the length of the SHEET records + $total_worksheets = count($this->phpExcel->getAllSheets()); + foreach ($this->phpExcel->getWorksheetIterator() as $sheet) { + $offset += $boundsheet_length + strlen(PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheet->getTitle())); + } + + // add the sizes of each of the Sheet substreams, respectively + for ($i = 0; $i < $total_worksheets; ++$i) { + $this->worksheetOffsets[$i] = $offset; + $offset += $this->worksheetSizes[$i]; + } + $this->biffSize = $offset; + } + + /** + * Store the Excel FONT records. + */ + private function writeAllFonts() + { + foreach ($this->fontWriters as $fontWriter) { + $this->append($fontWriter->writeFont()); + } + } + + /** + * Store user defined numerical formats i.e. FORMAT records + */ + private function writeAllNumberFormats() + { + foreach ($this->numberFormats as $numberFormatIndex => $numberFormat) { + $this->writeNumberFormat($numberFormat->getFormatCode(), $numberFormatIndex); + } + } + + /** + * Write all XF records. + */ + private function writeAllXfs() + { + foreach ($this->xfWriters as $xfWriter) { + $this->append($xfWriter->writeXf()); + } + } + + /** + * Write all STYLE records. + */ + private function writeAllStyles() + { + $this->writeStyle(); + } + + /** + * Write the EXTERNCOUNT and EXTERNSHEET records. These are used as indexes for + * the NAME records. + */ + private function writeExternals() + { + $countSheets = $this->phpExcel->getSheetCount(); + // Create EXTERNCOUNT with number of worksheets + $this->writeExternalCount($countSheets); + + // Create EXTERNSHEET for each worksheet + for ($i = 0; $i < $countSheets; ++$i) { + $this->writeExternalSheet($this->phpExcel->getSheet($i)->getTitle()); + } + } + + /** + * Write the NAME record to define the print area and the repeat rows and cols. + */ + private function writeNames() + { + // total number of sheets + $total_worksheets = $this->phpExcel->getSheetCount(); + + // Create the print area NAME records + for ($i = 0; $i < $total_worksheets; ++$i) { + $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); + // Write a Name record if the print area has been defined + if ($sheetSetup->isPrintAreaSet()) { + // Print area + $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea()); + $printArea = $printArea[0]; + $printArea[0] = PHPExcel_Cell::coordinateFromString($printArea[0]); + $printArea[1] = PHPExcel_Cell::coordinateFromString($printArea[1]); + + $print_rowmin = $printArea[0][1] - 1; + $print_rowmax = $printArea[1][1] - 1; + $print_colmin = PHPExcel_Cell::columnIndexFromString($printArea[0][0]) - 1; + $print_colmax = PHPExcel_Cell::columnIndexFromString($printArea[1][0]) - 1; + + $this->writeNameShort( + $i, // sheet index + 0x06, // NAME type + $print_rowmin, + $print_rowmax, + $print_colmin, + $print_colmax + ); + } + } + + // Create the print title NAME records + for ($i = 0; $i < $total_worksheets; ++$i) { + $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); + + // simultaneous repeatColumns repeatRows + if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) { + $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); + $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; + $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; + + $repeat = $sheetSetup->getRowsToRepeatAtTop(); + $rowmin = $repeat[0] - 1; + $rowmax = $repeat[1] - 1; + + $this->writeNameLong( + $i, // sheet index + 0x07, // NAME type + $rowmin, + $rowmax, + $colmin, + $colmax + ); + + // (exclusive) either repeatColumns or repeatRows + } elseif ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) { + // Columns to repeat + if ($sheetSetup->isColumnsToRepeatAtLeftSet()) { + $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); + $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; + $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; + } else { + $colmin = 0; + $colmax = 255; + } + + // Rows to repeat + if ($sheetSetup->isRowsToRepeatAtTopSet()) { + $repeat = $sheetSetup->getRowsToRepeatAtTop(); + $rowmin = $repeat[0] - 1; + $rowmax = $repeat[1] - 1; + } else { + $rowmin = 0; + $rowmax = 65535; + } + + $this->writeNameShort( + $i, // sheet index + 0x07, // NAME type + $rowmin, + $rowmax, + $colmin, + $colmax + ); + } + } + } + + /** + * Writes all the DEFINEDNAME records (BIFF8). + * So far this is only used for repeating rows/columns (print titles) and print areas + */ + private function writeAllDefinedNamesBiff8() + { + $chunk = ''; + + // Named ranges + if (count($this->phpExcel->getNamedRanges()) > 0) { + // Loop named ranges + $namedRanges = $this->phpExcel->getNamedRanges(); + foreach ($namedRanges as $namedRange) { + // Create absolute coordinate + $range = PHPExcel_Cell::splitRange($namedRange->getRange()); + for ($i = 0; $i < count($range); $i++) { + $range[$i][0] = '\'' . str_replace("'", "''", $namedRange->getWorksheet()->getTitle()) . '\'!' . PHPExcel_Cell::absoluteCoordinate($range[$i][0]); + if (isset($range[$i][1])) { + $range[$i][1] = PHPExcel_Cell::absoluteCoordinate($range[$i][1]); + } + } + $range = PHPExcel_Cell::buildRange($range); // e.g. Sheet1!$A$1:$B$2 + + // parse formula + try { + $error = $this->parser->parse($range); + $formulaData = $this->parser->toReversePolish(); + + // make sure tRef3d is of type tRef3dR (0x3A) + if (isset($formulaData{0}) and ($formulaData{0} == "\x7A" or $formulaData{0} == "\x5A")) { + $formulaData = "\x3A" . substr($formulaData, 1); + } + + if ($namedRange->getLocalOnly()) { + // local scope + $scope = $this->phpExcel->getIndex($namedRange->getScope()) + 1; + } else { + // global scope + $scope = 0; + } + $chunk .= $this->writeData($this->writeDefinedNameBiff8($namedRange->getName(), $formulaData, $scope, false)); + + } catch (PHPExcel_Exception $e) { + // do nothing + } + } + } + + // total number of sheets + $total_worksheets = $this->phpExcel->getSheetCount(); + + // write the print titles (repeating rows, columns), if any + for ($i = 0; $i < $total_worksheets; ++$i) { + $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); + // simultaneous repeatColumns repeatRows + if ($sheetSetup->isColumnsToRepeatAtLeftSet() && $sheetSetup->isRowsToRepeatAtTopSet()) { + $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); + $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; + $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; + + $repeat = $sheetSetup->getRowsToRepeatAtTop(); + $rowmin = $repeat[0] - 1; + $rowmax = $repeat[1] - 1; + + // construct formula data manually + $formulaData = pack('Cv', 0x29, 0x17); // tMemFunc + $formulaData .= pack('Cvvvvv', 0x3B, $i, 0, 65535, $colmin, $colmax); // tArea3d + $formulaData .= pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, 0, 255); // tArea3d + $formulaData .= pack('C', 0x10); // tList + + // store the DEFINEDNAME record + $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true)); + + // (exclusive) either repeatColumns or repeatRows + } elseif ($sheetSetup->isColumnsToRepeatAtLeftSet() || $sheetSetup->isRowsToRepeatAtTopSet()) { + // Columns to repeat + if ($sheetSetup->isColumnsToRepeatAtLeftSet()) { + $repeat = $sheetSetup->getColumnsToRepeatAtLeft(); + $colmin = PHPExcel_Cell::columnIndexFromString($repeat[0]) - 1; + $colmax = PHPExcel_Cell::columnIndexFromString($repeat[1]) - 1; + } else { + $colmin = 0; + $colmax = 255; + } + // Rows to repeat + if ($sheetSetup->isRowsToRepeatAtTopSet()) { + $repeat = $sheetSetup->getRowsToRepeatAtTop(); + $rowmin = $repeat[0] - 1; + $rowmax = $repeat[1] - 1; + } else { + $rowmin = 0; + $rowmax = 65535; + } + + // construct formula data manually because parser does not recognize absolute 3d cell references + $formulaData = pack('Cvvvvv', 0x3B, $i, $rowmin, $rowmax, $colmin, $colmax); + + // store the DEFINEDNAME record + $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x07), $formulaData, $i + 1, true)); + } + } + + // write the print areas, if any + for ($i = 0; $i < $total_worksheets; ++$i) { + $sheetSetup = $this->phpExcel->getSheet($i)->getPageSetup(); + if ($sheetSetup->isPrintAreaSet()) { + // Print area, e.g. A3:J6,H1:X20 + $printArea = PHPExcel_Cell::splitRange($sheetSetup->getPrintArea()); + $countPrintArea = count($printArea); + + $formulaData = ''; + for ($j = 0; $j < $countPrintArea; ++$j) { + $printAreaRect = $printArea[$j]; // e.g. A3:J6 + $printAreaRect[0] = PHPExcel_Cell::coordinateFromString($printAreaRect[0]); + $printAreaRect[1] = PHPExcel_Cell::coordinateFromString($printAreaRect[1]); + + $print_rowmin = $printAreaRect[0][1] - 1; + $print_rowmax = $printAreaRect[1][1] - 1; + $print_colmin = PHPExcel_Cell::columnIndexFromString($printAreaRect[0][0]) - 1; + $print_colmax = PHPExcel_Cell::columnIndexFromString($printAreaRect[1][0]) - 1; + + // construct formula data manually because parser does not recognize absolute 3d cell references + $formulaData .= pack('Cvvvvv', 0x3B, $i, $print_rowmin, $print_rowmax, $print_colmin, $print_colmax); + + if ($j > 0) { + $formulaData .= pack('C', 0x10); // list operator token ',' + } + } + + // store the DEFINEDNAME record + $chunk .= $this->writeData($this->writeDefinedNameBiff8(pack('C', 0x06), $formulaData, $i + 1, true)); + } + } + + // write autofilters, if any + for ($i = 0; $i < $total_worksheets; ++$i) { + $sheetAutoFilter = $this->phpExcel->getSheet($i)->getAutoFilter(); + $autoFilterRange = $sheetAutoFilter->getRange(); + if (!empty($autoFilterRange)) { + $rangeBounds = PHPExcel_Cell::rangeBoundaries($autoFilterRange); + + //Autofilter built in name + $name = pack('C', 0x0D); + + $chunk .= $this->writeData($this->writeShortNameBiff8($name, $i + 1, $rangeBounds, true)); + } + } + + return $chunk; + } + + /** + * Write a DEFINEDNAME record for BIFF8 using explicit binary formula data + * + * @param string $name The name in UTF-8 + * @param string $formulaData The binary formula data + * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global + * @param boolean $isBuiltIn Built-in name? + * @return string Complete binary record data + */ + private function writeDefinedNameBiff8($name, $formulaData, $sheetIndex = 0, $isBuiltIn = false) + { + $record = 0x0018; + + // option flags + $options = $isBuiltIn ? 0x20 : 0x00; + + // length of the name, character count + $nlen = PHPExcel_Shared_String::CountCharacters($name); + + // name with stripped length field + $name = substr(PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($name), 2); + + // size of the formula (in bytes) + $sz = strlen($formulaData); + + // combine the parts + $data = pack('vCCvvvCCCC', $options, 0, $nlen, $sz, 0, $sheetIndex, 0, 0, 0, 0) + . $name . $formulaData; + $length = strlen($data); + + $header = pack('vv', $record, $length); + + return $header . $data; + } + + /** + * Write a short NAME record + * + * @param string $name + * @param string $sheetIndex 1-based sheet index the defined name applies to. 0 = global + * @param integer[][] $rangeBounds range boundaries + * @param boolean $isHidden + * @return string Complete binary record data + * */ + private function writeShortNameBiff8($name, $sheetIndex = 0, $rangeBounds, $isHidden = false) + { + $record = 0x0018; + + // option flags + $options = ($isHidden ? 0x21 : 0x00); + + $extra = pack( + 'Cvvvvv', + 0x3B, + $sheetIndex - 1, + $rangeBounds[0][1] - 1, + $rangeBounds[1][1] - 1, + $rangeBounds[0][0] - 1, + $rangeBounds[1][0] - 1 + ); + + // size of the formula (in bytes) + $sz = strlen($extra); + + // combine the parts + $data = pack('vCCvvvCCCCC', $options, 0, 1, $sz, 0, $sheetIndex, 0, 0, 0, 0, 0) + . $name . $extra; + $length = strlen($data); + + $header = pack('vv', $record, $length); + + return $header . $data; + } + + /** + * Stores the CODEPAGE biff record. + */ + private function writeCodepage() + { + $record = 0x0042; // Record identifier + $length = 0x0002; // Number of bytes to follow + $cv = $this->codepage; // The code page + + $header = pack('vv', $record, $length); + $data = pack('v', $cv); + + $this->append($header . $data); + } + + /** + * Write Excel BIFF WINDOW1 record. + */ + private function writeWindow1() + { + $record = 0x003D; // Record identifier + $length = 0x0012; // Number of bytes to follow + + $xWn = 0x0000; // Horizontal position of window + $yWn = 0x0000; // Vertical position of window + $dxWn = 0x25BC; // Width of window + $dyWn = 0x1572; // Height of window + + $grbit = 0x0038; // Option flags + + // not supported by PHPExcel, so there is only one selected sheet, the active + $ctabsel = 1; // Number of workbook tabs selected + + $wTabRatio = 0x0258; // Tab to scrollbar ratio + + // not supported by PHPExcel, set to 0 + $itabFirst = 0; // 1st displayed worksheet + $itabCur = $this->phpExcel->getActiveSheetIndex(); // Active worksheet + + $header = pack("vv", $record, $length); + $data = pack("vvvvvvvvv", $xWn, $yWn, $dxWn, $dyWn, $grbit, $itabCur, $itabFirst, $ctabsel, $wTabRatio); + $this->append($header . $data); + } + + /** + * Writes Excel BIFF BOUNDSHEET record. + * + * @param PHPExcel_Worksheet $sheet Worksheet name + * @param integer $offset Location of worksheet BOF + */ + private function writeBoundSheet($sheet, $offset) + { + $sheetname = $sheet->getTitle(); + $record = 0x0085; // Record identifier + + // sheet state + switch ($sheet->getSheetState()) { + case PHPExcel_Worksheet::SHEETSTATE_VISIBLE: + $ss = 0x00; + break; + case PHPExcel_Worksheet::SHEETSTATE_HIDDEN: + $ss = 0x01; + break; + case PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN: + $ss = 0x02; + break; + default: + $ss = 0x00; + break; + } + + // sheet type + $st = 0x00; + + $grbit = 0x0000; // Visibility and sheet type + + $data = pack("VCC", $offset, $ss, $st); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($sheetname); + + $length = strlen($data); + $header = pack("vv", $record, $length); + $this->append($header . $data); + } + + /** + * Write Internal SUPBOOK record + */ + private function writeSupbookInternal() + { + $record = 0x01AE; // Record identifier + $length = 0x0004; // Bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("vv", $this->phpExcel->getSheetCount(), 0x0401); + return $this->writeData($header . $data); + } + + /** + * Writes the Excel BIFF EXTERNSHEET record. These references are used by + * formulas. + * + */ + private function writeExternalsheetBiff8() + { + $totalReferences = count($this->parser->references); + $record = 0x0017; // Record identifier + $length = 2 + 6 * $totalReferences; // Number of bytes to follow + + $supbook_index = 0; // FIXME: only using internal SUPBOOK record + $header = pack("vv", $record, $length); + $data = pack('v', $totalReferences); + for ($i = 0; $i < $totalReferences; ++$i) { + $data .= $this->parser->references[$i]; + } + return $this->writeData($header . $data); + } + + /** + * Write Excel BIFF STYLE records. + */ + private function writeStyle() + { + $record = 0x0293; // Record identifier + $length = 0x0004; // Bytes to follow + + $ixfe = 0x8000; // Index to cell style XF + $BuiltIn = 0x00; // Built-in style + $iLevel = 0xff; // Outline style level + + $header = pack("vv", $record, $length); + $data = pack("vCC", $ixfe, $BuiltIn, $iLevel); + $this->append($header . $data); + } + + /** + * Writes Excel FORMAT record for non "built-in" numerical formats. + * + * @param string $format Custom format string + * @param integer $ifmt Format index code + */ + private function writeNumberFormat($format, $ifmt) + { + $record = 0x041E; // Record identifier + + $numberFormatString = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($format); + $length = 2 + strlen($numberFormatString); // Number of bytes to follow + + + $header = pack("vv", $record, $length); + $data = pack("v", $ifmt) . $numberFormatString; + $this->append($header . $data); + } + + /** + * Write DATEMODE record to indicate the date system in use (1904 or 1900). + */ + private function writeDateMode() + { + $record = 0x0022; // Record identifier + $length = 0x0002; // Bytes to follow + + $f1904 = (PHPExcel_Shared_Date::getExcelCalendar() == PHPExcel_Shared_Date::CALENDAR_MAC_1904) + ? 1 + : 0; // Flag for 1904 date system + + $header = pack("vv", $record, $length); + $data = pack("v", $f1904); + $this->append($header . $data); + } + + /** + * Write BIFF record EXTERNCOUNT to indicate the number of external sheet + * references in the workbook. + * + * Excel only stores references to external sheets that are used in NAME. + * The workbook NAME record is required to define the print area and the repeat + * rows and columns. + * + * A similar method is used in Worksheet.php for a slightly different purpose. + * + * @param integer $cxals Number of external references + */ + private function writeExternalCount($cxals) + { + $record = 0x0016; // Record identifier + $length = 0x0002; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("v", $cxals); + $this->append($header . $data); + } + + /** + * Writes the Excel BIFF EXTERNSHEET record. These references are used by + * formulas. NAME record is required to define the print area and the repeat + * rows and columns. + * + * A similar method is used in Worksheet.php for a slightly different purpose. + * + * @param string $sheetname Worksheet name + */ + private function writeExternalSheet($sheetname) + { + $record = 0x0017; // Record identifier + $length = 0x02 + strlen($sheetname); // Number of bytes to follow + + $cch = strlen($sheetname); // Length of sheet name + $rgch = 0x03; // Filename encoding + + $header = pack("vv", $record, $length); + $data = pack("CC", $cch, $rgch); + $this->append($header . $data . $sheetname); + } + + /** + * Store the NAME record in the short format that is used for storing the print + * area, repeat rows only and repeat columns only. + * + * @param integer $index Sheet index + * @param integer $type Built-in name type + * @param integer $rowmin Start row + * @param integer $rowmax End row + * @param integer $colmin Start colum + * @param integer $colmax End column + */ + private function writeNameShort($index, $type, $rowmin, $rowmax, $colmin, $colmax) + { + $record = 0x0018; // Record identifier + $length = 0x0024; // Number of bytes to follow + + $grbit = 0x0020; // Option flags + $chKey = 0x00; // Keyboard shortcut + $cch = 0x01; // Length of text name + $cce = 0x0015; // Length of text definition + $ixals = $index + 1; // Sheet index + $itab = $ixals; // Equal to ixals + $cchCustMenu = 0x00; // Length of cust menu text + $cchDescription = 0x00; // Length of description text + $cchHelptopic = 0x00; // Length of help topic text + $cchStatustext = 0x00; // Length of status bar text + $rgch = $type; // Built-in name type + + $unknown03 = 0x3b; + $unknown04 = 0xffff - $index; + $unknown05 = 0x0000; + $unknown06 = 0x0000; + $unknown07 = 0x1087; + $unknown08 = 0x8005; + + $header = pack("vv", $record, $length); + $data = pack("v", $grbit); + $data .= pack("C", $chKey); + $data .= pack("C", $cch); + $data .= pack("v", $cce); + $data .= pack("v", $ixals); + $data .= pack("v", $itab); + $data .= pack("C", $cchCustMenu); + $data .= pack("C", $cchDescription); + $data .= pack("C", $cchHelptopic); + $data .= pack("C", $cchStatustext); + $data .= pack("C", $rgch); + $data .= pack("C", $unknown03); + $data .= pack("v", $unknown04); + $data .= pack("v", $unknown05); + $data .= pack("v", $unknown06); + $data .= pack("v", $unknown07); + $data .= pack("v", $unknown08); + $data .= pack("v", $index); + $data .= pack("v", $index); + $data .= pack("v", $rowmin); + $data .= pack("v", $rowmax); + $data .= pack("C", $colmin); + $data .= pack("C", $colmax); + $this->append($header . $data); + } + + /** + * Store the NAME record in the long format that is used for storing the repeat + * rows and columns when both are specified. This shares a lot of code with + * writeNameShort() but we use a separate method to keep the code clean. + * Code abstraction for reuse can be carried too far, and I should know. ;-) + * + * @param integer $index Sheet index + * @param integer $type Built-in name type + * @param integer $rowmin Start row + * @param integer $rowmax End row + * @param integer $colmin Start colum + * @param integer $colmax End column + */ + private function writeNameLong($index, $type, $rowmin, $rowmax, $colmin, $colmax) + { + $record = 0x0018; // Record identifier + $length = 0x003d; // Number of bytes to follow + $grbit = 0x0020; // Option flags + $chKey = 0x00; // Keyboard shortcut + $cch = 0x01; // Length of text name + $cce = 0x002e; // Length of text definition + $ixals = $index + 1; // Sheet index + $itab = $ixals; // Equal to ixals + $cchCustMenu = 0x00; // Length of cust menu text + $cchDescription = 0x00; // Length of description text + $cchHelptopic = 0x00; // Length of help topic text + $cchStatustext = 0x00; // Length of status bar text + $rgch = $type; // Built-in name type + + $unknown01 = 0x29; + $unknown02 = 0x002b; + $unknown03 = 0x3b; + $unknown04 = 0xffff-$index; + $unknown05 = 0x0000; + $unknown06 = 0x0000; + $unknown07 = 0x1087; + $unknown08 = 0x8008; + + $header = pack("vv", $record, $length); + $data = pack("v", $grbit); + $data .= pack("C", $chKey); + $data .= pack("C", $cch); + $data .= pack("v", $cce); + $data .= pack("v", $ixals); + $data .= pack("v", $itab); + $data .= pack("C", $cchCustMenu); + $data .= pack("C", $cchDescription); + $data .= pack("C", $cchHelptopic); + $data .= pack("C", $cchStatustext); + $data .= pack("C", $rgch); + $data .= pack("C", $unknown01); + $data .= pack("v", $unknown02); + // Column definition + $data .= pack("C", $unknown03); + $data .= pack("v", $unknown04); + $data .= pack("v", $unknown05); + $data .= pack("v", $unknown06); + $data .= pack("v", $unknown07); + $data .= pack("v", $unknown08); + $data .= pack("v", $index); + $data .= pack("v", $index); + $data .= pack("v", 0x0000); + $data .= pack("v", 0x3fff); + $data .= pack("C", $colmin); + $data .= pack("C", $colmax); + // Row definition + $data .= pack("C", $unknown03); + $data .= pack("v", $unknown04); + $data .= pack("v", $unknown05); + $data .= pack("v", $unknown06); + $data .= pack("v", $unknown07); + $data .= pack("v", $unknown08); + $data .= pack("v", $index); + $data .= pack("v", $index); + $data .= pack("v", $rowmin); + $data .= pack("v", $rowmax); + $data .= pack("C", 0x00); + $data .= pack("C", 0xff); + // End of data + $data .= pack("C", 0x10); + $this->append($header . $data); + } + + /** + * Stores the COUNTRY record for localization + * + * @return string + */ + private function writeCountry() + { + $record = 0x008C; // Record identifier + $length = 4; // Number of bytes to follow + + $header = pack('vv', $record, $length); + /* using the same country code always for simplicity */ + $data = pack('vv', $this->countryCode, $this->countryCode); + //$this->append($header . $data); + return $this->writeData($header . $data); + } + + /** + * Write the RECALCID record + * + * @return string + */ + private function writeRecalcId() + { + $record = 0x01C1; // Record identifier + $length = 8; // Number of bytes to follow + + $header = pack('vv', $record, $length); + + // by inspection of real Excel files, MS Office Excel 2007 writes this + $data = pack('VV', 0x000001C1, 0x00001E667); + + return $this->writeData($header . $data); + } + + /** + * Stores the PALETTE biff record. + */ + private function writePalette() + { + $aref = $this->palette; + + $record = 0x0092; // Record identifier + $length = 2 + 4 * count($aref); // Number of bytes to follow + $ccv = count($aref); // Number of RGB values to follow + $data = ''; // The RGB data + + // Pack the RGB data + foreach ($aref as $color) { + foreach ($color as $byte) { + $data .= pack("C", $byte); + } + } + + $header = pack("vvv", $record, $length, $ccv); + $this->append($header . $data); + } + + /** + * Handling of the SST continue blocks is complicated by the need to include an + * additional continuation byte depending on whether the string is split between + * blocks or whether it starts at the beginning of the block. (There are also + * additional complications that will arise later when/if Rich Strings are + * supported). + * + * The Excel documentation says that the SST record should be followed by an + * EXTSST record. The EXTSST record is a hash table that is used to optimise + * access to SST. However, despite the documentation it doesn't seem to be + * required so we will ignore it. + * + * @return string Binary data + */ + private function writeSharedStringsTable() + { + // maximum size of record data (excluding record header) + $continue_limit = 8224; + + // initialize array of record data blocks + $recordDatas = array(); + + // start SST record data block with total number of strings, total number of unique strings + $recordData = pack("VV", $this->stringTotal, $this->stringUnique); + + // loop through all (unique) strings in shared strings table + foreach (array_keys($this->stringTable) as $string) { + // here $string is a BIFF8 encoded string + + // length = character count + $headerinfo = unpack("vlength/Cencoding", $string); + + // currently, this is always 1 = uncompressed + $encoding = $headerinfo["encoding"]; + + // initialize finished writing current $string + $finished = false; + + while ($finished === false) { + // normally, there will be only one cycle, but if string cannot immediately be written as is + // there will be need for more than one cylcle, if string longer than one record data block, there + // may be need for even more cycles + + if (strlen($recordData) + strlen($string) <= $continue_limit) { + // then we can write the string (or remainder of string) without any problems + $recordData .= $string; + + if (strlen($recordData) + strlen($string) == $continue_limit) { + // we close the record data block, and initialize a new one + $recordDatas[] = $recordData; + $recordData = ''; + } + + // we are finished writing this string + $finished = true; + } else { + // special treatment writing the string (or remainder of the string) + // If the string is very long it may need to be written in more than one CONTINUE record. + + // check how many bytes more there is room for in the current record + $space_remaining = $continue_limit - strlen($recordData); + + // minimum space needed + // uncompressed: 2 byte string length length field + 1 byte option flags + 2 byte character + // compressed: 2 byte string length length field + 1 byte option flags + 1 byte character + $min_space_needed = ($encoding == 1) ? 5 : 4; + + // We have two cases + // 1. space remaining is less than minimum space needed + // here we must waste the space remaining and move to next record data block + // 2. space remaining is greater than or equal to minimum space needed + // here we write as much as we can in the current block, then move to next record data block + + // 1. space remaining is less than minimum space needed + if ($space_remaining < $min_space_needed) { + // we close the block, store the block data + $recordDatas[] = $recordData; + + // and start new record data block where we start writing the string + $recordData = ''; + + // 2. space remaining is greater than or equal to minimum space needed + } else { + // initialize effective remaining space, for Unicode strings this may need to be reduced by 1, see below + $effective_space_remaining = $space_remaining; + + // for uncompressed strings, sometimes effective space remaining is reduced by 1 + if ($encoding == 1 && (strlen($string) - $space_remaining) % 2 == 1) { + --$effective_space_remaining; + } + + // one block fininshed, store the block data + $recordData .= substr($string, 0, $effective_space_remaining); + + $string = substr($string, $effective_space_remaining); // for next cycle in while loop + $recordDatas[] = $recordData; + + // start new record data block with the repeated option flags + $recordData = pack('C', $encoding); + } + } + } + } + + // Store the last record data block unless it is empty + // if there was no need for any continue records, this will be the for SST record data block itself + if (strlen($recordData) > 0) { + $recordDatas[] = $recordData; + } + + // combine into one chunk with all the blocks SST, CONTINUE,... + $chunk = ''; + foreach ($recordDatas as $i => $recordData) { + // first block should have the SST record header, remaing should have CONTINUE header + $record = ($i == 0) ? 0x00FC : 0x003C; + + $header = pack("vv", $record, strlen($recordData)); + $data = $header . $recordData; + + $chunk .= $this->writeData($data); + } + + return $chunk; + } + + /** + * Writes the MSODRAWINGGROUP record if needed. Possibly split using CONTINUE records. + */ + private function writeMsoDrawingGroup() + { + // write the Escher stream if necessary + if (isset($this->escher)) { + $writer = new PHPExcel_Writer_Excel5_Escher($this->escher); + $data = $writer->close(); + + $record = 0x00EB; + $length = strlen($data); + $header = pack("vv", $record, $length); + + return $this->writeData($header . $data); + } else { + return ''; + } + } + + /** + * Get Escher object + * + * @return PHPExcel_Shared_Escher + */ + public function getEscher() + { + return $this->escher; + } + + /** + * Set Escher object + * + * @param PHPExcel_Shared_Escher $pValue + */ + public function setEscher(PHPExcel_Shared_Escher $pValue = null) + { + $this->escher = $pValue; + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Worksheet.php b/assets/excel/PHPExcel/Writer/Excel5/Worksheet.php new file mode 100644 index 0000000..be965e2 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Worksheet.php @@ -0,0 +1,4240 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_Worksheet + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +// Original file header of PEAR::Spreadsheet_Excel_Writer_Worksheet (used as the base for this class): +// ----------------------------------------------------------------------------------------- +// /* +// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> +// * +// * The majority of this is _NOT_ my code. I simply ported it from the +// * PERL Spreadsheet::WriteExcel module. +// * +// * The author of the Spreadsheet::WriteExcel module is John McNamara +// * <jmcnamara@cpan.org> +// * +// * I _DO_ maintain this code, and John McNamara has nothing to do with the +// * porting of this code to PHP. Any questions directly related to this +// * class library should be directed to me. +// * +// * License Information: +// * +// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets +// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com +// * +// * This library is free software; you can redistribute it and/or +// * modify it under the terms of the GNU Lesser General Public +// * License as published by the Free Software Foundation; either +// * version 2.1 of the License, or (at your option) any later version. +// * +// * This library is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// * Lesser General Public License for more details. +// * +// * You should have received a copy of the GNU Lesser General Public +// * License along with this library; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +class PHPExcel_Writer_Excel5_Worksheet extends PHPExcel_Writer_Excel5_BIFFwriter +{ + /** + * Formula parser + * + * @var PHPExcel_Writer_Excel5_Parser + */ + private $parser; + + /** + * Maximum number of characters for a string (LABEL record in BIFF5) + * @var integer + */ + private $xlsStringMaxLength; + + /** + * Array containing format information for columns + * @var array + */ + private $columnInfo; + + /** + * Array containing the selected area for the worksheet + * @var array + */ + private $selection; + + /** + * The active pane for the worksheet + * @var integer + */ + private $activePane; + + /** + * Whether to use outline. + * @var integer + */ + private $outlineOn; + + /** + * Auto outline styles. + * @var bool + */ + private $outlineStyle; + + /** + * Whether to have outline summary below. + * @var bool + */ + private $outlineBelow; + + /** + * Whether to have outline summary at the right. + * @var bool + */ + private $outlineRight; + + /** + * Reference to the total number of strings in the workbook + * @var integer + */ + private $stringTotal; + + /** + * Reference to the number of unique strings in the workbook + * @var integer + */ + private $stringUnique; + + /** + * Reference to the array containing all the unique strings in the workbook + * @var array + */ + private $stringTable; + + /** + * Color cache + */ + private $colors; + + /** + * Index of first used row (at least 0) + * @var int + */ + private $firstRowIndex; + + /** + * Index of last used row. (no used rows means -1) + * @var int + */ + private $lastRowIndex; + + /** + * Index of first used column (at least 0) + * @var int + */ + private $firstColumnIndex; + + /** + * Index of last used column (no used columns means -1) + * @var int + */ + private $lastColumnIndex; + + /** + * Sheet object + * @var PHPExcel_Worksheet + */ + public $phpSheet; + + /** + * Count cell style Xfs + * + * @var int + */ + private $countCellStyleXfs; + + /** + * Escher object corresponding to MSODRAWING + * + * @var PHPExcel_Shared_Escher + */ + private $escher; + + /** + * Array of font hashes associated to FONT records index + * + * @var array + */ + public $fontHashIndex; + + /** + * Constructor + * + * @param int &$str_total Total number of strings + * @param int &$str_unique Total number of unique strings + * @param array &$str_table String Table + * @param array &$colors Colour Table + * @param mixed $parser The formula parser created for the Workbook + * @param boolean $preCalculateFormulas Flag indicating whether formulas should be calculated or just written + * @param string $phpSheet The worksheet to write + * @param PHPExcel_Worksheet $phpSheet + */ + public function __construct(&$str_total, &$str_unique, &$str_table, &$colors, $parser, $preCalculateFormulas, $phpSheet) + { + // It needs to call its parent's constructor explicitly + parent::__construct(); + + // change BIFFwriter limit for CONTINUE records +// $this->_limit = 8224; + + + $this->_preCalculateFormulas = $preCalculateFormulas; + $this->stringTotal = &$str_total; + $this->stringUnique = &$str_unique; + $this->stringTable = &$str_table; + $this->colors = &$colors; + $this->parser = $parser; + + $this->phpSheet = $phpSheet; + + //$this->ext_sheets = array(); + //$this->offset = 0; + $this->xlsStringMaxLength = 255; + $this->columnInfo = array(); + $this->selection = array(0,0,0,0); + $this->activePane = 3; + + $this->_print_headers = 0; + + $this->outlineStyle = 0; + $this->outlineBelow = 1; + $this->outlineRight = 1; + $this->outlineOn = 1; + + $this->fontHashIndex = array(); + + // calculate values for DIMENSIONS record + $minR = 1; + $minC = 'A'; + + $maxR = $this->phpSheet->getHighestRow(); + $maxC = $this->phpSheet->getHighestColumn(); + + // Determine lowest and highest column and row +// $this->firstRowIndex = ($minR > 65535) ? 65535 : $minR; + $this->lastRowIndex = ($maxR > 65535) ? 65535 : $maxR ; + + $this->firstColumnIndex = PHPExcel_Cell::columnIndexFromString($minC); + $this->lastColumnIndex = PHPExcel_Cell::columnIndexFromString($maxC); + +// if ($this->firstColumnIndex > 255) $this->firstColumnIndex = 255; + if ($this->lastColumnIndex > 255) { + $this->lastColumnIndex = 255; + } + + $this->countCellStyleXfs = count($phpSheet->getParent()->getCellStyleXfCollection()); + } + + /** + * Add data to the beginning of the workbook (note the reverse order) + * and to the end of the workbook. + * + * @access public + * @see PHPExcel_Writer_Excel5_Workbook::storeWorkbook() + */ + public function close() + { + $phpSheet = $this->phpSheet; + + $num_sheets = $phpSheet->getParent()->getSheetCount(); + + // Write BOF record + $this->storeBof(0x0010); + + // Write PRINTHEADERS + $this->writePrintHeaders(); + + // Write PRINTGRIDLINES + $this->writePrintGridlines(); + + // Write GRIDSET + $this->writeGridset(); + + // Calculate column widths + $phpSheet->calculateColumnWidths(); + + // Column dimensions + if (($defaultWidth = $phpSheet->getDefaultColumnDimension()->getWidth()) < 0) { + $defaultWidth = PHPExcel_Shared_Font::getDefaultColumnWidthByFont($phpSheet->getParent()->getDefaultStyle()->getFont()); + } + + $columnDimensions = $phpSheet->getColumnDimensions(); + $maxCol = $this->lastColumnIndex -1; + for ($i = 0; $i <= $maxCol; ++$i) { + $hidden = 0; + $level = 0; + $xfIndex = 15; // there are 15 cell style Xfs + + $width = $defaultWidth; + + $columnLetter = PHPExcel_Cell::stringFromColumnIndex($i); + if (isset($columnDimensions[$columnLetter])) { + $columnDimension = $columnDimensions[$columnLetter]; + if ($columnDimension->getWidth() >= 0) { + $width = $columnDimension->getWidth(); + } + $hidden = $columnDimension->getVisible() ? 0 : 1; + $level = $columnDimension->getOutlineLevel(); + $xfIndex = $columnDimension->getXfIndex() + 15; // there are 15 cell style Xfs + } + + // Components of columnInfo: + // $firstcol first column on the range + // $lastcol last column on the range + // $width width to set + // $xfIndex The optional cell style Xf index to apply to the columns + // $hidden The optional hidden atribute + // $level The optional outline level + $this->columnInfo[] = array($i, $i, $width, $xfIndex, $hidden, $level); + } + + // Write GUTS + $this->writeGuts(); + + // Write DEFAULTROWHEIGHT + $this->writeDefaultRowHeight(); + // Write WSBOOL + $this->writeWsbool(); + // Write horizontal and vertical page breaks + $this->writeBreaks(); + // Write page header + $this->writeHeader(); + // Write page footer + $this->writeFooter(); + // Write page horizontal centering + $this->writeHcenter(); + // Write page vertical centering + $this->writeVcenter(); + // Write left margin + $this->writeMarginLeft(); + // Write right margin + $this->writeMarginRight(); + // Write top margin + $this->writeMarginTop(); + // Write bottom margin + $this->writeMarginBottom(); + // Write page setup + $this->writeSetup(); + // Write sheet protection + $this->writeProtect(); + // Write SCENPROTECT + $this->writeScenProtect(); + // Write OBJECTPROTECT + $this->writeObjectProtect(); + // Write sheet password + $this->writePassword(); + // Write DEFCOLWIDTH record + $this->writeDefcol(); + + // Write the COLINFO records if they exist + if (!empty($this->columnInfo)) { + $colcount = count($this->columnInfo); + for ($i = 0; $i < $colcount; ++$i) { + $this->writeColinfo($this->columnInfo[$i]); + } + } + $autoFilterRange = $phpSheet->getAutoFilter()->getRange(); + if (!empty($autoFilterRange)) { + // Write AUTOFILTERINFO + $this->writeAutoFilterInfo(); + } + + // Write sheet dimensions + $this->writeDimensions(); + + // Row dimensions + foreach ($phpSheet->getRowDimensions() as $rowDimension) { + $xfIndex = $rowDimension->getXfIndex() + 15; // there are 15 cellXfs + $this->writeRow($rowDimension->getRowIndex() - 1, $rowDimension->getRowHeight(), $xfIndex, ($rowDimension->getVisible() ? '0' : '1'), $rowDimension->getOutlineLevel()); + } + + // Write Cells + foreach ($phpSheet->getCellCollection() as $cellID) { + $cell = $phpSheet->getCell($cellID); + $row = $cell->getRow() - 1; + $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1; + + // Don't break Excel! +// if ($row + 1 > 65536 or $column + 1 > 256) { + if ($row > 65535 || $column > 255) { + break; + } + + // Write cell value + $xfIndex = $cell->getXfIndex() + 15; // there are 15 cell style Xfs + + $cVal = $cell->getValue(); + if ($cVal instanceof PHPExcel_RichText) { + // $this->writeString($row, $column, $cVal->getPlainText(), $xfIndex); + $arrcRun = array(); + $str_len = PHPExcel_Shared_String::CountCharacters($cVal->getPlainText(), 'UTF-8'); + $str_pos = 0; + $elements = $cVal->getRichTextElements(); + foreach ($elements as $element) { + // FONT Index + if ($element instanceof PHPExcel_RichText_Run) { + $str_fontidx = $this->fontHashIndex[$element->getFont()->getHashCode()]; + } else { + $str_fontidx = 0; + } + $arrcRun[] = array('strlen' => $str_pos, 'fontidx' => $str_fontidx); + // Position FROM + $str_pos += PHPExcel_Shared_String::CountCharacters($element->getText(), 'UTF-8'); + } + $this->writeRichTextString($row, $column, $cVal->getPlainText(), $xfIndex, $arrcRun); + } else { + switch ($cell->getDatatype()) { + case PHPExcel_Cell_DataType::TYPE_STRING: + case PHPExcel_Cell_DataType::TYPE_NULL: + if ($cVal === '' || $cVal === null) { + $this->writeBlank($row, $column, $xfIndex); + } else { + $this->writeString($row, $column, $cVal, $xfIndex); + } + break; + + case PHPExcel_Cell_DataType::TYPE_NUMERIC: + $this->writeNumber($row, $column, $cVal, $xfIndex); + break; + + case PHPExcel_Cell_DataType::TYPE_FORMULA: + $calculatedValue = $this->_preCalculateFormulas ? + $cell->getCalculatedValue() : null; + $this->writeFormula($row, $column, $cVal, $xfIndex, $calculatedValue); + break; + + case PHPExcel_Cell_DataType::TYPE_BOOL: + $this->writeBoolErr($row, $column, $cVal, 0, $xfIndex); + break; + + case PHPExcel_Cell_DataType::TYPE_ERROR: + $this->writeBoolErr($row, $column, self::mapErrorCode($cVal), 1, $xfIndex); + break; + + } + } + } + + // Append + $this->writeMsoDrawing(); + + // Write WINDOW2 record + $this->writeWindow2(); + + // Write PLV record + $this->writePageLayoutView(); + + // Write ZOOM record + $this->writeZoom(); + if ($phpSheet->getFreezePane()) { + $this->writePanes(); + } + + // Write SELECTION record + $this->writeSelection(); + + // Write MergedCellsTable Record + $this->writeMergedCells(); + + // Hyperlinks + foreach ($phpSheet->getHyperLinkCollection() as $coordinate => $hyperlink) { + list($column, $row) = PHPExcel_Cell::coordinateFromString($coordinate); + + $url = $hyperlink->getUrl(); + + if (strpos($url, 'sheet://') !== false) { + // internal to current workbook + $url = str_replace('sheet://', 'internal:', $url); + + } elseif (preg_match('/^(http:|https:|ftp:|mailto:)/', $url)) { + // URL + // $url = $url; + + } else { + // external (local file) + $url = 'external:' . $url; + } + + $this->writeUrl($row - 1, PHPExcel_Cell::columnIndexFromString($column) - 1, $url); + } + + $this->writeDataValidity(); + $this->writeSheetLayout(); + + // Write SHEETPROTECTION record + $this->writeSheetProtection(); + $this->writeRangeProtection(); + + $arrConditionalStyles = $phpSheet->getConditionalStylesCollection(); + if (!empty($arrConditionalStyles)) { + $arrConditional = array(); + // @todo CFRule & CFHeader + // Write CFHEADER record + $this->writeCFHeader(); + // Write ConditionalFormattingTable records + foreach ($arrConditionalStyles as $cellCoordinate => $conditionalStyles) { + foreach ($conditionalStyles as $conditional) { + if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION + || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { + if (!in_array($conditional->getHashCode(), $arrConditional)) { + $arrConditional[] = $conditional->getHashCode(); + // Write CFRULE record + $this->writeCFRule($conditional); + } + } + } + } + } + + $this->storeEof(); + } + + /** + * Write a cell range address in BIFF8 + * always fixed range + * See section 2.5.14 in OpenOffice.org's Documentation of the Microsoft Excel File Format + * + * @param string $range E.g. 'A1' or 'A1:B6' + * @return string Binary data + */ + private function writeBIFF8CellRangeAddressFixed($range = 'A1') + { + $explodes = explode(':', $range); + + // extract first cell, e.g. 'A1' + $firstCell = $explodes[0]; + + // extract last cell, e.g. 'B6' + if (count($explodes) == 1) { + $lastCell = $firstCell; + } else { + $lastCell = $explodes[1]; + } + + $firstCellCoordinates = PHPExcel_Cell::coordinateFromString($firstCell); // e.g. array(0, 1) + $lastCellCoordinates = PHPExcel_Cell::coordinateFromString($lastCell); // e.g. array(1, 6) + + return pack('vvvv', $firstCellCoordinates[1] - 1, $lastCellCoordinates[1] - 1, PHPExcel_Cell::columnIndexFromString($firstCellCoordinates[0]) - 1, PHPExcel_Cell::columnIndexFromString($lastCellCoordinates[0]) - 1); + } + + /** + * Retrieves data from memory in one chunk, or from disk in $buffer + * sized chunks. + * + * @return string The data + */ + public function getData() + { + $buffer = 4096; + + // Return data stored in memory + if (isset($this->_data)) { + $tmp = $this->_data; + unset($this->_data); + return $tmp; + } + // No data to return + return false; + } + + /** + * Set the option to print the row and column headers on the printed page. + * + * @access public + * @param integer $print Whether to print the headers or not. Defaults to 1 (print). + */ + public function printRowColHeaders($print = 1) + { + $this->_print_headers = $print; + } + + /** + * This method sets the properties for outlining and grouping. The defaults + * correspond to Excel's defaults. + * + * @param bool $visible + * @param bool $symbols_below + * @param bool $symbols_right + * @param bool $auto_style + */ + public function setOutline($visible = true, $symbols_below = true, $symbols_right = true, $auto_style = false) + { + $this->outlineOn = $visible; + $this->outlineBelow = $symbols_below; + $this->outlineRight = $symbols_right; + $this->outlineStyle = $auto_style; + + // Ensure this is a boolean vale for Window2 + if ($this->outlineOn) { + $this->outlineOn = 1; + } + } + + /** + * Write a double to the specified row and column (zero indexed). + * An integer can be written as a double. Excel will display an + * integer. $format is optional. + * + * Returns 0 : normal termination + * -2 : row or column out of range + * + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param float $num The number to write + * @param mixed $xfIndex The optional XF format + * @return integer + */ + private function writeNumber($row, $col, $num, $xfIndex) + { + $record = 0x0203; // Record identifier + $length = 0x000E; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("vvv", $row, $col, $xfIndex); + $xl_double = pack("d", $num); + if (self::getByteOrder()) { // if it's Big Endian + $xl_double = strrev($xl_double); + } + + $this->append($header.$data.$xl_double); + return(0); + } + + /** + * Write a LABELSST record or a LABEL record. Which one depends on BIFF version + * + * @param int $row Row index (0-based) + * @param int $col Column index (0-based) + * @param string $str The string + * @param int $xfIndex Index to XF record + */ + private function writeString($row, $col, $str, $xfIndex) + { + $this->writeLabelSst($row, $col, $str, $xfIndex); + } + + /** + * Write a LABELSST record or a LABEL record. Which one depends on BIFF version + * It differs from writeString by the writing of rich text strings. + * @param int $row Row index (0-based) + * @param int $col Column index (0-based) + * @param string $str The string + * @param mixed $xfIndex The XF format index for the cell + * @param array $arrcRun Index to Font record and characters beginning + */ + private function writeRichTextString($row, $col, $str, $xfIndex, $arrcRun) + { + $record = 0x00FD; // Record identifier + $length = 0x000A; // Bytes to follow + $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeShort($str, $arrcRun); + + /* check if string is already present */ + if (!isset($this->stringTable[$str])) { + $this->stringTable[$str] = $this->stringUnique++; + } + $this->stringTotal++; + + $header = pack('vv', $record, $length); + $data = pack('vvvV', $row, $col, $xfIndex, $this->stringTable[$str]); + $this->append($header.$data); + } + + /** + * Write a string to the specified row and column (zero indexed). + * NOTE: there is an Excel 5 defined limit of 255 characters. + * $format is optional. + * Returns 0 : normal termination + * -2 : row or column out of range + * -3 : long string truncated to 255 chars + * + * @access public + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param string $str The string to write + * @param mixed $xfIndex The XF format index for the cell + * @return integer + */ + private function writeLabel($row, $col, $str, $xfIndex) + { + $strlen = strlen($str); + $record = 0x0204; // Record identifier + $length = 0x0008 + $strlen; // Bytes to follow + + $str_error = 0; + + if ($strlen > $this->xlsStringMaxLength) { // LABEL must be < 255 chars + $str = substr($str, 0, $this->xlsStringMaxLength); + $length = 0x0008 + $this->xlsStringMaxLength; + $strlen = $this->xlsStringMaxLength; + $str_error = -3; + } + + $header = pack("vv", $record, $length); + $data = pack("vvvv", $row, $col, $xfIndex, $strlen); + $this->append($header . $data . $str); + return($str_error); + } + + /** + * Write a string to the specified row and column (zero indexed). + * This is the BIFF8 version (no 255 chars limit). + * $format is optional. + * Returns 0 : normal termination + * -2 : row or column out of range + * -3 : long string truncated to 255 chars + * + * @access public + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param string $str The string to write + * @param mixed $xfIndex The XF format index for the cell + * @return integer + */ + private function writeLabelSst($row, $col, $str, $xfIndex) + { + $record = 0x00FD; // Record identifier + $length = 0x000A; // Bytes to follow + + $str = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($str); + + /* check if string is already present */ + if (!isset($this->stringTable[$str])) { + $this->stringTable[$str] = $this->stringUnique++; + } + $this->stringTotal++; + + $header = pack('vv', $record, $length); + $data = pack('vvvV', $row, $col, $xfIndex, $this->stringTable[$str]); + $this->append($header.$data); + } + + /** + * Writes a note associated with the cell given by the row and column. + * NOTE records don't have a length limit. + * + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param string $note The note to write + */ + private function writeNote($row, $col, $note) + { + $note_length = strlen($note); + $record = 0x001C; // Record identifier + $max_length = 2048; // Maximun length for a NOTE record + + // Length for this record is no more than 2048 + 6 + $length = 0x0006 + min($note_length, 2048); + $header = pack("vv", $record, $length); + $data = pack("vvv", $row, $col, $note_length); + $this->append($header . $data . substr($note, 0, 2048)); + + for ($i = $max_length; $i < $note_length; $i += $max_length) { + $chunk = substr($note, $i, $max_length); + $length = 0x0006 + strlen($chunk); + $header = pack("vv", $record, $length); + $data = pack("vvv", -1, 0, strlen($chunk)); + $this->append($header.$data.$chunk); + } + return(0); + } + + /** + * Write a blank cell to the specified row and column (zero indexed). + * A blank cell is used to specify formatting without adding a string + * or a number. + * + * A blank cell without a format serves no purpose. Therefore, we don't write + * a BLANK record unless a format is specified. + * + * Returns 0 : normal termination (including no format) + * -1 : insufficient number of arguments + * -2 : row or column out of range + * + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param mixed $xfIndex The XF format index + */ + public function writeBlank($row, $col, $xfIndex) + { + $record = 0x0201; // Record identifier + $length = 0x0006; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("vvv", $row, $col, $xfIndex); + $this->append($header . $data); + return 0; + } + + /** + * Write a boolean or an error type to the specified row and column (zero indexed) + * + * @param int $row Row index (0-based) + * @param int $col Column index (0-based) + * @param int $value + * @param boolean $isError Error or Boolean? + * @param int $xfIndex + */ + private function writeBoolErr($row, $col, $value, $isError, $xfIndex) + { + $record = 0x0205; + $length = 8; + + $header = pack("vv", $record, $length); + $data = pack("vvvCC", $row, $col, $xfIndex, $value, $isError); + $this->append($header . $data); + return 0; + } + + /** + * Write a formula to the specified row and column (zero indexed). + * The textual representation of the formula is passed to the parser in + * Parser.php which returns a packed binary string. + * + * Returns 0 : normal termination + * -1 : formula errors (bad formula) + * -2 : row or column out of range + * + * @param integer $row Zero indexed row + * @param integer $col Zero indexed column + * @param string $formula The formula text string + * @param mixed $xfIndex The XF format index + * @param mixed $calculatedValue Calculated value + * @return integer + */ + private function writeFormula($row, $col, $formula, $xfIndex, $calculatedValue) + { + $record = 0x0006; // Record identifier + + // Initialize possible additional value for STRING record that should be written after the FORMULA record? + $stringValue = null; + + // calculated value + if (isset($calculatedValue)) { + // Since we can't yet get the data type of the calculated value, + // we use best effort to determine data type + if (is_bool($calculatedValue)) { + // Boolean value + $num = pack('CCCvCv', 0x01, 0x00, (int)$calculatedValue, 0x00, 0x00, 0xFFFF); + } elseif (is_int($calculatedValue) || is_float($calculatedValue)) { + // Numeric value + $num = pack('d', $calculatedValue); + } elseif (is_string($calculatedValue)) { + if (array_key_exists($calculatedValue, PHPExcel_Cell_DataType::getErrorCodes())) { + // Error value + $num = pack('CCCvCv', 0x02, 0x00, self::mapErrorCode($calculatedValue), 0x00, 0x00, 0xFFFF); + } elseif ($calculatedValue === '') { + // Empty string (and BIFF8) + $num = pack('CCCvCv', 0x03, 0x00, 0x00, 0x00, 0x00, 0xFFFF); + } else { + // Non-empty string value (or empty string BIFF5) + $stringValue = $calculatedValue; + $num = pack('CCCvCv', 0x00, 0x00, 0x00, 0x00, 0x00, 0xFFFF); + } + } else { + // We are really not supposed to reach here + $num = pack('d', 0x00); + } + } else { + $num = pack('d', 0x00); + } + + $grbit = 0x03; // Option flags + $unknown = 0x0000; // Must be zero + + // Strip the '=' or '@' sign at the beginning of the formula string + if ($formula{0} == '=') { + $formula = substr($formula, 1); + } else { + // Error handling + $this->writeString($row, $col, 'Unrecognised character for formula'); + return -1; + } + + // Parse the formula using the parser in Parser.php + try { + $error = $this->parser->parse($formula); + $formula = $this->parser->toReversePolish(); + + $formlen = strlen($formula); // Length of the binary string + $length = 0x16 + $formlen; // Length of the record data + + $header = pack("vv", $record, $length); + + $data = pack("vvv", $row, $col, $xfIndex) + . $num + . pack("vVv", $grbit, $unknown, $formlen); + $this->append($header . $data . $formula); + + // Append also a STRING record if necessary + if ($stringValue !== null) { + $this->writeStringRecord($stringValue); + } + + return 0; + + } catch (PHPExcel_Exception $e) { + // do nothing + } + + } + + /** + * Write a STRING record. This + * + * @param string $stringValue + */ + private function writeStringRecord($stringValue) + { + $record = 0x0207; // Record identifier + $data = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($stringValue); + + $length = strlen($data); + $header = pack('vv', $record, $length); + + $this->append($header . $data); + } + + /** + * Write a hyperlink. + * This is comprised of two elements: the visible label and + * the invisible link. The visible label is the same as the link unless an + * alternative string is specified. The label is written using the + * writeString() method. Therefore the 255 characters string limit applies. + * $string and $format are optional. + * + * The hyperlink can be to a http, ftp, mail, internal sheet (not yet), or external + * directory url. + * + * Returns 0 : normal termination + * -2 : row or column out of range + * -3 : long string truncated to 255 chars + * + * @param integer $row Row + * @param integer $col Column + * @param string $url URL string + * @return integer + */ + private function writeUrl($row, $col, $url) + { + // Add start row and col to arg list + return($this->writeUrlRange($row, $col, $row, $col, $url)); + } + + /** + * This is the more general form of writeUrl(). It allows a hyperlink to be + * written to a range of cells. This function also decides the type of hyperlink + * to be written. These are either, Web (http, ftp, mailto), Internal + * (Sheet1!A1) or external ('c:\temp\foo.xls#Sheet1!A1'). + * + * @access private + * @see writeUrl() + * @param integer $row1 Start row + * @param integer $col1 Start column + * @param integer $row2 End row + * @param integer $col2 End column + * @param string $url URL string + * @return integer + */ + public function writeUrlRange($row1, $col1, $row2, $col2, $url) + { + // Check for internal/external sheet links or default to web link + if (preg_match('[^internal:]', $url)) { + return($this->writeUrlInternal($row1, $col1, $row2, $col2, $url)); + } + if (preg_match('[^external:]', $url)) { + return($this->writeUrlExternal($row1, $col1, $row2, $col2, $url)); + } + return($this->writeUrlWeb($row1, $col1, $row2, $col2, $url)); + } + + /** + * Used to write http, ftp and mailto hyperlinks. + * The link type ($options) is 0x03 is the same as absolute dir ref without + * sheet. However it is differentiated by the $unknown2 data stream. + * + * @access private + * @see writeUrl() + * @param integer $row1 Start row + * @param integer $col1 Start column + * @param integer $row2 End row + * @param integer $col2 End column + * @param string $url URL string + * @return integer + */ + public function writeUrlWeb($row1, $col1, $row2, $col2, $url) + { + $record = 0x01B8; // Record identifier + $length = 0x00000; // Bytes to follow + + // Pack the undocumented parts of the hyperlink stream + $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); + $unknown2 = pack("H*", "E0C9EA79F9BACE118C8200AA004BA90B"); + + // Pack the option flags + $options = pack("V", 0x03); + + // Convert URL to a null terminated wchar string + $url = join("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY)); + $url = $url . "\0\0\0"; + + // Pack the length of the URL + $url_len = pack("V", strlen($url)); + + // Calculate the data length + $length = 0x34 + strlen($url); + + // Pack the header data + $header = pack("vv", $record, $length); + $data = pack("vvvv", $row1, $row2, $col1, $col2); + + // Write the packed data + $this->append($header . $data . + $unknown1 . $options . + $unknown2 . $url_len . $url); + return 0; + } + + /** + * Used to write internal reference hyperlinks such as "Sheet1!A1". + * + * @access private + * @see writeUrl() + * @param integer $row1 Start row + * @param integer $col1 Start column + * @param integer $row2 End row + * @param integer $col2 End column + * @param string $url URL string + * @return integer + */ + public function writeUrlInternal($row1, $col1, $row2, $col2, $url) + { + $record = 0x01B8; // Record identifier + $length = 0x00000; // Bytes to follow + + // Strip URL type + $url = preg_replace('/^internal:/', '', $url); + + // Pack the undocumented parts of the hyperlink stream + $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); + + // Pack the option flags + $options = pack("V", 0x08); + + // Convert the URL type and to a null terminated wchar string + $url .= "\0"; + + // character count + $url_len = PHPExcel_Shared_String::CountCharacters($url); + $url_len = pack('V', $url_len); + + $url = PHPExcel_Shared_String::ConvertEncoding($url, 'UTF-16LE', 'UTF-8'); + + // Calculate the data length + $length = 0x24 + strlen($url); + + // Pack the header data + $header = pack("vv", $record, $length); + $data = pack("vvvv", $row1, $row2, $col1, $col2); + + // Write the packed data + $this->append($header . $data . + $unknown1 . $options . + $url_len . $url); + return 0; + } + + /** + * Write links to external directory names such as 'c:\foo.xls', + * c:\foo.xls#Sheet1!A1', '../../foo.xls'. and '../../foo.xls#Sheet1!A1'. + * + * Note: Excel writes some relative links with the $dir_long string. We ignore + * these cases for the sake of simpler code. + * + * @access private + * @see writeUrl() + * @param integer $row1 Start row + * @param integer $col1 Start column + * @param integer $row2 End row + * @param integer $col2 End column + * @param string $url URL string + * @return integer + */ + public function writeUrlExternal($row1, $col1, $row2, $col2, $url) + { + // Network drives are different. We will handle them separately + // MS/Novell network drives and shares start with \\ + if (preg_match('[^external:\\\\]', $url)) { + return; //($this->writeUrlExternal_net($row1, $col1, $row2, $col2, $url, $str, $format)); + } + + $record = 0x01B8; // Record identifier + $length = 0x00000; // Bytes to follow + + // Strip URL type and change Unix dir separator to Dos style (if needed) + // + $url = preg_replace('/^external:/', '', $url); + $url = preg_replace('/\//', "\\", $url); + + // Determine if the link is relative or absolute: + // relative if link contains no dir separator, "somefile.xls" + // relative if link starts with up-dir, "..\..\somefile.xls" + // otherwise, absolute + + $absolute = 0x00; // relative path + if (preg_match('/^[A-Z]:/', $url)) { + $absolute = 0x02; // absolute path on Windows, e.g. C:\... + } + $link_type = 0x01 | $absolute; + + // Determine if the link contains a sheet reference and change some of the + // parameters accordingly. + // Split the dir name and sheet name (if it exists) + $dir_long = $url; + if (preg_match("/\#/", $url)) { + $link_type |= 0x08; + } + + + // Pack the link type + $link_type = pack("V", $link_type); + + // Calculate the up-level dir count e.g.. (..\..\..\ == 3) + $up_count = preg_match_all("/\.\.\\\/", $dir_long, $useless); + $up_count = pack("v", $up_count); + + // Store the short dos dir name (null terminated) + $dir_short = preg_replace("/\.\.\\\/", '', $dir_long) . "\0"; + + // Store the long dir name as a wchar string (non-null terminated) + $dir_long = $dir_long . "\0"; + + // Pack the lengths of the dir strings + $dir_short_len = pack("V", strlen($dir_short)); + $dir_long_len = pack("V", strlen($dir_long)); + $stream_len = pack("V", 0); //strlen($dir_long) + 0x06); + + // Pack the undocumented parts of the hyperlink stream + $unknown1 = pack("H*", 'D0C9EA79F9BACE118C8200AA004BA90B02000000'); + $unknown2 = pack("H*", '0303000000000000C000000000000046'); + $unknown3 = pack("H*", 'FFFFADDE000000000000000000000000000000000000000'); + $unknown4 = pack("v", 0x03); + + // Pack the main data stream + $data = pack("vvvv", $row1, $row2, $col1, $col2) . + $unknown1 . + $link_type . + $unknown2 . + $up_count . + $dir_short_len. + $dir_short . + $unknown3 . + $stream_len ;/*. + $dir_long_len . + $unknown4 . + $dir_long . + $sheet_len . + $sheet ;*/ + + // Pack the header data + $length = strlen($data); + $header = pack("vv", $record, $length); + + // Write the packed data + $this->append($header. $data); + return 0; + } + + /** + * This method is used to set the height and format for a row. + * + * @param integer $row The row to set + * @param integer $height Height we are giving to the row. + * Use null to set XF without setting height + * @param integer $xfIndex The optional cell style Xf index to apply to the columns + * @param bool $hidden The optional hidden attribute + * @param integer $level The optional outline level for row, in range [0,7] + */ + private function writeRow($row, $height, $xfIndex, $hidden = false, $level = 0) + { + $record = 0x0208; // Record identifier + $length = 0x0010; // Number of bytes to follow + + $colMic = 0x0000; // First defined column + $colMac = 0x0000; // Last defined column + $irwMac = 0x0000; // Used by Excel to optimise loading + $reserved = 0x0000; // Reserved + $grbit = 0x0000; // Option flags + $ixfe = $xfIndex; + + if ($height < 0) { + $height = null; + } + + // Use writeRow($row, null, $XF) to set XF format without setting height + if ($height != null) { + $miyRw = $height * 20; // row height + } else { + $miyRw = 0xff; // default row height is 256 + } + + // Set the options flags. fUnsynced is used to show that the font and row + // heights are not compatible. This is usually the case for WriteExcel. + // The collapsed flag 0x10 doesn't seem to be used to indicate that a row + // is collapsed. Instead it is used to indicate that the previous row is + // collapsed. The zero height flag, 0x20, is used to collapse a row. + + $grbit |= $level; + if ($hidden) { + $grbit |= 0x0030; + } + if ($height !== null) { + $grbit |= 0x0040; // fUnsynced + } + if ($xfIndex !== 0xF) { + $grbit |= 0x0080; + } + $grbit |= 0x0100; + + $header = pack("vv", $record, $length); + $data = pack("vvvvvvvv", $row, $colMic, $colMac, $miyRw, $irwMac, $reserved, $grbit, $ixfe); + $this->append($header.$data); + } + + /** + * Writes Excel DIMENSIONS to define the area in which there is data. + */ + private function writeDimensions() + { + $record = 0x0200; // Record identifier + + $length = 0x000E; + $data = pack('VVvvv', $this->firstRowIndex, $this->lastRowIndex + 1, $this->firstColumnIndex, $this->lastColumnIndex + 1, 0x0000); // reserved + + $header = pack("vv", $record, $length); + $this->append($header.$data); + } + + /** + * Write BIFF record Window2. + */ + private function writeWindow2() + { + $record = 0x023E; // Record identifier + $length = 0x0012; + + $grbit = 0x00B6; // Option flags + $rwTop = 0x0000; // Top row visible in window + $colLeft = 0x0000; // Leftmost column visible in window + + + // The options flags that comprise $grbit + $fDspFmla = 0; // 0 - bit + $fDspGrid = $this->phpSheet->getShowGridlines() ? 1 : 0; // 1 + $fDspRwCol = $this->phpSheet->getShowRowColHeaders() ? 1 : 0; // 2 + $fFrozen = $this->phpSheet->getFreezePane() ? 1 : 0; // 3 + $fDspZeros = 1; // 4 + $fDefaultHdr = 1; // 5 + $fArabic = $this->phpSheet->getRightToLeft() ? 1 : 0; // 6 + $fDspGuts = $this->outlineOn; // 7 + $fFrozenNoSplit = 0; // 0 - bit + // no support in PHPExcel for selected sheet, therefore sheet is only selected if it is the active sheet + $fSelected = ($this->phpSheet === $this->phpSheet->getParent()->getActiveSheet()) ? 1 : 0; + $fPaged = 1; // 2 + $fPageBreakPreview = $this->phpSheet->getSheetView()->getView() === PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_BREAK_PREVIEW; + + $grbit = $fDspFmla; + $grbit |= $fDspGrid << 1; + $grbit |= $fDspRwCol << 2; + $grbit |= $fFrozen << 3; + $grbit |= $fDspZeros << 4; + $grbit |= $fDefaultHdr << 5; + $grbit |= $fArabic << 6; + $grbit |= $fDspGuts << 7; + $grbit |= $fFrozenNoSplit << 8; + $grbit |= $fSelected << 9; + $grbit |= $fPaged << 10; + $grbit |= $fPageBreakPreview << 11; + + $header = pack("vv", $record, $length); + $data = pack("vvv", $grbit, $rwTop, $colLeft); + + // FIXME !!! + $rgbHdr = 0x0040; // Row/column heading and gridline color index + $zoom_factor_page_break = ($fPageBreakPreview ? $this->phpSheet->getSheetView()->getZoomScale() : 0x0000); + $zoom_factor_normal = $this->phpSheet->getSheetView()->getZoomScaleNormal(); + + $data .= pack("vvvvV", $rgbHdr, 0x0000, $zoom_factor_page_break, $zoom_factor_normal, 0x00000000); + + $this->append($header.$data); + } + + /** + * Write BIFF record DEFAULTROWHEIGHT. + */ + private function writeDefaultRowHeight() + { + $defaultRowHeight = $this->phpSheet->getDefaultRowDimension()->getRowHeight(); + + if ($defaultRowHeight < 0) { + return; + } + + // convert to twips + $defaultRowHeight = (int) 20 * $defaultRowHeight; + + $record = 0x0225; // Record identifier + $length = 0x0004; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("vv", 1, $defaultRowHeight); + $this->append($header . $data); + } + + /** + * Write BIFF record DEFCOLWIDTH if COLINFO records are in use. + */ + private function writeDefcol() + { + $defaultColWidth = 8; + + $record = 0x0055; // Record identifier + $length = 0x0002; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("v", $defaultColWidth); + $this->append($header . $data); + } + + /** + * Write BIFF record COLINFO to define column widths + * + * Note: The SDK says the record length is 0x0B but Excel writes a 0x0C + * length record. + * + * @param array $col_array This is the only parameter received and is composed of the following: + * 0 => First formatted column, + * 1 => Last formatted column, + * 2 => Col width (8.43 is Excel default), + * 3 => The optional XF format of the column, + * 4 => Option flags. + * 5 => Optional outline level + */ + private function writeColinfo($col_array) + { + if (isset($col_array[0])) { + $colFirst = $col_array[0]; + } + if (isset($col_array[1])) { + $colLast = $col_array[1]; + } + if (isset($col_array[2])) { + $coldx = $col_array[2]; + } else { + $coldx = 8.43; + } + if (isset($col_array[3])) { + $xfIndex = $col_array[3]; + } else { + $xfIndex = 15; + } + if (isset($col_array[4])) { + $grbit = $col_array[4]; + } else { + $grbit = 0; + } + if (isset($col_array[5])) { + $level = $col_array[5]; + } else { + $level = 0; + } + $record = 0x007D; // Record identifier + $length = 0x000C; // Number of bytes to follow + + $coldx *= 256; // Convert to units of 1/256 of a char + + $ixfe = $xfIndex; + $reserved = 0x0000; // Reserved + + $level = max(0, min($level, 7)); + $grbit |= $level << 8; + + $header = pack("vv", $record, $length); + $data = pack("vvvvvv", $colFirst, $colLast, $coldx, $ixfe, $grbit, $reserved); + $this->append($header.$data); + } + + /** + * Write BIFF record SELECTION. + */ + private function writeSelection() + { + // look up the selected cell range + $selectedCells = $this->phpSheet->getSelectedCells(); + $selectedCells = PHPExcel_Cell::splitRange($this->phpSheet->getSelectedCells()); + $selectedCells = $selectedCells[0]; + if (count($selectedCells) == 2) { + list($first, $last) = $selectedCells; + } else { + $first = $selectedCells[0]; + $last = $selectedCells[0]; + } + + list($colFirst, $rwFirst) = PHPExcel_Cell::coordinateFromString($first); + $colFirst = PHPExcel_Cell::columnIndexFromString($colFirst) - 1; // base 0 column index + --$rwFirst; // base 0 row index + + list($colLast, $rwLast) = PHPExcel_Cell::coordinateFromString($last); + $colLast = PHPExcel_Cell::columnIndexFromString($colLast) - 1; // base 0 column index + --$rwLast; // base 0 row index + + // make sure we are not out of bounds + $colFirst = min($colFirst, 255); + $colLast = min($colLast, 255); + + $rwFirst = min($rwFirst, 65535); + $rwLast = min($rwLast, 65535); + + $record = 0x001D; // Record identifier + $length = 0x000F; // Number of bytes to follow + + $pnn = $this->activePane; // Pane position + $rwAct = $rwFirst; // Active row + $colAct = $colFirst; // Active column + $irefAct = 0; // Active cell ref + $cref = 1; // Number of refs + + if (!isset($rwLast)) { + $rwLast = $rwFirst; // Last row in reference + } + if (!isset($colLast)) { + $colLast = $colFirst; // Last col in reference + } + + // Swap last row/col for first row/col as necessary + if ($rwFirst > $rwLast) { + list($rwFirst, $rwLast) = array($rwLast, $rwFirst); + } + + if ($colFirst > $colLast) { + list($colFirst, $colLast) = array($colLast, $colFirst); + } + + $header = pack("vv", $record, $length); + $data = pack("CvvvvvvCC", $pnn, $rwAct, $colAct, $irefAct, $cref, $rwFirst, $rwLast, $colFirst, $colLast); + $this->append($header . $data); + } + + /** + * Store the MERGEDCELLS records for all ranges of merged cells + */ + private function writeMergedCells() + { + $mergeCells = $this->phpSheet->getMergeCells(); + $countMergeCells = count($mergeCells); + + if ($countMergeCells == 0) { + return; + } + + // maximum allowed number of merged cells per record + $maxCountMergeCellsPerRecord = 1027; + + // record identifier + $record = 0x00E5; + + // counter for total number of merged cells treated so far by the writer + $i = 0; + + // counter for number of merged cells written in record currently being written + $j = 0; + + // initialize record data + $recordData = ''; + + // loop through the merged cells + foreach ($mergeCells as $mergeCell) { + ++$i; + ++$j; + + // extract the row and column indexes + $range = PHPExcel_Cell::splitRange($mergeCell); + list($first, $last) = $range[0]; + list($firstColumn, $firstRow) = PHPExcel_Cell::coordinateFromString($first); + list($lastColumn, $lastRow) = PHPExcel_Cell::coordinateFromString($last); + + $recordData .= pack('vvvv', $firstRow - 1, $lastRow - 1, PHPExcel_Cell::columnIndexFromString($firstColumn) - 1, PHPExcel_Cell::columnIndexFromString($lastColumn) - 1); + + // flush record if we have reached limit for number of merged cells, or reached final merged cell + if ($j == $maxCountMergeCellsPerRecord or $i == $countMergeCells) { + $recordData = pack('v', $j) . $recordData; + $length = strlen($recordData); + $header = pack('vv', $record, $length); + $this->append($header . $recordData); + + // initialize for next record, if any + $recordData = ''; + $j = 0; + } + } + } + + /** + * Write SHEETLAYOUT record + */ + private function writeSheetLayout() + { + if (!$this->phpSheet->isTabColorSet()) { + return; + } + + $recordData = pack( + 'vvVVVvv', + 0x0862, + 0x0000, // unused + 0x00000000, // unused + 0x00000000, // unused + 0x00000014, // size of record data + $this->colors[$this->phpSheet->getTabColor()->getRGB()], // color index + 0x0000 // unused + ); + + $length = strlen($recordData); + + $record = 0x0862; // Record identifier + $header = pack('vv', $record, $length); + $this->append($header . $recordData); + } + + /** + * Write SHEETPROTECTION + */ + private function writeSheetProtection() + { + // record identifier + $record = 0x0867; + + // prepare options + $options = (int) !$this->phpSheet->getProtection()->getObjects() + | (int) !$this->phpSheet->getProtection()->getScenarios() << 1 + | (int) !$this->phpSheet->getProtection()->getFormatCells() << 2 + | (int) !$this->phpSheet->getProtection()->getFormatColumns() << 3 + | (int) !$this->phpSheet->getProtection()->getFormatRows() << 4 + | (int) !$this->phpSheet->getProtection()->getInsertColumns() << 5 + | (int) !$this->phpSheet->getProtection()->getInsertRows() << 6 + | (int) !$this->phpSheet->getProtection()->getInsertHyperlinks() << 7 + | (int) !$this->phpSheet->getProtection()->getDeleteColumns() << 8 + | (int) !$this->phpSheet->getProtection()->getDeleteRows() << 9 + | (int) !$this->phpSheet->getProtection()->getSelectLockedCells() << 10 + | (int) !$this->phpSheet->getProtection()->getSort() << 11 + | (int) !$this->phpSheet->getProtection()->getAutoFilter() << 12 + | (int) !$this->phpSheet->getProtection()->getPivotTables() << 13 + | (int) !$this->phpSheet->getProtection()->getSelectUnlockedCells() << 14 ; + + // record data + $recordData = pack( + 'vVVCVVvv', + 0x0867, // repeated record identifier + 0x0000, // not used + 0x0000, // not used + 0x00, // not used + 0x01000200, // unknown data + 0xFFFFFFFF, // unknown data + $options, // options + 0x0000 // not used + ); + + $length = strlen($recordData); + $header = pack('vv', $record, $length); + + $this->append($header . $recordData); + } + + /** + * Write BIFF record RANGEPROTECTION + * + * Openoffice.org's Documentaion of the Microsoft Excel File Format uses term RANGEPROTECTION for these records + * Microsoft Office Excel 97-2007 Binary File Format Specification uses term FEAT for these records + */ + private function writeRangeProtection() + { + foreach ($this->phpSheet->getProtectedCells() as $range => $password) { + // number of ranges, e.g. 'A1:B3 C20:D25' + $cellRanges = explode(' ', $range); + $cref = count($cellRanges); + + $recordData = pack( + 'vvVVvCVvVv', + 0x0868, + 0x00, + 0x0000, + 0x0000, + 0x02, + 0x0, + 0x0000, + $cref, + 0x0000, + 0x00 + ); + + foreach ($cellRanges as $cellRange) { + $recordData .= $this->writeBIFF8CellRangeAddressFixed($cellRange); + } + + // the rgbFeat structure + $recordData .= pack( + 'VV', + 0x0000, + hexdec($password) + ); + + $recordData .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong('p' . md5($recordData)); + + $length = strlen($recordData); + + $record = 0x0868; // Record identifier + $header = pack("vv", $record, $length); + $this->append($header . $recordData); + } + } + + /** + * Write BIFF record EXTERNCOUNT to indicate the number of external sheet + * references in a worksheet. + * + * Excel only stores references to external sheets that are used in formulas. + * For simplicity we store references to all the sheets in the workbook + * regardless of whether they are used or not. This reduces the overall + * complexity and eliminates the need for a two way dialogue between the formula + * parser the worksheet objects. + * + * @param integer $count The number of external sheet references in this worksheet + */ + private function writeExterncount($count) + { + $record = 0x0016; // Record identifier + $length = 0x0002; // Number of bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("v", $count); + $this->append($header . $data); + } + + /** + * Writes the Excel BIFF EXTERNSHEET record. These references are used by + * formulas. A formula references a sheet name via an index. Since we store a + * reference to all of the external worksheets the EXTERNSHEET index is the same + * as the worksheet index. + * + * @param string $sheetname The name of a external worksheet + */ + private function writeExternsheet($sheetname) + { + $record = 0x0017; // Record identifier + + // References to the current sheet are encoded differently to references to + // external sheets. + // + if ($this->phpSheet->getTitle() == $sheetname) { + $sheetname = ''; + $length = 0x02; // The following 2 bytes + $cch = 1; // The following byte + $rgch = 0x02; // Self reference + } else { + $length = 0x02 + strlen($sheetname); + $cch = strlen($sheetname); + $rgch = 0x03; // Reference to a sheet in the current workbook + } + + $header = pack("vv", $record, $length); + $data = pack("CC", $cch, $rgch); + $this->append($header . $data . $sheetname); + } + + /** + * Writes the Excel BIFF PANE record. + * The panes can either be frozen or thawed (unfrozen). + * Frozen panes are specified in terms of an integer number of rows and columns. + * Thawed panes are specified in terms of Excel's units for rows and columns. + */ + private function writePanes() + { + $panes = array(); + if ($freezePane = $this->phpSheet->getFreezePane()) { + list($column, $row) = PHPExcel_Cell::coordinateFromString($freezePane); + $panes[0] = $row - 1; + $panes[1] = PHPExcel_Cell::columnIndexFromString($column) - 1; + } else { + // thaw panes + return; + } + + $y = isset($panes[0]) ? $panes[0] : null; + $x = isset($panes[1]) ? $panes[1] : null; + $rwTop = isset($panes[2]) ? $panes[2] : null; + $colLeft = isset($panes[3]) ? $panes[3] : null; + if (count($panes) > 4) { // if Active pane was received + $pnnAct = $panes[4]; + } else { + $pnnAct = null; + } + $record = 0x0041; // Record identifier + $length = 0x000A; // Number of bytes to follow + + // Code specific to frozen or thawed panes. + if ($this->phpSheet->getFreezePane()) { + // Set default values for $rwTop and $colLeft + if (!isset($rwTop)) { + $rwTop = $y; + } + if (!isset($colLeft)) { + $colLeft = $x; + } + } else { + // Set default values for $rwTop and $colLeft + if (!isset($rwTop)) { + $rwTop = 0; + } + if (!isset($colLeft)) { + $colLeft = 0; + } + + // Convert Excel's row and column units to the internal units. + // The default row height is 12.75 + // The default column width is 8.43 + // The following slope and intersection values were interpolated. + // + $y = 20*$y + 255; + $x = 113.879*$x + 390; + } + + + // Determine which pane should be active. There is also the undocumented + // option to override this should it be necessary: may be removed later. + // + if (!isset($pnnAct)) { + if ($x != 0 && $y != 0) { + $pnnAct = 0; // Bottom right + } + if ($x != 0 && $y == 0) { + $pnnAct = 1; // Top right + } + if ($x == 0 && $y != 0) { + $pnnAct = 2; // Bottom left + } + if ($x == 0 && $y == 0) { + $pnnAct = 3; // Top left + } + } + + $this->activePane = $pnnAct; // Used in writeSelection + + $header = pack("vv", $record, $length); + $data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct); + $this->append($header . $data); + } + + /** + * Store the page setup SETUP BIFF record. + */ + private function writeSetup() + { + $record = 0x00A1; // Record identifier + $length = 0x0022; // Number of bytes to follow + + $iPaperSize = $this->phpSheet->getPageSetup()->getPaperSize(); // Paper size + + $iScale = $this->phpSheet->getPageSetup()->getScale() ? + $this->phpSheet->getPageSetup()->getScale() : 100; // Print scaling factor + + $iPageStart = 0x01; // Starting page number + $iFitWidth = (int) $this->phpSheet->getPageSetup()->getFitToWidth(); // Fit to number of pages wide + $iFitHeight = (int) $this->phpSheet->getPageSetup()->getFitToHeight(); // Fit to number of pages high + $grbit = 0x00; // Option flags + $iRes = 0x0258; // Print resolution + $iVRes = 0x0258; // Vertical print resolution + + $numHdr = $this->phpSheet->getPageMargins()->getHeader(); // Header Margin + + $numFtr = $this->phpSheet->getPageMargins()->getFooter(); // Footer Margin + $iCopies = 0x01; // Number of copies + + $fLeftToRight = 0x0; // Print over then down + + // Page orientation + $fLandscape = ($this->phpSheet->getPageSetup()->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? + 0x0 : 0x1; + + $fNoPls = 0x0; // Setup not read from printer + $fNoColor = 0x0; // Print black and white + $fDraft = 0x0; // Print draft quality + $fNotes = 0x0; // Print notes + $fNoOrient = 0x0; // Orientation not set + $fUsePage = 0x0; // Use custom starting page + + $grbit = $fLeftToRight; + $grbit |= $fLandscape << 1; + $grbit |= $fNoPls << 2; + $grbit |= $fNoColor << 3; + $grbit |= $fDraft << 4; + $grbit |= $fNotes << 5; + $grbit |= $fNoOrient << 6; + $grbit |= $fUsePage << 7; + + $numHdr = pack("d", $numHdr); + $numFtr = pack("d", $numFtr); + if (self::getByteOrder()) { // if it's Big Endian + $numHdr = strrev($numHdr); + $numFtr = strrev($numFtr); + } + + $header = pack("vv", $record, $length); + $data1 = pack("vvvvvvvv", $iPaperSize, $iScale, $iPageStart, $iFitWidth, $iFitHeight, $grbit, $iRes, $iVRes); + $data2 = $numHdr.$numFtr; + $data3 = pack("v", $iCopies); + $this->append($header . $data1 . $data2 . $data3); + } + + /** + * Store the header caption BIFF record. + */ + private function writeHeader() + { + $record = 0x0014; // Record identifier + + /* removing for now + // need to fix character count (multibyte!) + if (strlen($this->phpSheet->getHeaderFooter()->getOddHeader()) <= 255) { + $str = $this->phpSheet->getHeaderFooter()->getOddHeader(); // header string + } else { + $str = ''; + } + */ + + $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->phpSheet->getHeaderFooter()->getOddHeader()); + $length = strlen($recordData); + + $header = pack("vv", $record, $length); + + $this->append($header . $recordData); + } + + /** + * Store the footer caption BIFF record. + */ + private function writeFooter() + { + $record = 0x0015; // Record identifier + + /* removing for now + // need to fix character count (multibyte!) + if (strlen($this->phpSheet->getHeaderFooter()->getOddFooter()) <= 255) { + $str = $this->phpSheet->getHeaderFooter()->getOddFooter(); + } else { + $str = ''; + } + */ + + $recordData = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($this->phpSheet->getHeaderFooter()->getOddFooter()); + $length = strlen($recordData); + + $header = pack("vv", $record, $length); + + $this->append($header . $recordData); + } + + /** + * Store the horizontal centering HCENTER BIFF record. + * + * @access private + */ + private function writeHcenter() + { + $record = 0x0083; // Record identifier + $length = 0x0002; // Bytes to follow + + $fHCenter = $this->phpSheet->getPageSetup()->getHorizontalCentered() ? 1 : 0; // Horizontal centering + + $header = pack("vv", $record, $length); + $data = pack("v", $fHCenter); + + $this->append($header.$data); + } + + /** + * Store the vertical centering VCENTER BIFF record. + */ + private function writeVcenter() + { + $record = 0x0084; // Record identifier + $length = 0x0002; // Bytes to follow + + $fVCenter = $this->phpSheet->getPageSetup()->getVerticalCentered() ? 1 : 0; // Horizontal centering + + $header = pack("vv", $record, $length); + $data = pack("v", $fVCenter); + $this->append($header . $data); + } + + /** + * Store the LEFTMARGIN BIFF record. + */ + private function writeMarginLeft() + { + $record = 0x0026; // Record identifier + $length = 0x0008; // Bytes to follow + + $margin = $this->phpSheet->getPageMargins()->getLeft(); // Margin in inches + + $header = pack("vv", $record, $length); + $data = pack("d", $margin); + if (self::getByteOrder()) { // if it's Big Endian + $data = strrev($data); + } + + $this->append($header . $data); + } + + /** + * Store the RIGHTMARGIN BIFF record. + */ + private function writeMarginRight() + { + $record = 0x0027; // Record identifier + $length = 0x0008; // Bytes to follow + + $margin = $this->phpSheet->getPageMargins()->getRight(); // Margin in inches + + $header = pack("vv", $record, $length); + $data = pack("d", $margin); + if (self::getByteOrder()) { // if it's Big Endian + $data = strrev($data); + } + + $this->append($header . $data); + } + + /** + * Store the TOPMARGIN BIFF record. + */ + private function writeMarginTop() + { + $record = 0x0028; // Record identifier + $length = 0x0008; // Bytes to follow + + $margin = $this->phpSheet->getPageMargins()->getTop(); // Margin in inches + + $header = pack("vv", $record, $length); + $data = pack("d", $margin); + if (self::getByteOrder()) { // if it's Big Endian + $data = strrev($data); + } + + $this->append($header . $data); + } + + /** + * Store the BOTTOMMARGIN BIFF record. + */ + private function writeMarginBottom() + { + $record = 0x0029; // Record identifier + $length = 0x0008; // Bytes to follow + + $margin = $this->phpSheet->getPageMargins()->getBottom(); // Margin in inches + + $header = pack("vv", $record, $length); + $data = pack("d", $margin); + if (self::getByteOrder()) { // if it's Big Endian + $data = strrev($data); + } + + $this->append($header . $data); + } + + /** + * Write the PRINTHEADERS BIFF record. + */ + private function writePrintHeaders() + { + $record = 0x002a; // Record identifier + $length = 0x0002; // Bytes to follow + + $fPrintRwCol = $this->_print_headers; // Boolean flag + + $header = pack("vv", $record, $length); + $data = pack("v", $fPrintRwCol); + $this->append($header . $data); + } + + /** + * Write the PRINTGRIDLINES BIFF record. Must be used in conjunction with the + * GRIDSET record. + */ + private function writePrintGridlines() + { + $record = 0x002b; // Record identifier + $length = 0x0002; // Bytes to follow + + $fPrintGrid = $this->phpSheet->getPrintGridlines() ? 1 : 0; // Boolean flag + + $header = pack("vv", $record, $length); + $data = pack("v", $fPrintGrid); + $this->append($header . $data); + } + + /** + * Write the GRIDSET BIFF record. Must be used in conjunction with the + * PRINTGRIDLINES record. + */ + private function writeGridset() + { + $record = 0x0082; // Record identifier + $length = 0x0002; // Bytes to follow + + $fGridSet = !$this->phpSheet->getPrintGridlines(); // Boolean flag + + $header = pack("vv", $record, $length); + $data = pack("v", $fGridSet); + $this->append($header . $data); + } + + /** + * Write the AUTOFILTERINFO BIFF record. This is used to configure the number of autofilter select used in the sheet. + */ + private function writeAutoFilterInfo() + { + $record = 0x009D; // Record identifier + $length = 0x0002; // Bytes to follow + + $rangeBounds = PHPExcel_Cell::rangeBoundaries($this->phpSheet->getAutoFilter()->getRange()); + $iNumFilters = 1 + $rangeBounds[1][0] - $rangeBounds[0][0]; + + $header = pack("vv", $record, $length); + $data = pack("v", $iNumFilters); + $this->append($header . $data); + } + + /** + * Write the GUTS BIFF record. This is used to configure the gutter margins + * where Excel outline symbols are displayed. The visibility of the gutters is + * controlled by a flag in WSBOOL. + * + * @see writeWsbool() + */ + private function writeGuts() + { + $record = 0x0080; // Record identifier + $length = 0x0008; // Bytes to follow + + $dxRwGut = 0x0000; // Size of row gutter + $dxColGut = 0x0000; // Size of col gutter + + // determine maximum row outline level + $maxRowOutlineLevel = 0; + foreach ($this->phpSheet->getRowDimensions() as $rowDimension) { + $maxRowOutlineLevel = max($maxRowOutlineLevel, $rowDimension->getOutlineLevel()); + } + + $col_level = 0; + + // Calculate the maximum column outline level. The equivalent calculation + // for the row outline level is carried out in writeRow(). + $colcount = count($this->columnInfo); + for ($i = 0; $i < $colcount; ++$i) { + $col_level = max($this->columnInfo[$i][5], $col_level); + } + + // Set the limits for the outline levels (0 <= x <= 7). + $col_level = max(0, min($col_level, 7)); + + // The displayed level is one greater than the max outline levels + if ($maxRowOutlineLevel) { + ++$maxRowOutlineLevel; + } + if ($col_level) { + ++$col_level; + } + + $header = pack("vv", $record, $length); + $data = pack("vvvv", $dxRwGut, $dxColGut, $maxRowOutlineLevel, $col_level); + + $this->append($header.$data); + } + + /** + * Write the WSBOOL BIFF record, mainly for fit-to-page. Used in conjunction + * with the SETUP record. + */ + private function writeWsbool() + { + $record = 0x0081; // Record identifier + $length = 0x0002; // Bytes to follow + $grbit = 0x0000; + + // The only option that is of interest is the flag for fit to page. So we + // set all the options in one go. + // + // Set the option flags + $grbit |= 0x0001; // Auto page breaks visible + if ($this->outlineStyle) { + $grbit |= 0x0020; // Auto outline styles + } + if ($this->phpSheet->getShowSummaryBelow()) { + $grbit |= 0x0040; // Outline summary below + } + if ($this->phpSheet->getShowSummaryRight()) { + $grbit |= 0x0080; // Outline summary right + } + if ($this->phpSheet->getPageSetup()->getFitToPage()) { + $grbit |= 0x0100; // Page setup fit to page + } + if ($this->outlineOn) { + $grbit |= 0x0400; // Outline symbols displayed + } + + $header = pack("vv", $record, $length); + $data = pack("v", $grbit); + $this->append($header . $data); + } + + /** + * Write the HORIZONTALPAGEBREAKS and VERTICALPAGEBREAKS BIFF records. + */ + private function writeBreaks() + { + // initialize + $vbreaks = array(); + $hbreaks = array(); + + foreach ($this->phpSheet->getBreaks() as $cell => $breakType) { + // Fetch coordinates + $coordinates = PHPExcel_Cell::coordinateFromString($cell); + + // Decide what to do by the type of break + switch ($breakType) { + case PHPExcel_Worksheet::BREAK_COLUMN: + // Add to list of vertical breaks + $vbreaks[] = PHPExcel_Cell::columnIndexFromString($coordinates[0]) - 1; + break; + case PHPExcel_Worksheet::BREAK_ROW: + // Add to list of horizontal breaks + $hbreaks[] = $coordinates[1]; + break; + case PHPExcel_Worksheet::BREAK_NONE: + default: + // Nothing to do + break; + } + } + + //horizontal page breaks + if (!empty($hbreaks)) { + // Sort and filter array of page breaks + sort($hbreaks, SORT_NUMERIC); + if ($hbreaks[0] == 0) { // don't use first break if it's 0 + array_shift($hbreaks); + } + + $record = 0x001b; // Record identifier + $cbrk = count($hbreaks); // Number of page breaks + $length = 2 + 6 * $cbrk; // Bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("v", $cbrk); + + // Append each page break + foreach ($hbreaks as $hbreak) { + $data .= pack("vvv", $hbreak, 0x0000, 0x00ff); + } + + $this->append($header . $data); + } + + // vertical page breaks + if (!empty($vbreaks)) { + // 1000 vertical pagebreaks appears to be an internal Excel 5 limit. + // It is slightly higher in Excel 97/200, approx. 1026 + $vbreaks = array_slice($vbreaks, 0, 1000); + + // Sort and filter array of page breaks + sort($vbreaks, SORT_NUMERIC); + if ($vbreaks[0] == 0) { // don't use first break if it's 0 + array_shift($vbreaks); + } + + $record = 0x001a; // Record identifier + $cbrk = count($vbreaks); // Number of page breaks + $length = 2 + 6 * $cbrk; // Bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("v", $cbrk); + + // Append each page break + foreach ($vbreaks as $vbreak) { + $data .= pack("vvv", $vbreak, 0x0000, 0xffff); + } + + $this->append($header . $data); + } + } + + /** + * Set the Biff PROTECT record to indicate that the worksheet is protected. + */ + private function writeProtect() + { + // Exit unless sheet protection has been specified + if (!$this->phpSheet->getProtection()->getSheet()) { + return; + } + + $record = 0x0012; // Record identifier + $length = 0x0002; // Bytes to follow + + $fLock = 1; // Worksheet is protected + + $header = pack("vv", $record, $length); + $data = pack("v", $fLock); + + $this->append($header.$data); + } + + /** + * Write SCENPROTECT + */ + private function writeScenProtect() + { + // Exit if sheet protection is not active + if (!$this->phpSheet->getProtection()->getSheet()) { + return; + } + + // Exit if scenarios are not protected + if (!$this->phpSheet->getProtection()->getScenarios()) { + return; + } + + $record = 0x00DD; // Record identifier + $length = 0x0002; // Bytes to follow + + $header = pack('vv', $record, $length); + $data = pack('v', 1); + + $this->append($header . $data); + } + + /** + * Write OBJECTPROTECT + */ + private function writeObjectProtect() + { + // Exit if sheet protection is not active + if (!$this->phpSheet->getProtection()->getSheet()) { + return; + } + + // Exit if objects are not protected + if (!$this->phpSheet->getProtection()->getObjects()) { + return; + } + + $record = 0x0063; // Record identifier + $length = 0x0002; // Bytes to follow + + $header = pack('vv', $record, $length); + $data = pack('v', 1); + + $this->append($header . $data); + } + + /** + * Write the worksheet PASSWORD record. + */ + private function writePassword() + { + // Exit unless sheet protection and password have been specified + if (!$this->phpSheet->getProtection()->getSheet() || !$this->phpSheet->getProtection()->getPassword()) { + return; + } + + $record = 0x0013; // Record identifier + $length = 0x0002; // Bytes to follow + + $wPassword = hexdec($this->phpSheet->getProtection()->getPassword()); // Encoded password + + $header = pack("vv", $record, $length); + $data = pack("v", $wPassword); + + $this->append($header . $data); + } + + /** + * Insert a 24bit bitmap image in a worksheet. + * + * @access public + * @param integer $row The row we are going to insert the bitmap into + * @param integer $col The column we are going to insert the bitmap into + * @param mixed $bitmap The bitmap filename or GD-image resource + * @param integer $x The horizontal position (offset) of the image inside the cell. + * @param integer $y The vertical position (offset) of the image inside the cell. + * @param float $scale_x The horizontal scale + * @param float $scale_y The vertical scale + */ + public function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1) + { + $bitmap_array = (is_resource($bitmap) ? $this->processBitmapGd($bitmap) : $this->processBitmap($bitmap)); + list($width, $height, $size, $data) = $bitmap_array; //$this->processBitmap($bitmap); + + // Scale the frame of the image. + $width *= $scale_x; + $height *= $scale_y; + + // Calculate the vertices of the image and write the OBJ record + $this->positionImage($col, $row, $x, $y, $width, $height); + + // Write the IMDATA record to store the bitmap data + $record = 0x007f; + $length = 8 + $size; + $cf = 0x09; + $env = 0x01; + $lcb = $size; + + $header = pack("vvvvV", $record, $length, $cf, $env, $lcb); + $this->append($header.$data); + } + + /** + * Calculate the vertices that define the position of the image as required by + * the OBJ record. + * + * +------------+------------+ + * | A | B | + * +-----+------------+------------+ + * | |(x1,y1) | | + * | 1 |(A1)._______|______ | + * | | | | | + * | | | | | + * +-----+----| BITMAP |-----+ + * | | | | | + * | 2 | |______________. | + * | | | (B2)| + * | | | (x2,y2)| + * +---- +------------+------------+ + * + * Example of a bitmap that covers some of the area from cell A1 to cell B2. + * + * Based on the width and height of the bitmap we need to calculate 8 vars: + * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2. + * The width and height of the cells are also variable and have to be taken into + * account. + * The values of $col_start and $row_start are passed in from the calling + * function. The values of $col_end and $row_end are calculated by subtracting + * the width and height of the bitmap from the width and height of the + * underlying cells. + * The vertices are expressed as a percentage of the underlying cell width as + * follows (rhs values are in pixels): + * + * x1 = X / W *1024 + * y1 = Y / H *256 + * x2 = (X-1) / W *1024 + * y2 = (Y-1) / H *256 + * + * Where: X is distance from the left side of the underlying cell + * Y is distance from the top of the underlying cell + * W is the width of the cell + * H is the height of the cell + * The SDK incorrectly states that the height should be expressed as a + * percentage of 1024. + * + * @access private + * @param integer $col_start Col containing upper left corner of object + * @param integer $row_start Row containing top left corner of object + * @param integer $x1 Distance to left side of object + * @param integer $y1 Distance to top of object + * @param integer $width Width of image frame + * @param integer $height Height of image frame + */ + public function positionImage($col_start, $row_start, $x1, $y1, $width, $height) + { + // Initialise end cell to the same as the start cell + $col_end = $col_start; // Col containing lower right corner of object + $row_end = $row_start; // Row containing bottom right corner of object + + // Zero the specified offset if greater than the cell dimensions + if ($x1 >= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start))) { + $x1 = 0; + } + if ($y1 >= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1)) { + $y1 = 0; + } + + $width = $width + $x1 -1; + $height = $height + $y1 -1; + + // Subtract the underlying cell widths to find the end cell of the image + while ($width >= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end))) { + $width -= PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)); + ++$col_end; + } + + // Subtract the underlying cell heights to find the end cell of the image + while ($height >= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1)) { + $height -= PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1); + ++$row_end; + } + + // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a cell + // with zero eight or width. + // + if (PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) == 0) { + return; + } + if (PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) == 0) { + return; + } + if (PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1) == 0) { + return; + } + if (PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1) == 0) { + return; + } + + // Convert the pixel values to the percentage value expected by Excel + $x1 = $x1 / PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_start)) * 1024; + $y1 = $y1 / PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_start + 1) * 256; + $x2 = $width / PHPExcel_Shared_Excel5::sizeCol($this->phpSheet, PHPExcel_Cell::stringFromColumnIndex($col_end)) * 1024; // Distance to right side of object + $y2 = $height / PHPExcel_Shared_Excel5::sizeRow($this->phpSheet, $row_end + 1) * 256; // Distance to bottom of object + + $this->writeObjPicture($col_start, $x1, $row_start, $y1, $col_end, $x2, $row_end, $y2); + } + + /** + * Store the OBJ record that precedes an IMDATA record. This could be generalise + * to support other Excel objects. + * + * @param integer $colL Column containing upper left corner of object + * @param integer $dxL Distance from left side of cell + * @param integer $rwT Row containing top left corner of object + * @param integer $dyT Distance from top of cell + * @param integer $colR Column containing lower right corner of object + * @param integer $dxR Distance from right of cell + * @param integer $rwB Row containing bottom right corner of object + * @param integer $dyB Distance from bottom of cell + */ + private function writeObjPicture($colL, $dxL, $rwT, $dyT, $colR, $dxR, $rwB, $dyB) + { + $record = 0x005d; // Record identifier + $length = 0x003c; // Bytes to follow + + $cObj = 0x0001; // Count of objects in file (set to 1) + $OT = 0x0008; // Object type. 8 = Picture + $id = 0x0001; // Object ID + $grbit = 0x0614; // Option flags + + $cbMacro = 0x0000; // Length of FMLA structure + $Reserved1 = 0x0000; // Reserved + $Reserved2 = 0x0000; // Reserved + + $icvBack = 0x09; // Background colour + $icvFore = 0x09; // Foreground colour + $fls = 0x00; // Fill pattern + $fAuto = 0x00; // Automatic fill + $icv = 0x08; // Line colour + $lns = 0xff; // Line style + $lnw = 0x01; // Line weight + $fAutoB = 0x00; // Automatic border + $frs = 0x0000; // Frame style + $cf = 0x0009; // Image format, 9 = bitmap + $Reserved3 = 0x0000; // Reserved + $cbPictFmla = 0x0000; // Length of FMLA structure + $Reserved4 = 0x0000; // Reserved + $grbit2 = 0x0001; // Option flags + $Reserved5 = 0x0000; // Reserved + + + $header = pack("vv", $record, $length); + $data = pack("V", $cObj); + $data .= pack("v", $OT); + $data .= pack("v", $id); + $data .= pack("v", $grbit); + $data .= pack("v", $colL); + $data .= pack("v", $dxL); + $data .= pack("v", $rwT); + $data .= pack("v", $dyT); + $data .= pack("v", $colR); + $data .= pack("v", $dxR); + $data .= pack("v", $rwB); + $data .= pack("v", $dyB); + $data .= pack("v", $cbMacro); + $data .= pack("V", $Reserved1); + $data .= pack("v", $Reserved2); + $data .= pack("C", $icvBack); + $data .= pack("C", $icvFore); + $data .= pack("C", $fls); + $data .= pack("C", $fAuto); + $data .= pack("C", $icv); + $data .= pack("C", $lns); + $data .= pack("C", $lnw); + $data .= pack("C", $fAutoB); + $data .= pack("v", $frs); + $data .= pack("V", $cf); + $data .= pack("v", $Reserved3); + $data .= pack("v", $cbPictFmla); + $data .= pack("v", $Reserved4); + $data .= pack("v", $grbit2); + $data .= pack("V", $Reserved5); + + $this->append($header . $data); + } + + /** + * Convert a GD-image into the internal format. + * + * @access private + * @param resource $image The image to process + * @return array Array with data and properties of the bitmap + */ + public function processBitmapGd($image) + { + $width = imagesx($image); + $height = imagesy($image); + + $data = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18); + for ($j=$height; $j--;) { + for ($i=0; $i < $width; ++$i) { + $color = imagecolorsforindex($image, imagecolorat($image, $i, $j)); + foreach (array("red", "green", "blue") as $key) { + $color[$key] = $color[$key] + round((255 - $color[$key]) * $color["alpha"] / 127); + } + $data .= chr($color["blue"]) . chr($color["green"]) . chr($color["red"]); + } + if (3*$width % 4) { + $data .= str_repeat("\x00", 4 - 3*$width % 4); + } + } + + return array($width, $height, strlen($data), $data); + } + + /** + * Convert a 24 bit bitmap into the modified internal format used by Windows. + * This is described in BITMAPCOREHEADER and BITMAPCOREINFO structures in the + * MSDN library. + * + * @access private + * @param string $bitmap The bitmap to process + * @return array Array with data and properties of the bitmap + */ + public function processBitmap($bitmap) + { + // Open file. + $bmp_fd = @fopen($bitmap, "rb"); + if (!$bmp_fd) { + throw new PHPExcel_Writer_Exception("Couldn't import $bitmap"); + } + + // Slurp the file into a string. + $data = fread($bmp_fd, filesize($bitmap)); + + // Check that the file is big enough to be a bitmap. + if (strlen($data) <= 0x36) { + throw new PHPExcel_Writer_Exception("$bitmap doesn't contain enough data.\n"); + } + + // The first 2 bytes are used to identify the bitmap. + $identity = unpack("A2ident", $data); + if ($identity['ident'] != "BM") { + throw new PHPExcel_Writer_Exception("$bitmap doesn't appear to be a valid bitmap image.\n"); + } + + // Remove bitmap data: ID. + $data = substr($data, 2); + + // Read and remove the bitmap size. This is more reliable than reading + // the data size at offset 0x22. + // + $size_array = unpack("Vsa", substr($data, 0, 4)); + $size = $size_array['sa']; + $data = substr($data, 4); + $size -= 0x36; // Subtract size of bitmap header. + $size += 0x0C; // Add size of BIFF header. + + // Remove bitmap data: reserved, offset, header length. + $data = substr($data, 12); + + // Read and remove the bitmap width and height. Verify the sizes. + $width_and_height = unpack("V2", substr($data, 0, 8)); + $width = $width_and_height[1]; + $height = $width_and_height[2]; + $data = substr($data, 8); + if ($width > 0xFFFF) { + throw new PHPExcel_Writer_Exception("$bitmap: largest image width supported is 65k.\n"); + } + if ($height > 0xFFFF) { + throw new PHPExcel_Writer_Exception("$bitmap: largest image height supported is 65k.\n"); + } + + // Read and remove the bitmap planes and bpp data. Verify them. + $planes_and_bitcount = unpack("v2", substr($data, 0, 4)); + $data = substr($data, 4); + if ($planes_and_bitcount[2] != 24) { // Bitcount + throw new PHPExcel_Writer_Exception("$bitmap isn't a 24bit true color bitmap.\n"); + } + if ($planes_and_bitcount[1] != 1) { + throw new PHPExcel_Writer_Exception("$bitmap: only 1 plane supported in bitmap image.\n"); + } + + // Read and remove the bitmap compression. Verify compression. + $compression = unpack("Vcomp", substr($data, 0, 4)); + $data = substr($data, 4); + + //$compression = 0; + if ($compression['comp'] != 0) { + throw new PHPExcel_Writer_Exception("$bitmap: compression not supported in bitmap image.\n"); + } + + // Remove bitmap data: data size, hres, vres, colours, imp. colours. + $data = substr($data, 20); + + // Add the BITMAPCOREHEADER data + $header = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18); + $data = $header . $data; + + return (array($width, $height, $size, $data)); + } + + /** + * Store the window zoom factor. This should be a reduced fraction but for + * simplicity we will store all fractions with a numerator of 100. + */ + private function writeZoom() + { + // If scale is 100 we don't need to write a record + if ($this->phpSheet->getSheetView()->getZoomScale() == 100) { + return; + } + + $record = 0x00A0; // Record identifier + $length = 0x0004; // Bytes to follow + + $header = pack("vv", $record, $length); + $data = pack("vv", $this->phpSheet->getSheetView()->getZoomScale(), 100); + $this->append($header . $data); + } + + /** + * Get Escher object + * + * @return PHPExcel_Shared_Escher + */ + public function getEscher() + { + return $this->escher; + } + + /** + * Set Escher object + * + * @param PHPExcel_Shared_Escher $pValue + */ + public function setEscher(PHPExcel_Shared_Escher $pValue = null) + { + $this->escher = $pValue; + } + + /** + * Write MSODRAWING record + */ + private function writeMsoDrawing() + { + // write the Escher stream if necessary + if (isset($this->escher)) { + $writer = new PHPExcel_Writer_Excel5_Escher($this->escher); + $data = $writer->close(); + $spOffsets = $writer->getSpOffsets(); + $spTypes = $writer->getSpTypes(); + // write the neccesary MSODRAWING, OBJ records + + // split the Escher stream + $spOffsets[0] = 0; + $nm = count($spOffsets) - 1; // number of shapes excluding first shape + for ($i = 1; $i <= $nm; ++$i) { + // MSODRAWING record + $record = 0x00EC; // Record identifier + + // chunk of Escher stream for one shape + $dataChunk = substr($data, $spOffsets[$i -1], $spOffsets[$i] - $spOffsets[$i - 1]); + + $length = strlen($dataChunk); + $header = pack("vv", $record, $length); + + $this->append($header . $dataChunk); + + // OBJ record + $record = 0x005D; // record identifier + $objData = ''; + + // ftCmo + if ($spTypes[$i] == 0x00C9) { + // Add ftCmo (common object data) subobject + $objData .= + pack( + 'vvvvvVVV', + 0x0015, // 0x0015 = ftCmo + 0x0012, // length of ftCmo data + 0x0014, // object type, 0x0014 = filter + $i, // object id number, Excel seems to use 1-based index, local for the sheet + 0x2101, // option flags, 0x2001 is what OpenOffice.org uses + 0, // reserved + 0, // reserved + 0 // reserved + ); + + // Add ftSbs Scroll bar subobject + $objData .= pack('vv', 0x00C, 0x0014); + $objData .= pack('H*', '0000000000000000640001000A00000010000100'); + // Add ftLbsData (List box data) subobject + $objData .= pack('vv', 0x0013, 0x1FEE); + $objData .= pack('H*', '00000000010001030000020008005700'); + } else { + // Add ftCmo (common object data) subobject + $objData .= + pack( + 'vvvvvVVV', + 0x0015, // 0x0015 = ftCmo + 0x0012, // length of ftCmo data + 0x0008, // object type, 0x0008 = picture + $i, // object id number, Excel seems to use 1-based index, local for the sheet + 0x6011, // option flags, 0x6011 is what OpenOffice.org uses + 0, // reserved + 0, // reserved + 0 // reserved + ); + } + + // ftEnd + $objData .= + pack( + 'vv', + 0x0000, // 0x0000 = ftEnd + 0x0000 // length of ftEnd data + ); + + $length = strlen($objData); + $header = pack('vv', $record, $length); + $this->append($header . $objData); + } + } + } + + /** + * Store the DATAVALIDATIONS and DATAVALIDATION records. + */ + private function writeDataValidity() + { + // Datavalidation collection + $dataValidationCollection = $this->phpSheet->getDataValidationCollection(); + + // Write data validations? + if (!empty($dataValidationCollection)) { + // DATAVALIDATIONS record + $record = 0x01B2; // Record identifier + $length = 0x0012; // Bytes to follow + + $grbit = 0x0000; // Prompt box at cell, no cached validity data at DV records + $horPos = 0x00000000; // Horizontal position of prompt box, if fixed position + $verPos = 0x00000000; // Vertical position of prompt box, if fixed position + $objId = 0xFFFFFFFF; // Object identifier of drop down arrow object, or -1 if not visible + + $header = pack('vv', $record, $length); + $data = pack('vVVVV', $grbit, $horPos, $verPos, $objId, count($dataValidationCollection)); + $this->append($header.$data); + + // DATAVALIDATION records + $record = 0x01BE; // Record identifier + + foreach ($dataValidationCollection as $cellCoordinate => $dataValidation) { + // initialize record data + $data = ''; + + // options + $options = 0x00000000; + + // data type + $type = $dataValidation->getType(); + switch ($type) { + case PHPExcel_Cell_DataValidation::TYPE_NONE: + $type = 0x00; + break; + case PHPExcel_Cell_DataValidation::TYPE_WHOLE: + $type = 0x01; + break; + case PHPExcel_Cell_DataValidation::TYPE_DECIMAL: + $type = 0x02; + break; + case PHPExcel_Cell_DataValidation::TYPE_LIST: + $type = 0x03; + break; + case PHPExcel_Cell_DataValidation::TYPE_DATE: + $type = 0x04; + break; + case PHPExcel_Cell_DataValidation::TYPE_TIME: + $type = 0x05; + break; + case PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH: + $type = 0x06; + break; + case PHPExcel_Cell_DataValidation::TYPE_CUSTOM: + $type = 0x07; + break; + } + $options |= $type << 0; + + // error style + $errorStyle = $dataValidation->getType(); + switch ($errorStyle) { + case PHPExcel_Cell_DataValidation::STYLE_STOP: + $errorStyle = 0x00; + break; + case PHPExcel_Cell_DataValidation::STYLE_WARNING: + $errorStyle = 0x01; + break; + case PHPExcel_Cell_DataValidation::STYLE_INFORMATION: + $errorStyle = 0x02; + break; + } + $options |= $errorStyle << 4; + + // explicit formula? + if ($type == 0x03 && preg_match('/^\".*\"$/', $dataValidation->getFormula1())) { + $options |= 0x01 << 7; + } + + // empty cells allowed + $options |= $dataValidation->getAllowBlank() << 8; + + // show drop down + $options |= (!$dataValidation->getShowDropDown()) << 9; + + // show input message + $options |= $dataValidation->getShowInputMessage() << 18; + + // show error message + $options |= $dataValidation->getShowErrorMessage() << 19; + + // condition operator + $operator = $dataValidation->getOperator(); + switch ($operator) { + case PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN: + $operator = 0x00; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN: + $operator = 0x01; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_EQUAL: + $operator = 0x02; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL: + $operator = 0x03; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN: + $operator = 0x04; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN: + $operator = 0x05; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL: + $operator = 0x06; + break; + case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL: + $operator = 0x07; + break; + } + $options |= $operator << 20; + + $data = pack('V', $options); + + // prompt title + $promptTitle = $dataValidation->getPromptTitle() !== '' ? + $dataValidation->getPromptTitle() : chr(0); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($promptTitle); + + // error title + $errorTitle = $dataValidation->getErrorTitle() !== '' ? + $dataValidation->getErrorTitle() : chr(0); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($errorTitle); + + // prompt text + $prompt = $dataValidation->getPrompt() !== '' ? + $dataValidation->getPrompt() : chr(0); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($prompt); + + // error text + $error = $dataValidation->getError() !== '' ? + $dataValidation->getError() : chr(0); + $data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($error); + + // formula 1 + try { + $formula1 = $dataValidation->getFormula1(); + if ($type == 0x03) { // list type + $formula1 = str_replace(',', chr(0), $formula1); + } + $this->parser->parse($formula1); + $formula1 = $this->parser->toReversePolish(); + $sz1 = strlen($formula1); + } catch (PHPExcel_Exception $e) { + $sz1 = 0; + $formula1 = ''; + } + $data .= pack('vv', $sz1, 0x0000); + $data .= $formula1; + + // formula 2 + try { + $formula2 = $dataValidation->getFormula2(); + if ($formula2 === '') { + throw new PHPExcel_Writer_Exception('No formula2'); + } + $this->parser->parse($formula2); + $formula2 = $this->parser->toReversePolish(); + $sz2 = strlen($formula2); + } catch (PHPExcel_Exception $e) { + $sz2 = 0; + $formula2 = ''; + } + $data .= pack('vv', $sz2, 0x0000); + $data .= $formula2; + + // cell range address list + $data .= pack('v', 0x0001); + $data .= $this->writeBIFF8CellRangeAddressFixed($cellCoordinate); + + $length = strlen($data); + $header = pack("vv", $record, $length); + + $this->append($header . $data); + } + } + } + + /** + * Map Error code + * + * @param string $errorCode + * @return int + */ + private static function mapErrorCode($errorCode) + { + switch ($errorCode) { + case '#NULL!': + return 0x00; + case '#DIV/0!': + return 0x07; + case '#VALUE!': + return 0x0F; + case '#REF!': + return 0x17; + case '#NAME?': + return 0x1D; + case '#NUM!': + return 0x24; + case '#N/A': + return 0x2A; + } + + return 0; + } + + /** + * Write PLV Record + */ + private function writePageLayoutView() + { + $record = 0x088B; // Record identifier + $length = 0x0010; // Bytes to follow + + $rt = 0x088B; // 2 + $grbitFrt = 0x0000; // 2 + $reserved = 0x0000000000000000; // 8 + $wScalvePLV = $this->phpSheet->getSheetView()->getZoomScale(); // 2 + + // The options flags that comprise $grbit + if ($this->phpSheet->getSheetView()->getView() == PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT) { + $fPageLayoutView = 1; + } else { + $fPageLayoutView = 0; + } + $fRulerVisible = 0; + $fWhitespaceHidden = 0; + + $grbit = $fPageLayoutView; // 2 + $grbit |= $fRulerVisible << 1; + $grbit |= $fWhitespaceHidden << 3; + + $header = pack("vv", $record, $length); + $data = pack("vvVVvv", $rt, $grbitFrt, 0x00000000, 0x00000000, $wScalvePLV, $grbit); + $this->append($header . $data); + } + + /** + * Write CFRule Record + * @param PHPExcel_Style_Conditional $conditional + */ + private function writeCFRule(PHPExcel_Style_Conditional $conditional) + { + $record = 0x01B1; // Record identifier + + // $type : Type of the CF + // $operatorType : Comparison operator + if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION) { + $type = 0x02; + $operatorType = 0x00; + } elseif ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { + $type = 0x01; + + switch ($conditional->getOperatorType()) { + case PHPExcel_Style_Conditional::OPERATOR_NONE: + $operatorType = 0x00; + break; + case PHPExcel_Style_Conditional::OPERATOR_EQUAL: + $operatorType = 0x03; + break; + case PHPExcel_Style_Conditional::OPERATOR_GREATERTHAN: + $operatorType = 0x05; + break; + case PHPExcel_Style_Conditional::OPERATOR_GREATERTHANOREQUAL: + $operatorType = 0x07; + break; + case PHPExcel_Style_Conditional::OPERATOR_LESSTHAN: + $operatorType = 0x06; + break; + case PHPExcel_Style_Conditional::OPERATOR_LESSTHANOREQUAL: + $operatorType = 0x08; + break; + case PHPExcel_Style_Conditional::OPERATOR_NOTEQUAL: + $operatorType = 0x04; + break; + case PHPExcel_Style_Conditional::OPERATOR_BETWEEN: + $operatorType = 0x01; + break; + // not OPERATOR_NOTBETWEEN 0x02 + } + } + + // $szValue1 : size of the formula data for first value or formula + // $szValue2 : size of the formula data for second value or formula + $arrConditions = $conditional->getConditions(); + $numConditions = sizeof($arrConditions); + if ($numConditions == 1) { + $szValue1 = ($arrConditions[0] <= 65535 ? 3 : 0x0000); + $szValue2 = 0x0000; + $operand1 = pack('Cv', 0x1E, $arrConditions[0]); + $operand2 = null; + } elseif ($numConditions == 2 && ($conditional->getOperatorType() == PHPExcel_Style_Conditional::OPERATOR_BETWEEN)) { + $szValue1 = ($arrConditions[0] <= 65535 ? 3 : 0x0000); + $szValue2 = ($arrConditions[1] <= 65535 ? 3 : 0x0000); + $operand1 = pack('Cv', 0x1E, $arrConditions[0]); + $operand2 = pack('Cv', 0x1E, $arrConditions[1]); + } else { + $szValue1 = 0x0000; + $szValue2 = 0x0000; + $operand1 = null; + $operand2 = null; + } + + // $flags : Option flags + // Alignment + $bAlignHz = ($conditional->getStyle()->getAlignment()->getHorizontal() == null ? 1 : 0); + $bAlignVt = ($conditional->getStyle()->getAlignment()->getVertical() == null ? 1 : 0); + $bAlignWrapTx = ($conditional->getStyle()->getAlignment()->getWrapText() == false ? 1 : 0); + $bTxRotation = ($conditional->getStyle()->getAlignment()->getTextRotation() == null ? 1 : 0); + $bIndent = ($conditional->getStyle()->getAlignment()->getIndent() == 0 ? 1 : 0); + $bShrinkToFit = ($conditional->getStyle()->getAlignment()->getShrinkToFit() == false ? 1 : 0); + if ($bAlignHz == 0 || $bAlignVt == 0 || $bAlignWrapTx == 0 || $bTxRotation == 0 || $bIndent == 0 || $bShrinkToFit == 0) { + $bFormatAlign = 1; + } else { + $bFormatAlign = 0; + } + // Protection + $bProtLocked = ($conditional->getStyle()->getProtection()->getLocked() == null ? 1 : 0); + $bProtHidden = ($conditional->getStyle()->getProtection()->getHidden() == null ? 1 : 0); + if ($bProtLocked == 0 || $bProtHidden == 0) { + $bFormatProt = 1; + } else { + $bFormatProt = 0; + } + // Border + $bBorderLeft = ($conditional->getStyle()->getBorders()->getLeft()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK + && $conditional->getStyle()->getBorders()->getLeft()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); + $bBorderRight = ($conditional->getStyle()->getBorders()->getRight()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK + && $conditional->getStyle()->getBorders()->getRight()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); + $bBorderTop = ($conditional->getStyle()->getBorders()->getTop()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK + && $conditional->getStyle()->getBorders()->getTop()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); + $bBorderBottom = ($conditional->getStyle()->getBorders()->getBottom()->getColor()->getARGB() == PHPExcel_Style_Color::COLOR_BLACK + && $conditional->getStyle()->getBorders()->getBottom()->getBorderStyle() == PHPExcel_Style_Border::BORDER_NONE ? 1 : 0); + if ($bBorderLeft == 0 || $bBorderRight == 0 || $bBorderTop == 0 || $bBorderBottom == 0) { + $bFormatBorder = 1; + } else { + $bFormatBorder = 0; + } + // Pattern + $bFillStyle = ($conditional->getStyle()->getFill()->getFillType() == null ? 0 : 1); + $bFillColor = ($conditional->getStyle()->getFill()->getStartColor()->getARGB() == null ? 0 : 1); + $bFillColorBg = ($conditional->getStyle()->getFill()->getEndColor()->getARGB() == null ? 0 : 1); + if ($bFillStyle == 0 || $bFillColor == 0 || $bFillColorBg == 0) { + $bFormatFill = 1; + } else { + $bFormatFill = 0; + } + // Font + if ($conditional->getStyle()->getFont()->getName() != null + || $conditional->getStyle()->getFont()->getSize() != null + || $conditional->getStyle()->getFont()->getBold() != null + || $conditional->getStyle()->getFont()->getItalic() != null + || $conditional->getStyle()->getFont()->getSuperScript() != null + || $conditional->getStyle()->getFont()->getSubScript() != null + || $conditional->getStyle()->getFont()->getUnderline() != null + || $conditional->getStyle()->getFont()->getStrikethrough() != null + || $conditional->getStyle()->getFont()->getColor()->getARGB() != null) { + $bFormatFont = 1; + } else { + $bFormatFont = 0; + } + // Alignment + $flags = 0; + $flags |= (1 == $bAlignHz ? 0x00000001 : 0); + $flags |= (1 == $bAlignVt ? 0x00000002 : 0); + $flags |= (1 == $bAlignWrapTx ? 0x00000004 : 0); + $flags |= (1 == $bTxRotation ? 0x00000008 : 0); + // Justify last line flag + $flags |= (1 == 1 ? 0x00000010 : 0); + $flags |= (1 == $bIndent ? 0x00000020 : 0); + $flags |= (1 == $bShrinkToFit ? 0x00000040 : 0); + // Default + $flags |= (1 == 1 ? 0x00000080 : 0); + // Protection + $flags |= (1 == $bProtLocked ? 0x00000100 : 0); + $flags |= (1 == $bProtHidden ? 0x00000200 : 0); + // Border + $flags |= (1 == $bBorderLeft ? 0x00000400 : 0); + $flags |= (1 == $bBorderRight ? 0x00000800 : 0); + $flags |= (1 == $bBorderTop ? 0x00001000 : 0); + $flags |= (1 == $bBorderBottom ? 0x00002000 : 0); + $flags |= (1 == 1 ? 0x00004000 : 0); // Top left to Bottom right border + $flags |= (1 == 1 ? 0x00008000 : 0); // Bottom left to Top right border + // Pattern + $flags |= (1 == $bFillStyle ? 0x00010000 : 0); + $flags |= (1 == $bFillColor ? 0x00020000 : 0); + $flags |= (1 == $bFillColorBg ? 0x00040000 : 0); + $flags |= (1 == 1 ? 0x00380000 : 0); + // Font + $flags |= (1 == $bFormatFont ? 0x04000000 : 0); + // Alignment: + $flags |= (1 == $bFormatAlign ? 0x08000000 : 0); + // Border + $flags |= (1 == $bFormatBorder ? 0x10000000 : 0); + // Pattern + $flags |= (1 == $bFormatFill ? 0x20000000 : 0); + // Protection + $flags |= (1 == $bFormatProt ? 0x40000000 : 0); + // Text direction + $flags |= (1 == 0 ? 0x80000000 : 0); + + // Data Blocks + if ($bFormatFont == 1) { + // Font Name + if ($conditional->getStyle()->getFont()->getName() == null) { + $dataBlockFont = pack('VVVVVVVV', 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000); + $dataBlockFont .= pack('VVVVVVVV', 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000); + } else { + $dataBlockFont = PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($conditional->getStyle()->getFont()->getName()); + } + // Font Size + if ($conditional->getStyle()->getFont()->getSize() == null) { + $dataBlockFont .= pack('V', 20 * 11); + } else { + $dataBlockFont .= pack('V', 20 * $conditional->getStyle()->getFont()->getSize()); + } + // Font Options + $dataBlockFont .= pack('V', 0); + // Font weight + if ($conditional->getStyle()->getFont()->getBold() == true) { + $dataBlockFont .= pack('v', 0x02BC); + } else { + $dataBlockFont .= pack('v', 0x0190); + } + // Escapement type + if ($conditional->getStyle()->getFont()->getSubScript() == true) { + $dataBlockFont .= pack('v', 0x02); + $fontEscapement = 0; + } elseif ($conditional->getStyle()->getFont()->getSuperScript() == true) { + $dataBlockFont .= pack('v', 0x01); + $fontEscapement = 0; + } else { + $dataBlockFont .= pack('v', 0x00); + $fontEscapement = 1; + } + // Underline type + switch ($conditional->getStyle()->getFont()->getUnderline()) { + case PHPExcel_Style_Font::UNDERLINE_NONE: + $dataBlockFont .= pack('C', 0x00); + $fontUnderline = 0; + break; + case PHPExcel_Style_Font::UNDERLINE_DOUBLE: + $dataBlockFont .= pack('C', 0x02); + $fontUnderline = 0; + break; + case PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING: + $dataBlockFont .= pack('C', 0x22); + $fontUnderline = 0; + break; + case PHPExcel_Style_Font::UNDERLINE_SINGLE: + $dataBlockFont .= pack('C', 0x01); + $fontUnderline = 0; + break; + case PHPExcel_Style_Font::UNDERLINE_SINGLEACCOUNTING: + $dataBlockFont .= pack('C', 0x21); + $fontUnderline = 0; + break; + default: $dataBlockFont .= pack('C', 0x00); + $fontUnderline = 1; + break; + } + // Not used (3) + $dataBlockFont .= pack('vC', 0x0000, 0x00); + // Font color index + switch ($conditional->getStyle()->getFont()->getColor()->getRGB()) { + case '000000': + $colorIdx = 0x08; + break; + case 'FFFFFF': + $colorIdx = 0x09; + break; + case 'FF0000': + $colorIdx = 0x0A; + break; + case '00FF00': + $colorIdx = 0x0B; + break; + case '0000FF': + $colorIdx = 0x0C; + break; + case 'FFFF00': + $colorIdx = 0x0D; + break; + case 'FF00FF': + $colorIdx = 0x0E; + break; + case '00FFFF': + $colorIdx = 0x0F; + break; + case '800000': + $colorIdx = 0x10; + break; + case '008000': + $colorIdx = 0x11; + break; + case '000080': + $colorIdx = 0x12; + break; + case '808000': + $colorIdx = 0x13; + break; + case '800080': + $colorIdx = 0x14; + break; + case '008080': + $colorIdx = 0x15; + break; + case 'C0C0C0': + $colorIdx = 0x16; + break; + case '808080': + $colorIdx = 0x17; + break; + case '9999FF': + $colorIdx = 0x18; + break; + case '993366': + $colorIdx = 0x19; + break; + case 'FFFFCC': + $colorIdx = 0x1A; + break; + case 'CCFFFF': + $colorIdx = 0x1B; + break; + case '660066': + $colorIdx = 0x1C; + break; + case 'FF8080': + $colorIdx = 0x1D; + break; + case '0066CC': + $colorIdx = 0x1E; + break; + case 'CCCCFF': + $colorIdx = 0x1F; + break; + case '000080': + $colorIdx = 0x20; + break; + case 'FF00FF': + $colorIdx = 0x21; + break; + case 'FFFF00': + $colorIdx = 0x22; + break; + case '00FFFF': + $colorIdx = 0x23; + break; + case '800080': + $colorIdx = 0x24; + break; + case '800000': + $colorIdx = 0x25; + break; + case '008080': + $colorIdx = 0x26; + break; + case '0000FF': + $colorIdx = 0x27; + break; + case '00CCFF': + $colorIdx = 0x28; + break; + case 'CCFFFF': + $colorIdx = 0x29; + break; + case 'CCFFCC': + $colorIdx = 0x2A; + break; + case 'FFFF99': + $colorIdx = 0x2B; + break; + case '99CCFF': + $colorIdx = 0x2C; + break; + case 'FF99CC': + $colorIdx = 0x2D; + break; + case 'CC99FF': + $colorIdx = 0x2E; + break; + case 'FFCC99': + $colorIdx = 0x2F; + break; + case '3366FF': + $colorIdx = 0x30; + break; + case '33CCCC': + $colorIdx = 0x31; + break; + case '99CC00': + $colorIdx = 0x32; + break; + case 'FFCC00': + $colorIdx = 0x33; + break; + case 'FF9900': + $colorIdx = 0x34; + break; + case 'FF6600': + $colorIdx = 0x35; + break; + case '666699': + $colorIdx = 0x36; + break; + case '969696': + $colorIdx = 0x37; + break; + case '003366': + $colorIdx = 0x38; + break; + case '339966': + $colorIdx = 0x39; + break; + case '003300': + $colorIdx = 0x3A; + break; + case '333300': + $colorIdx = 0x3B; + break; + case '993300': + $colorIdx = 0x3C; + break; + case '993366': + $colorIdx = 0x3D; + break; + case '333399': + $colorIdx = 0x3E; + break; + case '333333': + $colorIdx = 0x3F; + break; + default: + $colorIdx = 0x00; + break; + } + $dataBlockFont .= pack('V', $colorIdx); + // Not used (4) + $dataBlockFont .= pack('V', 0x00000000); + // Options flags for modified font attributes + $optionsFlags = 0; + $optionsFlagsBold = ($conditional->getStyle()->getFont()->getBold() == null ? 1 : 0); + $optionsFlags |= (1 == $optionsFlagsBold ? 0x00000002 : 0); + $optionsFlags |= (1 == 1 ? 0x00000008 : 0); + $optionsFlags |= (1 == 1 ? 0x00000010 : 0); + $optionsFlags |= (1 == 0 ? 0x00000020 : 0); + $optionsFlags |= (1 == 1 ? 0x00000080 : 0); + $dataBlockFont .= pack('V', $optionsFlags); + // Escapement type + $dataBlockFont .= pack('V', $fontEscapement); + // Underline type + $dataBlockFont .= pack('V', $fontUnderline); + // Always + $dataBlockFont .= pack('V', 0x00000000); + // Always + $dataBlockFont .= pack('V', 0x00000000); + // Not used (8) + $dataBlockFont .= pack('VV', 0x00000000, 0x00000000); + // Always + $dataBlockFont .= pack('v', 0x0001); + } + if ($bFormatAlign == 1) { + $blockAlign = 0; + // Alignment and text break + switch ($conditional->getStyle()->getAlignment()->getHorizontal()) { + case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL: + $blockAlign = 0; + break; + case PHPExcel_Style_Alignment::HORIZONTAL_LEFT: + $blockAlign = 1; + break; + case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT: + $blockAlign = 3; + break; + case PHPExcel_Style_Alignment::HORIZONTAL_CENTER: + $blockAlign = 2; + break; + case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS: + $blockAlign = 6; + break; + case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY: + $blockAlign = 5; + break; + } + if ($conditional->getStyle()->getAlignment()->getWrapText() == true) { + $blockAlign |= 1 << 3; + } else { + $blockAlign |= 0 << 3; + } + switch ($conditional->getStyle()->getAlignment()->getVertical()) { + case PHPExcel_Style_Alignment::VERTICAL_BOTTOM: + $blockAlign = 2 << 4; + break; + case PHPExcel_Style_Alignment::VERTICAL_TOP: + $blockAlign = 0 << 4; + break; + case PHPExcel_Style_Alignment::VERTICAL_CENTER: + $blockAlign = 1 << 4; + break; + case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY: + $blockAlign = 3 << 4; + break; + } + $blockAlign |= 0 << 7; + + // Text rotation angle + $blockRotation = $conditional->getStyle()->getAlignment()->getTextRotation(); + + // Indentation + $blockIndent = $conditional->getStyle()->getAlignment()->getIndent(); + if ($conditional->getStyle()->getAlignment()->getShrinkToFit() == true) { + $blockIndent |= 1 << 4; + } else { + $blockIndent |= 0 << 4; + } + $blockIndent |= 0 << 6; + + // Relative indentation + $blockIndentRelative = 255; + + $dataBlockAlign = pack('CCvvv', $blockAlign, $blockRotation, $blockIndent, $blockIndentRelative, 0x0000); + } + if ($bFormatBorder == 1) { + $blockLineStyle = 0; + switch ($conditional->getStyle()->getBorders()->getLeft()->getBorderStyle()) { + case PHPExcel_Style_Border::BORDER_NONE: + $blockLineStyle |= 0x00; + break; + case PHPExcel_Style_Border::BORDER_THIN: + $blockLineStyle |= 0x01; + break; + case PHPExcel_Style_Border::BORDER_MEDIUM: + $blockLineStyle |= 0x02; + break; + case PHPExcel_Style_Border::BORDER_DASHED: + $blockLineStyle |= 0x03; + break; + case PHPExcel_Style_Border::BORDER_DOTTED: + $blockLineStyle |= 0x04; + break; + case PHPExcel_Style_Border::BORDER_THICK: + $blockLineStyle |= 0x05; + break; + case PHPExcel_Style_Border::BORDER_DOUBLE: + $blockLineStyle |= 0x06; + break; + case PHPExcel_Style_Border::BORDER_HAIR: + $blockLineStyle |= 0x07; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + $blockLineStyle |= 0x08; + break; + case PHPExcel_Style_Border::BORDER_DASHDOT: + $blockLineStyle |= 0x09; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + $blockLineStyle |= 0x0A; + break; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + $blockLineStyle |= 0x0B; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + $blockLineStyle |= 0x0C; + break; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + $blockLineStyle |= 0x0D; + break; + } + switch ($conditional->getStyle()->getBorders()->getRight()->getBorderStyle()) { + case PHPExcel_Style_Border::BORDER_NONE: + $blockLineStyle |= 0x00 << 4; + break; + case PHPExcel_Style_Border::BORDER_THIN: + $blockLineStyle |= 0x01 << 4; + break; + case PHPExcel_Style_Border::BORDER_MEDIUM: + $blockLineStyle |= 0x02 << 4; + break; + case PHPExcel_Style_Border::BORDER_DASHED: + $blockLineStyle |= 0x03 << 4; + break; + case PHPExcel_Style_Border::BORDER_DOTTED: + $blockLineStyle |= 0x04 << 4; + break; + case PHPExcel_Style_Border::BORDER_THICK: + $blockLineStyle |= 0x05 << 4; + break; + case PHPExcel_Style_Border::BORDER_DOUBLE: + $blockLineStyle |= 0x06 << 4; + break; + case PHPExcel_Style_Border::BORDER_HAIR: + $blockLineStyle |= 0x07 << 4; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + $blockLineStyle |= 0x08 << 4; + break; + case PHPExcel_Style_Border::BORDER_DASHDOT: + $blockLineStyle |= 0x09 << 4; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + $blockLineStyle |= 0x0A << 4; + break; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + $blockLineStyle |= 0x0B << 4; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + $blockLineStyle |= 0x0C << 4; + break; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + $blockLineStyle |= 0x0D << 4; + break; + } + switch ($conditional->getStyle()->getBorders()->getTop()->getBorderStyle()) { + case PHPExcel_Style_Border::BORDER_NONE: + $blockLineStyle |= 0x00 << 8; + break; + case PHPExcel_Style_Border::BORDER_THIN: + $blockLineStyle |= 0x01 << 8; + break; + case PHPExcel_Style_Border::BORDER_MEDIUM: + $blockLineStyle |= 0x02 << 8; + break; + case PHPExcel_Style_Border::BORDER_DASHED: + $blockLineStyle |= 0x03 << 8; + break; + case PHPExcel_Style_Border::BORDER_DOTTED: + $blockLineStyle |= 0x04 << 8; + break; + case PHPExcel_Style_Border::BORDER_THICK: + $blockLineStyle |= 0x05 << 8; + break; + case PHPExcel_Style_Border::BORDER_DOUBLE: + $blockLineStyle |= 0x06 << 8; + break; + case PHPExcel_Style_Border::BORDER_HAIR: + $blockLineStyle |= 0x07 << 8; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + $blockLineStyle |= 0x08 << 8; + break; + case PHPExcel_Style_Border::BORDER_DASHDOT: + $blockLineStyle |= 0x09 << 8; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + $blockLineStyle |= 0x0A << 8; + break; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + $blockLineStyle |= 0x0B << 8; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + $blockLineStyle |= 0x0C << 8; + break; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + $blockLineStyle |= 0x0D << 8; + break; + } + switch ($conditional->getStyle()->getBorders()->getBottom()->getBorderStyle()) { + case PHPExcel_Style_Border::BORDER_NONE: + $blockLineStyle |= 0x00 << 12; + break; + case PHPExcel_Style_Border::BORDER_THIN: + $blockLineStyle |= 0x01 << 12; + break; + case PHPExcel_Style_Border::BORDER_MEDIUM: + $blockLineStyle |= 0x02 << 12; + break; + case PHPExcel_Style_Border::BORDER_DASHED: + $blockLineStyle |= 0x03 << 12; + break; + case PHPExcel_Style_Border::BORDER_DOTTED: + $blockLineStyle |= 0x04 << 12; + break; + case PHPExcel_Style_Border::BORDER_THICK: + $blockLineStyle |= 0x05 << 12; + break; + case PHPExcel_Style_Border::BORDER_DOUBLE: + $blockLineStyle |= 0x06 << 12; + break; + case PHPExcel_Style_Border::BORDER_HAIR: + $blockLineStyle |= 0x07 << 12; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + $blockLineStyle |= 0x08 << 12; + break; + case PHPExcel_Style_Border::BORDER_DASHDOT: + $blockLineStyle |= 0x09 << 12; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + $blockLineStyle |= 0x0A << 12; + break; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + $blockLineStyle |= 0x0B << 12; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + $blockLineStyle |= 0x0C << 12; + break; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + $blockLineStyle |= 0x0D << 12; + break; + } + //@todo writeCFRule() => $blockLineStyle => Index Color for left line + //@todo writeCFRule() => $blockLineStyle => Index Color for right line + //@todo writeCFRule() => $blockLineStyle => Top-left to bottom-right on/off + //@todo writeCFRule() => $blockLineStyle => Bottom-left to top-right on/off + $blockColor = 0; + //@todo writeCFRule() => $blockColor => Index Color for top line + //@todo writeCFRule() => $blockColor => Index Color for bottom line + //@todo writeCFRule() => $blockColor => Index Color for diagonal line + switch ($conditional->getStyle()->getBorders()->getDiagonal()->getBorderStyle()) { + case PHPExcel_Style_Border::BORDER_NONE: + $blockColor |= 0x00 << 21; + break; + case PHPExcel_Style_Border::BORDER_THIN: + $blockColor |= 0x01 << 21; + break; + case PHPExcel_Style_Border::BORDER_MEDIUM: + $blockColor |= 0x02 << 21; + break; + case PHPExcel_Style_Border::BORDER_DASHED: + $blockColor |= 0x03 << 21; + break; + case PHPExcel_Style_Border::BORDER_DOTTED: + $blockColor |= 0x04 << 21; + break; + case PHPExcel_Style_Border::BORDER_THICK: + $blockColor |= 0x05 << 21; + break; + case PHPExcel_Style_Border::BORDER_DOUBLE: + $blockColor |= 0x06 << 21; + break; + case PHPExcel_Style_Border::BORDER_HAIR: + $blockColor |= 0x07 << 21; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + $blockColor |= 0x08 << 21; + break; + case PHPExcel_Style_Border::BORDER_DASHDOT: + $blockColor |= 0x09 << 21; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + $blockColor |= 0x0A << 21; + break; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + $blockColor |= 0x0B << 21; + break; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + $blockColor |= 0x0C << 21; + break; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + $blockColor |= 0x0D << 21; + break; + } + $dataBlockBorder = pack('vv', $blockLineStyle, $blockColor); + } + if ($bFormatFill == 1) { + // Fill Patern Style + $blockFillPatternStyle = 0; + switch ($conditional->getStyle()->getFill()->getFillType()) { + case PHPExcel_Style_Fill::FILL_NONE: + $blockFillPatternStyle = 0x00; + break; + case PHPExcel_Style_Fill::FILL_SOLID: + $blockFillPatternStyle = 0x01; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY: + $blockFillPatternStyle = 0x02; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY: + $blockFillPatternStyle = 0x03; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY: + $blockFillPatternStyle = 0x04; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL: + $blockFillPatternStyle = 0x05; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL: + $blockFillPatternStyle = 0x06; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN: + $blockFillPatternStyle = 0x07; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKUP: + $blockFillPatternStyle = 0x08; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID: + $blockFillPatternStyle = 0x09; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS: + $blockFillPatternStyle = 0x0A; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL: + $blockFillPatternStyle = 0x0B; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL: + $blockFillPatternStyle = 0x0C; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN: + $blockFillPatternStyle = 0x0D; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP: + $blockFillPatternStyle = 0x0E; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID: + $blockFillPatternStyle = 0x0F; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS: + $blockFillPatternStyle = 0x10; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_GRAY125: + $blockFillPatternStyle = 0x11; + break; + case PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625: + $blockFillPatternStyle = 0x12; + break; + case PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR: + $blockFillPatternStyle = 0x00; + break; // does not exist in BIFF8 + case PHPExcel_Style_Fill::FILL_GRADIENT_PATH: + $blockFillPatternStyle = 0x00; + break; // does not exist in BIFF8 + default: + $blockFillPatternStyle = 0x00; + break; + } + // Color + switch ($conditional->getStyle()->getFill()->getStartColor()->getRGB()) { + case '000000': + $colorIdxBg = 0x08; + break; + case 'FFFFFF': + $colorIdxBg = 0x09; + break; + case 'FF0000': + $colorIdxBg = 0x0A; + break; + case '00FF00': + $colorIdxBg = 0x0B; + break; + case '0000FF': + $colorIdxBg = 0x0C; + break; + case 'FFFF00': + $colorIdxBg = 0x0D; + break; + case 'FF00FF': + $colorIdxBg = 0x0E; + break; + case '00FFFF': + $colorIdxBg = 0x0F; + break; + case '800000': + $colorIdxBg = 0x10; + break; + case '008000': + $colorIdxBg = 0x11; + break; + case '000080': + $colorIdxBg = 0x12; + break; + case '808000': + $colorIdxBg = 0x13; + break; + case '800080': + $colorIdxBg = 0x14; + break; + case '008080': + $colorIdxBg = 0x15; + break; + case 'C0C0C0': + $colorIdxBg = 0x16; + break; + case '808080': + $colorIdxBg = 0x17; + break; + case '9999FF': + $colorIdxBg = 0x18; + break; + case '993366': + $colorIdxBg = 0x19; + break; + case 'FFFFCC': + $colorIdxBg = 0x1A; + break; + case 'CCFFFF': + $colorIdxBg = 0x1B; + break; + case '660066': + $colorIdxBg = 0x1C; + break; + case 'FF8080': + $colorIdxBg = 0x1D; + break; + case '0066CC': + $colorIdxBg = 0x1E; + break; + case 'CCCCFF': + $colorIdxBg = 0x1F; + break; + case '000080': + $colorIdxBg = 0x20; + break; + case 'FF00FF': + $colorIdxBg = 0x21; + break; + case 'FFFF00': + $colorIdxBg = 0x22; + break; + case '00FFFF': + $colorIdxBg = 0x23; + break; + case '800080': + $colorIdxBg = 0x24; + break; + case '800000': + $colorIdxBg = 0x25; + break; + case '008080': + $colorIdxBg = 0x26; + break; + case '0000FF': + $colorIdxBg = 0x27; + break; + case '00CCFF': + $colorIdxBg = 0x28; + break; + case 'CCFFFF': + $colorIdxBg = 0x29; + break; + case 'CCFFCC': + $colorIdxBg = 0x2A; + break; + case 'FFFF99': + $colorIdxBg = 0x2B; + break; + case '99CCFF': + $colorIdxBg = 0x2C; + break; + case 'FF99CC': + $colorIdxBg = 0x2D; + break; + case 'CC99FF': + $colorIdxBg = 0x2E; + break; + case 'FFCC99': + $colorIdxBg = 0x2F; + break; + case '3366FF': + $colorIdxBg = 0x30; + break; + case '33CCCC': + $colorIdxBg = 0x31; + break; + case '99CC00': + $colorIdxBg = 0x32; + break; + case 'FFCC00': + $colorIdxBg = 0x33; + break; + case 'FF9900': + $colorIdxBg = 0x34; + break; + case 'FF6600': + $colorIdxBg = 0x35; + break; + case '666699': + $colorIdxBg = 0x36; + break; + case '969696': + $colorIdxBg = 0x37; + break; + case '003366': + $colorIdxBg = 0x38; + break; + case '339966': + $colorIdxBg = 0x39; + break; + case '003300': + $colorIdxBg = 0x3A; + break; + case '333300': + $colorIdxBg = 0x3B; + break; + case '993300': + $colorIdxBg = 0x3C; + break; + case '993366': + $colorIdxBg = 0x3D; + break; + case '333399': + $colorIdxBg = 0x3E; + break; + case '333333': + $colorIdxBg = 0x3F; + break; + default: + $colorIdxBg = 0x41; + break; + } + // Fg Color + switch ($conditional->getStyle()->getFill()->getEndColor()->getRGB()) { + case '000000': + $colorIdxFg = 0x08; + break; + case 'FFFFFF': + $colorIdxFg = 0x09; + break; + case 'FF0000': + $colorIdxFg = 0x0A; + break; + case '00FF00': + $colorIdxFg = 0x0B; + break; + case '0000FF': + $colorIdxFg = 0x0C; + break; + case 'FFFF00': + $colorIdxFg = 0x0D; + break; + case 'FF00FF': + $colorIdxFg = 0x0E; + break; + case '00FFFF': + $colorIdxFg = 0x0F; + break; + case '800000': + $colorIdxFg = 0x10; + break; + case '008000': + $colorIdxFg = 0x11; + break; + case '000080': + $colorIdxFg = 0x12; + break; + case '808000': + $colorIdxFg = 0x13; + break; + case '800080': + $colorIdxFg = 0x14; + break; + case '008080': + $colorIdxFg = 0x15; + break; + case 'C0C0C0': + $colorIdxFg = 0x16; + break; + case '808080': + $colorIdxFg = 0x17; + break; + case '9999FF': + $colorIdxFg = 0x18; + break; + case '993366': + $colorIdxFg = 0x19; + break; + case 'FFFFCC': + $colorIdxFg = 0x1A; + break; + case 'CCFFFF': + $colorIdxFg = 0x1B; + break; + case '660066': + $colorIdxFg = 0x1C; + break; + case 'FF8080': + $colorIdxFg = 0x1D; + break; + case '0066CC': + $colorIdxFg = 0x1E; + break; + case 'CCCCFF': + $colorIdxFg = 0x1F; + break; + case '000080': + $colorIdxFg = 0x20; + break; + case 'FF00FF': + $colorIdxFg = 0x21; + break; + case 'FFFF00': + $colorIdxFg = 0x22; + break; + case '00FFFF': + $colorIdxFg = 0x23; + break; + case '800080': + $colorIdxFg = 0x24; + break; + case '800000': + $colorIdxFg = 0x25; + break; + case '008080': + $colorIdxFg = 0x26; + break; + case '0000FF': + $colorIdxFg = 0x27; + break; + case '00CCFF': + $colorIdxFg = 0x28; + break; + case 'CCFFFF': + $colorIdxFg = 0x29; + break; + case 'CCFFCC': + $colorIdxFg = 0x2A; + break; + case 'FFFF99': + $colorIdxFg = 0x2B; + break; + case '99CCFF': + $colorIdxFg = 0x2C; + break; + case 'FF99CC': + $colorIdxFg = 0x2D; + break; + case 'CC99FF': + $colorIdxFg = 0x2E; + break; + case 'FFCC99': + $colorIdxFg = 0x2F; + break; + case '3366FF': + $colorIdxFg = 0x30; + break; + case '33CCCC': + $colorIdxFg = 0x31; + break; + case '99CC00': + $colorIdxFg = 0x32; + break; + case 'FFCC00': + $colorIdxFg = 0x33; + break; + case 'FF9900': + $colorIdxFg = 0x34; + break; + case 'FF6600': + $colorIdxFg = 0x35; + break; + case '666699': + $colorIdxFg = 0x36; + break; + case '969696': + $colorIdxFg = 0x37; + break; + case '003366': + $colorIdxFg = 0x38; + break; + case '339966': + $colorIdxFg = 0x39; + break; + case '003300': + $colorIdxFg = 0x3A; + break; + case '333300': + $colorIdxFg = 0x3B; + break; + case '993300': + $colorIdxFg = 0x3C; + break; + case '993366': + $colorIdxFg = 0x3D; + break; + case '333399': + $colorIdxFg = 0x3E; + break; + case '333333': + $colorIdxFg = 0x3F; + break; + default: + $colorIdxFg = 0x40; + break; + } + $dataBlockFill = pack('v', $blockFillPatternStyle); + $dataBlockFill .= pack('v', $colorIdxFg | ($colorIdxBg << 7)); + } + if ($bFormatProt == 1) { + $dataBlockProtection = 0; + if ($conditional->getStyle()->getProtection()->getLocked() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) { + $dataBlockProtection = 1; + } + if ($conditional->getStyle()->getProtection()->getHidden() == PHPExcel_Style_Protection::PROTECTION_PROTECTED) { + $dataBlockProtection = 1 << 1; + } + } + + $data = pack('CCvvVv', $type, $operatorType, $szValue1, $szValue2, $flags, 0x0000); + if ($bFormatFont == 1) { // Block Formatting : OK + $data .= $dataBlockFont; + } + if ($bFormatAlign == 1) { + $data .= $dataBlockAlign; + } + if ($bFormatBorder == 1) { + $data .= $dataBlockBorder; + } + if ($bFormatFill == 1) { // Block Formatting : OK + $data .= $dataBlockFill; + } + if ($bFormatProt == 1) { + $data .= $dataBlockProtection; + } + if (!is_null($operand1)) { + $data .= $operand1; + } + if (!is_null($operand2)) { + $data .= $operand2; + } + $header = pack('vv', $record, strlen($data)); + $this->append($header . $data); + } + + /** + * Write CFHeader record + */ + private function writeCFHeader() + { + $record = 0x01B0; // Record identifier + $length = 0x0016; // Bytes to follow + + $numColumnMin = null; + $numColumnMax = null; + $numRowMin = null; + $numRowMax = null; + $arrConditional = array(); + foreach ($this->phpSheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) { + foreach ($conditionalStyles as $conditional) { + if ($conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_EXPRESSION + || $conditional->getConditionType() == PHPExcel_Style_Conditional::CONDITION_CELLIS) { + if (!in_array($conditional->getHashCode(), $arrConditional)) { + $arrConditional[] = $conditional->getHashCode(); + } + // Cells + $arrCoord = PHPExcel_Cell::coordinateFromString($cellCoordinate); + if (!is_numeric($arrCoord[0])) { + $arrCoord[0] = PHPExcel_Cell::columnIndexFromString($arrCoord[0]); + } + if (is_null($numColumnMin) || ($numColumnMin > $arrCoord[0])) { + $numColumnMin = $arrCoord[0]; + } + if (is_null($numColumnMax) || ($numColumnMax < $arrCoord[0])) { + $numColumnMax = $arrCoord[0]; + } + if (is_null($numRowMin) || ($numRowMin > $arrCoord[1])) { + $numRowMin = $arrCoord[1]; + } + if (is_null($numRowMax) || ($numRowMax < $arrCoord[1])) { + $numRowMax = $arrCoord[1]; + } + } + } + } + $needRedraw = 1; + $cellRange = pack('vvvv', $numRowMin-1, $numRowMax-1, $numColumnMin-1, $numColumnMax-1); + + $header = pack('vv', $record, $length); + $data = pack('vv', count($arrConditional), $needRedraw); + $data .= $cellRange; + $data .= pack('v', 0x0001); + $data .= $cellRange; + $this->append($header . $data); + } +} diff --git a/assets/excel/PHPExcel/Writer/Excel5/Xf.php b/assets/excel/PHPExcel/Writer/Excel5/Xf.php new file mode 100644 index 0000000..e41589a --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Excel5/Xf.php @@ -0,0 +1,557 @@ +<?php + +/** + * PHPExcel_Writer_Excel5_Xf + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_Excel5 + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + +// Original file header of PEAR::Spreadsheet_Excel_Writer_Format (used as the base for this class): +// ----------------------------------------------------------------------------------------- +// /* +// * Module written/ported by Xavier Noguer <xnoguer@rezebra.com> +// * +// * The majority of this is _NOT_ my code. I simply ported it from the +// * PERL Spreadsheet::WriteExcel module. +// * +// * The author of the Spreadsheet::WriteExcel module is John McNamara +// * <jmcnamara@cpan.org> +// * +// * I _DO_ maintain this code, and John McNamara has nothing to do with the +// * porting of this code to PHP. Any questions directly related to this +// * class library should be directed to me. +// * +// * License Information: +// * +// * Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets +// * Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com +// * +// * This library is free software; you can redistribute it and/or +// * modify it under the terms of the GNU Lesser General Public +// * License as published by the Free Software Foundation; either +// * version 2.1 of the License, or (at your option) any later version. +// * +// * This library is distributed in the hope that it will be useful, +// * but WITHOUT ANY WARRANTY; without even the implied warranty of +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// * Lesser General Public License for more details. +// * +// * You should have received a copy of the GNU Lesser General Public +// * License along with this library; if not, write to the Free Software +// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// */ +class PHPExcel_Writer_Excel5_Xf +{ + /** + * Style XF or a cell XF ? + * + * @var boolean + */ + private $isStyleXf; + + /** + * Index to the FONT record. Index 4 does not exist + * @var integer + */ + private $fontIndex; + + /** + * An index (2 bytes) to a FORMAT record (number format). + * @var integer + */ + private $numberFormatIndex; + + /** + * 1 bit, apparently not used. + * @var integer + */ + private $textJustLast; + + /** + * The cell's foreground color. + * @var integer + */ + private $foregroundColor; + + /** + * The cell's background color. + * @var integer + */ + private $backgroundColor; + + /** + * Color of the bottom border of the cell. + * @var integer + */ + private $bottomBorderColor; + + /** + * Color of the top border of the cell. + * @var integer + */ + private $topBorderColor; + + /** + * Color of the left border of the cell. + * @var integer + */ + private $leftBorderColor; + + /** + * Color of the right border of the cell. + * @var integer + */ + private $rightBorderColor; + + /** + * Constructor + * + * @access public + * @param PHPExcel_Style The XF format + */ + public function __construct(PHPExcel_Style $style = null) + { + $this->isStyleXf = false; + $this->fontIndex = 0; + + $this->numberFormatIndex = 0; + + $this->textJustLast = 0; + + $this->foregroundColor = 0x40; + $this->backgroundColor = 0x41; + + $this->_diag = 0; + + $this->bottomBorderColor = 0x40; + $this->topBorderColor = 0x40; + $this->leftBorderColor = 0x40; + $this->rightBorderColor = 0x40; + $this->_diag_color = 0x40; + $this->_style = $style; + + } + + + /** + * Generate an Excel BIFF XF record (style or cell). + * + * @return string The XF record + */ + public function writeXf() + { + // Set the type of the XF record and some of the attributes. + if ($this->isStyleXf) { + $style = 0xFFF5; + } else { + $style = self::mapLocked($this->_style->getProtection()->getLocked()); + $style |= self::mapHidden($this->_style->getProtection()->getHidden()) << 1; + } + + // Flags to indicate if attributes have been set. + $atr_num = ($this->numberFormatIndex != 0)?1:0; + $atr_fnt = ($this->fontIndex != 0)?1:0; + $atr_alc = ((int) $this->_style->getAlignment()->getWrapText()) ? 1 : 0; + $atr_bdr = (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) || + self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) || + self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) || + self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()))?1:0; + $atr_pat = (($this->foregroundColor != 0x40) || + ($this->backgroundColor != 0x41) || + self::mapFillType($this->_style->getFill()->getFillType()))?1:0; + $atr_prot = self::mapLocked($this->_style->getProtection()->getLocked()) + | self::mapHidden($this->_style->getProtection()->getHidden()); + + // Zero the default border colour if the border has not been set. + if (self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) == 0) { + $this->bottomBorderColor = 0; + } + if (self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) == 0) { + $this->topBorderColor = 0; + } + if (self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) == 0) { + $this->rightBorderColor = 0; + } + if (self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()) == 0) { + $this->leftBorderColor = 0; + } + if (self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) == 0) { + $this->_diag_color = 0; + } + + $record = 0x00E0; // Record identifier + $length = 0x0014; // Number of bytes to follow + + $ifnt = $this->fontIndex; // Index to FONT record + $ifmt = $this->numberFormatIndex; // Index to FORMAT record + + $align = $this->mapHAlign($this->_style->getAlignment()->getHorizontal()); // Alignment + $align |= (int) $this->_style->getAlignment()->getWrapText() << 3; + $align |= self::mapVAlign($this->_style->getAlignment()->getVertical()) << 4; + $align |= $this->textJustLast << 7; + + $used_attrib = $atr_num << 2; + $used_attrib |= $atr_fnt << 3; + $used_attrib |= $atr_alc << 4; + $used_attrib |= $atr_bdr << 5; + $used_attrib |= $atr_pat << 6; + $used_attrib |= $atr_prot << 7; + + $icv = $this->foregroundColor; // fg and bg pattern colors + $icv |= $this->backgroundColor << 7; + + $border1 = self::mapBorderStyle($this->_style->getBorders()->getLeft()->getBorderStyle()); // Border line style and color + $border1 |= self::mapBorderStyle($this->_style->getBorders()->getRight()->getBorderStyle()) << 4; + $border1 |= self::mapBorderStyle($this->_style->getBorders()->getTop()->getBorderStyle()) << 8; + $border1 |= self::mapBorderStyle($this->_style->getBorders()->getBottom()->getBorderStyle()) << 12; + $border1 |= $this->leftBorderColor << 16; + $border1 |= $this->rightBorderColor << 23; + + $diagonalDirection = $this->_style->getBorders()->getDiagonalDirection(); + $diag_tl_to_rb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH + || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_DOWN; + $diag_tr_to_lb = $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_BOTH + || $diagonalDirection == PHPExcel_Style_Borders::DIAGONAL_UP; + $border1 |= $diag_tl_to_rb << 30; + $border1 |= $diag_tr_to_lb << 31; + + $border2 = $this->topBorderColor; // Border color + $border2 |= $this->bottomBorderColor << 7; + $border2 |= $this->_diag_color << 14; + $border2 |= self::mapBorderStyle($this->_style->getBorders()->getDiagonal()->getBorderStyle()) << 21; + $border2 |= self::mapFillType($this->_style->getFill()->getFillType()) << 26; + + $header = pack("vv", $record, $length); + + //BIFF8 options: identation, shrinkToFit and text direction + $biff8_options = $this->_style->getAlignment()->getIndent(); + $biff8_options |= (int) $this->_style->getAlignment()->getShrinkToFit() << 4; + + $data = pack("vvvC", $ifnt, $ifmt, $style, $align); + $data .= pack("CCC", self::mapTextRotation($this->_style->getAlignment()->getTextRotation()), $biff8_options, $used_attrib); + $data .= pack("VVv", $border1, $border2, $icv); + + return($header . $data); + } + + /** + * Is this a style XF ? + * + * @param boolean $value + */ + public function setIsStyleXf($value) + { + $this->isStyleXf = $value; + } + + /** + * Sets the cell's bottom border color + * + * @access public + * @param int $colorIndex Color index + */ + public function setBottomColor($colorIndex) + { + $this->bottomBorderColor = $colorIndex; + } + + /** + * Sets the cell's top border color + * + * @access public + * @param int $colorIndex Color index + */ + public function setTopColor($colorIndex) + { + $this->topBorderColor = $colorIndex; + } + + /** + * Sets the cell's left border color + * + * @access public + * @param int $colorIndex Color index + */ + public function setLeftColor($colorIndex) + { + $this->leftBorderColor = $colorIndex; + } + + /** + * Sets the cell's right border color + * + * @access public + * @param int $colorIndex Color index + */ + public function setRightColor($colorIndex) + { + $this->rightBorderColor = $colorIndex; + } + + /** + * Sets the cell's diagonal border color + * + * @access public + * @param int $colorIndex Color index + */ + public function setDiagColor($colorIndex) + { + $this->_diag_color = $colorIndex; + } + + + /** + * Sets the cell's foreground color + * + * @access public + * @param int $colorIndex Color index + */ + public function setFgColor($colorIndex) + { + $this->foregroundColor = $colorIndex; + } + + /** + * Sets the cell's background color + * + * @access public + * @param int $colorIndex Color index + */ + public function setBgColor($colorIndex) + { + $this->backgroundColor = $colorIndex; + } + + /** + * Sets the index to the number format record + * It can be date, time, currency, etc... + * + * @access public + * @param integer $numberFormatIndex Index to format record + */ + public function setNumberFormatIndex($numberFormatIndex) + { + $this->numberFormatIndex = $numberFormatIndex; + } + + /** + * Set the font index. + * + * @param int $value Font index, note that value 4 does not exist + */ + public function setFontIndex($value) + { + $this->fontIndex = $value; + } + + /** + * Map of BIFF2-BIFF8 codes for border styles + * @static array of int + * + */ + private static $mapBorderStyles = array( + PHPExcel_Style_Border::BORDER_NONE => 0x00, + PHPExcel_Style_Border::BORDER_THIN => 0x01, + PHPExcel_Style_Border::BORDER_MEDIUM => 0x02, + PHPExcel_Style_Border::BORDER_DASHED => 0x03, + PHPExcel_Style_Border::BORDER_DOTTED => 0x04, + PHPExcel_Style_Border::BORDER_THICK => 0x05, + PHPExcel_Style_Border::BORDER_DOUBLE => 0x06, + PHPExcel_Style_Border::BORDER_HAIR => 0x07, + PHPExcel_Style_Border::BORDER_MEDIUMDASHED => 0x08, + PHPExcel_Style_Border::BORDER_DASHDOT => 0x09, + PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT => 0x0A, + PHPExcel_Style_Border::BORDER_DASHDOTDOT => 0x0B, + PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT => 0x0C, + PHPExcel_Style_Border::BORDER_SLANTDASHDOT => 0x0D, + ); + + /** + * Map border style + * + * @param string $borderStyle + * @return int + */ + private static function mapBorderStyle($borderStyle) + { + if (isset(self::$mapBorderStyles[$borderStyle])) { + return self::$mapBorderStyles[$borderStyle]; + } + return 0x00; + } + + /** + * Map of BIFF2-BIFF8 codes for fill types + * @static array of int + * + */ + private static $mapFillTypes = array( + PHPExcel_Style_Fill::FILL_NONE => 0x00, + PHPExcel_Style_Fill::FILL_SOLID => 0x01, + PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY => 0x02, + PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY => 0x03, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY => 0x04, + PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL => 0x05, + PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL => 0x06, + PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN => 0x07, + PHPExcel_Style_Fill::FILL_PATTERN_DARKUP => 0x08, + PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID => 0x09, + PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS => 0x0A, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL => 0x0B, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL => 0x0C, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN => 0x0D, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP => 0x0E, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID => 0x0F, + PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS => 0x10, + PHPExcel_Style_Fill::FILL_PATTERN_GRAY125 => 0x11, + PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625 => 0x12, + PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR => 0x00, // does not exist in BIFF8 + PHPExcel_Style_Fill::FILL_GRADIENT_PATH => 0x00, // does not exist in BIFF8 + ); + + /** + * Map fill type + * + * @param string $fillType + * @return int + */ + private static function mapFillType($fillType) + { + if (isset(self::$mapFillTypes[$fillType])) { + return self::$mapFillTypes[$fillType]; + } + return 0x00; + } + + /** + * Map of BIFF2-BIFF8 codes for horizontal alignment + * @static array of int + * + */ + private static $mapHAlignments = array( + PHPExcel_Style_Alignment::HORIZONTAL_GENERAL => 0, + PHPExcel_Style_Alignment::HORIZONTAL_LEFT => 1, + PHPExcel_Style_Alignment::HORIZONTAL_CENTER => 2, + PHPExcel_Style_Alignment::HORIZONTAL_RIGHT => 3, + PHPExcel_Style_Alignment::HORIZONTAL_FILL => 4, + PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY => 5, + PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS => 6, + ); + + /** + * Map to BIFF2-BIFF8 codes for horizontal alignment + * + * @param string $hAlign + * @return int + */ + private function mapHAlign($hAlign) + { + if (isset(self::$mapHAlignments[$hAlign])) { + return self::$mapHAlignments[$hAlign]; + } + return 0; + } + + /** + * Map of BIFF2-BIFF8 codes for vertical alignment + * @static array of int + * + */ + private static $mapVAlignments = array( + PHPExcel_Style_Alignment::VERTICAL_TOP => 0, + PHPExcel_Style_Alignment::VERTICAL_CENTER => 1, + PHPExcel_Style_Alignment::VERTICAL_BOTTOM => 2, + PHPExcel_Style_Alignment::VERTICAL_JUSTIFY => 3, + ); + + /** + * Map to BIFF2-BIFF8 codes for vertical alignment + * + * @param string $vAlign + * @return int + */ + private static function mapVAlign($vAlign) + { + if (isset(self::$mapVAlignments[$vAlign])) { + return self::$mapVAlignments[$vAlign]; + } + return 2; + } + + /** + * Map to BIFF8 codes for text rotation angle + * + * @param int $textRotation + * @return int + */ + private static function mapTextRotation($textRotation) + { + if ($textRotation >= 0) { + return $textRotation; + } elseif ($textRotation == -165) { + return 255; + } elseif ($textRotation < 0) { + return 90 - $textRotation; + } + } + + /** + * Map locked + * + * @param string + * @return int + */ + private static function mapLocked($locked) + { + switch ($locked) { + case PHPExcel_Style_Protection::PROTECTION_INHERIT: + return 1; + case PHPExcel_Style_Protection::PROTECTION_PROTECTED: + return 1; + case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: + return 0; + default: + return 1; + } + } + + /** + * Map hidden + * + * @param string + * @return int + */ + private static function mapHidden($hidden) + { + switch ($hidden) { + case PHPExcel_Style_Protection::PROTECTION_INHERIT: + return 0; + case PHPExcel_Style_Protection::PROTECTION_PROTECTED: + return 1; + case PHPExcel_Style_Protection::PROTECTION_UNPROTECTED: + return 0; + default: + return 0; + } + } +} diff --git a/assets/excel/PHPExcel/Writer/Exception.php b/assets/excel/PHPExcel/Writer/Exception.php new file mode 100644 index 0000000..bfa0056 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/Exception.php @@ -0,0 +1,46 @@ +<?php + +/** + * PHPExcel_Writer_Exception + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_Exception extends PHPExcel_Exception +{ + /** + * Error handler callback + * + * @param mixed $code + * @param mixed $string + * @param mixed $file + * @param mixed $line + * @param mixed $context + */ + public static function errorHandlerCallback($code, $string, $file, $line, $context) + { + $e = new self($string, $code); + $e->line = $line; + $e->file = $file; + throw $e; + } +} diff --git a/assets/excel/PHPExcel/Writer/HTML.php b/assets/excel/PHPExcel/Writer/HTML.php new file mode 100644 index 0000000..5dcb998 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/HTML.php @@ -0,0 +1,1612 @@ +<?php + +/** + * PHPExcel_Writer_HTML + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_HTML + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_HTML extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * PHPExcel object + * + * @var PHPExcel + */ + protected $phpExcel; + + /** + * Sheet index to write + * + * @var int + */ + private $sheetIndex = 0; + + /** + * Images root + * + * @var string + */ + private $imagesRoot = '.'; + + /** + * embed images, or link to images + * + * @var boolean + */ + private $embedImages = false; + + /** + * Use inline CSS? + * + * @var boolean + */ + private $useInlineCss = false; + + /** + * Array of CSS styles + * + * @var array + */ + private $cssStyles; + + /** + * Array of column widths in points + * + * @var array + */ + private $columnWidths; + + /** + * Default font + * + * @var PHPExcel_Style_Font + */ + private $defaultFont; + + /** + * Flag whether spans have been calculated + * + * @var boolean + */ + private $spansAreCalculated = false; + + /** + * Excel cells that should not be written as HTML cells + * + * @var array + */ + private $isSpannedCell = array(); + + /** + * Excel cells that are upper-left corner in a cell merge + * + * @var array + */ + private $isBaseCell = array(); + + /** + * Excel rows that should not be written as HTML rows + * + * @var array + */ + private $isSpannedRow = array(); + + /** + * Is the current writer creating PDF? + * + * @var boolean + */ + protected $isPdf = false; + + /** + * Generate the Navigation block + * + * @var boolean + */ + private $generateSheetNavigationBlock = true; + + /** + * Create a new PHPExcel_Writer_HTML + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + $this->phpExcel = $phpExcel; + $this->defaultFont = $this->phpExcel->getDefaultStyle()->getFont(); + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + // garbage collect + $this->phpExcel->garbageCollect(); + + $saveDebugLog = PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->getWriteDebugLog(); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog(false); + $saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); + PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); + + // Build CSS + $this->buildCSS(!$this->useInlineCss); + + // Open file + $fileHandle = fopen($pFilename, 'wb+'); + if ($fileHandle === false) { + throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); + } + + // Write headers + fwrite($fileHandle, $this->generateHTMLHeader(!$this->useInlineCss)); + + // Write navigation (tabs) + if ((!$this->isPdf) && ($this->generateSheetNavigationBlock)) { + fwrite($fileHandle, $this->generateNavigation()); + } + + // Write data + fwrite($fileHandle, $this->generateSheetData()); + + // Write footer + fwrite($fileHandle, $this->generateHTMLFooter()); + + // Close file + fclose($fileHandle); + + PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); + PHPExcel_Calculation::getInstance($this->phpExcel)->getDebugLog()->setWriteDebugLog($saveDebugLog); + } + + /** + * Map VAlign + * + * @param string $vAlign Vertical alignment + * @return string + */ + private function mapVAlign($vAlign) + { + switch ($vAlign) { + case PHPExcel_Style_Alignment::VERTICAL_BOTTOM: + return 'bottom'; + case PHPExcel_Style_Alignment::VERTICAL_TOP: + return 'top'; + case PHPExcel_Style_Alignment::VERTICAL_CENTER: + case PHPExcel_Style_Alignment::VERTICAL_JUSTIFY: + return 'middle'; + default: + return 'baseline'; + } + } + + /** + * Map HAlign + * + * @param string $hAlign Horizontal alignment + * @return string|false + */ + private function mapHAlign($hAlign) + { + switch ($hAlign) { + case PHPExcel_Style_Alignment::HORIZONTAL_GENERAL: + return false; + case PHPExcel_Style_Alignment::HORIZONTAL_LEFT: + return 'left'; + case PHPExcel_Style_Alignment::HORIZONTAL_RIGHT: + return 'right'; + case PHPExcel_Style_Alignment::HORIZONTAL_CENTER: + case PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS: + return 'center'; + case PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY: + return 'justify'; + default: + return false; + } + } + + /** + * Map border style + * + * @param int $borderStyle Sheet index + * @return string + */ + private function mapBorderStyle($borderStyle) + { + switch ($borderStyle) { + case PHPExcel_Style_Border::BORDER_NONE: + return 'none'; + case PHPExcel_Style_Border::BORDER_DASHDOT: + return '1px dashed'; + case PHPExcel_Style_Border::BORDER_DASHDOTDOT: + return '1px dotted'; + case PHPExcel_Style_Border::BORDER_DASHED: + return '1px dashed'; + case PHPExcel_Style_Border::BORDER_DOTTED: + return '1px dotted'; + case PHPExcel_Style_Border::BORDER_DOUBLE: + return '3px double'; + case PHPExcel_Style_Border::BORDER_HAIR: + return '1px solid'; + case PHPExcel_Style_Border::BORDER_MEDIUM: + return '2px solid'; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT: + return '2px dashed'; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT: + return '2px dotted'; + case PHPExcel_Style_Border::BORDER_MEDIUMDASHED: + return '2px dashed'; + case PHPExcel_Style_Border::BORDER_SLANTDASHDOT: + return '2px dashed'; + case PHPExcel_Style_Border::BORDER_THICK: + return '3px solid'; + case PHPExcel_Style_Border::BORDER_THIN: + return '1px solid'; + default: + // map others to thin + return '1px solid'; + } + } + + /** + * Get sheet index + * + * @return int + */ + public function getSheetIndex() + { + return $this->sheetIndex; + } + + /** + * Set sheet index + * + * @param int $pValue Sheet index + * @return PHPExcel_Writer_HTML + */ + public function setSheetIndex($pValue = 0) + { + $this->sheetIndex = $pValue; + return $this; + } + + /** + * Get sheet index + * + * @return boolean + */ + public function getGenerateSheetNavigationBlock() + { + return $this->generateSheetNavigationBlock; + } + + /** + * Set sheet index + * + * @param boolean $pValue Flag indicating whether the sheet navigation block should be generated or not + * @return PHPExcel_Writer_HTML + */ + public function setGenerateSheetNavigationBlock($pValue = true) + { + $this->generateSheetNavigationBlock = (bool) $pValue; + return $this; + } + + /** + * Write all sheets (resets sheetIndex to NULL) + */ + public function writeAllSheets() + { + $this->sheetIndex = null; + return $this; + } + + /** + * Generate HTML header + * + * @param boolean $pIncludeStyles Include styles? + * @return string + * @throws PHPExcel_Writer_Exception + */ + public function generateHTMLHeader($pIncludeStyles = false) + { + // PHPExcel object known? + if (is_null($this->phpExcel)) { + throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); + } + + // Construct HTML + $properties = $this->phpExcel->getProperties(); + $html = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' . PHP_EOL; + $html .= '<!-- Generated by PHPExcel - http://www.phpexcel.net -->' . PHP_EOL; + $html .= '<html>' . PHP_EOL; + $html .= ' <head>' . PHP_EOL; + $html .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . PHP_EOL; + if ($properties->getTitle() > '') { + $html .= ' <title>' . htmlspecialchars($properties->getTitle()) . '</title>' . PHP_EOL; + } + if ($properties->getCreator() > '') { + $html .= ' <meta name="author" content="' . htmlspecialchars($properties->getCreator()) . '" />' . PHP_EOL; + } + if ($properties->getTitle() > '') { + $html .= ' <meta name="title" content="' . htmlspecialchars($properties->getTitle()) . '" />' . PHP_EOL; + } + if ($properties->getDescription() > '') { + $html .= ' <meta name="description" content="' . htmlspecialchars($properties->getDescription()) . '" />' . PHP_EOL; + } + if ($properties->getSubject() > '') { + $html .= ' <meta name="subject" content="' . htmlspecialchars($properties->getSubject()) . '" />' . PHP_EOL; + } + if ($properties->getKeywords() > '') { + $html .= ' <meta name="keywords" content="' . htmlspecialchars($properties->getKeywords()) . '" />' . PHP_EOL; + } + if ($properties->getCategory() > '') { + $html .= ' <meta name="category" content="' . htmlspecialchars($properties->getCategory()) . '" />' . PHP_EOL; + } + if ($properties->getCompany() > '') { + $html .= ' <meta name="company" content="' . htmlspecialchars($properties->getCompany()) . '" />' . PHP_EOL; + } + if ($properties->getManager() > '') { + $html .= ' <meta name="manager" content="' . htmlspecialchars($properties->getManager()) . '" />' . PHP_EOL; + } + + if ($pIncludeStyles) { + $html .= $this->generateStyles(true); + } + + $html .= ' </head>' . PHP_EOL; + $html .= '' . PHP_EOL; + $html .= ' <body>' . PHP_EOL; + + return $html; + } + + /** + * Generate sheet data + * + * @return string + * @throws PHPExcel_Writer_Exception + */ + public function generateSheetData() + { + // PHPExcel object known? + if (is_null($this->phpExcel)) { + throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); + } + + // Ensure that Spans have been calculated? + if (!$this->spansAreCalculated) { + $this->calculateSpans(); + } + + // Fetch sheets + $sheets = array(); + if (is_null($this->sheetIndex)) { + $sheets = $this->phpExcel->getAllSheets(); + } else { + $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); + } + + // Construct HTML + $html = ''; + + // Loop all sheets + $sheetId = 0; + foreach ($sheets as $sheet) { + // Write table header + $html .= $this->generateTableHeader($sheet); + + // Get worksheet dimension + $dimension = explode(':', $sheet->calculateWorksheetDimension()); + $dimension[0] = PHPExcel_Cell::coordinateFromString($dimension[0]); + $dimension[0][0] = PHPExcel_Cell::columnIndexFromString($dimension[0][0]) - 1; + $dimension[1] = PHPExcel_Cell::coordinateFromString($dimension[1]); + $dimension[1][0] = PHPExcel_Cell::columnIndexFromString($dimension[1][0]) - 1; + + // row min,max + $rowMin = $dimension[0][1]; + $rowMax = $dimension[1][1]; + + // calculate start of <tbody>, <thead> + $tbodyStart = $rowMin; + $theadStart = $theadEnd = 0; // default: no <thead> no </thead> + if ($sheet->getPageSetup()->isRowsToRepeatAtTopSet()) { + $rowsToRepeatAtTop = $sheet->getPageSetup()->getRowsToRepeatAtTop(); + + // we can only support repeating rows that start at top row + if ($rowsToRepeatAtTop[0] == 1) { + $theadStart = $rowsToRepeatAtTop[0]; + $theadEnd = $rowsToRepeatAtTop[1]; + $tbodyStart = $rowsToRepeatAtTop[1] + 1; + } + } + + // Loop through cells + $row = $rowMin-1; + while ($row++ < $rowMax) { + // <thead> ? + if ($row == $theadStart) { + $html .= ' <thead>' . PHP_EOL; + $cellType = 'th'; + } + + // <tbody> ? + if ($row == $tbodyStart) { + $html .= ' <tbody>' . PHP_EOL; + $cellType = 'td'; + } + + // Write row if there are HTML table cells in it + if (!isset($this->isSpannedRow[$sheet->getParent()->getIndex($sheet)][$row])) { + // Start a new rowData + $rowData = array(); + // Loop through columns + $column = $dimension[0][0] - 1; + while ($column++ < $dimension[1][0]) { + // Cell exists? + if ($sheet->cellExistsByColumnAndRow($column, $row)) { + $rowData[$column] = PHPExcel_Cell::stringFromColumnIndex($column) . $row; + } else { + $rowData[$column] = ''; + } + } + $html .= $this->generateRow($sheet, $rowData, $row - 1, $cellType); + } + + // </thead> ? + if ($row == $theadEnd) { + $html .= ' </thead>' . PHP_EOL; + } + } + $html .= $this->extendRowsForChartsAndImages($sheet, $row); + + // Close table body. + $html .= ' </tbody>' . PHP_EOL; + + // Write table footer + $html .= $this->generateTableFooter(); + + // Writing PDF? + if ($this->isPdf) { + if (is_null($this->sheetIndex) && $sheetId + 1 < $this->phpExcel->getSheetCount()) { + $html .= '<div style="page-break-before:always" />'; + } + } + + // Next sheet + ++$sheetId; + } + + return $html; + } + + /** + * Generate sheet tabs + * + * @return string + * @throws PHPExcel_Writer_Exception + */ + public function generateNavigation() + { + // PHPExcel object known? + if (is_null($this->phpExcel)) { + throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); + } + + // Fetch sheets + $sheets = array(); + if (is_null($this->sheetIndex)) { + $sheets = $this->phpExcel->getAllSheets(); + } else { + $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); + } + + // Construct HTML + $html = ''; + + // Only if there are more than 1 sheets + if (count($sheets) > 1) { + // Loop all sheets + $sheetId = 0; + + $html .= '<ul class="navigation">' . PHP_EOL; + + foreach ($sheets as $sheet) { + $html .= ' <li class="sheet' . $sheetId . '"><a href="#sheet' . $sheetId . '">' . $sheet->getTitle() . '</a></li>' . PHP_EOL; + ++$sheetId; + } + + $html .= '</ul>' . PHP_EOL; + } + + return $html; + } + + private function extendRowsForChartsAndImages(PHPExcel_Worksheet $pSheet, $row) + { + $rowMax = $row; + $colMax = 'A'; + if ($this->includeCharts) { + foreach ($pSheet->getChartCollection() as $chart) { + if ($chart instanceof PHPExcel_Chart) { + $chartCoordinates = $chart->getTopLeftPosition(); + $chartTL = PHPExcel_Cell::coordinateFromString($chartCoordinates['cell']); + $chartCol = PHPExcel_Cell::columnIndexFromString($chartTL[0]); + if ($chartTL[1] > $rowMax) { + $rowMax = $chartTL[1]; + if ($chartCol > PHPExcel_Cell::columnIndexFromString($colMax)) { + $colMax = $chartTL[0]; + } + } + } + } + } + + foreach ($pSheet->getDrawingCollection() as $drawing) { + if ($drawing instanceof PHPExcel_Worksheet_Drawing) { + $imageTL = PHPExcel_Cell::coordinateFromString($drawing->getCoordinates()); + $imageCol = PHPExcel_Cell::columnIndexFromString($imageTL[0]); + if ($imageTL[1] > $rowMax) { + $rowMax = $imageTL[1]; + if ($imageCol > PHPExcel_Cell::columnIndexFromString($colMax)) { + $colMax = $imageTL[0]; + } + } + } + } + + $html = ''; + $colMax++; + while ($row <= $rowMax) { + $html .= '<tr>'; + for ($col = 'A'; $col != $colMax; ++$col) { + $html .= '<td>'; + $html .= $this->writeImageInCell($pSheet, $col.$row); + if ($this->includeCharts) { + $html .= $this->writeChartInCell($pSheet, $col.$row); + } + $html .= '</td>'; + } + ++$row; + $html .= '</tr>'; + } + return $html; + } + + + /** + * Generate image tag in cell + * + * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet + * @param string $coordinates Cell coordinates + * @return string + * @throws PHPExcel_Writer_Exception + */ + private function writeImageInCell(PHPExcel_Worksheet $pSheet, $coordinates) + { + // Construct HTML + $html = ''; + + // Write images + foreach ($pSheet->getDrawingCollection() as $drawing) { + if ($drawing instanceof PHPExcel_Worksheet_Drawing) { + if ($drawing->getCoordinates() == $coordinates) { + $filename = $drawing->getPath(); + + // Strip off eventual '.' + if (substr($filename, 0, 1) == '.') { + $filename = substr($filename, 1); + } + + // Prepend images root + $filename = $this->getImagesRoot() . $filename; + + // Strip off eventual '.' + if (substr($filename, 0, 1) == '.' && substr($filename, 0, 2) != './') { + $filename = substr($filename, 1); + } + + // Convert UTF8 data to PCDATA + $filename = htmlspecialchars($filename); + + $html .= PHP_EOL; + if ((!$this->embedImages) || ($this->isPdf)) { + $imageData = $filename; + } else { + $imageDetails = getimagesize($filename); + if ($fp = fopen($filename, "rb", 0)) { + $picture = fread($fp, filesize($filename)); + fclose($fp); + // base64 encode the binary data, then break it + // into chunks according to RFC 2045 semantics + $base64 = chunk_split(base64_encode($picture)); + $imageData = 'data:'.$imageDetails['mime'].';base64,' . $base64; + } else { + $imageData = $filename; + } + } + + $html .= '<div style="position: relative;">'; + $html .= '<img style="position: absolute; z-index: 1; left: ' . + $drawing->getOffsetX() . 'px; top: ' . $drawing->getOffsetY() . 'px; width: ' . + $drawing->getWidth() . 'px; height: ' . $drawing->getHeight() . 'px;" src="' . + $imageData . '" border="0" />'; + $html .= '</div>'; + } + } elseif ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { + if ($drawing->getCoordinates() != $coordinates) { + continue; + } + ob_start(); // Let's start output buffering. + imagepng($drawing->getImageResource()); // This will normally output the image, but because of ob_start(), it won't. + $contents = ob_get_contents(); // Instead, output above is saved to $contents + ob_end_clean(); // End the output buffer. + + $dataUri = "data:image/jpeg;base64," . base64_encode($contents); + + // Because of the nature of tables, width is more important than height. + // max-width: 100% ensures that image doesnt overflow containing cell + // width: X sets width of supplied image. + // As a result, images bigger than cell will be contained and images smaller will not get stretched + $html .= '<img src="'.$dataUri.'" style="max-width:100%;width:'.$drawing->getWidth().'px;" />'; + } + } + + return $html; + } + + /** + * Generate chart tag in cell + * + * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet + * @param string $coordinates Cell coordinates + * @return string + * @throws PHPExcel_Writer_Exception + */ + private function writeChartInCell(PHPExcel_Worksheet $pSheet, $coordinates) + { + // Construct HTML + $html = ''; + + // Write charts + foreach ($pSheet->getChartCollection() as $chart) { + if ($chart instanceof PHPExcel_Chart) { + $chartCoordinates = $chart->getTopLeftPosition(); + if ($chartCoordinates['cell'] == $coordinates) { + $chartFileName = PHPExcel_Shared_File::sys_get_temp_dir().'/'.uniqid().'.png'; + if (!$chart->render($chartFileName)) { + return; + } + + $html .= PHP_EOL; + $imageDetails = getimagesize($chartFileName); + if ($fp = fopen($chartFileName, "rb", 0)) { + $picture = fread($fp, filesize($chartFileName)); + fclose($fp); + // base64 encode the binary data, then break it + // into chunks according to RFC 2045 semantics + $base64 = chunk_split(base64_encode($picture)); + $imageData = 'data:'.$imageDetails['mime'].';base64,' . $base64; + + $html .= '<div style="position: relative;">'; + $html .= '<img style="position: absolute; z-index: 1; left: ' . $chartCoordinates['xOffset'] . 'px; top: ' . $chartCoordinates['yOffset'] . 'px; width: ' . $imageDetails[0] . 'px; height: ' . $imageDetails[1] . 'px;" src="' . $imageData . '" border="0" />' . PHP_EOL; + $html .= '</div>'; + + unlink($chartFileName); + } + } + } + } + + // Return + return $html; + } + + /** + * Generate CSS styles + * + * @param boolean $generateSurroundingHTML Generate surrounding HTML tags? (&lt;style&gt; and &lt;/style&gt;) + * @return string + * @throws PHPExcel_Writer_Exception + */ + public function generateStyles($generateSurroundingHTML = true) + { + // PHPExcel object known? + if (is_null($this->phpExcel)) { + throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); + } + + // Build CSS + $css = $this->buildCSS($generateSurroundingHTML); + + // Construct HTML + $html = ''; + + // Start styles + if ($generateSurroundingHTML) { + $html .= ' <style type="text/css">' . PHP_EOL; + $html .= ' html { ' . $this->assembleCSS($css['html']) . ' }' . PHP_EOL; + } + + // Write all other styles + foreach ($css as $styleName => $styleDefinition) { + if ($styleName != 'html') { + $html .= ' ' . $styleName . ' { ' . $this->assembleCSS($styleDefinition) . ' }' . PHP_EOL; + } + } + + // End styles + if ($generateSurroundingHTML) { + $html .= ' </style>' . PHP_EOL; + } + + // Return + return $html; + } + + /** + * Build CSS styles + * + * @param boolean $generateSurroundingHTML Generate surrounding HTML style? (html { }) + * @return array + * @throws PHPExcel_Writer_Exception + */ + public function buildCSS($generateSurroundingHTML = true) + { + // PHPExcel object known? + if (is_null($this->phpExcel)) { + throw new PHPExcel_Writer_Exception('Internal PHPExcel object not set to an instance of an object.'); + } + + // Cached? + if (!is_null($this->cssStyles)) { + return $this->cssStyles; + } + + // Ensure that spans have been calculated + if (!$this->spansAreCalculated) { + $this->calculateSpans(); + } + + // Construct CSS + $css = array(); + + // Start styles + if ($generateSurroundingHTML) { + // html { } + $css['html']['font-family'] = 'Calibri, Arial, Helvetica, sans-serif'; + $css['html']['font-size'] = '11pt'; + $css['html']['background-color'] = 'white'; + } + + + // table { } + $css['table']['border-collapse'] = 'collapse'; + if (!$this->isPdf) { + $css['table']['page-break-after'] = 'always'; + } + + // .gridlines td { } + $css['.gridlines td']['border'] = '1px dotted black'; + $css['.gridlines th']['border'] = '1px dotted black'; + + // .b {} + $css['.b']['text-align'] = 'center'; // BOOL + + // .e {} + $css['.e']['text-align'] = 'center'; // ERROR + + // .f {} + $css['.f']['text-align'] = 'right'; // FORMULA + + // .inlineStr {} + $css['.inlineStr']['text-align'] = 'left'; // INLINE + + // .n {} + $css['.n']['text-align'] = 'right'; // NUMERIC + + // .s {} + $css['.s']['text-align'] = 'left'; // STRING + + // Calculate cell style hashes + foreach ($this->phpExcel->getCellXfCollection() as $index => $style) { + $css['td.style' . $index] = $this->createCSSStyle($style); + $css['th.style' . $index] = $this->createCSSStyle($style); + } + + // Fetch sheets + $sheets = array(); + if (is_null($this->sheetIndex)) { + $sheets = $this->phpExcel->getAllSheets(); + } else { + $sheets[] = $this->phpExcel->getSheet($this->sheetIndex); + } + + // Build styles per sheet + foreach ($sheets as $sheet) { + // Calculate hash code + $sheetIndex = $sheet->getParent()->getIndex($sheet); + + // Build styles + // Calculate column widths + $sheet->calculateColumnWidths(); + + // col elements, initialize + $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()) - 1; + $column = -1; + while ($column++ < $highestColumnIndex) { + $this->columnWidths[$sheetIndex][$column] = 42; // approximation + $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = '42pt'; + } + + // col elements, loop through columnDimensions and set width + foreach ($sheet->getColumnDimensions() as $columnDimension) { + if (($width = PHPExcel_Shared_Drawing::cellDimensionToPixels($columnDimension->getWidth(), $this->defaultFont)) >= 0) { + $width = PHPExcel_Shared_Drawing::pixelsToPoints($width); + $column = PHPExcel_Cell::columnIndexFromString($columnDimension->getColumnIndex()) - 1; + $this->columnWidths[$sheetIndex][$column] = $width; + $css['table.sheet' . $sheetIndex . ' col.col' . $column]['width'] = $width . 'pt'; + + if ($columnDimension->getVisible() === false) { + $css['table.sheet' . $sheetIndex . ' col.col' . $column]['visibility'] = 'collapse'; + $css['table.sheet' . $sheetIndex . ' col.col' . $column]['*display'] = 'none'; // target IE6+7 + } + } + } + + // Default row height + $rowDimension = $sheet->getDefaultRowDimension(); + + // table.sheetN tr { } + $css['table.sheet' . $sheetIndex . ' tr'] = array(); + + if ($rowDimension->getRowHeight() == -1) { + $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->phpExcel->getDefaultStyle()->getFont()); + } else { + $pt_height = $rowDimension->getRowHeight(); + } + $css['table.sheet' . $sheetIndex . ' tr']['height'] = $pt_height . 'pt'; + if ($rowDimension->getVisible() === false) { + $css['table.sheet' . $sheetIndex . ' tr']['display'] = 'none'; + $css['table.sheet' . $sheetIndex . ' tr']['visibility'] = 'hidden'; + } + + // Calculate row heights + foreach ($sheet->getRowDimensions() as $rowDimension) { + $row = $rowDimension->getRowIndex() - 1; + + // table.sheetN tr.rowYYYYYY { } + $css['table.sheet' . $sheetIndex . ' tr.row' . $row] = array(); + + if ($rowDimension->getRowHeight() == -1) { + $pt_height = PHPExcel_Shared_Font::getDefaultRowHeightByFont($this->phpExcel->getDefaultStyle()->getFont()); + } else { + $pt_height = $rowDimension->getRowHeight(); + } + $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['height'] = $pt_height . 'pt'; + if ($rowDimension->getVisible() === false) { + $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['display'] = 'none'; + $css['table.sheet' . $sheetIndex . ' tr.row' . $row]['visibility'] = 'hidden'; + } + } + } + + // Cache + if (is_null($this->cssStyles)) { + $this->cssStyles = $css; + } + + // Return + return $css; + } + + /** + * Create CSS style + * + * @param PHPExcel_Style $pStyle PHPExcel_Style + * @return array + */ + private function createCSSStyle(PHPExcel_Style $pStyle) + { + // Construct CSS + $css = ''; + + // Create CSS + $css = array_merge( + $this->createCSSStyleAlignment($pStyle->getAlignment()), + $this->createCSSStyleBorders($pStyle->getBorders()), + $this->createCSSStyleFont($pStyle->getFont()), + $this->createCSSStyleFill($pStyle->getFill()) + ); + + // Return + return $css; + } + + /** + * Create CSS style (PHPExcel_Style_Alignment) + * + * @param PHPExcel_Style_Alignment $pStyle PHPExcel_Style_Alignment + * @return array + */ + private function createCSSStyleAlignment(PHPExcel_Style_Alignment $pStyle) + { + // Construct CSS + $css = array(); + + // Create CSS + $css['vertical-align'] = $this->mapVAlign($pStyle->getVertical()); + if ($textAlign = $this->mapHAlign($pStyle->getHorizontal())) { + $css['text-align'] = $textAlign; + if (in_array($textAlign, array('left', 'right'))) { + $css['padding-'.$textAlign] = (string)((int)$pStyle->getIndent() * 9).'px'; + } + } + + return $css; + } + + /** + * Create CSS style (PHPExcel_Style_Font) + * + * @param PHPExcel_Style_Font $pStyle PHPExcel_Style_Font + * @return array + */ + private function createCSSStyleFont(PHPExcel_Style_Font $pStyle) + { + // Construct CSS + $css = array(); + + // Create CSS + if ($pStyle->getBold()) { + $css['font-weight'] = 'bold'; + } + if ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE && $pStyle->getStrikethrough()) { + $css['text-decoration'] = 'underline line-through'; + } elseif ($pStyle->getUnderline() != PHPExcel_Style_Font::UNDERLINE_NONE) { + $css['text-decoration'] = 'underline'; + } elseif ($pStyle->getStrikethrough()) { + $css['text-decoration'] = 'line-through'; + } + if ($pStyle->getItalic()) { + $css['font-style'] = 'italic'; + } + + $css['color'] = '#' . $pStyle->getColor()->getRGB(); + $css['font-family'] = '\'' . $pStyle->getName() . '\''; + $css['font-size'] = $pStyle->getSize() . 'pt'; + + return $css; + } + + /** + * Create CSS style (PHPExcel_Style_Borders) + * + * @param PHPExcel_Style_Borders $pStyle PHPExcel_Style_Borders + * @return array + */ + private function createCSSStyleBorders(PHPExcel_Style_Borders $pStyle) + { + // Construct CSS + $css = array(); + + // Create CSS + $css['border-bottom'] = $this->createCSSStyleBorder($pStyle->getBottom()); + $css['border-top'] = $this->createCSSStyleBorder($pStyle->getTop()); + $css['border-left'] = $this->createCSSStyleBorder($pStyle->getLeft()); + $css['border-right'] = $this->createCSSStyleBorder($pStyle->getRight()); + + return $css; + } + + /** + * Create CSS style (PHPExcel_Style_Border) + * + * @param PHPExcel_Style_Border $pStyle PHPExcel_Style_Border + * @return string + */ + private function createCSSStyleBorder(PHPExcel_Style_Border $pStyle) + { + // Create CSS +// $css = $this->mapBorderStyle($pStyle->getBorderStyle()) . ' #' . $pStyle->getColor()->getRGB(); + // Create CSS - add !important to non-none border styles for merged cells + $borderStyle = $this->mapBorderStyle($pStyle->getBorderStyle()); + $css = $borderStyle . ' #' . $pStyle->getColor()->getRGB() . (($borderStyle == 'none') ? '' : ' !important'); + + return $css; + } + + /** + * Create CSS style (PHPExcel_Style_Fill) + * + * @param PHPExcel_Style_Fill $pStyle PHPExcel_Style_Fill + * @return array + */ + private function createCSSStyleFill(PHPExcel_Style_Fill $pStyle) + { + // Construct HTML + $css = array(); + + // Create CSS + $value = $pStyle->getFillType() == PHPExcel_Style_Fill::FILL_NONE ? + 'white' : '#' . $pStyle->getStartColor()->getRGB(); + $css['background-color'] = $value; + + return $css; + } + + /** + * Generate HTML footer + */ + public function generateHTMLFooter() + { + // Construct HTML + $html = ''; + $html .= ' </body>' . PHP_EOL; + $html .= '</html>' . PHP_EOL; + + return $html; + } + + /** + * Generate table header + * + * @param PHPExcel_Worksheet $pSheet The worksheet for the table we are writing + * @return string + * @throws PHPExcel_Writer_Exception + */ + private function generateTableHeader($pSheet) + { + $sheetIndex = $pSheet->getParent()->getIndex($pSheet); + + // Construct HTML + $html = ''; + $html .= $this->setMargins($pSheet); + + if (!$this->useInlineCss) { + $gridlines = $pSheet->getShowGridlines() ? ' gridlines' : ''; + $html .= ' <table border="0" cellpadding="0" cellspacing="0" id="sheet' . $sheetIndex . '" class="sheet' . $sheetIndex . $gridlines . '">' . PHP_EOL; + } else { + $style = isset($this->cssStyles['table']) ? + $this->assembleCSS($this->cssStyles['table']) : ''; + + if ($this->isPdf && $pSheet->getShowGridlines()) { + $html .= ' <table border="1" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="1" style="' . $style . '">' . PHP_EOL; + } else { + $html .= ' <table border="0" cellpadding="1" id="sheet' . $sheetIndex . '" cellspacing="0" style="' . $style . '">' . PHP_EOL; + } + } + + // Write <col> elements + $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($pSheet->getHighestColumn()) - 1; + $i = -1; + while ($i++ < $highestColumnIndex) { + if (!$this->isPdf) { + if (!$this->useInlineCss) { + $html .= ' <col class="col' . $i . '">' . PHP_EOL; + } else { + $style = isset($this->cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) ? + $this->assembleCSS($this->cssStyles['table.sheet' . $sheetIndex . ' col.col' . $i]) : ''; + $html .= ' <col style="' . $style . '">' . PHP_EOL; + } + } + } + + return $html; + } + + /** + * Generate table footer + * + * @throws PHPExcel_Writer_Exception + */ + private function generateTableFooter() + { + $html = ' </table>' . PHP_EOL; + + return $html; + } + + /** + * Generate row + * + * @param PHPExcel_Worksheet $pSheet PHPExcel_Worksheet + * @param array $pValues Array containing cells in a row + * @param int $pRow Row number (0-based) + * @return string + * @throws PHPExcel_Writer_Exception + */ + private function generateRow(PHPExcel_Worksheet $pSheet, $pValues = null, $pRow = 0, $cellType = 'td') + { + if (is_array($pValues)) { + // Construct HTML + $html = ''; + + // Sheet index + $sheetIndex = $pSheet->getParent()->getIndex($pSheet); + + // DomPDF and breaks + if ($this->isPdf && count($pSheet->getBreaks()) > 0) { + $breaks = $pSheet->getBreaks(); + + // check if a break is needed before this row + if (isset($breaks['A' . $pRow])) { + // close table: </table> + $html .= $this->generateTableFooter(); + + // insert page break + $html .= '<div style="page-break-before:always" />'; + + // open table again: <table> + <col> etc. + $html .= $this->generateTableHeader($pSheet); + } + } + + // Write row start + if (!$this->useInlineCss) { + $html .= ' <tr class="row' . $pRow . '">' . PHP_EOL; + } else { + $style = isset($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]) + ? $this->assembleCSS($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]) : ''; + + $html .= ' <tr style="' . $style . '">' . PHP_EOL; + } + + // Write cells + $colNum = 0; + foreach ($pValues as $cellAddress) { + $cell = ($cellAddress > '') ? $pSheet->getCell($cellAddress) : ''; + $coordinate = PHPExcel_Cell::stringFromColumnIndex($colNum) . ($pRow + 1); + if (!$this->useInlineCss) { + $cssClass = ''; + $cssClass = 'column' . $colNum; + } else { + $cssClass = array(); + if ($cellType == 'th') { + if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' th.column' . $colNum])) { + $this->cssStyles['table.sheet' . $sheetIndex . ' th.column' . $colNum]; + } + } else { + if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum])) { + $this->cssStyles['table.sheet' . $sheetIndex . ' td.column' . $colNum]; + } + } + } + $colSpan = 1; + $rowSpan = 1; + + // initialize + $cellData = '&nbsp;'; + + // PHPExcel_Cell + if ($cell instanceof PHPExcel_Cell) { + $cellData = ''; + if (is_null($cell->getParent())) { + $cell->attach($pSheet); + } + // Value + if ($cell->getValue() instanceof PHPExcel_RichText) { + // Loop through rich text elements + $elements = $cell->getValue()->getRichTextElements(); + foreach ($elements as $element) { + // Rich text start? + if ($element instanceof PHPExcel_RichText_Run) { + $cellData .= '<span style="' . $this->assembleCSS($this->createCSSStyleFont($element->getFont())) . '">'; + + if ($element->getFont()->getSuperScript()) { + $cellData .= '<sup>'; + } elseif ($element->getFont()->getSubScript()) { + $cellData .= '<sub>'; + } + } + + // Convert UTF8 data to PCDATA + $cellText = $element->getText(); + $cellData .= htmlspecialchars($cellText); + + if ($element instanceof PHPExcel_RichText_Run) { + if ($element->getFont()->getSuperScript()) { + $cellData .= '</sup>'; + } elseif ($element->getFont()->getSubScript()) { + $cellData .= '</sub>'; + } + + $cellData .= '</span>'; + } + } + } else { + if ($this->preCalculateFormulas) { + $cellData = PHPExcel_Style_NumberFormat::toFormattedString( + $cell->getCalculatedValue(), + $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode(), + array($this, 'formatColor') + ); + } else { + $cellData = PHPExcel_Style_NumberFormat::toFormattedString( + $cell->getValue(), + $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->getFormatCode(), + array($this, 'formatColor') + ); + } + $cellData = htmlspecialchars($cellData); + if ($pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont()->getSuperScript()) { + $cellData = '<sup>'.$cellData.'</sup>'; + } elseif ($pSheet->getParent()->getCellXfByIndex($cell->getXfIndex())->getFont()->getSubScript()) { + $cellData = '<sub>'.$cellData.'</sub>'; + } + } + + // Converts the cell content so that spaces occuring at beginning of each new line are replaced by &nbsp; + // Example: " Hello\n to the world" is converted to "&nbsp;&nbsp;Hello\n&nbsp;to the world" + $cellData = preg_replace("/(?m)(?:^|\\G) /", '&nbsp;', $cellData); + + // convert newline "\n" to '<br>' + $cellData = nl2br($cellData); + + // Extend CSS class? + if (!$this->useInlineCss) { + $cssClass .= ' style' . $cell->getXfIndex(); + $cssClass .= ' ' . $cell->getDataType(); + } else { + if ($cellType == 'th') { + if (isset($this->cssStyles['th.style' . $cell->getXfIndex()])) { + $cssClass = array_merge($cssClass, $this->cssStyles['th.style' . $cell->getXfIndex()]); + } + } else { + if (isset($this->cssStyles['td.style' . $cell->getXfIndex()])) { + $cssClass = array_merge($cssClass, $this->cssStyles['td.style' . $cell->getXfIndex()]); + } + } + + // General horizontal alignment: Actual horizontal alignment depends on dataType + $sharedStyle = $pSheet->getParent()->getCellXfByIndex($cell->getXfIndex()); + if ($sharedStyle->getAlignment()->getHorizontal() == PHPExcel_Style_Alignment::HORIZONTAL_GENERAL + && isset($this->cssStyles['.' . $cell->getDataType()]['text-align'])) { + $cssClass['text-align'] = $this->cssStyles['.' . $cell->getDataType()]['text-align']; + } + } + } + + // Hyperlink? + if ($pSheet->hyperlinkExists($coordinate) && !$pSheet->getHyperlink($coordinate)->isInternal()) { + $cellData = '<a href="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getUrl()) . '" title="' . htmlspecialchars($pSheet->getHyperlink($coordinate)->getTooltip()) . '">' . $cellData . '</a>'; + } + + // Should the cell be written or is it swallowed by a rowspan or colspan? + $writeCell = !(isset($this->isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]) + && $this->isSpannedCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]); + + // Colspan and Rowspan + $colspan = 1; + $rowspan = 1; + if (isset($this->isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum])) { + $spans = $this->isBaseCell[$pSheet->getParent()->getIndex($pSheet)][$pRow + 1][$colNum]; + $rowSpan = $spans['rowspan']; + $colSpan = $spans['colspan']; + + // Also apply style from last cell in merge to fix borders - + // relies on !important for non-none border declarations in createCSSStyleBorder + $endCellCoord = PHPExcel_Cell::stringFromColumnIndex($colNum + $colSpan - 1) . ($pRow + $rowSpan); + if (!$this->useInlineCss) { + $cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex(); + } + } + + // Write + if ($writeCell) { + // Column start + $html .= ' <' . $cellType; + if (!$this->useInlineCss) { + $html .= ' class="' . $cssClass . '"'; + } else { + //** Necessary redundant code for the sake of PHPExcel_Writer_PDF ** + // We must explicitly write the width of the <td> element because TCPDF + // does not recognize e.g. <col style="width:42pt"> + $width = 0; + $i = $colNum - 1; + $e = $colNum + $colSpan - 1; + while ($i++ < $e) { + if (isset($this->columnWidths[$sheetIndex][$i])) { + $width += $this->columnWidths[$sheetIndex][$i]; + } + } + $cssClass['width'] = $width . 'pt'; + + // We must also explicitly write the height of the <td> element because TCPDF + // does not recognize e.g. <tr style="height:50pt"> + if (isset($this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height'])) { + $height = $this->cssStyles['table.sheet' . $sheetIndex . ' tr.row' . $pRow]['height']; + $cssClass['height'] = $height; + } + //** end of redundant code ** + + $html .= ' style="' . $this->assembleCSS($cssClass) . '"'; + } + if ($colSpan > 1) { + $html .= ' colspan="' . $colSpan . '"'; + } + if ($rowSpan > 1) { + $html .= ' rowspan="' . $rowSpan . '"'; + } + $html .= '>'; + + // Image? + $html .= $this->writeImageInCell($pSheet, $coordinate); + + // Chart? + if ($this->includeCharts) { + $html .= $this->writeChartInCell($pSheet, $coordinate); + } + + // Cell data + $html .= $cellData; + + // Column end + $html .= '</'.$cellType.'>' . PHP_EOL; + } + + // Next column + ++$colNum; + } + + // Write row end + $html .= ' </tr>' . PHP_EOL; + + // Return + return $html; + } else { + throw new PHPExcel_Writer_Exception("Invalid parameters passed."); + } + } + + /** + * Takes array where of CSS properties / values and converts to CSS string + * + * @param array + * @return string + */ + private function assembleCSS($pValue = array()) + { + $pairs = array(); + foreach ($pValue as $property => $value) { + $pairs[] = $property . ':' . $value; + } + $string = implode('; ', $pairs); + + return $string; + } + + /** + * Get images root + * + * @return string + */ + public function getImagesRoot() + { + return $this->imagesRoot; + } + + /** + * Set images root + * + * @param string $pValue + * @return PHPExcel_Writer_HTML + */ + public function setImagesRoot($pValue = '.') + { + $this->imagesRoot = $pValue; + return $this; + } + + /** + * Get embed images + * + * @return boolean + */ + public function getEmbedImages() + { + return $this->embedImages; + } + + /** + * Set embed images + * + * @param boolean $pValue + * @return PHPExcel_Writer_HTML + */ + public function setEmbedImages($pValue = '.') + { + $this->embedImages = $pValue; + return $this; + } + + /** + * Get use inline CSS? + * + * @return boolean + */ + public function getUseInlineCss() + { + return $this->useInlineCss; + } + + /** + * Set use inline CSS? + * + * @param boolean $pValue + * @return PHPExcel_Writer_HTML + */ + public function setUseInlineCss($pValue = false) + { + $this->useInlineCss = $pValue; + return $this; + } + + /** + * Add color to formatted string as inline style + * + * @param string $pValue Plain formatted value without color + * @param string $pFormat Format code + * @return string + */ + public function formatColor($pValue, $pFormat) + { + // Color information, e.g. [Red] is always at the beginning + $color = null; // initialize + $matches = array(); + + $color_regex = '/^\\[[a-zA-Z]+\\]/'; + if (preg_match($color_regex, $pFormat, $matches)) { + $color = str_replace('[', '', $matches[0]); + $color = str_replace(']', '', $color); + $color = strtolower($color); + } + + // convert to PCDATA + $value = htmlspecialchars($pValue); + + // color span tag + if ($color !== null) { + $value = '<span style="color:' . $color . '">' . $value . '</span>'; + } + + return $value; + } + + /** + * Calculate information about HTML colspan and rowspan which is not always the same as Excel's + */ + private function calculateSpans() + { + // Identify all cells that should be omitted in HTML due to cell merge. + // In HTML only the upper-left cell should be written and it should have + // appropriate rowspan / colspan attribute + $sheetIndexes = $this->sheetIndex !== null ? + array($this->sheetIndex) : range(0, $this->phpExcel->getSheetCount() - 1); + + foreach ($sheetIndexes as $sheetIndex) { + $sheet = $this->phpExcel->getSheet($sheetIndex); + + $candidateSpannedRow = array(); + + // loop through all Excel merged cells + foreach ($sheet->getMergeCells() as $cells) { + list($cells,) = PHPExcel_Cell::splitRange($cells); + $first = $cells[0]; + $last = $cells[1]; + + list($fc, $fr) = PHPExcel_Cell::coordinateFromString($first); + $fc = PHPExcel_Cell::columnIndexFromString($fc) - 1; + + list($lc, $lr) = PHPExcel_Cell::coordinateFromString($last); + $lc = PHPExcel_Cell::columnIndexFromString($lc) - 1; + + // loop through the individual cells in the individual merge + $r = $fr - 1; + while ($r++ < $lr) { + // also, flag this row as a HTML row that is candidate to be omitted + $candidateSpannedRow[$r] = $r; + + $c = $fc - 1; + while ($c++ < $lc) { + if (!($c == $fc && $r == $fr)) { + // not the upper-left cell (should not be written in HTML) + $this->isSpannedCell[$sheetIndex][$r][$c] = array( + 'baseCell' => array($fr, $fc), + ); + } else { + // upper-left is the base cell that should hold the colspan/rowspan attribute + $this->isBaseCell[$sheetIndex][$r][$c] = array( + 'xlrowspan' => $lr - $fr + 1, // Excel rowspan + 'rowspan' => $lr - $fr + 1, // HTML rowspan, value may change + 'xlcolspan' => $lc - $fc + 1, // Excel colspan + 'colspan' => $lc - $fc + 1, // HTML colspan, value may change + ); + } + } + } + } + + // Identify which rows should be omitted in HTML. These are the rows where all the cells + // participate in a merge and the where base cells are somewhere above. + $countColumns = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); + foreach ($candidateSpannedRow as $rowIndex) { + if (isset($this->isSpannedCell[$sheetIndex][$rowIndex])) { + if (count($this->isSpannedCell[$sheetIndex][$rowIndex]) == $countColumns) { + $this->isSpannedRow[$sheetIndex][$rowIndex] = $rowIndex; + }; + } + } + + // For each of the omitted rows we found above, the affected rowspans should be subtracted by 1 + if (isset($this->isSpannedRow[$sheetIndex])) { + foreach ($this->isSpannedRow[$sheetIndex] as $rowIndex) { + $adjustedBaseCells = array(); + $c = -1; + $e = $countColumns - 1; + while ($c++ < $e) { + $baseCell = $this->isSpannedCell[$sheetIndex][$rowIndex][$c]['baseCell']; + + if (!in_array($baseCell, $adjustedBaseCells)) { + // subtract rowspan by 1 + --$this->isBaseCell[$sheetIndex][ $baseCell[0] ][ $baseCell[1] ]['rowspan']; + $adjustedBaseCells[] = $baseCell; + } + } + } + } + + // TODO: Same for columns + } + + // We have calculated the spans + $this->spansAreCalculated = true; + } + + private function setMargins(PHPExcel_Worksheet $pSheet) + { + $htmlPage = '@page { '; + $htmlBody = 'body { '; + + $left = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getLeft()) . 'in; '; + $htmlPage .= 'margin-left: ' . $left; + $htmlBody .= 'margin-left: ' . $left; + $right = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getRight()) . 'in; '; + $htmlPage .= 'margin-right: ' . $right; + $htmlBody .= 'margin-right: ' . $right; + $top = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getTop()) . 'in; '; + $htmlPage .= 'margin-top: ' . $top; + $htmlBody .= 'margin-top: ' . $top; + $bottom = PHPExcel_Shared_String::FormatNumber($pSheet->getPageMargins()->getBottom()) . 'in; '; + $htmlPage .= 'margin-bottom: ' . $bottom; + $htmlBody .= 'margin-bottom: ' . $bottom; + + $htmlPage .= "}\n"; + $htmlBody .= "}\n"; + + return "<style>\n" . $htmlPage . $htmlBody . "</style>\n"; + } +} diff --git a/assets/excel/PHPExcel/Writer/IWriter.php b/assets/excel/PHPExcel/Writer/IWriter.php new file mode 100644 index 0000000..c7cfe74 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/IWriter.php @@ -0,0 +1,37 @@ +<?php + +/** + * PHPExcel_Writer_IWriter + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +interface PHPExcel_Writer_IWriter +{ + /** + * Save PHPExcel to file + * + * @param string $pFilename Name of the file to save + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null); +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument.php b/assets/excel/PHPExcel/Writer/OpenDocument.php new file mode 100644 index 0000000..912ba9d --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument.php @@ -0,0 +1,190 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument extends PHPExcel_Writer_Abstract implements PHPExcel_Writer_IWriter +{ + /** + * Private writer parts + * + * @var PHPExcel_Writer_OpenDocument_WriterPart[] + */ + private $writerParts = array(); + + /** + * Private PHPExcel + * + * @var PHPExcel + */ + private $spreadSheet; + + /** + * Create a new PHPExcel_Writer_OpenDocument + * + * @param PHPExcel $pPHPExcel + */ + public function __construct(PHPExcel $pPHPExcel = null) + { + $this->setPHPExcel($pPHPExcel); + + $writerPartsArray = array( + 'content' => 'PHPExcel_Writer_OpenDocument_Content', + 'meta' => 'PHPExcel_Writer_OpenDocument_Meta', + 'meta_inf' => 'PHPExcel_Writer_OpenDocument_MetaInf', + 'mimetype' => 'PHPExcel_Writer_OpenDocument_Mimetype', + 'settings' => 'PHPExcel_Writer_OpenDocument_Settings', + 'styles' => 'PHPExcel_Writer_OpenDocument_Styles', + 'thumbnails' => 'PHPExcel_Writer_OpenDocument_Thumbnails' + ); + + foreach ($writerPartsArray as $writer => $class) { + $this->writerParts[$writer] = new $class($this); + } + } + + /** + * Get writer part + * + * @param string $pPartName Writer part name + * @return PHPExcel_Writer_Excel2007_WriterPart + */ + public function getWriterPart($pPartName = '') + { + if ($pPartName != '' && isset($this->writerParts[strtolower($pPartName)])) { + return $this->writerParts[strtolower($pPartName)]; + } else { + return null; + } + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + if (!$this->spreadSheet) { + throw new PHPExcel_Writer_Exception('PHPExcel object unassigned.'); + } + + // garbage collect + $this->spreadSheet->garbageCollect(); + + // If $pFilename is php://output or php://stdout, make it a temporary file... + $originalFilename = $pFilename; + if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { + $pFilename = @tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp'); + if ($pFilename == '') { + $pFilename = $originalFilename; + } + } + + $objZip = $this->createZip($pFilename); + + $objZip->addFromString('META-INF/manifest.xml', $this->getWriterPart('meta_inf')->writeManifest()); + $objZip->addFromString('Thumbnails/thumbnail.png', $this->getWriterPart('thumbnails')->writeThumbnail()); + $objZip->addFromString('content.xml', $this->getWriterPart('content')->write()); + $objZip->addFromString('meta.xml', $this->getWriterPart('meta')->write()); + $objZip->addFromString('mimetype', $this->getWriterPart('mimetype')->write()); + $objZip->addFromString('settings.xml', $this->getWriterPart('settings')->write()); + $objZip->addFromString('styles.xml', $this->getWriterPart('styles')->write()); + + // Close file + if ($objZip->close() === false) { + throw new PHPExcel_Writer_Exception("Could not close zip file $pFilename."); + } + + // If a temporary file was used, copy it to the correct file stream + if ($originalFilename != $pFilename) { + if (copy($pFilename, $originalFilename) === false) { + throw new PHPExcel_Writer_Exception("Could not copy temporary zip file $pFilename to $originalFilename."); + } + @unlink($pFilename); + } + } + + /** + * Create zip object + * + * @param string $pFilename + * @throws PHPExcel_Writer_Exception + * @return ZipArchive + */ + private function createZip($pFilename) + { + // Create new ZIP file and open it for writing + $zipClass = PHPExcel_Settings::getZipClass(); + $objZip = new $zipClass(); + + // Retrieve OVERWRITE and CREATE constants from the instantiated zip class + // This method of accessing constant values from a dynamic class should work with all appropriate versions of PHP + $ro = new ReflectionObject($objZip); + $zipOverWrite = $ro->getConstant('OVERWRITE'); + $zipCreate = $ro->getConstant('CREATE'); + + if (file_exists($pFilename)) { + unlink($pFilename); + } + // Try opening the ZIP file + if ($objZip->open($pFilename, $zipOverWrite) !== true) { + if ($objZip->open($pFilename, $zipCreate) !== true) { + throw new PHPExcel_Writer_Exception("Could not open $pFilename for writing."); + } + } + + return $objZip; + } + + /** + * Get PHPExcel object + * + * @return PHPExcel + * @throws PHPExcel_Writer_Exception + */ + public function getPHPExcel() + { + if ($this->spreadSheet !== null) { + return $this->spreadSheet; + } else { + throw new PHPExcel_Writer_Exception('No PHPExcel assigned.'); + } + } + + /** + * Set PHPExcel object + * + * @param PHPExcel $pPHPExcel PHPExcel object + * @throws PHPExcel_Writer_Exception + * @return PHPExcel_Writer_Excel2007 + */ + public function setPHPExcel(PHPExcel $pPHPExcel = null) + { + $this->spreadSheet = $pPHPExcel; + return $this; + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Cell/Comment.php b/assets/excel/PHPExcel/Writer/OpenDocument/Cell/Comment.php new file mode 100644 index 0000000..f1e98a1 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Cell/Comment.php @@ -0,0 +1,63 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Writer_OpenDocument_Cell_Comment + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @author Alexander Pervakov <frost-nzcr4@jagmort.com> + */ +class PHPExcel_Writer_OpenDocument_Cell_Comment +{ + public static function write(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Cell $cell) + { + $comments = $cell->getWorksheet()->getComments(); + if (!isset($comments[$cell->getCoordinate()])) { + return; + } + $comment = $comments[$cell->getCoordinate()]; + + $objWriter->startElement('office:annotation'); + //$objWriter->writeAttribute('draw:style-name', 'gr1'); + //$objWriter->writeAttribute('draw:text-style-name', 'P1'); + $objWriter->writeAttribute('svg:width', $comment->getWidth()); + $objWriter->writeAttribute('svg:height', $comment->getHeight()); + $objWriter->writeAttribute('svg:x', $comment->getMarginLeft()); + $objWriter->writeAttribute('svg:y', $comment->getMarginTop()); + //$objWriter->writeAttribute('draw:caption-point-x', $comment->getMarginLeft()); + //$objWriter->writeAttribute('draw:caption-point-y', $comment->getMarginTop()); + $objWriter->writeElement('dc:creator', $comment->getAuthor()); + // TODO: Not realized in PHPExcel_Comment yet. + //$objWriter->writeElement('dc:date', $comment->getDate()); + $objWriter->writeElement('text:p', $comment->getText()->getPlainText()); + //$objWriter->writeAttribute('draw:text-style-name', 'P1'); + $objWriter->endElement(); + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Content.php b/assets/excel/PHPExcel/Writer/OpenDocument/Content.php new file mode 100644 index 0000000..a34b167 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Content.php @@ -0,0 +1,272 @@ +<?php +/** + * PHPExcel + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ + + +/** + * PHPExcel_Writer_OpenDocument_Content + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @author Alexander Pervakov <frost-nzcr4@jagmort.com> + */ +class PHPExcel_Writer_OpenDocument_Content extends PHPExcel_Writer_OpenDocument_WriterPart +{ + const NUMBER_COLS_REPEATED_MAX = 1024; + const NUMBER_ROWS_REPEATED_MAX = 1048576; + + /** + * Write content.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function write(PHPExcel $pPHPExcel = null) + { + if (!$pPHPExcel) { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); /* @var $pPHPExcel PHPExcel */ + } + + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8'); + + // Content + $objWriter->startElement('office:document-content'); + $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); + $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); + $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); + $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); + $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); + $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); + $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); + $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); + $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); + $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0'); + $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); + $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); + $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); + $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); + $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); + $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); + $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); + $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); + $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); + $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); + $objWriter->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms'); + $objWriter->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); + $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); + $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); + $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); + $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); + $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); + $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); + $objWriter->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0'); + $objWriter->writeAttribute('xmlns:formx', 'urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0'); + $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); + $objWriter->writeAttribute('office:version', '1.2'); + + $objWriter->writeElement('office:scripts'); + $objWriter->writeElement('office:font-face-decls'); + $objWriter->writeElement('office:automatic-styles'); + + $objWriter->startElement('office:body'); + $objWriter->startElement('office:spreadsheet'); + $objWriter->writeElement('table:calculation-settings'); + $this->writeSheets($objWriter); + $objWriter->writeElement('table:named-expressions'); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + return $objWriter->getData(); + } + + /** + * Write sheets + * + * @param PHPExcel_Shared_XMLWriter $objWriter + */ + private function writeSheets(PHPExcel_Shared_XMLWriter $objWriter) + { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); /* @var $pPHPExcel PHPExcel */ + + $sheet_count = $pPHPExcel->getSheetCount(); + for ($i = 0; $i < $sheet_count; $i++) { + //$this->getWriterPart('Worksheet')->writeWorksheet()); + $objWriter->startElement('table:table'); + $objWriter->writeAttribute('table:name', $pPHPExcel->getSheet($i)->getTitle()); + $objWriter->writeElement('office:forms'); + $objWriter->startElement('table:table-column'); + $objWriter->writeAttribute('table:number-columns-repeated', self::NUMBER_COLS_REPEATED_MAX); + $objWriter->endElement(); + $this->writeRows($objWriter, $pPHPExcel->getSheet($i)); + $objWriter->endElement(); + } + } + + /** + * Write rows of the specified sheet + * + * @param PHPExcel_Shared_XMLWriter $objWriter + * @param PHPExcel_Worksheet $sheet + */ + private function writeRows(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet $sheet) + { + $number_rows_repeated = self::NUMBER_ROWS_REPEATED_MAX; + $span_row = 0; + $rows = $sheet->getRowIterator(); + while ($rows->valid()) { + $number_rows_repeated--; + $row = $rows->current(); + if ($row->getCellIterator()->valid()) { + if ($span_row) { + $objWriter->startElement('table:table-row'); + if ($span_row > 1) { + $objWriter->writeAttribute('table:number-rows-repeated', $span_row); + } + $objWriter->startElement('table:table-cell'); + $objWriter->writeAttribute('table:number-columns-repeated', self::NUMBER_COLS_REPEATED_MAX); + $objWriter->endElement(); + $objWriter->endElement(); + $span_row = 0; + } + $objWriter->startElement('table:table-row'); + $this->writeCells($objWriter, $row); + $objWriter->endElement(); + } else { + $span_row++; + } + $rows->next(); + } + } + + /** + * Write cells of the specified row + * + * @param PHPExcel_Shared_XMLWriter $objWriter + * @param PHPExcel_Worksheet_Row $row + * @throws PHPExcel_Writer_Exception + */ + private function writeCells(PHPExcel_Shared_XMLWriter $objWriter, PHPExcel_Worksheet_Row $row) + { + $number_cols_repeated = self::NUMBER_COLS_REPEATED_MAX; + $prev_column = -1; + $cells = $row->getCellIterator(); + while ($cells->valid()) { + $cell = $cells->current(); + $column = PHPExcel_Cell::columnIndexFromString($cell->getColumn()) - 1; + + $this->writeCellSpan($objWriter, $column, $prev_column); + $objWriter->startElement('table:table-cell'); + + switch ($cell->getDataType()) { + case PHPExcel_Cell_DataType::TYPE_BOOL: + $objWriter->writeAttribute('office:value-type', 'boolean'); + $objWriter->writeAttribute('office:value', $cell->getValue()); + $objWriter->writeElement('text:p', $cell->getValue()); + break; + + case PHPExcel_Cell_DataType::TYPE_ERROR: + throw new PHPExcel_Writer_Exception('Writing of error not implemented yet.'); + break; + + case PHPExcel_Cell_DataType::TYPE_FORMULA: + try { + $formula_value = $cell->getCalculatedValue(); + } catch (Exception $e) { + $formula_value = $cell->getValue(); + } + $objWriter->writeAttribute('table:formula', 'of:' . $cell->getValue()); + if (is_numeric($formula_value)) { + $objWriter->writeAttribute('office:value-type', 'float'); + } else { + $objWriter->writeAttribute('office:value-type', 'string'); + } + $objWriter->writeAttribute('office:value', $formula_value); + $objWriter->writeElement('text:p', $formula_value); + break; + + case PHPExcel_Cell_DataType::TYPE_INLINE: + throw new PHPExcel_Writer_Exception('Writing of inline not implemented yet.'); + break; + + case PHPExcel_Cell_DataType::TYPE_NUMERIC: + $objWriter->writeAttribute('office:value-type', 'float'); + $objWriter->writeAttribute('office:value', $cell->getValue()); + $objWriter->writeElement('text:p', $cell->getValue()); + break; + + case PHPExcel_Cell_DataType::TYPE_STRING: + $objWriter->writeAttribute('office:value-type', 'string'); + $objWriter->writeElement('text:p', $cell->getValue()); + break; + } + PHPExcel_Writer_OpenDocument_Cell_Comment::write($objWriter, $cell); + $objWriter->endElement(); + $prev_column = $column; + $cells->next(); + } + $number_cols_repeated = $number_cols_repeated - $prev_column - 1; + if ($number_cols_repeated > 0) { + if ($number_cols_repeated > 1) { + $objWriter->startElement('table:table-cell'); + $objWriter->writeAttribute('table:number-columns-repeated', $number_cols_repeated); + $objWriter->endElement(); + } else { + $objWriter->writeElement('table:table-cell'); + } + } + } + + /** + * Write span + * + * @param PHPExcel_Shared_XMLWriter $objWriter + * @param integer $curColumn + * @param integer $prevColumn + */ + private function writeCellSpan(PHPExcel_Shared_XMLWriter $objWriter, $curColumn, $prevColumn) + { + $diff = $curColumn - $prevColumn - 1; + if (1 === $diff) { + $objWriter->writeElement('table:table-cell'); + } elseif ($diff > 1) { + $objWriter->startElement('table:table-cell'); + $objWriter->writeAttribute('table:number-columns-repeated', $diff); + $objWriter->endElement(); + } + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Meta.php b/assets/excel/PHPExcel/Writer/OpenDocument/Meta.php new file mode 100644 index 0000000..1a5c5fd --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Meta.php @@ -0,0 +1,95 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_Meta + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_Meta extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write meta.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function write(PHPExcel $pPHPExcel = null) + { + if (!$pPHPExcel) { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); + } + + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8'); + + // Meta + $objWriter->startElement('office:document-meta'); + + $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); + $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); + $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); + $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); + $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); + $objWriter->writeAttribute('office:version', '1.2'); + + $objWriter->startElement('office:meta'); + + $objWriter->writeElement('meta:initial-creator', $pPHPExcel->getProperties()->getCreator()); + $objWriter->writeElement('dc:creator', $pPHPExcel->getProperties()->getCreator()); + $objWriter->writeElement('meta:creation-date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); + $objWriter->writeElement('dc:date', date(DATE_W3C, $pPHPExcel->getProperties()->getCreated())); + $objWriter->writeElement('dc:title', $pPHPExcel->getProperties()->getTitle()); + $objWriter->writeElement('dc:description', $pPHPExcel->getProperties()->getDescription()); + $objWriter->writeElement('dc:subject', $pPHPExcel->getProperties()->getSubject()); + $keywords = explode(' ', $pPHPExcel->getProperties()->getKeywords()); + foreach ($keywords as $keyword) { + $objWriter->writeElement('meta:keyword', $keyword); + } + + //<meta:document-statistic meta:table-count="XXX" meta:cell-count="XXX" meta:object-count="XXX"/> + $objWriter->startElement('meta:user-defined'); + $objWriter->writeAttribute('meta:name', 'Company'); + $objWriter->writeRaw($pPHPExcel->getProperties()->getCompany()); + $objWriter->endElement(); + + $objWriter->startElement('meta:user-defined'); + $objWriter->writeAttribute('meta:name', 'category'); + $objWriter->writeRaw($pPHPExcel->getProperties()->getCategory()); + $objWriter->endElement(); + + $objWriter->endElement(); + + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/MetaInf.php b/assets/excel/PHPExcel/Writer/OpenDocument/MetaInf.php new file mode 100644 index 0000000..c43b723 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/MetaInf.php @@ -0,0 +1,87 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_MetaInf + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_MetaInf extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write META-INF/manifest.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeManifest(PHPExcel $pPHPExcel = null) + { + if (!$pPHPExcel) { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); + } + + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8'); + + // Manifest + $objWriter->startElement('manifest:manifest'); + $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0'); + $objWriter->writeAttribute('manifest:version', '1.2'); + + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', '/'); + $objWriter->writeAttribute('manifest:version', '1.2'); + $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.spreadsheet'); + $objWriter->endElement(); + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', 'meta.xml'); + $objWriter->writeAttribute('manifest:media-type', 'text/xml'); + $objWriter->endElement(); + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', 'settings.xml'); + $objWriter->writeAttribute('manifest:media-type', 'text/xml'); + $objWriter->endElement(); + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', 'content.xml'); + $objWriter->writeAttribute('manifest:media-type', 'text/xml'); + $objWriter->endElement(); + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', 'Thumbnails/thumbnail.png'); + $objWriter->writeAttribute('manifest:media-type', 'image/png'); + $objWriter->endElement(); + $objWriter->startElement('manifest:file-entry'); + $objWriter->writeAttribute('manifest:full-path', 'styles.xml'); + $objWriter->writeAttribute('manifest:media-type', 'text/xml'); + $objWriter->endElement(); + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Mimetype.php b/assets/excel/PHPExcel/Writer/OpenDocument/Mimetype.php new file mode 100644 index 0000000..d51a8b9 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Mimetype.php @@ -0,0 +1,41 @@ +<?php + +/** + * PHPExcel + * + * PHPExcel_Writer_OpenDocument_Mimetype + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_Mimetype extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write mimetype to plain text format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function write(PHPExcel $pPHPExcel = null) + { + return 'application/vnd.oasis.opendocument.spreadsheet'; + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Settings.php b/assets/excel/PHPExcel/Writer/OpenDocument/Settings.php new file mode 100644 index 0000000..84161b6 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Settings.php @@ -0,0 +1,76 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_Settings + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_Settings extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write settings.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function write(PHPExcel $pPHPExcel = null) + { + if (!$pPHPExcel) { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); + } + + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8'); + + // Settings + $objWriter->startElement('office:document-settings'); + $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); + $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + $objWriter->writeAttribute('xmlns:config', 'urn:oasis:names:tc:opendocument:xmlns:config:1.0'); + $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); + $objWriter->writeAttribute('office:version', '1.2'); + + $objWriter->startElement('office:settings'); + $objWriter->startElement('config:config-item-set'); + $objWriter->writeAttribute('config:name', 'ooo:view-settings'); + $objWriter->startElement('config:config-item-map-indexed'); + $objWriter->writeAttribute('config:name', 'Views'); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->startElement('config:config-item-set'); + $objWriter->writeAttribute('config:name', 'ooo:configuration-settings'); + $objWriter->endElement(); + $objWriter->endElement(); + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Styles.php b/assets/excel/PHPExcel/Writer/OpenDocument/Styles.php new file mode 100644 index 0000000..cc6e25b --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Styles.php @@ -0,0 +1,92 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_Styles + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_Styles extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write styles.xml to XML format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function write(PHPExcel $pPHPExcel = null) + { + if (!$pPHPExcel) { + $pPHPExcel = $this->getParentWriter()->getPHPExcel(); + } + + $objWriter = null; + if ($this->getParentWriter()->getUseDiskCaching()) { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); + } else { + $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); + } + + // XML header + $objWriter->startDocument('1.0', 'UTF-8'); + + // Content + $objWriter->startElement('office:document-styles'); + $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); + $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); + $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); + $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); + $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); + $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); + $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); + $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); + $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); + $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0'); + $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); + $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); + $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); + $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); + $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); + $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); + $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); + $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); + $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); + $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); + $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); + $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); + $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); + $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); + $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); + $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); + $objWriter->writeAttribute('office:version', '1.2'); + + $objWriter->writeElement('office:font-face-decls'); + $objWriter->writeElement('office:styles'); + $objWriter->writeElement('office:automatic-styles'); + $objWriter->writeElement('office:master-styles'); + $objWriter->endElement(); + + return $objWriter->getData(); + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/Thumbnails.php b/assets/excel/PHPExcel/Writer/OpenDocument/Thumbnails.php new file mode 100644 index 0000000..54247ae --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/Thumbnails.php @@ -0,0 +1,41 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_Thumbnails + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_OpenDocument_Thumbnails extends PHPExcel_Writer_OpenDocument_WriterPart +{ + /** + * Write Thumbnails/thumbnail.png to PNG format + * + * @param PHPExcel $pPHPExcel + * @return string XML Output + * @throws PHPExcel_Writer_Exception + */ + public function writeThumbnail(PHPExcel $pPHPExcel = null) + { + return ''; + } +} diff --git a/assets/excel/PHPExcel/Writer/OpenDocument/WriterPart.php b/assets/excel/PHPExcel/Writer/OpenDocument/WriterPart.php new file mode 100644 index 0000000..562787a --- /dev/null +++ b/assets/excel/PHPExcel/Writer/OpenDocument/WriterPart.php @@ -0,0 +1,30 @@ +<?php + +/** + * PHPExcel_Writer_OpenDocument_WriterPart + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_OpenDocument + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Writer_OpenDocument_WriterPart extends PHPExcel_Writer_Excel2007_WriterPart +{ +} diff --git a/assets/excel/PHPExcel/Writer/PDF.php b/assets/excel/PHPExcel/Writer/PDF.php new file mode 100644 index 0000000..579edfa --- /dev/null +++ b/assets/excel/PHPExcel/Writer/PDF.php @@ -0,0 +1,89 @@ +<?php + +/** + * PHPExcel_Writer_PDF + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_PDF + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_PDF implements PHPExcel_Writer_IWriter +{ + + /** + * The wrapper for the requested PDF rendering engine + * + * @var PHPExcel_Writer_PDF_Core + */ + private $renderer = null; + + /** + * Instantiate a new renderer of the configured type within this container class + * + * @param PHPExcel $phpExcel PHPExcel object + * @throws PHPExcel_Writer_Exception when PDF library is not configured + */ + public function __construct(PHPExcel $phpExcel) + { + $pdfLibraryName = PHPExcel_Settings::getPdfRendererName(); + if (is_null($pdfLibraryName)) { + throw new PHPExcel_Writer_Exception("PDF Rendering library has not been defined."); + } + + $pdfLibraryPath = PHPExcel_Settings::getPdfRendererPath(); + if (is_null($pdfLibraryName)) { + throw new PHPExcel_Writer_Exception("PDF Rendering library path has not been defined."); + } + $includePath = str_replace('\\', '/', get_include_path()); + $rendererPath = str_replace('\\', '/', $pdfLibraryPath); + if (strpos($rendererPath, $includePath) === false) { + set_include_path(get_include_path() . PATH_SEPARATOR . $pdfLibraryPath); + } + + $rendererName = 'PHPExcel_Writer_PDF_' . $pdfLibraryName; + $this->renderer = new $rendererName($phpExcel); + } + + + /** + * Magic method to handle direct calls to the configured PDF renderer wrapper class. + * + * @param string $name Renderer library method name + * @param mixed[] $arguments Array of arguments to pass to the renderer method + * @return mixed Returned data from the PDF renderer wrapper method + */ + public function __call($name, $arguments) + { + if ($this->renderer === null) { + throw new PHPExcel_Writer_Exception("PDF Rendering library has not been defined."); + } + + return call_user_func_array(array($this->renderer, $name), $arguments); + } + + /** + * {@inheritdoc} + */ + public function save($pFilename = null) + { + $this->renderer->save($pFilename); + } +} diff --git a/assets/excel/PHPExcel/Writer/PDF/Core.php b/assets/excel/PHPExcel/Writer/PDF/Core.php new file mode 100644 index 0000000..4fed84a --- /dev/null +++ b/assets/excel/PHPExcel/Writer/PDF/Core.php @@ -0,0 +1,355 @@ +<?php + +/** + * PHPExcel_Writer_PDF_Core + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_PDF + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +abstract class PHPExcel_Writer_PDF_Core extends PHPExcel_Writer_HTML +{ + /** + * Temporary storage directory + * + * @var string + */ + protected $tempDir = ''; + + /** + * Font + * + * @var string + */ + protected $font = 'freesans'; + + /** + * Orientation (Over-ride) + * + * @var string + */ + protected $orientation; + + /** + * Paper size (Over-ride) + * + * @var int + */ + protected $paperSize; + + + /** + * Temporary storage for Save Array Return type + * + * @var string + */ + private $saveArrayReturnType; + + /** + * Paper Sizes xRef List + * + * @var array + */ + protected static $paperSizes = array( + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER + => 'LETTER', // (8.5 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_SMALL + => 'LETTER', // (8.5 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID + => array(792.00, 1224.00), // (11 in. by 17 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEDGER + => array(1224.00, 792.00), // (17 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL + => 'LEGAL', // (8.5 in. by 14 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STATEMENT + => array(396.00, 612.00), // (5.5 in. by 8.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_EXECUTIVE + => 'EXECUTIVE', // (7.25 in. by 10.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3 + => 'A3', // (297 mm by 420 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4 + => 'A4', // (210 mm by 297 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_SMALL + => 'A4', // (210 mm by 297 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5 + => 'A5', // (148 mm by 210 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4 + => 'B4', // (250 mm by 353 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5 + => 'B5', // (176 mm by 250 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_FOLIO + => 'FOLIO', // (8.5 in. by 13 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_QUARTO + => array(609.45, 779.53), // (215 mm by 275 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_1 + => array(720.00, 1008.00), // (10 in. by 14 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_2 + => array(792.00, 1224.00), // (11 in. by 17 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NOTE + => 'LETTER', // (8.5 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO9_ENVELOPE + => array(279.00, 639.00), // (3.875 in. by 8.875 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO10_ENVELOPE + => array(297.00, 684.00), // (4.125 in. by 9.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO11_ENVELOPE + => array(324.00, 747.00), // (4.5 in. by 10.375 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO12_ENVELOPE + => array(342.00, 792.00), // (4.75 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO14_ENVELOPE + => array(360.00, 828.00), // (5 in. by 11.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C + => array(1224.00, 1584.00), // (17 in. by 22 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_D + => array(1584.00, 2448.00), // (22 in. by 34 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_E + => array(2448.00, 3168.00), // (34 in. by 44 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_DL_ENVELOPE + => array(311.81, 623.62), // (110 mm by 220 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C5_ENVELOPE + => 'C5', // (162 mm by 229 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C3_ENVELOPE + => 'C3', // (324 mm by 458 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C4_ENVELOPE + => 'C4', // (229 mm by 324 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C6_ENVELOPE + => 'C6', // (114 mm by 162 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_C65_ENVELOPE + => array(323.15, 649.13), // (114 mm by 229 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4_ENVELOPE + => 'B4', // (250 mm by 353 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5_ENVELOPE + => 'B5', // (176 mm by 250 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_B6_ENVELOPE + => array(498.90, 354.33), // (176 mm by 125 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_ITALY_ENVELOPE + => array(311.81, 651.97), // (110 mm by 230 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_MONARCH_ENVELOPE + => array(279.00, 540.00), // (3.875 in. by 7.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_6_3_4_ENVELOPE + => array(261.00, 468.00), // (3.625 in. by 6.5 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_US_STANDARD_FANFOLD + => array(1071.00, 792.00), // (14.875 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_STANDARD_FANFOLD + => array(612.00, 864.00), // (8.5 in. by 12 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_LEGAL_FANFOLD + => 'FOLIO', // (8.5 in. by 13 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B4 + => 'B4', // (250 mm by 353 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_JAPANESE_DOUBLE_POSTCARD + => array(566.93, 419.53), // (200 mm by 148 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_1 + => array(648.00, 792.00), // (9 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_2 + => array(720.00, 792.00), // (10 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_3 + => array(1080.00, 792.00), // (15 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_INVITE_ENVELOPE + => array(623.62, 623.62), // (220 mm by 220 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_PAPER + => array(667.80, 864.00), // (9.275 in. by 12 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL_EXTRA_PAPER + => array(667.80, 1080.00), // (9.275 in. by 15 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID_EXTRA_PAPER + => array(841.68, 1296.00), // (11.69 in. by 18 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_EXTRA_PAPER + => array(668.98, 912.76), // (236 mm by 322 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_TRANSVERSE_PAPER + => array(595.80, 792.00), // (8.275 in. by 11 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_TRANSVERSE_PAPER + => 'A4', // (210 mm by 297 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER + => array(667.80, 864.00), // (9.275 in. by 12 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERA_SUPERA_A4_PAPER + => array(643.46, 1009.13), // (227 mm by 356 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERB_SUPERB_A3_PAPER + => array(864.57, 1380.47), // (305 mm by 487 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_PLUS_PAPER + => array(612.00, 913.68), // (8.5 in. by 12.69 in.) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_PLUS_PAPER + => array(595.28, 935.43), // (210 mm by 330 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_TRANSVERSE_PAPER + => 'A5', // (148 mm by 210 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_JIS_B5_TRANSVERSE_PAPER + => array(515.91, 728.50), // (182 mm by 257 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_PAPER + => array(912.76, 1261.42), // (322 mm by 445 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_EXTRA_PAPER + => array(493.23, 666.14), // (174 mm by 235 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B5_EXTRA_PAPER + => array(569.76, 782.36), // (201 mm by 276 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER + => 'A2', // (420 mm by 594 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_TRANSVERSE_PAPER + => 'A3', // (297 mm by 420 mm) + PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER + => array(912.76, 1261.42) // (322 mm by 445 mm) + ); + + /** + * Create a new PHPExcel_Writer_PDF + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + parent::__construct($phpExcel); + $this->setUseInlineCss(true); + $this->tempDir = PHPExcel_Shared_File::sys_get_temp_dir(); + } + + /** + * Get Font + * + * @return string + */ + public function getFont() + { + return $this->font; + } + + /** + * Set font. Examples: + * 'arialunicid0-chinese-simplified' + * 'arialunicid0-chinese-traditional' + * 'arialunicid0-korean' + * 'arialunicid0-japanese' + * + * @param string $fontName + */ + public function setFont($fontName) + { + $this->font = $fontName; + return $this; + } + + /** + * Get Paper Size + * + * @return int + */ + public function getPaperSize() + { + return $this->paperSize; + } + + /** + * Set Paper Size + * + * @param string $pValue Paper size + * @return PHPExcel_Writer_PDF + */ + public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER) + { + $this->paperSize = $pValue; + return $this; + } + + /** + * Get Orientation + * + * @return string + */ + public function getOrientation() + { + return $this->orientation; + } + + /** + * Set Orientation + * + * @param string $pValue Page orientation + * @return PHPExcel_Writer_PDF + */ + public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) + { + $this->orientation = $pValue; + return $this; + } + + /** + * Get temporary storage directory + * + * @return string + */ + public function getTempDir() + { + return $this->tempDir; + } + + /** + * Set temporary storage directory + * + * @param string $pValue Temporary storage directory + * @throws PHPExcel_Writer_Exception when directory does not exist + * @return PHPExcel_Writer_PDF + */ + public function setTempDir($pValue = '') + { + if (is_dir($pValue)) { + $this->tempDir = $pValue; + } else { + throw new PHPExcel_Writer_Exception("Directory does not exist: $pValue"); + } + return $this; + } + + /** + * Save PHPExcel to PDF file, pre-save + * + * @param string $pFilename Name of the file to save as + * @throws PHPExcel_Writer_Exception + */ + protected function prepareForSave($pFilename = null) + { + // garbage collect + $this->phpExcel->garbageCollect(); + + $this->saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); + PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); + + // Open file + $fileHandle = fopen($pFilename, 'w'); + if ($fileHandle === false) { + throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing."); + } + + // Set PDF + $this->isPdf = true; + // Build CSS + $this->buildCSS(true); + + return $fileHandle; + } + + /** + * Save PHPExcel to PDF file, post-save + * + * @param resource $fileHandle + * @throws PHPExcel_Writer_Exception + */ + protected function restoreStateAfterSave($fileHandle) + { + // Close file + fclose($fileHandle); + + PHPExcel_Calculation::setArrayReturnType($this->saveArrayReturnType); + } +} diff --git a/assets/excel/PHPExcel/Writer/PDF/DomPDF.php b/assets/excel/PHPExcel/Writer/PDF/DomPDF.php new file mode 100644 index 0000000..83761ac --- /dev/null +++ b/assets/excel/PHPExcel/Writer/PDF/DomPDF.php @@ -0,0 +1,108 @@ +<?php + +/** Require DomPDF library */ +$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php'; +if (file_exists($pdfRendererClassFile)) { + require_once $pdfRendererClassFile; +} else { + throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); +} + +/** + * PHPExcel_Writer_PDF_DomPDF + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_PDF + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter +{ + /** + * Create a new PHPExcel_Writer_PDF + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + parent::__construct($phpExcel); + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename Name of the file to save as + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + $fileHandle = parent::prepareForSave($pFilename); + + // Default PDF paper size + $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) + + // Check for paper size and page orientation + if (is_null($this->getSheetIndex())) { + $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); + } else { + $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); + } + + $orientation = ($orientation == 'L') ? 'landscape' : 'portrait'; + + // Override Page Orientation + if (!is_null($this->getOrientation())) { + $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) + ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT + : $this->getOrientation(); + } + // Override Paper Size + if (!is_null($this->getPaperSize())) { + $printPaperSize = $this->getPaperSize(); + } + + if (isset(self::$paperSizes[$printPaperSize])) { + $paperSize = self::$paperSizes[$printPaperSize]; + } + + + // Create PDF + $pdf = new DOMPDF(); + $pdf->set_paper(strtolower($paperSize), $orientation); + + $pdf->load_html( + $this->generateHTMLHeader(false) . + $this->generateSheetData() . + $this->generateHTMLFooter() + ); + $pdf->render(); + + // Write to file + fwrite($fileHandle, $pdf->output()); + + parent::restoreStateAfterSave($fileHandle); + } +} diff --git a/assets/excel/PHPExcel/Writer/PDF/mPDF.php b/assets/excel/PHPExcel/Writer/PDF/mPDF.php new file mode 100644 index 0000000..e4e6057 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/PDF/mPDF.php @@ -0,0 +1,118 @@ +<?php + +/** Require mPDF library */ +$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/mpdf.php'; +if (file_exists($pdfRendererClassFile)) { + require_once $pdfRendererClassFile; +} else { + throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); +} + +/** + * PHPExcel_Writer_PDF_mPDF + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_PDF + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_PDF_mPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter +{ + /** + * Create a new PHPExcel_Writer_PDF + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + parent::__construct($phpExcel); + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename Name of the file to save as + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + $fileHandle = parent::prepareForSave($pFilename); + + // Default PDF paper size + $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) + + // Check for paper size and page orientation + if (is_null($this->getSheetIndex())) { + $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); + } else { + $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); + } + $this->setOrientation($orientation); + + // Override Page Orientation + if (!is_null($this->getOrientation())) { + $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) + ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT + : $this->getOrientation(); + } + $orientation = strtoupper($orientation); + + // Override Paper Size + if (!is_null($this->getPaperSize())) { + $printPaperSize = $this->getPaperSize(); + } + + if (isset(self::$paperSizes[$printPaperSize])) { + $paperSize = self::$paperSizes[$printPaperSize]; + } + + + // Create PDF + $pdf = new mpdf(); + $ortmp = $orientation; + $pdf->_setPageSize(strtoupper($paperSize), $ortmp); + $pdf->DefOrientation = $orientation; + $pdf->AddPage($orientation); + + // Document info + $pdf->SetTitle($this->phpExcel->getProperties()->getTitle()); + $pdf->SetAuthor($this->phpExcel->getProperties()->getCreator()); + $pdf->SetSubject($this->phpExcel->getProperties()->getSubject()); + $pdf->SetKeywords($this->phpExcel->getProperties()->getKeywords()); + $pdf->SetCreator($this->phpExcel->getProperties()->getCreator()); + + $pdf->WriteHTML( + $this->generateHTMLHeader(false) . + $this->generateSheetData() . + $this->generateHTMLFooter() + ); + + // Write to file + fwrite($fileHandle, $pdf->Output('', 'S')); + + parent::restoreStateAfterSave($fileHandle); + } +} diff --git a/assets/excel/PHPExcel/Writer/PDF/tcPDF.php b/assets/excel/PHPExcel/Writer/PDF/tcPDF.php new file mode 100644 index 0000000..dea33a3 --- /dev/null +++ b/assets/excel/PHPExcel/Writer/PDF/tcPDF.php @@ -0,0 +1,123 @@ +<?php + +/** Require tcPDF library */ +$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/tcpdf.php'; +if (file_exists($pdfRendererClassFile)) { + $k_path_url = PHPExcel_Settings::getPdfRendererPath(); + require_once $pdfRendererClassFile; +} else { + throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); +} + +/** + * PHPExcel_Writer_PDF_tcPDF + * + * Copyright (c) 2006 - 2015 PHPExcel + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * @category PHPExcel + * @package PHPExcel_Writer_PDF + * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## + */ +class PHPExcel_Writer_PDF_tcPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter +{ + /** + * Create a new PHPExcel_Writer_PDF + * + * @param PHPExcel $phpExcel PHPExcel object + */ + public function __construct(PHPExcel $phpExcel) + { + parent::__construct($phpExcel); + } + + /** + * Save PHPExcel to file + * + * @param string $pFilename Name of the file to save as + * @throws PHPExcel_Writer_Exception + */ + public function save($pFilename = null) + { + $fileHandle = parent::prepareForSave($pFilename); + + // Default PDF paper size + $paperSize = 'LETTER'; // Letter (8.5 in. by 11 in.) + + // Check for paper size and page orientation + if (is_null($this->getSheetIndex())) { + $orientation = ($this->phpExcel->getSheet(0)->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet(0)->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet(0)->getPageMargins(); + } else { + $orientation = ($this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation() + == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P'; + $printPaperSize = $this->phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize(); + $printMargins = $this->phpExcel->getSheet($this->getSheetIndex())->getPageMargins(); + } + + // Override Page Orientation + if (!is_null($this->getOrientation())) { + $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE) + ? 'L' + : 'P'; + } + // Override Paper Size + if (!is_null($this->getPaperSize())) { + $printPaperSize = $this->getPaperSize(); + } + + if (isset(self::$paperSizes[$printPaperSize])) { + $paperSize = self::$paperSizes[$printPaperSize]; + } + + + // Create PDF + $pdf = new TCPDF($orientation, 'pt', $paperSize); + $pdf->setFontSubsetting(false); + // Set margins, converting inches to points (using 72 dpi) + $pdf->SetMargins($printMargins->getLeft() * 72, $printMargins->getTop() * 72, $printMargins->getRight() * 72); + $pdf->SetAutoPageBreak(true, $printMargins->getBottom() * 72); + + $pdf->setPrintHeader(false); + $pdf->setPrintFooter(false); + + $pdf->AddPage(); + + // Set the appropriate font + $pdf->SetFont($this->getFont()); + $pdf->writeHTML( + $this->generateHTMLHeader(false) . + $this->generateSheetData() . + $this->generateHTMLFooter() + ); + + // Document info + $pdf->SetTitle($this->phpExcel->getProperties()->getTitle()); + $pdf->SetAuthor($this->phpExcel->getProperties()->getCreator()); + $pdf->SetSubject($this->phpExcel->getProperties()->getSubject()); + $pdf->SetKeywords($this->phpExcel->getProperties()->getKeywords()); + $pdf->SetCreator($this->phpExcel->getProperties()->getCreator()); + + // Write to file + fwrite($fileHandle, $pdf->output($pFilename, 'S')); + + parent::restoreStateAfterSave($fileHandle); + } +} diff --git a/assets/excel/PHPExcel/locale/bg/config b/assets/excel/PHPExcel/locale/bg/config new file mode 100644 index 0000000..4cecddb --- /dev/null +++ b/assets/excel/PHPExcel/locale/bg/config @@ -0,0 +1,49 @@ +## +## PHPExcel +## + +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = лв + + +## +## Excel Error Codes (For future use) + +## +NULL = #ПРАЗНО! +DIV0 = #ДЕЛ/0! +VALUE = #СТОЙНОСТ! +REF = #РЕФ! +NAME = #ИМЕ? +NUM = #ЧИСЛО! +NA = #Н/Д diff --git a/assets/excel/PHPExcel/locale/cs/config b/assets/excel/PHPExcel/locale/cs/config new file mode 100644 index 0000000..42cdf32 --- /dev/null +++ b/assets/excel/PHPExcel/locale/cs/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = Kč + + +## +## Excel Error Codes (For future use) +## +NULL = #NULL! +DIV0 = #DIV/0! +VALUE = #HODNOTA! +REF = #REF! +NAME = #NÁZEV? +NUM = #NUM! +NA = #N/A diff --git a/assets/excel/PHPExcel/locale/cs/functions b/assets/excel/PHPExcel/locale/cs/functions new file mode 100644 index 0000000..c0a3cbb --- /dev/null +++ b/assets/excel/PHPExcel/locale/cs/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funkce doplňků a automatizace +## +GETPIVOTDATA = ZÍSKATKONTDATA ## Vrátí data uložená v kontingenční tabulce. Pomocí funkce ZÍSKATKONTDATA můžete načíst souhrnná data z kontingenční tabulky, pokud jsou tato data v kontingenční sestavě zobrazena. + + +## +## Cube functions Funkce pro práci s krychlemi +## +CUBEKPIMEMBER = CUBEKPIMEMBER ## Vrátí název, vlastnost a velikost klíčového ukazatele výkonu (KUV) a zobrazí v buňce název a vlastnost. Klíčový ukazatel výkonu je kvantifikovatelná veličina, například hrubý měsíční zisk nebo čtvrtletní obrat na zaměstnance, která se používá pro sledování výkonnosti organizace. +CUBEMEMBER = CUBEMEMBER ## Vrátí člen nebo n-tici v hierarchii krychle. Slouží k ověření, zda v krychli existuje člen nebo n-tice. +CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY ## Vrátí hodnotu vlastnosti člena v krychli. Slouží k ověření, zda v krychli existuje člen s daným názvem, a k vrácení konkrétní vlastnosti tohoto člena. +CUBERANKEDMEMBER = CUBERANKEDMEMBER ## Vrátí n-tý nebo pořadový člen sady. Použijte ji pro vrácení jednoho nebo více prvků sady, například obchodníka s nejvyšším obratem nebo deseti nejlepších studentů. +CUBESET = CUBESET ## Definuje vypočtenou sadu členů nebo n-tic odesláním výrazu sady do krychle na serveru, který vytvoří sadu a potom ji vrátí do aplikace Microsoft Office Excel. +CUBESETCOUNT = CUBESETCOUNT ## Vrátí počet položek v množině +CUBEVALUE = CUBEVALUE ## Vrátí úhrnnou hodnotu z krychle. + + +## +## Database functions Funkce databáze +## +DAVERAGE = DPRŮMĚR ## Vrátí průměr vybraných položek databáze. +DCOUNT = DPOČET ## Spočítá buňky databáze obsahující čísla. +DCOUNTA = DPOČET2 ## Spočítá buňky databáze, které nejsou prázdné. +DGET = DZÍSKAT ## Extrahuje z databáze jeden záznam splňující zadaná kritéria. +DMAX = DMAX ## Vrátí maximální hodnotu z vybraných položek databáze. +DMIN = DMIN ## Vrátí minimální hodnotu z vybraných položek databáze. +DPRODUCT = DSOUČIN ## Vynásobí hodnoty určitého pole záznamů v databázi, které splňují daná kritéria. +DSTDEV = DSMODCH.VÝBĚR ## Odhadne směrodatnou odchylku výběru vybraných položek databáze. +DSTDEVP = DSMODCH ## Vypočte směrodatnou odchylku základního souboru vybraných položek databáze. +DSUM = DSUMA ## Sečte čísla ve sloupcovém poli záznamů databáze, která splňují daná kritéria. +DVAR = DVAR.VÝBĚR ## Odhadne rozptyl výběru vybraných položek databáze. +DVARP = DVAR ## Vypočte rozptyl základního souboru vybraných položek databáze. + + +## +## Date and time functions Funkce data a času +## +DATE = DATUM ## Vrátí pořadové číslo určitého data. +DATEVALUE = DATUMHODN ## Převede datum ve formě textu na pořadové číslo. +DAY = DEN ## Převede pořadové číslo na den v měsíci. +DAYS360 = ROK360 ## Vrátí počet dní mezi dvěma daty na základě roku s 360 dny. +EDATE = EDATE ## Vrátí pořadové číslo data, které označuje určený počet měsíců před nebo po počátečním datu. +EOMONTH = EOMONTH ## Vrátí pořadové číslo posledního dne měsíce před nebo po zadaném počtu měsíců. +HOUR = HODINA ## Převede pořadové číslo na hodinu. +MINUTE = MINUTA ## Převede pořadové číslo na minutu. +MONTH = MĚSÍC ## Převede pořadové číslo na měsíc. +NETWORKDAYS = NETWORKDAYS ## Vrátí počet celých pracovních dní mezi dvěma daty. +NOW = NYNÍ ## Vrátí pořadové číslo aktuálního data a času. +SECOND = SEKUNDA ## Převede pořadové číslo na sekundu. +TIME = ČAS ## Vrátí pořadové číslo určitého času. +TIMEVALUE = ČASHODN ## Převede čas ve formě textu na pořadové číslo. +TODAY = DNES ## Vrátí pořadové číslo dnešního data. +WEEKDAY = DENTÝDNE ## Převede pořadové číslo na den v týdnu. +WEEKNUM = WEEKNUM ## Převede pořadové číslo na číslo představující číselnou pozici týdne v roce. +WORKDAY = WORKDAY ## Vrátí pořadové číslo data před nebo po zadaném počtu pracovních dní. +YEAR = ROK ## Převede pořadové číslo na rok. +YEARFRAC = YEARFRAC ## Vrátí část roku vyjádřenou zlomkem a představující počet celých dní mezi počátečním a koncovým datem. + + +## +## Engineering functions Inženýrské funkce (Technické funkce) +## +BESSELI = BESSELI ## Vrátí modifikovanou Besselovu funkci In(x). +BESSELJ = BESSELJ ## Vrátí modifikovanou Besselovu funkci Jn(x). +BESSELK = BESSELK ## Vrátí modifikovanou Besselovu funkci Kn(x). +BESSELY = BESSELY ## Vrátí Besselovu funkci Yn(x). +BIN2DEC = BIN2DEC ## Převede binární číslo na desítkové. +BIN2HEX = BIN2HEX ## Převede binární číslo na šestnáctkové. +BIN2OCT = BIN2OCT ## Převede binární číslo na osmičkové. +COMPLEX = COMPLEX ## Převede reálnou a imaginární část na komplexní číslo. +CONVERT = CONVERT ## Převede číslo do jiného jednotkového měrného systému. +DEC2BIN = DEC2BIN ## Převede desítkového čísla na dvojkové +DEC2HEX = DEC2HEX ## Převede desítkové číslo na šestnáctkové. +DEC2OCT = DEC2OCT ## Převede desítkové číslo na osmičkové. +DELTA = DELTA ## Testuje rovnost dvou hodnot. +ERF = ERF ## Vrátí chybovou funkci. +ERFC = ERFC ## Vrátí doplňkovou chybovou funkci. +GESTEP = GESTEP ## Testuje, zda je číslo větší než mezní hodnota. +HEX2BIN = HEX2BIN ## Převede šestnáctkové číslo na binární. +HEX2DEC = HEX2DEC ## Převede šestnáctkové číslo na desítkové. +HEX2OCT = HEX2OCT ## Převede šestnáctkové číslo na osmičkové. +IMABS = IMABS ## Vrátí absolutní hodnotu (modul) komplexního čísla. +IMAGINARY = IMAGINARY ## Vrátí imaginární část komplexního čísla. +IMARGUMENT = IMARGUMENT ## Vrátí argument théta, úhel vyjádřený v radiánech. +IMCONJUGATE = IMCONJUGATE ## Vrátí komplexně sdružené číslo ke komplexnímu číslu. +IMCOS = IMCOS ## Vrátí kosinus komplexního čísla. +IMDIV = IMDIV ## Vrátí podíl dvou komplexních čísel. +IMEXP = IMEXP ## Vrátí exponenciální tvar komplexního čísla. +IMLN = IMLN ## Vrátí přirozený logaritmus komplexního čísla. +IMLOG10 = IMLOG10 ## Vrátí dekadický logaritmus komplexního čísla. +IMLOG2 = IMLOG2 ## Vrátí logaritmus komplexního čísla při základu 2. +IMPOWER = IMPOWER ## Vrátí komplexní číslo umocněné na celé číslo. +IMPRODUCT = IMPRODUCT ## Vrátí součin komplexních čísel. +IMREAL = IMREAL ## Vrátí reálnou část komplexního čísla. +IMSIN = IMSIN ## Vrátí sinus komplexního čísla. +IMSQRT = IMSQRT ## Vrátí druhou odmocninu komplexního čísla. +IMSUB = IMSUB ## Vrátí rozdíl mezi dvěma komplexními čísly. +IMSUM = IMSUM ## Vrátí součet dvou komplexních čísel. +OCT2BIN = OCT2BIN ## Převede osmičkové číslo na binární. +OCT2DEC = OCT2DEC ## Převede osmičkové číslo na desítkové. +OCT2HEX = OCT2HEX ## Převede osmičkové číslo na šestnáctkové. + + +## +## Financial functions Finanční funkce +## +ACCRINT = ACCRINT ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen v pravidelných termínech. +ACCRINTM = ACCRINTM ## Vrátí nahromaděný úrok z cenného papíru, ze kterého je úrok placen k datu splatnosti. +AMORDEGRC = AMORDEGRC ## Vrátí lineární amortizaci v každém účetním období pomocí koeficientu amortizace. +AMORLINC = AMORLINC ## Vrátí lineární amortizaci v každém účetním období. +COUPDAYBS = COUPDAYBS ## Vrátí počet dnů od začátku období placení kupónů do data splatnosti. +COUPDAYS = COUPDAYS ## Vrátí počet dnů v období placení kupónů, které obsahuje den zúčtování. +COUPDAYSNC = COUPDAYSNC ## Vrátí počet dnů od data zúčtování do následujícího data placení kupónu. +COUPNCD = COUPNCD ## Vrátí následující datum placení kupónu po datu zúčtování. +COUPNUM = COUPNUM ## Vrátí počet kupónů splatných mezi datem zúčtování a datem splatnosti. +COUPPCD = COUPPCD ## Vrátí předchozí datum placení kupónu před datem zúčtování. +CUMIPMT = CUMIPMT ## Vrátí kumulativní úrok splacený mezi dvěma obdobími. +CUMPRINC = CUMPRINC ## Vrátí kumulativní jistinu splacenou mezi dvěma obdobími půjčky. +DB = ODPIS.ZRYCH ## Vrátí odpis aktiva za určité období pomocí degresivní metody odpisu s pevným zůstatkem. +DDB = ODPIS.ZRYCH2 ## Vrátí odpis aktiva za určité období pomocí dvojité degresivní metody odpisu nebo jiné metody, kterou zadáte. +DISC = DISC ## Vrátí diskontní sazbu cenného papíru. +DOLLARDE = DOLLARDE ## Převede částku v korunách vyjádřenou zlomkem na částku v korunách vyjádřenou desetinným číslem. +DOLLARFR = DOLLARFR ## Převede částku v korunách vyjádřenou desetinným číslem na částku v korunách vyjádřenou zlomkem. +DURATION = DURATION ## Vrátí roční dobu cenného papíru s pravidelnými úrokovými sazbami. +EFFECT = EFFECT ## Vrátí efektivní roční úrokovou sazbu. +FV = BUDHODNOTA ## Vrátí budoucí hodnotu investice. +FVSCHEDULE = FVSCHEDULE ## Vrátí budoucí hodnotu počáteční jistiny po použití série sazeb složitého úroku. +INTRATE = INTRATE ## Vrátí úrokovou sazbu plně investovaného cenného papíru. +IPMT = PLATBA.ÚROK ## Vrátí výšku úroku investice za dané období. +IRR = MÍRA.VÝNOSNOSTI ## Vrátí vnitřní výnosové procento série peněžních toků. +ISPMT = ISPMT ## Vypočte výši úroku z investice zaplaceného během určitého období. +MDURATION = MDURATION ## Vrátí Macauleyho modifikovanou dobu cenného papíru o nominální hodnotě 100 Kč. +MIRR = MOD.MÍRA.VÝNOSNOSTI ## Vrátí vnitřní sazbu výnosu, přičemž kladné a záporné hodnoty peněžních prostředků jsou financovány podle různých sazeb. +NOMINAL = NOMINAL ## Vrátí nominální roční úrokovou sazbu. +NPER = POČET.OBDOBÍ ## Vrátí počet období pro investici. +NPV = ČISTÁ.SOUČHODNOTA ## Vrátí čistou současnou hodnotu investice vypočítanou na základě série pravidelných peněžních toků a diskontní sazby. +ODDFPRICE = ODDFPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným prvním obdobím. +ODDFYIELD = ODDFYIELD ## Vrátí výnos cenného papíru s odlišným prvním obdobím. +ODDLPRICE = ODDLPRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč s odlišným posledním obdobím. +ODDLYIELD = ODDLYIELD ## Vrátí výnos cenného papíru s odlišným posledním obdobím. +PMT = PLATBA ## Vrátí hodnotu pravidelné splátky anuity. +PPMT = PLATBA.ZÁKLAD ## Vrátí hodnotu splátky jistiny pro zadanou investici za dané období. +PRICE = PRICE ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen v pravidelných termínech. +PRICEDISC = PRICEDISC ## Vrátí cenu diskontního cenného papíru o nominální hodnotě 100 Kč. +PRICEMAT = PRICEMAT ## Vrátí cenu cenného papíru o nominální hodnotě 100 Kč, ze kterého je úrok placen k datu splatnosti. +PV = SOUČHODNOTA ## Vrátí současnou hodnotu investice. +RATE = ÚROKOVÁ.MÍRA ## Vrátí úrokovou sazbu vztaženou na období anuity. +RECEIVED = RECEIVED ## Vrátí částku obdrženou k datu splatnosti plně investovaného cenného papíru. +SLN = ODPIS.LIN ## Vrátí přímé odpisy aktiva pro jedno období. +SYD = ODPIS.NELIN ## Vrátí směrné číslo ročních odpisů aktiva pro zadané období. +TBILLEQ = TBILLEQ ## Vrátí výnos směnky státní pokladny ekvivalentní výnosu obligace. +TBILLPRICE = TBILLPRICE ## Vrátí cenu směnky státní pokladny o nominální hodnotě 100 Kč. +TBILLYIELD = TBILLYIELD ## Vrátí výnos směnky státní pokladny. +VDB = ODPIS.ZA.INT ## Vrátí odpis aktiva pro určité období nebo část období pomocí degresivní metody odpisu. +XIRR = XIRR ## Vrátí vnitřní výnosnost pro harmonogram peněžních toků, který nemusí být nutně periodický. +XNPV = XNPV ## Vrátí čistou současnou hodnotu pro harmonogram peněžních toků, který nemusí být nutně periodický. +YIELD = YIELD ## Vrátí výnos cenného papíru, ze kterého je úrok placen v pravidelných termínech. +YIELDDISC = YIELDDISC ## Vrátí roční výnos diskontního cenného papíru, například směnky státní pokladny. +YIELDMAT = YIELDMAT ## Vrátí roční výnos cenného papíru, ze kterého je úrok placen k datu splatnosti. + + +## +## Information functions Informační funkce +## +CELL = POLÍČKO ## Vrátí informace o formátování, umístění nebo obsahu buňky. +ERROR.TYPE = CHYBA.TYP ## Vrátí číslo odpovídající typu chyby. +INFO = O.PROSTŘEDÍ ## Vrátí informace o aktuálním pracovním prostředí. +ISBLANK = JE.PRÁZDNÉ ## Vrátí hodnotu PRAVDA, pokud se argument hodnota odkazuje na prázdnou buňku. +ISERR = JE.CHYBA ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota (kromě #N/A). +ISERROR = JE.CHYBHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota libovolná chybová hodnota. +ISEVEN = ISEVEN ## Vrátí hodnotu PRAVDA, pokud je číslo sudé. +ISLOGICAL = JE.LOGHODN ## Vrátí hodnotu PRAVDA, pokud je argument hodnota logická hodnota. +ISNA = JE.NEDEF ## Vrátí hodnotu PRAVDA, pokud je argument hodnota chybová hodnota #N/A. +ISNONTEXT = JE.NETEXT ## Vrátí hodnotu PRAVDA, pokud argument hodnota není text. +ISNUMBER = JE.ČÍSLO ## Vrátí hodnotu PRAVDA, pokud je argument hodnota číslo. +ISODD = ISODD ## Vrátí hodnotu PRAVDA, pokud je číslo liché. +ISREF = JE.ODKAZ ## Vrátí hodnotu PRAVDA, pokud je argument hodnota odkaz. +ISTEXT = JE.TEXT ## Vrátí hodnotu PRAVDA, pokud je argument hodnota text. +N = N ## Vrátí hodnotu převedenou na číslo. +NA = NEDEF ## Vrátí chybovou hodnotu #N/A. +TYPE = TYP ## Vrátí číslo označující datový typ hodnoty. + + +## +## Logical functions Logické funkce +## +AND = A ## Vrátí hodnotu PRAVDA, mají-li všechny argumenty hodnotu PRAVDA. +FALSE = NEPRAVDA ## Vrátí logickou hodnotu NEPRAVDA. +IF = KDYŽ ## Určí, který logický test má proběhnout. +IFERROR = IFERROR ## Pokud je vzorec vyhodnocen jako chyba, vrátí zadanou hodnotu. V opačném případě vrátí výsledek vzorce. +NOT = NE ## Provede logickou negaci argumentu funkce. +OR = NEBO ## Vrátí hodnotu PRAVDA, je-li alespoň jeden argument roven hodnotě PRAVDA. +TRUE = PRAVDA ## Vrátí logickou hodnotu PRAVDA. + + +## +## Lookup and reference functions Vyhledávací funkce +## +ADDRESS = ODKAZ ## Vrátí textový odkaz na jednu buňku listu. +AREAS = POČET.BLOKŮ ## Vrátí počet oblastí v odkazu. +CHOOSE = ZVOLIT ## Zvolí hodnotu ze seznamu hodnot. +COLUMN = SLOUPEC ## Vrátí číslo sloupce odkazu. +COLUMNS = SLOUPCE ## Vrátí počet sloupců v odkazu. +HLOOKUP = VVYHLEDAT ## Prohledá horní řádek matice a vrátí hodnotu určené buňky. +HYPERLINK = HYPERTEXTOVÝ.ODKAZ ## Vytvoří zástupce nebo odkaz, který otevře dokument uložený na síťovém serveru, v síti intranet nebo Internet. +INDEX = INDEX ## Pomocí rejstříku zvolí hodnotu z odkazu nebo matice. +INDIRECT = NEPŘÍMÝ.ODKAZ ## Vrátí odkaz určený textovou hodnotou. +LOOKUP = VYHLEDAT ## Vyhledá hodnoty ve vektoru nebo matici. +MATCH = POZVYHLEDAT ## Vyhledá hodnoty v odkazu nebo matici. +OFFSET = POSUN ## Vrátí posun odkazu od zadaného odkazu. +ROW = ŘÁDEK ## Vrátí číslo řádku odkazu. +ROWS = ŘÁDKY ## Vrátí počet řádků v odkazu. +RTD = RTD ## Načte data reálného času z programu, který podporuje automatizaci modelu COM (Automatizace: Způsob práce s objekty určité aplikace z jiné aplikace nebo nástroje pro vývoj. Automatizace (dříve nazývaná automatizace OLE) je počítačovým standardem a je funkcí modelu COM (Component Object Model).). +TRANSPOSE = TRANSPOZICE ## Vrátí transponovanou matici. +VLOOKUP = SVYHLEDAT ## Prohledá první sloupec matice, přesune kurzor v řádku a vrátí hodnotu buňky. + + +## +## Math and trigonometry functions Matematické a trigonometrické funkce +## +ABS = ABS ## Vrátí absolutní hodnotu čísla. +ACOS = ARCCOS ## Vrátí arkuskosinus čísla. +ACOSH = ARCCOSH ## Vrátí hyperbolický arkuskosinus čísla. +ASIN = ARCSIN ## Vrátí arkussinus čísla. +ASINH = ARCSINH ## Vrátí hyperbolický arkussinus čísla. +ATAN = ARCTG ## Vrátí arkustangens čísla. +ATAN2 = ARCTG2 ## Vrátí arkustangens x-ové a y-ové souřadnice. +ATANH = ARCTGH ## Vrátí hyperbolický arkustangens čísla. +CEILING = ZAOKR.NAHORU ## Zaokrouhlí číslo na nejbližší celé číslo nebo na nejbližší násobek zadané hodnoty. +COMBIN = KOMBINACE ## Vrátí počet kombinací pro daný počet položek. +COS = COS ## Vrátí kosinus čísla. +COSH = COSH ## Vrátí hyperbolický kosinus čísla. +DEGREES = DEGREES ## Převede radiány na stupně. +EVEN = ZAOKROUHLIT.NA.SUDÉ ## Zaokrouhlí číslo nahoru na nejbližší celé sudé číslo. +EXP = EXP ## Vrátí základ přirozeného logaritmu e umocněný na zadané číslo. +FACT = FAKTORIÁL ## Vrátí faktoriál čísla. +FACTDOUBLE = FACTDOUBLE ## Vrátí dvojitý faktoriál čísla. +FLOOR = ZAOKR.DOLŮ ## Zaokrouhlí číslo dolů, směrem k nule. +GCD = GCD ## Vrátí největší společný dělitel. +INT = CELÁ.ČÁST ## Zaokrouhlí číslo dolů na nejbližší celé číslo. +LCM = LCM ## Vrátí nejmenší společný násobek. +LN = LN ## Vrátí přirozený logaritmus čísla. +LOG = LOGZ ## Vrátí logaritmus čísla při zadaném základu. +LOG10 = LOG ## Vrátí dekadický logaritmus čísla. +MDETERM = DETERMINANT ## Vrátí determinant matice. +MINVERSE = INVERZE ## Vrátí inverzní matici. +MMULT = SOUČIN.MATIC ## Vrátí součin dvou matic. +MOD = MOD ## Vrátí zbytek po dělení. +MROUND = MROUND ## Vrátí číslo zaokrouhlené na požadovaný násobek. +MULTINOMIAL = MULTINOMIAL ## Vrátí mnohočlen z množiny čísel. +ODD = ZAOKROUHLIT.NA.LICHÉ ## Zaokrouhlí číslo nahoru na nejbližší celé liché číslo. +PI = PI ## Vrátí hodnotu čísla pí. +POWER = POWER ## Umocní číslo na zadanou mocninu. +PRODUCT = SOUČIN ## Vynásobí argumenty funkce. +QUOTIENT = QUOTIENT ## Vrátí celou část dělení. +RADIANS = RADIANS ## Převede stupně na radiány. +RAND = NÁHČÍSLO ## Vrátí náhodné číslo mezi 0 a 1. +RANDBETWEEN = RANDBETWEEN ## Vrátí náhodné číslo mezi zadanými čísly. +ROMAN = ROMAN ## Převede arabskou číslici na římskou ve formátu textu. +ROUND = ZAOKROUHLIT ## Zaokrouhlí číslo na zadaný počet číslic. +ROUNDDOWN = ROUNDDOWN ## Zaokrouhlí číslo dolů, směrem k nule. +ROUNDUP = ROUNDUP ## Zaokrouhlí číslo nahoru, směrem od nuly. +SERIESSUM = SERIESSUM ## Vrátí součet mocninné řady určené podle vzorce. +SIGN = SIGN ## Vrátí znaménko čísla. +SIN = SIN ## Vrátí sinus daného úhlu. +SINH = SINH ## Vrátí hyperbolický sinus čísla. +SQRT = ODMOCNINA ## Vrátí kladnou druhou odmocninu. +SQRTPI = SQRTPI ## Vrátí druhou odmocninu výrazu (číslo * pí). +SUBTOTAL = SUBTOTAL ## Vrátí souhrn v seznamu nebo databázi. +SUM = SUMA ## Sečte argumenty funkce. +SUMIF = SUMIF ## Sečte buňky vybrané podle zadaných kritérií. +SUMIFS = SUMIFS ## Sečte buňky určené více zadanými podmínkami. +SUMPRODUCT = SOUČIN.SKALÁRNÍ ## Vrátí součet součinů odpovídajících prvků matic. +SUMSQ = SUMA.ČTVERCŮ ## Vrátí součet čtverců argumentů. +SUMX2MY2 = SUMX2MY2 ## Vrátí součet rozdílu čtverců odpovídajících hodnot ve dvou maticích. +SUMX2PY2 = SUMX2PY2 ## Vrátí součet součtu čtverců odpovídajících hodnot ve dvou maticích. +SUMXMY2 = SUMXMY2 ## Vrátí součet čtverců rozdílů odpovídajících hodnot ve dvou maticích. +TAN = TGTG ## Vrátí tangens čísla. +TANH = TGH ## Vrátí hyperbolický tangens čísla. +TRUNC = USEKNOUT ## Zkrátí číslo na celé číslo. + + +## +## Statistical functions Statistické funkce +## +AVEDEV = PRŮMODCHYLKA ## Vrátí průměrnou hodnotu absolutních odchylek datových bodů od jejich střední hodnoty. +AVERAGE = PRŮMĚR ## Vrátí průměrnou hodnotu argumentů. +AVERAGEA = AVERAGEA ## Vrátí průměrnou hodnotu argumentů včetně čísel, textu a logických hodnot. +AVERAGEIF = AVERAGEIF ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk v oblasti, které vyhovují příslušné podmínce. +AVERAGEIFS = AVERAGEIFS ## Vrátí průměrnou hodnotu (aritmetický průměr) všech buněk vyhovujících několika podmínkám. +BETADIST = BETADIST ## Vrátí hodnotu součtového rozdělení beta. +BETAINV = BETAINV ## Vrátí inverzní hodnotu součtového rozdělení pro zadané rozdělení beta. +BINOMDIST = BINOMDIST ## Vrátí hodnotu binomického rozdělení pravděpodobnosti jednotlivých veličin. +CHIDIST = CHIDIST ## Vrátí jednostrannou pravděpodobnost rozdělení chí-kvadrát. +CHIINV = CHIINV ## Vrátí hodnotu funkce inverzní k distribuční funkci jednostranné pravděpodobnosti rozdělení chí-kvadrát. +CHITEST = CHITEST ## Vrátí test nezávislosti. +CONFIDENCE = CONFIDENCE ## Vrátí interval spolehlivosti pro střední hodnotu základního souboru. +CORREL = CORREL ## Vrátí korelační koeficient mezi dvěma množinami dat. +COUNT = POČET ## Vrátí počet čísel v seznamu argumentů. +COUNTA = POČET2 ## Vrátí počet hodnot v seznamu argumentů. +COUNTBLANK = COUNTBLANK ## Spočítá počet prázdných buněk v oblasti. +COUNTIF = COUNTIF ## Spočítá buňky v oblasti, které odpovídají zadaným kritériím. +COUNTIFS = COUNTIFS ## Spočítá buňky v oblasti, které odpovídají více kritériím. +COVAR = COVAR ## Vrátí hodnotu kovariance, průměrnou hodnotu součinů párových odchylek +CRITBINOM = CRITBINOM ## Vrátí nejmenší hodnotu, pro kterou má součtové binomické rozdělení hodnotu větší nebo rovnu hodnotě kritéria. +DEVSQ = DEVSQ ## Vrátí součet čtverců odchylek. +EXPONDIST = EXPONDIST ## Vrátí hodnotu exponenciálního rozdělení. +FDIST = FDIST ## Vrátí hodnotu rozdělení pravděpodobnosti F. +FINV = FINV ## Vrátí hodnotu inverzní funkce k distribuční funkci rozdělení F. +FISHER = FISHER ## Vrátí hodnotu Fisherovy transformace. +FISHERINV = FISHERINV ## Vrátí hodnotu inverzní funkce k Fisherově transformaci. +FORECAST = FORECAST ## Vrátí hodnotu lineárního trendu. +FREQUENCY = ČETNOSTI ## Vrátí četnost rozdělení jako svislou matici. +FTEST = FTEST ## Vrátí výsledek F-testu. +GAMMADIST = GAMMADIST ## Vrátí hodnotu rozdělení gama. +GAMMAINV = GAMMAINV ## Vrátí hodnotu inverzní funkce k distribuční funkci součtového rozdělení gama. +GAMMALN = GAMMALN ## Vrátí přirozený logaritmus funkce gama, Γ(x). +GEOMEAN = GEOMEAN ## Vrátí geometrický průměr. +GROWTH = LOGLINTREND ## Vrátí hodnoty exponenciálního trendu. +HARMEAN = HARMEAN ## Vrátí harmonický průměr. +HYPGEOMDIST = HYPGEOMDIST ## Vrátí hodnotu hypergeometrického rozdělení. +INTERCEPT = INTERCEPT ## Vrátí úsek lineární regresní čáry. +KURT = KURT ## Vrátí hodnotu excesu množiny dat. +LARGE = LARGE ## Vrátí k-tou největší hodnotu množiny dat. +LINEST = LINREGRESE ## Vrátí parametry lineárního trendu. +LOGEST = LOGLINREGRESE ## Vrátí parametry exponenciálního trendu. +LOGINV = LOGINV ## Vrátí inverzní funkci k distribuční funkci logaritmicko-normálního rozdělení. +LOGNORMDIST = LOGNORMDIST ## Vrátí hodnotu součtového logaritmicko-normálního rozdělení. +MAX = MAX ## Vrátí maximální hodnotu seznamu argumentů. +MAXA = MAXA ## Vrátí maximální hodnotu seznamu argumentů včetně čísel, textu a logických hodnot. +MEDIAN = MEDIAN ## Vrátí střední hodnotu zadaných čísel. +MIN = MIN ## Vrátí minimální hodnotu seznamu argumentů. +MINA = MINA ## Vrátí nejmenší hodnotu v seznamu argumentů včetně čísel, textu a logických hodnot. +MODE = MODE ## Vrátí hodnotu, která se v množině dat vyskytuje nejčastěji. +NEGBINOMDIST = NEGBINOMDIST ## Vrátí hodnotu negativního binomického rozdělení. +NORMDIST = NORMDIST ## Vrátí hodnotu normálního součtového rozdělení. +NORMINV = NORMINV ## Vrátí inverzní funkci k funkci normálního součtového rozdělení. +NORMSDIST = NORMSDIST ## Vrátí hodnotu standardního normálního součtového rozdělení. +NORMSINV = NORMSINV ## Vrátí inverzní funkci k funkci standardního normálního součtového rozdělení. +PEARSON = PEARSON ## Vrátí Pearsonův výsledný momentový korelační koeficient. +PERCENTILE = PERCENTIL ## Vrátí hodnotu k-tého percentilu hodnot v oblasti. +PERCENTRANK = PERCENTRANK ## Vrátí pořadí hodnoty v množině dat vyjádřené procentuální částí množiny dat. +PERMUT = PERMUTACE ## Vrátí počet permutací pro zadaný počet objektů. +POISSON = POISSON ## Vrátí hodnotu distribuční funkce Poissonova rozdělení. +PROB = PROB ## Vrátí pravděpodobnost výskytu hodnot v oblasti mezi dvěma mezními hodnotami. +QUARTILE = QUARTIL ## Vrátí hodnotu kvartilu množiny dat. +RANK = RANK ## Vrátí pořadí čísla v seznamu čísel. +RSQ = RKQ ## Vrátí druhou mocninu Pearsonova výsledného momentového korelačního koeficientu. +SKEW = SKEW ## Vrátí zešikmení rozdělení. +SLOPE = SLOPE ## Vrátí směrnici lineární regresní čáry. +SMALL = SMALL ## Vrátí k-tou nejmenší hodnotu množiny dat. +STANDARDIZE = STANDARDIZE ## Vrátí normalizovanou hodnotu. +STDEV = SMODCH.VÝBĚR ## Vypočte směrodatnou odchylku výběru. +STDEVA = STDEVA ## Vypočte směrodatnou odchylku výběru včetně čísel, textu a logických hodnot. +STDEVP = SMODCH ## Vypočte směrodatnou odchylku základního souboru. +STDEVPA = STDEVPA ## Vypočte směrodatnou odchylku základního souboru včetně čísel, textu a logických hodnot. +STEYX = STEYX ## Vrátí standardní chybu předpovězené hodnoty y pro každou hodnotu x v regresi. +TDIST = TDIST ## Vrátí hodnotu Studentova t-rozdělení. +TINV = TINV ## Vrátí inverzní funkci k distribuční funkci Studentova t-rozdělení. +TREND = LINTREND ## Vrátí hodnoty lineárního trendu. +TRIMMEAN = TRIMMEAN ## Vrátí střední hodnotu vnitřní části množiny dat. +TTEST = TTEST ## Vrátí pravděpodobnost spojenou se Studentovým t-testem. +VAR = VAR.VÝBĚR ## Vypočte rozptyl výběru. +VARA = VARA ## Vypočte rozptyl výběru včetně čísel, textu a logických hodnot. +VARP = VAR ## Vypočte rozptyl základního souboru. +VARPA = VARPA ## Vypočte rozptyl základního souboru včetně čísel, textu a logických hodnot. +WEIBULL = WEIBULL ## Vrátí hodnotu Weibullova rozdělení. +ZTEST = ZTEST ## Vrátí jednostrannou P-hodnotu z-testu. + + +## +## Text functions Textové funkce +## +ASC = ASC ## Změní znaky s plnou šířkou (dvoubajtové)v řetězci znaků na znaky s poloviční šířkou (jednobajtové). +BAHTTEXT = BAHTTEXT ## Převede číslo na text ve formátu, měny ß (baht). +CHAR = ZNAK ## Vrátí znak určený číslem kódu. +CLEAN = VYČISTIT ## Odebere z textu všechny netisknutelné znaky. +CODE = KÓD ## Vrátí číselný kód prvního znaku zadaného textového řetězce. +CONCATENATE = CONCATENATE ## Spojí několik textových položek do jedné. +DOLLAR = KČ ## Převede číslo na text ve formátu měny Kč (česká koruna). +EXACT = STEJNÉ ## Zkontroluje, zda jsou dvě textové hodnoty shodné. +FIND = NAJÍT ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). +FINDB = FINDB ## Nalezne textovou hodnotu uvnitř jiné (rozlišuje malá a velká písmena). +FIXED = ZAOKROUHLIT.NA.TEXT ## Zformátuje číslo jako text s pevným počtem desetinných míst. +JIS = JIS ## Změní znaky s poloviční šířkou (jednobajtové) v řetězci znaků na znaky s plnou šířkou (dvoubajtové). +LEFT = ZLEVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. +LEFTB = LEFTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vlevo. +LEN = DÉLKA ## Vrátí počet znaků textového řetězce. +LENB = LENB ## Vrátí počet znaků textového řetězce. +LOWER = MALÁ ## Převede text na malá písmena. +MID = ČÁST ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. +MIDB = MIDB ## Vrátí určitý počet znaků textového řetězce počínaje zadaným místem. +PHONETIC = ZVUKOVÉ ## Extrahuje fonetické znaky (furigana) z textového řetězce. +PROPER = VELKÁ2 ## Převede první písmeno každého slova textové hodnoty na velké. +REPLACE = NAHRADIT ## Nahradí znaky uvnitř textu. +REPLACEB = NAHRADITB ## Nahradí znaky uvnitř textu. +REPT = OPAKOVAT ## Zopakuje text podle zadaného počtu opakování. +RIGHT = ZPRAVA ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. +RIGHTB = RIGHTB ## Vrátí první znaky textové hodnoty umístěné nejvíce vpravo. +SEARCH = HLEDAT ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). +SEARCHB = SEARCHB ## Nalezne textovou hodnotu uvnitř jiné (malá a velká písmena nejsou rozlišována). +SUBSTITUTE = DOSADIT ## V textovém řetězci nahradí starý text novým. +T = T ## Převede argumenty na text. +TEXT = HODNOTA.NA.TEXT ## Zformátuje číslo a převede ho na text. +TRIM = PROČISTIT ## Odstraní z textu mezery. +UPPER = VELKÁ ## Převede text na velká písmena. +VALUE = HODNOTA ## Převede textový argument na číslo. diff --git a/assets/excel/PHPExcel/locale/da/config b/assets/excel/PHPExcel/locale/da/config new file mode 100644 index 0000000..ae59003 --- /dev/null +++ b/assets/excel/PHPExcel/locale/da/config @@ -0,0 +1,48 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = kr + + + +## +## Excel Error Codes (For future use) +## +NULL = #NUL! +DIV0 = #DIVISION/0! +VALUE = #VÆRDI! +REF = #REFERENCE! +NAME = #NAVN? +NUM = #NUM! +NA = #I/T diff --git a/assets/excel/PHPExcel/locale/da/functions b/assets/excel/PHPExcel/locale/da/functions new file mode 100644 index 0000000..26e0310 --- /dev/null +++ b/assets/excel/PHPExcel/locale/da/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Tilføjelsesprogram- og automatiseringsfunktioner +## +GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data, der er lagret i en pivottabelrapport + + +## +## Cube functions Kubefunktioner +## +CUBEKPIMEMBER = KUBE.KPI.MEDLEM ## Returnerer navn, egenskab og mål for en KPI-indikator og viser navnet og egenskaben i cellen. En KPI-indikator er en målbar størrelse, f.eks. bruttooverskud pr. måned eller personaleudskiftning pr. kvartal, der bruges til at overvåge en organisations præstationer. +CUBEMEMBER = KUBE.MEDLEM ## Returnerer et medlem eller en tupel fra kubehierarkiet. Bruges til at validere, om et medlem eller en tupel findes i kuben. +CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB ## Returnerer værdien af en egenskab for et medlem i kuben. Bruges til at validere, om et medlemsnavn findes i kuben, og returnere den angivne egenskab for medlemmet. +CUBERANKEDMEMBER = KUBEMEDLEM.RANG ## Returnerer det n'te eller rangordnede medlem i et sæt. Bruges til at returnere et eller flere elementer i et sæt, f.eks. topsælgere eller de 10 bedste elever. +CUBESET = KUBESÆT ## Definerer et beregnet sæt medlemmer eller tupler ved at sende et sætudtryk til kuben på serveren, som opretter sættet og returnerer det til Microsoft Office Excel. +CUBESETCOUNT = KUBESÆT.TÆL ## Returnerer antallet af elementer i et sæt. +CUBEVALUE = KUBEVÆRDI ## Returnerer en sammenlagt (aggregeret) værdi fra en kube. + + +## +## Database functions Databasefunktioner +## +DAVERAGE = DMIDDEL ## Returnerer gennemsnittet af markerede databaseposter +DCOUNT = DTÆL ## Tæller de celler, der indeholder tal, i en database +DCOUNTA = DTÆLV ## Tæller udfyldte celler i en database +DGET = DHENT ## Uddrager en enkelt post, der opfylder de angivne kriterier, fra en database +DMAX = DMAKS ## Returnerer den største værdi blandt markerede databaseposter +DMIN = DMIN ## Returnerer den mindste værdi blandt markerede databaseposter +DPRODUCT = DPRODUKT ## Ganger værdierne i et bestemt felt med poster, der opfylder kriterierne i en database +DSTDEV = DSTDAFV ## Beregner et skøn over standardafvigelsen baseret på en stikprøve af markerede databaseposter +DSTDEVP = DSTDAFVP ## Beregner standardafvigelsen baseret på hele populationen af markerede databaseposter +DSUM = DSUM ## Sammenlægger de tal i feltkolonnen i databasen, der opfylder kriterierne +DVAR = DVARIANS ## Beregner varians baseret på en stikprøve af markerede databaseposter +DVARP = DVARIANSP ## Beregner varians baseret på hele populationen af markerede databaseposter + + +## +## Date and time functions Dato- og klokkeslætsfunktioner +## +DATE = DATO ## Returnerer serienummeret for en bestemt dato +DATEVALUE = DATOVÆRDI ## Konverterer en dato i form af tekst til et serienummer +DAY = DAG ## Konverterer et serienummer til en dag i måneden +DAYS360 = DAGE360 ## Beregner antallet af dage mellem to datoer på grundlag af et år med 360 dage +EDATE = EDATO ## Returnerer serienummeret for den dato, der ligger det angivne antal måneder før eller efter startdatoen +EOMONTH = SLUT.PÅ.MÅNED ## Returnerer serienummeret på den sidste dag i måneden før eller efter et angivet antal måneder +HOUR = TIME ## Konverterer et serienummer til en time +MINUTE = MINUT ## Konverterer et serienummer til et minut +MONTH = MÅNED ## Konverterer et serienummer til en måned +NETWORKDAYS = ANTAL.ARBEJDSDAGE ## Returnerer antallet af hele arbejdsdage mellem to datoer +NOW = NU ## Returnerer serienummeret for den aktuelle dato eller det aktuelle klokkeslæt +SECOND = SEKUND ## Konverterer et serienummer til et sekund +TIME = KLOKKESLÆT ## Returnerer serienummeret for et bestemt klokkeslæt +TIMEVALUE = TIDSVÆRDI ## Konverterer et klokkeslæt i form af tekst til et serienummer +TODAY = IDAG ## Returnerer serienummeret for dags dato +WEEKDAY = UGEDAG ## Konverterer et serienummer til en ugedag +WEEKNUM = UGE.NR ## Konverterer et serienummer til et tal, der angiver ugenummeret i året +WORKDAY = ARBEJDSDAG ## Returnerer serienummeret for dagen før eller efter det angivne antal arbejdsdage +YEAR = ÅR ## Konverterer et serienummer til et år +YEARFRAC = ÅR.BRØK ## Returnerer årsbrøken, der repræsenterer antallet af hele dage mellem startdato og slutdato + + +## +## Engineering functions Tekniske funktioner +## +BESSELI = BESSELI ## Returnerer den modificerede Bessel-funktion In(x) +BESSELJ = BESSELJ ## Returnerer Bessel-funktionen Jn(x) +BESSELK = BESSELK ## Returnerer den modificerede Bessel-funktion Kn(x) +BESSELY = BESSELY ## Returnerer Bessel-funktionen Yn(x) +BIN2DEC = BIN.TIL.DEC ## Konverterer et binært tal til et decimaltal +BIN2HEX = BIN.TIL.HEX ## Konverterer et binært tal til et heksadecimalt tal +BIN2OCT = BIN.TIL.OKT ## Konverterer et binært tal til et oktaltal. +COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koefficienter til et komplekst tal +CONVERT = KONVERTER ## Konverterer et tal fra én måleenhed til en anden +DEC2BIN = DEC.TIL.BIN ## Konverterer et decimaltal til et binært tal +DEC2HEX = DEC.TIL.HEX ## Konverterer et decimaltal til et heksadecimalt tal +DEC2OCT = DEC.TIL.OKT ## Konverterer et decimaltal til et oktaltal +DELTA = DELTA ## Tester, om to værdier er ens +ERF = FEJLFUNK ## Returner fejlfunktionen +ERFC = FEJLFUNK.KOMP ## Returnerer den komplementære fejlfunktion +GESTEP = GETRIN ## Tester, om et tal er større end en grænseværdi +HEX2BIN = HEX.TIL.BIN ## Konverterer et heksadecimalt tal til et binært tal +HEX2DEC = HEX.TIL.DEC ## Konverterer et decimaltal til et heksadecimalt tal +HEX2OCT = HEX.TIL.OKT ## Konverterer et heksadecimalt tal til et oktaltal +IMABS = IMAGABS ## Returnerer den absolutte værdi (modulus) for et komplekst tal +IMAGINARY = IMAGINÆR ## Returnerer den imaginære koefficient for et komplekst tal +IMARGUMENT = IMAGARGUMENT ## Returnerer argumentet theta, en vinkel udtrykt i radianer +IMCONJUGATE = IMAGKONJUGERE ## Returnerer den komplekse konjugation af et komplekst tal +IMCOS = IMAGCOS ## Returnerer et komplekst tals cosinus +IMDIV = IMAGDIV ## Returnerer kvotienten for to komplekse tal +IMEXP = IMAGEKSP ## Returnerer et komplekst tals eksponentialfunktion +IMLN = IMAGLN ## Returnerer et komplekst tals naturlige logaritme +IMLOG10 = IMAGLOG10 ## Returnerer et komplekst tals sædvanlige logaritme (titalslogaritme) +IMLOG2 = IMAGLOG2 ## Returnerer et komplekst tals sædvanlige logaritme (totalslogaritme) +IMPOWER = IMAGPOTENS ## Returnerer et komplekst tal opløftet i en heltalspotens +IMPRODUCT = IMAGPRODUKT ## Returnerer produktet af komplekse tal +IMREAL = IMAGREELT ## Returnerer den reelle koefficient for et komplekst tal +IMSIN = IMAGSIN ## Returnerer et komplekst tals sinus +IMSQRT = IMAGKVROD ## Returnerer et komplekst tals kvadratrod +IMSUB = IMAGSUB ## Returnerer forskellen mellem to komplekse tal +IMSUM = IMAGSUM ## Returnerer summen af komplekse tal +OCT2BIN = OKT.TIL.BIN ## Konverterer et oktaltal til et binært tal +OCT2DEC = OKT.TIL.DEC ## Konverterer et oktaltal til et decimaltal +OCT2HEX = OKT.TIL.HEX ## Konverterer et oktaltal til et heksadecimalt tal + + +## +## Financial functions Finansielle funktioner +## +ACCRINT = PÅLØBRENTE ## Returnerer den påløbne rente for et værdipapir med periodiske renteudbetalinger +ACCRINTM = PÅLØBRENTE.UDLØB ## Returnerer den påløbne rente for et værdipapir, hvor renteudbetalingen finder sted ved papirets udløb +AMORDEGRC = AMORDEGRC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode ved hjælp af en afskrivningskoefficient +AMORLINC = AMORLINC ## Returnerer afskrivningsbeløbet for hver regnskabsperiode +COUPDAYBS = KUPONDAGE.SA ## Returnerer antallet af dage fra starten af kuponperioden til afregningsdatoen +COUPDAYS = KUPONDAGE.A ## Returnerer antallet af dage fra begyndelsen af kuponperioden til afregningsdatoen +COUPDAYSNC = KUPONDAGE.ANK ## Returnerer antallet af dage i den kuponperiode, der indeholder afregningsdatoen +COUPNCD = KUPONDAG.NÆSTE ## Returnerer den næste kupondato efter afregningsdatoen +COUPNUM = KUPONBETALINGER ## Returnerer antallet af kuponudbetalinger mellem afregnings- og udløbsdatoen +COUPPCD = KUPONDAG.FORRIGE ## Returnerer den forrige kupondato før afregningsdatoen +CUMIPMT = AKKUM.RENTE ## Returnerer den akkumulerede rente, der betales på et lån mellem to perioder +CUMPRINC = AKKUM.HOVEDSTOL ## Returnerer den akkumulerede nedbringelse af hovedstol mellem to perioder +DB = DB ## Returnerer afskrivningen på et aktiv i en angivet periode ved anvendelse af saldometoden +DDB = DSA ## Returnerer afskrivningsbeløbet for et aktiv over en bestemt periode ved anvendelse af dobbeltsaldometoden eller en anden afskrivningsmetode, som du angiver +DISC = DISKONTO ## Returnerer et værdipapirs diskonto +DOLLARDE = KR.DECIMAL ## Konverterer en kronepris udtrykt som brøk til en kronepris udtrykt som decimaltal +DOLLARFR = KR.BRØK ## Konverterer en kronepris udtrykt som decimaltal til en kronepris udtrykt som brøk +DURATION = VARIGHED ## Returnerer den årlige løbetid for et værdipapir med periodiske renteudbetalinger +EFFECT = EFFEKTIV.RENTE ## Returnerer den årlige effektive rente +FV = FV ## Returnerer fremtidsværdien af en investering +FVSCHEDULE = FVTABEL ## Returnerer den fremtidige værdi af en hovedstol, når der er tilskrevet rente og rentes rente efter forskellige rentesatser +INTRATE = RENTEFOD ## Returnerer renten på et fuldt ud investeret værdipapir +IPMT = R.YDELSE ## Returnerer renten fra en investering for en given periode +IRR = IA ## Returnerer den interne rente for en række pengestrømme +ISPMT = ISPMT ## Beregner den betalte rente i løbet af en bestemt investeringsperiode +MDURATION = MVARIGHED ## Returnerer Macauleys modificerede løbetid for et værdipapir med en formodet pari på kr. 100 +MIRR = MIA ## Returnerer den interne forrentning, hvor positive og negative pengestrømme finansieres til forskellig rente +NOMINAL = NOMINEL ## Returnerer den årlige nominelle rente +NPER = NPER ## Returnerer antallet af perioder for en investering +NPV = NUTIDSVÆRDI ## Returnerer nettonutidsværdien for en investering baseret på en række periodiske pengestrømme og en diskonteringssats +ODDFPRICE = ULIGE.KURS.PÅLYDENDE ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med en ulige (kort eller lang) første periode +ODDFYIELD = ULIGE.FØRSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige første periode +ODDLPRICE = ULIGE.SIDSTE.KURS ## Returnerer kursen pr. kr. 100 nominel værdi for et værdipapir med ulige sidste periode +ODDLYIELD = ULIGE.SIDSTE.AFKAST ## Returnerer afkastet for et værdipapir med ulige sidste periode +PMT = YDELSE ## Returnerer renten fra en investering for en given periode +PPMT = H.YDELSE ## Returnerer ydelsen på hovedstolen for en investering i en given periode +PRICE = KURS ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir med periodiske renteudbetalinger +PRICEDISC = KURS.DISKONTO ## Returnerer kursen pr. kr 100 nominel værdi for et diskonteret værdipapir +PRICEMAT = KURS.UDLØB ## Returnerer kursen pr. kr 100 nominel værdi for et værdipapir, hvor renten udbetales ved papirets udløb +PV = NV ## Returnerer den nuværende værdi af en investering +RATE = RENTE ## Returnerer renten i hver periode for en annuitet +RECEIVED = MODTAGET.VED.UDLØB ## Returnerer det beløb, der modtages ved udløbet af et fuldt ud investeret værdipapir +SLN = LA ## Returnerer den lineære afskrivning for et aktiv i en enkelt periode +SYD = ÅRSAFSKRIVNING ## Returnerer den årlige afskrivning på et aktiv i en bestemt periode +TBILLEQ = STATSOBLIGATION ## Returnerer det obligationsækvivalente afkast for en statsobligation +TBILLPRICE = STATSOBLIGATION.KURS ## Returnerer kursen pr. kr 100 nominel værdi for en statsobligation +TBILLYIELD = STATSOBLIGATION.AFKAST ## Returnerer en afkastet på en statsobligation +VDB = VSA ## Returnerer afskrivningen på et aktiv i en angivet periode, herunder delperioder, ved brug af dobbeltsaldometoden +XIRR = INTERN.RENTE ## Returnerer den interne rente for en plan over pengestrømme, der ikke behøver at være periodiske +XNPV = NETTO.NUTIDSVÆRDI ## Returnerer nutidsværdien for en plan over pengestrømme, der ikke behøver at være periodiske +YIELD = AFKAST ## Returnerer afkastet for et værdipapir med periodiske renteudbetalinger +YIELDDISC = AFKAST.DISKONTO ## Returnerer det årlige afkast for et diskonteret værdipapir, f.eks. en statsobligation +YIELDMAT = AFKAST.UDLØBSDATO ## Returnerer det årlige afkast for et værdipapir, hvor renten udbetales ved papirets udløb + + +## +## Information functions Informationsfunktioner +## +CELL = CELLE ## Returnerer oplysninger om formatering, placering eller indhold af en celle +ERROR.TYPE = FEJLTYPE ## Returnerer et tal, der svarer til en fejltype +INFO = INFO ## Returnerer oplysninger om det aktuelle operativmiljø +ISBLANK = ER.TOM ## Returnerer SAND, hvis værdien er tom +ISERR = ER.FJL ## Returnerer SAND, hvis værdien er en fejlværdi undtagen #I/T +ISERROR = ER.FEJL ## Returnerer SAND, hvis værdien er en fejlværdi +ISEVEN = ER.LIGE ## Returnerer SAND, hvis tallet er lige +ISLOGICAL = ER.LOGISK ## Returnerer SAND, hvis værdien er en logisk værdi +ISNA = ER.IKKE.TILGÆNGELIG ## Returnerer SAND, hvis værdien er fejlværdien #I/T +ISNONTEXT = ER.IKKE.TEKST ## Returnerer SAND, hvis værdien ikke er tekst +ISNUMBER = ER.TAL ## Returnerer SAND, hvis værdien er et tal +ISODD = ER.ULIGE ## Returnerer SAND, hvis tallet er ulige +ISREF = ER.REFERENCE ## Returnerer SAND, hvis værdien er en reference +ISTEXT = ER.TEKST ## Returnerer SAND, hvis værdien er tekst +N = TAL ## Returnerer en værdi konverteret til et tal +NA = IKKE.TILGÆNGELIG ## Returnerer fejlværdien #I/T +TYPE = VÆRDITYPE ## Returnerer et tal, der angiver datatypen for en værdi + + +## +## Logical functions Logiske funktioner +## +AND = OG ## Returnerer SAND, hvis alle argumenterne er sande +FALSE = FALSK ## Returnerer den logiske værdi FALSK +IF = HVIS ## Angiver en logisk test, der skal udføres +IFERROR = HVIS.FEJL ## Returnerer en værdi, du angiver, hvis en formel evauleres som en fejl. Returnerer i modsat fald resultatet af formlen +NOT = IKKE ## Vender argumentets logik om +OR = ELLER ## Returneret værdien SAND, hvis mindst ét argument er sandt +TRUE = SAND ## Returnerer den logiske værdi SAND + + +## +## Lookup and reference functions Opslags- og referencefunktioner +## +ADDRESS = ADRESSE ## Returnerer en reference som tekst til en enkelt celle i et regneark +AREAS = OMRÅDER ## Returnerer antallet af områder i en reference +CHOOSE = VÆLG ## Vælger en værdi på en liste med værdier +COLUMN = KOLONNE ## Returnerer kolonnenummeret i en reference +COLUMNS = KOLONNER ## Returnerer antallet af kolonner i en reference +HLOOKUP = VOPSLAG ## Søger i den øverste række af en matrix og returnerer værdien af den angivne celle +HYPERLINK = HYPERLINK ## Opretter en genvej kaldet et hyperlink, der åbner et dokument, som er lagret på en netværksserver, på et intranet eller på internettet +INDEX = INDEKS ## Anvender et indeks til at vælge en værdi fra en reference eller en matrix +INDIRECT = INDIREKTE ## Returnerer en reference, der er angivet af en tekstværdi +LOOKUP = SLÅ.OP ## Søger værdier i en vektor eller en matrix +MATCH = SAMMENLIGN ## Søger værdier i en reference eller en matrix +OFFSET = FORSKYDNING ## Returnerer en reference forskudt i forhold til en given reference +ROW = RÆKKE ## Returnerer rækkenummeret for en reference +ROWS = RÆKKER ## Returnerer antallet af rækker i en reference +RTD = RTD ## Henter realtidsdata fra et program, der understøtter COM-automatisering (Automation: En metode til at arbejde med objekter fra et andet program eller udviklingsværktøj. Automation, som tidligere blev kaldt OLE Automation, er en industristandard og en funktion i COM (Component Object Model).) +TRANSPOSE = TRANSPONER ## Returnerer en transponeret matrix +VLOOKUP = LOPSLAG ## Søger i øverste række af en matrix og flytter på tværs af rækken for at returnere en celleværdi + + +## +## Math and trigonometry functions Matematiske og trigonometriske funktioner +## +ABS = ABS ## Returnerer den absolutte værdi af et tal +ACOS = ARCCOS ## Returnerer et tals arcus cosinus +ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus af tal +ASIN = ARCSIN ## Returnerer et tals arcus sinus +ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus for tal +ATAN = ARCTAN ## Returnerer et tals arcus tangens +ATAN2 = ARCTAN2 ## Returnerer de angivne x- og y-koordinaters arcus tangens +ATANH = ARCTANH ## Returnerer et tals inverse hyperbolske tangens +CEILING = AFRUND.LOFT ## Afrunder et tal til nærmeste heltal eller til nærmeste multiplum af betydning +COMBIN = KOMBIN ## Returnerer antallet af kombinationer for et givet antal objekter +COS = COS ## Returnerer et tals cosinus +COSH = COSH ## Returnerer den inverse hyperbolske cosinus af et tal +DEGREES = GRADER ## Konverterer radianer til grader +EVEN = LIGE ## Runder et tal op til nærmeste lige heltal +EXP = EKSP ## Returnerer e opløftet til en potens af et angivet tal +FACT = FAKULTET ## Returnerer et tals fakultet +FACTDOUBLE = DOBBELT.FAKULTET ## Returnerer et tals dobbelte fakultet +FLOOR = AFRUND.GULV ## Runder et tal ned mod nul +GCD = STØRSTE.FÆLLES.DIVISOR ## Returnerer den største fælles divisor +INT = HELTAL ## Nedrunder et tal til det nærmeste heltal +LCM = MINDSTE.FÆLLES.MULTIPLUM ## Returnerer det mindste fælles multiplum +LN = LN ## Returnerer et tals naturlige logaritme +LOG = LOG ## Returnerer logaritmen for et tal på grundlag af et angivet grundtal +LOG10 = LOG10 ## Returnerer titalslogaritmen af et tal +MDETERM = MDETERM ## Returnerer determinanten for en matrix +MINVERSE = MINVERT ## Returnerer den inverse matrix for en matrix +MMULT = MPRODUKT ## Returnerer matrixproduktet af to matrixer +MOD = REST ## Returnerer restværdien fra division +MROUND = MAFRUND ## Returnerer et tal afrundet til det ønskede multiplum +MULTINOMIAL = MULTINOMIAL ## Returnerer et multinomialt talsæt +ODD = ULIGE ## Runder et tal op til nærmeste ulige heltal +PI = PI ## Returnerer værdien af pi +POWER = POTENS ## Returnerer resultatet af et tal opløftet til en potens +PRODUCT = PRODUKT ## Multiplicerer argumenterne +QUOTIENT = KVOTIENT ## Returnerer heltalsdelen ved division +RADIANS = RADIANER ## Konverterer grader til radianer +RAND = SLUMP ## Returnerer et tilfældigt tal mellem 0 og 1 +RANDBETWEEN = SLUMP.MELLEM ## Returnerer et tilfældigt tal mellem de tal, der angives +ROMAN = ROMERTAL ## Konverterer et arabertal til romertal som tekst +ROUND = AFRUND ## Afrunder et tal til et angivet antal decimaler +ROUNDDOWN = RUND.NED ## Runder et tal ned mod nul +ROUNDUP = RUND.OP ## Runder et tal op, væk fra 0 (nul) +SERIESSUM = SERIESUM ## Returnerer summen af en potensserie baseret på en formel +SIGN = FORTEGN ## Returnerer et tals fortegn +SIN = SIN ## Returnerer en given vinkels sinusværdi +SINH = SINH ## Returnerer den hyperbolske sinus af et tal +SQRT = KVROD ## Returnerer en positiv kvadratrod +SQRTPI = KVRODPI ## Returnerer kvadratroden af (tal * pi;) +SUBTOTAL = SUBTOTAL ## Returnerer en subtotal på en liste eller i en database +SUM = SUM ## Lægger argumenterne sammen +SUMIF = SUM.HVIS ## Lægger de celler sammen, der er specificeret af et givet kriterium. +SUMIFS = SUM.HVISER ## Lægger de celler i et område sammen, der opfylder flere kriterier. +SUMPRODUCT = SUMPRODUKT ## Returnerer summen af produkter af ens matrixkomponenter +SUMSQ = SUMKV ## Returnerer summen af argumenternes kvadrater +SUMX2MY2 = SUMX2MY2 ## Returnerer summen af differensen mellem kvadrater af ens værdier i to matrixer +SUMX2PY2 = SUMX2PY2 ## Returnerer summen af summen af kvadrater af tilsvarende værdier i to matrixer +SUMXMY2 = SUMXMY2 ## Returnerer summen af kvadrater af differenser mellem ens værdier i to matrixer +TAN = TAN ## Returnerer et tals tangens +TANH = TANH ## Returnerer et tals hyperbolske tangens +TRUNC = AFKORT ## Afkorter et tal til et heltal + + +## +## Statistical functions Statistiske funktioner +## +AVEDEV = MAD ## Returnerer den gennemsnitlige numeriske afvigelse fra stikprøvens middelværdi +AVERAGE = MIDDEL ## Returnerer middelværdien af argumenterne +AVERAGEA = MIDDELV ## Returnerer middelværdien af argumenterne og medtager tal, tekst og logiske værdier +AVERAGEIF = MIDDEL.HVIS ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder et givet kriterium, i et område +AVERAGEIFS = MIDDEL.HVISER ## Returnerer gennemsnittet (den aritmetiske middelværdi) af alle de celler, der opfylder flere kriterier. +BETADIST = BETAFORDELING ## Returnerer den kumulative betafordelingsfunktion +BETAINV = BETAINV ## Returnerer den inverse kumulative fordelingsfunktion for en angivet betafordeling +BINOMDIST = BINOMIALFORDELING ## Returnerer punktsandsynligheden for binomialfordelingen +CHIDIST = CHIFORDELING ## Returnerer fraktilsandsynligheden for en chi2-fordeling +CHIINV = CHIINV ## Returnerer den inverse fraktilsandsynlighed for en chi2-fordeling +CHITEST = CHITEST ## Foretager en test for uafhængighed +CONFIDENCE = KONFIDENSINTERVAL ## Returnerer et konfidensinterval for en population +CORREL = KORRELATION ## Returnerer korrelationskoefficienten mellem to datasæt +COUNT = TÆL ## Tæller antallet af tal på en liste med argumenter +COUNTA = TÆLV ## Tæller antallet af værdier på en liste med argumenter +COUNTBLANK = ANTAL.BLANKE ## Tæller antallet af tomme celler i et område +COUNTIF = TÆLHVIS ## Tæller antallet af celler, som opfylder de givne kriterier, i et område +COUNTIFS = TÆL.HVISER ## Tæller antallet af de celler, som opfylder flere kriterier, i et område +COVAR = KOVARIANS ## Beregner kovariansen mellem to stokastiske variabler +CRITBINOM = KRITBINOM ## Returnerer den mindste værdi for x, for hvilken det gælder, at fordelingsfunktionen er mindre end eller lig med kriterieværdien. +DEVSQ = SAK ## Returnerer summen af de kvadrerede afvigelser fra middelværdien +EXPONDIST = EKSPFORDELING ## Returnerer eksponentialfordelingen +FDIST = FFORDELING ## Returnerer fraktilsandsynligheden for F-fordelingen +FINV = FINV ## Returnerer den inverse fraktilsandsynlighed for F-fordelingen +FISHER = FISHER ## Returnerer Fisher-transformationen +FISHERINV = FISHERINV ## Returnerer den inverse Fisher-transformation +FORECAST = PROGNOSE ## Returnerer en prognoseværdi baseret på lineær tendens +FREQUENCY = FREKVENS ## Returnerer en frekvensfordeling i en søjlevektor +FTEST = FTEST ## Returnerer resultatet af en F-test til sammenligning af varians +GAMMADIST = GAMMAFORDELING ## Returnerer fordelingsfunktionen for gammafordelingen +GAMMAINV = GAMMAINV ## Returnerer den inverse fordelingsfunktion for gammafordelingen +GAMMALN = GAMMALN ## Returnerer den naturlige logaritme til gammafordelingen, G(x) +GEOMEAN = GEOMIDDELVÆRDI ## Returnerer det geometriske gennemsnit +GROWTH = FORØGELSE ## Returnerer værdier langs en eksponentiel tendens +HARMEAN = HARMIDDELVÆRDI ## Returnerer det harmoniske gennemsnit +HYPGEOMDIST = HYPGEOFORDELING ## Returnerer punktsandsynligheden i en hypergeometrisk fordeling +INTERCEPT = SKÆRING ## Returnerer afskæringsværdien på y-aksen i en lineær regression +KURT = TOPSTEJL ## Returnerer kurtosisværdien for en stokastisk variabel +LARGE = STOR ## Returnerer den k'te største værdi i et datasæt +LINEST = LINREGR ## Returnerer parameterestimaterne for en lineær tendens +LOGEST = LOGREGR ## Returnerer parameterestimaterne for en eksponentiel tendens +LOGINV = LOGINV ## Returnerer den inverse fordelingsfunktion for lognormalfordelingen +LOGNORMDIST = LOGNORMFORDELING ## Returnerer fordelingsfunktionen for lognormalfordelingen +MAX = MAKS ## Returnerer den maksimale værdi på en liste med argumenter. +MAXA = MAKSV ## Returnerer den maksimale værdi på en liste med argumenter og medtager tal, tekst og logiske værdier +MEDIAN = MEDIAN ## Returnerer medianen for de angivne tal +MIN = MIN ## Returnerer den mindste værdi på en liste med argumenter. +MINA = MINV ## Returnerer den mindste værdi på en liste med argumenter og medtager tal, tekst og logiske værdier +MODE = HYPPIGST ## Returnerer den hyppigste værdi i et datasæt +NEGBINOMDIST = NEGBINOMFORDELING ## Returnerer den negative binomialfordeling +NORMDIST = NORMFORDELING ## Returnerer fordelingsfunktionen for normalfordelingen +NORMINV = NORMINV ## Returnerer den inverse fordelingsfunktion for normalfordelingen +NORMSDIST = STANDARDNORMFORDELING ## Returnerer fordelingsfunktionen for standardnormalfordelingen +NORMSINV = STANDARDNORMINV ## Returnerer den inverse fordelingsfunktion for standardnormalfordelingen +PEARSON = PEARSON ## Returnerer Pearsons korrelationskoefficient +PERCENTILE = FRAKTIL ## Returnerer den k'te fraktil for datasættet +PERCENTRANK = PROCENTPLADS ## Returnerer den procentuelle rang for en given værdi i et datasæt +PERMUT = PERMUT ## Returnerer antallet af permutationer for et givet sæt objekter +POISSON = POISSON ## Returnerer fordelingsfunktionen for en Poisson-fordeling +PROB = SANDSYNLIGHED ## Returnerer intervalsandsynligheden +QUARTILE = KVARTIL ## Returnerer kvartilen i et givet datasæt +RANK = PLADS ## Returnerer rangen for et tal på en liste med tal +RSQ = FORKLARINGSGRAD ## Returnerer R2-værdien fra en simpel lineær regression +SKEW = SKÆVHED ## Returnerer skævheden for en stokastisk variabel +SLOPE = HÆLDNING ## Returnerer estimatet på hældningen fra en simpel lineær regression +SMALL = MINDSTE ## Returnerer den k'te mindste værdi i datasættet +STANDARDIZE = STANDARDISER ## Returnerer en standardiseret værdi +STDEV = STDAFV ## Estimerer standardafvigelsen på basis af en stikprøve +STDEVA = STDAFVV ## Beregner standardafvigelsen på basis af en prøve og medtager tal, tekst og logiske værdier +STDEVP = STDAFVP ## Beregner standardafvigelsen på basis af en hel population +STDEVPA = STDAFVPV ## Beregner standardafvigelsen på basis af en hel population og medtager tal, tekst og logiske værdier +STEYX = STFYX ## Returnerer standardafvigelsen for de estimerede y-værdier i den simple lineære regression +TDIST = TFORDELING ## Returnerer fordelingsfunktionen for Student's t-fordeling +TINV = TINV ## Returnerer den inverse fordelingsfunktion for Student's t-fordeling +TREND = TENDENS ## Returnerer værdi under antagelse af en lineær tendens +TRIMMEAN = TRIMMIDDELVÆRDI ## Returnerer den trimmede middelværdi for datasættet +TTEST = TTEST ## Returnerer den sandsynlighed, der er forbundet med Student's t-test +VAR = VARIANS ## Beregner variansen på basis af en prøve +VARA = VARIANSV ## Beregner variansen på basis af en prøve og medtager tal, tekst og logiske værdier +VARP = VARIANSP ## Beregner variansen på basis af hele populationen +VARPA = VARIANSPV ## Beregner variansen på basis af hele populationen og medtager tal, tekst og logiske værdier +WEIBULL = WEIBULL ## Returnerer fordelingsfunktionen for Weibull-fordelingen +ZTEST = ZTEST ## Returnerer sandsynlighedsværdien ved en en-sidet z-test + + +## +## Text functions Tekstfunktioner +## +ASC = ASC ## Ændrer engelske tegn i fuld bredde (dobbelt-byte) eller katakana i en tegnstreng til tegn i halv bredde (enkelt-byte) +BAHTTEXT = BAHTTEKST ## Konverterer et tal til tekst ved hjælp af valutaformatet ß (baht) +CHAR = TEGN ## Returnerer det tegn, der svarer til kodenummeret +CLEAN = RENS ## Fjerner alle tegn, der ikke kan udskrives, fra tekst +CODE = KODE ## Returnerer en numerisk kode for det første tegn i en tekststreng +CONCATENATE = SAMMENKÆDNING ## Sammenkæder adskillige tekstelementer til ét tekstelement +DOLLAR = KR ## Konverterer et tal til tekst ved hjælp af valutaformatet kr. (kroner) +EXACT = EKSAKT ## Kontrollerer, om to tekstværdier er identiske +FIND = FIND ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) +FINDB = FINDB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes mellem store og små bogstaver) +FIXED = FAST ## Formaterer et tal som tekst med et fast antal decimaler +JIS = JIS ## Ændrer engelske tegn i halv bredde (enkelt-byte) eller katakana i en tegnstreng til tegn i fuld bredde (dobbelt-byte) +LEFT = VENSTRE ## Returnerer tegnet længst til venstre i en tekstværdi +LEFTB = VENSTREB ## Returnerer tegnet længst til venstre i en tekstværdi +LEN = LÆNGDE ## Returnerer antallet af tegn i en tekststreng +LENB = LÆNGDEB ## Returnerer antallet af tegn i en tekststreng +LOWER = SMÅ.BOGSTAVER ## Konverterer tekst til små bogstaver +MID = MIDT ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition +MIDB = MIDTB ## Returnerer et bestemt antal tegn fra en tekststreng fra og med den angivne startposition +PHONETIC = FONETISK ## Uddrager de fonetiske (furigana) tegn fra en tekststreng +PROPER = STORT.FORBOGSTAV ## Konverterer første bogstav i hvert ord i teksten til stort bogstav +REPLACE = ERSTAT ## Erstatter tegn i tekst +REPLACEB = ERSTATB ## Erstatter tegn i tekst +REPT = GENTAG ## Gentager tekst et givet antal gange +RIGHT = HØJRE ## Returnerer tegnet længste til højre i en tekstværdi +RIGHTB = HØJREB ## Returnerer tegnet længste til højre i en tekstværdi +SEARCH = SØG ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) +SEARCHB = SØGB ## Søger efter en tekstværdi i en anden tekstværdi (der skelnes ikke mellem store og små bogstaver) +SUBSTITUTE = UDSKIFT ## Udskifter gammel tekst med ny tekst i en tekststreng +T = T ## Konverterer argumenterne til tekst +TEXT = TEKST ## Formaterer et tal og konverterer det til tekst +TRIM = FJERN.OVERFLØDIGE.BLANKE ## Fjerner mellemrum fra tekst +UPPER = STORE.BOGSTAVER ## Konverterer tekst til store bogstaver +VALUE = VÆRDI ## Konverterer et tekstargument til et tal diff --git a/assets/excel/PHPExcel/locale/de/config b/assets/excel/PHPExcel/locale/de/config new file mode 100644 index 0000000..aa0228e --- /dev/null +++ b/assets/excel/PHPExcel/locale/de/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = € + + +## +## Excel Error Codes (For future use) +## +NULL = #NULL! +DIV0 = #DIV/0! +VALUE = #WERT! +REF = #BEZUG! +NAME = #NAME? +NUM = #ZAHL! +NA = #NV diff --git a/assets/excel/PHPExcel/locale/de/functions b/assets/excel/PHPExcel/locale/de/functions new file mode 100644 index 0000000..3147f9c --- /dev/null +++ b/assets/excel/PHPExcel/locale/de/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Add-In- und Automatisierungsfunktionen +## +GETPIVOTDATA = PIVOTDATENZUORDNEN ## In einem PivotTable-Bericht gespeicherte Daten werden zurückgegeben. + + +## +## Cube functions Cubefunktionen +## +CUBEKPIMEMBER = CUBEKPIELEMENT ## Gibt Name, Eigenschaft und Measure eines Key Performance Indicators (KPI) zurück und zeigt den Namen und die Eigenschaft in der Zelle an. Ein KPI ist ein quantifizierbares Maß, wie z. B. der monatliche Bruttogewinn oder die vierteljährliche Mitarbeiterfluktuation, mit dessen Hilfe das Leistungsverhalten eines Unternehmens überwacht werden kann. +CUBEMEMBER = CUBEELEMENT ## Gibt ein Element oder ein Tuple in einer Cubehierarchie zurück. Wird verwendet, um zu überprüfen, ob das Element oder Tuple im Cube vorhanden ist. +CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT ## Gibt den Wert einer Elementeigenschaft im Cube zurück. Wird verwendet, um zu überprüfen, ob ein Elementname im Cube vorhanden ist, und um die für dieses Element angegebene Eigenschaft zurückzugeben. +CUBERANKEDMEMBER = CUBERANGELEMENT ## Gibt das n-te oder n-rangige Element in einer Menge zurück. Wird verwendet, um mindestens ein Element in einer Menge zurückzugeben, wie z. B. bester Vertriebsmitarbeiter oder 10 beste Kursteilnehmer. +CUBESET = CUBEMENGE ## Definiert eine berechnete Menge Elemente oder Tuples durch Senden eines Mengenausdrucks an den Cube auf dem Server, der die Menge erstellt und an Microsoft Office Excel zurückgibt. +CUBESETCOUNT = CUBEMENGENANZAHL ## Gibt die Anzahl der Elemente in einer Menge zurück. +CUBEVALUE = CUBEWERT ## Gibt einen Aggregatwert aus einem Cube zurück. + + +## +## Database functions Datenbankfunktionen +## +DAVERAGE = DBMITTELWERT ## Gibt den Mittelwert der ausgewählten Datenbankeinträge zurück +DCOUNT = DBANZAHL ## Zählt die Zellen mit Zahlen in einer Datenbank +DCOUNTA = DBANZAHL2 ## Zählt nicht leere Zellen in einer Datenbank +DGET = DBAUSZUG ## Extrahiert aus einer Datenbank einen einzelnen Datensatz, der den angegebenen Kriterien entspricht +DMAX = DBMAX ## Gibt den größten Wert aus ausgewählten Datenbankeinträgen zurück +DMIN = DBMIN ## Gibt den kleinsten Wert aus ausgewählten Datenbankeinträgen zurück +DPRODUCT = DBPRODUKT ## Multipliziert die Werte in einem bestimmten Feld mit Datensätzen, die den Kriterien in einer Datenbank entsprechen +DSTDEV = DBSTDABW ## Schätzt die Standardabweichung auf der Grundlage einer Stichprobe aus ausgewählten Datenbankeinträgen +DSTDEVP = DBSTDABWN ## Berechnet die Standardabweichung auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge +DSUM = DBSUMME ## Addiert die Zahlen in der Feldspalte mit Datensätzen in der Datenbank, die den Kriterien entsprechen +DVAR = DBVARIANZ ## Schätzt die Varianz auf der Grundlage ausgewählter Datenbankeinträge +DVARP = DBVARIANZEN ## Berechnet die Varianz auf der Grundlage der Grundgesamtheit ausgewählter Datenbankeinträge + + +## +## Date and time functions Datums- und Zeitfunktionen +## +DATE = DATUM ## Gibt die fortlaufende Zahl eines bestimmten Datums zurück +DATEVALUE = DATWERT ## Wandelt ein Datum in Form von Text in eine fortlaufende Zahl um +DAY = TAG ## Wandelt eine fortlaufende Zahl in den Tag des Monats um +DAYS360 = TAGE360 ## Berechnet die Anzahl der Tage zwischen zwei Datumsangaben ausgehend von einem Jahr, das 360 Tage hat +EDATE = EDATUM ## Gibt die fortlaufende Zahl des Datums zurück, bei dem es sich um die angegebene Anzahl von Monaten vor oder nach dem Anfangstermin handelt +EOMONTH = MONATSENDE ## Gibt die fortlaufende Zahl des letzten Tags des Monats vor oder nach einer festgelegten Anzahl von Monaten zurück +HOUR = STUNDE ## Wandelt eine fortlaufende Zahl in eine Stunde um +MINUTE = MINUTE ## Wandelt eine fortlaufende Zahl in eine Minute um +MONTH = MONAT ## Wandelt eine fortlaufende Zahl in einen Monat um +NETWORKDAYS = NETTOARBEITSTAGE ## Gibt die Anzahl von ganzen Arbeitstagen zwischen zwei Datumswerten zurück +NOW = JETZT ## Gibt die fortlaufende Zahl des aktuellen Datums und der aktuellen Uhrzeit zurück +SECOND = SEKUNDE ## Wandelt eine fortlaufende Zahl in eine Sekunde um +TIME = ZEIT ## Gibt die fortlaufende Zahl einer bestimmten Uhrzeit zurück +TIMEVALUE = ZEITWERT ## Wandelt eine Uhrzeit in Form von Text in eine fortlaufende Zahl um +TODAY = HEUTE ## Gibt die fortlaufende Zahl des heutigen Datums zurück +WEEKDAY = WOCHENTAG ## Wandelt eine fortlaufende Zahl in den Wochentag um +WEEKNUM = KALENDERWOCHE ## Wandelt eine fortlaufende Zahl in eine Zahl um, die angibt, in welche Woche eines Jahres das angegebene Datum fällt +WORKDAY = ARBEITSTAG ## Gibt die fortlaufende Zahl des Datums vor oder nach einer bestimmten Anzahl von Arbeitstagen zurück +YEAR = JAHR ## Wandelt eine fortlaufende Zahl in ein Jahr um +YEARFRAC = BRTEILJAHRE ## Gibt die Anzahl der ganzen Tage zwischen Ausgangsdatum und Enddatum in Bruchteilen von Jahren zurück + + +## +## Engineering functions Konstruktionsfunktionen +## +BESSELI = BESSELI ## Gibt die geänderte Besselfunktion In(x) zurück +BESSELJ = BESSELJ ## Gibt die Besselfunktion Jn(x) zurück +BESSELK = BESSELK ## Gibt die geänderte Besselfunktion Kn(x) zurück +BESSELY = BESSELY ## Gibt die Besselfunktion Yn(x) zurück +BIN2DEC = BININDEZ ## Wandelt eine binäre Zahl (Dualzahl) in eine dezimale Zahl um +BIN2HEX = BININHEX ## Wandelt eine binäre Zahl (Dualzahl) in eine hexadezimale Zahl um +BIN2OCT = BININOKT ## Wandelt eine binäre Zahl (Dualzahl) in eine oktale Zahl um +COMPLEX = KOMPLEXE ## Wandelt den Real- und Imaginärteil in eine komplexe Zahl um +CONVERT = UMWANDELN ## Wandelt eine Zahl von einem Maßsystem in ein anderes um +DEC2BIN = DEZINBIN ## Wandelt eine dezimale Zahl in eine binäre Zahl (Dualzahl) um +DEC2HEX = DEZINHEX ## Wandelt eine dezimale Zahl in eine hexadezimale Zahl um +DEC2OCT = DEZINOKT ## Wandelt eine dezimale Zahl in eine oktale Zahl um +DELTA = DELTA ## Überprüft, ob zwei Werte gleich sind +ERF = GAUSSFEHLER ## Gibt die Gauss'sche Fehlerfunktion zurück +ERFC = GAUSSFKOMPL ## Gibt das Komplement zur Gauss'schen Fehlerfunktion zurück +GESTEP = GGANZZAHL ## Überprüft, ob eine Zahl größer als ein gegebener Schwellenwert ist +HEX2BIN = HEXINBIN ## Wandelt eine hexadezimale Zahl in eine Binärzahl um +HEX2DEC = HEXINDEZ ## Wandelt eine hexadezimale Zahl in eine dezimale Zahl um +HEX2OCT = HEXINOKT ## Wandelt eine hexadezimale Zahl in eine Oktalzahl um +IMABS = IMABS ## Gibt den Absolutbetrag (Modulo) einer komplexen Zahl zurück +IMAGINARY = IMAGINÄRTEIL ## Gibt den Imaginärteil einer komplexen Zahl zurück +IMARGUMENT = IMARGUMENT ## Gibt das Argument Theta zurück, einen Winkel, der als Bogenmaß ausgedrückt wird +IMCONJUGATE = IMKONJUGIERTE ## Gibt die konjugierte komplexe Zahl zu einer komplexen Zahl zurück +IMCOS = IMCOS ## Gibt den Kosinus einer komplexen Zahl zurück +IMDIV = IMDIV ## Gibt den Quotienten zweier komplexer Zahlen zurück +IMEXP = IMEXP ## Gibt die algebraische Form einer in exponentieller Schreibweise vorliegenden komplexen Zahl zurück +IMLN = IMLN ## Gibt den natürlichen Logarithmus einer komplexen Zahl zurück +IMLOG10 = IMLOG10 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 10 zurück +IMLOG2 = IMLOG2 ## Gibt den Logarithmus einer komplexen Zahl zur Basis 2 zurück +IMPOWER = IMAPOTENZ ## Potenziert eine komplexe Zahl mit einer ganzen Zahl +IMPRODUCT = IMPRODUKT ## Gibt das Produkt von komplexen Zahlen zurück +IMREAL = IMREALTEIL ## Gibt den Realteil einer komplexen Zahl zurück +IMSIN = IMSIN ## Gibt den Sinus einer komplexen Zahl zurück +IMSQRT = IMWURZEL ## Gibt die Quadratwurzel einer komplexen Zahl zurück +IMSUB = IMSUB ## Gibt die Differenz zwischen zwei komplexen Zahlen zurück +IMSUM = IMSUMME ## Gibt die Summe von komplexen Zahlen zurück +OCT2BIN = OKTINBIN ## Wandelt eine oktale Zahl in eine binäre Zahl (Dualzahl) um +OCT2DEC = OKTINDEZ ## Wandelt eine oktale Zahl in eine dezimale Zahl um +OCT2HEX = OKTINHEX ## Wandelt eine oktale Zahl in eine hexadezimale Zahl um + + +## +## Financial functions Finanzmathematische Funktionen +## +ACCRINT = AUFGELZINS ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers mit periodischen Zinszahlungen zurück +ACCRINTM = AUFGELZINSF ## Gibt die aufgelaufenen Zinsen (Stückzinsen) eines Wertpapiers zurück, die bei Fälligkeit ausgezahlt werden +AMORDEGRC = AMORDEGRK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume mithilfe eines Abschreibungskoeffizienten zurück +AMORLINC = AMORLINEARK ## Gibt die Abschreibung für die einzelnen Abschreibungszeiträume zurück +COUPDAYBS = ZINSTERMTAGVA ## Gibt die Anzahl der Tage vom Anfang des Zinstermins bis zum Abrechnungstermin zurück +COUPDAYS = ZINSTERMTAGE ## Gibt die Anzahl der Tage der Zinsperiode zurück, die den Abrechnungstermin einschließt +COUPDAYSNC = ZINSTERMTAGNZ ## Gibt die Anzahl der Tage vom Abrechnungstermin bis zum nächsten Zinstermin zurück +COUPNCD = ZINSTERMNZ ## Gibt das Datum des ersten Zinstermins nach dem Abrechnungstermin zurück +COUPNUM = ZINSTERMZAHL ## Gibt die Anzahl der Zinstermine zwischen Abrechnungs- und Fälligkeitsdatum zurück +COUPPCD = ZINSTERMVZ ## Gibt das Datum des letzten Zinstermins vor dem Abrechnungstermin zurück +CUMIPMT = KUMZINSZ ## Berechnet die kumulierten Zinsen, die zwischen zwei Perioden zu zahlen sind +CUMPRINC = KUMKAPITAL ## Berechnet die aufgelaufene Tilgung eines Darlehens, die zwischen zwei Perioden zu zahlen ist +DB = GDA2 ## Gibt die geometrisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück +DDB = GDA ## Gibt die Abschreibung eines Anlageguts für einen angegebenen Zeitraum unter Verwendung der degressiven Doppelraten-Abschreibung oder eines anderen von Ihnen angegebenen Abschreibungsverfahrens zurück +DISC = DISAGIO ## Gibt den in Prozent ausgedrückten Abzinsungssatz eines Wertpapiers zurück +DOLLARDE = NOTIERUNGDEZ ## Wandelt eine Notierung, die als Dezimalbruch ausgedrückt wurde, in eine Dezimalzahl um +DOLLARFR = NOTIERUNGBRU ## Wandelt eine Notierung, die als Dezimalzahl ausgedrückt wurde, in einen Dezimalbruch um +DURATION = DURATION ## Gibt die jährliche Duration eines Wertpapiers mit periodischen Zinszahlungen zurück +EFFECT = EFFEKTIV ## Gibt die jährliche Effektivverzinsung zurück +FV = ZW ## Gibt den zukünftigen Wert (Endwert) einer Investition zurück +FVSCHEDULE = ZW2 ## Gibt den aufgezinsten Wert des Anfangskapitals für eine Reihe periodisch unterschiedlicher Zinssätze zurück +INTRATE = ZINSSATZ ## Gibt den Zinssatz eines voll investierten Wertpapiers zurück +IPMT = ZINSZ ## Gibt die Zinszahlung einer Investition für die angegebene Periode zurück +IRR = IKV ## Gibt den internen Zinsfuß einer Investition ohne Finanzierungskosten oder Reinvestitionsgewinne zurück +ISPMT = ISPMT ## Berechnet die während eines bestimmten Zeitraums für eine Investition gezahlten Zinsen +MDURATION = MDURATION ## Gibt die geänderte Dauer für ein Wertpapier mit einem angenommenen Nennwert von 100 € zurück +MIRR = QIKV ## Gibt den internen Zinsfuß zurück, wobei positive und negative Zahlungen zu unterschiedlichen Sätzen finanziert werden +NOMINAL = NOMINAL ## Gibt die jährliche Nominalverzinsung zurück +NPER = ZZR ## Gibt die Anzahl der Zahlungsperioden einer Investition zurück +NPV = NBW ## Gibt den Nettobarwert einer Investition auf Basis periodisch anfallender Zahlungen und eines Abzinsungsfaktors zurück +ODDFPRICE = UNREGER.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück +ODDFYIELD = UNREGER.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen ersten Zinstermin zurück +ODDLPRICE = UNREGLE.KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück +ODDLYIELD = UNREGLE.REND ## Gibt die Rendite eines Wertpapiers mit einem unregelmäßigen letzten Zinstermin zurück +PMT = RMZ ## Gibt die periodische Zahlung für eine Annuität zurück +PPMT = KAPZ ## Gibt die Kapitalrückzahlung einer Investition für eine angegebene Periode zurück +PRICE = KURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das periodisch Zinsen auszahlt +PRICEDISC = KURSDISAGIO ## Gibt den Kurs pro 100 € Nennwert eines unverzinslichen Wertpapiers zurück +PRICEMAT = KURSFÄLLIG ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt +PV = BW ## Gibt den Barwert einer Investition zurück +RATE = ZINS ## Gibt den Zinssatz pro Zeitraum einer Annuität zurück +RECEIVED = AUSZAHLUNG ## Gibt den Auszahlungsbetrag eines voll investierten Wertpapiers am Fälligkeitstermin zurück +SLN = LIA ## Gibt die lineare Abschreibung eines Wirtschaftsguts pro Periode zurück +SYD = DIA ## Gibt die arithmetisch-degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode zurück +TBILLEQ = TBILLÄQUIV ## Gibt die Rendite für ein Wertpapier zurück +TBILLPRICE = TBILLKURS ## Gibt den Kurs pro 100 € Nennwert eines Wertpapiers zurück +TBILLYIELD = TBILLRENDITE ## Gibt die Rendite für ein Wertpapier zurück +VDB = VDB ## Gibt die degressive Abschreibung eines Wirtschaftsguts für eine bestimmte Periode oder Teilperiode zurück +XIRR = XINTZINSFUSS ## Gibt den internen Zinsfuß einer Reihe nicht periodisch anfallender Zahlungen zurück +XNPV = XKAPITALWERT ## Gibt den Nettobarwert (Kapitalwert) einer Reihe nicht periodisch anfallender Zahlungen zurück +YIELD = RENDITE ## Gibt die Rendite eines Wertpapiers zurück, das periodisch Zinsen auszahlt +YIELDDISC = RENDITEDIS ## Gibt die jährliche Rendite eines unverzinslichen Wertpapiers zurück +YIELDMAT = RENDITEFÄLL ## Gibt die jährliche Rendite eines Wertpapiers zurück, das Zinsen am Fälligkeitsdatum auszahlt + + +## +## Information functions Informationsfunktionen +## +CELL = ZELLE ## Gibt Informationen zu Formatierung, Position oder Inhalt einer Zelle zurück +ERROR.TYPE = FEHLER.TYP ## Gibt eine Zahl zurück, die einem Fehlertyp entspricht +INFO = INFO ## Gibt Informationen zur aktuellen Betriebssystemumgebung zurück +ISBLANK = ISTLEER ## Gibt WAHR zurück, wenn der Wert leer ist +ISERR = ISTFEHL ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert außer #N/V ist +ISERROR = ISTFEHLER ## Gibt WAHR zurück, wenn der Wert ein beliebiger Fehlerwert ist +ISEVEN = ISTGERADE ## Gibt WAHR zurück, wenn es sich um eine gerade Zahl handelt +ISLOGICAL = ISTLOG ## Gibt WAHR zurück, wenn der Wert ein Wahrheitswert ist +ISNA = ISTNV ## Gibt WAHR zurück, wenn der Wert der Fehlerwert #N/V ist +ISNONTEXT = ISTKTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das keinen Text enthält +ISNUMBER = ISTZAHL ## Gibt WAHR zurück, wenn der Wert eine Zahl ist +ISODD = ISTUNGERADE ## Gibt WAHR zurück, wenn es sich um eine ungerade Zahl handelt +ISREF = ISTBEZUG ## Gibt WAHR zurück, wenn der Wert ein Bezug ist +ISTEXT = ISTTEXT ## Gibt WAHR zurück, wenn der Wert ein Element ist, das Text enthält +N = N ## Gibt den in eine Zahl umgewandelten Wert zurück +NA = NV ## Gibt den Fehlerwert #NV zurück +TYPE = TYP ## Gibt eine Zahl zurück, die den Datentyp des angegebenen Werts anzeigt + + +## +## Logical functions Logische Funktionen +## +AND = UND ## Gibt WAHR zurück, wenn alle zugehörigen Argumente WAHR sind +FALSE = FALSCH ## Gibt den Wahrheitswert FALSCH zurück +IF = WENN ## Gibt einen logischen Test zum Ausführen an +IFERROR = WENNFEHLER ## Gibt einen von Ihnen festgelegten Wert zurück, wenn die Auswertung der Formel zu einem Fehler führt; andernfalls wird das Ergebnis der Formel zurückgegeben +NOT = NICHT ## Kehrt den Wahrheitswert der zugehörigen Argumente um +OR = ODER ## Gibt WAHR zurück, wenn ein Argument WAHR ist +TRUE = WAHR ## Gibt den Wahrheitswert WAHR zurück + + +## +## Lookup and reference functions Nachschlage- und Verweisfunktionen +## +ADDRESS = ADRESSE ## Gibt einen Bezug auf eine einzelne Zelle in einem Tabellenblatt als Text zurück +AREAS = BEREICHE ## Gibt die Anzahl der innerhalb eines Bezugs aufgeführten Bereiche zurück +CHOOSE = WAHL ## Wählt einen Wert aus eine Liste mit Werten aus +COLUMN = SPALTE ## Gibt die Spaltennummer eines Bezugs zurück +COLUMNS = SPALTEN ## Gibt die Anzahl der Spalten in einem Bezug zurück +HLOOKUP = HVERWEIS ## Sucht in der obersten Zeile einer Matrix und gibt den Wert der angegebenen Zelle zurück +HYPERLINK = HYPERLINK ## Erstellt eine Verknüpfung, über die ein auf einem Netzwerkserver, in einem Intranet oder im Internet gespeichertes Dokument geöffnet wird +INDEX = INDEX ## Verwendet einen Index, um einen Wert aus einem Bezug oder einer Matrix auszuwählen +INDIRECT = INDIREKT ## Gibt einen Bezug zurück, der von einem Textwert angegeben wird +LOOKUP = LOOKUP ## Sucht Werte in einem Vektor oder einer Matrix +MATCH = VERGLEICH ## Sucht Werte in einem Bezug oder einer Matrix +OFFSET = BEREICH.VERSCHIEBEN ## Gibt einen Bezugoffset aus einem gegebenen Bezug zurück +ROW = ZEILE ## Gibt die Zeilennummer eines Bezugs zurück +ROWS = ZEILEN ## Gibt die Anzahl der Zeilen in einem Bezug zurück +RTD = RTD ## Ruft Echtzeitdaten von einem Programm ab, das die COM-Automatisierung (Automatisierung: Ein Verfahren, bei dem aus einer Anwendung oder einem Entwicklungstool heraus mit den Objekten einer anderen Anwendung gearbeitet wird. Die früher als OLE-Automatisierung bezeichnete Automatisierung ist ein Industriestandard und eine Funktion von COM (Component Object Model).) unterstützt +TRANSPOSE = MTRANS ## Gibt die transponierte Matrix einer Matrix zurück +VLOOKUP = SVERWEIS ## Sucht in der ersten Spalte einer Matrix und arbeitet sich durch die Zeile, um den Wert einer Zelle zurückzugeben + + +## +## Math and trigonometry functions Mathematische und trigonometrische Funktionen +## +ABS = ABS ## Gibt den Absolutwert einer Zahl zurück +ACOS = ARCCOS ## Gibt den Arkuskosinus einer Zahl zurück +ACOSH = ARCCOSHYP ## Gibt den umgekehrten hyperbolischen Kosinus einer Zahl zurück +ASIN = ARCSIN ## Gibt den Arkussinus einer Zahl zurück +ASINH = ARCSINHYP ## Gibt den umgekehrten hyperbolischen Sinus einer Zahl zurück +ATAN = ARCTAN ## Gibt den Arkustangens einer Zahl zurück +ATAN2 = ARCTAN2 ## Gibt den Arkustangens einer x- und einer y-Koordinate zurück +ATANH = ARCTANHYP ## Gibt den umgekehrten hyperbolischen Tangens einer Zahl zurück +CEILING = OBERGRENZE ## Rundet eine Zahl auf die nächste ganze Zahl oder das nächste Vielfache von Schritt +COMBIN = KOMBINATIONEN ## Gibt die Anzahl der Kombinationen für eine bestimmte Anzahl von Objekten zurück +COS = COS ## Gibt den Kosinus einer Zahl zurück +COSH = COSHYP ## Gibt den hyperbolischen Kosinus einer Zahl zurück +DEGREES = GRAD ## Wandelt Bogenmaß (Radiant) in Grad um +EVEN = GERADE ## Rundet eine Zahl auf die nächste gerade ganze Zahl auf +EXP = EXP ## Potenziert die Basis e mit der als Argument angegebenen Zahl +FACT = FAKULTÄT ## Gibt die Fakultät einer Zahl zurück +FACTDOUBLE = ZWEIFAKULTÄT ## Gibt die Fakultät zu Zahl mit Schrittlänge 2 zurück +FLOOR = UNTERGRENZE ## Rundet die Zahl auf Anzahl_Stellen ab +GCD = GGT ## Gibt den größten gemeinsamen Teiler zurück +INT = GANZZAHL ## Rundet eine Zahl auf die nächstkleinere ganze Zahl ab +LCM = KGV ## Gibt das kleinste gemeinsame Vielfache zurück +LN = LN ## Gibt den natürlichen Logarithmus einer Zahl zurück +LOG = LOG ## Gibt den Logarithmus einer Zahl zu der angegebenen Basis zurück +LOG10 = LOG10 ## Gibt den Logarithmus einer Zahl zur Basis 10 zurück +MDETERM = MDET ## Gibt die Determinante einer Matrix zurück +MINVERSE = MINV ## Gibt die inverse Matrix einer Matrix zurück +MMULT = MMULT ## Gibt das Produkt zweier Matrizen zurück +MOD = REST ## Gibt den Rest einer Division zurück +MROUND = VRUNDEN ## Gibt eine auf das gewünschte Vielfache gerundete Zahl zurück +MULTINOMIAL = POLYNOMIAL ## Gibt den Polynomialkoeffizienten einer Gruppe von Zahlen zurück +ODD = UNGERADE ## Rundet eine Zahl auf die nächste ungerade ganze Zahl auf +PI = PI ## Gibt den Wert Pi zurück +POWER = POTENZ ## Gibt als Ergebnis eine potenzierte Zahl zurück +PRODUCT = PRODUKT ## Multipliziert die zugehörigen Argumente +QUOTIENT = QUOTIENT ## Gibt den ganzzahligen Anteil einer Division zurück +RADIANS = BOGENMASS ## Wandelt Grad in Bogenmaß (Radiant) um +RAND = ZUFALLSZAHL ## Gibt eine Zufallszahl zwischen 0 und 1 zurück +RANDBETWEEN = ZUFALLSBEREICH ## Gibt eine Zufallszahl aus dem festgelegten Bereich zurück +ROMAN = RÖMISCH ## Wandelt eine arabische Zahl in eine römische Zahl als Text um +ROUND = RUNDEN ## Rundet eine Zahl auf eine bestimmte Anzahl von Dezimalstellen +ROUNDDOWN = ABRUNDEN ## Rundet die Zahl auf Anzahl_Stellen ab +ROUNDUP = AUFRUNDEN ## Rundet die Zahl auf Anzahl_Stellen auf +SERIESSUM = POTENZREIHE ## Gibt die Summe von Potenzen (zur Berechnung von Potenzreihen und dichotomen Wahrscheinlichkeiten) zurück +SIGN = VORZEICHEN ## Gibt das Vorzeichen einer Zahl zurück +SIN = SIN ## Gibt den Sinus einer Zahl zurück +SINH = SINHYP ## Gibt den hyperbolischen Sinus einer Zahl zurück +SQRT = WURZEL ## Gibt die Quadratwurzel einer Zahl zurück +SQRTPI = WURZELPI ## Gibt die Wurzel aus der mit Pi (pi) multiplizierten Zahl zurück +SUBTOTAL = TEILERGEBNIS ## Gibt ein Teilergebnis in einer Liste oder Datenbank zurück +SUM = SUMME ## Addiert die zugehörigen Argumente +SUMIF = SUMMEWENN ## Addiert Zahlen, die mit den Suchkriterien übereinstimmen +SUMIFS = SUMMEWENNS ## Die Zellen, die mehrere Kriterien erfüllen, werden in einem Bereich hinzugefügt +SUMPRODUCT = SUMMENPRODUKT ## Gibt die Summe der Produkte zusammengehöriger Matrixkomponenten zurück +SUMSQ = QUADRATESUMME ## Gibt die Summe der quadrierten Argumente zurück +SUMX2MY2 = SUMMEX2MY2 ## Gibt die Summe der Differenzen der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück +SUMX2PY2 = SUMMEX2PY2 ## Gibt die Summe der Quadrate für zusammengehörige Komponenten zweier Matrizen zurück +SUMXMY2 = SUMMEXMY2 ## Gibt die Summe der quadrierten Differenzen für zusammengehörige Komponenten zweier Matrizen zurück +TAN = TAN ## Gibt den Tangens einer Zahl zurück +TANH = TANHYP ## Gibt den hyperbolischen Tangens einer Zahl zurück +TRUNC = KÜRZEN ## Schneidet die Kommastellen einer Zahl ab und gibt als Ergebnis eine ganze Zahl zurück + + +## +## Statistical functions Statistische Funktionen +## +AVEDEV = MITTELABW ## Gibt die durchschnittliche absolute Abweichung einer Reihe von Merkmalsausprägungen und ihrem Mittelwert zurück +AVERAGE = MITTELWERT ## Gibt den Mittelwert der zugehörigen Argumente zurück +AVERAGEA = MITTELWERTA ## Gibt den Mittelwert der zugehörigen Argumente, die Zahlen, Text und Wahrheitswerte enthalten, zurück +AVERAGEIF = MITTELWERTWENN ## Der Durchschnittswert (arithmetisches Mittel) für alle Zellen in einem Bereich, die einem angegebenen Kriterium entsprechen, wird zurückgegeben +AVERAGEIFS = MITTELWERTWENNS ## Gibt den Durchschnittswert (arithmetisches Mittel) aller Zellen zurück, die mehreren Kriterien entsprechen +BETADIST = BETAVERT ## Gibt die Werte der kumulierten Betaverteilungsfunktion zurück +BETAINV = BETAINV ## Gibt das Quantil der angegebenen Betaverteilung zurück +BINOMDIST = BINOMVERT ## Gibt Wahrscheinlichkeiten einer binomialverteilten Zufallsvariablen zurück +CHIDIST = CHIVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer Chi-Quadrat-verteilten Zufallsgröße zurück +CHIINV = CHIINV ## Gibt Quantile der Verteilungsfunktion (1-Alpha) der Chi-Quadrat-Verteilung zurück +CHITEST = CHITEST ## Gibt die Teststatistik eines Unabhängigkeitstests zurück +CONFIDENCE = KONFIDENZ ## Ermöglicht die Berechnung des 1-Alpha Konfidenzintervalls für den Erwartungswert einer Zufallsvariablen +CORREL = KORREL ## Gibt den Korrelationskoeffizienten zweier Reihen von Merkmalsausprägungen zurück +COUNT = ANZAHL ## Gibt die Anzahl der Zahlen in der Liste mit Argumenten an +COUNTA = ANZAHL2 ## Gibt die Anzahl der Werte in der Liste mit Argumenten an +COUNTBLANK = ANZAHLLEEREZELLEN ## Gibt die Anzahl der leeren Zellen in einem Bereich an +COUNTIF = ZÄHLENWENN ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit den Suchkriterien übereinstimmen +COUNTIFS = ZÄHLENWENNS ## Gibt die Anzahl der Zellen in einem Bereich an, deren Inhalte mit mehreren Suchkriterien übereinstimmen +COVAR = KOVAR ## Gibt die Kovarianz zurück, den Mittelwert der für alle Datenpunktpaare gebildeten Produkte der Abweichungen +CRITBINOM = KRITBINOM ## Gibt den kleinsten Wert zurück, für den die kumulierten Wahrscheinlichkeiten der Binomialverteilung kleiner oder gleich einer Grenzwahrscheinlichkeit sind +DEVSQ = SUMQUADABW ## Gibt die Summe der quadrierten Abweichungen der Datenpunkte von ihrem Stichprobenmittelwert zurück +EXPONDIST = EXPONVERT ## Gibt Wahrscheinlichkeiten einer exponential verteilten Zufallsvariablen zurück +FDIST = FVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer F-verteilten Zufallsvariablen zurück +FINV = FINV ## Gibt Quantile der F-Verteilung zurück +FISHER = FISHER ## Gibt die Fisher-Transformation zurück +FISHERINV = FISHERINV ## Gibt die Umkehrung der Fisher-Transformation zurück +FORECAST = PROGNOSE ## Gibt einen Wert zurück, der sich aus einem linearen Trend ergibt +FREQUENCY = HÄUFIGKEIT ## Gibt eine Häufigkeitsverteilung als vertikale Matrix zurück +FTEST = FTEST ## Gibt die Teststatistik eines F-Tests zurück +GAMMADIST = GAMMAVERT ## Gibt Wahrscheinlichkeiten einer gammaverteilten Zufallsvariablen zurück +GAMMAINV = GAMMAINV ## Gibt Quantile der Gammaverteilung zurück +GAMMALN = GAMMALN ## Gibt den natürlichen Logarithmus der Gammafunktion zurück, Γ(x) +GEOMEAN = GEOMITTEL ## Gibt das geometrische Mittel zurück +GROWTH = VARIATION ## Gibt Werte zurück, die sich aus einem exponentiellen Trend ergeben +HARMEAN = HARMITTEL ## Gibt das harmonische Mittel zurück +HYPGEOMDIST = HYPGEOMVERT ## Gibt Wahrscheinlichkeiten einer hypergeometrisch-verteilten Zufallsvariablen zurück +INTERCEPT = ACHSENABSCHNITT ## Gibt den Schnittpunkt der Regressionsgeraden zurück +KURT = KURT ## Gibt die Kurtosis (Exzess) einer Datengruppe zurück +LARGE = KGRÖSSTE ## Gibt den k-größten Wert einer Datengruppe zurück +LINEST = RGP ## Gibt die Parameter eines linearen Trends zurück +LOGEST = RKP ## Gibt die Parameter eines exponentiellen Trends zurück +LOGINV = LOGINV ## Gibt Quantile der Lognormalverteilung zurück +LOGNORMDIST = LOGNORMVERT ## Gibt Werte der Verteilungsfunktion einer lognormalverteilten Zufallsvariablen zurück +MAX = MAX ## Gibt den Maximalwert einer Liste mit Argumenten zurück +MAXA = MAXA ## Gibt den Maximalwert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten +MEDIAN = MEDIAN ## Gibt den Median der angegebenen Zahlen zurück +MIN = MIN ## Gibt den Minimalwert einer Liste mit Argumenten zurück +MINA = MINA ## Gibt den kleinsten Wert einer Liste mit Argumenten zurück, die Zahlen, Text und Wahrheitswerte enthalten +MODE = MODALWERT ## Gibt den am häufigsten vorkommenden Wert in einer Datengruppe zurück +NEGBINOMDIST = NEGBINOMVERT ## Gibt Wahrscheinlichkeiten einer negativen, binominal verteilten Zufallsvariablen zurück +NORMDIST = NORMVERT ## Gibt Wahrscheinlichkeiten einer normal verteilten Zufallsvariablen zurück +NORMINV = NORMINV ## Gibt Quantile der Normalverteilung zurück +NORMSDIST = STANDNORMVERT ## Gibt Werte der Verteilungsfunktion einer standardnormalverteilten Zufallsvariablen zurück +NORMSINV = STANDNORMINV ## Gibt Quantile der Standardnormalverteilung zurück +PEARSON = PEARSON ## Gibt den Pearsonschen Korrelationskoeffizienten zurück +PERCENTILE = QUANTIL ## Gibt das Alpha-Quantil einer Gruppe von Daten zurück +PERCENTRANK = QUANTILSRANG ## Gibt den prozentualen Rang (Alpha) eines Werts in einer Datengruppe zurück +PERMUT = VARIATIONEN ## Gibt die Anzahl der Möglichkeiten zurück, um k Elemente aus einer Menge von n Elementen ohne Zurücklegen zu ziehen +POISSON = POISSON ## Gibt Wahrscheinlichkeiten einer poissonverteilten Zufallsvariablen zurück +PROB = WAHRSCHBEREICH ## Gibt die Wahrscheinlichkeit für ein von zwei Werten eingeschlossenes Intervall zurück +QUARTILE = QUARTILE ## Gibt die Quartile der Datengruppe zurück +RANK = RANG ## Gibt den Rang zurück, den eine Zahl innerhalb einer Liste von Zahlen einnimmt +RSQ = BESTIMMTHEITSMASS ## Gibt das Quadrat des Pearsonschen Korrelationskoeffizienten zurück +SKEW = SCHIEFE ## Gibt die Schiefe einer Verteilung zurück +SLOPE = STEIGUNG ## Gibt die Steigung der Regressionsgeraden zurück +SMALL = KKLEINSTE ## Gibt den k-kleinsten Wert einer Datengruppe zurück +STANDARDIZE = STANDARDISIERUNG ## Gibt den standardisierten Wert zurück +STDEV = STABW ## Schätzt die Standardabweichung ausgehend von einer Stichprobe +STDEVA = STABWA ## Schätzt die Standardabweichung ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält +STDEVP = STABWN ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit +STDEVPA = STABWNA ## Berechnet die Standardabweichung ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält +STEYX = STFEHLERYX ## Gibt den Standardfehler der geschätzten y-Werte für alle x-Werte der Regression zurück +TDIST = TVERT ## Gibt Werte der Verteilungsfunktion (1-Alpha) einer (Student) t-verteilten Zufallsvariablen zurück +TINV = TINV ## Gibt Quantile der t-Verteilung zurück +TREND = TREND ## Gibt Werte zurück, die sich aus einem linearen Trend ergeben +TRIMMEAN = GESTUTZTMITTEL ## Gibt den Mittelwert einer Datengruppe zurück, ohne die Randwerte zu berücksichtigen +TTEST = TTEST ## Gibt die Teststatistik eines Student'schen t-Tests zurück +VAR = VARIANZ ## Schätzt die Varianz ausgehend von einer Stichprobe +VARA = VARIANZA ## Schätzt die Varianz ausgehend von einer Stichprobe, die Zahlen, Text und Wahrheitswerte enthält +VARP = VARIANZEN ## Berechnet die Varianz ausgehend von der Grundgesamtheit +VARPA = VARIANZENA ## Berechnet die Varianz ausgehend von der Grundgesamtheit, die Zahlen, Text und Wahrheitswerte enthält +WEIBULL = WEIBULL ## Gibt Wahrscheinlichkeiten einer weibullverteilten Zufallsvariablen zurück +ZTEST = GTEST ## Gibt den einseitigen Wahrscheinlichkeitswert für einen Gausstest (Normalverteilung) zurück + + +## +## Text functions Textfunktionen +## +ASC = ASC ## Konvertiert DB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in SB-Text +BAHTTEXT = BAHTTEXT ## Wandelt eine Zahl in Text im Währungsformat ß (Baht) um +CHAR = ZEICHEN ## Gibt das der Codezahl entsprechende Zeichen zurück +CLEAN = SÄUBERN ## Löscht alle nicht druckbaren Zeichen aus einem Text +CODE = CODE ## Gibt die Codezahl des ersten Zeichens in einem Text zurück +CONCATENATE = VERKETTEN ## Verknüpft mehrere Textelemente zu einem Textelement +DOLLAR = DM ## Wandelt eine Zahl in Text im Währungsformat € (Euro) um +EXACT = IDENTISCH ## Prüft, ob zwei Textwerte identisch sind +FIND = FINDEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) +FINDB = FINDENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird unterschieden) +FIXED = FEST ## Formatiert eine Zahl als Text mit einer festen Anzahl von Dezimalstellen +JIS = JIS ## Konvertiert SB-Text in einer Zeichenfolge (lateinische Buchstaben oder Katakana) in DB-Text +LEFT = LINKS ## Gibt die Zeichen ganz links in einem Textwert zurück +LEFTB = LINKSB ## Gibt die Zeichen ganz links in einem Textwert zurück +LEN = LÄNGE ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück +LENB = LÄNGEB ## Gibt die Anzahl der Zeichen in einer Zeichenfolge zurück +LOWER = KLEIN ## Wandelt Text in Kleinbuchstaben um +MID = TEIL ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück +MIDB = TEILB ## Gibt eine bestimmte Anzahl Zeichen aus einer Zeichenfolge ab der von Ihnen angegebenen Stelle zurück +PHONETIC = PHONETIC ## Extrahiert die phonetischen (Furigana-)Zeichen aus einer Textzeichenfolge +PROPER = GROSS2 ## Wandelt den ersten Buchstaben aller Wörter eines Textwerts in Großbuchstaben um +REPLACE = ERSETZEN ## Ersetzt Zeichen in Text +REPLACEB = ERSETZENB ## Ersetzt Zeichen in Text +REPT = WIEDERHOLEN ## Wiederholt einen Text so oft wie angegeben +RIGHT = RECHTS ## Gibt die Zeichen ganz rechts in einem Textwert zurück +RIGHTB = RECHTSB ## Gibt die Zeichen ganz rechts in einem Textwert zurück +SEARCH = SUCHEN ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) +SEARCHB = SUCHENB ## Sucht nach einem Textwert, der in einem anderen Textwert enthalten ist (Groß-/Kleinschreibung wird nicht unterschieden) +SUBSTITUTE = WECHSELN ## Ersetzt in einer Zeichenfolge neuen Text gegen alten +T = T ## Wandelt die zugehörigen Argumente in Text um +TEXT = TEXT ## Formatiert eine Zahl und wandelt sie in Text um +TRIM = GLÄTTEN ## Entfernt Leerzeichen aus Text +UPPER = GROSS ## Wandelt Text in Großbuchstaben um +VALUE = WERT ## Wandelt ein Textargument in eine Zahl um diff --git a/assets/excel/PHPExcel/locale/en/uk/config b/assets/excel/PHPExcel/locale/en/uk/config new file mode 100644 index 0000000..532080b --- /dev/null +++ b/assets/excel/PHPExcel/locale/en/uk/config @@ -0,0 +1,32 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +## +## (For future use) +## +currencySymbol = £ diff --git a/assets/excel/PHPExcel/locale/es/config b/assets/excel/PHPExcel/locale/es/config new file mode 100644 index 0000000..96cfa69 --- /dev/null +++ b/assets/excel/PHPExcel/locale/es/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = $ ## I'm surprised that the Excel Documentation suggests $ rather than € + + +## +## Excel Error Codes (For future use) +## +NULL = #¡NULO! +DIV0 = #¡DIV/0! +VALUE = #¡VALOR! +REF = #¡REF! +NAME = #¿NOMBRE? +NUM = #¡NÚM! +NA = #N/A diff --git a/assets/excel/PHPExcel/locale/es/functions b/assets/excel/PHPExcel/locale/es/functions new file mode 100644 index 0000000..4876269 --- /dev/null +++ b/assets/excel/PHPExcel/locale/es/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funciones de complementos y automatización +## +GETPIVOTDATA = IMPORTARDATOSDINAMICOS ## Devuelve los datos almacenados en un informe de tabla dinámica. + + +## +## Cube functions Funciones de cubo +## +CUBEKPIMEMBER = MIEMBROKPICUBO ## Devuelve un nombre, propiedad y medida de indicador de rendimiento clave (KPI) y muestra el nombre y la propiedad en la celda. Un KPI es una medida cuantificable, como los beneficios brutos mensuales o la facturación trimestral por empleado, que se usa para supervisar el rendimiento de una organización. +CUBEMEMBER = MIEMBROCUBO ## Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la existencia del miembro o la tupla en el cubo. +CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO ## Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la existencia de un nombre de miembro en el cubo y para devolver la propiedad especificada para este miembro. +CUBERANKEDMEMBER = MIEMBRORANGOCUBO ## Devuelve el miembro n, o clasificado, de un conjunto. Se usa para devolver uno o más elementos de un conjunto, por ejemplo, el representante con mejores ventas o los diez mejores alumnos. +CUBESET = CONJUNTOCUBO ## Define un conjunto calculado de miembros o tuplas mediante el envío de una expresión de conjunto al cubo en el servidor, lo que crea el conjunto y, después, devuelve dicho conjunto a Microsoft Office Excel. +CUBESETCOUNT = RECUENTOCONJUNTOCUBO ## Devuelve el número de elementos de un conjunto. +CUBEVALUE = VALORCUBO ## Devuelve un valor agregado de un cubo. + + +## +## Database functions Funciones de base de datos +## +DAVERAGE = BDPROMEDIO ## Devuelve el promedio de las entradas seleccionadas en la base de datos. +DCOUNT = BDCONTAR ## Cuenta el número de celdas que contienen números en una base de datos. +DCOUNTA = BDCONTARA ## Cuenta el número de celdas no vacías en una base de datos. +DGET = BDEXTRAER ## Extrae de una base de datos un único registro que cumple los criterios especificados. +DMAX = BDMAX ## Devuelve el valor máximo de las entradas seleccionadas de la base de datos. +DMIN = BDMIN ## Devuelve el valor mínimo de las entradas seleccionadas de la base de datos. +DPRODUCT = BDPRODUCTO ## Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados. +DSTDEV = BDDESVEST ## Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos. +DSTDEVP = BDDESVESTP ## Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos. +DSUM = BDSUMA ## Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios. +DVAR = BDVAR ## Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos. +DVARP = BDVARP ## Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos. + + +## +## Date and time functions Funciones de fecha y hora +## +DATE = FECHA ## Devuelve el número de serie correspondiente a una fecha determinada. +DATEVALUE = FECHANUMERO ## Convierte una fecha con formato de texto en un valor de número de serie. +DAY = DIA ## Convierte un número de serie en un valor de día del mes. +DAYS360 = DIAS360 ## Calcula el número de días entre dos fechas a partir de un año de 360 días. +EDATE = FECHA.MES ## Devuelve el número de serie de la fecha equivalente al número indicado de meses anteriores o posteriores a la fecha inicial. +EOMONTH = FIN.MES ## Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un número de meses especificado. +HOUR = HORA ## Convierte un número de serie en un valor de hora. +MINUTE = MINUTO ## Convierte un número de serie en un valor de minuto. +MONTH = MES ## Convierte un número de serie en un valor de mes. +NETWORKDAYS = DIAS.LAB ## Devuelve el número de todos los días laborables existentes entre dos fechas. +NOW = AHORA ## Devuelve el número de serie correspondiente a la fecha y hora actuales. +SECOND = SEGUNDO ## Convierte un número de serie en un valor de segundo. +TIME = HORA ## Devuelve el número de serie correspondiente a una hora determinada. +TIMEVALUE = HORANUMERO ## Convierte una hora con formato de texto en un valor de número de serie. +TODAY = HOY ## Devuelve el número de serie correspondiente al día actual. +WEEKDAY = DIASEM ## Convierte un número de serie en un valor de día de la semana. +WEEKNUM = NUM.DE.SEMANA ## Convierte un número de serie en un número que representa el lugar numérico correspondiente a una semana de un año. +WORKDAY = DIA.LAB ## Devuelve el número de serie de la fecha que tiene lugar antes o después de un número determinado de días laborables. +YEAR = AÑO ## Convierte un número de serie en un valor de año. +YEARFRAC = FRAC.AÑO ## Devuelve la fracción de año que representa el número total de días existentes entre el valor de fecha_inicial y el de fecha_final. + + +## +## Engineering functions Funciones de ingeniería +## +BESSELI = BESSELI ## Devuelve la función Bessel In(x) modificada. +BESSELJ = BESSELJ ## Devuelve la función Bessel Jn(x). +BESSELK = BESSELK ## Devuelve la función Bessel Kn(x) modificada. +BESSELY = BESSELY ## Devuelve la función Bessel Yn(x). +BIN2DEC = BIN.A.DEC ## Convierte un número binario en decimal. +BIN2HEX = BIN.A.HEX ## Convierte un número binario en hexadecimal. +BIN2OCT = BIN.A.OCT ## Convierte un número binario en octal. +COMPLEX = COMPLEJO ## Convierte coeficientes reales e imaginarios en un número complejo. +CONVERT = CONVERTIR ## Convierte un número de un sistema de medida a otro. +DEC2BIN = DEC.A.BIN ## Convierte un número decimal en binario. +DEC2HEX = DEC.A.HEX ## Convierte un número decimal en hexadecimal. +DEC2OCT = DEC.A.OCT ## Convierte un número decimal en octal. +DELTA = DELTA ## Comprueba si dos valores son iguales. +ERF = FUN.ERROR ## Devuelve la función de error. +ERFC = FUN.ERROR.COMPL ## Devuelve la función de error complementario. +GESTEP = MAYOR.O.IGUAL ## Comprueba si un número es mayor que un valor de umbral. +HEX2BIN = HEX.A.BIN ## Convierte un número hexadecimal en binario. +HEX2DEC = HEX.A.DEC ## Convierte un número hexadecimal en decimal. +HEX2OCT = HEX.A.OCT ## Convierte un número hexadecimal en octal. +IMABS = IM.ABS ## Devuelve el valor absoluto (módulo) de un número complejo. +IMAGINARY = IMAGINARIO ## Devuelve el coeficiente imaginario de un número complejo. +IMARGUMENT = IM.ANGULO ## Devuelve el argumento theta, un ángulo expresado en radianes. +IMCONJUGATE = IM.CONJUGADA ## Devuelve la conjugada compleja de un número complejo. +IMCOS = IM.COS ## Devuelve el coseno de un número complejo. +IMDIV = IM.DIV ## Devuelve el cociente de dos números complejos. +IMEXP = IM.EXP ## Devuelve el valor exponencial de un número complejo. +IMLN = IM.LN ## Devuelve el logaritmo natural (neperiano) de un número complejo. +IMLOG10 = IM.LOG10 ## Devuelve el logaritmo en base 10 de un número complejo. +IMLOG2 = IM.LOG2 ## Devuelve el logaritmo en base 2 de un número complejo. +IMPOWER = IM.POT ## Devuelve un número complejo elevado a una potencia entera. +IMPRODUCT = IM.PRODUCT ## Devuelve el producto de números complejos. +IMREAL = IM.REAL ## Devuelve el coeficiente real de un número complejo. +IMSIN = IM.SENO ## Devuelve el seno de un número complejo. +IMSQRT = IM.RAIZ2 ## Devuelve la raíz cuadrada de un número complejo. +IMSUB = IM.SUSTR ## Devuelve la diferencia entre dos números complejos. +IMSUM = IM.SUM ## Devuelve la suma de números complejos. +OCT2BIN = OCT.A.BIN ## Convierte un número octal en binario. +OCT2DEC = OCT.A.DEC ## Convierte un número octal en decimal. +OCT2HEX = OCT.A.HEX ## Convierte un número octal en hexadecimal. + + +## +## Financial functions Funciones financieras +## +ACCRINT = INT.ACUM ## Devuelve el interés acumulado de un valor bursátil con pagos de interés periódicos. +ACCRINTM = INT.ACUM.V ## Devuelve el interés acumulado de un valor bursátil con pagos de interés al vencimiento. +AMORDEGRC = AMORTIZ.PROGRE ## Devuelve la amortización de cada período contable mediante el uso de un coeficiente de amortización. +AMORLINC = AMORTIZ.LIN ## Devuelve la amortización de cada uno de los períodos contables. +COUPDAYBS = CUPON.DIAS.L1 ## Devuelve el número de días desde el principio del período de un cupón hasta la fecha de liquidación. +COUPDAYS = CUPON.DIAS ## Devuelve el número de días del período (entre dos cupones) donde se encuentra la fecha de liquidación. +COUPDAYSNC = CUPON.DIAS.L2 ## Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo cupón. +COUPNCD = CUPON.FECHA.L2 ## Devuelve la fecha del próximo cupón después de la fecha de liquidación. +COUPNUM = CUPON.NUM ## Devuelve el número de pagos de cupón entre la fecha de liquidación y la fecha de vencimiento. +COUPPCD = CUPON.FECHA.L1 ## Devuelve la fecha de cupón anterior a la fecha de liquidación. +CUMIPMT = PAGO.INT.ENTRE ## Devuelve el interés acumulado pagado entre dos períodos. +CUMPRINC = PAGO.PRINC.ENTRE ## Devuelve el capital acumulado pagado de un préstamo entre dos períodos. +DB = DB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización de saldo fijo. +DDB = DDB ## Devuelve la amortización de un bien durante un período específico a través del método de amortización por doble disminución de saldo u otro método que se especifique. +DISC = TASA.DESC ## Devuelve la tasa de descuento de un valor bursátil. +DOLLARDE = MONEDA.DEC ## Convierte una cotización de un valor bursátil expresada en forma fraccionaria en una cotización de un valor bursátil expresada en forma decimal. +DOLLARFR = MONEDA.FRAC ## Convierte una cotización de un valor bursátil expresada en forma decimal en una cotización de un valor bursátil expresada en forma fraccionaria. +DURATION = DURACION ## Devuelve la duración anual de un valor bursátil con pagos de interés periódico. +EFFECT = INT.EFECTIVO ## Devuelve la tasa de interés anual efectiva. +FV = VF ## Devuelve el valor futuro de una inversión. +FVSCHEDULE = VF.PLAN ## Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de interés compuesto. +INTRATE = TASA.INT ## Devuelve la tasa de interés para la inversión total de un valor bursátil. +IPMT = PAGOINT ## Devuelve el pago de intereses de una inversión durante un período determinado. +IRR = TIR ## Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos. +ISPMT = INT.PAGO.DIR ## Calcula el interés pagado durante un período específico de una inversión. +MDURATION = DURACION.MODIF ## Devuelve la duración de Macauley modificada de un valor bursátil con un valor nominal supuesto de 100 $. +MIRR = TIRM ## Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos y negativos a tasas diferentes. +NOMINAL = TASA.NOMINAL ## Devuelve la tasa nominal de interés anual. +NPER = NPER ## Devuelve el número de períodos de una inversión. +NPV = VNA ## Devuelve el valor neto actual de una inversión en función de una serie de flujos periódicos de efectivo y una tasa de descuento. +ODDFPRICE = PRECIO.PER.IRREGULAR.1 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un primer período impar. +ODDFYIELD = RENDTO.PER.IRREGULAR.1 ## Devuelve el rendimiento de un valor bursátil con un primer período impar. +ODDLPRICE = PRECIO.PER.IRREGULAR.2 ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un último período impar. +ODDLYIELD = RENDTO.PER.IRREGULAR.2 ## Devuelve el rendimiento de un valor bursátil con un último período impar. +PMT = PAGO ## Devuelve el pago periódico de una anualidad. +PPMT = PAGOPRIN ## Devuelve el pago de capital de una inversión durante un período determinado. +PRICE = PRECIO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una tasa de interés periódico. +PRICEDISC = PRECIO.DESCUENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con descuento. +PRICEMAT = PRECIO.VENCIMIENTO ## Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga interés a su vencimiento. +PV = VALACT ## Devuelve el valor actual de una inversión. +RATE = TASA ## Devuelve la tasa de interés por período de una anualidad. +RECEIVED = CANTIDAD.RECIBIDA ## Devuelve la cantidad recibida al vencimiento de un valor bursátil completamente invertido. +SLN = SLN ## Devuelve la amortización por método directo de un bien en un período dado. +SYD = SYD ## Devuelve la amortización por suma de dígitos de los años de un bien durante un período especificado. +TBILLEQ = LETRA.DE.TES.EQV.A.BONO ## Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.) +TBILLPRICE = LETRA.DE.TES.PRECIO ## Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de EE.UU.) +TBILLYIELD = LETRA.DE.TES.RENDTO ## Devuelve el rendimiento de una letra del Tesoro (de EE.UU.) +VDB = DVS ## Devuelve la amortización de un bien durante un período específico o parcial a través del método de cálculo del saldo en disminución. +XIRR = TIR.NO.PER ## Devuelve la tasa interna de retorno para un flujo de efectivo que no es necesariamente periódico. +XNPV = VNA.NO.PER ## Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente periódico. +YIELD = RENDTO ## Devuelve el rendimiento de un valor bursátil que paga intereses periódicos. +YIELDDISC = RENDTO.DESC ## Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo, una letra del Tesoro (de EE.UU.) +YIELDMAT = RENDTO.VENCTO ## Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento. + + +## +## Information functions Funciones de información +## +CELL = CELDA ## Devuelve información acerca del formato, la ubicación o el contenido de una celda. +ERROR.TYPE = TIPO.DE.ERROR ## Devuelve un número que corresponde a un tipo de error. +INFO = INFO ## Devuelve información acerca del entorno operativo en uso. +ISBLANK = ESBLANCO ## Devuelve VERDADERO si el valor está en blanco. +ISERR = ESERR ## Devuelve VERDADERO si el valor es cualquier valor de error excepto #N/A. +ISERROR = ESERROR ## Devuelve VERDADERO si el valor es cualquier valor de error. +ISEVEN = ES.PAR ## Devuelve VERDADERO si el número es par. +ISLOGICAL = ESLOGICO ## Devuelve VERDADERO si el valor es un valor lógico. +ISNA = ESNOD ## Devuelve VERDADERO si el valor es el valor de error #N/A. +ISNONTEXT = ESNOTEXTO ## Devuelve VERDADERO si el valor no es texto. +ISNUMBER = ESNUMERO ## Devuelve VERDADERO si el valor es un número. +ISODD = ES.IMPAR ## Devuelve VERDADERO si el número es impar. +ISREF = ESREF ## Devuelve VERDADERO si el valor es una referencia. +ISTEXT = ESTEXTO ## Devuelve VERDADERO si el valor es texto. +N = N ## Devuelve un valor convertido en un número. +NA = ND ## Devuelve el valor de error #N/A. +TYPE = TIPO ## Devuelve un número que indica el tipo de datos de un valor. + + +## +## Logical functions Funciones lógicas +## +AND = Y ## Devuelve VERDADERO si todos sus argumentos son VERDADERO. +FALSE = FALSO ## Devuelve el valor lógico FALSO. +IF = SI ## Especifica una prueba lógica que realizar. +IFERROR = SI.ERROR ## Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario, devuelve el resultado de la fórmula. +NOT = NO ## Invierte el valor lógico del argumento. +OR = O ## Devuelve VERDADERO si cualquier argumento es VERDADERO. +TRUE = VERDADERO ## Devuelve el valor lógico VERDADERO. + + +## +## Lookup and reference functions Funciones de búsqueda y referencia +## +ADDRESS = DIRECCION ## Devuelve una referencia como texto a una sola celda de una hoja de cálculo. +AREAS = AREAS ## Devuelve el número de áreas de una referencia. +CHOOSE = ELEGIR ## Elige un valor de una lista de valores. +COLUMN = COLUMNA ## Devuelve el número de columna de una referencia. +COLUMNS = COLUMNAS ## Devuelve el número de columnas de una referencia. +HLOOKUP = BUSCARH ## Busca en la fila superior de una matriz y devuelve el valor de la celda indicada. +HYPERLINK = HIPERVINCULO ## Crea un acceso directo o un salto que abre un documento almacenado en un servidor de red, en una intranet o en Internet. +INDEX = INDICE ## Usa un índice para elegir un valor de una referencia o matriz. +INDIRECT = INDIRECTO ## Devuelve una referencia indicada por un valor de texto. +LOOKUP = BUSCAR ## Busca valores de un vector o una matriz. +MATCH = COINCIDIR ## Busca valores de una referencia o matriz. +OFFSET = DESREF ## Devuelve un desplazamiento de referencia respecto a una referencia dada. +ROW = FILA ## Devuelve el número de fila de una referencia. +ROWS = FILAS ## Devuelve el número de filas de una referencia. +RTD = RDTR ## Recupera datos en tiempo real desde un programa compatible con la automatización COM (automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o herramienta de entorno. La automatización, antes denominada automatización OLE, es un estándar de la industria y una función del Modelo de objetos componentes (COM).). +TRANSPOSE = TRANSPONER ## Devuelve la transposición de una matriz. +VLOOKUP = BUSCARV ## Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el valor de una celda. + + +## +## Math and trigonometry functions Funciones matemáticas y trigonométricas +## +ABS = ABS ## Devuelve el valor absoluto de un número. +ACOS = ACOS ## Devuelve el arcocoseno de un número. +ACOSH = ACOSH ## Devuelve el coseno hiperbólico inverso de un número. +ASIN = ASENO ## Devuelve el arcoseno de un número. +ASINH = ASENOH ## Devuelve el seno hiperbólico inverso de un número. +ATAN = ATAN ## Devuelve la arcotangente de un número. +ATAN2 = ATAN2 ## Devuelve la arcotangente de las coordenadas "x" e "y". +ATANH = ATANH ## Devuelve la tangente hiperbólica inversa de un número. +CEILING = MULTIPLO.SUPERIOR ## Redondea un número al entero más próximo o al múltiplo significativo más cercano. +COMBIN = COMBINAT ## Devuelve el número de combinaciones para un número determinado de objetos. +COS = COS ## Devuelve el coseno de un número. +COSH = COSH ## Devuelve el coseno hiperbólico de un número. +DEGREES = GRADOS ## Convierte radianes en grados. +EVEN = REDONDEA.PAR ## Redondea un número hasta el entero par más próximo. +EXP = EXP ## Devuelve e elevado a la potencia de un número dado. +FACT = FACT ## Devuelve el factorial de un número. +FACTDOUBLE = FACT.DOBLE ## Devuelve el factorial doble de un número. +FLOOR = MULTIPLO.INFERIOR ## Redondea un número hacia abajo, en dirección hacia cero. +GCD = M.C.D ## Devuelve el máximo común divisor. +INT = ENTERO ## Redondea un número hacia abajo hasta el entero más próximo. +LCM = M.C.M ## Devuelve el mínimo común múltiplo. +LN = LN ## Devuelve el logaritmo natural (neperiano) de un número. +LOG = LOG ## Devuelve el logaritmo de un número en una base especificada. +LOG10 = LOG10 ## Devuelve el logaritmo en base 10 de un número. +MDETERM = MDETERM ## Devuelve la determinante matricial de una matriz. +MINVERSE = MINVERSA ## Devuelve la matriz inversa de una matriz. +MMULT = MMULT ## Devuelve el producto de matriz de dos matrices. +MOD = RESIDUO ## Devuelve el resto de la división. +MROUND = REDOND.MULT ## Devuelve un número redondeado al múltiplo deseado. +MULTINOMIAL = MULTINOMIAL ## Devuelve el polinomio de un conjunto de números. +ODD = REDONDEA.IMPAR ## Redondea un número hacia arriba hasta el entero impar más próximo. +PI = PI ## Devuelve el valor de pi. +POWER = POTENCIA ## Devuelve el resultado de elevar un número a una potencia. +PRODUCT = PRODUCTO ## Multiplica sus argumentos. +QUOTIENT = COCIENTE ## Devuelve la parte entera de una división. +RADIANS = RADIANES ## Convierte grados en radianes. +RAND = ALEATORIO ## Devuelve un número aleatorio entre 0 y 1. +RANDBETWEEN = ALEATORIO.ENTRE ## Devuelve un número aleatorio entre los números que especifique. +ROMAN = NUMERO.ROMANO ## Convierte un número arábigo en número romano, con formato de texto. +ROUND = REDONDEAR ## Redondea un número al número de decimales especificado. +ROUNDDOWN = REDONDEAR.MENOS ## Redondea un número hacia abajo, en dirección hacia cero. +ROUNDUP = REDONDEAR.MAS ## Redondea un número hacia arriba, en dirección contraria a cero. +SERIESSUM = SUMA.SERIES ## Devuelve la suma de una serie de potencias en función de la fórmula. +SIGN = SIGNO ## Devuelve el signo de un número. +SIN = SENO ## Devuelve el seno de un ángulo determinado. +SINH = SENOH ## Devuelve el seno hiperbólico de un número. +SQRT = RAIZ ## Devuelve la raíz cuadrada positiva de un número. +SQRTPI = RAIZ2PI ## Devuelve la raíz cuadrada de un número multiplicado por PI (número * pi). +SUBTOTAL = SUBTOTALES ## Devuelve un subtotal en una lista o base de datos. +SUM = SUMA ## Suma sus argumentos. +SUMIF = SUMAR.SI ## Suma las celdas especificadas que cumplen unos criterios determinados. +SUMIFS = SUMAR.SI.CONJUNTO ## Suma las celdas de un rango que cumplen varios criterios. +SUMPRODUCT = SUMAPRODUCTO ## Devuelve la suma de los productos de los correspondientes componentes de matriz. +SUMSQ = SUMA.CUADRADOS ## Devuelve la suma de los cuadrados de los argumentos. +SUMX2MY2 = SUMAX2MENOSY2 ## Devuelve la suma de la diferencia de los cuadrados de los valores correspondientes de dos matrices. +SUMX2PY2 = SUMAX2MASY2 ## Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos matrices. +SUMXMY2 = SUMAXMENOSY2 ## Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de dos matrices. +TAN = TAN ## Devuelve la tangente de un número. +TANH = TANH ## Devuelve la tangente hiperbólica de un número. +TRUNC = TRUNCAR ## Trunca un número a un entero. + + +## +## Statistical functions Funciones estadísticas +## +AVEDEV = DESVPROM ## Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos. +AVERAGE = PROMEDIO ## Devuelve el promedio de sus argumentos. +AVERAGEA = PROMEDIOA ## Devuelve el promedio de sus argumentos, incluidos números, texto y valores lógicos. +AVERAGEIF = PROMEDIO.SI ## Devuelve el promedio (media aritmética) de todas las celdas de un rango que cumplen unos criterios determinados. +AVERAGEIFS = PROMEDIO.SI.CONJUNTO ## Devuelve el promedio (media aritmética) de todas las celdas que cumplen múltiples criterios. +BETADIST = DISTR.BETA ## Devuelve la función de distribución beta acumulativa. +BETAINV = DISTR.BETA.INV ## Devuelve la función inversa de la función de distribución acumulativa de una distribución beta especificada. +BINOMDIST = DISTR.BINOM ## Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribución binomial. +CHIDIST = DISTR.CHI ## Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. +CHIINV = PRUEBA.CHI.INV ## Devuelve la función inversa de la probabilidad de una variable aleatoria continua siguiendo una distribución chi cuadrado de una sola cola. +CHITEST = PRUEBA.CHI ## Devuelve la prueba de independencia. +CONFIDENCE = INTERVALO.CONFIANZA ## Devuelve el intervalo de confianza de la media de una población. +CORREL = COEF.DE.CORREL ## Devuelve el coeficiente de correlación entre dos conjuntos de datos. +COUNT = CONTAR ## Cuenta cuántos números hay en la lista de argumentos. +COUNTA = CONTARA ## Cuenta cuántos valores hay en la lista de argumentos. +COUNTBLANK = CONTAR.BLANCO ## Cuenta el número de celdas en blanco de un rango. +COUNTIF = CONTAR.SI ## Cuenta el número de celdas, dentro del rango, que cumplen el criterio especificado. +COUNTIFS = CONTAR.SI.CONJUNTO ## Cuenta el número de celdas, dentro del rango, que cumplen varios criterios. +COVAR = COVAR ## Devuelve la covarianza, que es el promedio de los productos de las desviaciones para cada pareja de puntos de datos. +CRITBINOM = BINOM.CRIT ## Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a un valor de criterio. +DEVSQ = DESVIA2 ## Devuelve la suma de los cuadrados de las desviaciones. +EXPONDIST = DISTR.EXP ## Devuelve la distribución exponencial. +FDIST = DISTR.F ## Devuelve la distribución de probabilidad F. +FINV = DISTR.F.INV ## Devuelve la función inversa de la distribución de probabilidad F. +FISHER = FISHER ## Devuelve la transformación Fisher. +FISHERINV = PRUEBA.FISHER.INV ## Devuelve la función inversa de la transformación Fisher. +FORECAST = PRONOSTICO ## Devuelve un valor en una tendencia lineal. +FREQUENCY = FRECUENCIA ## Devuelve una distribución de frecuencia como una matriz vertical. +FTEST = PRUEBA.F ## Devuelve el resultado de una prueba F. +GAMMADIST = DISTR.GAMMA ## Devuelve la distribución gamma. +GAMMAINV = DISTR.GAMMA.INV ## Devuelve la función inversa de la distribución gamma acumulativa. +GAMMALN = GAMMA.LN ## Devuelve el logaritmo natural de la función gamma, G(x). +GEOMEAN = MEDIA.GEOM ## Devuelve la media geométrica. +GROWTH = CRECIMIENTO ## Devuelve valores en una tendencia exponencial. +HARMEAN = MEDIA.ARMO ## Devuelve la media armónica. +HYPGEOMDIST = DISTR.HIPERGEOM ## Devuelve la distribución hipergeométrica. +INTERCEPT = INTERSECCION.EJE ## Devuelve la intersección de la línea de regresión lineal. +KURT = CURTOSIS ## Devuelve la curtosis de un conjunto de datos. +LARGE = K.ESIMO.MAYOR ## Devuelve el k-ésimo mayor valor de un conjunto de datos. +LINEST = ESTIMACION.LINEAL ## Devuelve los parámetros de una tendencia lineal. +LOGEST = ESTIMACION.LOGARITMICA ## Devuelve los parámetros de una tendencia exponencial. +LOGINV = DISTR.LOG.INV ## Devuelve la función inversa de la distribución logarítmico-normal. +LOGNORMDIST = DISTR.LOG.NORM ## Devuelve la distribución logarítmico-normal acumulativa. +MAX = MAX ## Devuelve el valor máximo de una lista de argumentos. +MAXA = MAXA ## Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y valores lógicos. +MEDIAN = MEDIANA ## Devuelve la mediana de los números dados. +MIN = MIN ## Devuelve el valor mínimo de una lista de argumentos. +MINA = MINA ## Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y valores lógicos. +MODE = MODA ## Devuelve el valor más común de un conjunto de datos. +NEGBINOMDIST = NEGBINOMDIST ## Devuelve la distribución binomial negativa. +NORMDIST = DISTR.NORM ## Devuelve la distribución normal acumulativa. +NORMINV = DISTR.NORM.INV ## Devuelve la función inversa de la distribución normal acumulativa. +NORMSDIST = DISTR.NORM.ESTAND ## Devuelve la distribución normal estándar acumulativa. +NORMSINV = DISTR.NORM.ESTAND.INV ## Devuelve la función inversa de la distribución normal estándar acumulativa. +PEARSON = PEARSON ## Devuelve el coeficiente de momento de correlación de producto Pearson. +PERCENTILE = PERCENTIL ## Devuelve el k-ésimo percentil de los valores de un rango. +PERCENTRANK = RANGO.PERCENTIL ## Devuelve el rango porcentual de un valor de un conjunto de datos. +PERMUT = PERMUTACIONES ## Devuelve el número de permutaciones de un número determinado de objetos. +POISSON = POISSON ## Devuelve la distribución de Poisson. +PROB = PROBABILIDAD ## Devuelve la probabilidad de que los valores de un rango se encuentren entre dos límites. +QUARTILE = CUARTIL ## Devuelve el cuartil de un conjunto de datos. +RANK = JERARQUIA ## Devuelve la jerarquía de un número en una lista de números. +RSQ = COEFICIENTE.R2 ## Devuelve el cuadrado del coeficiente de momento de correlación de producto Pearson. +SKEW = COEFICIENTE.ASIMETRIA ## Devuelve la asimetría de una distribución. +SLOPE = PENDIENTE ## Devuelve la pendiente de la línea de regresión lineal. +SMALL = K.ESIMO.MENOR ## Devuelve el k-ésimo menor valor de un conjunto de datos. +STANDARDIZE = NORMALIZACION ## Devuelve un valor normalizado. +STDEV = DESVEST ## Calcula la desviación estándar a partir de una muestra. +STDEVA = DESVESTA ## Calcula la desviación estándar a partir de una muestra, incluidos números, texto y valores lógicos. +STDEVP = DESVESTP ## Calcula la desviación estándar en función de toda la población. +STDEVPA = DESVESTPA ## Calcula la desviación estándar en función de toda la población, incluidos números, texto y valores lógicos. +STEYX = ERROR.TIPICO.XY ## Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión. +TDIST = DISTR.T ## Devuelve la distribución de t de Student. +TINV = DISTR.T.INV ## Devuelve la función inversa de la distribución de t de Student. +TREND = TENDENCIA ## Devuelve valores en una tendencia lineal. +TRIMMEAN = MEDIA.ACOTADA ## Devuelve la media del interior de un conjunto de datos. +TTEST = PRUEBA.T ## Devuelve la probabilidad asociada a una prueba t de Student. +VAR = VAR ## Calcula la varianza en función de una muestra. +VARA = VARA ## Calcula la varianza en función de una muestra, incluidos números, texto y valores lógicos. +VARP = VARP ## Calcula la varianza en función de toda la población. +VARPA = VARPA ## Calcula la varianza en función de toda la población, incluidos números, texto y valores lógicos. +WEIBULL = DIST.WEIBULL ## Devuelve la distribución de Weibull. +ZTEST = PRUEBA.Z ## Devuelve el valor de una probabilidad de una cola de una prueba z. + + +## +## Text functions Funciones de texto +## +ASC = ASC ## Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de una cadena de caracteres en caracteres de ancho medio (de un byte). +BAHTTEXT = TEXTOBAHT ## Convierte un número en texto, con el formato de moneda ß (Baht). +CHAR = CARACTER ## Devuelve el carácter especificado por el número de código. +CLEAN = LIMPIAR ## Quita del texto todos los caracteres no imprimibles. +CODE = CODIGO ## Devuelve un código numérico del primer carácter de una cadena de texto. +CONCATENATE = CONCATENAR ## Concatena varios elementos de texto en uno solo. +DOLLAR = MONEDA ## Convierte un número en texto, con el formato de moneda $ (dólar). +EXACT = IGUAL ## Comprueba si dos valores de texto son idénticos. +FIND = ENCONTRAR ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). +FINDB = ENCONTRARB ## Busca un valor de texto dentro de otro (distingue mayúsculas de minúsculas). +FIXED = DECIMAL ## Da formato a un número como texto con un número fijo de decimales. +JIS = JIS ## Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una cadena de caracteres en caracteres de ancho completo (de dos bytes). +LEFT = IZQUIERDA ## Devuelve los caracteres del lado izquierdo de un valor de texto. +LEFTB = IZQUIERDAB ## Devuelve los caracteres del lado izquierdo de un valor de texto. +LEN = LARGO ## Devuelve el número de caracteres de una cadena de texto. +LENB = LARGOB ## Devuelve el número de caracteres de una cadena de texto. +LOWER = MINUSC ## Pone el texto en minúsculas. +MID = EXTRAE ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. +MIDB = EXTRAEB ## Devuelve un número específico de caracteres de una cadena de texto que comienza en la posición que se especifique. +PHONETIC = FONETICO ## Extrae los caracteres fonéticos (furigana) de una cadena de texto. +PROPER = NOMPROPIO ## Pone en mayúscula la primera letra de cada palabra de un valor de texto. +REPLACE = REEMPLAZAR ## Reemplaza caracteres de texto. +REPLACEB = REEMPLAZARB ## Reemplaza caracteres de texto. +REPT = REPETIR ## Repite el texto un número determinado de veces. +RIGHT = DERECHA ## Devuelve los caracteres del lado derecho de un valor de texto. +RIGHTB = DERECHAB ## Devuelve los caracteres del lado derecho de un valor de texto. +SEARCH = HALLAR ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). +SEARCHB = HALLARB ## Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas). +SUBSTITUTE = SUSTITUIR ## Sustituye texto nuevo por texto antiguo en una cadena de texto. +T = T ## Convierte sus argumentos a texto. +TEXT = TEXTO ## Da formato a un número y lo convierte en texto. +TRIM = ESPACIOS ## Quita los espacios del texto. +UPPER = MAYUSC ## Pone el texto en mayúsculas. +VALUE = VALOR ## Convierte un argumento de texto en un número. diff --git a/assets/excel/PHPExcel/locale/fi/config b/assets/excel/PHPExcel/locale/fi/config new file mode 100644 index 0000000..498cf4c --- /dev/null +++ b/assets/excel/PHPExcel/locale/fi/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = $ # Symbol not known, should it be a € (Euro)? + + +## +## Excel Error Codes (For future use) +## +NULL = #TYHJÄ! +DIV0 = #JAKO/0! +VALUE = #ARVO! +REF = #VIITTAUS! +NAME = #NIMI? +NUM = #LUKU! +NA = #PUUTTUU diff --git a/assets/excel/PHPExcel/locale/fi/functions b/assets/excel/PHPExcel/locale/fi/functions new file mode 100644 index 0000000..6a7c2b3 --- /dev/null +++ b/assets/excel/PHPExcel/locale/fi/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Apuohjelma- ja automaatiofunktiot +## +GETPIVOTDATA = NOUDA.PIVOT.TIEDOT ## Palauttaa pivot-taulukkoraporttiin tallennettuja tietoja. + + +## +## Cube functions Kuutiofunktiot +## +CUBEKPIMEMBER = KUUTIOKPIJÄSEN ## Palauttaa suorituskykyilmaisimen (KPI) nimen, ominaisuuden sekä mitan ja näyttää nimen sekä ominaisuuden solussa. KPI on mitattavissa oleva suure, kuten kuukauden bruttotuotto tai vuosineljänneksen työntekijäkohtainen liikevaihto, joiden avulla tarkkaillaan organisaation suorituskykyä. +CUBEMEMBER = KUUTIONJÄSEN ## Palauttaa kuutiohierarkian jäsenen tai monikon. Tällä funktiolla voit tarkistaa, että jäsen tai monikko on olemassa kuutiossa. +CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS ## Palauttaa kuution jäsenominaisuuden arvon. Tällä funktiolla voit tarkistaa, että nimi on olemassa kuutiossa, ja palauttaa tämän jäsenen määritetyn ominaisuuden. +CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN ## Palauttaa joukon n:nnen jäsenen. Tällä funktiolla voit palauttaa joukosta elementtejä, kuten parhaan myyjän tai 10 parasta opiskelijaa. +CUBESET = KUUTIOJOUKKO ## Määrittää lasketun jäsen- tai monikkojoukon lähettämällä joukon lausekkeita palvelimessa olevalle kuutiolle. Palvelin luo joukon ja palauttaa sen Microsoft Office Excelille. +CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ ## Palauttaa joukon kohteiden määrän. +CUBEVALUE = KUUTIONARVO ## Palauttaa koostetun arvon kuutiosta. + + +## +## Database functions Tietokantafunktiot +## +DAVERAGE = TKESKIARVO ## Palauttaa valittujen tietokantamerkintöjen keskiarvon. +DCOUNT = TLASKE ## Laskee tietokannan lukuja sisältävien solujen määrän. +DCOUNTA = TLASKEA ## Laskee tietokannan tietoja sisältävien solujen määrän. +DGET = TNOUDA ## Hakee määritettyjä ehtoja vastaavan tietueen tietokannasta. +DMAX = TMAKS ## Palauttaa suurimman arvon tietokannasta valittujen arvojen joukosta. +DMIN = TMIN ## Palauttaa pienimmän arvon tietokannasta valittujen arvojen joukosta. +DPRODUCT = TTULO ## Kertoo määritetyn ehdon täyttävien tietokannan tietueiden tietyssä kentässä olevat arvot. +DSTDEV = TKESKIHAJONTA ## Laskee keskihajonnan tietokannasta valituista arvoista muodostuvan otoksen perusteella. +DSTDEVP = TKESKIHAJONTAP ## Laskee keskihajonnan tietokannasta valittujen arvojen koko populaation perusteella. +DSUM = TSUMMA ## Lisää luvut määritetyn ehdon täyttävien tietokannan tietueiden kenttäsarakkeeseen. +DVAR = TVARIANSSI ## Laskee varianssin tietokannasta valittujen arvojen otoksen perusteella. +DVARP = TVARIANSSIP ## Laskee varianssin tietokannasta valittujen arvojen koko populaation perusteella. + + +## +## Date and time functions Päivämäärä- ja aikafunktiot +## +DATE = PÄIVÄYS ## Palauttaa annetun päivämäärän järjestysluvun. +DATEVALUE = PÄIVÄYSARVO ## Muuntaa tekstimuodossa olevan päivämäärän järjestysluvuksi. +DAY = PÄIVÄ ## Muuntaa järjestysluvun kuukauden päiväksi. +DAYS360 = PÄIVÄT360 ## Laskee kahden päivämäärän välisten päivien määrän käyttäen perustana 360-päiväistä vuotta. +EDATE = PÄIVÄ.KUUKAUSI ## Palauttaa järjestyslukuna päivämäärän, joka poikkeaa aloituspäivän päivämäärästä annetun kuukausimäärän verran joko eteen- tai taaksepäin. +EOMONTH = KUUKAUSI.LOPPU ## Palauttaa järjestyslukuna sen kuukauden viimeisen päivämäärän, joka poikkeaa annetun kuukausimäärän verran eteen- tai taaksepäin. +HOUR = TUNNIT ## Muuntaa järjestysluvun tunneiksi. +MINUTE = MINUUTIT ## Muuntaa järjestysluvun minuuteiksi. +MONTH = KUUKAUSI ## Muuntaa järjestysluvun kuukausiksi. +NETWORKDAYS = TYÖPÄIVÄT ## Palauttaa kahden päivämäärän välissä olevien täysien työpäivien määrän. +NOW = NYT ## Palauttaa kuluvan päivämäärän ja ajan järjestysnumeron. +SECOND = SEKUNNIT ## Muuntaa järjestysluvun sekunneiksi. +TIME = AIKA ## Palauttaa annetun kellonajan järjestysluvun. +TIMEVALUE = AIKA_ARVO ## Muuntaa tekstimuodossa olevan kellonajan järjestysluvuksi. +TODAY = TÄMÄ.PÄIVÄ ## Palauttaa kuluvan päivän päivämäärän järjestysluvun. +WEEKDAY = VIIKONPÄIVÄ ## Muuntaa järjestysluvun viikonpäiväksi. +WEEKNUM = VIIKKO.NRO ## Muuntaa järjestysluvun luvuksi, joka ilmaisee viikon järjestysluvun vuoden alusta laskettuna. +WORKDAY = TYÖPÄIVÄ ## Palauttaa järjestysluvun päivämäärälle, joka sijaitsee annettujen työpäivien verran eteen tai taaksepäin. +YEAR = VUOSI ## Muuntaa järjestysluvun vuosiksi. +YEARFRAC = VUOSI.OSA ## Palauttaa määritettyjen päivämäärien (aloituspäivä ja lopetuspäivä) välisen osan vuodesta. + + +## +## Engineering functions Tekniset funktiot +## +BESSELI = BESSELI ## Palauttaa muunnetun Bessel-funktion In(x). +BESSELJ = BESSELJ ## Palauttaa Bessel-funktion Jn(x). +BESSELK = BESSELK ## Palauttaa muunnetun Bessel-funktion Kn(x). +BESSELY = BESSELY ## Palauttaa Bessel-funktion Yn(x). +BIN2DEC = BINDES ## Muuntaa binaariluvun desimaaliluvuksi. +BIN2HEX = BINHEKSA ## Muuntaa binaariluvun heksadesimaaliluvuksi. +BIN2OCT = BINOKT ## Muuntaa binaariluvun oktaaliluvuksi. +COMPLEX = KOMPLEKSI ## Muuntaa reaali- ja imaginaariosien kertoimet kompleksiluvuksi. +CONVERT = MUUNNA ## Muuntaa luvun toisen mittajärjestelmän mukaiseksi. +DEC2BIN = DESBIN ## Muuntaa desimaaliluvun binaariluvuksi. +DEC2HEX = DESHEKSA ## Muuntaa kymmenjärjestelmän luvun heksadesimaaliluvuksi. +DEC2OCT = DESOKT ## Muuntaa kymmenjärjestelmän luvun oktaaliluvuksi. +DELTA = SAMA.ARVO ## Tarkistaa, ovatko kaksi arvoa yhtä suuria. +ERF = VIRHEFUNKTIO ## Palauttaa virhefunktion. +ERFC = VIRHEFUNKTIO.KOMPLEMENTTI ## Palauttaa komplementtivirhefunktion. +GESTEP = RAJA ## Testaa, onko luku suurempi kuin kynnysarvo. +HEX2BIN = HEKSABIN ## Muuntaa heksadesimaaliluvun binaariluvuksi. +HEX2DEC = HEKSADES ## Muuntaa heksadesimaaliluvun desimaaliluvuksi. +HEX2OCT = HEKSAOKT ## Muuntaa heksadesimaaliluvun oktaaliluvuksi. +IMABS = KOMPLEKSI.ITSEISARVO ## Palauttaa kompleksiluvun itseisarvon (moduluksen). +IMAGINARY = KOMPLEKSI.IMAG ## Palauttaa kompleksiluvun imaginaariosan kertoimen. +IMARGUMENT = KOMPLEKSI.ARG ## Palauttaa theeta-argumentin, joka on radiaaneina annettu kulma. +IMCONJUGATE = KOMPLEKSI.KONJ ## Palauttaa kompleksiluvun konjugaattiluvun. +IMCOS = KOMPLEKSI.COS ## Palauttaa kompleksiluvun kosinin. +IMDIV = KOMPLEKSI.OSAM ## Palauttaa kahden kompleksiluvun osamäärän. +IMEXP = KOMPLEKSI.EKSP ## Palauttaa kompleksiluvun eksponentin. +IMLN = KOMPLEKSI.LN ## Palauttaa kompleksiluvun luonnollisen logaritmin. +IMLOG10 = KOMPLEKSI.LOG10 ## Palauttaa kompleksiluvun kymmenkantaisen logaritmin. +IMLOG2 = KOMPLEKSI.LOG2 ## Palauttaa kompleksiluvun kaksikantaisen logaritmin. +IMPOWER = KOMPLEKSI.POT ## Palauttaa kokonaislukupotenssiin korotetun kompleksiluvun. +IMPRODUCT = KOMPLEKSI.TULO ## Palauttaa kompleksilukujen tulon. +IMREAL = KOMPLEKSI.REAALI ## Palauttaa kompleksiluvun reaaliosan kertoimen. +IMSIN = KOMPLEKSI.SIN ## Palauttaa kompleksiluvun sinin. +IMSQRT = KOMPLEKSI.NELIÖJ ## Palauttaa kompleksiluvun neliöjuuren. +IMSUB = KOMPLEKSI.EROTUS ## Palauttaa kahden kompleksiluvun erotuksen. +IMSUM = KOMPLEKSI.SUM ## Palauttaa kompleksilukujen summan. +OCT2BIN = OKTBIN ## Muuntaa oktaaliluvun binaariluvuksi. +OCT2DEC = OKTDES ## Muuntaa oktaaliluvun desimaaliluvuksi. +OCT2HEX = OKTHEKSA ## Muuntaa oktaaliluvun heksadesimaaliluvuksi. + + +## +## Financial functions Rahoitusfunktiot +## +ACCRINT = KERTYNYT.KORKO ## Laskee arvopaperille kertyneen koron, kun korko kertyy säännöllisin väliajoin. +ACCRINTM = KERTYNYT.KORKO.LOPUSSA ## Laskee arvopaperille kertyneen koron, kun korko maksetaan eräpäivänä. +AMORDEGRC = AMORDEGRC ## Laskee kunkin laskentakauden poiston poistokerrointa käyttämällä. +AMORLINC = AMORLINC ## Palauttaa kunkin laskentakauden poiston. +COUPDAYBS = KORKOPÄIVÄT.ALUSTA ## Palauttaa koronmaksukauden aloituspäivän ja tilityspäivän välisen ajanjakson päivien määrän. +COUPDAYS = KORKOPÄIVÄT ## Palauttaa päivien määrän koronmaksukaudelta, johon tilityspäivä kuuluu. +COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA ## Palauttaa tilityspäivän ja seuraavan koronmaksupäivän välisen ajanjakson päivien määrän. +COUPNCD = KORKOMAKSU.SEURAAVA ## Palauttaa tilityspäivän jälkeisen seuraavan koronmaksupäivän. +COUPNUM = KORKOPÄIVÄJAKSOT ## Palauttaa arvopaperin ostopäivän ja erääntymispäivän välisten koronmaksupäivien määrän. +COUPPCD = KORKOPÄIVÄ.EDELLINEN ## Palauttaa tilityspäivää edeltävän koronmaksupäivän. +CUMIPMT = MAKSETTU.KORKO ## Palauttaa kahden jakson välisenä aikana kertyneen koron. +CUMPRINC = MAKSETTU.LYHENNYS ## Palauttaa lainalle kahden jakson välisenä aikana kertyneen lyhennyksen. +DB = DB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. +DDB = DDB ## Palauttaa kauden kirjanpidollisen poiston amerikkalaisen DDB-menetelmän (Double-Declining Balance) tai jonkin muun määrittämäsi menetelmän mukaan. +DISC = DISKONTTOKORKO ## Palauttaa arvopaperin diskonttokoron. +DOLLARDE = VALUUTTA.DES ## Muuntaa murtolukuna ilmoitetun valuuttamäärän desimaaliluvuksi. +DOLLARFR = VALUUTTA.MURTO ## Muuntaa desimaalilukuna ilmaistun valuuttamäärän murtoluvuksi. +DURATION = KESTO ## Palauttaa keston arvopaperille, jonka koronmaksu tapahtuu säännöllisesti. +EFFECT = KORKO.EFEKT ## Palauttaa todellisen vuosikoron. +FV = TULEVA.ARVO ## Palauttaa sijoituksen tulevan arvon. +FVSCHEDULE = TULEVA.ARVO.ERIKORKO ## Palauttaa pääoman tulevan arvon, kun pääomalle on kertynyt korkoa vaihtelevasti. +INTRATE = KORKO.ARVOPAPERI ## Palauttaa arvopaperin korkokannan täysin sijoitetulle arvopaperille. +IPMT = IPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona kertyvän koron. +IRR = SISÄINEN.KORKO ## Laskee sisäisen korkokannan kassavirrasta muodostuvalle sarjalle. +ISPMT = ONMAKSU ## Laskee sijoituksen maksetun koron tietyllä jaksolla. +MDURATION = KESTO.MUUNN ## Palauttaa muunnetun Macauley-keston arvopaperille, jonka oletettu nimellisarvo on 100 euroa. +MIRR = MSISÄINEN ## Palauttaa sisäisen korkokannan, kun positiivisten ja negatiivisten kassavirtojen rahoituskorko on erilainen. +NOMINAL = KORKO.VUOSI ## Palauttaa vuosittaisen nimelliskoron. +NPER = NJAKSO ## Palauttaa sijoituksen jaksojen määrän. +NPV = NNA ## Palauttaa sijoituksen nykyarvon toistuvista kassavirroista muodostuvan sarjan ja diskonttokoron perusteella. +ODDFPRICE = PARITON.ENS.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa ensimmäinen jakso on pariton. +ODDFYIELD = PARITON.ENS.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa ensimmäinen jakso on pariton. +ODDLPRICE = PARITON.VIIM.NIMELLISARVO ## Palauttaa arvopaperin hinnan tilanteessa, jossa viimeinen jakso on pariton. +ODDLYIELD = PARITON.VIIM.TUOTTO ## Palauttaa arvopaperin tuoton tilanteessa, jossa viimeinen jakso on pariton. +PMT = MAKSU ## Palauttaa annuiteetin kausittaisen maksuerän. +PPMT = PPMT ## Laskee sijoitukselle tai lainalle tiettynä ajanjaksona maksettavan lyhennyksen. +PRICE = HINTA ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan säännöllisin väliajoin. +PRICEDISC = HINTA.DISK ## Palauttaa diskontatun arvopaperin hinnan 100 euron nimellisarvoa kohden. +PRICEMAT = HINTA.LUNASTUS ## Palauttaa hinnan 100 euron nimellisarvoa kohden arvopaperille, jonka korko maksetaan erääntymispäivänä. +PV = NA ## Palauttaa sijoituksen nykyarvon. +RATE = KORKO ## Palauttaa annuiteetin kausittaisen korkokannan. +RECEIVED = SAATU.HINTA ## Palauttaa arvopaperin tuoton erääntymispäivänä kokonaan maksetulle sijoitukselle. +SLN = STP ## Palauttaa sijoituksen tasapoiston yhdeltä jaksolta. +SYD = VUOSIPOISTO ## Palauttaa sijoituksen vuosipoiston annettuna kautena amerikkalaisen SYD-menetelmän (Sum-of-Year's Digits) avulla. +TBILLEQ = OBLIG.TUOTTOPROS ## Palauttaa valtion obligaation tuoton vastaavana joukkovelkakirjan tuottona. +TBILLPRICE = OBLIG.HINTA ## Palauttaa obligaation hinnan 100 euron nimellisarvoa kohden. +TBILLYIELD = OBLIG.TUOTTO ## Palauttaa obligaation tuoton. +VDB = VDB ## Palauttaa annetun kauden tai kauden osan kirjanpidollisen poiston amerikkalaisen DB-menetelmän (Fixed-declining balance) mukaan. +XIRR = SISÄINEN.KORKO.JAKSOTON ## Palauttaa sisäisen korkokannan kassavirtojen sarjoille, jotka eivät välttämättä ole säännöllisiä. +XNPV = NNA.JAKSOTON ## Palauttaa nettonykyarvon kassavirtasarjalle, joka ei välttämättä ole kausittainen. +YIELD = TUOTTO ## Palauttaa tuoton arvopaperille, jonka korko maksetaan säännöllisin väliajoin. +YIELDDISC = TUOTTO.DISK ## Palauttaa diskontatun arvopaperin, kuten obligaation, vuosittaisen tuoton. +YIELDMAT = TUOTTO.ERÄP ## Palauttaa erääntymispäivänään korkoa tuottavan arvopaperin vuosittaisen tuoton. + + +## +## Information functions Erikoisfunktiot +## +CELL = SOLU ## Palauttaa tietoja solun muotoilusta, sijainnista ja sisällöstä. +ERROR.TYPE = VIRHEEN.LAJI ## Palauttaa virhetyyppiä vastaavan luvun. +INFO = KUVAUS ## Palauttaa tietoja nykyisestä käyttöympäristöstä. +ISBLANK = ONTYHJÄ ## Palauttaa arvon TOSI, jos arvo on tyhjä. +ISERR = ONVIRH ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo paitsi arvo #PUUTTUU!. +ISERROR = ONVIRHE ## Palauttaa arvon TOSI, jos arvo on mikä tahansa virhearvo. +ISEVEN = ONPARILLINEN ## Palauttaa arvon TOSI, jos arvo on parillinen. +ISLOGICAL = ONTOTUUS ## Palauttaa arvon TOSI, jos arvo on mikä tahansa looginen arvo. +ISNA = ONPUUTTUU ## Palauttaa arvon TOSI, jos virhearvo on #PUUTTUU!. +ISNONTEXT = ONEI_TEKSTI ## Palauttaa arvon TOSI, jos arvo ei ole teksti. +ISNUMBER = ONLUKU ## Palauttaa arvon TOSI, jos arvo on luku. +ISODD = ONPARITON ## Palauttaa arvon TOSI, jos arvo on pariton. +ISREF = ONVIITT ## Palauttaa arvon TOSI, jos arvo on viittaus. +ISTEXT = ONTEKSTI ## Palauttaa arvon TOSI, jos arvo on teksti. +N = N ## Palauttaa arvon luvuksi muunnettuna. +NA = PUUTTUU ## Palauttaa virhearvon #PUUTTUU!. +TYPE = TYYPPI ## Palauttaa luvun, joka ilmaisee arvon tietotyypin. + + +## +## Logical functions Loogiset funktiot +## +AND = JA ## Palauttaa arvon TOSI, jos kaikkien argumenttien arvo on TOSI. +FALSE = EPÄTOSI ## Palauttaa totuusarvon EPÄTOSI. +IF = JOS ## Määrittää suoritettavan loogisen testin. +IFERROR = JOSVIRHE ## Palauttaa määrittämäsi arvon, jos kaavan tulos on virhe; muussa tapauksessa palauttaa kaavan tuloksen. +NOT = EI ## Kääntää argumentin loogisen arvon. +OR = TAI ## Palauttaa arvon TOSI, jos minkä tahansa argumentin arvo on TOSI. +TRUE = TOSI ## Palauttaa totuusarvon TOSI. + + +## +## Lookup and reference functions Haku- ja viitefunktiot +## +ADDRESS = OSOITE ## Palauttaa laskentataulukon soluun osoittavan viittauksen tekstinä. +AREAS = ALUEET ## Palauttaa viittauksessa olevien alueiden määrän. +CHOOSE = VALITSE.INDEKSI ## Valitsee arvon arvoluettelosta. +COLUMN = SARAKE ## Palauttaa viittauksen sarakenumeron. +COLUMNS = SARAKKEET ## Palauttaa viittauksessa olevien sarakkeiden määrän. +HLOOKUP = VHAKU ## Suorittaa haun matriisin ylimmältä riviltä ja palauttaa määritetyn solun arvon. +HYPERLINK = HYPERLINKKI ## Luo pikakuvakkeen tai tekstin, joka avaa verkkopalvelimeen, intranetiin tai Internetiin tallennetun tiedoston. +INDEX = INDEKSI ## Valitsee arvon viittauksesta tai matriisista indeksin mukaan. +INDIRECT = EPÄSUORA ## Palauttaa tekstiarvona ilmaistun viittauksen. +LOOKUP = HAKU ## Etsii arvoja vektorista tai matriisista. +MATCH = VASTINE ## Etsii arvoja viittauksesta tai matriisista. +OFFSET = SIIRTYMÄ ## Palauttaa annetun viittauksen siirtymän. +ROW = RIVI ## Palauttaa viittauksen rivinumeron. +ROWS = RIVIT ## Palauttaa viittauksessa olevien rivien määrän. +RTD = RTD ## Noutaa COM-automaatiota (automaatio: Tapa käsitellä sovelluksen objekteja toisesta sovelluksesta tai kehitystyökalusta. Automaatio, jota aiemmin kutsuttiin OLE-automaatioksi, on teollisuusstandardi ja COM-mallin (Component Object Model) ominaisuus.) tukevasta ohjelmasta reaaliaikaisia tietoja. +TRANSPOSE = TRANSPONOI ## Palauttaa matriisin käänteismatriisin. +VLOOKUP = PHAKU ## Suorittaa haun matriisin ensimmäisestä sarakkeesta ja palauttaa rivillä olevan solun arvon. + + +## +## Math and trigonometry functions Matemaattiset ja trigonometriset funktiot +## +ABS = ITSEISARVO ## Palauttaa luvun itseisarvon. +ACOS = ACOS ## Palauttaa luvun arkuskosinin. +ACOSH = ACOSH ## Palauttaa luvun käänteisen hyperbolisen kosinin. +ASIN = ASIN ## Palauttaa luvun arkussinin. +ASINH = ASINH ## Palauttaa luvun käänteisen hyperbolisen sinin. +ATAN = ATAN ## Palauttaa luvun arkustangentin. +ATAN2 = ATAN2 ## Palauttaa arkustangentin x- ja y-koordinaatin perusteella. +ATANH = ATANH ## Palauttaa luvun käänteisen hyperbolisen tangentin. +CEILING = PYÖRISTÄ.KERR.YLÖS ## Pyöristää luvun lähimpään kokonaislukuun tai tarkkuusargumentin lähimpään kerrannaiseen. +COMBIN = KOMBINAATIO ## Palauttaa mahdollisten kombinaatioiden määrän annetulle objektien määrälle. +COS = COS ## Palauttaa luvun kosinin. +COSH = COSH ## Palauttaa luvun hyperbolisen kosinin. +DEGREES = ASTEET ## Muuntaa radiaanit asteiksi. +EVEN = PARILLINEN ## Pyöristää luvun ylöspäin lähimpään parilliseen kokonaislukuun. +EXP = EKSPONENTTI ## Palauttaa e:n korotettuna annetun luvun osoittamaan potenssiin. +FACT = KERTOMA ## Palauttaa luvun kertoman. +FACTDOUBLE = KERTOMA.OSA ## Palauttaa luvun osakertoman. +FLOOR = PYÖRISTÄ.KERR.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). +GCD = SUURIN.YHT.TEKIJÄ ## Palauttaa suurimman yhteisen tekijän. +INT = KOKONAISLUKU ## Pyöristää luvun alaspäin lähimpään kokonaislukuun. +LCM = PIENIN.YHT.JAETTAVA ## Palauttaa pienimmän yhteisen tekijän. +LN = LUONNLOG ## Palauttaa luvun luonnollisen logaritmin. +LOG = LOG ## Laskee luvun logaritmin käyttämällä annettua kantalukua. +LOG10 = LOG10 ## Palauttaa luvun kymmenkantaisen logaritmin. +MDETERM = MDETERM ## Palauttaa matriisin matriisideterminantin. +MINVERSE = MKÄÄNTEINEN ## Palauttaa matriisin käänteismatriisin. +MMULT = MKERRO ## Palauttaa kahden matriisin tulon. +MOD = JAKOJ ## Palauttaa jakolaskun jäännöksen. +MROUND = PYÖRISTÄ.KERR ## Palauttaa luvun pyöristettynä annetun luvun kerrannaiseen. +MULTINOMIAL = MULTINOMI ## Palauttaa lukujoukon multinomin. +ODD = PARITON ## Pyöristää luvun ylöspäin lähimpään parittomaan kokonaislukuun. +PI = PII ## Palauttaa piin arvon. +POWER = POTENSSI ## Palauttaa luvun korotettuna haluttuun potenssiin. +PRODUCT = TULO ## Kertoo annetut argumentit. +QUOTIENT = OSAMÄÄRÄ ## Palauttaa osamäärän kokonaislukuosan. +RADIANS = RADIAANIT ## Muuntaa asteet radiaaneiksi. +RAND = SATUNNAISLUKU ## Palauttaa satunnaisluvun väliltä 0–1. +RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ ## Palauttaa satunnaisluvun määritettyjen lukujen väliltä. +ROMAN = ROMAN ## Muuntaa arabialaisen numeron tekstimuotoiseksi roomalaiseksi numeroksi. +ROUND = PYÖRISTÄ ## Pyöristää luvun annettuun määrään desimaaleja. +ROUNDDOWN = PYÖRISTÄ.DES.ALAS ## Pyöristää luvun alaspäin (nollaa kohti). +ROUNDUP = PYÖRISTÄ.DES.YLÖS ## Pyöristää luvun ylöspäin (poispäin nollasta). +SERIESSUM = SARJA.SUMMA ## Palauttaa kaavaan perustuvan potenssisarjan arvon. +SIGN = ETUMERKKI ## Palauttaa luvun etumerkin. +SIN = SIN ## Palauttaa annetun kulman sinin. +SINH = SINH ## Palauttaa luvun hyperbolisen sinin. +SQRT = NELIÖJUURI ## Palauttaa positiivisen neliöjuuren. +SQRTPI = NELIÖJUURI.PII ## Palauttaa tulon (luku * pii) neliöjuuren. +SUBTOTAL = VÄLISUMMA ## Palauttaa luettelon tai tietokannan välisumman. +SUM = SUMMA ## Laskee yhteen annetut argumentit. +SUMIF = SUMMA.JOS ## Laskee ehdot täyttävien solujen summan. +SUMIFS = SUMMA.JOS.JOUKKO ## Laskee yhteen solualueen useita ehtoja vastaavat solut. +SUMPRODUCT = TULOJEN.SUMMA ## Palauttaa matriisin toisiaan vastaavien osien tulojen summan. +SUMSQ = NELIÖSUMMA ## Palauttaa argumenttien neliöiden summan. +SUMX2MY2 = NELIÖSUMMIEN.EROTUS ## Palauttaa kahden matriisin toisiaan vastaavien arvojen laskettujen neliösummien erotuksen. +SUMX2PY2 = NELIÖSUMMIEN.SUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen neliösummien summan. +SUMXMY2 = EROTUSTEN.NELIÖSUMMA ## Palauttaa kahden matriisin toisiaan vastaavien arvojen erotusten neliösumman. +TAN = TAN ## Palauttaa luvun tangentin. +TANH = TANH ## Palauttaa luvun hyperbolisen tangentin. +TRUNC = KATKAISE ## Katkaisee luvun kokonaisluvuksi. + + +## +## Statistical functions Tilastolliset funktiot +## +AVEDEV = KESKIPOIKKEAMA ## Palauttaa hajontojen itseisarvojen keskiarvon. +AVERAGE = KESKIARVO ## Palauttaa argumenttien keskiarvon. +AVERAGEA = KESKIARVOA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, keskiarvon. +AVERAGEIF = KESKIARVO.JOS ## Palauttaa alueen niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka täyttävät annetut ehdot. +AVERAGEIFS = KESKIARVO.JOS.JOUKKO ## Palauttaa niiden solujen keskiarvon (aritmeettisen keskiarvon), jotka vastaavat useita ehtoja. +BETADIST = BEETAJAKAUMA ## Palauttaa kumulatiivisen beetajakaumafunktion arvon. +BETAINV = BEETAJAKAUMA.KÄÄNT ## Palauttaa määritetyn beetajakauman käänteisen kumulatiivisen jakaumafunktion arvon. +BINOMDIST = BINOMIJAKAUMA ## Palauttaa yksittäisen termin binomijakaumatodennäköisyyden. +CHIDIST = CHIJAKAUMA ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden. +CHIINV = CHIJAKAUMA.KÄÄNT ## Palauttaa yksisuuntaisen chi-neliön jakauman todennäköisyyden käänteisarvon. +CHITEST = CHITESTI ## Palauttaa riippumattomuustestin tuloksen. +CONFIDENCE = LUOTTAMUSVÄLI ## Palauttaa luottamusvälin populaation keskiarvolle. +CORREL = KORRELAATIO ## Palauttaa kahden arvojoukon korrelaatiokertoimen. +COUNT = LASKE ## Laskee argumenttiluettelossa olevien lukujen määrän. +COUNTA = LASKE.A ## Laskee argumenttiluettelossa olevien arvojen määrän. +COUNTBLANK = LASKE.TYHJÄT ## Laskee alueella olevien tyhjien solujen määrän. +COUNTIF = LASKE.JOS ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa annettuja ehtoja. +COUNTIFS = LASKE.JOS.JOUKKO ## Laskee alueella olevien sellaisten solujen määrän, joiden sisältö vastaa useita ehtoja. +COVAR = KOVARIANSSI ## Palauttaa kovarianssin, joka on keskiarvo havaintoaineiston kunkin pisteparin poikkeamien tuloista. +CRITBINOM = BINOMIJAKAUMA.KRIT ## Palauttaa pienimmän arvon, jossa binomijakauman kertymäfunktion arvo on pienempi tai yhtä suuri kuin vertailuarvo. +DEVSQ = OIKAISTU.NELIÖSUMMA ## Palauttaa keskipoikkeamien neliösumman. +EXPONDIST = EKSPONENTIAALIJAKAUMA ## Palauttaa eksponentiaalijakauman. +FDIST = FJAKAUMA ## Palauttaa F-todennäköisyysjakauman. +FINV = FJAKAUMA.KÄÄNT ## Palauttaa F-todennäköisyysjakauman käänteisfunktion. +FISHER = FISHER ## Palauttaa Fisher-muunnoksen. +FISHERINV = FISHER.KÄÄNT ## Palauttaa käänteisen Fisher-muunnoksen. +FORECAST = ENNUSTE ## Palauttaa lineaarisen trendin arvon. +FREQUENCY = TAAJUUS ## Palauttaa frekvenssijakautuman pystysuuntaisena matriisina. +FTEST = FTESTI ## Palauttaa F-testin tuloksen. +GAMMADIST = GAMMAJAKAUMA ## Palauttaa gammajakauman. +GAMMAINV = GAMMAJAKAUMA.KÄÄNT ## Palauttaa käänteisen gammajakauman kertymäfunktion. +GAMMALN = GAMMALN ## Palauttaa gammafunktion luonnollisen logaritmin G(x). +GEOMEAN = KESKIARVO.GEOM ## Palauttaa geometrisen keskiarvon. +GROWTH = KASVU ## Palauttaa eksponentiaalisen trendin arvon. +HARMEAN = KESKIARVO.HARM ## Palauttaa harmonisen keskiarvon. +HYPGEOMDIST = HYPERGEOM.JAKAUMA ## Palauttaa hypergeometrisen jakauman. +INTERCEPT = LEIKKAUSPISTE ## Palauttaa lineaarisen regressiosuoran leikkauspisteen. +KURT = KURT ## Palauttaa tietoalueen vinous-arvon eli huipukkuuden. +LARGE = SUURI ## Palauttaa tietojoukon k:nneksi suurimman arvon. +LINEST = LINREGR ## Palauttaa lineaarisen trendin parametrit. +LOGEST = LOGREGR ## Palauttaa eksponentiaalisen trendin parametrit. +LOGINV = LOGNORM.JAKAUMA.KÄÄNT ## Palauttaa lognormeeratun jakauman käänteisfunktion. +LOGNORMDIST = LOGNORM.JAKAUMA ## Palauttaa lognormaalisen jakauman kertymäfunktion. +MAX = MAKS ## Palauttaa suurimman arvon argumenttiluettelosta. +MAXA = MAKSA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, suurimman arvon. +MEDIAN = MEDIAANI ## Palauttaa annettujen lukujen mediaanin. +MIN = MIN ## Palauttaa pienimmän arvon argumenttiluettelosta. +MINA = MINA ## Palauttaa argumenttien, mukaan lukien lukujen, tekstin ja loogisten arvojen, pienimmän arvon. +MODE = MOODI ## Palauttaa tietojoukossa useimmin esiintyvän arvon. +NEGBINOMDIST = BINOMIJAKAUMA.NEG ## Palauttaa negatiivisen binomijakauman. +NORMDIST = NORM.JAKAUMA ## Palauttaa normaalijakauman kertymäfunktion. +NORMINV = NORM.JAKAUMA.KÄÄNT ## Palauttaa käänteisen normaalijakauman kertymäfunktion. +NORMSDIST = NORM.JAKAUMA.NORMIT ## Palauttaa normitetun normaalijakauman kertymäfunktion. +NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT ## Palauttaa normitetun normaalijakauman kertymäfunktion käänteisarvon. +PEARSON = PEARSON ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen. +PERCENTILE = PROSENTTIPISTE ## Palauttaa alueen arvojen k:nnen prosenttipisteen. +PERCENTRANK = PROSENTTIJÄRJESTYS ## Palauttaa tietojoukon arvon prosentuaalisen järjestysluvun. +PERMUT = PERMUTAATIO ## Palauttaa mahdollisten permutaatioiden määrän annetulle objektien määrälle. +POISSON = POISSON ## Palauttaa Poissonin todennäköisyysjakauman. +PROB = TODENNÄKÖISYYS ## Palauttaa todennäköisyyden sille, että arvot ovat tietyltä väliltä. +QUARTILE = NELJÄNNES ## Palauttaa tietoalueen neljänneksen. +RANK = ARVON.MUKAAN ## Palauttaa luvun paikan lukuarvoluettelossa. +RSQ = PEARSON.NELIÖ ## Palauttaa Pearsonin tulomomenttikorrelaatiokertoimen neliön. +SKEW = JAKAUMAN.VINOUS ## Palauttaa jakauman vinouden. +SLOPE = KULMAKERROIN ## Palauttaa lineaarisen regressiosuoran kulmakertoimen. +SMALL = PIENI ## Palauttaa tietojoukon k:nneksi pienimmän arvon. +STANDARDIZE = NORMITA ## Palauttaa normitetun arvon. +STDEV = KESKIHAJONTA ## Laskee populaation keskihajonnan otoksen perusteella. +STDEVA = KESKIHAJONTAA ## Laskee populaation keskihajonnan otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. +STDEVP = KESKIHAJONTAP ## Laskee normaalijakautuman koko populaation perusteella. +STDEVPA = KESKIHAJONTAPA ## Laskee populaation keskihajonnan koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. +STEYX = KESKIVIRHE ## Palauttaa regression kutakin x-arvoa vastaavan ennustetun y-arvon keskivirheen. +TDIST = TJAKAUMA ## Palauttaa t-jakautuman. +TINV = TJAKAUMA.KÄÄNT ## Palauttaa käänteisen t-jakauman. +TREND = SUUNTAUS ## Palauttaa lineaarisen trendin arvoja. +TRIMMEAN = KESKIARVO.TASATTU ## Palauttaa tietojoukon tasatun keskiarvon. +TTEST = TTESTI ## Palauttaa t-testiin liittyvän todennäköisyyden. +VAR = VAR ## Arvioi populaation varianssia otoksen perusteella. +VARA = VARA ## Laskee populaation varianssin otoksen perusteella, mukaan lukien luvut, tekstin ja loogiset arvot. +VARP = VARP ## Laskee varianssin koko populaation perusteella. +VARPA = VARPA ## Laskee populaation varianssin koko populaation perusteella, mukaan lukien luvut, tekstin ja totuusarvot. +WEIBULL = WEIBULL ## Palauttaa Weibullin jakauman. +ZTEST = ZTESTI ## Palauttaa z-testin yksisuuntaisen todennäköisyysarvon. + + +## +## Text functions Tekstifunktiot +## +ASC = ASC ## Muuntaa merkkijonossa olevat englanninkieliset DBCS- tai katakana-merkit SBCS-merkeiksi. +BAHTTEXT = BAHTTEKSTI ## Muuntaa luvun tekstiksi ß (baht) -valuuttamuotoa käyttämällä. +CHAR = MERKKI ## Palauttaa koodin lukua vastaavan merkin. +CLEAN = SIIVOA ## Poistaa tekstistä kaikki tulostumattomat merkit. +CODE = KOODI ## Palauttaa tekstimerkkijonon ensimmäisen merkin numerokoodin. +CONCATENATE = KETJUTA ## Yhdistää useat merkkijonot yhdeksi merkkijonoksi. +DOLLAR = VALUUTTA ## Muuntaa luvun tekstiksi $ (dollari) -valuuttamuotoa käyttämällä. +EXACT = VERTAA ## Tarkistaa, ovatko kaksi tekstiarvoa samanlaiset. +FIND = ETSI ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). +FINDB = ETSIB ## Etsii tekstiarvon toisen tekstin sisältä (tunnistaa isot ja pienet kirjaimet). +FIXED = KIINTEÄ ## Muotoilee luvun tekstiksi, jossa on kiinteä määrä desimaaleja. +JIS = JIS ## Muuntaa merkkijonossa olevat englanninkieliset SBCS- tai katakana-merkit DBCS-merkeiksi. +LEFT = VASEN ## Palauttaa tekstiarvon vasemmanpuoliset merkit. +LEFTB = VASENB ## Palauttaa tekstiarvon vasemmanpuoliset merkit. +LEN = PITUUS ## Palauttaa tekstimerkkijonon merkkien määrän. +LENB = PITUUSB ## Palauttaa tekstimerkkijonon merkkien määrän. +LOWER = PIENET ## Muuntaa tekstin pieniksi kirjaimiksi. +MID = POIMI.TEKSTI ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. +MIDB = POIMI.TEKSTIB ## Palauttaa määritetyn määrän merkkejä merkkijonosta alkaen annetusta kohdasta. +PHONETIC = FONEETTINEN ## Hakee foneettiset (furigana) merkit merkkijonosta. +PROPER = ERISNIMI ## Muuttaa merkkijonon kunkin sanan ensimmäisen kirjaimen isoksi. +REPLACE = KORVAA ## Korvaa tekstissä olevat merkit. +REPLACEB = KORVAAB ## Korvaa tekstissä olevat merkit. +REPT = TOISTA ## Toistaa tekstin annetun määrän kertoja. +RIGHT = OIKEA ## Palauttaa tekstiarvon oikeanpuoliset merkit. +RIGHTB = OIKEAB ## Palauttaa tekstiarvon oikeanpuoliset merkit. +SEARCH = KÄY.LÄPI ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). +SEARCHB = KÄY.LÄPIB ## Etsii tekstiarvon toisen tekstin sisältä (isot ja pienet kirjaimet tulkitaan samoiksi merkeiksi). +SUBSTITUTE = VAIHDA ## Korvaa merkkijonossa olevan tekstin toisella. +T = T ## Muuntaa argumentit tekstiksi. +TEXT = TEKSTI ## Muotoilee luvun ja muuntaa sen tekstiksi. +TRIM = POISTA.VÄLIT ## Poistaa välilyönnit tekstistä. +UPPER = ISOT ## Muuntaa tekstin isoiksi kirjaimiksi. +VALUE = ARVO ## Muuntaa tekstiargumentin luvuksi. diff --git a/assets/excel/PHPExcel/locale/fr/config b/assets/excel/PHPExcel/locale/fr/config new file mode 100644 index 0000000..1f5db88 --- /dev/null +++ b/assets/excel/PHPExcel/locale/fr/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = € + + +## +## Excel Error Codes (For future use) +## +NULL = #NUL! +DIV0 = #DIV/0! +VALUE = #VALEUR! +REF = #REF! +NAME = #NOM? +NUM = #NOMBRE! +NA = #N/A diff --git a/assets/excel/PHPExcel/locale/fr/functions b/assets/excel/PHPExcel/locale/fr/functions new file mode 100644 index 0000000..03b80e5 --- /dev/null +++ b/assets/excel/PHPExcel/locale/fr/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Fonctions de complément et d’automatisation +## +GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE ## Renvoie les données stockées dans un rapport de tableau croisé dynamique. + + +## +## Cube functions Fonctions Cube +## +CUBEKPIMEMBER = MEMBREKPICUBE ## Renvoie un nom, une propriété et une mesure d’indicateur de performance clé et affiche le nom et la propriété dans la cellule. Un indicateur de performance clé est une mesure quantifiable, telle que la marge bénéficiaire brute mensuelle ou la rotation trimestrielle du personnel, utilisée pour évaluer les performances d’une entreprise. +CUBEMEMBER = MEMBRECUBE ## Renvoie un membre ou un uplet dans une hiérarchie de cubes. Utilisez cette fonction pour valider l’existence du membre ou de l’uplet dans le cube. +CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE ## Renvoie la valeur d’une propriété de membre du cube. Utilisez cette fonction pour valider l’existence d’un nom de membre dans le cube et pour renvoyer la propriété spécifiée pour ce membre. +CUBERANKEDMEMBER = RANGMEMBRECUBE ## Renvoie le nième membre ou le membre placé à un certain rang dans un ensemble. Utilisez cette fonction pour renvoyer un ou plusieurs éléments d’un ensemble, tels que les meilleurs vendeurs ou les 10 meilleurs étudiants. +CUBESET = JEUCUBE ## Définit un ensemble calculé de membres ou d’uplets en envoyant une expression définie au cube sur le serveur qui crée l’ensemble et le renvoie à Microsoft Office Excel. +CUBESETCOUNT = NBJEUCUBE ## Renvoie le nombre d’éléments dans un jeu. +CUBEVALUE = VALEURCUBE ## Renvoie une valeur d’agrégation issue d’un cube. + + +## +## Database functions Fonctions de base de données +## +DAVERAGE = BDMOYENNE ## Renvoie la moyenne des entrées de base de données sélectionnées. +DCOUNT = BCOMPTE ## Compte le nombre de cellules d’une base de données qui contiennent des nombres. +DCOUNTA = BDNBVAL ## Compte les cellules non vides d’une base de données. +DGET = BDLIRE ## Extrait d’une base de données un enregistrement unique répondant aux critères spécifiés. +DMAX = BDMAX ## Renvoie la valeur maximale des entrées de base de données sélectionnées. +DMIN = BDMIN ## Renvoie la valeur minimale des entrées de base de données sélectionnées. +DPRODUCT = BDPRODUIT ## Multiplie les valeurs d’un champ particulier des enregistrements d’une base de données, qui répondent aux critères spécifiés. +DSTDEV = BDECARTYPE ## Calcule l’écart type pour un échantillon d’entrées de base de données sélectionnées. +DSTDEVP = BDECARTYPEP ## Calcule l’écart type pour l’ensemble d’une population d’entrées de base de données sélectionnées. +DSUM = BDSOMME ## Ajoute les nombres dans la colonne de champ des enregistrements de la base de données, qui répondent aux critères. +DVAR = BDVAR ## Calcule la variance pour un échantillon d’entrées de base de données sélectionnées. +DVARP = BDVARP ## Calcule la variance pour l’ensemble d’une population d’entrées de base de données sélectionnées. + + +## +## Date and time functions Fonctions de date et d’heure +## +DATE = DATE ## Renvoie le numéro de série d’une date précise. +DATEVALUE = DATEVAL ## Convertit une date représentée sous forme de texte en numéro de série. +DAY = JOUR ## Convertit un numéro de série en jour du mois. +DAYS360 = JOURS360 ## Calcule le nombre de jours qui séparent deux dates sur la base d’une année de 360 jours. +EDATE = MOIS.DECALER ## Renvoie le numéro séquentiel de la date qui représente une date spécifiée (l’argument date_départ), corrigée en plus ou en moins du nombre de mois indiqué. +EOMONTH = FIN.MOIS ## Renvoie le numéro séquentiel de la date du dernier jour du mois précédant ou suivant la date_départ du nombre de mois indiqué. +HOUR = HEURE ## Convertit un numéro de série en heure. +MINUTE = MINUTE ## Convertit un numéro de série en minute. +MONTH = MOIS ## Convertit un numéro de série en mois. +NETWORKDAYS = NB.JOURS.OUVRES ## Renvoie le nombre de jours ouvrés entiers compris entre deux dates. +NOW = MAINTENANT ## Renvoie le numéro de série de la date et de l’heure du jour. +SECOND = SECONDE ## Convertit un numéro de série en seconde. +TIME = TEMPS ## Renvoie le numéro de série d’une heure précise. +TIMEVALUE = TEMPSVAL ## Convertit une date représentée sous forme de texte en numéro de série. +TODAY = AUJOURDHUI ## Renvoie le numéro de série de la date du jour. +WEEKDAY = JOURSEM ## Convertit un numéro de série en jour de la semaine. +WEEKNUM = NO.SEMAINE ## Convertit un numéro de série en un numéro représentant l’ordre de la semaine dans l’année. +WORKDAY = SERIE.JOUR.OUVRE ## Renvoie le numéro de série de la date avant ou après le nombre de jours ouvrés spécifiés. +YEAR = ANNEE ## Convertit un numéro de série en année. +YEARFRAC = FRACTION.ANNEE ## Renvoie la fraction de l’année représentant le nombre de jours entre la date de début et la date de fin. + + +## +## Engineering functions Fonctions d’ingénierie +## +BESSELI = BESSELI ## Renvoie la fonction Bessel modifiée In(x). +BESSELJ = BESSELJ ## Renvoie la fonction Bessel Jn(x). +BESSELK = BESSELK ## Renvoie la fonction Bessel modifiée Kn(x). +BESSELY = BESSELY ## Renvoie la fonction Bessel Yn(x). +BIN2DEC = BINDEC ## Convertit un nombre binaire en nombre décimal. +BIN2HEX = BINHEX ## Convertit un nombre binaire en nombre hexadécimal. +BIN2OCT = BINOCT ## Convertit un nombre binaire en nombre octal. +COMPLEX = COMPLEXE ## Convertit des coefficients réel et imaginaire en un nombre complexe. +CONVERT = CONVERT ## Convertit un nombre d’une unité de mesure à une autre. +DEC2BIN = DECBIN ## Convertit un nombre décimal en nombre binaire. +DEC2HEX = DECHEX ## Convertit un nombre décimal en nombre hexadécimal. +DEC2OCT = DECOCT ## Convertit un nombre décimal en nombre octal. +DELTA = DELTA ## Teste l’égalité de deux nombres. +ERF = ERF ## Renvoie la valeur de la fonction d’erreur. +ERFC = ERFC ## Renvoie la valeur de la fonction d’erreur complémentaire. +GESTEP = SUP.SEUIL ## Teste si un nombre est supérieur à une valeur de seuil. +HEX2BIN = HEXBIN ## Convertit un nombre hexadécimal en nombre binaire. +HEX2DEC = HEXDEC ## Convertit un nombre hexadécimal en nombre décimal. +HEX2OCT = HEXOCT ## Convertit un nombre hexadécimal en nombre octal. +IMABS = COMPLEXE.MODULE ## Renvoie la valeur absolue (module) d’un nombre complexe. +IMAGINARY = COMPLEXE.IMAGINAIRE ## Renvoie le coefficient imaginaire d’un nombre complexe. +IMARGUMENT = COMPLEXE.ARGUMENT ## Renvoie l’argument thêta, un angle exprimé en radians. +IMCONJUGATE = COMPLEXE.CONJUGUE ## Renvoie le nombre complexe conjugué d’un nombre complexe. +IMCOS = IMCOS ## Renvoie le cosinus d’un nombre complexe. +IMDIV = COMPLEXE.DIV ## Renvoie le quotient de deux nombres complexes. +IMEXP = COMPLEXE.EXP ## Renvoie la fonction exponentielle d’un nombre complexe. +IMLN = COMPLEXE.LN ## Renvoie le logarithme népérien d’un nombre complexe. +IMLOG10 = COMPLEXE.LOG10 ## Calcule le logarithme en base 10 d’un nombre complexe. +IMLOG2 = COMPLEXE.LOG2 ## Calcule le logarithme en base 2 d’un nombre complexe. +IMPOWER = COMPLEXE.PUISSANCE ## Renvoie un nombre complexe élevé à une puissance entière. +IMPRODUCT = COMPLEXE.PRODUIT ## Renvoie le produit de plusieurs nombres complexes. +IMREAL = COMPLEXE.REEL ## Renvoie le coefficient réel d’un nombre complexe. +IMSIN = COMPLEXE.SIN ## Renvoie le sinus d’un nombre complexe. +IMSQRT = COMPLEXE.RACINE ## Renvoie la racine carrée d’un nombre complexe. +IMSUB = COMPLEXE.DIFFERENCE ## Renvoie la différence entre deux nombres complexes. +IMSUM = COMPLEXE.SOMME ## Renvoie la somme de plusieurs nombres complexes. +OCT2BIN = OCTBIN ## Convertit un nombre octal en nombre binaire. +OCT2DEC = OCTDEC ## Convertit un nombre octal en nombre décimal. +OCT2HEX = OCTHEX ## Convertit un nombre octal en nombre hexadécimal. + + +## +## Financial functions Fonctions financières +## +ACCRINT = INTERET.ACC ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu périodiquement. +ACCRINTM = INTERET.ACC.MAT ## Renvoie l’intérêt couru non échu d’un titre dont l’intérêt est perçu à l’échéance. +AMORDEGRC = AMORDEGRC ## Renvoie l’amortissement correspondant à chaque période comptable en utilisant un coefficient d’amortissement. +AMORLINC = AMORLINC ## Renvoie l’amortissement d’un bien à la fin d’une période fiscale donnée. +COUPDAYBS = NB.JOURS.COUPON.PREC ## Renvoie le nombre de jours entre le début de la période de coupon et la date de liquidation. +COUPDAYS = NB.JOURS.COUPONS ## Renvoie le nombre de jours pour la période du coupon contenant la date de liquidation. +COUPDAYSNC = NB.JOURS.COUPON.SUIV ## Renvoie le nombre de jours entre la date de liquidation et la date du coupon suivant la date de liquidation. +COUPNCD = DATE.COUPON.SUIV ## Renvoie la première date de coupon ultérieure à la date de règlement. +COUPNUM = NB.COUPONS ## Renvoie le nombre de coupons dus entre la date de règlement et la date d’échéance. +COUPPCD = DATE.COUPON.PREC ## Renvoie la date de coupon précédant la date de règlement. +CUMIPMT = CUMUL.INTER ## Renvoie l’intérêt cumulé payé sur un emprunt entre deux périodes. +CUMPRINC = CUMUL.PRINCPER ## Renvoie le montant cumulé des remboursements du capital d’un emprunt effectués entre deux périodes. +DB = DB ## Renvoie l’amortissement d’un bien pour une période spécifiée en utilisant la méthode de l’amortissement dégressif à taux fixe. +DDB = DDB ## Renvoie l’amortissement d’un bien pour toute période spécifiée, en utilisant la méthode de l’amortissement dégressif à taux double ou selon un coefficient à spécifier. +DISC = TAUX.ESCOMPTE ## Calcule le taux d’escompte d’une transaction. +DOLLARDE = PRIX.DEC ## Convertit un prix en euros, exprimé sous forme de fraction, en un prix en euros exprimé sous forme de nombre décimal. +DOLLARFR = PRIX.FRAC ## Convertit un prix en euros, exprimé sous forme de nombre décimal, en un prix en euros exprimé sous forme de fraction. +DURATION = DUREE ## Renvoie la durée, en années, d’un titre dont l’intérêt est perçu périodiquement. +EFFECT = TAUX.EFFECTIF ## Renvoie le taux d’intérêt annuel effectif. +FV = VC ## Renvoie la valeur future d’un investissement. +FVSCHEDULE = VC.PAIEMENTS ## Calcule la valeur future d’un investissement en appliquant une série de taux d’intérêt composites. +INTRATE = TAUX.INTERET ## Affiche le taux d’intérêt d’un titre totalement investi. +IPMT = INTPER ## Calcule le montant des intérêts d’un investissement pour une période donnée. +IRR = TRI ## Calcule le taux de rentabilité interne d’un investissement pour une succession de trésoreries. +ISPMT = ISPMT ## Calcule le montant des intérêts d’un investissement pour une période donnée. +MDURATION = DUREE.MODIFIEE ## Renvoie la durée de Macauley modifiée pour un titre ayant une valeur nominale hypothétique de 100_euros. +MIRR = TRIM ## Calcule le taux de rentabilité interne lorsque les paiements positifs et négatifs sont financés à des taux différents. +NOMINAL = TAUX.NOMINAL ## Calcule le taux d’intérêt nominal annuel. +NPER = NPM ## Renvoie le nombre de versements nécessaires pour rembourser un emprunt. +NPV = VAN ## Calcule la valeur actuelle nette d’un investissement basé sur une série de décaissements et un taux d’escompte. +ODDFPRICE = PRIX.PCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. +ODDFYIELD = REND.PCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la première période de coupon est irrégulière. +ODDLPRICE = PRIX.DCOUPON.IRREG ## Renvoie le prix par tranche de valeur nominale de 100 euros d’un titre dont la première période de coupon est irrégulière. +ODDLYIELD = REND.DCOUPON.IRREG ## Renvoie le taux de rendement d’un titre dont la dernière période de coupon est irrégulière. +PMT = VPM ## Calcule le paiement périodique d’un investissement donné. +PPMT = PRINCPER ## Calcule, pour une période donnée, la part de remboursement du principal d’un investissement. +PRICE = PRIX.TITRE ## Renvoie le prix d’un titre rapportant des intérêts périodiques, pour une valeur nominale de 100 euros. +PRICEDISC = VALEUR.ENCAISSEMENT ## Renvoie la valeur d’encaissement d’un escompte commercial, pour une valeur nominale de 100 euros. +PRICEMAT = PRIX.TITRE.ECHEANCE ## Renvoie le prix d’un titre dont la valeur nominale est 100 euros et qui rapporte des intérêts à l’échéance. +PV = PV ## Calcule la valeur actuelle d’un investissement. +RATE = TAUX ## Calcule le taux d’intérêt par période pour une annuité. +RECEIVED = VALEUR.NOMINALE ## Renvoie la valeur nominale à échéance d’un effet de commerce. +SLN = AMORLIN ## Calcule l’amortissement linéaire d’un bien pour une période donnée. +SYD = SYD ## Calcule l’amortissement d’un bien pour une période donnée sur la base de la méthode américaine Sum-of-Years Digits (amortissement dégressif à taux décroissant appliqué à une valeur constante). +TBILLEQ = TAUX.ESCOMPTE.R ## Renvoie le taux d’escompte rationnel d’un bon du Trésor. +TBILLPRICE = PRIX.BON.TRESOR ## Renvoie le prix d’un bon du Trésor d’une valeur nominale de 100 euros. +TBILLYIELD = RENDEMENT.BON.TRESOR ## Calcule le taux de rendement d’un bon du Trésor. +VDB = VDB ## Renvoie l’amortissement d’un bien pour une période spécifiée ou partielle en utilisant une méthode de l’amortissement dégressif à taux fixe. +XIRR = TRI.PAIEMENTS ## Calcule le taux de rentabilité interne d’un ensemble de paiements non périodiques. +XNPV = VAN.PAIEMENTS ## Renvoie la valeur actuelle nette d’un ensemble de paiements non périodiques. +YIELD = RENDEMENT.TITRE ## Calcule le rendement d’un titre rapportant des intérêts périodiquement. +YIELDDISC = RENDEMENT.SIMPLE ## Calcule le taux de rendement d’un emprunt à intérêt simple (par exemple, un bon du Trésor). +YIELDMAT = RENDEMENT.TITRE.ECHEANCE ## Renvoie le rendement annuel d’un titre qui rapporte des intérêts à l’échéance. + + +## +## Information functions Fonctions d’information +## +CELL = CELLULE ## Renvoie des informations sur la mise en forme, l’emplacement et le contenu d’une cellule. +ERROR.TYPE = TYPE.ERREUR ## Renvoie un nombre correspondant à un type d’erreur. +INFO = INFORMATIONS ## Renvoie des informations sur l’environnement d’exploitation actuel. +ISBLANK = ESTVIDE ## Renvoie VRAI si l’argument valeur est vide. +ISERR = ESTERR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur, sauf #N/A. +ISERROR = ESTERREUR ## Renvoie VRAI si l’argument valeur fait référence à une valeur d’erreur. +ISEVEN = EST.PAIR ## Renvoie VRAI si le chiffre est pair. +ISLOGICAL = ESTLOGIQUE ## Renvoie VRAI si l’argument valeur fait référence à une valeur logique. +ISNA = ESTNA ## Renvoie VRAI si l’argument valeur fait référence à la valeur d’erreur #N/A. +ISNONTEXT = ESTNONTEXTE ## Renvoie VRAI si l’argument valeur ne se présente pas sous forme de texte. +ISNUMBER = ESTNUM ## Renvoie VRAI si l’argument valeur représente un nombre. +ISODD = EST.IMPAIR ## Renvoie VRAI si le chiffre est impair. +ISREF = ESTREF ## Renvoie VRAI si l’argument valeur est une référence. +ISTEXT = ESTTEXTE ## Renvoie VRAI si l’argument valeur se présente sous forme de texte. +N = N ## Renvoie une valeur convertie en nombre. +NA = NA ## Renvoie la valeur d’erreur #N/A. +TYPE = TYPE ## Renvoie un nombre indiquant le type de données d’une valeur. + + +## +## Logical functions Fonctions logiques +## +AND = ET ## Renvoie VRAI si tous ses arguments sont VRAI. +FALSE = FAUX ## Renvoie la valeur logique FAUX. +IF = SI ## Spécifie un test logique à effectuer. +IFERROR = SIERREUR ## Renvoie une valeur que vous spécifiez si une formule génère une erreur ; sinon, elle renvoie le résultat de la formule. +NOT = NON ## Inverse la logique de cet argument. +OR = OU ## Renvoie VRAI si un des arguments est VRAI. +TRUE = VRAI ## Renvoie la valeur logique VRAI. + + +## +## Lookup and reference functions Fonctions de recherche et de référence +## +ADDRESS = ADRESSE ## Renvoie une référence sous forme de texte à une seule cellule d’une feuille de calcul. +AREAS = ZONES ## Renvoie le nombre de zones dans une référence. +CHOOSE = CHOISIR ## Choisit une valeur dans une liste. +COLUMN = COLONNE ## Renvoie le numéro de colonne d’une référence. +COLUMNS = COLONNES ## Renvoie le nombre de colonnes dans une référence. +HLOOKUP = RECHERCHEH ## Effectue une recherche dans la première ligne d’une matrice et renvoie la valeur de la cellule indiquée. +HYPERLINK = LIEN_HYPERTEXTE ## Crée un raccourci ou un renvoi qui ouvre un document stocké sur un serveur réseau, sur un réseau Intranet ou sur Internet. +INDEX = INDEX ## Utilise un index pour choisir une valeur provenant d’une référence ou d’une matrice. +INDIRECT = INDIRECT ## Renvoie une référence indiquée par une valeur de texte. +LOOKUP = RECHERCHE ## Recherche des valeurs dans un vecteur ou une matrice. +MATCH = EQUIV ## Recherche des valeurs dans une référence ou une matrice. +OFFSET = DECALER ## Renvoie une référence décalée par rapport à une référence donnée. +ROW = LIGNE ## Renvoie le numéro de ligne d’une référence. +ROWS = LIGNES ## Renvoie le nombre de lignes dans une référence. +RTD = RTD ## Extrait les données en temps réel à partir d’un programme prenant en charge l’automation COM (Automation : utilisation des objets d'une application à partir d'une autre application ou d'un autre outil de développement. Autrefois appelée OLE Automation, Automation est une norme industrielle et une fonctionnalité du modèle d'objet COM (Component Object Model).). +TRANSPOSE = TRANSPOSE ## Renvoie la transposition d’une matrice. +VLOOKUP = RECHERCHEV ## Effectue une recherche dans la première colonne d’une matrice et se déplace sur la ligne pour renvoyer la valeur d’une cellule. + + +## +## Math and trigonometry functions Fonctions mathématiques et trigonométriques +## +ABS = ABS ## Renvoie la valeur absolue d’un nombre. +ACOS = ACOS ## Renvoie l’arccosinus d’un nombre. +ACOSH = ACOSH ## Renvoie le cosinus hyperbolique inverse d’un nombre. +ASIN = ASIN ## Renvoie l’arcsinus d’un nombre. +ASINH = ASINH ## Renvoie le sinus hyperbolique inverse d’un nombre. +ATAN = ATAN ## Renvoie l’arctangente d’un nombre. +ATAN2 = ATAN2 ## Renvoie l’arctangente des coordonnées x et y. +ATANH = ATANH ## Renvoie la tangente hyperbolique inverse d’un nombre. +CEILING = PLAFOND ## Arrondit un nombre au nombre entier le plus proche ou au multiple le plus proche de l’argument précision en s’éloignant de zéro. +COMBIN = COMBIN ## Renvoie le nombre de combinaisons que l’on peut former avec un nombre donné d’objets. +COS = COS ## Renvoie le cosinus d’un nombre. +COSH = COSH ## Renvoie le cosinus hyperbolique d’un nombre. +DEGREES = DEGRES ## Convertit des radians en degrés. +EVEN = PAIR ## Arrondit un nombre au nombre entier pair le plus proche en s’éloignant de zéro. +EXP = EXP ## Renvoie e élevé à la puissance d’un nombre donné. +FACT = FACT ## Renvoie la factorielle d’un nombre. +FACTDOUBLE = FACTDOUBLE ## Renvoie la factorielle double d’un nombre. +FLOOR = PLANCHER ## Arrondit un nombre en tendant vers 0 (zéro). +GCD = PGCD ## Renvoie le plus grand commun diviseur. +INT = ENT ## Arrondit un nombre à l’entier immédiatement inférieur. +LCM = PPCM ## Renvoie le plus petit commun multiple. +LN = LN ## Renvoie le logarithme népérien d’un nombre. +LOG = LOG ## Renvoie le logarithme d’un nombre dans la base spécifiée. +LOG10 = LOG10 ## Calcule le logarithme en base 10 d’un nombre. +MDETERM = DETERMAT ## Renvoie le déterminant d’une matrice. +MINVERSE = INVERSEMAT ## Renvoie la matrice inverse d’une matrice. +MMULT = PRODUITMAT ## Renvoie le produit de deux matrices. +MOD = MOD ## Renvoie le reste d’une division. +MROUND = ARRONDI.AU.MULTIPLE ## Donne l’arrondi d’un nombre au multiple spécifié. +MULTINOMIAL = MULTINOMIALE ## Calcule la multinomiale d’un ensemble de nombres. +ODD = IMPAIR ## Renvoie le nombre, arrondi à la valeur du nombre entier impair le plus proche en s’éloignant de zéro. +PI = PI ## Renvoie la valeur de pi. +POWER = PUISSANCE ## Renvoie la valeur du nombre élevé à une puissance. +PRODUCT = PRODUIT ## Multiplie ses arguments. +QUOTIENT = QUOTIENT ## Renvoie la partie entière du résultat d’une division. +RADIANS = RADIANS ## Convertit des degrés en radians. +RAND = ALEA ## Renvoie un nombre aléatoire compris entre 0 et 1. +RANDBETWEEN = ALEA.ENTRE.BORNES ## Renvoie un nombre aléatoire entre les nombres que vous spécifiez. +ROMAN = ROMAIN ## Convertit des chiffres arabes en chiffres romains, sous forme de texte. +ROUND = ARRONDI ## Arrondit un nombre au nombre de chiffres indiqué. +ROUNDDOWN = ARRONDI.INF ## Arrondit un nombre en tendant vers 0 (zéro). +ROUNDUP = ARRONDI.SUP ## Arrondit un nombre à l’entier supérieur, en s’éloignant de zéro. +SERIESSUM = SOMME.SERIES ## Renvoie la somme d’une série géométrique en s’appuyant sur la formule suivante : +SIGN = SIGNE ## Renvoie le signe d’un nombre. +SIN = SIN ## Renvoie le sinus d’un angle donné. +SINH = SINH ## Renvoie le sinus hyperbolique d’un nombre. +SQRT = RACINE ## Renvoie la racine carrée d’un nombre. +SQRTPI = RACINE.PI ## Renvoie la racine carrée de (nombre * pi). +SUBTOTAL = SOUS.TOTAL ## Renvoie un sous-total dans une liste ou une base de données. +SUM = SOMME ## Calcule la somme de ses arguments. +SUMIF = SOMME.SI ## Additionne les cellules spécifiées si elles répondent à un critère donné. +SUMIFS = SOMME.SI.ENS ## Ajoute les cellules d’une plage qui répondent à plusieurs critères. +SUMPRODUCT = SOMMEPROD ## Multiplie les valeurs correspondantes des matrices spécifiées et calcule la somme de ces produits. +SUMSQ = SOMME.CARRES ## Renvoie la somme des carrés des arguments. +SUMX2MY2 = SOMME.X2MY2 ## Renvoie la somme de la différence des carrés des valeurs correspondantes de deux matrices. +SUMX2PY2 = SOMME.X2PY2 ## Renvoie la somme de la somme des carrés des valeurs correspondantes de deux matrices. +SUMXMY2 = SOMME.XMY2 ## Renvoie la somme des carrés des différences entre les valeurs correspondantes de deux matrices. +TAN = TAN ## Renvoie la tangente d’un nombre. +TANH = TANH ## Renvoie la tangente hyperbolique d’un nombre. +TRUNC = TRONQUE ## Renvoie la partie entière d’un nombre. + + +## +## Statistical functions Fonctions statistiques +## +AVEDEV = ECART.MOYEN ## Renvoie la moyenne des écarts absolus observés dans la moyenne des points de données. +AVERAGE = MOYENNE ## Renvoie la moyenne de ses arguments. +AVERAGEA = AVERAGEA ## Renvoie la moyenne de ses arguments, nombres, texte et valeurs logiques inclus. +AVERAGEIF = MOYENNE.SI ## Renvoie la moyenne (arithmétique) de toutes les cellules d’une plage qui répondent à des critères donnés. +AVERAGEIFS = MOYENNE.SI.ENS ## Renvoie la moyenne (arithmétique) de toutes les cellules qui répondent à plusieurs critères. +BETADIST = LOI.BETA ## Renvoie la fonction de distribution cumulée. +BETAINV = BETA.INVERSE ## Renvoie l’inverse de la fonction de distribution cumulée pour une distribution bêta spécifiée. +BINOMDIST = LOI.BINOMIALE ## Renvoie la probabilité d’une variable aléatoire discrète suivant la loi binomiale. +CHIDIST = LOI.KHIDEUX ## Renvoie la probabilité unilatérale de la distribution khi-deux. +CHIINV = KHIDEUX.INVERSE ## Renvoie l’inverse de la probabilité unilatérale de la distribution khi-deux. +CHITEST = TEST.KHIDEUX ## Renvoie le test d’indépendance. +CONFIDENCE = INTERVALLE.CONFIANCE ## Renvoie l’intervalle de confiance pour une moyenne de population. +CORREL = COEFFICIENT.CORRELATION ## Renvoie le coefficient de corrélation entre deux séries de données. +COUNT = NB ## Détermine les nombres compris dans la liste des arguments. +COUNTA = NBVAL ## Détermine le nombre de valeurs comprises dans la liste des arguments. +COUNTBLANK = NB.VIDE ## Compte le nombre de cellules vides dans une plage. +COUNTIF = NB.SI ## Compte le nombre de cellules qui répondent à un critère donné dans une plage. +COUNTIFS = NB.SI.ENS ## Compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères. +COVAR = COVARIANCE ## Renvoie la covariance, moyenne des produits des écarts pour chaque série d’observations. +CRITBINOM = CRITERE.LOI.BINOMIALE ## Renvoie la plus petite valeur pour laquelle la distribution binomiale cumulée est inférieure ou égale à une valeur de critère. +DEVSQ = SOMME.CARRES.ECARTS ## Renvoie la somme des carrés des écarts. +EXPONDIST = LOI.EXPONENTIELLE ## Renvoie la distribution exponentielle. +FDIST = LOI.F ## Renvoie la distribution de probabilité F. +FINV = INVERSE.LOI.F ## Renvoie l’inverse de la distribution de probabilité F. +FISHER = FISHER ## Renvoie la transformation de Fisher. +FISHERINV = FISHER.INVERSE ## Renvoie l’inverse de la transformation de Fisher. +FORECAST = PREVISION ## Calcule une valeur par rapport à une tendance linéaire. +FREQUENCY = FREQUENCE ## Calcule la fréquence d’apparition des valeurs dans une plage de valeurs, puis renvoie des nombres sous forme de matrice verticale. +FTEST = TEST.F ## Renvoie le résultat d’un test F. +GAMMADIST = LOI.GAMMA ## Renvoie la probabilité d’une variable aléatoire suivant une loi Gamma. +GAMMAINV = LOI.GAMMA.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi Gamma. +GAMMALN = LNGAMMA ## Renvoie le logarithme népérien de la fonction Gamma, G(x) +GEOMEAN = MOYENNE.GEOMETRIQUE ## Renvoie la moyenne géométrique. +GROWTH = CROISSANCE ## Calcule des valeurs par rapport à une tendance exponentielle. +HARMEAN = MOYENNE.HARMONIQUE ## Renvoie la moyenne harmonique. +HYPGEOMDIST = LOI.HYPERGEOMETRIQUE ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi hypergéométrique. +INTERCEPT = ORDONNEE.ORIGINE ## Renvoie l’ordonnée à l’origine d’une droite de régression linéaire. +KURT = KURTOSIS ## Renvoie le kurtosis d’une série de données. +LARGE = GRANDE.VALEUR ## Renvoie la k-ième plus grande valeur d’une série de données. +LINEST = DROITEREG ## Renvoie les paramètres d’une tendance linéaire. +LOGEST = LOGREG ## Renvoie les paramètres d’une tendance exponentielle. +LOGINV = LOI.LOGNORMALE.INVERSE ## Renvoie l’inverse de la probabilité pour une variable aléatoire suivant la loi lognormale. +LOGNORMDIST = LOI.LOGNORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi lognormale. +MAX = MAX ## Renvoie la valeur maximale contenue dans une liste d’arguments. +MAXA = MAXA ## Renvoie la valeur maximale d’une liste d’arguments, nombres, texte et valeurs logiques inclus. +MEDIAN = MEDIANE ## Renvoie la valeur médiane des nombres donnés. +MIN = MIN ## Renvoie la valeur minimale contenue dans une liste d’arguments. +MINA = MINA ## Renvoie la plus petite valeur d’une liste d’arguments, nombres, texte et valeurs logiques inclus. +MODE = MODE ## Renvoie la valeur la plus courante d’une série de données. +NEGBINOMDIST = LOI.BINOMIALE.NEG ## Renvoie la probabilité d’une variable aléatoire discrète suivant une loi binomiale négative. +NORMDIST = LOI.NORMALE ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale. +NORMINV = LOI.NORMALE.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi normale standard. +NORMSDIST = LOI.NORMALE.STANDARD ## Renvoie la probabilité d’une variable aléatoire continue suivant une loi normale standard. +NORMSINV = LOI.NORMALE.STANDARD.INVERSE ## Renvoie l’inverse de la distribution cumulée normale standard. +PEARSON = PEARSON ## Renvoie le coefficient de corrélation d’échantillonnage de Pearson. +PERCENTILE = CENTILE ## Renvoie le k-ième centile des valeurs d’une plage. +PERCENTRANK = RANG.POURCENTAGE ## Renvoie le rang en pourcentage d’une valeur d’une série de données. +PERMUT = PERMUTATION ## Renvoie le nombre de permutations pour un nombre donné d’objets. +POISSON = LOI.POISSON ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Poisson. +PROB = PROBABILITE ## Renvoie la probabilité que des valeurs d’une plage soient comprises entre deux limites. +QUARTILE = QUARTILE ## Renvoie le quartile d’une série de données. +RANK = RANG ## Renvoie le rang d’un nombre contenu dans une liste. +RSQ = COEFFICIENT.DETERMINATION ## Renvoie la valeur du coefficient de détermination R^2 d’une régression linéaire. +SKEW = COEFFICIENT.ASYMETRIE ## Renvoie l’asymétrie d’une distribution. +SLOPE = PENTE ## Renvoie la pente d’une droite de régression linéaire. +SMALL = PETITE.VALEUR ## Renvoie la k-ième plus petite valeur d’une série de données. +STANDARDIZE = CENTREE.REDUITE ## Renvoie une valeur centrée réduite. +STDEV = ECARTYPE ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population. +STDEVA = STDEVA ## Évalue l’écart type d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques inclus. +STDEVP = ECARTYPEP ## Calcule l’écart type d’une population à partir de la population entière. +STDEVPA = STDEVPA ## Calcule l’écart type d’une population à partir de l’ensemble de la population, nombres, texte et valeurs logiques inclus. +STEYX = ERREUR.TYPE.XY ## Renvoie l’erreur type de la valeur y prévue pour chaque x de la régression. +TDIST = LOI.STUDENT ## Renvoie la probabilité d’une variable aléatoire suivant une loi T de Student. +TINV = LOI.STUDENT.INVERSE ## Renvoie, pour une probabilité donnée, la valeur d’une variable aléatoire suivant une loi T de Student. +TREND = TENDANCE ## Renvoie des valeurs par rapport à une tendance linéaire. +TRIMMEAN = MOYENNE.REDUITE ## Renvoie la moyenne de l’intérieur d’une série de données. +TTEST = TEST.STUDENT ## Renvoie la probabilité associée à un test T de Student. +VAR = VAR ## Calcule la variance sur la base d’un échantillon. +VARA = VARA ## Estime la variance d’une population en se basant sur un échantillon de cette population, nombres, texte et valeurs logiques incluses. +VARP = VAR.P ## Calcule la variance sur la base de l’ensemble de la population. +VARPA = VARPA ## Calcule la variance d’une population en se basant sur la population entière, nombres, texte et valeurs logiques inclus. +WEIBULL = LOI.WEIBULL ## Renvoie la probabilité d’une variable aléatoire suivant une loi de Weibull. +ZTEST = TEST.Z ## Renvoie la valeur de probabilité unilatérale d’un test z. + + +## +## Text functions Fonctions de texte +## +ASC = ASC ## Change les caractères anglais ou katakana à pleine chasse (codés sur deux octets) à l’intérieur d’une chaîne de caractères en caractères à demi-chasse (codés sur un octet). +BAHTTEXT = BAHTTEXT ## Convertit un nombre en texte en utilisant le format monétaire ß (baht). +CHAR = CAR ## Renvoie le caractère spécifié par le code numérique. +CLEAN = EPURAGE ## Supprime tous les caractères de contrôle du texte. +CODE = CODE ## Renvoie le numéro de code du premier caractère du texte. +CONCATENATE = CONCATENER ## Assemble plusieurs éléments textuels de façon à n’en former qu’un seul. +DOLLAR = EURO ## Convertit un nombre en texte en utilisant le format monétaire € (euro). +EXACT = EXACT ## Vérifie si deux valeurs de texte sont identiques. +FIND = TROUVE ## Trouve un valeur textuelle dans une autre, en respectant la casse. +FINDB = TROUVERB ## Trouve un valeur textuelle dans une autre, en respectant la casse. +FIXED = CTXT ## Convertit un nombre au format texte avec un nombre de décimales spécifié. +JIS = JIS ## Change les caractères anglais ou katakana à demi-chasse (codés sur un octet) à l’intérieur d’une chaîne de caractères en caractères à à pleine chasse (codés sur deux octets). +LEFT = GAUCHE ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. +LEFTB = GAUCHEB ## Renvoie des caractères situés à l’extrême gauche d’une chaîne de caractères. +LEN = NBCAR ## Renvoie le nombre de caractères contenus dans une chaîne de texte. +LENB = LENB ## Renvoie le nombre de caractères contenus dans une chaîne de texte. +LOWER = MINUSCULE ## Convertit le texte en minuscules. +MID = STXT ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. +MIDB = STXTB ## Renvoie un nombre déterminé de caractères d’une chaîne de texte à partir de la position que vous indiquez. +PHONETIC = PHONETIQUE ## Extrait les caractères phonétiques (furigana) d’une chaîne de texte. +PROPER = NOMPROPRE ## Met en majuscules la première lettre de chaque mot dans une chaîne textuelle. +REPLACE = REMPLACER ## Remplace des caractères dans un texte. +REPLACEB = REMPLACERB ## Remplace des caractères dans un texte. +REPT = REPT ## Répète un texte un certain nombre de fois. +RIGHT = DROITE ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. +RIGHTB = DROITEB ## Renvoie des caractères situés à l’extrême droite d’une chaîne de caractères. +SEARCH = CHERCHE ## Trouve un texte dans un autre texte (sans respecter la casse). +SEARCHB = CHERCHERB ## Trouve un texte dans un autre texte (sans respecter la casse). +SUBSTITUTE = SUBSTITUE ## Remplace l’ancien texte d’une chaîne de caractères par un nouveau. +T = T ## Convertit ses arguments en texte. +TEXT = TEXTE ## Convertit un nombre au format texte. +TRIM = SUPPRESPACE ## Supprime les espaces du texte. +UPPER = MAJUSCULE ## Convertit le texte en majuscules. +VALUE = CNUM ## Convertit un argument textuel en nombre diff --git a/assets/excel/PHPExcel/locale/hu/config b/assets/excel/PHPExcel/locale/hu/config new file mode 100644 index 0000000..080b201 --- /dev/null +++ b/assets/excel/PHPExcel/locale/hu/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = Ft + + +## +## Excel Error Codes (For future use) +## +NULL = #NULLA! +DIV0 = #ZÉRÓOSZTÓ! +VALUE = #ÉRTÉK! +REF = #HIV! +NAME = #NÉV? +NUM = #SZÁM! +NA = #HIÁNYZIK diff --git a/assets/excel/PHPExcel/locale/hu/functions b/assets/excel/PHPExcel/locale/hu/functions new file mode 100644 index 0000000..200d3f7 --- /dev/null +++ b/assets/excel/PHPExcel/locale/hu/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Bővítmények és automatizálási függvények +## +GETPIVOTDATA = KIMUTATÁSADATOT.VESZ ## A kimutatásokban tárolt adatok visszaadására használható. + + +## +## Cube functions Kockafüggvények +## +CUBEKPIMEMBER = KOCKA.FŐTELJMUT ## Egy fő teljesítménymutató (KPI) nevét, tulajdonságát és mértékegységét adja eredményül, a nevet és a tulajdonságot megjeleníti a cellában. A KPI-k számszerűsíthető mérési lehetőséget jelentenek – ilyen mutató például a havi bruttó nyereség vagy az egy alkalmazottra jutó negyedéves forgalom –, egy szervezet teljesítményének nyomonkövetésére használhatók. +CUBEMEMBER = KOCKA.TAG ## Kockahierachia tagját vagy rekordját adja eredményül. Ellenőrizhető vele, hogy szerepel-e a kockában az adott tag vagy rekord. +CUBEMEMBERPROPERTY = KOCKA.TAG.TUL ## A kocka egyik tagtulajdonságának értékét adja eredményül. Használatával ellenőrizhető, hogy szerepel-e egy tagnév a kockában, eredménye pedig az erre a tagra vonatkozó, megadott tulajdonság. +CUBERANKEDMEMBER = KOCKA.HALM.ELEM ## Egy halmaz rangsor szerinti n-edik tagját adja eredményül. Használatával egy halmaz egy vagy több elemét kaphatja meg, például a legnagyobb teljesítményű üzletkötőt vagy a 10 legjobb tanulót. +CUBESET = KOCKA.HALM ## Számított tagok vagy rekordok halmazát adja eredményül, ehhez egy beállított kifejezést elküld a kiszolgálón található kockának, majd ezt a halmazt adja vissza a Microsoft Office Excel alkalmazásnak. +CUBESETCOUNT = KOCKA.HALM.DB ## Egy halmaz elemszámát adja eredményül. +CUBEVALUE = KOCKA.ÉRTÉK ## Kockából összesített értéket ad eredményül. + + +## +## Database functions Adatbázis-kezelő függvények +## +DAVERAGE = AB.ÁTLAG ## A kijelölt adatbáziselemek átlagát számítja ki. +DCOUNT = AB.DARAB ## Megszámolja, hogy az adatbázisban hány cella tartalmaz számokat. +DCOUNTA = AB.DARAB2 ## Megszámolja az adatbázisban lévő nem üres cellákat. +DGET = AB.MEZŐ ## Egy adatbázisból egyetlen olyan rekordot ad vissza, amely megfelel a megadott feltételeknek. +DMAX = AB.MAX ## A kiválasztott adatbáziselemek közül a legnagyobb értéket adja eredményül. +DMIN = AB.MIN ## A kijelölt adatbáziselemek közül a legkisebb értéket adja eredményül. +DPRODUCT = AB.SZORZAT ## Az adatbázis megadott feltételeknek eleget tevő rekordjaira összeszorozza a megadott mezőben található számértékeket, és eredményül ezt a szorzatot adja. +DSTDEV = AB.SZÓRÁS ## A kijelölt adatbáziselemek egy mintája alapján megbecsüli a szórást. +DSTDEVP = AB.SZÓRÁS2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórást. +DSUM = AB.SZUM ## Összeadja a feltételnek megfelelő adatbázisrekordok mezőoszlopában a számokat. +DVAR = AB.VAR ## A kijelölt adatbáziselemek mintája alapján becslést ad a szórásnégyzetre. +DVARP = AB.VAR2 ## A kijelölt adatbáziselemek teljes sokasága alapján kiszámítja a szórásnégyzetet. + + +## +## Date and time functions Dátumfüggvények +## +DATE = DÁTUM ## Adott dátum dátumértékét adja eredményül. +DATEVALUE = DÁTUMÉRTÉK ## Szövegként megadott dátumot dátumértékké alakít át. +DAY = NAP ## Dátumértéket a hónap egy napjává (0-31) alakít. +DAYS360 = NAP360 ## Két dátum közé eső napok számát számítja ki a 360 napos év alapján. +EDATE = EDATE ## Adott dátumnál adott számú hónappal korábbi vagy későbbi dátum dátumértékét adja eredményül. +EOMONTH = EOMONTH ## Adott dátumnál adott számú hónappal korábbi vagy későbbi hónap utolsó napjának dátumértékét adja eredményül. +HOUR = ÓRA ## Időértéket órákká alakít. +MINUTE = PERC ## Időértéket percekké alakít. +MONTH = HÓNAP ## Időértéket hónapokká alakít. +NETWORKDAYS = NETWORKDAYS ## Két dátum között a teljes munkanapok számát adja meg. +NOW = MOST ## A napi dátum dátumértékét és a pontos idő időértékét adja eredményül. +SECOND = MPERC ## Időértéket másodpercekké alakít át. +TIME = IDŐ ## Adott időpont időértékét adja meg. +TIMEVALUE = IDŐÉRTÉK ## Szövegként megadott időpontot időértékké alakít át. +TODAY = MA ## A napi dátum dátumértékét adja eredményül. +WEEKDAY = HÉT.NAPJA ## Dátumértéket a hét napjává alakítja át. +WEEKNUM = WEEKNUM ## Visszatérési értéke egy szám, amely azt mutatja meg, hogy a megadott dátum az év hányadik hetére esik. +WORKDAY = WORKDAY ## Adott dátumnál adott munkanappal korábbi vagy későbbi dátum dátumértékét adja eredményül. +YEAR = ÉV ## Sorszámot évvé alakít át. +YEARFRAC = YEARFRAC ## Az adott dátumok közötti teljes napok számát törtévként adja meg. + + +## +## Engineering functions Mérnöki függvények +## +BESSELI = BESSELI ## Az In(x) módosított Bessel-függvény értékét adja eredményül. +BESSELJ = BESSELJ ## A Jn(x) Bessel-függvény értékét adja eredményül. +BESSELK = BESSELK ## A Kn(x) módosított Bessel-függvény értékét adja eredményül. +BESSELY = BESSELY ## Az Yn(x) módosított Bessel-függvény értékét adja eredményül. +BIN2DEC = BIN2DEC ## Bináris számot decimálissá alakít át. +BIN2HEX = BIN2HEX ## Bináris számot hexadecimálissá alakít át. +BIN2OCT = BIN2OCT ## Bináris számot oktálissá alakít át. +COMPLEX = COMPLEX ## Valós és képzetes részből komplex számot képez. +CONVERT = CONVERT ## Mértékegységeket vált át. +DEC2BIN = DEC2BIN ## Decimális számot binárissá alakít át. +DEC2HEX = DEC2HEX ## Decimális számot hexadecimálissá alakít át. +DEC2OCT = DEC2OCT ## Decimális számot oktálissá alakít át. +DELTA = DELTA ## Azt vizsgálja, hogy két érték egyenlő-e. +ERF = ERF ## A hibafüggvény értékét adja eredményül. +ERFC = ERFC ## A kiegészített hibafüggvény értékét adja eredményül. +GESTEP = GESTEP ## Azt vizsgálja, hogy egy szám nagyobb-e adott küszöbértéknél. +HEX2BIN = HEX2BIN ## Hexadecimális számot binárissá alakít át. +HEX2DEC = HEX2DEC ## Hexadecimális számot decimálissá alakít át. +HEX2OCT = HEX2OCT ## Hexadecimális számot oktálissá alakít át. +IMABS = IMABS ## Komplex szám abszolút értékét (modulusát) adja eredményül. +IMAGINARY = IMAGINARY ## Komplex szám képzetes részét adja eredményül. +IMARGUMENT = IMARGUMENT ## A komplex szám radiánban kifejezett théta argumentumát adja eredményül. +IMCONJUGATE = IMCONJUGATE ## Komplex szám komplex konjugáltját adja eredményül. +IMCOS = IMCOS ## Komplex szám koszinuszát adja eredményül. +IMDIV = IMDIV ## Két komplex szám hányadosát adja eredményül. +IMEXP = IMEXP ## Az e szám komplex kitevőjű hatványát adja eredményül. +IMLN = IMLN ## Komplex szám természetes logaritmusát adja eredményül. +IMLOG10 = IMLOG10 ## Komplex szám tízes alapú logaritmusát adja eredményül. +IMLOG2 = IMLOG2 ## Komplex szám kettes alapú logaritmusát adja eredményül. +IMPOWER = IMPOWER ## Komplex szám hatványát adja eredményül. +IMPRODUCT = IMPRODUCT ## Komplex számok szorzatát adja eredményül. +IMREAL = IMREAL ## Komplex szám valós részét adja eredményül. +IMSIN = IMSIN ## Komplex szám szinuszát adja eredményül. +IMSQRT = IMSQRT ## Komplex szám négyzetgyökét adja eredményül. +IMSUB = IMSUB ## Két komplex szám különbségét adja eredményül. +IMSUM = IMSUM ## Komplex számok összegét adja eredményül. +OCT2BIN = OCT2BIN ## Oktális számot binárissá alakít át. +OCT2DEC = OCT2DEC ## Oktális számot decimálissá alakít át. +OCT2HEX = OCT2HEX ## Oktális számot hexadecimálissá alakít át. + + +## +## Financial functions Pénzügyi függvények +## +ACCRINT = ACCRINT ## Periodikusan kamatozó értékpapír felszaporodott kamatát adja eredményül. +ACCRINTM = ACCRINTM ## Lejáratkor kamatozó értékpapír felszaporodott kamatát adja eredményül. +AMORDEGRC = AMORDEGRC ## Állóeszköz lineáris értékcsökkenését adja meg az egyes könyvelési időszakokra vonatkozóan. +AMORLINC = AMORLINC ## Az egyes könyvelési időszakokban az értékcsökkenést adja meg. +COUPDAYBS = COUPDAYBS ## A szelvényidőszak kezdetétől a kifizetés időpontjáig eltelt napokat adja vissza. +COUPDAYS = COUPDAYS ## A kifizetés időpontját magában foglaló szelvényperiódus hosszát adja meg napokban. +COUPDAYSNC = COUPDAYSNC ## A kifizetés időpontja és a legközelebbi szelvénydátum közötti napok számát adja meg. +COUPNCD = COUPNCD ## A kifizetést követő legelső szelvénydátumot adja eredményül. +COUPNUM = COUPNUM ## A kifizetés és a lejárat időpontja között kifizetendő szelvények számát adja eredményül. +COUPPCD = COUPPCD ## A kifizetés előtti utolsó szelvénydátumot adja eredményül. +CUMIPMT = CUMIPMT ## Két fizetési időszak között kifizetett kamat halmozott értékét adja eredményül. +CUMPRINC = CUMPRINC ## Két fizetési időszak között kifizetett részletek halmozott (kamatot nem tartalmazó) értékét adja eredményül. +DB = KCS2 ## Eszköz adott időszak alatti értékcsökkenését számítja ki a lineáris leírási modell alkalmazásával. +DDB = KCSA ## Eszköz értékcsökkenését számítja ki adott időszakra vonatkozóan a progresszív vagy egyéb megadott leírási modell alkalmazásával. +DISC = DISC ## Értékpapír leszámítolási kamatlábát adja eredményül. +DOLLARDE = DOLLARDE ## Egy közönséges törtként megadott számot tizedes törtté alakít át. +DOLLARFR = DOLLARFR ## Tizedes törtként megadott számot közönséges törtté alakít át. +DURATION = DURATION ## Periodikus kamatfizetésű értékpapír éves kamatérzékenységét adja eredményül. +EFFECT = EFFECT ## Az éves tényleges kamatláb értékét adja eredményül. +FV = JBÉ ## Befektetés jövőbeli értékét számítja ki. +FVSCHEDULE = FVSCHEDULE ## A kezdőtőke adott kamatlábak szerint megnövelt jövőbeli értékét adja eredményül. +INTRATE = INTRATE ## A lejáratig teljesen lekötött értékpapír kamatrátáját adja eredményül. +IPMT = RRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. +IRR = BMR ## A befektetés belső megtérülési rátáját számítja ki pénzáramláshoz. +ISPMT = LRÉSZLETKAMAT ## A befektetés adott időszakára fizetett kamatot számítja ki. +MDURATION = MDURATION ## Egy 100 Ft névértékű értékpapír Macauley-féle módosított kamatérzékenységét adja eredményül. +MIRR = MEGTÉRÜLÉS ## A befektetés belső megtérülési rátáját számítja ki a költségek és a bevételek különböző kamatlába mellett. +NOMINAL = NOMINAL ## Az éves névleges kamatláb értékét adja eredményül. +NPER = PER.SZÁM ## A törlesztési időszakok számát adja meg. +NPV = NMÉ ## Befektetéshez kapcsolódó pénzáramlás nettó jelenértékét számítja ki ismert pénzáramlás és kamatláb mellett. +ODDFPRICE = ODDFPRICE ## Egy 100 Ft névértékű, a futamidő elején töredék-időszakos értékpapír árát adja eredményül. +ODDFYIELD = ODDFYIELD ## A futamidő elején töredék-időszakos értékpapír hozamát adja eredményül. +ODDLPRICE = ODDLPRICE ## Egy 100 Ft névértékű, a futamidő végén töredék-időszakos értékpapír árát adja eredményül. +ODDLYIELD = ODDLYIELD ## A futamidő végén töredék-időszakos értékpapír hozamát adja eredményül. +PMT = RÉSZLET ## A törlesztési időszakra vonatkozó törlesztési összeget számítja ki. +PPMT = PRÉSZLET ## Hiteltörlesztésen belül a tőketörlesztés nagyságát számítja ki adott időszakra. +PRICE = PRICE ## Egy 100 Ft névértékű, periodikusan kamatozó értékpapír árát adja eredményül. +PRICEDISC = PRICEDISC ## Egy 100 Ft névértékű leszámítolt értékpapír árát adja eredményül. +PRICEMAT = PRICEMAT ## Egy 100 Ft névértékű, a lejáratkor kamatozó értékpapír árát adja eredményül. +PV = MÉ ## Befektetés jelenlegi értékét számítja ki. +RATE = RÁTA ## Egy törlesztési időszakban az egy időszakra eső kamatláb nagyságát számítja ki. +RECEIVED = RECEIVED ## A lejáratig teljesen lekötött értékpapír lejáratakor kapott összegét adja eredményül. +SLN = LCSA ## Tárgyi eszköz egy időszakra eső amortizációját adja meg bruttó érték szerinti lineáris leírási kulcsot alkalmazva. +SYD = SYD ## Tárgyi eszköz értékcsökkenését számítja ki adott időszakra az évek számjegyösszegével dolgozó módszer alapján. +TBILLEQ = TBILLEQ ## Kincstárjegy kötvény-egyenértékű hozamát adja eredményül. +TBILLPRICE = TBILLPRICE ## Egy 100 Ft névértékű kincstárjegy árát adja eredményül. +TBILLYIELD = TBILLYIELD ## Kincstárjegy hozamát adja eredményül. +VDB = ÉCSRI ## Tárgyi eszköz amortizációját számítja ki megadott vagy részidőszakra a csökkenő egyenleg módszerének alkalmazásával. +XIRR = XIRR ## Ütemezett készpénzforgalom (cash flow) belső megtérülési kamatrátáját adja eredményül. +XNPV = XNPV ## Ütemezett készpénzforgalom (cash flow) nettó jelenlegi értékét adja eredményül. +YIELD = YIELD ## Periodikusan kamatozó értékpapír hozamát adja eredményül. +YIELDDISC = YIELDDISC ## Leszámítolt értékpapír (például kincstárjegy) éves hozamát adja eredményül. +YIELDMAT = YIELDMAT ## Lejáratkor kamatozó értékpapír éves hozamát adja eredményül. + + +## +## Information functions Információs függvények +## +CELL = CELLA ## Egy cella formátumára, elhelyezkedésére vagy tartalmára vonatkozó adatokat ad eredményül. +ERROR.TYPE = HIBA.TÍPUS ## Egy hibatípushoz tartozó számot ad eredményül. +INFO = INFÓ ## A rendszer- és munkakörnyezet pillanatnyi állapotáról ad felvilágosítást. +ISBLANK = ÜRES ## Eredménye IGAZ, ha az érték üres. +ISERR = HIBA ## Eredménye IGAZ, ha az érték valamelyik hibaérték a #HIÁNYZIK kivételével. +ISERROR = HIBÁS ## Eredménye IGAZ, ha az érték valamelyik hibaérték. +ISEVEN = ISEVEN ## Eredménye IGAZ, ha argumentuma páros szám. +ISLOGICAL = LOGIKAI ## Eredménye IGAZ, ha az érték logikai érték. +ISNA = NINCS ## Eredménye IGAZ, ha az érték a #HIÁNYZIK hibaérték. +ISNONTEXT = NEM.SZÖVEG ## Eredménye IGAZ, ha az érték nem szöveg. +ISNUMBER = SZÁM ## Eredménye IGAZ, ha az érték szám. +ISODD = ISODD ## Eredménye IGAZ, ha argumentuma páratlan szám. +ISREF = HIVATKOZÁS ## Eredménye IGAZ, ha az érték hivatkozás. +ISTEXT = SZÖVEG.E ## Eredménye IGAZ, ha az érték szöveg. +N = N ## Argumentumának értékét számmá alakítja. +NA = HIÁNYZIK ## Eredménye a #HIÁNYZIK hibaérték. +TYPE = TÍPUS ## Érték adattípusának azonosítószámát adja eredményül. + + +## +## Logical functions Logikai függvények +## +AND = ÉS ## Eredménye IGAZ, ha minden argumentuma IGAZ. +FALSE = HAMIS ## A HAMIS logikai értéket adja eredményül. +IF = HA ## Logikai vizsgálatot hajt végre. +IFERROR = HAHIBA ## A megadott értéket adja vissza, ha egy képlet hibához vezet; más esetben a képlet értékét adja eredményül. +NOT = NEM ## Argumentuma értékének ellentettjét adja eredményül. +OR = VAGY ## Eredménye IGAZ, ha bármely argumentuma IGAZ. +TRUE = IGAZ ## Az IGAZ logikai értéket adja eredményül. + + +## +## Lookup and reference functions Keresési és hivatkozási függvények +## +ADDRESS = CÍM ## A munkalap egy cellájára való hivatkozást adja szövegként eredményül. +AREAS = TERÜLET ## Hivatkozásban a területek számát adja eredményül. +CHOOSE = VÁLASZT ## Értékek listájából választ ki egy elemet. +COLUMN = OSZLOP ## Egy hivatkozás oszlopszámát adja eredményül. +COLUMNS = OSZLOPOK ## A hivatkozásban található oszlopok számát adja eredményül. +HLOOKUP = VKERES ## A megadott tömb felső sorában adott értékű elemet keres, és a megtalált elem oszlopából adott sorban elhelyezkedő értékkel tér vissza. +HYPERLINK = HIPERHIVATKOZÁS ## Hálózati kiszolgálón, intraneten vagy az interneten tárolt dokumentumot megnyitó parancsikont vagy hivatkozást hoz létre. +INDEX = INDEX ## Tömb- vagy hivatkozás indexszel megadott értékét adja vissza. +INDIRECT = INDIREKT ## Szöveg megadott hivatkozást ad eredményül. +LOOKUP = KERES ## Vektorban vagy tömbben keres meg értékeket. +MATCH = HOL.VAN ## Hivatkozásban vagy tömbben értékeket keres. +OFFSET = OFSZET ## Hivatkozás egy másik hivatkozástól számított távolságát adja meg. +ROW = SOR ## Egy hivatkozás sorának számát adja meg. +ROWS = SOROK ## Egy hivatkozás sorainak számát adja meg. +RTD = RTD ## Valós idejű adatokat keres vissza a COM automatizmust (automatizálás: Egy alkalmazás objektumaival való munka másik alkalmazásból vagy fejlesztőeszközből. A korábban OLE automatizmusnak nevezett automatizálás iparági szabvány, a Component Object Model (COM) szolgáltatása.) támogató programból. +TRANSPOSE = TRANSZPONÁLÁS ## Egy tömb transzponáltját adja eredményül. +VLOOKUP = FKERES ## A megadott tömb bal szélső oszlopában megkeres egy értéket, majd annak sora és a megadott oszlop metszéspontjában levő értéked adja eredményül. + + +## +## Math and trigonometry functions Matematikai és trigonometrikus függvények +## +ABS = ABS ## Egy szám abszolút értékét adja eredményül. +ACOS = ARCCOS ## Egy szám arkusz koszinuszát számítja ki. +ACOSH = ACOSH ## Egy szám inverz koszinusz hiperbolikuszát számítja ki. +ASIN = ARCSIN ## Egy szám arkusz szinuszát számítja ki. +ASINH = ASINH ## Egy szám inverz szinusz hiperbolikuszát számítja ki. +ATAN = ARCTAN ## Egy szám arkusz tangensét számítja ki. +ATAN2 = ARCTAN2 ## X és y koordináták alapján számítja ki az arkusz tangens értéket. +ATANH = ATANH ## A szám inverz tangens hiperbolikuszát számítja ki. +CEILING = PLAFON ## Egy számot a legközelebbi egészre vagy a pontosságként megadott érték legközelebb eső többszörösére kerekít. +COMBIN = KOMBINÁCIÓK ## Adott számú objektum összes lehetséges kombinációinak számát számítja ki. +COS = COS ## Egy szám koszinuszát számítja ki. +COSH = COSH ## Egy szám koszinusz hiperbolikuszát számítja ki. +DEGREES = FOK ## Radiánt fokká alakít át. +EVEN = PÁROS ## Egy számot a legközelebbi páros egész számra kerekít. +EXP = KITEVŐ ## Az e adott kitevőjű hatványát adja eredményül. +FACT = FAKT ## Egy szám faktoriálisát számítja ki. +FACTDOUBLE = FACTDOUBLE ## Egy szám dupla faktoriálisát adja eredményül. +FLOOR = PADLÓ ## Egy számot lefelé, a nulla felé kerekít. +GCD = GCD ## A legnagyobb közös osztót adja eredményül. +INT = INT ## Egy számot lefelé kerekít a legközelebbi egészre. +LCM = LCM ## A legkisebb közös többszöröst adja eredményül. +LN = LN ## Egy szám természetes logaritmusát számítja ki. +LOG = LOG ## Egy szám adott alapú logaritmusát számítja ki. +LOG10 = LOG10 ## Egy szám 10-es alapú logaritmusát számítja ki. +MDETERM = MDETERM ## Egy tömb mátrix-determinánsát számítja ki. +MINVERSE = INVERZ.MÁTRIX ## Egy tömb mátrix inverzét adja eredményül. +MMULT = MSZORZAT ## Két tömb mátrix-szorzatát adja meg. +MOD = MARADÉK ## Egy szám osztási maradékát adja eredményül. +MROUND = MROUND ## A kívánt többszörösére kerekített értéket ad eredményül. +MULTINOMIAL = MULTINOMIAL ## Számhalmaz multinomiálisát adja eredményül. +ODD = PÁRATLAN ## Egy számot a legközelebbi páratlan számra kerekít. +PI = PI ## A pi matematikai állandót adja vissza. +POWER = HATVÁNY ## Egy szám adott kitevőjű hatványát számítja ki. +PRODUCT = SZORZAT ## Argumentumai szorzatát számítja ki. +QUOTIENT = QUOTIENT ## Egy hányados egész részét adja eredményül. +RADIANS = RADIÁN ## Fokot radiánná alakít át. +RAND = VÉL ## Egy 0 és 1 közötti véletlen számot ad eredményül. +RANDBETWEEN = RANDBETWEEN ## Megadott számok közé eső véletlen számot állít elő. +ROMAN = RÓMAI ## Egy számot római számokkal kifejezve szövegként ad eredményül. +ROUND = KEREKÍTÉS ## Egy számot adott számú számjegyre kerekít. +ROUNDDOWN = KEREKÍTÉS.LE ## Egy számot lefelé, a nulla felé kerekít. +ROUNDUP = KEREKÍTÉS.FEL ## Egy számot felfelé, a nullától távolabbra kerekít. +SERIESSUM = SERIESSUM ## Hatványsor összegét adja eredményül. +SIGN = ELŐJEL ## Egy szám előjelét adja meg. +SIN = SIN ## Egy szög szinuszát számítja ki. +SINH = SINH ## Egy szám szinusz hiperbolikuszát számítja ki. +SQRT = GYÖK ## Egy szám pozitív négyzetgyökét számítja ki. +SQRTPI = SQRTPI ## A (szám*pi) négyzetgyökét adja eredményül. +SUBTOTAL = RÉSZÖSSZEG ## Lista vagy adatbázis részösszegét adja eredményül. +SUM = SZUM ## Összeadja az argumentumlistájában lévő számokat. +SUMIF = SZUMHA ## A megadott feltételeknek eleget tevő cellákban található értékeket adja össze. +SUMIFS = SZUMHATÖBB ## Több megadott feltételnek eleget tévő tartománycellák összegét adja eredményül. +SUMPRODUCT = SZORZATÖSSZEG ## A megfelelő tömbelemek szorzatának összegét számítja ki. +SUMSQ = NÉGYZETÖSSZEG ## Argumentumai négyzetének összegét számítja ki. +SUMX2MY2 = SZUMX2BŐLY2 ## Két tömb megfelelő elemei négyzetének különbségét összegzi. +SUMX2PY2 = SZUMX2MEGY2 ## Két tömb megfelelő elemei négyzetének összegét összegzi. +SUMXMY2 = SZUMXBŐLY2 ## Két tömb megfelelő elemei különbségének négyzetösszegét számítja ki. +TAN = TAN ## Egy szám tangensét számítja ki. +TANH = TANH ## Egy szám tangens hiperbolikuszát számítja ki. +TRUNC = CSONK ## Egy számot egésszé csonkít. + + +## +## Statistical functions Statisztikai függvények +## +AVEDEV = ÁTL.ELTÉRÉS ## Az adatpontoknak átlaguktól való átlagos abszolút eltérését számítja ki. +AVERAGE = ÁTLAG ## Argumentumai átlagát számítja ki. +AVERAGEA = ÁTLAGA ## Argumentumai átlagát számítja ki (beleértve a számokat, szöveget és logikai értékeket). +AVERAGEIF = ÁTLAGHA ## A megadott feltételnek eleget tévő tartomány celláinak átlagát (számtani közepét) adja eredményül. +AVERAGEIFS = ÁTLAGHATÖBB ## A megadott feltételeknek eleget tévő cellák átlagát (számtani közepét) adja eredményül. +BETADIST = BÉTA.ELOSZLÁS ## A béta-eloszlás függvényt számítja ki. +BETAINV = INVERZ.BÉTA ## Adott béta-eloszláshoz kiszámítja a béta eloszlásfüggvény inverzét. +BINOMDIST = BINOM.ELOSZLÁS ## A diszkrét binomiális eloszlás valószínűségértékét számítja ki. +CHIDIST = KHI.ELOSZLÁS ## A khi-négyzet-eloszlás egyszélű valószínűségértékét számítja ki. +CHIINV = INVERZ.KHI ## A khi-négyzet-eloszlás egyszélű valószínűségértékének inverzét számítja ki. +CHITEST = KHI.PRÓBA ## Függetlenségvizsgálatot hajt végre. +CONFIDENCE = MEGBÍZHATÓSÁG ## Egy statisztikai sokaság várható értékének megbízhatósági intervallumát adja eredményül. +CORREL = KORREL ## Két adathalmaz korrelációs együtthatóját számítja ki. +COUNT = DARAB ## Megszámolja, hogy argumentumlistájában hány szám található. +COUNTA = DARAB2 ## Megszámolja, hogy argumentumlistájában hány érték található. +COUNTBLANK = DARABÜRES ## Egy tartományban összeszámolja az üres cellákat. +COUNTIF = DARABTELI ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek a megadott feltételnek. +COUNTIFS = DARABHATÖBB ## Egy tartományban összeszámolja azokat a cellákat, amelyek eleget tesznek több feltételnek. +COVAR = KOVAR ## A kovarianciát, azaz a páronkénti eltérések szorzatának átlagát számítja ki. +CRITBINOM = KRITBINOM ## Azt a legkisebb számot adja eredményül, amelyre a binomiális eloszlásfüggvény értéke nem kisebb egy adott határértéknél. +DEVSQ = SQ ## Az átlagtól való eltérések négyzetének összegét számítja ki. +EXPONDIST = EXP.ELOSZLÁS ## Az exponenciális eloszlás értékét számítja ki. +FDIST = F.ELOSZLÁS ## Az F-eloszlás értékét számítja ki. +FINV = INVERZ.F ## Az F-eloszlás inverzének értékét számítja ki. +FISHER = FISHER ## Fisher-transzformációt hajt végre. +FISHERINV = INVERZ.FISHER ## A Fisher-transzformáció inverzét hajtja végre. +FORECAST = ELŐREJELZÉS ## Az ismert értékek alapján lineáris regresszióval becsült értéket ad eredményül. +FREQUENCY = GYAKORISÁG ## A gyakorisági vagy empirikus eloszlás értékét függőleges tömbként adja eredményül. +FTEST = F.PRÓBA ## Az F-próba értékét adja eredményül. +GAMMADIST = GAMMA.ELOSZLÁS ## A gamma-eloszlás értékét számítja ki. +GAMMAINV = INVERZ.GAMMA ## A gamma-eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +GAMMALN = GAMMALN ## A gamma-függvény természetes logaritmusát számítja ki. +GEOMEAN = MÉRTANI.KÖZÉP ## Argumentumai mértani középértékét számítja ki. +GROWTH = NÖV ## Exponenciális regresszió alapján ad becslést. +HARMEAN = HARM.KÖZÉP ## Argumentumai harmonikus átlagát számítja ki. +HYPGEOMDIST = HIPERGEOM.ELOSZLÁS ## A hipergeometriai eloszlás értékét számítja ki. +INTERCEPT = METSZ ## A regressziós egyenes y tengellyel való metszéspontját határozza meg. +KURT = CSÚCSOSSÁG ## Egy adathalmaz csúcsosságát számítja ki. +LARGE = NAGY ## Egy adathalmaz k-adik legnagyobb elemét adja eredményül. +LINEST = LIN.ILL ## A legkisebb négyzetek módszerével az adatokra illesztett egyenes paramétereit határozza meg. +LOGEST = LOG.ILL ## Az adatokra illesztett exponenciális görbe paramétereit határozza meg. +LOGINV = INVERZ.LOG.ELOSZLÁS ## A lognormális eloszlás inverzét számítja ki. +LOGNORMDIST = LOG.ELOSZLÁS ## A lognormális eloszlásfüggvény értékét számítja ki. +MAX = MAX ## Az argumentumai között szereplő legnagyobb számot adja meg. +MAXA = MAX2 ## Az argumentumai között szereplő legnagyobb számot adja meg (beleértve a számokat, szöveget és logikai értékeket). +MEDIAN = MEDIÁN ## Adott számhalmaz mediánját számítja ki. +MIN = MIN ## Az argumentumai között szereplő legkisebb számot adja meg. +MINA = MIN2 ## Az argumentumai között szereplő legkisebb számot adja meg, beleértve a számokat, szöveget és logikai értékeket. +MODE = MÓDUSZ ## Egy adathalmazból kiválasztja a leggyakrabban előforduló számot. +NEGBINOMDIST = NEGBINOM.ELOSZL ## A negatív binomiális eloszlás értékét számítja ki. +NORMDIST = NORM.ELOSZL ## A normális eloszlás értékét számítja ki. +NORMINV = INVERZ.NORM ## A normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +NORMSDIST = STNORMELOSZL ## A standard normális eloszlás eloszlásfüggvényének értékét számítja ki. +NORMSINV = INVERZ.STNORM ## A standard normális eloszlás eloszlásfüggvénye inverzének értékét számítja ki. +PEARSON = PEARSON ## A Pearson-féle korrelációs együtthatót számítja ki. +PERCENTILE = PERCENTILIS ## Egy tartományban található értékek k-adik percentilisét, azaz százalékosztályát adja eredményül. +PERCENTRANK = SZÁZALÉKRANG ## Egy értéknek egy adathalmazon belül vett százalékos rangját (elhelyezkedését) számítja ki. +PERMUT = VARIÁCIÓK ## Adott számú objektum k-ad osztályú ismétlés nélküli variációinak számát számítja ki. +POISSON = POISSON ## A Poisson-eloszlás értékét számítja ki. +PROB = VALÓSZÍNŰSÉG ## Annak valószínűségét számítja ki, hogy adott értékek két határérték közé esnek. +QUARTILE = KVARTILIS ## Egy adathalmaz kvartilisét (negyedszintjét) számítja ki. +RANK = SORSZÁM ## Kiszámítja, hogy egy szám hányadik egy számsorozatban. +RSQ = RNÉGYZET ## Kiszámítja a Pearson-féle szorzatmomentum korrelációs együtthatójának négyzetét. +SKEW = FERDESÉG ## Egy eloszlás ferdeségét határozza meg. +SLOPE = MEREDEKSÉG ## Egy lineáris regressziós egyenes meredekségét számítja ki. +SMALL = KICSI ## Egy adathalmaz k-adik legkisebb elemét adja meg. +STANDARDIZE = NORMALIZÁLÁS ## Normalizált értéket ad eredményül. +STDEV = SZÓRÁS ## Egy statisztikai sokaság mintájából kiszámítja annak szórását. +STDEVA = SZÓRÁSA ## Egy statisztikai sokaság mintájából kiszámítja annak szórását (beleértve a számokat, szöveget és logikai értékeket). +STDEVP = SZÓRÁSP ## Egy statisztikai sokaság egészéből kiszámítja annak szórását. +STDEVPA = SZÓRÁSPA ## Egy statisztikai sokaság egészéből kiszámítja annak szórását (beleértve számokat, szöveget és logikai értékeket). +STEYX = STHIBAYX ## Egy regresszió esetén az egyes x-értékek alapján meghatározott y-értékek standard hibáját számítja ki. +TDIST = T.ELOSZLÁS ## A Student-féle t-eloszlás értékét számítja ki. +TINV = INVERZ.T ## A Student-féle t-eloszlás inverzét számítja ki. +TREND = TREND ## Lineáris trend értékeit számítja ki. +TRIMMEAN = RÉSZÁTLAG ## Egy adathalmaz középső részének átlagát számítja ki. +TTEST = T.PRÓBA ## A Student-féle t-próbához tartozó valószínűséget számítja ki. +VAR = VAR ## Minta alapján becslést ad a varianciára. +VARA = VARA ## Minta alapján becslést ad a varianciára (beleértve számokat, szöveget és logikai értékeket). +VARP = VARP ## Egy statisztikai sokaság varianciáját számítja ki. +VARPA = VARPA ## Egy statisztikai sokaság varianciáját számítja ki (beleértve számokat, szöveget és logikai értékeket). +WEIBULL = WEIBULL ## A Weibull-féle eloszlás értékét számítja ki. +ZTEST = Z.PRÓBA ## Az egyszélű z-próbával kapott valószínűségértéket számítja ki. + + +## +## Text functions Szövegműveletekhez használható függvények +## +ASC = ASC ## Szöveg teljes szélességű (kétbájtos) latin és katakana karaktereit félszélességű (egybájtos) karakterekké alakítja. +BAHTTEXT = BAHTSZÖVEG ## Számot szöveggé alakít a ß (baht) pénznemformátum használatával. +CHAR = KARAKTER ## A kódszámmal meghatározott karaktert adja eredményül. +CLEAN = TISZTÍT ## A szövegből eltávolítja az összes nem nyomtatható karaktert. +CODE = KÓD ## Karaktersorozat első karakterének numerikus kódját adja eredményül. +CONCATENATE = ÖSSZEFŰZ ## Több szövegelemet egyetlen szöveges elemmé fűz össze. +DOLLAR = FORINT ## Számot pénznem formátumú szöveggé alakít át. +EXACT = AZONOS ## Megvizsgálja, hogy két érték azonos-e. +FIND = SZÖVEG.TALÁL ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). +FINDB = SZÖVEG.TALÁL2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk megkülönböztetésével). +FIXED = FIX ## Számot szöveges formátumúra alakít adott számú tizedesjegyre kerekítve. +JIS = JIS ## A félszélességű (egybájtos) latin és a katakana karaktereket teljes szélességű (kétbájtos) karakterekké alakítja. +LEFT = BAL ## Szöveg bal szélső karaktereit adja eredményül. +LEFTB = BAL2 ## Szöveg bal szélső karaktereit adja eredményül. +LEN = HOSSZ ## Szöveg karakterekben mért hosszát adja eredményül. +LENB = HOSSZ2 ## Szöveg karakterekben mért hosszát adja eredményül. +LOWER = KISBETŰ ## Szöveget kisbetűssé alakít át. +MID = KÖZÉP ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. +MIDB = KÖZÉP2 ## A szöveg adott pozíciójától kezdve megadott számú karaktert ad vissza eredményként. +PHONETIC = PHONETIC ## Szöveg furigana (fonetikus) karaktereit adja vissza. +PROPER = TNÉV ## Szöveg minden szavának kezdőbetűjét nagybetűsre cseréli. +REPLACE = CSERE ## A szövegen belül karaktereket cserél. +REPLACEB = CSERE2 ## A szövegen belül karaktereket cserél. +REPT = SOKSZOR ## Megadott számú alkalommal megismétel egy szövegrészt. +RIGHT = JOBB ## Szövegrész jobb szélső karaktereit adja eredményül. +RIGHTB = JOBB2 ## Szövegrész jobb szélső karaktereit adja eredményül. +SEARCH = SZÖVEG.KERES ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). +SEARCHB = SZÖVEG.KERES2 ## Karaktersorozatot keres egy másikban (a kis- és nagybetűk között nem tesz különbséget). +SUBSTITUTE = HELYETTE ## Szövegben adott karaktereket másikra cserél. +T = T ## Argumentumát szöveggé alakítja át. +TEXT = SZÖVEG ## Számértéket alakít át adott számformátumú szöveggé. +TRIM = TRIM ## A szövegből eltávolítja a szóközöket. +UPPER = NAGYBETŰS ## Szöveget nagybetűssé alakít át. +VALUE = ÉRTÉK ## Szöveget számmá alakít át. diff --git a/assets/excel/PHPExcel/locale/it/config b/assets/excel/PHPExcel/locale/it/config new file mode 100644 index 0000000..c3afa75 --- /dev/null +++ b/assets/excel/PHPExcel/locale/it/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = € + + +## +## Excel Error Codes (For future use) +## +NULL = #NULLO! +DIV0 = #DIV/0! +VALUE = #VALORE! +REF = #RIF! +NAME = #NOME? +NUM = #NUM! +NA = #N/D diff --git a/assets/excel/PHPExcel/locale/it/functions b/assets/excel/PHPExcel/locale/it/functions new file mode 100644 index 0000000..d371f3d --- /dev/null +++ b/assets/excel/PHPExcel/locale/it/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funzioni di automazione e dei componenti aggiuntivi +## +GETPIVOTDATA = INFO.DATI.TAB.PIVOT ## Restituisce i dati memorizzati in un rapporto di tabella pivot + + +## +## Cube functions Funzioni cubo +## +CUBEKPIMEMBER = MEMBRO.KPI.CUBO ## Restituisce il nome, la proprietà e la misura di un indicatore di prestazioni chiave (KPI) e visualizza il nome e la proprietà nella cella. Un KPI è una misura quantificabile, ad esempio l'utile lordo mensile o il fatturato trimestrale dei dipendenti, utilizzata per il monitoraggio delle prestazioni di un'organizzazione. +CUBEMEMBER = MEMBRO.CUBO ## Restituisce un membro o una tupla in una gerarchia di cubi. Consente di verificare l'esistenza del membro o della tupla nel cubo. +CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO ## Restituisce il valore di una proprietà di un membro del cubo. Consente di verificare l'esistenza di un nome di membro all'interno del cubo e di restituire la proprietà specificata per tale membro. +CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO ## Restituisce l'n-esimo membro o il membro ordinato di un insieme. Consente di restituire uno o più elementi in un insieme, ad esempio l'agente di vendita migliore o i primi 10 studenti. +CUBESET = SET.CUBO ## Definisce un insieme di tuple o membri calcolati mediante l'invio di un'espressione di insieme al cubo sul server. In questo modo l'insieme viene creato e restituito a Microsoft Office Excel. +CUBESETCOUNT = CONTA.SET.CUBO ## Restituisce il numero di elementi di un insieme. +CUBEVALUE = VALORE.CUBO ## Restituisce un valore aggregato da un cubo. + + +## +## Database functions Funzioni di database +## +DAVERAGE = DB.MEDIA ## Restituisce la media di voci del database selezionate +DCOUNT = DB.CONTA.NUMERI ## Conta le celle di un database contenenti numeri +DCOUNTA = DB.CONTA.VALORI ## Conta le celle non vuote in un database +DGET = DB.VALORI ## Estrae da un database un singolo record che soddisfa i criteri specificati +DMAX = DB.MAX ## Restituisce il valore massimo dalle voci selezionate in un database +DMIN = DB.MIN ## Restituisce il valore minimo dalle voci di un database selezionate +DPRODUCT = DB.PRODOTTO ## Moltiplica i valori in un determinato campo di record che soddisfano i criteri del database +DSTDEV = DB.DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione di voci di un database selezionate +DSTDEVP = DB.DEV.ST.POP ## Calcola la deviazione standard sulla base di tutte le voci di un database selezionate +DSUM = DB.SOMMA ## Aggiunge i numeri nel campo colonna di record del database che soddisfa determinati criteri +DVAR = DB.VAR ## Restituisce una stima della varianza sulla base di un campione da voci di un database selezionate +DVARP = DB.VAR.POP ## Calcola la varianza sulla base di tutte le voci di un database selezionate + + +## +## Date and time functions Funzioni data e ora +## +DATE = DATA ## Restituisce il numero seriale di una determinata data +DATEVALUE = DATA.VALORE ## Converte una data sotto forma di testo in un numero seriale +DAY = GIORNO ## Converte un numero seriale in un giorno del mese +DAYS360 = GIORNO360 ## Calcola il numero di giorni compreso tra due date basandosi su un anno di 360 giorni +EDATE = DATA.MESE ## Restituisce il numero seriale della data che rappresenta il numero di mesi prima o dopo la data di inizio +EOMONTH = FINE.MESE ## Restituisce il numero seriale dell'ultimo giorno del mese, prima o dopo un determinato numero di mesi +HOUR = ORA ## Converte un numero seriale in un'ora +MINUTE = MINUTO ## Converte un numero seriale in un minuto +MONTH = MESE ## Converte un numero seriale in un mese +NETWORKDAYS = GIORNI.LAVORATIVI.TOT ## Restituisce il numero di tutti i giorni lavorativi compresi fra due date +NOW = ADESSO ## Restituisce il numero seriale della data e dell'ora corrente +SECOND = SECONDO ## Converte un numero seriale in un secondo +TIME = ORARIO ## Restituisce il numero seriale di una determinata ora +TIMEVALUE = ORARIO.VALORE ## Converte un orario in forma di testo in un numero seriale +TODAY = OGGI ## Restituisce il numero seriale relativo alla data odierna +WEEKDAY = GIORNO.SETTIMANA ## Converte un numero seriale in un giorno della settimana +WEEKNUM = NUM.SETTIMANA ## Converte un numero seriale in un numero che rappresenta la posizione numerica di una settimana nell'anno +WORKDAY = GIORNO.LAVORATIVO ## Restituisce il numero della data prima o dopo un determinato numero di giorni lavorativi +YEAR = ANNO ## Converte un numero seriale in un anno +YEARFRAC = FRAZIONE.ANNO ## Restituisce la frazione dell'anno che rappresenta il numero dei giorni compresi tra una data_ iniziale e una data_finale + + +## +## Engineering functions Funzioni ingegneristiche +## +BESSELI = BESSEL.I ## Restituisce la funzione di Bessel modificata In(x) +BESSELJ = BESSEL.J ## Restituisce la funzione di Bessel Jn(x) +BESSELK = BESSEL.K ## Restituisce la funzione di Bessel modificata Kn(x) +BESSELY = BESSEL.Y ## Restituisce la funzione di Bessel Yn(x) +BIN2DEC = BINARIO.DECIMALE ## Converte un numero binario in decimale +BIN2HEX = BINARIO.HEX ## Converte un numero binario in esadecimale +BIN2OCT = BINARIO.OCT ## Converte un numero binario in ottale +COMPLEX = COMPLESSO ## Converte i coefficienti reali e immaginari in numeri complessi +CONVERT = CONVERTI ## Converte un numero da un sistema di misura in un altro +DEC2BIN = DECIMALE.BINARIO ## Converte un numero decimale in binario +DEC2HEX = DECIMALE.HEX ## Converte un numero decimale in esadecimale +DEC2OCT = DECIMALE.OCT ## Converte un numero decimale in ottale +DELTA = DELTA ## Verifica se due valori sono uguali +ERF = FUNZ.ERRORE ## Restituisce la funzione di errore +ERFC = FUNZ.ERRORE.COMP ## Restituisce la funzione di errore complementare +GESTEP = SOGLIA ## Verifica se un numero è maggiore del valore di soglia +HEX2BIN = HEX.BINARIO ## Converte un numero esadecimale in binario +HEX2DEC = HEX.DECIMALE ## Converte un numero esadecimale in decimale +HEX2OCT = HEX.OCT ## Converte un numero esadecimale in ottale +IMABS = COMP.MODULO ## Restituisce il valore assoluto (modulo) di un numero complesso +IMAGINARY = COMP.IMMAGINARIO ## Restituisce il coefficiente immaginario di un numero complesso +IMARGUMENT = COMP.ARGOMENTO ## Restituisce l'argomento theta, un angolo espresso in radianti +IMCONJUGATE = COMP.CONIUGATO ## Restituisce il complesso coniugato del numero complesso +IMCOS = COMP.COS ## Restituisce il coseno di un numero complesso +IMDIV = COMP.DIV ## Restituisce il quoziente di due numeri complessi +IMEXP = COMP.EXP ## Restituisce il valore esponenziale di un numero complesso +IMLN = COMP.LN ## Restituisce il logaritmo naturale di un numero complesso +IMLOG10 = COMP.LOG10 ## Restituisce il logaritmo in base 10 di un numero complesso +IMLOG2 = COMP.LOG2 ## Restituisce un logaritmo in base 2 di un numero complesso +IMPOWER = COMP.POTENZA ## Restituisce il numero complesso elevato a una potenza intera +IMPRODUCT = COMP.PRODOTTO ## Restituisce il prodotto di numeri complessi compresi tra 2 e 29 +IMREAL = COMP.PARTE.REALE ## Restituisce il coefficiente reale di un numero complesso +IMSIN = COMP.SEN ## Restituisce il seno di un numero complesso +IMSQRT = COMP.RADQ ## Restituisce la radice quadrata di un numero complesso +IMSUB = COMP.DIFF ## Restituisce la differenza fra due numeri complessi +IMSUM = COMP.SOMMA ## Restituisce la somma di numeri complessi +OCT2BIN = OCT.BINARIO ## Converte un numero ottale in binario +OCT2DEC = OCT.DECIMALE ## Converte un numero ottale in decimale +OCT2HEX = OCT.HEX ## Converte un numero ottale in esadecimale + + +## +## Financial functions Funzioni finanziarie +## +ACCRINT = INT.MATURATO.PER ## Restituisce l'interesse maturato di un titolo che paga interessi periodici +ACCRINTM = INT.MATURATO.SCAD ## Restituisce l'interesse maturato di un titolo che paga interessi alla scadenza +AMORDEGRC = AMMORT.DEGR ## Restituisce l'ammortamento per ogni periodo contabile utilizzando un coefficiente di ammortamento +AMORLINC = AMMORT.PER ## Restituisce l'ammortamento per ogni periodo contabile +COUPDAYBS = GIORNI.CED.INIZ.LIQ ## Restituisce il numero dei giorni che vanno dall'inizio del periodo di durata della cedola alla data di liquidazione +COUPDAYS = GIORNI.CED ## Restituisce il numero dei giorni relativi al periodo della cedola che contiene la data di liquidazione +COUPDAYSNC = GIORNI.CED.NUOVA ## Restituisce il numero di giorni che vanno dalla data di liquidazione alla data della cedola successiva +COUPNCD = DATA.CED.SUCC ## Restituisce un numero che rappresenta la data della cedola successiva alla data di liquidazione +COUPNUM = NUM.CED ## Restituisce il numero di cedole pagabili fra la data di liquidazione e la data di scadenza +COUPPCD = DATA.CED.PREC ## Restituisce un numero che rappresenta la data della cedola precedente alla data di liquidazione +CUMIPMT = INT.CUMUL ## Restituisce l'interesse cumulativo pagato fra due periodi +CUMPRINC = CAP.CUM ## Restituisce il capitale cumulativo pagato per estinguere un debito fra due periodi +DB = DB ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a quote fisse decrescenti +DDB = AMMORT ## Restituisce l'ammortamento di un bene per un periodo specificato utilizzando il metodo di ammortamento a doppie quote decrescenti o altri metodi specificati +DISC = TASSO.SCONTO ## Restituisce il tasso di sconto per un titolo +DOLLARDE = VALUTA.DEC ## Converte un prezzo valuta, espresso come frazione, in prezzo valuta, espresso come numero decimale +DOLLARFR = VALUTA.FRAZ ## Converte un prezzo valuta, espresso come numero decimale, in prezzo valuta, espresso come frazione +DURATION = DURATA ## Restituisce la durata annuale di un titolo con i pagamenti di interesse periodico +EFFECT = EFFETTIVO ## Restituisce l'effettivo tasso di interesse annuo +FV = VAL.FUT ## Restituisce il valore futuro di un investimento +FVSCHEDULE = VAL.FUT.CAPITALE ## Restituisce il valore futuro di un capitale iniziale dopo aver applicato una serie di tassi di interesse composti +INTRATE = TASSO.INT ## Restituisce il tasso di interesse per un titolo interamente investito +IPMT = INTERESSI ## Restituisce il valore degli interessi per un investimento relativo a un periodo specifico +IRR = TIR.COST ## Restituisce il tasso di rendimento interno per una serie di flussi di cassa +ISPMT = INTERESSE.RATA ## Calcola l'interesse di un investimento pagato durante un periodo specifico +MDURATION = DURATA.M ## Restituisce la durata Macauley modificata per un titolo con un valore presunto di € 100 +MIRR = TIR.VAR ## Restituisce il tasso di rendimento interno in cui i flussi di cassa positivi e negativi sono finanziati a tassi differenti +NOMINAL = NOMINALE ## Restituisce il tasso di interesse nominale annuale +NPER = NUM.RATE ## Restituisce un numero di periodi relativi a un investimento +NPV = VAN ## Restituisce il valore attuale netto di un investimento basato su una serie di flussi di cassa periodici e sul tasso di sconto +ODDFPRICE = PREZZO.PRIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente il primo periodo di durata irregolare +ODDFYIELD = REND.PRIMO.IRR ## Restituisce il rendimento di un titolo avente il primo periodo di durata irregolare +ODDLPRICE = PREZZO.ULTIMO.IRR ## Restituisce il prezzo di un titolo dal valore nominale di € 100 avente l'ultimo periodo di durata irregolare +ODDLYIELD = REND.ULTIMO.IRR ## Restituisce il rendimento di un titolo avente l'ultimo periodo di durata irregolare +PMT = RATA ## Restituisce il pagamento periodico di una rendita annua +PPMT = P.RATA ## Restituisce il pagamento sul capitale di un investimento per un dato periodo +PRICE = PREZZO ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga interessi periodici +PRICEDISC = PREZZO.SCONT ## Restituisce il prezzo di un titolo scontato dal valore nominale di € 100 +PRICEMAT = PREZZO.SCAD ## Restituisce il prezzo di un titolo dal valore nominale di € 100 che paga gli interessi alla scadenza +PV = VA ## Restituisce il valore attuale di un investimento +RATE = TASSO ## Restituisce il tasso di interesse per un periodo di un'annualità +RECEIVED = RICEV.SCAD ## Restituisce l'ammontare ricevuto alla scadenza di un titolo interamente investito +SLN = AMMORT.COST ## Restituisce l'ammortamento a quote costanti di un bene per un singolo periodo +SYD = AMMORT.ANNUO ## Restituisce l'ammortamento a somma degli anni di un bene per un periodo specificato +TBILLEQ = BOT.EQUIV ## Restituisce il rendimento equivalente ad un'obbligazione per un Buono ordinario del Tesoro +TBILLPRICE = BOT.PREZZO ## Restituisce il prezzo di un Buono del Tesoro dal valore nominale di € 100 +TBILLYIELD = BOT.REND ## Restituisce il rendimento di un Buono del Tesoro +VDB = AMMORT.VAR ## Restituisce l'ammortamento di un bene per un periodo specificato o parziale utilizzando il metodo a doppie quote proporzionali ai valori residui +XIRR = TIR.X ## Restituisce il tasso di rendimento interno di un impiego di flussi di cassa +XNPV = VAN.X ## Restituisce il valore attuale netto di un impiego di flussi di cassa non necessariamente periodici +YIELD = REND ## Restituisce il rendimento di un titolo che frutta interessi periodici +YIELDDISC = REND.TITOLI.SCONT ## Restituisce il rendimento annuale di un titolo scontato, ad esempio un Buono del Tesoro +YIELDMAT = REND.SCAD ## Restituisce il rendimento annuo di un titolo che paga interessi alla scadenza + + +## +## Information functions Funzioni relative alle informazioni +## +CELL = CELLA ## Restituisce le informazioni sulla formattazione, la posizione o i contenuti di una cella +ERROR.TYPE = ERRORE.TIPO ## Restituisce un numero che corrisponde a un tipo di errore +INFO = INFO ## Restituisce le informazioni sull'ambiente operativo corrente +ISBLANK = VAL.VUOTO ## Restituisce VERO se il valore è vuoto +ISERR = VAL.ERR ## Restituisce VERO se il valore è un valore di errore qualsiasi tranne #N/D +ISERROR = VAL.ERRORE ## Restituisce VERO se il valore è un valore di errore qualsiasi +ISEVEN = VAL.PARI ## Restituisce VERO se il numero è pari +ISLOGICAL = VAL.LOGICO ## Restituisce VERO se il valore è un valore logico +ISNA = VAL.NON.DISP ## Restituisce VERO se il valore è un valore di errore #N/D +ISNONTEXT = VAL.NON.TESTO ## Restituisce VERO se il valore non è in formato testo +ISNUMBER = VAL.NUMERO ## Restituisce VERO se il valore è un numero +ISODD = VAL.DISPARI ## Restituisce VERO se il numero è dispari +ISREF = VAL.RIF ## Restituisce VERO se il valore è un riferimento +ISTEXT = VAL.TESTO ## Restituisce VERO se il valore è in formato testo +N = NUM ## Restituisce un valore convertito in numero +NA = NON.DISP ## Restituisce il valore di errore #N/D +TYPE = TIPO ## Restituisce un numero che indica il tipo di dati relativi a un valore + + +## +## Logical functions Funzioni logiche +## +AND = E ## Restituisce VERO se tutti gli argomenti sono VERO +FALSE = FALSO ## Restituisce il valore logico FALSO +IF = SE ## Specifica un test logico da eseguire +IFERROR = SE.ERRORE ## Restituisce un valore specificato se una formula fornisce un errore come risultato; in caso contrario, restituisce il risultato della formula +NOT = NON ## Inverte la logica degli argomenti +OR = O ## Restituisce VERO se un argomento qualsiasi è VERO +TRUE = VERO ## Restituisce il valore logico VERO + + +## +## Lookup and reference functions Funzioni di ricerca e di riferimento +## +ADDRESS = INDIRIZZO ## Restituisce un riferimento come testo in una singola cella di un foglio di lavoro +AREAS = AREE ## Restituisce il numero di aree in un riferimento +CHOOSE = SCEGLI ## Sceglie un valore da un elenco di valori +COLUMN = RIF.COLONNA ## Restituisce il numero di colonna di un riferimento +COLUMNS = COLONNE ## Restituisce il numero di colonne in un riferimento +HLOOKUP = CERCA.ORIZZ ## Effettua una ricerca nella riga superiore di una matrice e restituisce il valore della cella specificata +HYPERLINK = COLLEG.IPERTESTUALE ## Crea un collegamento che apre un documento memorizzato in un server di rete, una rete Intranet o Internet +INDEX = INDICE ## Utilizza un indice per scegliere un valore da un riferimento o da una matrice +INDIRECT = INDIRETTO ## Restituisce un riferimento specificato da un valore testo +LOOKUP = CERCA ## Ricerca i valori in un vettore o in una matrice +MATCH = CONFRONTA ## Ricerca i valori in un riferimento o in una matrice +OFFSET = SCARTO ## Restituisce uno scarto di riferimento da un riferimento dato +ROW = RIF.RIGA ## Restituisce il numero di riga di un riferimento +ROWS = RIGHE ## Restituisce il numero delle righe in un riferimento +RTD = DATITEMPOREALE ## Recupera dati in tempo reale da un programma che supporta l'automazione COM (automazione: Metodo per utilizzare gli oggetti di un'applicazione da un'altra applicazione o da un altro strumento di sviluppo. Precedentemente nota come automazione OLE, l'automazione è uno standard del settore e una caratteristica del modello COM (Component Object Model).) +TRANSPOSE = MATR.TRASPOSTA ## Restituisce la trasposizione di una matrice +VLOOKUP = CERCA.VERT ## Effettua una ricerca nella prima colonna di una matrice e si sposta attraverso la riga per restituire il valore di una cella + + +## +## Math and trigonometry functions Funzioni matematiche e trigonometriche +## +ABS = ASS ## Restituisce il valore assoluto di un numero. +ACOS = ARCCOS ## Restituisce l'arcocoseno di un numero +ACOSH = ARCCOSH ## Restituisce l'inverso del coseno iperbolico di un numero +ASIN = ARCSEN ## Restituisce l'arcoseno di un numero +ASINH = ARCSENH ## Restituisce l'inverso del seno iperbolico di un numero +ATAN = ARCTAN ## Restituisce l'arcotangente di un numero +ATAN2 = ARCTAN.2 ## Restituisce l'arcotangente delle coordinate x e y specificate +ATANH = ARCTANH ## Restituisce l'inverso della tangente iperbolica di un numero +CEILING = ARROTONDA.ECCESSO ## Arrotonda un numero per eccesso all'intero più vicino o al multiplo più vicino a peso +COMBIN = COMBINAZIONE ## Restituisce il numero di combinazioni possibili per un numero assegnato di elementi +COS = COS ## Restituisce il coseno dell'angolo specificato +COSH = COSH ## Restituisce il coseno iperbolico di un numero +DEGREES = GRADI ## Converte i radianti in gradi +EVEN = PARI ## Arrotonda il valore assoluto di un numero per eccesso al più vicino intero pari +EXP = ESP ## Restituisce il numero e elevato alla potenza di num +FACT = FATTORIALE ## Restituisce il fattoriale di un numero +FACTDOUBLE = FATT.DOPPIO ## Restituisce il fattoriale doppio di un numero +FLOOR = ARROTONDA.DIFETTO ## Arrotonda un numero per difetto al multiplo più vicino a zero +GCD = MCD ## Restituisce il massimo comune divisore +INT = INT ## Arrotonda un numero per difetto al numero intero più vicino +LCM = MCM ## Restituisce il minimo comune multiplo +LN = LN ## Restituisce il logaritmo naturale di un numero +LOG = LOG ## Restituisce il logaritmo di un numero in una specificata base +LOG10 = LOG10 ## Restituisce il logaritmo in base 10 di un numero +MDETERM = MATR.DETERM ## Restituisce il determinante di una matrice +MINVERSE = MATR.INVERSA ## Restituisce l'inverso di una matrice +MMULT = MATR.PRODOTTO ## Restituisce il prodotto di due matrici +MOD = RESTO ## Restituisce il resto della divisione +MROUND = ARROTONDA.MULTIPLO ## Restituisce un numero arrotondato al multiplo desiderato +MULTINOMIAL = MULTINOMIALE ## Restituisce il multinomiale di un insieme di numeri +ODD = DISPARI ## Arrotonda un numero per eccesso al più vicino intero dispari +PI = PI.GRECO ## Restituisce il valore di pi greco +POWER = POTENZA ## Restituisce il risultato di un numero elevato a potenza +PRODUCT = PRODOTTO ## Moltiplica i suoi argomenti +QUOTIENT = QUOZIENTE ## Restituisce la parte intera di una divisione +RADIANS = RADIANTI ## Converte i gradi in radianti +RAND = CASUALE ## Restituisce un numero casuale compreso tra 0 e 1 +RANDBETWEEN = CASUALE.TRA ## Restituisce un numero casuale compreso tra i numeri specificati +ROMAN = ROMANO ## Restituisce il numero come numero romano sotto forma di testo +ROUND = ARROTONDA ## Arrotonda il numero al numero di cifre specificato +ROUNDDOWN = ARROTONDA.PER.DIF ## Arrotonda il valore assoluto di un numero per difetto +ROUNDUP = ARROTONDA.PER.ECC ## Arrotonda il valore assoluto di un numero per eccesso +SERIESSUM = SOMMA.SERIE ## Restituisce la somma di una serie di potenze in base alla formula +SIGN = SEGNO ## Restituisce il segno di un numero +SIN = SEN ## Restituisce il seno di un dato angolo +SINH = SENH ## Restituisce il seno iperbolico di un numero +SQRT = RADQ ## Restituisce una radice quadrata +SQRTPI = RADQ.PI.GRECO ## Restituisce la radice quadrata di un numero (numero * pi greco) +SUBTOTAL = SUBTOTALE ## Restituisce un subtotale in un elenco o in un database +SUM = SOMMA ## Somma i suoi argomenti +SUMIF = SOMMA.SE ## Somma le celle specificate da un dato criterio +SUMIFS = SOMMA.PIÙ.SE ## Somma le celle in un intervallo che soddisfano più criteri +SUMPRODUCT = MATR.SOMMA.PRODOTTO ## Restituisce la somma dei prodotti dei componenti corrispondenti della matrice +SUMSQ = SOMMA.Q ## Restituisce la somma dei quadrati degli argomenti +SUMX2MY2 = SOMMA.DIFF.Q ## Restituisce la somma della differenza dei quadrati dei corrispondenti elementi in due matrici +SUMX2PY2 = SOMMA.SOMMA.Q ## Restituisce la somma della somma dei quadrati dei corrispondenti elementi in due matrici +SUMXMY2 = SOMMA.Q.DIFF ## Restituisce la somma dei quadrati delle differenze dei corrispondenti elementi in due matrici +TAN = TAN ## Restituisce la tangente di un numero +TANH = TANH ## Restituisce la tangente iperbolica di un numero +TRUNC = TRONCA ## Tronca la parte decimale di un numero + + +## +## Statistical functions Funzioni statistiche +## +AVEDEV = MEDIA.DEV ## Restituisce la media delle deviazioni assolute delle coordinate rispetto alla loro media +AVERAGE = MEDIA ## Restituisce la media degli argomenti +AVERAGEA = MEDIA.VALORI ## Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici +AVERAGEIF = MEDIA.SE ## Restituisce la media aritmetica di tutte le celle in un intervallo che soddisfano un determinato criterio +AVERAGEIFS = MEDIA.PIÙ.SE ## Restituisce la media aritmetica di tutte le celle che soddisfano più criteri +BETADIST = DISTRIB.BETA ## Restituisce la funzione di distribuzione cumulativa beta +BETAINV = INV.BETA ## Restituisce l'inverso della funzione di distribuzione cumulativa per una distribuzione beta specificata +BINOMDIST = DISTRIB.BINOM ## Restituisce la distribuzione binomiale per il termine individuale +CHIDIST = DISTRIB.CHI ## Restituisce la probabilità a una coda per la distribuzione del chi quadrato +CHIINV = INV.CHI ## Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato +CHITEST = TEST.CHI ## Restituisce il test per l'indipendenza +CONFIDENCE = CONFIDENZA ## Restituisce l'intervallo di confidenza per una popolazione +CORREL = CORRELAZIONE ## Restituisce il coefficiente di correlazione tra due insiemi di dati +COUNT = CONTA.NUMERI ## Conta la quantità di numeri nell'elenco di argomenti +COUNTA = CONTA.VALORI ## Conta il numero di valori nell'elenco di argomenti +COUNTBLANK = CONTA.VUOTE ## Conta il numero di celle vuote all'interno di un intervallo +COUNTIF = CONTA.SE ## Conta il numero di celle all'interno di un intervallo che soddisfa i criteri specificati +COUNTIFS = CONTA.PIÙ.SE ## Conta il numero di celle in un intervallo che soddisfano più criteri. +COVAR = COVARIANZA ## Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate +CRITBINOM = CRIT.BINOM ## Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio +DEVSQ = DEV.Q ## Restituisce la somma dei quadrati delle deviazioni +EXPONDIST = DISTRIB.EXP ## Restituisce la distribuzione esponenziale +FDIST = DISTRIB.F ## Restituisce la distribuzione di probabilità F +FINV = INV.F ## Restituisce l'inverso della distribuzione della probabilità F +FISHER = FISHER ## Restituisce la trasformazione di Fisher +FISHERINV = INV.FISHER ## Restituisce l'inverso della trasformazione di Fisher +FORECAST = PREVISIONE ## Restituisce i valori lungo una tendenza lineare +FREQUENCY = FREQUENZA ## Restituisce la distribuzione di frequenza come matrice verticale +FTEST = TEST.F ## Restituisce il risultato di un test F +GAMMADIST = DISTRIB.GAMMA ## Restituisce la distribuzione gamma +GAMMAINV = INV.GAMMA ## Restituisce l'inverso della distribuzione cumulativa gamma +GAMMALN = LN.GAMMA ## Restituisce il logaritmo naturale della funzione gamma, G(x) +GEOMEAN = MEDIA.GEOMETRICA ## Restituisce la media geometrica +GROWTH = CRESCITA ## Restituisce i valori lungo una linea di tendenza esponenziale +HARMEAN = MEDIA.ARMONICA ## Restituisce la media armonica +HYPGEOMDIST = DISTRIB.IPERGEOM ## Restituisce la distribuzione ipergeometrica +INTERCEPT = INTERCETTA ## Restituisce l'intercetta della retta di regressione lineare +KURT = CURTOSI ## Restituisce la curtosi di un insieme di dati +LARGE = GRANDE ## Restituisce il k-esimo valore più grande in un insieme di dati +LINEST = REGR.LIN ## Restituisce i parametri di una tendenza lineare +LOGEST = REGR.LOG ## Restituisce i parametri di una linea di tendenza esponenziale +LOGINV = INV.LOGNORM ## Restituisce l'inverso di una distribuzione lognormale +LOGNORMDIST = DISTRIB.LOGNORM ## Restituisce la distribuzione lognormale cumulativa +MAX = MAX ## Restituisce il valore massimo in un elenco di argomenti +MAXA = MAX.VALORI ## Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici +MEDIAN = MEDIANA ## Restituisce la mediana dei numeri specificati +MIN = MIN ## Restituisce il valore minimo in un elenco di argomenti +MINA = MIN.VALORI ## Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici +MODE = MODA ## Restituisce il valore più comune in un insieme di dati +NEGBINOMDIST = DISTRIB.BINOM.NEG ## Restituisce la distribuzione binomiale negativa +NORMDIST = DISTRIB.NORM ## Restituisce la distribuzione cumulativa normale +NORMINV = INV.NORM ## Restituisce l'inverso della distribuzione cumulativa normale standard +NORMSDIST = DISTRIB.NORM.ST ## Restituisce la distribuzione cumulativa normale standard +NORMSINV = INV.NORM.ST ## Restituisce l'inverso della distribuzione cumulativa normale +PEARSON = PEARSON ## Restituisce il coefficiente del momento di correlazione di Pearson +PERCENTILE = PERCENTILE ## Restituisce il k-esimo dato percentile di valori in un intervallo +PERCENTRANK = PERCENT.RANGO ## Restituisce il rango di un valore in un insieme di dati come percentuale +PERMUT = PERMUTAZIONE ## Restituisce il numero delle permutazioni per un determinato numero di oggetti +POISSON = POISSON ## Restituisce la distribuzione di Poisson +PROB = PROBABILITÀ ## Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti +QUARTILE = QUARTILE ## Restituisce il quartile di un insieme di dati +RANK = RANGO ## Restituisce il rango di un numero in un elenco di numeri +RSQ = RQ ## Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson +SKEW = ASIMMETRIA ## Restituisce il grado di asimmetria di una distribuzione +SLOPE = PENDENZA ## Restituisce la pendenza di una retta di regressione lineare +SMALL = PICCOLO ## Restituisce il k-esimo valore più piccolo in un insieme di dati +STANDARDIZE = NORMALIZZA ## Restituisce un valore normalizzato +STDEV = DEV.ST ## Restituisce una stima della deviazione standard sulla base di un campione +STDEVA = DEV.ST.VALORI ## Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici +STDEVP = DEV.ST.POP ## Calcola la deviazione standard sulla base di un'intera popolazione +STDEVPA = DEV.ST.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici +STEYX = ERR.STD.YX ## Restituisce l'errore standard del valore previsto per y per ogni valore x nella regressione +TDIST = DISTRIB.T ## Restituisce la distribuzione t di Student +TINV = INV.T ## Restituisce l'inversa della distribuzione t di Student +TREND = TENDENZA ## Restituisce i valori lungo una linea di tendenza lineare +TRIMMEAN = MEDIA.TRONCATA ## Restituisce la media della parte interna di un insieme di dati +TTEST = TEST.T ## Restituisce la probabilità associata ad un test t di Student +VAR = VAR ## Stima la varianza sulla base di un campione +VARA = VAR.VALORI ## Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici +VARP = VAR.POP ## Calcola la varianza sulla base dell'intera popolazione +VARPA = VAR.POP.VALORI ## Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici +WEIBULL = WEIBULL ## Restituisce la distribuzione di Weibull +ZTEST = TEST.Z ## Restituisce il valore di probabilità a una coda per un test z + + +## +## Text functions Funzioni di testo +## +ASC = ASC ## Modifica le lettere inglesi o il katakana a doppio byte all'interno di una stringa di caratteri in caratteri a singolo byte +BAHTTEXT = BAHTTESTO ## Converte un numero in testo, utilizzando il formato valuta ß (baht) +CHAR = CODICE.CARATT ## Restituisce il carattere specificato dal numero di codice +CLEAN = LIBERA ## Elimina dal testo tutti i caratteri che non è possibile stampare +CODE = CODICE ## Restituisce il codice numerico del primo carattere di una stringa di testo +CONCATENATE = CONCATENA ## Unisce diversi elementi di testo in un unico elemento di testo +DOLLAR = VALUTA ## Converte un numero in testo, utilizzando il formato valuta € (euro) +EXACT = IDENTICO ## Verifica se due valori di testo sono uguali +FIND = TROVA ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) +FINDB = TROVA.B ## Rileva un valore di testo all'interno di un altro (distinzione tra maiuscole e minuscole) +FIXED = FISSO ## Formatta un numero come testo con un numero fisso di decimali +JIS = ORDINAMENTO.JIS ## Modifica le lettere inglesi o i caratteri katakana a byte singolo all'interno di una stringa di caratteri in caratteri a byte doppio. +LEFT = SINISTRA ## Restituisce il carattere più a sinistra di un valore di testo +LEFTB = SINISTRA.B ## Restituisce il carattere più a sinistra di un valore di testo +LEN = LUNGHEZZA ## Restituisce il numero di caratteri di una stringa di testo +LENB = LUNB ## Restituisce il numero di caratteri di una stringa di testo +LOWER = MINUSC ## Converte il testo in lettere minuscole +MID = MEDIA ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata +MIDB = MEDIA.B ## Restituisce un numero specifico di caratteri di una stringa di testo a partire dalla posizione specificata +PHONETIC = FURIGANA ## Estrae i caratteri fonetici (furigana) da una stringa di testo. +PROPER = MAIUSC.INIZ ## Converte in maiuscolo la prima lettera di ogni parola di un valore di testo +REPLACE = RIMPIAZZA ## Sostituisce i caratteri all'interno di un testo +REPLACEB = SOSTITUISCI.B ## Sostituisce i caratteri all'interno di un testo +REPT = RIPETI ## Ripete un testo per un dato numero di volte +RIGHT = DESTRA ## Restituisce il carattere più a destra di un valore di testo +RIGHTB = DESTRA.B ## Restituisce il carattere più a destra di un valore di testo +SEARCH = RICERCA ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) +SEARCHB = CERCA.B ## Rileva un valore di testo all'interno di un altro (non è sensibile alle maiuscole e minuscole) +SUBSTITUTE = SOSTITUISCI ## Sostituisce il nuovo testo al testo contenuto in una stringa +T = T ## Converte gli argomenti in testo +TEXT = TESTO ## Formatta un numero e lo converte in testo +TRIM = ANNULLA.SPAZI ## Elimina gli spazi dal testo +UPPER = MAIUSC ## Converte il testo in lettere maiuscole +VALUE = VALORE ## Converte un argomento di testo in numero diff --git a/assets/excel/PHPExcel/locale/nl/config b/assets/excel/PHPExcel/locale/nl/config new file mode 100644 index 0000000..48dcc15 --- /dev/null +++ b/assets/excel/PHPExcel/locale/nl/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = € + + +## +## Excel Error Codes (For future use) +## +NULL = #LEEG! +DIV0 = #DEEL/0! +VALUE = #WAARDE! +REF = #VERW! +NAME = #NAAM? +NUM = #GETAL! +NA = #N/B diff --git a/assets/excel/PHPExcel/locale/nl/functions b/assets/excel/PHPExcel/locale/nl/functions new file mode 100644 index 0000000..573600a --- /dev/null +++ b/assets/excel/PHPExcel/locale/nl/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Automatiseringsfuncties en functies in invoegtoepassingen +## +GETPIVOTDATA = DRAAITABEL.OPHALEN ## Geeft gegevens uit een draaitabelrapport als resultaat + + +## +## Cube functions Kubusfuncties +## +CUBEKPIMEMBER = KUBUSKPILID ## Retourneert de naam, eigenschap en waarde van een KPI (prestatie-indicator) en geeft de naam en de eigenschap in de cel weer. Een KPI is een meetbare waarde, zoals de maandelijkse brutowinst of de omzet per kwartaal per werknemer, die wordt gebruikt om de prestaties van een organisatie te bewaken +CUBEMEMBER = KUBUSLID ## Retourneert een lid of tupel in een kubushiërarchie. Wordt gebruikt om te controleren of het lid of de tupel in de kubus aanwezig is +CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP ## Retourneert de waarde van een lideigenschap in de kubus. Wordt gebruikt om te controleren of de lidnaam in de kubus bestaat en retourneert de opgegeven eigenschap voor dit lid +CUBERANKEDMEMBER = KUBUSGERANGCHIKTLID ## Retourneert het zoveelste, gerangschikte lid in een set. Wordt gebruikt om een of meer elementen in een set te retourneren, zoals de tien beste verkopers of de tien beste studenten +CUBESET = KUBUSSET ## Definieert een berekende set leden of tupels door een ingestelde expressie naar de kubus op de server te sturen, alwaar de set wordt gemaakt en vervolgens wordt geretourneerd naar Microsoft Office Excel +CUBESETCOUNT = KUBUSSETAANTAL ## Retourneert het aantal onderdelen in een set +CUBEVALUE = KUBUSWAARDE ## Retourneert een samengestelde waarde van een kubus + + +## +## Database functions Databasefuncties +## +DAVERAGE = DBGEMIDDELDE ## Berekent de gemiddelde waarde in geselecteerde databasegegevens +DCOUNT = DBAANTAL ## Telt de cellen met getallen in een database +DCOUNTA = DBAANTALC ## Telt de niet-lege cellen in een database +DGET = DBLEZEN ## Retourneert één record dat voldoet aan de opgegeven criteria uit een database +DMAX = DBMAX ## Retourneert de maximumwaarde in de geselecteerde databasegegevens +DMIN = DBMIN ## Retourneert de minimumwaarde in de geselecteerde databasegegevens +DPRODUCT = DBPRODUCT ## Vermenigvuldigt de waarden in een bepaald veld van de records die voldoen aan de criteria in een database +DSTDEV = DBSTDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef uit geselecteerde databasegegevens +DSTDEVP = DBSTDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie van geselecteerde databasegegevens +DSUM = DBSOM ## Telt de getallen uit een kolom records in de database op die voldoen aan de criteria +DVAR = DBVAR ## Maakt een schatting van de variantie op basis van een steekproef uit geselecteerde databasegegevens +DVARP = DBVARP ## Berekent de variantie op basis van de volledige populatie van geselecteerde databasegegevens + + +## +## Date and time functions Datum- en tijdfuncties +## +DATE = DATUM ## Geeft als resultaat het seriële getal van een opgegeven datum +DATEVALUE = DATUMWAARDE ## Converteert een datum in de vorm van tekst naar een serieel getal +DAY = DAG ## Converteert een serieel getal naar een dag van de maand +DAYS360 = DAGEN360 ## Berekent het aantal dagen tussen twee datums op basis van een jaar met 360 dagen +EDATE = ZELFDE.DAG ## Geeft als resultaat het seriële getal van een datum die het opgegeven aantal maanden voor of na de begindatum ligt +EOMONTH = LAATSTE.DAG ## Geeft als resultaat het seriële getal van de laatste dag van de maand voor of na het opgegeven aantal maanden +HOUR = UUR ## Converteert een serieel getal naar uren +MINUTE = MINUUT ## Converteert een serieel naar getal minuten +MONTH = MAAND ## Converteert een serieel getal naar een maand +NETWORKDAYS = NETTO.WERKDAGEN ## Geeft als resultaat het aantal hele werkdagen tussen twee datums +NOW = NU ## Geeft als resultaat het seriële getal van de huidige datum en tijd +SECOND = SECONDE ## Converteert een serieel getal naar seconden +TIME = TIJD ## Geeft als resultaat het seriële getal van een bepaald tijdstip +TIMEVALUE = TIJDWAARDE ## Converteert de tijd in de vorm van tekst naar een serieel getal +TODAY = VANDAAG ## Geeft als resultaat het seriële getal van de huidige datum +WEEKDAY = WEEKDAG ## Converteert een serieel getal naar een weekdag +WEEKNUM = WEEKNUMMER ## Converteert een serieel getal naar een weeknummer +WORKDAY = WERKDAG ## Geeft als resultaat het seriële getal van de datum voor of na een bepaald aantal werkdagen +YEAR = JAAR ## Converteert een serieel getal naar een jaar +YEARFRAC = JAAR.DEEL ## Geeft als resultaat het gedeelte van het jaar, uitgedrukt in het aantal hele dagen tussen begindatum en einddatum + + +## +## Engineering functions Technische functies +## +BESSELI = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie In(x) +BESSELJ = BESSEL.J ## Geeft als resultaat de Bessel-functie Jn(x) +BESSELK = BESSEL.K ## Geeft als resultaat de gewijzigde Bessel-functie Kn(x) +BESSELY = BESSEL.Y ## Geeft als resultaat de gewijzigde Bessel-functie Yn(x) +BIN2DEC = BIN.N.DEC ## Converteert een binair getal naar een decimaal getal +BIN2HEX = BIN.N.HEX ## Converteert een binair getal naar een hexadecimaal getal +BIN2OCT = BIN.N.OCT ## Converteert een binair getal naar een octaal getal +COMPLEX = COMPLEX ## Converteert reële en imaginaire coëfficiënten naar een complex getal +CONVERT = CONVERTEREN ## Converteert een getal in de ene maateenheid naar een getal in een andere maateenheid +DEC2BIN = DEC.N.BIN ## Converteert een decimaal getal naar een binair getal +DEC2HEX = DEC.N.HEX ## Converteert een decimaal getal naar een hexadecimaal getal +DEC2OCT = DEC.N.OCT ## Converteert een decimaal getal naar een octaal getal +DELTA = DELTA ## Test of twee waarden gelijk zijn +ERF = FOUTFUNCTIE ## Geeft als resultaat de foutfunctie +ERFC = FOUT.COMPLEMENT ## Geeft als resultaat de complementaire foutfunctie +GESTEP = GROTER.DAN ## Test of een getal groter is dan de drempelwaarde +HEX2BIN = HEX.N.BIN ## Converteert een hexadecimaal getal naar een binair getal +HEX2DEC = HEX.N.DEC ## Converteert een hexadecimaal getal naar een decimaal getal +HEX2OCT = HEX.N.OCT ## Converteert een hexadecimaal getal naar een octaal getal +IMABS = C.ABS ## Geeft als resultaat de absolute waarde (modulus) van een complex getal +IMAGINARY = C.IM.DEEL ## Geeft als resultaat de imaginaire coëfficiënt van een complex getal +IMARGUMENT = C.ARGUMENT ## Geeft als resultaat het argument thèta, een hoek uitgedrukt in radialen +IMCONJUGATE = C.TOEGEVOEGD ## Geeft als resultaat het complexe toegevoegde getal van een complex getal +IMCOS = C.COS ## Geeft als resultaat de cosinus van een complex getal +IMDIV = C.QUOTIENT ## Geeft als resultaat het quotiënt van twee complexe getallen +IMEXP = C.EXP ## Geeft als resultaat de exponent van een complex getal +IMLN = C.LN ## Geeft als resultaat de natuurlijke logaritme van een complex getal +IMLOG10 = C.LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een complex getal +IMLOG2 = C.LOG2 ## Geeft als resultaat de logaritme met grondtal 2 van een complex getal +IMPOWER = C.MACHT ## Geeft als resultaat een complex getal dat is verheven tot de macht van een geheel getal +IMPRODUCT = C.PRODUCT ## Geeft als resultaat het product van complexe getallen +IMREAL = C.REEEL.DEEL ## Geeft als resultaat de reële coëfficiënt van een complex getal +IMSIN = C.SIN ## Geeft als resultaat de sinus van een complex getal +IMSQRT = C.WORTEL ## Geeft als resultaat de vierkantswortel van een complex getal +IMSUB = C.VERSCHIL ## Geeft als resultaat het verschil tussen twee complexe getallen +IMSUM = C.SOM ## Geeft als resultaat de som van complexe getallen +OCT2BIN = OCT.N.BIN ## Converteert een octaal getal naar een binair getal +OCT2DEC = OCT.N.DEC ## Converteert een octaal getal naar een decimaal getal +OCT2HEX = OCT.N.HEX ## Converteert een octaal getal naar een hexadecimaal getal + + +## +## Financial functions Financiële functies +## +ACCRINT = SAMENG.RENTE ## Berekent de opgelopen rente voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +ACCRINTM = SAMENG.RENTE.V ## Berekent de opgelopen rente voor een waardepapier waarvan de rente op de vervaldatum wordt uitgekeerd +AMORDEGRC = AMORDEGRC ## Geeft als resultaat de afschrijving voor elke boekingsperiode door een afschrijvingscoëfficiënt toe te passen +AMORLINC = AMORLINC ## Berekent de afschrijving voor elke boekingsperiode +COUPDAYBS = COUP.DAGEN.BB ## Berekent het aantal dagen vanaf het begin van de coupontermijn tot de stortingsdatum +COUPDAYS = COUP.DAGEN ## Geeft als resultaat het aantal dagen in de coupontermijn waarin de stortingsdatum valt +COUPDAYSNC = COUP.DAGEN.VV ## Geeft als resultaat het aantal dagen vanaf de stortingsdatum tot de volgende couponvervaldatum +COUPNCD = COUP.DATUM.NB ## Geeft als resultaat de volgende coupondatum na de stortingsdatum +COUPNUM = COUP.AANTAL ## Geeft als resultaat het aantal coupons dat nog moet worden uitbetaald tussen de stortingsdatum en de vervaldatum +COUPPCD = COUP.DATUM.VB ## Geeft als resultaat de vorige couponvervaldatum vóór de stortingsdatum +CUMIPMT = CUM.RENTE ## Geeft als resultaat de cumulatieve rente die tussen twee termijnen is uitgekeerd +CUMPRINC = CUM.HOOFDSOM ## Geeft als resultaat de cumulatieve hoofdsom van een lening die tussen twee termijnen is terugbetaald +DB = DB ## Geeft als resultaat de afschrijving van activa voor een bepaalde periode met behulp van de 'fixed declining balance'-methode +DDB = DDB ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'double declining balance'-methode of een andere methode die u opgeeft +DISC = DISCONTO ## Geeft als resultaat het discontopercentage voor een waardepapier +DOLLARDE = EURO.DE ## Converteert een prijs in euro's, uitgedrukt in een breuk, naar een prijs in euro's, uitgedrukt in een decimaal getal +DOLLARFR = EURO.BR ## Converteert een prijs in euro's, uitgedrukt in een decimaal getal, naar een prijs in euro's, uitgedrukt in een breuk +DURATION = DUUR ## Geeft als resultaat de gewogen gemiddelde looptijd voor een waardepapier met periodieke rentebetalingen +EFFECT = EFFECT.RENTE ## Geeft als resultaat het effectieve jaarlijkse rentepercentage +FV = TW ## Geeft als resultaat de toekomstige waarde van een investering +FVSCHEDULE = TOEK.WAARDE2 ## Geeft als resultaat de toekomstige waarde van een bepaalde hoofdsom na het toepassen van een reeks samengestelde rentepercentages +INTRATE = RENTEPERCENTAGE ## Geeft als resultaat het rentepercentage voor een volgestort waardepapier +IPMT = IBET ## Geeft als resultaat de te betalen rente voor een investering over een bepaalde termijn +IRR = IR ## Geeft als resultaat de interne rentabiliteit voor een reeks cashflows +ISPMT = ISBET ## Geeft als resultaat de rente die is betaald tijdens een bepaalde termijn van een investering +MDURATION = AANG.DUUR ## Geeft als resultaat de aangepaste Macauley-looptijd voor een waardepapier, aangenomen dat de nominale waarde € 100 bedraagt +MIRR = GIR ## Geeft als resultaat de interne rentabiliteit voor een serie cashflows, waarbij voor betalingen een ander rentepercentage geldt dan voor inkomsten +NOMINAL = NOMINALE.RENTE ## Geeft als resultaat het nominale jaarlijkse rentepercentage +NPER = NPER ## Geeft als resultaat het aantal termijnen van een investering +NPV = NHW ## Geeft als resultaat de netto huidige waarde van een investering op basis van een reeks periodieke cashflows en een discontopercentage +ODDFPRICE = AFW.ET.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende eerste termijn +ODDFYIELD = AFW.ET.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende eerste termijn +ODDLPRICE = AFW.LT.PRIJS ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier met een afwijkende laatste termijn +ODDLYIELD = AFW.LT.REND ## Geeft als resultaat het rendement voor een waardepapier met een afwijkende laatste termijn +PMT = BET ## Geeft als resultaat de periodieke betaling voor een annuïteit +PPMT = PBET ## Geeft als resultaat de afbetaling op de hoofdsom voor een bepaalde termijn +PRICE = PRIJS.NOM ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +PRICEDISC = PRIJS.DISCONTO ## Geeft als resultaat de prijs per € 100 nominale waarde voor een verdisconteerd waardepapier +PRICEMAT = PRIJS.VERVALDAG ## Geeft als resultaat de prijs per € 100 nominale waarde voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum +PV = HW ## Geeft als resultaat de huidige waarde van een investering +RATE = RENTE ## Geeft als resultaat het periodieke rentepercentage voor een annuïteit +RECEIVED = OPBRENGST ## Geeft als resultaat het bedrag dat op de vervaldatum wordt uitgekeerd voor een volgestort waardepapier +SLN = LIN.AFSCHR ## Geeft als resultaat de lineaire afschrijving van activa over één termijn +SYD = SYD ## Geeft als resultaat de afschrijving van activa over een bepaalde termijn met behulp van de 'Sum-Of-Years-Digits'-methode +TBILLEQ = SCHATK.OBL ## Geeft als resultaat het rendement op schatkistpapier, dat op dezelfde manier wordt berekend als het rendement op obligaties +TBILLPRICE = SCHATK.PRIJS ## Bepaalt de prijs per € 100 nominale waarde voor schatkistpapier +TBILLYIELD = SCHATK.REND ## Berekent het rendement voor schatkistpapier +VDB = VDB ## Geeft als resultaat de afschrijving van activa over een gehele of gedeeltelijke termijn met behulp van de 'declining balance'-methode +XIRR = IR.SCHEMA ## Berekent de interne rentabiliteit voor een betalingsschema van cashflows +XNPV = NHW2 ## Berekent de huidige nettowaarde voor een betalingsschema van cashflows +YIELD = RENDEMENT ## Geeft als resultaat het rendement voor een waardepapier waarvan de rente periodiek wordt uitgekeerd +YIELDDISC = REND.DISCONTO ## Geeft als resultaat het jaarlijkse rendement voor een verdisconteerd waardepapier, bijvoorbeeld schatkistpapier +YIELDMAT = REND.VERVAL ## Geeft als resultaat het jaarlijkse rendement voor een waardepapier waarvan de rente wordt uitgekeerd op de vervaldatum + + +## +## Information functions Informatiefuncties +## +CELL = CEL ## Geeft als resultaat informatie over de opmaak, locatie of inhoud van een cel +ERROR.TYPE = TYPE.FOUT ## Geeft als resultaat een getal dat overeenkomt met een van de foutwaarden van Microsoft Excel +INFO = INFO ## Geeft als resultaat informatie over de huidige besturingsomgeving +ISBLANK = ISLEEG ## Geeft als resultaat WAAR als de waarde leeg is +ISERR = ISFOUT2 ## Geeft als resultaat WAAR als de waarde een foutwaarde is, met uitzondering van #N/B +ISERROR = ISFOUT ## Geeft als resultaat WAAR als de waarde een foutwaarde is +ISEVEN = IS.EVEN ## Geeft als resultaat WAAR als het getal even is +ISLOGICAL = ISLOGISCH ## Geeft als resultaat WAAR als de waarde een logische waarde is +ISNA = ISNB ## Geeft als resultaat WAAR als de waarde de foutwaarde #N/B is +ISNONTEXT = ISGEENTEKST ## Geeft als resultaat WAAR als de waarde geen tekst is +ISNUMBER = ISGETAL ## Geeft als resultaat WAAR als de waarde een getal is +ISODD = IS.ONEVEN ## Geeft als resultaat WAAR als het getal oneven is +ISREF = ISVERWIJZING ## Geeft als resultaat WAAR als de waarde een verwijzing is +ISTEXT = ISTEKST ## Geeft als resultaat WAAR als de waarde tekst is +N = N ## Geeft als resultaat een waarde die is geconverteerd naar een getal +NA = NB ## Geeft als resultaat de foutwaarde #N/B +TYPE = TYPE ## Geeft als resultaat een getal dat het gegevenstype van een waarde aangeeft + + +## +## Logical functions Logische functies +## +AND = EN ## Geeft als resultaat WAAR als alle argumenten WAAR zijn +FALSE = ONWAAR ## Geeft als resultaat de logische waarde ONWAAR +IF = ALS ## Geeft een logische test aan +IFERROR = ALS.FOUT ## Retourneert een waarde die u opgeeft als een formule een fout oplevert, anders wordt het resultaat van de formule geretourneerd +NOT = NIET ## Keert de logische waarde van het argument om +OR = OF ## Geeft als resultaat WAAR als minimaal een van de argumenten WAAR is +TRUE = WAAR ## Geeft als resultaat de logische waarde WAAR + + +## +## Lookup and reference functions Zoek- en verwijzingsfuncties +## +ADDRESS = ADRES ## Geeft als resultaat een verwijzing, in de vorm van tekst, naar één bepaalde cel in een werkblad +AREAS = BEREIKEN ## Geeft als resultaat het aantal bereiken in een verwijzing +CHOOSE = KIEZEN ## Kiest een waarde uit een lijst met waarden +COLUMN = KOLOM ## Geeft als resultaat het kolomnummer van een verwijzing +COLUMNS = KOLOMMEN ## Geeft als resultaat het aantal kolommen in een verwijzing +HLOOKUP = HORIZ.ZOEKEN ## Zoekt in de bovenste rij van een matrix naar een bepaalde waarde en geeft als resultaat de gevonden waarde in de opgegeven cel +HYPERLINK = HYPERLINK ## Maakt een snelkoppeling of een sprong waarmee een document wordt geopend dat is opgeslagen op een netwerkserver, een intranet of op internet +INDEX = INDEX ## Kiest met een index een waarde uit een verwijzing of een matrix +INDIRECT = INDIRECT ## Geeft als resultaat een verwijzing die wordt aangegeven met een tekstwaarde +LOOKUP = ZOEKEN ## Zoekt naar bepaalde waarden in een vector of een matrix +MATCH = VERGELIJKEN ## Zoekt naar bepaalde waarden in een verwijzing of een matrix +OFFSET = VERSCHUIVING ## Geeft als resultaat een nieuwe verwijzing die is verschoven ten opzichte van een bepaalde verwijzing +ROW = RIJ ## Geeft als resultaat het rijnummer van een verwijzing +ROWS = RIJEN ## Geeft als resultaat het aantal rijen in een verwijzing +RTD = RTG ## Haalt realtimegegevens op uit een programma dat COM-automatisering (automatisering: een methode waarmee de ene toepassing objecten van een andere toepassing of ontwikkelprogramma kan besturen. Automatisering werd vroeger OLE-automatisering genoemd. Automatisering is een industrienorm die deel uitmaakt van het Component Object Model (COM).) ondersteunt +TRANSPOSE = TRANSPONEREN ## Geeft als resultaat de getransponeerde van een matrix +VLOOKUP = VERT.ZOEKEN ## Zoekt in de meest linkse kolom van een matrix naar een bepaalde waarde en geeft als resultaat de waarde in de opgegeven cel + + +## +## Math and trigonometry functions Wiskundige en trigonometrische functies +## +ABS = ABS ## Geeft als resultaat de absolute waarde van een getal +ACOS = BOOGCOS ## Geeft als resultaat de boogcosinus van een getal +ACOSH = BOOGCOSH ## Geeft als resultaat de inverse cosinus hyperbolicus van een getal +ASIN = BOOGSIN ## Geeft als resultaat de boogsinus van een getal +ASINH = BOOGSINH ## Geeft als resultaat de inverse sinus hyperbolicus van een getal +ATAN = BOOGTAN ## Geeft als resultaat de boogtangens van een getal +ATAN2 = BOOGTAN2 ## Geeft als resultaat de boogtangens van de x- en y-coördinaten +ATANH = BOOGTANH ## Geeft als resultaat de inverse tangens hyperbolicus van een getal +CEILING = AFRONDEN.BOVEN ## Rondt de absolute waarde van een getal naar boven af op het dichtstbijzijnde gehele getal of het dichtstbijzijnde significante veelvoud +COMBIN = COMBINATIES ## Geeft als resultaat het aantal combinaties voor een bepaald aantal objecten +COS = COS ## Geeft als resultaat de cosinus van een getal +COSH = COSH ## Geeft als resultaat de cosinus hyperbolicus van een getal +DEGREES = GRADEN ## Converteert radialen naar graden +EVEN = EVEN ## Rondt het getal af op het dichtstbijzijnde gehele even getal +EXP = EXP ## Verheft e tot de macht van een bepaald getal +FACT = FACULTEIT ## Geeft als resultaat de faculteit van een getal +FACTDOUBLE = DUBBELE.FACULTEIT ## Geeft als resultaat de dubbele faculteit van een getal +FLOOR = AFRONDEN.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af +GCD = GGD ## Geeft als resultaat de grootste gemene deler +INT = INTEGER ## Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal +LCM = KGV ## Geeft als resultaat het kleinste gemene veelvoud +LN = LN ## Geeft als resultaat de natuurlijke logaritme van een getal +LOG = LOG ## Geeft als resultaat de logaritme met het opgegeven grondtal van een getal +LOG10 = LOG10 ## Geeft als resultaat de logaritme met grondtal 10 van een getal +MDETERM = DETERMINANTMAT ## Geeft als resultaat de determinant van een matrix +MINVERSE = INVERSEMAT ## Geeft als resultaat de inverse van een matrix +MMULT = PRODUCTMAT ## Geeft als resultaat het product van twee matrices +MOD = REST ## Geeft als resultaat het restgetal van een deling +MROUND = AFRONDEN.N.VEELVOUD ## Geeft als resultaat een getal afgerond op het gewenste veelvoud +MULTINOMIAL = MULTINOMIAAL ## Geeft als resultaat de multinomiaalcoëfficiënt van een reeks getallen +ODD = ONEVEN ## Rondt de absolute waarde van het getal naar boven af op het dichtstbijzijnde gehele oneven getal +PI = PI ## Geeft als resultaat de waarde van pi +POWER = MACHT ## Verheft een getal tot een macht +PRODUCT = PRODUCT ## Vermenigvuldigt de argumenten met elkaar +QUOTIENT = QUOTIENT ## Geeft als resultaat de uitkomst van een deling als geheel getal +RADIANS = RADIALEN ## Converteert graden naar radialen +RAND = ASELECT ## Geeft als resultaat een willekeurig getal tussen 0 en 1 +RANDBETWEEN = ASELECTTUSSEN ## Geeft een willekeurig getal tussen de getallen die u hebt opgegeven +ROMAN = ROMEINS ## Converteert een Arabisch getal naar een Romeins getal en geeft het resultaat weer in de vorm van tekst +ROUND = AFRONDEN ## Rondt een getal af op het opgegeven aantal decimalen +ROUNDDOWN = AFRONDEN.NAAR.BENEDEN ## Rondt de absolute waarde van een getal naar beneden af +ROUNDUP = AFRONDEN.NAAR.BOVEN ## Rondt de absolute waarde van een getal naar boven af +SERIESSUM = SOM.MACHTREEKS ## Geeft als resultaat de som van een machtreeks die is gebaseerd op de formule +SIGN = POS.NEG ## Geeft als resultaat het teken van een getal +SIN = SIN ## Geeft als resultaat de sinus van de opgegeven hoek +SINH = SINH ## Geeft als resultaat de sinus hyperbolicus van een getal +SQRT = WORTEL ## Geeft als resultaat de positieve vierkantswortel van een getal +SQRTPI = WORTEL.PI ## Geeft als resultaat de vierkantswortel van (getal * pi) +SUBTOTAL = SUBTOTAAL ## Geeft als resultaat een subtotaal voor een bereik +SUM = SOM ## Telt de argumenten op +SUMIF = SOM.ALS ## Telt de getallen bij elkaar op die voldoen aan een bepaald criterium +SUMIFS = SOMMEN.ALS ## Telt de cellen in een bereik op die aan meerdere criteria voldoen +SUMPRODUCT = SOMPRODUCT ## Geeft als resultaat de som van de producten van de corresponderende matrixelementen +SUMSQ = KWADRATENSOM ## Geeft als resultaat de som van de kwadraten van de argumenten +SUMX2MY2 = SOM.X2MINY2 ## Geeft als resultaat de som van het verschil tussen de kwadraten van corresponderende waarden in twee matrices +SUMX2PY2 = SOM.X2PLUSY2 ## Geeft als resultaat de som van de kwadratensom van corresponderende waarden in twee matrices +SUMXMY2 = SOM.XMINY.2 ## Geeft als resultaat de som van de kwadraten van de verschillen tussen de corresponderende waarden in twee matrices +TAN = TAN ## Geeft als resultaat de tangens van een getal +TANH = TANH ## Geeft als resultaat de tangens hyperbolicus van een getal +TRUNC = GEHEEL ## Kapt een getal af tot een geheel getal + + +## +## Statistical functions Statistische functies +## +AVEDEV = GEM.DEVIATIE ## Geeft als resultaat het gemiddelde van de absolute deviaties van gegevenspunten ten opzichte van hun gemiddelde waarde +AVERAGE = GEMIDDELDE ## Geeft als resultaat het gemiddelde van de argumenten +AVERAGEA = GEMIDDELDEA ## Geeft als resultaat het gemiddelde van de argumenten, inclusief getallen, tekst en logische waarden +AVERAGEIF = GEMIDDELDE.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen in een bereik die voldoen aan de opgegeven criteria +AVERAGEIFS = GEMIDDELDEN.ALS ## Geeft het gemiddelde (rekenkundig gemiddelde) als resultaat van alle cellen die aan meerdere criteria voldoen +BETADIST = BETA.VERD ## Geeft als resultaat de cumulatieve bèta-verdelingsfunctie +BETAINV = BETA.INV ## Geeft als resultaat de inverse van de cumulatieve verdelingsfunctie voor een gegeven bèta-verdeling +BINOMDIST = BINOMIALE.VERD ## Geeft als resultaat de binomiale verdeling +CHIDIST = CHI.KWADRAAT ## Geeft als resultaat de eenzijdige kans van de chi-kwadraatverdeling +CHIINV = CHI.KWADRAAT.INV ## Geeft als resultaat de inverse van een eenzijdige kans van de chi-kwadraatverdeling +CHITEST = CHI.TOETS ## Geeft als resultaat de onafhankelijkheidstoets +CONFIDENCE = BETROUWBAARHEID ## Geeft als resultaat het betrouwbaarheidsinterval van een gemiddelde waarde voor de elementen van een populatie +CORREL = CORRELATIE ## Geeft als resultaat de correlatiecoëfficiënt van twee gegevensverzamelingen +COUNT = AANTAL ## Telt het aantal getallen in de argumentenlijst +COUNTA = AANTALARG ## Telt het aantal waarden in de argumentenlijst +COUNTBLANK = AANTAL.LEGE.CELLEN ## Telt het aantal lege cellen in een bereik +COUNTIF = AANTAL.ALS ## Telt in een bereik het aantal cellen die voldoen aan een bepaald criterium +COUNTIFS = AANTALLEN.ALS ## Telt in een bereik het aantal cellen die voldoen aan meerdere criteria +COVAR = COVARIANTIE ## Geeft als resultaat de covariantie, het gemiddelde van de producten van de gepaarde deviaties +CRITBINOM = CRIT.BINOM ## Geeft als resultaat de kleinste waarde waarvoor de binomiale verdeling kleiner is dan of gelijk is aan het criterium +DEVSQ = DEV.KWAD ## Geeft als resultaat de som van de deviaties in het kwadraat +EXPONDIST = EXPON.VERD ## Geeft als resultaat de exponentiële verdeling +FDIST = F.VERDELING ## Geeft als resultaat de F-verdeling +FINV = F.INVERSE ## Geeft als resultaat de inverse van de F-verdeling +FISHER = FISHER ## Geeft als resultaat de Fisher-transformatie +FISHERINV = FISHER.INV ## Geeft als resultaat de inverse van de Fisher-transformatie +FORECAST = VOORSPELLEN ## Geeft als resultaat een waarde op basis van een lineaire trend +FREQUENCY = FREQUENTIE ## Geeft als resultaat een frequentieverdeling in de vorm van een verticale matrix +FTEST = F.TOETS ## Geeft als resultaat een F-toets +GAMMADIST = GAMMA.VERD ## Geeft als resultaat de gamma-verdeling +GAMMAINV = GAMMA.INV ## Geeft als resultaat de inverse van de cumulatieve gamma-verdeling +GAMMALN = GAMMA.LN ## Geeft als resultaat de natuurlijke logaritme van de gamma-functie, G(x) +GEOMEAN = MEETK.GEM ## Geeft als resultaat het meetkundige gemiddelde +GROWTH = GROEI ## Geeft als resultaat de waarden voor een exponentiële trend +HARMEAN = HARM.GEM ## Geeft als resultaat het harmonische gemiddelde +HYPGEOMDIST = HYPERGEO.VERD ## Geeft als resultaat de hypergeometrische verdeling +INTERCEPT = SNIJPUNT ## Geeft als resultaat het snijpunt van de lineaire regressielijn met de y-as +KURT = KURTOSIS ## Geeft als resultaat de kurtosis van een gegevensverzameling +LARGE = GROOTSTE ## Geeft als resultaat de op k-1 na grootste waarde in een gegevensverzameling +LINEST = LIJNSCH ## Geeft als resultaat de parameters van een lineaire trend +LOGEST = LOGSCH ## Geeft als resultaat de parameters van een exponentiële trend +LOGINV = LOG.NORM.INV ## Geeft als resultaat de inverse van de logaritmische normale verdeling +LOGNORMDIST = LOG.NORM.VERD ## Geeft als resultaat de cumulatieve logaritmische normale verdeling +MAX = MAX ## Geeft als resultaat de maximumwaarde in een lijst met argumenten +MAXA = MAXA ## Geeft als resultaat de maximumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden +MEDIAN = MEDIAAN ## Geeft als resultaat de mediaan van de opgegeven getallen +MIN = MIN ## Geeft als resultaat de minimumwaarde in een lijst met argumenten +MINA = MINA ## Geeft als resultaat de minimumwaarde in een lijst met argumenten, inclusief getallen, tekst en logische waarden +MODE = MODUS ## Geeft als resultaat de meest voorkomende waarde in een gegevensverzameling +NEGBINOMDIST = NEG.BINOM.VERD ## Geeft als resultaat de negatieve binomiaalverdeling +NORMDIST = NORM.VERD ## Geeft als resultaat de cumulatieve normale verdeling +NORMINV = NORM.INV ## Geeft als resultaat de inverse van de cumulatieve standaardnormale verdeling +NORMSDIST = STAND.NORM.VERD ## Geeft als resultaat de cumulatieve standaardnormale verdeling +NORMSINV = STAND.NORM.INV ## Geeft als resultaat de inverse van de cumulatieve normale verdeling +PEARSON = PEARSON ## Geeft als resultaat de correlatiecoëfficiënt van Pearson +PERCENTILE = PERCENTIEL ## Geeft als resultaat het k-de percentiel van waarden in een bereik +PERCENTRANK = PERCENT.RANG ## Geeft als resultaat de positie, in procenten uitgedrukt, van een waarde in de rangorde van een gegevensverzameling +PERMUT = PERMUTATIES ## Geeft als resultaat het aantal permutaties voor een gegeven aantal objecten +POISSON = POISSON ## Geeft als resultaat de Poisson-verdeling +PROB = KANS ## Geeft als resultaat de kans dat waarden zich tussen twee grenzen bevinden +QUARTILE = KWARTIEL ## Geeft als resultaat het kwartiel van een gegevensverzameling +RANK = RANG ## Geeft als resultaat het rangnummer van een getal in een lijst getallen +RSQ = R.KWADRAAT ## Geeft als resultaat het kwadraat van de Pearson-correlatiecoëfficiënt +SKEW = SCHEEFHEID ## Geeft als resultaat de mate van asymmetrie van een verdeling +SLOPE = RICHTING ## Geeft als resultaat de richtingscoëfficiënt van een lineaire regressielijn +SMALL = KLEINSTE ## Geeft als resultaat de op k-1 na kleinste waarde in een gegevensverzameling +STANDARDIZE = NORMALISEREN ## Geeft als resultaat een genormaliseerde waarde +STDEV = STDEV ## Maakt een schatting van de standaarddeviatie op basis van een steekproef +STDEVA = STDEVA ## Maakt een schatting van de standaarddeviatie op basis van een steekproef, inclusief getallen, tekst en logische waarden +STDEVP = STDEVP ## Berekent de standaarddeviatie op basis van de volledige populatie +STDEVPA = STDEVPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden +STEYX = STAND.FOUT.YX ## Geeft als resultaat de standaardfout in de voorspelde y-waarde voor elke x in een regressie +TDIST = T.VERD ## Geeft als resultaat de Student T-verdeling +TINV = T.INV ## Geeft als resultaat de inverse van de Student T-verdeling +TREND = TREND ## Geeft als resultaat de waarden voor een lineaire trend +TRIMMEAN = GETRIMD.GEM ## Geeft als resultaat het gemiddelde van waarden in een gegevensverzameling +TTEST = T.TOETS ## Geeft als resultaat de kans met behulp van de Student T-toets +VAR = VAR ## Maakt een schatting van de variantie op basis van een steekproef +VARA = VARA ## Maakt een schatting van de variantie op basis van een steekproef, inclusief getallen, tekst en logische waarden +VARP = VARP ## Berekent de variantie op basis van de volledige populatie +VARPA = VARPA ## Berekent de standaarddeviatie op basis van de volledige populatie, inclusief getallen, tekst en logische waarden +WEIBULL = WEIBULL ## Geeft als resultaat de Weibull-verdeling +ZTEST = Z.TOETS ## Geeft als resultaat de eenzijdige kanswaarde van een Z-toets + + +## +## Text functions Tekstfuncties +## +ASC = ASC ## Wijzigt Nederlandse letters of katakanatekens over de volle breedte (dubbel-bytetekens) binnen een tekenreeks in tekens over de halve breedte (enkel-bytetekens) +BAHTTEXT = BAHT.TEKST ## Converteert een getal naar tekst met de valutanotatie ß (baht) +CHAR = TEKEN ## Geeft als resultaat het teken dat hoort bij de opgegeven code +CLEAN = WISSEN.CONTROL ## Verwijdert alle niet-afdrukbare tekens uit een tekst +CODE = CODE ## Geeft als resultaat de numerieke code voor het eerste teken in een tekenreeks +CONCATENATE = TEKST.SAMENVOEGEN ## Voegt verschillende tekstfragmenten samen tot één tekstfragment +DOLLAR = EURO ## Converteert een getal naar tekst met de valutanotatie € (euro) +EXACT = GELIJK ## Controleert of twee tekenreeksen identiek zijn +FIND = VIND.ALLES ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +FINDB = VIND.ALLES.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +FIXED = VAST ## Maakt een getal als tekst met een vast aantal decimalen op +JIS = JIS ## Wijzigt Nederlandse letters of katakanatekens over de halve breedte (enkel-bytetekens) binnen een tekenreeks in tekens over de volle breedte (dubbel-bytetekens) +LEFT = LINKS ## Geeft als resultaat de meest linkse tekens in een tekenreeks +LEFTB = LINKSB ## Geeft als resultaat de meest linkse tekens in een tekenreeks +LEN = LENGTE ## Geeft als resultaat het aantal tekens in een tekenreeks +LENB = LENGTEB ## Geeft als resultaat het aantal tekens in een tekenreeks +LOWER = KLEINE.LETTERS ## Zet tekst om in kleine letters +MID = MIDDEN ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft +MIDB = DEELB ## Geeft als resultaat een bepaald aantal tekens van een tekenreeks vanaf de positie die u opgeeft +PHONETIC = FONETISCH ## Haalt de fonetische tekens (furigana) uit een tekenreeks op +PROPER = BEGINLETTERS ## Zet de eerste letter van elk woord in een tekst om in een hoofdletter +REPLACE = VERVANG ## Vervangt tekens binnen een tekst +REPLACEB = VERVANGENB ## Vervangt tekens binnen een tekst +REPT = HERHALING ## Herhaalt een tekst een aantal malen +RIGHT = RECHTS ## Geeft als resultaat de meest rechtse tekens in een tekenreeks +RIGHTB = RECHTSB ## Geeft als resultaat de meest rechtse tekens in een tekenreeks +SEARCH = VIND.SPEC ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +SEARCHB = VIND.SPEC.B ## Zoekt een bepaalde tekenreeks in een tekst (waarbij geen onderscheid wordt gemaakt tussen hoofdletters en kleine letters) +SUBSTITUTE = SUBSTITUEREN ## Vervangt oude tekst door nieuwe tekst in een tekenreeks +T = T ## Converteert de argumenten naar tekst +TEXT = TEKST ## Maakt een getal op en converteert het getal naar tekst +TRIM = SPATIES.WISSEN ## Verwijdert de spaties uit een tekst +UPPER = HOOFDLETTERS ## Zet tekst om in hoofdletters +VALUE = WAARDE ## Converteert tekst naar een getal diff --git a/assets/excel/PHPExcel/locale/no/config b/assets/excel/PHPExcel/locale/no/config new file mode 100644 index 0000000..bf2d34a --- /dev/null +++ b/assets/excel/PHPExcel/locale/no/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = kr + + +## +## Excel Error Codes (For future use) +## +NULL = #NULL! +DIV0 = #DIV/0! +VALUE = #VERDI! +REF = #REF! +NAME = #NAVN? +NUM = #NUM! +NA = #I/T diff --git a/assets/excel/PHPExcel/locale/no/functions b/assets/excel/PHPExcel/locale/no/functions new file mode 100644 index 0000000..10d0a20 --- /dev/null +++ b/assets/excel/PHPExcel/locale/no/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funksjonene Tillegg og Automatisering +## +GETPIVOTDATA = HENTPIVOTDATA ## Returnerer data som er lagret i en pivottabellrapport + + +## +## Cube functions Kubefunksjoner +## +CUBEKPIMEMBER = KUBEKPIMEDLEM ## Returnerer navnet, egenskapen og målet for en viktig ytelsesindikator (KPI), og viser navnet og egenskapen i cellen. En KPI er en målbar enhet, for eksempel månedlig bruttoinntjening eller kvartalsvis inntjening per ansatt, og brukes til å overvåke ytelsen i en organisasjon. +CUBEMEMBER = KUBEMEDLEM ## Returnerer et medlem eller en tuppel i et kubehierarki. Brukes til å validere at medlemmet eller tuppelen finnes i kuben. +CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP ## Returnerer verdien til en medlemsegenskap i kuben. Brukes til å validere at et medlemsnavn finnes i kuben, og til å returnere den angitte egenskapen for dette medlemmet. +CUBERANKEDMEMBER = KUBERANGERTMEDLEM ## Returnerer det n-te, eller rangerte, medlemmet i et sett. Brukes til å returnere ett eller flere elementer i et sett, for eksempel de 10 beste studentene. +CUBESET = KUBESETT ## Definerer et beregnet sett av medlemmer eller tuppeler ved å sende et settuttrykk til kuben på serveren, noe som oppretter settet og deretter returnerer dette settet til Microsoft Office Excel. +CUBESETCOUNT = KUBESETTANTALL ## Returnerer antallet elementer i et sett. +CUBEVALUE = KUBEVERDI ## Returnerer en aggregert verdi fra en kube. + + +## +## Database functions Databasefunksjoner +## +DAVERAGE = DGJENNOMSNITT ## Returnerer gjennomsnittet av merkede databaseposter +DCOUNT = DANTALL ## Teller celler som inneholder tall i en database +DCOUNTA = DANTALLA ## Teller celler som ikke er tomme i en database +DGET = DHENT ## Trekker ut fra en database en post som oppfyller angitte vilkår +DMAX = DMAKS ## Returnerer maksimumsverdien fra merkede databaseposter +DMIN = DMIN ## Returnerer minimumsverdien fra merkede databaseposter +DPRODUCT = DPRODUKT ## Multipliserer verdiene i et bestemt felt med poster som oppfyller vilkårene i en database +DSTDEV = DSTDAV ## Estimerer standardavviket basert på et utvalg av merkede databaseposter +DSTDEVP = DSTAVP ## Beregner standardavviket basert på at merkede databaseposter utgjør hele populasjonen +DSUM = DSUMMER ## Legger til tallene i feltkolonnen med poster, i databasen som oppfyller vilkårene +DVAR = DVARIANS ## Estimerer variansen basert på et utvalg av merkede databaseposter +DVARP = DVARIANSP ## Beregner variansen basert på at merkede databaseposter utgjør hele populasjonen + + +## +## Date and time functions Dato- og tidsfunksjoner +## +DATE = DATO ## Returnerer serienummeret som svarer til en bestemt dato +DATEVALUE = DATOVERDI ## Konverterer en dato med tekstformat til et serienummer +DAY = DAG ## Konverterer et serienummer til en dag i måneden +DAYS360 = DAGER360 ## Beregner antall dager mellom to datoer basert på et år med 360 dager +EDATE = DAG.ETTER ## Returnerer serienummeret som svarer til datoen som er det indikerte antall måneder før eller etter startdatoen +EOMONTH = MÅNEDSSLUTT ## Returnerer serienummeret som svarer til siste dag i måneden, før eller etter et angitt antall måneder +HOUR = TIME ## Konverterer et serienummer til en time +MINUTE = MINUTT ## Konverterer et serienummer til et minutt +MONTH = MÅNED ## Konverterer et serienummer til en måned +NETWORKDAYS = NETT.ARBEIDSDAGER ## Returnerer antall hele arbeidsdager mellom to datoer +NOW = NÅ ## Returnerer serienummeret som svarer til gjeldende dato og klokkeslett +SECOND = SEKUND ## Konverterer et serienummer til et sekund +TIME = TID ## Returnerer serienummeret som svarer til et bestemt klokkeslett +TIMEVALUE = TIDSVERDI ## Konverterer et klokkeslett i tekstformat til et serienummer +TODAY = IDAG ## Returnerer serienummeret som svarer til dagens dato +WEEKDAY = UKEDAG ## Konverterer et serienummer til en ukedag +WEEKNUM = UKENR ## Konverterer et serienummer til et tall som representerer hvilket nummer uken har i et år +WORKDAY = ARBEIDSDAG ## Returnerer serienummeret som svarer til datoen før eller etter et angitt antall arbeidsdager +YEAR = ÅR ## Konverterer et serienummer til et år +YEARFRAC = ÅRDEL ## Returnerer brøkdelen for året, som svarer til antall hele dager mellom startdato og sluttdato + + +## +## Engineering functions Tekniske funksjoner +## +BESSELI = BESSELI ## Returnerer den endrede Bessel-funksjonen In(x) +BESSELJ = BESSELJ ## Returnerer Bessel-funksjonen Jn(x) +BESSELK = BESSELK ## Returnerer den endrede Bessel-funksjonen Kn(x) +BESSELY = BESSELY ## Returnerer Bessel-funksjonen Yn(x) +BIN2DEC = BINTILDES ## Konverterer et binært tall til et desimaltall +BIN2HEX = BINTILHEKS ## Konverterer et binært tall til et heksadesimaltall +BIN2OCT = BINTILOKT ## Konverterer et binært tall til et oktaltall +COMPLEX = KOMPLEKS ## Konverterer reelle og imaginære koeffisienter til et komplekst tall +CONVERT = KONVERTER ## Konverterer et tall fra ett målsystem til et annet +DEC2BIN = DESTILBIN ## Konverterer et desimaltall til et binærtall +DEC2HEX = DESTILHEKS ## Konverterer et heltall i 10-tallsystemet til et heksadesimalt tall +DEC2OCT = DESTILOKT ## Konverterer et heltall i 10-tallsystemet til et oktaltall +DELTA = DELTA ## Undersøker om to verdier er like +ERF = FEILF ## Returnerer feilfunksjonen +ERFC = FEILFK ## Returnerer den komplementære feilfunksjonen +GESTEP = GRENSEVERDI ## Tester om et tall er større enn en terskelverdi +HEX2BIN = HEKSTILBIN ## Konverterer et heksadesimaltall til et binært tall +HEX2DEC = HEKSTILDES ## Konverterer et heksadesimalt tall til et heltall i 10-tallsystemet +HEX2OCT = HEKSTILOKT ## Konverterer et heksadesimalt tall til et oktaltall +IMABS = IMABS ## Returnerer absoluttverdien (koeffisienten) til et komplekst tall +IMAGINARY = IMAGINÆR ## Returnerer den imaginære koeffisienten til et komplekst tall +IMARGUMENT = IMARGUMENT ## Returnerer argumentet theta, som er en vinkel uttrykt i radianer +IMCONJUGATE = IMKONJUGERT ## Returnerer den komplekse konjugaten til et komplekst tall +IMCOS = IMCOS ## Returnerer cosinus til et komplekst tall +IMDIV = IMDIV ## Returnerer kvotienten til to komplekse tall +IMEXP = IMEKSP ## Returnerer eksponenten til et komplekst tall +IMLN = IMLN ## Returnerer den naturlige logaritmen for et komplekst tall +IMLOG10 = IMLOG10 ## Returnerer logaritmen med grunntall 10 for et komplekst tall +IMLOG2 = IMLOG2 ## Returnerer logaritmen med grunntall 2 for et komplekst tall +IMPOWER = IMOPPHØY ## Returnerer et komplekst tall opphøyd til en heltallspotens +IMPRODUCT = IMPRODUKT ## Returnerer produktet av komplekse tall +IMREAL = IMREELL ## Returnerer den reelle koeffisienten til et komplekst tall +IMSIN = IMSIN ## Returnerer sinus til et komplekst tall +IMSQRT = IMROT ## Returnerer kvadratroten av et komplekst tall +IMSUB = IMSUB ## Returnerer differansen mellom to komplekse tall +IMSUM = IMSUMMER ## Returnerer summen av komplekse tall +OCT2BIN = OKTTILBIN ## Konverterer et oktaltall til et binært tall +OCT2DEC = OKTTILDES ## Konverterer et oktaltall til et desimaltall +OCT2HEX = OKTTILHEKS ## Konverterer et oktaltall til et heksadesimaltall + + +## +## Financial functions Økonomiske funksjoner +## +ACCRINT = PÅLØPT.PERIODISK.RENTE ## Returnerer påløpte renter for et verdipapir som betaler periodisk rente +ACCRINTM = PÅLØPT.FORFALLSRENTE ## Returnerer den påløpte renten for et verdipapir som betaler rente ved forfall +AMORDEGRC = AMORDEGRC ## Returnerer avskrivningen for hver regnskapsperiode ved hjelp av en avskrivingskoeffisient +AMORLINC = AMORLINC ## Returnerer avskrivingen for hver regnskapsperiode +COUPDAYBS = OBLIG.DAGER.FF ## Returnerer antall dager fra begynnelsen av den rentebærende perioden til innløsningsdatoen +COUPDAYS = OBLIG.DAGER ## Returnerer antall dager i den rentebærende perioden som inneholder innløsningsdatoen +COUPDAYSNC = OBLIG.DAGER.NF ## Returnerer antall dager fra betalingsdato til neste renteinnbetalingsdato +COUPNCD = OBLIG.DAGER.EF ## Returnerer obligasjonsdatoen som kommer etter oppgjørsdatoen +COUPNUM = OBLIG.ANTALL ## Returnerer antall obligasjoner som skal betales mellom oppgjørsdatoen og forfallsdatoen +COUPPCD = OBLIG.DAG.FORRIGE ## Returnerer obligasjonsdatoen som kommer før oppgjørsdatoen +CUMIPMT = SAMLET.RENTE ## Returnerer den kumulative renten som er betalt mellom to perioder +CUMPRINC = SAMLET.HOVEDSTOL ## Returnerer den kumulative hovedstolen som er betalt for et lån mellom to perioder +DB = DAVSKR ## Returnerer avskrivningen for et aktivum i en angitt periode, foretatt med fast degressiv avskrivning +DDB = DEGRAVS ## Returnerer avskrivningen for et aktivum for en gitt periode, ved hjelp av dobbel degressiv avskrivning eller en metode som du selv angir +DISC = DISKONTERT ## Returnerer diskonteringsraten for et verdipapir +DOLLARDE = DOLLARDE ## Konverterer en valutapris uttrykt som en brøk, til en valutapris uttrykt som et desimaltall +DOLLARFR = DOLLARBR ## Konverterer en valutapris uttrykt som et desimaltall, til en valutapris uttrykt som en brøk +DURATION = VARIGHET ## Returnerer årlig varighet for et verdipapir med renter som betales periodisk +EFFECT = EFFEKTIV.RENTE ## Returnerer den effektive årlige rentesatsen +FV = SLUTTVERDI ## Returnerer fremtidig verdi for en investering +FVSCHEDULE = SVPLAN ## Returnerer den fremtidige verdien av en inngående hovedstol etter å ha anvendt en serie med sammensatte rentesatser +INTRATE = RENTESATS ## Returnerer rentefoten av et fullfinansiert verdipapir +IPMT = RAVDRAG ## Returnerer betalte renter på en investering for en gitt periode +IRR = IR ## Returnerer internrenten for en serie kontantstrømmer +ISPMT = ER.AVDRAG ## Beregner renten som er betalt for en investering i løpet av en bestemt periode +MDURATION = MVARIGHET ## Returnerer Macauleys modifiserte varighet for et verdipapir med en antatt pålydende verdi på kr 100,00 +MIRR = MODIR ## Returnerer internrenten der positive og negative kontantstrømmer finansieres med forskjellige satser +NOMINAL = NOMINELL ## Returnerer årlig nominell rentesats +NPER = PERIODER ## Returnerer antall perioder for en investering +NPV = NNV ## Returnerer netto nåverdi for en investering, basert på en serie periodiske kontantstrømmer og en rentesats +ODDFPRICE = AVVIKFP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde første periode +ODDFYIELD = AVVIKFP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde første periode +ODDLPRICE = AVVIKSP.PRIS ## Returnerer pris pålydende kr 100 for et verdipapir med en odde siste periode +ODDLYIELD = AVVIKSP.AVKASTNING ## Returnerer avkastingen for et verdipapir med en odde siste periode +PMT = AVDRAG ## Returnerer periodisk betaling for en annuitet +PPMT = AMORT ## Returnerer betalingen på hovedstolen for en investering i en gitt periode +PRICE = PRIS ## Returnerer prisen per pålydende kr 100 for et verdipapir som gir periodisk avkastning +PRICEDISC = PRIS.DISKONTERT ## Returnerer prisen per pålydende kr 100 for et diskontert verdipapir +PRICEMAT = PRIS.FORFALL ## Returnerer prisen per pålydende kr 100 av et verdipapir som betaler rente ved forfall +PV = NÅVERDI ## Returnerer nåverdien av en investering +RATE = RENTE ## Returnerer rentesatsen per periode for en annuitet +RECEIVED = MOTTATT.AVKAST ## Returnerer summen som mottas ved forfallsdato for et fullinvestert verdipapir +SLN = LINAVS ## Returnerer den lineære avskrivningen for et aktivum i én periode +SYD = ÅRSAVS ## Returnerer årsavskrivningen for et aktivum i en angitt periode +TBILLEQ = TBILLEKV ## Returnerer den obligasjonsekvivalente avkastningen for en statsobligasjon +TBILLPRICE = TBILLPRIS ## Returnerer prisen per pålydende kr 100 for en statsobligasjon +TBILLYIELD = TBILLAVKASTNING ## Returnerer avkastningen til en statsobligasjon +VDB = VERDIAVS ## Returnerer avskrivningen for et aktivum i en angitt periode eller delperiode, ved hjelp av degressiv avskrivning +XIRR = XIR ## Returnerer internrenten for en serie kontantstrømmer som ikke nødvendigvis er periodiske +XNPV = XNNV ## Returnerer netto nåverdi for en serie kontantstrømmer som ikke nødvendigvis er periodiske +YIELD = AVKAST ## Returnerer avkastningen på et verdipapir som betaler periodisk rente +YIELDDISC = AVKAST.DISKONTERT ## Returnerer årlig avkastning for et diskontert verdipapir, for eksempel en statskasseveksel +YIELDMAT = AVKAST.FORFALL ## Returnerer den årlige avkastningen for et verdipapir som betaler rente ved forfallsdato + + +## +## Information functions Informasjonsfunksjoner +## +CELL = CELLE ## Returnerer informasjon om formatering, plassering eller innholdet til en celle +ERROR.TYPE = FEIL.TYPE ## Returnerer et tall som svarer til en feiltype +INFO = INFO ## Returnerer informasjon om gjeldende operativmiljø +ISBLANK = ERTOM ## Returnerer SANN hvis verdien er tom +ISERR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst annen feilverdi enn #I/T +ISERROR = ERFEIL ## Returnerer SANN hvis verdien er en hvilken som helst feilverdi +ISEVEN = ERPARTALL ## Returnerer SANN hvis tallet er et partall +ISLOGICAL = ERLOGISK ## Returnerer SANN hvis verdien er en logisk verdi +ISNA = ERIT ## Returnerer SANN hvis verdien er feilverdien #I/T +ISNONTEXT = ERIKKETEKST ## Returnerer SANN hvis verdien ikke er tekst +ISNUMBER = ERTALL ## Returnerer SANN hvis verdien er et tall +ISODD = ERODDETALL ## Returnerer SANN hvis tallet er et oddetall +ISREF = ERREF ## Returnerer SANN hvis verdien er en referanse +ISTEXT = ERTEKST ## Returnerer SANN hvis verdien er tekst +N = N ## Returnerer en verdi som er konvertert til et tall +NA = IT ## Returnerer feilverdien #I/T +TYPE = VERDITYPE ## Returnerer et tall som indikerer datatypen til en verdi + + +## +## Logical functions Logiske funksjoner +## +AND = OG ## Returnerer SANN hvis alle argumentene er lik SANN +FALSE = USANN ## Returnerer den logiske verdien USANN +IF = HVIS ## Angir en logisk test som skal utføres +IFERROR = HVISFEIL ## Returnerer en verdi du angir hvis en formel evaluerer til en feil. Ellers returnerer den resultatet av formelen. +NOT = IKKE ## Reverserer logikken til argumentet +OR = ELLER ## Returnerer SANN hvis ett eller flere argumenter er lik SANN +TRUE = SANN ## Returnerer den logiske verdien SANN + + +## +## Lookup and reference functions Oppslag- og referansefunksjoner +## +ADDRESS = ADRESSE ## Returnerer en referanse som tekst til en enkelt celle i et regneark +AREAS = OMRÅDER ## Returnerer antall områder i en referanse +CHOOSE = VELG ## Velger en verdi fra en liste med verdier +COLUMN = KOLONNE ## Returnerer kolonnenummeret for en referanse +COLUMNS = KOLONNER ## Returnerer antall kolonner i en referanse +HLOOKUP = FINN.KOLONNE ## Leter i den øverste raden i en matrise og returnerer verdien for den angitte cellen +HYPERLINK = HYPERKOBLING ## Oppretter en snarvei eller et hopp som åpner et dokument som er lagret på en nettverksserver, et intranett eller Internett +INDEX = INDEKS ## Bruker en indeks til å velge en verdi fra en referanse eller matrise +INDIRECT = INDIREKTE ## Returnerer en referanse angitt av en tekstverdi +LOOKUP = SLÅ.OPP ## Slår opp verdier i en vektor eller matrise +MATCH = SAMMENLIGNE ## Slår opp verdier i en referanse eller matrise +OFFSET = FORSKYVNING ## Returnerer en referanseforskyvning fra en gitt referanse +ROW = RAD ## Returnerer radnummeret for en referanse +ROWS = RADER ## Returnerer antall rader i en referanse +RTD = RTD ## Henter sanntidsdata fra et program som støtter COM-automatisering (automatisering: En måte å arbeide på med programobjekter fra et annet program- eller utviklingsverktøy. Tidligere kalt OLE-automatisering. Automatisering er en bransjestandard og en funksjon i Component Object Model (COM).) +TRANSPOSE = TRANSPONER ## Returnerer transponeringen av en matrise +VLOOKUP = FINN.RAD ## Leter i den første kolonnen i en matrise og flytter bortover raden for å returnere verdien til en celle + + +## +## Math and trigonometry functions Matematikk- og trigonometrifunksjoner +## +ABS = ABS ## Returnerer absoluttverdien til et tall +ACOS = ARCCOS ## Returnerer arcus cosinus til et tall +ACOSH = ARCCOSH ## Returnerer den inverse hyperbolske cosinus til et tall +ASIN = ARCSIN ## Returnerer arcus sinus til et tall +ASINH = ARCSINH ## Returnerer den inverse hyperbolske sinus til et tall +ATAN = ARCTAN ## Returnerer arcus tangens til et tall +ATAN2 = ARCTAN2 ## Returnerer arcus tangens fra x- og y-koordinater +ATANH = ARCTANH ## Returnerer den inverse hyperbolske tangens til et tall +CEILING = AVRUND.GJELDENDE.MULTIPLUM ## Runder av et tall til nærmeste heltall eller til nærmeste signifikante multiplum +COMBIN = KOMBINASJON ## Returnerer antall kombinasjoner for ett gitt antall objekter +COS = COS ## Returnerer cosinus til et tall +COSH = COSH ## Returnerer den hyperbolske cosinus til et tall +DEGREES = GRADER ## Konverterer radianer til grader +EVEN = AVRUND.TIL.PARTALL ## Runder av et tall oppover til nærmeste heltall som er et partall +EXP = EKSP ## Returnerer e opphøyd i en angitt potens +FACT = FAKULTET ## Returnerer fakultet til et tall +FACTDOUBLE = DOBBELFAKT ## Returnerer et talls doble fakultet +FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED ## Avrunder et tall nedover, mot null +GCD = SFF ## Returnerer høyeste felles divisor +INT = HELTALL ## Avrunder et tall nedover til nærmeste heltall +LCM = MFM ## Returnerer minste felles multiplum +LN = LN ## Returnerer den naturlige logaritmen til et tall +LOG = LOG ## Returnerer logaritmen for et tall til et angitt grunntall +LOG10 = LOG10 ## Returnerer logaritmen med grunntall 10 for et tall +MDETERM = MDETERM ## Returnerer matrisedeterminanten til en matrise +MINVERSE = MINVERS ## Returnerer den inverse matrisen til en matrise +MMULT = MMULT ## Returnerer matriseproduktet av to matriser +MOD = REST ## Returnerer resten fra en divisjon +MROUND = MRUND ## Returnerer et tall avrundet til det ønskede multiplum +MULTINOMIAL = MULTINOMINELL ## Returnerer det multinominelle for et sett med tall +ODD = AVRUND.TIL.ODDETALL ## Runder av et tall oppover til nærmeste heltall som er et oddetall +PI = PI ## Returnerer verdien av pi +POWER = OPPHØYD.I ## Returnerer resultatet av et tall opphøyd i en potens +PRODUCT = PRODUKT ## Multipliserer argumentene +QUOTIENT = KVOTIENT ## Returnerer heltallsdelen av en divisjon +RADIANS = RADIANER ## Konverterer grader til radianer +RAND = TILFELDIG ## Returnerer et tilfeldig tall mellom 0 og 1 +RANDBETWEEN = TILFELDIGMELLOM ## Returnerer et tilfeldig tall innenfor et angitt område +ROMAN = ROMERTALL ## Konverterer vanlige tall til romertall, som tekst +ROUND = AVRUND ## Avrunder et tall til et angitt antall sifre +ROUNDDOWN = AVRUND.NED ## Avrunder et tall nedover, mot null +ROUNDUP = AVRUND.OPP ## Runder av et tall oppover, bort fra null +SERIESSUM = SUMMER.REKKE ## Returnerer summen av en geometrisk rekke, basert på formelen +SIGN = FORTEGN ## Returnerer fortegnet for et tall +SIN = SIN ## Returnerer sinus til en gitt vinkel +SINH = SINH ## Returnerer den hyperbolske sinus til et tall +SQRT = ROT ## Returnerer en positiv kvadratrot +SQRTPI = ROTPI ## Returnerer kvadratroten av (tall * pi) +SUBTOTAL = DELSUM ## Returnerer en delsum i en liste eller database +SUM = SUMMER ## Legger sammen argumentene +SUMIF = SUMMERHVIS ## Legger sammen cellene angitt ved et gitt vilkår +SUMIFS = SUMMER.HVIS.SETT ## Legger sammen cellene i et område som oppfyller flere vilkår +SUMPRODUCT = SUMMERPRODUKT ## Returnerer summen av produktene av tilsvarende matrisekomponenter +SUMSQ = SUMMERKVADRAT ## Returnerer kvadratsummen av argumentene +SUMX2MY2 = SUMMERX2MY2 ## Returnerer summen av differansen av kvadratene for tilsvarende verdier i to matriser +SUMX2PY2 = SUMMERX2PY2 ## Returnerer summen av kvadratsummene for tilsvarende verdier i to matriser +SUMXMY2 = SUMMERXMY2 ## Returnerer summen av kvadratene av differansen for tilsvarende verdier i to matriser +TAN = TAN ## Returnerer tangens for et tall +TANH = TANH ## Returnerer den hyperbolske tangens for et tall +TRUNC = AVKORT ## Korter av et tall til et heltall + + +## +## Statistical functions Statistiske funksjoner +## +AVEDEV = GJENNOMSNITTSAVVIK ## Returnerer datapunktenes gjennomsnittlige absoluttavvik fra middelverdien +AVERAGE = GJENNOMSNITT ## Returnerer gjennomsnittet for argumentene +AVERAGEA = GJENNOMSNITTA ## Returnerer gjennomsnittet for argumentene, inkludert tall, tekst og logiske verdier +AVERAGEIF = GJENNOMSNITTHVIS ## Returnerer gjennomsnittet (aritmetisk gjennomsnitt) av alle cellene i et område som oppfyller et bestemt vilkår +AVERAGEIFS = GJENNOMSNITT.HVIS.SETT ## Returnerer gjennomsnittet (aritmetisk middelverdi) av alle celler som oppfyller flere vilkår. +BETADIST = BETA.FORDELING ## Returnerer den kumulative betafordelingsfunksjonen +BETAINV = INVERS.BETA.FORDELING ## Returnerer den inverse verdien til fordelingsfunksjonen for en angitt betafordeling +BINOMDIST = BINOM.FORDELING ## Returnerer den individuelle binomiske sannsynlighetsfordelingen +CHIDIST = KJI.FORDELING ## Returnerer den ensidige sannsynligheten for en kjikvadrert fordeling +CHIINV = INVERS.KJI.FORDELING ## Returnerer den inverse av den ensidige sannsynligheten for den kjikvadrerte fordelingen +CHITEST = KJI.TEST ## Utfører testen for uavhengighet +CONFIDENCE = KONFIDENS ## Returnerer konfidensintervallet til gjennomsnittet for en populasjon +CORREL = KORRELASJON ## Returnerer korrelasjonskoeffisienten mellom to datasett +COUNT = ANTALL ## Teller hvor mange tall som er i argumentlisten +COUNTA = ANTALLA ## Teller hvor mange verdier som er i argumentlisten +COUNTBLANK = TELLBLANKE ## Teller antall tomme celler i et område. +COUNTIF = ANTALL.HVIS ## Teller antall celler i et område som oppfyller gitte vilkår +COUNTIFS = ANTALL.HVIS.SETT ## Teller antallet ikke-tomme celler i et område som oppfyller flere vilkår +COVAR = KOVARIANS ## Returnerer kovariansen, gjennomsnittet av produktene av parvise avvik +CRITBINOM = GRENSE.BINOM ## Returnerer den minste verdien der den kumulative binomiske fordelingen er mindre enn eller lik en vilkårsverdi +DEVSQ = AVVIK.KVADRERT ## Returnerer summen av kvadrerte avvik +EXPONDIST = EKSP.FORDELING ## Returnerer eksponentialfordelingen +FDIST = FFORDELING ## Returnerer F-sannsynlighetsfordelingen +FINV = FFORDELING.INVERS ## Returnerer den inverse av den sannsynlige F-fordelingen +FISHER = FISHER ## Returnerer Fisher-transformasjonen +FISHERINV = FISHERINV ## Returnerer den inverse av Fisher-transformasjonen +FORECAST = PROGNOSE ## Returnerer en verdi langs en lineær trend +FREQUENCY = FREKVENS ## Returnerer en frekvensdistribusjon som en loddrett matrise +FTEST = FTEST ## Returnerer resultatet av en F-test +GAMMADIST = GAMMAFORDELING ## Returnerer gammafordelingen +GAMMAINV = GAMMAINV ## Returnerer den inverse av den gammakumulative fordelingen +GAMMALN = GAMMALN ## Returnerer den naturlige logaritmen til gammafunksjonen G(x) +GEOMEAN = GJENNOMSNITT.GEOMETRISK ## Returnerer den geometriske middelverdien +GROWTH = VEKST ## Returnerer verdier langs en eksponentiell trend +HARMEAN = GJENNOMSNITT.HARMONISK ## Returnerer den harmoniske middelverdien +HYPGEOMDIST = HYPGEOM.FORDELING ## Returnerer den hypergeometriske fordelingen +INTERCEPT = SKJÆRINGSPUNKT ## Returnerer skjæringspunktet til den lineære regresjonslinjen +KURT = KURT ## Returnerer kurtosen til et datasett +LARGE = N.STØRST ## Returnerer den n-te største verdien i et datasett +LINEST = RETTLINJE ## Returnerer parameterne til en lineær trend +LOGEST = KURVE ## Returnerer parameterne til en eksponentiell trend +LOGINV = LOGINV ## Returnerer den inverse lognormale fordelingen +LOGNORMDIST = LOGNORMFORD ## Returnerer den kumulative lognormale fordelingen +MAX = STØRST ## Returnerer maksimumsverdien i en argumentliste +MAXA = MAKSA ## Returnerer maksimumsverdien i en argumentliste, inkludert tall, tekst og logiske verdier +MEDIAN = MEDIAN ## Returnerer medianen til tallene som er gitt +MIN = MIN ## Returnerer minimumsverdien i en argumentliste +MINA = MINA ## Returnerer den minste verdien i en argumentliste, inkludert tall, tekst og logiske verdier +MODE = MODUS ## Returnerer den vanligste verdien i et datasett +NEGBINOMDIST = NEGBINOM.FORDELING ## Returnerer den negative binomiske fordelingen +NORMDIST = NORMALFORDELING ## Returnerer den kumulative normalfordelingen +NORMINV = NORMINV ## Returnerer den inverse kumulative normalfordelingen +NORMSDIST = NORMSFORDELING ## Returnerer standard kumulativ normalfordeling +NORMSINV = NORMSINV ## Returnerer den inverse av den den kumulative standard normalfordelingen +PEARSON = PEARSON ## Returnerer produktmomentkorrelasjonskoeffisienten, Pearson +PERCENTILE = PERSENTIL ## Returnerer den n-te persentil av verdiene i et område +PERCENTRANK = PROSENTDEL ## Returnerer prosentrangeringen av en verdi i et datasett +PERMUT = PERMUTER ## Returnerer antall permutasjoner for et gitt antall objekter +POISSON = POISSON ## Returnerer Poissons sannsynlighetsfordeling +PROB = SANNSYNLIG ## Returnerer sannsynligheten for at verdier i et område ligger mellom to grenser +QUARTILE = KVARTIL ## Returnerer kvartilen til et datasett +RANK = RANG ## Returnerer rangeringen av et tall, eller plassen tallet har i en rekke +RSQ = RKVADRAT ## Returnerer kvadratet av produktmomentkorrelasjonskoeffisienten (Pearsons r) +SKEW = SKJEVFORDELING ## Returnerer skjevheten i en fordeling +SLOPE = STIGNINGSTALL ## Returnerer stigningtallet for den lineære regresjonslinjen +SMALL = N.MINST ## Returnerer den n-te minste verdien i et datasett +STANDARDIZE = NORMALISER ## Returnerer en normalisert verdi +STDEV = STDAV ## Estimere standardavvik på grunnlag av et utvalg +STDEVA = STDAVVIKA ## Estimerer standardavvik basert på et utvalg, inkludert tall, tekst og logiske verdier +STDEVP = STDAVP ## Beregner standardavvik basert på hele populasjonen +STDEVPA = STDAVVIKPA ## Beregner standardavvik basert på hele populasjonen, inkludert tall, tekst og logiske verdier +STEYX = STANDARDFEIL ## Returnerer standardfeilen for den predikerte y-verdien for hver x i regresjonen +TDIST = TFORDELING ## Returnerer en Student t-fordeling +TINV = TINV ## Returnerer den inverse Student t-fordelingen +TREND = TREND ## Returnerer verdier langs en lineær trend +TRIMMEAN = TRIMMET.GJENNOMSNITT ## Returnerer den interne middelverdien til et datasett +TTEST = TTEST ## Returnerer sannsynligheten assosiert med en Student t-test +VAR = VARIANS ## Estimerer varians basert på et utvalg +VARA = VARIANSA ## Estimerer varians basert på et utvalg, inkludert tall, tekst og logiske verdier +VARP = VARIANSP ## Beregner varians basert på hele populasjonen +VARPA = VARIANSPA ## Beregner varians basert på hele populasjonen, inkludert tall, tekst og logiske verdier +WEIBULL = WEIBULL.FORDELING ## Returnerer Weibull-fordelingen +ZTEST = ZTEST ## Returnerer den ensidige sannsynlighetsverdien for en z-test + + +## +## Text functions Tekstfunksjoner +## +ASC = STIGENDE ## Endrer fullbreddes (dobbeltbyte) engelske bokstaver eller katakana i en tegnstreng, til halvbreddes (enkeltbyte) tegn +BAHTTEXT = BAHTTEKST ## Konverterer et tall til tekst, og bruker valutaformatet ß (baht) +CHAR = TEGNKODE ## Returnerer tegnet som svarer til kodenummeret +CLEAN = RENSK ## Fjerner alle tegn som ikke kan skrives ut, fra teksten +CODE = KODE ## Returnerer en numerisk kode for det første tegnet i en tekststreng +CONCATENATE = KJEDE.SAMMEN ## Slår sammen flere tekstelementer til ett tekstelement +DOLLAR = VALUTA ## Konverterer et tall til tekst, og bruker valutaformatet $ (dollar) +EXACT = EKSAKT ## Kontrollerer om to tekstverdier er like +FIND = FINN ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) +FINDB = FINNB ## Finner en tekstverdi inne i en annen (skiller mellom store og små bokstaver) +FIXED = FASTSATT ## Formaterer et tall som tekst med et bestemt antall desimaler +JIS = JIS ## Endrer halvbreddes (enkeltbyte) engelske bokstaver eller katakana i en tegnstreng, til fullbreddes (dobbeltbyte) tegn +LEFT = VENSTRE ## Returnerer tegnene lengst til venstre i en tekstverdi +LEFTB = VENSTREB ## Returnerer tegnene lengst til venstre i en tekstverdi +LEN = LENGDE ## Returnerer antall tegn i en tekststreng +LENB = LENGDEB ## Returnerer antall tegn i en tekststreng +LOWER = SMÅ ## Konverterer tekst til små bokstaver +MID = DELTEKST ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir +MIDB = DELTEKSTB ## Returnerer et angitt antall tegn fra en tekststreng, og begynner fra posisjonen du angir +PHONETIC = FURIGANA ## Trekker ut fonetiske tegn (furigana) fra en tekststreng +PROPER = STOR.FORBOKSTAV ## Gir den første bokstaven i hvert ord i en tekstverdi stor forbokstav +REPLACE = ERSTATT ## Erstatter tegn i en tekst +REPLACEB = ERSTATTB ## Erstatter tegn i en tekst +REPT = GJENTA ## Gjentar tekst et gitt antall ganger +RIGHT = HØYRE ## Returnerer tegnene lengst til høyre i en tekstverdi +RIGHTB = HØYREB ## Returnerer tegnene lengst til høyre i en tekstverdi +SEARCH = SØK ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) +SEARCHB = SØKB ## Finner en tekstverdi inne i en annen (skiller ikke mellom store og små bokstaver) +SUBSTITUTE = BYTT.UT ## Bytter ut gammel tekst med ny tekst i en tekststreng +T = T ## Konverterer argumentene til tekst +TEXT = TEKST ## Formaterer et tall og konverterer det til tekst +TRIM = TRIMME ## Fjerner mellomrom fra tekst +UPPER = STORE ## Konverterer tekst til store bokstaver +VALUE = VERDI ## Konverterer et tekstargument til et tall diff --git a/assets/excel/PHPExcel/locale/pl/config b/assets/excel/PHPExcel/locale/pl/config new file mode 100644 index 0000000..4dd75be --- /dev/null +++ b/assets/excel/PHPExcel/locale/pl/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = zł + + +## +## Excel Error Codes (For future use) +## +NULL = #ZERO! +DIV0 = #DZIEL/0! +VALUE = #ARG! +REF = #ADR! +NAME = #NAZWA? +NUM = #LICZBA! +NA = #N/D! diff --git a/assets/excel/PHPExcel/locale/pl/functions b/assets/excel/PHPExcel/locale/pl/functions new file mode 100644 index 0000000..1881a71 --- /dev/null +++ b/assets/excel/PHPExcel/locale/pl/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Funkcje dodatków i automatyzacji +## +GETPIVOTDATA = WEŹDANETABELI ## Zwraca dane przechowywane w raporcie tabeli przestawnej. + + +## +## Cube functions Funkcje modułów +## +CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU ## Zwraca nazwę, właściwość i miarę kluczowego wskaźnika wydajności (KPI) oraz wyświetla nazwę i właściwość w komórce. Wskaźnik KPI jest miarą ilościową, taką jak miesięczny zysk brutto lub kwartalna fluktuacja pracowników, używaną do monitorowania wydajności organizacji. +CUBEMEMBER = ELEMENT.MODUŁU ## Zwraca element lub krotkę z hierarchii modułu. Służy do sprawdzania, czy element lub krotka istnieje w module. +CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU ## Zwraca wartość właściwości elementu w module. Służy do sprawdzania, czy nazwa elementu istnieje w module, i zwracania określonej właściwości dla tego elementu. +CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU ## Zwraca n-ty (albo uszeregowany) element zestawu. Służy do zwracania elementu lub elementów zestawu, na przykład najlepszego sprzedawcy lub 10 najlepszych studentów. +CUBESET = ZESTAW.MODUŁÓW ## Definiuje obliczony zestaw elementów lub krotek, wysyłając wyrażenie zestawu do serwera modułu, który tworzy zestaw i zwraca go do programu Microsoft Office Excel. +CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU ## Zwraca liczbę elementów zestawu. +CUBEVALUE = WARTOŚĆ.MODUŁU ## Zwraca zagregowaną wartość z modułu. + + +## +## Database functions Funkcje baz danych +## +DAVERAGE = BD.ŚREDNIA ## Zwraca wartość średniej wybranych wpisów bazy danych. +DCOUNT = BD.ILE.REKORDÓW ## Zlicza komórki zawierające liczby w bazie danych. +DCOUNTA = BD.ILE.REKORDÓW.A ## Zlicza niepuste komórki w bazie danych. +DGET = BD.POLE ## Wyodrębnia z bazy danych jeden rekord spełniający określone kryteria. +DMAX = BD.MAX ## Zwraca wartość maksymalną z wybranych wpisów bazy danych. +DMIN = BD.MIN ## Zwraca wartość minimalną z wybranych wpisów bazy danych. +DPRODUCT = BD.ILOCZYN ## Mnoży wartości w konkretnym, spełniającym kryteria polu rekordów bazy danych. +DSTDEV = BD.ODCH.STANDARD ## Szacuje odchylenie standardowe na podstawie próbki z wybranych wpisów bazy danych. +DSTDEVP = BD.ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji wybranych wpisów bazy danych. +DSUM = BD.SUMA ## Dodaje liczby w kolumnie pól rekordów bazy danych, które spełniają kryteria. +DVAR = BD.WARIANCJA ## Szacuje wariancję na podstawie próbki z wybranych wpisów bazy danych. +DVARP = BD.WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji wybranych wpisów bazy danych. + + +## +## Date and time functions Funkcje dat, godzin i czasu +## +DATE = DATA ## Zwraca liczbę seryjną dla wybranej daty. +DATEVALUE = DATA.WARTOŚĆ ## Konwertuje datę w formie tekstu na liczbę seryjną. +DAY = DZIEŃ ## Konwertuje liczbę seryjną na dzień miesiąca. +DAYS360 = DNI.360 ## Oblicza liczbę dni między dwiema datami na podstawie roku 360-dniowego. +EDATE = UPŁDNI ## Zwraca liczbę seryjną daty jako wskazaną liczbę miesięcy przed określoną datą początkową lub po niej. +EOMONTH = EOMONTH ## Zwraca liczbę seryjną ostatniego dnia miesiąca przed określoną liczbą miesięcy lub po niej. +HOUR = GODZINA ## Konwertuje liczbę seryjną na godzinę. +MINUTE = MINUTA ## Konwertuje liczbę seryjną na minutę. +MONTH = MIESIĄC ## Konwertuje liczbę seryjną na miesiąc. +NETWORKDAYS = NETWORKDAYS ## Zwraca liczbę pełnych dni roboczych między dwiema datami. +NOW = TERAZ ## Zwraca liczbę seryjną bieżącej daty i godziny. +SECOND = SEKUNDA ## Konwertuje liczbę seryjną na sekundę. +TIME = CZAS ## Zwraca liczbę seryjną określonego czasu. +TIMEVALUE = CZAS.WARTOŚĆ ## Konwertuje czas w formie tekstu na liczbę seryjną. +TODAY = DZIŚ ## Zwraca liczbę seryjną dla daty bieżącej. +WEEKDAY = DZIEŃ.TYG ## Konwertuje liczbę seryjną na dzień tygodnia. +WEEKNUM = WEEKNUM ## Konwertuje liczbę seryjną na liczbę reprezentującą numer tygodnia w roku. +WORKDAY = WORKDAY ## Zwraca liczbę seryjną dla daty przed określoną liczbą dni roboczych lub po niej. +YEAR = ROK ## Konwertuje liczbę seryjną na rok. +YEARFRAC = YEARFRAC ## Zwraca część roku reprezentowaną przez pełną liczbę dni między datą początkową a datą końcową. + + +## +## Engineering functions Funkcje inżynierskie +## +BESSELI = BESSELI ## Zwraca wartość zmodyfikowanej funkcji Bessela In(x). +BESSELJ = BESSELJ ## Zwraca wartość funkcji Bessela Jn(x). +BESSELK = BESSELK ## Zwraca wartość zmodyfikowanej funkcji Bessela Kn(x). +BESSELY = BESSELY ## Zwraca wartość funkcji Bessela Yn(x). +BIN2DEC = BIN2DEC ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci dziesiętnej. +BIN2HEX = BIN2HEX ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci szesnastkowej. +BIN2OCT = BIN2OCT ## Konwertuje liczbę w postaci dwójkowej na liczbę w postaci ósemkowej. +COMPLEX = COMPLEX ## Konwertuje część rzeczywistą i urojoną na liczbę zespoloną. +CONVERT = CONVERT ## Konwertuje liczbę z jednego systemu miar na inny. +DEC2BIN = DEC2BIN ## Konwertuje liczbę w postaci dziesiętnej na postać dwójkową. +DEC2HEX = DEC2HEX ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci szesnastkowej. +DEC2OCT = DEC2OCT ## Konwertuje liczbę w postaci dziesiętnej na liczbę w postaci ósemkowej. +DELTA = DELTA ## Sprawdza, czy dwie wartości są równe. +ERF = ERF ## Zwraca wartość funkcji błędu. +ERFC = ERFC ## Zwraca wartość komplementarnej funkcji błędu. +GESTEP = GESTEP ## Sprawdza, czy liczba jest większa niż wartość progowa. +HEX2BIN = HEX2BIN ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dwójkowej. +HEX2DEC = HEX2DEC ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci dziesiętnej. +HEX2OCT = HEX2OCT ## Konwertuje liczbę w postaci szesnastkowej na liczbę w postaci ósemkowej. +IMABS = IMABS ## Zwraca wartość bezwzględną (moduł) liczby zespolonej. +IMAGINARY = IMAGINARY ## Zwraca wartość części urojonej liczby zespolonej. +IMARGUMENT = IMARGUMENT ## Zwraca wartość argumentu liczby zespolonej, przy czym kąt wyrażony jest w radianach. +IMCONJUGATE = IMCONJUGATE ## Zwraca wartość liczby sprzężonej danej liczby zespolonej. +IMCOS = IMCOS ## Zwraca wartość cosinusa liczby zespolonej. +IMDIV = IMDIV ## Zwraca wartość ilorazu dwóch liczb zespolonych. +IMEXP = IMEXP ## Zwraca postać wykładniczą liczby zespolonej. +IMLN = IMLN ## Zwraca wartość logarytmu naturalnego liczby zespolonej. +IMLOG10 = IMLOG10 ## Zwraca wartość logarytmu dziesiętnego liczby zespolonej. +IMLOG2 = IMLOG2 ## Zwraca wartość logarytmu liczby zespolonej przy podstawie 2. +IMPOWER = IMPOWER ## Zwraca wartość liczby zespolonej podniesionej do potęgi całkowitej. +IMPRODUCT = IMPRODUCT ## Zwraca wartość iloczynu liczb zespolonych. +IMREAL = IMREAL ## Zwraca wartość części rzeczywistej liczby zespolonej. +IMSIN = IMSIN ## Zwraca wartość sinusa liczby zespolonej. +IMSQRT = IMSQRT ## Zwraca wartość pierwiastka kwadratowego z liczby zespolonej. +IMSUB = IMSUB ## Zwraca wartość różnicy dwóch liczb zespolonych. +IMSUM = IMSUM ## Zwraca wartość sumy liczb zespolonych. +OCT2BIN = OCT2BIN ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dwójkowej. +OCT2DEC = OCT2DEC ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci dziesiętnej. +OCT2HEX = OCT2HEX ## Konwertuje liczbę w postaci ósemkowej na liczbę w postaci szesnastkowej. + + +## +## Financial functions Funkcje finansowe +## +ACCRINT = ACCRINT ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem okresowym. +ACCRINTM = ACCRINTM ## Zwraca narosłe odsetki dla papieru wartościowego z oprocentowaniem w terminie wykupu. +AMORDEGRC = AMORDEGRC ## Zwraca amortyzację dla każdego okresu rozliczeniowego z wykorzystaniem współczynnika amortyzacji. +AMORLINC = AMORLINC ## Zwraca amortyzację dla każdego okresu rozliczeniowego. +COUPDAYBS = COUPDAYBS ## Zwraca liczbę dni od początku okresu dywidendy do dnia rozliczeniowego. +COUPDAYS = COUPDAYS ## Zwraca liczbę dni w okresie dywidendy, z uwzględnieniem dnia rozliczeniowego. +COUPDAYSNC = COUPDAYSNC ## Zwraca liczbę dni od dnia rozliczeniowego do daty następnego dnia dywidendy. +COUPNCD = COUPNCD ## Zwraca dzień następnej dywidendy po dniu rozliczeniowym. +COUPNUM = COUPNUM ## Zwraca liczbę dywidend płatnych między dniem rozliczeniowym a dniem wykupu. +COUPPCD = COUPPCD ## Zwraca dzień poprzedniej dywidendy przed dniem rozliczeniowym. +CUMIPMT = CUMIPMT ## Zwraca wartość procentu składanego płatnego między dwoma okresami. +CUMPRINC = CUMPRINC ## Zwraca wartość kapitału skumulowanego spłaty pożyczki między dwoma okresami. +DB = DB ## Zwraca amortyzację środka trwałego w danym okresie metodą degresywną z zastosowaniem stałej bazowej. +DDB = DDB ## Zwraca amortyzację środka trwałego za podany okres metodą degresywną z zastosowaniem podwójnej bazowej lub metodą określoną przez użytkownika. +DISC = DISC ## Zwraca wartość stopy dyskontowej papieru wartościowego. +DOLLARDE = DOLLARDE ## Konwertuje cenę w postaci ułamkowej na cenę wyrażoną w postaci dziesiętnej. +DOLLARFR = DOLLARFR ## Konwertuje cenę wyrażoną w postaci dziesiętnej na cenę wyrażoną w postaci ułamkowej. +DURATION = DURATION ## Zwraca wartość rocznego przychodu z papieru wartościowego o okresowych wypłatach oprocentowania. +EFFECT = EFFECT ## Zwraca wartość efektywnej rocznej stopy procentowej. +FV = FV ## Zwraca przyszłą wartość lokaty. +FVSCHEDULE = FVSCHEDULE ## Zwraca przyszłą wartość kapitału początkowego wraz z szeregiem procentów składanych. +INTRATE = INTRATE ## Zwraca wartość stopy procentowej papieru wartościowego całkowicie ulokowanego. +IPMT = IPMT ## Zwraca wysokość spłaty oprocentowania lokaty za dany okres. +IRR = IRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii przepływów gotówkowych. +ISPMT = ISPMT ## Oblicza wysokość spłaty oprocentowania za dany okres lokaty. +MDURATION = MDURATION ## Zwraca wartość zmodyfikowanego okresu Macauleya dla papieru wartościowego o założonej wartości nominalnej 100 zł. +MIRR = MIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla przypadku, gdy dodatnie i ujemne przepływy gotówkowe mają różne stopy. +NOMINAL = NOMINAL ## Zwraca wysokość nominalnej rocznej stopy procentowej. +NPER = NPER ## Zwraca liczbę okresów dla lokaty. +NPV = NPV ## Zwraca wartość bieżącą netto lokaty na podstawie szeregu okresowych przepływów gotówkowych i stopy dyskontowej. +ODDFPRICE = ODDFPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym pierwszym okresem. +ODDFYIELD = ODDFYIELD ## Zwraca rentowność papieru wartościowego z nietypowym pierwszym okresem. +ODDLPRICE = ODDLPRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z nietypowym ostatnim okresem. +ODDLYIELD = ODDLYIELD ## Zwraca rentowność papieru wartościowego z nietypowym ostatnim okresem. +PMT = PMT ## Zwraca wartość okresowej płatności raty rocznej. +PPMT = PPMT ## Zwraca wysokość spłaty kapitału w przypadku lokaty dla danego okresu. +PRICE = PRICE ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem okresowym. +PRICEDISC = PRICEDISC ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego zdyskontowanego. +PRICEMAT = PRICEMAT ## Zwraca cenę za 100 zł wartości nominalnej papieru wartościowego z oprocentowaniem w terminie wykupu. +PV = PV ## Zwraca wartość bieżącą lokaty. +RATE = RATE ## Zwraca wysokość stopy procentowej w okresie raty rocznej. +RECEIVED = RECEIVED ## Zwraca wartość kapitału otrzymanego przy wykupie papieru wartościowego całkowicie ulokowanego. +SLN = SLN ## Zwraca amortyzację środka trwałego za jeden okres metodą liniową. +SYD = SYD ## Zwraca amortyzację środka trwałego za dany okres metodą sumy cyfr lat amortyzacji. +TBILLEQ = TBILLEQ ## Zwraca rentowność ekwiwalentu obligacji dla bonu skarbowego. +TBILLPRICE = TBILLPRICE ## Zwraca cenę za 100 zł wartości nominalnej bonu skarbowego. +TBILLYIELD = TBILLYIELD ## Zwraca rentowność bonu skarbowego. +VDB = VDB ## Oblicza amortyzację środka trwałego w danym okresie lub jego części metodą degresywną. +XIRR = XIRR ## Zwraca wartość wewnętrznej stopy zwrotu dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. +XNPV = XNPV ## Zwraca wartość bieżącą netto dla serii rozłożonych w czasie przepływów gotówkowych, niekoniecznie okresowych. +YIELD = YIELD ## Zwraca rentowność papieru wartościowego z oprocentowaniem okresowym. +YIELDDISC = YIELDDISC ## Zwraca roczną rentowność zdyskontowanego papieru wartościowego, na przykład bonu skarbowego. +YIELDMAT = YIELDMAT ## Zwraca roczną rentowność papieru wartościowego oprocentowanego przy wykupie. + + +## +## Information functions Funkcje informacyjne +## +CELL = KOMÓRKA ## Zwraca informacje o formacie, położeniu lub zawartości komórki. +ERROR.TYPE = NR.BŁĘDU ## Zwraca liczbę odpowiadającą typowi błędu. +INFO = INFO ## Zwraca informację o aktualnym środowisku pracy. +ISBLANK = CZY.PUSTA ## Zwraca wartość PRAWDA, jeśli wartość jest pusta. +ISERR = CZY.BŁ ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu, z wyjątkiem #N/D!. +ISERROR = CZY.BŁĄD ## Zwraca wartość PRAWDA, jeśli wartość jest dowolną wartością błędu. +ISEVEN = ISEVEN ## Zwraca wartość PRAWDA, jeśli liczba jest parzysta. +ISLOGICAL = CZY.LOGICZNA ## Zwraca wartość PRAWDA, jeśli wartość jest wartością logiczną. +ISNA = CZY.BRAK ## Zwraca wartość PRAWDA, jeśli wartość jest wartością błędu #N/D!. +ISNONTEXT = CZY.NIE.TEKST ## Zwraca wartość PRAWDA, jeśli wartość nie jest tekstem. +ISNUMBER = CZY.LICZBA ## Zwraca wartość PRAWDA, jeśli wartość jest liczbą. +ISODD = ISODD ## Zwraca wartość PRAWDA, jeśli liczba jest nieparzysta. +ISREF = CZY.ADR ## Zwraca wartość PRAWDA, jeśli wartość jest odwołaniem. +ISTEXT = CZY.TEKST ## Zwraca wartość PRAWDA, jeśli wartość jest tekstem. +N = L ## Zwraca wartość przekonwertowaną na postać liczbową. +NA = BRAK ## Zwraca wartość błędu #N/D!. +TYPE = TYP ## Zwraca liczbę wskazującą typ danych wartości. + + +## +## Logical functions Funkcje logiczne +## +AND = ORAZ ## Zwraca wartość PRAWDA, jeśli wszystkie argumenty mają wartość PRAWDA. +FALSE = FAŁSZ ## Zwraca wartość logiczną FAŁSZ. +IF = JEŻELI ## Określa warunek logiczny do sprawdzenia. +IFERROR = JEŻELI.BŁĄD ## Zwraca określoną wartość, jeśli wynikiem obliczenia formuły jest błąd; w przeciwnym przypadku zwraca wynik formuły. +NOT = NIE ## Odwraca wartość logiczną argumentu. +OR = LUB ## Zwraca wartość PRAWDA, jeśli co najmniej jeden z argumentów ma wartość PRAWDA. +TRUE = PRAWDA ## Zwraca wartość logiczną PRAWDA. + + +## +## Lookup and reference functions Funkcje wyszukiwania i odwołań +## +ADDRESS = ADRES ## Zwraca odwołanie do jednej komórki w arkuszu jako wartość tekstową. +AREAS = OBSZARY ## Zwraca liczbę obszarów występujących w odwołaniu. +CHOOSE = WYBIERZ ## Wybiera wartość z listy wartości. +COLUMN = NR.KOLUMNY ## Zwraca numer kolumny z odwołania. +COLUMNS = LICZBA.KOLUMN ## Zwraca liczbę kolumn dla danego odwołania. +HLOOKUP = WYSZUKAJ.POZIOMO ## Przegląda górny wiersz tablicy i zwraca wartość wskazanej komórki. +HYPERLINK = HIPERŁĄCZE ## Tworzy skrót lub skok, który pozwala otwierać dokument przechowywany na serwerze sieciowym, w sieci intranet lub w Internecie. +INDEX = INDEKS ## Używa indeksu do wybierania wartości z odwołania lub tablicy. +INDIRECT = ADR.POŚR ## Zwraca odwołanie określone przez wartość tekstową. +LOOKUP = WYSZUKAJ ## Wyszukuje wartości w wektorze lub tablicy. +MATCH = PODAJ.POZYCJĘ ## Wyszukuje wartości w odwołaniu lub w tablicy. +OFFSET = PRZESUNIĘCIE ## Zwraca adres przesunięty od danego odwołania. +ROW = WIERSZ ## Zwraca numer wiersza odwołania. +ROWS = ILE.WIERSZY ## Zwraca liczbę wierszy dla danego odwołania. +RTD = RTD ## Pobiera dane w czasie rzeczywistym z programu obsługującego automatyzację COM (Automatyzacja: Sposób pracy z obiektami aplikacji pochodzącymi z innej aplikacji lub narzędzia projektowania. Nazywana wcześniej Automatyzacją OLE, Automatyzacja jest standardem przemysłowym i funkcją obiektowego modelu składników (COM, Component Object Model).). +TRANSPOSE = TRANSPONUJ ## Zwraca transponowaną tablicę. +VLOOKUP = WYSZUKAJ.PIONOWO ## Przeszukuje pierwszą kolumnę tablicy i przechodzi wzdłuż wiersza, aby zwrócić wartość komórki. + + +## +## Math and trigonometry functions Funkcje matematyczne i trygonometryczne +## +ABS = MODUŁ.LICZBY ## Zwraca wartość absolutną liczby. +ACOS = ACOS ## Zwraca arcus cosinus liczby. +ACOSH = ACOSH ## Zwraca arcus cosinus hiperboliczny liczby. +ASIN = ASIN ## Zwraca arcus sinus liczby. +ASINH = ASINH ## Zwraca arcus sinus hiperboliczny liczby. +ATAN = ATAN ## Zwraca arcus tangens liczby. +ATAN2 = ATAN2 ## Zwraca arcus tangens liczby na podstawie współrzędnych x i y. +ATANH = ATANH ## Zwraca arcus tangens hiperboliczny liczby. +CEILING = ZAOKR.W.GÓRĘ ## Zaokrągla liczbę do najbliższej liczby całkowitej lub do najbliższej wielokrotności dokładności. +COMBIN = KOMBINACJE ## Zwraca liczbę kombinacji dla danej liczby obiektów. +COS = COS ## Zwraca cosinus liczby. +COSH = COSH ## Zwraca cosinus hiperboliczny liczby. +DEGREES = STOPNIE ## Konwertuje radiany na stopnie. +EVEN = ZAOKR.DO.PARZ ## Zaokrągla liczbę w górę do najbliższej liczby parzystej. +EXP = EXP ## Zwraca wartość liczby e podniesionej do potęgi określonej przez podaną liczbę. +FACT = SILNIA ## Zwraca silnię liczby. +FACTDOUBLE = FACTDOUBLE ## Zwraca podwójną silnię liczby. +FLOOR = ZAOKR.W.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. +GCD = GCD ## Zwraca największy wspólny dzielnik. +INT = ZAOKR.DO.CAŁK ## Zaokrągla liczbę w dół do najbliższej liczby całkowitej. +LCM = LCM ## Zwraca najmniejszą wspólną wielokrotność. +LN = LN ## Zwraca logarytm naturalny podanej liczby. +LOG = LOG ## Zwraca logarytm danej liczby przy zadanej podstawie. +LOG10 = LOG10 ## Zwraca logarytm dziesiętny liczby. +MDETERM = WYZNACZNIK.MACIERZY ## Zwraca wyznacznik macierzy tablicy. +MINVERSE = MACIERZ.ODW ## Zwraca odwrotność macierzy tablicy. +MMULT = MACIERZ.ILOCZYN ## Zwraca iloczyn macierzy dwóch tablic. +MOD = MOD ## Zwraca resztę z dzielenia. +MROUND = MROUND ## Zwraca liczbę zaokrągloną do żądanej wielokrotności. +MULTINOMIAL = MULTINOMIAL ## Zwraca wielomian dla zbioru liczb. +ODD = ZAOKR.DO.NPARZ ## Zaokrągla liczbę w górę do najbliższej liczby nieparzystej. +PI = PI ## Zwraca wartość liczby Pi. +POWER = POTĘGA ## Zwraca liczbę podniesioną do potęgi. +PRODUCT = ILOCZYN ## Mnoży argumenty. +QUOTIENT = QUOTIENT ## Zwraca iloraz (całkowity). +RADIANS = RADIANY ## Konwertuje stopnie na radiany. +RAND = LOS ## Zwraca liczbę pseudolosową z zakresu od 0 do 1. +RANDBETWEEN = RANDBETWEEN ## Zwraca liczbę pseudolosową z zakresu określonego przez podane argumenty. +ROMAN = RZYMSKIE ## Konwertuje liczbę arabską na rzymską jako tekst. +ROUND = ZAOKR ## Zaokrągla liczbę do określonej liczby cyfr. +ROUNDDOWN = ZAOKR.DÓŁ ## Zaokrągla liczbę w dół, w kierunku zera. +ROUNDUP = ZAOKR.GÓRA ## Zaokrągla liczbę w górę, w kierunku od zera. +SERIESSUM = SERIESSUM ## Zwraca sumę szeregu potęgowego na podstawie wzoru. +SIGN = ZNAK.LICZBY ## Zwraca znak liczby. +SIN = SIN ## Zwraca sinus danego kąta. +SINH = SINH ## Zwraca sinus hiperboliczny liczby. +SQRT = PIERWIASTEK ## Zwraca dodatni pierwiastek kwadratowy. +SQRTPI = SQRTPI ## Zwraca pierwiastek kwadratowy iloczynu (liczba * Pi). +SUBTOTAL = SUMY.POŚREDNIE ## Zwraca sumę częściową listy lub bazy danych. +SUM = SUMA ## Dodaje argumenty. +SUMIF = SUMA.JEŻELI ## Dodaje komórki określone przez podane kryterium. +SUMIFS = SUMA.WARUNKÓW ## Dodaje komórki w zakresie, które spełniają wiele kryteriów. +SUMPRODUCT = SUMA.ILOCZYNÓW ## Zwraca sumę iloczynów odpowiednich elementów tablicy. +SUMSQ = SUMA.KWADRATÓW ## Zwraca sumę kwadratów argumentów. +SUMX2MY2 = SUMA.X2.M.Y2 ## Zwraca sumę różnic kwadratów odpowiednich wartości w dwóch tablicach. +SUMX2PY2 = SUMA.X2.P.Y2 ## Zwraca sumę sum kwadratów odpowiednich wartości w dwóch tablicach. +SUMXMY2 = SUMA.XMY.2 ## Zwraca sumę kwadratów różnic odpowiednich wartości w dwóch tablicach. +TAN = TAN ## Zwraca tangens liczby. +TANH = TANH ## Zwraca tangens hiperboliczny liczby. +TRUNC = LICZBA.CAŁK ## Przycina liczbę do wartości całkowitej. + + +## +## Statistical functions Funkcje statystyczne +## +AVEDEV = ODCH.ŚREDNIE ## Zwraca średnią wartość odchyleń absolutnych punktów danych od ich wartości średniej. +AVERAGE = ŚREDNIA ## Zwraca wartość średnią argumentów. +AVERAGEA = ŚREDNIA.A ## Zwraca wartość średnią argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +AVERAGEIF = ŚREDNIA.JEŻELI ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek w zakresie, które spełniają podane kryteria. +AVERAGEIFS = ŚREDNIA.WARUNKÓW ## Zwraca średnią (średnią arytmetyczną) wszystkich komórek, które spełniają jedno lub więcej kryteriów. +BETADIST = ROZKŁAD.BETA ## Zwraca skumulowaną funkcję gęstości prawdopodobieństwa beta. +BETAINV = ROZKŁAD.BETA.ODW ## Zwraca odwrotność skumulowanej funkcji gęstości prawdopodobieństwa beta. +BINOMDIST = ROZKŁAD.DWUM ## Zwraca pojedynczy składnik dwumianowego rozkładu prawdopodobieństwa. +CHIDIST = ROZKŁAD.CHI ## Zwraca wartość jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. +CHIINV = ROZKŁAD.CHI.ODW ## Zwraca odwrotność wartości jednostronnego prawdopodobieństwa rozkładu chi-kwadrat. +CHITEST = TEST.CHI ## Zwraca test niezależności. +CONFIDENCE = UFNOŚĆ ## Zwraca interwał ufności dla średniej populacji. +CORREL = WSP.KORELACJI ## Zwraca współczynnik korelacji dwóch zbiorów danych. +COUNT = ILE.LICZB ## Zlicza liczby znajdujące się na liście argumentów. +COUNTA = ILE.NIEPUSTYCH ## Zlicza wartości znajdujące się na liście argumentów. +COUNTBLANK = LICZ.PUSTE ## Zwraca liczbę pustych komórek w pewnym zakresie. +COUNTIF = LICZ.JEŻELI ## Zlicza komórki wewnątrz zakresu, które spełniają podane kryteria. +COUNTIFS = LICZ.WARUNKI ## Zlicza komórki wewnątrz zakresu, które spełniają wiele kryteriów. +COVAR = KOWARIANCJA ## Zwraca kowariancję, czyli średnią wartość iloczynów odpowiednich odchyleń. +CRITBINOM = PRÓG.ROZKŁAD.DWUM ## Zwraca najmniejszą wartość, dla której skumulowany rozkład dwumianowy jest mniejszy niż wartość kryterium lub równy jej. +DEVSQ = ODCH.KWADRATOWE ## Zwraca sumę kwadratów odchyleń. +EXPONDIST = ROZKŁAD.EXP ## Zwraca rozkład wykładniczy. +FDIST = ROZKŁAD.F ## Zwraca rozkład prawdopodobieństwa F. +FINV = ROZKŁAD.F.ODW ## Zwraca odwrotność rozkładu prawdopodobieństwa F. +FISHER = ROZKŁAD.FISHER ## Zwraca transformację Fishera. +FISHERINV = ROZKŁAD.FISHER.ODW ## Zwraca odwrotność transformacji Fishera. +FORECAST = REGLINX ## Zwraca wartość trendu liniowego. +FREQUENCY = CZĘSTOŚĆ ## Zwraca rozkład częstotliwości jako tablicę pionową. +FTEST = TEST.F ## Zwraca wynik testu F. +GAMMADIST = ROZKŁAD.GAMMA ## Zwraca rozkład gamma. +GAMMAINV = ROZKŁAD.GAMMA.ODW ## Zwraca odwrotność skumulowanego rozkładu gamma. +GAMMALN = ROZKŁAD.LIN.GAMMA ## Zwraca logarytm naturalny funkcji gamma, Γ(x). +GEOMEAN = ŚREDNIA.GEOMETRYCZNA ## Zwraca średnią geometryczną. +GROWTH = REGEXPW ## Zwraca wartości trendu wykładniczego. +HARMEAN = ŚREDNIA.HARMONICZNA ## Zwraca średnią harmoniczną. +HYPGEOMDIST = ROZKŁAD.HIPERGEOM ## Zwraca rozkład hipergeometryczny. +INTERCEPT = ODCIĘTA ## Zwraca punkt przecięcia osi pionowej z linią regresji liniowej. +KURT = KURTOZA ## Zwraca kurtozę zbioru danych. +LARGE = MAX.K ## Zwraca k-tą największą wartość ze zbioru danych. +LINEST = REGLINP ## Zwraca parametry trendu liniowego. +LOGEST = REGEXPP ## Zwraca parametry trendu wykładniczego. +LOGINV = ROZKŁAD.LOG.ODW ## Zwraca odwrotność rozkładu logarytmu naturalnego. +LOGNORMDIST = ROZKŁAD.LOG ## Zwraca skumulowany rozkład logarytmu naturalnego. +MAX = MAX ## Zwraca maksymalną wartość listy argumentów. +MAXA = MAX.A ## Zwraca maksymalną wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +MEDIAN = MEDIANA ## Zwraca medianę podanych liczb. +MIN = MIN ## Zwraca minimalną wartość listy argumentów. +MINA = MIN.A ## Zwraca najmniejszą wartość listy argumentów, z uwzględnieniem liczb, tekstów i wartości logicznych. +MODE = WYST.NAJCZĘŚCIEJ ## Zwraca wartość najczęściej występującą w zbiorze danych. +NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC ## Zwraca ujemny rozkład dwumianowy. +NORMDIST = ROZKŁAD.NORMALNY ## Zwraca rozkład normalny skumulowany. +NORMINV = ROZKŁAD.NORMALNY.ODW ## Zwraca odwrotność rozkładu normalnego skumulowanego. +NORMSDIST = ROZKŁAD.NORMALNY.S ## Zwraca standardowy rozkład normalny skumulowany. +NORMSINV = ROZKŁAD.NORMALNY.S.ODW ## Zwraca odwrotność standardowego rozkładu normalnego skumulowanego. +PEARSON = PEARSON ## Zwraca współczynnik korelacji momentu iloczynu Pearsona. +PERCENTILE = PERCENTYL ## Wyznacza k-ty percentyl wartości w zakresie. +PERCENTRANK = PROCENT.POZYCJA ## Zwraca procentową pozycję wartości w zbiorze danych. +PERMUT = PERMUTACJE ## Zwraca liczbę permutacji dla danej liczby obiektów. +POISSON = ROZKŁAD.POISSON ## Zwraca rozkład Poissona. +PROB = PRAWDPD ## Zwraca prawdopodobieństwo, że wartości w zakresie leżą pomiędzy dwiema granicami. +QUARTILE = KWARTYL ## Wyznacza kwartyl zbioru danych. +RANK = POZYCJA ## Zwraca pozycję liczby na liście liczb. +RSQ = R.KWADRAT ## Zwraca kwadrat współczynnika korelacji momentu iloczynu Pearsona. +SKEW = SKOŚNOŚĆ ## Zwraca skośność rozkładu. +SLOPE = NACHYLENIE ## Zwraca nachylenie linii regresji liniowej. +SMALL = MIN.K ## Zwraca k-tą najmniejszą wartość ze zbioru danych. +STANDARDIZE = NORMALIZUJ ## Zwraca wartość znormalizowaną. +STDEV = ODCH.STANDARDOWE ## Szacuje odchylenie standardowe na podstawie próbki. +STDEVA = ODCH.STANDARDOWE.A ## Szacuje odchylenie standardowe na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. +STDEVP = ODCH.STANDARD.POPUL ## Oblicza odchylenie standardowe na podstawie całej populacji. +STDEVPA = ODCH.STANDARD.POPUL.A ## Oblicza odchylenie standardowe na podstawie całej populacji, z uwzględnieniem liczb, teksów i wartości logicznych. +STEYX = REGBŁSTD ## Zwraca błąd standardowy przewidzianej wartości y dla każdej wartości x w regresji. +TDIST = ROZKŁAD.T ## Zwraca rozkład t-Studenta. +TINV = ROZKŁAD.T.ODW ## Zwraca odwrotność rozkładu t-Studenta. +TREND = REGLINW ## Zwraca wartości trendu liniowego. +TRIMMEAN = ŚREDNIA.WEWN ## Zwraca średnią wartość dla wnętrza zbioru danych. +TTEST = TEST.T ## Zwraca prawdopodobieństwo związane z testem t-Studenta. +VAR = WARIANCJA ## Szacuje wariancję na podstawie próbki. +VARA = WARIANCJA.A ## Szacuje wariancję na podstawie próbki, z uwzględnieniem liczb, tekstów i wartości logicznych. +VARP = WARIANCJA.POPUL ## Oblicza wariancję na podstawie całej populacji. +VARPA = WARIANCJA.POPUL.A ## Oblicza wariancję na podstawie całej populacji, z uwzględnieniem liczb, tekstów i wartości logicznych. +WEIBULL = ROZKŁAD.WEIBULL ## Zwraca rozkład Weibulla. +ZTEST = TEST.Z ## Zwraca wartość jednostronnego prawdopodobieństwa testu z. + + +## +## Text functions Funkcje tekstowe +## +ASC = ASC ## Zamienia litery angielskie lub katakana o pełnej szerokości (dwubajtowe) w ciągu znaków na znaki o szerokości połówkowej (jednobajtowe). +BAHTTEXT = BAHTTEXT ## Konwertuje liczbę na tekst, stosując format walutowy ß (baht). +CHAR = ZNAK ## Zwraca znak o podanym numerze kodu. +CLEAN = OCZYŚĆ ## Usuwa z tekstu wszystkie znaki, które nie mogą być drukowane. +CODE = KOD ## Zwraca kod numeryczny pierwszego znaku w ciągu tekstowym. +CONCATENATE = ZŁĄCZ.TEKSTY ## Łączy kilka oddzielnych tekstów w jeden tekst. +DOLLAR = KWOTA ## Konwertuje liczbę na tekst, stosując format walutowy $ (dolar). +EXACT = PORÓWNAJ ## Sprawdza identyczność dwóch wartości tekstowych. +FIND = ZNAJDŹ ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). +FINDB = ZNAJDŹB ## Znajduje jedną wartość tekstową wewnątrz innej (z uwzględnieniem wielkich i małych liter). +FIXED = ZAOKR.DO.TEKST ## Formatuje liczbę jako tekst przy stałej liczbie miejsc dziesiętnych. +JIS = JIS ## Zmienia litery angielskie lub katakana o szerokości połówkowej (jednobajtowe) w ciągu znaków na znaki o pełnej szerokości (dwubajtowe). +LEFT = LEWY ## Zwraca skrajne lewe znaki z wartości tekstowej. +LEFTB = LEWYB ## Zwraca skrajne lewe znaki z wartości tekstowej. +LEN = DŁ ## Zwraca liczbę znaków ciągu tekstowego. +LENB = DŁ.B ## Zwraca liczbę znaków ciągu tekstowego. +LOWER = LITERY.MAŁE ## Konwertuje wielkie litery tekstu na małe litery. +MID = FRAGMENT.TEKSTU ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. +MIDB = FRAGMENT.TEKSTU.B ## Zwraca określoną liczbę znaków z ciągu tekstowego, zaczynając od zadanej pozycji. +PHONETIC = PHONETIC ## Wybiera znaki fonetyczne (furigana) z ciągu tekstowego. +PROPER = Z.WIELKIEJ.LITERY ## Zastępuje pierwszą literę każdego wyrazu tekstu wielką literą. +REPLACE = ZASTĄP ## Zastępuje znaki w tekście. +REPLACEB = ZASTĄP.B ## Zastępuje znaki w tekście. +REPT = POWT ## Powiela tekst daną liczbę razy. +RIGHT = PRAWY ## Zwraca skrajne prawe znaki z wartości tekstowej. +RIGHTB = PRAWYB ## Zwraca skrajne prawe znaki z wartości tekstowej. +SEARCH = SZUKAJ.TEKST ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). +SEARCHB = SZUKAJ.TEKST.B ## Wyszukuje jedną wartość tekstową wewnątrz innej (bez uwzględniania wielkości liter). +SUBSTITUTE = PODSTAW ## Podstawia nowy tekst w miejsce poprzedniego tekstu w ciągu tekstowym. +T = T ## Konwertuje argumenty na tekst. +TEXT = TEKST ## Formatuje liczbę i konwertuje ją na tekst. +TRIM = USUŃ.ZBĘDNE.ODSTĘPY ## Usuwa spacje z tekstu. +UPPER = LITERY.WIELKIE ## Konwertuje znaki tekstu na wielkie litery. +VALUE = WARTOŚĆ ## Konwertuje argument tekstowy na liczbę. diff --git a/assets/excel/PHPExcel/locale/pt/br/config b/assets/excel/PHPExcel/locale/pt/br/config new file mode 100644 index 0000000..45b6fbd --- /dev/null +++ b/assets/excel/PHPExcel/locale/pt/br/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = R$ + + +## +## Excel Error Codes (For future use) +## +NULL = #NULO! +DIV0 = #DIV/0! +VALUE = #VALOR! +REF = #REF! +NAME = #NOME? +NUM = #NÚM! +NA = #N/D diff --git a/assets/excel/PHPExcel/locale/pt/br/functions b/assets/excel/PHPExcel/locale/pt/br/functions new file mode 100644 index 0000000..f3ba3a3 --- /dev/null +++ b/assets/excel/PHPExcel/locale/pt/br/functions @@ -0,0 +1,408 @@ +## +## Add-in and Automation functions Funções Suplemento e Automação +## +GETPIVOTDATA = INFODADOSTABELADINÂMICA ## Retorna os dados armazenados em um relatório de tabela dinâmica + + +## +## Cube functions Funções de Cubo +## +CUBEKPIMEMBER = MEMBROKPICUBO ## Retorna o nome de um KPI (indicador de desempenho-chave), uma propriedade e uma medida e exibe o nome e a propriedade na célula. Um KPI é uma medida quantificável, como o lucro bruto mensal ou a rotatividade trimestral dos funcionários, usada para monitorar o desempenho de uma organização. +CUBEMEMBER = MEMBROCUBO ## Retorna um membro ou tupla em uma hierarquia de cubo. Use para validar se o membro ou tupla existe no cubo. +CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Retorna o valor da propriedade de um membro no cubo. Usada para validar a existência do nome do membro no cubo e para retornar a propriedade especificada para esse membro. +CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Retorna o enésimo membro, ou o membro ordenado, em um conjunto. Use para retornar um ou mais elementos em um conjunto, assim como o melhor vendedor ou os dez melhores alunos. +CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou tuplas enviando uma expressão do conjunto para o cubo no servidor, que cria o conjunto e o retorna para o Microsoft Office Excel. +CUBESETCOUNT = CONTAGEMCONJUNTOCUBO ## Retorna o número de itens em um conjunto. +CUBEVALUE = VALORCUBO ## Retorna um valor agregado de um cubo. + + +## +## Database functions Funções de banco de dados +## +DAVERAGE = BDMÉDIA ## Retorna a média das entradas selecionadas de um banco de dados +DCOUNT = BDCONTAR ## Conta as células que contêm números em um banco de dados +DCOUNTA = BDCONTARA ## Conta células não vazias em um banco de dados +DGET = BDEXTRAIR ## Extrai de um banco de dados um único registro que corresponde a um critério específico +DMAX = BDMÁX ## Retorna o valor máximo de entradas selecionadas de um banco de dados +DMIN = BDMÍN ## Retorna o valor mínimo de entradas selecionadas de um banco de dados +DPRODUCT = BDMULTIPL ## Multiplica os valores em um campo específico de registros que correspondem ao critério em um banco de dados +DSTDEV = BDEST ## Estima o desvio padrão com base em uma amostra de entradas selecionadas de um banco de dados +DSTDEVP = BDDESVPA ## Calcula o desvio padrão com base na população inteira de entradas selecionadas de um banco de dados +DSUM = BDSOMA ## Adiciona os números à coluna de campos de registros do banco de dados que correspondem ao critério +DVAR = BDVAREST ## Estima a variância com base em uma amostra de entradas selecionadas de um banco de dados +DVARP = BDVARP ## Calcula a variância com base na população inteira de entradas selecionadas de um banco de dados + + +## +## Date and time functions Funções de data e hora +## +DATE = DATA ## Retorna o número de série de uma data específica +DATEVALUE = DATA.VALOR ## Converte uma data na forma de texto para um número de série +DAY = DIA ## Converte um número de série em um dia do mês +DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base em um ano de 360 dias +EDATE = DATAM ## Retorna o número de série da data que é o número indicado de meses antes ou depois da data inicial +EOMONTH = FIMMÊS ## Retorna o número de série do último dia do mês antes ou depois de um número especificado de meses +HOUR = HORA ## Converte um número de série em uma hora +MINUTE = MINUTO ## Converte um número de série em um minuto +MONTH = MÊS ## Converte um número de série em um mês +NETWORKDAYS = DIATRABALHOTOTAL ## Retorna o número de dias úteis inteiros entre duas datas +NOW = AGORA ## Retorna o número de série seqüencial da data e hora atuais +SECOND = SEGUNDO ## Converte um número de série em um segundo +TIME = HORA ## Retorna o número de série de uma hora específica +TIMEVALUE = VALOR.TEMPO ## Converte um horário na forma de texto para um número de série +TODAY = HOJE ## Retorna o número de série da data de hoje +WEEKDAY = DIA.DA.SEMANA ## Converte um número de série em um dia da semana +WEEKNUM = NÚMSEMANA ## Converte um número de série em um número que representa onde a semana cai numericamente em um ano +WORKDAY = DIATRABALHO ## Retorna o número de série da data antes ou depois de um número específico de dias úteis +YEAR = ANO ## Converte um número de série em um ano +YEARFRAC = FRAÇÃOANO ## Retorna a fração do ano que representa o número de dias entre data_inicial e data_final + + +## +## Engineering functions Funções de engenharia +## +BESSELI = BESSELI ## Retorna a função de Bessel In(x) modificada +BESSELJ = BESSELJ ## Retorna a função de Bessel Jn(x) +BESSELK = BESSELK ## Retorna a função de Bessel Kn(x) modificada +BESSELY = BESSELY ## Retorna a função de Bessel Yn(x) +BIN2DEC = BIN2DEC ## Converte um número binário em decimal +BIN2HEX = BIN2HEX ## Converte um número binário em hexadecimal +BIN2OCT = BIN2OCT ## Converte um número binário em octal +COMPLEX = COMPLEX ## Converte coeficientes reais e imaginários e um número complexo +CONVERT = CONVERTER ## Converte um número de um sistema de medida para outro +DEC2BIN = DECABIN ## Converte um número decimal em binário +DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal +DEC2OCT = DECAOCT ## Converte um número decimal em octal +DELTA = DELTA ## Testa se dois valores são iguais +ERF = FUNERRO ## Retorna a função de erro +ERFC = FUNERROCOMPL ## Retorna a função de erro complementar +GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite +HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário +HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal +HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal +IMABS = IMABS ## Retorna o valor absoluto (módulo) de um número complexo +IMAGINARY = IMAGINÁRIO ## Retorna o coeficiente imaginário de um número complexo +IMARGUMENT = IMARG ## Retorna o argumento teta, um ângulo expresso em radianos +IMCONJUGATE = IMCONJ ## Retorna o conjugado complexo de um número complexo +IMCOS = IMCOS ## Retorna o cosseno de um número complexo +IMDIV = IMDIV ## Retorna o quociente de dois números complexos +IMEXP = IMEXP ## Retorna o exponencial de um número complexo +IMLN = IMLN ## Retorna o logaritmo natural de um número complexo +IMLOG10 = IMLOG10 ## Retorna o logaritmo de base 10 de um número complexo +IMLOG2 = IMLOG2 ## Retorna o logaritmo de base 2 de um número complexo +IMPOWER = IMPOT ## Retorna um número complexo elevado a uma potência inteira +IMPRODUCT = IMPROD ## Retorna o produto de números complexos +IMREAL = IMREAL ## Retorna o coeficiente real de um número complexo +IMSIN = IMSENO ## Retorna o seno de um número complexo +IMSQRT = IMRAIZ ## Retorna a raiz quadrada de um número complexo +IMSUB = IMSUBTR ## Retorna a diferença entre dois números complexos +IMSUM = IMSOMA ## Retorna a soma de números complexos +OCT2BIN = OCTABIN ## Converte um número octal em binário +OCT2DEC = OCTADEC ## Converte um número octal em decimal +OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal + + +## +## Financial functions Funções financeiras +## +ACCRINT = JUROSACUM ## Retorna a taxa de juros acumulados de um título que paga uma taxa periódica de juros +ACCRINTM = JUROSACUMV ## Retorna os juros acumulados de um título que paga juros no vencimento +AMORDEGRC = AMORDEGRC ## Retorna a depreciação para cada período contábil usando o coeficiente de depreciação +AMORLINC = AMORLINC ## Retorna a depreciação para cada período contábil +COUPDAYBS = CUPDIASINLIQ ## Retorna o número de dias do início do período de cupom até a data de liquidação +COUPDAYS = CUPDIAS ## Retorna o número de dias no período de cupom que contém a data de quitação +COUPDAYSNC = CUPDIASPRÓX ## Retorna o número de dias da data de liquidação até a data do próximo cupom +COUPNCD = CUPDATAPRÓX ## Retorna a próxima data de cupom após a data de quitação +COUPNUM = CUPNÚM ## Retorna o número de cupons pagáveis entre as datas de quitação e vencimento +COUPPCD = CUPDATAANT ## Retorna a data de cupom anterior à data de quitação +CUMIPMT = PGTOJURACUM ## Retorna os juros acumulados pagos entre dois períodos +CUMPRINC = PGTOCAPACUM ## Retorna o capital acumulado pago sobre um empréstimo entre dois períodos +DB = BD ## Retorna a depreciação de um ativo para um período especificado, usando o método de balanço de declínio fixo +DDB = BDD ## Retorna a depreciação de um ativo com relação a um período especificado usando o método de saldos decrescentes duplos ou qualquer outro método especificado por você +DISC = DESC ## Retorna a taxa de desconto de um título +DOLLARDE = MOEDADEC ## Converte um preço em formato de moeda, na forma fracionária, em um preço na forma decimal +DOLLARFR = MOEDAFRA ## Converte um preço, apresentado na forma decimal, em um preço apresentado na forma fracionária +DURATION = DURAÇÃO ## Retorna a duração anual de um título com pagamentos de juros periódicos +EFFECT = EFETIVA ## Retorna a taxa de juros anual efetiva +FV = VF ## Retorna o valor futuro de um investimento +FVSCHEDULE = VFPLANO ## Retorna o valor futuro de um capital inicial após a aplicação de uma série de taxas de juros compostas +INTRATE = TAXAJUROS ## Retorna a taxa de juros de um título totalmente investido +IPMT = IPGTO ## Retorna o pagamento de juros para um investimento em um determinado período +IRR = TIR ## Retorna a taxa interna de retorno de uma série de fluxos de caixa +ISPMT = ÉPGTO ## Calcula os juros pagos durante um período específico de um investimento +MDURATION = MDURAÇÃO ## Retorna a duração de Macauley modificada para um título com um valor de paridade equivalente a R$ 100 +MIRR = MTIR ## Calcula a taxa interna de retorno em que fluxos de caixa positivos e negativos são financiados com diferentes taxas +NOMINAL = NOMINAL ## Retorna a taxa de juros nominal anual +NPER = NPER ## Retorna o número de períodos de um investimento +NPV = VPL ## Retorna o valor líquido atual de um investimento com base em uma série de fluxos de caixa periódicos e em uma taxa de desconto +ODDFPRICE = PREÇOPRIMINC ## Retorna o preço por R$ 100 de valor nominal de um título com um primeiro período indefinido +ODDFYIELD = LUCROPRIMINC ## Retorna o rendimento de um título com um primeiro período indefinido +ODDLPRICE = PREÇOÚLTINC ## Retorna o preço por R$ 100 de valor nominal de um título com um último período de cupom indefinido +ODDLYIELD = LUCROÚLTINC ## Retorna o rendimento de um título com um último período indefinido +PMT = PGTO ## Retorna o pagamento periódico de uma anuidade +PPMT = PPGTO ## Retorna o pagamento de capital para determinado período de investimento +PRICE = PREÇO ## Retorna a preço por R$ 100,00 de valor nominal de um título que paga juros periódicos +PRICEDISC = PREÇODESC ## Retorna o preço por R$ 100,00 de valor nominal de um título descontado +PRICEMAT = PREÇOVENC ## Retorna o preço por R$ 100,00 de valor nominal de um título que paga juros no vencimento +PV = VP ## Retorna o valor presente de um investimento +RATE = TAXA ## Retorna a taxa de juros por período de uma anuidade +RECEIVED = RECEBER ## Retorna a quantia recebida no vencimento de um título totalmente investido +SLN = DPD ## Retorna a depreciação em linha reta de um ativo durante um período +SYD = SDA ## Retorna a depreciação dos dígitos da soma dos anos de um ativo para um período especificado +TBILLEQ = OTN ## Retorna o rendimento de um título equivalente a uma obrigação do Tesouro +TBILLPRICE = OTNVALOR ## Retorna o preço por R$ 100,00 de valor nominal de uma obrigação do Tesouro +TBILLYIELD = OTNLUCRO ## Retorna o rendimento de uma obrigação do Tesouro +VDB = BDV ## Retorna a depreciação de um ativo para um período especificado ou parcial usando um método de balanço declinante +XIRR = XTIR ## Fornece a taxa interna de retorno para um programa de fluxos de caixa que não é necessariamente periódico +XNPV = XVPL ## Retorna o valor presente líquido de um programa de fluxos de caixa que não é necessariamente periódico +YIELD = LUCRO ## Retorna o lucro de um título que paga juros periódicos +YIELDDISC = LUCRODESC ## Retorna o rendimento anual de um título descontado. Por exemplo, uma obrigação do Tesouro +YIELDMAT = LUCROVENC ## Retorna o lucro anual de um título que paga juros no vencimento + + +## +## Information functions Funções de informação +## +CELL = CÉL ## Retorna informações sobre formatação, localização ou conteúdo de uma célula +ERROR.TYPE = TIPO.ERRO ## Retorna um número correspondente a um tipo de erro +INFO = INFORMAÇÃO ## Retorna informações sobre o ambiente operacional atual +ISBLANK = ÉCÉL.VAZIA ## Retorna VERDADEIRO se o valor for vazio +ISERR = ÉERRO ## Retorna VERDADEIRO se o valor for um valor de erro diferente de #N/D +ISERROR = ÉERROS ## Retorna VERDADEIRO se o valor for um valor de erro +ISEVEN = ÉPAR ## Retorna VERDADEIRO se o número for par +ISLOGICAL = ÉLÓGICO ## Retorna VERDADEIRO se o valor for um valor lógico +ISNA = É.NÃO.DISP ## Retorna VERDADEIRO se o valor for o valor de erro #N/D +ISNONTEXT = É.NÃO.TEXTO ## Retorna VERDADEIRO se o valor for diferente de texto +ISNUMBER = ÉNÚM ## Retorna VERDADEIRO se o valor for um número +ISODD = ÉIMPAR ## Retorna VERDADEIRO se o número for ímpar +ISREF = ÉREF ## Retorna VERDADEIRO se o valor for uma referência +ISTEXT = ÉTEXTO ## Retorna VERDADEIRO se o valor for texto +N = N ## Retorna um valor convertido em um número +NA = NÃO.DISP ## Retorna o valor de erro #N/D +TYPE = TIPO ## Retorna um número indicando o tipo de dados de um valor + + +## +## Logical functions Funções lógicas +## +AND = E ## Retorna VERDADEIRO se todos os seus argumentos forem VERDADEIROS +FALSE = FALSO ## Retorna o valor lógico FALSO +IF = SE ## Especifica um teste lógico a ser executado +IFERROR = SEERRO ## Retornará um valor que você especifica se uma fórmula for avaliada para um erro; do contrário, retornará o resultado da fórmula +NOT = NÃO ## Inverte o valor lógico do argumento +OR = OU ## Retorna VERDADEIRO se um dos argumentos for VERDADEIRO +TRUE = VERDADEIRO ## Retorna o valor lógico VERDADEIRO + + +## +## Lookup and reference functions Funções de pesquisa e referência +## +ADDRESS = ENDEREÇO ## Retorna uma referência como texto para uma única célula em uma planilha +AREAS = ÁREAS ## Retorna o número de áreas em uma referência +CHOOSE = ESCOLHER ## Escolhe um valor a partir de uma lista de valores +COLUMN = COL ## Retorna o número da coluna de uma referência +COLUMNS = COLS ## Retorna o número de colunas em uma referência +HLOOKUP = PROCH ## Procura na linha superior de uma matriz e retorna o valor da célula especificada +HYPERLINK = HYPERLINK ## Cria um atalho ou salto que abre um documento armazenado em um servidor de rede, uma intranet ou na Internet +INDEX = ÍNDICE ## Usa um índice para escolher um valor de uma referência ou matriz +INDIRECT = INDIRETO ## Retorna uma referência indicada por um valor de texto +LOOKUP = PROC ## Procura valores em um vetor ou em uma matriz +MATCH = CORRESP ## Procura valores em uma referência ou em uma matriz +OFFSET = DESLOC ## Retorna um deslocamento de referência com base em uma determinada referência +ROW = LIN ## Retorna o número da linha de uma referência +ROWS = LINS ## Retorna o número de linhas em uma referência +RTD = RTD ## Recupera dados em tempo real de um programa que ofereça suporte a automação COM (automação: uma forma de trabalhar com objetos de um aplicativo a partir de outro aplicativo ou ferramenta de desenvolvimento. Chamada inicialmente de automação OLE, a automação é um padrão industrial e um recurso do modelo de objeto componente (COM).) +TRANSPOSE = TRANSPOR ## Retorna a transposição de uma matriz +VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e move ao longo da linha para retornar o valor de uma célula + + +## +## Math and trigonometry functions Funções matemáticas e trigonométricas +## +ABS = ABS ## Retorna o valor absoluto de um número +ACOS = ACOS ## Retorna o arco cosseno de um número +ACOSH = ACOSH ## Retorna o cosseno hiperbólico inverso de um número +ASIN = ASEN ## Retorna o arco seno de um número +ASINH = ASENH ## Retorna o seno hiperbólico inverso de um número +ATAN = ATAN ## Retorna o arco tangente de um número +ATAN2 = ATAN2 ## Retorna o arco tangente das coordenadas x e y especificadas +ATANH = ATANH ## Retorna a tangente hiperbólica inversa de um número +CEILING = TETO ## Arredonda um número para o inteiro mais próximo ou para o múltiplo mais próximo de significância +COMBIN = COMBIN ## Retorna o número de combinações de um determinado número de objetos +COS = COS ## Retorna o cosseno de um número +COSH = COSH ## Retorna o cosseno hiperbólico de um número +DEGREES = GRAUS ## Converte radianos em graus +EVEN = PAR ## Arredonda um número para cima até o inteiro par mais próximo +EXP = EXP ## Retorna e elevado à potência de um número especificado +FACT = FATORIAL ## Retorna o fatorial de um número +FACTDOUBLE = FATDUPLO ## Retorna o fatorial duplo de um número +FLOOR = ARREDMULTB ## Arredonda um número para baixo até zero +GCD = MDC ## Retorna o máximo divisor comum +INT = INT ## Arredonda um número para baixo até o número inteiro mais próximo +LCM = MMC ## Retorna o mínimo múltiplo comum +LN = LN ## Retorna o logaritmo natural de um número +LOG = LOG ## Retorna o logaritmo de um número de uma base especificada +LOG10 = LOG10 ## Retorna o logaritmo de base 10 de um número +MDETERM = MATRIZ.DETERM ## Retorna o determinante de uma matriz de uma variável do tipo matriz +MINVERSE = MATRIZ.INVERSO ## Retorna a matriz inversa de uma matriz +MMULT = MATRIZ.MULT ## Retorna o produto de duas matrizes +MOD = RESTO ## Retorna o resto da divisão +MROUND = MARRED ## Retorna um número arredondado ao múltiplo desejado +MULTINOMIAL = MULTINOMIAL ## Retorna o multinomial de um conjunto de números +ODD = ÍMPAR ## Arredonda um número para cima até o inteiro ímpar mais próximo +PI = PI ## Retorna o valor de Pi +POWER = POTÊNCIA ## Fornece o resultado de um número elevado a uma potência +PRODUCT = MULT ## Multiplica seus argumentos +QUOTIENT = QUOCIENTE ## Retorna a parte inteira de uma divisão +RADIANS = RADIANOS ## Converte graus em radianos +RAND = ALEATÓRIO ## Retorna um número aleatório entre 0 e 1 +RANDBETWEEN = ALEATÓRIOENTRE ## Retorna um número aleatório entre os números especificados +ROMAN = ROMANO ## Converte um algarismo arábico em romano, como texto +ROUND = ARRED ## Arredonda um número até uma quantidade especificada de dígitos +ROUNDDOWN = ARREDONDAR.PARA.BAIXO ## Arredonda um número para baixo até zero +ROUNDUP = ARREDONDAR.PARA.CIMA ## Arredonda um número para cima, afastando-o de zero +SERIESSUM = SOMASEQÜÊNCIA ## Retorna a soma de uma série polinomial baseada na fórmula +SIGN = SINAL ## Retorna o sinal de um número +SIN = SEN ## Retorna o seno de um ângulo dado +SINH = SENH ## Retorna o seno hiperbólico de um número +SQRT = RAIZ ## Retorna uma raiz quadrada positiva +SQRTPI = RAIZPI ## Retorna a raiz quadrada de (núm* pi) +SUBTOTAL = SUBTOTAL ## Retorna um subtotal em uma lista ou em um banco de dados +SUM = SOMA ## Soma seus argumentos +SUMIF = SOMASE ## Adiciona as células especificadas por um determinado critério +SUMIFS = SOMASE ## Adiciona as células em um intervalo que atende a vários critérios +SUMPRODUCT = SOMARPRODUTO ## Retorna a soma dos produtos de componentes correspondentes de matrizes +SUMSQ = SOMAQUAD ## Retorna a soma dos quadrados dos argumentos +SUMX2MY2 = SOMAX2DY2 ## Retorna a soma da diferença dos quadrados dos valores correspondentes em duas matrizes +SUMX2PY2 = SOMAX2SY2 ## Retorna a soma da soma dos quadrados dos valores correspondentes em duas matrizes +SUMXMY2 = SOMAXMY2 ## Retorna a soma dos quadrados das diferenças dos valores correspondentes em duas matrizes +TAN = TAN ## Retorna a tangente de um número +TANH = TANH ## Retorna a tangente hiperbólica de um número +TRUNC = TRUNCAR ## Trunca um número para um inteiro + + +## +## Statistical functions Funções estatísticas +## +AVEDEV = DESV.MÉDIO ## Retorna a média aritmética dos desvios médios dos pontos de dados a partir de sua média +AVERAGE = MÉDIA ## Retorna a média dos argumentos +AVERAGEA = MÉDIAA ## Retorna a média dos argumentos, inclusive números, texto e valores lógicos +AVERAGEIF = MÉDIASE ## Retorna a média (média aritmética) de todas as células em um intervalo que atendem a um determinado critério +AVERAGEIFS = MÉDIASES ## Retorna a média (média aritmética) de todas as células que atendem a múltiplos critérios. +BETADIST = DISTBETA ## Retorna a função de distribuição cumulativa beta +BETAINV = BETA.ACUM.INV ## Retorna o inverso da função de distribuição cumulativa para uma distribuição beta especificada +BINOMDIST = DISTRBINOM ## Retorna a probabilidade de distribuição binomial do termo individual +CHIDIST = DIST.QUI ## Retorna a probabilidade unicaudal da distribuição qui-quadrada +CHIINV = INV.QUI ## Retorna o inverso da probabilidade uni-caudal da distribuição qui-quadrada +CHITEST = TESTE.QUI ## Retorna o teste para independência +CONFIDENCE = INT.CONFIANÇA ## Retorna o intervalo de confiança para uma média da população +CORREL = CORREL ## Retorna o coeficiente de correlação entre dois conjuntos de dados +COUNT = CONT.NÚM ## Calcula quantos números há na lista de argumentos +COUNTA = CONT.VALORES ## Calcula quantos valores há na lista de argumentos +COUNTBLANK = CONTAR.VAZIO ## Conta o número de células vazias no intervalo especificado +COUNTIF = CONT.SE ## Calcula o número de células não vazias em um intervalo que corresponde a determinados critérios +COUNTIFS = CONT.SES ## Conta o número de células dentro de um intervalo que atende a múltiplos critérios +COVAR = COVAR ## Retorna a covariância, a média dos produtos dos desvios pares +CRITBINOM = CRIT.BINOM ## Retorna o menor valor para o qual a distribuição binomial cumulativa é menor ou igual ao valor padrão +DEVSQ = DESVQ ## Retorna a soma dos quadrados dos desvios +EXPONDIST = DISTEXPON ## Retorna a distribuição exponencial +FDIST = DISTF ## Retorna a distribuição de probabilidade F +FINV = INVF ## Retorna o inverso da distribuição de probabilidades F +FISHER = FISHER ## Retorna a transformação Fisher +FISHERINV = FISHERINV ## Retorna o inverso da transformação Fisher +FORECAST = PREVISÃO ## Retorna um valor ao longo de uma linha reta +FREQUENCY = FREQÜÊNCIA ## Retorna uma distribuição de freqüência como uma matriz vertical +FTEST = TESTEF ## Retorna o resultado de um teste F +GAMMADIST = DISTGAMA ## Retorna a distribuição gama +GAMMAINV = INVGAMA ## Retorna o inverso da distribuição cumulativa gama +GAMMALN = LNGAMA ## Retorna o logaritmo natural da função gama, G(x) +GEOMEAN = MÉDIA.GEOMÉTRICA ## Retorna a média geométrica +GROWTH = CRESCIMENTO ## Retorna valores ao longo de uma tendência exponencial +HARMEAN = MÉDIA.HARMÔNICA ## Retorna a média harmônica +HYPGEOMDIST = DIST.HIPERGEOM ## Retorna a distribuição hipergeométrica +INTERCEPT = INTERCEPÇÃO ## Retorna a intercepção da linha de regressão linear +KURT = CURT ## Retorna a curtose de um conjunto de dados +LARGE = MAIOR ## Retorna o maior valor k-ésimo de um conjunto de dados +LINEST = PROJ.LIN ## Retorna os parâmetros de uma tendência linear +LOGEST = PROJ.LOG ## Retorna os parâmetros de uma tendência exponencial +LOGINV = INVLOG ## Retorna o inverso da distribuição lognormal +LOGNORMDIST = DIST.LOGNORMAL ## Retorna a distribuição lognormal cumulativa +MAX = MÁXIMO ## Retorna o valor máximo em uma lista de argumentos +MAXA = MÁXIMOA ## Retorna o maior valor em uma lista de argumentos, inclusive números, texto e valores lógicos +MEDIAN = MED ## Retorna a mediana dos números indicados +MIN = MÍNIMO ## Retorna o valor mínimo em uma lista de argumentos +MINA = MÍNIMOA ## Retorna o menor valor em uma lista de argumentos, inclusive números, texto e valores lógicos +MODE = MODO ## Retorna o valor mais comum em um conjunto de dados +NEGBINOMDIST = DIST.BIN.NEG ## Retorna a distribuição binomial negativa +NORMDIST = DIST.NORM ## Retorna a distribuição cumulativa normal +NORMINV = INV.NORM ## Retorna o inverso da distribuição cumulativa normal +NORMSDIST = DIST.NORMP ## Retorna a distribuição cumulativa normal padrão +NORMSINV = INV.NORMP ## Retorna o inverso da distribuição cumulativa normal padrão +PEARSON = PEARSON ## Retorna o coeficiente de correlação do momento do produto Pearson +PERCENTILE = PERCENTIL ## Retorna o k-ésimo percentil de valores em um intervalo +PERCENTRANK = ORDEM.PORCENTUAL ## Retorna a ordem percentual de um valor em um conjunto de dados +PERMUT = PERMUT ## Retorna o número de permutações de um determinado número de objetos +POISSON = POISSON ## Retorna a distribuição Poisson +PROB = PROB ## Retorna a probabilidade de valores em um intervalo estarem entre dois limites +QUARTILE = QUARTIL ## Retorna o quartil do conjunto de dados +RANK = ORDEM ## Retorna a posição de um número em uma lista de números +RSQ = RQUAD ## Retorna o quadrado do coeficiente de correlação do momento do produto de Pearson +SKEW = DISTORÇÃO ## Retorna a distorção de uma distribuição +SLOPE = INCLINAÇÃO ## Retorna a inclinação da linha de regressão linear +SMALL = MENOR ## Retorna o menor valor k-ésimo do conjunto de dados +STANDARDIZE = PADRONIZAR ## Retorna um valor normalizado +STDEV = DESVPAD ## Estima o desvio padrão com base em uma amostra +STDEVA = DESVPADA ## Estima o desvio padrão com base em uma amostra, inclusive números, texto e valores lógicos +STDEVP = DESVPADP ## Calcula o desvio padrão com base na população total +STDEVPA = DESVPADPA ## Calcula o desvio padrão com base na população total, inclusive números, texto e valores lógicos +STEYX = EPADYX ## Retorna o erro padrão do valor-y previsto para cada x da regressão +TDIST = DISTT ## Retorna a distribuição t de Student +TINV = INVT ## Retorna o inverso da distribuição t de Student +TREND = TENDÊNCIA ## Retorna valores ao longo de uma tendência linear +TRIMMEAN = MÉDIA.INTERNA ## Retorna a média do interior de um conjunto de dados +TTEST = TESTET ## Retorna a probabilidade associada ao teste t de Student +VAR = VAR ## Estima a variância com base em uma amostra +VARA = VARA ## Estima a variância com base em uma amostra, inclusive números, texto e valores lógicos +VARP = VARP ## Calcula a variância com base na população inteira +VARPA = VARPA ## Calcula a variância com base na população total, inclusive números, texto e valores lógicos +WEIBULL = WEIBULL ## Retorna a distribuição Weibull +ZTEST = TESTEZ ## Retorna o valor de probabilidade uni-caudal de um teste-z + + +## +## Text functions Funções de texto +## +ASC = ASC ## Altera letras do inglês ou katakana de largura total (bytes duplos) dentro de uma seqüência de caracteres para caracteres de meia largura (byte único) +BAHTTEXT = BAHTTEXT ## Converte um número em um texto, usando o formato de moeda ß (baht) +CHAR = CARACT ## Retorna o caractere especificado pelo número de código +CLEAN = TIRAR ## Remove todos os caracteres do texto que não podem ser impressos +CODE = CÓDIGO ## Retorna um código numérico para o primeiro caractere de uma seqüência de caracteres de texto +CONCATENATE = CONCATENAR ## Agrupa vários itens de texto em um único item de texto +DOLLAR = MOEDA ## Converte um número em texto, usando o formato de moeda $ (dólar) +EXACT = EXATO ## Verifica se dois valores de texto são idênticos +FIND = PROCURAR ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas) +FINDB = PROCURARB ## Procura um valor de texto dentro de outro (diferencia maiúsculas de minúsculas) +FIXED = DEF.NÚM.DEC ## Formata um número como texto com um número fixo de decimais +JIS = JIS ## Altera letras do inglês ou katakana de meia largura (byte único) dentro de uma seqüência de caracteres para caracteres de largura total (bytes duplos) +LEFT = ESQUERDA ## Retorna os caracteres mais à esquerda de um valor de texto +LEFTB = ESQUERDAB ## Retorna os caracteres mais à esquerda de um valor de texto +LEN = NÚM.CARACT ## Retorna o número de caracteres em uma seqüência de texto +LENB = NÚM.CARACTB ## Retorna o número de caracteres em uma seqüência de texto +LOWER = MINÚSCULA ## Converte texto para minúsculas +MID = EXT.TEXTO ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada +MIDB = EXT.TEXTOB ## Retorna um número específico de caracteres de uma seqüência de texto começando na posição especificada +PHONETIC = FONÉTICA ## Extrai os caracteres fonéticos (furigana) de uma seqüência de caracteres de texto +PROPER = PRI.MAIÚSCULA ## Coloca a primeira letra de cada palavra em maiúscula em um valor de texto +REPLACE = MUDAR ## Muda os caracteres dentro do texto +REPLACEB = MUDARB ## Muda os caracteres dentro do texto +REPT = REPT ## Repete o texto um determinado número de vezes +RIGHT = DIREITA ## Retorna os caracteres mais à direita de um valor de texto +RIGHTB = DIREITAB ## Retorna os caracteres mais à direita de um valor de texto +SEARCH = LOCALIZAR ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas) +SEARCHB = LOCALIZARB ## Localiza um valor de texto dentro de outro (não diferencia maiúsculas de minúsculas) +SUBSTITUTE = SUBSTITUIR ## Substitui um novo texto por um texto antigo em uma seqüência de texto +T = T ## Converte os argumentos em texto +TEXT = TEXTO ## Formata um número e o converte em texto +TRIM = ARRUMAR ## Remove espaços do texto +UPPER = MAIÚSCULA ## Converte o texto em maiúsculas +VALUE = VALOR ## Converte um argumento de texto em um número diff --git a/assets/excel/PHPExcel/locale/pt/config b/assets/excel/PHPExcel/locale/pt/config new file mode 100644 index 0000000..8bb8d8b --- /dev/null +++ b/assets/excel/PHPExcel/locale/pt/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = € + + +## +## Excel Error Codes (For future use) +## +NULL = #NULO! +DIV0 = #DIV/0! +VALUE = #VALOR! +REF = #REF! +NAME = #NOME? +NUM = #NÚM! +NA = #N/D diff --git a/assets/excel/PHPExcel/locale/pt/functions b/assets/excel/PHPExcel/locale/pt/functions new file mode 100644 index 0000000..7fe9e3b --- /dev/null +++ b/assets/excel/PHPExcel/locale/pt/functions @@ -0,0 +1,408 @@ +## +## Add-in and Automation functions Funções de Suplemento e Automatização +## +GETPIVOTDATA = OBTERDADOSDIN ## Devolve dados armazenados num relatório de Tabela Dinâmica + + +## +## Cube functions Funções de cubo +## +CUBEKPIMEMBER = MEMBROKPICUBO ## Devolve o nome, propriedade e medição de um KPI (key performance indicator) e apresenta o nome e a propriedade na célula. Um KPI é uma medida quantificável, como, por exemplo, o lucro mensal bruto ou a rotatividade trimestral de pessoal, utilizada para monitorizar o desempenho de uma organização. +CUBEMEMBER = MEMBROCUBO ## Devolve um membro ou cadeia de identificação numa hierarquia de cubo. Utilizada para validar a existência do membro ou cadeia de identificação no cubo. +CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO ## Devolve o valor de uma propriedade de membro no cubo. Utilizada para validar a existência de um nome de membro no cubo e para devolver a propriedade especificada para esse membro. +CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO ## Devolve o enésimo ou a classificação mais alta num conjunto. Utilizada para devolver um ou mais elementos num conjunto, tal como o melhor vendedor ou os 10 melhores alunos. +CUBESET = CONJUNTOCUBO ## Define um conjunto calculado de membros ou cadeias de identificação enviando uma expressão de conjunto para o cubo no servidor, que cria o conjunto e, em seguida, devolve o conjunto ao Microsoft Office Excel. +CUBESETCOUNT = CONTARCONJUNTOCUBO ## Devolve o número de itens num conjunto. +CUBEVALUE = VALORCUBO ## Devolve um valor agregado do cubo. + + +## +## Database functions Funções de base de dados +## +DAVERAGE = BDMÉDIA ## Devolve a média das entradas da base de dados seleccionadas +DCOUNT = BDCONTAR ## Conta as células que contêm números numa base de dados +DCOUNTA = BDCONTAR.VAL ## Conta as células que não estejam em branco numa base de dados +DGET = BDOBTER ## Extrai de uma base de dados um único registo que corresponde aos critérios especificados +DMAX = BDMÁX ## Devolve o valor máximo das entradas da base de dados seleccionadas +DMIN = BDMÍN ## Devolve o valor mínimo das entradas da base de dados seleccionadas +DPRODUCT = BDMULTIPL ## Multiplica os valores de um determinado campo de registos que correspondem aos critérios numa base de dados +DSTDEV = BDDESVPAD ## Calcula o desvio-padrão com base numa amostra de entradas da base de dados seleccionadas +DSTDEVP = BDDESVPADP ## Calcula o desvio-padrão com base na população total das entradas da base de dados seleccionadas +DSUM = BDSOMA ## Adiciona os números na coluna de campo dos registos de base de dados que correspondem aos critérios +DVAR = BDVAR ## Calcula a variância com base numa amostra das entradas de base de dados seleccionadas +DVARP = BDVARP ## Calcula a variância com base na população total das entradas de base de dados seleccionadas + + +## +## Date and time functions Funções de data e hora +## +DATE = DATA ## Devolve o número de série de uma determinada data +DATEVALUE = DATA.VALOR ## Converte uma data em forma de texto num número de série +DAY = DIA ## Converte um número de série num dia do mês +DAYS360 = DIAS360 ## Calcula o número de dias entre duas datas com base num ano com 360 dias +EDATE = DATAM ## Devolve um número de série de data que corresponde ao número de meses indicado antes ou depois da data de início +EOMONTH = FIMMÊS ## Devolve o número de série do último dia do mês antes ou depois de um número de meses especificado +HOUR = HORA ## Converte um número de série numa hora +MINUTE = MINUTO ## Converte um número de série num minuto +MONTH = MÊS ## Converte um número de série num mês +NETWORKDAYS = DIATRABALHOTOTAL ## Devolve o número total de dias úteis entre duas datas +NOW = AGORA ## Devolve o número de série da data e hora actuais +SECOND = SEGUNDO ## Converte um número de série num segundo +TIME = TEMPO ## Devolve o número de série de um determinado tempo +TIMEVALUE = VALOR.TEMPO ## Converte um tempo em forma de texto num número de série +TODAY = HOJE ## Devolve o número de série da data actual +WEEKDAY = DIA.SEMANA ## Converte um número de série num dia da semana +WEEKNUM = NÚMSEMANA ## Converte um número de série num número que representa o número da semana num determinado ano +WORKDAY = DIA.TRABALHO ## Devolve o número de série da data antes ou depois de um número de dias úteis especificado +YEAR = ANO ## Converte um número de série num ano +YEARFRAC = FRACÇÃOANO ## Devolve a fracção de ano que representa o número de dias inteiros entre a data_de_início e a data_de_fim + + +## +## Engineering functions Funções de engenharia +## +BESSELI = BESSELI ## Devolve a função de Bessel modificada In(x) +BESSELJ = BESSELJ ## Devolve a função de Bessel Jn(x) +BESSELK = BESSELK ## Devolve a função de Bessel modificada Kn(x) +BESSELY = BESSELY ## Devolve a função de Bessel Yn(x) +BIN2DEC = BINADEC ## Converte um número binário em decimal +BIN2HEX = BINAHEX ## Converte um número binário em hexadecimal +BIN2OCT = BINAOCT ## Converte um número binário em octal +COMPLEX = COMPLEXO ## Converte coeficientes reais e imaginários num número complexo +CONVERT = CONVERTER ## Converte um número de um sistema de medida noutro +DEC2BIN = DECABIN ## Converte um número decimal em binário +DEC2HEX = DECAHEX ## Converte um número decimal em hexadecimal +DEC2OCT = DECAOCT ## Converte um número decimal em octal +DELTA = DELTA ## Testa se dois valores são iguais +ERF = FUNCERRO ## Devolve a função de erro +ERFC = FUNCERROCOMPL ## Devolve a função de erro complementar +GESTEP = DEGRAU ## Testa se um número é maior do que um valor limite +HEX2BIN = HEXABIN ## Converte um número hexadecimal em binário +HEX2DEC = HEXADEC ## Converte um número hexadecimal em decimal +HEX2OCT = HEXAOCT ## Converte um número hexadecimal em octal +IMABS = IMABS ## Devolve o valor absoluto (módulo) de um número complexo +IMAGINARY = IMAGINÁRIO ## Devolve o coeficiente imaginário de um número complexo +IMARGUMENT = IMARG ## Devolve o argumento Teta, um ângulo expresso em radianos +IMCONJUGATE = IMCONJ ## Devolve o conjugado complexo de um número complexo +IMCOS = IMCOS ## Devolve o co-seno de um número complexo +IMDIV = IMDIV ## Devolve o quociente de dois números complexos +IMEXP = IMEXP ## Devolve o exponencial de um número complexo +IMLN = IMLN ## Devolve o logaritmo natural de um número complexo +IMLOG10 = IMLOG10 ## Devolve o logaritmo de base 10 de um número complexo +IMLOG2 = IMLOG2 ## Devolve o logaritmo de base 2 de um número complexo +IMPOWER = IMPOT ## Devolve um número complexo elevado a uma potência inteira +IMPRODUCT = IMPROD ## Devolve o produto de números complexos +IMREAL = IMREAL ## Devolve o coeficiente real de um número complexo +IMSIN = IMSENO ## Devolve o seno de um número complexo +IMSQRT = IMRAIZ ## Devolve a raiz quadrada de um número complexo +IMSUB = IMSUBTR ## Devolve a diferença entre dois números complexos +IMSUM = IMSOMA ## Devolve a soma de números complexos +OCT2BIN = OCTABIN ## Converte um número octal em binário +OCT2DEC = OCTADEC ## Converte um número octal em decimal +OCT2HEX = OCTAHEX ## Converte um número octal em hexadecimal + + +## +## Financial functions Funções financeiras +## +ACCRINT = JUROSACUM ## Devolve os juros acumulados de um título que paga juros periódicos +ACCRINTM = JUROSACUMV ## Devolve os juros acumulados de um título que paga juros no vencimento +AMORDEGRC = AMORDEGRC ## Devolve a depreciação correspondente a cada período contabilístico utilizando um coeficiente de depreciação +AMORLINC = AMORLINC ## Devolve a depreciação correspondente a cada período contabilístico +COUPDAYBS = CUPDIASINLIQ ## Devolve o número de dias entre o início do período do cupão e a data de regularização +COUPDAYS = CUPDIAS ## Devolve o número de dias no período do cupão que contém a data de regularização +COUPDAYSNC = CUPDIASPRÓX ## Devolve o número de dias entre a data de regularização e a data do cupão seguinte +COUPNCD = CUPDATAPRÓX ## Devolve a data do cupão seguinte após a data de regularização +COUPNUM = CUPNÚM ## Devolve o número de cupões a serem pagos entre a data de regularização e a data de vencimento +COUPPCD = CUPDATAANT ## Devolve a data do cupão anterior antes da data de regularização +CUMIPMT = PGTOJURACUM ## Devolve os juros cumulativos pagos entre dois períodos +CUMPRINC = PGTOCAPACUM ## Devolve o capital cumulativo pago a título de empréstimo entre dois períodos +DB = BD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas fixas +DDB = BDD ## Devolve a depreciação de um activo relativo a um período especificado utilizando o método das quotas degressivas duplas ou qualquer outro método especificado +DISC = DESC ## Devolve a taxa de desconto de um título +DOLLARDE = MOEDADEC ## Converte um preço em unidade monetária, expresso como uma fracção, num preço em unidade monetária, expresso como um número decimal +DOLLARFR = MOEDAFRA ## Converte um preço em unidade monetária, expresso como um número decimal, num preço em unidade monetária, expresso como uma fracção +DURATION = DURAÇÃO ## Devolve a duração anual de um título com pagamentos de juros periódicos +EFFECT = EFECTIVA ## Devolve a taxa de juros anual efectiva +FV = VF ## Devolve o valor futuro de um investimento +FVSCHEDULE = VFPLANO ## Devolve o valor futuro de um capital inicial após a aplicação de uma série de taxas de juro compostas +INTRATE = TAXAJUROS ## Devolve a taxa de juros de um título investido na totalidade +IPMT = IPGTO ## Devolve o pagamento dos juros de um investimento durante um determinado período +IRR = TIR ## Devolve a taxa de rentabilidade interna para uma série de fluxos monetários +ISPMT = É.PGTO ## Calcula os juros pagos durante um período específico de um investimento +MDURATION = MDURAÇÃO ## Devolve a duração modificada de Macauley de um título com um valor de paridade equivalente a € 100 +MIRR = MTIR ## Devolve a taxa interna de rentabilidade em que os fluxos monetários positivos e negativos são financiados com taxas diferentes +NOMINAL = NOMINAL ## Devolve a taxa de juros nominal anual +NPER = NPER ## Devolve o número de períodos de um investimento +NPV = VAL ## Devolve o valor actual líquido de um investimento com base numa série de fluxos monetários periódicos e numa taxa de desconto +ODDFPRICE = PREÇOPRIMINC ## Devolve o preço por € 100 do valor nominal de um título com um período inicial incompleto +ODDFYIELD = LUCROPRIMINC ## Devolve o lucro de um título com um período inicial incompleto +ODDLPRICE = PREÇOÚLTINC ## Devolve o preço por € 100 do valor nominal de um título com um período final incompleto +ODDLYIELD = LUCROÚLTINC ## Devolve o lucro de um título com um período final incompleto +PMT = PGTO ## Devolve o pagamento periódico de uma anuidade +PPMT = PPGTO ## Devolve o pagamento sobre o capital de um investimento num determinado período +PRICE = PREÇO ## Devolve o preço por € 100 do valor nominal de um título que paga juros periódicos +PRICEDISC = PREÇODESC ## Devolve o preço por € 100 do valor nominal de um título descontado +PRICEMAT = PREÇOVENC ## Devolve o preço por € 100 do valor nominal de um título que paga juros no vencimento +PV = VA ## Devolve o valor actual de um investimento +RATE = TAXA ## Devolve a taxa de juros por período de uma anuidade +RECEIVED = RECEBER ## Devolve o montante recebido no vencimento de um título investido na totalidade +SLN = AMORT ## Devolve uma depreciação linear de um activo durante um período +SYD = AMORTD ## Devolve a depreciação por algarismos da soma dos anos de um activo durante um período especificado +TBILLEQ = OTN ## Devolve o lucro de um título equivalente a uma Obrigação do Tesouro +TBILLPRICE = OTNVALOR ## Devolve o preço por € 100 de valor nominal de uma Obrigação do Tesouro +TBILLYIELD = OTNLUCRO ## Devolve o lucro de uma Obrigação do Tesouro +VDB = BDV ## Devolve a depreciação de um activo relativo a um período específico ou parcial utilizando um método de quotas degressivas +XIRR = XTIR ## Devolve a taxa interna de rentabilidade de um plano de fluxos monetários que não seja necessariamente periódica +XNPV = XVAL ## Devolve o valor actual líquido de um plano de fluxos monetários que não seja necessariamente periódico +YIELD = LUCRO ## Devolve o lucro de um título que paga juros periódicos +YIELDDISC = LUCRODESC ## Devolve o lucro anual de um título emitido abaixo do valor nominal, por exemplo, uma Obrigação do Tesouro +YIELDMAT = LUCROVENC ## Devolve o lucro anual de um título que paga juros na data de vencimento + + +## +## Information functions Funções de informação +## +CELL = CÉL ## Devolve informações sobre a formatação, localização ou conteúdo de uma célula +ERROR.TYPE = TIPO.ERRO ## Devolve um número correspondente a um tipo de erro +INFO = INFORMAÇÃO ## Devolve informações sobre o ambiente de funcionamento actual +ISBLANK = É.CÉL.VAZIA ## Devolve VERDADEIRO se o valor estiver em branco +ISERR = É.ERROS ## Devolve VERDADEIRO se o valor for um valor de erro diferente de #N/D +ISERROR = É.ERRO ## Devolve VERDADEIRO se o valor for um valor de erro +ISEVEN = ÉPAR ## Devolve VERDADEIRO se o número for par +ISLOGICAL = É.LÓGICO ## Devolve VERDADEIRO se o valor for lógico +ISNA = É.NÃO.DISP ## Devolve VERDADEIRO se o valor for o valor de erro #N/D +ISNONTEXT = É.NÃO.TEXTO ## Devolve VERDADEIRO se o valor não for texto +ISNUMBER = É.NÚM ## Devolve VERDADEIRO se o valor for um número +ISODD = ÉÍMPAR ## Devolve VERDADEIRO se o número for ímpar +ISREF = É.REF ## Devolve VERDADEIRO se o valor for uma referência +ISTEXT = É.TEXTO ## Devolve VERDADEIRO se o valor for texto +N = N ## Devolve um valor convertido num número +NA = NÃO.DISP ## Devolve o valor de erro #N/D +TYPE = TIPO ## Devolve um número que indica o tipo de dados de um valor + + +## +## Logical functions Funções lógicas +## +AND = E ## Devolve VERDADEIRO se todos os respectivos argumentos corresponderem a VERDADEIRO +FALSE = FALSO ## Devolve o valor lógico FALSO +IF = SE ## Especifica um teste lógico a ser executado +IFERROR = SE.ERRO ## Devolve um valor definido pelo utilizador se ocorrer um erro na fórmula, e devolve o resultado da fórmula se não ocorrer nenhum erro +NOT = NÃO ## Inverte a lógica do respectivo argumento +OR = OU ## Devolve VERDADEIRO se qualquer argumento for VERDADEIRO +TRUE = VERDADEIRO ## Devolve o valor lógico VERDADEIRO + + +## +## Lookup and reference functions Funções de pesquisa e referência +## +ADDRESS = ENDEREÇO ## Devolve uma referência a uma única célula numa folha de cálculo como texto +AREAS = ÁREAS ## Devolve o número de áreas numa referência +CHOOSE = SELECCIONAR ## Selecciona um valor a partir de uma lista de valores +COLUMN = COL ## Devolve o número da coluna de uma referência +COLUMNS = COLS ## Devolve o número de colunas numa referência +HLOOKUP = PROCH ## Procura na linha superior de uma matriz e devolve o valor da célula indicada +HYPERLINK = HIPERLIGAÇÃO ## Cria um atalho ou hiperligação que abre um documento armazenado num servidor de rede, numa intranet ou na Internet +INDEX = ÍNDICE ## Utiliza um índice para escolher um valor de uma referência ou de uma matriz +INDIRECT = INDIRECTO ## Devolve uma referência indicada por um valor de texto +LOOKUP = PROC ## Procura valores num vector ou numa matriz +MATCH = CORRESP ## Procura valores numa referência ou numa matriz +OFFSET = DESLOCAMENTO ## Devolve o deslocamento de referência de uma determinada referência +ROW = LIN ## Devolve o número da linha de uma referência +ROWS = LINS ## Devolve o número de linhas numa referência +RTD = RTD ## Obtém dados em tempo real a partir de um programa que suporte automatização COM (automatização: modo de trabalhar com objectos de uma aplicação a partir de outra aplicação ou ferramenta de desenvolvimento. Anteriormente conhecida como automatização OLE, a automatização é uma norma da indústria de software e uma funcionalidade COM (Component Object Model).) +TRANSPOSE = TRANSPOR ## Devolve a transposição de uma matriz +VLOOKUP = PROCV ## Procura na primeira coluna de uma matriz e percorre a linha para devolver o valor de uma célula + + +## +## Math and trigonometry functions Funções matemáticas e trigonométricas +## +ABS = ABS ## Devolve o valor absoluto de um número +ACOS = ACOS ## Devolve o arco de co-seno de um número +ACOSH = ACOSH ## Devolve o co-seno hiperbólico inverso de um número +ASIN = ASEN ## Devolve o arco de seno de um número +ASINH = ASENH ## Devolve o seno hiperbólico inverso de um número +ATAN = ATAN ## Devolve o arco de tangente de um número +ATAN2 = ATAN2 ## Devolve o arco de tangente das coordenadas x e y +ATANH = ATANH ## Devolve a tangente hiperbólica inversa de um número +CEILING = ARRED.EXCESSO ## Arredonda um número para o número inteiro mais próximo ou para o múltiplo de significância mais próximo +COMBIN = COMBIN ## Devolve o número de combinações de um determinado número de objectos +COS = COS ## Devolve o co-seno de um número +COSH = COSH ## Devolve o co-seno hiperbólico de um número +DEGREES = GRAUS ## Converte radianos em graus +EVEN = PAR ## Arredonda um número por excesso para o número inteiro mais próximo +EXP = EXP ## Devolve e elevado à potência de um determinado número +FACT = FACTORIAL ## Devolve o factorial de um número +FACTDOUBLE = FACTDUPLO ## Devolve o factorial duplo de um número +FLOOR = ARRED.DEFEITO ## Arredonda um número por defeito até zero +GCD = MDC ## Devolve o maior divisor comum +INT = INT ## Arredonda um número por defeito para o número inteiro mais próximo +LCM = MMC ## Devolve o mínimo múltiplo comum +LN = LN ## Devolve o logaritmo natural de um número +LOG = LOG ## Devolve o logaritmo de um número com uma base especificada +LOG10 = LOG10 ## Devolve o logaritmo de base 10 de um número +MDETERM = MATRIZ.DETERM ## Devolve o determinante matricial de uma matriz +MINVERSE = MATRIZ.INVERSA ## Devolve o inverso matricial de uma matriz +MMULT = MATRIZ.MULT ## Devolve o produto matricial de duas matrizes +MOD = RESTO ## Devolve o resto da divisão +MROUND = MARRED ## Devolve um número arredondado para o múltiplo pretendido +MULTINOMIAL = POLINOMIAL ## Devolve o polinomial de um conjunto de números +ODD = ÍMPAR ## Arredonda por excesso um número para o número inteiro ímpar mais próximo +PI = PI ## Devolve o valor de pi +POWER = POTÊNCIA ## Devolve o resultado de um número elevado a uma potência +PRODUCT = PRODUTO ## Multiplica os respectivos argumentos +QUOTIENT = QUOCIENTE ## Devolve a parte inteira de uma divisão +RADIANS = RADIANOS ## Converte graus em radianos +RAND = ALEATÓRIO ## Devolve um número aleatório entre 0 e 1 +RANDBETWEEN = ALEATÓRIOENTRE ## Devolve um número aleatório entre os números especificados +ROMAN = ROMANO ## Converte um número árabe em romano, como texto +ROUND = ARRED ## Arredonda um número para um número de dígitos especificado +ROUNDDOWN = ARRED.PARA.BAIXO ## Arredonda um número por defeito até zero +ROUNDUP = ARRED.PARA.CIMA ## Arredonda um número por excesso, afastando-o de zero +SERIESSUM = SOMASÉRIE ## Devolve a soma de uma série de potências baseada na fórmula +SIGN = SINAL ## Devolve o sinal de um número +SIN = SEN ## Devolve o seno de um determinado ângulo +SINH = SENH ## Devolve o seno hiperbólico de um número +SQRT = RAIZQ ## Devolve uma raiz quadrada positiva +SQRTPI = RAIZPI ## Devolve a raiz quadrada de (núm * pi) +SUBTOTAL = SUBTOTAL ## Devolve um subtotal numa lista ou base de dados +SUM = SOMA ## Adiciona os respectivos argumentos +SUMIF = SOMA.SE ## Adiciona as células especificadas por um determinado critério +SUMIFS = SOMA.SE.S ## Adiciona as células num intervalo que cumpre vários critérios +SUMPRODUCT = SOMARPRODUTO ## Devolve a soma dos produtos de componentes de matrizes correspondentes +SUMSQ = SOMARQUAD ## Devolve a soma dos quadrados dos argumentos +SUMX2MY2 = SOMAX2DY2 ## Devolve a soma da diferença dos quadrados dos valores correspondentes em duas matrizes +SUMX2PY2 = SOMAX2SY2 ## Devolve a soma da soma dos quadrados dos valores correspondentes em duas matrizes +SUMXMY2 = SOMAXMY2 ## Devolve a soma dos quadrados da diferença dos valores correspondentes em duas matrizes +TAN = TAN ## Devolve a tangente de um número +TANH = TANH ## Devolve a tangente hiperbólica de um número +TRUNC = TRUNCAR ## Trunca um número para um número inteiro + + +## +## Statistical functions Funções estatísticas +## +AVEDEV = DESV.MÉDIO ## Devolve a média aritmética dos desvios absolutos à média dos pontos de dados +AVERAGE = MÉDIA ## Devolve a média dos respectivos argumentos +AVERAGEA = MÉDIAA ## Devolve uma média dos respectivos argumentos, incluindo números, texto e valores lógicos +AVERAGEIF = MÉDIA.SE ## Devolve a média aritmética de todas as células num intervalo que cumprem determinado critério +AVERAGEIFS = MÉDIA.SE.S ## Devolve a média aritmética de todas as células que cumprem múltiplos critérios +BETADIST = DISTBETA ## Devolve a função de distribuição cumulativa beta +BETAINV = BETA.ACUM.INV ## Devolve o inverso da função de distribuição cumulativa relativamente a uma distribuição beta específica +BINOMDIST = DISTRBINOM ## Devolve a probabilidade de distribuição binomial de termo individual +CHIDIST = DIST.CHI ## Devolve a probabilidade unicaudal da distribuição qui-quadrada +CHIINV = INV.CHI ## Devolve o inverso da probabilidade unicaudal da distribuição qui-quadrada +CHITEST = TESTE.CHI ## Devolve o teste para independência +CONFIDENCE = INT.CONFIANÇA ## Devolve o intervalo de confiança correspondente a uma média de população +CORREL = CORREL ## Devolve o coeficiente de correlação entre dois conjuntos de dados +COUNT = CONTAR ## Conta os números que existem na lista de argumentos +COUNTA = CONTAR.VAL ## Conta os valores que existem na lista de argumentos +COUNTBLANK = CONTAR.VAZIO ## Conta o número de células em branco num intervalo +COUNTIF = CONTAR.SE ## Calcula o número de células num intervalo que corresponde aos critérios determinados +COUNTIFS = CONTAR.SE.S ## Conta o número de células num intervalo que cumprem múltiplos critérios +COVAR = COVAR ## Devolve a covariância, que é a média dos produtos de desvios de pares +CRITBINOM = CRIT.BINOM ## Devolve o menor valor em que a distribuição binomial cumulativa é inferior ou igual a um valor de critério +DEVSQ = DESVQ ## Devolve a soma dos quadrados dos desvios +EXPONDIST = DISTEXPON ## Devolve a distribuição exponencial +FDIST = DISTF ## Devolve a distribuição da probabilidade F +FINV = INVF ## Devolve o inverso da distribuição da probabilidade F +FISHER = FISHER ## Devolve a transformação Fisher +FISHERINV = FISHERINV ## Devolve o inverso da transformação Fisher +FORECAST = PREVISÃO ## Devolve um valor ao longo de uma tendência linear +FREQUENCY = FREQUÊNCIA ## Devolve uma distribuição de frequência como uma matriz vertical +FTEST = TESTEF ## Devolve o resultado de um teste F +GAMMADIST = DISTGAMA ## Devolve a distribuição gama +GAMMAINV = INVGAMA ## Devolve o inverso da distribuição gama cumulativa +GAMMALN = LNGAMA ## Devolve o logaritmo natural da função gama, Γ(x) +GEOMEAN = MÉDIA.GEOMÉTRICA ## Devolve a média geométrica +GROWTH = CRESCIMENTO ## Devolve valores ao longo de uma tendência exponencial +HARMEAN = MÉDIA.HARMÓNICA ## Devolve a média harmónica +HYPGEOMDIST = DIST.HIPERGEOM ## Devolve a distribuição hipergeométrica +INTERCEPT = INTERCEPTAR ## Devolve a intercepção da linha de regressão linear +KURT = CURT ## Devolve a curtose de um conjunto de dados +LARGE = MAIOR ## Devolve o maior valor k-ésimo de um conjunto de dados +LINEST = PROJ.LIN ## Devolve os parâmetros de uma tendência linear +LOGEST = PROJ.LOG ## Devolve os parâmetros de uma tendência exponencial +LOGINV = INVLOG ## Devolve o inverso da distribuição normal logarítmica +LOGNORMDIST = DIST.NORMALLOG ## Devolve a distribuição normal logarítmica cumulativa +MAX = MÁXIMO ## Devolve o valor máximo numa lista de argumentos +MAXA = MÁXIMOA ## Devolve o valor máximo numa lista de argumentos, incluindo números, texto e valores lógicos +MEDIAN = MED ## Devolve a mediana dos números indicados +MIN = MÍNIMO ## Devolve o valor mínimo numa lista de argumentos +MINA = MÍNIMOA ## Devolve o valor mínimo numa lista de argumentos, incluindo números, texto e valores lógicos +MODE = MODA ## Devolve o valor mais comum num conjunto de dados +NEGBINOMDIST = DIST.BIN.NEG ## Devolve a distribuição binominal negativa +NORMDIST = DIST.NORM ## Devolve a distribuição cumulativa normal +NORMINV = INV.NORM ## Devolve o inverso da distribuição cumulativa normal +NORMSDIST = DIST.NORMP ## Devolve a distribuição cumulativa normal padrão +NORMSINV = INV.NORMP ## Devolve o inverso da distribuição cumulativa normal padrão +PEARSON = PEARSON ## Devolve o coeficiente de correlação momento/produto de Pearson +PERCENTILE = PERCENTIL ## Devolve o k-ésimo percentil de valores num intervalo +PERCENTRANK = ORDEM.PERCENTUAL ## Devolve a ordem percentual de um valor num conjunto de dados +PERMUT = PERMUTAR ## Devolve o número de permutações de um determinado número de objectos +POISSON = POISSON ## Devolve a distribuição de Poisson +PROB = PROB ## Devolve a probabilidade dos valores num intervalo se encontrarem entre dois limites +QUARTILE = QUARTIL ## Devolve o quartil de um conjunto de dados +RANK = ORDEM ## Devolve a ordem de um número numa lista numérica +RSQ = RQUAD ## Devolve o quadrado do coeficiente de correlação momento/produto de Pearson +SKEW = DISTORÇÃO ## Devolve a distorção de uma distribuição +SLOPE = DECLIVE ## Devolve o declive da linha de regressão linear +SMALL = MENOR ## Devolve o menor valor de k-ésimo de um conjunto de dados +STANDARDIZE = NORMALIZAR ## Devolve um valor normalizado +STDEV = DESVPAD ## Calcula o desvio-padrão com base numa amostra +STDEVA = DESVPADA ## Calcula o desvio-padrão com base numa amostra, incluindo números, texto e valores lógicos +STDEVP = DESVPADP ## Calcula o desvio-padrão com base na população total +STDEVPA = DESVPADPA ## Calcula o desvio-padrão com base na população total, incluindo números, texto e valores lógicos +STEYX = EPADYX ## Devolve o erro-padrão do valor de y previsto para cada x na regressão +TDIST = DISTT ## Devolve a distribuição t de Student +TINV = INVT ## Devolve o inverso da distribuição t de Student +TREND = TENDÊNCIA ## Devolve valores ao longo de uma tendência linear +TRIMMEAN = MÉDIA.INTERNA ## Devolve a média do interior de um conjunto de dados +TTEST = TESTET ## Devolve a probabilidade associada ao teste t de Student +VAR = VAR ## Calcula a variância com base numa amostra +VARA = VARA ## Calcula a variância com base numa amostra, incluindo números, texto e valores lógicos +VARP = VARP ## Calcula a variância com base na população total +VARPA = VARPA ## Calcula a variância com base na população total, incluindo números, texto e valores lógicos +WEIBULL = WEIBULL ## Devolve a distribuição Weibull +ZTEST = TESTEZ ## Devolve o valor de probabilidade unicaudal de um teste-z + + +## +## Text functions Funções de texto +## +ASC = ASC ## Altera letras ou katakana de largura total (byte duplo) numa cadeia de caracteres para caracteres de largura média (byte único) +BAHTTEXT = TEXTO.BAHT ## Converte um número em texto, utilizando o formato monetário ß (baht) +CHAR = CARÁCT ## Devolve o carácter especificado pelo número de código +CLEAN = LIMPAR ## Remove do texto todos os caracteres não imprimíveis +CODE = CÓDIGO ## Devolve um código numérico correspondente ao primeiro carácter numa cadeia de texto +CONCATENATE = CONCATENAR ## Agrupa vários itens de texto num único item de texto +DOLLAR = MOEDA ## Converte um número em texto, utilizando o formato monetário € (Euro) +EXACT = EXACTO ## Verifica se dois valores de texto são idênticos +FIND = LOCALIZAR ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas) +FINDB = LOCALIZARB ## Localiza um valor de texto dentro de outro (sensível às maiúsculas e minúsculas) +FIXED = FIXA ## Formata um número como texto com um número fixo de decimais +JIS = JIS ## Altera letras ou katakana de largura média (byte único) numa cadeia de caracteres para caracteres de largura total (byte duplo) +LEFT = ESQUERDA ## Devolve os caracteres mais à esquerda de um valor de texto +LEFTB = ESQUERDAB ## Devolve os caracteres mais à esquerda de um valor de texto +LEN = NÚM.CARACT ## Devolve o número de caracteres de uma cadeia de texto +LENB = NÚM.CARACTB ## Devolve o número de caracteres de uma cadeia de texto +LOWER = MINÚSCULAS ## Converte o texto em minúsculas +MID = SEG.TEXTO ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada +MIDB = SEG.TEXTOB ## Devolve um número específico de caracteres de uma cadeia de texto, a partir da posição especificada +PHONETIC = FONÉTICA ## Retira os caracteres fonéticos (furigana) de uma cadeia de texto +PROPER = INICIAL.MAIÚSCULA ## Coloca em maiúsculas a primeira letra de cada palavra de um valor de texto +REPLACE = SUBSTITUIR ## Substitui caracteres no texto +REPLACEB = SUBSTITUIRB ## Substitui caracteres no texto +REPT = REPETIR ## Repete texto um determinado número de vezes +RIGHT = DIREITA ## Devolve os caracteres mais à direita de um valor de texto +RIGHTB = DIREITAB ## Devolve os caracteres mais à direita de um valor de texto +SEARCH = PROCURAR ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas) +SEARCHB = PROCURARB ## Localiza um valor de texto dentro de outro (não sensível a maiúsculas e minúsculas) +SUBSTITUTE = SUBST ## Substitui texto novo por texto antigo numa cadeia de texto +T = T ## Converte os respectivos argumentos em texto +TEXT = TEXTO ## Formata um número e converte-o em texto +TRIM = COMPACTAR ## Remove espaços do texto +UPPER = MAIÚSCULAS ## Converte texto em maiúsculas +VALUE = VALOR ## Converte um argumento de texto num número diff --git a/assets/excel/PHPExcel/locale/ru/config b/assets/excel/PHPExcel/locale/ru/config new file mode 100644 index 0000000..56e45bf --- /dev/null +++ b/assets/excel/PHPExcel/locale/ru/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = р + + +## +## Excel Error Codes (For future use) +## +NULL = #ПУСТО! +DIV0 = #ДЕЛ/0! +VALUE = #ЗНАЧ! +REF = #ССЫЛ! +NAME = #ИМЯ? +NUM = #ЧИСЛО! +NA = #Н/Д diff --git a/assets/excel/PHPExcel/locale/ru/functions b/assets/excel/PHPExcel/locale/ru/functions new file mode 100644 index 0000000..5ff6d4f --- /dev/null +++ b/assets/excel/PHPExcel/locale/ru/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from information provided by web-junior (http://www.web-junior.net/) +## +## + + +## +## Add-in and Automation functions Функции надстроек и автоматизации +## +GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы. + + +## +## Cube functions Функции Куб +## +CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации. +CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе. +CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента. +CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов. +CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel. +CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества. +CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба. + + +## +## Database functions Функции для работы с базами данных +## +DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных. +DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных. +DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных. +DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию. +DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных. +DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных. +DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию. +DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных. +DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных +DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию. +DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных +DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных + + +## +## Date and time functions Функции даты и времени +## +DATE = ДАТА ## Возвращает заданную дату в числовом формате. +DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат. +DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца. +DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года. +EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты. +EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев. +HOUR = ЧАС ## Преобразует дату в числовом формате в часы. +MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты. +MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы. +NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами. +NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате. +SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды. +TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате. +TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат. +TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате. +WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели. +WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата. +WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней. +YEAR = ГОД ## Преобразует дату в числовом формате в год. +YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами. + + +## +## Engineering functions Инженерные функции +## +BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x). +BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x). +BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x). +BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x). +BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное. +BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное. +BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное. +COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число. +CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую. +DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное. +DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное. +DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное. +DELTA = ДЕЛЬТА ## Проверяет равенство двух значений. +ERF = ФОШ ## Возвращает функцию ошибки. +ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки. +GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения. +HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное. +HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное. +HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное. +IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа. +IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа. +IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах. +IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число. +IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа. +IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел. +IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа. +IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа. +IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа. +IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа. +IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень. +IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел. +IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа. +IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа. +IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа. +IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел. +IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел. +OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное. +OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное. +OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное. + + +## +## Financial functions Финансовые функции +## +ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов. +ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения. +AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации. +AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода. +COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения. +COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения. +COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона. +COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения. +COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу. +COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения. +CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами. +CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами. +DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка. +DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод. +DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг. +DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом. +DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби. +DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам. +EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки. +FV = БС ## Возвращает будущую стоимость инвестиции. +FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов. +INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг. +IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период. +IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств. +ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции. +MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей. +MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки. +NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку. +NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада. +NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования. +ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом. +ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом. +ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом. +ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом. +PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета. +PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период. +PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов. +PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка. +PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения. +PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции. +RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период. +RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг. +SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период. +SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел. +TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку. +TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека. +TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку. +VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса. +XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер. +XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими. +YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов. +YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки). +YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения. + + +## +## Information functions Информационные функции +## +CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки. +ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки. +INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде. +ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку. +ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д. +ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки. +ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом. +ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение. +ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д. +ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом. +ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число. +ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом. +ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой. +ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом. +N = Ч ## Возвращает значение, преобразованное в число. +NA = НД ## Возвращает значение ошибки #Н/Д. +TYPE = ТИП ## Возвращает число, обозначающее тип данных значения. + + +## +## Logical functions Логические функции +## +AND = И ## Renvoie VRAI si tous ses arguments sont VRAI. +FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ. +IF = ЕСЛИ ## Выполняет проверку условия. +IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления. +NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное. +OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. +TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА. + + +## +## Lookup and reference functions Функции ссылки и поиска +## +ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста. +AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке. +CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу. +COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка. +COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке. +HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки +HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете. +INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива. +INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением. +LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве. +MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве. +OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки. +ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой. +ROWS = ЧСТРОК ## Возвращает количество строк в ссылке. +RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).). +TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив. +VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце. + + +## +## Math and trigonometry functions Математические и тригонометрические функции +## +ABS = ABS ## Возвращает модуль (абсолютную величину) числа. +ACOS = ACOS ## Возвращает арккосинус числа. +ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа. +ASIN = ASIN ## Возвращает арксинус числа. +ASINH = ASINH ## Возвращает гиперболический арксинус числа. +ATAN = ATAN ## Возвращает арктангенс числа. +ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y. +ATANH = ATANH ## Возвращает гиперболический арктангенс числа. +CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению. +COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов. +COS = COS ## Возвращает косинус числа. +COSH = COSH ## Возвращает гиперболический косинус числа. +DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы. +EVEN = ЧЁТН ## Округляет число до ближайшего четного целого. +EXP = EXP ## Возвращает число e, возведенное в указанную степень. +FACT = ФАКТР ## Возвращает факториал числа. +FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа. +FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. +GCD = НОД ## Возвращает наибольший общий делитель. +INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого. +LCM = НОК ## Возвращает наименьшее общее кратное. +LN = LN ## Возвращает натуральный логарифм числа. +LOG = LOG ## Возвращает логарифм числа по заданному основанию. +LOG10 = LOG10 ## Возвращает десятичный логарифм числа. +MDETERM = МОПРЕД ## Возвращает определитель матрицы массива. +MINVERSE = МОБР ## Возвращает обратную матрицу массива. +MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов. +MOD = ОСТАТ ## Возвращает остаток от деления. +MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью. +MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел. +ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого. +PI = ПИ ## Возвращает число пи. +POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень. +PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов. +QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении. +RADIANS = РАДИАНЫ ## Преобразует градусы в радианы. +RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1. +RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами. +ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста. +ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов. +ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. +ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения. +SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле. +SIGN = ЗНАК ## Возвращает знак числа. +SIN = SIN ## Возвращает синус заданного угла. +SINH = SINH ## Возвращает гиперболический синус числа. +SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня. +SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ). +SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных. +SUM = СУММ ## Суммирует аргументы. +SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию. +SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям. +SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов. +SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов. +SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах. +SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов. +SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах. +TAN = TAN ## Возвращает тангенс числа. +TANH = TANH ## Возвращает гиперболический тангенс числа. +TRUNC = ОТБР ## Отбрасывает дробную часть числа. + + +## +## Statistical functions Статистические функции +## +AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего. +AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов. +AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения. +AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию. +AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям. +BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения. +BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения. +BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения. +CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат. +CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат. +CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость. +CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности. +CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных. +COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов. +COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов. +COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне +COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию +COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям. +COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений +CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию. +DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений. +EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение. +FDIST = FРАСП ## Возвращает F-распределение вероятности. +FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности. +FISHER = ФИШЕР ## Возвращает преобразование Фишера. +FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера. +FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда. +FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива. +FTEST = ФТЕСТ ## Возвращает результат F-теста. +GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение. +GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение. +GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x). +GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое. +GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом. +HARMEAN = СРГАРМ ## Возвращает среднее гармоническое. +HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение. +INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии. +KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных. +LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных. +LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда. +LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда. +LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение. +LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение. +MAX = МАКС ## Возвращает наибольшее значение в списке аргументов. +MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения. +MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел. +MIN = МИН ## Возвращает наименьшее значение в списке аргументов. +MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения. +MODE = МОДА ## Возвращает значение моды множества данных. +NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение. +NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения. +NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение. +NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение. +NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения. +PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона. +PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона. +PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных. +PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов. +POISSON = ПУАССОН ## Возвращает распределение Пуассона. +PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов. +QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных. +RANK = РАНГ ## Возвращает ранг числа в списке чисел. +RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона. +SKEW = СКОС ## Возвращает асимметрию распределения. +SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии. +SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных. +STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение. +STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке. +STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения. +STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности. +STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения. +STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии. +TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента. +TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента. +TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом. +TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных. +TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента. +VAR = ДИСП ## Оценивает дисперсию по выборке. +VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения. +VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности. +VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения. +WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла. +ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста. + + +## +## Text functions Текстовые функции +## +ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые). +BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ). +CHAR = СИМВОЛ ## Возвращает знак с заданным кодом. +CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста. +CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке. +CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один. +DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат. +EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений. +FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). +FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). +FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков. +JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые). +LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения. +LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения. +LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке. +LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке. +LOWER = СТРОЧН ## Преобразует все буквы текста в строчные. +MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. +MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. +PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки. +PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную. +REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте. +REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте. +REPT = ПОВТОР ## Повторяет текст заданное число раз. +RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки. +RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки. +SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра). +SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра). +SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым. +T = Т ## Преобразует аргументы в текст. +TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст. +TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы. +UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные. +VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число. diff --git a/assets/excel/PHPExcel/locale/sv/config b/assets/excel/PHPExcel/locale/sv/config new file mode 100644 index 0000000..726f771 --- /dev/null +++ b/assets/excel/PHPExcel/locale/sv/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = kr + + +## +## Excel Error Codes (For future use) +## +NULL = #Skärning! +DIV0 = #Division/0! +VALUE = #Värdefel! +REF = #Referens! +NAME = #Namn? +NUM = #Ogiltigt! +NA = #Saknas! diff --git a/assets/excel/PHPExcel/locale/sv/functions b/assets/excel/PHPExcel/locale/sv/functions new file mode 100644 index 0000000..9af37d8 --- /dev/null +++ b/assets/excel/PHPExcel/locale/sv/functions @@ -0,0 +1,408 @@ +## +## Add-in and Automation functions Tilläggs- och automatiseringsfunktioner +## +GETPIVOTDATA = HÄMTA.PIVOTDATA ## Returnerar data som lagrats i en pivottabellrapport + + +## +## Cube functions Kubfunktioner +## +CUBEKPIMEMBER = KUBKPIMEDLEM ## Returnerar namn, egenskap och mått för en KPI och visar namnet och egenskapen i cellen. En KPI, eller prestandaindikator, är ett kvantifierbart mått, t.ex. månatlig bruttovinst eller personalomsättning per kvartal, som används för att analysera ett företags resultat. +CUBEMEMBER = KUBMEDLEM ## Returnerar en medlem eller ett par i en kubhierarki. Används för att verifiera att medlemmen eller paret finns i kuben. +CUBEMEMBERPROPERTY = KUBMEDLEMSEGENSKAP ## Returnerar värdet för en medlemsegenskap i kuben. Används för att verifiera att ett medlemsnamn finns i kuben, samt för att returnera den angivna egenskapen för medlemmen. +CUBERANKEDMEMBER = KUBRANGORDNADMEDLEM ## Returnerar den n:te, eller rangordnade, medlemmen i en uppsättning. Används för att returnera ett eller flera element i en uppsättning, till exempelvis den bästa försäljaren eller de tio bästa eleverna. +CUBESET = KUBINSTÄLLNING ## Definierar en beräknad uppsättning medlemmar eller par genom att skicka ett bestämt uttryck till kuben på servern, som skapar uppsättningen och sedan returnerar den till Microsoft Office Excel. +CUBESETCOUNT = KUBINSTÄLLNINGANTAL ## Returnerar antalet objekt i en uppsättning. +CUBEVALUE = KUBVÄRDE ## Returnerar ett mängdvärde från en kub. + + +## +## Database functions Databasfunktioner +## +DAVERAGE = DMEDEL ## Returnerar medelvärdet av databasposterna +DCOUNT = DANTAL ## Räknar antalet celler som innehåller tal i en databas +DCOUNTA = DANTALV ## Räknar ifyllda celler i en databas +DGET = DHÄMTA ## Hämtar en enstaka post från en databas som uppfyller de angivna villkoren +DMAX = DMAX ## Returnerar det största värdet från databasposterna +DMIN = DMIN ## Returnerar det minsta värdet från databasposterna +DPRODUCT = DPRODUKT ## Multiplicerar värdena i ett visst fält i poster som uppfyller villkoret +DSTDEV = DSTDAV ## Uppskattar standardavvikelsen baserat på ett urval av databasposterna +DSTDEVP = DSTDAVP ## Beräknar standardavvikelsen utifrån hela populationen av valda databasposter +DSUM = DSUMMA ## Summerar talen i kolumnfält i databasposter som uppfyller villkoret +DVAR = DVARIANS ## Uppskattar variansen baserat på ett urval av databasposterna +DVARP = DVARIANSP ## Beräknar variansen utifrån hela populationen av valda databasposter + + +## +## Date and time functions Tid- och datumfunktioner +## +DATE = DATUM ## Returnerar ett serienummer för ett visst datum +DATEVALUE = DATUMVÄRDE ## Konverterar ett datum i textformat till ett serienummer +DAY = DAG ## Konverterar ett serienummer till dag i månaden +DAYS360 = DAGAR360 ## Beräknar antalet dagar mellan två datum baserat på ett 360-dagarsår +EDATE = EDATUM ## Returnerar serienumret för ett datum som infaller ett visst antal månader före eller efter startdatumet +EOMONTH = SLUTMÅNAD ## Returnerar serienumret för sista dagen i månaden ett visst antal månader tidigare eller senare +HOUR = TIMME ## Konverterar ett serienummer till en timme +MINUTE = MINUT ## Konverterar ett serienummer till en minut +MONTH = MÅNAD ## Konverterar ett serienummer till en månad +NETWORKDAYS = NETTOARBETSDAGAR ## Returnerar antalet hela arbetsdagar mellan två datum +NOW = NU ## Returnerar serienumret för dagens datum och aktuell tid +SECOND = SEKUND ## Konverterar ett serienummer till en sekund +TIME = KLOCKSLAG ## Returnerar serienumret för en viss tid +TIMEVALUE = TIDVÄRDE ## Konverterar en tid i textformat till ett serienummer +TODAY = IDAG ## Returnerar serienumret för dagens datum +WEEKDAY = VECKODAG ## Konverterar ett serienummer till en dag i veckan +WEEKNUM = VECKONR ## Konverterar ett serienummer till ett veckonummer +WORKDAY = ARBETSDAGAR ## Returnerar serienumret för ett datum ett visst antal arbetsdagar tidigare eller senare +YEAR = ÅR ## Konverterar ett serienummer till ett år +YEARFRAC = ÅRDEL ## Returnerar en del av ett år som representerar antalet hela dagar mellan start- och slutdatum + + +## +## Engineering functions Tekniska funktioner +## +BESSELI = BESSELI ## Returnerar den modifierade Bessel-funktionen In(x) +BESSELJ = BESSELJ ## Returnerar Bessel-funktionen Jn(x) +BESSELK = BESSELK ## Returnerar den modifierade Bessel-funktionen Kn(x) +BESSELY = BESSELY ## Returnerar Bessel-funktionen Yn(x) +BIN2DEC = BIN.TILL.DEC ## Omvandlar ett binärt tal till decimalt +BIN2HEX = BIN.TILL.HEX ## Omvandlar ett binärt tal till hexadecimalt +BIN2OCT = BIN.TILL.OKT ## Omvandlar ett binärt tal till oktalt +COMPLEX = KOMPLEX ## Omvandlar reella och imaginära koefficienter till ett komplext tal +CONVERT = KONVERTERA ## Omvandlar ett tal från ett måttsystem till ett annat +DEC2BIN = DEC.TILL.BIN ## Omvandlar ett decimalt tal till binärt +DEC2HEX = DEC.TILL.HEX ## Omvandlar ett decimalt tal till hexadecimalt +DEC2OCT = DEC.TILL.OKT ## Omvandlar ett decimalt tal till oktalt +DELTA = DELTA ## Testar om två värden är lika +ERF = FELF ## Returnerar felfunktionen +ERFC = FELFK ## Returnerar den komplementära felfunktionen +GESTEP = SLSTEG ## Testar om ett tal är större än ett tröskelvärde +HEX2BIN = HEX.TILL.BIN ## Omvandlar ett hexadecimalt tal till binärt +HEX2DEC = HEX.TILL.DEC ## Omvandlar ett hexadecimalt tal till decimalt +HEX2OCT = HEX.TILL.OKT ## Omvandlar ett hexadecimalt tal till oktalt +IMABS = IMABS ## Returnerar absolutvärdet (modulus) för ett komplext tal +IMAGINARY = IMAGINÄR ## Returnerar den imaginära koefficienten för ett komplext tal +IMARGUMENT = IMARGUMENT ## Returnerar det komplexa talets argument, en vinkel uttryckt i radianer +IMCONJUGATE = IMKONJUGAT ## Returnerar det komplexa talets konjugat +IMCOS = IMCOS ## Returnerar cosinus för ett komplext tal +IMDIV = IMDIV ## Returnerar kvoten för två komplexa tal +IMEXP = IMEUPPHÖJT ## Returnerar exponenten för ett komplext tal +IMLN = IMLN ## Returnerar den naturliga logaritmen för ett komplext tal +IMLOG10 = IMLOG10 ## Returnerar 10-logaritmen för ett komplext tal +IMLOG2 = IMLOG2 ## Returnerar 2-logaritmen för ett komplext tal +IMPOWER = IMUPPHÖJT ## Returnerar ett komplext tal upphöjt till en exponent +IMPRODUCT = IMPRODUKT ## Returnerar produkten av komplexa tal +IMREAL = IMREAL ## Returnerar den reella koefficienten för ett komplext tal +IMSIN = IMSIN ## Returnerar sinus för ett komplext tal +IMSQRT = IMROT ## Returnerar kvadratroten av ett komplext tal +IMSUB = IMDIFF ## Returnerar differensen mellan två komplexa tal +IMSUM = IMSUM ## Returnerar summan av komplexa tal +OCT2BIN = OKT.TILL.BIN ## Omvandlar ett oktalt tal till binärt +OCT2DEC = OKT.TILL.DEC ## Omvandlar ett oktalt tal till decimalt +OCT2HEX = OKT.TILL.HEX ## Omvandlar ett oktalt tal till hexadecimalt + + +## +## Financial functions Finansiella funktioner +## +ACCRINT = UPPLRÄNTA ## Returnerar den upplupna räntan för värdepapper med periodisk ränta +ACCRINTM = UPPLOBLRÄNTA ## Returnerar den upplupna räntan för ett värdepapper som ger avkastning på förfallodagen +AMORDEGRC = AMORDEGRC ## Returnerar avskrivningen för varje redovisningsperiod med hjälp av en avskrivningskoefficient +AMORLINC = AMORLINC ## Returnerar avskrivningen för varje redovisningsperiod +COUPDAYBS = KUPDAGBB ## Returnerar antal dagar från början av kupongperioden till likviddagen +COUPDAYS = KUPDAGARS ## Returnerar antalet dagar i kupongperioden som innehåller betalningsdatumet +COUPDAYSNC = KUPDAGNK ## Returnerar antalet dagar från betalningsdatumet till nästa kupongdatum +COUPNCD = KUPNKD ## Returnerar nästa kupongdatum efter likviddagen +COUPNUM = KUPANT ## Returnerar kuponger som förfaller till betalning mellan likviddagen och förfallodagen +COUPPCD = KUPFKD ## Returnerar föregående kupongdatum före likviddagen +CUMIPMT = KUMRÄNTA ## Returnerar den ackumulerade räntan som betalats mellan två perioder +CUMPRINC = KUMPRIS ## Returnerar det ackumulerade kapitalbeloppet som betalats på ett lån mellan två perioder +DB = DB ## Returnerar avskrivningen för en tillgång under en angiven tid enligt metoden för fast degressiv avskrivning +DDB = DEGAVSKR ## Returnerar en tillgångs värdeminskning under en viss period med hjälp av dubbel degressiv avskrivning eller någon annan metod som du anger +DISC = DISK ## Returnerar diskonteringsräntan för ett värdepapper +DOLLARDE = DECTAL ## Omvandlar ett pris uttryckt som ett bråk till ett decimaltal +DOLLARFR = BRÅK ## Omvandlar ett pris i kronor uttryckt som ett decimaltal till ett bråk +DURATION = LÖPTID ## Returnerar den årliga löptiden för en säkerhet med periodiska räntebetalningar +EFFECT = EFFRÄNTA ## Returnerar den årliga effektiva räntesatsen +FV = SLUTVÄRDE ## Returnerar det framtida värdet på en investering +FVSCHEDULE = FÖRRÄNTNING ## Returnerar det framtida värdet av ett begynnelsekapital beräknat på olika räntenivåer +INTRATE = ÅRSRÄNTA ## Returnerar räntesatsen för ett betalt värdepapper +IPMT = RBETALNING ## Returnerar räntedelen av en betalning för en given period +IRR = IR ## Returnerar internräntan för en serie betalningar +ISPMT = RALÅN ## Beräknar räntan som har betalats under en specifik betalningsperiod +MDURATION = MLÖPTID ## Returnerar den modifierade Macauley-löptiden för ett värdepapper med det antagna nominella värdet 100 kr +MIRR = MODIR ## Returnerar internräntan där positiva och negativa betalningar finansieras med olika räntor +NOMINAL = NOMRÄNTA ## Returnerar den årliga nominella räntesatsen +NPER = PERIODER ## Returnerar antalet perioder för en investering +NPV = NETNUVÄRDE ## Returnerar nuvärdet av en serie periodiska betalningar vid en given diskonteringsränta +ODDFPRICE = UDDAFPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda första period +ODDFYIELD = UDDAFAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda första period +ODDLPRICE = UDDASPRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper med en udda sista period +ODDLYIELD = UDDASAVKASTNING ## Returnerar avkastningen för en säkerhet med en udda sista period +PMT = BETALNING ## Returnerar den periodiska betalningen för en annuitet +PPMT = AMORT ## Returnerar amorteringsdelen av en annuitetsbetalning för en given period +PRICE = PRIS ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger periodisk ränta +PRICEDISC = PRISDISK ## Returnerar priset per 100 kr nominellt värde för ett diskonterat värdepapper +PRICEMAT = PRISFÖRF ## Returnerar priset per 100 kr nominellt värde för ett värdepapper som ger ränta på förfallodagen +PV = PV ## Returnerar nuvärdet av en serie lika stora periodiska betalningar +RATE = RÄNTA ## Returnerar räntesatsen per period i en annuitet +RECEIVED = BELOPP ## Returnerar beloppet som utdelas på förfallodagen för ett betalat värdepapper +SLN = LINAVSKR ## Returnerar den linjära avskrivningen för en tillgång under en period +SYD = ÅRSAVSKR ## Returnerar den årliga avskrivningssumman för en tillgång under en angiven period +TBILLEQ = SSVXEKV ## Returnerar avkastningen motsvarande en obligation för en statsskuldväxel +TBILLPRICE = SSVXPRIS ## Returnerar priset per 100 kr nominellt värde för en statsskuldväxel +TBILLYIELD = SSVXRÄNTA ## Returnerar avkastningen för en statsskuldväxel +VDB = VDEGRAVSKR ## Returnerar avskrivningen för en tillgång under en angiven period (med degressiv avskrivning) +XIRR = XIRR ## Returnerar internräntan för en serie betalningar som inte nödvändigtvis är periodiska +XNPV = XNUVÄRDE ## Returnerar det nuvarande nettovärdet för en serie betalningar som inte nödvändigtvis är periodiska +YIELD = NOMAVK ## Returnerar avkastningen för ett värdepapper som ger periodisk ränta +YIELDDISC = NOMAVKDISK ## Returnerar den årliga avkastningen för diskonterade värdepapper, exempelvis en statsskuldväxel +YIELDMAT = NOMAVKFÖRF ## Returnerar den årliga avkastningen för ett värdepapper som ger ränta på förfallodagen + + +## +## Information functions Informationsfunktioner +## +CELL = CELL ## Returnerar information om formatering, plats och innehåll i en cell +ERROR.TYPE = FEL.TYP ## Returnerar ett tal som motsvarar ett felvärde +INFO = INFO ## Returnerar information om operativsystemet +ISBLANK = ÄRREF ## Returnerar SANT om värdet är tomt +ISERR = Ä ## Returnerar SANT om värdet är ett felvärde annat än #SAKNAS! +ISERROR = ÄRFEL ## Returnerar SANT om värdet är ett felvärde +ISEVEN = ÄRJÄMN ## Returnerar SANT om talet är jämnt +ISLOGICAL = ÄREJTEXT ## Returnerar SANT om värdet är ett logiskt värde +ISNA = ÄRLOGISK ## Returnerar SANT om värdet är felvärdet #SAKNAS! +ISNONTEXT = ÄRSAKNAD ## Returnerar SANT om värdet inte är text +ISNUMBER = ÄRTAL ## Returnerar SANT om värdet är ett tal +ISODD = ÄRUDDA ## Returnerar SANT om talet är udda +ISREF = ÄRTOM ## Returnerar SANT om värdet är en referens +ISTEXT = ÄRTEXT ## Returnerar SANT om värdet är text +N = N ## Returnerar ett värde omvandlat till ett tal +NA = SAKNAS ## Returnerar felvärdet #SAKNAS! +TYPE = VÄRDETYP ## Returnerar ett tal som anger värdets datatyp + + +## +## Logical functions Logiska funktioner +## +AND = OCH ## Returnerar SANT om alla argument är sanna +FALSE = FALSKT ## Returnerar det logiska värdet FALSKT +IF = OM ## Anger vilket logiskt test som ska utföras +IFERROR = OMFEL ## Returnerar ett värde som du anger om en formel utvärderar till ett fel; annars returneras resultatet av formeln +NOT = ICKE ## Inverterar logiken för argumenten +OR = ELLER ## Returnerar SANT om något argument är SANT +TRUE = SANT ## Returnerar det logiska värdet SANT + + +## +## Lookup and reference functions Sök- och referensfunktioner +## +ADDRESS = ADRESS ## Returnerar en referens som text till en enstaka cell i ett kalkylblad +AREAS = OMRÅDEN ## Returnerar antalet områden i en referens +CHOOSE = VÄLJ ## Väljer ett värde i en lista över värden +COLUMN = KOLUMN ## Returnerar kolumnnumret för en referens +COLUMNS = KOLUMNER ## Returnerar antalet kolumner i en referens +HLOOKUP = LETAKOLUMN ## Söker i den översta raden i en matris och returnerar värdet för angiven cell +HYPERLINK = HYPERLÄNK ## Skapar en genväg eller ett hopp till ett dokument i nätverket, i ett intranät eller på Internet +INDEX = INDEX ## Använder ett index för ett välja ett värde i en referens eller matris +INDIRECT = INDIREKT ## Returnerar en referens som anges av ett textvärde +LOOKUP = LETAUPP ## Letar upp värden i en vektor eller matris +MATCH = PASSA ## Letar upp värden i en referens eller matris +OFFSET = FÖRSKJUTNING ## Returnerar en referens förskjuten i förhållande till en given referens +ROW = RAD ## Returnerar radnumret för en referens +ROWS = RADER ## Returnerar antalet rader i en referens +RTD = RTD ## Hämtar realtidsdata från ett program som stöder COM-automation (Automation: Ett sätt att arbeta med ett programs objekt från ett annat program eller utvecklingsverktyg. Detta kallades tidigare för OLE Automation, och är en branschstandard och ingår i Component Object Model (COM).) +TRANSPOSE = TRANSPONERA ## Transponerar en matris +VLOOKUP = LETARAD ## Letar i den första kolumnen i en matris och flyttar över raden för att returnera värdet för en cell + + +## +## Math and trigonometry functions Matematiska och trigonometriska funktioner +## +ABS = ABS ## Returnerar absolutvärdet av ett tal +ACOS = ARCCOS ## Returnerar arcus cosinus för ett tal +ACOSH = ARCCOSH ## Returnerar inverterad hyperbolisk cosinus för ett tal +ASIN = ARCSIN ## Returnerar arcus cosinus för ett tal +ASINH = ARCSINH ## Returnerar hyperbolisk arcus sinus för ett tal +ATAN = ARCTAN ## Returnerar arcus tangens för ett tal +ATAN2 = ARCTAN2 ## Returnerar arcus tangens för en x- och en y- koordinat +ATANH = ARCTANH ## Returnerar hyperbolisk arcus tangens för ett tal +CEILING = RUNDA.UPP ## Avrundar ett tal till närmaste heltal eller närmaste signifikanta multipel +COMBIN = KOMBIN ## Returnerar antalet kombinationer för ett givet antal objekt +COS = COS ## Returnerar cosinus för ett tal +COSH = COSH ## Returnerar hyperboliskt cosinus för ett tal +DEGREES = GRADER ## Omvandlar radianer till grader +EVEN = JÄMN ## Avrundar ett tal uppåt till närmaste heltal +EXP = EXP ## Returnerar e upphöjt till ett givet tal +FACT = FAKULTET ## Returnerar fakulteten för ett tal +FACTDOUBLE = DUBBELFAKULTET ## Returnerar dubbelfakulteten för ett tal +FLOOR = RUNDA.NED ## Avrundar ett tal nedåt mot noll +GCD = SGD ## Returnerar den största gemensamma nämnaren +INT = HELTAL ## Avrundar ett tal nedåt till närmaste heltal +LCM = MGM ## Returnerar den minsta gemensamma multipeln +LN = LN ## Returnerar den naturliga logaritmen för ett tal +LOG = LOG ## Returnerar logaritmen för ett tal för en given bas +LOG10 = LOG10 ## Returnerar 10-logaritmen för ett tal +MDETERM = MDETERM ## Returnerar matrisen som är avgörandet av en matris +MINVERSE = MINVERT ## Returnerar matrisinversen av en matris +MMULT = MMULT ## Returnerar matrisprodukten av två matriser +MOD = REST ## Returnerar resten vid en division +MROUND = MAVRUNDA ## Returnerar ett tal avrundat till en given multipel +MULTINOMIAL = MULTINOMIAL ## Returnerar multinomialen för en uppsättning tal +ODD = UDDA ## Avrundar ett tal uppåt till närmaste udda heltal +PI = PI ## Returnerar värdet pi +POWER = UPPHÖJT.TILL ## Returnerar resultatet av ett tal upphöjt till en exponent +PRODUCT = PRODUKT ## Multiplicerar argumenten +QUOTIENT = KVOT ## Returnerar heltalsdelen av en division +RADIANS = RADIANER ## Omvandlar grader till radianer +RAND = SLUMP ## Returnerar ett slumptal mellan 0 och 1 +RANDBETWEEN = SLUMP.MELLAN ## Returnerar ett slumptal mellan de tal som du anger +ROMAN = ROMERSK ## Omvandlar vanliga (arabiska) siffror till romerska som text +ROUND = AVRUNDA ## Avrundar ett tal till ett angivet antal siffror +ROUNDDOWN = AVRUNDA.NEDÅT ## Avrundar ett tal nedåt mot noll +ROUNDUP = AVRUNDA.UPPÅT ## Avrundar ett tal uppåt, från noll +SERIESSUM = SERIESUMMA ## Returnerar summan av en potensserie baserat på formeln +SIGN = TECKEN ## Returnerar tecknet för ett tal +SIN = SIN ## Returnerar sinus för en given vinkel +SINH = SINH ## Returnerar hyperbolisk sinus för ett tal +SQRT = ROT ## Returnerar den positiva kvadratroten +SQRTPI = ROTPI ## Returnerar kvadratroten för (tal * pi) +SUBTOTAL = DELSUMMA ## Returnerar en delsumma i en lista eller databas +SUM = SUMMA ## Summerar argumenten +SUMIF = SUMMA.OM ## Summerar celler enligt ett angivet villkor +SUMIFS = SUMMA.OMF ## Lägger till cellerna i ett område som uppfyller flera kriterier +SUMPRODUCT = PRODUKTSUMMA ## Returnerar summan av produkterna i motsvarande matriskomponenter +SUMSQ = KVADRATSUMMA ## Returnerar summan av argumentens kvadrater +SUMX2MY2 = SUMMAX2MY2 ## Returnerar summan av differensen mellan kvadraterna för motsvarande värden i två matriser +SUMX2PY2 = SUMMAX2PY2 ## Returnerar summan av summan av kvadraterna av motsvarande värden i två matriser +SUMXMY2 = SUMMAXMY2 ## Returnerar summan av kvadraten av skillnaden mellan motsvarande värden i två matriser +TAN = TAN ## Returnerar tangens för ett tal +TANH = TANH ## Returnerar hyperbolisk tangens för ett tal +TRUNC = AVKORTA ## Avkortar ett tal till ett heltal + + +## +## Statistical functions Statistiska funktioner +## +AVEDEV = MEDELAVV ## Returnerar medelvärdet för datapunkters absoluta avvikelse från deras medelvärde +AVERAGE = MEDEL ## Returnerar medelvärdet av argumenten +AVERAGEA = AVERAGEA ## Returnerar medelvärdet av argumenten, inklusive tal, text och logiska värden +AVERAGEIF = MEDELOM ## Returnerar medelvärdet (aritmetiskt medelvärde) för alla celler i ett område som uppfyller ett givet kriterium +AVERAGEIFS = MEDELOMF ## Returnerar medelvärdet (det aritmetiska medelvärdet) för alla celler som uppfyller flera villkor. +BETADIST = BETAFÖRD ## Returnerar den kumulativa betafördelningsfunktionen +BETAINV = BETAINV ## Returnerar inversen till den kumulativa fördelningsfunktionen för en viss betafördelning +BINOMDIST = BINOMFÖRD ## Returnerar den individuella binomialfördelningen +CHIDIST = CHI2FÖRD ## Returnerar den ensidiga sannolikheten av c2-fördelningen +CHIINV = CHI2INV ## Returnerar inversen av chi2-fördelningen +CHITEST = CHI2TEST ## Returnerar oberoendetesten +CONFIDENCE = KONFIDENS ## Returnerar konfidensintervallet för en populations medelvärde +CORREL = KORREL ## Returnerar korrelationskoefficienten mellan två datamängder +COUNT = ANTAL ## Räknar hur många tal som finns bland argumenten +COUNTA = ANTALV ## Räknar hur många värden som finns bland argumenten +COUNTBLANK = ANTAL.TOMMA ## Räknar antalet tomma celler i ett område +COUNTIF = ANTAL.OM ## Räknar antalet celler i ett område som uppfyller angivna villkor. +COUNTIFS = ANTAL.OMF ## Räknar antalet celler i ett område som uppfyller flera villkor. +COVAR = KOVAR ## Returnerar kovariansen, d.v.s. medelvärdet av produkterna för parade avvikelser +CRITBINOM = KRITBINOM ## Returnerar det minsta värdet för vilket den kumulativa binomialfördelningen är mindre än eller lika med ett villkorsvärde +DEVSQ = KVADAVV ## Returnerar summan av kvadrater på avvikelser +EXPONDIST = EXPONFÖRD ## Returnerar exponentialfördelningen +FDIST = FFÖRD ## Returnerar F-sannolikhetsfördelningen +FINV = FINV ## Returnerar inversen till F-sannolikhetsfördelningen +FISHER = FISHER ## Returnerar Fisher-transformationen +FISHERINV = FISHERINV ## Returnerar inversen till Fisher-transformationen +FORECAST = PREDIKTION ## Returnerar ett värde längs en linjär trendlinje +FREQUENCY = FREKVENS ## Returnerar en frekvensfördelning som en lodrät matris +FTEST = FTEST ## Returnerar resultatet av en F-test +GAMMADIST = GAMMAFÖRD ## Returnerar gammafördelningen +GAMMAINV = GAMMAINV ## Returnerar inversen till den kumulativa gammafördelningen +GAMMALN = GAMMALN ## Returnerar den naturliga logaritmen för gammafunktionen, G(x) +GEOMEAN = GEOMEDEL ## Returnerar det geometriska medelvärdet +GROWTH = EXPTREND ## Returnerar värden längs en exponentiell trend +HARMEAN = HARMMEDEL ## Returnerar det harmoniska medelvärdet +HYPGEOMDIST = HYPGEOMFÖRD ## Returnerar den hypergeometriska fördelningen +INTERCEPT = SKÄRNINGSPUNKT ## Returnerar skärningspunkten för en linjär regressionslinje +KURT = TOPPIGHET ## Returnerar toppigheten av en mängd data +LARGE = STÖRSTA ## Returnerar det n:te största värdet i en mängd data +LINEST = REGR ## Returnerar parametrar till en linjär trendlinje +LOGEST = EXPREGR ## Returnerar parametrarna i en exponentiell trend +LOGINV = LOGINV ## Returnerar inversen till den lognormala fördelningen +LOGNORMDIST = LOGNORMFÖRD ## Returnerar den kumulativa lognormala fördelningen +MAX = MAX ## Returnerar det största värdet i en lista av argument +MAXA = MAXA ## Returnerar det största värdet i en lista av argument, inklusive tal, text och logiska värden +MEDIAN = MEDIAN ## Returnerar medianen för angivna tal +MIN = MIN ## Returnerar det minsta värdet i en lista med argument +MINA = MINA ## Returnerar det minsta värdet i en lista över argument, inklusive tal, text och logiska värden +MODE = TYPVÄRDE ## Returnerar det vanligaste värdet i en datamängd +NEGBINOMDIST = NEGBINOMFÖRD ## Returnerar den negativa binomialfördelningen +NORMDIST = NORMFÖRD ## Returnerar den kumulativa normalfördelningen +NORMINV = NORMINV ## Returnerar inversen till den kumulativa normalfördelningen +NORMSDIST = NORMSFÖRD ## Returnerar den kumulativa standardnormalfördelningen +NORMSINV = NORMSINV ## Returnerar inversen till den kumulativa standardnormalfördelningen +PEARSON = PEARSON ## Returnerar korrelationskoefficienten till Pearsons momentprodukt +PERCENTILE = PERCENTIL ## Returnerar den n:te percentilen av värden i ett område +PERCENTRANK = PROCENTRANG ## Returnerar procentrangen för ett värde i en datamängd +PERMUT = PERMUT ## Returnerar antal permutationer för ett givet antal objekt +POISSON = POISSON ## Returnerar Poisson-fördelningen +PROB = SANNOLIKHET ## Returnerar sannolikheten att värden i ett område ligger mellan två gränser +QUARTILE = KVARTIL ## Returnerar kvartilen av en mängd data +RANK = RANG ## Returnerar rangordningen för ett tal i en lista med tal +RSQ = RKV ## Returnerar kvadraten av Pearsons produktmomentkorrelationskoefficient +SKEW = SNEDHET ## Returnerar snedheten för en fördelning +SLOPE = LUTNING ## Returnerar lutningen på en linjär regressionslinje +SMALL = MINSTA ## Returnerar det n:te minsta värdet i en mängd data +STANDARDIZE = STANDARDISERA ## Returnerar ett normaliserat värde +STDEV = STDAV ## Uppskattar standardavvikelsen baserat på ett urval +STDEVA = STDEVA ## Uppskattar standardavvikelsen baserat på ett urval, inklusive tal, text och logiska värden +STDEVP = STDAVP ## Beräknar standardavvikelsen baserat på hela populationen +STDEVPA = STDEVPA ## Beräknar standardavvikelsen baserat på hela populationen, inklusive tal, text och logiska värden +STEYX = STDFELYX ## Returnerar standardfelet för ett förutspått y-värde för varje x-värde i regressionen +TDIST = TFÖRD ## Returnerar Students t-fördelning +TINV = TINV ## Returnerar inversen till Students t-fördelning +TREND = TREND ## Returnerar värden längs en linjär trend +TRIMMEAN = TRIMMEDEL ## Returnerar medelvärdet av mittpunkterna i en datamängd +TTEST = TTEST ## Returnerar sannolikheten beräknad ur Students t-test +VAR = VARIANS ## Uppskattar variansen baserat på ett urval +VARA = VARA ## Uppskattar variansen baserat på ett urval, inklusive tal, text och logiska värden +VARP = VARIANSP ## Beräknar variansen baserat på hela populationen +VARPA = VARPA ## Beräknar variansen baserat på hela populationen, inklusive tal, text och logiska värden +WEIBULL = WEIBULL ## Returnerar Weibull-fördelningen +ZTEST = ZTEST ## Returnerar det ensidiga sannolikhetsvärdet av ett z-test + + +## +## Text functions Textfunktioner +## +ASC = ASC ## Ändrar helbredds (dubbel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med halvt breddsteg (enkel byte) +BAHTTEXT = BAHTTEXT ## Omvandlar ett tal till text med valutaformatet ß (baht) +CHAR = TECKENKOD ## Returnerar tecknet som anges av kod +CLEAN = STÄDA ## Tar bort alla icke utskrivbara tecken i en text +CODE = KOD ## Returnerar en numerisk kod för det första tecknet i en textsträng +CONCATENATE = SAMMANFOGA ## Sammanfogar flera textdelar till en textsträng +DOLLAR = VALUTA ## Omvandlar ett tal till text med valutaformat +EXACT = EXAKT ## Kontrollerar om två textvärden är identiska +FIND = HITTA ## Hittar en text i en annan (skiljer på gemener och versaler) +FINDB = HITTAB ## Hittar en text i en annan (skiljer på gemener och versaler) +FIXED = FASTTAL ## Formaterar ett tal som text med ett fast antal decimaler +JIS = JIS ## Ändrar halvbredds (enkel byte) engelska bokstäver eller katakana inom en teckensträng till tecken med helt breddsteg (dubbel byte) +LEFT = VÄNSTER ## Returnerar tecken längst till vänster i en sträng +LEFTB = VÄNSTERB ## Returnerar tecken längst till vänster i en sträng +LEN = LÄNGD ## Returnerar antalet tecken i en textsträng +LENB = LÄNGDB ## Returnerar antalet tecken i en textsträng +LOWER = GEMENER ## Omvandlar text till gemener +MID = EXTEXT ## Returnerar angivet antal tecken från en text med början vid den position som du anger +MIDB = EXTEXTB ## Returnerar angivet antal tecken från en text med början vid den position som du anger +PHONETIC = PHONETIC ## Returnerar de fonetiska (furigana) tecknen i en textsträng +PROPER = INITIAL ## Ändrar första bokstaven i varje ord i ett textvärde till versal +REPLACE = ERSÄTT ## Ersätter tecken i text +REPLACEB = ERSÄTTB ## Ersätter tecken i text +REPT = REP ## Upprepar en text ett bestämt antal gånger +RIGHT = HÖGER ## Returnerar tecken längst till höger i en sträng +RIGHTB = HÖGERB ## Returnerar tecken längst till höger i en sträng +SEARCH = SÖK ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler) +SEARCHB = SÖKB ## Hittar ett textvärde i ett annat (skiljer inte på gemener och versaler) +SUBSTITUTE = BYT.UT ## Ersätter gammal text med ny text i en textsträng +T = T ## Omvandlar argumenten till text +TEXT = TEXT ## Formaterar ett tal och omvandlar det till text +TRIM = RENSA ## Tar bort blanksteg från text +UPPER = VERSALER ## Omvandlar text till versaler +VALUE = TEXTNUM ## Omvandlar ett textargument till ett tal diff --git a/assets/excel/PHPExcel/locale/tr/config b/assets/excel/PHPExcel/locale/tr/config new file mode 100644 index 0000000..b69d425 --- /dev/null +++ b/assets/excel/PHPExcel/locale/tr/config @@ -0,0 +1,47 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Settings +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## + + +ArgumentSeparator = ; + + +## +## (For future use) +## +currencySymbol = YTL + + +## +## Excel Error Codes (For future use) +## +NULL = #BOŞ! +DIV0 = #SAYI/0! +VALUE = #DEĞER! +REF = #BAŞV! +NAME = #AD? +NUM = #SAYI! +NA = #YOK diff --git a/assets/excel/PHPExcel/locale/tr/functions b/assets/excel/PHPExcel/locale/tr/functions new file mode 100644 index 0000000..45d7df1 --- /dev/null +++ b/assets/excel/PHPExcel/locale/tr/functions @@ -0,0 +1,438 @@ +## +## PHPExcel +## +## Copyright (c) 2006 - 2013 PHPExcel +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +## +## @category PHPExcel +## @package PHPExcel_Calculation +## @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel) +## @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL +## @version ##VERSION##, ##DATE## +## +## Data in this file derived from http://www.piuha.fi/excel-function-name-translation/ +## +## + + +## +## Add-in and Automation functions Eklenti ve Otomasyon fonksiyonları +## +GETPIVOTDATA = ÖZETVERİAL ## Bir Özet Tablo raporunda saklanan verileri verir. + + +## +## Cube functions Küp işlevleri +## +CUBEKPIMEMBER = KÜPKPIÜYE ## Kilit performans göstergesi (KPI-Key Performance Indicator) adını, özelliğini ve ölçüsünü verir ve hücredeki ad ve özelliği gösterir. KPI, bir kurumun performansını izlemek için kullanılan aylık brüt kâr ya da üç aylık çalışan giriş çıkışları gibi ölçülebilen bir birimdir. +CUBEMEMBER = KÜPÜYE ## Bir küp hiyerarşisinde bir üyeyi veya kaydı verir. Üye veya kaydın küpte varolduğunu doğrulamak için kullanılır. +CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ ## Bir küpte bir üyenin özelliğinin değerini verir. Küp içinde üye adının varlığını doğrulamak ve bu üyenin belli özelliklerini getirmek için kullanılır. +CUBERANKEDMEMBER = KÜPÜYESIRASI ## Bir küme içindeki üyenin derecesini veya kaçıncı olduğunu verir. En iyi satış elemanı, veya en iyi on öğrenci gibi bir kümedeki bir veya daha fazla öğeyi getirmek için kullanılır. +CUBESET = KÜPKÜME ## Kümeyi oluşturan ve ardından bu kümeyi Microsoft Office Excel'e getiren sunucudaki küpe küme ifadelerini göndererek hesaplanan üye veya kayıt kümesini tanımlar. +CUBESETCOUNT = KÜPKÜMESAY ## Bir kümedeki öğelerin sayısını getirir. +CUBEVALUE = KÜPDEĞER ## Bir küpten toplam değeri getirir. + + +## +## Database functions Veritabanı işlevleri +## +DAVERAGE = VSEÇORT ## Seçili veritabanı girdilerinin ortalamasını verir. +DCOUNT = VSEÇSAY ## Veritabanında sayı içeren hücre sayısını hesaplar. +DCOUNTA = VSEÇSAYDOLU ## Veritabanındaki boş olmayan hücreleri sayar. +DGET = VAL ## Veritabanından, belirtilen ölçütlerle eşleşen tek bir rapor çıkarır. +DMAX = VSEÇMAK ## Seçili veritabanı girişlerinin en yüksek değerini verir. +DMIN = VSEÇMİN ## Seçili veritabanı girişlerinin en düşük değerini verir. +DPRODUCT = VSEÇÇARP ## Kayıtların belli bir alanında bulunan, bir veritabanındaki ölçütlerle eşleşen değerleri çarpar. +DSTDEV = VSEÇSTDSAPMA ## Seçili veritabanı girişlerinden oluşan bir örneğe dayanarak, standart sapmayı tahmin eder. +DSTDEVP = VSEÇSTDSAPMAS ## Standart sapmayı, seçili veritabanı girişlerinin tüm popülasyonunu esas alarak hesaplar. +DSUM = VSEÇTOPLA ## Kayıtların alan sütununda bulunan, ölçütle eşleşen sayıları toplar. +DVAR = VSEÇVAR ## Seçili veritabanı girişlerinden oluşan bir örneği esas alarak farkı tahmin eder. +DVARP = VSEÇVARS ## Seçili veritabanı girişlerinin tüm popülasyonunu esas alarak farkı hesaplar. + + +## +## Date and time functions Tarih ve saat işlevleri +## +DATE = TARİH ## Belirli bir tarihin seri numarasını verir. +DATEVALUE = TARİHSAYISI ## Metin biçimindeki bir tarihi seri numarasına dönüştürür. +DAY = GÜN ## Seri numarasını, ayın bir gününe dönüştürür. +DAYS360 = GÜN360 ## İki tarih arasındaki gün sayısını, 360 günlük yılı esas alarak hesaplar. +EDATE = SERİTARİH ## Başlangıç tarihinden itibaren, belirtilen ay sayısından önce veya sonraki tarihin seri numarasını verir. +EOMONTH = SERİAY ## Belirtilen sayıda ay önce veya sonraki ayın son gününün seri numarasını verir. +HOUR = SAAT ## Bir seri numarasını saate dönüştürür. +MINUTE = DAKİKA ## Bir seri numarasını dakikaya dönüştürür. +MONTH = AY ## Bir seri numarasını aya dönüştürür. +NETWORKDAYS = TAMİŞGÜNÜ ## İki tarih arasındaki tam çalışma günlerinin sayısını verir. +NOW = ŞİMDİ ## Geçerli tarihin ve saatin seri numarasını verir. +SECOND = SANİYE ## Bir seri numarasını saniyeye dönüştürür. +TIME = ZAMAN ## Belirli bir zamanın seri numarasını verir. +TIMEVALUE = ZAMANSAYISI ## Metin biçimindeki zamanı seri numarasına dönüştürür. +TODAY = BUGÜN ## Bugünün tarihini seri numarasına dönüştürür. +WEEKDAY = HAFTANINGÜNÜ ## Bir seri numarasını, haftanın gününe dönüştürür. +WEEKNUM = HAFTASAY ## Dizisel değerini, haftanın yıl içinde bulunduğu konumu sayısal olarak gösteren sayıya dönüştürür. +WORKDAY = İŞGÜNÜ ## Belirtilen sayıda çalışma günü öncesinin ya da sonrasının tarihinin seri numarasını verir. +YEAR = YIL ## Bir seri numarasını yıla dönüştürür. +YEARFRAC = YILORAN ## Başlangıç_tarihi ve bitiş_tarihi arasındaki tam günleri gösteren yıl kesrini verir. + + +## +## Engineering functions Mühendislik işlevleri +## +BESSELI = BESSELI ## Değiştirilmiş Bessel fonksiyonu In(x)'i verir. +BESSELJ = BESSELJ ## Bessel fonksiyonu Jn(x)'i verir. +BESSELK = BESSELK ## Değiştirilmiş Bessel fonksiyonu Kn(x)'i verir. +BESSELY = BESSELY ## Bessel fonksiyonu Yn(x)'i verir. +BIN2DEC = BIN2DEC ## İkili bir sayıyı, ondalık sayıya dönüştürür. +BIN2HEX = BIN2HEX ## İkili bir sayıyı, onaltılıya dönüştürür. +BIN2OCT = BIN2OCT ## İkili bir sayıyı, sekizliye dönüştürür. +COMPLEX = KARMAŞIK ## Gerçek ve sanal katsayıları, karmaşık sayıya dönüştürür. +CONVERT = ÇEVİR ## Bir sayıyı, bir ölçüm sisteminden bir başka ölçüm sistemine dönüştürür. +DEC2BIN = DEC2BIN ## Ondalık bir sayıyı, ikiliye dönüştürür. +DEC2HEX = DEC2HEX ## Ondalık bir sayıyı, onaltılıya dönüştürür. +DEC2OCT = DEC2OCT ## Ondalık bir sayıyı sekizliğe dönüştürür. +DELTA = DELTA ## İki değerin eşit olup olmadığını sınar. +ERF = HATAİŞLEV ## Hata işlevini verir. +ERFC = TÜMHATAİŞLEV ## Tümleyici hata işlevini verir. +GESTEP = BESINIR ## Bir sayının eşik değerinden büyük olup olmadığını sınar. +HEX2BIN = HEX2BIN ## Onaltılı bir sayıyı ikiliye dönüştürür. +HEX2DEC = HEX2DEC ## Onaltılı bir sayıyı ondalığa dönüştürür. +HEX2OCT = HEX2OCT ## Onaltılı bir sayıyı sekizliğe dönüştürür. +IMABS = SANMUTLAK ## Karmaşık bir sayının mutlak değerini (modül) verir. +IMAGINARY = SANAL ## Karmaşık bir sayının sanal katsayısını verir. +IMARGUMENT = SANBAĞ_DEĞİŞKEN ## Radyanlarla belirtilen bir açı olan teta bağımsız değişkenini verir. +IMCONJUGATE = SANEŞLENEK ## Karmaşık bir sayının karmaşık eşleniğini verir. +IMCOS = SANCOS ## Karmaşık bir sayının kosinüsünü verir. +IMDIV = SANBÖL ## İki karmaşık sayının bölümünü verir. +IMEXP = SANÜS ## Karmaşık bir sayının üssünü verir. +IMLN = SANLN ## Karmaşık bir sayının doğal logaritmasını verir. +IMLOG10 = SANLOG10 ## Karmaşık bir sayının, 10 tabanında logaritmasını verir. +IMLOG2 = SANLOG2 ## Karmaşık bir sayının 2 tabanında logaritmasını verir. +IMPOWER = SANÜSSÜ ## Karmaşık bir sayıyı, bir tamsayı üssüne yükseltilmiş olarak verir. +IMPRODUCT = SANÇARP ## Karmaşık sayıların çarpımını verir. +IMREAL = SANGERÇEK ## Karmaşık bir sayının, gerçek katsayısını verir. +IMSIN = SANSIN ## Karmaşık bir sayının sinüsünü verir. +IMSQRT = SANKAREKÖK ## Karmaşık bir sayının karekökünü verir. +IMSUB = SANÇIKAR ## İki karmaşık sayının farkını verir. +IMSUM = SANTOPLA ## Karmaşık sayıların toplamını verir. +OCT2BIN = OCT2BIN ## Sekizli bir sayıyı ikiliye dönüştürür. +OCT2DEC = OCT2DEC ## Sekizli bir sayıyı ondalığa dönüştürür. +OCT2HEX = OCT2HEX ## Sekizli bir sayıyı onaltılıya dönüştürür. + + +## +## Financial functions Finansal fonksiyonlar +## +ACCRINT = GERÇEKFAİZ ## Dönemsel faiz ödeyen hisse senedine ilişkin tahakkuk eden faizi getirir. +ACCRINTM = GERÇEKFAİZV ## Vadesinde ödeme yapan bir tahvilin tahakkuk etmiş faizini verir. +AMORDEGRC = AMORDEGRC ## Yıpranma katsayısı kullanarak her hesap döneminin değer kaybını verir. +AMORLINC = AMORLINC ## Her hesap dönemi içindeki yıpranmayı verir. +COUPDAYBS = KUPONGÜNBD ## Kupon süresinin başlangıcından alış tarihine kadar olan süredeki gün sayısını verir. +COUPDAYS = KUPONGÜN ## Kupon süresindeki, gün sayısını, alış tarihini de içermek üzere, verir. +COUPDAYSNC = KUPONGÜNDSK ## Alış tarihinden bir sonraki kupon tarihine kadar olan gün sayısını verir. +COUPNCD = KUPONGÜNSKT ## Alış tarihinden bir sonraki kupon tarihini verir. +COUPNUM = KUPONSAYI ## Alış tarihiyle vade tarihi arasında ödenecek kuponların sayısını verir. +COUPPCD = KUPONGÜNÖKT ## Alış tarihinden bir önceki kupon tarihini verir. +CUMIPMT = AİÇVERİMORANI ## İki dönem arasında ödenen kümülatif faizi verir. +CUMPRINC = ANA_PARA_ÖDEMESİ ## İki dönem arasında bir borç üzerine ödenen birikimli temeli verir. +DB = AZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, sabit azalan bakiye yöntemini kullanarak verir. +DDB = ÇİFTAZALANBAKİYE ## Bir malın belirtilen bir süre içindeki yıpranmasını, çift azalan bakiye yöntemi ya da sizin belirttiğiniz başka bir yöntemi kullanarak verir. +DISC = İNDİRİM ## Bir tahvilin indirim oranını verir. +DOLLARDE = LİRAON ## Kesir olarak tanımlanmış lira fiyatını, ondalık sayı olarak tanımlanmış lira fiyatına dönüştürür. +DOLLARFR = LİRAKES ## Ondalık sayı olarak tanımlanmış lira fiyatını, kesir olarak tanımlanmış lira fiyatına dönüştürür. +DURATION = SÜRE ## Belli aralıklarla faiz ödemesi yapan bir tahvilin yıllık süresini verir. +EFFECT = ETKİN ## Efektif yıllık faiz oranını verir. +FV = ANBD ## Bir yatırımın gelecekteki değerini verir. +FVSCHEDULE = GDPROGRAM ## Bir seri birleşik faiz oranı uyguladıktan sonra, bir başlangıçtaki anaparanın gelecekteki değerini verir. +INTRATE = FAİZORANI ## Tam olarak yatırım yapılmış bir tahvilin faiz oranını verir. +IPMT = FAİZTUTARI ## Bir yatırımın verilen bir süre için faiz ödemesini verir. +IRR = İÇ_VERİM_ORANI ## Bir para akışı serisi için, iç verim oranını verir. +ISPMT = ISPMT ## Yatırımın belirli bir dönemi boyunca ödenen faizi hesaplar. +MDURATION = MSÜRE ## Varsayılan par değeri 10.000.000 lira olan bir tahvil için Macauley değiştirilmiş süreyi verir. +MIRR = D_İÇ_VERİM_ORANI ## Pozitif ve negatif para akışlarının farklı oranlarda finanse edildiği durumlarda, iç verim oranını verir. +NOMINAL = NOMİNAL ## Yıllık nominal faiz oranını verir. +NPER = DÖNEM_SAYISI ## Bir yatırımın dönem sayısını verir. +NPV = NBD ## Bir yatırımın bugünkü net değerini, bir dönemsel para akışları serisine ve bir indirim oranına bağlı olarak verir. +ODDFPRICE = TEKYDEĞER ## Tek bir ilk dönemi olan bir tahvilin değerini, her 100.000.000 lirada bir verir. +ODDFYIELD = TEKYÖDEME ## Tek bir ilk dönemi olan bir tahvilin ödemesini verir. +ODDLPRICE = TEKSDEĞER ## Tek bir son dönemi olan bir tahvilin fiyatını her 10.000.000 lirada bir verir. +ODDLYIELD = TEKSÖDEME ## Tek bir son dönemi olan bir tahvilin ödemesini verir. +PMT = DEVRESEL_ÖDEME ## Bir yıllık dönemsel ödemeyi verir. +PPMT = ANA_PARA_ÖDEMESİ ## Verilen bir süre için, bir yatırımın anaparasına dayanan ödemeyi verir. +PRICE = DEĞER ## Dönemsel faiz ödeyen bir tahvilin fiyatını 10.000.00 liralık değer başına verir. +PRICEDISC = DEĞERİND ## İndirimli bir tahvilin fiyatını 10.000.000 liralık nominal değer başına verir. +PRICEMAT = DEĞERVADE ## Faizini vade sonunda ödeyen bir tahvilin fiyatını 10.000.000 nominal değer başına verir. +PV = BD ## Bir yatırımın bugünkü değerini verir. +RATE = FAİZ_ORANI ## Bir yıllık dönem başına düşen faiz oranını verir. +RECEIVED = GETİRİ ## Tam olarak yatırılmış bir tahvilin vadesinin bitiminde alınan miktarı verir. +SLN = DA ## Bir malın bir dönem içindeki doğrusal yıpranmasını verir. +SYD = YAT ## Bir malın belirli bir dönem için olan amortismanını verir. +TBILLEQ = HTAHEŞ ## Bir Hazine bonosunun bono eşdeğeri ödemesini verir. +TBILLPRICE = HTAHDEĞER ## Bir Hazine bonosunun değerini, 10.000.000 liralık nominal değer başına verir. +TBILLYIELD = HTAHÖDEME ## Bir Hazine bonosunun ödemesini verir. +VDB = DAB ## Bir malın amortismanını, belirlenmiş ya da kısmi bir dönem için, bir azalan bakiye yöntemi kullanarak verir. +XIRR = AİÇVERİMORANI ## Dönemsel olması gerekmeyen bir para akışları programı için, iç verim oranını verir. +XNPV = ANBD ## Dönemsel olması gerekmeyen bir para akışları programı için, bugünkü net değeri verir. +YIELD = ÖDEME ## Belirli aralıklarla faiz ödeyen bir tahvilin ödemesini verir. +YIELDDISC = ÖDEMEİND ## İndirimli bir tahvilin yıllık ödemesini verir; örneğin, bir Hazine bonosunun. +YIELDMAT = ÖDEMEVADE ## Vadesinin bitiminde faiz ödeyen bir tahvilin yıllık ödemesini verir. + + +## +## Information functions Bilgi fonksiyonları +## +CELL = HÜCRE ## Bir hücrenin biçimlendirmesi, konumu ya da içeriği hakkında bilgi verir. +ERROR.TYPE = HATA.TİPİ ## Bir hata türüne ilişkin sayıları verir. +INFO = BİLGİ ## Geçerli işletim ortamı hakkında bilgi verir. +ISBLANK = EBOŞSA ## Değer boşsa, DOĞRU verir. +ISERR = EHATA ## Değer, #YOK dışındaki bir hata değeriyse, DOĞRU verir. +ISERROR = EHATALIYSA ## Değer, herhangi bir hata değeriyse, DOĞRU verir. +ISEVEN = ÇİFTTİR ## Sayı çiftse, DOĞRU verir. +ISLOGICAL = EMANTIKSALSA ## Değer, mantıksal bir değerse, DOĞRU verir. +ISNA = EYOKSA ## Değer, #YOK hata değeriyse, DOĞRU verir. +ISNONTEXT = EMETİNDEĞİLSE ## Değer, metin değilse, DOĞRU verir. +ISNUMBER = ESAYIYSA ## Değer, bir sayıysa, DOĞRU verir. +ISODD = TEKTİR ## Sayı tekse, DOĞRU verir. +ISREF = EREFSE ## Değer bir başvuruysa, DOĞRU verir. +ISTEXT = EMETİNSE ## Değer bir metinse DOĞRU verir. +N = N ## Sayıya dönüştürülmüş bir değer verir. +NA = YOKSAY ## #YOK hata değerini verir. +TYPE = TİP ## Bir değerin veri türünü belirten bir sayı verir. + + +## +## Logical functions Mantıksal fonksiyonlar +## +AND = VE ## Bütün bağımsız değişkenleri DOĞRU ise, DOĞRU verir. +FALSE = YANLIŞ ## YANLIŞ mantıksal değerini verir. +IF = EĞER ## Gerçekleştirilecek bir mantıksal sınama belirtir. +IFERROR = EĞERHATA ## Formül hatalıysa belirttiğiniz değeri verir; bunun dışındaki durumlarda formülün sonucunu verir. +NOT = DEĞİL ## Bağımsız değişkeninin mantığını tersine çevirir. +OR = YADA ## Bağımsız değişkenlerden herhangi birisi DOĞRU ise, DOĞRU verir. +TRUE = DOĞRU ## DOĞRU mantıksal değerini verir. + + +## +## Lookup and reference functions Arama ve Başvuru fonksiyonları +## +ADDRESS = ADRES ## Bir başvuruyu, çalışma sayfasındaki tek bir hücreye metin olarak verir. +AREAS = ALANSAY ## Renvoie le nombre de zones dans une référence. +CHOOSE = ELEMAN ## Değerler listesinden bir değer seçer. +COLUMN = SÜTUN ## Bir başvurunun sütun sayısını verir. +COLUMNS = SÜTUNSAY ## Bir başvurudaki sütunların sayısını verir. +HLOOKUP = YATAYARA ## Bir dizinin en üst satırına bakar ve belirtilen hücrenin değerini verir. +HYPERLINK = KÖPRÜ ## Bir ağ sunucusunda, bir intranette ya da Internet'te depolanan bir belgeyi açan bir kısayol ya da atlama oluşturur. +INDEX = İNDİS ## Başvurudan veya diziden bir değer seçmek için, bir dizin kullanır. +INDIRECT = DOLAYLI ## Metin değeriyle belirtilen bir başvuru verir. +LOOKUP = ARA ## Bir vektördeki veya dizideki değerleri arar. +MATCH = KAÇINCI ## Bir başvurudaki veya dizideki değerleri arar. +OFFSET = KAYDIR ## Verilen bir başvurudan, bir başvuru kaydırmayı verir. +ROW = SATIR ## Bir başvurunun satır sayısını verir. +ROWS = SATIRSAY ## Bir başvurudaki satırların sayısını verir. +RTD = RTD ## COM otomasyonunu destekleyen programdan gerçek zaman verileri alır. +TRANSPOSE = DEVRİK_DÖNÜŞÜM ## Bir dizinin devrik dönüşümünü verir. +VLOOKUP = DÜŞEYARA ## Bir dizinin ilk sütununa bakar ve bir hücrenin değerini vermek için satır boyunca hareket eder. + + +## +## Math and trigonometry functions Matematik ve trigonometri fonksiyonları +## +ABS = MUTLAK ## Bir sayının mutlak değerini verir. +ACOS = ACOS ## Bir sayının ark kosinüsünü verir. +ACOSH = ACOSH ## Bir sayının ters hiperbolik kosinüsünü verir. +ASIN = ASİN ## Bir sayının ark sinüsünü verir. +ASINH = ASİNH ## Bir sayının ters hiperbolik sinüsünü verir. +ATAN = ATAN ## Bir sayının ark tanjantını verir. +ATAN2 = ATAN2 ## Ark tanjantı, x- ve y- koordinatlarından verir. +ATANH = ATANH ## Bir sayının ters hiperbolik tanjantını verir. +CEILING = TAVANAYUVARLA ## Bir sayıyı, en yakın tamsayıya ya da en yakın katına yuvarlar. +COMBIN = KOMBİNASYON ## Verilen sayıda öğenin kombinasyon sayısını verir. +COS = COS ## Bir sayının kosinüsünü verir. +COSH = COSH ## Bir sayının hiperbolik kosinüsünü verir. +DEGREES = DERECE ## Radyanları dereceye dönüştürür. +EVEN = ÇİFT ## Bir sayıyı, en yakın daha büyük çift tamsayıya yuvarlar. +EXP = ÜS ## e'yi, verilen bir sayının üssüne yükseltilmiş olarak verir. +FACT = ÇARPINIM ## Bir sayının faktörünü verir. +FACTDOUBLE = ÇİFTFAKTÖR ## Bir sayının çift çarpınımını verir. +FLOOR = TABANAYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. +GCD = OBEB ## En büyük ortak böleni verir. +INT = TAMSAYI ## Bir sayıyı aşağıya doğru en yakın tamsayıya yuvarlar. +LCM = OKEK ## En küçük ortak katı verir. +LN = LN ## Bir sayının doğal logaritmasını verir. +LOG = LOG ## Bir sayının, belirtilen bir tabandaki logaritmasını verir. +LOG10 = LOG10 ## Bir sayının 10 tabanında logaritmasını verir. +MDETERM = DETERMİNANT ## Bir dizinin dizey determinantını verir. +MINVERSE = DİZEY_TERS ## Bir dizinin dizey tersini verir. +MMULT = DÇARP ## İki dizinin dizey çarpımını verir. +MOD = MODÜLO ## Bölmeden kalanı verir. +MROUND = KYUVARLA ## İstenen kata yuvarlanmış bir sayı verir. +MULTINOMIAL = ÇOKTERİMLİ ## Bir sayılar kümesinin çok terimlisini verir. +ODD = TEK ## Bir sayıyı en yakın daha büyük tek sayıya yuvarlar. +PI = Pİ ## Pi değerini verir. +POWER = KUVVET ## Bir üsse yükseltilmiş sayının sonucunu verir. +PRODUCT = ÇARPIM ## Bağımsız değişkenlerini çarpar. +QUOTIENT = BÖLÜM ## Bir bölme işleminin tamsayı kısmını verir. +RADIANS = RADYAN ## Dereceleri radyanlara dönüştürür. +RAND = S_SAYI_ÜRET ## 0 ile 1 arasında rastgele bir sayı verir. +RANDBETWEEN = RASTGELEARALIK ## Belirttiğiniz sayılar arasında rastgele bir sayı verir. +ROMAN = ROMEN ## Bir normal rakamı, metin olarak, romen rakamına çevirir. +ROUND = YUVARLA ## Bir sayıyı, belirtilen basamak sayısına yuvarlar. +ROUNDDOWN = AŞAĞIYUVARLA ## Bir sayıyı, daha küçük sayıya, sıfıra yakınsayarak yuvarlar. +ROUNDUP = YUKARIYUVARLA ## Bir sayıyı daha büyük sayıya, sıfırdan ıraksayarak yuvarlar. +SERIESSUM = SERİTOPLA ## Bir üs serisinin toplamını, formüle bağlı olarak verir. +SIGN = İŞARET ## Bir sayının işaretini verir. +SIN = SİN ## Verilen bir açının sinüsünü verir. +SINH = SİNH ## Bir sayının hiperbolik sinüsünü verir. +SQRT = KAREKÖK ## Pozitif bir karekök verir. +SQRTPI = KAREKÖKPİ ## (* Pi sayısının) kare kökünü verir. +SUBTOTAL = ALTTOPLAM ## Bir listedeki ya da veritabanındaki bir alt toplamı verir. +SUM = TOPLA ## Bağımsız değişkenlerini toplar. +SUMIF = ETOPLA ## Verilen ölçütle belirlenen hücreleri toplar. +SUMIFS = SUMIFS ## Bir aralıktaki, birden fazla ölçüte uyan hücreleri ekler. +SUMPRODUCT = TOPLA.ÇARPIM ## İlişkili dizi bileşenlerinin çarpımlarının toplamını verir. +SUMSQ = TOPKARE ## Bağımsız değişkenlerin karelerinin toplamını verir. +SUMX2MY2 = TOPX2EY2 ## İki dizideki ilişkili değerlerin farkının toplamını verir. +SUMX2PY2 = TOPX2AY2 ## İki dizideki ilişkili değerlerin karelerinin toplamının toplamını verir. +SUMXMY2 = TOPXEY2 ## İki dizideki ilişkili değerlerin farklarının karelerinin toplamını verir. +TAN = TAN ## Bir sayının tanjantını verir. +TANH = TANH ## Bir sayının hiperbolik tanjantını verir. +TRUNC = NSAT ## Bir sayının, tamsayı durumuna gelecek şekilde, fazlalıklarını atar. + + +## +## Statistical functions İstatistiksel fonksiyonlar +## +AVEDEV = ORTSAP ## Veri noktalarının ortalamalarından mutlak sapmalarının ortalamasını verir. +AVERAGE = ORTALAMA ## Bağımsız değişkenlerinin ortalamasını verir. +AVERAGEA = ORTALAMAA ## Bağımsız değişkenlerinin, sayılar, metin ve mantıksal değerleri içermek üzere ortalamasını verir. +AVERAGEIF = EĞERORTALAMA ## Verili ölçütü karşılayan bir aralıktaki bütün hücrelerin ortalamasını (aritmetik ortalama) hesaplar. +AVERAGEIFS = EĞERLERORTALAMA ## Birden çok ölçüte uyan tüm hücrelerin ortalamasını (aritmetik ortalama) hesaplar. +BETADIST = BETADAĞ ## Beta birikimli dağılım fonksiyonunu verir. +BETAINV = BETATERS ## Belirli bir beta dağılımı için birikimli dağılım fonksiyonunun tersini verir. +BINOMDIST = BİNOMDAĞ ## Tek terimli binom dağılımı olasılığını verir. +CHIDIST = KİKAREDAĞ ## Kikare dağılımın tek kuyruklu olasılığını verir. +CHIINV = KİKARETERS ## Kikare dağılımın kuyruklu olasılığının tersini verir. +CHITEST = KİKARETEST ## Bağımsızlık sınamalarını verir. +CONFIDENCE = GÜVENİRLİK ## Bir popülasyon ortalaması için güvenirlik aralığını verir. +CORREL = KORELASYON ## İki veri kümesi arasındaki bağlantı katsayısını verir. +COUNT = BAĞ_DEĞ_SAY ## Bağımsız değişkenler listesinde kaç tane sayı bulunduğunu sayar. +COUNTA = BAĞ_DEĞ_DOLU_SAY ## Bağımsız değişkenler listesinde kaç tane değer bulunduğunu sayar. +COUNTBLANK = BOŞLUKSAY ## Aralıktaki boş hücre sayısını hesaplar. +COUNTIF = EĞERSAY ## Verilen ölçütlere uyan bir aralık içindeki hücreleri sayar. +COUNTIFS = ÇOKEĞERSAY ## Birden çok ölçüte uyan bir aralık içindeki hücreleri sayar. +COVAR = KOVARYANS ## Eşleştirilmiş sapmaların ortalaması olan kovaryansı verir. +CRITBINOM = KRİTİKBİNOM ## Birikimli binom dağılımının bir ölçüt değerinden küçük veya ölçüt değerine eşit olduğu en küçük değeri verir. +DEVSQ = SAPKARE ## Sapmaların karelerinin toplamını verir. +EXPONDIST = ÜSTELDAĞ ## Üstel dağılımı verir. +FDIST = FDAĞ ## F olasılık dağılımını verir. +FINV = FTERS ## F olasılık dağılımının tersini verir. +FISHER = FISHER ## Fisher dönüşümünü verir. +FISHERINV = FISHERTERS ## Fisher dönüşümünün tersini verir. +FORECAST = TAHMİN ## Bir doğrusal eğilim boyunca bir değer verir. +FREQUENCY = SIKLIK ## Bir sıklık dağılımını, dikey bir dizi olarak verir. +FTEST = FTEST ## Bir F-test'in sonucunu verir. +GAMMADIST = GAMADAĞ ## Gama dağılımını verir. +GAMMAINV = GAMATERS ## Gama kümülatif dağılımının tersini verir. +GAMMALN = GAMALN ## Gama fonksiyonunun (?(x)) doğal logaritmasını verir. +GEOMEAN = GEOORT ## Geometrik ortayı verir. +GROWTH = BÜYÜME ## Üstel bir eğilim boyunca değerler verir. +HARMEAN = HARORT ## Harmonik ortayı verir. +HYPGEOMDIST = HİPERGEOMDAĞ ## Hipergeometrik dağılımı verir. +INTERCEPT = KESMENOKTASI ## Doğrusal çakıştırma çizgisinin kesişme noktasını verir. +KURT = BASIKLIK ## Bir veri kümesinin basıklığını verir. +LARGE = BÜYÜK ## Bir veri kümesinde k. en büyük değeri verir. +LINEST = DOT ## Doğrusal bir eğilimin parametrelerini verir. +LOGEST = LOT ## Üstel bir eğilimin parametrelerini verir. +LOGINV = LOGTERS ## Bir lognormal dağılımının tersini verir. +LOGNORMDIST = LOGNORMDAĞ ## Birikimli lognormal dağılımını verir. +MAX = MAK ## Bir bağımsız değişkenler listesindeki en büyük değeri verir. +MAXA = MAKA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri içermek üzere, en büyük değeri verir. +MEDIAN = ORTANCA ## Belirtilen sayıların orta değerini verir. +MIN = MİN ## Bir bağımsız değişkenler listesindeki en küçük değeri verir. +MINA = MİNA ## Bir bağımsız değişkenler listesindeki, sayılar, metin ve mantıksal değerleri de içermek üzere, en küçük değeri verir. +MODE = ENÇOK_OLAN ## Bir veri kümesindeki en sık rastlanan değeri verir. +NEGBINOMDIST = NEGBİNOMDAĞ ## Negatif binom dağılımını verir. +NORMDIST = NORMDAĞ ## Normal birikimli dağılımı verir. +NORMINV = NORMTERS ## Normal kümülatif dağılımın tersini verir. +NORMSDIST = NORMSDAĞ ## Standart normal birikimli dağılımı verir. +NORMSINV = NORMSTERS ## Standart normal birikimli dağılımın tersini verir. +PEARSON = PEARSON ## Pearson çarpım moment korelasyon katsayısını verir. +PERCENTILE = YÜZDEBİRLİK ## Bir aralık içerisinde bulunan değerlerin k. frekans toplamını verir. +PERCENTRANK = YÜZDERANK ## Bir veri kümesindeki bir değerin yüzde mertebesini verir. +PERMUT = PERMÜTASYON ## Verilen sayıda nesne için permütasyon sayısını verir. +POISSON = POISSON ## Poisson dağılımını verir. +PROB = OLASILIK ## Bir aralıktaki değerlerin iki sınır arasında olması olasılığını verir. +QUARTILE = DÖRTTEBİRLİK ## Bir veri kümesinin dörtte birliğini verir. +RANK = RANK ## Bir sayılar listesinde bir sayının mertebesini verir. +RSQ = RKARE ## Pearson çarpım moment korelasyon katsayısının karesini verir. +SKEW = ÇARPIKLIK ## Bir dağılımın çarpıklığını verir. +SLOPE = EĞİM ## Doğrusal çakışma çizgisinin eğimini verir. +SMALL = KÜÇÜK ## Bir veri kümesinde k. en küçük değeri verir. +STANDARDIZE = STANDARTLAŞTIRMA ## Normalleştirilmiş bir değer verir. +STDEV = STDSAPMA ## Bir örneğe dayanarak standart sapmayı tahmin eder. +STDEVA = STDSAPMAA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. +STDEVP = STDSAPMAS ## Standart sapmayı, tüm popülasyona bağlı olarak hesaplar. +STDEVPA = STDSAPMASA ## Standart sapmayı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. +STEYX = STHYX ## Regresyondaki her x için tahmini y değerinin standart hatasını verir. +TDIST = TDAĞ ## T-dağılımını verir. +TINV = TTERS ## T-dağılımının tersini verir. +TREND = EĞİLİM ## Doğrusal bir eğilim boyunca değerler verir. +TRIMMEAN = KIRPORTALAMA ## Bir veri kümesinin içinin ortalamasını verir. +TTEST = TTEST ## T-test'le ilişkilendirilmiş olasılığı verir. +VAR = VAR ## Varyansı, bir örneğe bağlı olarak tahmin eder. +VARA = VARA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, bir örneğe bağlı olarak tahmin eder. +VARP = VARS ## Varyansı, tüm popülasyona dayanarak hesaplar. +VARPA = VARSA ## Varyansı, sayılar, metin ve mantıksal değerleri içermek üzere, tüm popülasyona bağlı olarak hesaplar. +WEIBULL = WEIBULL ## Weibull dağılımını hesaplar. +ZTEST = ZTEST ## Z-testinin tek kuyruklu olasılık değerini hesaplar. + + +## +## Text functions Metin fonksiyonları +## +ASC = ASC ## Bir karakter dizesindeki çift enli (iki bayt) İngilizce harfleri veya katakanayı yarım enli (tek bayt) karakterlerle değiştirir. +BAHTTEXT = BAHTTEXT ## Sayıyı, ß (baht) para birimi biçimini kullanarak metne dönüştürür. +CHAR = DAMGA ## Kod sayısıyla belirtilen karakteri verir. +CLEAN = TEMİZ ## Metindeki bütün yazdırılamaz karakterleri kaldırır. +CODE = KOD ## Bir metin dizesindeki ilk karakter için sayısal bir kod verir. +CONCATENATE = BİRLEŞTİR ## Pek çok metin öğesini bir metin öğesi olarak birleştirir. +DOLLAR = LİRA ## Bir sayıyı YTL (yeni Türk lirası) para birimi biçimini kullanarak metne dönüştürür. +EXACT = ÖZDEŞ ## İki metin değerinin özdeş olup olmadığını anlamak için, değerleri denetler. +FIND = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). +FINDB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlıdır). +FIXED = SAYIDÜZENLE ## Bir sayıyı, sabit sayıda ondalıkla, metin olarak biçimlendirir. +JIS = JIS ## Bir karakter dizesindeki tek enli (tek bayt) İngilizce harfleri veya katakanayı çift enli (iki bayt) karakterlerle değiştirir. +LEFT = SOL ## Bir metin değerinden en soldaki karakterleri verir. +LEFTB = SOLB ## Bir metin değerinden en soldaki karakterleri verir. +LEN = UZUNLUK ## Bir metin dizesindeki karakter sayısını verir. +LENB = UZUNLUKB ## Bir metin dizesindeki karakter sayısını verir. +LOWER = KÜÇÜKHARF ## Metni küçük harfe çevirir. +MID = ORTA ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. +MIDB = ORTAB ## Bir metin dizesinden belirli sayıda karakteri, belirttiğiniz konumdan başlamak üzere verir. +PHONETIC = SES ## Metin dizesinden ses (furigana) karakterlerini ayıklar. +PROPER = YAZIM.DÜZENİ ## Bir metin değerinin her bir sözcüğünün ilk harfini büyük harfe çevirir. +REPLACE = DEĞİŞTİR ## Metnin içindeki karakterleri değiştirir. +REPLACEB = DEĞİŞTİRB ## Metnin içindeki karakterleri değiştirir. +REPT = YİNELE ## Metni belirtilen sayıda yineler. +RIGHT = SAĞ ## Bir metin değerinden en sağdaki karakterleri verir. +RIGHTB = SAĞB ## Bir metin değerinden en sağdaki karakterleri verir. +SEARCH = BUL ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). +SEARCHB = BULB ## Bir metin değerini, bir başkasının içinde bulur (büyük küçük harf duyarlı değildir). +SUBSTITUTE = YERİNEKOY ## Bir metin dizesinde, eski metnin yerine yeni metin koyar. +T = M ## Bağımsız değerlerini metne dönüştürür. +TEXT = METNEÇEVİR ## Bir sayıyı biçimlendirir ve metne dönüştürür. +TRIM = KIRP ## Metindeki boşlukları kaldırır. +UPPER = BÜYÜKHARF ## Metni büyük harfe çevirir. +VALUE = SAYIYAÇEVİR ## Bir metin bağımsız değişkenini sayıya dönüştürür. diff --git a/assets/fonts/FontAwesome.otf b/assets/fonts/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/assets/fonts/FontAwesome.otf differ diff --git a/assets/fonts/GoogleSans-Bold.ttf b/assets/fonts/GoogleSans-Bold.ttf new file mode 100644 index 0000000..8049766 Binary files /dev/null and b/assets/fonts/GoogleSans-Bold.ttf differ diff --git a/assets/fonts/GoogleSans-BoldItalic.ttf b/assets/fonts/GoogleSans-BoldItalic.ttf new file mode 100644 index 0000000..e940d02 Binary files /dev/null and b/assets/fonts/GoogleSans-BoldItalic.ttf differ diff --git a/assets/fonts/GoogleSans-Italic.ttf b/assets/fonts/GoogleSans-Italic.ttf new file mode 100644 index 0000000..bfb1a2c Binary files /dev/null and b/assets/fonts/GoogleSans-Italic.ttf differ diff --git a/assets/fonts/GoogleSans-Medium.ttf b/assets/fonts/GoogleSans-Medium.ttf new file mode 100644 index 0000000..1543660 Binary files /dev/null and b/assets/fonts/GoogleSans-Medium.ttf differ diff --git a/assets/fonts/GoogleSans-MediumItalic.ttf b/assets/fonts/GoogleSans-MediumItalic.ttf new file mode 100644 index 0000000..7c1667b Binary files /dev/null and b/assets/fonts/GoogleSans-MediumItalic.ttf differ diff --git a/assets/fonts/GoogleSans-Regular.ttf b/assets/fonts/GoogleSans-Regular.ttf new file mode 100644 index 0000000..ab605f9 Binary files /dev/null and b/assets/fonts/GoogleSans-Regular.ttf differ diff --git a/assets/fonts/Inter-Black.woff b/assets/fonts/Inter-Black.woff new file mode 100644 index 0000000..dd949bb Binary files /dev/null and b/assets/fonts/Inter-Black.woff differ diff --git a/assets/fonts/Inter-Black.woff2 b/assets/fonts/Inter-Black.woff2 new file mode 100644 index 0000000..08e5193 Binary files /dev/null and b/assets/fonts/Inter-Black.woff2 differ diff --git a/assets/fonts/Inter-Bold.woff b/assets/fonts/Inter-Bold.woff new file mode 100644 index 0000000..80b6ba9 Binary files /dev/null and b/assets/fonts/Inter-Bold.woff differ diff --git a/assets/fonts/Inter-Bold.woff2 b/assets/fonts/Inter-Bold.woff2 new file mode 100644 index 0000000..08eec65 Binary files /dev/null and b/assets/fonts/Inter-Bold.woff2 differ diff --git a/assets/fonts/Inter-ExtraBold.woff b/assets/fonts/Inter-ExtraBold.woff new file mode 100644 index 0000000..ee87547 Binary files /dev/null and b/assets/fonts/Inter-ExtraBold.woff differ diff --git a/assets/fonts/Inter-ExtraBold.woff2 b/assets/fonts/Inter-ExtraBold.woff2 new file mode 100644 index 0000000..774bfe7 Binary files /dev/null and b/assets/fonts/Inter-ExtraBold.woff2 differ diff --git a/assets/fonts/Inter-ExtraLight.woff b/assets/fonts/Inter-ExtraLight.woff new file mode 100644 index 0000000..9a7b928 Binary files /dev/null and b/assets/fonts/Inter-ExtraLight.woff differ diff --git a/assets/fonts/Inter-ExtraLight.woff2 b/assets/fonts/Inter-ExtraLight.woff2 new file mode 100644 index 0000000..ac513ed Binary files /dev/null and b/assets/fonts/Inter-ExtraLight.woff2 differ diff --git a/assets/fonts/Inter-Light.woff b/assets/fonts/Inter-Light.woff new file mode 100644 index 0000000..0a90293 Binary files /dev/null and b/assets/fonts/Inter-Light.woff differ diff --git a/assets/fonts/Inter-Light.woff2 b/assets/fonts/Inter-Light.woff2 new file mode 100644 index 0000000..2ee6f5a Binary files /dev/null and b/assets/fonts/Inter-Light.woff2 differ diff --git a/assets/fonts/Inter-Medium.woff b/assets/fonts/Inter-Medium.woff new file mode 100644 index 0000000..f2c21f9 Binary files /dev/null and b/assets/fonts/Inter-Medium.woff differ diff --git a/assets/fonts/Inter-Medium.woff2 b/assets/fonts/Inter-Medium.woff2 new file mode 100644 index 0000000..e8535f0 Binary files /dev/null and b/assets/fonts/Inter-Medium.woff2 differ diff --git a/assets/fonts/Inter-Regular.woff b/assets/fonts/Inter-Regular.woff new file mode 100644 index 0000000..1428356 Binary files /dev/null and b/assets/fonts/Inter-Regular.woff differ diff --git a/assets/fonts/Inter-Regular.woff2 b/assets/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000..e035579 Binary files /dev/null and b/assets/fonts/Inter-Regular.woff2 differ diff --git a/assets/fonts/Inter-SemiBold.woff b/assets/fonts/Inter-SemiBold.woff new file mode 100644 index 0000000..e592e7e Binary files /dev/null and b/assets/fonts/Inter-SemiBold.woff differ diff --git a/assets/fonts/Inter-SemiBold.woff2 b/assets/fonts/Inter-SemiBold.woff2 new file mode 100644 index 0000000..c976a18 Binary files /dev/null and b/assets/fonts/Inter-SemiBold.woff2 differ diff --git a/assets/fonts/Inter-Thin.woff b/assets/fonts/Inter-Thin.woff new file mode 100644 index 0000000..a321ca2 Binary files /dev/null and b/assets/fonts/Inter-Thin.woff differ diff --git a/assets/fonts/Inter-Thin.woff2 b/assets/fonts/Inter-Thin.woff2 new file mode 100644 index 0000000..82c3769 Binary files /dev/null and b/assets/fonts/Inter-Thin.woff2 differ diff --git a/assets/fonts/Rubik-Medium.woff b/assets/fonts/Rubik-Medium.woff new file mode 100644 index 0000000..a852f86 Binary files /dev/null and b/assets/fonts/Rubik-Medium.woff differ diff --git a/assets/fonts/Rubik-Medium.woff2 b/assets/fonts/Rubik-Medium.woff2 new file mode 100644 index 0000000..39b1d9c Binary files /dev/null and b/assets/fonts/Rubik-Medium.woff2 differ diff --git a/assets/fonts/Rubik-SemiBold.woff b/assets/fonts/Rubik-SemiBold.woff new file mode 100644 index 0000000..f77a2da Binary files /dev/null and b/assets/fonts/Rubik-SemiBold.woff differ diff --git a/assets/fonts/Rubik-SemiBold.woff2 b/assets/fonts/Rubik-SemiBold.woff2 new file mode 100644 index 0000000..0a562c1 Binary files /dev/null and b/assets/fonts/Rubik-SemiBold.woff2 differ diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/assets/fonts/fontawesome-webfont.eot differ diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/assets/fonts/fontawesome-webfont.svg @@ -0,0 +1,685 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="fontawesomeregular" horiz-adv-x="1536" > +<font-face units-per-em="1792" ascent="1536" descent="-256" /> +<missing-glyph horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="&#x09;" horiz-adv-x="448" /> +<glyph unicode="&#xa0;" horiz-adv-x="448" /> +<glyph unicode="&#xa8;" horiz-adv-x="1792" /> +<glyph unicode="&#xa9;" horiz-adv-x="1792" /> +<glyph unicode="&#xae;" horiz-adv-x="1792" /> +<glyph unicode="&#xb4;" horiz-adv-x="1792" /> +<glyph unicode="&#xc6;" horiz-adv-x="1792" /> +<glyph unicode="&#xd8;" horiz-adv-x="1792" /> +<glyph unicode="&#x2000;" horiz-adv-x="768" /> +<glyph unicode="&#x2001;" horiz-adv-x="1537" /> +<glyph unicode="&#x2002;" horiz-adv-x="768" /> +<glyph unicode="&#x2003;" horiz-adv-x="1537" /> +<glyph unicode="&#x2004;" horiz-adv-x="512" /> +<glyph unicode="&#x2005;" horiz-adv-x="384" /> +<glyph unicode="&#x2006;" horiz-adv-x="256" /> +<glyph unicode="&#x2007;" horiz-adv-x="256" /> +<glyph unicode="&#x2008;" horiz-adv-x="192" /> +<glyph unicode="&#x2009;" horiz-adv-x="307" /> +<glyph unicode="&#x200a;" horiz-adv-x="85" /> +<glyph unicode="&#x202f;" horiz-adv-x="307" /> +<glyph unicode="&#x205f;" horiz-adv-x="384" /> +<glyph unicode="&#x2122;" horiz-adv-x="1792" /> +<glyph unicode="&#x221e;" horiz-adv-x="1792" /> +<glyph unicode="&#x2260;" horiz-adv-x="1792" /> +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> +<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> +<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> +<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> +<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> +<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> +<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> +<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> +<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> +<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> +<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " /> +<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> +<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> +<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> +<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> +<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> +<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> +<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> +<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> +<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> +<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> +<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> +<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> +<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> +<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> +<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> +<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> +<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> +<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> +<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> +<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> +<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> +<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> +<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> +<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> +<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> +<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> +<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> +<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> +<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> +<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> +<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> +<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> +<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> +<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> +<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> +<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> +<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> +<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> +<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> +<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> +<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> +<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> +<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> +<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> +<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> +<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> +<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> +<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> +<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> +<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> +<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> +<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> +<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> +<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> +<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> +<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> +<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> +<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> +<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf092;" d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> +<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> +<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> +<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> +<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> +<glyph unicode="&#xf09b;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5 t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" /> +<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> +<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> +<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> +<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> +<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> +<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> +<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> +<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> +<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> +<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> +<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> +<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> +<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> +<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> +<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> +<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> +<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> +<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> +<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> +<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> +<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> +<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> +<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> +<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> +<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> +<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" /> +<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> +<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> +<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> +<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> +<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> +<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> +<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> +<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> +<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> +<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> +<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> +<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> +<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> +<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> +<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> +<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> +<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> +<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> +<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> +<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> +<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> +<glyph unicode="&#xf116;" horiz-adv-x="1792" /> +<glyph unicode="&#xf117;" horiz-adv-x="1792" /> +<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> +<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> +<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> +<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> +<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> +<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> +<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> +<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> +<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> +<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> +<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> +<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> +<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> +<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> +<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> +<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> +<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> +<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> +<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> +<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> +<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> +<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> +<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> +<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> +<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> +<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> +<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> +<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> +<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> +<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> +<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> +<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> +<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> +<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> +<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> +<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> +<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> +<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> +<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> +<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> +<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> +<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> +<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" /> +<glyph unicode="&#xf16d;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" /> +<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> +<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> +<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" /> +<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> +<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> +<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> +<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> +<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> +<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> +<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> +<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> +<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> +<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> +<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> +<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> +<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> +<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> +<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> +<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> +<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " /> +<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> +<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> +<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> +<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> +<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" /> +<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> +<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> +<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> +<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> +<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" /> +<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> +<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" /> +<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> +<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> +<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" /> +<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" /> +<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> +<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> +<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" /> +<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> +<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " /> +<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" /> +<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> +<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> +<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> +<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " /> +<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> +<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> +<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> +<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" /> +<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> +<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> +<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> +<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" /> +<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" /> +<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> +<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> +<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> +<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> +<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> +<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> +<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> +<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> +<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" /> +<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> +<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" /> +<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> +<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> +<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> +<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> +<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> +<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> +<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" /> +<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" /> +<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> +<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> +<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> +<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> +<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> +<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" /> +<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> +<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> +<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> +<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> +<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> +<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" /> +<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M441 864q32 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" /> +<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> +<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> +<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" /> +<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> +<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> +<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> +<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> +<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> +<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> +<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" /> +<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> +<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> +<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> +<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> +<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> +<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> +<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> +<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> +<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" /> +<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" /> +<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" /> +<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" /> +<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" /> +<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" /> +<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" /> +<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" /> +<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" /> +<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" /> +<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" /> +<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" /> +<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" /> +<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" /> +<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" /> +<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" /> +<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" /> +<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" /> +<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" /> +<glyph unicode="&#xf22e;" horiz-adv-x="1792" /> +<glyph unicode="&#xf22f;" horiz-adv-x="1792" /> +<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" /> +<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" /> +<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" /> +<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" /> +<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" /> +<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" /> +<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" /> +<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" /> +<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" /> +<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" /> +<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" /> +<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" /> +<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" /> +<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" /> +<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" /> +<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" /> +<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" /> +<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" /> +<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" /> +<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" /> +<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" /> +<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" /> +<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> +<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" /> +<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" /> +<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> +<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" /> +<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" /> +<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" /> +<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" /> +<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" /> +<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" /> +<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" /> +<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" /> +<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" /> +<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" /> +<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" /> +<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" /> +<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" /> +<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" /> +<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" /> +<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" /> +<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" /> +<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" /> +<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " /> +<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" /> +<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" /> +<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" /> +<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" /> +<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" /> +<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" /> +<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" /> +<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" /> +<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" /> +<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" /> +<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" /> +<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" /> +<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" /> +<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" /> +<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" /> +<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" /> +<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" /> +<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" /> +<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" /> +<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" /> +<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 q16 0 16 -16z" /> +<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" /> +<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" /> +<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" /> +<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" /> +<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" /> +<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" /> +<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" /> +<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" /> +<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" /> +<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf296;" horiz-adv-x="1792" d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" /> +<glyph unicode="&#xf297;" horiz-adv-x="1792" d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" /> +<glyph unicode="&#xf298;" d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" /> +<glyph unicode="&#xf299;" horiz-adv-x="1792" d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" /> +<glyph unicode="&#xf29a;" horiz-adv-x="1792" d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf29b;" d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" /> +<glyph unicode="&#xf29c;" d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5 t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf29d;" horiz-adv-x="1408" d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 q-67 -192 -92 -234q-16 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 q3 -1 7 1t7 4l3 2q11 9 11 17z" /> +<glyph unicode="&#xf29e;" horiz-adv-x="2304" d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 t9.5 -70.5z" /> +<glyph unicode="&#xf2a0;" horiz-adv-x="1408" d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 q-18 -19 -45 -19z" /> +<glyph unicode="&#xf2a1;" horiz-adv-x="2176" d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf2a2;" horiz-adv-x="1792" d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" /> +<glyph unicode="&#xf2a3;" horiz-adv-x="2304" d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" /> +<glyph unicode="&#xf2a4;" horiz-adv-x="1792" d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" /> +<glyph unicode="&#xf2a5;" d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf2a6;" horiz-adv-x="1535" d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" /> +<glyph unicode="&#xf2a7;" horiz-adv-x="1664" d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147l-4 -4t-5 -4q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148q-34 23 -76 23 q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26l-12 224 q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" /> +<glyph unicode="&#xf2a8;" horiz-adv-x="1792" d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" /> +<glyph unicode="&#xf2a9;" horiz-adv-x="1280" d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" /> +<glyph unicode="&#xf2aa;" d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 43 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf2ab;" d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf2ac;" horiz-adv-x="1664" d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" /> +<glyph unicode="&#xf2ad;" d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf2ae;" horiz-adv-x="2304" d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" /> +<glyph unicode="&#xf2b0;" d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" /> +<glyph unicode="&#xf2b1;" horiz-adv-x="1664" d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" /> +<glyph unicode="&#xf2b2;" horiz-adv-x="1792" d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" /> +<glyph unicode="&#xf2b3;" d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110 h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf2b4;" d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf2b5;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b6;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b7;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b8;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b9;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2ba;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bb;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bc;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bd;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2be;" horiz-adv-x="1792" /> +<glyph unicode="&#xf500;" horiz-adv-x="1792" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/assets/fonts/fontawesome-webfont.ttf differ diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/assets/fonts/fontawesome-webfont.woff differ diff --git a/assets/fonts/fontawesome-webfont.woff2 b/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/assets/fonts/fontawesome-webfont.woff2 differ diff --git a/assets/fonts/glyphicons-halflings-regular.eot b/assets/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/assets/fonts/glyphicons-halflings-regular.eot differ diff --git a/assets/fonts/glyphicons-halflings-regular.svg b/assets/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/assets/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > +<font-face units-per-em="1200" ascent="960" descent="-240" /> +<missing-glyph horiz-adv-x="500" /> +<glyph horiz-adv-x="0" /> +<glyph horiz-adv-x="400" /> +<glyph unicode=" " /> +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xa0;" /> +<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> +<glyph unicode="&#x2000;" horiz-adv-x="650" /> +<glyph unicode="&#x2001;" horiz-adv-x="1300" /> +<glyph unicode="&#x2002;" horiz-adv-x="650" /> +<glyph unicode="&#x2003;" horiz-adv-x="1300" /> +<glyph unicode="&#x2004;" horiz-adv-x="433" /> +<glyph unicode="&#x2005;" horiz-adv-x="325" /> +<glyph unicode="&#x2006;" horiz-adv-x="216" /> +<glyph unicode="&#x2007;" horiz-adv-x="216" /> +<glyph unicode="&#x2008;" horiz-adv-x="162" /> +<glyph unicode="&#x2009;" horiz-adv-x="260" /> +<glyph unicode="&#x200a;" horiz-adv-x="72" /> +<glyph unicode="&#x202f;" horiz-adv-x="260" /> +<glyph unicode="&#x205f;" horiz-adv-x="325" /> +<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> +<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> +<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> +<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> +<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> +<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> +<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> +<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> +<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> +<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> +<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> +<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> +<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> +<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> +<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> +<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> +<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> +<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> +<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> +<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> +<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> +<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> +<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> +<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> +<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> +<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> +<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> +<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> +<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> +<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> +<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> +<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> +<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> +<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> +<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> +<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> +<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> +<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> +<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> +<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> +<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> +<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> +<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> +<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> +<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> +<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> +<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> +<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> +<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> +<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> +<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> +<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> +<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> +<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> +<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> +<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> +<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> +<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> +<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> +<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> +<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> +<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> +<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> +<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> +<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> +<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> +<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> +<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> +<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> +<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> +<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> +<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> +<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> +<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> +<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> +<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> +<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> +<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> +<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> +<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> +<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> +<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> +<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> +<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> +<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> +<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> +<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> +<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> +<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> +<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> +<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> +<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> +<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> +<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> +<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> +<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> +<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> +<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> +<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> +<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> +<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> +<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> +<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> +<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> +<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> +<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> +<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> +<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> +<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> +<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> +<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> +<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> +<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> +<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> +<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> +<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> +<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> +<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> +<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> +<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> +<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> +<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> +<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> +<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> +<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> +<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> +<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> +<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> +<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> +<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> +<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> +<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> +<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> +<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> +<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> +<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> +<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> +<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> +<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> +<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> +<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> +<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> +<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> +<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> +<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> +<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> +<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> +<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> +<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> +<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> +<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> +<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> +<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> +<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> +<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> +<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> +<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> +<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> +<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> +<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> +<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> +<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> +<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> +<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> +<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> +<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> +<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> +<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> +<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> +<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> +<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> +<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> +<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> +<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> +<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/assets/fonts/glyphicons-halflings-regular.ttf b/assets/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/assets/fonts/glyphicons-halflings-regular.ttf differ diff --git a/assets/fonts/glyphicons-halflings-regular.woff b/assets/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/assets/fonts/glyphicons-halflings-regular.woff differ diff --git a/assets/fonts/glyphicons-halflings-regular.woff2 b/assets/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/assets/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/assets/fonts/googlesans-medium-webfont.woff b/assets/fonts/googlesans-medium-webfont.woff new file mode 100644 index 0000000..e7d51fc Binary files /dev/null and b/assets/fonts/googlesans-medium-webfont.woff differ diff --git a/assets/fonts/googlesans-regular-webfont.woff b/assets/fonts/googlesans-regular-webfont.woff new file mode 100644 index 0000000..e89569e Binary files /dev/null and b/assets/fonts/googlesans-regular-webfont.woff differ diff --git a/assets/fonts/ionicons.eot b/assets/fonts/ionicons.eot new file mode 100644 index 0000000..7e677c6 Binary files /dev/null and b/assets/fonts/ionicons.eot differ diff --git a/assets/fonts/ionicons.svg b/assets/fonts/ionicons.svg new file mode 100644 index 0000000..9252bab --- /dev/null +++ b/assets/fonts/ionicons.svg @@ -0,0 +1,1899 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2014-6-16: Created. +--> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +Created by FontForge 20120731 at Mon Jun 16 13:18:27 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) +</metadata> +<defs> +<font id="Ionicons" horiz-adv-x="448" > + <font-face + font-family="Ionicons" + font-weight="500" + font-stretch="normal" + units-per-em="512" + panose-1="2 0 6 3 0 0 0 0 0 0" + ascent="448" + descent="-64" + bbox="-0.5 -64.0026 512.487 448" + underline-thickness="25.6" + underline-position="-51.2" + unicode-range="U+F100-F358" + /> + <missing-glyph /> + <glyph glyph-name="ion-alert-circled" unicode="&#xf100;" +d="M445 26c3 -5 5 -13 2 -18s-8 -8 -14 -8h-418c-6 0 -11 3 -14 8s-1 13 2 18l207 349c3 5 8 9 14 9s11 -4 14 -9zM256 48v48h-64v-48h64zM256 128v144h-64v-144h64z" /> + <glyph glyph-name="ion-alert" unicode="&#xf101;" horiz-adv-x="128" +d="M128 -32h-128v96h128v-96zM112 128h-96l-16 288h128z" /> + <glyph glyph-name="ion-android-add-contact" unicode="&#xf2c6;" horiz-adv-x="512" +d="M258 174c59 -18 95 -58 108 -110h-366c13 52 49 92 108 110c22 -13 48 -20 75 -20s53 7 75 20zM183 184c-73 0 -132 59 -132 132s59 132 132 132s132 -59 132 -132s-59 -132 -132 -132zM276 280h-185c14 -37 50 -63 92 -63s79 26 93 63zM512 48v-32h-80v-80h-32v80h-80 +v32h80v80h32v-80h80z" /> + <glyph glyph-name="ion-android-add" unicode="&#xf2c7;" horiz-adv-x="512" +d="M512 224v-64h-224v-224h-64v224h-224v64h224v224h64v-224h224z" /> + <glyph glyph-name="ion-android-alarm" unicode="&#xf2c8;" horiz-adv-x="512" +d="M256 400c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM392 40c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM224 160l16 176h24l8 -160 +l80 -96l-16 -16zM388 432c53 -27 97 -71 124 -124l-28 -15c-12 24 -28 45 -47 64s-40 35 -64 47l15 28v0zM124 432v0l15 -28c-24 -12 -45 -28 -64 -47s-35 -40 -47 -64l-28 15c27 53 71 97 124 124z" /> + <glyph glyph-name="ion-android-archive" unicode="&#xf2c9;" horiz-adv-x="512" +d="M432 400l80 -64v-352h-512v352l80 64h352zM256 64l112 128h-56v56h-112v-56h-56zM36 336h440l-60 48h-320z" /> + <glyph glyph-name="ion-android-arrow-back" unicode="&#xf2ca;" horiz-adv-x="256" +d="M256 448l-144 -256l144 -256h-112l-144 256l144 256h112z" /> + <glyph glyph-name="ion-android-arrow-down-left" unicode="&#xf2cb;" horiz-adv-x="480" +d="M0 256h80v-167l343 343l57 -57l-343 -343h167v-80h-304v304z" /> + <glyph glyph-name="ion-android-arrow-down-right" unicode="&#xf2cc;" horiz-adv-x="480" +d="M480 256v-304h-304v80h167l-343 343l57 57l343 -343v167h80z" /> + <glyph glyph-name="ion-android-arrow-forward" unicode="&#xf30f;" horiz-adv-x="256" +d="M0 448h112l144 -256l-144 -256h-112l144 256z" /> + <glyph glyph-name="ion-android-arrow-up-left" unicode="&#xf2cd;" horiz-adv-x="480" +d="M304 432v-80h-167l343 -343l-57 -57l-343 343v-167h-80v304h304z" /> + <glyph glyph-name="ion-android-arrow-up-right" unicode="&#xf2ce;" horiz-adv-x="480" +d="M176 432h304v-304h-80v167l-343 -343l-57 57l343 343h-167v80z" /> + <glyph glyph-name="ion-android-battery" unicode="&#xf2cf;" horiz-adv-x="256" +d="M192 352h64v-32v-352h-256v352v32h64v32v32h128v-32v-32zM224 224v96h-64v64h-64v-64h-64v-96h192z" /> + <glyph glyph-name="ion-android-book" unicode="&#xf2d0;" horiz-adv-x="512" +d="M0 448l176 -112v-384l-176 144v352zM512 448v-352l-176 -144v384zM208 -64v384h96v-384h-96zM426 442c17 0 38 -2 38 -2l-160 -96h-48h-48l-160 96s21 2 38 2s54 1 106 -26s64 -44 64 -44s12 17 64 44s89 26 106 26z" /> + <glyph glyph-name="ion-android-calendar" unicode="&#xf2d1;" horiz-adv-x="512" +d="M502 416c6 0 10 -4 10 -10v-460c0 -6 -4 -10 -10 -10h-492c-6 0 -10 4 -10 10v460c0 6 4 10 10 10h102v32h64v-32h160v32h64v-32h102zM480 -32v416h-80v-32h-64v32h-160v-32h-64v32h-80v-416h448z" /> + <glyph glyph-name="ion-android-call" unicode="&#xf2d2;" horiz-adv-x="512" +d="M451 98c38 -28 56 -46 60 -62c4 -19 -7 -26 -40 -64c-32 -37 -61 -36 -84 -36s-61 12 -121 48c-22 14 -49 33 -74 54c-15 12 -35 30 -52 48c-12 12 -24 25 -32 35c-21 25 -40 52 -54 74c-36 60 -54 105 -54 128s-1 52 36 84c38 33 45 44 64 40c16 -4 34 -23 62 -60 +s46 -64 40 -76c-8 -15 -25 -23 -56 -39c-11 -6 -32 -18 -28 -28c5 -13 28 -55 81 -109l13 -13v0c48 -44 84 -63 96 -68c10 -4 22 17 28 28c16 31 24 48 39 56c12 6 39 -12 76 -40zM417 353c-31 31 -71 49 -113 52v43c112 -7 201 -96 208 -208h-43c-3 42 -21 82 -52 113z +M304 358c57 -14 103 -61 117 -118h-44c-12 34 -39 61 -73 73v45z" /> + <glyph glyph-name="ion-android-camera" unicode="&#xf2d3;" horiz-adv-x="512" +d="M96 368l-80 -32v48h80v-16zM336 352h176v-352h-512v304l128 48h48v48h32h96h32v-48zM256 48c71 0 128 57 128 128s-57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128zM156 176c0 67 33 100 100 100s100 -33 100 -100s-33 -100 -100 -100s-100 33 -100 100z" /> + <glyph glyph-name="ion-android-chat" unicode="&#xf2d4;" horiz-adv-x="480" +d="M224 448c141 0 256 -115 256 -256s-115 -256 -256 -256v64c-124 0 -224 100 -224 224s100 224 224 224v0zM208 246v48c0 6 -4 10 -10 10h-92c-6 0 -10 -4 -10 -10v-108c0 -6 4 -10 10 -10h70v-16c0 -9 -7 -16 -16 -16v-32c26 0 48 22 48 48v26v60zM384 246v48 +c0 6 -4 10 -10 10h-92c-6 0 -10 -4 -10 -10v-108c0 -6 4 -10 10 -10h70v-16c0 -9 -7 -16 -16 -16v-32c26 0 48 22 48 48v26v60z" /> + <glyph glyph-name="ion-android-checkmark" unicode="&#xf2d5;" horiz-adv-x="512" +d="M176 -16l-176 176l80 83l112 -107l248 248l72 -72z" /> + <glyph glyph-name="ion-android-clock" unicode="&#xf2d6;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM192 176l16 176h24l8 -160 +l80 -96l-16 -16z" /> + <glyph glyph-name="ion-android-close" unicode="&#xf2d7;" horiz-adv-x="407" +d="M407 350l-158 -158l158 -158l-45 -46l-158 159l-159 -159l-45 46l158 158l-158 158l45 46l159 -159l158 159z" /> + <glyph glyph-name="ion-android-contact" unicode="&#xf2d8;" horiz-adv-x="488" +d="M344 82c78 -24 126 -77 144 -146h-488c18 69 66 122 144 146c30 -17 64 -26 100 -26s70 9 100 26zM244 448c97 0 176 -79 176 -176s-79 -176 -176 -176s-176 79 -176 176s79 176 176 176zM244 140c56 0 104 35 123 84h-246c19 -49 67 -84 123 -84z" /> + <glyph glyph-name="ion-android-contacts" unicode="&#xf2d9;" horiz-adv-x="512" +d="M237 85c54 -16 87 -53 99 -101h-336c12 47 45 85 99 101c20 -12 44 -19 69 -19s49 7 69 19zM168 336c67 0 121 -54 121 -121s-54 -121 -121 -121s-121 54 -121 121s54 121 121 121zM168 123c38 0 71 26 84 58h-169c13 -32 47 -58 85 -58zM332 48c-15 23 -38 42 -68 54 +c13 11 24 23 32 37c15 -6 31 -9 48 -9c25 0 49 7 69 19c54 -16 87 -53 99 -101h-180zM314 245c-9 42 -36 78 -72 99c22 34 59 56 102 56c67 0 121 -54 121 -121s-54 -121 -121 -121c-13 0 -25 2 -37 6c3 9 6 18 8 28c9 -3 19 -5 29 -5c38 0 71 26 84 58h-114z" /> + <glyph glyph-name="ion-android-data" unicode="&#xf2da;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM88 56v0v0v0zM240 1c40 3 77 18 108 44l-124 147v144l-16 47c-40 -3 -77 -18 -108 -44l28 -39l-11 -12l-39 28c-26 -31 -42 -68 -45 -108l47 -8v-16l-47 -8 +c3 -40 18 -77 44 -108l39 28l12 -11l-28 -39c31 -26 68 -42 108 -45l8 47h16z" /> + <glyph glyph-name="ion-android-developer" unicode="&#xf2db;" horiz-adv-x="512" +d="M140 7c10 0 19 -8 20 -18v-1v-1c0 -10 -10 -19 -20 -19v0v0h-8c-46 0 -79 20 -79 77c0 15 1 31 3 46s2 31 2 45s-1 34 -36 34c-12 0 -22 10 -22 22v0v0c0 12 10 22 22 22c35 0 36 20 36 34s-1 30 -3 45s-3 31 -3 46c0 57 34 77 80 77h8v0v0c10 0 20 -9 20 -19v-1v-1 +c-1 -10 -10 -18 -20 -18h-1c-27 -2 -41 -7 -43 -41c-1 -13 0 -26 1 -40c1 -15 3 -29 4 -43c2 -32 -3 -49 -24 -61v0v0c21 -12 26 -29 24 -61c-1 -14 -3 -28 -4 -43c-1 -14 -2 -26 -1 -40c2 -34 16 -39 43 -41h1zM372 7h1c27 2 41 7 43 41c1 14 0 26 -1 40c-1 15 -3 29 -4 43 +c-2 32 3 49 24 61v0v0c-21 12 -26 29 -24 61c1 14 3 28 4 43c1 14 2 27 1 40c-2 34 -16 39 -43 41h-1c-10 0 -19 8 -20 18v1v1c0 10 10 19 20 19v0v0h7c46 0 80 -20 80 -77c0 -15 -1 -31 -3 -46s-2 -31 -2 -45s1 -34 36 -34c12 0 22 -10 22 -22v0v0c0 -12 -10 -22 -22 -22 +c-35 0 -36 -20 -36 -34s1 -30 2 -45c2 -15 3 -31 3 -46c0 -57 -34 -77 -80 -77h-7v0v0c-10 0 -20 9 -20 19v1v1c1 10 10 18 20 18z" /> + <glyph glyph-name="ion-android-display" unicode="&#xf2dc;" horiz-adv-x="501" +d="M449 192l52 -53l-74 -29l25 -76l-79 6l-10 -78l-69 40l-44 -66l-44 66l-68 -40l-10 78l-79 -6l25 76l-74 29l52 53l-52 53l74 29l-25 76l79 -6l10 78l68 -40l44 66l44 -66l69 40l10 -78l79 6l-25 -76l74 -29zM250 32c88 0 160 72 160 160s-72 160 -160 160v-320z" /> + <glyph glyph-name="ion-android-download" unicode="&#xf2dd;" +d="M264 256h88l-128 -128l-128 128h88v175v1h80v-1v-175zM296 404c88 -30 152 -114 152 -212c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 98 64 182 152 212v-34c-24 -10 -46 -24 -64 -42c-36 -36 -56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56 +s56 85 56 136s-20 100 -56 136c-19 18 -40 32 -64 42v34zM96 80v16h256v-16h-256z" /> + <glyph glyph-name="ion-android-drawer" unicode="&#xf310;" horiz-adv-x="256" +d="M0 320v64h256v-64h-256zM0 0v64h256v-64h-256zM0 160v64h256v-64h-256z" /> + <glyph glyph-name="ion-android-dropdown" unicode="&#xf2de;" horiz-adv-x="288" +d="M0 32l288 288v-288h-288z" /> + <glyph glyph-name="ion-android-earth" unicode="&#xf2df;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM32 192c0 -51 20 -100 56 -136c31 -31 71 -49 113 -54c6 16 22 31 8 42c-9 7 -17 14 -25 22c-3 3 -11 21 -9 24c6 9 7 16 9 27c3 13 -4 17 -15 24c-16 10 -31 24 -47 36 +c-8 6 -18 10 -21 20s-4 22 -10 30c-15 22 -13 38 -11 64c0 7 -1 17 -2 26c-30 -35 -46 -79 -46 -125zM360 56c36 36 56 85 56 136s-20 100 -56 136c-30 30 -67 48 -108 54v-9l4 -10l-15 -14l-9 3l-11 11l-11 13l-15 6c-17 -3 -33 -8 -49 -15c0 -2 1 -4 1 -7c8 3 16 5 24 8 +c3 1 14 -7 17 -9c-4 -5 -22 -17 -23 -23c0 -2 7 -7 7 -11v-18c4 3 21 22 23 22c14 4 37 -19 39 -27s-23 -26 -35 -37c-9 -9 -26 -13 -21 -26c2 -4 11 -22 6 -26c-6 -5 -16 10 -19 13c-9 11 -28 7 -41 7c0 -19 -1 -33 16 -46c16 -12 32 -27 51 -35c14 -6 38 8 50 -1 +c17 -12 32 -24 51 -32c8 -4 36 -21 28 -33c-5 -8 -11 -16 -15 -25s-13 -20 -21 -26c-9 -7 -19 -19 -24 -32c38 7 72 25 100 53zM391 262c7 -10 4 -38 4 -50c0 -22 2 -44 -5 -65c-12 9 -23 26 -25 48c-2 23 1 41 -3 61c-3 17 -21 34 -29 50c-7 15 -15 30 -22 45 +c2 -1 6 -2 8 -3c14 -13 27 -26 41 -39c12 -12 21 -33 31 -47z" /> + <glyph glyph-name="ion-android-folder" unicode="&#xf2e0;" horiz-adv-x="512" +d="M432 16h-432v352h144l48 -64h240v-32h-368l-40 -128l16 -16l40 128h432z" /> + <glyph glyph-name="ion-android-forums" unicode="&#xf2e1;" horiz-adv-x="512" +d="M422 432c6 0 10 -4 10 -10v-268c0 -6 -4 -10 -10 -10h-230l-112 -112v112h-70c-6 0 -10 4 -10 10v268c0 6 4 10 10 10h412zM502 352c6 0 10 -4 10 -10v-268c0 -6 -4 -10 -10 -10h-70v-112l-112 112h-160l48 48h223c22 0 33 13 33 33v207h38z" /> + <glyph glyph-name="ion-android-friends" unicode="&#xf2e2;" horiz-adv-x="512" +d="M325 117c54 -16 87 -53 99 -101h-336c12 48 45 85 99 101c20 -12 44 -19 69 -19s49 7 69 19zM256 368c67 0 121 -54 121 -121s-54 -121 -121 -121s-121 54 -121 121s54 121 121 121zM256 155c38 0 71 26 84 58h-169c13 -32 47 -58 85 -58zM412 86c-18 20 -42 36 -72 46 +c8 6 18 11 30 15c12 -7 26 -11 41 -11s29 4 41 11c32 -10 53 -32 60 -61h-100zM411 298c40 0 73 -33 73 -73s-33 -73 -73 -73c-18 0 -34 7 -47 18c3 5 6 10 9 16c10 -9 23 -16 38 -16c23 0 43 15 51 35h-81c4 12 6 25 6 38c0 16 -3 33 -9 47c10 5 21 8 33 8zM172 132 +c-30 -10 -54 -26 -72 -46h-100c7 29 27 51 59 61c12 -7 27 -11 42 -11s29 4 41 11c12 -4 22 -9 30 -15zM101 170c15 0 28 7 38 16c3 -6 5 -11 9 -16c-13 -11 -29 -18 -47 -18c-40 0 -73 33 -73 73s33 73 73 73c12 0 23 -3 33 -8c-6 -14 -9 -31 -9 -47c0 -13 2 -26 6 -38h-81 +c8 -20 28 -35 51 -35z" /> + <glyph glyph-name="ion-android-hand" unicode="&#xf2e3;" horiz-adv-x="473" +d="M459 172c17 -17 19 -42 2 -59c0 0 -110 -118 -144 -139v0c-32 -24 -73 -38 -113 -38c-63 0 -117 41 -135 97v1v0c0 1 -1 3 -1 4l-66 216c-6 17 2 36 19 42s35 -3 41 -20l38 -102c2 -4 3 -1 3 2l-26 184c-3 17 9 35 26 38s34 -10 37 -27l29 -157c0 -3 2 -2 2 0l1 202 +c0 18 14 32 32 32s32 -14 32 -32l9 -200c0 -5 3 -5 4 -1l27 154c2 18 18 31 36 29s29 -19 27 -37l-24 -196c-2 -13 -4 -34 2 -41c9 -10 24 -10 36 2l48 48c17 17 41 15 58 -2z" /> + <glyph glyph-name="ion-android-image" unicode="&#xf2e4;" horiz-adv-x="512" +d="M0 448h512v-512h-512v512zM480 -32v448h-448v-448h448zM448 88v-88h-384v136l96 64l112 -96l80 40z" /> + <glyph glyph-name="ion-android-inbox" unicode="&#xf2e5;" horiz-adv-x="512" +d="M416 416l96 -256v-192h-512v192l96 256h320zM336 160h112l-64 216h-256l-64 -216h112c0 -44 36 -80 80 -80s80 36 80 80z" /> + <glyph glyph-name="ion-android-information" unicode="&#xf2e6;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM256 67v157h-64v-157h64zM224 272c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40z" /> + <glyph glyph-name="ion-android-keypad" unicode="&#xf2e7;" horiz-adv-x="384" +d="M96 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76 +c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM96 234c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 234c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 234c0 -6 -4 -10 -10 -10 +h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM96 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76z +M243 -22c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76z" /> + <glyph glyph-name="ion-android-lightbulb" unicode="&#xf2e8;" horiz-adv-x="352" +d="M176 448c97 0 176 -79 176 -176c0 -62 -24 -117 -72 -148v-156h-32v-32h-144v32h-32v156c-48 31 -72 86 -72 148c0 97 79 176 176 176zM248 0v16h-144v-16h144zM248 48v16h-144v-16h144zM262 151c37 24 58 67 58 121c0 38 -15 75 -42 102s-64 42 -102 42 +s-75 -15 -102 -42s-42 -64 -42 -102c0 -54 21 -97 58 -121l14 -9v-18v-28h144v28v18z" /> + <glyph glyph-name="ion-android-locate" unicode="&#xf2e9;" horiz-adv-x="512" +d="M160 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96zM512 208v-32h-65c-4 -47 -22 -87 -55 -120s-73 -51 -120 -55v-65h-32v65c-47 4 -87 22 -120 55s-51 73 -55 120h-65v32h65c1 13 3 26 7 39s9 24 15 35s13 22 21 32s16 18 26 26s21 15 32 21 +s22 11 35 15s26 6 39 7v65h32v-65c47 -4 87 -22 120 -55s51 -73 55 -120h65zM256 49c39 0 73 14 101 42s42 62 42 101s-14 73 -42 101s-62 42 -101 42s-73 -14 -101 -42s-42 -62 -42 -101s14 -73 42 -101s62 -42 101 -42z" /> + <glyph glyph-name="ion-android-location" unicode="&#xf2ea;" horiz-adv-x="320" +d="M320 288c0 -20 -3 -39 -10 -57v0l-1 -1v-1c-67 -171 -149 -293 -149 -293v0s-82 121 -149 292v2l-1 1v0c-7 18 -10 37 -10 57c0 88 72 160 160 160s160 -72 160 -160zM160 256c26 0 48 22 48 48s-22 48 -48 48s-48 -22 -48 -48s22 -48 48 -48z" /> + <glyph glyph-name="ion-android-mail" unicode="&#xf2eb;" horiz-adv-x="512" +d="M256 142l256 124v-266h-512v266zM512 310l-256 -123l-256 123v74h512v-74z" /> + <glyph glyph-name="ion-android-microphone" unicode="&#xf2ec;" horiz-adv-x="320" +d="M225 192c0 -35 -29 -64 -64 -64v0c-35 0 -64 29 -64 64v160c0 35 29 64 64 64v0c35 0 64 -29 64 -64v-160zM272 208h48v-8c0 -80 -59 -147 -135 -159v-73h-48v73c-78 11 -137 78 -137 159v8h48v-8c0 -30 12 -59 33 -80s49 -32 79 -32s58 11 79 32s33 50 33 80v8z" /> + <glyph glyph-name="ion-android-mixer" unicode="&#xf2ed;" horiz-adv-x="512" +d="M0 335v32h304v-32h-304zM432 335v32h80v-32h-80zM0 176v32h80v-32h-80zM208 176v32h304v-32h-304zM0 14v32h304v-32h-304zM432 14v32h80v-32h-80zM192 136c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112zM416 296 +c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112zM416 -24c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112z" /> + <glyph glyph-name="ion-android-more" unicode="&#xf2ee;" horiz-adv-x="128" +d="M0 128v128h128v-128h-128zM0 320v128h128v-128h-128zM0 -64v128h128v-128h-128z" /> + <glyph glyph-name="ion-android-note" unicode="&#xf2ef;" horiz-adv-x="464" +d="M0 448h464v-512h-464v512zM40 384v-64h256v64h-256zM424 32v48h-384v-48h384zM424 128v48h-384v-48h384zM424 224v48h-384v-48h384z" /> + <glyph glyph-name="ion-android-playstore" unicode="&#xf2f0;" horiz-adv-x="512" +d="M512 320c-23 -265 -16 -384 -16 -384h-480s7 116 -16 384h128c0 71 57 128 128 128s128 -57 128 -128h128zM256 416c-53 0 -96 -43 -96 -96h192c0 53 -43 96 -96 96zM192 16l176 104l-176 104v-208z" /> + <glyph glyph-name="ion-android-printer" unicode="&#xf2f1;" horiz-adv-x="512" +d="M96 320v96h320v-96h-320zM512 229v0v-165h-96v-96h-320v96h-96v165v0c0 33 27 59 60 59h392c33 0 60 -26 60 -59zM352 32v128h-192v-128h192zM416 200c13 0 24 11 24 24s-11 24 -24 24s-24 -11 -24 -24s11 -24 24 -24z" /> + <glyph glyph-name="ion-android-promotion" unicode="&#xf2f2;" horiz-adv-x="384" +d="M384 256l-192 -192l-192 192v192h192v0zM96 304c26 0 48 22 48 48s-22 48 -48 48s-48 -22 -48 -48s22 -48 48 -48zM384 192v-64l-192 -192l-192 192v64l192 -192z" /> + <glyph glyph-name="ion-android-reminder" unicode="&#xf2f3;" horiz-adv-x="416" +d="M0 48l64 160v96c0 80 64 144 144 144v0c80 0 144 -64 144 -144v-96l64 -160zM208 -64c-54 0 -100 33 -119 80h238c-19 -47 -65 -80 -119 -80z" /> + <glyph glyph-name="ion-android-remove" unicode="&#xf2f4;" horiz-adv-x="512" +d="M0 160v64h512v-64h-512z" /> + <glyph glyph-name="ion-android-search" unicode="&#xf2f5;" horiz-adv-x="512" +d="M510 6c6 -6 -3 -27 -22 -46s-40 -28 -46 -22l-113 113c-4 4 -1 15 8 28l-40 40c-31 -24 -70 -39 -113 -39c-102 0 -184 82 -184 184s82 184 184 184s184 -82 184 -184c0 -43 -15 -82 -39 -113l40 -40c13 9 24 12 28 8zM184 120c38 0 75 15 102 42s42 64 42 102 +s-15 75 -42 102s-64 42 -102 42s-75 -15 -102 -42s-42 -64 -42 -102s15 -75 42 -102s64 -42 102 -42z" /> + <glyph glyph-name="ion-android-send" unicode="&#xf2f6;" horiz-adv-x="512" +d="M0 448l512 -256l-512 -256l43 235l426 21l-426 21z" /> + <glyph glyph-name="ion-android-settings" unicode="&#xf2f7;" horiz-adv-x="491" +d="M438 192c0 -14 -2 -28 -5 -42l58 -44l-48 -84l-67 29c-21 -19 -45 -33 -73 -42l-9 -73h-96l-9 73c-28 9 -52 23 -73 42l-68 -29l-48 84l58 44c-3 14 -4 28 -4 42s1 28 4 42l-58 44l48 84l68 -29c21 19 45 33 73 42l9 73h96l9 -73c28 -9 52 -23 73 -42l67 29l48 -84 +l-58 -44c3 -14 5 -28 5 -42zM246 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z" /> + <glyph glyph-name="ion-android-share" unicode="&#xf2f8;" horiz-adv-x="480" +d="M400 96c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80c0 5 0 10 1 14l-186 104c-14 -13 -34 -22 -55 -22c-44 0 -80 36 -80 80s36 80 80 80c21 0 41 -9 55 -22l186 104c-1 5 -1 9 -1 14c0 44 36 80 80 80s80 -36 80 -80s-36 -80 -80 -80c-22 0 -42 9 -56 23 +l-186 -102c1 -5 2 -11 2 -17s-1 -12 -2 -17l185 -102c14 14 35 23 57 23z" /> + <glyph glyph-name="ion-android-social-user" unicode="&#xf2f9;" horiz-adv-x="512" +d="M142 334c0 76 38 114 114 114s114 -38 114 -114s-38 -114 -114 -114s-114 38 -114 114zM502 50c7 -7 10 -14 10 -22v-92h-512v92c0 8 3 15 10 22c61 61 143 91 246 91s185 -30 246 -91z" /> + <glyph glyph-name="ion-android-social" unicode="&#xf2fa;" horiz-adv-x="512" +d="M256 280c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM73 213c0 41 20 61 61 61s61 -20 61 -61s-20 -61 -61 -61s-61 20 -61 61zM136 112c7 0 15 -1 24 -2v0v0c-21 -17 -31 -30 -32 -38v-72h-128v50c0 2 1 5 2 7s1 3 3 5c33 33 76 50 131 50zM505 80 +c5 -5 7 -10 7 -15v-65h-352v65c0 5 2 10 7 15c42 43 98 64 169 64s127 -21 169 -64z" /> + <glyph glyph-name="ion-android-sort" unicode="&#xf2fb;" horiz-adv-x="512" +d="M0 288v64h512v-64h-512zM0 160v64h352v-64h-352zM0 32v64h192v-64h-192z" /> + <glyph glyph-name="ion-android-stair-drawer" unicode="&#xf311;" horiz-adv-x="512" +d="M0 0v96h256v-96h-256zM128 144v96h256v-96h-256zM256 288v96h256v-96h-256z" /> + <glyph glyph-name="ion-android-star" unicode="&#xf2fc;" horiz-adv-x="512" +d="M512 246l-136 -121l40 -178l-160 85l-160 -85l40 178l-136 121l182 17l74 174l74 -174z" /> + <glyph glyph-name="ion-android-stopwatch" unicode="&#xf2fd;" +d="M240 383c116 -8 208 -105 208 -223c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 118 92 215 208 223v17h-32v48h96v-48h-32v-17zM360 24c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56 +s100 20 136 56zM337 273c3 -3 3 -8 0 -11l-74 -74c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48s-48 22 -48 48s22 48 48 48c10 0 20 -3 28 -9l74 74c3 3 8 3 11 0zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-android-storage" unicode="&#xf2fe;" +d="M0 256h448v-128h-448v128zM128 160v32h-96v-32h96zM0 416h448v-128h-448v128zM128 320v32h-96v-32h96zM0 96h448v-128h-448v128zM128 0v32h-96v-32h96z" /> + <glyph glyph-name="ion-android-system-back" unicode="&#xf2ff;" horiz-adv-x="512" +d="M416 256c53 0 96 -43 96 -96s-43 -96 -96 -96h-192v32h192c35 0 64 29 64 64s-29 64 -64 64v0h-361l67 -80h-42l-80 96l80 96h42l-67 -80h361z" /> + <glyph glyph-name="ion-android-system-home" unicode="&#xf300;" horiz-adv-x="512" +d="M256 303l-224 -84v-123h448v123zM256 338v0l256 -96v-178h-512v178z" /> + <glyph glyph-name="ion-android-system-windows" unicode="&#xf301;" horiz-adv-x="512" +d="M0 256h416v-192h-416v192zM384 96v128h-352v-128h352zM128 320h384v-192h-32v160h-352v32z" /> + <glyph glyph-name="ion-android-timer" unicode="&#xf302;" horiz-adv-x="320" +d="M210 202c87 -46 110 -206 110 -234h-320c0 27 23 188 110 234c-87 41 -110 187 -110 214h320c0 -26 -23 -172 -110 -214zM61 304c12 -25 25 -44 41 -58c17 -15 36 -22 58 -22s41 7 58 22c16 14 29 34 41 59c12 26 19 52 23 69c1 3 2 10 2 10h-248c4 -21 12 -52 25 -80z +M284 0c-4 25 -12 58 -26 91c-12 29 -25 51 -41 67c-17 17 -36 25 -57 25s-39 -8 -56 -25c-16 -16 -30 -38 -42 -67c-14 -33 -22 -66 -26 -91h248z" /> + <glyph glyph-name="ion-android-trash" unicode="&#xf303;" horiz-adv-x="352" +d="M16 249c39 -10 68 -21 160 -21s121 12 160 21c-2 -54 -10 -224 -11 -266c-1 -25 -66 -46 -147 -46s-145 21 -146 46c-2 34 -13 212 -16 266zM256 374c81 -10 96 -10 96 -53s-68 -59 -176 -59s-176 16 -176 58s17 44 96 54v66c0 6 5 8 11 8h140c6 0 9 -2 9 -8v-66z +M128 416v-39c15 1 31 1 48 1s34 0 48 -1v39h-96z" /> + <glyph glyph-name="ion-android-user-menu" unicode="&#xf312;" +d="M144 232c-28 0 -52 17 -62 42h124c-10 -25 -34 -42 -62 -42zM0 416h288v-288h-21c-9 35 -32 62 -72 74c-15 -8 -33 -13 -51 -13s-36 5 -51 13c-40 -12 -63 -39 -72 -74h-21v288zM144 209c49 0 89 40 89 89s-40 89 -89 89s-89 -40 -89 -89s40 -89 89 -89zM320 288v128h128 +v-128h-128zM320 128v128h128v-128h-128zM320 -32v128h128v-128h-128zM160 -32v128h128v-128h-128zM0 -32v128h128v-128h-128z" /> + <glyph glyph-name="ion-android-volume" unicode="&#xf304;" horiz-adv-x="512" +d="M234 448c54 0 70 -115 70 -256s-16 -256 -70 -256c-42 0 -74 64 -138 160h-64c-18 0 -32 43 -32 96s14 96 32 96h64c64 96 96 160 138 160zM240 -14c24 0 34 82 34 206s-10 206 -34 206c-18 0 -24 -78 -27 -144c28 -7 43 -32 43 -62s-15 -55 -43 -62 +c3 -66 9 -144 27 -144zM466 370c30 -52 46 -113 46 -178s-17 -126 -47 -178l-23 24c4 8 8 16 12 25c17 41 26 84 26 129s-9 88 -26 129c-4 9 -8 17 -12 25zM411 295c23 -28 37 -64 37 -103s-14 -75 -37 -103l-22 23c18 23 27 51 27 80c0 30 -9 57 -27 80zM375 229 +c6 -11 9 -24 9 -37s-3 -27 -9 -38l-30 12c4 8 7 17 7 26s-3 18 -7 26z" /> + <glyph glyph-name="ion-android-wifi" unicode="&#xf305;" horiz-adv-x="512" +d="M333 181c20 -8 38 -20 54 -34l-54 -61c-21 16 -48 26 -77 26s-56 -10 -77 -26l-54 61c16 14 34 26 54 34c24 10 50 16 77 16s53 -6 77 -16zM256 96c24 0 47 -8 66 -22l-66 -74l-66 74c19 14 42 22 66 22zM372 269c29 -12 56 -28 80 -49l-55 -61c-38 34 -87 54 -141 54 +s-103 -21 -141 -54l-55 61c24 21 51 37 80 49c37 16 76 24 116 24s79 -8 116 -24zM256 384c98 0 188 -36 256 -96l-50 -56c-55 48 -127 77 -206 77s-151 -29 -206 -77l-50 56c68 60 158 96 256 96z" /> + <glyph glyph-name="ion-aperture" unicode="&#xf313;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM168 342l56 -86h-147 +c17 40 50 71 91 86zM381 160h-102l72 129c21 -27 33 -60 33 -97c0 -11 -1 -22 -3 -32zM328 314l-49 -90l-78 126c8 1 15 2 23 2c40 0 76 -14 104 -38zM67 224h102l-72 -129c-21 27 -33 60 -33 97c0 11 1 22 3 32zM280 42l-56 86h147c-17 -40 -50 -71 -91 -86zM120 70l49 90 +l78 -126c-8 -1 -15 -2 -23 -2c-40 0 -76 14 -104 38z" /> + <glyph glyph-name="ion-archive" unicode="&#xf102;" +d="M224 140l-128 116h80v96h96v-96h80zM433 151c11 -6 17 -19 15 -32l-9 -67c-2 -13 -9 -20 -28 -20h-374c-18 0 -26 7 -28 20l-9 67c-2 13 3 26 14 32l72 55h42l-62 -62h50c2 0 5 -1 6 -3l18 -45h168l18 45c1 2 3 3 5 3h51l-62 62h42z" /> + <glyph glyph-name="ion-arrow-down-a" unicode="&#xf103;" horiz-adv-x="384" +d="M192 -0l-192 192h112v192h160v-192h112z" /> + <glyph glyph-name="ion-arrow-down-b" unicode="&#xf104;" horiz-adv-x="320" +d="M3 263c-2 2 -3 6 -3 9c0 9 8 16 17 16v0h286v0c9 0 17 -7 17 -16c0 -3 -1 -6 -3 -8l-2 -3l-136 -156c-5 -5 -11 -9 -19 -9s-14 4 -19 9l-136 156z" /> + <glyph glyph-name="ion-arrow-down-c" unicode="&#xf105;" horiz-adv-x="274" +d="M265 125l-105 -100c-6 -6 -14 -9 -23 -9s-16 3 -22 9l-106 100c-12 12 -12 31 0 43s34 12 46 0l50 -48v217c0 17 14 31 32 31s32 -14 32 -31v-217l50 48c12 12 34 12 46 0s12 -31 0 -43z" /> + <glyph glyph-name="ion-arrow-expand" unicode="&#xf25e;" horiz-adv-x="320" +d="M178 238l64 64l-50 50h128v-128l-50 50l-64 -64zM178 146l28 28l64 -64l50 50v-128h-128l50 50zM142 146l-64 -64l50 -50h-128v128l50 -50l64 64zM142 238l-28 -28l-64 64l-50 -50v128h128l-50 -50z" /> + <glyph glyph-name="ion-arrow-graph-down-left" unicode="&#xf25f;" +d="M0 64v160l61 -61l131 141l107 -112l149 128l-149 -203l-107 107l-94 -98l62 -62h-160z" /> + <glyph glyph-name="ion-arrow-graph-down-right" unicode="&#xf260;" +d="M288 64l62 62l-94 98l-107 -107l-149 203l149 -128l107 112l131 -141l61 61v-160h-160z" /> + <glyph glyph-name="ion-arrow-graph-up-left" unicode="&#xf261;" +d="M160 320l-62 -62l94 -98l107 107l149 -203l-149 128l-107 -112l-131 141l-61 -61v160h160z" /> + <glyph glyph-name="ion-arrow-graph-up-right" unicode="&#xf262;" +d="M288 320h160v-160l-61 61l-131 -141l-107 112l-149 -128l149 203l107 -107l94 98z" /> + <glyph glyph-name="ion-arrow-left-a" unicode="&#xf106;" horiz-adv-x="384" +d="M0 192l192 192v-112h192v-160h-192v-112z" /> + <glyph glyph-name="ion-arrow-left-b" unicode="&#xf107;" horiz-adv-x="192" +d="M167 349c2 2 6 3 9 3c9 0 16 -8 16 -17v0v-286v0c0 -9 -7 -17 -16 -17c-3 0 -7 1 -9 3l-2 2l-156 136c-5 5 -9 11 -9 19s4 14 9 19l156 136z" /> + <glyph glyph-name="ion-arrow-left-c" unicode="&#xf108;" horiz-adv-x="352" +d="M109 320c12 12 32 12 44 0s12 -34 0 -46l-49 -50h217c17 0 31 -14 31 -32s-14 -32 -31 -32h-217l48 -50c12 -12 12 -34 0 -46s-31 -12 -43 0l-100 106c-6 6 -9 13 -9 22s3 17 9 23z" /> + <glyph glyph-name="ion-arrow-move" unicode="&#xf263;" +d="M448 192l-96 -96v76h-109l1 -108h76l-96 -96l-96 96h76v108h-108v-76l-96 96l96 96v-76h108v108h-76l96 96l96 -96h-76v-108h108v76z" /> + <glyph glyph-name="ion-arrow-resize" unicode="&#xf264;" horiz-adv-x="320" +d="M192 352h128v-128l-50 50l-9 -9l-183 -183l50 -50h-128v128l50 -50l128 128v0l64 64z" /> + <glyph glyph-name="ion-arrow-return-left" unicode="&#xf265;" horiz-adv-x="384" +d="M128 352v-64h248c4 0 8 -4 8 -8v-240c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v48c0 4 4 8 8 8h248v128h-192v-64l-128 96z" /> + <glyph glyph-name="ion-arrow-return-right" unicode="&#xf266;" horiz-adv-x="384" +d="M384 256l-128 -96v64h-192v-128h248c4 0 8 -4 8 -8v-48c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v240c0 4 4 8 8 8h248v64z" /> + <glyph glyph-name="ion-arrow-right-a" unicode="&#xf109;" horiz-adv-x="384" +d="M384 192l-192 -192v112h-192v160h192v112z" /> + <glyph glyph-name="ion-arrow-right-b" unicode="&#xf10a;" horiz-adv-x="192" +d="M25 35c-2 -2 -6 -3 -9 -3c-9 0 -16 8 -16 17v0v286v0c0 9 7 17 16 17c3 0 6 -1 8 -3l3 -2l156 -136c5 -5 9 -11 9 -19s-4 -14 -9 -19l-156 -136z" /> + <glyph glyph-name="ion-arrow-right-c" unicode="&#xf10b;" horiz-adv-x="352" +d="M243 320l100 -105c6 -6 9 -14 9 -23s-3 -16 -9 -22l-100 -106c-12 -12 -31 -12 -43 0s-12 34 0 46l48 50h-217c-17 0 -31 14 -31 32s14 32 31 32h217l-49 50c-12 12 -12 34 0 46s32 12 44 0z" /> + <glyph glyph-name="ion-arrow-shrink" unicode="&#xf267;" horiz-adv-x="384" +d="M384 356l-82 -82l50 -50h-128v128l50 -50l82 82zM384 28l-28 -28l-82 82l-50 -50v128h128l-50 -50zM0 28l82 82l-50 50h128v-128l-50 50l-82 -82zM0 356l28 28l82 -82l50 50v-128h-128l50 50z" /> + <glyph glyph-name="ion-arrow-swap" unicode="&#xf268;" horiz-adv-x="384" +d="M0 120c0 4 4 8 8 8h248v64l128 -96l-128 -96v64h-248c-4 0 -8 4 -8 8v48zM384 264c0 -4 -4 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4 0 8 -4 8 -8v-48z" /> + <glyph glyph-name="ion-arrow-up-a" unicode="&#xf10c;" horiz-adv-x="384" +d="M192 384l192 -192h-112v-192h-160v192h-112z" /> + <glyph glyph-name="ion-arrow-up-b" unicode="&#xf10d;" horiz-adv-x="320" +d="M317 121c2 -2 3 -6 3 -9c0 -9 -8 -16 -17 -16v0h-286v0c-9 0 -17 7 -17 16c0 3 1 6 3 8l2 3l136 156c5 5 11 9 19 9s14 -4 19 -9l136 -156z" /> + <glyph glyph-name="ion-arrow-up-c" unicode="&#xf10e;" horiz-adv-x="274" +d="M9 259l105 100c6 6 14 9 23 9s16 -3 22 -9l106 -100c12 -12 12 -31 0 -43s-34 -12 -46 0l-50 48v-217c0 -17 -14 -31 -32 -31s-32 14 -32 31v217l-50 -49c-12 -12 -34 -12 -46 0s-12 32 0 44z" /> + <glyph glyph-name="ion-asterisk" unicode="&#xf314;" +d="M448 224v-64l-186 10l104 -170l-56 -32l-86 176l-86 -176l-56 32l104 170l-186 -10v64l187 -7l-109 167l60 32l86 -176l86 176l60 -32l-109 -167z" /> + <glyph glyph-name="ion-at" unicode="&#xf10f;" +d="M422 41c-24 -25 -52 -43 -85 -55s-69 -18 -105 -18c-35 0 -66 6 -95 17s-53 26 -73 46s-36 43 -47 71s-17 58 -17 90s6 62 18 89s29 51 50 71s46 35 74 47c28 11 58 17 90 17c28 0 55 -4 81 -12s49 -20 69 -36s36 -36 48 -60s18 -53 18 -85c0 -24 -3 -46 -10 -64 +s-16 -34 -27 -46s-24 -22 -38 -28s-29 -10 -45 -10s-29 4 -39 12s-15 17 -15 29h-3c-6 -10 -15 -19 -28 -28s-28 -13 -46 -13c-28 0 -49 9 -64 27s-23 42 -23 71c0 17 3 34 9 50s14 31 24 44s23 23 38 31s31 12 49 12c15 0 27 -4 38 -10c10 -6 18 -15 21 -24h1l5 24h54 +l-24 -113c-1 -6 -2 -12 -3 -19s-2 -13 -2 -19c0 -7 1 -13 4 -18s7 -7 15 -7c16 0 29 9 39 26s16 40 16 68c0 24 -4 45 -12 64s-20 34 -34 47s-32 23 -52 29s-41 9 -65 9c-26 0 -49 -4 -70 -13s-39 -22 -54 -38s-27 -34 -35 -56c-8 -21 -13 -44 -13 -69c0 -26 4 -51 13 -72 +s21 -39 37 -54s35 -27 57 -35s46 -12 72 -12c33 0 61 6 85 16s45 25 65 43zM231 260c-10 0 -18 -2 -25 -8s-14 -13 -19 -22s-8 -18 -11 -28s-4 -20 -4 -30c0 -5 0 -10 1 -16c1 -5 3 -10 6 -15s7 -8 12 -11s11 -5 19 -5c11 0 20 3 28 8s14 13 19 21s9 16 11 26s3 19 3 27 +c0 6 0 13 -1 19s-4 12 -7 17s-7 9 -12 12s-12 5 -20 5z" /> + <glyph glyph-name="ion-bag" unicode="&#xf110;" +d="M416 288l32 -320h-448l32 320h64v4c0 68 56 124 124 124h8c68 0 124 -56 124 -124v-4h64zM128 292v-4h192v4c0 51 -41 92 -92 92v0h-8c-51 0 -92 -41 -92 -92zM36 0h376l-25 256h-35v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36 +h-192v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36h-35z" /> + <glyph glyph-name="ion-battery-charging" unicode="&#xf111;" +d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM225 288l-100 -111h61l-27 -81l100 111h-61z" /> + <glyph glyph-name="ion-battery-empty" unicode="&#xf112;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-337v-192h337v32v32h32h15z" /> + <glyph glyph-name="ion-battery-full" unicode="&#xf113;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37z" /> + <glyph glyph-name="ion-battery-half" unicode="&#xf114;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-81l32 -192h49v32v32h32h15z" /> + <glyph glyph-name="ion-battery-low" unicode="&#xf115;" +d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM369 288h-209l32 -192h177v32v32h32h15v64h-15h-32v32v32z" /> + <glyph glyph-name="ion-beaker" unicode="&#xf269;" horiz-adv-x="384" +d="M375 52c6 -9 9 -20 9 -32c0 -28 -16 -52 -63 -52h-258c-47 0 -63 24 -63 52c0 12 3 23 9 32l49 73l48 73l2 3c13 20 20 45 20 71v92s-15 30 -15 39s6 13 15 13h127c9 0 16 -3 16 -12s-15 -20 -15 -40v-92c0 -26 6 -51 19 -71l3 -4l48 -72zM345 7c3 3 7 8 7 14 +c0 5 -2 10 -4 14l-49 72v0v1l-48 72s-2 3 -3 5c-16 26 -24 56 -24 87v74c0 7 0 18 1 22c5 18 0 16 -9 16h-47c-9 0 -15 2 -10 -16c1 -4 1 -16 1 -22v-75c0 -32 -9 -61 -25 -86l-3 -5l-47 -73v0v0l-49 -73c-2 -4 -4 -9 -4 -14c0 -6 3 -10 6 -13c4 -4 12 -7 25 -7h258 +c13 0 20 3 24 7zM327 37l1 -1c1 -2 2 -5 2 -7c0 -7 -6 -13 -14 -13v0h-16h-30h-157h-29h-16v0c-7 0 -14 5 -14 13c0 3 1 6 3 8l8 13l1 1v0v1l16 23l42 66l1 1v0v0l12 18h109l14 -20v0l1 -1l1 -2l40 -62l12 -18zM238 106c2 -1 4 -2 6 -2s3 0 5 2c1 2 3 4 3 6s-1 4 -3 6 +c-1 2 -3 2 -5 2s-4 0 -6 -2c-1 -2 -2 -4 -2 -6s0 -4 2 -6zM274 50c2 -2 5 -4 7 -4c1 0 3 0 4 1c4 2 4 7 2 11l-23 36c-1 2 -4 4 -7 4c-2 0 -3 0 -4 -1c-4 -2 -5 -7 -3 -11zM124 141v0c-4 -5 0 0 0 0z" /> + <glyph glyph-name="ion-beer" unicode="&#xf26a;" +d="M384 288c35 0 64 -29 64 -64v-96c0 -35 -29 -64 -64 -64h-32v-80c0 -9 -7 -16 -16 -16h-256c-9 0 -16 7 -16 16v223c-26 0 -48 22 -48 48v54v1c-10 11 -16 26 -16 42c0 35 29 64 64 64c18 0 34 -8 46 -20c10 12 26 20 43 20c14 0 27 -6 37 -14c12 9 26 14 42 14 +c17 0 34 -6 46 -16c11 10 26 16 42 16c35 0 64 -29 64 -64c0 -24 -18 -44 -32 -48v-16h32zM296 144c4 0 8 3 8 8v0v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -3 2 -6 4 -7c1 -1 2 -1 4 -1zM303 220c1 2 1 4 1 6s-1 4 -3 5s-4 1 -6 1s-4 -2 -5 -4s-2 -4 -2 -6s2 -4 4 -5 +s4 -1 6 -1s4 2 5 4zM320 288v32h-20c-3 -8 -7 -16 -13 -23c-13 -16 -33 -25 -55 -25c-26 0 -48 13 -61 33c-6 -2 -12 -3 -18 -3c-12 0 -23 4 -32 10c-2 1 -3 3 -5 4c-1 -2 -2 -3 -3 -5c-5 -6 -11 -10 -17 -14v-32v-9h80c0 4 4 8 8 8s8 -4 8 -8h128v32zM351 343c1 3 1 6 1 9 +c0 18 -14 32 -32 32c-9 0 -17 -4 -23 -10c-2 -2 -6 -5 -16 -6h-8c-6 1 -12 3 -14 5c-7 7 -16 11 -27 11c-9 0 -18 -4 -25 -9l-7 -7c0 -1 0 -1 -1 -2c-3 -3 -7 -5 -11 -5c-5 0 -8 3 -11 6c-1 2 -2 3 -3 5s-3 4 -5 6c-4 4 -10 6 -16 6c-10 0 -18 -9 -25 -16 +c-7 -8 -27 -8 -34 0s-18 16 -30 16c-18 0 -32 -14 -32 -32c0 -2 1 -5 1 -7c2 -9 7 -17 15 -21v-34v-35c0 -9 7 -16 16 -16v26v23v32c10 0 18 4 24 11c2 2 3 4 4 6c0 0 6 10 12 11s20 6 30 -5c4 -5 11 -9 19 -9c3 0 5 1 7 2c3 1 7 2 9 4v0c3 2 6 4 10 4c7 0 12 -4 14 -10 +c0 0 1 -1 1 -2c1 -3 1 -5 3 -8c7 -12 20 -20 35 -20c13 0 25 6 32 16c5 7 8 15 8 24s9 8 9 8h7h48c6 0 13 -3 15 -9zM416 128v96c0 18 -14 32 -32 32h-32v-160h32c18 0 32 14 32 32zM128 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM288 280c0 5 3 8 8 8s8 -3 8 -8 +s-3 -8 -8 -8s-8 3 -8 8z" /> + <glyph glyph-name="ion-bluetooth" unicode="&#xf116;" horiz-adv-x="256" +d="M12 304c16 16 18 13 19 12l68 -65v0v0c2 -2 10 -10 10 -3v156v0v2c0 6 6 10 12 10c4 0 7 -2 9 -4v0s117 -113 122 -117s5 -10 1 -14l-84 -81s-4 -4 -4 -8s4 -8 4 -8l84 -81c4 -4 4 -10 -1 -14s-122 -117 -122 -117v0c-2 -2 -5 -4 -9 -4c-6 0 -12 4 -12 10v2v0v156 +s-8 -1 -10 -3v0v-1l-68 -64c-1 -1 -3 -4 -19 12s-12 17 -11 18s90 86 90 86s4 3 4 8v0c0 5 -4 8 -4 8s-89 85 -90 86s-5 2 11 18zM152 328v-79c0 -8 8 -1 10 1l30 30s3 5 3 7s-1 5 -3 7l-30 30c-2 2 -10 11 -10 4zM152 135v-79s8 2 10 4l30 30c2 2 3 5 3 7s-1 5 -3 7l-30 30 +c-2 2 -10 9 -10 1z" /> + <glyph glyph-name="ion-bonfire" unicode="&#xf315;" horiz-adv-x="384" +d="M207 97l15 -89c1 -3 1 -5 1 -8c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 2 0 5 1 7l15 92v0c2 7 8 13 16 13s15 -7 16 -15zM242 93v0v0v0zM329 58c9 -8 10 -25 0 -35s-27 -9 -35 0c-1 1 -2 3 -3 4l-49 66c-3 5 -2 11 2 15c5 5 10 5 16 1l64 -47c2 -1 3 -3 5 -4zM309 113v0 +v0v0zM371 126c9 -1 13 -7 13 -19c0 -9 -10 -14 -18 -12l-57 18v0v0c-3 2 -6 5 -5 9s4 7 8 6zM75 113v0v0v0zM75 113v0l-58 -18c-8 -2 -17 3 -17 12c0 12 3 18 12 19l60 2c4 1 7 -2 8 -6s-2 -7 -5 -9v0zM124 109c5 4 11 4 16 -1c4 -4 5 -10 2 -15l-49 -66c-1 -1 -2 -3 -3 -4 +c-10 -10 -25 -10 -35 0s-10 25 0 35c2 2 3 3 5 4zM288 320c0 -32 -9 -58 -50 -86c-37 -26 -94 -46 -110 -106c0 0 -58 24 -48 96s124 106 112 192c24 0 96 -35 96 -96zM288 192c-16 -50 -44 -64 -80 -64c-15 0 -32 9 -43 26c12 15 28 26 47 37c9 5 20 10 29 16 +c21 14 38 31 47 49c5 -15 5 -48 0 -64zM88 288c-6 4 -9 14 -8 27c2 22 34 39 32 69c14 2 31 -3 42 -24c-5 -11 -15 -21 -28 -34s-26 -22 -38 -38z" /> + <glyph glyph-name="ion-bookmark" unicode="&#xf26b;" horiz-adv-x="192" +d="M184 384c4 0 8 -4 8 -8v-56h-192v56c0 4 4 8 8 8h176zM0 0v304h192v-304l-96 96z" /> + <glyph glyph-name="ion-briefcase" unicode="&#xf26c;" +d="M240 176v8h208v-176c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v176h208v-8h32zM440 304c4 0 8 -4 8 -8v-96h-208v8h-32v-8h-208v96c0 4 4 8 8 8h120v31c1 28 22 49 51 49h90c30 0 50 -21 51 -49v-31h120zM288 332v1c0 10 -9 19 -19 19h-90c-10 0 -19 -9 -19 -19v-1v-1v-27 +h128v27v1z" /> + <glyph glyph-name="ion-bug" unicode="&#xf2be;" +d="M343 321c-6 -16 -16 -31 -28 -43c-24 -24 -57 -37 -91 -37s-67 13 -91 37c-12 12 -22 27 -28 43c29 39 72 63 119 63s90 -24 119 -63zM95 305c22 -45 68 -77 121 -80v-225c-40 2 -77 22 -104 54c-7 -6 -10 -9 -13 -15c8 -9 7 -22 -1 -31c-9 -10 -24 -11 -34 -2 +s-11 24 -2 34l3 3s2 1 2 1c4 13 13 25 27 36c-15 26 -26 57 -29 90c-7 0 -12 -2 -17 -3c-1 -13 -11 -23 -24 -23s-24 11 -24 24s11 24 24 24h3c4 2 8 5 12 6c7 2 14 4 25 4c1 23 6 45 13 65c-6 4 -11 7 -15 11c-6 5 -11 13 -14 19c-1 0 -3 1 -4 2c-12 6 -15 21 -9 33 +s21 15 33 9c11 -6 15 -20 10 -31c2 -3 3 -7 4 -8c2 -2 5 -3 8 -5c2 3 3 5 5 8zM424 192c13 0 24 -11 24 -24s-11 -24 -24 -24s-23 10 -24 23c-5 1 -10 3 -17 3c-3 -33 -14 -64 -29 -90c14 -11 23 -23 27 -36c0 0 1 0 2 -1l3 -3c9 -10 8 -25 -2 -34s-25 -8 -34 2 +c-8 9 -9 22 -1 31c-3 6 -6 9 -13 15c-27 -32 -64 -52 -104 -54v225c53 3 99 35 121 80c2 -3 3 -5 5 -8c3 2 6 3 8 5c1 1 2 5 4 8c-5 11 -1 25 10 31c12 6 27 3 33 -9s3 -27 -9 -33c-1 -1 -3 -2 -4 -2c-3 -6 -8 -14 -14 -19c-4 -4 -9 -7 -15 -11c7 -20 12 -42 13 -65 +c11 0 18 -2 25 -4c4 -1 8 -4 12 -6h3z" /> + <glyph glyph-name="ion-calculator" unicode="&#xf26d;" horiz-adv-x="320" +d="M304 416c9 0 16 -7 16 -16v-416c0 -9 -7 -16 -16 -16h-288c-9 0 -16 7 -16 16v416c0 9 7 16 16 16h288zM48 240v-32h32v32h-32zM48 176v-32h32v32h-32zM48 112v-32h32v32h-32zM144 16v32h-96v-32h96zM144 80v32h-32v-32h32zM144 144v32h-32v-32h32zM144 208v32h-32v-32 +h32zM208 16v32h-32v-32h32zM208 80v32h-32v-32h32zM208 144v32h-32v-32h32zM208 208v32h-32v-32h32zM272 16v96h-32v-96h32zM272 144v32h-32v-32h32zM272 208v32h-32v-32h32zM272 288v80h-224v-80h224z" /> + <glyph glyph-name="ion-calendar" unicode="&#xf117;" +d="M112 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM336 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM440 384c4 0 8 -4 8 -8v-400c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v400 +c0 4 4 8 8 8h56v-41c0 -22 24 -39 48 -39s48 17 48 39v41h128v-41c0 -22 25 -39 49 -39s47 17 47 39v41h56zM400 16v256h-352v-256h352z" /> + <glyph glyph-name="ion-camera" unicode="&#xf118;" horiz-adv-x="416" +d="M382 301c18 0 34 -14 34 -33v-202c0 -19 -16 -34 -34 -34h-348c-19 0 -34 15 -34 34v202c0 19 15 33 34 33h69l39 40v0c6 7 15 11 25 11h84c9 0 17 -4 23 -10v0v0v0l41 -41h67zM208 82c51 0 92 42 92 93s-41 93 -92 93s-92 -42 -92 -93s41 -93 92 -93zM376 248 +c8 0 14 6 14 14s-6 14 -14 14s-14 -6 -14 -14s6 -14 14 -14zM208 245c38 0 70 -31 70 -70s-32 -70 -70 -70c-39 0 -70 31 -70 70s31 70 70 70z" /> + <glyph glyph-name="ion-card" unicode="&#xf119;" +d="M420 352c16 0 28 -12 28 -28v0v-264v0c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v0v0v264v0v0c0 16 12 28 28 28h392zM45 320c-7 0 -12 -5 -13 -12v-20h384v20c-1 7 -6 12 -13 12h-358zM403 64c7 0 12 5 13 12v116h-384v-116c1 -7 6 -12 13 -12h358zM64 128v16 +h192v-16h-192zM64 96v16h96v-16h-96zM320 96v48h64v-48h-64z" /> + <glyph glyph-name="ion-cash" unicode="&#xf316;" horiz-adv-x="512" +d="M0 352h512v-256h-512v256zM193 128c-20 23 -33 58 -33 96s13 73 33 96h-97c0 -35 -29 -64 -64 -64v-80c27 0 48 -21 48 -48h113zM298 187c3 4 4 9 4 15c0 3 0 5 -1 8s-2 6 -4 8s-4 4 -7 6s-6 4 -10 5c-1 0 -4 1 -7 2s-5 0 -8 1v31c2 -1 5 -2 7 -3c4 -3 6 -7 7 -13h20 +c0 5 -2 9 -4 13s-5 8 -9 11s-9 5 -14 6c-2 1 -5 2 -7 2v9h-18v-9c-2 0 -4 -1 -6 -2c-5 -1 -10 -2 -14 -5s-7 -6 -9 -10s-4 -9 -4 -14c0 -3 0 -5 1 -8s2 -5 4 -7s5 -5 8 -7s7 -4 12 -5c3 -1 6 0 8 -1v-35c-3 1 -6 2 -9 4s-5 4 -6 7s-2 6 -2 9h-20c0 -5 2 -11 4 -16 +c3 -5 6 -8 10 -11s9 -6 15 -7c3 -1 5 -2 8 -2v-9h18v9c3 0 6 1 9 2c5 1 10 2 14 5s7 7 10 11zM480 176v80c-35 0 -64 29 -64 64h-97c20 -23 33 -58 33 -96s-13 -73 -33 -96h113c0 27 22 48 48 48zM64 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z +M384 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM273 213c2 -1 4 -2 6 -4s3 -5 3 -9c0 -2 0 -4 -1 -6s-2 -4 -4 -5s-5 -3 -8 -4c-1 0 -2 -1 -4 -1v31c3 -1 6 -1 8 -2zM236 257c1 2 3 3 5 4s4 2 6 2v-26c-4 1 -7 3 -9 5s-4 4 -4 8c0 3 1 5 2 7zM0 64 +v16h512v-16h-512zM0 32v16h512v-16h-512z" /> + <glyph glyph-name="ion-chatbox-working" unicode="&#xf11a;" horiz-adv-x="416" +d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153zM304 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 256c-18 0 -32 -14 -32 -32s14 -32 32 -32 +s32 14 32 32s-14 32 -32 32zM112 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> + <glyph glyph-name="ion-chatbox" unicode="&#xf11b;" horiz-adv-x="416" +d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153z" /> + <glyph glyph-name="ion-chatboxes" unicode="&#xf11c;" horiz-adv-x="416" +d="M246 82l26 -18c-4 -21 -29 -32 -52 -32h-90c-8 0 -11 -2 -13 -3l-53 -45v48h-16c-26 0 -48 16 -48 41v129c0 25 20 45 46 45h2v-101c0 -33 29 -59 64 -59h117c10 0 14 -3 17 -5zM353 400c35 0 63 -27 63 -60v-168c0 -33 -28 -60 -63 -60h-17v-64l-75 60c-2 2 -7 4 -17 4 +h-101c-35 0 -63 27 -63 60v98v70c0 33 21 60 56 60h217z" /> + <glyph glyph-name="ion-chatbubble-working" unicode="&#xf11d;" horiz-adv-x="416" +d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15zM304 224c-18 0 -32 -14 -32 -32 +s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM112 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> + <glyph glyph-name="ion-chatbubble" unicode="&#xf11e;" horiz-adv-x="416" +d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15z" /> + <glyph glyph-name="ion-chatbubbles" unicode="&#xf11f;" horiz-adv-x="416" +d="M25 57c-1 1 0 2 -1 3c-15 22 -24 49 -24 77c0 42 19 80 49 106c-2 -11 -4 -22 -4 -34c0 -92 78 -168 174 -168c15 0 30 2 44 6c-27 -32 -69 -53 -115 -53c-20 0 -40 5 -58 12h-1v0c-2 1 -5 2 -8 2s-6 -1 -9 -2l-56 -22l12 63c0 4 -1 7 -3 10v0zM242 400 +c96 0 174 -76 174 -168c0 -33 -11 -64 -28 -90c-1 -1 -1 -2 -2 -3v0c-2 -4 -3 -8 -3 -12l17 -74l-69 26c-3 1 -6 2 -10 2c-3 0 -6 -1 -9 -2v0l-2 -1c-8 -3 -16 -5 -24 -7c-14 -4 -29 -6 -44 -6c-96 0 -173 75 -173 167c0 12 1 24 3 35c16 76 86 133 170 133z" /> + <glyph glyph-name="ion-checkmark-circled" unicode="&#xf120;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM339 267c1 1 1 2 1 3s0 3 -1 4l-31 24c-1 1 -3 1 -4 1s-2 0 -3 -1l-111 -143s-44 42 -45 43s-4 3 -6 3s-3 -2 -4 -3l-25 -25l-1 -1c-1 -1 -1 -3 -1 -4s0 -2 1 -3l2 -1 +s78 -75 79 -76s3 -3 5 -3s4 2 5 3z" /> + <glyph glyph-name="ion-checkmark-round" unicode="&#xf121;" horiz-adv-x="416" +d="M400 376c17 -13 22 -39 9 -57l-207 -302c-13 -18 -37 -22 -54 -9s-137 147 -137 147c-15 16 -15 42 1 58s40 15 55 -2l99 -107l180 263c13 18 37 22 54 9z" /> + <glyph glyph-name="ion-checkmark" unicode="&#xf122;" horiz-adv-x="416" +d="M414 338c1 -2 2 -4 2 -6s-1 -4 -2 -6l-249 -320c-2 -2 -5 -6 -9 -6s-8 3 -10 5s-141 136 -141 136l-3 3c-1 2 -2 4 -2 6s1 3 2 5l2 2c14 15 42 44 44 46s4 6 8 6s8 -4 10 -6s80 -78 80 -78l200 257c2 2 4 2 6 2s5 -1 7 -2z" /> + <glyph glyph-name="ion-chevron-down" unicode="&#xf123;" +d="M224 150v0v0l174 167c4 4 12 4 16 0l31 -30c4 -4 4 -12 0 -16l-213 -204c-2 -2 -5 -3 -8 -3s-6 1 -8 3l-213 204c-4 4 -4 12 0 16l31 30c4 4 12 4 16 0z" /> + <glyph glyph-name="ion-chevron-left" unicode="&#xf124;" horiz-adv-x="256" +d="M86 192l167 -174c4 -4 4 -12 0 -16l-30 -31c-4 -4 -12 -4 -16 0l-204 213c-2 2 -3 5 -3 8s1 6 3 8l204 213c4 4 12 3 16 -1l30 -30c4 -4 4 -12 0 -16l-167 -174v0v0z" /> + <glyph glyph-name="ion-chevron-right" unicode="&#xf125;" horiz-adv-x="256" +d="M170 192v0v0l-167 174c-4 4 -4 12 0 16l30 30c4 4 12 5 16 1l204 -213c2 -2 3 -5 3 -8s-1 -6 -3 -8l-204 -213c-4 -4 -12 -4 -16 0l-30 31c-4 4 -4 12 0 16z" /> + <glyph glyph-name="ion-chevron-up" unicode="&#xf126;" +d="M224 234l-174 -167c-4 -4 -12 -4 -16 0l-31 30c-4 4 -4 12 0 16l213 204c2 2 5 3 8 3s6 -1 8 -3l213 -204c4 -4 4 -12 0 -16l-31 -30c-4 -4 -12 -4 -16 0l-174 167v0v0z" /> + <glyph glyph-name="ion-clipboard" unicode="&#xf127;" horiz-adv-x="352" +d="M80 288c2 20 10 35 28 40l1 1c12 3 21 7 21 20v21c0 26 20 46 46 46s46 -20 46 -46v-21c0 -13 9 -18 21 -21h1c18 -5 26 -20 28 -40h-192zM176 384c-8 0 -14 -6 -14 -14s6 -14 14 -14s14 6 14 14s-6 14 -14 14zM325 385c15 0 27 -13 27 -29v-360c0 -16 -12 -28 -27 -28 +h-149h-149c-15 0 -27 12 -27 28v360c0 16 12 29 27 29h74v-15c0 -11 -9 -18 -19 -18h-37c-7 0 -13 -5 -13 -12v-328c0 -6 6 -12 12 -12h264c6 0 12 6 12 12v328c0 7 -6 12 -13 12h-37c-10 0 -19 7 -19 18v15h74zM64 240v16h112v-16h-112zM64 144v16h160v-16h-160zM64 48v16 +h129v-16h-129zM64 96v16h176v-16h-176zM64 192v16h208v-16h-208z" /> + <glyph glyph-name="ion-clock" unicode="&#xf26e;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM393 283c-2 3 -3 6 -5 9zM324 356c-3 2 -6 3 -9 5zM133 361c-3 -2 -6 -3 -9 -5zM60 292c-2 -3 -3 -6 -5 -9zM55 101c2 -3 3 -6 5 -9zM124 28c3 -2 6 -3 9 -5zM315 23 +c3 2 6 3 9 5zM360 56c10 10 18 21 26 33l-27 16l8 14l27 -16c13 25 21 52 22 81h-32v16h32c-1 29 -9 56 -22 81l-28 -16l-8 14l28 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -28l-14 -8l-16 28 +c-12 -8 -23 -16 -33 -26s-18 -21 -26 -33l27 -16l-8 -14l-27 16c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -29 9 -56 22 -81l28 16l8 -14l-28 -16c8 -12 16 -23 26 -33s21 -18 33 -26l16 27l14 -8l-16 -27c25 -13 52 -21 81 -22v32h16v-32c29 1 56 9 81 22l-16 27l14 8l16 -27 +c12 8 23 16 33 26zM393 101l-5 -9c2 3 3 6 5 9zM368 199v-16h-113c-4 -13 -17 -23 -31 -23c-7 0 -15 3 -20 7l-70 -71l-6 6l71 70c-4 6 -7 13 -7 20c0 12 6 22 16 28v84h32v-84c8 -4 13 -12 15 -21h113z" /> + <glyph glyph-name="ion-close-circled" unicode="&#xf128;" +d="M224 415c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM332 116l-75 75l76 75c3 3 3 9 0 12l-22 21c-2 2 -4 3 -6 3s-3 -1 -5 -3l-76 -74l-76 74c-2 2 -3 3 -5 3s-4 -1 -6 -3l-21 -21c-3 -3 -3 -9 0 -12l76 -75l-76 -76 +c-2 -1 -2 -3 -2 -5s0 -4 2 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l75 76l76 -75c2 -2 3 -3 5 -3s4 1 6 3l21 21c2 1 3 4 3 6s-1 4 -3 6z" /> + <glyph glyph-name="ion-close-round" unicode="&#xf129;" horiz-adv-x="384" +d="M374 61c14 -14 14 -37 0 -51s-37 -14 -51 0l-131 131l-131 -131c-14 -14 -36 -14 -50 0s-14 37 0 51l130 131l-130 131c-14 14 -14 37 0 51s36 14 50 0l131 -131l131 131c14 14 37 14 51 0s14 -37 0 -51l-131 -131z" /> + <glyph glyph-name="ion-close" unicode="&#xf12a;" horiz-adv-x="384" +d="M380 61c3 -3 4 -6 4 -10s-1 -7 -4 -10l-38 -37c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-131 131l-131 -131c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-38 37c-3 3 -4 6 -4 10s1 7 4 10l132 131l-132 130c-5 5 -5 15 0 20l37 38c3 2 6 4 10 4s7 -1 10 -4l131 -130l131 130c3 2 6 4 10 4 +s7 -1 10 -4l37 -38c5 -5 5 -14 0 -19l-132 -130z" /> + <glyph glyph-name="ion-closed-captioning" unicode="&#xf317;" horiz-adv-x="512" +d="M0 384h512v-384h-512v384zM464 192c0 27 0 44 -4 80s-23 56 -59 60s-91 4 -138 4h-7h-7c-47 0 -102 0 -138 -4s-55 -24 -59 -60s-4 -53 -4 -80s2 -47 4 -80s19 -56 59 -60s96 -4 145 -4s105 0 145 4s57 27 59 60s4 53 4 80zM372 164v4h53c0 -27 -7 -48 -19 -62 +s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28c1 -17 12 -29 27 -29s27 10 27 29v1z +M195 164v4h53c0 -27 -7 -48 -19 -62s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28 +c1 -17 12 -29 27 -29s27 10 27 29v1z" /> + <glyph glyph-name="ion-cloud" unicode="&#xf12b;" +d="M366 215c45 0 82 -38 82 -84s-37 -83 -82 -83v0h-276c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> + <glyph glyph-name="ion-code-download" unicode="&#xf26f;" +d="M299 164l-63 -63v0l-1 -1v0l-2 -1v0l-1 -1v0l-2 -1v0h-1v0h-1c-1 0 -3 -1 -4 -1s-3 1 -4 1h-1v0h-1v0l-2 1v0l-1 1v0c-1 1 -2 1 -3 2v0l-63 63c-6 6 -6 17 0 23s18 6 24 0l35 -34v118c0 9 7 17 16 17s16 -8 16 -17v-118l35 34c6 6 18 6 24 0s6 -17 0 -23zM136 56 +c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 +c-5 -5 -11 -7 -17 -7z" /> + <glyph glyph-name="ion-code-working" unicode="&#xf270;" +d="M128 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM200 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM272 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM136 56c-7 0 -12 2 -17 7l-112 112c-5 5 -7 10 -7 17 +s2 12 7 17l112 112c5 5 10 7 17 7s12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17l-95 -95l95 -95c5 -5 7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7zM312 56c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17l95 95l-95 95c-5 5 -7 10 -7 17s2 12 7 17s10 7 17 7s12 -2 17 -7l112 -112 +c5 -5 7 -10 7 -17s-2 -12 -7 -17l-112 -112c-5 -5 -10 -7 -17 -7z" /> + <glyph glyph-name="ion-code" unicode="&#xf271;" +d="M136 56c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 +c-5 -5 -11 -7 -17 -7z" /> + <glyph glyph-name="ion-coffee" unicode="&#xf272;" horiz-adv-x="384" +d="M319 191c37 -7 65 -40 65 -79c0 -20 -8 -39 -21 -54c-15 -17 -37 -26 -61 -26c-8 0 -17 1 -25 3c-6 1 -10 3 -15 5c-11 -15 -23 -25 -32 -33v0c-5 -5 -12 -7 -19 -7h-102c-7 0 -14 2 -19 7v0c-17 15 -41 36 -62 86s-28 91 -28 111s3 20 16 20h101c-5 17 -37 19 -37 46 +c0 17 15 32 28 37c-2 -8 -3 -14 -3 -21c0 -19 39 -30 39 -53c0 -3 0 -6 -1 -9h56c1 5 2 10 2 14c0 36 -56 36 -56 84c0 28 21 55 47 62c-4 -14 -9 -23 -9 -35c0 -32 57 -50 57 -88c0 -13 -5 -25 -12 -37h76c13 0 16 0 16 -20c0 -4 0 -8 -1 -13zM302 64c33 0 50 25 50 48 +s-17 43 -39 47c-4 -19 -11 -42 -21 -66c-4 -9 -8 -17 -12 -25c6 -3 13 -4 22 -4z" /> + <glyph glyph-name="ion-compass" unicode="&#xf273;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224c0 39 10 76 27 108c-16 12 -27 30 -27 52c0 35 29 64 64 64c22 0 40 -11 52 -27c32 17 69 27 108 27zM32 352c0 -10 5 -20 13 -26c13 17 28 32 45 45c-6 8 -16 13 -26 13c-18 0 -32 -14 -32 -32z +M360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM320 320c0 0 -54 -130 -72 -152s-120 -104 -120 -104s54 132 72 152s120 104 120 104z" /> + <glyph glyph-name="ion-compose" unicode="&#xf12c;" horiz-adv-x="384" +d="M379 348c7 -7 7 -18 0 -25l-32 -31l-55 55l31 32c7 7 18 7 25 0zM282 338l55 -55l-177 -173l-64 -14l14 64zM320 192l32 32v-201c0 -13 -10 -23 -23 -23h-306c-13 0 -23 10 -23 23v306c0 13 10 23 23 23h201l-32 -32h-149c-6 0 -11 -5 -11 -10v-268s4 -10 10 -10h269 +s9 5 9 10v150z" /> + <glyph glyph-name="ion-connection-bars" unicode="&#xf274;" horiz-adv-x="352" +d="M0 32v64h64v-64h-64zM96 32v128h64v-128h-64zM192 32v224h64v-224h-64zM288 32v320h64v-320h-64z" /> + <glyph glyph-name="ion-contrast" unicode="&#xf275;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56v-384c51 0 100 20 136 56z" /> + <glyph glyph-name="ion-cube" unicode="&#xf318;" +d="M435 280c7 0 13 -6 13 -12v-183c0 -9 -6 -17 -14 -22v-1l-175 -92v-1c-2 -1 -4 -1 -6 -1c-7 0 -13 6 -13 12v185c0 9 5 17 13 22v0l3 2l172 89l2 1c2 1 3 1 5 1zM422 329c0 0 8 -3 8 -9c0 -7 -8 -11 -8 -11l-183 -97l-2 -1c-4 -2 -8 -3 -13 -3s-9 1 -13 3l-2 1l-183 96 +s-8 5 -8 12c0 6 8 9 8 9l181 82s11 5 17 5s17 -5 17 -5zM195 187c8 -5 13 -13 13 -22v-185c0 -6 -6 -12 -13 -12c-2 0 -4 1 -6 2v0l-175 92v1c-8 5 -14 13 -14 22v183c0 6 6 12 13 12c2 0 4 0 5 -1l2 -1l171 -89z" /> + <glyph glyph-name="ion-disc" unicode="&#xf12d;" +d="M224 289c54 0 97 -43 97 -97s-43 -97 -97 -97s-97 43 -97 97s43 97 97 97zM224 148c24 0 44 20 44 44s-20 44 -44 44s-44 -20 -44 -44s20 -44 44 -44zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 69 +c68 0 123 55 123 123s-55 123 -123 123s-123 -55 -123 -123s55 -123 123 -123z" /> + <glyph glyph-name="ion-document-text" unicode="&#xf12e;" horiz-adv-x="288" +d="M286 279c1 -3 2 -6 2 -10v-245c0 -13 -10 -24 -22 -24h-243c-12 0 -23 11 -23 24v336c0 13 11 24 23 24h160c3 0 6 0 9 -2c2 -1 5 -3 7 -5l84 -92c2 -2 2 -4 3 -6zM48 269v-10c0 -1 1 -3 3 -3h71c2 0 3 2 3 3v10c0 2 -1 3 -3 3h-71c-2 0 -3 -1 -3 -3zM48 141v-10 +c0 -1 1 -3 3 -3h123c2 0 2 2 2 3v10c0 2 0 3 -2 3h-123c-2 0 -3 -1 -3 -3zM208 67v10c0 2 0 3 -2 3h-155c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h155c2 0 2 2 2 3zM240 195v10c0 2 0 3 -2 3h-187c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h187c2 0 2 2 2 3zM193 270h60l-71 78 +v-66c0 -6 5 -12 11 -12z" /> + <glyph glyph-name="ion-document" unicode="&#xf12f;" horiz-adv-x="288" +d="M287 279c1 -3 1 -5 1 -9v-244c0 -13 -9 -26 -21 -26h-243c-12 0 -24 13 -24 26v335c0 13 12 23 24 23h160c3 0 6 0 9 -2c2 -1 5 -2 7 -4l83 -92c2 -2 3 -4 4 -7zM193 337v-63h58zM32 32h224v210h-67c-15 0 -28 13 -28 28v82h-129v-320z" /> + <glyph glyph-name="ion-drag" unicode="&#xf130;" horiz-adv-x="512" +d="M0 272v32h512v-32h-512zM0 176v32h512v-32h-512zM0 80v32h512v-32h-512z" /> + <glyph glyph-name="ion-earth" unicode="&#xf276;" +d="M308 321c-1 0 0 -1 -1 -1s-4 4 -3 5l1 1l1 1l2 1l1 1v1c0 1 -1 2 -1 3v2c1 1 2 1 3 1l1 -1l2 -1l1 -2c0 -1 1 -1 2 -1c2 -1 4 -2 5 -3c3 -3 5 -7 6 -11v-2c-2 -1 -3 -3 -5 -4c-1 -1 -2 -1 -3 -1c-2 0 -4 1 -5 2s-1 2 -1 3c0 2 -1 4 -1 6c0 1 -1 1 -1 1h-2s-1 -1 -2 -1z +M253 351l-1 1c0 1 0 4 1 4h1c4 1 6 3 10 4h1c1 0 2 -1 3 -2c2 -2 2 -3 0 -5v0l-1 -2c0 -1 -1 -2 -1 -3v-1h-1c-3 0 -6 1 -8 2c-2 0 -3 1 -4 2zM134 270h-5c-5 0 -10 1 -14 2h-3s-1 1 -2 1v1s1 2 2 3c1 0 1 1 2 1s2 1 3 1s2 0 3 -1l1 -1l1 -1c2 -1 4 -2 6 -2h5c1 0 1 -1 2 -1 +h1l1 -1c0 -1 0 -2 -1 -2h-2zM144 263c0 0 1 -1 2 -1s1 -1 1 -1v-4h-1v0h-1c-2 1 -5 2 -7 2h-4h-3h-1v1v0c1 0 1 1 2 1l8 4v0l1 -1c1 -1 2 0 3 -1zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM88 56c11 -11 24 -20 37 -28 +c-1 1 -3 2 -4 3l-7 7c-3 4 -4 9 -6 13v1c0 2 -1 4 -1 6c0 3 -2 7 -2 10v1c-1 1 -1 2 -1 3s-1 3 -1 4c0 3 1 5 1 8v3c0 3 1 5 1 8v2c-1 1 -1 3 -1 4v5s0 5 1 7c0 1 1 1 1 2v5c0 3 2 7 2 10v1c-2 1 -2 2 -3 3c-2 2 -2 4 -2 7c0 2 0 4 1 6v1h-1c-4 3 -8 6 -11 10 +c-1 2 -2 4 -4 6l-3 3s-2 3 -2 4c-1 2 -1 4 -1 6v2c-1 2 -1 4 -1 6v8s1 4 2 6c0 1 1 1 2 2c2 2 3 5 5 7l3 6c1 1 2 2 2 4c1 2 1 4 1 6v3c0 2 -1 3 -3 4l-1 1c-2 1 -4 3 -6 4v1c-1 4 -2 5 -3 9c0 1 -1 3 -1 3c-2 1 -3 3 -5 4v2v3s1 3 1 4h-1c-3 1 -6 3 -9 5c-2 1 -3 2 -4 4 +c-1 1 -2 3 -3 4c-1 2 -1 3 -1 5c0 3 2 7 2 10v2h-1v1v0c-19 -30 -29 -65 -29 -101c0 -51 20 -100 56 -136zM403 251c0 0 0 -1 1 -1v1c0 2 0 5 -1 7s-2 3 -3 4c0 0 -10 -6 -27 14s-24 16 -24 16s-2 -2 -2 -1h-1v0v-2c0 -1 -1 -2 -1 -4s-1 -6 -1 -8v-1h-1c-3 -1 -6 -1 -9 -2 +c-2 0 -4 -1 -6 0s-3 2 -4 3c-2 2 -3 3 -4 5c-2 3 -4 7 -6 10v1v0c2 1 3 2 4 3h1c1 0 3 1 4 1c2 0 3 1 5 1h3c2 2 5 2 7 4v1c2 2 3 4 5 6l1 1l-1 1l-2 4v2c0 2 1 3 1 5v2c-3 0 -6 1 -9 1c-1 2 -3 5 -4 7h-1c-2 0 -3 1 -5 1h-1c-1 1 -2 2 -2 3c-1 2 -2 3 -2 5c-1 4 0 8 0 12v0 +c3 0 7 1 10 1c-18 11 -38 20 -58 25v-1c-2 -4 -4 -6 -6 -10c-1 -1 -1 -2 -2 -2c-2 0 -4 -1 -6 -1s-2 0 -3 -1v-1c-2 -2 -4 -5 -6 -7c-3 -3 -6 -6 -9 -10v-1h-1v1c-2 1 -4 2 -5 4c-2 2 -3 4 -4 6c-2 4 -3 8 -3 12c0 1 1 1 1 1c1 3 2 7 3 10c0 1 1 1 1 2v1v2v0h-6h-3v0l4 -8 +v-1h-1c-2 -1 -3 -3 -5 -4l-1 -1l-5 -5v0c0 1 -1 1 -2 2s-3 2 -5 3v1h-6l-2 -1c-1 0 -1 -1 -2 -1h-3c-2 0 -2 0 -3 2c0 1 -1 1 -2 1h-1l-2 -1l-3 -3s-2 -1 -3 -2l-1 -1l-6 -3v-1c0 -1 -1 -1 -1 -2v-6c0 -1 1 -2 1 -3c1 -2 1 -2 3 -2h2c1 1 3 1 4 2c2 1 3 2 4 3s3 2 3 4v1 +c0 1 1 0 2 0v0h2c1 -1 3 -1 4 0c1 0 1 0 2 1l2 2s3 2 4 2c2 0 3 1 4 -1v-1l2 -2c1 0 1 -2 2 -2l2 -1c1 -1 1 -1 1 -2s-1 -1 -1 -2s-1 -2 -2 -3c0 -1 -1 -2 -1 -3l-1 -1c0 -1 0 -1 1 -1h1c1 0 2 1 3 1v0v-1c0 -2 -1 -4 -1 -6s-1 -3 -2 -5c0 -1 0 -1 -1 -2s-3 -2 -5 -2 +c-1 0 -2 1 -3 1s-2 1 -2 1c-1 1 -1 1 -2 1h-3h-1c-1 0 -1 -1 -1 -2s-2 -1 -2 -2l-1 -1h-1c-2 0 -3 -1 -5 -1h-8h-1c-3 -1 -7 -2 -10 -3c-1 0 -1 -1 -1 -1c-1 -1 -2 -1 -3 -1c-1 -1 -3 -2 -4 -2h-3h-2l-1 1c-5 -6 -18 -6 -22 -12v-1c0 -2 -1 -3 -1 -5c0 -4 0 -8 -1 -12 +c0 -1 -1 -1 -1 -2l-1 -1h-2l-1 1s-1 0 -1 1s-1 2 -1 3c-1 2 -1 3 -1 5c0 3 -2 4 -4 6c-1 1 -2 2 -3 2c-2 1 -5 1 -7 1c-1 0 -1 1 -2 1c-2 0 -4 -1 -6 -1c-8 -2 -13 -8 -18 -14v-1c-1 -3 -2 -5 -2 -8c0 -2 1 -4 1 -5c1 -2 2 -3 4 -3h5c1 0 2 1 3 1h2c1 0 1 -1 2 -2s0 -3 0 -4 +s-1 -1 -1 -1c-1 -1 -1 -2 -2 -3s-2 -1 -3 -1s-1 -2 -1 -3s-1 -1 0 -2l1 -1s1 -1 2 -1v-2v-1v-10v-2c0 -3 2 -5 5 -7l1 -1c2 -1 3 -3 5 -3h5c2 0 3 1 5 3c1 1 1 2 2 3l1 1c1 1 3 2 4 2s2 0 3 -1l2 -2l2 -1c3 -1 5 -3 8 -4l1 -1c2 0 3 0 5 -1c4 -2 7 -4 10 -8c0 0 1 -1 2 -1 +c7 -2 14 -7 19 -12c3 -3 5 -7 7 -11c0 -1 1 -3 1 -4l1 -1c2 -2 3 -3 4 -5s3 -5 4 -7v0s3 -1 4 -1c5 -1 10 -3 14 -6c4 -2 5 -4 8 -7c1 -1 2 -1 2 -3v-5c-1 -6 -4 -11 -10 -15c0 0 -1 0 -1 -1c-2 -5 -4 -11 -6 -16l-1 -1c-3 -4 -5 -7 -8 -11l-1 -1c-1 0 -1 -2 -2 -2 +c-4 -2 -9 -3 -13 -4c-1 0 -1 -1 -1 -1c-2 -3 -5 -7 -8 -10v0c-1 -1 -2 -3 -3 -4c-2 -3 -3 -6 -5 -9c0 -1 -1 -2 -2 -2c-4 -3 -9 -6 -13 -9h-1l-7 -7c0 0 -1 -1 -1 -2c-1 -2 -2 -3 -3 -5s-1 -4 -2 -6l-1 -2s1 -1 1 -2c1 -6 3 -19 4 -25v-1c28 -15 59 -24 92 -24 +c40 0 77 12 109 34c-1 1 -1 2 -1 3v2c0 2 1 3 2 5c2 3 2 7 4 10c1 3 4 6 5 9c0 1 1 3 1 4v2s-1 3 -1 4c0 2 -1 5 -1 7c-1 3 -1 5 0 8l3 6s2 4 4 6l1 1l4 4c2 2 2 3 3 5c1 3 2 6 1 9c0 2 -1 4 -2 6s-2 3 -2 5c-1 3 -1 7 0 10c0 1 2 3 2 4c1 2 1 3 2 5s1 3 1 5c0 3 0 6 -1 8v2 +s-1 1 -2 1l-1 -1h-2l-1 -1c-1 0 -1 0 -2 1h-1c-1 1 -1 2 -2 2s-2 1 -3 1c-2 0 -5 1 -7 1c-4 0 -7 -1 -11 -1c-3 0 -7 0 -10 1s-5 3 -8 5c-4 2 -7 4 -10 7c-4 3 -7 7 -10 10l-1 1v1c0 2 -1 4 -1 6c0 4 1 7 2 11c1 5 1 10 3 15c1 2 1 3 1 5s1 3 1 5c0 1 -1 2 -1 3v0v2v1 +c0 1 1 1 1 2c3 6 8 10 15 12l1 1c2 3 5 6 7 9c0 0 1 1 2 1c4 1 7 2 11 3c3 1 5 2 8 2s6 -1 8 -1c3 0 6 -1 8 -2h1h9c2 0 3 -1 5 -2c1 0 1 -1 2 -1s1 -1 2 -1c5 -4 9 -7 14 -11h2v0h9c2 0 4 -1 6 -1z" /> + <glyph glyph-name="ion-edit" unicode="&#xf2bf;" +d="M381 259l-250 -251l-91 91l251 250zM440 360c12 -12 11 -32 -2 -45l-45 -45l-91 91l45 45c13 13 33 14 45 2zM14 17l18 68l85 -85l-68 -18zM0 -32l9 32l23 -23z" /> + <glyph glyph-name="ion-egg" unicode="&#xf277;" horiz-adv-x="320" +d="M160 416c64 0 160 -133 160 -257s-64 -191 -160 -191s-160 67 -160 191s96 257 160 257z" /> + <glyph glyph-name="ion-eject" unicode="&#xf131;" horiz-adv-x="320" +d="M303 128h-286v0c-10 0 -17 7 -17 16c0 3 1 5 3 8l138 191c5 5 11 9 19 9s14 -4 19 -9l138 -190c2 -3 3 -6 3 -9c0 -9 -7 -16 -17 -16v0zM308 96c7 0 12 -5 12 -12v-40c0 -7 -5 -12 -12 -12h-296c-7 0 -12 5 -12 12v40c0 7 5 12 12 12h296z" /> + <glyph glyph-name="ion-email" unicode="&#xf132;" horiz-adv-x="416" +d="M19 299c-4 2 -11 7 -13 11c-3 8 1 10 12 10h191h191c11 0 15 -2 12 -10c-2 -4 -9 -9 -13 -11c-11 -6 -163 -89 -169 -92s-12 -4 -21 -4s-15 1 -21 4s-158 86 -169 92zM408 295c9 4 8 -1 8 -5v-205c0 -9 -12 -21 -22 -21h-185h-185c-10 0 -24 12 -24 21v205s0 9 9 5 +c8 -4 83 -56 132 -88l-83 -93c-2 -2 -2 -4 -1 -5s4 -1 6 1l98 83c15 -10 25 -16 27 -17c8 -4 14 -4 21 -4s13 0 21 4c2 1 12 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5l-82 93c49 32 123 84 131 88z" /> + <glyph glyph-name="ion-eye-disabled" unicode="&#xf306;" +d="M344 290c41 -27 76 -66 104 -100c-51 -54 -124 -135 -224 -135c-36 0 -65 8 -92 22l-77 -77l-23 23l71 71c-36 25 -68 61 -103 98c78 85 142 137 224 137c34 0 64 -9 92 -23l77 78l23 -23zM134 192c0 -19 6 -36 16 -51l27 27c-4 7 -5 15 -5 24c0 29 23 53 52 53h8 +c-5 -6 -8 -13 -8 -21c0 -3 0 -5 1 -8l51 50c-15 11 -33 17 -52 17c-49 0 -90 -41 -90 -91zM224 101c49 0 90 41 90 91c0 19 -6 37 -16 52l-50 -51c3 -1 5 -1 8 -1c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53c-9 0 -17 2 -24 6l-28 -27c15 -11 33 -17 52 -17z" /> + <glyph glyph-name="ion-eye" unicode="&#xf133;" +d="M224 320c99 0 172 -70 224 -129c-51 -50 -124 -127 -224 -127s-157 60 -224 128c78 79 142 128 224 128zM224 101c49 0 90 41 90 91s-41 91 -90 91s-90 -41 -90 -91s41 -91 90 -91zM224 224c0 -18 14 -32 32 -32c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53s-52 24 -52 53 +s23 53 52 53h8c-5 -6 -8 -13 -8 -21z" /> + <glyph glyph-name="ion-female" unicode="&#xf278;" horiz-adv-x="256" +d="M160 164v-68h64v-64h-64v-64h-64v64h-64v64h64v68c-55 14 -96 64 -96 124c0 71 57 128 128 128s128 -57 128 -128c0 -60 -41 -110 -96 -124zM128 208c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> + <glyph glyph-name="ion-filing" unicode="&#xf134;" horiz-adv-x="384" +d="M317 319c12 0 19 0 19 -20v-28h-288v28c0 20 8 20 20 20h249zM269 352c13 0 19 -1 19 -19h-192c0 18 7 19 20 19h153zM368 278c13 -8 17 -17 15 -41l-17 -184c-4 -21 -16 -21 -24 -21h-300c-8 0 -20 0 -24 21l-17 185c-3 26 1 31 15 40l15 10v-32h321v32z" /> + <glyph glyph-name="ion-film-marker" unicode="&#xf135;" horiz-adv-x="416" +d="M400 240c9 0 16 -7 16 -15v-210c0 -8 -7 -15 -16 -15h-384c-9 0 -16 7 -16 15v210c0 8 6 14 13 15c-2 2 -3 4 -4 7l-9 45c-2 8 5 16 13 18l370 74c8 2 16 -4 18 -12l9 -46c2 -8 -4 -16 -12 -18l-342 -68h344zM257 46l-20 58l51 36h-62l-20 58l-19 -58h-63l51 -36l-19 -58 +l50 36z" /> + <glyph glyph-name="ion-fireball" unicode="&#xf319;" horiz-adv-x="320" +d="M297 210c14 -24 23 -52 23 -82c0 -33 -10 -63 -26 -88v0v0c-29 -43 -78 -72 -134 -72c-17 0 -32 1 -46 7s-25 13 -33 25c-11 16 -17 28 -21 52c-6 -25 2 -48 9 -60c-43 26 -69 71 -69 125v4c5 78 65 109 90 151c8 14 13 30 10 48c11 -9 15 -25 15 -39 +c0 -16 -3 -29 -3 -29c4 8 7 18 9 31c6 35 2 85 -37 132l-1 1s7 0 18 -3c95 -16 169 -91 184 -186c2 -12 3 -23 3 -35c0 -16 -2 -32 -5 -47c10 23 13 43 14 55v10z" /> + <glyph glyph-name="ion-flag" unicode="&#xf279;" horiz-adv-x="384" +d="M362 266c0 0 12 2 22 6c0 -16 -7 -32 -9 -36c-28 -50 -99 -123 -181 -84c-65 31 -92 30 -117 24c-1 0 -2 -1 -3 -1c-3 -1 -15 -5 -26 -1v197c0 16 14 31 33 35c39 7 106 5 148 -74c39 -74 97 -72 133 -66zM24 416c4 0 8 -4 8 -8v-432c0 -4 -4 -8 -8 -8h-16 +c-4 0 -8 4 -8 8v432c0 4 4 8 8 8h16z" /> + <glyph glyph-name="ion-flame" unicode="&#xf31a;" horiz-adv-x="256" +d="M1 128c-11 109 72 224 159 288c-26 -145 97 -142 96 -288c-1 -120 -105 -160 -128 -160s-114 26 -127 160zM88 80c0 -44 40 -80 40 -80s41 36 41 80s-41 80 -41 80s-40 -36 -40 -80z" /> + <glyph glyph-name="ion-flash-off" unicode="&#xf136;" +d="M115 -4c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2c12 -4 24 -9 35 -15v0c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 8 -35 14zM86 291c-20 -28 -32 -62 -32 -99 +c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2c37 0 71 12 99 32l-52 53l36 40l55 -54c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -72 -12 -100 -32 +l53 -52l-36 -41zM178 58l38 113h-85l139 155l-38 -113h85z" /> + <glyph glyph-name="ion-flash" unicode="&#xf137;" horiz-adv-x="320" +d="M0 160l224 256l-51 -192h147l-224 -256l51 192h-147z" /> + <glyph glyph-name="ion-flask" unicode="&#xf138;" horiz-adv-x="384" +d="M382 21c2 -4 3 -10 0 -14s-8 -7 -13 -7h-177h-178c-5 0 -9 3 -12 7s-2 10 0 14l118 199v150c0 8 6 14 14 14s15 -6 15 -14v-80c4 3 10 5 16 5c15 0 27 -12 27 -27s-12 -26 -27 -26c-6 0 -12 2 -16 5v-31c0 -2 -1 -4 -2 -6l-35 -59h72c-15 6 -26 20 -26 37 +c0 23 19 42 43 42c15 0 27 -8 35 -19c-1 2 -1 3 -1 5v154c0 8 6 14 14 14s15 -6 15 -14v-150zM218 151h53l-31 54c2 -5 3 -11 3 -17c0 -17 -10 -31 -25 -37zM201 319c-12 0 -22 9 -22 21s10 21 22 21s22 -9 22 -21s-10 -21 -22 -21z" /> + <glyph glyph-name="ion-folder" unicode="&#xf139;" horiz-adv-x="384" +d="M366 256c18 0 19 -7 18 -18l-12 -186c-1 -11 -3 -20 -21 -20h-317c-18 0 -20 9 -21 20l-13 184c-1 11 0 20 18 20h348zM362 305l2 -33h-344c0 6 4 46 6 63c2 18 8 17 25 17h75c28 0 23 0 37 -15c16 -18 19 -17 41 -17h143c11 0 15 -3 15 -15z" /> + <glyph glyph-name="ion-fork-repo" unicode="&#xf2c0;" horiz-adv-x="320" +d="M320 368v-64h-48v-48h-64v48h-48v64h48v48h64v-48h48zM208 208h64v-5v0c0 -43 -7 -70 -38 -95c-23 -19 -51 -20 -75 -22c-9 -1 -18 -2 -26 -3c-6 -1 -13 -5 -20 -10c9 -11 15 -25 15 -41c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55 +c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-160c8 4 18 7 27 9c11 2 21 2 31 3c17 1 33 3 40 9c10 8 14 11 14 50zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32 +s14 -32 32 -32z" /> + <glyph glyph-name="ion-fork" unicode="&#xf27a;" horiz-adv-x="128" +d="M78 299v0v0v0zM128 282c0 -26 -15 -48 -37 -58c-12 -6 -11 -11 -11 -11s16 -200 16 -213s-3 -18 -9 -24s-15 -8 -23 -8v0v0c-8 0 -16 2 -22 8s-10 13 -10 24s16 213 16 213s0 6 -11 11c-22 10 -37 32 -37 58c0 43 15 93 24 134h8v-117c0 -6 3 -11 9 -11s9 4 10 10v1 +l9 117h8l10 -117v-1c1 -6 3 -10 9 -10s9 5 9 11v117h8v0c9 -40 24 -91 24 -134z" /> + <glyph glyph-name="ion-forward" unicode="&#xf13a;" horiz-adv-x="384" +d="M224 150c-102 0 -171 -9 -224 -102c0 0 37 208 224 208v80l160 -144l-160 -134v92z" /> + <glyph glyph-name="ion-funnel" unicode="&#xf31b;" +d="M224 416c124 0 224 -36 224 -80c0 -8 -3 -15 -9 -22v0c-35 -43 -151 -179 -151 -218v-4v-83v0c0 -23 -29 -41 -64 -41s-64 18 -64 41v0v87c0 39 -117 177 -149 216v0c-7 8 -11 16 -11 24c0 44 100 80 224 80zM224 288c106 0 192 25 192 56s-86 56 -192 56 +s-192 -25 -192 -56s86 -56 192 -56z" /> + <glyph glyph-name="ion-game-controller-a" unicode="&#xf13b;" +d="M0 193c0 65 50 111 111 111h226c61 0 111 -46 111 -111s-50 -113 -111 -113h-226c-61 0 -111 48 -111 113zM373 215c-11 0 -20 -9 -20 -19s9 -19 20 -19s19 9 19 19s-8 19 -19 19zM330 256c-11 0 -19 -9 -19 -19s8 -19 19 -19s20 9 20 19s-9 19 -20 19zM330 173 +c-11 0 -19 -8 -19 -19c0 -10 8 -19 19 -19s20 9 20 19c0 11 -9 19 -20 19zM288 215c-11 0 -20 -9 -20 -19s9 -19 20 -19s19 9 19 19s-8 19 -19 19zM56 203v-22c0 -3 2 -5 5 -5v0h35v-38v-2c0 -3 2 -4 5 -4h22c3 0 5 2 5 5v0v39h37h1c3 0 5 2 5 5v22c0 3 -2 5 -5 5h-1h-37v38 +v1c0 3 -2 5 -5 5h-22c-3 0 -5 -2 -5 -5v-1v-38h-35h-1c-2 0 -4 -2 -4 -5z" /> + <glyph glyph-name="ion-game-controller-b" unicode="&#xf13c;" +d="M346 348c45 -13 67 -61 88 -149s18 -152 -7 -164s-53 15 -80 49c-24 27 -33 28 -123 28s-100 -2 -122 -28c-27 -34 -56 -61 -81 -49s-28 76 -7 164s43 136 88 149s59 -12 122 -12s77 25 122 12zM96 184c22 0 40 18 40 40s-18 40 -40 40s-39 -18 -39 -40s17 -40 39 -40z +M278 204c11 0 19 9 19 20s-8 19 -19 19s-20 -8 -20 -19s9 -20 20 -20zM320 162c11 0 19 8 19 19s-8 20 -19 20s-19 -9 -19 -20s8 -19 19 -19zM320 247c11 0 19 8 19 19s-8 20 -19 20s-19 -9 -19 -20s8 -19 19 -19zM362 204c11 0 20 9 20 20s-9 19 -20 19s-19 -8 -19 -19 +s8 -20 19 -20z" /> + <glyph glyph-name="ion-gear-a" unicode="&#xf13d;" horiz-adv-x="384" +d="M347 192c0 -24 15 -43 37 -56c-4 -13 -10 -26 -16 -38c-25 6 -45 -3 -62 -20s-22 -37 -16 -62c-12 -6 -25 -12 -38 -16c-13 22 -36 37 -60 37s-47 -15 -60 -37c-13 4 -27 10 -39 16c6 25 2 45 -15 62s-37 21 -62 15c-6 12 -12 26 -16 39c22 13 37 36 37 60s-15 43 -37 56 +c4 13 9 26 16 38c25 -6 45 3 62 20s21 37 15 62c12 6 26 12 39 16c13 -22 36 -37 60 -37s47 15 60 37c13 -4 27 -10 39 -16c-6 -25 -2 -45 15 -62s37 -26 62 -20c6 -12 12 -25 16 -38c-22 -13 -37 -32 -37 -56zM192 94c54 0 98 44 98 98s-44 98 -98 98s-98 -44 -98 -98 +s44 -98 98 -98z" /> + <glyph glyph-name="ion-gear-b" unicode="&#xf13e;" horiz-adv-x="384" +d="M384 154h-44c-4 -14 -10 -27 -17 -39l32 -32l-54 -54l-33 32c-12 -7 -24 -11 -38 -15v-46h-76v46c-13 4 -26 8 -38 15l-33 -32l-54 54l32 32c-7 12 -13 25 -17 39h-44v76h43c4 14 9 29 16 41l-30 30l54 54l29 -29c13 8 27 13 42 17v41h76v-41c15 -4 29 -9 42 -17l29 29 +l54 -54l-30 -30c7 -12 13 -27 16 -41h43v-76zM192 138c30 0 54 24 54 54s-24 54 -54 54s-54 -24 -54 -54s24 -54 54 -54z" /> + <glyph glyph-name="ion-grid" unicode="&#xf13f;" horiz-adv-x="320" +d="M64 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 167 +c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 39 +c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50z" /> + <glyph glyph-name="ion-hammer" unicode="&#xf27b;" horiz-adv-x="320" +d="M314 416c3 0 6 -3 6 -6v-84c0 -3 -3 -6 -6 -6h-52c-3 0 -6 3 -6 6v14c-6 5 -16 9 -22 7c-7 -2 -23 -13 -30 -25s-6 -28 -6 -66l8 -2c5 -1 7 -6 7 -9v-70c0 -95 11 -201 11 -201c0 -3 -3 -6 -6 -6h-84c-3 0 -6 3 -6 6c0 0 11 106 11 201v70c0 3 3 8 7 9l7 2 +c0 43 -5 58 -22 74c-18 16 -41 19 -63 17s-51 -35 -58 -45s-10 2 -10 11c1 16 22 60 72 81s91 22 102 22s27 -1 38 -3s16 -18 26 -18c7 0 14 5 18 9v6c0 3 3 6 6 6h52z" /> + <glyph glyph-name="ion-happy" unicode="&#xf31c;" +d="M355 158c8 -4 11 -13 7 -21c-24 -46 -78 -73 -138 -73c-62 0 -118 29 -139 74c-4 8 0 17 8 21c2 1 5 1 7 1c6 0 11 -3 14 -9c16 -34 60 -55 110 -55c49 0 92 21 110 56c3 5 8 8 14 8c3 0 5 -1 7 -2zM381 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6 +s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22c11 14 23 23 44 23s35 -9 45 -23zM157 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22 +c11 14 23 23 44 23s35 -9 45 -23zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56 +s100 20 136 56z" /> + <glyph glyph-name="ion-headphone" unicode="&#xf140;" horiz-adv-x="384" +d="M383 210c3 -51 -3 -130 -13 -162c-20 -67 -40 -80 -72 -80s-58 27 -58 59v106c0 33 23 59 53 59c18 0 34 -9 44 -24c0 0 11 7 13 22s4 34 -5 64s-21 19 -36 38c-2 3 -5 7 -8 10l-10 10c-2 2 -3 3 -5 4c-11 9 -21 17 -34 23c-19 9 -39 13 -60 13s-42 -4 -61 -13 +c-13 -6 -22 -14 -33 -23c-2 -1 -3 -2 -5 -4l-10 -10s-6 -7 -8 -10c-15 -19 -27 -8 -36 -38c-9 -31 -7 -49 -5 -64s13 -22 13 -22c10 15 26 24 44 24c30 0 53 -27 53 -59v-106c0 -32 -26 -59 -58 -59s-52 13 -72 80c-10 32 -16 111 -13 162c3 60 22 108 56 145v0 +c8 8 15 16 24 23s19 13 29 18c25 13 53 20 82 20s57 -7 82 -20c10 -5 19 -11 28 -18s17 -15 25 -23v0c34 -37 53 -85 56 -145z" /> + <glyph glyph-name="ion-heart-broken" unicode="&#xf31d;" horiz-adv-x="416" +d="M181 160c0 -36 -2 -71 4 -107c2 -10 2 -20 2 -31l-153 159c-45 47 -45 124 0 171c40 41 103 43 144 3c-2 -15 -3 -31 -3 -46c-18 -14 -40 -21 -56 -39l11 7c17 11 15 8 35 14c3 1 8 3 11 5c0 -1 -1 -5 -1 -6c1 -20 11 -39 15 -60c0 -5 1 -10 -1 -15c-8 -17 -7 -37 -8 -55 +zM274 147c8 -18 23 -29 38 -39l-104 -108l-17 18c0 13 -4 26 -4 38c-2 48 10 94 21 142v0c1 -1 2 -1 3 -1c30 -6 52 -24 63 -50zM382 352c46 -47 46 -124 0 -171l-68 -70c-28 24 -42 54 -65 81c-12 13 -26 23 -41 32c-3 13 -8 26 -11 39c-3 12 14 21 16 31c3 12 3 26 3 39 +l19 19c40 42 107 42 147 0z" /> + <glyph glyph-name="ion-heart" unicode="&#xf141;" horiz-adv-x="416" +d="M382 352c46 -47 46 -124 0 -171l-174 -181l-174 181c-46 47 -46 124 0 171c40 42 107 42 147 0l27 -28l28 28c40 42 106 42 146 0z" /> + <glyph glyph-name="ion-help-buoy" unicode="&#xf27c;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM402 264c-10 24 -23 45 -42 64s-41 32 -65 42l-19 -61c14 -6 27 -15 38 -26s21 -24 27 -38zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM88 328 +c-19 -19 -32 -41 -42 -65l61 -19c6 14 15 27 26 38s24 21 38 27l-19 61c-24 -10 -45 -23 -64 -42zM46 120c10 -24 23 -45 42 -64s41 -32 65 -42l19 61c-14 6 -27 15 -38 26s-21 24 -27 38zM360 56c19 19 32 41 42 65l-61 19c-6 -14 -15 -27 -26 -38s-24 -21 -38 -27l19 -61 +c24 10 45 23 64 42z" /> + <glyph glyph-name="ion-help-circled" unicode="&#xf142;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM244 89c1 18 -12 31 -29 31c-16 0 -30 -11 -30 -29s12 -30 28 -30c17 0 31 10 31 28zM293 217c7 10 12 22 12 36c0 23 -9 40 -25 52c-17 13 -37 18 -62 18 +c-19 0 -34 -4 -47 -13c-19 -13 -28 -34 -28 -68h49c0 9 -1 19 4 27s13 15 26 15s19 -3 25 -11c5 -7 8 -15 8 -23c0 -7 -4 -14 -8 -20c-2 -4 -6 -7 -10 -10c0 0 -26 -15 -35 -30c-7 -11 -9 -24 -10 -41c0 -1 0 -4 4 -4h39s5 3 5 4c0 6 1 15 2 19c2 7 6 12 12 17l14 9 +c12 9 21 17 25 23z" /> + <glyph glyph-name="ion-help" unicode="&#xf143;" horiz-adv-x="256" +d="M217 371c25 -19 39 -46 39 -83c0 -22 -8 -42 -19 -57c-7 -9 -21 -21 -40 -36l-21 -14c-10 -8 -17 -18 -20 -28c-2 -6 -3 -19 -3 -29c0 -2 -1 -6 -7 -6h-62c-7 0 -7 3 -7 5c1 26 4 49 15 66c15 23 57 48 57 48c6 5 11 9 15 15c7 10 12 21 12 32c0 13 -3 26 -11 36 +c-10 12 -21 18 -41 18s-32 -11 -40 -24s-7 -29 -7 -43h-77c0 54 14 88 44 108c20 14 45 20 75 20c39 0 70 -7 98 -28zM114 78c27 -1 47 -20 46 -48s-22 -46 -49 -45c-26 1 -46 19 -45 47s22 47 48 46z" /> + <glyph glyph-name="ion-home" unicode="&#xf144;" horiz-adv-x="384" +d="M384 160h-48v-160h-96v128h-96v-128h-96v160h-48l192 224z" /> + <glyph glyph-name="ion-icecream" unicode="&#xf27d;" horiz-adv-x="320" +d="M32 192h256l-128 -224zM307 275c8 -5 13 -13 13 -23c0 -16 -14 -28 -30 -28h-4h-252h-4c-16 0 -30 13 -30 28c0 10 6 18 14 23c1 0 1 2 2 2c4 3 7 7 8 12v1c-2 6 -2 12 -2 18c0 42 34 76 76 76c8 0 16 -2 23 -4c-3 -12 -4 -31 -4 -31c2 15 11 29 11 29c18 23 46 38 77 38 +c53 0 96 -43 96 -96c0 -11 -2 -21 -5 -30v-1c0 -4 4 -9 8 -12c1 0 2 -2 3 -2z" /> + <glyph glyph-name="ion-icon-social-google-plus-outline" unicode="&#xf145;" +d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" /> + <glyph glyph-name="ion-icon-social-google-plus" unicode="&#xf146;" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" /> + <glyph glyph-name="ion-image" unicode="&#xf147;" +d="M336 224c-26 0 -48 22 -48 48s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM420 384c16 0 28 -12 28 -28v-328c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v328c0 16 12 28 28 28h392zM317 186l99 -106v260c0 7 -6 12 -13 12h-358c-7 0 -12 -5 -13 -12v-260l126 152 +c4 4 10 8 17 8s13 -2 17 -7l54 -59l4 -4c3 -2 7 -4 11 -4s8 2 12 5l18 16c4 3 8 5 13 5s10 -2 13 -6z" /> + <glyph glyph-name="ion-images" unicode="&#xf148;" +d="M426 308c13 -1 23 -12 22 -24l-14 -263c-1 -13 -12 -22 -25 -21l-330 16c-13 1 -23 10 -22 23l2 46l-15 -1c-12 -1 -22 7 -23 18l-21 236c-1 11 7 21 19 22l296 24c12 1 22 -7 23 -18l5 -54zM71 302c1 12 11 22 24 22l219 -11l-2 31h-1v1c-1 5 -5 8 -10 8l-261 -22 +c-5 0 -10 -4 -10 -9v0v-1l16 -178l18 25zM405 66l10 198v1v0c0 6 -5 10 -11 10l-58 3l-29 2l-204 9c-6 0 -11 -4 -12 -9v0v-1l-3 -63l-7 -128v-7l6 7l102 109c4 4 8 6 14 6s11 -3 14 -7l43 -49l3 -3c2 -2 6 -4 10 -4s5 1 9 3l17 12c4 3 7 4 11 4s9 -2 11 -5l27 -33zM341 186 +c-20 0 -35 15 -35 35s16 35 35 35c20 0 35 -16 35 -35s-16 -35 -35 -35z" /> + <glyph glyph-name="ion-information-circled" unicode="&#xf149;" +d="M448 195c2 -124 -97 -225 -221 -227s-225 97 -227 221s97 225 221 227s225 -97 227 -221zM224 336c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM268 53v11h-22v172h-66v-12h22v-160h-22v-11h88z" /> + <glyph glyph-name="ion-information" unicode="&#xf14a;" horiz-adv-x="128" +d="M96 0h32v-16h-128v16h32v240h-32v16h96v-256zM64 304c-27 0 -48 21 -48 48s21 48 48 48s48 -21 48 -48s-21 -48 -48 -48z" /> + <glyph glyph-name="ion-ionic" unicode="&#xf14b;" horiz-adv-x="416" +d="M378 313c24 -34 38 -76 38 -121c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208c45 0 87 -14 121 -38c6 5 13 7 21 7c19 0 35 -16 35 -35c0 -8 -2 -15 -7 -21zM344 56c18 18 31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-5 13 -12 25 -20 36 +c-5 -2 -10 -3 -15 -3c-19 0 -35 15 -35 34c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 15 -75 15s-51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75s5 -51 15 -75c10 -23 23 -43 41 -61s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15 +c23 10 43 23 61 41zM112 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96z" /> + <glyph glyph-name="ion-ios7-alarm-outline" unicode="&#xf14c;" horiz-adv-x="404" +d="M384 256l-54 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l36 -45l-12 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 71 -43 115c0 51 22 97 57 129l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 +h5c20 0 39 -7 54 -18l-54 -52l11 -11c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -8 -38 -20 -52zM22 280l91 89c-9 5 -19 7 -32 6c-37 -2 -65 -32 -65 -67c0 -10 2 -19 6 -28z +M362 172c0 88 -72 158 -160 158s-160 -70 -160 -158s72 -158 160 -158s160 70 160 158zM291 369l91 -89c4 9 6 18 6 28c0 35 -28 65 -65 67c-13 1 -23 -1 -32 -6zM202 288h16v-144h-112v16h96v128z" /> + <glyph glyph-name="ion-ios7-alarm" unicode="&#xf14d;" horiz-adv-x="404" +d="M385 256l-55 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l37 -45l-13 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 70 -43 114c0 51 22 98 57 130l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 +h5c20 0 39 -7 54 -18l-54 -53l11 -10c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -7 -38 -19 -52zM218 144v144h-16v-128h-96v-16h112z" /> + <glyph glyph-name="ion-ios7-albums-outline" unicode="&#xf14e;" +d="M432 304h-416v-288h416v288zM448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> + <glyph glyph-name="ion-ios7-albums" unicode="&#xf14f;" +d="M448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> + <glyph glyph-name="ion-ios7-americanfootball-outline" unicode="&#xf31e;" +d="M356 324c120 -120 88 -352 88 -352s-28 -4 -70 -4c-78 0 -204 14 -282 92c-120 120 -88 352 -88 352s28 4 70 4c78 0 204 -14 282 -92zM364 64l66 -67c2 23 3 61 -1 105l-3 24zM345 313c-33 33 -78 56 -134 71c-11 3 -22 5 -33 7l-71 -71l69 -69l37 37l11 -11l-37 -37 +l21 -21l37 37l11 -11l-37 -37l21 -21l37 37l11 -11l-37 -37l21 -21l37 37l11 -11l-37 -37l70 -69l70 71c-4 24 -10 46 -18 67c-15 40 -34 74 -60 100zM19 282l3 -24l62 62l-66 67c-2 -23 -3 -61 1 -105zM29 398l66 -66l63 62c-27 4 -55 6 -84 6c-18 0 -33 -1 -45 -2zM103 71 +c33 -33 78 -56 134 -71c11 -3 22 -5 33 -7l71 71l-69 69l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-69 69l-71 -71c4 -24 10 -46 18 -67c15 -40 34 -74 60 -100zM374 -16c18 0 33 1 45 2l-67 66l-62 -62 +c27 -4 55 -6 84 -6z" /> + <glyph glyph-name="ion-ios7-americanfootball" unicode="&#xf31f;" +d="M3 402l81 -82l-76 -76c-12 70 -7 134 -5 158zM272 133l69 -69l-84 -85c-59 12 -120 36 -165 81s-69 106 -81 165l85 84l69 -69l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11zM176 251l-69 69l84 85 +c59 -12 120 -36 165 -81s69 -106 81 -165l-84 -84l-70 69l37 37l-11 11l-37 -37l-21 21l37 37l-11 11l-37 -37l-21 21l37 37l-11 11l-37 -37l-21 21l37 37l-11 11zM276 -24l77 76l81 -81c-12 -1 -33 -3 -60 -3c-28 0 -62 2 -98 8zM172 408l-76 -76l-82 81c12 1 33 3 60 3 +c28 0 62 -2 98 -8zM445 -18l-81 82l76 76c12 -70 7 -134 5 -158z" /> + <glyph glyph-name="ion-ios7-analytics-outline" unicode="&#xf320;" +d="M224 400c-28 0 -55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45s35 41 45 66c11 26 16 53 16 81s-5 55 -16 81 +c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM76 128c-25 0 -41 18 -42 19c-3 3 -2 9 1 12s8 2 11 -1c1 -1 15 -17 36 -14c12 2 27 26 38 42c4 6 9 12 12 16 +c17 21 34 23 45 21c24 -3 45 -28 54 -50c7 -18 18 -28 32 -29c15 -1 31 11 43 30c1 2 3 4 4 7c9 17 24 43 52 43c31 0 52 -35 53 -36c2 -4 1 -9 -3 -11s-9 -1 -11 3c0 0 -5 8 -12 15c-6 6 -16 13 -27 13c-18 0 -29 -19 -38 -35c-1 -3 -3 -5 -4 -7c-15 -25 -36 -40 -58 -38 +c-20 1 -36 15 -46 39s-28 39 -41 41c-11 1 -21 -4 -31 -16c-3 -4 -6 -9 -10 -15c-14 -20 -31 -45 -50 -48c-3 0 -5 -1 -8 -1z" /> + <glyph glyph-name="ion-ios7-analytics" unicode="&#xf321;" +d="M224 416c124 0 224 -100 224 -224c0 -13 -1 -25 -3 -37c-1 -6 -2 -12 -3 -17c-24 -98 -113 -170 -218 -170c-122 0 -221 98 -224 219v5c0 9 1 17 2 26c13 111 107 198 222 198zM431 168c1 8 1 16 1 24c0 28 -5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45 +c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81v0c14 -21 29 -34 29 -34h1v-1c1 -1 15 -16 36 -13c12 2 27 26 38 42c4 6 9 12 12 16c17 21 34 23 45 21c24 -3 45 -27 54 -50c7 -18 18 -28 32 -29c15 -1 31 9 43 29 +c1 2 3 4 4 7c9 17 24 44 52 44c31 0 52 -35 53 -36c3 -4 9 -12 16 -20z" /> + <glyph glyph-name="ion-ios7-arrow-back" unicode="&#xf150;" horiz-adv-x="192" +d="M192 320l-127 -128l127 -128l-32 -32l-160 160v0v0l160 160z" /> + <glyph glyph-name="ion-ios7-arrow-down" unicode="&#xf151;" horiz-adv-x="320" +d="M301 288l19 -21l-160 -171l-160 171l19 21l141 -150z" /> + <glyph glyph-name="ion-ios7-arrow-forward" unicode="&#xf152;" horiz-adv-x="192" +d="M0 320l32 32l160 -160v0v0l-160 -160l-32 32l127 128z" /> + <glyph glyph-name="ion-ios7-arrow-left" unicode="&#xf153;" horiz-adv-x="192" +d="M192 333l-150 -141l150 -141l-21 -19l-171 160l171 160z" /> + <glyph glyph-name="ion-ios7-arrow-right" unicode="&#xf154;" horiz-adv-x="192" +d="M0 333l21 19l171 -160l-171 -160l-21 19l150 141z" /> + <glyph glyph-name="ion-ios7-arrow-thin-down" unicode="&#xf27e;" horiz-adv-x="192" +d="M190 126c2 -2 2 -4 2 -6s0 -4 -2 -6c0 0 -87 -79 -88 -80s-3 -2 -6 -2s-5 1 -6 2s-88 80 -88 80c-3 3 -3 9 0 12s9 3 12 0l74 -67v285c0 4 4 8 8 8s8 -4 8 -8v-285l74 67c3 3 9 3 12 0z" /> + <glyph glyph-name="ion-ios7-arrow-thin-left" unicode="&#xf27f;" horiz-adv-x="320" +d="M94 98c-2 -2 -4 -2 -6 -2s-4 0 -6 2c0 0 -79 87 -80 88s-2 3 -2 6s1 5 2 6s80 88 80 88c3 3 9 3 12 0s3 -9 0 -12l-67 -74h285c4 0 8 -4 8 -8s-4 -8 -8 -8h-285l67 -74c3 -3 3 -9 0 -12z" /> + <glyph glyph-name="ion-ios7-arrow-thin-right" unicode="&#xf280;" horiz-adv-x="320" +d="M226 98c-3 3 -3 9 0 12l67 74h-285c-4 0 -8 4 -8 8s4 8 8 8h285l-67 74c-3 3 -3 9 0 12s9 3 12 0c0 0 79 -87 80 -88s2 -3 2 -6s-1 -5 -2 -6s-80 -88 -80 -88c-2 -2 -4 -2 -6 -2s-4 0 -6 2z" /> + <glyph glyph-name="ion-ios7-arrow-thin-up" unicode="&#xf281;" horiz-adv-x="192" +d="M190 258c-3 -3 -9 -3 -12 0l-74 67v-285c0 -4 -4 -8 -8 -8s-8 4 -8 8v285l-74 -67c-3 -3 -9 -3 -12 0s-3 9 0 12c0 0 87 79 88 80s3 2 6 2s5 -1 6 -2s88 -80 88 -80c2 -2 2 -4 2 -6s0 -4 -2 -6z" /> + <glyph glyph-name="ion-ios7-arrow-up" unicode="&#xf155;" horiz-adv-x="320" +d="M301 96l-141 150l-141 -150l-19 21l160 171l160 -171z" /> + <glyph glyph-name="ion-ios7-at-outline" unicode="&#xf156;" horiz-adv-x="255" +d="M236 127v1h19l-3 -6c-3 -6 -13 -19 -22 -27s-18 -14 -28 -20s-21 -10 -32 -13s-23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 11 -26 29 -34 46c-7 16 -10 33 -10 58c0 18 4 38 11 55c7 16 17 30 29 42s27 21 43 28c15 6 33 9 53 9c16 0 32 -3 46 -8 +c15 -5 28 -12 39 -22s17 -21 24 -35c6 -13 8 -26 8 -44c0 -14 -2 -28 -7 -40s-9 -20 -17 -30c-8 -9 -13 -15 -23 -21c-11 -6 -20 -9 -29 -9c-8 0 -15 2 -20 7c-3 2 -5 6 -6 9c-6 -6 -11 -10 -17 -12c-10 -3 -18 -4 -26 -4s-15 1 -21 4s-12 7 -17 12s-8 11 -11 18 +s-5 14 -5 22c0 12 3 24 7 36v2c4 11 5 16 13 26c8 11 17 19 28 26s24 11 38 11c12 0 21 -3 31 -9c7 -4 12 -10 16 -16l6 17h18l-38 -102c-2 -5 -4 -10 -5 -14s-1 -7 -1 -10c0 -2 1 -4 3 -5s4 -2 8 -2c6 0 11 2 20 7c8 4 12 9 19 17c6 8 10 14 14 25s6 23 6 35 +c0 15 -2 25 -7 36c-6 13 -10 22 -19 30s-20 15 -33 20s-27 7 -42 7c-19 0 -35 -3 -48 -9c-15 -6 -27 -14 -37 -24c-11 -10 -19 -23 -25 -37c-6 -15 -10 -32 -10 -48c0 -22 2 -36 8 -49c6 -15 17 -31 28 -41s24 -18 38 -23s30 -7 46 -7c10 0 20 1 30 4s18 6 27 11 +s17 11 24 18s14 13 19 21zM147 154c4 5 8 12 11 20l21 57c-2 5 -4 10 -7 13c-3 4 -6 6 -10 8c-1 0 -1 1 -2 1c-3 2 -5 3 -9 4c-5 1 -9 2 -13 2c-10 0 -19 -3 -28 -9s-17 -13 -23 -22c-5 -8 -7 -11 -10 -20c0 -1 -1 -3 -1 -4c-4 -11 -5 -20 -5 -30c0 -6 1 -11 3 -16 +s5 -9 8 -13s7 -6 12 -8s9 -3 15 -3c4 0 9 1 14 2c4 1 8 2 12 5s8 7 12 13z" /> + <glyph glyph-name="ion-ios7-at" unicode="&#xf157;" horiz-adv-x="256" +d="M228 128v0h28c-1 -1 -2 -4 -3 -6c-4 -6 -14 -19 -23 -27s-18 -14 -28 -20s-20 -10 -32 -13c-11 -3 -23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 10 -26 28 -34 46c-7 16 -10 33 -10 58c0 19 4 39 11 55s17 30 29 42s28 21 44 28c15 6 32 9 52 9c16 0 31 -3 46 -8 +s28 -12 39 -22s18 -22 25 -36c6 -14 8 -26 8 -44c0 -14 -2 -28 -7 -40c-4 -11 -9 -20 -17 -30c-7 -9 -14 -16 -24 -22c-12 -6 -21 -9 -30 -9s-16 2 -22 8c-2 1 -3 3 -4 5c-4 -4 -9 -6 -14 -8c-10 -3 -18 -5 -27 -5c-8 0 -16 2 -23 5s-12 7 -17 12s-9 12 -12 19s-4 14 -4 22 +c0 12 2 25 6 37l1 1c4 10 5 17 13 27c8 11 17 20 28 27c12 7 24 10 38 10c12 0 22 -3 33 -9c5 -3 8 -6 12 -10l5 12h25l-39 -104c-2 -5 -3 -9 -4 -13c-1 -3 -1 -7 -1 -9s0 -3 1 -3c0 0 1 -1 5 -1c5 0 11 2 19 7c7 4 10 8 16 16s9 13 13 23s6 20 6 32c0 14 -1 24 -6 34 +c-5 12 -10 21 -18 28c-9 8 -19 14 -31 18s-26 7 -40 7c-18 0 -32 -3 -44 -8c-14 -6 -25 -13 -35 -23s-18 -22 -24 -35c-6 -14 -9 -30 -9 -45c0 -21 3 -34 8 -46c6 -14 16 -30 26 -39s22 -16 35 -21c14 -5 28 -7 43 -7c10 0 20 2 29 4s18 6 26 11s28 20 38 33zM144 157 +c4 5 7 12 10 19l20 55c-1 4 -3 7 -5 9c-3 3 -6 6 -9 8h-1h-1v1c-3 2 -5 2 -8 3c-4 1 -8 1 -12 1c-9 0 -17 -2 -25 -7c-10 -6 -17 -14 -21 -21c-5 -8 -6 -11 -9 -19c0 -1 -1 -2 -1 -3c-3 -10 -6 -19 -6 -28c0 -5 1 -10 3 -14s4 -8 7 -11s7 -6 11 -8s8 -2 13 -2c4 0 8 0 12 1 +v0c4 1 7 2 11 5c3 2 7 5 11 11z" /> + <glyph glyph-name="ion-ios7-barcode-outline" unicode="&#xf322;" horiz-adv-x="416" +d="M0 64v256h80v-16h-64v-224h64v-16h-80zM336 320h80v-256h-80v16h64v224h-64v16zM64 128v128h16v-128h-16zM336 128v128h16v-128h-16zM272 96v192h16v-192h-16zM128 96v192h16v-192h-16zM199 112v160h16v-160h-16z" /> + <glyph glyph-name="ion-ios7-barcode" unicode="&#xf323;" horiz-adv-x="416" +d="M0 320h416v-256h-416v256zM80 128v128h-16v-128h16zM144 96v192h-16v-192h16zM215 112v160h-16v-160h16zM288 96v192h-16v-192h16zM352 128v128h-16v-128h16z" /> + <glyph glyph-name="ion-ios7-baseball-outline" unicode="&#xf324;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM77 45l3 -3 +l3 3c9 9 18 19 25 30l-20 10l7 15l22 -11c4 7 8 14 11 22c2 5 3 9 5 14l-23 5l3 16l25 -5c4 14 5 28 6 43h-24v16h24c-1 14 -3 28 -6 42l-25 -5l-3 16l24 4c-2 5 -4 11 -6 16c-3 7 -7 14 -11 21l-22 -11l-7 14l21 11c-7 11 -16 21 -26 31l-3 3l-3 -3 +c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66zM305 0c17 7 33 17 48 29c-13 12 -23 25 -33 40l-25 -13l-7 14l24 12c-7 13 -13 27 -18 41l-27 -5l-3 16l25 4c-4 15 -5 30 -6 46h-27v16h27c1 15 3 30 6 44l-25 5l3 16l26 -5 +c5 14 11 28 18 41l-23 12l7 14l24 -13c10 15 21 29 34 41c-15 12 -31 22 -48 29c-26 11 -53 16 -81 16s-55 -5 -81 -16c-19 -8 -36 -18 -51 -31c12 -11 22 -24 31 -38l22 12l7 -14l-21 -11c7 -13 13 -27 18 -42l24 5l3 -16l-22 -4c4 -14 5 -30 6 -45h24v-16h-24 +c-1 -16 -3 -31 -7 -46l23 -4l-3 -16l-24 4c-5 -14 -11 -28 -18 -41l21 -11l-7 -14l-23 12c-9 -13 -19 -26 -30 -37c15 -13 32 -23 51 -31c26 -11 53 -16 81 -16s55 5 81 16zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-5 5 +c-2 -2 -4 -3 -6 -5c-10 -10 -18 -21 -26 -32l18 -10l-7 -14l-20 10c-4 -7 -7 -13 -10 -20c-2 -5 -4 -11 -6 -16l21 -4l-3 -16l-22 4c-3 -13 -5 -27 -6 -41h21v-16h-21c1 -14 3 -29 6 -43l22 5l3 -16l-20 -4c2 -5 3 -10 5 -15c3 -7 7 -14 11 -21l19 10l7 -15l-18 -9 +c7 -11 16 -21 26 -31c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-baseball" unicode="&#xf325;" +d="M83 45l-3 -3c-4 -4 -8 -8 -12 -11c-42 41 -68 98 -68 161s26 120 68 161c4 -3 8 -7 12 -11l3 -3c10 -10 19 -20 26 -31l-21 -11l7 -14l22 11c4 -7 8 -14 11 -21c2 -5 4 -11 6 -16l-24 -4l3 -16l25 5c3 -14 5 -28 6 -42h-24v-16h24c-1 -15 -2 -29 -6 -43l-25 5l-3 -16 +l23 -4c-2 -5 -3 -10 -5 -15c-3 -8 -7 -15 -11 -22l-22 11l-7 -15l20 -10c-7 -11 -16 -21 -25 -30zM320 69c10 -15 20 -28 33 -40c4 -4 9 -8 13 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c4 3 8 7 12 11c11 11 21 24 30 37l23 -12l7 14l-21 11c7 13 13 27 18 41 +l24 -4l3 16l-23 4c4 15 6 30 7 46h24v16h-24c-1 15 -2 31 -6 45l22 4l-3 16l-24 -5c-5 15 -11 29 -18 42l21 11l-7 14l-22 -12c-9 14 -19 27 -31 38c-4 4 -8 8 -12 11c39 33 89 52 144 52c54 0 102 -19 141 -50c-4 -3 -8 -7 -12 -11c-13 -12 -24 -26 -34 -41l-24 13l-7 -14 +l23 -12c-7 -13 -13 -27 -18 -41l-26 5l-3 -16l25 -5c-3 -14 -5 -29 -6 -44h-27v-16h27c1 -16 2 -31 6 -46l-25 -4l3 -16l27 5c5 -14 11 -28 18 -41l-24 -12l7 -14zM448 192c0 -64 -27 -122 -70 -163c-4 3 -8 7 -12 11c-2 2 -4 3 -6 5c-10 10 -19 20 -26 31l18 9l-7 15 +l-19 -10c-4 7 -8 14 -11 21c-2 5 -3 10 -5 15l20 4l-3 16l-22 -5c-3 14 -5 29 -6 43h21v16h-21c1 14 3 28 6 41l22 -4l3 16l-21 4c2 5 4 11 6 16c3 7 6 13 10 20l20 -10l7 14l-18 10c8 11 16 22 26 32c2 2 4 3 6 5c4 4 8 8 12 11c43 -41 70 -99 70 -163zM68 353v0v0v0z +M68 31v0v0zM80 20v0v0v0zM80 364v0v0zM378 29v0v0v0zM378 355v0v0zM366 366v0v0v0zM366 18v0v0z" /> + <glyph glyph-name="ion-ios7-basketball-outline" unicode="&#xf326;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM371 339 +l-5 5c-2 -2 -4 -3 -6 -5c-19 -19 -35 -41 -45 -66c-10 -23 -15 -48 -16 -73h133c-1 25 -6 50 -16 73c-10 25 -26 47 -45 66zM353 355c-15 12 -31 22 -48 29c-23 10 -48 15 -73 16v-200h51c2 61 29 116 70 155zM143 384c-19 -8 -36 -18 -51 -31c40 -39 66 -93 68 -153h56v200 +c-25 -1 -50 -6 -73 -16zM77 339c-19 -19 -35 -41 -45 -66c-10 -23 -15 -48 -16 -73h128c-1 25 -6 50 -16 73c-10 25 -26 47 -45 66l-3 3zM77 45l3 -3l3 3c19 19 35 41 45 66c10 23 15 48 16 73h-128c1 -25 6 -50 16 -73c10 -25 26 -47 45 -66zM92 31c15 -13 32 -23 51 -31 +c23 -10 48 -15 73 -16v200h-56c-2 -60 -28 -114 -68 -153zM305 0c17 7 33 17 48 29c-41 39 -68 94 -70 155h-51v-200c25 1 50 6 73 16zM371 45c19 19 35 41 45 66c10 23 15 48 16 73h-133c1 -25 6 -50 16 -73c10 -25 26 -47 45 -66c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-basketball" unicode="&#xf327;" +d="M160 200c-2 60 -28 114 -68 153c-4 4 -8 8 -12 11c37 31 84 50 136 52v-216h-56zM283 200h-51v216c51 -2 96 -20 133 -50c-4 -3 -8 -7 -12 -11c-41 -39 -68 -94 -70 -155zM360 339l5 5c4 4 9 8 13 11c41 -39 68 -94 70 -155h-149c1 25 6 50 16 73c10 25 26 47 45 66z +M128 273c10 -23 15 -48 16 -73h-144c2 60 28 114 68 153c4 -3 8 -7 12 -11l3 -3c19 -19 35 -41 45 -66zM283 184c2 -61 29 -116 70 -155c4 -4 8 -8 12 -11c-37 -30 -82 -48 -133 -50v216h51zM83 45l-3 -3c-4 -4 -8 -8 -12 -11c-40 39 -66 93 -68 153h144 +c-1 -25 -6 -50 -16 -73c-10 -25 -26 -47 -45 -66zM315 111c-10 23 -15 48 -16 73h149c-2 -61 -29 -116 -70 -155c-4 3 -9 7 -13 11l-5 5c-19 19 -35 41 -45 66zM160 184h56v-216c-52 2 -99 21 -136 52c4 3 8 7 12 11c40 39 66 93 68 153zM68 31v0v0zM378 29v0v0v0zM68 353v0 +v0v0zM80 20v0v0v0zM365 18v0v0zM80 364v0v0zM365 366v0v0v0zM378 355v0v0z" /> + <glyph glyph-name="ion-ios7-bell-outline" unicode="&#xf158;" horiz-adv-x="384" +d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM43 80h298c-25 25 -40 58 -40 142c0 46 -13 80 -37 101c-23 19 -52 23 -72 23s-49 -4 -72 -23c-25 -21 -37 -55 -37 -101 +c0 -51 -5 -85 -17 -110c-6 -13 -14 -23 -23 -32zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> + <glyph glyph-name="ion-ios7-bell" unicode="&#xf159;" horiz-adv-x="384" +d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> + <glyph glyph-name="ion-ios7-bolt-outline" unicode="&#xf15a;" horiz-adv-x="226" +d="M131 316l-100 -140h65h19l-3 -19l-17 -89l100 140h-65h-19l3 19zM160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> + <glyph glyph-name="ion-ios7-bolt" unicode="&#xf15b;" horiz-adv-x="226" +d="M160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> + <glyph glyph-name="ion-ios7-bookmarks-outline" unicode="&#xf15c;" horiz-adv-x="418" +d="M385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150c10 0 20 -5 26 -12v0v0c6 7 16 12 26 12h150zM201 37v309c0 9 -12 22 -25 22h-143 +c-9 0 -16 -7 -16 -16v-286c0 -9 7 -18 16 -18h144c10 0 19 -3 24 -11zM273 368v-100l23 14l9 6l9 -6l23 -14v100h-64zM401 66v286c0 9 -7 16 -16 16h-32v-131l-48 32l-48 -32v131h-15c-13 0 -25 -13 -25 -22v-309c5 9 14 11 24 11h144c9 0 16 9 16 18z" /> + <glyph glyph-name="ion-ios7-bookmarks" unicode="&#xf15d;" horiz-adv-x="418" +d="M296 283l-23 -15v116h64v-116l-23 15l-9 6zM385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150s18 -8 18 -15v-329l8 -6l8 6v329s10 15 18 15h22v-146 +l48 32l48 -32v146h32z" /> + <glyph glyph-name="ion-ios7-box-outline" unicode="&#xf15e;" horiz-adv-x="320" +d="M192 208h-1h-63c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16zM192 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-64c-18 0 -32 14 -32 32s14 32 32 32h64zM320 336v-80h-16v-208h-288v208h-16v80h320zM288 64v192h-256v-192h256zM304 272v48h-288 +v-48h288z" /> + <glyph glyph-name="ion-ios7-box" unicode="&#xf15f;" horiz-adv-x="320" +d="M16 48v192h288v-192h-288zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16h-64zM0 336h320v-80h-16h-288h-16v80z" /> + <glyph glyph-name="ion-ios7-briefcase-outline" unicode="&#xf282;" horiz-adv-x="416" +d="M368 320h48v-320h-416v320h48v16h32v-16h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v16h32v-16zM144 320v0h128v0v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30zM400 16v224h-384v-224h384zM400 256v48h-32v-16h-32v16h-256v-16h-32v16h-32v-48 +h384z" /> + <glyph glyph-name="ion-ios7-briefcase" unicode="&#xf283;" horiz-adv-x="416" +d="M48 320v16h32v-16h-32zM0 0v240h416v-240h-416zM336 320v16h32v-16h-32zM368 320h48v-64h-416v64h48v-32h32v32h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v-32h32v32zM272 320v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30v0h128v0z" /> + <glyph glyph-name="ion-ios7-browsers-outline" unicode="&#xf160;" horiz-adv-x="384" +d="M0 304h304v-304h-304v304zM288 16v272h-272v-272h272zM384 384v-304h-64v16h48v272h-272v-48h-16v64h304z" /> + <glyph glyph-name="ion-ios7-browsers" unicode="&#xf161;" horiz-adv-x="384" +d="M0 304h304v-304h-304v304zM80 384h304v-304h-64v240h-240v64z" /> + <glyph glyph-name="ion-ios7-calculator-outline" unicode="&#xf284;" horiz-adv-x="288" +d="M32 288v64h224v-64h-224zM48 336v-32h192v32h-192zM256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM272 32v320c0 9 -7 16 -16 16h-224c-9 0 -16 -7 -16 -16v-320c0 -9 7 -16 16 -16h224c9 0 16 7 16 16z +M48 208h32h16v-16h-64v64h16v-16v-32zM48 128h32h16v-16h-64v64h16v-16v-32zM48 48h32h16v-16h-64v64h16v-16v-32zM128 208h32h16v-16h-64v64h16v-16v-32zM208 208h32h16v-16h-64v64h16v-16v-32zM128 128h32h16v-16h-64v64h16v-16v-32zM128 48h32h16v-16h-64v64h16v-16v-32z +M208 48h32h16v-16h-64v144h16v-96v-32z" /> + <glyph glyph-name="ion-ios7-calculator" unicode="&#xf285;" horiz-adv-x="288" +d="M256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM248 168h-48v-128h48v128zM248 248h-48v-48h48v48zM168 88h-48v-48h48v48zM168 168h-48v-48h48v48zM168 248h-48v-48h48v48zM88 88h-48v-48h48v48zM88 168 +h-48v-48h48v48zM88 248h-48v-48h48v48zM40 296h208v48h-208v-48z" /> + <glyph glyph-name="ion-ios7-calendar-outline" unicode="&#xf162;" horiz-adv-x="384" +d="M16 336v-64h352v64zM288 352h96v-352h-384v352h96v32h16v-32h160v32h16v-32zM368 16v240h-352v-240h352zM368 272v64h-80v-32h-16v32h-160v-32h-16v32h-80v-64h352z" /> + <glyph glyph-name="ion-ios7-calendar" unicode="&#xf163;" horiz-adv-x="384" +d="M0 0v256h384v-256h-384zM384 352v-80h-384v80h96v-48h16v48h160v-48h16v48h96zM96 352v32h16v-32h-16zM272 352v32h16v-32h-16z" /> + <glyph glyph-name="ion-ios7-camera-outline" unicode="&#xf164;" horiz-adv-x="384" +d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-7l-5 3c-3 4 -7 8 -10 11c-12 13 -20 24 -26 30 +c-5 5 -7 4 -7 4h-88s-2 0 -7 -4c-6 -5 -14 -14 -25 -27c-3 -4 -7 -10 -11 -14l-5 -3h-7h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17zM192 258c47 0 86 -38 86 -85s-39 -85 -86 -85s-86 38 -86 85s39 85 86 85zM192 104c38 0 70 31 70 69 +s-32 69 -70 69s-70 -31 -70 -69s32 -69 70 -69zM288 239v17h17v-17h-17zM160 173c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z" /> + <glyph glyph-name="ion-ios7-camera" unicode="&#xf165;" horiz-adv-x="384" +d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM192 88c47 0 86 38 86 85s-39 85 -86 85s-86 -38 -86 -85s39 -85 86 -85zM305 239v17h-17v-17h17 +zM192 242c38 0 70 -31 70 -69s-32 -69 -70 -69s-70 31 -70 69s32 69 70 69zM192 141c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-ios7-cart-outline" unicode="&#xf166;" horiz-adv-x="384" +d="M377 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM89 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM64 352h320l-15 -175s-209 -30 -244 -34s-69 -30 -74 -62h333v-17h-352s0 5 2 17c5 35 33 62 65 73l-57 213h-42v17h53z +M352 192l15 143h-297l44 -177c1 0 2 1 3 1z" /> + <glyph glyph-name="ion-ios7-cart" unicode="&#xf167;" horiz-adv-x="384" +d="M377 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM89 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM64 352h320l-15 -175s-209 -30 -244 -34s-69 -30 -74 -62h333v-17h-352s0 5 2 17c5 35 33 62 65 73l-57 213h-42v17h53z +" /> + <glyph glyph-name="ion-ios7-chatboxes-outline" unicode="&#xf168;" horiz-adv-x="416" +d="M16 384v-192h96v-16h-112v224h288v-112h-16v96h-256zM128 272h288v-224h-48v-64h-13l-64 64h-163v224zM400 64v192h-256v-192h153l55 -55v55h48z" /> + <glyph glyph-name="ion-ios7-chatboxes" unicode="&#xf169;" horiz-adv-x="416" +d="M288 400v-112h-176v-112h-112v224h288zM128 272h288v-224h-48v-64h-13l-64 64h-163v224z" /> + <glyph glyph-name="ion-ios7-chatbubble-outline" unicode="&#xf16a;" horiz-adv-x="384" +d="M192 336c-97 0 -176 -62 -176 -138c0 -26 10 -51 27 -73c0 -1 0 -2 1 -3s2 -1 2 -2c4 -6 6 -13 6 -20c0 -3 1 -3 -13 -47l39 17v0c2 1 10 4 11 4h1v0c5 2 10 3 16 3c5 0 9 -1 14 -2l1 -1h2c19 -6 41 -10 70 -10c48 0 92 15 125 40c32 25 50 58 50 94 +c0 76 -79 138 -176 138zM192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84 +c0 85 86 154 192 154z" /> + <glyph glyph-name="ion-ios7-chatbubble" unicode="&#xf16b;" horiz-adv-x="384" +d="M192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84c0 85 86 154 192 154z +" /> + <glyph glyph-name="ion-ios7-checkmark-empty" unicode="&#xf16c;" horiz-adv-x="207" +d="M74 118c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47l125 126l17 -18z" /> + <glyph glyph-name="ion-ios7-checkmark-outline" unicode="&#xf16d;" horiz-adv-x="416" +d="M292 271l18 -18l-134 -135c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-checkmark" unicode="&#xf16e;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM176 118l134 135l-18 18l-125 -126l-47 47l-18 -18l56 -56c2 -2 6 -4 9 -4s7 2 9 4z" /> + <glyph glyph-name="ion-ios7-circle-filled" unicode="&#xf16f;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 352c88 0 160 -72 160 -160s-72 -160 -160 -160s-160 72 -160 160s72 160 160 160z" /> + <glyph glyph-name="ion-ios7-circle-outline" unicode="&#xf170;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-clock-outline" unicode="&#xf171;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 192v128h17v-145h-113v17h96z" /> + <glyph glyph-name="ion-ios7-clock" unicode="&#xf172;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM225 175v145h-17v-128h-96v-17h113z" /> + <glyph glyph-name="ion-ios7-close-empty" unicode="&#xf2bd;" horiz-adv-x="192" +d="M180 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> + <glyph glyph-name="ion-ios7-close-outline" unicode="&#xf2bb;" horiz-adv-x="416" +d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM343 57c74 74 74 196 0 270s-196 74 -270 0s-74 -196 0 -270s196 -74 270 0zM292 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> + <glyph glyph-name="ion-ios7-close" unicode="&#xf2bc;" horiz-adv-x="416" +d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM304 108l-84 84l84 84l-12 12l-84 -84l-84 84l-12 -12l84 -84l-84 -84l12 -12l84 84l84 -84z" /> + <glyph glyph-name="ion-ios7-cloud-download-outline" unicode="&#xf173;" +d="M161 67l55 -54v242h16v-242l55 54l12 -12l-75 -73l-74 73zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82v0h-101v16h97h4c37 0 66 30 66 66s-29 67 -66 67h-15v20c0 55 -46 97 -101 97c-38 0 -73 -22 -90 -56l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -18 -44 -39l-1 -9 +l-9 -3c-30 -10 -50 -36 -50 -67c0 -40 33 -74 74 -74h91v-16h-91c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115c0 -1 -1 -2 -1 -3z" /> + <glyph glyph-name="ion-ios7-cloud-download" unicode="&#xf174;" +d="M216 13v107h16v-107l55 54l12 -12l-75 -73l-74 73l11 12zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82h-134v135h-16v-135h-35h-21h-70c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115 +c0 -1 -1 -2 -1 -3z" /> + <glyph glyph-name="ion-ios7-cloud-outline" unicode="&#xf175;" +d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4zM366 64c37 0 66 32 66 69s-29 67 -66 67h-15v21c0 56 -46 99 -101 99 +c-38 0 -73 -23 -90 -58l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39l-1 -9l-9 -3c-30 -10 -50 -37 -50 -69c0 -41 33 -76 74 -76h272h4z" /> + <glyph glyph-name="ion-ios7-cloud-upload-outline" unicode="&#xf176;" +d="M161 188l-11 11l74 75l75 -75l-12 -11l-55 54v-242h-16v242zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83v0h-101v16h97h4c37 0 66 30 66 67s-29 70 -66 70l-15 1v20c0 56 -46 99 -101 99c-38 0 -73 -23 -90 -58l-6 -13l-14 6c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39 +l-1 -9l-9 -3c-30 -10 -50 -39 -50 -71c0 -41 33 -75 74 -75h91v-16h-91c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloud-upload" unicode="&#xf177;" +d="M216 0v96h16v-96h-16zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83h-134v146l55 -54l12 11l-75 75l-74 -75l11 -11l55 54v-146h-35h-31h-60c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116 +c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloud" unicode="&#xf178;" +d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloudy-night-outline" unicode="&#xf307;" horiz-adv-x="384" +d="M125 224c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 240v0c37 0 68 -26 76 -61 +h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78zM361 142c8 0 15 2 23 4c-4 -7 -9 -14 -14 -20c-21 -24 -50 -41 -84 -45c4 6 6 12 8 19c19 4 36 13 50 25c-18 1 -35 6 -50 13c-23 11 -42 29 -56 51 +c-14 21 -22 48 -22 75c0 15 2 30 7 44c-24 -12 -43 -33 -53 -59c-5 2 -12 4 -18 5c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52c0 -32 12 -63 35 -86s54 -36 86 -36h6z" /> + <glyph glyph-name="ion-ios7-cloudy-night" unicode="&#xf308;" horiz-adv-x="384" +d="M361 142c8 0 15 2 23 4c-4 -7 -9 -15 -14 -21c-21 -24 -50 -40 -84 -44h-3c4 10 7 21 7 32c0 22 -9 43 -24 58c-14 15 -33 23 -53 24c-6 16 -16 29 -29 40c-10 8 -20 13 -32 17v2c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52 +c0 -32 12 -63 35 -86s54 -36 86 -36h6zM125 239v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v7c0 43 35 79 78 79z" /> + <glyph glyph-name="ion-ios7-cloudy-outline" unicode="&#xf179;" horiz-adv-x="274" +d="M125 272c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-6 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 288v0c37 0 68 -26 76 -61 +h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-cloudy" unicode="&#xf17a;" horiz-adv-x="274" +d="M125 288v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-cog-outline" unicode="&#xf17b;" horiz-adv-x="384" +d="M313 235c4 -12 7 -25 8 -37v-13c-1 -13 -4 -25 -8 -37c-1 -4 -3 -7 -5 -12c-5 -11 -11 -20 -19 -29c0 0 -2 -3 -6 -7s-7 -6 -7 -6c-9 -8 -19 -14 -29 -19c-4 -2 -8 -3 -11 -4c-12 -4 -24 -7 -37 -8h-13c-13 1 -25 4 -37 8c-4 1 -7 3 -11 5c-11 5 -23 12 -32 21l-4 4l-4 4 +c-9 10 -16 20 -21 32c-2 3 -3 7 -4 10c0 0 -1 3 -3 10s-3 10 -3 10c-1 6 -2 13 -2 19v11c1 13 4 26 8 38c1 4 2 7 4 10c5 12 12 22 21 32c1 2 3 4 4 5s3 3 5 4c9 8 20 15 31 20c4 2 7 4 11 5c12 4 25 7 38 8h11c6 0 13 -1 19 -2l8 -2s11 -4 11 -4c3 -1 7 -2 11 -4 +c12 -5 22 -12 32 -21l4 -4l4 -4c9 -9 15 -20 21 -32c2 -4 4 -7 5 -11zM81 186c0 -5 1 -11 2 -16l103 28l28 103c-5 1 -10 2 -16 2h-10c-11 0 -22 -3 -33 -7c-3 -1 -8 -2 -11 -4c-10 -5 -18 -10 -26 -18l-4 -4l-4 -4c-8 -9 -14 -18 -19 -28l-3 -9c-4 -11 -7 -22 -7 -33v-10z +M240 89c9 4 18 10 26 17l-76 76l-103 -28v-1c1 -3 3 -6 4 -9c5 -10 11 -20 19 -28l4 -4s2 -3 3 -4c8 -8 18 -13 28 -18c3 -2 7 -3 10 -4c10 -4 21 -6 32 -7h11c11 0 22 3 32 7c3 1 7 2 10 3zM305 186v11c-1 11 -3 22 -7 32c-1 3 -2 7 -4 10c-5 10 -11 20 -19 28l-3 3l-4 4 +c-8 8 -18 14 -28 19c-3 2 -7 2 -10 3l-1 1l-28 -104l76 -76c7 8 13 16 17 25c2 3 3 7 4 11c4 10 7 22 7 33zM384 175l-33 -8c-1 -5 -2 -10 -3 -14l27 -20l-12 -30l-34 5c-2 -4 -5 -7 -8 -11l17 -29l-22 -23l-30 17c-3 -2 -6 -5 -10 -7l5 -34l-29 -12l-21 27 +c-4 -1 -9 -2 -14 -3l-8 -33h-32l-9 33c-4 1 -9 2 -13 3l-21 -28l-29 12l4 34c-4 2 -7 5 -11 8l-30 -18l-23 22l18 31c-3 4 -5 7 -7 11l-35 -5l-12 29l28 22c-1 4 -1 8 -2 12l-35 9v32l35 9c1 4 1 8 2 12l-29 22l12 30l36 -5c2 4 5 7 7 10l-19 32l22 22l32 -19c4 3 8 6 12 8 +l-5 35l29 13l22 -29c4 1 8 1 12 2l9 35h32l9 -35c4 -1 8 -1 12 -2l22 28l29 -12l-5 -35c4 -2 7 -5 11 -8l30 18l22 -23l-17 -29c3 -4 5 -7 7 -11l35 5l12 -30l-28 -21c1 -4 2 -9 3 -13l33 -9v-32zM338 140l-8 7l2 10l3 12l1 11l10 2l22 6v7l-22 6l-10 2l-1 11l-3 12l-2 10 +l8 6l18 13l-3 7l-22 -3l-10 -1l-6 8c-2 3 -3 6 -6 10l-7 8l6 10l11 18l-5 6l-20 -12l-8 -5l-9 7l-9 6l-10 6l2 10l4 23l-7 2l-14 -18l-6 -8l-10 2c-4 1 -7 1 -11 2l-11 2l-3 10l-5 23h-7l-6 -23l-3 -10l-11 -2c-4 0 -6 -1 -10 -2l-11 -2l-6 8l-14 19l-7 -3l3 -23l2 -11 +l-9 -5l-2 -1c-3 -2 -5 -4 -8 -6l-9 -6l-9 6l-21 12l-5 -5l12 -21l6 -9l-6 -8c-2 -3 -4 -7 -6 -10l-6 -9l-10 2l-23 3l-3 -7l19 -14l8 -6l-2 -10c-1 -4 -1 -7 -2 -11l-2 -11l-10 -2l-23 -6v-7l23 -6l10 -3l1 -10c1 -4 2 -7 3 -11l2 -11l-8 -6l-19 -14l3 -6l23 3l10 1l6 -9 +c2 -4 4 -7 6 -10l6 -8l-5 -9l-12 -20l5 -5l20 11l9 6l9 -6c3 -2 6 -5 10 -7l9 -5l-2 -11l-3 -22l7 -3l13 18l6 9l11 -3c4 -1 8 -1 12 -2l10 -2l3 -10l5 -21h8l5 21l2 10l11 2c4 1 8 1 12 2l10 3l7 -9l13 -17l7 3l-4 21l-1 11l9 5c2 2 4 4 7 6c0 0 1 1 2 1l8 6l9 -5l19 -11 +l5 5l-11 18l-5 9l6 9c2 3 6 6 8 10l5 9l11 -1l21 -3l3 6z" /> + <glyph glyph-name="ion-ios7-cog" unicode="&#xf17c;" horiz-adv-x="384" +d="M384 175l-33 -8c-1 -5 -2 -10 -3 -14l27 -20l-12 -30l-34 5c-2 -4 -5 -7 -8 -11l17 -29l-22 -23l-30 17c-3 -2 -6 -5 -10 -7l5 -34l-29 -12l-21 27c-4 -1 -9 -2 -14 -3l-8 -33h-32l-9 33c-4 1 -9 2 -13 3l-21 -28l-29 12l4 34c-4 2 -7 5 -11 8l-30 -18l-23 22l18 31 +c-3 4 -5 7 -7 11l-35 -5l-12 29l28 22c-1 4 -1 8 -2 12l-35 9v32l35 9c1 4 1 8 2 12l-29 22l12 30l36 -5c2 4 5 7 7 10l-19 32l22 22l32 -19c4 3 8 6 12 8l-5 35l29 13l22 -29c4 1 8 1 12 2l9 35h32l9 -35c4 -1 8 -1 12 -2l22 28l29 -12l-5 -35c4 -2 7 -5 11 -8l30 18 +l22 -23l-17 -29c3 -4 5 -7 7 -11l35 5l12 -30l-28 -21c1 -4 2 -9 3 -13l33 -9v-32zM321 185c0 4 -1 8 -1 12c-1 13 -3 25 -7 37c-1 4 -3 8 -5 12c-5 11 -12 22 -21 31l-4 4l-5 5c-10 9 -19 16 -31 21c-4 2 -8 3 -11 4c0 0 -7 2 -11 3l-8 2c-6 1 -13 3 -19 3h-11 +c-13 -1 -26 -4 -38 -8c-4 -1 -7 -3 -11 -5c-11 -5 -22 -12 -31 -20c-2 -1 -4 -4 -5 -5s-3 -2 -4 -4c-9 -10 -16 -20 -21 -32c-2 -3 -4 -7 -5 -11c-4 -12 -6 -24 -7 -37v-12c0 -6 1 -12 2 -18c0 0 1 -3 3 -10s3 -10 3 -10c1 -3 3 -7 4 -10c5 -12 12 -22 21 -32 +c2 -2 2 -3 4 -5c1 -1 3 -2 4 -3c9 -9 20 -16 32 -22c4 -2 7 -3 11 -4c12 -4 24 -7 37 -8h13c12 1 25 3 37 7c3 1 7 3 11 5c10 5 20 11 29 19c0 0 3 2 7 6s6 7 6 7c8 9 14 18 19 29c2 5 4 8 5 12c4 12 7 24 8 37zM214 301l-28 -103l-103 -28c-1 5 -2 11 -2 16v10 +c0 11 3 22 7 33l3 9c5 10 11 19 19 28l4 4l4 4c8 8 17 13 27 18c3 2 7 3 10 4c11 4 22 7 33 7h10c5 0 11 -1 16 -2zM87 154l103 28l76 -76c-8 -6 -17 -13 -26 -17c-3 -1 -7 -2 -10 -3c-10 -4 -21 -7 -32 -7h-11c-11 0 -22 3 -32 7c-3 1 -8 2 -11 4c-10 5 -19 10 -27 18 +c-1 1 -2 3 -3 4l-4 4c-8 8 -14 18 -19 28c-2 3 -3 6 -4 9v1zM298 229c4 -10 6 -21 7 -32v-11c-1 -11 -3 -23 -7 -33c-1 -4 -2 -7 -4 -11c-4 -9 -10 -17 -17 -25l-76 76l28 104l1 -1c3 -1 7 -2 10 -3c10 -5 20 -11 28 -19l4 -4l3 -3c8 -8 14 -18 19 -28c2 -3 3 -7 4 -10z" /> + <glyph glyph-name="ion-ios7-compose-outline" unicode="&#xf17d;" horiz-adv-x="368" +d="M288 48v192l16 16v-224h-304v288h240l-16 -16h-208v-256h272zM158 164l171 171l11 -11l-180 -180h-32v32l180 180l11 -11l-171 -171zM364 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" /> + <glyph glyph-name="ion-ios7-compose" unicode="&#xf17e;" horiz-adv-x="368" +d="M128 176l180 180l32 -32l-180 -180h-32v32zM364 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4zM176 128l128 129v-3v-222h-304v288h240v0v0l-128 -128v-64h64z" /> + <glyph glyph-name="ion-ios7-contact-outline" unicode="&#xf17f;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 383c-105 0 -191 -86 -191 -191c0 -47 17 -89 45 -122c18 8 62 24 90 32c2 1 3 0 3 10c0 11 -1 18 -4 24c-4 8 -7 20 -9 31c-4 5 -10 15 -14 33c-3 16 -1 22 1 28v2 +c1 4 0 23 -3 38c-2 10 1 34 15 52c9 12 27 26 58 28h18c32 -2 49 -16 58 -28c14 -18 17 -42 15 -52c-3 -15 -4 -34 -3 -38c0 0 1 -1 1 -2c2 -6 3 -12 0 -28c-4 -18 -10 -27 -14 -32c-2 -11 -5 -24 -9 -32c-3 -7 -6 -15 -6 -23c0 -10 0 -10 2 -11c27 -8 73 -24 93 -32 +c28 33 45 76 45 122c0 105 -86 191 -191 191z" /> + <glyph glyph-name="ion-ios7-contact" unicode="&#xf180;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c59 0 111 27 146 69c-20 8 -66 24 -93 32c-2 1 -3 1 -3 11c0 8 4 16 7 23c4 8 7 21 9 32c4 5 10 14 14 32c3 16 2 22 0 28c0 0 -1 1 -1 2c-1 4 0 23 3 38c2 10 -1 34 -15 52 +c-9 12 -26 26 -58 28h-18c-31 -2 -49 -16 -58 -28c-14 -18 -17 -42 -15 -52c3 -15 4 -34 3 -38v-2c-2 -6 -4 -12 -1 -28c4 -18 10 -28 14 -33c2 -11 5 -23 9 -31c3 -6 4 -13 4 -24c0 -10 -1 -9 -3 -10c-28 -8 -72 -24 -90 -32c35 -42 87 -69 146 -69z" /> + <glyph glyph-name="ion-ios7-copy-outline" unicode="&#xf181;" horiz-adv-x="288" +d="M192 352v-64h64v-16h-80v80h16zM213 384l75 -75v-261h-48v-48h-240v336h48v48h165zM224 16v32h-176v272h-32v-304h208zM272 64v238l-65 66h-143v-304h208z" /> + <glyph glyph-name="ion-ios7-copy" unicode="&#xf182;" horiz-adv-x="288" +d="M32 32h16h192v-32h-240v336h32v-288v-16zM213 384l75 -75v-261h-48h-192v288v48h165zM256 272v16h-64v64h-16v-80h80z" /> + <glyph glyph-name="ion-ios7-download-outline" unicode="&#xf183;" horiz-adv-x="320" +d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 196l55 -55v243h16v-243l55 55l11 -12l-74 -74l-74 74z" /> + <glyph glyph-name="ion-ios7-download" unicode="&#xf184;" horiz-adv-x="320" +d="M168 304h152v-304h-320v304h152v-163l-55 55l-11 -12l74 -74l74 74l-11 12l-55 -55v163zM152 304v80h16v-80h-16z" /> + <glyph glyph-name="ion-ios7-drag" unicode="&#xf185;" horiz-adv-x="352" +d="M0 128v16h352v-16h-352zM0 184v16h352v-16h-352zM0 240v16h352v-16h-352z" /> + <glyph glyph-name="ion-ios7-email-outline" unicode="&#xf186;" horiz-adv-x="384" +d="M0 320h384v-256h-384v256zM192 180l163 124h-326zM16 80h352v214l-115 -88l68 -77l-2 -2l-79 70l-48 -37l-48 37l-79 -70l-2 2l68 77l-115 88v-214z" /> + <glyph glyph-name="ion-ios7-email" unicode="&#xf187;" horiz-adv-x="384" +d="M384 64h-384v242l131 -100l-68 -77l2 -2l79 70l48 -37l48 37l79 -70l2 2l-68 77l131 100v-242zM376 320l-184 -140l-184 140h368z" /> + <glyph glyph-name="ion-ios7-expand" unicode="&#xf30d;" horiz-adv-x="364" +d="M214 152l8 8l92 -92l50 50v-108h-108l50 50zM150 232l-8 -8l-92 92l-50 -50v108h108l-50 -50z" /> + <glyph glyph-name="ion-ios7-eye-outline" unicode="&#xf188;" horiz-adv-x="384" +d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 288c-62 0 -111 -36 -170 -96c24 -24 48 -50 76 -68c30 -20 60 -28 94 -28 +c75 0 133 56 171 95c-26 29 -50 50 -74 66c-32 21 -64 31 -97 31zM192 112c-44 0 -80 36 -80 80s36 80 80 80s80 -36 80 -80s-36 -80 -80 -80zM192 256c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64zM224 192h16v0c0 -26 -22 -48 -48 -48s-48 21 -48 48 +s22 48 48 48v-16c-16 0 -32 -13 -32 -31s15 -33 32 -33s32 14 32 32v0z" /> + <glyph glyph-name="ion-ios7-eye" unicode="&#xf189;" horiz-adv-x="384" +d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM186 221 +c0 -19 16 -35 35 -35c7 0 14 2 19 6v0c0 -27 -22 -48 -48 -48s-48 21 -48 48s22 48 48 48c-4 -5 -6 -12 -6 -19z" /> + <glyph glyph-name="ion-ios7-fastforward-outline" unicode="&#xf18a;" +d="M16 293v-202l184 101zM240 292v0v-78v-27v-95l176 100zM224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> + <glyph glyph-name="ion-ios7-fastforward" unicode="&#xf18b;" +d="M224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> + <glyph glyph-name="ion-ios7-filing-outline" unicode="&#xf18c;" horiz-adv-x="352" +d="M288 320l64 -96v-160h-176h-176v160l64 96h224zM333 224l-45 68v-68h45zM80 304v-80h48c0 -26 22 -48 48 -48s48 22 48 48h48v80h-192zM64 292l-45 -68h45v68zM336 80v128h-98c-7 -28 -32 -48 -62 -48s-55 20 -62 48h-98v-128h160h160z" /> + <glyph glyph-name="ion-ios7-filing" unicode="&#xf18d;" horiz-adv-x="352" +d="M176 160c30 0 55 20 62 48h114v-144h-176h-176v144h114c7 -28 32 -48 62 -48zM64 224h-7h-57l64 96v0v-80h16v80h192v-80h16v80v0l64 -96h-56h-8h-16h-8h-40c0 -26 -22 -48 -48 -48s-48 22 -48 48h-39h-9h-16z" /> + <glyph glyph-name="ion-ios7-film-outline" unicode="&#xf18e;" horiz-adv-x="384" +d="M0 349v35h32v-35h-32zM303 366h-222v-142h222v142zM320 384v0v-177h-256v177h256zM303 160h-222v-143h222v143zM320 178v0v-178h-256v178h256zM0 279v35h32v-35h-32zM0 210v34h32v-34h-32zM0 140v34h32v-34h-32zM0 70v35h32v-35h-32zM0 0v35h32v-35h-32zM352 349v35h32 +v-35h-32zM352 279v35h32v-35h-32zM352 210v34h32v-34h-32zM352 140v34h32v-34h-32zM352 70v35h32v-35h-32zM352 0v35h32v-35h-32z" /> + <glyph glyph-name="ion-ios7-film" unicode="&#xf18f;" horiz-adv-x="384" +d="M0 349v35h32v-35h-32zM320 384v0v-177h-256v177h256zM320 178v0v-178h-256v178h256zM0 279v35h32v-35h-32zM0 210v34h32v-34h-32zM0 140v34h32v-34h-32zM0 70v35h32v-35h-32zM0 0v35h32v-35h-32zM352 349v35h32v-35h-32zM352 279v35h32v-35h-32zM352 210v34h32v-34h-32z +M352 140v34h32v-34h-32zM352 70v35h32v-35h-32zM352 0v35h32v-35h-32z" /> + <glyph glyph-name="ion-ios7-flag-outline" unicode="&#xf190;" horiz-adv-x="256" +d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4zM240 179v0v141c-11 -1 -25 -4 -40 -4 +c-25 0 -46 6 -68 11s-42 9 -64 9c-30 0 -46 -5 -52 -7v-137c10 3 26 6 52 6c24 0 45 -8 67 -13c21 -4 43 -9 66 -9c15 0 28 2 39 3z" /> + <glyph glyph-name="ion-ios7-flag" unicode="&#xf191;" horiz-adv-x="256" +d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4z" /> + <glyph glyph-name="ion-ios7-folder-outline" unicode="&#xf192;" horiz-adv-x="320" +d="M294 304c16 0 26 -9 26 -25v-202c0 -16 -10 -29 -26 -29h-266c-16 0 -28 13 -28 29v235c0 15 12 24 28 24h60c6 0 14 -5 21 -13c8 -9 14 -19 19 -19h166zM28 320c-2 0 -12 1 -12 -8v-56h288v23c0 7 -3 9 -10 9h-166c-14 0 -18 10 -30 24c-6 7 -11 8 -15 8h-11h-44z +M294 64c7 0 10 7 10 13v163h-288v-163c0 -7 6 -13 12 -13h266z" /> + <glyph glyph-name="ion-ios7-folder" unicode="&#xf193;" horiz-adv-x="320" +d="M0 77v163h320v-163c0 -16 -10 -29 -26 -29h-266c-16 0 -28 13 -28 29zM320 279v-23h-320v56c0 15 12 24 28 24h60c6 0 14 -5 21 -13c8 -9 14 -19 19 -19h166c16 0 26 -9 26 -25z" /> + <glyph glyph-name="ion-ios7-football-outline" unicode="&#xf328;" +d="M152 208l72 48l72 -48l-24 -80h-96zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM388 64c11 14 21 30 28 47c9 22 15 46 16 70l-13 -10l-42 59v78l21 -3c-8 12 -17 24 -27 34c-19 19 -41 35 -66 45c-7 3 -13 5 -20 7 +l10 -25l-71 -22l-71 22l10 25c-7 -2 -13 -4 -20 -7c-25 -10 -47 -26 -66 -45c-10 -10 -19 -22 -27 -34l21 3v-78l-42 -59l-13 10c1 -24 7 -48 16 -70c7 -17 17 -33 28 -47l1 13l69 -24l44 -61l-2 -2c17 -4 34 -6 52 -6s35 2 52 6l-2 2l44 61l69 24z" /> + <glyph glyph-name="ion-ios7-football" unicode="&#xf329;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM432 181v11c0 28 -5 55 -16 81c-5 11 -11 22 -18 32l-21 3v-78l42 -59zM176 128h96l24 80l-72 48l-72 -48zM285 391c-20 6 -40 9 -61 9s-41 -3 -61 -9l-10 -25l71 -22l71 22z +M32 273c-11 -26 -16 -53 -16 -81v-11l13 -10l42 59v78l-21 -3c-7 -10 -13 -21 -18 -32zM77 45c19 -19 41 -35 66 -45c10 -4 19 -7 29 -10l2 2l-44 61l-69 24l-1 -13c5 -7 11 -13 17 -19zM371 45c6 6 12 12 17 19l-1 13l-69 -24l-44 -61l2 -2c10 3 19 6 29 10 +c25 10 47 26 66 45z" /> + <glyph glyph-name="ion-ios7-gear-outline" unicode="&#xf194;" horiz-adv-x="384" +d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM360 232c14 0 24 -11 24 -25v-15v-15 +c0 -14 -10 -24 -24 -24h-15c-12 0 -23 -11 -23 -24c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-22 -22c-4 -4 -11 -7 -18 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -23 -11 -23 -23v-15c0 -14 -11 -25 -25 -25h-30c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23 +c-6 0 -13 -3 -17 -8l-10 -9c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7 +s13 -3 17 -7l10 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 24 -11 24 -25v-15c0 -12 11 -23 24 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -9c-5 -4 -8 -11 -8 -17c0 -13 11 -23 23 -23h15zM368 192v15 +c0 4 -3 9 -8 9h-15c-10 0 -20 4 -27 12s-12 17 -12 27c0 11 5 21 13 28l9 9c2 2 3 5 3 7s-1 4 -3 6l-22 22c-2 1 -4 2 -6 2s-4 0 -6 -2l-10 -9c-8 -8 -17 -13 -28 -13c-10 0 -20 4 -28 11s-12 18 -12 28v15c0 5 -4 9 -8 9h-30c-4 0 -9 -4 -9 -9v-15c0 -10 -4 -21 -12 -28 +s-17 -11 -27 -11c-11 0 -21 4 -28 12l-10 10v0v0c-1 1 -4 2 -6 2s-4 0 -6 -2l-23 -22c-2 -2 -2 -5 -2 -6s0 -5 2 -7l9 -9c8 -8 13 -17 13 -28c0 -10 -4 -19 -11 -27s-18 -12 -28 -12h-15c-5 0 -9 -5 -9 -9v-15v-15c0 -4 4 -9 9 -9h15c10 0 21 -4 28 -12s11 -17 11 -27 +c0 -11 -4 -21 -12 -29l-9 -8c-3 -3 -3 -10 0 -13l22 -22v0v0c1 -1 4 -2 6 -2s4 0 6 2l10 9c7 8 17 13 28 13c10 0 19 -4 27 -11s12 -18 12 -28v-15c0 -5 4 -9 9 -9h30c5 0 9 4 9 9v15c0 10 4 21 12 28s17 11 27 11c11 0 21 -5 29 -13l9 -9c2 -2 4 -2 6 -2s4 0 6 2l23 22 +c3 3 3 10 0 13l-10 9c-8 7 -12 17 -12 28c0 10 4 20 11 28s18 12 28 12h15c5 0 7 4 7 8v15z" /> + <glyph glyph-name="ion-ios7-gear" unicode="&#xf195;" horiz-adv-x="384" +d="M360 232c14 0 24 -11 24 -25v-15v-15c0 -14 -10 -25 -24 -25h-15c-12 0 -23 -10 -23 -23c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-23 -22c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -24 -11 -24 -23v-15c0 -14 -10 -25 -24 -25h-30 +c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23c-6 0 -13 -2 -17 -7l-10 -10c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9 +c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7s14 -3 18 -7l9 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 25 -11 25 -25v-15c0 -12 10 -23 23 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -10 +c-5 -4 -8 -10 -8 -16c0 -13 11 -23 23 -23h15zM273 192v0c0 44 -36 80 -80 80s-80 -36 -80 -80v0v0c0 -44 36 -80 80 -80s80 36 80 80v0z" /> + <glyph glyph-name="ion-ios7-glasses-outline" unicode="&#xf196;" +d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 +c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" /> + <glyph glyph-name="ion-ios7-glasses" unicode="&#xf197;" +d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 +c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58z" /> + <glyph glyph-name="ion-ios7-heart-outline" unicode="&#xf198;" horiz-adv-x="384" +d="M277 350c-38 0 -71 -24 -85 -57c-14 33 -47 57 -85 57c-51 0 -92 -42 -92 -93c0 -25 10 -47 26 -64l151 -152l148 150c17 17 29 40 29 66c0 51 -41 93 -92 93zM277 365v0c59 0 107 -49 107 -108c0 -30 -12 -57 -33 -77l-148 -150l-11 -11l-11 11l-151 153 +c-19 20 -30 46 -30 74c0 59 48 108 107 108c34 0 65 -16 85 -42c20 26 51 42 85 42z" /> + <glyph glyph-name="ion-ios7-heart" unicode="&#xf199;" horiz-adv-x="384" +d="M277 365v0c59 0 107 -49 107 -108c0 -30 -12 -57 -33 -77l-148 -150l-11 -11l-11 11l-151 153c-19 20 -30 46 -30 74c0 59 48 108 107 108c34 0 65 -16 85 -42c20 26 51 42 85 42z" /> + <glyph glyph-name="ion-ios7-help-empty" unicode="&#xf19a;" horiz-adv-x="128" +d="M68 82c-9 0 -17 8 -17 17s8 17 17 17s17 -8 17 -17s-8 -17 -17 -17zM102 197c-23 -22 -22 -27 -23 -53h-19c1 28 7 43 30 64c11 10 19 24 19 39c0 24 -19 39 -42 39c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62c33 0 60 -20 60 -54c0 -22 -11 -37 -26 -51z" /> + <glyph glyph-name="ion-ios7-help-outline" unicode="&#xf19b;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM212 302c33 0 60 -21 60 -55c0 -22 -11 -36 -26 -50c-23 -23 -22 -27 -23 -53h-19 +c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62zM212 116c9 0 17 -8 17 -17s-8 -17 -17 -17s-17 8 -17 17s8 17 17 17z" /> + <glyph glyph-name="ion-ios7-help" unicode="&#xf19c;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46 +c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" /> + <glyph glyph-name="ion-ios7-home-outline" unicode="&#xf32a;" horiz-adv-x="384" +d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45zM80 294v42h-32v-67z" /> + <glyph glyph-name="ion-ios7-home" unicode="&#xf32b;" horiz-adv-x="384" +d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45z" /> + <glyph glyph-name="ion-ios7-infinite-outline" unicode="&#xf19d;" horiz-adv-x="384" +d="M359 249c33 -31 33 -82 0 -113c-16 -15 -36 -24 -59 -24c-22 0 -44 9 -60 24l-108 102c-13 12 -30 18 -48 18s-35 -6 -48 -18c-26 -25 -26 -66 0 -91c13 -12 30 -19 48 -19s35 7 48 19l36 34l12 -11l-36 -34c-16 -15 -37 -24 -60 -24s-43 9 -59 24c-33 31 -33 82 0 113 +c16 15 36 23 59 23c22 0 44 -8 60 -23l108 -102c13 -12 30 -19 48 -19s34 7 47 19c26 25 26 66 0 91c-13 12 -29 18 -47 18s-35 -6 -48 -18l-37 -35l-11 11l36 35c16 15 37 23 60 23s43 -8 59 -23z" /> + <glyph glyph-name="ion-ios7-infinite" unicode="&#xf19e;" horiz-adv-x="384" +d="M358 249c17 -15 26 -36 26 -57c0 -22 -9 -42 -26 -57s-39 -23 -63 -23s-45 8 -62 23l-103 93c-11 10 -26 15 -41 15s-30 -5 -41 -15s-16 -22 -16 -36s5 -26 16 -36s26 -15 41 -15s30 5 41 15l30 28l23 -20l-32 -29c-17 -15 -38 -23 -62 -23s-46 8 -63 23s-26 35 -26 57 +s9 42 26 57s39 23 63 23s45 -8 62 -23l104 -93c11 -10 25 -15 40 -15s30 5 41 15s17 22 17 36s-6 26 -17 36s-26 15 -41 15s-29 -5 -40 -15l-31 -28l-23 20l32 29c17 15 38 23 62 23s46 -8 63 -23z" /> + <glyph glyph-name="ion-ios7-information-empty" unicode="&#xf19f;" horiz-adv-x="64" +d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" /> + <glyph glyph-name="ion-ios7-information-outline" unicode="&#xf1a0;" horiz-adv-x="416" +d="M184 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM224 104h16v-8h-64v8h16v120h-16v8h48v-128zM208 400c57 0 106 -20 147 -61s61 -90 61 -147s-20 -106 -61 -147s-90 -61 -147 -61s-106 20 -147 61s-61 90 -61 147s20 106 61 147s90 61 147 61z +M208 1c53 0 98 19 135 56s56 82 56 135s-19 98 -56 135s-82 56 -135 56s-98 -19 -135 -56s-56 -82 -56 -135s19 -98 56 -135s82 -56 135 -56z" /> + <glyph glyph-name="ion-ios7-information" unicode="&#xf1a1;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM204 296c-11 0 -20 -9 -20 -20s9 -20 20 -20s20 9 20 20s-9 20 -20 20zM240 96v8h-16v128h-48v-8h16v-120h-16v-8h64z" /> + <glyph glyph-name="ion-ios7-ionic-outline" unicode="&#xf1a2;" horiz-adv-x="416" +d="M378 313c24 -34 38 -76 38 -121c0 -115 -92 -208 -207 -208s-209 93 -209 208s94 208 209 208c45 0 86 -14 120 -38c6 5 13 8 21 8c19 0 35 -16 35 -35c0 -8 -2 -16 -7 -22zM350 357c-12 0 -22 -10 -22 -22s10 -22 22 -22s22 10 22 22s-10 22 -22 22zM344 56 +c18 18 31 39 41 62c10 24 15 48 15 74s-5 51 -15 75c-5 13 -12 25 -20 36c-5 -2 -10 -3 -15 -3c-19 0 -35 16 -35 35c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 14 -75 14s-51 -4 -75 -14c-23 -10 -43 -24 -61 -42s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75 +s5 -50 15 -74c10 -23 23 -44 41 -62s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41zM208 288c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM208 112c44 0 80 36 80 80s-36 80 -80 80s-79 -36 -79 -80s35 -80 79 -80z" /> + <glyph glyph-name="ion-ios7-keypad-outline" unicode="&#xf1a3;" horiz-adv-x="384" +d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM331 16c21 0 37 16 37 37s-16 38 -37 38s-38 -17 -38 -38s17 -37 38 -37zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM192 16c21 0 37 16 37 37s-16 38 -37 38 +s-37 -17 -37 -38s16 -37 37 -37zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM53 16c21 0 38 16 38 37s-17 38 -38 38s-37 -17 -37 -38s16 -37 37 -37zM331 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM331 155 +c21 0 37 16 37 37s-16 37 -37 37s-38 -16 -38 -37s17 -37 38 -37zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM192 155c21 0 37 16 37 37s-16 37 -37 37s-37 -16 -37 -37s16 -37 37 -37zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53 +s-53 23 -53 53s23 53 53 53zM53 155c21 0 38 16 38 37s-17 37 -38 37s-37 -16 -37 -37s16 -37 37 -37zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54zM331 368c-21 0 -38 -16 -38 -37s17 -38 38 -38s37 17 37 38s-16 37 -37 37zM192 384 +c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM192 293c21 0 37 17 37 38s-16 37 -37 37s-37 -16 -37 -37s16 -38 37 -38zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53zM53 293c21 0 38 17 38 38s-17 37 -38 37 +s-37 -16 -37 -37s16 -38 37 -38z" /> + <glyph glyph-name="ion-ios7-keypad" unicode="&#xf1a4;" horiz-adv-x="384" +d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM331 245c30 0 53 -23 53 -53 +s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53s-53 23 -53 53s23 53 53 53zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54z +M192 384c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53z" /> + <glyph glyph-name="ion-ios7-lightbulb-outline" unicode="&#xf286;" horiz-adv-x="288" +d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-128v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141zM239 194l6 8c16 22 27 47 27 73c0 33 -16 65 -40 89s-55 36 -88 36 +s-64 -12 -88 -36s-40 -56 -40 -89c0 -26 11 -51 27 -73l19 -26v0c5 -6 9 -13 13 -21c17 -29 21 -58 21 -75h16v112l-32 64h17l31 -64v-112h32v112l31 64h17l-32 -64v-112h16c0 17 4 45 21 75c8 14 16 25 24 36c1 1 1 2 2 3zM112 -32v16h64v-16h-64zM96 0v16h96v-16h-96z +M96 32v16h96v-16h-96z" /> + <glyph glyph-name="ion-ios7-lightbulb" unicode="&#xf287;" horiz-adv-x="288" +d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-32v128l32 64h-16l-32 -64v-128h-32v128l-31 64h-17l32 -64v-128h-32v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141z +M112 -32v16h64v-16h-64zM96 0v16h96v-16h-96zM96 32v16h96v-16h-96z" /> + <glyph glyph-name="ion-ios7-location-outline" unicode="&#xf1a5;" horiz-adv-x="268" +d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v0v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM243 239c6 14 9 29 9 44c0 65 -53 117 -118 117s-118 -52 -118 -117c0 -15 3 -31 9 -45 +c0 -1 1 -1 1 -2l1 -2l107 -227l107 227l1 2c0 1 1 1 1 2v1zM134 352c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> + <glyph glyph-name="ion-ios7-location" unicode="&#xf1a6;" horiz-adv-x="268" +d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> + <glyph glyph-name="ion-ios7-locked-outline" unicode="&#xf1a7;" horiz-adv-x="320" +d="M264 224h56v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-72zM72 296v-72h176v72c0 48 -40 88 -88 88s-88 -40 -88 -88zM304 0v208h-288v-208h288zM192 128c0 -15 -10 -27 -24 -31v-41c0 -4 -4 -8 -8 -8s-8 4 -8 8v41c-14 4 -24 16 -24 31 +c0 18 14 32 32 32s32 -14 32 -32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-ios7-locked" unicode="&#xf1a8;" horiz-adv-x="320" +d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM264 224h56v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32c0 -15 10 -27 24 -31v-41c0 -4 4 -8 8 -8s8 4 8 8 +v41zM248 224v72c0 48 -40 88 -88 88s-88 -40 -88 -88v-72h176z" /> + <glyph glyph-name="ion-ios7-loop-strong" unicode="&#xf32c;" horiz-adv-x="512" +d="M256 400c115 0 208 -93 208 -208c0 -14 -1 -28 -4 -42l-1 -4l-24 5l1 4c2 12 4 24 4 37c0 101 -83 184 -184 184c-66 0 -127 -36 -160 -94l-2 -3l-21 11l2 4c37 65 106 106 181 106zM416 102l2 3l21 -11l-2 -4c-37 -65 -106 -106 -181 -106c-115 0 -208 93 -208 208 +c0 14 1 28 4 42l1 4l24 -5l-1 -4c-2 -12 -4 -24 -4 -37c0 -101 83 -184 184 -184c66 0 127 36 160 94zM384 192h128l-64 -64zM0 192l64 64l64 -64h-128z" /> + <glyph glyph-name="ion-ios7-loop" unicode="&#xf32d;" horiz-adv-x="489" +d="M478 192l11 -11l-52 -53l-53 53l10 11l43 -41zM449 192v0v0c0 -7 0 -14 -1 -21l-16 1c1 7 1 14 1 21c-1 103 -85 187 -188 187c-68 0 -131 -37 -164 -96l-14 8c36 64 104 104 178 104c112 0 203 -91 204 -202v0v-2zM409 100l14 -8c-36 -64 -104 -104 -178 -104 +c-111 0 -202 90 -204 200v0v3v1v0c0 7 0 14 1 21l16 -1c-1 -7 -1 -14 -1 -21c0 -103 85 -187 188 -187c68 0 131 37 164 96zM53 256l52 -53l-11 -11l-41 41l-42 -41l-11 11z" /> + <glyph glyph-name="ion-ios7-medkit-outline" unicode="&#xf288;" horiz-adv-x="416" +d="M224 240h-32v-48v-16h-16h-48v-32h48h16v-16v-48h32v48v16h16h48v32h-48h-16v16v48zM240 256v0v-64h64v-64h-64v-64h-64v64h-64v64h64v64h64zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97 +c-11 0 -14 -8 -14 -18zM400 16v288h-384v-288h384z" /> + <glyph glyph-name="ion-ios7-medkit" unicode="&#xf289;" horiz-adv-x="416" +d="M224 176h16h48v-32h-48h-16v-16v-48h-32v48v16h-16h-48v32h48h16v16v48h32v-48v-16zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18zM304 128v64h-64v64h-64v-64h-64 +v-64h64v-64h64v64h64z" /> + <glyph glyph-name="ion-ios7-mic-off" unicode="&#xf1a9;" horiz-adv-x="280" +d="M266 -32l-258 440l14 8l258 -440zM128 95c-44 0 -79 37 -79 83v118l113 -193c-10 -5 -22 -8 -34 -8zM207 178c0 -10 -2 -19 -5 -28l-136 234c14 20 37 32 62 32c44 0 79 -38 79 -84v-154zM256 176c0 -28 -9 -54 -24 -75l-10 17c11 17 17 36 17 58v80h17v-80zM139 49v0 +v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109c17 0 34 4 48 11l9 -16c-14 -7 -30 -12 -47 -13z" /> + <glyph glyph-name="ion-ios7-mic-outline" unicode="&#xf1aa;" horiz-adv-x="256" +d="M128 416c44 0 79 -38 79 -84v-154c0 -46 -35 -84 -79 -84s-79 38 -79 84v154c0 46 35 84 79 84zM191 178v154c0 37 -28 68 -63 68s-63 -31 -63 -68v-154c0 -37 28 -68 63 -68s63 31 63 68zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63 +c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> + <glyph glyph-name="ion-ios7-mic" unicode="&#xf1ab;" horiz-adv-x="256" +d="M128 94c-44 0 -79 38 -79 84v154c0 46 35 84 79 84s79 -38 79 -84v-154c0 -46 -35 -84 -79 -84zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> + <glyph glyph-name="ion-ios7-minus-empty" unicode="&#xf1ac;" horiz-adv-x="256" +d="M256 183h-256v17h256v-17z" /> + <glyph glyph-name="ion-ios7-minus-outline" unicode="&#xf1ad;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM80 183v17h256v-17h-256z" /> + <glyph glyph-name="ion-ios7-minus" unicode="&#xf1ae;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-256v-17h256z" /> + <glyph glyph-name="ion-ios7-monitor-outline" unicode="&#xf1af;" horiz-adv-x="480" +d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448z" /> + <glyph glyph-name="ion-ios7-monitor" unicode="&#xf1b0;" horiz-adv-x="480" +d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448zM32 96v224h416v-224h-416z" /> + <glyph glyph-name="ion-ios7-moon-outline" unicode="&#xf1b1;" horiz-adv-x="216" +d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5zM116 93c25 0 48 9 65 24c-65 5 -116 59 -116 125 +c0 14 2 28 6 40c-33 -16 -55 -51 -55 -90c0 -55 45 -99 100 -99z" /> + <glyph glyph-name="ion-ios7-moon" unicode="&#xf1b2;" horiz-adv-x="216" +d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5z" /> + <glyph glyph-name="ion-ios7-more-outline" unicode="&#xf1b3;" horiz-adv-x="320" +d="M160 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32 +s-32 14 -32 32s14 32 32 32zM288 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> + <glyph glyph-name="ion-ios7-more" unicode="&#xf1b4;" horiz-adv-x="320" +d="M160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> + <glyph glyph-name="ion-ios7-musical-note" unicode="&#xf1b5;" horiz-adv-x="192" +d="M192 346v-1v-65c0 -3 -3 -6 -6 -5v0l-73 13v-192c0 -33 1 -80 -51 -82c-48 -2 -62 16 -62 41c0 19 9 39 51 41c22 1 37 1 45 1v273l90 -19l2 -1c2 0 3 -1 4 -3v0v-1v0z" /> + <glyph glyph-name="ion-ios7-musical-notes" unicode="&#xf1b6;" horiz-adv-x="320" +d="M320 128c0 -34 4 -80 -49 -82c-49 -2 -62 16 -62 41c0 20 9 39 52 41c23 1 34 2 43 2v160l-191 -32v-161c0 -34 3 -81 -50 -83c-49 -2 -63 17 -63 42c0 20 9 39 52 41c23 1 35 1 44 1v237l224 35v-242z" /> + <glyph glyph-name="ion-ios7-navigate-outline" unicode="&#xf1b7;" horiz-adv-x="416" +d="M208 384c-51 0 -99 -21 -135 -57s-57 -84 -57 -135s21 -99 57 -135s84 -57 135 -57s99 21 135 57s57 84 57 135s-21 99 -57 135s-84 57 -135 57zM208 400v0c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM304 288l-96 -224v128h-128z" /> + <glyph glyph-name="ion-ios7-navigate" unicode="&#xf1b8;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64l96 224l-224 -96h128v-128z" /> + <glyph glyph-name="ion-ios7-paper-outline" unicode="&#xf32e;" horiz-adv-x="384" +d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-16h-16v-289c0 -8 7 -15 15 -15h322c8 0 15 7 15 15v337h-304v-320h-16v320v16zM96 320v16h128v-16h-128zM96 240v16h240v-16h-240zM96 160v16h192v-16h-192zM96 80v16h240v-16h-240z" /> + <glyph glyph-name="ion-ios7-paper" unicode="&#xf32f;" horiz-adv-x="384" +d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-288h16v288v32v16zM96 336v-16h128v16h-128zM96 176v-16h192v16h-192zM336 80v16h-240v-16h240zM336 240v16h-240v-16h240z" /> + <glyph glyph-name="ion-ios7-paperplane-outline" unicode="&#xf1b9;" horiz-adv-x="320" +d="M0 198l320 154l-146 -320l-57 115zM132 152l41 -83l115 249zM286 320l-248 -121l83 -36z" /> + <glyph glyph-name="ion-ios7-paperplane" unicode="&#xf1ba;" horiz-adv-x="320" +d="M0 198l320 154l-214 -200zM320 352l-146 -320l-52 104z" /> + <glyph glyph-name="ion-ios7-partlysunny-outline" unicode="&#xf1bb;" horiz-adv-x="384" +d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM129 153c-4 -3 -8 -7 -12 -12c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 40 -10 53 -25c-4 -2 -9 -4 -14 -8 +c-10 11 -23 17 -39 17c-30 0 -55 -25 -55 -55c0 -23 15 -43 35 -51zM235 208c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14 +c-3 14 -11 26 -22 35s-25 14 -39 14zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-partlysunny" unicode="&#xf1bc;" horiz-adv-x="384" +d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8 +c0 43 35 78 78 78zM201 252l1 -2v0c-31 -5 -62 -43 -62 -75c0 -2 1 -5 1 -7l-1 -1h-1c-11 -6 -18 -14 -22 -26v1v-1c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 39 -9 52 -23z" /> + <glyph glyph-name="ion-ios7-pause-outline" unicode="&#xf1bd;" horiz-adv-x="256" +d="M63 336h-47v-288h47v288zM79 352v0v-320h-79v320h79zM240 336h-47v-288h47v288zM256 352v0v-320h-79v320h79z" /> + <glyph glyph-name="ion-ios7-pause" unicode="&#xf1be;" horiz-adv-x="256" +d="M0 32v320h79v-320h-79zM177 32v320h79v-320h-79z" /> + <glyph glyph-name="ion-ios7-paw-outline" unicode="&#xf330;" horiz-adv-x="416" +d="M262 238c-11 2 -20 7 -27 17c-12 16 -15 41 -11 65c6 37 27 64 54 64h6c12 -2 22 -8 30 -19c12 -16 16 -39 13 -61c-6 -37 -31 -66 -59 -66h-6zM278 368c-18 0 -34 -21 -38 -50c-3 -20 -1 -41 8 -53c5 -6 11 -10 17 -11h3c19 0 39 23 43 52c3 18 -2 37 -11 49 +c-4 5 -10 12 -19 13h-3zM412 244c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM357 162c14 0 29 13 37 32c6 15 7 31 2 44c-2 5 -5 12 -12 15c-2 1 -4 2 -7 2 +c-13 0 -28 -15 -36 -36c-9 -25 -6 -50 8 -56c2 -1 5 -1 8 -1zM7 187c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43zM22 194c8 -19 23 -32 37 -32c3 0 6 0 8 1c14 6 17 31 8 56 +c-8 21 -23 36 -36 36c-3 0 -5 -1 -7 -2c-7 -3 -10 -10 -12 -15c-5 -13 -4 -29 2 -44zM149 238c-28 0 -53 29 -59 66c-3 22 1 45 13 61c8 11 18 17 30 19h6c27 0 47 -28 53 -65c4 -24 2 -48 -10 -64c-7 -10 -17 -15 -28 -17h-5zM139 368h-4c-9 -1 -15 -8 -19 -13 +c-9 -12 -13 -31 -10 -49c4 -29 24 -52 43 -52h3c6 1 11 5 16 11c9 12 11 32 8 52c-4 29 -19 51 -37 51zM208 192c64 0 128 -71 128 -138c0 -20 -11 -36 -22 -43c-13 -8 -23 -11 -42 -11c-23 0 -29 7 -40 14c-8 5 -14 9 -24 9s-16 -4 -24 -9c-11 -7 -17 -14 -40 -14 +c-19 0 -29 3 -42 11c-11 7 -22 23 -22 43c0 67 64 138 128 138zM306 25c6 3 14 14 14 29c0 28 -14 59 -36 83c-11 12 -23 22 -36 29s-27 10 -40 10s-27 -3 -40 -10s-25 -17 -36 -29c-22 -24 -36 -55 -36 -83c0 -15 8 -26 14 -29c11 -7 18 -9 34 -9c14 0 19 3 26 8 +c2 1 4 3 6 4c9 5 18 11 32 11s23 -6 32 -11c2 -1 4 -3 6 -4c7 -5 12 -8 26 -8c16 0 23 2 34 9z" /> + <glyph glyph-name="ion-ios7-paw" unicode="&#xf331;" horiz-adv-x="416" +d="M262 238c-11 2 -20 7 -27 17c-12 16 -15 41 -11 65c6 37 27 64 54 64h6c12 -2 22 -8 30 -19c12 -16 16 -39 13 -61c-6 -37 -31 -66 -59 -66h-6zM412 244c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46 +c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM7 187c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43zM149 238c-28 0 -53 29 -59 66c-3 22 1 45 13 61c8 11 18 17 30 19h6 +c27 0 47 -28 53 -65c4 -24 2 -48 -10 -64c-7 -10 -17 -15 -28 -17h-5zM208 192c64 0 128 -71 128 -138c0 -20 -11 -36 -22 -43c-13 -8 -23 -11 -42 -11c-23 0 -29 7 -40 14c-8 5 -14 9 -24 9s-16 -4 -24 -9c-11 -7 -17 -14 -40 -14c-19 0 -29 3 -42 11c-11 7 -22 23 -22 43 +c0 67 64 138 128 138z" /> + <glyph glyph-name="ion-ios7-people-outline" unicode="&#xf1bf;" +d="M224 336v0v0zM317 113c11 -4 -11 4 0 0c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 +c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM115 84c-6 -6 9 10 0 0c-6 -6 -10 -12 -12 -20h4 +h238c-4 15 -17 27 -30 33s-28 4 -41 9s-25 9 -28 25c-2 11 -2 22 -2 33c0 2 7 7 8 9c3 5 4 11 5 17c1 5 0 12 4 15c5 4 7 7 9 13c2 8 3 12 -1 19c-3 5 0 8 1 13c3 11 4 24 2 36c-8 37 -62 45 -86 19c-12 -13 -12 -31 -9 -47c1 -6 6 -14 3 -19c-1 -3 -5 -6 -4 -10 +c2 -5 2 -11 4 -16c2 -4 4 -6 7 -8s3 -6 3 -9c1 -7 2 -17 6 -23c3 -4 8 -6 8 -11v-21c-1 -8 -2 -18 -8 -24c-7 -6 -18 -10 -27 -12c-11 -3 -23 -3 -33 -7c-8 -3 -15 -8 -21 -14zM112 126c-15 -7 9 4 0 0c-9 -5 -18 -11 -25 -19c-1 -2 -6 -11 -7 -11h-25h-55c0 20 13 34 31 40 +c6 2 27 4 30 11c2 5 0 11 0 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12l3 12c1 9 1 19 1 28c0 16 -1 34 8 48c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7 +c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-8 -1 -15 -1 -22 -5zM71 112c6 10 16 18 26 24c-9 9 -5 26 -4 37c0 2 0 5 2 5h8c6 0 11 1 17 2c-7 23 0 47 -5 70c-3 16 -15 23 -31 23c-17 0 -27 -9 -30 -25c-4 -22 3 -46 -4 -68c9 -1 17 -2 26 -2c1 0 1 -28 1 -29 +c-1 -12 -8 -18 -19 -22c-12 -4 -29 -3 -36 -15h49zM368 96c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44 +c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10c18 -6 31 -20 31 -40h-80zM367 123c4 -4 -5 5 0 0s8 -11 15 -11h16h28c-7 12 -26 11 -38 16c-11 4 -16 12 -17 24c0 2 -1 27 1 27c9 0 18 0 26 1 +c-7 23 1 47 -4 70c-3 15 -15 23 -30 23c-17 0 -28 -8 -31 -25c-4 -23 2 -46 -5 -68c6 -2 12 -2 18 -2s8 1 9 -5c1 -11 5 -28 -4 -37c6 -4 11 -8 16 -13z" /> + <glyph glyph-name="ion-ios7-people" unicode="&#xf1c0;" +d="M317 113c11 -4 -11 4 0 0v0zM317 113c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 +c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM111 126h2h-1h-1zM111 126c-9 -5 -17 -11 -24 -19 +c-1 -2 -6 -11 -7 -11h-25h-55c0 20 12 34 30 40c6 2 27 4 30 11c2 5 1 11 1 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12c1 4 2 7 3 11c1 9 1 19 1 28c0 16 -1 35 8 49c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3 +c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-7 -1 -14 -2 -21 -5c2 1 2 2 -1 0c-8 -4 -4 -2 -1 0zM417 136c18 -6 31 -20 31 -40h-80c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6 +s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10z" /> + <glyph glyph-name="ion-ios7-person-outline" unicode="&#xf1c1;" horiz-adv-x="320" +d="M106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 +c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4 +c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8 +s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> + <glyph glyph-name="ion-ios7-person" unicode="&#xf1c2;" horiz-adv-x="320" +d="M267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 +c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> + <glyph glyph-name="ion-ios7-personadd-outline" unicode="&#xf1c3;" horiz-adv-x="320" +d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 +s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3 +c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38 +v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> + <glyph glyph-name="ion-ios7-personadd" unicode="&#xf1c4;" horiz-adv-x="320" +d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 +s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> + <glyph glyph-name="ion-ios7-photos-outline" unicode="&#xf1c5;" +d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-352v-288h32v-16h-48v320z" /> + <glyph glyph-name="ion-ios7-photos" unicode="&#xf1c6;" +d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" /> + <glyph glyph-name="ion-ios7-pie-outline" unicode="&#xf28a;" +d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM49 160c2 -20 6 -40 14 -59c7 -16 15 -30 26 -44 +c5 -6 10 -12 15 -17c12 -12 24 -22 38 -30c7 -4 15 -8 23 -11c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-3 8 -8 15 -12 22c-8 14 -17 27 -29 39c-5 5 -11 10 -17 15c-14 11 -28 19 -44 26c-19 8 -39 12 -59 14v-191 +v-16h-16h-191zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16h-207c0 5 -1 11 -1 16zM16 208h192v192c-26 0 -51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75z" /> + <glyph glyph-name="ion-ios7-pie" unicode="&#xf28b;" +d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16 +h-207c0 5 -1 11 -1 16z" /> + <glyph glyph-name="ion-ios7-play-outline" unicode="&#xf1c7;" horiz-adv-x="256" +d="M16 323v-262l210 131zM0 352v0l256 -160l-256 -160v320z" /> + <glyph glyph-name="ion-ios7-play" unicode="&#xf1c8;" horiz-adv-x="256" +d="M0 352v0l256 -160l-256 -160v320z" /> + <glyph glyph-name="ion-ios7-plus-empty" unicode="&#xf1c9;" horiz-adv-x="256" +d="M256 183h-120v-119h-17v119h-119v17h119v120h17v-120h120v-17z" /> + <glyph glyph-name="ion-ios7-plus-outline" unicode="&#xf1ca;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM216 320v-120h120v-17h-120v-119h-17v119h-119v17h119v120h17z" /> + <glyph glyph-name="ion-ios7-plus" unicode="&#xf1cb;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-120v120h-17v-120h-119v-17h119v-119h17v119h120z" /> + <glyph glyph-name="ion-ios7-pricetag-outline" unicode="&#xf28c;" horiz-adv-x="384" +d="M143 368h-111c-9 0 -16 -7 -16 -16v-108c0 -6 3 -12 7 -16l213 -207h1v-1c3 -3 7 -4 11 -4s8 1 11 4l104 105c3 3 5 7 5 11s-2 8 -5 11v1v0l-204 213c-4 4 -10 7 -16 7zM143 384v0c10 0 20 -4 28 -12l204 -213c6 -6 9 -15 9 -23s-3 -16 -9 -22l-105 -105 +c-6 -6 -14 -9 -22 -9s-17 3 -23 9l-214 207c-7 7 -11 17 -11 28v108c0 18 14 32 32 32h111zM96 320c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM96 336v0c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" /> + <glyph glyph-name="ion-ios7-pricetag" unicode="&#xf28d;" horiz-adv-x="384" +d="M64 288c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM375 159c6 -6 9 -14 9 -23s-3 -16 -9 -22l-105 -105c-6 -6 -13 -9 -22 -9s-17 3 -23 9l-214 207c-8 8 -11 17 -11 28v108c0 9 3 17 9 23s14 9 23 9h111c11 0 20 -4 28 -12zM96 240 +c13 0 25 5 34 14s14 21 14 34s-5 25 -14 34s-21 14 -34 14s-25 -5 -34 -14s-14 -21 -14 -34s5 -25 14 -34s21 -14 34 -14z" /> + <glyph glyph-name="ion-ios7-pricetags-outline" unicode="&#xf332;" +d="M416 384h32v-144l-240 -272l-25 24l-23 -24l-160 160l256 288h160v-32zM160 -9l12 12l11 12l217 248v105v16v16h-137l-241 -272zM432 247v121h-16v-112l-221 -253l13 -12zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336 +c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> + <glyph glyph-name="ion-ios7-pricetags" unicode="&#xf333;" +d="M432 384h16v-144l-240 -272l-13 13l237 266v137zM256 416h160v-32v-16v-112l-221 -253l-12 -11l-23 -24l-160 160zM320 288c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" /> + <glyph glyph-name="ion-ios7-printer-outline" unicode="&#xf1cc;" horiz-adv-x="416" +d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-48v-114h-256v114h-48c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 368v-32h256v32h-256zM320 16v192h-224v-192h224zM400 146v159c0 9 -7 15 -16 15v0h-352c-9 0 -16 -6 -16 -15v-159 +c0 -9 7 -16 16 -16h48v94h256v-94h48c9 0 16 7 16 16z" /> + <glyph glyph-name="ion-ios7-printer" unicode="&#xf1cd;" horiz-adv-x="416" +d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-32v126h-288v-126h-32c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 0v224h256v-224h-256z" /> + <glyph glyph-name="ion-ios7-pulse-strong" unicode="&#xf334;" horiz-adv-x="480" +d="M432 175c27 0 48 -20 48 -47s-21 -49 -48 -49c-21 0 -38 13 -45 31h-51c-7 0 -13 4 -15 11l-16 47l-50 -173c-2 -7 -8 -11 -15 -11h-1c-7 0 -14 5 -15 12l-51 308l-45 -182c-2 -7 -9 -12 -16 -12h-112v32h99l61 245c2 7 8 13 16 13s15 -7 16 -14l52 -314l45 155 +c2 7 8 11 15 11v0c7 0 13 -4 15 -11l29 -85h38c6 19 25 33 46 33z" /> + <glyph glyph-name="ion-ios7-pulse" unicode="&#xf335;" +d="M416 160c18 0 32 -14 32 -32s-14 -32 -32 -32c-15 0 -27 10 -31 23h-65c-3 0 -7 2 -8 5l-23 72l-57 -198c-1 -3 -4 -6 -8 -6v0c-4 0 -7 3 -8 7l-58 346l-54 -220c-1 -4 -4 -6 -8 -6h-96v16h90l62 251c1 4 4 6 8 6s7 -3 8 -7l58 -349l54 190c1 3 4 5 8 5s7 -2 8 -5l30 -91 +h59c3 14 16 25 31 25z" /> + <glyph glyph-name="ion-ios7-rainy-outline" unicode="&#xf1ce;" horiz-adv-x="288" +d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 +c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1zM220 146c28 0 52 24 52 52s-24 54 -52 54h-6l-15 -2l-3 15c-3 14 -11 31 -23 40c-12 10 -26 14 -41 14 +c-36 0 -66 -31 -66 -67v-12v-10c-6 0 -12 -2 -14 -2c-20 -3 -35 -23 -35 -43c0 -10 4 -20 11 -27s16 -12 26 -12h124v0v0h42z" /> + <glyph glyph-name="ion-ios7-rainy" unicode="&#xf1cf;" horiz-adv-x="288" +d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 +c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1z" /> + <glyph glyph-name="ion-ios7-recording-outline" unicode="&#xf1d0;" horiz-adv-x="480" +d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -75 -53 -95h146c-32 20 -53 55 -53 95c0 62 49 112 110 112zM16 192c0 -53 42 -95 94 -95s93 42 93 95s-41 95 -93 95s-94 -42 -94 -95z +M370 97c52 0 94 42 94 95s-42 95 -94 95s-93 -42 -93 -95s41 -95 93 -95zM368 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM368 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM112 240c-26 0 -48 -22 -48 -48 +s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM112 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" /> + <glyph glyph-name="ion-ios7-recording" unicode="&#xf1d1;" horiz-adv-x="480" +d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -76 -53 -95h146c-32 19 -53 55 -53 95c0 62 49 112 110 112zM112 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z +M368 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM368 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM112 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" /> + <glyph glyph-name="ion-ios7-redo-outline" unicode="&#xf1d2;" horiz-adv-x="384" +d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10zM208 256c-201 0 -192 -169 -192 -169c48 81 101 105 192 105v-65l148 97l-148 97v-65z" /> + <glyph glyph-name="ion-ios7-redo" unicode="&#xf1d3;" horiz-adv-x="384" +d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10z" /> + <glyph glyph-name="ion-ios7-refresh-empty" unicode="&#xf1d4;" horiz-adv-x="256" +d="M128 64c-71 0 -128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108h20c0 -71 -57 -128 -128 -128z" /> + <glyph glyph-name="ion-ios7-refresh-outline" unicode="&#xf1d5;" horiz-adv-x="416" +d="M316 192v0h20c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1 +c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-refresh" unicode="&#xf1d6;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64c71 0 128 57 128 128h-20c0 -60 -48 -108 -108 -108s-108 48 -108 108s48 108 108 108v-56l96 56l-96 64v-44c-71 0 -128 -57 -128 -128s57 -128 128 -128z" /> + <glyph glyph-name="ion-ios7-reload" unicode="&#xf28e;" horiz-adv-x="512" +d="M256 384c105.9 0 191.7 -85.7002 191.9 -191.5l55 52.5l9 -9.09961l-70.3008 -67.9004l-66.5996 67.9004l9 9.09961l51.0996 -52.4004c-0.299805 98.5 -80.5 178.601 -179.1 178.601c-98.7998 0 -179.2 -80.4004 -179.2 -179.2s80.4004 -179.2 179.2 -179.2 +c78.5996 0 145.5 51 169.5 121.601l12.4004 -3.5c-25.6006 -76.1006 -97.3008 -130.9 -181.9 -130.9c-106 0 -192 86 -192 192s86 192 192 192z" /> + <glyph glyph-name="ion-ios7-reverse-camera-outline" unicode="&#xf336;" horiz-adv-x="384" +d="M238 129l2 2l11 -12l-2 -2c-16 -14 -36 -21 -57 -21c-45 0 -82 36 -87 78h-30l38 50l39 -50h-31c5 -33 35 -62 71 -62c17 0 33 6 46 17zM252 249c16 -14 25 -37 27 -57h30l-38 -51l-39 51h31c-5 35 -35 64 -71 64c-17 0 -33 -6 -46 -17l-2 -2l-11 12l2 2 +c16 14 36 21 57 21c22 0 44 -8 60 -23zM354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-6s-4 1 -6 3s-6 8 -9 11 +c-12 13 -21 24 -27 30c-5 5 -7 4 -7 4h-88s-1 0 -6 -4c-6 -5 -15 -14 -26 -27c-3 -4 -8 -11 -11 -14s-4 -3 -6 -3h-6h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17z" /> + <glyph glyph-name="ion-ios7-reverse-camera" unicode="&#xf337;" horiz-adv-x="384" +d="M354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM249 117l2 2l-11 12l-2 -2c-13 -11 -29 -17 -46 -17c-36 0 -66 29 -71 62h31l-39 50l-38 -50h30 +c5 -42 42 -78 87 -78c21 0 41 7 57 21zM271 141l38 51h-30c-2 20 -11 43 -27 57c-16 15 -38 23 -60 23c-21 0 -41 -7 -57 -21l-2 -2l11 -12l2 2c13 11 29 17 46 17c36 0 66 -29 71 -64h-31z" /> + <glyph glyph-name="ion-ios7-rewind-outline" unicode="&#xf1d7;" +d="M432 293l-184 -101l184 -101v202zM208 292v0l-176 -100l176 -100v95v27v78zM224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> + <glyph glyph-name="ion-ios7-rewind" unicode="&#xf1d8;" +d="M224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> + <glyph glyph-name="ion-ios7-search-strong" unicode="&#xf1d9;" horiz-adv-x="384" +d="M280 150l-4 -7l108 -109l-34 -34l-108 109l-7 -5c-24 -15 -53 -25 -83 -25c-84 0 -152 69 -152 153s68 152 152 152s152 -68 152 -152c0 -30 -9 -58 -24 -82zM237 317c-23 23 -53 35 -85 35s-62 -12 -85 -35s-35 -53 -35 -85s12 -62 35 -85s53 -35 85 -35s62 12 85 35 +s36 53 36 85s-13 62 -36 85z" /> + <glyph glyph-name="ion-ios7-search" unicode="&#xf1da;" horiz-adv-x="384" +d="M384 23l-23 -23l-113 113c-26 -21 -60 -33 -96 -33c-84 0 -152 68 -152 152s68 152 152 152s152 -68 152 -152c0 -36 -12 -69 -33 -95zM56 135c26 -26 60 -39 96 -39s70 14 96 40s40 60 40 96s-14 70 -40 96s-60 40 -96 40s-70 -14 -96 -40s-40 -60 -40 -96 +s14 -71 40 -97z" /> + <glyph glyph-name="ion-ios7-settings-strong" unicode="&#xf338;" +d="M0 72h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283zM0 208h91c6 14 21 24 37 24s31 -10 37 -24h283v-32h-283c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-91zM0 344h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91 +c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283z" /> + <glyph glyph-name="ion-ios7-settings" unicode="&#xf339;" +d="M320 344c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 360v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM320 72c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 88v0c18 0 32 -14 32 -32s-14 -32 -32 -32 +s-32 14 -32 32s14 32 32 32zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM175 200h273v-16h-273c0 3 1 5 1 8s-1 5 -1 8zM80 192c0 -3 1 -5 1 -8h-81v16h81 +c0 -3 -1 -5 -1 -8zM367 64h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM272 56c0 -3 1 -5 1 -8h-273v16h273c0 -3 -1 -5 -1 -8zM367 336h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM273 336c0 -3 -1 -5 -1 -8s1 -5 1 -8h-273v16h273z" /> + <glyph glyph-name="ion-ios7-shrink" unicode="&#xf30e;" horiz-adv-x="364" +d="M364 18l-8 -8l-92 92l-50 -50v108h108l-50 -50zM0 366l8 8l92 -92l50 50v-108h-108l50 50z" /> + <glyph glyph-name="ion-ios7-skipbackward-outline" unicode="&#xf1db;" horiz-adv-x="320" +d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320zM80 192l7 -4l217 -128v264v0l-217 -128zM16 336v-288h47v126v8v28v126h-47z" /> + <glyph glyph-name="ion-ios7-skipbackward" unicode="&#xf1dc;" horiz-adv-x="320" +d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320z" /> + <glyph glyph-name="ion-ios7-skipforward-outline" unicode="&#xf1dd;" horiz-adv-x="320" +d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142zM233 188l7 4l-7 4l-217 128v0v-264zM304 48v288h-47v-126v-28v-8v-126h47z" /> + <glyph glyph-name="ion-ios7-skipforward" unicode="&#xf1de;" horiz-adv-x="320" +d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142z" /> + <glyph glyph-name="ion-ios7-snowy" unicode="&#xf309;" horiz-adv-x="256" +d="M252 131c4 -2 5 -7 3 -11s-7 -5 -11 -3l-29 17c-2 -8 -2 -16 0 -24c1 -4 -3 -9 -7 -10s-8 2 -9 6c-2 12 -3 24 1 36l-64 36v-73c11 -3 22 -8 31 -16c3 -3 4 -8 1 -11s-8 -4 -11 -1c-6 5 -13 10 -21 12v-33c0 -4 -4 -8 -8 -8s-8 4 -8 8v33c-8 -2 -15 -7 -21 -12 +c-3 -3 -8 -2 -11 1s-3 8 0 11c9 8 20 13 32 16v73l-65 -36c4 -12 4 -23 2 -35c-1 -4 -5 -8 -9 -7s-8 6 -7 10c2 8 2 16 0 24l-29 -17c-4 -2 -9 -1 -11 3s-1 9 3 11l29 16c-6 6 -13 10 -21 13c-4 1 -6 6 -5 10c2 4 6 6 10 5c12 -4 22 -11 30 -19l65 36l-65 37 +c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5 7 -3 11s7 5 11 3l29 -16c2 8 2 15 0 23c-1 4 3 9 7 10s8 -2 9 -6c2 -12 1 -25 -2 -36l65 -36v73c-12 3 -23 8 -32 16c-3 3 -3 8 0 11s8 4 11 1c6 -5 13 -10 21 -12v33c0 4 4 8 8 8 +s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5 +c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" /> + <glyph glyph-name="ion-ios7-speedometer-outline" unicode="&#xf28f;" +d="M448 163v0v0c0 -63 -27 -120 -70 -160l-2 -3l-37 37l11 11l26 -25c16 17 28 36 38 57c10 23 17 47 18 72h-32v16h32c-1 26 -6 51 -16 75c-9 22 -22 42 -38 59l-28 -28l-6 6l-5 5v0h-1l28 28c-18 17 -38 30 -61 40s-48 14 -73 15v-37h-16v37c-25 -1 -50 -5 -73 -15 +s-43 -23 -61 -40l27 -28v0v0l-5 -5l-6 -6l-28 28c-16 -17 -29 -37 -38 -59c-10 -24 -15 -49 -16 -75h32v-16h-32c1 -25 8 -49 18 -72c9 -21 22 -40 38 -57l25 25l12 -11l-37 -37v1c-44 40 -72 97 -72 161v1v0c0 122 100 221 224 221v0v0h1c124 0 223 -99 223 -221zM208 193 +l110 68l10 -11l-82 -94l-1 -1c-5 -6 -13 -10 -21 -10c-15 0 -27 11 -27 26c0 8 4 15 9 20z" /> + <glyph glyph-name="ion-ios7-speedometer" unicode="&#xf290;" +d="M224 384c124 0 224 -99 224 -221c0 -64 -28 -122 -72 -163h-304c-44 41 -72 99 -72 163c0 122 100 221 224 221zM246 156l82 94l-10 11l-110 -68l-2 -2c-5 -5 -9 -12 -9 -20c0 -15 12 -26 27 -26c8 0 16 4 21 10zM372 18c35 35 60 87 60 145v0v1c0 84 -52 157 -125 188 +c-25 11 -54 16 -83 16v0v0v0c-29 0 -57 -5 -82 -16c-72 -30 -126 -104 -126 -188v0v-1c0 -50 21 -109 62 -146l1 -1l15 15l19 19l-11 10l-23 -23c-15 16 -23 31 -32 50c-10 21 -15 43 -16 67h29v15h-29c0 23 5 47 15 69c9 20 20 38 35 54l26 -26l5 5l5 5v0v0l-25 26 +c17 16 36 28 57 37c22 9 44 13 68 14v-35h14v35c24 -1 46 -5 68 -14c21 -9 40 -21 57 -37l-26 -26h1v0l5 -5l5 -5l26 26c15 -16 26 -34 35 -54c10 -22 14 -46 15 -69h-29v-15h29c-1 -24 -6 -46 -16 -67c-9 -19 -17 -34 -32 -50l-23 24l-11 -11l19 -19l15 -15z" /> + <glyph glyph-name="ion-ios7-star-half" unicode="&#xf33a;" +d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" /> + <glyph glyph-name="ion-ios7-star-outline" unicode="&#xf1df;" +d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171zM331 27l-43 122l108 75h-131l-41 123l-41 -123h-131l108 -75l-43 -122l107 76z" /> + <glyph glyph-name="ion-ios7-star" unicode="&#xf1e0;" +d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171z" /> + <glyph glyph-name="ion-ios7-stopwatch-outline" unicode="&#xf1e1;" horiz-adv-x="384" +d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM192 2 +c96 0 173 77 173 171s-77 171 -173 171c-95 0 -173 -77 -173 -171s77 -171 173 -171zM200 191c14 -4 24 -17 24 -31c0 -15 -10 -26 -24 -30l-8 -18v0l-8 18c-14 4 -24 15 -24 30c0 14 12 27 24 31v129h16v-129z" /> + <glyph glyph-name="ion-ios7-stopwatch" unicode="&#xf1e2;" horiz-adv-x="384" +d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM200 130 +c14 4 24 15 24 30c0 14 -10 27 -24 31v129h-16v-129c-12 -4 -24 -17 -24 -31c0 -15 10 -26 24 -30l8 -18z" /> + <glyph glyph-name="ion-ios7-sunny-outline" unicode="&#xf1e3;" horiz-adv-x="320" +d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 +s76 -34 76 -76s-34 -76 -76 -76zM160 251c-32 0 -59 -27 -59 -59s27 -59 59 -59s59 27 59 59s-27 59 -59 59z" /> + <glyph glyph-name="ion-ios7-sunny" unicode="&#xf1e4;" horiz-adv-x="320" +d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 +s76 -34 76 -76s-34 -76 -76 -76z" /> + <glyph glyph-name="ion-ios7-telephone-outline" unicode="&#xf1e5;" horiz-adv-x="352" +d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 +c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44zM324 57c19 22 13 31 1 43c-13 14 -50 39 -72 39c-3 0 -6 -1 -8 -2 +c-19 -12 -28 -18 -37 -18s-15 6 -23 13h-1c-19 16 -23 21 -30 29l-2 2c-1 1 -3 2 -4 3c-6 6 -11 12 -27 30v1c-10 11 -17 18 -18 28s5 20 16 34c15 20 -5 48 -31 79l-1 1c-7 8 -14 12 -22 12c-10 0 -18 -6 -23 -9c-1 0 -2 -1 -2 -1c-11 -7 -18 -16 -21 -24 +c-5 -16 -7 -35 17 -79c23 -42 43 -70 76 -104c31 -32 45 -42 76 -64c32 -23 64 -38 84 -38c21 0 32 1 52 25z" /> + <glyph glyph-name="ion-ios7-telephone" unicode="&#xf1e6;" horiz-adv-x="352" +d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 +c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44z" /> + <glyph glyph-name="ion-ios7-tennisball-outline" unicode="&#xf33b;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM77 45l3 -3 +l3 3c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-3 3l-3 -3c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66zM305 0c17 7 33 17 48 29c-43 41 -70 99 -70 163s27 122 70 163c-15 12 -31 22 -48 29 +c-26 11 -53 16 -81 16s-55 -5 -81 -16c-19 -8 -36 -18 -51 -31c42 -41 68 -98 68 -161s-26 -120 -68 -161c15 -13 32 -23 51 -31c26 -11 53 -16 81 -16s55 5 81 16zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-5 5c-2 -2 -4 -3 -6 -5 +c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-tennisball" unicode="&#xf33c;" +d="M283 192c0 -64 27 -122 70 -163c4 -4 9 -8 13 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c4 3 8 7 12 11c42 41 68 98 68 161s-26 120 -68 161c-4 4 -8 8 -12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c-4 -3 -9 -7 -13 -11c-43 -41 -70 -99 -70 -163z +M448 192c0 -64 -27 -122 -70 -163c-4 3 -8 7 -12 11c-2 2 -4 3 -6 5c-19 19 -35 41 -45 66c-11 26 -16 53 -16 81s5 55 16 81c10 25 26 47 45 66c2 2 4 3 6 5c4 4 8 8 12 11c43 -41 70 -99 70 -163zM83 45l-3 -3c-4 -4 -8 -8 -12 -11c-42 41 -68 98 -68 161s26 120 68 161 +c4 -3 8 -7 12 -11l3 -3c19 -19 35 -41 45 -66c11 -26 16 -53 16 -81s-5 -55 -16 -81c-10 -25 -26 -47 -45 -66zM68 353v0v0v0zM80 20v0v0v0zM68 31v0v0zM80 364v0v0zM378 29v0v0v0zM366 18v0v0zM378 355v0v0zM366 366v0v0v0z" /> + <glyph glyph-name="ion-ios7-thunderstorm-outline" unicode="&#xf1e7;" horiz-adv-x="274" +d="M193 176l-88 -128l29 96h-52l15 80h72l-16 -48h40zM209 275c36 0 65 -29 65 -65s-29 -66 -65 -66h-8v17h8c27 0 49 22 49 49s-22 50 -49 50h-6l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 13 -39 13c-34 0 -63 -27 -63 -62v-12s1 -9 1 -9c-5 0 -12 -2 -14 -2 +c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h11v-17h-11c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78c37 0 68 -26 76 -61h8z" /> + <glyph glyph-name="ion-ios7-thunderstorm" unicode="&#xf1e8;" horiz-adv-x="274" +d="M153 176h40l-22 -32l-66 -96l29 96h-52l15 80h72zM84 240h107l-16 -48h18h30l-33 -48h19c36 0 65 30 65 66s-29 65 -65 65h-8c-8 35 -39 61 -76 61c-43 0 -78 -35 -78 -78v-8c-26 -2 -47 -26 -47 -53c0 -29 24 -53 52 -53h14z" /> + <glyph glyph-name="ion-ios7-time-outline" unicode="&#xf291;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45 +s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45zM216 368c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM216 16c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM392 192 +c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM40 192c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8 +zM64 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM64 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8 +s-8 3 -8 8zM238 200c4 -8 2 -18 -6 -22v-122c0 -4 -4 -8 -8 -8s-8 4 -8 8v122c-2 1 -4 4 -6 6c-3 5 -3 11 0 16l-37 63c-2 4 -1 9 3 11s8 1 10 -3l38 -63c5 0 11 -3 14 -8z" /> + <glyph glyph-name="ion-ios7-time" unicode="&#xf292;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 376c-4 0 -8 -4 -8 -8s4 -8 8 -8s8 4 8 8s-4 8 -8 8zM48 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM76 97c4 2 4 7 2 11s-6 5 -10 3s-5 -7 -3 -11s7 -5 11 -3z +M78 276c2 4 2 9 -2 11s-9 1 -11 -3s-1 -9 3 -11s8 -1 10 3zM132 351c-4 -2 -5 -7 -3 -11s7 -4 11 -2s5 6 3 10s-7 5 -11 3zM143 36c2 4 1 8 -3 10s-9 2 -11 -2s-1 -9 3 -11s9 -1 11 3zM224 8c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM232 178c8 4 10 14 6 22 +c-3 5 -9 8 -14 8l-38 64c-2 4 -7 4 -11 2s-4 -7 -2 -11l37 -63c-3 -5 -3 -11 0 -16c2 -2 4 -5 6 -6v-122c0 -4 4 -8 8 -8s8 4 8 8v122zM316 33c4 2 5 7 3 11s-7 4 -11 2s-5 -6 -3 -10s7 -5 11 -3zM319 340c2 4 1 9 -3 11s-9 1 -11 -3s-1 -8 3 -10s9 -2 11 2zM383 100 +c2 4 1 9 -3 11s-8 1 -10 -3s-2 -9 2 -11s9 -1 11 3zM380 273c4 2 5 7 3 11s-7 5 -11 3s-4 -7 -2 -11s6 -5 10 -3zM400 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8z" /> + <glyph glyph-name="ion-ios7-timer-outline" unicode="&#xf1e9;" horiz-adv-x="416" +d="M189 176l-1 2s-89 118 -86 120s121 -85 121 -85c1 -1 1 -2 2 -3c5 -5 8 -11 8 -18c0 -14 -11 -25 -25 -25c-8 0 -14 3 -19 9zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208c0 57 23 109 61 147l12 -12c-35 -35 -56 -82 -56 -135 +c0 -106 85 -191 191 -191s191 85 191 191c0 100 -77 183 -175 191v-95h-16v112v0v0z" /> + <glyph glyph-name="ion-ios7-timer" unicode="&#xf1ea;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM102 298c-2 -2 86 -120 86 -120l1 -1c5 -6 11 -10 19 -10c14 0 25 11 25 25c0 7 -3 13 -8 18l-3 3c0 0 -117 87 -120 85zM208 1c106 0 192 85 192 191s-86 192 -192 192v-96h16v78 +c88 -9 158 -84 158 -174c0 -96 -78 -174 -174 -174s-175 78 -175 174c0 48 19 92 51 124l-11 12c-35 -35 -56 -83 -56 -136c0 -106 85 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-toggle-outline" unicode="&#xf33d;" +d="M96 128c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM96 144v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM351 160v0h-255c-44 0 -80 -36 -80 -80s36 -80 80 -80h256c44 0 80 36 80 80s-37 80 -81 80zM352 176v0 +c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM352 352c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM352 368v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM97 384v0c-44 0 -81 -36 -81 -80 +s36 -80 80 -80h256c44 0 80 36 80 80s-36 80 -80 80h-255zM96 400v0h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96z" /> + <glyph glyph-name="ion-ios7-toggle" unicode="&#xf33e;" +d="M96 128c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM352 176c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM96 16c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM352 256c-26 0 -48 22 -48 48 +s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM96 208c-53 0 -96 43 -96 96s43 96 96 96h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256zM352 368c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64z" /> + <glyph glyph-name="ion-ios7-trash-outline" unicode="&#xf1eb;" horiz-adv-x="288" +d="M288 335v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20h80zM95 355v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM230 30l23 290h-217l23 -290v0v-1c0 -8 7 -14 15 -14 +h141c8 0 15 6 15 14v1v0zM137 47v241h14v-241h-14zM208 288l-11 -241h-14l10 241h15zM94 288l11 -241h-14l-11 241h14z" /> + <glyph glyph-name="ion-ios7-trash" unicode="&#xf1ec;" horiz-adv-x="288" +d="M208 335h80v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20zM95 355v0v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM91 47h14l-11 241h-14zM151 47v241h-14v-241h14z +M197 47l11 241h-14l-11 -241h14z" /> + <glyph glyph-name="ion-ios7-undo-outline" unicode="&#xf1ed;" horiz-adv-x="384" +d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136zM368 87c0 0 9 169 -192 169v65l-148 -97l148 -97v65c91 0 144 -24 192 -105z" /> + <glyph glyph-name="ion-ios7-undo" unicode="&#xf1ee;" horiz-adv-x="384" +d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136z" /> + <glyph glyph-name="ion-ios7-unlocked-outline" unicode="&#xf1ef;" horiz-adv-x="320" +d="M72 224h248v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-8h-16v8c0 48 -40 88 -88 88s-88 -40 -88 -88v-72zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-41c0 -4 -4 -8 -8 -8s-8 4 -8 8v41c-14 4 -24 16 -24 31 +c0 18 14 32 32 32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-ios7-unlocked" unicode="&#xf1f0;" horiz-adv-x="320" +d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM72 224h248v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-8h-16v8c0 48 -40 88 -88 88s-88 -40 -88 -88v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32 +c0 -15 10 -27 24 -31v-41c0 -4 4 -8 8 -8s8 4 8 8v41z" /> + <glyph glyph-name="ion-ios7-upload-outline" unicode="&#xf1f1;" horiz-adv-x="320" +d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 330l-11 12l74 74l74 -74l-11 -12l-55 55v-243h-16v243z" /> + <glyph glyph-name="ion-ios7-upload" unicode="&#xf1f2;" horiz-adv-x="320" +d="M168 304h152v-304h-320v304h152v-162h16v162zM168 385v-81h-16v81l-55 -55l-11 12l74 74l74 -74l-11 -12z" /> + <glyph glyph-name="ion-ios7-videocam-outline" unicode="&#xf1f3;" horiz-adv-x="418" +d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM273 99v188c0 9 -8 16 -17 16h-221c-9 0 -18 -7 -18 -16v-188c0 -9 10 -18 19 -18h221c9 0 16 9 16 18zM320 235l98 53v-192l-98 53v86zM401 258v0l-64 -33 +v-66l64 -33v132z" /> + <glyph glyph-name="ion-ios7-videocam" unicode="&#xf1f4;" horiz-adv-x="418" +d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM320 235l98 53v-192l-98 53v86z" /> + <glyph glyph-name="ion-ios7-volume-high" unicode="&#xf1f5;" horiz-adv-x="320" +d="M278 320c26 -36 42 -80 42 -128s-16 -92 -42 -128l-14 10c24 33 39 74 39 118s-15 85 -39 118zM224 96l-14 10c18 24 29 54 29 86s-11 62 -29 86l14 10c20 -27 32 -60 32 -96s-12 -69 -32 -96zM177 128l-13 10c12 15 18 34 18 54s-6 39 -18 54l13 10 +c14 -18 22 -40 22 -64s-8 -46 -22 -64zM58 232l70 56v-192l-70 56h-58v80h58z" /> + <glyph glyph-name="ion-ios7-volume-low" unicode="&#xf1f6;" horiz-adv-x="128" +d="M58 232l70 56v-192l-70 56h-58v80h58z" /> + <glyph glyph-name="ion-ios7-wineglass-outline" unicode="&#xf293;" horiz-adv-x="224" +d="M129 179c-5 -3 -9 -14 -9 -19v-160h71v-16h-160v16h73v160c0 4 -6 16 -11 19c-9 6 -22 15 -43 30c-18 13 -50 36 -50 97c0 49 29 94 29 94h166s29 -44 29 -93c0 -61 -31 -85 -50 -98c-21 -15 -35 -23 -45 -30zM40 384c-7 -13 -24 -45 -24 -78v-2h192v3 +c0 33 -17 77 -24 77h-144zM112 192c7 0 13 2 18 6c9 6 20 13 35 24c14 10 37 26 42 66h-190c2 -15 7 -28 14 -39c9 -13 20 -22 28 -27c17 -12 29 -21 37 -26c5 -3 10 -4 16 -4z" /> + <glyph glyph-name="ion-ios7-wineglass" unicode="&#xf294;" horiz-adv-x="224" +d="M129 179c-5 -3 -9 -14 -9 -19v-160h71v-16h-160v16h73v160c0 4 -6 16 -11 19c-9 6 -22 15 -43 30c-18 13 -50 36 -50 97c0 49 29 94 29 94h166s29 -44 29 -93c0 -61 -31 -85 -50 -98c-21 -15 -35 -23 -45 -30zM40 384c-7 -13 -24 -45 -24 -78v-2h192v3 +c0 33 -17 77 -24 77h-144z" /> + <glyph glyph-name="ion-ios7-world-outline" unicode="&#xf1f7;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM216 276v-76h75c-1 31 -5 60 -11 84c-21 -5 -42 -7 -64 -8zM216 292c20 1 41 3 60 8c-14 46 -38 76 -60 82v-90zM200 382c-23 -6 -45 -36 -60 -82 +c19 -5 39 -7 60 -8v90zM200 276c-22 1 -44 3 -65 8c-6 -24 -10 -53 -11 -84h76v76zM108 200c1 32 4 62 11 88c-21 6 -41 15 -59 25c-26 -31 -41 -70 -43 -113h91zM108 184h-91c2 -43 17 -82 43 -113c19 10 38 19 59 25c-7 26 -10 56 -11 88zM124 184c1 -31 5 -60 11 -84 +c21 5 43 8 65 9v75h-76zM200 92c-21 -1 -41 -3 -60 -8c15 -46 37 -76 60 -82v90zM216 2c22 6 46 36 60 82c-19 5 -40 7 -60 8v-90zM216 109c22 -1 43 -4 64 -9c6 24 10 53 11 84h-75v-75zM308 184c-1 -32 -5 -62 -12 -88c21 -6 41 -15 60 -25c26 31 41 70 43 113h-91z +M308 200v0h91c-2 43 -17 82 -43 113c-19 -10 -38 -19 -59 -25c7 -26 10 -56 11 -88zM344 326c-25 25 -56 44 -91 52c16 -17 29 -43 39 -74c18 6 35 13 52 22zM163 378c-35 -8 -67 -27 -91 -52c16 -9 34 -15 52 -21c10 31 23 56 39 73zM72 58c25 -25 56 -44 91 -52 +c-16 17 -30 43 -40 74c-18 -6 -35 -13 -51 -22zM253 6c35 8 66 27 91 52c-17 9 -34 16 -52 22c-10 -31 -23 -57 -39 -74z" /> + <glyph glyph-name="ion-ios7-world" unicode="&#xf1f8;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM208 1c106 0 191 85 191 191s-85 191 -191 191v0v0v0c-106 0 -191 -85 -191 -191s86 -191 191 -191v0v0v0zM274 276c6 -22 9 -48 10 -76h-68v68c20 1 39 4 58 8 +zM216 366c20 -6 41 -34 54 -75c-17 -4 -36 -6 -54 -7v82zM145 291c13 42 35 69 55 75v-82c-19 1 -37 3 -55 7zM333 315c-15 -8 -31 -15 -48 -20c-9 29 -21 52 -36 67c32 -8 61 -24 84 -47zM299 200c-1 29 -4 56 -10 80c19 6 37 14 54 23c23 -28 38 -64 40 -103h-84zM132 200 +c1 28 3 54 9 76c19 -5 39 -7 59 -8v-68h-68zM284 184c-1 -28 -4 -54 -10 -76c-19 5 -38 7 -58 8v68h68zM141 108c-6 22 -8 48 -9 76h68v-68c-20 -1 -40 -3 -59 -8zM200 18c-20 6 -42 33 -55 75c18 4 36 6 55 7v-82zM249 22c15 15 27 38 36 67c17 -5 33 -11 48 -19 +c-23 -23 -52 -40 -84 -48zM167 362c-15 -15 -27 -39 -36 -67c-16 5 -33 11 -48 19c22 23 52 40 84 48zM289 104c6 24 9 51 10 80h84c-2 -39 -17 -75 -40 -103c-17 9 -35 17 -54 23zM216 100c18 -1 37 -3 54 -7c-13 -42 -34 -69 -54 -75v82zM127 280c-6 -24 -11 -51 -11 -80 +h-83c2 39 17 75 40 103c17 -9 35 -17 54 -23zM116 184c1 -29 4 -56 10 -80c-19 -6 -36 -14 -53 -23c-23 28 -38 64 -40 103h83zM83 70c15 8 32 14 48 19c9 -28 21 -52 36 -67c-32 8 -62 25 -84 48z" /> + <glyph glyph-name="ion-ipad" unicode="&#xf1f9;" horiz-adv-x="288" +d="M0 375c0 5 4 9 9 9h270c5 0 9 -4 9 -9v-366c0 -5 -4 -9 -9 -9h-270c-5 0 -9 4 -9 9v366zM144 10c8 0 14 6 14 14s-7 14 -14 14c-8 0 -14 -6 -14 -14s6 -14 14 -14zM32 329v-275c0 -4 3 -6 6 -6h211c3 0 7 2 7 6v275c0 4 -4 7 -7 7h-211c-3 0 -6 -3 -6 -7z" /> + <glyph glyph-name="ion-iphone" unicode="&#xf1fa;" horiz-adv-x="192" +d="M168 384c13 0 24 -11 24 -24v-336c0 -13 -11 -24 -24 -24h-144c-13 0 -24 11 -24 24v336c0 13 11 24 24 24h144zM80 348v0c0 -2 2 -4 4 -4h24c2 0 4 2 4 4v0c0 2 -2 4 -4 4h-24c-2 0 -4 -2 -4 -4zM68 352c-2 0 -4 -2 -4 -4s2 -4 4 -4s4 2 4 4s-2 4 -4 4zM96 16 +c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM176 64v256h-160v-256h160z" /> + <glyph glyph-name="ion-ipod" unicode="&#xf1fb;" horiz-adv-x="224" +d="M112 137c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM196 384c15 0 28 -12 28 -28v-328c0 -16 -13 -28 -28 -28h-168c-15 0 -28 12 -28 28v328c0 16 13 28 28 28h168zM112 32c40 0 72 32 72 72s-32 72 -72 72s-72 -32 -72 -72s32 -72 72 -72z +M192 221v118c-1 7 -6 12 -12 13h-136c-7 -1 -12 -7 -12 -15v-114c0 -8 6 -15 14 -15h131c8 0 14 5 15 13z" /> + <glyph glyph-name="ion-jet" unicode="&#xf295;" horiz-adv-x="326" +d="M222 80l-2 -13l53 -58l-18 -27l-74 9l-18 -55l-19 55l-73 -9l-18 27l53 58l-2 13l-104 -35l3 53l114 103s26 173 28 192c5 40 18 55 18 55s13 -15 18 -55c2 -19 28 -192 28 -192l114 -103l3 -53z" /> + <glyph glyph-name="ion-key" unicode="&#xf296;" horiz-adv-x="192" +d="M144 147c28 -17 48 -48 48 -83c0 -53 -43 -96 -96 -96s-96 43 -96 96c0 36 19 67 48 84c0 0 7 16 12 41c0 4 11 6 11 12v20c0 5 -7 9 -7 11v8v8c0 2 0 4 1 6c0 1 1 1 1 2l2 1l4 4v1c2 2 3 4 3 6c0 1 1 8 1 9c0 3 -2 6 -4 8l-1 1l-4 4v0l-1 1v0c-2 2 -3 5 -3 8v7 +c0 3 2 7 4 9v0l5 5v0c2 2 4 3 4 6v24c0 3 -2 6 -4 8v1l-4 4l-1 1c-2 2 -3 5 -3 8v18c0 11 0 19 9 23c3 1 14 3 23 3c20 0 30 -8 32 -36c0 0 7 -81 9 -143s7 -90 7 -90zM96 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-knife" unicode="&#xf297;" horiz-adv-x="64" +d="M62 416c2 0 2 -1 2 -6v-412c0 -15 -10 -30 -24 -30v0v0c-14 0 -24 15 -24 30c1 19 14 83 16 130v0c1 30 -32 31 -32 70c0 134 35 191 54 214c2 2 5 4 8 4z" /> + <glyph glyph-name="ion-laptop" unicode="&#xf1fc;" horiz-adv-x="512" +d="M480 342v-262h-448v262c0 6 4 10 10 10h428c6 0 10 -4 10 -10zM448 112v208h-384v-208h384zM0 59v5h512v-5c-70 -20 -116 -27 -256 -27s-186 7 -256 27z" /> + <glyph glyph-name="ion-leaf" unicode="&#xf1fd;" horiz-adv-x="422" +d="M412 69c18 -3 10 -41 -5 -39c0 0 -21 -1 -63 12c0 0 -16 -19 -39 -30c-26 -12 -118 -33 -197 38c-108 97 -120 354 -100 333c86 -90 197 -47 270 -106c55 -44 88 -127 77 -192c0 0 5 -8 57 -16zM316 65c5 5 10 16 10 24c-161 52 -252 160 -252 160s104 -143 242 -184z +" /> + <glyph glyph-name="ion-levels" unicode="&#xf298;" horiz-adv-x="350" +d="M46 349c11 -5 18 -16 18 -29s-7 -24 -18 -29v-275c0 -9 -7 -16 -16 -16s-16 7 -16 16v278c-8 6 -14 15 -14 26s6 20 14 26v22c0 9 7 16 16 16s16 -7 16 -16v-19zM142 155c9 -6 15 -16 15 -27s-6 -21 -15 -27v-85c0 -9 -7 -16 -16 -16s-16 7 -16 16v84 +c-10 5 -17 16 -17 28s7 23 17 28v212c0 9 7 16 16 16s16 -7 16 -16v-213zM238 285c10 -6 16 -16 16 -28s-6 -22 -16 -28v-213c0 -9 -7 -16 -16 -16s-16 7 -16 16v213c-10 6 -16 16 -16 28s6 22 16 28v83c0 9 7 16 16 16s16 -7 16 -16v-83zM350 65c0 -12 -6 -22 -16 -28v-21 +c0 -9 -7 -16 -16 -16s-16 7 -16 16v21c-10 6 -16 16 -16 28s6 22 16 28v275c0 9 7 16 16 16s16 -7 16 -16v-275c10 -6 16 -16 16 -28z" /> + <glyph glyph-name="ion-lightbulb" unicode="&#xf299;" horiz-adv-x="256" +d="M128 416c71 0 128 -56 128 -124c0 -5 0 -9 -1 -14s-2 -11 -3 -16v-2c-17 -63 -45 -71 -59 -167v-1c-2 -9 -10 -12 -20 -12h-90c-10 0 -18 3 -20 12v1c-14 96 -42 104 -59 167v2c-1 5 -2 11 -3 16s-1 9 -1 14c0 68 57 124 128 124zM190 52v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8 +v-1c1 -2 2 -3 2 -5s-1 -4 -2 -6v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8v-1c1 -2 2 -4 2 -6c0 -5 -4 -9 -10 -11h-1c-6 -1 -13 -2 -19 -3h-2c-6 -1 -11 -5 -14 -9v0c-4 -5 -10 -10 -18 -10s-15 6 -19 11v0c-3 4 -7 7 -13 8h-2c-6 1 -13 2 -19 3h-1c-6 2 -10 6 -10 11c0 2 1 4 2 6v1 +c2 2 3 4 3 7s-1 5 -3 8v1c-1 2 -2 4 -2 6s1 3 2 5v1c2 3 3 5 3 8s-1 4 -3 7v1v0c-1 2 -2 4 -2 6c0 4 -1 6 7 6h114c8 0 7 -2 7 -6c0 -2 -1 -4 -2 -6v0z" /> + <glyph glyph-name="ion-link" unicode="&#xf1fe;" horiz-adv-x="384" +d="M192 240v0v0v0zM304 288c44 0 80 -36 80 -80v-32c0 -44 -36 -80 -80 -80h-112c-33 0 -60 20 -73 48c-4 10 -7 20 -7 32v32h48v-32c0 -18 14 -32 32 -32h112c18 0 32 14 32 32v32c0 18 -14 32 -32 32v0h-16c-6 31 -32 48 -32 48h48zM266 240c4 -10 6 -21 6 -32v-32v0h-48 +v0v32c0 18 -14 32 -32 32v0h-112c-18 0 -32 -14 -32 -32v-32c0 -18 14 -32 32 -32h16c6 -31 32 -48 32 -48h-48c-44 0 -80 36 -80 80v32c0 44 36 80 80 80h112c33 0 62 -20 74 -48z" /> + <glyph glyph-name="ion-load-a" unicode="&#xf29a;" horiz-adv-x="512" +d="M192 352c0 42.6667 21.3333 64 64 64c42.6667 0 64 -21.3333 64 -64s-21.3333 -64 -64 -64c-42.6667 0 -64 21.3333 -64 64zM48 192c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM360 304c0 5.33333 2.66667 8 8 8s8 -2.66667 8 -8s-2.66667 -8 -8 -8 +s-8 2.66667 -8 8zM180.1 340.4c9.9502 -10.0503 14.9253 -22.1838 14.9253 -36.4004c0 -14.2166 -4.9751 -26.3501 -14.9253 -36.4004c-9.94971 -10.0498 -21.9662 -15.0747 -36.0494 -15.0747s-26.1 5.0249 -36.0502 15.0747 +c-9.9502 10.0503 -14.9253 22.1838 -14.9253 36.4004s4.9751 26.3501 14.9253 36.4004c9.9502 10.0498 21.9669 15.0747 36.0502 15.0747c14.0833 0 26.0997 -5.0249 36.0494 -15.0747zM400 192c0 10.6667 5.33333 16 16 16s16 -5.33333 16 -16s-5.33333 -16 -16 -16 +s-16 5.33333 -16 16zM345 79c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM224 32c0 21.3333 10.6667 32 32 32c21.3333 0 32 -10.6667 32 -32c0 -21.3333 -10.6667 -32 -32 -32c-21.3333 0 -32 10.6667 -32 32zM104 80c0 26.6667 13.3333 40 40 40 +c26.6667 0 40 -13.3333 40 -40s-13.3333 -40 -40 -40c-26.6667 0 -40 13.3333 -40 40z" /> + <glyph glyph-name="ion-load-b" unicode="&#xf29b;" horiz-adv-x="512" +d="M288 288c0 -17.7002 -14.2998 -32 -32 -32v0c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32v0c17.7002 0 32 -14.2998 32 -32v-96zM256 128v0c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v96 +c0 17.7002 14.2998 32 32 32zM448 224v0c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-96c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h96zM160 224v0c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-96c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32 +h96zM346.5 237.3c-12.5 -12.5 -32.7998 -12.5 -45.2998 0v0c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.9004c12.5 12.5 32.8008 12.5 45.3008 0v0c12.5 -12.5 12.5 -32.7998 0 -45.2998zM210.7 146.7v0c12.5 -12.5 12.5 -32.7002 0 -45.2998l-67.9004 -67.9004 +c-12.5 -12.5 -32.7998 -12.5 -45.2998 0s-12.5 32.7998 0 45.2998l67.9004 67.9004c12.5 12.5 32.7998 12.5 45.2998 0zM414.4 78.9004v0c12.5 -12.5 12.5 -32.8008 0 -45.3008s-32.8008 -12.5 -45.3008 0l-67.8994 67.9004c-12.5 12.5 -12.5 32.7998 0 45.2998 +s32.7998 12.5 45.2998 0zM210.7 282.5v0c12.5 -12.5 12.5 -32.7998 0 -45.2998s-32.7998 -12.5 -45.2998 0l-67.9004 67.8994c-12.5 12.5 -12.5 32.8008 0 45.3008s32.7998 12.5 45.2998 0z" /> + <glyph glyph-name="ion-load-c" unicode="&#xf29c;" horiz-adv-x="512" +d="M479.8 221.9c0.5 -2.90039 0.100586 -6 -1.2002 -8.90039c-3.7998 -8.40039 -14.6992 -11.9004 -22.5 -6.7002c-3.69922 2.40039 -6.09961 6.40039 -6.7998 10.7002c-0.799805 4.7002 -1.59961 9.40039 -2.59961 14.0996c-4.40039 20.4004 -11.7002 40 -21.9004 58.2002 +c-12 21.4004 -27.8994 40.4004 -47 55.7998c-18.2002 14.7002 -39.2002 26 -61.5 33c-20.7002 6.5 -42.5 9.30078 -64.2002 8.90039c-1.2998 0 -2.59961 0.0996094 -3.89941 0.0996094c-3.2002 -0.299805 -6.2998 -0.299805 -9.5 -0.599609 +c-6.5 -0.5 -13 -1.5 -19.5 -2.7002c-12.7998 -2.39941 -25.4004 -6 -37.4004 -10.8994c-20.7998 -8.40039 -40 -20.3008 -56.7998 -35.1006c-16.7998 -14.7002 -31.0996 -32.0996 -42.0996 -51.3994c-12.4004 -21.6006 -20.4004 -45.3008 -24.1006 -69.9004 +c-1.7002 -11.2002 -2.39941 -22.9004 -2.09961 -34.2002c0.200195 -5.5 0.700195 -11 1.2998 -16.3994c0.700195 -6.30078 1.7002 -12.7002 3 -18.9004c5.09961 -23.9004 14.4004 -46.7998 27.9004 -67.0996c12.8994 -19.9004 29.2998 -37.5 48.1992 -51.8008 +c19.5 -14.6992 41.7002 -25.8994 65.1006 -32.7998c24.5996 -7.2998 50.7002 -9.7998 76.2998 -7.59961c25 2.2002 49.7002 8.7998 72.2998 19.7998c11.2998 5.40039 22 11.9004 32.1006 19.2998c9.89941 7.2002 18.7998 15.2998 27 24.4004 +c4.09961 4.5 8.19922 9.09961 11.7998 13.8994c3.59961 4.80078 6.89941 9.80078 10.0996 14.9004c6.2002 9.90039 11.9004 20.0996 16.7998 30.7998c3.80078 8.40039 7.80078 16.7998 11 25.5c1.60059 4.10059 3 8.2998 4.10059 12.6006 +c0.899414 3.69922 1.5 7.39941 2.2002 11.1992c0.799805 -8.59961 0.199219 -17.3994 -1.30078 -25.8994c-1 -5.40039 -2.09961 -10.9004 -3.59961 -16.2002c-1.40039 -5 -3.09961 -9.7998 -4.90039 -14.5996c-3.59961 -9.7002 -7.7998 -19.3008 -12.7998 -28.5 +c-5.7998 -10.7002 -12.7998 -20.6006 -20.5996 -30c-7.7002 -9.30078 -15.9004 -18.1006 -25.1006 -25.9004c-18.2998 -15.4004 -39.1992 -27.7002 -61.5 -36.2998c-23.1992 -8.90039 -47.7998 -13.7002 -72.5996 -14.5 +c-25.4004 -0.900391 -51.0996 2.7002 -75.2998 10.3994c-23.2002 7.40039 -45.2998 18.6006 -64.9004 33.1006c-19.2002 14.0996 -36 31.2002 -49.7998 50.5c-6.90039 9.7002 -13.0996 20 -18.4004 30.7002c-5.39941 10.8994 -9.69922 22.0996 -13.2998 33.5996 +c-5.7002 18.0996 -8.59961 37 -9.5 55.9004c-1 19.5 1 39.0996 5.2002 58.0996c5.2002 23.7998 14.7002 46.5 27.4004 67.2998c11.5 18.7002 25.7998 35.7002 42.1992 50.2998c16.4004 14.6006 34.9004 26.8008 54.8008 36.2002c23.1992 10.9004 48.3994 18 73.8994 20.5 +c9.7998 0.900391 19.7002 1.2998 29.6006 1.2002c12.6992 -0.0996094 25.1992 -1.59961 37.5996 -4.09961c24 -4.90039 47 -13.7002 68.0996 -26.1006c21.4004 -12.5 40.7002 -28.7998 56.7002 -47.7002c14.7998 -17.5996 27 -37.3994 35.9004 -58.5996 +c4.39941 -10.2998 8 -21 10.7998 -31.7998c2.2002 -8.5 3.90039 -17.1006 5.2998 -25.7998z" /> + <glyph glyph-name="ion-load-d" unicode="&#xf29d;" horiz-adv-x="512" +d="M432 208c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-80c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h80zM176 192c0 -8.7998 -7.2002 -16 -16 -16h-80c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h80c8.7998 0 16 -7.2002 16 -16zM256 112 +c8.7998 0 16 -7.2002 16 -16v-80c0 -8.7998 -7.2002 -16 -16 -16s-16 7.2002 -16 16v80c0 8.7998 7.2002 16 16 16zM256 384c8.7998 0 16 -7.2002 16 -16v-80c0 -8.7998 -7.2002 -16 -16 -16s-16 7.2002 -16 16v80c0 8.7998 7.2002 16 16 16zM325.3 232 +c-4.39941 7.7002 -1.7998 17.4004 5.90039 21.9004l69.2998 40c7.7002 4.39941 17.5 1.7998 21.9004 -5.90039c4.39941 -7.7002 1.7998 -17.5 -5.90039 -21.9004l-69.2998 -40c-7.7002 -4.39941 -17.5 -1.7998 -21.9004 5.90039zM186.7 152 +c4.39941 -7.7002 1.7998 -17.4004 -5.90039 -21.9004l-69.2998 -40c-7.7002 -4.39941 -17.5 -1.7998 -21.9004 5.90039c-4.39941 7.7002 -1.7998 17.5 5.90039 21.9004l69.2998 40c7.7002 4.39941 17.5 1.7998 21.9004 -5.90039zM317.9 116.9l40 -69.3008 +c4.39941 -7.69922 1.7998 -17.5 -5.90039 -21.8994c-7.7002 -4.40039 -17.5 -1.7998 -21.9004 5.89941l-40 69.3008c-4.39941 7.69922 -1.7998 17.5 5.90039 21.8994c7.7002 4.40039 17.5 1.7998 21.9004 -5.89941zM181.9 352.4l40 -69.3008 +c4.39941 -7.69922 1.7998 -17.5 -5.90039 -21.8994c-7.7002 -4.40039 -17.5 -1.7998 -21.9004 5.89941l-40 69.3008c-4.39941 7.69922 -1.7998 17.5 5.90039 21.8994c7.7002 4.40039 17.5 1.7998 21.9004 -5.89941zM296 261.3 +c-7.7002 4.40039 -10.2998 14.2002 -5.90039 21.9004l40 69.2998c4.5 7.7002 14.2002 10.2998 21.9004 5.90039c7.7002 -4.5 10.2998 -14.2002 5.90039 -21.9004l-40 -69.2998c-4.5 -7.7002 -14.2002 -10.2998 -21.9004 -5.90039zM216 122.7 +c7.7002 -4.40039 10.2998 -14.2002 5.90039 -21.9004l-40 -69.2998c-4.5 -7.7002 -14.2002 -10.2998 -21.9004 -5.90039c-7.7002 4.5 -10.2998 14.2002 -5.90039 21.9004l40 69.2998c4.5 7.7002 14.2002 10.2998 21.9004 5.90039zM416.4 117.9 +c7.69922 -4.5 10.2998 -14.2002 5.89941 -21.9004c-4.5 -7.7002 -14.2002 -10.2998 -21.8994 -5.90039l-69.3008 40c-7.69922 4.5 -10.2998 14.2002 -5.89941 21.9004c4.5 7.7002 14.2002 10.2998 21.8994 5.90039zM95.5996 266.1 +c-7.69922 4.5 -10.2998 14.2002 -5.89941 21.9004c4.5 7.7002 14.2002 10.2998 21.8994 5.90039l69.3008 -40c7.69922 -4.5 10.3994 -14.2002 5.89941 -21.9004s-14.2002 -10.2998 -21.8994 -5.90039z" /> + <glyph glyph-name="ion-location" unicode="&#xf1ff;" horiz-adv-x="239" +d="M119 384c66 0 120 -54 120 -120c0 -115 -120 -264 -120 -264s-119 149 -119 264c0 66 53 120 119 120zM119 206c31 0 57 25 57 56s-26 57 -57 57s-56 -26 -56 -57s25 -56 56 -56z" /> + <glyph glyph-name="ion-locked" unicode="&#xf200;" horiz-adv-x="384" +d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46s43 -73 43 -115v-31h22c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340zM97 255v-31h17h155h18v31c0 27 -10 61 -28 80v0v1 +c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80z" /> + <glyph glyph-name="ion-log-in" unicode="&#xf29e;" horiz-adv-x="384" +d="M160 160v48h-152c-4 0 -8 4 -8 8v16c0 4 4 8 8 8h152v48l64 -64zM376 384c4 0 8 -4 8 -8v-302c0 -8 0 -10 -9 -15l-119 -59v64h-152c-4 0 -8 4 -8 8v104h32v-80h128v224l48 32h-176v-80h-32v104c0 4 4 8 8 8h272z" /> + <glyph glyph-name="ion-log-out" unicode="&#xf29f;" horiz-adv-x="384" +d="M320 288l64 -64l-64 -64v48h-152c-4 0 -8 4 -8 8v16c0 4 4 8 8 8h152v48zM288 272h-32v80h-176l48 -32v-224h128v80h32v-104c0 -4 -4 -8 -8 -8h-152v-64l-119 59c-9 5 -9 7 -9 15v302c0 4 4 8 8 8h272c4 0 8 -4 8 -8v-104z" /> + <glyph glyph-name="ion-loop" unicode="&#xf201;" horiz-adv-x="512" +d="M273.4 147.5l-0.300781 -58c48.9004 8.2002 86.3008 51 86.3008 102.5c0 15.9004 -3.60059 31 -10 44.5c-2.80078 5.7998 -6 11.2998 -9.80078 16.5l47.1006 43.5c1.09961 -1.2998 2.09961 -2.7002 3.09961 -4c20.9004 -28 33.2002 -62.7998 33.2002 -100.5v-3.7002 +c-1.5 -71.5 -47.5996 -132 -111.4 -154.6c-12.2998 -4.2998 -25.1992 -7.2998 -38.5 -8.7002l-0.0996094 -57l-76.2002 67l-26.2002 23l44.4004 38.7002zM89 195.7c1.59961 72.0996 48.2998 133 112.9 155.2c11.6992 4 24 6.7998 36.7998 8.09961l0.0996094 57 +l76.1006 -66.9004l26.1992 -23.0996l-44.2998 -38.5996l-58.3994 -50.9004l0.199219 57.9004c-48.7998 -8.30078 -86 -51.1006 -86 -102.4c0 -16 3.60059 -31.0996 10.1006 -44.7002c2.7002 -5.7998 6 -11.2002 9.7002 -16.2998l-47 -43.5996 +c-1.30078 1.59961 -2.60059 3.2998 -3.80078 5c-20.5 27.8994 -32.5996 62.2998 -32.5996 99.5996v3.7002z" /> + <glyph glyph-name="ion-magnet" unicode="&#xf2a0;" horiz-adv-x="384" +d="M192 416c115 0 192 -78 192 -200c0 -49 -3 -77 -15 -128c-16 -66 -39 -113 -39 -113v-1c-2 -3 -6 -6 -10 -6c-1 0 -3 1 -4 1l-2 1l-50 20l-2 1c-3 2 -5 5 -5 9c0 1 0 3 1 4v1c7 16 27 59 37 101s13 63 13 108c0 71 -52 122 -116 122s-116 -51 -116 -122 +c0 -45 3 -66 13 -108s30 -85 37 -101v-1c1 -1 1 -3 1 -4c0 -4 -2 -7 -5 -9l-2 -1l-50 -20l-2 -1c-1 0 -3 -1 -4 -1c-4 0 -8 3 -10 6v1s-24 47 -40 113c-12 51 -14 79 -14 128c0 122 77 200 192 200zM109 4c-9 19 -27 59 -36 98l-42 -12c13 -53 30 -92 35 -104l43 17v1z +M317 -14c5 12 23 51 36 104l-43 12c-9 -39 -26 -79 -35 -98v-1z" /> + <glyph glyph-name="ion-male" unicode="&#xf2a1;" +d="M448 256l-63 63l-69 -69c22 -30 36 -66 36 -106c0 -97 -79 -176 -176 -176s-176 79 -176 176s79 176 176 176c40 0 76 -14 106 -36l69 69l-63 63h160v-160zM266 54c24 24 38 56 38 90s-14 66 -38 90s-56 38 -90 38s-66 -14 -90 -38s-38 -56 -38 -90s14 -66 38 -90 +s56 -38 90 -38s66 14 90 38z" /> + <glyph glyph-name="ion-man" unicode="&#xf202;" horiz-adv-x="168" +d="M84 341c-21 0 -37 17 -37 38s16 37 37 37s37 -16 37 -37s-16 -38 -37 -38zM121 333c28 0 47 -24 47 -48v-114c0 -22 -32 -22 -32 0v105h-5v-286c0 -28 -41 -31 -43 0v165h-1h-7v-165c-1 -29 -43 -30 -43 0v286h-6v-105c0 -22 -31 -22 -31 0v114c0 24 19 48 47 48h37h37z +" /> + <glyph glyph-name="ion-map" unicode="&#xf203;" +d="M441 311c4 -3 7 -8 7 -14v-281c0 -6 -3 -11 -8 -14c-2 -1 -5 -2 -7 -2c-3 0 -5 0 -7 2l-97 66l-97 -66c-5 -3 -11 -3 -16 0l-97 66l-97 -66c-4 -3 -10 -3 -15 0s-7 8 -7 14v281c0 6 3 11 7 14l105 71c5 3 10 3 15 0l97 -66l97 66c5 3 10 3 15 0zM103 95v241l-71 -49v-242 +zM135 95l73 -49v131l-4 -13c-7 2 -14 6 -21 10l9 13c6 -4 10 -6 16 -8v109l-73 49v-101c4 -2 8 -4 12 -7l-9 -13c-1 1 -2 1 -3 2v-123zM240 46l73 49v109l-2 -2c-2 -2 -3 -4 -5 -6l-12 11c2 2 3 4 5 6c3 3 6 7 9 10l5 -5v119l-73 -49v-112h6l3 -15c-3 0 -6 -1 -9 -1v0v-114z +M416 46v0v242l-71 49v-88c3 1 5 2 8 2l3 -15c-4 -1 -7 -2 -11 -4v-137zM67 192v-1l-16 5l1 1c2 7 4 13 9 20l13 -9c-4 -5 -5 -10 -7 -16zM97 227c-3 -1 -11 -5 -14 -7l-11 12c4 3 7 6 11 8c3 2 7 3 10 4l5 -15c-2 -1 1 -1 -1 -2zM264 182c5 2 11 5 16 10l10 -12 +c-6 -6 -12 -9 -19 -12zM166 210c4 -4 6 -7 10 -11l-11 -12c-4 4 -7 9 -11 13l-3 3l12 11c1 -1 2 -3 3 -4zM376 218l-12 12l11 10l-11 10l12 12l10 -11l10 11l12 -12l-11 -10l11 -10l-12 -12l-10 11z" /> + <glyph glyph-name="ion-medkit" unicode="&#xf2a2;" +d="M440 304c4 0 8 -4 8 -8v-288c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v288c0 4 4 8 8 8h120v31c1 28 22 49 51 49h45h45c30 0 50 -21 51 -49v-31h120zM160 331v-27h128v27v1v1c0 10 -9 19 -19 19h-45h-45c-10 0 -19 -9 -19 -19v-1v-1zM320 128v64h-64v64h-64v-64h-64v-64 +h64v-64h64v64h64z" /> + <glyph glyph-name="ion-merge" unicode="&#xf33f;" horiz-adv-x="384" +d="M320 224c35 0 64 -29 64 -64s-29 -64 -64 -64c-24 0 -44 13 -55 32h-10c-61 0 -115 25 -159 74v-115c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -19 -8 -37 -22 -49 +c4 -9 17 -35 37 -58c32 -35 70 -53 112 -53h10c11 19 31 32 55 32zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 128c18 0 32 14 32 32s-14 32 -32 32 +s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-mic-a" unicode="&#xf204;" horiz-adv-x="288" +d="M0 210c0 10 9 19 20 19s19 -9 19 -19v-14c0 -28 12 -53 31 -72s45 -31 74 -31s55 12 74 31s31 44 31 72v14c0 10 8 19 19 19s20 -9 20 -19v-14c0 -66 -46 -120 -108 -136c-1 0 -3 -1 -4 -1c-6 -2 -10 -7 -12 -13v-58c0 -11 -9 -20 -20 -20v0c-11 0 -20 9 -20 20v58 +c-2 6 -6 11 -12 13c-1 0 -3 1 -4 1c-62 16 -108 70 -108 136v14zM67 340c0 42 34 76 77 76s78 -34 78 -76v-144c0 -42 -35 -75 -78 -75s-77 33 -77 75v144z" /> + <glyph glyph-name="ion-mic-b" unicode="&#xf205;" horiz-adv-x="160" +d="M80 416c35 0 65 -23 76 -59c6 -18 4 -45 2 -55s-8 -20 -14 -28c-3 -4 -7 -7 -11 -9c-1 0 -1 -1 -2 -1c-3 -1 -6 -2 -10 -3c-12 -3 -25 -5 -39 -5v0h-1h-1v0c-14 0 -29 2 -41 5c-4 1 -7 2 -10 3c-1 0 -1 1 -2 1c-4 2 -8 5 -11 9c-6 8 -12 18 -14 28s-4 37 2 55 +c11 36 41 59 76 59zM119 247c6 0 12 -5 12 -12v-2c-5 -67 -18 -241 -19 -252c0 0 -3 -13 -32 -13v0c-29 0 -32 13 -32 13c-1 11 -13 185 -18 252v2c0 7 5 12 11 12h1c1 0 1 -1 2 -1c2 0 4 -1 6 -1c9 -2 21 -2 31 -2s20 0 29 2c2 0 4 1 6 1c1 0 1 1 2 1h1zM90 166v33 +c0 6 -4 11 -10 11s-10 -5 -10 -11v-33c0 -6 4 -11 10 -11s10 5 10 11z" /> + <glyph glyph-name="ion-mic-c" unicode="&#xf206;" horiz-adv-x="256" +d="M201 416c30 0 55 -23 55 -52v-28h-59v-37h59v-43h-59v-37h59v-43h-59v-37h59v-42c0 -29 -25 -52 -55 -52h-30v-77h-86v77h-30c-30 0 -55 23 -55 52v42h152v37h-152v43h152v37h-152v43h152v37h-152v28c0 29 25 52 55 52h146z" /> + <glyph glyph-name="ion-minus-circled" unicode="&#xf207;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-256v-32h256z" /> + <glyph glyph-name="ion-minus-round" unicode="&#xf208;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322z" /> + <glyph glyph-name="ion-minus" unicode="&#xf209;" horiz-adv-x="384" +d="M0 160v64h384v-64h-384z" /> + <glyph glyph-name="ion-model-s" unicode="&#xf2c1;" horiz-adv-x="512" +d="M509 57v-8v0v-1v-3v0c0 -3 -1 -5 -1 -7c-1 -12 -2 -18 -6 -20c-3 -2 -6 -2 -10 -2h-43s-10 1 -11 16v8c20 1 39 1 52 0c10 0 13 0 16 6c2 3 2 7 3 11zM3 57c1 -4 1 -8 3 -11c3 -6 6 -6 16 -6c13 1 32 1 52 0v-8c-1 -15 -8 -16 -11 -16h-43s-7 0 -10 2c-4 2 -6 8 -7 20v7 +v0v3v1v0v8zM512 151c0 -31 -2 -58 -2 -68c0 -4 0 -11 -1 -18c-1 -4 -1 -8 -3 -11c-3 -6 -6 -6 -16 -6c-13 1 -32 1 -52 0c-13 0 -27 -2 -39 -2c-30 -1 -21 4 -34 4s-63 -2 -109 -2s-97 2 -110 2s-4 -5 -34 -4c-12 0 -25 2 -38 2c-20 1 -39 1 -52 0c-10 0 -13 0 -16 6 +c-2 3 -2 7 -3 11c-1 7 -1 14 -1 18c0 10 -2 37 -2 68s4 61 6 64c1 2 8 9 26 21s17 10 20 18c-3 1 -5 3 -7 3c-4 0 -4 -3 -12 -3s-24 1 -28 5c-4 3 -5 5 -5 8s2 9 5 13s19 6 27 7s10 0 12 -1c4 -2 3 -22 3 -22l9 -1c5 13 12 41 24 62c13 23 26 30 32 32s10 2 48 6s69 5 96 5 +s58 -1 96 -5s42 -4 48 -6s19 -9 32 -32c12 -21 19 -49 24 -62l9 1s-1 20 3 22c2 1 4 2 12 1s24 -3 27 -7s5 -10 5 -13s-1 -4 -5 -8s-20 -5 -28 -5s-8 3 -12 3c-2 0 -4 -2 -7 -3c3 -8 2 -6 20 -18s25 -19 26 -21c2 -3 6 -33 6 -64zM86 303c-5 -11 -11 -33 -10 -36 +s-1 -5 15 -4s117 3 165 3s149 -2 165 -3s14 1 15 4s-5 25 -10 36s-17 31 -26 37c-2 1 -17 7 -54 9c-34 2 -72 3 -90 3s-56 -1 -90 -3c-37 -2 -52 -8 -54 -9c-7 -4 -21 -26 -26 -37zM123 178c7 2 11 2 11 2s-17 16 -48 25s-49 11 -66 10c0 0 -3 -16 0 -27s8 -10 16 -12 +s13 -5 16 -4s7 4 12 4s29 -4 38 -4s14 4 21 6zM358 99c15 2 34 19 21 33c-18 19 -15 19 -55 24c-35 4 -61 4 -68 4s-33 0 -68 -4c-40 -5 -37 -5 -55 -24c-13 -14 6 -31 21 -33c14 -2 74 -3 102 -3s88 1 102 3zM492 188c3 11 0 27 0 27c-17 1 -35 -1 -66 -10s-48 -26 -48 -26 +s4 1 11 -1s12 -6 21 -6s33 4 38 4s9 -3 12 -4s8 2 16 4s13 1 16 12z" /> + <glyph glyph-name="ion-monitor" unicode="&#xf20a;" +d="M437 384c6 0 11 -5 11 -11v-266c0 -6 -5 -11 -11 -11h-426c-6 0 -11 5 -11 11v266c0 6 5 11 11 11h426zM416 128v224h-384v-224h384zM270 0h-92c-28 0 -42 3 -30 12s30 16 30 23c0 4 1 45 1 45h45h45s1 -41 1 -45c0 -7 18 -14 30 -23s-2 -12 -30 -12z" /> + <glyph glyph-name="ion-more" unicode="&#xf20b;" horiz-adv-x="384" +d="M50 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM192 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM334 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48z" /> + <glyph glyph-name="ion-mouse" unicode="&#xf340;" horiz-adv-x="256" +d="M128 416h-1h5h-4zM251 255c2 1 2 1 4 1h1v-176c0 -37 -21 -71 -53 -91c-5 -3 -9 -5 -14 -7v-1v0c-18 -9 -39 -13 -61 -13c-71 0 -128 50 -128 112v176h1c2 0 3 0 5 -1v0c34 -13 76 -23 122 -23s88 10 122 23h1zM189 -18c5 2 10 4 14 7c-5 -3 -9 -5 -14 -7v0v-1v1v0z +M203 -11c-4 -3 -9 -5 -14 -7c5 2 9 4 14 7zM132 416c69 -2 124 -51 124 -112v-23c-2 -2 -4 -4 -6 -5c-1 -1 -3 0 -4 -1c-23 -10 -50 -16 -82 -19h-1h-2c-11 0 -17 0 -17 10v86c0 9 -7 16 -16 16s-16 -7 -16 -16v-85c0 -11 -6 -11 -17 -11h-2c-32 3 -61 9 -84 19v0 +c-1 0 -1 1 -2 1c-3 1 -5 3 -7 5v23c0 61 57 111 127 112h5z" /> + <glyph glyph-name="ion-music-note" unicode="&#xf20c;" horiz-adv-x="384" +d="M362 416c12 0 22 -9 22 -21v-303s-3 -43 -12 -55v0c-9 -15 -25 -21 -43 -21h-37c-28 0 -52 20 -52 48s24 48 52 48h60v192l-208 -38v-232c0 -8 -3 -27 -13 -41c-1 -2 -2 -3 -3 -5c0 -1 -1 -1 -2 -2v0c-9 -11 -23 -18 -38 -18h-37c-28 0 -51 20 -51 48s23 48 51 48v0h61 +v286c1 14 13 28 27 32l218 33s3 1 5 1z" /> + <glyph glyph-name="ion-navicon-round" unicode="&#xf20d;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 352c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 96c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32 +h322z" /> + <glyph glyph-name="ion-navicon" unicode="&#xf20e;" horiz-adv-x="320" +d="M0 175v32h320v-32h-320zM0 271v32h320v-32h-320zM0 79v32h320v-32h-320z" /> + <glyph glyph-name="ion-navigate" unicode="&#xf2a3;" +d="M448 416l-192 -448v256h-256z" /> + <glyph glyph-name="ion-network" unicode="&#xf341;" horiz-adv-x="384" +d="M384 352c0 -24 -13 -44 -32 -55v-93l-128 -64v-53c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v53l-128 64v93c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-53l96 -48l96 48v53c-19 11 -32 31 -32 55 +c0 35 29 64 64 64s64 -29 64 -64zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 320c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-no-smoking" unicode="&#xf2c2;" +d="M328 144v48h16v-48h-16zM80 144v48h90l48 -48h-138zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 9 -35 15h-1c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2 +c12 -4 24 -9 35 -15v0zM224 22c37 0 72 12 100 32l-238 238c-20 -28 -32 -63 -32 -100c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2zM362 93c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2 +c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -71 -12 -99 -32zM320 150l-42 42h42v-42zM352 144v48h16v-48h-16zM328 235c16 -7 16 -27 16 -34v-1h-16v1c0 8 -1 17 -7 20c-4 2 -13 4 -39 4h-3c-13 0 -24 0 -33 13c-5 8 -5 19 -2 29c-4 1 -8 1 -12 3c-17 7 -26 20 -26 38 +c0 33 27 44 39 44v-16c-1 0 -23 -2 -23 -28c0 -11 5 -19 16 -23c9 -4 18 -3 18 -3c3 0 6 -2 7 -5s2 -6 0 -8c-5 -7 -7 -18 -4 -22c4 -6 7 -6 20 -6h3c24 0 37 -2 46 -6zM368 200v0h-16c0 28 -4 41 -7 46c-6 10 -14 14 -25 14h-30c-3 0 -5 2 -6 4s-1 6 0 8c0 0 8 18 6 32 +c-1 8 -6 17 -27 17v16c24 0 40 -11 43 -30c2 -11 0 -23 -3 -31h17c16 0 30 -8 39 -22c6 -10 9 -28 9 -54z" /> + <glyph glyph-name="ion-nuclear" unicode="&#xf2a4;" +d="M176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM448 176c0 -27 -5 -53 -15 -78s-23 -47 -40 -66s-36 -35 -59 -48l-79 136c22 12 33 31 33 56h160zM224 240 +c-12 0 -23 -3 -33 -9l-80 138c35 20 73 31 113 31s78 -10 113 -30l-81 -139c-10 6 -21 9 -32 9zM160 176c0 -25 11 -44 33 -56l-79 -136c-35 20 -62 46 -83 80s-31 71 -31 112h160z" /> + <glyph glyph-name="ion-outlet" unicode="&#xf342;" +d="M338 416c61 0 110 -51 110 -113v-222c0 -62 -49 -113 -110 -113h-228c-61 0 -110 51 -110 113v222c0 62 49 113 110 113h228zM143 197v102c0 11 -9 21 -20 21h-23c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h23c11 0 20 9 20 20v1zM265 52v29 +c0 23 -18 42 -41 42s-41 -19 -41 -42v-29v0c0 -11 9 -20 20 -20h21h21c11 0 20 7 20 18v2zM368 197v102c0 11 -9 21 -20 21h-24c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h24c11 0 20 9 20 20v1z" /> + <glyph glyph-name="ion-paper-airplane" unicode="&#xf2c3;" +d="M0 176l448 240l-112 -448l-112 112l-80 -112l-16 160zM319 31l80 323l-322 -173l83 -31l192 154l-128 -176z" /> + <glyph glyph-name="ion-paperclip" unicode="&#xf20f;" horiz-adv-x="160" +d="M149 293c6 0 11 -5 11 -12v-195c0 -28 -10 -49 -24 -63c-15 -15 -36 -23 -56 -23c-40 0 -80 31 -80 88v234c0 24 11 44 29 54s39 11 57 0s29 -30 29 -54l-1 -225c0 -13 -3 -24 -9 -32s-16 -12 -25 -12c-17 0 -34 15 -34 44v173c0 6 6 12 12 12s11 -6 11 -12v-173 +c0 -14 5 -21 11 -21c2 0 5 2 7 4c3 4 5 10 5 17v225c0 15 -6 28 -17 34s-24 6 -35 0s-17 -19 -17 -34v-234c0 -44 29 -64 57 -64s57 19 57 63v195c0 6 6 11 12 11z" /> + <glyph glyph-name="ion-pause" unicode="&#xf210;" horiz-adv-x="256" +d="M96 12c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72c7 0 12 -5 12 -12v-360zM244 384c7 0 12 -5 12 -12v-360c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72z" /> + <glyph glyph-name="ion-person-add" unicode="&#xf211;" +d="M397 120h-42v51h-51v42h51v51h42v-51h51v-42h-51v-51zM384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27 +c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> + <glyph glyph-name="ion-person-stalker" unicode="&#xf212;" +d="M393 123c42 -16 52 -26 53 -33c2 -9 2 -90 2 -90h-98c0 18 0 71 -1 77c-1 10 -1 29 -55 50c-8 3 -14 5 -19 7c18 8 15 15 15 28c0 19 -9 11 -15 47c-2 14 -4 5 -9 28c-3 12 1 12 1 18s-1 10 -2 22c-1 14 11 52 57 52s59 -38 58 -52c-1 -12 -2 -16 -2 -22 +c-1 -6 4 -6 1 -18c-5 -23 -7 -14 -9 -28c-6 -36 -16 -28 -16 -47c0 -29 -2 -23 39 -39zM325 0h-163h-162s0 65 2 77c2 10 15 22 69 43c54 20 50 17 50 55c0 24 -12 8 -20 54c-3 18 -5 7 -11 36c-3 15 2 16 1 23s-2 14 -3 29c-2 19 15 67 74 67s77 -49 75 -67 +c-1 -15 -2 -22 -3 -29s5 -8 2 -23c-6 -29 -9 -18 -12 -36c-8 -46 -20 -30 -20 -54c0 -32 -2 -36 31 -48c6 -2 11 -4 19 -7c54 -21 67 -33 69 -43c1 -6 2 -28 2 -47v-30z" /> + <glyph glyph-name="ion-person" unicode="&#xf213;" horiz-adv-x="384" +d="M384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64 +c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> + <glyph glyph-name="ion-pie-graph" unicode="&#xf2a5;" +d="M1 192c0 5 -1 11 -1 16c0 115 93 208 208 208c5 0 11 -1 16 -1v-32v-191h-191h-32zM78 46c-26 32 -42 71 -45 114h223v223c43 -3 82 -19 114 -45c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78z" /> + <glyph glyph-name="ion-pin" unicode="&#xf2a6;" horiz-adv-x="224" +d="M188 220c20 -10 36 -31 36 -55c0 -17 -3 -21 -15 -21h-81l-12 -176h-8l-12 176h-81c-12 0 -15 5 -15 21c0 24 16 45 36 55v0c1 0 3 1 4 2c7 4 12 11 14 19l18 118v5c0 7 -4 10 -10 13v0c-1 0 -1 1 -2 1c-7 3 -12 9 -12 17c0 20 6 21 18 21h92c12 0 18 -1 18 -21 +c0 -8 -5 -14 -12 -17c-1 0 -1 -1 -2 -1v0c-6 -3 -10 -6 -10 -13v-5l18 -118c2 -8 7 -15 14 -19c1 -1 3 -2 4 -2v0z" /> + <glyph glyph-name="ion-pinpoint" unicode="&#xf2a7;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c32 32 51 75 55 120l-63 8v16l63 8c-4 45 -23 88 -55 120s-75 51 -120 55l-8 -63h-16l-8 63c-45 -4 -88 -23 -120 -55s-51 -75 -55 -120l63 -8v-16l-63 -8 +c4 -45 23 -88 55 -120s75 -51 120 -55l8 63h16l8 -63c45 4 88 23 120 55z" /> + <glyph glyph-name="ion-pizza" unicode="&#xf2a8;" horiz-adv-x="352" +d="M317 317c5 -2 8 -7 8 -13c0 -2 0 -4 -1 -6v0l-148 -330l-148 330v0c-1 2 -1 4 -1 6c0 6 3 11 8 13v0c1 0 1 0 2 1v0c42 18 90 28 139 28s97 -10 139 -28v0s0 -1 1 -1h1zM167 330c-4 -2 -5 -7 -3 -11c0 -1 5 -9 14 -15c12 -8 27 -8 41 0c4 2 5 7 3 11s-7 5 -11 3 +c-9 -5 -16 -5 -23 0c-6 4 -10 9 -10 9c-2 4 -7 5 -11 3zM80 288c0 -18 14 -32 32 -32s32 14 32 32s-14 32 -32 32s-32 -14 -32 -32zM134 187c1 10 5 16 13 19c6 3 13 3 13 3c4 0 8 3 8 7s-3 9 -7 9c-1 0 -10 0 -20 -4c-14 -6 -22 -17 -23 -33c0 -4 3 -9 7 -9s9 4 9 8z +M188 53c13 7 20 20 20 36c0 4 -5 7 -9 7s-7 -4 -7 -8c0 -10 -4 -17 -11 -21c-6 -3 -13 -3 -13 -3c-4 0 -8 -5 -8 -9s5 -7 9 -7c1 0 10 0 19 5zM176 109c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM240 224c18 0 32 14 32 32s-14 32 -32 32 +s-32 -14 -32 -32s14 -32 32 -32zM344 382c5 -2 8 -7 8 -13c0 -2 0 -3 -1 -5v-1l-7 -16l-1 -3c-2 -5 -7 -8 -13 -8c-2 0 -4 1 -6 2h-1c-45 19 -95 30 -147 30s-102 -11 -147 -30v0c-2 -1 -4 -2 -6 -2c-6 0 -12 4 -14 9l-1 2l-7 16v1c-1 2 -1 3 -1 5c0 6 3 11 8 13v0 +c1 0 1 1 2 1v0c51 21 107 33 166 33s115 -12 166 -33v0c1 0 1 -1 2 -1z" /> + <glyph glyph-name="ion-plane" unicode="&#xf214;" +d="M250 136c0 -7 1 -69 -6 -102c-1 -4 3 -4 5 -7l51 -33c2 -2 3 -8 3 -8l1 -18l-68 16l-12 -32l-12 32l-68 -16l1 18s0 6 2 8l52 33c2 3 6 3 5 7c-7 33 -6 95 -6 102s-8 5 -8 5l-62 -13l-128 -49c0 23 2 26 9 31l183 131s5 63 5 113c0 24 12 78 27 78s27 -54 27 -78 +c0 -53 5 -113 5 -113l183 -131c6 -4 9 -7 9 -31l-128 49l-62 13s-8 2 -8 -5z" /> + <glyph glyph-name="ion-planet" unicode="&#xf343;" horiz-adv-x="512" +d="M96 182c39 -24 85 -48 134 -69c44 -19 87 -35 126 -46c-27 -22 -62 -35 -100 -35c-85 0 -155 66 -160 150zM107 251c1 4 3 8 5 11c10 21 26 40 44 55c27 22 62 35 100 35c85 0 155 -66 160 -150v-10c0 -21 -4 -41 -11 -59c-1 -4 -3 -8 -5 -11c-6 1 -13 3 -19 5 +c-39 11 -82 26 -126 45c-56 24 -108 52 -148 79zM430 163c57 -35 87 -62 81 -82c-4 -12 -19 -17 -44 -17c-50 0 -136 23 -231 64c-141 61 -246 140 -235 175c4 12 20 20 44 17c22 -3 47 -9 73 -18c-8 -9 -8 -12 -14 -22c-23 5 -44 8 -59 8h-6c2 -2 5 -6 8 -9 +c11 -11 27 -24 46 -37c41 -29 97 -59 156 -85c44 -19 89 -35 128 -46c36 -10 68 -15 90 -15h6c-2 2 -5 6 -8 9c-10 10 -24 22 -41 34c4 11 5 12 6 24z" /> + <glyph glyph-name="ion-play" unicode="&#xf215;" horiz-adv-x="320" +d="M309 215c7 -6 11 -14 11 -23s-4 -17 -11 -23l-278 -166c-4 -2 -7 -3 -11 -3c-11 0 -20 9 -20 20v0v344v0c0 11 9 20 20 20c4 0 8 -1 11 -3z" /> + <glyph glyph-name="ion-playstation" unicode="&#xf30a;" horiz-adv-x="512" +d="M400 245c0 -11 0 -22 -2 -33c-2 -10 -5 -20 -10 -28c-4 -7 -10 -13 -18 -17c-7 -4 -16 -6 -24 -6c-13 0 -31 4 -42 9v131v2c0 9 -7 17 -15 17h-1c-9 0 -16 -8 -16 -17v-3v-300l-80 26v358s28 -4 75 -18s67 -21 84 -31c8 -5 15 -11 21 -17c7 -7 13 -14 17 -23 +c8 -16 10 -33 11 -50zM87 90c-4 -2 -8 -3 -11 -6c-1 -1 -3 -3 -2 -5s4 -4 6 -5c6 -2 13 -3 19 -3c7 0 15 0 22 2c5 1 9 3 14 5c30 10 41 12 41 12v-42c-14 -2 -36 -4 -50 -4c-30 -1 -60 4 -88 13c-9 3 -19 6 -27 12c-4 3 -8 8 -10 13c-2 4 -1 9 1 13s5 8 9 11 +c9 6 18 10 28 14c8 4 17 7 26 10c35 12 111 37 111 37v-47s-62 -20 -89 -30zM512 102c0 -5 -2 -9 -5 -13c-6 -7 -14 -11 -22 -15s-17 -8 -26 -11c-54 -19 -171 -59 -171 -59v48s92 30 133 44c6 2 11 4 16 8c2 2 4 3 3 6c-1 2 -4 4 -6 5c-6 2 -13 3 -19 3 +c-10 0 -20 -2 -30 -5c-29 -10 -97 -32 -97 -32v49s45 14 67 16c8 1 23 1 31 1c26 0 54 -3 79 -11c5 -2 8 -3 14 -5c9 -3 18 -8 25 -14c4 -4 8 -9 8 -15z" /> + <glyph glyph-name="ion-plus-circled" unicode="&#xf216;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-112v112h-32v-112h-112v-32h112v-112h32v112h112z" /> + <glyph glyph-name="ion-plus-round" unicode="&#xf217;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-129v-129c0 -17 -14 -31 -32 -31s-32 14 -32 31v129h-129c-17 0 -31 14 -31 32s14 32 31 32h129v129c0 17 14 31 32 31s32 -14 32 -31v-129h129z" /> + <glyph glyph-name="ion-plus" unicode="&#xf218;" horiz-adv-x="384" +d="M384 224v-64h-160v-160h-64v160h-160v64h160v160h64v-160h160z" /> + <glyph glyph-name="ion-podium" unicode="&#xf344;" +d="M0 0v192h128v-192h-128zM160 0v288h128v-288h-128zM320 0v128h128v-128h-128z" /> + <glyph glyph-name="ion-pound" unicode="&#xf219;" +d="M93 96h-93v54h101l13 84h-99v54h107l22 128h64l-22 -128h106l22 128h63l-22 -128h93v-54h-102l-12 -84h99v-54h-107l-22 -128h-63l22 128h-107l-22 -128h-63zM177 234l-12 -84h106l12 84h-106v0z" /> + <glyph glyph-name="ion-power" unicode="&#xf2a9;" +d="M224 192c-18 0 -32 14 -32 32v160c0 18 14 32 32 32s32 -14 32 -32v-160c0 -18 -14 -32 -32 -32zM347 379c61 -40 101 -109 101 -187c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 78 40 147 101 187v0c5 3 11 5 17 5c18 0 32 -14 32 -32c0 -6 -2 -12 -5 -17 +c-2 -3 -4 -6 -7 -8c-1 -1 -3 -2 -4 -3c-8 -6 -16 -12 -23 -19c-30 -30 -47 -70 -47 -113s17 -83 47 -113s70 -47 113 -47s83 17 113 47s47 70 47 113s-17 83 -47 113c-7 7 -15 13 -23 19c-1 1 -3 2 -4 3c-3 2 -5 5 -7 8c-3 5 -5 11 -5 17c0 18 14 32 32 32c6 0 12 -2 17 -5 +v0z" /> + <glyph glyph-name="ion-pricetag" unicode="&#xf2aa;" +d="M439 187c12 -12 12 -31 0 -43l-165 -167c-11 -11 -30 -11 -42 -1l-3 3l-206 209l-6 5c-6 7 -9 15 -10 24v0v2v0l-7 98v4v0c0 12 4 24 13 33l49 49c8 9 20 13 31 13h4l100 -4v0c12 0 22 -4 30 -12v0l2 -2v0l210 -211v0v0zM112 256c26 0 48 22 48 48s-22 48 -48 48 +s-48 -22 -48 -48s22 -48 48 -48z" /> + <glyph glyph-name="ion-pricetags" unicode="&#xf2ab;" +d="M440 209c10 -11 11 -28 0 -39l-29 -29c11 11 10 28 0 39v0v0l-190 191v0l-1 1h-1c-8 7 -16 12 -27 12v0l-90 3h-4c-9 0 -19 -3 -26 -10l28 27c8 8 17 12 27 12h4l90 -4v0c11 0 19 -4 27 -11h1l1 -1v0l190 -191v0v0zM396 166v0c11 -11 11 -29 0 -40l-108 -109v1l-26 -27 +l-2 -2l-13 -13c-10 -10 -26 -10 -37 -1l-3 3l-186 188l-5 5c-5 6 -9 14 -10 22v0v2v0l-6 88v3v1c0 11 4 21 12 29l44 45l1 1l1 1c7 6 17 9 26 9h4l90 -3v0c11 0 19 -4 27 -11v0l2 -1v0l189 -191v0zM79 308c-12 -8 -21 -21 -21 -37c0 -24 19 -43 43 -43c16 0 29 9 37 21 +c4 7 7 14 7 22c0 24 -20 44 -44 44c-8 0 -15 -3 -22 -7z" /> + <glyph glyph-name="ion-printer" unicode="&#xf21a;" +d="M392 320c28 0 56 -19 56 -55v-131c0 -31 -28 -54 -56 -54h-40v-112h-8h-8h-224h-11h-5v112h-40c-28 0 -56 24 -56 62v123c0 38 28 55 56 55h40v64h256v-64h40zM336 -16v176h-224v-176h224zM336 320v48h-224v-48h224zM384 256v16h-17v-16h17zM128 112v16h192v-16h-192z +M128 64v16h192v-16h-192zM128 16v16h192v-16h-192z" /> + <glyph glyph-name="ion-pull-request" unicode="&#xf345;" horiz-adv-x="384" +d="M64 384c35 0 64 -29 64 -64c0 -24 -13 -44 -32 -55v-178c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v178c-19 11 -32 31 -32 55c0 35 29 64 64 64zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM64 288 +c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM351 88c20 -11 33 -32 33 -56c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 23 12 44 31 55v156c0 16 -4 26 -11 33c-10 9 -26 12 -52 12v-64l-96 96l96 96v-64c42 1 74 -8 96 -29c21 -19 31 -46 31 -80v-155z +M320 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-qr-scanner" unicode="&#xf346;" horiz-adv-x="416" +d="M48 324v-68h-48v68c0 33 28 60 61 60h67v-48h-68c-7 0 -12 -5 -12 -12zM356 384c33 0 60 -27 60 -60v-68h-48v68c0 7 -6 12 -13 12h-67v48h68zM368 61v67h48v-67c0 -33 -27 -61 -60 -61h-68v49h68c7 0 12 5 12 12zM60 49h68v-49h-67c-33 0 -61 28 -61 61v67h48v-67 +c0 -7 5 -12 12 -12z" /> + <glyph glyph-name="ion-quote" unicode="&#xf347;" horiz-adv-x="384" +d="M128 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15zM352 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15z" /> + <glyph glyph-name="ion-radio-waves" unicode="&#xf2ac;" horiz-adv-x="384" +d="M128 192c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM96 192c0 -9 1 -17 3 -25s6 -16 10 -23s8 -13 14 -19s12 -11 19 -15l-23 -23c-6 4 -12 10 -17 15c-25 25 -38 55 -38 90s13 65 38 90c6 6 11 11 17 15l23 -23c-14 -9 -25 -20 -33 -35 +s-13 -30 -13 -47zM288 192c0 11 -2 22 -6 33s-9 20 -16 28s-15 15 -24 21l23 23c6 -4 12 -10 17 -15c25 -25 38 -55 38 -90s-13 -65 -38 -90c-6 -6 -11 -11 -17 -15l-23 23c14 9 25 20 33 35s13 30 13 47zM32 192c0 -26 6 -50 17 -72s27 -41 47 -56l-23 -23 +c-6 5 -11 9 -17 15c-18 18 -31 38 -41 61c-10 24 -15 49 -15 75s5 51 15 75c10 23 23 43 41 61c6 6 11 10 17 15l23 -23c-13 -10 -24 -21 -34 -34s-17 -28 -22 -44s-8 -33 -8 -50zM352 192c0 26 -6 50 -17 72s-27 41 -47 56l22 23c6 -5 12 -9 18 -15c18 -18 31 -38 41 -61 +c10 -24 15 -49 15 -75s-5 -51 -15 -75c-10 -23 -23 -43 -41 -61c-6 -6 -12 -10 -18 -15l-22 23c20 15 36 34 47 56s17 46 17 72z" /> + <glyph glyph-name="ion-record" unicode="&#xf21b;" horiz-adv-x="416" +d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208z" /> + <glyph glyph-name="ion-refresh" unicode="&#xf21c;" horiz-adv-x="512" +d="M416 96l-104 112h73.5c-6.7002 65.4004 -63.0996 112 -129.5 112c-70.5996 0 -128 -57 -128 -128s57.4004 -128 128 -128c27.5 0 52.9004 7.90039 75 24.2002l6.2002 4.59961l43.2002 -46.2002l-7.5 -5.89941c-33.8008 -26.5 -74 -40.6006 -116.9 -40.7002 +c-91 0.200195 -167.4 63.5996 -187.1 148.6v0.100586c-0.200195 1 -0.5 2.09961 -0.700195 3.2002c-0.100586 0.399414 -0.200195 0.899414 -0.299805 1.39941c-0.100586 0.700195 -0.300781 1.40039 -0.400391 2.10059c-0.200195 0.799805 -0.299805 1.69922 -0.5 2.59961 +c-0.0996094 0.400391 -0.0996094 0.700195 -0.200195 1.09961c-0.200195 1.2002 -0.399414 2.40039 -0.599609 3.60059v0.200195c-0.900391 6.19922 -1.60059 12.5996 -1.90039 19.0996v0.900391c-0.0996094 1.39941 -0.200195 2.69922 -0.200195 4.09961 +c-0.0996094 1.7002 -0.0996094 3.2998 -0.0996094 5s0.0996094 3.40039 0.0996094 5c0.100586 1.40039 0.100586 2.7002 0.200195 4.09961v0.800781c0.299805 6.39941 0.900391 12.7998 1.90039 19.0996v0.200195c0.200195 1.2002 0.399414 2.39941 0.599609 3.59961 +c0.100586 0.400391 0.100586 0.700195 0.200195 1.10059c0.200195 0.899414 0.299805 1.69922 0.5 2.59961c0.0996094 0.700195 0.299805 1.40039 0.400391 2.09961c0.0996094 0.5 0.199219 0.900391 0.299805 1.40039c0.200195 1.09961 0.399414 2.2002 0.700195 3.2998 +v0.100586c19.6992 85 95.7998 148.399 186.699 148.6v0h0.400391c10.5996 0 21.0996 -0.900391 31.2002 -2.59961c0.5 0 0.899414 -0.100586 1.39941 -0.200195c0.700195 -0.100586 1.5 -0.299805 2.2002 -0.400391c57.2002 -10.5 105.601 -46.3994 133 -95.5996 +c13 -23.2998 21.2002 -49.4004 23.5 -77.2998h64.7002z" /> + <glyph glyph-name="ion-reply-all" unicode="&#xf21d;" horiz-adv-x="416" +d="M257 256c153 0 159 -208 159 -208c-51 93 -91 102 -159 102v-92l-152 134l152 144v-80zM0 192l144 136v-57l-82 -79l82 -68v-58z" /> + <glyph glyph-name="ion-reply" unicode="&#xf21e;" horiz-adv-x="384" +d="M384 48c-53 93 -122 102 -224 102v-92l-160 134l160 144v-80c187 0 224 -208 224 -208z" /> + <glyph glyph-name="ion-ribbon-a" unicode="&#xf348;" horiz-adv-x="352" +d="M272 416l80 -96l-64 -134c-24 30 -59 49 -99 53zM80 416l83 -177c-40 -4 -75 -23 -99 -53l-64 134zM189 416h67l-53 -112h-27h-27l-53 112h80h13zM176 224c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM176 0c53 0 96 43 96 96 +s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM176 184c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88z" /> + <glyph glyph-name="ion-ribbon-b" unicode="&#xf349;" horiz-adv-x="384" +d="M192 376c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88zM192 416c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM192 192c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM83 194c26 -30 65 -50 109 -50 +c12 0 23 1 34 4l-34 -74l-48 -106l-48 80h-96zM301 194l83 -146h-96l-48 -80l-40 88l45 98c22 9 41 23 56 40z" /> + <glyph glyph-name="ion-sad" unicode="&#xf34a;" +d="M367 164c3 -9 -2 -17 -11 -19c-3 -1 -7 0 -10 1c-5 2 -9 5 -11 10s-4 12 -13 15s-14 0 -19 -3c-4 -3 -10 -3 -15 -1c-3 1 -7 3 -9 6c-6 8 -3 17 5 22c15 9 29 13 49 6s29 -21 34 -37zM165 195c8 -5 10 -14 4 -22c-2 -3 -6 -5 -9 -6c-5 -2 -11 -2 -15 1c-5 3 -10 6 -19 3 +s-11 -10 -13 -15s-6 -8 -11 -10c-3 -1 -7 -2 -10 -1c-9 2 -14 10 -11 19c5 16 14 30 34 37s35 3 50 -6zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56 +s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM317 89c5 -7 3 -17 -4 -22c-3 -2 -6 -3 -9 -3c-5 0 -10 3 -13 7c0 0 -19 25 -67 25s-67 -25 -67 -25c-3 -4 -8 -7 -13 -7c-3 0 -6 1 -9 3c-7 5 -9 15 -4 22c1 2 28 39 93 39 +s92 -37 93 -39z" /> + <glyph glyph-name="ion-scissors" unicode="&#xf34b;" horiz-adv-x="384" +d="M341 332c-13 -33 -117 -172 -117 -172l-32 -32s-31 -13 -50 -43s-33 -71 -33 -71v0c-7 -26 -28 -46 -53 -46c-31 0 -56 29 -56 64s25 64 56 64c13 0 25 -5 34 -13c2 -1 3 -3 4 -4v0l2 -2c4 -4 7 -2 14 11c8 15 17 35 27 54s38 59 38 59l17 23l144 192 +c23 -20 18 -51 5 -84zM56 0c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32zM192 160c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM143 183c-30 41 -90 125 -100 149c-13 33 -18 64 5 84l134 -178l-3 -4v0v0l-17 -23v-1v0 +c-1 -1 -10 -13 -19 -27zM328 96c31 0 56 -29 56 -64s-25 -64 -56 -64c-25 0 -47 20 -54 46v0s-13 41 -32 71c-11 17 -26 28 -36 35l29 29l1 1h1c1 1 1 2 2 4c3 -4 5 -9 7 -12c10 -19 20 -39 28 -54c7 -13 10 -15 14 -11c1 1 0 1 1 2h1c1 1 2 3 4 4c9 8 21 13 34 13zM328 0 +c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32z" /> + <glyph glyph-name="ion-search" unicode="&#xf21f;" horiz-adv-x="384" +d="M381 61c4 -4 4 -10 0 -14l-43 -44c-2 -2 -5 -3 -8 -3s-5 1 -7 3l-84 86c-25 -15 -52 -23 -80 -23c-87 0 -159 71 -159 159s72 159 159 159s158 -71 158 -159c0 -27 -7 -54 -21 -78zM159 322c-53 0 -97 -43 -97 -97s44 -97 97 -97s96 43 96 97s-43 97 -96 97z" /> + <glyph glyph-name="ion-settings" unicode="&#xf2ad;" horiz-adv-x="416" +d="M402 310c10 -6 15 -25 14 -36c-1 -17 -7 -36 -25 -54c-1 -1 -2 -1 -3 -2c-26 -25 -62 -30 -94 -20c-1 1 -2 2 -4 2c-5 1 -10 0 -13 -4l-36 -39c52 -50 107 -96 107 -96c2 -2 2 -5 0 -7l-50 -51c-2 -2 -5 -2 -7 0c0 0 -44 55 -93 107l-92 -98c-14 -16 -40 -15 -55 0 +c-15 16 -15 42 1 56l97 93l-12 12c-2 2 -3 7 -1 10l2 5c-25 26 -36 33 -56 32s-36 -13 -48 -28s-10 -52 -8 -62s-7 -6 -12 0c-9 10 -23 50 -6 93s42 69 48 75s16 15 24 21s21 -1 27 5c4 4 5 11 5 16l-4 4c-2 2 -2 5 0 7l31 31c2 2 5 2 7 0l50 -50c2 -2 2 -6 0 -8l-31 -31 +c-2 -2 -5 -2 -7 0l-8 9c-7 0 -15 -5 -17 -10c-3 -6 -6 -21 -3 -33c3 -11 13 -20 36 -43l5 3c4 2 8 1 10 -1c0 0 1 -2 13 -14l38 37c4 3 5 7 4 13c0 2 0 4 -1 5c-10 33 -6 69 19 96l2 2c18 18 36 25 53 26c10 1 30 -5 35 -15l-48 -48l-2 -3l-1 -1c-1 -1 -1 -2 -1 -4 +s0 -3 1 -5l2 -2l2 -2l41 -42l3 -3l1 -1c1 -1 2 -1 4 -1s3 0 4 1l2 1l2 3z" /> + <glyph glyph-name="ion-share" unicode="&#xf220;" horiz-adv-x="384" +d="M288 70v59l38 31v-109c0 -11 -8 -19 -19 -19h-288c-11 0 -19 9 -19 19v218c0 11 8 19 19 19h120c-29 -18 -43 -38 -43 -38h-58v-180h250zM256 224c-84 0 -116 -24 -160 -96c0 0 5 164 160 164v60l128 -96l-128 -96v64z" /> + <glyph glyph-name="ion-shuffle" unicode="&#xf221;" +d="M338 267c-52 0 -83 -43 -120 -92c-41 -55 -88 -120 -171 -120h-47v63h47c52 0 84 47 121 96c41 55 87 116 170 116h29v54l81 -81l-81 -84v48h-29zM121 230c-21 21 -42 35 -74 36c-34 1 -47 0 -47 0v63h47c48 0 83 -20 113 -48c-10 -12 -19 -24 -28 -36 +c-4 -5 -7 -10 -11 -15zM367 118v47l81 -84l-81 -81v54h-29c-50 0 -87 23 -117 53c12 14 22 28 32 41c2 3 5 6 7 9c22 -24 46 -39 78 -39h29z" /> + <glyph glyph-name="ion-skip-backward" unicode="&#xf222;" horiz-adv-x="384" +d="M12 352h8c7 0 12 -5 12 -12v-113l187 122c2 2 5 3 8 3c8 0 16 -7 16 -17v-63l118 78c2 2 5 2 8 2c8 0 15 -7 15 -17v-286c0 -10 -7 -17 -15 -17c-3 0 -5 1 -8 3l-118 78v-64c0 -10 -8 -17 -16 -17c-3 0 -5 1 -8 3l-187 122v-113c0 -7 -5 -12 -12 -12h-8 +c-7 0 -12 5 -12 12v296c0 7 5 12 12 12z" /> + <glyph glyph-name="ion-skip-forward" unicode="&#xf223;" horiz-adv-x="384" +d="M372 352c7 0 12 -5 12 -12v-296c0 -7 -5 -12 -12 -12h-8c-7 0 -12 5 -12 12v113l-187 -122c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v64l-119 -78c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v286c0 10 7 17 15 17c3 0 6 0 8 -2l119 -78v63c0 10 7 17 15 17c3 0 6 -1 8 -3 +l187 -122v113c0 7 5 12 12 12h8z" /> + <glyph glyph-name="ion-social-android-outline" unicode="&#xf224;" horiz-adv-x="352" +d="M272 240h-192v-60v-89h24h16v-15v-52c0 -4 4 -8 8 -8s8 4 8 8v52v15h17h49h15v-15v-52c0 -2 1 -4 3 -6h1v0c1 -1 2 -2 4 -2h1v0v0c4 0 7 4 7 8v52v15h17h22v89v60zM288 256v0v-76v-90c0 -7 -3 -15 -10 -15h-29v-51c0 -13 -10 -24 -23 -24v0h-1c-6 0 -11 2 -15 5 +c-5 4 -9 11 -9 19v51h-49v-51c0 -13 -11 -24 -24 -24s-24 11 -24 24v51h-28c-7 0 -12 8 -12 15v90v76h224zM328 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM328 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96 +c0 13 11 24 24 24zM24 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM24 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM175 354c-14 0 -27 -3 -38 -6l-10 -4c-28 -12 -40 -37 -44 -56h186 +c-4 18 -15 43 -44 56l-10 4c-12 4 -25 6 -39 6v0v0h-1zM105 384v0h1l19 -23c13 5 30 9 50 9h1c20 0 36 -4 50 -9l20 23v0s1 -1 2 -1c1 -1 2 -3 2 -3l-19 -22c48 -21 56 -71 57 -86h-224c1 15 9 66 57 87l-19 22c0 1 1 1 2 2zM127 309c-7 0 -14 6 -14 13s6 14 14 14 +c7 0 13 -7 13 -14s-5 -13 -13 -13zM225 309c-7 0 -13 6 -13 13s5 14 13 14c7 0 13 -7 13 -14s-6 -13 -13 -13z" /> + <glyph glyph-name="ion-social-android" unicode="&#xf225;" horiz-adv-x="352" +d="M64 180v76h224v-76v-90c0 -7 -4 -14 -11 -14h-28v-52c0 -13 -11 -24 -24 -24v0h-1c-6 0 -10 2 -14 5c-5 4 -9 11 -9 19v52h-49v-52c0 -13 -11 -24 -24 -24s-24 11 -24 24v52h-29c-7 0 -11 7 -11 14v90zM328 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24 +s-24 11 -24 24v96c0 13 11 24 24 24zM24 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM231 359c48 -21 56 -72 57 -87h-224c1 15 8 66 56 87l-18 22c0 1 0 1 1 2s3 1 3 1l19 -23c14 5 31 9 51 9s36 -4 50 -9l20 23c0 1 1 0 2 -1 +l2 -2zM127 309c8 0 13 6 13 13s-6 14 -13 14c-8 0 -14 -7 -14 -14s7 -13 14 -13zM225 309c7 0 14 6 14 13s-7 14 -14 14c-8 0 -13 -7 -13 -14s6 -13 13 -13z" /> + <glyph glyph-name="ion-social-apple-outline" unicode="&#xf226;" horiz-adv-x="320" +d="M238 278c-15 0 -26 -4 -37 -8c-10 -4 -21 -8 -35 -8s-25 4 -37 8c-11 4 -22 8 -34 8c-11 0 -23 -3 -34 -10c-12 -7 -23 -18 -31 -31c-12 -18 -16 -47 -13 -77c3 -34 16 -69 35 -99c13 -21 30 -45 50 -45h1c8 0 13 3 20 6c10 5 23 10 44 10v0c21 0 34 -5 44 -10 +c7 -3 12 -6 19 -6v0c22 0 44 35 52 48c8 12 12 20 17 31c-12 7 -22 16 -30 28c-10 15 -17 33 -18 52c-1 18 2 37 10 53c6 12 14 22 24 30c-14 13 -31 20 -47 20zM238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1 +c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16zM214 364c-11 -5 -21 -13 -28 -22c-4 -5 -9 -13 -13 -23c-1 -3 -2 -6 -2 -9c11 4 21 11 28 21c4 5 12 18 15 33z +M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> + <glyph glyph-name="ion-social-apple" unicode="&#xf227;" horiz-adv-x="320" +d="M238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16z +M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> + <glyph glyph-name="ion-social-bitcoin-outline" unicode="&#xf2ae;" horiz-adv-x="320" +d="M184 400h-8v-48v-16h-16h-32h-16v16v48h-9v-48v-16h-16h-72v-16h13c11 0 19 0 25 -3s10 -7 13 -13s3 -8 3 -20v-178c0 -11 0 -18 -3 -24v-1c-1 -3 -4 -10 -12 -14h-1c-5 -3 -8 -3 -17 -3h-13l-3 -16h67h16v-16v-48h9v48v16h16h32h16v-16v-48h8v49v16h15c23 1 41 5 55 10 +c16 6 28 15 37 26c8 11 12 29 13 42c1 14 -1 29 -4 36s-8 16 -21 23c-7 4 -14 6 -21 8l-46 11l43 19c4 2 7 4 12 9c6 5 9 12 11 16c2 5 4 13 3 22c-1 17 -4 29 -10 37c-7 9 -17 16 -31 21c-12 5 -24 7 -41 8l-15 1v15v47zM200 416v0v-63c20 -1 32 -4 45 -9 +c16 -6 29 -15 38 -27s12 -28 13 -45c1 -10 0 -20 -3 -28s-8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 24 -18 29 -30c4 -10 6 -30 5 -44c-1 -16 -6 -37 -16 -51c-11 -14 -26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-65h-40v64h-32v-64h-41v64h-87l8 48h28 +c9 0 8 1 11 2s4 3 5 6s1 9 1 18v178c0 9 0 10 -1 12s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40zM160 298v-74h-32v74h32zM160 176v0v-90h-32v90h32zM200 294v0c6 -2 10 -7 14 -12c4 -6 6 -13 6 -21s-2 -15 -7 -21c-4 -5 -7 -9 -13 -12v66zM200 174v0 +c5 -1 8 -1 12 -3c8 -3 14 -7 19 -13s8 -15 8 -24c0 -11 -2 -19 -10 -26s-13 -11 -23 -15c-2 -1 -4 0 -6 -1v82z" /> + <glyph glyph-name="ion-social-bitcoin" unicode="&#xf2af;" horiz-adv-x="320" +d="M314 169c4 -10 7 -30 6 -44c-1 -16 -5 -37 -16 -51s-26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-64h-40v64h-32v-64h-41v64h-87l9 48h26c9 0 9 0 12 1s4 4 5 7s2 8 2 17v173c0 9 -1 16 -2 18s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40v-64c20 -1 33 -4 46 -9 +c16 -6 28 -15 37 -27s12 -28 13 -45c1 -10 0 -20 -3 -28c-2 -8 -8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 23 -18 28 -30zM128 298v-74h32v74h-32zM128 86h32v90h-32v-90zM200 294v-66c6 3 9 7 13 12c5 6 7 12 7 20s-2 15 -6 21c-4 5 -8 11 -14 13z +M229 107c8 7 10 15 10 26c0 9 -3 19 -8 25s-12 10 -20 13c-4 2 -6 2 -11 3v-82c2 0 5 1 7 2c10 4 14 6 22 13z" /> + <glyph glyph-name="ion-social-buffer-outline" unicode="&#xf228;" horiz-adv-x="384" +d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM183 366l-156 -75l156 -75c2 -1 5 -1 9 -1s7 0 9 1l156 75l-156 75c-2 1 -5 2 -9 2s-7 -1 -9 -2zM377 200c9 -4 9 -12 0 -16l-169 -81 +c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM201 117l156 75l-19 9l-123 -59c-6 -3 -15 -5 -23 -5s-17 2 -23 5l-123 59l-19 -9l156 -75 +c2 -1 5 -2 9 -2s7 1 9 2zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17zM201 18l156 75l-19 9 +l-123 -60c-6 -3 -15 -4 -23 -4s-17 1 -23 4l-123 60l-19 -9l156 -75c2 -1 5 -2 9 -2s7 1 9 2z" /> + <glyph glyph-name="ion-social-buffer" unicode="&#xf229;" horiz-adv-x="384" +d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM377 200c9 -4 9 -12 0 -16l-169 -81c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0 +s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3 +c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17z" /> + <glyph glyph-name="ion-social-designernews-outline" unicode="&#xf22a;" +d="M259 302v-53l-65 103zM0 188zM297 352l151 -119v-201h-248l-200 156h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h41l-2 98l63 -98h36v84v80zM432 48v178l-119 92v1v-47v-83v-17h-15h-37h-9l-4 8l-33 50l1 -42v-16h-16h-41h-16v16v29c-3 -6 -7 -12 -12 -17 +c-8 -9 -18 -16 -30 -21s-24 -7 -38 -7h-16l159 -124h226zM59 298h-1h-3v-57h4c8 0 13 2 17 6c5 6 6 15 6 22c0 26 -12 29 -23 29zM59 314v0c25 0 39 -16 39 -45c0 -28 -14 -44 -40 -44h-19v89h20z" /> + <glyph glyph-name="ion-social-designernews" unicode="&#xf22b;" +d="M258 303l1 -53l-64 102zM297 352l151 -118v-202h-248l-200 157v0h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h40l-2 99l64 -99h36v83v80zM98 270c0 -28 -14 -44 -40 -44h-19v89h19c26 0 40 -16 40 -45z" /> + <glyph glyph-name="ion-social-dribbble-outline" unicode="&#xf22c;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM314 296c-17 -25 -47 -47 -85 -64c5 -10 9 -20 13 -31c33 3 75 4 110 2c-2 35 -16 68 -38 93zM192 352c-14 0 -26 -2 -39 -5c23 -23 43 -53 62 -87c34 14 62 33 79 55 +c-28 23 -63 37 -102 37zM120 334c-41 -21 -71 -58 -83 -103h25c44 0 85 6 121 17c-19 34 -40 63 -63 86zM32 200v-8c0 -40 15 -78 40 -106c24 45 67 83 122 106c4 2 8 3 14 4c-3 8 -6 16 -10 24c-40 -13 -88 -20 -138 -21c-9 0 -19 1 -28 1zM192 32c20 0 39 3 57 10 +c-3 25 -8 53 -15 79c-4 17 -10 33 -16 49c-7 -2 -13 -4 -17 -6c-48 -22 -86 -56 -107 -98c27 -21 61 -34 98 -34zM278 58c40 26 68 67 73 116c-30 2 -68 3 -99 0c4 -12 9 -25 12 -38c7 -27 11 -52 14 -78z" /> + <glyph glyph-name="ion-social-dribbble" unicode="&#xf22d;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM192 32c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM242 201c-4 11 -8 21 -13 31c25 11 47 24 63 39c15 -19 26 -42 28 -67c-26 0 -55 -1 -78 -3z +M271 292c-15 -12 -34 -23 -56 -32c-12 22 -24 41 -38 59c5 1 10 1 15 1c30 0 57 -11 79 -28zM142 310c15 -18 28 -39 41 -62c-34 -10 -72 -16 -113 -17c11 36 38 65 72 79zM319 176c-4 -33 -21 -63 -46 -83c-3 14 -5 28 -9 43c-3 13 -8 26 -12 38c21 2 45 3 67 2zM194 192 +c-43 -18 -79 -46 -104 -78c-16 22 -26 49 -26 78v7c49 1 95 8 134 21c4 -8 7 -16 10 -24c-6 -1 -10 -2 -14 -4zM219 170c6 -16 11 -32 15 -49c4 -15 7 -31 10 -46c-16 -7 -34 -11 -52 -11c-31 0 -59 11 -81 29c22 30 53 54 90 71c4 2 11 4 18 6z" /> + <glyph glyph-name="ion-social-dropbox-outline" unicode="&#xf22e;" horiz-adv-x="384" +d="M113 371l79 -66l-114 -71l-78 63zM27 295l52 -42l86 53l-53 46zM306 235l78 -63l-78 -51v-39l-114 -69l-114 68v39l-78 52l78 63l114 -71l-79 -66l-19 12v-20l98 -59l98 59v20l-19 -12l-79 66zM79 217l-52 -44l85 -55l53 44zM219 162l53 -44l85 56l-52 43zM384 297 +l-78 -63l-114 71l79 66zM219 305l86 -52l52 42l-85 56z" /> + <glyph glyph-name="ion-social-dropbox" unicode="&#xf22f;" horiz-adv-x="384" +d="M113 371l79 -66l-114 -71l-78 63zM0 172l78 62l114 -70l-79 -66zM192 164l114 70l78 -62l-113 -74zM384 297l-78 -63l-114 71l79 66zM192 150l80 -66l34 22v-25l-114 -68l-114 68v25l34 -22z" /> + <glyph glyph-name="ion-social-facebook-outline" unicode="&#xf230;" horiz-adv-x="192" +d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38zM170 208l4 32h-45h-17v17v37c0 10 1 21 9 30c10 11 25 12 37 12h18v32h-40c-28 0 -49 -6 -60 -18c-10 -11 -15 -27 -15 -51v-43v-16h-15h-30v-32h30h15v-16 +v-176h51v176v16h17h41z" /> + <glyph glyph-name="ion-social-facebook" unicode="&#xf231;" horiz-adv-x="192" +d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38z" /> + <glyph glyph-name="ion-social-foursquare-outline" unicode="&#xf34c;" +d="M439 298c12 -12 12 -32 0 -44l-196 -197c-6 -6 -14 -9 -22 -9h-5v0c-6 1 -13 4 -17 9l-118 119c-12 12 -12 31 0 43l35 35c6 6 13 9 21 9s16 -3 22 -9l62 -62l140 141c6 6 13 9 21 9v0c8 0 16 -3 22 -9zM221 80l194 196l-33 33l-161 -162l-84 84l-33 -33zM338 323l-77 78 +zM259 402c-10 9 -23 14 -36 14s-25 -5 -35 -14c20 18 51 18 71 0zM431 229c11 -11 17 -23 17 -37c0 -13 -6 -26 -17 -37l-170 -172c-10 -10 -25 -15 -38 -15s-27 5 -37 15l-171 172c-20 20 -20 54 0 74l171 172c1 1 1 0 2 1c10 9 22 14 35 14s26 -5 36 -14c1 -1 1 0 2 -1 +l77 -78l-23 -22l-77 77c-4 4 -9 6 -15 6s-10 -2 -14 -6l-171 -171c-8 -8 -8 -22 0 -30l171 -171c4 -4 8 -6 14 -6s11 2 15 6l171 171c8 8 8 22 0 30h-1l23 23v-1z" /> + <glyph glyph-name="ion-social-foursquare" unicode="&#xf34d;" +d="M444 302c3 -3 4 -6 4 -10s-1 -8 -4 -11l-213 -213c-3 -3 -6 -4 -10 -4v0v0h-2c-3 0 -7 2 -9 4l-118 119c-6 6 -6 15 0 21l35 35c3 3 6 4 10 4s8 -1 11 -4l73 -73l167 167c3 3 6 5 10 5s8 -2 11 -5zM431 230v-1c11 -11 17 -23 17 -37s-6 -25 -17 -37l-170 -172 +c-20 -20 -55 -20 -75 0l-171 172c-10 10 -15 24 -15 37s5 27 15 37l171 172c10 10 24 15 38 15s27 -5 37 -15l77 -78l-116 -116l-55 55c-8 8 -18 12 -29 12s-21 -4 -29 -12l-35 -35c-8 -8 -12 -18 -12 -29s4 -21 12 -29l119 -119c5 -5 12 -10 19 -12h2h8c11 0 21 4 29 12z +" /> + <glyph glyph-name="ion-social-freebsd-devil" unicode="&#xf2c4;" horiz-adv-x="512" +d="M503 333c19 -37 8 -81 -20 -108s-60 -33 -60 -33c2 -32 16 -59 -41 -102c-43 -32 2 -90 2 -90c10 -14 23 -19 32 -32h-272s15 14 -7 32c0 0 -20 17 -18 29s6 13 9 15s0 7 0 7l-19 19s-13 -13 -44 -13c-38 0 -65 39 -65 39h46s-6 -8 -7 -13c-1 -4 1 -5 1 -5s11 -6 22 -6 +c17 0 33 12 33 12l-24 22l-15 -4l-16 37l39 -10l-1 -15l28 -18s9 9 7 27s-9 26 -9 26s-4 0 -9 -4s-6 -6 -6 -6l-10 44s43 -19 50 -63c3 -20 -6 -35 -6 -35l17 -10s6 5 17 7s23 2 29 -8s5 -12 4 -19s0 -9 6 -11s6 -6 11 -8s15 -6 21 -2s8 11 8 18v16s-9 8 -32 20 +s-54 22 -66 40s-12 44 0 57c9 10 23 25 26 35c4 14 4 42 4 42s-10 16 -8 40c2 30 22 84 96 114c0 0 -40 -55 -20 -80c0 0 37 11 77 9c31 -2 56 -12 73 -28s25 -23 47 -17s28 17 28 33c0 19 -16 51 -16 51s36 -7 58 -51zM195 245c14 4 21 -11 21 -11c14 25 30 60 22 64 +s-64 -25 -66 -88c0 0 6 31 23 35zM232 230c5 7 34 8 37 -17c4 -35 -24 -57 -24 -57s7 -2 23 2c17 4 43 29 43 70s-21 66 -41 62s-38 -60 -38 -60z" /> + <glyph glyph-name="ion-social-github-outline" unicode="&#xf232;" +d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 +c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 +c-89 30 -153 116 -153 218c0 127 100 230 224 230zM146 -0c-15 0 -28 4 -38 9c14 -10 28 -17 44 -23v6v8h-6zM157 73c-16 4 -35 10 -52 24c6 -6 11 -11 13 -16c7 -12 14 -17 25 -17c4 0 9 1 12 2c1 2 1 5 2 7zM347 14c17 13 32 28 45 46c26 37 40 80 40 126 +c0 29 -5 58 -16 84c-10 25 -26 48 -45 68s-41 34 -66 45c-26 11 -53 17 -81 17s-55 -6 -81 -17c-25 -11 -47 -25 -66 -45s-35 -42 -45 -68c-11 -26 -16 -55 -16 -84c0 -46 14 -89 40 -126c10 -14 22 -27 35 -38c-7 8 -11 16 -13 22c-7 18 -15 24 -17 25h-2v1 +c-5 3 -20 13 -15 28c3 9 12 15 25 15h1v0v0c13 -1 24 -6 32 -13c-21 19 -37 48 -37 98c0 24 7 47 21 66c-3 13 -6 34 5 62l3 8l7 2c2 0 5 1 10 1c12 0 31 -3 60 -22c17 4 35 6 53 6v0v0c18 0 36 -2 53 -6c29 19 48 22 60 22c5 0 8 -1 10 -1l7 -2l3 -7c11 -27 8 -50 5 -63 +c14 -19 21 -41 21 -66c0 -92 -55 -117 -92 -125c3 -8 5 -18 5 -30v-51v-6c18 7 35 16 51 28z" /> + <glyph glyph-name="ion-social-github" unicode="&#xf233;" +d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 +c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 +c-89 30 -153 116 -153 218c0 127 100 230 224 230z" /> + <glyph glyph-name="ion-social-google-outline" unicode="&#xf34e;" horiz-adv-x="256" +d="M191 366c12 -10 37 -30 37 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -17 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 2 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 11 48 33 67c29 24 63 28 91 28h106l-33 -18h-32zM155 142c-4 1 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -25 -11 -38c0 -34 20 -89 64 -89c13 0 27 6 35 14z" /> + <glyph glyph-name="ion-social-google" unicode="&#xf34f;" horiz-adv-x="288" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -48 -99 -140 -99c-80 0 -115 39 -115 77c0 10 3 42 42 65c27 16 61 20 85 22c-4 7 -8 16 -8 27c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 70 29 95 29h133l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 20 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 38 -15 54c-7 13 -20 27 -40 27c-11 0 -22 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -32 -2 -51 -8c-16 -6 -37 -16 -37 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44z" /> + <glyph glyph-name="ion-social-googleplus-outline" unicode="&#xf234;" +d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" /> + <glyph glyph-name="ion-social-googleplus" unicode="&#xf235;" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" /> + <glyph glyph-name="ion-social-hackernews-outline" unicode="&#xf236;" horiz-adv-x="384" +d="M352 352h-320v-320h320v320zM384 384v0v-384h-384v384h384zM233 289h45l-64 -120v-72h-40v72l-66 120h47l40 -84z" /> + <glyph glyph-name="ion-social-hackernews" unicode="&#xf237;" horiz-adv-x="384" +d="M0 384h384v-384h-384v384zM214 169l64 120h-45l-38 -84l-40 84h-47l66 -120v-72h40v72z" /> + <glyph glyph-name="ion-social-instagram-outline" unicode="&#xf350;" horiz-adv-x="384" +d="M384 336v-289c0 -26 -22 -47 -48 -47h-288c-26 0 -48 21 -48 47v289c0 26 22 48 48 48h288c26 0 48 -22 48 -48zM192 272c-44 0 -80 -36 -80 -80s36 -80 80 -80s80 36 80 80s-36 80 -80 80zM352 288v48c0 9 -7 16 -16 16h-48c-9 0 -16 -7 -16 -16v-48c0 -9 7 -16 16 -16 +h48c9 0 16 7 16 16zM337 32c9 0 15 7 15 16v176h-52c3 -10 4 -21 4 -32c0 -30 -11 -58 -32 -79s-50 -33 -80 -33s-58 12 -79 33s-33 49 -33 79c0 11 2 22 5 32h-53v-176c0 -9 8 -16 17 -16h288z" /> + <glyph glyph-name="ion-social-instagram" unicode="&#xf351;" horiz-adv-x="384" +d="M112 192c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM113 271c-14 -14 -23 -29 -28 -47h-85v112c0 13 4 25 14 34s22 14 35 14h288c13 0 24 -5 33 -14s14 -21 14 -34v-112h-84c-5 18 -14 33 -28 47c-22 22 -49 33 -80 33s-57 -11 -79 -33zM352 300 +v39c0 4 -2 7 -4 9s-5 4 -9 4h-38c-4 0 -7 -2 -9 -4s-4 -5 -4 -9v-39c0 -4 2 -7 4 -9s5 -3 9 -3h38c4 0 7 1 9 3s4 5 4 9zM272 113c22 22 32 48 32 79h80v-144c0 -13 -5 -24 -14 -34s-20 -14 -33 -14h-288c-13 0 -24 4 -34 14s-15 21 -15 34v144h81c0 -31 10 -57 32 -79 +s48 -33 79 -33s58 11 80 33z" /> + <glyph glyph-name="ion-social-linkedin-outline" unicode="&#xf238;" horiz-adv-x="384" +d="M119 64v0h-55v171h55v-171zM93 261v0v0c-18 0 -29 13 -29 29c0 17 12 30 30 30s29 -13 29 -30c0 -16 -12 -29 -30 -29zM257 239c36 0 63 -24 63 -75v-100h-55v94c0 22 -8 37 -28 37c-15 0 -24 -10 -28 -20c-2 -4 -2 -9 -2 -14v-97h-55v171h55v-24c8 11 21 28 50 28z +M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM350 32c1 0 2 1 2 2v316c0 1 -1 2 -2 2h-316s-2 -1 -2 -2v-315s1 -3 3 -3h315z" /> + <glyph glyph-name="ion-social-linkedin" unicode="&#xf239;" horiz-adv-x="384" +d="M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM119 64v171h-55v-171h55zM93 261c18 0 30 13 30 29c0 17 -11 30 -29 30s-30 -13 -30 -30c0 -16 11 -29 29 -29v0zM320 64v100c0 51 -27 75 -63 75 +c-29 0 -42 -17 -50 -28v24h-55v-171h55v97c0 5 0 10 2 14c4 10 13 20 28 20c20 0 28 -15 28 -37v-94h55z" /> + <glyph glyph-name="ion-social-pinterest-outline" unicode="&#xf2b0;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136c14 -14 31 -25 48 -34c1 6 2 10 3 16c4 18 29 122 29 122 +s-8 15 -8 36c0 33 20 58 44 58c20 0 30 -16 30 -34c0 -20 -13 -51 -20 -79c-6 -24 12 -43 35 -43c42 0 71 54 71 119c0 49 -33 85 -93 85c-68 0 -110 -50 -110 -107c0 -20 6 -33 15 -44c4 -5 5 -6 3 -12c-1 -4 -4 -14 -5 -18c-2 -6 -6 -8 -11 -6c-31 13 -46 48 -46 86 +c0 64 54 140 160 140c86 0 142 -63 142 -129c0 -88 -49 -153 -121 -153c-24 0 -47 13 -55 28c0 0 -12 -52 -15 -62c-2 -6 -4 -13 -7 -19c15 -4 31 -6 47 -6c51 0 100 20 136 56z" /> + <glyph glyph-name="ion-social-pinterest" unicode="&#xf2b1;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-22 0 -44 3 -64 9c8 14 18 31 23 48c3 10 16 62 16 62c8 -15 30 -28 54 -28c72 0 121 65 121 153c0 66 -56 129 -142 129c-106 0 -160 -76 -160 -140c0 -39 15 -73 46 -86c5 -2 10 0 12 6c1 4 3 14 4 18 +c2 6 1 7 -3 12c-9 11 -15 24 -15 44c0 57 42 107 110 107c60 0 94 -36 94 -85c0 -65 -29 -119 -71 -119c-24 0 -42 19 -36 43c7 28 20 59 20 79c0 18 -10 34 -30 34c-24 0 -43 -25 -43 -58c0 -21 7 -36 7 -36s-25 -104 -29 -122c-4 -17 -5 -35 -4 -51 +c-79 35 -134 113 -134 205c0 124 100 224 224 224z" /> + <glyph glyph-name="ion-social-reddit-outline" unicode="&#xf23a;" horiz-adv-x="449" +d="M259 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM127 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM449 197c0 -20 -9 -36 -27 -45c1 -5 1 -9 1 -14c0 -38 -19 -71 -58 -98s-85 -40 -140 -40s-102 13 -141 40 +s-58 59 -58 97c0 5 0 10 1 15c-18 9 -27 24 -27 45c0 14 5 25 15 35s21 15 35 15c13 0 24 -4 33 -13c36 25 79 39 129 41h7l29 98l86 -17c8 19 21 28 41 28c12 0 22 -4 31 -13s13 -20 13 -32s-4 -23 -13 -32s-19 -13 -31 -13s-23 4 -32 13s-13 19 -13 31l-69 14l-24 -77 +c50 -2 94 -16 129 -41c10 9 21 13 34 13c9 0 16 -3 24 -7s14 -10 18 -18s7 -16 7 -25zM375 366c-4 0 -8 -1 -11 -2s-6 -4 -8 -6s-5 -6 -6 -9s-2 -6 -2 -10c0 -8 3 -14 8 -19s12 -8 19 -8c5 0 9 1 13 3s8 6 10 10s4 9 4 14c0 8 -3 14 -8 19s-12 8 -19 8zM18 197 +c0 -11 5 -20 14 -27c7 19 19 37 37 53c-6 4 -12 6 -19 6c-3 0 -7 0 -10 -1s-6 -3 -9 -5s-5 -4 -7 -7s-4 -6 -5 -9s-1 -6 -1 -10zM355 55c34 23 50 51 50 83v9c-1 6 -3 12 -5 18c-6 16 -15 30 -30 43c-5 4 -10 9 -15 12v0c-36 25 -79 37 -130 37s-95 -12 -131 -37v0 +c-5 -3 -10 -8 -15 -12c-15 -13 -24 -27 -30 -43c-2 -6 -4 -12 -5 -18v-9c0 -32 16 -60 50 -83c36 -25 80 -37 131 -37s94 12 130 37zM417 170c9 6 14 16 14 27c0 9 -3 17 -9 23s-13 9 -22 9c-7 0 -14 -2 -20 -6c18 -16 30 -34 37 -53zM289 90l13 -12 +c-20 -20 -45 -30 -77 -30s-58 10 -78 30l13 12c16 -16 38 -24 65 -24s48 8 64 24z" /> + <glyph glyph-name="ion-social-reddit" unicode="&#xf23b;" horiz-adv-x="449" +d="M449 197c0 -20 -11 -37 -27 -45c1 -5 1 -9 1 -14c0 -76 -89 -138 -199 -138s-198 61 -198 137c0 5 0 10 1 15c-16 8 -27 25 -27 45c0 28 23 50 50 50c13 0 24 -5 33 -13c33 23 79 39 129 41h2l31 103l90 -18c8 14 22 24 39 24v0h1c25 0 44 -20 44 -45s-19 -45 -44 -45h-1 +v0c-23 0 -42 17 -44 40l-67 14l-22 -74c49 -3 93 -17 125 -40c9 8 21 13 34 13c27 0 49 -22 49 -50zM34 177c5 15 15 29 29 41c-4 3 -9 5 -15 5c-14 0 -25 -11 -25 -25c0 -9 4 -17 11 -21zM358 339c0 -9 7 -17 16 -17s17 8 17 17s-8 17 -17 17s-16 -8 -16 -17zM127 160 +c0 -18 14 -32 32 -32s32 14 32 32s-14 31 -32 31s-32 -13 -32 -31zM224 48c48 0 77 29 78 30l-13 12s-25 -24 -65 -24c-41 0 -64 24 -64 24l-13 -12c1 -1 29 -30 77 -30zM291 128c18 0 32 14 32 32s-14 31 -32 31s-32 -13 -32 -31s14 -32 32 -32zM415 176c7 5 11 13 11 22 +c0 14 -11 25 -25 25c-6 0 -11 -2 -15 -5c14 -12 24 -27 29 -42z" /> + <glyph glyph-name="ion-social-rss-outline" unicode="&#xf23c;" horiz-adv-x="384" +d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM56 16c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM240 16c-2 26 -8 52 -19 77 +c-12 28 -30 54 -52 76s-48 40 -76 52c-25 10 -51 16 -77 18v-47c50 -3 92 -22 123 -53s50 -73 53 -123h48zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80zM227 228c56 -56 89 -131 93 -212h48c-8 190 -162 344 -352 352v-48c81 -4 155 -36 211 -92z" /> + <glyph glyph-name="ion-social-rss" unicode="&#xf23d;" horiz-adv-x="384" +d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80z" /> + <glyph glyph-name="ion-social-skype-outline" unicode="&#xf23e;" horiz-adv-x="384" +d="M106 352c-41 0 -74 -33 -74 -73c0 -13 4 -25 10 -36l6 -11l-2 -12c-2 -10 -3 -20 -3 -30c0 -40 16 -77 44 -105s67 -44 107 -44c9 0 19 1 28 3l11 2l9 -5c11 -6 24 -9 36 -9c41 0 74 33 74 73c0 11 -3 22 -8 32l-5 10l3 11c2 10 3 21 3 32c0 40 -16 77 -44 105 +s-67 43 -107 43c-9 0 -18 0 -26 -2l-12 -2l-10 7c-12 7 -26 11 -40 11zM106 384v0c21 0 40 -6 56 -16c10 2 21 2 32 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3 +c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105zM288 104c-8 -12 -21 -21 -37 -28s-36 -10 -58 -10c-26 0 -48 5 -65 14c-12 7 -22 15 -30 26s-12 22 -12 33c0 7 3 12 8 17s11 7 19 7c6 0 12 -2 16 -6s7 -8 10 -15s7 -13 11 -18 +s8 -9 15 -12s16 -5 27 -5c15 0 28 4 37 10s13 13 13 22c0 7 -2 13 -7 17c-5 5 -11 9 -19 11c-8 3 -20 5 -34 8c-19 4 -35 9 -48 14c-13 6 -24 13 -32 23s-11 22 -11 36s4 25 12 36c8 10 20 19 36 25c15 6 34 8 54 8c16 0 30 -1 42 -5s23 -9 31 -15s14 -13 18 -20 +s5 -14 5 -21c0 -6 -2 -12 -7 -17s-11 -8 -19 -8c-7 0 -12 2 -16 5c-3 3 -7 7 -11 14c-5 8 -10 15 -16 20s-17 8 -31 8c-13 0 -23 -3 -31 -8s-12 -11 -12 -18c0 -4 2 -7 4 -10c3 -3 6 -6 11 -8s10 -5 15 -6s13 -3 25 -6c15 -3 28 -6 40 -10s23 -8 32 -14s15 -13 20 -22 +s8 -20 8 -32c0 -15 -5 -28 -13 -40z" /> + <glyph glyph-name="ion-social-skype" unicode="&#xf23f;" horiz-adv-x="384" +d="M373 151c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105c21 0 41 -6 57 -16c10 2 20 2 31 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39z +M288 104c9 12 12 25 12 40c0 12 -2 23 -7 32s-12 16 -21 22s-19 10 -31 14s-26 7 -41 10c-12 3 -20 5 -25 6s-10 4 -15 6s-7 5 -10 8c-2 3 -4 6 -4 10c0 7 3 13 11 18s19 7 32 7c14 0 25 -2 31 -7s11 -12 16 -20c4 -7 8 -11 11 -14c4 -3 9 -5 16 -5c8 0 13 3 18 8s8 11 8 17 +c0 7 -2 14 -6 21s-10 14 -18 20s-18 11 -30 15s-27 5 -43 5c-20 0 -38 -2 -53 -8c-16 -6 -28 -15 -36 -25c-8 -11 -12 -22 -12 -36s3 -26 11 -36s19 -17 32 -23c13 -5 29 -10 48 -14c14 -3 26 -5 34 -8c8 -2 14 -6 19 -11c5 -4 7 -10 7 -17c0 -9 -4 -17 -13 -23 +s-22 -9 -37 -9c-11 0 -20 2 -27 5s-11 6 -15 11s-8 12 -11 19s-6 11 -10 15s-10 6 -16 6c-8 0 -14 -2 -19 -7s-8 -10 -8 -17c0 -11 4 -22 12 -33s18 -19 30 -26c17 -9 39 -14 65 -14c22 0 42 3 58 10s29 16 37 28z" /> + <glyph glyph-name="ion-social-tumblr-outline" unicode="&#xf240;" horiz-adv-x="256" +d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 +c9 -6 19 -8 31 -8zM240 17v29c-15 -6 -31 -10 -47 -10c-15 0 -28 3 -40 10c-10 6 -17 15 -21 25c-2 6 -4 17 -4 52v117h96v32h-96v112h-32c-2 -16 -7 -36 -14 -50c-8 -16 -17 -29 -30 -40c-11 -9 -23 -17 -36 -23v-31h48v-156c0 -21 2 -32 4 -38c3 -8 10 -15 18 -22 +c9 -8 19 -14 31 -18c13 -4 29 -6 46 -6c16 0 28 2 41 5c11 2 23 6 36 12z" /> + <glyph glyph-name="ion-social-tumblr" unicode="&#xf241;" horiz-adv-x="256" +d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 +c9 -6 19 -8 31 -8z" /> + <glyph glyph-name="ion-social-tux" unicode="&#xf2c5;" horiz-adv-x="384" +d="M191 347c2 2 3 4 5 5c-3 -2 -5 -4 -7 -8c0 1 1 2 2 3zM362 52c7 -4 22 -10 22 -20s-16 -16 -42 -30s-33 -34 -61 -34s-26 17 -37 20s-35 3 -48 3s-33 -1 -42 -4s-23 -19 -38 -19s-26 9 -56 16s-60 7 -60 23s11 17 7 31s-7 25 -4 30s10 4 19 5s19 2 22 11c1 5 -2 17 5 25 +c-4 16 -2 27 10 44c17 23 14 38 23 53s32 36 37 45c9 16 9 22 8 55s-2 50 -2 50c0 33 20 60 58 60h14c38 0 64 -32 65 -69c0 -19 -6 -38 4 -67c0 0 12 -20 22 -33s37 -43 45 -68s13 -56 12 -66c-1 -6 -1 -9 -3 -11c3 -1 6 -2 8 -5c3 -4 2 -11 0 -26c-1 -8 5 -15 12 -19z +M138 -3c1 13 -4 21 -17 43s-32 58 -46 65c0 0 -4 2 -8 2s-12 3 -15 -7c-2 -7 0 -19 -2 -22c-2 -4 -9 -9 -14 -10s-22 -1 -25 -5s1 -12 5 -24s-6 -18 -7 -23s-2 -12 7 -15s33 -7 46 -9c15 -3 38 -14 51 -15c12 -1 24 7 25 20zM254 62c-2 10 -5 28 1 35c4 5 10 6 17 5 +c0 4 1 9 3 12c1 2 3 3 7 5s7 3 12 3c20 -1 24 -12 20 -6c-3 4 -9 9 -14 10c0 0 4 12 2 34c-4 40 -33 62 -33 62c27 -30 28 -58 28 -72c0 -6 -2 -18 -5 -24c-4 -1 -7 -2 -11 -4c-10 -5 -8 2 -8 10c0 10 2 20 -5 49c-5 22 -17 28 -18 33s-1 14 -9 30s-18 18 -15 34s5 22 -8 25 +s-23 8 -24 13v10c0 2 1 5 2 7l3 3c2 2 5 4 9 4c8 0 14 -6 14 -14c0 -3 -1 -7 -3 -10s-2 -3 -3 -4c-2 -2 3 -4 7 -4c3 0 5 1 7 10c1 3 1 8 1 13v0c0 14 -11 25 -23 25c-4 0 -8 -2 -12 -4c-2 -1 -4 -4 -6 -6c-1 -1 -1 -2 -1 -3h-1c-2 -4 -2 -8 -2 -12c0 -5 -1 -9 0 -13 +c0 -2 1 -3 0 -3c-2 0 -6 5 -10 5c-6 0 -10 -2 -10 -2s1 15 -3 23c-4 9 -18 16 -24 4s-2 -25 1 -31l3 -6c2 1 5 4 5 4s-6 3 -7 11c-1 9 3 14 7 15s10 -2 12 -8s1 -13 1 -13s-9 -8 -13 -11s-12 -8 -12 -11s0 -5 2 -7c3 -4 9 -8 13 -10s7 -4 15 -4s14 3 29 8c22 7 19 12 23 12 +s6 -3 4 -6s-6 -2 -22 -9s-22 -9 -28 -10s-12 -5 -27 9c-1 1 10 -17 17 -20s20 2 30 7s15 10 21 11s9 -2 5 -5s-16 -8 -23 -13s-19 -15 -27 -16s-21 16 -25 22c-5 8 -7 11 -5 -12c0 0 -6 -8 -10 -15s-6 -13 -7 -19c-1 -5 -1 -10 -1 -12s-12 -14 -18 -41s2 -58 -8 -55 +c-6 2 -16 14 -16 27s1 17 2 20c1 4 -4 -8 -4 -21s2 -17 7 -23c3 -4 45 -32 56 -42s10 -20 7 -27s-10 -11 -10 -11s5 -10 9 -19s2 -22 2 -22s4 1 4 9s-4 16 -5 19c0 0 17 -12 38 -10c25 2 41 12 54 22c18 13 13 23 15 4c2 -17 -12 -27 -10 -34c4 8 11 12 13 24s0 26 -2 36z +M157 323c0 -1 -1 -2 -1 -3v0c2 0 3 5 2 8c-1 4 -3 6 -4 6h-2c3 -2 5 -6 5 -11zM211 335c3 -2 6 -5 6 -10v-3v0c2 0 3 4 2 7s-3 6 -5 6h-3zM348 15c24 11 36 17 21 26c-17 10 -27 13 -27 29c0 5 4 16 2 22c-1 4 -6 5 -9 5l-1 -1c-7 -6 -13 -24 -33 -24s-27 19 -28 24 +c-4 2 -9 1 -12 -4c-4 -7 -3 -12 1 -36c6 -31 -5 -54 1 -64s18 -18 33 -10s28 23 52 33z" /> + <glyph glyph-name="ion-social-twitter-outline" unicode="&#xf242;" horiz-adv-x="472" +d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 +c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15zM414 301c3 2 8 6 11 8c-2 0 -11 -2 -19 -1s-21 5 -21 5s14 13 18 17l11 11c-4 -1 -10 -2 -14 -3l-8 -2l-6 6 +c-15 16 -37 26 -59 26c-45 0 -81 -37 -81 -81c0 -6 1 -12 2 -18l5 -21l-22 1c-42 2 -81 13 -118 32c-28 14 -53 34 -75 56c-1 -6 -2 -13 -2 -19c0 -27 14 -53 36 -68c0 0 33 -23 46 -29c-24 -2 -56 0 -56 0c-8 0 -16 1 -24 3c8 -28 32 -50 62 -56l61 -10l-61 -21 +c-7 -2 -14 -3 -21 -3c15 -20 38 -34 64 -34l45 -1l-35 -28c-18 -14 -38 -25 -60 -33c-10 -3 -19 -6 -29 -8c27 -9 55 -14 84 -14c40 0 78 8 112 24c31 14 58 34 81 60c22 24 38 53 50 84c11 30 17 62 17 92v12l-1 8z" /> + <glyph glyph-name="ion-social-twitter" unicode="&#xf243;" horiz-adv-x="472" +d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 +c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15z" /> + <glyph glyph-name="ion-social-usd-outline" unicode="&#xf352;" horiz-adv-x="320" +d="M125 345c11 2 19 3 19 3v-131l-22 6c-15 5 -27 11 -36 19c-12 10 -19 25 -19 43c0 13 4 24 11 33c6 8 13 14 22 19c7 4 17 6 25 8zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM252 151 +c10 -10 15 -24 15 -42c0 -9 -1 -18 -5 -27s-11 -17 -20 -24c-8 -6 -18 -11 -31 -15c-6 -2 -11 -3 -17 -4s-18 -1 -18 -1v145l20 -5c10 -3 19 -6 28 -9c10 -4 20 -10 28 -18zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14s-16 5 -26 8v-107c6 1 10 2 14 3 +c11 3 20 8 27 13s11 11 14 18zM315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23 +s20 -11 31 -14v120c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46 +c-7 4 -13 8 -22 10v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM293 72c7 12 11 27 11 44c0 8 -1 16 -4 24s-7 15 -12 22s-12 13 -20 19c-8 5 -18 10 -29 13c-5 1 -13 3 -24 6h-1l-4 1c-7 2 -13 4 -21 6l-13 3v137 +s9 -1 19 -4s19 -6 28 -12c15 -9 25 -24 30 -43h38c-2 8 -4 15 -8 22c-7 13 -16 24 -28 32c-12 9 -27 16 -43 20c-8 2 -16 4 -23 5l-13 2v31h-32v-31l-14 -2c-7 -1 -14 -2 -20 -4c-15 -4 -29 -10 -41 -18s-21 -16 -28 -28c-7 -11 -10 -24 -10 -40c0 -8 1 -15 3 -23 +c2 -7 6 -14 11 -21s14 -13 23 -19c10 -6 22 -10 37 -14v0v0c4 -1 8 -2 11 -3c5 -1 11 -3 16 -4l12 -3v-151s-8 1 -20 4s-26 8 -36 15c-11 8 -20 18 -26 30c-4 7 -6 16 -8 24h-36c2 -11 5 -23 10 -32c8 -14 17 -26 30 -35c13 -10 28 -16 46 -21c8 -2 17 -4 26 -5l14 -2v-33 +h32v33l15 1c9 1 17 3 26 5c17 4 32 10 45 18s23 19 31 31z" /> + <glyph glyph-name="ion-social-usd" unicode="&#xf353;" horiz-adv-x="320" +d="M315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23s20 -11 31 -14v120 +c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46c-7 4 -13 8 -22 10 +v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14 +s-16 5 -26 8v-107c6 1 10 2 14 3c11 3 20 8 27 13s11 11 14 18z" /> + <glyph glyph-name="ion-social-vimeo-outline" unicode="&#xf244;" +d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-10 -4 -19 -5 -27 -5c-17 0 -31 9 -44 27c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-2 2 -5 3 -8 3s-6 -1 -9 -3 +c-10 -6 -28 -18 -28 -18l-21 27c26 24 82 71 82 71c11 9 33 25 48 27h8c18 0 32 -7 42 -22c11 -17 15 -37 18 -57c7 -41 12 -82 24 -122c3 -10 7 -20 12 -29c4 -7 9 -10 14 -10c4 0 7 2 11 5s7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26h-7 +c-11 0 -20 -2 -32 -7c6 24 24 62 54 84c20 14 45 20 67 20c10 0 20 -2 27 -4c23 -8 36 -23 41 -46zM418 244c13 30 17 59 11 87c-4 19 -13 28 -30 34c-6 2 -14 3 -22 3c-21 0 -42 -6 -57 -17c-16 -12 -29 -30 -38 -48h6h8c23 -1 39 -19 40 -41c0 -10 0 -22 -4 -34 +c-11 -29 -29 -58 -51 -85c-4 -4 -7 -9 -12 -13c-7 -6 -15 -8 -22 -8c-8 0 -18 3 -27 18c-7 11 -11 22 -14 32c-10 31 -14 64 -19 95c-2 10 -3 19 -5 29c-3 17 -6 36 -16 51c-7 10 -16 15 -28 15h-6c-8 -1 -25 -11 -40 -23c-2 -2 -43 -37 -70 -61l2 -3c5 4 12 7 16 10 +c6 3 12 5 18 5c7 0 13 -3 18 -7c8 -7 13 -12 16 -18c6 -11 12 -24 16 -37c13 -44 26 -88 38 -133c5 -19 13 -41 26 -59s23 -20 31 -20c6 0 13 1 21 4c23 8 43 25 61 41c32 29 57 63 83 99v0c21 28 37 55 50 84z" /> + <glyph glyph-name="ion-social-vimeo" unicode="&#xf245;" +d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-31 -11 -52 -5 -71 22c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-5 4 -11 3 -17 0c-10 -6 -28 -18 -28 -18l-21 27 +c26 24 82 71 82 71c11 9 33 25 48 27c21 3 38 -4 50 -22c11 -17 15 -37 18 -57c7 -41 11 -82 23 -122c3 -10 8 -20 13 -29c7 -11 15 -13 25 -5c4 3 7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26s-24 -1 -39 -7c6 24 24 62 54 84c29 21 71 24 94 16 +s36 -23 41 -46z" /> + <glyph glyph-name="ion-social-windows-outline" unicode="&#xf246;" +d="M432 167h-216v-149l216 -32v181zM448 183v0v-215l-248 36v179h248zM168 167h-152v-120l152 -22v142zM184 183v0v-177l-184 27v150h184zM432 398v0l-216 -31v-152h216v183zM448 416v0v-217h-248v182zM168 360v0l-152 -22v-123h152v145zM184 378v0v-179h-184v153z" /> + <glyph glyph-name="ion-social-windows" unicode="&#xf247;" +d="M448 183v0v-215l-248 36v179h248zM184 183v0v-177l-184 27v150h184zM448 416v0v-217h-248v182zM184 378v0v-179h-184v153z" /> + <glyph glyph-name="ion-social-wordpress-outline" unicode="&#xf248;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192c0 -9 -1 -18 -2 -26c-12 -85 -79 -153 -165 -164c-8 -1 -17 -2 -25 -2c-106 0 -192 86 -192 192s86 192 192 192zM19 192c0 -68 40 -127 98 -155l-83 225c-10 -21 -15 -45 -15 -70zM214 21c12 2 24 4 35 8c0 1 -1 2 -1 3l-53 145l-33 -96 +v0l-19 -55c15 -5 32 -7 49 -7c8 0 15 1 22 2zM216 273l62 -186l17 58c9 22 13 41 13 56c0 21 -7 35 -14 47c-9 14 -17 27 -17 41c0 16 12 30 29 30h2c-31 28 -71 45 -116 45c-60 0 -113 -30 -144 -77c4 0 8 -1 11 -1c18 0 46 3 46 3c9 1 10 -14 1 -15c0 0 -10 -1 -20 -1 +l63 -187l38 113l-27 74c-9 0 -18 1 -18 1c-9 0 -8 16 1 15c0 0 28 -3 45 -3c18 0 46 3 46 3c9 1 11 -14 2 -15c0 0 -10 -1 -20 -1zM279 43c45 26 77 71 84 125c1 8 2 16 2 24c0 30 -8 58 -22 83c1 -6 1 -12 1 -18c0 -18 -3 -37 -13 -62l-39 -113z" /> + <glyph glyph-name="ion-social-wordpress" unicode="&#xf249;" horiz-adv-x="384" +d="M195 177l53 -146c0 -1 6 -13 9 -19c-3 -1 -5 -2 -8 -3v0c-10 -3 -21 -6 -32 -7c-8 -1 -17 -2 -25 -2c-17 0 -34 2 -50 6v0c-2 0 -3 2 -5 2l25 73v0zM17 268c6 0 7 -1 15 -1l93 -255c-3 1 -5 2 -8 3c-63 27 -109 87 -116 158c-1 6 -1 13 -1 19c0 25 7 53 17 76zM366 273 +c11 -24 18 -52 18 -81c0 -9 -1 -18 -2 -26c-9 -65 -50 -120 -107 -147c-2 -1 -3 -1 -5 -2l22 65l39 113c10 25 13 45 13 62v19v0c-1 18 -10 44 -36 43h-2c-17 0 -29 -14 -29 -30c0 -14 8 -27 17 -41c7 -12 14 -26 14 -47c0 -15 -4 -34 -13 -56l-17 -58l-62 186 +c10 0 20 1 20 1c9 1 7 16 -2 15c0 0 -28 -3 -46 -3c-17 0 -45 3 -45 3c-9 1 -10 -15 -1 -15c0 0 9 -1 18 -1l27 -74l-38 -113l-63 187c10 0 20 2 20 2c9 1 8 15 -1 14c0 0 -28 -2 -46 -2h-34c5 9 11 17 17 25c35 44 90 72 150 72c24 0 48 -5 69 -13c34 -13 63 -36 85 -65 +c2 -2 3 -5 5 -7c6 -8 11 -17 15 -26z" /> + <glyph glyph-name="ion-social-yahoo-outline" unicode="&#xf24a;" horiz-adv-x="320" +d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4zM178 180l111 184h-1c-7 0 -15 0 -24 2l-90 -150l-14 -23l-14 23l-89 150c-9 -2 -17 -2 -25 -2h-1l111 -184l2 -4 +v-5v-151c6 1 11 0 16 0s11 1 16 0v151v5z" /> + <glyph glyph-name="ion-social-yahoo" unicode="&#xf24b;" horiz-adv-x="320" +d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4z" /> + <glyph glyph-name="ion-social-youtube-outline" unicode="&#xf24c;" horiz-adv-x="512" +d="M265 352v0h-9h-9c-65 0 -118 -2 -168 -4h-1h-1c-23 0 -42 -22 -42 -49v-1v-1c-2 -34 -3 -70 -3 -105v0v0c0 -35 1 -70 3 -104v-2v-1c0 -14 5 -26 14 -36c8 -9 17 -13 28 -13h1h1c52 -2 108 -4 166 -4h11v0v0h11c58 0 113 2 166 4h1h1c11 0 20 4 28 13c9 10 14 22 14 36v1 +v2c2 34 3 68 3 104v0v0c0 36 -1 71 -3 105v1v2c0 27 -19 49 -42 49h-1h-1c-49 2 -103 3 -168 3zM265 384v0c58 0 115 0 170 -3c41 0 74 -36 74 -81c2 -36 3 -72 3 -108s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-55 -3 -111 -4 -168 -4h-11h-11c-57 0 -113 1 -168 4 +c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 82 73 82c55 2 112 3 170 3h9h9zM207 94v197l145 -99z" /> + <glyph glyph-name="ion-social-youtube" unicode="&#xf24d;" horiz-adv-x="512" +d="M509 299c2 -36 3 -71 3 -107s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-58 -3 -118 -4 -179 -4s-121 1 -179 4c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 81 73 81c55 3 112 4 170 4h9h9c58 0 115 -1 170 -4c41 0 74 -36 74 -81zM207 94l145 98l-145 99 +v-197z" /> + <glyph glyph-name="ion-speakerphone" unicode="&#xf2b2;" +d="M39 266c0 -37 20 -69 50 -86c-1 0 -2 1 -3 1s-4 1 -5 1v0c-35 3 -62 33 -69 69c-6 0 -12 7 -12 16c0 8 5 15 11 16c6 42 40 75 81 75h8c-36 -15 -61 -51 -61 -92zM433 357c10 -25 15 -56 15 -88s-5 -63 -15 -88l-3 -9c-6 -14 -15 -26 -24 -34c-10 -10 -22 -19 -34 -20h-3 +c-7 0 -15 2 -22 5c-3 2 -10 5 -10 5c-22 10 -84 28 -115 29c-4 -8 -10 -20 -12 -30c-2 -9 -6 -27 -7 -61c-1 -32 1 -59 3 -82c0 -2 1 -5 1 -7c0 -6 -2 -9 -9 -9h-77c-6 0 -9 3 -9 6v7c2 72 25 140 26 145c2 9 5 17 7 30c2 12 -27 13 -40 24c-29 17 -47 49 -47 86 +c0 41 25 77 59 92h42h19c58 3 114 21 163 50c1 1 3 1 4 2v0c8 4 16 6 24 6c13 0 26 -6 37 -16c9 -9 18 -21 24 -35c1 -3 2 -5 3 -8zM410 180c9 22 15 54 15 89s-6 66 -15 88c-8 18 -19 29 -30 29s-21 -11 -29 -29c-9 -22 -15 -53 -15 -88s6 -67 15 -89c8 -19 18 -33 29 -33 +s22 15 30 33z" /> + <glyph glyph-name="ion-speedometer" unicode="&#xf2b3;" +d="M312 192l8 -8l-64 -84v-4c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32h4zM224 352c124 0 224 -100 224 -224c0 -34 -8 -67 -22 -96h-36c15 27 25 57 26 88h-32v16h32c-1 29 -9 56 -22 81l-27 -15l-8 13l27 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8 +l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -8 -23 -16 -33 -26s-19 -21 -26 -33l28 -16l-8 -13l-28 15c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -31 11 -61 26 -88h-36c-14 29 -22 62 -22 96c0 124 100 224 224 224z" /> + <glyph glyph-name="ion-spoon" unicode="&#xf2b4;" horiz-adv-x="128" +d="M128 288c0 64 -26 128 -64 128s-64 -64 -64 -128v0c1 -25 16 -54 37 -64l1 -1v0c3 -2 10 -6 10 -10c0 0 -16 -199 -16 -210s4 -20 10 -26s14 -9 22 -9v0v0c8 0 16 3 22 9s10 13 10 26s-16 210 -16 210c0 4 7 8 10 10l1 1c22 10 37 38 37 64z" /> + <glyph glyph-name="ion-star" unicode="&#xf24e;" horiz-adv-x="384" +d="M384 240l-119 -89l47 -151l-120 96l-120 -96l47 151l-119 89h147l45 144l45 -144h147z" /> + <glyph glyph-name="ion-stats-bars" unicode="&#xf2b5;" horiz-adv-x="352" +d="M96 32v320h64v-320h-64zM0 32v96h64v-96h-64zM192 32v160h64v-160h-64zM288 32v224h64v-224h-64z" /> + <glyph glyph-name="ion-steam" unicode="&#xf30b;" horiz-adv-x="512" +d="M480 240c0 -20 -16 -37 -37 -37c-20 0 -37 16 -37 37c0 20 16 37 37 37c20 0 37 -17 37 -37zM443 309c38 0 69 -31 69 -69s-31 -70 -69 -70l-67 -48c-2 -26 -24 -47 -51 -47c-25 0 -46 18 -51 41l-196 78c-8 -5 -16 -7 -26 -7c-28 0 -52 24 -52 52s24 52 52 52 +c25 0 45 -18 50 -41l196 -79c8 5 17 8 27 8c2 0 3 -1 5 -1l43 62c0 38 32 69 70 69zM443 286c-26 0 -47 -20 -47 -46s21 -47 47 -47s46 21 46 47s-20 46 -46 46zM52 277c-21 0 -38 -17 -38 -38s17 -38 38 -38c3 0 5 0 8 1l-16 6v0c-15 7 -22 24 -16 39s24 23 39 17v0l19 -7 +c-6 12 -19 20 -34 20zM325 165c-3 0 -6 -1 -9 -1l16 -6c16 -6 23 -24 17 -40s-23 -23 -39 -17c-6 3 -13 6 -19 8c6 -12 19 -20 34 -20c21 0 38 17 38 38s-17 38 -38 38z" /> + <glyph glyph-name="ion-stop" unicode="&#xf24f;" horiz-adv-x="384" +d="M373 384c6 0 11 -5 11 -11v-362c0 -6 -5 -11 -11 -11h-362c-6 0 -11 5 -11 11v362c0 6 5 11 11 11h362z" /> + <glyph glyph-name="ion-thermometer" unicode="&#xf2b6;" horiz-adv-x="160" +d="M127 112c20 -14 33 -38 33 -64c0 -44 -36 -80 -80 -80s-80 36 -80 80c0 27 13 51 33 65v257c0 26 21 46 47 46s47 -20 47 -46v-258zM65 370v-50h30v50c0 8 -7 14 -15 14s-15 -6 -15 -14zM96 160v16h-16v-16h16zM96 192v64h-16v-64h16z" /> + <glyph glyph-name="ion-thumbsdown" unicode="&#xf250;" horiz-adv-x="384" +d="M24 195c-10 5 -18 17 -18 29c0 14 8 25 20 30c-4 5 -6 12 -6 19c0 14 8 25 20 30c-3 5 -5 11 -5 17c0 18 11 24 35 30s74 12 126 9c23 -1 55 -7 76 -7v32h112v-240h-112v16c-15 -1 -31 -4 -40 -14c-22 -23 -40 -65 -40 -108c0 -19 1 -29 -4 -34c-13 -13 -44 9 -52 37 +c-9 34 -1 62 1 87h-103c-19 0 -34 15 -34 34c0 15 10 29 24 33zM336 352c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> + <glyph glyph-name="ion-thumbsup" unicode="&#xf251;" horiz-adv-x="384" +d="M360 189c10 -5 18 -17 18 -29c0 -14 -8 -25 -20 -30c4 -5 6 -12 6 -19c0 -14 -8 -25 -20 -30c3 -5 5 -11 5 -17c0 -18 -11 -24 -35 -30s-74 -12 -126 -9c-23 1 -55 7 -76 7v-32h-112v240h112v-16c15 1 31 4 40 14c22 23 40 65 40 108c0 19 -1 29 4 34c13 13 44 -9 52 -37 +c9 -34 1 -62 -1 -87h103c19 0 34 -15 34 -34c0 -15 -10 -29 -24 -33zM48 32c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-toggle-filled" unicode="&#xf354;" +d="M320 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM320 320c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM320 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> + <glyph glyph-name="ion-toggle" unicode="&#xf355;" +d="M320 288h-192c-53 0 -96 -43 -96 -96s43 -96 96 -96h192c53 0 96 43 96 96s-43 96 -96 96zM320 320v0c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM128 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48 +s-22 48 -48 48zM128 272v0c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80z" /> + <glyph glyph-name="ion-trash-a" unicode="&#xf252;" horiz-adv-x="352" +d="M261 320v0h91v-32h-9s-5 -1 -8 -4s-4 -9 -4 -9l-19 -241c-2 -29 -2 -34 -36 -34h-200c-34 0 -34 5 -36 34l-19 242s-1 6 -4 9s-8 3 -8 3h-9v32h91v29c0 19 14 35 34 35h101c20 0 35 -16 35 -35v-29zM112 349v-29h128v29c0 10 -9 15 -19 15h-91c-10 0 -18 -5 -18 -15z +M104 64h20l-10 192h-21zM187 64v192h-22v-192h22zM249 64l10 192h-20l-11 -192h21z" /> + <glyph glyph-name="ion-trash-b" unicode="&#xf253;" horiz-adv-x="320" +d="M318 315c3 -12 4 -11 -7 -11h-302c-11 0 -10 -1 -7 11c2 9 4 13 4 13c3 9 9 9 19 11l53 7c7 1 7 1 10 7c9 20 10 31 20 31h103c10 0 12 -11 21 -31c3 -6 3 -6 10 -7l53 -6c10 -2 16 -2 19 -11c0 0 2 -5 4 -14zM283 272c17 0 18 -2 17 -15l-19 -242c-2 -12 -2 -15 -17 -15 +h-208c-15 0 -15 3 -17 15l-19 242c-1 12 0 15 17 15h246z" /> + <glyph glyph-name="ion-trophy" unicode="&#xf356;" +d="M448 345c0 -25 2 -73 -22 -122c-15 -30 -36 -55 -63 -75c-23 -16 -49 -28 -77 -35c-16 -17 -32 -27 -46 -31v-33s0 -49 99 -49h13v-32h-256v32h13c85 0 97 35 99 46v36c-14 4 -30 14 -46 31c-28 7 -55 19 -77 35c-27 20 -48 45 -63 75c-17 36 -21 71 -22 97v0v11v0v21v0 +h80c-2 35 0 64 0 64h143h1h1h142s2 -29 0 -64h81v-7zM51 237c17 -34 43 -61 77 -78c-22 40 -33 84 -42 135c-1 8 -2 17 -3 26h-51c1 -23 5 -53 19 -83zM397 237c14 30 18 60 19 83h-51c-1 -9 -3 -18 -4 -26c-9 -51 -20 -95 -42 -135c34 17 61 43 78 78z" /> + <glyph glyph-name="ion-umbrella" unicode="&#xf2b7;" +d="M344 160v0v0v0zM104 160v0v0v0zM240 399c116 -8 208 -109 208 -227v-12c-4 25 -26 52 -52 52c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52s-49 -12 -52 -45v-135c0 -17 -6 -33 -18 -45s-29 -19 -46 -19c-35 0 -63 29 -63 64c0 9 7 16 16 16s16 -7 16 -16 +c0 -18 14 -32 31 -32c18 0 32 14 32 32v134c-1 24 -26 46 -52 46c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52c-27 0 -49 -26 -52 -52v18c0 118 92 213 208 221v1c0 9 7 16 16 16s16 -7 16 -16v-1z" /> + <glyph glyph-name="ion-university" unicode="&#xf357;" +d="M224 384l224 -111l-92 -60l-132 -85l-160 102v-198l-32 16v203l-32 21zM358 192l10 -82l-6 -3c-1 -1 -93 -54 -131 -99l-7 -8l-7 8c-38 45 -130 98 -131 99l-6 3l9 82l135 -88z" /> + <glyph glyph-name="ion-unlocked" unicode="&#xf254;" horiz-adv-x="384" +d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46c20 -21 33 -51 39 -82h-53c-5 18 -13 35 -24 47v0v1c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80v-31h265 +c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340z" /> + <glyph glyph-name="ion-upload" unicode="&#xf255;" +d="M366 215c45 0 82 -37 82 -83s-37 -84 -82 -84h-110v80h48l-80 84l-80 -84h48v-80h-102c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> + <glyph glyph-name="ion-usb" unicode="&#xf2b8;" horiz-adv-x="256" +d="M16 228v0v0zM256 320c0 -11 -6 -21 -14 -27v0c-2 -1 -3 -5 -3 -7c-1 -20 -3 -36 -9 -50c-7 -19 -20 -33 -39 -46c-17 -12 -29 -21 -36 -34c-7 -12 -11 -28 -11 -53v-24c0 -7 2 -13 10 -18c4 -2 7 -6 10 -9c8 -9 14 -21 14 -34c0 -28 -22 -50 -50 -50s-50 22 -50 50v1v0 +c0 18 10 33 24 42c5 4 9 5 9 18v0c0 14 -3 17 -10 27s-18 17 -32 26c-19 13 -33 27 -40 46c-6 15 -8 31 -9 39s-2 9 -4 11c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32c0 -10 -4 -20 -12 -26c-3 -2 -4 -11 -4 -14v0v0c0 -9 3 -18 7 -28c10 -21 45 -44 52 -44 +s8 5 8 12v196s-1 2 -3 4h-1v1v0c-9 6 -15 16 -15 27c0 18 14 32 32 32s32 -14 32 -32c0 -11 -5 -21 -14 -27v0c-2 -2 -2 -3 -2 -5v-140c0 -10 2 -12 8 -11c13 3 48 30 52 43c3 10 6 23 7 41v1c0 2 -2 4 -3 6c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32zM32 240 +c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM128 368c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM224 304c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-videocamera" unicode="&#xf256;" +d="M335 263v-66l113 35v-89v-88l-113 35v-65c0 -5 -4 -9 -9 -9h-317c-5 0 -9 4 -9 9v12v55v171c0 5 4 9 9 9h208v38c0 4 -6 10 -10 10h-176v48h178c36 0 65 -29 65 -64v-32h52c5 0 9 -4 9 -9zM226 107c20 0 36 16 36 36s-16 35 -36 35s-36 -15 -36 -35c0 -10 4 -19 11 -26 +h-68c7 7 11 16 11 26c0 20 -16 36 -36 36s-36 -16 -36 -36s16 -36 36 -36h12h95h11z" /> + <glyph glyph-name="ion-volume-high" unicode="&#xf257;" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 27 52 27 84s-10 60 -27 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146zM365 369l20 15 +c39 -54 63 -120 63 -192s-24 -138 -63 -192l-20 15c36 49 58 111 58 177s-22 128 -58 177z" /> + <glyph glyph-name="ion-volume-low" unicode="&#xf258;" horiz-adv-x="288" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100z" /> + <glyph glyph-name="ion-volume-medium" unicode="&#xf259;" horiz-adv-x="370" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146z" /> + <glyph glyph-name="ion-volume-mute" unicode="&#xf25a;" +d="M224 231l47 51v-180l-47 51h-65v78h65zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-39 0 -76 10 -108 27l-1 1c-69 38 -115 112 -115 196c0 124 100 224 224 224c39 0 75 -10 107 -28h1zM362 93c20 28 33 62 33 99c0 66 -38 123 -92 151 +c-6 3 -11 6 -17 8c-19 7 -40 11 -62 11c-37 0 -71 -12 -99 -32l73 -74h-76l-36 35c-20 -28 -32 -62 -32 -99c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c19 -7 39 -11 61 -11c37 0 72 12 100 32l-20 20v77z" /> + <glyph glyph-name="ion-wand" unicode="&#xf358;" +d="M192 208l48 48l48 -48l-48 -48zM0 16l176 176l48 -48l-176 -176zM224 352v64h32v-64h-32zM398 344l-45 -45l-23 22l46 45zM127 299l-45 45l22 22l45 -45zM376 50l-46 45l23 23l45 -46zM384 192v32h64v-32h-64z" /> + <glyph glyph-name="ion-waterdrop" unicode="&#xf25b;" horiz-adv-x="320" +d="M175 409c40 -41 145 -160 145 -288c0 -85 -72 -153 -160 -153c-56 0 -106 27 -134 69c-6 9 -11 19 -15 29c-7 17 -11 35 -11 55v4c1 67 31 131 64 183c20 31 42 57 59 77c9 10 16 18 22 24l1 1v0c4 3 8 6 14 6c5 0 10 -3 14 -6v0zM160 24c55 0 100 45 100 100 +c0 14 -3 28 -8 40c-17 -65 -70 -116 -136 -130c13 -6 28 -10 44 -10z" /> + <glyph glyph-name="ion-wifi" unicode="&#xf25c;" +d="M224 352c80 0 156 -30 214 -84l10 -10l-10 -9l-32 -32l-10 -10l-9 9c-44 41 -103 64 -163 64s-119 -23 -163 -64l-9 -9l-10 10l-32 32l-10 9l10 10c58 54 134 84 214 84v0zM365 192l11 -10l-10 -10l-33 -32l-9 -9l-10 8c-25 22 -57 35 -90 35s-65 -13 -90 -35l-10 -8 +l-9 9l-33 32l-10 10l11 10c37 33 83 52 132 54v0h9v0v0c52 0 102 -19 141 -54zM224 32l-10 10l-52 52l-11 10l12 10c17 11 32 20 61 20s47 -9 62 -20l11 -10l-10 -10l-53 -52z" /> + <glyph glyph-name="ion-wineglass" unicode="&#xf2b9;" horiz-adv-x="256" +d="M167 153c-11 -4 -24 -8 -24 -32v-94c0 -11 4 -19 12 -25c3 -2 7 -4 15 -6c32 -9 48 -16 50 -18c2 -1 4 -3 4 -7c0 0 -14 -3 -96 -3s-96 3 -96 3c0 4 2 6 4 7c2 2 18 9 50 18c8 2 11 4 14 6c8 6 11 14 11 25v94c0 24 -11 28 -22 32s-18 6 -26 11c-12 7 -23 16 -32 26 +c-20 23 -31 52 -31 87c0 50 4 100 8 114s14 25 31 25h178c17 0 27 -11 31 -25s8 -65 8 -115c0 -35 -11 -63 -31 -86c-9 -10 -20 -19 -32 -26c-8 -5 -15 -7 -26 -11zM128 178c26 0 50 11 67 28l6 6c16 18 22 35 23 65s-2 83 -8 107h-177c-7 -35 -8 -80 -7 -108s7 -46 23 -64 +c2 -3 4 -6 7 -8c17 -16 41 -26 66 -26zM208 277c0 -10 -1 -20 -4 -29s-8 -18 -15 -25l-5 -5c-14 -14 -34 -23 -56 -23c-21 0 -41 8 -55 22l-6 6c-7 7 -12 16 -15 25s-3 15 -4 29c-1 9 0 34 1 53c1 10 2 19 3 22h153c1 -6 2 -14 2 -22c1 -21 1 -45 1 -53zM192 269v0v26 +c0 4 -4 8 -8 8s-8 -4 -8 -8v-26c0 -3 1 -6 3 -7c1 -1 3 -1 5 -1c4 0 8 3 8 8zM191 316c1 2 1 4 1 6s-2 4 -4 5s-4 1 -6 1s-4 -1 -5 -3s-1 -4 -1 -6s2 -4 4 -5s4 -1 6 -1s4 1 5 3z" /> + <glyph glyph-name="ion-woman" unicode="&#xf25d;" horiz-adv-x="192" +d="M30 299c3 12 17 33 42 34h48c24 -1 38 -22 42 -34l29 -104c6 -23 -21 -32 -27 -10l-26 96h-9l46 -169h-43v-127c0 -23 -31 -23 -31 0v127h-10v-127c0 -23 -32 -23 -32 0v127h-42l45 169h-7l-27 -96c-7 -21 -33 -13 -27 10zM133 379c0 -21 -17 -37 -37 -37s-37 16 -37 37 +s17 37 37 37s37 -16 37 -37z" /> + <glyph glyph-name="ion-wrench" unicode="&#xf2ba;" +d="M430 333c14 -14 19 -31 18 -44s-6 -39 -32 -65s-77 -42 -113 -24c-5 3 -13 5 -21 -3c-10 -9 -202 -215 -202 -215c-17 -19 -48 -18 -66 0s-19 49 0 66c0 0 207 194 215 202s5 16 3 22c-20 47 2 89 24 112c22 24 51 31 65 32c13 1 31 -5 44 -18l-57 -56l10 -56l55 -10z +M59 5c6 6 6 17 0 23s-16 6 -22 0s-6 -17 0 -23s16 -6 22 0z" /> + <glyph glyph-name="ion-xbox" unicode="&#xf30c;" +d="M95 200c-49 -72 -50 -139 -50 -143c-28 38 -45 84 -45 135c0 67 30 128 77 169l3 -1c51 -18 93 -68 93 -68s-38 -33 -78 -92zM448 192c0 -51 -17 -97 -45 -135c0 4 -1 71 -50 143c-40 59 -78 92 -78 92s42 50 93 68l3 1c47 -41 77 -102 77 -169zM169 367 +c-37 17 -65 12 -72 10c36 25 80 39 127 39s91 -14 127 -39c-7 2 -35 6 -72 -10c-29 -13 -55 -35 -55 -35s-26 22 -55 35zM327 155c40 -49 54 -85 62 -108l2 -5c-41 -46 -101 -74 -167 -74s-126 28 -167 74l1 5c8 23 23 59 63 108c46 57 103 94 103 94s57 -37 103 -94z" /> + </font> +</defs></svg> diff --git a/assets/fonts/ionicons.ttf b/assets/fonts/ionicons.ttf new file mode 100644 index 0000000..e347409 Binary files /dev/null and b/assets/fonts/ionicons.ttf differ diff --git a/assets/fonts/ionicons.woff b/assets/fonts/ionicons.woff new file mode 100644 index 0000000..5267cb1 Binary files /dev/null and b/assets/fonts/ionicons.woff differ diff --git a/assets/fonts/materialdesignicons-webfont.eot b/assets/fonts/materialdesignicons-webfont.eot new file mode 100644 index 0000000..9be3446 Binary files /dev/null and b/assets/fonts/materialdesignicons-webfont.eot differ diff --git a/assets/fonts/materialdesignicons-webfont.svg b/assets/fonts/materialdesignicons-webfont.svg new file mode 100644 index 0000000..266dea6 --- /dev/null +++ b/assets/fonts/materialdesignicons-webfont.svg @@ -0,0 +1,4962 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<defs> + <font id="Material Design Icons" horiz-adv-x="24"> + <font-face font-family="Material Design Icons" + units-per-em="512" ascent="448" + descent="64" /> + <missing-glyph horiz-adv-x="0" /> + <glyph glyph-name="access-point" + unicode="&#xF002;" + horiz-adv-x="512" d=" M105.1733333333333 342.8266666666667C66.56 304.2133333333334 42.6666666666667 250.88 42.6666666666667 192C42.6666666666667 133.12 66.56 79.7866666666668 105.1733333333333 41.1733333333333L135.2533333333333 71.2533333333333C104.32 101.9733333333334 85.3333333333333 144.64 85.3333333333333 192C85.3333333333333 239.1466666666667 104.32 282.0266666666667 135.2533333333333 312.7466666666667L105.1733333333333 342.8266666666667M406.8266666666667 342.8266666666667L376.7466666666667 312.7466666666667C407.68 282.0266666666667 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 144.64 407.68 101.9733333333334 376.7466666666667 71.2533333333333L406.8266666666667 41.1733333333333C445.44 79.7866666666666 469.3333333333333 133.12 469.3333333333333 192C469.3333333333333 250.88 445.44 304.2133333333334 406.8266666666667 342.8266666666667M165.5466666666667 282.4533333333334C142.2933333333333 259.2000000000001 128 227.2 128 192C128 156.8 142.2933333333333 124.8 165.5466666666667 101.5466666666666L195.6266666666667 131.6266666666667C180.2666666666667 146.9866666666667 170.6666666666667 168.3200000000001 170.6666666666667 192S180.2666666666667 237.0133333333333 195.6266666666667 252.3733333333334L165.5466666666667 282.4533333333334M346.4533333333334 282.4533333333334L316.3733333333334 252.3733333333334C331.7333333333334 237.0133333333333 341.3333333333333 215.68 341.3333333333333 192S331.7333333333334 146.9866666666667 316.3733333333334 131.6266666666667L346.4533333333333 101.5466666666667C369.7066666666666 124.8 384 156.8 384 192C384 227.2 369.7066666666666 259.2000000000001 346.4533333333333 282.4533333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="access-point-network" + unicode="&#xF003;" + horiz-adv-x="512" d=" M105.1733333333333 385.4933333333334C66.56 346.88 42.6666666666667 293.5466666666667 42.6666666666667 234.6666666666667C42.6666666666667 175.7866666666667 66.56 122.4533333333334 105.1733333333333 83.84L135.2533333333333 113.92C104.32 144.64 85.3333333333333 187.3066666666667 85.3333333333333 234.6666666666667C85.3333333333333 281.8133333333334 104.32 324.6933333333334 135.2533333333333 355.4133333333334L105.1733333333333 385.4933333333334M406.8266666666667 385.4933333333334L376.7466666666667 355.4133333333334C407.68 324.6933333333334 426.6666666666667 281.8133333333334 426.6666666666667 234.6666666666667C426.6666666666667 187.3066666666667 407.68 144.6400000000001 376.7466666666667 113.92L406.8266666666667 83.84C445.44 122.4533333333334 469.3333333333333 175.7866666666667 469.3333333333333 234.6666666666667C469.3333333333333 293.5466666666667 445.44 346.88 406.8266666666667 385.4933333333334M165.5466666666667 325.12C142.2933333333333 301.8666666666667 128 269.8666666666667 128 234.6666666666667C128 199.4666666666667 142.2933333333333 167.4666666666667 165.5466666666667 144.2133333333334L195.6266666666667 174.2933333333334C180.2666666666667 189.6533333333334 170.6666666666667 210.9866666666667 170.6666666666667 234.6666666666667S180.2666666666667 279.68 195.6266666666667 295.04L165.5466666666667 325.12M346.4533333333334 325.12L316.3733333333334 295.04C331.7333333333334 279.68 341.3333333333333 258.3466666666667 341.3333333333333 234.6666666666667S331.7333333333334 189.6533333333334 316.3733333333334 174.2933333333334L346.4533333333333 144.2133333333334C369.7066666666666 167.4666666666667 384 199.4666666666667 384 234.6666666666667C384 269.8666666666667 369.7066666666666 301.8666666666667 346.4533333333333 325.12M256 277.3333333333334C232.5333333333334 277.3333333333334 213.3333333333333 258.1333333333334 213.3333333333333 234.6666666666667S232.5333333333334 192 256 192S298.6666666666667 211.2 298.6666666666667 234.6666666666667S279.4666666666667 277.3333333333334 256 277.3333333333334M234.6666666666667 149.3333333333334V64H213.3333333333333C201.6 64 192 54.4 192 42.6666666666667H42.6666666666667V0H192C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C310.4 -21.3333333333333 320 -11.7333333333333 320 0H469.3333333333333V42.6666666666667H320C320 54.4 310.4 64 298.6666666666667 64H277.3333333333333V149.3333333333334H234.6666666666667z" /> + <glyph glyph-name="account" + unicode="&#xF004;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334S303.1466666666667 192 256 192S170.6666666666667 230.1866666666667 170.6666666666667 277.3333333333334S208.8533333333333 362.6666666666667 256 362.6666666666667M256 149.3333333333334C350.2933333333334 149.3333333333334 426.6666666666667 111.1466666666667 426.6666666666667 64V21.3333333333334H85.3333333333333V64C85.3333333333333 111.1466666666667 161.7066666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="account-alert" + unicode="&#xF005;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667C260.48 362.6666666666667 298.6666666666667 324.48 298.6666666666667 277.3333333333334S260.48 192 213.3333333333333 192S128 230.1866666666667 128 277.3333333333334S166.1866666666667 362.6666666666667 213.3333333333333 362.6666666666667M213.3333333333333 149.3333333333334C307.6266666666667 149.3333333333334 384 111.1466666666667 384 64V21.3333333333334H42.6666666666667V64C42.6666666666667 111.1466666666667 119.04 149.3333333333334 213.3333333333333 149.3333333333334M426.6666666666667 192V298.6666666666667H469.3333333333333V192H426.6666666666667M426.6666666666667 106.6666666666667V149.3333333333334H469.3333333333333V106.6666666666667H426.6666666666667z" /> + <glyph glyph-name="account-box" + unicode="&#xF006;" + horiz-adv-x="512" d=" M128 85.3333333333334C128 128 213.3333333333333 151.4666666666667 256 151.4666666666667S384 128 384 85.3333333333334V64H128M320 256C320 220.5866666666667 291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320S320 291.4133333333334 320 256M64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="account-box-outline" + unicode="&#xF007;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M352 101.3333333333334C352 133.3333333333334 288 149.3333333333334 256 149.3333333333334S160 133.3333333333334 160 101.3333333333334V85.3333333333334H352M256 186.6666666666667C282.4533333333333 186.6666666666667 304 208.2133333333334 304 234.6666666666667S282.4533333333333 282.6666666666667 256 282.6666666666667S208 261.12 208 234.6666666666667S229.5466666666667 186.6666666666667 256 186.6666666666667z" /> + <glyph glyph-name="account-card-details" + unicode="&#xF5D2;" + horiz-adv-x="512" d=" M42.6666666666667 384H469.3333333333333C491.7333333333333 384 512 363.7333333333334 512 341.3333333333334V42.6666666666667C512 20.2666666666667 491.7333333333333 0 469.3333333333333 0H42.6666666666667C20.2666666666667 0 0 20.2666666666667 0 42.6666666666667V341.3333333333334C0 363.7333333333334 20.2666666666667 384 42.6666666666667 384M298.6666666666667 320V298.6666666666667H469.3333333333333V320H298.6666666666667M298.6666666666667 277.3333333333334V256H469.3333333333333V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667V213.3333333333334H448V234.6666666666667H298.6666666666667M170.6666666666667 151.2533333333333C128 151.2533333333333 42.6666666666667 128 42.6666666666667 85.3333333333334V64H298.6666666666667V85.3333333333334C298.6666666666667 128 213.3333333333333 151.2533333333333 170.6666666666667 151.2533333333333M170.6666666666667 320C135.2533333333333 320 106.6666666666667 291.4133333333334 106.6666666666667 256S135.2533333333333 192 170.6666666666667 192S234.6666666666667 220.5866666666667 234.6666666666667 256S206.08 320 170.6666666666667 320z" /> + <glyph glyph-name="account-check" + unicode="&#xF008;" + horiz-adv-x="512" d=" M192 341.3333333333334C233.1733333333333 341.3333333333334 266.6666666666667 307.8400000000001 266.6666666666667 266.6666666666667S233.1733333333333 192 192 192S117.3333333333333 225.4933333333334 117.3333333333333 266.6666666666667S150.8266666666667 341.3333333333334 192 341.3333333333334M192 154.6666666666667C274.56 154.6666666666667 341.3333333333333 121.1733333333334 341.3333333333333 80V42.6666666666667H42.6666666666667V80C42.6666666666667 121.1733333333334 109.44 154.6666666666667 192 154.6666666666667M362.6666666666667 177.92L304 241.92L328.7466666666667 266.6666666666667L362.6666666666667 232.7466666666667L439.2533333333334 309.3333333333334L464 279.2533333333334L362.6666666666667 177.92z" /> + <glyph glyph-name="account-circle" + unicode="&#xF009;" + horiz-adv-x="512" d=" M256 38.4C202.6666666666667 38.4 155.52 65.7066666666667 128 106.6666666666667C128.64 149.3333333333334 213.3333333333333 172.8 256 172.8S383.36 149.3333333333334 384 106.6666666666667C356.48 65.7066666666667 309.3333333333333 38.4 256 38.4M256 341.3333333333334C291.4133333333333 341.3333333333334 320 312.7466666666667 320 277.3333333333334S291.4133333333333 213.3333333333334 256 213.3333333333334S192 241.92 192 277.3333333333334S220.5866666666667 341.3333333333334 256 341.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="account-convert" + unicode="&#xF00A;" + horiz-adv-x="512" d=" M160 -10.6666666666666L188.8 17.92L270.08 -63.36L256 -64C121.8133333333333 -64 11.9466666666667 39.2533333333333 1.0666666666667 170.6666666666667H33.0666666666667C40.7466666666667 90.4533333333334 90.6666666666667 22.6133333333333 160 -10.6666666666666M352 394.6666666666667L323.2 366.0800000000001L241.92 447.36L256 448C390.1866666666666 448 500.0533333333333 344.7466666666667 510.9333333333333 213.3333333333334H478.9333333333333C471.2533333333333 293.5466666666667 421.3333333333333 361.1733333333334 352 394.6666666666667M128 85.3333333333334C128 128 213.3333333333333 151.4666666666667 256 151.4666666666667S384 128 384 85.3333333333334V64H128V85.3333333333334M320 256C320 220.5866666666667 291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320S320 291.4133333333334 320 256z" /> + <glyph glyph-name="account-key" + unicode="&#xF00B;" + horiz-adv-x="512" d=" M234.6666666666667 234.6666666666667V192H213.3333333333333V149.3333333333334H170.6666666666667V192H124.3733333333333C115.6266666666667 167.04 91.9466666666667 149.3333333333334 64 149.3333333333334C28.5866666666667 149.3333333333334 0 177.92 0 213.3333333333334S28.5866666666667 277.3333333333334 64 277.3333333333334C91.9466666666667 277.3333333333334 115.6266666666667 259.6266666666667 124.3733333333333 234.6666666666667H234.6666666666667M64 234.6666666666667C52.2666666666667 234.6666666666667 42.6666666666667 225.0666666666667 42.6666666666667 213.3333333333334S52.2666666666667 192 64 192S85.3333333333333 201.6 85.3333333333333 213.3333333333334S75.7333333333333 234.6666666666667 64 234.6666666666667M341.3333333333333 149.3333333333334C398.2933333333334 149.3333333333334 512 120.7466666666667 512 64V21.3333333333334H170.6666666666667V64C170.6666666666667 120.7466666666667 284.3733333333334 149.3333333333334 341.3333333333333 149.3333333333334M341.3333333333333 192C294.1866666666666 192 256 230.1866666666667 256 277.3333333333334S294.1866666666666 362.6666666666667 341.3333333333333 362.6666666666667S426.6666666666667 324.48 426.6666666666667 277.3333333333334S388.48 192 341.3333333333333 192z" /> + <glyph glyph-name="account-location" + unicode="&#xF00C;" + horiz-adv-x="512" d=" M384 106.6666666666667H128V125.8666666666667C128 168.5333333333334 213.3333333333333 192 256 192S384 168.5333333333334 384 125.8666666666667M256 334.9333333333334C288 334.9333333333334 313.6 309.3333333333334 313.6 277.3333333333334C313.6 245.3333333333334 288 219.7333333333334 256 219.7333333333334C224 219.7333333333334 198.4 245.3333333333334 198.4 277.3333333333334C198.4 309.3333333333334 224 334.9333333333334 256 334.9333333333334M405.3333333333333 405.3333333333333H106.6666666666667C82.9866666666667 405.3333333333333 64 386.3466666666667 64 362.6666666666667V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192L256 -42.6666666666666L320 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V362.6666666666667C448 386.3466666666667 428.8 405.3333333333333 405.3333333333333 405.3333333333333z" /> + <glyph glyph-name="account-minus" + unicode="&#xF00D;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M21.3333333333333 234.6666666666667V192H192V234.6666666666667M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192z" /> + <glyph glyph-name="account-multiple" + unicode="&#xF00E;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667C335.1466666666667 170.6666666666667 328.1066666666667 170.6666666666667 320.64 169.6C345.3866666666667 151.68 362.6666666666667 128 362.6666666666667 96V42.6666666666667H490.6666666666666V96C490.6666666666666 145.7066666666667 391.04 170.6666666666667 341.3333333333333 170.6666666666667M170.6666666666667 170.6666666666667C120.96 170.6666666666667 21.3333333333333 145.7066666666667 21.3333333333333 96V42.6666666666667H320V96C320 145.7066666666667 220.3733333333333 170.6666666666667 170.6666666666667 170.6666666666667M170.6666666666667 213.3333333333334C206.08 213.3333333333334 234.6666666666667 241.92 234.6666666666667 277.3333333333334S206.08 341.3333333333334 170.6666666666667 341.3333333333334S106.6666666666667 312.7466666666667 106.6666666666667 277.3333333333334S135.2533333333333 213.3333333333334 170.6666666666667 213.3333333333334M341.3333333333333 213.3333333333334C376.7466666666667 213.3333333333334 405.3333333333333 241.92 405.3333333333333 277.3333333333334S376.7466666666667 341.3333333333334 341.3333333333333 341.3333333333334S277.3333333333333 312.7466666666667 277.3333333333333 277.3333333333334S305.92 213.3333333333334 341.3333333333333 213.3333333333334z" /> + <glyph glyph-name="account-multiple-minus" + unicode="&#xF5D3;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667C234.6666666666667 170.6666666666667 149.3333333333333 149.3333333333334 149.3333333333333 106.6666666666667V64H405.3333333333333V106.6666666666667C405.3333333333333 149.3333333333334 320 170.6666666666667 277.3333333333333 170.6666666666667M418.56 167.2533333333333C436.2666666666667 151.8933333333333 448 131.84 448 106.6666666666667V64H512V106.6666666666667C512 139.52 461.4399999999999 160 418.56 167.2533333333333M277.3333333333333 213.3333333333334C312.7466666666667 213.3333333333334 341.3333333333333 241.92 341.3333333333333 277.3333333333334S312.7466666666667 341.3333333333334 277.3333333333333 341.3333333333334S213.3333333333333 312.7466666666667 213.3333333333333 277.3333333333334S241.92 213.3333333333334 277.3333333333333 213.3333333333334M384 213.3333333333334C419.4133333333333 213.3333333333334 448 241.92 448 277.3333333333334S419.4133333333333 341.3333333333334 384 341.3333333333334C377.1733333333333 341.3333333333334 370.56 340.2666666666667 364.3733333333333 338.3466666666667C376.5333333333333 321.0666666666667 384 299.9466666666667 384 277.3333333333334C384 254.72 376.5333333333333 233.8133333333334 364.3733333333333 216.5333333333334C370.56 214.4 377.1733333333333 213.3333333333334 384 213.3333333333334M170.6666666666667 234.6666666666667H0V192H170.6666666666667V234.6666666666667z" /> + <glyph glyph-name="account-multiple-outline" + unicode="&#xF00F;" + horiz-adv-x="512" d=" M352 309.3333333333334C375.4666666666667 309.3333333333334 394.6666666666667 290.1333333333334 394.6666666666667 266.6666666666667S375.4666666666667 224 352 224S309.3333333333333 243.2 309.3333333333333 266.6666666666667S328.5333333333333 309.3333333333334 352 309.3333333333334M352 192C393.1733333333333 192 426.6666666666667 225.4933333333334 426.6666666666667 266.6666666666667S393.1733333333333 341.3333333333334 352 341.3333333333334S277.3333333333333 307.8400000000001 277.3333333333333 266.6666666666667S310.8266666666667 192 352 192M160 309.3333333333334C183.4666666666667 309.3333333333334 202.6666666666667 290.1333333333334 202.6666666666667 266.6666666666667S183.4666666666667 224 160 224S117.3333333333333 243.2 117.3333333333333 266.6666666666667S136.5333333333333 309.3333333333334 160 309.3333333333334M160 192C201.1733333333333 192 234.6666666666667 225.4933333333334 234.6666666666667 266.6666666666667S201.1733333333333 341.3333333333334 160 341.3333333333334S85.3333333333333 307.8400000000001 85.3333333333333 266.6666666666667S118.8266666666667 192 160 192M458.6666666666666 74.6666666666667H298.6666666666667V101.3333333333334C298.6666666666667 111.1466666666667 294.4 119.68 288 127.36C306.3466666666667 133.7600000000001 329.3866666666667 138.6666666666667 352 138.6666666666667C404.0533333333334 138.6666666666667 458.6666666666666 112.8533333333334 458.6666666666666 101.3333333333334M266.6666666666667 74.6666666666667H53.3333333333333V101.3333333333334C53.3333333333333 112.8533333333334 107.9466666666667 138.6666666666667 160 138.6666666666667S266.6666666666667 112.8533333333334 266.6666666666667 101.3333333333334M352 170.6666666666667C326.4 170.6666666666667 286.5066666666667 163.4133333333334 256 149.3333333333334C225.4933333333334 163.6266666666667 185.6 170.6666666666667 160 170.6666666666667C113.7066666666667 170.6666666666667 21.3333333333333 147.6266666666667 21.3333333333333 101.3333333333334V42.6666666666667H490.6666666666666V101.3333333333334C490.6666666666666 147.6266666666667 398.2933333333334 170.6666666666667 352 170.6666666666667z" /> + <glyph glyph-name="account-multiple-plus" + unicode="&#xF010;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667C234.6666666666667 170.6666666666667 149.3333333333333 149.3333333333334 149.3333333333333 106.6666666666667V64H405.3333333333333V106.6666666666667C405.3333333333333 149.3333333333334 320 170.6666666666667 277.3333333333333 170.6666666666667M418.56 167.2533333333333C436.2666666666667 151.8933333333333 448 131.84 448 106.6666666666667V64H512V106.6666666666667C512 139.52 461.4399999999999 160 418.56 167.2533333333333M277.3333333333333 213.3333333333334C312.7466666666667 213.3333333333334 341.3333333333333 241.92 341.3333333333333 277.3333333333334S312.7466666666667 341.3333333333334 277.3333333333333 341.3333333333334S213.3333333333333 312.7466666666667 213.3333333333333 277.3333333333334S241.92 213.3333333333334 277.3333333333333 213.3333333333334M384 213.3333333333334C419.4133333333333 213.3333333333334 448 241.92 448 277.3333333333334S419.4133333333333 341.3333333333334 384 341.3333333333334C377.1733333333333 341.3333333333334 370.56 340.2666666666667 364.3733333333333 338.3466666666667C376.5333333333333 321.0666666666667 384 299.9466666666667 384 277.3333333333334C384 254.72 376.5333333333333 233.8133333333334 364.3733333333333 216.5333333333334C370.56 214.4 377.1733333333333 213.3333333333334 384 213.3333333333334M170.6666666666667 234.6666666666667H106.6666666666667V298.6666666666667H64V234.6666666666667H0V192H64V128H106.6666666666667V192H170.6666666666667V234.6666666666667z" /> + <glyph glyph-name="account-network" + unicode="&#xF011;" + horiz-adv-x="512" d=" M277.3333333333333 106.6666666666667V64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H106.6666666666667V138.6666666666667C106.6666666666667 179.84 173.44 213.3333333333334 256 213.3333333333334S405.3333333333333 179.84 405.3333333333333 138.6666666666667V106.6666666666667H277.3333333333333M256 405.3333333333333C297.1733333333333 405.3333333333333 330.6666666666667 371.8400000000001 330.6666666666667 330.6666666666667S297.1733333333333 256 256 256S181.3333333333333 289.4933333333334 181.3333333333333 330.6666666666667S214.8266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="account-off" + unicode="&#xF012;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334C341.3333333333333 235.7333333333334 311.4666666666667 200.96 272 193.4933333333334L172.16 293.3333333333334C179.6266666666667 332.8 214.4 362.6666666666667 256 362.6666666666667M261.9733333333333 149.3333333333334L389.9733333333334 21.3333333333334L426.6666666666667 -15.36L399.5733333333333 -42.6666666666666L335.5733333333333 21.3333333333334H85.3333333333333V64C85.3333333333333 103.2533333333333 138.6666666666667 136.3200000000001 210.56 146.3466666666667L59.3066666666667 297.6L86.4 324.6933333333334L261.9733333333333 149.3333333333334M426.6666666666667 64V38.8266666666667L322.9866666666667 142.5066666666667C384 129.4933333333334 426.6666666666667 99.2 426.6666666666667 64z" /> + <glyph glyph-name="account-outline" + unicode="&#xF013;" + horiz-adv-x="512" d=" M256 170.6666666666667C199.04 170.6666666666667 85.3333333333333 142.2933333333334 85.3333333333333 85.3333333333334V21.3333333333334H426.6666666666667V85.3333333333334C426.6666666666667 142.2933333333334 312.96 170.6666666666667 256 170.6666666666667M256 362.6666666666667C208.8533333333333 362.6666666666667 170.6666666666667 324.48 170.6666666666667 277.3333333333334S208.8533333333333 192 256 192S341.3333333333333 230.1866666666667 341.3333333333333 277.3333333333334S303.1466666666667 362.6666666666667 256 362.6666666666667M256 130.1333333333333C319.36 130.1333333333333 386.1333333333334 98.9866666666667 386.1333333333334 85.3333333333334V61.8666666666667H125.8666666666667V85.3333333333334C125.8666666666667 98.9866666666667 192 130.1333333333333 256 130.1333333333333M256 322.1333333333334C280.7466666666667 322.1333333333334 300.8 302.0800000000001 300.8 277.3333333333334C300.8 252.5866666666667 280.7466666666667 232.5333333333334 256 232.5333333333334C231.2533333333334 232.5333333333334 211.2 252.5866666666667 211.2 277.3333333333334C211.2 302.0800000000001 231.2533333333334 322.1333333333334 256 322.1333333333334z" /> + <glyph glyph-name="account-plus" + unicode="&#xF014;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M128 234.6666666666667V298.6666666666667H85.3333333333333V234.6666666666667H21.3333333333333V192H85.3333333333333V128H128V192H192V234.6666666666667M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192z" /> + <glyph glyph-name="account-remove" + unicode="&#xF015;" + horiz-adv-x="512" d=" M320 149.3333333333334C376.9600000000001 149.3333333333334 490.6666666666666 120.96 490.6666666666666 64V21.3333333333334H149.3333333333333V64C149.3333333333333 120.96 263.04 149.3333333333334 320 149.3333333333334M320 192C272.8533333333333 192 234.6666666666667 230.1866666666667 234.6666666666667 277.3333333333334S272.8533333333333 362.6666666666667 320 362.6666666666667S405.3333333333333 324.48 405.3333333333333 277.3333333333334S367.1466666666667 192 320 192M106.6666666666667 243.4133333333334L151.8933333333333 288.8533333333334L182.1866666666667 258.5600000000001L136.7466666666667 213.3333333333334L182.1866666666667 168.1066666666667L151.8933333333333 137.8133333333333L106.6666666666667 183.2533333333333L61.44 137.8133333333334L31.1466666666667 168.1066666666667L76.5866666666667 213.3333333333334L31.1466666666667 258.56L61.44 288.8533333333334L106.6666666666667 243.4133333333334z" /> + <glyph glyph-name="account-search" + unicode="&#xF016;" + horiz-adv-x="512" d=" M202.6666666666667 384C279.2533333333334 384 341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 210.9866666666667 328.7466666666667 179.4133333333334 307.84 155.0933333333334L313.8133333333333 149.3333333333334H330.6666666666667L437.3333333333333 42.6666666666667L405.3333333333333 10.6666666666667L298.6666666666667 117.3333333333334V134.1866666666667L292.9066666666667 140.16C268.5866666666667 119.2533333333333 237.0133333333333 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384M202.6666666666667 149.3333333333334C237.0133333333333 149.3333333333334 266.6666666666667 167.4666666666667 284.16 194.56C266.6666666666667 218.6666666666667 237.0133333333333 234.6666666666667 202.6666666666667 234.6666666666667C168.32 234.6666666666667 138.6666666666667 218.6666666666667 121.1733333333333 194.56C138.6666666666667 167.4666666666667 168.32 149.3333333333334 202.6666666666667 149.3333333333334M202.6666666666667 341.3333333333334C181.9733333333333 341.3333333333334 165.3333333333333 324.6933333333334 165.3333333333333 304S181.9733333333333 266.6666666666667 202.6666666666667 266.6666666666667S240 283.3066666666667 240 304S223.36 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="account-settings" + unicode="&#xF630;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334S303.1466666666667 192 256 192S170.6666666666667 230.1866666666667 170.6666666666667 277.3333333333334S208.8533333333333 362.6666666666667 256 362.6666666666667M256 149.3333333333334C350.2933333333334 149.3333333333334 426.6666666666667 111.1466666666667 426.6666666666667 64V21.3333333333334H85.3333333333333V64C85.3333333333333 111.1466666666667 161.7066666666667 149.3333333333334 256 149.3333333333334M149.3333333333333 -21.3333333333333H192V-64H149.3333333333333V-21.3333333333333M234.6666666666667 -21.3333333333333H277.3333333333333V-64H234.6666666666667V-21.3333333333333M320 -21.3333333333333H362.6666666666667V-64H320V-21.3333333333333z" /> + <glyph glyph-name="account-settings-variant" + unicode="&#xF631;" + horiz-adv-x="512" d=" M192 362.6666666666667C144.8533333333333 362.6666666666667 106.6666666666667 324.48 106.6666666666667 277.3333333333334S144.8533333333333 192 192 192S277.3333333333333 230.1866666666667 277.3333333333333 277.3333333333334S239.1466666666667 362.6666666666667 192 362.6666666666667M192 149.3333333333334C135.04 149.3333333333334 21.3333333333333 120.96 21.3333333333333 64V21.3333333333334H257.7066666666667C256.64 28.3733333333333 256 35.4133333333334 256 42.6666666666667C256 74.6666666666667 266.6666666666667 106.6666666666667 286.08 132.2666666666667C253.44 143.36 217.1733333333333 149.3333333333334 192 149.3333333333334M384 149.3333333333334C381.2266666666667 149.3333333333334 378.88 147.4133333333334 378.4533333333333 144.8533333333334L374.3999999999999 116.6933333333333C367.9999999999999 113.92 361.8133333333333 110.5066666666667 356.2666666666666 106.6666666666667L329.8133333333332 117.3333333333334C327.4666666666666 117.3333333333334 324.6933333333332 117.3333333333334 323.1999999999999 114.56L301.8666666666666 77.6533333333334C300.5866666666666 75.3066666666667 301.0133333333332 72.5333333333334 303.1466666666666 70.8266666666667L325.7599999999999 53.3333333333334C325.3333333333333 49.7066666666667 325.1199999999999 46.2933333333334 325.1199999999999 42.6666666666667C325.1199999999999 39.04 325.3333333333333 35.6266666666667 325.7599999999999 32L303.1466666666666 14.5066666666667C301.2266666666666 12.8000000000001 300.5866666666666 10.0266666666666 301.8666666666666 7.68L323.1999999999999 -29.2266666666667C324.4799999999999 -32 327.2533333333332 -32 329.8133333333332 -32L356.2666666666666 -21.3333333333333C361.8133333333333 -25.1733333333333 367.7866666666665 -28.8 374.3999999999999 -31.36L378.4533333333333 -59.52C378.88 -62.08 381.0133333333333 -64 384 -64H426.6666666666667C429.0133333333333 -64 431.36 -62.08 431.7866666666667 -59.52L435.84 -31.36C442.24 -28.5866666666666 448 -25.1733333333333 453.76 -21.3333333333333L480 -32C482.7733333333333 -32 485.5466666666667 -32 487.04 -29.2266666666667L508.3733333333333 7.68C509.6533333333333 10.0266666666666 509.0133333333333 12.8 507.0933333333333 14.5066666666667L484.2666666666667 32C484.6933333333333 35.6266666666667 485.1199999999999 39.04 485.1199999999999 42.6666666666667C485.1199999999999 46.2933333333334 484.9066666666666 49.7066666666667 484.2666666666667 53.3333333333334L506.8799999999999 70.8266666666667C508.8 72.5333333333333 509.4399999999999 75.3066666666667 508.1599999999999 77.6533333333334L486.8266666666666 114.5600000000001C485.5466666666666 117.3333333333334 482.7733333333332 117.3333333333334 479.9999999999999 117.3333333333334L453.7599999999999 106.6666666666667C447.9999999999999 110.5066666666667 442.2399999999999 114.1333333333334 435.6266666666666 116.6933333333334L431.5733333333332 144.8533333333334C431.3599999999998 147.4133333333334 429.0133333333332 149.3333333333334 426.6666666666665 149.3333333333334M405.3333333333332 74.6666666666667C423.0399999999998 74.6666666666667 437.3333333333332 60.3733333333334 437.3333333333332 42.6666666666667S423.0399999999998 10.6666666666667 405.3333333333332 10.6666666666667C387.4133333333332 10.6666666666667 373.3333333333332 24.9600000000002 373.3333333333332 42.6666666666667S387.6266666666666 74.6666666666667 405.3333333333332 74.6666666666667z" /> + <glyph glyph-name="account-star" + unicode="&#xF017;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192M106.6666666666667 164.6933333333334L158.9333333333333 132.9066666666667L145.0666666666667 192.8533333333334L192 232.96L130.3466666666666 238.2933333333334L106.6666666666667 294.6133333333334L82.56 238.2933333333334L21.3333333333333 232.96L67.84 192.8533333333333L53.3333333333333 132.9066666666667L106.6666666666667 164.6933333333334z" /> + <glyph glyph-name="account-star-variant" + unicode="&#xF018;" + horiz-adv-x="512" d=" M192 149.3333333333334C248.96 149.3333333333334 362.6666666666667 120.96 362.6666666666667 64V21.3333333333334H21.3333333333333V64C21.3333333333333 120.96 135.04 149.3333333333334 192 149.3333333333334M192 192C144.8533333333333 192 106.6666666666667 230.1866666666667 106.6666666666667 277.3333333333334S144.8533333333333 362.6666666666667 192 362.6666666666667S277.3333333333333 324.48 277.3333333333333 277.3333333333334S239.1466666666667 192 192 192M405.3333333333333 164.6933333333334L352.8533333333333 132.9066666666667L366.9333333333333 192.8533333333334L320 232.9600000000001L381.6533333333333 238.2933333333334L405.3333333333333 294.6133333333334L429.44 238.2933333333334L490.6666666666666 232.96L444.16 192.8533333333333L458.6666666666666 132.9066666666667L405.3333333333333 164.6933333333333z" /> + <glyph glyph-name="account-switch" + unicode="&#xF019;" + horiz-adv-x="512" d=" M341.3333333333333 256C391.04 256 490.6666666666666 231.04 490.6666666666666 181.3333333333334V128H362.6666666666667V181.3333333333334C362.6666666666667 213.3333333333334 345.3866666666667 237.0133333333333 320.8533333333333 254.9333333333334L341.3333333333333 256M170.6666666666667 256C220.3733333333333 256 320 231.04 320 181.3333333333334V128H21.3333333333333V181.3333333333334C21.3333333333333 231.04 120.96 256 170.6666666666667 256M170.6666666666667 298.6666666666667C135.2533333333333 298.6666666666667 106.6666666666667 327.2533333333334 106.6666666666667 362.6666666666667S135.2533333333333 426.6666666666667 170.6666666666667 426.6666666666667S234.6666666666667 398.08 234.6666666666667 362.6666666666667S206.08 298.6666666666667 170.6666666666667 298.6666666666667M341.3333333333333 298.6666666666667C305.92 298.6666666666667 277.3333333333333 327.2533333333334 277.3333333333333 362.6666666666667S305.92 426.6666666666667 341.3333333333333 426.6666666666667S405.3333333333333 398.08 405.3333333333333 362.6666666666667S376.7466666666667 298.6666666666667 341.3333333333333 298.6666666666667M192 90.6666666666667V42.6666666666667H320V90.6666666666667L389.3333333333333 21.3333333333334L320 -48V0H192V-48L122.6666666666667 21.3333333333334L192 90.6666666666667z" /> + <glyph glyph-name="adjust" + unicode="&#xF01A;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M320 192C320 156.5866666666667 291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256S320 227.4133333333334 320 192z" /> + <glyph glyph-name="air-conditioner" + unicode="&#xF01B;" + horiz-adv-x="512" d=" M140.5866666666667 433.92C190.5066666666667 472.5333333333333 244.6933333333333 425.3866666666667 256.8533333333333 352C266.0266666666667 352 274.9866666666666 349.44 283.0933333333333 344.7466666666667C294.1866666666666 357.5466666666667 304 375.04 300.16 394.6666666666667C291.2 440.5333333333333 342.6133333333333 477.6533333333333 391.4666666666667 414.2933333333334C430.08 364.3733333333334 382.9333333333334 310.1866666666667 309.3333333333334 298.0266666666667C309.3333333333334 288.8533333333334 306.9866666666667 279.68 302.0800000000001 271.5733333333334C314.88 260.6933333333334 332.3733333333334 250.88 352 254.7200000000001C397.44 263.6800000000001 434.7733333333333 212.48 371.4133333333333 163.4133333333334C321.4933333333334 124.8 267.3066666666667 171.9466666666667 255.1466666666667 245.3333333333334C245.9733333333334 245.3333333333334 237.0133333333334 248.1066666666667 229.12 252.8C218.0266666666667 240 208 222.2933333333334 211.84 202.6666666666667C220.8 157.0133333333333 169.3866666666667 119.68 120.5333333333333 183.04C81.7066666666667 233.1733333333334 129.0666666666667 287.36 202.6666666666667 299.3066666666667C202.6666666666667 308.48 205.44 317.44 210.1333333333333 325.5466666666667C197.3333333333333 336.4266666666667 179.84 346.4533333333334 160 342.6133333333334C114.56 333.6533333333333 77.2266666666667 384.8533333333334 140.5866666666667 433.92M106.6666666666667 106.6666666666667H149.3333333333333C172.8 106.6666666666667 192 87.4666666666667 192 64V-64H149.3333333333333V-21.3333333333333H106.6666666666667V-64H64V64C64 87.4666666666667 83.2 106.6666666666667 106.6666666666667 106.6666666666667M106.6666666666667 64V21.3333333333334H149.3333333333333V64H106.6666666666667M275.84 106.6666666666667H320L257.4933333333334 -64H213.3333333333333L275.84 106.6666666666667M384 106.6666666666667H448V64H384V-21.3333333333333H448V-64H384C360.5333333333333 -64 341.3333333333333 -44.8 341.3333333333333 -21.3333333333333V64C341.3333333333333 87.4666666666667 360.5333333333333 106.6666666666667 384 106.6666666666667z" /> + <glyph glyph-name="airballoon" + unicode="&#xF01C;" + horiz-adv-x="512" d=" M234.6666666666667 -42.6666666666666C211.2 -42.6666666666666 192 -23.4666666666667 192 0V42.6666666666667H320V0C320 -23.4666666666667 300.8 -42.6666666666666 277.3333333333333 -42.6666666666666H234.6666666666667M256 426.6666666666667C271.1466666666667 426.6666666666667 285.6533333333333 424.7466666666667 299.7333333333334 421.12C324.6933333333334 387.6266666666667 341.3333333333333 326.1866666666667 341.3333333333333 256C341.3333333333333 207.36 333.2266666666667 162.7733333333333 320 106.6666666666667C320 83.2 300.8 64 277.3333333333333 64H234.6666666666667C211.2 64 192 83.2 192 106.6666666666667C178.7733333333334 162.7733333333333 170.6666666666667 207.36 170.6666666666667 256C170.6666666666667 326.1866666666667 187.3066666666667 387.6266666666667 212.2666666666667 421.12C226.3466666666667 424.7466666666667 240.8533333333333 426.6666666666667 256 426.6666666666667M426.6666666666667 277.3333333333334C426.6666666666667 209.4933333333334 387.2 108.3733333333333 329.8133333333334 80.8533333333334C350.08 119.68 362.6666666666667 195.6266666666667 362.6666666666667 256C362.6666666666667 316.3733333333334 350.08 370.9866666666667 329.8133333333334 409.8133333333334C387.2 382.2933333333334 426.6666666666667 345.1733333333334 426.6666666666667 277.3333333333334M85.3333333333333 277.3333333333334C85.3333333333333 345.1733333333334 124.8 382.2933333333334 182.1866666666667 409.8133333333334C161.92 370.9866666666667 149.3333333333333 316.3733333333334 149.3333333333333 256S161.92 119.68 182.1866666666667 80.8533333333334C124.8 108.3733333333333 85.3333333333333 209.4933333333334 85.3333333333333 277.3333333333334z" /> + <glyph glyph-name="airplane" + unicode="&#xF01D;" + horiz-adv-x="512" d=" M448 106.6666666666667V149.3333333333334L277.3333333333333 256V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V256L42.6666666666667 149.3333333333334V106.6666666666667L213.3333333333333 160V42.6666666666667L170.6666666666667 10.6666666666667V-21.3333333333333L245.3333333333333 0L320 -21.3333333333333V10.6666666666667L277.3333333333333 42.6666666666667V160L448 106.6666666666667z" /> + <glyph glyph-name="airplane-landing" + unicode="&#xF5D4;" + horiz-adv-x="512" d=" M53.3333333333333 42.6666666666667H458.6666666666666V0H53.3333333333333V42.6666666666667M206.5066666666667 164.9066666666667L299.3066666666666 140.16L412.5866666666667 109.8666666666667C429.6533333333333 105.3866666666667 447.1466666666667 115.4133333333334 451.84 132.48C456.32 149.3333333333334 446.2933333333333 167.0400000000001 429.2266666666667 171.7333333333334L315.9466666666667 202.0266666666667L257.0666666666667 394.6666666666667L215.8933333333334 405.3333333333333V228.6933333333334L109.8666666666667 257.0666666666667L90.0266666666667 306.5600000000001L59.0933333333333 314.88V204.5866666666667L93.2266666666667 195.4133333333334L206.5066666666667 164.9066666666667z" /> + <glyph glyph-name="airplane-off" + unicode="&#xF01E;" + horiz-adv-x="512" d=" M67.2 335.5733333333334L173.44 229.12L45.8666666666667 149.3333333333334V106.6666666666667L216.5333333333333 160V42.6666666666667L173.8666666666667 10.6666666666667V-21.3333333333333L248.5333333333334 0L323.2 -21.3333333333333V10.6666666666667L280.5333333333333 42.6666666666667V122.24L402.56 0L429.8666666666667 27.0933333333334L94.2933333333333 362.6666666666667M280.5333333333333 256V373.3333333333334C280.5333333333333 391.04 266.24 405.3333333333333 248.5333333333334 405.3333333333333S216.5333333333333 391.04 216.5333333333333 373.3333333333334V294.8266666666667L383.36 128L451.1999999999999 106.6666666666667V149.3333333333334L280.5333333333333 256z" /> + <glyph glyph-name="airplane-takeoff" + unicode="&#xF5D5;" + horiz-adv-x="512" d=" M53.3333333333333 42.6666666666667H458.6666666666666V0H53.3333333333333V42.6666666666667M470.8266666666667 242.3466666666667C466.3466666666666 259.4133333333334 448.64 269.6533333333333 431.5733333333333 264.9600000000001L318.2933333333333 234.6666666666667L170.6666666666667 371.8400000000001L129.92 360.9600000000001L218.24 208L112.2133333333333 179.6266666666667L70.1866666666667 212.48L39.2533333333334 204.16L78.08 136.7466666666667L94.5066666666667 108.3733333333333L128.64 117.3333333333334L241.92 147.84L334.72 172.5866666666667L448 202.6666666666667C465.28 207.7866666666667 475.3066666666667 225.2800000000001 470.8266666666667 242.3466666666667z" /> + <glyph glyph-name="airplay" + unicode="&#xF01F;" + horiz-adv-x="512" d=" M128 -21.3333333333333H384L256 106.6666666666667M448 384H64C40.5333333333333 384 21.3333333333333 364.8 21.3333333333333 341.3333333333334V85.3333333333334C21.3333333333333 61.8666666666667 40.5333333333333 42.6666666666667 64 42.6666666666667H149.3333333333333V85.3333333333334H64V341.3333333333334H448V85.3333333333334H362.6666666666667V42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V341.3333333333334C490.6666666666666 364.8 471.4666666666667 384 448 384z" /> + <glyph glyph-name="alarm" + unicode="&#xF020;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M266.6666666666667 277.3333333333334H234.6666666666667V149.3333333333334L336 88.5333333333333L352 114.7733333333333L266.6666666666667 165.3333333333334V277.3333333333334M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334z" /> + <glyph glyph-name="alarm-check" + unicode="&#xF021;" + horiz-adv-x="512" d=" M224.8533333333333 138.0266666666667L179.4133333333333 183.4666666666667L156.8 160.8533333333334L224.64 93.0133333333333L352.64 221.0133333333333L330.0266666666667 243.6266666666667L224.8533333333334 138.0266666666667M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334z" /> + <glyph glyph-name="alarm-multiple" + unicode="&#xF022;" + horiz-adv-x="512" d=" M198.1866666666667 378.6666666666667L110.08 304.64L85.3333333333333 334.0800000000001L173.6533333333333 408.1066666666667L198.1866666666667 378.6666666666667M469.3333333333333 333.8666666666667L444.5866666666667 304.4266666666667L356.2666666666667 378.6666666666667L381.0133333333333 408.1066666666667L469.3333333333333 333.8666666666667M277.3333333333333 362.6666666666667C371.6266666666667 362.6666666666667 448 286.2933333333334 448 192S371.6266666666667 21.3333333333334 277.3333333333333 21.3333333333334S106.6666666666667 97.7066666666667 106.6666666666667 192S183.04 362.6666666666667 277.3333333333333 362.6666666666667M277.3333333333333 320C206.72 320 149.3333333333333 262.6133333333334 149.3333333333333 192S206.72 64 277.3333333333333 64S405.3333333333333 121.3866666666667 405.3333333333333 192S347.9466666666666 320 277.3333333333333 320M256 288H288V191.36L356.6933333333333 160L343.4666666666666 130.9866666666667L256 170.6666666666667V288M21.3333333333333 149.3333333333334C21.3333333333333 202.6666666666667 45.44 249.6 83.4133333333333 280.9600000000001C71.04 253.8666666666667 64 224 64 192L65.28 167.8933333333334L64 149.3333333333334C64 100.6933333333333 91.0933333333333 58.4533333333334 130.9866666666667 36.6933333333333C158.72 10.6666666666667 193.4933333333334 -8.32 232.32 -16.64C219.3066666666667 -19.6266666666667 205.8666666666667 -21.3333333333333 192 -21.3333333333333C97.7066666666667 -21.3333333333333 21.3333333333333 55.04 21.3333333333333 149.3333333333334z" /> + <glyph glyph-name="alarm-off" + unicode="&#xF023;" + horiz-adv-x="512" d=" M170.6666666666667 378.0266666666667L140.8 408.32L122.4533333333333 393.1733333333334L152.7466666666667 362.6666666666667M351.36 55.68C325.5466666666666 34.3466666666667 292.2666666666667 21.3333333333334 256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667C106.6666666666667 206.9333333333333 119.68 240.2133333333334 141.0133333333333 266.0266666666667M62.2933333333333 399.1466666666667L35.2 371.8400000000001L64 343.4666666666667L39.8933333333333 323.6266666666667L70.1866666666667 293.3333333333334L93.8666666666667 313.3866666666667L110.9333333333333 296.32C81.7066666666667 262.6133333333334 64 218.6666666666667 64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C304 -21.3333333333333 347.9466666666666 -3.6266666666667 381.6533333333333 25.6L428.5866666666667 -21.3333333333333L455.6799999999999 5.76L82.9866666666667 378.24L62.2933333333333 399.1466666666667M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334M256 320C338.56 320 405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667C405.3333333333333 152.7466666666667 401.92 135.4666666666667 396.16 119.4666666666667L428.5866666666667 87.04C440.9599999999999 112.4266666666666 448 140.5866666666667 448 170.6666666666666C448 276.6933333333334 362.0266666666667 362.6666666666667 256 362.6666666666667C225.92 362.6666666666667 197.76 355.6266666666667 172.3733333333333 343.2533333333334L204.8 310.8266666666667C220.8 316.5866666666667 238.08 320 256 320z" /> + <glyph glyph-name="alarm-plus" + unicode="&#xF024;" + horiz-adv-x="512" d=" M277.3333333333333 256H234.6666666666667V192H170.6666666666667V149.3333333333334H234.6666666666667V85.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333V192H277.3333333333333M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68z" /> + <glyph glyph-name="album" + unicode="&#xF025;" + horiz-adv-x="512" d=" M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334M256 96C202.6666666666667 96 160 138.6666666666667 160 192S202.6666666666667 288 256 288S352 245.3333333333334 352 192S309.3333333333333 96 256 96M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="alert" + unicode="&#xF026;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334H234.6666666666667V234.6666666666667H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M21.3333333333333 0H490.6666666666666L256 405.3333333333333L21.3333333333333 0z" /> + <glyph glyph-name="alert-box" + unicode="&#xF027;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M277.3333333333333 170.6666666666667V298.6666666666667H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334V128H234.6666666666667V85.3333333333334H277.3333333333333z" /> + <glyph glyph-name="alert-circle" + unicode="&#xF028;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V298.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V128H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="alert-circle-outline" + unicode="&#xF5D6;" + horiz-adv-x="512" d=" M234.6666666666667 128H277.3333333333333V85.3333333333334H234.6666666666667V128M234.6666666666667 298.6666666666667H277.3333333333333V170.6666666666667H234.6666666666667V298.6666666666667M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="alert-octagon" + unicode="&#xF029;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V298.6666666666667H277.3333333333333M256 78.9333333333333C240.64 78.9333333333333 228.2666666666667 91.3066666666666 228.2666666666667 106.6666666666667C228.2666666666667 122.0266666666667 240.64 134.4 256 134.4C271.36 134.4 283.7333333333334 122.0266666666667 283.7333333333334 106.6666666666667C283.7333333333334 91.3066666666667 271.36 78.9333333333333 256 78.9333333333333M335.5733333333333 384H176.4266666666667L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334L335.5733333333333 384z" /> + <glyph glyph-name="alert-outline" + unicode="&#xF02A;" + horiz-adv-x="512" d=" M256 405.3333333333333L21.3333333333333 0H490.6666666666666M256 320L416.64 42.6666666666667H95.36M234.6666666666667 234.6666666666667V149.3333333333334H277.3333333333333V234.6666666666667M234.6666666666667 106.6666666666667V64H277.3333333333333V106.6666666666667" /> + <glyph glyph-name="alpha" + unicode="&#xF02B;" + horiz-adv-x="512" d=" M385.7066666666666 68.2666666666667C375.8933333333333 65.4933333333333 367.1466666666666 64 359.4666666666666 64C333.8666666666666 64 316.5866666666666 82.7733333333333 307.8399999999999 120.5333333333334H306.7733333333333C285.6533333333333 79.7866666666668 255.9999999999999 59.52 218.6666666666666 59.52C190.7199999999999 59.52 168.3199999999999 69.9733333333333 151.4666666666666 91.0933333333334S126.2933333333333 138.6666666666667 126.2933333333333 170.6666666666667C126.2933333333333 208 135.8933333333333 237.8666666666667 154.88 261.12C173.8666666666667 284.3733333333334 199.68 296.1066666666667 232.32 296.1066666666667C249.8133333333334 296.1066666666667 265.6 291.2 279.2533333333334 281.6C292.9066666666667 271.7866666666667 303.36 258.1333333333334 310.6133333333334 240.4266666666667H311.4666666666667L326.6133333333333 291.6266666666667H381.2266666666666L335.5733333333333 178.1333333333333C340.6933333333333 151.68 346.0266666666666 133.5466666666667 351.9999999999999 123.9466666666667C357.1199999999999 114.3466666666667 364.3733333333332 109.44 373.3333333333333 109.44C378.4533333333332 109.44 382.5066666666666 110.2933333333333 386.1333333333333 111.7866666666666L385.7066666666666 68.2666666666667M294.8266666666666 180.0533333333334C290.3466666666666 204.16 283.0933333333333 222.9333333333333 273.28 235.7333333333333C263.68 248.7466666666667 251.9466666666667 255.1466666666667 238.5066666666667 255.1466666666667C221.0133333333333 255.1466666666667 206.9333333333333 247.2533333333334 196.48 231.68C186.0266666666667 215.8933333333333 181.3333333333333 196.48 181.3333333333333 173.6533333333333C181.3333333333333 152.7466666666667 185.3866666666667 135.4666666666667 194.56 121.3866666666667C203.52 107.3066666666666 215.68 100.48 230.8266666666667 100.48C243.6266666666666 100.48 255.36 106.6666666666666 265.8133333333333 118.4C276.48 130.56 285.2266666666667 148.2666666666667 292.2666666666667 171.52L294.8266666666666 180.0533333333333z" /> + <glyph glyph-name="alphabetical" + unicode="&#xF02C;" + horiz-adv-x="512" d=" M128 213.3333333333334C151.4666666666667 213.3333333333334 170.6666666666667 194.1333333333333 170.6666666666667 170.6666666666667V85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V170.6666666666667C42.6666666666667 194.1333333333333 61.8666666666667 213.3333333333334 85.3333333333333 213.3333333333334H128M85.3333333333333 170.6666666666667V128H128V170.6666666666667H85.3333333333333M426.6666666666667 170.6666666666667V128H469.3333333333333V85.3333333333334H426.6666666666667C403.2 85.3333333333334 384 104.5333333333333 384 128V170.6666666666667C384 194.1333333333333 403.2 213.3333333333334 426.6666666666667 213.3333333333334H469.3333333333333V170.6666666666667H426.6666666666667M256 298.6666666666667V213.3333333333334H298.6666666666667C322.1333333333334 213.3333333333334 341.3333333333333 194.1333333333333 341.3333333333333 170.6666666666667V128C341.3333333333333 104.5333333333333 322.1333333333334 85.3333333333334 298.6666666666667 85.3333333333334H256C232.5333333333334 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128V298.6666666666667H256M256 128H298.6666666666667V170.6666666666667H256V128z" /> + <glyph glyph-name="altimeter" + unicode="&#xF5D7;" + horiz-adv-x="512" d=" M149.3333333333333 384V341.3333333333334H362.6666666666667V384H149.3333333333333M192 298.6666666666667V256H320V298.6666666666667H192M42.6666666666667 278.1866666666667V105.8133333333334L128.64 192L42.6666666666667 278.1866666666667M469.9733333333334 278.1866666666667L384 192L469.9733333333334 105.8133333333334V278.1866666666667M149.3333333333333 213.3333333333334V170.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333M192 128V85.3333333333334H320V128H192M149.3333333333333 42.6666666666667V0H362.6666666666667V42.6666666666667H149.3333333333333z" /> + <glyph glyph-name="amazon" + unicode="&#xF02D;" + horiz-adv-x="512" d=" M339.84 83.4133333333334C336 80 330.6666666666667 79.7866666666666 326.4 82.1333333333334C307.4133333333333 97.92 304 105.1733333333334 293.5466666666666 120.3200000000001C262.1866666666666 88.3200000000001 240 78.72 199.2533333333333 78.72C151.2533333333333 78.72 113.7066666666666 108.3733333333334 113.7066666666666 167.6800000000001C113.7066666666666 214.1866666666667 138.6666666666666 245.3333333333334 174.72 261.1200000000001C205.8666666666666 274.7733333333335 249.1733333333333 277.3333333333334 282.2399999999999 280.9600000000001V288C282.2399999999999 302.0800000000001 283.3066666666666 318.0800000000001 275.2 329.8133333333334C268.3733333333332 340.2666666666667 254.9333333333333 344.7466666666667 243.2 344.7466666666667C221.44 344.7466666666667 202.0266666666666 333.44 197.3333333333333 310.4C196.2666666666666 305.28 191.9999999999999 300.1600000000001 187.3066666666666 299.9466666666667L131.8399999999999 305.92C127.1466666666666 306.9866666666667 122.0266666666666 310.6133333333334 123.3066666666666 317.8666666666667C136.1066666666666 385.0666666666667 196.9066666666666 405.3333333333333 251.3066666666666 405.3333333333333C279.0399999999999 405.3333333333333 315.3066666666666 397.8666666666667 337.2799999999999 376.9600000000001C365.0133333333333 350.9333333333334 362.6666666666667 316.1600000000001 362.6666666666667 278.4V189.44C362.6666666666667 162.7733333333333 373.3333333333333 150.8266666666667 384 136.5333333333333C387.6266666666667 131.2 388.48 125.0133333333333 384 121.3866666666667L340.0533333333333 83.4133333333333H339.84M282.24 222.72V234.6666666666667C240.8533333333334 234.6666666666667 197.12 226.3466666666667 197.12 177.7066666666667C197.12 152.96 210.1333333333333 136.1066666666667 231.8933333333334 136.1066666666667C248.1066666666667 136.1066666666667 262.4 146.1333333333334 271.5733333333333 162.1333333333334C282.6666666666667 181.9733333333334 282.24 200.5333333333334 282.24 222.72M430.08 31.1466666666667C384 -2.9866666666667 316.16 -21.3333333333333 258.1333333333334 -21.3333333333333C176.8533333333333 -21.3333333333333 103.4666666666667 8.7466666666667 48 58.88C43.7333333333333 62.72 47.5733333333333 68.0533333333333 53.3333333333333 65.0666666666666C112.64 30.2933333333333 186.6666666666667 9.3866666666667 263.04 9.3866666666667C314.4533333333333 9.3866666666667 371.2 20.0533333333333 423.2533333333334 42.0266666666666C431.1466666666667 45.44 437.3333333333333 36.9066666666667 430.08 31.1466666666667M449.4933333333334 53.3333333333333C443.52 61.0133333333333 410.0266666666667 56.96 394.6666666666667 55.0399999999999C390.6133333333333 54.6133333333332 389.9733333333334 58.4533333333333 394.0266666666667 61.4399999999999C420.4799999999999 80.2133333333333 464.2133333333333 74.6666666666666 469.3333333333333 68.4799999999999C474.4533333333333 62.0799999999999 467.84 18.3466666666665 442.88 -2.3466666666668C439.04 -5.7600000000001 435.4133333333333 -3.8400000000001 437.3333333333333 -1e-13C442.88 14.2933333333332 455.4666666666667 45.6533333333332 449.4933333333334 53.3333333333332z" /> + <glyph glyph-name="amazon-clouddrive" + unicode="&#xF02E;" + horiz-adv-x="512" d=" M105.3866666666667 210.7733333333334C111.5733333333333 210.7733333333334 117.3333333333333 209.9200000000001 122.88 208.4266666666667C123.0933333333333 254.0800000000001 160 291.2000000000001 205.8666666666667 291.2000000000001C240.4266666666667 291.2000000000001 270.2933333333333 269.8666666666668 282.4533333333333 239.5733333333334C295.04 256 314.4533333333333 266.0266666666667 336.2133333333333 266.0266666666667C373.3333333333333 266.0266666666667 404.0533333333334 235.7333333333334 404.0533333333334 198.1866666666667C404.0533333333334 193.0666666666667 403.4133333333333 187.7333333333334 402.3466666666667 182.8266666666667C407.4666666666667 184.7466666666667 413.2266666666668 185.8133333333334 419.2000000000001 185.8133333333334C446.9333333333334 185.8133333333334 469.3333333333334 163.2000000000001 469.3333333333334 135.4666666666667C469.3333333333334 107.7333333333334 446.9333333333334 85.3333333333334 419.2000000000001 85.3333333333334H105.3866666666667C70.8266666666667 85.3333333333334 42.6666666666667 113.4933333333334 42.6666666666667 148.0533333333334C42.6666666666667 182.8266666666667 70.8266666666667 210.7733333333333 105.3866666666667 210.7733333333333z" /> + <glyph glyph-name="ambulance" + unicode="&#xF02F;" + horiz-adv-x="512" d=" M384 53.3333333333334C401.7066666666666 53.3333333333334 416 67.6266666666667 416 85.3333333333334S401.7066666666666 117.3333333333334 384 117.3333333333334S352 103.04 352 85.3333333333334S366.2933333333334 53.3333333333334 384 53.3333333333334M416 245.3333333333334H362.6666666666667V192H457.8133333333333L416 245.3333333333334M128 53.3333333333334C145.7066666666667 53.3333333333334 160 67.6266666666667 160 85.3333333333334S145.7066666666667 117.3333333333334 128 117.3333333333334S96 103.04 96 85.3333333333334S110.2933333333333 53.3333333333334 128 53.3333333333334M426.6666666666667 277.3333333333334L490.6666666666666 192V85.3333333333334H448C448 49.92 419.4133333333333 21.3333333333334 384 21.3333333333334S320 49.92 320 85.3333333333334H192C192 49.92 163.4133333333333 21.3333333333334 128 21.3333333333334S64 49.92 64 85.3333333333334H21.3333333333333V320C21.3333333333333 343.68 40.32 362.6666666666667 64 362.6666666666667H362.6666666666667V277.3333333333334H426.6666666666667M170.6666666666667 320V256H106.6666666666667V213.3333333333334H170.6666666666667V149.3333333333334H213.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333V320H170.6666666666667z" /> + <glyph glyph-name="amplifier" + unicode="&#xF030;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333H298.6666666666667C310.4 405.3333333333333 320 395.7333333333334 320 384H448V0H405.3333333333333C405.3333333333333 -11.7333333333333 395.7333333333334 -21.3333333333333 384 -21.3333333333333S362.6666666666667 -11.7333333333333 362.6666666666667 0H149.3333333333333C149.3333333333333 -11.7333333333333 139.7333333333333 -21.3333333333333 128 -21.3333333333333S106.6666666666667 -11.7333333333333 106.6666666666667 0H64V384H192C192 395.7333333333334 201.6 405.3333333333333 213.3333333333333 405.3333333333333M106.6666666666667 341.3333333333334V256H405.3333333333333V341.3333333333334H106.6666666666667M149.3333333333333 320C161.0666666666667 320 170.6666666666667 310.4 170.6666666666667 298.6666666666667S161.0666666666667 277.3333333333334 149.3333333333333 277.3333333333334S128 286.9333333333334 128 298.6666666666667S137.6 320 149.3333333333333 320M256 320H298.6666666666667V298.6666666666667H256V320M320 320H341.3333333333333V277.3333333333334H320V320M362.6666666666667 320H384V277.3333333333334H362.6666666666667V320M256 213.3333333333334C208.8533333333333 213.3333333333334 170.6666666666667 175.1466666666667 170.6666666666667 128S208.8533333333333 42.6666666666667 256 42.6666666666667S341.3333333333333 80.8533333333334 341.3333333333333 128S303.1466666666667 213.3333333333334 256 213.3333333333334M213.3333333333333 320C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334S192 286.9333333333334 192 298.6666666666667S201.6 320 213.3333333333333 320z" /> + <glyph glyph-name="anchor" + unicode="&#xF031;" + horiz-adv-x="512" d=" M256 405.3333333333333C220.5866666666667 405.3333333333333 192 376.7466666666667 192 341.3333333333334C192 314.24 209.0666666666667 290.1333333333334 234.6666666666667 280.9600000000001V234.6666666666667H170.6666666666667V192H234.6666666666667V44.3733333333333C195.4133333333333 50.5599999999999 160.64 73.1733333333334 139.3066666666667 106.6666666666667H170.6666666666667V149.3333333333334H64V42.6666666666667H106.6666666666667V78.9333333333333C140.3733333333333 29.6533333333334 196.2666666666667 0 256 0S371.6266666666667 29.6533333333334 405.3333333333333 78.72V42.6666666666667H448V149.3333333333334H341.3333333333333V106.6666666666667H372.48C351.1466666666667 73.3866666666667 316.3733333333334 50.5600000000001 277.3333333333333 44.3733333333333V192H341.3333333333333V234.6666666666667H277.3333333333333V281.1733333333334C302.9333333333333 290.1333333333334 320 314.24 320 341.3333333333334C320 376.7466666666667 291.4133333333333 405.3333333333333 256 405.3333333333333M256 362.6666666666667C267.7333333333334 362.6666666666667 277.3333333333333 353.0666666666667 277.3333333333333 341.3333333333334S267.7333333333334 320 256 320S234.6666666666667 329.6 234.6666666666667 341.3333333333334S244.2666666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="android" + unicode="&#xF032;" + horiz-adv-x="512" d=" M320 341.3333333333334H298.6666666666667V362.6666666666667H320M213.3333333333333 341.3333333333334H192V362.6666666666667H213.3333333333333M331.3066666666667 401.92L359.2533333333334 429.8666666666667C363.3066666666667 433.92 363.3066666666667 440.7466666666667 359.2533333333334 445.0133333333333C354.9866666666667 449.0666666666667 348.16 449.0666666666667 344.1066666666667 445.0133333333333L312.5333333333333 413.44C295.4666666666667 421.76 276.2666666666667 426.6666666666667 256 426.6666666666667C235.52 426.6666666666667 216.32 421.76 199.2533333333333 413.2266666666667L167.4666666666667 445.0133333333333C163.4133333333333 449.0666666666667 156.5866666666667 449.0666666666667 152.5333333333333 445.0133333333333C148.2666666666667 440.7466666666667 148.2666666666667 433.92 152.5333333333333 429.8666666666667L180.48 401.92C148.6933333333333 378.4533333333334 128 341.3333333333334 128 298.6666666666667H384C384 341.3333333333334 362.6666666666667 378.6666666666667 331.3066666666666 401.92M437.3333333333333 277.3333333333334C419.6266666666667 277.3333333333334 405.3333333333333 263.04 405.3333333333333 245.3333333333334V96C405.3333333333333 78.2933333333334 419.6266666666667 64 437.3333333333333 64S469.3333333333333 78.2933333333334 469.3333333333333 96V245.3333333333334C469.3333333333333 263.04 455.04 277.3333333333334 437.3333333333333 277.3333333333334M74.6666666666667 277.3333333333334C56.96 277.3333333333334 42.6666666666667 263.04 42.6666666666667 245.3333333333334V96C42.6666666666667 78.2933333333334 56.96 64 74.6666666666667 64S106.6666666666667 78.2933333333334 106.6666666666667 96V245.3333333333334C106.6666666666667 263.04 92.3733333333333 277.3333333333334 74.6666666666667 277.3333333333334M128 64C128 52.2666666666667 137.6 42.6666666666667 149.3333333333333 42.6666666666667H170.6666666666667V-32C170.6666666666667 -49.7066666666666 184.96 -64 202.6666666666667 -64S234.6666666666667 -49.7066666666666 234.6666666666667 -32V42.6666666666667H277.3333333333333V-32C277.3333333333333 -49.7066666666666 291.6266666666667 -64 309.3333333333333 -64S341.3333333333333 -49.7066666666666 341.3333333333333 -32V42.6666666666667H362.6666666666667C374.4 42.6666666666667 384 52.2666666666667 384 64V277.3333333333334H128V64z" /> + <glyph glyph-name="android-debug-bridge" + unicode="&#xF033;" + horiz-adv-x="512" d=" M320 256C308.2666666666667 256 298.6666666666667 265.6 298.6666666666667 277.3333333333334S308.2666666666667 298.6666666666667 320 298.6666666666667S341.3333333333333 289.0666666666667 341.3333333333333 277.3333333333334S331.7333333333334 256 320 256M192 256C180.2666666666667 256 170.6666666666667 265.6 170.6666666666667 277.3333333333334S180.2666666666667 298.6666666666667 192 298.6666666666667S213.3333333333333 289.0666666666667 213.3333333333333 277.3333333333334S203.7333333333334 256 192 256M343.8933333333333 354.7733333333333L388.6933333333334 399.5733333333333L371.2000000000001 417.28L321.92 368C302.08 378.0266666666667 279.68 384 256 384C232.1066666666667 384 209.92 378.0266666666667 190.08 368L140.8 417.28L123.3066666666667 399.5733333333333L168.1066666666666 354.7733333333333C130.9866666666667 327.68 106.6666666666667 284.1600000000001 106.6666666666667 234.6666666666667V213.3333333333334H405.3333333333333V234.6666666666667C405.3333333333333 284.1600000000001 381.0133333333333 327.68 343.8933333333333 354.7733333333333M106.6666666666667 106.6666666666667C106.6666666666667 24.3200000000001 173.44 -42.6666666666666 256 -42.6666666666666S405.3333333333333 24.1066666666667 405.3333333333333 106.6666666666667V192H106.6666666666667V106.6666666666667z" /> + <glyph glyph-name="android-studio" + unicode="&#xF034;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333H277.3333333333333V362.6666666666667H288C305.7066666666667 362.6666666666667 320 348.3733333333334 320 330.6666666666667V256L310.6133333333334 246.6133333333334L345.6 186.0266666666667C369.28 209.28 384 241.4933333333334 384 277.3333333333334H426.6666666666667C426.6666666666667 225.7066666666667 403.84 179.4133333333334 367.5733333333333 148.0533333333334L434.56 32L437.3333333333333 -15.36L397.44 10.6666666666667L331.9466666666666 124.3733333333333C309.3333333333333 113.0666666666667 283.3066666666666 106.6666666666667 256 106.6666666666667C228.6933333333333 106.6666666666667 202.6666666666666 113.0666666666667 180.0533333333333 124.3733333333333L114.56 10.6666666666667L74.6666666666667 -15.36L77.44 32L201.3866666666667 246.6133333333334L192 256V330.6666666666667C192 348.3733333333334 206.2933333333333 362.6666666666667 224 362.6666666666667H234.6666666666667V405.3333333333333M201.3866666666667 161.4933333333334C218.0266666666667 153.6 236.5866666666667 149.3333333333334 256 149.3333333333334C275.4133333333333 149.3333333333334 293.9733333333333 153.6 310.6133333333334 161.4933333333334L279.4666666666667 215.4666666666667H279.2533333333334C266.0266666666667 202.6666666666667 245.9733333333333 202.6666666666667 232.7466666666667 215.4666666666667H232.5333333333334L201.3866666666667 161.4933333333334M256 320C244.2666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S244.2666666666667 277.3333333333334 256 277.3333333333334S277.3333333333333 286.9333333333334 277.3333333333333 298.6666666666667S267.7333333333334 320 256 320z" /> + <glyph glyph-name="animation" + unicode="&#xF5D8;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V149.3333333333334H85.3333333333333V362.6666666666667H298.6666666666667V405.3333333333333H85.3333333333333M170.6666666666667 320C146.9866666666667 320 128 301.0133333333333 128 277.3333333333334V64H170.6666666666667V277.3333333333334H384V320H170.6666666666667M256 234.6666666666667C232.32 234.6666666666667 213.3333333333333 215.68 213.3333333333333 192V21.3333333333334C213.3333333333333 -2.3466666666666 232.32 -21.3333333333333 256 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V192C469.3333333333333 215.68 450.3466666666667 234.6666666666667 426.6666666666667 234.6666666666667H256z" /> + <glyph glyph-name="apple" + unicode="&#xF035;" + horiz-adv-x="512" d=" M399.1466666666667 32C381.4400000000001 5.5466666666667 362.6666666666667 -20.2666666666666 334.08 -20.6933333333333C305.4933333333334 -21.3333333333333 296.32 -3.84 263.8933333333333 -3.84C231.2533333333334 -3.84 221.2266666666667 -20.2666666666666 194.1333333333334 -21.3333333333333C166.1866666666667 -22.4 145.0666666666667 6.8266666666667 127.1466666666667 32.64C90.6666666666667 85.3333333333334 62.72 182.4 100.2666666666667 247.68C118.8266666666667 280.1066666666667 152.1066666666667 300.5866666666667 188.16 301.2266666666667C215.4666666666667 301.6533333333333 241.4933333333334 282.6666666666667 258.3466666666667 282.6666666666667C274.9866666666666 282.6666666666667 306.56 305.4933333333334 339.6266666666667 302.08C353.4933333333334 301.44 392.32 296.5333333333333 417.28 259.8400000000001C415.36 258.56 370.9866666666667 232.5333333333334 371.4133333333333 178.56C372.0533333333334 114.1333333333333 427.9466666666666 92.5866666666667 428.5866666666667 92.3733333333333C427.9466666666666 90.88 419.6266666666666 61.6533333333333 399.1466666666667 32M277.3333333333333 373.3333333333334C292.9066666666667 391.04 318.72 404.48 340.0533333333333 405.3333333333333C342.8266666666667 380.3733333333334 332.8 355.2000000000001 317.8666666666666 337.2800000000001C303.1466666666667 319.1466666666667 278.8266666666666 305.0666666666667 254.9333333333333 306.9866666666667C251.7333333333333 331.5200000000001 263.68 357.12 277.3333333333333 373.3333333333334z" /> + <glyph glyph-name="apple-finder" + unicode="&#xF036;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H253.6533333333334C265.8133333333334 385.92 280.1066666666667 407.8933333333333 297.1733333333333 426.6666666666667L320.8533333333333 402.9866666666667C311.68 390.4 303.5733333333333 376.7466666666667 296.32 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H318.5066666666667L325.5466666666666 -26.24L286.5066666666667 -41.6L275.84 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M85.3333333333333 320V42.6666666666667H267.52C266.6666666666667 49.7066666666667 265.3866666666667 56.7466666666667 264.5333333333333 64H256C197.3333333333333 64 144.64 74.6666666666667 109.44 90.4533333333333L128.8533333333333 125.44C149.3333333333333 114.3466666666667 195.6266666666667 106.6666666666667 256 106.6666666666667H261.12C260.48 120.96 260.6933333333334 135.2533333333333 261.76 149.3333333333334H192S200.5333333333333 235.3066666666667 234.6666666666667 320H85.3333333333333M426.6666666666667 42.6666666666667V320H277.3333333333333C258.1333333333334 272.64 247.04 224.8533333333333 241.0666666666667 192H302.2933333333334C298.6666666666667 164.6933333333334 298.0266666666667 136.1066666666667 299.9466666666667 108.16C338.5600000000001 110.9333333333334 368.0000000000001 117.3333333333334 383.1466666666667 125.4400000000001L402.56 90.4533333333334C377.3866666666667 78.9333333333334 343.4666666666667 70.4 304.8533333333334 66.3466666666668C306.1333333333334 58.2400000000001 307.4133333333333 50.3466666666668 309.3333333333334 42.6666666666667H426.6666666666667M128 277.3333333333334H170.6666666666667V213.3333333333334H128V277.3333333333334M341.3333333333333 277.3333333333334H384V213.3333333333334H341.3333333333333V277.3333333333334z" /> + <glyph glyph-name="apple-ios" + unicode="&#xF037;" + horiz-adv-x="512" d=" M426.6666666666667 256V298.6666666666667H341.3333333333333C317.8666666666667 298.6666666666667 298.6666666666667 279.4666666666667 298.6666666666667 256V213.3333333333334C298.6666666666667 189.8666666666667 317.8666666666667 170.6666666666667 341.3333333333333 170.6666666666667H384V128H298.6666666666667V85.3333333333334H384C407.4666666666667 85.3333333333334 426.6666666666667 104.5333333333333 426.6666666666667 128V170.6666666666667C426.6666666666667 194.1333333333333 407.4666666666667 213.3333333333334 384 213.3333333333334H341.3333333333333V256M234.6666666666667 128H192V256H234.6666666666667M234.6666666666667 298.6666666666667H192C168.5333333333333 298.6666666666667 149.3333333333333 279.4666666666667 149.3333333333333 256V128C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334H234.6666666666667C258.1333333333334 85.3333333333334 277.3333333333333 104.5333333333333 277.3333333333333 128V256C277.3333333333333 279.4666666666667 258.1333333333334 298.6666666666667 234.6666666666667 298.6666666666667M85.3333333333333 85.3333333333334H128V213.3333333333334H85.3333333333333M85.3333333333333 256H128V298.6666666666667H85.3333333333333V256z" /> + <glyph glyph-name="apple-keyboard-caps" + unicode="&#xF632;" + horiz-adv-x="512" d=" M320 149.3333333333334V277.3333333333334H366.2933333333334L256 387.6266666666667L145.7066666666667 277.3333333333334H192V149.3333333333334H320M256 448L469.3333333333333 234.6666666666667H362.6666666666667V106.6666666666667H149.3333333333333V234.6666666666667H42.6666666666667L256 448M149.3333333333333 64H362.6666666666667V-64H149.3333333333333V64M320 21.3333333333334H192V-21.3333333333333H320V21.3333333333334z" /> + <glyph glyph-name="apple-keyboard-command" + unicode="&#xF633;" + horiz-adv-x="512" d=" M128 405.3333333333333C175.1466666666667 405.3333333333333 213.3333333333333 367.1466666666667 213.3333333333333 320V277.3333333333334H298.6666666666667V320C298.6666666666667 367.1466666666667 336.8533333333333 405.3333333333333 384 405.3333333333333S469.3333333333333 367.1466666666667 469.3333333333333 320S431.1466666666667 234.6666666666667 384 234.6666666666667H341.3333333333333V149.3333333333334H384C431.1466666666667 149.3333333333334 469.3333333333333 111.1466666666667 469.3333333333333 64S431.1466666666667 -21.3333333333333 384 -21.3333333333333S298.6666666666667 16.8533333333334 298.6666666666667 64V106.6666666666667H213.3333333333333V64C213.3333333333333 16.8533333333334 175.1466666666667 -21.3333333333333 128 -21.3333333333333S42.6666666666667 16.8533333333334 42.6666666666667 64S80.8533333333333 149.3333333333334 128 149.3333333333334H170.6666666666667V234.6666666666667H128C80.8533333333333 234.6666666666667 42.6666666666667 272.8533333333334 42.6666666666667 320S80.8533333333333 405.3333333333333 128 405.3333333333333M341.3333333333333 64C341.3333333333333 40.5333333333333 360.5333333333333 21.3333333333334 384 21.3333333333334S426.6666666666667 40.5333333333333 426.6666666666667 64S407.4666666666667 106.6666666666667 384 106.6666666666667H341.3333333333333V64M298.6666666666667 234.6666666666667H213.3333333333333V149.3333333333334H298.6666666666667V234.6666666666667M128 106.6666666666667C104.5333333333333 106.6666666666667 85.3333333333333 87.4666666666667 85.3333333333333 64S104.5333333333333 21.3333333333334 128 21.3333333333334S170.6666666666667 40.5333333333333 170.6666666666667 64V106.6666666666667H128M170.6666666666667 320C170.6666666666667 343.4666666666667 151.4666666666667 362.6666666666667 128 362.6666666666667S85.3333333333333 343.4666666666667 85.3333333333333 320S104.5333333333333 277.3333333333334 128 277.3333333333334H170.6666666666667V320M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 296.5333333333334 426.6666666666667 320S407.4666666666667 362.6666666666667 384 362.6666666666667S341.3333333333333 343.4666666666667 341.3333333333333 320V277.3333333333334H384z" /> + <glyph glyph-name="apple-keyboard-control" + unicode="&#xF634;" + horiz-adv-x="512" d=" M421.9733333333334 196.6933333333334L391.68 166.6133333333334L256 302.2933333333334L120.32 166.6133333333334L90.0266666666667 196.6933333333333L256 362.6666666666667L421.9733333333334 196.6933333333333z" /> + <glyph glyph-name="apple-keyboard-option" + unicode="&#xF635;" + horiz-adv-x="512" d=" M64 362.6666666666667H194.3466666666666L344.5333333333333 64H448V21.3333333333334H317.44L167.2533333333333 320H64V362.6666666666667M298.6666666666667 362.6666666666667H448V320H298.6666666666667V362.6666666666667z" /> + <glyph glyph-name="apple-keyboard-shift" + unicode="&#xF636;" + horiz-adv-x="512" d=" M320 64V192H366.2933333333334L256 302.2933333333334L145.7066666666667 192H192V64H320M256 362.6666666666667L469.3333333333333 149.3333333333334H362.6666666666667V21.3333333333334H149.3333333333333V149.3333333333334H42.6666666666667L256 362.6666666666667z" /> + <glyph glyph-name="apple-mobileme" + unicode="&#xF038;" + horiz-adv-x="512" d=" M469.3333333333333 127.1466666666667C469.3333333333333 80.4266666666667 431.7866666666667 42.6666666666667 385.4933333333334 42.6666666666667H126.5066666666667C80.2133333333333 42.6666666666667 42.6666666666667 80.4266666666667 42.6666666666667 127.1466666666667C42.6666666666667 169.1733333333334 73.1733333333333 203.9466666666667 113.28 210.3466666666667C112.64 213.3333333333334 112.4266666666667 216.32 112.4266666666667 219.5200000000001C112.4266666666667 248.9600000000001 136.1066666666667 273.0666666666667 165.5466666666667 273.0666666666667C178.56 273.0666666666667 190.72 268.1600000000001 199.8933333333334 260.2666666666667C216.32 297.6 237.44 331.9466666666667 296.7466666666667 331.9466666666667C368.64 331.9466666666667 402.56 276.0533333333334 402.56 216.96C402.56 214.6133333333334 402.56 212.0533333333334 402.3466666666667 209.7066666666667C440.5333333333333 201.8133333333334 469.3333333333333 167.8933333333334 469.3333333333333 127.1466666666667z" /> + <glyph glyph-name="apple-safari" + unicode="&#xF039;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 147.4133333333334 102.4 106.6666666666667 130.3466666666666 76.5866666666667L210.7733333333333 237.2266666666667L371.4133333333333 317.6533333333334C341.3333333333333 345.6 300.5866666666667 362.6666666666667 256 362.6666666666667M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 236.5866666666667 409.6 277.3333333333334 381.6533333333333 307.4133333333334L301.2266666666667 146.7733333333333L140.5866666666667 66.3466666666667C170.6666666666667 38.4 211.4133333333333 21.3333333333334 256 21.3333333333334M256 192L239.5733333333333 208.4266666666667L206.9333333333333 142.9333333333333L272.4266666666666 175.5733333333333L256 192M256 74.6666666666667H277.3333333333333V42.6666666666667H256V74.6666666666667M338.7733333333333 109.0133333333333L353.92 124.16L376.5333333333333 101.5466666666667L361.3866666666666 86.4L338.7733333333333 109.0133333333334M373.3333333333333 192V213.3333333333334H405.3333333333333V192H373.3333333333333M256 309.3333333333334H234.6666666666667V341.3333333333334H256V309.3333333333334M173.2266666666666 274.9866666666667L158.08 259.8400000000001L135.4666666666667 282.4533333333334L150.6133333333333 297.6L173.2266666666666 274.9866666666667M138.6666666666667 192V170.6666666666667H106.6666666666667V192H138.6666666666667z" /> + <glyph glyph-name="application" + unicode="&#xF614;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667C429.0133333333333 362.6666666666667 448 343.4666666666667 448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C82.9866666666667 21.3333333333334 64 40.5333333333333 64 64V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H405.3333333333333M405.3333333333333 64V277.3333333333334H106.6666666666667V64H405.3333333333333z" /> + <glyph glyph-name="appnet" + unicode="&#xF03A;" + horiz-adv-x="512" d=" M308.6933333333334 253.0133333333333C321.4933333333334 283.9466666666667 345.1733333333333 356.6933333333334 348.8 369.4933333333334C352 382.08 361.6 384 366.9333333333334 384H410.6666666666668C417.9200000000001 384 421.9733333333334 378.4533333333333 420.2666666666667 369.4933333333334C374.4000000000001 207.5733333333334 343.2533333333334 160 343.2533333333334 149.3333333333334C343.2533333333334 122.0266666666667 372.4800000000001 71.04 399.7866666666667 71.04C416.0000000000001 71.04 412.5866666666667 94.72 430.7200000000001 94.72H465.28C470.8266666666667 94.72 476.1600000000001 89.1733333333333 476.1600000000001 79.9999999999999C476.1600000000001 71.0399999999999 466.1333333333334 -1e-13 397.0133333333334 -1e-13C327.6800000000001 -1e-13 301.8666666666667 83.6266666666666 301.8666666666667 83.6266666666666C292.9066666666667 65.4933333333332 239.5733333333334 -1e-13 174.0800000000001 -1e-13C57.6 -1e-13 35.84 123.7333333333332 35.84 196.4799999999999C35.84 269.4400000000001 70.4 384 168.7466666666667 384C266.6666666666667 384 308.6933333333333 253.0133333333333 308.6933333333333 253.0133333333333M96 202.0266666666667C96 160 94.08 72.7466666666667 170.6666666666667 71.0400000000001C214.1866666666667 69.1200000000001 254.08 123.7333333333334 273.28 167.4666666666667C246.8266666666667 258.3466666666667 228.6933333333334 312.9600000000001 170.6666666666667 312.9600000000001C92.16 311.2533333333334 96 202.0266666666667 96 202.0266666666667z" /> + <glyph glyph-name="apps" + unicode="&#xF03B;" + horiz-adv-x="512" d=" M341.3333333333333 21.3333333333334H426.6666666666667V106.6666666666667H341.3333333333333M341.3333333333333 149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333M213.3333333333333 277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M213.3333333333333 149.3333333333334H298.6666666666667V234.6666666666667H213.3333333333333M85.3333333333333 149.3333333333334H170.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 21.3333333333334H170.6666666666667V106.6666666666667H85.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V106.6666666666667H213.3333333333333M85.3333333333333 277.3333333333334H170.6666666666667V362.6666666666667H85.3333333333333V277.3333333333334z" /> + <glyph glyph-name="archive" + unicode="&#xF03C;" + horiz-adv-x="512" d=" M64 384H448V298.6666666666667H64V384M85.3333333333333 277.3333333333334H426.6666666666667V0H85.3333333333333V277.3333333333334M202.6666666666667 213.3333333333334C196.6933333333333 213.3333333333334 192 208.64 192 202.6666666666667V170.6666666666667H320V202.6666666666667C320 208.64 315.3066666666666 213.3333333333334 309.3333333333333 213.3333333333334H202.6666666666667z" /> + <glyph glyph-name="arrange-bring-forward" + unicode="&#xF03D;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H341.3333333333333V106.6666666666667H42.6666666666667V405.3333333333333M469.3333333333333 277.3333333333334V-21.3333333333333H170.6666666666667V64H213.3333333333333V21.3333333333334H426.6666666666667V234.6666666666667H384V277.3333333333334H469.3333333333333z" /> + <glyph glyph-name="arrange-bring-to-front" + unicode="&#xF03E;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V320H192V362.6666666666667H85.3333333333333V256H128V213.3333333333334H42.6666666666667V405.3333333333333M469.3333333333333 170.6666666666667V-21.3333333333333H277.3333333333333V64H320V21.3333333333334H426.6666666666667V128H384V170.6666666666667H469.3333333333333M170.6666666666667 277.3333333333334H341.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334z" /> + <glyph glyph-name="arrange-send-backward" + unicode="&#xF03F;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H341.3333333333333V106.6666666666667H42.6666666666667V405.3333333333333M469.3333333333333 277.3333333333334V-21.3333333333333H170.6666666666667V64H384V277.3333333333334H469.3333333333333M85.3333333333333 362.6666666666667V149.3333333333334H298.6666666666667V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrange-send-to-back" + unicode="&#xF040;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V213.3333333333334H42.6666666666667V405.3333333333333M192 362.6666666666667H85.3333333333333V256H192V362.6666666666667M469.3333333333333 170.6666666666667V-21.3333333333333H277.3333333333333V170.6666666666667H469.3333333333333M320 21.3333333333334H426.6666666666667V128H320V21.3333333333334M341.3333333333333 277.3333333333334V213.3333333333334H277.3333333333333V277.3333333333334H341.3333333333333M234.6666666666667 106.6666666666667H170.6666666666667V170.6666666666667H234.6666666666667V106.6666666666667z" /> + <glyph glyph-name="arrow-all" + unicode="&#xF041;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H384L352 245.3333333333334L382.2933333333334 275.6266666666667L465.92 192L382.2933333333334 108.3733333333333L352 138.6666666666667L384 170.6666666666667H277.3333333333333V64L309.3333333333333 96L339.6266666666667 65.7066666666667L256 -17.92L172.3733333333333 65.7066666666667L202.6666666666667 96L234.6666666666667 64V170.6666666666667H128L160 138.6666666666667L129.7066666666667 108.3733333333333L46.08 192L129.7066666666667 275.6266666666667L160 245.3333333333334L128 213.3333333333334H234.6666666666667V320L202.6666666666667 288L172.3733333333333 318.2933333333334L256 401.92L339.6266666666667 318.2933333333334L309.3333333333333 288L277.3333333333333 320V213.3333333333334z" /> + <glyph glyph-name="arrow-bottom-left" + unicode="&#xF042;" + horiz-adv-x="512" d=" M405.3333333333333 311.2533333333334L375.2533333333334 341.3333333333334L149.3333333333333 115.4133333333334V256H106.6666666666667V42.6666666666667H320V85.3333333333334H179.4133333333333L405.3333333333333 311.2533333333334z" /> + <glyph glyph-name="arrow-bottom-right" + unicode="&#xF043;" + horiz-adv-x="512" d=" M106.6666666666667 311.2533333333334L136.7466666666667 341.3333333333334L362.6666666666667 115.4133333333334V256H405.3333333333333V42.6666666666667H192V85.3333333333334H332.5866666666667L106.6666666666667 311.2533333333334z" /> + <glyph glyph-name="arrow-compress" + unicode="&#xF615;" + horiz-adv-x="512" d=" M416 382.0800000000001L320 286.0800000000001V362.6666666666667H277.3333333333333V213.3333333333334H426.6666666666667V256H350.08L446.08 352L416 382.0800000000001M85.3333333333333 170.6666666666667V128H161.92L65.92 32L96 1.92L192 97.92V21.3333333333334H234.6666666666667V170.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrow-compress-all" + unicode="&#xF044;" + horiz-adv-x="512" d=" M416 382.0800000000001L446.08 352L350.08 256H426.6666666666667V213.3333333333334H277.3333333333333V362.6666666666667H320V286.0800000000001L416 382.0800000000001M446.08 32L416 1.92L320 97.92V21.3333333333334H277.3333333333333V170.6666666666667H426.6666666666667V128H350.08L446.08 32M96 382.0800000000001L192 286.0800000000001V362.6666666666667H234.6666666666667V213.3333333333334H85.3333333333333V256H161.92L65.92 352L96 382.0800000000001M65.92 32L161.92 128H85.3333333333333V170.6666666666667H234.6666666666667V21.3333333333334H192V97.92L96 1.92L65.92 32z" /> + <glyph glyph-name="arrow-down" + unicode="&#xF045;" + horiz-adv-x="512" d=" M234.6666666666667 362.6666666666667H277.3333333333333V106.6666666666667L394.6666666666667 224L424.9600000000001 193.7066666666667L256 24.7466666666667L87.04 193.7066666666667L117.3333333333333 224L234.6666666666667 106.6666666666667V362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold" + unicode="&#xF046;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H298.6666666666667V170.6666666666667L373.3333333333333 245.3333333333334L424.9600000000001 193.7066666666667L256 24.7466666666667L87.04 193.7066666666667L138.6666666666667 245.3333333333334L213.3333333333333 170.6666666666667V362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold-circle" + unicode="&#xF047;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 85.3333333333334L362.6666666666667 192H298.6666666666667V277.3333333333334H213.3333333333333V192H149.3333333333333L256 85.3333333333334z" /> + <glyph glyph-name="arrow-down-bold-circle-outline" + unicode="&#xF048;" + horiz-adv-x="512" d=" M256 85.3333333333334L149.3333333333333 192H213.3333333333333V277.3333333333334H298.6666666666667V192H362.6666666666667L256 85.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold-hexagon-outline" + unicode="&#xF049;" + horiz-adv-x="512" d=" M256 85.3333333333334L149.3333333333333 192H213.3333333333333V277.3333333333334H298.6666666666667V192H362.6666666666667L256 85.3333333333334M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-down-drop-circle" + unicode="&#xF04A;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="arrow-down-drop-circle-outline" + unicode="&#xF04B;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.2933333333334 362.6666666666667 426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="arrow-expand" + unicode="&#xF616;" + horiz-adv-x="512" d=" M213.3333333333333 0V42.6666666666667H136.7466666666667L232.7466666666667 138.6666666666667L202.6666666666667 168.7466666666667L106.6666666666667 72.7466666666667V149.3333333333334H64V0H213.3333333333333M309.3333333333333 215.2533333333333L405.3333333333333 311.2533333333334V234.6666666666667H448V384H298.6666666666667V341.3333333333334H375.2533333333334L279.2533333333334 245.3333333333334L309.3333333333333 215.2533333333333z" /> + <glyph glyph-name="arrow-expand-all" + unicode="&#xF04C;" + horiz-adv-x="512" d=" M202.6666666666667 168.7466666666667L232.7466666666667 138.6666666666667L136.7466666666667 42.6666666666667H213.3333333333333V0H64V149.3333333333334H106.6666666666667V72.7466666666667L202.6666666666667 168.7466666666667M232.7466666666667 245.3333333333334L202.6666666666667 215.2533333333333L106.6666666666667 311.2533333333334V234.6666666666667H64V384H213.3333333333333V341.3333333333334H136.7466666666667L232.7466666666667 245.3333333333334M309.3333333333333 168.7466666666667L405.3333333333333 72.7466666666667V149.3333333333334H448V0H298.6666666666667V42.6666666666667H375.2533333333334L279.2533333333334 138.6666666666667L309.3333333333333 168.7466666666667M279.2533333333334 245.3333333333334L375.2533333333334 341.3333333333334H298.6666666666667V384H448V234.6666666666667H405.3333333333333V311.2533333333334L309.3333333333333 215.2533333333333L279.2533333333334 245.3333333333334z" /> + <glyph glyph-name="arrow-left" + unicode="&#xF04D;" + horiz-adv-x="512" d=" M426.6666666666667 213.3333333333334V170.6666666666667H170.6666666666667L288 53.3333333333334L257.7066666666667 23.04L88.7466666666667 192L257.7066666666667 360.9600000000001L288 330.6666666666667L170.6666666666667 213.3333333333334H426.6666666666667z" /> + <glyph glyph-name="arrow-left-bold" + unicode="&#xF04E;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667V149.3333333333334H234.6666666666667L309.3333333333333 74.6666666666667L257.7066666666667 23.04L88.7466666666667 192L257.7066666666667 360.9600000000001L309.3333333333333 309.3333333333334L234.6666666666667 234.6666666666667H426.6666666666667z" /> + <glyph glyph-name="arrow-left-bold-circle" + unicode="&#xF04F;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M149.3333333333333 192L256 85.3333333333334V149.3333333333334H341.3333333333333V234.6666666666667H256V298.6666666666667L149.3333333333333 192z" /> + <glyph glyph-name="arrow-left-bold-circle-outline" + unicode="&#xF050;" + horiz-adv-x="512" d=" M149.3333333333333 192L256 298.6666666666667V234.6666666666667H341.3333333333333V149.3333333333334H256V85.3333333333334L149.3333333333333 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192z" /> + <glyph glyph-name="arrow-left-bold-hexagon-outline" + unicode="&#xF051;" + horiz-adv-x="512" d=" M149.3333333333333 192L256 298.6666666666667V234.6666666666667H341.3333333333333V149.3333333333334H256V85.3333333333334L149.3333333333333 192M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-left-drop-circle" + unicode="&#xF052;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="arrow-left-drop-circle-outline" + unicode="&#xF053;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192M426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="arrow-right" + unicode="&#xF054;" + horiz-adv-x="512" d=" M85.3333333333333 213.3333333333334V170.6666666666667H341.3333333333333L224 53.3333333333334L254.2933333333333 23.04L423.2533333333334 192L254.2933333333333 360.9600000000001L224 330.6666666666667L341.3333333333333 213.3333333333334H85.3333333333333z" /> + <glyph glyph-name="arrow-right-bold" + unicode="&#xF055;" + horiz-adv-x="512" d=" M85.3333333333333 234.6666666666667V149.3333333333334H277.3333333333333L202.6666666666667 74.6666666666667L254.2933333333333 23.04L423.2533333333334 192L254.2933333333333 360.9600000000001L202.6666666666667 309.3333333333334L277.3333333333333 234.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrow-right-bold-circle" + unicode="&#xF056;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M362.6666666666667 192L256 298.6666666666667V234.6666666666667H170.6666666666667V149.3333333333334H256V85.3333333333334L362.6666666666667 192z" /> + <glyph glyph-name="arrow-right-bold-circle-outline" + unicode="&#xF057;" + horiz-adv-x="512" d=" M362.6666666666667 192L256 85.3333333333334V149.3333333333334H170.6666666666667V234.6666666666667H256V298.6666666666667L362.6666666666667 192M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192z" /> + <glyph glyph-name="arrow-right-bold-hexagon-outline" + unicode="&#xF058;" + horiz-adv-x="512" d=" M362.6666666666667 192L256 85.3333333333334V149.3333333333334H170.6666666666667V234.6666666666667H256V298.6666666666667L362.6666666666667 192M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-right-drop-circle" + unicode="&#xF059;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="arrow-right-drop-circle-outline" + unicode="&#xF05A;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192M85.3333333333333 192C85.3333333333333 286.2933333333334 161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="arrow-top-left" + unicode="&#xF05B;" + horiz-adv-x="512" d=" M405.3333333333333 72.7466666666667L375.2533333333334 42.6666666666667L149.3333333333333 268.5866666666667V128H106.6666666666667V341.3333333333334H320V298.6666666666667H179.4133333333333L405.3333333333333 72.7466666666667z" /> + <glyph glyph-name="arrow-top-right" + unicode="&#xF05C;" + horiz-adv-x="512" d=" M106.6666666666667 72.7466666666667L332.5866666666667 298.6666666666667H192V341.3333333333334H405.3333333333333V128H362.6666666666667V268.5866666666667L136.7466666666667 42.6666666666667L106.6666666666667 72.7466666666667z" /> + <glyph glyph-name="arrow-up" + unicode="&#xF05D;" + horiz-adv-x="512" d=" M277.3333333333333 21.3333333333334H234.6666666666667V277.3333333333334L117.3333333333333 160L87.04 190.2933333333334L256 359.2533333333334L424.9600000000001 190.2933333333334L394.6666666666667 160L277.3333333333333 277.3333333333334V21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold" + unicode="&#xF05E;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334H213.3333333333333V213.3333333333334L138.6666666666667 138.6666666666667L87.04 190.2933333333334L256 359.2533333333334L424.9600000000001 190.2933333333334L373.3333333333333 138.6666666666667L298.6666666666667 213.3333333333334V21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold-circle" + unicode="&#xF05F;" + horiz-adv-x="512" d=" M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M256 298.6666666666667L149.3333333333333 192H213.3333333333333V106.6666666666667H298.6666666666667V192H362.6666666666667L256 298.6666666666667z" /> + <glyph glyph-name="arrow-up-bold-circle-outline" + unicode="&#xF060;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 192H298.6666666666667V106.6666666666667H213.3333333333333V192H149.3333333333333L256 298.6666666666667M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold-hexagon-outline" + unicode="&#xF061;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 192H298.6666666666667V106.6666666666667H213.3333333333333V192H149.3333333333333L256 298.6666666666667M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-up-drop-circle" + unicode="&#xF062;" + horiz-adv-x="512" d=" M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M362.6666666666667 149.3333333333334L256 256L149.3333333333333 149.3333333333334H362.6666666666667z" /> + <glyph glyph-name="arrow-up-drop-circle-outline" + unicode="&#xF063;" + horiz-adv-x="512" d=" M256 -21.3333333333333C373.76 -21.3333333333333 469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M362.6666666666667 149.3333333333334L256 256L149.3333333333333 149.3333333333334H362.6666666666667z" /> + <glyph glyph-name="assistant" + unicode="&#xF064;" + horiz-adv-x="512" d=" M405.3333333333333 405.3333333333333H106.6666666666667C83.2 405.3333333333333 64 386.1333333333334 64 362.6666666666667V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192L256 -42.6666666666666L320 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V362.6666666666667C448 386.1333333333334 428.8 405.3333333333333 405.3333333333333 405.3333333333333M296.1066666666667 173.2266666666667L256 85.3333333333334L215.8933333333334 173.2266666666667L128 213.3333333333334L215.8933333333334 253.44L256 341.3333333333334L296.1066666666667 253.44L384 213.3333333333334" /> + <glyph glyph-name="at" + unicode="&#xF065;" + horiz-adv-x="512" d=" M371.6266666666667 128C379.5200000000001 147.4133333333334 384 169.1733333333334 384 192C384 274.5600000000001 326.6133333333334 341.3333333333334 256 341.3333333333334S128 274.5600000000001 128 192S185.3866666666667 42.6666666666667 256 42.6666666666667C288.8533333333333 42.6666666666667 320 42.6666666666667 341.3333333333333 59.3066666666667V9.6000000000001C320 1e-13 287.1466666666667 1e-13 256 1e-13C161.7066666666667 1e-13 85.3333333333333 85.9733333333335 85.3333333333333 192.0000000000001S161.7066666666667 384.0000000000001 256 384.0000000000001S426.6666666666667 298.0266666666668 426.6666666666667 192.0000000000001C426.6666666666667 152.5333333333334 416 115.8400000000001 397.8666666666666 85.3333333333334H298.6666666666667V117.3333333333334C285.0133333333333 97.4933333333335 266.6666666666667 85.3333333333334 245.3333333333333 85.3333333333334C204.16 85.3333333333334 170.6666666666667 133.12 170.6666666666667 192S204.16 298.6666666666667 245.3333333333333 298.6666666666667C266.6666666666667 298.6666666666667 285.0133333333333 286.5066666666667 298.6666666666667 266.6666666666667V277.3333333333334H341.3333333333333V128H371.6266666666667M256 256C232.5333333333334 256 213.3333333333333 227.4133333333334 213.3333333333333 192S232.5333333333334 128 256 128S298.6666666666667 156.5866666666667 298.6666666666667 192S279.4666666666667 256 256 256z" /> + <glyph glyph-name="attachment" + unicode="&#xF066;" + horiz-adv-x="512" d=" M160 64C95.1466666666667 64 42.6666666666667 116.48 42.6666666666667 181.3333333333334S95.1466666666667 298.6666666666667 160 298.6666666666667H384C431.1466666666667 298.6666666666667 469.3333333333333 260.48 469.3333333333333 213.3333333333334S431.1466666666667 128 384 128H202.6666666666667C173.2266666666666 128 149.3333333333333 151.8933333333333 149.3333333333333 181.3333333333334S173.2266666666666 234.6666666666667 202.6666666666667 234.6666666666667H362.6666666666667V202.6666666666667H202.6666666666667C190.9333333333333 202.6666666666667 181.3333333333333 193.0666666666667 181.3333333333333 181.3333333333334S190.9333333333333 160 202.6666666666667 160H384C413.44 160 437.3333333333333 183.8933333333334 437.3333333333333 213.3333333333334S413.44 266.6666666666667 384 266.6666666666667H160C112.8533333333333 266.6666666666667 74.6666666666667 228.48 74.6666666666667 181.3333333333334S112.8533333333333 96 160 96H362.6666666666667V64H160z" /> + <glyph glyph-name="audiobook" + unicode="&#xF067;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M277.3333333333333 128C253.8666666666667 128 234.6666666666667 108.8 234.6666666666667 85.3333333333334S253.8666666666667 42.6666666666667 277.3333333333333 42.6666666666667S320 61.8666666666667 320 85.3333333333334V192H384V234.6666666666667H298.6666666666667V122.24C292.48 125.8666666666667 285.0133333333333 128 277.3333333333333 128z" /> + <glyph glyph-name="auto-fix" + unicode="&#xF068;" + horiz-adv-x="512" d=" M160 328.5333333333334L106.6666666666667 298.6666666666667L136.5333333333333 352L106.6666666666667 405.3333333333333L160 375.4666666666667L213.3333333333333 405.3333333333333L183.4666666666667 352L213.3333333333333 298.6666666666667L160 328.5333333333334M416 119.4666666666667L469.3333333333333 149.3333333333334L439.4666666666667 96L469.3333333333333 42.6666666666667L416 72.5333333333333L362.6666666666667 42.6666666666667L392.5333333333333 96L362.6666666666667 149.3333333333334L416 119.4666666666667M469.3333333333333 405.3333333333333L439.4666666666667 352L469.3333333333333 298.6666666666667L416 328.5333333333334L362.6666666666667 298.6666666666667L392.5333333333333 352L362.6666666666667 405.3333333333333L416 375.4666666666667L469.3333333333333 405.3333333333333M284.5866666666667 175.36L336.64 227.4133333333334L291.4133333333333 272.6400000000001L239.36 220.5866666666667L284.5866666666667 175.3600000000001M306.56 292.4800000000001L356.48 242.5600000000001C364.8 234.6666666666668 364.8 220.8000000000001 356.48 212.4800000000001L107.52 -36.48C99.2 -44.8 85.3333333333333 -44.8 77.44 -36.48L27.52 13.44C19.2 21.3333333333334 19.2 35.2 27.52 43.52L276.48 292.48C284.8 300.8 298.6666666666667 300.8 306.56 292.48z" /> + <glyph glyph-name="auto-upload" + unicode="&#xF069;" + horiz-adv-x="512" d=" M114.1333333333333 178.1333333333333L138.6666666666667 256L163.2 178.1333333333333M117.3333333333333 298.6666666666667L49.0666666666667 106.6666666666667H89.6L104.5333333333333 149.3333333333334H172.8L187.7333333333333 106.6666666666667H228.2666666666667L160 298.6666666666667M234.6666666666667 21.3333333333334H469.3333333333333V64H234.6666666666667M298.6666666666667 106.6666666666667H405.3333333333333V213.3333333333334H469.3333333333333L352 330.6666666666667L234.6666666666667 213.3333333333334H298.6666666666667V106.6666666666667z" /> + <glyph glyph-name="autorenew" + unicode="&#xF06A;" + horiz-adv-x="512" d=" M256 320V256L341.3333333333333 341.3333333333334L256 426.6666666666667V362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 158.5066666666667 95.1466666666667 127.36 111.7866666666667 101.1200000000001L142.9333333333333 132.2666666666667C133.3333333333333 149.9733333333334 128 170.6666666666667 128 192C128 262.6133333333334 185.3866666666667 320 256 320M400.2133333333333 282.88L369.0666666666667 251.7333333333334C378.4533333333334 233.8133333333334 384 213.3333333333334 384 192C384 121.3866666666667 326.6133333333334 64 256 64V128L170.6666666666667 42.6666666666667L256 -42.6666666666666V21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 225.4933333333334 416.8533333333333 256.64 400.2133333333334 282.88z" /> + <glyph glyph-name="av-timer" + unicode="&#xF06B;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334C234.6666666666667 73.6 244.2666666666667 64 256 64S277.3333333333333 73.6 277.3333333333333 85.3333333333334S267.7333333333334 106.6666666666667 256 106.6666666666667S234.6666666666667 97.0666666666667 234.6666666666667 85.3333333333334M234.6666666666667 384V298.6666666666667H277.3333333333333V339.6266666666667C349.6533333333333 329.1733333333334 405.3333333333333 267.3066666666667 405.3333333333333 192C405.3333333333333 109.44 338.56 42.6666666666667 256 42.6666666666667S106.6666666666667 109.44 106.6666666666667 192C106.6666666666667 227.84 119.2533333333333 260.6933333333334 140.3733333333333 286.2933333333334L256 170.6666666666667L286.08 200.7466666666667L141.0133333333333 345.8133333333334V345.3866666666667C94.2933333333333 310.4 64 254.9333333333334 64 192C64 85.9733333333334 149.9733333333333 0 256 0S448 85.9733333333334 448 192S362.0266666666667 384 256 384M384 192C384 203.7333333333334 374.4 213.3333333333334 362.6666666666667 213.3333333333334S341.3333333333333 203.7333333333334 341.3333333333333 192S350.9333333333333 170.6666666666667 362.6666666666667 170.6666666666667S384 180.2666666666667 384 192M128 192C128 180.2666666666667 137.6 170.6666666666667 149.3333333333333 170.6666666666667S170.6666666666667 180.2666666666667 170.6666666666667 192S161.0666666666667 213.3333333333334 149.3333333333333 213.3333333333334S128 203.7333333333334 128 192z" /> + <glyph glyph-name="baby" + unicode="&#xF06C;" + horiz-adv-x="512" d=" M394.6666666666667 362.6666666666667C424.1066666666667 362.6666666666667 448 338.7733333333333 448 309.3333333333334S424.1066666666667 256 394.6666666666667 256S341.3333333333333 279.8933333333333 341.3333333333333 309.3333333333334S365.2266666666667 362.6666666666667 394.6666666666667 362.6666666666667M96 21.3333333333334C78.2933333333333 21.3333333333334 64 35.6266666666667 64 53.3333333333334S78.2933333333333 85.3333333333334 96 85.3333333333334H245.3333333333333C263.04 85.3333333333334 277.3333333333333 71.04 277.3333333333333 53.3333333333334S263.04 21.3333333333334 245.3333333333333 21.3333333333334H96M343.2533333333334 42.6666666666667L313.3866666666667 128H234.6666666666667L144 218.6666666666667S192 272 266.6666666666667 272C330.6666666666667 272 338.1333333333334 250.6666666666667 342.6133333333333 237.44L403.6266666666667 64C409.6 47.36 400.64 29.0133333333333 384 23.04C367.36 17.28 349.0133333333333 26.0266666666666 343.2533333333334 42.6666666666667z" /> + <glyph glyph-name="backburger" + unicode="&#xF06D;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667L192 85.3333333333334L162.1333333333333 55.04L25.1733333333333 192L162.1333333333333 328.9600000000001L192 298.6666666666667L106.6666666666667 213.3333333333334H448V170.6666666666667H106.6666666666667M448 320V277.3333333333334H234.6666666666667V320H448M448 106.6666666666667V64H234.6666666666667V106.6666666666667H448z" /> + <glyph glyph-name="backspace" + unicode="&#xF06E;" + horiz-adv-x="512" d=" M469.3333333333333 384H149.3333333333333C134.6133333333334 384 123.0933333333333 376.5333333333333 115.4133333333333 365.2266666666667L0 192L115.4133333333333 18.9866666666667C123.0933333333333 7.68 134.6133333333334 0 149.3333333333333 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 364.8 492.8 384 469.3333333333333 384M405.3333333333333 115.4133333333334L375.2533333333334 85.3333333333334L298.6666666666667 161.92L222.08 85.3333333333334L192 115.4133333333334L268.5866666666667 192L192 268.5866666666667L222.08 298.6666666666667L298.6666666666667 222.08L375.2533333333334 298.6666666666667L405.3333333333333 268.5866666666667L328.7466666666667 192" /> + <glyph glyph-name="backup-restore" + unicode="&#xF06F;" + horiz-adv-x="512" d=" M256 384C149.9733333333333 384 64 298.0266666666667 64 192H0L85.3333333333333 106.6666666666667L170.6666666666667 192H106.6666666666667C106.6666666666667 274.5600000000001 173.44 341.3333333333334 256 341.3333333333334S405.3333333333333 274.5600000000001 405.3333333333333 192S338.56 42.6666666666667 256 42.6666666666667C224 42.6666666666667 193.92 53.3333333333334 169.3866666666667 70.4L138.6666666666667 39.68C171.52 14.9333333333333 212.0533333333333 0 256 0C362.0266666666667 0 448 85.9733333333334 448 192S362.0266666666667 384 256 384M298.6666666666667 192C298.6666666666667 215.4666666666667 279.4666666666667 234.6666666666667 256 234.6666666666667S213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192z" /> + <glyph glyph-name="bank" + unicode="&#xF070;" + horiz-adv-x="512" d=" M245.3333333333333 426.6666666666667L42.6666666666667 320V277.3333333333334H448V320M341.3333333333333 234.6666666666667V85.3333333333334H405.3333333333333V234.6666666666667M42.6666666666667 -21.3333333333333H448V42.6666666666667H42.6666666666667M213.3333333333333 234.6666666666667V85.3333333333334H277.3333333333333V234.6666666666667M85.3333333333333 234.6666666666667V85.3333333333334H149.3333333333333V234.6666666666667H85.3333333333333z" /> + <glyph glyph-name="barcode" + unicode="&#xF071;" + horiz-adv-x="512" d=" M42.6666666666667 320H85.3333333333333V64H42.6666666666667V320M106.6666666666667 320H128V64H106.6666666666667V320M149.3333333333333 320H213.3333333333333V64H149.3333333333333V320M234.6666666666667 320H256V64H234.6666666666667V320M298.6666666666667 320H341.3333333333333V64H298.6666666666667V320M362.6666666666667 320H426.6666666666667V64H362.6666666666667V320M448 320H469.3333333333333V64H448V320z" /> + <glyph glyph-name="barcode-scan" + unicode="&#xF072;" + horiz-adv-x="512" d=" M85.3333333333333 320H128V64H85.3333333333333V320M149.3333333333333 320H170.6666666666667V64H149.3333333333333V320M192 320H256V64H192V320M277.3333333333333 320H298.6666666666667V64H277.3333333333333V320M341.3333333333333 320H384V64H341.3333333333333V320M405.3333333333333 320H426.6666666666667V64H405.3333333333333V320M42.6666666666667 362.6666666666667V277.3333333333334H0V362.6666666666667C0 386.1333333333334 19.2 405.3333333333333 42.6666666666667 405.3333333333333H128V362.6666666666667H42.6666666666667M469.3333333333333 405.3333333333333C492.8 405.3333333333333 512 386.1333333333334 512 362.6666666666667V277.3333333333334H469.3333333333333V362.6666666666667H384V405.3333333333333H469.3333333333333M42.6666666666667 106.6666666666667V21.3333333333334H128V-21.3333333333333H42.6666666666667C19.2 -21.3333333333333 0 -2.1333333333333 0 21.3333333333334V106.6666666666667H42.6666666666667M469.3333333333333 21.3333333333334V106.6666666666667H512V21.3333333333334C512 -2.1333333333333 492.8 -21.3333333333333 469.3333333333333 -21.3333333333333H384V21.3333333333334H469.3333333333333z" /> + <glyph glyph-name="barley" + unicode="&#xF073;" + horiz-adv-x="512" d=" M156.3733333333333 56.96C138.6666666666667 81.7066666666667 138.6666666666667 110.2933333333334 138.6666666666667 138.6666666666668C174.2933333333333 117.3333333333334 209.7066666666667 96 227.6266666666667 71.0400000000001L234.6666666666667 59.0933333333334V107.7333333333334C202.6666666666667 126.9333333333334 172.3733333333333 146.5600000000001 156.3733333333333 168.96C138.6666666666667 193.7066666666667 138.6666666666667 222.2933333333334 138.6666666666667 250.6666666666667C174.2933333333333 229.3333333333334 209.7066666666667 208.0000000000001 227.6266666666667 183.0400000000001L234.6666666666667 170.6666666666667V219.7333333333334C202.6666666666667 238.9333333333334 172.3733333333333 258.5600000000001 156.3733333333333 280.9600000000001C138.6666666666667 305.7066666666667 138.6666666666667 334.2933333333334 138.6666666666667 362.6666666666667C174.2933333333333 341.3333333333334 209.7066666666667 320 227.6266666666667 295.04C229.76 292.0533333333334 231.68 288.8533333333334 233.3866666666667 285.44C229.76 298.6666666666667 227.4133333333334 311.04 227.2 323.8400000000001C226.9866666666667 356.0533333333334 241.0666666666667 389.12 255.1466666666667 422.1866666666667C269.8666666666667 390.6133333333334 284.5866666666667 358.8266666666667 284.8 326.6133333333334C285.0133333333333 313.1733333333334 282.6666666666667 299.52 278.8266666666667 286.0800000000001C280.5333333333334 289.0666666666667 282.24 292.0533333333334 284.3733333333334 295.04C302.2933333333333 320 337.7066666666667 341.3333333333334 373.3333333333333 362.6666666666667C373.3333333333333 334.2933333333334 373.3333333333333 305.7066666666667 355.6266666666667 280.9600000000001C339.6266666666667 258.56 309.3333333333333 238.9333333333334 277.3333333333333 219.7333333333334V170.6666666666667L284.3733333333334 183.04C302.2933333333333 208 337.7066666666667 229.3333333333334 373.3333333333333 250.6666666666667C373.3333333333333 222.2933333333334 373.3333333333333 193.7066666666667 355.6266666666667 168.96C339.6266666666667 146.56 309.3333333333334 126.9333333333333 277.3333333333334 107.7333333333334V59.0933333333334L284.3733333333334 71.04C302.2933333333334 96 337.7066666666667 117.3333333333333 373.3333333333333 138.6666666666666C373.3333333333333 110.2933333333333 373.3333333333333 81.7066666666667 355.6266666666667 56.96C339.6266666666667 34.5599999999999 309.3333333333334 14.9333333333333 277.3333333333334 -4.2666666666667V-42.6666666666666H234.6666666666667V-4.2666666666667C202.6666666666667 14.9333333333333 172.3733333333334 34.5600000000001 156.3733333333334 56.96z" /> + <glyph glyph-name="barrel" + unicode="&#xF074;" + horiz-adv-x="512" d=" M384 42.6666666666667H405.3333333333333V0H106.6666666666667V42.6666666666667H128V170.6666666666667H106.6666666666667V213.3333333333334H128V341.3333333333334H106.6666666666667V384H405.3333333333333V341.3333333333334H384V213.3333333333334H405.3333333333333V170.6666666666667H384V42.6666666666667M192 170.6666666666667C192 135.2533333333333 220.5866666666667 106.6666666666667 256 106.6666666666667S320 135.2533333333333 320 170.6666666666667C320 213.3333333333334 256 285.2266666666667 256 285.2266666666667S192 213.3333333333334 192 170.6666666666667z" /> + <glyph glyph-name="basecamp" + unicode="&#xF075;" + horiz-adv-x="512" d=" M72.32 114.3466666666667C72.5333333333333 116.2666666666667 72.96 118.4 73.6 120.32C74.6666666666667 124.16 75.52 128 76.8 131.4133333333333C81.4933333333333 145.28 88.7466666666667 158.2933333333333 96 170.6666666666666C100.2666666666667 177.0666666666667 104.32 183.2533333333333 108.16 189.44C112.2133333333333 195.6266666666666 116.2666666666667 201.8133333333333 120.96 207.7866666666666C128 217.3866666666666 137.6 227.6266666666667 149.3333333333333 231.4666666666667C166.1866666666667 236.8 178.56 219.52 188.16 208.64C193.7066666666667 202.6666666666666 199.68 196.2666666666666 207.1466666666667 192.64C210.7733333333334 191.1466666666667 214.6133333333334 190.2933333333333 218.4533333333333 190.5066666666667C224 190.9333333333333 228.9066666666667 194.7733333333333 233.1733333333333 198.1866666666666C244.48 207.5733333333333 253.8666666666667 219.7333333333333 262.6133333333333 231.4666666666667C272.4266666666666 244.2666666666666 281.8133333333333 257.4933333333334 292.9066666666667 269.2266666666667C297.6 274.1333333333334 302.5066666666666 280.5333333333333 309.3333333333333 282.6666666666667C311.8933333333333 283.52 315.0933333333333 283.3066666666666 318.08 282.0266666666667C320 281.1733333333333 321.0666666666666 280.1066666666667 322.1333333333333 279.04C323.6266666666666 277.3333333333333 325.3333333333333 276.48 326.8266666666666 275.4133333333333C338.7733333333333 266.6666666666667 349.8666666666666 256 360.32 245.3333333333333C369.28 236.16 378.0266666666666 226.3466666666666 386.1333333333333 216.3199999999999C394.6666666666666 206.5066666666666 401.9199999999999 196.48 408.5333333333333 185.6C416.64 172.16 423.4666666666666 158.2933333333333 431.1466666666666 144.8533333333333C437.9733333333333 132.48 445.0133333333332 118.1866666666666 437.9733333333333 104.1066666666667C437.3333333333333 103.4666666666666 437.3333333333333 102.6133333333334 437.3333333333333 101.9733333333333C424.7466666666666 81.28 402.7733333333332 68.48 381.0133333333332 60.16C354.7733333333332 50.1333333333333 326.8266666666666 45.2266666666666 298.6666666666666 43.3066666666666C270.08 41.1733333333333 241.0666666666666 41.3866666666667 212.2666666666666 43.9466666666667C186.2399999999999 46.5066666666667 159.9999999999999 51.2 135.6799999999999 60.5866666666667C115.1999999999999 68.48 95.9999999999999 80 81.9199999999999 97.4933333333333C78.7199999999999 101.76 75.9466666666666 106.0266666666666 73.5999999999999 110.72C73.1733333333332 111.1466666666667 72.9599999999999 111.7866666666667 72.7466666666666 112.2133333333334C72.3199999999999 113.0666666666667 72.1066666666666 113.4933333333334 72.3199999999999 114.3466666666667M44.3733333333332 96C47.3599999999999 91.0933333333334 50.7733333333332 86.8266666666667 54.1866666666666 82.7733333333333C61.0133333333332 74.6666666666667 68.9066666666666 67.2 77.2266666666666 60.5866666666667C95.1466666666666 46.72 115.8399999999999 36.6933333333333 137.3866666666666 29.6533333333334C162.1333333333333 21.3333333333334 188.1599999999999 17.2800000000001 214.1866666666666 15.1466666666667C244.2666666666666 12.5866666666667 274.9866666666666 12.5866666666667 305.0666666666666 15.7866666666667C332.7999999999999 18.7733333333334 360.7466666666666 24.5333333333334 386.7733333333332 34.7733333333334C409.8133333333332 43.9466666666667 431.1466666666666 57.1733333333334 449.7066666666666 73.8133333333334C454.6133333333332 78.08 459.3066666666665 82.5600000000001 462.9333333333332 87.8933333333334C466.3466666666666 92.3733333333334 469.3333333333333 97.2800000000001 469.3333333333333 102.8266666666667C469.3333333333333 109.2266666666667 469.3333333333333 115.84 467.6266666666666 122.24C466.1333333333333 129.28 464.2133333333333 136.1066666666667 462.5066666666667 142.9333333333334L460.5866666666666 150.6133333333334C453.76 180.6933333333334 443.3066666666667 209.92 429.2266666666667 237.4400000000001C417.2800000000001 260.48 402.56 282.4533333333334 385.2800000000001 302.0800000000001C369.2800000000001 320 350.5066666666667 336.64 329.1733333333334 348.1600000000001C317.8666666666668 354.56 305.7066666666667 359.4666666666667 293.3333333333334 362.6666666666667C286.7200000000001 365.2266666666667 279.8933333333334 366.7200000000001 273.0666666666667 368.2133333333334C271.1466666666668 368.4266666666667 269.4400000000001 368.8533333333334 267.7333333333334 368.8533333333334H247.6800000000001C245.3333333333335 368.8533333333334 243.8400000000001 369.0666666666667 241.7066666666668 368.8533333333334C240.0000000000001 368.64 238.0800000000001 368.2133333333334 236.3733333333335 368C232.7466666666668 367.36 229.3333333333335 366.7200000000001 225.9200000000001 365.8666666666667C219.0933333333334 364.3733333333334 212.4800000000001 362.6666666666667 205.8666666666668 359.68C192.8533333333335 354.56 180.6933333333335 347.7333333333334 169.1733333333335 339.6266666666667C146.5600000000001 324.2666666666667 126.9333333333335 304.4266666666667 110.5066666666668 282.6666666666667C93.2266666666668 259.6266666666667 79.1466666666668 233.8133333333334 68.4800000000001 206.9333333333333C56.9600000000001 178.3466666666667 49.0666666666668 148.48 44.1600000000001 117.9733333333334C43.5200000000001 114.1333333333333 42.6666666666668 110.08 42.6666666666668 106.6666666666667V99.84C42.6666666666668 98.7733333333333 42.6666666666668 98.1333333333334 43.3066666666668 97.28C43.5200000000001 96.8533333333334 43.9466666666668 96 44.3733333333335 96z" /> + <glyph glyph-name="basket" + unicode="&#xF076;" + horiz-adv-x="512" d=" M117.3333333333333 0C100.6933333333333 0 86.1866666666667 9.6 79.1466666666667 23.4666666666667L23.4666666666667 225.2800000000001L21.3333333333333 234.6666666666667C21.3333333333333 246.4000000000001 30.9333333333333 256 42.6666666666667 256H140.3733333333333L238.5066666666667 396.1600000000001C242.3466666666667 401.7066666666667 248.7466666666667 405.3333333333334 256 405.3333333333334C263.2533333333334 405.3333333333334 269.8666666666667 401.7066666666667 273.7066666666667 395.9466666666667L371.6266666666667 256H469.3333333333333C481.0666666666667 256 490.6666666666666 246.4000000000001 490.6666666666666 234.6666666666667L489.8133333333333 228.48L432.8533333333333 23.4666666666667C425.8133333333334 9.6000000000001 411.3066666666666 0 394.6666666666667 0H117.3333333333333M256 346.88L192 256H320L256 346.88M256 170.6666666666667C232.5333333333334 170.6666666666667 213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334S298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="basket-fill" + unicode="&#xF077;" + horiz-adv-x="512" d=" M64 405.3333333333333H128V341.3333333333334H64V405.3333333333333M128 298.6666666666667H192V234.6666666666667H128V298.6666666666667M170.6666666666667 405.3333333333333H234.6666666666667V341.3333333333334H170.6666666666667V405.3333333333333M362.6666666666667 213.3333333333334L256 320H320V405.3333333333333H405.3333333333333V320H469.3333333333333L362.6666666666667 213.3333333333334M160 -21.3333333333333C143.36 -21.3333333333333 128.8533333333333 -11.7333333333333 121.8133333333333 2.1333333333334L66.1333333333333 161.28L64 170.6666666666667C64 182.4 73.6 192 85.3333333333333 192H426.6666666666667C438.4 192 448 182.4 448 170.6666666666667L447.1466666666667 164.48L390.1866666666666 2.1333333333334C383.1466666666667 -11.7333333333332 368.64 -21.3333333333333 352 -21.3333333333333H160M162.3466666666667 21.3333333333334H349.6533333333333L396.16 149.3333333333334H115.6266666666667L162.3466666666666 21.3333333333334z" /> + <glyph glyph-name="basket-unfill" + unicode="&#xF078;" + horiz-adv-x="512" d=" M64 234.6666666666667H128V298.6666666666667H64V234.6666666666667M106.6666666666667 341.3333333333334H170.6666666666667V405.3333333333333H106.6666666666667V341.3333333333334M170.6666666666667 234.6666666666667H234.6666666666667V298.6666666666667H170.6666666666667V234.6666666666667M362.6666666666667 426.6666666666667L256 320H320V234.6666666666667H405.3333333333333V320H469.3333333333333L362.6666666666667 426.6666666666667M160 -21.3333333333333C143.36 -21.3333333333333 128.8533333333333 -11.7333333333333 121.8133333333333 2.1333333333334L66.1333333333333 161.28L64 170.6666666666667C64 182.4 73.6 192 85.3333333333333 192H426.6666666666667C438.4 192 448 182.4 448 170.6666666666667L447.1466666666667 164.48L390.1866666666666 2.1333333333334C383.1466666666667 -11.7333333333332 368.64 -21.3333333333333 352 -21.3333333333333H160M162.3466666666667 21.3333333333334H349.6533333333333L396.16 149.3333333333334H115.6266666666667L162.3466666666666 21.3333333333334z" /> + <glyph glyph-name="battery" + unicode="&#xF079;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-10" + unicode="&#xF07A;" + horiz-adv-x="512" d=" M341.3333333333333 64H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-20" + unicode="&#xF07B;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-30" + unicode="&#xF07C;" + horiz-adv-x="512" d=" M341.3333333333333 128H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-40" + unicode="&#xF07D;" + horiz-adv-x="512" d=" M341.3333333333333 149.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-50" + unicode="&#xF07E;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-60" + unicode="&#xF07F;" + horiz-adv-x="512" d=" M341.3333333333333 192H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-70" + unicode="&#xF080;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-80" + unicode="&#xF081;" + horiz-adv-x="512" d=" M341.3333333333333 256H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-90" + unicode="&#xF082;" + horiz-adv-x="512" d=" M341.3333333333333 277.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-alert" + unicode="&#xF083;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-charging" + unicode="&#xF084;" + horiz-adv-x="512" d=" M334.2933333333333 362.6666666666667H298.6666666666667V405.3333333333333H213.3333333333333V362.6666666666667H177.7066666666667C162.1333333333333 362.6666666666667 149.3333333333333 349.8666666666667 149.3333333333333 334.2933333333334V7.2533333333333C149.3333333333333 -8.5333333333333 162.1333333333333 -21.3333333333333 177.7066666666667 -21.3333333333333H334.08C349.8666666666666 -21.3333333333333 362.6666666666667 -8.5333333333333 362.6666666666667 7.04V334.2933333333334C362.6666666666667 349.8666666666667 349.8666666666666 362.6666666666667 334.2933333333333 362.6666666666667M234.6666666666667 21.3333333333334V138.6666666666667H192L277.3333333333333 298.6666666666667V181.3333333333334H320" /> + <glyph glyph-name="battery-charging-100" + unicode="&#xF085;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-20" + unicode="&#xF086;" + horiz-adv-x="512" d=" M491.7333333333333 213.3333333333334H427.7333333333334V362.6666666666667L321.0666666666667 149.3333333333334H385.0666666666667V-21.3333333333333M257.0666666666667 85.3333333333334H86.4V320H257.0666666666667M271.36 362.6666666666667H235.7333333333334V405.3333333333333H107.7333333333334V362.6666666666667H72.1066666666667C56.5333333333333 362.6666666666667 43.7333333333333 349.8666666666667 43.7333333333333 334.2933333333334V7.04C43.7333333333333 -8.5333333333334 56.5333333333333 -21.3333333333333 72.1066666666667 -21.3333333333333H271.36C286.9333333333333 -21.3333333333333 299.7333333333333 -8.5333333333333 299.7333333333333 7.04V334.2933333333334C299.7333333333333 349.8666666666667 286.9333333333333 362.6666666666667 271.36 362.6666666666667z" /> + <glyph glyph-name="battery-charging-30" + unicode="&#xF087;" + horiz-adv-x="512" d=" M256 128H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333L490.6666666666666 213.3333333333334z" /> + <glyph glyph-name="battery-charging-40" + unicode="&#xF088;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 170.6666666666667H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-60" + unicode="&#xF089;" + horiz-adv-x="512" d=" M256 213.3333333333334H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333L490.6666666666666 213.3333333333334z" /> + <glyph glyph-name="battery-charging-80" + unicode="&#xF08A;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 256H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-90" + unicode="&#xF08B;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 277.3333333333334H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-minus" + unicode="&#xF08C;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667C371.2 362.6666666666667 384 349.8666666666667 384 334.2933333333334V7.04C384 -8.5333333333334 371.2 -21.3333333333333 355.6266666666667 -21.3333333333333H156.3733333333333C140.8 -21.3333333333333 128 -8.5333333333333 128 7.04V334.2933333333334C128 349.8666666666667 140.8 362.6666666666667 156.3733333333333 362.6666666666667H192V405.3333333333333H320V362.6666666666667H355.6266666666667M170.6666666666667 192V149.3333333333334H341.3333333333333V192" /> + <glyph glyph-name="battery-negative" + unicode="&#xF08D;" + horiz-adv-x="512" d=" M248.96 362.6666666666667C264.5333333333333 362.6666666666667 277.3333333333333 349.8666666666667 277.3333333333333 334.2933333333334V7.04C277.3333333333333 -8.5333333333334 264.5333333333333 -21.3333333333333 248.96 -21.3333333333333H49.7066666666667C34.1333333333333 -21.3333333333333 21.3333333333333 -8.5333333333333 21.3333333333333 7.04V334.2933333333334C21.3333333333333 349.8666666666667 34.1333333333333 362.6666666666667 49.7066666666667 362.6666666666667H85.3333333333333V405.3333333333333H213.3333333333333V362.6666666666667H248.96M320 192H490.6666666666666V149.3333333333334H320V192M64 170.6666666666667H234.6666666666667V320H64V170.6666666666667z" /> + <glyph glyph-name="battery-outline" + unicode="&#xF08E;" + horiz-adv-x="512" d=" M341.3333333333333 21.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-plus" + unicode="&#xF08F;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667C371.2 362.6666666666667 384 349.8666666666667 384 334.2933333333334V7.04C384 -8.5333333333334 371.2 -21.3333333333333 355.6266666666667 -21.3333333333333H156.3733333333333C140.8 -21.3333333333333 128 -8.5333333333333 128 7.04V334.2933333333334C128 349.8666666666667 140.8 362.6666666666667 156.3733333333333 362.6666666666667H192V405.3333333333333H320V362.6666666666667H355.6266666666667M341.3333333333333 149.3333333333334V192H277.3333333333333V256H234.6666666666667V192H170.6666666666667V149.3333333333334H234.6666666666667V85.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333z" /> + <glyph glyph-name="battery-positive" + unicode="&#xF090;" + horiz-adv-x="512" d=" M248.96 362.6666666666667C264.5333333333333 362.6666666666667 277.3333333333333 349.8666666666667 277.3333333333333 334.2933333333334V7.04C277.3333333333333 -8.5333333333334 264.5333333333333 -21.3333333333333 248.96 -21.3333333333333H49.7066666666667C34.1333333333333 -21.3333333333333 21.3333333333333 -8.5333333333333 21.3333333333333 7.04V334.2933333333334C21.3333333333333 349.8666666666667 34.1333333333333 362.6666666666667 49.7066666666667 362.6666666666667H85.3333333333333V405.3333333333333H213.3333333333333V362.6666666666667H248.96M490.6666666666666 149.3333333333334H426.6666666666667V85.3333333333334H384V149.3333333333334H320V192H384V256H426.6666666666667V192H490.6666666666666V149.3333333333334M64 170.6666666666667H234.6666666666667V320H64V170.6666666666667z" /> + <glyph glyph-name="battery-unknown" + unicode="&#xF091;" + horiz-adv-x="512" d=" M321.4933333333334 186.6666666666667L302.2933333333333 167.04C290.7733333333333 155.52 282.6666666666667 145.4933333333334 279.2533333333334 128H235.7333333333334C238.08 147.2000000000001 246.6133333333334 164.6933333333334 259.6266666666667 177.7066666666667L286.0800000000001 204.5866666666667C293.9733333333334 212.2666666666667 298.6666666666667 222.9333333333333 298.6666666666667 234.6666666666667C298.6666666666667 258.3466666666667 279.4666666666667 277.3333333333334 256 277.3333333333334S213.3333333333334 258.1333333333334 213.3333333333334 234.6666666666667H170.6666666666667C170.6666666666667 281.8133333333334 208.8533333333333 320 256 320S341.3333333333333 281.8133333333334 341.3333333333333 234.6666666666667C341.3333333333333 215.8933333333333 333.6533333333333 198.8266666666667 321.4933333333334 186.6666666666667M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.2533333333333C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.2533333333333V334.2933333333334C384 350.0800000000001 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="beach" + unicode="&#xF092;" + horiz-adv-x="512" d=" M320 52.48C365.44 59.52 416 64 469.3333333333333 64V-21.3333333333333H106.6666666666667C106.6666666666667 -7.4666666666667 174.9333333333333 24.3200000000001 277.3333333333333 44.8000000000001V183.4666666666667C259.4133333333333 178.1333333333334 244.2666666666667 166.1866666666667 234.6666666666667 150.4C221.6533333333333 172.16 197.76 186.6666666666667 170.6666666666667 186.6666666666667S119.68 172.16 106.6666666666667 150.4C107.3066666666667 226.7733333333334 181.3333333333333 289.4933333333334 277.3333333333333 297.8133333333334V298.6666666666667C277.3333333333333 310.4 286.9333333333333 320 298.6666666666667 320S320 310.4 320 298.6666666666667V297.8133333333334C416 289.4933333333334 489.8133333333333 226.7733333333333 490.6666666666666 150.4C477.6533333333333 172.16 453.76 186.6666666666667 426.6666666666667 186.6666666666667S375.68 172.16 362.6666666666667 150.4C353.0666666666667 166.1866666666667 337.92 178.1333333333334 320 183.6800000000001V52.48M149.3333333333333 405.3333333333333C149.3333333333333 346.4533333333334 101.5466666666667 298.6666666666667 42.6666666666667 298.6666666666667V405.3333333333333H149.3333333333333z" /> + <glyph glyph-name="beats" + unicode="&#xF097;" + horiz-adv-x="512" d=" M149.3333333333333 192C149.3333333333333 133.12 197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667C231.8933333333334 298.6666666666667 209.92 290.7733333333333 192 277.3333333333334V395.52C212.2666666666667 401.92 233.6 405.3333333333333 256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192C42.6666666666667 270.9333333333334 85.3333333333333 339.8400000000001 149.3333333333333 376.7466666666667V192M309.3333333333333 192C309.3333333333333 184.1066666666667 305.0666666666667 177.4933333333334 298.6666666666667 173.6533333333334L258.3466666666667 143.1466666666667C254.72 140.3733333333333 250.24 138.6666666666667 245.3333333333333 138.6666666666667C233.6 138.6666666666667 224 148.2666666666667 224 160V224C224 235.7333333333334 233.6 245.3333333333334 245.3333333333333 245.3333333333334C250.24 245.3333333333334 254.72 243.6266666666667 258.3466666666667 240.8533333333333L298.6666666666667 210.3466666666667C305.0666666666667 206.5066666666667 309.3333333333333 199.8933333333333 309.3333333333333 192z" /> + <glyph glyph-name="beer" + unicode="&#xF098;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H405.3333333333333L362.6666666666667 -21.3333333333333H128L85.3333333333333 405.3333333333333M132.2666666666667 362.6666666666667L166.4 21.3333333333334H187.7333333333334L158.5066666666667 312.7466666666667C181.3333333333333 320 210.9866666666667 322.3466666666667 234.6666666666667 298.6666666666667C267.9466666666667 265.3866666666667 327.04 283.9466666666667 352 293.76L358.4 362.6666666666667H132.2666666666667z" /> + <glyph glyph-name="behance" + unicode="&#xF099;" + horiz-adv-x="512" d=" M417.7066666666666 186.24C416.8533333333333 199.4666666666667 412.3733333333333 209.4933333333334 404.4799999999999 216.32C396.5866666666666 223.1466666666667 386.7733333333333 226.5600000000001 375.04 226.5600000000001C362.6666666666667 226.5600000000001 352 222.9333333333334 345.3866666666666 215.68C338.3466666666666 208.4266666666667 333.8666666666666 198.6133333333334 332.16 186.24M467.6266666666666 191.1466666666667C469.3333333333333 182.4 469.3333333333333 169.8133333333334 469.3333333333333 153.3866666666667H330.6666666666666C331.7333333333333 134.1866666666667 338.1333333333332 120.96 350.7199999999999 113.2800000000001C358.1866666666666 108.3733333333334 367.36 106.0266666666668 378.2399999999999 106.0266666666668C389.5466666666666 106.0266666666668 398.7199999999999 109.0133333333334 405.3333333333333 114.7733333333334C409.5999999999999 117.9733333333334 413.0133333333332 122.2400000000001 415.9999999999999 128.0000000000001H466.7733333333332C465.4933333333332 116.48 459.3066666666665 105.1733333333334 447.9999999999999 93.4400000000001C431.3599999999999 74.6666666666667 407.4666666666666 65.7066666666667 376.7466666666666 65.7066666666667C351.3599999999999 65.7066666666667 329.1733333333333 73.6000000000001 309.3333333333333 89.1733333333334C290.5599999999999 104.7466666666668 280.7466666666666 130.1333333333335 280.7466666666666 165.3333333333334C280.7466666666666 198.4000000000001 289.4933333333333 224.0000000000001 306.9866666666666 241.0666666666668C324.4799999999999 258.7733333333335 347.0933333333333 267.5200000000001 375.04 267.5200000000001C391.4666666666666 267.5200000000001 406.3999999999999 264.5333333333334 419.6266666666666 258.5600000000001C432.8533333333333 252.5866666666668 443.9466666666666 243.4133333333334 452.4799999999999 230.4000000000001C460.3733333333333 219.0933333333335 465.28 206.0800000000001 467.6266666666666 191.1466666666668M204.3733333333333 147.84C204.3733333333333 161.7066666666667 198.6133333333334 171.3066666666667 187.52 176.4266666666667C181.3333333333333 179.2000000000001 172.3733333333333 180.6933333333333 160.8533333333333 181.3333333333334H103.8933333333333V110.08H160C171.52 110.08 180.48 111.5733333333334 186.88 114.7733333333334C198.6133333333334 120.5333333333334 204.3733333333333 131.6266666666667 204.3733333333333 147.84M103.8933333333333 224.8533333333334H160C171.52 224.8533333333334 181.3333333333333 226.9866666666667 188.16 231.4666666666667C195.4133333333333 235.7333333333334 198.8266666666667 243.6266666666667 198.8266666666667 254.7200000000001C198.8266666666667 266.6666666666668 194.1333333333333 275.2000000000001 184.7466666666667 279.2533333333334C176.4266666666667 282.0266666666667 165.9733333333333 283.3066666666668 153.3866666666667 283.3066666666668H103.8933333333333M250.0266666666667 183.0400000000001C256.8533333333333 172.3733333333334 260.2666666666667 159.3600000000001 260.2666666666667 144.2133333333334C260.2666666666667 128.0000000000001 256 114.3466666666667 248.5333333333333 101.7600000000001C243.4133333333333 93.4400000000001 237.2266666666667 86.6133333333334 229.76 80.8533333333334C221.2266666666666 74.6666666666667 211.2 69.9733333333334 199.68 67.6266666666667C188.1599999999999 65.2800000000001 175.7866666666666 64 162.3466666666666 64H42.6666666666667V329.6H170.6666666666667C203.3066666666667 328.9600000000001 226.1333333333334 320 239.5733333333333 301.2266666666667C247.68 289.92 251.7333333333334 276.48 251.7333333333334 260.6933333333334C251.7333333333334 244.48 247.68 231.4666666666667 239.5733333333333 221.6533333333334C234.6666666666667 216.1066666666667 228.2666666666667 210.9866666666667 219.3066666666667 206.5066666666667C232.7466666666667 201.6 242.9866666666667 193.7066666666667 250.0266666666667 183.04M427.9466666666667 291.8400000000001H321.0666666666667V318.5066666666667H427.9466666666667V291.8400000000001z" /> + <glyph glyph-name="bell" + unicode="&#xF09A;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334H298.6666666666667M256 405.3333333333333C267.7333333333334 405.3333333333333 277.3333333333333 395.7333333333334 277.3333333333333 384V360.9600000000001C337.92 350.7200000000001 384 298.0266666666667 384 234.6666666666667V106.6666666666667L448 42.6666666666667H64L128 106.6666666666667V234.6666666666667C128 298.0266666666667 174.08 350.7200000000001 234.6666666666667 360.9600000000001V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="bell-off" + unicode="&#xF09B;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334H298.6666666666667M421.12 -12.16L366.2933333333334 42.6666666666667H64L128 106.6666666666667V234.6666666666667C128 248.5333333333334 130.1333333333333 261.9733333333334 134.4 274.5600000000001L74.0266666666667 334.9333333333334L104.32 365.0133333333333L155.52 313.8133333333334L451.1999999999999 18.1333333333334L421.12 -12.16M234.6666666666667 360.9600000000001V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333S277.3333333333333 395.7333333333334 277.3333333333333 384V360.9600000000001C337.92 350.7200000000001 384 298.0266666666667 384 234.6666666666667V145.7066666666667L187.0933333333333 342.6133333333334C201.3866666666667 352 217.3866666666667 357.9733333333334 234.6666666666667 360.9600000000001z" /> + <glyph glyph-name="bell-outline" + unicode="&#xF09C;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H149.3333333333333V224C149.3333333333333 277.3333333333334 192 320 245.3333333333333 320S341.3333333333333 277.3333333333334 341.3333333333333 224M384 106.6666666666667V224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64M245.3333333333333 -21.3333333333333C268.8 -21.3333333333333 288 -2.1333333333333 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333z" /> + <glyph glyph-name="bell-plus" + unicode="&#xF09D;" + horiz-adv-x="512" d=" M213.3333333333333 0C213.3333333333333 -23.6799999999999 232.5333333333334 -42.6666666666666 256 -42.6666666666666S298.6666666666667 -23.4666666666667 298.6666666666667 0M402.7733333333333 89.1733333333334V213.3333333333334C402.7733333333333 282.6666666666667 354.7733333333333 340.6933333333334 289.92 356.0533333333334V371.4133333333334C289.92 390.1866666666667 274.7733333333333 405.3333333333333 256 405.3333333333333C237.2266666666667 405.3333333333333 222.08 390.1866666666667 222.08 371.4133333333334V356.0533333333334C157.2266666666667 340.6933333333334 109.2266666666667 282.6666666666667 109.2266666666667 213.3333333333334V89.1733333333334L64 43.9466666666667V21.3333333333334H448V43.9466666666667M341.3333333333333 170.6666666666667H277.3333333333333V106.6666666666667H234.6666666666667V170.6666666666667H170.6666666666667V213.3333333333334H234.6666666666667V277.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333" /> + <glyph glyph-name="bell-ring" + unicode="&#xF09E;" + horiz-adv-x="512" d=" M245.3333333333333 -21.3333333333333C248.32 -21.3333333333333 251.0933333333333 -21.3333333333333 253.8666666666667 -20.48C267.7333333333334 -17.4933333333333 279.2533333333334 -8.1066666666667 284.5866666666667 4.6933333333333C286.72 9.8133333333333 288 15.5733333333334 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333M384 224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64L384 106.6666666666667M426.0266666666667 234.6666666666667H468.6933333333333C465.4933333333333 303.1466666666667 431.7866666666667 363.3066666666667 380.8 402.1333333333334L350.2933333333333 371.6266666666667C393.8133333333334 341.3333333333334 422.8266666666667 291.2000000000001 426.0266666666667 234.6666666666667M140.3733333333333 371.6266666666667L109.8666666666667 402.1333333333334C58.88 363.3066666666667 25.1733333333333 303.1466666666667 21.3333333333333 234.6666666666667H64C67.84 291.2000000000001 96.8533333333333 341.3333333333334 140.3733333333333 371.6266666666667z" /> + <glyph glyph-name="bell-ring-outline" + unicode="&#xF09F;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334V224C341.3333333333333 277.3333333333334 298.6666666666667 320 245.3333333333333 320S149.3333333333333 277.3333333333334 149.3333333333333 224V85.3333333333334H341.3333333333333M384 106.6666666666667L426.6666666666667 64V42.6666666666667H64V64L106.6666666666667 106.6666666666667V224C106.6666666666667 289.4933333333334 152.1066666666667 344.32 213.3333333333333 358.8266666666667V373.3333333333334C213.3333333333333 391.04 227.6266666666667 405.3333333333333 245.3333333333333 405.3333333333333S277.3333333333333 391.04 277.3333333333333 373.3333333333334V358.8266666666667C338.3466666666667 344.3200000000001 384 289.4933333333334 384 224V106.6666666666667M245.3333333333333 -21.3333333333333C221.8666666666667 -21.3333333333333 202.6666666666667 -2.1333333333333 202.6666666666667 21.3333333333334H288C288 -2.1333333333333 268.8 -21.3333333333333 245.3333333333333 -21.3333333333333M426.0266666666667 234.6666666666667C422.8266666666667 291.2000000000001 393.8133333333333 341.3333333333334 350.2933333333333 371.6266666666667L380.8 402.1333333333334C431.7866666666667 363.3066666666667 465.4933333333332 303.1466666666667 468.6933333333333 234.6666666666667H426.0266666666667M140.3733333333333 371.6266666666667C96.8533333333333 341.3333333333334 67.84 291.2000000000001 64 234.6666666666667H21.3333333333333C25.1733333333333 303.1466666666667 58.88 363.3066666666667 109.8666666666667 402.1333333333334L140.3733333333333 371.6266666666667z" /> + <glyph glyph-name="bell-sleep" + unicode="&#xF0A0;" + horiz-adv-x="512" d=" M298.6666666666667 238.9333333333334L238.9333333333333 166.4H298.6666666666667V128H192V166.4L251.7333333333334 238.9333333333334H192V277.3333333333334H298.6666666666667M384 106.6666666666667V224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64M245.3333333333333 -21.3333333333333C268.8 -21.3333333333333 288 -2.1333333333333 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333z" /> + <glyph glyph-name="beta" + unicode="&#xF0A1;" + horiz-adv-x="512" d=" M196.9066666666667 72.7466666666667V-45.2266666666667H146.7733333333333V304.64C146.7733333333333 335.5733333333334 155.9466666666667 359.8933333333333 174.08 378.0266666666667C192 396.16 216.96 405.3333333333333 247.68 405.3333333333333C277.3333333333333 405.3333333333333 300.16 398.08 317.2266666666667 384C334.08 369.4933333333334 342.4 349.44 342.4 324.0533333333334C342.4 306.56 336.8533333333334 290.1333333333334 325.76 274.9866666666667C314.6666666666667 259.8400000000001 300.3733333333334 249.3866666666667 282.6666666666667 243.6266666666667V242.7733333333334C309.3333333333334 238.5066666666667 330.0266666666667 228.9066666666667 344.1066666666667 213.3333333333334C358.1866666666667 198.1866666666667 365.2266666666667 178.7733333333333 365.2266666666667 154.88C365.2266666666667 126.72 355.4133333333333 103.68 336 85.9733333333334C316.3733333333334 68.2666666666668 290.7733333333333 59.5200000000001 258.7733333333333 59.5200000000001C236.16 59.5200000000001 215.4666666666667 64.0000000000001 196.9066666666667 72.7466666666668M228.6933333333333 218.6666666666668V259.6266666666667C247.2533333333333 261.9733333333334 262.4 268.8 274.56 280.32C286.5066666666667 292.0533333333334 292.48 305.0666666666667 292.48 320C292.48 349.44 277.3333333333333 364.3733333333334 247.4666666666667 364.3733333333334C231.2533333333334 364.3733333333334 218.6666666666667 359.2533333333334 209.92 348.8C201.1733333333333 338.3466666666667 196.9066666666667 323.8400000000001 196.9066666666667 304.8533333333334V117.3333333333334C216.32 106.0266666666666 235.3066666666667 100.48 253.6533333333334 100.48C271.5733333333333 100.48 285.6533333333333 105.1733333333334 295.68 114.3466666666667C305.7066666666667 123.7333333333334 310.6133333333334 136.96 310.6133333333334 153.8133333333334C310.6133333333334 192 283.3066666666667 213.3333333333334 228.6933333333334 218.6666666666667z" /> + <glyph glyph-name="bible" + unicode="&#xF0A2;" + horiz-adv-x="512" d=" M123.9466666666667 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -1.0666666666667 406.4 -21.3333333333333 384 -21.3333333333333H128C105.6 -21.3333333333333 85.3333333333333 -1.0666666666667 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 384 103.04 403.4133333333334 123.9466666666667 405.3333333333333M277.3333333333333 234.6666666666667V170.6666666666667H213.3333333333333V128H277.3333333333333V21.3333333333334H320V128H384V170.6666666666667H320V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="bike" + unicode="&#xF0A3;" + horiz-adv-x="512" d=" M106.6666666666667 10.6666666666667C65.4933333333333 10.6666666666667 32 44.16 32 85.3333333333334S65.4933333333333 160 106.6666666666667 160S181.3333333333333 126.5066666666667 181.3333333333333 85.3333333333334S147.84 10.6666666666667 106.6666666666667 10.6666666666667M106.6666666666667 192C47.7866666666667 192 0 144.2133333333334 0 85.3333333333334S47.7866666666667 -21.3333333333333 106.6666666666667 -21.3333333333333S213.3333333333333 26.4533333333334 213.3333333333333 85.3333333333334S165.5466666666667 192 106.6666666666667 192M315.7333333333334 234.6666666666667H405.3333333333333V273.0666666666667H337.0666666666667L295.68 342.8266666666667C289.4933333333334 353.4933333333334 277.3333333333334 360.5333333333334 264.5333333333334 360.5333333333334C254.5066666666667 360.5333333333334 245.3333333333334 356.48 238.9333333333334 349.8666666666667L160 271.1466666666667C153.3866666666667 264.5333333333334 149.3333333333333 256 149.3333333333333 245.3333333333334C149.3333333333333 231.8933333333333 156.3733333333333 220.5866666666667 167.4666666666667 213.9733333333333L238.9333333333333 170.6666666666667V64H277.3333333333333V202.6666666666667L229.3333333333333 237.8666666666667L278.8266666666667 288M405.3333333333333 10.6666666666667C364.16 10.6666666666667 330.6666666666667 44.16 330.6666666666667 85.3333333333334S364.16 160 405.3333333333333 160S480 126.5066666666667 480 85.3333333333334S446.5066666666667 10.6666666666667 405.3333333333333 10.6666666666667M405.3333333333333 192C346.4533333333334 192 298.6666666666667 144.2133333333334 298.6666666666667 85.3333333333334S346.4533333333334 -21.3333333333333 405.3333333333333 -21.3333333333333S512 26.4533333333334 512 85.3333333333334S464.2133333333333 192 405.3333333333333 192M341.3333333333333 345.6C362.6666666666667 345.6 379.7333333333334 362.6666666666667 379.7333333333334 384S362.6666666666667 422.4 341.3333333333333 422.4S302.9333333333333 405.3333333333333 302.9333333333333 384S320 345.6 341.3333333333333 345.6z" /> + <glyph glyph-name="bing" + unicode="&#xF0A4;" + horiz-adv-x="512" d=" M106.6666666666667 384V42.6666666666667L186.0266666666667 0L384 110.5066666666667V197.76L208.4266666666667 257.0666666666667L242.7733333333333 174.0800000000001L297.3866666666667 149.3333333333334L185.6 87.04V356.9066666666667L106.6666666666667 384" /> + <glyph glyph-name="binoculars" + unicode="&#xF0A5;" + horiz-adv-x="512" d=" M234.6666666666667 320H277.3333333333333V170.6666666666667H234.6666666666667V320M192 21.3333333333334C192 9.6 182.4 0 170.6666666666667 0H106.6666666666667C94.9333333333333 0 85.3333333333333 9.6 85.3333333333333 21.3333333333334V128L128 320H213.3333333333333V170.6666666666667C213.3333333333333 158.9333333333333 203.7333333333334 149.3333333333334 192 149.3333333333334V21.3333333333334M213.3333333333333 341.3333333333334H149.3333333333333V384H213.3333333333333V341.3333333333334M320 21.3333333333334V149.3333333333334C308.2666666666667 149.3333333333334 298.6666666666667 158.9333333333333 298.6666666666667 170.6666666666667V320H384L426.6666666666667 128V21.3333333333334C426.6666666666667 9.6 417.0666666666667 0 405.3333333333333 0H341.3333333333333C329.6 0 320 9.6 320 21.3333333333334M298.6666666666667 341.3333333333334V384H362.6666666666667V341.3333333333334H298.6666666666667z" /> + <glyph glyph-name="bio" + unicode="&#xF0A6;" + horiz-adv-x="512" d=" M362.6666666666667 192H426.6666666666667C450.1333333333334 192 469.3333333333333 172.8 469.3333333333333 149.3333333333334V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H362.6666666666667C339.2 42.6666666666667 320 61.8666666666667 320 85.3333333333334V149.3333333333334C320 172.8 339.2 192 362.6666666666667 192M362.6666666666667 149.3333333333334V85.3333333333334H426.6666666666667V149.3333333333334H362.6666666666667M42.6666666666667 298.6666666666667H149.3333333333333C172.8 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.8666666666667 172.8 170.6666666666667 149.3333333333333 170.6666666666667C172.8 170.6666666666667 192 151.4666666666667 192 128V85.3333333333334C192 61.8666666666667 172.8 42.6666666666667 149.3333333333333 42.6666666666667H42.6666666666667V298.6666666666667M85.3333333333333 256V192H149.3333333333333V256H85.3333333333333M85.3333333333333 85.3333333333334H149.3333333333333V149.3333333333334H85.3333333333333V85.3333333333334M234.6666666666667 170.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667V256z" /> + <glyph glyph-name="biohazard" + unicode="&#xF0A7;" + horiz-adv-x="512" d=" M490.6666666666666 105.3866666666667C490.6666666666666 100.48 490.6666666666666 96 489.8133333333333 91.7333333333334C485.9733333333334 146.3466666666667 440.32 189.6533333333334 384 189.6533333333334C376.1066666666667 189.6533333333334 368.4266666666666 188.5866666666667 360.9600000000001 187.0933333333334C361.8133333333334 181.3333333333334 362.6666666666667 176.4266666666667 362.6666666666667 170.6666666666668C362.6666666666667 120.5333333333334 326.6133333333334 78.5066666666667 278.8266666666667 68.0533333333334C286.2933333333333 20.2666666666668 326.6133333333334 -16.8533333333333 376.5333333333333 -20.48C371.84 -21.3333333333333 367.36 -21.3333333333333 362.6666666666667 -21.3333333333333C318.2933333333333 -21.3333333333333 278.8266666666667 1.28 256 35.4133333333334C233.1733333333333 1.28 193.92 -21.3333333333333 149.3333333333333 -21.3333333333333C144.64 -21.3333333333333 140.16 -21.3333333333333 135.4666666666667 -20.48C185.3866666666667 -16.8533333333333 225.4933333333334 20.0533333333333 233.1733333333333 68.0533333333333C185.1733333333333 78.5066666666667 149.3333333333333 120.5333333333334 149.3333333333333 170.6666666666667C149.3333333333333 176.4266666666667 150.1866666666667 181.3333333333334 150.8266666666667 187.0933333333334C143.5733333333333 188.5866666666667 135.8933333333333 189.6533333333333 128 189.6533333333333C71.68 189.6533333333333 26.0266666666667 146.3466666666667 21.9733333333333 91.7333333333333C21.3333333333333 95.9999999999999 21.3333333333333 100.48 21.3333333333333 105.3866666666667C21.3333333333333 173.8666666666667 76.5866666666667 229.5466666666666 145.28 231.68C134.4 250.24 128 272 128 295.04C128 342.6133333333334 154.24 384 193.28 405.3333333333333C166.6133333333333 386.1333333333334 149.3333333333333 355.4133333333334 149.3333333333333 320C149.3333333333333 291.2000000000001 161.28 264.7466666666667 180.6933333333333 245.3333333333334C200.1066666666667 264.7466666666667 226.56 276.48 256 276.48C285.2266666666667 276.48 311.8933333333333 264.7466666666667 330.6666666666667 245.3333333333334C350.5066666666667 264.7466666666667 362.6666666666667 291.2000000000001 362.6666666666667 320C362.6666666666667 355.4133333333334 345.1733333333333 386.1333333333334 318.72 405.3333333333333C357.76 384 384 342.6133333333334 384 295.04C384 272 377.6 250.24 366.7200000000001 231.68C435.6266666666667 229.5466666666667 490.6666666666666 173.8666666666667 490.6666666666666 105.3866666666667M197.76 232.32C214.4 221.44 234.6666666666667 215.04 256 215.04S297.6 221.44 314.24 232.32C298.6666666666667 246.4000000000001 278.6133333333334 255.36 256 255.36S213.3333333333333 246.4000000000001 197.76 232.32M256 139.3066666666667C273.4933333333334 139.3066666666667 288 153.6 288 170.6666666666667C288 188.3733333333333 273.7066666666667 202.6666666666667 256 202.6666666666667S224 188.3733333333333 224 170.6666666666667C224 153.6 238.2933333333333 139.3066666666667 256 139.3066666666667M234.0266666666667 89.8133333333334C231.8933333333334 130.1333333333334 207.1466666666667 164.48 171.7333333333334 180.2666666666667C171.3066666666667 177.0666666666667 170.6666666666667 174.0800000000001 170.6666666666667 170.6666666666668C170.6666666666667 131.84 197.76 99.4133333333334 234.0266666666667 89.8133333333334M340.48 180.2666666666667C304.8533333333334 164.48 279.8933333333333 130.1333333333334 277.3333333333333 89.8133333333334C314.24 99.4133333333334 341.3333333333333 131.84 341.3333333333333 170.6666666666667C341.3333333333333 174.0800000000001 340.6933333333334 177.0666666666667 340.48 180.2666666666667z" /> + <glyph glyph-name="bitbucket" + unicode="&#xF0A8;" + horiz-adv-x="512" d=" M256 325.12C321.28 324.9066666666667 374.4 336.2133333333334 374.4 350.0800000000001C374.4 363.9466666666667 321.4933333333334 375.2533333333334 256 375.4666666666667C190.72 375.4666666666667 137.6 364.3733333333334 137.6 350.5066666666667C137.6 336.4266666666667 190.5066666666667 325.12 256 325.12M256 140.8C288 140.8 314.6666666666667 167.2533333333333 314.6666666666667 199.68C314.6666666666667 232.1066666666667 288.4266666666666 258.3466666666667 256 258.3466666666667C224 258.3466666666667 197.3333333333333 232.1066666666667 197.3333333333333 199.68S224 140.8 256 140.8M256 405.3333333333333C357.76 405.3333333333333 440.7466666666667 378.0266666666667 440.7466666666667 344.1066666666667C440.7466666666667 335.1466666666667 418.56 206.72 409.8133333333334 155.9466666666667C405.9733333333334 133.12 346.88 99.6266666666667 256 99.6266666666667V100.0533333333333V99.6266666666667C165.12 99.6266666666667 106.0266666666667 133.12 102.1866666666667 155.9466666666667C93.44 206.72 71.2533333333333 335.1466666666667 71.2533333333333 344.1066666666667C71.2533333333333 378.0266666666667 154.24 405.3333333333333 256 405.3333333333333M388.9066666666667 104.96C392.1066666666667 104.96 395.3066666666667 102.6133333333334 395.3066666666667 97.7066666666667V96.0000000000001L382.08 27.5200000000001C375.8933333333333 0 321.4933333333334 -21.3333333333333 256 -21.3333333333333C190.5066666666667 -21.3333333333333 136.1066666666667 0 129.92 27.52L116.6933333333333 96V97.7066666666667C116.6933333333333 102.6133333333334 119.8933333333333 104.96 123.0933333333333 104.96C126.08 104.96 128 103.04 128 103.04S173.6533333333333 66.9866666666666 256 66.9866666666666S384 103.04 384 103.04S385.92 104.96 388.9066666666667 104.96M285.44 199.68C285.44 183.4666666666667 272.2133333333334 170.6666666666667 256 170.6666666666667C239.7866666666667 170.6666666666667 226.56 183.4666666666667 226.56 199.68C226.56 215.8933333333333 239.7866666666667 229.12 256 229.12C272.2133333333333 229.12 285.44 215.8933333333333 285.44 199.68z" /> + <glyph glyph-name="black-mesa" + unicode="&#xF0A9;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 141.0133333333333 107.7333333333333 95.36 143.1466666666667 64H192V192H362.6666666666667L408.5333333333333 115.4133333333334C420.0533333333333 138.6666666666667 426.6666666666667 164.48 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="blackberry" + unicode="&#xF0AA;" + horiz-adv-x="512" d=" M116.2666666666667 228.6933333333334C136.5333333333333 228.6933333333334 160 212.2666666666667 160 192S136.5333333333333 155.3066666666667 116.2666666666667 155.3066666666667H42.6666666666667L57.3866666666667 228.6933333333334H116.2666666666667M130.9866666666666 346.4533333333333C151.2533333333333 346.4533333333333 175.1466666666667 330.0266666666667 175.1466666666667 309.3333333333333C175.1466666666667 289.4933333333334 151.2533333333333 272.8533333333334 130.9866666666666 272.8533333333334H57.3866666666667L72.1066666666667 346.4533333333333H130.9866666666667M277.9733333333333 346.4533333333333C298.6666666666667 346.4533333333333 322.1333333333334 330.0266666666667 322.1333333333334 309.3333333333333C322.1333333333334 289.4933333333334 298.6666666666667 272.8533333333334 277.9733333333333 272.8533333333334H200.7466666666667L215.4666666666667 346.4533333333333H277.9733333333333M263.2533333333334 228.6933333333334C283.7333333333334 228.6933333333334 307.4133333333333 212.2666666666667 307.4133333333333 192S283.7333333333334 155.3066666666666 263.2533333333334 155.3066666666666H186.0266666666667L200.7466666666667 228.6933333333333H263.2533333333334M234.0266666666667 111.1466666666667C254.2933333333333 111.1466666666667 277.9733333333333 94.5066666666666 277.9733333333333 74.6666666666666C277.9733333333333 53.9733333333333 254.2933333333333 37.5466666666666 234.0266666666667 37.5466666666666H160L175.1466666666667 111.1466666666667H234.0266666666667M395.7333333333334 155.3066666666666C416 155.3066666666666 439.8933333333333 138.6666666666666 439.8933333333333 118.4S416 81.7066666666667 395.7333333333334 81.7066666666667H322.1333333333334L336.8533333333333 155.3066666666666H395.7333333333333M425.1733333333333 272.8533333333333C445.4399999999999 272.8533333333333 469.3333333333333 256 469.3333333333333 236.16C469.3333333333333 215.8933333333333 445.4399999999999 199.2533333333333 425.1733333333333 199.2533333333333H352L366.2933333333334 272.8533333333333H425.1733333333333z" /> + <glyph glyph-name="blender" + unicode="&#xF0AB;" + horiz-adv-x="512" d=" M170.6666666666667 384C170.6666666666667 376.7466666666667 174.2933333333333 369.28 181.3333333333333 365.2266666666667L256 320H53.3333333333333C35.6266666666667 320 21.3333333333333 305.7066666666667 21.3333333333333 288S35.6266666666667 256 53.3333333333333 256H179.4133333333333L42.6666666666667 170.6666666666667C24.7466666666667 160 21.3333333333333 144.64 21.3333333333333 128C21.3333333333333 106.6666666666667 37.76 85.3333333333334 64 85.3333333333334C78.72 85.3333333333334 93.6533333333333 96 106.6666666666667 106.6666666666667L149.3333333333333 141.2266666666667C153.6 50.7733333333334 228.48 -21.3333333333333 320 -21.3333333333333C414.2933333333334 -21.3333333333333 490.6666666666666 55.04 490.6666666666666 149.3333333333334C490.6666666666666 211.6266666666667 457.1733333333333 266.6666666666667 407.2533333333334 295.8933333333333C406.6133333333333 296.32 405.9733333333334 296.9600000000001 405.3333333333333 297.3866666666667C405.3333333333333 297.3866666666667 403.6266666666667 298.6666666666667 402.3466666666667 299.3066666666667C336.2133333333333 343.8933333333333 277.9733333333333 368.64 203.7333333333333 402.56C199.2533333333333 404.48 195.4133333333333 405.3333333333333 192 405.3333333333333C179.2 405.3333333333333 170.6666666666667 395.52 170.6666666666667 384M320 256C378.88 256 426.6666666666667 208.2133333333334 426.6666666666667 149.3333333333334S378.88 42.6666666666667 320 42.6666666666667S213.3333333333333 90.4533333333334 213.3333333333333 149.3333333333334S261.12 256 320 256M320 224C278.8266666666667 224 245.3333333333333 190.5066666666667 245.3333333333333 149.3333333333334S278.8266666666667 74.6666666666667 320 74.6666666666667S394.6666666666667 108.16 394.6666666666667 149.3333333333334S361.1733333333333 224 320 224z" /> + <glyph glyph-name="blinds" + unicode="&#xF0AC;" + horiz-adv-x="512" d=" M64 405.3333333333333H448C459.7333333333333 405.3333333333333 469.3333333333333 395.7333333333334 469.3333333333333 384V341.3333333333334C469.3333333333333 329.6 459.7333333333333 320 448 320H426.6666666666667V170.6666666666667C426.6666666666667 158.9333333333333 417.0666666666667 149.3333333333334 405.3333333333333 149.3333333333334H277.3333333333333V103.04C302.2933333333333 94.2933333333333 320 70.6133333333334 320 42.6666666666667C320 7.2533333333333 291.4133333333333 -21.3333333333333 256 -21.3333333333333S192 7.2533333333333 192 42.6666666666667C192 70.6133333333334 209.7066666666667 94.2933333333334 234.6666666666667 103.04V149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667V320H64C52.2666666666667 320 42.6666666666667 329.6 42.6666666666667 341.3333333333334V384C42.6666666666667 395.7333333333334 52.2666666666667 405.3333333333333 64 405.3333333333333M256 64C244.2666666666667 64 234.6666666666667 54.4 234.6666666666667 42.6666666666667S244.2666666666667 21.3333333333334 256 21.3333333333334S277.3333333333333 30.9333333333333 277.3333333333333 42.6666666666667S267.7333333333334 64 256 64z" /> + <glyph glyph-name="block-helper" + unicode="&#xF0AD;" + horiz-adv-x="512" d=" M256 448C397.44 448 512 333.44 512 192S397.44 -64 256 -64S0 50.5600000000001 0 192S114.56 448 256 448M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192C42.6666666666667 140.8 60.8 93.8666666666667 90.88 56.96L391.04 357.12C354.1333333333334 387.2 307.2 405.3333333333333 256 405.3333333333333M256 -21.3333333333333C373.76 -21.3333333333333 469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 243.2 451.1999999999999 290.1333333333334 421.12 327.04L120.96 26.8800000000001C157.8666666666667 -3.1999999999999 204.8 -21.3333333333333 256 -21.3333333333333z" /> + <glyph glyph-name="blogger" + unicode="&#xF0AE;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667H212.2666666666667C200.5333333333333 170.6666666666667 190.9333333333333 161.0666666666667 190.9333333333333 149.3333333333334S200.5333333333333 128 212.2666666666667 128H298.6666666666667C310.4 128 320 137.6 320 149.3333333333334S310.4 170.6666666666667 298.6666666666667 170.6666666666667M212.2666666666667 234.6666666666667H267.7333333333333C279.4666666666667 234.6666666666667 289.0666666666666 244.2666666666667 289.0666666666666 256S279.4666666666667 277.3333333333334 267.7333333333333 277.3333333333334H212.2666666666667C200.5333333333333 277.3333333333334 190.9333333333333 267.7333333333334 190.9333333333333 256S200.5333333333333 234.6666666666667 212.2666666666667 234.6666666666667M341.3333333333333 256V234.6666666666667C341.3333333333333 222.9333333333333 350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334S384 203.7333333333334 384 192V128C384 92.5866666666667 355.4133333333333 64 320 64H192C156.5866666666667 64 128 92.5866666666667 128 128V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334H277.3333333333333C312.7466666666667 341.3333333333334 341.3333333333333 312.7466666666667 341.3333333333333 277.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="bluetooth" + unicode="&#xF0AF;" + horiz-adv-x="512" d=" M317.44 100.48L277.3333333333333 60.3733333333333V140.5866666666667M277.3333333333333 323.6266666666667L317.44 283.52L277.3333333333333 243.6266666666667M377.8133333333334 283.52L256 405.3333333333333H234.6666666666667V243.6266666666667L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.96L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L377.8133333333334 100.48L286.08 192L377.8133333333334 283.52z" /> + <glyph glyph-name="bluetooth-audio" + unicode="&#xF0B0;" + horiz-adv-x="512" d=" M274.7733333333333 100.48L234.6666666666667 60.3733333333333V140.5866666666667M234.6666666666667 323.6266666666667L274.7733333333333 283.52L234.6666666666667 243.6266666666667M335.1466666666667 283.52L213.3333333333333 405.3333333333333H192V243.6266666666667L94.08 341.3333333333334L64 311.2533333333334L183.2533333333333 192L64 72.96L94.08 42.6666666666667L192 140.5866666666667V-21.3333333333333H213.3333333333333L335.1466666666667 100.48L243.4133333333334 192M416.64 304.8533333333334L389.5466666666667 277.3333333333334C402.9866666666667 252.1600000000001 410.6666666666667 222.9333333333333 410.6666666666667 192C410.6666666666667 161.0666666666667 402.9866666666667 131.84 389.5466666666667 106.6666666666667L415.1466666666667 80.64C435.84 113.4933333333334 448 152.1066666666667 448 193.92C448 234.6666666666667 436.48 272.4266666666667 416.64 304.8533333333334M303.7866666666667 192L353.28 142.2933333333334C359.2533333333334 157.8666666666667 362.6666666666667 174.5066666666667 362.6666666666667 192C362.6666666666667 209.4933333333334 359.2533333333334 226.1333333333334 353.4933333333334 241.4933333333334L303.7866666666667 192z" /> + <glyph glyph-name="bluetooth-connect" + unicode="&#xF0B1;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667L362.6666666666667 192L405.3333333333333 149.3333333333334L448 192M317.44 100.48L277.3333333333333 60.3733333333333V140.5866666666667M277.3333333333333 323.6266666666667L317.44 283.52L277.3333333333333 243.6266666666667M377.8133333333334 283.52L256 405.3333333333333H234.6666666666667V243.6266666666667L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.96L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L377.8133333333334 100.48L286.08 192M149.3333333333333 192L106.6666666666667 234.6666666666667L64 192L106.6666666666667 149.3333333333334L149.3333333333333 192z" /> + <glyph glyph-name="bluetooth-off" + unicode="&#xF0B2;" + horiz-adv-x="512" d=" M277.3333333333333 323.6266666666667L317.44 283.52L283.3066666666666 249.3866666666667L313.3866666666667 219.3066666666667L377.8133333333334 283.7333333333334L256 405.3333333333333H234.6666666666667V298.0266666666667L277.3333333333333 255.36M115.4133333333333 362.6666666666667L85.3333333333333 332.5866666666667L225.92 192L106.6666666666667 72.7466666666667L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L347.52 70.1866666666667L396.5866666666667 21.3333333333334L426.6666666666667 51.4133333333334M277.3333333333333 60.3733333333334V140.5866666666667L317.44 100.48" /> + <glyph glyph-name="bluetooth-settings" + unicode="&#xF0B3;" + horiz-adv-x="512" d=" M317.44 143.1466666666667L277.3333333333333 103.04V183.2533333333333L317.44 143.1466666666667M277.3333333333333 366.2933333333334L317.44 326.1866666666667L277.3333333333333 286.0800000000001M377.8133333333334 326.1866666666667L256 448H234.6666666666667V286.0800000000001L136.7466666666667 384L106.6666666666667 353.92L225.92 234.6666666666667L106.6666666666667 115.4133333333334L136.7466666666667 85.3333333333334L234.6666666666667 183.2533333333333V21.3333333333334H256L377.8133333333334 143.1466666666667L286.08 234.6666666666667L377.8133333333334 326.1866666666667M320 -64H362.6666666666667V-21.3333333333333H320M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667V-64z" /> + <glyph glyph-name="bluetooth-transfer" + unicode="&#xF0B4;" + horiz-adv-x="512" d=" M313.8133333333334 283.52L222.08 192L313.8133333333334 100.48L192 -21.3333333333333H170.6666666666667V140.5866666666667L72.7466666666667 42.6666666666667L42.6666666666667 72.7466666666667L161.92 192L42.6666666666667 311.2533333333334L72.7466666666667 341.3333333333334L170.6666666666667 243.4133333333334V405.3333333333333H192L313.8133333333334 283.52M213.3333333333333 323.6266666666667V243.4133333333334L253.44 283.52L213.3333333333333 323.6266666666667M253.44 100.48L213.3333333333333 140.5866666666667V60.3733333333333L253.44 100.48M469.3333333333333 277.3333333333334H426.6666666666667V213.3333333333334H384V277.3333333333334H341.3333333333333L405.3333333333333 362.6666666666667L469.3333333333333 277.3333333333334M469.3333333333333 106.6666666666667L405.3333333333333 21.3333333333334L341.3333333333333 106.6666666666667H384V170.6666666666667H426.6666666666667V106.6666666666667H469.3333333333333z" /> + <glyph glyph-name="blur" + unicode="&#xF0B5;" + horiz-adv-x="512" d=" M298.6666666666667 266.6666666666667C280.96 266.6666666666667 266.6666666666667 252.3733333333334 266.6666666666667 234.6666666666667S280.96 202.6666666666667 298.6666666666667 202.6666666666667S330.6666666666667 216.96 330.6666666666667 234.6666666666667S316.3733333333334 266.6666666666667 298.6666666666667 266.6666666666667M298.6666666666667 181.3333333333334C280.96 181.3333333333334 266.6666666666667 167.04 266.6666666666667 149.3333333333334S280.96 117.3333333333334 298.6666666666667 117.3333333333334S330.6666666666667 131.6266666666667 330.6666666666667 149.3333333333334S316.3733333333334 181.3333333333334 298.6666666666667 181.3333333333334M213.3333333333333 85.3333333333334C201.6 85.3333333333334 192 75.7333333333334 192 64S201.6 42.6666666666667 213.3333333333333 42.6666666666667S234.6666666666667 52.2666666666667 234.6666666666667 64S225.0666666666667 85.3333333333334 213.3333333333333 85.3333333333334M213.3333333333333 266.6666666666667C195.6266666666667 266.6666666666667 181.3333333333333 252.3733333333334 181.3333333333333 234.6666666666667S195.6266666666667 202.6666666666667 213.3333333333333 202.6666666666667S245.3333333333333 216.96 245.3333333333333 234.6666666666667S231.04 266.6666666666667 213.3333333333333 266.6666666666667M298.6666666666667 10.6666666666667C292.6933333333334 10.6666666666667 288 5.9733333333334 288 0S292.6933333333334 -10.6666666666666 298.6666666666667 -10.6666666666666S309.3333333333333 -5.9733333333334 309.3333333333333 0S304.64 10.6666666666667 298.6666666666667 10.6666666666667M298.6666666666667 85.3333333333334C286.9333333333333 85.3333333333334 277.3333333333333 75.7333333333334 277.3333333333333 64S286.9333333333333 42.6666666666667 298.6666666666667 42.6666666666667S320 52.2666666666667 320 64S310.4 85.3333333333334 298.6666666666667 85.3333333333334M448 160C442.0266666666667 160 437.3333333333333 155.3066666666667 437.3333333333333 149.3333333333334S442.0266666666667 138.6666666666667 448 138.6666666666667S458.6666666666666 143.36 458.6666666666666 149.3333333333334S453.9733333333334 160 448 160M384 341.3333333333334C372.2666666666667 341.3333333333334 362.6666666666667 331.7333333333334 362.6666666666667 320S372.2666666666667 298.6666666666667 384 298.6666666666667S405.3333333333333 308.2666666666667 405.3333333333333 320S395.7333333333334 341.3333333333334 384 341.3333333333334M384 256C372.2666666666667 256 362.6666666666667 246.4000000000001 362.6666666666667 234.6666666666667S372.2666666666667 213.3333333333334 384 213.3333333333334S405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667S395.7333333333334 256 384 256M384 85.3333333333334C372.2666666666667 85.3333333333334 362.6666666666667 75.7333333333334 362.6666666666667 64S372.2666666666667 42.6666666666667 384 42.6666666666667S405.3333333333333 52.2666666666667 405.3333333333333 64S395.7333333333334 85.3333333333334 384 85.3333333333334M384 170.6666666666667C372.2666666666667 170.6666666666667 362.6666666666667 161.0666666666667 362.6666666666667 149.3333333333334S372.2666666666667 128 384 128S405.3333333333333 137.6 405.3333333333333 149.3333333333334S395.7333333333334 170.6666666666667 384 170.6666666666667M213.3333333333333 181.3333333333334C195.6266666666667 181.3333333333334 181.3333333333333 167.04 181.3333333333333 149.3333333333334S195.6266666666667 117.3333333333334 213.3333333333333 117.3333333333334S245.3333333333333 131.6266666666667 245.3333333333333 149.3333333333334S231.04 181.3333333333334 213.3333333333333 181.3333333333334M213.3333333333333 298.6666666666667C225.0666666666667 298.6666666666667 234.6666666666667 308.2666666666667 234.6666666666667 320S225.0666666666667 341.3333333333334 213.3333333333333 341.3333333333334S192 331.7333333333334 192 320S201.6 298.6666666666667 213.3333333333333 298.6666666666667M213.3333333333333 373.3333333333334C219.3066666666667 373.3333333333334 224 378.0266666666667 224 384S219.3066666666667 394.6666666666667 213.3333333333333 394.6666666666667S202.6666666666667 389.9733333333334 202.6666666666667 384S207.36 373.3333333333334 213.3333333333333 373.3333333333334M213.3333333333333 10.6666666666667C207.36 10.6666666666667 202.6666666666667 5.9733333333334 202.6666666666667 0S207.36 -10.6666666666666 213.3333333333333 -10.6666666666666S224 -5.9733333333334 224 0S219.3066666666667 10.6666666666667 213.3333333333333 10.6666666666667M64 160C58.0266666666667 160 53.3333333333333 155.3066666666667 53.3333333333333 149.3333333333334S58.0266666666667 138.6666666666667 64 138.6666666666667S74.6666666666667 143.36 74.6666666666667 149.3333333333334S69.9733333333333 160 64 160M298.6666666666667 373.3333333333334C304.64 373.3333333333334 309.3333333333333 378.0266666666667 309.3333333333333 384S304.64 394.6666666666667 298.6666666666667 394.6666666666667S288 389.9733333333334 288 384S292.6933333333334 373.3333333333334 298.6666666666667 373.3333333333334M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 308.2666666666667 320 320S310.4 341.3333333333334 298.6666666666667 341.3333333333334S277.3333333333333 331.7333333333334 277.3333333333333 320S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667M448 224C453.9733333333334 224 458.6666666666666 228.6933333333334 458.6666666666666 234.6666666666667S453.9733333333334 245.3333333333334 448 245.3333333333334S437.3333333333333 240.64 437.3333333333333 234.6666666666667S442.0266666666667 224 448 224M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334M64 245.3333333333334C58.0266666666667 245.3333333333334 53.3333333333333 240.64 53.3333333333333 234.6666666666667S58.0266666666667 224 64 224S74.6666666666667 228.6933333333334 74.6666666666667 234.6666666666667S69.9733333333333 245.3333333333334 64 245.3333333333334M128 256C116.2666666666667 256 106.6666666666667 246.4000000000001 106.6666666666667 234.6666666666667S116.2666666666667 213.3333333333334 128 213.3333333333334S149.3333333333333 222.9333333333333 149.3333333333333 234.6666666666667S139.7333333333333 256 128 256M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M128 170.6666666666667C116.2666666666667 170.6666666666667 106.6666666666667 161.0666666666667 106.6666666666667 149.3333333333334S116.2666666666667 128 128 128S149.3333333333333 137.6 149.3333333333333 149.3333333333334S139.7333333333333 170.6666666666667 128 170.6666666666667z" /> + <glyph glyph-name="blur-linear" + unicode="&#xF0B6;" + horiz-adv-x="512" d=" M277.3333333333333 85.3333333333334C289.0666666666667 85.3333333333334 298.6666666666667 94.9333333333333 298.6666666666667 106.6666666666667S289.0666666666667 128 277.3333333333333 128S256 118.4 256 106.6666666666667S265.6 85.3333333333334 277.3333333333333 85.3333333333334M277.3333333333333 170.6666666666667C289.0666666666667 170.6666666666667 298.6666666666667 180.2666666666667 298.6666666666667 192S289.0666666666667 213.3333333333334 277.3333333333333 213.3333333333334S256 203.7333333333334 256 192S265.6 170.6666666666667 277.3333333333333 170.6666666666667M277.3333333333333 256C289.0666666666667 256 298.6666666666667 265.6 298.6666666666667 277.3333333333334S289.0666666666667 298.6666666666667 277.3333333333333 298.6666666666667S256 289.0666666666667 256 277.3333333333334S265.6 256 277.3333333333333 256M362.6666666666667 181.3333333333334C368.64 181.3333333333334 373.3333333333333 186.0266666666667 373.3333333333333 192S368.64 202.6666666666667 362.6666666666667 202.6666666666667S352 197.9733333333333 352 192S356.6933333333333 181.3333333333334 362.6666666666667 181.3333333333334M362.6666666666667 266.6666666666667C368.64 266.6666666666667 373.3333333333333 271.36 373.3333333333333 277.3333333333334S368.64 288 362.6666666666667 288S352 283.3066666666667 352 277.3333333333334S356.6933333333333 266.6666666666667 362.6666666666667 266.6666666666667M64 384V341.3333333333334H448V384M362.6666666666667 96C368.64 96 373.3333333333333 100.6933333333333 373.3333333333333 106.6666666666667S368.64 117.3333333333334 362.6666666666667 117.3333333333334S352 112.64 352 106.6666666666667S356.6933333333333 96 362.6666666666667 96M192 85.3333333333334C203.7333333333334 85.3333333333334 213.3333333333333 94.9333333333333 213.3333333333333 106.6666666666667S203.7333333333334 128 192 128S170.6666666666667 118.4 170.6666666666667 106.6666666666667S180.2666666666667 85.3333333333334 192 85.3333333333334M106.6666666666667 160C124.3733333333333 160 138.6666666666667 174.2933333333334 138.6666666666667 192S124.3733333333333 224 106.6666666666667 224S74.6666666666667 209.7066666666667 74.6666666666667 192S88.96 160 106.6666666666667 160M106.6666666666667 245.3333333333334C124.3733333333333 245.3333333333334 138.6666666666667 259.6266666666667 138.6666666666667 277.3333333333334S124.3733333333333 309.3333333333334 106.6666666666667 309.3333333333334S74.6666666666667 295.04 74.6666666666667 277.3333333333334S88.96 245.3333333333334 106.6666666666667 245.3333333333334M64 0H448V42.6666666666667H64M192 256C203.7333333333334 256 213.3333333333333 265.6 213.3333333333333 277.3333333333334S203.7333333333334 298.6666666666667 192 298.6666666666667S170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334S180.2666666666667 256 192 256M192 170.6666666666667C203.7333333333334 170.6666666666667 213.3333333333333 180.2666666666667 213.3333333333333 192S203.7333333333334 213.3333333333334 192 213.3333333333334S170.6666666666667 203.7333333333334 170.6666666666667 192S180.2666666666667 170.6666666666667 192 170.6666666666667M106.6666666666667 74.6666666666667C124.3733333333333 74.6666666666667 138.6666666666667 88.96 138.6666666666667 106.6666666666667S124.3733333333333 138.6666666666667 106.6666666666667 138.6666666666667S74.6666666666667 124.3733333333333 74.6666666666667 106.6666666666667S88.96 74.6666666666667 106.6666666666667 74.6666666666667z" /> + <glyph glyph-name="blur-off" + unicode="&#xF0B7;" + horiz-adv-x="512" d=" M64 160C58.0266666666667 160 53.3333333333333 155.3066666666667 53.3333333333333 149.3333333333334S58.0266666666667 138.6666666666667 64 138.6666666666667S74.6666666666667 143.36 74.6666666666667 149.3333333333334S69.9733333333333 160 64 160M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M213.3333333333333 10.6666666666667C207.36 10.6666666666667 202.6666666666667 5.9733333333334 202.6666666666667 0S207.36 -10.6666666666666 213.3333333333333 -10.6666666666666S224 -5.9733333333334 224 0S219.3066666666667 10.6666666666667 213.3333333333333 10.6666666666667M64 245.3333333333334C58.0266666666667 245.3333333333334 53.3333333333333 240.64 53.3333333333333 234.6666666666667S58.0266666666667 224 64 224S74.6666666666667 228.6933333333334 74.6666666666667 234.6666666666667S69.9733333333333 245.3333333333334 64 245.3333333333334M128 170.6666666666667C116.2666666666667 170.6666666666667 106.6666666666667 161.0666666666667 106.6666666666667 149.3333333333334S116.2666666666667 128 128 128S149.3333333333333 137.6 149.3333333333333 149.3333333333334S139.7333333333333 170.6666666666667 128 170.6666666666667M448 160C442.0266666666667 160 437.3333333333333 155.3066666666667 437.3333333333333 149.3333333333334S442.0266666666667 138.6666666666667 448 138.6666666666667S458.6666666666666 143.36 458.6666666666666 149.3333333333334S453.9733333333334 160 448 160M213.3333333333333 85.3333333333334C201.6 85.3333333333334 192 75.7333333333334 192 64S201.6 42.6666666666667 213.3333333333333 42.6666666666667S234.6666666666667 52.2666666666667 234.6666666666667 64S225.0666666666667 85.3333333333334 213.3333333333333 85.3333333333334M53.3333333333333 335.5733333333334L133.9733333333333 254.9333333333334L128 256C116.2666666666667 256 106.6666666666667 246.4000000000001 106.6666666666667 234.6666666666667S116.2666666666667 213.3333333333334 128 213.3333333333334S149.3333333333333 222.9333333333333 149.3333333333333 234.6666666666667C149.3333333333333 236.8 148.6933333333333 238.72 148.0533333333334 240.64L208 180.6933333333333C192.8533333333333 178.3466666666667 181.3333333333333 165.12 181.3333333333333 149.3333333333333C181.3333333333333 131.6266666666667 195.6266666666667 117.3333333333333 213.3333333333333 117.3333333333333C229.12 117.3333333333333 242.3466666666667 128.8533333333334 244.6933333333334 144L304.64 84.0533333333333C302.7200000000001 84.6933333333333 300.8 85.3333333333333 298.6666666666667 85.3333333333333C286.9333333333334 85.3333333333333 277.3333333333334 75.7333333333333 277.3333333333334 63.9999999999999S286.9333333333334 42.6666666666666 298.6666666666667 42.6666666666666S320 52.2666666666666 320 63.9999999999999C320 66.1333333333333 319.36 68.0533333333333 318.7200000000001 69.9733333333333L399.36 -10.6666666666667L426.6666666666667 16.4266666666667L80.4266666666667 362.6666666666667L53.3333333333333 335.5733333333334M298.6666666666667 10.6666666666667C292.6933333333334 10.6666666666667 288 5.9733333333334 288 0S292.6933333333334 -10.6666666666666 298.6666666666667 -10.6666666666666S309.3333333333333 -5.9733333333334 309.3333333333333 0S304.64 10.6666666666667 298.6666666666667 10.6666666666667M384 298.6666666666667C395.7333333333334 298.6666666666667 405.3333333333333 308.2666666666667 405.3333333333333 320S395.7333333333334 341.3333333333334 384 341.3333333333334S362.6666666666667 331.7333333333334 362.6666666666667 320S372.2666666666667 298.6666666666667 384 298.6666666666667M384 213.3333333333334C395.7333333333334 213.3333333333334 405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667S395.7333333333334 256 384 256S362.6666666666667 246.4000000000001 362.6666666666667 234.6666666666667S372.2666666666667 213.3333333333334 384 213.3333333333334M384 128C395.7333333333334 128 405.3333333333333 137.6 405.3333333333333 149.3333333333334S395.7333333333334 170.6666666666667 384 170.6666666666667S362.6666666666667 161.0666666666667 362.6666666666667 149.3333333333334S372.2666666666667 128 384 128M213.3333333333333 298.6666666666667C225.0666666666667 298.6666666666667 234.6666666666667 308.2666666666667 234.6666666666667 320S225.0666666666667 341.3333333333334 213.3333333333333 341.3333333333334S192 331.7333333333334 192 320S201.6 298.6666666666667 213.3333333333333 298.6666666666667M448 224C453.9733333333334 224 458.6666666666666 228.6933333333334 458.6666666666666 234.6666666666667S453.9733333333334 245.3333333333334 448 245.3333333333334S437.3333333333333 240.64 437.3333333333333 234.6666666666667S442.0266666666667 224 448 224M213.3333333333333 373.3333333333334C219.3066666666667 373.3333333333334 224 378.0266666666667 224 384S219.3066666666667 394.6666666666667 213.3333333333333 394.6666666666667S202.6666666666667 389.9733333333334 202.6666666666667 384S207.36 373.3333333333334 213.3333333333333 373.3333333333334M298.6666666666667 373.3333333333334C304.64 373.3333333333334 309.3333333333333 378.0266666666667 309.3333333333333 384S304.64 394.6666666666667 298.6666666666667 394.6666666666667S288 389.9733333333334 288 384S292.6933333333334 373.3333333333334 298.6666666666667 373.3333333333334M294.4 202.6666666666667H298.6666666666667C316.3733333333334 202.6666666666667 330.6666666666667 216.96 330.6666666666667 234.6666666666667S316.3733333333334 266.6666666666667 298.6666666666667 266.6666666666667S266.6666666666667 252.3733333333334 266.6666666666667 234.6666666666667V230.4000000000001C269.0133333333333 216.1066666666667 280.1066666666667 205.0133333333334 294.4 202.6666666666667M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 308.2666666666667 320 320S310.4 341.3333333333334 298.6666666666667 341.3333333333334S277.3333333333333 331.7333333333334 277.3333333333333 320S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667z" /> + <glyph glyph-name="blur-radial" + unicode="&#xF0B8;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667C286.9333333333333 170.6666666666667 277.3333333333333 161.0666666666667 277.3333333333333 149.3333333333334S286.9333333333333 128 298.6666666666667 128S320 137.6 320 149.3333333333334S310.4 170.6666666666667 298.6666666666667 170.6666666666667M298.6666666666667 96C292.6933333333334 96 288 91.3066666666667 288 85.3333333333334S292.6933333333334 74.6666666666667 298.6666666666667 74.6666666666667S309.3333333333333 79.36 309.3333333333333 85.3333333333334S304.64 96 298.6666666666667 96M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M362.6666666666667 245.3333333333334C356.6933333333333 245.3333333333334 352 240.64 352 234.6666666666667S356.6933333333333 224 362.6666666666667 224S373.3333333333333 228.6933333333334 373.3333333333333 234.6666666666667S368.64 245.3333333333334 362.6666666666667 245.3333333333334M362.6666666666667 160C356.6933333333333 160 352 155.3066666666667 352 149.3333333333334S356.6933333333333 138.6666666666667 362.6666666666667 138.6666666666667S373.3333333333333 143.36 373.3333333333333 149.3333333333334S368.64 160 362.6666666666667 160M298.6666666666667 288C304.64 288 309.3333333333333 292.6933333333334 309.3333333333333 298.6666666666667S304.64 309.3333333333334 298.6666666666667 309.3333333333334S288 304.64 288 298.6666666666667S292.6933333333334 288 298.6666666666667 288M298.6666666666667 256C286.9333333333333 256 277.3333333333333 246.4000000000001 277.3333333333333 234.6666666666667S286.9333333333333 213.3333333333334 298.6666666666667 213.3333333333334S320 222.9333333333333 320 234.6666666666667S310.4 256 298.6666666666667 256M213.3333333333333 288C219.3066666666667 288 224 292.6933333333334 224 298.6666666666667S219.3066666666667 309.3333333333334 213.3333333333333 309.3333333333334S202.6666666666667 304.64 202.6666666666667 298.6666666666667S207.36 288 213.3333333333333 288M149.3333333333333 160C143.36 160 138.6666666666667 155.3066666666667 138.6666666666667 149.3333333333334S143.36 138.6666666666667 149.3333333333333 138.6666666666667S160 143.36 160 149.3333333333334S155.3066666666667 160 149.3333333333333 160M213.3333333333333 96C207.36 96 202.6666666666667 91.3066666666667 202.6666666666667 85.3333333333334S207.36 74.6666666666667 213.3333333333333 74.6666666666667S224 79.36 224 85.3333333333334S219.3066666666667 96 213.3333333333333 96M149.3333333333333 245.3333333333334C143.36 245.3333333333334 138.6666666666667 240.64 138.6666666666667 234.6666666666667S143.36 224 149.3333333333333 224S160 228.6933333333334 160 234.6666666666667S155.3066666666667 245.3333333333334 149.3333333333333 245.3333333333334M213.3333333333333 170.6666666666667C201.6 170.6666666666667 192 161.0666666666667 192 149.3333333333334S201.6 128 213.3333333333333 128S234.6666666666667 137.6 234.6666666666667 149.3333333333334S225.0666666666667 170.6666666666667 213.3333333333333 170.6666666666667M213.3333333333333 256C201.6 256 192 246.4000000000001 192 234.6666666666667S201.6 213.3333333333334 213.3333333333333 213.3333333333334S234.6666666666667 222.9333333333333 234.6666666666667 234.6666666666667S225.0666666666667 256 213.3333333333333 256z" /> + <glyph glyph-name="bone" + unicode="&#xF0B9;" + horiz-adv-x="512" d=" M170.6666666666667 149.3333333333334C170.6666666666667 113.92 142.08 85.3333333333334 106.6666666666667 85.3333333333334S42.6666666666667 113.92 42.6666666666667 149.3333333333334C42.6666666666667 165.76 48.8533333333333 180.6933333333334 58.88 192C48.8533333333333 203.3066666666667 42.6666666666667 218.24 42.6666666666667 234.6666666666667C42.6666666666667 270.0800000000001 71.2533333333333 298.6666666666667 106.6666666666667 298.6666666666667S170.6666666666667 270.0800000000001 170.6666666666667 234.6666666666667C199.04 232.96 227.6266666666667 231.04 256 231.04S312.96 232.96 341.3333333333333 234.6666666666667C341.3333333333333 270.0800000000001 369.92 298.6666666666667 405.3333333333333 298.6666666666667S469.3333333333333 270.0800000000001 469.3333333333333 234.6666666666667C469.3333333333333 218.24 463.1466666666666 203.3066666666667 453.1199999999999 192C463.1466666666666 180.6933333333334 469.3333333333333 165.76 469.3333333333333 149.3333333333334C469.3333333333333 113.92 440.7466666666667 85.3333333333334 405.3333333333333 85.3333333333334S341.3333333333333 113.92 341.3333333333333 149.3333333333334C312.96 151.04 284.3733333333334 152.96 256 152.96S199.04 151.04 170.6666666666667 149.3333333333334z" /> + <glyph glyph-name="book" + unicode="&#xF0BA;" + horiz-adv-x="512" d=" M384 -21.3333333333333C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.3466666666667 407.4666666666667 405.3333333333333 384 405.3333333333333H256V256L202.6666666666667 288L149.3333333333333 256V405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384z" /> + <glyph glyph-name="book-minus" + unicode="&#xF5D9;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M384 64V106.6666666666667H256V64H384z" /> + <glyph glyph-name="book-multiple" + unicode="&#xF0BB;" + horiz-adv-x="512" d=" M405.3333333333333 64H192C168.5333333333333 64 149.3333333333333 83.2 149.3333333333333 106.6666666666667V362.6666666666667C149.3333333333333 386.1333333333334 168.5333333333333 405.3333333333333 192 405.3333333333333H213.3333333333333V298.6666666666667L256 330.6666666666667L298.6666666666667 298.6666666666667V405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64M362.6666666666667 21.3333333333334V-21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V320H106.6666666666667V21.3333333333334H362.6666666666667z" /> + <glyph glyph-name="book-multiple-variant" + unicode="&#xF0BC;" + horiz-adv-x="512" d=" M405.3333333333333 64H192C168.5333333333333 64 149.3333333333333 83.2 149.3333333333333 106.6666666666667V362.6666666666667C149.3333333333333 386.1333333333334 168.5333333333333 405.3333333333333 192 405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64M213.3333333333333 256L256 288L298.6666666666667 256V362.6666666666667H213.3333333333333V256M362.6666666666667 21.3333333333334V-21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V320H106.6666666666667V21.3333333333334H362.6666666666667z" /> + <glyph glyph-name="book-open" + unicode="&#xF0BD;" + horiz-adv-x="512" d=" M277.3333333333333 192H426.6666666666667V160H277.3333333333333M277.3333333333333 245.3333333333334H426.6666666666667V213.3333333333334H277.3333333333333M277.3333333333333 138.6666666666667H426.6666666666667V106.6666666666667H277.3333333333333M448 362.6666666666667H64C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V42.6666666666667C21.3333333333333 19.2 40.5333333333333 0 64 0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V320C490.6666666666666 343.4666666666667 471.4666666666667 362.6666666666667 448 362.6666666666667M448 42.6666666666667H256V320H448" /> + <glyph glyph-name="book-open-page-variant" + unicode="&#xF5DA;" + horiz-adv-x="512" d=" M405.3333333333333 405.3333333333333L298.6666666666667 309.3333333333334V74.6666666666667L405.3333333333333 170.6666666666667V405.3333333333333M138.6666666666667 341.3333333333334C97.0666666666667 341.3333333333334 52.2666666666667 332.8 21.3333333333333 309.3333333333334V-3.4133333333333C21.3333333333333 -8.7466666666667 26.6666666666667 -14.08 32 -14.08C34.1333333333333 -14.08 35.2 -12.5866666666666 37.3333333333333 -12.5866666666666C66.1333333333333 1.28 107.7333333333333 10.6666666666667 138.6666666666667 10.6666666666667C180.2666666666667 10.6666666666667 225.0666666666667 2.1333333333334 256 -21.3333333333333C284.8 -3.1999999999999 337.0666666666667 10.6666666666667 373.3333333333333 10.6666666666667C408.5333333333333 10.6666666666667 444.8 4.0533333333334 474.6666666666666 -11.9466666666666C476.8 -13.0133333333333 477.8666666666666 -12.5866666666666 480 -12.5866666666666C485.3333333333333 -12.5866666666666 490.6666666666666 -7.2533333333333 490.6666666666666 -1.92V309.3333333333334C477.8666666666666 318.9333333333334 464 325.3333333333334 448 330.6666666666667V42.6666666666667C424.5333333333333 50.1333333333334 398.9333333333333 53.3333333333334 373.3333333333333 53.3333333333334C337.0666666666667 53.3333333333334 284.8 39.4666666666667 256 21.3333333333334V309.3333333333334C225.0666666666667 332.8 180.2666666666667 341.3333333333334 138.6666666666667 341.3333333333334z" /> + <glyph glyph-name="book-open-variant" + unicode="&#xF0BE;" + horiz-adv-x="512" d=" M448 341.3333333333334C424.32 348.8 398.2933333333334 352 373.3333333333333 352C331.7333333333334 352 286.9333333333333 343.4666666666667 256 320C225.0666666666667 343.4666666666667 180.2666666666667 352 138.6666666666667 352C97.0666666666667 352 52.2666666666667 343.4666666666667 21.3333333333333 320V7.4666666666667C21.3333333333333 2.1333333333334 26.6666666666667 -3.1999999999999 32 -3.1999999999999C34.1333333333333 -3.1999999999999 35.2 -2.1333333333333 37.3333333333333 -2.1333333333333C66.1333333333333 11.7333333333333 107.7333333333333 21.3333333333334 138.6666666666667 21.3333333333334C180.2666666666667 21.3333333333334 225.0666666666667 12.8000000000001 256 -10.6666666666666C284.8 7.4666666666667 337.0666666666667 21.3333333333334 373.3333333333333 21.3333333333334C408.5333333333333 21.3333333333334 444.8 14.9333333333333 474.6666666666666 -1.0666666666667C476.8 -2.1333333333333 477.8666666666666 -2.1333333333333 480 -2.1333333333333C485.3333333333333 -2.1333333333333 490.6666666666666 3.2 490.6666666666666 8.5333333333333V320C477.8666666666666 329.6 464 336 448 341.3333333333334M448 53.3333333333334C424.5333333333333 60.8000000000001 398.9333333333333 64 373.3333333333333 64C337.0666666666667 64 284.8 50.1333333333334 256 32V277.3333333333334C284.8 295.4666666666667 337.0666666666667 309.3333333333334 373.3333333333333 309.3333333333334C398.9333333333333 309.3333333333334 424.5333333333333 306.1333333333334 448 298.6666666666667V53.3333333333334z" /> + <glyph glyph-name="book-plus" + unicode="&#xF5DB;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M298.6666666666667 21.3333333333334H341.3333333333333V64H384V106.6666666666667H341.3333333333333V149.3333333333334H298.6666666666667V106.6666666666667H256V64H298.6666666666667V21.3333333333334z" /> + <glyph glyph-name="book-variant" + unicode="&#xF0BF;" + horiz-adv-x="512" d=" M128 362.6666666666667H234.6666666666667V192L181.3333333333333 224L128 192M384 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="bookmark" + unicode="&#xF0C0;" + horiz-adv-x="512" d=" M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V0L256 64L405.3333333333333 0V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="bookmark-check" + unicode="&#xF0C1;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 149.3333333333334L368 282.4533333333334L337.92 312.7466666666667L234.6666666666667 209.4933333333334L179.4133333333333 264.7466666666667L149.3333333333333 234.6666666666667L234.6666666666667 149.3333333333334z" /> + <glyph glyph-name="bookmark-music" + unicode="&#xF0C2;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 213.3333333333334C211.2 213.3333333333334 192 194.1333333333333 192 170.6666666666667S211.2 128 234.6666666666667 128S277.3333333333333 147.2000000000001 277.3333333333333 170.6666666666667V277.3333333333334H341.3333333333333V320H256V207.5733333333334C249.8133333333334 211.2 242.3466666666667 213.3333333333334 234.6666666666667 213.3333333333334z" /> + <glyph glyph-name="bookmark-outline" + unicode="&#xF0C3;" + horiz-adv-x="512" d=" M362.6666666666667 64L256 110.5066666666667L149.3333333333333 64V341.3333333333334H362.6666666666667M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V0L256 64L405.3333333333333 0V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="bookmark-plus" + unicode="&#xF0C5;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 298.6666666666667V256H192V213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333V213.3333333333334H320V256H277.3333333333333V298.6666666666667H234.6666666666667z" /> + <glyph glyph-name="bookmark-plus-outline" + unicode="&#xF0C4;" + horiz-adv-x="512" d=" M362.6666666666667 64V341.3333333333334H149.3333333333333V64L256 110.5066666666667L362.6666666666667 64M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 298.6666666666667H277.3333333333333V256H320V213.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334H192V256H234.6666666666667V298.6666666666667z" /> + <glyph glyph-name="bookmark-remove" + unicode="&#xF0C6;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M174.2933333333333 264.9600000000001L225.92 213.3333333333334L174.2933333333333 161.92L204.5866666666667 131.6266666666667L256 183.2533333333333L307.4133333333333 131.6266666666667L337.7066666666667 161.92L286.08 213.3333333333334L337.7066666666667 264.9600000000001L307.4133333333333 295.04L256 243.6266666666667L204.5866666666667 295.04L174.2933333333333 264.9600000000001z" /> + <glyph glyph-name="boombox" + unicode="&#xF5DC;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334L106.6666666666667 298.6666666666667V277.3333333333334H64C52.2666666666667 277.3333333333334 42.6666666666667 267.7333333333334 42.6666666666667 256V85.3333333333334C42.6666666666667 73.6 52.2666666666667 64 64 64H448C459.7333333333333 64 469.3333333333333 73.6 469.3333333333333 85.3333333333334V256C469.3333333333333 267.7333333333334 459.7333333333333 277.3333333333334 448 277.3333333333334H405.3333333333333V298.6666666666667L362.6666666666667 341.3333333333334H149.3333333333333M149.3333333333333 298.6666666666667H362.6666666666667V277.3333333333334H149.3333333333333V298.6666666666667M234.6666666666667 256H277.3333333333333C283.3066666666666 256 288 251.3066666666667 288 245.3333333333334S283.3066666666666 234.6666666666667 277.3333333333333 234.6666666666667H234.6666666666667C228.6933333333334 234.6666666666667 224 239.36 224 245.3333333333334S228.6933333333334 256 234.6666666666667 256M160 224C195.4133333333333 224 224 195.4133333333334 224 160S195.4133333333333 96 160 96S96 124.5866666666667 96 160S124.5866666666667 224 160 224M352 224C387.4133333333333 224 416 195.4133333333334 416 160S387.4133333333333 96 352 96S288 124.5866666666667 288 160S316.5866666666667 224 352 224M160 192C142.2933333333333 192 128 177.7066666666667 128 160S142.2933333333333 128 160 128S192 142.2933333333334 192 160S177.7066666666667 192 160 192M352 192C334.2933333333333 192 320 177.7066666666667 320 160S334.2933333333333 128 352 128S384 142.2933333333334 384 160S369.7066666666666 192 352 192z" /> + <glyph glyph-name="border-all" + unicode="&#xF0C7;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H277.3333333333333V341.3333333333334H405.3333333333333M405.3333333333333 42.6666666666667H277.3333333333333V170.6666666666667H405.3333333333333M234.6666666666667 213.3333333333334H106.6666666666667V341.3333333333334H234.6666666666667M234.6666666666667 42.6666666666667H106.6666666666667V170.6666666666667H234.6666666666667M64 0H448V384H64V0z" /> + <glyph glyph-name="border-bottom" + unicode="&#xF0C8;" + horiz-adv-x="512" d=" M106.6666666666667 128H64V85.3333333333334H106.6666666666667M64 0H448V42.6666666666667H64M106.6666666666667 213.3333333333334H64V170.6666666666667H106.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M106.6666666666667 298.6666666666667H64V256H106.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M362.6666666666667 213.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333M106.6666666666667 384H64V341.3333333333334H106.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333M192 384H149.3333333333333V341.3333333333334H192M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M192 213.3333333333334H149.3333333333333V170.6666666666667H192V213.3333333333334z" /> + <glyph glyph-name="border-color" + unicode="&#xF0C9;" + horiz-adv-x="512" d=" M441.8133333333334 361.8133333333334C450.1333333333334 370.1333333333334 450.1333333333334 384 441.8133333333334 391.8933333333333L391.8933333333333 441.8133333333334C384 450.1333333333334 370.1333333333334 450.1333333333334 361.8133333333334 441.8133333333334L320 400L400 320M378.6666666666667 298.6666666666667L298.6666666666667 378.6666666666667L85.3333333333333 165.3333333333334V85.3333333333334H165.3333333333333L378.6666666666667 298.6666666666667z" /> + <glyph glyph-name="border-horizontal" + unicode="&#xF0CA;" + horiz-adv-x="512" d=" M405.3333333333333 0H448V42.6666666666667H405.3333333333333M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M64 170.6666666666667H448V213.3333333333334H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M192 384H149.3333333333333V341.3333333333334H192M106.6666666666667 384H64V341.3333333333334H106.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 298.6666666666667H64V256H106.6666666666667M64 0H106.6666666666667V42.6666666666667H64V0z" /> + <glyph glyph-name="border-inside" + unicode="&#xF0CB;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M277.3333333333333 384H234.6666666666667V213.3333333333334H64V170.6666666666667H234.6666666666667V0H277.3333333333333V170.6666666666667H448V213.3333333333334H277.3333333333333M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M106.6666666666667 384H64V341.3333333333334H106.6666666666667M192 384H149.3333333333333V341.3333333333334H192M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 298.6666666666667H64V256H106.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 0H106.6666666666667V42.6666666666667H64V0z" /> + <glyph glyph-name="border-left" + unicode="&#xF0CC;" + horiz-adv-x="512" d=" M320 341.3333333333334H362.6666666666667V384H320M320 170.6666666666667H362.6666666666667V213.3333333333334H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 256H448V298.6666666666667H405.3333333333333M64 0H106.6666666666667V384H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667V0z" /> + <glyph glyph-name="border-none" + unicode="&#xF0CD;" + horiz-adv-x="512" d=" M320 341.3333333333334H362.6666666666667V384H320M320 170.6666666666667H362.6666666666667V213.3333333333334H320M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M405.3333333333333 341.3333333333334H448V384H405.3333333333333M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M64 341.3333333333334H106.6666666666667V384H64M64 256H106.6666666666667V298.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 85.3333333333334H106.6666666666667V128H64M64 0H106.6666666666667V42.6666666666667H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333V341.3333333333334z" /> + <glyph glyph-name="border-outside" + unicode="&#xF0CE;" + horiz-adv-x="512" d=" M192 213.3333333333334H149.3333333333333V170.6666666666667H192M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M64 0H448V384H64M362.6666666666667 213.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="border-right" + unicode="&#xF0CF;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M320 341.3333333333334H362.6666666666667V384H320M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 0H448V384H405.3333333333333M320 170.6666666666667H362.6666666666667V213.3333333333334H320M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 256H106.6666666666667V298.6666666666667H64M64 85.3333333333334H106.6666666666667V128H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M64 0H106.6666666666667V42.6666666666667H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M64 341.3333333333334H106.6666666666667V384H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0z" /> + <glyph glyph-name="border-style" + unicode="&#xF0D0;" + horiz-adv-x="512" d=" M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M64 384V0H106.6666666666667V341.3333333333334H448V384M405.3333333333333 256H448V298.6666666666667H405.3333333333333" /> + <glyph glyph-name="border-top" + unicode="&#xF0D1;" + horiz-adv-x="512" d=" M320 170.6666666666667H362.6666666666667V213.3333333333334H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 85.3333333333334H448V128H405.3333333333333M64 341.3333333333334H448V384H64M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 256H106.6666666666667V298.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 0H106.6666666666667V42.6666666666667H64M64 85.3333333333334H106.6666666666667V128H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0z" /> + <glyph glyph-name="border-vertical" + unicode="&#xF0D2;" + horiz-adv-x="512" d=" M320 170.6666666666667H362.6666666666667V213.3333333333334H320M320 0H362.6666666666667V42.6666666666667H320M320 341.3333333333334H362.6666666666667V384H320M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M234.6666666666667 0H277.3333333333333V384H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M64 85.3333333333334H106.6666666666667V128H64M64 0H106.6666666666667V42.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 341.3333333333334H106.6666666666667V384H64M64 256H106.6666666666667V298.6666666666667H64V256z" /> + <glyph glyph-name="bowl" + unicode="&#xF617;" + horiz-adv-x="512" d=" M469.3333333333333 128C469.3333333333333 45.44 402.56 -21.3333333333333 320 -21.3333333333333H192C109.44 -21.3333333333333 42.6666666666667 45.44 42.6666666666667 128V192H332.3733333333334L433.0666666666667 353.28L469.3333333333333 330.6666666666667L382.7200000000001 192H469.3333333333333V128z" /> + <glyph glyph-name="bowling" + unicode="&#xF0D3;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M266.6666666666667 213.3333333333334C248.96 213.3333333333334 234.6666666666667 199.04 234.6666666666667 181.3333333333334S248.96 149.3333333333334 266.6666666666667 149.3333333333334S298.6666666666667 163.6266666666667 298.6666666666667 181.3333333333334S284.3733333333334 213.3333333333334 266.6666666666667 213.3333333333334M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334M126.5066666666667 266.6666666666667C114.7733333333333 246.4000000000001 121.8133333333333 220.3733333333333 142.08 208.64C162.56 196.6933333333333 188.5866666666667 203.7333333333333 200.5333333333333 224C212.2666666666667 244.6933333333334 205.2266666666667 270.7200000000001 184.7466666666667 282.4533333333334C164.48 294.1866666666667 138.6666666666667 287.36 126.5066666666667 266.6666666666667z" /> + <glyph glyph-name="box" + unicode="&#xF0D4;" + horiz-adv-x="512" d=" M328.32 148.48C328.32 178.7733333333334 303.7866666666667 203.3066666666667 273.4933333333334 203.3066666666667C243.4133333333334 203.3066666666667 218.88 178.7733333333334 218.88 148.48C218.88 118.4 243.4133333333334 93.8666666666667 273.4933333333334 93.8666666666667C303.7866666666667 93.8666666666667 328.32 118.4000000000001 328.32 148.4800000000001M364.8 148.4800000000001C364.8 98.1333333333334 323.8400000000001 57.3866666666668 273.4933333333334 57.3866666666668C238.7200000000001 57.3866666666668 208.4266666666667 77.0133333333335 193.0666666666667 105.8133333333335C177.7066666666667 77.0133333333334 147.4133333333333 57.3866666666668 112.64 57.3866666666668C62.72 57.3866666666668 22.1866666666667 97.4933333333335 21.3333333333334 146.9866666666668V298.6666666666667C21.3333333333334 308.0533333333334 29.6533333333334 316.1600000000001 39.68 316.1600000000001S57.6 308.0533333333334 57.8133333333334 298.6666666666667V221.44C73.1733333333334 232.96 92.16 239.7866666666667 112.64 239.7866666666667C147.4133333333334 239.7866666666667 177.7066666666667 220.16 193.0666666666667 191.36C208.4266666666667 220.16 238.7200000000001 239.7866666666667 273.4933333333334 239.7866666666667C323.84 239.7866666666667 364.8 198.8266666666667 364.8 148.48M167.2533333333334 148.48C167.2533333333334 178.7733333333333 142.72 203.3066666666666 112.64 203.3066666666666C82.3466666666667 203.3066666666666 57.8133333333334 178.7733333333333 57.8133333333334 148.48C57.8133333333334 118.4 82.3466666666667 93.8666666666667 112.64 93.8666666666667C142.72 93.8666666666667 167.2533333333334 118.4 167.2533333333334 148.48M487.2533333333334 86.1866666666667C489.6 82.7733333333333 490.6666666666667 78.9333333333333 490.6666666666667 75.3066666666666C490.6666666666667 69.7599999999999 488.1066666666667 63.9999999999999 483.4133333333334 60.8C480.0000000000001 58.4533333333333 476.3733333333334 57.1733333333333 472.5333333333334 57.1733333333333C467.2 57.1733333333333 461.8666666666667 59.5199999999999 458.6666666666667 63.9999999999999L417.9200000000001 117.9733333333333L377.6 64C373.9733333333333 59.52 368.64 57.1733333333334 363.3066666666666 57.1733333333334C359.4666666666666 57.1733333333334 355.6266666666666 58.4533333333333 351.9999999999999 60.8000000000001C347.5199999999999 64 344.9599999999999 69.9733333333334 344.9599999999999 75.5200000000001C344.9599999999999 79.1466666666668 346.2399999999999 82.9866666666668 348.3733333333333 86.1866666666667L394.6666666666667 148.4800000000001L348.3733333333333 210.9866666666667C346.0266666666667 214.1866666666667 344.9599999999999 217.8133333333334 344.9599999999999 221.6533333333334C344.9599999999999 227.2000000000001 347.52 232.5333333333334 351.9999999999999 236.1600000000001C360.32 242.1333333333334 371.4133333333333 240.6400000000001 377.5999999999999 232.7466666666668L417.9199999999999 178.9866666666667L458.6666666666666 232.7466666666668C464.2133333333333 240.6400000000001 475.5199999999999 242.1333333333334 483.4133333333332 236.1600000000001C488.3199999999999 232.5333333333334 490.6666666666666 226.9866666666668 490.6666666666666 221.2266666666668C490.6666666666666 217.6000000000001 489.5999999999999 213.9733333333334 487.2533333333332 210.9866666666667L440.7466666666666 148.4800000000001L487.2533333333332 86.1866666666667z" /> + <glyph glyph-name="box-cutter" + unicode="&#xF0D5;" + horiz-adv-x="512" d=" M154.0266666666667 193.92C146.9866666666667 186.88 143.1466666666667 178.1333333333333 142.08 168.96L259.6266666666667 118.6133333333334L440.7466666666667 299.5200000000001C457.3866666666667 316.3733333333334 457.3866666666667 343.2533333333334 440.7466666666667 359.8933333333334L410.4533333333334 390.1866666666667C393.8133333333334 406.8266666666667 366.9333333333334 406.8266666666667 350.0800000000001 390.1866666666667L154.0266666666668 193.9200000000001M106.6666666666667 106.6666666666667V-16L230.6133333333333 95.36L123.9466666666666 138.0266666666667L106.6666666666667 106.6666666666667M365.2266666666667 344.9600000000001C373.3333333333333 353.28 387.2000000000001 353.28 395.52 344.9600000000001C403.84 336.4266666666667 403.84 322.9866666666667 395.52 314.6666666666667C387.2 306.3466666666667 373.3333333333333 306.3466666666667 365.2266666666666 314.6666666666667C356.9066666666666 322.9866666666667 356.9066666666666 336.4266666666667 365.2266666666666 344.9600000000001z" /> + <glyph glyph-name="box-shadow" + unicode="&#xF637;" + horiz-adv-x="512" d=" M64 384H384V64H64V384M405.3333333333333 42.6666666666667H448V0H405.3333333333333V42.6666666666667M405.3333333333333 106.6666666666667H448V64H405.3333333333333V106.6666666666667M405.3333333333333 170.6666666666667H448V128H405.3333333333333V170.6666666666667M405.3333333333333 234.6666666666667H448V192H405.3333333333333V234.6666666666667M405.3333333333333 298.6666666666667H448V256H405.3333333333333V298.6666666666667M341.3333333333333 42.6666666666667H384V0H341.3333333333333V42.6666666666667M277.3333333333333 42.6666666666667H320V0H277.3333333333333V42.6666666666667M213.3333333333333 42.6666666666667H256V0H213.3333333333333V42.6666666666667M149.3333333333333 42.6666666666667H192V0H149.3333333333333V42.6666666666667z" /> + <glyph glyph-name="bridge" + unicode="&#xF618;" + horiz-adv-x="512" d=" M149.3333333333333 149.3333333333334V215.2533333333333C133.9733333333333 222.2933333333334 119.68 230.8266666666667 106.6666666666667 240.8533333333333V149.3333333333334H149.3333333333333M106.6666666666667 64H64V106.6666666666667H21.3333333333333V149.3333333333334H64V298.6666666666667H106.6666666666667V268.1600000000001C145.0666666666667 234.6666666666667 197.76 213.3333333333334 256 213.3333333333334C314.24 213.3333333333334 366.9333333333333 234.6666666666667 405.3333333333333 268.1600000000001V298.6666666666667H448V149.3333333333334H490.6666666666666V106.6666666666667H448V64H405.3333333333333V106.6666666666667H106.6666666666667V64M362.6666666666667 215.2533333333333V149.3333333333334H405.3333333333333V240.8533333333333C392.32 230.8266666666667 378.0266666666667 222.2933333333334 362.6666666666667 215.2533333333333M341.3333333333333 149.3333333333334V206.5066666666667C327.68 201.6 313.3866666666667 197.9733333333333 298.6666666666667 195.4133333333334V149.3333333333334H341.3333333333333M277.3333333333333 149.3333333333334V192.8533333333333L256 192L234.6666666666667 192.8533333333333V149.3333333333334H277.3333333333333M213.3333333333333 149.3333333333334V195.4133333333334C198.6133333333334 197.9733333333333 184.32 201.6 170.6666666666667 206.5066666666667V149.3333333333334H213.3333333333333z" /> + <glyph glyph-name="briefcase" + unicode="&#xF0D6;" + horiz-adv-x="512" d=" M298.6666666666667 320H213.3333333333333V362.6666666666667H298.6666666666667M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-check" + unicode="&#xF0D7;" + horiz-adv-x="512" d=" M224 74.6666666666667L149.3333333333333 149.3333333333334L179.4133333333333 179.4133333333334L224 135.04L334.5066666666667 245.3333333333334L364.5866666666667 215.2533333333333M213.3333333333333 362.6666666666667H298.6666666666667V320H213.3333333333333M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-download" + unicode="&#xF0D8;" + horiz-adv-x="512" d=" M256 42.6666666666667L149.3333333333333 149.3333333333334H213.3333333333333V234.6666666666667H298.6666666666667V149.3333333333334H362.6666666666667M213.3333333333333 362.6666666666667H298.6666666666667V320H213.3333333333333M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-upload" + unicode="&#xF0D9;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.6533333333333 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V277.3333333333334C42.6666666666667 301.0133333333333 61.6533333333333 320 85.3333333333333 320H170.6666666666667V362.6666666666667L213.3333333333333 405.3333333333333H298.6666666666667L341.3333333333333 362.6666666666667V320H426.6666666666667M213.3333333333333 362.6666666666667V320H298.6666666666667V362.6666666666667H213.3333333333333M256 256L149.3333333333333 149.3333333333334H213.3333333333333V64H298.6666666666667V149.3333333333334H362.6666666666667L256 256z" /> + <glyph glyph-name="brightness-1" + unicode="&#xF0DA;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="brightness-2" + unicode="&#xF0DB;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C174.5066666666667 405.3333333333333 138.0266666666667 394.6666666666667 106.6666666666667 376.5333333333333C170.6666666666667 339.6266666666667 213.3333333333333 270.9333333333334 213.3333333333333 192S170.6666666666667 44.3733333333333 106.6666666666667 7.4666666666667C138.0266666666667 -10.6666666666666 174.5066666666667 -21.3333333333333 213.3333333333333 -21.3333333333333C331.0933333333333 -21.3333333333333 426.6666666666667 74.24 426.6666666666667 192S331.0933333333333 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="brightness-3" + unicode="&#xF0DC;" + horiz-adv-x="512" d=" M192 405.3333333333333C169.6 405.3333333333333 148.2666666666667 401.92 128 395.52C214.6133333333333 368.4266666666667 277.3333333333333 288 277.3333333333333 192C277.3333333333333 96 214.6133333333334 15.5733333333334 128 -11.52C148.2666666666667 -17.92 169.6 -21.3333333333333 192 -21.3333333333333C309.76 -21.3333333333333 405.3333333333333 74.24 405.3333333333333 192S309.76 405.3333333333333 192 405.3333333333333z" /> + <glyph glyph-name="brightness-4" + unicode="&#xF0DD;" + horiz-adv-x="512" d=" M256 64C237.0133333333333 64 218.88 68.2666666666667 202.6666666666667 75.7333333333334C246.6133333333334 96 277.3333333333333 140.3733333333333 277.3333333333333 192C277.3333333333333 243.6266666666667 246.6133333333334 288 202.6666666666667 308.2666666666667C218.88 315.7333333333334 237.0133333333333 320 256 320C326.6133333333334 320 384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334z" /> + <glyph glyph-name="brightness-5" + unicode="&#xF0DE;" + horiz-adv-x="512" d=" M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 121.3866666666667L497.28 192L426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667z" /> + <glyph glyph-name="brightness-6" + unicode="&#xF0DF;" + horiz-adv-x="512" d=" M256 64V320C326.6133333333334 320 384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 121.3866666666667L497.28 192L426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667z" /> + <glyph glyph-name="brightness-7" + unicode="&#xF0E0;" + horiz-adv-x="512" d=" M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192S208.8533333333333 106.6666666666667 256 106.6666666666667S341.3333333333333 144.8533333333334 341.3333333333333 192S303.1466666666667 277.3333333333334 256 277.3333333333334M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334z" /> + <glyph glyph-name="brightness-auto" + unicode="&#xF0E1;" + horiz-adv-x="512" d=" M305.0666666666667 106.6666666666667L290.1333333333334 149.3333333333334H221.8666666666667L206.9333333333334 106.6666666666667H166.4L234.6666666666667 298.6666666666667H277.3333333333333L345.6 106.6666666666667H305.0666666666666M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334M231.4666666666667 178.1333333333334H280.5333333333333L256 256L231.4666666666667 178.1333333333333z" /> + <glyph glyph-name="broom" + unicode="&#xF0E2;" + horiz-adv-x="512" d=" M413.0133333333333 389.9733333333334L443.3066666666667 359.68L321.2800000000001 237.8666666666667C344.1066666666667 205.0133333333333 347.3066666666667 165.5466666666666 328.1066666666667 139.9466666666667L193.28 274.7733333333334C218.88 293.9733333333334 258.3466666666667 290.7733333333334 291.2 267.9466666666667L413.0133333333333 389.9733333333334M126.5066666666667 73.1733333333334C83.6266666666667 116.0533333333334 57.3866666666667 167.2533333333333 50.1333333333333 215.04L154.24 259.6266666666667L312.96 100.9066666666667L268.3733333333334 -3.1999999999999C220.5866666666667 4.0533333333334 169.3866666666667 30.2933333333334 126.5066666666667 73.1733333333334z" /> + <glyph glyph-name="brush" + unicode="&#xF0E3;" + horiz-adv-x="512" d=" M441.8133333333334 349.2266666666667L413.2266666666667 377.8133333333334C405.3333333333333 386.1333333333334 391.4666666666667 386.1333333333334 383.1466666666667 377.8133333333334L192 186.6666666666667L250.6666666666667 128L441.8133333333334 319.1466666666667C450.1333333333334 327.4666666666667 450.1333333333334 341.3333333333334 441.8133333333334 349.2266666666667M149.3333333333333 149.3333333333334C113.92 149.3333333333334 85.3333333333333 120.7466666666667 85.3333333333333 85.3333333333334C85.3333333333333 57.3866666666667 60.5866666666667 42.6666666666667 42.6666666666667 42.6666666666667C62.2933333333333 16.64 96 0 128 0C175.1466666666667 0 213.3333333333333 38.1866666666667 213.3333333333333 85.3333333333334C213.3333333333333 120.7466666666667 184.7466666666667 149.3333333333334 149.3333333333333 149.3333333333334z" /> + <glyph glyph-name="buffer" + unicode="&#xF619;" + horiz-adv-x="512" d=" M268.8 386.9866666666667C325.76 360.5333333333334 384 333.0133333333333 440.7466666666667 306.56C443.9466666666666 305.0666666666667 448 304 448 299.7333333333334S443.9466666666666 294.6133333333334 440.7466666666667 293.12C384 266.6666666666667 326.4 239.5733333333334 269.2266666666667 213.3333333333334C260.48 208.8533333333333 251.52 208.8533333333333 242.7733333333333 213.3333333333334C185.3866666666667 239.7866666666667 128 266.6666666666667 70.8266666666667 293.3333333333334C67.84 294.6133333333334 64 295.68 64 299.9466666666667C64 303.7866666666667 67.84 304.8533333333334 70.6133333333333 306.1333333333334C128 333.0133333333333 186.4533333333333 360.5333333333334 244.0533333333333 387.2C250.24 389.9733333333334 262.4 389.76 268.8 386.9866666666667M256 -3.1999999999999C251.7333333333334 -3.1999999999999 248.7466666666667 -1.4933333333333 242.7733333333334 0.64C185.3866666666667 27.0933333333334 128 53.9733333333334 71.04 80.64C68.0533333333333 82.1333333333334 64 82.9866666666667 64 87.4666666666667C64 91.7333333333334 68.0533333333333 92.5866666666667 71.2533333333333 94.08C80.64 98.5600000000001 90.24 103.0400000000001 99.6266666666667 107.52C109.2266666666667 111.7866666666667 118.6133333333333 111.7866666666667 128 107.3066666666667C166.1866666666667 89.6000000000001 204.16 71.8933333333334 242.1333333333334 54.1866666666667C251.52 49.7066666666667 260.9066666666667 49.92 270.2933333333333 54.1866666666667C308.2666666666667 72.1066666666667 346.24 89.8133333333334 384 107.52C393.3866666666667 111.7866666666666 402.56 112 411.52 107.7333333333334C421.76 103.2533333333333 431.7866666666667 98.3466666666667 441.8133333333334 93.6533333333334C443.3066666666667 93.0133333333333 444.8 92.16 446.08 91.0933333333334C448.8533333333333 88.96 448.8533333333333 85.3333333333334 446.08 83.6266666666667C444.3733333333334 82.3466666666667 442.4533333333333 81.28 440.5333333333333 80.4266666666667C384 53.3333333333334 327.04 27.3066666666667 270.08 1.0666666666667C265.8133333333333 -1.0666666666667 260.0533333333333 -3.1999999999999 256 -3.1999999999999M256 103.0400000000001C253.8666666666666 103.0400000000001 246.4 105.1733333333334 242.3466666666666 106.6666666666667C185.1733333333333 133.5466666666668 128 160.0000000000001 71.2533333333333 186.8800000000001C68.2666666666666 188.1600000000001 64 189.2266666666667 64 193.4933333333334C64 197.9733333333334 68.2666666666666 198.8266666666667 71.4666666666666 200.3200000000001C81.0666666666666 205.0133333333334 90.6666666666666 209.4933333333334 100.2666666666666 213.9733333333334C109.44 218.0266666666667 118.6133333333333 218.0266666666667 128 213.3333333333334C165.9733333333333 195.8400000000001 204.3733333333333 177.9200000000001 242.7733333333333 160.0000000000001C251.52 155.9466666666668 260.48 155.9466666666668 269.44 160.0000000000001C307.84 178.1333333333335 346.24 196.0533333333334 384.8533333333333 213.9733333333334C393.6 218.0266666666667 402.56 218.0266666666667 411.52 213.9733333333334C421.5466666666666 209.2800000000001 431.7866666666667 204.5866666666668 441.8133333333334 199.8933333333334C443.0933333333333 199.2533333333334 444.5866666666667 198.6133333333334 445.8666666666667 197.5466666666668C448.8533333333334 195.2000000000001 448.8533333333334 192.0000000000001 445.6533333333333 189.4400000000001C444.5866666666667 188.5866666666668 443.0933333333333 187.9466666666667 441.8133333333334 187.3066666666667C384 160.0000000000001 326.6133333333334 133.3333333333334 269.0133333333333 106.6666666666667C264.9600000000001 104.7466666666668 257.7066666666667 103.0400000000001 256 103.0400000000001z" /> + <glyph glyph-name="bug" + unicode="&#xF0E4;" + horiz-adv-x="512" d=" M298.6666666666667 192H213.3333333333333V234.6666666666667H298.6666666666667M298.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H298.6666666666667M426.6666666666667 277.3333333333334H366.7200000000001C357.12 293.9733333333334 343.8933333333333 308.2666666666667 327.8933333333333 319.1466666666667L362.6666666666667 353.92L332.5866666666667 384L286.2933333333333 337.7066666666667C276.48 340.0533333333334 266.6666666666667 341.3333333333334 256 341.3333333333334C245.3333333333333 341.3333333333334 235.52 340.0533333333334 225.92 337.7066666666667L179.4133333333333 384L149.3333333333333 353.92L183.8933333333334 319.1466666666667C168.1066666666667 308.2666666666667 154.88 293.9733333333334 145.28 277.3333333333334H85.3333333333333V234.6666666666667H129.92C128.8533333333333 227.6266666666667 128 220.5866666666667 128 213.3333333333334V192H85.3333333333333V149.3333333333334H128V128C128 120.7466666666667 128.8533333333333 113.7066666666667 129.92 106.6666666666667H85.3333333333333V64H145.28C167.4666666666667 25.8133333333334 208.64 0 256 0S344.5333333333333 25.8133333333334 366.7200000000001 64H426.6666666666667V106.6666666666667H382.08C383.1466666666667 113.7066666666667 384 120.7466666666667 384 128V149.3333333333334H426.6666666666667V192H384V213.3333333333334C384 220.5866666666667 383.1466666666667 227.6266666666667 382.08 234.6666666666667H426.6666666666667V277.3333333333334z" /> + <glyph glyph-name="bulletin-board" + unicode="&#xF0E5;" + horiz-adv-x="512" d=" M256.8533333333333 394.6666666666667L203.3066666666667 341.3333333333334H309.9733333333333L256.8533333333333 394.6666666666667M85.3333333333333 298.6666666666667V21.3333333333334H426.6666666666667V298.6666666666667H85.3333333333333M256 448L362.6666666666667 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667C42.6666666666667 322.1333333333334 61.8666666666667 341.3333333333334 85.3333333333333 341.3333333333334H149.3333333333333L256 448M149.3333333333333 64V149.3333333333334H256V64H149.3333333333333M298.6666666666667 85.3333333333334V234.6666666666667H384V85.3333333333334H298.6666666666667M128 192V256H234.6666666666667V192H128z" /> + <glyph glyph-name="bullhorn" + unicode="&#xF0E6;" + horiz-adv-x="512" d=" M341.3333333333333 192V106.6666666666667C341.3333333333333 94.9333333333333 331.7333333333334 85.3333333333334 320 85.3333333333334C316.3733333333334 85.3333333333334 312.96 85.3333333333334 299.9466666666667 96C286.7200000000001 106.6666666666667 264.32 128 241.28 138.6666666666667C219.9466666666667 148.48 197.9733333333334 149.3333333333334 176.2133333333334 149.3333333333334L202.0266666666667 78.5066666666667L202.6666666666667 74.6666666666667C202.6666666666667 68.6933333333333 197.9733333333334 64 192 64H149.3333333333333C144.64 64 140.5866666666667 66.9866666666667 139.3066666666667 71.2533333333333L110.72 149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667C61.8666666666667 170.6666666666667 42.6666666666667 189.8666666666667 42.6666666666667 213.3333333333334S61.8666666666667 256 85.3333333333333 256C85.3333333333333 267.7333333333334 94.9333333333333 277.3333333333334 106.6666666666667 277.3333333333334H170.6666666666667C194.3466666666666 277.3333333333334 218.0266666666667 277.3333333333334 241.28 288C264.32 298.6666666666667 286.7200000000001 320 299.9466666666667 330.6666666666667C312.96 341.3333333333334 316.3733333333334 341.3333333333334 320 341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V234.6666666666667C353.0666666666667 234.6666666666667 362.6666666666667 225.0666666666667 362.6666666666667 213.3333333333334S353.0666666666667 192 341.3333333333333 192M448 213.3333333333334C448 183.8933333333334 436.0533333333334 157.2266666666667 416.8533333333333 137.8133333333334L386.56 168.1066666666667C398.08 179.6266666666667 405.3333333333333 195.6266666666667 405.3333333333333 213.3333333333334C405.3333333333333 231.04 398.08 247.04 386.56 258.5600000000001L416.8533333333333 288.8533333333334C436.0533333333334 269.4400000000001 448 242.7733333333334 448 213.3333333333334z" /> + <glyph glyph-name="bullseye" + unicode="&#xF5DD;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.2933333333334 362.6666666666667 426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667M256 320C185.3866666666667 320 128 262.6133333333334 128 192S185.3866666666667 64 256 64S384 121.3866666666667 384 192S326.6133333333334 320 256 320M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="burst-mode" + unicode="&#xF5DE;" + horiz-adv-x="512" d=" M21.3333333333333 341.3333333333334H64V42.6666666666667H21.3333333333333V341.3333333333334M106.6666666666667 341.3333333333334H149.3333333333333V42.6666666666667H106.6666666666667V341.3333333333334M469.3333333333333 341.3333333333334H213.3333333333333C201.6 341.3333333333334 192 331.7333333333334 192 320V64C192 52.2666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H469.3333333333333C481.0666666666667 42.6666666666667 490.6666666666666 52.2666666666667 490.6666666666666 64V320C490.6666666666666 331.7333333333334 481.0666666666667 341.3333333333334 469.3333333333333 341.3333333333334M234.6666666666667 85.3333333333334L288 152.5333333333334L326.1866666666666 106.6666666666667L379.52 175.36L448 85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="bus" + unicode="&#xF0E7;" + horiz-adv-x="512" d=" M384 213.3333333333334H128V320H384M352 85.3333333333334C334.2933333333333 85.3333333333334 320 99.6266666666667 320 117.3333333333334S334.2933333333333 149.3333333333334 352 149.3333333333334S384 135.04 384 117.3333333333334S369.7066666666666 85.3333333333334 352 85.3333333333334M160 85.3333333333334C142.2933333333333 85.3333333333334 128 99.6266666666667 128 117.3333333333334S142.2933333333333 149.3333333333334 160 149.3333333333334S192 135.04 192 117.3333333333334S177.7066666666667 85.3333333333334 160 85.3333333333334M85.3333333333333 106.6666666666667C85.3333333333333 87.8933333333334 93.6533333333333 71.04 106.6666666666667 59.3066666666667V21.3333333333334C106.6666666666667 9.6 116.2666666666667 0 128 0H149.3333333333333C161.0666666666667 0 170.6666666666667 9.6 170.6666666666667 21.3333333333334V42.6666666666667H341.3333333333333V21.3333333333334C341.3333333333333 9.6 350.9333333333333 0 362.6666666666667 0H384C395.7333333333334 0 405.3333333333333 9.6 405.3333333333333 21.3333333333334V59.3066666666667C418.3466666666667 71.0400000000001 426.6666666666667 87.8933333333334 426.6666666666667 106.6666666666667V320C426.6666666666667 394.6666666666667 350.2933333333334 405.3333333333333 256 405.3333333333333S85.3333333333333 394.6666666666667 85.3333333333333 320V106.6666666666667z" /> + <glyph glyph-name="cached" + unicode="&#xF0E8;" + horiz-adv-x="512" d=" M405.3333333333333 277.3333333333334L320 192H384C384 121.3866666666667 326.6133333333334 64 256 64C234.6666666666667 64 213.9733333333333 69.3333333333334 196.2666666666667 78.9333333333333L165.12 47.7866666666666C191.36 31.1466666666667 222.5066666666667 21.3333333333334 256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192H490.6666666666666M128 192C128 262.6133333333334 185.3866666666667 320 256 320C277.3333333333333 320 298.0266666666667 314.6666666666667 315.7333333333334 305.0666666666667L346.88 336.2133333333334C320.64 352.8533333333334 289.4933333333334 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192H21.3333333333333L106.6666666666667 106.6666666666667L192 192" /> + <glyph glyph-name="cake" + unicode="&#xF0E9;" + horiz-adv-x="512" d=" M245.3333333333333 437.3333333333333C256 432 277.3333333333333 396.8 277.3333333333333 373.3333333333334S263.04 341.3333333333334 245.3333333333333 341.3333333333334S213.3333333333333 344.5333333333334 213.3333333333333 368S234.6666666666667 405.3333333333333 245.3333333333333 437.3333333333333M394.6666666666667 256C448 256 490.6666666666666 213.3333333333334 490.6666666666666 160C490.6666666666666 126.72 473.8133333333333 97.4933333333333 448 80.2133333333333V-42.6666666666666H64V80.2133333333333C38.1866666666667 97.4933333333333 21.3333333333333 126.72 21.3333333333333 160C21.3333333333333 213.3333333333334 64 256 117.3333333333333 256H213.3333333333333V320H277.3333333333333V256H394.6666666666667M256 106.6666666666667C285.44 106.6666666666667 309.3333333333333 130.5600000000001 309.3333333333333 160H341.3333333333333C341.3333333333333 130.5600000000001 365.2266666666667 106.6666666666667 394.6666666666667 106.6666666666667S448 130.5600000000001 448 160S424.1066666666667 213.3333333333334 394.6666666666667 213.3333333333334H117.3333333333333C87.8933333333333 213.3333333333334 64 189.4400000000001 64 160S87.8933333333333 106.6666666666667 117.3333333333333 106.6666666666667S170.6666666666667 130.56 170.6666666666667 160H202.6666666666667C202.6666666666667 130.5600000000001 226.56 106.6666666666667 256 106.6666666666667z" /> + <glyph glyph-name="cake-layered" + unicode="&#xF0EA;" + horiz-adv-x="512" d=" M448 0V85.3333333333334C448 109.0133333333333 428.8 128 405.3333333333333 128H384V192C384 215.68 364.8 234.6666666666667 341.3333333333333 234.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667V234.6666666666667H170.6666666666667C146.9866666666667 234.6666666666667 128 215.68 128 192V128H106.6666666666667C82.9866666666667 128 64 109.0133333333333 64 85.3333333333334V0H21.3333333333333V-42.6666666666666H490.6666666666666V0M256 298.6666666666667C279.4666666666667 298.6666666666667 298.6666666666667 317.8666666666667 298.6666666666667 341.3333333333334C298.6666666666667 349.44 296.5333333333333 356.9066666666667 292.48 363.3066666666667L256 426.6666666666667L219.3066666666667 363.3066666666667C215.4666666666667 356.9066666666667 213.3333333333333 349.44 213.3333333333333 341.3333333333334C213.3333333333333 317.8666666666667 232.5333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="cake-variant" + unicode="&#xF0EB;" + horiz-adv-x="512" d=" M256 320C279.68 320 298.6666666666667 339.2000000000001 298.6666666666667 362.6666666666667C298.6666666666667 370.7733333333333 296.5333333333333 378.24 292.48 384.64L256 448L219.52 384.64C215.4666666666667 378.24 213.3333333333333 370.7733333333333 213.3333333333333 362.6666666666667C213.3333333333333 339.2000000000001 232.5333333333334 320 256 320M354.1333333333334 106.6666666666667L331.3066666666667 129.7066666666667L308.2666666666667 106.6666666666667C280.5333333333333 79.1466666666667 231.8933333333333 78.9333333333333 203.9466666666666 106.6666666666667L181.3333333333333 129.7066666666667L157.8666666666667 106.6666666666667C144 93.0133333333333 125.44 85.3333333333334 105.8133333333334 85.3333333333334C90.24 85.3333333333334 75.9466666666667 90.24 64 98.3466666666667V0C64 -11.7333333333333 73.6 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C438.4 -21.3333333333333 448 -11.7333333333333 448 0V98.3466666666667C436.0533333333334 90.24 421.76 85.3333333333334 406.1866666666666 85.3333333333334C386.56 85.3333333333334 368 93.0133333333333 354.1333333333333 106.6666666666667M384 256H277.3333333333333V298.6666666666667H234.6666666666667V256H128C92.5866666666667 256 64 227.4133333333334 64 192V159.1466666666667C64 136.1066666666667 82.7733333333333 117.3333333333334 105.8133333333333 117.3333333333334C117.3333333333333 117.3333333333334 128 121.6 135.2533333333333 129.4933333333334L181.3333333333333 174.9333333333333L226.3466666666667 129.4933333333334C242.1333333333334 113.7066666666667 269.6533333333333 113.7066666666667 285.44 129.4933333333334L330.6666666666667 174.9333333333333L376.5333333333333 129.4933333333334C384 121.6 394.6666666666667 117.3333333333334 405.9733333333333 117.3333333333334C429.0133333333333 117.3333333333334 447.9999999999999 136.1066666666667 447.9999999999999 159.1466666666667V192C447.9999999999999 227.4133333333334 419.4133333333333 256 383.9999999999999 256z" /> + <glyph glyph-name="calculator" + unicode="&#xF0EC;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.8666666666667 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667V277.3333333333334H362.6666666666667V362.6666666666667H149.3333333333333M149.3333333333333 234.6666666666667V192H192V234.6666666666667H149.3333333333333M234.6666666666667 234.6666666666667V192H277.3333333333333V234.6666666666667H234.6666666666667M320 234.6666666666667V192H362.6666666666667V234.6666666666667H320M149.3333333333333 149.3333333333334V106.6666666666667H192V149.3333333333334H149.3333333333333M234.6666666666667 149.3333333333334V106.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M320 149.3333333333334V106.6666666666667H362.6666666666667V149.3333333333334H320M149.3333333333333 64V21.3333333333334H192V64H149.3333333333333M234.6666666666667 64V21.3333333333334H277.3333333333333V64H234.6666666666667M320 64V21.3333333333334H362.6666666666667V64H320z" /> + <glyph glyph-name="calendar" + unicode="&#xF0ED;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M341.3333333333333 426.6666666666667V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H384V426.6666666666667M362.6666666666667 192H256V85.3333333333334H362.6666666666667V192z" /> + <glyph glyph-name="calendar-blank" + unicode="&#xF0EE;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M341.3333333333333 426.6666666666667V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H384V426.6666666666667" /> + <glyph glyph-name="calendar-check" + unicode="&#xF0EF;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M352.64 212.0533333333334L330.0266666666667 234.6666666666667L225.92 130.5600000000001L180.6933333333333 175.7866666666668L158.08 153.1733333333334L225.92 85.3333333333334L352.64 212.0533333333334z" /> + <glyph glyph-name="calendar-clock" + unicode="&#xF0F0;" + horiz-adv-x="512" d=" M320 170.6666666666667H352V110.5066666666667L404.0533333333334 80.4266666666667L388.0533333333334 52.6933333333333L320 91.9466666666667V170.6666666666667M405.3333333333333 277.3333333333334H106.6666666666667V42.6666666666667H206.2933333333333C197.12 62.08 192 83.84 192 106.6666666666667C192 189.2266666666667 258.7733333333333 256 341.3333333333333 256C364.16 256 385.92 250.88 405.3333333333333 241.7066666666667V277.3333333333334M106.6666666666667 0C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H128V426.6666666666667H170.6666666666667V384H341.3333333333333V426.6666666666667H384V384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V211.2C474.4533333333333 184.3200000000001 490.6666666666666 147.4133333333334 490.6666666666666 106.6666666666667C490.6666666666666 24.1066666666667 423.8933333333333 -42.6666666666666 341.3333333333333 -42.6666666666666C300.5866666666667 -42.6666666666666 263.68 -26.4533333333333 236.8 0H106.6666666666667M341.3333333333333 210.1333333333333C284.16 210.1333333333333 237.8666666666667 163.84 237.8666666666667 106.6666666666667C237.8666666666667 49.4933333333333 284.16 3.2 341.3333333333333 3.2C398.5066666666667 3.2 444.8 49.4933333333333 444.8 106.6666666666667C444.8 163.84 398.5066666666667 210.1333333333333 341.3333333333333 210.1333333333333z" /> + <glyph glyph-name="calendar-multiple" + unicode="&#xF0F1;" + horiz-adv-x="512" d=" M448 85.3333333333334V277.3333333333334H149.3333333333333V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H170.6666666666667V426.6666666666667H213.3333333333333V384H384V426.6666666666667H426.6666666666667V384H448M64 0H362.6666666666667V-42.6666666666666H64C40.32 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V256H64V0M405.3333333333333 128H320V213.3333333333334H405.3333333333333V128z" /> + <glyph glyph-name="calendar-multiple-check" + unicode="&#xF0F2;" + horiz-adv-x="512" d=" M448 85.3333333333334V277.3333333333334H149.3333333333333V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H170.6666666666667V426.6666666666667H213.3333333333333V384H384V426.6666666666667H426.6666666666667V384H448M373.9733333333334 212.0533333333334L279.2533333333334 117.3333333333334L222.08 174.5066666666667L244.6933333333334 197.12L279.2533333333334 162.5600000000001L351.36 234.6666666666667L373.9733333333333 212.0533333333334M64 0H362.6666666666667V-42.6666666666666H64C40.32 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V256H64V0z" /> + <glyph glyph-name="calendar-plus" + unicode="&#xF0F3;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V298.6666666666667H106.6666666666667V42.6666666666667H405.3333333333333M341.3333333333333 426.6666666666667H384V384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H128V426.6666666666667H170.6666666666667V384H341.3333333333333V426.6666666666667M234.6666666666667 256H277.3333333333333V192H341.3333333333333V149.3333333333334H277.3333333333333V85.3333333333334H234.6666666666667V149.3333333333334H170.6666666666667V192H234.6666666666667V256z" /> + <glyph glyph-name="calendar-remove" + unicode="&#xF0F4;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M198.6133333333334 85.3333333333334L250.6666666666667 137.3866666666667L302.72 85.3333333333334L325.3333333333333 107.9466666666667L273.28 160L325.3333333333333 212.0533333333334L302.72 234.6666666666667L250.6666666666667 182.6133333333334L198.6133333333334 234.6666666666667L176 212.0533333333334L228.0533333333333 160L176 107.9466666666667L198.6133333333334 85.3333333333334z" /> + <glyph glyph-name="calendar-text" + unicode="&#xF0F5;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H149.3333333333333V106.6666666666667H298.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M362.6666666666667 234.6666666666667H149.3333333333333V192H362.6666666666667V234.6666666666667z" /> + <glyph glyph-name="calendar-today" + unicode="&#xF0F6;" + horiz-adv-x="512" d=" M149.3333333333333 234.6666666666667H256V128H149.3333333333333M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="call-made" + unicode="&#xF0F7;" + horiz-adv-x="512" d=" M192 341.3333333333334V298.6666666666667H332.5866666666667L85.3333333333333 51.4133333333334L115.4133333333333 21.3333333333334L362.6666666666667 268.5866666666667V128H405.3333333333333V341.3333333333334" /> + <glyph glyph-name="call-merge" + unicode="&#xF0F8;" + horiz-adv-x="512" d=" M362.6666666666667 12.5866666666667L392.7466666666667 42.6666666666667L320 115.4133333333334L289.92 85.3333333333334M160 277.3333333333334H234.6666666666667V158.0800000000001L119.2533333333333 42.6666666666667L149.3333333333333 12.5866666666667L277.3333333333333 140.5866666666667V277.3333333333334H352L256 373.3333333333334" /> + <glyph glyph-name="call-missed" + unicode="&#xF0F9;" + horiz-adv-x="512" d=" M417.92 298.6666666666667L256 136.7466666666667L136.7466666666667 256H234.6666666666667V298.6666666666667H64V128H106.6666666666667V225.92L256 76.5866666666667L448 268.5866666666667" /> + <glyph glyph-name="call-received" + unicode="&#xF0FA;" + horiz-adv-x="512" d=" M426.6666666666667 332.5866666666667L396.5866666666667 362.6666666666667L149.3333333333333 115.4133333333334V256H106.6666666666667V42.6666666666667H320V85.3333333333334H179.4133333333333" /> + <glyph glyph-name="call-split" + unicode="&#xF0FB;" + horiz-adv-x="512" d=" M298.6666666666667 362.6666666666667L347.52 313.8133333333334L286.08 252.3733333333334L316.3733333333334 222.08L377.8133333333334 283.52L426.6666666666667 234.6666666666667V362.6666666666667M213.3333333333333 362.6666666666667H85.3333333333333V234.6666666666667L134.1866666666667 283.52L234.6666666666667 183.2533333333333V21.3333333333334H277.3333333333333V200.7466666666667L164.48 313.8133333333334" /> + <glyph glyph-name="camcorder" + unicode="&#xF0FC;" + horiz-adv-x="512" d=" M362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C353.0666666666667 64 362.6666666666667 73.6 362.6666666666667 85.3333333333334V160L448 74.6666666666667V309.3333333333334L362.6666666666667 224z" /> + <glyph glyph-name="camcorder-box" + unicode="&#xF0FD;" + horiz-adv-x="512" d=" M384 106.6666666666667L298.6666666666667 174.9333333333333V106.6666666666667H128V277.3333333333334H298.6666666666667V209.0666666666667L384 277.3333333333334M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camcorder-box-off" + unicode="&#xF0FE;" + horiz-adv-x="512" d=" M128 277.3333333333334H143.5733333333333L298.6666666666667 122.24V106.6666666666667H128M48.4266666666667 426.6666666666667L21.3333333333333 399.5733333333333L64 356.6933333333334C51.4133333333333 349.4400000000001 42.6666666666667 335.7866666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H399.5733333333333L442.24 -21.3333333333333L469.3333333333333 5.76M426.6666666666667 362.6666666666667H166.8266666666667L252.16 277.3333333333334H298.6666666666667V230.8266666666667L310.8266666666667 218.6666666666667L384 277.3333333333334V145.4933333333334L469.3333333333333 60.3733333333333V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camcorder-off" + unicode="&#xF0FF;" + horiz-adv-x="512" d=" M69.76 405.3333333333333L42.6666666666667 378.24L100.9066666666667 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C345.6 64 349.6533333333333 65.7066666666667 352.8533333333333 67.84L420.9066666666667 0L448 27.0933333333334M448 309.3333333333334L362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H209.4933333333334L448 81.4933333333333V309.3333333333334z" /> + <glyph glyph-name="camera" + unicode="&#xF100;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H149.3333333333333L192 405.3333333333333H320L362.6666666666667 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667M256 256C291.4133333333333 256 320 227.4133333333334 320 192S291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256z" /> + <glyph glyph-name="camera-enhance" + unicode="&#xF101;" + horiz-adv-x="512" d=" M192 384L152.96 341.3333333333334H85.3333333333333C61.8666666666667 341.3333333333334 42.6666666666667 322.1333333333334 42.6666666666667 298.6666666666667V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V298.6666666666667C469.3333333333333 322.1333333333334 450.1333333333334 341.3333333333334 426.6666666666667 341.3333333333334H359.04L320 384M256 64C197.12 64 149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667S197.12 277.3333333333334 256 277.3333333333334S362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667S314.88 64 256 64M256 85.3333333333334L282.6666666666667 144L341.3333333333333 170.6666666666667L282.6666666666667 197.3333333333334L256 256L229.3333333333333 197.3333333333334L170.6666666666667 170.6666666666667L229.3333333333333 144" /> + <glyph glyph-name="camera-front" + unicode="&#xF102;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667V181.3333333333334C362.6666666666667 216.96 291.6266666666667 234.6666666666667 256 234.6666666666667S149.3333333333333 216.96 149.3333333333333 181.3333333333334M362.6666666666667 448H149.3333333333333C125.8666666666667 448 106.6666666666667 428.8 106.6666666666667 405.3333333333333V106.6666666666667C106.6666666666667 83.2 125.8666666666667 64 149.3333333333333 64H362.6666666666667C386.1333333333334 64 405.3333333333333 83.2 405.3333333333333 106.6666666666667V405.3333333333333C405.3333333333333 428.8 386.1333333333334 448 362.6666666666667 448M256 277.3333333333334C279.4666666666667 277.3333333333334 298.6666666666667 296.5333333333334 298.6666666666667 320S279.4666666666667 362.6666666666667 256 362.6666666666667S213.3333333333333 343.4666666666667 213.3333333333333 320S232.5333333333334 277.3333333333334 256 277.3333333333334M298.6666666666667 21.3333333333334V-21.3333333333333H405.3333333333333V21.3333333333334M213.3333333333333 21.3333333333334H106.6666666666667V-21.3333333333333H213.3333333333333V-64L277.3333333333333 0L213.3333333333333 64V21.3333333333334z" /> + <glyph glyph-name="camera-front-variant" + unicode="&#xF103;" + horiz-adv-x="512" d=" M128 448H384C407.4666666666667 448 426.6666666666667 428.8 426.6666666666667 405.3333333333333V-21.3333333333333C426.6666666666667 -44.8 407.4666666666667 -64 384 -64H128C104.5333333333333 -64 85.3333333333333 -44.8 85.3333333333333 -21.3333333333333V405.3333333333333C85.3333333333333 428.8 104.5333333333333 448 128 448M256 320C291.4133333333333 320 320 291.4133333333334 320 256S291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320M234.6666666666667 426.6666666666667V384H277.3333333333333V426.6666666666667H234.6666666666667M128 362.6666666666667V96C128 125.44 185.3866666666667 149.3333333333334 256 149.3333333333334S384 125.44 384 96V362.6666666666667H128M277.3333333333333 64H192V21.3333333333334H277.3333333333333V-21.3333333333333L341.3333333333333 42.6666666666667L277.3333333333333 106.6666666666667V64z" /> + <glyph glyph-name="camera-iris" + unicode="&#xF104;" + horiz-adv-x="512" d=" M292.9066666666667 128L209.7066666666667 -16.2133333333333C224.64 -19.4133333333332 240 -21.3333333333333 256 -21.3333333333333C307.2 -21.3333333333333 354.1333333333334 -3.1999999999999 390.8266666666667 26.6666666666667L312.7466666666667 162.1333333333335M52.48 128C72.1066666666667 65.7066666666667 119.68 15.7866666666667 180.2666666666667 -7.2533333333333L258.56 128M182.1866666666667 192L98.9866666666666 336C64 298.6666666666667 42.6666666666667 247.68 42.6666666666667 192C42.6666666666667 177.4933333333334 44.16 163.2000000000001 46.9333333333333 149.3333333333334H206.72M465.0666666666667 234.6666666666667H305.28L311.4666666666667 224L413.0133333333333 48C448 85.9733333333334 469.3333333333333 136.5333333333334 469.3333333333333 192C469.3333333333333 206.72 467.84 221.0133333333333 465.0666666666667 234.6666666666667M459.52 256C439.8933333333333 318.5066666666667 392.32 368.2133333333334 331.7333333333333 391.2533333333334L253.44 256M200.5333333333333 224L302.2933333333333 400.2133333333333C287.36 403.4133333333334 272 405.3333333333333 256 405.3333333333333C204.8 405.3333333333333 157.8666666666667 387.4133333333334 121.1733333333333 357.3333333333334L199.2533333333333 221.8666666666667L200.5333333333333 224z" /> + <glyph glyph-name="camera-off" + unicode="&#xF5DF;" + horiz-adv-x="512" d=" M25.6 352.64L53.3333333333333 379.7333333333334L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L356.9066666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 324.6933333333334 43.52 329.1733333333334 44.8 333.44L25.6 352.64M149.3333333333333 362.6666666666667L192 405.3333333333333H320L362.6666666666667 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 51.2 463.7866666666666 39.8933333333334 454.8266666666667 32L348.3733333333333 138.6666666666667C357.5466666666666 154.24 362.6666666666667 172.5866666666667 362.6666666666667 192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667C236.5866666666667 298.6666666666667 218.24 293.5466666666667 202.6666666666667 284.3733333333334L124.16 362.6666666666667H149.3333333333333M149.3333333333333 192C149.3333333333333 133.12 197.12 85.3333333333334 256 85.3333333333334C266.6666666666667 85.3333333333334 277.9733333333333 87.04 288 90.24L250.0266666666667 128C219.52 131.2000000000001 195.2 155.52 192 186.0266666666667L154.24 224C151.04 213.9733333333333 149.3333333333333 202.6666666666667 149.3333333333333 192M256 256C291.4133333333333 256 320 227.4133333333334 320 192C320 184.5333333333334 318.72 177.28 316.3733333333334 170.6666666666667L234.6666666666667 252.3733333333334C241.28 254.72 248.5333333333334 256 256 256z" /> + <glyph glyph-name="camera-party-mode" + unicode="&#xF105;" + horiz-adv-x="512" d=" M256 85.3333333333334C221.2266666666667 85.3333333333334 190.72 102.1866666666667 170.6666666666667 128H256C291.4133333333333 128 320 156.5866666666667 320 192C320 199.4666666666667 318.5066666666667 206.72 316.16 213.3333333333334H360.5333333333333C361.8133333333333 206.5066666666667 362.6666666666667 199.2533333333333 362.6666666666667 192C362.6666666666667 133.12 314.88 85.3333333333334 256 85.3333333333334M256 298.6666666666667C290.7733333333333 298.6666666666667 321.28 281.8133333333334 341.3333333333333 256H256C220.5866666666667 256 192 227.4133333333334 192 192C192 184.5333333333334 193.4933333333334 177.4933333333334 195.84 170.6666666666667H151.4666666666667C149.9733333333333 177.4933333333334 149.3333333333333 184.7466666666667 149.3333333333333 192C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667M426.6666666666667 362.6666666666667H359.04L320 405.3333333333333H192L152.96 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camera-rear" + unicode="&#xF106;" + horiz-adv-x="512" d=" M256 320C232.32 320 213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333C279.2533333333334 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320M362.6666666666667 448H149.3333333333333C125.8666666666667 448 106.6666666666667 428.8 106.6666666666667 405.3333333333333V106.6666666666667C106.6666666666667 83.2 125.8666666666667 64 149.3333333333333 64H362.6666666666667C386.1333333333334 64 405.3333333333333 83.2 405.3333333333333 106.6666666666667V405.3333333333333C405.3333333333333 428.8 386.1333333333334 448 362.6666666666667 448M298.6666666666667 21.3333333333334V-21.3333333333333H405.3333333333333V21.3333333333334M213.3333333333333 21.3333333333334H106.6666666666667V-21.3333333333333H213.3333333333333V-64L277.3333333333333 0L213.3333333333333 64V21.3333333333334z" /> + <glyph glyph-name="camera-rear-variant" + unicode="&#xF107;" + horiz-adv-x="512" d=" M128 448H384C407.4666666666667 448 426.6666666666667 428.8 426.6666666666667 405.3333333333333V-21.3333333333333C426.6666666666667 -44.8 407.4666666666667 -64 384 -64H128C104.5333333333333 -64 85.3333333333333 -44.8 85.3333333333333 -21.3333333333333V405.3333333333333C85.3333333333333 428.8 104.5333333333333 448 128 448M256 405.3333333333333C232.5333333333334 405.3333333333333 213.3333333333333 386.1333333333334 213.3333333333333 362.6666666666667S232.5333333333334 320 256 320S298.6666666666667 339.2000000000001 298.6666666666667 362.6666666666667S279.4666666666667 405.3333333333333 256 405.3333333333333M277.3333333333333 64H192V21.3333333333334H277.3333333333333V-21.3333333333333L341.3333333333333 42.6666666666667L277.3333333333333 106.6666666666667V64z" /> + <glyph glyph-name="camera-switch" + unicode="&#xF108;" + horiz-adv-x="512" d=" M320 117.3333333333334V170.6666666666667H192V117.3333333333334L117.3333333333333 192L192 266.6666666666667V213.3333333333334H320V266.6666666666667L394.6666666666667 192M426.6666666666667 362.6666666666667H359.04L320 405.3333333333333H192L152.96 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camera-timer" + unicode="&#xF109;" + horiz-adv-x="512" d=" M105.3866666666667 312.5333333333334C97.0666666666667 320.8533333333334 97.0666666666667 334.5066666666667 105.3866666666667 342.8266666666667C113.7066666666667 351.1466666666667 127.1466666666667 351.1466666666667 135.4666666666667 342.8266666666667L278.8266666666667 228.0533333333334L286.2933333333333 222.0800000000001C302.9333333333333 205.4400000000001 302.9333333333333 178.3466666666668 286.2933333333333 161.7066666666667C269.6533333333333 145.0666666666667 242.56 145.0666666666667 225.92 161.7066666666667L219.9466666666667 169.1733333333334L105.3866666666667 312.5333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 239.1466666666667 407.4666666666667 281.8133333333334 376.7466666666667 312.7466666666667L406.8266666666667 342.8266666666667C445.44 304.2133333333334 469.3333333333333 250.88 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192H85.3333333333333C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334M256 426.6666666666667C279.4666666666667 426.6666666666667 298.6666666666667 407.4666666666667 298.6666666666667 384S279.4666666666667 341.3333333333334 256 341.3333333333334S213.3333333333333 360.5333333333334 213.3333333333333 384S232.5333333333334 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="candle" + unicode="&#xF5E2;" + horiz-adv-x="512" d=" M266.6666666666667 405.3333333333333C231.2533333333334 405.3333333333333 202.6666666666667 334.0800000000001 202.6666666666667 298.6666666666667C202.6666666666667 263.2533333333334 231.2533333333334 234.6666666666667 266.6666666666667 234.6666666666667S330.6666666666667 263.2533333333334 330.6666666666667 298.6666666666667S302.08 405.3333333333333 266.6666666666667 405.3333333333333M266.6666666666667 309.3333333333334C278.4 309.3333333333334 288 299.7333333333334 288 288S278.4 266.6666666666667 266.6666666666667 266.6666666666667S245.3333333333333 276.2666666666667 245.3333333333333 288S254.9333333333333 309.3333333333334 266.6666666666667 309.3333333333334M213.3333333333333 213.3333333333334C201.6 213.3333333333334 192 203.7333333333334 192 192V21.3333333333334H149.3333333333333C137.6 21.3333333333334 128 30.9333333333333 128 42.6666666666667V64C128 75.7333333333334 118.4 85.3333333333334 106.6666666666667 85.3333333333334S85.3333333333333 75.7333333333334 85.3333333333333 64V42.6666666666667C85.3333333333333 7.2533333333333 113.92 -21.3333333333333 149.3333333333333 -21.3333333333333H405.3333333333333C417.0666666666667 -21.3333333333333 426.6666666666667 -11.7333333333333 426.6666666666667 0S417.0666666666667 21.3333333333334 405.3333333333333 21.3333333333334H341.3333333333333V192C341.3333333333333 203.7333333333334 331.7333333333334 213.3333333333334 320 213.3333333333334H213.3333333333333z" /> + <glyph glyph-name="candycane" + unicode="&#xF10A;" + horiz-adv-x="512" d=" M213.3333333333333 234.6666666666667C213.3333333333333 211.2 194.1333333333333 192 170.6666666666667 192S128 211.2 128 234.6666666666667V277.3333333333334C128 290.7733333333333 130.1333333333333 303.5733333333334 133.76 315.7333333333334L213.3333333333333 236.1600000000001V234.6666666666667M256 405.3333333333333C271.7866666666667 405.3333333333333 286.72 402.56 300.5866666666667 397.2266666666667L255.36 320C237.6533333333334 320 222.72 309.3333333333334 216.5333333333333 293.3333333333334L154.4533333333333 355.4133333333334C177.92 385.7066666666667 214.6133333333334 405.3333333333333 256 405.3333333333333M378.88 313.3866666666667L298.6666666666667 233.1733333333334V277.3333333333334C298.6666666666667 285.44 296.5333333333333 292.9066666666667 292.6933333333334 299.3066666666667L337.7066666666667 375.8933333333333C357.12 359.8933333333333 371.6266666666667 338.1333333333334 378.88 313.3866666666667M384 168.7466666666667L298.6666666666667 83.4133333333334V172.8L384 258.1333333333334V168.7466666666667M384 21.3333333333334C384 -2.1333333333333 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333S298.6666666666667 -2.1333333333333 298.6666666666667 21.3333333333334V23.2533333333333L384 108.5866666666667V21.3333333333334z" /> + <glyph glyph-name="car" + unicode="&#xF10B;" + horiz-adv-x="512" d=" M106.6666666666667 213.3333333333334L138.6666666666667 309.3333333333334H373.3333333333333L405.3333333333333 213.3333333333334M373.3333333333333 106.6666666666667C355.6266666666667 106.6666666666667 341.3333333333333 120.96 341.3333333333333 138.6666666666667S355.6266666666667 170.6666666666667 373.3333333333333 170.6666666666667S405.3333333333333 156.3733333333333 405.3333333333333 138.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 120.96 106.6666666666667 138.6666666666667S120.96 170.6666666666667 138.6666666666667 170.6666666666667S170.6666666666667 156.3733333333333 170.6666666666667 138.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667M403.6266666666667 320C399.36 332.3733333333334 387.4133333333333 341.3333333333334 373.3333333333333 341.3333333333334H138.6666666666667C124.5866666666667 341.3333333333334 112.64 332.3733333333334 108.3733333333333 320L64 192V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H106.6666666666667C118.4 0 128 9.6 128 21.3333333333334V42.6666666666667H384V21.3333333333334C384 9.6 393.6 0 405.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V192L403.6266666666667 320z" /> + <glyph glyph-name="car-battery" + unicode="&#xF10C;" + horiz-adv-x="512" d=" M85.3333333333333 384V320H21.3333333333333V21.3333333333334H490.6666666666666V320H426.6666666666667V384H298.6666666666667V320H213.3333333333333V384H85.3333333333333M64 277.3333333333334H448V64H64V277.3333333333334M320 234.6666666666667V192H277.3333333333333V149.3333333333334H320V106.6666666666667H362.6666666666667V149.3333333333334H405.3333333333333V192H362.6666666666667V234.6666666666667H320M106.6666666666667 192V149.3333333333334H234.6666666666667V192H106.6666666666667z" /> + <glyph glyph-name="car-connected" + unicode="&#xF10D;" + horiz-adv-x="512" d=" M106.6666666666667 149.3333333333334H405.3333333333333L373.3333333333333 245.3333333333334H138.6666666666667L106.6666666666667 149.3333333333334M373.3333333333333 42.6666666666667C391.04 42.6666666666667 405.3333333333333 56.96 405.3333333333333 74.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667S341.3333333333333 92.3733333333333 341.3333333333333 74.6666666666667S355.6266666666667 42.6666666666667 373.3333333333333 42.6666666666667M138.6666666666667 42.6666666666667C156.3733333333333 42.6666666666667 170.6666666666667 56.96 170.6666666666667 74.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667S106.6666666666667 92.3733333333333 106.6666666666667 74.6666666666667S120.96 42.6666666666667 138.6666666666667 42.6666666666667M403.6266666666667 256L448 128V-42.6666666666666C448 -54.4 438.4 -64 426.6666666666667 -64H405.3333333333333C393.6 -64 384 -54.4 384 -42.6666666666666V-21.3333333333333H128V-42.6666666666666C128 -54.4 118.4 -64 106.6666666666667 -64H85.3333333333333C73.6 -64 64 -54.4 64 -42.6666666666666V128L108.3733333333333 256C112.64 268.3733333333334 124.8 277.3333333333334 138.6666666666667 277.3333333333334H373.3333333333333C387.2 277.3333333333334 399.36 268.3733333333334 403.6266666666667 256M256 448C301.2266666666667 448 344.5333333333333 429.6533333333333 376.5333333333333 397.8666666666667L346.2399999999999 367.5733333333333C322.3466666666667 391.4666666666667 289.7066666666667 405.3333333333333 256 405.3333333333333C222.2933333333333 405.3333333333333 189.6533333333333 391.4666666666667 165.76 367.5733333333333L135.68 397.8666666666667C167.4666666666667 429.6533333333333 210.7733333333334 448 256 448M256 362.6666666666667C278.6133333333334 362.6666666666667 300.16 353.28 316.16 337.4933333333334L285.8666666666667 307.2000000000001C277.9733333333334 315.0933333333334 267.3066666666667 320 256 320C245.3333333333333 320 234.0266666666667 315.0933333333334 226.1333333333334 307.2000000000001L195.84 337.4933333333334C211.84 353.28 233.3866666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="car-wash" + unicode="&#xF10E;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667L138.6666666666667 266.6666666666667H373.3333333333333L405.3333333333333 170.6666666666667M373.3333333333333 64C355.6266666666667 64 341.3333333333333 78.2933333333334 341.3333333333333 96S355.6266666666667 128 373.3333333333333 128S405.3333333333333 113.7066666666667 405.3333333333333 96S391.04 64 373.3333333333333 64M138.6666666666667 64C120.96 64 106.6666666666667 78.2933333333334 106.6666666666667 96S120.96 128 138.6666666666667 128S170.6666666666667 113.7066666666667 170.6666666666667 96S156.3733333333333 64 138.6666666666667 64M403.6266666666667 277.3333333333334C399.36 289.7066666666667 387.4133333333333 298.6666666666667 373.3333333333333 298.6666666666667H138.6666666666667C124.5866666666667 298.6666666666667 112.64 289.7066666666667 108.3733333333333 277.3333333333334L64 149.3333333333334V-21.3333333333333C64 -33.0666666666667 73.6 -42.6666666666666 85.3333333333333 -42.6666666666666H106.6666666666667C118.4 -42.6666666666666 128 -33.0666666666667 128 -21.3333333333333V0H384V-21.3333333333333C384 -33.0666666666667 393.6 -42.6666666666666 405.3333333333333 -42.6666666666666H426.6666666666667C438.4 -42.6666666666666 448 -33.0666666666667 448 -21.3333333333333V149.3333333333334M149.3333333333333 341.3333333333334C167.04 341.3333333333334 181.3333333333333 355.6266666666667 181.3333333333333 373.3333333333334C181.3333333333333 394.6666666666667 149.3333333333333 430.9333333333334 149.3333333333333 430.9333333333334S117.3333333333333 394.6666666666667 117.3333333333333 373.3333333333334C117.3333333333333 355.6266666666667 131.6266666666667 341.3333333333334 149.3333333333333 341.3333333333334M256 341.3333333333334C273.7066666666667 341.3333333333334 288 355.6266666666667 288 373.3333333333334C288 394.6666666666667 256 430.9333333333334 256 430.9333333333334S224 394.6666666666667 224 373.3333333333334C224 355.6266666666667 238.2933333333333 341.3333333333334 256 341.3333333333334M362.6666666666667 341.3333333333334C380.3733333333333 341.3333333333334 394.6666666666667 355.6266666666667 394.6666666666667 373.3333333333334C394.6666666666667 394.6666666666667 362.6666666666667 430.9333333333334 362.6666666666667 430.9333333333334S330.6666666666667 394.6666666666667 330.6666666666667 373.3333333333334C330.6666666666667 355.6266666666667 344.9600000000001 341.3333333333334 362.6666666666667 341.3333333333334z" /> + <glyph glyph-name="cards" + unicode="&#xF638;" + horiz-adv-x="512" d=" M458.0266666666666 355.2000000000001L429.44 367.1466666666667V174.5066666666667L481.28 299.5200000000001C490.0266666666666 321.2800000000001 480 346.2400000000001 458.0266666666666 355.2000000000001M42.0266666666666 276.2666666666668L147.84 21.3333333333334C154.4533333333333 4.9066666666667 170.0266666666667 -5.1199999999999 186.4533333333333 -5.5466666666667C192 -5.5466666666667 197.76 -4.48 203.3066666666667 -2.1333333333333L360.5333333333334 62.9333333333333C376.5333333333334 69.5466666666666 386.3466666666667 85.3333333333334 386.7733333333334 101.12C386.9866666666668 106.6666666666667 385.9200000000001 112.8533333333334 384.0000000000001 118.4L277.3333333333333 373.3333333333334C271.1466666666667 389.76 255.36 399.7866666666667 238.72 400C233.1733333333333 400 227.6266666666667 398.7200000000001 222.2933333333333 396.8L65.28 331.7333333333334C43.52 322.7733333333333 33.0666666666667 297.8133333333334 42.0266666666667 276.2666666666667M386.56 357.3333333333333C386.56 380.8 367.36 400 343.8933333333333 400H312.9599999999999L386.56 222.08" /> + <glyph glyph-name="cards-outline" + unicode="&#xF639;" + horiz-adv-x="512" d=" M238.72 400C233.1733333333333 400 227.6266666666667 398.7200000000001 222.2933333333333 396.8L65.28 331.7333333333334C43.52 322.7733333333333 33.0666666666667 297.8133333333334 42.0266666666667 276.2666666666667L147.84 21.3333333333334C154.4533333333333 4.9066666666667 170.0266666666667 -4.9066666666666 186.4533333333333 -5.3333333333333C192 -5.3333333333333 197.76 -4.6933333333333 203.3066666666667 -2.1333333333333L360.5333333333334 62.9333333333333C376.5333333333334 69.5466666666666 386.3466666666667 85.3333333333334 386.7733333333334 101.3333333333334C386.9866666666668 106.6666666666667 385.9200000000001 112.8533333333334 384.0000000000001 118.4L277.3333333333333 373.3333333333334C271.1466666666667 389.76 255.36 399.7866666666667 238.72 400M312.96 400L386.56 221.8666666666667V357.3333333333334C386.56 380.8 367.36 400 343.8933333333333 400M429.4400000000001 367.1466666666667V174.5066666666667L481.28 299.52C490.0266666666667 321.2800000000001 480.0000000000001 346.0266666666667 458.0266666666667 354.9866666666667M238.7200000000001 357.9733333333334L344.9600000000001 101.5466666666667L187.3066666666667 36.2666666666668L81.0666666666667 292.48" /> + <glyph glyph-name="cards-playing-outline" + unicode="&#xF63A;" + horiz-adv-x="512" d=" M238.72 400C255.36 399.7866666666667 271.1466666666667 389.76 277.3333333333333 373.3333333333334L384 118.4C385.92 112.8533333333334 386.9866666666667 106.6666666666667 386.7733333333333 101.3333333333334C386.3466666666667 85.3333333333334 376.5333333333333 69.5466666666667 360.5333333333333 62.9333333333333L203.3066666666667 -2.1333333333333C197.76 -4.6933333333334 192 -5.3333333333333 186.4533333333333 -5.3333333333333C170.0266666666667 -4.9066666666666 154.4533333333333 4.9066666666667 147.84 21.3333333333334L42.0266666666667 276.2666666666667C33.0666666666667 297.8133333333334 43.52 322.7733333333333 65.28 331.7333333333334L222.2933333333333 396.8C227.6266666666667 398.72 233.1733333333333 400 238.72 400M312.96 400H343.8933333333333C367.36 400 386.56 380.8 386.56 357.3333333333333V221.8666666666667L312.9600000000001 400M429.4400000000001 367.1466666666667L458.0266666666667 354.9866666666666C480.0000000000001 346.0266666666667 490.0266666666667 321.28 481.28 299.52L429.4400000000001 174.5066666666666V367.1466666666667M238.7200000000001 357.9733333333334L81.0666666666667 292.48L187.0933333333333 36.2666666666667L344.9600000000001 101.5466666666666L238.7200000000001 357.9733333333333M184.5333333333333 265.8133333333334L253.44 214.4L244.0533333333334 128.8533333333334L175.1466666666667 180.48L184.5333333333333 265.8133333333334z" /> + <glyph glyph-name="carrot" + unicode="&#xF10F;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667L337.0666666666667 213.3333333333334H288C282.0266666666667 213.3333333333334 277.3333333333333 208.64 277.3333333333333 202.6666666666667S282.0266666666667 192 288 192H332.8L311.4666666666667 85.3333333333334H266.6666666666667C260.6933333333334 85.3333333333334 256 80.64 256 74.6666666666667S260.6933333333334 64 266.6666666666667 64H307.2L298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334L192 128H224C229.9733333333333 128 234.6666666666667 132.6933333333334 234.6666666666667 138.6666666666667S229.9733333333333 149.3333333333334 224 149.3333333333334H187.7333333333334L170.6666666666667 234.6666666666667C170.6666666666667 260.2666666666667 190.5066666666667 282.24 219.52 292.48L189.8666666666667 335.36C183.2533333333333 345.1733333333334 185.6 358.4 195.4133333333333 365.0133333333333C205.0133333333333 371.84 218.24 369.28 225.0666666666667 359.68L234.6666666666667 345.6V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333S277.3333333333333 395.7333333333334 277.3333333333333 384V335.36L309.3333333333333 372.48C316.3733333333334 381.4400000000001 330.0266666666667 382.5066666666667 338.9866666666667 374.8266666666667C347.9466666666667 367.36 349.0133333333333 353.92 341.3333333333333 344.7466666666667L295.8933333333333 291.2000000000001C322.9866666666667 280.5333333333334 341.3333333333333 259.2000000000001 341.3333333333333 234.6666666666667z" /> + <glyph glyph-name="cart" + unicode="&#xF110;" + horiz-adv-x="512" d=" M362.6666666666667 64C338.9866666666667 64 320 45.0133333333333 320 21.3333333333334C320 -2.1333333333333 339.2 -21.3333333333333 362.6666666666667 -21.3333333333333S405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334C405.3333333333333 45.0133333333333 386.1333333333334 64 362.6666666666667 64M21.3333333333333 405.3333333333333V362.6666666666667H64L140.8 200.7466666666667L111.7866666666667 148.48C108.5866666666667 142.5066666666667 106.6666666666666 135.4666666666667 106.6666666666666 128C106.6666666666666 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H405.3333333333333V128H158.2933333333333C155.3066666666667 128 152.96 130.3466666666667 152.96 133.3333333333334C152.96 134.4 153.1733333333333 135.2533333333333 153.6 135.8933333333333L172.8 170.6666666666667H331.7333333333334C347.7333333333334 170.6666666666667 361.8133333333334 179.6266666666667 369.0666666666667 192.64L445.4400000000001 330.6666666666667C446.9333333333334 334.08 448.0000000000001 337.7066666666667 448.0000000000001 341.3333333333333C448.0000000000001 353.0666666666667 438.4000000000001 362.6666666666667 426.6666666666668 362.6666666666667H111.1466666666667L91.0933333333333 405.3333333333333M149.3333333333333 64C125.6533333333333 64 106.6666666666667 45.0133333333333 106.6666666666667 21.3333333333334C106.6666666666667 -2.1333333333333 125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334C192 45.0133333333333 172.8 64 149.3333333333333 64z" /> + <glyph glyph-name="cart-off" + unicode="&#xF66B;" + horiz-adv-x="512" d=" M484.9066666666666 -36.9066666666666L27.0933333333333 420.9066666666667L0 393.8133333333334L93.6533333333333 300.1600000000001L140.8 200.7466666666667L112 148.48C108.5866666666667 142.5066666666667 106.6666666666667 135.4666666666667 106.6666666666667 128C106.6666666666667 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H308.48L337.92 55.8933333333334C327.2533333333334 48.2133333333334 320 35.6266666666667 320 21.3333333333334C320 -2.1333333333333 339.2 -21.3333333333333 362.6666666666667 -21.3333333333333C376.9600000000001 -21.3333333333333 389.5466666666667 -14.2933333333333 397.2266666666667 -3.4133333333333L457.8133333333333 -64L484.9066666666666 -36.9066666666666M158.2933333333333 128C155.3066666666667 128 152.96 130.3466666666667 152.96 133.3333333333334L153.6 135.8933333333333L172.8 170.6666666666667H223.1466666666667L265.8133333333333 128H158.2933333333333M331.7333333333334 170.6666666666667C347.7333333333334 170.6666666666667 361.8133333333334 179.4133333333334 369.0666666666667 192.64L445.4400000000001 330.6666666666667C447.1466666666667 334.08 448.0000000000001 337.7066666666667 448.0000000000001 341.3333333333333C448.0000000000001 353.0666666666667 438.4000000000001 362.6666666666667 426.6666666666668 362.6666666666667H139.52L331.7333333333334 170.6666666666667M149.3333333333333 64C125.8666666666667 64 106.6666666666667 44.8000000000001 106.6666666666667 21.3333333333334S125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334S172.8 64 149.3333333333333 64z" /> + <glyph glyph-name="cart-outline" + unicode="&#xF111;" + horiz-adv-x="512" d=" M362.6666666666667 64C386.1333333333334 64 405.3333333333333 44.8000000000001 405.3333333333333 21.3333333333334S386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333C338.9866666666667 -21.3333333333333 320 -2.1333333333333 320 21.3333333333334C320 45.0133333333333 338.9866666666667 64 362.6666666666667 64M21.3333333333333 405.3333333333333H91.0933333333333L111.1466666666667 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334C448 337.7066666666667 446.9333333333333 334.0800000000001 445.44 330.6666666666667L369.0666666666666 192.6400000000001C361.8133333333333 179.6266666666667 347.7333333333333 170.6666666666668 331.7333333333333 170.6666666666668H172.8L153.6 135.8933333333334L152.96 133.3333333333334C152.96 130.3466666666667 155.3066666666667 128.0000000000001 158.2933333333333 128.0000000000001H405.3333333333333V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128C106.6666666666667 135.4666666666667 108.5866666666667 142.5066666666667 111.7866666666667 148.48L140.8 200.7466666666667L64 362.6666666666667H21.3333333333333V405.3333333333333M149.3333333333333 64C172.8 64 192 44.8000000000001 192 21.3333333333334S172.8 -21.3333333333333 149.3333333333333 -21.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334C106.6666666666667 45.0133333333333 125.6533333333333 64 149.3333333333333 64M341.3333333333333 213.3333333333334L400.64 320H130.9866666666667L181.3333333333333 213.3333333333334H341.3333333333333z" /> + <glyph glyph-name="cart-plus" + unicode="&#xF112;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V320H341.3333333333333V362.6666666666667H277.3333333333333V426.6666666666667H234.6666666666667V362.6666666666667H170.6666666666667V320H234.6666666666667M149.3333333333333 64C125.8666666666667 64 106.6666666666667 44.8000000000001 106.6666666666667 21.3333333333334S125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334S172.8 64 149.3333333333333 64M362.6666666666667 64C339.2 64 320 44.8000000000001 320 21.3333333333334S339.2 -21.3333333333333 362.6666666666667 -21.3333333333333S405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334S386.1333333333334 64 362.6666666666667 64M152.96 133.3333333333334L153.6 135.8933333333333L172.8 170.6666666666667H331.7333333333334C347.7333333333334 170.6666666666667 361.8133333333334 179.4133333333334 369.0666666666667 192.64L451.4133333333333 342.1866666666667L414.2933333333334 362.6666666666667H414.08L390.6133333333333 320L331.7333333333333 213.3333333333334H181.9733333333333L179.2 219.0933333333333L131.4133333333333 320L111.1466666666667 362.6666666666667L91.0933333333333 405.3333333333333H21.3333333333333V362.6666666666667H64L140.8 200.7466666666667L112 148.48C108.5866666666667 142.5066666666667 106.6666666666667 135.4666666666667 106.6666666666667 128C106.6666666666667 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H405.3333333333333V128H158.2933333333333C155.52 128 152.96 130.3466666666667 152.96 133.3333333333334z" /> + <glyph glyph-name="case-sensitive-alt" + unicode="&#xF113;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334C426.6666666666667 181.3333333333334 416 192 384 192H341.3333333333333V213.3333333333334C341.3333333333333 234.6666666666667 341.3333333333333 234.6666666666667 298.6666666666667 234.6666666666667V42.6666666666667H384C416 42.6666666666667 426.6666666666667 53.9733333333334 426.6666666666667 85.3333333333334V149.3333333333334M256 192C256 224 244.6933333333334 234.6666666666667 213.3333333333333 234.6666666666667H128C96 234.6666666666667 85.3333333333333 224 85.3333333333333 192V42.6666666666667H128V106.6666666666667H213.3333333333333V42.6666666666667H256V192M213.3333333333333 298.6666666666667H298.6666666666667V341.3333333333334H213.3333333333333V298.6666666666667M469.3333333333333 256V21.3333333333334C469.3333333333333 -2.3466666666666 450.3466666666667 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V256C42.6666666666667 279.68 61.6533333333333 298.6666666666667 85.3333333333333 298.6666666666667H170.6666666666667V341.3333333333334L213.3333333333333 384H298.6666666666667L341.3333333333333 341.3333333333334V298.6666666666667H426.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256M341.3333333333333 85.3333333333334H384V149.3333333333334H341.3333333333333V85.3333333333334M128 192H213.3333333333333V149.3333333333334H128V192z" /> + <glyph glyph-name="cash" + unicode="&#xF114;" + horiz-adv-x="512" d=" M64 320H448V64H64V320M256 256C291.4133333333333 256 320 227.4133333333334 320 192S291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256M149.3333333333333 277.3333333333334C149.3333333333333 253.8666666666667 130.1333333333333 234.6666666666667 106.6666666666667 234.6666666666667V149.3333333333334C130.1333333333333 149.3333333333334 149.3333333333333 130.1333333333333 149.3333333333333 106.6666666666667H362.6666666666667C362.6666666666667 130.1333333333333 381.8666666666666 149.3333333333334 405.3333333333333 149.3333333333334V234.6666666666667C381.8666666666666 234.6666666666667 362.6666666666667 253.8666666666667 362.6666666666667 277.3333333333334H149.3333333333333z" /> + <glyph glyph-name="cash-100" + unicode="&#xF115;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334H469.3333333333333V21.3333333333334H42.6666666666667V341.3333333333334M426.6666666666667 64V298.6666666666667H85.3333333333333V64H426.6666666666667M362.6666666666667 277.3333333333334C362.6666666666667 253.8666666666667 381.8666666666666 234.6666666666667 405.3333333333333 234.6666666666667V128C381.8666666666666 128 362.6666666666667 108.8 362.6666666666667 85.3333333333334H149.3333333333333C149.3333333333333 108.8 130.1333333333333 128 106.6666666666667 128V234.6666666666667C130.1333333333333 234.6666666666667 149.3333333333333 253.8666666666667 149.3333333333333 277.3333333333334H362.6666666666667M362.6666666666667 170.6666666666667V192C362.6666666666667 215.4666666666667 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192V170.6666666666667C298.6666666666667 147.2000000000001 312.96 128 330.6666666666667 128S362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M330.6666666666667 213.3333333333334C336.64 213.3333333333334 341.3333333333333 208.64 341.3333333333333 202.6666666666667V160C341.3333333333333 154.0266666666667 336.64 149.3333333333334 330.6666666666667 149.3333333333334S320 154.0266666666667 320 160V202.6666666666667C320 208.64 324.6933333333334 213.3333333333334 330.6666666666667 213.3333333333334M277.3333333333333 170.6666666666667V192C277.3333333333333 215.4666666666667 263.04 234.6666666666667 245.3333333333333 234.6666666666667S213.3333333333333 215.4666666666667 213.3333333333333 192V170.6666666666667C213.3333333333333 147.2000000000001 227.6266666666667 128 245.3333333333333 128S277.3333333333333 147.2000000000001 277.3333333333333 170.6666666666667M245.3333333333333 213.3333333333334C251.3066666666667 213.3333333333334 256 208.64 256 202.6666666666667V160C256 154.0266666666667 251.3066666666667 149.3333333333334 245.3333333333333 149.3333333333334S234.6666666666667 154.0266666666667 234.6666666666667 160V202.6666666666667C234.6666666666667 208.64 239.36 213.3333333333334 245.3333333333333 213.3333333333334M170.6666666666667 128H192V234.6666666666667H170.6666666666667L149.3333333333333 224V202.6666666666667L170.6666666666667 213.3333333333334V128z" /> + <glyph glyph-name="cash-multiple" + unicode="&#xF116;" + horiz-adv-x="512" d=" M106.6666666666667 320H490.6666666666666V64H106.6666666666667V320M298.6666666666667 256C334.08 256 362.6666666666667 227.4133333333334 362.6666666666667 192S334.08 128 298.6666666666667 128S234.6666666666667 156.5866666666667 234.6666666666667 192S263.2533333333334 256 298.6666666666667 256M192 277.3333333333334C192 253.8666666666667 172.8 234.6666666666667 149.3333333333333 234.6666666666667V149.3333333333334C172.8 149.3333333333334 192 130.1333333333333 192 106.6666666666667H405.3333333333333C405.3333333333333 130.1333333333333 424.5333333333333 149.3333333333334 448 149.3333333333334V234.6666666666667C424.5333333333333 234.6666666666667 405.3333333333333 253.8666666666667 405.3333333333333 277.3333333333334H192M21.3333333333333 234.6666666666667H64V21.3333333333334H405.3333333333333V-21.3333333333333H21.3333333333333V234.6666666666667z" /> + <glyph glyph-name="cash-usd" + unicode="&#xF117;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V106.6666666666667H298.6666666666667C310.4 106.6666666666667 320 116.2666666666667 320 128V192C320 203.7333333333334 310.4 213.3333333333334 298.6666666666667 213.3333333333334H234.6666666666667V234.6666666666667H320V277.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667V277.3333333333334H213.3333333333333C201.6 277.3333333333334 192 267.7333333333334 192 256V192C192 180.2666666666667 201.6 170.6666666666667 213.3333333333333 170.6666666666667H277.3333333333333V149.3333333333334H192V106.6666666666667H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="cast" + unicode="&#xF118;" + horiz-adv-x="512" d=" M21.3333333333333 234.6666666666667V192C127.36 192 213.3333333333333 106.0266666666666 213.3333333333333 0H256C256 129.7066666666667 150.8266666666667 234.6666666666667 21.3333333333333 234.6666666666667M21.3333333333333 149.3333333333334V106.6666666666667C80.2133333333333 106.6666666666667 128 58.88 128 0H170.6666666666667C170.6666666666667 82.5600000000001 103.8933333333333 149.3333333333334 21.3333333333333 149.3333333333334M21.3333333333333 64V0H85.3333333333333C85.3333333333333 35.4133333333334 56.7466666666667 64 21.3333333333333 64M448 384H64C40.32 384 21.3333333333333 365.0133333333333 21.3333333333333 341.3333333333334V277.3333333333334H64V341.3333333333334H448V42.6666666666667H298.6666666666667V0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 365.0133333333333 471.4666666666667 384 448 384z" /> + <glyph glyph-name="cast-connected" + unicode="&#xF119;" + horiz-adv-x="512" d=" M448 384H64C40.32 384 21.3333333333333 365.0133333333333 21.3333333333333 341.3333333333334V277.3333333333334H64V341.3333333333334H448V42.6666666666667H298.6666666666667V0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 365.0133333333333 471.4666666666667 384 448 384M21.3333333333333 234.6666666666667V192C127.36 192 213.3333333333333 106.0266666666666 213.3333333333333 0H256C256 129.7066666666667 150.8266666666667 234.6666666666667 21.3333333333333 234.6666666666667M405.3333333333333 298.6666666666667H106.6666666666667V263.8933333333334C191.1466666666667 236.5866666666667 257.92 169.8133333333334 285.2266666666667 85.3333333333334H405.3333333333333M21.3333333333333 149.3333333333334V106.6666666666667C80.2133333333333 106.6666666666667 128 58.88 128 0H170.6666666666667C170.6666666666667 82.5600000000001 103.8933333333333 149.3333333333334 21.3333333333333 149.3333333333334M21.3333333333333 64V0H85.3333333333333C85.3333333333333 35.4133333333334 56.7466666666667 64 21.3333333333333 64z" /> + <glyph glyph-name="castle" + unicode="&#xF11A;" + horiz-adv-x="512" d=" M42.6666666666667 170.6666666666667H85.3333333333333V128H128V170.6666666666667H170.6666666666667V128H213.3333333333333V170.6666666666667H256V128H298.6666666666667V234.6666666666667L362.6666666666667 298.6666666666667V426.6666666666667H405.3333333333333L490.6666666666666 384L405.3333333333333 341.3333333333334V298.6666666666667L469.3333333333333 234.6666666666667V-21.3333333333333H234.6666666666667V42.6666666666667C234.6666666666667 66.1333333333334 215.4666666666667 85.3333333333334 192 85.3333333333334S149.3333333333333 66.1333333333334 149.3333333333333 42.6666666666667V-21.3333333333333H42.6666666666667V170.6666666666667M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 223.1466666666667 362.6666666666667 209.0666666666667V170.6666666666667H405.3333333333333V209.0666666666667C405.3333333333333 223.1466666666667 395.7333333333334 234.6666666666667 384 234.6666666666667z" /> + <glyph glyph-name="cat" + unicode="&#xF11B;" + horiz-adv-x="512" d=" M256 277.3333333333334L227.6266666666667 275.4133333333334C209.28 297.1733333333334 157.8666666666667 352 106.6666666666667 352C106.6666666666667 352 64.64 288.8533333333334 105.8133333333333 204.5866666666667C94.08 186.88 86.8266666666667 177.7066666666667 85.3333333333333 156.5866666666667L44.16 150.4L48.64 129.4933333333334L86.1866666666667 135.04L89.1733333333333 119.8933333333334L55.68 99.84L65.7066666666667 80.8533333333334L96.64 99.84C121.1733333333333 47.7866666666666 183.2533333333333 21.3333333333334 256 21.3333333333334S390.8266666666667 47.7866666666666 415.36 99.84L446.2933333333333 80.8533333333334L456.3199999999999 99.84L422.8266666666666 119.8933333333333L425.8133333333333 135.04L463.36 129.4933333333334L467.84 150.4L426.6666666666667 156.5866666666667C425.1733333333333 177.7066666666667 417.92 186.88 406.1866666666666 204.5866666666667C447.36 288.8533333333334 405.3333333333333 352 405.3333333333333 352C354.1333333333334 352 302.7200000000001 297.1733333333334 284.3733333333334 275.4133333333334L256 277.3333333333334M192 213.3333333333334C203.7333333333334 213.3333333333334 213.3333333333333 203.7333333333334 213.3333333333333 192S203.7333333333334 170.6666666666667 192 170.6666666666667S170.6666666666667 180.2666666666667 170.6666666666667 192S180.2666666666667 213.3333333333334 192 213.3333333333334M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192S331.7333333333334 170.6666666666667 320 170.6666666666667S298.6666666666667 180.2666666666667 298.6666666666667 192S308.2666666666667 213.3333333333334 320 213.3333333333334M234.6666666666667 149.3333333333334H277.3333333333333L262.4 119.68C266.6666666666667 106.0266666666666 278.6133333333334 96 293.3333333333333 96C311.04 96 325.3333333333333 110.2933333333334 325.3333333333333 128H336C336 104.5333333333333 316.8 85.3333333333334 293.3333333333333 85.3333333333334C277.3333333333333 85.3333333333334 263.4666666666667 94.08 256 106.6666666666667C248.5333333333334 94.08 234.6666666666667 85.3333333333334 218.6666666666667 85.3333333333334C195.2 85.3333333333334 176 104.5333333333333 176 128H186.6666666666667C186.6666666666667 110.2933333333334 200.96 96 218.6666666666667 96C233.3866666666667 96 245.3333333333333 106.0266666666666 249.6 119.68L234.6666666666667 149.3333333333334z" /> + <glyph glyph-name="cellphone" + unicode="&#xF11C;" + horiz-adv-x="512" d=" M362.6666666666667 42.6666666666667H149.3333333333333V341.3333333333334H362.6666666666667M362.6666666666667 426.6666666666667H149.3333333333333C125.6533333333333 426.6666666666667 106.6666666666667 407.68 106.6666666666667 384V0C106.6666666666667 -23.4666666666667 125.8666666666667 -42.6666666666666 149.3333333333333 -42.6666666666666H362.6666666666667C386.1333333333334 -42.6666666666666 405.3333333333333 -23.4666666666667 405.3333333333333 0V384C405.3333333333333 407.68 386.1333333333334 426.6666666666667 362.6666666666667 426.6666666666667z" /> + <glyph glyph-name="cellphone-android" + unicode="&#xF11D;" + horiz-adv-x="512" d=" M368 64H144V362.6666666666667H368M298.6666666666667 0H213.3333333333333V21.3333333333334H298.6666666666667M341.3333333333333 426.6666666666667H170.6666666666667C135.2533333333333 426.6666666666667 106.6666666666667 398.08 106.6666666666667 362.6666666666667V21.3333333333334C106.6666666666667 -14.08 135.2533333333333 -42.6666666666666 170.6666666666667 -42.6666666666666H341.3333333333333C376.7466666666667 -42.6666666666666 405.3333333333333 -14.08 405.3333333333333 21.3333333333334V362.6666666666667C405.3333333333333 398.08 376.7466666666667 426.6666666666667 341.3333333333333 426.6666666666667z" /> + <glyph glyph-name="cellphone-basic" + unicode="&#xF11E;" + horiz-adv-x="512" d=" M320 405.3333333333333C308.2666666666667 405.3333333333333 298.6666666666667 395.7333333333334 298.6666666666667 384V320H213.3333333333333C189.6533333333333 320 170.6666666666667 301.0133333333333 170.6666666666667 277.3333333333334V21.3333333333334C170.6666666666667 -2.3466666666666 189.6533333333333 -21.3333333333333 213.3333333333333 -21.3333333333333H320C343.68 -21.3333333333333 362.6666666666667 -2.3466666666666 362.6666666666667 21.3333333333334V277.3333333333334C362.6666666666667 293.12 354.1333333333334 306.7733333333333 341.3333333333333 314.0266666666667V384C341.3333333333333 395.7333333333334 331.7333333333334 405.3333333333333 320 405.3333333333333M213.3333333333333 277.3333333333334H320V170.6666666666667H213.3333333333333V277.3333333333334M213.3333333333333 128H234.6666666666667V106.6666666666667H213.3333333333333V128M256 128H277.3333333333333V106.6666666666667H256V128M298.6666666666667 128H320V106.6666666666667H298.6666666666667V128M213.3333333333333 85.3333333333334H234.6666666666667V64H213.3333333333333V85.3333333333334M256 85.3333333333334H277.3333333333333V64H256V85.3333333333334M298.6666666666667 85.3333333333334H320V64H298.6666666666667V85.3333333333334M213.3333333333333 42.6666666666667H234.6666666666667V21.3333333333334H213.3333333333333V42.6666666666667M256 42.6666666666667H277.3333333333333V21.3333333333334H256V42.6666666666667M298.6666666666667 42.6666666666667H320V21.3333333333334H298.6666666666667V42.6666666666667z" /> + <glyph glyph-name="cellphone-dock" + unicode="&#xF11F;" + horiz-adv-x="512" d=" M341.3333333333333 128H170.6666666666667V341.3333333333334H341.3333333333333M341.3333333333333 426.6666666666667H170.6666666666667C146.9866666666667 426.6666666666667 128 407.68 128 384V85.3333333333334C128 61.8666666666667 147.2 42.6666666666667 170.6666666666667 42.6666666666667H341.3333333333333C364.8 42.6666666666667 384 61.8666666666667 384 85.3333333333334V384C384 407.68 364.8 426.6666666666667 341.3333333333333 426.6666666666667M170.6666666666667 -42.6666666666666H341.3333333333333V0H170.6666666666667V-42.6666666666666z" /> + <glyph glyph-name="cellphone-iphone" + unicode="&#xF120;" + horiz-adv-x="512" d=" M341.3333333333333 64H149.3333333333333V362.6666666666667H341.3333333333333M245.3333333333333 -21.3333333333333C227.6266666666667 -21.3333333333333 213.3333333333333 -7.04 213.3333333333333 10.6666666666667S227.6266666666667 42.6666666666667 245.3333333333333 42.6666666666667S277.3333333333333 28.3733333333333 277.3333333333333 10.6666666666667S263.04 -21.3333333333333 245.3333333333333 -21.3333333333333M330.6666666666667 426.6666666666667H160C130.56 426.6666666666667 106.6666666666667 402.7733333333333 106.6666666666667 373.3333333333334V10.6666666666667C106.6666666666667 -18.7733333333333 130.56 -42.6666666666666 160 -42.6666666666666H330.6666666666667C360.1066666666667 -42.6666666666666 384 -18.7733333333333 384 10.6666666666667V373.3333333333334C384 402.7733333333333 360.1066666666667 426.6666666666667 330.6666666666667 426.6666666666667z" /> + <glyph glyph-name="cellphone-link" + unicode="&#xF121;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334H384V234.6666666666667H469.3333333333333M490.6666666666666 277.3333333333334H362.6666666666667C350.9333333333333 277.3333333333334 341.3333333333333 267.7333333333334 341.3333333333333 256V42.6666666666667C341.3333333333333 30.9333333333333 350.9333333333333 21.3333333333334 362.6666666666667 21.3333333333334H490.6666666666666C502.4 21.3333333333334 512 30.9333333333333 512 42.6666666666667V256C512 267.7333333333334 502.4 277.3333333333334 490.6666666666666 277.3333333333334M85.3333333333333 320H469.3333333333333V362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V85.3333333333334H0V21.3333333333334H298.6666666666667V85.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="cellphone-link-off" + unicode="&#xF122;" + horiz-adv-x="512" d=" M490.6666666666666 277.3333333333334H362.6666666666667C350.9333333333333 277.3333333333334 341.3333333333333 267.7333333333334 341.3333333333333 256V166.8266666666667L384 124.16V234.6666666666667H469.3333333333333V85.3333333333334H422.8266666666667L486.8266666666667 21.3333333333334H490.6666666666666C502.4 21.3333333333334 512 30.9333333333333 512 42.6666666666667V256C512 267.7333333333334 502.4 277.3333333333334 490.6666666666666 277.3333333333334M85.3333333333333 314.24L314.24 85.3333333333334H85.3333333333333V314.24M40.96 412.8L13.8666666666667 385.7066666666667L52.6933333333333 346.88C46.5066666666667 339.6266666666667 42.6666666666667 330.6666666666667 42.6666666666667 320V85.3333333333334H0V21.3333333333334H378.24L428.3733333333334 -28.8L455.4666666666667 -1.7066666666667L82.9866666666667 370.7733333333333L40.96 412.8M469.3333333333333 320V362.6666666666667H145.4933333333334L188.16 320H469.3333333333333z" /> + <glyph glyph-name="cellphone-settings" + unicode="&#xF123;" + horiz-adv-x="512" d=" M341.3333333333333 106.6666666666667H170.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 448H170.6666666666667C147.2 448 128 428.8 128 405.3333333333333V64C128 40.5333333333333 147.2 21.3333333333334 170.6666666666667 21.3333333333334H341.3333333333333C364.8 21.3333333333334 384 40.5333333333333 384 64V405.3333333333333C384 428.8 364.8 448 341.3333333333333 448M320 -64H362.6666666666667V-21.3333333333333H320M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="certificate" + unicode="&#xF124;" + horiz-adv-x="512" d=" M85.3333333333333 384C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V128C42.6666666666667 104.5333333333333 61.8666666666667 85.3333333333334 85.3333333333333 85.3333333333334H256V-21.3333333333333L320 42.6666666666667L384 -21.3333333333333V85.3333333333334H426.6666666666667C450.1333333333334 85.3333333333334 469.3333333333333 104.5333333333333 469.3333333333333 128V341.3333333333334C469.3333333333333 364.8 450.1333333333334 384 426.6666666666667 384H85.3333333333333M256 341.3333333333334L320 298.6666666666667L384 341.3333333333334V266.6666666666667L448 234.6666666666667L384 202.6666666666667V128L320 170.6666666666667L256 128V202.6666666666667L192 234.6666666666667L256 266.6666666666667V341.3333333333334M85.3333333333333 341.3333333333334H192V298.6666666666667H85.3333333333333V341.3333333333334M85.3333333333333 256H149.3333333333333V213.3333333333334H85.3333333333333V256M85.3333333333333 170.6666666666667H192V128H85.3333333333333V170.6666666666667z" /> + <glyph glyph-name="chair-school" + unicode="&#xF125;" + horiz-adv-x="512" d=" M469.3333333333333 341.3333333333334V298.6666666666667H362.6666666666667L288.64 192H341.3333333333333V149.3333333333334H308.48L387.6266666666667 -21.3333333333333H340.6933333333334L320.8533333333334 21.3333333333334H136.1066666666667L114.1333333333333 -21.3333333333333H66.1333333333333L154.24 149.3333333333334H149.3333333333333C139.7333333333333 149.3333333333334 131.6266666666667 155.7333333333334 128.8533333333333 164.2666666666667L61.2266666666667 366.0800000000001L81.4933333333333 373.3333333333334C92.5866666666667 376.7466666666667 104.7466666666667 370.56 108.3733333333333 359.4666666666667L164.6933333333333 192H258.1333333333334L332.16 298.6666666666667H256V341.3333333333334H469.3333333333333M202.6666666666667 149.3333333333334L158.2933333333333 64H301.0133333333333L261.5466666666666 149.3333333333334H202.6666666666667z" /> + <glyph glyph-name="chart-arc" + unicode="&#xF126;" + horiz-adv-x="512" d=" M345.1733333333333 29.8666666666667L302.2933333333333 104.1066666666667C323.2 119.4666666666667 337.7066666666667 143.36 340.6933333333334 170.6666666666667H426.6666666666667C423.04 111.7866666666667 391.4666666666667 60.5866666666667 345.1733333333333 29.8666666666667M277.3333333333333 298.0266666666667V384C369.0666666666667 378.4533333333334 442.4533333333334 305.0666666666667 448 213.3333333333334H362.0266666666667C357.12 257.92 321.92 293.12 277.3333333333333 298.0266666666667M149.3333333333333 181.3333333333334C149.3333333333333 167.68 152.1066666666667 154.6666666666667 157.44 142.9333333333333L83.2 100.0533333333334C70.8266666666667 124.5866666666667 64 152.1066666666667 64 181.3333333333334C64 277.9733333333334 139.52 356.9066666666667 234.6666666666667 362.6666666666667V276.6933333333334C186.6666666666667 271.36 149.3333333333333 230.8266666666667 149.3333333333333 181.3333333333334M245.3333333333333 0C181.9733333333333 0 126.2933333333333 32 93.8666666666667 81.4933333333333L168.1066666666667 124.3733333333333C185.6 100.6933333333333 213.3333333333333 85.3333333333334 245.3333333333333 85.3333333333334C258.9866666666667 85.3333333333334 272 88.1066666666667 283.7333333333334 93.44L326.6133333333334 19.2C302.08 6.8266666666667 274.56 0 245.3333333333333 0z" /> + <glyph glyph-name="chart-areaspline" + unicode="&#xF127;" + horiz-adv-x="512" d=" M372.2666666666667 124.16L469.3333333333333 292.0533333333334V0H42.6666666666667V384H85.3333333333333V116.48L202.6666666666667 320L341.3333333333333 239.36L431.7866666666667 395.7333333333334L468.6933333333334 374.4000000000001L357.12 181.3333333333334L218.2400000000001 261.3333333333334L91.9466666666667 42.6666666666667H140.16L233.8133333333333 203.9466666666667L372.2666666666667 124.16z" /> + <glyph glyph-name="chart-bar" + unicode="&#xF128;" + horiz-adv-x="512" d=" M469.3333333333333 0H42.6666666666667V384H85.3333333333333V42.6666666666667H128V234.6666666666667H213.3333333333333V42.6666666666667H256V320H341.3333333333333V42.6666666666667H384V149.3333333333334H469.3333333333333V0z" /> + <glyph glyph-name="chart-bubble" + unicode="&#xF5E3;" + horiz-adv-x="512" d=" M153.6 209.0666666666667C191.36 209.0666666666667 221.8666666666667 178.5600000000001 221.8666666666667 140.8000000000001C221.8666666666667 103.0400000000001 191.36 72.5333333333334 153.6 72.5333333333334C115.84 72.5333333333334 85.3333333333333 103.0400000000001 85.3333333333333 140.8000000000001C85.3333333333333 178.5600000000001 115.84 209.0666666666667 153.6 209.0666666666667M315.7333333333334 106.6666666666667C339.2 106.6666666666667 358.4 87.4666666666667 358.4 64S339.2 21.3333333333334 315.7333333333334 21.3333333333334S273.0666666666667 40.5333333333333 273.0666666666667 64S292.2666666666667 106.6666666666667 315.7333333333334 106.6666666666667M324.2666666666667 362.6666666666667C380.8 362.6666666666667 426.6666666666667 316.8 426.6666666666667 260.2666666666667S380.8 157.8666666666667 324.2666666666667 157.8666666666667S221.8666666666666 203.7333333333333 221.8666666666666 260.2666666666667S267.7333333333334 362.6666666666667 324.2666666666667 362.6666666666667z" /> + <glyph glyph-name="chart-gantt" + unicode="&#xF66C;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334H213.3333333333333V405.3333333333333H256V-21.3333333333333H213.3333333333333V64H128V128H213.3333333333333V170.6666666666667H85.3333333333333V234.6666666666667H213.3333333333333V277.3333333333334H42.6666666666667V341.3333333333334M298.6666666666667 341.3333333333334H362.6666666666667V277.3333333333334H298.6666666666667V341.3333333333334M298.6666666666667 234.6666666666667H405.3333333333333V170.6666666666667H298.6666666666667V234.6666666666667M298.6666666666667 128H469.3333333333333V64H298.6666666666667V128z" /> + <glyph glyph-name="chart-histogram" + unicode="&#xF129;" + horiz-adv-x="512" d=" M64 384H106.6666666666667V170.6666666666667H192V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667V128H448V0H64V384z" /> + <glyph glyph-name="chart-line" + unicode="&#xF12A;" + horiz-adv-x="512" d=" M341.3333333333333 196.6933333333334L431.7866666666667 353.0666666666667L468.6933333333334 331.7333333333334L357.12 138.6666666666667L218.2400000000001 218.6666666666667L116.48 42.6666666666667H469.3333333333333V0H42.6666666666667V384H85.3333333333333V73.8133333333334L202.6666666666667 277.3333333333334L341.3333333333333 196.6933333333334z" /> + <glyph glyph-name="chart-pie" + unicode="&#xF12B;" + horiz-adv-x="512" d=" M448 213.3333333333334H277.3333333333333V384C371.6266666666667 384 448 307.6266666666667 448 213.3333333333334M405.3333333333333 170.6666666666667C405.3333333333333 111.36 375.04 59.0933333333334 329.1733333333333 28.3733333333333L247.04 170.6666666666667H405.3333333333333M234.6666666666667 0C175.36 0 123.0933333333333 30.2933333333334 92.3733333333333 76.16L230.8266666666667 156.16L310.6133333333334 17.7066666666667C288 6.4 261.9733333333334 0 234.6666666666667 0M64 170.6666666666667C64 264.9600000000001 140.3733333333333 341.3333333333334 234.6666666666667 341.3333333333334V183.04L81.7066666666667 94.72C70.4 117.3333333333334 64 143.36 64 170.6666666666667z" /> + <glyph glyph-name="chart-scatterplot-hexbin" + unicode="&#xF66D;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H85.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M298.6666666666667 138.6666666666667L256 64H169.3866666666667L126.2933333333333 138.6666666666667L169.3866666666667 213.3333333333334H256L298.6666666666667 138.6666666666667M300.3733333333334 309.3333333333334L257.28 234.6666666666667H170.6666666666667L128 309.3333333333334L170.6666666666667 384H257.28L300.3733333333333 309.3333333333334M453.3333333333333 224L410.24 149.3333333333334H324.0533333333334L280.9600000000001 224L324.0533333333333 298.6666666666667H410.24L453.3333333333333 224z" /> + <glyph glyph-name="chart-timeline" + unicode="&#xF66E;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H85.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M149.3333333333333 234.6666666666667H362.6666666666667V170.6666666666667H149.3333333333333V234.6666666666667M234.6666666666667 128H448V64H234.6666666666667V128M128 362.6666666666667H469.3333333333333V277.3333333333334H426.6666666666667V320H170.6666666666667V277.3333333333334H128V362.6666666666667z" /> + <glyph glyph-name="check" + unicode="&#xF12C;" + horiz-adv-x="512" d=" M448 298.6666666666667L192 42.6666666666667L74.6666666666667 160L104.7466666666667 190.0800000000001L192 103.04L417.92 328.7466666666667L448 298.6666666666667z" /> + <glyph glyph-name="check-all" + unicode="&#xF12D;" + horiz-adv-x="512" d=" M8.7466666666667 161.92L128 42.6666666666667L158.08 72.96L39.04 192M474.4533333333334 328.9600000000001L248.7466666666667 103.04L160 192L129.4933333333334 161.92L248.7466666666667 42.6666666666667L504.7466666666667 298.6666666666667M384 298.6666666666667L353.92 328.9600000000001L218.4533333333333 193.4933333333334L248.7466666666667 163.4133333333334L384 298.6666666666667z" /> + <glyph glyph-name="check-circle" + unicode="&#xF5E0;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M234.6666666666667 96L384 245.3333333333334L353.92 275.4133333333334L234.6666666666667 156.3733333333333L168.7466666666667 222.08L138.6666666666667 192L234.6666666666667 96z" /> + <glyph glyph-name="check-circle-outline" + unicode="&#xF5E1;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667M234.6666666666667 96L138.6666666666667 192L168.7466666666667 222.08L234.6666666666667 156.3733333333333L353.92 275.4133333333334L384 245.3333333333334L234.6666666666667 96z" /> + <glyph glyph-name="checkbox-blank" + unicode="&#xF12E;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="checkbox-blank-circle" + unicode="&#xF12F;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-blank-circle-outline" + unicode="&#xF130;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-blank-outline" + unicode="&#xF131;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M405.3333333333333 341.3333333333334V42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333z" /> + <glyph glyph-name="checkbox-marked" + unicode="&#xF132;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L106.6666666666667 192L136.7466666666667 222.2933333333334L213.3333333333333 145.7066666666667L375.2533333333334 307.6266666666667L405.3333333333333 277.3333333333334M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="checkbox-marked-circle" + unicode="&#xF133;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L106.6666666666667 192L136.7466666666667 222.2933333333334L213.3333333333333 145.7066666666667L375.2533333333334 307.6266666666667L405.3333333333333 277.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-marked-circle-outline" + unicode="&#xF134;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667C272.2133333333333 362.6666666666667 288 360.32 302.9333333333333 356.0533333333334L336.4266666666666 389.5466666666667C311.68 399.7866666666667 284.5866666666667 405.3333333333333 256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192M168.7466666666667 232.96L138.6666666666667 202.6666666666667L234.6666666666667 106.6666666666667L448 320L417.92 350.2933333333334L234.6666666666667 167.04L168.7466666666667 232.96z" /> + <glyph glyph-name="checkbox-marked-outline" + unicode="&#xF135;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H320V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V213.3333333333334H405.3333333333333M168.7466666666667 232.96L138.6666666666667 202.6666666666667L234.6666666666667 106.6666666666667L448 320L417.92 350.2933333333334L234.6666666666667 167.04L168.7466666666667 232.96z" /> + <glyph glyph-name="checkbox-multiple-blank" + unicode="&#xF136;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkbox-multiple-blank-circle" + unicode="&#xF63B;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-blank-circle-outline" + unicode="&#xF63C;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M298.6666666666667 362.6666666666667C369.4933333333334 362.6666666666667 426.6666666666667 305.2800000000001 426.6666666666667 234.6666666666667C426.6666666666667 163.84 369.4933333333334 106.6666666666667 298.6666666666667 106.6666666666667C228.0533333333333 106.6666666666667 170.6666666666667 164.0533333333334 170.6666666666667 234.6666666666667S228.0533333333333 362.6666666666667 298.6666666666667 362.6666666666667M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-blank-outline" + unicode="&#xF137;" + horiz-adv-x="512" d=" M426.6666666666667 106.6666666666667V362.6666666666667H170.6666666666667V106.6666666666667H426.6666666666667M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkbox-multiple-marked" + unicode="&#xF138;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333M277.3333333333333 149.3333333333334L426.6666666666667 298.6666666666667L396.5866666666667 328.7466666666667L277.3333333333333 209.7066666666667L211.4133333333333 275.4133333333334L181.3333333333333 245.3333333333334L277.3333333333333 149.3333333333334z" /> + <glyph glyph-name="checkbox-multiple-marked-circle" + unicode="&#xF63D;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001M385.92 318.2933333333334L416 288L277.3333333333333 149.3333333333334L196.48 230.1866666666667L226.7733333333334 260.48L277.3333333333333 209.7066666666667" /> + <glyph glyph-name="checkbox-multiple-marked-circle-outline" + unicode="&#xF63E;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667H426.6666666666667C426.6666666666667 163.84 369.4933333333334 106.6666666666667 298.6666666666667 106.6666666666667C228.0533333333333 106.6666666666667 170.6666666666667 164.0533333333334 170.6666666666667 234.6666666666667S228.0533333333333 362.6666666666667 298.6666666666667 362.6666666666667C307.84 362.6666666666667 317.0133333333333 361.6 325.76 359.68L360.1066666666667 393.8133333333334C340.48 401.4933333333334 320 405.3333333333333 298.6666666666667 405.3333333333333M439.2533333333334 371.6266666666667L298.6666666666667 231.04L247.8933333333334 281.8133333333334L217.8133333333333 251.52L298.6666666666667 170.6666666666667L469.3333333333333 341.3333333333334M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-marked-outline" + unicode="&#xF139;" + horiz-adv-x="512" d=" M426.6666666666667 106.6666666666667V234.6666666666667H469.3333333333333V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H341.3333333333333V362.6666666666667H170.6666666666667V106.6666666666667H426.6666666666667M232.7466666666667 296.9600000000001L298.6666666666667 231.04L439.2533333333334 371.6266666666667L469.3333333333333 341.3333333333334L298.6666666666667 170.6666666666667L202.6666666666667 266.6666666666667L232.7466666666667 296.9600000000001M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkerboard" + unicode="&#xF13A;" + horiz-adv-x="512" d=" M64 384H448V0H64V384M106.6666666666667 341.3333333333334V192H256V42.6666666666667H405.3333333333333V192H256V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="chemical-weapon" + unicode="&#xF13B;" + horiz-adv-x="512" d=" M234.6666666666667 280.9600000000001C209.7066666666667 289.7066666666667 192 313.6 192 341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 313.3866666666667 302.08 289.7066666666667 277.3333333333333 280.9600000000001V221.0133333333333C270.5066666666667 222.9333333333333 263.4666666666667 224 256 224S241.4933333333334 222.9333333333333 234.6666666666667 221.0133333333333V280.9600000000001M390.4 -2.1333333333333C366.08 11.7333333333333 354.56 38.8266666666667 359.2533333333334 64.8533333333334L307.2 94.9333333333333C317.44 104.7466666666667 325.12 117.3333333333334 328.5333333333333 131.84L380.5866666666667 101.76C400.64 119.04 430.08 122.4533333333334 454.1866666666666 108.5866666666667C484.9066666666666 90.8800000000001 495.36 51.84 477.6533333333333 21.3333333333334C459.9466666666667 -9.3866666666667 420.9066666666667 -19.84 390.4 -2.1333333333333M57.6 108.8C81.7066666666667 122.6666666666667 111.1466666666667 119.04 131.2 101.9733333333334L183.4666666666667 132.0533333333334C186.88 117.3333333333334 194.3466666666667 104.96 204.8 95.1466666666667L152.5333333333334 65.0666666666667C157.44 39.0400000000001 145.7066666666667 11.7333333333333 121.6 -2.1333333333333C90.88 -19.8399999999999 51.84 -9.3866666666666 34.1333333333334 21.3333333333334C16.4266666666667 51.8400000000001 26.88 91.0933333333334 57.6 108.8000000000001M298.6666666666667 149.3333333333334C298.6666666666667 125.8666666666667 279.4666666666667 106.6666666666667 256 106.6666666666667C232.32 106.6666666666667 213.3333333333333 125.8666666666667 213.3333333333333 149.3333333333334S232.5333333333334 192 256 192C279.68 192 298.6666666666667 172.8 298.6666666666667 149.3333333333334M362.6666666666667 149.3333333333334L362.0266666666667 137.1733333333334L330.6666666666667 155.52C328.5333333333333 178.3466666666667 316.3733333333333 198.1866666666667 298.6666666666667 210.7733333333333V247.2533333333334C336.4266666666666 230.6133333333334 362.6666666666667 193.0666666666667 362.6666666666667 149.3333333333334M319.36 63.36C301.6533333333333 50.3466666666667 279.68 42.6666666666667 256 42.6666666666667S210.3466666666666 50.3466666666667 192.64 64L224 81.7066666666667C233.8133333333334 77.2266666666666 244.6933333333334 74.6666666666667 256 74.6666666666667S277.9733333333333 77.2266666666667 288 81.7066666666667L319.36 63.36M149.9733333333333 137.3866666666667L149.3333333333333 149.3333333333334C149.3333333333333 193.0666666666667 175.5733333333333 230.6133333333334 213.3333333333333 247.04V210.56C195.6266666666667 198.1866666666667 183.4666666666667 178.3466666666667 181.3333333333333 155.7333333333334L149.9733333333333 137.3866666666667z" /> + <glyph glyph-name="chevron-double-down" + unicode="&#xF13C;" + horiz-adv-x="512" d=" M353.92 328.7466666666667L384 298.6666666666667L256 170.6666666666667L128 298.6666666666667L158.08 328.7466666666667L256 231.04L353.92 328.7466666666667M353.92 200.7466666666667L384 170.6666666666667L256 42.6666666666667L128 170.6666666666667L158.08 200.7466666666667L256 103.04L353.92 200.7466666666667z" /> + <glyph glyph-name="chevron-double-left" + unicode="&#xF13D;" + horiz-adv-x="512" d=" M392.7466666666667 289.92L362.6666666666667 320L234.6666666666667 192L362.6666666666667 64L392.7466666666667 94.08L295.04 192L392.7466666666667 289.92M264.7466666666667 289.92L234.6666666666667 320L106.6666666666667 192L234.6666666666667 64L264.7466666666667 94.08L167.04 192L264.7466666666667 289.92z" /> + <glyph glyph-name="chevron-double-right" + unicode="&#xF13E;" + horiz-adv-x="512" d=" M119.2533333333333 289.92L149.3333333333333 320L277.3333333333333 192L149.3333333333333 64L119.2533333333333 94.08L216.96 192L119.2533333333333 289.92M247.2533333333334 289.92L277.3333333333333 320L405.3333333333333 192L277.3333333333333 64L247.2533333333334 94.08L344.9600000000001 192L247.2533333333334 289.92z" /> + <glyph glyph-name="chevron-double-up" + unicode="&#xF13F;" + horiz-adv-x="512" d=" M158.08 55.2533333333333L128 85.3333333333334L256 213.3333333333334L384 85.3333333333334L353.92 55.2533333333333L256 152.96L158.08 55.2533333333333M158.08 183.2533333333333L128 213.3333333333334L256 341.3333333333334L384 213.3333333333334L353.92 183.2533333333333L256 280.9600000000001L158.08 183.2533333333333z" /> + <glyph glyph-name="chevron-down" + unicode="&#xF140;" + horiz-adv-x="512" d=" M158.08 264.9600000000001L256 167.04L353.92 264.9600000000001L384 234.6666666666667L256 106.6666666666667L128 234.6666666666667L158.08 264.9600000000001z" /> + <glyph glyph-name="chevron-left" + unicode="&#xF141;" + horiz-adv-x="512" d=" M328.7466666666667 94.2933333333334L231.04 192L328.7466666666667 289.92L298.6666666666667 320L170.6666666666667 192L298.6666666666667 64L328.7466666666667 94.2933333333334z" /> + <glyph glyph-name="chevron-right" + unicode="&#xF142;" + horiz-adv-x="512" d=" M183.2533333333333 94.2933333333334L280.96 192L183.2533333333333 289.92L213.3333333333333 320L341.3333333333333 192L213.3333333333333 64L183.2533333333333 94.2933333333334z" /> + <glyph glyph-name="chevron-up" + unicode="&#xF143;" + horiz-adv-x="512" d=" M158.08 119.2533333333333L256 216.96L353.92 119.2533333333333L384 149.3333333333334L256 277.3333333333334L128 149.3333333333334L158.08 119.2533333333333z" /> + <glyph glyph-name="chip" + unicode="&#xF61A;" + horiz-adv-x="512" d=" M128 362.6666666666667H384V341.3333333333334H448V298.6666666666667H384V256H448V213.3333333333334H384V170.6666666666667H448V128H384V85.3333333333334H448V42.6666666666667H384V21.3333333333334H128V42.6666666666667H64V85.3333333333334H128V128H64V170.6666666666667H128V213.3333333333334H64V256H128V298.6666666666667H64V341.3333333333334H128V362.6666666666667M234.6666666666667 128V64H256V128H234.6666666666667M277.3333333333333 128V64H298.6666666666667V128H277.3333333333333M320 128V64H341.3333333333333V128H320z" /> + <glyph glyph-name="church" + unicode="&#xF144;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333H277.3333333333333V362.6666666666667H320V320H277.3333333333333V247.4666666666667L469.3333333333333 170.6666666666667V128L426.6666666666667 145.0666666666667V-21.3333333333333H298.6666666666667V85.3333333333334C298.6666666666667 108.8 279.4666666666667 128 256 128S213.3333333333333 108.8 213.3333333333333 85.3333333333334V-21.3333333333333H85.3333333333333V145.0666666666667L42.6666666666667 128V170.6666666666667L234.6666666666667 247.4666666666667V320H192V362.6666666666667H234.6666666666667V405.3333333333333M128 21.3333333333334H170.6666666666667V128L149.3333333333333 149.3333333333334L128 128V21.3333333333334M341.3333333333333 21.3333333333334H384V128L362.6666666666667 149.3333333333334L341.3333333333333 128V21.3333333333334z" /> + <glyph glyph-name="cisco-webex" + unicode="&#xF145;" + horiz-adv-x="512" d=" M256 384C362.0266666666667 384 448 298.0266666666667 448 192S362.0266666666667 0 256 0S64 85.9733333333334 64 192S149.9733333333333 384 256 384M126.72 266.6666666666667C85.3333333333333 195.2 109.8666666666667 103.8933333333334 181.3333333333333 62.72C252.8 21.3333333333334 402.1333333333334 280.1066666666667 330.6666666666667 321.2800000000001C259.2 362.6666666666667 167.8933333333333 338.1333333333334 126.72 266.6666666666667z" /> + <glyph glyph-name="city" + unicode="&#xF146;" + horiz-adv-x="512" d=" M405.3333333333333 128H362.6666666666667V170.6666666666667H405.3333333333333M405.3333333333333 42.6666666666667H362.6666666666667V85.3333333333334H405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V341.3333333333334H277.3333333333333M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 128H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M149.3333333333333 213.3333333333334H106.6666666666667V256H149.3333333333333M149.3333333333333 128H106.6666666666667V170.6666666666667H149.3333333333333M149.3333333333333 42.6666666666667H106.6666666666667V85.3333333333334H149.3333333333333M320 213.3333333333334V341.3333333333334L256 405.3333333333333L192 341.3333333333334V298.6666666666667H64V0H448V213.3333333333334H320z" /> + <glyph glyph-name="clipboard" + unicode="&#xF147;" + horiz-adv-x="512" d=" M192 362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667S320 398.08 320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H192M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667S244.2666666666667 341.3333333333334 256 341.3333333333334S277.3333333333333 350.9333333333334 277.3333333333333 362.6666666666667S267.7333333333334 384 256 384z" /> + <glyph glyph-name="clipboard-account" + unicode="&#xF148;" + horiz-adv-x="512" d=" M384 42.6666666666667H128V72.5333333333333C128 115.2 213.3333333333333 138.6666666666666 256 138.6666666666666S384 115.2 384 72.5333333333333M256 298.6666666666667C291.4133333333333 298.6666666666667 320 270.0800000000001 320 234.6666666666667S291.4133333333333 170.6666666666667 256 170.6666666666667S192 199.2533333333333 192 234.6666666666667S220.5866666666667 298.6666666666667 256 298.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-alert" + unicode="&#xF149;" + horiz-adv-x="512" d=" M256 341.3333333333334C244.2666666666667 341.3333333333334 234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384S277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334M277.3333333333333 149.3333333333334H234.6666666666667V277.3333333333334H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-arrow-down" + unicode="&#xF14A;" + horiz-adv-x="512" d=" M256 64L149.3333333333333 170.6666666666667H213.3333333333333V256H298.6666666666667V170.6666666666667H362.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-arrow-left" + unicode="&#xF14B;" + horiz-adv-x="512" d=" M341.3333333333333 128H256V64L149.3333333333333 170.6666666666667L256 277.3333333333334V213.3333333333334H341.3333333333333M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-check" + unicode="&#xF14C;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L128 170.6666666666667L158.08 200.7466666666667L213.3333333333333 145.7066666666667L353.92 286.2933333333334L384 256M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-outline" + unicode="&#xF14D;" + horiz-adv-x="512" d=" M149.3333333333333 277.3333333333334V320H106.6666666666667V42.6666666666667H405.3333333333333V320H362.6666666666667V277.3333333333334H149.3333333333333M192 362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667S320 398.08 320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H192M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667S244.2666666666667 341.3333333333334 256 341.3333333333334S277.3333333333333 350.9333333333334 277.3333333333333 362.6666666666667S267.7333333333334 384 256 384z" /> + <glyph glyph-name="clipboard-text" + unicode="&#xF14E;" + horiz-adv-x="512" d=" M362.6666666666667 256H149.3333333333333V298.6666666666667H362.6666666666667M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M298.6666666666667 85.3333333333334H149.3333333333333V128H298.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clippy" + unicode="&#xF14F;" + horiz-adv-x="512" d=" M320 117.3333333333334C320 87.8933333333334 296.1066666666667 64 266.6666666666667 64S213.3333333333333 87.8933333333334 213.3333333333333 117.3333333333334V154.6666666666667C213.3333333333333 163.4133333333334 220.5866666666667 170.6666666666667 229.3333333333333 170.6666666666667S245.3333333333333 163.4133333333334 245.3333333333333 154.6666666666667V117.3333333333334C245.3333333333333 105.6 254.9333333333333 96 266.6666666666667 96S288 105.6 288 117.3333333333334V194.3466666666667C269.44 200.32 256 216.1066666666667 256 234.6666666666667C256 258.1333333333334 277.3333333333333 277.3333333333334 304 277.3333333333334S352 258.1333333333334 352 234.6666666666667C352 216.1066666666667 338.56 200.32 320 194.3466666666667V117.3333333333334M176 277.3333333333334C202.6666666666667 277.3333333333334 224 258.1333333333334 224 234.6666666666667C224 216.1066666666667 210.56 200.32 192 194.3466666666667V80C192 41.8133333333334 223.1466666666667 10.6666666666667 261.3333333333333 10.6666666666667S330.6666666666667 41.8133333333334 330.6666666666667 80V154.6666666666667C330.6666666666667 163.4133333333334 337.92 170.6666666666667 346.6666666666667 170.6666666666667S362.6666666666667 163.4133333333334 362.6666666666667 154.6666666666667V80C362.6666666666667 24.1066666666667 317.2266666666667 -21.3333333333333 261.3333333333333 -21.3333333333333S160 24.1066666666667 160 80V194.3466666666667C141.44 200.32 128 216.1066666666667 128 234.6666666666667C128 258.1333333333334 149.3333333333333 277.3333333333334 176 277.3333333333334M214.6133333333334 317.2266666666667L205.44 286.0800000000001C196.6933333333333 290.7733333333333 186.6666666666667 293.3333333333334 176 293.3333333333334C156.5866666666667 293.3333333333334 139.3066666666667 284.8 128.64 271.5733333333334L103.04 290.7733333333334C116.48 307.8400000000001 136.7466666666667 320 160 324.0533333333334V325.3333333333334C160 369.4933333333334 195.84 405.3333333333333 240 405.3333333333333C284.16 405.3333333333333 320 369.4933333333334 320 325.3333333333334V324.0533333333334C343.2533333333334 320 363.52 307.8400000000001 376.9600000000001 290.7733333333334L351.36 271.5733333333334C340.6933333333334 284.8 323.4133333333334 293.3333333333334 304 293.3333333333334C293.3333333333334 293.3333333333334 283.3066666666667 290.7733333333333 274.56 286.0800000000001L265.3866666666667 317.2266666666667C272.4266666666667 320 280.1066666666667 322.7733333333333 288 324.0533333333334V325.3333333333334C288 352 266.6666666666667 373.3333333333334 240.0000000000001 373.3333333333334S192 352 192 325.3333333333334V324.0533333333334C199.8933333333333 322.7733333333334 207.5733333333333 320 214.6133333333334 317.2266666666667M304 250.6666666666667C292.2666666666667 250.6666666666667 282.6666666666667 243.4133333333334 282.6666666666667 234.6666666666667S292.2666666666667 218.6666666666667 304 218.6666666666667S325.3333333333333 225.92 325.3333333333333 234.6666666666667S315.7333333333334 250.6666666666667 304 250.6666666666667M176 250.6666666666667C164.2666666666667 250.6666666666667 154.6666666666667 243.4133333333334 154.6666666666667 234.6666666666667S164.2666666666667 218.6666666666667 176 218.6666666666667S197.3333333333333 225.92 197.3333333333333 234.6666666666667S187.7333333333334 250.6666666666667 176 250.6666666666667z" /> + <glyph glyph-name="clock" + unicode="&#xF150;" + horiz-adv-x="512" d=" M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M266.6666666666667 298.6666666666667V186.6666666666667L362.6666666666667 129.7066666666667L346.6666666666667 103.4666666666667L234.6666666666667 170.6666666666667V298.6666666666667H266.6666666666667z" /> + <glyph glyph-name="clock-alert" + unicode="&#xF5CE;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333C304 -21.3333333333333 348.3733333333333 -5.1199999999999 384 21.3333333333334V79.36C352.64 43.9466666666667 306.9866666666667 21.3333333333334 256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667C327.68 362.6666666666667 388.9066666666667 318.5066666666667 414.08 256H459.52C432.4266666666666 342.6133333333334 352 405.3333333333333 256 405.3333333333333M234.6666666666667 298.6666666666667V170.6666666666667L346.6666666666667 103.4666666666667L362.6666666666667 129.7066666666667L266.6666666666667 186.6666666666668V298.6666666666667H234.6666666666667M426.6666666666667 213.3333333333334V64H469.3333333333333V213.3333333333334H426.6666666666667M426.6666666666667 21.3333333333334V-21.3333333333333H469.3333333333333V21.3333333333334H426.6666666666667z" /> + <glyph glyph-name="clock-end" + unicode="&#xF151;" + horiz-adv-x="512" d=" M256 426.6666666666667C173.6533333333333 426.6666666666667 106.6666666666667 359.68 106.6666666666667 277.3333333333334C106.6666666666667 194.7733333333333 173.44 128 256 128C338.3466666666667 128 405.3333333333333 194.7733333333333 405.3333333333333 277.3333333333334C405.3333333333333 359.68 338.3466666666667 426.6666666666667 256 426.6666666666667M256 380.8C312.96 380.8 359.4666666666667 334.5066666666667 359.4666666666667 277.3333333333334C359.4666666666667 220.16 312.9600000000001 173.8666666666667 256 173.8666666666667C198.8266666666667 173.8666666666667 152.5333333333334 220.16 152.5333333333334 277.3333333333334C152.5333333333334 334.5066666666667 198.8266666666667 380.8 256 380.8M234.6666666666667 341.3333333333334V262.6133333333334L302.72 223.36L318.72 251.0933333333334L266.6666666666667 281.1733333333334V341.3333333333334M320 106.6666666666667V42.6666666666667H64V0H320V-64L405.3333333333333 21.3333333333334M405.3333333333333 21.3333333333334V-64H448V106.6666666666667H405.3333333333333" /> + <glyph glyph-name="clock-fast" + unicode="&#xF152;" + horiz-adv-x="512" d=" M320 362.6666666666667C414.2933333333334 362.6666666666667 490.6666666666666 286.2933333333334 490.6666666666666 192S414.2933333333334 21.3333333333334 320 21.3333333333334S149.3333333333333 97.7066666666667 149.3333333333333 192S225.7066666666667 362.6666666666667 320 362.6666666666667M320 320C249.3866666666667 320 192 262.6133333333334 192 192S249.3866666666667 64 320 64S448 121.3866666666667 448 192S390.6133333333333 320 320 320M298.6666666666667 277.3333333333334H330.6666666666667V196.6933333333334L380.3733333333333 146.9866666666667L357.76 124.3733333333333L298.6666666666667 183.4666666666667V277.3333333333334M42.6666666666667 64C30.9333333333333 64 21.3333333333333 73.6 21.3333333333333 85.3333333333334S30.9333333333333 106.6666666666667 42.6666666666667 106.6666666666667H124.3733333333333C130.9866666666667 91.52 139.52 77.2266666666667 149.3333333333333 64H42.6666666666667M64 170.6666666666667C52.2666666666667 170.6666666666667 42.6666666666667 180.2666666666667 42.6666666666667 192S52.2666666666667 213.3333333333334 64 213.3333333333334H107.7333333333333L106.6666666666667 192L107.7333333333333 170.6666666666667H64M85.3333333333333 277.3333333333334C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667S73.6 320 85.3333333333333 320H149.3333333333333C139.52 306.7733333333333 130.9866666666667 292.48 124.3733333333333 277.3333333333334H85.3333333333333z" /> + <glyph glyph-name="clock-in" + unicode="&#xF153;" + horiz-adv-x="512" d=" M47.1466666666667 431.1466666666667L16.8533333333333 400.8533333333334L102.4 315.52L64 277.3333333333334H170.6666666666667V384L132.48 345.6M256 277.3333333333334C173.6533333333333 277.3333333333334 106.6666666666667 210.56 106.6666666666667 128S173.44 -21.3333333333333 256 -21.3333333333333C338.3466666666667 -21.3333333333333 405.3333333333333 45.44 405.3333333333333 128S338.56 277.3333333333334 256 277.3333333333334M256 231.4666666666667C312.96 231.4666666666667 359.4666666666667 185.1733333333334 359.4666666666667 128C359.4666666666667 70.8266666666667 313.1733333333334 24.5333333333333 256 24.5333333333333C198.8266666666667 24.5333333333333 152.5333333333334 70.8266666666667 152.5333333333334 128C152.5333333333334 185.1733333333333 198.8266666666667 231.4666666666667 256 231.4666666666667M234.6666666666667 192V113.28L302.72 74.0266666666666L318.72 101.76L266.6666666666667 131.84V192" /> + <glyph glyph-name="clock-out" + unicode="&#xF154;" + horiz-adv-x="512" d=" M384 426.6666666666667L422.4 388.48L336.8533333333334 303.1466666666667L367.1466666666667 272.8533333333334L452.48 358.1866666666667L490.6666666666666 320V426.6666666666667M256 277.3333333333334C173.6533333333333 277.3333333333334 106.6666666666667 210.56 106.6666666666667 128S173.44 -21.3333333333333 256 -21.3333333333333C338.3466666666667 -21.3333333333333 405.3333333333333 45.44 405.3333333333333 128S338.56 277.3333333333334 256 277.3333333333334M256 231.4666666666667C312.96 231.4666666666667 359.4666666666667 185.1733333333334 359.4666666666667 128C359.4666666666667 70.8266666666667 313.1733333333334 24.5333333333333 256 24.5333333333333C198.8266666666667 24.5333333333333 152.5333333333334 70.8266666666667 152.5333333333334 128C152.5333333333334 185.1733333333333 198.8266666666667 231.4666666666667 256 231.4666666666667M234.6666666666667 192V113.28L302.72 74.0266666666666L318.72 101.76L266.6666666666667 131.84V192" /> + <glyph glyph-name="clock-start" + unicode="&#xF155;" + horiz-adv-x="512" d=" M256 426.6666666666667C173.6533333333333 426.6666666666667 106.6666666666667 359.68 106.6666666666667 277.3333333333334C106.6666666666667 194.7733333333333 173.44 128 256 128C338.3466666666667 128 405.3333333333333 194.7733333333333 405.3333333333333 277.3333333333334C405.3333333333333 359.68 338.3466666666667 426.6666666666667 256 426.6666666666667M256 380.8C312.96 380.8 359.4666666666667 334.5066666666667 359.4666666666667 277.3333333333334C359.4666666666667 220.16 312.9600000000001 173.8666666666667 256 173.8666666666667C198.8266666666667 173.8666666666667 152.5333333333334 220.16 152.5333333333334 277.3333333333334C152.5333333333334 334.5066666666667 198.8266666666667 380.8 256 380.8M234.6666666666667 341.3333333333334V262.6133333333334L302.72 223.36L318.72 251.0933333333334L266.6666666666667 281.1733333333334V341.3333333333334M85.3333333333333 106.6666666666667V-64H128V0H384V-64L469.3333333333333 21.3333333333334L384 106.6666666666667V42.6666666666667H128V106.6666666666667" /> + <glyph glyph-name="close" + unicode="&#xF156;" + horiz-adv-x="512" d=" M405.3333333333333 311.2533333333334L375.2533333333334 341.3333333333334L256 222.08L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.7466666666667L136.7466666666667 42.6666666666667L256 161.92L375.2533333333334 42.6666666666667L405.3333333333333 72.7466666666667L286.08 192L405.3333333333333 311.2533333333334z" /> + <glyph glyph-name="close-box" + unicode="&#xF157;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M332.8 85.3333333333334L256 162.1333333333333L179.2 85.3333333333334L149.3333333333333 115.2000000000001L226.1333333333334 192L149.3333333333333 268.8L179.2 298.6666666666667L256 221.8666666666667L332.8 298.6666666666667L362.6666666666667 268.8L285.8666666666667 192L362.6666666666667 115.2000000000001L332.8 85.3333333333334z" /> + <glyph glyph-name="close-box-outline" + unicode="&#xF158;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667M362.6666666666667 268.8L285.8666666666667 192L362.6666666666667 115.2000000000001L332.8 85.3333333333334L256 162.1333333333333L179.2 85.3333333333334L149.3333333333333 115.2000000000001L226.1333333333334 192L149.3333333333333 268.8L179.2 298.6666666666667L256 221.8666666666667L332.8 298.6666666666667L362.6666666666667 268.8z" /> + <glyph glyph-name="close-circle" + unicode="&#xF159;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.9733333333334 405.3333333333333 469.3333333333333 309.9733333333334 469.3333333333333 192S373.9733333333334 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.0266666666666 42.6666666666667 192S138.0266666666667 405.3333333333333 256 405.3333333333333M332.5866666666667 298.6666666666667L256 222.08L179.4133333333333 298.6666666666667L149.3333333333333 268.5866666666667L225.92 192L149.3333333333333 115.4133333333334L179.4133333333333 85.3333333333334L256 161.92L332.5866666666667 85.3333333333334L362.6666666666667 115.4133333333334L286.08 192L362.6666666666667 268.5866666666667L332.5866666666667 298.6666666666667z" /> + <glyph glyph-name="close-circle-outline" + unicode="&#xF15A;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.9733333333334 42.6666666666667 192S138.0266666666667 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.0266666666666 469.3333333333333 192S373.9733333333334 405.3333333333333 256 405.3333333333333M311.2533333333334 277.3333333333334L256 222.08L200.7466666666667 277.3333333333334L170.6666666666667 247.2533333333334L225.92 192L170.6666666666667 136.7466666666667L200.7466666666667 106.6666666666667L256 161.92L311.2533333333334 106.6666666666667L341.3333333333333 136.7466666666667L286.08 192L341.3333333333333 247.2533333333334L311.2533333333334 277.3333333333334z" /> + <glyph glyph-name="close-network" + unicode="&#xF15B;" + horiz-adv-x="512" d=" M311.2533333333334 320L256 264.7466666666667L200.7466666666667 320L170.6666666666667 289.92L225.92 234.6666666666667L170.6666666666667 179.4133333333334L200.7466666666667 149.3333333333334L256 204.5866666666667L311.2533333333334 149.3333333333334L341.3333333333333 179.4133333333334L286.08 234.6666666666667L341.3333333333333 289.92L311.2533333333334 320M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="close-octagon" + unicode="&#xF15C;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334L335.5733333333333 384M179.4133333333333 298.6666666666667L256 222.08L332.5866666666667 298.6666666666667L362.6666666666667 268.5866666666667L286.08 192L362.6666666666667 115.4133333333334L332.5866666666667 85.3333333333334L256 161.92L179.4133333333333 85.3333333333334L149.3333333333333 115.4133333333334L225.92 192L149.3333333333333 268.5866666666667" /> + <glyph glyph-name="close-octagon-outline" + unicode="&#xF15D;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333C373.3333333333333 37.5466666666667 448 112.4266666666667 448 112.4266666666667V271.5733333333334L335.5733333333333 384M194.1333333333333 341.3333333333334H317.8666666666666L405.3333333333333 253.8666666666667V130.1333333333334L317.8666666666667 42.6666666666667H194.1333333333333L106.6666666666667 130.1333333333333V253.8666666666667M194.56 283.52L164.48 253.4400000000001L225.92 192L164.48 130.5600000000001L194.56 100.48L256 161.92L317.44 100.48L347.52 130.5600000000001L286.08 192L347.52 253.44L317.44 283.52L256 222.08" /> + <glyph glyph-name="closed-caption" + unicode="&#xF15E;" + horiz-adv-x="512" d=" M384 213.3333333333334H352V224H309.3333333333333V160H352V170.6666666666667H384V149.3333333333334C384 137.6 374.4 128 362.6666666666667 128H298.6666666666667C286.9333333333333 128 277.3333333333333 137.6 277.3333333333333 149.3333333333334V234.6666666666667C277.3333333333333 246.4000000000001 286.9333333333333 256 298.6666666666667 256H362.6666666666667C374.4 256 384 246.4000000000001 384 234.6666666666667M234.6666666666667 213.3333333333334H202.6666666666667V224H160V160H202.6666666666667V170.6666666666667H234.6666666666667V149.3333333333334C234.6666666666667 137.6 225.0666666666667 128 213.3333333333333 128H149.3333333333333C137.6 128 128 137.6 128 149.3333333333334V234.6666666666667C128 246.4000000000001 137.6 256 149.3333333333333 256H213.3333333333333C225.0666666666667 256 234.6666666666667 246.4000000000001 234.6666666666667 234.6666666666667M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.68 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.68 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="cloud" + unicode="&#xF15F;" + horiz-adv-x="512" d=" M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-check" + unicode="&#xF160;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L138.6666666666667 160L168.7466666666667 190.2933333333334L213.3333333333333 145.7066666666667L323.84 256L353.92 225.92M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-circle" + unicode="&#xF161;" + horiz-adv-x="512" d=" M352 106.6666666666667H170.6666666666667C135.2533333333333 106.6666666666667 106.6666666666667 135.2533333333333 106.6666666666667 170.6666666666667S135.2533333333333 234.6666666666667 170.6666666666667 234.6666666666667H173.6533333333333C183.04 271.36 216.1066666666667 298.6666666666667 256 298.6666666666667C303.1466666666667 298.6666666666667 341.3333333333333 260.48 341.3333333333333 213.3333333333334H352C381.44 213.3333333333334 405.3333333333333 189.44 405.3333333333333 160S381.44 106.6666666666667 352 106.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="cloud-download" + unicode="&#xF162;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667L256 64L149.3333333333333 170.6666666666667H213.3333333333333V256H298.6666666666667V170.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-outline" + unicode="&#xF163;" + horiz-adv-x="512" d=" M405.3333333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667H143.1466666666667C157.2266666666667 283.9466666666667 202.6666666666667 320 256 320C320.8533333333333 320 373.3333333333333 267.52 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128S440.7466666666667 64 405.3333333333333 64M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-outline-off" + unicode="&#xF164;" + horiz-adv-x="512" d=" M164.9066666666667 234.6666666666667L335.5733333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667M64 335.5733333333334L122.6666666666667 277.3333333333334C54.6133333333333 274.1333333333334 0 218.24 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H378.24L420.9066666666667 -21.3333333333333L448 5.76L91.0933333333333 362.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C224 362.6666666666667 195.2 353.4933333333334 170.6666666666667 337.7066666666667L201.6 306.56C217.8133333333333 315.0933333333334 236.3733333333334 320 256 320C320.8533333333333 320 373.3333333333333 267.52 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128C469.3333333333333 103.8933333333334 455.6799999999999 82.9866666666667 436.0533333333334 72.1066666666667L466.9866666666667 41.1733333333333C494.08 60.5866666666667 512 92.16 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-print" + unicode="&#xF165;" + horiz-adv-x="512" d=" M256 405.3333333333333C194.3466666666666 405.3333333333333 140.8 370.3466666666667 114.1333333333333 319.1466666666667C49.92 312.32 0 257.92 0 192C0 121.3866666666667 57.3866666666667 64 128 64V-21.3333333333333H384V64H405.3333333333333C464.2133333333333 64 512 111.7866666666667 512 170.6666666666667C512 226.9866666666667 468.2666666666667 272.6400000000001 412.8 276.48C398.2933333333334 350.0800000000001 333.6533333333333 405.3333333333333 256 405.3333333333333M170.6666666666667 170.6666666666667H341.3333333333333V21.3333333333334H170.6666666666667V170.6666666666667M192 149.3333333333334V128H320V149.3333333333334H192M192 106.6666666666667V85.3333333333334H320V106.6666666666667H192M192 64V42.6666666666667H320V64H192z" /> + <glyph glyph-name="cloud-print-outline" + unicode="&#xF166;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667C440.7466666666667 106.6666666666667 469.3333333333333 135.2533333333333 469.3333333333333 170.6666666666667S440.7466666666667 234.6666666666667 405.3333333333333 234.6666666666667H373.3333333333333V245.3333333333334C373.3333333333333 310.1866666666667 320.8533333333333 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 157.2266666666667 326.6133333333334 143.1466666666667 277.3333333333334H128C80.8533333333333 277.3333333333334 42.6666666666667 239.1466666666667 42.6666666666667 192S80.8533333333333 106.6666666666667 128 106.6666666666667V213.3333333333334H384V106.6666666666667H405.3333333333333M413.0133333333333 276.48C468.2666666666667 272.64 512 226.9866666666667 512 170.6666666666667C512 111.7866666666667 464.2133333333333 64 405.3333333333333 64H384V-21.3333333333333H128V64C57.3866666666667 64 0 121.3866666666667 0 192C0 257.92 49.92 312.32 114.1333333333333 319.1466666666667C140.8 370.3466666666667 194.3466666666666 405.3333333333333 256 405.3333333333333C333.6533333333333 405.3333333333333 398.2933333333334 349.8666666666667 413.0133333333333 276.48M170.6666666666667 170.6666666666667V21.3333333333334H341.3333333333333V170.6666666666667H170.6666666666667M192 64H320V42.6666666666667H192V64M320 85.3333333333334H192V106.6666666666667H320V85.3333333333334M192 149.3333333333334H320V128H192V149.3333333333334z" /> + <glyph glyph-name="cloud-sync" + unicode="&#xF63F;" + horiz-adv-x="512" d=" M256 362.6666666666667C333.6533333333333 362.6666666666667 398.2933333333334 307.4133333333334 412.8 233.8133333333334C468.2666666666667 229.9733333333334 512 184.3200000000001 512 128C512 69.1200000000001 464.2133333333333 21.3333333333334 405.3333333333333 21.3333333333334H128C57.3866666666667 21.3333333333334 0 78.72 0 149.3333333333334C0 215.2533333333333 49.92 269.6533333333334 114.1333333333333 276.48C140.8 327.68 194.3466666666666 362.6666666666667 256 362.6666666666667M160 241.2800000000001C129.28 202.6666666666667 132.2666666666667 148.0533333333334 166.8266666666667 113.4933333333334C184.7466666666667 96 209.28 85.3333333333334 234.6666666666667 85.3333333333334V45.6533333333334L295.04 105.8133333333334L234.6666666666667 166.1866666666667V128C220.5866666666667 128 206.9333333333333 133.5466666666667 196.9066666666667 143.5733333333334C178.9866666666667 161.4933333333334 176.2133333333333 189.6533333333334 190.2933333333333 210.7733333333334L160 241.2800000000001M195.6266666666667 256.6400000000001L226.56 225.7066666666667L256 196.48V234.6666666666667C270.08 234.6666666666667 283.7333333333334 229.12 293.76 219.0933333333333C311.68 201.1733333333334 314.4533333333333 173.0133333333333 300.3733333333334 151.8933333333333L330.6666666666667 121.3866666666667C361.3866666666667 160 358.4 214.6133333333333 323.84 249.1733333333334C305.92 266.6666666666667 281.3866666666667 277.3333333333334 256 277.3333333333334V317.0133333333333L195.6266666666667 256.64z" /> + <glyph glyph-name="cloud-upload" + unicode="&#xF167;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667V85.3333333333334H213.3333333333333V170.6666666666667H149.3333333333333L256 277.3333333333334L362.6666666666667 170.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="code-array" + unicode="&#xF168;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M128 320V64H213.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334H213.3333333333333V320H128M341.3333333333333 106.6666666666667H298.6666666666667V64H384V320H298.6666666666667V277.3333333333334H341.3333333333333V106.6666666666667z" /> + <glyph glyph-name="code-braces" + unicode="&#xF169;" + horiz-adv-x="512" d=" M170.6666666666667 384C147.2 384 128 364.8 128 341.3333333333334V256C128 232.5333333333334 108.8 213.3333333333334 85.3333333333333 213.3333333333334H64V170.6666666666667H85.3333333333333C108.8 170.6666666666667 128 151.4666666666667 128 128V42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H213.3333333333333V42.6666666666667H170.6666666666667V149.3333333333334C170.6666666666667 172.8 151.4666666666667 192 128 192C151.4666666666667 192 170.6666666666667 211.2 170.6666666666667 234.6666666666667V341.3333333333334H213.3333333333333V384M341.3333333333333 384C364.8 384 384 364.8 384 341.3333333333334V256C384 232.5333333333334 403.2 213.3333333333334 426.6666666666667 213.3333333333334H448V170.6666666666667H426.6666666666667C403.2 170.6666666666667 384 151.4666666666667 384 128V42.6666666666667C384 19.2 364.8 0 341.3333333333333 0H298.6666666666667V42.6666666666667H341.3333333333333V149.3333333333334C341.3333333333333 172.8 360.5333333333333 192 384 192C360.5333333333333 192 341.3333333333333 211.2 341.3333333333333 234.6666666666667V341.3333333333334H298.6666666666667V384H341.3333333333333z" /> + <glyph glyph-name="code-brackets" + unicode="&#xF16A;" + horiz-adv-x="512" d=" M320 362.6666666666667V320H384V64H320V21.3333333333334H426.6666666666667V362.6666666666667M85.3333333333333 362.6666666666667V21.3333333333334H192V64H128V320H192V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="code-equal" + unicode="&#xF16B;" + horiz-adv-x="512" d=" M128 170.6666666666667H234.6666666666667V128H128M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M128 256H234.6666666666667V213.3333333333334H128M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-greater-than" + unicode="&#xF16C;" + horiz-adv-x="512" d=" M222.08 289.92L320 192L222.08 93.8666666666667L192 124.16L259.84 192L192 259.8400000000001M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-greater-than-or-equal" + unicode="&#xF16D;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M147.4133333333333 289.92L245.3333333333333 192L147.4133333333333 93.8666666666667L117.3333333333333 124.16L185.1733333333333 192L117.3333333333333 259.8400000000001M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-less-than" + unicode="&#xF16E;" + horiz-adv-x="512" d=" M289.92 289.92L192 192L289.92 93.8666666666667L320 124.16L252.16 192L320 259.8400000000001M405.3333333333333 384C429.0133333333333 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333z" /> + <glyph glyph-name="code-less-than-or-equal" + unicode="&#xF16F;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M215.2533333333333 289.92L245.3333333333333 259.8400000000001L177.4933333333334 192L245.3333333333333 124.16L215.2533333333333 93.8666666666667L117.3333333333333 192M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-not-equal" + unicode="&#xF170;" + horiz-adv-x="512" d=" M128 128H170.6666666666667V85.3333333333334H128M234.6666666666667 170.6666666666667H384V128H234.6666666666667M234.6666666666667 256H384V213.3333333333334H234.6666666666667M128 298.6666666666667H170.6666666666667V170.6666666666667H128M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-not-equal-variant" + unicode="&#xF171;" + horiz-adv-x="512" d=" M234.6666666666667 309.3333333333334V248.96L177.7066666666667 192L234.6666666666667 135.04V74.6666666666667L117.3333333333333 192M277.3333333333333 310.8266666666667L396.16 192L277.3333333333333 73.1733333333334V133.5466666666667L335.7866666666667 192L277.3333333333333 250.4533333333334M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-parentheses" + unicode="&#xF172;" + horiz-adv-x="512" d=" M375.8933333333333 384C408.1066666666667 335.5733333333334 426.6666666666667 265.6 426.6666666666667 192C426.6666666666667 118.6133333333334 408.1066666666667 48.64 375.8933333333333 0L341.3333333333333 22.1866666666667C368.2133333333334 62.5066666666667 384 125.2266666666667 384 192S368.2133333333334 321.7066666666667 341.3333333333333 362.0266666666667L375.8933333333333 384M136.1066666666667 384L170.6666666666667 361.8133333333334C143.7866666666667 321.7066666666667 128 258.7733333333334 128 192S143.7866666666667 62.2933333333334 170.6666666666667 22.1866666666667L136.1066666666667 0C103.8933333333333 48.4266666666667 85.3333333333333 118.4 85.3333333333333 192S103.8933333333333 335.5733333333334 136.1066666666667 384z" /> + <glyph glyph-name="code-string" + unicode="&#xF173;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M266.6666666666667 213.3333333333334H245.3333333333333C227.6266666666667 213.3333333333334 213.3333333333333 227.6266666666667 213.3333333333333 245.3333333333334S227.6266666666667 277.3333333333334 245.3333333333333 277.3333333333334H266.6666666666667C284.3733333333334 277.3333333333334 298.6666666666667 263.04 298.6666666666667 245.3333333333334H341.3333333333333C341.3333333333333 286.5066666666667 307.84 320 266.6666666666667 320H245.3333333333333C204.16 320 170.6666666666667 286.5066666666667 170.6666666666667 245.3333333333334S204.16 170.6666666666667 245.3333333333333 170.6666666666667H266.6666666666667C284.3733333333334 170.6666666666667 298.6666666666667 156.3733333333333 298.6666666666667 138.6666666666667S284.3733333333334 106.6666666666667 266.6666666666667 106.6666666666667H245.3333333333333C227.6266666666667 106.6666666666667 213.3333333333333 120.96 213.3333333333333 138.6666666666667H170.6666666666667C170.6666666666667 97.4933333333333 204.16 64 245.3333333333333 64H266.6666666666667C307.84 64 341.3333333333333 97.4933333333333 341.3333333333333 138.6666666666667S307.84 213.3333333333334 266.6666666666667 213.3333333333334z" /> + <glyph glyph-name="code-tags" + unicode="&#xF174;" + horiz-adv-x="512" d=" M311.4666666666667 93.8666666666667L409.6 192L311.4666666666667 290.1333333333334L341.3333333333333 320L469.3333333333333 192L341.3333333333333 64L311.4666666666667 93.8666666666667M200.5333333333333 93.8666666666667L102.4 192L200.5333333333333 290.1333333333334L170.6666666666667 320L42.6666666666667 192L170.6666666666667 64L200.5333333333333 93.8666666666667z" /> + <glyph glyph-name="codepen" + unicode="&#xF175;" + horiz-adv-x="512" d=" M414.9333333333333 164.48L373.3333333333333 192L414.9333333333333 219.52M272.4266666666666 47.36V124.3733333333333L344.1066666666667 172.16L401.7066666666666 133.5466666666666M256 152.96L197.5466666666667 192L256 231.04L314.4533333333333 192M239.5733333333333 47.36L110.2933333333334 133.5466666666666L167.8933333333334 172.16L239.5733333333333 124.3733333333333M97.0666666666667 219.52L138.6666666666667 192L97.0666666666667 164.48M239.5733333333333 336.6400000000001V259.6266666666667L167.8933333333334 211.84L110.2933333333334 250.4533333333334M272.4266666666666 336.6400000000001L401.7066666666666 250.4533333333334L344.1066666666667 211.84L272.4266666666666 259.6266666666667M448 252.5866666666667V253.4400000000001C448 253.8666666666667 448 254.2933333333334 447.36 254.7200000000001C447.36 254.9333333333334 447.36 255.36 447.1466666666666 256.0000000000001C447.1466666666666 256.0000000000001 446.9333333333332 256.0000000000001 446.7199999999999 256.8533333333334C446.7199999999999 257.0666666666667 446.5066666666666 257.2800000000001 446.2933333333333 257.4933333333334C446.2933333333333 257.92 446.08 258.3466666666667 445.8666666666666 258.5600000000001C445.6533333333333 258.9866666666667 445.44 259.2000000000001 445.44 259.4133333333334C445.2266666666666 259.8400000000001 444.8 260.0533333333334 444.5866666666667 260.48C444.3733333333333 260.6933333333334 444.3733333333333 260.9066666666667 444.16 261.12C444.16 261.5466666666667 443.7333333333334 261.9733333333334 443.3066666666667 261.9733333333334L442.6666666666667 262.6133333333334C442.24 263.04 442.0266666666667 263.2533333333334 441.6 263.4666666666667L440.9599999999999 264.1066666666667C440.7466666666666 264.1066666666667 440.7466666666666 264.1066666666667 440.7466666666666 264.32L265.1733333333333 381.2266666666667C259.6266666666666 384.8533333333333 252.3733333333333 384.8533333333333 246.8266666666666 381.2266666666667L71.2533333333333 264.3200000000001C71.2533333333333 264.1066666666667 71.2533333333333 264.1066666666667 71.04 264.1066666666667L70.4 263.4666666666667C69.9733333333333 263.2533333333334 69.76 263.0400000000001 69.3333333333333 262.6133333333334L68.6933333333333 261.9733333333334L67.84 261.1200000000001C67.6266666666667 260.9066666666668 67.6266666666667 260.6933333333335 67.4133333333333 260.4800000000002C67.2 260.0533333333335 66.7733333333333 259.8400000000002 66.56 259.4133333333334C66.56 259.2000000000001 66.3466666666667 258.9866666666668 66.1333333333333 258.5600000000001C65.92 258.3466666666668 65.7066666666667 257.9200000000002 65.7066666666667 257.4933333333335C65.4933333333333 257.2800000000001 65.28 257.0666666666668 65.28 256.8533333333335C65.0666666666667 256.0000000000001 65.0666666666667 256.0000000000001 64.8533333333333 256.0000000000001C64.64 255.3600000000002 64.64 254.9333333333335 64.64 254.7200000000001C64 254.2933333333334 64 253.8666666666667 64 253.4400000000001V130.5600000000001C64 130.1333333333334 64 129.7066666666667 64.64 129.28C64.64 129.0666666666667 64.64 128.6400000000001 64.8533333333333 128C65.0666666666667 128 65.0666666666667 128 65.28 127.1466666666667C65.28 126.9333333333334 65.4933333333333 126.72 65.7066666666667 126.5066666666667C65.7066666666667 126.0800000000001 65.92 125.6533333333334 66.1333333333333 125.4400000000001C66.3466666666667 125.0133333333334 66.56 124.8000000000001 66.56 124.5866666666667C66.7733333333333 124.1600000000001 67.2 123.9466666666667 67.4133333333333 123.5200000000001C67.6266666666667 123.3066666666667 67.6266666666667 123.0933333333334 67.84 122.8800000000001C68.2666666666667 122.6666666666668 68.48 122.2400000000001 68.6933333333333 122.0266666666668L69.3333333333333 121.3866666666668C69.76 120.9600000000001 69.9733333333333 120.7466666666668 70.4 120.5333333333334L71.04 119.8933333333334C71.2533333333333 119.8933333333334 71.2533333333333 119.8933333333334 71.2533333333333 119.6800000000001L246.8266666666667 2.7733333333334C249.6 0.8533333333334 252.8 1e-13 256 1e-13C259.2 1e-13 262.4 0.8533333333334 265.1733333333333 2.7733333333334L440.7466666666667 119.6800000000001C440.7466666666667 119.8933333333334 440.7466666666667 119.8933333333334 440.9600000000001 119.8933333333334L441.6 120.5333333333334C442.0266666666667 120.7466666666667 442.2400000000001 120.96 442.6666666666668 121.3866666666667L443.3066666666668 122.0266666666667C443.5200000000001 122.24 443.7333333333334 122.6666666666667 444.1600000000001 122.88C444.3733333333335 123.0933333333334 444.3733333333335 123.3066666666667 444.5866666666667 123.52C444.8000000000001 123.9466666666667 445.2266666666668 124.16 445.4400000000001 124.5866666666667C445.4400000000001 124.8 445.6533333333334 125.0133333333333 445.8666666666667 125.44C446.0800000000001 125.6533333333333 446.2933333333334 126.08 446.2933333333334 126.5066666666667C446.5066666666667 126.72 446.7200000000001 126.9333333333333 446.7200000000001 127.1466666666667C446.9333333333334 128 447.1466666666667 128 447.1466666666667 128C447.36 128.64 447.36 129.0666666666667 447.36 129.28C448.0000000000001 129.7066666666667 448.0000000000001 130.1333333333333 448.0000000000001 130.56V252.5866666666667z" /> + <glyph glyph-name="coffee" + unicode="&#xF176;" + horiz-adv-x="512" d=" M42.6666666666667 0H426.6666666666667V42.6666666666667H42.6666666666667M426.6666666666667 277.3333333333334H384V341.3333333333334H426.6666666666667M426.6666666666667 384H85.3333333333333V170.6666666666667C85.3333333333333 123.52 123.52 85.3333333333334 170.6666666666667 85.3333333333334H298.6666666666667C345.8133333333334 85.3333333333334 384 123.52 384 170.6666666666667V234.6666666666667H426.6666666666667C450.1333333333334 234.6666666666667 469.3333333333333 253.8666666666667 469.3333333333333 277.3333333333334V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="coffee-to-go" + unicode="&#xF177;" + horiz-adv-x="512" d=" M64 42.6666666666667V85.3333333333334H362.6666666666667L325.5466666666666 122.88L355.6266666666666 152.96L444.5866666666667 64L355.6266666666667 -24.96L325.5466666666667 5.12L362.6666666666667 42.6666666666667H64M362.6666666666667 277.3333333333334V341.3333333333334H320V277.3333333333334H362.6666666666667M362.6666666666667 384C386.3466666666667 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V277.3333333333334C405.3333333333333 253.6533333333334 386.3466666666667 234.6666666666667 362.6666666666667 234.6666666666667H320V213.3333333333334C320 166.1866666666667 281.8133333333334 128 234.6666666666667 128H149.3333333333333C102.1866666666667 128 64 166.1866666666667 64 213.3333333333334V384H362.6666666666667z" /> + <glyph glyph-name="coin" + unicode="&#xF178;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667M234.6666666666667 85.3333333333334V106.6666666666667H192V149.3333333333334H277.3333333333333V170.6666666666667H213.3333333333333C201.6 170.6666666666667 192 180.2666666666667 192 192V256C192 267.7333333333334 201.6 277.3333333333334 213.3333333333333 277.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V277.3333333333334H320V234.6666666666667H234.6666666666667V213.3333333333334H298.6666666666667C310.4 213.3333333333334 320 203.7333333333334 320 192V128C320 116.2666666666667 310.4 106.6666666666667 298.6666666666667 106.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="collage" + unicode="&#xF640;" + horiz-adv-x="512" d=" M106.6666666666667 384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 18.9866666666667 82.9866666666667 0 106.6666666666667 0H234.6666666666667V384M277.3333333333333 384V213.3333333333334H448V341.3333333333334C448 365.0133333333333 429.0133333333333 384 405.3333333333333 384M277.3333333333333 170.6666666666667V0H405.3333333333333C429.0133333333333 0 448 18.9866666666667 448 42.6666666666667V170.6666666666667" /> + <glyph glyph-name="color-helper" + unicode="&#xF179;" + horiz-adv-x="512" d=" M0 -64H512V21.3333333333334H0V-64z" /> + <glyph glyph-name="comment" + unicode="&#xF17A;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192z" /> + <glyph glyph-name="comment-account" + unicode="&#xF17B;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M341.3333333333333 149.3333333333334V170.6666666666667C341.3333333333333 199.04 284.3733333333334 213.3333333333334 256 213.3333333333334S170.6666666666667 199.04 170.6666666666667 170.6666666666667V149.3333333333334H341.3333333333333M256 320C232.5333333333334 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320z" /> + <glyph glyph-name="comment-account-outline" + unicode="&#xF17C;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M341.3333333333333 149.3333333333334H170.6666666666667V170.6666666666667C170.6666666666667 199.04 227.6266666666667 213.3333333333334 256 213.3333333333334S341.3333333333333 199.04 341.3333333333333 170.6666666666667V149.3333333333334M256 320C279.4666666666667 320 298.6666666666667 300.8 298.6666666666667 277.3333333333334S279.4666666666667 234.6666666666667 256 234.6666666666667S213.3333333333333 253.8666666666667 213.3333333333333 277.3333333333334S232.5333333333334 320 256 320z" /> + <glyph glyph-name="comment-alert" + unicode="&#xF17D;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M277.3333333333333 234.6666666666667V320H234.6666666666667V234.6666666666667H277.3333333333333M277.3333333333333 149.3333333333334V192H234.6666666666667V149.3333333333334H277.3333333333333z" /> + <glyph glyph-name="comment-alert-outline" + unicode="&#xF17E;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M277.3333333333333 234.6666666666667H234.6666666666667V320H277.3333333333333V234.6666666666667M277.3333333333333 149.3333333333334H234.6666666666667V192H277.3333333333333V149.3333333333334z" /> + <glyph glyph-name="comment-check" + unicode="&#xF17F;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 128L384 298.6666666666667L353.92 328.9600000000001L213.3333333333333 188.3733333333333L158.08 243.4133333333334L128 213.3333333333334L213.3333333333333 128z" /> + <glyph glyph-name="comment-check-outline" + unicode="&#xF180;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M352 277.3333333333334L234.6666666666667 160L160 234.6666666666667L190.08 264.7466666666667L234.6666666666667 220.3733333333333L321.92 307.4133333333334L352 277.3333333333334z" /> + <glyph glyph-name="comment-multiple-outline" + unicode="&#xF181;" + horiz-adv-x="512" d=" M256 -42.6666666666666C244.2666666666667 -42.6666666666666 234.6666666666667 -33.0666666666667 234.6666666666667 -21.3333333333333V42.6666666666667H149.3333333333333C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V298.6666666666667C106.6666666666667 322.3466666666667 125.8666666666667 341.3333333333334 149.3333333333333 341.3333333333334H448C471.4666666666667 341.3333333333334 490.6666666666666 322.1333333333334 490.6666666666666 298.6666666666667V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H360.5333333333333L281.6 -36.48C277.3333333333333 -40.5333333333334 272 -42.6666666666666 266.6666666666667 -42.6666666666666H256M277.3333333333333 85.3333333333334V19.6266666666667L343.04 85.3333333333334H448V298.6666666666667H149.3333333333333V85.3333333333334H277.3333333333333M64 128H21.3333333333333V384C21.3333333333333 407.4666666666667 40.5333333333333 426.6666666666667 64 426.6666666666667H405.3333333333333V384H64V128z" /> + <glyph glyph-name="comment-outline" + unicode="&#xF182;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333z" /> + <glyph glyph-name="comment-plus-outline" + unicode="&#xF183;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M234.6666666666667 320H277.3333333333333V256H341.3333333333333V213.3333333333334H277.3333333333333V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667V256H234.6666666666667V320z" /> + <glyph glyph-name="comment-processing" + unicode="&#xF184;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M362.6666666666667 213.3333333333334V256H320V213.3333333333334H362.6666666666667M277.3333333333333 213.3333333333334V256H234.6666666666667V213.3333333333334H277.3333333333333M192 213.3333333333334V256H149.3333333333333V213.3333333333334H192z" /> + <glyph glyph-name="comment-processing-outline" + unicode="&#xF185;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M362.6666666666667 213.3333333333334H320V256H362.6666666666667V213.3333333333334M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333V213.3333333333334M192 213.3333333333334H149.3333333333333V256H192V213.3333333333334z" /> + <glyph glyph-name="comment-question-outline" + unicode="&#xF186;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H170.6666666666667V0C170.6666666666667 -11.7333333333333 180.2666666666667 -21.3333333333333 192 -21.3333333333333H202.6666666666667C208 -21.3333333333333 213.3333333333333 -19.1999999999999 217.6 -15.1466666666666L296.5333333333333 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333M85.3333333333333 362.6666666666667H426.6666666666667V106.6666666666667H279.04L213.3333333333333 40.96V106.6666666666667H85.3333333333333V362.6666666666667M260.0533333333333 330.6666666666667C241.0666666666667 330.6666666666667 225.92 326.8266666666667 214.4 319.1466666666667C202.6666666666666 311.4666666666667 196.6933333333333 298.6666666666667 197.76 283.9466666666667H239.7866666666667C239.7866666666667 289.92 241.92 294.4000000000001 245.3333333333333 297.3866666666667C249.6 300.3733333333334 254.2933333333333 301.8666666666667 260.0533333333333 301.8666666666667C266.6666666666667 301.8666666666667 272.4266666666666 300.1600000000001 276.2666666666667 296.3200000000001C280.1066666666667 292.6933333333334 282.0266666666667 288 282.0266666666667 281.6C282.0266666666667 275.6266666666667 280.32 270.2933333333334 277.3333333333333 265.8133333333334C273.7066666666666 261.12 269.2266666666666 257.2800000000001 263.68 254.2933333333334C252.5866666666666 247.4666666666667 245.3333333333333 241.4933333333334 240.8533333333333 236.3733333333334C236.8 231.2533333333334 234.6666666666667 224.0000000000001 234.6666666666667 213.3333333333334H277.3333333333333C277.3333333333333 219.3066666666667 278.4 224.0000000000001 280.32 227.8400000000001C282.24 231.4666666666667 285.8666666666666 234.6666666666667 291.4133333333333 237.8666666666668C301.2266666666667 242.3466666666668 309.3333333333333 248.3200000000001 315.52 256.0000000000001C321.7066666666666 263.8933333333334 324.9066666666667 272.2133333333334 324.9066666666667 281.6C324.9066666666667 296.5333333333334 319.1466666666667 308.48 307.6266666666666 317.4400000000001C296.1066666666667 326.1866666666667 280.1066666666667 330.6666666666668 260.0533333333333 330.6666666666668M234.6666666666667 192V149.3333333333334H277.3333333333333V192H234.6666666666667z" /> + <glyph glyph-name="comment-remove-outline" + unicode="&#xF187;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M200.7466666666667 320L256 264.7466666666667L311.2533333333334 320L341.3333333333333 289.92L286.08 234.6666666666667L341.3333333333333 179.4133333333334L311.2533333333334 149.3333333333334L256 204.5866666666667L200.7466666666667 149.3333333333334L170.6666666666667 179.4133333333334L225.92 234.6666666666667L170.6666666666667 289.92L200.7466666666667 320z" /> + <glyph glyph-name="comment-text" + unicode="&#xF188;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M106.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 256V213.3333333333334H277.3333333333333V256H106.6666666666667M106.6666666666667 170.6666666666667V128H320V170.6666666666667H106.6666666666667z" /> + <glyph glyph-name="comment-text-outline" + unicode="&#xF189;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M128 298.6666666666667H384V256H128V298.6666666666667M128 213.3333333333334H320V170.6666666666667H128V213.3333333333334z" /> + <glyph glyph-name="compare" + unicode="&#xF18A;" + horiz-adv-x="512" d=" M405.3333333333333 384H298.6666666666667V341.3333333333334H405.3333333333333V64L298.6666666666667 192V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M213.3333333333333 64H106.6666666666667L213.3333333333333 192M213.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H213.3333333333333V-42.6666666666666H256V426.6666666666667H213.3333333333333V384z" /> + <glyph glyph-name="compass" + unicode="&#xF18B;" + horiz-adv-x="512" d=" M302.72 145.28L128 64L209.28 238.72L384 320M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 215.4666666666667C242.9866666666667 215.4666666666667 232.5333333333334 205.0133333333333 232.5333333333334 192C232.5333333333334 178.9866666666667 242.9866666666667 168.5333333333334 256 168.5333333333334C269.0133333333333 168.5333333333334 279.4666666666667 178.9866666666667 279.4666666666667 192C279.4666666666667 205.0133333333333 269.0133333333333 215.4666666666667 256 215.4666666666667z" /> + <glyph glyph-name="compass-outline" + unicode="&#xF18C;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334L217.6 230.4000000000001L362.6666666666667 298.6666666666667L294.4 153.6L149.3333333333333 85.3333333333334M256 211.2C245.3333333333333 211.2 236.8 202.6666666666667 236.8 192S245.3333333333333 172.8 256 172.8S275.2 181.3333333333334 275.2 192S266.6666666666667 211.2 256 211.2M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="console" + unicode="&#xF18D;" + horiz-adv-x="512" d=" M426.6666666666667 42.6666666666667V298.6666666666667H85.3333333333333V42.6666666666667H426.6666666666667M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V341.3333333333334C42.6666666666667 365.0133333333333 61.8666666666667 384 85.3333333333333 384H426.6666666666667M277.3333333333333 85.3333333333334V128H384V85.3333333333334H277.3333333333333M204.3733333333333 170.6666666666667L118.8266666666667 256H179.2L249.6 185.6C257.92 177.28 257.92 163.6266666666667 249.6 155.3066666666667L179.6266666666667 85.3333333333334H119.2533333333333L204.3733333333333 170.6666666666667z" /> + <glyph glyph-name="contact-mail" + unicode="&#xF18E;" + horiz-adv-x="512" d=" M448 277.3333333333334V298.6666666666667L384 256L320 298.6666666666667V277.3333333333334L384 234.6666666666667M469.3333333333333 384H42.6666666666667C19.2 384 0 364.8 0 341.3333333333334V42.6666666666667C0 19.2 19.2 0 42.6666666666667 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 364.8 492.8 384 469.3333333333333 384M170.6666666666667 320C206.08 320 234.6666666666667 291.4133333333334 234.6666666666667 256S206.08 192 170.6666666666667 192S106.6666666666667 220.5866666666667 106.6666666666667 256S135.2533333333333 320 170.6666666666667 320M298.6666666666667 64H42.6666666666667V85.3333333333334C42.6666666666667 128 128 151.4666666666667 170.6666666666667 151.4666666666667S298.6666666666667 128 298.6666666666667 85.3333333333334M469.3333333333333 192H298.6666666666667V320H469.3333333333333" /> + <glyph glyph-name="content-copy" + unicode="&#xF18F;" + horiz-adv-x="512" d=" M405.3333333333333 0H170.6666666666667V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H170.6666666666667C147.2 341.3333333333334 128 322.1333333333334 128 298.6666666666667V0C128 -23.4666666666667 147.2 -42.6666666666666 170.6666666666667 -42.6666666666666H405.3333333333333C428.8 -42.6666666666666 448 -23.4666666666667 448 0V298.6666666666667C448 322.1333333333334 428.8 341.3333333333334 405.3333333333333 341.3333333333334M341.3333333333333 426.6666666666667H85.3333333333333C61.8666666666667 426.6666666666667 42.6666666666667 407.4666666666667 42.6666666666667 384V85.3333333333334H85.3333333333333V384H341.3333333333333V426.6666666666667z" /> + <glyph glyph-name="content-cut" + unicode="&#xF190;" + horiz-adv-x="512" d=" M405.3333333333333 384L277.3333333333333 256L320 213.3333333333334L469.3333333333333 362.6666666666667V384M256 181.3333333333334C250.0266666666667 181.3333333333334 245.3333333333333 186.0266666666667 245.3333333333333 192S250.0266666666667 202.6666666666667 256 202.6666666666667S266.6666666666667 197.9733333333333 266.6666666666667 192S261.9733333333333 181.3333333333334 256 181.3333333333334M128 21.3333333333334C104.5333333333333 21.3333333333334 85.3333333333333 40.5333333333333 85.3333333333333 64C85.3333333333333 87.68 104.5333333333333 106.6666666666667 128 106.6666666666667S170.6666666666667 87.4666666666667 170.6666666666667 64C170.6666666666667 40.3200000000001 151.4666666666667 21.3333333333334 128 21.3333333333334M128 277.3333333333334C104.5333333333333 277.3333333333334 85.3333333333333 296.5333333333334 85.3333333333333 320C85.3333333333333 343.68 104.5333333333333 362.6666666666667 128 362.6666666666667S170.6666666666667 343.4666666666667 170.6666666666667 320C170.6666666666667 296.32 151.4666666666667 277.3333333333334 128 277.3333333333334M205.6533333333333 285.0133333333333C210.56 295.68 213.3333333333333 307.4133333333334 213.3333333333333 320C213.3333333333333 367.1466666666667 175.1466666666667 405.3333333333333 128 405.3333333333333S42.6666666666667 367.1466666666667 42.6666666666667 320S80.8533333333333 234.6666666666667 128 234.6666666666667C140.5866666666667 234.6666666666667 152.32 237.4400000000001 162.9866666666667 242.3466666666667L213.3333333333333 192L162.9866666666667 141.6533333333334C152.32 146.56 140.5866666666667 149.3333333333334 128 149.3333333333334C80.8533333333333 149.3333333333334 42.6666666666667 111.1466666666667 42.6666666666667 64S80.8533333333333 -21.3333333333333 128 -21.3333333333333S213.3333333333333 16.8533333333334 213.3333333333333 64C213.3333333333333 76.5866666666667 210.56 88.3200000000001 205.6533333333333 98.9866666666667L256 149.3333333333334L405.3333333333333 0H469.3333333333333V21.3333333333334L205.6533333333333 285.0133333333333z" /> + <glyph glyph-name="content-duplicate" + unicode="&#xF191;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V384C42.6666666666667 407.4666666666667 61.8666666666667 426.6666666666667 85.3333333333333 426.6666666666667H341.3333333333333V384H85.3333333333333V128H234.6666666666667V170.6666666666667L320 106.6666666666667L234.6666666666667 42.6666666666667V85.3333333333334M405.3333333333333 0V298.6666666666667H170.6666666666667V170.6666666666667H128V298.6666666666667C128 322.1333333333334 147.2 341.3333333333334 170.6666666666667 341.3333333333334H405.3333333333333C428.8 341.3333333333334 448 322.1333333333334 448 298.6666666666667V0C448 -23.4666666666667 428.8 -42.6666666666666 405.3333333333333 -42.6666666666666H170.6666666666667C147.2 -42.6666666666666 128 -23.4666666666667 128 0V42.6666666666667H170.6666666666667V0H405.3333333333333z" /> + <glyph glyph-name="content-paste" + unicode="&#xF192;" + horiz-adv-x="512" d=" M405.3333333333333 21.3333333333334H106.6666666666667V362.6666666666667H149.3333333333333V298.6666666666667H362.6666666666667V362.6666666666667H405.3333333333333M256 405.3333333333333C267.7333333333334 405.3333333333333 277.3333333333333 395.7333333333334 277.3333333333333 384S267.7333333333334 362.6666666666667 256 362.6666666666667S234.6666666666667 372.2666666666667 234.6666666666667 384S244.2666666666667 405.3333333333333 256 405.3333333333333M405.3333333333333 405.3333333333333H316.16C307.2 430.08 283.7333333333334 448 256 448C228.2666666666667 448 204.8 430.08 195.84 405.3333333333333H106.6666666666667C83.2 405.3333333333333 64 386.1333333333334 64 362.6666666666667V21.3333333333334C64 -2.1333333333333 83.2 -21.3333333333333 106.6666666666667 -21.3333333333333H405.3333333333333C428.8 -21.3333333333333 448 -2.1333333333333 448 21.3333333333334V362.6666666666667C448 386.1333333333334 428.8 405.3333333333333 405.3333333333333 405.3333333333333z" /> + <glyph glyph-name="content-save" + unicode="&#xF193;" + horiz-adv-x="512" d=" M320 256H106.6666666666667V341.3333333333334H320M256 42.6666666666667C220.5866666666667 42.6666666666667 192 71.2533333333333 192 106.6666666666667S220.5866666666667 170.6666666666667 256 170.6666666666667S320 142.0800000000001 320 106.6666666666667S291.4133333333333 42.6666666666667 256 42.6666666666667M362.6666666666667 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V298.6666666666667L362.6666666666667 384z" /> + <glyph glyph-name="content-save-all" + unicode="&#xF194;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667V384H149.3333333333333V298.6666666666667H362.6666666666667M298.6666666666667 85.3333333333334C334.08 85.3333333333334 362.6666666666667 113.92 362.6666666666667 149.3333333333334S334.08 213.3333333333334 298.6666666666667 213.3333333333334S234.6666666666667 184.7466666666667 234.6666666666667 149.3333333333334S263.2533333333334 85.3333333333334 298.6666666666667 85.3333333333334M405.3333333333333 426.6666666666667L490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V384C106.6666666666667 407.4666666666667 125.8666666666667 426.6666666666667 149.3333333333333 426.6666666666667H405.3333333333333M21.3333333333333 298.6666666666667H64V0H362.6666666666667V-42.6666666666666H64C40.5333333333333 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V298.6666666666667z" /> + <glyph glyph-name="content-save-settings" + unicode="&#xF61B;" + horiz-adv-x="512" d=" M320 277.3333333333334V362.6666666666667H106.6666666666667V277.3333333333334H320M256 64C291.4133333333333 64 320 92.5866666666667 320 128S291.4133333333333 192 256 192S192 163.4133333333334 192 128S220.5866666666667 64 256 64M362.6666666666667 405.3333333333333L448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C82.9866666666667 21.3333333333334 64 40.5333333333333 64 64V362.6666666666667C64 386.1333333333334 83.2 405.3333333333333 106.6666666666667 405.3333333333333H362.6666666666667M234.6666666666667 -21.3333333333333H277.3333333333333V-64H234.6666666666667V-21.3333333333333M149.3333333333333 -21.3333333333333H192V-64H149.3333333333333V-21.3333333333333M320 -21.3333333333333H362.6666666666667V-64H320V-21.3333333333333z" /> + <glyph glyph-name="contrast" + unicode="&#xF195;" + horiz-adv-x="512" d=" M93.44 2.1333333333334C80.64 6.1866666666667 70.4 16.4266666666667 66.1333333333333 29.2266666666667L418.7733333333333 381.8666666666667C431.5733333333333 377.6 441.8133333333334 367.36 445.8666666666666 354.56L93.44 2.1333333333334M426.6666666666667 106.6666666666667V64H277.3333333333333V106.6666666666667H426.6666666666667M64 320H128V384H170.6666666666667V320H234.6666666666667V277.3333333333334H170.6666666666667V213.3333333333334H128V277.3333333333334H64V320z" /> + <glyph glyph-name="contrast-box" + unicode="&#xF196;" + horiz-adv-x="512" d=" M362.6666666666667 117.3333333333334H256V85.3333333333334H362.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667L405.3333333333333 341.3333333333334M117.3333333333333 288H160V330.6666666666667H192V288H234.6666666666667V256H192V213.3333333333334H160V256H117.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="contrast-circle" + unicode="&#xF197;" + horiz-adv-x="512" d=" M256 21.3333333333334C208.8533333333333 21.3333333333334 166.1866666666667 40.5333333333333 135.2533333333333 71.2533333333333L376.7466666666667 312.7466666666667C407.4666666666667 281.8133333333334 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334M128 277.3333333333334H170.6666666666667V320H202.6666666666667V277.3333333333334H245.3333333333333V245.3333333333334H202.6666666666667V202.6666666666667H170.6666666666667V245.3333333333334H128M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 106.6666666666667H362.6666666666667V138.6666666666667H256V106.6666666666667z" /> + <glyph glyph-name="cookie" + unicode="&#xF198;" + horiz-adv-x="512" d=" M256 384C149.9733333333333 384 64 298.0266666666667 64 192S149.9733333333333 0 256 0S448 85.9733333333334 448 192C448 202.6666666666667 447.1466666666667 213.3333333333334 445.2266666666667 224C439.4666666666667 234.6666666666667 426.6666666666667 234.6666666666667 426.6666666666667 234.6666666666667H384V256C384 277.3333333333334 362.6666666666667 277.3333333333334 362.6666666666667 277.3333333333334H320V298.6666666666667C320 320 298.6666666666667 320 298.6666666666667 320H277.3333333333333V362.6666666666667C277.3333333333333 384 256 384 256 384M202.6666666666667 320C220.3733333333333 320 234.6666666666667 305.7066666666667 234.6666666666667 288S220.3733333333333 256 202.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S184.96 320 202.6666666666667 320M138.6666666666667 234.6666666666667C156.3733333333333 234.6666666666667 170.6666666666667 220.3733333333333 170.6666666666667 202.6666666666667S156.3733333333333 170.6666666666667 138.6666666666667 170.6666666666667S106.6666666666667 184.96 106.6666666666667 202.6666666666667S120.96 234.6666666666667 138.6666666666667 234.6666666666667M245.3333333333333 213.3333333333334C263.04 213.3333333333334 277.3333333333333 199.04 277.3333333333333 181.3333333333334S263.04 149.3333333333334 245.3333333333333 149.3333333333334S213.3333333333333 163.6266666666667 213.3333333333333 181.3333333333334S227.6266666666667 213.3333333333334 245.3333333333333 213.3333333333334M352 170.6666666666667C369.7066666666666 170.6666666666667 384 156.3733333333333 384 138.6666666666667S369.7066666666666 106.6666666666667 352 106.6666666666667S320 120.96 320 138.6666666666667S334.2933333333333 170.6666666666667 352 170.6666666666667M234.6666666666667 106.6666666666667C252.3733333333334 106.6666666666667 266.6666666666667 92.3733333333333 266.6666666666667 74.6666666666667S252.3733333333334 42.6666666666667 234.6666666666667 42.6666666666667S202.6666666666667 56.96 202.6666666666667 74.6666666666667S216.96 106.6666666666667 234.6666666666667 106.6666666666667z" /> + <glyph glyph-name="copyright" + unicode="&#xF5E6;" + horiz-adv-x="512" d=" M215.04 216.32C216.1066666666667 223.36 218.4533333333333 229.5466666666667 221.44 234.6666666666667C224 240.2133333333334 228.6933333333334 244.6933333333334 234.0266666666667 248.1066666666667C239.1466666666667 251.3066666666667 245.3333333333333 252.8000000000001 253.44 253.0133333333334C258.3466666666667 252.8000000000001 262.8266666666667 251.9466666666667 266.6666666666667 250.24C271.1466666666667 248.32 274.9866666666667 245.3333333333334 277.9733333333333 242.5600000000001C280.96 239.36 283.3066666666666 235.5200000000001 285.2266666666667 231.2533333333334C287.1466666666667 226.9866666666668 288 222.2933333333334 288 217.6H326.4C325.9733333333334 227.6266666666667 324.0533333333334 236.8000000000001 320 245.3333333333334C316.8 253.4400000000001 311.8933333333333 260.6933333333334 305.4933333333334 266.6666666666668C298.6666666666667 272.6400000000001 291.4133333333333 277.3333333333334 282.4533333333333 280.7466666666668C273.4933333333334 284.1600000000001 263.68 285.6533333333334 252.8 285.6533333333334C238.9333333333333 285.6533333333334 226.7733333333333 283.3066666666668 216.5333333333333 278.4000000000001C206.2933333333333 273.4933333333334 197.76 266.6666666666668 190.9333333333333 258.7733333333335C184.1066666666667 250.4533333333334 178.9866666666667 240.8533333333334 175.7866666666667 229.7600000000001C172.5866666666667 218.6666666666668 170.6666666666667 207.1466666666667 170.6666666666667 194.7733333333334V189.0133333333334C170.6666666666667 176.6400000000001 172.3733333333334 165.1200000000001 175.5733333333334 154.0266666666668C178.7733333333334 142.9333333333334 183.8933333333334 133.3333333333334 190.72 125.2266666666668C197.5466666666667 117.3333333333334 206.0800000000001 110.5066666666668 216.32 105.8133333333335C226.56 101.1200000000001 238.7200000000001 98.5600000000001 252.5866666666667 98.5600000000001C262.6133333333334 98.5600000000001 272 100.2666666666668 280.7466666666667 103.4666666666668C289.4933333333334 106.6666666666668 297.1733333333333 111.1466666666668 303.7866666666667 117.3333333333335C310.4 122.6666666666668 315.7333333333334 129.2800000000002 320 136.9600000000002C323.4133333333333 144.6400000000001 325.76 152.7466666666668 325.9733333333333 161.4933333333335H288C288 157.0133333333334 286.5066666666667 152.9600000000002 284.5866666666667 149.3333333333335C282.6666666666667 145.2800000000002 280.1066666666667 142.0800000000002 277.3333333333333 139.3066666666668C273.7066666666667 136.5333333333334 270.08 134.4000000000001 265.8133333333334 132.9066666666668C261.76 131.4133333333334 257.4933333333334 130.9866666666668 253.0133333333334 130.7733333333334C245.3333333333334 130.9866666666668 238.9333333333334 132.4800000000001 234.0266666666667 135.6800000000001C228.6933333333334 138.6666666666668 224 143.5733333333334 221.44 149.3333333333335C218.4533333333333 154.2400000000001 216.1066666666667 160.6400000000001 215.04 167.6800000000001C213.9733333333333 174.7200000000002 213.3333333333333 181.9733333333335 213.3333333333333 189.0133333333334V194.7733333333334C213.3333333333333 202.6666666666668 213.9733333333333 209.2800000000001 215.04 216.3200000000001M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="counter" + unicode="&#xF199;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M85.3333333333333 320V64H234.6666666666667V320H85.3333333333333M426.6666666666667 64V320H400.2133333333334C405.3333333333333 308.48 404.2666666666667 297.1733333333334 404.2666666666667 295.8933333333333C402.7733333333334 281.6 392.7466666666668 266.6666666666667 389.12 261.3333333333334L339.4133333333334 206.9333333333333L410.24 207.36L410.4533333333334 181.3333333333333L299.5200000000001 181.9733333333333L298.6666666666668 203.3066666666666S363.7333333333334 272.2133333333333 366.9333333333334 278.4C369.9200000000001 284.3733333333333 382.0800000000001 320 352.0000000000001 320C325.7600000000001 318.9333333333333 328.7466666666668 292.2666666666667 328.7466666666668 292.2666666666667L295.8933333333335 292.0533333333333S296.1066666666668 306.1333333333334 304.0000000000001 320H277.3333333333333V64H332.3733333333334L332.16 82.3466666666667L352.8533333333333 82.5600000000001S372.2666666666667 85.9733333333334 372.48 104.96C373.3333333333333 126.2933333333334 355.2000000000001 126.2933333333334 352 126.2933333333334C349.2266666666667 126.2933333333334 329.1733333333333 125.2266666666667 329.1733333333333 107.7333333333334H296.7466666666667S297.6 151.6800000000001 352 151.6800000000001C407.4666666666667 151.6800000000001 404.48 108.5866666666668 404.48 108.5866666666668S405.3333333333333 81.9200000000001 380.8 71.8933333333334L391.8933333333333 64.0000000000001H426.6666666666667M190.2933333333333 106.6666666666667H158.2933333333333V230.4000000000001L119.8933333333333 218.4533333333334V244.6933333333334L186.88 268.5866666666667H190.2933333333333V106.6666666666667z" /> + <glyph glyph-name="cow" + unicode="&#xF19A;" + horiz-adv-x="512" d=" M224 64C229.9733333333333 64 234.6666666666667 59.3066666666667 234.6666666666667 53.3333333333334S229.9733333333333 42.6666666666667 224 42.6666666666667S213.3333333333333 47.36 213.3333333333333 53.3333333333334S218.0266666666667 64 224 64M288 64C293.9733333333333 64 298.6666666666667 59.3066666666667 298.6666666666667 53.3333333333334S293.9733333333333 42.6666666666667 288 42.6666666666667S277.3333333333333 47.36 277.3333333333333 53.3333333333334S282.0266666666667 64 288 64M213.3333333333333 213.3333333333334C225.0666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S225.0666666666667 170.6666666666667 213.3333333333333 170.6666666666667S192 180.2666666666667 192 192S201.6 213.3333333333334 213.3333333333333 213.3333333333334M298.6666666666667 213.3333333333334C310.4 213.3333333333334 320 203.7333333333334 320 192S310.4 170.6666666666667 298.6666666666667 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S286.9333333333333 213.3333333333334 298.6666666666667 213.3333333333334M384 64C384 16.8533333333334 326.6133333333334 -21.3333333333333 256 -21.3333333333333S128 16.8533333333334 128 64C128 83.2 137.6 100.9066666666667 153.6 115.2000000000001C137.6 136.5333333333334 128 163.2000000000001 128 192L130.56 218.0266666666667C119.04 214.8266666666667 105.1733333333333 214.8266666666667 93.8666666666667 218.0266666666667C72.1066666666667 224 39.2533333333333 248.5333333333334 44.16 265.6C49.0666666666667 282.6666666666667 89.8133333333334 285.8666666666667 111.5733333333333 279.4666666666667C124.16 275.8400000000001 137.6 266.6666666666668 145.4933333333334 256.8533333333334L157.6533333333333 274.1333333333334C144.8533333333333 297.6 149.3333333333333 362.6666666666667 213.3333333333333 384L211.4133333333333 381.0133333333333C205.44 371.6266666666667 190.08 341.9733333333334 206.2933333333333 309.9733333333334C221.6533333333333 316.3733333333334 238.2933333333333 320 256 320C273.7066666666667 320 290.3466666666667 316.3733333333334 305.7066666666667 309.9733333333334C321.92 341.9733333333334 306.56 371.6266666666667 300.5866666666667 381.0133333333333L298.6666666666667 384C362.6666666666667 362.6666666666667 367.1466666666667 297.6 354.3466666666667 274.1333333333334L366.5066666666667 256.8533333333334C374.4 266.6666666666667 387.84 275.8400000000001 400.4266666666666 279.4666666666667C422.1866666666666 285.8666666666667 462.9333333333333 282.6666666666667 467.84 265.6C472.7466666666667 248.5333333333333 439.8933333333333 224 418.1333333333334 218.0266666666667C406.8266666666667 214.8266666666667 392.9600000000001 214.8266666666667 381.4400000000001 218.0266666666667L384 192C384 163.2000000000001 374.4 136.5333333333334 358.4 115.2000000000001C374.4 100.9066666666667 384 83.2 384 64M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 87.4666666666667 170.6666666666667 64S208.8533333333333 21.3333333333334 256 21.3333333333334S341.3333333333333 40.5333333333333 341.3333333333333 64S303.1466666666667 106.6666666666667 256 106.6666666666667M256 149.3333333333334C279.8933333333333 149.3333333333334 302.2933333333333 144.8533333333334 321.4933333333334 137.3866666666667C333.8666666666667 152.1066666666667 341.3333333333333 170.6666666666667 341.3333333333333 192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334S170.6666666666667 239.1466666666667 170.6666666666667 192C170.6666666666667 170.6666666666667 178.1333333333333 152.1066666666667 190.5066666666667 137.3866666666667C209.7066666666667 144.8533333333334 232.1066666666667 149.3333333333334 256 149.3333333333334M300.5866666666667 381.0133333333333z" /> + <glyph glyph-name="credit-card" + unicode="&#xF19B;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H85.3333333333333V320H426.6666666666667M426.6666666666667 64H85.3333333333333V192H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="credit-card-multiple" + unicode="&#xF19C;" + horiz-adv-x="512" d=" M448 277.3333333333334V320H149.3333333333333V277.3333333333334H448M448 106.6666666666667V213.3333333333334H149.3333333333333V106.6666666666667H448M448 362.6666666666667C471.4666666666667 362.6666666666667 490.6666666666666 343.4666666666667 490.6666666666666 320V106.6666666666667C490.6666666666666 83.2 471.4666666666667 64 448 64H149.3333333333333C125.6533333333333 64 106.6666666666667 83.2 106.6666666666667 106.6666666666667V320C106.6666666666667 343.68 125.6533333333333 362.6666666666667 149.3333333333333 362.6666666666667H448M64 21.3333333333334H384V-21.3333333333333H64C40.5333333333333 -21.3333333333333 21.3333333333333 -2.1333333333333 21.3333333333333 21.3333333333334V256H64V21.3333333333334z" /> + <glyph glyph-name="credit-card-off" + unicode="&#xF5E4;" + horiz-adv-x="512" d=" M19.84 358.4L47.1466666666667 385.4933333333334L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L356.9066666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 324.6933333333334 43.52 329.1733333333334 45.0133333333333 333.2266666666667L19.84 358.4M426.6666666666667 277.3333333333334V320H166.8266666666667L124.16 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 51.2 463.7866666666666 39.8933333333334 454.8266666666667 32L422.8266666666667 64H426.6666666666667V192H294.8266666666667L209.4933333333334 277.3333333333334H426.6666666666667M85.3333333333333 277.3333333333334H100.9066666666667L85.3333333333333 292.9066666666667V277.3333333333334M85.3333333333333 192V64H314.24L186.24 192H85.3333333333333z" /> + <glyph glyph-name="credit-card-scan" + unicode="&#xF19D;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667H128V405.3333333333333H42.6666666666667C19.2 405.3333333333333 0 386.1333333333334 0 362.6666666666667V277.3333333333334H42.6666666666667V362.6666666666667M469.3333333333333 405.3333333333333H384V362.6666666666667H469.3333333333333V277.3333333333334H512V362.6666666666667C512 386.1333333333334 492.8 405.3333333333333 469.3333333333333 405.3333333333333M42.6666666666667 106.6666666666667H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H128V21.3333333333334H42.6666666666667V106.6666666666667M469.3333333333333 21.3333333333334H384V-21.3333333333333H469.3333333333333C492.8 -21.3333333333333 512 -2.1333333333333 512 21.3333333333334V106.6666666666667H469.3333333333333V21.3333333333334M85.3333333333333 277.3333333333334V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H384C407.4666666666667 64 426.6666666666667 83.2 426.6666666666667 106.6666666666667V277.3333333333334C426.6666666666667 300.8 407.4666666666667 320 384 320H128C104.5333333333333 320 85.3333333333333 300.8 85.3333333333333 277.3333333333334M128 106.6666666666667V192H384V106.6666666666667H128M384 277.3333333333334V234.6666666666667H128V277.3333333333334H384z" /> + <glyph glyph-name="crop" + unicode="&#xF19E;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334V426.6666666666667H106.6666666666667V341.3333333333334H21.3333333333333V298.6666666666667H106.6666666666667V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H362.6666666666667V-42.6666666666666H405.3333333333333V42.6666666666667H490.6666666666666V85.3333333333334M362.6666666666667 128H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H192V298.6666666666667H362.6666666666667V128z" /> + <glyph glyph-name="crop-free" + unicode="&#xF19F;" + horiz-adv-x="512" d=" M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667M64 341.3333333333334V256H106.6666666666667V341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="crop-landscape" + unicode="&#xF1A0;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H106.6666666666667V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H405.3333333333333C428.8 42.6666666666667 448 61.8666666666667 448 85.3333333333334V298.6666666666667C448 322.3466666666667 428.8 341.3333333333334 405.3333333333333 341.3333333333334z" /> + <glyph glyph-name="crop-portrait" + unicode="&#xF1A1;" + horiz-adv-x="512" d=" M362.6666666666667 42.6666666666667H149.3333333333333V341.3333333333334H362.6666666666667M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0H362.6666666666667C386.1333333333334 0 405.3333333333333 19.2 405.3333333333333 42.6666666666667V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="crop-square" + unicode="&#xF1A2;" + horiz-adv-x="512" d=" M384 64H128V320H384M384 362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667z" /> + <glyph glyph-name="crosshairs" + unicode="&#xF1A3;" + horiz-adv-x="512" d=" M65.0666666666667 170.6666666666667H21.3333333333333V213.3333333333334H65.0666666666667C74.6666666666667 302.2933333333334 145.7066666666667 373.3333333333334 234.6666666666667 382.9333333333334V426.6666666666667H277.3333333333333V382.9333333333334C366.2933333333334 373.3333333333334 437.3333333333333 302.2933333333334 446.9333333333333 213.3333333333334H490.6666666666666V170.6666666666667H446.9333333333333C437.3333333333333 81.7066666666667 366.2933333333333 10.6666666666667 277.3333333333333 1.0666666666667V-42.6666666666666H234.6666666666667V1.0666666666667C145.7066666666667 10.6666666666667 74.6666666666667 81.7066666666667 65.0666666666667 170.6666666666667M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="crosshairs-gps" + unicode="&#xF1A4;" + horiz-adv-x="512" d=" M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M65.0666666666667 170.6666666666667H21.3333333333333V213.3333333333334H65.0666666666667C74.6666666666667 302.2933333333334 145.7066666666667 373.3333333333334 234.6666666666667 382.9333333333334V426.6666666666667H277.3333333333333V382.9333333333334C366.2933333333334 373.3333333333334 437.3333333333333 302.2933333333334 446.9333333333333 213.3333333333334H490.6666666666666V170.6666666666667H446.9333333333333C437.3333333333333 81.7066666666667 366.2933333333333 10.6666666666667 277.3333333333333 1.0666666666667V-42.6666666666666H234.6666666666667V1.0666666666667C145.7066666666667 10.6666666666667 74.6666666666667 81.7066666666667 65.0666666666667 170.6666666666667M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="crown" + unicode="&#xF1A5;" + horiz-adv-x="512" d=" M106.6666666666667 106.6666666666667L64 341.3333333333334L181.3333333333333 192L256 341.3333333333334L330.6666666666667 192L448 341.3333333333334L405.3333333333333 106.6666666666667H106.6666666666667M405.3333333333333 42.6666666666667C405.3333333333333 30.9333333333333 395.7333333333334 21.3333333333334 384 21.3333333333334H128C116.2666666666667 21.3333333333334 106.6666666666667 30.9333333333333 106.6666666666667 42.6666666666667V64H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="cube" + unicode="&#xF1A6;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L128.8533333333333 288L256 216.5333333333334L383.1466666666667 288L256 359.4666666666667z" /> + <glyph glyph-name="cube-outline" + unicode="&#xF1A7;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L128.8533333333333 288L256 216.5333333333334L383.1466666666667 288L256 359.4666666666667M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V251.52L277.3333333333333 179.6266666666667V36.48L405.3333333333333 108.5866666666666z" /> + <glyph glyph-name="cube-send" + unicode="&#xF1A8;" + horiz-adv-x="512" d=" M341.3333333333333 362.6666666666667L192 276.48V107.52L341.3333333333333 21.3333333333334L490.6666666666666 107.52V276.48M341.3333333333333 313.3866666666667L422.4 266.6666666666668L341.3333333333333 219.9466666666667L260.48 266.6666666666668M0 298.6666666666667V256H149.3333333333333V298.6666666666667M234.6666666666667 232.32L320 183.04V82.9866666666667L234.6666666666667 132.0533333333334M448 232.32V132.0533333333334L362.6666666666667 82.9866666666667V183.0400000000001M42.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334M85.3333333333333 128V85.3333333333334H149.3333333333333V128" /> + <glyph glyph-name="cube-unfolded" + unicode="&#xF1A9;" + horiz-adv-x="512" d=" M128 256V362.6666666666667H277.3333333333333V256H490.6666666666666V106.6666666666667H384V0H234.6666666666667V106.6666666666667H21.3333333333333V256H128M341.3333333333333 106.6666666666667H277.3333333333333V42.6666666666667H341.3333333333333V106.6666666666667M170.6666666666667 256H234.6666666666667V320H170.6666666666667V256M128 149.3333333333334V213.3333333333334H64V149.3333333333334H128M384 213.3333333333334V149.3333333333334H448V213.3333333333334H384M277.3333333333333 213.3333333333334V149.3333333333334H341.3333333333333V213.3333333333334H277.3333333333333M170.6666666666667 213.3333333333334V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667z" /> + <glyph glyph-name="cup" + unicode="&#xF1AA;" + horiz-adv-x="512" d=" M390.8266666666667 277.3333333333334H120.96L111.5733333333333 362.6666666666667H400.4266666666666M64 405.3333333333333L106.6666666666667 16.4266666666667C109.44 -4.9066666666666 127.36 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C384 -21.3333333333333 402.56 -4.9066666666666 405.3333333333333 16.4266666666667L448 405.3333333333333H64z" /> + <glyph glyph-name="cup-off" + unicode="&#xF5E5;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L389.76 -11.52C382.5066666666667 -17.7066666666666 373.3333333333333 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C127.36 -21.3333333333333 109.44 -4.9066666666666 106.6666666666667 16.4266666666667L75.3066666666667 302.9333333333334L21.3333333333333 356.9066666666667M390.8266666666667 277.3333333333334L400.4266666666666 362.6666666666667H124.16L81.4933333333333 405.3333333333333H448L411.52 75.3066666666667L209.4933333333334 277.3333333333334H390.8266666666667z" /> + <glyph glyph-name="cup-water" + unicode="&#xF1AB;" + horiz-adv-x="512" d=" M390.8266666666667 277.3333333333334H120.96L111.5733333333333 362.6666666666667H400.4266666666666M256 42.6666666666667C220.5866666666667 42.6666666666667 192 71.2533333333333 192 106.6666666666667C192 149.3333333333334 256 221.8666666666667 256 221.8666666666667S320 149.3333333333334 320 106.6666666666667C320 71.2533333333333 291.4133333333333 42.6666666666667 256 42.6666666666667M64 405.3333333333333L106.6666666666667 16.4266666666667C109.44 -4.9066666666666 127.36 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C384 -21.3333333333333 402.56 -4.9066666666666 405.3333333333333 16.4266666666667L448 405.3333333333333H64z" /> + <glyph glyph-name="currency-btc" + unicode="&#xF1AC;" + horiz-adv-x="512" d=" M96 341.3333333333334H170.6666666666667V405.3333333333333H213.3333333333333V341.3333333333334H245.3333333333333V405.3333333333333H288V341.3333333333334C405.3333333333333 341.3333333333334 405.3333333333333 213.3333333333334 341.3333333333333 208C426.6666666666667 213.3333333333334 448 42.6666666666667 288 42.6666666666667V-21.3333333333333H245.3333333333333V42.6666666666667H213.3333333333333V-21.3333333333333H170.6666666666667V42.6666666666667H96L106.6666666666667 85.3333333333334H128C139.7333333333333 85.3333333333334 149.3333333333333 94.9333333333333 149.3333333333333 106.6666666666667V277.3333333333334C149.3333333333333 289.0666666666667 139.7333333333333 298.6666666666667 128 298.6666666666667H96V341.3333333333334M213.3333333333333 298.6666666666667V213.3333333333334S309.3333333333333 208 309.3333333333333 256S213.3333333333333 298.6666666666667 213.3333333333333 298.6666666666667M213.3333333333333 181.3333333333334V85.3333333333334S330.6666666666667 85.3333333333334 330.6666666666667 133.3333333333334S213.3333333333333 181.3333333333334 213.3333333333333 181.3333333333334z" /> + <glyph glyph-name="currency-eur" + unicode="&#xF1AD;" + horiz-adv-x="512" d=" M150.8266666666667 213.3333333333334L149.3333333333333 192L150.8266666666667 170.6666666666667H370.1333333333334L352 128H163.6266666666667C187.7333333333334 77.6533333333334 239.1466666666667 42.6666666666667 298.6666666666667 42.6666666666667C346.24 42.6666666666667 388.6933333333333 64.8533333333334 416 99.6266666666667V40.1066666666667C384 14.9333333333333 342.8266666666667 0 298.6666666666667 0C215.04 0 144 53.3333333333334 117.3333333333333 128H42.6666666666667L64 170.6666666666667H107.7333333333333L106.6666666666667 192L107.7333333333333 213.3333333333334H42.6666666666667L64 256H117.3333333333333C144 330.6666666666667 215.04 384 298.6666666666667 384C352 384 401.0666666666667 361.8133333333334 435.84 326.1866666666667L417.4933333333334 282.6666666666667C390.1866666666666 318.2933333333334 347.0933333333333 341.3333333333334 298.6666666666667 341.3333333333334C239.1466666666667 341.3333333333334 187.7333333333334 306.3466666666667 163.6266666666667 256H406.1866666666666L388.0533333333333 213.3333333333334H150.8266666666667z" /> + <glyph glyph-name="currency-gbp" + unicode="&#xF1AE;" + horiz-adv-x="512" d=" M138.6666666666667 0V26.6666666666667C158.72 36.48 175.7866666666667 51.84 187.9466666666667 70.4C200.1066666666667 88.96 206.2933333333333 109.8666666666667 206.5066666666667 133.3333333333334L206.08 154.24L204.16 170.6666666666667H149.3333333333333V213.3333333333334H200.5333333333333C197.3333333333333 231.04 195.4133333333333 249.3866666666667 194.7733333333334 272C195.4133333333333 306.9866666666667 205.6533333333333 334.2933333333334 225.7066666666667 353.92C245.3333333333333 373.3333333333334 272.4266666666666 384 305.4933333333334 384C320.64 384 333.6533333333333 382.5066666666667 344.1066666666667 379.7333333333334C354.7733333333333 377.1733333333334 362.6666666666667 373.9733333333334 369.28 370.1333333333334L357.5466666666666 333.0133333333333C351.9999999999999 336 345.3866666666666 338.7733333333333 336.8533333333333 341.3333333333333C328.1066666666666 343.4666666666667 317.6533333333333 344.5333333333333 305.4933333333333 344.7466666666667C282.6666666666666 344.32 266.6666666666666 337.28 255.9999999999999 323.6266666666667C245.3333333333333 310.1866666666667 240.8533333333333 292.6933333333334 241.0666666666666 271.36L243.2 239.5733333333333L247.4666666666666 213.3333333333333H330.6666666666666V170.6666666666666H251.5199999999999C253.4399999999999 149.3333333333333 252.5866666666666 128 248.5333333333332 107.52C242.1333333333332 81.92 229.1199999999999 60.16 209.7066666666665 42.6666666666667H384V0H138.6666666666667z" /> + <glyph glyph-name="currency-inr" + unicode="&#xF1AF;" + horiz-adv-x="512" d=" M170.6666666666667 384H384L362.6666666666667 341.3333333333334H293.12C303.36 328.9600000000001 311.04 314.4533333333334 315.52 298.6666666666667H384L362.6666666666667 256H320C314.6666666666667 201.1733333333334 271.7866666666667 157.2266666666667 217.6 150.1866666666667V149.3333333333334H202.6666666666667L330.6666666666667 0H277.3333333333333L149.3333333333333 149.3333333333334V192H202.6666666666667C240.2133333333333 192 271.36 219.7333333333334 276.48 256H149.3333333333333L170.6666666666667 298.6666666666667H270.08C258.1333333333334 323.8400000000001 232.5333333333334 341.3333333333334 202.6666666666667 341.3333333333334H149.3333333333333L170.6666666666667 384z" /> + <glyph glyph-name="currency-ngn" + unicode="&#xF1B0;" + horiz-adv-x="512" d=" M85.3333333333333 256H128V384H170.6666666666667L243.6266666666667 256H341.3333333333333V384H384V256H426.6666666666667V213.3333333333334H384V170.6666666666667H426.6666666666667V128H384V0H341.3333333333333L268.16 128H170.6666666666667V0H128V128H85.3333333333333V170.6666666666667H128V213.3333333333334H85.3333333333333V256M170.6666666666667 256H194.7733333333333L170.6666666666667 298.0266666666667V256M170.6666666666667 213.3333333333334V170.6666666666667H243.6266666666667L219.3066666666667 213.3333333333334H170.6666666666667M341.3333333333333 85.3333333333334V128H316.8L341.3333333333333 85.3333333333334M267.9466666666667 213.3333333333334L292.48 170.6666666666667H341.3333333333333V213.3333333333334H267.9466666666667z" /> + <glyph glyph-name="currency-rub" + unicode="&#xF1B1;" + horiz-adv-x="512" d=" M128 234.6666666666667H149.3333333333333V384H309.3333333333333C362.6666666666667 384 405.3333333333333 341.3333333333334 405.3333333333333 288S362.6666666666667 192 309.3333333333333 192H192V149.3333333333334H320V106.6666666666667H192V0H149.3333333333333V106.6666666666667H128V149.3333333333334H149.3333333333333V192H128V234.6666666666667M309.3333333333333 341.3333333333334H192V234.6666666666667H309.3333333333333C338.7733333333333 234.6666666666667 362.6666666666667 258.5600000000001 362.6666666666667 288S338.7733333333333 341.3333333333334 309.3333333333333 341.3333333333334z" /> + <glyph glyph-name="currency-try" + unicode="&#xF1B2;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 85.9733333333334 319.36 0 213.3333333333333 0H170.6666666666667V175.5733333333334L106.6666666666667 152.1066666666667V197.5466666666667L170.6666666666667 221.0133333333334V258.7733333333334L106.6666666666667 235.52V280.7466666666667L170.6666666666667 304.2133333333334V384H213.3333333333333V320L320 358.4V313.1733333333334L213.3333333333333 274.3466666666667V236.3733333333334L320 275.2000000000001V229.76L213.3333333333333 190.9333333333333V42.6666666666667C295.8933333333333 42.6666666666667 362.6666666666667 109.44 362.6666666666667 192H405.3333333333333z" /> + <glyph glyph-name="currency-usd" + unicode="&#xF1B3;" + horiz-adv-x="512" d=" M251.7333333333334 215.4666666666667C203.3066666666667 228.0533333333334 187.7333333333334 241.0666666666667 187.7333333333334 261.3333333333334C187.7333333333334 284.5866666666667 209.28 300.8 245.3333333333333 300.8C283.3066666666666 300.8 297.3866666666667 282.6666666666667 298.6666666666667 256H345.8133333333334C344.32 292.6933333333334 321.92 326.4 277.3333333333333 337.2800000000001V384H213.3333333333333V337.92C171.9466666666667 328.9600000000001 138.6666666666667 302.0800000000001 138.6666666666667 260.9066666666667C138.6666666666667 211.6266666666667 179.4133333333333 187.0933333333334 238.9333333333333 172.8000000000001C292.2666666666667 160.0000000000001 302.9333333333333 141.2266666666667 302.9333333333333 121.3866666666667C302.9333333333333 106.6666666666667 292.48 83.2000000000001 245.3333333333333 83.2000000000001C201.3866666666667 83.2000000000001 184.1066666666666 102.8266666666668 181.3333333333333 128.0000000000001H134.8266666666667C137.3866666666667 81.2800000000001 172.3733333333333 55.0400000000001 213.3333333333333 46.2933333333334V0H277.3333333333333V45.8666666666667C318.9333333333333 53.3333333333334 352 77.8666666666667 352 121.6C352 182.1866666666667 300.16 202.6666666666667 251.7333333333334 215.4666666666667z" /> + <glyph glyph-name="cursor-default" + unicode="&#xF1B4;" + horiz-adv-x="512" d=" M290.9866666666667 -20.6933333333333C280.32 -25.8133333333333 267.52 -21.3333333333333 262.6133333333334 -10.6666666666666L216.1066666666667 90.4533333333334L162.56 47.3600000000001C158.9333333333333 44.3733333333334 154.4533333333334 42.6666666666667 149.3333333333334 42.6666666666667C137.6 42.6666666666667 128 52.2666666666668 128 64.0000000000001V384C128 395.7333333333334 137.6 405.3333333333333 149.3333333333334 405.3333333333333C154.4533333333334 405.3333333333333 159.36 403.4133333333334 162.9866666666667 400.4266666666667L163.2 400.64L408.32 194.9866666666667C417.4933333333334 187.3066666666667 418.56 173.8666666666667 411.0933333333333 164.9066666666667C407.8933333333333 161.0666666666667 403.4133333333333 158.5066666666667 398.9333333333333 157.6533333333333L331.52 144.4266666666667L378.4533333333333 43.52C384 32.8533333333334 378.88 20.2666666666667 368.2133333333333 15.36L290.9866666666666 -20.6933333333334z" /> + <glyph glyph-name="cursor-default-outline" + unicode="&#xF1B5;" + horiz-adv-x="512" d=" M214.8266666666667 143.5733333333334C225.4933333333334 148.6933333333334 238.08 144 243.2 133.3333333333334L292.2666666666667 26.88L330.6666666666667 45.0133333333333L281.3866666666667 151.2533333333333C276.2666666666667 161.92 280.96 174.72 291.6266666666667 179.6266666666667L297.6 181.3333333333334L346.6666666666667 190.9333333333333L170.6666666666667 338.7733333333333V108.8L209.4933333333334 140.16L214.8266666666667 143.5733333333334M290.9866666666667 -20.6933333333333C280.32 -25.8133333333333 267.52 -21.3333333333333 262.6133333333334 -10.6666666666666L216.1066666666667 90.4533333333334L162.56 47.3600000000001C158.9333333333333 44.3733333333334 154.4533333333334 42.6666666666667 149.3333333333334 42.6666666666667C137.6 42.6666666666667 128 52.2666666666668 128 64.0000000000001V384C128 395.7333333333334 137.6 405.3333333333333 149.3333333333334 405.3333333333333C154.4533333333334 405.3333333333333 159.36 403.4133333333334 162.9866666666667 400.4266666666667L163.2 400.64L408.32 194.9866666666667C417.4933333333334 187.3066666666667 418.56 173.8666666666667 411.0933333333333 164.9066666666667C407.8933333333333 161.0666666666667 403.4133333333333 158.5066666666667 398.9333333333333 157.6533333333333L331.52 144.4266666666667L378.4533333333333 43.52C384 32.8533333333334 378.88 20.2666666666667 368.2133333333333 15.36L290.9866666666666 -20.6933333333334z" /> + <glyph glyph-name="cursor-move" + unicode="&#xF1B6;" + horiz-adv-x="512" d=" M277.3333333333333 320V213.3333333333334H384V282.6666666666667L474.6666666666666 192L384 101.3333333333334V170.6666666666667H277.3333333333333V64H346.6666666666667L256 -26.6666666666666L165.3333333333333 64H234.6666666666667V170.6666666666667H128V101.3333333333334L37.3333333333333 192L128 282.6666666666667V213.3333333333334H234.6666666666667V320H165.3333333333333L256 410.6666666666667L346.6666666666667 320H277.3333333333333z" /> + <glyph glyph-name="cursor-pointer" + unicode="&#xF1B7;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C236.8 405.3333333333333 256 386.1333333333334 256 362.6666666666667V266.6666666666667S298.6666666666667 272 298.6666666666667 250.6666666666667C298.6666666666667 250.6666666666667 341.3333333333333 256 341.3333333333333 234.6666666666667C341.3333333333333 234.6666666666667 384 240 384 218.6666666666667C384 218.6666666666667 426.6666666666667 224 426.6666666666667 202.6666666666667V128C426.6666666666667 106.6666666666667 362.6666666666667 0 362.6666666666667 -21.3333333333333H192S149.3333333333333 128 85.3333333333333 170.6666666666667C85.3333333333333 170.6666666666667 64 298.6666666666667 170.6666666666667 192V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="cursor-text" + unicode="&#xF5E7;" + horiz-adv-x="512" d=" M277.3333333333333 42.6666666666667C277.3333333333333 30.9333333333333 286.9333333333333 21.3333333333334 298.6666666666667 21.3333333333334H341.3333333333333V-21.3333333333333H288C276.2666666666667 -21.3333333333333 256 -11.7333333333333 256 0C256 -11.7333333333333 235.7333333333334 -21.3333333333333 224 -21.3333333333333H170.6666666666667V21.3333333333334H213.3333333333333C225.0666666666667 21.3333333333334 234.6666666666667 30.9333333333333 234.6666666666667 42.6666666666667V341.3333333333334C234.6666666666667 353.0666666666667 225.0666666666667 362.6666666666667 213.3333333333333 362.6666666666667H170.6666666666667V405.3333333333333H224C235.7333333333334 405.3333333333333 256 395.7333333333334 256 384C256 395.7333333333334 276.2666666666667 405.3333333333333 288 405.3333333333333H341.3333333333333V362.6666666666667H298.6666666666667C286.9333333333333 362.6666666666667 277.3333333333333 353.0666666666667 277.3333333333333 341.3333333333334V42.6666666666667z" /> + <glyph glyph-name="database" + unicode="&#xF1B8;" + horiz-adv-x="512" d=" M256 384C161.7066666666667 384 85.3333333333333 345.8133333333334 85.3333333333333 298.6666666666667S161.7066666666667 213.3333333333334 256 213.3333333333334S426.6666666666667 251.52 426.6666666666667 298.6666666666667S350.2933333333334 384 256 384M85.3333333333333 256V192C85.3333333333333 144.8533333333334 161.7066666666667 106.6666666666667 256 106.6666666666667S426.6666666666667 144.8533333333334 426.6666666666667 192V256C426.6666666666667 208.8533333333333 350.2933333333334 170.6666666666667 256 170.6666666666667S85.3333333333333 208.8533333333333 85.3333333333333 256M85.3333333333333 149.3333333333334V85.3333333333334C85.3333333333333 38.1866666666667 161.7066666666667 0 256 0S426.6666666666667 38.1866666666667 426.6666666666667 85.3333333333334V149.3333333333334C426.6666666666667 102.1866666666667 350.2933333333334 64 256 64S85.3333333333333 102.1866666666667 85.3333333333333 149.3333333333334z" /> + <glyph glyph-name="database-minus" + unicode="&#xF1B9;" + horiz-adv-x="512" d=" M192 384C97.7066666666667 384 21.3333333333333 345.8133333333334 21.3333333333333 298.6666666666667S97.7066666666667 213.3333333333334 192 213.3333333333334S362.6666666666667 251.52 362.6666666666667 298.6666666666667S286.2933333333333 384 192 384M21.3333333333333 256V192C21.3333333333333 144.8533333333334 97.7066666666667 106.6666666666667 192 106.6666666666667S362.6666666666667 144.8533333333334 362.6666666666667 192V256C362.6666666666667 208.8533333333333 286.2933333333333 170.6666666666667 192 170.6666666666667S21.3333333333333 208.8533333333333 21.3333333333333 256M21.3333333333333 149.3333333333334V85.3333333333334C21.3333333333333 38.1866666666667 97.7066666666667 0 192 0C222.08 0 251.52 4.0533333333334 277.3333333333333 11.52V75.52C251.52 68.0533333333333 222.08 64 192 64C97.7066666666667 64 21.3333333333333 102.1866666666667 21.3333333333333 149.3333333333334M320 85.3333333333334V42.6666666666667H490.6666666666666V85.3333333333334" /> + <glyph glyph-name="database-plus" + unicode="&#xF1BA;" + horiz-adv-x="512" d=" M192 384C97.7066666666667 384 21.3333333333333 345.8133333333334 21.3333333333333 298.6666666666667S97.7066666666667 213.3333333333334 192 213.3333333333334S362.6666666666667 251.52 362.6666666666667 298.6666666666667S286.2933333333333 384 192 384M21.3333333333333 256V192C21.3333333333333 144.8533333333334 97.7066666666667 106.6666666666667 192 106.6666666666667S362.6666666666667 144.8533333333334 362.6666666666667 192V256C362.6666666666667 208.8533333333333 286.2933333333333 170.6666666666667 192 170.6666666666667S21.3333333333333 208.8533333333333 21.3333333333333 256M21.3333333333333 149.3333333333334V85.3333333333334C21.3333333333333 38.1866666666667 97.7066666666667 0 192 0C222.08 0 251.52 4.0533333333334 277.3333333333333 11.52V75.52C251.52 68.0533333333333 222.08 64 192 64C97.7066666666667 64 21.3333333333333 102.1866666666667 21.3333333333333 149.3333333333334M384 149.3333333333334V85.3333333333334H320V42.6666666666667H384V-21.3333333333333H426.6666666666667V42.6666666666667H490.6666666666666V85.3333333333334H426.6666666666667V149.3333333333334" /> + <glyph glyph-name="debug-step-into" + unicode="&#xF1BB;" + horiz-adv-x="512" d=" M256 -21.3333333333333C232.5333333333334 -21.3333333333333 213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334S232.5333333333334 64 256 64S298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333M277.3333333333333 405.3333333333333V170.6666666666667L373.3333333333333 266.6666666666667L403.6266666666667 236.3733333333334L256 88.7466666666667L108.3733333333333 236.3733333333334L138.6666666666667 266.6666666666667L234.6666666666667 170.6666666666667V405.3333333333333H277.3333333333333z" /> + <glyph glyph-name="debug-step-out" + unicode="&#xF1BC;" + horiz-adv-x="512" d=" M256 -21.3333333333333C232.5333333333334 -21.3333333333333 213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334S232.5333333333334 64 256 64S298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333M277.3333333333333 106.6666666666667H234.6666666666667V320L138.6666666666667 224L108.3733333333333 254.2933333333334L256 401.92L403.6266666666667 254.2933333333334L373.3333333333333 224L277.3333333333333 320V106.6666666666667z" /> + <glyph glyph-name="debug-step-over" + unicode="&#xF1BD;" + horiz-adv-x="512" d=" M256 149.3333333333334C279.4666666666667 149.3333333333334 298.6666666666667 130.1333333333333 298.6666666666667 106.6666666666667S279.4666666666667 64 256 64S213.3333333333333 83.2 213.3333333333333 106.6666666666667S232.5333333333334 149.3333333333334 256 149.3333333333334M500.48 258.9866666666667L466.56 112L320 145.92L401.0666666666667 196.6933333333333C370.9866666666667 245.3333333333334 317.2266666666667 277.3333333333334 256 277.3333333333334C171.7333333333334 277.3333333333334 101.76 216.32 87.8933333333333 135.8933333333334L45.8666666666667 143.36C63.1466666666667 243.6266666666667 150.6133333333333 320 256 320C332.3733333333334 320 399.5733333333333 279.68 437.3333333333333 219.3066666666667L500.48 258.9866666666667z" /> + <glyph glyph-name="decimal-decrease" + unicode="&#xF1BE;" + horiz-adv-x="512" d=" M256 85.3333333333334L320 21.3333333333334V64H448V106.6666666666667H320V149.3333333333334L256 85.3333333333334M192 341.3333333333334C227.4133333333334 341.3333333333334 256 312.7466666666667 256 277.3333333333334V213.3333333333334C256 177.92 227.4133333333334 149.3333333333334 192 149.3333333333334S128 177.92 128 213.3333333333334V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334M192 298.6666666666667C180.2666666666667 298.6666666666667 170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334V213.3333333333334C170.6666666666667 201.6 180.2666666666667 192 192 192S213.3333333333333 201.6 213.3333333333333 213.3333333333334V277.3333333333334C213.3333333333333 289.0666666666667 203.7333333333334 298.6666666666667 192 298.6666666666667M85.3333333333333 192C97.0666666666667 192 106.6666666666667 182.4 106.6666666666667 170.6666666666667S97.0666666666667 149.3333333333334 85.3333333333333 149.3333333333334S64 158.9333333333333 64 170.6666666666667S73.6 192 85.3333333333333 192z" /> + <glyph glyph-name="decimal-increase" + unicode="&#xF1BF;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334L405.3333333333333 21.3333333333334V64H277.3333333333333V106.6666666666667H405.3333333333333V149.3333333333334L469.3333333333333 85.3333333333334M192 341.3333333333334C227.4133333333334 341.3333333333334 256 312.7466666666667 256 277.3333333333334V213.3333333333334C256 177.92 227.4133333333334 149.3333333333334 192 149.3333333333334S128 177.92 128 213.3333333333334V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334M192 298.6666666666667C180.2666666666667 298.6666666666667 170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334V213.3333333333334C170.6666666666667 201.6 180.2666666666667 192 192 192S213.3333333333333 201.6 213.3333333333333 213.3333333333334V277.3333333333334C213.3333333333333 289.0666666666667 203.7333333333334 298.6666666666667 192 298.6666666666667M341.3333333333333 341.3333333333334C376.7466666666667 341.3333333333334 405.3333333333333 312.7466666666667 405.3333333333333 277.3333333333334V213.3333333333334C405.3333333333333 177.92 376.7466666666667 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 177.92 277.3333333333333 213.3333333333334V277.3333333333334C277.3333333333333 312.7466666666667 305.92 341.3333333333334 341.3333333333333 341.3333333333334M341.3333333333333 298.6666666666667C329.6 298.6666666666667 320 289.0666666666667 320 277.3333333333334V213.3333333333334C320 201.6 329.6 192 341.3333333333333 192S362.6666666666667 201.6 362.6666666666667 213.3333333333334V277.3333333333334C362.6666666666667 289.0666666666667 353.0666666666667 298.6666666666667 341.3333333333333 298.6666666666667M85.3333333333333 192C97.0666666666667 192 106.6666666666667 182.4 106.6666666666667 170.6666666666667S97.0666666666667 149.3333333333334 85.3333333333333 149.3333333333334S64 158.9333333333333 64 170.6666666666667S73.6 192 85.3333333333333 192z" /> + <glyph glyph-name="delete" + unicode="&#xF1C0;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667H330.6666666666667L309.3333333333333 384H202.6666666666667L181.3333333333333 362.6666666666667H106.6666666666667V320H405.3333333333333M128 42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H341.3333333333333C364.8 0 384 19.2 384 42.6666666666667V298.6666666666667H128V42.6666666666667z" /> + <glyph glyph-name="delete-forever" + unicode="&#xF5E8;" + horiz-adv-x="512" d=" M128 42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H341.3333333333333C364.8 0 384 19.2 384 42.6666666666667V298.6666666666667H128V42.6666666666667M180.48 194.56L210.56 224.6400000000001L256 179.4133333333334L301.2266666666667 224.6400000000001L331.3066666666667 194.56L286.08 149.3333333333334L331.3066666666667 104.1066666666667L301.2266666666667 74.0266666666666L256 119.2533333333333L210.7733333333333 74.0266666666666L180.6933333333333 104.1066666666667L225.92 149.3333333333334L180.48 194.56M330.6666666666667 362.6666666666667L309.3333333333333 384H202.6666666666667L181.3333333333333 362.6666666666667H106.6666666666667V320H405.3333333333333V362.6666666666667H330.6666666666667z" /> + <glyph glyph-name="delete-sweep" + unicode="&#xF5E9;" + horiz-adv-x="512" d=" M320 106.6666666666667H405.3333333333333V64H320V106.6666666666667M320 277.3333333333334H469.3333333333333V234.6666666666667H320V277.3333333333334M320 192H448V149.3333333333334H320V192M64 64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H234.6666666666667C258.1333333333334 21.3333333333334 277.3333333333333 40.5333333333333 277.3333333333333 64V277.3333333333334H64V64M298.6666666666667 341.3333333333334H234.6666666666667L213.3333333333333 362.6666666666667H128L106.6666666666667 341.3333333333334H42.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334z" /> + <glyph glyph-name="delete-variant" + unicode="&#xF1C1;" + horiz-adv-x="512" d=" M448.64 384L384 14.72C380.3733333333333 -5.76 362.6666666666667 -21.3333333333333 341.3333333333333 -21.3333333333333H170.6666666666667C149.3333333333333 -21.3333333333333 131.6266666666667 -5.76 128 14.72L63.36 384H448.64M114.3466666666667 341.3333333333334L170.6666666666667 21.3333333333334H341.3333333333333L397.6533333333333 341.3333333333334H114.3466666666667M192 64V149.3333333333334H277.3333333333333V64H192M277.3333333333333 166.8266666666667L209.4933333333334 234.6666666666667L277.3333333333333 302.5066666666667L345.1733333333333 234.6666666666667L277.3333333333333 166.8266666666667z" /> + <glyph glyph-name="delta" + unicode="&#xF1C2;" + horiz-adv-x="512" d=" M256 282.24L392.32 64H119.68L256 282.24M256 362.6666666666667L42.6666666666667 21.3333333333334H469.3333333333333" /> + <glyph glyph-name="deskphone" + unicode="&#xF1C3;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M320 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H320M106.6666666666667 341.3333333333334V256H277.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M170.6666666666667 213.3333333333334V170.6666666666667H213.3333333333333V213.3333333333334H170.6666666666667M234.6666666666667 213.3333333333334V170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M106.6666666666667 149.3333333333334V106.6666666666667H149.3333333333333V149.3333333333334H106.6666666666667M170.6666666666667 149.3333333333334V106.6666666666667H213.3333333333333V149.3333333333334H170.6666666666667M234.6666666666667 149.3333333333334V106.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M234.6666666666667 85.3333333333334V42.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667M170.6666666666667 85.3333333333334V42.6666666666667H213.3333333333333V85.3333333333334H170.6666666666667M106.6666666666667 85.3333333333334V42.6666666666667H149.3333333333333V85.3333333333334H106.6666666666667z" /> + <glyph glyph-name="desktop-mac" + unicode="&#xF1C4;" + horiz-adv-x="512" d=" M448 149.3333333333334H64V362.6666666666667H448M448 405.3333333333333H64C40.32 405.3333333333333 21.3333333333333 386.3466666666667 21.3333333333333 362.6666666666667V106.6666666666667C21.3333333333333 83.2 40.5333333333333 64 64 64H213.3333333333333L170.6666666666667 0V-21.3333333333333H341.3333333333333V0L298.6666666666667 64H448C471.4666666666667 64 490.6666666666666 83.2 490.6666666666666 106.6666666666667V362.6666666666667C490.6666666666666 386.3466666666667 471.4666666666667 405.3333333333333 448 405.3333333333333z" /> + <glyph glyph-name="desktop-tower" + unicode="&#xF1C5;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C364.8 405.3333333333333 384 386.1333333333334 384 362.6666666666667V21.3333333333334C384 -2.1333333333333 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333H170.6666666666667C147.2 -21.3333333333333 128 -2.1333333333333 128 21.3333333333334V362.6666666666667C128 386.1333333333334 147.2 405.3333333333333 170.6666666666667 405.3333333333333M170.6666666666667 362.6666666666667V320H341.3333333333333V362.6666666666667H170.6666666666667M341.3333333333333 277.3333333333334H170.6666666666667V234.6666666666667H341.3333333333333V277.3333333333334M341.3333333333333 64H298.6666666666667V21.3333333333334H341.3333333333333V64z" /> + <glyph glyph-name="details" + unicode="&#xF1C6;" + horiz-adv-x="512" d=" M136.1066666666667 320H376.1066666666667L256 106.6666666666667L136.1066666666667 320M64 362.6666666666667L256 21.3333333333334L448 362.6666666666667H64z" /> + <glyph glyph-name="deviantart" + unicode="&#xF1C7;" + horiz-adv-x="512" d=" M128 320H256L298.6666666666667 405.3333333333333H384V320L309.3333333333333 170.6666666666667H384V64H256L213.3333333333333 -21.3333333333333H128V64L202.6666666666667 213.3333333333334H128V320z" /> + <glyph glyph-name="dialpad" + unicode="&#xF61C;" + horiz-adv-x="512" d=" M256 42.6666666666667C232.5333333333334 42.6666666666667 213.3333333333333 23.4666666666667 213.3333333333333 0S232.5333333333334 -42.6666666666666 256 -42.6666666666666S298.6666666666667 -23.4666666666667 298.6666666666667 0S279.4666666666667 42.6666666666667 256 42.6666666666667M128 426.6666666666667C104.5333333333333 426.6666666666667 85.3333333333333 407.4666666666667 85.3333333333333 384S104.5333333333333 341.3333333333334 128 341.3333333333334S170.6666666666667 360.5333333333334 170.6666666666667 384S151.4666666666667 426.6666666666667 128 426.6666666666667M128 298.6666666666667C104.5333333333333 298.6666666666667 85.3333333333333 279.4666666666667 85.3333333333333 256S104.5333333333333 213.3333333333334 128 213.3333333333334S170.6666666666667 232.5333333333334 170.6666666666667 256S151.4666666666667 298.6666666666667 128 298.6666666666667M128 170.6666666666667C104.5333333333333 170.6666666666667 85.3333333333333 151.4666666666667 85.3333333333333 128S104.5333333333333 85.3333333333334 128 85.3333333333334S170.6666666666667 104.5333333333333 170.6666666666667 128S151.4666666666667 170.6666666666667 128 170.6666666666667M384 341.3333333333334C407.4666666666667 341.3333333333334 426.6666666666667 360.5333333333334 426.6666666666667 384S407.4666666666667 426.6666666666667 384 426.6666666666667S341.3333333333333 407.4666666666667 341.3333333333333 384S360.5333333333333 341.3333333333334 384 341.3333333333334M256 170.6666666666667C232.5333333333334 170.6666666666667 213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334S298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667M384 170.6666666666667C360.5333333333333 170.6666666666667 341.3333333333333 151.4666666666667 341.3333333333333 128S360.5333333333333 85.3333333333334 384 85.3333333333334S426.6666666666667 104.5333333333333 426.6666666666667 128S407.4666666666667 170.6666666666667 384 170.6666666666667M384 298.6666666666667C360.5333333333333 298.6666666666667 341.3333333333333 279.4666666666667 341.3333333333333 256S360.5333333333333 213.3333333333334 384 213.3333333333334S426.6666666666667 232.5333333333334 426.6666666666667 256S407.4666666666667 298.6666666666667 384 298.6666666666667M256 298.6666666666667C232.5333333333334 298.6666666666667 213.3333333333333 279.4666666666667 213.3333333333333 256S232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 232.5333333333334 298.6666666666667 256S279.4666666666667 298.6666666666667 256 298.6666666666667M256 426.6666666666667C232.5333333333334 426.6666666666667 213.3333333333333 407.4666666666667 213.3333333333333 384S232.5333333333334 341.3333333333334 256 341.3333333333334S298.6666666666667 360.5333333333334 298.6666666666667 384S279.4666666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="diamond" + unicode="&#xF1C8;" + horiz-adv-x="512" d=" M341.3333333333333 256H405.3333333333333L298.6666666666667 106.6666666666667M213.3333333333333 256H298.6666666666667L256 85.3333333333334M106.6666666666667 256H170.6666666666667L213.3333333333333 106.6666666666667M320 362.6666666666667H362.6666666666667L405.3333333333333 298.6666666666667H341.3333333333333M234.6666666666667 362.6666666666667H277.3333333333333L298.6666666666667 298.6666666666667H213.3333333333333M149.3333333333333 362.6666666666667H192L170.6666666666667 298.6666666666667H106.6666666666667M128 405.3333333333333L42.6666666666667 277.3333333333334L256 -21.3333333333333L469.3333333333333 277.3333333333334L384 405.3333333333333H128z" /> + <glyph glyph-name="dice-1" + unicode="&#xF1CA;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="dice-2" + unicode="&#xF1CB;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128z" /> + <glyph glyph-name="dice-3" + unicode="&#xF1CC;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128z" /> + <glyph glyph-name="dice-4" + unicode="&#xF1CD;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-5" + unicode="&#xF1CE;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-6" + unicode="&#xF1CF;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 234.6666666666667C339.2 234.6666666666667 320 215.4666666666667 320 192S339.2 149.3333333333334 362.6666666666667 149.3333333333334S405.3333333333333 168.5333333333334 405.3333333333333 192S386.1333333333334 234.6666666666667 362.6666666666667 234.6666666666667M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M149.3333333333333 234.6666666666667C125.8666666666667 234.6666666666667 106.6666666666667 215.4666666666667 106.6666666666667 192S125.8666666666667 149.3333333333334 149.3333333333333 149.3333333333334S192 168.5333333333334 192 192S172.8 234.6666666666667 149.3333333333333 234.6666666666667M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-d20" + unicode="&#xF5EA;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667M318.5066666666667 271.5733333333334C348.8 271.5733333333334 373.3333333333333 247.04 373.3333333333333 216.7466666666667V160C373.3333333333333 130.1333333333333 348.8 105.6 318.5066666666667 105.6C288 105.6 263.68 130.1333333333333 263.68 160V216.7466666666667C263.68 247.04 288.2133333333333 271.5733333333334 318.5066666666667 271.5733333333334M318.2933333333333 240.8533333333334C305.92 240.8533333333334 295.68 230.8266666666667 295.68 218.24V159.36C295.68 146.7733333333334 305.92 136.5333333333334 318.2933333333333 136.5333333333334C330.6666666666667 136.5333333333334 341.3333333333333 146.7733333333334 341.3333333333333 159.36V218.24C341.3333333333333 230.8266666666667 330.6666666666667 240.8533333333334 318.2933333333333 240.8533333333334M244.2666666666667 133.1200000000001V107.5200000000001L134.6133333333333 108.1600000000001V129.9200000000001S207.7866666666667 200.96 208 222.5066666666667C208 248.9600000000001 186.24 246.1866666666667 186.24 246.1866666666667S165.3333333333333 245.3333333333334 162.9866666666667 219.5200000000001L130.9866666666667 218.4533333333334S131.84 271.7866666666667 188.3733333333333 271.7866666666667C238.9333333333333 271.7866666666667 239.5733333333333 233.8133333333334 239.5733333333333 224C239.5733333333333 188.16 173.8666666666667 132.9066666666667 173.8666666666667 132.9066666666667L244.2666666666667 133.12z" /> + <glyph glyph-name="dice-d4" + unicode="&#xF5EB;" + horiz-adv-x="512" d=" M286.5066666666667 124.8H304.8533333333333V98.9866666666667H286.5066666666667V64H254.2933333333333V98.9866666666667H188.16L186.6666666666667 119.2533333333333L254.08 225.7066666666667H286.5066666666667V124.8M218.6666666666667 124.8H254.2933333333333V181.9733333333334L218.6666666666667 124.8M469.3333333333333 0H42.6666666666667C34.9866666666667 0 27.9466666666667 4.0533333333334 24.1066666666667 10.6666666666667C20.2666666666667 17.4933333333333 20.48 25.8133333333334 24.5333333333333 32L237.8666666666667 384C245.3333333333333 397.2266666666667 266.6666666666667 397.2266666666667 274.3466666666667 384L487.6799999999999 32C491.52 25.8133333333334 491.7333333333333 17.4933333333333 487.8933333333333 10.6666666666667C484.0533333333333 4.0533333333334 477.0133333333333 0 469.3333333333333 0M80.64 42.6666666666667H431.5733333333333L256 332.1600000000001L80.64 42.6666666666667z" /> + <glyph glyph-name="dice-d6" + unicode="&#xF5EC;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M285.6533333333333 244.6933333333334C232.32 245.3333333333333 231.68 202.0266666666667 231.68 202.0266666666667S243.4133333333334 216.1066666666667 267.3066666666667 216.1066666666667C281.3866666666667 216.1066666666667 309.3333333333334 203.7333333333333 310.4 161.92C311.68 117.9733333333334 272.4266666666667 106.6666666666667 272.4266666666667 106.6666666666667S197.76 88.3200000000001 198.4 177.92C199.04 278.6133333333334 285.6533333333333 270.2933333333334 285.6533333333333 270.2933333333334V244.6933333333334M254.9333333333334 189.8666666666667C239.1466666666667 192 231.04 175.36 231.04 175.36L231.4666666666667 160C231.4666666666667 143.5733333333334 242.9866666666667 131.6266666666667 256 131.6266666666667C269.0133333333333 131.6266666666667 278.4000000000001 143.5733333333334 278.4000000000001 160S267.9466666666667 189.8666666666667 254.9333333333334 189.8666666666667z" /> + <glyph glyph-name="dice-d8" + unicode="&#xF5ED;" + horiz-adv-x="512" d=" M256 -42.6666666666666C248.96 -42.6666666666666 242.56 -39.2533333333333 238.5066666666667 -33.4933333333333L89.1733333333333 179.84C84.0533333333333 187.0933333333334 84.0533333333333 196.9066666666667 89.1733333333333 204.16L238.5066666666667 417.4933333333334C246.4 429.0133333333333 265.6 429.0133333333333 273.4933333333334 417.4933333333334L422.8266666666667 204.16C427.9466666666666 196.9066666666667 427.9466666666666 187.0933333333334 422.8266666666667 179.84L273.4933333333334 -33.4933333333333C269.44 -39.2533333333333 263.04 -42.6666666666666 256 -42.6666666666666M132.6933333333333 192L256 15.7866666666666L379.3066666666667 192L256 368.2133333333334L132.6933333333333 192M256 272C283.9466666666667 272 306.7733333333333 251.7333333333334 306.7733333333333 226.5600000000001C306.7733333333333 211.84 298.6666666666667 198.8266666666667 286.72 190.5066666666667C301.6533333333333 182.1866666666667 311.4666666666667 167.8933333333334 311.4666666666667 151.4666666666667C311.4666666666667 125.4400000000001 286.72 104.5333333333334 256 104.5333333333334C225.28 104.5333333333334 200.5333333333333 125.4400000000001 200.5333333333333 151.4666666666667C200.5333333333333 167.8933333333334 210.3466666666667 182.1866666666667 225.28 190.5066666666667C213.3333333333333 198.8266666666667 205.44 211.84 205.44 226.5600000000001C205.44 251.7333333333334 228.0533333333334 272 256 272M256 178.1333333333333C242.9866666666667 178.1333333333333 232.5333333333334 167.68 232.5333333333334 154.6666666666667C232.5333333333334 141.6533333333334 242.9866666666667 131.2000000000001 256 131.2000000000001C269.0133333333333 131.2000000000001 279.4666666666667 141.6533333333334 279.4666666666667 154.6666666666667C279.4666666666667 167.68 269.0133333333333 178.1333333333333 256 178.1333333333333M256 245.3333333333334C245.3333333333333 245.3333333333334 236.8 235.7333333333334 236.8 224S245.3333333333333 202.6666666666667 256 202.6666666666667S275.2 212.2666666666667 275.2 224S266.6666666666667 245.3333333333334 256 245.3333333333334z" /> + <glyph glyph-name="dictionary" + unicode="&#xF61D;" + horiz-adv-x="512" d=" M123.9466666666667 405.3333333333333C103.04 403.4133333333334 85.3333333333333 384 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -1.0666666666667 105.6 -21.3333333333333 128 -21.3333333333333H384C406.4 -21.3333333333333 426.6666666666667 -1.0666666666667 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.3466666666667 407.4666666666667 405.3333333333333 384 405.3333333333333H256V256L202.6666666666667 288L149.3333333333333 256V405.3333333333333H123.9466666666667M256 170.6666666666667H277.3333333333333C289.0666666666667 170.6666666666667 298.6666666666667 161.0666666666667 298.6666666666667 149.3333333333334V64H277.3333333333333V106.6666666666667H256V64H234.6666666666667V149.3333333333334C234.6666666666667 161.0666666666667 244.2666666666667 170.6666666666667 256 170.6666666666667M256 149.3333333333334V128H277.3333333333333V149.3333333333334H256M320 128H384V106.6666666666667L341.3333333333333 42.6666666666667H384V21.3333333333334H320V42.6666666666667L362.6666666666667 106.6666666666667H320V128z" /> + <glyph glyph-name="directions" + unicode="&#xF1D0;" + horiz-adv-x="512" d=" M298.6666666666667 138.6666666666667V192H213.3333333333333V128H170.6666666666667V213.3333333333334C170.6666666666667 225.0666666666667 180.2666666666667 234.6666666666667 192 234.6666666666667H298.6666666666667V288L373.3333333333333 213.3333333333334M463.1466666666666 207.1466666666667L271.1466666666667 399.1466666666667H270.9333333333334C262.6133333333334 407.4666666666667 249.1733333333334 407.4666666666667 240.8533333333334 399.1466666666667L48.8533333333334 207.1466666666667C40.5333333333333 198.8266666666667 40.5333333333333 185.1733333333334 48.8533333333334 176.8533333333334L240.8533333333334 -15.1466666666666C249.1733333333334 -23.2533333333333 262.6133333333334 -23.4666666666667 271.1466666666667 -15.1466666666666L463.1466666666666 176.8533333333334C471.4666666666667 185.1733333333334 471.4666666666667 198.8266666666667 463.1466666666666 207.1466666666667z" /> + <glyph glyph-name="directions-fork" + unicode="&#xF641;" + horiz-adv-x="512" d=" M64 362.6666666666667V181.3333333333334L128 245.3333333333334L192 170.6666666666667C213.3333333333333 149.3333333333334 213.3333333333333 128 213.3333333333333 128V0H298.6666666666667V149.3333333333334S298.6666666666667 170.6666666666667 287.36 192S256 234.6666666666667 256 234.6666666666667L192 307.6266666666667L245.3333333333333 362.6666666666667M384 362.6666666666667L288.8533333333333 267.3066666666668L298.6666666666667 256S318.5066666666667 234.6666666666667 330.0266666666667 213.3333333333334C334.5066666666667 204.8 337.0666666666667 196.48 338.56 189.2266666666667L448 298.6666666666667" /> + <glyph glyph-name="discord" + unicode="&#xF66F;" + horiz-adv-x="512" d=" M469.3333333333333 -64L357.3333333333333 42.6666666666667L370.7733333333333 0H96C66.56 0 42.6666666666667 23.8933333333334 42.6666666666667 53.3333333333334V373.3333333333334C42.6666666666667 402.7733333333333 66.56 426.6666666666667 96 426.6666666666667H416C445.44 426.6666666666667 469.3333333333333 402.7733333333333 469.3333333333333 373.3333333333334V-64M256 302.9333333333334C198.8266666666667 302.9333333333334 158.72 278.4000000000001 158.72 278.4000000000001C180.6933333333333 298.0266666666667 219.0933333333333 309.3333333333334 219.0933333333333 309.3333333333334L215.4666666666667 312.9600000000001C179.4133333333333 312.3200000000001 146.7733333333333 287.36 146.7733333333333 287.36C110.08 210.7733333333334 112.4266666666666 144.6400000000001 112.4266666666666 144.6400000000001C142.2933333333333 106.0266666666668 186.6666666666666 108.8000000000001 186.6666666666666 108.8000000000001L201.8133333333333 128.0000000000001C175.1466666666666 133.7600000000001 158.2933333333333 157.4400000000001 158.2933333333333 157.4400000000001S198.4 130.1333333333333 256 130.1333333333333S353.7066666666666 157.44 353.7066666666666 157.44S336.8533333333333 133.76 310.1866666666666 128L325.3333333333333 108.8S369.7066666666666 106.0266666666666 399.5733333333333 144.64C399.5733333333333 144.64 401.92 210.7733333333333 365.2266666666667 287.36C365.2266666666667 287.36 332.5866666666667 312.32 296.5333333333333 312.9600000000001L292.9066666666667 309.3333333333334S331.3066666666667 298.0266666666667 353.2800000000001 278.4C353.2800000000001 278.4 313.1733333333334 302.9333333333334 256.0000000000001 302.9333333333334M211.8400000000001 222.08C225.7066666666668 222.08 237.0133333333334 209.92 236.8000000000001 194.9866666666667C236.8000000000001 180.2666666666667 225.7066666666668 167.8933333333334 211.8400000000001 167.8933333333334C198.1866666666667 167.8933333333334 187.0933333333334 180.2666666666667 187.0933333333334 194.9866666666667C187.0933333333334 209.92 197.9733333333334 222.08 211.8400000000001 222.08M300.8000000000001 222.08C314.6666666666668 222.08 325.7600000000001 209.92 325.7600000000001 194.9866666666667C325.7600000000001 180.2666666666667 314.6666666666668 167.8933333333334 300.8000000000001 167.8933333333334C287.1466666666667 167.8933333333334 276.0533333333334 180.2666666666667 276.0533333333334 194.9866666666667C276.0533333333334 209.92 286.9333333333334 222.08 300.8000000000001 222.08z" /> + <glyph glyph-name="disk" + unicode="&#xF5EE;" + horiz-adv-x="512" d=" M256 149.3333333333334C232.32 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192C213.3333333333333 215.68 232.32 234.6666666666667 256 234.6666666666667C279.68 234.6666666666667 298.6666666666667 215.68 298.6666666666667 192C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="disk-alert" + unicode="&#xF1D1;" + horiz-adv-x="512" d=" M213.3333333333333 149.3333333333334C189.6533333333333 149.3333333333334 170.6666666666667 168.5333333333334 170.6666666666667 192C170.6666666666667 215.68 189.6533333333333 234.6666666666667 213.3333333333333 234.6666666666667C236.8 234.6666666666667 256 215.4666666666667 256 192S236.8 149.3333333333334 213.3333333333333 149.3333333333334M213.3333333333333 362.6666666666667C119.04 362.6666666666667 42.6666666666667 286.2933333333334 42.6666666666667 192S119.04 21.3333333333334 213.3333333333333 21.3333333333334S384 97.7066666666667 384 192S307.6266666666667 362.6666666666667 213.3333333333333 362.6666666666667M426.6666666666667 192H469.3333333333333V298.6666666666667H426.6666666666667M426.6666666666667 106.6666666666667H469.3333333333333V149.3333333333334H426.6666666666667V106.6666666666667z" /> + <glyph glyph-name="disqus" + unicode="&#xF1D2;" + horiz-adv-x="512" d=" M257.7066666666667 -21.3333333333333C205.44 -21.3333333333333 157.6533333333333 -2.3466666666666 120.7466666666667 29.2266666666667L30.08 16.8533333333334L65.0666666666667 103.4666666666667C53.3333333333333 130.5600000000001 46.08 160.0000000000001 46.08 192.0000000000001C46.08 309.3333333333334 140.8 405.3333333333334 257.7066666666667 405.3333333333334C374.6133333333333 405.3333333333333 469.3333333333333 309.3333333333334 469.3333333333333 192S374.6133333333333 -21.3333333333333 257.7066666666667 -21.3333333333333M373.3333333333333 192.64V193.28C373.3333333333333 254.72 329.8133333333334 298.6666666666667 254.9333333333333 298.6666666666667H174.08V85.3333333333334H253.8666666666667C329.1733333333333 85.3333333333334 373.3333333333333 130.9866666666667 373.3333333333333 192.6400000000001M256 137.8133333333334H232.32V246.1866666666667H256C290.56 246.1866666666667 313.6 226.3466666666667 313.6 192C313.6 157.2266666666667 290.56 137.8133333333334 256 137.8133333333334z" /> + <glyph glyph-name="disqus-outline" + unicode="&#xF1D3;" + horiz-adv-x="512" d=" M253.8666666666667 138.6666666666667H230.4V245.3333333333334H253.8666666666667C288 245.3333333333334 311.4666666666667 226.1333333333334 311.4666666666667 192S288 138.6666666666667 253.8666666666667 138.6666666666667M253.8666666666667 298.6666666666667H172.8V85.3333333333334H251.7333333333334C326.4 85.3333333333334 371.2 130.1333333333333 371.2 192S328.5333333333333 298.6666666666667 253.8666666666666 298.6666666666667M256 21.3333333333334C215.4666666666666 21.3333333333334 177.0666666666666 36.2666666666667 147.2 61.8666666666667L132.2666666666666 74.6666666666667L96 70.4L110.9333333333333 104.5333333333334L104.5333333333333 121.6000000000001C93.8666666666666 145.0666666666667 89.6 168.5333333333334 89.6 194.1333333333334C89.6 288.0000000000001 166.4 364.8000000000001 258.1333333333333 364.8000000000001C349.8666666666666 364.8000000000001 424.5333333333333 285.8666666666668 424.5333333333333 192.0000000000001C424.5333333333333 98.1333333333334 347.7333333333333 21.3333333333334 256 21.3333333333334M256 405.3333333333335C138.6666666666667 405.3333333333333 44.8 309.3333333333334 44.8 192C44.8 160 51.2 130.1333333333333 64 102.4L29.8666666666667 14.9333333333334L121.6 27.7333333333335C157.8666666666667 -4.2666666666665 206.9333333333333 -23.4666666666665 258.1333333333334 -23.4666666666665C375.4666666666667 -23.4666666666665 469.3333333333333 72.5333333333335 469.3333333333333 189.8666666666668S373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="division" + unicode="&#xF1D4;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H405.3333333333333V170.6666666666667M256 341.3333333333334C279.4666666666667 341.3333333333334 298.6666666666667 322.1333333333334 298.6666666666667 298.6666666666667S279.4666666666667 256 256 256S213.3333333333333 275.2000000000001 213.3333333333333 298.6666666666667S232.5333333333334 341.3333333333334 256 341.3333333333334M256 128C279.4666666666667 128 298.6666666666667 108.8 298.6666666666667 85.3333333333334S279.4666666666667 42.6666666666667 256 42.6666666666667S213.3333333333333 61.8666666666667 213.3333333333333 85.3333333333334S232.5333333333334 128 256 128z" /> + <glyph glyph-name="division-box" + unicode="&#xF1D5;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H362.6666666666667M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667M256 128C244.2666666666667 128 234.6666666666667 118.4 234.6666666666667 106.6666666666667S244.2666666666667 85.3333333333334 256 85.3333333333334S277.3333333333333 94.9333333333333 277.3333333333333 106.6666666666667S267.7333333333334 128 256 128z" /> + <glyph glyph-name="dns" + unicode="&#xF1D6;" + horiz-adv-x="512" d=" M149.3333333333333 256C125.8666666666667 256 106.6666666666667 275.2000000000001 106.6666666666667 298.6666666666667S125.8666666666667 341.3333333333334 149.3333333333333 341.3333333333334S192 322.1333333333334 192 298.6666666666667S172.8 256 149.3333333333333 256M426.6666666666667 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667V234.6666666666667C64 222.9333333333333 73.6 213.3333333333334 85.3333333333333 213.3333333333334H426.6666666666667C438.4 213.3333333333334 448 222.9333333333333 448 234.6666666666667V362.6666666666667C448 374.4 438.4 384 426.6666666666667 384M149.3333333333333 42.6666666666667C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334S125.8666666666667 128 149.3333333333333 128S192 108.8 192 85.3333333333334S172.8 42.6666666666667 149.3333333333333 42.6666666666667M426.6666666666667 170.6666666666667H85.3333333333333C73.6 170.6666666666667 64 161.0666666666667 64 149.3333333333334V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V149.3333333333334C448 161.0666666666667 438.4 170.6666666666667 426.6666666666667 170.6666666666667z" /> + <glyph glyph-name="domain" + unicode="&#xF1D7;" + horiz-adv-x="512" d=" M384 128H341.3333333333333V85.3333333333334H384M384 213.3333333333334H341.3333333333333V170.6666666666667H384M426.6666666666667 42.6666666666667H256V85.3333333333334H298.6666666666667V128H256V170.6666666666667H298.6666666666667V213.3333333333334H256V256H426.6666666666667M213.3333333333333 298.6666666666667H170.6666666666667V341.3333333333334H213.3333333333333M213.3333333333333 213.3333333333334H170.6666666666667V256H213.3333333333333M213.3333333333333 128H170.6666666666667V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667H170.6666666666667V85.3333333333334H213.3333333333333M128 298.6666666666667H85.3333333333333V341.3333333333334H128M128 213.3333333333334H85.3333333333333V256H128M128 128H85.3333333333333V170.6666666666667H128M128 42.6666666666667H85.3333333333333V85.3333333333334H128M256 298.6666666666667V384H42.6666666666667V0H469.3333333333333V298.6666666666667H256z" /> + <glyph glyph-name="dots-horizontal" + unicode="&#xF1D8;" + horiz-adv-x="512" d=" M341.3333333333333 192C341.3333333333333 215.4666666666667 360.5333333333333 234.6666666666667 384 234.6666666666667S426.6666666666667 215.4666666666667 426.6666666666667 192S407.4666666666667 149.3333333333334 384 149.3333333333334S341.3333333333333 168.5333333333334 341.3333333333333 192M213.3333333333333 192C213.3333333333333 215.4666666666667 232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192M85.3333333333333 192C85.3333333333333 215.4666666666667 104.5333333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.4666666666667 170.6666666666667 192S151.4666666666667 149.3333333333334 128 149.3333333333334S85.3333333333333 168.5333333333334 85.3333333333333 192z" /> + <glyph glyph-name="dots-vertical" + unicode="&#xF1D9;" + horiz-adv-x="512" d=" M256 106.6666666666667C279.4666666666667 106.6666666666667 298.6666666666667 87.4666666666667 298.6666666666667 64S279.4666666666667 21.3333333333334 256 21.3333333333334S213.3333333333333 40.5333333333333 213.3333333333333 64S232.5333333333334 106.6666666666667 256 106.6666666666667M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334S213.3333333333333 296.5333333333334 213.3333333333333 320S232.5333333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="download" + unicode="&#xF1DA;" + horiz-adv-x="512" d=" M106.6666666666667 21.3333333333334H405.3333333333333V64H106.6666666666667M405.3333333333333 256H320V384H192V256H106.6666666666667L256 106.6666666666667L405.3333333333333 256z" /> + <glyph glyph-name="drag" + unicode="&#xF1DB;" + horiz-adv-x="512" d=" M149.3333333333333 42.6666666666667V85.3333333333334H192V42.6666666666667H149.3333333333333M234.6666666666667 42.6666666666667V85.3333333333334H277.3333333333333V42.6666666666667H234.6666666666667M320 42.6666666666667V85.3333333333334H362.6666666666667V42.6666666666667H320M149.3333333333333 128V170.6666666666667H192V128H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M320 128V170.6666666666667H362.6666666666667V128H320M149.3333333333333 213.3333333333334V256H192V213.3333333333334H149.3333333333333M234.6666666666667 213.3333333333334V256H277.3333333333333V213.3333333333334H234.6666666666667M320 213.3333333333334V256H362.6666666666667V213.3333333333334H320M149.3333333333333 298.6666666666667V341.3333333333334H192V298.6666666666667H149.3333333333333M234.6666666666667 298.6666666666667V341.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667M320 298.6666666666667V341.3333333333334H362.6666666666667V298.6666666666667H320z" /> + <glyph glyph-name="drag-horizontal" + unicode="&#xF1DC;" + horiz-adv-x="512" d=" M64 128V170.6666666666667H106.6666666666667V128H64M64 213.3333333333334V256H106.6666666666667V213.3333333333334H64M149.3333333333333 128V170.6666666666667H192V128H149.3333333333333M149.3333333333333 213.3333333333334V256H192V213.3333333333334H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 213.3333333333334V256H277.3333333333333V213.3333333333334H234.6666666666667M320 128V170.6666666666667H362.6666666666667V128H320M320 213.3333333333334V256H362.6666666666667V213.3333333333334H320M405.3333333333333 128V170.6666666666667H448V128H405.3333333333333M405.3333333333333 213.3333333333334V256H448V213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="drag-vertical" + unicode="&#xF1DD;" + horiz-adv-x="512" d=" M192 384H234.6666666666667V341.3333333333334H192V384M277.3333333333333 384H320V341.3333333333334H277.3333333333333V384M192 298.6666666666667H234.6666666666667V256H192V298.6666666666667M277.3333333333333 298.6666666666667H320V256H277.3333333333333V298.6666666666667M192 213.3333333333334H234.6666666666667V170.6666666666667H192V213.3333333333334M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333V213.3333333333334M192 128H234.6666666666667V85.3333333333334H192V128M277.3333333333333 128H320V85.3333333333334H277.3333333333333V128M192 42.6666666666667H234.6666666666667V0H192V42.6666666666667M277.3333333333333 42.6666666666667H320V0H277.3333333333333V42.6666666666667z" /> + <glyph glyph-name="drawing" + unicode="&#xF1DE;" + horiz-adv-x="512" d=" M181.3333333333333 384C246.1866666666667 384 298.6666666666667 331.52 298.6666666666667 266.6666666666667C298.6666666666667 238.2933333333334 288.64 212.2666666666667 271.7866666666667 192H448V0H256V176.2133333333334C235.7333333333334 159.36 209.7066666666667 149.3333333333334 181.3333333333333 149.3333333333334C116.48 149.3333333333334 64 201.8133333333334 64 266.6666666666667S116.48 384 181.3333333333333 384z" /> + <glyph glyph-name="drawing-box" + unicode="&#xF1DF;" + horiz-adv-x="512" d=" M384 64H256V187.52C241.92 174.5066666666667 223.36 166.4 202.6666666666667 166.4C159.1466666666667 166.4 123.7333333333333 201.8133333333333 123.7333333333333 245.3333333333334S159.1466666666667 324.2666666666667 202.6666666666667 324.2666666666667S281.6 288.8533333333334 281.6 245.3333333333334C281.6 224.64 273.4933333333333 206.08 260.48 192H384M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="dribbble" + unicode="&#xF1E0;" + horiz-adv-x="512" d=" M350.2933333333334 55.04C341.3333333333333 96 330.6666666666667 133.76 320 167.04C330.6666666666667 168.5333333333334 341.3333333333333 169.3866666666667 353.7066666666666 169.3866666666667H354.1333333333333C373.9733333333333 169.3866666666667 395.7333333333333 166.8266666666667 419.4133333333333 161.4933333333334C411.3066666666666 117.3333333333334 385.7066666666666 79.5733333333334 350.2933333333332 55.04M256 25.6C218.88 25.6 184.7466666666667 37.76 157.0133333333333 58.4533333333333C162.9866666666667 68.0533333333333 175.5733333333333 86.6133333333334 195.84 105.8133333333333C216.32 125.6533333333333 245.3333333333333 146.1333333333333 282.24 158.2933333333333C294.8266666666667 122.6666666666666 306.3466666666667 82.1333333333333 315.0933333333333 36.48C296.7466666666667 29.44 277.3333333333333 25.5999999999999 256 25.5999999999999M89.6 192V194.3466666666667C94.2933333333333 194.1333333333333 100.48 194.1333333333333 107.7333333333333 194.1333333333333H107.9466666666667C141.2266666666666 194.3466666666667 199.68 197.12 258.9866666666667 215.68C262.1866666666667 208.64 265.3866666666667 201.3866666666667 268.5866666666667 193.7066666666667C228.9066666666667 180.48 197.76 159.36 174.72 138.6666666666667C152.7466666666667 118.1866666666667 137.6 98.3466666666667 128.8533333333333 85.3333333333334C104.5333333333333 113.92 89.6 151.2533333333333 89.6 192M182.4 341.3333333333334C194.1333333333333 327.4666666666667 217.1733333333333 297.3866666666667 241.92 250.6666666666667C192 235.52 141.0133333333333 232.1066666666667 110.5066666666667 232.1066666666667H107.7333333333333C102.6133333333333 232.1066666666667 98.1333333333333 232.1066666666667 94.5066666666667 232.32C106.6666666666667 280.1066666666667 138.6666666666667 320 182.4 341.3333333333334M256 358.4C295.2533333333334 358.4 331.3066666666666 344.7466666666667 359.68 321.92C337.92 295.68 309.3333333333333 277.3333333333334 277.9733333333333 263.4666666666667C256 305.7066666666667 234.6666666666667 336 220.5866666666667 354.56C232.1066666666667 356.9066666666667 243.84 358.4 256 358.4M386.7733333333333 294.8266666666667C407.4666666666666 268.3733333333334 420.48 235.5200000000001 422.1866666666666 199.8933333333334C398.08 205.0133333333334 375.4666666666666 207.36 354.1333333333333 207.36H353.9199999999999C336.8533333333333 207.36 320.8533333333333 205.8666666666667 305.7066666666666 203.3066666666667C302.08 212.2666666666667 298.6666666666666 220.8000000000001 294.6133333333333 229.1200000000001C328.32 243.8400000000001 360.5333333333333 264.9600000000001 386.7733333333332 294.8266666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="dribbble-box" + unicode="&#xF1E1;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M321.92 96C315.9466666666667 125.0133333333333 308.6933333333334 151.2533333333333 300.3733333333334 174.5066666666667L324.2666666666667 176.2133333333334H324.6933333333333C338.56 176.2133333333334 353.92 174.5066666666667 370.3466666666667 170.6666666666667C364.5866666666667 139.9466666666667 346.88 113.28 321.92 96M256 75.52C230.1866666666667 75.52 206.08 84.0533333333333 186.88 98.3466666666667C190.9333333333333 105.1733333333334 199.68 118.1866666666667 213.3333333333333 131.6266666666667C228.2666666666667 145.4933333333334 248.32 160 274.3466666666667 168.3200000000001C283.3066666666666 143.5733333333334 291.2 115.2000000000001 297.3866666666667 83.2C284.3733333333334 78.2933333333333 270.5066666666667 75.52 256 75.52M139.52 192V193.7066666666667L152.32 193.4933333333334C175.7866666666667 193.4933333333334 216.5333333333333 195.6266666666667 258.1333333333334 208.6400000000001L264.7466666666667 193.28C237.0133333333333 183.8933333333334 215.2533333333333 169.1733333333334 199.2533333333333 154.4533333333334C183.68 140.3733333333333 173.2266666666666 126.2933333333334 167.04 117.3333333333334C149.9733333333333 137.3866666666667 139.52 163.4133333333334 139.52 192M204.5866666666667 296.32C212.6933333333333 286.7200000000001 228.9066666666667 265.8133333333334 246.1866666666667 232.96C210.9866666666666 222.5066666666667 175.5733333333333 220.16 154.0266666666667 220.16H142.9333333333333C151.2533333333333 253.6533333333334 174.2933333333333 281.3866666666667 204.5866666666667 296.3200000000001M256 308.48C283.52 308.48 308.6933333333334 298.6666666666667 328.7466666666667 282.88C313.3866666666667 264.5333333333334 293.12 251.3066666666667 271.36 241.92C256 271.5733333333334 241.28 292.6933333333334 231.2533333333334 305.7066666666667C239.1466666666667 307.4133333333334 247.4666666666667 308.48 256 308.48M347.52 263.8933333333334C362.0266666666667 245.3333333333334 371.2 222.5066666666667 372.2666666666667 197.5466666666667C355.4133333333333 200.96 339.6266666666667 202.6666666666667 324.6933333333333 202.6666666666667C312.7466666666666 202.6666666666667 301.44 201.8133333333334 290.7733333333333 199.8933333333334L283.0933333333333 218.0266666666667C306.56 228.2666666666667 329.1733333333333 242.9866666666667 347.52 263.8933333333334M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="drone" + unicode="&#xF1E2;" + horiz-adv-x="512" d=" M469.3333333333333 213.3333333333334H448L426.6666666666667 256H293.3333333333333L341.3333333333333 181.3333333333334H298.6666666666667L229.3333333333333 256H85.3333333333333C73.6 256 42.6666666666667 265.6 42.6666666666667 277.3333333333334S74.6666666666667 330.6666666666667 117.3333333333333 330.6666666666667S163.6266666666667 309.3333333333334 192 298.6666666666667H448C459.7333333333333 298.6666666666667 469.3333333333333 289.0666666666667 469.3333333333333 277.3333333333334V213.3333333333334M229.3333333333333 309.3333333333334L298.6666666666667 384H341.3333333333333L293.3333333333333 309.3333333333334H229.3333333333333M384 213.3333333333334V245.3333333333334H421.3333333333333L405.3333333333333 213.3333333333334H384M64 42.6666666666667C52.2666666666667 42.6666666666667 42.6666666666667 52.2666666666667 42.6666666666667 64S52.2666666666667 85.3333333333334 64 85.3333333333334C111.1466666666667 85.3333333333334 149.3333333333333 47.1466666666667 149.3333333333333 0C149.3333333333333 -11.7333333333333 139.7333333333333 -21.3333333333333 128 -21.3333333333333S106.6666666666667 -11.7333333333333 106.6666666666667 0C106.6666666666667 23.4666666666667 87.4666666666667 42.6666666666667 64 42.6666666666667M234.6666666666667 0C234.6666666666667 -11.7333333333333 225.0666666666667 -21.3333333333333 213.3333333333333 -21.3333333333333S192 -11.7333333333333 192 0C192 70.6133333333334 134.6133333333334 128 64 128C52.2666666666667 128 42.6666666666667 137.6 42.6666666666667 149.3333333333334S52.2666666666667 170.6666666666667 64 170.6666666666667C158.2933333333333 170.6666666666667 234.6666666666667 94.2933333333334 234.6666666666667 0z" /> + <glyph glyph-name="dropbox" + unicode="&#xF1E3;" + horiz-adv-x="512" d=" M256 137.3866666666667L348.8 60.5866666666667L388.2666666666667 86.4V57.6L256 -21.3333333333333L124.16 57.6V86.4L163.84 60.5866666666667L256 137.3866666666667M163.84 394.6666666666667L256 318.0800000000001L348.16 394.6666666666667L480 309.3333333333334L388.9066666666667 235.9466666666667L480 162.9866666666667L348.16 77.0133333333333L256 154.0266666666667L163.84 77.0133333333333L32 162.9866666666667L123.0933333333333 235.9466666666667L32 309.3333333333334L163.84 394.6666666666667M256 156.16L386.7733333333333 235.9466666666667L256 315.9466666666667L125.2266666666667 235.9466666666667L256 156.16z" /> + <glyph glyph-name="drupal" + unicode="&#xF1E4;" + horiz-adv-x="512" d=" M436.6933333333333 135.4666666666667C436.6933333333333 121.8133333333333 432 98.9866666666667 423.04 83.2C413.8666666666666 67.2 407.04 62.72 393.3866666666666 62.72C377.6 65.0666666666666 347.9466666666666 110.5066666666667 327.68 112.64C302.5066666666666 112.64 250.2399999999999 60.3733333333333 207.1466666666666 60.3733333333333C182.1866666666666 60.3733333333333 173.0133333333333 65.0666666666666 166.1866666666666 69.5466666666666C152.5333333333333 78.72 148.0533333333333 92.3733333333333 148.0533333333333 110.5066666666667C148.0533333333333 144.64 179.84 174.08 218.4533333333333 174.08C268.5866666666666 174.08 302.5066666666666 124.16 327.68 126.2933333333333C347.9466666666666 126.2933333333333 388.9066666666667 167.2533333333333 409.3866666666666 167.2533333333333C429.8666666666666 171.7333333333334 436.6933333333333 149.3333333333333 436.6933333333333 135.4666666666667M354.7733333333333 335.36C332.16 349.0133333333333 311.68 355.8399999999999 288.8533333333333 369.4933333333333C275.4133333333333 378.6666666666667 257.0666666666666 398.9333333333333 241.28 417.28C234.6666666666667 387.6266666666666 229.9733333333333 376.32 218.4533333333333 367.1466666666667C195.84 351.36 184.32 344.5333333333333 164.0533333333333 335.36C148.0533333333334 326.4 64 276.2666666666667 64 167.2533333333333C64 58.24 157.2266666666667 -21.3333333333333 257.0666666666667 -21.3333333333333C359.4666666666667 -21.3333333333333 448 53.3333333333334 448 164.9066666666667C452.48 276.2666666666667 368.4266666666666 326.4000000000001 354.7733333333333 335.36z" /> + <glyph glyph-name="duck" + unicode="&#xF1E5;" + horiz-adv-x="512" d=" M181.3333333333333 341.3333333333334C163.6266666666667 341.3333333333334 149.3333333333333 327.04 149.3333333333333 309.3333333333334S163.6266666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 291.6266666666667 213.3333333333333 309.3333333333334S199.04 341.3333333333334 181.3333333333333 341.3333333333334M213.3333333333333 405.3333333333333C272.2133333333333 405.3333333333333 320 357.5466666666667 320 298.6666666666667C320 262.4000000000001 301.8666666666667 230.4000000000001 274.3466666666667 211.2C308.0533333333333 208 346.0266666666667 200.32 384 181.3333333333334C448 149.3333333333334 469.3333333333333 192 469.3333333333333 192S448 0 320 0H192S85.3333333333333 0 85.3333333333333 106.6666666666667C85.3333333333333 170.6666666666667 149.3333333333333 192 128 234.6666666666667C42.6666666666667 234.6666666666667 42.6666666666667 309.3333333333334 42.6666666666667 309.3333333333334C64 298.6666666666667 90.4533333333333 298.6666666666667 106.6666666666667 306.1333333333334C110.72 361.6 157.0133333333333 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="dumbbell" + unicode="&#xF1E6;" + horiz-adv-x="512" d=" M90.0266666666667 146.7733333333334L74.6666666666667 161.92C58.24 178.56 58.24 205.44 74.6666666666667 222.08C91.7333333333333 238.9333333333334 118.6133333333334 238.9333333333334 135.2533333333333 222.08L190.2933333333333 167.2533333333333L280.7466666666667 257.7066666666667L225.92 312.7466666666667C209.0666666666667 329.3866666666667 209.0666666666667 356.2666666666667 225.92 373.3333333333334C242.56 389.76 269.44 389.76 286.08 373.3333333333334L301.2266666666667 357.9733333333334L421.9733333333334 237.2266666666667L437.3333333333333 222.08C453.76 205.44 453.76 178.5600000000001 437.3333333333333 161.92C420.2666666666667 145.0666666666667 393.3866666666667 145.0666666666667 376.7466666666667 161.92L321.7066666666667 216.7466666666667L231.2533333333334 126.2933333333334L286.08 71.2533333333333C302.9333333333333 54.6133333333333 302.9333333333333 27.7333333333334 286.08 10.6666666666667C269.44 -5.76 242.56 -5.76 225.92 10.6666666666667L210.7733333333333 26.0266666666666L90.0266666666666 146.7733333333333M67.4133333333333 33.7066666666667L90.0266666666666 56.3199999999999L59.9466666666666 86.4C51.6266666666666 94.72 51.6266666666666 108.16 59.9466666666666 116.48C68.2666666666666 124.8 81.7066666666666 124.8 90.0266666666666 116.48L180.48 26.0266666666666C188.8 17.7066666666667 188.8 4.2666666666667 180.48 -4.0533333333333C172.16 -12.3733333333333 158.72 -12.3733333333333 150.4 -4.0533333333333L120.32 26.0266666666666L97.7066666666666 3.4133333333334L67.4133333333333 33.7066666666667M414.2933333333334 380.5866666666667L444.5866666666667 350.2933333333334L421.9733333333334 327.68L452.0533333333334 297.6C460.3733333333334 289.28 460.3733333333334 275.8400000000001 452.0533333333334 267.52C443.7333333333334 258.9866666666667 430.2933333333334 258.9866666666667 421.9733333333334 267.52L331.5200000000001 357.9733333333334C323.2000000000001 366.2933333333333 323.2000000000001 379.7333333333334 331.5200000000001 388.0533333333334C339.8400000000001 396.3733333333334 353.2800000000001 396.3733333333334 361.6 388.0533333333334L391.6800000000001 357.9733333333334L414.2933333333334 380.5866666666667z" /> + <glyph glyph-name="earth" + unicode="&#xF1E7;" + horiz-adv-x="512" d=" M381.8666666666666 77.0133333333333C376.32 94.08 360.32 106.6666666666667 341.3333333333333 106.6666666666667H320V170.6666666666667C320 182.4 310.4 192 298.6666666666667 192H170.6666666666667V234.6666666666667H213.3333333333333C225.0666666666667 234.6666666666667 234.6666666666667 244.2666666666667 234.6666666666667 256V298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 317.8666666666667 320 341.3333333333334V350.0800000000001C382.5066666666667 324.9066666666667 426.6666666666667 263.68 426.6666666666667 192C426.6666666666667 147.6266666666667 409.6 107.3066666666667 381.8666666666666 77.0133333333333M234.6666666666667 22.8266666666667C150.4 33.28 85.3333333333333 104.96 85.3333333333333 192C85.3333333333333 205.2266666666667 87.04 218.0266666666667 89.8133333333333 230.1866666666667L192 128V106.6666666666667C192 83.2 211.2 64 234.6666666666667 64M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="earth-off" + unicode="&#xF1E8;" + horiz-adv-x="512" d=" M469.3333333333333 335.5733333333334L437.3333333333333 304C457.8133333333333 271.36 469.3333333333333 233.1733333333334 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333C215.04 -21.3333333333333 176.64 -9.8133333333333 144 10.6666666666667L112.4266666666667 -21.3333333333333L85.3333333333333 5.9733333333334L442.0266666666667 362.6666666666667L469.3333333333333 335.5733333333334M381.8666666666666 77.0133333333333C409.6 107.3066666666667 426.6666666666667 147.6266666666667 426.6666666666667 192C426.6666666666667 221.2266666666667 419.4133333333333 248.7466666666667 406.4 272.64L316.3733333333334 182.6133333333334C318.7200000000001 179.2 320 175.1466666666667 320 170.6666666666666V106.6666666666667H341.3333333333333C360.32 106.6666666666667 376.32 94.08 381.8666666666666 77.0133333333333M234.6666666666667 22.8266666666667V64C224 64 214.8266666666667 67.6266666666667 207.5733333333333 73.8133333333334L175.36 41.6C193.4933333333334 32 213.3333333333333 25.6 234.6666666666667 22.8266666666667M320 350.0800000000001V341.3333333333334C320 317.8666666666667 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667V256C234.6666666666667 244.2666666666667 225.0666666666667 234.6666666666667 213.3333333333333 234.6666666666667H170.6666666666667V192H217.1733333333333L172.5866666666667 147.4133333333334L89.8133333333333 230.1866666666667C87.04 218.0266666666667 85.3333333333333 205.2266666666667 85.3333333333333 192C85.3333333333333 154.88 97.28 120.3200000000001 117.3333333333333 92.3733333333333L87.04 61.8666666666667C59.0933333333333 97.92 42.6666666666667 142.9333333333333 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333C305.0666666666667 405.3333333333333 350.08 388.9066666666667 386.1333333333334 360.9600000000001L355.6266666666667 330.6666666666667C344.7466666666667 338.3466666666667 332.8 344.9600000000001 320 350.0800000000001z" /> + <glyph glyph-name="edge" + unicode="&#xF1E9;" + horiz-adv-x="512" d=" M58.4533333333333 217.3866666666667C81.7066666666667 477.0133333333333 480 477.0133333333333 452.2666666666667 158.72H183.68C183.68 67.2 307.6266666666666 38.1866666666667 416.8533333333333 100.0533333333333V10.0266666666666C282.6666666666667 -61.4399999999999 106.6666666666667 -9.1733333333333 106.6666666666667 147.4133333333334C106.6666666666667 264.9600000000001 212.6933333333333 302.7200000000001 212.6933333333333 302.7200000000001S183.04 264.9600000000001 182.1866666666667 233.6H334.9333333333333C334.9333333333333 385.4933333333334 125.8666666666666 329.1733333333334 58.4533333333333 217.3866666666667z" /> + <glyph glyph-name="eject" + unicode="&#xF1EA;" + horiz-adv-x="512" d=" M256 341.3333333333334L113.7066666666667 128H398.2933333333334M106.6666666666667 85.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V85.3333333333334z" /> + <glyph glyph-name="elevation-decline" + unicode="&#xF1EB;" + horiz-adv-x="512" d=" M448 0H64V208L201.6 128L282.0266666666667 174.9333333333333L448 79.1466666666667V0M64 257.2800000000001V304L201.6 224L282.0266666666667 270.9333333333334L448 175.1466666666667V128L282.0266666666667 224L201.6 177.7066666666667L64 257.2800000000001z" /> + <glyph glyph-name="elevation-rise" + unicode="&#xF1EC;" + horiz-adv-x="512" d=" M64 0V79.1466666666667L229.9733333333334 174.9333333333334L310.4 128L448 208V0H64M448 257.2800000000001L310.4 177.7066666666667L229.9733333333334 224L64 128V175.1466666666667L229.9733333333334 270.9333333333334L310.4 224L448 304V257.2800000000001z" /> + <glyph glyph-name="elevator" + unicode="&#xF1ED;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333L234.6666666666667 320H170.6666666666667V234.6666666666667H128V320H64L149.3333333333333 405.3333333333333M362.6666666666667 234.6666666666667L277.3333333333333 320H341.3333333333333V405.3333333333333H384V320H448L362.6666666666667 234.6666666666667M149.3333333333333 192H362.6666666666667C386.1333333333334 192 405.3333333333333 172.8 405.3333333333333 149.3333333333334V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.8666666666667 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V149.3333333333334C106.6666666666667 172.8 125.8666666666667 192 149.3333333333333 192M149.3333333333333 149.3333333333334V21.3333333333334H362.6666666666667V149.3333333333334H149.3333333333333z" /> + <glyph glyph-name="email" + unicode="&#xF1EE;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334L256 170.6666666666667L85.3333333333333 277.3333333333334V320L256 213.3333333333334L426.6666666666667 320M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="email-open" + unicode="&#xF1EF;" + horiz-adv-x="512" d=" M85.3333333333333 277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334L256 384L85.3333333333333 277.3333333333334M469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V277.3333333333334C42.6666666666667 292.9066666666667 50.9866666666667 306.3466666666667 63.36 313.8133333333334L256 434.3466666666667L448.64 313.8133333333334C461.0133333333333 306.3466666666667 469.3333333333333 292.9066666666667 469.3333333333333 277.3333333333334z" /> + <glyph glyph-name="email-open-outline" + unicode="&#xF5EF;" + horiz-adv-x="512" d=" M256 120.3200000000001L85.3333333333333 226.9866666666667V64H426.6666666666667V226.9866666666667L256 120.3200000000001M85.3333333333333 277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334L256 384L85.3333333333333 277.3333333333334M469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V277.3333333333334C42.6666666666667 292.9066666666667 50.9866666666667 306.3466666666667 63.36 313.8133333333334L256 434.3466666666667L448.64 313.8133333333334C461.0133333333333 306.3466666666667 469.3333333333333 292.9066666666667 469.3333333333333 277.3333333333334z" /> + <glyph glyph-name="email-outline" + unicode="&#xF1F0;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M426.6666666666667 64H85.3333333333333V277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334V64M426.6666666666667 320L256 213.3333333333334L85.3333333333333 320H426.6666666666667z" /> + <glyph glyph-name="email-secure" + unicode="&#xF1F1;" + horiz-adv-x="512" d=" M437.3333333333333 448C466.7733333333333 448 490.6666666666666 424.1066666666667 490.6666666666666 394.6666666666667V384C502.4 384 512 374.4 512 362.6666666666667V277.3333333333334C512 265.6 502.4 256 490.6666666666666 256H384C372.2666666666667 256 362.6666666666667 265.6 362.6666666666667 277.3333333333334V362.6666666666667C362.6666666666667 374.4 372.2666666666667 384 384 384V394.6666666666667C384 424.1066666666667 407.8933333333333 448 437.3333333333333 448M256 213.3333333333334L85.3333333333333 320V277.3333333333334L256 170.6666666666667L345.1733333333333 226.3466666666667C356.0533333333334 218.24 369.4933333333334 213.3333333333334 384 213.3333333333334H469.3333333333333V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H320V277.3333333333334C320 269.6533333333334 321.28 262.4000000000001 323.84 256L256 213.3333333333334M437.3333333333333 426.6666666666667C419.6266666666667 426.6666666666667 405.3333333333333 412.3733333333334 405.3333333333333 394.6666666666667V384H469.3333333333333V394.6666666666667C469.3333333333333 412.3733333333334 455.04 426.6666666666667 437.3333333333333 426.6666666666667z" /> + <glyph glyph-name="email-variant" + unicode="&#xF5F0;" + horiz-adv-x="512" d=" M256 170.6666666666667L42.6666666666667 303.7866666666667V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V304L256 170.6666666666667M469.3333333333333 64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V253.6533333333334L85.3333333333333 226.9866666666667V64H426.6666666666667V226.9866666666667L469.3333333333333 253.6533333333334V64z" /> + <glyph glyph-name="emoticon" + unicode="&#xF1F2;" + horiz-adv-x="512" d=" M256 74.6666666666667C305.7066666666667 74.6666666666667 347.7333333333334 105.8133333333334 365.0133333333333 149.3333333333334H146.9866666666667C164.0533333333333 105.8133333333334 206.2933333333333 74.6666666666667 256 74.6666666666667M181.3333333333333 213.3333333333334C199.04 213.3333333333334 213.3333333333333 227.6266666666667 213.3333333333333 245.3333333333334S199.04 277.3333333333334 181.3333333333333 277.3333333333334S149.3333333333333 263.04 149.3333333333333 245.3333333333334S163.6266666666667 213.3333333333334 181.3333333333333 213.3333333333334M330.6666666666667 213.3333333333334C348.3733333333333 213.3333333333334 362.6666666666667 227.6266666666667 362.6666666666667 245.3333333333334S348.3733333333333 277.3333333333334 330.6666666666667 277.3333333333334S298.6666666666667 263.04 298.6666666666667 245.3333333333334S312.96 213.3333333333334 330.6666666666667 213.3333333333334M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="emoticon-cool" + unicode="&#xF1F3;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667C405.3333333333333 205.2266666666667 360.1066666666667 181.3333333333334 330.6666666666667 181.3333333333334S272 205.2266666666667 272 234.6666666666667H240C240 205.2266666666667 210.7733333333333 181.3333333333334 181.3333333333333 181.3333333333334S106.6666666666667 205.2266666666667 106.6666666666667 234.6666666666667H90.6666666666667C87.2533333333333 221.0133333333333 85.3333333333333 206.72 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 206.72 424.7466666666667 221.0133333333333 421.3333333333333 234.6666666666667H405.3333333333333M256 362.6666666666667C192.8533333333333 362.6666666666667 137.6 328.32 108.16 277.3333333333334H403.84C374.4 328.32 319.1466666666667 362.6666666666667 256 362.6666666666667M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-devil" + unicode="&#xF1F4;" + horiz-adv-x="512" d=" M32 403.4133333333334C51.2 384 82.56 368.4266666666667 121.3866666666667 357.3333333333334C158.08 387.4133333333334 205.0133333333333 405.3333333333333 256 405.3333333333333C306.9866666666667 405.3333333333333 353.92 387.4133333333334 390.6133333333333 357.3333333333334C429.44 368.4266666666667 460.8 384 480 403.4133333333334C479.36 368.64 461.8666666666666 336.8533333333334 432.64 311.4666666666667C455.8933333333333 277.3333333333334 469.3333333333333 236.3733333333334 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192C42.6666666666667 236.3733333333334 56.1066666666667 277.3333333333334 79.36 311.4666666666667C50.1333333333333 336.8533333333334 32.64 368.64 32 403.4133333333334M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M224 234.6666666666667C224 217.6 209.0666666666667 202.6666666666667 192 202.6666666666667S160 217.6 160 234.6666666666667V266.6666666666667L224 234.6666666666667M352 234.6666666666667C352 217.6 337.0666666666667 202.6666666666667 320 202.6666666666667S288 217.6 288 234.6666666666667L352 266.6666666666667V234.6666666666667M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-happy" + unicode="&#xF1F5;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M213.3333333333333 245.3333333333334C213.3333333333333 228.2666666666667 198.4 213.3333333333334 181.3333333333333 213.3333333333334S149.3333333333333 228.2666666666667 149.3333333333333 245.3333333333334S164.2666666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 262.4000000000001 213.3333333333333 245.3333333333334M362.6666666666667 245.3333333333334C362.6666666666667 228.2666666666667 347.7333333333334 213.3333333333334 330.6666666666667 213.3333333333334S298.6666666666667 228.2666666666667 298.6666666666667 245.3333333333334S313.6 277.3333333333334 330.6666666666667 277.3333333333334S362.6666666666667 262.4000000000001 362.6666666666667 245.3333333333334M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-neutral" + unicode="&#xF1F6;" + horiz-adv-x="512" d=" M181.3333333333333 213.3333333333334C163.6266666666667 213.3333333333334 149.3333333333333 227.6266666666667 149.3333333333333 245.3333333333334S163.6266666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 263.04 213.3333333333333 245.3333333333334S199.04 213.3333333333334 181.3333333333333 213.3333333333334M330.6666666666667 213.3333333333334C312.96 213.3333333333334 298.6666666666667 227.6266666666667 298.6666666666667 245.3333333333334S312.96 277.3333333333334 330.6666666666667 277.3333333333334S362.6666666666667 263.04 362.6666666666667 245.3333333333334S348.3733333333333 213.3333333333334 330.6666666666667 213.3333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M192 149.3333333333334H320C331.7333333333334 149.3333333333334 341.3333333333333 139.7333333333334 341.3333333333333 128S331.7333333333334 106.6666666666667 320 106.6666666666667H192C180.2666666666667 106.6666666666667 170.6666666666667 116.2666666666667 170.6666666666667 128S180.2666666666667 149.3333333333334 192 149.3333333333334z" /> + <glyph glyph-name="emoticon-poop" + unicode="&#xF1F7;" + horiz-adv-x="512" d=" M192 213.3333333333334C203.7333333333334 213.3333333333334 213.3333333333333 194.1333333333333 213.3333333333333 170.6666666666667S203.7333333333334 128 192 128S170.6666666666667 147.2000000000001 170.6666666666667 170.6666666666667S180.2666666666667 213.3333333333334 192 213.3333333333334M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 194.1333333333333 341.3333333333333 170.6666666666667S331.7333333333334 128 320 128S298.6666666666667 147.2000000000001 298.6666666666667 170.6666666666667S308.2666666666667 213.3333333333334 320 213.3333333333334M208 410.6666666666667S341.3333333333333 362.6666666666667 320 277.3333333333334C320 277.3333333333334 405.3333333333333 277.3333333333334 368 202.6666666666667C368 202.6666666666667 457.8133333333333 193.28 432.64 120.7466666666667C405.3333333333333 95.36 398.9333333333334 87.8933333333334 373.3333333333333 69.3333333333334L433.28 103.68C455.4666666666666 92.8 519.8933333333332 53.9733333333334 448 0C362.6666666666667 -64 234.6666666666667 -5.3333333333333 192 -5.3333333333333S106.6666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333S42.6666666666667 0 42.6666666666667 42.6666666666667S85.3333333333333 106.6666666666667 106.6666666666667 106.6666666666667C106.6666666666667 106.6666666666667 42.6666666666667 170.6666666666667 149.3333333333333 213.3333333333334C149.3333333333333 213.3333333333334 106.6666666666667 277.3333333333334 192 298.6666666666667C192 298.6666666666667 170.6666666666667 320 192 341.3333333333334S208 389.3333333333333 208 410.6666666666667M170.6666666666667 85.3333333333334C199.04 60.3733333333333 227.6266666666667 35.6266666666667 256 35.6266666666667S312.96 60.3733333333334 341.3333333333333 85.3333333333334H170.6666666666667M192 234.6666666666667C168.5333333333333 234.6666666666667 149.3333333333333 206.08 149.3333333333333 170.6666666666667S168.5333333333333 106.6666666666667 192 106.6666666666667S234.6666666666667 135.2533333333333 234.6666666666667 170.6666666666667S215.4666666666667 234.6666666666667 192 234.6666666666667M320 234.6666666666667C296.5333333333333 234.6666666666667 277.3333333333333 206.08 277.3333333333333 170.6666666666667S296.5333333333333 106.6666666666667 320 106.6666666666667S362.6666666666667 135.2533333333333 362.6666666666667 170.6666666666667S343.4666666666667 234.6666666666667 320 234.6666666666667z" /> + <glyph glyph-name="emoticon-sad" + unicode="&#xF1F8;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M330.6666666666667 277.3333333333334C347.7333333333334 277.3333333333334 362.6666666666667 262.4000000000001 362.6666666666667 245.3333333333334S347.7333333333334 213.3333333333334 330.6666666666667 213.3333333333334S298.6666666666667 228.2666666666667 298.6666666666667 245.3333333333334S313.6 277.3333333333334 330.6666666666667 277.3333333333334M213.3333333333333 245.3333333333334C213.3333333333333 228.2666666666667 198.4 213.3333333333334 181.3333333333333 213.3333333333334S149.3333333333333 228.2666666666667 149.3333333333333 245.3333333333334S164.2666666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 262.4000000000001 213.3333333333333 245.3333333333334M256 149.3333333333334C293.3333333333333 149.3333333333334 326.1866666666666 133.9733333333334 345.3866666666667 110.72L315.0933333333334 80.4266666666667C305.4933333333334 96 282.6666666666667 106.6666666666667 256 106.6666666666667S206.5066666666667 96 196.9066666666667 80.4266666666667L166.6133333333334 110.72C185.8133333333333 133.9733333333334 218.6666666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="emoticon-tongue" + unicode="&#xF1F9;" + horiz-adv-x="512" d=" M192 277.3333333333334C215.4666666666667 277.3333333333334 234.6666666666667 258.1333333333334 234.6666666666667 234.6666666666667C234.6666666666667 226.9866666666667 232.5333333333334 219.52 228.9066666666667 213.3333333333334C221.6533333333333 226.1333333333334 207.7866666666667 234.6666666666667 192 234.6666666666667S162.3466666666667 226.1333333333334 155.0933333333333 213.3333333333334C151.4666666666667 219.52 149.3333333333333 226.9866666666667 149.3333333333333 234.6666666666667C149.3333333333333 258.1333333333334 168.5333333333333 277.3333333333334 192 277.3333333333334M320 277.3333333333334C343.4666666666667 277.3333333333334 362.6666666666667 258.1333333333334 362.6666666666667 234.6666666666667C362.6666666666667 226.9866666666667 360.5333333333333 219.52 356.9066666666667 213.3333333333334C349.6533333333333 226.1333333333334 335.7866666666667 234.6666666666667 320 234.6666666666667S290.3466666666667 226.1333333333334 283.0933333333333 213.3333333333334C279.4666666666667 219.52 277.3333333333333 226.9866666666667 277.3333333333333 234.6666666666667C277.3333333333333 258.1333333333334 296.5333333333333 277.3333333333334 320 277.3333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M192 170.6666666666667H320C331.7333333333334 170.6666666666667 341.3333333333333 161.0666666666667 341.3333333333333 149.3333333333334S331.7333333333334 128 320 128C320 85.3333333333334 300.8 64 277.3333333333333 64S234.6666666666667 85.3333333333334 234.6666666666667 128H192C180.2666666666667 128 170.6666666666667 137.6 170.6666666666667 149.3333333333334S180.2666666666667 170.6666666666667 192 170.6666666666667z" /> + <glyph glyph-name="engine" + unicode="&#xF1FA;" + horiz-adv-x="512" d=" M149.3333333333333 362.6666666666667V320H213.3333333333333V277.3333333333334H149.3333333333333L106.6666666666667 234.6666666666667V170.6666666666667H64V234.6666666666667H21.3333333333333V64H64V128H106.6666666666667V64H170.6666666666667L213.3333333333333 21.3333333333334H384V106.6666666666667H426.6666666666667V42.6666666666667H490.6666666666666V256H426.6666666666667V192H384V277.3333333333334H256V320H320V362.6666666666667H149.3333333333333z" /> + <glyph glyph-name="engine-outline" + unicode="&#xF1FB;" + horiz-adv-x="512" d=" M170.6666666666667 234.6666666666667H341.3333333333333V64H234.6666666666667L192 106.6666666666667H149.3333333333333V213.3333333333334M149.3333333333333 362.6666666666667V320H213.3333333333333V277.3333333333334H149.3333333333333L106.6666666666667 234.6666666666667V170.6666666666667H64V234.6666666666667H21.3333333333333V64H64V128H106.6666666666667V64H170.6666666666667L213.3333333333333 21.3333333333334H384V106.6666666666667H426.6666666666667V42.6666666666667H490.6666666666666V256H426.6666666666667V192H384V277.3333333333334H256V320H320V362.6666666666667H149.3333333333333z" /> + <glyph glyph-name="equal" + unicode="&#xF1FC;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333V234.6666666666667M405.3333333333333 106.6666666666667H106.6666666666667V149.3333333333334H405.3333333333333V106.6666666666667z" /> + <glyph glyph-name="equal-box" + unicode="&#xF1FD;" + horiz-adv-x="512" d=" M362.6666666666667 106.6666666666667V149.3333333333334H149.3333333333333V106.6666666666667H362.6666666666667M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M362.6666666666667 234.6666666666667V277.3333333333334H149.3333333333333V234.6666666666667H362.6666666666667z" /> + <glyph glyph-name="eraser" + unicode="&#xF1FE;" + horiz-adv-x="512" d=" M346.4533333333333 372.0533333333334L452.0533333333333 266.6666666666667C468.6933333333333 249.8133333333334 468.6933333333333 222.9333333333333 452.0533333333333 206.08L256 10.0266666666666C222.72 -23.2533333333333 168.7466666666667 -23.2533333333333 135.2533333333333 10.0266666666666L59.9466666666667 85.3333333333334C43.3066666666667 102.1866666666667 43.3066666666667 129.0666666666667 59.9466666666667 145.92L286.08 372.0533333333334C302.9333333333333 388.6933333333334 329.8133333333334 388.6933333333334 346.4533333333334 372.0533333333334M90.0266666666667 115.6266666666667L165.5466666666667 40.3200000000001C182.1866666666667 23.4666666666667 209.0666666666667 23.4666666666667 225.92 40.3200000000001L301.2266666666667 115.6266666666667L195.6266666666666 221.2266666666667L90.0266666666666 115.6266666666667z" /> + <glyph glyph-name="eraser-variant" + unicode="&#xF642;" + horiz-adv-x="512" d=" M322.9866666666667 384C312.1066666666667 384 301.2266666666667 379.7333333333334 292.9066666666667 371.4133333333334L55.2533333333333 133.76C38.6133333333333 117.3333333333334 38.6133333333333 90.24 55.2533333333333 73.3866666666667L107.3066666666667 21.3333333333334H270.7200000000001L456.7466666666667 207.5733333333334C473.6 224 473.6 251.0933333333334 456.7466666666667 267.9466666666667L353.2800000000001 371.4133333333334C344.9600000000001 379.7333333333334 333.8666666666667 384 322.9866666666667 384M362.6666666666667 64L320 21.3333333333334H469.3333333333333V64" /> + <glyph glyph-name="escalator" + unicode="&#xF1FF;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H404.2666666666667L148.2666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64S61.8666666666667 106.6666666666667 85.3333333333333 106.6666666666667H112.8533333333333L149.3333333333333 143.1466666666667V234.6666666666667C149.3333333333333 246.4000000000001 158.9333333333333 256 170.6666666666667 256H192C203.7333333333334 256 213.3333333333333 246.4000000000001 213.3333333333333 234.6666666666667V207.1466666666667L368.8533333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320S450.1333333333334 277.3333333333334 426.6666666666667 277.3333333333334M181.3333333333333 341.3333333333334C199.04 341.3333333333334 213.3333333333333 327.04 213.3333333333333 309.3333333333334S199.04 277.3333333333334 181.3333333333333 277.3333333333334S149.3333333333333 291.6266666666667 149.3333333333333 309.3333333333334S163.6266666666667 341.3333333333334 181.3333333333333 341.3333333333334z" /> + <glyph glyph-name="ethernet" + unicode="&#xF200;" + horiz-adv-x="512" d=" M149.3333333333333 128H192V64H234.6666666666667V128H277.3333333333333V64H320V128H362.6666666666667V64H405.3333333333333V256H320V320H192V256H106.6666666666667V64H149.3333333333333V128M93.44 384H418.7733333333333C446.7200000000001 384 469.3333333333333 361.3866666666667 469.3333333333333 333.2266666666667V29.2266666666667C469.3333333333333 1.2800000000001 446.7200000000001 -21.3333333333333 418.7733333333333 -21.3333333333333H93.44C65.28 -21.3333333333333 42.6666666666667 1.28 42.6666666666667 29.2266666666667V333.2266666666667C42.6666666666667 361.3866666666667 65.28 384 93.44 384z" /> + <glyph glyph-name="ethernet-cable" + unicode="&#xF201;" + horiz-adv-x="512" d=" M234.6666666666667 384V298.6666666666667H277.3333333333333V384H234.6666666666667M170.6666666666667 362.6666666666667V213.3333333333334H341.3333333333333V362.6666666666667H298.6666666666667V277.3333333333334H213.3333333333333V362.6666666666667H170.6666666666667M213.3333333333333 192V-21.3333333333333H298.6666666666667V192H213.3333333333333z" /> + <glyph glyph-name="ethernet-cable-off" + unicode="&#xF202;" + horiz-adv-x="512" d=" M234.6666666666667 384H277.3333333333333V298.6666666666667H234.6666666666667V384M170.6666666666667 362.6666666666667H213.3333333333333V277.3333333333334H298.6666666666667V362.6666666666667H341.3333333333333V213.3333333333334H273.4933333333334L170.6666666666667 316.1600000000001V362.6666666666667M426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L298.6666666666667 79.5733333333334V-21.3333333333333H213.3333333333333V164.9066666666667L42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334z" /> + <glyph glyph-name="etsy" + unicode="&#xF203;" + horiz-adv-x="512" d=" M143.36 4.6933333333333C175.5733333333333 6.1866666666667 214.8266666666667 4.6933333333333 253.2266666666667 4.6933333333333C292.6933333333334 4.6933333333333 333.2266666666667 7.2533333333333 365.2266666666667 4.6933333333333C378.0266666666667 3.6266666666667 389.9733333333334 -4.0533333333333 400.4266666666666 2.7733333333333C408.7466666666667 13.2266666666666 402.56 27.52 404.48 41.6C407.8933333333333 68.6933333333333 432.64 100.9066666666667 396.5866666666667 107.7333333333334C381.2266666666667 93.6533333333334 391.4666666666667 80.4266666666667 382.9333333333333 62.9333333333333C372.2666666666667 42.0266666666666 334.5066666666667 34.7733333333333 298.6666666666667 32C267.52 29.44 213.3333333333333 26.4533333333333 202.6666666666667 47.5733333333334C192.8533333333333 65.28 198.1866666666667 92.8000000000001 198.1866666666667 115.6266666666667C198.1866666666667 141.2266666666667 195.4133333333333 165.9733333333334 202.6666666666667 185.6C241.4933333333334 182.8266666666667 292.2666666666667 198.6133333333333 320 181.3333333333334C338.56 170.6666666666667 327.8933333333333 148.0533333333334 349.44 140.8C364.16 144.8533333333334 356.2666666666667 163.84 355.4133333333333 181.3333333333334C354.7733333333333 193.28 354.7733333333333 209.28 355.4133333333333 222.5066666666667C356.0533333333334 240.4266666666667 362.6666666666667 261.12 343.4666666666667 261.5466666666667C328.32 249.6 339.8400000000001 229.76 323.8400000000001 218.6666666666667C318.9333333333334 215.04 307.8400000000001 213.3333333333334 300.3733333333334 213.3333333333334C270.9333333333334 209.7066666666667 224.8533333333334 212.2666666666667 200.1066666666667 216.7466666666667C196.9066666666667 252.5866666666667 197.12 301.4400000000001 200.1066666666667 337.2800000000001C213.3333333333334 350.5066666666667 244.2666666666667 351.1466666666667 264.9600000000001 350.9333333333334C301.4400000000001 350.9333333333334 358.1866666666667 347.7333333333334 369.0666666666667 329.6C375.04 320 370.3466666666667 298.6666666666667 380.8 296.5333333333334C402.1333333333334 291.6266666666667 391.6800000000001 329.6 392.7466666666667 347.0933333333334C393.3866666666667 360.3200000000001 399.1466666666667 368.64 396.5866666666667 378.24C389.76 387.6266666666667 379.52 382.9333333333334 373.3333333333333 382.0800000000001C306.1333333333334 373.3333333333334 204.8 378.24 133.5466666666667 378.24C125.0133333333333 378.24 110.08 382.5066666666667 104.1066666666667 372.48C99.84 349.8666666666667 130.56 359.2533333333334 141.2266666666667 347.0933333333334C144.8533333333333 343.2533333333334 149.9733333333333 325.76 151.04 314.0266666666667C154.24 282.88 151.04 235.3066666666667 151.04 189.4400000000001C151.04 141.2266666666667 154.88 92.3733333333334 151.04 62.9333333333334C149.3333333333333 52.6933333333334 143.5733333333333 36.2666666666668 141.2266666666667 33.9200000000001C128 20.4800000000001 92.5866666666667 35.2 96 6.6133333333334C108.5866666666667 -1.7066666666666 126.5066666666667 3.8400000000001 143.36 4.6933333333334z" /> + <glyph glyph-name="ev-station" + unicode="&#xF5F1;" + horiz-adv-x="512" d=" M421.76 293.76L421.9733333333334 293.9733333333334L342.6133333333334 373.3333333333333L320 350.7200000000001L365.0133333333333 305.7066666666667C344.9599999999999 298.0266666666667 330.6666666666667 278.8266666666667 330.6666666666667 256C330.6666666666667 226.5600000000001 354.56 202.6666666666667 384 202.6666666666667C391.68 202.6666666666667 398.7200000000001 204.3733333333333 405.3333333333333 207.1466666666667V53.3333333333334C405.3333333333333 41.6 395.7333333333334 32 384 32S362.6666666666667 41.6 362.6666666666667 53.3333333333334V149.3333333333334C362.6666666666667 172.8 343.4666666666667 192 320 192H298.6666666666667V341.3333333333334C298.6666666666667 364.8 279.4666666666667 384 256 384H128C104.5333333333333 384 85.3333333333333 364.8 85.3333333333333 341.3333333333334V0H298.6666666666667V160H330.6666666666667V53.3333333333334C330.6666666666667 23.8933333333334 354.56 0 384 0S437.3333333333333 23.8933333333334 437.3333333333333 53.3333333333334V256C437.3333333333333 270.7200000000001 431.36 284.1600000000001 421.76 293.76M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256S372.2666666666667 277.3333333333334 384 277.3333333333334S405.3333333333333 267.7333333333334 405.3333333333333 256S395.7333333333334 234.6666666666667 384 234.6666666666667M170.6666666666667 64V160H128L213.3333333333333 320V213.3333333333334H256L170.6666666666667 64z" /> + <glyph glyph-name="evernote" + unicode="&#xF204;" + horiz-adv-x="512" d=" M321.92 199.8933333333333S325.9733333333333 227.2 341.3333333333333 227.2C357.5466666666667 227.2 379.3066666666667 190.72 379.3066666666667 190.72S329.8133333333334 199.8933333333333 321.92 199.8933333333333M405.3333333333333 347.9466666666667C397.6533333333333 360.7466666666667 359.04 375.2533333333334 338.9866666666667 375.2533333333334H288S270.9333333333333 405.3333333333333 232.1066666666667 405.3333333333333C193.0666666666667 405.3333333333333 195.6266666666667 388.0533333333334 195.6266666666667 373.3333333333334V313.1733333333334L177.92 294.6133333333334H96S73.3866666666667 279.2533333333334 73.3866666666667 246.6133333333333C73.3866666666667 213.3333333333333 83.6266666666667 99.2 152.1066666666667 88.5333333333333C233.1733333333333 76.16 247.04 113.7066666666667 247.04 118.1866666666667C247.04 137.3866666666667 247.4666666666667 166.1866666666667 247.4666666666667 166.1866666666667S271.1466666666667 120.96 306.9866666666667 120.96S363.52 100.2666666666667 363.52 79.1466666666667V39.8933333333333S362.6666666666667 15.36 341.3333333333333 15.36H296.32S281.6 26.88 281.6 42.6666666666667C281.6 58.6666666666667 288.64 62.9333333333333 297.1733333333334 62.9333333333333C305.4933333333334 62.9333333333333 312.5333333333334 62.08 312.5333333333334 62.08V95.36S244.6933333333334 96 244.6933333333334 43.9466666666667C244.6933333333334 -7.8933333333333 280.1066666666667 -21.3333333333333 308.48 -21.3333333333333H354.7733333333334S438.6133333333334 -10.6666666666666 438.6133333333334 154.6666666666667S412.3733333333333 335.36 405.3333333333333 347.9466666666667M160 313.3866666666667H90.88L177.4933333333334 400.64V330.6666666666667L160 313.3866666666667z" /> + <glyph glyph-name="exclamation" + unicode="&#xF205;" + horiz-adv-x="512" d=" M234.6666666666667 352H277.3333333333333V117.3333333333334H234.6666666666667V352M277.3333333333333 74.6666666666667V32H234.6666666666667V74.6666666666667H277.3333333333333z" /> + <glyph glyph-name="exit-to-app" + unicode="&#xF206;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V256H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M215.04 115.6266666666667L245.3333333333333 85.3333333333334L352 192L245.3333333333333 298.6666666666667L215.04 268.5866666666667L270.2933333333333 213.3333333333334H64V170.6666666666667H270.2933333333333L215.04 115.6266666666667z" /> + <glyph glyph-name="export" + unicode="&#xF207;" + horiz-adv-x="512" d=" M490.6666666666666 192L405.3333333333333 277.3333333333334V213.3333333333334H213.3333333333333V170.6666666666667H405.3333333333333V106.6666666666667M21.3333333333333 64V320C21.3333333333333 343.68 40.5333333333333 362.6666666666667 64 362.6666666666667H320C343.4666666666667 362.6666666666667 362.6666666666667 343.4666666666667 362.6666666666667 320V256H320V320H64V64H320V128H362.6666666666667V64C362.6666666666667 40.5333333333333 343.4666666666667 21.3333333333334 320 21.3333333333334H64C40.5333333333333 21.3333333333334 21.3333333333333 40.5333333333333 21.3333333333333 64z" /> + <glyph glyph-name="eye" + unicode="&#xF208;" + horiz-adv-x="512" d=" M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M256 85.3333333333334C197.12 85.3333333333334 149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334M256 352C149.3333333333333 352 58.24 285.6533333333333 21.3333333333333 192C58.24 98.3466666666667 149.3333333333333 32 256 32S453.76 98.3466666666667 490.6666666666666 192C453.76 285.6533333333333 362.6666666666667 352 256 352z" /> + <glyph glyph-name="eye-off" + unicode="&#xF209;" + horiz-adv-x="512" d=" M252.3733333333334 256L320 188.5866666666667V192C320 227.4133333333334 291.4133333333333 256 256 256H252.3733333333334M160.64 238.9333333333334L193.7066666666667 205.8666666666667C192.64 201.3866666666666 192 196.9066666666667 192 192C192 156.5866666666667 220.5866666666667 128 256 128C260.6933333333334 128 265.3866666666667 128.64 269.8666666666667 129.7066666666667L302.9333333333334 96.64C288.64 89.6 272.8533333333334 85.3333333333333 256 85.3333333333333C197.12 85.3333333333333 149.3333333333333 133.12 149.3333333333333 192C149.3333333333333 208.8533333333333 153.6 224.6399999999999 160.64 238.9333333333333M42.6666666666667 356.9066666666667L91.3066666666666 308.2666666666667L100.9066666666667 298.6666666666667C65.7066666666667 270.9333333333334 37.9733333333333 234.6666666666667 21.3333333333333 192C58.24 98.3466666666667 149.3333333333333 32 256 32C289.0666666666667 32 320.64 38.4 349.44 49.92L358.6133333333333 40.96L420.9066666666667 -21.3333333333333L448 5.76L69.76 384M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192C362.6666666666667 178.3466666666667 359.8933333333333 165.12 354.9866666666667 153.1733333333334L417.4933333333334 90.6666666666667C449.4933333333334 117.3333333333334 475.0933333333333 152.3200000000001 490.6666666666666 192C453.76 285.6533333333333 362.6666666666667 352 256 352C226.1333333333334 352 197.5466666666667 346.6666666666667 170.6666666666667 337.0666666666667L216.96 291.2000000000001C229.12 295.8933333333333 242.1333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="eyedropper" + unicode="&#xF20A;" + horiz-adv-x="512" d=" M412.8 197.9733333333333L367.36 152.5333333333333L337.2800000000001 182.8266666666667L172.8 18.3466666666667L74.6666666666667 -21.3333333333333L42.6666666666667 10.6666666666667L82.3466666666667 108.8L246.8266666666667 273.28L216.5333333333333 303.36L261.9733333333334 348.8L412.8 197.9733333333333M357.5466666666667 384C382.5066666666667 408.96 423.04 408.96 448 384C472.96 359.04 472.96 318.5066666666667 448 293.5466666666667L407.04 252.5866666666667L316.5866666666666 343.04L357.5466666666667 384M118.6133333333333 84.6933333333333L96 32L148.6933333333333 54.6133333333333L307.2 213.3333333333334L277.3333333333333 243.2L118.6133333333333 84.6933333333333z" /> + <glyph glyph-name="eyedropper-variant" + unicode="&#xF20B;" + horiz-adv-x="512" d=" M147.6266666666667 42.6666666666667L106.6666666666667 83.6266666666667L278.6133333333334 256L320 214.6133333333334M441.8133333333334 327.8933333333333L391.8933333333333 377.8133333333334C384 386.1333333333334 370.1333333333334 386.1333333333334 361.8133333333334 377.8133333333334L295.2533333333334 311.2533333333334L254.08 352L224 321.92L254.2933333333333 291.6266666666667L64 101.3333333333334V0H165.3333333333333L355.6266666666667 190.2933333333334L385.9200000000001 160L416.0000000000001 190.0800000000001L375.0400000000001 231.04L441.6000000000002 297.6C450.1333333333335 306.1333333333334 450.1333333333335 320 441.8133333333335 327.8933333333333z" /> + <glyph glyph-name="face" + unicode="&#xF643;" + horiz-adv-x="512" d=" M192 197.3333333333334C177.28 197.3333333333334 165.3333333333333 185.3866666666667 165.3333333333333 170.6666666666667S177.28 144 192 144S218.6666666666667 155.9466666666667 218.6666666666667 170.6666666666667S206.72 197.3333333333334 192 197.3333333333334M320 197.3333333333334C305.28 197.3333333333334 293.3333333333333 185.3866666666667 293.3333333333333 170.6666666666667S305.28 144 320 144S346.6666666666667 155.9466666666667 346.6666666666667 170.6666666666667S334.72 197.3333333333334 320 197.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192C85.3333333333333 198.1866666666667 85.3333333333333 204.3733333333333 86.4 210.3466666666667C136.7466666666667 232.7466666666667 176.64 273.92 197.5466666666667 324.9066666666667C236.16 270.2933333333334 299.7333333333334 234.6666666666667 371.6266666666667 234.6666666666667C388.2666666666667 234.6666666666667 404.2666666666667 236.5866666666667 419.6266666666667 240.2133333333334C424.1066666666667 225.0666666666667 426.6666666666667 208.8533333333333 426.6666666666667 192C426.6666666666667 97.92 350.08 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="face-profile" + unicode="&#xF644;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 269.0133333333333C289.4933333333334 247.4666666666667 328.96 234.6666666666667 371.6266666666667 234.6666666666667C388.2666666666667 234.6666666666667 404.2666666666667 236.5866666666667 419.6266666666667 240.2133333333334C424.1066666666667 225.0666666666667 426.6666666666667 208.8533333333333 426.6666666666667 192C426.6666666666667 97.92 350.08 21.3333333333334 256 21.3333333333334C192 21.3333333333334 136.32 56.7466666666667 106.6666666666667 109.0133333333333L144 149.3333333333334V170.6666666666667C144 185.3866666666667 155.9466666666667 197.3333333333334 170.6666666666667 197.3333333333334S197.3333333333333 185.3866666666667 197.3333333333333 170.6666666666667V149.3333333333334H256M341.3333333333333 197.3333333333334C326.6133333333334 197.3333333333334 314.6666666666667 185.3866666666667 314.6666666666667 170.6666666666667S326.6133333333334 144 341.3333333333333 144S368 155.9466666666667 368 170.6666666666667S356.0533333333334 197.3333333333334 341.3333333333333 197.3333333333334z" /> + <glyph glyph-name="facebook" + unicode="&#xF20C;" + horiz-adv-x="512" d=" M362.6666666666667 405.3333333333333V320H320C305.28 320 298.6666666666667 302.7200000000001 298.6666666666667 288V234.6666666666667H362.6666666666667V149.3333333333334H298.6666666666667V-21.3333333333333H213.3333333333333V149.3333333333334H149.3333333333333V234.6666666666667H213.3333333333333V320C213.3333333333333 367.1466666666667 251.52 405.3333333333333 298.6666666666667 405.3333333333333H362.6666666666667z" /> + <glyph glyph-name="facebook-box" + unicode="&#xF20D;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667V298.6666666666667H362.6666666666667C350.9333333333333 298.6666666666667 341.3333333333333 289.0666666666667 341.3333333333333 277.3333333333334V234.6666666666667H405.3333333333333V170.6666666666667H341.3333333333333V21.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667V234.6666666666667H277.3333333333333V288C277.3333333333333 329.3866666666667 310.8266666666667 362.6666666666667 352 362.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="facebook-messenger" + unicode="&#xF20E;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.6666666666667 405.3333333333333 42.6666666666667 317.0133333333333 42.6666666666667 208C42.6666666666667 146.5600000000001 72.96 91.7333333333334 120.5333333333333 55.4666666666667L121.8133333333333 -21.3333333333333L195.4133333333333 18.7733333333333L194.7733333333334 18.9866666666667C214.1866666666667 13.6533333333334 234.6666666666667 10.6666666666667 256 10.6666666666667C373.3333333333333 10.6666666666667 469.3333333333333 98.9866666666667 469.3333333333333 208S373.3333333333333 405.3333333333333 256 405.3333333333333M277.9733333333333 140.5866666666667L224.8533333333333 196.6933333333333L117.3333333333333 140.5866666666667L232.1066666666667 260.6933333333334L287.1466666666667 208L390.6133333333333 260.6933333333334L277.9733333333333 140.5866666666667z" /> + <glyph glyph-name="factory" + unicode="&#xF20F;" + horiz-adv-x="512" d=" M85.3333333333333 64V21.3333333333334H170.6666666666667V64H85.3333333333333M85.3333333333333 149.3333333333334V106.6666666666667H298.6666666666667V149.3333333333334H85.3333333333333M213.3333333333333 64V21.3333333333334H298.6666666666667V64H213.3333333333333M341.3333333333333 149.3333333333334V106.6666666666667H426.6666666666667V149.3333333333334H341.3333333333333M341.3333333333333 64V21.3333333333334H426.6666666666667V64H341.3333333333333M42.6666666666667 -21.3333333333333V277.3333333333334L149.3333333333333 192V277.3333333333334L256 192V277.3333333333334L362.6666666666667 192L384 405.3333333333333H448L469.3333333333333 192V-21.3333333333333H42.6666666666667z" /> + <glyph glyph-name="fan" + unicode="&#xF210;" + horiz-adv-x="512" d=" M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334M266.6666666666667 405.3333333333333C362.6666666666667 405.3333333333333 365.0133333333333 329.1733333333334 314.6666666666667 304C293.5466666666666 293.5466666666667 284.16 271.1466666666667 280.1066666666667 251.3066666666667C290.3466666666667 247.04 299.3066666666666 240.4266666666667 306.1333333333334 231.8933333333333C385.0666666666667 274.56 469.9733333333334 257.7066666666667 469.9733333333334 181.3333333333334C469.9733333333334 85.3333333333334 393.8133333333334 83.2 368.64 133.76C357.9733333333334 154.88 335.36 164.2666666666667 315.52 168.3200000000001C311.2533333333334 158.0800000000001 304.64 149.3333333333334 296.1066666666667 142.0800000000001C338.56 63.36 321.7066666666667 -21.3333333333333 245.3333333333333 -21.3333333333333C149.3333333333333 -21.3333333333333 147.4133333333333 55.04 197.76 80.2133333333333C218.6666666666667 90.6666666666666 228.0533333333333 112.8533333333333 232.32 132.48C221.8666666666667 136.7466666666666 212.6933333333333 143.5733333333333 205.8666666666667 152.1066666666666C127.1466666666667 109.8666666666667 42.6666666666667 126.5066666666667 42.6666666666667 202.6666666666667C42.6666666666667 298.6666666666667 118.6133333333333 301.0133333333333 143.7866666666667 250.4533333333334C154.4533333333333 229.3333333333334 176.8533333333334 220.16 196.6933333333333 216.1066666666667C200.7466666666667 226.3466666666667 207.5733333333333 235.3066666666667 216.32 242.1333333333334C173.8666666666667 320.8533333333334 190.72 405.3333333333333 266.6666666666667 405.3333333333333z" /> + <glyph glyph-name="fast-forward" + unicode="&#xF211;" + horiz-adv-x="512" d=" M277.3333333333333 320V64L458.6666666666666 192M85.3333333333333 64L266.6666666666667 192L85.3333333333333 320V64z" /> + <glyph glyph-name="fax" + unicode="&#xF212;" + horiz-adv-x="512" d=" M128 405.3333333333333C116.2666666666667 405.3333333333333 106.6666666666667 395.7333333333334 106.6666666666667 384V298.6666666666667H128V341.3333333333334H170.6666666666667V362.6666666666667H128V384H170.6666666666667V405.3333333333333H128M234.6666666666667 405.3333333333333C222.9333333333333 405.3333333333333 213.3333333333333 395.7333333333334 213.3333333333333 384V298.6666666666667H234.6666666666667V341.3333333333334H256V298.6666666666667H277.3333333333333V384C277.3333333333333 395.7333333333334 267.7333333333334 405.3333333333333 256 405.3333333333333H234.6666666666667M320 405.3333333333333L350.2933333333334 352L320 298.6666666666667H344.1066666666667L362.6666666666667 330.6666666666667L381.2266666666667 298.6666666666667H405.3333333333333L375.04 352L405.3333333333333 405.3333333333333H381.2266666666667L362.6666666666667 373.3333333333334L344.1066666666667 405.3333333333333H320M234.6666666666667 384H256V362.6666666666667H234.6666666666667V384M106.6666666666667 256C71.2533333333333 256 42.6666666666667 227.4133333333334 42.6666666666667 192V64H128V-21.3333333333333H384V64H469.3333333333333V192C469.3333333333333 227.4133333333334 440.7466666666667 256 405.3333333333333 256H106.6666666666667M405.3333333333333 213.3333333333334C417.0666666666667 213.3333333333334 426.6666666666667 203.7333333333334 426.6666666666667 192S417.0666666666667 170.6666666666667 405.3333333333333 170.6666666666667S384 180.2666666666667 384 192S393.6 213.3333333333334 405.3333333333333 213.3333333333334M170.6666666666667 128H341.3333333333333V21.3333333333334H170.6666666666667V128z" /> + <glyph glyph-name="ferry" + unicode="&#xF213;" + horiz-adv-x="512" d=" M128 320H384V235.52L256 277.3333333333334L128 235.52M84.0533333333333 42.6666666666667H85.3333333333333C119.4666666666667 42.6666666666667 149.3333333333333 61.44 170.6666666666667 85.3333333333334C192 61.44 221.8666666666667 42.6666666666667 256 42.6666666666667S320 61.44 341.3333333333333 85.3333333333334C362.6666666666667 61.44 392.5333333333333 42.6666666666667 426.6666666666667 42.6666666666667H427.7333333333334L468.2666666666667 185.3866666666667C469.9733333333332 190.72 469.3333333333333 196.6933333333334 466.9866666666667 201.8133333333334C464.2133333333334 206.9333333333334 459.7333333333333 210.7733333333334 454.1866666666666 212.48L426.6666666666667 221.44V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667H320V426.6666666666667H192V362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V221.44L57.8133333333333 212.48C52.2666666666667 210.7733333333333 47.7866666666667 206.9333333333333 45.0133333333333 201.8133333333333C42.6666666666667 196.6933333333333 42.0266666666667 190.72 43.7333333333333 185.3866666666667M426.6666666666667 0C397.0133333333333 0 367.36 10.0266666666666 341.3333333333333 28.3733333333333C289.28 -8.1066666666667 222.72 -8.1066666666667 170.6666666666667 28.3733333333333C144.64 10.0266666666666 114.9866666666667 0 85.3333333333333 0H42.6666666666667V-42.6666666666666H85.3333333333333C114.56 -42.6666666666666 143.7866666666667 -35.1999999999999 170.6666666666667 -21.3333333333333C224 -49.0666666666667 288 -49.0666666666667 341.3333333333333 -21.3333333333333C368.2133333333334 -35.1999999999999 397.2266666666667 -42.6666666666666 426.6666666666667 -42.6666666666666H469.3333333333333V0H426.6666666666667z" /> + <glyph glyph-name="file" + unicode="&#xF214;" + horiz-adv-x="512" d=" M277.3333333333333 256V373.3333333333334L394.6666666666667 256M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.3466666666667 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333H128z" /> + <glyph glyph-name="file-chart" + unicode="&#xF215;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M149.3333333333333 21.3333333333334H192V149.3333333333334H149.3333333333333V21.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V192H234.6666666666667V21.3333333333334M320 21.3333333333334H362.6666666666667V106.6666666666667H320V21.3333333333334z" /> + <glyph glyph-name="file-check" + unicode="&#xF216;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M222.9333333333333 54.1866666666667L324.2666666666667 155.52L299.3066666666666 185.6L222.9333333333333 109.2266666666667L189.0133333333333 142.9333333333333L164.2666666666667 118.1866666666667L222.9333333333333 54.1866666666667z" /> + <glyph glyph-name="file-cloud" + unicode="&#xF217;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M334.5066666666667 128C327.2533333333334 164.2666666666667 294.8266666666667 192 256 192C225.0666666666667 192 198.4 174.5066666666667 185.1733333333333 149.3333333333334C152.96 145.4933333333334 128 118.4 128 85.3333333333334C128 49.92 156.5866666666667 21.3333333333334 192 21.3333333333334H330.6666666666667C360.1066666666667 21.3333333333334 384 45.2266666666667 384 74.6666666666667C384 102.8266666666667 362.0266666666667 125.6533333333334 334.5066666666667 128z" /> + <glyph glyph-name="file-delimited" + unicode="&#xF218;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M298.6666666666667 128V213.3333333333334H213.3333333333333V128H262.4C268.8 85.3333333333334 256 64 206.9333333333333 34.5600000000001L231.4666666666667 17.0666666666667C277.3333333333333 42.6666666666667 298.6666666666667 106.6666666666667 298.6666666666667 128z" /> + <glyph glyph-name="file-document" + unicode="&#xF219;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M320 64V106.6666666666667H128V64H320M384 149.3333333333334V192H128V149.3333333333334H384z" /> + <glyph glyph-name="file-document-box" + unicode="&#xF21A;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H149.3333333333333V128H298.6666666666667M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M362.6666666666667 256H149.3333333333333V298.6666666666667H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-excel" + unicode="&#xF21B;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M362.6666666666667 213.3333333333334H277.3333333333333V170.6666666666667H298.6666666666667L256 135.04L213.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667L234.6666666666667 117.3333333333334L170.6666666666667 64H149.3333333333333V21.3333333333334H234.6666666666667V64H213.3333333333333L256 99.6266666666667L298.6666666666667 64H277.3333333333333V21.3333333333334H362.6666666666667V64H341.3333333333333L277.3333333333333 117.3333333333334L341.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334z" /> + <glyph glyph-name="file-excel-box" + unicode="&#xF21C;" + horiz-adv-x="512" d=" M345.6 85.3333333333334H302.9333333333333L256 166.4L209.0666666666667 85.3333333333334H166.4L234.6666666666667 192L166.4 298.6666666666667H209.0666666666667L256 217.6L302.9333333333333 298.6666666666667H345.6L277.3333333333333 192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-export" + unicode="&#xF21D;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333M190.5066666666667 187.3066666666667H341.3333333333333V36.48L296.1066666666667 81.7066666666667L235.7333333333334 21.3333333333334L175.36 81.7066666666667L235.7333333333334 141.8666666666667" /> + <glyph glyph-name="file-find" + unicode="&#xF21E;" + horiz-adv-x="512" d=" M192 170.6666666666667C192 135.2533333333333 220.5866666666667 106.6666666666667 256 106.6666666666667S320 135.2533333333333 320 170.6666666666667S291.4133333333333 234.6666666666667 256 234.6666666666667S192 206.08 192 170.6666666666667M426.6666666666667 30.08V277.3333333333334L298.6666666666667 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C393.6 -21.3333333333333 402.1333333333334 -18.1333333333333 409.3866666666667 -12.8L314.88 81.7066666666667C297.8133333333334 70.6133333333334 277.3333333333334 64 256 64C197.12 64 149.3333333333334 111.7866666666667 149.3333333333334 170.6666666666667S197.12 277.3333333333334 256 277.3333333333334S362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667C362.6666666666667 149.3333333333334 356.0533333333334 128.8533333333334 344.9600000000001 112L426.6666666666667 30.08z" /> + <glyph glyph-name="file-hidden" + unicode="&#xF613;" + horiz-adv-x="512" d=" M277.3333333333333 256H298.6666666666667V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V256M394.6666666666667 256L349.44 301.2266666666667L376.1066666666667 327.8933333333333L426.6666666666667 277.3333333333334V234.6666666666667H384V213.3333333333334H320V256H394.6666666666667M277.3333333333333 373.3333333333334V405.3333333333333H256V362.6666666666667H277.3333333333333V320H234.6666666666667V362.6666666666667H192V405.3333333333333H170.6666666666667V362.6666666666667H128V341.3333333333334H85.3333333333333V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333H298.6666666666667L349.0133333333333 354.9866666666667L322.3466666666667 328.3200000000001L277.3333333333333 373.3333333333334M426.6666666666667 21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H341.3333333333333V21.3333333333334H384V42.6666666666667H426.6666666666667V21.3333333333334M384 128H426.6666666666667V64H384V128M256 -21.3333333333333V21.3333333333334H320V-21.3333333333333H256M170.6666666666667 -21.3333333333333V21.3333333333334H234.6666666666667V-21.3333333333333H170.6666666666667M128 -21.3333333333333C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V64H128V21.3333333333334H149.3333333333333V-21.3333333333333H128M85.3333333333333 149.3333333333334H128V85.3333333333334H85.3333333333333V149.3333333333334M85.3333333333333 234.6666666666667H128V170.6666666666667H85.3333333333333V234.6666666666667M384 213.3333333333334H426.6666666666667V149.3333333333334H384V213.3333333333334M85.3333333333333 320H128V256H85.3333333333333V320z" /> + <glyph glyph-name="file-image" + unicode="&#xF21F;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M128 21.3333333333334H384V192L298.6666666666667 106.6666666666667L256 149.3333333333334L128 21.3333333333334M170.6666666666667 256C147.2 256 128 236.8 128 213.3333333333334S147.2 170.6666666666667 170.6666666666667 170.6666666666667S213.3333333333333 189.8666666666667 213.3333333333333 213.3333333333334S194.1333333333333 256 170.6666666666667 256z" /> + <glyph glyph-name="file-import" + unicode="&#xF220;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333M214.4 208.64L274.7733333333333 148.2666666666667L320 193.4933333333334V42.6666666666667H169.1733333333333L214.4 87.8933333333334L154.0266666666667 148.2666666666667" /> + <glyph glyph-name="file-lock" + unicode="&#xF221;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333H128M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333V373.3333333333334M256 213.3333333333334C291.4133333333333 213.3333333333334 320 184.7466666666667 320 149.3333333333334V128H341.3333333333333V42.6666666666667H170.6666666666667V128H192V149.3333333333334C192 184.3200000000001 220.5866666666667 213.3333333333334 256 213.3333333333334M256 170.6666666666667C244.2666666666667 170.6666666666667 234.6666666666667 161.0666666666667 234.6666666666667 149.3333333333334V128H277.3333333333333V149.3333333333334C277.3333333333333 160.64 267.7333333333334 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="file-multiple" + unicode="&#xF222;" + horiz-adv-x="512" d=" M320 298.6666666666667H437.3333333333333L320 416V298.6666666666667M170.6666666666667 448H341.3333333333333L469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H170.6666666666667C146.9866666666667 21.3333333333334 128 40.5333333333333 128 64V405.3333333333333C128 428.8 147.2 448 170.6666666666667 448M85.3333333333333 362.6666666666667V-21.3333333333333H426.6666666666667V-64H85.3333333333333C61.8666666666667 -64 42.6666666666667 -44.8 42.6666666666667 -21.3333333333333V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="file-music" + unicode="&#xF223;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M192 106.6666666666667C168.5333333333333 106.6666666666667 149.3333333333333 87.4666666666667 149.3333333333333 64S168.5333333333333 21.3333333333334 192 21.3333333333334S234.6666666666667 40.5333333333333 234.6666666666667 64V170.6666666666667H298.6666666666667V213.3333333333334H213.3333333333333V100.9066666666667C207.1466666666667 104.5333333333334 199.68 106.6666666666667 192 106.6666666666667z" /> + <glyph glyph-name="file-outline" + unicode="&#xF224;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M234.6666666666667 362.6666666666667H128V21.3333333333334H384V213.3333333333334H234.6666666666667V362.6666666666667z" /> + <glyph glyph-name="file-pdf" + unicode="&#xF225;" + horiz-adv-x="512" d=" M298.6666666666667 256H416L298.6666666666667 373.3333333333334V256M149.3333333333333 405.3333333333333H320L448 277.3333333333334V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H149.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M254.5066666666667 182.6133333333334C263.2533333333334 163.4133333333334 274.3466666666667 147.6266666666667 287.1466666666667 136.7466666666667L295.8933333333333 129.92C277.3333333333333 126.5066666666667 251.7333333333333 120.5333333333334 224.64 110.08L222.2933333333333 109.2266666666667L232.96 131.4133333333334C242.56 149.9733333333334 249.6 166.8266666666667 254.5066666666667 182.6133333333334M392.7466666666667 101.3333333333334C396.5866666666667 105.1733333333334 398.5066666666667 110.08 398.7200000000001 115.4133333333334C399.36 119.68 398.2933333333334 123.7333333333334 396.16 127.1466666666667C389.9733333333334 137.1733333333334 373.9733333333334 141.8666666666667 347.52 141.8666666666667L320 140.3733333333333L301.44 152.7466666666667C288 163.84 275.8400000000001 183.2533333333333 267.3066666666667 207.36L268.16 210.3466666666667C275.2 238.7200000000001 281.8133333333334 273.0666666666667 267.7333333333334 287.1466666666667C264.32 290.5600000000001 259.6266666666667 292.2666666666667 254.7200000000001 292.2666666666667H249.6C241.7066666666667 292.2666666666667 234.6666666666667 283.9466666666667 232.7466666666667 275.8400000000001C224.8533333333334 247.4666666666667 229.5466666666667 231.8933333333334 237.44 206.0800000000001V205.8666666666667C232.1066666666667 187.0933333333334 225.28 165.3333333333334 214.4 143.3600000000001L193.92 104.96L174.9333333333333 94.5066666666668C149.3333333333333 78.5066666666668 137.1733333333333 60.5866666666668 134.8266666666667 49.2800000000001C133.9733333333333 45.2266666666667 134.4 41.6000000000001 135.8933333333333 37.7600000000001L136.5333333333333 36.6933333333334L146.7733333333333 30.0800000000001L156.16 27.7333333333335C173.44 27.7333333333335 193.0666666666666 48.0000000000001 219.52 93.2266666666668L223.36 94.7200000000001C245.3333333333333 101.7600000000001 272.64 106.6666666666668 309.3333333333333 110.7200000000001C331.3066666666666 99.8400000000001 357.12 94.9333333333335 373.3333333333333 94.9333333333335C382.7200000000001 94.9333333333335 389.12 97.2800000000001 392.7466666666667 101.3333333333335M384 116.4800000000002L385.92 114.1333333333336C385.7066666666666 112.0000000000002 385.0666666666667 111.7866666666669 384 111.3600000000002H383.1466666666667L379.0933333333333 110.9333333333335C369.28 110.9333333333335 354.1333333333334 114.9866666666669 338.56 121.8133333333335C340.48 123.9466666666668 341.3333333333333 123.9466666666668 343.4666666666666 123.9466666666668C373.3333333333333 123.9466666666668 381.8666666666666 118.6133333333335 383.9999999999999 116.4800000000002M188.3733333333333 85.3333333333334C174.5066666666667 59.9466666666667 161.92 45.8666666666667 152.32 42.6666666666667C153.3866666666667 50.7733333333333 162.9866666666667 64.8533333333334 178.1333333333334 78.72L188.3733333333334 85.3333333333334M252.8 232.7466666666667C247.8933333333334 251.9466666666667 247.68 267.52 251.3066666666667 276.48L252.8 279.04L256 277.9733333333334C259.6266666666667 272.8533333333334 260.0533333333334 266.0266666666667 257.92 254.5066666666667L257.2800000000001 251.0933333333334L253.8666666666667 233.6L252.8 232.7466666666668z" /> + <glyph glyph-name="file-pdf-box" + unicode="&#xF226;" + horiz-adv-x="512" d=" M243.84 214.6133333333334C238.9333333333333 198.8266666666667 231.8933333333333 181.9733333333334 222.2933333333333 163.4133333333334C218.0266666666667 155.3066666666667 213.3333333333333 147.6266666666667 211.6266666666667 141.2266666666667L213.9733333333333 142.0800000000001C241.0666666666667 152.5333333333334 266.6666666666667 158.5066666666667 285.2266666666667 161.92C282.0266666666667 164.0533333333334 279.04 166.4 276.48 168.7466666666667C263.68 179.6266666666667 252.5866666666667 195.4133333333334 243.84 214.6133333333334M382.08 133.3333333333334C378.4533333333333 129.28 372.0533333333334 126.9333333333333 362.6666666666667 126.9333333333333C346.4533333333333 126.9333333333333 320 131.84 298.6666666666667 142.72C261.9733333333333 138.6666666666667 234.6666666666667 133.76 212.6933333333333 126.72C211.6266666666666 126.2933333333334 210.3466666666666 125.8666666666667 208.8533333333333 125.2266666666667C182.4 80 162.7733333333333 59.7333333333334 145.4933333333333 59.7333333333334C142.08 59.7333333333334 138.6666666666666 60.5866666666667 136.1066666666666 62.08L125.8666666666666 68.6933333333333L125.2266666666666 69.76C123.7333333333333 73.6 123.3066666666666 77.2266666666667 124.16 81.28C126.5066666666666 92.5866666666667 138.6666666666666 110.5066666666667 164.2666666666666 126.5066666666667C168.32 129.4933333333334 174.72 132.9066666666667 183.2533333333333 136.96C189.6533333333333 148.0533333333334 196.4799999999999 161.0666666666667 203.7333333333333 175.36C214.6133333333333 197.3333333333334 221.44 219.0933333333333 226.7733333333333 237.8666666666667V238.08C218.88 263.8933333333334 214.1866666666666 279.4666666666667 222.0799999999999 307.8400000000001C223.9999999999999 315.9466666666667 231.0399999999999 324.2666666666667 238.9333333333332 324.2666666666667H244.0533333333333C248.9599999999999 324.2666666666667 253.6533333333332 322.56 257.0666666666666 319.1466666666667C271.1466666666666 305.0666666666667 264.5333333333332 270.7200000000001 257.4933333333333 242.3466666666667C257.0666666666666 241.0666666666667 256.8533333333333 240 256.6399999999999 239.36C265.1733333333333 215.2533333333333 277.3333333333333 195.84 290.7733333333332 184.7466666666667C296.3199999999999 180.48 302.5066666666666 176.2133333333333 309.3333333333332 172.3733333333333C318.9333333333332 173.44 328.1066666666666 173.8666666666667 336.8533333333333 173.8666666666667C363.3066666666665 173.8666666666667 379.3066666666665 169.1733333333333 385.4933333333333 159.1466666666667C387.6266666666666 155.7333333333334 388.6933333333332 151.68 388.0533333333333 147.4133333333333C387.8399999999999 142.08 385.9199999999999 137.1733333333333 382.08 133.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M373.3333333333333 148.48C371.2 150.6133333333334 362.6666666666667 155.9466666666667 332.8 155.9466666666667C331.3066666666666 155.9466666666667 329.8133333333333 155.9466666666667 327.8933333333333 153.8133333333334C343.4666666666666 146.9866666666667 358.6133333333333 142.9333333333334 368.4266666666666 142.9333333333334C369.92 142.9333333333334 371.2 143.1466666666667 372.48 143.36H373.3333333333333C374.4 143.7866666666667 375.04 144 375.2533333333334 146.1333333333334C374.8266666666667 146.7733333333334 374.4 147.6266666666667 373.3333333333333 148.48M177.7066666666667 117.3333333333334C173.2266666666666 114.7733333333334 169.6 112.4266666666667 167.4666666666667 110.72C152.32 96.8533333333334 142.72 82.7733333333333 141.6533333333333 74.6666666666667C151.2533333333333 77.8666666666667 163.84 91.9466666666667 177.7066666666667 117.3333333333334M242.1333333333334 264.7466666666667L243.2 265.6C244.6933333333334 272.4266666666667 245.3333333333333 278.4 246.6133333333334 283.0933333333334L247.2533333333334 286.5066666666667C249.3866666666667 298.6666666666667 248.96 304.8533333333334 245.3333333333333 309.9733333333334L242.1333333333334 311.04C241.7066666666667 310.4 241.0666666666667 309.3333333333333 240.64 308.48C237.0133333333333 299.52 237.2266666666667 283.9466666666667 242.1333333333334 264.7466666666667z" /> + <glyph glyph-name="file-powerpoint" + unicode="&#xF227;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M170.6666666666667 213.3333333333334V170.6666666666667H192V42.6666666666667H170.6666666666667V21.3333333333334H256V42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333C312.7466666666667 85.3333333333334 341.3333333333333 113.92 341.3333333333333 149.3333333333334S312.7466666666667 213.3333333333334 277.3333333333333 213.3333333333334H170.6666666666667M277.3333333333333 170.6666666666667C289.0666666666667 170.6666666666667 298.6666666666667 161.0666666666667 298.6666666666667 149.3333333333334S289.0666666666667 128 277.3333333333333 128H234.6666666666667V170.6666666666667H277.3333333333333z" /> + <glyph glyph-name="file-powerpoint-box" + unicode="&#xF228;" + horiz-adv-x="512" d=" M209.0666666666667 162.1333333333333H262.4C294.4 162.1333333333333 308.48 168.1066666666667 322.1333333333334 179.6266666666667C335.7866666666667 191.36 341.3333333333333 208 341.3333333333333 229.76C341.3333333333333 250.4533333333334 336 266.6666666666667 322.1333333333334 279.8933333333333C308.2666666666667 292.48 295.04 298.6666666666667 262.4 298.6666666666667H170.6666666666667V85.3333333333334H209.0666666666667V162.1333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 83.2 384 106.6666666666667 384H405.3333333333333M209.0666666666667 192V268.8H258.1333333333334C272.2133333333334 268.8 283.0933333333334 263.4666666666667 290.1333333333334 256C297.1733333333334 248.5333333333334 300.8 240.64 300.8 229.5466666666667C300.8 217.6 296.9600000000001 209.28 290.1333333333334 202.6666666666667C283.3066666666667 196.0533333333334 275.2000000000001 192 260.6933333333334 192H209.0666666666667z" /> + <glyph glyph-name="file-presentation-box" + unicode="&#xF229;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-restore" + unicode="&#xF670;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M256 64C212.2666666666667 64 174.72 90.4533333333333 158.2933333333333 128H194.7733333333333C208.2133333333333 108.8 230.6133333333333 96 256 96C297.1733333333333 96 330.6666666666667 129.4933333333334 330.6666666666667 170.6666666666667S297.1733333333333 245.3333333333334 256 245.3333333333334C227.2 245.3333333333334 202.6666666666667 228.6933333333334 189.8666666666667 204.8L224 170.6666666666667H138.6666666666667V256L166.4 228.2666666666667C185.3866666666667 257.7066666666667 218.24 277.3333333333334 256 277.3333333333334C314.88 277.3333333333334 362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667S314.88 64 256 64z" /> + <glyph glyph-name="file-send" + unicode="&#xF22A;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333H128C104.32 405.3333333333333 85.3333333333333 386.3466666666667 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M267.52 34.7733333333333V77.44H182.1866666666667V119.8933333333333H267.52V162.56L331.52 98.56L267.52 34.7733333333333M277.3333333333333 256V373.3333333333334L394.6666666666667 256H277.3333333333333z" /> + <glyph glyph-name="file-tree" + unicode="&#xF645;" + horiz-adv-x="512" d=" M64 384H192V298.6666666666667H64V384M320 234.6666666666667H448V149.3333333333334H320V234.6666666666667M320 85.3333333333334H448V0H320V85.3333333333334M277.3333333333333 170.6666666666667H149.3333333333333V64H277.3333333333333V21.3333333333334H106.6666666666667V256H149.3333333333333V213.3333333333334H277.3333333333333V170.6666666666667z" /> + <glyph glyph-name="file-video" + unicode="&#xF22B;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M362.6666666666667 42.6666666666667V170.6666666666667L298.6666666666667 123.7333333333334V170.6666666666667H149.3333333333333V42.6666666666667H298.6666666666667V89.6L362.6666666666667 42.6666666666667z" /> + <glyph glyph-name="file-word" + unicode="&#xF22C;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M149.3333333333333 170.6666666666667L181.3333333333333 21.3333333333334H224L256 85.3333333333334L288 21.3333333333334H330.6666666666667L362.6666666666667 170.6666666666667H384V213.3333333333334H298.6666666666667V170.6666666666667H320L300.8 81.0666666666667L277.3333333333333 128H234.6666666666667L211.2 81.0666666666667L192 170.6666666666667H213.3333333333333V213.3333333333334H128V170.6666666666667H149.3333333333333z" /> + <glyph glyph-name="file-word-box" + unicode="&#xF22D;" + horiz-adv-x="512" d=" M330.6666666666667 85.3333333333334H298.6666666666667L256 245.3333333333334L213.3333333333333 85.3333333333334H181.3333333333333L130.1333333333333 298.6666666666667H166.4L199.2533333333333 138.6666666666667L241.0666666666667 298.6666666666667H270.9333333333334L312.9600000000001 138.6666666666667L345.6 298.6666666666667H381.8666666666666M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-xml" + unicode="&#xF22E;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M130.56 117.3333333333334L210.3466666666666 37.5466666666666L240.64 67.6266666666667L190.9333333333333 117.3333333333333L240.64 167.04L210.3466666666666 197.12L130.56 117.3333333333333M368.64 117.3333333333333L288.8533333333334 197.12L258.56 167.04L308.2666666666667 117.3333333333333L258.56 67.6266666666667L288.8533333333334 37.5466666666666L368.64 117.3333333333333z" /> + <glyph glyph-name="film" + unicode="&#xF22F;" + horiz-adv-x="512" d=" M74.6666666666667 384H106.6666666666667V409.6C106.6666666666667 418.9866666666667 114.3466666666667 426.6666666666667 123.7333333333333 426.6666666666667H217.6C226.9866666666666 426.6666666666667 234.6666666666667 418.9866666666667 234.6666666666667 409.6V384H266.6666666666667C284.3733333333334 384 298.6666666666667 369.7066666666667 298.6666666666667 352V341.3333333333334H469.3333333333333V21.3333333333334H298.6666666666667V10.6666666666667C298.6666666666667 -7.04 284.3733333333334 -21.3333333333333 266.6666666666667 -21.3333333333333H74.6666666666667C56.96 -21.3333333333333 42.6666666666667 -7.04 42.6666666666667 10.6666666666667V352C42.6666666666667 369.7066666666667 56.96 384 74.6666666666667 384M384 298.6666666666667V256H426.6666666666667V298.6666666666667H384M298.6666666666667 298.6666666666667V256H341.3333333333333V298.6666666666667H298.6666666666667M213.3333333333333 298.6666666666667V256H256V298.6666666666667H213.3333333333333M298.6666666666667 106.6666666666667V64H341.3333333333333V106.6666666666667H298.6666666666667M384 106.6666666666667V64H426.6666666666667V106.6666666666667H384M213.3333333333333 106.6666666666667V64H256V106.6666666666667H213.3333333333333z" /> + <glyph glyph-name="filmstrip" + unicode="&#xF230;" + horiz-adv-x="512" d=" M384 256H341.3333333333333V298.6666666666667H384M384 170.6666666666667H341.3333333333333V213.3333333333334H384M384 85.3333333333334H341.3333333333333V128H384M170.6666666666667 256H128V298.6666666666667H170.6666666666667M170.6666666666667 170.6666666666667H128V213.3333333333334H170.6666666666667M170.6666666666667 85.3333333333334H128V128H170.6666666666667M384 384V341.3333333333334H341.3333333333333V384H170.6666666666667V341.3333333333334H128V384H85.3333333333333V0H128V42.6666666666667H170.6666666666667V0H341.3333333333333V42.6666666666667H384V0H426.6666666666667V384H384z" /> + <glyph glyph-name="filmstrip-off" + unicode="&#xF231;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L341.3333333333333 36.9066666666667V0H170.6666666666667V42.6666666666667H128V0H85.3333333333333V292.9066666666667L21.3333333333333 356.9066666666667M384 256V298.6666666666667H341.3333333333333V256H384M384 170.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H384M384 128H358.8266666666667L145.4933333333334 341.3333333333334H170.6666666666667V384H341.3333333333333V341.3333333333334H384V384H426.6666666666667V60.16L384 102.8266666666667V128M170.6666666666667 170.6666666666667V207.5733333333334L164.9066666666667 213.3333333333334H128V170.6666666666667H170.6666666666667M170.6666666666667 85.3333333333334V128H128V85.3333333333334H170.6666666666667M128 384V358.8266666666667L102.8266666666667 384H128z" /> + <glyph glyph-name="filter" + unicode="&#xF232;" + horiz-adv-x="512" d=" M64 405.3333333333333H448V362.6666666666667H446.2933333333334L298.6666666666667 215.04V-40.7466666666667L213.3333333333333 44.5866666666667V215.2533333333333L65.92 362.6666666666667H64V405.3333333333333z" /> + <glyph glyph-name="filter-outline" + unicode="&#xF233;" + horiz-adv-x="512" d=" M64 405.3333333333333H448V362.6666666666667H446.2933333333334L320 236.3733333333334V-40.7466666666667L192 87.2533333333333V236.5866666666667L65.92 362.6666666666667H64V405.3333333333333M234.6666666666667 104.96L277.3333333333333 62.2933333333334V256H279.2533333333334L385.92 362.6666666666667H126.2933333333333L232.96 256H234.6666666666667V104.96z" /> + <glyph glyph-name="filter-remove" + unicode="&#xF234;" + horiz-adv-x="512" d=" M314.88 3.6266666666667L375.4666666666667 64L314.88 124.3733333333333L344.9600000000001 154.4533333333334L405.3333333333333 94.5066666666667L465.7066666666666 154.4533333333334L495.7866666666666 124.3733333333333L435.84 64L495.7866666666666 3.6266666666667L465.7066666666666 -26.4533333333333L405.3333333333333 34.1333333333334L344.9600000000001 -26.4533333333333L314.88 3.6266666666667M42.6666666666667 405.3333333333333H426.6666666666667V362.6666666666667H424.9600000000001L277.3333333333333 215.04V-40.7466666666667L192 44.5866666666667V215.2533333333333L44.5866666666667 362.6666666666667H42.6666666666667V405.3333333333333z" /> + <glyph glyph-name="filter-remove-outline" + unicode="&#xF235;" + horiz-adv-x="512" d=" M314.24 3.6266666666667L375.04 64L314.24 124.3733333333333L344.5333333333333 154.4533333333334L405.3333333333333 94.5066666666667L465.0666666666667 154.4533333333334L495.36 124.3733333333333L435.4133333333333 64L495.36 3.6266666666667L465.0666666666666 -26.4533333333333L405.3333333333333 34.1333333333334L344.5333333333333 -26.4533333333333L314.24 3.6266666666667M42.6666666666667 405.3333333333333H426.6666666666667V362.6666666666667H424.9600000000001L298.6666666666667 236.3733333333334V-40.7466666666667L170.6666666666667 87.2533333333333V236.5866666666667L44.5866666666667 362.6666666666667H42.6666666666667V405.3333333333333M213.3333333333333 104.96L256 62.2933333333334V256H257.92L364.5866666666667 362.6666666666667H104.96L211.6266666666667 256H213.3333333333333V104.96z" /> + <glyph glyph-name="filter-variant" + unicode="&#xF236;" + horiz-adv-x="512" d=" M128 170.6666666666667H384V213.3333333333334H128M64 320V277.3333333333334H448V320M213.3333333333333 64H298.6666666666667V106.6666666666667H213.3333333333333V64z" /> + <glyph glyph-name="fingerprint" + unicode="&#xF237;" + horiz-adv-x="512" d=" M252.3733333333334 411.0933333333334C179.84 409.8133333333334 132.9066666666667 377.1733333333334 132.9066666666667 377.1733333333334C126.9333333333333 373.3333333333333 125.44 364.5866666666667 129.4933333333334 358.6133333333334C133.76 352 142.08 350.9333333333334 148.48 355.4133333333333C148.48 355.4133333333333 240.4266666666667 423.4666666666667 372.48 354.56C378.6666666666667 350.9333333333334 386.9866666666667 353.0666666666667 390.6133333333334 359.4666666666667C394.6666666666668 365.8666666666667 391.8933333333333 373.9733333333334 384.64 378.0266666666667C349.0133333333333 396.8 315.3066666666667 406.1866666666667 285.0133333333333 409.6C273.7066666666667 410.88 262.8266666666667 411.3066666666667 252.3733333333334 411.0933333333334M260.6933333333334 355.4133333333334C133.5466666666667 357.12 72.7466666666667 254.9333333333334 72.7466666666667 254.9333333333334C68.6933333333334 248.7466666666667 70.4 240.64 76.3733333333334 236.5866666666667C82.56 232.5333333333334 90.88 234.6666666666667 96 241.4933333333334C96 241.4933333333334 147.6266666666667 330.6666666666667 260.2666666666667 328.7466666666667C373.3333333333334 327.2533333333334 422.8266666666667 242.1333333333334 422.8266666666667 242.1333333333334C426.6666666666668 235.9466666666667 434.7733333333334 233.8133333333334 441.1733333333334 237.4400000000001C448.0000000000001 241.2800000000001 449.4933333333334 249.3866666666667 445.8666666666667 256C445.8666666666667 256 387.2000000000001 353.7066666666667 260.6933333333334 355.4133333333334M245.3333333333334 302.5066666666667C209.4933333333334 299.9466666666667 175.1466666666667 286.9333333333334 149.3333333333334 265.3866666666667C98.56 223.36 66.1333333333333 146.3466666666667 101.76 42.6666666666667C104.1066666666667 35.6266666666667 111.7866666666667 32 118.8266666666667 34.3466666666667C125.6533333333333 36.6933333333333 129.4933333333333 44.3733333333333 126.9333333333333 51.2C94.08 146.56 123.3066666666667 209.0666666666667 166.4 245.3333333333333C208.4266666666667 279.68 282.6666666666667 288 337.92 253.8666666666667C365.0133333333333 236.8 386.1333333333333 207.36 396.8 178.3466666666667C407.68 149.3333333333334 407.04 121.1733333333334 398.2933333333333 107.9466666666667C389.3333333333333 94.08 371.2 88.96 355.2 93.0133333333333C339.2 97.0666666666667 326.1866666666666 108.5866666666667 325.5466666666666 132.9066666666667C324.9066666666667 169.3866666666667 296.32 192 266.6666666666667 195.4133333333334C238.08 198.8266666666667 205.0133333333333 183.4666666666667 196.4799999999999 149.3333333333334C180.2666666666666 87.04 221.0133333333333 -1.4933333333333 315.3066666666666 -30.9333333333333C322.3466666666666 -33.0666666666667 329.8133333333333 -29.2266666666667 332.1599999999999 -22.1866666666666C334.2933333333333 -15.1466666666666 330.6666666666666 -7.4666666666666 323.2 -5.3333333333333C241.4933333333333 20.0533333333334 210.56 97.4933333333333 222.2933333333332 143.1466666666667C227.4133333333333 163.6266666666667 245.3333333333333 170.6666666666667 264.1066666666666 168.96C282.6666666666665 166.8266666666667 298.6666666666666 155.7333333333334 298.6666666666666 132.48C299.7333333333333 97.4933333333333 322.56 73.8133333333334 348.5866666666666 67.2000000000001C374.6133333333333 60.5866666666668 404.6933333333332 68.9066666666667 420.6933333333332 93.4400000000001C437.3333333333333 118.4000000000001 434.5599999999999 153.6000000000001 421.9733333333332 187.5200000000001C409.1733333333332 221.6533333333334 385.4933333333332 255.3600000000001 351.9999999999999 276.4800000000001C319.1466666666666 296.9600000000001 281.3866666666665 305.0666666666667 245.3333333333332 302.5066666666667M253.0133333333332 250.6666666666667V250.4533333333334C215.0399999999999 249.1733333333334 177.0666666666665 229.5466666666667 155.3066666666665 188.1600000000001C127.1466666666665 135.0400000000001 139.9466666666665 80.8533333333334 158.7199999999998 41.8133333333334C177.7066666666665 2.5600000000001 203.5199999999998 -23.4666666666666 203.5199999999998 -23.4666666666666C208.6399999999998 -28.8 216.9599999999998 -28.8 222.2933333333332 -23.6799999999999S227.6266666666665 -10.6666666666666 222.5066666666665 -4.9066666666666C222.5066666666665 -4.9066666666666 199.6799999999998 18.5600000000001 182.8266666666665 53.3333333333334S155.7333333333332 132.0533333333334 178.7733333333332 175.5733333333334C202.6666666666665 220.3733333333333 245.3333333333332 231.2533333333334 282.8799999999999 220.3733333333333C320.8533333333332 209.28 352.6399999999999 176.2133333333334 351.9999999999999 127.36C351.1466666666666 119.8933333333333 356.4799999999999 113.4933333333334 363.9466666666665 113.0666666666667C371.1999999999998 112.4266666666667 377.5999999999998 117.9733333333334 378.2399999999999 126.72C379.5199999999998 187.7333333333334 338.5599999999999 231.8933333333333 290.3466666666665 245.9733333333334C278.1866666666665 249.3866666666667 265.5999999999998 251.0933333333334 253.0133333333332 250.6666666666667M257.7066666666665 144C250.2399999999999 143.7866666666667 244.4799999999999 137.6 244.6933333333332 130.3466666666667C244.6933333333332 130.3466666666667 245.3333333333332 98.7733333333333 262.6133333333332 68.2666666666667C280.5333333333332 37.76 318.5066666666665 8.7466666666667 384.6399999999999 14.9333333333333C391.8933333333332 15.36 397.6533333333332 21.3333333333334 397.2266666666665 29.0133333333333C396.7999999999999 36.48 390.3999999999999 42.0266666666666 382.0799999999998 41.3866666666667C324.0533333333332 36.0533333333333 299.5199999999998 58.0266666666666 285.6533333333332 81.7066666666667C271.7866666666665 105.1733333333334 271.3599999999999 130.56 271.3599999999999 130.56C271.3599999999999 138.0266666666667 265.3866666666666 144 257.7066666666665 144z" /> + <glyph glyph-name="fire" + unicode="&#xF238;" + horiz-adv-x="512" d=" M249.8133333333334 42.6666666666667C211.84 42.6666666666667 181.3333333333333 72.7466666666667 181.3333333333333 109.6533333333334C181.3333333333333 144.2133333333334 203.3066666666667 168.5333333333334 241.0666666666667 176.2133333333334C278.8266666666667 183.8933333333334 317.8666666666667 202.0266666666667 339.6266666666667 231.2533333333334C347.9466666666667 203.7333333333334 352 174.72 352 145.0666666666667C352 88.7466666666667 306.3466666666667 42.6666666666667 249.8133333333334 42.6666666666667M288 433.7066666666667S303.7866666666667 377.1733333333334 303.7866666666667 331.3066666666667C303.7866666666667 287.36 274.9866666666667 251.7333333333334 231.04 251.7333333333334C186.88 251.7333333333334 153.6 287.36 153.6 331.3066666666668L154.24 339.2000000000001C111.1466666666667 288 85.3333333333333 221.6533333333334 85.3333333333333 149.3333333333334C85.3333333333333 55.04 161.7066666666667 -21.3333333333333 256 -21.3333333333333S426.6666666666667 55.04 426.6666666666667 149.3333333333334C426.6666666666667 264.5333333333334 371.4133333333333 366.9333333333334 288 433.7066666666667z" /> + <glyph glyph-name="firefox" + unicode="&#xF239;" + horiz-adv-x="512" d=" M448 198.4C448 206.9333333333334 445.8666666666666 219.7333333333334 443.7333333333334 228.2666666666667C437.3333333333333 264.5333333333334 418.1333333333334 296.5333333333334 394.6666666666667 322.1333333333334C390.4 328.5333333333334 381.8666666666666 334.9333333333334 373.3333333333333 341.3333333333334C349.8666666666666 360.5333333333334 322.1333333333334 373.3333333333334 290.1333333333334 379.7333333333334C226.1333333333334 390.4000000000001 162.1333333333333 369.0666666666667 119.4666666666667 324.2666666666667V326.4000000000001C117.3333333333333 330.6666666666667 117.3333333333333 330.6666666666667 115.2 330.6666666666667C113.0666666666667 334.9333333333334 113.0666666666667 337.0666666666667 110.9333333333333 339.2000000000001C110.9333333333333 343.4666666666667 108.8 347.7333333333334 108.8 352C102.4 349.8666666666667 102.4 343.4666666666667 100.2666666666667 339.2000000000001C96 334.9333333333334 91.7333333333333 328.5333333333334 91.7333333333333 322.1333333333334C89.6 317.8666666666667 85.3333333333333 298.6666666666668 89.6 296.5333333333334H91.7333333333333V290.1333333333334C87.4666666666666 285.8666666666667 85.3333333333333 283.7333333333334 85.3333333333333 281.6C78.9333333333333 268.8000000000001 72.5333333333333 258.1333333333334 70.4 245.3333333333334V236.8000000000001V238.9333333333334C66.1333333333333 234.6666666666667 66.1333333333333 228.2666666666667 64 224.0000000000001C66.1333333333333 224.0000000000001 66.1333333333333 226.1333333333334 68.2666666666667 226.1333333333334C57.6 170.6666666666668 72.5333333333333 113.0666666666667 106.6666666666666 70.4C157.8666666666666 8.5333333333334 245.3333333333333 -17.0666666666666 322.1333333333333 10.6666666666667C396.8 38.4 448 110.9333333333333 448 192V198.4M288 360.5333333333334C320 354.1333333333334 349.8666666666666 339.2000000000001 373.3333333333333 317.8666666666667C375.4666666666667 315.7333333333334 377.6 311.4666666666667 377.6 311.4666666666667C371.2 317.8666666666667 356.2666666666667 328.5333333333334 347.7333333333334 324.2666666666667C349.8666666666667 317.8666666666667 375.4666666666667 285.8666666666667 377.6 283.7333333333334C377.6 283.7333333333334 384 256 386.1333333333333 253.8666666666667C386.1333333333333 249.6 371.2 194.1333333333334 371.2 185.6C371.2 183.4666666666667 352 145.0666666666667 354.1333333333333 145.0666666666667C347.7333333333333 130.1333333333333 341.3333333333333 130.1333333333333 339.2 128C337.0666666666666 128 324.2666666666667 123.7333333333334 309.3333333333333 119.4666666666667C296.5333333333333 117.3333333333333 281.5999999999999 113.0666666666666 270.9333333333333 115.2C264.5333333333333 115.2 256 115.2 249.6 119.4666666666667C247.4666666666666 121.6 230.3999999999999 130.1333333333333 226.1333333333333 132.2666666666667C219.7333333333333 134.4 215.4666666666666 138.6666666666666 211.2 142.9333333333333H234.6666666666667C247.4666666666667 145.0666666666666 302.9333333333333 164.2666666666667 300.8 172.8C300.8 179.2 290.1333333333334 183.4666666666667 285.8666666666667 187.7333333333333C279.4666666666667 189.8666666666666 253.8666666666667 185.6 243.2 181.3333333333333C243.2 181.3333333333333 202.6666666666667 192 192 200.5333333333333C192 202.6666666666666 189.8666666666667 215.4666666666666 189.8666666666667 217.6C187.7333333333334 219.7333333333333 196.2666666666667 226.1333333333333 196.2666666666667 226.1333333333333S217.6 247.4666666666667 217.6 249.6C221.8666666666667 249.6 226.1333333333334 253.8666666666666 228.2666666666667 256C226.1333333333334 256 230.4 258.1333333333334 236.8 262.4C243.2000000000001 266.6666666666667 247.4666666666667 266.6666666666667 247.4666666666667 273.0666666666667C247.4666666666667 273.0666666666667 258.1333333333334 292.2666666666667 245.3333333333334 290.1333333333334C245.3333333333334 290.1333333333334 226.1333333333334 292.2666666666667 219.7333333333334 292.2666666666667C213.3333333333334 288 211.2000000000001 290.1333333333334 204.8000000000001 292.2666666666667C204.8000000000001 292.2666666666667 200.5333333333334 296.5333333333333 200.5333333333334 298.6666666666667C202.6666666666668 302.9333333333333 217.6000000000001 334.9333333333333 224.0000000000001 337.0666666666666C219.7333333333334 345.6 198.4000000000001 339.2 194.1333333333334 332.8C194.1333333333334 332.8 177.0666666666667 320 168.5333333333334 317.8666666666666C168.5333333333334 320 157.8666666666667 322.1333333333334 147.2000000000001 322.1333333333334C185.6000000000001 354.1333333333334 236.8000000000001 369.0666666666666 288.0000000000001 360.5333333333333z" /> + <glyph glyph-name="fish" + unicode="&#xF23A;" + horiz-adv-x="512" d=" M256 21.3333333333334L272.2133333333333 85.3333333333334C202.6666666666667 89.8133333333334 140.5866666666667 119.4666666666667 122.6666666666667 158.2933333333334C120.7466666666667 148.0533333333334 117.9733333333333 138.6666666666667 113.7066666666667 131.6266666666667C99.6266666666667 106.6666666666667 71.04 106.6666666666667 42.6666666666667 106.6666666666667C66.1333333333333 106.6666666666667 74.6666666666667 140.16 74.6666666666667 181.3333333333334S66.1333333333333 256 42.6666666666667 256C71.04 256 99.6266666666667 256 113.7066666666667 231.04C117.9733333333333 224 120.7466666666667 214.6133333333334 122.6666666666667 204.3733333333333C136.5333333333333 234.6666666666667 177.4933333333334 259.2000000000001 227.4133333333334 270.5066666666667L192 341.3333333333334C234.6666666666667 341.3333333333334 277.3333333333333 341.3333333333334 305.7066666666667 327.04C329.8133333333334 315.0933333333334 343.68 292.9066666666667 356.0533333333334 269.2266666666667C418.3466666666667 254.2933333333334 469.3333333333333 220.5866666666667 469.3333333333333 181.3333333333334C469.3333333333333 141.2266666666667 416 106.6666666666667 352 92.5866666666667C334.2933333333333 69.12 317.0133333333333 47.36 302.2933333333333 35.6266666666667C284.3733333333334 21.3333333333334 270.2933333333333 21.3333333333334 256 21.3333333333334M362.6666666666667 213.3333333333334C350.9333333333333 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192S350.9333333333333 170.6666666666667 362.6666666666667 170.6666666666667S384 180.2666666666667 384 192S374.4 213.3333333333334 362.6666666666667 213.3333333333334z" /> + <glyph glyph-name="flag" + unicode="&#xF23B;" + horiz-adv-x="512" d=" M307.2 320L298.6666666666667 362.6666666666667H106.6666666666667V0H149.3333333333333V149.3333333333334H268.8L277.3333333333333 106.6666666666667H426.6666666666667V320H307.2z" /> + <glyph glyph-name="flag-checkered" + unicode="&#xF23C;" + horiz-adv-x="512" d=" M307.2 320H426.6666666666667V106.6666666666667H277.3333333333333L268.8 149.3333333333334H149.3333333333333V0H106.6666666666667V362.6666666666667H298.6666666666667L307.2 320M298.6666666666667 149.3333333333334H341.3333333333333V192H384V234.6666666666667H341.3333333333333V277.3333333333334H298.6666666666667V234.6666666666667L277.3333333333333 277.3333333333334V320H234.6666666666667V277.3333333333334H192V320H149.3333333333333V277.3333333333334H192V234.6666666666667H149.3333333333333V192H192V234.6666666666667H234.6666666666667V192H277.3333333333333V234.6666666666667L298.6666666666667 192V149.3333333333334M234.6666666666667 234.6666666666667V277.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667M298.6666666666667 234.6666666666667H341.3333333333333V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="flag-outline" + unicode="&#xF23D;" + horiz-adv-x="512" d=" M309.3333333333333 320H426.6666666666667V106.6666666666667H277.3333333333333L266.6666666666667 149.3333333333334H149.3333333333333V0H106.6666666666667V362.6666666666667H298.6666666666667L309.3333333333333 320M149.3333333333333 320V192H277.3333333333333L288 149.3333333333334H384V277.3333333333334H298.6666666666667L288 320H149.3333333333333z" /> + <glyph glyph-name="flag-outline-variant" + unicode="&#xF23E;" + horiz-adv-x="512" d=" M128 384C139.7333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V343.8933333333333C171.9466666666667 353.28 202.6666666666667 362.6666666666667 234.6666666666667 362.6666666666667C298.6666666666667 362.6666666666667 298.6666666666667 320 341.3333333333333 320C405.3333333333333 320 426.6666666666667 362.6666666666667 426.6666666666667 362.6666666666667V192S405.3333333333333 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 192 234.6666666666667 192C170.6666666666667 192 149.3333333333333 149.3333333333334 149.3333333333333 149.3333333333334V0H106.6666666666667V362.6666666666667C106.6666666666667 374.4 116.2666666666667 384 128 384M149.3333333333333 293.3333333333334V202.6666666666667S192 234.6666666666667 234.6666666666667 234.6666666666667S298.6666666666667 192 341.3333333333333 192S384 213.3333333333334 384 213.3333333333334V288S362.6666666666667 277.3333333333334 341.3333333333333 277.3333333333334C298.6666666666667 277.3333333333334 277.3333333333333 320 234.6666666666667 320S149.3333333333333 293.3333333333334 149.3333333333333 293.3333333333334z" /> + <glyph glyph-name="flag-triangle" + unicode="&#xF23F;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H192V-21.3333333333333H149.3333333333333V405.3333333333333M405.3333333333333 256L234.6666666666667 136.5333333333334V375.4666666666667L405.3333333333333 256z" /> + <glyph glyph-name="flag-variant" + unicode="&#xF240;" + horiz-adv-x="512" d=" M128 384C139.7333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V343.8933333333333C171.9466666666667 353.28 202.6666666666667 362.6666666666667 234.6666666666667 362.6666666666667C298.6666666666667 362.6666666666667 298.6666666666667 320 341.3333333333333 320C405.3333333333333 320 426.6666666666667 362.6666666666667 426.6666666666667 362.6666666666667V192S405.3333333333333 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 192 234.6666666666667 192C170.6666666666667 192 149.3333333333333 149.3333333333334 149.3333333333333 149.3333333333334V0H106.6666666666667V362.6666666666667C106.6666666666667 374.4 116.2666666666667 384 128 384z" /> + <glyph glyph-name="flash" + unicode="&#xF241;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V170.6666666666667H213.3333333333333V-21.3333333333333L362.6666666666667 234.6666666666667H277.3333333333333L362.6666666666667 405.3333333333333H149.3333333333333z" /> + <glyph glyph-name="flash-auto" + unicode="&#xF242;" + horiz-adv-x="512" d=" M359.4666666666667 284.8L384 362.6666666666667L408.5333333333333 284.8M405.3333333333333 405.3333333333333H362.6666666666667L294.4 213.3333333333334H334.9333333333334L349.8666666666667 256H418.1333333333334L433.0666666666667 213.3333333333334H473.6M64 405.3333333333333V149.3333333333334H128V-42.6666666666666L277.3333333333333 213.3333333333334H192L277.3333333333333 405.3333333333333H64z" /> + <glyph glyph-name="flash-off" + unicode="&#xF243;" + horiz-adv-x="512" d=" M362.6666666666667 234.6666666666667H277.3333333333333L362.6666666666667 405.3333333333333H149.3333333333333V358.8266666666667L329.8133333333334 178.3466666666667M69.76 384L42.6666666666667 356.9066666666667L149.3333333333333 250.24V170.6666666666667H213.3333333333333V-21.3333333333333L289.7066666666667 109.6533333333334L378.24 21.3333333333334L405.3333333333333 48.4266666666667L69.76 384z" /> + <glyph glyph-name="flashlight" + unicode="&#xF244;" + horiz-adv-x="512" d=" M192 234.6666666666667L128 341.3333333333334H384L320 234.6666666666667H192M384 362.6666666666667H128V405.3333333333333H384V362.6666666666667M192 -21.3333333333333V213.3333333333334H320V-21.3333333333333H192M256 170.6666666666667C244.2666666666667 170.6666666666667 234.6666666666667 161.0666666666667 234.6666666666667 149.3333333333334S244.2666666666667 128 256 128S277.3333333333333 137.6 277.3333333333333 149.3333333333334S267.7333333333334 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="flashlight-off" + unicode="&#xF245;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L320 58.24V-21.3333333333333H192V186.24L42.6666666666667 335.5733333333334M384 341.3333333333334L320 234.6666666666667H252.16L145.4933333333334 341.3333333333334H384M384 362.6666666666667H128V405.3333333333333H384V362.6666666666667M320 213.3333333333334V166.8266666666667L273.4933333333334 213.3333333333334H320z" /> + <glyph glyph-name="flask" + unicode="&#xF093;" + horiz-adv-x="512" d=" M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L352.64 139.3066666666667L298.6666666666667 85.3333333333334L190.5066666666667 193.4933333333334L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M277.3333333333333 234.6666666666667C265.6 234.6666666666667 256 225.0666666666667 256 213.3333333333334S265.6 192 277.3333333333333 192S298.6666666666667 201.6 298.6666666666667 213.3333333333334S289.0666666666667 234.6666666666667 277.3333333333333 234.6666666666667z" /> + <glyph glyph-name="flask-empty" + unicode="&#xF094;" + horiz-adv-x="512" d=" M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="flask-empty-outline" + unicode="&#xF095;" + horiz-adv-x="512" d=" M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L277.3333333333333 269.8666666666667V362.6666666666667H234.6666666666667V269.8666666666667L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="flask-outline" + unicode="&#xF096;" + horiz-adv-x="512" d=" M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L277.3333333333333 269.8666666666667V362.6666666666667H234.6666666666667V269.8666666666667L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128M277.3333333333333 106.6666666666667L305.92 135.2533333333333L347.0933333333333 64H164.9066666666667L221.6533333333333 162.3466666666667L277.3333333333333 106.6666666666667M266.6666666666667 192C272.64 192 277.3333333333333 187.3066666666667 277.3333333333333 181.3333333333334S272.64 170.6666666666667 266.6666666666667 170.6666666666667S256 175.36 256 181.3333333333334S260.6933333333334 192 266.6666666666667 192z" /> + <glyph glyph-name="flattr" + unicode="&#xF246;" + horiz-adv-x="512" d=" M448 256V128C448 57.3866666666667 390.6133333333333 0 320 0H94.08L236.16 141.8666666666667C242.7733333333334 148.48 249.3866666666667 155.0933333333334 252.5866666666667 154.6666666666667C256 154.0266666666667 256 146.3466666666667 256 138.6666666666667V85.3333333333334H298.6666666666667C334.08 85.3333333333334 362.6666666666667 113.92 362.6666666666667 149.3333333333334V268.5866666666667L448 353.92V256M64 128V256C64 326.6133333333334 121.3866666666667 384 192 384H417.92L275.84 242.1333333333334C269.2266666666667 235.52 262.6133333333334 228.9066666666667 259.4133333333333 229.3333333333334C256 229.9733333333334 256 237.6533333333334 256 245.3333333333334V298.6666666666667H213.3333333333333C177.92 298.6666666666667 149.3333333333333 270.0800000000001 149.3333333333333 234.6666666666667V115.4133333333334L64 30.08V128z" /> + <glyph glyph-name="flip-to-back" + unicode="&#xF247;" + horiz-adv-x="512" d=" M320 85.3333333333334H362.6666666666667V128H320M320 341.3333333333334H362.6666666666667V384H320M106.6666666666667 298.6666666666667H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H362.6666666666667V42.6666666666667H106.6666666666667M405.3333333333333 85.3333333333334C428.8 85.3333333333334 448 104.5333333333333 448 128H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M192 85.3333333333334V128H149.3333333333333C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M405.3333333333333 384V341.3333333333334H448C448 365.0133333333333 428.8 384 405.3333333333333 384M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M192 384C168.32 384 149.3333333333333 365.0133333333333 149.3333333333333 341.3333333333334H192M192 213.3333333333334H149.3333333333333V170.6666666666667H192M192 298.6666666666667H149.3333333333333V256H192V298.6666666666667z" /> + <glyph glyph-name="flip-to-front" + unicode="&#xF248;" + horiz-adv-x="512" d=" M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 128H192V341.3333333333334H405.3333333333333M405.3333333333333 384H192C168.32 384 149.3333333333333 365.0133333333333 149.3333333333333 341.3333333333334V128C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334H405.3333333333333C428.8 85.3333333333334 448 104.5333333333333 448 128V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M320 0H362.6666666666667V42.6666666666667H320M64 256H106.6666666666667V298.6666666666667H64M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M64 85.3333333333334H106.6666666666667V128H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64V170.6666666666667z" /> + <glyph glyph-name="floppy" + unicode="&#xF249;" + horiz-adv-x="512" d=" M96 -21.3333333333333L42.6666666666667 32V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667V128C362.6666666666667 139.7333333333334 353.0666666666667 149.3333333333334 341.3333333333333 149.3333333333334H149.3333333333333C137.6 149.3333333333334 128 139.7333333333334 128 128V-21.3333333333333H96M106.6666666666667 362.6666666666667V234.6666666666667C106.6666666666667 222.9333333333333 116.2666666666667 213.3333333333334 128 213.3333333333334H384C395.7333333333334 213.3333333333334 405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667V362.6666666666667H106.6666666666667M170.6666666666667 106.6666666666667H234.6666666666667V21.3333333333334H170.6666666666667V106.6666666666667M426.6666666666667 362.6666666666667V341.3333333333334H448V362.6666666666667H426.6666666666667z" /> + <glyph glyph-name="flower" + unicode="&#xF24A;" + horiz-adv-x="512" d=" M64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C256 85.3333333333334 170.0266666666667 170.6666666666667 64 170.6666666666667M256 330.6666666666667C285.44 330.6666666666667 309.3333333333333 306.7733333333333 309.3333333333333 277.3333333333334S285.44 224 256 224S202.6666666666667 247.8933333333333 202.6666666666667 277.3333333333334S226.56 330.6666666666667 256 330.6666666666667M119.4666666666667 229.3333333333334C119.4666666666667 199.8933333333334 143.36 176 172.8 176C184.1066666666666 176 194.56 179.6266666666667 202.6666666666667 185.3866666666667V181.3333333333334C202.6666666666667 151.8933333333334 226.56 128 256 128S309.3333333333333 151.8933333333334 309.3333333333333 181.3333333333334V185.3866666666667C317.44 179.6266666666667 327.8933333333333 176 339.2 176C368.64 176 392.5333333333333 199.8933333333334 392.5333333333333 229.3333333333334C392.5333333333333 250.6666666666667 379.9466666666666 268.8 362.0266666666667 277.3333333333334C379.9466666666666 285.8666666666667 392.5333333333333 304.2133333333334 392.5333333333333 325.3333333333334C392.5333333333333 354.7733333333333 368.64 378.6666666666667 339.2 378.6666666666667C327.8933333333333 378.6666666666667 317.44 375.2533333333334 309.3333333333333 369.28V373.3333333333334C309.3333333333333 402.7733333333333 285.44 426.6666666666667 256 426.6666666666667S202.6666666666667 402.7733333333333 202.6666666666667 373.3333333333334V369.28C194.56 375.2533333333334 184.1066666666667 378.6666666666667 172.8 378.6666666666667C143.36 378.6666666666667 119.4666666666667 354.7733333333333 119.4666666666667 325.3333333333334C119.4666666666667 304.2133333333334 132.0533333333333 285.8666666666667 149.9733333333333 277.3333333333334C132.0533333333333 268.8 119.4666666666667 250.6666666666667 119.4666666666667 229.3333333333334M256 -21.3333333333333C362.0266666666667 -21.3333333333333 448 64.64 448 170.6666666666667C341.3333333333333 170.6666666666667 256 85.3333333333334 256 -21.3333333333333z" /> + <glyph glyph-name="folder" + unicode="&#xF24B;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320H256L213.3333333333333 362.6666666666667z" /> + <glyph glyph-name="folder-account" + unicode="&#xF24C;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H234.6666666666667V106.6666666666667C234.6666666666667 135.04 291.6266666666667 149.3333333333334 320 149.3333333333334S405.3333333333333 135.04 405.3333333333333 106.6666666666667M320 256C343.4666666666667 256 362.6666666666667 236.8 362.6666666666667 213.3333333333334S343.4666666666667 170.6666666666667 320 170.6666666666667S277.3333333333333 189.8666666666667 277.3333333333333 213.3333333333334C277.3333333333333 237.0133333333333 296.5333333333333 256 320 256M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-download" + unicode="&#xF24D;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M410.6666666666667 170.6666666666667H341.3333333333333V256H298.6666666666667V170.6666666666667H229.3333333333333L320 80" /> + <glyph glyph-name="folder-google-drive" + unicode="&#xF24E;" + horiz-adv-x="512" d=" M293.3333333333333 256H344.32L405.3333333333333 149.3333333333334H342.4L288 246.1866666666667M390.4 85.3333333333334H272L301.8666666666667 138.6666666666667H411.0933333333333L416.64 128.8533333333334M245.3333333333333 85.3333333333334L221.8666666666667 130.9866666666667L282.4533333333333 236.8000000000001L314.4533333333333 180.0533333333334L261.3333333333333 85.3333333333334M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-image" + unicode="&#xF24F;" + horiz-adv-x="512" d=" M106.6666666666667 85.3333333333334L202.6666666666667 213.3333333333334L277.3333333333333 117.3333333333334L330.6666666666667 181.3333333333334L405.3333333333333 85.3333333333334M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 300.8 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-lock" + unicode="&#xF250;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M405.3333333333333 85.3333333333334V170.6666666666667H384V192C384 227.4133333333334 355.4133333333333 256 320 256S256 227.4133333333334 256 192V170.6666666666667H234.6666666666667V85.3333333333334H405.3333333333333M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192V170.6666666666667H298.6666666666667V192C298.6666666666667 203.7333333333334 308.2666666666667 213.3333333333334 320 213.3333333333334z" /> + <glyph glyph-name="folder-lock-open" + unicode="&#xF251;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M405.3333333333333 85.3333333333334V170.6666666666667H298.6666666666667V213.3333333333334C298.6666666666667 225.0666666666667 308.2666666666667 234.6666666666667 320 234.6666666666667S341.3333333333333 225.0666666666667 341.3333333333333 213.3333333333334H384C384 248.7466666666667 355.4133333333333 277.3333333333334 320 277.3333333333334S256 248.7466666666667 256 213.3333333333334V170.6666666666667H234.6666666666667V85.3333333333334H405.3333333333333z" /> + <glyph glyph-name="folder-move" + unicode="&#xF252;" + horiz-adv-x="512" d=" M192 64V128H106.6666666666667V213.3333333333334H192V277.3333333333334L298.6666666666667 170.6666666666667M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-multiple" + unicode="&#xF253;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667H298.6666666666667L256 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H469.3333333333333C492.8 64 512 83.2 512 106.6666666666667V320C512 343.4666666666667 492.8 362.6666666666667 469.3333333333333 362.6666666666667M42.6666666666667 320H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H426.6666666666667V21.3333333333334H42.6666666666667V320z" /> + <glyph glyph-name="folder-multiple-image" + unicode="&#xF254;" + horiz-adv-x="512" d=" M149.3333333333333 128L245.3333333333333 256L320 160L373.3333333333333 224L448 128M469.3333333333333 362.6666666666667H298.6666666666667L256 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H469.3333333333333C492.8 64 512 83.2 512 106.6666666666667V320C512 343.4666666666667 492.8 362.6666666666667 469.3333333333333 362.6666666666667M42.6666666666667 320H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H426.6666666666667V21.3333333333334H42.6666666666667V320z" /> + <glyph glyph-name="folder-multiple-outline" + unicode="&#xF255;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667C492.8 362.6666666666667 512 343.4666666666667 512 320V106.6666666666667C512 83.2 492.8 64 469.3333333333333 64H128C104.5333333333333 64 85.3333333333333 83.2 85.3333333333333 106.6666666666667V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333H256L298.6666666666667 362.6666666666667H469.3333333333333M42.6666666666667 320V21.3333333333334H426.6666666666667V-21.3333333333333H42.6666666666667C19.2 -21.3333333333333 0 -2.1333333333333 0 21.3333333333334V320H42.6666666666667M128 320V106.6666666666667H469.3333333333333V320H128z" /> + <glyph glyph-name="folder-outline" + unicode="&#xF256;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V277.3333333333334H426.6666666666667M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-plus" + unicode="&#xF257;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667L256 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333M320 256V192H256V149.3333333333334H320V85.3333333333334H362.6666666666667V149.3333333333334H426.6666666666667V192H362.6666666666667V256H320z" /> + <glyph glyph-name="folder-remove" + unicode="&#xF258;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667L256 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333M265.8133333333334 215.8933333333334L311.2533333333334 170.6666666666667L265.8133333333334 125.44L296.1066666666667 95.1466666666667L341.3333333333333 140.5866666666667L386.56 95.1466666666667L416.8533333333333 125.4400000000001L371.4133333333333 170.6666666666667L416.8533333333333 215.8933333333334L386.56 246.1866666666667L341.3333333333333 200.7466666666667L296.1066666666667 246.1866666666667L265.8133333333333 215.8933333333333z" /> + <glyph glyph-name="folder-upload" + unicode="&#xF259;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M229.3333333333333 170.6666666666667H298.6666666666667V85.3333333333334H341.3333333333333V170.6666666666667H410.6666666666667L320 261.3333333333334" /> + <glyph glyph-name="food" + unicode="&#xF25A;" + horiz-adv-x="512" d=" M330.6666666666667 0L298.6666666666667 277.3333333333334H346.24L322.1333333333334 374.1866666666667L359.2533333333334 384L385.92 277.3333333333334H469.3333333333333L437.3333333333333 0H330.6666666666667M106.6666666666667 213.3333333333334H213.3333333333333C248.7466666666667 213.3333333333334 277.3333333333333 184.7466666666667 277.3333333333333 149.3333333333334H42.6666666666667C42.6666666666667 184.7466666666667 71.2533333333333 213.3333333333334 106.6666666666667 213.3333333333334M277.3333333333333 64C277.3333333333333 28.5866666666667 248.7466666666667 0 213.3333333333333 0H106.6666666666667C71.2533333333333 0 42.6666666666667 28.5866666666667 42.6666666666667 64H277.3333333333333M64 128H170.6666666666667L202.6666666666667 96L234.6666666666667 128H256C267.7333333333334 128 277.3333333333333 118.4 277.3333333333333 106.6666666666667S267.7333333333334 85.3333333333334 256 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667S52.2666666666667 128 64 128z" /> + <glyph glyph-name="food-apple" + unicode="&#xF25B;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667C469.3333333333333 170.6666666666667 362.6666666666667 -21.3333333333333 320 -21.3333333333333S277.3333333333333 0 256 0S234.6666666666667 -21.3333333333333 192 -21.3333333333333S42.6666666666667 170.6666666666667 85.3333333333333 234.6666666666667S192 298.6666666666667 234.6666666666667 277.3333333333334V341.3333333333334C114.7733333333333 275.8400000000001 87.68 367.36 87.68 367.36S144.4266666666667 443.9466666666667 234.6666666666667 341.3333333333334V384H277.3333333333333V277.3333333333334C320 298.6666666666667 384 298.6666666666667 426.6666666666667 234.6666666666667z" /> + <glyph glyph-name="food-fork-drink" + unicode="&#xF5F2;" + horiz-adv-x="512" d=" M64 384C52.2666666666667 384 42.6666666666667 374.4 42.6666666666667 362.6666666666667V245.3333333333334C42.6666666666667 209.28 64.64 178.5600000000001 96 165.9733333333334V32C96 14.2933333333334 110.2933333333333 0 128 0S160 14.2933333333334 160 32V165.9733333333334C191.36 178.5600000000001 213.3333333333333 209.28 213.3333333333333 245.3333333333334V362.6666666666667C213.3333333333333 374.4 203.7333333333334 384 192 384S170.6666666666667 374.4 170.6666666666667 362.6666666666667V277.3333333333334C170.6666666666667 271.36 165.9733333333333 266.6666666666667 160 266.6666666666667S149.3333333333333 271.36 149.3333333333333 277.3333333333334V362.6666666666667C149.3333333333333 374.4 139.7333333333333 384 128 384S106.6666666666667 374.4 106.6666666666667 362.6666666666667V277.3333333333334C106.6666666666667 271.36 101.9733333333333 266.6666666666667 96 266.6666666666667S85.3333333333333 271.36 85.3333333333333 277.3333333333334V362.6666666666667C85.3333333333333 374.4 75.7333333333333 384 64 384M424.1066666666667 384C421.3333333333333 384 418.56 382.0800000000001 416 380.5866666666667L341.3333333333333 336V256H256V213.3333333333334H277.3333333333333L298.6666666666667 0H426.6666666666667L448 213.3333333333334H469.3333333333333V256H384V312.7466666666667L437.3333333333333 344.7466666666667C448 350.7200000000001 450.7733333333333 362.6666666666667 444.5866666666667 373.3333333333334C440.1066666666667 381.0133333333333 432.2133333333334 385.0666666666667 424.1066666666667 384z" /> + <glyph glyph-name="food-off" + unicode="&#xF5F3;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L448 -15.36L420.9066666666667 -42.6666666666666L378.24 0H330.6666666666667L324.48 53.3333333333334L276.6933333333334 101.5466666666666C274.3466666666667 92.16 266.0266666666667 85.3333333333333 256 85.3333333333333H64C52.2666666666667 85.3333333333333 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666666S52.2666666666667 128 64 128H170.6666666666667L202.6666666666667 95.9999999999999L234.6666666666667 128H250.24L228.9066666666667 149.3333333333334H42.6666666666667C42.6666666666667 184.7466666666667 71.2533333333333 213.3333333333334 106.6666666666667 213.3333333333334H164.9066666666667L42.6666666666667 335.5733333333334M298.6666666666667 277.3333333333334H346.24L322.1333333333334 374.1866666666667L359.2533333333334 384L385.92 277.3333333333334H469.3333333333333L442.4533333333333 44.3733333333333L310.1866666666666 176.64L298.6666666666667 277.3333333333334M277.3333333333333 64C277.3333333333333 28.5866666666667 248.7466666666667 0 213.3333333333333 0H106.6666666666667C71.2533333333333 0 42.6666666666667 28.5866666666667 42.6666666666667 64H277.3333333333333z" /> + <glyph glyph-name="food-variant" + unicode="&#xF25C;" + horiz-adv-x="512" d=" M469.3333333333333 64C469.3333333333333 16.8533333333334 431.1466666666667 -21.3333333333333 384 -21.3333333333333H320C272.8533333333333 -21.3333333333333 234.6666666666667 16.8533333333334 234.6666666666667 64V106.6666666666667H379.52L438.3999999999999 208.4266666666667L471.6799999999999 189.2266666666667L423.8933333333333 106.6666666666667H469.3333333333333V64M192 -21.3333333333333H42.6666666666667C42.6666666666667 42.6666666666667 42.6666666666667 106.6666666666667 49.7066666666667 174.2933333333334C55.4666666666667 228.2666666666667 65.7066666666667 284.5866666666667 76.8 341.3333333333334H64V384H170.6666666666667V341.3333333333334H157.8666666666667C168.96 284.5866666666667 179.2 228.2666666666667 184.96 174.2933333333334C192 106.6666666666667 192 42.6666666666667 192 -21.3333333333333z" /> + <glyph glyph-name="football" + unicode="&#xF25D;" + horiz-adv-x="512" d=" M160 288C195.6266666666667 322.7733333333333 240.8533333333333 347.9466666666667 285.2266666666667 358.8266666666667C329.8133333333334 369.7066666666667 373.3333333333333 366.2933333333334 396.8 362.6666666666667C420.48 359.4666666666667 423.8933333333333 356.0533333333334 427.3066666666667 332.5866666666667C430.5066666666667 309.3333333333334 433.7066666666667 265.6 422.8266666666667 221.2266666666667C411.9466666666666 176.8533333333334 386.7733333333333 131.6266666666667 352 96C316.3733333333334 61.2266666666667 271.1466666666667 36.0533333333334 226.7733333333333 25.1733333333333C182.4 14.2933333333333 138.6666666666666 17.4933333333333 115.4133333333333 20.6933333333333C91.9466666666666 24.1066666666667 88.5333333333333 27.52 85.3333333333333 51.2C81.7066666666667 74.6666666666667 78.2933333333333 118.1866666666667 89.1733333333333 162.7733333333333C100.0533333333333 207.1466666666667 125.2266666666667 252.3733333333333 160 288M155.7333333333333 111.1466666666667L175.1466666666666 91.7333333333334L200.96 117.3333333333334L226.7733333333333 91.7333333333334L246.1866666666667 111.1466666666667L220.5866666666667 136.96L256 172.5866666666667L281.8133333333334 146.7733333333333L301.2266666666667 166.1866666666667L275.4133333333333 192L311.04 227.4133333333334L336.8533333333333 201.8133333333334L356.2666666666667 221.2266666666667L330.6666666666667 247.0400000000001L356.2666666666667 272.8533333333334L336.8533333333333 292.2666666666668L311.04 266.6666666666668L285.2266666666666 292.2666666666668L265.8133333333333 272.8533333333335L291.4133333333333 247.0400000000002L256 211.4133333333334L230.1866666666667 237.2266666666667L210.7733333333333 217.8133333333334L236.5866666666667 192L200.96 156.5866666666667L175.1466666666667 182.1866666666667L155.7333333333334 162.7733333333333L181.3333333333333 136.96L155.7333333333333 111.1466666666667z" /> + <glyph glyph-name="football-australian" + unicode="&#xF25E;" + horiz-adv-x="512" d=" M160 288C195.6266666666667 322.7733333333333 240.8533333333333 347.9466666666667 285.2266666666667 358.8266666666667C384 384 448 320 422.8266666666667 221.2266666666667C411.9466666666666 176.8533333333334 386.7733333333333 131.6266666666667 352 96C316.3733333333334 61.2266666666667 271.1466666666667 36.0533333333334 226.7733333333333 25.1733333333333C128 0 64 64 89.1733333333333 162.7733333333334C100.0533333333333 207.1466666666667 125.2266666666667 252.3733333333334 160 288M226.56 207.7866666666667L218.88 200.1066666666668L264.1066666666667 154.8800000000001L271.7866666666667 162.5600000000001L226.56 207.7866666666667M247.8933333333334 229.1200000000001L240.2133333333334 221.4400000000001L285.4400000000001 176.2133333333334L293.12 183.8933333333334L247.8933333333334 229.1200000000001M205.2266666666667 186.4533333333334L197.5466666666667 178.7733333333334L242.7733333333334 133.5466666666668L250.4533333333334 141.2266666666667L205.2266666666667 186.4533333333334M269.44 250.0266666666668L261.9733333333334 242.5600000000001L307.2000000000001 197.3333333333334L314.6666666666667 204.8000000000001L269.4400000000001 250.0266666666668M184.1066666666667 164.6933333333334L176.6400000000001 157.2266666666668L221.8666666666667 112.0000000000001L229.3333333333334 119.4666666666668L184.1066666666667 164.6933333333334M290.7733333333334 271.3600000000001L283.3066666666668 263.8933333333335L328.5333333333334 218.6666666666668L336 226.1333333333334L290.7733333333334 271.3600000000001z" /> + <glyph glyph-name="football-helmet" + unicode="&#xF25F;" + horiz-adv-x="512" d=" M288 192C270.2933333333333 192 256 177.7066666666667 256 160S270.2933333333333 128 288 128S320 142.2933333333334 320 160S305.7066666666667 192 288 192M288 384C388.0533333333334 384 469.3333333333333 307.6266666666667 469.3333333333333 213.3333333333334C469.3333333333333 178.7733333333333 469.3333333333333 149.3333333333334 449.92 106.6666666666667C362.6666666666667 106.6666666666667 341.3333333333333 21.3333333333334 266.6666666666667 21.3333333333334C220.16 21.3333333333334 197.76 58.0266666666666 193.0666666666667 106.6666666666667H175.7866666666667L148.48 14.9333333333333C145.28 4.48 135.04 -1.7066666666667 124.5866666666667 0H64C52.2666666666667 0 42.6666666666667 9.6 42.6666666666667 21.3333333333334S52.2666666666667 42.6666666666667 64 42.6666666666667V106.6666666666667C52.2666666666667 106.6666666666667 42.6666666666667 116.2666666666667 42.6666666666667 128S52.2666666666667 149.3333333333334 64 149.3333333333334H144L154.24 183.68C143.36 189.0133333333333 130.7733333333334 192 117.3333333333333 192H108.16L106.6666666666667 213.3333333333334C106.6666666666667 307.6266666666667 187.9466666666667 384 288 384M106.6666666666667 106.6666666666667V42.6666666666667H112.2133333333333L131.2 106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="format-align-center" + unicode="&#xF260;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M149.3333333333333 298.6666666666667H362.6666666666667V256H149.3333333333333V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M149.3333333333333 128H362.6666666666667V85.3333333333334H149.3333333333333V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-justify" + unicode="&#xF261;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M64 298.6666666666667H448V256H64V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 128H448V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-left" + unicode="&#xF262;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M64 298.6666666666667H320V256H64V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 128H320V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-right" + unicode="&#xF263;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M192 298.6666666666667H448V256H192V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M192 128H448V85.3333333333334H192V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-annotation-plus" + unicode="&#xF646;" + horiz-adv-x="512" d=" M181.3333333333333 298.6666666666667H224L341.3333333333333 0H290.1333333333334L266.6666666666667 64H134.4L110.9333333333333 0H64L181.3333333333333 298.6666666666667M151.4666666666667 106.6666666666667H253.8666666666666L202.6666666666667 241.0666666666667L151.4666666666667 106.6666666666667M469.3333333333333 341.3333333333334V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334H469.3333333333333z" /> + <glyph glyph-name="format-bold" + unicode="&#xF264;" + horiz-adv-x="512" d=" M288 117.3333333333334H213.3333333333333V181.3333333333334H288C305.7066666666667 181.3333333333334 320 167.04 320 149.3333333333334S305.7066666666667 117.3333333333334 288 117.3333333333334M213.3333333333333 309.3333333333334H277.3333333333333C295.04 309.3333333333334 309.3333333333333 295.04 309.3333333333333 277.3333333333334S295.04 245.3333333333334 277.3333333333333 245.3333333333334H213.3333333333333M332.8 217.8133333333334C353.4933333333334 232.32 368 256 368 277.3333333333334C368 325.5466666666667 330.6666666666667 362.6666666666667 282.6666666666667 362.6666666666667H149.3333333333333V64H299.52C344.32 64 378.6666666666667 100.2666666666667 378.6666666666667 144.8533333333334C378.6666666666667 177.28 360.32 205.0133333333333 332.8 217.8133333333333z" /> + <glyph glyph-name="format-clear" + unicode="&#xF265;" + horiz-adv-x="512" d=" M128 341.3333333333334V337.4933333333334L188.16 277.3333333333334H239.36L224 241.4933333333334L268.8 196.6933333333334L303.1466666666667 277.3333333333334H426.6666666666667V341.3333333333334H128M69.76 341.3333333333334L42.6666666666667 314.24L191.36 165.5466666666668L138.6666666666667 42.6666666666667H202.6666666666667L236.16 120.7466666666667L356.9066666666667 0L384 27.0933333333334L75.7333333333333 335.5733333333334L69.76 341.3333333333334z" /> + <glyph glyph-name="format-color-fill" + unicode="&#xF266;" + horiz-adv-x="512" d=" M405.3333333333333 202.6666666666667S362.6666666666667 156.3733333333333 362.6666666666667 128C362.6666666666667 104.5333333333333 381.8666666666666 85.3333333333334 405.3333333333333 85.3333333333334S448 104.5333333333333 448 128C448 156.3733333333333 405.3333333333333 202.6666666666667 405.3333333333333 202.6666666666667M111.1466666666667 234.6666666666667L213.3333333333333 336.8533333333334L315.52 234.6666666666667M353.28 257.2800000000001L162.56 448L132.48 417.92L183.2533333333333 367.1466666666667L73.3866666666667 257.28C60.8 245.3333333333333 60.8 224.64 73.3866666666667 212.0533333333333L190.72 94.72C196.9066666666667 88.5333333333333 205.2266666666666 85.3333333333333 213.3333333333333 85.3333333333333S229.76 88.5333333333333 235.9466666666667 94.72L353.2800000000001 212.0533333333333C365.8666666666667 224.64 365.8666666666667 245.3333333333333 353.2800000000001 257.28z" /> + <glyph glyph-name="format-float-center" + unicode="&#xF267;" + horiz-adv-x="512" d=" M192 298.6666666666667H320V170.6666666666667H192V298.6666666666667M64 384H448V341.3333333333334H64V384M64 128H448V85.3333333333334H64V128M64 42.6666666666667H362.6666666666667V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-left" + unicode="&#xF268;" + horiz-adv-x="512" d=" M64 298.6666666666667H192V170.6666666666667H64V298.6666666666667M64 384H448V341.3333333333334H64V384M448 298.6666666666667V256H234.6666666666667V298.6666666666667H448M448 213.3333333333334V170.6666666666667H234.6666666666667V213.3333333333334H448M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-none" + unicode="&#xF269;" + horiz-adv-x="512" d=" M64 298.6666666666667H192V170.6666666666667H64V298.6666666666667M64 384H448V341.3333333333334H64V384M448 213.3333333333334V170.6666666666667H234.6666666666667V213.3333333333334H448M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-right" + unicode="&#xF26A;" + horiz-adv-x="512" d=" M320 298.6666666666667H448V170.6666666666667H320V298.6666666666667M64 384H448V341.3333333333334H64V384M277.3333333333333 298.6666666666667V256H64V298.6666666666667H277.3333333333333M192 213.3333333333334V170.6666666666667H64V213.3333333333334H192M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-header-1" + unicode="&#xF26B;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M298.6666666666667 64V106.6666666666667H341.3333333333333V313.3866666666667L288 282.6666666666667V331.9466666666667L341.3333333333333 362.6666666666667H384V106.6666666666667H426.6666666666667V64H298.6666666666667z" /> + <glyph glyph-name="format-header-2" + unicode="&#xF26C;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M448 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667C277.3333333333333 117.9733333333334 281.6 128 288.8533333333333 135.68L392.7466666666667 247.2533333333334C400.64 254.9333333333334 405.3333333333333 265.6 405.3333333333333 277.3333333333334C405.3333333333333 300.8 386.1333333333334 320 362.6666666666667 320S320 300.8 320 277.3333333333334H277.3333333333333C277.3333333333333 324.48 315.52 362.6666666666667 362.6666666666667 362.6666666666667S448 324.48 448 277.3333333333334C448 253.8666666666667 438.4 232.5333333333334 423.04 216.96L320 106.6666666666667H448V64z" /> + <glyph glyph-name="format-header-3" + unicode="&#xF26D;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V128H320V106.6666666666667H405.3333333333333V192H320V234.6666666666667H405.3333333333333V320H320V298.6666666666667H277.3333333333333V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667z" /> + <glyph glyph-name="format-header-4" + unicode="&#xF26E;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M384 64V170.6666666666667H277.3333333333333V213.3333333333334L384 362.6666666666667H426.6666666666667V213.3333333333334H448V170.6666666666667H426.6666666666667V64H384M384 213.3333333333334V289.7066666666667L329.6 213.3333333333334H384z" /> + <glyph glyph-name="format-header-5" + unicode="&#xF26F;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H426.6666666666667V320H320V234.6666666666667H362.6666666666667C409.8133333333334 234.6666666666667 448 196.48 448 149.3333333333334S409.8133333333334 64 362.6666666666667 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V128H320V106.6666666666667H362.6666666666667C386.1333333333334 106.6666666666667 405.3333333333333 125.8666666666667 405.3333333333333 149.3333333333334S386.1333333333334 192 362.6666666666667 192H320C296.5333333333333 192 277.3333333333333 211.2 277.3333333333333 234.6666666666667V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667z" /> + <glyph glyph-name="format-header-6" + unicode="&#xF270;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V298.6666666666667H405.3333333333333V320H320V234.6666666666667H405.3333333333333C428.8 234.6666666666667 448 215.4666666666667 448 192V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667M320 192V106.6666666666667H405.3333333333333V192H320z" /> + <glyph glyph-name="format-header-decrease" + unicode="&#xF271;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M435.6266666666667 289.92L359.04 213.3333333333334L435.6266666666666 136.7466666666667L405.3333333333333 106.6666666666667L298.6666666666667 213.3333333333334L405.3333333333333 320L435.6266666666667 289.92z" /> + <glyph glyph-name="format-header-equal" + unicode="&#xF272;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M298.6666666666667 234.6666666666667V277.3333333333334H448V234.6666666666667H298.6666666666667M298.6666666666667 192H448V149.3333333333334H298.6666666666667V192z" /> + <glyph glyph-name="format-header-increase" + unicode="&#xF273;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M311.2533333333334 289.92L387.6266666666667 213.3333333333334L311.2533333333334 136.7466666666667L341.3333333333333 106.6666666666667L448 213.3333333333334L341.3333333333333 320L311.2533333333334 289.92z" /> + <glyph glyph-name="format-header-pound" + unicode="&#xF274;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M277.3333333333333 277.3333333333334H326.6133333333334L333.44 341.3333333333334H376.1066666666667L369.2800000000001 277.3333333333334H411.9466666666667L418.7733333333334 341.3333333333334H461.4400000000001L454.6133333333333 277.3333333333334H490.6666666666666V234.6666666666667H450.1333333333334L445.8666666666667 192H490.6666666666666V149.3333333333334H441.3866666666667L434.56 85.3333333333334H391.8933333333333L398.7200000000001 149.3333333333334H356.0533333333334L349.2266666666667 85.3333333333334H306.56L313.3866666666667 149.3333333333334H277.3333333333333V192H317.8666666666667L322.1333333333334 234.6666666666667H277.3333333333333V277.3333333333334M364.8 234.6666666666667L360.5333333333334 192H403.2000000000001L407.4666666666667 234.6666666666667H364.8z" /> + <glyph glyph-name="format-horizontal-align-center" + unicode="&#xF61E;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667V170.6666666666667H490.6666666666666V213.3333333333334H405.3333333333333V277.3333333333334L320 192L405.3333333333333 106.6666666666667M106.6666666666667 277.3333333333334V213.3333333333334H21.3333333333333V170.6666666666667H106.6666666666667V106.6666666666667L192 192L106.6666666666667 277.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V362.6666666666667H234.6666666666667V21.3333333333334z" /> + <glyph glyph-name="format-horizontal-align-left" + unicode="&#xF61F;" + horiz-adv-x="512" d=" M234.6666666666667 106.6666666666667V170.6666666666667H448V213.3333333333334H234.6666666666667V277.3333333333334L149.3333333333333 192L234.6666666666667 106.6666666666667M64 21.3333333333334H106.6666666666667V362.6666666666667H64V21.3333333333334z" /> + <glyph glyph-name="format-horizontal-align-right" + unicode="&#xF620;" + horiz-adv-x="512" d=" M277.3333333333333 277.3333333333334V213.3333333333334H64V170.6666666666667H277.3333333333333V106.6666666666667L362.6666666666667 192L277.3333333333333 277.3333333333334M405.3333333333333 21.3333333333334H448V362.6666666666667H405.3333333333333V21.3333333333334z" /> + <glyph glyph-name="format-indent-decrease" + unicode="&#xF275;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H448V213.3333333333334H234.6666666666667M234.6666666666667 256H448V298.6666666666667H234.6666666666667M64 384V341.3333333333334H448V384M64 0H448V42.6666666666667H64M64 192L149.3333333333333 106.6666666666667V277.3333333333334M234.6666666666667 85.3333333333334H448V128H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="format-indent-increase" + unicode="&#xF276;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H448V213.3333333333334H234.6666666666667M234.6666666666667 256H448V298.6666666666667H234.6666666666667M64 384V341.3333333333334H448V384M234.6666666666667 85.3333333333334H448V128H234.6666666666667M64 277.3333333333334V106.6666666666667L149.3333333333333 192M64 0H448V42.6666666666667H64V0z" /> + <glyph glyph-name="format-italic" + unicode="&#xF277;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V298.6666666666667H260.48L187.52 128H128V64H298.6666666666667V128H251.52L324.48 298.6666666666667H384V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="format-line-spacing" + unicode="&#xF278;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667H469.3333333333333V213.3333333333334H213.3333333333333M213.3333333333333 42.6666666666667H469.3333333333333V85.3333333333334H213.3333333333333M213.3333333333333 298.6666666666667H469.3333333333333V341.3333333333334H213.3333333333333M128 298.6666666666667H181.3333333333333L106.6666666666667 373.3333333333334L32 298.6666666666667H85.3333333333333V85.3333333333334H32L106.6666666666667 10.6666666666667L181.3333333333333 85.3333333333334H128V298.6666666666667z" /> + <glyph glyph-name="format-line-style" + unicode="&#xF5C8;" + horiz-adv-x="512" d=" M64 106.6666666666667H170.6666666666667V149.3333333333334H64V106.6666666666667M202.6666666666667 106.6666666666667H309.3333333333333V149.3333333333334H202.6666666666667V106.6666666666667M341.3333333333333 106.6666666666667H448V149.3333333333334H341.3333333333333V106.6666666666667M64 21.3333333333334H106.6666666666667V64H64V21.3333333333334M149.3333333333333 21.3333333333334H192V64H149.3333333333333V21.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V64H234.6666666666667V21.3333333333334M320 21.3333333333334H362.6666666666667V64H320V21.3333333333334M405.3333333333333 21.3333333333334H448V64H405.3333333333333V21.3333333333334M64 192H234.6666666666667V234.6666666666667H64V192M277.3333333333333 192H448V234.6666666666667H277.3333333333333V192M64 362.6666666666667V277.3333333333334H448V362.6666666666667H64z" /> + <glyph glyph-name="format-line-weight" + unicode="&#xF5C9;" + horiz-adv-x="512" d=" M64 85.3333333333334H448V128H64V85.3333333333334M64 21.3333333333334H448V42.6666666666667H64V21.3333333333334M64 170.6666666666667H448V234.6666666666667H64V170.6666666666667M64 362.6666666666667V277.3333333333334H448V362.6666666666667H64z" /> + <glyph glyph-name="format-list-bulleted" + unicode="&#xF279;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H448V298.6666666666667H149.3333333333333V341.3333333333334M149.3333333333333 170.6666666666667V213.3333333333334H448V170.6666666666667H149.3333333333333M85.3333333333333 352C103.04 352 117.3333333333333 337.7066666666667 117.3333333333333 320S103.04 288 85.3333333333333 288S53.3333333333333 302.2933333333334 53.3333333333333 320S67.6266666666667 352 85.3333333333333 352M85.3333333333333 224C103.04 224 117.3333333333333 209.7066666666667 117.3333333333333 192S103.04 160 85.3333333333333 160S53.3333333333333 174.2933333333334 53.3333333333333 192S67.6266666666667 224 85.3333333333333 224M149.3333333333333 42.6666666666667V85.3333333333334H448V42.6666666666667H149.3333333333333M85.3333333333333 96C103.04 96 117.3333333333333 81.7066666666667 117.3333333333333 64S103.04 32 85.3333333333333 32S53.3333333333333 46.2933333333334 53.3333333333333 64S67.6266666666667 96 85.3333333333333 96z" /> + <glyph glyph-name="format-list-bulleted-type" + unicode="&#xF27A;" + horiz-adv-x="512" d=" M106.6666666666667 245.3333333333334L160 149.3333333333334H53.3333333333333L106.6666666666667 245.3333333333334M64 362.6666666666667H149.3333333333333V277.3333333333334H64V362.6666666666667M106.6666666666667 21.3333333333334C130.1333333333333 21.3333333333334 149.3333333333333 40.5333333333333 149.3333333333333 64S130.1333333333333 106.6666666666667 106.6666666666667 106.6666666666667S64 87.4666666666667 64 64S83.2 21.3333333333334 106.6666666666667 21.3333333333334M192 341.3333333333334V298.6666666666667H448V341.3333333333334H192M192 42.6666666666667H448V85.3333333333334H192V42.6666666666667M192 170.6666666666667H448V213.3333333333334H192V170.6666666666667z" /> + <glyph glyph-name="format-list-numbers" + unicode="&#xF27B;" + horiz-adv-x="512" d=" M149.3333333333333 170.6666666666667H448V213.3333333333334H149.3333333333333M149.3333333333333 42.6666666666667H448V85.3333333333334H149.3333333333333M149.3333333333333 298.6666666666667H448V341.3333333333334H149.3333333333333M42.6666666666667 213.3333333333334H81.0666666666667L42.6666666666667 168.5333333333334V149.3333333333334H106.6666666666667V170.6666666666667H68.2666666666667L106.6666666666667 215.4666666666667V234.6666666666667H42.6666666666667M64 277.3333333333334H85.3333333333333V362.6666666666667H42.6666666666667V341.3333333333334H64M42.6666666666667 85.3333333333334H85.3333333333333V74.6666666666667H64V53.3333333333334H85.3333333333333V42.6666666666667H42.6666666666667V21.3333333333334H106.6666666666667V106.6666666666667H42.6666666666667V85.3333333333334z" /> + <glyph glyph-name="format-paint" + unicode="&#xF27C;" + horiz-adv-x="512" d=" M384 362.6666666666667V384C384 395.7333333333334 374.4 405.3333333333333 362.6666666666667 405.3333333333333H106.6666666666667C94.9333333333333 405.3333333333333 85.3333333333333 395.7333333333334 85.3333333333333 384V298.6666666666667C85.3333333333333 286.9333333333334 94.9333333333333 277.3333333333334 106.6666666666667 277.3333333333334H362.6666666666667C374.4 277.3333333333334 384 286.9333333333334 384 298.6666666666667V320H405.3333333333333V234.6666666666667H192V0C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H256C267.7333333333334 -21.3333333333333 277.3333333333333 -11.7333333333333 277.3333333333333 0V192H448V362.6666666666667H384z" /> + <glyph glyph-name="format-paragraph" + unicode="&#xF27D;" + horiz-adv-x="512" d=" M277.3333333333333 362.6666666666667C324.48 362.6666666666667 362.6666666666667 324.48 362.6666666666667 277.3333333333334S324.48 192 277.3333333333333 192H234.6666666666667V64H192V362.6666666666667H277.3333333333333M277.3333333333333 234.6666666666667C300.8 234.6666666666667 320 253.8666666666667 320 277.3333333333334S300.8 320 277.3333333333333 320H234.6666666666667V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="format-quote" + unicode="&#xF27E;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H362.6666666666667L405.3333333333333 170.6666666666667V298.6666666666667H277.3333333333333V170.6666666666667H341.3333333333333M128 85.3333333333334H192L234.6666666666667 170.6666666666667V298.6666666666667H106.6666666666667V170.6666666666667H170.6666666666667L128 85.3333333333334z" /> + <glyph glyph-name="format-size" + unicode="&#xF27F;" + horiz-adv-x="512" d=" M64 192H128V42.6666666666667H192V192H256V256H64M192 362.6666666666667V298.6666666666667H298.6666666666667V42.6666666666667H362.6666666666667V298.6666666666667H469.3333333333333V362.6666666666667H192z" /> + <glyph glyph-name="format-strikethrough" + unicode="&#xF280;" + horiz-adv-x="512" d=" M64 149.3333333333334H448V192H64M106.6666666666667 362.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667H298.6666666666667V298.6666666666667H405.3333333333333V362.6666666666667M213.3333333333333 42.6666666666667H298.6666666666667V106.6666666666667H213.3333333333333V42.6666666666667z" /> + <glyph glyph-name="format-strikethrough-variant" + unicode="&#xF281;" + horiz-adv-x="512" d=" M490.6666666666666 192V149.3333333333334H397.0133333333333C418.3466666666667 103.68 417.28 -21.3333333333333 264.1066666666667 -21.3333333333333C86.4 -22.4 93.2266666666667 117.3333333333334 93.2266666666667 117.3333333333334L177.92 116.2666666666667C178.56 44.3733333333333 245.3333333333333 44.3733333333333 258.56 45.2266666666666C272.2133333333333 46.2933333333333 323.2 46.0799999999999 327.2533333333334 95.9999999999999C328.96 119.2533333333333 305.4933333333334 136.9599999999999 279.8933333333333 149.3333333333333H21.3333333333333V192H490.6666666666666M414.08 279.68L329.1733333333333 280.32S332.8 339.4133333333333 259.2 339.6266666666666C185.6 340.0533333333334 192 292.6933333333334 192 286.7200000000001C192.8533333333333 280.7466666666667 199.2533333333333 251.3066666666667 256 237.2266666666667H121.8133333333333S47.36 380.8 229.12 405.3333333333333C414.9333333333334 430.9333333333334 414.5066666666667 279.2533333333334 414.08 279.68z" /> + <glyph glyph-name="format-subscript" + unicode="&#xF282;" + horiz-adv-x="512" d=" M341.3333333333333 289.92L243.4133333333334 192L341.3333333333333 94.08L311.2533333333334 64L213.3333333333333 161.92L115.4133333333333 64L85.3333333333333 94.08L183.2533333333333 192L85.3333333333333 289.92L115.4133333333333 320L213.3333333333333 222.08L311.2533333333334 320L341.3333333333333 289.92M466.1333333333333 -0.64H362.0266666666667V20.6933333333333L381.0133333333334 37.76C397.2266666666668 51.6266666666667 409.1733333333334 63.1466666666667 417.2800000000001 72.5333333333333C425.1733333333334 81.92 429.2266666666667 90.6666666666667 429.4400000000001 98.9866666666666C429.6533333333334 104.96 427.7333333333334 109.8666666666666 423.6800000000001 113.92C419.8400000000001 117.3333333333333 413.6533333333334 119.8933333333333 405.3333333333334 119.8933333333333C398.7200000000001 119.8933333333333 392.9600000000001 118.6133333333332 387.4133333333334 116.0533333333333L373.3333333333334 107.9466666666666L363.7333333333334 132.9066666666666C369.4933333333334 137.3866666666666 376.3200000000001 141.2266666666666 384.6400000000001 144.2133333333333S402.1333333333335 149.3333333333333 412.1600000000001 149.3333333333333C428.8000000000001 148.4799999999999 441.6 143.9999999999999 450.1333333333335 135.2533333333332C458.6666666666667 126.5066666666666 463.3600000000001 115.4133333333333 463.3600000000001 101.7599999999999C463.1466666666668 89.8133333333333 459.3066666666667 78.72 451.8400000000001 68.6933333333333C444.5866666666668 58.6666666666666 435.6266666666668 49.0666666666666 424.7466666666668 39.68L411.0933333333335 28.5866666666666V28.16H466.1333333333335V-0.6400000000001z" /> + <glyph glyph-name="format-superscript" + unicode="&#xF283;" + horiz-adv-x="512" d=" M341.3333333333333 289.92L243.4133333333334 192L341.3333333333333 94.08L311.2533333333334 64L213.3333333333333 161.92L115.4133333333333 64L85.3333333333333 94.08L183.2533333333333 192L85.3333333333333 289.92L115.4133333333333 320L213.3333333333333 222.08L311.2533333333334 320L341.3333333333333 289.92M466.1333333333333 256H362.0266666666667V277.3333333333334L381.0133333333334 294.8266666666667C397.2266666666668 308.48 409.1733333333334 320 417.2800000000001 329.6C425.1733333333334 338.9866666666667 429.2266666666667 347.7333333333334 429.4400000000001 355.8400000000001C429.6533333333334 361.8133333333334 427.7333333333334 366.9333333333334 423.6800000000001 370.7733333333333C419.8400000000001 374.8266666666667 413.6533333333334 376.7466666666667 405.3333333333334 376.9600000000001C398.7200000000001 376.7466666666667 392.9600000000001 375.4666666666667 387.4133333333334 373.3333333333334L373.3333333333334 365.0133333333333L363.7333333333334 389.9733333333334C369.4933333333334 394.6666666666667 376.3200000000001 398.2933333333334 384.6400000000001 401.28S402.1333333333334 405.3333333333333 412.16 405.3333333333333C428.8 405.3333333333333 441.6 401.0666666666667 450.1333333333334 392.32C458.6666666666666 384 463.36 372.48 463.36 358.8266666666667C463.1466666666666 346.88 459.3066666666667 335.7866666666667 451.84 325.76C444.5866666666667 315.5200000000001 435.6266666666667 305.92 424.7466666666668 296.7466666666667L411.0933333333334 285.6533333333334V285.2266666666667H466.1333333333333V256z" /> + <glyph glyph-name="format-text" + unicode="&#xF284;" + horiz-adv-x="512" d=" M394.6666666666667 362.6666666666667L419.4133333333333 269.8666666666667L398.9333333333333 264.3200000000001C389.3333333333333 282.88 379.52 301.4400000000001 368.2133333333333 310.8266666666667C356.9066666666667 320 343.68 320 330.6666666666667 320H277.3333333333333V96C277.3333333333333 85.3333333333334 277.3333333333333 74.6666666666667 284.3733333333334 69.3333333333334C291.6266666666667 64 305.7066666666667 64 320 64V42.6666666666667H192V64C206.2933333333333 64 220.3733333333333 64 227.6266666666667 69.3333333333334C234.6666666666667 74.6666666666667 234.6666666666667 85.3333333333334 234.6666666666667 96V320H181.3333333333333C168.32 320 155.0933333333333 320 143.7866666666667 310.8266666666667C132.48 301.44 122.6666666666667 282.88 113.0666666666667 264.3200000000001L92.5866666666667 269.8666666666667L117.3333333333333 362.6666666666667H394.6666666666667z" /> + <glyph glyph-name="format-textdirection-l-to-r" + unicode="&#xF285;" + horiz-adv-x="512" d=" M448 64L362.6666666666667 149.3333333333334V85.3333333333334H106.6666666666667V42.6666666666667H362.6666666666667V-21.3333333333333M192 234.6666666666667V128H234.6666666666667V362.6666666666667H277.3333333333333V128H320V362.6666666666667H362.6666666666667V405.3333333333333H192C144.8533333333333 405.3333333333333 106.6666666666667 367.1466666666667 106.6666666666667 320S144.8533333333333 234.6666666666667 192 234.6666666666667z" /> + <glyph glyph-name="format-textdirection-r-to-l" + unicode="&#xF286;" + horiz-adv-x="512" d=" M170.6666666666667 85.3333333333334V149.3333333333334L85.3333333333333 64L170.6666666666667 -21.3333333333333V42.6666666666667H426.6666666666667V85.3333333333334M213.3333333333333 234.6666666666667V128H256V362.6666666666667H298.6666666666667V128H341.3333333333333V362.6666666666667H384V405.3333333333333H213.3333333333333C166.1866666666667 405.3333333333333 128 367.1466666666667 128 320S166.1866666666667 234.6666666666667 213.3333333333333 234.6666666666667z" /> + <glyph glyph-name="format-title" + unicode="&#xF5F4;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667V298.6666666666667H224V42.6666666666667H288V298.6666666666667H405.3333333333333V362.6666666666667H106.6666666666667z" /> + <glyph glyph-name="format-underline" + unicode="&#xF287;" + horiz-adv-x="512" d=" M106.6666666666667 0H405.3333333333333V42.6666666666667H106.6666666666667V0M256 85.3333333333334C326.6133333333334 85.3333333333334 384 142.72 384 213.3333333333334V384H330.6666666666667V213.3333333333334C330.6666666666667 172.16 297.1733333333333 138.6666666666667 256 138.6666666666667S181.3333333333333 172.16 181.3333333333333 213.3333333333334V384H128V213.3333333333334C128 142.72 185.3866666666667 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="format-vertical-align-bottom" + unicode="&#xF621;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667H277.3333333333333V384H234.6666666666667V170.6666666666667H170.6666666666667L256 85.3333333333334L341.3333333333333 170.6666666666667M85.3333333333333 42.6666666666667V0H426.6666666666667V42.6666666666667H85.3333333333333z" /> + <glyph glyph-name="format-vertical-align-center" + unicode="&#xF622;" + horiz-adv-x="512" d=" M170.6666666666667 42.6666666666667H234.6666666666667V-42.6666666666666H277.3333333333333V42.6666666666667H341.3333333333333L256 128L170.6666666666667 42.6666666666667M341.3333333333333 341.3333333333334H277.3333333333333V426.6666666666667H234.6666666666667V341.3333333333334H170.6666666666667L256 256L341.3333333333333 341.3333333333334M85.3333333333333 213.3333333333334V170.6666666666667H426.6666666666667V213.3333333333334H85.3333333333333z" /> + <glyph glyph-name="format-vertical-align-top" + unicode="&#xF623;" + horiz-adv-x="512" d=" M170.6666666666667 213.3333333333334H234.6666666666667V0H277.3333333333333V213.3333333333334H341.3333333333333L256 298.6666666666667L170.6666666666667 213.3333333333334M85.3333333333333 384V341.3333333333334H426.6666666666667V384H85.3333333333333z" /> + <glyph glyph-name="format-wrap-inline" + unicode="&#xF288;" + horiz-adv-x="512" d=" M170.6666666666667 298.6666666666667L277.3333333333333 85.3333333333334H64L170.6666666666667 298.6666666666667M64 384H448V341.3333333333334H64V384M448 128V85.3333333333334H298.6666666666667V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-square" + unicode="&#xF289;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 298.6666666666667H128V256H64V298.6666666666667M448 298.6666666666667V256H384V298.6666666666667H448M64 213.3333333333334H128V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H384V213.3333333333334H448M64 128H128V85.3333333333334H64V128M448 128V85.3333333333334H384V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-tight" + unicode="&#xF28A;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 298.6666666666667H192V256H64V298.6666666666667M448 298.6666666666667V256H320V298.6666666666667H448M64 213.3333333333334H149.3333333333333V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H362.6666666666667V213.3333333333334H448M64 128H128V85.3333333333334H64V128M448 128V85.3333333333334H384V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-top-bottom" + unicode="&#xF28B;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="forum" + unicode="&#xF28C;" + horiz-adv-x="512" d=" M362.6666666666667 192V384C362.6666666666667 395.7333333333334 353.0666666666667 405.3333333333333 341.3333333333333 405.3333333333333H64C52.2666666666667 405.3333333333333 42.6666666666667 395.7333333333334 42.6666666666667 384V85.3333333333334L128 170.6666666666667H341.3333333333333C353.0666666666667 170.6666666666667 362.6666666666667 180.2666666666667 362.6666666666667 192M448 320H405.3333333333333V128H128V85.3333333333334C128 73.6 137.6 64 149.3333333333333 64H384L469.3333333333333 -21.3333333333333V298.6666666666667C469.3333333333333 310.4 459.7333333333333 320 448 320z" /> + <glyph glyph-name="forward" + unicode="&#xF28D;" + horiz-adv-x="512" d=" M256 277.3333333333334V362.6666666666667L426.6666666666667 192L256 21.3333333333334V106.6666666666667H85.3333333333333V277.3333333333334H256z" /> + <glyph glyph-name="foursquare" + unicode="&#xF28E;" + horiz-adv-x="512" d=" M362.6666666666667 341.3333333333334L353.4933333333334 288C352 283.0933333333334 345.6 277.3333333333334 339.4133333333333 277.3333333333334H256C245.9733333333333 277.3333333333334 233.6 270.5066666666667 233.6 260.48V251.7333333333334C233.6 241.7066666666667 245.9733333333333 234.6666666666667 256 234.6666666666667H325.9733333333333C333.0133333333333 234.6666666666667 339.84 226.9866666666667 338.3466666666667 219.52C336.8533333333333 211.84 318.72 164.6933333333333 317.8666666666666 160C317.0133333333333 156.3733333333333 312.32 149.3333333333334 304 149.3333333333334H242.56C231.4666666666666 149.3333333333334 228.0533333333333 147.84 220.5866666666666 138.6666666666667C213.3333333333333 129.28 155.0933333333333 61.8666666666667 155.0933333333333 61.8666666666667C154.4533333333333 61.2266666666666 149.3333333333333 63.1466666666667 149.3333333333333 64V341.3333333333334C149.3333333333333 347.7333333333334 162.3466666666666 362.6666666666667 170.6666666666666 362.6666666666667H352C358.8266666666667 362.6666666666667 364.3733333333333 349.6533333333333 362.6666666666667 341.3333333333334M362.6666666666667 139.7333333333334C365.0133333333333 149.9733333333334 400.64 304.6400000000001 410.0266666666667 350.9333333333334M375.04 405.3333333333333H147.4133333333333C115.84 405.3333333333333 106.6666666666667 381.6533333333333 106.6666666666667 366.9333333333334V5.12C106.6666666666667 -11.52 115.6266666666667 -17.9200000000001 120.7466666666667 -19.84C125.8666666666667 -21.9733333333334 139.7333333333333 -23.6799999999999 148.0533333333334 -14.08C148.0533333333334 -14.08 248.5333333333334 101.9733333333334 250.4533333333333 103.8933333333334C253.2266666666667 106.6666666666667 253.2266666666667 106.6666666666667 256 106.6666666666667H325.5466666666666C354.7733333333333 106.6666666666667 359.4666666666667 128.0000000000001 362.6666666666667 139.7333333333334C365.0133333333333 149.9733333333334 400.64 304.6400000000001 410.0266666666667 350.9333333333334C417.28 386.3466666666668 408.32 405.3333333333334 375.04 405.3333333333334z" /> + <glyph glyph-name="fridge" + unicode="&#xF28F;" + horiz-adv-x="512" d=" M192 0V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192M149.3333333333333 362.6666666666667V256H362.6666666666667V362.6666666666667H149.3333333333333M149.3333333333333 42.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333V42.6666666666667M170.6666666666667 192H213.3333333333333V128H170.6666666666667V192M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667V320z" /> + <glyph glyph-name="fridge-filled" + unicode="&#xF290;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V256H106.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V234.6666666666667H405.3333333333333V42.6666666666667M170.6666666666667 341.3333333333334V298.6666666666667H213.3333333333333V341.3333333333334H170.6666666666667M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fridge-filled-bottom" + unicode="&#xF291;" + horiz-adv-x="512" d=" M170.6666666666667 277.3333333333334V320H213.3333333333333V277.3333333333334H170.6666666666667M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667V256H362.6666666666667V362.6666666666667H149.3333333333333M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fridge-filled-top" + unicode="&#xF292;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333C125.8666666666667 405.3333333333333 106.6666666666667 386.1333333333334 106.6666666666667 362.6666666666667V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0V-21.3333333333333H192V0H320V-21.3333333333333H362.6666666666667V0C386.1333333333334 0 405.3333333333333 19.2 405.3333333333333 42.6666666666667V362.6666666666667C405.3333333333333 386.1333333333334 386.1333333333334 405.3333333333333 362.6666666666667 405.3333333333333H149.3333333333333M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667V320M149.3333333333333 213.3333333333334H362.6666666666667V42.6666666666667H149.3333333333333V213.3333333333334M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fullscreen" + unicode="&#xF293;" + horiz-adv-x="512" d=" M106.6666666666667 341.3333333333334H213.3333333333333V298.6666666666667H149.3333333333333V234.6666666666667H106.6666666666667V341.3333333333334M298.6666666666667 341.3333333333334H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334M362.6666666666667 149.3333333333334H405.3333333333333V42.6666666666667H298.6666666666667V85.3333333333334H362.6666666666667V149.3333333333334M213.3333333333333 85.3333333333334V42.6666666666667H106.6666666666667V149.3333333333334H149.3333333333333V85.3333333333334H213.3333333333333z" /> + <glyph glyph-name="fullscreen-exit" + unicode="&#xF294;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H405.3333333333333V106.6666666666667H341.3333333333333V42.6666666666667H298.6666666666667V149.3333333333334M106.6666666666667 149.3333333333334H213.3333333333333V42.6666666666667H170.6666666666667V106.6666666666667H106.6666666666667V149.3333333333334M170.6666666666667 341.3333333333334H213.3333333333333V234.6666666666667H106.6666666666667V277.3333333333334H170.6666666666667V341.3333333333334M405.3333333333333 277.3333333333334V234.6666666666667H298.6666666666667V341.3333333333334H341.3333333333333V277.3333333333334H405.3333333333333z" /> + <glyph glyph-name="function" + unicode="&#xF295;" + horiz-adv-x="512" d=" M332.8 335.1466666666667C309.3333333333333 337.28 288.64 320 286.5066666666667 296.32L281.1733333333333 234.6666666666667H341.3333333333333V192H277.3333333333333L267.9466666666667 83.84C263.8933333333333 36.9066666666667 222.5066666666667 2.1333333333334 175.5733333333333 6.4C147.6266666666667 8.7466666666667 124.16 24.3200000000001 110.2933333333333 46.2933333333334L142.2933333333333 78.2933333333334C147.4133333333333 62.5066666666668 161.4933333333334 50.3466666666668 179.2 48.8533333333334C202.6666666666667 46.72 223.36 64.0000000000001 225.4933333333334 87.6800000000001L234.6666666666667 192H170.6666666666667V234.6666666666667H238.2933333333333L244.0533333333333 300.1600000000001C248.1066666666667 347.0933333333334 289.4933333333334 381.8666666666667 336.4266666666666 377.6C364.3733333333333 375.2533333333334 387.84 359.68 401.7066666666666 337.7066666666667L369.7066666666666 305.7066666666667C364.5866666666667 321.4933333333334 350.5066666666667 333.6533333333334 332.8 335.1466666666667z" /> + <glyph glyph-name="gamepad" + unicode="&#xF296;" + horiz-adv-x="512" d=" M352 256L288 192L352 128H469.3333333333333V256M192 96V-21.3333333333333H320V96L256 160M160 256H42.6666666666667V128H160L224 192M320 288V405.3333333333333H192V288L256 224L320 288z" /> + <glyph glyph-name="gamepad-variant" + unicode="&#xF297;" + horiz-adv-x="512" d=" M149.3333333333333 320H362.6666666666667C433.28 320 490.6666666666666 262.6133333333334 490.6666666666666 192S433.28 64 362.6666666666667 64C324.6933333333334 64 290.7733333333333 80.4266666666667 267.3066666666667 106.6666666666667H244.6933333333334C221.2266666666667 80.4266666666667 187.3066666666667 64 149.3333333333334 64C78.72 64 21.3333333333334 121.3866666666667 21.3333333333334 192S78.72 320 149.3333333333334 320M128 256V213.3333333333334H85.3333333333333V170.6666666666667H128V128H170.6666666666667V170.6666666666667H213.3333333333333V213.3333333333334H170.6666666666667V256H128M330.6666666666667 192C312.96 192 298.6666666666667 177.7066666666667 298.6666666666667 160S312.96 128 330.6666666666667 128S362.6666666666667 142.2933333333334 362.6666666666667 160S348.3733333333333 192 330.6666666666667 192M394.6666666666667 256C376.9600000000001 256 362.6666666666667 241.7066666666667 362.6666666666667 224S376.9600000000001 192 394.6666666666667 192S426.6666666666667 206.2933333333334 426.6666666666667 224S412.3733333333333 256 394.6666666666667 256z" /> + <glyph glyph-name="gas-cylinder" + unicode="&#xF647;" + horiz-adv-x="512" d=" M341.3333333333333 256V21.3333333333334C341.3333333333333 -2.1333333333333 322.1333333333334 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C189.8666666666667 -21.3333333333333 170.6666666666667 -2.1333333333333 170.6666666666667 21.3333333333334V256C170.6666666666667 295.68 197.76 329.1733333333334 234.6666666666667 338.56V362.6666666666667H192V405.3333333333333H320V362.6666666666667H277.3333333333333V338.56C314.24 329.1733333333334 341.3333333333333 295.68 341.3333333333333 256z" /> + <glyph glyph-name="gas-station" + unicode="&#xF298;" + horiz-adv-x="512" d=" M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256S372.2666666666667 277.3333333333334 384 277.3333333333334S405.3333333333333 267.7333333333334 405.3333333333333 256S395.7333333333334 234.6666666666667 384 234.6666666666667M256 234.6666666666667H128V341.3333333333334H256M421.76 293.76L421.9733333333334 293.9733333333334L342.6133333333334 373.3333333333333L320 350.7200000000001L365.0133333333333 305.7066666666667C344.9600000000001 298.6666666666667 330.6666666666667 278.8266666666667 330.6666666666667 256C330.6666666666667 226.5600000000001 354.56 202.6666666666667 384 202.6666666666667C391.68 202.6666666666667 398.7200000000001 204.3733333333333 405.3333333333333 207.1466666666667V53.3333333333334C405.3333333333333 41.6 395.7333333333334 32 384 32S362.6666666666667 41.6 362.6666666666667 53.3333333333334V149.3333333333334C362.6666666666667 173.0133333333333 343.4666666666667 192 320 192H298.6666666666667V341.3333333333334C298.6666666666667 365.0133333333333 279.4666666666667 384 256 384H128C104.32 384 85.3333333333333 365.0133333333333 85.3333333333333 341.3333333333334V0H298.6666666666667V160H330.6666666666667V53.3333333333334C330.6666666666667 23.8933333333334 354.56 0 384 0S437.3333333333333 23.8933333333334 437.3333333333333 53.3333333333334V256C437.3333333333333 270.7200000000001 431.36 284.1600000000001 421.76 293.76z" /> + <glyph glyph-name="gate" + unicode="&#xF299;" + horiz-adv-x="512" d=" M192 341.3333333333334V234.6666666666667H149.3333333333333V320H106.6666666666667V234.6666666666667H64V277.3333333333334H21.3333333333333V21.3333333333334H64V64H106.6666666666667V21.3333333333334H149.3333333333333V64H192V21.3333333333334H234.6666666666667V64H277.3333333333333V21.3333333333334H320V64H362.6666666666667V21.3333333333334H405.3333333333333V64H448V21.3333333333334H490.6666666666666V277.3333333333334H448V234.6666666666667H405.3333333333333V320H362.6666666666667V234.6666666666667H320V341.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667V341.3333333333334H192M64 192H106.6666666666667V106.6666666666667H64V192M149.3333333333333 192H192V106.6666666666667H149.3333333333333V192M234.6666666666667 192H277.3333333333333V106.6666666666667H234.6666666666667V192M320 192H362.6666666666667V106.6666666666667H320V192M405.3333333333333 192H448V106.6666666666667H405.3333333333333V192z" /> + <glyph glyph-name="gauge" + unicode="&#xF29A;" + horiz-adv-x="512" d=" M369.0666666666667 64C405.3333333333333 96 426.6666666666667 140.8 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 140.8 106.6666666666667 96 142.9333333333333 64C174.9333333333333 91.7333333333334 213.3333333333333 106.6666666666667 256 106.6666666666667S339.2 91.7333333333334 369.0666666666667 64M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M149.3333333333333 256C161.0666666666667 256 170.6666666666667 246.4000000000001 170.6666666666667 234.6666666666667S161.0666666666667 213.3333333333334 149.3333333333333 213.3333333333334S128 222.9333333333333 128 234.6666666666667S137.6 256 149.3333333333333 256M213.3333333333333 320C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334S192 286.9333333333334 192 298.6666666666667S201.6 320 213.3333333333333 320M362.6666666666667 256C374.4 256 384 246.4000000000001 384 234.6666666666667S374.4 213.3333333333334 362.6666666666667 213.3333333333334S341.3333333333333 222.9333333333333 341.3333333333333 234.6666666666667S350.9333333333333 256 362.6666666666667 256M307.2 317.8666666666667C317.8666666666667 313.6 322.1333333333334 300.8 320 290.1333333333334L290.1333333333334 217.6C294.4 211.2 298.6666666666667 202.6666666666667 298.6666666666667 192.0000000000001C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192.0000000000001C213.3333333333333 213.3333333333334 228.2666666666667 232.5333333333334 249.6 234.6666666666667L279.4666666666667 305.0666666666667C283.7333333333333 317.8666666666667 296.5333333333333 322.1333333333334 307.2 317.8666666666667z" /> + <glyph glyph-name="gavel" + unicode="&#xF29B;" + horiz-adv-x="512" d=" M49.0666666666667 15.36L253.8666666666666 220.16L224 250.4533333333333L208.6399999999999 235.3066666666666C200.3199999999999 226.9866666666666 186.88 226.9866666666666 178.56 235.3066666666666L163.4133333333333 250.4533333333333C155.0933333333333 258.7733333333333 155.0933333333333 272.2133333333333 163.4133333333333 280.5333333333333L284.1599999999999 401.28C292.4799999999999 409.6 305.9199999999999 409.6 314.2399999999999 401.28L329.3866666666666 386.1333333333334C337.7066666666666 377.8133333333333 337.7066666666666 364.3733333333334 329.3866666666666 356.0533333333333L314.2399999999999 341.3333333333333L344.5333333333333 310.8266666666667C352.8533333333333 319.1466666666667 366.2933333333333 319.1466666666667 374.6133333333333 310.8266666666667C382.9333333333333 302.5066666666667 382.9333333333333 288.8533333333333 374.6133333333333 280.5333333333333L404.6933333333333 250.4533333333333L419.84 265.6C428.16 273.92 441.8133333333334 273.92 450.1333333333334 265.6L465.0666666666667 250.4533333333333C473.3866666666667 242.1333333333333 473.3866666666667 228.48 465.0666666666667 220.16L344.5333333333333 99.6266666666667C336.2133333333333 91.3066666666666 322.56 91.3066666666666 314.24 99.6266666666667L299.3066666666666 114.56C290.7733333333333 122.88 290.7733333333333 136.5333333333333 299.3066666666666 144.8533333333333L314.24 160L284.16 190.0799999999999L79.1466666666667 -14.9333333333334C70.8266666666666 -23.2533333333334 57.3866666666666 -23.2533333333334 49.0666666666666 -14.9333333333334C40.7466666666666 -6.6133333333333 40.7466666666666 7.04 49.0666666666666 15.36M426.6666666666667 42.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 23.4666666666667 469.3333333333333 0V-21.3333333333333H256V0C256 23.4666666666667 275.2 42.6666666666667 298.6666666666667 42.6666666666667H426.6666666666667z" /> + <glyph glyph-name="gender-female" + unicode="&#xF29C;" + horiz-adv-x="512" d=" M256 362.6666666666667C326.6133333333334 362.6666666666667 384 305.2800000000001 384 234.6666666666667C384 171.3066666666667 337.92 118.6133333333334 277.3333333333333 108.3733333333333V64H320V21.3333333333334H277.3333333333333V-21.3333333333333H234.6666666666667V21.3333333333334H192V64H234.6666666666667V108.3733333333333C174.08 118.6133333333334 128 171.3066666666667 128 234.6666666666667C128 305.2800000000001 185.3866666666667 362.6666666666667 256 362.6666666666667M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667S208.8533333333333 149.3333333333334 256 149.3333333333334S341.3333333333333 187.52 341.3333333333333 234.6666666666667S303.1466666666667 320 256 320z" /> + <glyph glyph-name="gender-male" + unicode="&#xF29D;" + horiz-adv-x="512" d=" M192 256C219.52 256 245.3333333333333 247.2533333333334 266.0266666666667 232.32L375.04 341.3333333333334H277.3333333333333V384H448V213.3333333333334H405.3333333333333V311.2533333333334L296.32 202.6666666666667C311.2533333333334 181.3333333333334 320 155.7333333333334 320 128C320 57.3866666666667 262.6133333333334 0 192 0S64 57.3866666666667 64 128S121.3866666666667 256 192 256M192 213.3333333333334C144.8533333333333 213.3333333333334 106.6666666666667 175.1466666666667 106.6666666666667 128S144.8533333333333 42.6666666666667 192 42.6666666666667S277.3333333333333 80.8533333333334 277.3333333333333 128S239.1466666666667 213.3333333333334 192 213.3333333333334z" /> + <glyph glyph-name="gender-male-female" + unicode="&#xF29E;" + horiz-adv-x="512" d=" M375.04 362.6666666666667H298.6666666666667V405.3333333333333H448V256H405.3333333333333V332.5866666666667L323.6266666666667 250.88C334.72 234.0266666666667 341.3333333333333 213.3333333333334 341.3333333333333 192C341.3333333333333 140.3733333333333 304.64 97.28 256 87.4666666666667V42.6666666666667H298.6666666666667V0H256V-42.6666666666666H213.3333333333333V0H170.6666666666667V42.6666666666667H213.3333333333333V87.4666666666667C164.6933333333333 97.2800000000001 128 140.3733333333334 128 192.0000000000001C128 250.8800000000001 175.7866666666667 298.6666666666668 234.6666666666667 298.6666666666668C256 298.6666666666668 276.48 292.2666666666667 293.3333333333333 280.9600000000001L375.04 362.6666666666667M234.6666666666667 256C199.2533333333333 256 170.6666666666667 227.4133333333334 170.6666666666667 192S199.2533333333333 128 234.6666666666667 128S298.6666666666667 156.5866666666667 298.6666666666667 192S270.08 256 234.6666666666667 256z" /> + <glyph glyph-name="gender-transgender" + unicode="&#xF29F;" + horiz-adv-x="512" d=" M417.7066666666666 384H320V426.6666666666667H490.6666666666666V256H448V353.92L344.9600000000001 250.88C356.0533333333334 234.0266666666667 362.6666666666667 213.3333333333334 362.6666666666667 192C362.6666666666667 140.3733333333333 325.9733333333333 97.28 277.3333333333333 87.4666666666667V42.6666666666667H320V0H277.3333333333333V-42.6666666666666H234.6666666666667V0H192V42.6666666666667H234.6666666666667V87.4666666666667C186.0266666666667 97.2800000000001 149.3333333333333 140.3733333333334 149.3333333333333 192.0000000000001C149.3333333333333 213.3333333333334 155.7333333333333 233.8133333333334 166.8266666666667 250.4533333333334L141.6533333333333 275.8400000000001L111.7866666666667 246.1866666666667L81.7066666666667 276.48L111.5733333333333 306.1333333333334L64 353.7066666666667V277.3333333333334H21.3333333333333V426.6666666666667H170.6666666666667V384H94.08L141.6533333333333 336.2133333333334L172.3733333333333 366.7200000000001L202.6666666666667 336.4266666666667L171.9466666666667 305.92L196.9066666666667 280.7466666666667C213.3333333333333 292.0533333333334 234.6666666666667 298.6666666666667 256 298.6666666666667S297.8133333333334 292.2666666666667 314.6666666666667 280.9600000000001L417.7066666666666 384M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256z" /> + <glyph glyph-name="ghost" + unicode="&#xF2A0;" + horiz-adv-x="512" d=" M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334V-21.3333333333333L128 42.6666666666667L192 -21.3333333333333L256 42.6666666666667L320 -21.3333333333333L384 42.6666666666667L448 -21.3333333333333V213.3333333333334C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333M192 277.3333333333334C215.4666666666667 277.3333333333334 234.6666666666667 258.1333333333334 234.6666666666667 234.6666666666667S215.4666666666667 192 192 192S149.3333333333333 211.2 149.3333333333333 234.6666666666667S168.5333333333333 277.3333333333334 192 277.3333333333334M320 277.3333333333334C343.4666666666667 277.3333333333334 362.6666666666667 258.1333333333334 362.6666666666667 234.6666666666667S343.4666666666667 192 320 192S277.3333333333333 211.2 277.3333333333333 234.6666666666667S296.5333333333333 277.3333333333334 320 277.3333333333334z" /> + <glyph glyph-name="gift" + unicode="&#xF2A1;" + horiz-adv-x="512" d=" M469.3333333333333 192V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V192C30.9333333333333 192 21.3333333333333 201.6 21.3333333333333 213.3333333333334V277.3333333333334C21.3333333333333 300.8 40.5333333333333 320 64 320H131.6266666666667C129.28 326.6133333333334 128 333.8666666666667 128 341.3333333333334C128 376.7466666666667 156.5866666666667 405.3333333333333 192 405.3333333333333C213.3333333333333 405.3333333333333 232.1066666666667 394.6666666666667 243.84 378.88V379.0933333333334L256 362.6666666666667L268.16 379.0933333333334V378.88C279.8933333333333 394.6666666666667 298.6666666666667 405.3333333333333 320 405.3333333333333C355.4133333333333 405.3333333333333 384 376.7466666666667 384 341.3333333333334C384 333.8666666666667 382.7200000000001 326.6133333333334 380.3733333333333 320H448C471.4666666666667 320 490.6666666666666 300.8 490.6666666666666 277.3333333333334V213.3333333333334C490.6666666666666 201.6 481.0666666666667 192 469.3333333333333 192M85.3333333333333 21.3333333333334H234.6666666666667V192H85.3333333333333V21.3333333333334M426.6666666666667 21.3333333333334V192H277.3333333333333V21.3333333333334H426.6666666666667M192 362.6666666666667C180.2666666666667 362.6666666666667 170.6666666666667 353.0666666666667 170.6666666666667 341.3333333333334S180.2666666666667 320 192 320S213.3333333333333 329.6 213.3333333333333 341.3333333333334S203.7333333333334 362.6666666666667 192 362.6666666666667M320 362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334S308.2666666666667 320 320 320S341.3333333333333 329.6 341.3333333333333 341.3333333333334S331.7333333333334 362.6666666666667 320 362.6666666666667M64 277.3333333333334V234.6666666666667H234.6666666666667V277.3333333333334H64M277.3333333333333 277.3333333333334V234.6666666666667H448V277.3333333333334H277.3333333333333z" /> + <glyph glyph-name="git" + unicode="&#xF2A2;" + horiz-adv-x="512" d=" M55.4666666666667 222.08L178.7733333333334 345.6L214.8266666666667 309.3333333333334C209.7066666666667 291.2000000000001 218.0266666666667 271.36 234.6666666666667 261.76V143.5733333333334C221.8666666666667 136.3200000000001 213.3333333333333 122.4533333333334 213.3333333333333 106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64S298.6666666666667 83.2 298.6666666666667 106.6666666666667C298.6666666666667 122.4533333333334 290.1333333333334 136.3200000000001 277.3333333333333 143.5733333333334V247.2533333333334L321.4933333333334 202.6666666666667C320 199.4666666666667 320 195.84 320 192C320 168.5333333333334 339.2 149.3333333333334 362.6666666666667 149.3333333333334S405.3333333333333 168.5333333333334 405.3333333333333 192S386.1333333333334 234.6666666666667 362.6666666666667 234.6666666666667C358.8266666666667 234.6666666666667 355.2 234.6666666666667 352 233.1733333333334L297.1733333333333 288C302.72 307.8400000000001 292.48 329.6 272.64 337.92C263.4666666666667 341.3333333333334 253.8666666666666 342.1866666666667 245.3333333333333 339.8400000000001L209.0666666666667 375.8933333333333L225.92 392.5333333333334C242.56 409.3866666666667 269.44 409.3866666666667 286.08 392.5333333333334L456.5333333333333 222.08C473.3866666666666 205.44 473.3866666666666 178.5600000000001 456.5333333333333 161.92L286.08 -8.5333333333333C269.44 -25.3866666666666 242.56 -25.3866666666666 225.92 -8.5333333333333L55.4666666666667 161.92C38.6133333333333 178.56 38.6133333333333 205.44 55.4666666666667 222.08z" /> + <glyph glyph-name="github-box" + unicode="&#xF2A3;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H316.8C309.3333333333333 -19.6266666666667 309.3333333333333 -5.1199999999999 309.3333333333333 0V58.4533333333334C309.3333333333333 78.2933333333334 302.2933333333333 91.3066666666667 294.6133333333334 97.9200000000001C342.1866666666666 103.2533333333335 392.1066666666667 121.1733333333334 392.1066666666667 202.6666666666668C392.1066666666667 226.3466666666668 384.0000000000001 245.3333333333335 370.1333333333334 260.4800000000002C372.2666666666667 265.8133333333335 379.7333333333334 288.0000000000001 368 316.8000000000002C368 316.8000000000002 350.08 322.5600000000001 309.3333333333333 295.0400000000002C292.48 299.7333333333335 274.1333333333334 302.0800000000002 256 302.0800000000002C237.8666666666667 302.0800000000002 219.52 299.7333333333335 202.6666666666667 295.0400000000002C161.92 322.5600000000001 144 316.8000000000002 144 316.8000000000002C132.2666666666667 288.0000000000001 139.7333333333333 265.8133333333335 141.8666666666667 260.4800000000002C128 245.3333333333335 119.8933333333333 226.3466666666668 119.8933333333333 202.6666666666668C119.8933333333333 121.3866666666668 169.6 103.0400000000001 216.96 97.7066666666668C210.9866666666667 92.3733333333335 205.44 82.9866666666668 203.52 69.1200000000001C191.36 64.0000000000002 160 54.4000000000001 141.44 86.8266666666668C141.44 86.8266666666668 130.1333333333333 107.3066666666668 108.8 108.8000000000001C108.8 108.8000000000001 87.8933333333333 109.2266666666668 106.6666666666666 96.0000000000001C106.6666666666666 96.0000000000001 121.1733333333333 89.3866666666668 130.9866666666666 64.6400000000001C130.9866666666666 64.6400000000001 143.5733333333333 23.2533333333334 202.6666666666666 36.0533333333335V0C202.6666666666666 -5.1199999999999 202.6666666666666 -19.6266666666667 194.9866666666666 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="github-circle" + unicode="&#xF2A4;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192C42.6666666666667 97.7066666666667 103.8933333333333 17.7066666666667 188.5866666666667 -10.6666666666666C199.2533333333333 -12.3733333333333 202.6666666666667 -5.76 202.6666666666667 0V36.0533333333334C143.5733333333333 23.2533333333333 130.9866666666667 64.64 130.9866666666667 64.64C121.1733333333334 89.3866666666667 107.3066666666667 96 107.3066666666667 96C87.8933333333333 109.2266666666667 108.8 108.8 108.8 108.8C130.1333333333333 107.3066666666667 141.44 86.8266666666667 141.44 86.8266666666667C160 54.4 191.36 64 203.52 69.1200000000001C205.44 82.9866666666667 210.9866666666667 92.3733333333334 216.96 97.7066666666667C169.6 103.0400000000001 119.8933333333334 121.3866666666667 119.8933333333334 202.6666666666667C119.8933333333334 226.3466666666667 128 245.3333333333334 141.8666666666667 260.48C139.7333333333334 265.8133333333334 132.2666666666667 288 144 316.8000000000001C144 316.8000000000001 161.92 322.5600000000001 202.6666666666667 295.0400000000001C219.5200000000001 299.7333333333334 237.8666666666667 302.0800000000001 256 302.0800000000001C274.1333333333334 302.0800000000001 292.48 299.7333333333334 309.3333333333334 295.0400000000001C350.08 322.5600000000001 368 316.8000000000001 368 316.8000000000001C379.7333333333334 288.0000000000001 372.2666666666667 265.8133333333334 370.1333333333334 260.48C384 245.3333333333334 392.1066666666667 226.3466666666667 392.1066666666667 202.6666666666667C392.1066666666667 121.1733333333334 342.1866666666667 103.2533333333333 294.6133333333334 97.92C302.2933333333334 91.3066666666667 309.3333333333334 78.2933333333333 309.3333333333334 58.4533333333333V0C309.3333333333334 -5.76 312.7466666666667 -12.5866666666666 323.6266666666667 -10.6666666666666C408.32 17.92 469.3333333333333 97.7066666666667 469.3333333333333 192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="glass-flute" + unicode="&#xF2A5;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C334.2933333333333 341.3333333333334 327.04 277.3333333333334 314.6666666666667 238.2933333333334C302.2933333333333 199.04 284.3733333333334 184.96 275.6266666666667 147.6266666666667C266.6666666666667 110.2933333333334 266.6666666666667 49.7066666666667 279.04 21.3333333333334C291.6266666666667 -7.04 316.3733333333334 -3.6266666666667 328.96 -5.3333333333333C341.3333333333333 -7.04 341.3333333333333 -14.2933333333333 341.3333333333333 -21.3333333333333H170.6666666666667C170.6666666666667 -14.2933333333333 170.6666666666667 -7.04 183.04 -5.3333333333333C195.6266666666667 -3.6266666666667 220.3733333333333 -7.04 232.96 21.3333333333334C245.3333333333333 49.7066666666667 245.3333333333333 110.2933333333334 236.3733333333334 147.6266666666667C227.6266666666667 184.96 209.7066666666667 199.04 197.3333333333333 238.2933333333334C184.96 277.3333333333334 177.7066666666667 341.3333333333334 170.6666666666667 405.3333333333333M213.3333333333333 362.6666666666667C214.8266666666667 340.6933333333334 216.5333333333333 318.5066666666667 218.4533333333333 298.6666666666667H293.5466666666666C295.4666666666667 318.5066666666667 297.1733333333333 340.6933333333334 298.6666666666667 362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="glass-mug" + unicode="&#xF2A6;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V298.6666666666667H384V362.6666666666667H213.3333333333333M170.6666666666667 405.3333333333333H448V384L426.6666666666667 362.6666666666667V21.3333333333334L448 0V-21.3333333333333H149.3333333333333V0L170.6666666666667 21.3333333333334V51.2L89.6 88.96C74.6666666666667 96 64 110.5066666666667 64 128V277.3333333333334C64 300.8 83.2 320 106.6666666666667 320H170.6666666666667V362.6666666666667L149.3333333333333 384V405.3333333333333H170.6666666666667M106.6666666666667 128L170.6666666666667 98.3466666666667V277.3333333333334H106.6666666666667V128z" /> + <glyph glyph-name="glass-stange" + unicode="&#xF2A7;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333V-21.3333333333333H170.6666666666667V405.3333333333333M213.3333333333333 362.6666666666667V298.6666666666667H298.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="glass-tulip" + unicode="&#xF2A8;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C334.2933333333333 391.04 327.04 376.9600000000001 332.3733333333334 341.3333333333334C337.7066666666667 305.7066666666667 355.6266666666667 248.96 346.6666666666667 218.88C337.7066666666667 189.0133333333333 302.2933333333333 186.0266666666667 284.3733333333334 152.3200000000001C266.6666666666667 118.6133333333334 266.6666666666667 53.9733333333334 279.04 23.4666666666667C291.6266666666667 -7.04 316.3733333333334 -3.6266666666666 328.96 -5.3333333333333C341.3333333333333 -7.04 341.3333333333333 -14.2933333333333 341.3333333333333 -21.3333333333333H170.6666666666667C170.6666666666667 -14.2933333333333 170.6666666666667 -7.04 183.04 -5.3333333333333C195.6266666666667 -3.6266666666667 220.3733333333333 -7.04 232.96 23.4666666666667C245.3333333333333 53.9733333333334 245.3333333333333 118.6133333333334 227.6266666666667 152.3200000000001C209.7066666666667 186.0266666666667 174.2933333333333 189.0133333333334 165.3333333333333 218.8800000000001C156.3733333333333 248.9600000000001 174.2933333333333 305.7066666666667 179.6266666666667 341.3333333333334C184.96 376.9600000000001 177.7066666666667 391.04 170.6666666666667 405.3333333333334M213.3333333333333 362.6666666666668C213.3333333333333 337.2800000000001 209.7066666666667 316.3733333333334 205.6533333333333 298.6666666666668H304.4266666666666C301.44 316.3733333333334 298.6666666666667 337.2800000000001 298.6666666666667 362.6666666666668H213.3333333333333z" /> + <glyph glyph-name="glassdoor" + unicode="&#xF2A9;" + horiz-adv-x="512" d=" M384 320H341.3333333333333V128C341.3333333333333 106.6666666666667 337.4933333333334 93.0133333333333 320 86.4L202.6666666666667 42.6666666666667V320C202.6666666666667 334.9333333333334 207.7866666666667 360.5333333333334 234.6666666666667 357.5466666666667L384 341.3333333333334V367.1466666666667L192 402.9866666666667C184.32 404.48 178.3466666666666 405.3333333333333 170.6666666666667 405.3333333333333C143.36 405.3333333333333 128 388.6933333333334 128 362.6666666666667V13.44C128 -20.2666666666667 157.2266666666667 -26.88 170.6666666666667 -21.3333333333333L362.6666666666667 57.1733333333334C384 65.92 384 85.3333333333334 384 106.6666666666667V320z" /> + <glyph glyph-name="glasses" + unicode="&#xF2AA;" + horiz-adv-x="512" d=" M64 234.6666666666667C58.88 234.6666666666667 54.4 232.7466666666667 51.4133333333333 229.3333333333334C48.4266666666667 226.1333333333334 47.1466666666667 221.44 47.7866666666667 216.32L58.4533333333333 152.5333333333334C60.16 138.6666666666667 72.5333333333333 128 85.3333333333333 128H149.3333333333333C162.9866666666667 128 178.3466666666666 139.9466666666667 181.3333333333333 153.1733333333334L203.9466666666667 221.2266666666667C204.8 224 204.16 228.0533333333334 202.6666666666667 230.6133333333333C200.32 233.1733333333333 196.6933333333333 234.6666666666667 192 234.6666666666667H64M149.3333333333333 85.3333333333334H85.3333333333333C50.7733333333333 85.3333333333334 20.48 112.2133333333334 16.2133333333333 146.3466666666667L5.5466666666667 210.1333333333333C3.2 228.2666666666667 8.32 245.3333333333334 19.4133333333333 257.7066666666667C30.5066666666667 270.0800000000001 46.72 277.3333333333334 64 277.3333333333334H192C209.7066666666667 277.3333333333334 225.7066666666667 269.8666666666667 235.9466666666667 256.8533333333334C238.2933333333333 253.6533333333333 240.4266666666667 250.24 242.1333333333334 246.4C251.3066666666667 248.32 260.6933333333333 248.32 269.6533333333333 246.4C271.36 250.24 273.4933333333334 253.6533333333333 276.0533333333334 256.8533333333334C286.08 269.8666666666667 302.08 277.3333333333334 320 277.3333333333334H448C465.28 277.3333333333334 481.4933333333333 270.0800000000001 492.5866666666666 257.7066666666667C503.4666666666667 245.3333333333334 508.5866666666666 228.2666666666667 506.4533333333333 210.9866666666667L495.5733333333333 145.4933333333334C491.52 112.2133333333334 461.0133333333333 85.3333333333334 426.6666666666667 85.3333333333334H362.6666666666667C329.3866666666667 85.3333333333334 296.96 110.72 288.8533333333333 142.9333333333333L269.6533333333333 200.7466666666667C261.5466666666666 206.72 250.24 206.72 242.1333333333333 200.7466666666667L222.5066666666666 141.4400000000001C214.8266666666667 110.5066666666667 182.6133333333334 85.3333333333334 149.3333333333333 85.3333333333334M320 234.6666666666667C315.3066666666666 234.6666666666667 311.68 233.1733333333334 309.3333333333333 230.6133333333334C307.6266666666667 228.0533333333334 307.2 224 308.2666666666667 219.7333333333334L329.8133333333333 154.6666666666667C333.6533333333333 139.9466666666667 349.0133333333333 128 362.6666666666667 128H426.6666666666667C439.2533333333334 128 451.84 138.6666666666667 453.3333333333333 151.68L464.2133333333334 217.1733333333334C464.8533333333334 221.44 463.5733333333333 226.1333333333334 460.5866666666666 229.3333333333334C457.6 232.7466666666667 453.1199999999999 234.6666666666667 448 234.6666666666667H320z" /> + <glyph glyph-name="gmail" + unicode="&#xF2AB;" + horiz-adv-x="512" d=" M426.6666666666667 64H384V250.6666666666667L256 170.6666666666667L128 250.6666666666667V64H85.3333333333333V320H110.9333333333333L256 229.3333333333334L401.0666666666667 320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="gnome" + unicode="&#xF2AC;" + horiz-adv-x="512" d=" M392.9600000000001 405.3333333333333C304.2133333333334 405.3333333333333 288 278.8266666666667 337.4933333333334 278.8266666666667C387.4133333333334 278.8266666666667 481.7066666666667 405.3333333333333 392.9600000000001 405.3333333333333M256 389.76C254.2933333333333 389.76 252.8 389.76 251.3066666666667 389.5466666666667C201.3866666666667 383.1466666666667 218.88 296.1066666666667 245.3333333333333 294.6133333333334C271.36 292.9066666666667 299.52 389.76 256 389.76M169.1733333333333 355.4133333333334C166.6133333333333 355.4133333333334 163.6266666666667 354.7733333333333 160.64 353.4933333333334C120.5333333333333 336.8533333333334 154.4533333333333 268.5866666666667 177.0666666666666 273.0666666666667C197.76 277.3333333333334 200.32 356.2666666666667 169.1733333333333 355.4133333333334M105.1733333333333 301.8666666666667C101.76 302.0800000000001 97.92 300.8 94.08 298.0266666666667C61.8666666666666 275.8400000000001 104.7466666666666 222.2933333333334 123.7333333333333 230.6133333333334C140.16 237.8666666666667 129.7066666666666 301.0133333333333 105.1733333333333 301.8666666666667M283.5199999999999 260.9066666666667C215.4666666666666 260.2666666666667 128.6399999999999 225.7066666666667 113.4933333333333 158.0800000000001C96.64 82.9866666666667 182.6133333333334 -21.3333333333333 272.2133333333333 -21.3333333333333C316.3733333333334 -21.3333333333333 367.1466666666667 18.5600000000001 376.7466666666667 68.9066666666667C384 107.3066666666667 291.2 91.9466666666667 294.6133333333334 66.5600000000001C298.6666666666667 36.0533333333334 272.2133333333333 21.3333333333334 246.4 40.5333333333334C164.0533333333334 103.2533333333335 382.5066666666667 134.4000000000001 368 219.9466666666667C363.3066666666667 247.6800000000001 327.2533333333334 261.1200000000001 283.52 260.9066666666668z" /> + <glyph glyph-name="google" + unicode="&#xF2AD;" + horiz-adv-x="512" d=" M455.4666666666667 211.2H259.8400000000001V152.96H398.7200000000001C391.6800000000001 71.68 324.0533333333334 36.9066666666667 260.0533333333334 36.9066666666667C178.3466666666666 36.9066666666667 106.6666666666667 101.3333333333334 106.6666666666667 192C106.6666666666667 279.4666666666667 174.9333333333333 347.0933333333334 260.2666666666667 347.0933333333334C326.1866666666666 347.0933333333334 364.8 305.0666666666667 364.8 305.0666666666667L405.3333333333333 347.3066666666667S353.28 405.3333333333333 258.1333333333334 405.3333333333333C136.96 405.3333333333333 43.3066666666667 302.9333333333334 43.3066666666667 192C43.3066666666667 84.2666666666667 131.4133333333333 -21.3333333333333 261.3333333333333 -21.3333333333333C375.4666666666667 -21.3333333333333 458.6666666666666 56.96 458.6666666666666 172.5866666666667C458.6666666666666 197.12 455.4666666666667 211.2 455.4666666666667 211.2z" /> + <glyph glyph-name="google-cardboard" + unicode="&#xF2AE;" + horiz-adv-x="512" d=" M442.4533333333333 320H68.2666666666667C54.4 320 42.6666666666667 307.8400000000001 42.6666666666667 292.9066666666667V69.76C42.6666666666667 54.8266666666667 54.4 42.6666666666667 68.9066666666667 42.6666666666667H170.6666666666667C182.1866666666667 42.6666666666667 192 49.4933333333333 195.4133333333333 59.52L225.0666666666667 133.5466666666667C230.1866666666667 145.92 242.1333333333334 154.6666666666667 256 154.6666666666667C269.8666666666667 154.6666666666667 281.8133333333334 145.92 286.9333333333333 133.5466666666667L316.5866666666667 59.52C320.64 49.4933333333333 329.8133333333333 42.6666666666667 340.2666666666667 42.6666666666667H442.4533333333333C457.6 42.6666666666667 469.3333333333333 54.8266666666667 469.3333333333333 69.76V292.9066666666667C469.3333333333333 307.8400000000001 457.6 320 442.4533333333333 320M154.0266666666667 136.96C128 136.96 106.6666666666667 158.9333333333333 106.6666666666667 185.8133333333334C106.6666666666667 213.3333333333334 128 234.6666666666667 154.0266666666667 234.6666666666667C180.0533333333333 234.6666666666667 201.1733333333333 213.3333333333334 201.1733333333333 185.8133333333334C201.1733333333333 158.9333333333334 180.0533333333333 136.96 154.0266666666667 136.96M357.9733333333334 136.96C331.9466666666667 136.96 310.8266666666667 158.9333333333334 310.8266666666667 185.8133333333334S331.9466666666667 234.6666666666667 357.9733333333334 234.6666666666667S405.3333333333333 212.6933333333334 405.3333333333333 185.8133333333334S384 136.96 357.9733333333334 136.96z" /> + <glyph glyph-name="google-chrome" + unicode="&#xF2AF;" + horiz-adv-x="512" d=" M256 21.3333333333334L329.8133333333334 149.3333333333334H329.6C336.8533333333334 162.1333333333333 341.3333333333333 176.4266666666667 341.3333333333333 192C341.3333333333333 217.6 329.8133333333334 240.4266666666667 311.8933333333333 256H414.08C422.1866666666666 236.1600000000001 426.6666666666667 214.6133333333334 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334M85.3333333333333 192C85.3333333333333 223.1466666666667 93.6533333333333 252.1600000000001 108.16 277.3333333333334L182.1866666666667 149.3333333333334H182.4C197.12 123.9466666666667 224 106.6666666666667 256 106.6666666666667C265.6 106.6666666666667 274.7733333333333 108.5866666666667 283.52 111.5733333333334L232.32 23.2533333333333C149.3333333333333 34.7733333333333 85.3333333333333 105.8133333333334 85.3333333333333 192M320 192C320 156.5866666666667 291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256S320 227.4133333333334 320 192M256 362.6666666666667C319.1466666666667 362.6666666666667 374.1866666666666 328.32 403.6266666666667 277.3333333333334H256C214.6133333333334 277.3333333333334 180.2666666666667 247.8933333333334 172.3733333333333 208.8533333333333L121.6 296.9600000000001C152.7466666666667 336.8533333333334 201.3866666666667 362.6666666666667 256 362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="google-circles" + unicode="&#xF2B0;" + horiz-adv-x="512" d=" M355.4133333333333 128H362.6666666666667C384 128 405.3333333333333 132.2666666666667 423.8933333333333 139.52C408.9600000000001 48.4266666666667 330.0266666666667 -21.3333333333333 234.6666666666667 -21.3333333333333C128 -21.3333333333333 42.6666666666667 64.64 42.6666666666667 170.6666666666667C42.6666666666667 266.0266666666667 112.4266666666667 344.9600000000001 203.5200000000001 359.8933333333333C196.2666666666667 341.3333333333334 192 320 192 298.6666666666667V291.4133333333334C142.5066666666667 273.92 106.6666666666667 226.5600000000001 106.6666666666667 170.6666666666667C106.6666666666667 100.0533333333334 164.0533333333333 42.6666666666667 234.6666666666667 42.6666666666667C290.56 42.6666666666667 337.92 78.5066666666667 355.4133333333333 128M362.6666666666667 234.6666666666667C398.08 234.6666666666667 426.6666666666667 263.2533333333334 426.6666666666667 298.6666666666667S398.08 362.6666666666667 362.6666666666667 362.6666666666667S298.6666666666667 334.0800000000001 298.6666666666667 298.6666666666667S327.2533333333334 234.6666666666667 362.6666666666667 234.6666666666667M362.6666666666667 426.6666666666667C433.28 426.6666666666667 490.6666666666666 369.28 490.6666666666666 298.6666666666667S433.28 170.6666666666667 362.6666666666667 170.6666666666667S234.6666666666667 228.0533333333334 234.6666666666667 298.6666666666667C234.6666666666667 369.4933333333334 292.0533333333333 426.6666666666667 362.6666666666667 426.6666666666667z" /> + <glyph glyph-name="google-circles-communities" + unicode="&#xF2B1;" + horiz-adv-x="512" d=" M320 192C296.32 192 277.3333333333333 173.0133333333333 277.3333333333333 149.3333333333334C277.3333333333333 125.8666666666667 296.5333333333333 106.6666666666667 320 106.6666666666667S362.6666666666667 125.8666666666667 362.6666666666667 149.3333333333334C362.6666666666667 173.0133333333333 343.4666666666667 192 320 192M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M298.6666666666667 256C298.6666666666667 279.68 279.4666666666667 298.6666666666667 256 298.6666666666667C232.32 298.6666666666667 213.3333333333333 279.68 213.3333333333333 256C213.3333333333333 232.5333333333334 232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 232.5333333333334 298.6666666666667 256M192 192C168.5333333333333 192 149.3333333333333 172.8 149.3333333333333 149.3333333333334S168.5333333333333 106.6666666666667 192 106.6666666666667S234.6666666666667 125.8666666666667 234.6666666666667 149.3333333333334C234.6666666666667 173.0133333333333 215.4666666666667 192 192 192z" /> + <glyph glyph-name="google-circles-extended" + unicode="&#xF2B2;" + horiz-adv-x="512" d=" M384 42.6666666666667C360.32 42.6666666666667 341.3333333333333 61.8666666666667 341.3333333333333 85.3333333333334C341.3333333333333 109.0133333333333 360.32 128 384 128C407.4666666666667 128 426.6666666666667 108.8 426.6666666666667 85.3333333333334S407.4666666666667 42.6666666666667 384 42.6666666666667M384 170.6666666666667C336.8533333333333 170.6666666666667 298.6666666666667 132.48 298.6666666666667 85.3333333333334S336.8533333333333 0 384 0S469.3333333333333 38.1866666666667 469.3333333333333 85.3333333333334S431.1466666666667 170.6666666666667 384 170.6666666666667M256 211.2C233.6 211.2 215.4666666666667 193.0666666666667 215.4666666666667 170.6666666666667C215.4666666666667 148.2666666666667 233.6 130.1333333333333 256 130.1333333333333C278.4 130.1333333333333 296.5333333333333 148.2666666666667 296.5333333333333 170.6666666666667C296.5333333333333 193.0666666666667 278.4 211.2 256 211.2M128 42.6666666666667C104.32 42.6666666666667 85.3333333333333 61.8666666666667 85.3333333333333 85.3333333333334C85.3333333333333 109.0133333333333 104.32 128 128 128C151.4666666666667 128 170.6666666666667 108.8 170.6666666666667 85.3333333333334S151.4666666666667 42.6666666666667 128 42.6666666666667M128 170.6666666666667C80.8533333333333 170.6666666666667 42.6666666666667 132.48 42.6666666666667 85.3333333333334S80.8533333333333 0 128 0S213.3333333333333 38.1866666666667 213.3333333333333 85.3333333333334S175.1466666666667 170.6666666666667 128 170.6666666666667M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334C232.32 277.3333333333334 213.3333333333333 296.5333333333334 213.3333333333333 320C213.3333333333333 343.68 232.32 362.6666666666667 256 362.6666666666667M256 234.6666666666667C303.1466666666667 234.6666666666667 341.3333333333333 272.8533333333334 341.3333333333333 320S303.1466666666667 405.3333333333333 256 405.3333333333333S170.6666666666667 367.1466666666667 170.6666666666667 320S208.8533333333333 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="google-circles-group" + unicode="&#xF2B3;" + horiz-adv-x="512" d=" M106.6666666666667 234.6666666666667C83.2 234.6666666666667 64 215.4666666666667 64 192C64 168.3200000000001 83.2 149.3333333333334 106.6666666666667 149.3333333333334C130.3466666666667 149.3333333333334 149.3333333333333 168.3200000000001 149.3333333333333 192C149.3333333333333 215.4666666666667 130.1333333333333 234.6666666666667 106.6666666666667 234.6666666666667M106.6666666666667 106.6666666666667C59.52 106.6666666666667 21.3333333333333 144.8533333333334 21.3333333333333 192S59.52 277.3333333333334 106.6666666666667 277.3333333333334S192 239.1466666666667 192 192S153.8133333333333 106.6666666666667 106.6666666666667 106.6666666666667M224 213.3333333333334H298.6666666666667V277.3333333333334L384 192L298.6666666666667 106.6666666666667V170.6666666666667H224V213.3333333333334M106.6666666666667 320C97.0666666666667 320 87.68 318.9333333333334 78.72 317.0133333333333C120.1066666666667 382.9333333333334 193.7066666666667 426.6666666666667 277.3333333333333 426.6666666666667C407.04 426.6666666666667 512 321.7066666666667 512 192S407.04 -42.6666666666666 277.3333333333333 -42.6666666666666C193.7066666666667 -42.6666666666666 120.1066666666667 1.0666666666667 78.72 66.9866666666667C87.68 65.0666666666667 97.0666666666667 64 106.6666666666667 64C123.7333333333333 64 139.9466666666667 67.4133333333334 154.6666666666667 73.3866666666667C185.8133333333333 41.1733333333333 229.12 21.3333333333334 277.3333333333333 21.3333333333334C371.6266666666667 21.3333333333334 448 97.7066666666667 448 192S371.6266666666667 362.6666666666667 277.3333333333333 362.6666666666667C229.12 362.6666666666667 185.8133333333333 342.8266666666667 154.6666666666667 310.6133333333334C139.9466666666667 316.5866666666667 123.7333333333333 320 106.6666666666667 320z" /> + <glyph glyph-name="google-controller" + unicode="&#xF2B4;" + horiz-adv-x="512" d=" M170.0266666666667 106.6666666666667L106.6666666666667 42.6666666666667C99.6266666666667 36.2666666666667 90.24 32 80 32C59.3066666666667 32 42.6666666666667 48.64 42.6666666666667 69.3333333333334V74.6666666666667L64 232.1066666666667C68.48 281.3866666666667 109.6533333333333 320 160 320H352C402.3466666666667 320 443.52 281.3866666666667 448 232.1066666666667L469.3333333333333 74.6666666666667V69.3333333333334C469.3333333333333 48.64 452.6933333333333 32 432 32C421.76 32 412.3733333333333 36.2666666666667 405.3333333333333 42.6666666666667L341.9733333333334 106.6666666666667H170.0266666666667M149.3333333333333 277.3333333333334V234.6666666666667H106.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667V213.3333333333334H213.3333333333333V234.6666666666667H170.6666666666667V277.3333333333334H149.3333333333333M352 277.3333333333334C343.2533333333334 277.3333333333334 336 270.0800000000001 336 261.3333333333334S343.2533333333334 245.3333333333334 352 245.3333333333334S368 252.5866666666667 368 261.3333333333334S360.7466666666667 277.3333333333334 352 277.3333333333334M314.6666666666667 240C305.92 240 298.6666666666667 232.7466666666667 298.6666666666667 224S305.92 208 314.6666666666667 208S330.6666666666667 215.2533333333333 330.6666666666667 224S323.4133333333333 240 314.6666666666667 240M389.3333333333333 240C380.5866666666667 240 373.3333333333333 232.7466666666667 373.3333333333333 224S380.5866666666667 208 389.3333333333333 208S405.3333333333333 215.2533333333333 405.3333333333333 224S398.08 240 389.3333333333333 240M352 202.6666666666667C343.2533333333334 202.6666666666667 336 195.4133333333334 336 186.6666666666667S343.2533333333334 170.6666666666667 352 170.6666666666667S368 177.92 368 186.6666666666667S360.7466666666667 202.6666666666667 352 202.6666666666667z" /> + <glyph glyph-name="google-controller-off" + unicode="&#xF2B5;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L271.5733333333333 106.6666666666667H170.0266666666667L106.6666666666667 42.6666666666667C99.6266666666667 36.2666666666667 90.24 32 80 32C59.3066666666667 32 42.6666666666667 48.64 42.6666666666667 69.3333333333334V74.6666666666667L64 232.1066666666667C66.1333333333333 254.08 75.3066666666667 273.7066666666667 89.3866666666667 288.8533333333334L42.6666666666667 335.5733333333334M106.6666666666667 234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667V207.5733333333334L143.5733333333333 234.6666666666667H106.6666666666667M352 320C402.3466666666667 320 443.52 281.3866666666667 448 232.1066666666667L469.3333333333333 74.6666666666667V69.3333333333334C469.3333333333333 55.2533333333333 461.6533333333333 42.6666666666667 450.1333333333334 36.6933333333333L166.8266666666667 320H352M352 277.3333333333334C343.2533333333334 277.3333333333334 336 270.0800000000001 336 261.3333333333334S343.2533333333334 245.3333333333334 352 245.3333333333334S368 252.5866666666667 368 261.3333333333334S360.7466666666667 277.3333333333334 352 277.3333333333334M314.6666666666667 240C305.92 240 298.6666666666667 232.7466666666667 298.6666666666667 224S305.92 208 314.6666666666667 208S330.6666666666667 215.2533333333333 330.6666666666667 224S323.4133333333333 240 314.6666666666667 240M389.3333333333333 240C380.5866666666667 240 373.3333333333333 232.7466666666667 373.3333333333333 224S380.5866666666667 208 389.3333333333333 208S405.3333333333333 215.2533333333333 405.3333333333333 224S398.08 240 389.3333333333333 240M352 202.6666666666667C343.2533333333334 202.6666666666667 336 195.4133333333334 336 186.6666666666667S343.2533333333334 170.6666666666667 352 170.6666666666667S368 177.92 368 186.6666666666667S360.7466666666667 202.6666666666667 352 202.6666666666667z" /> + <glyph glyph-name="google-drive" + unicode="&#xF2B6;" + horiz-adv-x="512" d=" M164.48 373.3333333333334L24.5333333333333 128L97.7066666666667 0L237.44 245.3333333333334M207.5733333333333 128L134.4 0H414.2933333333333L487.4666666666666 128M475.3066666666666 149.3333333333334L328.96 405.3333333333333H182.8266666666667L329.1733333333333 149.3333333333334H475.3066666666667z" /> + <glyph glyph-name="google-earth" + unicode="&#xF2B7;" + horiz-adv-x="512" d=" M264.5333333333333 286.7200000000001C204.8 343.2533333333334 155.7333333333333 327.4666666666667 134.6133333333333 317.8666666666667C150.6133333333333 333.2266666666667 169.3866666666667 345.6 190.2933333333333 354.1333333333334C249.6 356.2666666666667 316.3733333333334 344.7466666666667 353.28 292.0533333333334C353.28 292.0533333333334 405.3333333333333 202.6666666666667 423.68 242.1333333333334C428.3733333333333 226.1333333333334 430.9333333333333 209.4933333333334 430.9333333333333 192.0000000000001C430.9333333333333 185.6 430.5066666666667 179.4133333333334 429.8666666666666 173.2266666666667C386.56 178.1333333333334 327.04 227.8400000000001 264.5333333333333 286.7200000000001M407.4666666666666 104.5333333333334C387.4133333333333 96.64 362.6666666666666 83.2000000000001 322.9866666666666 83.2000000000001C282.88 83.2000000000001 247.68 99.2000000000001 203.9466666666666 113.0666666666667C164.2666666666666 125.6533333333334 149.3333333333333 145.0666666666667 122.0266666666666 145.0666666666667C107.9466666666666 145.0666666666667 100.9066666666666 130.9866666666667 97.0666666666666 119.2533333333335C86.8266666666666 141.4400000000001 81.0666666666666 165.9733333333334 81.0666666666666 192.0000000000001C81.0666666666666 209.2800000000001 83.6266666666666 225.7066666666668 88.3199999999999 241.4933333333334C115.1999999999999 275.2000000000001 156.3733333333333 296.1066666666668 215.2533333333333 250.4533333333335C215.2533333333333 250.4533333333335 348.1599999999999 151.0400000000001 424.1066666666666 144.4266666666667C420.2666666666666 130.3466666666668 414.5066666666666 117.3333333333334 407.4666666666666 104.5333333333334M256 17.0666666666667C232.1066666666667 17.0666666666667 209.28 21.9733333333334 188.3733333333333 30.72C175.1466666666667 62.2933333333334 175.36 87.0400000000001 212.2666666666667 74.6666666666667C212.2666666666667 74.6666666666667 295.8933333333333 42.6666666666667 384 72.96C352 38.6133333333334 306.56 17.0666666666667 256 17.0666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="google-glass" + unicode="&#xF2B8;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334V160H402.56C389.5466666666667 85.3333333333334 330.6666666666667 32 256 32C167.68 32 96 103.68 96 192C96 280.32 167.68 352 256 352C300.5866666666667 352 339.2 333.0133333333333 366.08 302.0800000000001L403.84 340.0533333333334C367.7866666666667 380.16 316.3733333333334 405.3333333333333 256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333C373.3333333333333 -21.3333333333333 458.6666666666666 74.6666666666667 458.6666666666666 192V213.3333333333334H277.3333333333333z" /> + <glyph glyph-name="google-maps" + unicode="&#xF5F5;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667C83.2 362.6666666666667 64 343.4666666666667 64 320V100.48L238.5066666666667 274.9866666666667C235.9466666666667 286.0800000000001 234.6666666666667 297.1733333333334 234.6666666666667 308.6933333333334C234.6666666666667 328.1066666666667 238.9333333333333 346.4533333333334 247.2533333333334 362.6666666666667H106.6666666666667M384 0C407.4666666666667 0 426.6666666666667 19.2 426.6666666666667 42.6666666666667V194.9866666666667C410.4533333333333 170.6666666666667 390.6133333333333 144.8533333333334 368.8533333333333 117.3333333333334L352 96L335.36 117.3333333333334C306.9866666666667 152.5333333333334 282.0266666666667 185.1733333333334 264.32 215.2533333333333C257.0666666666667 227.6266666666667 250.88 239.7866666666667 245.9733333333334 252.1600000000001L159.1466666666667 165.3333333333334L324.48 0H384M64 42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H294.1866666666666L144 150.1866666666667L64 70.1866666666667V42.6666666666667M352 128C407.68 199.8933333333334 448 253.8666666666667 448 307.8400000000001C448 361.6 405.3333333333333 405.3333333333333 352 405.3333333333333S256 361.6 256 307.8400000000001C256 253.8666666666667 295.8933333333333 199.8933333333334 352 128M394.6666666666667 309.3333333333334C394.6666666666667 285.8666666666667 375.4666666666667 266.6666666666667 352 266.6666666666667S309.3333333333333 285.8666666666667 309.3333333333333 309.3333333333334S328.5333333333333 352 352 352S394.6666666666667 332.8 394.6666666666667 309.3333333333334z" /> + <glyph glyph-name="google-nearby" + unicode="&#xF2B9;" + horiz-adv-x="512" d=" M89.6 384C76.16 384 65.0666666666667 373.3333333333334 64 360.32V68.2666666666667C64 54.1866666666667 75.52 42.6666666666667 89.6 42.6666666666667C91.9466666666667 42.6666666666667 94.2933333333333 42.6666666666667 96.64 43.7333333333334C181.3333333333333 88.7466666666667 267.9466666666666 141.2266666666667 352 190.2933333333334C361.3866666666667 194.3466666666667 367.1466666666667 203.5200000000001 367.1466666666667 213.3333333333334C367.1466666666667 222.5066666666667 362.6666666666667 231.0400000000001 354.1333333333334 235.5200000000001C266.6666666666667 286.7200000000001 175.1466666666667 339.8400000000001 96.64 382.9333333333334C94.2933333333333 384 91.9466666666667 384 89.6 384M423.8933333333333 320C421.5466666666667 320 419.2000000000001 320 416.8533333333334 318.9333333333334C396.8 307.8400000000001 373.9733333333334 294.8266666666667 352.0000000000001 282.6666666666667C359.4666666666668 278.4 366.7200000000001 274.3466666666667 373.3333333333334 270.2933333333334C394.6666666666668 258.56 406.8266666666667 236.8 406.8266666666667 213.3333333333334C406.8266666666667 188.16 392.1066666666667 164.9066666666667 369.4933333333334 154.24C339.6266666666667 136.7466666666667 275.6266666666667 98.9866666666667 241.4933333333334 79.1466666666667C300.1600000000001 45.0133333333333 358.8266666666667 10.6666666666667 416.8533333333335 -20.2666666666666C419.2000000000001 -21.3333333333333 421.5466666666668 -21.3333333333333 423.8933333333335 -21.3333333333333C438.1866666666668 -21.3333333333333 449.4933333333334 -9.8133333333333 449.4933333333334 4.2666666666667C449.4933333333334 101.5466666666666 449.7066666666668 199.2533333333333 449.4933333333334 296.32C448 309.3333333333334 437.3333333333333 320 423.8933333333333 320z" /> + <glyph glyph-name="google-pages" + unicode="&#xF2BA;" + horiz-adv-x="512" d=" M405.3333333333333 384H277.3333333333333V277.3333333333334L362.6666666666667 298.6666666666667L341.3333333333333 213.3333333333334H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M362.6666666666667 85.3333333333334L277.3333333333333 106.6666666666667V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V170.6666666666667H341.3333333333333M170.6666666666667 170.6666666666667H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H234.6666666666667V106.6666666666667L149.3333333333333 85.3333333333334M64 341.3333333333334V213.3333333333334H170.6666666666667L149.3333333333333 298.6666666666667L234.6666666666667 277.3333333333334V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334z" /> + <glyph glyph-name="google-physical-web" + unicode="&#xF2BB;" + horiz-adv-x="512" d=" M256 416C362.0266666666667 416 448 330.0266666666667 448 224C448 168.3200000000001 424.32 117.9733333333334 386.3466666666667 82.9866666666667L363.7333333333334 105.6C395.7333333333334 134.8266666666667 416 177.0666666666667 416 224C416 312.32 344.32 384 256 384C167.68 384 96 312.3200000000001 96 224C96 177.0666666666667 116.2666666666667 134.8266666666667 148.2666666666667 105.6L125.6533333333333 82.9866666666667C87.68 117.9733333333334 64 168.3200000000001 64 224C64 330.0266666666667 149.9733333333333 416 256 416M256 352C326.6133333333334 352 384 294.6133333333334 384 224C384 186.0266666666667 367.36 151.68 341.3333333333333 128L318.2933333333333 151.04C338.9866666666667 168.5333333333334 352 194.7733333333333 352 224C352 277.3333333333334 309.3333333333333 320 256 320S160 277.3333333333334 160 224C160 194.7733333333333 173.0133333333333 168.5333333333334 193.7066666666667 151.04L170.6666666666667 128C144.64 151.68 128 186.0266666666667 128 224C128 294.6133333333334 185.3866666666667 352 256 352M173.0133333333333 71.4666666666667L240.8533333333333 139.5200000000001C249.1733333333333 147.84 262.8266666666666 147.84 271.1466666666667 139.5200000000001L338.9866666666666 71.4666666666667C347.3066666666666 63.1466666666667 347.3066666666666 49.7066666666667 338.9866666666666 41.3866666666667L271.1466666666667 -26.4533333333333C262.8266666666666 -34.7733333333333 249.1733333333333 -34.7733333333333 240.8533333333333 -26.4533333333333L173.0133333333333 41.3866666666667C164.6933333333333 49.7066666666667 164.6933333333333 63.1466666666667 173.0133333333333 71.4666666666667z" /> + <glyph glyph-name="google-play" + unicode="&#xF2BC;" + horiz-adv-x="512" d=" M64 10.6666666666667V373.3333333333334C64 385.92 71.2533333333333 397.0133333333333 81.92 402.1333333333334L292.0533333333333 192L81.92 -18.1333333333333C71.2533333333333 -12.8 64 -1.92 64 10.6666666666667M358.6133333333334 125.44L129.0666666666667 -7.2533333333333L310.1866666666666 173.8666666666667L358.6133333333333 125.4400000000001M430.08 217.3866666666667C437.3333333333333 211.6266666666667 442.6666666666667 202.6666666666667 442.6666666666667 192.0000000000001S437.9733333333334 172.8000000000001 430.5066666666667 166.8266666666667L381.6533333333333 138.6666666666668L328.32 192.0000000000001L381.6533333333333 245.3333333333334L430.08 217.3866666666667M129.0666666666667 391.2533333333334L358.6133333333333 258.5600000000001L310.1866666666666 210.1333333333334L129.0666666666666 391.2533333333334z" /> + <glyph glyph-name="google-plus" + unicode="&#xF2BD;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H448V256H405.3333333333333V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V128H448V170.6666666666667H490.6666666666666M170.6666666666667 213.3333333333334V162.1333333333333H256C251.7333333333334 140.8 230.4 98.1333333333334 170.6666666666667 98.1333333333334C119.4666666666667 98.1333333333334 78.9333333333333 140.8000000000001 78.9333333333333 192.0000000000001C78.9333333333333 243.2000000000001 119.4666666666667 285.8666666666668 170.6666666666667 285.8666666666668C200.5333333333333 285.8666666666668 219.7333333333334 273.0666666666667 230.4 262.4000000000001L270.9333333333334 300.8000000000001C245.3333333333333 326.4 211.2 341.3333333333334 170.6666666666667 341.3333333333334C87.4666666666667 341.3333333333334 21.3333333333333 275.2000000000001 21.3333333333333 192S87.4666666666667 42.6666666666667 170.6666666666667 42.6666666666667C256 42.6666666666667 313.6 102.4 313.6 187.7333333333334C313.6 198.4 313.6 204.8000000000001 311.4666666666667 213.3333333333334H170.6666666666667z" /> + <glyph glyph-name="google-plus-box" + unicode="&#xF2BE;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M426.6666666666667 192H384V234.6666666666667H362.6666666666667V192H320V170.6666666666667H362.6666666666667V128H384V170.6666666666667H426.6666666666667V192M192 207.1466666666667V170.6666666666667H253.0133333333333C249.8133333333333 155.52 234.6666666666667 125.0133333333333 192 125.0133333333333C155.52 125.0133333333333 126.5066666666667 155.52 126.5066666666667 192C126.5066666666667 228.48 155.52 258.9866666666667 192 258.9866666666667C213.3333333333333 258.9866666666667 226.9866666666667 249.8133333333334 234.6666666666667 242.3466666666667L263.68 269.6533333333334C245.3333333333333 288 221.0133333333333 298.6666666666667 192 298.6666666666667C132.48 298.6666666666667 85.3333333333333 251.52 85.3333333333333 192S132.48 85.3333333333334 192 85.3333333333334C253.0133333333333 85.3333333333334 294.1866666666666 128 294.1866666666666 189.0133333333333C294.1866666666666 196.48 294.1866666666666 201.1733333333334 292.48 207.1466666666667H192z" /> + <glyph glyph-name="google-translate" + unicode="&#xF2BF;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V85.3333333333334C21.3333333333333 61.6533333333334 40.32 42.6666666666667 64 42.6666666666667H320L192 426.6666666666667H64M263.2533333333334 341.3333333333334L277.3333333333333 298.6666666666667H448V0H264.1066666666667L277.9733333333334 -42.6666666666666H448C471.6799999999999 -42.6666666666666 490.6666666666666 -23.6799999999999 490.6666666666666 0V298.6666666666667C490.6666666666666 322.3466666666667 471.6799999999999 341.3333333333334 448 341.3333333333334H263.2533333333334M150.6133333333333 321.92C174.08 321.92 193.92 313.3866666666667 208.64 298.6666666666667L184.7466666666667 276.6933333333334C178.56 282.88 167.8933333333333 289.92 150.6133333333334 289.92C120.96 289.92 97.28 265.6 97.28 235.9466666666667S120.96 181.3333333333334 150.6133333333334 181.3333333333334C185.1733333333333 181.3333333333334 197.5466666666667 206.2933333333334 200.1066666666667 218.6666666666667H150.6133333333333V247.8933333333333H232.1066666666667C233.1733333333333 242.9866666666667 233.3866666666667 239.5733333333333 233.3866666666667 233.3866666666667C233.3866666666667 183.8933333333333 200.1066666666666 149.3333333333334 150.6133333333333 149.3333333333334C102.6133333333333 149.3333333333334 64 187.9466666666667 64 235.9466666666667C64 284.1600000000001 102.6133333333334 321.92 150.6133333333333 321.92M341.3333333333333 234.6666666666667V213.3333333333334H305.92L312.7466666666667 192H384C378.24 178.9866666666667 376.1066666666667 167.04 358.6133333333333 146.5600000000001C350.08 156.5866666666667 343.2533333333334 165.3333333333334 341.3333333333333 170.6666666666667H320C322.56 161.4933333333334 333.2266666666666 147.2000000000001 346.0266666666667 132.6933333333334C343.2533333333334 129.92 339.4133333333333 126.2933333333334 336 123.3066666666667L341.9733333333333 105.3866666666667C347.3066666666666 110.08 352.64 114.9866666666667 357.9733333333333 119.8933333333334C379.7333333333333 97.0666666666667 402.7733333333333 75.9466666666667 402.7733333333333 75.9466666666667L414.7199999999999 88.7466666666668S391.8933333333333 111.1466666666668 371.4133333333333 133.3333333333334C384.8533333333333 148.2666666666668 396.8 166.4000000000001 405.3333333333333 192.0000000000001H426.6666666666666V213.3333333333334H362.6666666666666V234.6666666666668H341.3333333333333z" /> + <glyph glyph-name="google-wallet" + unicode="&#xF2C0;" + horiz-adv-x="512" d=" M210.9866666666667 211.6266666666667C208.2133333333333 236.5866666666667 200.32 260.9066666666667 187.0933333333333 282.24C181.3333333333333 292.48 180.48 305.0666666666667 184.1066666666666 314.6666666666667C185.8133333333333 320 188.3733333333333 324.2666666666667 192.64 328.7466666666667C197.12 333.2266666666667 201.8133333333333 335.7866666666667 206.2933333333333 337.4933333333334C210.7733333333334 339.4133333333334 213.3333333333333 340.0533333333334 219.9466666666667 340.0533333333334C227.4133333333334 340.0533333333334 234.6666666666667 337.7066666666667 240.64 333.8666666666667L250.0266666666667 325.12L252.3733333333334 321.7066666666667C276.0533333333333 282.4533333333334 288.64 237.6533333333334 288.64 192L288 175.1466666666667C285.44 134.8266666666667 273.0666666666667 96 252.16 61.2266666666667C245.3333333333333 49.7066666666667 232.96 42.6666666666667 219.52 42.6666666666667L208.64 44.5866666666667L199.8933333333334 48.4266666666667C189.0133333333334 54.8266666666667 182.8266666666667 65.92 181.3333333333334 77.44C181.3333333333334 84.2666666666667 182.1866666666667 91.3066666666666 185.3866666666667 97.92L187.0933333333334 100.6933333333333C203.52 128 212.2666666666667 159.36 212.2666666666667 192L210.9866666666666 211.6266666666667M434.7733333333333 279.8933333333333C441.1733333333333 251.3066666666667 444.5866666666667 221.44 444.5866666666667 192C444.5866666666667 161.4933333333334 441.1733333333333 131.84 434.7733333333333 103.2533333333333L429.0133333333333 80.8533333333334C421.9733333333334 55.4666666666667 413.8666666666666 35.84 405.3333333333333 21.3333333333334C398.9333333333333 8.1066666666667 385.28 0 370.7733333333333 0C364.8 0 359.04 1.28 353.7066666666666 3.84C341.3333333333333 9.6 334.2933333333333 19.84 331.7333333333333 31.1466666666667L330.6666666666667 40.3200000000001C330.6666666666667 49.0666666666667 334.2933333333333 56.5333333333334 334.5066666666666 57.1733333333334C354.56 99.4133333333334 364.5866666666666 144.4266666666667 364.5866666666666 192C364.5866666666666 238.5066666666667 354.56 283.9466666666667 334.2933333333333 326.8266666666667C324.6933333333333 346.6666666666667 333.2266666666666 370.56 353.0666666666666 380.1600000000001C358.6133333333333 382.7200000000001 364.3733333333333 384 370.3466666666666 384C385.7066666666666 384 399.9999999999999 375.04 406.3999999999999 361.1733333333334C418.7733333333332 335.1466666666667 428.3733333333333 307.8400000000001 434.7733333333332 279.8933333333334M343.8933333333333 245.3333333333334C346.88 227.84 348.5866666666667 209.92 348.5866666666667 192C348.5866666666667 149.3333333333334 340.2666666666667 108.3733333333333 324.2666666666667 69.9733333333334C322.3466666666667 102.1866666666667 314.6666666666667 133.1200000000001 302.08 161.2800000000001L303.36 176.4266666666667L304 192.8533333333334C304 237.2266666666668 292.48 280.5333333333334 270.2933333333333 318.5066666666667C298.6666666666667 298.0266666666668 323.84 272.8533333333334 343.8933333333333 245.3333333333334M85.3333333333333 224C67.2 234.0266666666667 60.5866666666667 256 69.9733333333333 273.4933333333334C76.3733333333333 285.2266666666667 88.5333333333333 292.6933333333334 101.9733333333333 292.6933333333334C107.9466666666667 292.6933333333334 113.7066666666667 291.2000000000001 119.04 288C146.56 273.7066666666667 171.3066666666667 253.8666666666667 191.36 231.2533333333334L194.56 212.2666666666667L195.84 192C195.84 161.4933333333334 187.9466666666667 131.4133333333334 172.8 105.1733333333334C162.1333333333334 156.5866666666667 130.56 200.1066666666667 85.3333333333334 224z" /> + <glyph glyph-name="grease-pencil" + unicode="&#xF648;" + horiz-adv-x="512" d=" M397.2266666666667 416C386.3466666666667 416 375.4666666666667 411.9466666666667 367.1466666666667 403.4133333333334L229.3333333333333 265.6L318.9333333333333 176.2133333333333L456.7466666666667 313.8133333333333C473.6 330.6666666666667 473.6 357.5466666666666 456.7466666666667 374.1866666666666L427.52 403.4133333333333C419.2 411.9466666666666 408.32 416 397.2266666666666 416M209.0666666666666 245.3333333333333L68.9066666666666 105.1733333333334L83.8399999999999 90.24C72.5333333333333 80.2133333333334 61.6533333333333 68.6933333333333 50.7733333333333 57.8133333333334C34.1333333333333 40.96 34.1333333333333 14.08 50.7733333333333 -2.5599999999999C67.4133333333333 -19.1999999999999 94.2933333333333 -19.1999999999999 111.1466666666666 -2.5599999999999C122.0266666666666 7.8933333333334 133.3333333333333 19.6266666666667 143.5733333333333 30.2933333333334L158.5066666666666 15.5733333333334L298.6666666666667 155.7333333333334" /> + <glyph glyph-name="grid" + unicode="&#xF2C1;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 362.6666666666667V277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 234.6666666666667V149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333M341.3333333333333 106.6666666666667V21.3333333333334H426.6666666666667V106.6666666666667H341.3333333333333M298.6666666666667 21.3333333333334V106.6666666666667H213.3333333333333V21.3333333333334H298.6666666666667M170.6666666666667 21.3333333333334V106.6666666666667H85.3333333333333V21.3333333333334H170.6666666666667M170.6666666666667 149.3333333333334V234.6666666666667H85.3333333333333V149.3333333333334H170.6666666666667M170.6666666666667 277.3333333333334V362.6666666666667H85.3333333333333V277.3333333333334H170.6666666666667M213.3333333333333 149.3333333333334H298.6666666666667V234.6666666666667H213.3333333333333V149.3333333333334M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C62.2933333333333 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="grid-off" + unicode="&#xF2C2;" + horiz-adv-x="512" d=" M0 388.9066666666667L27.3066666666667 416L480 -36.6933333333333L452.9066666666666 -64L410.24 -21.3333333333333H85.3333333333333C62.2933333333333 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V346.24L0 388.9066666666667M213.3333333333333 362.6666666666667V284.1600000000001L170.6666666666667 326.8266666666667V362.6666666666667H134.8266666666667L92.16 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V27.7333333333334L426.6666666666667 70.4V106.6666666666667H390.8266666666667L348.16 149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333V156.16L298.6666666666667 198.8266666666667V234.6666666666667H262.8266666666667L220.16 277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 362.6666666666667V277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 21.3333333333334H367.5733333333333L341.3333333333333 47.5733333333334V21.3333333333334M85.3333333333333 277.3333333333334H111.5733333333333L85.3333333333333 303.5733333333334V277.3333333333334M213.3333333333333 149.3333333333334H239.5733333333333L213.3333333333333 175.5733333333334V149.3333333333334M298.6666666666667 21.3333333333334V90.24L282.24 106.6666666666667H213.3333333333333V21.3333333333334H298.6666666666667M170.6666666666667 21.3333333333334V106.6666666666667H85.3333333333333V21.3333333333334H170.6666666666667M170.6666666666667 149.3333333333334V218.24L154.24 234.6666666666667H85.3333333333333V149.3333333333334H170.6666666666667z" /> + <glyph glyph-name="group" + unicode="&#xF2C3;" + horiz-adv-x="512" d=" M170.6666666666667 277.3333333333334V192H277.3333333333333V277.3333333333334H170.6666666666667M21.3333333333333 426.6666666666667H106.6666666666667V405.3333333333333H405.3333333333333V426.6666666666667H490.6666666666666V341.3333333333334H469.3333333333333V42.6666666666667H490.6666666666666V-42.6666666666666H405.3333333333333V-21.3333333333333H106.6666666666667V-42.6666666666666H21.3333333333333V42.6666666666667H42.6666666666667V341.3333333333334H21.3333333333333V426.6666666666667M106.6666666666667 42.6666666666667V21.3333333333334H405.3333333333333V42.6666666666667H426.6666666666667V341.3333333333334H405.3333333333333V362.6666666666667H106.6666666666667V341.3333333333334H85.3333333333333V42.6666666666667H106.6666666666667M128 320H320V234.6666666666667H384V64H170.6666666666667V149.3333333333334H128V320M320 149.3333333333334H213.3333333333333V106.6666666666667H341.3333333333333V192H320V149.3333333333334z" /> + <glyph glyph-name="guitar-electric" + unicode="&#xF2C4;" + horiz-adv-x="512" d=" M437.3333333333333 405.3333333333333L397.8666666666666 360.9600000000001L401.7066666666666 357.12L222.9333333333333 188.5866666666667C218.2399999999999 183.8933333333333 201.5999999999999 176 197.5466666666666 186.0266666666667C187.9466666666666 210.7733333333334 218.24 213.3333333333334 213.3333333333333 217.6C190.72 228.6933333333334 164.9066666666667 209.4933333333334 163.6266666666666 208.4266666666667C148.0533333333333 196.6933333333334 138.6666666666666 182.8266666666667 133.5466666666666 167.8933333333334C127.1466666666666 148.48 110.2933333333333 146.1333333333334 100.9066666666666 145.7066666666667C77.6533333333333 144.2133333333334 64 138.0266666666668 53.3333333333333 123.0933333333334C48.4266666666666 116.48 40.5333333333333 106.6666666666667 42.6666666666666 86.1866666666667C46.08 64.0000000000001 62.9333333333333 35.6266666666667 75.9466666666666 21.3333333333334C89.8133333333333 6.6133333333334 107.7333333333333 -8.1066666666666 123.9466666666666 -15.9999999999999C135.4666666666666 -21.3333333333333 142.5066666666666 -23.0399999999998 159.36 -18.7733333333332C174.2933333333333 -14.9333333333332 189.0133333333333 -2.9866666666666 195.2 12.8000000000001C200.32 26.4533333333335 200.96 36.2666666666668 203.3066666666667 47.3600000000001C206.2933333333333 61.6533333333335 208.2133333333333 64.0000000000002 223.36 70.8266666666668C237.6533333333333 77.0133333333335 245.3333333333333 77.8666666666668 257.0666666666666 90.0266666666668C265.3866666666667 98.7733333333335 269.6533333333333 108.1600000000001 272.2133333333333 118.1866666666669C274.3466666666666 126.7200000000002 275.8399999999999 137.3866666666668 271.7866666666667 138.6666666666669C268.16 141.8666666666669 261.76 121.3866666666668 246.6133333333333 130.9866666666669C235.7333333333333 137.8133333333335 237.0133333333333 154.8800000000002 246.4 164.4800000000002C307.4133333333333 226.5600000000002 357.3333333333333 277.3333333333335 418.7733333333333 339.4133333333336L423.68 334.5066666666669L469.3333333333333 373.3333333333334z" /> + <glyph glyph-name="guitar-pick" + unicode="&#xF2C5;" + horiz-adv-x="512" d=" M405.3333333333333 360.5333333333334C386.1333333333334 377.6 362.6666666666667 388.2666666666667 337.0666666666667 394.6666666666667C330.6666666666667 396.8 290.1333333333334 405.3333333333334 260.2666666666667 405.3333333333334H251.7333333333334C221.8666666666667 405.3333333333334 179.2 396.8 172.8 394.6666666666667C149.3333333333334 388.2666666666667 125.8666666666667 377.6 106.6666666666667 360.5333333333334C64 322.1333333333334 64 262.4000000000001 85.3333333333333 213.3333333333334C106.6666666666667 160 130.1333333333333 113.0666666666667 162.1333333333333 66.1333333333334C187.7333333333334 29.8666666666667 215.4666666666667 -21.3333333333333 256 -21.3333333333333C296.5333333333333 -21.3333333333333 324.2666666666667 29.8666666666667 352 66.1333333333334C384 110.9333333333334 407.4666666666667 160.0000000000001 428.8 213.3333333333334C448 262.4000000000001 448 322.1333333333334 405.3333333333333 360.5333333333334z" /> + <glyph glyph-name="guitar-pick-outline" + unicode="&#xF2C6;" + horiz-adv-x="512" d=" M405.3333333333333 360.5333333333334C386.1333333333334 377.6 362.6666666666667 388.2666666666667 337.0666666666667 394.6666666666667C330.6666666666667 396.8 290.1333333333334 405.3333333333334 260.2666666666667 405.3333333333334H251.7333333333334C221.8666666666667 405.3333333333334 179.2 396.8 172.8 394.6666666666667C149.3333333333334 388.2666666666667 125.8666666666667 377.6 106.6666666666667 360.5333333333334C64 322.1333333333334 64 262.4000000000001 85.3333333333333 213.3333333333334C106.6666666666667 160 130.1333333333333 113.0666666666667 162.1333333333333 66.1333333333334C187.7333333333334 29.8666666666667 215.4666666666667 -21.3333333333333 256 -21.3333333333333C296.5333333333333 -21.3333333333333 324.2666666666667 29.8666666666667 352 66.1333333333334C384 110.9333333333334 407.4666666666667 160.0000000000001 428.8 213.3333333333334C448 262.4000000000001 448 322.1333333333334 405.3333333333333 360.5333333333334M388.2666666666667 230.4000000000001C364.8 172.8000000000001 343.4666666666666 130.1333333333334 315.7333333333333 91.7333333333335C311.4666666666667 87.4666666666668 309.3333333333333 81.0666666666668 305.0666666666666 76.8000000000001C294.4 59.7333333333335 268.8 21.3333333333334 256 21.3333333333334C241.0666666666667 21.3333333333334 217.6 57.6000000000001 204.8 76.8000000000001C200.5333333333333 81.0666666666668 198.4 87.4666666666668 194.1333333333333 91.7333333333335C168.5333333333333 130.1333333333335 145.0666666666667 172.8000000000001 121.6 230.4000000000001C117.3333333333333 245.3333333333335 100.2666666666667 298.6666666666668 134.4 330.6666666666668C145.0666666666666 341.3333333333335 162.1333333333333 347.7333333333335 183.4666666666666 354.1333333333335C192 354.1333333333335 228.2666666666666 362.6666666666668 251.7333333333333 362.6666666666668H258.1333333333333C281.5999999999999 362.6666666666668 317.8666666666666 356.2666666666668 326.3999999999999 354.1333333333335C347.7333333333333 347.7333333333335 364.8 341.3333333333335 375.4666666666666 330.6666666666668C411.7333333333333 298.6666666666668 394.6666666666666 245.3333333333335 388.2666666666667 230.4000000000001z" /> + <glyph glyph-name="hackernews" + unicode="&#xF624;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M240 74.6666666666667H272V169.3866666666667L341.3333333333333 298.6666666666667H309.3333333333333L256 199.2533333333333L202.6666666666667 298.6666666666667H170.6666666666667L240 169.3866666666667V74.6666666666667z" /> + <glyph glyph-name="hand-pointing-right" + unicode="&#xF2C7;" + horiz-adv-x="512" d=" M448 256C459.7333333333333 256 469.3333333333333 246.4000000000001 469.3333333333333 234.6666666666667S459.7333333333333 213.3333333333334 448 213.3333333333334H352.64L349.8666666666667 187.52L302.9333333333334 82.1333333333333C298.6666666666668 71.4666666666666 287.36 63.9999999999999 274.3466666666667 63.9999999999999H181.3333333333333C164.2666666666667 63.9999999999999 149.3333333333333 79.5733333333333 149.3333333333333 95.9999999999999V234.6666666666667C149.3333333333333 242.9866666666667 152.7466666666667 250.4533333333334 158.5066666666667 256L248.1066666666667 360.5333333333334L264.5333333333333 344.7466666666667C268.8 340.6933333333334 271.36 335.1466666666667 271.36 328.9600000000001L270.72 324.2666666666667L234.6666666666667 256H448M42.6666666666667 64V234.6666666666667H106.6666666666667V64H42.6666666666667z" /> + <glyph glyph-name="hanger" + unicode="&#xF2C8;" + horiz-adv-x="512" d=" M442.88 99.4133333333334H442.6666666666667C458.6666666666666 90.24 469.3333333333333 72.96 469.3333333333333 53.3333333333334C469.3333333333333 23.8933333333334 445.44 0 416 0H96C66.56 0 42.6666666666667 23.8933333333334 42.6666666666667 53.3333333333334C42.6666666666667 72.96 53.3333333333333 90.24 69.3333333333333 99.4133333333334H69.12L234.6666666666667 194.9866666666667S234.6666666666667 213.3333333333334 256 234.6666666666667C277.3333333333333 234.6666666666667 298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320S213.3333333333333 300.8 213.3333333333333 277.3333333333334H170.6666666666667C170.6666666666667 324.48 208.8533333333333 362.6666666666667 256 362.6666666666667S341.3333333333333 324.48 341.3333333333333 277.3333333333334C341.3333333333333 237.6533333333334 314.24 204.3733333333333 277.3333333333333 194.7733333333333L442.88 99.4133333333334M96 42.6666666666667H416C419.6266666666667 42.6666666666667 423.2533333333334 44.5866666666667 425.1733333333333 48C428.16 53.3333333333334 426.6666666666667 59.52 421.3333333333333 62.5066666666667L256 158.0800000000001L90.6666666666667 62.5066666666667C85.3333333333333 59.52 83.84 53.3333333333334 86.8266666666667 48C88.7466666666667 44.5866666666667 92.3733333333333 42.6666666666667 96 42.6666666666667z" /> + <glyph glyph-name="hangouts" + unicode="&#xF2C9;" + horiz-adv-x="512" d=" M320 213.3333333333334L298.6666666666667 170.6666666666667H266.6666666666667L288 213.3333333333334H256V277.3333333333334H320M234.6666666666667 213.3333333333334L213.3333333333333 170.6666666666667H181.3333333333333L202.6666666666667 213.3333333333334H170.6666666666667V277.3333333333334H234.6666666666667M245.3333333333333 405.3333333333333C145.28 405.3333333333333 64 324.0533333333334 64 224C64 123.9466666666667 145.28 42.6666666666667 245.3333333333333 42.6666666666667H256V-32C359.68 18.1333333333334 426.6666666666667 128 426.6666666666667 224C426.6666666666667 324.2666666666667 345.3866666666667 405.3333333333333 245.3333333333333 405.3333333333333z" /> + <glyph glyph-name="harddisk" + unicode="&#xF2CA;" + horiz-adv-x="512" d=" M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M256 362.6666666666667C185.3866666666667 362.6666666666667 128 305.2800000000001 128 234.6666666666667S185.3866666666667 106.6666666666667 258.1333333333334 106.6666666666667L239.36 154.24C233.6 164.48 237.0133333333333 177.4933333333334 247.2533333333333 183.4666666666667L265.5999999999999 194.1333333333334C275.8399999999999 199.8933333333334 288.8533333333333 196.48 294.8266666666666 186.2400000000001L335.7866666666666 134.6133333333334C365.2266666666667 158.0800000000001 384 194.1333333333333 384 234.6666666666667C384 305.2800000000001 326.6133333333334 362.6666666666667 256 362.6666666666667M256 256C267.7333333333334 256 277.3333333333333 246.4000000000001 277.3333333333333 234.6666666666667S267.7333333333334 213.3333333333334 256 213.3333333333334S234.6666666666667 222.9333333333333 234.6666666666667 234.6666666666667S244.2666666666667 256 256 256M149.3333333333333 64C137.6 64 128 54.4 128 42.6666666666667S137.6 21.3333333333334 149.3333333333333 21.3333333333334S170.6666666666667 30.9333333333333 170.6666666666667 42.6666666666667S161.0666666666667 64 149.3333333333333 64M257.92 164.9066666666667L311.04 30.2933333333334L366.2933333333334 62.2933333333334L276.2666666666667 175.5733333333334L257.9200000000001 164.9066666666667z" /> + <glyph glyph-name="headphones" + unicode="&#xF2CB;" + horiz-adv-x="512" d=" M256 426.6666666666667C149.3333333333333 426.6666666666667 64 341.3333333333334 64 234.6666666666667V85.3333333333334C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334H192V192H106.6666666666667V234.6666666666667C106.6666666666667 317.2266666666667 173.44 384 256 384S405.3333333333333 317.2266666666667 405.3333333333333 234.6666666666667V192H320V21.3333333333334H384C419.4133333333333 21.3333333333334 448 49.92 448 85.3333333333334V234.6666666666667C448 341.3333333333334 362.0266666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="headphones-box" + unicode="&#xF2CC;" + horiz-adv-x="512" d=" M153.6 64C139.52 64 128 75.52 128 89.6V192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192V89.6C384 75.52 372.48 64 358.4 64H298.6666666666667V149.3333333333334H341.3333333333333V192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334S170.6666666666667 239.1466666666667 170.6666666666667 192V149.3333333333334H213.3333333333333V64M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="headphones-settings" + unicode="&#xF2CD;" + horiz-adv-x="512" d=" M256 426.6666666666667C362.0266666666667 426.6666666666667 448 340.6933333333334 448 234.6666666666667V85.3333333333334C448 49.92 419.4133333333333 21.3333333333334 384 21.3333333333334H320V192H405.3333333333333V234.6666666666667C405.3333333333333 317.2266666666667 338.56 384 256 384S106.6666666666667 317.2266666666667 106.6666666666667 234.6666666666667V192H192V21.3333333333334H128C92.5866666666667 21.3333333333334 64 49.92 64 85.3333333333334V234.6666666666667C64 340.6933333333334 149.9733333333333 426.6666666666667 256 426.6666666666667M320 -64V-21.3333333333333H362.6666666666667V-64H320M234.6666666666667 -64V-21.3333333333333H277.3333333333333V-64H234.6666666666667M149.3333333333333 -64V-21.3333333333333H192V-64H149.3333333333333z" /> + <glyph glyph-name="headset" + unicode="&#xF2CE;" + horiz-adv-x="512" d=" M256 426.6666666666667C149.3333333333333 426.6666666666667 64 341.3333333333334 64 234.6666666666667V85.3333333333334C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334H192V192H106.6666666666667V234.6666666666667C106.6666666666667 317.2266666666667 173.44 384 256 384S405.3333333333333 317.2266666666667 405.3333333333333 234.6666666666667V192H320V21.3333333333334H405.3333333333333V0H256V-42.6666666666666H384C419.4133333333333 -42.6666666666666 448 -14.08 448 21.3333333333334V234.6666666666667C448 341.3333333333334 362.0266666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="headset-dock" + unicode="&#xF2CF;" + horiz-adv-x="512" d=" M42.6666666666667 64H192V317.2266666666667C155.0933333333333 307.8400000000001 128 274.3466666666667 128 234.6666666666667V213.3333333333334H170.6666666666667V85.3333333333334H128C104.5333333333333 85.3333333333334 85.3333333333333 104.5333333333333 85.3333333333333 128V234.6666666666667C85.3333333333333 305.2800000000001 142.72 362.6666666666667 213.3333333333333 362.6666666666667H234.6666666666667C305.28 362.6666666666667 362.6666666666667 305.2800000000001 362.6666666666667 234.6666666666667V192H384V256H426.6666666666667V192C426.6666666666667 168.5333333333334 407.4666666666667 149.3333333333334 384 149.3333333333334H362.6666666666667V128C362.6666666666667 104.5333333333333 343.4666666666667 85.3333333333334 320 85.3333333333334H277.3333333333333V213.3333333333334H320V234.6666666666667C320 274.3466666666667 292.9066666666667 307.8400000000001 256 317.2266666666667V64H469.3333333333333V21.3333333333334H42.6666666666667V64z" /> + <glyph glyph-name="headset-off" + unicode="&#xF2D0;" + horiz-adv-x="512" d=" M480 346.24L435.84 302.0800000000001C443.7333333333334 281.1733333333334 448 258.3466666666667 448 234.6666666666667V21.3333333333334C448 -14.08 419.4133333333333 -42.6666666666666 384 -42.6666666666666H256V0H405.3333333333333V21.3333333333334H320V186.24L192 58.24V21.3333333333334H155.0933333333333L101.76 -32L74.6666666666667 -4.6933333333333L452.6933333333333 373.3333333333334L480 346.24M256 426.6666666666667C309.9733333333333 426.6666666666667 358.8266666666667 404.48 393.6 368.64L363.52 338.3466666666667C336.4266666666666 366.5066666666667 298.6666666666667 384 256 384C173.44 384 106.6666666666667 317.2266666666667 106.6666666666667 234.6666666666667V192H192V166.8266666666667L74.6666666666667 49.7066666666667C68.0533333333333 59.9466666666667 64 72.1066666666667 64 85.3333333333334V234.6666666666667C64 340.6933333333334 149.9733333333333 426.6666666666667 256 426.6666666666667M405.3333333333333 192V234.6666666666667C405.3333333333333 246.1866666666667 404.0533333333334 257.2800000000001 401.7066666666666 267.9466666666667L325.76 192H405.3333333333333z" /> + <glyph glyph-name="heart" + unicode="&#xF2D1;" + horiz-adv-x="512" d=" M256 -7.4666666666667L225.0666666666667 20.6933333333333C115.2 120.3200000000001 42.6666666666667 186.24 42.6666666666667 266.6666666666667C42.6666666666667 332.5866666666667 94.2933333333333 384 160 384C197.12 384 232.7466666666667 366.7200000000001 256 339.6266666666667C279.2533333333334 366.7200000000001 314.88 384 352 384C417.7066666666666 384 469.3333333333333 332.5866666666667 469.3333333333333 266.6666666666667C469.3333333333333 186.24 396.8 120.3200000000001 286.9333333333333 20.6933333333333L256 -7.4666666666667z" /> + <glyph glyph-name="heart-box" + unicode="&#xF2D2;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 85.3333333333334L271.36 99.4133333333334C326.4 149.3333333333334 362.6666666666667 182.1866666666667 362.6666666666667 222.5066666666667C362.6666666666667 255.36 336.8533333333333 281.1733333333334 304 281.1733333333334C285.44 281.1733333333334 267.7333333333334 272.4266666666667 256 258.7733333333333C244.2666666666667 272.4266666666667 226.56 281.1733333333333 208 281.1733333333333C175.1466666666667 281.1733333333334 149.3333333333333 255.36 149.3333333333333 222.5066666666667C149.3333333333333 182.1866666666667 185.6 149.3333333333334 240.64 99.4133333333334L256 85.3333333333334z" /> + <glyph glyph-name="heart-box-outline" + unicode="&#xF2D3;" + horiz-adv-x="512" d=" M256 85.3333333333334L240.64 99.4133333333334C185.6 149.3333333333334 149.3333333333333 182.1866666666667 149.3333333333333 222.5066666666667C149.3333333333333 255.36 175.1466666666667 281.1733333333334 208 281.1733333333334C226.56 281.1733333333334 244.2666666666667 272.4266666666667 256 258.7733333333333C267.7333333333334 272.4266666666667 285.44 281.1733333333333 304 281.1733333333333C336.8533333333333 281.1733333333333 362.6666666666667 255.36 362.6666666666667 222.5066666666667C362.6666666666667 182.1866666666667 326.4 149.3333333333334 271.36 99.4133333333334L256 85.3333333333334M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="heart-broken" + unicode="&#xF2D4;" + horiz-adv-x="512" d=" M256 -7.4666666666667L225.0666666666667 20.6933333333333C115.2 120.3200000000001 42.6666666666667 186.24 42.6666666666667 266.6666666666667C42.6666666666667 332.5866666666667 94.2933333333333 384 160 384C174.2933333333333 384 188.16 381.44 201.3866666666667 376.9600000000001L277.3333333333333 248.5333333333334L192 141.8666666666667L256 -7.4666666666667M352 384C417.7066666666666 384 469.3333333333333 332.5866666666667 469.3333333333333 266.6666666666667C469.3333333333333 186.24 396.8 120.3200000000001 286.9333333333333 20.6933333333333L256 -7.4666666666667L234.6666666666667 141.8666666666667L330.6666666666667 248.5333333333333L274.1333333333334 356.9066666666667C295.8933333333333 373.9733333333334 323.6266666666667 384 352 384z" /> + <glyph glyph-name="heart-outline" + unicode="&#xF2D5;" + horiz-adv-x="512" d=" M258.1333333333334 52.2666666666667L256 50.1333333333333L253.6533333333334 52.2666666666667C152.32 144.2133333333334 85.3333333333333 205.0133333333333 85.3333333333333 266.6666666666667C85.3333333333333 309.3333333333334 117.3333333333333 341.3333333333334 160 341.3333333333334C192.8533333333333 341.3333333333334 224.8533333333333 320 236.16 290.9866666666667H275.84C287.1466666666667 320 319.1466666666667 341.3333333333334 352 341.3333333333334C394.6666666666667 341.3333333333334 426.6666666666667 309.3333333333334 426.6666666666667 266.6666666666667C426.6666666666667 205.0133333333333 359.68 144.2133333333334 258.1333333333334 52.2666666666667M352 384C314.88 384 279.2533333333334 366.7200000000001 256 339.6266666666667C232.7466666666667 366.7200000000001 197.12 384 160 384C94.2933333333333 384 42.6666666666667 332.5866666666667 42.6666666666667 266.6666666666667C42.6666666666667 186.24 115.2 120.3200000000001 225.0666666666667 20.6933333333333L256 -7.4666666666667L286.9333333333333 20.6933333333333C396.8 120.3200000000001 469.3333333333333 186.24 469.3333333333333 266.6666666666667C469.3333333333333 332.5866666666667 417.7066666666666 384 352 384z" /> + <glyph glyph-name="heart-pulse" + unicode="&#xF5F6;" + horiz-adv-x="512" d=" M160 362.6666666666667C95.1466666666667 362.6666666666667 42.6666666666667 310.1866666666667 42.6666666666667 245.3333333333334C42.6666666666667 234.6666666666667 44.5866666666667 224 47.36 213.3333333333334H134.4L161.4933333333334 285.2266666666667C167.8933333333333 302.2933333333334 193.0666666666667 304 201.1733333333333 285.2266666666667L245.3333333333333 170.6666666666667L257.92 200.96C260.6933333333334 208 268.16 213.3333333333334 277.3333333333333 213.3333333333334H464.64C467.4133333333333 224 469.3333333333333 234.6666666666667 469.3333333333333 245.3333333333334C469.3333333333333 310.1866666666667 416.8533333333333 362.6666666666667 352 362.6666666666667C312.32 362.6666666666667 277.3333333333333 342.8266666666667 256 312.7466666666667C234.6666666666667 342.8266666666667 199.68 362.6666666666667 160 362.6666666666667M64 181.3333333333334C52.2666666666667 181.3333333333334 42.6666666666667 171.7333333333334 42.6666666666667 160S52.2666666666667 138.6666666666667 64 138.6666666666667H116.0533333333333L234.6666666666667 21.3333333333334C256 2.1333333333334 256 2.1333333333334 277.3333333333333 21.3333333333334L395.9466666666666 138.6666666666667H448C459.7333333333333 138.6666666666667 469.3333333333333 148.2666666666667 469.3333333333333 160S459.7333333333333 181.3333333333334 448 181.3333333333334H285.8666666666667L266.0266666666667 132.2666666666667C257.4933333333334 110.72 232.96 113.7066666666667 225.0666666666667 131.6266666666667L181.3333333333333 245.3333333333334L160.8533333333333 195.6266666666667C157.6533333333333 187.52 150.4 181.3333333333334 140.8 181.3333333333334H64z" /> + <glyph glyph-name="help" + unicode="&#xF2D6;" + horiz-adv-x="512" d=" M213.3333333333333 42.6666666666667H277.3333333333333V-21.3333333333333H213.3333333333333V42.6666666666667M256 405.3333333333333C370.1333333333334 400.64 419.84 285.44 352 199.04C334.2933333333333 177.7066666666667 305.7066666666667 163.6266666666667 291.6266666666667 145.7066666666667C277.3333333333333 128 277.3333333333333 106.6666666666667 277.3333333333333 85.3333333333334H213.3333333333333C213.3333333333333 120.96 213.3333333333333 151.04 227.6266666666667 172.3733333333333C241.7066666666667 193.7066666666667 270.2933333333333 206.2933333333334 288 220.3733333333333C339.6266666666667 268.1600000000001 326.8266666666667 335.7866666666667 256 341.3333333333334C220.5866666666667 341.3333333333334 192 312.7466666666667 192 277.3333333333334H128C128 347.9466666666667 185.3866666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="help-circle" + unicode="&#xF2D7;" + horiz-adv-x="512" d=" M321.4933333333334 208L302.2933333333333 188.3733333333333C286.9333333333333 173.0133333333333 277.3333333333333 160 277.3333333333333 128H234.6666666666667V138.6666666666667C234.6666666666667 162.3466666666667 244.2666666666667 183.68 259.6266666666667 199.04L286.08 225.92C293.9733333333333 233.6 298.6666666666667 244.2666666666667 298.6666666666667 256C298.6666666666667 279.68 279.4666666666667 298.6666666666667 256 298.6666666666667S213.3333333333333 279.4666666666667 213.3333333333333 256H170.6666666666667C170.6666666666667 303.1466666666667 208.8533333333333 341.3333333333334 256 341.3333333333334S341.3333333333333 303.1466666666667 341.3333333333333 256C341.3333333333333 237.2266666666667 333.6533333333333 220.3733333333333 321.4933333333334 208M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="help-circle-outline" + unicode="&#xF625;" + horiz-adv-x="512" d=" M234.6666666666667 64H277.3333333333333V106.6666666666667H234.6666666666667V64M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667H213.3333333333333C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334S298.6666666666667 258.1333333333334 298.6666666666667 234.6666666666667C298.6666666666667 192 234.6666666666667 197.3333333333334 234.6666666666667 128H277.3333333333333C277.3333333333333 176 341.3333333333333 181.3333333333334 341.3333333333333 234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320z" /> + <glyph glyph-name="hexagon" + unicode="&#xF2D8;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96z" /> + <glyph glyph-name="hexagon-outline" + unicode="&#xF2D9;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="highway" + unicode="&#xF5F7;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333L170.6666666666667 277.3333333333334H234.6666666666667V405.3333333333333H213.3333333333333M277.3333333333333 405.3333333333333V277.3333333333334H341.3333333333333L298.6666666666667 405.3333333333333H277.3333333333333M42.6666666666667 256V234.6666666666667H85.3333333333333V213.3333333333334H128V234.6666666666667H384L385.28 213.3333333333334H426.6666666666667V234.6666666666667H469.3333333333333V256H42.6666666666667M149.3333333333333 213.3333333333334L71.2533333333333 -21.3333333333333H234.6666666666667V213.3333333333334H149.3333333333333M277.3333333333333 213.3333333333334V-21.3333333333333H440.7466666666667L362.6666666666667 213.3333333333334H277.3333333333333z" /> + <glyph glyph-name="history" + unicode="&#xF2DA;" + horiz-adv-x="512" d=" M234.6666666666667 298.6666666666667V189.6533333333334L335.1466666666667 130.1333333333334L352 157.4400000000001L266.6666666666667 208V298.6666666666667M266.6666666666667 405.3333333333333C191.36 405.3333333333333 126.08 364.3733333333334 91.0933333333333 303.5733333333334L42.6666666666667 352V213.3333333333334H181.3333333333333L122.6666666666667 272C148.48 325.76 202.6666666666667 362.6666666666667 266.6666666666667 362.6666666666667C354.9866666666667 362.6666666666667 426.6666666666667 290.9866666666667 426.6666666666667 202.6666666666667C426.6666666666667 114.3466666666667 354.9866666666667 42.6666666666667 266.6666666666667 42.6666666666667C196.9066666666667 42.6666666666667 138.0266666666667 87.2533333333333 116.0533333333334 149.3333333333334H71.2533333333333C94.72 63.36 173.0133333333333 0 266.6666666666667 0C378.4533333333334 0 469.3333333333333 90.6666666666667 469.3333333333333 202.6666666666667S378.6666666666667 405.3333333333333 266.6666666666667 405.3333333333333z" /> + <glyph glyph-name="hololens" + unicode="&#xF2DB;" + horiz-adv-x="512" d=" M256 277.3333333333334S469.3333333333333 277.3333333333334 469.3333333333333 213.3333333333334C469.3333333333333 213.3333333333334 471.2533333333333 141.6533333333334 464 144C448 213.3333333333334 256 213.3333333333334 256 213.3333333333334S64 213.3333333333334 48 144C40.7466666666667 141.6533333333334 42.6666666666667 213.3333333333334 42.6666666666667 213.3333333333334C42.6666666666667 277.3333333333334 256 277.3333333333334 256 277.3333333333334M256 192C426.6666666666667 192 442.6666666666667 144 442.6666666666667 144C421.3333333333333 80 405.3333333333333 64 320 64C256 64 277.3333333333333 96 256 96S256 64 192 64C106.6666666666667 64 90.6666666666667 80 69.3333333333333 144C69.3333333333333 144 85.3333333333333 192 256 192z" /> + <glyph glyph-name="home" + unicode="&#xF2DC;" + horiz-adv-x="512" d=" M213.3333333333333 21.3333333333334V149.3333333333334H298.6666666666667V21.3333333333334H405.3333333333333V192H469.3333333333333L256 384L42.6666666666667 192H106.6666666666667V21.3333333333334H213.3333333333333z" /> + <glyph glyph-name="home-map-marker" + unicode="&#xF5F8;" + horiz-adv-x="512" d=" M256 384L42.6666666666667 192H106.6666666666667V21.3333333333334H405.3333333333333V192H469.3333333333333L256 384M256 283.7333333333334C300.8 283.7333333333334 337.0666666666667 247.4666666666667 337.0666666666667 202.6666666666667C337.0666666666667 138.6666666666667 256 64 256 64S174.9333333333333 138.6666666666667 174.9333333333333 202.6666666666667C174.9333333333333 247.4666666666667 211.2 283.7333333333334 256 283.7333333333334M256 234.6666666666667C238.2933333333333 234.6666666666667 224 220.3733333333333 224 202.6666666666667S238.2933333333333 170.6666666666667 256 170.6666666666667S288 184.96 288 202.6666666666667S273.7066666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="home-modern" + unicode="&#xF2DD;" + horiz-adv-x="512" d=" M128 0V277.3333333333334C128 300.8 147.2 320 170.6666666666667 320L341.3333333333333 384V320C364.8 320 384 300.8 384 277.3333333333334V0H256V106.6666666666667H170.6666666666667V0H128M298.6666666666667 42.6666666666667H341.3333333333333V106.6666666666667H298.6666666666667V42.6666666666667M170.6666666666667 170.6666666666667H213.3333333333333V256H170.6666666666667V170.6666666666667M256 170.6666666666667H341.3333333333333V256H256V170.6666666666667z" /> + <glyph glyph-name="home-variant" + unicode="&#xF2DE;" + horiz-adv-x="512" d=" M170.6666666666667 21.3333333333334H106.6666666666667V192H42.6666666666667L256 384L469.3333333333333 192H405.3333333333333V21.3333333333334H256V149.3333333333334H170.6666666666667V21.3333333333334M298.6666666666667 149.3333333333334V85.3333333333334H362.6666666666667V149.3333333333334H298.6666666666667z" /> + <glyph glyph-name="hops" + unicode="&#xF2DF;" + horiz-adv-x="512" d=" M448 192S266.6666666666667 234.6666666666667 266.6666666666667 405.3333333333333C266.6666666666667 405.3333333333333 448 405.3333333333333 448 192M64 192C64 405.3333333333333 245.3333333333333 405.3333333333333 245.3333333333333 405.3333333333333C245.3333333333333 234.6666666666667 64 192 64 192M256 309.3333333333334S277.3333333333333 263.2533333333334 320 224C314.88 145.92 256 106.6666666666667 256 106.6666666666667S197.12 145.92 192 224C234.6666666666667 263.2533333333334 256 309.3333333333334 256 309.3333333333334M442.6666666666667 165.3333333333334S426.6666666666667 85.3333333333334 384 42.6666666666667C384 42.6666666666667 331.3066666666666 77.6533333333334 305.7066666666667 132.0533333333334C321.0666666666667 158.2933333333334 330.6666666666667 189.4400000000001 336 210.56C365.44 188.16 400 170.6666666666667 442.6666666666667 165.3333333333334M330.6666666666667 58.6666666666667C309.3333333333333 16 256 -16 256 -16S202.6666666666667 16 181.3333333333333 58.6666666666667C181.3333333333333 58.6666666666667 204.5866666666667 78.08 220.8 110.9333333333333C230.8266666666667 99.2 242.3466666666667 89.8133333333334 256 85.3333333333334C269.6533333333333 89.8133333333334 281.1733333333333 99.2 291.2 110.9333333333333C307.4133333333333 78.08 330.6666666666667 58.6666666666667 330.6666666666667 58.6666666666667M69.3333333333333 165.3333333333334C112 170.6666666666667 146.56 188.16 176 210.56C181.3333333333333 189.4400000000001 190.9333333333333 158.2933333333334 206.2933333333333 132.0533333333334C180.6933333333333 77.6533333333334 128 42.6666666666667 128 42.6666666666667C85.3333333333333 85.3333333333334 69.3333333333333 165.3333333333334 69.3333333333333 165.3333333333334z" /> + <glyph glyph-name="hospital" + unicode="&#xF2E0;" + horiz-adv-x="512" d=" M384 149.3333333333334H298.6666666666667V64H213.3333333333333V149.3333333333334H128V234.6666666666667H213.3333333333333V320H298.6666666666667V234.6666666666667H384M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="hospital-building" + unicode="&#xF2E1;" + horiz-adv-x="512" d=" M42.6666666666667 -21.3333333333333V298.6666666666667C42.6666666666667 310.4 52.2666666666667 320 64 320H149.3333333333333V405.3333333333333H362.6666666666667V320H448C459.7333333333333 320 469.3333333333333 310.4 469.3333333333333 298.6666666666667V-21.3333333333333H298.6666666666667V85.3333333333334H213.3333333333333V-21.3333333333333H42.6666666666667M192 362.6666666666667V234.6666666666667H234.6666666666667V277.3333333333334H277.3333333333333V234.6666666666667H320V362.6666666666667H277.3333333333333V320H234.6666666666667V362.6666666666667H192M85.3333333333333 21.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V21.3333333333334M85.3333333333333 128H170.6666666666667V192H85.3333333333333V128M341.3333333333333 21.3333333333334H426.6666666666667V85.3333333333334H341.3333333333333V21.3333333333334M341.3333333333333 128H426.6666666666667V192H341.3333333333333V128M213.3333333333333 128H298.6666666666667V192H213.3333333333333V128z" /> + <glyph glyph-name="hospital-marker" + unicode="&#xF2E2;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.3466666666667 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 144 256 -21.3333333333333 256 -21.3333333333333S106.6666666666667 144 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333M192 320V192H234.6666666666667V234.6666666666667H277.3333333333333V192H320V320H277.3333333333333V277.3333333333334H234.6666666666667V320H192z" /> + <glyph glyph-name="hotel" + unicode="&#xF2E3;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667H234.6666666666667V149.3333333333334H64V341.3333333333334H21.3333333333333V21.3333333333334H64V85.3333333333334H448V21.3333333333334H490.6666666666666V213.3333333333334C490.6666666666666 260.48 452.48 298.6666666666667 405.3333333333333 298.6666666666667M149.3333333333333 170.6666666666667C184.7466666666667 170.6666666666667 213.3333333333333 199.2533333333333 213.3333333333333 234.6666666666667S184.7466666666667 298.6666666666667 149.3333333333333 298.6666666666667S85.3333333333333 270.0800000000001 85.3333333333333 234.6666666666667S113.92 170.6666666666667 149.3333333333333 170.6666666666667z" /> + <glyph glyph-name="houzz" + unicode="&#xF2E4;" + horiz-adv-x="512" d=" M256 -64V106.6666666666667L108.8 21.3333333333334V362.6666666666667L256 448V277.3333333333334L108.8 192L256 106.6666666666667V277.3333333333334L403.2 362.6666666666667V21.3333333333334L256 -64z" /> + <glyph glyph-name="houzz-box" + unicode="&#xF2E5;" + horiz-adv-x="512" d=" M256 362.6666666666667L158.08 305.28V192L256 249.6V362.6666666666667M256 249.6V21.3333333333334L353.92 78.72V307.2000000000001L256 249.6M256 134.4L158.08 192V76.8000000000001L256 134.4M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="human" + unicode="&#xF2E6;" + horiz-adv-x="512" d=" M448 256H320V-21.3333333333333H277.3333333333333V106.6666666666667H234.6666666666667V-21.3333333333333H192V256H64V298.6666666666667H448M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320C232.32 320 213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667C213.3333333333333 386.3466666666667 232.32 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="human-child" + unicode="&#xF2E7;" + horiz-adv-x="512" d=" M256 405.3333333333333C291.4133333333333 405.3333333333333 320 376.7466666666667 320 341.3333333333334S291.4133333333333 277.3333333333334 256 277.3333333333334S192 305.92 192 341.3333333333334S220.5866666666667 405.3333333333333 256 405.3333333333333M234.6666666666667 -21.3333333333333H170.6666666666667V106.6666666666667H128V256H384V106.6666666666667H341.3333333333333V-21.3333333333333H277.3333333333333V64H234.6666666666667V-21.3333333333333z" /> + <glyph glyph-name="human-female" + unicode="&#xF649;" + horiz-adv-x="512" d=" M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320S213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333M224 -21.3333333333333V106.6666666666667H160L215.2533333333333 268.5866666666667C220.5866666666667 286.0800000000001 236.8 298.6666666666667 256 298.6666666666667C275.2 298.6666666666667 291.4133333333333 286.0800000000001 296.7466666666667 268.5866666666667L352 106.6666666666667H288V-21.3333333333333H224z" /> + <glyph glyph-name="human-greeting" + unicode="&#xF64A;" + horiz-adv-x="512" d=" M32 362.6666666666667V330.6666666666667C32 242.1333333333334 79.1466666666667 164.6933333333333 149.3333333333333 121.6V21.3333333333334H469.3333333333333V64C469.3333333333333 120.7466666666667 355.6266666666667 149.3333333333334 298.6666666666667 149.3333333333334H293.3333333333333C192 149.3333333333334 106.6666666666667 234.6666666666667 106.6666666666667 330.6666666666667V362.6666666666667M298.6666666666667 362.6666666666667C251.52 362.6666666666667 213.3333333333333 324.48 213.3333333333333 277.3333333333334S251.52 192 298.6666666666667 192S384 230.1866666666667 384 277.3333333333334S345.8133333333334 362.6666666666667 298.6666666666667 362.6666666666667z" /> + <glyph glyph-name="human-handsdown" + unicode="&#xF64B;" + horiz-adv-x="512" d=" M256 426.6666666666667C232.32 426.6666666666667 213.3333333333333 407.4666666666667 213.3333333333333 384C213.3333333333333 360.32 232.32 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 360.32 298.6666666666667 384C298.6666666666667 407.4666666666667 279.4666666666667 426.6666666666667 256 426.6666666666667M213.3333333333333 320C207.5733333333333 320 202.6666666666667 317.6533333333333 198.6133333333334 314.0266666666667H198.4L85.3333333333333 200.7466666666667L115.6266666666667 170.6666666666667L192 247.2533333333334V-21.3333333333333H234.6666666666667V128H277.3333333333333V-21.3333333333333H320V247.2533333333334L396.3733333333333 170.6666666666667L426.6666666666667 200.7466666666667L313.6 314.0266666666667C309.3333333333333 317.6533333333333 304.4266666666666 320 298.6666666666667 320" /> + <glyph glyph-name="human-handsup" + unicode="&#xF64C;" + horiz-adv-x="512" d=" M106.6666666666667 426.6666666666667C106.6666666666667 369.0666666666667 139.9466666666667 316.5866666666667 192 291.8400000000001V-21.3333333333333H234.6666666666667V128H277.3333333333333V-21.3333333333333H320V292.0533333333334C372.0533333333334 316.5866666666667 405.3333333333333 369.0666666666667 405.3333333333333 426.6666666666667H362.6666666666667C362.6666666666667 367.7866666666667 314.88 320 256 320S149.3333333333333 367.7866666666667 149.3333333333333 426.6666666666667M256 426.6666666666667C232.32 426.6666666666667 213.3333333333333 407.68 213.3333333333333 384C213.3333333333333 360.32 232.32 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 360.32 298.6666666666667 384C298.6666666666667 407.68 279.68 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="human-male" + unicode="&#xF64D;" + horiz-adv-x="512" d=" M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320S213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333M224 298.6666666666667H288C311.4666666666667 298.6666666666667 330.6666666666667 279.4666666666667 330.6666666666667 256V138.6666666666667H298.6666666666667V-21.3333333333333H213.3333333333333V138.6666666666667H181.3333333333333V256C181.3333333333333 279.4666666666667 200.5333333333333 298.6666666666667 224 298.6666666666667z" /> + <glyph glyph-name="human-male-female" + unicode="&#xF2E8;" + horiz-adv-x="512" d=" M160 405.3333333333333C183.4666666666667 405.3333333333333 202.6666666666667 386.1333333333334 202.6666666666667 362.6666666666667S183.4666666666667 320 160 320S117.3333333333333 339.2000000000001 117.3333333333333 362.6666666666667S136.5333333333333 405.3333333333333 160 405.3333333333333M128 298.6666666666667H192C215.4666666666667 298.6666666666667 234.6666666666667 279.4666666666667 234.6666666666667 256V138.6666666666667H202.6666666666667V-21.3333333333333H117.3333333333333V138.6666666666667H85.3333333333333V256C85.3333333333333 279.4666666666667 104.5333333333333 298.6666666666667 128 298.6666666666667M352 405.3333333333333C375.4666666666667 405.3333333333333 394.6666666666667 386.1333333333334 394.6666666666667 362.6666666666667S375.4666666666667 320 352 320S309.3333333333333 339.2000000000001 309.3333333333333 362.6666666666667S328.5333333333333 405.3333333333333 352 405.3333333333333M320 -21.3333333333333V106.6666666666667H256L311.2533333333334 268.5866666666667C316.5866666666667 286.0800000000001 332.8 298.6666666666667 352 298.6666666666667C371.2 298.6666666666667 387.4133333333333 286.0800000000001 392.7466666666667 268.5866666666667L448 106.6666666666667H384V-21.3333333333333H320z" /> + <glyph glyph-name="human-pregnant" + unicode="&#xF5CF;" + horiz-adv-x="512" d=" M192 362.6666666666667C192 386.3466666666667 210.9866666666667 405.3333333333333 234.6666666666667 405.3333333333333C258.3466666666667 405.3333333333333 277.3333333333333 386.3466666666667 277.3333333333333 362.6666666666667C277.3333333333333 338.9866666666667 258.3466666666667 320 234.6666666666667 320C210.9866666666667 320 192 338.9866666666667 192 362.6666666666667M341.3333333333333 170.6666666666667C341.3333333333333 199.2533333333333 323.6266666666667 224 298.6666666666667 234.6666666666667C298.6666666666667 270.0800000000001 270.08 298.6666666666667 234.6666666666667 298.6666666666667S170.6666666666667 270.0800000000001 170.6666666666667 234.6666666666667V85.3333333333334H213.3333333333333V-21.3333333333333H277.3333333333333V85.3333333333334H341.3333333333333V170.6666666666667z" /> + <glyph glyph-name="image" + unicode="&#xF2E9;" + horiz-adv-x="512" d=" M181.3333333333333 160L234.6666666666667 96L309.3333333333333 192L405.3333333333333 64H106.6666666666667M448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667z" /> + <glyph glyph-name="image-album" + unicode="&#xF2EA;" + horiz-adv-x="512" d=" M128 42.6666666666667L192 125.0133333333333L237.6533333333334 69.9733333333334L301.6533333333333 152.3200000000001L384 42.6666666666667H128M128 362.6666666666667H234.6666666666667V192L181.3333333333333 224L128 192M384 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="image-area" + unicode="&#xF2EB;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.3466666666667 61.6533333333333 341.3333333333334 85.3333333333333 341.3333333333334H426.6666666666667M106.6666666666667 106.6666666666667H405.3333333333333L309.3333333333333 234.6666666666667L234.6666666666667 138.6666666666667L181.3333333333333 202.6666666666667L106.6666666666667 106.6666666666667z" /> + <glyph glyph-name="image-area-close" + unicode="&#xF2EC;" + horiz-adv-x="512" d=" M256 -42.6666666666666L170.6666666666667 42.6666666666667H341.3333333333333L256 -42.6666666666666M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V128C469.3333333333333 104.5333333333333 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384H426.6666666666667M106.6666666666667 149.3333333333334H405.3333333333333L309.3333333333333 277.3333333333334L234.6666666666667 181.3333333333334L181.3333333333333 245.3333333333334L106.6666666666667 149.3333333333334z" /> + <glyph glyph-name="image-broken" + unicode="&#xF2ED;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V213.3333333333334H405.3333333333333V170.6666666666667H362.6666666666667V128H320V85.3333333333334H277.3333333333333V42.6666666666667H234.6666666666667V0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M448 128V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H320V42.6666666666667H362.6666666666667V85.3333333333334H405.3333333333333V128H448M405.3333333333333 266.6666666666667C405.3333333333333 272.64 400.64 277.3333333333334 394.6666666666667 277.3333333333334H117.3333333333333C111.36 277.3333333333334 106.6666666666667 272.64 106.6666666666667 266.6666666666667V117.3333333333334C106.6666666666667 111.36 111.36 106.6666666666667 117.3333333333333 106.6666666666667H234.6666666666667V128H277.3333333333333V170.6666666666667H320V213.3333333333334H362.6666666666667V256H405.3333333333333V266.6666666666667z" /> + <glyph glyph-name="image-broken-variant" + unicode="&#xF2EE;" + horiz-adv-x="512" d=" M448 341.3333333333334V200.7466666666667L384 264.9600000000001L298.6666666666667 179.4133333333334L213.3333333333333 264.7466666666667L128 179.4133333333334L64 243.6266666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334M384 204.3733333333333L448 140.16V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V183.04L128 119.2533333333333L213.3333333333333 204.5866666666667L298.6666666666667 119.2533333333333" /> + <glyph glyph-name="image-filter" + unicode="&#xF2EF;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M340.48 228.48L281.8133333333334 152.96L240 203.3066666666667L181.3333333333333 128H416L340.48 228.48z" /> + <glyph glyph-name="image-filter-black-white" + unicode="&#xF2F0;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667L256 213.3333333333334V42.6666666666667H106.6666666666667L256 213.3333333333334V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="image-filter-center-focus" + unicode="&#xF2F1;" + horiz-adv-x="512" d=" M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M106.6666666666667 341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V256H106.6666666666667M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667V128z" /> + <glyph glyph-name="image-filter-center-focus-weak" + unicode="&#xF2F2;" + horiz-adv-x="512" d=" M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667M106.6666666666667 341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V256H106.6666666666667M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192S208.8533333333333 106.6666666666667 256 106.6666666666667S341.3333333333333 144.8533333333334 341.3333333333333 192S303.1466666666667 277.3333333333334 256 277.3333333333334M256 149.3333333333334C232.5333333333334 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="image-filter-drama" + unicode="&#xF2F3;" + horiz-adv-x="512" d=" M405.3333333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667S213.3333333333333 196.48 213.3333333333333 149.3333333333334H256C256 208.2133333333334 216.32 257.7066666666667 162.1333333333333 272.6400000000001C183.68 301.2266666666667 217.6 320 256 320C320.64 320 373.3333333333333 267.3066666666667 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128S440.7466666666667 64 405.3333333333333 64M412.8 233.8133333333334C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 141.0133333333333 327.68 114.3466666666667 276.48C50.1333333333333 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 233.8133333333334z" /> + <glyph glyph-name="image-filter-frames" + unicode="&#xF2F4;" + horiz-adv-x="512" d=" M384 277.3333333333334H128V64H384M426.6666666666667 21.3333333333334H85.3333333333333V320H181.3333333333333L256.8533333333333 394.6666666666667L330.6666666666667 320H426.6666666666667M426.6666666666667 362.6666666666667H341.3333333333333L256 448L170.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="image-filter-hdr" + unicode="&#xF2F5;" + horiz-adv-x="512" d=" M298.6666666666667 320L218.6666666666667 213.3333333333334L279.4666666666667 132.2666666666667L245.3333333333333 106.6666666666667C209.28 154.6666666666667 149.3333333333333 234.6666666666667 149.3333333333333 234.6666666666667L21.3333333333333 64H490.6666666666666L298.6666666666667 320z" /> + <glyph glyph-name="image-filter-none" + unicode="&#xF2F6;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="image-filter-tilt-shift" + unicode="&#xF2F7;" + horiz-adv-x="512" d=" M121.1733333333333 26.8800000000001C152.7466666666667 1.0666666666667 192 -16 234.6666666666667 -20.2666666666666V22.8266666666667C203.52 26.6666666666667 175.1466666666667 39.0400000000001 151.4666666666667 57.3866666666667M277.3333333333333 22.8266666666667V-20.2666666666666C320 -16 359.2533333333334 1.0666666666667 390.8266666666667 26.8800000000001L360.32 57.3866666666667C336.8533333333334 39.0400000000001 308.48 26.6666666666667 277.3333333333333 22.8266666666667M390.6133333333333 87.4666666666667L421.12 56.96C446.9333333333333 88.5333333333334 464 128.0000000000001 468.2666666666667 170.6666666666668H425.1733333333333C421.3333333333333 139.5200000000001 408.9599999999999 111.1466666666667 390.6133333333333 87.4666666666667M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192M86.8266666666667 170.6666666666667H43.7333333333333C48 128 65.0666666666667 88.7466666666667 90.88 57.1733333333334L121.3866666666667 87.68C103.04 111.1466666666667 90.6666666666667 139.52 86.8266666666667 170.6666666666667M121.3866666666667 296.5333333333334L90.88 326.8266666666667C65.0666666666667 295.2533333333334 48 256 43.7333333333333 213.3333333333334H86.8266666666667C90.6666666666667 244.48 103.04 272.8533333333334 121.3866666666667 296.5333333333334M425.1733333333333 213.3333333333334H468.2666666666667C464 256 446.9333333333333 295.2533333333334 421.12 326.8266666666667L390.6133333333333 296.5333333333334C408.9599999999999 272.8533333333334 421.3333333333333 244.48 425.1733333333333 213.3333333333334M390.8266666666667 357.12C359.2533333333334 382.9333333333334 320 400 277.3333333333333 404.2666666666667V361.1733333333334C308.48 357.3333333333334 336.8533333333333 344.9600000000001 360.5333333333333 326.6133333333334M234.6666666666667 361.1733333333334V404.2666666666667C192 400 152.7466666666667 382.9333333333334 121.1733333333333 357.12L151.4666666666667 326.6133333333334C175.1466666666667 344.9600000000001 203.52 357.3333333333334 234.6666666666667 361.1733333333334z" /> + <glyph glyph-name="image-filter-vintage" + unicode="&#xF2F8;" + horiz-adv-x="512" d=" M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667M398.9333333333333 183.4666666666667C392.9599999999999 186.88 386.7733333333333 189.6533333333333 380.5866666666667 192C386.7733333333333 194.3466666666667 392.9599999999999 197.12 398.9333333333333 200.5333333333334C439.8933333333333 224 462.7199999999999 266.6666666666667 462.9333333333333 311.2533333333334C424.7466666666667 333.2266666666667 376.1066666666667 334.9333333333334 334.9333333333333 311.2533333333334C328.96 307.8400000000001 323.4133333333333 303.7866666666667 318.2933333333333 299.7333333333334C319.36 306.3466666666667 320 313.1733333333334 320 320C320 367.36 294.1866666666666 408.5333333333334 256 430.7200000000001C217.8133333333333 408.5333333333333 192 367.36 192 320C192 313.1733333333334 192.64 306.3466666666667 193.7066666666667 299.7333333333334C188.5866666666667 304 183.04 308.0533333333334 177.0666666666667 311.4666666666667C136.1066666666667 335.1466666666667 87.4666666666667 333.44 49.0666666666667 311.4666666666667C49.0666666666667 267.3066666666667 71.8933333333334 224 113.0666666666667 200.7466666666667C119.04 197.3333333333334 125.2266666666667 194.56 131.4133333333334 192C125.2266666666667 189.8666666666667 119.04 187.0933333333334 113.0666666666667 183.68C72.1066666666667 160 49.28 117.3333333333334 49.0666666666667 72.96C87.2533333333334 50.9866666666666 135.8933333333334 49.28 177.0666666666667 72.96C183.04 76.3733333333333 188.5866666666667 80.4266666666667 193.7066666666667 84.48C192.64 77.6533333333333 192 70.8266666666666 192 63.9999999999999C192 16.64 217.8133333333333 -24.5333333333334 256 -46.7200000000001C294.1866666666666 -24.5333333333334 320 16.6399999999999 320 63.9999999999999C320 70.8266666666666 319.36 77.6533333333333 318.2933333333333 84.2666666666666C323.4133333333333 79.9999999999999 328.96 76.16 334.9333333333333 72.7466666666666C375.8933333333333 49.0666666666666 424.5333333333333 50.7733333333333 462.9333333333333 72.7466666666666C462.7199999999999 117.3333333333333 439.8933333333333 160 398.9333333333333 183.4666666666667z" /> + <glyph glyph-name="image-multiple" + unicode="&#xF2F9;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667M234.6666666666667 192L277.9733333333333 134.1866666666667L341.3333333333333 213.3333333333334L426.6666666666667 106.6666666666667H170.6666666666667M42.6666666666667 320V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320" /> + <glyph glyph-name="import" + unicode="&#xF2FA;" + horiz-adv-x="512" d=" M298.6666666666667 192L213.3333333333333 277.3333333333334V213.3333333333334H42.6666666666667V170.6666666666667H213.3333333333333V106.6666666666667M426.6666666666667 64V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V256H128V320H384V64H128V128H85.3333333333333V64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64z" /> + <glyph glyph-name="inbox" + unicode="&#xF2FB;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667H170.6666666666667L256 149.3333333333334M405.3333333333333 128H320C320 92.5866666666667 291.4133333333333 64 256 64S192 92.5866666666667 192 128H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="incognito" + unicode="&#xF5F9;" + horiz-adv-x="512" d=" M256 384C198.6133333333334 384 158.08 357.9733333333334 158.08 357.9733333333334L128 256H384L353.92 357.9733333333334S313.3866666666667 384 256 384M256 213.3333333333334C197.76 213.3333333333334 114.9866666666667 201.8133333333334 109.44 200.7466666666667C87.2533333333333 194.7733333333334 69.3333333333333 188.8 55.2533333333333 183.2533333333333C33.7066666666667 176 21.3333333333333 170.6666666666667 21.3333333333333 170.6666666666667H490.6666666666666S478.2933333333334 176 456.7466666666667 183.2533333333333C442.6666666666667 188.8 424.32 194.7733333333333 401.92 200.7466666666667C401.92 200.7466666666667 316.16 213.3333333333334 256 213.3333333333334M160 149.3333333333334C118.8266666666667 149.3333333333334 85.3333333333333 115.84 85.3333333333333 74.6666666666667S118.8266666666667 0 160 0S234.6666666666667 33.4933333333333 234.6666666666667 74.6666666666667C234.6666666666667 78.08 234.6666666666667 81.4933333333333 234.0266666666667 84.6933333333333C240.8533333333334 86.1866666666667 248.1066666666667 87.4666666666666 256 87.2533333333333C263.8933333333333 87.2533333333333 271.1466666666667 86.1866666666667 277.9733333333333 84.6933333333333C277.3333333333333 81.4933333333333 277.3333333333333 78.08 277.3333333333333 74.6666666666667C277.3333333333333 33.4933333333333 310.8266666666667 0 352 0S426.6666666666667 33.4933333333333 426.6666666666667 74.6666666666667S393.1733333333333 149.3333333333334 352 149.3333333333334C320.64 149.3333333333334 293.76 130.1333333333333 282.6666666666667 102.6133333333334C275.84 104.7466666666667 267.7333333333334 106.6666666666667 256 106.6666666666667S236.16 104.7466666666667 229.3333333333333 102.6133333333334C218.24 130.1333333333333 191.36 149.3333333333334 160 149.3333333333334M160 128C189.44 128 213.3333333333333 104.1066666666667 213.3333333333333 74.6666666666667S189.44 21.3333333333334 160 21.3333333333334S106.6666666666667 45.2266666666667 106.6666666666667 74.6666666666667S130.56 128 160 128M352 128C381.44 128 405.3333333333333 104.1066666666667 405.3333333333333 74.6666666666667S381.44 21.3333333333334 352 21.3333333333334S298.6666666666667 45.2266666666667 298.6666666666667 74.6666666666667S322.56 128 352 128z" /> + <glyph glyph-name="information" + unicode="&#xF2FC;" + horiz-adv-x="512" d=" M277.3333333333333 256H234.6666666666667V298.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V213.3333333333334H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="information-outline" + unicode="&#xF2FD;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V213.3333333333334H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="information-variant" + unicode="&#xF64E;" + horiz-adv-x="512" d=" M288 362.6666666666667C270.2933333333333 362.6666666666667 256 348.3733333333334 256 330.6666666666667S270.2933333333333 298.6666666666667 288 298.6666666666667S320 312.9600000000001 320 330.6666666666667S305.7066666666667 362.6666666666667 288 362.6666666666667M280.32 260.9066666666667C254.9333333333334 258.7733333333334 185.6 203.5200000000001 185.6 203.5200000000001C181.3333333333333 200.32 182.6133333333333 200.5333333333334 186.0266666666667 194.56C189.44 188.8000000000001 189.0133333333333 188.3733333333334 193.0666666666666 191.1466666666667C197.3333333333333 193.9200000000001 204.3733333333333 198.4 216.1066666666666 205.6533333333334C261.3333333333333 234.6666666666667 223.36 167.6800000000001 203.9466666666666 54.8266666666667C196.2666666666667 -1.0666666666667 246.6133333333333 27.7333333333334 259.6266666666666 36.2666666666667C272.4266666666666 44.5866666666667 306.7733333333333 68.2666666666667 310.1866666666666 70.6133333333334C314.88 73.8133333333333 311.4666666666667 76.3733333333333 307.84 81.7066666666667C305.28 85.3333333333334 302.72 82.7733333333333 302.72 82.7733333333333C288.8533333333333 73.6 263.4666666666667 54.4 260.0533333333333 66.56C256 78.72 282.0266666666667 162.1333333333333 296.32 219.52C298.6666666666667 233.1733333333333 305.0666666666666 263.04 280.32 260.9066666666667z" /> + <glyph glyph-name="instagram" + unicode="&#xF2FE;" + horiz-adv-x="512" d=" M166.4 405.3333333333333H345.6C413.8666666666666 405.3333333333333 469.3333333333333 349.8666666666667 469.3333333333333 281.6V102.4C469.3333333333333 34.1333333333334 413.8666666666666 -21.3333333333333 345.6 -21.3333333333333H166.4C98.1333333333333 -21.3333333333333 42.6666666666667 34.1333333333334 42.6666666666667 102.4V281.6C42.6666666666667 349.8666666666667 98.1333333333333 405.3333333333333 166.4 405.3333333333333M162.1333333333333 362.6666666666667C119.68 362.6666666666667 85.3333333333333 328.32 85.3333333333333 285.8666666666667V98.1333333333334C85.3333333333333 55.68 119.68 21.3333333333334 162.1333333333333 21.3333333333334H349.8666666666666C392.32 21.3333333333334 426.6666666666667 55.68 426.6666666666667 98.1333333333334V285.8666666666667C426.6666666666667 328.32 392.32 362.6666666666667 349.8666666666666 362.6666666666667H162.1333333333333M368 330.6666666666667C382.7200000000001 330.6666666666667 394.6666666666667 318.7200000000001 394.6666666666667 304S382.7200000000001 277.3333333333334 368 277.3333333333334S341.3333333333333 289.28 341.3333333333333 304S353.28 330.6666666666667 368 330.6666666666667M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334S149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256z" /> + <glyph glyph-name="instapaper" + unicode="&#xF2FF;" + horiz-adv-x="512" d=" M213.3333333333333 341.3333333333334C213.3333333333333 353.0666666666667 203.7333333333334 362.6666666666667 192 362.6666666666667H170.6666666666667V405.3333333333333H341.3333333333333V362.6666666666667H320C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334V42.6666666666667C298.6666666666667 30.9333333333333 308.2666666666667 21.3333333333334 320 21.3333333333334H341.3333333333333V-21.3333333333333H170.6666666666667V21.3333333333334H192C203.7333333333334 21.3333333333334 213.3333333333333 30.9333333333333 213.3333333333333 42.6666666666667V341.3333333333334z" /> + <glyph glyph-name="internet-explorer" + unicode="&#xF300;" + horiz-adv-x="512" d=" M277.3333333333333 384L298.6666666666667 382.7200000000001C358.4 409.8133333333334 410.24 413.0133333333333 437.3333333333333 385.7066666666667C458.6666666666666 364.1600000000001 460.3733333333333 327.04 446.2933333333334 283.3066666666667C461.0133333333333 256 469.3333333333333 225.0666666666667 469.3333333333333 192L468.2666666666667 170.6666666666667H193.7066666666667C201.6 122.0266666666667 235.9466666666667 85.3333333333334 277.3333333333333 85.3333333333334C305.28 85.3333333333334 330.0266666666667 102.1866666666667 345.6 128H458.6666666666666C432 53.3333333333334 360.9600000000001 0 277.3333333333333 0C250.0266666666667 0 224 5.76 200.7466666666667 16C138.6666666666667 -14.5066666666667 82.9866666666667 -19.1999999999999 54.8266666666667 9.3866666666667C21.3333333333333 43.52 35.84 115.84 85.3333333333333 192C105.1733333333333 223.1466666666667 130.9866666666667 254.72 161.4933333333334 284.8L178.7733333333334 301.2266666666667C153.8133333333333 286.5066666666667 121.8133333333334 264.1066666666667 89.3866666666667 231.04C107.3066666666667 318.2933333333334 184.7466666666667 384 277.3333333333333 384M277.3333333333333 298.6666666666667C239.1466666666667 298.6666666666667 206.72 267.3066666666667 195.84 224H358.8266666666667C347.9466666666666 267.3066666666667 315.52 298.6666666666667 277.3333333333333 298.6666666666667M427.9466666666666 361.3866666666667C413.8666666666666 375.68 388.6933333333333 376.5333333333333 357.12 366.7200000000001C388.6933333333333 352 416 329.3866666666667 435.4133333333333 301.0133333333333C442.2399999999999 327.4666666666667 440.32 348.8 427.9466666666666 361.3866666666667M82.9866666666667 21.3333333333334C100.6933333333333 3.4133333333334 136.5333333333333 6.6133333333333 180.0533333333333 26.4533333333333C140.5866666666667 49.7066666666667 110.2933333333333 86.6133333333334 95.36 130.56C69.76 82.1333333333334 64 41.1733333333333 82.9866666666667 21.3333333333334z" /> + <glyph glyph-name="invert-colors" + unicode="&#xF301;" + horiz-adv-x="512" d=" M256 30.2933333333334C221.8666666666667 30.2933333333334 189.6533333333333 43.5200000000001 165.5466666666667 67.6266666666667C141.2266666666667 91.9466666666667 128 123.9466666666667 128 158.2933333333334C128 192 141.2266666666667 224.64 165.5466666666667 248.7466666666667L256 339.2000000000001M376.7466666666667 278.8266666666667L256 399.5733333333333L135.2533333333333 278.8266666666667C68.6933333333333 212.2666666666667 68.6933333333333 104.1066666666667 135.2533333333333 37.5466666666666C168.5333333333333 4.2666666666667 212.2666666666667 -12.3733333333333 256 -12.3733333333333C299.7333333333334 -12.3733333333333 343.4666666666667 4.2666666666668 376.7466666666667 37.5466666666667C443.3066666666667 104.1066666666667 443.3066666666667 212.2666666666667 376.7466666666667 278.8266666666667z" /> + <glyph glyph-name="jeepney" + unicode="&#xF302;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667V298.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V298.6666666666667H106.6666666666667V170.6666666666667H42.6666666666667C42.6666666666667 150.8266666666667 53.3333333333333 134.1866666666667 74.6666666666667 129.4933333333334V21.3333333333334C74.6666666666667 9.6 84.2666666666667 0 96 0H117.3333333333333C129.0666666666667 0 138.6666666666667 9.6 138.6666666666667 21.3333333333334V42.6666666666667H373.3333333333333V21.3333333333334C373.3333333333333 9.6 382.9333333333333 0 394.6666666666667 0H416C427.7333333333334 0 437.3333333333333 9.6 437.3333333333333 21.3333333333334V129.4933333333334C458.6666666666666 134.4 469.3333333333333 150.8266666666667 469.3333333333333 170.6666666666667H405.3333333333333M170.6666666666667 128C152.96 128 138.6666666666667 142.2933333333334 138.6666666666667 160S152.96 192 170.6666666666667 192S202.6666666666667 177.7066666666667 202.6666666666667 160S188.3733333333333 128 170.6666666666667 128M341.3333333333333 128C323.6266666666667 128 309.3333333333333 142.2933333333334 309.3333333333333 160S323.6266666666667 192 341.3333333333333 192S373.3333333333333 177.7066666666667 373.3333333333333 160S359.04 128 341.3333333333333 128M373.3333333333333 224C339.6266666666667 230.8266666666667 299.3066666666666 234.6666666666667 256 234.6666666666667S170.6666666666667 230.8266666666667 138.6666666666667 224V298.6666666666667H373.3333333333333V224z" /> + <glyph glyph-name="jira" + unicode="&#xF303;" + horiz-adv-x="512" d=" M256 405.3333333333333C274.56 405.3333333333333 289.7066666666667 390.1866666666667 289.7066666666667 371.6266666666667C289.7066666666667 353.0666666666667 274.56 337.92 256 337.92C237.44 337.92 222.2933333333333 353.0666666666667 222.2933333333333 371.6266666666667C222.2933333333333 390.1866666666667 237.44 405.3333333333333 256 405.3333333333333M166.1866666666667 382.9333333333334C184.7466666666667 382.9333333333334 199.8933333333334 367.7866666666667 199.8933333333334 349.2266666666667C199.8933333333334 330.6666666666667 184.7466666666667 315.52 166.1866666666667 315.52C147.6266666666667 315.52 132.48 330.6666666666667 132.48 349.2266666666667C132.48 367.7866666666667 147.6266666666667 382.9333333333334 166.1866666666667 382.9333333333334M345.8133333333334 382.9333333333334C364.3733333333334 382.9333333333334 379.52 367.7866666666667 379.52 349.2266666666667C379.52 330.6666666666667 364.3733333333333 315.52 345.8133333333334 315.52C327.2533333333334 315.52 312.1066666666667 330.6666666666667 312.1066666666667 349.2266666666667C312.1066666666667 367.7866666666667 327.2533333333334 382.9333333333334 345.8133333333334 382.9333333333334M251.7333333333334 214.4C206.9333333333333 259.4133333333334 218.0266666666667 281.8133333333334 218.0266666666667 281.8133333333334H296.7466666666667C296.7466666666667 248.1066666666667 251.7333333333334 214.4 251.7333333333334 214.4M296.7466666666667 -10.0266666666666S296.7466666666667 34.7733333333334 206.9333333333333 124.5866666666667C117.3333333333333 214.4 105.8133333333333 237.0133333333333 94.5066666666667 304.2133333333334C94.5066666666667 304.2133333333334 103.04 315.52 114.3466666666667 304.2133333333334C125.44 293.12 150.8266666666667 284.5866666666667 173.2266666666666 284.5866666666667C173.2266666666666 284.5866666666667 195.6266666666667 214.4 257.4933333333334 169.6C257.4933333333334 169.6 338.7733333333333 253.6533333333333 338.7733333333333 287.36C338.7733333333333 287.36 364.16 281.8133333333334 394.6666666666667 304.2133333333333C394.6666666666667 304.2133333333333 416 315.52 417.4933333333334 304.2133333333333C420.2666666666667 281.8133333333334 397.6533333333333 203.3066666666666 305.0666666666667 124.5866666666667C305.0666666666667 124.5866666666667 364.16 57.1733333333334 358.4 -10.0266666666666H296.7466666666667M195.6266666666667 102.1866666666667L243.4133333333334 48.8533333333334C221.0133333333333 26.4533333333333 218.0266666666667 -21.3333333333333 218.0266666666667 -21.3333333333333H150.8266666666667C161.92 68.48 195.6266666666667 102.1866666666667 195.6266666666667 102.1866666666667z" /> + <glyph glyph-name="jsfiddle" + unicode="&#xF304;" + horiz-adv-x="512" d=" M433.7066666666666 217.8133333333334C467.1999999999999 203.9466666666667 490.6666666666666 171.5200000000001 490.6666666666666 133.7600000000001C490.6666666666666 83.4133333333334 449.28 42.6666666666667 398.2933333333334 42.6666666666667H115.2C64 43.52 21.3333333333333 85.3333333333334 21.3333333333333 136.1066666666667C21.3333333333333 170.0266666666667 39.8933333333333 199.8933333333334 67.6266666666667 216.1066666666667C65.7066666666667 222.08 64.8533333333333 228.48 64.8533333333333 234.6666666666667C64.8533333333333 270.0800000000001 93.6533333333333 298.6666666666667 129.28 298.6666666666667C144 298.6666666666667 157.6533333333333 293.3333333333334 168.5333333333333 285.0133333333333C191.1466666666667 331.3066666666667 238.9333333333333 363.52 294.6133333333334 363.52C371.6266666666667 363.52 434.1333333333334 301.8666666666667 434.1333333333334 225.92C434.1333333333334 223.1466666666667 433.92 220.3733333333333 433.7066666666667 217.8133333333333M196.6933333333334 216.5333333333333C158.9333333333333 216.5333333333334 128 189.4400000000001 128 156.3733333333333C128 123.0933333333334 158.9333333333333 96 196.6933333333333 96C218.6666666666667 96 238.2933333333333 105.3866666666667 250.88 119.68L229.3333333333334 144C222.2933333333334 134.8266666666667 208.4266666666667 128 196.6933333333334 128C179.8400000000001 128 166.1866666666667 140.8 166.1866666666667 156.3733333333333C166.1866666666667 171.7333333333334 179.8400000000001 184.3200000000001 196.6933333333334 184.3200000000001C206.7200000000001 184.3200000000001 215.8933333333334 179.4133333333334 225.2800000000001 173.2266666666667C234.6666666666667 167.2533333333334 250.2400000000001 145.7066666666667 262.6133333333334 131.84C293.7600000000001 100.48 309.9733333333334 97.7066666666667 328.5333333333334 97.7066666666667C366.2933333333334 97.7066666666667 396.8 124.8000000000001 396.8 157.8666666666667C396.8 191.1466666666668 366.2933333333334 218.0266666666667 328.5333333333334 218.0266666666667C306.3466666666667 218.0266666666667 286.7200000000001 208.8533333333334 274.1333333333334 194.5600000000001L295.68 170.6666666666667C302.72 179.4133333333334 316.5866666666667 186.0266666666667 328.5333333333333 186.0266666666667C345.3866666666666 186.0266666666667 359.04 173.4400000000001 359.04 157.8666666666667C359.04 142.5066666666667 345.3866666666666 129.92 328.5333333333333 129.92C318.5066666666666 129.92 309.3333333333333 134.8266666666667 299.7333333333333 141.0133333333333C290.3466666666667 146.9866666666667 274.7733333333333 168.5333333333333 262.6133333333333 182.4C231.2533333333333 213.3333333333333 215.04 216.5333333333333 196.6933333333333 216.5333333333333z" /> + <glyph glyph-name="json" + unicode="&#xF626;" + horiz-adv-x="512" d=" M106.6666666666667 384H149.3333333333333V341.3333333333334H106.6666666666667V234.6666666666667C106.6666666666667 211.2 87.4666666666667 192 64 192C87.4666666666667 192 106.6666666666667 172.8 106.6666666666667 149.3333333333334V42.6666666666667H149.3333333333333V0H106.6666666666667C83.84 5.76 64 19.2 64 42.6666666666667V128C64 151.4666666666667 44.8 170.6666666666667 21.3333333333333 170.6666666666667H0V213.3333333333334H21.3333333333333C44.8 213.3333333333334 64 232.5333333333334 64 256V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V256C448 232.5333333333334 467.1999999999999 213.3333333333334 490.6666666666666 213.3333333333334H512V170.6666666666667H490.6666666666666C467.1999999999999 170.6666666666667 448 151.4666666666667 448 128V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H362.6666666666667V42.6666666666667H405.3333333333333V149.3333333333334C405.3333333333333 172.8 424.5333333333333 192 448 192C424.5333333333333 192 405.3333333333333 211.2 405.3333333333333 234.6666666666667V341.3333333333334H362.6666666666667V384H405.3333333333333M256 128C267.7333333333334 128 277.3333333333333 118.4 277.3333333333333 106.6666666666667S267.7333333333334 85.3333333333334 256 85.3333333333334S234.6666666666667 94.9333333333333 234.6666666666667 106.6666666666667S244.2666666666667 128 256 128M170.6666666666667 128C182.4 128 192 118.4 192 106.6666666666667S182.4 85.3333333333334 170.6666666666667 85.3333333333334S149.3333333333333 94.9333333333333 149.3333333333333 106.6666666666667S158.9333333333333 128 170.6666666666667 128M341.3333333333333 128C353.0666666666667 128 362.6666666666667 118.4 362.6666666666667 106.6666666666667S353.0666666666667 85.3333333333334 341.3333333333333 85.3333333333334S320 94.9333333333333 320 106.6666666666667S329.6 128 341.3333333333333 128z" /> + <glyph glyph-name="keg" + unicode="&#xF305;" + horiz-adv-x="512" d=" M106.6666666666667 -21.3333333333333V21.3333333333334H128V106.6666666666667H106.6666666666667V149.3333333333334H128V213.3333333333334H106.6666666666667V298.6666666666667H234.6666666666667V384H213.3333333333333V405.3333333333333H298.6666666666667V384H277.3333333333333V298.6666666666667H405.3333333333333V213.3333333333334H384V149.3333333333334H405.3333333333333V106.6666666666667H384V21.3333333333334H405.3333333333333V-21.3333333333333H106.6666666666667M362.6666666666667 256C362.6666666666667 267.7333333333334 353.0666666666667 277.3333333333334 341.3333333333333 277.3333333333334H298.6666666666667C286.9333333333333 277.3333333333334 277.3333333333333 267.7333333333334 277.3333333333333 256S286.9333333333333 234.6666666666667 298.6666666666667 234.6666666666667H341.3333333333333C353.0666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256z" /> + <glyph glyph-name="kettle" + unicode="&#xF5FA;" + horiz-adv-x="512" d=" M266.6666666666667 384C166.6133333333333 384 85.3333333333333 326.6133333333334 85.3333333333333 256C85.3333333333333 230.6133333333334 96 206.08 116.0533333333333 184.96C96.64 160 85.3333333333333 128.8533333333334 85.3333333333333 96V21.3333333333334C85.3333333333333 -2.3466666666666 104.32 -21.3333333333333 128 -21.3333333333333H405.3333333333333C429.0133333333333 -21.3333333333333 448 -2.3466666666666 448 21.3333333333334V96C448 122.0266666666667 440.7466666666667 147.84 426.6666666666667 170.6666666666667L469.3333333333333 213.3333333333334L405.3333333333333 277.3333333333334L360.5333333333333 232.5333333333334C332.3733333333334 247.8933333333333 299.7333333333334 256 266.6666666666667 256C227.2 256 190.9333333333333 244.6933333333334 161.0666666666667 225.92C153.3866666666667 235.3066666666667 149.3333333333333 245.3333333333334 149.3333333333333 256C149.3333333333333 294.1866666666667 201.8133333333333 325.3333333333334 266.6666666666667 325.3333333333334C297.1733333333333 325.3333333333334 326.4 318.2933333333334 348.3733333333333 305.7066666666667L391.4666666666666 348.8C357.76 371.4133333333334 313.1733333333333 384 266.6666666666667 384M266.6666666666667 213.3333333333334C273.92 213.3333333333334 280.96 212.48 288 211.4133333333334C221.6533333333333 201.1733333333334 170.6666666666667 144 170.6666666666667 74.6666666666667V21.3333333333334H128V74.6666666666667C128 151.2533333333333 190.08 213.3333333333334 266.6666666666667 213.3333333333334z" /> + <glyph glyph-name="key" + unicode="&#xF306;" + horiz-adv-x="512" d=" M149.3333333333333 149.3333333333334C125.8666666666667 149.3333333333334 106.6666666666667 168.5333333333334 106.6666666666667 192S125.8666666666667 234.6666666666667 149.3333333333333 234.6666666666667S192 215.4666666666667 192 192S172.8 149.3333333333334 149.3333333333333 149.3333333333334M269.8666666666667 234.6666666666667C252.3733333333334 284.3733333333334 205.0133333333333 320 149.3333333333333 320C78.72 320 21.3333333333333 262.6133333333334 21.3333333333333 192S78.72 64 149.3333333333333 64C205.0133333333333 64 252.3733333333334 99.6266666666667 269.8666666666667 149.3333333333334H362.6666666666667V64H448V149.3333333333334H490.6666666666666V234.6666666666667H269.8666666666667z" /> + <glyph glyph-name="key-change" + unicode="&#xF307;" + horiz-adv-x="512" d=" M138.6666666666667 405.3333333333333C180.48 405.3333333333333 216.1066666666666 378.6666666666667 229.12 341.3333333333334H469.3333333333333V277.3333333333334H384V213.3333333333334H320V277.3333333333334H229.12C216.1066666666667 240 180.48 213.3333333333334 138.6666666666667 213.3333333333334C85.3333333333333 213.3333333333334 42.6666666666667 256 42.6666666666667 309.3333333333334S85.3333333333333 405.3333333333333 138.6666666666667 405.3333333333333M138.6666666666667 341.3333333333334C120.96 341.3333333333334 106.6666666666667 327.04 106.6666666666667 309.3333333333334S120.96 277.3333333333334 138.6666666666667 277.3333333333334S170.6666666666667 291.6266666666667 170.6666666666667 309.3333333333334S156.3733333333333 341.3333333333334 138.6666666666667 341.3333333333334M138.6666666666667 170.6666666666667C180.48 170.6666666666667 216.1066666666666 144 229.12 106.6666666666667H469.3333333333333V42.6666666666667H426.6666666666667V-21.3333333333333H384V42.6666666666667H341.3333333333333V-21.3333333333333H277.3333333333333V42.6666666666667H229.12C216.1066666666667 5.3333333333334 180.48 -21.3333333333333 138.6666666666667 -21.3333333333333C85.3333333333333 -21.3333333333333 42.6666666666667 21.3333333333334 42.6666666666667 74.6666666666667S85.3333333333333 170.6666666666667 138.6666666666667 170.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 92.3733333333333 106.6666666666667 74.6666666666667S120.96 42.6666666666667 138.6666666666667 42.6666666666667S170.6666666666667 56.96 170.6666666666667 74.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667z" /> + <glyph glyph-name="key-minus" + unicode="&#xF308;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M170.6666666666667 85.3333333333334H341.3333333333333V42.6666666666667H170.6666666666667V85.3333333333334z" /> + <glyph glyph-name="key-plus" + unicode="&#xF309;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M170.6666666666667 85.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V85.3333333333334H341.3333333333333V42.6666666666667H277.3333333333333V-21.3333333333333H234.6666666666667V42.6666666666667H170.6666666666667V85.3333333333334z" /> + <glyph glyph-name="key-remove" + unicode="&#xF30A;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M311.2533333333334 149.3333333333334L341.3333333333333 119.2533333333333L286.08 64L341.3333333333333 8.7466666666667L311.2533333333334 -21.3333333333333L256 33.92L200.7466666666667 -21.3333333333333L170.6666666666667 8.7466666666667L225.92 64L170.6666666666667 119.2533333333333L200.7466666666667 149.3333333333334L256 94.08L311.2533333333334 149.3333333333334z" /> + <glyph glyph-name="key-variant" + unicode="&#xF30B;" + horiz-adv-x="512" d=" M469.3333333333333 64V-21.3333333333333H384V42.6666666666667H320V106.6666666666667H256L207.7866666666667 154.88C196.0533333333333 151.2533333333333 183.68 149.3333333333334 170.6666666666667 149.3333333333334C100.0533333333333 149.3333333333334 42.6666666666667 206.72 42.6666666666667 277.3333333333334S100.0533333333333 405.3333333333333 170.6666666666667 405.3333333333333S298.6666666666667 347.9466666666667 298.6666666666667 277.3333333333334C298.6666666666667 264.3200000000001 296.7466666666667 251.9466666666667 293.12 240.2133333333334L469.3333333333333 64M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334z" /> + <glyph glyph-name="keyboard" + unicode="&#xF30C;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H362.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334H405.3333333333333M341.3333333333333 234.6666666666667H298.6666666666667V277.3333333333334H341.3333333333333M341.3333333333333 170.6666666666667H298.6666666666667V213.3333333333334H341.3333333333333M341.3333333333333 85.3333333333334H170.6666666666667V128H341.3333333333333M149.3333333333333 234.6666666666667H106.6666666666667V277.3333333333334H149.3333333333333M149.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H149.3333333333333M170.6666666666667 213.3333333333334H213.3333333333333V170.6666666666667H170.6666666666667M170.6666666666667 277.3333333333334H213.3333333333333V234.6666666666667H170.6666666666667M234.6666666666667 213.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667M234.6666666666667 277.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667M426.6666666666667 341.3333333333334H85.3333333333333C61.6533333333333 341.3333333333334 42.6666666666667 322.3466666666667 42.6666666666667 298.6666666666667V85.3333333333334C42.6666666666667 61.8666666666667 61.8666666666667 42.6666666666667 85.3333333333333 42.6666666666667H426.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 61.8666666666667 469.3333333333333 85.3333333333334V298.6666666666667C469.3333333333333 322.3466666666667 450.1333333333334 341.3333333333334 426.6666666666667 341.3333333333334z" /> + <glyph glyph-name="keyboard-backspace" + unicode="&#xF30D;" + horiz-adv-x="512" d=" M448 213.3333333333334H145.7066666666667L222.08 289.92L192 320L64 192L192 64L222.08 94.2933333333334L145.7066666666667 170.6666666666667H448V213.3333333333334z" /> + <glyph glyph-name="keyboard-caps" + unicode="&#xF30E;" + horiz-adv-x="512" d=" M128 64H384V106.6666666666667H128M256 268.5866666666667L353.92 170.6666666666667L384 200.96L256 328.9600000000001L128 200.96L158.08 170.6666666666667L256 268.5866666666667z" /> + <glyph glyph-name="keyboard-close" + unicode="&#xF30F;" + horiz-adv-x="512" d=" M256 -42.6666666666666L341.3333333333333 42.6666666666667H170.6666666666667M405.3333333333333 277.3333333333334H362.6666666666667V320H405.3333333333333M405.3333333333333 213.3333333333334H362.6666666666667V256H405.3333333333333M341.3333333333333 277.3333333333334H298.6666666666667V320H341.3333333333333M341.3333333333333 213.3333333333334H298.6666666666667V256H341.3333333333333M341.3333333333333 128H170.6666666666667V170.6666666666667H341.3333333333333M149.3333333333333 277.3333333333334H106.6666666666667V320H149.3333333333333M149.3333333333333 213.3333333333334H106.6666666666667V256H149.3333333333333M170.6666666666667 256H213.3333333333333V213.3333333333334H170.6666666666667M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 320H277.3333333333333V277.3333333333334H234.6666666666667M426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V128C42.6666666666667 104.5333333333333 61.8666666666667 85.3333333333334 85.3333333333333 85.3333333333334H426.6666666666667C450.1333333333334 85.3333333333334 469.3333333333333 104.5333333333333 469.3333333333333 128V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="keyboard-off" + unicode="&#xF310;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L335.5733333333333 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 309.3333333333334 46.5066666666667 318.5066666666667 52.48 325.76L21.3333333333333 356.9066666666667M405.3333333333333 234.6666666666667V277.3333333333334H362.6666666666667V234.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333M341.3333333333333 234.6666666666667V277.3333333333334H298.6666666666667V234.6666666666667H341.3333333333333M341.3333333333333 170.6666666666667V213.3333333333334H298.6666666666667V188.16L252.16 234.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667V252.1600000000001L209.4933333333334 277.3333333333334L145.4933333333334 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 66.9866666666667 457.8133333333333 51.4133333333334 441.6 45.44L316.16 170.6666666666667H341.3333333333333M170.6666666666667 128V85.3333333333334H292.9066666666667L250.24 128H170.6666666666667M106.6666666666667 234.6666666666667H143.5733333333333L106.6666666666667 271.5733333333334V234.6666666666667M149.3333333333333 170.6666666666667V213.3333333333334H106.6666666666667V170.6666666666667H149.3333333333333M170.6666666666667 170.6666666666667H207.5733333333333L170.6666666666667 207.5733333333334V170.6666666666667z" /> + <glyph glyph-name="keyboard-return" + unicode="&#xF311;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667V213.3333333333334H124.3733333333333L200.7466666666667 289.92L170.6666666666667 320L42.6666666666667 192L170.6666666666667 64L200.7466666666667 94.2933333333334L124.3733333333333 170.6666666666667H448V298.6666666666667H405.3333333333333z" /> + <glyph glyph-name="keyboard-tab" + unicode="&#xF312;" + horiz-adv-x="512" d=" M426.6666666666667 64H469.3333333333333V320H426.6666666666667M247.2533333333334 289.92L323.6266666666667 213.3333333333334H21.3333333333333V170.6666666666667H323.6266666666667L247.2533333333334 94.2933333333334L277.3333333333333 64L405.3333333333333 192L277.3333333333333 320L247.2533333333334 289.92z" /> + <glyph glyph-name="keyboard-variant" + unicode="&#xF313;" + horiz-adv-x="512" d=" M128 106.6666666666667H384V64H128V106.6666666666667M128 170.6666666666667V128H42.6666666666667V170.6666666666667H128M149.3333333333333 128V170.6666666666667H213.3333333333333V128H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M298.6666666666667 128V170.6666666666667H362.6666666666667V128H298.6666666666667M384 128V170.6666666666667H469.3333333333333V128H384M42.6666666666667 234.6666666666667H106.6666666666667V192H42.6666666666667V234.6666666666667M405.3333333333333 192V234.6666666666667H469.3333333333333V192H405.3333333333333M384 192H341.3333333333333V234.6666666666667H384V192M170.6666666666667 192H128V234.6666666666667H170.6666666666667V192M256 192H192V234.6666666666667H256V192M320 192H277.3333333333333V234.6666666666667H320V192M42.6666666666667 256V298.6666666666667H85.3333333333333V256H42.6666666666667M106.6666666666667 256V298.6666666666667H149.3333333333333V256H106.6666666666667M170.6666666666667 256V298.6666666666667H213.3333333333333V256H170.6666666666667M234.6666666666667 256V298.6666666666667H277.3333333333333V256H234.6666666666667M298.6666666666667 256V298.6666666666667H341.3333333333333V256H298.6666666666667M362.6666666666667 256V298.6666666666667H469.3333333333333V256H362.6666666666667z" /> + <glyph glyph-name="kodi" + unicode="&#xF314;" + horiz-adv-x="512" d=" M256.64 426.6666666666667C252.16 426.6666666666667 247.4666666666667 424.32 243.4133333333334 420.0533333333334L189.44 366.0800000000001C184.7466666666667 361.3866666666667 183.4666666666667 358.8266666666667 178.7733333333334 354.56C172.5866666666667 349.44 169.8133333333333 343.2533333333334 170.0266666666667 335.36C170.6666666666667 307.8400000000001 170.6666666666667 280.7466666666667 170.6666666666667 253.2266666666667V167.2533333333333C170.6666666666667 165.12 170.6666666666667 163.4133333333334 171.3066666666667 161.28C173.0133333333333 154.6666666666667 177.28 153.1733333333334 181.9733333333333 158.0800000000001C207.5733333333333 183.68 230.4 206.9333333333333 256 232.7466666666667C285.0133333333333 261.76 314.24 290.7733333333334 343.2533333333334 320C352 328.5333333333334 352 338.1333333333334 343.2533333333334 346.6666666666667C318.72 371.2 293.76 395.3066666666667 269.44 420.0533333333334C265.1733333333333 424.32 261.12 426.6666666666667 256.64 426.6666666666667M398.08 284.5866666666667C393.6 284.5866666666667 389.3333333333333 282.6666666666667 385.28 278.6133333333334C360.7466666666667 253.8666666666667 336 229.5466666666667 311.2533333333333 204.5866666666667C302.9333333333333 196.2666666666667 302.9333333333333 187.0933333333334 311.2533333333333 178.56C335.7866666666667 154.0266666666667 360.1066666666667 129.28 384.64 104.7466666666667C393.1733333333333 96 402.1333333333333 96 410.6666666666666 104.7466666666667C434.3466666666666 128 458.6666666666666 152.1066666666667 481.9199999999999 176C485.5466666666666 179.6266666666667 489.1733333333332 183.04 490.6666666666666 187.9466666666667V194.56C489.1733333333332 199.68 485.5466666666666 202.6666666666667 481.9199999999999 206.72C458.0266666666665 230.6133333333334 434.56 254.7200000000001 410.6666666666666 278.6133333333334C406.6133333333333 282.6666666666668 402.3466666666666 284.5866666666667 398.08 284.5866666666667M101.9733333333333 275.4133333333334C99.1999999999999 276.4800000000001 97.7066666666666 274.3466666666667 95.9999999999999 272.6400000000001C71.4666666666666 247.6800000000001 49.9199999999999 225.4933333333334 25.3866666666666 200.7466666666667C19.8399999999999 194.9866666666667 19.8399999999999 186.88 25.3866666666666 181.3333333333334C38.6133333333332 167.8933333333333 52.0533333333332 154.6666666666667 65.2799999999999 141.2266666666667C76.7999999999999 129.7066666666667 85.3333333333332 120.96 97.2799999999999 109.2266666666667C100.6933333333332 106.0266666666668 103.6799999999999 106.6666666666667 105.3866666666666 110.72C106.6666666666665 112.8533333333334 106.6666666666665 115.6266666666667 106.6666666666665 117.9733333333334V263.8933333333333C106.6666666666665 265.6 106.6666666666665 267.7333333333334 106.0266666666665 269.2266666666667C105.5999999999999 272 104.5333333333332 274.3466666666667 101.9733333333332 275.4133333333333M257.9199999999999 144C253.6533333333332 144 248.7466666666665 142.08 244.6933333333332 138.0266666666667C220.1599999999999 113.28 195.8399999999998 88.1066666666667 171.3066666666665 63.36C162.7733333333332 54.8266666666667 162.7733333333332 45.8666666666667 171.3066666666665 37.3333333333334C194.9866666666665 13.44 218.8799999999999 -10.0266666666666 242.7733333333332 -33.92C246.1866666666666 -37.5466666666667 249.8133333333332 -41.1733333333333 254.7199999999999 -42.6666666666666H260.6933333333332C265.3866666666666 -41.3866666666667 269.2266666666665 -38.1866666666666 272.6399999999999 -34.7733333333333C296.5333333333332 -10.6666666666666 320.6399999999999 13.2266666666667 344.7466666666665 37.3333333333334C353.0666666666665 45.8666666666667 351.9999999999999 55.4666666666667 344.1066666666665 64C319.3599999999998 88.7466666666667 295.2533333333332 113.28 270.7199999999998 138.0266666666667C266.6666666666665 142.0800000000001 262.3999999999998 144 257.9199999999999 144z" /> + <glyph glyph-name="label" + unicode="&#xF315;" + horiz-adv-x="512" d=" M376.1066666666667 323.4133333333334C368.4266666666666 334.2933333333334 355.6266666666667 341.3333333333334 341.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H341.3333333333333C355.6266666666667 42.6666666666667 368.4266666666666 49.92 376.1066666666667 60.8000000000001L469.3333333333333 192L376.1066666666667 323.4133333333334z" /> + <glyph glyph-name="label-outline" + unicode="&#xF316;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H106.6666666666667V298.6666666666667H341.3333333333333L417.0666666666667 192M376.1066666666667 323.4133333333334C368.4266666666666 334.2933333333334 355.6266666666667 341.3333333333334 341.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H341.3333333333333C355.6266666666667 42.6666666666667 368.4266666666666 49.92 376.1066666666667 60.8000000000001L469.3333333333333 192L376.1066666666667 323.4133333333334z" /> + <glyph glyph-name="lambda" + unicode="&#xF627;" + horiz-adv-x="512" d=" M128 21.3333333333334L216.7466666666667 279.2533333333334L199.2533333333333 320H170.6666666666667V362.6666666666667H213.3333333333333C222.2933333333333 362.6666666666667 229.9733333333333 357.12 233.1733333333333 349.2266666666667L355.4133333333333 64H384V21.3333333333334H341.3333333333333C332.16 21.3333333333334 324.48 27.0933333333334 321.4933333333334 34.9866666666667L241.7066666666667 220.8000000000001L173.2266666666666 21.3333333333334H128z" /> + <glyph glyph-name="lan" + unicode="&#xF317;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C189.6533333333333 405.3333333333333 170.6666666666667 386.3466666666667 170.6666666666667 362.6666666666667V298.6666666666667C170.6666666666667 274.9866666666667 189.6533333333333 256 213.3333333333333 256H234.6666666666667V213.3333333333334H42.6666666666667V170.6666666666667H128V128H106.6666666666667C82.9866666666667 128 64 109.0133333333333 64 85.3333333333334V21.3333333333334C64 -2.3466666666666 82.9866666666667 -21.3333333333333 106.6666666666667 -21.3333333333333H192C215.68 -21.3333333333333 234.6666666666667 -2.3466666666666 234.6666666666667 21.3333333333334V85.3333333333334C234.6666666666667 109.0133333333333 215.68 128 192 128H170.6666666666667V170.6666666666667H341.3333333333333V128H320C296.32 128 277.3333333333333 109.0133333333333 277.3333333333333 85.3333333333334V21.3333333333334C277.3333333333333 -2.3466666666666 296.32 -21.3333333333333 320 -21.3333333333333H405.3333333333333C429.0133333333333 -21.3333333333333 448 -2.3466666666666 448 21.3333333333334V85.3333333333334C448 109.0133333333333 429.0133333333333 128 405.3333333333333 128H384V170.6666666666667H469.3333333333333V213.3333333333334H277.3333333333333V256H298.6666666666667C322.3466666666667 256 341.3333333333333 274.9866666666667 341.3333333333333 298.6666666666667V362.6666666666667C341.3333333333333 386.3466666666667 322.3466666666667 405.3333333333333 298.6666666666667 405.3333333333333H213.3333333333333M213.3333333333333 362.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V362.6666666666667M106.6666666666667 85.3333333333334H192V21.3333333333334H106.6666666666667V85.3333333333334M320 85.3333333333334H405.3333333333333V21.3333333333334H320V85.3333333333334z" /> + <glyph glyph-name="lan-connect" + unicode="&#xF318;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M64 170.6666666666667V21.3333333333334H213.3333333333333V64H106.6666666666667V170.6666666666667H64M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128z" /> + <glyph glyph-name="lan-disconnect" + unicode="&#xF319;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M82.7733333333333 160.8533333333334L52.48 130.56L97.92 85.3333333333334L52.48 40.1066666666667L82.7733333333333 9.8133333333334L128 55.2533333333333L173.2266666666667 9.8133333333334L203.52 40.1066666666667L158.08 85.3333333333334L203.52 130.5600000000001L173.2266666666666 160.8533333333334L128 115.4133333333334L82.7733333333333 160.8533333333334M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128z" /> + <glyph glyph-name="lan-pending" + unicode="&#xF31A;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M64 192V149.3333333333334H106.6666666666667V192H64M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M64 128V85.3333333333334H106.6666666666667V128H64M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128M64 64V21.3333333333334H106.6666666666667V64H64M128 64V21.3333333333334H170.6666666666667V64H128M192 64V21.3333333333334H234.6666666666667V64H192z" /> + <glyph glyph-name="language-c" + unicode="&#xF671;" + horiz-adv-x="512" d=" M329.6 107.3066666666667L338.56 55.2533333333333C333.0133333333333 52.2666666666667 324.0533333333333 49.4933333333333 312.1066666666667 46.9333333333333C299.9466666666666 44.16 285.6533333333333 42.6666666666667 269.2266666666667 42.6666666666667C222.08 43.52 186.6666666666667 57.6 162.9866666666666 84.48C138.6666666666666 111.5733333333334 127.1466666666667 145.92 127.1466666666667 187.5200000000001C128 236.8 142.5066666666667 274.56 170.6666666666667 301.0133333333333C197.9733333333333 327.68 232.96 341.3333333333334 275.2 341.3333333333334C291.2 341.3333333333334 305.0666666666667 339.8400000000001 316.5866666666667 337.28S336.64 331.9466666666667 342.1866666666666 328.7466666666667L329.3866666666667 275.6266666666667L307.2 282.88C298.6666666666667 285.0133333333333 288.64 286.08 277.3333333333333 286.08C252.8 286.2933333333333 232.32 278.4 216.32 262.6133333333334C200.1066666666666 247.04 192 223.1466666666667 191.1466666666667 191.36C191.36 162.3466666666667 199.04 139.7333333333334 214.1866666666667 123.0933333333334C229.3333333333333 106.6666666666667 250.4533333333333 98.1333333333334 277.9733333333333 97.92L306.3466666666667 100.48C315.52 102.1866666666667 323.2 104.5333333333334 329.6 107.3066666666667z" /> + <glyph glyph-name="language-cpp" + unicode="&#xF672;" + horiz-adv-x="512" d=" M224 107.3066666666667L232.7466666666667 55.2533333333333C227.2 52.2666666666667 218.24 49.4933333333333 206.2933333333333 46.9333333333333C194.1333333333333 44.16 179.84 42.6666666666667 163.4133333333333 42.6666666666667C116.2666666666667 43.52 80.8533333333333 57.6 57.1733333333333 84.48C33.28 111.5733333333334 21.3333333333333 145.92 21.3333333333333 187.52C22.4 236.8 36.6933333333333 274.56 64 301.0133333333333C92.16 327.68 127.1466666666667 341.3333333333334 169.3866666666667 341.3333333333334C185.3866666666667 341.3333333333334 199.2533333333333 339.8400000000001 210.7733333333334 337.28S230.8266666666667 331.9466666666667 236.3733333333334 328.7466666666667L224 275.6266666666667L201.3866666666667 282.88C192.8533333333333 285.0133333333333 183.04 286.08 171.7333333333333 286.08C146.9866666666666 286.2933333333333 126.5066666666666 278.4 110.5066666666666 262.6133333333334C94.2933333333333 247.04 85.9733333333333 223.1466666666667 85.3333333333333 191.36C85.3333333333333 162.3466666666667 93.2266666666667 139.7333333333334 108.3733333333333 123.0933333333334C123.52 106.6666666666667 144.8533333333333 98.1333333333334 172.16 97.92L200.5333333333333 100.48C209.7066666666667 102.1866666666667 217.3866666666667 104.5333333333334 224 107.3066666666667M234.6666666666667 213.3333333333334H277.3333333333333V256H320V213.3333333333334H362.6666666666667V170.6666666666667H320V128H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334M384 213.3333333333334H426.6666666666667V256H469.3333333333333V213.3333333333334H512V170.6666666666667H469.3333333333333V128H426.6666666666667V170.6666666666667H384V213.3333333333334z" /> + <glyph glyph-name="language-csharp" + unicode="&#xF31B;" + horiz-adv-x="512" d=" M245.3333333333333 107.3066666666667L254.08 55.2533333333333C248.5333333333334 52.2666666666667 239.5733333333333 49.4933333333333 227.6266666666667 46.9333333333333C215.4666666666667 44.16 201.1733333333333 42.6666666666667 184.7466666666667 42.6666666666667C137.6 43.52 102.1866666666667 57.6 78.5066666666667 84.48C54.6133333333333 111.5733333333334 42.6666666666667 145.92 42.6666666666667 187.52C43.7333333333333 236.8 58.0266666666667 274.56 85.3333333333333 301.0133333333333C113.4933333333334 327.68 148.48 341.3333333333334 190.72 341.3333333333334C206.72 341.3333333333334 220.5866666666667 339.8400000000001 232.1066666666667 337.28S252.16 331.9466666666667 257.7066666666666 328.7466666666667L245.3333333333333 275.6266666666667L222.72 282.88C214.1866666666666 285.0133333333333 204.3733333333333 286.08 193.0666666666666 286.08C168.3199999999999 286.2933333333333 147.8399999999999 278.4 131.8399999999999 262.6133333333334C115.6266666666666 247.04 107.3066666666666 223.1466666666667 106.6666666666666 191.36C106.6666666666666 162.3466666666667 114.56 139.7333333333334 129.7066666666666 123.0933333333334C144.8533333333333 106.6666666666667 166.1866666666666 98.1333333333334 193.4933333333333 97.92L221.8666666666666 100.48C231.0399999999999 102.1866666666667 238.72 104.5333333333334 245.3333333333333 107.3066666666667M296.32 42.6666666666667L309.3333333333333 128H277.3333333333333L284.5866666666667 170.6666666666667H316.5866666666667L323.4133333333333 213.3333333333334H291.4133333333333L298.6666666666667 256H330.6666666666667L343.68 341.3333333333334H386.3466666666667L373.3333333333333 256H394.6666666666667L407.68 341.3333333333334H450.3466666666667L437.3333333333333 256H469.3333333333333L462.08 213.3333333333334H430.08L423.2533333333334 170.6666666666667H455.2533333333333L448 128H416L402.9866666666667 42.6666666666667H360.32L373.3333333333333 128H352L338.9866666666667 42.6666666666667H296.32M359.2533333333334 170.6666666666667H380.5866666666667L387.4133333333333 213.3333333333334H366.08L359.2533333333334 170.6666666666667z" /> + <glyph glyph-name="language-css3" + unicode="&#xF31C;" + horiz-adv-x="512" d=" M106.6666666666667 384L92.8 312.7466666666667H382.7199999999999L373.3333333333333 266.6666666666667H83.6266666666667L69.5466666666667 195.6266666666667H359.4666666666667L343.2533333333334 114.3466666666667L226.3466666666667 75.7333333333334L125.0133333333333 114.3466666666667L132.0533333333333 149.3333333333334H60.8L43.9466666666667 64L211.4133333333333 0L404.48 64L430.08 192.6400000000001L435.2 218.4533333333334L468.0533333333333 384H106.6666666666667z" /> + <glyph glyph-name="language-html5" + unicode="&#xF31D;" + horiz-adv-x="512" d=" M256 73.3866666666667L342.8266666666667 97.4933333333333L354.56 227.6266666666667H200.1066666666667L196.2666666666667 270.9333333333334H358.3999999999999L362.6666666666666 313.3866666666667H149.3333333333333L161.28 185.1733333333334H308.2666666666667L303.36 130.1333333333333L256 117.3333333333334L208.6399999999999 130.1333333333333L205.6533333333333 165.5466666666667H162.9866666666666L169.1733333333333 97.4933333333333L256 73.3866666666667M86.8266666666667 384H425.1733333333333L394.6666666666667 38.4L256 0L117.3333333333333 38.4L86.8266666666667 384z" /> + <glyph glyph-name="language-javascript" + unicode="&#xF31E;" + horiz-adv-x="512" d=" M64 384H448V0H64V384M164.9066666666667 63.1466666666667C173.44 45.0133333333333 190.2933333333333 30.08 219.0933333333333 30.08C251.0933333333333 30.08 273.0666666666666 47.1466666666667 273.0666666666666 84.48V207.7866666666667H236.8V85.3333333333334C236.8 66.9866666666667 229.3333333333333 62.2933333333334 217.6 62.2933333333334C205.2266666666666 62.2933333333334 200.1066666666666 70.8266666666667 194.3466666666666 80.8533333333334L164.9066666666667 63.1466666666668M292.48 66.9866666666668C303.1466666666667 46.0800000000001 324.6933333333334 30.0800000000001 358.4 30.0800000000001C392.5333333333334 30.0800000000001 418.1333333333334 47.7866666666668 418.1333333333334 80.4266666666667C418.1333333333334 110.5066666666668 400.8533333333334 123.9466666666667 370.1333333333334 137.1733333333334L361.1733333333333 141.0133333333334C345.6 147.6266666666668 338.9866666666667 152.1066666666668 338.9866666666667 162.7733333333334C338.9866666666667 171.5200000000001 345.6 178.3466666666668 356.2666666666667 178.3466666666668C366.5066666666667 178.3466666666668 373.3333333333333 173.8666666666667 379.52 162.7733333333334L407.4666666666666 181.3333333333334C395.7333333333333 201.8133333333334 379.0933333333333 209.7066666666667 356.2666666666667 209.7066666666667C324.0533333333333 209.7066666666667 303.36 189.2266666666667 303.36 162.1333333333334C303.36 132.6933333333334 320.64 118.8266666666667 346.6666666666667 107.7333333333334L355.6266666666667 103.8933333333334C372.2666666666667 96.64 382.08 92.16 382.08 79.7866666666668C382.08 69.5466666666667 372.48 62.0800000000001 357.5466666666667 62.0800000000001C339.8400000000001 62.0800000000001 329.6 71.2533333333335 321.92 84.0533333333335L292.48 66.9866666666668z" /> + <glyph glyph-name="language-php" + unicode="&#xF31F;" + horiz-adv-x="512" d=" M256 62.2933333333334C114.56 62.2933333333334 0 120.3200000000001 0 192.0000000000001S114.56 321.7066666666667 256 321.7066666666667S512 263.68 512 192S397.44 62.2933333333334 256 62.2933333333334M145.28 231.8933333333334C156.8 231.8933333333334 164.6933333333333 229.7600000000001 168.5333333333333 225.2800000000001C172.3733333333333 221.0133333333334 173.2266666666666 213.3333333333334 171.3066666666667 203.3066666666667C169.1733333333333 192.0000000000001 165.12 184.7466666666667 158.9333333333333 180.0533333333334C152.96 175.36 143.7866666666666 173.0133333333334 131.4133333333333 173.0133333333334H112.8533333333333L124.16 231.8933333333334H145.28M70.6133333333333 113.4933333333334H101.3333333333333L108.5866666666667 150.8266666666667H134.8266666666667C146.3466666666667 150.8266666666667 155.7333333333334 152.1066666666667 163.2 154.4533333333334C170.6666666666667 157.0133333333333 177.4933333333334 161.0666666666667 183.68 166.8266666666667C188.8 171.5200000000001 192.8533333333333 176.6400000000001 196.0533333333333 182.4C199.2533333333333 187.9466666666667 201.6 194.3466666666667 202.6666666666667 201.1733333333334C206.08 217.8133333333334 203.7333333333334 230.8266666666667 195.6266666666667 240.0000000000001C187.3066666666667 249.3866666666667 174.5066666666667 253.8666666666668 156.8 253.8666666666668H97.92L70.6133333333333 113.4933333333334M225.28 291.2000000000001L197.9733333333333 150.8266666666667H228.2666666666667L244.0533333333333 231.2533333333334H268.3733333333334C276.0533333333333 231.2533333333334 281.1733333333333 229.9733333333334 283.52 227.4133333333334C285.8666666666666 224.8533333333334 286.2933333333333 220.1600000000001 285.0133333333333 213.3333333333334L272.8533333333333 150.8266666666667H303.7866666666667L316.3733333333333 216.3200000000001C319.1466666666667 229.5466666666667 317.0133333333333 239.1466666666668 310.6133333333333 245.3333333333334C304.2133333333333 251.0933333333334 292.48 253.8666666666668 275.4133333333333 253.8666666666668H248.32L256 291.2000000000001H225.28M384 231.8933333333333C395.7333333333334 231.8933333333333 403.4133333333333 229.76 407.2533333333334 225.28C411.0933333333333 221.0133333333333 411.9466666666666 213.3333333333333 410.0266666666667 203.3066666666667C407.8933333333333 192 403.84 184.7466666666667 397.8666666666666 180.0533333333334C391.68 175.36 382.5066666666667 173.0133333333333 370.1333333333333 173.0133333333333H351.9999999999999L362.6666666666666 231.8933333333333H383.9999999999999M309.3333333333333 113.4933333333334H340.0533333333333L347.3066666666666 150.8266666666667H373.3333333333333C385.0666666666666 150.8266666666667 394.6666666666666 152.1066666666667 402.1333333333333 154.4533333333334C409.6 157.0133333333333 415.9999999999999 161.0666666666667 422.3999999999999 166.8266666666667C427.5199999999999 171.5200000000001 431.7866666666667 176.6400000000001 434.7733333333332 182.4C437.9733333333332 187.9466666666667 440.32 194.3466666666667 441.5999999999999 201.1733333333334C444.7999999999999 217.8133333333334 442.4533333333332 230.8266666666667 434.3466666666666 240.0000000000001C426.6666666666666 249.3866666666667 413.2266666666666 253.8666666666668 395.5199999999999 253.8666666666668H336.8533333333333L309.3333333333333 113.4933333333334z" /> + <glyph glyph-name="language-python" + unicode="&#xF320;" + horiz-adv-x="512" d=" M408.32 288C442.0266666666667 288 469.3333333333333 260.6933333333334 469.3333333333333 226.9866666666667V146.3466666666667C469.3333333333333 112.6400000000001 442.0266666666667 85.3333333333334 408.32 85.3333333333334H256C256 77.0133333333333 262.8266666666667 64.8533333333334 271.1466666666667 64.8533333333334H362.6666666666667V29.0133333333333C362.6666666666667 -4.6933333333333 335.36 -32 301.6533333333333 -32H210.3466666666666C176.64 -32 149.3333333333333 -4.6933333333333 149.3333333333333 29.0133333333333V109.0133333333333C149.3333333333333 142.72 176.64 169.8133333333333 210.3466666666666 169.8133333333333H322.3466666666667C356.0533333333333 169.8133333333333 383.1466666666667 197.12 383.1466666666667 230.8266666666667V288H408.32M317.0133333333333 36.48C308.48 36.48 301.6533333333333 30.08 301.6533333333333 17.4933333333333C301.6533333333333 4.9066666666667 308.48 2.3466666666667 317.0133333333333 2.3466666666667C325.3333333333333 2.3466666666667 332.16 9.1733333333333 332.16 17.4933333333333C332.16 30.08 325.3333333333333 36.48 317.0133333333333 36.48M103.68 74.6666666666667C69.9733333333333 74.6666666666667 42.6666666666667 101.9733333333334 42.6666666666667 135.68V216.32C42.6666666666667 250.0266666666667 69.9733333333333 277.3333333333334 103.68 277.3333333333334H256C256 285.6533333333333 249.1733333333333 297.8133333333334 240.8533333333333 297.8133333333334H149.3333333333333V333.6533333333333C149.3333333333333 367.36 176.64 394.6666666666667 210.3466666666666 394.6666666666667H301.6533333333333C335.36 394.6666666666667 362.6666666666667 367.36 362.6666666666667 333.6533333333333V253.6533333333334C362.6666666666667 219.9466666666667 335.36 192.8533333333334 301.6533333333333 192.8533333333334H189.6533333333333C155.9466666666667 192.8533333333334 128.8533333333334 165.5466666666668 128.8533333333334 131.84V74.6666666666667H103.68M194.9866666666667 326.1866666666667C203.52 326.1866666666667 210.3466666666667 332.5866666666667 210.3466666666667 345.1733333333334C210.3466666666667 357.76 203.52 360.32 194.9866666666667 360.32C186.6666666666667 360.32 179.84 357.76 179.84 345.1733333333334S186.6666666666667 326.1866666666667 194.9866666666667 326.1866666666667z" /> + <glyph glyph-name="language-python-text" + unicode="&#xF321;" + horiz-adv-x="512" d=" M42.6666666666667 326.6133333333334C190.2933333333333 425.1733333333334 236.8 298.6666666666667 240.64 228.9066666666667C244.48 159.36 176.8533333333333 71.68 91.9466666666667 129.7066666666667V14.9333333333333L42.6666666666667 47.5733333333334V326.6133333333334M90.0266666666667 290.1333333333334V175.36C167.2533333333333 129.0666666666667 193.7066666666667 167.04 193.7066666666667 232.7466666666667C193.7066666666667 325.5466666666666 140.16 328.7466666666667 90.0266666666667 290.1333333333334M321.7066666666666 359.4666666666667S317.8666666666666 285.0133333333333 321.7066666666666 211.84C329.3866666666666 138.6666666666666 420.0533333333333 195.4133333333333 420.0533333333333 195.4133333333333V343.04L469.3333333333333 337.0666666666667V139.9466666666667C469.3333333333333 8.5333333333333 338.1333333333334 14.9333333333333 338.1333333333334 14.9333333333333L321.7066666666667 64C436.48 64 421.9733333333334 140.16 421.9733333333334 140.16C283.0933333333334 85.9733333333334 272.4266666666667 178.9866666666667 272.4266666666667 178.9866666666667V326.6133333333334L321.7066666666667 359.4666666666667z" /> + <glyph glyph-name="laptop" + unicode="&#xF322;" + horiz-adv-x="512" d=" M85.3333333333333 320H426.6666666666667V106.6666666666667H85.3333333333333M426.6666666666667 64C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H0V21.3333333333334H512V64H426.6666666666667z" /> + <glyph glyph-name="laptop-chromebook" + unicode="&#xF323;" + horiz-adv-x="512" d=" M426.6666666666667 128H85.3333333333333V341.3333333333334H426.6666666666667M298.6666666666667 64H213.3333333333333V85.3333333333334H298.6666666666667M469.3333333333333 64V384H42.6666666666667V64H0V21.3333333333334H512V64H469.3333333333333z" /> + <glyph glyph-name="laptop-mac" + unicode="&#xF324;" + horiz-adv-x="512" d=" M256 42.6666666666667C244.2666666666667 42.6666666666667 234.6666666666667 52.2666666666667 234.6666666666667 64S244.2666666666667 85.3333333333334 256 85.3333333333334S277.3333333333333 75.7333333333334 277.3333333333333 64S267.7333333333334 42.6666666666667 256 42.6666666666667M85.3333333333333 341.3333333333334H426.6666666666667V106.6666666666667H85.3333333333333M426.6666666666667 64C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H0C0 40.5333333333333 19.2 21.3333333333334 42.6666666666667 21.3333333333334H469.3333333333333C492.8 21.3333333333334 512 40.5333333333333 512 64H426.6666666666667z" /> + <glyph glyph-name="laptop-windows" + unicode="&#xF325;" + horiz-adv-x="512" d=" M64 362.6666666666667H448C459.7333333333333 362.6666666666667 469.3333333333333 353.0666666666667 469.3333333333333 341.3333333333334V106.6666666666667C469.3333333333333 94.9333333333333 459.7333333333333 85.3333333333334 448 85.3333333333334H469.3333333333333L512 21.3333333333334V0H0V21.3333333333334L42.6666666666667 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667V341.3333333333334C42.6666666666667 353.0666666666667 52.2666666666667 362.6666666666667 64 362.6666666666667M85.3333333333333 320V128H426.6666666666667V320H85.3333333333333z" /> + <glyph glyph-name="lastfm" + unicode="&#xF326;" + horiz-adv-x="512" d=" M384 65.4933333333333C339.6266666666667 65.7066666666667 315.9466666666667 87.4666666666667 299.52 126.0800000000001L294.8266666666666 136.5333333333334L254.2933333333333 229.76C240.8533333333333 262.6133333333334 207.36 285.0133333333333 169.8133333333333 285.0133333333333C118.8266666666666 285.0133333333333 77.44 243.4133333333334 77.44 192S118.8266666666666 98.9866666666667 169.8133333333333 98.9866666666667C205.2266666666666 98.9866666666667 236.3733333333333 119.2533333333333 251.7333333333333 149.3333333333334L268.1599999999999 110.72C245.3333333333333 82.1333333333334 209.4933333333334 64 169.8133333333333 64C99.6266666666667 64 42.6666666666667 121.1733333333334 42.6666666666667 192C42.6666666666667 262.6133333333334 99.6266666666667 320 169.8133333333333 320C222.72 320 265.6 291.4133333333334 287.36 241.0666666666667C288.8533333333333 237.0133333333334 310.1866666666666 186.8800000000001 328.9599999999999 144.2133333333334C340.4799999999999 117.3333333333334 350.2933333333333 100.0533333333334 382.08 98.9866666666667C413.4399999999999 97.92 434.9866666666666 117.3333333333334 434.9866666666666 141.4400000000001C434.9866666666666 165.12 418.56 170.6666666666667 390.8266666666666 180.0533333333334C341.3333333333333 196.48 315.5199999999999 213.3333333333334 315.5199999999999 252.8000000000001C315.5199999999999 291.6266666666667 341.3333333333333 317.4400000000001 383.9999999999999 317.4400000000001C411.9466666666666 317.4400000000001 431.7866666666665 305.0666666666667 445.6533333333333 280.3200000000001L418.56 266.6666666666667C408.32 280.7466666666667 397.0133333333332 286.5066666666667 382.7199999999999 286.5066666666667C362.6666666666666 286.5066666666667 348.3733333333333 272.4266666666667 348.3733333333333 253.8666666666667C348.3733333333333 227.4133333333334 371.84 223.36 404.6933333333333 212.6933333333334C448.8533333333333 198.1866666666667 469.3333333333333 181.3333333333334 469.3333333333333 140.3733333333333C469.3333333333333 97.0666666666667 432.4266666666666 65.4933333333333 384 65.4933333333333z" /> + <glyph glyph-name="launch" + unicode="&#xF327;" + horiz-adv-x="512" d=" M298.6666666666667 384V341.3333333333334H375.2533333333334L165.5466666666667 131.6266666666667L195.6266666666667 101.5466666666667L405.3333333333333 311.2533333333334V234.6666666666667H448V384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V192H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="layers" + unicode="&#xF328;" + horiz-adv-x="512" d=" M256 106.6666666666667L413.0133333333333 228.9066666666667L448 256L256 405.3333333333333L64 256L98.7733333333333 228.9066666666667M256 52.48L98.56 174.72L64 147.84L256 -1.4933333333333L448 147.84L413.2266666666667 174.9333333333333L256 52.48z" /> + <glyph glyph-name="layers-off" + unicode="&#xF329;" + horiz-adv-x="512" d=" M69.76 426.6666666666667L42.6666666666667 399.5733333333333L132.6933333333333 309.3333333333334L64 256L98.7733333333333 228.9066666666667L256 106.6666666666667L300.8 141.44L331.3066666666666 110.9333333333333L256 52.48L98.7733333333333 174.72L64 147.84L256 -1.4933333333333L361.6 80.64L442.24 0L469.3333333333333 27.0933333333334L69.76 426.6666666666667M413.0133333333333 228.9066666666667L448 256L256 405.3333333333333L193.92 356.9066666666667L361.8133333333334 188.8000000000001L413.0133333333333 228.9066666666667M422.6133333333333 128L448 147.84L417.4933333333334 178.3466666666667L392.1066666666667 158.72L422.6133333333333 128z" /> + <glyph glyph-name="lead-pencil" + unicode="&#xF64F;" + horiz-adv-x="512" d=" M359.2533333333334 389.76C350.9333333333333 389.76 342.8266666666667 386.56 336.4266666666666 380.3733333333334L291.2 335.1466666666667L404.2666666666667 221.8666666666667L449.4933333333334 266.6666666666667C462.2933333333334 279.68 462.2933333333334 299.9466666666667 449.4933333333334 312.3200000000001L381.8666666666666 380.3733333333334C375.4666666666666 386.56 367.36 389.76 359.2533333333334 389.76M276.0533333333333 320L103.2533333333333 146.9866666666667L157.8666666666667 141.0133333333334L161.7066666666667 92.16L210.3466666666666 88.5333333333333L216.5333333333333 33.92L389.3333333333333 206.9333333333333M90.6666666666667 127.1466666666667L53.3333333333333 -15.5733333333333L196.2666666666667 22.6133333333333L191.1466666666667 68.6933333333333L141.8666666666666 72.3200000000001L138.0266666666667 121.8133333333334" /> + <glyph glyph-name="leaf" + unicode="&#xF32A;" + horiz-adv-x="512" d=" M362.6666666666667 277.3333333333334C170.6666666666667 234.6666666666667 125.8666666666667 103.04 81.4933333333333 -7.2533333333333L121.8133333333333 -21.3333333333333L142.08 27.7333333333334C152.32 24.1066666666667 162.9866666666667 21.3333333333334 170.6666666666667 21.3333333333334C405.3333333333333 21.3333333333334 469.3333333333333 384 469.3333333333333 384C448 341.3333333333334 298.6666666666667 336 192 314.6666666666667S42.6666666666667 202.6666666666667 42.6666666666667 160S80 80 80 80C149.3333333333333 277.3333333333334 362.6666666666667 277.3333333333334 362.6666666666667 277.3333333333334z" /> + <glyph glyph-name="led-off" + unicode="&#xF32B;" + horiz-adv-x="512" d=" M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320z" /> + <glyph glyph-name="led-on" + unicode="&#xF32C;" + horiz-adv-x="512" d=" M234.6666666666667 448V362.6666666666667H277.3333333333333V448H234.6666666666667M390.4 399.1466666666667L325.12 335.1466666666667L354.9866666666667 304.8533333333334L420.2666666666667 368.8533333333334L390.4 399.1466666666667M121.8133333333334 399.1466666666667L91.52 368.8533333333334L155.52 304.8533333333334L185.8133333333333 335.1466666666667L121.8133333333334 399.1466666666667M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320M42.6666666666667 256V213.3333333333334H128V256H42.6666666666667M384 256V213.3333333333334H469.3333333333333V256H384z" /> + <glyph glyph-name="led-outline" + unicode="&#xF32D;" + horiz-adv-x="512" d=" M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320M256 277.3333333333334C279.4666666666667 277.3333333333334 298.6666666666667 258.1333333333334 298.6666666666667 234.6666666666667V128H213.3333333333333V234.6666666666667C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334z" /> + <glyph glyph-name="led-variant-off" + unicode="&#xF32E;" + horiz-adv-x="512" d=" M256 384C214.4 384 179.84 354.1333333333334 172.3733333333333 314.6666666666667L358.8266666666667 128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384M69.9733333333333 362.6666666666667L42.6666666666667 335.5733333333334L170.6666666666667 207.5733333333334V170.6666666666667H128V128H192V0H234.6666666666667V128H250.24L277.3333333333333 100.9066666666667V0H320V58.24L399.5733333333333 -21.3333333333333L426.6666666666667 5.9733333333334L320 112.6400000000001L170.6666666666667 261.9733333333334L69.9733333333333 362.6666666666667z" /> + <glyph glyph-name="led-variant-on" + unicode="&#xF32F;" + horiz-adv-x="512" d=" M256 384C208.8533333333333 384 170.6666666666667 345.8133333333334 170.6666666666667 298.6666666666667V170.6666666666667H128V128H192V0H234.6666666666667V128H277.3333333333333V0H320V128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384z" /> + <glyph glyph-name="led-variant-outline" + unicode="&#xF330;" + horiz-adv-x="512" d=" M256 384C208.8533333333333 384 170.6666666666667 345.8133333333334 170.6666666666667 298.6666666666667V170.6666666666667H128V128H192V0H234.6666666666667V128H277.3333333333333V0H320V128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384M256 341.3333333333334C279.4666666666667 341.3333333333334 298.6666666666667 322.1333333333334 298.6666666666667 298.6666666666667V192H213.3333333333333V298.6666666666667C213.3333333333333 322.1333333333334 232.5333333333334 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="library" + unicode="&#xF331;" + horiz-adv-x="512" d=" M256 277.3333333333334C291.4133333333333 277.3333333333334 320 305.92 320 341.3333333333334S291.4133333333333 405.3333333333333 256 405.3333333333333S192 376.7466666666667 192 341.3333333333334S220.5866666666667 277.3333333333334 256 277.3333333333334M256 201.8133333333334C205.6533333333333 248.5333333333334 138.6666666666667 277.3333333333334 64 277.3333333333334V42.6666666666667C138.6666666666667 42.6666666666667 205.6533333333333 13.8666666666667 256 -32.8533333333333C306.3466666666667 13.8666666666667 373.3333333333333 42.6666666666667 448 42.6666666666667V277.3333333333334C373.3333333333333 277.3333333333334 306.3466666666667 248.5333333333334 256 201.8133333333334z" /> + <glyph glyph-name="library-books" + unicode="&#xF332;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667H192V341.3333333333334H405.3333333333333M320 128H192V170.6666666666667H320M405.3333333333333 213.3333333333334H192V256H405.3333333333333M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="library-music" + unicode="&#xF333;" + horiz-adv-x="512" d=" M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333M384 298.6666666666667H320V181.3333333333334C320 151.8933333333334 296.1066666666667 128 266.6666666666667 128S213.3333333333333 151.8933333333333 213.3333333333333 181.3333333333334S237.2266666666667 234.6666666666667 266.6666666666667 234.6666666666667C278.8266666666667 234.6666666666667 289.7066666666667 230.6133333333334 298.6666666666667 224V341.3333333333334H384M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="library-plus" + unicode="&#xF334;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H320V128H277.3333333333333V213.3333333333334H192V256H277.3333333333333V341.3333333333334H320V256H405.3333333333333M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="lightbulb" + unicode="&#xF335;" + horiz-adv-x="512" d=" M256 405.3333333333333C173.44 405.3333333333333 106.6666666666667 338.56 106.6666666666667 256C106.6666666666667 205.2266666666667 132.0533333333333 160.6400000000001 170.6666666666667 133.5466666666667V85.3333333333334C170.6666666666667 73.6 180.2666666666667 64 192 64H320C331.7333333333334 64 341.3333333333333 73.6 341.3333333333333 85.3333333333334V133.5466666666667C379.9466666666666 160.64 405.3333333333333 205.2266666666667 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333M192 0C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C310.4 -21.3333333333333 320 -11.7333333333333 320 0V21.3333333333334H192V0z" /> + <glyph glyph-name="lightbulb-outline" + unicode="&#xF336;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.56 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 205.2266666666667 379.9466666666666 160.6400000000001 341.3333333333333 133.5466666666667V85.3333333333334C341.3333333333333 73.6 331.7333333333334 64 320 64H192C180.2666666666667 64 170.6666666666667 73.6 170.6666666666667 85.3333333333334V133.5466666666667C132.0533333333334 160.64 106.6666666666667 205.2266666666667 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333M192 0V21.3333333333334H320V0C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0M256 362.6666666666667C197.12 362.6666666666667 149.3333333333333 314.88 149.3333333333333 256C149.3333333333333 212.2666666666667 175.5733333333333 174.72 213.3333333333333 158.2933333333334V106.6666666666667H298.6666666666667V158.2933333333334C336.4266666666666 174.72 362.6666666666667 212.2666666666667 362.6666666666667 256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="link" + unicode="&#xF337;" + horiz-adv-x="512" d=" M341.3333333333333 320H277.3333333333333V279.4666666666667H341.3333333333333C389.5466666666666 279.4666666666667 428.8 240.4266666666667 428.8 192C428.8 143.7866666666667 389.5466666666667 104.5333333333333 341.3333333333333 104.5333333333333H277.3333333333333V64H341.3333333333333C411.9466666666666 64 469.3333333333333 121.3866666666667 469.3333333333333 192C469.3333333333333 262.8266666666667 411.9466666666666 320 341.3333333333333 320M83.2 192C83.2 240.4266666666667 122.4533333333333 279.4666666666667 170.6666666666667 279.4666666666667H234.6666666666667V320H170.6666666666667C100.0533333333333 320 42.6666666666667 262.6133333333334 42.6666666666667 192S100.0533333333333 64 170.6666666666667 64H234.6666666666667V104.5333333333333H170.6666666666667C122.4533333333333 104.5333333333333 83.2 143.7866666666666 83.2 192M170.6666666666667 170.6666666666667H341.3333333333333V213.3333333333334H170.6666666666667V170.6666666666667z" /> + <glyph glyph-name="link-off" + unicode="&#xF338;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L314.24 64H277.3333333333333V100.9066666666667L207.5733333333333 170.6666666666667H170.6666666666667V207.5733333333334L117.3333333333333 261.12C96 245.3333333333334 83.2 220.16 83.2 192C83.2 143.7866666666667 122.4533333333333 104.5333333333333 170.6666666666667 104.5333333333333H234.6666666666667V64H170.6666666666667C100.0533333333333 64 42.6666666666667 121.3866666666667 42.6666666666667 192C42.6666666666667 231.2533333333334 60.3733333333333 266.6666666666667 88.32 289.92L42.6666666666667 335.5733333333334M341.3333333333333 320C411.9466666666666 320 469.3333333333333 262.6133333333334 469.3333333333333 192C469.3333333333333 144.8533333333334 443.7333333333334 103.4666666666667 405.3333333333333 81.28L375.4666666666667 111.5733333333333C406.8266666666667 124.8 428.8 155.7333333333334 428.8 192C428.8 240.4266666666666 389.5466666666667 279.4666666666667 341.3333333333333 279.4666666666667H277.3333333333333V320H341.3333333333333M170.6666666666667 320H234.6666666666667V279.4666666666667H207.36L166.8266666666667 320H170.6666666666667M341.3333333333333 213.3333333333334V170.6666666666667H316.16L273.4933333333334 213.3333333333334H341.3333333333333z" /> + <glyph glyph-name="link-variant" + unicode="&#xF339;" + horiz-adv-x="512" d=" M225.92 161.92C234.6666666666667 153.6 234.6666666666667 139.9466666666667 225.92 131.6266666666667C217.6 123.3066666666667 203.9466666666667 123.3066666666667 195.6266666666667 131.6266666666667C154.0266666666667 173.2266666666667 154.0266666666667 240.8533333333333 195.6266666666667 282.4533333333334L271.1466666666667 357.9733333333334C312.7466666666667 399.5733333333333 380.3733333333334 399.5733333333333 421.9733333333334 357.9733333333334C463.5733333333333 316.3733333333334 463.5733333333333 248.7466666666667 421.9733333333334 207.1466666666667L390.1866666666667 175.36C390.4000000000001 192.8533333333334 387.6266666666667 210.3466666666667 381.6533333333334 226.9866666666667L391.6800000000001 237.2266666666667C416.8533333333334 262.1866666666667 416.8533333333334 302.7200000000001 391.6800000000001 327.6800000000001C366.7200000000001 352.8533333333334 326.1866666666667 352.8533333333334 301.2266666666667 327.6800000000001L225.9200000000001 252.3733333333334C200.7466666666667 227.4133333333334 200.7466666666667 186.8800000000001 225.9200000000001 161.9200000000001M286.0800000000001 252.3733333333334C294.4000000000001 260.6933333333334 308.0533333333334 260.6933333333334 316.3733333333334 252.3733333333334C357.9733333333334 210.7733333333334 357.9733333333334 143.1466666666667 316.3733333333334 101.5466666666667L240.8533333333334 26.0266666666668C199.2533333333334 -15.5733333333333 131.6266666666667 -15.5733333333333 90.0266666666667 26.0266666666668C48.4266666666667 67.6266666666667 48.4266666666667 135.2533333333335 90.0266666666667 176.8533333333334L121.8133333333334 208.6400000000001C121.6000000000001 191.1466666666668 124.3733333333334 173.6533333333334 130.3466666666667 156.8000000000001L120.3200000000001 146.7733333333334C95.1466666666667 121.8133333333334 95.1466666666667 81.2800000000001 120.3200000000001 56.3200000000001C145.2800000000001 31.1466666666667 185.8133333333334 31.1466666666667 210.7733333333334 56.3200000000001L286.0800000000001 131.6266666666667C311.2533333333334 156.5866666666667 311.2533333333334 197.12 286.0800000000001 222.08C277.3333333333334 230.4000000000001 277.3333333333334 244.0533333333334 286.0800000000001 252.3733333333334z" /> + <glyph glyph-name="link-variant-off" + unicode="&#xF33A;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L296.5333333333333 81.7066666666667L240.8533333333334 26.0266666666666C199.2533333333334 -15.5733333333333 131.6266666666667 -15.5733333333333 90.0266666666667 26.0266666666666C48.4266666666667 67.6266666666667 48.4266666666667 135.2533333333333 90.0266666666667 176.8533333333334L121.8133333333334 208.64C121.6 191.1466666666667 124.3733333333334 173.6533333333333 130.3466666666667 156.8L120.32 146.7733333333333C95.1466666666667 121.8133333333333 95.1466666666667 81.28 120.32 56.3200000000001C145.28 31.1466666666667 185.8133333333333 31.1466666666667 210.7733333333334 56.3200000000001L266.6666666666668 111.7866666666667L232.1066666666667 146.1333333333333C231.8933333333334 141.0133333333333 229.7600000000001 135.68 225.9200000000001 131.6266666666667C217.6000000000001 123.3066666666667 203.9466666666668 123.3066666666667 195.6266666666667 131.6266666666667C173.2266666666667 154.24 162.7733333333334 184.1066666666667 164.6933333333334 213.3333333333334L42.6666666666667 335.5733333333334M271.1466666666667 357.9733333333334C312.7466666666667 399.5733333333333 380.3733333333334 399.5733333333333 421.9733333333334 357.9733333333334C463.5733333333333 316.3733333333334 463.5733333333333 248.7466666666667 421.9733333333334 207.1466666666667L390.1866666666667 175.36C390.4000000000001 192.8533333333334 387.6266666666667 210.3466666666667 381.6533333333334 226.9866666666667L391.6800000000001 237.2266666666667C416.8533333333334 262.1866666666667 416.8533333333334 302.7200000000001 391.6800000000001 327.6800000000001C366.7200000000001 352.8533333333334 326.1866666666667 352.8533333333334 301.2266666666667 327.6800000000001L230.1866666666667 256.6400000000001L200.1066666666667 286.9333333333334L271.1466666666667 357.9733333333334M286.0800000000001 252.3733333333334C294.4000000000001 260.6933333333334 308.0533333333334 260.6933333333334 316.3733333333334 252.3733333333334C345.6 223.1466666666667 354.3466666666667 181.3333333333334 342.6133333333334 144.4266666666667L304.6400000000001 182.1866666666667C303.5733333333334 196.6933333333334 297.3866666666667 210.9866666666667 286.0800000000001 222.0800000000001C277.3333333333334 230.4000000000001 277.3333333333334 244.0533333333334 286.0800000000001 252.3733333333334z" /> + <glyph glyph-name="linkedin" + unicode="&#xF33B;" + horiz-adv-x="512" d=" M448 0H362.6666666666667V144C362.6666666666667 166.6133333333334 337.28 185.3866666666667 314.6666666666667 185.3866666666667S277.3333333333333 166.6133333333334 277.3333333333333 144V0H192V256H277.3333333333333V213.3333333333334C291.4133333333333 236.1600000000001 327.68 250.88 352 250.88C405.3333333333333 250.88 448 207.36 448 154.6666666666667V0M149.3333333333333 0H64V256H149.3333333333333V0M106.6666666666667 384C130.1333333333333 384 149.3333333333333 364.8 149.3333333333333 341.3333333333334S130.1333333333333 298.6666666666667 106.6666666666667 298.6666666666667S64 317.8666666666667 64 341.3333333333334S83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="linkedin-box" + unicode="&#xF33C;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H341.3333333333333V155.7333333333334C341.3333333333333 173.4400000000001 327.04 187.7333333333334 309.3333333333333 187.7333333333334S277.3333333333333 173.4400000000001 277.3333333333333 155.7333333333334V42.6666666666667H213.3333333333333V234.6666666666667H277.3333333333333V209.0666666666667C288 226.9866666666667 311.2533333333334 238.9333333333334 330.6666666666667 238.9333333333334C371.84 238.9333333333334 405.3333333333333 205.44 405.3333333333333 164.2666666666667M138.6666666666667 270.7200000000001C117.3333333333333 270.7200000000001 100.0533333333333 288 100.0533333333333 309.3333333333334S117.3333333333333 347.9466666666667 138.6666666666667 347.9466666666667S177.28 330.6666666666667 177.28 309.3333333333334S160 270.7200000000001 138.6666666666667 270.7200000000001M170.6666666666667 42.6666666666667H106.6666666666667V234.6666666666667H170.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="linux" + unicode="&#xF33D;" + horiz-adv-x="512" d=" M281.1733333333333 138.6666666666667C267.3066666666666 122.4533333333334 244.6933333333333 122.4533333333334 230.8266666666667 138.6666666666667L158.72 224C152.7466666666667 207.36 149.3333333333333 189.4400000000001 149.3333333333333 170.6666666666667C149.3333333333333 135.04 161.4933333333334 102.8266666666667 181.3333333333333 79.5733333333334C213.3333333333333 77.44 240.8533333333333 64.8533333333334 251.3066666666667 42.6666666666667H260.6933333333333C271.1466666666667 64 297.6 75.9466666666667 329.8133333333333 78.2933333333334C350.08 101.5466666666667 362.6666666666667 134.4 362.6666666666667 170.6666666666667C362.6666666666667 189.4400000000001 359.2533333333334 207.36 353.28 224L281.1733333333333 138.6666666666667M426.6666666666667 5.3333333333334C426.6666666666667 -6.4 411.7333333333334 -21.3333333333333 400 -21.3333333333333H282.6666666666667C270.9333333333333 -21.3333333333333 256 -6.4 256 5.3333333333334C256 -6.4 241.0666666666667 -21.3333333333333 229.3333333333333 -21.3333333333333H112C100.2666666666667 -21.3333333333333 85.3333333333333 -6.4 85.3333333333333 5.3333333333334C85.3333333333333 33.0666666666667 105.3866666666667 57.3866666666667 134.4 71.4666666666667C117.3333333333333 99.4133333333334 106.6666666666667 133.76 106.6666666666667 170.6666666666667C85.3333333333333 128 57.6 116.0533333333334 44.5866666666667 128C32 139.9466666666667 38.1866666666667 174.2933333333334 66.1333333333333 204.5866666666667C81.92 221.8666666666667 106.6666666666667 242.7733333333333 123.9466666666667 250.6666666666667C130.7733333333333 265.3866666666667 139.52 278.8266666666667 149.3333333333333 290.56V298.6666666666667C149.3333333333333 357.5466666666667 197.12 405.3333333333333 256 405.3333333333333S362.6666666666667 357.5466666666667 362.6666666666667 298.6666666666667V290.56C372.48 278.8266666666667 381.2266666666667 265.3866666666667 388.0533333333334 250.6666666666667C405.3333333333333 242.7733333333334 430.08 221.8666666666667 445.8666666666667 204.5866666666667C473.8133333333333 174.2933333333334 480.0000000000001 139.9466666666667 467.4133333333334 128C454.4000000000001 116.0533333333334 426.6666666666668 128 405.3333333333334 170.6666666666667C405.3333333333334 133.3333333333334 394.6666666666668 98.7733333333333 376.9600000000001 70.6133333333334C406.4 56.96 426.6666666666667 33.28 426.6666666666667 5.3333333333334M210.7733333333334 256C201.8133333333333 245.3333333333334 201.8133333333333 228.9066666666667 210.7733333333334 218.6666666666667L237.44 186.6666666666667C246.1866666666667 176.4266666666667 260.48 176.4266666666667 269.44 186.6666666666667L296.1066666666667 218.6666666666667C304.8533333333334 228.9066666666667 304.8533333333334 245.3333333333334 296.1066666666667 256H210.7733333333334M213.3333333333333 336C201.6 336 192 322.1333333333334 192 298.6666666666667S201.6 261.3333333333334 213.3333333333333 261.3333333333334S234.6666666666667 275.2000000000001 234.6666666666667 298.6666666666667S225.0666666666667 336 213.3333333333333 336M298.6666666666667 336C286.9333333333333 336 277.3333333333333 322.1333333333334 277.3333333333333 298.6666666666667S286.9333333333333 261.3333333333334 298.6666666666667 261.3333333333334S320 275.2000000000001 320 298.6666666666667S310.4 336 298.6666666666667 336z" /> + <glyph glyph-name="lock" + unicode="&#xF33E;" + horiz-adv-x="512" d=" M256 85.3333333333334C279.4666666666667 85.3333333333334 298.6666666666667 104.5333333333333 298.6666666666667 128C298.6666666666667 151.68 279.4666666666667 170.6666666666667 256 170.6666666666667S213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.3466666666667 104.5333333333333 277.3333333333334 128 277.3333333333334H149.3333333333333V320C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 384C220.5866666666667 384 192 355.4133333333334 192 320V277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384z" /> + <glyph glyph-name="lock-open" + unicode="&#xF33F;" + horiz-adv-x="512" d=" M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.1333333333334 104.5333333333333 277.3333333333334 128 277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384S192 355.4133333333334 192 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 85.3333333333334C279.4666666666667 85.3333333333334 298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667S213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="lock-open-outline" + unicode="&#xF340;" + horiz-adv-x="512" d=" M384 21.3333333333334V234.6666666666667H128V21.3333333333334H384M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.1333333333334 104.5333333333333 277.3333333333334 128 277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384S192 355.4133333333334 192 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 85.3333333333334C232.5333333333334 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128S232.5333333333334 170.6666666666667 256 170.6666666666667S298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="lock-outline" + unicode="&#xF341;" + horiz-adv-x="512" d=" M256 85.3333333333334C232.32 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128C213.3333333333333 151.68 232.32 170.6666666666667 256 170.6666666666667C279.4666666666667 170.6666666666667 298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334M384 21.3333333333334V234.6666666666667H128V21.3333333333334H384M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.3466666666667 104.32 277.3333333333334 128 277.3333333333334H149.3333333333333V320C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 384C220.5866666666667 384 192 355.4133333333334 192 320V277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384z" /> + <glyph glyph-name="lock-plus" + unicode="&#xF5FB;" + horiz-adv-x="512" d=" M384 277.3333333333334H362.6666666666667V320C362.6666666666667 378.88 314.88 426.6666666666667 256 426.6666666666667S149.3333333333333 378.88 149.3333333333333 320V277.3333333333334H128C104.5333333333333 277.3333333333334 85.3333333333333 258.1333333333334 85.3333333333333 234.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V234.6666666666667C426.6666666666667 258.1333333333334 407.4666666666667 277.3333333333334 384 277.3333333333334M189.8666666666667 320C189.8666666666667 356.48 219.52 386.1333333333334 256 386.1333333333334C292.48 386.1333333333334 322.1333333333334 356.48 322.1333333333334 320V277.3333333333334H189.8666666666667V320M341.3333333333333 106.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V106.6666666666667H170.6666666666667V149.3333333333334H234.6666666666667V213.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333V106.6666666666667z" /> + <glyph glyph-name="login" + unicode="&#xF342;" + horiz-adv-x="512" d=" M213.3333333333333 80V149.3333333333334H64V234.6666666666667H213.3333333333333V304L325.3333333333333 192L213.3333333333333 80M170.6666666666667 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H170.6666666666667C147.2 -21.3333333333333 128 -2.1333333333333 128 21.3333333333334V106.6666666666667H170.6666666666667V21.3333333333334H362.6666666666667V362.6666666666667H170.6666666666667V277.3333333333334H128V362.6666666666667C128 386.1333333333334 147.2 405.3333333333333 170.6666666666667 405.3333333333333z" /> + <glyph glyph-name="login-variant" + unicode="&#xF5FC;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V256H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M215.04 115.6266666666667L245.3333333333333 85.3333333333334L352 192L245.3333333333333 298.6666666666667L215.04 268.5866666666667L270.2933333333333 213.3333333333334H64V170.6666666666667H270.2933333333333L215.04 115.6266666666667z" /> + <glyph glyph-name="logout" + unicode="&#xF343;" + horiz-adv-x="512" d=" M362.6666666666667 80V149.3333333333334H213.3333333333333V234.6666666666667H362.6666666666667V304L474.6666666666666 192L362.6666666666667 80M277.3333333333333 405.3333333333333C300.8 405.3333333333333 320 386.1333333333334 320 362.6666666666667V277.3333333333334H277.3333333333333V362.6666666666667H85.3333333333333V21.3333333333334H277.3333333333333V106.6666666666667H320V21.3333333333334C320 -2.1333333333333 300.8 -21.3333333333333 277.3333333333333 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H277.3333333333333z" /> + <glyph glyph-name="logout-variant" + unicode="&#xF5FD;" + horiz-adv-x="512" d=" M300.3733333333334 115.4133333333334L355.6266666666667 170.6666666666667H149.3333333333333V213.3333333333334H355.6266666666667L300.3733333333334 268.5866666666667L330.6666666666667 298.6666666666667L437.3333333333333 192L330.6666666666667 85.3333333333334L300.3733333333334 115.4133333333334M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V241.7066666666667L405.3333333333333 284.3733333333334V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333V99.6266666666667L448 142.2933333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333z" /> + <glyph glyph-name="looks" + unicode="&#xF344;" + horiz-adv-x="512" d=" M256 320C126.2933333333333 320 21.3333333333333 215.04 21.3333333333333 85.3333333333334H64C64 191.1466666666667 150.1866666666667 277.3333333333334 256 277.3333333333334S448 191.1466666666667 448 85.3333333333334H490.6666666666666C490.6666666666666 215.04 385.7066666666666 320 256 320M256 234.6666666666667C173.6533333333333 234.6666666666667 106.6666666666667 167.68 106.6666666666667 85.3333333333334H149.3333333333333C149.3333333333333 144.2133333333334 197.12 192 256 192S362.6666666666667 144.2133333333334 362.6666666666667 85.3333333333334H405.3333333333333C405.3333333333333 167.68 338.3466666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="loupe" + unicode="&#xF345;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="lumx" + unicode="&#xF346;" + horiz-adv-x="512" d=" M263.4666666666667 410.6666666666667L429.44 244.6933333333334L293.76 109.0133333333333L263.4666666666667 139.3066666666667L369.0666666666667 244.6933333333334L233.3866666666667 380.5866666666667L263.4666666666667 410.6666666666667M338.9866666666667 244.6933333333334L308.6933333333334 214.6133333333333L218.24 305.0666666666667L112.64 199.4666666666667L82.56 229.76L218.24 365.44L338.9866666666667 244.6933333333334M218.24 274.9866666666667L248.5333333333334 244.6933333333334L142.9333333333333 139.3066666666666L278.6133333333334 3.4133333333333L248.5333333333334 -26.6666666666667L82.56 139.3066666666666L218.24 274.9866666666666M173.0133333333333 139.3066666666666L203.3066666666667 169.3866666666667L293.76 78.9333333333333L399.36 184.5333333333333L429.44 154.2399999999999L293.76 18.5599999999999L173.0133333333333 139.3066666666666z" /> + <glyph glyph-name="magnet" + unicode="&#xF347;" + horiz-adv-x="512" d=" M64 298.6666666666667V170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667V298.6666666666667H362.6666666666667V170.6666666666667C362.6666666666667 111.7866666666667 314.88 64 256 64S149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667V298.6666666666667M362.6666666666667 341.3333333333334H448V405.3333333333333H362.6666666666667M64 341.3333333333334H149.3333333333333V405.3333333333333H64" /> + <glyph glyph-name="magnet-on" + unicode="&#xF348;" + horiz-adv-x="512" d=" M64 298.6666666666667V170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667V298.6666666666667H362.6666666666667V170.6666666666667C362.6666666666667 111.7866666666667 314.88 64 256 64S149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667V298.6666666666667M362.6666666666667 341.3333333333334H448V405.3333333333333H362.6666666666667M64 341.3333333333334H149.3333333333333V405.3333333333333H64M277.3333333333333 416L192 256H234.6666666666667V138.6666666666667L320 298.6666666666667H277.3333333333333V416z" /> + <glyph glyph-name="magnify" + unicode="&#xF349;" + horiz-adv-x="512" d=" M202.6666666666667 384C279.2533333333334 384 341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 210.9866666666667 328.7466666666667 179.4133333333334 308.0533333333333 155.0933333333334L313.8133333333333 149.3333333333334H330.6666666666667L437.3333333333333 42.6666666666667L405.3333333333333 10.6666666666667L298.6666666666667 117.3333333333334V134.1866666666667L292.9066666666667 139.9466666666667C268.5866666666667 119.2533333333333 237.0133333333333 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384M202.6666666666667 341.3333333333334C149.3333333333333 341.3333333333334 106.6666666666667 298.6666666666667 106.6666666666667 245.3333333333334S149.3333333333333 149.3333333333334 202.6666666666667 149.3333333333334S298.6666666666667 192 298.6666666666667 245.3333333333334S256 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="magnify-minus" + unicode="&#xF34A;" + horiz-adv-x="512" d=" M192 405.3333333333333C274.56 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 222.5066666666667 330.6666666666667 192 311.68 166.6133333333334L328.7466666666667 149.3333333333333H341.3333333333333L469.3333333333333 21.3333333333334L426.6666666666667 -21.3333333333333L298.6666666666667 106.6666666666667V119.2533333333333L281.3866666666667 136.3200000000001C256 117.3333333333334 225.4933333333334 106.6666666666667 192 106.6666666666667C109.44 106.6666666666667 42.6666666666667 173.44 42.6666666666667 256S109.44 405.3333333333333 192 405.3333333333333M106.6666666666667 277.3333333333334V234.6666666666667H277.3333333333333V277.3333333333334H106.6666666666667z" /> + <glyph glyph-name="magnify-plus" + unicode="&#xF34B;" + horiz-adv-x="512" d=" M192 405.3333333333333C274.56 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 222.5066666666667 330.6666666666667 192 311.68 166.6133333333334L328.7466666666667 149.3333333333333H341.3333333333333L469.3333333333333 21.3333333333334L426.6666666666667 -21.3333333333333L298.6666666666667 106.6666666666667V119.2533333333333L281.3866666666667 136.3200000000001C256 117.3333333333334 225.4933333333334 106.6666666666667 192 106.6666666666667C109.44 106.6666666666667 42.6666666666667 173.44 42.6666666666667 256S109.44 405.3333333333333 192 405.3333333333333M170.6666666666667 341.3333333333334V277.3333333333334H106.6666666666667V234.6666666666667H170.6666666666667V170.6666666666667H213.3333333333333V234.6666666666667H277.3333333333333V277.3333333333334H213.3333333333333V341.3333333333334H170.6666666666667z" /> + <glyph glyph-name="mail-ru" + unicode="&#xF34C;" + horiz-adv-x="512" d=" M329.6 193.92C327.2533333333334 241.0666666666667 292.2666666666667 269.44 250.0266666666667 269.44H248.32C199.4666666666666 269.44 172.5866666666667 231.04 172.5866666666667 187.52C172.5866666666667 138.6666666666667 205.2266666666666 107.7333333333334 248.1066666666667 107.7333333333334C296.1066666666667 107.7333333333334 327.4666666666667 142.9333333333333 329.8133333333333 184.32M248.5333333333333 311.68C281.1733333333333 311.68 311.8933333333333 297.1733333333333 334.2933333333333 274.56C334.2933333333333 285.44 341.3333333333333 293.5466666666666 351.9999999999999 293.5466666666666H354.3466666666666C370.1333333333332 293.5466666666666 373.3333333333333 278.6133333333334 373.3333333333333 273.92V105.3866666666667C372.4799999999999 94.2933333333333 384.8533333333333 88.7466666666666 391.8933333333333 95.9999999999999C418.9866666666666 123.5199999999999 451.1999999999999 238.72 375.04 305.28C304 367.5733333333333 208.6399999999999 357.3333333333333 157.8666666666666 322.3466666666666C104.1066666666666 285.2266666666666 69.5466666666666 202.6666666666666 103.04 125.6533333333333C139.52 41.3866666666667 244.0533333333333 16.2133333333333 306.1333333333333 41.3866666666667C337.7066666666666 53.9733333333333 351.9999999999999 11.52 320 -2.3466666666667C270.08 -23.4666666666667 132.9066666666667 -21.3333333333334 68.6933333333333 89.8133333333333C25.3866666666666 164.9066666666667 27.52 296.96 142.5066666666666 365.44C230.6133333333334 417.7066666666667 346.4533333333333 403.2 416 330.6666666666667C489.6 253.8666666666667 485.3333333333333 110.9333333333333 413.8666666666666 55.2533333333333C381.6533333333333 30.08 333.6533333333333 54.6133333333333 334.08 91.52L333.6533333333333 103.4666666666666C311.2533333333333 81.0666666666666 281.1733333333333 68.0533333333333 248.5333333333333 68.0533333333333C184.1066666666666 68.0533333333333 128 124.8 128 189.2266666666666C128 254.2933333333333 184.1066666666666 311.68 248.5333333333333 311.68z" /> + <glyph glyph-name="map" + unicode="&#xF34D;" + horiz-adv-x="512" d=" M320 42.6666666666667L192 87.68V341.3333333333334L320 296.3200000000001M437.3333333333333 384H433.92L320 339.2000000000001L192 384L71.68 343.4666666666667C67.2 341.9733333333334 64 338.1333333333334 64 333.2266666666667V10.6666666666667C64 4.6933333333333 68.6933333333333 0 74.6666666666667 0C75.7333333333333 0 77.0133333333333 0 78.08 0.64L192 44.8000000000001L320 0L440.32 40.5333333333333C444.8 42.6666666666667 448 45.8666666666667 448 50.7733333333333V373.3333333333334C448 379.3066666666667 443.3066666666667 384 437.3333333333333 384z" /> + <glyph glyph-name="map-marker" + unicode="&#xF34E;" + horiz-adv-x="512" d=" M256 202.6666666666667C226.56 202.6666666666667 202.6666666666667 226.5600000000001 202.6666666666667 256S226.56 309.3333333333334 256 309.3333333333334S309.3333333333333 285.44 309.3333333333333 256S285.44 202.6666666666667 256 202.6666666666667M256 405.3333333333333C173.44 405.3333333333333 106.6666666666667 338.56 106.6666666666667 256C106.6666666666667 144 256 -21.3333333333333 256 -21.3333333333333S405.3333333333333 144 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="map-marker-circle" + unicode="&#xF34F;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 181.3333333333334C238.2933333333333 181.3333333333334 224 195.6266666666667 224 213.3333333333334S238.2933333333333 245.3333333333334 256 245.3333333333334S288 231.04 288 213.3333333333334S273.7066666666667 181.3333333333334 256 181.3333333333334M256 294.4C211.2 294.4 174.9333333333333 258.1333333333334 174.9333333333333 213.3333333333334C174.9333333333333 149.3333333333334 256 74.6666666666667 256 74.6666666666667S337.0666666666667 149.3333333333334 337.0666666666667 213.3333333333334C337.0666666666667 258.1333333333334 300.8 294.4 256 294.4z" /> + <glyph glyph-name="map-marker-minus" + unicode="&#xF650;" + horiz-adv-x="512" d=" M192 202.6666666666667C221.44 202.6666666666667 245.3333333333333 226.5600000000001 245.3333333333333 256S221.44 309.3333333333334 192 309.3333333333334S138.6666666666667 285.44 138.6666666666667 256S162.56 202.6666666666667 192 202.6666666666667M192 405.3333333333333C274.3466666666667 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 144 192 -21.3333333333333 192 -21.3333333333333S42.6666666666667 144 42.6666666666667 256C42.6666666666667 338.56 109.44 405.3333333333333 192 405.3333333333333M320 85.3333333333334H490.6666666666666V42.6666666666667H320V85.3333333333334z" /> + <glyph glyph-name="map-marker-multiple" + unicode="&#xF350;" + horiz-adv-x="512" d=" M298.6666666666667 202.6666666666667C328.1066666666667 202.6666666666667 352 226.5600000000001 352 256S328.1066666666667 309.3333333333334 298.6666666666667 309.3333333333334S245.3333333333333 285.44 245.3333333333333 256S269.2266666666667 202.6666666666667 298.6666666666667 202.6666666666667M298.6666666666667 405.3333333333333C381.0133333333333 405.3333333333333 448 338.56 448 256C448 144 298.6666666666667 -21.3333333333333 298.6666666666667 -21.3333333333333S149.3333333333333 144 149.3333333333333 256C149.3333333333333 338.56 216.1066666666666 405.3333333333333 298.6666666666667 405.3333333333333M106.6666666666667 256C106.6666666666667 160 215.04 28.5866666666667 234.6666666666667 4.0533333333333L213.3333333333333 -21.3333333333333S64 144 64 256C64 323.6266666666667 109.0133333333333 380.8 170.6666666666667 399.1466666666667C131.4133333333333 363.9466666666667 106.6666666666667 312.9600000000001 106.6666666666667 256z" /> + <glyph glyph-name="map-marker-off" + unicode="&#xF351;" + horiz-adv-x="512" d=" M349.2266666666667 104.5333333333333L250.6666666666667 203.3066666666666L248.32 205.6533333333333L69.76 384L42.6666666666667 356.9066666666667L110.5066666666667 289.0666666666667C107.9466666666667 278.4 106.6666666666667 267.52 106.6666666666667 256C106.6666666666667 144 256 -21.3333333333333 256 -21.3333333333333S291.6266666666667 18.1333333333334 327.8933333333333 71.4666666666667L399.5733333333333 0L426.6666666666667 27.3066666666667M256 309.3333333333334C285.44 309.3333333333334 309.3333333333333 285.44 309.3333333333333 256C309.3333333333333 240.4266666666667 302.2933333333333 226.3466666666667 291.6266666666667 216.5333333333334L369.0666666666667 138.6666666666667C389.9733333333334 178.7733333333333 405.3333333333333 220.16 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333C213.3333333333333 405.3333333333333 175.7866666666667 387.8400000000001 148.48 359.68L216.5333333333333 291.6266666666667C226.3466666666667 302.5066666666667 240.2133333333333 309.3333333333334 256 309.3333333333334z" /> + <glyph glyph-name="map-marker-plus" + unicode="&#xF651;" + horiz-adv-x="512" d=" M192 202.6666666666667C221.44 202.6666666666667 245.3333333333333 226.5600000000001 245.3333333333333 256S221.44 309.3333333333334 192 309.3333333333334S138.6666666666667 285.44 138.6666666666667 256S162.56 202.6666666666667 192 202.6666666666667M192 405.3333333333333C274.3466666666667 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 144 192 -21.3333333333333 192 -21.3333333333333S42.6666666666667 144 42.6666666666667 256C42.6666666666667 338.56 109.44 405.3333333333333 192 405.3333333333333M320 85.3333333333334H384V149.3333333333334H426.6666666666667V85.3333333333334H490.6666666666666V42.6666666666667H426.6666666666667V-21.3333333333333H384V42.6666666666667H320V85.3333333333334z" /> + <glyph glyph-name="map-marker-radius" + unicode="&#xF352;" + horiz-adv-x="512" d=" M256 405.3333333333333C326.6133333333334 405.3333333333333 384 348.5866666666667 384 278.4C384 183.2533333333333 256 42.6666666666667 256 42.6666666666667S128 183.2533333333333 128 278.4C128 348.5866666666667 185.3866666666667 405.3333333333333 256 405.3333333333333M256 320C232.5333333333334 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320M426.6666666666667 42.6666666666667C426.6666666666667 -4.48 350.2933333333334 -42.6666666666666 256 -42.6666666666666S85.3333333333333 -4.48 85.3333333333333 42.6666666666667C85.3333333333333 70.1866666666667 111.36 94.72 151.68 110.2933333333334L165.3333333333333 90.8800000000001C142.2933333333333 81.28 128 68.0533333333334 128 53.3333333333334C128 23.8933333333334 185.3866666666667 0 256 0S384 23.8933333333334 384 53.3333333333334C384 68.0533333333334 369.7066666666666 81.28 346.6666666666667 90.8800000000001L360.32 110.2933333333334C400.64 94.72 426.6666666666667 70.1866666666667 426.6666666666667 42.6666666666667z" /> + <glyph glyph-name="margin" + unicode="&#xF353;" + horiz-adv-x="512" d=" M312.1066666666667 303.36L275.2 324.6933333333334L394.6666666666667 403.6266666666667L386.1333333333334 260.6933333333334L349.2266666666667 282.0266666666667L186.24 0H136.96L312.1066666666667 303.36M373.3333333333333 192C414.5066666666667 192 448 154.88 448 96S414.5066666666667 0 373.3333333333333 0S298.6666666666667 37.12 298.6666666666667 96S332.16 192 373.3333333333333 192M373.3333333333333 149.3333333333334C355.6266666666667 149.3333333333334 341.3333333333333 131.4133333333334 341.3333333333333 96C341.3333333333333 60.5866666666667 355.6266666666667 42.6666666666667 373.3333333333333 42.6666666666667S405.3333333333333 60.5866666666667 405.3333333333333 96C405.3333333333333 131.4133333333334 391.04 149.3333333333334 373.3333333333333 149.3333333333334M160 341.3333333333334C201.1733333333333 341.3333333333334 234.6666666666667 304.2133333333334 234.6666666666667 245.3333333333334S201.1733333333333 149.3333333333334 160 149.3333333333334S85.3333333333333 186.4533333333334 85.3333333333333 245.3333333333334S118.8266666666667 341.3333333333334 160 341.3333333333334M160 298.6666666666667C142.2933333333333 298.6666666666667 128 280.7466666666667 128 245.3333333333334C128 209.92 142.2933333333333 192 160 192S192 209.92 192 245.3333333333334C192 280.7466666666667 177.7066666666667 298.6666666666667 160 298.6666666666667z" /> + <glyph glyph-name="markdown" + unicode="&#xF354;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667V277.3333333333334H85.3333333333333L149.3333333333333 213.3333333333334L213.3333333333333 277.3333333333334H256V106.6666666666667H213.3333333333333V216.96L149.3333333333333 152.96L85.3333333333333 216.96V106.6666666666667H42.6666666666667M341.3333333333333 277.3333333333334H405.3333333333333V192H458.6666666666666L373.3333333333333 96L288 192H341.3333333333333V277.3333333333334z" /> + <glyph glyph-name="marker" + unicode="&#xF652;" + horiz-adv-x="512" d=" M394.6666666666667 423.4666666666667C383.36 423.4666666666667 372.48 419.4133333333334 364.16 411.0933333333334L240.2133333333334 286.9333333333334L360.7466666666668 166.4L484.9066666666668 290.3466666666667C501.3333333333334 306.9866666666667 501.3333333333334 333.8666666666667 484.9066666666668 350.72L424.3200000000001 411.0933333333333C416.0000000000001 419.4133333333333 405.3333333333334 423.4666666666667 394.6666666666668 423.4666666666667M219.7333333333334 266.6666666666667L92.5866666666667 139.52C75.9466666666667 122.88 75.9466666666667 96 93.0133333333333 78.72C66.9866666666667 52.48 40.5333333333333 26.24 14.2933333333333 0H135.04L153.3866666666667 18.3466666666667C170.0266666666667 2.1333333333333 196.6933333333333 2.3466666666667 213.3333333333333 18.7733333333333L340.2666666666667 145.92" /> + <glyph glyph-name="marker-check" + unicode="&#xF355;" + horiz-adv-x="512" d=" M213.3333333333333 106.6666666666667L106.6666666666667 213.3333333333334L136.7466666666667 243.6266666666667L213.3333333333333 167.04L375.2533333333334 328.9600000000001L405.3333333333333 298.6666666666667M405.3333333333333 426.6666666666667H106.6666666666667C82.9866666666667 426.6666666666667 64 407.68 64 384V108.16C64 93.44 71.4666666666667 80.4266666666667 82.7733333333333 72.7466666666667L256 -42.6666666666666L429.0133333333333 72.7466666666667C440.32 80.4266666666667 448 93.44 448 108.16V384C448 407.68 428.8 426.6666666666667 405.3333333333333 426.6666666666667z" /> + <glyph glyph-name="martini" + unicode="&#xF356;" + horiz-adv-x="512" d=" M160 298.6666666666667L117.3333333333333 341.3333333333334H394.6666666666667L352 298.6666666666667M234.6666666666667 170.6666666666667V42.6666666666667H128V0H384V42.6666666666667H277.3333333333333V170.6666666666667L448 341.3333333333334V384H64V341.3333333333334L234.6666666666667 170.6666666666667z" /> + <glyph glyph-name="material-ui" + unicode="&#xF357;" + horiz-adv-x="512" d=" M170.6666666666667 93.6533333333334V120.1066666666667L298.6666666666667 193.92V293.76L192 232.1066666666667L85.3333333333333 293.76V170.6666666666667L64 158.2933333333334L42.6666666666667 170.6666666666667V341.3333333333334L65.4933333333333 354.56L192 281.3866666666667L275.84 329.8133333333334L318.5066666666667 354.5600000000001L341.3333333333333 341.3333333333334V169.3866666666667L232.96 106.6666666666667L319.36 56.96L426.6666666666667 118.8266666666667V213.3333333333334L448 225.7066666666667L469.3333333333333 213.3333333333334V94.2933333333334L319.36 7.6800000000001L170.6666666666667 93.6533333333334M469.3333333333333 240L448 227.6266666666667L426.6666666666667 240V264.9600000000001L448 277.3333333333334L469.3333333333333 264.9600000000001V240z" /> + <glyph glyph-name="math-compass" + unicode="&#xF358;" + horiz-adv-x="512" d=" M277.3333333333333 358.4V384C277.3333333333333 396.8 268.8 405.3333333333333 256 405.3333333333333V358.4C209.0666666666667 349.8666666666667 192 326.4 192 298.6666666666667C192 281.6 198.4 266.6666666666667 209.0666666666667 256L85.3333333333333 23.4666666666667V-21.3333333333333L132.2666666666667 21.3333333333334L247.4666666666667 234.6666666666667H256C292.2666666666667 234.6666666666667 320 262.4000000000001 320 298.6666666666667C320 326.4 302.9333333333334 349.8666666666667 277.3333333333334 358.4M275.2000000000001 288C270.9333333333334 281.6 264.5333333333334 277.3333333333334 256 277.3333333333334C243.2000000000001 277.3333333333334 234.6666666666667 285.8666666666667 234.6666666666667 298.6666666666667C234.6666666666667 302.9333333333334 236.8 305.0666666666667 236.8 309.3333333333334C241.0666666666667 315.7333333333334 247.4666666666667 320 256 320C268.8 320 277.3333333333334 311.4666666666667 277.3333333333334 298.6666666666667C277.3333333333334 294.4 275.2000000000001 292.2666666666667 275.2000000000001 288M426.6666666666667 23.4666666666667V-21.3333333333333L379.7333333333334 21.3333333333334L285.8666666666667 196.2666666666667C300.8 200.5333333333333 313.6 206.9333333333333 324.2666666666667 215.4666666666667L426.6666666666667 23.4666666666667z" /> + <glyph glyph-name="matrix" + unicode="&#xF628;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H128V362.6666666666667H85.3333333333333V21.3333333333334H128V-21.3333333333333H42.6666666666667V405.3333333333333M426.6666666666667 362.6666666666667H384V405.3333333333333H469.3333333333333V-21.3333333333333H384V21.3333333333334H426.6666666666667V362.6666666666667M192 341.3333333333334H213.3333333333333V234.6666666666667H234.6666666666667V213.3333333333334H170.6666666666667V234.6666666666667H192V320L170.6666666666667 309.3333333333334V330.6666666666667L192 341.3333333333334M320 170.6666666666667H341.3333333333333V64H362.6666666666667V42.6666666666667H298.6666666666667V64H320V149.3333333333334L298.6666666666667 138.6666666666667V160L320 170.6666666666667M192 170.6666666666667C215.4666666666667 170.6666666666667 234.6666666666667 142.0800000000001 234.6666666666667 106.6666666666667S215.4666666666667 42.6666666666667 192 42.6666666666667S149.3333333333333 71.2533333333333 149.3333333333333 106.6666666666667S168.5333333333333 170.6666666666667 192 170.6666666666667M192 149.3333333333334C180.2666666666667 149.3333333333334 170.6666666666667 130.1333333333333 170.6666666666667 106.6666666666667S180.2666666666667 64 192 64S213.3333333333333 83.2 213.3333333333333 106.6666666666667S203.7333333333334 149.3333333333334 192 149.3333333333334M320 341.3333333333334C343.4666666666667 341.3333333333334 362.6666666666667 312.7466666666667 362.6666666666667 277.3333333333334S343.4666666666667 213.3333333333334 320 213.3333333333334S277.3333333333333 241.92 277.3333333333333 277.3333333333334S296.5333333333333 341.3333333333334 320 341.3333333333334M320 320C308.2666666666667 320 298.6666666666667 300.8 298.6666666666667 277.3333333333334S308.2666666666667 234.6666666666667 320 234.6666666666667S341.3333333333333 253.8666666666667 341.3333333333333 277.3333333333334S331.7333333333334 320 320 320z" /> + <glyph glyph-name="maxcdn" + unicode="&#xF359;" + horiz-adv-x="512" d=" M439.4666666666667 305.28C420.9066666666667 328.32 392.1066666666667 341.3333333333334 360.5333333333333 341.3333333333334H62.9333333333333L98.56 265.1733333333334L50.9866666666667 42.6666666666667H129.0666666666667L176.64 265.1733333333334H243.2L195.6266666666667 42.6666666666667H273.7066666666667L321.28 265.1733333333334H360.5333333333334C369.0666666666667 265.1733333333334 376.1066666666667 262.4 380.1600000000001 257.2800000000001C384.0000000000001 252.3733333333334 385.4933333333334 245.3333333333334 384.0000000000001 236.8000000000001L342.1866666666666 42.6666666666667H420.0533333333333L458.6666666666666 220.8C464.6399999999999 251.52 457.8133333333333 282.4533333333334 439.4666666666666 305.28z" /> + <glyph glyph-name="medium" + unicode="&#xF35A;" + horiz-adv-x="512" d=" M467.84 306.7733333333333L338.9866666666667 96.64L246.8266666666667 246.8266666666667L320 366.0800000000001C323.6266666666667 371.6266666666667 330.6666666666667 373.9733333333334 336.64 372.2666666666667L467.84 306.7733333333334M469.3333333333333 26.0266666666666C469.3333333333333 13.8666666666667 458.6666666666666 9.1733333333333 445.6533333333333 15.7866666666666L345.1733333333333 65.92L469.3333333333333 268.5866666666667V26.0266666666666M192 22.6133333333333C192 10.6666666666667 182.8266666666667 5.12 172.16 10.6666666666667L54.4 69.1200000000001C48 72.5333333333334 42.6666666666667 81.0666666666667 42.6666666666667 88.3200000000001V359.68C42.6666666666667 369.2800000000001 49.7066666666667 373.3333333333334 58.4533333333334 369.4933333333334L185.6 305.92L192 296.1066666666667V22.6133333333333M326.1866666666666 75.52L213.3333333333333 132.0533333333334V260.0533333333334L326.1866666666666 75.52z" /> + <glyph glyph-name="memory" + unicode="&#xF35B;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H149.3333333333333V298.6666666666667H362.6666666666667M448 213.3333333333334V256H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H320V384H277.3333333333333V341.3333333333334H234.6666666666667V384H192V341.3333333333334H149.3333333333333C125.6533333333333 341.3333333333334 106.6666666666667 322.3466666666667 106.6666666666667 298.6666666666667V256H64V213.3333333333334H106.6666666666667V170.6666666666667H64V128H106.6666666666667V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H192V0H234.6666666666667V42.6666666666667H277.3333333333333V0H320V42.6666666666667H362.6666666666667C386.1333333333334 42.6666666666667 405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334V128H448V170.6666666666667H405.3333333333333V213.3333333333334M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333M320 256H192V128H320V256z" /> + <glyph glyph-name="menu" + unicode="&#xF35C;" + horiz-adv-x="512" d=" M64 320H448V277.3333333333334H64V320M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 106.6666666666667H448V64H64V106.6666666666667z" /> + <glyph glyph-name="menu-down" + unicode="&#xF35D;" + horiz-adv-x="512" d=" M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="menu-left" + unicode="&#xF35E;" + horiz-adv-x="512" d=" M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="menu-right" + unicode="&#xF35F;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="menu-up" + unicode="&#xF360;" + horiz-adv-x="512" d=" M149.3333333333333 128L256 234.6666666666667L362.6666666666667 128H149.3333333333333z" /> + <glyph glyph-name="message" + unicode="&#xF361;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-alert" + unicode="&#xF362;" + horiz-adv-x="512" d=" M277.3333333333333 234.6666666666667H234.6666666666667V320H277.3333333333333M277.3333333333333 149.3333333333334H234.6666666666667V192H277.3333333333333M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-draw" + unicode="&#xF363;" + horiz-adv-x="512" d=" M384 149.3333333333334H224L266.6666666666667 192H384M128 149.3333333333334V202.6666666666667L274.7733333333333 349.0133333333333C278.8266666666666 353.0666666666667 285.6533333333333 353.0666666666667 289.92 349.0133333333333L327.4666666666667 311.2533333333334C331.7333333333333 306.9866666666667 331.7333333333333 300.3733333333334 327.4666666666667 296.1066666666667L180.6933333333333 149.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-image" + unicode="&#xF364;" + horiz-adv-x="512" d=" M106.6666666666667 149.3333333333334L181.3333333333333 245.3333333333334L234.6666666666667 181.3333333333334L309.3333333333333 277.3333333333334L405.3333333333333 149.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-outline" + unicode="&#xF365;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M426.6666666666667 106.6666666666667H128L85.3333333333333 64V362.6666666666667H426.6666666666667" /> + <glyph glyph-name="message-plus" + unicode="&#xF653;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H128L42.6666666666667 -21.3333333333333V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M234.6666666666667 320V256H170.6666666666667V213.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333V256H277.3333333333333V320H234.6666666666667z" /> + <glyph glyph-name="message-processing" + unicode="&#xF366;" + horiz-adv-x="512" d=" M362.6666666666667 213.3333333333334H320V256H362.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M192 213.3333333333334H149.3333333333333V256H192M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-reply" + unicode="&#xF367;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H384L469.3333333333333 -21.3333333333333V362.6666666666667z" /> + <glyph glyph-name="message-reply-text" + unicode="&#xF368;" + horiz-adv-x="512" d=" M384 277.3333333333334H128V320H384V277.3333333333334M384 213.3333333333334H128V256H384V213.3333333333334M384 149.3333333333334H128V192H384V149.3333333333334M469.3333333333333 362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H384L469.3333333333333 -21.3333333333333V362.6666666666667z" /> + <glyph glyph-name="message-text" + unicode="&#xF369;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M128 256H384V213.3333333333334H128M298.6666666666667 149.3333333333334H128V192H298.6666666666667M384 277.3333333333334H128V320H384" /> + <glyph glyph-name="message-text-outline" + unicode="&#xF36A;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H128L42.6666666666667 -21.3333333333333V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M85.3333333333333 362.6666666666667V81.7066666666667L110.2933333333333 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333M128 298.6666666666667H384V256H128V298.6666666666667M128 213.3333333333334H320V170.6666666666667H128V213.3333333333334z" /> + <glyph glyph-name="message-video" + unicode="&#xF36B;" + horiz-adv-x="512" d=" M384 149.3333333333334L298.6666666666667 217.6V149.3333333333334H128V320H298.6666666666667V251.7333333333334L384 320M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="meteor" + unicode="&#xF629;" + horiz-adv-x="512" d=" M59.7333333333333 384L419.6266666666667 46.5066666666667S426.6666666666667 36.9066666666667 417.7066666666667 27.52C408.9600000000001 18.1333333333333 397.4400000000001 26.24 397.4400000000001 26.24L59.7333333333333 384M166.6133333333333 350.0800000000001L446.08 93.0133333333333S452.9066666666666 83.6266666666667 444.16 74.6666666666667C435.2 64.64 423.68 72.7466666666667 423.68 72.7466666666667L166.6133333333333 350.0800000000001M91.52 277.3333333333334L370.9866666666667 20.6933333333333S377.8133333333334 11.3066666666666 369.0666666666667 1.92C360.1066666666667 -7.6799999999999 348.5866666666667 0 348.5866666666667 0L91.52 277.3333333333334M257.0666666666667 320.8533333333334L452.2666666666667 141.44S456.96 134.8266666666667 450.7733333333334 128C444.8 121.6 436.6933333333334 127.36 436.6933333333334 127.36L257.0666666666667 320.8533333333334M116.2666666666667 193.92L311.4666666666667 14.2933333333334S316.1600000000001 7.6800000000001 310.1866666666667 1.0666666666667C304.0000000000001 -5.5466666666666 295.8933333333334 0 295.8933333333334 0L116.2666666666667 193.92M349.4400000000001 279.04L438.4000000000001 197.5466666666667S440.7466666666668 194.56 437.3333333333334 191.36C434.7733333333334 188.3733333333333 430.7200000000001 190.9333333333334 430.7200000000001 190.9333333333334L349.4400000000001 279.04M161.28 104.5333333333333L250.4533333333333 23.2533333333333S252.8 20.0533333333334 249.6 17.0666666666667C246.6133333333333 13.8666666666667 242.56 16.64 242.56 16.64L161.28 104.5333333333333z" /> + <glyph glyph-name="microphone" + unicode="&#xF36C;" + horiz-adv-x="512" d=" M256 405.3333333333333C291.4133333333333 405.3333333333333 320 376.7466666666667 320 341.3333333333334V213.3333333333334C320 177.92 291.4133333333333 149.3333333333334 256 149.3333333333334S192 177.92 192 213.3333333333334V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333M405.3333333333333 213.3333333333334C405.3333333333333 138.0266666666667 349.6533333333333 75.9466666666667 277.3333333333333 65.4933333333333V0H234.6666666666667V65.4933333333333C162.3466666666666 75.9466666666667 106.6666666666667 138.0266666666667 106.6666666666667 213.3333333333334H149.3333333333333C149.3333333333333 154.4533333333334 197.12 106.6666666666667 256 106.6666666666667S362.6666666666667 154.4533333333334 362.6666666666667 213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="microphone-off" + unicode="&#xF36D;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334C405.3333333333333 187.9466666666667 398.08 164.2666666666667 386.1333333333334 143.36L359.8933333333333 169.6C365.6533333333333 182.8266666666667 369.0666666666667 197.5466666666667 369.0666666666667 213.3333333333334H405.3333333333333M320 209.92L192 337.4933333333334V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V209.92M91.0933333333333 384L448 27.0933333333334L420.9066666666667 0L331.52 89.3866666666667C315.0933333333333 79.5733333333334 296.7466666666667 72.96 277.3333333333333 69.9733333333334V0H234.6666666666667V69.9733333333334C164.6933333333333 80.4266666666667 106.6666666666667 140.5866666666667 106.6666666666667 213.3333333333334H142.9333333333333C142.9333333333333 149.3333333333334 197.12 104.5333333333333 256 104.5333333333333C273.28 104.5333333333333 290.1333333333334 108.5866666666667 305.28 115.6266666666667L269.8666666666667 151.04L256 149.3333333333334C220.5866666666667 149.3333333333334 192 177.92 192 213.3333333333334V228.6933333333334L64 356.9066666666667L91.0933333333333 384z" /> + <glyph glyph-name="microphone-outline" + unicode="&#xF36E;" + horiz-adv-x="512" d=" M369.0666666666667 213.3333333333334C369.0666666666667 149.3333333333334 314.88 104.5333333333333 256 104.5333333333333S142.9333333333333 149.3333333333334 142.9333333333333 213.3333333333334H106.6666666666667C106.6666666666667 140.5866666666667 164.6933333333333 80.4266666666667 234.6666666666667 69.9733333333334V0H277.3333333333333V69.9733333333334C347.3066666666667 80.4266666666667 405.3333333333333 140.5866666666667 405.3333333333333 213.3333333333334M230.4 343.4666666666667C230.4 357.5466666666667 241.92 369.0666666666667 256 369.0666666666667C270.08 369.0666666666667 281.6 357.5466666666667 281.6 343.4666666666667L281.3866666666667 211.2C281.3866666666667 197.12 270.08 185.6 256 185.6C241.92 185.6 230.4 197.12 230.4 211.2M256 149.3333333333334C291.4133333333333 149.3333333333334 320 177.92 320 213.3333333333334V341.3333333333334C320 376.7466666666667 291.4133333333333 405.3333333333333 256 405.3333333333333S192 376.7466666666667 192 341.3333333333334V213.3333333333334C192 177.92 220.5866666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="microphone-settings" + unicode="&#xF36F;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H369.0666666666667C369.0666666666667 170.6666666666667 314.88 125.8666666666667 256 125.8666666666667S142.9333333333333 170.6666666666667 142.9333333333333 234.6666666666667H106.6666666666667C106.6666666666667 161.92 164.6933333333333 101.76 234.6666666666667 91.3066666666667V21.3333333333334H277.3333333333333V91.3066666666667C347.3066666666667 101.76 405.3333333333333 161.9200000000001 405.3333333333333 234.6666666666667M320 -64H362.6666666666667V-21.3333333333333H320M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M256 170.6666666666667C291.4133333333333 170.6666666666667 320 199.2533333333333 320 234.6666666666667V362.6666666666667C320 398.08 291.4133333333333 426.6666666666667 256 426.6666666666667S192 398.08 192 362.6666666666667V234.6666666666667C192 199.2533333333333 220.5866666666667 170.6666666666667 256 170.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="microphone-variant" + unicode="&#xF370;" + horiz-adv-x="512" d=" M192 384C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667H106.6666666666667C106.6666666666667 345.8133333333334 144.8533333333333 384 192 384M252.5866666666667 238.5066666666667L234.6666666666667 64H213.3333333333333V42.6666666666667C213.3333333333333 19.2 232.5333333333334 0 256 0S298.6666666666667 19.2 298.6666666666667 42.6666666666667V149.3333333333334C298.6666666666667 196.48 336.8533333333333 234.6666666666667 384 234.6666666666667H426.6666666666667L405.3333333333333 213.3333333333334L426.6666666666667 192H384C360.5333333333333 192 341.3333333333333 172.8 341.3333333333333 149.3333333333334V42.6666666666667C341.3333333333333 -4.48 303.1466666666667 -42.6666666666666 256 -42.6666666666666S170.6666666666667 -4.48 170.6666666666667 42.6666666666667V64H149.3333333333333L131.4133333333333 238.5066666666667C120.96 249.1733333333334 113.28 262.4000000000001 109.44 277.3333333333334H274.56C270.7200000000001 262.4000000000001 263.04 249.1733333333334 252.5866666666667 238.5066666666667M192 213.3333333333334C180.2666666666667 213.3333333333334 170.6666666666667 203.7333333333334 170.6666666666667 192S180.2666666666667 170.6666666666667 192 170.6666666666667S213.3333333333333 180.2666666666667 213.3333333333333 192S203.7333333333334 213.3333333333334 192 213.3333333333334z" /> + <glyph glyph-name="microphone-variant-off" + unicode="&#xF371;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L341.3333333333333 37.12C338.3466666666667 -7.4666666666667 301.2266666666667 -42.6666666666666 256 -42.6666666666666C208.8533333333333 -42.6666666666666 170.6666666666667 -4.48 170.6666666666667 42.6666666666667V64H149.3333333333333L131.4133333333333 238.5066666666667C124.16 245.9733333333334 117.9733333333333 254.72 113.7066666666667 264.5333333333334L42.6666666666667 335.5733333333334M192 384C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667H188.16L129.7066666666667 357.12C145.28 373.3333333333334 167.4666666666667 384 192 384M252.5866666666667 238.5066666666667L252.16 234.6666666666667L209.4933333333334 277.3333333333334H274.56C270.7200000000001 262.4000000000001 263.04 249.1733333333334 252.5866666666667 238.5066666666667M234.6666666666667 64H213.3333333333333V42.6666666666667C213.3333333333333 19.2 232.5333333333334 0 256 0S298.6666666666667 19.2 298.6666666666667 42.6666666666667V79.5733333333334L242.1333333333334 136.1066666666667L234.6666666666667 64M384 234.6666666666667H426.6666666666667L405.3333333333333 213.3333333333334L426.6666666666667 192H384C360.5333333333333 192 341.3333333333333 172.8 341.3333333333333 149.3333333333334V145.4933333333334L305.0666666666667 181.3333333333334C317.8666666666667 213.3333333333334 348.3733333333333 234.6666666666667 384 234.6666666666667M170.6666666666667 192C170.6666666666667 180.2666666666667 180.2666666666667 170.6666666666667 192 170.6666666666667C196.48 170.6666666666667 200.5333333333333 171.9466666666667 203.9466666666667 174.2933333333334L174.2933333333333 203.9466666666667C171.9466666666667 200.5333333333334 170.6666666666667 196.48 170.6666666666667 192z" /> + <glyph glyph-name="microscope" + unicode="&#xF654;" + horiz-adv-x="512" d=" M201.8133333333333 314.0266666666667L235.7333333333334 256C180.6933333333333 250.4533333333334 138.6666666666667 204.5866666666667 138.6666666666667 149.3333333333334C138.6666666666667 90.4533333333334 186.4533333333334 42.6666666666667 245.3333333333333 42.6666666666667C289.0666666666667 42.6666666666667 326.6133333333334 68.9066666666667 343.04 106.6666666666667H288V149.3333333333334H458.6666666666666V106.6666666666667H410.6666666666667C401.92 73.1733333333334 383.36 43.52 358.1866666666666 21.3333333333334H416V-21.3333333333333H74.6666666666667V21.3333333333334H132.48C97.0666666666667 52.6933333333333 74.6666666666667 98.3466666666667 74.6666666666667 149.3333333333334C74.6666666666667 226.7733333333333 127.1466666666667 294.4 201.8133333333333 314.0266666666667M271.7866666666667 403.84L288 376.1066666666667L306.3466666666667 386.7733333333333L381.0133333333333 257.4933333333334L306.9866666666666 214.8266666666667L232.32 344.1066666666667L250.88 354.7733333333333L234.6666666666667 382.5066666666667L271.7866666666667 403.84z" /> + <glyph glyph-name="microsoft" + unicode="&#xF372;" + horiz-adv-x="512" d=" M42.6666666666667 384H234.6666666666667V192H42.6666666666667V384M234.6666666666667 -21.3333333333333H42.6666666666667V170.6666666666667H234.6666666666667V-21.3333333333333M448 384V192H256V384H448M448 -21.3333333333333H256V170.6666666666667H448V-21.3333333333333z" /> + <glyph glyph-name="minecraft" + unicode="&#xF373;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M128 320V234.6666666666667H213.3333333333333V192H170.6666666666667V64H213.3333333333333V106.6666666666667H298.6666666666667V64H341.3333333333333V192H298.6666666666667V234.6666666666667H384V320H298.6666666666667V234.6666666666667H213.3333333333333V320H128z" /> + <glyph glyph-name="minus" + unicode="&#xF374;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H405.3333333333333V170.6666666666667z" /> + <glyph glyph-name="minus-box" + unicode="&#xF375;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="minus-circle" + unicode="&#xF376;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="minus-circle-outline" + unicode="&#xF377;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M149.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333" /> + <glyph glyph-name="minus-network" + unicode="&#xF378;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334V256H170.6666666666667V213.3333333333334H341.3333333333333M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="mixcloud" + unicode="&#xF62A;" + horiz-adv-x="512" d=" M450.3466666666667 53.3333333333334C447.36 53.3333333333334 444.3733333333333 54.6133333333333 441.8133333333334 56.3200000000001C434.56 61.2266666666667 432.64 70.8266666666667 437.3333333333333 78.08C451.84 99.4133333333334 459.52 124.5866666666667 459.52 150.8266666666667C459.52 176.8533333333334 451.84 202.0266666666667 437.3333333333333 224C432.64 230.8266666666667 434.56 240.4266666666667 441.8133333333334 245.3333333333334C448.8533333333333 250.0266666666667 458.6666666666666 248.1066666666667 463.36 241.0666666666667C481.28 214.4 490.6666666666667 183.2533333333333 490.6666666666667 150.8266666666667C490.6666666666667 118.4 481.28 87.2533333333333 463.36 60.5866666666667C460.3733333333333 56.1066666666667 455.4666666666667 53.3333333333334 450.3466666666667 53.3333333333334M405.3333333333333 79.1466666666667C402.7733333333333 79.1466666666667 399.7866666666667 80 397.0133333333333 81.7066666666667C389.9733333333334 86.6133333333334 388.0533333333333 96.0000000000001 392.9599999999999 103.4666666666667C402.3466666666667 117.3333333333334 407.4666666666666 133.7600000000001 407.4666666666666 150.8266666666667C407.4666666666666 167.6800000000001 402.3466666666667 184.1066666666668 392.9599999999999 198.1866666666667C388.0533333333333 205.4400000000001 389.9733333333333 215.0400000000001 397.0133333333333 219.9466666666667C404.2666666666667 224.6400000000001 413.8666666666666 222.9333333333334 418.7733333333333 215.6800000000001C431.7866666666667 196.4800000000001 438.6133333333333 174.0800000000001 438.6133333333333 150.8266666666668C438.6133333333333 128.0000000000001 431.7866666666667 105.1733333333334 418.7733333333333 85.9733333333335C416 81.4933333333335 410.6666666666667 79.1466666666668 405.3333333333333 79.1466666666668M317.8666666666667 112.4266666666668C338.9866666666667 112.4266666666668 356.2666666666667 129.7066666666668 356.2666666666667 150.8266666666668C356.2666666666667 167.0400000000001 346.0266666666667 181.3333333333335 331.7333333333333 186.6666666666668C330.6666666666667 180.2666666666668 329.1733333333333 173.8666666666668 327.2533333333333 167.6800000000001C324.9066666666667 161.2800000000001 318.9333333333333 157.0133333333334 312.32 157.0133333333334C310.8266666666666 157.0133333333334 309.3333333333333 157.4400000000001 307.4133333333333 157.8666666666668C299.3066666666666 160.6400000000001 294.8266666666666 169.3866666666668 297.5999999999999 177.7066666666668C300.5866666666666 186.8800000000001 302.2933333333333 196.6933333333335 302.2933333333333 206.5066666666668C302.2933333333333 257.4933333333334 260.6933333333334 298.6666666666667 209.4933333333334 298.6666666666667C172.8 298.6666666666667 139.9466666666667 277.3333333333334 125.2266666666667 245.3333333333334C139.52 241.0666666666667 152.7466666666667 233.8133333333334 163.4133333333333 223.1466666666667C169.6 216.96 169.6 207.1466666666667 163.4133333333333 200.96C157.44 194.9866666666667 147.4133333333333 194.9866666666667 141.44 200.96C131.6266666666667 210.7733333333334 118.6133333333333 216.3200000000001 104.5333333333333 216.3200000000001C75.9466666666667 216.3200000000001 52.48 192.8533333333334 52.48 164.2666666666668C52.48 135.6800000000001 75.9466666666667 112.4266666666667 104.5333333333333 112.4266666666667H317.8666666666667M332.8 218.6666666666668C363.9466666666666 211.8400000000001 387.6266666666666 184.1066666666668 387.6266666666666 150.8266666666668C387.6266666666666 112.4266666666667 356.2666666666667 81.2800000000001 317.8666666666666 81.2800000000001H104.5333333333333C58.6666666666666 81.2800000000001 21.3333333333333 118.4000000000001 21.3333333333333 164.2666666666668C21.3333333333333 206.0800000000001 52.2666666666666 240.4266666666668 92.3733333333333 246.4000000000001C109.2266666666666 296.1066666666668 156.3733333333333 330.6666666666668 209.4933333333333 330.6666666666668C273.7066666666666 330.6666666666668 326.6133333333333 281.1733333333334 332.8 218.6666666666668z" /> + <glyph glyph-name="monitor" + unicode="&#xF379;" + horiz-adv-x="512" d=" M448 106.6666666666667H64V362.6666666666667H448M448 405.3333333333333H64C40.32 405.3333333333333 21.3333333333333 386.3466666666667 21.3333333333333 362.6666666666667V106.6666666666667C21.3333333333333 83.2 40.5333333333333 64 64 64H213.3333333333333V21.3333333333334H170.6666666666667V-21.3333333333333H341.3333333333333V21.3333333333334H298.6666666666667V64H448C471.4666666666667 64 490.6666666666666 83.2 490.6666666666666 106.6666666666667V362.6666666666667C490.6666666666666 386.3466666666667 471.4666666666667 405.3333333333333 448 405.3333333333333z" /> + <glyph glyph-name="monitor-multiple" + unicode="&#xF37A;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334V298.6666666666667H128V85.3333333333334H469.3333333333333M469.3333333333333 341.3333333333334C492.8 341.3333333333334 512 322.1333333333334 512 298.6666666666667V85.3333333333334C512 61.6533333333334 492.8 42.6666666666667 469.3333333333333 42.6666666666667H341.3333333333333V0H384V-42.6666666666666H213.3333333333333V0H256V42.6666666666667H128C104.32 42.6666666666667 85.3333333333333 61.6533333333334 85.3333333333333 85.3333333333334V298.6666666666667C85.3333333333333 322.1333333333334 104.5333333333333 341.3333333333334 128 341.3333333333334H469.3333333333333M42.6666666666667 384V128H0V384C0 407.4666666666667 19.2 426.6666666666667 42.6666666666667 426.6666666666667H426.6666666666667V384H42.6666666666667z" /> + <glyph glyph-name="more" + unicode="&#xF37B;" + horiz-adv-x="512" d=" M405.3333333333333 160C387.6266666666667 160 373.3333333333333 174.2933333333334 373.3333333333333 192S387.6266666666667 224 405.3333333333333 224S437.3333333333333 209.7066666666667 437.3333333333333 192S423.04 160 405.3333333333333 160M298.6666666666667 160C280.96 160 266.6666666666667 174.2933333333334 266.6666666666667 192S280.96 224 298.6666666666667 224S330.6666666666667 209.7066666666667 330.6666666666667 192S316.3733333333334 160 298.6666666666667 160M192 160C174.2933333333333 160 160 174.2933333333334 160 192S174.2933333333333 224 192 224S224 209.7066666666667 224 192S209.7066666666667 160 192 160M469.3333333333333 384H149.3333333333333C134.6133333333334 384 123.0933333333333 376.5333333333333 115.4133333333333 365.2266666666667L0 192L115.4133333333333 18.9866666666667C123.0933333333333 7.68 135.8933333333333 0 150.6133333333334 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 365.0133333333333 492.8 384 469.3333333333333 384z" /> + <glyph glyph-name="motorbike" + unicode="&#xF37C;" + horiz-adv-x="512" d=" M349.0133333333333 356.9066666666667H395.7333333333334V402.56H349.0133333333333V425.1733333333334H388.6933333333333C381.6533333333333 438.8266666666667 365.44 448 349.0133333333333 448C323.4133333333333 448 302.5066666666667 427.52 302.5066666666667 402.56C302.5066666666667 377.3866666666667 323.4133333333333 356.9066666666667 349.0133333333333 356.9066666666667M214.1866666666667 247.68L277.3333333333333 300.1600000000001L372.2666666666667 243.2H218.6666666666667M416.64 190.9333333333333L449.0666666666667 222.72C467.84 240.8533333333333 467.84 268.1600000000001 449.0666666666667 286.5066666666667L409.6 247.68L297.8133333333333 356.9066666666667C290.9866666666666 368.4266666666667 277.3333333333333 375.2533333333334 263.04 375.2533333333334C251.3066666666666 375.2533333333334 242.1333333333333 370.56 234.6666666666667 363.7333333333334L149.3333333333333 279.68C141.8666666666667 272.8533333333334 137.3866666666667 263.68 137.3866666666667 252.3733333333334V240.8533333333333H109.44C86.1866666666667 240.8533333333333 67.4133333333333 220.3733333333333 67.4133333333333 195.4133333333334V186.24C74.6666666666667 188.5866666666667 83.84 188.5866666666667 90.6666666666667 188.5866666666667C151.2533333333333 188.5866666666667 202.6666666666667 140.8 202.6666666666667 79.36C202.6666666666667 72.5333333333333 202.6666666666667 63.36 200.1066666666667 56.5333333333333H309.3333333333333C307.2 63.36 307.2 72.5333333333333 307.2 79.36C307.2 143.1466666666667 356.0533333333334 190.9333333333333 416.64 190.9333333333333M93.0133333333333 27.0933333333334C60.5866666666667 27.0933333333334 34.9866666666667 52.0533333333333 34.9866666666667 83.84C34.9866666666667 115.84 60.5866666666667 140.8 93.0133333333333 140.8C125.6533333333333 140.8 151.2533333333333 115.84 151.2533333333333 83.84C151.2533333333333 52.0533333333334 125.6533333333333 27.0933333333334 93.0133333333333 27.0933333333334M93.0133333333333 174.9333333333333C41.8133333333333 174.9333333333333 0 133.9733333333334 0 83.84C0 33.92 41.8133333333333 -7.04 93.0133333333333 -7.04C144.2133333333333 -7.04 186.24 33.9200000000001 186.24 83.84C186.24 133.9733333333334 144.2133333333334 174.9333333333333 93.0133333333333 174.9333333333333M418.9866666666667 27.0933333333334C386.3466666666667 27.0933333333334 360.7466666666667 52.0533333333333 360.7466666666667 83.84C360.7466666666667 115.84 386.3466666666667 140.8 418.9866666666667 140.8C451.4133333333333 140.8 477.0133333333333 115.84 477.0133333333333 83.84C477.0133333333333 52.0533333333334 451.4133333333333 27.0933333333334 418.9866666666667 27.0933333333334M418.9866666666667 174.9333333333333C367.7866666666667 174.9333333333333 325.76 133.9733333333334 325.76 83.84C325.76 33.92 367.7866666666667 -7.04 418.9866666666667 -7.04C470.1866666666666 -7.04 512 33.9200000000001 512 83.84C512 133.9733333333334 470.1866666666666 174.9333333333333 418.9866666666667 174.9333333333333z" /> + <glyph glyph-name="mouse" + unicode="&#xF37D;" + horiz-adv-x="512" d=" M234.6666666666667 425.1733333333334C150.4 414.7200000000001 85.3333333333333 343.04 85.3333333333333 256H234.6666666666667M85.3333333333333 128C85.3333333333333 33.7066666666667 161.7066666666667 -42.6666666666666 256 -42.6666666666666S426.6666666666667 33.7066666666667 426.6666666666667 128V213.3333333333334H85.3333333333333M277.3333333333333 425.1733333333334V256H426.6666666666667C426.6666666666667 343.04 361.3866666666667 414.7200000000001 277.3333333333333 425.1733333333334z" /> + <glyph glyph-name="mouse-off" + unicode="&#xF37E;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L373.3333333333333 4.48C343.04 -24.7466666666667 301.6533333333333 -42.6666666666666 256 -42.6666666666666C161.7066666666667 -42.6666666666666 85.3333333333333 33.7066666666667 85.3333333333333 128V213.3333333333334H164.9066666666667L122.24 256H85.3333333333333C85.3333333333333 267.52 86.4 278.8266666666667 88.5333333333333 289.7066666666667L42.6666666666667 335.5733333333334M234.6666666666667 425.1733333333334V256H230.8266666666667L123.52 363.52C150.4 396.8 189.8666666666667 419.6266666666667 234.6666666666667 425.1733333333334M426.6666666666667 213.3333333333334V128C426.6666666666667 107.7333333333334 423.04 88.3200000000001 416.64 70.1866666666667L273.4933333333334 213.3333333333334H426.6666666666667M277.3333333333333 425.1733333333334C361.3866666666667 414.7200000000001 426.6666666666667 343.04 426.6666666666667 256H277.3333333333333V425.1733333333334z" /> + <glyph glyph-name="mouse-variant" + unicode="&#xF37F;" + horiz-adv-x="512" d=" M298.6666666666667 298.6666666666667H213.3333333333333V403.2C261.9733333333333 393.3866666666667 298.6666666666667 350.2933333333334 298.6666666666667 298.6666666666667M85.3333333333333 298.6666666666667C85.3333333333333 350.2933333333334 122.0266666666667 393.3866666666667 170.6666666666667 403.2V298.6666666666667H85.3333333333333M298.6666666666667 192C298.6666666666667 140.3733333333333 261.9733333333333 97.28 213.3333333333333 87.4666666666667V64C213.3333333333333 28.5866666666667 241.92 0 277.3333333333333 0S341.3333333333333 28.5866666666667 341.3333333333333 64V170.6666666666667C341.3333333333333 217.8133333333334 379.52 256 426.6666666666667 256H469.3333333333333L448 234.6666666666667L469.3333333333333 213.3333333333334H426.6666666666667C403.2 213.3333333333334 384 194.1333333333333 384 170.6666666666667V64C384 5.1200000000001 336.2133333333333 -42.6666666666666 277.3333333333333 -42.6666666666666S170.6666666666667 5.1200000000001 170.6666666666667 64V87.4666666666667C122.0266666666667 97.2800000000001 85.3333333333333 140.3733333333334 85.3333333333333 192.0000000000001V256H298.6666666666667V192z" /> + <glyph glyph-name="mouse-variant-off" + unicode="&#xF380;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L368.8533333333333 9.3866666666667C350.2933333333334 -21.3333333333333 316.16 -42.6666666666666 277.3333333333333 -42.6666666666666C218.4533333333333 -42.6666666666666 170.6666666666667 5.1200000000001 170.6666666666667 64V87.4666666666667C122.0266666666667 97.2800000000001 85.3333333333333 140.3733333333334 85.3333333333333 192.0000000000001V256H122.24L42.6666666666667 335.5733333333334M298.6666666666667 298.6666666666667H213.3333333333333V403.2C261.9733333333333 393.3866666666667 298.6666666666667 350.2933333333334 298.6666666666667 298.6666666666667M170.6666666666667 403.2V316.1600000000001L114.7733333333333 372.2666666666667C129.4933333333334 387.6266666666667 149.3333333333333 398.7200000000001 170.6666666666667 403.2M298.6666666666667 192V188.3733333333333L230.8266666666667 256H298.6666666666667V192M213.3333333333333 87.4666666666667V64C213.3333333333333 28.5866666666667 241.92 0 277.3333333333333 0C304.64 0 327.8933333333333 17.0666666666667 337.0666666666667 41.1733333333333L264.5333333333333 113.7066666666667C250.4533333333333 100.6933333333333 232.96 91.52 213.3333333333333 87.4666666666667M341.3333333333333 170.6666666666668C341.3333333333333 217.8133333333334 379.52 256.0000000000001 426.6666666666667 256.0000000000001H469.3333333333333L448 234.6666666666667L469.3333333333333 213.3333333333334H426.6666666666667C403.2 213.3333333333334 384 194.1333333333334 384 170.6666666666668V102.8266666666667L341.3333333333333 145.4933333333334V170.6666666666667z" /> + <glyph glyph-name="move-resize" + unicode="&#xF655;" + horiz-adv-x="512" d=" M192 426.6666666666667V405.3333333333333H213.3333333333333V341.3333333333334H192V320H256V341.3333333333334H234.6666666666667V405.3333333333333H256V426.6666666666667M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V0C149.3333333333333 -23.6799999999999 168.32 -42.6666666666666 192 -42.6666666666666H448C471.6799999999999 -42.6666666666666 490.6666666666666 -23.6799999999999 490.6666666666666 0V256C490.6666666666666 279.68 471.6799999999999 298.6666666666667 448 298.6666666666667M21.3333333333333 256V192H42.6666666666667V213.3333333333334H106.6666666666667V192H128V256H106.6666666666667V234.6666666666667H42.6666666666667V256M192 256H448V0H192M298.6666666666667 234.6666666666667V213.3333333333334H320V106.6666666666667H234.6666666666667V128H213.3333333333333V64H234.6666666666667V85.3333333333334H320V42.6666666666667H298.6666666666667V21.3333333333334H362.6666666666667V42.6666666666667H341.3333333333333V85.3333333333334H405.3333333333333V64H426.6666666666667V128H405.3333333333333V106.6666666666667H341.3333333333333V213.3333333333334H362.6666666666667V234.6666666666667" /> + <glyph glyph-name="move-resize-variant" + unicode="&#xF656;" + horiz-adv-x="512" d=" M40.1066666666667 438.1866666666667L9.8133333333333 407.8933333333333L119.2533333333333 298.6666666666667H42.6666666666667V256H192V405.3333333333333H149.3333333333333V328.7466666666667M234.6666666666667 298.6666666666667V256H448V128H490.6666666666666V256C490.6666666666666 279.4666666666667 471.4666666666667 298.6666666666667 448 298.6666666666667M149.3333333333333 213.3333333333334V0C149.3333333333333 -23.4666666666667 168.5333333333333 -42.6666666666666 192 -42.6666666666666H320V0H192V213.3333333333334M338.7733333333333 139.52L308.48 109.2266666666667L418.1333333333334 0H362.6666666666667V-42.6666666666666H490.6666666666666V85.3333333333334H448V30.08" /> + <glyph glyph-name="movie" + unicode="&#xF381;" + horiz-adv-x="512" d=" M384 362.6666666666667L426.6666666666667 277.3333333333334H362.6666666666667L320 362.6666666666667H277.3333333333333L320 277.3333333333334H256L213.3333333333333 362.6666666666667H170.6666666666667L213.3333333333333 277.3333333333334H149.3333333333333L106.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V362.6666666666667H384z" /> + <glyph glyph-name="multiplication" + unicode="&#xF382;" + horiz-adv-x="512" d=" M234.6666666666667 384H277.3333333333333V228.9066666666667L411.52 306.3466666666667L432.8533333333333 269.4400000000001L298.6666666666667 192L433.0666666666667 114.3466666666667L411.7333333333334 77.44L277.3333333333333 155.3066666666667V0H234.6666666666667V155.0933333333334L100.0533333333333 77.6533333333334L78.72 114.5600000000001L213.3333333333333 192L79.36 269.6533333333334L100.6933333333333 306.5600000000001L234.6666666666667 229.12V384z" /> + <glyph glyph-name="multiplication-box" + unicode="&#xF383;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V155.0933333333334L337.7066666666667 120.3200000000001L359.04 157.2266666666667L298.6666666666667 192L359.04 226.9866666666667L337.7066666666666 263.8933333333334L277.3333333333333 228.9066666666667V298.6666666666667H234.6666666666667V228.9066666666667L174.2933333333333 263.8933333333333L152.96 226.9866666666667L213.3333333333333 192L152.96 157.2266666666667L174.2933333333333 120.3200000000001L234.6666666666667 155.0933333333334V85.3333333333334z" /> + <glyph glyph-name="music-box" + unicode="&#xF384;" + horiz-adv-x="512" d=" M341.3333333333333 256H277.3333333333333V138.6666666666667C277.3333333333333 109.2266666666667 253.44 85.3333333333334 224 85.3333333333334S170.6666666666667 109.2266666666667 170.6666666666667 138.6666666666667S194.56 192 224 192C236.16 192 247.04 187.9466666666667 256 181.3333333333334V298.6666666666667H341.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="music-box-outline" + unicode="&#xF385;" + horiz-adv-x="512" d=" M341.3333333333333 256H277.3333333333333V138.6666666666667C277.3333333333333 109.2266666666667 253.44 85.3333333333334 224 85.3333333333334S170.6666666666667 109.2266666666667 170.6666666666667 138.6666666666667S194.56 192 224 192C236.16 192 247.04 187.9466666666667 256 181.3333333333334V298.6666666666667H341.3333333333333V256M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="music-circle" + unicode="&#xF386;" + horiz-adv-x="512" d=" M341.3333333333333 256V298.6666666666667H256V181.3333333333334C247.04 187.9466666666667 236.16 192 224 192C194.56 192 170.6666666666667 168.1066666666667 170.6666666666667 138.6666666666667S194.56 85.3333333333334 224 85.3333333333334S277.3333333333333 109.2266666666667 277.3333333333333 138.6666666666667V256H341.3333333333333M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="music-note" + unicode="&#xF387;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C170.6666666666667 192 128 149.3333333333334 128 96S170.6666666666667 0 224 0S320 42.6666666666667 320 96V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-bluetooth" + unicode="&#xF5FE;" + horiz-adv-x="512" d=" M213.3333333333333 384V186.4533333333334C202.6666666666667 190.0800000000001 192 192 181.3333333333333 192C128 192 85.3333333333333 149.3333333333334 85.3333333333333 96S128 0 181.3333333333333 0S277.3333333333333 42.6666666666667 277.3333333333333 96V320H362.6666666666667V384H213.3333333333333M426.6666666666667 298.6666666666667V217.8133333333334L377.8133333333334 266.6666666666667L362.6666666666667 251.52L422.1866666666666 192L362.6666666666667 132.48L377.8133333333334 117.3333333333334L426.6666666666667 166.1866666666667V85.3333333333334H437.3333333333333L498.1333333333333 146.1333333333333L452.48 192L498.3466666666666 237.8666666666667L437.3333333333333 298.6666666666667H426.6666666666667M448 257.92L468.0533333333333 237.8666666666667L448 217.8133333333334V257.92M448 166.1866666666667L468.0533333333333 146.1333333333333L448 126.0800000000001V166.1866666666667z" /> + <glyph glyph-name="music-note-bluetooth-off" + unicode="&#xF5FF;" + horiz-adv-x="512" d=" M213.3333333333333 384V262.8266666666667L277.3333333333333 198.8266666666667V320H362.6666666666667V384H213.3333333333333M69.9733333333333 352L42.6666666666667 324.9066666666667L176.2133333333333 191.36C125.6533333333333 188.8 85.3333333333333 147.2000000000001 85.3333333333333 96C85.3333333333333 42.6666666666667 128 0 181.3333333333333 0C232.5333333333334 0 274.1333333333334 40.3200000000001 276.6933333333333 90.88L377.1733333333333 -9.6L404.48 17.4933333333333L277.3333333333333 144.64L213.3333333333333 208.64L69.9733333333333 352M426.6666666666667 298.6666666666667V217.8133333333334L377.8133333333334 266.6666666666667L362.6666666666667 251.52L422.1866666666666 192L362.6666666666667 132.48L377.8133333333334 117.3333333333334L426.6666666666667 166.1866666666667V85.3333333333334H437.3333333333333L498.1333333333333 146.1333333333333L452.48 192L498.3466666666666 237.8666666666667L437.3333333333333 298.6666666666667H426.6666666666667M448 257.92L468.0533333333333 237.8666666666667L448 217.8133333333334V257.92M448 166.1866666666667L468.0533333333333 146.1333333333333L448 126.0800000000001V166.1866666666667z" /> + <glyph glyph-name="music-note-eighth" + unicode="&#xF388;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-half" + unicode="&#xF389;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V384H256M224 138.6666666666667C247.4666666666667 138.6666666666667 266.6666666666667 119.4666666666667 266.6666666666667 96S247.4666666666667 53.3333333333334 224 53.3333333333334S181.3333333333333 72.5333333333333 181.3333333333333 96S200.5333333333333 138.6666666666667 224 138.6666666666667z" /> + <glyph glyph-name="music-note-off" + unicode="&#xF38A;" + horiz-adv-x="512" d=" M256 384V262.8266666666667L320 198.8266666666667V320H405.3333333333333V384H256M112.64 352L85.3333333333333 324.9066666666667L218.88 191.36C168.32 188.8 128 147.2000000000001 128 96C128 42.6666666666667 170.6666666666667 0 224 0C275.2 0 316.8 40.3200000000001 319.36 90.88L419.84 -9.6L447.1466666666667 17.4933333333333L320 144.64L256 208.64L112.64 352z" /> + <glyph glyph-name="music-note-quarter" + unicode="&#xF38B;" + horiz-adv-x="512" d=" M256 384H320V128H405.3333333333333V64H314.0266666666667C300.8 26.8800000000001 265.8133333333333 0 224 0S147.2 26.8800000000001 133.9733333333333 64H64V128H133.9733333333333C147.2 165.12 182.1866666666667 192 224 192C234.6666666666667 192 245.3333333333333 190.0800000000001 256 186.4533333333334V384z" /> + <glyph glyph-name="music-note-sixteenth" + unicode="&#xF38C;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V234.6666666666667H405.3333333333333V298.6666666666667H320V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-whole" + unicode="&#xF38D;" + horiz-adv-x="512" d=" M224 192C183.4666666666667 192 147.2 166.4 133.5466666666667 128H64V64H133.5466666666667C147.2 25.6 183.4666666666667 0 224 0C264.5333333333333 0 300.8 25.6 314.4533333333333 64H405.3333333333333V128H314.4533333333333C300.8 166.4 264.5333333333333 192 224 192M224 138.6666666666667C247.4666666666667 138.6666666666667 266.6666666666667 119.4666666666667 266.6666666666667 96S247.4666666666667 53.3333333333334 224 53.3333333333334S181.3333333333333 72.5333333333333 181.3333333333333 96S200.5333333333333 138.6666666666667 224 138.6666666666667z" /> + <glyph glyph-name="nature" + unicode="&#xF38E;" + horiz-adv-x="512" d=" M277.3333333333333 104.1066666666667C351.36 112.8533333333334 408.9600000000001 175.7866666666666 408.9600000000001 252.3733333333333C408.9600000000001 334.9333333333333 342.1866666666667 401.7066666666667 259.6266666666667 401.7066666666667S110.2933333333334 334.9333333333333 110.2933333333334 252.3733333333333C110.2933333333334 178.3466666666666 164.0533333333334 117.3333333333333 234.6666666666667 105.3866666666667V21.3333333333334H106.6666666666667V-21.3333333333333H405.3333333333333V21.3333333333334H277.3333333333333V104.1066666666667z" /> + <glyph glyph-name="nature-people" + unicode="&#xF38F;" + horiz-adv-x="512" d=" M96 213.3333333333334C113.7066666666667 213.3333333333334 128 227.6266666666667 128 245.3333333333334S113.7066666666667 277.3333333333334 96 277.3333333333334S64 263.04 64 245.3333333333334S78.2933333333333 213.3333333333334 96 213.3333333333334M472.96 252.3733333333334C472.96 334.9333333333334 406.1866666666667 401.7066666666667 323.6266666666667 401.7066666666667S174.2933333333334 334.9333333333334 174.2933333333334 252.3733333333334C174.2933333333334 178.3466666666667 228.0533333333334 117.3333333333334 298.6666666666667 105.3866666666667V21.3333333333334H128V85.3333333333334H149.3333333333333V170.6666666666667C149.3333333333333 182.4 139.7333333333333 192 128 192H64C52.2666666666667 192 42.6666666666667 182.4 42.6666666666667 170.6666666666667V85.3333333333334H64V-21.3333333333333H405.3333333333333V21.3333333333334H341.3333333333333V104.1066666666667C415.36 112.8533333333334 472.96 175.7866666666666 472.96 252.3733333333333z" /> + <glyph glyph-name="navigation" + unicode="&#xF390;" + horiz-adv-x="512" d=" M256 405.3333333333333L96 15.1466666666667L111.1466666666667 0L256 64L400.8533333333333 0L416 15.1466666666667L256 405.3333333333333z" /> + <glyph glyph-name="near-me" + unicode="&#xF5CD;" + horiz-adv-x="512" d=" M448 384L64 223.36V202.6666666666667L209.92 145.92L266.6666666666667 0H287.1466666666667L448 384z" /> + <glyph glyph-name="needle" + unicode="&#xF391;" + horiz-adv-x="512" d=" M237.8666666666667 124.16L207.5733333333333 154.24L237.8666666666667 184.5333333333334L267.9466666666667 154.24L298.0266666666667 184.5333333333334L267.9466666666667 214.6133333333334L298.0266666666667 244.6933333333334L328.32 214.6133333333334L358.4 244.6933333333334L298.0266666666667 305.0666666666667L147.2 154.24L207.5733333333333 93.8666666666667L237.8666666666667 124.16M65.7066666666667 42.6666666666667L132.2666666666667 109.0133333333333L87.04 154.24L298.0266666666667 365.4400000000001L343.4666666666667 320L373.3333333333333 350.2933333333334L343.4666666666667 380.5866666666667L373.3333333333333 410.6666666666667L464 320L433.92 290.1333333333334L403.6266666666667 320L373.3333333333333 290.1333333333334L418.7733333333333 244.6933333333334L207.5733333333333 33.7066666666667L162.3466666666666 78.9333333333333L65.7066666666666 -17.92V42.6666666666667z" /> + <glyph glyph-name="nest-protect" + unicode="&#xF392;" + horiz-adv-x="512" d=" M256 64C326.6133333333334 64 384 121.3866666666667 384 192C384 262.8266666666667 326.6133333333334 320 256 320C185.1733333333333 320 128 262.8266666666667 128 192C128 121.3866666666667 185.3866666666667 64 256 64M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M170.6666666666667 192C170.6666666666667 239.1466666666667 208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192z" /> + <glyph glyph-name="nest-thermostat" + unicode="&#xF393;" + horiz-adv-x="512" d=" M361.6 86.4L316.3733333333333 131.6266666666667C331.7333333333334 147.2000000000001 341.3333333333333 168.5333333333334 341.3333333333333 192C341.3333333333333 207.7866666666667 336.8533333333333 222.5066666666667 329.1733333333333 234.6666666666667L375.4666666666667 281.3866666666667C394.6666666666667 256 405.3333333333333 225.4933333333334 405.3333333333333 192C405.3333333333333 150.8266666666667 388.6933333333333 113.4933333333334 361.6 86.4M256 341.3333333333334C289.4933333333334 341.3333333333334 320 330.6666666666667 345.3866666666667 311.4666666666667L298.6666666666667 265.3866666666667C286.5066666666667 272.8533333333334 271.7866666666667 277.3333333333334 256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192C170.6666666666667 168.5333333333334 180.2666666666667 147.2000000000001 195.6266666666667 131.6266666666667L150.4 86.4C123.3066666666667 113.4933333333334 106.6666666666667 150.8266666666667 106.6666666666667 192C106.6666666666667 274.5600000000001 173.44 341.3333333333334 256 341.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="new-box" + unicode="&#xF394;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667C450.3466666666667 362.6666666666667 469.3333333333333 343.68 469.3333333333333 320V64C469.3333333333333 40.3200000000001 450.3466666666667 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.3200000000001 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667M181.3333333333333 128V256H154.6666666666667V181.3333333333334L101.3333333333333 256H74.6666666666667V128H101.3333333333333V202.6666666666667L155.7333333333333 128H181.3333333333333M288 229.12V256H202.6666666666667V128H288V154.6666666666667H234.6666666666667V178.3466666666667H288V205.2266666666667H234.6666666666667V229.12H288M437.3333333333333 149.3333333333333V256H410.6666666666667V160H386.7733333333333V234.6666666666667H360.1066666666667V160H336V256H309.3333333333333V149.3333333333334C309.3333333333333 137.6 318.9333333333333 128 330.6666666666667 128H416C427.7333333333334 128 437.3333333333333 137.6 437.3333333333333 149.3333333333334z" /> + <glyph glyph-name="newspaper" + unicode="&#xF395;" + horiz-adv-x="512" d=" M426.6666666666667 213.3333333333334H85.3333333333333V277.3333333333334H426.6666666666667M426.6666666666667 128H277.3333333333333V170.6666666666667H426.6666666666667M426.6666666666667 42.6666666666667H277.3333333333333V85.3333333333334H426.6666666666667M234.6666666666667 42.6666666666667H85.3333333333333V170.6666666666667H234.6666666666667M433.7066666666666 348.3733333333334L398.2933333333334 384L362.6666666666667 348.3733333333334L327.04 384L291.6266666666667 348.3733333333334L256 384L220.3733333333333 348.3733333333334L184.96 384L149.3333333333333 348.3733333333334L113.7066666666667 384L78.2933333333333 348.3733333333334L42.6666666666667 384V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V384L433.7066666666666 348.3733333333334z" /> + <glyph glyph-name="nfc" + unicode="&#xF396;" + horiz-adv-x="512" d=" M225.92 284.5866666666667S238.72 290.3466666666667 246.8266666666667 281.1733333333334C254.9333333333334 271.7866666666667 275.6266666666667 235.9466666666667 275.6266666666667 200.1066666666667C275.6266666666667 164.2666666666667 266.6666666666667 126.08 257.0666666666667 113.4933333333334C247.8933333333334 100.6933333333333 238.7200000000001 100.6933333333333 231.68 105.3866666666667C224.8533333333334 109.8666666666667 117.3333333333334 192 111.5733333333334 194.3466666666667C105.6 196.6933333333334 103.4666666666667 190.9333333333334 109.2266666666667 160.0000000000001C114.9866666666667 128.0000000000001 105.6 119.2533333333334 97.4933333333334 117.9733333333334C89.6 117.3333333333334 65.28 123.7333333333334 64 188.5866666666667C62.9333333333334 253.2266666666667 80.2133333333333 263.6800000000001 88.32 263.6800000000001C103.4666666666667 263.6800000000001 219.0933333333333 160 226.9866666666667 160.8533333333334C234.0266666666667 161.9200000000001 237.44 205.8666666666667 224 240.6400000000001C208.64 278.1866666666667 225.92 284.5866666666667 225.92 284.5866666666667M411.7333333333334 349.2266666666667C450.56 272.2133333333334 448 199.2533333333333 448 192C448 184.7466666666667 450.56 111.7866666666667 411.7333333333334 34.7733333333333C411.7333333333334 34.7733333333333 401.7066666666667 23.04 386.56 30.08C371.6266666666667 37.12 376.7466666666667 55.4666666666667 376.7466666666667 55.4666666666667S408.32 116.2666666666667 407.4666666666667 190.9333333333334V192C408.32 266.6666666666667 376.7466666666667 328.5333333333334 376.7466666666667 328.5333333333334S371.6266666666667 346.88 386.56 353.92C401.7066666666667 360.9600000000001 411.7333333333334 349.2266666666667 411.7333333333334 349.2266666666667M336.4266666666667 314.6666666666667C368.2133333333334 256.8533333333334 366.08 199.2533333333333 365.6533333333333 192C366.08 184.7466666666667 368.2133333333334 129.7066666666667 336.4266666666666 67.2C336.4266666666666 67.2 326.4 55.4666666666666 311.2533333333334 62.5066666666667C296.32 69.5466666666666 301.44 87.8933333333334 301.44 87.8933333333334S321.92 117.3333333333334 325.12 190.9333333333334V192C322.9866666666666 266.0266666666667 301.44 293.76 301.44 293.76S296.32 312.32 311.2533333333334 319.1466666666667C326.4 326.1866666666667 336.4266666666666 314.6666666666667 336.4266666666666 314.6666666666667z" /> + <glyph glyph-name="nfc-tap" + unicode="&#xF397;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M85.3333333333333 362.6666666666667H234.6666666666667C258.1333333333334 362.6666666666667 277.3333333333333 343.4666666666667 277.3333333333333 320V256H234.6666666666667V320H85.3333333333333V213.3333333333334H128V256L192 192L128 128V170.6666666666667H85.3333333333333C61.8666666666667 170.6666666666667 42.6666666666667 189.8666666666667 42.6666666666667 213.3333333333334V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M426.6666666666667 21.3333333333334H277.3333333333333C253.8666666666667 21.3333333333334 234.6666666666667 40.5333333333333 234.6666666666667 64V128H277.3333333333333V64H426.6666666666667V170.6666666666667H384V128L320 192L384 256V213.3333333333334H426.6666666666667C450.1333333333334 213.3333333333334 469.3333333333333 194.1333333333333 469.3333333333333 170.6666666666667V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334z" /> + <glyph glyph-name="nfc-variant" + unicode="&#xF398;" + horiz-adv-x="512" d=" M384 320H277.3333333333333C253.8666666666667 320 234.6666666666667 300.8 234.6666666666667 277.3333333333334V228.6933333333334C222.08 221.44 213.3333333333333 207.7866666666667 213.3333333333333 192C213.3333333333333 168.5333333333334 232.5333333333334 149.3333333333334 256 149.3333333333334C279.68 149.3333333333334 298.6666666666667 168.5333333333334 298.6666666666667 192C298.6666666666667 207.7866666666667 290.1333333333334 221.44 277.3333333333333 228.6933333333334V277.3333333333334H341.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334H213.3333333333333V320H128V64H384M426.6666666666667 21.3333333333334H85.3333333333333V362.6666666666667H426.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.3466666666667 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="nodejs" + unicode="&#xF399;" + horiz-adv-x="512" d=" M256 408.5333333333333C250.24 408.5333333333333 244.2666666666667 407.04 239.36 404.2666666666667L80.64 312.5333333333334C70.4 306.56 64 295.4666666666667 64 283.52V100.48C64 88.5333333333334 70.4 77.4400000000001 80.64 71.4666666666667L122.24 47.5733333333334C142.5066666666667 37.76 149.3333333333333 37.5466666666667 158.72 37.5466666666667C188.5866666666667 37.5466666666667 205.8666666666667 55.6800000000001 205.8666666666667 87.2533333333335V267.9466666666667C205.8666666666667 270.5066666666667 203.7333333333334 272.6400000000001 201.1733333333333 272.6400000000001H181.3333333333333C178.56 272.6400000000001 176.4266666666667 270.5066666666667 176.4266666666667 267.9466666666667V87.2533333333333C176.4266666666667 73.1733333333334 161.92 59.3066666666667 138.6666666666667 71.04L94.9333333333333 96C93.44 97.0666666666667 92.5866666666667 98.7733333333333 92.5866666666667 100.48V283.52C92.5866666666667 285.44 93.44 287.1466666666667 94.9333333333333 288L253.6533333333334 379.52C254.9333333333334 380.3733333333334 257.0666666666667 380.3733333333334 258.3466666666667 379.52L417.0666666666667 288C418.56 287.1466666666667 419.4133333333333 285.44 419.4133333333333 283.52V100.48C419.4133333333333 98.7733333333334 418.56 97.0666666666667 417.0666666666667 96L258.3466666666667 4.48C257.0666666666666 3.6266666666667 254.9333333333333 3.6266666666667 253.44 4.48L213.3333333333333 28.8000000000001C211.6266666666667 29.4400000000001 209.92 29.6533333333334 208.8533333333333 29.0133333333334C197.5466666666667 22.6133333333334 195.4133333333333 21.3333333333334 184.96 18.1333333333334C182.4 17.2800000000001 178.3466666666666 15.7866666666667 186.4533333333333 11.3066666666667L239.36 -20.0533333333333C244.48 -23.04 250.0266666666667 -24.5333333333333 256 -24.5333333333333S267.52 -23.04 272.64 -20.0533333333333L431.36 71.4666666666667C441.6 77.4400000000001 448 88.5333333333334 448 100.48V283.52C448 295.4666666666667 441.6 306.56 431.36 312.5333333333334L272.64 404.2666666666667C267.7333333333333 407.04 261.9733333333333 408.5333333333334 256 408.5333333333334M298.6666666666667 277.3333333333334C253.44 277.3333333333334 226.3466666666667 258.3466666666667 226.3466666666667 226.3466666666667C226.3466666666667 192 253.2266666666667 181.9733333333334 296.7466666666667 177.7066666666667C348.5866666666667 172.5866666666667 352.64 164.9066666666667 352.64 154.6666666666667C352.64 136.96 338.3466666666667 129.4933333333334 305.0666666666667 129.4933333333334C262.8266666666667 129.4933333333334 253.8666666666667 139.9466666666667 250.6666666666667 160.8533333333334C250.24 162.9866666666667 248.32 164.6933333333334 245.9733333333333 164.6933333333334H225.4933333333334C222.9333333333333 164.6933333333334 221.0133333333333 162.7733333333334 221.0133333333333 160C221.0133333333333 133.5466666666667 235.52 101.5466666666666 305.0666666666666 101.5466666666666C355.2 101.5466666666666 384 121.3866666666667 384 155.9466666666667C384 190.2933333333333 360.9600000000001 199.2533333333333 312.1066666666667 205.8666666666667C262.8266666666666 212.2666666666667 257.92 215.68 257.92 227.2C257.92 236.8 262.1866666666666 249.6 298.6666666666667 249.6C330.6666666666667 249.6 343.2533333333334 242.56 348.16 220.5866666666667C348.5866666666667 218.4533333333334 350.5066666666667 216.96 352.64 216.96H373.3333333333333C374.4 216.96 375.68 217.3866666666667 376.5333333333333 218.4533333333334C377.3866666666666 219.3066666666667 378.0266666666667 220.5866666666667 377.6 221.8666666666667C374.6133333333333 259.8400000000001 349.44 277.3333333333334 298.6666666666667 277.3333333333334z" /> + <glyph glyph-name="note" + unicode="&#xF39A;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667V352L416 234.6666666666667M106.6666666666667 384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V256L320 384H106.6666666666667z" /> + <glyph glyph-name="note-outline" + unicode="&#xF39B;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V192H256V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="note-plus" + unicode="&#xF39C;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M192 64H234.6666666666667V128H298.6666666666667V170.6666666666667H234.6666666666667V234.6666666666667H192V170.6666666666667H128V128H192V64z" /> + <glyph glyph-name="note-plus-outline" + unicode="&#xF39D;" + horiz-adv-x="512" d=" M320 234.6666666666667H437.3333333333333L320 352V234.6666666666667M85.3333333333333 384H341.3333333333333L469.3333333333333 256V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.6533333333333 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V341.3333333333334C42.6666666666667 365.0133333333333 61.6533333333333 384 85.3333333333333 384M85.3333333333333 341.3333333333334V42.6666666666667H426.6666666666667V192H277.3333333333333V341.3333333333334H85.3333333333333M170.6666666666667 85.3333333333334V128H128V170.6666666666667H170.6666666666667V213.3333333333334H213.3333333333333V170.6666666666667H256V128H213.3333333333333V85.3333333333334H170.6666666666667z" /> + <glyph glyph-name="note-text" + unicode="&#xF39E;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M106.6666666666667 192V149.3333333333334H405.3333333333333V192H106.6666666666667M106.6666666666667 106.6666666666667V64H298.6666666666667V106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="notification-clear-all" + unicode="&#xF39F;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667H405.3333333333333V213.3333333333334H106.6666666666667M64 85.3333333333334H362.6666666666667V128H64M149.3333333333333 298.6666666666667V256H448V298.6666666666667" /> + <glyph glyph-name="numeric" + unicode="&#xF3A0;" + horiz-adv-x="512" d=" M85.3333333333333 85.3333333333334V256H42.6666666666667V298.6666666666667H128V85.3333333333334H85.3333333333333M469.3333333333333 128C469.3333333333333 104.3200000000001 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H341.3333333333333V128H426.6666666666667V170.6666666666667H384V213.3333333333334H426.6666666666667V256H341.3333333333333V298.6666666666667H426.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256V224C469.3333333333333 206.2933333333334 455.04 192 437.3333333333333 192C455.04 192 469.3333333333333 177.7066666666667 469.3333333333333 160V128M298.6666666666667 128V85.3333333333334H170.6666666666667V170.6666666666667C170.6666666666667 194.3466666666667 189.8666666666667 213.3333333333334 213.3333333333333 213.3333333333334H256V256H170.6666666666667V298.6666666666667H256C279.4666666666667 298.6666666666667 298.6666666666667 279.4666666666667 298.6666666666667 256V213.3333333333334C298.6666666666667 189.6533333333334 279.4666666666667 170.6666666666667 256 170.6666666666667H213.3333333333333V128H298.6666666666667z" /> + <glyph glyph-name="numeric-0-box" + unicode="&#xF3A1;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 298.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V128C192 104.5333333333333 211.2 85.3333333333334 234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.4666666666667 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667M234.6666666666667 256H277.3333333333333V128H234.6666666666667V256z" /> + <glyph glyph-name="numeric-0-box-multiple-outline" + unicode="&#xF3A2;" + horiz-adv-x="512" d=" M448 85.3333333333334V384H149.3333333333333V85.3333333333334H448M448 426.6666666666667C471.4666666666667 426.6666666666667 490.6666666666666 407.4666666666667 490.6666666666666 384V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V384C106.6666666666667 407.4666666666667 125.8666666666667 426.6666666666667 149.3333333333333 426.6666666666667H448M64 341.3333333333334V0H405.3333333333333V-42.6666666666666H64C40.5333333333333 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V341.3333333333334H64M277.3333333333333 341.3333333333334H320C343.4666666666667 341.3333333333334 362.6666666666667 322.1333333333334 362.6666666666667 298.6666666666667V170.6666666666667C362.6666666666667 147.2000000000001 343.4666666666667 128 320 128H277.3333333333333C253.8666666666667 128 234.6666666666667 147.2000000000001 234.6666666666667 170.6666666666667V298.6666666666667C234.6666666666667 322.1333333333334 253.8666666666667 341.3333333333334 277.3333333333333 341.3333333333334M277.3333333333333 298.6666666666667V170.6666666666667H320V298.6666666666667H277.3333333333333z" /> + <glyph glyph-name="numeric-0-box-outline" + unicode="&#xF3A3;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 279.4666666666667 320 256V128C320 104.5333333333333 300.8 85.3333333333334 277.3333333333333 85.3333333333334H234.6666666666667C211.2 85.3333333333334 192 104.5333333333333 192 128V256C192 279.4666666666667 211.2 298.6666666666667 234.6666666666667 298.6666666666667M234.6666666666667 256V128H277.3333333333333V256H234.6666666666667z" /> + <glyph glyph-name="numeric-1-box" + unicode="&#xF3A4;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H256V256H213.3333333333333V298.6666666666667H298.6666666666667M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-1-box-multiple-outline" + unicode="&#xF3A5;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M298.6666666666667 128H341.3333333333333V341.3333333333334H256V298.6666666666667H298.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-1-box-outline" + unicode="&#xF3A6;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M256 85.3333333333334H298.6666666666667V298.6666666666667H213.3333333333333V256H256" /> + <glyph glyph-name="numeric-2-box" + unicode="&#xF3A7;" + horiz-adv-x="512" d=" M320 213.3333333333334C320 189.6533333333334 300.8 170.6666666666667 277.3333333333333 170.6666666666667H234.6666666666667V128H320V85.3333333333334H192V170.6666666666667C192 194.3466666666667 211.2 213.3333333333334 234.6666666666667 213.3333333333334H277.3333333333333V256H192V298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 279.4666666666667 320 256M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-2-box-multiple-outline" + unicode="&#xF3A8;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H320C343.4666666666667 213.3333333333334 362.6666666666667 232.5333333333334 362.6666666666667 256V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H234.6666666666667V298.6666666666667H320V256H277.3333333333333C253.8666666666667 256 234.6666666666667 236.8 234.6666666666667 213.3333333333334V128H362.6666666666667M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-2-box-outline" + unicode="&#xF3A9;" + horiz-adv-x="512" d=" M320 128H234.6666666666667V170.6666666666667H277.3333333333333C300.8 170.6666666666667 320 189.8666666666667 320 213.3333333333334V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H192V256H277.3333333333333V213.3333333333334H234.6666666666667C211.2 213.3333333333334 192 194.1333333333333 192 170.6666666666667V85.3333333333334H320M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-3-box" + unicode="&#xF3AA;" + horiz-adv-x="512" d=" M320 224C320 206.2933333333334 305.7066666666667 192 288 192C305.92 192 320 177.7066666666667 320 160V128C320 104.3200000000001 301.0133333333333 85.3333333333334 277.3333333333333 85.3333333333334H192V128H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V256H192V298.6666666666667H277.3333333333333C301.0133333333333 298.6666666666667 320 279.68 320 256M405.3333333333333 384H106.6666666666667C83.4133333333333 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C429.0133333333333 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-3-box-multiple-outline" + unicode="&#xF3AB;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V202.6666666666667C362.6666666666667 220.3733333333333 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667C348.3733333333333 234.6666666666667 362.6666666666667 248.96 362.6666666666667 266.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H234.6666666666667V298.6666666666667H320V256H277.3333333333333V213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667z" /> + <glyph glyph-name="numeric-3-box-outline" + unicode="&#xF3AC;" + horiz-adv-x="512" d=" M320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H192V256H277.3333333333333V213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-4-box" + unicode="&#xF3AD;" + horiz-adv-x="512" d=" M320 85.3333333333334H277.3333333333333V170.6666666666667H192V298.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-4-box-multiple-outline" + unicode="&#xF3AE;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M320 128H362.6666666666667V341.3333333333334H320V256H277.3333333333333V341.3333333333334H234.6666666666667V213.3333333333334H320M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-4-box-outline" + unicode="&#xF3AF;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M277.3333333333333 85.3333333333334H320V298.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H192V170.6666666666667H277.3333333333333" /> + <glyph glyph-name="numeric-5-box" + unicode="&#xF3B0;" + horiz-adv-x="512" d=" M320 256H234.6666666666667V213.3333333333334H277.3333333333333C300.8 213.3333333333334 320 194.1333333333333 320 170.6666666666667V128C320 104.3200000000001 300.8 85.3333333333334 277.3333333333333 85.3333333333334H192V128H277.3333333333333V170.6666666666667H192V298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-5-box-multiple-outline" + unicode="&#xF3B1;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V213.3333333333334C362.6666666666667 237.0133333333333 343.4666666666667 256 320 256H277.3333333333333V298.6666666666667H362.6666666666667V341.3333333333334H234.6666666666667V213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667z" /> + <glyph glyph-name="numeric-5-box-outline" + unicode="&#xF3B2;" + horiz-adv-x="512" d=" M320 128V170.6666666666667C320 194.3466666666667 300.8 213.3333333333334 277.3333333333333 213.3333333333334H234.6666666666667V256H320V298.6666666666667H192V170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-6-box" + unicode="&#xF3B3;" + horiz-adv-x="512" d=" M320 256H234.6666666666667V213.3333333333334H277.3333333333333C300.8 213.3333333333334 320 194.1333333333333 320 170.6666666666667V128C320 104.3200000000001 300.8 85.3333333333334 277.3333333333333 85.3333333333334H234.6666666666667C211.2 85.3333333333334 192 104.5333333333333 192 128V256C192 279.68 211.2 298.6666666666667 234.6666666666667 298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M234.6666666666667 128H277.3333333333333V170.6666666666667H234.6666666666667V128z" /> + <glyph glyph-name="numeric-6-box-multiple-outline" + unicode="&#xF3B4;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333M277.3333333333333 128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V213.3333333333334C362.6666666666667 237.0133333333333 343.4666666666667 256 320 256H277.3333333333333V298.6666666666667H362.6666666666667V341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V170.6666666666667C234.6666666666667 146.9866666666667 253.8666666666667 128 277.3333333333333 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-6-box-outline" + unicode="&#xF3B5;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V170.6666666666667C320 194.3466666666667 300.8 213.3333333333334 277.3333333333333 213.3333333333334H234.6666666666667V256H320V298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-7-box" + unicode="&#xF3B6;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334L320 256V298.6666666666667H192V256H277.3333333333333L192 85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="numeric-7-box-multiple-outline" + unicode="&#xF3B7;" + horiz-adv-x="512" d=" M277.3333333333333 128L362.6666666666667 298.6666666666667V341.3333333333334H234.6666666666667V298.6666666666667H320L234.6666666666667 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-7-box-outline" + unicode="&#xF3B8;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334L320 256V298.6666666666667H192V256H277.3333333333333L192 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-8-box" + unicode="&#xF3B9;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V224C192 206.2933333333334 206.2933333333333 192 224 192C206.2933333333333 192 192 177.7066666666667 192 160V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667V170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667V256z" /> + <glyph glyph-name="numeric-8-box-multiple-outline" + unicode="&#xF3BA;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333M277.3333333333333 298.6666666666667H320V256H277.3333333333333M277.3333333333333 128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V202.6666666666667C362.6666666666667 220.3733333333333 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667C348.3733333333333 234.6666666666667 362.6666666666667 248.96 362.6666666666667 266.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V266.6666666666667C234.6666666666667 248.96 248.96 234.6666666666667 266.6666666666667 234.6666666666667C248.96 234.6666666666667 234.6666666666667 220.3733333333333 234.6666666666667 202.6666666666667V170.6666666666667C234.6666666666667 146.9866666666667 253.8666666666667 128 277.3333333333333 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-8-box-outline" + unicode="&#xF3BB;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V224C192 206.2933333333334 206.2933333333333 192 224 192C206.2933333333333 192 192 177.7066666666667 192 160V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-9-box" + unicode="&#xF3BC;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333V213.3333333333334M277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.6533333333334 211.2 170.6666666666667 234.6666666666667 170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667z" /> + <glyph glyph-name="numeric-9-box-multiple-outline" + unicode="&#xF3BD;" + horiz-adv-x="512" d=" M320 256H277.3333333333333V298.6666666666667H320M320 341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V256C234.6666666666667 232.32 253.8666666666667 213.3333333333334 277.3333333333333 213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-9-box-outline" + unicode="&#xF3BE;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.6533333333334 211.2 170.6666666666667 234.6666666666667 170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-9-plus-box" + unicode="&#xF3BF;" + horiz-adv-x="512" d=" M448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334M405.3333333333333 213.3333333333334H362.6666666666667V256H320V213.3333333333334H277.3333333333333V170.6666666666667H320V128H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334M213.3333333333333 298.6666666666667H170.6666666666667C147.2 298.6666666666667 128 279.4666666666667 128 256V213.3333333333334C128 189.6533333333334 147.2 170.6666666666667 170.6666666666667 170.6666666666667H213.3333333333333V128H128V85.3333333333334H213.3333333333333C236.8 85.3333333333334 256 104.5333333333333 256 128V256C256 279.68 236.8 298.6666666666667 213.3333333333333 298.6666666666667M170.6666666666667 256H213.3333333333333V213.3333333333334H170.6666666666667V256z" /> + <glyph glyph-name="numeric-9-plus-box-multiple-outline" + unicode="&#xF3C0;" + horiz-adv-x="512" d=" M448 256H405.3333333333333V298.6666666666667H362.6666666666667V256H320V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334H448V85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M234.6666666666667 256V277.3333333333334H256V256M298.6666666666667 192V277.3333333333334C298.6666666666667 301.0133333333333 279.4666666666667 320 256 320H234.6666666666667C211.2 320 192 300.8 192 277.3333333333334V256C192 232.32 211.2 213.3333333333334 234.6666666666667 213.3333333333334H256V192H192V149.3333333333334H256C279.4666666666667 149.3333333333334 298.6666666666667 168.5333333333334 298.6666666666667 192M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-9-plus-box-outline" + unicode="&#xF3C1;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H362.6666666666667V256H320V213.3333333333334H277.3333333333333V170.6666666666667H320V128H362.6666666666667V170.6666666666667H405.3333333333333V42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M192 213.3333333333334V234.6666666666667H213.3333333333333V213.3333333333334M256 149.3333333333334V234.6666666666667C256 258.3466666666667 236.8 277.3333333333334 213.3333333333333 277.3333333333334H192C168.5333333333333 277.3333333333334 149.3333333333333 258.1333333333334 149.3333333333333 234.6666666666667V213.3333333333334C149.3333333333333 189.6533333333334 168.5333333333333 170.6666666666667 192 170.6666666666667H213.3333333333333V149.3333333333334H149.3333333333333V106.6666666666667H213.3333333333333C236.8 106.6666666666667 256 125.8666666666667 256 149.3333333333334z" /> + <glyph glyph-name="nutrition" + unicode="&#xF3C2;" + horiz-adv-x="512" d=" M469.3333333333333 64C469.3333333333333 16.8533333333334 431.1466666666667 -21.3333333333333 384 -21.3333333333333H298.6666666666667C251.52 -21.3333333333333 213.3333333333333 16.8533333333334 213.3333333333333 64V106.6666666666667H469.3333333333333V64M85.3333333333333 384H298.6666666666667C322.1333333333334 384 341.3333333333333 364.8 341.3333333333333 341.3333333333334V149.3333333333334H170.6666666666667V42.6666666666667H85.3333333333333C61.8666666666667 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384M85.3333333333333 320V277.3333333333334H128V320H85.3333333333333M298.6666666666667 277.3333333333334V320H170.6666666666667V277.3333333333334H298.6666666666667M85.3333333333333 234.6666666666667V192H128V234.6666666666667H85.3333333333333M170.6666666666667 234.6666666666667V192H298.6666666666667V234.6666666666667H170.6666666666667M85.3333333333333 149.3333333333334V106.6666666666667H128V149.3333333333334H85.3333333333333z" /> + <glyph glyph-name="octagon" + unicode="&#xF3C3;" + horiz-adv-x="512" d=" M335.5733333333333 384H176.4266666666667L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334" /> + <glyph glyph-name="octagon-outline" + unicode="&#xF3C4;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333C373.3333333333333 37.5466666666667 448 112.4266666666667 448 112.4266666666667V271.5733333333334L335.5733333333333 384M194.1333333333333 341.3333333333334H317.8666666666666L405.3333333333333 253.8666666666667V130.1333333333334L317.8666666666667 42.6666666666667H194.1333333333333L106.6666666666667 130.1333333333333V253.8666666666667" /> + <glyph glyph-name="odnoklassniki" + unicode="&#xF3C5;" + horiz-adv-x="512" d=" M380.3733333333333 176.2133333333334C374.3999999999999 188.3733333333333 357.5466666666666 198.6133333333334 335.1466666666666 181.3333333333334C304.64 157.0133333333333 255.9999999999999 157.0133333333333 255.9999999999999 157.0133333333333S207.3599999999999 157.0133333333333 176.8533333333333 181.3333333333334C154.4533333333332 198.6133333333334 137.5999999999999 188.3733333333333 131.6266666666666 176.2133333333334C120.9599999999999 154.88 132.9066666666666 144.4266666666667 159.9999999999999 127.1466666666667C183.2533333333333 112.2133333333334 215.0399999999999 106.6666666666667 235.5199999999999 104.5333333333334L218.4533333333332 87.4666666666667C194.1333333333333 63.36 170.6666666666667 40.1066666666667 154.6666666666667 23.8933333333334C145.0666666666667 14.08 145.0666666666667 -1.4933333333333 154.6666666666667 -10.6666666666666L157.6533333333333 -14.08C167.2533333333333 -23.6799999999999 183.04 -23.6799999999999 192.64 -14.08L256 49.4933333333333C280.5333333333333 25.3866666666667 303.7866666666667 2.1333333333334 320 -14.08C329.6 -23.6799999999999 345.1733333333333 -23.6799999999999 354.9866666666667 -14.08L357.76 -10.6666666666666C367.5733333333333 -1.4933333333333 367.5733333333333 14.08 357.76 23.8933333333334L294.1866666666666 87.4666666666667L277.3333333333333 104.7466666666667C297.6 106.6666666666667 328.96 112.4266666666667 352 127.1466666666667C379.0933333333333 144.4266666666667 391.04 154.8800000000001 380.3733333333333 176.2133333333334M256 350.5066666666667C285.44 350.5066666666667 309.3333333333333 326.6133333333334 309.3333333333333 297.3866666666667C309.3333333333333 267.9466666666667 285.44 244.2666666666667 256 244.2666666666667S202.6666666666667 267.9466666666667 202.6666666666667 297.3866666666667C202.6666666666667 326.6133333333334 226.56 350.5066666666667 256 350.5066666666667M256 189.4400000000001C315.7333333333334 189.4400000000001 363.9466666666666 237.6533333333334 363.9466666666666 297.3866666666667C363.9466666666666 356.9066666666667 315.7333333333334 405.3333333333333 256 405.3333333333333S148.0533333333334 356.9066666666667 148.0533333333334 297.3866666666667C148.0533333333334 237.6533333333334 196.2666666666667 189.4400000000001 256 189.4400000000001z" /> + <glyph glyph-name="office" + unicode="&#xF3C6;" + horiz-adv-x="512" d=" M64 64L149.3333333333333 90.6666666666667V298.6666666666667L298.6666666666667 341.3333333333334V32L74.6666666666667 58.6666666666667L298.6666666666667 -21.3333333333333L426.6666666666667 5.3333333333334V373.3333333333334L297.6 405.3333333333333L64 325.3333333333334V64z" /> + <glyph glyph-name="oil" + unicode="&#xF3C7;" + horiz-adv-x="512" d=" M469.3333333333333 181.3333333333334S512 135.04 512 106.6666666666667C512 83.2 492.8 64 469.3333333333333 64S426.6666666666667 83.2 426.6666666666667 106.6666666666667C426.6666666666667 135.04 469.3333333333333 181.3333333333334 469.3333333333333 181.3333333333334M128 320H213.3333333333333C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334H192V234.6666666666667H234.6666666666667C250.4533333333333 234.6666666666667 264.32 226.1333333333334 271.5733333333333 213.3333333333334L410.4533333333334 293.5466666666667L480 253.2266666666667C490.6666666666666 247.4666666666667 493.6533333333333 234.6666666666667 487.8933333333333 224C481.92 213.9733333333333 469.3333333333333 210.3466666666667 458.6666666666666 216.32L413.8666666666666 242.1333333333334L336 107.3066666666667C328.7466666666666 94.2933333333334 314.6666666666667 85.3333333333334 298.6666666666667 85.3333333333334H106.6666666666667C83.2 85.3333333333334 64 104.5333333333333 64 128V192C64 215.4666666666667 83.2 234.6666666666667 106.6666666666667 234.6666666666667H149.3333333333333V277.3333333333334H128C116.2666666666667 277.3333333333334 106.6666666666667 286.9333333333334 106.6666666666667 298.6666666666667S116.2666666666667 320 128 320M106.6666666666667 192V128H298.6666666666667L342.6133333333333 204.16L268.8 161.4933333333334L249.3866666666666 192H106.6666666666667M8.1066666666667 251.52L44.5866666666667 288C53.3333333333333 296.32 66.3466666666667 296.32 74.6666666666667 288C82.9866666666667 279.68 82.9866666666667 266.6666666666667 74.6666666666667 257.92L38.1866666666667 221.44C29.8666666666667 213.3333333333333 16.4266666666667 213.3333333333333 8.1066666666667 221.44C0 229.76 0 243.2 8.1066666666667 251.52z" /> + <glyph glyph-name="oil-temperature" + unicode="&#xF3C8;" + horiz-adv-x="512" d=" M245.3333333333333 426.6666666666667C227.6266666666667 426.6666666666667 213.3333333333333 412.3733333333334 213.3333333333333 394.6666666666667V138.6666666666667C199.8933333333333 128.64 192 112.8533333333334 192 96C192 66.5600000000001 215.8933333333334 42.6666666666667 245.3333333333333 42.6666666666667S298.6666666666667 66.5600000000001 298.6666666666667 96C298.6666666666667 112.8533333333334 290.7733333333333 128 277.3333333333333 138.6666666666667V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V256H362.6666666666667V298.6666666666667H277.3333333333333V341.3333333333334H362.6666666666667V384H277.3333333333333V394.6666666666667C277.3333333333333 412.3733333333334 263.04 426.6666666666667 245.3333333333333 426.6666666666667M0 128V85.3333333333334C14.2933333333333 85.3333333333334 16.8533333333333 80.8533333333334 27.52 70.1866666666667S56.96 42.6666666666667 85.3333333333333 42.6666666666667S132.48 59.52 143.1466666666667 70.1866666666667C145.4933333333334 72.7466666666667 147.4133333333333 74.6666666666667 149.3333333333333 76.5866666666667V124.5866666666667C132.48 119.04 120.5333333333333 108.16 112.8533333333333 100.48C102.1866666666667 89.8133333333334 99.6266666666667 85.3333333333334 85.3333333333333 85.3333333333334S68.48 89.8133333333334 57.8133333333333 100.48S28.3733333333333 128 0 128M341.3333333333333 128V85.3333333333334C355.6266666666667 85.3333333333334 358.1866666666666 80.8533333333334 368.8533333333333 70.1866666666667S398.2933333333334 42.6666666666667 426.6666666666667 42.6666666666667S473.8133333333333 59.52 484.48 70.1866666666667S497.7066666666666 85.3333333333334 512 85.3333333333334V128C483.6266666666667 128 464.8533333333333 111.1466666666667 454.1866666666666 100.48S440.9600000000001 85.3333333333334 426.6666666666667 85.3333333333334S409.8133333333334 89.8133333333334 399.1466666666667 100.48S369.7066666666666 128 341.3333333333333 128M170.6666666666667 21.3333333333334C142.2933333333333 21.3333333333334 123.52 4.48 112.8533333333333 -6.1866666666666S99.6266666666667 -21.3333333333333 85.3333333333333 -21.3333333333333S68.48 -16.8533333333333 57.8133333333333 -6.1866666666666C50.1333333333333 1.4933333333333 38.1866666666667 12.3733333333334 21.3333333333333 17.92V-30.08C23.2533333333333 -32 25.1733333333333 -33.92 27.52 -36.48C38.1866666666667 -47.1466666666666 56.96 -64 85.3333333333333 -64S132.48 -47.1466666666666 143.1466666666667 -36.48S156.3733333333333 -21.3333333333333 170.6666666666667 -21.3333333333333S187.52 -25.8133333333333 198.1866666666667 -36.48C207.5733333333333 -45.6533333333333 222.72 -59.7333333333333 245.3333333333333 -63.1466666666666C248.7466666666667 -64 252.3733333333334 -64 256 -64C284.3733333333334 -64 303.1466666666667 -47.1466666666666 313.8133333333334 -36.48S327.04 -21.3333333333333 341.3333333333333 -21.3333333333333S358.1866666666666 -25.8133333333333 368.8533333333333 -36.48S398.2933333333334 -64 426.6666666666667 -64S473.8133333333333 -47.1466666666666 484.48 -36.48C486.8266666666667 -33.92 488.7466666666667 -32 490.6666666666666 -30.08V17.92C473.8133333333333 12.3733333333333 461.8666666666666 1.4933333333333 454.1866666666666 -6.1866666666666C443.52 -16.8533333333333 440.9599999999999 -21.3333333333333 426.6666666666667 -21.3333333333333S409.8133333333334 -16.8533333333333 399.1466666666667 -6.1866666666666S369.7066666666666 21.3333333333334 341.3333333333333 21.3333333333334S294.1866666666666 4.48 283.52 -6.1866666666666S270.2933333333333 -21.3333333333333 256 -21.3333333333333C251.3066666666667 -21.3333333333333 248.1066666666667 -20.6933333333333 245.3333333333333 -19.6266666666667C239.36 -17.4933333333333 235.7333333333334 -13.4400000000001 228.48 -6.1866666666667C217.8133333333333 4.48 199.04 21.3333333333334 170.6666666666667 21.3333333333334z" /> + <glyph glyph-name="omega" + unicode="&#xF3C9;" + horiz-adv-x="512" d=" M408.5333333333333 42.6666666666667H285.6533333333333V88.1066666666667C330.6666666666667 122.6666666666667 353.92 165.5466666666666 353.92 216.7466666666667C353.92 248.7466666666667 344.7466666666667 273.92 326.8266666666667 292.48C308.6933333333334 311.04 285.2266666666667 320 256.64 320C227.84 320 204.16 311.04 185.8133333333333 292.2666666666667C167.2533333333333 273.7066666666667 158.08 248.1066666666667 158.08 215.8933333333334C158.08 165.1200000000001 181.3333333333333 122.4533333333334 226.3466666666667 88.1066666666667V42.6666666666667H103.4666666666667V88.1066666666667H179.4133333333333C128.8533333333333 121.1733333333334 103.4666666666667 165.76 103.4666666666667 221.8666666666667C103.4666666666667 266.6666666666667 117.3333333333333 301.6533333333333 145.28 327.2533333333334C173.2266666666666 353.0666666666667 209.92 365.8666666666667 255.36 365.8666666666667C301.8666666666666 365.8666666666667 338.9866666666666 353.0666666666667 366.7199999999999 327.68C394.6666666666666 302.2933333333334 408.5333333333333 266.6666666666667 408.5333333333333 222.2933333333333C408.5333333333333 166.1866666666667 382.9333333333333 121.3866666666667 331.7333333333333 88.1066666666667H408.5333333333333V42.6666666666667z" /> + <glyph glyph-name="onedrive" + unicode="&#xF3CA;" + horiz-adv-x="512" d=" M428.3733333333333 157.0133333333333C451.6266666666666 153.3866666666667 469.3333333333333 133.3333333333334 469.3333333333333 109.0133333333333C469.3333333333333 90.0266666666666 458.6666666666666 73.6 442.6666666666667 65.7066666666667L439.04 64H195.4133333333333C164.48 64 139.52 89.3866666666667 139.52 120.3200000000001C139.52 151.4666666666667 164.6933333333333 176.6400000000001 195.84 176.6400000000001L200.5333333333333 176.4266666666667L200.32 180.6933333333334C200.32 219.5200000000001 231.8933333333334 251.0933333333334 270.7200000000001 251.0933333333334C298.0266666666667 251.0933333333334 321.7066666666667 235.52 333.44 213.3333333333334C343.04 219.0933333333333 354.56 222.9333333333333 367.1466666666667 222.9333333333333C401.0666666666667 222.9333333333333 428.5866666666667 195.4133333333334 428.5866666666667 161.4933333333334L428.3733333333333 157.0133333333333M188.16 188.5866666666667C153.8133333333333 184.7466666666667 127.1466666666667 155.7333333333334 127.1466666666667 120.3200000000001C127.1466666666667 105.8133333333334 131.6266666666667 92.5866666666667 138.6666666666667 81.4933333333333H100.9066666666667C68.6933333333333 81.4933333333333 42.6666666666667 107.52 42.6666666666667 139.7333333333334C42.6666666666667 170.6666666666667 66.56 195.6266666666667 96.64 197.7600000000001L95.1466666666667 212.0533333333334C95.1466666666667 248.32 124.5866666666667 277.3333333333334 160.8533333333333 277.3333333333334C174.2933333333333 277.3333333333334 187.0933333333333 273.4933333333334 197.5466666666667 266.6666666666667C212.2666666666667 296.32 243.2 316.8 278.8266666666667 316.8C325.76 316.8 364.3733333333333 280.9600000000001 369.0666666666667 235.3066666666667H367.1466666666667C356.9066666666667 235.3066666666667 347.0933333333333 233.1733333333334 337.92 229.3333333333334C322.56 250.6666666666667 297.8133333333334 263.68 270.72 263.68C227.6266666666667 263.68 192 230.6133333333333 188.16 188.5866666666667z" /> + <glyph glyph-name="opacity" + unicode="&#xF5CC;" + horiz-adv-x="512" d=" M376.7466666666667 277.3333333333334L256 397.8666666666667L135.2533333333333 277.3333333333334C101.9733333333333 244.0533333333334 85.3333333333333 199.68 85.3333333333333 157.0133333333333C85.3333333333333 114.3466666666667 101.9733333333333 69.3333333333334 135.2533333333333 36.0533333333333C168.5333333333333 2.7733333333333 212.2666666666667 -14.08 256 -14.08C299.7333333333334 -14.08 343.4666666666667 2.7733333333333 376.7466666666667 36.0533333333333C410.0266666666667 69.3333333333333 426.6666666666667 114.3466666666666 426.6666666666667 157.0133333333333S410.0266666666667 244.0533333333334 376.7466666666667 277.3333333333334M128 149.3333333333334C128 192 141.2266666666667 219.0933333333333 165.5466666666667 243.2L256 335.5733333333334L346.4533333333334 242.1333333333334C370.7733333333333 218.24 384 192 384 149.3333333333334H128z" /> + <glyph glyph-name="open-in-app" + unicode="&#xF3CB;" + horiz-adv-x="512" d=" M256 234.6666666666667L170.6666666666667 149.3333333333334H234.6666666666667V21.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.4666666666667 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192V64H106.6666666666667V277.3333333333334H405.3333333333333V64H320V21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.4666666666667 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="open-in-new" + unicode="&#xF3CC;" + horiz-adv-x="512" d=" M298.6666666666667 384V341.3333333333334H375.2533333333334L165.5466666666667 131.6266666666667L195.6266666666667 101.5466666666667L405.3333333333333 311.2533333333334V234.6666666666667H448V384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V192H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="openid" + unicode="&#xF3CD;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333L234.6666666666667 373.3333333333334V22.6133333333333C149.3333333333333 32 85.3333333333333 75.52 85.3333333333333 128C85.3333333333333 176 138.6666666666667 216.5333333333334 213.3333333333333 229.9733333333334V273.2800000000001C103.68 258.5600000000001 21.3333333333333 199.2533333333333 21.3333333333333 128C21.3333333333333 52.0533333333334 114.3466666666667 -10.6666666666666 234.6666666666667 -20.0533333333333H236.5866666666667L298.6666666666667 10.6666666666667V405.3333333333333M320 273.28V229.9733333333334C344.5333333333333 225.4933333333333 366.5066666666667 218.24 385.28 208.64L352 192L490.6666666666666 160L480 256L437.3333333333333 234.6666666666667C405.3333333333333 253.4400000000001 365.2266666666667 267.3066666666667 320 273.2800000000001z" /> + <glyph glyph-name="opera" + unicode="&#xF3CE;" + horiz-adv-x="512" d=" M369.7066666666666 371.8400000000001C338.3466666666667 393.3866666666667 299.7333333333334 405.3333333333333 256 405.3333333333333C216.1066666666666 405.3333333333333 180.48 395.3066666666667 150.6133333333333 377.1733333333334C93.44 342.4 58.0266666666667 277.3333333333334 58.0266666666667 194.1333333333333C58.0266666666667 81.28 137.1733333333333 -21.3333333333333 256 -21.3333333333333C374.8266666666667 -21.3333333333333 453.9733333333334 81.28 453.9733333333334 194.1333333333333C453.9733333333334 273.28 421.9733333333334 336 369.7066666666667 371.8400000000001M256 367.5733333333333C320 367.5733333333333 332.8 278.8266666666667 332.8 197.9733333333333C332.8 123.3066666666667 325.5466666666667 23.2533333333333 256.8533333333334 23.2533333333333S179.2 124.3733333333333 179.2 199.04C179.2 279.68 192 367.5733333333334 256 367.5733333333334z" /> + <glyph glyph-name="ornament" + unicode="&#xF3CF;" + horiz-adv-x="512" d=" M256 426.6666666666667C291.4133333333333 426.6666666666667 320 398.08 320 362.6666666666667V341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V297.1733333333334C392.32 267.7333333333334 426.6666666666667 212.48 426.6666666666667 149.3333333333334C426.6666666666667 55.04 350.2933333333334 -21.3333333333333 256 -21.3333333333333S85.3333333333333 55.04 85.3333333333333 149.3333333333334C85.3333333333333 212.48 119.68 267.7333333333334 170.6666666666667 297.1733333333334V320C170.6666666666667 331.7333333333334 180.2666666666667 341.3333333333334 192 341.3333333333334V362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667V341.3333333333334H277.3333333333333V362.6666666666667C277.3333333333333 374.4 267.7333333333334 384 256 384M256 277.3333333333334C218.0266666666667 277.3333333333334 184.1066666666666 260.9066666666667 160.64 234.6666666666667H351.36C327.8933333333333 260.9066666666667 293.9733333333333 277.3333333333334 256 277.3333333333334M135.2533333333333 106.6666666666667H161.92L128 140.16C129.0666666666667 128 131.6266666666667 117.3333333333334 135.2533333333333 106.6666666666667M268.5866666666667 106.6666666666667L183.2533333333333 192H136.7466666666667L222.08 106.6666666666667H268.5866666666667M376.7466666666667 192H350.08L384 158.5066666666667C382.9333333333333 170.6666666666667 380.3733333333333 181.3333333333334 376.7466666666667 192M243.4133333333334 192L328.7466666666667 106.6666666666667H375.2533333333334L289.92 192H243.4133333333334M256 21.3333333333334C293.9733333333333 21.3333333333334 327.8933333333333 37.76 351.36 64H160.64C184.1066666666667 37.76 218.0266666666667 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="ornament-variant" + unicode="&#xF3D0;" + horiz-adv-x="512" d=" M256 426.6666666666667C291.4133333333333 426.6666666666667 320 398.08 320 362.6666666666667V341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V297.1733333333334C392.32 267.7333333333334 426.6666666666667 212.48 426.6666666666667 149.3333333333334C426.6666666666667 55.04 350.2933333333334 -21.3333333333333 256 -21.3333333333333S85.3333333333333 55.04 85.3333333333333 149.3333333333334C85.3333333333333 212.48 119.68 267.7333333333334 170.6666666666667 297.1733333333334V320C170.6666666666667 331.7333333333334 180.2666666666667 341.3333333333334 192 341.3333333333334V362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667V341.3333333333334H277.3333333333333V362.6666666666667C277.3333333333333 374.4 267.7333333333334 384 256 384M256 277.3333333333334C218.0266666666667 277.3333333333334 184.1066666666666 260.9066666666667 160.64 234.6666666666667H351.36C327.8933333333333 260.9066666666667 293.9733333333333 277.3333333333334 256 277.3333333333334M256 21.3333333333334C293.9733333333333 21.3333333333334 327.8933333333333 37.76 351.36 64H160.64C184.1066666666667 37.76 218.0266666666667 21.3333333333334 256 21.3333333333334M256 192C232.5333333333334 192 213.3333333333333 172.8 213.3333333333333 149.3333333333334S232.5333333333334 106.6666666666667 256 106.6666666666667S298.6666666666667 125.8666666666667 298.6666666666667 149.3333333333334S279.4666666666667 192 256 192M384 149.3333333333334C384 164.0533333333334 381.44 178.1333333333333 376.9600000000001 192C356.6933333333334 187.9466666666667 341.3333333333333 170.6666666666667 341.3333333333333 149.3333333333334S356.6933333333333 110.72 376.9600000000001 107.3066666666667C381.4400000000001 120.5333333333333 384 134.6133333333334 384 149.3333333333334M128 149.3333333333334C128 134.6133333333334 130.56 120.5333333333334 135.04 107.3066666666667C155.3066666666667 110.72 170.6666666666667 128 170.6666666666667 149.3333333333334S155.3066666666667 187.9466666666667 135.04 192C130.56 178.1333333333333 128 164.0533333333334 128 149.3333333333334z" /> + <glyph glyph-name="outbox" + unicode="&#xF3D1;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H213.3333333333333V213.3333333333334H170.6666666666667L256 298.6666666666667L341.3333333333333 213.3333333333334H298.6666666666667V149.3333333333334M106.6666666666667 128V341.3333333333334H405.3333333333333V128H320C320 92.5866666666667 291.4133333333333 64 256 64S192 92.5866666666667 192 128H106.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384" /> + <glyph glyph-name="owl" + unicode="&#xF3D2;" + horiz-adv-x="512" d=" M256 106.6666666666667C267.9466666666667 88.7466666666667 283.9466666666667 74.0266666666666 302.9333333333333 64L256 17.0666666666667L209.0666666666667 64C228.0533333333334 74.0266666666666 244.2666666666667 88.7466666666667 256 106.6666666666667M362.6666666666667 209.0666666666667C339.2 209.0666666666667 320 189.8666666666667 320 166.4S339.2 123.7333333333334 362.6666666666667 123.7333333333334S405.3333333333333 142.9333333333334 405.3333333333333 166.4C405.3333333333333 190.0800000000001 386.1333333333334 209.0666666666667 362.6666666666667 209.0666666666667M149.3333333333333 209.0666666666667C125.8666666666667 209.0666666666667 106.6666666666667 189.8666666666667 106.6666666666667 166.4S125.8666666666667 123.7333333333334 149.3333333333333 123.7333333333334S192 142.9333333333334 192 166.4C192 190.0800000000001 172.8 209.0666666666667 149.3333333333333 209.0666666666667M362.6666666666667 262.4000000000001C409.8133333333334 262.4000000000001 448 224.2133333333334 448 177.0666666666667S409.8133333333334 91.7333333333334 362.6666666666667 91.7333333333334S277.3333333333333 129.92 277.3333333333333 177.0666666666667S315.52 262.4000000000001 362.6666666666667 262.4000000000001M149.3333333333333 262.4000000000001C196.48 262.4000000000001 234.6666666666667 224.2133333333334 234.6666666666667 177.0666666666667S196.48 91.7333333333334 149.3333333333333 91.7333333333334S64 129.92 64 177.0666666666667S102.1866666666667 262.4000000000001 149.3333333333333 262.4000000000001M47.7866666666667 426.6666666666667C85.3333333333333 347.7333333333334 58.24 288.8533333333334 33.0666666666667 230.4000000000001C25.3866666666667 213.3333333333334 21.3333333333333 195.6266666666667 21.3333333333333 177.0666666666667C21.3333333333333 106.4533333333334 78.72 49.0666666666667 149.3333333333333 49.0666666666667C153.8133333333333 49.2800000000001 158.2933333333333 49.4933333333333 162.7733333333333 50.1333333333334L225.92 -13.0133333333333L256 -42.6666666666666L286.08 -13.0133333333333L349.2266666666667 50.1333333333334C353.7066666666667 49.4933333333333 358.1866666666667 49.2800000000001 362.6666666666667 49.0666666666667C433.28 49.0666666666667 490.6666666666666 106.4533333333334 490.6666666666666 177.0666666666667C490.6666666666666 195.6266666666667 486.6133333333333 213.3333333333334 478.9333333333333 230.4000000000001C453.76 288.8533333333334 426.6666666666667 347.7333333333334 464.2133333333334 426.6666666666667C407.8933333333333 382.7200000000001 327.68 347.9466666666667 256 347.7333333333334C184.32 347.9466666666667 104.1066666666667 382.7200000000001 47.7866666666667 426.6666666666667z" /> + <glyph glyph-name="package" + unicode="&#xF3D3;" + horiz-adv-x="512" d=" M109.2266666666667 341.3333333333334H402.56L382.5066666666667 362.6666666666667H126.5066666666667L109.2266666666667 341.3333333333334M438.1866666666666 336.4266666666667C444.3733333333333 329.1733333333334 448 320 448 309.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V309.3333333333334C64 320 67.6266666666667 329.1733333333334 73.8133333333333 336.4266666666667L103.2533333333333 372.2666666666667C109.2266666666667 379.52 117.9733333333333 384 128 384H384C394.0266666666667 384 402.7733333333333 379.52 408.5333333333333 372.2666666666667L438.1866666666666 336.4266666666667M128 64H256V128H128V64z" /> + <glyph glyph-name="package-down" + unicode="&#xF3D4;" + horiz-adv-x="512" d=" M109.2266666666667 341.3333333333334L126.5066666666667 362.6666666666667H382.5066666666667L402.56 341.3333333333334M256 74.6666666666667L138.6666666666667 192H213.3333333333333V234.6666666666667H298.6666666666667V192H373.3333333333333L256 74.6666666666667M438.1866666666666 336.4266666666667L408.5333333333333 372.2666666666667C402.7733333333333 379.52 394.0266666666667 384 384 384H128C117.9733333333333 384 109.2266666666667 379.52 103.2533333333333 372.2666666666667L73.8133333333333 336.4266666666667C67.6266666666667 329.1733333333334 64 320 64 309.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V309.3333333333334C448 320 444.3733333333333 329.1733333333334 438.1866666666666 336.4266666666667z" /> + <glyph glyph-name="package-up" + unicode="&#xF3D5;" + horiz-adv-x="512" d=" M438.1866666666666 336.4266666666667C444.3733333333333 329.1733333333334 448 320 448 309.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V309.3333333333334C64 320 67.6266666666667 329.1733333333334 73.8133333333333 336.4266666666667L103.2533333333333 372.2666666666667C109.2266666666667 379.52 117.9733333333333 384 128 384H384C394.0266666666667 384 402.7733333333333 379.52 408.5333333333333 372.2666666666667L438.1866666666666 336.4266666666667M109.2266666666667 341.3333333333334H402.56L382.5066666666667 362.6666666666667H126.5066666666667L109.2266666666667 341.3333333333334M256 245.3333333333334L138.6666666666667 128H213.3333333333333V85.3333333333334H298.6666666666667V128H373.3333333333333L256 245.3333333333334z" /> + <glyph glyph-name="package-variant" + unicode="&#xF3D6;" + horiz-adv-x="512" d=" M42.6666666666667 214.1866666666667C32 220.16 28.8 233.1733333333334 34.7733333333333 243.4133333333334L66.7733333333333 298.6666666666667C69.12 302.9333333333334 72.7466666666667 305.92 76.8 307.6266666666667L243.84 401.4933333333334C247.2533333333334 404.0533333333334 251.52 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666667 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C440.7466666666667 304.64 444.16 301.2266666666667 446.08 296.9600000000001L477.0133333333333 243.2C482.9866666666667 232.96 479.36 219.9466666666667 469.3333333333333 214.1866666666667L448 201.8133333333334V96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V214.1866666666667C57.6 210.56 49.4933333333333 210.3466666666667 42.6666666666666 214.1866666666667M255.9999999999999 359.4666666666667V216.5333333333333L383.1466666666666 288L256 359.4666666666667M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V177.28L298.6666666666667 115.4133333333334C291.6266666666667 111.5733333333334 283.7333333333334 111.7866666666667 277.3333333333333 115.2000000000001V36.48L405.3333333333333 108.5866666666667M295.4666666666667 162.9866666666667L429.44 240.4266666666667L417.0666666666667 261.9733333333334L283.0933333333333 184.5333333333333L295.4666666666667 162.9866666666667z" /> + <glyph glyph-name="package-variant-closed" + unicode="&#xF3D7;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L215.68 336.64L341.3333333333333 264.3200000000001L383.1466666666667 288L256 359.4666666666667M128.8533333333333 288L256 216.5333333333334L297.8133333333334 240L172.3733333333334 312.5333333333334L128.8533333333333 288M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V251.52L277.3333333333333 179.6266666666667V36.48L405.3333333333333 108.5866666666666z" /> + <glyph glyph-name="page-first" + unicode="&#xF600;" + horiz-adv-x="512" d=" M392.7466666666667 94.08L294.8266666666667 192L392.7466666666667 289.92L362.6666666666667 320L234.6666666666667 192L362.6666666666667 64L392.7466666666667 94.08M128 320H170.6666666666667V64H128V320z" /> + <glyph glyph-name="page-last" + unicode="&#xF601;" + horiz-adv-x="512" d=" M119.2533333333333 289.92L217.1733333333333 192L119.2533333333333 94.08L149.3333333333333 64L277.3333333333333 192L149.3333333333333 320L119.2533333333333 289.92M341.3333333333333 320H384V64H341.3333333333333V320z" /> + <glyph glyph-name="palette" + unicode="&#xF3D8;" + horiz-adv-x="512" d=" M373.3333333333333 192C355.6266666666667 192 341.3333333333333 206.2933333333334 341.3333333333333 224S355.6266666666667 256 373.3333333333333 256S405.3333333333333 241.7066666666667 405.3333333333333 224S391.04 192 373.3333333333333 192M309.3333333333333 277.3333333333334C291.6266666666667 277.3333333333334 277.3333333333333 291.6266666666667 277.3333333333333 309.3333333333334S291.6266666666667 341.3333333333334 309.3333333333333 341.3333333333334S341.3333333333333 327.04 341.3333333333333 309.3333333333334S327.04 277.3333333333334 309.3333333333333 277.3333333333334M202.6666666666667 277.3333333333334C184.96 277.3333333333334 170.6666666666667 291.6266666666667 170.6666666666667 309.3333333333334S184.96 341.3333333333334 202.6666666666667 341.3333333333334S234.6666666666667 327.04 234.6666666666667 309.3333333333334S220.3733333333333 277.3333333333334 202.6666666666667 277.3333333333334M138.6666666666667 192C120.96 192 106.6666666666667 206.2933333333334 106.6666666666667 224S120.96 256 138.6666666666667 256S170.6666666666667 241.7066666666667 170.6666666666667 224S156.3733333333333 192 138.6666666666667 192M256 384C149.9733333333333 384 64 298.0266666666667 64 192S149.9733333333333 0 256 0C273.7066666666667 0 288 14.2933333333334 288 32C288 40.3200000000001 284.8 47.7866666666666 279.68 53.3333333333334C274.7733333333333 59.0933333333334 271.5733333333333 66.5600000000001 271.5733333333333 74.6666666666667C271.5733333333333 92.3733333333333 285.8666666666666 106.6666666666667 303.5733333333333 106.6666666666667H341.3333333333333C400.2133333333333 106.6666666666667 448 154.4533333333334 448 213.3333333333334C448 307.6266666666667 362.0266666666667 384 256 384z" /> + <glyph glyph-name="palette-advanced" + unicode="&#xF3D9;" + horiz-adv-x="512" d=" M469.3333333333333 -21.3333333333333H213.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333M42.6666666666667 -21.3333333333333V21.3333333333334H192V-21.3333333333333H42.6666666666667M384 64V234.6666666666667H469.3333333333333V64H384M384 384H469.3333333333333V256H384V384M42.6666666666667 64V384H341.3333333333333V64H42.6666666666667M192 137.3866666666667C227.4133333333334 137.3866666666667 256 165.9733333333334 256 201.3866666666667C256 244.0533333333334 192 315.9466666666667 192 315.9466666666667S128 244.0533333333334 128 201.3866666666667C128 165.9733333333334 156.5866666666667 137.3866666666667 192 137.3866666666667z" /> + <glyph glyph-name="panda" + unicode="&#xF3DA;" + horiz-adv-x="512" d=" M256 384C293.12 384 327.68 373.3333333333334 357.12 355.2000000000001C370.7733333333333 372.6933333333334 392.1066666666667 384 416 384C457.1733333333333 384 490.6666666666666 350.5066666666667 490.6666666666666 309.3333333333334C490.6666666666666 277.3333333333334 470.4 250.0266666666667 442.0266666666667 239.36C445.8666666666666 224 448 208.4266666666667 448 192C448 85.9733333333334 362.0266666666667 0 256 0S64 85.9733333333334 64 192C64 208.4266666666667 66.1333333333333 224 69.9733333333333 239.36C41.6 250.0266666666667 21.3333333333333 277.3333333333334 21.3333333333333 309.3333333333334C21.3333333333333 350.5066666666667 54.8266666666667 384 96 384C119.8933333333333 384 141.2266666666667 372.6933333333334 154.88 355.2000000000001C184.32 373.3333333333334 218.88 384 256 384M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334M345.3866666666667 228.2666666666667C353.0666666666667 199.8933333333333 343.04 172.5866666666667 323.2000000000001 167.2533333333333C303.1466666666667 161.7066666666667 280.9600000000001 180.48 273.2800000000001 209.0666666666667C265.6 237.4400000000001 275.6266666666667 264.7466666666667 295.4666666666667 270.0800000000001C315.52 275.4133333333334 337.7066666666667 256.8533333333334 345.3866666666667 228.2666666666667M166.6133333333334 228.2666666666667C174.2933333333333 256.8533333333334 196.48 275.4133333333334 216.5333333333333 270.0800000000001C236.3733333333334 264.7466666666667 246.4 237.4400000000001 238.7200000000001 209.0666666666667C231.04 180.48 208.8533333333334 161.7066666666667 188.8 167.2533333333333C168.96 172.5866666666667 158.9333333333333 199.8933333333333 166.6133333333334 228.2666666666667M256 149.3333333333334C268.8 149.3333333333334 280.1066666666667 145.28 288 138.6666666666667L266.6666666666667 117.3333333333334C266.6666666666667 108.3733333333333 273.92 101.3333333333334 282.6666666666667 101.3333333333334S298.6666666666667 108.5866666666667 298.6666666666667 117.3333333333334C298.6666666666667 123.3066666666667 303.36 128 309.3333333333333 128S320 123.3066666666667 320 117.3333333333334C320 96.64 303.36 80 282.6666666666667 80C272.2133333333333 80 262.8266666666667 84.2666666666667 256 91.3066666666667C249.1733333333333 84.2666666666668 239.7866666666667 80 229.3333333333333 80C208.64 80 192 96.64 192 117.3333333333334C192 123.3066666666667 196.6933333333333 128 202.6666666666667 128S213.3333333333333 123.3066666666667 213.3333333333333 117.3333333333334C213.3333333333333 108.5866666666667 220.5866666666667 101.3333333333334 229.3333333333333 101.3333333333334S245.3333333333333 108.5866666666667 245.3333333333333 117.3333333333334L224 138.6666666666667C231.8933333333333 145.28 243.2 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="pandora" + unicode="&#xF3DB;" + horiz-adv-x="512" d=" M359.8933333333333 283.0933333333334C359.8933333333333 236.8 334.2933333333334 198.4 279.2533333333334 198.4H222.9333333333333V369.92H279.2533333333334C334.2933333333334 369.92 359.8933333333333 330.6666666666667 359.8933333333333 283.0933333333334M222.9333333333333 113.7066666666667V161.92H279.2533333333334C380.5866666666667 161.92 437.3333333333333 215.2533333333333 437.3333333333333 283.0933333333333C437.3333333333333 353.0666666666667 380.5866666666667 405.3333333333333 279.2533333333334 405.3333333333333H74.6666666666667V385.7066666666667C141.2266666666667 385.7066666666667 152.96 369.92 152.96 271.36V113.7066666666667C152.96 15.1466666666666 141.2266666666667 -1.7066666666667 74.6666666666667 -1.7066666666667V-21.3333333333333H300.8V-1.7066666666666C234.6666666666667 -1.7066666666666 222.9333333333333 15.1466666666667 222.9333333333333 113.7066666666667z" /> + <glyph glyph-name="panorama" + unicode="&#xF3DC;" + horiz-adv-x="512" d=" M181.3333333333333 181.3333333333334L234.6666666666667 117.3333333333334L309.3333333333333 213.3333333333334L405.3333333333333 85.3333333333334H106.6666666666667M490.6666666666666 64V320C490.6666666666666 343.4666666666667 471.4666666666667 362.6666666666667 448 362.6666666666667H64C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V64C21.3333333333333 40.5333333333333 40.5333333333333 21.3333333333334 64 21.3333333333334H448C471.4666666666667 21.3333333333334 490.6666666666666 40.5333333333333 490.6666666666666 64z" /> + <glyph glyph-name="panorama-fisheye" + unicode="&#xF3DD;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.9733333333334 42.6666666666667 192S138.0266666666667 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.0266666666666 469.3333333333333 192S373.9733333333334 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="panorama-horizontal" + unicode="&#xF3DE;" + horiz-adv-x="512" d=" M457.1733333333333 362.6666666666667C455.04 362.6666666666667 452.9066666666666 362.6666666666667 450.56 361.3866666666667C387.84 337.92 321.92 326.4 256 326.4C190.08 326.4 124.16 338.1333333333334 61.44 361.3866666666667C59.0933333333333 362.6666666666667 56.7466666666667 362.6666666666667 54.8266666666667 362.6666666666667C47.5733333333333 362.6666666666667 42.6666666666667 357.76 42.6666666666667 349.2266666666667V34.5600000000001C42.6666666666667 26.24 47.5733333333333 21.3333333333334 54.8266666666667 21.3333333333334C56.96 21.3333333333334 59.0933333333333 21.3333333333334 61.44 22.6133333333333C124.16 46.08 190.08 57.6 256 57.6C321.92 57.6 387.84 45.8666666666667 450.5599999999999 22.6133333333333C452.9066666666666 21.3333333333334 455.04 21.3333333333334 457.1733333333332 21.3333333333334C464.2133333333332 21.3333333333334 469.3333333333333 26.24 469.3333333333333 34.7733333333333V349.2266666666667C469.3333333333333 357.76 464.2133333333333 362.6666666666667 457.1733333333332 362.6666666666667M426.6666666666667 308.48V75.7333333333334C371.2 92.16 314.0266666666667 100.48 256 100.48C197.9733333333333 100.48 140.8 92.16 85.3333333333333 75.7333333333334V308.48C140.8 292.0533333333334 197.9733333333334 283.7333333333334 256 283.7333333333334C314.0266666666667 283.52 371.2 291.8400000000001 426.6666666666667 308.48z" /> + <glyph glyph-name="panorama-vertical" + unicode="&#xF3DF;" + horiz-adv-x="512" d=" M139.52 21.3333333333334C155.9466666666667 76.8000000000001 164.2666666666667 133.9733333333334 164.2666666666667 192C164.2666666666667 250.0266666666667 155.9466666666667 307.2000000000001 139.52 362.6666666666667H372.2666666666667C355.84 307.2000000000001 347.52 250.0266666666667 347.52 192C347.52 133.9733333333334 355.84 76.8000000000001 372.2666666666667 21.3333333333334M425.3866666666666 -2.56C401.9199999999999 60.16 390.3999999999999 126.0800000000001 390.3999999999999 192C390.3999999999999 257.92 402.1333333333333 323.84 425.3866666666666 386.56C426.6666666666666 388.9066666666667 426.6666666666666 391.2533333333333 426.6666666666666 393.1733333333333C426.6666666666666 400.4266666666666 421.7599999999999 405.3333333333333 413.2266666666666 405.3333333333333H98.7733333333333C90.24 405.3333333333333 85.3333333333333 400.4266666666666 85.3333333333333 393.1733333333333C85.3333333333333 391.04 85.3333333333333 388.9066666666667 86.6133333333333 386.56C110.08 323.8400000000001 121.8133333333333 257.92 121.8133333333333 192C121.8133333333333 126.0800000000001 110.08 60.16 86.8266666666667 -2.5599999999999C85.3333333333333 -4.9066666666666 85.3333333333333 -7.2533333333332 85.3333333333333 -9.1733333333332C85.3333333333333 -16.2133333333332 90.24 -21.3333333333333 98.7733333333333 -21.3333333333333H413.44C421.76 -21.3333333333333 426.6666666666667 -16.2133333333333 426.6666666666667 -9.1733333333332C426.6666666666667 -7.0399999999998 426.6666666666667 -4.9066666666666 425.3866666666667 -2.5599999999999z" /> + <glyph glyph-name="panorama-wide-angle" + unicode="&#xF3E0;" + horiz-adv-x="512" d=" M256 362.6666666666667C197.76 362.6666666666667 144.64 357.5466666666667 86.4 347.3066666666667L66.56 343.8933333333333L61.2266666666667 324.6933333333334C48.8533333333333 280.5333333333334 42.6666666666667 236.1600000000001 42.6666666666667 192C42.6666666666667 147.84 48.8533333333333 103.4666666666667 61.2266666666667 59.3066666666667L66.56 40.3200000000001L86.4 36.9066666666667C144.64 26.4533333333334 197.76 21.3333333333334 256 21.3333333333334C314.24 21.3333333333334 367.36 26.4533333333333 425.6 36.6933333333333L445.44 40.1066666666667L450.7733333333333 59.0933333333334C463.1466666666666 103.4666666666667 469.3333333333333 147.84 469.3333333333333 192C469.3333333333333 236.1600000000001 463.1466666666666 280.5333333333334 450.7733333333333 324.6933333333334L445.44 343.68L425.6 347.0933333333334C367.36 357.5466666666667 314.24 362.6666666666667 256 362.6666666666667M256 320C308.2666666666667 320 356.48 315.7333333333334 411.52 306.3466666666667C421.5466666666666 268.3733333333334 426.6666666666667 229.9733333333334 426.6666666666667 192C426.6666666666667 154.0266666666667 421.5466666666667 115.6266666666667 411.52 77.6533333333334C356.48 68.2666666666667 308.2666666666667 64 256 64S155.52 68.2666666666667 100.48 77.6533333333334C90.4533333333333 115.6266666666667 85.3333333333333 154.0266666666667 85.3333333333333 192C85.3333333333333 229.9733333333334 90.4533333333333 268.3733333333334 100.48 306.3466666666667C155.52 315.7333333333334 203.7333333333334 320 256 320z" /> + <glyph glyph-name="paper-cut-vertical" + unicode="&#xF3E1;" + horiz-adv-x="512" d=" M243.84 379.0933333333334L256 362.6666666666667L268.16 379.0933333333334V378.88C279.8933333333333 394.6666666666667 298.6666666666667 405.3333333333333 320 405.3333333333333C355.4133333333333 405.3333333333333 384 376.7466666666667 384 341.3333333333334C384 333.8666666666667 382.7200000000001 326.6133333333334 380.3733333333333 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V277.3333333333334C42.6666666666667 300.8 61.8666666666667 320 85.3333333333333 320H131.6266666666667C129.28 326.6133333333334 128 333.8666666666667 128 341.3333333333334C128 376.7466666666667 156.5866666666667 405.3333333333333 192 405.3333333333333C213.3333333333333 405.3333333333333 232.1066666666667 394.6666666666667 243.84 378.88V379.0933333333334M85.3333333333333 277.3333333333334V21.3333333333334H234.6666666666667C234.6666666666667 33.0666666666667 244.2666666666667 42.6666666666667 256 42.6666666666667S277.3333333333333 33.0666666666667 277.3333333333333 21.3333333333334H426.6666666666667V277.3333333333334H317.8666666666667L362.6666666666667 215.04L328.5333333333333 189.8666666666667L264.96 277.3333333333334H247.04L183.4666666666667 189.8666666666667L149.3333333333333 215.04L194.1333333333333 277.3333333333334H85.3333333333333M192 362.6666666666667C180.2666666666667 362.6666666666667 170.6666666666667 353.0666666666667 170.6666666666667 341.3333333333334S180.2666666666667 320 192 320S213.3333333333333 329.6 213.3333333333333 341.3333333333334S203.7333333333334 362.6666666666667 192 362.6666666666667M320 362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334S308.2666666666667 320 320 320S341.3333333333333 329.6 341.3333333333333 341.3333333333334S331.7333333333334 362.6666666666667 320 362.6666666666667M256 106.6666666666667C267.7333333333334 106.6666666666667 277.3333333333333 97.0666666666667 277.3333333333333 85.3333333333334S267.7333333333334 64 256 64S234.6666666666667 73.6 234.6666666666667 85.3333333333334S244.2666666666667 106.6666666666667 256 106.6666666666667M256 170.6666666666667C267.7333333333334 170.6666666666667 277.3333333333333 161.0666666666667 277.3333333333333 149.3333333333334S267.7333333333334 128 256 128S234.6666666666667 137.6 234.6666666666667 149.3333333333334S244.2666666666667 170.6666666666667 256 170.6666666666667M256 234.6666666666667C267.7333333333334 234.6666666666667 277.3333333333333 225.0666666666667 277.3333333333333 213.3333333333334S267.7333333333334 192 256 192S234.6666666666667 201.6 234.6666666666667 213.3333333333334S244.2666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="paperclip" + unicode="&#xF3E2;" + horiz-adv-x="512" d=" M352 320V74.6666666666667C352 27.52 313.8133333333334 -10.6666666666666 266.6666666666667 -10.6666666666666S181.3333333333333 27.52 181.3333333333333 74.6666666666667V341.3333333333334C181.3333333333333 370.7733333333333 205.2266666666667 394.6666666666667 234.6666666666667 394.6666666666667S288 370.7733333333333 288 341.3333333333334V117.3333333333334C288 105.6 278.4 96 266.6666666666667 96S245.3333333333333 105.6 245.3333333333333 117.3333333333334V320H213.3333333333333V117.3333333333334C213.3333333333333 87.8933333333334 237.2266666666667 64 266.6666666666667 64S320 87.8933333333334 320 117.3333333333334V341.3333333333334C320 388.48 281.8133333333334 426.6666666666667 234.6666666666667 426.6666666666667S149.3333333333333 388.48 149.3333333333333 341.3333333333334V74.6666666666667C149.3333333333333 9.8133333333334 201.8133333333333 -42.6666666666666 266.6666666666667 -42.6666666666666S384 9.8133333333334 384 74.6666666666667V320H352z" /> + <glyph glyph-name="parking" + unicode="&#xF3E3;" + horiz-adv-x="512" d=" M281.6 213.3333333333334H213.3333333333333V298.6666666666667H281.6C305.0666666666666 298.6666666666667 324.2666666666667 279.4666666666667 324.2666666666667 256S305.0666666666666 213.3333333333334 281.6 213.3333333333334M277.3333333333333 384H128V0H213.3333333333333V128H277.3333333333333C347.9466666666666 128 405.3333333333333 185.3866666666667 405.3333333333333 256C405.3333333333333 326.8266666666667 347.9466666666666 384 277.3333333333333 384z" /> + <glyph glyph-name="pause" + unicode="&#xF3E4;" + horiz-adv-x="512" d=" M298.6666666666667 42.6666666666667H384V341.3333333333334H298.6666666666667M128 42.6666666666667H213.3333333333333V341.3333333333334H128V42.6666666666667z" /> + <glyph glyph-name="pause-circle" + unicode="&#xF3E5;" + horiz-adv-x="512" d=" M320 106.6666666666667H277.3333333333333V277.3333333333334H320M234.6666666666667 106.6666666666667H192V277.3333333333334H234.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="pause-circle-outline" + unicode="&#xF3E6;" + horiz-adv-x="512" d=" M277.3333333333333 106.6666666666667V277.3333333333334H320V106.6666666666667H277.3333333333333M192 106.6666666666667V277.3333333333334H234.6666666666667V106.6666666666667H192M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="pause-octagon" + unicode="&#xF3E7;" + horiz-adv-x="512" d=" M335.5733333333333 384L448 271.5733333333334V112.4266666666667L335.5733333333333 0H176.4266666666667L64 112.4266666666667V271.5733333333334L176.4266666666667 384H335.5733333333333M320 106.6666666666667V277.3333333333334H277.3333333333333V106.6666666666667H320M234.6666666666667 106.6666666666667V277.3333333333334H192V106.6666666666667H234.6666666666667z" /> + <glyph glyph-name="pause-octagon-outline" + unicode="&#xF3E8;" + horiz-adv-x="512" d=" M320 106.6666666666667H277.3333333333333V277.3333333333334H320V106.6666666666667M234.6666666666667 106.6666666666667H192V277.3333333333334H234.6666666666667V106.6666666666667M335.5733333333333 384L448 271.5733333333334V112.4266666666667L335.5733333333333 0H176.4266666666667L64 112.4266666666667V271.5733333333334L176.4266666666667 384H335.5733333333333M317.8666666666667 341.3333333333334H194.1333333333333L106.6666666666667 253.8666666666667V130.1333333333334L194.1333333333333 42.6666666666667H317.8666666666666L405.3333333333333 130.1333333333333V253.8666666666667L317.8666666666667 341.3333333333334z" /> + <glyph glyph-name="paw" + unicode="&#xF3E9;" + horiz-adv-x="512" d=" M178.1333333333333 384C203.3066666666667 387.6266666666667 229.9733333333333 360.1066666666667 237.6533333333334 322.1333333333334C245.3333333333333 284.3733333333334 231.4666666666667 250.6666666666667 206.2933333333333 246.8266666666667C181.3333333333333 242.9866666666667 154.4533333333333 270.5066666666667 146.56 308.48C138.6666666666667 346.24 152.96 379.9466666666667 178.1333333333333 384M330.6666666666667 384C356.0533333333334 379.9466666666667 370.1333333333334 346.24 362.6666666666667 308.48C354.56 270.5066666666667 327.8933333333333 242.9866666666667 302.72 246.8266666666667C277.3333333333333 250.6666666666667 263.4666666666667 284.3733333333334 271.36 322.1333333333334C279.04 360.1066666666667 305.7066666666666 387.6266666666667 330.6666666666667 384M64 285.8666666666667C88.32 296.3200000000001 121.3866666666667 277.3333333333334 138.6666666666667 244.2666666666667C154.88 210.56 149.3333333333333 175.1466666666667 125.2266666666667 164.6933333333334C101.12 154.24 68.2666666666667 173.0133333333334 51.4133333333333 206.5066666666667C34.56 240 40.5333333333333 275.6266666666667 64 285.8666666666667M448 285.8666666666667C471.4666666666667 275.6266666666667 477.4399999999999 240 460.5866666666666 206.5066666666667C443.7333333333334 173.0133333333333 410.88 154.24 386.7733333333333 164.6933333333333C362.6666666666667 175.1466666666667 357.12 210.56 373.3333333333333 244.2666666666667C390.6133333333333 277.3333333333334 423.68 296.32 448 285.8666666666667M412.3733333333333 55.8933333333334C413.2266666666666 35.84 397.8666666666666 13.6533333333334 379.52 5.3333333333334C341.3333333333333 -12.16 296.1066666666667 24.1066666666667 253.6533333333333 24.1066666666667C211.2 24.1066666666667 165.5466666666666 -13.6533333333333 128 5.3333333333334C106.6666666666666 15.7866666666666 91.9466666666666 43.52 94.72 66.5600000000001C98.56 98.3466666666667 136.7466666666667 115.4133333333334 159.36 138.6666666666667C189.44 168.7466666666667 210.7733333333333 225.28 253.6533333333333 225.28C296.32 225.28 318.9333333333333 169.6 347.7333333333333 138.6666666666667C371.4133333333333 112.64 410.88 90.6666666666667 412.3733333333333 55.8933333333334z" /> + <glyph glyph-name="paw-off" + unicode="&#xF657;" + horiz-adv-x="512" d=" M42.6666666666667 356.9066666666667L69.9733333333333 384L458.6666666666666 -4.6933333333333L431.5733333333333 -32L388.9066666666667 10.6666666666667C385.92 8.5333333333333 382.7200000000001 6.8266666666667 379.52 5.3333333333334C341.3333333333333 -12.16 296.1066666666667 24.1066666666667 253.6533333333333 24.1066666666667C211.2 24.1066666666667 165.5466666666666 -13.6533333333333 128 5.3333333333334C106.6666666666666 15.7866666666666 91.9466666666666 43.52 94.72 66.5600000000001C98.56 98.3466666666667 136.7466666666667 115.4133333333334 159.36 138.6666666666667C175.1466666666667 154.24 188.5866666666667 177.28 203.7333333333333 195.84L42.6666666666667 356.9066666666667M178.1333333333333 384C203.3066666666667 387.6266666666667 229.9733333333333 360.1066666666667 237.6533333333334 322.1333333333334C241.4933333333334 304 240.2133333333333 286.7200000000001 234.6666666666667 273.28L149.9733333333333 358.4C155.52 372.2666666666667 165.3333333333333 381.8666666666667 178.1333333333333 384M330.6666666666667 384C356.0533333333334 379.9466666666667 370.1333333333334 346.24 362.6666666666667 308.48C354.56 270.5066666666667 327.8933333333333 242.9866666666667 302.72 246.8266666666667C277.3333333333333 250.6666666666667 263.4666666666667 284.3733333333334 271.36 322.1333333333334C279.04 360.1066666666667 305.7066666666666 387.6266666666667 330.6666666666667 384M64 285.8666666666667C88.32 296.3200000000001 121.3866666666667 277.3333333333334 138.6666666666667 244.2666666666667C154.88 210.56 149.3333333333333 175.1466666666667 125.2266666666667 164.6933333333334C101.12 154.24 68.2666666666667 173.0133333333334 51.4133333333333 206.5066666666667C34.56 240 40.5333333333333 275.6266666666667 64 285.8666666666667M448 285.8666666666667C471.4666666666667 275.6266666666667 477.4399999999999 240 460.5866666666666 206.5066666666667C443.7333333333334 173.0133333333333 410.88 154.24 386.7733333333333 164.6933333333333C362.6666666666667 175.1466666666667 357.12 210.56 373.3333333333333 244.2666666666667C390.6133333333333 277.3333333333334 423.68 296.32 448 285.8666666666667z" /> + <glyph glyph-name="pen" + unicode="&#xF3EA;" + horiz-adv-x="512" d=" M441.8133333333334 297.8133333333334C434.56 290.56 427.52 283.52 427.3066666666667 276.48C426.6666666666667 269.6533333333334 433.92 262.6133333333334 440.7466666666667 256C450.9866666666667 245.3333333333334 461.0133333333333 235.7333333333334 460.5866666666666 225.2800000000001C460.16 214.8266666666667 449.28 203.9466666666667 438.4 193.28L350.2933333333334 104.96L320 135.2533333333333L410.6666666666667 225.7066666666667L390.1866666666666 246.1866666666667L359.8933333333333 216.1066666666667L279.8933333333333 296.1066666666667L361.8133333333333 377.8133333333334C370.1333333333333 386.1333333333334 383.9999999999999 386.1333333333334 391.8933333333333 377.8133333333334L441.8133333333333 327.8933333333333C450.1333333333333 320 450.1333333333333 306.1333333333334 441.8133333333333 297.8133333333334M64 80L267.9466666666667 284.1600000000001L347.9466666666667 204.16L144 0H64V80z" /> + <glyph glyph-name="pencil" + unicode="&#xF3EB;" + horiz-adv-x="512" d=" M441.8133333333334 297.8133333333334C450.1333333333334 306.1333333333334 450.1333333333334 320 441.8133333333334 327.8933333333333L391.8933333333333 377.8133333333334C384 386.1333333333334 370.1333333333334 386.1333333333334 361.8133333333334 377.8133333333334L322.56 338.7733333333333L402.56 258.7733333333333M64 80V0H144L379.9466666666666 236.1600000000001L299.9466666666666 316.1600000000001L64 80z" /> + <glyph glyph-name="pencil-box" + unicode="&#xF3EC;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M356.2666666666667 248.5333333333334C360.9599999999999 253.0133333333334 360.9599999999999 260.48 356.2666666666667 264.9600000000001L328.96 292.2666666666667C324.48 296.9600000000001 317.0133333333333 296.9600000000001 312.5333333333333 292.2666666666667L291.2 270.9333333333334L334.9333333333333 227.2L356.2666666666667 248.5333333333333M149.3333333333333 129.28V85.3333333333334H193.28L322.56 214.6133333333333L278.6133333333334 258.56L149.3333333333333 129.28z" /> + <glyph glyph-name="pencil-box-outline" + unicode="&#xF3ED;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M356.2666666666667 248.5333333333334L334.9333333333333 227.2L291.2 270.9333333333334L312.5333333333333 292.2666666666667C317.0133333333333 296.96 324.48 296.96 328.9599999999999 292.2666666666667L356.2666666666667 264.9600000000001C360.9599999999999 260.48 360.9599999999999 253.0133333333333 356.2666666666667 248.5333333333334M149.3333333333333 129.28L278.6133333333333 258.5600000000001L322.56 214.6133333333334L193.28 85.3333333333334H149.3333333333333V129.28z" /> + <glyph glyph-name="pencil-lock" + unicode="&#xF3EE;" + horiz-adv-x="512" d=" M117.3333333333333 405.3333333333333C87.8933333333333 405.3333333333333 64 381.44 64 352V341.3333333333334C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V234.6666666666667C42.6666666666667 222.9333333333333 52.2666666666667 213.3333333333334 64 213.3333333333334H170.6666666666667C182.4 213.3333333333334 192 222.9333333333333 192 234.6666666666667V320C192 331.7333333333334 182.4 341.3333333333334 170.6666666666667 341.3333333333334V352C170.6666666666667 381.44 146.7733333333333 405.3333333333333 117.3333333333333 405.3333333333333M117.3333333333333 384C135.04 384 149.3333333333333 369.7066666666667 149.3333333333333 352V341.3333333333334H85.3333333333333V352C85.3333333333333 369.7066666666667 99.6266666666667 384 117.3333333333333 384M419.4133333333333 384C413.8666666666666 384 408.7466666666667 382.0800000000001 404.6933333333333 378.0266666666667L365.44 338.56L445.44 258.56L484.6933333333333 298.0266666666667C493.0133333333333 306.3466666666667 493.0133333333333 320 484.6933333333333 327.8933333333333L434.7733333333333 378.0266666666667C430.5066666666667 382.08 424.7466666666667 384 419.4133333333333 384M342.6133333333333 315.9466666666667L106.6666666666667 80V0H186.6666666666667L422.6133333333333 235.9466666666667L342.6133333333333 315.9466666666667z" /> + <glyph glyph-name="pencil-off" + unicode="&#xF3EF;" + horiz-adv-x="512" d=" M398.08 405.3333333333333C392.5333333333333 405.3333333333333 387.4133333333333 403.4133333333334 383.36 399.36L344.1066666666667 359.8933333333333L424.1066666666667 279.8933333333333L463.36 319.36C471.6799999999999 327.68 471.6799999999999 341.3333333333333 463.36 349.2266666666667L413.44 399.36C409.1733333333333 403.4133333333333 403.4133333333333 405.3333333333333 398.08 405.3333333333333M69.9733333333333 362.6666666666667L42.6666666666667 335.36L181.3333333333333 197.3333333333334L85.3333333333333 101.3333333333334V21.3333333333334H165.3333333333333L261.3333333333333 117.3333333333334L399.36 -21.3333333333333L426.6666666666667 5.9733333333334L288 144L208 224L69.9733333333333 362.6666666666667M321.28 337.2800000000001L235.3066666666666 251.3066666666667L315.3066666666666 171.3066666666667L401.28 257.2800000000001L321.28 337.2800000000001z" /> + <glyph glyph-name="percent" + unicode="&#xF3F0;" + horiz-adv-x="512" d=" M149.3333333333333 362.6666666666667C184.7466666666667 362.6666666666667 213.3333333333333 334.0800000000001 213.3333333333333 298.6666666666667S184.7466666666667 234.6666666666667 149.3333333333333 234.6666666666667S85.3333333333333 263.2533333333334 85.3333333333333 298.6666666666667S113.92 362.6666666666667 149.3333333333333 362.6666666666667M362.6666666666667 149.3333333333334C398.08 149.3333333333334 426.6666666666667 120.7466666666667 426.6666666666667 85.3333333333334S398.08 21.3333333333334 362.6666666666667 21.3333333333334S298.6666666666667 49.92 298.6666666666667 85.3333333333334S327.2533333333334 149.3333333333334 362.6666666666667 149.3333333333334M426.6666666666667 332.5866666666667L115.4133333333333 21.3333333333334L85.3333333333333 51.4133333333334L396.5866666666667 362.6666666666667L426.6666666666667 332.5866666666667z" /> + <glyph glyph-name="pharmacy" + unicode="&#xF3F1;" + horiz-adv-x="512" d=" M341.3333333333333 149.3333333333334H277.3333333333333V85.3333333333334H234.6666666666667V149.3333333333334H170.6666666666667V192H234.6666666666667V256H277.3333333333333V192H341.3333333333333M448 341.3333333333334H391.4666666666667L416 408.5333333333333L365.8666666666666 426.6666666666667L334.7199999999999 341.3333333333334H64V298.6666666666667L106.6666666666667 170.6666666666667L64 42.6666666666667V0H448V42.6666666666667L405.3333333333333 170.6666666666667L448 298.6666666666667V341.3333333333334z" /> + <glyph glyph-name="phone" + unicode="&#xF3F2;" + horiz-adv-x="512" d=" M141.2266666666667 217.8133333333334C171.9466666666667 157.4400000000001 221.44 107.9466666666667 281.8133333333334 77.2266666666667L328.7466666666667 124.16C334.72 130.1333333333333 343.04 131.84 350.5066666666667 129.4933333333334C374.4 121.6 400 117.3333333333334 426.6666666666667 117.3333333333334C438.4 117.3333333333334 448 107.7333333333334 448 96V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0C226.3466666666667 0 64 162.3466666666667 64 362.6666666666667C64 374.4 73.6 384 85.3333333333333 384H160C171.7333333333334 384 181.3333333333333 374.4 181.3333333333333 362.6666666666667C181.3333333333333 336 185.6 310.4 193.4933333333334 286.5066666666667C195.84 279.04 194.1333333333333 270.7200000000001 188.16 264.7466666666667L141.2266666666667 217.8133333333334z" /> + <glyph glyph-name="phone-bluetooth" + unicode="&#xF3F3;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M384 294.1866666666667L404.0533333333334 274.3466666666667L384 254.2933333333334M384 385.92L404.0533333333334 365.8666666666667L384 345.8133333333334M313.8133333333334 245.3333333333334L362.6666666666667 294.1866666666667V213.3333333333334H373.3333333333333L434.1333333333334 274.3466666666667L388.48 320L434.1333333333334 365.8666666666667L373.3333333333333 426.6666666666667H362.6666666666667V345.8133333333334L313.8133333333334 394.6666666666667L298.6666666666667 379.52L358.1866666666666 320L298.6666666666667 260.48L313.8133333333334 245.3333333333334z" /> + <glyph glyph-name="phone-classic" + unicode="&#xF602;" + horiz-adv-x="512" d=" M256 384C159.1466666666667 384 71.2533333333333 346.0266666666667 6.1866666666667 284.3733333333334C2.3466666666667 280.5333333333334 0 275.2000000000001 0 269.2266666666667C0 263.2533333333334 2.3466666666667 257.9200000000001 6.1866666666667 254.08L59.0933333333333 201.1733333333334C62.9333333333333 197.3333333333334 68.2666666666667 194.9866666666667 74.6666666666667 194.9866666666667C80 194.9866666666667 85.3333333333333 197.3333333333334 89.1733333333333 200.96C106.0266666666667 216.7466666666667 125.2266666666667 229.9733333333334 145.92 240.4266666666667C152.96 243.84 157.8666666666667 251.0933333333334 157.8666666666667 259.6266666666667V325.76C188.8 336 221.6533333333333 341.3333333333334 256 341.3333333333334C289.92 341.3333333333334 322.9866666666667 336 353.92 325.9733333333334V259.8400000000001C353.92 251.52 358.8266666666667 244.0533333333334 365.8666666666666 240.64C386.7733333333333 230.1866666666667 405.3333333333333 216.7466666666667 422.8266666666667 201.1733333333334C426.6666666666667 197.3333333333334 432 195.2 437.3333333333333 195.2C443.7333333333334 195.2 449.0666666666667 197.5466666666667 452.9066666666666 201.3866666666667L505.8133333333333 254.2933333333334C509.6533333333333 258.1333333333334 512 263.4666666666667 512 269.44C512 275.4133333333333 509.4399999999999 280.5333333333333 505.6 284.3733333333334C440.5333333333333 346.0266666666667 352.64 384 256 384M192 298.6666666666667V234.6666666666667S64 128 64 64V-21.3333333333333H448V64C448 128 320 234.6666666666667 320 234.6666666666667V298.6666666666667H277.3333333333333V256H234.6666666666667V298.6666666666667H192M256 192C303.1466666666667 192 341.3333333333333 153.8133333333334 341.3333333333333 106.6666666666667S303.1466666666667 21.3333333333334 256 21.3333333333334S170.6666666666667 59.52 170.6666666666667 106.6666666666667S208.8533333333333 192 256 192M256 160C226.56 160 202.6666666666667 136.1066666666667 202.6666666666667 106.6666666666667S226.56 53.3333333333334 256 53.3333333333334S309.3333333333333 77.2266666666667 309.3333333333333 106.6666666666667S285.44 160 256 160z" /> + <glyph glyph-name="phone-forward" + unicode="&#xF3F4;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M384 213.3333333333334L490.6666666666666 320L384 426.6666666666667V362.6666666666667H298.6666666666667V277.3333333333334H384V213.3333333333334z" /> + <glyph glyph-name="phone-hangup" + unicode="&#xF3F5;" + horiz-adv-x="512" d=" M256 256C221.8666666666667 256 188.8 250.6666666666667 157.8666666666667 240.64V174.5066666666667C157.8666666666667 165.9733333333334 152.96 158.72 145.92 155.3066666666667C125.0133333333333 144.8533333333334 106.0266666666667 131.4133333333334 88.96 115.84C85.3333333333333 112 80 109.6533333333334 74.6666666666667 109.6533333333334C68.2666666666667 109.6533333333334 62.9333333333333 112.2133333333334 59.0933333333333 116.0533333333334L6.1866666666667 168.96C2.3466666666667 172.8 0 178.1333333333333 0 183.8933333333333C0 189.8666666666667 2.3466666666667 195.2 6.1866666666667 199.04C71.2533333333333 260.9066666666667 159.1466666666667 298.6666666666667 256 298.6666666666667C352.8533333333333 298.6666666666667 440.7466666666667 260.9066666666667 505.8133333333333 199.04C509.6533333333333 195.2 512 189.8666666666667 512 183.8933333333334C512 178.1333333333334 509.6533333333333 172.8000000000001 505.8133333333333 168.96L452.9066666666666 116.0533333333334C449.0666666666667 112.2133333333334 443.7333333333334 109.6533333333334 437.3333333333333 109.6533333333334C432 109.6533333333334 426.6666666666667 112 422.8266666666667 115.84C405.9733333333334 131.4133333333334 386.9866666666667 144.8533333333334 366.08 155.3066666666667C359.04 158.72 354.1333333333334 165.9733333333334 354.1333333333334 174.5066666666667V240.64C323.2 250.6666666666667 290.1333333333334 256 256 256z" /> + <glyph glyph-name="phone-in-talk" + unicode="&#xF3F6;" + horiz-adv-x="512" d=" M320 192H362.6666666666667C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667V256C291.4133333333333 256 320 227.4133333333334 320 192M405.3333333333333 192H448C448 298.6666666666667 362.0266666666667 384 256 384V341.3333333333334C338.3466666666667 341.3333333333334 405.3333333333333 274.5600000000001 405.3333333333333 192M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334z" /> + <glyph glyph-name="phone-incoming" + unicode="&#xF3F7;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.3733333333333L281.8133333333334 77.44C221.44 108.16 171.9466666666667 157.44 141.2266666666667 218.0266666666667L188.16 265.1733333333334C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333M405.3333333333333 213.3333333333334V245.3333333333334H330.6666666666667L448 362.6666666666667L426.6666666666667 384L309.3333333333333 266.6666666666667V341.3333333333334H277.3333333333333V213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="phone-locked" + unicode="&#xF3F8;" + horiz-adv-x="512" d=" M409.6 362.6666666666667H337.0666666666666V373.3333333333334C337.0666666666666 393.3866666666667 353.28 409.6 373.3333333333333 409.6S409.6 393.3866666666667 409.6 373.3333333333334M426.6666666666667 362.6666666666667V373.3333333333334C426.6666666666667 402.7733333333333 402.7733333333333 426.6666666666667 373.3333333333333 426.6666666666667S320 402.7733333333333 320 373.3333333333334V362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334V256C298.6666666666667 244.2666666666667 308.2666666666667 234.6666666666667 320 234.6666666666667H426.6666666666667C438.4 234.6666666666667 448 244.2666666666667 448 256V341.3333333333334C448 353.0666666666667 438.4 362.6666666666667 426.6666666666667 362.6666666666667M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334z" /> + <glyph glyph-name="phone-log" + unicode="&#xF3F9;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C438.4 117.3333333333334 448 107.7333333333334 448 96V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0C226.3466666666667 0 64 162.3466666666667 64 362.6666666666667C64 374.4 73.6 384 85.3333333333333 384H160C171.7333333333334 384 181.3333333333333 374.4 181.3333333333333 362.6666666666667C181.3333333333333 336.2133333333334 185.6 310.4 193.4933333333334 286.5066666666667C195.84 279.04 194.1333333333333 270.7200000000001 188.16 264.9600000000001L141.2266666666667 217.8133333333334C171.9466666666667 157.4400000000001 221.44 107.9466666666667 281.8133333333334 77.2266666666667L328.7466666666667 124.16C334.72 130.1333333333333 343.04 131.84 350.5066666666667 129.4933333333334C374.4 121.6 400 117.3333333333334 426.6666666666667 117.3333333333334M256 384H298.6666666666667V341.3333333333334H256M320 384H448V341.3333333333334H320M256 320H298.6666666666667V277.3333333333334H256M320 320H448V277.3333333333334H320M256 256H298.6666666666667V213.3333333333334H256M320 256H448V213.3333333333334H320" /> + <glyph glyph-name="phone-minus" + unicode="&#xF658;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400.2133333333334 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 172.16 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.9600000000001C194.1333333333333 270.7200000000001 195.84 279.0400000000001 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336.2133333333334 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384M277.3333333333333 320V277.3333333333334H448V320" /> + <glyph glyph-name="phone-missed" + unicode="&#xF3FA;" + horiz-adv-x="512" d=" M505.8133333333333 92.3733333333333C440.7466666666667 154.24 352.8533333333333 192 256 192C159.1466666666667 192 71.2533333333333 154.24 6.1866666666667 92.3733333333333C2.3466666666667 88.5333333333333 0 83.2 0 77.2266666666666C0 71.4666666666666 2.3466666666667 66.1333333333333 6.1866666666667 62.2933333333333L59.0933333333333 9.3866666666667C62.9333333333333 5.5466666666666 68.2666666666667 2.9866666666666 74.6666666666667 2.9866666666666C80 2.9866666666666 85.3333333333333 5.3333333333333 89.1733333333333 9.1733333333333C106.0266666666667 24.9599999999999 125.0133333333333 38.1866666666666 145.92 48.64C152.96 52.0533333333333 157.8666666666667 59.3066666666666 157.8666666666667 67.8399999999999V133.9733333333333C188.8 144 221.6533333333333 149.3333333333333 256 149.3333333333333C290.1333333333334 149.3333333333333 323.2 144 354.1333333333334 133.9733333333333V67.8399999999999C354.1333333333334 59.3066666666666 359.04 52.0533333333333 366.08 48.64C386.9866666666667 38.1866666666667 405.9733333333334 24.96 422.8266666666667 9.1733333333333C426.6666666666667 5.3333333333333 432 2.9866666666666 437.3333333333333 2.9866666666666C443.7333333333334 2.9866666666666 449.0666666666667 5.5466666666666 452.9066666666666 9.3866666666667L505.8133333333333 62.2933333333333C509.6533333333333 66.1333333333333 512 71.4666666666666 512 77.2266666666666C512 83.2 509.6533333333333 88.5333333333333 505.8133333333333 92.3733333333333M138.6666666666667 330.6666666666667L256 213.3333333333334L405.3333333333333 362.6666666666667L384 384L256 256L160 352H234.6666666666667V384H106.6666666666667V256H138.6666666666667V330.6666666666667z" /> + <glyph glyph-name="phone-outgoing" + unicode="&#xF3FB;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.3733333333333L281.8133333333334 77.44C221.44 108.16 171.9466666666667 157.44 141.2266666666667 218.0266666666667L188.16 265.1733333333334C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333M320 384V352H394.6666666666667L277.3333333333333 234.6666666666667L298.6666666666667 213.3333333333334L416 330.6666666666667V256H448V384H320z" /> + <glyph glyph-name="phone-paused" + unicode="&#xF3FC;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H448V384H405.3333333333333M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M362.6666666666667 384H320V234.6666666666667H362.6666666666667V384z" /> + <glyph glyph-name="phone-plus" + unicode="&#xF659;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400.2133333333334 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 172.16 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.9600000000001C194.1333333333333 270.7200000000001 195.84 279.0400000000001 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336.2133333333334 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384M341.3333333333333 384V320H277.3333333333333V277.3333333333334H341.3333333333333V213.3333333333334H384V277.3333333333334H448V320H384V384" /> + <glyph glyph-name="phone-settings" + unicode="&#xF3FD;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H448V256H405.3333333333333M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M362.6666666666667 256H320V213.3333333333334H362.6666666666667M277.3333333333333 256H234.6666666666667V213.3333333333334H277.3333333333333V256z" /> + <glyph glyph-name="phone-voip" + unicode="&#xF3FE;" + horiz-adv-x="512" d=" M277.3333333333333 85.3333333333334V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M505.6 284.3733333333334C509.4399999999999 280.5333333333334 512 275.4133333333334 512 269.4400000000001C512 263.4666666666667 509.6533333333333 258.1333333333334 505.8133333333333 254.2933333333334L452.9066666666666 201.3866666666667C449.0666666666667 197.5466666666667 443.7333333333334 195.2000000000001 437.3333333333333 195.2000000000001C432 195.2000000000001 426.6666666666667 197.3333333333334 422.8266666666667 201.1733333333334C405.3333333333333 216.7466666666667 386.7733333333333 230.1866666666667 365.8666666666666 240.6400000000001C358.8266666666667 244.0533333333334 353.92 251.5200000000001 353.92 259.8400000000001V325.9733333333334C322.9866666666667 336 289.92 341.3333333333334 256 341.3333333333334C221.8666666666667 341.3333333333334 188.8 336 157.8666666666667 325.76V259.6266666666667C157.8666666666667 251.0933333333334 152.96 243.84 145.92 240.4266666666667C125.2266666666667 229.9733333333334 106.0266666666667 216.7466666666667 89.1733333333333 200.96C85.3333333333333 197.3333333333334 80 194.9866666666667 74.6666666666667 194.9866666666667C68.2666666666667 194.9866666666667 62.9333333333333 197.3333333333334 59.0933333333333 201.1733333333334L6.1866666666667 254.08C2.3466666666667 257.92 0 263.2533333333334 0 269.2266666666667C0 275.2 2.3466666666667 280.5333333333333 6.1866666666667 284.3733333333334C71.2533333333333 346.0266666666667 159.1466666666667 384 256 384C352.64 384 440.5333333333333 346.0266666666667 505.6 284.3733333333334M234.6666666666667 234.6666666666667V128H213.3333333333333V234.6666666666667H234.6666666666667M256 234.6666666666667H320V170.6666666666667H277.3333333333333V128H256V234.6666666666667M298.6666666666667 192V213.3333333333334H277.3333333333333V192H298.6666666666667z" /> + <glyph glyph-name="pi" + unicode="&#xF3FF;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V298.6666666666667H128V42.6666666666667H170.6666666666667V298.6666666666667H298.6666666666667V106.6666666666667C298.6666666666667 71.2533333333333 327.2533333333334 42.6666666666667 362.6666666666667 42.6666666666667S426.6666666666667 71.2533333333333 426.6666666666667 106.6666666666667H384C384 94.9333333333333 374.4 85.3333333333334 362.6666666666667 85.3333333333334S341.3333333333333 94.9333333333333 341.3333333333333 106.6666666666667V298.6666666666667H384V341.3333333333334" /> + <glyph glyph-name="pi-box" + unicode="&#xF400;" + horiz-adv-x="512" d=" M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M128 298.6666666666667H362.6666666666667V256H320V149.3333333333334C320 137.6 329.6 128 341.3333333333333 128S362.6666666666667 137.6 362.6666666666667 149.3333333333334H405.3333333333333C405.3333333333333 113.92 376.7466666666667 85.3333333333334 341.3333333333333 85.3333333333334S277.3333333333333 113.92 277.3333333333333 149.3333333333334V256H213.3333333333333V85.3333333333334H170.6666666666667V256H128" /> + <glyph glyph-name="pig" + unicode="&#xF401;" + horiz-adv-x="512" d=" M202.6666666666667 256C184.96 256 170.6666666666667 241.7066666666667 170.6666666666667 224S184.96 192 202.6666666666667 192S234.6666666666667 206.2933333333334 234.6666666666667 224S220.3733333333333 256 202.6666666666667 256M309.3333333333333 256C291.6266666666667 256 277.3333333333333 241.7066666666667 277.3333333333333 224S291.6266666666667 192 309.3333333333333 192S341.3333333333333 206.2933333333334 341.3333333333333 224S327.04 256 309.3333333333333 256M256 362.6666666666667L270.5066666666667 362.0266666666667C290.56 378.88 316.16 392.7466666666667 335.36 397.8666666666667C375.2533333333334 408.5333333333333 445.44 400.4266666666667 454.6133333333333 366.2933333333333C461.2266666666666 341.3333333333334 439.4666666666666 310.4 405.9733333333333 290.56C432.2133333333334 257.7066666666667 448 216.1066666666667 448 170.6666666666667C448 64.64 362.0266666666667 -21.3333333333333 256 -21.3333333333333S64 64.64 64 170.6666666666667C64 216.1066666666667 79.7866666666667 257.7066666666667 106.0266666666667 290.56C72.5333333333333 310.4 50.7733333333333 341.3333333333334 57.3866666666667 366.2933333333334C66.56 400.4266666666667 136.7466666666667 408.5333333333333 176.64 397.8666666666667C195.84 392.7466666666667 221.44 378.88 241.4933333333334 362.0266666666667L256 362.6666666666667M213.3333333333333 106.6666666666667C225.0666666666667 106.6666666666667 234.6666666666667 97.0666666666667 234.6666666666667 85.3333333333334S225.0666666666667 64 213.3333333333333 64S192 73.6 192 85.3333333333334S201.6 106.6666666666667 213.3333333333333 106.6666666666667M298.6666666666667 106.6666666666667C310.4 106.6666666666667 320 97.0666666666667 320 85.3333333333334S310.4 64 298.6666666666667 64S277.3333333333333 73.6 277.3333333333333 85.3333333333334S286.9333333333333 106.6666666666667 298.6666666666667 106.6666666666667M256 170.6666666666667C197.12 170.6666666666667 149.3333333333333 120.7466666666667 149.3333333333333 85.3333333333334C149.3333333333333 49.92 197.12 21.3333333333334 256 21.3333333333334S362.6666666666667 49.92 362.6666666666667 85.3333333333334S314.88 170.6666666666667 256 170.6666666666667M165.5466666666667 356.6933333333334C155.9466666666667 359.2533333333334 97.92 355.2 97.92 355.2S145.0666666666667 317.8666666666667 154.4533333333333 315.3066666666667C164.0533333333334 312.7466666666667 208.4266666666667 310.8266666666667 211.4133333333333 322.1333333333334C214.6133333333334 333.6533333333334 174.9333333333333 354.1333333333334 165.5466666666667 356.6933333333334M346.4533333333334 356.6933333333334C337.0666666666667 354.1333333333334 297.3866666666667 333.6533333333334 300.5866666666667 322.1333333333334C303.5733333333334 310.8266666666667 347.9466666666667 312.7466666666667 357.5466666666667 315.3066666666667C366.9333333333334 317.8666666666667 414.08 355.2000000000001 414.08 355.2000000000001S356.0533333333334 359.2533333333334 346.4533333333334 356.6933333333334z" /> + <glyph glyph-name="pill" + unicode="&#xF402;" + horiz-adv-x="512" d=" M90.0266666666667 207.1466666666667L240.8533333333333 357.9733333333334C290.9866666666666 407.8933333333334 371.84 407.8933333333334 421.9733333333334 357.9733333333334C471.8933333333333 308.0533333333334 471.8933333333333 226.9866666666667 421.9733333333334 176.8533333333334L271.1466666666667 26.0266666666666C221.0133333333334 -23.8933333333333 139.9466666666667 -23.8933333333333 90.0266666666667 26.0266666666666C40.1066666666667 76.16 40.1066666666667 157.0133333333333 90.0266666666667 207.1466666666667M120.32 176.8533333333334C97.92 154.6666666666667 90.4533333333333 122.88 98.1333333333333 94.5066666666667L225.92 222.08L316.3733333333334 131.6266666666667L391.68 207.1466666666667C425.1733333333333 240.4266666666667 425.1733333333333 294.4000000000001 391.68 327.6800000000001C358.4 361.1733333333334 304.4266666666666 361.1733333333334 271.1466666666667 327.6800000000001L120.32 176.8533333333334z" /> + <glyph glyph-name="pin" + unicode="&#xF403;" + horiz-adv-x="512" d=" M341.3333333333333 192V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333V362.6666666666667H170.6666666666667V192L128 149.3333333333334V106.6666666666667H238.9333333333333V-21.3333333333333H273.0666666666666V106.6666666666667H384V149.3333333333334L341.3333333333333 192z" /> + <glyph glyph-name="pin-off" + unicode="&#xF404;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L273.0666666666667 105.1733333333334V-21.3333333333333H238.9333333333334V106.6666666666667H128V149.3333333333334L170.6666666666667 192V207.5733333333334L42.6666666666667 335.5733333333334M341.3333333333333 192L384 149.3333333333334V106.6666666666667H380.16L170.6666666666667 316.1600000000001V362.6666666666667H149.3333333333333V405.3333333333333H362.6666666666667V362.6666666666667H341.3333333333333V192z" /> + <glyph glyph-name="pine-tree" + unicode="&#xF405;" + horiz-adv-x="512" d=" M213.3333333333333 0V64H64L170.6666666666667 170.6666666666667H106.6666666666667L213.3333333333333 277.3333333333334H149.3333333333333L256 384L362.6666666666667 277.3333333333334H298.6666666666667L405.3333333333333 170.6666666666667H341.3333333333333L448 64H298.6666666666667V0H213.3333333333333z" /> + <glyph glyph-name="pine-tree-box" + unicode="&#xF406;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M234.6666666666667 42.6666666666667H277.3333333333333V85.3333333333334H384L298.6666666666667 170.6666666666667H362.6666666666667L277.3333333333333 256H341.3333333333333L256 341.3333333333334L170.6666666666667 256H234.6666666666667L149.3333333333333 170.6666666666667H213.3333333333333L128 85.3333333333334H234.6666666666667V42.6666666666667z" /> + <glyph glyph-name="pinterest" + unicode="&#xF407;" + horiz-adv-x="512" d=" M282.6666666666667 80C261.3333333333333 80 240.8533333333333 89.1733333333334 226.1333333333334 104.5333333333333L200.7466666666667 19.2L199.04 13.6533333333333L198.1866666666667 14.0799999999999C192.8533333333334 5.3333333333333 183.68 -1e-13 173.2266666666667 -1e-13C157.2266666666667 -1e-13 144 13.2266666666666 144 29.4399999999999C144 30.7199999999999 144.2133333333334 31.9999999999999 144.4266666666667 33.2799999999999L144 33.4933333333333L145.28 38.1866666666666L194.56 186.4533333333333S189.2266666666667 202.6666666666666 189.2266666666667 225.7066666666666C189.2266666666667 271.5733333333333 213.9733333333334 285.4399999999999 233.6 285.4399999999999C253.44 285.4399999999999 271.5733333333333 278.3999999999999 271.5733333333333 250.4533333333333C271.5733333333333 214.6133333333332 247.68 196.2666666666666 247.68 170.6666666666666C247.68 150.6133333333332 263.8933333333333 134.6133333333332 283.52 134.6133333333332C345.8133333333334 134.6133333333332 368 181.3333333333333 368 225.2799999999999C368 283.5199999999999 317.6533333333333 330.6666666666666 256 330.6666666666666C194.1333333333333 330.6666666666666 144 283.5199999999999 144 225.2799999999999C144 207.3599999999999 149.3333333333333 189.44 158.5066666666667 173.8666666666666C160.8533333333333 169.5999999999999 162.1333333333333 164.9066666666666 162.1333333333333 159.9999999999999C162.1333333333333 145.2799999999999 150.1866666666667 133.3333333333333 135.4666666666667 133.3333333333333C126.08 133.3333333333333 117.3333333333333 138.6666666666666 112.4266666666667 146.5599999999999C98.1333333333333 170.6666666666665 90.6666666666667 197.7599999999999 90.6666666666667 225.2799999999999C90.6666666666667 312.9600000000001 164.9066666666667 384 256 384S421.3333333333333 312.9600000000001 421.3333333333333 225.28C421.3333333333333 155.3066666666667 377.8133333333334 80 282.6666666666667 80z" /> + <glyph glyph-name="pinterest-box" + unicode="&#xF408;" + horiz-adv-x="512" d=" M277.3333333333333 102.4C260.2666666666667 102.4 243.84 109.6533333333334 232.1066666666667 122.0266666666667L211.84 53.3333333333334L210.3466666666666 49.28L209.7066666666667 49.7066666666667C205.6533333333333 42.6666666666667 198.1866666666667 38.4 189.8666666666667 38.4C176.8533333333334 38.4 166.4 48.8533333333332 166.4 61.8666666666667C166.4 62.9333333333333 166.6133333333334 64 166.6133333333334 65.0666666666666H166.4L167.4666666666667 68.9066666666666L206.9333333333333 187.5199999999999S202.6666666666667 200.7466666666666 202.6666666666667 219.0933333333333C202.6666666666667 256 222.2933333333333 266.6666666666667 238.08 266.6666666666667C254.08 266.6666666666667 268.3733333333334 261.12 268.3733333333334 238.7199999999999C268.3733333333334 210.1333333333333 249.3866666666667 195.4133333333333 249.3866666666667 174.7199999999999C249.3866666666667 158.9333333333333 262.1866666666666 145.92 277.9733333333333 145.92C327.8933333333333 145.92 345.6 183.4666666666666 345.6 218.6666666666666C345.6 265.1733333333333 305.4933333333334 302.9333333333333 256 302.9333333333333C206.5066666666667 302.9333333333333 166.4 265.1733333333333 166.4 218.6666666666666C166.4 204.3733333333333 170.6666666666667 190.0799999999999 177.92 177.4933333333333C179.84 174.0799999999999 181.3333333333333 170.6666666666666 181.3333333333333 166.4C181.3333333333333 154.6666666666666 171.7333333333334 145.0666666666666 160 145.0666666666666C152.1066666666667 145.0666666666666 144.8533333333333 149.3333333333333 141.2266666666667 155.7333333333333C129.7066666666667 174.72 123.7333333333333 196.48 123.7333333333333 218.6666666666666C123.7333333333333 288.64 183.04 345.6 256 345.6C328.96 345.6 388.2666666666667 288.64 388.2666666666667 218.6666666666667C388.2666666666667 162.7733333333333 353.4933333333334 102.4 277.3333333333333 102.4M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="pizza" + unicode="&#xF409;" + horiz-adv-x="512" d=" M256 128C232.5333333333334 128 213.3333333333333 147.2000000000001 213.3333333333333 170.6666666666667C213.3333333333333 194.3466666666667 232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 194.1333333333333 298.6666666666667 170.6666666666667S279.4666666666667 128 256 128M149.3333333333333 298.6666666666667C149.3333333333333 322.3466666666667 168.32 341.3333333333334 192 341.3333333333334C215.4666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667S215.4666666666667 256 192 256C168.32 256 149.3333333333333 275.2000000000001 149.3333333333333 298.6666666666667M256 405.3333333333333C179.84 405.3333333333333 111.5733333333333 372.48 64 320L256 -21.3333333333333L448 320C400.64 372.48 332.16 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="play" + unicode="&#xF40A;" + horiz-adv-x="512" d=" M170.6666666666667 338.3466666666667V39.68L405.3333333333333 189.0133333333333L170.6666666666667 338.3466666666667z" /> + <glyph glyph-name="play-box-outline" + unicode="&#xF40B;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M213.3333333333333 277.3333333333334V106.6666666666667L320 192L213.3333333333333 277.3333333333334z" /> + <glyph glyph-name="play-circle" + unicode="&#xF40C;" + horiz-adv-x="512" d=" M213.3333333333333 96V288L341.3333333333333 192M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="play-circle-outline" + unicode="&#xF40D;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M213.3333333333333 96L341.3333333333333 192L213.3333333333333 288V96z" /> + <glyph glyph-name="play-pause" + unicode="&#xF40E;" + horiz-adv-x="512" d=" M64 341.3333333333334V42.6666666666667L234.6666666666667 192M277.3333333333333 42.6666666666667H341.3333333333333V341.3333333333334H277.3333333333333M384 341.3333333333334V42.6666666666667H448V341.3333333333334" /> + <glyph glyph-name="play-protected-content" + unicode="&#xF40F;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334V64H234.6666666666667V106.6666666666667H85.3333333333333V298.6666666666667H362.6666666666667V213.3333333333334H405.3333333333333V341.3333333333334H42.6666666666667M192 256V149.3333333333334L266.6666666666667 202.6666666666667L192 256M448.8533333333333 199.04L343.2533333333334 93.44L297.8133333333334 138.6666666666667L267.7333333333334 108.5866666666667L343.2533333333334 33.0666666666667L478.9333333333333 168.7466666666667L448.8533333333333 199.04z" /> + <glyph glyph-name="playlist-check" + unicode="&#xF5C7;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667V320M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667V106.6666666666667M458.6666666666666 202.6666666666667L490.6666666666666 170.6666666666667L341.3333333333333 21.3333333333334L245.3333333333333 117.3333333333334L277.3333333333333 149.3333333333334L341.3333333333333 85.3333333333334L458.6666666666666 202.6666666666667z" /> + <glyph glyph-name="playlist-minus" + unicode="&#xF410;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667M256 149.3333333333334V106.6666666666667H469.3333333333333V149.3333333333334M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="playlist-play" + unicode="&#xF411;" + horiz-adv-x="512" d=" M405.3333333333333 256H42.6666666666667V213.3333333333334H405.3333333333333V256M405.3333333333333 341.3333333333334H42.6666666666667V298.6666666666667H405.3333333333333V341.3333333333334M42.6666666666667 128H320V170.6666666666667H42.6666666666667V128M362.6666666666667 170.6666666666667V42.6666666666667L469.3333333333333 106.6666666666667L362.6666666666667 170.6666666666667z" /> + <glyph glyph-name="playlist-plus" + unicode="&#xF412;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667M384 149.3333333333334V234.6666666666667H341.3333333333333V149.3333333333334H256V106.6666666666667H341.3333333333333V21.3333333333334H384V106.6666666666667H469.3333333333333V149.3333333333334M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="playlist-remove" + unicode="&#xF413;" + horiz-adv-x="512" d=" M42.6666666666667 320V277.3333333333334H298.6666666666667V320H42.6666666666667M42.6666666666667 234.6666666666667V192H213.3333333333333V234.6666666666667H42.6666666666667M302.2933333333333 218.4533333333334L272.2133333333333 188.3733333333333L332.5866666666667 128L272.2133333333333 67.6266666666667L302.2933333333333 37.5466666666667L362.6666666666667 97.92L423.04 37.5466666666666L453.1199999999999 67.6266666666667L392.7466666666667 128L453.12 188.3733333333333L423.04 218.4533333333334L362.6666666666667 158.0800000000001L302.2933333333333 218.4533333333334M42.6666666666667 149.3333333333334V106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667z" /> + <glyph glyph-name="playstation" + unicode="&#xF414;" + horiz-adv-x="512" d=" M202.6666666666667 356.9066666666667C232.1066666666667 351.36 275.2 338.3466666666667 298.6666666666667 330.6666666666667C357.3333333333333 310.4 377.3866666666667 285.2266666666667 377.3866666666667 228.48C377.3866666666667 173.0133333333334 343.2533333333334 152.1066666666667 299.7333333333334 173.0133333333334V276.2666666666667C299.7333333333334 288 297.6 299.3066666666667 286.08 302.5066666666667C277.3333333333333 305.28 272.2133333333333 297.1733333333334 272.2133333333333 285.2266666666667V27.0933333333334L202.6666666666667 49.28V356.9066666666667M285.2266666666667 72.1066666666667L397.2266666666667 112.0000000000001C410.0266666666667 116.4800000000001 411.9466666666667 122.8800000000001 401.7066666666667 126.2933333333334C391.2533333333334 129.7066666666668 372.6933333333334 128.6400000000001 359.8933333333333 124.1600000000001L285.2266666666667 97.9200000000001V139.7333333333335L289.7066666666667 141.2266666666668S311.2533333333334 149.3333333333335 341.3333333333333 152.1066666666668C371.84 155.5200000000001 408.9600000000001 151.6800000000001 437.9733333333334 140.8000000000001C470.8266666666667 130.3466666666668 474.6666666666666 114.9866666666668 466.3466666666666 104.5333333333335C457.8133333333333 93.8666666666668 437.3333333333333 86.4000000000001 437.3333333333333 86.4000000000001L285.2266666666667 32.0000000000001V72.1066666666667M74.6666666666667 76.3733333333334C41.1733333333333 85.3333333333334 35.4133333333333 105.6 50.7733333333333 117.3333333333334C65.0666666666667 128 89.1733333333333 135.4666666666667 89.1733333333333 135.4666666666667L189.0133333333333 170.6666666666667V130.5600000000001L117.3333333333333 104.7466666666667C104.5333333333333 100.2666666666667 102.6133333333334 93.8666666666667 112.8533333333333 90.4533333333333C123.0933333333333 87.04 141.8666666666667 87.8933333333333 154.4533333333333 92.5866666666667L189.0133333333333 104.96V68.9066666666666L182.1866666666667 67.6266666666667C147.6266666666666 62.0799999999999 110.9333333333333 63.9999999999999 74.6666666666666 76.3733333333333z" /> + <glyph glyph-name="plus" + unicode="&#xF415;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V170.6666666666667H106.6666666666667V213.3333333333334H234.6666666666667V341.3333333333334H277.3333333333333V213.3333333333334H405.3333333333333V170.6666666666667z" /> + <glyph glyph-name="plus-box" + unicode="&#xF416;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667V170.6666666666667H149.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="plus-circle" + unicode="&#xF417;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667V170.6666666666667H149.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="plus-circle-multiple-outline" + unicode="&#xF418;" + horiz-adv-x="512" d=" M341.3333333333333 277.3333333333334H298.6666666666667V213.3333333333334H234.6666666666667V170.6666666666667H298.6666666666667V106.6666666666667H341.3333333333333V170.6666666666667H405.3333333333333V213.3333333333334H341.3333333333333M42.6666666666667 192C42.6666666666667 251.52 77.6533333333333 302.9333333333334 128 326.8266666666667V373.3333333333334C53.3333333333333 346.4533333333334 0 275.4133333333334 0 192S53.3333333333333 37.5466666666666 128 10.6666666666667V57.1733333333334C77.6533333333333 81.0666666666667 42.6666666666667 132.48 42.6666666666667 192M320 384C214.1866666666667 384 128 297.8133333333334 128 192S214.1866666666667 0 320 0S512 86.1866666666667 512 192S425.8133333333334 384 320 384M320 42.6666666666667C237.6533333333334 42.6666666666667 170.6666666666667 109.6533333333334 170.6666666666667 192S237.6533333333334 341.3333333333334 320 341.3333333333334S469.3333333333333 274.3466666666667 469.3333333333333 192S402.3466666666667 42.6666666666667 320 42.6666666666667z" /> + <glyph glyph-name="plus-circle-outline" + unicode="&#xF419;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="plus-network" + unicode="&#xF41A;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334V256H277.3333333333333V320H234.6666666666667V256H170.6666666666667V213.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="plus-one" + unicode="&#xF41B;" + horiz-adv-x="512" d=" M213.3333333333333 277.3333333333334V192H298.6666666666667V149.3333333333334H213.3333333333333V64H170.6666666666667V149.3333333333334H85.3333333333333V192H170.6666666666667V277.3333333333334H213.3333333333333M309.3333333333333 318.2933333333334L405.3333333333333 341.3333333333334V64H362.6666666666667V290.1333333333334L309.3333333333333 279.4666666666667V318.2933333333334z" /> + <glyph glyph-name="pocket" + unicode="&#xF41C;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192V352C42.6666666666667 381.44 66.56 405.3333333333333 96 405.3333333333333H416C445.44 405.3333333333333 469.3333333333333 381.44 469.3333333333333 352V192M338.7733333333333 272L256 189.2266666666667L173.2266666666666 272.2133333333334C160.64 284.8 140.3733333333333 284.8 128 272.2133333333334C115.4133333333333 259.8400000000001 115.4133333333333 239.5733333333334 128 226.9866666666667L233.1733333333333 121.1733333333334C245.3333333333333 108.8 266.0266666666667 108.8 278.6133333333333 121.1733333333334L384 226.7733333333334C396.5866666666667 239.36 396.5866666666667 259.6266666666667 384 272C371.6266666666667 284.5866666666667 351.36 284.5866666666667 338.7733333333333 272z" /> + <glyph glyph-name="pokeball" + unicode="&#xF41D;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C168.96 362.6666666666667 97.0666666666667 297.6 86.6133333333333 213.3333333333334H173.44C182.8266666666666 250.24 216.32 277.3333333333334 256 277.3333333333334C295.68 277.3333333333334 329.1733333333333 250.24 338.56 213.3333333333334H425.3866666666667C414.9333333333334 297.6 343.04 362.6666666666667 256 362.6666666666667M256 21.3333333333334C343.04 21.3333333333334 414.9333333333333 86.4 425.3866666666667 170.6666666666667H338.56C329.1733333333334 133.76 295.68 106.6666666666667 256 106.6666666666667C216.32 106.6666666666667 182.8266666666667 133.76 173.44 170.6666666666667H86.6133333333333C97.0666666666667 86.4 168.96 21.3333333333334 256 21.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="polaroid" + unicode="&#xF41E;" + horiz-adv-x="512" d=" M128 384H384C407.4666666666667 384 426.6666666666667 364.8 426.6666666666667 341.3333333333334V42.6666666666667C426.6666666666667 19.2 407.4666666666667 0 384 0H128C104.5333333333333 0 85.3333333333333 19.2 85.3333333333333 42.6666666666667V341.3333333333334C85.3333333333333 364.8 104.5333333333333 384 128 384M128 341.3333333333334V85.3333333333334H384V341.3333333333334H128z" /> + <glyph glyph-name="poll" + unicode="&#xF41F;" + horiz-adv-x="512" d=" M64 -21.3333333333333V277.3333333333334H149.3333333333333V-21.3333333333333H64M213.3333333333333 -21.3333333333333V405.3333333333333H298.6666666666667V-21.3333333333333H213.3333333333333M362.6666666666667 -21.3333333333333V149.3333333333334H448V-21.3333333333333H362.6666666666667z" /> + <glyph glyph-name="poll-box" + unicode="&#xF420;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 85.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333M192 85.3333333333334H149.3333333333333V234.6666666666667H192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="polymer" + unicode="&#xF421;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667H320L151.4666666666667 93.2266666666667L96 192L192 362.6666666666667H106.6666666666667L10.6666666666667 192L106.6666666666667 21.3333333333334H192L360.32 290.7733333333334L416 192L320 21.3333333333334H405.3333333333333L501.3333333333333 192L405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="pool" + unicode="&#xF606;" + horiz-adv-x="512" d=" M42.6666666666667 128C78.2933333333333 144 113.7066666666667 160 149.3333333333333 167.04V341.3333333333334C149.3333333333333 376.7466666666667 177.92 405.3333333333333 213.3333333333333 405.3333333333333C241.28 405.3333333333333 264.96 387.6266666666667 273.7066666666667 362.6666666666667H213.3333333333333C201.6 362.6666666666667 192 353.0666666666667 192 341.3333333333334V320H298.6666666666667V341.3333333333334C298.6666666666667 376.7466666666667 327.2533333333334 405.3333333333333 362.6666666666667 405.3333333333333C390.6133333333333 405.3333333333333 414.2933333333334 387.6266666666667 423.04 362.6666666666667H362.6666666666667C350.9333333333333 362.6666666666667 341.3333333333333 353.0666666666667 341.3333333333333 341.3333333333334V129.28C384 136.1066666666667 426.6666666666667 170.6666666666667 469.3333333333333 170.6666666666667V128C421.9733333333334 128 374.6133333333333 85.3333333333334 327.04 85.3333333333334C279.68 85.3333333333334 232.32 128 184.96 128C137.3866666666667 128 90.0266666666667 106.6666666666667 42.6666666666667 85.3333333333334V128M298.6666666666667 277.3333333333334H192V234.6666666666667H298.6666666666667V277.3333333333334M298.6666666666667 192H192V170.6666666666667C227.6266666666667 167.2533333333333 263.04 142.72 298.6666666666667 132.48V192M42.6666666666667 42.6666666666667C90.0266666666667 64 137.3866666666667 85.3333333333334 184.96 85.3333333333334C232.32 85.3333333333334 279.68 42.6666666666667 327.04 42.6666666666667C374.6133333333333 42.6666666666667 421.9733333333334 85.3333333333334 469.3333333333333 85.3333333333334V42.6666666666667C421.9733333333334 42.6666666666667 374.6133333333333 0 327.04 0C279.68 0 232.32 42.6666666666667 184.96 42.6666666666667C137.3866666666667 42.6666666666667 90.0266666666667 21.3333333333334 42.6666666666667 0V42.6666666666667z" /> + <glyph glyph-name="popcorn" + unicode="&#xF422;" + horiz-adv-x="512" d=" M149.3333333333333 -21.3333333333333H101.3333333333333S85.3333333333333 -21.3333333333333 81.28 7.4666666666667L43.52 366.7200000000001L42.6666666666667 373.3333333333334C42.6666666666667 391.04 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333S128 391.04 128 373.3333333333334C128 391.04 147.2 405.3333333333333 170.6666666666667 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334C213.3333333333333 391.04 232.5333333333334 405.3333333333333 256 405.3333333333333C279.2533333333334 405.3333333333333 298.6666666666667 391.2533333333334 298.6666666666667 373.3333333333334C298.6666666666667 391.04 317.8666666666667 405.3333333333333 341.3333333333333 405.3333333333333S384 391.04 384 373.3333333333334C384 391.04 403.2 405.3333333333333 426.6666666666667 405.3333333333333S469.3333333333333 391.04 469.3333333333333 373.3333333333334L468.48 366.7200000000001L430.7200000000001 7.4666666666667C426.6666666666667 -21.3333333333333 410.6666666666667 -21.3333333333333 410.6666666666667 -21.3333333333333H149.3333333333333M380.8 342.8266666666667C374.4 354.3466666666667 359.2533333333334 362.6666666666667 341.3333333333333 362.6666666666667C324.0533333333333 362.6666666666667 306.3466666666667 354.9866666666667 298.6666666666667 344.1066666666667L293.9733333333333 21.3333333333334H355.4133333333333L380.8 342.8266666666667M213.3333333333333 344.1066666666667C205.6533333333333 354.9866666666667 187.9466666666667 362.6666666666667 170.6666666666667 362.6666666666667C152.7466666666667 362.6666666666667 137.6 354.3466666666667 131.2 342.8266666666667L156.5866666666667 21.3333333333334H218.0266666666667L213.3333333333333 344.1066666666667z" /> + <glyph glyph-name="pot" + unicode="&#xF65A;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0H149.3333333333333C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V170.6666666666667H64V234.6666666666667H448V170.6666666666667H405.3333333333333V42.6666666666667M128 320H170.6666666666667V277.3333333333334H128V320M234.6666666666667 320H277.3333333333333V277.3333333333334H234.6666666666667V320M341.3333333333333 320H384V277.3333333333334H341.3333333333333V320M384 384H426.6666666666667V341.3333333333334H384V384M277.3333333333333 384H320V341.3333333333334H277.3333333333333V384M170.6666666666667 384H213.3333333333333V341.3333333333334H170.6666666666667V384z" /> + <glyph glyph-name="pot-mix" + unicode="&#xF65B;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0H149.3333333333333C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V170.6666666666667H64V234.6666666666667H298.6666666666667L384 382.5066666666667L420.9066666666667 361.1733333333334L347.9466666666666 234.6666666666667H448V170.6666666666667H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="pound" + unicode="&#xF423;" + horiz-adv-x="512" d=" M115.4133333333333 0L130.56 85.3333333333334H45.2266666666667L52.6933333333333 128H138.0266666666667L160.64 256H75.3066666666667L82.7733333333334 298.6666666666667H168.1066666666667L183.2533333333333 384H225.92L210.7733333333333 298.6666666666667H338.7733333333333L353.92 384H396.5866666666667L381.44 298.6666666666667H466.7733333333333L459.3066666666666 256H373.9733333333333L351.36 128H436.6933333333333L429.2266666666666 85.3333333333334H343.8933333333333L328.7466666666666 0H286.08L301.2266666666666 85.3333333333334H173.2266666666666L158.0799999999999 0H115.4133333333333M203.3066666666667 256L180.6933333333333 128H308.6933333333333L331.3066666666666 256H203.3066666666667z" /> + <glyph glyph-name="pound-box" + unicode="&#xF424;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M149.3333333333333 64H192L199.4666666666667 106.6666666666667H284.8L277.3333333333333 64H320L327.4666666666667 106.6666666666667H370.1333333333334L377.8133333333334 149.3333333333334H335.1466666666667L350.08 234.6666666666667H392.7466666666667L400.2133333333334 277.3333333333334H357.5466666666667L365.2266666666667 320H322.56L314.88 277.3333333333334H229.5466666666667L237.2266666666667 320H194.56L186.88 277.3333333333334H144.2133333333334L136.7466666666667 234.6666666666667H179.4133333333334L164.48 149.3333333333334H121.8133333333334L114.1333333333334 106.6666666666667H156.8L149.3333333333333 64M222.08 234.6666666666667H307.4133333333333L292.48 149.3333333333334H207.1466666666667L222.08 234.6666666666667z" /> + <glyph glyph-name="power" + unicode="&#xF425;" + horiz-adv-x="512" d=" M353.28 331.9466666666667L322.3466666666667 301.0133333333333C359.2533333333334 278.6133333333334 384 238.2933333333334 384 192C384 121.3866666666667 326.6133333333334 64 256 64S128 121.3866666666667 128 192C128 238.2933333333334 152.7466666666667 278.6133333333334 189.44 301.2266666666667L158.72 331.9466666666667C114.3466666666667 301.2266666666667 85.3333333333333 250.0266666666667 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 250.0266666666667 397.6533333333333 301.2266666666667 353.28 331.9466666666667M277.3333333333333 384H234.6666666666667V170.6666666666667H277.3333333333333" /> + <glyph glyph-name="power-settings" + unicode="&#xF426;" + horiz-adv-x="512" d=" M320 -64H362.6666666666667V-21.3333333333333H320M353.28 353.28L322.3466666666667 322.3466666666667C359.2533333333334 299.9466666666667 384 259.6266666666667 384 213.3333333333334C384 142.72 326.6133333333334 85.3333333333334 256 85.3333333333334S128 142.72 128 213.3333333333334C128 259.6266666666667 152.7466666666667 299.9466666666667 189.44 322.56L158.72 353.28C114.3466666666667 322.56 85.3333333333333 271.36 85.3333333333333 213.3333333333334C85.3333333333333 119.04 161.7066666666667 42.6666666666667 256 42.6666666666667S426.6666666666667 119.04 426.6666666666667 213.3333333333334C426.6666666666667 271.36 397.6533333333333 322.56 353.28 353.28M277.3333333333333 405.3333333333333H234.6666666666667V192H277.3333333333333M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="power-socket" + unicode="&#xF427;" + horiz-adv-x="512" d=" M320 128H362.6666666666667V213.3333333333334H320M149.3333333333333 128H192V213.3333333333334H149.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V256H234.6666666666667M188.3733333333333 298.6666666666667H324.2666666666667L405.3333333333333 217.6V85.3333333333334H106.6666666666667V217.6M170.6666666666667 341.3333333333334L64 234.6666666666667V42.6666666666667H448V234.6666666666667L341.3333333333333 341.3333333333334H170.6666666666667z" /> + <glyph glyph-name="presentation" + unicode="&#xF428;" + horiz-adv-x="512" d=" M42.6666666666667 384H213.3333333333333C213.3333333333333 407.4666666666667 232.5333333333334 426.6666666666667 256 426.6666666666667S298.6666666666667 407.4666666666667 298.6666666666667 384H469.3333333333333V341.3333333333334H448V106.6666666666667H325.3333333333333L362.6666666666667 -21.3333333333333H320L282.6666666666667 106.6666666666667H229.3333333333333L192 -21.3333333333333H149.3333333333333L186.6666666666667 106.6666666666667H64V341.3333333333334H42.6666666666667V384M106.6666666666667 341.3333333333334V149.3333333333334H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="presentation-play" + unicode="&#xF429;" + horiz-adv-x="512" d=" M42.6666666666667 384H213.3333333333333C213.3333333333333 407.4666666666667 232.5333333333334 426.6666666666667 256 426.6666666666667S298.6666666666667 407.4666666666667 298.6666666666667 384H469.3333333333333V341.3333333333334H448V106.6666666666667H325.3333333333333L362.6666666666667 -21.3333333333333H320L282.6666666666667 106.6666666666667H229.3333333333333L192 -21.3333333333333H149.3333333333333L186.6666666666667 106.6666666666667H64V341.3333333333334H42.6666666666667V384M106.6666666666667 341.3333333333334V149.3333333333334H405.3333333333333V341.3333333333334H106.6666666666667M252.8 195.2C250.88 193.28 248.32 192 245.3333333333333 192C239.36 192 234.6666666666667 196.6933333333334 234.6666666666667 202.6666666666667V288C234.6666666666667 293.9733333333334 239.36 298.6666666666667 245.3333333333333 298.6666666666667C248.32 298.6666666666667 250.88 297.3866666666667 252.8 295.4666666666667L282.6666666666667 265.8133333333334C289.4933333333334 258.9866666666667 296.32 252.16 296.32 245.3333333333334C296.32 238.5066666666667 289.4933333333334 231.68 282.6666666666667 224.8533333333333L252.8 195.2z" /> + <glyph glyph-name="printer" + unicode="&#xF42A;" + horiz-adv-x="512" d=" M384 384H128V298.6666666666667H384M405.3333333333333 192C393.6 192 384 201.6 384 213.3333333333334S393.6 234.6666666666667 405.3333333333333 234.6666666666667S426.6666666666667 225.0666666666667 426.6666666666667 213.3333333333334S417.0666666666667 192 405.3333333333333 192M341.3333333333333 42.6666666666667H170.6666666666667V149.3333333333334H341.3333333333333M405.3333333333333 277.3333333333334H106.6666666666667C71.2533333333333 277.3333333333334 42.6666666666667 248.7466666666667 42.6666666666667 213.3333333333334V85.3333333333334H128V0H384V85.3333333333334H469.3333333333333V213.3333333333334C469.3333333333333 248.7466666666667 440.7466666666667 277.3333333333334 405.3333333333333 277.3333333333334z" /> + <glyph glyph-name="printer-3d" + unicode="&#xF42B;" + horiz-adv-x="512" d=" M405.3333333333333 320C417.0666666666667 320 426.6666666666667 329.6 426.6666666666667 341.3333333333334S417.0666666666667 362.6666666666667 405.3333333333333 362.6666666666667S384 353.0666666666667 384 341.3333333333334S393.6 320 405.3333333333333 320M405.3333333333333 405.3333333333333C440.7466666666667 405.3333333333333 469.3333333333333 376.7466666666667 469.3333333333333 341.3333333333334V213.3333333333334H384V298.6666666666667H128V213.3333333333334H42.6666666666667V341.3333333333334C42.6666666666667 376.7466666666667 71.2533333333333 405.3333333333333 106.6666666666667 405.3333333333333H405.3333333333333M384 58.6666666666667C384 50.5600000000001 379.52 43.52 372.6933333333333 39.8933333333334L268.16 -17.4933333333333C264.5333333333333 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L139.3066666666666 39.8933333333334C132.4799999999999 43.5200000000001 128 50.5600000000001 128 58.6666666666667V170.6666666666667C128 178.7733333333334 132.4799999999999 185.8133333333334 139.3066666666666 189.4400000000001L243.84 241.4933333333334C247.2533333333333 244.0533333333334 251.5199999999999 245.3333333333334 256 245.3333333333334C260.48 245.3333333333334 264.5333333333333 244.0533333333334 268.16 241.4933333333334L372.6933333333333 189.4400000000001C379.52 185.8133333333334 384 178.7733333333334 384 170.6666666666667V58.6666666666667M256 199.4666666666667L192.8533333333333 170.6666666666667L256 136.5333333333334L319.1466666666667 170.6666666666667L256 199.4666666666667M170.6666666666667 71.2533333333333L234.6666666666667 36.48V99.6266666666667L170.6666666666667 134.1866666666667V71.2533333333335M341.3333333333333 71.2533333333335V134.1866666666667L277.3333333333333 99.6266666666667V36.48L341.3333333333333 71.2533333333333z" /> + <glyph glyph-name="printer-alert" + unicode="&#xF42C;" + horiz-adv-x="512" d=" M298.6666666666667 362.6666666666667V277.3333333333334H128V362.6666666666667H298.6666666666667M320 170.6666666666667C331.7333333333334 170.6666666666667 341.3333333333333 180.2666666666667 341.3333333333333 192S331.7333333333334 213.3333333333334 320 213.3333333333334S298.6666666666667 203.7333333333334 298.6666666666667 192S308.2666666666667 170.6666666666667 320 170.6666666666667M277.3333333333333 42.6666666666667V128H149.3333333333333V42.6666666666667H277.3333333333333M320 256C355.4133333333333 256 384 227.4133333333334 384 192V85.3333333333334H320V0H106.6666666666667V85.3333333333334H42.6666666666667V192C42.6666666666667 227.4133333333334 71.2533333333333 256 106.6666666666667 256H320M469.3333333333333 298.6666666666667V192H426.6666666666667V298.6666666666667H469.3333333333333M469.3333333333333 149.3333333333334V106.6666666666667H426.6666666666667V149.3333333333334H469.3333333333333z" /> + <glyph glyph-name="priority-high" + unicode="&#xF603;" + horiz-adv-x="512" d=" M298.6666666666667 42.6666666666667H469.3333333333333V85.3333333333334H298.6666666666667V42.6666666666667M298.6666666666667 160H469.3333333333333V202.6666666666667H298.6666666666667V160M298.6666666666667 277.3333333333334H469.3333333333333V320H298.6666666666667V277.3333333333334M42.6666666666667 181.3333333333334C42.6666666666667 257.7066666666667 104.96 320 181.3333333333333 320H192V362.6666666666667L256 298.6666666666667L192 234.6666666666667V277.3333333333334H181.3333333333333C128 277.3333333333334 85.3333333333333 234.6666666666667 85.3333333333333 181.3333333333334S128 85.3333333333334 181.3333333333333 85.3333333333334H256V42.6666666666667H181.3333333333333C104.96 42.6666666666667 42.6666666666667 104.96 42.6666666666667 181.3333333333334z" /> + <glyph glyph-name="priority-low" + unicode="&#xF604;" + horiz-adv-x="512" d=" M298.6666666666667 341.3333333333334H469.3333333333333V298.6666666666667H298.6666666666667V341.3333333333334M298.6666666666667 224H469.3333333333333V181.3333333333334H298.6666666666667V224M298.6666666666667 106.6666666666667H469.3333333333333V64H298.6666666666667V106.6666666666667M42.6666666666667 202.6666666666667C42.6666666666667 126.2933333333334 104.96 64 181.3333333333333 64H192V21.3333333333334L256 85.3333333333334L192 149.3333333333334V106.6666666666667H181.3333333333333C128 106.6666666666667 85.3333333333333 149.3333333333334 85.3333333333333 202.6666666666667S128 298.6666666666667 181.3333333333333 298.6666666666667H256V341.3333333333334H181.3333333333333C104.96 341.3333333333334 42.6666666666667 279.04 42.6666666666667 202.6666666666667z" /> + <glyph glyph-name="professional-hexagon" + unicode="&#xF42D;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M106.6666666666667 256V128H133.3333333333333V170.6666666666667H149.3333333333333C172.8 170.6666666666667 192 189.8666666666667 192 213.3333333333334S172.8 256 149.3333333333333 256H106.6666666666667M133.3333333333333 192V234.6666666666667H144C155.7333333333333 234.6666666666667 165.3333333333333 225.0666666666667 165.3333333333333 213.3333333333334S155.7333333333333 192 144 192H133.3333333333333M208 256V128H234.6666666666667V170.6666666666667H250.6666666666667L264.7466666666667 128H292.9066666666667L276.0533333333334 178.9866666666667C286.5066666666667 186.6666666666667 293.3333333333334 199.2533333333333 293.3333333333334 213.3333333333334C293.3333333333334 236.8 274.1333333333334 256 250.6666666666667 256H208M234.6666666666667 192V234.6666666666667H245.3333333333333C257.0666666666667 234.6666666666667 266.6666666666667 225.0666666666667 266.6666666666667 213.3333333333334S257.0666666666667 192 245.3333333333333 192H234.6666666666667M362.6666666666667 256C333.2266666666667 256 309.3333333333333 227.4133333333334 309.3333333333333 192S333.2266666666667 128 362.6666666666667 128S416 156.5866666666667 416 192S392.1066666666667 256 362.6666666666667 256M362.6666666666667 229.3333333333334C378.88 229.3333333333334 392.1066666666667 212.6933333333334 392.1066666666667 192S378.88 154.6666666666667 362.6666666666667 154.6666666666667C346.4533333333333 154.6666666666667 333.44 171.3066666666667 333.44 192S346.4533333333333 229.3333333333334 362.6666666666667 229.3333333333334z" /> + <glyph glyph-name="projector" + unicode="&#xF42E;" + horiz-adv-x="512" d=" M341.3333333333333 320C317.2266666666667 320 293.76 312.5333333333334 273.92 298.6666666666667H85.3333333333333C61.6533333333333 298.6666666666667 42.6666666666667 279.68 42.6666666666667 256V128C42.6666666666667 104.3200000000001 61.6533333333333 85.3333333333334 85.3333333333333 85.3333333333334H106.6666666666667V64C106.6666666666667 52.2666666666667 116.2666666666667 42.6666666666667 128 42.6666666666667H170.6666666666667C182.4 42.6666666666667 192 52.2666666666667 192 64V85.3333333333334H320V64C320 52.2666666666667 329.6 42.6666666666667 341.3333333333333 42.6666666666667H384C395.7333333333334 42.6666666666667 405.3333333333333 52.2666666666667 405.3333333333333 64V85.3333333333334H426.6666666666667C450.3466666666667 85.3333333333334 469.3333333333333 104.3200000000001 469.3333333333333 128V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H408.5333333333333C388.9066666666666 312.5333333333334 365.44 320 341.3333333333333 320M341.3333333333333 288C382.5066666666667 288 416 254.5066666666667 416 213.3333333333334S382.5066666666667 138.6666666666667 341.3333333333333 138.6666666666667S266.6666666666667 172.16 266.6666666666667 213.3333333333334S300.16 288 341.3333333333333 288M85.3333333333333 256H170.6666666666667V234.6666666666667H85.3333333333333V256M341.3333333333333 256C317.8666666666667 256 298.6666666666667 236.8 298.6666666666667 213.3333333333334S317.8666666666667 170.6666666666667 341.3333333333333 170.6666666666667S384 189.8666666666667 384 213.3333333333334S364.8 256 341.3333333333333 256M85.3333333333333 213.3333333333334H170.6666666666667V192H85.3333333333333V213.3333333333334M85.3333333333333 170.6666666666667H170.6666666666667V149.3333333333334H85.3333333333333V170.6666666666667z" /> + <glyph glyph-name="projector-screen" + unicode="&#xF42F;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C73.6 405.3333333333333 64 395.7333333333334 64 384V362.6666666666667C64 350.9333333333334 73.6 341.3333333333334 85.3333333333333 341.3333333333334H106.6666666666667V149.3333333333334H234.6666666666667V94.08L144.8533333333333 4.48L175.1466666666667 -25.8133333333333L234.6666666666667 33.92V-21.3333333333333H277.3333333333333V33.92L336.8533333333333 -25.8133333333333L367.1466666666667 4.48L277.3333333333333 94.08V149.3333333333334H405.3333333333333V341.3333333333334H426.6666666666667C438.4 341.3333333333334 448 350.9333333333334 448 362.6666666666667V384C448 395.7333333333334 438.4 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333z" /> + <glyph glyph-name="pulse" + unicode="&#xF430;" + horiz-adv-x="512" d=" M64 170.6666666666667H123.52L215.4666666666667 345.8133333333334L240.64 154.6666666666667L309.3333333333333 241.92L380.3733333333333 170.6666666666667H448V128H362.6666666666667L312.96 177.7066666666667L211.6266666666667 48.4266666666667L190.72 206.72L149.3333333333333 128H64V170.6666666666667z" /> + <glyph glyph-name="puzzle" + unicode="&#xF431;" + horiz-adv-x="512" d=" M437.3333333333333 213.3333333333334H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H277.3333333333333V373.3333333333334C277.3333333333333 402.7733333333333 253.44 426.6666666666667 224 426.6666666666667S170.6666666666667 402.7733333333333 170.6666666666667 373.3333333333334V341.3333333333334H85.3333333333333C61.8666666666667 341.3333333333334 42.6666666666667 322.1333333333334 42.6666666666667 298.6666666666667V217.6H74.6666666666667C106.6666666666667 217.6 132.2666666666667 192 132.2666666666667 160C132.2666666666667 128 106.6666666666667 102.4 74.6666666666667 102.4H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H166.4V10.6666666666667C166.4 42.6666666666667 192 68.2666666666667 224 68.2666666666667C256 68.2666666666667 281.6 42.6666666666667 281.6 10.6666666666667V-21.3333333333333H362.6666666666667C386.1333333333334 -21.3333333333333 405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334V106.6666666666667H437.3333333333333C466.7733333333333 106.6666666666667 490.6666666666666 130.5600000000001 490.6666666666666 160S466.7733333333333 213.3333333333334 437.3333333333333 213.3333333333334z" /> + <glyph glyph-name="qqchat" + unicode="&#xF605;" + horiz-adv-x="512" d=" M67.84 159.1466666666667C80.2133333333333 188.5866666666667 97.4933333333333 210.3466666666667 110.2933333333333 215.0400000000001C110.08 232.1066666666668 113.28 242.7733333333334 118.6133333333333 251.3066666666667C118.6133333333333 251.9466666666667 117.3333333333333 258.9866666666667 122.0266666666667 267.7333333333334C125.2266666666667 344.5333333333334 175.1466666666667 405.3333333333333 256 405.3333333333333S386.7733333333333 344.5333333333334 389.9733333333334 267.7333333333334C394.6666666666667 258.9866666666667 393.3866666666667 251.9466666666667 393.3866666666667 251.3066666666667C398.7200000000001 242.7733333333334 401.92 232.1066666666667 401.7066666666667 215.0400000000001C414.5066666666667 210.3466666666667 431.7866666666667 188.5866666666667 444.16 158.9333333333334C460.16 121.3866666666668 462.72 85.3333333333334 449.92 78.9333333333334C441.1733333333333 74.6666666666667 427.3066666666667 85.3333333333334 414.2933333333334 104.1066666666667C409.1733333333334 83.2000000000001 396.3733333333334 64.0000000000001 378.24 48.8533333333334C397.44 41.8133333333334 409.8133333333334 30.2933333333334 409.8133333333334 17.2800000000001C409.8133333333334 -4.0533333333333 376.1066666666667 -21.3333333333333 334.7200000000001 -21.3333333333333C297.1733333333334 -21.3333333333333 266.6666666666667 -7.2533333333332 260.48 10.6666666666667H251.52C245.3333333333334 -7.2533333333332 214.8266666666667 -21.3333333333333 177.28 -21.3333333333333C135.8933333333334 -21.3333333333333 102.1866666666667 -4.0533333333333 102.1866666666667 17.2800000000001C102.1866666666667 30.2933333333334 114.56 41.8133333333334 133.76 48.8533333333334C115.6266666666667 64.0000000000001 102.8266666666667 83.2000000000001 97.7066666666667 104.1066666666667C84.6933333333334 85.3333333333334 70.8266666666667 74.6666666666667 62.08 78.9333333333334C49.28 85.3333333333334 51.84 121.3866666666668 67.84 159.1466666666668z" /> + <glyph glyph-name="qrcode" + unicode="&#xF432;" + horiz-adv-x="512" d=" M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M234.6666666666667 341.3333333333334H277.3333333333333V256H234.6666666666667V341.3333333333334M192 213.3333333333334H277.3333333333333V128H234.6666666666667V170.6666666666667H192V213.3333333333334M320 213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334H448V170.6666666666667H405.3333333333333V128H448V42.6666666666667H405.3333333333333V0H362.6666666666667V42.6666666666667H277.3333333333333V0H234.6666666666667V85.3333333333334H320V128H362.6666666666667V170.6666666666667H320V213.3333333333334M405.3333333333333 42.6666666666667V128H362.6666666666667V42.6666666666667H405.3333333333333M320 384H448V256H320V384M362.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H362.6666666666667M64 384H192V256H64V384M106.6666666666667 341.3333333333334V298.6666666666667H149.3333333333333V341.3333333333334H106.6666666666667M64 128H192V0H64V128M106.6666666666667 85.3333333333334V42.6666666666667H149.3333333333333V85.3333333333334H106.6666666666667z" /> + <glyph glyph-name="qrcode-scan" + unicode="&#xF433;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H213.3333333333333V234.6666666666667H85.3333333333333V362.6666666666667M426.6666666666667 362.6666666666667V234.6666666666667H298.6666666666667V362.6666666666667H426.6666666666667M298.6666666666667 128H341.3333333333333V170.6666666666667H298.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H384V213.3333333333334H426.6666666666667V170.6666666666667H384V128H426.6666666666667V64H384V21.3333333333334H341.3333333333333V64H277.3333333333333V21.3333333333334H234.6666666666667V106.6666666666667H298.6666666666667V128M341.3333333333333 128V64H384V128H341.3333333333333M85.3333333333333 21.3333333333334V149.3333333333334H213.3333333333333V21.3333333333334H85.3333333333333M128 320V277.3333333333334H170.6666666666667V320H128M341.3333333333333 320V277.3333333333334H384V320H341.3333333333333M128 106.6666666666667V64H170.6666666666667V106.6666666666667H128M85.3333333333333 213.3333333333334H128V170.6666666666667H85.3333333333333V213.3333333333334M192 213.3333333333334H277.3333333333333V128H234.6666666666667V170.6666666666667H192V213.3333333333334M234.6666666666667 320H277.3333333333333V234.6666666666667H234.6666666666667V320M42.6666666666667 405.3333333333333V320H0V405.3333333333333C0 428.8 19.2 448 42.6666666666667 448H128V405.3333333333333H42.6666666666667M469.3333333333333 448C492.8 448 512 428.8 512 405.3333333333333V320H469.3333333333333V405.3333333333333H384V448H469.3333333333333M42.6666666666667 64V-21.3333333333333H128V-64H42.6666666666667C19.2 -64 0 -44.8 0 -21.3333333333333V64H42.6666666666667M469.3333333333333 -21.3333333333333V64H512V-21.3333333333333C512 -44.8 492.8 -64 469.3333333333333 -64H384V-21.3333333333333H469.3333333333333z" /> + <glyph glyph-name="quadcopter" + unicode="&#xF434;" + horiz-adv-x="512" d=" M117.3333333333333 426.6666666666667C170.6666666666667 426.6666666666667 213.3333333333333 384 213.3333333333333 330.6666666666667C213.3333333333333 311.8933333333333 208 294.4 198.6133333333334 279.4666666666667L200.7466666666667 277.3333333333334H311.2533333333334L313.3866666666667 279.4666666666667C304 294.4 298.6666666666667 311.8933333333333 298.6666666666667 330.6666666666667C298.6666666666667 384 341.3333333333333 426.6666666666667 394.6666666666667 426.6666666666667S490.6666666666666 384 490.6666666666666 330.6666666666667S448 234.6666666666667 394.6666666666667 234.6666666666667C375.8933333333333 234.6666666666667 358.4 240 343.4666666666667 249.3866666666667L320 225.92V158.0800000000001L343.4666666666667 134.6133333333334C358.4 144 375.8933333333333 149.3333333333334 394.6666666666667 149.3333333333334C448 149.3333333333334 490.6666666666666 106.6666666666667 490.6666666666666 53.3333333333334S448 -42.6666666666666 394.6666666666667 -42.6666666666666S298.6666666666667 0 298.6666666666667 53.3333333333334C298.6666666666667 72.1066666666667 304 89.6 313.3866666666667 104.5333333333333L311.2533333333334 106.6666666666667H200.7466666666667L198.6133333333334 104.5333333333333C208 89.6 213.3333333333333 72.1066666666667 213.3333333333333 53.3333333333334C213.3333333333333 0 170.6666666666667 -42.6666666666666 117.3333333333333 -42.6666666666666S21.3333333333333 0 21.3333333333333 53.3333333333334S64 149.3333333333334 117.3333333333333 149.3333333333334C136.1066666666667 149.3333333333334 153.6 144 168.5333333333333 134.6133333333334L192 158.0800000000001V225.92L168.5333333333333 249.3866666666667C153.6 240 136.1066666666667 234.6666666666667 117.3333333333333 234.6666666666667C64 234.6666666666667 21.3333333333333 277.3333333333334 21.3333333333333 330.6666666666667S64 426.6666666666667 117.3333333333333 426.6666666666667M117.3333333333333 384C87.8933333333333 384 64 360.1066666666667 64 330.6666666666667S87.8933333333333 277.3333333333334 117.3333333333333 277.3333333333334S170.6666666666667 301.2266666666667 170.6666666666667 330.6666666666667S146.7733333333333 384 117.3333333333333 384M117.3333333333333 106.6666666666667C87.8933333333333 106.6666666666667 64 82.7733333333333 64 53.3333333333334S87.8933333333333 0 117.3333333333333 0S170.6666666666667 23.8933333333334 170.6666666666667 53.3333333333334S146.7733333333333 106.6666666666667 117.3333333333333 106.6666666666667M394.6666666666667 384C365.2266666666667 384 341.3333333333333 360.1066666666667 341.3333333333333 330.6666666666667S365.2266666666667 277.3333333333334 394.6666666666667 277.3333333333334S448 301.2266666666667 448 330.6666666666667S424.1066666666667 384 394.6666666666667 384M394.6666666666667 106.6666666666667C365.2266666666667 106.6666666666667 341.3333333333333 82.7733333333333 341.3333333333333 53.3333333333334S365.2266666666667 0 394.6666666666667 0S448 23.8933333333334 448 53.3333333333334S424.1066666666667 106.6666666666667 394.6666666666667 106.6666666666667M83.4133333333333 80L107.52 65.92C110.2933333333333 68.0533333333334 113.7066666666667 69.3333333333334 117.3333333333333 69.3333333333334C126.08 69.3333333333334 133.3333333333333 62.08 133.3333333333333 53.3333333333334L133.12 51.2L157.2266666666667 37.3333333333334L151.2533333333333 26.6666666666667L127.1466666666667 40.7466666666667C124.3733333333333 38.6133333333333 120.96 37.3333333333334 117.3333333333333 37.3333333333334C108.5866666666667 37.3333333333334 101.3333333333333 44.5866666666667 101.3333333333333 53.3333333333334L101.5466666666667 55.4666666666667L77.44 69.3333333333334L83.4133333333333 80M77.44 314.6666666666667L101.5466666666667 328.5333333333334L101.3333333333333 330.6666666666667C101.3333333333333 339.4133333333334 108.5866666666667 346.6666666666667 117.3333333333333 346.6666666666667C120.96 346.6666666666667 124.3733333333333 345.3866666666667 127.1466666666667 343.2533333333334L151.2533333333333 357.3333333333334L157.2266666666667 346.6666666666667L133.12 332.8L133.3333333333333 330.6666666666667C133.3333333333333 321.92 126.08 314.6666666666667 117.3333333333333 314.6666666666667C113.7066666666667 314.6666666666667 110.2933333333333 315.9466666666667 107.52 318.0800000000001L83.4133333333333 304L77.44 314.6666666666667M360.7466666666667 357.3333333333334L384.8533333333333 343.2533333333334C387.6266666666666 345.3866666666667 391.04 346.6666666666667 394.6666666666667 346.6666666666667C403.4133333333333 346.6666666666667 410.6666666666667 339.4133333333334 410.6666666666667 330.6666666666667L410.4533333333333 328.5333333333334L434.56 314.6666666666667L428.5866666666666 304L404.4799999999999 318.0800000000001C401.7066666666666 315.9466666666667 398.2933333333333 314.6666666666667 394.6666666666666 314.6666666666667C385.9199999999999 314.6666666666667 378.6666666666666 321.92 378.6666666666666 330.6666666666667L378.88 332.8L354.7733333333333 346.6666666666667L360.7466666666667 357.3333333333334M354.7733333333333 37.3333333333334L378.6666666666667 53.3333333333334C378.6666666666667 62.08 385.92 69.3333333333334 394.6666666666667 69.3333333333334C398.2933333333334 69.3333333333334 401.7066666666666 68.0533333333334 404.48 65.92L428.5866666666667 80L434.56 69.3333333333334L410.6666666666667 53.3333333333334C410.6666666666667 44.5866666666667 403.4133333333333 37.3333333333334 394.6666666666667 37.3333333333334C391.04 37.3333333333334 387.6266666666667 38.6133333333333 384.8533333333333 40.7466666666667L360.7466666666667 26.6666666666667L354.7733333333333 37.3333333333334z" /> + <glyph glyph-name="quality-high" + unicode="&#xF435;" + horiz-adv-x="512" d=" M309.3333333333333 160H352V224H309.3333333333333M384 149.3333333333334C384 137.6 374.4 128 362.6666666666667 128H346.6666666666667V96H314.6666666666667V128H298.6666666666667C286.9333333333333 128 277.3333333333333 137.6 277.3333333333333 149.3333333333334V234.6666666666667C277.3333333333333 246.4000000000001 286.9333333333333 256 298.6666666666667 256H362.6666666666667C374.4 256 384 246.4000000000001 384 234.6666666666667M234.6666666666667 128H202.6666666666667V170.6666666666667H160V128H128V256H160V202.6666666666667H202.6666666666667V256H234.6666666666667M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.68 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.68 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="quicktime" + unicode="&#xF436;" + horiz-adv-x="512" d=" M256 384C362.0266666666667 384 448 298.0266666666667 448 192C448 154.4533333333334 437.3333333333333 119.4666666666667 418.56 89.8133333333334L448 60.3733333333333V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H387.84L358.1866666666666 29.44C328.7466666666667 10.6666666666667 293.5466666666666 0 256 0C149.9733333333333 0 64 85.9733333333334 64 192S149.9733333333333 384 256 384M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334C269.8666666666667 85.3333333333334 282.88 87.8933333333334 295.04 92.8000000000001L233.6 154.24C216.96 170.6666666666667 216.96 197.9733333333334 233.6 214.6133333333334C250.24 231.2533333333334 277.3333333333333 231.2533333333334 293.9733333333333 214.6133333333334L355.4133333333333 153.1733333333334C360.1066666666667 165.12 362.6666666666667 178.3466666666667 362.6666666666667 192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="radar" + unicode="&#xF437;" + horiz-adv-x="512" d=" M406.8266666666667 342.8266666666667L376.7466666666667 312.7466666666667C407.4666666666667 281.8133333333334 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192C85.3333333333333 279.04 150.4 350.7200000000001 234.6666666666667 361.1733333333334V318.0800000000001C174.08 307.8400000000001 128 255.36 128 192C128 121.3866666666667 185.3866666666667 64 256 64S384 121.3866666666667 384 192C384 227.4133333333334 369.7066666666666 259.4133333333334 346.4533333333333 282.4533333333334L316.3733333333333 252.3733333333334C331.7333333333334 236.8 341.3333333333333 215.4666666666667 341.3333333333333 192C341.3333333333333 144.8533333333334 303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192C170.6666666666667 231.68 197.9733333333333 264.7466666666667 234.6666666666667 274.3466666666667V228.6933333333334C221.8666666666667 221.2266666666667 213.3333333333333 207.7866666666666 213.3333333333333 192C213.3333333333333 168.5333333333333 232.5333333333334 149.3333333333333 256 149.3333333333333S298.6666666666667 168.5333333333333 298.6666666666667 192C298.6666666666667 207.7866666666666 290.1333333333334 221.44 277.3333333333333 228.6933333333334V405.3333333333333H256C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 250.88 445.44 304.2133333333334 406.8266666666667 342.8266666666667z" /> + <glyph glyph-name="radiator" + unicode="&#xF438;" + horiz-adv-x="512" d=" M169.6 384L139.3066666666667 337.28L169.6 290.1333333333334H169.3866666666667L126.9333333333333 224L90.0266666666667 243.2L120.32 290.3466666666667L90.0266666666667 337.2800000000001L132.6933333333333 403.4133333333334L169.6 384M297.6 386.3466666666667L267.3066666666666 339.2000000000001L297.6 292.2666666666667L297.3866666666667 292.0533333333334L254.9333333333333 226.1333333333334L218.0266666666667 245.3333333333334L248.32 292.2666666666667L218.0266666666667 339.2000000000001L260.6933333333333 405.3333333333334L297.6 386.3466666666667M426.6666666666667 386.3466666666667L395.9466666666666 339.2000000000001L426.6666666666667 292.2666666666667V292.0533333333334L384 226.1333333333334L346.6666666666667 245.3333333333334L376.9600000000001 292.2666666666667L346.6666666666667 339.2000000000001L389.3333333333333 405.3333333333334L426.6666666666667 386.3466666666667M42.6666666666667 -21.3333333333333V149.3333333333334C42.6666666666667 172.8 61.8666666666667 192 85.3333333333333 192H426.6666666666667C450.1333333333334 192 469.3333333333333 172.8 469.3333333333333 149.3333333333334V-21.3333333333333H426.6666666666667V21.3333333333334H85.3333333333333V-21.3333333333333H42.6666666666667M128 149.3333333333334C116.2666666666667 149.3333333333334 106.6666666666667 139.7333333333334 106.6666666666667 128V85.3333333333334C106.6666666666667 73.6 116.2666666666667 64 128 64S149.3333333333333 73.6 149.3333333333333 85.3333333333334V128C149.3333333333333 139.7333333333334 139.7333333333333 149.3333333333334 128 149.3333333333334M213.3333333333333 149.3333333333334C201.6 149.3333333333334 192 139.7333333333334 192 128V85.3333333333334C192 73.6 201.6 64 213.3333333333333 64S234.6666666666667 73.6 234.6666666666667 85.3333333333334V128C234.6666666666667 139.7333333333334 225.0666666666667 149.3333333333334 213.3333333333333 149.3333333333334M298.6666666666667 149.3333333333334C286.9333333333333 149.3333333333334 277.3333333333333 139.7333333333334 277.3333333333333 128V85.3333333333334C277.3333333333333 73.6 286.9333333333333 64 298.6666666666667 64S320 73.6 320 85.3333333333334V128C320 139.7333333333334 310.4 149.3333333333334 298.6666666666667 149.3333333333334M384 149.3333333333334C372.2666666666667 149.3333333333334 362.6666666666667 139.7333333333334 362.6666666666667 128V85.3333333333334C362.6666666666667 73.6 372.2666666666667 64 384 64S405.3333333333333 73.6 405.3333333333333 85.3333333333334V128C405.3333333333333 139.7333333333334 395.7333333333334 149.3333333333334 384 149.3333333333334z" /> + <glyph glyph-name="radio" + unicode="&#xF439;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V277.3333333333334C42.6666666666667 295.4666666666667 53.9733333333333 311.04 69.9733333333333 317.2266666666667L335.1466666666667 426.6666666666667L351.36 387.6266666666667L188.3733333333333 320H426.6666666666667M426.6666666666667 277.3333333333334H85.3333333333333V192H341.3333333333333V234.6666666666667H384V192H426.6666666666667V277.3333333333334M149.3333333333333 149.3333333333334C113.92 149.3333333333334 85.3333333333333 120.7466666666667 85.3333333333333 85.3333333333334S113.92 21.3333333333334 149.3333333333333 21.3333333333334S213.3333333333333 49.92 213.3333333333333 85.3333333333334S184.7466666666667 149.3333333333334 149.3333333333333 149.3333333333334z" /> + <glyph glyph-name="radio-handheld" + unicode="&#xF43A;" + horiz-adv-x="512" d=" M192 405.3333333333333C180.2666666666667 405.3333333333333 170.6666666666667 395.7333333333334 170.6666666666667 384V21.3333333333334C170.6666666666667 -2.3466666666666 189.6533333333333 -21.3333333333333 213.3333333333333 -21.3333333333333H320C343.68 -21.3333333333333 362.6666666666667 -2.3466666666666 362.6666666666667 21.3333333333334V256C362.6666666666667 279.68 343.68 298.6666666666667 320 298.6666666666667H213.3333333333333V384C213.3333333333333 395.7333333333334 203.7333333333334 405.3333333333333 192 405.3333333333333M213.3333333333333 256H320V170.6666666666667H213.3333333333333V256z" /> + <glyph glyph-name="radio-tower" + unicode="&#xF43B;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192C298.6666666666667 181.3333333333334 294.8266666666667 171.9466666666667 288.64 164.48L356.2666666666667 -21.3333333333333H310.8266666666667L256 129.4933333333334L201.1733333333333 -21.3333333333333H155.7333333333333L223.36 164.48C217.1733333333333 171.9466666666667 213.3333333333333 181.3333333333334 213.3333333333333 192C213.3333333333333 215.4666666666667 232.5333333333333 234.6666666666667 256 234.6666666666667M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666666 239.1466666666667 170.6666666666666 192C170.6666666666666 181.3333333333334 172.8 170.6666666666667 176.6399999999999 160.8533333333334L157.8666666666666 109.6533333333333C139.3066666666667 132.0533333333334 128 160.64 128 192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192C384 160.64 372.6933333333333 132.0533333333334 354.1333333333334 109.6533333333334L335.36 160.8533333333334C339.2 170.6666666666667 341.3333333333333 181.3333333333334 341.3333333333333 192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 141.6533333333334 106.6666666666667 96 141.6533333333333 65.28L126.2933333333334 22.6133333333333C75.52 61.6533333333334 42.6666666666667 123.0933333333334 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192C469.3333333333333 123.0933333333334 436.48 61.6533333333334 385.7066666666666 22.6133333333333L370.3466666666667 65.28C405.3333333333333 96 426.6666666666667 141.6533333333334 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="radioactive" + unicode="&#xF43C;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M256 -21.3333333333333C214.4 -21.3333333333333 175.36 -9.3866666666667 142.72 11.3066666666667L213.3333333333333 117.9733333333334C226.1333333333334 110.72 240.64 106.6666666666667 256 106.6666666666667S285.8666666666667 110.72 298.6666666666667 117.9733333333334L369.28 11.3066666666667C336.64 -9.3866666666667 297.6 -21.3333333333333 256 -21.3333333333333M42.6666666666667 192C42.6666666666667 280.32 96 356.2666666666667 173.0133333333333 388.6933333333334L220.5866666666667 269.6533333333334C191.1466666666667 256 170.6666666666667 226.56 170.6666666666667 192H42.6666666666667M341.3333333333333 192C341.3333333333333 226.5600000000001 320.8533333333333 256 291.4133333333333 269.6533333333334L338.9866666666667 388.6933333333334C416 356.2666666666667 469.3333333333333 280.32 469.3333333333333 192H341.3333333333333z" /> + <glyph glyph-name="radiobox-blank" + unicode="&#xF43D;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="radiobox-marked" + unicode="&#xF43E;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="raspberrypi" + unicode="&#xF43F;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H469.3333333333333V234.6666666666667H426.6666666666667V277.3333333333334M85.3333333333333 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667H405.3333333333333V256H106.6666666666667V170.6666666666667H170.6666666666667V106.6666666666667H405.3333333333333V85.3333333333334H469.3333333333333C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H341.3333333333333V21.3333333333334H298.6666666666667V42.6666666666667H234.6666666666667V21.3333333333334H149.3333333333333V42.6666666666667H85.3333333333333C61.8666666666667 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.1333333333334 61.8666666666667 341.3333333333334 85.3333333333333 341.3333333333334M405.3333333333333 128H192V234.6666666666667H405.3333333333333V213.3333333333334H469.3333333333333V170.6666666666667H405.3333333333333V128M277.3333333333333 192V149.3333333333334H320V192H277.3333333333333M106.6666666666667 320V277.3333333333334H128V320H106.6666666666667M149.3333333333333 320V277.3333333333334H170.6666666666667V320H149.3333333333333M192 320V277.3333333333334H213.3333333333333V320H192M234.6666666666667 320V277.3333333333334H256V320H234.6666666666667M277.3333333333333 320V277.3333333333334H298.6666666666667V320H277.3333333333333M320 320V277.3333333333334H341.3333333333333V320H320M426.6666666666667 149.3333333333334H469.3333333333333V106.6666666666667H426.6666666666667V149.3333333333334z" /> + <glyph glyph-name="ray-end" + unicode="&#xF440;" + horiz-adv-x="512" d=" M426.6666666666667 256C398.7200000000001 256 375.04 238.2933333333334 366.2933333333334 213.3333333333334H42.6666666666667V170.6666666666667H366.2933333333334C375.04 145.7066666666667 398.7200000000001 128 426.6666666666667 128C462.08 128 490.6666666666666 156.5866666666667 490.6666666666666 192S462.08 256 426.6666666666667 256z" /> + <glyph glyph-name="ray-end-arrow" + unicode="&#xF441;" + horiz-adv-x="512" d=" M21.3333333333333 192L106.6666666666667 106.6666666666667V170.6666666666667H366.2933333333334C375.04 145.7066666666667 398.7200000000001 128 426.6666666666667 128C462.08 128 490.6666666666666 156.5866666666667 490.6666666666666 192S462.08 256 426.6666666666667 256C398.7200000000001 256 375.04 238.2933333333334 366.2933333333334 213.3333333333334H106.6666666666667V277.3333333333334L21.3333333333333 192z" /> + <glyph glyph-name="ray-start" + unicode="&#xF442;" + horiz-adv-x="512" d=" M85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H469.3333333333333V170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256z" /> + <glyph glyph-name="ray-start-arrow" + unicode="&#xF443;" + horiz-adv-x="512" d=" M490.6666666666666 192L405.3333333333333 106.6666666666667V170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H405.3333333333333V277.3333333333334L490.6666666666666 192z" /> + <glyph glyph-name="ray-start-end" + unicode="&#xF444;" + horiz-adv-x="512" d=" M85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H366.2933333333334C375.04 238.2933333333334 398.7200000000001 256 426.6666666666667 256C462.08 256 490.6666666666666 227.4133333333334 490.6666666666666 192S462.08 128 426.6666666666667 128C398.7200000000001 128 375.04 145.7066666666667 366.2933333333334 170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256z" /> + <glyph glyph-name="ray-vertex" + unicode="&#xF445;" + horiz-adv-x="512" d=" M42.6666666666667 213.3333333333334H195.6266666666667C204.3733333333333 238.2933333333334 228.0533333333333 256 256 256S307.6266666666667 238.2933333333334 316.3733333333334 213.3333333333334H469.3333333333333V170.6666666666667H316.3733333333334C307.6266666666667 145.7066666666667 283.9466666666667 128 256 128S204.3733333333333 145.7066666666667 195.6266666666667 170.6666666666667H42.6666666666667V213.3333333333334z" /> + <glyph glyph-name="rdio" + unicode="&#xF446;" + horiz-adv-x="512" d=" M411.52 216.7466666666667C412.8 208.64 413.44 200.32 413.44 192C413.44 93.6533333333334 330.6666666666667 13.8666666666667 227.84 13.8666666666667C125.2266666666667 13.8666666666667 42.6666666666667 93.6533333333334 42.6666666666667 192C42.6666666666667 290.3466666666667 125.2266666666667 370.1333333333334 227.84 370.1333333333334C247.8933333333333 370.1333333333334 267.3066666666666 367.1466666666667 285.44 361.3866666666667V253.6533333333334S230.1866666666667 283.9466666666667 180.6933333333333 248.5333333333334C131.2 213.3333333333334 140.5866666666667 175.7866666666667 140.5866666666667 175.7866666666667S142.9333333333333 117.3333333333334 212.6933333333333 117.3333333333334C290.56 117.3333333333334 312.7466666666667 187.9466666666667 312.7466666666667 187.9466666666667V350.2933333333334C327.68 342.8266666666667 341.3333333333333 333.6533333333333 355.2 323.2000000000001C388.2666666666667 302.5066666666667 422.8266666666667 289.2800000000001 462.2933333333333 290.3466666666667C462.2933333333333 290.3466666666667 469.3333333333333 292.0533333333334 469.3333333333333 277.3333333333334C469.3333333333333 268.8 466.7733333333332 259.6266666666667 458.6666666666666 250.6666666666667C458.6666666666666 250.6666666666667 443.3066666666666 227.6266666666667 411.5199999999999 216.7466666666667z" /> + <glyph glyph-name="read" + unicode="&#xF447;" + horiz-adv-x="512" d=" M460.5866666666666 200.7466666666667L490.6666666666666 170.6666666666667L288 -32L179.6266666666667 76.5866666666667L209.7066666666667 106.6666666666667L288 28.16L460.5866666666666 200.7466666666667M85.3333333333333 106.6666666666667V384H192C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667C277.3333333333333 265.8133333333334 258.7733333333333 237.2266666666667 231.4666666666667 222.9333333333333L298.6666666666667 106.6666666666667H256L194.3466666666666 213.3333333333334H128V106.6666666666667H85.3333333333333M128 256H192C215.4666666666667 256 234.6666666666667 275.2000000000001 234.6666666666667 298.6666666666667S215.4666666666667 341.3333333333334 192 341.3333333333334H128V256z" /> + <glyph glyph-name="readability" + unicode="&#xF448;" + horiz-adv-x="512" d=" M256 362.6666666666667C323.2 362.6666666666667 379.9466666666666 311.8933333333333 398.7200000000001 242.1333333333334C384 231.4666666666667 375.04 214.8266666666667 373.3333333333333 196.0533333333334L369.4933333333334 151.2533333333333C331.7333333333334 170.6666666666667 293.9733333333334 188.3733333333333 256 188.3733333333333C218.24 188.3733333333333 180.2666666666667 170.6666666666667 142.5066666666667 151.2533333333333L138.6666666666667 196.9066666666667C136.96 215.68 128 232.1066666666667 113.4933333333334 242.9866666666667C132.48 312.32 189.0133333333333 362.6666666666667 256 362.6666666666667M363.7333333333334 85.3333333333334H148.2666666666667L143.5733333333333 139.3066666666667C181.3333333333333 158.0800000000001 218.4533333333333 176 256 176C293.5466666666666 176 330.6666666666667 158.0800000000001 368.64 139.3066666666667L363.7333333333334 85.3333333333334M106.6666666666667 42.6666666666667V64L79.36 138.6666666666667H74.6666666666667C45.2266666666667 138.6666666666667 21.3333333333333 162.56 21.3333333333333 192S45.2266666666667 245.3333333333334 74.6666666666667 245.3333333333334C102.8266666666667 245.3333333333334 125.6533333333333 224 128 196.0533333333334L138.6666666666667 64V42.6666666666667H106.6666666666667M405.3333333333333 42.6666666666667H373.3333333333333V64L384 196.0533333333334C386.3466666666667 224.0000000000001 409.1733333333333 245.3333333333334 437.3333333333333 245.3333333333334C466.7733333333333 245.3333333333334 490.6666666666666 221.4400000000001 490.6666666666666 192.0000000000001S466.7733333333333 138.6666666666668 437.3333333333333 138.6666666666668H432.64L405.3333333333333 64V42.6666666666667z" /> + <glyph glyph-name="receipt" + unicode="&#xF449;" + horiz-adv-x="512" d=" M64 -21.3333333333333L96 10.6666666666667L128 -21.3333333333333L160 10.6666666666667L192 -21.3333333333333L224 10.6666666666667L256 -21.3333333333333L288 10.6666666666667L320 -21.3333333333333L352 10.6666666666667L384 -21.3333333333333L416 10.6666666666667L448 -21.3333333333333V405.3333333333333L416 373.3333333333334L384 405.3333333333333L352 373.3333333333334L320 405.3333333333333L288 373.3333333333334L256 405.3333333333333L224 373.3333333333334L192 405.3333333333333L160 373.3333333333334L128 405.3333333333333L96 373.3333333333334L64 405.3333333333333M384 256H128V298.6666666666667H384M384 170.6666666666667H128V213.3333333333334H384M384 85.3333333333334H128V128H384V85.3333333333334z" /> + <glyph glyph-name="record" + unicode="&#xF44A;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 109.6533333333334 338.3466666666667 42.6666666666667 256 42.6666666666667S106.6666666666667 109.6533333333334 106.6666666666667 192S173.6533333333333 341.3333333333334 256 341.3333333333334S405.3333333333333 274.3466666666667 405.3333333333333 192z" /> + <glyph glyph-name="record-rec" + unicode="&#xF44B;" + horiz-adv-x="512" d=" M266.6666666666667 341.3333333333334C178.3466666666666 341.3333333333334 106.6666666666667 269.6533333333334 106.6666666666667 181.3333333333334C106.6666666666667 93.0133333333333 178.3466666666666 21.3333333333334 266.6666666666667 21.3333333333334C354.9866666666667 21.3333333333334 426.6666666666667 93.0133333333333 426.6666666666667 181.3333333333334C426.6666666666667 269.6533333333334 354.9866666666667 341.3333333333334 266.6666666666667 341.3333333333334M149.3333333333333 234.6666666666667H192C203.7333333333334 234.6666666666667 213.3333333333333 225.0666666666667 213.3333333333333 213.3333333333334V192C213.3333333333333 181.3333333333334 205.2266666666666 172.8 194.9866666666667 171.3066666666667L219.9466666666667 128H195.2L170.6666666666667 170.6666666666667V128H149.3333333333333M256 234.6666666666667H298.6666666666667V213.3333333333334H256V192H298.6666666666667V170.6666666666667H256V149.3333333333334H298.6666666666667V128H256C244.2666666666667 128 234.6666666666667 137.6 234.6666666666667 149.3333333333334V213.3333333333334C234.6666666666667 225.0666666666667 244.2666666666667 234.6666666666667 256 234.6666666666667M341.3333333333333 234.6666666666667H384V213.3333333333334H341.3333333333333V149.3333333333334H384V128H341.3333333333333C329.6 128 320 137.6 320 149.3333333333334V213.3333333333334C320 225.0666666666667 329.6 234.6666666666667 341.3333333333333 234.6666666666667M170.6666666666667 213.3333333333334V192H192V213.3333333333334" /> + <glyph glyph-name="recycle" + unicode="&#xF44C;" + horiz-adv-x="512" d=" M465.4933333333333 119.04L412.16 26.6666666666667C401.7066666666667 8.3200000000001 382.2933333333334 -1.28 362.6666666666667 0H320V-42.6666666666666L266.6666666666667 53.3333333333334L320 149.3333333333334V106.6666666666667H380.16L332.8 188.8L425.1733333333333 242.1333333333334L463.5733333333333 175.5733333333334C474.6666666666666 159.1466666666667 476.16 137.1733333333334 465.4933333333333 119.04M196.48 382.7200000000001H303.1466666666667C324.0533333333334 382.7200000000001 342.1866666666666 370.56 350.9333333333334 353.0666666666667L372.2666666666667 315.9466666666667L409.1733333333334 337.28L352.8533333333334 243.2L242.9866666666667 241.28L279.8933333333334 262.6133333333334L249.8133333333334 314.88L202.6666666666668 232.7466666666667L110.0800000000001 286.08L148.4800000000001 352.64C157.2266666666668 370.3466666666667 175.3600000000001 382.72 196.4800000000001 382.72M107.7333333333334 26.4533333333333L54.4000000000001 118.8266666666667C43.9466666666668 136.96 45.4400000000001 158.72 56.3200000000001 175.1466666666667L77.6533333333334 212.0533333333334L40.7466666666668 233.3866666666667L150.4000000000001 231.68L206.9333333333334 137.3866666666667L170.0266666666668 158.72L139.9466666666667 106.6666666666667H234.6666666666667V0H157.8666666666667C138.0266666666667 -1.4933333333333 118.4 8.3200000000001 107.7333333333334 26.4533333333333z" /> + <glyph glyph-name="reddit" + unicode="&#xF44D;" + horiz-adv-x="512" d=" M469.3333333333333 202.6666666666667C469.3333333333333 232.5333333333334 445.8666666666666 256 416 256C403.2 256 390.4 251.7333333333334 381.8666666666666 243.2C349.8666666666666 262.4000000000001 311.4666666666666 275.2000000000001 266.6666666666667 277.3333333333334L290.1333333333333 362.6666666666667L362.6666666666667 341.3333333333334C362.6666666666667 317.8666666666667 381.8666666666666 298.6666666666667 405.3333333333333 298.6666666666667S448 317.8666666666667 448 341.3333333333334S428.8 384 405.3333333333333 384C390.4 384 375.4666666666667 375.4666666666667 369.0666666666667 362.6666666666667L283.7333333333334 384C277.3333333333333 386.1333333333334 273.0666666666667 381.8666666666667 270.9333333333334 375.4666666666667L245.3333333333333 277.3333333333334C202.6666666666667 275.2000000000001 162.1333333333333 262.4000000000001 130.1333333333333 243.2C121.6 251.7333333333334 108.8 256 96 256C66.1333333333333 256 42.6666666666667 232.5333333333334 42.6666666666667 202.6666666666667C42.6666666666667 183.4666666666667 51.2 168.5333333333334 66.1333333333333 157.8666666666667L64 138.6666666666667C64 61.8666666666667 149.3333333333333 0 256 0S448 61.8666666666667 448 138.6666666666667L445.8666666666666 157.8666666666667C460.8 168.5333333333334 469.3333333333333 183.4666666666667 469.3333333333333 202.6666666666667M192 196.2666666666667C206.9333333333333 196.2666666666667 217.6 183.4666666666667 217.6 170.6666666666667S206.9333333333333 145.0666666666667 192 145.0666666666667S166.4 155.7333333333334 166.4 170.6666666666667S177.0666666666667 196.2666666666667 192 196.2666666666667M337.0666666666667 81.0666666666666C298.6666666666667 57.5999999999999 213.3333333333333 57.5999999999999 174.9333333333333 81.0666666666666C170.6666666666667 85.3333333333333 168.5333333333334 91.7333333333333 172.8 95.9999999999999C177.0666666666667 100.2666666666666 183.4666666666667 102.4 187.7333333333334 98.1333333333333C213.3333333333333 78.9333333333333 298.6666666666667 78.9333333333333 324.2666666666667 98.1333333333333C328.5333333333333 102.4 334.9333333333334 100.2666666666667 339.2 95.9999999999999C343.4666666666667 91.7333333333333 341.3333333333333 85.3333333333333 337.0666666666667 81.0666666666666M320 145.0666666666666C305.0666666666667 145.0666666666666 294.4 157.8666666666666 294.4 170.6666666666666C294.4 185.5999999999999 307.2 196.2666666666666 320 196.2666666666666C334.9333333333333 196.2666666666666 345.6 183.4666666666666 345.6 170.6666666666666C345.6 155.7333333333333 334.9333333333333 145.0666666666666 320 145.0666666666666z" /> + <glyph glyph-name="redo" + unicode="&#xF44E;" + horiz-adv-x="512" d=" M392.5333333333333 221.8666666666667C353.0666666666667 256 301.8666666666667 277.3333333333334 245.3333333333333 277.3333333333334C146.1333333333333 277.3333333333334 62.2933333333333 212.6933333333334 32.8533333333333 123.3066666666667L83.2 106.6666666666667C105.6 174.72 169.6 224 245.3333333333333 224C286.9333333333333 224 324.9066666666667 208.64 354.56 183.8933333333334L277.3333333333333 106.6666666666667H469.3333333333333V298.6666666666667L392.5333333333333 221.8666666666667z" /> + <glyph glyph-name="redo-variant" + unicode="&#xF44F;" + horiz-adv-x="512" d=" M224 298.6666666666667C147.4133333333333 298.6666666666667 85.3333333333333 236.5866666666667 85.3333333333333 160S147.4133333333333 21.3333333333334 224 21.3333333333334H298.6666666666667V64H224C170.6666666666667 64 128 106.6666666666667 128 160S170.6666666666667 256 224 256H344.9600000000001L279.2533333333334 190.0800000000001L309.3333333333334 160L426.6666666666667 277.3333333333334L309.3333333333333 394.6666666666667L279.04 364.5866666666667L344.9600000000001 298.6666666666667H224M384 64H341.3333333333333V21.3333333333334H384V64z" /> + <glyph glyph-name="refresh" + unicode="&#xF450;" + horiz-adv-x="512" d=" M376.5333333333333 312.5333333333334C345.6 343.4666666666667 303.1466666666667 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334C335.5733333333333 21.3333333333334 401.92 75.7333333333334 420.9066666666667 149.3333333333334H376.5333333333333C359.04 99.6266666666667 311.68 64 256 64C185.3866666666666 64 128 121.3866666666667 128 192S185.3866666666666 320 256 320C291.4133333333333 320 322.9866666666666 305.2800000000001 346.0266666666667 282.0266666666667L277.3333333333333 213.3333333333334H426.6666666666667V362.6666666666667L376.5333333333333 312.5333333333334z" /> + <glyph glyph-name="regex" + unicode="&#xF451;" + horiz-adv-x="512" d=" M341.3333333333333 87.04C334.2933333333333 85.9733333333333 327.2533333333334 85.3333333333334 320 85.3333333333334C312.7466666666667 85.3333333333334 305.7066666666667 85.9733333333334 298.6666666666667 87.04V161.92L245.3333333333333 109.0133333333333C234.6666666666667 117.3333333333333 224 128 215.68 138.6666666666666L268.5866666666667 192H193.7066666666667C192.64 199.04 192 206.08 192 213.3333333333333C192 220.5866666666667 192.64 227.6266666666667 193.7066666666667 234.6666666666667H268.5866666666667L215.68 288C219.7333333333333 293.3333333333333 224 298.6666666666667 229.5466666666667 303.7866666666667C234.6666666666667 309.3333333333333 240 313.6 245.3333333333333 317.6533333333333L298.6666666666667 264.7466666666667V339.6266666666667C305.7066666666667 340.6933333333334 312.7466666666667 341.3333333333334 320 341.3333333333334C327.2533333333334 341.3333333333334 334.2933333333333 340.6933333333334 341.3333333333333 339.6266666666667V264.7466666666667L394.6666666666667 317.6533333333334C405.3333333333333 309.3333333333334 416 298.6666666666667 424.32 288L371.4133333333333 234.6666666666667H446.2933333333334C447.36 227.6266666666667 448 220.5866666666667 448 213.3333333333334C448 206.08 447.36 199.04 446.2933333333334 192H371.4133333333334L424.3200000000001 138.6666666666667C420.2666666666667 133.3333333333334 416.0000000000001 128 410.4533333333335 122.88C405.3333333333335 117.3333333333334 400.0000000000001 113.0666666666667 394.6666666666668 109.0133333333333L341.3333333333333 161.92V87.04M106.6666666666667 42.6666666666667C106.6666666666667 66.1333333333334 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334S192 66.1333333333334 192 42.6666666666667S172.8 0 149.3333333333333 0S106.6666666666667 19.2 106.6666666666667 42.6666666666667z" /> + <glyph glyph-name="relative-scale" + unicode="&#xF452;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M256 234.6666666666667H213.3333333333333V192H256M170.6666666666667 234.6666666666667H128V192H170.6666666666667M341.3333333333333 149.3333333333334H298.6666666666667V106.6666666666667H341.3333333333333M341.3333333333333 234.6666666666667H298.6666666666667V192H341.3333333333333V234.6666666666667z" /> + <glyph glyph-name="reload" + unicode="&#xF453;" + horiz-adv-x="512" d=" M405.3333333333333 192H476.16L370.56 86.4L264.96 192H362.0266666666667C362.6666666666667 224.8533333333333 350.2933333333333 257.4933333333334 325.12 282.6666666666667C275.2 332.5866666666667 194.1333333333333 332.5866666666667 144.2133333333333 282.6666666666667C94.2933333333333 232.7466666666667 94.2933333333333 151.4666666666667 144.2133333333333 101.5466666666666C183.4666666666666 62.2933333333333 242.3466666666666 53.9733333333333 289.7066666666666 76.5866666666666L321.0666666666666 45.2266666666666C256 6.6133333333333 170.6666666666667 15.1466666666667 113.92 71.4666666666667C47.36 138.0266666666668 47.5733333333333 245.9733333333334 114.1333333333333 312.5333333333334C181.3333333333333 379.3066666666668 288.64 379.5200000000001 355.4133333333333 312.7466666666668C388.6933333333333 279.4666666666667 405.3333333333333 235.7333333333334 405.3333333333333 192z" /> + <glyph glyph-name="remote" + unicode="&#xF454;" + horiz-adv-x="512" d=" M256 448C191.1466666666667 448 132.48 421.76 90.0266666666667 379.3066666666667L120.1066666666667 349.2266666666667C154.88 384 202.6666666666667 405.3333333333333 256 405.3333333333333S357.12 384 391.68 349.0133333333333L421.76 379.0933333333334C379.52 421.76 320.8533333333333 448 256 448M150.4 318.9333333333334L180.48 288.8533333333334C199.8933333333333 308.0533333333334 226.56 320 256 320S312.1066666666667 308.0533333333334 331.52 288.8533333333334L361.6 318.9333333333334C334.5066666666667 346.0266666666667 297.1733333333333 362.6666666666667 256 362.6666666666667C214.8266666666667 362.6666666666667 177.4933333333334 346.0266666666667 150.4 318.9333333333334M256 128C232.5333333333334 128 213.3333333333333 147.2000000000001 213.3333333333333 170.6666666666667S232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 194.1333333333333 298.6666666666667 170.6666666666667S279.4666666666667 128 256 128M320 256H192C180.2666666666667 256 170.6666666666667 246.4000000000001 170.6666666666667 234.6666666666667V-21.3333333333333C170.6666666666667 -33.0666666666667 180.2666666666667 -42.6666666666666 192 -42.6666666666666H320C331.7333333333334 -42.6666666666666 341.3333333333333 -33.0666666666667 341.3333333333333 -21.3333333333333V234.6666666666667C341.3333333333333 246.4000000000001 331.7333333333334 256 320 256z" /> + <glyph glyph-name="rename-box" + unicode="&#xF455;" + horiz-adv-x="512" d=" M384 85.3333333333334H224L266.6666666666667 128H384M128 85.3333333333334V138.6666666666667L296.1066666666667 306.1333333333334C300.16 310.4 306.9866666666666 310.4 311.2533333333334 306.1333333333334L348.8 268.5866666666667C353.0666666666667 264.3200000000001 353.0666666666667 257.7066666666667 348.8 253.44L180.6933333333333 85.3333333333334M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="repeat" + unicode="&#xF456;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H149.3333333333333V149.3333333333334L64 64L149.3333333333333 -21.3333333333333V42.6666666666667H405.3333333333333V170.6666666666667H362.6666666666667M149.3333333333333 298.6666666666667H362.6666666666667V234.6666666666667L448 320L362.6666666666667 405.3333333333333V341.3333333333334H106.6666666666667V213.3333333333334H149.3333333333333V298.6666666666667z" /> + <glyph glyph-name="repeat-off" + unicode="&#xF457;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L335.5733333333333 42.6666666666667H149.3333333333333V-21.3333333333333L64 64L149.3333333333333 149.3333333333334V85.3333333333334H292.9066666666667L149.3333333333333 228.9066666666667V213.3333333333334H106.6666666666667V271.5733333333334L42.6666666666667 335.5733333333334M362.6666666666667 170.6666666666667H405.3333333333333V81.4933333333333L362.6666666666667 124.16V170.6666666666667M362.6666666666667 341.3333333333334V405.3333333333333L448 320L362.6666666666667 234.6666666666667V298.6666666666667H188.16L145.4933333333334 341.3333333333334H362.6666666666667z" /> + <glyph glyph-name="repeat-once" + unicode="&#xF458;" + horiz-adv-x="512" d=" M277.3333333333333 128V256H256L213.3333333333333 234.6666666666667V213.3333333333334H245.3333333333333V128M362.6666666666667 85.3333333333334H149.3333333333333V149.3333333333334L64 64L149.3333333333333 -21.3333333333333V42.6666666666667H405.3333333333333V170.6666666666667H362.6666666666667M149.3333333333333 298.6666666666667H362.6666666666667V234.6666666666667L448 320L362.6666666666667 405.3333333333333V341.3333333333334H106.6666666666667V213.3333333333334H149.3333333333333V298.6666666666667z" /> + <glyph glyph-name="replay" + unicode="&#xF459;" + horiz-adv-x="512" d=" M256 341.3333333333334V426.6666666666667L149.3333333333333 320L256 213.3333333333334V298.6666666666667C326.6133333333334 298.6666666666667 384 241.2800000000001 384 170.6666666666667S326.6133333333334 42.6666666666667 256 42.6666666666667S128 100.0533333333334 128 170.6666666666667H85.3333333333333C85.3333333333333 76.3733333333333 161.7066666666667 0 256 0S426.6666666666667 76.3733333333333 426.6666666666667 170.6666666666667S350.2933333333334 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="reply" + unicode="&#xF45A;" + horiz-adv-x="512" d=" M213.3333333333333 256V341.3333333333334L64 192L213.3333333333333 42.6666666666667V130.1333333333333C320 130.1333333333333 394.6666666666667 96 448 21.3333333333334C426.6666666666667 128 362.6666666666667 234.6666666666667 213.3333333333333 256z" /> + <glyph glyph-name="reply-all" + unicode="&#xF45B;" + horiz-adv-x="512" d=" M277.3333333333333 256V341.3333333333334L128 192L277.3333333333333 42.6666666666667V130.1333333333333C384 130.1333333333333 458.6666666666666 96 512 21.3333333333334C490.6666666666666 128 426.6666666666667 234.6666666666667 277.3333333333333 256M149.3333333333333 277.3333333333334V341.3333333333334L0 192L149.3333333333333 42.6666666666667V106.6666666666667L64 192L149.3333333333333 277.3333333333334z" /> + <glyph glyph-name="reproduction" + unicode="&#xF45C;" + horiz-adv-x="512" d=" M271.36 167.4666666666667L290.56 186.4533333333334C290.1333333333334 213.3333333333334 305.28 246.6133333333334 333.2266666666667 274.3466666666667C374.8266666666667 316.16 429.0133333333333 329.6 453.9733333333334 304.64S465.4933333333333 225.4933333333334 423.68 183.8933333333333C395.9466666666666 155.9466666666667 362.6666666666667 140.8 335.7866666666667 141.2266666666667L316.8 122.0266666666667C309.3333333333333 114.9866666666667 298.6666666666667 113.92 290.1333333333333 119.2533333333333C272.2133333333333 112.8533333333333 256 104.96 246.6133333333333 89.6C235.3066666666667 70.8266666666667 235.3066666666667 40.5333333333333 223.36 22.4C211.4133333333333 4.0533333333334 187.52 -2.1333333333333 162.3466666666666 -2.1333333333333S106.6666666666667 0 84.2666666666667 32L137.1733333333333 23.04C149.3333333333333 21.3333333333334 181.3333333333333 34.3466666666667 193.0666666666667 52.48C205.0133333333334 70.8266666666666 205.0133333333334 100.9066666666666 216.32 119.8933333333333C226.3466666666667 136.5333333333333 245.3333333333333 144.4266666666666 265.1733333333333 151.2533333333333C264.96 157.0133333333333 266.6666666666667 162.9866666666667 271.36 167.4666666666667M149.3333333333333 405.3333333333333C208.2133333333333 405.3333333333333 256 357.5466666666667 256 298.6666666666667S208.2133333333333 192 149.3333333333333 192S42.6666666666667 239.7866666666667 42.6666666666667 298.6666666666667S90.4533333333333 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667C113.92 362.6666666666667 85.3333333333333 334.0800000000001 85.3333333333333 298.6666666666667S113.92 234.6666666666667 149.3333333333333 234.6666666666667S213.3333333333333 263.2533333333334 213.3333333333333 298.6666666666667S184.7466666666667 362.6666666666667 149.3333333333333 362.6666666666667z" /> + <glyph glyph-name="resize-bottom-right" + unicode="&#xF45D;" + horiz-adv-x="512" d=" M469.3333333333333 -21.3333333333333H426.6666666666667V21.3333333333334H469.3333333333333V-21.3333333333333M469.3333333333333 64H426.6666666666667V106.6666666666667H469.3333333333333V64M384 -21.3333333333333H341.3333333333333V21.3333333333334H384V-21.3333333333333M384 64H341.3333333333333V106.6666666666667H384V64M298.6666666666667 -21.3333333333333H256V21.3333333333334H298.6666666666667V-21.3333333333333M469.3333333333333 149.3333333333334H426.6666666666667V192H469.3333333333333V149.3333333333334z" /> + <glyph glyph-name="responsive" + unicode="&#xF45E;" + horiz-adv-x="512" d=" M85.3333333333333 320V106.6666666666667H192V192C192 215.4666666666667 211.2 234.6666666666667 234.6666666666667 234.6666666666667H341.3333333333333C364.8 234.6666666666667 384 215.4666666666667 384 192V106.6666666666667H426.6666666666667V320H85.3333333333333M0 21.3333333333334V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H512V21.3333333333334H384C384 -2.3466666666666 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333H234.6666666666667C211.2 -21.3333333333333 192 -2.1333333333333 192 21.3333333333334H0M245.3333333333333 21.3333333333334C239.36 21.3333333333334 234.6666666666667 16.64 234.6666666666667 10.6666666666667S239.36 0 245.3333333333333 0S256 4.6933333333333 256 10.6666666666667S251.3066666666667 21.3333333333334 245.3333333333333 21.3333333333334M330.6666666666667 21.3333333333334C324.6933333333334 21.3333333333334 320 16.64 320 10.6666666666667S324.6933333333334 0 330.6666666666667 0S341.3333333333333 4.6933333333333 341.3333333333333 10.6666666666667S336.64 21.3333333333334 330.6666666666667 21.3333333333334M277.3333333333333 21.3333333333334V0H298.6666666666667V21.3333333333334H277.3333333333333M234.6666666666667 192V42.6666666666667H341.3333333333333V192H234.6666666666667z" /> + <glyph glyph-name="rewind" + unicode="&#xF45F;" + horiz-adv-x="512" d=" M245.3333333333333 192L426.6666666666667 64V320M234.6666666666667 64V320L53.3333333333333 192L234.6666666666667 64z" /> + <glyph glyph-name="ribbon" + unicode="&#xF460;" + horiz-adv-x="512" d=" M286.08 36.0533333333334L353.92 -32L384 -1.4933333333333L316.3733333333334 66.1333333333334M331.52 202.0266666666667H331.3066666666666L256 126.5066666666667L180.6933333333333 202.0266666666667H180.48C161.28 221.2266666666667 149.3333333333333 247.8933333333333 149.3333333333333 277.3333333333334C149.3333333333333 336.2133333333334 197.12 384 256 384S362.6666666666667 336.2133333333334 362.6666666666667 277.3333333333334C362.6666666666667 247.8933333333334 350.7200000000001 221.2266666666667 331.52 202.0266666666667M360.5333333333333 170.6666666666667C388.2666666666667 197.76 405.3333333333333 235.52 405.3333333333333 277.3333333333334C405.3333333333333 359.8933333333333 338.56 426.6666666666667 256 426.6666666666667S106.6666666666667 359.8933333333333 106.6666666666667 277.3333333333334C106.6666666666667 235.52 123.9466666666667 197.76 151.4666666666667 170.6666666666667L225.92 96L128 -1.4933333333333L158.08 -32L360.5333333333333 170.6666666666667z" /> + <glyph glyph-name="road" + unicode="&#xF461;" + horiz-adv-x="512" d=" M234.6666666666667 106.6666666666667H277.3333333333333V21.3333333333334H234.6666666666667M234.6666666666667 234.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M234.6666666666667 362.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667M85.3333333333333 -21.3333333333333H426.6666666666667V405.3333333333333H85.3333333333333V-21.3333333333333z" /> + <glyph glyph-name="road-variant" + unicode="&#xF462;" + horiz-adv-x="512" d=" M386.1333333333334 345.6C384 356.2666666666667 375.4666666666667 362.6666666666667 364.8 362.6666666666667H277.3333333333333L281.6 298.6666666666667H230.4L234.6666666666667 362.6666666666667H145.0666666666667C134.4 362.6666666666667 125.8666666666667 354.1333333333334 123.7333333333333 345.6L66.1333333333333 46.9333333333333C64 34.1333333333333 74.6666666666667 21.3333333333334 87.4666666666667 21.3333333333334H213.3333333333333L219.7333333333334 128H292.2666666666667L298.6666666666667 21.3333333333334H422.4C435.2000000000001 21.3333333333334 445.8666666666667 34.1333333333334 443.7333333333334 46.9333333333333L386.1333333333334 345.6M221.8666666666667 170.6666666666667L226.1333333333334 256H281.6L285.8666666666666 170.6666666666667H221.8666666666666z" /> + <glyph glyph-name="rocket" + unicode="&#xF463;" + horiz-adv-x="512" d=" M59.9466666666667 146.7733333333334L120.32 207.1466666666667L174.2933333333333 217.8133333333334C242.9866666666667 311.2533333333334 374.4 357.9733333333334 421.9733333333334 357.9733333333334C421.9733333333334 310.4000000000001 375.2533333333334 178.9866666666667 281.8133333333334 110.2933333333334L271.1466666666667 56.3200000000001L210.7733333333334 -4.0533333333333L195.6266666666667 71.2533333333335C165.5466666666667 71.2533333333335 165.5466666666667 71.2533333333335 150.4 86.4000000000001C135.2533333333334 101.5466666666668 135.2533333333334 101.5466666666668 135.2533333333334 131.6266666666668L59.9466666666667 146.7733333333335M120.3200000000001 86.4000000000001L150.4 56.3200000000001L93.6533333333334 -0.6399999999999H63.36V29.6533333333335L120.32 86.4000000000002M90.0266666666667 116.4800000000002L116.48 112.8533333333335L64 60.5866666666667V90.88L90.0266666666667 116.48M176.8533333333333 52.48L180.48 26.0266666666666L154.88 0H124.5866666666667L176.8533333333333 52.48M277.3333333333333 245.3333333333334C259.6266666666667 245.3333333333334 245.3333333333333 231.04 245.3333333333333 213.3333333333334S259.6266666666667 181.3333333333334 277.3333333333333 181.3333333333334S309.3333333333333 195.6266666666667 309.3333333333333 213.3333333333334S295.04 245.3333333333334 277.3333333333333 245.3333333333334z" /> + <glyph glyph-name="rotate-3d" + unicode="&#xF464;" + horiz-adv-x="512" d=" M256 341.3333333333334C362.0266666666667 341.3333333333334 448 283.9466666666667 448 213.3333333333334C448 177.4933333333334 425.8133333333334 145.0666666666667 390.1866666666666 121.8133333333334C413.0133333333333 140.3733333333333 426.6666666666667 163.84 426.6666666666667 189.2266666666667C426.6666666666667 249.8133333333334 350.2933333333334 298.6666666666667 256 298.6666666666667V234.6666666666667L170.6666666666667 320L256 405.3333333333333V341.3333333333334M256 42.6666666666667C149.9733333333333 42.6666666666667 64 100.0533333333334 64 170.6666666666667C64 206.5066666666667 86.1866666666667 238.9333333333334 121.8133333333333 262.1866666666667C98.9866666666667 243.6266666666667 85.3333333333333 220.16 85.3333333333333 194.56C85.3333333333333 134.1866666666667 161.7066666666667 85.3333333333334 256 85.3333333333334V149.3333333333334L341.3333333333333 64L256 -21.3333333333333V42.6666666666667z" /> + <glyph glyph-name="rotate-left" + unicode="&#xF465;" + horiz-adv-x="512" d=" M277.3333333333333 361.1733333333334V426.6666666666667L180.2666666666667 329.6L277.3333333333333 234.6666666666667V318.0800000000001C337.92 307.8400000000001 384 255.36 384 192S337.92 76.16 277.3333333333333 65.92V22.8266666666667C361.6 33.28 426.6666666666667 104.96 426.6666666666667 192S361.6 350.7200000000001 277.3333333333333 361.1733333333334M151.4666666666667 57.1733333333334C176.2133333333333 37.9733333333334 205.0133333333333 26.4533333333333 234.6666666666667 22.8266666666667V66.1333333333334C216.1066666666667 69.3333333333334 198.1866666666667 76.5866666666667 182.1866666666667 88.1066666666667L151.4666666666667 57.1733333333334M129.92 170.6666666666667H86.8266666666667C90.4533333333333 141.0133333333333 102.1866666666667 112.4266666666667 121.3866666666667 87.68L151.4666666666667 117.9733333333334C140.3733333333333 133.9733333333334 132.9066666666667 151.8933333333333 129.92 170.6666666666667M151.68 266.0266666666667L121.6 296.32C102.4 271.5733333333334 90.4533333333333 242.9866666666667 86.8266666666667 213.3333333333334H129.92C132.9066666666667 231.8933333333333 140.3733333333333 250.0266666666667 151.68 266.0266666666667z" /> + <glyph glyph-name="rotate-left-variant" + unicode="&#xF466;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H149.3333333333333C172.8 405.3333333333333 192 386.1333333333334 192 362.6666666666667V21.3333333333334C192 -2.1333333333333 172.8 -21.3333333333333 149.3333333333333 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M426.6666666666667 128C450.1333333333334 128 469.3333333333333 108.8 469.3333333333333 85.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H234.6666666666667V128H426.6666666666667M298.6666666666667 362.6666666666667C392.9600000000001 362.6666666666667 469.3333333333333 286.2933333333334 469.3333333333333 192L468.0533333333333 170.6666666666667H424.9600000000001L426.6666666666667 192C426.6666666666667 262.6133333333334 369.28 320 298.6666666666667 320V256L213.3333333333333 341.3333333333334L298.6666666666667 426.6666666666667V362.6666666666667z" /> + <glyph glyph-name="rotate-right" + unicode="&#xF467;" + horiz-adv-x="512" d=" M360.32 117.3333333333334L390.6133333333334 87.68C409.8133333333334 112.4266666666667 421.5466666666667 141.0133333333333 425.1733333333334 170.6666666666667H382.0800000000001C379.0933333333334 152.1066666666667 371.8400000000001 133.9733333333334 360.3200000000001 117.3333333333334M277.3333333333333 66.1333333333334V23.0400000000001C306.9866666666667 26.6666666666667 335.7866666666667 38.1866666666667 360.5333333333333 57.3866666666667L329.8133333333333 88.1066666666667C313.8133333333333 76.5866666666668 295.8933333333333 69.1200000000001 277.3333333333333 66.1333333333334M425.1733333333333 213.3333333333334C421.5466666666666 242.9866666666668 409.8133333333334 271.5733333333334 390.6133333333333 296.3200000000001L360.32 266.0266666666668C371.84 250.0266666666668 379.0933333333333 231.8933333333334 382.08 213.3333333333334M331.7333333333334 329.6L234.6666666666667 426.6666666666667V361.1733333333334C150.6133333333333 350.7200000000001 85.3333333333333 279.04 85.3333333333333 192S150.4 33.28 234.6666666666667 22.8266666666667V65.92C174.08 76.16 128 128.64 128 192S174.08 307.8400000000001 234.6666666666667 318.0800000000001V234.6666666666667L331.7333333333334 329.6z" /> + <glyph glyph-name="rotate-right-variant" + unicode="&#xF468;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V426.6666666666667L298.6666666666667 341.3333333333334L213.3333333333333 256V320C142.72 320 85.3333333333333 262.6133333333334 85.3333333333333 192L87.04 170.6666666666667H43.9466666666667L42.6666666666667 192C42.6666666666667 286.2933333333334 119.04 362.6666666666667 213.3333333333333 362.6666666666667M362.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667C339.2 -21.3333333333333 320 -2.1333333333333 320 21.3333333333334V362.6666666666667C320 386.1333333333334 339.2 405.3333333333333 362.6666666666667 405.3333333333333M85.3333333333333 128H277.3333333333333V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V85.3333333333334C42.6666666666667 108.8 61.8666666666667 128 85.3333333333333 128z" /> + <glyph glyph-name="rounded-corner" + unicode="&#xF607;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H448V0H405.3333333333333V42.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333V85.3333333333334M64 170.6666666666667H106.6666666666667V213.3333333333334H64V170.6666666666667M64 85.3333333333334H106.6666666666667V128H64V85.3333333333334M64 256H106.6666666666667V298.6666666666667H64V256M64 341.3333333333334H106.6666666666667V384H64V341.3333333333334M149.3333333333333 341.3333333333334H192V384H149.3333333333333V341.3333333333334M320 0H362.6666666666667V42.6666666666667H320V0M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667V0M320 0H362.6666666666667V42.6666666666667H320V0M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0M64 0H106.6666666666667V42.6666666666667H64V0M448 277.3333333333334C448 336.2133333333334 400.2133333333333 384 341.3333333333333 384H234.6666666666667V341.3333333333334H341.3333333333333C376.7466666666667 341.3333333333334 405.3333333333333 312.7466666666667 405.3333333333333 277.3333333333334V170.6666666666667H448V277.3333333333334z" /> + <glyph glyph-name="router-wireless" + unicode="&#xF469;" + horiz-adv-x="512" d=" M85.3333333333333 170.6666666666667H426.6666666666667C438.4 170.6666666666667 448 161.0666666666667 448 149.3333333333334V64C448 52.2666666666667 438.4 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C73.6 42.6666666666667 64 52.2666666666667 64 64V149.3333333333334C64 161.0666666666667 73.6 170.6666666666667 85.3333333333333 170.6666666666667M192 85.3333333333334H213.3333333333333V128H192V85.3333333333334M106.6666666666667 128V85.3333333333334H149.3333333333333V128H106.6666666666667M405.3333333333333 300.1600000000001L375.4666666666667 270.0800000000001C344.5333333333333 301.0133333333333 301.8666666666667 320 254.5066666666667 320C207.36 320 164.6933333333333 301.0133333333333 133.76 270.0800000000001L103.8933333333333 300.1600000000001C142.5066666666667 338.7733333333333 195.84 362.6666666666667 254.5066666666667 362.6666666666667C313.3866666666667 362.6666666666667 366.7199999999999 338.7733333333333 405.3333333333333 300.1600000000001M344.9600000000001 239.7866666666667L315.0933333333334 209.7066666666667C299.52 225.0666666666667 278.1866666666667 234.6666666666667 254.5066666666667 234.6666666666667C230.8266666666667 234.6666666666667 209.4933333333334 225.0666666666667 194.1333333333334 209.7066666666667L164.2666666666667 239.7866666666667C187.3066666666667 263.04 219.3066666666667 277.3333333333334 254.5066666666667 277.3333333333334C289.7066666666667 277.3333333333334 321.7066666666667 263.04 344.9600000000001 239.7866666666667z" /> + <glyph glyph-name="routes" + unicode="&#xF46A;" + horiz-adv-x="512" d=" M234.6666666666667 234.6666666666667H106.6666666666667L64 277.3333333333334L106.6666666666667 320H234.6666666666667V384L256 405.3333333333333L277.3333333333333 384V362.6666666666667H405.3333333333333L448 320L405.3333333333333 277.3333333333334H277.3333333333333V234.6666666666667H405.3333333333333L448 192L405.3333333333333 149.3333333333334H277.3333333333333V21.3333333333334C300.8 21.3333333333334 320 2.1333333333334 320 -21.3333333333333H192C192 2.1333333333334 211.2 21.3333333333334 234.6666666666667 21.3333333333334V234.6666666666667z" /> + <glyph glyph-name="rowing" + unicode="&#xF608;" + horiz-adv-x="512" d=" M181.3333333333333 138.6666666666667L85.3333333333333 42.6666666666667L117.3333333333333 10.6666666666667L192 85.3333333333334H234.6666666666667L181.3333333333333 138.6666666666667M320 426.6666666666667C296.5333333333333 426.6666666666667 277.3333333333333 407.4666666666667 277.3333333333333 384S296.5333333333333 341.3333333333334 320 341.3333333333334S362.6666666666667 360.5333333333334 362.6666666666667 384S343.4666666666667 426.6666666666667 320 426.6666666666667M448 0L384 -64L320 0V32L168.7466666666667 183.2533333333333C162.1333333333333 182.1866666666667 155.7333333333333 181.3333333333334 149.3333333333333 181.3333333333334V227.84C184.7466666666667 227.2 226.3466666666667 246.4 248.96 271.36L278.8266666666667 304.4266666666666C282.88 309.3333333333333 288 312.5333333333333 293.5466666666666 315.0933333333333C299.7333333333333 318.08 306.7733333333333 320 314.0266666666667 320H314.6666666666667C341.3333333333333 320 362.6666666666667 298.6666666666667 362.6666666666667 271.7866666666667V149.3333333333334C362.6666666666667 131.2000000000001 355.2 114.7733333333333 343.04 103.04L266.6666666666667 179.4133333333333V227.84C253.2266666666666 216.7466666666667 236.16 206.08 217.8133333333333 198.1866666666666L352 64H384L448 0z" /> + <glyph glyph-name="rss" + unicode="&#xF46B;" + horiz-adv-x="512" d=" M131.84 114.3466666666667C157.44 114.3466666666667 178.3466666666666 93.44 178.3466666666666 67.84C178.3466666666666 42.6666666666667 157.44 21.3333333333334 131.84 21.3333333333334C106.6666666666667 21.3333333333334 85.3333333333333 42.6666666666667 85.3333333333333 67.84C85.3333333333333 93.44 106.24 114.3466666666667 131.84 114.3466666666667M85.3333333333333 353.28C268.5866666666667 353.28 417.2800000000001 204.5866666666667 417.2800000000001 21.3333333333334H356.9066666666668C356.9066666666668 171.3066666666667 235.3066666666668 292.9066666666667 85.3333333333334 292.9066666666667V353.28M85.3333333333334 232.5333333333333C202.0266666666667 232.5333333333333 296.5333333333334 138.0266666666667 296.5333333333334 21.3333333333334H236.1600000000001C236.1600000000001 104.5333333333333 168.5333333333334 172.16 85.3333333333334 172.16V232.5333333333334z" /> + <glyph glyph-name="rss-box" + unicode="&#xF46C;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M160 128C142.2933333333333 128 128 113.7066666666667 128 96S142.2933333333333 64 160 64S192 78.2933333333334 192 96S177.7066666666667 128 160 128M128 234.6666666666667V192C198.6133333333334 192 256 134.6133333333334 256 64H298.6666666666667C298.6666666666667 158.2933333333334 222.2933333333333 234.6666666666667 128 234.6666666666667M128 320V277.3333333333334C245.76 277.3333333333334 341.3333333333333 181.76 341.3333333333333 64H384C384 205.44 269.44 320 128 320z" /> + <glyph glyph-name="ruler" + unicode="&#xF46D;" + horiz-adv-x="512" d=" M29.6533333333333 56.3200000000001L67.4133333333333 93.8666666666667L97.7066666666667 64L120.32 86.4L90.0266666666667 116.48L120.32 146.7733333333334L173.0133333333334 93.8666666666667L195.6266666666667 116.4800000000001L142.9333333333333 169.3866666666668L173.0133333333334 199.4666666666668L203.3066666666667 169.3866666666668L225.92 192L195.6266666666667 222.08L225.92 252.3733333333334L278.6133333333334 199.4666666666667L301.2266666666667 222.08L248.5333333333334 274.9866666666667L278.6133333333334 305.0666666666667L308.6933333333334 274.9866666666667L331.52 297.6L301.2266666666667 327.6800000000001L331.52 357.9733333333334L384 305.0666666666667L406.8266666666667 327.68L354.1333333333334 380.5866666666667L391.6800000000001 418.3466666666667L482.3466666666667 327.68L120.32 -34.3466666666666L29.6533333333333 56.3200000000001z" /> + <glyph glyph-name="run" + unicode="&#xF46E;" + horiz-adv-x="512" d=" M365.2266666666667 234.6666666666667L342.1866666666666 273.4933333333334L326.6133333333333 212.2666666666667L379.7333333333333 115.4133333333334V-21.3333333333333H341.3333333333333V85.3333333333334L291.6266666666667 151.68L257.4933333333334 55.4666666666667L154.6666666666667 10.6666666666667L132.2666666666667 42.6666666666667L221.6533333333333 95.36L275.4133333333333 305.7066666666667L230.4 291.6266666666667V213.3333333333334H192V324.2666666666667L307.6266666666667 360.3200000000001L318.2933333333333 362.0266666666667C331.52 362.0266666666667 343.04 354.7733333333334 349.44 344.1066666666667L392.1066666666667 273.0666666666667H469.3333333333333V234.6666666666667H365.2266666666667M362.6666666666667 366.9333333333334C341.3333333333333 366.9333333333334 324.2666666666667 384 324.2666666666667 405.3333333333334S341.3333333333333 443.7333333333334 362.6666666666667 443.7333333333334S401.0666666666667 426.6666666666667 401.0666666666667 405.3333333333333S384 366.9333333333334 362.6666666666667 366.9333333333334M149.3333333333333 256V213.3333333333334H85.3333333333333C73.6 213.3333333333334 64 222.9333333333333 64 234.6666666666667S73.6 256 85.3333333333333 256H149.3333333333333M197.3333333333333 170.6666666666667L186.6666666666667 128H106.6666666666667C94.9333333333333 128 85.3333333333333 137.6 85.3333333333333 149.3333333333334S94.9333333333333 170.6666666666667 106.6666666666667 170.6666666666667H197.3333333333333M149.3333333333333 341.3333333333334V298.6666666666667H64C52.2666666666667 298.6666666666667 42.6666666666667 308.2666666666667 42.6666666666667 320S52.2666666666667 341.3333333333334 64 341.3333333333334H149.3333333333333z" /> + <glyph glyph-name="sale" + unicode="&#xF46F;" + horiz-adv-x="512" d=" M397.8666666666666 387.2L410.88 304.8533333333334L485.7599999999999 266.6666666666667L448 192L485.9733333333334 117.3333333333334L410.4533333333334 79.1466666666667L397.4400000000001 -3.1999999999999L314.4533333333334 9.8133333333334L255.3600000000001 -49.0666666666666L196.0533333333334 10.6666666666667L113.7066666666667 -2.9866666666666L100.4800000000001 80.0000000000001L26.0266666666667 117.9733333333334L64 192.64L26.24 266.6666666666667L101.12 305.2800000000001L114.1333333333334 386.9866666666667L196.6933333333333 373.3333333333334L256 433.28L315.0933333333333 374.1866666666667L397.8666666666666 387.2M202.6666666666667 298.6666666666667C184.96 298.6666666666667 170.6666666666667 284.3733333333334 170.6666666666667 266.6666666666667S184.96 234.6666666666667 202.6666666666667 234.6666666666667S234.6666666666667 248.96 234.6666666666667 266.6666666666667S220.3733333333333 298.6666666666667 202.6666666666667 298.6666666666667M309.3333333333333 149.3333333333334C291.6266666666667 149.3333333333334 277.3333333333333 135.04 277.3333333333333 117.3333333333334S291.6266666666667 85.3333333333334 309.3333333333333 85.3333333333334S341.3333333333333 99.6266666666667 341.3333333333333 117.3333333333334S327.04 149.3333333333334 309.3333333333333 149.3333333333334M179.4133333333333 85.3333333333334L362.6666666666667 268.5866666666667L332.5866666666667 298.6666666666667L149.3333333333333 115.4133333333334L179.4133333333333 85.3333333333334z" /> + <glyph glyph-name="satellite" + unicode="&#xF470;" + horiz-adv-x="512" d=" M106.6666666666667 64L181.3333333333333 160L234.6666666666667 96L309.3333333333333 192L405.3333333333333 64M106.6666666666667 192V234.6666666666667C165.5466666666667 234.6666666666667 213.3333333333333 282.4533333333334 213.3333333333333 341.3333333333334H256C256 258.7733333333333 189.2266666666667 192 106.6666666666667 192M106.6666666666667 341.3333333333334H170.6666666666667C170.6666666666667 305.92 142.08 277.3333333333334 106.6666666666667 277.3333333333334M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="satellite-variant" + unicode="&#xF471;" + horiz-adv-x="512" d=" M247.8933333333333 426.6666666666667L368.64 305.7066666666667L323.4133333333333 260.48L278.1866666666666 305.7066666666667L247.8933333333333 275.4133333333334L297.6 225.92L272.8533333333333 200.96L282.4533333333333 191.1466666666667C302.2933333333333 200.32 326.6133333333333 196.9066666666667 342.8266666666667 180.48L267.52 105.1733333333334C251.0933333333334 121.3866666666667 247.68 145.7066666666667 256.8533333333334 165.5466666666667L247.04 175.1466666666667L222.08 150.4L172.5866666666667 200.1066666666667L142.2933333333333 169.8133333333333L187.52 124.5866666666667L142.2933333333333 79.36L21.3333333333333 200.1066666666667L66.9866666666667 245.3333333333334L112.2133333333333 200.1066666666667L142.2933333333333 230.1866666666667L81.92 290.56C65.28 307.2 65.28 334.2933333333333 81.92 350.9333333333334L97.0666666666667 366.08C113.7066666666667 382.7200000000001 140.8 382.7200000000001 157.44 366.08L217.8133333333333 305.7066666666667L247.8933333333334 335.7866666666667L202.6666666666667 381.0133333333333L247.8933333333333 426.6666666666667M384 149.3333333333334C384 102.1866666666667 345.8133333333334 64 298.6666666666667 64V106.6666666666667C322.1333333333334 106.6666666666667 341.3333333333333 125.8666666666667 341.3333333333333 149.3333333333334H384M469.3333333333333 149.3333333333334C469.3333333333333 55.04 392.9600000000001 -21.3333333333333 298.6666666666667 -21.3333333333333V21.3333333333334C369.28 21.3333333333334 426.6666666666667 78.72 426.6666666666667 149.3333333333334H469.3333333333333z" /> + <glyph glyph-name="saxophone" + unicode="&#xF609;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C73.6 405.3333333333333 64 395.7333333333334 64 384S73.6 362.6666666666667 85.3333333333333 362.6666666666667C120.7466666666667 362.6666666666667 149.3333333333333 334.0800000000001 149.3333333333333 298.6666666666667V117.3333333333334C149.3333333333333 40.5333333333333 211.2 -21.3333333333333 288 -21.3333333333333S426.6666666666667 40.5333333333333 426.6666666666667 117.3333333333334V170.6666666666667C438.4 170.6666666666667 448 180.2666666666667 448 192S438.4 213.3333333333334 426.6666666666667 213.3333333333334H298.6666666666667C286.9333333333333 213.3333333333334 277.3333333333333 203.7333333333334 277.3333333333333 192S286.9333333333333 170.6666666666667 298.6666666666667 170.6666666666667V128C298.6666666666667 116.2666666666667 289.0666666666667 106.6666666666667 277.3333333333333 106.6666666666667S256 116.2666666666667 256 128V213.3333333333334C267.7333333333334 213.3333333333334 277.3333333333333 222.9333333333333 277.3333333333333 234.6666666666667S267.7333333333334 256 256 256V277.3333333333334C267.7333333333334 277.3333333333334 277.3333333333333 286.9333333333334 277.3333333333333 298.6666666666667S267.7333333333334 320 256 320V330.6666666666667C256 371.8400000000001 222.5066666666667 405.3333333333333 181.3333333333333 405.3333333333333H85.3333333333333z" /> + <glyph glyph-name="scale" + unicode="&#xF472;" + horiz-adv-x="512" d=" M180.48 126.72L150.4 96.64L121.1733333333334 125.8666666666667C102.8266666666667 102.1866666666667 90.4533333333333 73.8133333333334 86.6133333333334 42.6666666666667H128V1e-13H42.6666666666667V21.3333333333334C42.6666666666667 124.5866666666668 116.0533333333333 210.5600000000001 213.3333333333333 230.4000000000001V273.0666666666668L42.6666666666667 341.3333333333334V384H469.3333333333333V341.3333333333334L298.6666666666667 273.0666666666667V230.4000000000001C395.9466666666666 210.56 469.3333333333333 124.5866666666667 469.3333333333333 21.3333333333334V0H384V42.6666666666667H425.3866666666667C421.5466666666667 73.8133333333334 409.1733333333333 102.1866666666667 390.8266666666667 125.8666666666667L361.6 96.64L331.52 126.72L360.7466666666667 156.16C337.0666666666667 174.5066666666667 308.48 186.88 277.3333333333333 190.72V149.3333333333334H234.6666666666667V190.72C203.52 186.88 174.9333333333333 174.5066666666667 151.2533333333333 156.16L180.48 126.72M256 64C279.4666666666667 64 298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333C249.1733333333333 -21.3333333333333 242.7733333333334 -19.84 237.2266666666667 -16.8533333333333L155.0933333333333 21.3333333333334L237.2266666666667 59.52C242.7733333333333 62.5066666666667 249.1733333333333 64 256 64z" /> + <glyph glyph-name="scale-balance" + unicode="&#xF5D1;" + horiz-adv-x="512" d=" M256 384C228.9066666666667 384 204.8 366.9333333333334 195.84 341.3333333333334H64V298.6666666666667H105.6L42.6666666666667 149.3333333333334C32.64 106.6666666666667 64 85.3333333333334 117.3333333333333 85.3333333333334S203.9466666666666 106.6666666666667 192 149.3333333333334L129.0666666666667 298.6666666666667H195.6266666666667C202.6666666666667 280.5333333333334 216.5333333333333 266.6666666666667 234.6666666666667 259.6266666666667V21.3333333333334H42.6666666666667V-21.3333333333333H469.3333333333333V21.3333333333334H277.3333333333333V259.8400000000001C295.4666666666667 266.6666666666667 309.3333333333333 280.5333333333333 316.16 298.6666666666667H382.9333333333333L320 149.3333333333334C309.9733333333333 106.6666666666667 341.3333333333333 85.3333333333334 394.6666666666667 85.3333333333334S481.28 106.6666666666667 469.3333333333333 149.3333333333334L406.4 298.6666666666667H448V341.3333333333334H316.3733333333334C307.2 366.9333333333334 283.0933333333333 384 256 384M256 341.3333333333334C267.7333333333334 341.3333333333334 277.3333333333333 331.7333333333334 277.3333333333333 320S267.7333333333334 298.6666666666667 256 298.6666666666667S234.6666666666667 308.2666666666667 234.6666666666667 320S244.2666666666667 341.3333333333334 256 341.3333333333334M117.3333333333333 229.3333333333334L149.3333333333333 149.3333333333334H85.3333333333333L117.3333333333333 229.3333333333334M394.6666666666667 229.3333333333334L426.6666666666667 149.3333333333334H362.6666666666667L394.6666666666667 229.3333333333334z" /> + <glyph glyph-name="scale-bathroom" + unicode="&#xF473;" + horiz-adv-x="512" d=" M106.6666666666667 405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V362.6666666666667C64 386.1333333333334 83.2 405.3333333333333 106.6666666666667 405.3333333333333M256 362.6666666666667C208.8533333333333 362.6666666666667 170.6666666666667 324.48 170.6666666666667 277.3333333333334H240.2133333333333L231.4666666666667 336.4266666666667L275.2 277.3333333333334H341.3333333333333C341.3333333333333 324.48 303.1466666666667 362.6666666666667 256 362.6666666666667M106.6666666666667 234.6666666666667V21.3333333333334H405.3333333333333V234.6666666666667H106.6666666666667z" /> + <glyph glyph-name="school" + unicode="&#xF474;" + horiz-adv-x="512" d=" M256 384L21.3333333333333 256L256 128L448 232.7466666666667V85.3333333333334H490.6666666666666V256M106.6666666666667 166.8266666666667V81.4933333333333L256 0L405.3333333333333 81.4933333333333V166.8266666666667L256 85.3333333333334L106.6666666666667 166.8266666666667z" /> + <glyph glyph-name="screen-rotation" + unicode="&#xF475;" + horiz-adv-x="512" d=" M160 -10.6666666666666C90.6666666666667 22.6133333333333 40.7466666666667 90.4533333333334 33.0666666666667 170.6666666666667H1.0666666666667C11.9466666666667 39.2533333333333 121.8133333333333 -64 256 -64L270.08 -63.36L188.8 17.92M316.3733333333334 -4.0533333333333L59.9466666666667 252.3733333333334L195.6266666666667 388.0533333333334L452.0533333333333 131.6266666666667M218.24 410.6666666666667C205.6533333333333 423.2533333333334 185.3866666666667 423.2533333333334 173.0133333333333 410.6666666666667L37.3333333333333 274.9866666666667C24.7466666666667 262.4000000000001 24.7466666666667 242.1333333333334 37.3333333333333 229.76L293.76 -26.6666666666666C306.3466666666667 -39.2533333333333 326.6133333333333 -39.2533333333333 338.9866666666667 -26.6666666666666L474.6666666666666 109.0133333333333C487.2533333333333 121.6 487.2533333333333 141.8666666666667 474.6666666666666 154.24L218.24 410.6666666666667M352 394.6666666666667C421.3333333333333 361.1733333333334 471.2533333333333 293.5466666666667 478.9333333333333 213.3333333333334H510.9333333333333C500.0533333333333 344.7466666666667 390.1866666666666 448 256 448L241.92 447.36L323.2 366.0800000000001L352 394.6666666666667z" /> + <glyph glyph-name="screen-rotation-lock" + unicode="&#xF476;" + horiz-adv-x="512" d=" M358.4 394.6666666666667C358.4 414.7200000000001 374.6133333333334 430.9333333333334 394.6666666666667 430.9333333333334S430.9333333333333 414.7200000000001 430.9333333333333 394.6666666666667V384H358.4V394.6666666666667M341.3333333333333 256H448C459.7333333333333 256 469.3333333333333 265.6 469.3333333333333 277.3333333333334V362.6666666666667C469.3333333333333 374.4 459.7333333333333 384 448 384V394.6666666666667C448 424.1066666666667 424.1066666666667 448 394.6666666666667 448S341.3333333333333 424.1066666666667 341.3333333333333 394.6666666666667V384C329.6 384 320 374.4 320 362.6666666666667V277.3333333333334C320 265.6 329.6 256 341.3333333333333 256M180.6933333333333 10.6666666666667C110.9333333333333 43.9466666666667 61.0133333333333 111.7866666666667 53.3333333333333 192H21.3333333333333C32 60.5866666666667 142.08 -42.6666666666666 276.2666666666667 -42.6666666666666L290.3466666666667 -42.0266666666666L209.0666666666666 39.4666666666667L180.6933333333333 10.6666666666667M496 175.5733333333334L441.1733333333333 230.4000000000001L411.0933333333333 200.32L458.6666666666666 152.96L337.7066666666667 32L96 273.7066666666667L216.96 394.6666666666667L261.76 349.6533333333334L291.84 379.7333333333334L239.5733333333333 432C226.9866666666667 444.5866666666667 206.72 444.5866666666667 194.3466666666666 432L58.6666666666667 296.32C46.08 283.7333333333334 46.08 263.4666666666667 58.6666666666667 251.0933333333334L315.0933333333333 -5.3333333333333C327.68 -17.92 347.9466666666666 -17.92 360.32 -5.3333333333333L496 130.3466666666667C508.5866666666666 142.9333333333333 508.5866666666666 163.2 496 175.5733333333334z" /> + <glyph glyph-name="screwdriver" + unicode="&#xF477;" + horiz-adv-x="512" d=" M384 408.96C373.3333333333333 408.96 362.6666666666667 405.3333333333333 353.92 396.5866666666667L170.6666666666667 213.3333333333334L202.6666666666667 181.3333333333334L128 106.6666666666667H85.3333333333333L42.6666666666667 21.3333333333334L85.3333333333333 -21.3333333333333L170.6666666666667 21.3333333333334V64L245.3333333333333 138.6666666666667L277.3333333333333 106.6666666666667L460.5866666666666 289.92C473.8133333333333 309.3333333333334 477.2266666666667 333.44 460.5866666666666 350.0800000000001L414.08 396.5866666666667C405.3333333333333 405.3333333333333 394.6666666666667 408.96 384 408.96M384 362.6666666666667L426.6666666666667 320L277.3333333333333 170.6666666666667L234.6666666666667 213.3333333333334L384 362.6666666666667z" /> + <glyph glyph-name="script" + unicode="&#xF478;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C322.1333333333334 21.3333333333334 341.3333333333333 40.5333333333333 341.3333333333333 64V341.3333333333334H192C180.2666666666667 341.3333333333334 170.6666666666667 331.7333333333334 170.6666666666667 320V106.6666666666667H106.6666666666667V341.3333333333334C106.6666666666667 376.7466666666667 135.2533333333333 405.3333333333333 170.6666666666667 405.3333333333333H405.3333333333333C440.7466666666667 405.3333333333333 469.3333333333333 376.7466666666667 469.3333333333333 341.3333333333334V320H384V42.6666666666667C384 7.2533333333333 355.4133333333333 -21.3333333333333 320 -21.3333333333333H106.6666666666667C71.2533333333333 -21.3333333333333 42.6666666666667 7.2533333333333 42.6666666666667 42.6666666666667V64H256C256 40.5333333333333 275.2 21.3333333333334 298.6666666666667 21.3333333333334z" /> + <glyph glyph-name="sd" + unicode="&#xF479;" + horiz-adv-x="512" d=" M384 277.3333333333334H341.3333333333333V362.6666666666667H384M320 277.3333333333334H277.3333333333333V362.6666666666667H320M256 277.3333333333334H213.3333333333333V362.6666666666667H256M384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="seal" + unicode="&#xF47A;" + horiz-adv-x="512" d=" M434.9866666666667 34.7733333333333L349.44 64L320 -21.3333333333333L254.2933333333333 106.6666666666667L192 -21.3333333333333L162.56 64L77.0133333333333 34.7733333333333L139.3066666666667 162.7733333333333C118.8266666666667 188.3733333333333 106.6666666666667 220.8 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333S405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 220.8 393.1733333333333 188.3733333333333 372.6933333333333 162.7733333333333L434.9866666666667 34.7733333333333M149.3333333333333 256L206.72 227.4133333333334L202.6666666666667 163.4133333333334L256 198.8266666666667L309.3333333333333 163.6266666666667L305.7066666666667 227.4133333333334L362.6666666666667 256L305.4933333333334 284.8L309.3333333333333 348.3733333333334L256 313.3866666666667L202.6666666666667 348.8L206.2933333333333 284.5866666666667L149.3333333333333 256z" /> + <glyph glyph-name="seat-flat" + unicode="&#xF47B;" + horiz-adv-x="512" d=" M469.3333333333333 213.3333333333334V170.6666666666667H192V298.6666666666667H384C431.1466666666667 298.6666666666667 469.3333333333333 260.48 469.3333333333333 213.3333333333334M42.6666666666667 149.3333333333334V106.6666666666667H170.6666666666667V64H341.3333333333333V106.6666666666667H469.3333333333333V149.3333333333334M152.32 189.8666666666667C177.0666666666667 215.2533333333333 176.64 256 151.4666666666667 280.32C126.08 305.0666666666667 85.3333333333333 304.64 61.0133333333333 279.4666666666667C36.2666666666667 254.08 36.6933333333333 213.3333333333334 61.8666666666667 189.0133333333333C87.2533333333333 164.2666666666667 128 164.6933333333333 152.32 189.8666666666667z" /> + <glyph glyph-name="seat-flat-angled" + unicode="&#xF47C;" + horiz-adv-x="512" d=" M474.6666666666666 143.1466666666667L459.9466666666666 102.8266666666667L196.2666666666667 198.1866666666667L240.64 318.9333333333334L423.2533333333334 253.0133333333333C468.0533333333333 236.8 490.6666666666666 187.7333333333334 474.6666666666666 143.1466666666667M32 189.0133333333333L170.6666666666667 138.6666666666667V42.6666666666667H341.3333333333333V77.44L437.3333333333333 42.6666666666667L452.48 82.9866666666667L46.72 229.3333333333334M155.7333333333334 230.4000000000001C187.52 245.3333333333334 200.96 283.9466666666667 185.8133333333333 315.7333333333334C170.6666666666667 347.52 132.2666666666667 360.9600000000001 100.2666666666667 345.6C68.48 330.6666666666667 55.04 292.2666666666667 70.4 260.2666666666667C85.3333333333333 228.48 123.7333333333334 215.04 155.7333333333334 230.4z" /> + <glyph glyph-name="seat-individual-suite" + unicode="&#xF47D;" + horiz-adv-x="512" d=" M149.3333333333333 170.6666666666667C184.7466666666667 170.6666666666667 213.3333333333333 199.2533333333333 213.3333333333333 234.6666666666667S184.7466666666667 298.6666666666667 149.3333333333333 298.6666666666667S85.3333333333333 270.0800000000001 85.3333333333333 234.6666666666667S113.92 170.6666666666667 149.3333333333333 170.6666666666667M405.3333333333333 298.6666666666667H234.6666666666667V149.3333333333334H64V298.6666666666667H21.3333333333333V85.3333333333334H490.6666666666666V213.3333333333334C490.6666666666666 260.48 452.48 298.6666666666667 405.3333333333333 298.6666666666667z" /> + <glyph glyph-name="seat-legroom-extra" + unicode="&#xF47E;" + horiz-adv-x="512" d=" M85.3333333333333 192V384H42.6666666666667V192C42.6666666666667 133.12 90.4533333333333 85.3333333333334 149.3333333333333 85.3333333333334H277.3333333333333V128H149.3333333333333C113.92 128 85.3333333333333 156.5866666666667 85.3333333333333 192M487.04 80.2133333333333C478.9333333333333 95.9999999999999 459.52 100.9066666666666 443.7333333333333 93.6533333333333L420.4799999999999 82.9866666666666L347.7333333333333 231.8933333333333C340.48 246.4000000000001 325.76 256 309.3333333333333 256H234.6666666666667V384H106.6666666666667V213.3333333333334C106.6666666666667 177.92 135.2533333333333 149.3333333333334 170.6666666666667 149.3333333333334H320L392.7466666666667 0L472.1066666666666 36.2666666666667C488.5333333333333 43.9466666666667 495.5733333333333 64 487.04 80.2133333333333z" /> + <glyph glyph-name="seat-legroom-normal" + unicode="&#xF47F;" + horiz-adv-x="512" d=" M106.6666666666667 192V384H64V192C64 133.12 111.7866666666667 85.3333333333334 170.6666666666667 85.3333333333334H298.6666666666667V128H170.6666666666667C135.2533333333333 128 106.6666666666667 156.5866666666667 106.6666666666667 192M437.3333333333333 64H405.3333333333333V213.3333333333334C405.3333333333333 236.8 386.1333333333334 256 362.6666666666667 256H256V384H128V213.3333333333334C128 177.92 156.5866666666667 149.3333333333334 192 149.3333333333334H341.3333333333333V0H437.3333333333333C455.04 0 469.3333333333333 14.2933333333334 469.3333333333333 32S455.04 64 437.3333333333333 64z" /> + <glyph glyph-name="seat-legroom-reduced" + unicode="&#xF480;" + horiz-adv-x="512" d=" M426.0266666666667 38.4C429.8666666666666 17.92 414.2933333333333 0 394.6666666666667 0H298.6666666666667V64L320 149.3333333333334H192C156.5866666666667 149.3333333333334 128 177.92 128 213.3333333333334V384H256V256H362.6666666666667C386.1333333333334 256 405.3333333333333 236.8 405.3333333333333 213.3333333333334L362.6666666666667 64H393.3866666666667C408.9600000000001 64 423.04 53.3333333333334 426.0266666666667 38.4M106.6666666666667 192V384H64V192C64 133.12 111.7866666666667 85.3333333333334 170.6666666666667 85.3333333333334H256V128H170.6666666666667C135.2533333333333 128 106.6666666666667 156.5866666666667 106.6666666666667 192z" /> + <glyph glyph-name="seat-recline-extra" + unicode="&#xF481;" + horiz-adv-x="512" d=" M114.1333333333333 327.68C94.9333333333333 341.3333333333334 90.24 367.7866666666667 103.68 387.2C117.3333333333333 406.4 143.7866666666666 411.0933333333334 163.2 397.6533333333334C182.4 384 187.0933333333333 357.5466666666667 173.6533333333333 338.1333333333334C160 318.9333333333334 133.5466666666666 314.24 114.1333333333333 327.68M341.3333333333333 42.6666666666667H190.5066666666667C158.9333333333333 42.6666666666667 132.0533333333333 65.7066666666667 127.36 96.8533333333334L85.3333333333333 298.6666666666667H42.6666666666667L85.3333333333333 90.4533333333334C93.2266666666667 38.4 138.0266666666667 0 190.72 0H341.3333333333333M346.24 128H242.1333333333334L220.16 215.4666666666667C253.8666666666667 196.48 290.1333333333334 182.6133333333334 330.0266666666667 189.44V234.6666666666667C295.2533333333334 228.2666666666667 256.6400000000001 240.64 229.9733333333334 261.5466666666667L194.9866666666667 288.64C190.08 292.48 184.5333333333333 295.04 178.7733333333334 296.7466666666667C171.9466666666667 298.6666666666667 164.6933333333333 299.3066666666667 157.6533333333333 298.0266666666667H157.2266666666667C130.9866666666667 293.3333333333334 113.4933333333334 268.3733333333334 117.9733333333334 242.3466666666667L146.7733333333334 116.0533333333334C152.7466666666667 85.3333333333334 178.9866666666667 64 209.7066666666667 64H355.84L437.3333333333333 0L469.3333333333333 32" /> + <glyph glyph-name="seat-recline-normal" + unicode="&#xF482;" + horiz-adv-x="512" d=" M161.92 332.5866666666667C145.28 349.2266666666667 145.28 376.32 161.92 392.96C178.56 409.6 205.6533333333333 409.6 222.2933333333333 392.96C238.9333333333333 376.32 238.9333333333333 349.2266666666667 222.2933333333333 332.5866666666667C205.44 315.7333333333334 178.56 315.7333333333334 161.92 332.5866666666667M128 106.6666666666667V298.6666666666667H85.3333333333333V106.6666666666667C85.3333333333333 47.7866666666668 133.12 0 192 0H320V42.6666666666667H192C156.5866666666667 42.6666666666667 128 71.2533333333333 128 106.6666666666667M426.6666666666667 19.84L318.5066666666667 128H245.3333333333333V206.5066666666667C275.2 181.9733333333334 322.1333333333334 160 362.6666666666667 160V206.5066666666667C327.2533333333334 206.08 285.6533333333333 225.0666666666667 263.04 250.0266666666667L233.1733333333333 283.0933333333333C229.12 288 224 291.2 218.4533333333333 293.76C212.2666666666667 296.7466666666667 205.2266666666667 298.6666666666667 197.9733333333334 298.6666666666667H197.3333333333334C170.6666666666667 298.6666666666667 149.3333333333333 277.3333333333334 149.3333333333333 250.6666666666667V128C149.3333333333333 92.5866666666667 177.92 64 213.3333333333333 64H321.4933333333334L396.16 -10.6666666666666" /> + <glyph glyph-name="security" + unicode="&#xF483;" + horiz-adv-x="512" d=" M256 192H405.3333333333333C394.0266666666667 104.3200000000001 335.36 26.0266666666666 256 1.7066666666666V192H106.6666666666667V313.6L256 379.9466666666667M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.5733333333333 256 -42.6666666666666C366.08 -15.5733333333333 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="security-network" + unicode="&#xF484;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V99.4133333333334C172.16 125.2266666666667 128 192 128 263.04V348.3733333333334L256 405.3333333333333L384 348.3733333333334V263.04C384 192 339.84 125.2266666666667 277.3333333333333 99.4133333333334V64M256 362.6666666666667L170.6666666666667 326.6133333333334V256H256V362.6666666666667M256 256V128C296.7466666666667 138.0266666666667 341.3333333333333 190.72 341.3333333333333 234.6666666666667V256H256z" /> + <glyph glyph-name="select" + unicode="&#xF485;" + horiz-adv-x="512" d=" M85.3333333333333 384H106.6666666666667V341.3333333333334H64V362.6666666666667C64 374.4 73.6 384 85.3333333333333 384M426.6666666666667 384C438.4 384 448 374.4 448 362.6666666666667V341.3333333333334H405.3333333333333V384H426.6666666666667M320 341.3333333333334V384H362.6666666666667V341.3333333333334H320M234.6666666666667 341.3333333333334V384H277.3333333333333V341.3333333333334H234.6666666666667M149.3333333333333 341.3333333333334V384H192V341.3333333333334H149.3333333333333M448 21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H405.3333333333333V42.6666666666667H448V21.3333333333334M320 0V42.6666666666667H362.6666666666667V0H320M234.6666666666667 0V42.6666666666667H277.3333333333333V0H234.6666666666667M149.3333333333333 0V42.6666666666667H192V0H149.3333333333333M85.3333333333333 0C73.6 0 64 9.6 64 21.3333333333334V42.6666666666667H106.6666666666667V0H85.3333333333333M64 128H106.6666666666667V85.3333333333334H64V128M448 128V85.3333333333334H405.3333333333333V128H448M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H405.3333333333333V213.3333333333334H448M64 298.6666666666667H106.6666666666667V256H64V298.6666666666667M448 298.6666666666667V256H405.3333333333333V298.6666666666667H448z" /> + <glyph glyph-name="select-all" + unicode="&#xF486;" + horiz-adv-x="512" d=" M192 256H320V128H192M149.3333333333333 85.3333333333334H362.6666666666667V298.6666666666667H149.3333333333333M320 341.3333333333334H362.6666666666667V384H320M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 0C428.8 0 448 19.2 448 42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M192 384H149.3333333333333V341.3333333333334H192M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M405.3333333333333 384V341.3333333333334H448C448 364.8 428.8 384 405.3333333333333 384M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M64 256H106.6666666666667V298.6666666666667H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 341.3333333333334H106.6666666666667V384C83.2 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="select-inverse" + unicode="&#xF487;" + horiz-adv-x="512" d=" M106.6666666666667 384H149.3333333333333V341.3333333333334H192V384H234.6666666666667V341.3333333333334H277.3333333333333V384H320V341.3333333333334H362.6666666666667V384H405.3333333333333V341.3333333333334H448V298.6666666666667H405.3333333333333V256H448V213.3333333333334H405.3333333333333V170.6666666666667H448V128H405.3333333333333V85.3333333333334H448V42.6666666666667H405.3333333333333V0H362.6666666666667V42.6666666666667H320V0H277.3333333333333V42.6666666666667H234.6666666666667V0H192V42.6666666666667H149.3333333333333V0H106.6666666666667V42.6666666666667H64V85.3333333333334H106.6666666666667V128H64V170.6666666666667H106.6666666666667V213.3333333333334H64V256H106.6666666666667V298.6666666666667H64V341.3333333333334H106.6666666666667V384z" /> + <glyph glyph-name="select-off" + unicode="&#xF488;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L362.6666666666667 15.5733333333334V0H320V42.6666666666667H335.5733333333333L106.6666666666667 271.5733333333334V256H64V298.6666666666667H79.5733333333333L21.3333333333333 356.9066666666667M426.6666666666667 384C438.4 384 448 374.4 448 362.6666666666667V341.3333333333334H405.3333333333333V384H426.6666666666667M320 341.3333333333334V384H362.6666666666667V341.3333333333334H320M234.6666666666667 341.3333333333334V384H277.3333333333333V341.3333333333334H234.6666666666667M149.3333333333333 341.3333333333334V384H192V341.3333333333334H149.3333333333333M234.6666666666667 0V42.6666666666667H277.3333333333333V0H234.6666666666667M149.3333333333333 0V42.6666666666667H192V0H149.3333333333333M85.3333333333333 0C73.6 0 64 9.6 64 21.3333333333334V42.6666666666667H106.6666666666667V0H85.3333333333333M64 128H106.6666666666667V85.3333333333334H64V128M448 128V85.3333333333334H405.3333333333333V128H448M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H405.3333333333333V213.3333333333334H448M448 298.6666666666667V256H405.3333333333333V298.6666666666667H448z" /> + <glyph glyph-name="selection" + unicode="&#xF489;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667V298.6666666666667H85.3333333333333V362.6666666666667H42.6666666666667M149.3333333333333 362.6666666666667H42.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H149.3333333333333V362.6666666666667M469.3333333333333 362.6666666666667V298.6666666666667H426.6666666666667V362.6666666666667H469.3333333333333M362.6666666666667 362.6666666666667H469.3333333333333C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H362.6666666666667V362.6666666666667M469.3333333333333 21.3333333333334V85.3333333333334H426.6666666666667V21.3333333333334H469.3333333333333M362.6666666666667 21.3333333333334H469.3333333333333C469.3333333333333 -2.3466666666666 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667V21.3333333333334M42.6666666666667 21.3333333333334V85.3333333333334H85.3333333333333V21.3333333333334H42.6666666666667M149.3333333333333 21.3333333333334H42.6666666666667C42.6666666666667 -2.3466666666666 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H149.3333333333333V21.3333333333334M213.3333333333333 405.3333333333333H298.6666666666667V362.6666666666667H213.3333333333333V405.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V-21.3333333333333H213.3333333333333V21.3333333333334M426.6666666666667 234.6666666666667H469.3333333333333V149.3333333333334H426.6666666666667V234.6666666666667M42.6666666666667 234.6666666666667H85.3333333333333V149.3333333333334H42.6666666666667V234.6666666666667z" /> + <glyph glyph-name="send" + unicode="&#xF48A;" + horiz-adv-x="512" d=" M42.6666666666667 0L490.6666666666666 192L42.6666666666667 384V234.6666666666667L362.6666666666667 192L42.6666666666667 149.3333333333334V0z" /> + <glyph glyph-name="serial-port" + unicode="&#xF65C;" + horiz-adv-x="512" d=" M149.3333333333333 384H362.6666666666667V341.3333333333334H405.3333333333333V277.3333333333334H341.3333333333333V149.3333333333334H170.6666666666667V277.3333333333334H106.6666666666667V341.3333333333334H149.3333333333333V384M362.6666666666667 256H405.3333333333333V149.3333333333334H362.6666666666667V256M234.6666666666667 128H277.3333333333333V-21.3333333333333H234.6666666666667V128M106.6666666666667 256H149.3333333333333V149.3333333333334H106.6666666666667V256z" /> + <glyph glyph-name="server" + unicode="&#xF48B;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667H426.6666666666667C438.4 426.6666666666667 448 417.0666666666667 448 405.3333333333333V320C448 308.2666666666667 438.4 298.6666666666667 426.6666666666667 298.6666666666667H85.3333333333333C73.6 298.6666666666667 64 308.2666666666667 64 320V405.3333333333333C64 417.0666666666667 73.6 426.6666666666667 85.3333333333333 426.6666666666667M85.3333333333333 256H426.6666666666667C438.4 256 448 246.4000000000001 448 234.6666666666667V149.3333333333334C448 137.6 438.4 128 426.6666666666667 128H85.3333333333333C73.6 128 64 137.6 64 149.3333333333334V234.6666666666667C64 246.4000000000001 73.6 256 85.3333333333333 256M85.3333333333333 85.3333333333334H426.6666666666667C438.4 85.3333333333334 448 75.7333333333334 448 64V-21.3333333333333C448 -33.0666666666667 438.4 -42.6666666666666 426.6666666666667 -42.6666666666666H85.3333333333333C73.6 -42.6666666666666 64 -33.0666666666667 64 -21.3333333333333V64C64 75.7333333333334 73.6 85.3333333333334 85.3333333333333 85.3333333333334M192 341.3333333333334H213.3333333333333V384H192V341.3333333333334M192 170.6666666666667H213.3333333333333V213.3333333333334H192V170.6666666666667M192 0H213.3333333333333V42.6666666666667H192V0M106.6666666666667 384V341.3333333333334H149.3333333333333V384H106.6666666666667M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M106.6666666666667 42.6666666666667V0H149.3333333333333V42.6666666666667H106.6666666666667z" /> + <glyph glyph-name="server-minus" + unicode="&#xF48C;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M170.6666666666667 106.6666666666667H341.3333333333333V64H170.6666666666667V106.6666666666667z" /> + <glyph glyph-name="server-network" + unicode="&#xF48D;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H85.3333333333333C73.6 106.6666666666667 64 116.2666666666667 64 128V213.3333333333334C64 225.0666666666667 73.6 234.6666666666667 85.3333333333333 234.6666666666667H426.6666666666667C438.4 234.6666666666667 448 225.0666666666667 448 213.3333333333334V128C448 116.2666666666667 438.4 106.6666666666667 426.6666666666667 106.6666666666667H277.3333333333333V64M85.3333333333333 405.3333333333333H426.6666666666667C438.4 405.3333333333333 448 395.7333333333334 448 384V298.6666666666667C448 286.9333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334H85.3333333333333C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667V384C64 395.7333333333334 73.6 405.3333333333333 85.3333333333333 405.3333333333333M192 320H213.3333333333333V362.6666666666667H192V320M192 149.3333333333334H213.3333333333333V192H192V149.3333333333334M106.6666666666667 362.6666666666667V320H149.3333333333333V362.6666666666667H106.6666666666667M106.6666666666667 192V149.3333333333334H149.3333333333333V192H106.6666666666667z" /> + <glyph glyph-name="server-network-off" + unicode="&#xF48E;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H335.5733333333333L277.3333333333333 100.9066666666667V64M469.3333333333333 42.6666666666667V17.4933333333333L444.16 42.6666666666667H469.3333333333333M448 -15.36L420.9066666666667 -42.6666666666666L378.24 0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H85.3333333333333C73.6 106.6666666666667 64 116.2666666666667 64 128V213.3333333333334C64 225.0666666666667 73.6 234.6666666666667 85.3333333333333 234.6666666666667H143.5733333333333L100.9066666666667 277.3333333333334H85.3333333333333C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667V314.24L21.3333333333333 356.9066666666667L48.64 384L448 -15.36M85.3333333333333 405.3333333333333H426.6666666666667C438.4 405.3333333333333 448 395.7333333333334 448 384V298.6666666666667C448 286.9333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334H209.4933333333334L149.3333333333333 337.4933333333334V362.6666666666667H124.16L81.92 405.3333333333333H85.3333333333333M426.6666666666667 234.6666666666667C438.4 234.6666666666667 448 225.0666666666667 448 213.3333333333334V128C448 116.2666666666667 438.4 106.6666666666667 426.6666666666667 106.6666666666667H380.16L252.16 234.6666666666667H426.6666666666667M192 320H213.3333333333333V362.6666666666667H192V320M192 149.3333333333334H213.3333333333333V164.9066666666667L192 186.24V149.3333333333334M106.6666666666667 192V149.3333333333334H149.3333333333333V192H106.6666666666667z" /> + <glyph glyph-name="server-off" + unicode="&#xF48F;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667H426.6666666666667C438.4 426.6666666666667 448 417.0666666666667 448 405.3333333333333V320C448 308.2666666666667 438.4 298.6666666666667 426.6666666666667 298.6666666666667H188.16L145.4933333333334 341.3333333333334H149.3333333333333V384H106.6666666666667V380.16L68.48 418.3466666666667C72.32 423.4666666666667 78.5066666666667 426.6666666666667 85.3333333333333 426.6666666666667M469.3333333333333 -36.6933333333333L442.24 -64L420.9066666666667 -42.6666666666666H85.3333333333333C73.6 -42.6666666666666 64 -33.0666666666667 64 -21.3333333333333V64C64 75.7333333333334 73.6 85.3333333333334 85.3333333333333 85.3333333333334H292.9066666666667L250.24 128H85.3333333333333C73.6 128 64 137.6 64 149.3333333333334V234.6666666666667C64 246.4000000000001 73.6 256 85.3333333333333 256H122.24L78.5066666666667 299.7333333333334C72.1066666666667 301.8666666666667 67.2 306.7733333333333 65.0666666666667 313.1733333333334L21.3333333333333 356.9066666666667L48.64 384L469.3333333333333 -36.6933333333333M426.6666666666667 256C438.4 256 448 246.4000000000001 448 234.6666666666667V149.3333333333334C448 137.6 438.4 128 426.6666666666667 128H358.8266666666667L230.8266666666667 256H426.6666666666667M426.6666666666667 85.3333333333334C438.4 85.3333333333334 448 75.7333333333334 448 64V38.8266666666667L401.4933333333334 85.3333333333334H426.6666666666667M192 341.3333333333334H213.3333333333333V384H192V341.3333333333334M192 170.6666666666667H207.5733333333333L192 186.24V170.6666666666667M192 0H213.3333333333333V42.6666666666667H192V0M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M106.6666666666667 42.6666666666667V0H149.3333333333333V42.6666666666667H106.6666666666667z" /> + <glyph glyph-name="server-plus" + unicode="&#xF490;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M170.6666666666667 106.6666666666667H234.6666666666667V170.6666666666667H277.3333333333333V106.6666666666667H341.3333333333333V64H277.3333333333333V0H234.6666666666667V64H170.6666666666667V106.6666666666667z" /> + <glyph glyph-name="server-remove" + unicode="&#xF491;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M225.92 85.3333333333334L170.6666666666667 140.5866666666667L200.7466666666667 170.6666666666667L256 115.4133333333334L311.2533333333334 170.6666666666667L341.3333333333333 140.5866666666667L286.08 85.3333333333334L341.3333333333333 30.08L311.2533333333334 0L256 55.2533333333333L200.7466666666667 0L170.6666666666667 30.08L225.92 85.3333333333334z" /> + <glyph glyph-name="server-security" + unicode="&#xF492;" + horiz-adv-x="512" d=" M64 426.6666666666667H405.3333333333333C417.0666666666667 426.6666666666667 426.6666666666667 417.0666666666667 426.6666666666667 405.3333333333333V320C426.6666666666667 308.2666666666667 417.0666666666667 298.6666666666667 405.3333333333333 298.6666666666667H64C52.2666666666667 298.6666666666667 42.6666666666667 308.2666666666667 42.6666666666667 320V405.3333333333333C42.6666666666667 417.0666666666667 52.2666666666667 426.6666666666667 64 426.6666666666667M64 256H405.3333333333333C417.0666666666667 256 426.6666666666667 246.4000000000001 426.6666666666667 234.6666666666667V220.3733333333333L373.3333333333333 244.0533333333334L234.6666666666667 182.6133333333334V128H64C52.2666666666667 128 42.6666666666667 137.6 42.6666666666667 149.3333333333334V234.6666666666667C42.6666666666667 246.4000000000001 52.2666666666667 256 64 256M64 85.3333333333334H234.6666666666667C235.9466666666667 37.3333333333334 256 -8.5333333333333 287.1466666666667 -42.6666666666666H64C52.2666666666667 -42.6666666666666 42.6666666666667 -33.0666666666667 42.6666666666667 -21.3333333333333V64C42.6666666666667 75.7333333333334 52.2666666666667 85.3333333333334 64 85.3333333333334M170.6666666666667 341.3333333333334H192V384H170.6666666666667V341.3333333333334M170.6666666666667 170.6666666666667H192V213.3333333333334H170.6666666666667V170.6666666666667M170.6666666666667 0H192V42.6666666666667H170.6666666666667V0M85.3333333333333 384V341.3333333333334H128V384H85.3333333333333M85.3333333333333 213.3333333333334V170.6666666666667H128V213.3333333333334H85.3333333333333M85.3333333333333 42.6666666666667V0H128V42.6666666666667H85.3333333333333M373.3333333333333 192L469.3333333333333 149.3333333333334V85.3333333333334C469.3333333333333 26.0266666666666 428.3733333333333 -29.2266666666667 373.3333333333333 -42.6666666666666C318.2933333333333 -29.2266666666667 277.3333333333333 26.0266666666666 277.3333333333333 85.3333333333334V149.3333333333334L373.3333333333333 192M373.3333333333333 150.6133333333334L320 126.72V69.9733333333334C320 37.1200000000001 342.8266666666667 6.4 373.3333333333333 -1.28V150.6133333333334z" /> + <glyph glyph-name="settings" + unicode="&#xF493;" + horiz-adv-x="512" d=" M256 117.3333333333334C214.8266666666667 117.3333333333334 181.3333333333333 150.8266666666667 181.3333333333333 192S214.8266666666667 266.6666666666667 256 266.6666666666667S330.6666666666667 233.1733333333334 330.6666666666667 192S297.1733333333333 117.3333333333334 256 117.3333333333334M414.5066666666667 171.3066666666667C415.36 178.1333333333333 416 184.96 416 192C416 199.04 415.36 206.08 414.5066666666667 213.3333333333334L459.52 248.1066666666667C463.5733333333333 251.3066666666667 464.6399999999999 257.0666666666667 462.08 261.76L419.4133333333333 335.5733333333333C416.8533333333333 340.2666666666667 411.0933333333333 342.1866666666667 406.4 340.2666666666667L353.2800000000001 318.9333333333334C342.1866666666667 327.2533333333334 330.6666666666667 334.5066666666667 317.2266666666667 339.8400000000001L309.3333333333334 396.3733333333334C308.4800000000001 401.4933333333334 304.0000000000001 405.3333333333333 298.6666666666668 405.3333333333333H213.3333333333334C208.0000000000001 405.3333333333333 203.5200000000001 401.4933333333334 202.6666666666668 396.3733333333334L194.7733333333334 339.8400000000001C181.3333333333334 334.5066666666667 169.8133333333334 327.2533333333334 158.7200000000001 318.9333333333334L105.6000000000001 340.2666666666667C100.9066666666668 342.1866666666667 95.1466666666668 340.2666666666667 92.5866666666668 335.5733333333333L49.9200000000001 261.76C47.1466666666668 257.0666666666667 48.4266666666668 251.3066666666667 52.4800000000001 248.1066666666667L97.4933333333333 213.3333333333334C96.64 206.08 96 199.04 96 192C96 184.96 96.64 178.1333333333333 97.4933333333333 171.3066666666667L52.48 135.8933333333333C48.4266666666667 132.6933333333333 47.1466666666667 126.9333333333333 49.92 122.24L92.5866666666667 48.4266666666667C95.1466666666667 43.7333333333334 100.9066666666667 42.0266666666666 105.6 43.7333333333334L158.72 65.2800000000001C169.8133333333333 56.7466666666668 181.3333333333333 49.4933333333335 194.7733333333334 44.1600000000001L202.6666666666667 -12.3733333333332C203.52 -17.4933333333332 208 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C304 -21.3333333333333 308.48 -17.4933333333332 309.3333333333333 -12.3733333333332L317.2266666666667 44.1600000000001C330.6666666666667 49.7066666666668 342.1866666666666 56.7466666666668 353.28 65.2800000000001L406.3999999999999 43.7333333333334C411.0933333333333 42.0266666666668 416.8533333333333 43.7333333333334 419.4133333333333 48.4266666666667L462.0799999999999 122.24C464.6399999999999 126.9333333333334 463.5733333333333 132.6933333333334 459.5199999999999 135.8933333333334L414.5066666666666 171.3066666666667z" /> + <glyph glyph-name="settings-box" + unicode="&#xF494;" + horiz-adv-x="512" d=" M368 192C368 187.0933333333334 367.5733333333333 182.1866666666667 366.9333333333333 177.4933333333334L398.5066666666667 152.7466666666667C401.28 150.4 402.1333333333334 146.5600000000001 400.2133333333333 143.1466666666667L370.3466666666667 91.52C368.4266666666666 88.3200000000001 364.5866666666667 87.04 361.1733333333333 88.3200000000001L324.0533333333333 103.2533333333333C316.3733333333334 97.28 307.84 92.3733333333333 298.6666666666667 88.5333333333333L293.3333333333333 49.0666666666666C292.6933333333334 45.4399999999999 289.4933333333334 42.6666666666666 285.8666666666667 42.6666666666666H226.1333333333334C222.5066666666667 42.6666666666666 219.3066666666667 45.4399999999999 218.6666666666667 49.0666666666666L213.3333333333333 88.5333333333333C203.9466666666667 92.3733333333333 195.6266666666667 97.28 187.9466666666667 103.2533333333333L150.8266666666667 88.3200000000001C147.4133333333333 87.0400000000001 143.5733333333333 88.3200000000001 141.6533333333333 91.52L111.7866666666667 143.1466666666667C109.8666666666667 146.56 110.72 150.4 113.4933333333334 152.7466666666667L145.0666666666667 177.4933333333334C144.4266666666667 182.1866666666667 144 187.0933333333333 144 192C144 196.9066666666667 144.4266666666667 201.8133333333333 145.0666666666667 206.5066666666666L113.4933333333334 231.2533333333333C110.72 233.6 109.8666666666667 237.6533333333333 111.7866666666667 240.8533333333333L141.6533333333333 292.48C143.5733333333333 295.8933333333333 147.4133333333333 297.1733333333333 150.8266666666667 295.8933333333333L187.9466666666667 280.7466666666666C195.6266666666667 286.72 203.9466666666667 291.84 213.3333333333333 295.4666666666667L218.6666666666667 335.1466666666667C219.3066666666667 338.56 222.5066666666667 341.3333333333333 226.1333333333334 341.3333333333333H285.8666666666666C289.4933333333333 341.3333333333333 292.6933333333333 338.56 293.3333333333333 335.1466666666667L298.6666666666667 295.4666666666667C307.84 291.8400000000001 316.3733333333334 286.7200000000001 324.0533333333333 280.7466666666667L361.1733333333333 295.8933333333333C364.5866666666667 297.1733333333334 368.4266666666666 295.8933333333333 370.3466666666667 292.48L400.2133333333333 240.8533333333333C402.1333333333333 237.6533333333333 401.28 233.6 398.5066666666667 231.2533333333334L366.9333333333333 206.5066666666667C367.5733333333333 201.8133333333333 368 196.9066666666667 368 192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M256 234.6666666666667C232.32 234.6666666666667 213.3333333333333 215.68 213.3333333333333 192C213.3333333333333 168.5333333333334 232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192C298.6666666666667 215.68 279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="shape-circle-plus" + unicode="&#xF65D;" + horiz-adv-x="512" d=" M234.6666666666667 42.6666666666667C305.28 42.6666666666667 362.6666666666667 100.0533333333334 362.6666666666667 170.6666666666667H405.3333333333333C405.3333333333333 76.3733333333333 328.96 0 234.6666666666667 0S64 76.3733333333333 64 170.6666666666667S140.3733333333333 341.3333333333334 234.6666666666667 341.3333333333334V298.6666666666667C164.0533333333333 298.6666666666667 106.6666666666667 241.2800000000001 106.6666666666667 170.6666666666667S164.0533333333333 42.6666666666667 234.6666666666667 42.6666666666667M405.3333333333333 341.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334z" /> + <glyph glyph-name="shape-plus" + unicode="&#xF495;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V213.3333333333334H42.6666666666667V405.3333333333333M373.3333333333333 405.3333333333333C426.6666666666667 405.3333333333333 469.3333333333333 362.6666666666667 469.3333333333333 309.3333333333334S426.6666666666667 213.3333333333334 373.3333333333333 213.3333333333334S277.3333333333333 256 277.3333333333333 309.3333333333334S320 405.3333333333333 373.3333333333333 405.3333333333333M138.6666666666667 149.3333333333334L234.6666666666667 -21.3333333333333H42.6666666666667L138.6666666666667 149.3333333333334M405.3333333333333 85.3333333333334H469.3333333333333V42.6666666666667H405.3333333333333V-21.3333333333333H362.6666666666667V42.6666666666667H298.6666666666667V85.3333333333334H362.6666666666667V149.3333333333334H405.3333333333333V85.3333333333334z" /> + <glyph glyph-name="shape-polygon-plus" + unicode="&#xF65E;" + horiz-adv-x="512" d=" M362.6666666666667 113.0666666666667V170.6666666666667H405.3333333333333V85.3333333333334L213.3333333333333 0L64 149.3333333333334L149.3333333333333 341.3333333333334H234.6666666666667V298.6666666666667H177.0666666666667L115.2 157.8666666666667L221.8666666666667 51.2L362.6666666666667 113.0666666666667M469.3333333333333 341.3333333333334V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334H469.3333333333333z" /> + <glyph glyph-name="shape-rectangle-plus" + unicode="&#xF65F;" + horiz-adv-x="512" d=" M405.3333333333333 320H469.3333333333333V277.3333333333334H405.3333333333333V213.3333333333334H362.6666666666667V277.3333333333334H298.6666666666667V320H362.6666666666667V384H405.3333333333333V320M362.6666666666667 85.3333333333334V149.3333333333334H405.3333333333333V42.6666666666667H64V320H234.6666666666667V277.3333333333334H106.6666666666667V85.3333333333334H362.6666666666667z" /> + <glyph glyph-name="shape-square-plus" + unicode="&#xF660;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334M362.6666666666667 42.6666666666667V170.6666666666667H405.3333333333333V0H64V341.3333333333334H234.6666666666667V298.6666666666667H106.6666666666667V42.6666666666667H362.6666666666667z" /> + <glyph glyph-name="share" + unicode="&#xF496;" + horiz-adv-x="512" d=" M448 213.3333333333334L298.6666666666667 362.6666666666667V277.3333333333334C149.3333333333333 256 85.3333333333333 149.3333333333334 64 42.6666666666667C117.3333333333333 117.3333333333334 192 151.4666666666667 298.6666666666667 151.4666666666667V64L448 213.3333333333334z" /> + <glyph glyph-name="share-variant" + unicode="&#xF497;" + horiz-adv-x="512" d=" M384 104.96C367.7866666666667 104.96 353.28 98.5600000000001 342.1866666666666 88.5333333333334L190.08 177.0666666666667C191.1466666666667 181.9733333333334 192 186.8800000000001 192 192C192 197.12 191.1466666666667 202.0266666666667 190.08 206.9333333333333L340.48 294.6133333333334C352 283.9466666666667 367.1466666666667 277.3333333333334 384 277.3333333333334C419.4133333333333 277.3333333333334 448 305.92 448 341.3333333333334S419.4133333333333 405.3333333333333 384 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 336.2133333333334 320.8533333333333 331.3066666666667 321.92 326.4L171.52 238.72C160 249.3866666666667 144.8533333333333 256 128 256C92.5866666666667 256 64 227.4133333333334 64 192S92.5866666666667 128 128 128C144.8533333333333 128 160 134.6133333333334 171.52 145.28L323.4133333333333 56.7466666666667C322.3466666666667 52.2666666666667 321.7066666666667 47.5733333333334 321.7066666666667 42.6666666666667C321.7066666666667 8.3200000000001 349.6533333333333 -19.4133333333333 384 -19.4133333333333C418.3466666666667 -19.4133333333333 446.2933333333334 8.3200000000001 446.2933333333334 42.6666666666667S418.3466666666667 104.96 384 104.96z" /> + <glyph glyph-name="shield" + unicode="&#xF498;" + horiz-adv-x="512" d=" M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.7866666666667 256 -42.6666666666666C366.08 -15.7866666666666 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="shield-outline" + unicode="&#xF499;" + horiz-adv-x="512" d=" M448 213.3333333333334C448 94.9333333333333 366.08 -15.7866666666667 256 -42.6666666666666C145.92 -15.7866666666666 64 94.9333333333333 64 213.3333333333334V341.3333333333334L256 426.6666666666667L448 341.3333333333334V213.3333333333334M256 0C336 21.3333333333334 405.3333333333333 116.48 405.3333333333333 208.64V313.6L256 380.1600000000001L106.6666666666667 313.6V208.6400000000001C106.6666666666667 116.48 176 21.3333333333334 256 0z" /> + <glyph glyph-name="shopping" + unicode="&#xF49A;" + horiz-adv-x="512" d=" M256 170.6666666666667C197.12 170.6666666666667 149.3333333333333 218.4533333333334 149.3333333333333 277.3333333333334H192C192 241.92 220.5866666666667 213.3333333333334 256 213.3333333333334S320 241.92 320 277.3333333333334H362.6666666666667C362.6666666666667 218.4533333333334 314.88 170.6666666666667 256 170.6666666666667M256 384C291.4133333333333 384 320 355.4133333333334 320 320H192C192 355.4133333333334 220.5866666666667 384 256 384M405.3333333333333 320H362.6666666666667C362.6666666666667 378.88 314.88 426.6666666666667 256 426.6666666666667S149.3333333333333 378.88 149.3333333333333 320H106.6666666666667C82.9866666666667 320 64 301.0133333333333 64 277.3333333333334V21.3333333333334C64 -2.1333333333333 83.2 -21.3333333333333 106.6666666666667 -21.3333333333333H405.3333333333333C428.8 -21.3333333333333 448 -2.1333333333333 448 21.3333333333334V277.3333333333334C448 301.0133333333333 428.8 320 405.3333333333333 320z" /> + <glyph glyph-name="shopping-music" + unicode="&#xF49B;" + horiz-adv-x="512" d=" M256 384C220.5866666666667 384 192 355.4133333333334 192 320H320C320 355.4133333333334 291.4133333333333 384 256 384M405.3333333333333 320C428.8 320 448 300.8 448 277.3333333333334V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C82.9866666666667 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V277.3333333333334C64 301.0133333333333 82.9866666666667 320 106.6666666666667 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320H405.3333333333333M192 42.6666666666667L352 149.3333333333334L192 234.6666666666667V42.6666666666667z" /> + <glyph glyph-name="shredder" + unicode="&#xF49C;" + horiz-adv-x="512" d=" M128 384V298.6666666666667H170.6666666666667V341.3333333333334H341.3333333333333V298.6666666666667H384V384H128M106.6666666666667 277.3333333333334C71.2533333333333 277.3333333333334 42.6666666666667 248.7466666666667 42.6666666666667 213.3333333333334V85.3333333333334H106.6666666666667V149.3333333333334H405.3333333333333V85.3333333333334H469.3333333333333V213.3333333333334C469.3333333333333 248.7466666666667 440.7466666666667 277.3333333333334 405.3333333333333 277.3333333333334H106.6666666666667M384 234.6666666666667C395.7333333333334 234.6666666666667 405.3333333333333 225.0666666666667 405.3333333333333 213.3333333333334S395.7333333333334 192 384 192S362.6666666666667 201.6 362.6666666666667 213.3333333333334S372.2666666666667 234.6666666666667 384 234.6666666666667M149.3333333333333 106.6666666666667V0H192V106.6666666666667H149.3333333333333M234.6666666666667 106.6666666666667V21.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667M320 106.6666666666667V0H362.6666666666667V106.6666666666667H320z" /> + <glyph glyph-name="shuffle" + unicode="&#xF49D;" + horiz-adv-x="512" d=" M316.3733333333334 161.92L286.2933333333333 131.84L353.0666666666667 65.0666666666667L309.3333333333333 21.3333333333334H426.6666666666667V138.6666666666667L383.1466666666667 95.1466666666667L316.3733333333334 161.92M309.3333333333333 362.6666666666667L352.8533333333333 319.1466666666667L85.3333333333333 51.4133333333334L115.4133333333333 21.3333333333334L383.1466666666667 288.8533333333334L426.6666666666667 245.3333333333334V362.6666666666667M225.92 252.3733333333334L115.4133333333333 362.6666666666667L85.3333333333333 332.5866666666667L195.6266666666667 222.2933333333334L225.92 252.3733333333334z" /> + <glyph glyph-name="shuffle-disabled" + unicode="&#xF49E;" + horiz-adv-x="512" d=" M341.3333333333333 352V298.6666666666667H106.6666666666667V256H341.3333333333333V202.6666666666667L416 277.3333333333334M341.3333333333333 181.3333333333334V128H106.6666666666667V85.3333333333334H341.3333333333333V32L416 106.6666666666667" /> + <glyph glyph-name="shuffle-variant" + unicode="&#xF49F;" + horiz-adv-x="512" d=" M362.6666666666667 384L474.6666666666666 288L362.6666666666667 192L474.6666666666666 96L362.6666666666667 0V64H304.2133333333333L244.0533333333333 124.16L289.28 169.3866666666667L330.6666666666667 128H362.6666666666667V256H330.6666666666667L138.6666666666667 64H42.6666666666667V128H112.2133333333333L304.2133333333333 320H362.6666666666667V384M42.6666666666667 320H138.6666666666667L198.8266666666667 259.8400000000001L153.6 214.6133333333333L112.2133333333333 256H42.6666666666667V320z" /> + <glyph glyph-name="sigma" + unicode="&#xF4A0;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667H384V256H362.6666666666667L341.3333333333333 320H214.6133333333333L291.2 210.56L203.52 85.3333333333334H341.3333333333333L362.6666666666667 128H384V21.3333333333334H106.6666666666667L226.1333333333334 192L106.6666666666667 362.6666666666667z" /> + <glyph glyph-name="sigma-lower" + unicode="&#xF62B;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 97.7066666666667 333.6533333333333 21.3333333333334 245.3333333333333 21.3333333333334C157.0133333333333 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S157.0133333333333 362.6666666666667 245.3333333333333 362.6666666666667H426.6666666666667V320H351.1466666666667C384 288.64 405.3333333333333 242.9866666666667 405.3333333333333 192M245.3333333333333 320C180.48 320 128 262.6133333333334 128 192S180.48 64 245.3333333333333 64S362.6666666666667 121.3866666666667 362.6666666666667 192S310.1866666666666 320 245.3333333333333 320z" /> + <glyph glyph-name="sign-caution" + unicode="&#xF4A1;" + horiz-adv-x="512" d=" M42.6666666666667 384H469.3333333333333V170.6666666666667H384V0H341.3333333333333V170.6666666666667H170.6666666666667V0H128V170.6666666666667H42.6666666666667V384M404.6933333333333 213.3333333333334L426.6666666666667 235.3066666666667V295.4666666666667L344.5333333333333 213.3333333333334H404.6933333333333M284.16 213.3333333333334L412.16 341.3333333333334H352L224 213.3333333333334H284.16M163.4133333333333 213.3333333333334L291.4133333333333 341.3333333333334H231.04L103.04 213.3333333333334H163.4133333333333M110.5066666666667 341.3333333333334L85.3333333333333 316.1600000000001V256L170.6666666666667 341.3333333333334H110.5066666666667z" /> + <glyph glyph-name="signal" + unicode="&#xF4A2;" + horiz-adv-x="512" d=" M64 0H128V64H64M170.6666666666667 0H234.6666666666667V149.3333333333334H170.6666666666667M277.3333333333333 0H341.3333333333333V256H277.3333333333333M384 0H448V384H384V0z" /> + <glyph glyph-name="signal-variant" + unicode="&#xF60A;" + horiz-adv-x="512" d=" M85.3333333333333 320V362.6666666666667H87.4666666666667C275.2 362.6666666666667 426.6666666666667 211.2 426.6666666666667 23.4666666666667V21.3333333333334H384V23.4666666666667C384 187.7333333333334 251.7333333333334 320 85.3333333333333 320M85.3333333333333 234.6666666666667V277.3333333333334C226.7733333333333 277.3333333333334 341.3333333333333 162.7733333333333 341.3333333333333 21.3333333333334H298.6666666666667C298.6666666666667 139.0933333333334 203.0933333333333 234.6666666666667 85.3333333333333 234.6666666666667M85.3333333333333 149.3333333333334V192C179.6266666666667 192 256 115.6266666666667 256 21.3333333333334H213.3333333333333C213.3333333333333 91.9466666666667 155.9466666666667 149.3333333333334 85.3333333333333 149.3333333333334M85.3333333333333 106.6666666666667C132.48 106.6666666666667 170.6666666666667 68.48 170.6666666666667 21.3333333333334H85.3333333333333V106.6666666666667z" /> + <glyph glyph-name="silverware" + unicode="&#xF4A3;" + horiz-adv-x="512" d=" M172.8 163.4133333333334L83.4133333333333 252.5866666666667C50.1333333333333 286.0800000000001 50.1333333333333 340.0533333333334 83.4133333333333 373.3333333333334L233.1733333333333 224L172.8 163.4133333333334M317.44 202.0266666666667L286.08 170.6666666666667L432.8533333333333 23.8933333333334L402.7733333333333 -6.1866666666666L256 140.5866666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L287.36 232.1066666666667C272.2133333333333 264.7466666666667 282.88 310.6133333333334 316.8 344.5333333333334C357.5466666666666 385.4933333333334 416 393.1733333333334 447.1466666666666 362.0266666666667C478.5066666666665 330.6666666666667 470.8266666666666 272.2133333333334 429.8666666666666 231.4666666666667C395.9466666666666 197.5466666666667 350.08 186.8800000000001 317.44 202.0266666666667z" /> + <glyph glyph-name="silverware-fork" + unicode="&#xF4A4;" + horiz-adv-x="512" d=" M109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L285.0133333333333 229.9733333333334L280.7466666666667 234.6666666666667C264.1066666666667 251.0933333333334 264.1066666666667 277.9733333333334 280.7466666666667 294.6133333333334L373.3333333333333 387.8400000000001L393.1733333333333 368.2133333333334L324.0533333333333 298.6666666666667L344.5333333333333 278.6133333333334L413.6533333333333 347.9466666666667L433.2800000000001 328.3200000000001L363.9466666666667 259.2000000000001L384.0000000000001 238.7200000000001L453.5466666666667 308.0533333333334L473.1733333333335 288.0000000000001L379.9466666666668 195.4133333333334C363.3066666666668 178.7733333333334 336.4266666666668 178.7733333333334 320.0000000000001 195.4133333333334L315.3066666666668 199.68L109.2266666666668 -6.1866666666666z" /> + <glyph glyph-name="silverware-spoon" + unicode="&#xF4A5;" + horiz-adv-x="512" d=" M317.44 202.0266666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L287.36 232.1066666666667C272.2133333333334 264.7466666666667 282.88 310.6133333333334 316.8 344.5333333333334C357.5466666666667 385.4933333333334 416 393.1733333333334 447.1466666666667 362.0266666666667C478.5066666666667 330.6666666666667 470.8266666666667 272.2133333333334 429.8666666666667 231.4666666666667C395.9466666666667 197.5466666666667 350.0800000000001 186.8800000000001 317.4400000000001 202.0266666666667z" /> + <glyph glyph-name="silverware-variant" + unicode="&#xF4A6;" + horiz-adv-x="512" d=" M172.8 163.4133333333334L83.4133333333333 252.5866666666667C50.1333333333333 286.0800000000001 50.1333333333333 340.0533333333334 83.4133333333333 373.3333333333334L233.1733333333333 224L172.8 163.4133333333334M286.08 170.6666666666667L432.8533333333333 23.8933333333334L402.7733333333333 -6.1866666666666L256 140.5866666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L285.0133333333333 229.9733333333334L280.7466666666667 234.6666666666667C264.1066666666667 251.0933333333334 264.1066666666667 277.9733333333334 280.7466666666667 294.6133333333334L373.3333333333333 387.8400000000001L393.1733333333333 368.2133333333334L324.0533333333333 298.6666666666667L344.5333333333333 278.6133333333334L413.6533333333333 347.9466666666667L433.2800000000001 328.3200000000001L363.9466666666667 259.2000000000001L384.0000000000001 238.7200000000001L453.5466666666667 308.0533333333334L473.1733333333335 288.0000000000001L379.9466666666668 195.4133333333334C363.3066666666668 178.7733333333334 336.4266666666668 178.7733333333334 320.0000000000001 195.4133333333334L315.3066666666668 199.68L286.08 170.6666666666667z" /> + <glyph glyph-name="sim" + unicode="&#xF4A7;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.68 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667M192 42.6666666666667H149.3333333333333V85.3333333333334H192V42.6666666666667M362.6666666666667 42.6666666666667H320V85.3333333333334H362.6666666666667V42.6666666666667M192 128H149.3333333333333V213.3333333333334H192V128M277.3333333333333 42.6666666666667H234.6666666666667V128H277.3333333333333V42.6666666666667M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V170.6666666666667M362.6666666666667 128H320V213.3333333333334H362.6666666666667V128z" /> + <glyph glyph-name="sim-alert" + unicode="&#xF4A8;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V277.3333333333334H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V128H277.3333333333333M384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="sim-off" + unicode="&#xF4A9;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334C405.3333333333333 364.8 386.1333333333334 384 362.6666666666667 384H213.3333333333333L163.4133333333333 334.0800000000001L405.3333333333333 92.16V341.3333333333334M77.8666666666667 365.2266666666667L50.7733333333333 338.1333333333334L106.6666666666667 282.24V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0H362.6666666666667C370.3466666666667 0 377.1733333333333 2.1333333333334 383.36 5.5466666666667L423.4666666666666 -34.5599999999999L450.5599999999999 -7.4666666666666L77.8666666666667 365.2266666666667z" /> + <glyph glyph-name="sitemap" + unicode="&#xF4AA;" + horiz-adv-x="512" d=" M192 405.3333333333333V277.3333333333334H234.6666666666667V213.3333333333334H106.6666666666667C82.9866666666667 213.3333333333334 64 194.3466666666667 64 170.6666666666667V106.6666666666667H21.3333333333333V-21.3333333333333H149.3333333333333V106.6666666666667H106.6666666666667V170.6666666666667H234.6666666666667V106.6666666666667H192V-21.3333333333333H320V106.6666666666667H277.3333333333333V170.6666666666667H405.3333333333333V106.6666666666667H362.6666666666667V-21.3333333333333H490.6666666666666V106.6666666666667H448V170.6666666666667C448 194.3466666666667 429.0133333333333 213.3333333333334 405.3333333333333 213.3333333333334H277.3333333333333V277.3333333333334H320V405.3333333333333H192z" /> + <glyph glyph-name="skip-backward" + unicode="&#xF4AB;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334V42.6666666666667L277.3333333333333 192M128 341.3333333333334V42.6666666666667H85.3333333333333V341.3333333333334M277.3333333333333 341.3333333333334V42.6666666666667L128 192" /> + <glyph glyph-name="skip-forward" + unicode="&#xF4AC;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V42.6666666666667L234.6666666666667 192M384 341.3333333333334V42.6666666666667H426.6666666666667V341.3333333333334M234.6666666666667 341.3333333333334V42.6666666666667L384 192" /> + <glyph glyph-name="skip-next" + unicode="&#xF4AD;" + horiz-adv-x="512" d=" M341.3333333333333 64H384V320H341.3333333333333M128 64L309.3333333333333 192L128 320V64z" /> + <glyph glyph-name="skip-next-circle" + unicode="&#xF661;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M170.6666666666667 277.3333333333334L277.3333333333333 192L170.6666666666667 106.6666666666667M298.6666666666667 277.3333333333334H341.3333333333333V106.6666666666667H298.6666666666667" /> + <glyph glyph-name="skip-next-circle-outline" + unicode="&#xF662;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.08 362.6666666666667 426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334S85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667M170.6666666666667 277.3333333333334V106.6666666666667L277.3333333333333 192M298.6666666666667 277.3333333333334V106.6666666666667H341.3333333333333V277.3333333333334" /> + <glyph glyph-name="skip-previous" + unicode="&#xF4AE;" + horiz-adv-x="512" d=" M128 64V320H170.6666666666667V64H128M202.6666666666667 192L384 320V64L202.6666666666667 192z" /> + <glyph glyph-name="skip-previous-circle" + unicode="&#xF663;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M170.6666666666667 277.3333333333334H213.3333333333333V106.6666666666667H170.6666666666667M341.3333333333333 277.3333333333334V106.6666666666667L234.6666666666667 192" /> + <glyph glyph-name="skip-previous-circle-outline" + unicode="&#xF664;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.92 362.6666666666667 85.3333333333333 286.0800000000001 85.3333333333333 192S161.92 21.3333333333334 256 21.3333333333334S426.6666666666667 97.92 426.6666666666667 192S350.08 362.6666666666667 256 362.6666666666667M341.3333333333333 277.3333333333334V106.6666666666667L234.6666666666667 192M213.3333333333333 277.3333333333334V106.6666666666667H170.6666666666667V277.3333333333334" /> + <glyph glyph-name="skype" + unicode="&#xF4AF;" + horiz-adv-x="512" d=" M384 320C428.16 276.48 444.8 215.68 434.3466666666667 158.9333333333333C443.0933333333333 143.5733333333333 448 125.6533333333333 448 106.6666666666667C448 47.7866666666668 400.2133333333333 0 341.3333333333333 0C322.3466666666667 0 304.4266666666666 4.9066666666667 289.0666666666667 13.6533333333334C232.32 3.2 171.52 19.84 128 64C83.84 107.52 67.2 168.3200000000001 77.6533333333334 225.0666666666667C68.9066666666667 240.4266666666667 64 258.3466666666667 64 277.3333333333334C64 336.2133333333334 111.7866666666667 384 170.6666666666667 384C189.6533333333333 384 207.5733333333333 379.0933333333334 222.9333333333333 370.3466666666667C279.68 380.8 340.48 364.16 384 320M256.8533333333333 81.92C318.08 81.92 348.5866666666667 111.36 348.5866666666667 151.04C348.5866666666667 176.4266666666667 336.64 203.52 290.3466666666667 213.9733333333334L247.8933333333333 223.36C231.68 226.9866666666667 213.3333333333333 231.8933333333334 213.3333333333333 247.04C213.3333333333333 262.4000000000001 226.1333333333334 273.0666666666667 249.6 273.0666666666667C297.1733333333333 273.0666666666667 292.6933333333333 240.4266666666667 316.3733333333333 240.4266666666667C328.7466666666666 240.4266666666667 339.4133333333333 247.6800000000001 339.4133333333333 260.2666666666667C339.4133333333333 289.4933333333334 292.6933333333333 311.4666666666667 253.0133333333333 311.4666666666667C210.1333333333333 311.4666666666667 164.2666666666667 293.12 164.2666666666667 244.48C164.2666666666667 221.0133333333334 172.5866666666667 196.0533333333334 218.6666666666667 184.5333333333334L276.0533333333333 170.0266666666667C293.3333333333333 165.7600000000001 297.6 156.16 297.6 147.2000000000001C297.6 132.6933333333334 283.0933333333333 118.4 256.8533333333333 118.4C205.44 118.4 212.48 157.8666666666667 184.96 157.8666666666667C172.5866666666666 157.8666666666667 163.6266666666666 149.3333333333334 163.6266666666666 137.1733333333334C163.6266666666666 113.4933333333334 192 81.92 256.8533333333333 81.92z" /> + <glyph glyph-name="skype-business" + unicode="&#xF4B0;" + horiz-adv-x="512" d=" M256.64 95.36C199.8933333333333 95.36 174.5066666666667 123.3066666666667 174.5066666666667 144.2133333333333C174.5066666666667 154.88 182.4 162.56 193.28 162.56C217.6 162.56 211.4133333333333 128 256.64 128C279.8933333333333 128 292.9066666666667 140.16 292.9066666666667 153.1733333333333C292.9066666666667 160.8533333333333 289.0666666666667 169.3866666666666 273.7066666666667 173.2266666666666L223.1466666666667 185.8133333333333C182.4 196.0533333333333 174.9333333333333 218.0266666666666 174.9333333333333 238.7199999999999C174.9333333333333 281.8133333333333 215.4666666666667 298.0266666666666 253.44 298.0266666666666C288 298.0266666666666 329.8133333333334 278.6133333333333 329.8133333333334 252.7999999999999C329.8133333333334 241.7066666666666 320 235.3066666666666 309.3333333333333 235.3066666666666C288 235.3066666666666 292.2666666666667 264.1066666666666 250.4533333333333 264.1066666666666C229.76 264.1066666666666 218.24 254.7199999999999 218.24 241.2799999999999C218.24 227.8399999999999 234.6666666666667 223.9999999999999 248.7466666666667 220.1599999999999L286.2933333333333 211.8399999999999C327.2533333333334 202.6666666666665 337.7066666666667 178.7733333333332 337.7066666666667 156.3733333333332C337.7066666666667 121.3866666666666 310.8266666666667 95.3599999999998 256.64 95.3599999999998M384 320C428.16 276.48 444.8 215.68 434.3466666666667 158.9333333333333C443.0933333333333 143.5733333333333 448 125.6533333333333 448 106.6666666666667C448 47.7866666666668 400.2133333333333 0 341.3333333333333 0C322.3466666666667 0 304.4266666666666 4.9066666666667 289.0666666666667 13.6533333333334C232.32 3.2 171.52 19.84 128 64C83.84 107.52 67.2 168.3200000000001 77.6533333333334 225.0666666666667C68.9066666666667 240.4266666666667 64 258.3466666666667 64 277.3333333333334C64 336.2133333333334 111.7866666666667 384 170.6666666666667 384C189.6533333333333 384 207.5733333333333 379.0933333333334 222.9333333333333 370.3466666666667C279.68 380.8 340.48 364.16 384 320M170.6666666666667 341.3333333333334C135.2533333333333 341.3333333333334 106.6666666666667 312.7466666666667 106.6666666666667 277.3333333333334C106.6666666666667 260.48 113.0666666666667 245.3333333333334 123.7333333333333 233.8133333333334C108.8 186.0266666666667 120.1066666666667 131.84 157.8666666666667 93.8666666666667C195.84 56.1066666666667 250.0266666666667 44.8000000000001 297.8133333333334 59.7333333333334C309.3333333333333 49.0666666666667 324.48 42.6666666666667 341.3333333333333 42.6666666666667C376.7466666666667 42.6666666666667 405.3333333333333 71.2533333333333 405.3333333333333 106.6666666666667C405.3333333333333 123.52 398.9333333333333 138.6666666666667 388.2666666666667 150.1866666666667C403.2 197.9733333333333 391.8933333333333 252.1600000000001 354.1333333333333 290.1333333333334C316.16 327.8933333333333 261.9733333333333 339.2 214.1866666666667 324.2666666666667C202.6666666666667 334.9333333333334 187.52 341.3333333333334 170.6666666666667 341.3333333333334z" /> + <glyph glyph-name="slack" + unicode="&#xF4B1;" + horiz-adv-x="512" d=" M218.24 209.92L275.4133333333333 228.9066666666667L293.76 174.0800000000001L236.5866666666667 155.0933333333334L218.24 209.92M377.3866666666667 155.52C388.9066666666667 159.36 394.6666666666667 171.9466666666667 391.2533333333334 183.4666666666667C387.4133333333333 194.9866666666667 374.8266666666667 201.3866666666667 363.3066666666667 197.3333333333334L335.5733333333333 188.16L317.2266666666667 242.9866666666667L344.9600000000001 252.3733333333334C356.48 256 362.6666666666667 268.8 358.8266666666667 280.3200000000001C354.9866666666667 291.8400000000001 342.4 298.6666666666667 330.6666666666667 294.1866666666667L303.1466666666667 285.0133333333334L293.5466666666667 313.6C289.7066666666667 325.12 277.3333333333334 331.5200000000001 265.6 327.4666666666667C254.08 323.6266666666667 247.8933333333334 311.0400000000001 251.7333333333334 299.5200000000001L261.3333333333333 270.9333333333334L204.16 251.9466666666667L194.56 280.5333333333334C190.72 292.0533333333334 178.3466666666667 298.6666666666667 166.6133333333334 294.4000000000001C155.0933333333333 290.5600000000001 149.3333333333333 277.9733333333334 152.7466666666667 266.6666666666667L162.3466666666667 237.8666666666667L134.6133333333334 228.48C123.0933333333333 224.6400000000001 117.3333333333333 212.0533333333334 120.7466666666667 200.5333333333334C123.7333333333333 192 132.0533333333334 185.6 141.0133333333333 185.3866666666667L148.6933333333333 186.6666666666668L176.4266666666667 195.84L194.7733333333334 141.0133333333334L167.04 131.6266666666667C155.52 128.0000000000001 149.3333333333334 115.2000000000001 153.1733333333334 103.6800000000001C156.16 94.72 164.48 88.7466666666668 173.44 88.5333333333334L181.3333333333333 89.8133333333334L208.8533333333333 98.9866666666667L218.4533333333333 70.4C221.44 61.2266666666667 229.76 55.4666666666667 238.72 55.2533333333333L246.3999999999999 56.5333333333333C257.9199999999999 60.3733333333333 264.1066666666666 72.7466666666667 260.2666666666666 84.48L250.6666666666667 113.0666666666666L307.8399999999999 132.0533333333333L317.44 103.4666666666666C319.9999999999999 94.5066666666666 328.7466666666666 88.7466666666666 337.7066666666666 88.5333333333333L345.3866666666666 89.6C356.9066666666666 93.44 362.6666666666666 106.0266666666666 359.2533333333332 117.3333333333334L349.6533333333333 146.1333333333333L377.3866666666666 155.52M451.6266666666666 250.6666666666667C495.5733333333333 104.1066666666667 461.2266666666666 40.5333333333333 314.6666666666667 -3.6266666666667C168.1066666666666 -47.5733333333333 104.5333333333333 -13.2266666666667 60.3733333333333 133.3333333333333C16.4266666666667 279.8933333333333 50.7733333333333 343.4666666666667 197.3333333333333 387.6266666666667C343.8933333333333 431.5733333333333 407.4666666666667 397.2266666666667 451.6266666666667 250.6666666666667z" /> + <glyph glyph-name="sleep" + unicode="&#xF4B2;" + horiz-adv-x="512" d=" M490.6666666666666 192H362.6666666666667V234.6666666666667L434.9866666666667 320H362.6666666666667V362.6666666666667H490.6666666666666V320L418.56 234.6666666666667H490.6666666666666V192M320 106.6666666666667H192V149.3333333333334L264.32 234.6666666666667H192V277.3333333333334H320V234.6666666666667L247.8933333333334 149.3333333333334H320V106.6666666666667M149.3333333333333 21.3333333333334H21.3333333333333V64L93.6533333333333 149.3333333333334H21.3333333333333V192H149.3333333333333V149.3333333333334L77.2266666666667 64H149.3333333333333V21.3333333333334z" /> + <glyph glyph-name="sleep-off" + unicode="&#xF4B3;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L271.5733333333333 106.6666666666667H192V149.3333333333334L208.8533333333333 169.3866666666667L42.6666666666667 335.5733333333334M490.6666666666666 192H362.6666666666667V234.6666666666667L434.9866666666667 320H362.6666666666667V362.6666666666667H490.6666666666666V320L418.56 234.6666666666667H490.6666666666666V192M209.4933333333334 277.3333333333334H320V234.6666666666667L288.8533333333333 197.9733333333333L209.4933333333334 277.3333333333334M149.3333333333333 21.3333333333334H21.3333333333333V64L93.6533333333333 149.3333333333334H21.3333333333333V192H149.3333333333333V149.3333333333334L77.2266666666667 64H149.3333333333333V21.3333333333334z" /> + <glyph glyph-name="smoking" + unicode="&#xF4B4;" + horiz-adv-x="512" d=" M149.3333333333333 42.6666666666667H469.3333333333333V128H149.3333333333333M42.6666666666667 42.6666666666667H106.6666666666667V128H42.6666666666667M213.3333333333333 362.6666666666667V341.3333333333334C213.3333333333333 305.92 184.7466666666667 277.3333333333334 149.3333333333333 277.3333333333334C90.4533333333333 277.3333333333334 42.6666666666667 229.5466666666667 42.6666666666667 170.6666666666667H85.3333333333333C85.3333333333333 206.08 113.92 234.6666666666667 149.3333333333333 234.6666666666667C208.2133333333333 234.6666666666667 256 282.4533333333334 256 341.3333333333334V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="smoking-off" + unicode="&#xF4B5;" + horiz-adv-x="512" d=" M337.4933333333334 149.3333333333334L422.8266666666667 64H469.3333333333333V149.3333333333334M42.6666666666667 64H106.6666666666667V149.3333333333334H42.6666666666667M69.9733333333333 362.6666666666667L42.6666666666667 335.5733333333334L94.72 283.5200000000001C62.5066666666667 264.3200000000001 42.6666666666667 229.5466666666667 42.6666666666667 192H85.3333333333333C85.3333333333333 218.4533333333334 101.76 242.3466666666667 126.5066666666667 251.7333333333334L228.9066666666667 149.3333333333334H149.3333333333333V64H314.24L399.5733333333333 -21.3333333333333L426.6666666666667 5.9733333333334M213.3333333333333 384V362.6666666666667C213.3333333333333 339.4133333333334 200.5333333333333 317.8666666666667 180.2666666666667 306.7733333333333L210.9866666666666 275.8400000000001C239.1466666666667 295.8933333333333 256 328.1066666666667 256 362.6666666666667V384H213.3333333333333z" /> + <glyph glyph-name="snapchat" + unicode="&#xF4B6;" + horiz-adv-x="512" d=" M256 11.7333333333333C230.6133333333334 11.7333333333333 215.4666666666667 22.6133333333334 202.0266666666667 32C192 38.8266666666667 183.04 45.44 172.3733333333333 47.1466666666667C147.84 48.4266666666667 140.5866666666667 47.1466666666667 127.36 44.8000000000001C125.0133333333333 44.8000000000001 122.24 45.4400000000001 121.1733333333334 49.2800000000001C117.3333333333334 65.2800000000001 116.2666666666667 69.7600000000001 113.4933333333334 70.1866666666667C85.3333333333333 74.6666666666667 68.0533333333333 81.0666666666668 64.64 88.96C64 93.8666666666667 65.4933333333333 96 67.84 96C90.6666666666667 100.0533333333334 110.9333333333333 112 128 132.0533333333334C141.44 147.4133333333334 147.84 162.3466666666667 148.48 163.84C151.8933333333333 170.6666666666667 152.5333333333333 176.64 150.6133333333333 181.3333333333334C146.9866666666667 190.0800000000001 134.6133333333333 193.92 121.1733333333333 198.4C113.92 201.1733333333334 102.1866666666667 207.1466666666667 103.68 215.4666666666667C104.96 221.44 112.8533333333333 225.7066666666667 123.9466666666667 224.8533333333334C131.4133333333333 221.44 137.8133333333333 219.7333333333334 143.5733333333333 219.7333333333334C150.6133333333333 219.7333333333334 153.8133333333333 222.2933333333334 154.6666666666667 223.1466666666667C152.32 260.6933333333334 150.4 293.3333333333334 158.72 311.8933333333334C183.68 367.7866666666667 236.3733333333334 372.2666666666667 256 372.2666666666667C275.6266666666667 372.2666666666667 328.32 367.7866666666667 353.28 311.8933333333333C361.6 293.3333333333334 359.68 260.6933333333334 357.3333333333333 223.1466666666667C358.1866666666666 222.2933333333334 361.3866666666667 219.7333333333334 368.4266666666666 219.7333333333334C374.1866666666666 219.7333333333334 380.5866666666667 221.44 388.0533333333334 224.8533333333334C399.1466666666667 225.7066666666667 407.04 221.44 408.32 215.4666666666667C409.8133333333334 207.1466666666667 398.08 201.1733333333334 390.8266666666667 198.4C377.3866666666667 193.92 365.0133333333333 190.0800000000001 361.3866666666667 181.3333333333334C359.4666666666667 176.64 360.1066666666667 170.6666666666667 363.5200000000001 163.84C364.1600000000001 162.3466666666667 370.56 147.4133333333334 384.0000000000001 132.0533333333334C401.0666666666667 112 421.3333333333334 100.0533333333333 444.1600000000001 96C446.5066666666667 96 448.0000000000001 93.8666666666667 447.36 88.96C443.9466666666667 81.0666666666667 426.6666666666668 74.6666666666667 398.5066666666667 70.1866666666667C395.7333333333334 69.7600000000001 394.6666666666668 65.2800000000001 390.8266666666667 49.2800000000001C389.7600000000001 45.4400000000001 386.9866666666668 44.8000000000001 384.6400000000001 44.8000000000001C371.4133333333334 47.1466666666667 364.1600000000001 48.4266666666667 339.6266666666668 47.1466666666667C328.9600000000001 45.4400000000001 320.0000000000001 38.8266666666667 309.9733333333334 32C296.5333333333334 22.6133333333333 281.3866666666668 11.7333333333333 256.0000000000001 11.7333333333333z" /> + <glyph glyph-name="snowman" + unicode="&#xF4B7;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 117.3333333333334 163.2 145.7066666666667 185.3866666666667 165.3333333333334C176.2133333333333 178.9866666666667 170.6666666666667 195.6266666666667 170.6666666666667 213.3333333333334V222.08L107.52 258.7733333333334L103.04 262.1866666666667L48.8533333333333 247.6800000000001L43.3066666666667 268.1600000000001L90.4533333333333 280.7466666666667L48.2133333333333 305.2800000000001L58.88 323.8400000000001L101.12 299.3066666666668L88.5333333333333 346.6666666666668L109.0133333333333 352.0000000000001L123.7333333333334 297.8133333333334L128.8533333333334 295.6800000000001L186.24 262.6133333333334C194.3466666666667 274.1333333333334 205.2266666666667 283.5200000000001 218.0266666666667 289.7066666666667C202.6666666666667 301.44 192 320 192 341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 320 309.3333333333333 301.44 293.9733333333333 289.7066666666667C306.7733333333333 283.52 317.6533333333333 274.1333333333334 325.76 262.6133333333334L383.1466666666667 295.68L388.2666666666667 297.8133333333334L402.9866666666667 352L423.4666666666667 346.6666666666667L410.88 299.3066666666667L453.12 323.8400000000001L463.7866666666667 305.28L421.5466666666667 280.7466666666667L468.6933333333334 268.1600000000001L463.1466666666666 247.68L408.9600000000001 262.1866666666667L404.48 258.7733333333333L341.3333333333333 222.08V213.3333333333334C341.3333333333333 195.6266666666667 335.7866666666667 178.9866666666667 326.6133333333334 165.3333333333334C348.8 145.7066666666667 362.6666666666667 117.3333333333334 362.6666666666667 85.3333333333334z" /> + <glyph glyph-name="soccer" + unicode="&#xF4B8;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 384C293.5466666666666 384 328.5333333333333 372.6933333333334 357.9733333333334 353.92L352 341.3333333333334H256L219.3066666666667 359.2533333333334L226.7733333333333 381.2266666666667C236.3733333333333 382.9333333333334 245.9733333333333 384 256 384M203.3066666666667 375.8933333333333L196.0533333333333 353.92L141.44 326.6133333333334L114.7733333333333 321.28C138.6666666666666 347.0933333333334 168.96 366.08 203.3066666666667 375.8933333333333M277.3333333333333 320H341.3333333333333L398.7200000000001 243.4133333333334L372.0533333333334 188.5866666666667L315.9466666666667 175.36L245.9733333333334 257.2800000000001L277.3333333333333 320M131.4133333333333 305.92L149.3333333333333 234.6666666666667L123.3066666666667 169.3866666666667L68.6933333333333 150.6133333333334C65.7066666666667 164.0533333333334 64 177.7066666666667 64 192C64 232.5333333333334 76.5866666666667 269.6533333333334 97.92 300.5866666666667L131.4133333333333 305.92M438.6133333333334 251.3066666666667C444.8 232.7466666666667 448.0000000000001 212.6933333333333 448.0000000000001 192C448.0000000000001 161.28 440.1066666666667 132.48 427.3066666666668 106.6666666666667H405.3333333333333L387.4133333333333 177.92L419.4133333333333 241.92L438.6133333333333 251.3066666666667M170.6666666666667 234.6666666666667H234.6666666666667L294.6133333333334 164.6933333333334L256 106.6666666666667L188.5866666666667 90.0266666666666L139.3066666666667 155.9466666666667L170.6666666666667 234.6666666666667M256 85.3333333333334L320 42.6666666666667L301.44 5.9733333333334C286.7200000000001 2.5600000000001 271.5733333333333 0 256 0C218.6666666666667 0 184.1066666666666 10.6666666666667 154.6666666666667 29.2266666666667L179.4133333333333 65.92L256 85.3333333333334M405.3333333333333 85.3333333333334H416C394.6666666666667 53.3333333333334 362.6666666666667 28.3733333333333 326.6133333333333 14.08L341.3333333333333 42.6666666666667L405.3333333333333 85.3333333333334z" /> + <glyph glyph-name="sofa" + unicode="&#xF4B9;" + horiz-adv-x="512" d=" M149.3333333333333 320H192C215.4666666666667 320 234.6666666666667 300.8 234.6666666666667 277.3333333333334V192H106.6666666666667V277.3333333333334C106.6666666666667 300.8 125.8666666666667 320 149.3333333333333 320M320 320H362.6666666666667C386.1333333333334 320 405.3333333333333 300.8 405.3333333333333 277.3333333333334V192H277.3333333333333V277.3333333333334C277.3333333333333 300.8 296.5333333333333 320 320 320M21.3333333333333 256H42.6666666666667C54.4 256 64 246.4000000000001 64 234.6666666666667V192C64 168.5333333333334 83.2 149.3333333333334 106.6666666666667 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192V234.6666666666667C448 246.4000000000001 457.6 256 469.3333333333333 256H490.6666666666666C502.4 256 512 246.4000000000001 512 234.6666666666667V42.6666666666667H448V85.3333333333334H64V42.6666666666667H0V234.6666666666667C0 246.4000000000001 9.6 256 21.3333333333333 256z" /> + <glyph glyph-name="sort" + unicode="&#xF4BA;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667V213.3333333333334H384V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667V85.3333333333334H298.6666666666667V42.6666666666667H213.3333333333333M213.3333333333333 298.6666666666667V341.3333333333334H469.3333333333333V298.6666666666667H213.3333333333333M128 85.3333333333334H181.3333333333333L106.6666666666667 10.6666666666667L32 85.3333333333334H85.3333333333333V298.6666666666667H32L106.6666666666667 373.3333333333334L181.3333333333333 298.6666666666667H128V85.3333333333334z" /> + <glyph glyph-name="sort-alphabetical" + unicode="&#xF4BB;" + horiz-adv-x="512" d=" M197.3333333333333 341.3333333333334L266.6666666666667 410.6666666666667L336 341.3333333333334H197.3333333333333M336 42.6666666666667L266.6666666666667 -26.6666666666666L197.3333333333333 42.6666666666667H336M189.6533333333333 142.9333333333333H128L112.64 85.3333333333334H62.08L128 298.6666666666667H192L258.7733333333333 85.3333333333334H206.2933333333333L189.6533333333333 142.9333333333333M135.04 177.4933333333334H182.6133333333334L169.1733333333334 222.72L163.6266666666667 243.4133333333334L158.2933333333334 263.8933333333334H157.6533333333333L152.96 243.2L147.84 222.2933333333334L135.04 177.4933333333334M278.4 85.3333333333334V112.2133333333334L379.7333333333334 256.64V257.92H288V298.6666666666667H442.24V270.0800000000001L343.2533333333334 128V126.2933333333334H443.7333333333334V85.3333333333334H278.4z" /> + <glyph glyph-name="sort-ascending" + unicode="&#xF4BC;" + horiz-adv-x="512" d=" M213.3333333333333 213.3333333333334V170.6666666666667H384V213.3333333333334H213.3333333333333M213.3333333333333 341.3333333333334V298.6666666666667H298.6666666666667V341.3333333333334H213.3333333333333M213.3333333333333 85.3333333333334V42.6666666666667H469.3333333333333V85.3333333333334H213.3333333333333M128 298.6666666666667H181.3333333333333L106.6666666666667 373.3333333333334L32 298.6666666666667H85.3333333333333V21.3333333333334H128V298.6666666666667z" /> + <glyph glyph-name="sort-descending" + unicode="&#xF4BD;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667V213.3333333333334H384V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667V85.3333333333334H298.6666666666667V42.6666666666667H213.3333333333333M213.3333333333333 298.6666666666667V341.3333333333334H469.3333333333333V298.6666666666667H213.3333333333333M128 85.3333333333334H181.3333333333333L106.6666666666667 10.6666666666667L32 85.3333333333334H85.3333333333333V362.6666666666667H128V85.3333333333334z" /> + <glyph glyph-name="sort-numeric" + unicode="&#xF4BE;" + horiz-adv-x="512" d=" M165.9733333333333 298.6666666666667C193.7066666666667 297.8133333333334 213.3333333333333 287.36 225.4933333333334 267.52C237.44 247.4666666666667 243.4133333333334 222.72 242.9866666666667 193.0666666666667C243.2 160 236.5866666666667 133.76 224 114.7733333333333C210.7733333333334 96 190.9333333333333 85.9733333333333 164.48 85.3333333333334C137.6 86.1866666666667 118.1866666666667 96 105.8133333333333 116.0533333333334C93.44 135.8933333333333 87.2533333333333 161.0666666666667 87.2533333333333 192C87.2533333333333 222.9333333333333 93.6533333333333 248.32 106.6666666666667 267.9466666666667C119.2533333333333 288 138.6666666666667 297.8133333333334 165.9733333333333 298.6666666666667M165.3333333333333 263.8933333333334C155.9466666666666 263.8933333333334 148.48 258.1333333333334 142.9333333333333 246.1866666666667C137.3866666666667 234.6666666666667 134.8266666666667 216.1066666666667 134.8266666666667 192C134.6133333333333 167.4666666666667 137.3866666666667 149.3333333333334 142.72 137.8133333333334C148.2666666666667 125.8666666666667 155.9466666666667 120.1066666666667 165.76 120.1066666666667C185.3866666666667 120.1066666666667 195.4133333333333 144.2133333333334 195.6266666666667 192C195.6266666666667 239.5733333333334 185.6 263.4666666666667 165.3333333333333 263.8933333333334M284.3733333333334 85.3333333333334V123.3066666666667L293.5466666666666 122.88L305.0666666666667 123.3066666666667L327.2533333333334 127.36C334.5066666666667 129.7066666666667 341.3333333333333 132.6933333333333 346.88 136.96C353.92 141.8666666666667 359.6800000000001 147.6266666666667 364.16 154.4533333333333C368.8533333333333 161.0666666666667 372.0533333333334 168.1066666666667 373.9733333333334 175.36L373.3333333333333 175.5733333333333C363.7333333333334 166.6133333333334 349.44 162.1333333333333 330.0266666666667 161.92C311.8933333333333 162.1333333333333 296.7466666666667 167.4666666666667 284.5866666666667 178.1333333333333C272.4266666666666 188.8 266.6666666666667 204.16 265.8133333333333 224C266.0266666666667 245.3333333333333 273.28 262.6133333333334 287.36 276.6933333333334C301.6533333333333 290.7733333333333 320 298.0266666666667 343.8933333333333 298.6666666666667C370.56 297.8133333333334 390.1866666666666 289.0666666666667 402.7733333333332 272.2133333333334C415.3599999999999 256 421.5466666666665 234.6666666666667 421.5466666666665 209.28C421.3333333333332 188.8 418.3466666666666 170.6666666666666 412.1599999999999 154.4533333333333C405.9733333333332 138.6666666666666 397.6533333333332 125.2266666666666 386.5599999999999 114.3466666666667C376.7466666666665 105.3866666666667 365.0133333333332 98.5600000000001 351.3599999999999 93.6533333333334C337.7066666666666 88.96 322.5599999999999 86.1866666666667 305.9199999999999 85.3333333333334H284.3733333333332M342.6133333333333 263.8933333333333C333.8666666666666 263.68 326.8266666666666 260.2666666666667 321.2799999999999 253.6533333333333C315.9466666666666 247.04 313.1733333333332 238.08 313.1733333333332 226.9866666666667C313.1733333333332 217.6 315.7333333333332 209.92 320.6399999999999 203.52C325.7599999999999 196.9066666666667 333.4399999999999 193.7066666666667 343.6799999999999 193.4933333333333C350.5066666666665 193.4933333333333 356.2666666666665 194.9866666666667 360.9599999999998 197.5466666666666C365.6533333333331 200.32 369.0666666666665 203.52 371.4133333333331 207.36C373.3333333333331 209.7066666666667 373.9733333333332 213.9733333333333 373.9733333333332 219.52C374.1866666666665 231.2533333333334 371.8399999999998 241.28 366.9333333333332 250.0266666666667C362.0266666666665 258.7733333333333 353.9199999999999 263.4666666666667 342.6133333333331 263.8933333333333M197.3333333333333 341.3333333333334L266.6666666666667 410.6666666666667L336 341.3333333333334H197.3333333333333M336 42.6666666666667L266.6666666666667 -26.6666666666666L197.3333333333333 42.6666666666667H336z" /> + <glyph glyph-name="sort-variant" + unicode="&#xF4BF;" + horiz-adv-x="512" d=" M64 170.6666666666667H320V213.3333333333334H64M64 320V277.3333333333334H448V320M64 64H192V106.6666666666667H64V64z" /> + <glyph glyph-name="soundcloud" + unicode="&#xF4C0;" + horiz-adv-x="512" d=" M246.6133333333334 258.7733333333334V85.3333333333334H433.4933333333334C472.96 88.1066666666667 490.6666666666666 112.4266666666667 490.6666666666666 142.2933333333334C490.6666666666666 173.8666666666667 466.7733333333333 199.2533333333333 434.7733333333333 199.2533333333333C426.6666666666667 199.2533333333333 419.84 197.5466666666667 412.8 194.56C407.68 244.48 365.2266666666666 283.52 312.9599999999999 283.52C288 283.52 264.32 274.1333333333334 246.6133333333333 258.7733333333333M227.84 237.0133333333333C221.44 240.8533333333333 214.6133333333333 243.84 207.1466666666666 245.3333333333334V85.3333333333334H236.8V248.7466666666667C233.6 245.3333333333334 230.6133333333333 241.0666666666667 227.84 237.0133333333333M177.7066666666666 248.5333333333333V85.3333333333334H197.3333333333333V247.8933333333333C193.28 248.5333333333333 189.2266666666666 248.7466666666667 184.96 248.7466666666667C182.4 248.7466666666667 180.0533333333333 248.7466666666667 177.7066666666666 248.5333333333333M138.6666666666667 234.6666666666667V85.3333333333334H158.08V244.48C151.04 242.1333333333334 144.4266666666667 238.7200000000001 138.6666666666667 234.6666666666667M103.04 181.3333333333334C101.76 181.3333333333334 100.48 182.6133333333334 98.9866666666667 183.2533333333333V85.3333333333334H118.6133333333333V216.32C110.72 206.08 105.3866666666667 193.92 103.04 181.3333333333334M59.52 187.3066666666667V87.2533333333333C64 85.9733333333334 69.12 85.3333333333334 74.6666666666667 85.3333333333334H79.36V189.0133333333333C77.6533333333333 189.2266666666667 75.9466666666667 189.44 74.6666666666667 189.44C69.12 189.44 64 188.5866666666667 59.52 187.3066666666667M21.3333333333333 137.3866666666667C21.3333333333333 121.3866666666667 28.5866666666667 107.3066666666667 39.8933333333333 97.7066666666667V176.8533333333334C28.5866666666667 167.4666666666667 21.3333333333333 153.1733333333334 21.3333333333333 137.3866666666667z" /> + <glyph glyph-name="source-branch" + unicode="&#xF62C;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334C205.6533333333333 149.3333333333334 182.1866666666667 120.5333333333334 174.5066666666667 101.5466666666666C197.3333333333333 91.7333333333334 213.3333333333333 69.12 213.3333333333333 42.6666666666667C213.3333333333333 7.2533333333333 184.7466666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S85.3333333333333 7.2533333333333 85.3333333333333 42.6666666666667C85.3333333333333 70.6133333333334 103.04 94.2933333333334 128 103.04V280.9600000000001C103.04 289.7066666666667 85.3333333333333 313.3866666666667 85.3333333333333 341.3333333333334C85.3333333333333 376.7466666666667 113.92 405.3333333333333 149.3333333333333 405.3333333333333S213.3333333333333 376.7466666666667 213.3333333333333 341.3333333333334C213.3333333333333 313.3866666666667 195.6266666666667 289.7066666666667 170.6666666666667 280.9600000000001V168.1066666666667C189.44 181.9733333333334 216.7466666666667 192 256 192C312.96 192 331.9466666666667 220.5866666666667 338.1333333333334 239.5733333333334C315.0933333333333 249.1733333333334 298.6666666666667 272 298.6666666666667 298.6666666666667C298.6666666666667 334.0800000000001 327.2533333333334 362.6666666666667 362.6666666666667 362.6666666666667S426.6666666666667 334.0800000000001 426.6666666666667 298.6666666666667C426.6666666666667 270.0800000000001 407.8933333333333 245.3333333333334 382.08 237.6533333333334C376.5333333333333 207.1466666666667 355.84 149.3333333333334 277.3333333333333 149.3333333333334M149.3333333333333 64C137.6 64 128 54.4 128 42.6666666666667S137.6 21.3333333333334 149.3333333333333 21.3333333333334S170.6666666666667 30.9333333333333 170.6666666666667 42.6666666666667S161.0666666666667 64 149.3333333333333 64M149.3333333333333 362.6666666666667C137.6 362.6666666666667 128 353.0666666666667 128 341.3333333333334S137.6 320 149.3333333333333 320S170.6666666666667 329.6 170.6666666666667 341.3333333333334S161.0666666666667 362.6666666666667 149.3333333333333 362.6666666666667M362.6666666666667 320C350.9333333333333 320 341.3333333333333 310.4 341.3333333333333 298.6666666666667S350.9333333333333 277.3333333333334 362.6666666666667 277.3333333333334S384 286.9333333333334 384 298.6666666666667S374.4 320 362.6666666666667 320z" /> + <glyph glyph-name="source-fork" + unicode="&#xF4C1;" + horiz-adv-x="512" d=" M128 405.3333333333333C163.4133333333333 405.3333333333333 192 376.7466666666667 192 341.3333333333334C192 314.0266666666667 174.72 290.56 150.6133333333334 281.3866666666667C152.5333333333333 271.5733333333333 157.6533333333333 259.6266666666667 170.6666666666667 242.56C192 215.04 234.6666666666667 174.2933333333333 256 145.7066666666667C277.3333333333333 174.2933333333333 320 215.04 341.3333333333333 242.56C354.3466666666667 259.6266666666667 359.4666666666667 271.5733333333333 361.3866666666667 281.3866666666667C337.28 290.56 320 314.0266666666667 320 341.3333333333334C320 376.7466666666667 348.5866666666667 405.3333333333333 384 405.3333333333333S448 376.7466666666667 448 341.3333333333334C448 313.1733333333334 429.6533333333333 289.0666666666667 404.2666666666667 280.5333333333334C402.56 269.4400000000001 397.6533333333333 256 384 238.2933333333334C362.6666666666667 209.7066666666667 320 168.96 298.6666666666667 141.2266666666667C285.6533333333333 124.3733333333334 280.5333333333333 112.4266666666667 278.6133333333334 102.6133333333334C302.72 93.44 320 69.9733333333334 320 42.6666666666667C320 7.2533333333333 291.4133333333333 -21.3333333333333 256 -21.3333333333333S192 7.2533333333333 192 42.6666666666667C192 69.9733333333334 209.28 93.44 233.3866666666667 102.6133333333334C231.4666666666667 112.4266666666667 226.3466666666667 124.3733333333333 213.3333333333333 141.2266666666667C192 168.96 149.3333333333333 209.7066666666667 128 238.2933333333333C114.3466666666667 256 109.44 269.44 107.7333333333333 280.5333333333333C82.3466666666667 289.0666666666667 64 313.1733333333334 64 341.3333333333334C64 376.7466666666667 92.5866666666667 405.3333333333333 128 405.3333333333333M128 362.6666666666667C116.2666666666667 362.6666666666667 106.6666666666667 353.0666666666667 106.6666666666667 341.3333333333334S116.2666666666667 320 128 320S149.3333333333333 329.6 149.3333333333333 341.3333333333334S139.7333333333333 362.6666666666667 128 362.6666666666667M384 362.6666666666667C372.2666666666667 362.6666666666667 362.6666666666667 353.0666666666667 362.6666666666667 341.3333333333334S372.2666666666667 320 384 320S405.3333333333333 329.6 405.3333333333333 341.3333333333334S395.7333333333334 362.6666666666667 384 362.6666666666667M256 64C244.2666666666667 64 234.6666666666667 54.4 234.6666666666667 42.6666666666667S244.2666666666667 21.3333333333334 256 21.3333333333334S277.3333333333333 30.9333333333333 277.3333333333333 42.6666666666667S267.7333333333334 64 256 64z" /> + <glyph glyph-name="source-merge" + unicode="&#xF62D;" + horiz-adv-x="512" d=" M149.3333333333333 384C184.7466666666667 384 213.3333333333333 355.4133333333334 213.3333333333333 320C213.3333333333333 292.48 196.0533333333333 269.0133333333333 171.52 260.0533333333334C183.04 153.3866666666667 279.04 132.9066666666667 324.0533333333333 128.8533333333334C333.0133333333333 153.3866666666667 356.48 170.6666666666667 384 170.6666666666667C419.4133333333333 170.6666666666667 448 142.0800000000001 448 106.6666666666667S419.4133333333333 42.6666666666667 384 42.6666666666667C356.0533333333334 42.6666666666667 332.16 60.5866666666667 323.4133333333333 85.3333333333334C232.7466666666667 89.6 201.3866666666667 123.9466666666667 170.6666666666667 162.3466666666667V124.3733333333333C195.6266666666667 115.6266666666667 213.3333333333333 91.9466666666667 213.3333333333333 64C213.3333333333333 28.5866666666667 184.7466666666667 0 149.3333333333333 0S85.3333333333333 28.5866666666667 85.3333333333333 64C85.3333333333333 91.9466666666667 103.04 115.6266666666667 128 124.3733333333333V259.6266666666667C103.04 268.3733333333334 85.3333333333333 292.0533333333334 85.3333333333333 320C85.3333333333333 355.4133333333334 113.92 384 149.3333333333333 384M149.3333333333333 341.3333333333334C137.6 341.3333333333334 128 331.7333333333334 128 320S137.6 298.6666666666667 149.3333333333333 298.6666666666667S170.6666666666667 308.2666666666667 170.6666666666667 320S161.0666666666667 341.3333333333334 149.3333333333333 341.3333333333334M149.3333333333333 85.3333333333334C137.6 85.3333333333334 128 75.7333333333334 128 64S137.6 42.6666666666667 149.3333333333333 42.6666666666667S170.6666666666667 52.2666666666667 170.6666666666667 64S161.0666666666667 85.3333333333334 149.3333333333333 85.3333333333334M384 128C372.2666666666667 128 362.6666666666667 118.4 362.6666666666667 106.6666666666667S372.2666666666667 85.3333333333334 384 85.3333333333334S405.3333333333333 94.9333333333333 405.3333333333333 106.6666666666667S395.7333333333334 128 384 128z" /> + <glyph glyph-name="source-pull" + unicode="&#xF4C2;" + horiz-adv-x="512" d=" M128 384C163.4133333333333 384 192 355.4133333333334 192 320C192 292.0533333333334 174.2933333333333 268.3733333333334 149.3333333333333 259.6266666666667V124.3733333333333C174.2933333333333 115.6266666666667 192 91.9466666666667 192 64C192 28.5866666666667 163.4133333333333 0 128 0S64 28.5866666666667 64 64C64 91.9466666666667 81.7066666666667 115.6266666666667 106.6666666666667 124.3733333333333V259.6266666666667C81.7066666666667 268.3733333333334 64 292.0533333333334 64 320C64 355.4133333333334 92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M448 64C448 28.5866666666667 419.4133333333333 0 384 0S320 28.5866666666667 320 64C320 91.9466666666667 337.7066666666667 115.6266666666667 362.6666666666667 124.3733333333333V298.6666666666667H320V229.3333333333334L229.3333333333333 320L320 410.6666666666667V341.3333333333334H362.6666666666667C386.1333333333334 341.3333333333334 405.3333333333333 322.1333333333334 405.3333333333333 298.6666666666667V124.3733333333333C430.2933333333334 115.6266666666667 448 91.9466666666667 448 64M384 85.3333333333334C372.2666666666667 85.3333333333334 362.6666666666667 75.7333333333334 362.6666666666667 64S372.2666666666667 42.6666666666667 384 42.6666666666667S405.3333333333333 52.2666666666667 405.3333333333333 64S395.7333333333334 85.3333333333334 384 85.3333333333334z" /> + <glyph glyph-name="speaker" + unicode="&#xF4C3;" + horiz-adv-x="512" d=" M256 192C220.5866666666667 192 192 163.4133333333334 192 128S220.5866666666667 64 256 64S320 92.5866666666667 320 128S291.4133333333333 192 256 192M256 21.3333333333334C197.12 21.3333333333334 149.3333333333333 69.1200000000001 149.3333333333333 128S197.12 234.6666666666667 256 234.6666666666667S362.6666666666667 186.88 362.6666666666667 128S314.88 21.3333333333334 256 21.3333333333334M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334C232.32 277.3333333333334 213.3333333333333 296.5333333333334 213.3333333333333 320C213.3333333333333 343.68 232.32 362.6666666666667 256 362.6666666666667M362.6666666666667 405.3333333333333H149.3333333333333C125.6533333333333 405.3333333333333 106.6666666666667 386.3466666666667 106.6666666666667 362.6666666666667V21.3333333333334C106.6666666666667 -2.1333333333333 125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C386.1333333333334 -21.3333333333333 405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334V362.6666666666667C405.3333333333333 386.3466666666667 386.1333333333334 405.3333333333333 362.6666666666667 405.3333333333333z" /> + <glyph glyph-name="speaker-off" + unicode="&#xF4C4;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L448 -15.36L420.9066666666667 -42.6666666666666L389.76 -11.52C382.5066666666667 -17.7066666666666 373.3333333333333 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V271.5733333333334L42.6666666666667 335.5733333333334M256 64C220.5866666666667 64 192 92.5866666666667 192 128C192 144.2133333333334 197.9733333333333 159.1466666666667 208 170.6666666666667L177.7066666666667 200.5333333333334C160 181.3333333333334 149.3333333333333 155.9466666666667 149.3333333333333 128C149.3333333333333 69.1200000000001 197.12 21.3333333333334 256 21.3333333333334C283.9466666666667 21.3333333333334 309.3333333333333 32 328.5333333333333 49.7066666666667L298.6666666666667 80C286.9333333333333 69.9733333333334 272.2133333333333 64 256 64M362.6666666666667 128C362.6666666666667 186.88 314.88 234.6666666666667 256 234.6666666666667H252.16L109.2266666666667 377.6C115.4133333333333 393.8133333333334 130.9866666666667 405.3333333333333 149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V81.4933333333333L362.6666666666667 124.3733333333333V128M256 362.6666666666667C232.32 362.6666666666667 213.3333333333333 343.68 213.3333333333333 320C213.3333333333333 296.5333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334S298.6666666666667 296.5333333333334 298.6666666666667 320C298.6666666666667 343.68 279.4666666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="speedometer" + unicode="&#xF4C5;" + horiz-adv-x="512" d=" M256 106.6666666666667C220.5866666666667 106.6666666666667 192 135.2533333333333 192 170.6666666666667C192 194.56 205.0133333333333 215.4666666666667 224 226.3466666666667L431.1466666666667 346.24L313.1733333333333 141.8666666666667C302.5066666666667 120.96 280.96 106.6666666666667 256 106.6666666666667M256 384C294.6133333333334 384 330.6666666666667 373.3333333333334 362.0266666666667 355.8400000000001L317.2266666666667 330.0266666666667C298.6666666666667 337.28 277.3333333333333 341.3333333333334 256 341.3333333333334C161.7066666666667 341.3333333333334 85.3333333333333 264.9600000000001 85.3333333333333 170.6666666666667C85.3333333333333 123.52 104.32 80.8533333333334 135.2533333333333 50.1333333333334H135.4666666666667C143.7866666666666 41.8133333333334 143.7866666666666 28.3733333333334 135.4666666666667 20.0533333333334C127.1466666666667 11.7333333333333 113.4933333333333 11.7333333333333 105.1733333333333 19.84C66.56 58.4533333333333 42.6666666666667 111.7866666666667 42.6666666666667 170.6666666666667C42.6666666666667 288.4266666666667 138.24 384 256 384M469.3333333333333 170.6666666666667C469.3333333333333 111.7866666666667 445.44 58.4533333333334 406.8266666666667 19.84C398.5066666666667 11.7333333333333 385.0666666666667 11.7333333333333 376.7466666666667 20.0533333333334C368.4266666666666 28.3733333333334 368.4266666666666 41.8133333333334 376.7466666666667 50.1333333333334C407.68 81.0666666666667 426.6666666666667 123.52 426.6666666666667 170.6666666666667C426.6666666666667 192 422.6133333333333 213.3333333333334 415.1466666666667 232.5333333333334L440.9600000000001 277.3333333333334C458.6666666666666 245.3333333333334 469.3333333333333 209.4933333333334 469.3333333333333 170.6666666666667z" /> + <glyph glyph-name="spellcheck" + unicode="&#xF4C6;" + horiz-adv-x="512" d=" M460.5866666666666 200.7466666666667L288 28.16L209.7066666666667 106.6666666666667L179.6266666666667 76.5866666666667L288 -32L490.6666666666666 170.6666666666667M137.1733333333333 213.3333333333334L181.3333333333333 330.6666666666667L225.4933333333334 213.3333333333334M265.6 106.6666666666667H310.1866666666666L201.1733333333333 384H161.4933333333334L52.48 106.6666666666667H97.0666666666667L120.96 170.6666666666667H241.28L265.6 106.6666666666667z" /> + <glyph glyph-name="spotify" + unicode="&#xF4C7;" + horiz-adv-x="512" d=" M381.8666666666666 215.4666666666667C313.6 256 199.4666666666667 260.2666666666667 134.4 240C123.7333333333333 236.8 113.0666666666667 243.2 109.8666666666667 252.8C106.6666666666667 263.4666666666667 113.0666666666667 274.1333333333334 122.6666666666667 277.3333333333334C198.4 299.7333333333334 323.2 295.4666666666667 402.1333333333334 248.5333333333334C411.7333333333334 243.2 414.9333333333334 230.4000000000001 409.6 220.8C404.2666666666667 213.3333333333334 391.4666666666667 210.1333333333333 381.8666666666667 215.4666666666667M379.7333333333334 155.7333333333334C374.4 148.2666666666667 364.8 145.0666666666667 357.3333333333333 150.4C299.7333333333334 185.6 212.2666666666667 196.2666666666667 145.0666666666667 174.9333333333334C136.5333333333333 172.8000000000001 126.9333333333334 177.0666666666667 124.8 185.6C122.6666666666667 194.1333333333334 126.9333333333333 203.7333333333334 135.4666666666667 205.8666666666667C213.3333333333333 229.3333333333334 309.3333333333333 217.6 375.4666666666667 177.0666666666667C381.8666666666667 173.8666666666667 385.0666666666667 163.2000000000001 379.7333333333334 155.7333333333334M354.1333333333334 97.0666666666667C349.8666666666667 90.6666666666667 342.4 88.5333333333334 336 92.8000000000001C285.8666666666667 123.7333333333334 222.9333333333334 130.1333333333334 148.2666666666667 113.0666666666667C140.8 110.9333333333334 134.4 116.2666666666667 132.2666666666667 122.6666666666667C130.1333333333334 130.1333333333333 135.4666666666667 136.5333333333334 141.8666666666667 138.6666666666667C222.9333333333333 156.8 293.3333333333333 149.3333333333334 348.8 115.2000000000001C356.2666666666667 112 357.3333333333333 103.4666666666667 354.1333333333334 97.0666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="spotlight" + unicode="&#xF4C8;" + horiz-adv-x="512" d=" M42.6666666666667 320L151.2533333333333 265.6C136.5333333333333 245.3333333333334 128 219.52 128 192S136.5333333333333 138.6666666666667 151.2533333333333 118.4L42.6666666666667 64V320M128 384H384L329.6 296.7466666666667C309.3333333333333 311.4666666666667 283.52 320 256 320S202.6666666666667 311.4666666666667 182.4 296.7466666666667L128 384M469.3333333333333 320V64L360.7466666666667 118.4C375.4666666666667 138.6666666666667 384 164.48 384 192S375.4666666666667 245.3333333333334 360.7466666666667 265.6L469.3333333333333 320M384 0H128L182.4 87.2533333333333C202.6666666666667 72.5333333333333 228.48 64 256 64S309.3333333333333 72.5333333333333 329.6 87.2533333333333L384 0M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="spotlight-beam" + unicode="&#xF4C9;" + horiz-adv-x="512" d=" M192 96L211.4133333333333 115.4133333333334L322.7733333333333 4.2666666666667L303.1466666666667 -15.1466666666666L192 96M330.6666666666667 234.6666666666667L350.08 254.08L461.4399999999999 142.9333333333333L441.8133333333333 123.52L330.6666666666667 234.6666666666667M143.36 389.9733333333334L216.5333333333333 316.8L131.2 231.4666666666667L58.0266666666667 304.64C41.3866666666667 321.28 41.3866666666667 348.3733333333334 58.0266666666667 365.0133333333333L82.9866666666667 389.9733333333333C99.6266666666667 406.6133333333334 126.72 406.6133333333334 143.36 389.9733333333333M310.8266666666667 288L325.9733333333334 272.8533333333334L175.1466666666667 122.0266666666667L160 137.1733333333334L141.6533333333333 211.84L236.16 306.3466666666667L310.8266666666667 288z" /> + <glyph glyph-name="spray" + unicode="&#xF665;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H256V320H213.3333333333333V362.6666666666667M149.3333333333333 384H192V341.3333333333334H149.3333333333333V384M149.3333333333333 320H192V277.3333333333334H149.3333333333333V320M128 277.3333333333334V234.6666666666667H85.3333333333333V277.3333333333334H128M128 341.3333333333334V298.6666666666667H85.3333333333333V341.3333333333334H128M128 405.3333333333333V362.6666666666667H85.3333333333333V405.3333333333333H128M277.3333333333333 -21.3333333333333C253.8666666666667 -21.3333333333333 234.6666666666667 -2.1333333333333 234.6666666666667 21.3333333333334V234.6666666666667C234.6666666666667 258.1333333333334 253.8666666666667 277.3333333333334 277.3333333333333 277.3333333333334V298.6666666666667H298.6666666666667V362.6666666666667H362.6666666666667V298.6666666666667H384V277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H277.3333333333333M277.3333333333333 234.6666666666667V21.3333333333334H384V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="square-inc" + unicode="&#xF4CA;" + horiz-adv-x="512" d=" M128 384H384C419.4133333333333 384 448 355.4133333333334 448 320V64C448 28.5866666666667 419.4133333333333 0 384 0H128C92.5866666666667 0 64 28.5866666666667 64 64V320C64 355.4133333333334 92.5866666666667 384 128 384M149.3333333333333 320C137.6 320 128 310.4 128 298.6666666666667V85.3333333333334C128 73.6 137.6 64 149.3333333333333 64H362.6666666666667C374.4 64 384 73.6 384 85.3333333333334V298.6666666666667C384 310.4 374.4 320 362.6666666666667 320H149.3333333333333M202.6666666666667 256H309.3333333333333C315.3066666666666 256 320 251.3066666666667 320 245.3333333333334V138.6666666666667C320 132.6933333333334 315.3066666666666 128 309.3333333333333 128H202.6666666666667C196.6933333333333 128 192 132.6933333333334 192 138.6666666666667V245.3333333333334C192 251.3066666666667 196.6933333333333 256 202.6666666666667 256z" /> + <glyph glyph-name="square-inc-cash" + unicode="&#xF4CB;" + horiz-adv-x="512" d=" M117.3333333333333 448H394.6666666666667C459.52 448 512 395.52 512 330.6666666666667V53.3333333333334C512 -11.52 459.52 -64 394.6666666666667 -64H117.3333333333333C52.48 -64 0 -11.52 0 53.3333333333334V330.6666666666667C0 395.52 52.48 448 117.3333333333333 448M328.32 124.16C328.32 90.4533333333334 309.3333333333333 68.0533333333334 274.1333333333334 65.0666666666667V178.9866666666667C310.4 167.8933333333334 328.32 156.5866666666667 328.32 124.16M248.5333333333334 320V215.8933333333334C220.5866666666667 224.0000000000001 192.64 236.1600000000001 192.64 268.1600000000001C192.64 299.9466666666667 217.1733333333334 317.4400000000001 248.5333333333334 320M330.6666666666667 285.8666666666667L352 302.9333333333334C333.2266666666667 327.2533333333334 307.2 343.04 274.1333333333334 346.24V366.9333333333334H248.5333333333334V346.6666666666667C202.6666666666667 343.68 163.84 316.3733333333334 163.84 266.6666666666667C163.84 213.3333333333334 207.7866666666667 196.6933333333334 248.5333333333334 185.8133333333334V64.8533333333334C224.8533333333334 67.4133333333334 198.1866666666667 78.72 179.84 106.0266666666666L155.7333333333333 90.0266666666666C174.9333333333333 61.44 208.2133333333333 42.6666666666667 248.5333333333333 39.68V17.0666666666667H274.1333333333333V39.2533333333333C327.4666666666666 42.6666666666667 356.2666666666667 78.08 356.2666666666667 125.0133333333333C356.2666666666667 179.6266666666667 315.9466666666666 197.12 274.1333333333334 209.28V318.9333333333334C298.6666666666667 315.3066666666667 316.8 303.7866666666667 330.6666666666667 285.8666666666667z" /> + <glyph glyph-name="stackexchange" + unicode="&#xF60B;" + horiz-adv-x="512" d=" M85.3333333333333 148.48V213.3333333333334H426.6666666666667V148.48H85.3333333333333M85.3333333333333 234.6666666666667V298.6666666666667H426.6666666666667V234.6666666666667H85.3333333333333M372.48 405.3333333333333C402.3466666666667 405.3333333333333 426.6666666666667 380.16 426.6666666666667 349.2266666666667V320H85.3333333333333V349.2266666666667C85.3333333333333 380.16 109.6533333333333 405.3333333333333 139.52 405.3333333333333H372.48M85.3333333333333 128H426.6666666666667V99.2C426.6666666666667 68.0533333333333 402.3466666666667 42.6666666666667 372.48 42.6666666666667H352L277.3333333333333 -21.3333333333333V42.6666666666667H139.52C109.6533333333333 42.6666666666667 85.3333333333333 68.0533333333334 85.3333333333333 99.2V128z" /> + <glyph glyph-name="stackoverflow" + unicode="&#xF4CC;" + horiz-adv-x="512" d=" M370.3466666666667 17.0666666666667V131.84H408.5333333333333V-21.3333333333333H64V131.84H102.4V17.0666666666667H370.3466666666667M144.4266666666667 142.5066666666667L152.32 180.0533333333334L339.84 140.5866666666667L331.9466666666667 103.04L144.4266666666667 142.5066666666667M169.1733333333334 232.32L185.3866666666667 266.6666666666667L359.04 186.0266666666667L342.8266666666667 151.4666666666667L169.1733333333333 232.32M217.3866666666667 317.44L241.92 346.88L389.12 224L364.5866666666667 194.7733333333333L217.3866666666667 317.44M312.3200000000001 408.1066666666666L426.6666666666667 254.2933333333334L395.9466666666666 231.4666666666667L281.6 385.28L312.32 408.1066666666667M140.5866666666667 55.2533333333333V93.6533333333334H332.16V55.2533333333333H140.5866666666667z" /> + <glyph glyph-name="stairs" + unicode="&#xF4CD;" + horiz-adv-x="512" d=" M320 341.3333333333334V256H234.6666666666667V170.6666666666667H149.3333333333333V85.3333333333334H64V21.3333333333334H213.3333333333333V106.6666666666667H298.6666666666667V192H384V277.3333333333334H469.3333333333333V341.3333333333334H320z" /> + <glyph glyph-name="star" + unicode="&#xF4CE;" + horiz-adv-x="512" d=" M256 79.5733333333334L387.84 0L352.8533333333333 149.9733333333334L469.3333333333333 250.88L315.9466666666666 264.1066666666667L256 405.3333333333333L196.0533333333333 264.1066666666667L42.6666666666667 250.88L158.9333333333333 149.9733333333334L124.16 0L256 79.5733333333334z" /> + <glyph glyph-name="star-circle" + unicode="&#xF4CF;" + horiz-adv-x="512" d=" M346.24 64L256 118.4L165.76 64L189.6533333333333 166.6133333333334L110.08 235.52L215.04 244.48L256 341.3333333333334L296.96 244.6933333333334L401.92 235.7333333333333L322.3466666666667 166.8266666666667L346.24 64M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="star-half" + unicode="&#xF4D0;" + horiz-adv-x="512" d=" M256 109.0133333333333V307.4133333333334L292.48 221.2266666666667L385.92 213.3333333333334L315.0933333333333 151.8933333333334L336.2133333333333 60.5866666666667M469.3333333333333 240.2133333333334L315.9466666666666 253.2266666666667L256 394.6666666666667L196.0533333333333 253.2266666666667L42.6666666666667 240.2133333333334L158.9333333333333 139.3066666666667L124.16 -10.6666666666666L256 68.9066666666667L387.84 -10.6666666666666L352.8533333333333 139.3066666666667L469.3333333333333 240.2133333333334z" /> + <glyph glyph-name="star-off" + unicode="&#xF4D1;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L363.7333333333334 14.72L256 79.5733333333334L124.16 0L158.9333333333333 149.9733333333334L42.6666666666667 250.88L120.7466666666667 257.4933333333334L42.6666666666667 335.5733333333334M256 405.3333333333333L315.9466666666667 264.1066666666667L469.3333333333333 250.88L352.8533333333333 149.9733333333334L357.76 129.0666666666667L203.9466666666666 282.88L256 405.3333333333333z" /> + <glyph glyph-name="star-outline" + unicode="&#xF4D2;" + horiz-adv-x="512" d=" M256 119.68L175.7866666666667 71.2533333333333L196.9066666666667 162.5600000000001L126.08 224L219.52 231.8933333333333L256 318.0800000000001L292.48 231.8933333333334L385.92 224.0000000000001L315.0933333333333 162.5600000000001L336.2133333333333 71.2533333333333M469.3333333333333 250.88L315.9466666666666 263.8933333333333L256 405.3333333333333L196.0533333333333 263.8933333333333L42.6666666666667 250.88L158.9333333333333 149.9733333333334L124.16 0L256 79.5733333333334L387.84 0L352.8533333333333 149.9733333333334L469.3333333333333 250.88z" /> + <glyph glyph-name="steam" + unicode="&#xF4D3;" + horiz-adv-x="512" d=" M429.6533333333333 281.8133333333334C455.04 281.8133333333334 475.52 261.3333333333334 475.52 236.1600000000001C475.52 210.9866666666667 455.04 190.5066666666667 429.6533333333333 190.5066666666667C404.48 190.5066666666667 384 210.9866666666667 384 236.1600000000001C384 261.3333333333334 404.48 281.8133333333334 429.6533333333333 281.8133333333334M64 300.1600000000001C99.4133333333333 300.1600000000001 128 271.5733333333334 128 236.1600000000001V229.5466666666667L263.04 159.1466666666667C273.92 167.4666666666667 287.1466666666667 172.16 301.6533333333333 172.16L347.52 236.1600000000001C347.52 281.6 384 318.5066666666667 429.6533333333333 318.5066666666667C475.0933333333333 318.5066666666667 512 281.6 512 236.1600000000001S475.0933333333333 153.8133333333334 429.6533333333333 153.8133333333334L365.6533333333333 108.16C365.6533333333333 72.7466666666667 337.0666666666667 44.16 301.6533333333333 44.16C266.6666666666667 44.16 237.6533333333334 72.7466666666667 237.6533333333334 108.16V110.5066666666667L98.9866666666667 182.6133333333334C88.96 176 76.8 172.16 64 172.16C28.5866666666667 172.16 0 200.7466666666667 0 236.16S28.5866666666667 300.16 64 300.16M320.64 129.28C334.2933333333334 122.4533333333333 339.6266666666667 106.0266666666666 332.5866666666667 92.3733333333333C325.76 78.9333333333333 309.3333333333334 73.6 295.8933333333333 80.4266666666667L256.64 100.9066666666667C260.0533333333334 79.1466666666667 279.04 62.5066666666667 301.6533333333333 62.5066666666667C327.04 62.5066666666667 347.52 82.9866666666667 347.52 108.16C347.52 133.3333333333334 327.04 153.8133333333334 301.6533333333333 153.8133333333334C294.6133333333333 153.8133333333334 288 152.3200000000001 282.0266666666667 149.3333333333334L320.64 129.28M64 281.8133333333334C38.8266666666667 281.8133333333334 18.3466666666667 261.3333333333334 18.3466666666667 236.1600000000001C18.3466666666667 210.9866666666667 38.8266666666667 190.5066666666667 64 190.5066666666667C69.12 190.5066666666667 74.6666666666667 191.36 78.9333333333333 193.0666666666667L48.64 208.64C34.9866666666667 215.68 29.6533333333333 232.1066666666667 36.48 245.3333333333334C43.52 258.9866666666667 59.9466666666667 264.5333333333334 73.3866666666667 257.4933333333334L109.6533333333333 238.72C108.3733333333334 262.8266666666667 88.32 281.8133333333334 64 281.8133333333334M429.6533333333333 300.16C394.6666666666667 300.16 365.6533333333333 271.5733333333333 365.6533333333333 236.1600000000001S394.24 172.16 429.6533333333333 172.16S493.6533333333333 200.7466666666667 493.6533333333333 236.1600000000001S465.0666666666667 300.1600000000001 429.6533333333333 300.1600000000001z" /> + <glyph glyph-name="steering" + unicode="&#xF4D4;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C343.4666666666667 362.6666666666667 416 296.5333333333334 426.6666666666667 213.3333333333334H362.6666666666667C352 236.8 307.2 256 256 256S160 236.8 149.3333333333333 213.3333333333334H85.3333333333333C96 296.5333333333334 168.5333333333333 362.6666666666667 256 362.6666666666667M85.3333333333333 170.6666666666667H149.3333333333333C153.6 142.9333333333333 174.9333333333333 93.8666666666667 234.6666666666667 85.3333333333334V21.3333333333334C157.8666666666667 29.8666666666667 93.8666666666667 93.8666666666667 85.3333333333333 170.6666666666667M277.3333333333333 21.3333333333334V85.3333333333334C337.0666666666667 93.8666666666667 356.2666666666667 142.9333333333333 362.6666666666667 170.6666666666667H426.6666666666667C418.1333333333334 93.8666666666667 354.1333333333334 29.8666666666667 277.3333333333333 21.3333333333334z" /> + <glyph glyph-name="step-backward" + unicode="&#xF4D5;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334V42.6666666666667H341.3333333333333V341.3333333333334M298.6666666666667 341.3333333333334V42.6666666666667L64 192" /> + <glyph glyph-name="step-backward-2" + unicode="&#xF4D6;" + horiz-adv-x="512" d=" M362.6666666666667 341.3333333333334H298.6666666666667V42.6666666666667H362.6666666666667V341.3333333333334M256 341.3333333333334L21.3333333333333 192L256 42.6666666666667V341.3333333333334M469.3333333333333 341.3333333333334H405.3333333333333V42.6666666666667H469.3333333333333V341.3333333333334z" /> + <glyph glyph-name="step-forward" + unicode="&#xF4D7;" + horiz-adv-x="512" d=" M106.6666666666667 341.3333333333334V42.6666666666667H170.6666666666667V341.3333333333334M213.3333333333333 341.3333333333334V42.6666666666667L448 192" /> + <glyph glyph-name="step-forward-2" + unicode="&#xF4D8;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H213.3333333333333V42.6666666666667H149.3333333333333V341.3333333333334M256 341.3333333333334L490.6666666666666 192L256 42.6666666666667V341.3333333333334M42.6666666666667 341.3333333333334H106.6666666666667V42.6666666666667H42.6666666666667V341.3333333333334z" /> + <glyph glyph-name="stethoscope" + unicode="&#xF4D9;" + horiz-adv-x="512" d=" M405.3333333333333 277.3333333333334C417.28 277.3333333333334 426.6666666666667 268.1600000000001 426.6666666666667 256C426.6666666666667 244.2666666666667 417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667C393.1733333333333 234.6666666666667 384 244.2666666666667 384 256C384 268.1600000000001 393.1733333333333 277.3333333333334 405.3333333333333 277.3333333333334M42.6666666666667 405.3333333333333V213.3333333333334C42.6666666666667 150.1866666666667 89.3866666666667 96 152.32 87.2533333333333C165.5466666666667 23.04 222.2933333333333 -21.3333333333333 288 -21.3333333333333C364.5866666666667 -21.3333333333333 426.6666666666667 40.7466666666667 426.6666666666667 117.3333333333334V196.0533333333334C451.4133333333333 205.0133333333333 469.3333333333333 228.48 469.3333333333333 256C469.3333333333333 291.4133333333334 440.7466666666667 320 405.3333333333333 320S341.3333333333333 291.4133333333334 341.3333333333333 256C341.3333333333333 228.48 359.2533333333334 204.8 384 196.0533333333334V119.2533333333333C384 65.92 341.3333333333333 23.2533333333333 288 23.2533333333333C245.3333333333333 23.2533333333333 209.4933333333334 49.0666666666667 196.6933333333333 87.4666666666667C256 100.2666666666667 298.6666666666667 153.6 298.6666666666667 213.3333333333334V405.3333333333333H213.3333333333333V341.3333333333334H256V213.3333333333334C256 166.1866666666667 217.8133333333333 128 170.6666666666667 128S85.3333333333333 166.1866666666667 85.3333333333333 213.3333333333334V341.3333333333334H128V405.3333333333333H42.6666666666667z" /> + <glyph glyph-name="sticker" + unicode="&#xF5D0;" + horiz-adv-x="512" d=" M258.56 54.1866666666667L390.3999999999999 186.0266666666667C361.3866666666666 179.4133333333333 326.6133333333333 166.4 300.1599999999999 139.52C278.1866666666666 117.3333333333334 264.32 88.96 258.56 54.1866666666667M442.6666666666667 234.6666666666667H449.0666666666667C457.3866666666667 234.6666666666667 464.8533333333333 228.9066666666667 467.84 221.0133333333333C470.8266666666667 213.3333333333334 469.3333333333333 204.16 462.9333333333333 198.1866666666667L249.6 -15.1466666666666C245.3333333333333 -19.2 240.2133333333333 -21.3333333333333 234.6666666666667 -21.3333333333333L226.9866666666667 -19.84C219.0933333333334 -16.8533333333333 213.3333333333333 -9.3866666666667 213.3333333333333 -1.0666666666667C209.92 71.2533333333333 228.9066666666667 128.8533333333334 270.08 170.0266666666667C330.6666666666667 230.4000000000001 418.56 234.6666666666667 442.6666666666667 234.6666666666667M256 405.3333333333333C352 405.3333333333333 433.92 341.3333333333334 460.3733333333333 253.6533333333334L426.6666666666667 256H414.2933333333334C389.12 318.5066666666667 327.68 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 120.3200000000001 129.4933333333334 58.88 192 33.7066666666667C191.36 18.5599999999999 192 3.2 194.3466666666666 -12.16C106.6666666666667 14.2933333333334 42.6666666666667 96 42.6666666666667 192C42.6666666666667 309.9733333333334 138.6666666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="stocking" + unicode="&#xF4DA;" + horiz-adv-x="512" d=" M362.6666666666667 405.3333333333333C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V298.6666666666667C405.3333333333333 275.2000000000001 386.1333333333334 256 362.6666666666667 256V85.3333333333334C362.6666666666667 67.2 352 51.84 335.7866666666667 45.6533333333334L202.6666666666667 -16.4266666666666C181.3333333333333 -26.4533333333333 155.52 -17.28 145.7066666666667 4.0533333333334L128 42.6666666666667C117.3333333333333 64 126.9333333333333 89.6 148.2666666666667 99.4133333333334L213.3333333333333 129.92V256C189.8666666666667 256 170.6666666666667 275.2000000000001 170.6666666666667 298.6666666666667V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H362.6666666666667M213.3333333333333 362.6666666666667V298.6666666666667H362.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="stop" + unicode="&#xF4DB;" + horiz-adv-x="512" d=" M384 64H128V320H384V64z" /> + <glyph glyph-name="stop-circle" + unicode="&#xF666;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M192 256H320V128H192" /> + <glyph glyph-name="stop-circle-outline" + unicode="&#xF667;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.08 362.6666666666667 426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334S85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667M192 256V128H320V256" /> + <glyph glyph-name="store" + unicode="&#xF4DC;" + horiz-adv-x="512" d=" M256 64H128V149.3333333333334H256M448 149.3333333333334V192L426.6666666666667 298.6666666666667H85.3333333333333L64 192V149.3333333333334H85.3333333333333V21.3333333333334H298.6666666666667V149.3333333333334H384V21.3333333333334H426.6666666666667V149.3333333333334M426.6666666666667 362.6666666666667H85.3333333333333V320H426.6666666666667V362.6666666666667z" /> + <glyph glyph-name="store-24-hour" + unicode="&#xF4DD;" + horiz-adv-x="512" d=" M341.3333333333333 192H320V234.6666666666667H277.3333333333333V298.6666666666667H298.6666666666667V256H320V298.6666666666667H341.3333333333333M234.6666666666667 234.6666666666667H192V213.3333333333334H234.6666666666667V192H170.6666666666667V256H213.3333333333333V277.3333333333334H170.6666666666667V298.6666666666667H234.6666666666667M405.3333333333333 298.6666666666667V362.6666666666667H106.6666666666667V298.6666666666667H42.6666666666667V21.3333333333334H213.3333333333333V106.6666666666667H298.6666666666667V21.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333z" /> + <glyph glyph-name="stove" + unicode="&#xF4DE;" + horiz-adv-x="512" d=" M128 149.3333333333334H170.6666666666667L234.6666666666667 85.3333333333334H192L128 149.3333333333334M85.3333333333333 362.6666666666667H106.6666666666667V384C106.6666666666667 395.7333333333334 116.2666666666667 405.3333333333333 128 405.3333333333333H213.3333333333333C225.0666666666667 405.3333333333333 234.6666666666667 395.7333333333334 234.6666666666667 384V362.6666666666667H277.3333333333333V384C277.3333333333333 395.7333333333334 286.9333333333333 405.3333333333333 298.6666666666667 405.3333333333333H384C395.7333333333334 405.3333333333333 405.3333333333333 395.7333333333334 405.3333333333333 384V362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0V-21.3333333333333H362.6666666666667V0H149.3333333333333V-21.3333333333333H85.3333333333333V0C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M384 298.6666666666667C395.7333333333334 298.6666666666667 405.3333333333333 289.0666666666667 405.3333333333333 277.3333333333334S395.7333333333334 256 384 256S362.6666666666667 265.6 362.6666666666667 277.3333333333334S372.2666666666667 298.6666666666667 384 298.6666666666667M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 289.0666666666667 320 277.3333333333334S310.4 256 298.6666666666667 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667M426.6666666666667 320H85.3333333333333V234.6666666666667H426.6666666666667V320M85.3333333333333 42.6666666666667H426.6666666666667V192H85.3333333333333V42.6666666666667M128 298.6666666666667C139.7333333333333 298.6666666666667 149.3333333333333 289.0666666666667 149.3333333333333 277.3333333333334S139.7333333333333 256 128 256S106.6666666666667 265.6 106.6666666666667 277.3333333333334S116.2666666666667 298.6666666666667 128 298.6666666666667M277.3333333333333 149.3333333333334H320L384 85.3333333333334H341.3333333333333L277.3333333333333 149.3333333333334z" /> + <glyph glyph-name="subdirectory-arrow-left" + unicode="&#xF60C;" + horiz-adv-x="512" d=" M234.6666666666667 256L264.96 225.7066666666667L188.3733333333333 149.3333333333334H384V362.6666666666667H426.6666666666667V106.6666666666667H188.3733333333333L264.96 30.2933333333334L234.6666666666667 0L106.6666666666667 128L234.6666666666667 256z" /> + <glyph glyph-name="subdirectory-arrow-right" + unicode="&#xF60D;" + horiz-adv-x="512" d=" M405.3333333333333 128L277.3333333333333 0L247.04 30.2933333333334L323.6266666666667 106.6666666666667H85.3333333333333V362.6666666666667H128V149.3333333333334H323.6266666666667L247.04 225.7066666666667L277.3333333333333 256L405.3333333333333 128z" /> + <glyph glyph-name="subway" + unicode="&#xF4DF;" + horiz-adv-x="512" d=" M384 213.3333333333334H277.3333333333333V320H384M352 85.3333333333334C334.2933333333333 85.3333333333334 320 99.6266666666667 320 117.3333333333334S334.2933333333333 149.3333333333334 352 149.3333333333334S384 135.04 384 117.3333333333334S369.7066666666666 85.3333333333334 352 85.3333333333334M234.6666666666667 213.3333333333334H128V320H234.6666666666667M160 85.3333333333334C142.2933333333333 85.3333333333334 128 99.6266666666667 128 117.3333333333334S142.2933333333333 149.3333333333334 160 149.3333333333334S192 135.04 192 117.3333333333334S177.7066666666667 85.3333333333334 160 85.3333333333334M256 405.3333333333333C161.7066666666667 405.3333333333333 85.3333333333333 394.6666666666667 85.3333333333333 320V117.3333333333334C85.3333333333333 76.16 118.8266666666667 42.6666666666667 160 42.6666666666667L128 10.6666666666667V0H384V10.6666666666667L352 42.6666666666667C393.1733333333333 42.6666666666667 426.6666666666667 76.16 426.6666666666667 117.3333333333334V320C426.6666666666667 394.6666666666667 350.2933333333334 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="sunglasses" + unicode="&#xF4E0;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334H85.3333333333333C50.7733333333333 85.3333333333334 20.48 112.2133333333334 16.2133333333333 146.3466666666667L5.5466666666667 210.1333333333333C3.2 228.2666666666667 8.32 245.3333333333334 19.4133333333333 257.7066666666667C30.5066666666667 270.0800000000001 46.72 277.3333333333334 64 277.3333333333334H192C209.7066666666667 277.3333333333334 225.7066666666667 269.8666666666667 235.9466666666667 256.8533333333334C238.2933333333333 253.6533333333333 240.4266666666667 250.24 242.1333333333334 246.4C251.3066666666667 248.32 260.6933333333333 248.32 269.6533333333333 246.4C271.36 250.24 273.4933333333334 253.6533333333333 276.0533333333334 256.8533333333334C286.08 269.8666666666667 302.08 277.3333333333334 320 277.3333333333334H448C465.28 277.3333333333334 481.4933333333333 270.0800000000001 492.5866666666666 257.7066666666667C503.4666666666667 245.3333333333334 508.5866666666666 228.2666666666667 506.4533333333333 210.9866666666667L495.5733333333333 145.4933333333334C491.52 112.2133333333334 461.0133333333333 85.3333333333334 426.6666666666667 85.3333333333334H362.6666666666667C329.3866666666667 85.3333333333334 296.96 110.72 288.8533333333333 142.9333333333333L269.6533333333333 200.7466666666667C261.5466666666666 206.72 250.24 206.72 242.1333333333333 200.7466666666667L222.5066666666666 141.4400000000001C214.8266666666667 110.5066666666667 182.6133333333334 85.3333333333334 149.3333333333333 85.3333333333334z" /> + <glyph glyph-name="surround-sound" + unicode="&#xF5C5;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M165.5466666666667 101.5466666666667L135.4666666666667 71.4666666666667C101.9733333333333 104.5333333333333 85.3333333333333 148.2666666666667 85.3333333333333 192C85.3333333333333 235.7333333333334 101.9733333333333 279.4666666666667 135.2533333333333 312.7466666666667L165.3333333333333 282.6666666666667C140.5866666666667 257.4933333333334 128 224.8533333333333 128 192S140.5866666666667 126.5066666666667 165.5466666666667 101.5466666666666M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667M376.7466666666667 71.2533333333333L346.6666666666667 101.3333333333334C371.4133333333333 126.5066666666667 384 159.1466666666667 384 192S371.4133333333333 257.4933333333334 346.4533333333333 282.4533333333334L376.5333333333333 312.5333333333334C410.0266666666667 279.4666666666667 426.6666666666667 235.7333333333334 426.6666666666667 192C426.6666666666667 148.2666666666667 410.0266666666667 104.5333333333333 376.7466666666667 71.2533333333333M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="swap-horizontal" + unicode="&#xF4E1;" + horiz-adv-x="512" d=" M448 256L362.6666666666667 341.3333333333334V277.3333333333334H213.3333333333333V234.6666666666667H362.6666666666667V170.6666666666667M149.3333333333333 213.3333333333334L64 128L149.3333333333333 42.6666666666667V106.6666666666667H298.6666666666667V149.3333333333334H149.3333333333333V213.3333333333334z" /> + <glyph glyph-name="swap-vertical" + unicode="&#xF4E2;" + horiz-adv-x="512" d=" M192 384L106.6666666666667 298.6666666666667H170.6666666666667V149.3333333333334H213.3333333333333V298.6666666666667H277.3333333333333M341.3333333333333 85.3333333333334V234.6666666666667H298.6666666666667V85.3333333333334H234.6666666666667L320 0L405.3333333333333 85.3333333333334H341.3333333333333z" /> + <glyph glyph-name="swim" + unicode="&#xF4E3;" + horiz-adv-x="512" d=" M42.6666666666667 64C90.0266666666667 85.3333333333334 137.3866666666667 106.6666666666667 184.96 106.6666666666667C232.32 106.6666666666667 279.68 64 327.04 64C374.6133333333333 64 421.9733333333334 106.6666666666667 469.3333333333333 106.6666666666667V42.6666666666667C421.9733333333334 42.6666666666667 374.6133333333333 0 327.04 0C279.68 0 232.32 42.6666666666667 184.96 42.6666666666667C137.3866666666667 42.6666666666667 90.0266666666667 21.3333333333334 42.6666666666667 0V64M184.96 170.6666666666667C168.32 170.6666666666667 151.8933333333333 168.1066666666667 135.4666666666667 163.84L240.4266666666667 237.2266666666667L218.24 263.68C215.2533333333333 267.3066666666667 213.3333333333333 272.2133333333334 213.3333333333333 277.3333333333334C213.3333333333333 284.5866666666667 216.96 291.2000000000001 222.72 295.04L344.7466666666667 380.3733333333334L369.28 345.6L266.0266666666667 273.2800000000001L377.6 140.3733333333333C360.7466666666667 133.3333333333334 343.8933333333333 128 327.04 128C279.68 128 232.32 170.6666666666667 184.96 170.6666666666667M384 298.6666666666667C407.4666666666667 298.6666666666667 426.6666666666667 279.4666666666667 426.6666666666667 256S407.4666666666667 213.3333333333334 384 213.3333333333334S341.3333333333333 232.5333333333334 341.3333333333333 256S360.5333333333333 298.6666666666667 384 298.6666666666667z" /> + <glyph glyph-name="switch" + unicode="&#xF4E4;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H170.6666666666667C158.9333333333333 106.6666666666667 149.3333333333333 116.2666666666667 149.3333333333333 128V384C149.3333333333333 395.7333333333334 158.9333333333333 405.3333333333333 170.6666666666667 405.3333333333333H341.3333333333333C353.0666666666667 405.3333333333333 362.6666666666667 395.7333333333334 362.6666666666667 384V128C362.6666666666667 116.2666666666667 353.0666666666667 106.6666666666667 341.3333333333333 106.6666666666667H277.3333333333333V64M277.3333333333333 320H298.6666666666667V362.6666666666667H277.3333333333333V320M192 362.6666666666667V320H234.6666666666667V362.6666666666667H192M192 277.3333333333334V234.6666666666667H234.6666666666667V277.3333333333334H192M192 192V149.3333333333334H234.6666666666667V192H192z" /> + <glyph glyph-name="sword" + unicode="&#xF4E5;" + horiz-adv-x="512" d=" M147.6266666666667 341.3333333333334H106.6666666666667L298.6666666666667 149.3333333333334L320 169.3866666666667M425.8133333333334 40.1066666666667L407.8933333333333 22.1866666666667C399.5733333333333 13.8666666666667 386.1333333333334 13.8666666666667 377.8133333333334 22.1866666666667L311.2533333333334 88.7466666666667L254.08 32L224 62.08L254.2933333333333 92.3733333333333L64 282.6666666666667V384H165.3333333333333L355.6266666666667 193.7066666666667L385.9200000000001 224L416.0000000000001 193.92L359.0400000000001 136.96L425.6000000000002 70.4C434.1333333333335 61.8666666666667 434.1333333333335 48.4266666666667 425.8133333333335 40.1066666666667z" /> + <glyph glyph-name="sync" + unicode="&#xF4E6;" + horiz-adv-x="512" d=" M256 64C185.3866666666667 64 128 121.3866666666667 128 192C128 213.3333333333334 133.3333333333333 234.0266666666667 142.9333333333333 251.7333333333334L111.7866666666667 282.88C95.1466666666667 256.64 85.3333333333333 225.4933333333334 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334V-42.6666666666666L341.3333333333333 42.6666666666667L256 128M256 362.6666666666667V426.6666666666667L170.6666666666667 341.3333333333334L256 256V320C326.6133333333334 320 384 262.6133333333334 384 192C384 170.6666666666667 378.6666666666667 149.9733333333334 369.0666666666667 132.2666666666667L400.2133333333334 101.12C416.8533333333333 127.36 426.6666666666667 158.5066666666667 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="sync-alert" + unicode="&#xF4E7;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V298.6666666666667H234.6666666666667M448 362.6666666666667H320V234.6666666666667L367.7866666666667 282.4533333333334C390.8266666666667 259.2000000000001 405.3333333333333 227.4133333333334 405.3333333333333 192C405.3333333333333 136.3200000000001 369.7066666666666 88.96 320 71.4666666666667V26.8800000000001C393.6 45.8666666666667 448 112.4266666666667 448 192.0000000000001C448 239.1466666666667 428.5866666666667 281.6 397.6533333333333 312.3200000000001M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 192C64 144.8533333333334 83.4133333333333 102.4 114.3466666666667 71.68L64 21.3333333333334H192V149.3333333333334L144.2133333333333 101.5466666666666C121.1733333333333 124.8 106.6666666666667 156.5866666666667 106.6666666666667 192C106.6666666666667 247.68 142.2933333333333 295.04 192 312.5333333333334V357.12C118.4 338.1333333333334 64 271.5733333333334 64 192z" /> + <glyph glyph-name="sync-off" + unicode="&#xF4E8;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H298.6666666666667V234.6666666666667L346.4533333333334 282.4533333333334C369.4933333333334 259.2000000000001 384 227.4133333333334 384 192C384 170.6666666666667 378.6666666666667 150.6133333333334 369.4933333333334 132.9066666666667L400.64 101.76C417.0666666666667 128 426.6666666666667 158.72 426.6666666666667 192C426.6666666666667 239.1466666666667 407.2533333333334 281.6 376.32 312.32L426.6666666666667 362.6666666666667M61.0133333333333 332.5866666666667L111.36 282.24C94.9333333333333 256 85.3333333333333 225.2800000000001 85.3333333333333 192C85.3333333333333 144.8533333333334 104.7466666666667 102.4 135.68 71.68L85.3333333333333 21.3333333333334H213.3333333333333V149.3333333333334L165.5466666666667 101.5466666666666C142.5066666666667 124.8 128 156.5866666666667 128 192C128 213.3333333333334 133.3333333333333 233.3866666666667 142.5066666666667 251.0933333333334L314.88 78.72C309.3333333333333 75.9466666666667 304.2133333333333 73.3866666666667 298.6666666666667 71.4666666666666V26.88C315.52 31.36 331.52 38.4 346.0266666666667 47.36L396.3733333333333 -2.9866666666667L423.4666666666666 24.1066666666667L88.32 359.68L61.0133333333333 332.5866666666667M213.3333333333333 312.5333333333334V357.12C196.2666666666667 352.64 180.2666666666667 345.6 165.76 336.64L196.9066666666667 305.4933333333334C202.6666666666667 308.0533333333334 207.5733333333333 310.6133333333334 213.3333333333333 312.5333333333334z" /> + <glyph glyph-name="tab" + unicode="&#xF4E9;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V256H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="tab-unselected" + unicode="&#xF4EA;" + horiz-adv-x="512" d=" M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 0C428.8 0 448 19.2 448 42.6666666666667H405.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 384H234.6666666666667V256H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M64 85.3333333333334H106.6666666666667V128H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 341.3333333333334H106.6666666666667V384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 256H106.6666666666667V298.6666666666667H64V256z" /> + <glyph glyph-name="table" + unicode="&#xF4EB;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C83.2 21.3333333333334 64 40.5333333333333 64 64V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667M106.6666666666667 277.3333333333334V192H234.6666666666667V277.3333333333334H106.6666666666667M277.3333333333333 277.3333333333334V192H405.3333333333333V277.3333333333334H277.3333333333333M106.6666666666667 149.3333333333334V64H234.6666666666667V149.3333333333334H106.6666666666667M277.3333333333333 149.3333333333334V64H405.3333333333333V149.3333333333334H277.3333333333333z" /> + <glyph glyph-name="table-column-plus-after" + unicode="&#xF4EC;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333C258.1333333333334 405.3333333333333 277.3333333333333 386.1333333333334 277.3333333333333 362.6666666666667V21.3333333333334C277.3333333333333 -2.1333333333333 258.1333333333334 -21.3333333333333 234.6666666666667 -21.3333333333333H42.6666666666667V405.3333333333333H234.6666666666667M85.3333333333333 234.6666666666667V149.3333333333334H234.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 106.6666666666667V21.3333333333334H234.6666666666667V106.6666666666667H85.3333333333333M85.3333333333333 362.6666666666667V277.3333333333334H234.6666666666667V362.6666666666667H85.3333333333333M320 213.3333333333334H384V277.3333333333334H426.6666666666667V213.3333333333334H490.6666666666666V170.6666666666667H426.6666666666667V106.6666666666667H384V170.6666666666667H320V213.3333333333334z" /> + <glyph glyph-name="table-column-plus-before" + unicode="&#xF4ED;" + horiz-adv-x="512" d=" M277.3333333333333 405.3333333333333C253.8666666666667 405.3333333333333 234.6666666666667 386.1333333333334 234.6666666666667 362.6666666666667V21.3333333333334C234.6666666666667 -2.1333333333333 253.8666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333H469.3333333333333V405.3333333333333H277.3333333333333M426.6666666666667 234.6666666666667V149.3333333333334H277.3333333333333V234.6666666666667H426.6666666666667M426.6666666666667 106.6666666666667V21.3333333333334H277.3333333333333V106.6666666666667H426.6666666666667M426.6666666666667 362.6666666666667V277.3333333333334H277.3333333333333V362.6666666666667H426.6666666666667M192 213.3333333333334H128V277.3333333333334H85.3333333333333V213.3333333333334H21.3333333333333V170.6666666666667H85.3333333333333V106.6666666666667H128V170.6666666666667H192V213.3333333333334z" /> + <glyph glyph-name="table-column-remove" + unicode="&#xF4EE;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H234.6666666666667C258.1333333333334 405.3333333333333 277.3333333333333 386.1333333333334 277.3333333333333 362.6666666666667V21.3333333333334C277.3333333333333 -2.1333333333333 258.1333333333334 -21.3333333333333 234.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 234.6666666666667V149.3333333333334H234.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 106.6666666666667V21.3333333333334H234.6666666666667V106.6666666666667H85.3333333333333M85.3333333333333 362.6666666666667V277.3333333333334H234.6666666666667V362.6666666666667H85.3333333333333M375.2533333333334 192L320 247.2533333333334L350.08 277.3333333333334L405.3333333333333 222.08L460.5866666666666 277.3333333333334L490.6666666666666 247.2533333333334L435.4133333333333 192L490.6666666666666 136.7466666666667L460.5866666666666 106.6666666666667L405.3333333333333 161.92L350.08 106.6666666666667L320 136.7466666666667L375.2533333333334 192z" /> + <glyph glyph-name="table-column-width" + unicode="&#xF4EF;" + horiz-adv-x="512" d=" M106.6666666666667 277.3333333333334H405.3333333333333C428.8 277.3333333333334 448 258.1333333333334 448 234.6666666666667V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V234.6666666666667C64 258.1333333333334 83.2 277.3333333333334 106.6666666666667 277.3333333333334M106.6666666666667 192V128H234.6666666666667V192H106.6666666666667M277.3333333333333 192V128H405.3333333333333V192H277.3333333333333M106.6666666666667 85.3333333333334V21.3333333333334H234.6666666666667V85.3333333333334H106.6666666666667M277.3333333333333 85.3333333333334V21.3333333333334H405.3333333333333V85.3333333333334H277.3333333333333M234.6666666666667 405.3333333333333H448V320H405.3333333333333V362.6666666666667H277.3333333333333V320H234.6666666666667V405.3333333333333z" /> + <glyph glyph-name="table-edit" + unicode="&#xF4F0;" + horiz-adv-x="512" d=" M462.9333333333333 163.2000000000001L441.6 141.8666666666667L397.8666666666666 185.6L419.2 206.9333333333333C423.68 211.6266666666667 431.1466666666666 211.6266666666667 435.6266666666666 206.9333333333333L462.9333333333333 179.6266666666667C467.6266666666666 175.1466666666667 467.6266666666666 167.68 462.9333333333333 163.2000000000001M256 43.9466666666667L385.4933333333334 173.2266666666666L429.2266666666667 129.4933333333333L299.9466666666667 0H256V43.9466666666667M85.3333333333333 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V273.7066666666667L344.9600000000001 192H256V103.04L216.96 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 320V234.6666666666667H213.3333333333333V320H85.3333333333333M256 320V234.6666666666667H384V320H256M85.3333333333333 192V106.6666666666667H213.3333333333333V192H85.3333333333333z" /> + <glyph glyph-name="table-large" + unicode="&#xF4F1;" + horiz-adv-x="512" d=" M85.3333333333333 384H426.6666666666667C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384M85.3333333333333 298.6666666666667V234.6666666666667H170.6666666666667V298.6666666666667H85.3333333333333M213.3333333333333 298.6666666666667V234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333M426.6666666666667 234.6666666666667V298.6666666666667H341.3333333333333V234.6666666666667H426.6666666666667M85.3333333333333 192V128H170.6666666666667V192H85.3333333333333M85.3333333333333 21.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V21.3333333333334M213.3333333333333 192V128H298.6666666666667V192H213.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V85.3333333333334H213.3333333333333V21.3333333333334M426.6666666666667 21.3333333333334V85.3333333333334H341.3333333333333V21.3333333333334H426.6666666666667M426.6666666666667 192H341.3333333333333V128H426.6666666666667V192z" /> + <glyph glyph-name="table-row-height" + unicode="&#xF4F2;" + horiz-adv-x="512" d=" M64 341.3333333333334H320C343.4666666666667 341.3333333333334 362.6666666666667 322.1333333333334 362.6666666666667 298.6666666666667V85.3333333333334C362.6666666666667 61.8666666666667 343.4666666666667 42.6666666666667 320 42.6666666666667H64C40.5333333333333 42.6666666666667 21.3333333333333 61.8666666666667 21.3333333333333 85.3333333333334V298.6666666666667C21.3333333333333 322.1333333333334 40.5333333333333 341.3333333333334 64 341.3333333333334M64 256V192H170.6666666666667V256H64M213.3333333333333 256V192H320V256H213.3333333333333M64 149.3333333333334V85.3333333333334H170.6666666666667V149.3333333333334H64M213.3333333333333 149.3333333333334V85.3333333333334H320V149.3333333333334H213.3333333333333M490.6666666666666 149.3333333333334V298.6666666666667H405.3333333333333V256H448V192H405.3333333333333V149.3333333333334H490.6666666666666z" /> + <glyph glyph-name="table-row-plus-after" + unicode="&#xF4F3;" + horiz-adv-x="512" d=" M469.3333333333333 234.6666666666667C469.3333333333333 211.2 450.1333333333334 192 426.6666666666667 192H85.3333333333333C61.8666666666667 192 42.6666666666667 211.2 42.6666666666667 234.6666666666667V384H85.3333333333333V341.3333333333334H170.6666666666667V384H213.3333333333333V341.3333333333334H298.6666666666667V384H341.3333333333333V341.3333333333334H426.6666666666667V384H469.3333333333333V234.6666666666667M85.3333333333333 234.6666666666667H170.6666666666667V298.6666666666667H85.3333333333333V234.6666666666667M213.3333333333333 234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667M426.6666666666667 234.6666666666667V298.6666666666667H341.3333333333333V234.6666666666667H426.6666666666667M234.6666666666667 149.3333333333334H277.3333333333333V85.3333333333334H341.3333333333333V42.6666666666667H277.3333333333333V-21.3333333333333H234.6666666666667V42.6666666666667H170.6666666666667V85.3333333333334H234.6666666666667V149.3333333333334z" /> + <glyph glyph-name="table-row-plus-before" + unicode="&#xF4F4;" + horiz-adv-x="512" d=" M469.3333333333333 149.3333333333334C469.3333333333333 172.8 450.1333333333334 192 426.6666666666667 192H85.3333333333333C61.8666666666667 192 42.6666666666667 172.8 42.6666666666667 149.3333333333334V0H85.3333333333333V42.6666666666667H170.6666666666667V0H213.3333333333333V42.6666666666667H298.6666666666667V0H341.3333333333333V42.6666666666667H426.6666666666667V0H469.3333333333333V149.3333333333334M85.3333333333333 149.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V149.3333333333334M213.3333333333333 149.3333333333334H298.6666666666667V85.3333333333334H213.3333333333333V149.3333333333334M426.6666666666667 149.3333333333334V85.3333333333334H341.3333333333333V149.3333333333334H426.6666666666667M234.6666666666667 234.6666666666667H277.3333333333333V298.6666666666667H341.3333333333333V341.3333333333334H277.3333333333333V405.3333333333333H234.6666666666667V341.3333333333334H170.6666666666667V298.6666666666667H234.6666666666667V234.6666666666667z" /> + <glyph glyph-name="table-row-remove" + unicode="&#xF4F5;" + horiz-adv-x="512" d=" M200.7466666666667 170.6666666666667L256 115.4133333333334L311.2533333333334 170.6666666666667L341.3333333333333 140.5866666666667L286.08 85.3333333333334L341.3333333333333 30.08L311.2533333333334 0L256 55.2533333333333L200.7466666666667 0L170.6666666666667 30.08L225.92 85.3333333333334L170.6666666666667 140.5866666666667L200.7466666666667 170.6666666666667M469.3333333333333 256C469.3333333333333 232.5333333333334 450.1333333333334 213.3333333333334 426.6666666666667 213.3333333333334H85.3333333333333C61.8666666666667 213.3333333333334 42.6666666666667 232.5333333333334 42.6666666666667 256V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V256M85.3333333333333 256H170.6666666666667V320H85.3333333333333V256M213.3333333333333 256H298.6666666666667V320H213.3333333333333V256M341.3333333333333 256H426.6666666666667V320H341.3333333333333V256z" /> + <glyph glyph-name="tablet" + unicode="&#xF4F6;" + horiz-adv-x="512" d=" M405.3333333333333 64H106.6666666666667V320H405.3333333333333M448 362.6666666666667H64C40.32 362.6666666666667 21.3333333333333 343.68 21.3333333333333 320V64C21.3333333333333 40.5333333333333 40.5333333333333 21.3333333333334 64 21.3333333333334H448C471.4666666666667 21.3333333333334 490.6666666666666 40.5333333333333 490.6666666666666 64V320C490.6666666666666 343.68 471.4666666666667 362.6666666666667 448 362.6666666666667z" /> + <glyph glyph-name="tablet-android" + unicode="&#xF4F7;" + horiz-adv-x="512" d=" M410.6666666666667 42.6666666666667H101.3333333333333V384H410.6666666666667M298.6666666666667 -21.3333333333333H213.3333333333333V0H298.6666666666667M384 448H128C92.5866666666667 448 64 419.4133333333334 64 384V0C64 -35.4133333333333 92.5866666666667 -64 128 -64H384C419.4133333333333 -64 448 -35.4133333333333 448 0V384C448 419.4133333333334 419.4133333333333 448 384 448z" /> + <glyph glyph-name="tablet-ipad" + unicode="&#xF4F8;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H85.3333333333333V384H405.3333333333333M245.3333333333333 -42.6666666666666C227.6266666666667 -42.6666666666666 213.3333333333333 -28.3733333333333 213.3333333333333 -10.6666666666666S227.6266666666667 21.3333333333334 245.3333333333333 21.3333333333334S277.3333333333333 7.04 277.3333333333333 -10.6666666666666S263.04 -42.6666666666666 245.3333333333333 -42.6666666666666M394.6666666666667 448H96C66.56 448 42.6666666666667 424.1066666666667 42.6666666666667 394.6666666666667V-10.6666666666666C42.6666666666667 -40.1066666666666 66.56 -64 96 -64H394.6666666666667C424.1066666666667 -64 448 -40.1066666666666 448 -10.6666666666666V394.6666666666667C448 424.1066666666667 424.1066666666667 448 394.6666666666667 448z" /> + <glyph glyph-name="tag" + unicode="&#xF4F9;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C99.6266666666667 298.6666666666667 85.3333333333333 312.9600000000001 85.3333333333333 330.6666666666667S99.6266666666667 362.6666666666667 117.3333333333333 362.6666666666667S149.3333333333333 348.3733333333334 149.3333333333333 330.6666666666667S135.04 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96L264.7466666666667 392.96C257.0666666666667 400.64 246.4 405.3333333333333 234.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V213.3333333333334C42.6666666666667 201.6 47.36 190.9333333333333 55.2533333333333 183.2533333333333L247.04 -8.7466666666667C254.9333333333333 -16.4266666666666 265.6 -21.3333333333333 277.3333333333333 -21.3333333333333C289.0666666666667 -21.3333333333333 299.7333333333334 -16.4266666666666 307.4133333333333 -8.7466666666667L456.7466666666667 140.5866666666667C464.64 148.2666666666667 469.3333333333333 158.9333333333333 469.3333333333333 170.6666666666667C469.3333333333333 182.6133333333334 464.4266666666666 193.28 456.7466666666667 200.96z" /> + <glyph glyph-name="tag-faces" + unicode="&#xF4FA;" + horiz-adv-x="512" d=" M320 64C249.1733333333333 64 192 121.3866666666667 192 192C192 262.8266666666667 249.1733333333333 320 320 320C390.6133333333333 320 448 262.6133333333334 448 192S390.6133333333333 64 320 64M85.3333333333333 170.6666666666667C73.6 170.6666666666667 64 180.2666666666667 64 192S73.6 213.3333333333334 85.3333333333333 213.3333333333334S106.6666666666667 203.7333333333334 106.6666666666667 192S97.0666666666667 170.6666666666667 85.3333333333333 170.6666666666667M469.3333333333333 384H162.7733333333333C148.6933333333333 384 136.1066666666667 377.1733333333334 128 366.7200000000001L0 192L128 17.4933333333333C136.1066666666667 6.8266666666667 148.6933333333333 0 162.7733333333333 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 365.0133333333333 492.8 384 469.3333333333333 384M277.3333333333333 213.3333333333334C289.0666666666667 213.3333333333334 298.6666666666667 222.9333333333333 298.6666666666667 234.6666666666667S289.0666666666667 256 277.3333333333333 256S256 246.4000000000001 256 234.6666666666667S265.6 213.3333333333334 277.3333333333333 213.3333333333334M320 106.6666666666667C359.68 106.6666666666667 391.4666666666667 133.9733333333334 401.0666666666667 170.6666666666667H238.9333333333334C248.5333333333334 133.9733333333334 280.32 106.6666666666667 320 106.6666666666667M362.6666666666667 213.3333333333334C374.4 213.3333333333334 384 222.9333333333333 384 234.6666666666667S374.4 256 362.6666666666667 256S341.3333333333333 246.4000000000001 341.3333333333333 234.6666666666667S350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334z" /> + <glyph glyph-name="tag-multiple" + unicode="&#xF4FB;" + horiz-adv-x="512" d=" M117.3333333333333 256C135.04 256 149.3333333333333 270.2933333333334 149.3333333333333 288S135.04 320 117.3333333333333 320S85.3333333333333 305.7066666666667 85.3333333333333 288S99.6266666666667 256 117.3333333333333 256M371.4133333333333 200.96C379.0933333333333 193.28 384 182.6133333333334 384 170.6666666666667C384 158.9333333333333 379.3066666666667 148.2666666666667 371.4133333333333 140.5866666666667L264.7466666666667 33.92C257.0666666666667 26.24 246.4 21.3333333333334 234.6666666666667 21.3333333333334C222.9333333333333 21.3333333333334 212.2666666666667 26.0266666666666 204.3733333333333 33.92L55.2533333333333 183.04C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H192C203.7333333333334 362.6666666666667 214.4 357.9733333333334 222.08 350.2933333333334L371.4133333333333 200.96M288.8533333333333 326.1866666666667L310.1866666666666 347.52L456.7466666666667 200.96C464.64 193.28 469.3333333333333 182.4 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.96 140.5866666666667L342.1866666666667 25.8133333333334L320.8533333333334 47.1466666666667L442.6666666666667 170.6666666666667L288.8533333333333 326.1866666666667z" /> + <glyph glyph-name="tag-outline" + unicode="&#xF4FC;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C135.04 298.6666666666667 149.3333333333333 312.9600000000001 149.3333333333333 330.6666666666667S135.04 362.6666666666667 117.3333333333333 362.6666666666667S85.3333333333333 348.3733333333334 85.3333333333333 330.6666666666667S99.6266666666667 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96C464.4266666666666 193.28 469.3333333333333 182.6133333333334 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.7466666666667 140.5866666666667L307.4133333333333 -8.7466666666667C299.7333333333334 -16.4266666666666 289.0666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333C265.6 -21.3333333333333 254.9333333333333 -16.4266666666666 247.04 -8.7466666666667L55.2533333333333 183.2533333333333C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.6533333333333 405.3333333333333 85.3333333333333 405.3333333333333H234.6666666666667C246.4 405.3333333333333 257.0666666666667 400.64 264.7466666666667 392.96L456.7466666666667 200.96M277.3333333333333 21.3333333333334L426.6666666666667 170.6666666666667L245.3333333333333 352L96 202.6666666666667L277.3333333333333 21.3333333333334z" /> + <glyph glyph-name="tag-text-outline" + unicode="&#xF4FD;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C135.04 298.6666666666667 149.3333333333333 312.9600000000001 149.3333333333333 330.6666666666667S135.04 362.6666666666667 117.3333333333333 362.6666666666667S85.3333333333333 348.3733333333334 85.3333333333333 330.6666666666667S99.6266666666667 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96C464.4266666666666 193.28 469.3333333333333 182.6133333333334 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.7466666666667 140.5866666666667L307.4133333333333 -8.7466666666667C299.7333333333334 -16.4266666666666 289.0666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333C265.6 -21.3333333333333 254.9333333333333 -16.4266666666666 247.04 -8.7466666666667L55.2533333333333 183.2533333333333C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.6533333333333 405.3333333333333 85.3333333333333 405.3333333333333H234.6666666666667C246.4 405.3333333333333 257.0666666666667 400.64 264.7466666666667 392.96L456.7466666666667 200.96M277.3333333333333 21.3333333333334L426.6666666666667 170.6666666666667L245.3333333333333 352L96 202.6666666666667L277.3333333333333 21.3333333333334M215.2533333333333 257.92L245.3333333333333 288L362.6666666666667 170.6666666666667L332.5866666666667 140.5866666666667L215.2533333333333 257.92M161.92 204.5866666666667L192 234.6666666666667L277.3333333333333 149.3333333333334L247.2533333333334 119.2533333333333L161.92 204.5866666666667z" /> + <glyph glyph-name="target" + unicode="&#xF4FE;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333V361.1733333333334C157.44 351.36 96.64 290.56 86.8266666666667 213.3333333333334H42.6666666666667V170.6666666666667H86.8266666666667C96.64 93.44 157.44 32.64 234.6666666666667 22.8266666666667V-21.3333333333333H277.3333333333333V22.8266666666667C354.56 32.64 415.36 93.44 425.1733333333333 170.6666666666667H469.3333333333333V213.3333333333334H425.1733333333333C415.36 290.56 354.56 351.36 277.3333333333333 361.1733333333334V405.3333333333333M234.6666666666667 318.2933333333334V277.3333333333334H277.3333333333333V318.0800000000001C330.6666666666667 309.3333333333334 373.3333333333333 266.6666666666667 382.2933333333334 213.3333333333334H341.3333333333333V170.6666666666667H382.08C373.3333333333333 117.3333333333334 330.6666666666667 74.6666666666667 277.3333333333333 65.7066666666667V106.6666666666667H234.6666666666667V65.92C181.3333333333333 74.6666666666667 138.6666666666667 117.3333333333334 129.7066666666667 170.6666666666667H170.6666666666667V213.3333333333334H129.92C138.6666666666667 266.6666666666667 181.3333333333333 309.3333333333334 234.6666666666667 318.2933333333334M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334z" /> + <glyph glyph-name="taxi" + unicode="&#xF4FF;" + horiz-adv-x="512" d=" M106.6666666666667 213.3333333333334L138.6666666666667 309.3333333333334H373.3333333333333L405.3333333333333 213.3333333333334M373.3333333333333 106.6666666666667C355.6266666666667 106.6666666666667 341.3333333333333 120.96 341.3333333333333 138.6666666666667S355.6266666666667 170.6666666666667 373.3333333333333 170.6666666666667S405.3333333333333 156.3733333333333 405.3333333333333 138.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 120.96 106.6666666666667 138.6666666666667S120.96 170.6666666666667 138.6666666666667 170.6666666666667S170.6666666666667 156.3733333333333 170.6666666666667 138.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667M403.6266666666667 320C399.36 332.3733333333334 387.4133333333333 341.3333333333334 373.3333333333333 341.3333333333334H320V384H192V341.3333333333334H138.6666666666667C124.5866666666667 341.3333333333334 112.64 332.3733333333334 108.3733333333333 320L64 192V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H106.6666666666667C118.4 0 128 9.6 128 21.3333333333334V42.6666666666667H384V21.3333333333334C384 9.6 393.6 0 405.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V192L403.6266666666667 320z" /> + <glyph glyph-name="teamviewer" + unicode="&#xF500;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334M149.3333333333333 192L213.3333333333333 256V213.3333333333334H298.6666666666667V256L362.6666666666667 192L298.6666666666667 128V170.6666666666667H213.3333333333333V128L149.3333333333333 192z" /> + <glyph glyph-name="telegram" + unicode="&#xF501;" + horiz-adv-x="512" d=" M208.64 50.1333333333334L214.6133333333333 140.3733333333334L378.4533333333333 288.0000000000001C385.7066666666666 294.6133333333334 376.9599999999999 297.8133333333334 367.36 292.0533333333334L165.12 164.2666666666667L77.6533333333333 192C58.88 197.3333333333334 58.6666666666667 210.3466666666667 81.92 219.7333333333334L422.6133333333334 351.1466666666667C438.1866666666667 358.1866666666667 453.12 347.3066666666668 447.1466666666667 323.4133333333334L389.12 50.1333333333334C385.0666666666667 30.72 373.3333333333334 26.0266666666668 357.12 34.9866666666667L268.8 100.2666666666667L226.3466666666667 59.0933333333334C221.44 54.1866666666667 217.3866666666667 50.1333333333333 208.64 50.1333333333333z" /> + <glyph glyph-name="television" + unicode="&#xF502;" + horiz-adv-x="512" d=" M426.6666666666667 85.3333333333334H85.3333333333333V341.3333333333334H426.6666666666667M426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V85.3333333333334C42.6666666666667 61.8666666666667 61.8666666666667 42.6666666666667 85.3333333333333 42.6666666666667H170.6666666666667V0H341.3333333333333V42.6666666666667H426.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 61.8666666666667 469.3333333333333 85.3333333333334V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="television-guide" + unicode="&#xF503;" + horiz-adv-x="512" d=" M448 85.3333333333334V341.3333333333334H64V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H341.3333333333333V0H170.6666666666667V42.6666666666667H64C40.5333333333333 42.6666666666667 21.3333333333333 61.8666666666667 21.3333333333333 85.3333333333334V341.3333333333334C21.3333333333333 364.8 40.5333333333333 384 64 384H448M106.6666666666667 298.6666666666667H234.6666666666667V213.3333333333334H106.6666666666667V298.6666666666667M106.6666666666667 170.6666666666667H234.6666666666667V128H106.6666666666667V170.6666666666667M277.3333333333333 298.6666666666667H405.3333333333333V256H277.3333333333333V298.6666666666667M277.3333333333333 213.3333333333334H405.3333333333333V128H277.3333333333333V213.3333333333334z" /> + <glyph glyph-name="temperature-celsius" + unicode="&#xF504;" + horiz-adv-x="512" d=" M352 341.3333333333334C385.0666666666667 341.3333333333334 416 331.3066666666667 441.3866666666667 314.0266666666667L416.64 252.3733333333334C399.5733333333333 267.9466666666667 376.9600000000001 277.3333333333334 352 277.3333333333334C298.6666666666667 277.3333333333334 256 234.6666666666667 256 181.3333333333334S298.6666666666667 85.3333333333334 352 85.3333333333334C373.9733333333334 85.3333333333334 394.0266666666667 92.5866666666667 410.24 104.96L434.56 44.16C410.4533333333334 29.6533333333334 382.2933333333334 21.3333333333334 352 21.3333333333334C263.68 21.3333333333334 192 93.0133333333333 192 181.3333333333334C192 269.6533333333334 263.68 341.3333333333334 352 341.3333333333334M128 384C163.4133333333333 384 192 355.4133333333334 192 320S163.4133333333333 256 128 256S64 284.5866666666667 64 320S92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="temperature-fahrenheit" + unicode="&#xF505;" + horiz-adv-x="512" d=" M234.6666666666667 21.3333333333334V341.3333333333334H426.6666666666667V277.3333333333334H298.6666666666667V213.3333333333334H405.3333333333333V149.3333333333334H298.6666666666667V21.3333333333334H234.6666666666667M128 384C163.4133333333333 384 192 355.4133333333334 192 320S163.4133333333333 256 128 256S64 284.5866666666667 64 320S92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="temperature-kelvin" + unicode="&#xF506;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H213.3333333333333V213.3333333333334L320 341.3333333333334H405.3333333333333L296.1066666666667 218.0266666666667L405.3333333333333 21.3333333333334H328.1066666666667L250.88 167.04L213.3333333333333 124.8V21.3333333333334H149.3333333333333V341.3333333333334z" /> + <glyph glyph-name="tennis" + unicode="&#xF507;" + horiz-adv-x="512" d=" M256 405.3333333333333C309.3333333333333 405.3333333333333 357.3333333333333 386.1333333333334 394.6666666666667 354.1333333333334C349.0133333333333 315.0933333333334 320 256.8533333333334 320 192S349.0133333333333 68.9066666666667 394.6666666666667 29.8666666666667C357.3333333333333 -2.1333333333333 309.3333333333333 -21.3333333333333 256 -21.3333333333333S154.6666666666667 -2.1333333333333 117.3333333333333 29.8666666666667C162.9866666666667 68.9066666666667 192 127.1466666666667 192 192S162.9866666666667 315.0933333333334 117.3333333333333 354.1333333333334C154.6666666666667 386.1333333333334 202.6666666666667 405.3333333333333 256 405.3333333333333M469.3333333333333 192C469.3333333333333 142.5066666666667 452.48 97.0666666666667 424.1066666666667 60.8000000000001C386.56 92.16 362.6666666666667 139.3066666666667 362.6666666666667 192S386.56 291.8400000000001 424.1066666666667 323.2000000000001C452.48 286.9333333333334 469.3333333333333 241.4933333333334 469.3333333333333 192M42.6666666666667 192C42.6666666666667 241.4933333333334 59.52 286.9333333333334 87.8933333333333 323.2000000000001C125.44 291.8400000000001 149.3333333333333 244.6933333333334 149.3333333333333 192S125.44 92.16 87.8933333333333 60.8000000000001C59.52 97.0666666666667 42.6666666666667 142.5066666666667 42.6666666666667 192z" /> + <glyph glyph-name="tent" + unicode="&#xF508;" + horiz-adv-x="512" d=" M85.3333333333333 320C85.3333333333333 294.6133333333334 93.6533333333333 271.5733333333334 106.6666666666667 256C71.2533333333333 256 42.6666666666667 284.5866666666667 42.6666666666667 320S71.2533333333333 384 106.6666666666667 384C93.6533333333333 368.4266666666667 85.3333333333333 345.3866666666667 85.3333333333333 320M42.6666666666667 0V42.6666666666667H101.5466666666667L256 346.0266666666667L410.4533333333333 42.6666666666667H469.3333333333333V0H42.6666666666667M256 251.9466666666667L149.3333333333333 42.6666666666667H362.6666666666667L256 251.9466666666667z" /> + <glyph glyph-name="terrain" + unicode="&#xF509;" + horiz-adv-x="512" d=" M298.6666666666667 320L218.6666666666667 213.3333333333334L279.4666666666667 132.2666666666667L245.3333333333333 106.6666666666667C209.28 154.6666666666667 149.3333333333333 234.6666666666667 149.3333333333333 234.6666666666667L21.3333333333333 64H490.6666666666666L298.6666666666667 320z" /> + <glyph glyph-name="test-tube" + unicode="&#xF668;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V362.6666666666667H170.6666666666667V64C170.6666666666667 16.8533333333334 208.8533333333333 -21.3333333333333 256 -21.3333333333333S341.3333333333333 16.8533333333334 341.3333333333333 64V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333M234.6666666666667 106.6666666666667C221.8666666666667 106.6666666666667 213.3333333333333 115.2000000000001 213.3333333333333 128S221.8666666666667 149.3333333333334 234.6666666666667 149.3333333333334S256 140.8 256 128S247.4666666666667 106.6666666666667 234.6666666666667 106.6666666666667M277.3333333333333 192C264.5333333333333 192 256 200.5333333333334 256 213.3333333333334S264.5333333333333 234.6666666666667 277.3333333333333 234.6666666666667S298.6666666666667 226.1333333333334 298.6666666666667 213.3333333333334S290.1333333333334 192 277.3333333333333 192M298.6666666666667 298.6666666666667H213.3333333333333V362.6666666666667H298.6666666666667V298.6666666666667z" /> + <glyph glyph-name="text-shadow" + unicode="&#xF669;" + horiz-adv-x="512" d=" M64 384H341.3333333333333V320H234.6666666666667V64H170.6666666666667V320H64V384M256 298.6666666666667H298.6666666666667V256H256V298.6666666666667M320 298.6666666666667H362.6666666666667V256H320V298.6666666666667M384 298.6666666666667H426.6666666666667V256H384V298.6666666666667M256 234.6666666666667H298.6666666666667V192H256V234.6666666666667M256 170.6666666666667H298.6666666666667V128H256V170.6666666666667M256 106.6666666666667H298.6666666666667V64H256V106.6666666666667M256 42.6666666666667H298.6666666666667V0H256V42.6666666666667z" /> + <glyph glyph-name="text-to-speech" + unicode="&#xF50A;" + horiz-adv-x="512" d=" M170.6666666666667 298.6666666666667C194.1333333333333 298.6666666666667 213.3333333333333 279.4666666666667 213.3333333333333 256V149.3333333333334C213.3333333333333 125.8666666666667 194.1333333333333 106.6666666666667 170.6666666666667 106.6666666666667S128 125.8666666666667 128 149.3333333333334V256C128 279.4666666666667 147.2 298.6666666666667 170.6666666666667 298.6666666666667M298.6666666666667 149.3333333333334C298.6666666666667 85.9733333333334 252.5866666666667 33.28 192 23.04V-21.3333333333333H149.3333333333333V23.04C88.7466666666667 33.28 42.6666666666667 85.9733333333333 42.6666666666667 149.3333333333333H85.3333333333333C85.3333333333333 102.1866666666667 123.52 64 170.6666666666667 64S256 102.1866666666667 256 149.3333333333334H298.6666666666667M456.7466666666667 247.2533333333334L366.2933333333334 156.5866666666667L387.84 234.6666666666667H298.6666666666667C275.2 234.6666666666667 256 253.8666666666667 256 277.3333333333334V362.6666666666667C256 386.1333333333334 275.2 405.3333333333333 298.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V277.3333333333334C469.3333333333333 265.6 464.64 254.9333333333334 456.7466666666667 247.2533333333334z" /> + <glyph glyph-name="text-to-speech-off" + unicode="&#xF50B;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L285.44 92.8000000000001C267.7333333333334 56.5333333333334 233.1733333333333 30.08 192 23.0400000000001V-21.3333333333333H149.3333333333333V23.04C88.7466666666667 33.28 42.6666666666667 85.9733333333333 42.6666666666667 149.3333333333333H85.3333333333333C85.3333333333333 102.1866666666667 123.52 64 170.6666666666667 64C209.4933333333334 64 242.3466666666667 90.0266666666666 252.5866666666667 125.6533333333334L213.3333333333333 164.9066666666667V149.3333333333334C213.3333333333333 125.8666666666667 194.1333333333333 106.6666666666667 170.6666666666667 106.6666666666667S128 125.8666666666667 128 149.3333333333334V250.24L42.6666666666667 335.5733333333334M456.7466666666667 247.2533333333334L366.2933333333334 156.5866666666667L387.84 234.6666666666667H298.6666666666667C275.2 234.6666666666667 256 253.8666666666667 256 277.3333333333334V362.6666666666667C256 386.1333333333334 275.2 405.3333333333333 298.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V277.3333333333334C469.3333333333333 265.6 464.64 254.9333333333334 456.7466666666667 247.2533333333334z" /> + <glyph glyph-name="textbox" + unicode="&#xF60E;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667H469.3333333333333V85.3333333333334H362.6666666666667V42.6666666666667C362.6666666666667 30.9333333333333 372.2666666666667 21.3333333333334 384 21.3333333333334H426.6666666666667V-21.3333333333333H373.3333333333333C361.6 -21.3333333333333 341.3333333333333 -11.7333333333333 341.3333333333333 0C341.3333333333333 -11.7333333333333 321.0666666666667 -21.3333333333333 309.3333333333333 -21.3333333333333H256V21.3333333333334H298.6666666666667C310.4 21.3333333333334 320 30.9333333333333 320 42.6666666666667V341.3333333333334C320 353.0666666666667 310.4 362.6666666666667 298.6666666666667 362.6666666666667H256V405.3333333333333H309.3333333333333C321.0666666666667 405.3333333333333 341.3333333333333 395.7333333333334 341.3333333333333 384C341.3333333333333 395.7333333333334 361.6 405.3333333333333 373.3333333333333 405.3333333333333H426.6666666666667V362.6666666666667H384C372.2666666666667 362.6666666666667 362.6666666666667 353.0666666666667 362.6666666666667 341.3333333333334V298.6666666666667M42.6666666666667 298.6666666666667H277.3333333333333V256H85.3333333333333V128H277.3333333333333V85.3333333333334H42.6666666666667V298.6666666666667M426.6666666666667 128V256H362.6666666666667V128H426.6666666666667z" /> + <glyph glyph-name="texture" + unicode="&#xF50C;" + horiz-adv-x="512" d=" M198.1866666666667 0H258.56L448 189.4400000000001V249.8133333333334M405.3333333333333 0C417.0666666666667 0 427.7333333333334 4.6933333333333 435.4133333333333 12.5866666666667C443.3066666666667 20.2666666666667 448 30.9333333333333 448 42.6666666666667V85.3333333333334L362.6666666666667 0M106.6666666666667 384C83.2 384 64 364.8 64 341.3333333333334V298.6666666666667L149.3333333333333 384M253.44 384L64 194.56V134.1866666666667L313.8133333333334 384M416 382.2933333333334L65.7066666666667 32C67.6266666666667 24.5333333333333 71.4666666666667 17.92 76.5866666666667 12.5866666666667C81.92 7.4666666666667 88.5333333333333 3.6266666666667 96 1.7066666666666L446.5066666666667 352C442.4533333333333 366.9333333333334 430.9333333333333 378.4533333333334 416 382.2933333333334z" /> + <glyph glyph-name="theater" + unicode="&#xF50D;" + horiz-adv-x="512" d=" M85.3333333333333 128H128C151.4666666666667 128 170.6666666666667 108.8 170.6666666666667 85.3333333333334V42.6666666666667H192V85.3333333333334C192 108.8 211.2 128 234.6666666666667 128H277.3333333333333C300.8 128 320 108.8 320 85.3333333333334V42.6666666666667H341.3333333333333V85.3333333333334C341.3333333333333 108.8 360.5333333333333 128 384 128H426.6666666666667C450.1333333333334 128 469.3333333333333 108.8 469.3333333333333 85.3333333333334V42.6666666666667H490.6666666666666V-21.3333333333333H21.3333333333333V42.6666666666667H42.6666666666667V85.3333333333334C42.6666666666667 108.8 61.8666666666667 128 85.3333333333333 128M234.6666666666667 298.6666666666667L320 234.6666666666667L234.6666666666667 170.6666666666667V298.6666666666667M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V159.1466666666667C456.7466666666667 166.6133333333334 442.24 170.6666666666667 426.6666666666667 170.6666666666667V362.6666666666667H85.3333333333333V170.6666666666667C69.76 170.6666666666667 55.2533333333333 166.6133333333334 42.6666666666667 159.1466666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="theme-light-dark" + unicode="&#xF50E;" + horiz-adv-x="512" d=" M160 405.3333333333333C121.8133333333333 380.8 96 337.4933333333334 96 288S121.8133333333333 195.2 160.64 170.6666666666667C95.1466666666667 170.6666666666667 42.6666666666667 223.1466666666667 42.6666666666667 288S95.1466666666667 405.3333333333333 160 405.3333333333333M406.8266666666667 373.3333333333334L437.3333333333333 342.8266666666667L105.1733333333333 10.6666666666667L74.6666666666667 41.1733333333333L406.8266666666667 373.3333333333334M274.9866666666667 321.4933333333334L243.4133333333334 341.3333333333334L212.6933333333333 320L221.6533333333333 356.2666666666667L192 378.88L229.3333333333333 381.44L241.7066666666667 416.64L256 381.8666666666667L292.9066666666667 381.2266666666667L264.1066666666667 357.12L274.9866666666667 321.4933333333334M204.5866666666667 244.48L179.84 260.0533333333334L155.9466666666667 243.4133333333334L163.2 271.5733333333334L139.9466666666667 289.2800000000001L168.96 291.2000000000001L178.56 318.7200000000001L189.44 291.6266666666667L218.4533333333333 290.9866666666667L196.0533333333333 272.4266666666668L204.5866666666666 244.48M405.3333333333333 160C405.3333333333333 95.1466666666667 352.8533333333333 42.6666666666667 288 42.6666666666667C261.9733333333333 42.6666666666667 237.8666666666667 51.2 218.4533333333333 65.4933333333333L382.5066666666667 229.5466666666667C396.8 210.1333333333334 405.3333333333333 186.0266666666668 405.3333333333333 160.0000000000001M311.4666666666667 19.6266666666667L370.56 44.16L365.4400000000001 -27.3066666666667L311.4666666666667 19.6266666666667M403.8400000000001 77.2266666666666L428.3733333333334 136.3199999999999L475.3066666666667 82.1333333333333L403.84 77.2266666666666M428.3733333333333 183.04L404.0533333333333 242.3466666666667L475.3066666666666 237.2266666666667L428.3733333333333 183.04M205.44 44.16L264.5333333333333 19.6266666666667L210.56 -27.0933333333333L205.44 44.16z" /> + <glyph glyph-name="thermometer" + unicode="&#xF50F;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 120.3200000000001 166.1866666666667 151.2533333333333 192 170.6666666666667V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V170.6666666666667C345.8133333333334 151.2533333333333 362.6666666666667 120.3200000000001 362.6666666666667 85.3333333333334M234.6666666666667 277.3333333333334V145.7066666666667C209.7066666666667 136.96 192 113.28 192 85.3333333333334C192 49.92 220.5866666666667 21.3333333333334 256 21.3333333333334S320 49.92 320 85.3333333333334C320 113.28 302.2933333333333 136.96 277.3333333333333 145.7066666666667V277.3333333333334H234.6666666666667z" /> + <glyph glyph-name="thermometer-lines" + unicode="&#xF510;" + horiz-adv-x="512" d=" M362.6666666666667 384H448V341.3333333333334H362.6666666666667V384M362.6666666666667 298.6666666666667H448V256H362.6666666666667V298.6666666666667M362.6666666666667 213.3333333333334H448V170.6666666666667H378.6666666666667L362.6666666666667 189.8666666666667V213.3333333333334M448 128V85.3333333333334H405.3333333333333C405.3333333333333 100.0533333333334 403.2 114.5600000000001 399.1466666666667 128H448M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 120.3200000000001 166.1866666666667 151.2533333333333 192 170.6666666666667V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V170.6666666666667C345.8133333333334 151.2533333333333 362.6666666666667 120.3200000000001 362.6666666666667 85.3333333333334M234.6666666666667 277.3333333333334V145.7066666666667C209.7066666666667 136.96 192 113.28 192 85.3333333333334C192 49.92 220.5866666666667 21.3333333333334 256 21.3333333333334S320 49.92 320 85.3333333333334C320 113.28 302.2933333333333 136.96 277.3333333333333 145.7066666666667V277.3333333333334H234.6666666666667M149.3333333333333 384V341.3333333333334H64V384H149.3333333333333M149.3333333333333 298.6666666666667V256H64V298.6666666666667H149.3333333333333M149.3333333333333 213.3333333333334V189.8666666666667L133.3333333333333 170.6666666666667H64V213.3333333333334H149.3333333333333M64 128H112.8533333333333C108.8 114.56 106.6666666666667 100.0533333333334 106.6666666666667 85.3333333333334H64V128z" /> + <glyph glyph-name="thumb-down" + unicode="&#xF511;" + horiz-adv-x="512" d=" M405.3333333333333 128H490.6666666666666V384H405.3333333333333M320 384H128C110.2933333333333 384 95.1466666666667 373.3333333333334 88.7466666666667 357.9733333333334L24.32 207.5733333333334C22.4 202.6666666666667 21.3333333333333 197.5466666666667 21.3333333333333 192V149.3333333333334C21.3333333333333 125.8666666666667 40.5333333333333 106.6666666666667 64 106.6666666666667H198.6133333333333L178.3466666666666 9.1733333333333C177.92 7.04 177.7066666666667 4.9066666666667 177.7066666666667 2.5600000000001C177.7066666666667 -6.4 181.3333333333333 -14.2933333333333 187.0933333333333 -20.0533333333333L209.7066666666667 -42.6666666666666L350.08 97.92C357.9733333333334 105.6 362.6666666666667 116.2666666666667 362.6666666666667 128V341.3333333333334C362.6666666666667 365.0133333333333 343.4666666666667 384 320 384z" /> + <glyph glyph-name="thumb-down-outline" + unicode="&#xF512;" + horiz-adv-x="512" d=" M405.3333333333333 128V384H490.6666666666666V128H405.3333333333333M320 384C343.4666666666667 384 362.6666666666667 364.8 362.6666666666667 341.3333333333334V128C362.6666666666667 116.2666666666667 357.9733333333334 105.6 350.08 97.92L209.7066666666667 -42.6666666666666L187.0933333333333 -20.0533333333333C181.3333333333333 -14.2933333333333 177.7066666666667 -6.4 177.7066666666667 2.5599999999999L178.3466666666666 9.1733333333333L198.6133333333333 106.6666666666666H64C40.32 106.6666666666666 21.3333333333333 125.8666666666666 21.3333333333333 149.3333333333333V192C21.3333333333333 197.5466666666666 22.4 202.6666666666666 24.32 207.5733333333333L88.7466666666667 357.9733333333333C95.1466666666667 373.3333333333334 110.2933333333333 384 128 384H320M320 341.3333333333334H127.36L64 192V149.3333333333334H251.3066666666667L227.2 35.84L320 128.64V341.3333333333334z" /> + <glyph glyph-name="thumb-up" + unicode="&#xF513;" + horiz-adv-x="512" d=" M490.6666666666666 234.6666666666667C490.6666666666666 258.3466666666667 471.4666666666667 277.3333333333334 448 277.3333333333334H313.1733333333333L333.6533333333333 374.8266666666667C334.08 376.9600000000001 334.2933333333333 379.3066666666667 334.2933333333333 381.6533333333333C334.2933333333333 390.4 330.6666666666667 398.5066666666667 324.9066666666667 404.2666666666667L302.2933333333333 426.6666666666667L161.92 286.2933333333334C154.0266666666667 278.4 149.3333333333333 267.7333333333334 149.3333333333333 256V42.6666666666667C149.3333333333333 19.2 168.5333333333333 0 192 0H384C401.7066666666666 0 416.8533333333333 10.6666666666667 423.2533333333334 26.0266666666666L487.6799999999999 176.4266666666667C489.6 181.3333333333334 490.6666666666666 186.4533333333334 490.6666666666666 192V234.6666666666667M21.3333333333333 0H106.6666666666667V256H21.3333333333333V0z" /> + <glyph glyph-name="thumb-up-outline" + unicode="&#xF514;" + horiz-adv-x="512" d=" M106.6666666666667 256V0H21.3333333333333V256H106.6666666666667M192 0C168.5333333333333 0 149.3333333333333 19.2 149.3333333333333 42.6666666666667V256C149.3333333333333 267.7333333333334 154.0266666666667 278.4 161.92 286.0800000000001L302.2933333333333 426.6666666666667L324.9066666666667 404.0533333333334C330.6666666666667 398.2933333333334 334.2933333333333 390.4 334.2933333333333 381.6533333333333L333.6533333333333 374.8266666666667L313.3866666666667 277.3333333333334H448C471.6799999999999 277.3333333333334 490.6666666666666 258.1333333333334 490.6666666666666 234.6666666666667V192C490.6666666666666 186.4533333333334 489.6 181.3333333333334 487.6799999999999 176.4266666666667L423.2533333333334 26.0266666666666C416.8533333333333 10.6666666666667 401.7066666666666 0 384 0H192M192 42.6666666666667H384.64L448 192V234.6666666666667H260.48L284.5866666666667 348.1600000000001L192 255.36V42.6666666666667z" /> + <glyph glyph-name="thumbs-up-down" + unicode="&#xF515;" + horiz-adv-x="512" d=" M480 224H336C322.7733333333333 224 311.4666666666667 215.8933333333333 306.56 204.5866666666667L258.3466666666667 91.7333333333334C256.8533333333334 88.1066666666667 256 84.0533333333334 256 80V53.3333333333334C256 41.6 265.6 32 277.3333333333334 32H387.84L373.3333333333333 -35.84V-40.9599999999999C373.3333333333333 -47.5733333333333 376.1066666666667 -53.3333333333333 380.3733333333333 -58.0266666666666L397.2266666666666 -74.6666666666666L502.6133333333333 30.72C508.3733333333333 36.48 512 44.5866666666667 512 53.3333333333334V192C512 209.7066666666667 497.7066666666666 224 480 224M256 309.3333333333334C256 321.0666666666667 246.4 330.6666666666667 234.6666666666667 330.6666666666667H124.16L138.6666666666667 398.5066666666667V403.4133333333334C138.6666666666667 410.0266666666667 135.8933333333333 416 131.6266666666667 420.48L114.7733333333333 437.3333333333333L9.3866666666667 331.9466666666667C3.6266666666667 326.1866666666667 0 318.0800000000001 0 309.3333333333334V170.6666666666667C0 152.96 14.2933333333333 138.6666666666667 32 138.6666666666667H176C189.2266666666666 138.6666666666667 200.5333333333333 146.7733333333334 205.44 158.0800000000001L253.6533333333333 270.9333333333334C255.1466666666667 274.56 256 278.6133333333334 256 282.6666666666667V309.3333333333334z" /> + <glyph glyph-name="ticket" + unicode="&#xF516;" + horiz-adv-x="512" d=" M332.3733333333334 89.6L256 138.6666666666667L179.6266666666667 89.6L202.6666666666667 177.4933333333334L132.48 234.6666666666667L223.1466666666667 240.2133333333334L256 324.2666666666667L288.8533333333333 240.2133333333334L379.52 234.6666666666667L309.3333333333333 177.4933333333334M426.6666666666667 192C426.6666666666667 215.68 445.8666666666666 234.6666666666667 469.3333333333333 234.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V234.6666666666667C66.3466666666667 234.6666666666667 85.3333333333333 215.4666666666667 85.3333333333333 192S66.1333333333333 149.3333333333334 42.6666666666667 149.3333333333334V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V149.3333333333334C445.8666666666666 149.3333333333334 426.6666666666667 168.5333333333334 426.6666666666667 192z" /> + <glyph glyph-name="ticket-account" + unicode="&#xF517;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 168.5333333333334 445.8666666666666 149.3333333333334 469.3333333333333 149.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V149.3333333333334C66.3466666666667 149.3333333333334 85.3333333333333 168.5333333333334 85.3333333333333 192S66.1333333333333 234.6666666666667 42.6666666666667 234.6666666666667V320C42.6666666666667 343.68 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V234.6666666666667C445.8666666666666 234.6666666666667 426.6666666666667 215.4666666666667 426.6666666666667 192M352 101.3333333333334C352 133.3333333333334 288 149.3333333333334 256 149.3333333333334S160 133.3333333333334 160 101.3333333333334V85.3333333333334H352V101.3333333333334M256 186.6666666666667C282.4533333333333 186.6666666666667 304 208.2133333333334 304 234.6666666666667S282.4533333333333 282.6666666666667 256 282.6666666666667S208 261.12 208 234.6666666666667S229.5466666666667 186.6666666666667 256 186.6666666666667z" /> + <glyph glyph-name="ticket-confirmation" + unicode="&#xF518;" + horiz-adv-x="512" d=" M277.3333333333333 266.6666666666667H234.6666666666667V309.3333333333334H277.3333333333333V266.6666666666667M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V170.6666666666667M277.3333333333333 74.6666666666667H234.6666666666667V117.3333333333334H277.3333333333333V74.6666666666667M469.3333333333333 234.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V234.6666666666667C66.3466666666667 234.6666666666667 85.3333333333333 215.4666666666667 85.3333333333333 192S66.1333333333333 149.3333333333334 42.6666666666667 149.3333333333334V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V149.3333333333334C445.8666666666666 149.3333333333334 426.6666666666667 168.5333333333334 426.6666666666667 192S445.8666666666666 234.6666666666667 469.3333333333333 234.6666666666667z" /> + <glyph glyph-name="tie" + unicode="&#xF519;" + horiz-adv-x="512" d=" M128 405.3333333333333L213.3333333333333 320L149.3333333333333 85.3333333333334L256 -21.3333333333333L362.6666666666667 85.3333333333334L298.6666666666667 320L384 405.3333333333333z" /> + <glyph glyph-name="timelapse" + unicode="&#xF51A;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M346.4533333333334 282.4533333333334C321.4933333333334 307.6266666666667 288.64 320 256 320V192L165.5466666666667 101.5466666666666C215.4666666666667 51.6266666666667 296.5333333333333 51.6266666666667 346.4533333333334 101.5466666666666C396.5866666666667 151.4666666666667 396.5866666666667 232.5333333333333 346.4533333333334 282.4533333333333z" /> + <glyph glyph-name="timer" + unicode="&#xF51B;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M405.9733333333334 290.3466666666667L436.2666666666667 320.64C426.6666666666668 331.52 417.0666666666667 341.3333333333333 406.1866666666667 350.7200000000001L375.8933333333333 320C342.8266666666667 346.88 301.2266666666667 362.6666666666667 256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333C362.6666666666667 -21.3333333333333 448 64.64 448 170.6666666666667C448 215.8933333333334 432.2133333333334 257.4933333333334 405.9733333333334 290.3466666666667M234.6666666666667 149.3333333333334H277.3333333333333V277.3333333333334H234.6666666666667M320 426.6666666666667H192V384H320V426.6666666666667z" /> + <glyph glyph-name="timer-10" + unicode="&#xF51C;" + horiz-adv-x="512" d=" M275.2 165.9733333333334C275.2 153.1733333333334 274.3466666666667 142.2933333333334 272.64 133.3333333333334C270.9333333333334 124.3733333333333 268.3733333333334 117.3333333333334 264.9600000000001 111.5733333333334C261.5466666666667 106.0266666666666 257.2800000000001 101.9733333333334 252.3733333333334 99.4133333333334C247.4666666666667 96.8533333333334 241.4933333333334 96 234.6666666666667 96C228.4800000000001 96 222.5066666666667 96.8533333333334 217.3866666666667 99.4133333333334C212.2666666666667 101.9733333333334 208 106.0266666666666 204.5866666666667 111.5733333333334C201.1733333333334 117.3333333333334 198.4 124.3733333333333 196.48 133.3333333333334C194.56 142.2933333333334 193.7066666666667 153.1733333333334 193.7066666666667 165.9733333333334V219.3066666666667C193.7066666666667 232.1066666666667 194.56 242.9866666666667 196.48 251.7333333333333C198.4 260.48 200.96 267.52 204.5866666666667 273.0666666666667C208 278.4 212.2666666666667 282.24 217.3866666666667 284.8C222.5066666666667 287.1466666666667 228.2666666666667 288 234.6666666666667 288C241.2800000000001 288 247.04 287.1466666666667 251.9466666666667 284.8C257.0666666666667 282.4533333333333 261.3333333333334 278.6133333333334 264.7466666666667 273.0666666666667C268.1600000000001 267.7333333333334 270.9333333333334 260.6933333333334 272.64 251.9466666666667C274.3466666666667 243.2 275.4133333333334 232.32 275.4133333333334 219.52V165.9733333333334M294.8266666666667 297.6C288 306.1333333333334 278.8266666666667 312.5333333333333 268.5866666666667 316.3733333333334C258.56 320 247.04 322.1333333333334 234.6666666666667 322.1333333333334C222.2933333333333 322.1333333333334 210.9866666666667 320 200.7466666666667 316.3733333333334C190.5066666666667 312.5333333333334 181.3333333333333 306.3466666666667 174.5066666666667 297.6C167.2533333333333 288.8533333333334 161.7066666666667 277.3333333333334 157.6533333333333 263.68C153.8133333333333 249.8133333333334 151.68 232.7466666666667 151.68 212.6933333333333V171.7333333333334C151.68 151.68 153.6 134.6133333333334 157.6533333333333 120.7466666666667C161.7066666666667 106.6666666666667 167.2533333333333 95.36 174.72 86.6133333333334C181.9733333333333 77.8666666666667 190.72 71.4666666666666 200.96 67.6266666666667C211.2 63.9999999999999 222.5066666666667 61.6533333333333 234.6666666666667 61.6533333333333C247.4666666666667 61.6533333333333 258.7733333333333 63.9999999999999 268.8 67.6266666666667C279.04 71.4666666666666 288 77.8666666666667 294.8266666666667 86.6133333333334C302.08 95.36 307.6266666666667 106.6666666666667 311.4666666666667 120.7466666666667C315.3066666666666 134.6133333333334 317.44 151.68 317.44 171.7333333333334V212.6933333333333C317.44 232.7466666666667 315.52 249.8133333333334 311.4666666666667 263.68C307.6266666666667 277.3333333333334 302.08 289.0666666666667 294.8266666666667 297.6M507.3066666666667 141.44C504.32 147.4133333333333 499.84 152.7466666666667 493.8666666666667 157.2266666666667C487.8933333333333 161.7066666666667 480.8533333333334 165.5466666666667 472.32 168.5333333333333S454.1866666666666 174.2933333333333 443.52 176.64C436.0533333333333 178.1333333333333 429.8666666666666 179.84 424.9599999999999 181.3333333333334C420.0533333333333 183.2533333333333 415.9999999999999 184.96 413.2266666666666 186.88C410.2399999999999 188.8 408.32 190.9333333333333 407.2533333333332 193.28C406.1866666666666 195.6266666666667 405.3333333333333 198.4 405.3333333333333 201.6C405.3333333333333 204.5866666666667 406.1866666666666 207.5733333333334 407.4666666666666 210.3466666666667C408.7466666666666 213.3333333333334 410.6666666666666 215.68 413.2266666666666 217.6C415.9999999999999 219.7333333333334 418.9866666666666 221.44 422.8266666666666 222.72S431.3599999999999 224.6400000000001 436.4799999999999 224.6400000000001C441.8133333333333 224.6400000000001 446.5066666666666 224.0000000000001 450.5599999999999 222.2933333333334C454.6133333333333 220.8000000000001 458.0266666666666 218.6666666666667 460.8 216.1066666666668C463.5733333333333 213.3333333333334 465.4933333333332 210.5600000000001 466.9866666666666 207.1466666666667C468.2666666666665 203.7333333333334 469.3333333333333 200.3200000000001 469.3333333333333 196.6933333333334H510.7199999999999C510.7199999999999 205.0133333333334 509.0133333333333 212.6933333333334 505.6 219.9466666666667C502.1866666666666 227.2000000000001 497.28 233.3866666666668 490.6666666666666 238.7200000000001C484.48 244.0533333333334 476.8 248.1066666666668 467.6266666666667 251.3066666666668C458.6666666666666 254.5066666666667 448 256 436.48 256C425.6 256 416 254.5066666666667 406.8266666666667 251.52C398.08 248.5333333333333 390.4 244.48 384 239.36C378.0266666666667 234.6666666666667 373.3333333333333 228.2666666666667 369.92 221.44C366.5066666666667 214.6133333333333 365.0133333333333 207.5733333333333 365.0133333333333 199.8933333333333C365.0133333333333 192 366.7199999999999 185.1733333333334 369.92 179.4133333333334C373.3333333333333 173.4400000000001 377.6 168.3200000000001 384 163.84C389.3333333333333 159.36 396.3733333333333 155.7333333333334 404.48 152.5333333333334C412.5866666666667 149.3333333333334 421.76 146.9866666666667 431.5733333333333 144.8533333333334C439.8933333333333 143.1466666666667 446.7200000000001 141.2266666666667 451.84 139.3066666666667S461.0133333333333 135.2533333333334 464 133.1200000000001C466.7733333333333 130.9866666666667 468.6933333333333 128.0000000000001 469.3333333333333 125.8666666666667C470.8266666666667 123.3066666666667 471.2533333333333 120.5333333333334 471.2533333333333 117.3333333333334C471.2533333333333 110.72 468.48 105.3866666666667 462.72 101.1200000000001C456.96 96.8533333333334 448.64 94.9333333333334 437.3333333333333 94.9333333333334C433.0666666666667 94.9333333333334 428.5866666666667 95.3600000000001 424.1066666666667 96.64C419.6266666666666 97.7066666666667 416 99.4133333333334 412.16 101.76C408.5333333333333 104.1066666666667 405.3333333333333 107.3066666666667 403.4133333333333 111.1466666666667C401.0666666666667 114.9866666666667 399.7866666666667 119.8933333333333 399.5733333333333 125.44H359.2533333333334C359.2533333333334 117.3333333333333 360.9599999999999 110.2933333333333 364.3733333333333 103.04C367.7866666666667 96 372.6933333333333 89.1733333333334 379.3066666666666 83.2C385.9199999999999 77.44 394.0266666666667 72.7466666666667 403.8399999999999 69.12C413.6533333333333 65.4933333333333 424.7466666666666 64 437.3333333333333 64C448.8533333333333 64 458.6666666666666 65.0666666666667 468.2666666666665 67.84C477.4399999999999 70.6133333333334 485.3333333333333 74.6666666666667 491.9466666666665 79.36C498.5599999999998 84.2666666666667 503.4666666666665 90.24 507.0933333333332 97.0666666666666C510.7199999999999 103.8933333333333 511.9999999999999 111.36 511.9999999999999 119.68S510.5066666666665 135.4666666666667 507.3066666666666 141.44M0 283.3066666666667V247.4666666666667L64 268.8V64H106.6666666666667V320H101.3333333333333L0 283.3066666666667z" /> + <glyph glyph-name="timer-3" + unicode="&#xF51D;" + horiz-adv-x="512" d=" M445.2266666666667 141.4400000000001C442.24 147.4133333333334 437.3333333333333 152.7466666666667 431.7866666666667 157.2266666666667C425.8133333333334 161.7066666666667 418.7733333333334 165.5466666666668 410.24 168.5333333333334S392.1066666666667 174.2933333333334 381.44 176.6400000000001C373.9733333333333 178.1333333333334 367.7866666666667 179.84 362.6666666666667 181.3333333333334C357.9733333333334 183.2533333333334 354.1333333333334 184.96 351.1466666666667 186.8800000000001S346.24 190.9333333333334 345.1733333333333 193.2800000000001C344.1066666666667 195.6266666666667 343.4666666666667 198.4000000000001 343.4666666666667 201.6000000000001C343.4666666666667 204.8000000000001 344.1066666666667 207.5733333333334 345.3866666666667 210.3466666666668C346.6666666666667 213.3333333333334 348.5866666666667 215.6800000000001 351.1466666666667 217.6000000000001C353.7066666666667 219.7333333333334 356.9066666666667 221.4400000000001 360.7466666666667 222.7200000000001S369.28 224.6400000000001 374.4 224.6400000000001C379.7333333333334 224.6400000000001 384 224.0000000000001 388.48 222.2933333333334C392.5333333333334 220.8000000000001 395.9466666666667 218.6666666666668 398.7200000000001 216.1066666666668C401.4933333333334 213.3333333333334 403.4133333333333 210.5600000000001 405.3333333333333 207.1466666666668C406.1866666666666 203.7333333333334 407.04 200.3200000000001 407.04 196.6933333333335H448.64C448.64 205.0133333333334 446.9333333333333 212.6933333333335 443.52 219.9466666666668C440.1066666666667 227.2000000000001 435.2 233.3866666666668 428.8 238.7200000000001C422.3999999999999 244.0533333333335 414.7199999999999 248.1066666666668 405.3333333333333 251.3066666666668C396.3733333333332 254.5066666666668 385.9199999999999 256.0000000000001 374.3999999999999 256.0000000000001C363.5199999999999 256.0000000000001 353.4933333333333 254.5066666666668 344.7466666666666 251.5200000000001C335.9999999999999 248.5333333333334 328.32 244.4800000000001 322.1333333333332 239.3600000000001C315.9466666666666 234.6666666666668 311.2533333333332 228.2666666666668 307.8399999999999 221.4400000000001C304.4266666666666 214.6133333333334 302.9333333333332 207.5733333333334 302.9333333333332 199.8933333333334C302.9333333333332 192.0000000000001 304.6399999999999 185.3866666666668 307.8399999999999 179.4133333333334C311.0399999999999 173.4400000000001 315.7333333333333 168.3200000000001 321.4933333333333 163.8400000000001C327.2533333333332 159.3600000000001 334.2933333333333 155.7333333333334 342.3999999999999 152.5333333333334C350.5066666666666 149.3333333333334 359.6799999999999 146.9866666666668 369.4933333333333 144.8533333333335C377.8133333333333 143.1466666666668 384.64 141.2266666666668 389.7599999999999 139.3066666666668C394.6666666666666 137.3866666666668 398.9333333333332 135.2533333333335 401.9199999999999 133.1200000000001C404.6933333333332 130.9866666666668 406.6133333333333 128.0000000000001 407.6799999999999 125.8666666666668C408.7466666666666 123.3066666666669 409.1733333333333 120.5333333333335 409.1733333333333 117.3333333333335C409.1733333333333 110.7200000000001 406.3999999999999 105.3866666666668 400.64 101.1200000000001C394.6666666666666 96.8533333333335 386.56 94.9333333333335 375.68 94.9333333333335C370.9866666666667 94.9333333333335 366.5066666666667 95.3600000000001 362.0266666666667 96.6400000000001C357.5466666666666 97.7066666666668 353.4933333333334 99.4133333333334 350.08 101.7600000000001C346.4533333333333 104.1066666666667 343.68 107.3066666666667 341.3333333333333 111.1466666666668C338.9866666666667 114.9866666666667 337.7066666666667 119.8933333333334 337.4933333333334 125.4400000000001H297.1733333333333C297.1733333333333 117.3333333333334 298.6666666666667 110.2933333333334 302.2933333333333 103.0400000000001C305.7066666666667 96.0000000000001 310.6133333333334 89.1733333333334 317.2266666666667 83.2000000000001C323.84 77.4400000000001 331.9466666666666 72.7466666666668 341.3333333333333 69.1200000000001C352 65.4933333333333 362.6666666666667 64.0000000000001 375.4666666666667 64.0000000000001C386.7733333333334 64.0000000000001 397.0133333333334 65.0666666666668 406.1866666666667 67.8400000000001C415.36 70.6133333333334 423.2533333333334 74.6666666666667 429.8666666666667 79.3600000000001C436.48 84.2666666666668 441.3866666666667 90.2400000000001 445.0133333333334 97.0666666666667C448.6400000000001 103.8933333333334 450.3466666666667 111.36 450.3466666666667 119.6800000000001C449.9200000000001 128.0000000000001 448.0000000000001 135.4666666666667 445.2266666666668 141.4400000000001M247.6800000000001 171.3066666666667C244.2666666666668 176.4266666666667 240.0000000000001 181.3333333333334 234.6666666666668 185.1733333333334C229.1200000000001 189.2266666666667 222.5066666666668 192.6400000000001 214.6133333333335 195.4133333333334C221.0133333333335 198.4000000000001 226.7733333333335 201.8133333333334 231.6800000000001 206.0800000000001C236.5866666666668 210.3466666666667 240.6400000000002 214.8266666666667 243.8400000000002 219.7333333333334C247.0400000000002 224.6400000000001 249.6000000000002 229.5466666666668 251.0933333333335 234.6666666666667C252.8000000000002 240.0000000000001 253.4400000000001 245.3333333333334 253.4400000000001 250.4533333333334C253.4400000000001 262.1866666666667 251.5200000000001 272.6400000000001 247.4666666666668 281.6C243.6266666666668 290.5600000000001 238.0800000000002 298.0266666666668 230.8266666666668 304.2133333333334C224.0000000000002 310.1866666666667 215.2533333333335 314.8800000000001 205.2266666666668 317.8666666666667C195.6266666666668 320.6400000000001 184.5333333333335 322.1333333333334 172.5866666666669 322.1333333333334C160.8533333333335 322.1333333333334 149.9733333333335 320.0000000000001 140.1600000000002 317.0133333333334C130.1333333333335 313.3866666666667 121.6000000000002 308.48 114.5600000000002 302.2933333333334C107.5200000000002 296.1066666666667 101.7600000000002 288.8533333333334 97.9200000000002 280.3200000000001C93.6533333333335 272.0000000000001 91.7333333333335 262.6133333333334 91.7333333333335 252.8000000000001H133.9733333333335C133.9733333333335 258.3466666666667 135.0400000000002 263.2533333333334 136.9600000000002 267.5200000000001C138.6666666666668 271.7866666666667 141.6533333333335 275.6266666666667 145.0666666666668 278.6133333333334C148.6933333333335 281.6 152.7466666666669 283.9466666666667 157.4400000000002 285.6533333333334C162.1333333333335 287.36 167.2533333333335 288 173.0133333333335 288C186.0266666666668 288 195.6266666666668 284.8 202.0266666666668 278.1866666666667C208.4266666666669 271.5733333333334 211.4133333333335 262.1866666666667 211.4133333333335 250.0266666666667C211.4133333333335 244.2666666666667 210.5600000000002 238.9333333333334 208.8533333333335 234.6666666666667C207.1466666666668 229.5466666666667 204.3733333333335 225.4933333333334 200.7466666666668 222.08C197.1200000000002 218.6666666666667 192.6400000000001 216.1066666666667 187.3066666666668 214.1866666666667C181.9733333333335 212.2666666666667 175.5733333333334 211.4133333333334 168.3200000000001 211.4133333333334H143.36V177.92H168.5333333333333C175.7866666666667 177.92 182.1866666666667 177.0666666666667 187.9466666666667 175.5733333333334C193.7066666666667 173.8666666666667 198.6133333333334 171.5200000000001 202.6666666666667 168.1066666666667C206.72 164.6933333333334 209.92 160 212.0533333333333 155.0933333333334C214.1866666666667 149.9733333333334 215.4666666666667 143.5733333333334 215.4666666666667 136.5333333333334C215.4666666666667 123.3066666666667 211.6266666666667 113.2800000000001 204.16 106.6666666666667C196.6933333333333 99.2000000000001 186.24 96 173.2266666666667 96C167.04 96 161.28 96.64 156.16 98.5600000000001C151.04 100.2666666666667 146.7733333333334 102.8266666666667 143.1466666666667 106.6666666666667C139.52 109.6533333333334 136.7466666666667 113.4933333333334 134.8266666666667 118.1866666666667C132.9066666666667 122.8800000000001 131.84 128.0000000000001 131.84 133.5466666666668H89.3866666666667C89.3866666666667 121.8133333333334 91.7333333333334 111.5733333333334 96 102.6133333333334C100.6933333333333 93.6533333333334 106.6666666666667 86.1866666666667 114.56 80.2133333333334C122.24 74.6666666666667 130.9866666666667 69.7600000000001 141.0133333333333 66.7733333333334C151.04 64.0000000000001 161.4933333333334 62.2933333333334 172.5866666666667 62.2933333333334C184.7466666666667 62.2933333333334 195.84 64 206.2933333333333 67.2000000000001C216.7466666666667 70.4 225.7066666666667 75.3066666666667 233.1733333333333 81.7066666666667C240.8533333333333 88.1066666666667 246.8266666666667 96.0000000000001 251.0933333333333 105.1733333333334C255.36 114.3466666666668 257.4933333333334 125.0133333333334 257.4933333333334 136.7466666666668C257.4933333333334 142.9333333333334 256.64 149.3333333333334 255.1466666666667 155.0933333333334C253.44 160.0000000000001 251.0933333333334 165.9733333333334 247.68 171.3066666666667z" /> + <glyph glyph-name="timer-off" + unicode="&#xF51E;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667C106.6666666666667 197.9733333333333 114.1333333333333 224 126.9333333333333 245.3333333333334L330.6666666666667 41.8133333333334C309.3333333333333 28.8000000000001 283.3066666666666 21.3333333333334 256 21.3333333333334M64 362.6666666666667L37.3333333333333 335.5733333333334L96 276.6933333333334C75.7333333333333 246.4000000000001 64 209.92 64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C295.2533333333334 -21.3333333333333 331.7333333333334 -9.6 362.6666666666667 10.6666666666667L416 -42.6666666666666L442.6666666666667 -15.5733333333333L278.1866666666666 149.3333333333334L64 362.6666666666667M234.6666666666667 246.6133333333333L277.3333333333333 203.9466666666667V277.3333333333334H234.6666666666667M320 426.6666666666667H192V384H320M406.1866666666666 350.9333333333334L375.8933333333333 320.64C342.8266666666667 346.88 301.2266666666667 362.6666666666667 256 362.6666666666667C216.96 362.6666666666667 180.6933333333333 350.9333333333334 150.4 330.6666666666667L181.3333333333333 299.9466666666667C203.3066666666667 312.5333333333334 228.9066666666667 320 256 320C338.56 320 405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667C405.3333333333333 143.5733333333334 397.8666666666666 117.9733333333334 385.28 96L416 65.28C436.2666666666667 95.36 448 131.6266666666667 448 170.6666666666667C448 215.8933333333334 432.2133333333334 257.4933333333334 405.9733333333334 290.3466666666667L436.2666666666667 320.64L406.1866666666667 350.9333333333334z" /> + <glyph glyph-name="timer-sand" + unicode="&#xF51F;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333V362.6666666666667H384V268.5866666666667L307.4133333333333 192L384 115.4133333333334V21.3333333333334H426.6666666666667V-21.3333333333333H85.3333333333333V21.3333333333334H128V115.4133333333334L204.5866666666667 192L128 268.5866666666667V362.6666666666667H85.3333333333333V405.3333333333333H426.6666666666667M341.3333333333333 97.92L277.3333333333333 161.92V222.08L341.3333333333333 286.0800000000001V362.6666666666667H170.6666666666667V286.0800000000001L234.6666666666667 222.08V161.92L170.6666666666667 97.92V85.3333333333334H213.3333333333333L256 128L298.6666666666667 85.3333333333334H341.3333333333333V97.92M256 256L213.3333333333333 298.6666666666667H298.6666666666667L256 256z" /> + <glyph glyph-name="timetable" + unicode="&#xF520;" + horiz-adv-x="512" d=" M298.6666666666667 192H330.6666666666667V131.84L382.7200000000001 101.76L366.7200000000001 74.0266666666666L298.6666666666667 113.28V192M85.3333333333333 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V232.5333333333334C453.1199999999999 205.6533333333334 469.3333333333333 168.7466666666667 469.3333333333333 128C469.3333333333333 45.44 402.56 -21.3333333333333 320 -21.3333333333333C279.2533333333334 -21.3333333333333 242.3466666666667 -5.1199999999999 215.4666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 128V64H184.96C175.7866666666667 83.4133333333334 170.6666666666667 105.1733333333334 170.6666666666667 128H85.3333333333333M85.3333333333333 277.3333333333334H213.3333333333333V341.3333333333334H85.3333333333333V277.3333333333334M384 277.3333333333334V341.3333333333334H256V277.3333333333334H384M85.3333333333333 170.6666666666667H176.8533333333333C184.1066666666666 195.2 197.5466666666667 217.1733333333334 215.4666666666667 234.6666666666667H85.3333333333333V170.6666666666667M320 231.4666666666667C262.8266666666667 231.4666666666667 216.5333333333333 185.1733333333334 216.5333333333333 128C216.5333333333333 70.8266666666667 262.8266666666667 24.5333333333333 320 24.5333333333333C377.1733333333333 24.5333333333333 423.4666666666667 70.8266666666667 423.4666666666667 128C423.4666666666667 185.1733333333333 377.1733333333333 231.4666666666667 320 231.4666666666667z" /> + <glyph glyph-name="toggle-switch" + unicode="&#xF521;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667C421.5466666666666 298.6666666666667 469.3333333333333 250.88 469.3333333333333 192S421.5466666666666 85.3333333333334 362.6666666666667 85.3333333333334S256 133.12 256 192S303.7866666666667 298.6666666666667 362.6666666666667 298.6666666666667M85.3333333333333 149.3333333333334C61.8666666666667 149.3333333333334 42.6666666666667 168.5333333333334 42.6666666666667 192S61.8666666666667 234.6666666666667 85.3333333333333 234.6666666666667H213.3333333333333V149.3333333333334H85.3333333333333z" /> + <glyph glyph-name="toggle-switch-off" + unicode="&#xF522;" + horiz-adv-x="512" d=" M149.3333333333333 298.6666666666667C208.2133333333333 298.6666666666667 256 250.88 256 192S208.2133333333333 85.3333333333334 149.3333333333333 85.3333333333334S42.6666666666667 133.12 42.6666666666667 192S90.4533333333333 298.6666666666667 149.3333333333333 298.6666666666667M426.6666666666667 149.3333333333334H298.6666666666667V234.6666666666667H426.6666666666667C450.1333333333334 234.6666666666667 469.3333333333333 215.4666666666667 469.3333333333333 192S450.1333333333334 149.3333333333334 426.6666666666667 149.3333333333334M149.3333333333333 256C113.92 256 85.3333333333333 227.4133333333334 85.3333333333333 192S113.92 128 149.3333333333333 128S213.3333333333333 156.5866666666667 213.3333333333333 192S184.7466666666667 256 149.3333333333333 256z" /> + <glyph glyph-name="tooltip" + unicode="&#xF523;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="tooltip-edit" + unicode="&#xF524;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M384 149.3333333333334V192H266.6666666666667L224 149.3333333333334H384M128 149.3333333333334H181.3333333333333L327.4666666666667 296.1066666666667C331.7333333333333 300.1600000000001 331.7333333333333 306.9866666666667 327.4666666666667 311.2533333333334L289.92 348.8C285.6533333333333 353.0666666666667 278.8266666666667 353.0666666666667 274.7733333333333 348.8L128 202.0266666666667V149.3333333333334z" /> + <glyph glyph-name="tooltip-image" + unicode="&#xF525;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M405.3333333333333 128V298.6666666666667L320 213.3333333333334L277.3333333333333 256L149.3333333333333 128H405.3333333333333M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334z" /> + <glyph glyph-name="tooltip-outline" + unicode="&#xF526;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 362.6666666666667V106.6666666666667H188.3733333333333L256 39.04L323.6266666666667 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="tooltip-outline-plus" + unicode="&#xF527;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 362.6666666666667V106.6666666666667H188.3733333333333L256 39.04L323.6266666666667 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333M234.6666666666667 320H277.3333333333333V256H341.3333333333333V213.3333333333334H277.3333333333333V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667V256H234.6666666666667V320z" /> + <glyph glyph-name="tooltip-text" + unicode="&#xF528;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M106.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 256V213.3333333333334H320V256H106.6666666666667M106.6666666666667 170.6666666666667V128H362.6666666666667V170.6666666666667H106.6666666666667z" /> + <glyph glyph-name="tooth" + unicode="&#xF529;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333C85.3333333333333 405.3333333333333 42.6666666666667 341.3333333333334 42.6666666666667 277.3333333333334C42.6666666666667 232.32 64 170.6666666666667 85.3333333333333 149.3333333333334S128 -21.3333333333333 170.6666666666667 -21.3333333333333C267.52 -21.3333333333333 213.3333333333333 128 256 128S244.48 -21.3333333333333 341.3333333333333 -21.3333333333333C384 -21.3333333333333 405.3333333333333 128 426.6666666666667 149.3333333333334S469.3333333333333 232.32 469.3333333333333 277.3333333333334C469.3333333333333 341.3333333333334 426.6666666666667 405.3333333333333 362.6666666666667 405.3333333333333S298.6666666666667 384 256 384S213.3333333333333 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667C192 362.6666666666667 213.3333333333333 341.3333333333334 256 341.3333333333334S320 362.6666666666667 362.6666666666667 362.6666666666667C398.2933333333334 362.6666666666667 426.6666666666667 320 426.6666666666667 277.3333333333334C426.6666666666667 240 408.32 189.6533333333334 388.0533333333334 169.3866666666667C369.7066666666667 151.0400000000001 342.6133333333334 22.6133333333334 330.6666666666667 22.6133333333334C326.1866666666667 22.6133333333334 320 45.2266666666667 320 72.7466666666668C320 116.2666666666668 307.8400000000001 170.6666666666668 256 170.6666666666668S192 116.2666666666668 192 72.7466666666668C192 45.2266666666668 185.8133333333334 22.6133333333334 181.3333333333334 22.6133333333334C169.3866666666667 22.6133333333334 142.2933333333334 151.0400000000001 123.9466666666667 169.3866666666667C103.68 189.6533333333334 85.3333333333333 240 85.3333333333333 277.3333333333334C85.3333333333333 320 113.7066666666667 362.6666666666667 149.3333333333333 362.6666666666667z" /> + <glyph glyph-name="tor" + unicode="&#xF52A;" + horiz-adv-x="512" d=" M256 149.3333333333334C234.6666666666667 149.3333333333334 192 128 192 106.6666666666667C192 64 256 64 256 64V85.3333333333334C244.2666666666667 85.3333333333334 234.6666666666667 94.9333333333333 234.6666666666667 106.6666666666667S244.2666666666667 128 256 128V149.3333333333334M256 42.6666666666667S170.6666666666667 53.3333333333334 170.6666666666667 96C170.6666666666667 160 234.6666666666667 176 256 176V202.6666666666667C234.6666666666667 202.6666666666667 149.3333333333333 170.6666666666667 149.3333333333333 106.6666666666667C149.3333333333333 21.3333333333334 256 21.3333333333334 256 21.3333333333334V42.6666666666667M214.8266666666667 298.0266666666667L240.2133333333333 286.7200000000001C249.3866666666667 338.7733333333333 273.92 373.3333333333333 273.92 373.3333333333333C264.7466666666667 351.36 258.7733333333333 333.2266666666667 254.9333333333333 318.9333333333334C280.7466666666667 372.2666666666667 333.0133333333333 405.3333333333333 333.0133333333333 405.3333333333333C307.84 380.1600000000001 289.28 352.8533333333334 276.6933333333333 330.0266666666667C310.4 365.8666666666667 357.12 389.3333333333334 357.12 389.3333333333334C299.7333333333333 352.64 273.92 294.4000000000001 267.52 278.1866666666667L279.2533333333334 276.48C279.2533333333334 265.3866666666667 279.2533333333334 255.1466666666667 284.5866666666667 247.0400000000001C300.8 206.72 384 203.3066666666667 384 106.6666666666667S298.0266666666667 -21.3333333333333 252.3733333333334 -21.3333333333333C206.72 -21.3333333333333 106.6666666666667 -0.64 106.6666666666667 106.6666666666667S212.2666666666667 214.8266666666667 231.04 257.7066666666667C233.6 265.8133333333334 214.8266666666667 298.0266666666667 214.8266666666667 298.0266666666667z" /> + <glyph glyph-name="traffic-light" + unicode="&#xF52B;" + horiz-adv-x="512" d=" M256 256C232.5333333333334 256 213.3333333333333 275.2000000000001 213.3333333333333 298.6666666666667C213.3333333333333 322.3466666666667 232.5333333333334 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 322.3466666666667 298.6666666666667 298.6666666666667C298.6666666666667 275.2000000000001 279.4666666666667 256 256 256M256 149.3333333333334C232.5333333333334 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192C213.3333333333333 215.68 232.5333333333334 234.6666666666667 256 234.6666666666667C279.68 234.6666666666667 298.6666666666667 215.68 298.6666666666667 192C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334M256 42.6666666666667C232.5333333333334 42.6666666666667 213.3333333333333 61.8666666666667 213.3333333333333 85.3333333333334C213.3333333333333 109.0133333333333 232.5333333333334 128 256 128C279.68 128 298.6666666666667 109.0133333333333 298.6666666666667 85.3333333333334C298.6666666666667 61.8666666666667 279.4666666666667 42.6666666666667 256 42.6666666666667M426.6666666666667 234.6666666666667H362.6666666666667V258.9866666666667C399.36 268.5866666666667 426.6666666666667 301.6533333333334 426.6666666666667 341.3333333333334H362.6666666666667V362.6666666666667C362.6666666666667 374.4 353.0666666666667 384 341.3333333333333 384H170.6666666666667C158.9333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V341.3333333333334H85.3333333333333C85.3333333333333 301.6533333333333 112.64 268.5866666666667 149.3333333333333 258.9866666666667V234.6666666666667H85.3333333333333C85.3333333333333 194.9866666666667 112.64 161.92 149.3333333333333 152.3200000000001V128H85.3333333333333C85.3333333333333 88.3200000000001 112.64 55.2533333333333 149.3333333333333 45.6533333333334V21.3333333333334C149.3333333333333 9.6 158.9333333333333 0 170.6666666666667 0H341.3333333333333C353.0666666666667 0 362.6666666666667 9.6 362.6666666666667 21.3333333333334V45.6533333333334C399.36 55.2533333333333 426.6666666666667 88.3200000000001 426.6666666666667 128H362.6666666666667V152.3200000000001C399.36 161.92 426.6666666666667 194.9866666666667 426.6666666666667 234.6666666666667z" /> + <glyph glyph-name="train" + unicode="&#xF52C;" + horiz-adv-x="512" d=" M384 234.6666666666667H128V341.3333333333334H384M256 85.3333333333334C232.32 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128C213.3333333333333 151.68 232.32 170.6666666666667 256 170.6666666666667C279.4666666666667 170.6666666666667 298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334M85.3333333333333 117.3333333333334C85.3333333333333 76.16 118.8266666666667 42.6666666666667 160 42.6666666666667L128 10.6666666666667V0H384V10.6666666666667L352 42.6666666666667C393.1733333333333 42.6666666666667 426.6666666666667 76.16 426.6666666666667 117.3333333333334V341.3333333333334C426.6666666666667 416 350.2933333333334 426.6666666666667 256 426.6666666666667S85.3333333333333 416 85.3333333333333 341.3333333333334V117.3333333333334z" /> + <glyph glyph-name="tram" + unicode="&#xF52D;" + horiz-adv-x="512" d=" M362.6666666666667 64C349.8666666666666 64 341.3333333333333 72.5333333333333 341.3333333333333 85.3333333333334S349.8666666666666 106.6666666666667 362.6666666666667 106.6666666666667S384 98.1333333333334 384 85.3333333333334S375.4666666666667 64 362.6666666666667 64M142.9333333333333 219.7333333333334L149.3333333333333 292.2666666666667C149.3333333333333 307.2000000000001 162.1333333333333 320 177.0666666666667 320H332.8C349.8666666666667 320 362.6666666666667 307.2000000000001 362.6666666666667 292.2666666666667L369.0666666666667 221.8666666666667C369.0666666666667 206.9333333333334 356.2666666666667 194.1333333333333 341.3333333333333 194.1333333333333H170.6666666666667C155.7333333333333 192 142.9333333333333 204.8 142.9333333333333 219.7333333333333M149.3333333333333 64C136.5333333333333 64 128 72.5333333333333 128 85.3333333333334S136.5333333333333 106.6666666666667 149.3333333333333 106.6666666666667S170.6666666666667 98.1333333333334 170.6666666666667 85.3333333333334S162.1333333333333 64 149.3333333333333 64M405.3333333333333 320C405.3333333333333 343.4666666666667 386.1333333333334 362.6666666666667 362.6666666666667 362.6666666666667H320C320 386.1333333333334 300.8 405.3333333333333 277.3333333333333 405.3333333333333H234.6666666666667C211.2 405.3333333333333 192 386.1333333333334 192 362.6666666666667H149.3333333333333C125.8666666666667 362.6666666666667 106.6666666666667 343.4666666666667 106.6666666666667 320L85.3333333333333 64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H170.6666666666667L149.3333333333333 -21.3333333333333H364.8L343.4666666666667 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64L405.3333333333333 320z" /> + <glyph glyph-name="transcribe" + unicode="&#xF52E;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.3466666666667 61.6533333333333 341.3333333333334 85.3333333333333 341.3333333333334H426.6666666666667M384 85.3333333333334V128H266.6666666666667L224 85.3333333333334H384M128 85.3333333333334H181.3333333333333L327.4666666666667 232.1066666666667C331.7333333333333 236.16 331.7333333333333 242.9866666666667 327.4666666666667 247.2533333333334L289.92 284.8C285.6533333333333 289.0666666666667 278.8266666666667 289.0666666666667 274.7733333333333 284.8L128 138.0266666666667V85.3333333333334z" /> + <glyph glyph-name="transcribe-close" + unicode="&#xF52F;" + horiz-adv-x="512" d=" M256 -42.6666666666666L170.6666666666667 42.6666666666667H341.3333333333333L256 -42.6666666666666M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V128C469.3333333333333 104.5333333333333 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384H426.6666666666667M384 128V170.6666666666667H266.6666666666667L224 128H384M128 128H181.3333333333333L327.4666666666667 274.7733333333333C331.7333333333333 278.8266666666667 331.7333333333333 285.6533333333333 327.4666666666667 289.7066666666667L289.92 327.4666666666667C285.6533333333333 331.7333333333334 278.8266666666667 331.7333333333334 274.7733333333333 327.4666666666667L128 180.6933333333334V128z" /> + <glyph glyph-name="transfer" + unicode="&#xF530;" + horiz-adv-x="512" d=" M64 277.3333333333334H106.6666666666667V106.6666666666667H64V277.3333333333334M149.3333333333333 277.3333333333334H192V106.6666666666667H149.3333333333333V277.3333333333334M234.6666666666667 277.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667V277.3333333333334M320 37.3333333333334V346.6666666666667L474.6666666666666 192L320 37.3333333333334z" /> + <glyph glyph-name="translate" + unicode="&#xF5CA;" + horiz-adv-x="512" d=" M274.56 126.5066666666667L220.3733333333333 180.0533333333334L221.0133333333333 180.6933333333333C258.1333333333333 222.08 284.5866666666666 269.6533333333333 300.1599999999999 320H362.6666666666667V362.6666666666667H213.3333333333333V405.3333333333333H170.6666666666667V362.6666666666667H21.3333333333333V320H259.6266666666667C245.3333333333333 279.04 222.72 240 192 205.8666666666667C172.16 227.84 155.7333333333333 251.9466666666667 142.72 277.3333333333334H100.0533333333333C115.6266666666667 242.5600000000001 136.96 209.7066666666667 163.6266666666667 180.0533333333334L55.04 72.96L85.3333333333333 42.6666666666667L192 149.3333333333334L258.3466666666667 82.9866666666667L274.56 126.5066666666667M394.6666666666667 234.6666666666667H352L256 -21.3333333333333H298.6666666666667L322.56 42.6666666666667H423.8933333333333L448 -21.3333333333333H490.6666666666666L394.6666666666667 234.6666666666667M338.7733333333333 85.3333333333334L373.3333333333333 177.7066666666667L407.8933333333333 85.3333333333334H338.7733333333333z" /> + <glyph glyph-name="tree" + unicode="&#xF531;" + horiz-adv-x="512" d=" M234.6666666666667 0V90.88C224.64 87.2533333333333 213.9733333333333 85.3333333333333 202.6666666666667 85.3333333333333C149.3333333333333 85.3333333333334 106.6666666666667 128 106.6666666666667 181.3333333333334C106.6666666666667 208.4266666666667 117.3333333333333 232.7466666666667 135.68 250.24C130.7733333333333 261.76 128 274.56 128 288C128 341.3333333333334 170.6666666666667 384 224 384C257.28 384 286.72 366.9333333333334 304 341.3333333333334H309.3333333333333C374.1866666666666 341.3333333333334 426.6666666666667 288.8533333333334 426.6666666666667 224S374.1866666666666 106.6666666666667 309.3333333333333 106.6666666666667C298.6666666666667 106.6666666666667 288 108.16 277.3333333333333 111.1466666666667V0H234.6666666666667z" /> + <glyph glyph-name="trello" + unicode="&#xF532;" + horiz-adv-x="512" d=" M85.3333333333333 384H426.6666666666667C438.4 384 448 374.4 448 362.6666666666667V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H85.3333333333333C73.6 0 64 9.6 64 21.3333333333334V362.6666666666667C64 374.4 73.6 384 85.3333333333333 384M117.3333333333333 341.3333333333334C111.36 341.3333333333334 106.6666666666667 336.64 106.6666666666667 330.6666666666667V74.6666666666667C106.6666666666667 68.6933333333333 111.36 64 117.3333333333333 64H224C229.9733333333333 64 234.6666666666667 68.6933333333333 234.6666666666667 74.6666666666667V330.6666666666667C234.6666666666667 336.64 229.9733333333333 341.3333333333334 224 341.3333333333334H117.3333333333333M288 341.3333333333334C282.0266666666667 341.3333333333334 277.3333333333333 336.64 277.3333333333333 330.6666666666667V202.6666666666667C277.3333333333333 196.6933333333334 282.0266666666667 192 288 192H394.6666666666667C400.64 192 405.3333333333333 196.6933333333334 405.3333333333333 202.6666666666667V330.6666666666667C405.3333333333333 336.64 400.64 341.3333333333334 394.6666666666667 341.3333333333334H288z" /> + <glyph glyph-name="trending-down" + unicode="&#xF533;" + horiz-adv-x="512" d=" M341.3333333333333 64L390.1866666666666 112.8533333333334L286.08 216.96L200.7466666666667 131.6266666666667L42.6666666666667 289.92L72.7466666666667 320L200.7466666666667 192L286.08 277.3333333333334L420.48 143.1466666666667L469.3333333333333 192V64H341.3333333333333z" /> + <glyph glyph-name="trending-neutral" + unicode="&#xF534;" + horiz-adv-x="512" d=" M469.3333333333333 192L384 277.3333333333334V213.3333333333334H64V170.6666666666667H384V106.6666666666667L469.3333333333333 192z" /> + <glyph glyph-name="trending-up" + unicode="&#xF535;" + horiz-adv-x="512" d=" M341.3333333333333 320L390.1866666666666 271.1466666666667L286.08 167.0400000000001L200.7466666666667 252.3733333333334L42.6666666666667 94.08L72.7466666666667 64L200.7466666666667 192L286.08 106.6666666666667L420.48 240.8533333333333L469.3333333333333 192V320H341.3333333333333z" /> + <glyph glyph-name="triangle" + unicode="&#xF536;" + horiz-adv-x="512" d=" M21.3333333333333 0H490.6666666666666L256 405.3333333333333" /> + <glyph glyph-name="triangle-outline" + unicode="&#xF537;" + horiz-adv-x="512" d=" M256 405.3333333333333L21.3333333333333 0H490.6666666666666M256 320L416.64 42.6666666666667H95.36" /> + <glyph glyph-name="trophy" + unicode="&#xF538;" + horiz-adv-x="512" d=" M430.9333333333333 405.3333333333333H384C364.8 405.3333333333333 341.3333333333333 384 341.3333333333333 362.6666666666667H170.6666666666667C170.6666666666667 384 147.2 405.3333333333333 128 405.3333333333333H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H132.2666666666667C140.8 128 168.5333333333333 91.7333333333334 234.6666666666667 85.3333333333334V40.5333333333333C187.7333333333334 36.2666666666667 170.6666666666667 12.8 170.6666666666667 -14.9333333333334V-21.3333333333334H341.3333333333333V-14.9333333333334C341.3333333333333 12.8 324.2666666666667 36.2666666666666 277.3333333333333 40.5333333333333V85.3333333333334C343.4666666666667 91.7333333333334 371.2 128 379.7333333333334 170.6666666666667H426.6666666666667C448 170.6666666666667 469.3333333333333 192 469.3333333333333 213.3333333333334V405.3333333333333H430.9333333333333M85.3333333333333 213.3333333333334V362.6666666666667H128V213.3333333333334H85.3333333333333M426.6666666666667 213.3333333333334H384V362.6666666666667H426.6666666666667V213.3333333333334z" /> + <glyph glyph-name="trophy-award" + unicode="&#xF539;" + horiz-adv-x="512" d=" M324.2666666666667 219.7333333333334L354.1333333333333 106.6666666666667L256 187.7333333333334L157.8666666666667 106.6666666666667L187.7333333333334 217.6L98.1333333333333 292.2666666666667L213.3333333333333 298.6666666666667L256 405.3333333333333L298.6666666666667 298.6666666666667L413.8666666666666 292.2666666666667L324.2666666666667 219.7333333333334M298.6666666666667 40.5333333333333H277.3333333333333V106.6666666666667L256 128L234.6666666666667 106.6666666666667V40.5333333333333H213.3333333333333C189.8666666666667 40.5333333333333 170.6666666666667 21.3333333333334 170.6666666666667 -2.1333333333333V-23.4666666666667H341.3333333333333V-2.1333333333333C341.3333333333333 21.3333333333334 322.1333333333334 40.5333333333333 298.6666666666667 40.5333333333333z" /> + <glyph glyph-name="trophy-outline" + unicode="&#xF53A;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H132.2666666666667C140.8 128 168.5333333333333 91.7333333333334 234.6666666666667 85.3333333333334V40.5333333333333C187.7333333333334 36.2666666666667 170.6666666666667 12.8 170.6666666666667 -14.9333333333334V-21.3333333333334H341.3333333333333V-14.9333333333334C341.3333333333333 12.8 324.2666666666667 36.2666666666666 277.3333333333333 40.5333333333333V85.3333333333334C343.4666666666667 91.7333333333334 371.2 128 379.7333333333334 170.6666666666667H426.6666666666667C448 170.6666666666667 469.3333333333333 192 469.3333333333333 213.3333333333334V405.3333333333333H384C364.8 405.3333333333333 341.3333333333333 384 341.3333333333333 362.6666666666667H170.6666666666667C170.6666666666667 384 147.2 405.3333333333333 128 405.3333333333333H42.6666666666667M85.3333333333333 362.6666666666667H128V213.3333333333334H85.3333333333333V362.6666666666667M384 362.6666666666667H426.6666666666667V213.3333333333334H384V362.6666666666667M170.6666666666667 320H341.3333333333333V202.6666666666667C341.3333333333333 161.4933333333334 328.96 128 256 128C183.2533333333333 128 170.6666666666667 161.4933333333334 170.6666666666667 202.6666666666667V320z" /> + <glyph glyph-name="trophy-variant" + unicode="&#xF53B;" + horiz-adv-x="512" d=" M430.9333333333333 362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333V362.6666666666667H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H153.6C162.1333333333333 130.1333333333333 183.4666666666667 93.8666666666667 234.6666666666667 87.4666666666667V42.6666666666667C170.6666666666667 38.4 170.6666666666667 14.9333333333333 170.6666666666667 -12.8V-21.3333333333333H341.3333333333333V-14.9333333333333C341.3333333333333 12.8000000000001 341.3333333333333 36.2666666666667 277.3333333333333 40.5333333333334V85.3333333333334C330.6666666666667 91.7333333333334 352 128 358.4 168.5333333333334H426.6666666666667C448 168.5333333333334 469.3333333333333 189.8666666666667 469.3333333333333 211.2V362.6666666666667H430.9333333333333M85.3333333333333 213.3333333333334V320H149.3333333333333V213.3333333333334H85.3333333333333M426.6666666666667 213.3333333333334H362.6666666666667V320H426.6666666666667V213.3333333333334z" /> + <glyph glyph-name="trophy-variant-outline" + unicode="&#xF53C;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V362.6666666666667H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H153.6C162.1333333333333 130.1333333333333 183.4666666666667 93.8666666666667 234.6666666666667 87.4666666666667V42.6666666666667C170.6666666666667 38.4 170.6666666666667 14.9333333333333 170.6666666666667 -12.8V-21.3333333333333H341.3333333333333V-14.9333333333333C341.3333333333333 12.8000000000001 341.3333333333333 36.2666666666667 277.3333333333333 40.5333333333334V85.3333333333334C330.6666666666667 91.7333333333334 352 128 358.4 168.5333333333334H426.6666666666667C448 168.5333333333334 469.3333333333333 189.8666666666667 469.3333333333333 211.2V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333M192 362.6666666666667H320V192C320 156.5866666666667 291.4133333333333 128 256 128C213.3333333333333 128 192 156.5866666666667 192 192V362.6666666666667M85.3333333333333 320H149.3333333333333V213.3333333333334H85.3333333333333V320M362.6666666666667 320H426.6666666666667V213.3333333333334H362.6666666666667V320z" /> + <glyph glyph-name="truck" + unicode="&#xF53D;" + horiz-adv-x="512" d=" M384 53.3333333333334C366.2933333333334 53.3333333333334 352 67.6266666666667 352 85.3333333333334S366.2933333333334 117.3333333333334 384 117.3333333333334S416 103.04 416 85.3333333333334S401.7066666666666 53.3333333333334 384 53.3333333333334M416 245.3333333333334L457.8133333333333 192H362.6666666666667V245.3333333333334M128 53.3333333333334C110.2933333333333 53.3333333333334 96 67.6266666666667 96 85.3333333333334S110.2933333333333 117.3333333333334 128 117.3333333333334S160 103.04 160 85.3333333333334S145.7066666666667 53.3333333333334 128 53.3333333333334M426.6666666666667 277.3333333333334H362.6666666666667V362.6666666666667H64C40.32 362.6666666666667 21.3333333333333 343.68 21.3333333333333 320V85.3333333333334H64C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334S192 49.92 192 85.3333333333334H320C320 49.92 348.5866666666667 21.3333333333334 384 21.3333333333334S448 49.92 448 85.3333333333334H490.6666666666666V192L426.6666666666667 277.3333333333334z" /> + <glyph glyph-name="truck-delivery" + unicode="&#xF53E;" + horiz-adv-x="512" d=" M64 362.6666666666667C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V85.3333333333334H64C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334S192 49.92 192 85.3333333333334H320C320 49.92 348.5866666666667 21.3333333333334 384 21.3333333333334S448 49.92 448 85.3333333333334H490.6666666666666V192L426.6666666666667 277.3333333333334H362.6666666666667V362.6666666666667M213.3333333333333 320L298.6666666666667 234.6666666666667L213.3333333333333 149.3333333333334V213.3333333333334H85.3333333333333V256H213.3333333333333M362.6666666666667 245.3333333333334H416L458.0266666666666 192H362.6666666666667M128 117.3333333333334C145.7066666666667 117.3333333333334 160 103.04 160 85.3333333333334S145.7066666666667 53.3333333333334 128 53.3333333333334S96 67.6266666666667 96 85.3333333333334S110.2933333333333 117.3333333333334 128 117.3333333333334M384 117.3333333333334C401.7066666666666 117.3333333333334 416 103.04 416 85.3333333333334S401.7066666666666 53.3333333333334 384 53.3333333333334S352 67.6266666666667 352 85.3333333333334S366.2933333333334 117.3333333333334 384 117.3333333333334z" /> + <glyph glyph-name="tshirt-crew" + unicode="&#xF53F;" + horiz-adv-x="512" d=" M341.3333333333333 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334V190.5066666666667L121.6 168.1066666666667C113.28 160 99.84 160 91.52 168.1066666666667L31.1466666666667 228.48C22.8266666666667 236.8 22.8266666666667 250.24 31.1466666666667 258.56L156.5866666666667 384H192C192 360.5333333333334 220.5866666666667 341.3333333333334 256 341.3333333333334S320 360.5333333333334 320 384H355.4133333333333L480.8533333333333 258.5600000000001C489.1733333333333 250.24 489.1733333333333 236.8000000000001 480.8533333333333 228.48L420.48 168.1066666666667C412.16 160 398.7200000000001 160 390.4 168.1066666666667L362.6666666666667 190.5066666666667V21.3333333333334C362.6666666666667 9.6 353.0666666666667 0 341.3333333333333 0M435.6266666666667 243.6266666666667L343.6800000000001 335.36C337.0666666666667 327.8933333333333 329.1733333333334 321.28 320.0000000000001 315.7333333333334C302.0800000000001 305.0666666666667 280.1066666666667 298.6666666666667 256.0000000000001 298.6666666666667C219.7333333333334 298.6666666666667 187.5200000000001 313.1733333333334 168.3200000000001 335.36L76.3733333333334 243.6266666666667L106.6666666666667 213.3333333333334L170.6666666666667 256H192V42.6666666666667H320V256H341.3333333333333L405.3333333333333 213.3333333333334L435.6266666666667 243.6266666666667z" /> + <glyph glyph-name="tshirt-v" + unicode="&#xF540;" + horiz-adv-x="512" d=" M341.3333333333333 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334V190.5066666666667L121.6 168.1066666666667C113.28 160 99.84 160 91.52 168.1066666666667L31.1466666666667 228.48C22.8266666666667 236.8 22.8266666666667 250.24 31.1466666666667 258.56L156.5866666666667 384H192C192 360.5333333333334 213.3333333333333 320 256 293.3333333333334C298.6666666666667 320 320 360.5333333333334 320 384H355.4133333333333L480.8533333333333 258.5600000000001C489.1733333333333 250.24 489.1733333333333 236.8000000000001 480.8533333333333 228.48L420.48 168.1066666666667C412.16 160 398.7200000000001 160 390.4 168.1066666666667L362.6666666666667 190.5066666666667V21.3333333333334C362.6666666666667 9.6 353.0666666666667 0 341.3333333333333 0M435.6266666666667 243.6266666666667L343.6800000000001 335.36C320 298.6666666666667 298.6666666666667 272 256 250.6666666666667C213.3333333333333 272 192 298.6666666666667 168.32 335.36L76.3733333333333 243.6266666666667L106.6666666666667 213.3333333333334L170.6666666666667 256H192V42.6666666666667H320V256H341.3333333333333L405.3333333333333 213.3333333333334L435.6266666666667 243.6266666666667z" /> + <glyph glyph-name="tumblr" + unicode="&#xF541;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334H277.3333333333333V130.1333333333333C277.3333333333333 114.56 280.32 106.6666666666667 300.8 106.6666666666667H341.3333333333333V42.6666666666667S319.36 40.5333333333333 296.5333333333333 40.5333333333333C240 40.5333333333333 213.3333333333333 74.6666666666667 213.3333333333333 113.0666666666667V213.3333333333334H170.6666666666667V273.0666666666667C222.08 277.3333333333334 226.56 316.5866666666667 230.4 341.3333333333334H277.3333333333333V277.3333333333334H341.3333333333333M426.6666666666667 405.3333333333334H85.3333333333333C61.6533333333333 405.3333333333334 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="tumblr-reblog" + unicode="&#xF542;" + horiz-adv-x="512" d=" M80 85.3333333333334L170.6666666666667 176V106.6666666666667H384V202.6666666666667L426.6666666666667 245.3333333333334V106.6666666666667C426.6666666666667 83.2 407.4666666666667 64 384 64H170.6666666666667V-5.3333333333333L80 85.3333333333334M432 298.6666666666667L341.3333333333333 208V277.3333333333334H128V181.3333333333334L85.3333333333333 138.6666666666667V277.3333333333334C85.3333333333333 300.8 104.5333333333333 320 128 320H341.3333333333333V389.3333333333333L432 298.6666666666667z" /> + <glyph glyph-name="tune" + unicode="&#xF62E;" + horiz-adv-x="512" d=" M64 85.3333333333334V42.6666666666667H192V85.3333333333334H64M64 341.3333333333334V298.6666666666667H277.3333333333333V341.3333333333334H64M277.3333333333333 0V42.6666666666667H448V85.3333333333334H277.3333333333333V128H234.6666666666667V0H277.3333333333333M149.3333333333333 256V213.3333333333334H64V170.6666666666667H149.3333333333333V128H192V256H149.3333333333333M448 170.6666666666667V213.3333333333334H234.6666666666667V170.6666666666667H448M320 256H362.6666666666667V298.6666666666667H448V341.3333333333334H362.6666666666667V384H320V256z" /> + <glyph glyph-name="tune-vertical" + unicode="&#xF66A;" + horiz-adv-x="512" d=" M106.6666666666667 384V192H64V149.3333333333334H106.6666666666667V0H149.3333333333333V149.3333333333334H192V192H149.3333333333333V384M234.6666666666667 384V277.3333333333334H192V234.6666666666667H234.6666666666667V0H277.3333333333333V234.6666666666667H320V277.3333333333334H277.3333333333333V384M362.6666666666667 384V149.3333333333334H320V106.6666666666667H362.6666666666667V0H405.3333333333333V106.6666666666667H448V149.3333333333334H405.3333333333333V384" /> + <glyph glyph-name="twitch" + unicode="&#xF543;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H469.3333333333333V149.3333333333334L362.6666666666667 42.6666666666667H277.3333333333333L213.3333333333333 -21.3333333333333H149.3333333333333V42.6666666666667H42.6666666666667V320L85.3333333333333 405.3333333333333M426.6666666666667 170.6666666666667V362.6666666666667H128V106.6666666666667H192V42.6666666666667L256 106.6666666666667H362.6666666666667L426.6666666666667 170.6666666666667M320 298.6666666666667H362.6666666666667V192H320V298.6666666666667M256 298.6666666666667V192H213.3333333333333V298.6666666666667H256z" /> + <glyph glyph-name="twitter" + unicode="&#xF544;" + horiz-adv-x="512" d=" M479.1466666666666 320C462.72 312.5333333333334 445.0133333333333 307.6266666666667 426.6666666666667 305.2800000000001C445.44 316.5866666666667 459.9466666666666 334.5066666666667 466.7733333333333 356.0533333333334C449.0666666666667 345.3866666666667 429.44 337.92 408.7466666666667 333.6533333333334C391.8933333333333 352 368.2133333333334 362.6666666666667 341.3333333333333 362.6666666666667C291.2 362.6666666666667 250.24 321.7066666666667 250.24 271.1466666666667C250.24 263.8933333333334 251.0933333333333 256.8533333333334 252.5866666666667 250.24C176.64 254.08 109.0133333333333 290.56 64 345.8133333333334C56.1066666666667 332.3733333333334 51.6266666666667 316.5866666666667 51.6266666666667 299.9466666666667C51.6266666666667 268.1600000000001 67.6266666666667 240 92.3733333333333 224C77.2266666666667 224 63.1466666666667 228.2666666666667 50.7733333333333 234.6666666666667V234.0266666666667C50.7733333333333 189.6533333333334 82.3466666666667 152.5333333333334 124.16 144.2133333333334C116.48 142.0800000000001 108.3733333333333 141.0133333333334 100.0533333333333 141.0133333333334C94.2933333333333 141.0133333333334 88.5333333333333 141.6533333333334 82.9866666666667 142.72C94.5066666666667 106.6666666666667 128 79.7866666666668 168.32 79.1466666666667C137.1733333333334 54.4 97.7066666666667 39.8933333333334 54.6133333333333 39.8933333333334C47.36 39.8933333333334 40.1066666666667 40.3200000000001 32.8533333333333 41.1733333333333C73.3866666666667 15.1466666666667 121.6 0 173.2266666666666 0C341.3333333333333 0 433.7066666666666 139.52 433.7066666666666 260.48C433.7066666666666 264.5333333333334 433.7066666666666 268.3733333333334 433.4933333333333 272.4266666666668C451.4133333333332 285.2266666666667 466.7733333333332 301.4400000000001 479.1466666666666 320.0000000000001z" /> + <glyph glyph-name="twitter-box" + unicode="&#xF545;" + horiz-adv-x="512" d=" M377.8133333333334 248.96C376.32 150.4 313.3866666666667 82.9866666666667 219.3066666666667 78.72C180.48 77.0133333333333 152.5333333333334 89.3866666666667 128 104.96C156.5866666666667 100.48 192 111.7866666666666 211.2 128C183.04 130.9866666666667 166.6133333333334 145.28 158.72 168.1066666666667C166.8266666666667 166.8266666666667 175.36 167.2533333333333 183.04 168.7466666666667C157.6533333333333 177.28 139.52 193.0666666666667 138.6666666666667 225.92C145.7066666666667 222.5066666666666 153.1733333333333 219.52 162.9866666666667 218.88C144 229.76 130.1333333333333 269.2266666666667 146.1333333333333 295.2533333333334C174.2933333333333 264.32 208.2133333333333 239.1466666666666 263.8933333333333 235.7333333333333C249.8133333333333 295.4666666666666 328.9599999999999 327.8933333333333 362.0266666666667 288C376.1066666666667 290.56 387.4133333333333 295.68 398.5066666666667 301.6533333333333C394.0266666666667 288 385.28 277.9733333333333 374.6133333333333 270.2933333333333C386.1333333333333 271.7866666666667 396.5866666666667 274.56 405.3333333333333 279.04C400 267.7333333333333 388.0533333333334 257.4933333333333 377.8133333333334 248.9599999999999M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="twitter-circle" + unicode="&#xF546;" + horiz-adv-x="512" d=" M377.8133333333334 248.96C388.0533333333334 257.4933333333334 400 267.7333333333334 405.3333333333333 279.04C396.5866666666667 274.56 386.1333333333334 271.7866666666667 374.6133333333333 270.2933333333334C385.28 277.9733333333334 394.0266666666667 288 398.5066666666667 301.6533333333333C387.4133333333333 295.68 376.1066666666667 290.56 362.0266666666667 288C328.9599999999999 327.8933333333333 249.8133333333333 295.4666666666667 263.8933333333333 235.7333333333334C208.2133333333333 239.1466666666667 174.2933333333333 264.3200000000001 146.1333333333333 295.2533333333334C130.1333333333333 269.2266666666667 144 229.7600000000001 162.9866666666667 218.8800000000001C153.1733333333333 219.5200000000001 145.7066666666667 222.5066666666667 138.6666666666667 225.9200000000001C139.52 193.0666666666667 157.6533333333333 177.2800000000001 183.04 168.7466666666667C175.36 167.2533333333334 166.8266666666667 166.8266666666667 158.72 168.1066666666668C166.6133333333334 145.2800000000001 183.04 130.9866666666667 211.2 128.0000000000001C192 111.7866666666668 156.5866666666667 100.4800000000001 128 104.96C152.5333333333333 89.3866666666667 180.48 77.0133333333334 219.3066666666667 78.72C313.3866666666667 82.9866666666667 376.32 150.4 377.8133333333334 248.9600000000001M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="twitter-retweet" + unicode="&#xF547;" + horiz-adv-x="512" d=" M128 325.3333333333334L218.6666666666667 234.6666666666667H149.3333333333333V106.6666666666667H288L330.6666666666667 64H149.3333333333333C125.8666666666667 64 106.6666666666667 83.2 106.6666666666667 106.6666666666667V234.6666666666667H37.3333333333333L128 325.3333333333334M384 58.6666666666667L293.3333333333333 149.3333333333334H362.6666666666667V277.3333333333334H224L181.3333333333333 320H362.6666666666667C386.1333333333334 320 405.3333333333333 300.8 405.3333333333333 277.3333333333334V149.3333333333334H474.6666666666666L384 58.6666666666667z" /> + <glyph glyph-name="ubuntu" + unicode="&#xF548;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M305.92 282.88C318.2933333333333 275.8400000000001 333.8666666666667 280.1066666666667 341.3333333333333 292.2666666666667C347.9466666666666 304.4266666666667 343.8933333333333 320 331.52 327.2533333333334C319.36 334.2933333333334 303.5733333333333 330.6666666666667 296.5333333333333 317.8666666666667C289.4933333333333 305.7066666666667 293.76 289.92 305.92 282.88M253.44 117.3333333333334C242.1333333333334 117.3333333333334 231.4666666666667 119.68 222.08 124.16L204.16 92.16C219.0933333333333 85.3333333333334 235.7333333333333 80.64 253.44 80.64C263.8933333333333 80.64 273.7066666666666 82.1333333333334 283.3066666666666 84.6933333333334C285.0133333333333 95.1466666666667 290.9866666666666 104.5333333333334 300.8 110.08C310.6133333333334 115.84 321.7066666666667 116.2666666666667 331.52 112.6400000000001C350.5066666666667 131.2000000000001 362.6666666666667 156.5866666666667 364.5866666666667 184.96L328.1066666666667 185.3866666666667C324.6933333333333 147.2000000000001 292.6933333333333 117.3333333333334 253.44 117.3333333333334M253.44 266.6666666666668C292.6933333333333 266.6666666666668 324.6933333333333 237.0133333333334 328.1066666666667 198.6133333333334L364.5866666666667 199.2533333333334C362.6666666666667 227.4133333333334 350.5066666666667 252.8000000000001 331.52 271.3600000000001C321.7066666666666 267.7333333333334 310.4 268.3733333333334 300.8 273.9200000000001C290.9866666666666 279.4666666666667 285.0133333333333 289.0666666666667 283.3066666666666 299.3066666666668C273.7066666666667 301.8666666666667 263.8933333333333 303.36 253.44 303.36C235.7333333333333 303.36 219.0933333333333 299.3066666666668 204.16 291.8400000000001L222.08 259.8400000000001C231.4666666666666 264.3200000000001 242.1333333333333 266.6666666666668 253.44 266.6666666666668M178.56 192C178.56 217.3866666666667 191.1466666666667 239.7866666666667 210.3466666666666 253.2266666666667L192 284.8C169.3866666666667 269.6533333333334 152.5333333333333 246.8266666666667 145.7066666666667 219.9466666666667C153.8133333333333 213.3333333333333 158.9333333333333 203.3066666666667 158.9333333333333 192S153.8133333333333 170.6666666666666 145.7066666666667 164.0533333333333C152.5333333333333 137.3866666666667 169.3866666666667 114.3466666666666 192 99.4133333333333L210.3466666666666 130.7733333333333C191.1466666666667 144.2133333333333 178.56 166.6133333333333 178.56 192M305.92 101.1199999999999C293.76 94.0799999999999 289.4933333333334 78.5066666666666 296.5333333333333 66.1333333333332C303.5733333333333 53.9733333333332 319.36 49.7066666666666 331.52 56.7466666666666C343.8933333333333 63.9999999999999 347.9466666666667 79.5733333333332 341.3333333333333 91.7333333333332C333.8666666666667 104.1066666666665 318.2933333333333 108.1599999999999 305.92 101.1199999999999M122.88 217.6C108.8 217.6 97.28 206.08 97.28 192C97.28 177.92 108.8 166.4 122.88 166.4C137.1733333333333 166.4 148.48 177.92 148.48 192C148.48 206.08 137.1733333333333 217.6 122.88 217.6z" /> + <glyph glyph-name="umbraco" + unicode="&#xF549;" + horiz-adv-x="512" d=" M183.4666666666667 264.5333333333334L152.96 269.2266666666667C138.6666666666667 199.0400000000001 137.8133333333333 144.2133333333334 162.3466666666667 117.3333333333334C183.4666666666667 93.6533333333334 253.6533333333334 93.6533333333334 253.6533333333334 93.6533333333334S326.1866666666667 93.6533333333334 347.3066666666667 117.3333333333334C371.84 144.2133333333334 370.7733333333334 199.04 356.6933333333334 269.2266666666667L326.1866666666667 264.5333333333334S352.8533333333334 151.8933333333334 313.3866666666667 134.6133333333334C294.6133333333334 126.5066666666667 253.6533333333334 126.5066666666667 253.6533333333334 126.5066666666667S215.0400000000001 126.5066666666667 196.2666666666668 134.6133333333334C156.8000000000001 151.8933333333334 183.4666666666668 264.5333333333334 183.4666666666668 264.5333333333334M256 384C362.0266666666667 384 448 298.0266666666667 448 192S362.0266666666667 0 256 0S64 85.9733333333334 64 192S149.9733333333333 384 256 384z" /> + <glyph glyph-name="umbrella" + unicode="&#xF54A;" + horiz-adv-x="512" d=" M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334H234.6666666666667V42.6666666666667C234.6666666666667 30.9333333333333 225.0666666666667 21.3333333333334 213.3333333333333 21.3333333333334S192 30.9333333333333 192 42.6666666666667H149.3333333333333C149.3333333333333 7.2533333333333 177.92 -21.3333333333333 213.3333333333333 -21.3333333333333S277.3333333333333 7.2533333333333 277.3333333333333 42.6666666666667V213.3333333333334H448C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="umbrella-outline" + unicode="&#xF54B;" + horiz-adv-x="512" d=" M256 362.6666666666667C321.92 362.6666666666667 380.16 319.1466666666667 398.9333333333333 256H113.0666666666667C131.84 319.36 189.8666666666667 362.6666666666667 256 362.6666666666667M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334H234.6666666666667V42.6666666666667C234.6666666666667 30.9333333333333 225.0666666666667 21.3333333333334 213.3333333333333 21.3333333333334S192 30.9333333333333 192 42.6666666666667H149.3333333333333C149.3333333333333 7.2533333333333 177.92 -21.3333333333333 213.3333333333333 -21.3333333333333S277.3333333333333 7.2533333333333 277.3333333333333 42.6666666666667V213.3333333333334H448C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="undo" + unicode="&#xF54C;" + horiz-adv-x="512" d=" M266.6666666666667 277.3333333333334C210.1333333333333 277.3333333333334 158.9333333333333 256 119.4666666666667 221.8666666666667L42.6666666666667 298.6666666666667V106.6666666666667H234.6666666666667L157.44 183.8933333333334C187.0933333333333 208.6400000000001 224.8533333333333 224 266.6666666666667 224C342.1866666666666 224 406.4 174.72 428.8 106.6666666666667L479.36 123.3066666666667C449.7066666666666 212.6933333333334 365.8666666666666 277.3333333333334 266.6666666666667 277.3333333333334z" /> + <glyph glyph-name="undo-variant" + unicode="&#xF54D;" + horiz-adv-x="512" d=" M288 298.6666666666667C364.5866666666667 298.6666666666667 426.6666666666667 236.5866666666667 426.6666666666667 160S364.5866666666667 21.3333333333334 288 21.3333333333334H213.3333333333333V64H288C341.3333333333333 64 384 106.6666666666667 384 160S341.3333333333333 256 288 256H167.04L232.7466666666667 190.0800000000001L202.6666666666667 160L85.3333333333333 277.3333333333334L202.6666666666667 394.6666666666667L232.96 364.5866666666667L167.04 298.6666666666667H288M128 64H170.6666666666667V21.3333333333334H128V64z" /> + <glyph glyph-name="unfold-less" + unicode="&#xF54E;" + horiz-adv-x="512" d=" M353.92 332.5866666666667L323.6266666666667 362.6666666666667L256 295.04L188.3733333333333 362.6666666666667L158.08 332.5866666666667L256 234.6666666666667M158.08 51.4133333333334L188.3733333333333 21.3333333333334L256 88.96L323.6266666666667 21.3333333333334L353.7066666666666 51.4133333333334L256 149.3333333333334L158.08 51.4133333333334z" /> + <glyph glyph-name="unfold-more" + unicode="&#xF54F;" + horiz-adv-x="512" d=" M256 60.3733333333333L188.3733333333333 128L158.2933333333333 97.92L256 0L353.92 97.92L323.6266666666667 128M256 323.6266666666667L323.6266666666667 256L353.7066666666666 286.0800000000001L256 384L158.08 286.0800000000001L188.3733333333333 256L256 323.6266666666667z" /> + <glyph glyph-name="ungroup" + unicode="&#xF550;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H128V384H277.3333333333333V405.3333333333333H362.6666666666667V320H341.3333333333333V256H384V277.3333333333334H469.3333333333333V192H448V64H469.3333333333333V-21.3333333333333H384V0H256V-21.3333333333333H170.6666666666667V64H192V106.6666666666667H128V85.3333333333334H42.6666666666667V170.6666666666667H64V320H42.6666666666667V405.3333333333333M384 192V213.3333333333334H341.3333333333333V170.6666666666667H362.6666666666667V85.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667V64H256V42.6666666666667H384V64H405.3333333333333V192H384M277.3333333333333 320V341.3333333333334H128V320H106.6666666666667V170.6666666666667H128V149.3333333333334H192V192H170.6666666666667V277.3333333333334H256V256H298.6666666666667V320H277.3333333333333M256 192H234.6666666666667V149.3333333333334H277.3333333333333V170.6666666666667H298.6666666666667V213.3333333333334H256V192z" /> + <glyph glyph-name="untappd" + unicode="&#xF551;" + horiz-adv-x="512" d=" M307.4133333333333 362.6666666666667S318.72 354.3466666666667 319.36 347.52C319.36 345.3866666666667 314.24 344.5333333333334 313.1733333333334 342.8266666666667C311.8933333333333 341.3333333333334 313.6 338.1333333333334 312.5333333333334 336.8533333333334C311.2533333333334 335.7866666666667 309.3333333333334 335.7866666666667 307.4133333333334 332.5866666666667C305.7066666666667 329.3866666666667 257.4933333333334 232.7466666666667 250.2400000000001 221.2266666666667C247.2533333333334 212.6933333333334 244.6933333333334 182.1866666666667 242.5600000000001 177.9200000000001C240.2133333333334 173.8666666666667 135.2533333333334 24.7466666666668 131.4133333333334 20.2666666666668C120.9600000000001 7.8933333333334 91.9466666666667 14.9333333333334 69.9733333333334 30.72C49.0666666666667 45.6533333333334 37.1200000000001 70.4 45.0133333333334 81.92C48.4266666666667 86.8266666666667 152.5333333333334 236.3733333333334 155.5200000000001 240C158.7200000000001 243.6266666666667 186.6666666666668 256 193.4933333333334 262.1866666666667C202.0266666666667 272.64 276.48 351.1466666666667 278.8266666666667 353.7066666666667C281.1733333333334 356.2666666666667 280.5333333333334 358.4 281.1733333333334 359.8933333333333C282.0266666666667 361.3866666666667 285.44 360.96 286.5066666666667 362.6666666666667C288 364.16 285.6533333333334 368.8533333333334 288 369.4933333333334C289.92 370.3466666666667 297.8133333333334 369.7066666666667 307.4133333333334 362.6666666666667M231.4666666666667 353.28L250.4533333333334 333.44L218.88 299.9466666666667L201.8133333333333 333.44C200.1066666666667 336.64 197.9733333333334 336.64 196.6933333333333 337.7066666666667C195.6266666666667 338.9866666666667 197.12 341.9733333333334 196.0533333333334 343.68C194.7733333333334 345.3866666666667 189.8666666666667 344.96 189.8666666666667 347.0933333333334C189.8666666666667 349.44 193.0666666666667 356.6933333333334 202.6666666666667 363.52C202.6666666666667 363.52 214.6133333333334 371.2 221.2266666666667 369.4933333333334C223.36 368.8533333333334 222.5066666666667 363.7333333333334 224 362.6666666666667C224.8533333333334 360.5333333333333 228.2666666666667 360.96 228.9066666666667 359.4666666666667C229.76 358.1866666666667 228.9066666666667 355.84 231.4666666666667 353.28M467.6266666666667 82.1333333333333C475.52 68.0533333333333 459.3066666666667 42.6666666666666 437.3333333333333 27.7333333333333C416 13.0133333333333 388.48 9.8133333333333 380.3733333333333 21.3333333333333C376.7466666666666 26.0266666666666 270.2933333333333 174.5066666666666 267.9466666666666 178.7733333333333C265.6 182.8266666666666 262.8266666666666 213.3333333333333 259.8399999999999 222.0799999999999L259.2 222.9333333333332C265.6 234.6666666666666 278.8266666666666 260.9066666666665 292.9066666666667 288.6399999999999C305.0666666666666 276.0533333333333 314.6666666666667 265.3866666666666 317.44 261.9733333333333C324.48 255.9999999999999 352.64 243.6266666666666 355.84 239.9999999999999C358.8266666666667 236.3733333333332 464.64 87.2533333333333 467.6266666666667 82.1333333333332z" /> + <glyph glyph-name="upload" + unicode="&#xF552;" + horiz-adv-x="512" d=" M192 106.6666666666667V234.6666666666667H106.6666666666667L256 384L405.3333333333333 234.6666666666667H320V106.6666666666667H192M106.6666666666667 21.3333333333334V64H405.3333333333333V21.3333333333334H106.6666666666667z" /> + <glyph glyph-name="usb" + unicode="&#xF553;" + horiz-adv-x="512" d=" M320 298.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H277.3333333333333V341.3333333333334H320L256 426.6666666666667L192 341.3333333333334H234.6666666666667V170.6666666666667H170.6666666666667V214.8266666666667C185.6 222.72 196.2666666666667 237.8666666666667 196.2666666666667 256C196.2666666666667 282.0266666666667 175.1466666666667 302.9333333333334 149.3333333333333 302.9333333333334C123.3066666666667 302.9333333333334 102.4 282.0266666666667 102.4 256C102.4 237.8666666666667 113.0666666666666 222.72 128 214.8266666666667V170.6666666666667C128 147.2000000000001 147.2 128 170.6666666666666 128H234.6666666666667V62.9333333333333C219.52 55.2533333333333 209.0666666666667 39.4666666666666 209.0666666666667 21.3333333333334C209.0666666666667 -4.6933333333333 229.9733333333334 -25.6 256 -25.6C282.0266666666667 -25.6 302.9333333333333 -4.6933333333333 302.9333333333333 21.3333333333334C302.9333333333333 39.4666666666667 292.48 55.2533333333333 277.3333333333333 62.9333333333333V128H341.3333333333333C364.8 128 384 147.2000000000001 384 170.6666666666667V213.3333333333334H405.3333333333333V298.6666666666667H320z" /> + <glyph glyph-name="vector-arrange-above" + unicode="&#xF554;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V149.3333333333334H64V384M384 298.6666666666667V256H426.6666666666667V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384z" /> + <glyph glyph-name="vector-arrange-below" + unicode="&#xF555;" + horiz-adv-x="512" d=" M426.6666666666667 -21.3333333333333C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667M426.6666666666667 21.3333333333334H192V256H426.6666666666667V21.3333333333334M106.6666666666667 106.6666666666667V149.3333333333334H64V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="vector-circle" + unicode="&#xF556;" + horiz-adv-x="512" d=" M192 405.3333333333333V361.3866666666667C143.36 343.04 104.96 304.64 86.4 256H42.6666666666667V128H86.6133333333334C104.96 79.36 143.36 40.7466666666667 192 22.4V-21.3333333333333H320V22.6133333333333C368.64 40.96 407.2533333333334 79.36 425.6 128H469.3333333333333V256H425.3866666666667C407.04 304.64 368.64 343.04 320 361.6V405.3333333333333M234.6666666666667 362.6666666666667H277.3333333333333V320H234.6666666666667M192 314.6666666666667V277.3333333333334H320V314.6666666666667C345.1733333333333 301.6533333333333 365.6533333333333 281.1733333333334 378.6666666666667 256H341.3333333333333V128H378.6666666666667C365.6533333333333 102.8266666666667 345.1733333333333 82.3466666666667 320 69.3333333333334V106.6666666666667H192V69.3333333333334C166.8266666666667 82.3466666666667 146.3466666666666 102.8266666666667 133.3333333333333 128H170.6666666666667V256H133.3333333333333C146.3466666666667 281.1733333333334 166.8266666666667 301.6533333333333 192 314.6666666666667M85.3333333333333 213.3333333333334H128V170.6666666666667H85.3333333333333M384 213.3333333333334H426.6666666666667V170.6666666666667H384M234.6666666666667 64H277.3333333333333V21.3333333333334H234.6666666666667" /> + <glyph glyph-name="vector-circle-variant" + unicode="&#xF557;" + horiz-adv-x="512" d=" M469.3333333333333 256H426.0266666666667C398.9333333333333 332.5866666666667 326.6133333333333 384 245.3333333333333 384C139.3066666666666 384 53.3333333333333 298.0266666666667 53.3333333333333 192C53.3333333333333 85.3333333333334 139.3066666666666 0 245.3333333333333 0C326.6133333333333 0 398.9333333333333 51.2 426.6666666666667 128H469.3333333333333M426.6666666666667 213.3333333333334V170.6666666666667H384V213.3333333333334M380.16 128C355.4133333333333 75.9466666666667 302.9333333333333 42.6666666666667 245.3333333333333 42.6666666666667C162.9866666666667 42.6666666666667 96 109.44 96 192C96 274.3466666666667 162.9866666666667 341.3333333333334 245.3333333333333 341.3333333333334C302.9333333333333 341.3333333333334 355.4133333333333 307.8400000000001 379.9466666666666 256H341.3333333333333V128" /> + <glyph glyph-name="vector-combine" + unicode="&#xF558;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V149.3333333333334H64V384M192 256H298.6666666666667V149.3333333333334H192V256M341.3333333333333 256H426.6666666666667V21.3333333333334H192V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V256z" /> + <glyph glyph-name="vector-curve" + unicode="&#xF559;" + horiz-adv-x="512" d=" M394.6666666666667 405.3333333333333C412.3733333333333 405.3333333333333 426.6666666666667 391.04 426.6666666666667 373.3333333333334S412.3733333333333 341.3333333333334 394.6666666666667 341.3333333333334C389.76 341.3333333333334 385.0666666666667 342.4 380.8 344.5333333333334L302.0800000000001 265.6L309.3333333333334 256C356.0533333333334 282.88 410.88 298.6666666666667 469.3333333333333 298.6666666666667L490.6666666666666 298.0266666666667V255.1466666666667L469.3333333333333 256C414.2933333333334 256 362.6666666666667 240 320 212.48C320 165.7600000000001 282.24 128 235.52 128C208 85.3333333333334 192 33.7066666666667 192 -21.3333333333333L192.8533333333333 -42.6666666666666H149.9733333333333L149.3333333333333 -21.3333333333333C149.3333333333333 37.1200000000001 165.12 91.9466666666667 192 138.6666666666667L182.4 145.92L103.4666666666667 67.2C105.6 62.9333333333333 106.6666666666667 58.24 106.6666666666667 53.3333333333334C106.6666666666667 35.6266666666667 92.3733333333334 21.3333333333334 74.6666666666667 21.3333333333334S42.6666666666667 35.6266666666667 42.6666666666667 53.3333333333334S56.96 85.3333333333334 74.6666666666667 85.3333333333334C79.5733333333333 85.3333333333334 84.2666666666667 84.2666666666667 88.5333333333333 82.1333333333334L167.2533333333333 161.0666666666667C155.9466666666667 175.36 149.3333333333333 193.7066666666667 149.3333333333333 213.3333333333334C149.3333333333333 260.48 187.52 298.6666666666667 234.6666666666667 298.6666666666667C254.2933333333333 298.6666666666667 272.64 292.0533333333334 286.9333333333333 280.7466666666667L365.8666666666666 359.4666666666667C363.7333333333333 363.7333333333334 362.6666666666667 368.4266666666667 362.6666666666667 373.3333333333333C362.6666666666667 391.04 376.9600000000001 405.3333333333333 394.6666666666667 405.3333333333333M234.6666666666667 256C211.2 256 192 236.8 192 213.3333333333334S211.2 170.6666666666667 234.6666666666667 170.6666666666667S277.3333333333333 189.8666666666667 277.3333333333333 213.3333333333334S258.1333333333334 256 234.6666666666667 256z" /> + <glyph glyph-name="vector-difference" + unicode="&#xF55A;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667V149.3333333333334H64V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V213.3333333333334H192V256H234.6666666666667V298.6666666666667H192M277.3333333333333 298.6666666666667V256H298.6666666666667V234.6666666666667H341.3333333333333V298.6666666666667H277.3333333333333M384 298.6666666666667V256H426.6666666666667V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384M298.6666666666667 192V149.3333333333334H256V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V192H298.6666666666667M149.3333333333333 170.6666666666667V106.6666666666667H213.3333333333333V149.3333333333334H192V170.6666666666667H149.3333333333333z" /> + <glyph glyph-name="vector-difference-ab" + unicode="&#xF55B;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V341.3333333333334H64V384H106.6666666666667V426.6666666666667H64M149.3333333333333 426.6666666666667V384H213.3333333333333V426.6666666666667H149.3333333333333M256 426.6666666666667V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H256M21.3333333333333 298.6666666666667V234.6666666666667H64V298.6666666666667H21.3333333333333M298.6666666666667 298.6666666666667V149.3333333333334H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H298.6666666666667M341.3333333333333 256H426.6666666666667V21.3333333333334H192V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V256M21.3333333333333 192V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667V149.3333333333334H64V192H21.3333333333333z" /> + <glyph glyph-name="vector-difference-ba" + unicode="&#xF55C;" + horiz-adv-x="512" d=" M426.6666666666667 -21.3333333333333C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V64H426.6666666666667V21.3333333333334H384V-21.3333333333333H426.6666666666667M341.3333333333333 -21.3333333333333V21.3333333333334H277.3333333333333V-21.3333333333333H341.3333333333333M234.6666666666667 -21.3333333333333V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H234.6666666666667M469.3333333333333 106.6666666666667V170.6666666666667H426.6666666666667V106.6666666666667H469.3333333333333M192 106.6666666666667V256H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H192M149.3333333333333 149.3333333333334H64V384H298.6666666666667V298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V149.3333333333334M469.3333333333333 213.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384V256H426.6666666666667V213.3333333333334H469.3333333333333z" /> + <glyph glyph-name="vector-intersection" + unicode="&#xF55D;" + horiz-adv-x="512" d=" M66.9866666666667 426.6666666666667C41.8133333333333 426.6666666666667 21.3333333333333 406.1866666666667 21.3333333333333 381.0133333333333V341.3333333333334H64V384H106.6666666666667V426.6666666666667H66.9866666666667M149.3333333333333 426.6666666666667V384H213.3333333333333V426.6666666666667H149.3333333333333M256 426.6666666666667V384H298.6666666666667V341.3333333333334H341.3333333333333V381.0133333333333C341.3333333333333 406.1866666666667 320.8533333333333 426.6666666666667 295.68 426.6666666666667H256M21.3333333333333 298.6666666666667V234.6666666666667H64V298.6666666666667H21.3333333333333M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V106.6666666666667H295.68C320.8533333333333 106.6666666666667 341.3333333333333 127.1466666666667 341.3333333333333 152.3200000000001V298.6666666666667H192M384 298.6666666666667V256H426.6666666666667V213.3333333333334H469.3333333333333V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384M192 256H298.6666666666667V149.3333333333334H192V256M21.3333333333333 192V152.3200000000001C21.3333333333333 127.1466666666667 41.8133333333333 106.6666666666667 66.9866666666667 106.6666666666667H106.6666666666667V149.3333333333334H64V192H21.3333333333333M426.6666666666667 170.6666666666667V106.6666666666667H469.3333333333333V170.6666666666667H426.6666666666667M149.3333333333333 64V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H234.6666666666667V21.3333333333334H192V64H149.3333333333333M426.6666666666667 64V21.3333333333334H384V-21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V64H426.6666666666667M277.3333333333333 21.3333333333334V-21.3333333333333H341.3333333333333V21.3333333333334H277.3333333333333z" /> + <glyph glyph-name="vector-line" + unicode="&#xF55E;" + horiz-adv-x="512" d=" M320 384V286.0800000000001L161.92 128H64V0H192V97.7066666666667L350.2933333333334 256H448V384M362.6666666666667 341.3333333333334H405.3333333333333V298.6666666666667H362.6666666666667M106.6666666666667 85.3333333333334H149.3333333333333V42.6666666666667H106.6666666666667" /> + <glyph glyph-name="vector-point" + unicode="&#xF55F;" + horiz-adv-x="512" d=" M256 21.3333333333334L149.3333333333333 -21.3333333333333L256 213.3333333333334L362.6666666666667 -21.3333333333333L256 21.3333333333334M170.6666666666667 405.3333333333333H341.3333333333333V341.3333333333334H469.3333333333333V298.6666666666667H341.3333333333333V234.6666666666667H170.6666666666667V298.6666666666667H42.6666666666667V341.3333333333334H170.6666666666667V405.3333333333333M213.3333333333333 362.6666666666667V277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="vector-polygon" + unicode="&#xF560;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333V277.3333333333334H91.3066666666666L118.8266666666667 106.6666666666667H85.3333333333333V-21.3333333333333H213.3333333333333V20.0533333333334L320 20.2666666666668V-21.3333333333333H448V106.6666666666667H408.9600000000001L426.6666666666667 256H469.3333333333333V384H341.3333333333333V308.6933333333334L315.7333333333334 277.3333333333334H204.5866666666667L170.6666666666667 323.8400000000001V405.3333333333333M85.3333333333333 362.6666666666667H128V320H85.3333333333333M384 341.3333333333334H426.6666666666667V298.6666666666667H384M134.6133333333333 277.3333333333334H151.68L192 222.08V149.3333333333334H320V215.2533333333333L353.4933333333334 256H384L366.08 106.6666666666667H320V62.72H213.3333333333333V106.6666666666667H162.1333333333333M234.6666666666667 234.6666666666667H277.3333333333333V192H234.6666666666667M128 64H170.6666666666667V21.3333333333334H128M362.6666666666667 64H405.3333333333333V21.3333333333334H362.6666666666667" /> + <glyph glyph-name="vector-polyline" + unicode="&#xF561;" + horiz-adv-x="512" d=" M341.3333333333333 405.3333333333333V277.3333333333334H364.3733333333333L318.9333333333333 170.6666666666667H304.2133333333333L256 235.3066666666667V341.3333333333334H128V213.3333333333334H147.4133333333333L104.1066666666667 106.6666666666667H42.6666666666667V-21.3333333333333H170.6666666666667V106.6666666666667H150.1866666666667L193.4933333333334 213.3333333333334H219.0933333333333L256 163.84V42.6666666666667H384V170.6666666666667H365.2266666666667L410.6666666666667 277.3333333333334H469.3333333333333V405.3333333333333M384 362.6666666666667H426.6666666666667V320H384M170.6666666666667 298.6666666666667H213.3333333333333V256H170.6666666666667M298.6666666666667 128H341.3333333333333V85.3333333333334H298.6666666666667M85.3333333333333 64H128V21.3333333333334H85.3333333333333" /> + <glyph glyph-name="vector-rectangle" + unicode="&#xF5C6;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667H170.6666666666667V320H341.3333333333333V362.6666666666667H469.3333333333333V234.6666666666667H426.6666666666667V149.3333333333334H469.3333333333333V21.3333333333334H341.3333333333333V64H170.6666666666667V21.3333333333334H42.6666666666667V149.3333333333334H85.3333333333333V234.6666666666667H42.6666666666667V362.6666666666667M341.3333333333333 234.6666666666667V277.3333333333334H170.6666666666667V234.6666666666667H128V149.3333333333334H170.6666666666667V106.6666666666667H341.3333333333333V149.3333333333334H384V234.6666666666667H341.3333333333333M85.3333333333333 320V277.3333333333334H128V320H85.3333333333333M384 320V277.3333333333334H426.6666666666667V320H384M85.3333333333333 106.6666666666667V64H128V106.6666666666667H85.3333333333333M384 106.6666666666667V64H426.6666666666667V106.6666666666667H384z" /> + <glyph glyph-name="vector-selection" + unicode="&#xF562;" + horiz-adv-x="512" d=" M64 426.6666666666667H106.6666666666667V384H64V341.3333333333334H21.3333333333333V384C21.3333333333333 407.4666666666667 40.5333333333333 426.6666666666667 64 426.6666666666667M298.6666666666667 426.6666666666667C322.1333333333334 426.6666666666667 341.3333333333333 407.4666666666667 341.3333333333333 384V341.3333333333334H298.6666666666667V384H256V426.6666666666667H298.6666666666667M426.6666666666667 298.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256V213.3333333333334H426.6666666666667V256H384V298.6666666666667H426.6666666666667M469.3333333333333 21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H384V21.3333333333334H426.6666666666667V64H469.3333333333333V21.3333333333334M426.6666666666667 170.6666666666667H469.3333333333333V106.6666666666667H426.6666666666667V170.6666666666667M277.3333333333333 256V298.6666666666667H341.3333333333333V234.6666666666667H298.6666666666667V256H277.3333333333333M277.3333333333333 -21.3333333333333V21.3333333333334H341.3333333333333V-21.3333333333333H277.3333333333333M192 -21.3333333333333C168.5333333333333 -21.3333333333333 149.3333333333333 -2.1333333333333 149.3333333333333 21.3333333333334V64H192V21.3333333333334H234.6666666666667V-21.3333333333333H192M149.3333333333333 106.6666666666667V170.6666666666667H192V149.3333333333334H213.3333333333333V106.6666666666667H149.3333333333333M149.3333333333333 384V426.6666666666667H213.3333333333333V384H149.3333333333333M64 106.6666666666667C40.5333333333333 106.6666666666667 21.3333333333333 125.8666666666667 21.3333333333333 149.3333333333334V192H64V149.3333333333334H106.6666666666667V106.6666666666667H64M21.3333333333333 298.6666666666667H64V234.6666666666667H21.3333333333333V298.6666666666667M192 298.6666666666667H234.6666666666667V256H192V213.3333333333334H149.3333333333333V256C149.3333333333333 279.4666666666667 168.5333333333333 298.6666666666667 192 298.6666666666667M341.3333333333333 149.3333333333334C341.3333333333333 125.8666666666667 322.1333333333334 106.6666666666667 298.6666666666667 106.6666666666667H256V149.3333333333334H298.6666666666667V192H341.3333333333333V149.3333333333334z" /> + <glyph glyph-name="vector-square" + unicode="&#xF001;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H170.6666666666667V362.6666666666667H341.3333333333333V405.3333333333333H469.3333333333333V277.3333333333334H426.6666666666667V106.6666666666667H469.3333333333333V-21.3333333333333H341.3333333333333V21.3333333333334H170.6666666666667V-21.3333333333333H42.6666666666667V106.6666666666667H85.3333333333333V277.3333333333334H42.6666666666667V405.3333333333333M341.3333333333333 277.3333333333334V320H170.6666666666667V277.3333333333334H128V106.6666666666667H170.6666666666667V64H341.3333333333333V106.6666666666667H384V277.3333333333334H341.3333333333333M85.3333333333333 362.6666666666667V320H128V362.6666666666667H85.3333333333333M384 362.6666666666667V320H426.6666666666667V362.6666666666667H384M85.3333333333333 64V21.3333333333334H128V64H85.3333333333333M384 64V21.3333333333334H426.6666666666667V64H384z" /> + <glyph glyph-name="vector-triangle" + unicode="&#xF563;" + horiz-adv-x="512" d=" M192 384V256H207.5733333333333L123.52 106.6666666666667H42.6666666666667V-21.3333333333333H170.6666666666667V21.3333333333334H341.3333333333333V-21.3333333333333H469.3333333333333V106.6666666666667H388.48L304.4266666666667 256H320V384M234.6666666666667 341.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667M256 255.1466666666667L341.3333333333333 103.4666666666667V64H170.6666666666667V103.4666666666667M85.3333333333333 64H128V21.3333333333334H85.3333333333333M384 64H426.6666666666667V21.3333333333334H384" /> + <glyph glyph-name="vector-union" + unicode="&#xF564;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V256H426.6666666666667V21.3333333333334H192V149.3333333333334H64V384z" /> + <glyph glyph-name="verified" + unicode="&#xF565;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L128 170.6666666666667L158.08 200.7466666666667L213.3333333333333 145.7066666666667L353.92 286.2933333333334L384 256M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.7866666666667 256 -42.6666666666666C366.08 -15.7866666666666 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="vibrate" + unicode="&#xF566;" + horiz-adv-x="512" d=" M341.3333333333333 42.6666666666667H170.6666666666667V341.3333333333334H341.3333333333333M352 384H160C142.2933333333333 384 128 369.7066666666667 128 352V32C128 14.2933333333334 142.2933333333333 0 160 0H352C369.7066666666666 0 384 14.2933333333334 384 32V352C384 369.7066666666667 369.7066666666666 384 352 384M405.3333333333333 85.3333333333334H448V298.6666666666667H405.3333333333333M469.3333333333333 256V128H512V256M64 85.3333333333334H106.6666666666667V298.6666666666667H64M0 128H42.6666666666667V256H0V128z" /> + <glyph glyph-name="video" + unicode="&#xF567;" + horiz-adv-x="512" d=" M362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C353.0666666666667 64 362.6666666666667 73.6 362.6666666666667 85.3333333333334V160L448 74.6666666666667V309.3333333333334L362.6666666666667 224z" /> + <glyph glyph-name="video-off" + unicode="&#xF568;" + horiz-adv-x="512" d=" M69.76 405.3333333333333L42.6666666666667 378.24L100.9066666666667 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C345.6 64 349.6533333333333 65.7066666666667 352.8533333333333 67.84L420.9066666666667 0L448 27.0933333333334M448 309.3333333333334L362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H209.4933333333334L448 81.4933333333333V309.3333333333334z" /> + <glyph glyph-name="video-switch" + unicode="&#xF569;" + horiz-adv-x="512" d=" M277.3333333333333 117.3333333333334V170.6666666666667H149.3333333333333V117.3333333333334L74.6666666666667 192L149.3333333333333 266.6666666666667V213.3333333333334H277.3333333333333V266.6666666666667L352 192M384 245.3333333333334V320C384 331.7333333333334 374.4 341.3333333333334 362.6666666666667 341.3333333333334H64C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V64C42.6666666666667 52.2666666666667 52.2666666666667 42.6666666666667 64 42.6666666666667H362.6666666666667C374.4 42.6666666666667 384 52.2666666666667 384 64V138.6666666666667L469.3333333333333 53.3333333333334V330.6666666666667L384 245.3333333333334z" /> + <glyph glyph-name="view-agenda" + unicode="&#xF56A;" + horiz-adv-x="512" d=" M426.6666666666667 384H64C52.2666666666667 384 42.6666666666667 374.4 42.6666666666667 362.6666666666667V234.6666666666667C42.6666666666667 222.9333333333333 52.2666666666667 213.3333333333334 64 213.3333333333334H426.6666666666667C438.4 213.3333333333334 448 222.9333333333333 448 234.6666666666667V362.6666666666667C448 374.4 438.4 384 426.6666666666667 384M426.6666666666667 170.6666666666667H64C52.2666666666667 170.6666666666667 42.6666666666667 161.0666666666667 42.6666666666667 149.3333333333334V21.3333333333334C42.6666666666667 9.6 52.2666666666667 0 64 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V149.3333333333334C448 161.0666666666667 438.4 170.6666666666667 426.6666666666667 170.6666666666667z" /> + <glyph glyph-name="view-array" + unicode="&#xF56B;" + horiz-adv-x="512" d=" M170.6666666666667 64H362.6666666666667V341.3333333333334H170.6666666666667M384 341.3333333333334V64H448V341.3333333333334M85.3333333333333 64H149.3333333333333V341.3333333333334H85.3333333333333V64z" /> + <glyph glyph-name="view-carousel" + unicode="&#xF56C;" + horiz-adv-x="512" d=" M384 320V85.3333333333334H469.3333333333333V320M42.6666666666667 85.3333333333334H128V320H42.6666666666667M149.3333333333333 42.6666666666667H362.6666666666667V362.6666666666667H149.3333333333333V42.6666666666667z" /> + <glyph glyph-name="view-column" + unicode="&#xF56D;" + horiz-adv-x="512" d=" M341.3333333333333 341.3333333333334V64H448V341.3333333333334M85.3333333333333 64H192V341.3333333333334H85.3333333333333M213.3333333333333 64H320V341.3333333333334H213.3333333333333V64z" /> + <glyph glyph-name="view-dashboard" + unicode="&#xF56E;" + horiz-adv-x="512" d=" M277.3333333333333 384V256H448V384M277.3333333333333 0H448V213.3333333333334H277.3333333333333M64 0H234.6666666666667V128H64M64 170.6666666666667H234.6666666666667V384H64V170.6666666666667z" /> + <glyph glyph-name="view-day" + unicode="&#xF56F;" + horiz-adv-x="512" d=" M42.6666666666667 384V320H448V384M426.6666666666667 277.3333333333334H64C52.2666666666667 277.3333333333334 42.6666666666667 267.7333333333334 42.6666666666667 256V128C42.6666666666667 116.2666666666667 52.2666666666667 106.6666666666667 64 106.6666666666667H426.6666666666667C438.4 106.6666666666667 448 116.2666666666667 448 128V256C448 267.7333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334M42.6666666666667 0H448V64H42.6666666666667V0z" /> + <glyph glyph-name="view-grid" + unicode="&#xF570;" + horiz-adv-x="512" d=" M64 213.3333333333334H234.6666666666667V384H64M64 0H234.6666666666667V170.6666666666667H64M277.3333333333333 0H448V170.6666666666667H277.3333333333333M277.3333333333333 384V213.3333333333334H448V384" /> + <glyph glyph-name="view-headline" + unicode="&#xF571;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V298.6666666666667H448V341.3333333333334M85.3333333333333 213.3333333333334H448V256H85.3333333333333M85.3333333333333 42.6666666666667H448V85.3333333333334H85.3333333333333M85.3333333333333 128H448V170.6666666666667H85.3333333333333V128z" /> + <glyph glyph-name="view-list" + unicode="&#xF572;" + horiz-adv-x="512" d=" M192 341.3333333333334V256H448V341.3333333333334M192 42.6666666666667H448V128H192M192 149.3333333333334H448V234.6666666666667H192M85.3333333333333 256H170.6666666666667V341.3333333333334H85.3333333333333M85.3333333333333 42.6666666666667H170.6666666666667V128H85.3333333333333M85.3333333333333 149.3333333333334H170.6666666666667V234.6666666666667H85.3333333333333V149.3333333333334z" /> + <glyph glyph-name="view-module" + unicode="&#xF573;" + horiz-adv-x="512" d=" M341.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M213.3333333333333 213.3333333333334H320V341.3333333333334H213.3333333333333M341.3333333333333 64H448V192H341.3333333333333M213.3333333333333 64H320V192H213.3333333333333M85.3333333333333 64H192V192H85.3333333333333M85.3333333333333 213.3333333333334H192V341.3333333333334H85.3333333333333V213.3333333333334z" /> + <glyph glyph-name="view-quilt" + unicode="&#xF574;" + horiz-adv-x="512" d=" M213.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M341.3333333333333 64H448V192H341.3333333333333M85.3333333333333 64H192V341.3333333333334H85.3333333333333M213.3333333333333 64H320V192H213.3333333333333V64z" /> + <glyph glyph-name="view-stream" + unicode="&#xF575;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M85.3333333333333 64H448V192H85.3333333333333V64z" /> + <glyph glyph-name="view-week" + unicode="&#xF576;" + horiz-adv-x="512" d=" M277.3333333333333 341.3333333333334H213.3333333333333C201.6 341.3333333333334 192 331.7333333333334 192 320V64C192 52.2666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H277.3333333333333C289.0666666666667 42.6666666666667 298.6666666666667 52.2666666666667 298.6666666666667 64V320C298.6666666666667 331.7333333333334 289.0666666666667 341.3333333333334 277.3333333333333 341.3333333333334M426.6666666666667 341.3333333333334H362.6666666666667C350.9333333333333 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V64C341.3333333333333 52.2666666666667 350.9333333333333 42.6666666666667 362.6666666666667 42.6666666666667H426.6666666666667C438.4 42.6666666666667 448 52.2666666666667 448 64V320C448 331.7333333333334 438.4 341.3333333333334 426.6666666666667 341.3333333333334M128 341.3333333333334H64C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V64C42.6666666666667 52.2666666666667 52.2666666666667 42.6666666666667 64 42.6666666666667H128C139.7333333333333 42.6666666666667 149.3333333333333 52.2666666666667 149.3333333333333 64V320C149.3333333333333 331.7333333333334 139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="vimeo" + unicode="&#xF577;" + horiz-adv-x="512" d=" M469.3333333333333 289.7066666666667C467.4133333333333 248.1066666666667 438.4 191.1466666666667 382.2933333333334 118.6133333333334C324.2666666666667 42.6666666666667 275.2 5.3333333333334 234.6666666666667 5.3333333333334C210.1333333333333 5.3333333333334 189.0133333333333 28.3733333333333 171.7333333333334 74.6666666666667C160 116.48 149.3333333333334 158.72 137.3866666666667 200.96C124.5866666666667 247.04 110.9333333333333 270.0800000000001 96 270.0800000000001C93.0133333333333 270.0800000000001 81.92 263.2533333333334 62.72 249.8133333333334L42.6666666666667 275.8400000000001C64 294.4 84.48 312.9600000000001 104.96 331.52C133.12 355.84 154.24 368.64 168.1066666666667 369.92C201.3866666666667 373.3333333333333 221.8666666666667 350.2933333333333 229.5466666666667 301.6533333333333C237.8666666666667 248.96 243.6266666666667 216.32 246.8266666666667 203.52C256 160 266.6666666666667 138.6666666666667 278.4 138.6666666666667C287.36 138.6666666666667 300.8 152.3200000000001 318.7200000000001 180.6933333333334C336.64 208.8533333333334 346.24 230.4000000000001 347.5200000000001 245.3333333333334C350.0800000000001 269.6533333333334 340.48 281.8133333333334 318.7200000000001 281.8133333333334C308.48 281.8133333333334 298.0266666666667 279.4666666666667 287.1466666666667 274.7733333333334C308.0533333333334 343.6800000000001 348.1600000000001 377.1733333333334 407.2533333333334 375.2533333333334C451.2 373.9733333333334 471.8933333333334 345.3866666666667 469.3333333333334 289.7066666666667z" /> + <glyph glyph-name="vine" + unicode="&#xF578;" + horiz-adv-x="512" d=" M424.32 193.0666666666667C414.5066666666667 190.72 405.3333333333333 189.8666666666667 396.16 189.8666666666667C347.7333333333334 189.8666666666667 310.4 224 310.4 282.4533333333334C310.4 311.2533333333334 321.7066666666667 326.4000000000001 337.4933333333334 326.4000000000001C352 326.4000000000001 362.6666666666667 312.9600000000001 362.6666666666667 285.6533333333334C362.6666666666667 270.0800000000001 358.1866666666666 253.0133333333334 355.2 242.9866666666667C355.2 242.9866666666667 370.1333333333333 216.96 410.88 224.8533333333334C419.6266666666666 244.0533333333334 424.32 269.0133333333334 424.32 290.9866666666667C424.32 349.8666666666667 394.6666666666667 384 339.4133333333333 384C282.88 384 249.8133333333334 340.48 249.8133333333334 283.3066666666667C249.8133333333334 226.5600000000001 276.2666666666667 177.7066666666667 320 155.52C301.6533333333333 118.8266666666667 278.1866666666666 86.4 253.8666666666667 61.8666666666667C209.4933333333334 115.4133333333333 169.3866666666667 186.88 152.96 326.4H87.68C117.9733333333333 94.0799999999999 207.7866666666667 20.2666666666667 231.68 5.9733333333334C245.3333333333333 -2.1333333333333 256.64 -1.7066666666666 269.0133333333333 5.3333333333334C288 16.2133333333334 346.24 74.6666666666667 378.4533333333333 142.0800000000001C391.8933333333333 142.2933333333334 408.1066666666667 143.7866666666667 424.32 147.4133333333334V193.0666666666667z" /> + <glyph glyph-name="violin" + unicode="&#xF60F;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333C222.9333333333333 405.3333333333333 213.3333333333333 395.7333333333334 213.3333333333333 384V256C213.3333333333333 250.0266666666667 218.0266666666667 245.3333333333334 224 245.3333333333334H256C261.9733333333333 245.3333333333334 266.6666666666667 240.64 266.6666666666667 234.6666666666667S261.9733333333333 224 256 224H224C207.5733333333333 224 192 239.5733333333334 192 256V337.92C155.0933333333333 328.5333333333334 128 295.8933333333333 128 256V224C157.44 224 181.3333333333333 200.1066666666667 181.3333333333333 170.6666666666667S157.44 117.3333333333334 128 117.3333333333334V85.3333333333334C128 26.24 175.5733333333333 -21.3333333333333 234.6666666666667 -21.3333333333333H277.3333333333333C336.4266666666666 -21.3333333333333 384 26.24 384 85.3333333333334V117.3333333333334C354.56 117.3333333333334 330.6666666666667 141.2266666666667 330.6666666666667 170.6666666666667S354.56 224 384 224V256C384 303.36 346.0266666666667 341.3333333333334 298.6666666666667 341.3333333333334V384C298.6666666666667 395.7333333333334 289.0666666666667 405.3333333333333 277.3333333333333 405.3333333333333H234.6666666666667M229.3333333333333 96H282.6666666666667L272 21.3333333333334H240L229.3333333333333 96z" /> + <glyph glyph-name="visualstudio" + unicode="&#xF610;" + horiz-adv-x="512" d=" M362.6666666666667 266.6666666666667L261.3333333333333 185.1733333333334L362.6666666666667 106.6666666666667V266.6666666666667M100.2666666666667 55.4666666666667L42.6666666666667 91.7333333333334V283.7333333333334L106.6666666666667 305.0666666666667L198.4 234.0266666666667L384 405.3333333333333L469.3333333333333 352V21.3333333333334L362.6666666666667 -21.3333333333333L199.2533333333333 135.2533333333333L100.2666666666667 55.4666666666667M106.6666666666667 149.3333333333334L146.3466666666667 186.0266666666667L106.6666666666667 224V149.3333333333334z" /> + <glyph glyph-name="vk" + unicode="&#xF579;" + horiz-adv-x="512" d=" M416.8533333333333 136.5333333333334C449.92 105.8133333333334 456.7466666666667 91.0933333333334 457.8133333333333 89.1733333333334C471.4666666666667 66.5600000000001 442.88 64.8533333333334 442.88 64.8533333333334L387.84 64S375.8933333333333 61.6533333333334 360.5333333333333 72.3200000000001C339.8399999999999 86.4 320 123.3066666666667 305.28 118.4C290.1333333333333 113.4933333333334 290.56 80.4266666666667 290.56 80.4266666666667S290.56 75.7333333333334 287.1466666666667 72.1066666666667C283.3066666666666 68.0533333333333 275.84 69.5466666666666 275.84 69.5466666666666H251.3066666666667S196.9066666666667 64 149.3333333333333 113.7066666666667C97.0666666666667 167.8933333333334 50.9866666666667 274.5600000000001 50.9866666666667 274.5600000000001S48.4266666666667 280.9600000000001 51.2 284.5866666666667C54.4 288 63.36 288 63.36 288H122.24S128 288 131.6266666666666 284.5866666666667C134.8266666666667 282.24 136.7466666666667 277.3333333333334 136.7466666666667 277.3333333333334S146.1333333333333 253.6533333333334 158.9333333333333 231.8933333333334C183.4666666666667 189.4400000000001 194.7733333333333 180.2666666666667 202.6666666666667 184.7466666666667C215.4666666666667 191.36 211.84 244.6933333333334 211.84 244.6933333333334S212.0533333333333 264.1066666666667 205.6533333333333 272.6400000000001C200.7466666666667 279.2533333333334 191.36 281.3866666666667 187.3066666666667 281.8133333333334C183.8933333333334 282.24 189.44 289.92 196.48 293.5466666666667C207.1466666666667 298.6666666666667 225.7066666666667 298.6666666666667 247.8933333333333 298.6666666666667C265.1733333333333 298.6666666666667 270.08 297.3866666666667 276.6933333333333 295.8933333333333C297.1733333333333 290.9866666666667 290.1333333333334 272 290.1333333333334 226.7733333333333C290.1333333333334 212.0533333333334 288 192 298.0266666666667 184.96C302.5066666666667 181.9733333333333 313.6 184.5333333333333 341.3333333333333 231.2533333333333C354.1333333333333 253.44 363.9466666666666 279.68 363.9466666666666 279.68S366.08 284.16 369.28 286.2933333333333C372.6933333333333 288 377.3866666666666 288 377.3866666666666 288H439.2533333333332S458.0266666666665 290.1333333333333 461.0133333333332 281.8133333333333C464.2133333333332 273.0666666666666 453.9733333333332 252.3733333333333 428.5866666666666 218.88C387.1999999999999 163.4133333333333 382.5066666666666 168.5333333333333 416.8533333333333 136.5333333333333z" /> + <glyph glyph-name="vk-box" + unicode="&#xF57A;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M367.7866666666667 148.6933333333334C342.6133333333334 171.9466666666667 346.0266666666667 168.3200000000001 376.32 208.6400000000001C394.6666666666667 233.1733333333334 402.1333333333334 248.1066666666667 399.7866666666667 254.5066666666667C397.4400000000001 260.48 384.0000000000001 258.9866666666668 384.0000000000001 258.9866666666668L338.9866666666668 258.5600000000001S335.5733333333334 259.2000000000001 333.2266666666668 257.7066666666668C330.6666666666668 256.0000000000001 329.1733333333334 252.8000000000001 329.1733333333334 252.8000000000001S321.9200000000001 233.8133333333334 312.5333333333334 217.6000000000001C292.4800000000002 183.6800000000001 284.3733333333335 181.9733333333334 281.1733333333334 183.8933333333334C273.7066666666668 188.8000000000001 275.4133333333334 203.7333333333334 275.4133333333334 214.4000000000001C275.4133333333334 247.2533333333334 280.5333333333334 261.1200000000001 265.8133333333335 264.5333333333334C260.9066666666668 265.8133333333334 257.2800000000001 266.6666666666668 244.6933333333335 266.6666666666668C228.6933333333335 266.6666666666668 215.0400000000001 266.6666666666668 207.3600000000001 262.8266666666667C202.6666666666668 260.2666666666668 198.1866666666668 254.7200000000001 200.7466666666668 254.5066666666667C203.7333333333335 254.0800000000001 210.3466666666668 252.5866666666667 213.9733333333334 247.6800000000001C218.6666666666668 241.4933333333334 218.4533333333334 227.4133333333334 218.4533333333334 227.4133333333334S221.0133333333334 188.5866666666667 212.2666666666668 183.6800000000001C206.0800000000002 180.4800000000001 197.7600000000001 187.3066666666667 180.0533333333335 218.0266666666667C170.6666666666668 233.8133333333334 163.8400000000002 251.3066666666668 163.8400000000002 251.3066666666668L160 256L153.3866666666667 259.2000000000001H110.5066666666667S104.1066666666667 259.2000000000001 101.76 256C99.6266666666667 253.8666666666667 101.5466666666667 249.1733333333334 101.5466666666667 249.1733333333334S135.04 171.52 173.0133333333333 132.2666666666667C207.7866666666666 96 247.2533333333334 100.0533333333333 247.2533333333334 100.0533333333333H265.1733333333333S270.5066666666667 98.9866666666666 273.28 101.7599999999999C275.84 104.5333333333333 275.84 107.9466666666666 275.84 107.9466666666666S275.4133333333333 132.0533333333332 286.5066666666667 135.4666666666666C297.6 138.6666666666666 311.68 112.4266666666666 326.6133333333333 101.9733333333333C337.92 94.2933333333332 346.4533333333333 95.9999999999999 346.4533333333333 95.9999999999999L386.56 96.6399999999999S407.4666666666666 97.9199999999999 397.44 114.3466666666666C396.8 115.6266666666666 391.68 126.5066666666666 367.7866666666667 148.6933333333332z" /> + <glyph glyph-name="vk-circle" + unicode="&#xF57B;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M367.7866666666667 148.6933333333334C342.6133333333334 171.9466666666667 346.0266666666667 168.3200000000001 376.32 208.6400000000001C394.6666666666667 233.1733333333334 402.1333333333334 248.1066666666667 399.7866666666667 254.5066666666667C397.4400000000001 260.48 384.0000000000001 258.9866666666668 384.0000000000001 258.9866666666668L338.9866666666668 258.5600000000001S335.5733333333334 259.2000000000001 333.2266666666668 257.7066666666668C330.6666666666668 256.0000000000001 329.1733333333334 252.8000000000001 329.1733333333334 252.8000000000001S321.9200000000001 233.8133333333334 312.5333333333334 217.6000000000001C292.4800000000002 183.6800000000001 284.3733333333335 181.9733333333334 281.1733333333334 183.8933333333334C273.7066666666668 188.8000000000001 275.4133333333334 203.7333333333334 275.4133333333334 214.4000000000001C275.4133333333334 247.2533333333334 280.5333333333334 261.1200000000001 265.8133333333335 264.5333333333334C260.9066666666668 265.8133333333334 257.2800000000001 266.6666666666668 244.6933333333335 266.6666666666668C228.6933333333335 266.6666666666668 215.0400000000001 266.6666666666668 207.3600000000001 262.8266666666667C202.6666666666668 260.2666666666668 198.1866666666668 254.7200000000001 200.7466666666668 254.5066666666667C203.7333333333335 254.0800000000001 210.3466666666668 252.5866666666667 213.9733333333334 247.6800000000001C218.6666666666668 241.4933333333334 218.4533333333334 227.4133333333334 218.4533333333334 227.4133333333334S221.0133333333334 188.5866666666667 212.2666666666668 183.6800000000001C206.0800000000002 180.4800000000001 197.7600000000001 187.3066666666667 180.0533333333335 218.0266666666667C170.6666666666668 233.8133333333334 163.8400000000002 251.3066666666668 163.8400000000002 251.3066666666668L160 256L153.3866666666667 259.2000000000001H110.5066666666667S104.1066666666667 259.2000000000001 101.76 256C99.6266666666667 253.8666666666667 101.5466666666667 249.1733333333334 101.5466666666667 249.1733333333334S135.04 171.52 173.0133333333333 132.2666666666667C207.7866666666666 96 247.2533333333334 100.0533333333333 247.2533333333334 100.0533333333333H265.1733333333333S270.5066666666667 98.9866666666666 273.28 101.7599999999999C275.84 104.5333333333333 275.84 107.9466666666666 275.84 107.9466666666666S275.4133333333333 132.0533333333332 286.5066666666667 135.4666666666666C297.6 138.6666666666666 311.68 112.4266666666666 326.6133333333333 101.9733333333333C337.92 94.2933333333332 346.4533333333333 95.9999999999999 346.4533333333333 95.9999999999999L386.56 96.6399999999999S407.4666666666666 97.9199999999999 397.44 114.3466666666666C396.8 115.6266666666666 391.68 126.5066666666666 367.7866666666667 148.6933333333332z" /> + <glyph glyph-name="vlc" + unicode="&#xF57C;" + horiz-adv-x="512" d=" M256 426.6666666666667C247.04 426.6666666666667 238.72 421.76 234.6666666666667 410.6666666666667L210.7733333333334 343.8933333333333C221.0133333333334 332.8 240.64 330.6666666666667 256 330.6666666666667C271.36 330.6666666666667 290.9866666666667 332.8 301.44 343.8933333333333L277.3333333333333 410.6666666666667C273.4933333333334 421.3333333333333 264.96 426.6666666666667 256 426.6666666666667M180.0533333333333 257.92L149.3333333333333 172.5866666666667C172.16 143.5733333333334 218.88 138.6666666666667 256 138.6666666666667C293.12 138.6666666666667 339.84 143.5733333333334 362.6666666666667 172.5866666666667L331.9466666666667 257.92C314.88 238.2933333333334 282.4533333333333 234.6666666666667 256 234.6666666666667C229.5466666666667 234.6666666666667 197.12 238.2933333333334 180.0533333333333 257.92M116.0533333333333 128C98.56 128 80.2133333333333 114.1333333333333 75.3066666666666 97.28L43.9466666666667 -11.9466666666667C39.2533333333333 -28.8 49.0666666666667 -42.6666666666667 66.7733333333333 -42.6666666666667H445.44C462.9333333333333 -42.6666666666667 472.7466666666667 -28.8000000000001 468.0533333333333 -11.9466666666667L436.6933333333333 97.28C431.7866666666667 114.1333333333333 413.44 128 395.9466666666666 128H378.6666666666667L385.92 107.3066666666666C388.48 100.48 390.1866666666666 91.9466666666667 385.92 85.9733333333333C359.2533333333334 49.0666666666667 301.6533333333333 42.6666666666667 256 42.6666666666667C210.3466666666666 42.6666666666667 152.7466666666667 49.0666666666667 126.08 85.9733333333334C121.8133333333333 91.9466666666667 123.52 100.48 126.08 107.3066666666667L133.3333333333333 128.0000000000001H116.0533333333333z" /> + <glyph glyph-name="voice" + unicode="&#xF5CB;" + horiz-adv-x="512" d=" M192 341.3333333333334C239.1466666666667 341.3333333333334 277.3333333333333 303.1466666666667 277.3333333333333 256S239.1466666666667 170.6666666666667 192 170.6666666666667S106.6666666666667 208.8533333333333 106.6666666666667 256S144.8533333333333 341.3333333333334 192 341.3333333333334M192 128C248.96 128 362.6666666666667 99.4133333333334 362.6666666666667 42.6666666666667V0H21.3333333333333V42.6666666666667C21.3333333333333 99.4133333333334 135.04 128 192 128M357.5466666666666 333.6533333333334C400.64 286.7200000000001 400.64 221.6533333333334 357.5466666666666 178.5600000000001L321.7066666666666 214.6133333333334C339.6266666666666 239.7866666666667 339.6266666666666 272.4266666666667 321.7066666666666 297.6L357.5466666666666 333.6533333333334M428.16 405.3333333333333C512 318.9333333333334 511.36 189.6533333333334 428.16 106.6666666666667L393.3866666666667 141.44C452.48 209.28 452.48 306.1333333333334 393.3866666666667 370.56L428.16 405.3333333333333z" /> + <glyph glyph-name="voicemail" + unicode="&#xF57D;" + horiz-adv-x="512" d=" M394.6666666666667 128C353.4933333333334 128 320 161.4933333333334 320 202.6666666666667S353.4933333333334 277.3333333333334 394.6666666666667 277.3333333333334S469.3333333333333 243.84 469.3333333333333 202.6666666666667S435.84 128 394.6666666666667 128M117.3333333333333 128C76.16 128 42.6666666666667 161.4933333333334 42.6666666666667 202.6666666666667S76.16 277.3333333333334 117.3333333333333 277.3333333333334S192 243.84 192 202.6666666666667S158.5066666666667 128 117.3333333333333 128M394.6666666666667 320C329.8133333333334 320 277.3333333333333 267.52 277.3333333333333 202.6666666666667C277.3333333333333 174.2933333333334 287.36 148.2666666666667 304.2133333333333 128H207.7866666666667C224.64 148.2666666666667 234.6666666666667 174.2933333333334 234.6666666666667 202.6666666666667C234.6666666666667 267.52 182.1866666666667 320 117.3333333333333 320S0 267.52 0 202.6666666666667S52.48 85.3333333333334 117.3333333333333 85.3333333333334H394.6666666666667C459.52 85.3333333333334 512 137.8133333333334 512 202.6666666666667S459.52 320 394.6666666666667 320z" /> + <glyph glyph-name="volume-high" + unicode="&#xF57E;" + horiz-adv-x="512" d=" M298.6666666666667 379.0933333333334V335.1466666666667C360.32 316.8 405.3333333333333 259.6266666666667 405.3333333333333 192S360.32 67.4133333333334 298.6666666666667 49.0666666666667V4.9066666666667C384 24.3200000000001 448 100.6933333333333 448 192C448 283.3066666666667 384 359.68 298.6666666666667 379.0933333333334M352 192C352 229.76 330.6666666666667 262.1866666666667 298.6666666666667 277.9733333333334V106.6666666666667C330.6666666666667 121.8133333333334 352 154.4533333333334 352 192M64 256V128H149.3333333333333L256 21.3333333333334V362.6666666666667L149.3333333333333 256H64z" /> + <glyph glyph-name="volume-low" + unicode="&#xF57F;" + horiz-adv-x="512" d=" M149.3333333333333 256V128H234.6666666666667L341.3333333333333 21.3333333333334V362.6666666666667L234.6666666666667 256H149.3333333333333z" /> + <glyph glyph-name="volume-medium" + unicode="&#xF580;" + horiz-adv-x="512" d=" M106.6666666666667 256V128H192L298.6666666666667 21.3333333333334V362.6666666666667L192 256M394.6666666666667 192C394.6666666666667 229.76 373.3333333333333 262.1866666666667 341.3333333333333 277.9733333333334V106.6666666666667C373.3333333333333 121.8133333333334 394.6666666666667 154.4533333333334 394.6666666666667 192z" /> + <glyph glyph-name="volume-off" + unicode="&#xF581;" + horiz-adv-x="512" d=" M256 362.6666666666667L211.4133333333333 318.0800000000001L256 273.4933333333334M91.0933333333333 384L64 356.9066666666667L164.9066666666667 256H64V128H149.3333333333333L256 21.3333333333334V164.9066666666667L346.6666666666667 74.0266666666666C332.3733333333334 63.1466666666667 316.3733333333334 54.1866666666667 298.6666666666667 49.0666666666666V4.9066666666666C328.1066666666667 11.7333333333333 354.7733333333333 25.1733333333333 377.1733333333333 43.5199999999999L420.9066666666667 0L448 27.0933333333334L256 219.0933333333333M405.3333333333333 192C405.3333333333333 171.9466666666667 401.0666666666667 153.1733333333334 393.8133333333334 135.68L426.0266666666667 103.4666666666666C439.8933333333333 129.92 448 160 448 192C448 283.3066666666667 384 359.68 298.6666666666667 379.0933333333334V335.1466666666667C360.32 316.8 405.3333333333333 259.6266666666667 405.3333333333333 192M352 192C352 229.76 330.6666666666667 262.1866666666667 298.6666666666667 277.9733333333334V230.8266666666667L350.9333333333333 178.5600000000001C352 182.8266666666667 352 187.5200000000001 352 192.0000000000001z" /> + <glyph glyph-name="vpn" + unicode="&#xF582;" + horiz-adv-x="512" d=" M192 341.3333333333334H320L256 277.3333333333334L192 341.3333333333334M224 135.2533333333333C217.6 128 213.3333333333333 117.3333333333334 213.3333333333333 106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64S298.6666666666667 83.2 298.6666666666667 106.6666666666667C298.6666666666667 118.4 293.9733333333333 129.0666666666667 286.08 136.7466666666667L316.3733333333334 167.04C331.7333333333334 151.4666666666667 341.3333333333333 130.1333333333333 341.3333333333333 106.6666666666667C341.3333333333333 59.52 303.1466666666667 21.3333333333334 256 21.3333333333334S170.6666666666667 59.52 170.6666666666667 106.6666666666667C170.6666666666667 129.4933333333334 179.6266666666667 150.1866666666667 194.1333333333333 165.3333333333334L193.92 165.5466666666667L344.9600000000001 316.3733333333334C360.32 331.7333333333334 381.6533333333333 341.3333333333334 405.3333333333333 341.3333333333334C452.48 341.3333333333334 490.6666666666666 303.1466666666667 490.6666666666666 256S452.48 170.6666666666667 405.3333333333333 170.6666666666667C381.8666666666666 170.6666666666667 360.5333333333333 180.2666666666667 344.9600000000001 195.6266666666667L375.2533333333334 225.92C382.9333333333334 218.0266666666667 393.6 213.3333333333334 405.3333333333334 213.3333333333334C428.8000000000001 213.3333333333334 448.0000000000001 232.5333333333334 448.0000000000001 256S428.8000000000001 298.6666666666667 405.3333333333334 298.6666666666667C393.6 298.6666666666667 382.9333333333334 293.9733333333334 375.2533333333334 286.0800000000001L224.0000000000001 135.2533333333333M136.7466666666667 286.0800000000001C129.0666666666667 293.9733333333334 118.4 298.6666666666667 106.6666666666667 298.6666666666667C83.2 298.6666666666667 64 279.4666666666667 64 256S83.2 213.3333333333334 106.6666666666667 213.3333333333334C118.4 213.3333333333334 129.0666666666667 218.0266666666667 136.7466666666667 225.92L167.04 195.6266666666667C151.4666666666667 180.2666666666667 130.1333333333333 170.6666666666667 106.6666666666667 170.6666666666667C59.52 170.6666666666667 21.3333333333333 208.8533333333333 21.3333333333333 256S59.52 341.3333333333334 106.6666666666667 341.3333333333334C130.3466666666667 341.3333333333334 151.68 331.7333333333334 167.04 316.3733333333334L225.92 257.4933333333334L195.6266666666667 227.2L136.7466666666667 286.0800000000001z" /> + <glyph glyph-name="walk" + unicode="&#xF583;" + horiz-adv-x="512" d=" M301.2266666666667 234.6666666666667H405.3333333333333V273.0666666666667H328.1066666666667L285.44 344.1066666666667C279.04 354.7733333333334 267.52 362.0266666666667 254.2933333333333 362.0266666666667C250.4533333333333 362.0266666666667 247.04 361.3866666666667 243.6266666666666 360.3200000000001L128 324.2666666666667V213.3333333333334H166.4V291.6266666666667L211.4133333333333 305.7066666666667L128 -21.3333333333333H166.4L227.6266666666667 151.68L277.3333333333333 85.3333333333334V-21.3333333333333H315.7333333333334V115.4133333333334L262.6133333333334 212.2666666666667L278.1866666666667 273.4933333333334M298.6666666666667 366.9333333333334C320 366.9333333333334 337.0666666666667 384 337.0666666666667 405.3333333333334S320 443.7333333333334 298.6666666666667 443.7333333333334S260.2666666666667 426.6666666666667 260.2666666666667 405.3333333333333S277.3333333333333 366.9333333333334 298.6666666666667 366.9333333333334z" /> + <glyph glyph-name="wallet" + unicode="&#xF584;" + horiz-adv-x="512" d=" M448 64V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V320H256C232.32 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334V106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64M256 106.6666666666667H469.3333333333333V277.3333333333334H256M341.3333333333333 160C323.6266666666667 160 309.3333333333333 174.2933333333334 309.3333333333333 192S323.6266666666667 224 341.3333333333333 224S373.3333333333333 209.7066666666667 373.3333333333333 192S359.04 160 341.3333333333333 160z" /> + <glyph glyph-name="wallet-giftcard" + unicode="&#xF585;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V277.3333333333334H193.7066666666667L149.3333333333333 216.96L183.8933333333333 192L234.6666666666667 261.12L256 290.1333333333334L277.3333333333333 261.12L328.1066666666667 192L362.6666666666667 216.96L318.2933333333333 277.3333333333334H426.6666666666667M426.6666666666667 42.6666666666667H85.3333333333333V85.3333333333334H426.6666666666667M192 362.6666666666667C203.7333333333334 362.6666666666667 213.3333333333333 353.0666666666667 213.3333333333333 341.3333333333334S203.7333333333334 320 192 320S170.6666666666667 329.6 170.6666666666667 341.3333333333334S180.2666666666667 362.6666666666667 192 362.6666666666667M320 362.6666666666667C331.7333333333334 362.6666666666667 341.3333333333333 353.0666666666667 341.3333333333333 341.3333333333334S331.7333333333334 320 320 320S298.6666666666667 329.6 298.6666666666667 341.3333333333334S308.2666666666667 362.6666666666667 320 362.6666666666667M426.6666666666667 320H380.16C382.5066666666667 326.6133333333334 384 333.8666666666667 384 341.3333333333334C384 376.7466666666667 355.4133333333333 405.3333333333333 320 405.3333333333333C297.6 405.3333333333333 278.1866666666666 393.8133333333334 266.6666666666667 376.5333333333333L256 362.6666666666667L245.3333333333333 376.7466666666667C233.8133333333334 393.8133333333334 214.4 405.3333333333333 192 405.3333333333333C156.5866666666667 405.3333333333333 128 376.7466666666667 128 341.3333333333334C128 333.8666666666667 129.4933333333334 326.6133333333334 131.84 320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="wallet-membership" + unicode="&#xF586;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667H85.3333333333333V362.6666666666667H426.6666666666667M426.6666666666667 128H85.3333333333333V170.6666666666667H426.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V128C42.6666666666667 104.3200000000001 61.6533333333333 85.3333333333334 85.3333333333333 85.3333333333334H170.6666666666667V-21.3333333333333L256 21.3333333333334L341.3333333333333 -21.3333333333333V85.3333333333334H426.6666666666667C450.3466666666667 85.3333333333334 469.3333333333333 104.3200000000001 469.3333333333333 128V362.6666666666667C469.3333333333333 386.3466666666667 450.3466666666667 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="wallet-travel" + unicode="&#xF587;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V277.3333333333334H149.3333333333333V234.6666666666667H192V277.3333333333334H320V234.6666666666667H362.6666666666667V277.3333333333334H426.6666666666667M426.6666666666667 42.6666666666667H85.3333333333333V85.3333333333334H426.6666666666667M192 362.6666666666667H320V320H192M426.6666666666667 320H362.6666666666667V362.6666666666667C362.6666666666667 386.3466666666667 343.68 405.3333333333333 320 405.3333333333333H192C168.32 405.3333333333333 149.3333333333333 386.3466666666667 149.3333333333333 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="wan" + unicode="&#xF588;" + horiz-adv-x="512" d=" M256 405.3333333333333C161.7066666666667 405.3333333333333 85.3333333333333 328.9600000000001 85.3333333333333 234.6666666666667C85.3333333333333 148.6933333333333 149.3333333333333 76.3733333333333 234.6666666666667 65.4933333333333V42.6666666666667H213.3333333333333C201.6 42.6666666666667 192 33.0666666666667 192 21.3333333333334H42.6666666666667V-21.3333333333333H192C192 -33.0666666666667 201.6 -42.6666666666666 213.3333333333333 -42.6666666666666H298.6666666666667C310.4 -42.6666666666666 320 -33.0666666666667 320 -21.3333333333333H469.3333333333333V21.3333333333334H320C320 33.0666666666667 310.4 42.6666666666667 298.6666666666667 42.6666666666667H277.3333333333333V65.4933333333333C362.6666666666667 76.16 426.6666666666667 148.6933333333334 426.6666666666667 234.6666666666667C426.6666666666667 328.9600000000001 350.2933333333334 405.3333333333333 256 405.3333333333333M256 362.6666666666667S271.7866666666667 335.36 282.88 298.6666666666667H229.12C240.2133333333333 335.36 256 362.6666666666667 256 362.6666666666667M208.4266666666667 353.4933333333334C202.6666666666667 342.8266666666667 193.92 323.4133333333334 186.4533333333333 298.6666666666667H145.28C160 323.4133333333334 181.3333333333333 342.8266666666667 208.4266666666667 353.4933333333334M303.5733333333333 353.2800000000001C330.6666666666667 342.6133333333334 352 323.4133333333334 366.7200000000001 298.6666666666667H325.5466666666667C318.0800000000001 323.4133333333334 309.3333333333334 342.8266666666667 303.5733333333334 353.2800000000001M129.92 256H177.4933333333334C176.64 248.96 176 241.92 176 234.6666666666667C176 227.4133333333334 176.64 220.3733333333333 177.4933333333334 213.3333333333334H129.92C128.64 220.3733333333333 128 227.4133333333334 128 234.6666666666667C128 241.92 128.64 248.96 129.92 256M220.16 256H291.84C292.6933333333333 248.96 293.3333333333333 241.92 293.3333333333333 234.6666666666667C293.3333333333333 227.4133333333334 292.6933333333334 220.3733333333333 291.84 213.3333333333334H220.16C219.3066666666667 220.3733333333333 218.6666666666667 227.4133333333334 218.6666666666667 234.6666666666667C218.6666666666667 241.92 219.3066666666667 248.96 220.16 256M334.5066666666667 256H382.08C383.36 248.96 384 241.92 384 234.6666666666667C384 227.4133333333334 383.36 220.3733333333333 382.08 213.3333333333334H334.5066666666667C335.36 220.3733333333333 336 227.4133333333334 336 234.6666666666667C336 241.92 335.36 248.96 334.5066666666667 256M145.28 170.6666666666667H186.4533333333333C193.92 145.92 202.6666666666667 126.5066666666667 208.4266666666667 116.0533333333334C181.3333333333333 126.72 160 145.92 145.28 170.6666666666667M229.12 170.6666666666667H282.88C271.7866666666667 133.9733333333334 256 106.6666666666667 256 106.6666666666667S240.2133333333333 133.9733333333334 229.12 170.6666666666667M325.5466666666666 170.6666666666667H366.7200000000001C352 145.92 330.6666666666667 126.5066666666667 303.5733333333333 115.84C309.3333333333333 126.5066666666667 318.08 145.92 325.5466666666666 170.6666666666667z" /> + <glyph glyph-name="watch" + unicode="&#xF589;" + horiz-adv-x="512" d=" M128 192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64S128 121.3866666666667 128 192M426.6666666666667 192C426.6666666666667 246.4000000000001 401.28 294.6133333333334 361.6 325.76L341.3333333333333 448H170.6666666666667L150.4 325.76C110.72 294.6133333333334 85.3333333333333 246.4000000000001 85.3333333333333 192C85.3333333333333 137.8133333333334 110.72 89.3866666666667 150.4 58.24L170.6666666666667 -64H341.3333333333333L361.6 58.24C401.28 89.3866666666667 426.6666666666667 137.8133333333334 426.6666666666667 192z" /> + <glyph glyph-name="watch-export" + unicode="&#xF58A;" + horiz-adv-x="512" d=" M298.6666666666667 213.3333333333334H405.3333333333333L352 266.6666666666667L382.2933333333334 296.9600000000001L487.2533333333333 192L382.2933333333334 87.04L352 117.3333333333333L405.3333333333333 170.6666666666667H298.6666666666667V213.3333333333334M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320C285.8666666666667 320 313.3866666666667 309.3333333333334 335.1466666666667 292.48L365.4400000000001 322.7733333333333L361.6 325.76L341.3333333333333 448H170.6666666666667L150.4 325.76C110.72 294.6133333333334 85.3333333333333 246.1866666666667 85.3333333333333 192C85.3333333333333 137.6 110.72 89.3866666666667 150.4 58.24L170.6666666666667 -64H341.3333333333333L361.6 58.24L365.44 61.2266666666667L335.1466666666667 91.52C313.3866666666667 74.6666666666667 285.8666666666667 64 256 64z" /> + <glyph glyph-name="watch-import" + unicode="&#xF58B;" + horiz-adv-x="512" d=" M42.6666666666667 213.3333333333334H149.3333333333333L96 266.6666666666667L126.2933333333333 296.9600000000001L231.2533333333334 192L126.2933333333333 87.04L96 117.3333333333334L149.3333333333333 170.6666666666667H42.6666666666667V213.3333333333334M256 64C326.6133333333334 64 384 121.3866666666667 384 192S326.6133333333334 320 256 320C226.1333333333334 320 198.6133333333334 309.3333333333334 176.8533333333333 292.48L146.56 322.7733333333333L150.4 325.76L170.6666666666667 448H341.3333333333333L361.6 325.76C401.28 294.6133333333334 426.6666666666667 246.4000000000001 426.6666666666667 192C426.6666666666667 137.8133333333334 401.28 89.3866666666667 361.6 58.24L341.3333333333333 -64H170.6666666666667L150.4 58.24L146.56 61.2266666666667L176.8533333333333 91.52C198.6133333333334 74.6666666666667 226.1333333333334 64 256 64z" /> + <glyph glyph-name="water" + unicode="&#xF58C;" + horiz-adv-x="512" d=" M256 21.3333333333334C185.3866666666667 21.3333333333334 128 78.72 128 149.3333333333334C128 234.6666666666667 256 378.6666666666667 256 378.6666666666667S384 234.6666666666667 384 149.3333333333334C384 78.72 326.6133333333334 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="water-off" + unicode="&#xF58D;" + horiz-adv-x="512" d=" M365.2266666666667 82.7733333333333L266.6666666666667 181.3333333333334L112.4266666666667 335.5733333333334L85.3333333333333 308.2666666666667L156.16 237.4400000000001C139.7333333333333 206.5066666666667 128 175.1466666666667 128 149.3333333333334C128 78.72 185.3866666666667 21.3333333333334 256 21.3333333333334C288 21.3333333333334 317.8666666666667 33.4933333333333 340.48 53.3333333333334L396.5866666666667 -2.7733333333333L423.68 24.3200000000001L365.2266666666666 82.7733333333334M384 149.3333333333334C384 234.6666666666667 256 379.7333333333334 256 379.7333333333334S227.6266666666667 347.5200000000001 197.76 304.6400000000001L381.0133333333333 121.3866666666667C382.9333333333333 130.3466666666667 384 139.7333333333334 384 149.3333333333334z" /> + <glyph glyph-name="water-percent" + unicode="&#xF58E;" + horiz-adv-x="512" d=" M256 378.6666666666667S128 234.6666666666667 128 149.3333333333334C128 78.5066666666667 185.3866666666667 21.3333333333334 256 21.3333333333334S384 78.72 384 149.3333333333334C384 234.6666666666667 256 378.6666666666667 256 378.6666666666667M308.6933333333334 235.3066666666667L331.3066666666667 212.6933333333334L203.3066666666667 84.6933333333333L180.6933333333333 107.3066666666667M208 234.6666666666667C222.72 234.6666666666667 234.6666666666667 222.72 234.6666666666667 208S222.72 181.3333333333334 208 181.3333333333334S181.3333333333333 193.28 181.3333333333333 208S193.28 234.6666666666667 208 234.6666666666667M304 138.6666666666667C318.72 138.6666666666667 330.6666666666667 126.72 330.6666666666667 112S318.72 85.3333333333334 304 85.3333333333334S277.3333333333333 97.28 277.3333333333333 112S289.28 138.6666666666667 304 138.6666666666667z" /> + <glyph glyph-name="water-pump" + unicode="&#xF58F;" + horiz-adv-x="512" d=" M405.3333333333333 138.6666666666667S448 92.3733333333333 448 64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334S362.6666666666667 40.5333333333333 362.6666666666667 64C362.6666666666667 92.3733333333333 405.3333333333333 138.6666666666667 405.3333333333333 138.6666666666667M106.6666666666667 64V256C83.2 256 64 275.2000000000001 64 298.6666666666667S83.2 341.3333333333334 106.6666666666667 341.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333H192C215.4666666666667 405.3333333333333 234.6666666666667 386.1333333333334 234.6666666666667 362.6666666666667V341.3333333333334H405.3333333333333C428.8 341.3333333333334 448 322.1333333333334 448 298.6666666666667V213.3333333333334C459.7333333333333 213.3333333333334 469.3333333333333 203.7333333333334 469.3333333333333 192S459.7333333333333 170.6666666666667 448 170.6666666666667H362.6666666666667C350.9333333333333 170.6666666666667 341.3333333333333 180.2666666666667 341.3333333333333 192S350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334V256H234.6666666666667V64H256C279.4666666666667 64 298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334V-21.3333333333333H42.6666666666667V21.3333333333334C42.6666666666667 44.8000000000001 61.8666666666667 64 85.3333333333333 64H106.6666666666667z" /> + <glyph glyph-name="watermark" + unicode="&#xF612;" + horiz-adv-x="512" d=" M448 384H64C40.5333333333333 384 21.3333333333333 364.8 21.3333333333333 341.3333333333334V42.6666666666667C21.3333333333333 19.2 40.5333333333333 0 64 0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 364.8 471.4666666666667 384 448 384M448 42.6666666666667H256V170.6666666666667H448V42.6666666666667z" /> + <glyph glyph-name="weather-cloudy" + unicode="&#xF590;" + horiz-adv-x="512" d=" M128 42.6666666666667C69.12 42.6666666666667 21.3333333333333 90.4533333333334 21.3333333333333 149.3333333333334S69.12 256 128 256C149.3333333333333 306.1333333333334 198.4 341.3333333333334 256 341.3333333333334C329.1733333333333 341.3333333333334 389.12 284.5866666666667 394.6666666666667 212.6933333333333L405.3333333333333 213.3333333333334C452.48 213.3333333333334 490.6666666666666 175.1466666666667 490.6666666666666 128S452.48 42.6666666666667 405.3333333333333 42.6666666666667H128M405.3333333333333 170.6666666666667H362.6666666666667V192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667C202.6666666666667 298.6666666666667 158.9333333333333 259.8400000000001 150.6133333333333 209.28C143.5733333333333 211.84 135.8933333333333 213.3333333333334 128 213.3333333333334C92.5866666666667 213.3333333333334 64 184.7466666666667 64 149.3333333333334S92.5866666666667 85.3333333333334 128 85.3333333333334H405.3333333333333C428.8 85.3333333333334 448 104.5333333333333 448 128S428.8 170.6666666666667 405.3333333333333 170.6666666666667z" /> + <glyph glyph-name="weather-fog" + unicode="&#xF591;" + horiz-adv-x="512" d=" M64 128H277.3333333333333C289.0666666666667 128 298.6666666666667 118.4 298.6666666666667 106.6666666666667S289.0666666666667 85.3333333333334 277.3333333333333 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667S52.2666666666667 128 64 128M341.3333333333333 128H448C459.7333333333333 128 469.3333333333333 118.4 469.3333333333333 106.6666666666667S459.7333333333333 85.3333333333334 448 85.3333333333334H341.3333333333333C329.6 85.3333333333334 320 94.9333333333333 320 106.6666666666667S329.6 128 341.3333333333333 128M21.3333333333333 192C21.3333333333333 250.88 69.12 298.6666666666667 128 298.6666666666667C149.3333333333333 348.8 198.4 384 256 384C329.1733333333333 384 389.12 327.2533333333334 394.6666666666667 255.36L405.3333333333333 256C452.0533333333333 256 490.0266666666666 218.4533333333334 490.6666666666666 170.6666666666667H448C448 194.1333333333333 428.8 213.3333333333334 405.3333333333333 213.3333333333334H362.6666666666667V234.6666666666667C362.6666666666667 293.5466666666667 314.88 341.3333333333334 256 341.3333333333334C202.6666666666667 341.3333333333334 158.9333333333333 302.5066666666667 150.6133333333333 251.9466666666667C143.5733333333333 254.5066666666667 135.8933333333333 256 128 256C92.5866666666667 256 64 227.4133333333334 64 192C64 184.5333333333334 65.28 177.28 67.6266666666667 170.6666666666667H23.4666666666667L21.3333333333333 192M64 42.6666666666667H106.6666666666667C118.4 42.6666666666667 128 33.0666666666667 128 21.3333333333334S118.4 0 106.6666666666667 0H64C52.2666666666667 0 42.6666666666667 9.6 42.6666666666667 21.3333333333334S52.2666666666667 42.6666666666667 64 42.6666666666667M170.6666666666667 42.6666666666667H448C459.7333333333333 42.6666666666667 469.3333333333333 33.0666666666667 469.3333333333333 21.3333333333334S459.7333333333333 0 448 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334S158.9333333333333 42.6666666666667 170.6666666666667 42.6666666666667z" /> + <glyph glyph-name="weather-hail" + unicode="&#xF592;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M213.3333333333333 64C236.8 64 256 44.8000000000001 256 21.3333333333334S236.8 -21.3333333333333 213.3333333333333 -21.3333333333333S170.6666666666667 -2.1333333333333 170.6666666666667 21.3333333333334S189.8666666666667 64 213.3333333333333 64M309.3333333333333 106.6666666666667C327.04 106.6666666666667 341.3333333333333 92.3733333333333 341.3333333333333 74.6666666666667S327.04 42.6666666666667 309.3333333333333 42.6666666666667S277.3333333333333 56.96 277.3333333333333 74.6666666666667S291.6266666666667 106.6666666666667 309.3333333333333 106.6666666666667M224 192C241.7066666666667 192 256 177.7066666666667 256 160S241.7066666666667 128 224 128S192 142.2933333333334 192 160S206.2933333333333 192 224 192z" /> + <glyph glyph-name="weather-lightning" + unicode="&#xF593;" + horiz-adv-x="512" d=" M128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334H149.3333333333333C161.0666666666667 149.3333333333334 170.6666666666667 139.7333333333334 170.6666666666667 128S161.0666666666667 106.6666666666667 149.3333333333333 106.6666666666667H128M256 213.3333333333334H320L277.3333333333333 128H320L240 -21.3333333333333L256 85.3333333333334H202.6666666666667L256 213.3333333333334z" /> + <glyph glyph-name="weather-night" + unicode="&#xF594;" + horiz-adv-x="512" d=" M378.6666666666667 360.7466666666667L324.6933333333334 319.36L344.1066666666667 254.08L288 292.6933333333334L231.8933333333334 254.08L251.3066666666667 319.36L197.3333333333334 360.7466666666667L265.3866666666667 362.6666666666667L288 426.6666666666667L310.6133333333334 362.6666666666667L378.6666666666667 360.7466666666667M453.3333333333333 213.3333333333334L418.3466666666667 186.6666666666667L430.9333333333333 144.4266666666667L394.6666666666667 169.3866666666667L358.4 144.4266666666667L370.9866666666667 186.6666666666667L336 213.3333333333334L379.9466666666666 214.4L394.6666666666667 256L409.3866666666667 214.4L453.3333333333333 213.3333333333334M404.6933333333333 107.7333333333334C422.3999999999999 109.4400000000001 441.3866666666666 84.2666666666667 430.08 68.2666666666667C423.2533333333334 58.6666666666667 416 49.7066666666667 407.04 41.1733333333333C323.6266666666667 -42.6666666666666 188.5866666666667 -42.6666666666666 105.3866666666667 41.1733333333333C21.9733333333333 124.3733333333333 21.9733333333333 259.6266666666667 105.3866666666667 342.8266666666667C113.92 351.36 122.88 359.04 132.48 365.8666666666667C148.48 377.1733333333334 173.6533333333333 358.1866666666667 171.9466666666667 340.48C166.1866666666667 279.4666666666667 186.6666666666667 216.1066666666667 233.6 169.3866666666667C280.32 122.4533333333334 343.4666666666667 101.9733333333334 404.6933333333333 107.7333333333334M369.7066666666666 64.64C309.3333333333333 68.0533333333334 249.6 93.0133333333333 203.3066666666666 138.6666666666668C157.0133333333333 185.3866666666667 132.2666666666666 245.3333333333334 128.8533333333333 305.4933333333334C68.9066666666666 238.5066666666667 71.2533333333333 135.6800000000001 135.4666666666666 71.2533333333335C199.8933333333333 7.0400000000001 302.7199999999999 4.6933333333334 369.7066666666666 64.6400000000001z" /> + <glyph glyph-name="weather-partlycloudy" + unicode="&#xF595;" + horiz-adv-x="512" d=" M271.7866666666667 331.3066666666667C322.1333333333334 309.3333333333334 348.8 255.36 339.6266666666667 203.52C366.7200000000001 180.0533333333334 384 145.28 384 106.6666666666667V103.04C390.6133333333333 105.3866666666667 397.8666666666666 106.6666666666667 405.3333333333333 106.6666666666667C440.7466666666667 106.6666666666667 469.3333333333333 78.08 469.3333333333333 42.6666666666667S440.7466666666667 -21.3333333333333 405.3333333333333 -21.3333333333333H128C80.8533333333333 -21.3333333333333 42.6666666666667 16.8533333333334 42.6666666666667 64S80.8533333333333 149.3333333333334 128 149.3333333333334H133.76C106.6666666666667 182.4 98.1333333333333 229.5466666666667 117.3333333333333 271.7866666666667C143.36 330.6666666666667 212.6933333333333 357.5466666666667 271.7866666666667 331.3066666666667M254.5066666666667 292.2666666666667C216.7466666666667 309.3333333333334 172.5866666666667 292.0533333333334 155.9466666666667 254.5066666666667C146.1333333333333 232.7466666666667 147.84 208.64 158.08 189.2266666666667C181.3333333333333 216.96 216.7466666666667 234.6666666666667 256 234.6666666666667C270.9333333333333 234.6666666666667 285.44 232.1066666666667 298.6666666666667 227.4133333333334C297.3866666666667 254.72 281.1733333333333 280.3200000000001 254.5066666666667 292.2666666666667M289.0666666666667 370.3466666666667C277.3333333333333 375.4666666666667 265.6 379.0933333333334 253.44 381.44L306.56 409.1733333333334L325.76 347.52C314.88 356.48 302.7200000000001 364.1600000000001 289.0666666666667 370.3466666666667M129.92 353.2800000000001C119.4666666666667 345.8133333333334 110.2933333333334 337.2800000000001 102.4 327.8933333333334L104.7466666666667 387.8400000000001L167.8933333333334 373.3333333333334C154.6666666666667 368.8533333333334 141.8666666666667 362.0266666666667 129.92 353.2800000000001M384 240.8533333333333C382.08 253.44 379.3066666666667 265.6 375.2533333333334 277.3333333333334L426.0266666666667 245.3333333333334L382.2933333333333 197.76C384.64 211.6266666666667 385.0666666666666 226.1333333333334 383.9999999999999 240.8533333333333M64.8533333333333 206.9333333333333C66.3466666666667 194.1333333333333 69.12 181.9733333333334 73.1733333333333 170.6666666666667L22.6133333333333 202.6666666666667L66.1333333333333 250.0266666666667C64 236.1600000000001 63.36 221.6533333333334 64.8533333333333 206.9333333333334M405.3333333333333 64H341.3333333333333V106.6666666666667C341.3333333333333 153.8133333333334 303.1466666666667 192 256 192S170.6666666666667 153.8133333333334 170.6666666666667 106.6666666666667H128C104.5333333333333 106.6666666666667 85.3333333333333 87.4666666666667 85.3333333333333 64S104.5333333333333 21.3333333333334 128 21.3333333333334H405.3333333333333C417.0666666666667 21.3333333333334 426.6666666666667 30.9333333333333 426.6666666666667 42.6666666666667S417.0666666666667 64 405.3333333333333 64z" /> + <glyph glyph-name="weather-pouring" + unicode="&#xF596;" + horiz-adv-x="512" d=" M192 192C203.3066666666667 189.0133333333333 210.1333333333333 177.28 207.1466666666667 165.9733333333334L179.4133333333333 62.9333333333333C176.4266666666667 51.4133333333334 164.6933333333333 44.8 153.3866666666667 47.7866666666666C141.8666666666667 50.7733333333333 135.2533333333333 62.5066666666667 138.6666666666667 73.8133333333333L165.9733333333333 176.8533333333333C168.96 188.3733333333333 180.6933333333333 194.9866666666666 192 192M277.3333333333333 192C288.64 189.0133333333333 295.4666666666667 177.28 292.48 165.9733333333333L248.32 1.0666666666666C245.3333333333333 -10.6666666666667 233.6 -17.0666666666667 222.08 -14.08C210.7733333333334 -10.6666666666667 203.9466666666667 0.64 206.9333333333333 12.16L251.3066666666667 176.8533333333333C254.2933333333333 188.3733333333332 266.0266666666667 194.9866666666666 277.3333333333333 192M362.6666666666667 192C373.9733333333334 189.0133333333333 380.8 177.28 377.8133333333334 165.9733333333333L350.08 62.9333333333333C347.0933333333333 51.4133333333333 335.36 44.7999999999999 324.0533333333333 47.7866666666666C312.5333333333333 50.7733333333333 305.92 62.5066666666666 309.3333333333333 73.8133333333332L336.64 176.8533333333333C339.6266666666667 188.3733333333332 351.36 194.9866666666665 362.6666666666667 191.9999999999999M362.6666666666667 234.6666666666665V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334C64 189.6533333333334 76.8 168.96 96 157.8666666666667V158.0800000000001C106.6666666666667 152.1066666666667 109.6533333333333 138.6666666666667 103.8933333333333 128.8533333333334C97.92 118.8266666666667 85.3333333333333 115.2 74.6666666666667 121.1733333333334V120.96C42.6666666666667 139.3066666666667 21.3333333333333 173.8666666666667 21.3333333333333 213.3333333333334C21.3333333333333 272.2133333333334 69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192C490.6666666666666 160 473.6 132.9066666666667 448 118.1866666666667C437.3333333333333 112.4266666666667 424.7466666666667 115.84 418.7733333333333 126.08C413.0133333333333 136.32 416 149.3333333333333 426.6666666666667 155.3066666666666V155.0933333333333C439.4666666666667 162.3466666666666 448 176.2133333333333 448 192C448 215.4666666666667 428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667z" /> + <glyph glyph-name="weather-rainy" + unicode="&#xF597;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M316.3733333333334 113.7066666666667C349.6533333333333 80.4266666666667 349.6533333333333 32 316.3733333333334 -1.7066666666666C299.7333333333334 -18.3466666666666 277.3333333333333 -21.3333333333333 256 -21.3333333333333S212.2666666666667 -18.3466666666666 195.6266666666667 -1.7066666666666C162.3466666666666 32 162.3466666666666 80.4266666666667 195.6266666666667 113.7066666666667L256 213.3333333333334L316.3733333333334 113.7066666666667M286.08 91.9466666666667L256 144L225.92 91.9466666666667C209.0666666666667 74.6666666666667 209.0666666666667 49.0666666666666 225.92 32C234.6666666666667 22.8266666666667 245.3333333333333 21.3333333333334 256 21.3333333333334C266.6666666666667 21.3333333333334 277.3333333333333 22.8266666666667 286.08 32C302.9333333333333 49.0666666666667 302.9333333333333 74.6666666666667 286.08 91.9466666666667z" /> + <glyph glyph-name="weather-snowy" + unicode="&#xF598;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M168.1066666666667 62.5066666666667L214.8266666666667 74.6666666666667L180.48 109.2266666666667C172.16 117.3333333333334 172.16 130.9866666666667 180.48 139.5200000000001C188.8 147.84 202.6666666666667 147.84 210.7733333333334 139.5200000000001L245.3333333333333 105.1733333333334L257.4933333333334 151.8933333333333C260.48 163.4133333333334 272.2133333333333 170.0266666666667 283.52 167.04C295.04 164.0533333333333 301.6533333333333 152.32 298.6666666666667 140.8L286.08 94.0799999999999L332.8 106.6666666666667C344.32 109.6533333333334 356.0533333333334 103.04 359.04 91.52C362.0266666666667 80.2133333333333 355.4133333333333 68.48 343.8933333333333 65.4933333333333L297.1733333333333 53.3333333333334L331.5199999999999 18.7733333333333C339.8399999999999 10.6666666666667 339.8399999999999 -3.2 331.5199999999999 -11.52C323.2 -19.84 309.3333333333333 -19.84 301.2266666666666 -11.52L266.6666666666666 22.8266666666667L254.5066666666666 -23.8933333333333C251.5199999999999 -35.4133333333333 239.7866666666666 -42.0266666666667 228.4799999999999 -39.04C216.9599999999999 -36.0533333333333 210.3466666666666 -24.32 213.3333333333333 -12.8L225.9199999999999 33.92L179.2 21.3333333333334C167.68 18.3466666666667 155.9466666666667 24.96 152.96 36.48C149.9733333333333 47.7866666666668 156.5866666666667 59.52 168.1066666666667 62.5066666666667z" /> + <glyph glyph-name="weather-sunny" + unicode="&#xF599;" + horiz-adv-x="512" d=" M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334S149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M71.68 85.3333333333334L109.2266666666667 165.76C112.2133333333333 149.3333333333334 117.9733333333333 132.6933333333333 126.9333333333333 117.3333333333334C135.8933333333333 101.5466666666667 147.4133333333333 88.3200000000001 160 77.44L71.68 85.3333333333334M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M440.32 85.3333333333334L351.9999999999999 77.6533333333334C364.5866666666666 88.5333333333334 375.8933333333333 101.9733333333334 384.8533333333333 117.3333333333334C393.8133333333333 132.9066666666667 399.5733333333333 149.3333333333334 402.5599999999999 166.1866666666667L440.32 85.3333333333334M256 -21.3333333333333L204.5866666666667 52.0533333333334C220.3733333333333 46.2933333333334 237.6533333333334 42.6666666666667 256 42.6666666666667C273.4933333333334 42.6666666666667 290.7733333333333 46.2933333333334 306.56 52.0533333333334L256 -21.3333333333333z" /> + <glyph glyph-name="weather-sunset" + unicode="&#xF59A;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M106.6666666666667 106.6666666666667H405.3333333333333C417.0666666666667 106.6666666666667 426.6666666666667 97.0666666666667 426.6666666666667 85.3333333333334S417.0666666666667 64 405.3333333333333 64H106.6666666666667C94.9333333333333 64 85.3333333333333 73.6 85.3333333333333 85.3333333333334S94.9333333333333 106.6666666666667 106.6666666666667 106.6666666666667M362.6666666666667 21.3333333333334C374.4 21.3333333333334 384 11.7333333333333 384 0S374.4 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C137.6 -21.3333333333333 128 -11.7333333333333 128 0S137.6 21.3333333333334 149.3333333333333 21.3333333333334H362.6666666666667M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667z" /> + <glyph glyph-name="weather-sunset-down" + unicode="&#xF59B;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M271.1466666666666 6.1866666666667L337.4933333333333 72.5333333333333C345.8133333333333 80.8533333333334 345.8133333333333 94.5066666666667 337.4933333333333 102.8266666666667C329.1733333333333 111.1466666666667 315.7333333333333 111.1466666666667 307.4133333333333 102.8266666666667L256 51.4133333333334L204.5866666666667 102.8266666666667C196.2666666666667 111.1466666666667 182.8266666666667 111.1466666666667 174.5066666666667 102.8266666666667C166.1866666666667 94.5066666666667 166.1866666666667 80.8533333333334 174.5066666666667 72.5333333333333L240.8533333333333 6.1866666666667C245.3333333333333 2.1333333333333 250.4533333333333 0 256 0C261.5466666666666 0 266.6666666666667 2.1333333333334 271.1466666666667 6.1866666666667z" /> + <glyph glyph-name="weather-sunset-up" + unicode="&#xF59C;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M271.1466666666666 100.2666666666667L337.4933333333333 33.92C345.8133333333333 25.6 345.8133333333333 12.16 337.4933333333333 3.84C329.1733333333333 -4.48 315.7333333333333 -4.48 307.4133333333333 3.84L256 55.2533333333333L204.5866666666667 3.84C196.2666666666667 -4.48 182.8266666666667 -4.48 174.5066666666667 3.84C166.1866666666667 12.16 166.1866666666667 25.6 174.5066666666667 33.92L240.8533333333333 100.2666666666667C245.3333333333333 104.5333333333333 250.4533333333333 106.6666666666667 256 106.6666666666667C261.5466666666666 106.6666666666667 266.6666666666667 104.5333333333333 271.1466666666667 100.2666666666667z" /> + <glyph glyph-name="weather-windy" + unicode="&#xF59D;" + horiz-adv-x="512" d=" M85.3333333333333 234.6666666666667C73.6 234.6666666666667 64 244.2666666666667 64 256S73.6 277.3333333333334 85.3333333333333 277.3333333333334H256C279.4666666666667 277.3333333333334 298.6666666666667 296.5333333333334 298.6666666666667 320S279.4666666666667 362.6666666666667 256 362.6666666666667C244.2666666666667 362.6666666666667 233.6 357.9733333333334 225.92 350.0800000000001C217.6 341.3333333333334 203.9466666666667 341.3333333333334 195.6266666666667 350.0800000000001C187.3066666666667 358.4 187.3066666666667 372.0533333333334 195.6266666666667 380.3733333333334C211.2 395.7333333333334 232.5333333333334 405.3333333333333 256 405.3333333333333C303.1466666666667 405.3333333333333 341.3333333333333 367.1466666666667 341.3333333333333 320S303.1466666666667 234.6666666666667 256 234.6666666666667H85.3333333333333M405.3333333333333 192C417.0666666666667 192 426.6666666666667 201.6 426.6666666666667 213.3333333333334S417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667C399.36 234.6666666666667 394.0266666666667 232.32 390.1866666666666 228.48C381.8666666666666 220.16 368.4266666666666 220.16 360.1066666666667 228.48C352 236.8000000000001 352 250.24 360.1066666666667 258.5600000000001C371.6266666666667 270.0800000000001 387.6266666666667 277.3333333333334 405.3333333333333 277.3333333333334C440.7466666666667 277.3333333333334 469.3333333333333 248.7466666666667 469.3333333333333 213.3333333333334S440.7466666666667 149.3333333333334 405.3333333333333 149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667S94.9333333333333 192 106.6666666666667 192H405.3333333333333M384 64H85.3333333333333C73.6 64 64 73.6 64 85.3333333333334S73.6 106.6666666666667 85.3333333333333 106.6666666666667H384C419.4133333333333 106.6666666666667 448 78.08 448 42.6666666666667S419.4133333333333 -21.3333333333333 384 -21.3333333333333C366.2933333333334 -21.3333333333333 350.2933333333334 -14.08 338.7733333333333 -2.56C330.6666666666667 5.76 330.6666666666667 19.2 338.7733333333333 27.52C347.0933333333333 35.84 360.5333333333333 35.84 368.8533333333333 27.52C372.6933333333333 23.68 378.0266666666667 21.3333333333334 384 21.3333333333334C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667S395.7333333333334 64 384 64z" /> + <glyph glyph-name="weather-windy-variant" + unicode="&#xF59E;" + horiz-adv-x="512" d=" M128 320L142.72 318.7200000000001C156.16 368.64 201.8133333333333 405.3333333333333 256 405.3333333333333C320.8533333333333 405.3333333333333 373.3333333333333 352.8533333333334 373.3333333333333 288L371.6266666666667 267.7333333333334C381.4400000000001 273.92 392.9600000000001 277.3333333333334 405.3333333333333 277.3333333333334C440.7466666666667 277.3333333333334 469.3333333333333 248.7466666666667 469.3333333333333 213.3333333333334S440.7466666666667 149.3333333333334 405.3333333333333 149.3333333333334H128C80.8533333333333 149.3333333333334 42.6666666666667 187.52 42.6666666666667 234.6666666666667S80.8533333333333 320 128 320M128 277.3333333333334C104.5333333333333 277.3333333333334 85.3333333333333 258.1333333333334 85.3333333333333 234.6666666666667S104.5333333333333 192 128 192H405.3333333333333C417.0666666666667 192 426.6666666666667 201.6 426.6666666666667 213.3333333333334S417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667H330.6666666666667V288C330.6666666666667 329.1733333333334 297.1733333333333 362.6666666666667 256 362.6666666666667S181.3333333333333 329.1733333333334 181.3333333333333 288V277.3333333333334H128M384 64H85.3333333333333C73.6 64 64 73.6 64 85.3333333333334S73.6 106.6666666666667 85.3333333333333 106.6666666666667H384C419.4133333333333 106.6666666666667 448 78.08 448 42.6666666666667S419.4133333333333 -21.3333333333333 384 -21.3333333333333C366.2933333333334 -21.3333333333333 350.2933333333334 -14.08 338.7733333333333 -2.56C330.6666666666667 5.76 330.6666666666667 19.2 338.7733333333333 27.52C347.0933333333333 35.84 360.5333333333333 35.84 368.8533333333333 27.52C372.6933333333333 23.68 378.0266666666667 21.3333333333334 384 21.3333333333334C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667S395.7333333333334 64 384 64z" /> + <glyph glyph-name="web" + unicode="&#xF59F;" + horiz-adv-x="512" d=" M349.0133333333333 149.3333333333334C350.7199999999999 163.4133333333334 352 177.4933333333334 352 192C352 206.5066666666667 350.7200000000001 220.5866666666667 349.0133333333333 234.6666666666667H421.12C424.5333333333333 221.0133333333333 426.6666666666667 206.72 426.6666666666667 192S424.5333333333333 162.9866666666667 421.12 149.3333333333334M311.2533333333333 30.72C324.0533333333333 54.4 333.8666666666666 80 340.6933333333333 106.6666666666667H403.6266666666666C383.1466666666666 71.4666666666667 350.5066666666667 44.16 311.2533333333333 30.72M305.92 149.3333333333334H206.08C203.9466666666667 163.4133333333334 202.6666666666667 177.4933333333334 202.6666666666667 192C202.6666666666667 206.5066666666667 203.9466666666667 220.8 206.08 234.6666666666667H305.92C307.84 220.8 309.3333333333333 206.5066666666667 309.3333333333333 192C309.3333333333333 177.4933333333334 307.84 163.4133333333334 305.92 149.3333333333334M256 22.1866666666667C238.2933333333333 47.7866666666666 224 76.16 215.2533333333333 106.6666666666667H296.7466666666667C288 76.16 273.7066666666667 47.7866666666668 256 22.1866666666667M170.6666666666667 277.3333333333334H108.3733333333333C128.64 312.7466666666667 161.4933333333334 340.0533333333334 200.5333333333333 353.2800000000001C187.7333333333334 329.6 178.1333333333333 304 170.6666666666667 277.3333333333334M108.3733333333333 106.6666666666667H170.6666666666667C178.1333333333333 80 187.7333333333334 54.4 200.5333333333333 30.72C161.4933333333334 44.16 128.64 71.4666666666667 108.3733333333333 106.6666666666667M90.88 149.3333333333334C87.4666666666667 162.9866666666667 85.3333333333333 177.28 85.3333333333333 192S87.4666666666667 221.0133333333333 90.88 234.6666666666667H162.9866666666667C161.28 220.5866666666667 160 206.5066666666667 160 192C160 177.4933333333334 161.28 163.4133333333334 162.9866666666667 149.3333333333334M256 362.0266666666667C273.7066666666667 336.4266666666667 288 307.8400000000001 296.7466666666667 277.3333333333334H215.2533333333333C224 307.8400000000001 238.2933333333333 336.4266666666667 256 362.0266666666667M403.6266666666667 277.3333333333334H340.6933333333334C333.8666666666667 304 324.0533333333334 329.6 311.2533333333334 353.2800000000001C350.5066666666667 339.8400000000001 383.1466666666668 312.7466666666667 403.6266666666667 277.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="webcam" + unicode="&#xF5A0;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.56 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256S338.56 106.6666666666667 256 106.6666666666667S106.6666666666667 173.44 106.6666666666667 256S173.44 405.3333333333333 256 405.3333333333333M256 362.6666666666667C197.12 362.6666666666667 149.3333333333333 314.88 149.3333333333333 256S197.12 149.3333333333334 256 149.3333333333334S362.6666666666667 197.12 362.6666666666667 256S314.88 362.6666666666667 256 362.6666666666667M256 320C291.4133333333333 320 320 291.4133333333334 320 256S291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320M128 -21.3333333333333C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334C85.3333333333333 29.44 87.4666666666667 36.9066666666667 91.52 43.3066666666667L130.3466666666667 110.72C164.0533333333334 81.7066666666667 208 64 256 64C304 64 347.9466666666666 81.7066666666667 381.6533333333333 110.72L420.48 43.3066666666667C424.5333333333334 36.9066666666667 426.6666666666667 29.4400000000001 426.6666666666667 21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="webhook" + unicode="&#xF62F;" + horiz-adv-x="512" d=" M223.1466666666667 42.6666666666667C192 -1.4933333333333 131.2 -12.5866666666666 87.2533333333333 18.1333333333334C43.52 48.8533333333334 33.28 110.08 64 154.6666666666668C82.56 181.3333333333334 111.1466666666667 195.6266666666667 140.3733333333333 196.9066666666667L141.44 166.4000000000001C122.0266666666667 164.9066666666668 103.2533333333333 154.8800000000001 91.0933333333333 137.3866666666668C69.76 106.6666666666667 76.3733333333333 65.2800000000001 105.6 44.5866666666668C135.04 24.1066666666667 176.2133333333333 32.0000000000001 197.5466666666666 62.5066666666668C204.16 72.1066666666667 208 82.5600000000001 209.4933333333333 93.2266666666668V114.7733333333334L328.5333333333333 115.6266666666668L330.0266666666667 117.9733333333334C341.3333333333333 137.6000000000001 365.8666666666666 144.4266666666667 385.0666666666666 133.3333333333334C404.2666666666666 122.2400000000001 410.88 97.4933333333335 399.5733333333333 77.8666666666667C388.2666666666666 58.4533333333334 363.5199999999999 51.6266666666667 344.32 62.72C335.5733333333333 67.6266666666667 329.3866666666666 75.5200000000001 326.6133333333333 84.48L239.7866666666666 84.0533333333334C237.44 69.76 231.8933333333333 55.8933333333334 223.1466666666666 42.6666666666667M378.4533333333333 194.9866666666667C432.4266666666666 188.3733333333333 470.8266666666667 139.9466666666667 464.2133333333333 86.8266666666667C457.6 33.4933333333333 408.5333333333333 -4.2666666666667 354.56 2.3466666666667C322.7733333333333 6.1866666666667 296.5333333333333 24.3200000000001 281.3866666666666 49.4933333333333L307.8399999999999 64.8533333333334C318.2933333333333 48.4266666666667 336 36.6933333333333 357.3333333333333 33.92C394.6666666666666 29.44 427.7333333333333 54.8266666666667 432.2133333333333 90.4533333333333C436.6933333333333 126.08 410.2399999999999 158.72 373.3333333333333 163.2C361.8133333333334 164.48 350.7200000000001 162.9866666666667 340.6933333333334 159.36L322.56 149.9733333333334L267.52 251.7333333333333H262.8266666666667C240.2133333333333 252.5866666666667 222.72 271.1466666666667 223.36 293.3333333333333C224 315.52 243.2 332.8 265.6 331.9466666666667C288 330.6666666666667 305.7066666666667 312.5333333333333 305.0666666666667 290.3466666666667C304.64 280.96 301.0133333333333 272.4266666666666 295.2533333333334 265.8133333333334L335.7866666666667 190.9333333333333C349.0133333333333 195.2 363.52 196.6933333333333 378.4533333333334 194.9866666666667M176 253.0133333333333C154.6666666666667 303.1466666666667 177.28 360.5333333333333 226.56 381.44C276.0533333333334 402.3466666666667 333.2266666666667 378.6666666666667 354.56 328.5333333333333C367.1466666666667 299.3066666666666 364.5866666666667 267.3066666666666 350.2933333333334 241.7066666666667L323.8400000000001 257.0666666666667C332.8 274.3466666666667 334.2933333333334 295.4666666666667 325.76 315.3066666666667C311.2533333333334 349.44 272.64 365.8666666666667 239.5733333333333 352C206.2933333333333 337.92 191.36 298.6666666666667 205.8666666666667 264.5333333333333C211.84 250.4533333333333 221.8666666666667 239.5733333333333 234.0266666666667 232.32L242.3466666666667 227.84L176.8533333333334 121.3866666666667C177.4933333333334 120.3199999999999 178.3466666666667 119.04 178.9866666666667 117.3333333333333C189.44 97.92 182.1866666666667 73.3866666666667 162.56 62.9333333333333C143.1466666666667 52.48 118.6133333333334 60.16 107.9466666666667 80.2133333333333C97.4933333333333 100.0533333333333 104.7466666666667 124.5866666666667 124.3733333333333 135.04C132.6933333333333 139.52 141.8666666666667 140.5866666666667 150.6133333333334 138.6666666666666L199.8933333333334 219.0933333333333C189.8666666666667 228.2666666666666 181.3333333333334 239.7866666666667 176 253.0133333333333z" /> + <glyph glyph-name="wechat" + unicode="&#xF611;" + horiz-adv-x="512" d=" M202.6666666666667 362.6666666666667C114.3466666666667 362.6666666666667 42.6666666666667 305.28 42.6666666666667 234.6666666666667C42.6666666666667 194.3466666666667 65.7066666666667 158.72 101.9733333333333 135.2533333333333L85.3333333333333 85.3333333333334L138.6666666666667 117.3333333333334C157.6533333333333 110.72 178.56 106.6666666666667 200.7466666666667 106.6666666666667C195.2 120.1066666666667 192 134.4 192 149.3333333333334C192 219.9466666666667 258.7733333333333 277.3333333333334 341.3333333333333 277.3333333333334C345.3866666666667 277.3333333333334 349.44 277.3333333333334 353.28 276.6933333333334C331.52 326.6133333333334 272.64 362.6666666666667 202.6666666666667 362.6666666666667M138.6666666666667 309.3333333333334C150.4 309.3333333333334 160 299.7333333333334 160 288S150.4 266.6666666666667 138.6666666666667 266.6666666666667S117.3333333333333 276.2666666666667 117.3333333333333 288S126.9333333333333 309.3333333333334 138.6666666666667 309.3333333333334M245.3333333333333 309.3333333333334C257.0666666666667 309.3333333333334 266.6666666666667 299.7333333333334 266.6666666666667 288S257.0666666666667 266.6666666666667 245.3333333333333 266.6666666666667S224 276.2666666666667 224 288S233.6 309.3333333333334 245.3333333333333 309.3333333333334M341.3333333333333 256C270.72 256 213.3333333333333 208.2133333333334 213.3333333333333 149.3333333333334S270.72 42.6666666666667 341.3333333333333 42.6666666666667C355.6266666666667 42.6666666666667 369.28 44.3733333333333 382.08 48L426.6666666666667 21.3333333333334L413.44 61.2266666666667C446.9333333333333 80.64 469.3333333333333 112.8533333333334 469.3333333333333 149.3333333333334C469.3333333333333 208.2133333333334 411.9466666666666 256 341.3333333333333 256M298.6666666666667 202.6666666666667C310.4 202.6666666666667 320 193.0666666666667 320 181.3333333333334S310.4 160 298.6666666666667 160S277.3333333333333 169.6 277.3333333333333 181.3333333333334S286.9333333333333 202.6666666666667 298.6666666666667 202.6666666666667M384 202.6666666666667C395.7333333333334 202.6666666666667 405.3333333333333 193.0666666666667 405.3333333333333 181.3333333333334S395.7333333333334 160 384 160S362.6666666666667 169.6 362.6666666666667 181.3333333333334S372.2666666666667 202.6666666666667 384 202.6666666666667z" /> + <glyph glyph-name="weight" + unicode="&#xF5A1;" + horiz-adv-x="512" d=" M256 384C303.1466666666667 384 341.3333333333333 345.8133333333334 341.3333333333333 298.6666666666667C341.3333333333333 283.0933333333334 337.28 268.5866666666667 329.8133333333334 256H384C404.2666666666667 256 421.3333333333333 241.7066666666667 425.6 222.72C468.48 51.84 469.3333333333333 47.36 469.3333333333333 42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667C42.6666666666667 47.36 43.52 51.84 86.4 222.72C90.6666666666667 241.7066666666667 107.7333333333333 256 128 256H182.1866666666667C174.72 268.5866666666667 170.6666666666667 283.0933333333334 170.6666666666667 298.6666666666667C170.6666666666667 345.8133333333334 208.8533333333333 384 256 384M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="weight-kilogram" + unicode="&#xF5A2;" + horiz-adv-x="512" d=" M256 384C303.1466666666667 384 341.3333333333333 345.8133333333334 341.3333333333333 298.6666666666667C341.3333333333333 283.0933333333334 337.28 268.5866666666667 329.8133333333334 256H384C404.2666666666667 256 421.3333333333333 241.7066666666667 425.6 222.72C468.48 51.84 469.3333333333333 47.36 469.3333333333333 42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667C42.6666666666667 47.36 43.52 51.84 86.4 222.72C90.6666666666667 241.7066666666667 107.7333333333333 256 128 256H182.1866666666667C174.72 268.5866666666667 170.6666666666667 283.0933333333334 170.6666666666667 298.6666666666667C170.6666666666667 345.8133333333334 208.8533333333333 384 256 384M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334M192.8533333333333 118.6133333333334L221.8666666666667 64H258.3466666666667L214.8266666666667 135.2533333333333L254.9333333333333 193.28H217.6L189.2266666666666 142.2933333333334H178.9866666666666V193.28H148.6933333333333V64H178.9866666666667V118.6133333333334H192.8533333333334M369.2800000000001 81.92V129.4933333333334H318.9333333333334V105.8133333333334H339.2000000000001V89.8133333333334L331.7333333333334 86.8266666666667L318.7200000000001 85.3333333333334C311.2533333333334 85.3333333333334 305.2800000000001 88.5333333333333 301.0133333333334 93.8666666666667C296.9600000000001 99.4133333333334 294.8266666666667 106.6666666666667 294.8266666666667 115.4133333333333V142.08C294.8266666666667 150.8266666666667 296.9600000000001 157.8666666666667 301.2266666666668 163.2C305.4933333333334 168.7466666666667 311.0400000000001 171.3066666666667 318.0800000000001 171.3066666666667S330.6666666666668 169.6 333.6533333333334 166.1866666666667C337.0666666666667 162.7733333333333 339.2000000000001 157.6533333333333 340.2666666666668 150.8266666666667H368.4266666666668L368.6400000000001 151.4666666666667C367.5733333333334 164.9066666666667 362.6666666666668 175.5733333333333 354.5600000000001 183.4666666666667C346.2400000000001 191.1466666666667 333.6533333333334 194.9866666666666 317.0133333333335 194.9866666666666C301.6533333333334 194.9866666666666 289.2800000000001 190.0799999999999 279.4666666666668 180.2666666666667C269.6533333333334 170.6666666666666 264.7466666666668 157.6533333333333 264.7466666666668 142.0799999999999V115.1999999999999C264.7466666666668 99.4133333333333 269.8666666666668 86.6133333333332 279.8933333333335 76.8C289.7066666666668 66.9866666666666 302.7200000000001 62.0799999999999 318.7200000000001 62.0799999999999C331.3066666666668 62.0799999999999 341.9733333333334 63.9999999999999 350.2933333333334 68.0533333333333C358.6133333333335 72.1066666666667 365.0133333333335 76.5866666666666 369.2800000000001 81.92z" /> + <glyph glyph-name="whatsapp" + unicode="&#xF5A3;" + horiz-adv-x="512" d=" M357.3333333333333 150.1866666666667C362.6666666666667 147.4133333333333 366.08 145.92 367.1466666666667 143.7866666666666C368.4266666666666 141.44 368 130.7733333333333 362.6666666666667 118.6133333333334C358.4 106.6666666666667 336.2133333333333 95.1466666666667 326.4 94.72C316.5866666666667 94.2933333333333 316.3733333333334 87.04 263.2533333333334 110.2933333333333C210.1333333333333 133.5466666666666 178.1333333333333 190.2933333333333 175.5733333333333 193.92C173.0133333333334 197.5466666666666 155.0933333333333 223.36 155.9466666666667 249.6C157.0133333333333 275.6266666666667 170.6666666666667 288 176.2133333333333 293.12C181.3333333333333 298.6666666666667 187.0933333333333 299.3066666666666 190.72 298.6666666666667H200.7466666666667C203.9466666666667 298.6666666666667 208.4266666666667 299.9466666666666 212.48 289.0666666666666L227.2 249.1733333333333C228.48 246.3999999999999 229.3333333333333 243.2 227.4133333333334 239.7866666666666L221.6533333333333 231.04L213.3333333333333 222.0799999999999C210.7733333333334 219.52 207.7866666666667 216.7466666666666 210.7733333333334 211.4133333333333C213.3333333333333 205.8666666666666 224 188.16 238.9333333333334 173.44C258.3466666666667 154.6666666666666 275.4133333333333 148.48 280.5333333333333 145.7066666666666C285.6533333333333 142.7199999999999 288.8533333333334 143.1466666666667 292.0533333333334 146.56L309.3333333333334 166.6133333333332C313.3866666666667 171.9466666666666 316.8 170.6666666666666 321.7066666666667 168.9599999999999L357.3333333333333 150.1866666666666M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C213.9733333333333 -21.3333333333333 174.9333333333333 -9.1733333333333 141.8666666666667 11.7333333333333L42.6666666666667 -21.3333333333333L75.7333333333333 77.8666666666667C54.8266666666667 110.9333333333333 42.6666666666667 149.9733333333334 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 155.3066666666667 96.8533333333333 121.3866666666667 116.48 93.6533333333334L96 32L157.6533333333333 52.48C185.3866666666667 32.8533333333334 219.3066666666667 21.3333333333334 256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="wheelchair-accessibility" + unicode="&#xF5A4;" + horiz-adv-x="512" d=" M392.5333333333333 209.0666666666667L305.0666666666666 204.8000000000001L354.1333333333333 260.2666666666667C358.3999999999999 266.6666666666668 360.5333333333333 277.3333333333334 358.3999999999999 288C356.2666666666666 294.4000000000001 354.1333333333333 300.8 347.7333333333333 305.0666666666667L232.5333333333333 373.3333333333334C223.9999999999999 379.7333333333334 211.1999999999999 377.6 202.6666666666666 371.2000000000001L145.0666666666667 317.8666666666667C134.4 307.2000000000001 132.2666666666667 292.2666666666667 142.9333333333333 281.6C151.4666666666667 270.9333333333334 168.5333333333333 270.9333333333334 179.2 279.4666666666667L221.8666666666667 317.8666666666667L262.4 294.4000000000001L172.8 202.6666666666667C170.6666666666667 200.5333333333334 170.6666666666667 198.4 168.5333333333334 198.4C157.8666666666667 194.1333333333334 147.2 189.8666666666667 138.6666666666667 183.4666666666667L170.6666666666667 151.4666666666667C181.3333333333333 155.7333333333334 192 160 202.6666666666667 160C243.2 160 277.3333333333333 125.8666666666667 277.3333333333333 85.3333333333334C277.3333333333333 72.5333333333333 275.2 61.8666666666667 268.8 53.3333333333334L300.8 21.3333333333334C313.6 40.5333333333333 320 61.8666666666667 320 85.3333333333334C320 110.9333333333333 311.4666666666667 136.5333333333334 296.5333333333333 155.7333333333334L366.9333333333333 162.1333333333334L362.6666666666667 59.7333333333334C360.5333333333333 44.8000000000001 371.2 34.1333333333334 386.1333333333334 32H388.2666666666667C401.0666666666667 32 411.7333333333334 42.6666666666667 413.8666666666667 55.4666666666667L418.1333333333334 181.3333333333334C418.1333333333334 187.7333333333334 416 196.2666666666667 411.7333333333334 200.5333333333334C405.3333333333333 206.9333333333334 398.9333333333333 209.0666666666667 392.5333333333334 209.0666666666667M384 330.6666666666667C407.4666666666667 330.6666666666667 426.6666666666667 349.8666666666667 426.6666666666667 373.3333333333334S407.4666666666667 416 384 416S341.3333333333333 396.8 341.3333333333333 373.3333333333334S360.5333333333333 330.6666666666667 384 330.6666666666667M266.6666666666667 -12.8C247.4666666666667 -25.6 226.1333333333334 -32 202.6666666666667 -32C138.6666666666667 -32 85.3333333333333 21.3333333333334 85.3333333333333 85.3333333333334C85.3333333333333 108.8 91.7333333333333 130.1333333333333 104.5333333333333 149.3333333333334L136.5333333333333 117.3333333333334C132.2666666666667 106.6666666666667 128 96 128 85.3333333333334C128 44.8000000000001 162.1333333333333 10.6666666666667 202.6666666666667 10.6666666666667C215.4666666666667 10.6666666666667 226.1333333333334 12.8000000000001 234.6666666666667 19.2L266.6666666666667 -12.8z" /> + <glyph glyph-name="white-balance-auto" + unicode="&#xF5A5;" + horiz-adv-x="512" d=" M219.7333333333334 106.6666666666667L204.8 149.3333333333334H136.5333333333333L121.6 106.6666666666667H81.0666666666667L149.3333333333333 298.6666666666667H192L260.2666666666667 106.6666666666667M469.3333333333333 298.6666666666667L443.7333333333334 164.48L411.7333333333334 298.6666666666667H377.6L345.8133333333334 164.48L320 298.6666666666667H303.7866666666667C272.4266666666666 337.7066666666667 224 362.6666666666667 170.6666666666667 362.6666666666667C76.3733333333333 362.6666666666667 0 286.2933333333334 0 192S76.3733333333333 21.3333333333334 170.6666666666667 21.3333333333334C237.44 21.3333333333334 295.2533333333334 59.9466666666667 323.2 115.84L325.3333333333333 106.6666666666667H362.6666666666667L394.6666666666667 236.8L426.6666666666667 106.6666666666667H464L507.7333333333333 298.6666666666667M146.1333333333333 178.1333333333333H195.2L170.6666666666667 256L146.1333333333333 178.1333333333333z" /> + <glyph glyph-name="white-balance-incandescent" + unicode="&#xF5A6;" + horiz-adv-x="512" d=" M367.7866666666667 60.8000000000001L406.1866666666666 22.4L436.2666666666667 52.6933333333333L398.08 90.88M426.6666666666667 181.3333333333334H490.6666666666666V224H426.6666666666667M320 313.3866666666667V416H192V313.3866666666667C153.8133333333333 291.2000000000001 128 250.0266666666667 128 202.6666666666667C128 132.0533333333334 185.3866666666667 74.6666666666667 256 74.6666666666667S384 132.0533333333334 384 202.6666666666667C384 250.0266666666667 358.1866666666666 291.2000000000001 320 313.3866666666667M85.3333333333333 224H21.3333333333333V181.3333333333334H85.3333333333333M234.6666666666667 -30.9333333333333H277.3333333333333V32H234.6666666666667M75.7333333333333 52.6933333333333L105.8133333333333 22.4L144.2133333333333 60.8L113.92 90.88L75.7333333333333 52.6933333333333z" /> + <glyph glyph-name="white-balance-iridescent" + unicode="&#xF5A7;" + horiz-adv-x="512" d=" M105.8133333333333 22.4L144.2133333333333 60.8000000000001L113.92 90.8800000000001L75.7333333333333 52.6933333333334M75.7333333333333 352.8533333333334L113.92 314.4533333333334L144.2133333333333 344.7466666666668L105.8133333333333 382.9333333333334M436.2666666666667 52.6933333333334L398.08 90.8800000000001L367.7866666666667 60.8000000000001L406.1866666666667 22.4M277.3333333333333 -30.9333333333333V32H234.6666666666667V-30.9333333333333H277.3333333333333M406.1866666666666 382.9333333333334L367.7866666666667 344.7466666666667L398.08 314.4533333333333L436.2666666666666 352.8533333333334M234.6666666666667 373.3333333333334H277.3333333333333V436.2666666666667H234.6666666666667M106.6666666666667 138.6666666666667H405.3333333333333V266.6666666666667H106.6666666666667V138.6666666666667z" /> + <glyph glyph-name="white-balance-sunny" + unicode="&#xF5A8;" + horiz-adv-x="512" d=" M75.7333333333333 52.48L105.8133333333333 22.4L144.2133333333333 60.5866666666667L113.92 90.88M234.6666666666667 -30.9333333333333H277.3333333333333V32H234.6666666666667M256 330.6666666666667C185.3866666666667 330.6666666666667 128 273.2800000000001 128 202.6666666666667S185.3866666666667 74.6666666666667 256 74.6666666666667S384 132.0533333333334 384 202.6666666666667C384 273.4933333333334 326.6133333333334 330.6666666666667 256 330.6666666666667M426.6666666666667 181.3333333333334H490.6666666666666V224H426.6666666666667M367.7866666666667 60.5866666666667L406.1866666666667 22.4L436.2666666666667 52.48L398.0800000000001 90.8800000000001M436.2666666666667 352.8533333333334L406.1866666666667 382.9333333333334L367.7866666666667 344.7466666666667L398.0800000000001 314.4533333333334M277.3333333333333 436.2666666666667H234.6666666666667V373.3333333333334H277.3333333333333M85.3333333333333 224H21.3333333333333V181.3333333333334H85.3333333333333M144.2133333333333 344.7466666666667L105.8133333333333 382.9333333333334L75.7333333333333 352.8533333333334L113.92 314.4533333333334L144.2133333333333 344.7466666666667z" /> + <glyph glyph-name="wifi" + unicode="&#xF5A9;" + horiz-adv-x="512" d=" M256 0L332.8 102.4C311.4666666666667 118.4 284.8 128 256 128S200.5333333333333 118.4 179.2 102.4L256 0M256 384C169.6 384 89.8133333333333 355.4133333333334 25.6 307.2000000000001L64 256C117.3333333333333 296.1066666666667 183.8933333333334 320 256 320S394.6666666666667 296.1066666666667 448 256L486.4 307.2000000000001C422.1866666666666 355.4133333333334 342.4 384 256 384M256 256C198.4 256 145.28 237.0133333333333 102.4 204.8L140.8 153.6C172.8 177.7066666666667 212.6933333333333 192 256 192C299.3066666666666 192 339.2 177.7066666666667 371.2 153.6L409.6 204.8C366.7200000000001 237.0133333333333 313.6 256 256 256z" /> + <glyph glyph-name="wifi-off" + unicode="&#xF5AA;" + horiz-adv-x="512" d=" M48.64 384L21.3333333333333 356.9066666666667L52.6933333333333 325.5466666666667C43.52 320 34.3466666666667 313.8133333333334 25.6 307.2000000000001L64 256C75.3066666666667 264.5333333333334 87.04 272 99.4133333333333 278.8266666666667L146.9866666666667 231.2533333333334C131.2 224 116.0533333333334 215.2533333333333 102.4 204.8L140.8 153.6C157.44 165.9733333333334 176.2133333333333 175.5733333333333 196.2666666666667 181.9733333333334L250.6666666666667 128C224 126.5066666666667 199.2533333333333 117.3333333333334 179.2 102.4L256 0L308.48 69.76L378.4533333333333 0L405.3333333333333 27.3066666666667M256 384C210.1333333333333 384 166.4 375.8933333333333 125.8666666666667 361.1733333333334L176.8533333333334 309.9733333333334C202.6666666666667 316.5866666666667 228.6933333333334 320 256 320C328.1066666666667 320 394.6666666666667 296.32 448 256L486.4 307.2000000000001C422.1866666666666 355.4133333333334 342.6133333333333 384 256 384M256 256C247.8933333333333 256 240 256 232.1066666666667 254.9333333333334L300.16 186.6666666666667C326.1866666666666 180.6933333333334 350.5066666666667 169.1733333333334 371.2 153.6L409.6 204.8C366.9333333333333 237.0133333333333 313.6 256 256 256z" /> + <glyph glyph-name="wii" + unicode="&#xF5AB;" + horiz-adv-x="512" d=" M380.5866666666667 86.6133333333334H340.6933333333333V217.8133333333333H380.5866666666667V86.6133333333334M384 264.9600000000001C384 251.9466666666667 373.3333333333333 241.2800000000001 360.5333333333333 241.2800000000001C347.52 241.2800000000001 336.8533333333333 251.9466666666667 336.8533333333333 264.9600000000001C336.8533333333333 278.1866666666667 347.52 288.8533333333334 360.5333333333333 288.8533333333334C373.3333333333333 288.8533333333334 384 278.1866666666667 384 264.9600000000001M465.4933333333333 86.6133333333334H425.3866666666667V217.8133333333334H465.4933333333333V86.6133333333334M469.3333333333333 264.9600000000001C469.3333333333333 251.9466666666667 458.6666666666666 241.2800000000001 445.44 241.2800000000001C432.4266666666666 241.2800000000001 421.76 251.9466666666667 421.76 264.9600000000001C421.76 278.1866666666667 432.4266666666666 288.8533333333334 445.44 288.8533333333334C458.6666666666666 288.8533333333334 469.3333333333333 278.1866666666667 469.3333333333333 264.9600000000001M275.2 276.2666666666667H317.8666666666667L272.64 117.3333333333334S266.6666666666667 84.48 240.64 84.48C214.8266666666667 84.48 208.8533333333334 117.3333333333334 208.8533333333334 117.3333333333334L180.2666666666667 221.0133333333333L151.68 117.3333333333334S145.4933333333334 84.48 119.68 84.48S87.8933333333334 117.3333333333334 87.8933333333334 117.3333333333334L42.6666666666667 276.2666666666667H85.3333333333333L122.0266666666667 135.04L151.68 249.6C158.5066666666667 278.4 180.2666666666667 277.9733333333334 180.2666666666667 277.9733333333334S202.0266666666667 278.4 208.8533333333334 249.6L238.2933333333334 135.04L275.2000000000001 276.2666666666667z" /> + <glyph glyph-name="wikipedia" + unicode="&#xF5AC;" + horiz-adv-x="512" d=" M319.36 43.7333333333334L264.7466666666667 172.3733333333334C242.9866666666667 129.9200000000001 219.0933333333333 85.3333333333334 198.6133333333334 43.7333333333334C198.4 43.52 188.5866666666667 43.7333333333334 188.5866666666667 43.7333333333334C157.2266666666667 117.3333333333334 124.8 189.8666666666667 93.2266666666667 262.8266666666667C85.9733333333333 280.7466666666667 60.3733333333333 309.3333333333334 42.6666666666667 309.3333333333334V318.9333333333334H150.6133333333333V309.3333333333334C137.8133333333333 309.3333333333334 116.0533333333333 300.8 121.6 286.9333333333334C136.96 254.08 190.72 126.72 205.44 94.2933333333334C215.4666666666667 114.3466666666667 243.84 167.2533333333334 256 189.6533333333334C246.4 208.4266666666667 216.1066666666666 278.8266666666667 207.1466666666667 296.3200000000001C200.32 307.8400000000001 183.04 309.3333333333334 169.8133333333333 309.3333333333334C169.8133333333333 312.5333333333334 170.0266666666667 314.6666666666667 169.8133333333333 318.7200000000001L264.9600000000001 318.5066666666667V309.9733333333334C251.9466666666667 309.3333333333334 239.7866666666667 304.8533333333334 245.3333333333334 292.48C258.1333333333334 266.0266666666667 265.6 247.0400000000001 277.3333333333334 222.5066666666667C280.9600000000001 229.7600000000001 300.1600000000001 269.2266666666667 309.3333333333334 289.9200000000001C314.88 303.7866666666668 306.56 309.3333333333334 283.5200000000001 309.3333333333334C283.7333333333334 311.8933333333334 283.7333333333334 316.3733333333334 283.7333333333334 318.5066666666667C313.3866666666667 318.7200000000001 357.9733333333334 318.7200000000001 365.8666666666667 318.9333333333334V309.9733333333334C350.7200000000001 309.3333333333334 335.1466666666667 301.2266666666667 327.04 288.8533333333334L288 206.9333333333333C291.84 196.0533333333334 329.8133333333334 111.7866666666666 333.8666666666667 102.4L416 290.7733333333333C409.6 306.1333333333333 391.2533333333334 309.3333333333333 384 309.3333333333333V318.9333333333333L469.3333333333333 318.2933333333333V309.3333333333334C450.56 309.3333333333334 438.8266666666667 298.6666666666667 432 282.6666666666667C414.9333333333333 244.48 362.6666666666667 122.88 328.5333333333333 43.7333333333334H319.36z" /> + <glyph glyph-name="window-close" + unicode="&#xF5AD;" + horiz-adv-x="512" d=" M287.1466666666667 192L405.3333333333333 73.8133333333334V42.6666666666667H374.1866666666666L256 160.8533333333334L137.8133333333333 42.6666666666667H106.6666666666667V73.8133333333334L224.8533333333333 192L106.6666666666667 310.1866666666667V341.3333333333334H137.8133333333333L256 223.1466666666667L374.1866666666666 341.3333333333334H405.3333333333333V310.1866666666667L287.1466666666667 192z" /> + <glyph glyph-name="window-closed" + unicode="&#xF5AE;" + horiz-adv-x="512" d=" M128 213.3333333333334H213.3333333333333V256H298.6666666666667V213.3333333333334H384V362.6666666666667H128V213.3333333333334M384 170.6666666666667H128V21.3333333333334H384V170.6666666666667M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333z" /> + <glyph glyph-name="window-maximize" + unicode="&#xF5AF;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667V21.3333333333334H85.3333333333333V362.6666666666667M128 277.3333333333334V64H384V277.3333333333334H128z" /> + <glyph glyph-name="window-minimize" + unicode="&#xF5B0;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V234.6666666666667H426.6666666666667" /> + <glyph glyph-name="window-open" + unicode="&#xF5B1;" + horiz-adv-x="512" d=" M128 277.3333333333334H213.3333333333333V320H298.6666666666667V277.3333333333334H384V362.6666666666667H128V277.3333333333334M384 234.6666666666667H128V128H384V234.6666666666667M128 21.3333333333334H384V85.3333333333334H128V21.3333333333334M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333z" /> + <glyph glyph-name="window-restore" + unicode="&#xF5B2;" + horiz-adv-x="512" d=" M85.3333333333333 277.3333333333334H170.6666666666667V362.6666666666667H426.6666666666667V106.6666666666667H341.3333333333333V21.3333333333334H85.3333333333333V277.3333333333334M341.3333333333333 277.3333333333334V149.3333333333334H384V320H213.3333333333333V277.3333333333334H341.3333333333333M128 192V64H298.6666666666667V192H128z" /> + <glyph glyph-name="windows" + unicode="&#xF5B3;" + horiz-adv-x="512" d=" M64 192V304L192 332.1600000000001V193.92L64 192M426.6666666666667 384V197.3333333333334L213.3333333333333 194.1333333333333V336.8533333333334L426.6666666666667 384M64 170.6666666666667L192 168.7466666666667V23.4666666666667L64 48V170.6666666666667M426.6666666666667 165.3333333333334V-21.3333333333333L213.3333333333333 19.4133333333334V168.5333333333334L426.6666666666667 165.3333333333334z" /> + <glyph glyph-name="wordpress" + unicode="&#xF5B4;" + horiz-adv-x="512" d=" M260.2666666666667 117.3333333333334L205.8666666666666 -15.36C221.8666666666666 -19.1999999999999 238.72 -21.3333333333333 256 -21.3333333333333C273.92 -21.3333333333333 291.4133333333333 -19.1999999999999 308.0533333333333 -14.9333333333333M439.68 297.3866666666667C443.7333333333334 278.1866666666667 442.88 254.9333333333334 434.9866666666667 229.3333333333334C414.2933333333334 162.7733333333334 362.6666666666667 42.6666666666667 343.4666666666667 -2.7733333333333C417.7066666666667 30.2933333333334 469.3333333333333 104.1066666666667 469.3333333333333 189.8666666666667C469.3333333333333 229.12 458.6666666666666 266.0266666666667 439.68 297.3866666666667M91.9466666666667 263.68S81.4933333333333 277.3333333333334 70.6133333333333 277.3333333333334H59.3066666666667C48.64 253.2266666666667 42.6666666666667 221.44 42.6666666666667 192C42.6666666666667 104.7466666666667 96 29.6533333333334 173.2266666666667 -2.3466666666666M66.7733333333333 295.68C102.4 362.0266666666667 173.6533333333333 405.3333333333333 256 405.3333333333333C309.3333333333333 405.3333333333333 357.9733333333334 382.7200000000001 395.3066666666667 350.7200000000001C384.64 352.8533333333334 373.3333333333333 350.5066666666667 361.1733333333333 343.68C333.6533333333333 327.8933333333333 324.6933333333333 283.52 360.32 261.12C382.7200000000001 247.2533333333333 390.6133333333334 212.48 389.76 191.1466666666667C389.12 170.0266666666667 338.1333333333334 72.3200000000001 338.1333333333334 72.3200000000001L288 242.56S286.72 254.5066666666667 286.72 257.92C286.72 262.1866666666667 288 267.52 290.7733333333333 270.7200000000001C292.6933333333333 272.64 295.4666666666667 277.3333333333334 298.6666666666667 277.3333333333334H322.3466666666666V295.68H194.3466666666666V277.3333333333334H198.3999999999999C202.6666666666666 277.3333333333334 206.72 271.1466666666667 210.56 267.3066666666667C215.2533333333333 262.4 221.2266666666666 244.2666666666667 228.2666666666666 225.4933333333334L246.8266666666666 164.2666666666667L206.72 71.8933333333333L162.7733333333333 256.64S164.0533333333333 269.44 166.8266666666666 271.5733333333333C168.5333333333333 273.0666666666667 170.6666666666667 277.3333333333334 174.2933333333333 277.3333333333334H175.36V295.68H66.7733333333333z" /> + <glyph glyph-name="worker" + unicode="&#xF5B5;" + horiz-adv-x="512" d=" M256 128C161.7066666666667 128 85.3333333333333 89.8133333333334 85.3333333333333 42.6666666666667V0H426.6666666666667V42.6666666666667C426.6666666666667 89.8133333333334 350.2933333333334 128 256 128M170.6666666666667 256C170.6666666666667 208.8533333333333 208.8533333333333 170.6666666666667 256 170.6666666666667S341.3333333333333 208.8533333333333 341.3333333333333 256M245.3333333333333 405.3333333333333C238.9333333333333 405.3333333333333 234.6666666666667 400.8533333333334 234.6666666666667 394.6666666666667V330.6666666666667H213.3333333333333V384S165.3333333333333 365.6533333333333 165.3333333333333 304C165.3333333333333 304 149.3333333333333 301.0133333333333 149.3333333333333 277.3333333333334H362.6666666666667C361.6 301.0133333333333 346.6666666666667 304 346.6666666666667 304C346.6666666666667 365.6533333333333 298.6666666666667 384 298.6666666666667 384V330.6666666666667H277.3333333333333V394.6666666666667C277.3333333333333 400.8533333333334 273.28 405.3333333333333 266.6666666666667 405.3333333333333H245.3333333333333z" /> + <glyph glyph-name="wrap" + unicode="&#xF5B6;" + horiz-adv-x="512" d=" M448 341.3333333333334H64V298.6666666666667H448V341.3333333333334M64 42.6666666666667H213.3333333333333V85.3333333333334H64V42.6666666666667M64 170.6666666666667H384C405.3333333333333 170.6666666666667 426.6666666666667 161.4933333333334 426.6666666666667 128S405.3333333333333 85.3333333333334 384 85.3333333333334H341.3333333333333V128L256 64L341.3333333333333 0V42.6666666666667H384C446.9333333333333 42.6666666666667 469.3333333333333 69.76 469.3333333333333 128C469.3333333333333 186.0266666666667 448 213.3333333333334 384 213.3333333333334H64V170.6666666666667z" /> + <glyph glyph-name="wrench" + unicode="&#xF5B7;" + horiz-adv-x="512" d=" M484.2666666666667 42.6666666666667L290.1333333333334 236.8C309.3333333333333 285.8666666666667 298.6666666666667 343.4666666666667 258.1333333333334 384C215.4666666666667 426.6666666666667 151.4666666666667 435.2 100.2666666666667 411.7333333333334L192 320L128 256L34.1333333333333 347.7333333333334C8.5333333333333 296.5333333333334 19.2 232.5333333333334 61.8666666666667 189.8666666666667C102.4 149.3333333333334 160 138.6666666666667 209.0666666666667 157.8666666666667L403.2 -36.2666666666666C411.7333333333333 -44.8 424.5333333333333 -44.8 433.0666666666666 -36.2666666666666L482.1333333333333 12.8000000000001C492.8 21.3333333333334 492.8 36.2666666666668 484.2666666666667 42.6666666666667z" /> + <glyph glyph-name="wunderlist" + unicode="&#xF5B8;" + horiz-adv-x="512" d=" M362.6666666666667 74.6666666666667L256 128L149.3333333333333 74.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333V341.3333333333334H362.6666666666667V74.6666666666667M256 183.04L304 154.24L291.2 208.6400000000001L333.6533333333333 245.3333333333334L277.3333333333333 250.24L256 301.6533333333334L234.6666666666667 250.24L178.3466666666666 245.3333333333334L220.8 208.64L208 154.24L256 183.04M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="xaml" + unicode="&#xF673;" + horiz-adv-x="512" d=" M403.84 192L329.8133333333333 64H182.1866666666667L108.16 192L182.1866666666667 320H329.8133333333333L403.84 192M507.0933333333333 192L420.9066666666667 42.6666666666667L384 64L457.8133333333333 192L384 320L420.9066666666667 341.3333333333334L507.0933333333333 192M4.9066666666667 192L91.0933333333333 341.3333333333334L128 320L54.1866666666667 192L128 64L91.0933333333333 42.6666666666667L4.9066666666667 192z" /> + <glyph glyph-name="xbox" + unicode="&#xF5B9;" + horiz-adv-x="512" d=" M137.1733333333333 368.64C138.6666666666667 369.92 140.16 371.2 141.2266666666667 372.0533333333334C174.5066666666667 393.6 213.3333333333333 405.3333333333333 256 405.3333333333333C296.1066666666667 405.3333333333333 333.6533333333333 394.6666666666667 365.6533333333333 375.04C368 373.3333333333334 374.1866666666666 369.28 377.6 365.2266666666667C346.6666666666667 399.36 256 326.4 256 326.4C224 350.5066666666667 195.6266666666667 366.9333333333334 174.08 373.3333333333334C155.9466666666667 377.8133333333334 143.5733333333333 373.3333333333334 137.8133333333333 369.0666666666667M412.5866666666667 336.8533333333334C411.52 337.92 410.4533333333333 338.9866666666667 409.6 340.0533333333334C401.92 348.5866666666667 392.1066666666667 350.7200000000001 384 350.0800000000001C375.68 347.52 339.2 334.5066666666667 294.4 292.0533333333334C294.4 292.0533333333334 344.9600000000001 242.9866666666667 375.8933333333333 192.8533333333333C406.8266666666667 142.72 425.1733333333333 103.2533333333333 413.8666666666667 48.4266666666667C448 86.4 469.3333333333333 136.7466666666667 469.3333333333333 192C469.3333333333333 247.8933333333334 448 298.6666666666667 412.5866666666667 336.8533333333334M335.5733333333333 171.52C321.7066666666667 186.88 301.44 208.8533333333333 274.3466666666667 235.7333333333333C268.5866666666667 241.4933333333333 262.4 247.4666666666667 256 253.8666666666667C256 253.8666666666667 245.9733333333333 244.0533333333333 233.1733333333333 231.04C216.7466666666667 214.6133333333333 195.6266666666667 193.0666666666667 183.68 180.48C162.7733333333333 158.0799999999999 102.6133333333333 87.68 99.2 48.2133333333333C99.2 48.2133333333333 85.3333333333333 79.36 115.2 151.68C134.4 198.8266666666666 192 269.6533333333333 216.5333333333333 292.6933333333333C216.5333333333333 292.6933333333333 194.56 317.0133333333333 166.8266666666666 333.8666666666666L165.76 334.5066666666667C152.32 342.4 137.8133333333333 348.5866666666667 123.7333333333333 349.44C109.44 348.3733333333334 100.48 337.92 100.48 337.92C64.64 299.7333333333334 42.6666666666667 248.5333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333C318.5066666666667 -21.3333333333333 374.8266666666667 5.5466666666667 413.8666666666666 48.4266666666667C413.8666666666666 48.4266666666667 409.3866666666666 76.8000000000001 380.5866666666667 117.3333333333334C373.9733333333334 126.5066666666667 349.2266666666667 155.9466666666667 335.5733333333333 171.52z" /> + <glyph glyph-name="xbox-controller" + unicode="&#xF5BA;" + horiz-adv-x="512" d=" M186.6666666666667 112C144 112 128 64 85.3333333333333 42.6666666666667C42.6666666666667 42.6666666666667 10.6666666666667 106.6666666666667 96 288H101.3333333333333L110.72 305.7066666666667S170.6666666666667 341.3333333333334 199.04 315.0933333333334H312.96C341.3333333333333 341.3333333333334 401.28 305.7066666666667 401.28 305.7066666666667L410.6666666666667 288H416C501.3333333333333 106.6666666666667 469.3333333333333 42.6666666666667 426.6666666666667 42.6666666666667C384 64 368 112 325.3333333333333 112H186.6666666666667M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="xbox-controller-off" + unicode="&#xF5BB;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L266.6666666666667 112H186.6666666666667C144 112 128 64 85.3333333333333 42.6666666666667C42.6666666666667 42.6666666666667 10.6666666666667 105.8133333333334 94.2933333333333 283.9466666666667L42.6666666666667 335.5733333333334M199.04 315.0933333333334H312.96C341.3333333333333 341.3333333333334 401.28 305.7066666666667 401.28 305.7066666666667L410.6666666666667 288H416C490.6666666666666 128 475.3066666666667 59.7333333333334 441.3866666666667 45.4400000000001L162.56 324.2666666666667C176 325.76 189.2266666666667 324.0533333333334 199.04 315.0933333333334M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="xda" + unicode="&#xF5BC;" + horiz-adv-x="512" d=" M-1.0666666666667 89.8133333333334L68.0533333333333 171.3066666666667L-1.0666666666667 252.8000000000001L32 280.32L96 204.5866666666667L160 280.32L193.0666666666667 252.8L123.9466666666667 171.3066666666667L193.0666666666667 89.8133333333334L160 62.5066666666667L96 138.6666666666667L32 62.5066666666667L-1.0666666666666 89.8133333333334M512 85.3333333333334C512 73.6 502.4 64 490.6666666666666 64H426.6666666666667C403.2 64 384 83.2 384 106.6666666666667V149.3333333333334C384 172.8 403.2 192 426.6666666666667 192H469.3333333333333V234.6666666666667H384V277.3333333333334H490.6666666666666C502.4 277.3333333333334 512 267.7333333333334 512 256M469.3333333333333 149.3333333333334H426.6666666666667V106.6666666666667H469.3333333333333V149.3333333333334M341.3333333333333 85.3333333333334C341.3333333333333 73.6 331.7333333333334 64 320 64H256C232.5333333333334 64 213.3333333333333 83.2 213.3333333333333 106.6666666666667V234.6666666666667C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334H298.6666666666667V341.3333333333334H341.3333333333333V85.3333333333334M298.6666666666667 106.6666666666667V234.6666666666667H256V106.6666666666667H298.6666666666667z" /> + <glyph glyph-name="xing" + unicode="&#xF5BD;" + horiz-adv-x="512" d=" M376.9600000000001 405.3333333333333C367.7866666666667 405.3333333333333 363.7333333333334 399.5733333333333 360.5333333333334 393.6C360.5333333333334 393.6 227.8400000000001 158.5066666666667 224 150.8266666666667L311.04 -9.6C314.0266666666667 -15.1466666666666 318.7200000000001 -21.3333333333333 328.1066666666667 -21.3333333333333H389.5466666666667C393.3866666666667 -21.3333333333333 396.16 -19.84 397.6533333333333 -17.4933333333333C399.36 -14.72 399.36 -11.3066666666667 397.6533333333333 -7.8933333333333L310.8266666666667 151.04L447.1466666666667 391.8933333333333C448.8533333333333 395.3066666666666 448.8533333333333 398.7199999999999 447.36 401.4933333333333C445.6533333333334 403.8399999999999 442.88 405.3333333333333 439.04 405.3333333333333M118.4 321.0666666666667C114.7733333333333 321.0666666666667 111.5733333333333 320 110.08 317.2266666666667C108.3733333333333 314.4533333333334 108.5866666666667 311.2533333333334 110.5066666666667 307.8400000000001L151.8933333333333 235.3066666666667L86.6133333333333 120.1066666666667C85.3333333333333 116.6933333333333 85.3333333333333 113.28 86.6133333333333 110.5066666666667C88.1066666666666 107.9466666666667 90.88 106.6666666666667 94.5066666666666 106.6666666666667H156.16C165.3333333333333 106.6666666666667 169.8133333333333 112.64 173.0133333333333 118.4C173.0133333333333 118.4 236.8 231.2533333333334 239.36 235.7333333333334L197.12 309.3333333333334C194.1333333333333 314.88 189.44 321.0666666666667 179.84 321.0666666666667" /> + <glyph glyph-name="xing-box" + unicode="&#xF5BE;" + horiz-adv-x="512" d=" M102.4 384C81.0666666666667 384 64 366.9333333333334 64 345.6V38.4C64 17.0666666666667 81.0666666666667 0 102.4 0H409.6C430.9333333333333 0 448 17.0666666666667 448 38.4V345.6C448 366.9333333333334 430.9333333333333 384 409.6 384M342.8266666666667 341.3333333333334H386.3466666666667C388.9066666666667 341.3333333333334 391.04 340.48 391.8933333333333 338.56C393.1733333333333 336.64 393.1733333333333 334.2933333333334 391.8933333333333 331.9466666666667L296.5333333333334 162.9866666666667L357.3333333333334 52.0533333333334C358.6133333333334 49.7066666666667 358.6133333333334 47.3600000000001 357.3333333333334 45.4400000000001C356.2666666666667 43.7333333333335 354.3466666666667 42.6666666666667 352.0000000000001 42.6666666666667H308.6933333333334C302.0800000000001 42.6666666666667 298.6666666666668 47.1466666666668 296.7466666666668 50.9866666666668L235.5200000000001 163.2000000000001L331.3066666666668 333.0133333333335C333.6533333333334 337.2800000000001 336.4266666666668 341.3333333333335 342.8266666666667 341.3333333333335M151.2533333333333 282.4533333333334H194.1333333333333C200.7466666666667 282.4533333333334 204.16 278.1866666666667 206.2933333333333 274.1333333333334L235.9466666666667 222.5066666666667C234.0266666666667 219.52 189.44 140.3733333333333 189.44 140.3733333333333C187.0933333333334 136.3200000000001 184.1066666666667 132.0533333333334 177.4933333333334 132.0533333333334H134.4C131.84 132.0533333333334 129.92 133.12 128.8533333333333 135.04C128 136.7466666666667 128 139.3066666666667 128.8533333333333 141.6533333333334L174.5066666666667 222.5066666666667L145.4933333333334 273.0666666666667C144.4266666666667 275.4133333333334 144 277.3333333333334 145.28 279.68C146.3466666666667 281.3866666666667 148.48 282.4533333333334 151.2533333333333 282.4533333333334z" /> + <glyph glyph-name="xing-circle" + unicode="&#xF5BF;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M338.1333333333334 320H378.4533333333333C381.0133333333333 320 382.7199999999999 319.1466666666667 384 317.44C384.8533333333333 315.7333333333334 384.8533333333333 313.6 384 311.2533333333334L295.2533333333334 154.4533333333334L352 51.4133333333334C352.64 49.28 352.64 46.9333333333333 352 45.2266666666667C350.5066666666667 43.5200000000001 348.8 42.6666666666667 346.4533333333333 42.6666666666667H306.3466666666667C300.16 42.6666666666667 297.1733333333333 46.72 295.2533333333334 50.3466666666667L238.2933333333333 154.4533333333333C241.28 160 327.4666666666667 312.32 327.4666666666667 312.32C329.6 316.16 332.16 320 338.1333333333334 320M160 265.1733333333334H200.32C206.2933333333333 265.1733333333334 209.28 261.3333333333334 211.2 257.7066666666667L238.7200000000001 209.7066666666667C237.2266666666667 206.9333333333333 195.6266666666667 133.3333333333334 195.6266666666667 133.3333333333334C193.4933333333334 129.7066666666667 190.72 125.6533333333334 184.7466666666667 125.6533333333334H144.64C142.2933333333333 125.6533333333334 140.5866666666667 126.72 139.52 128C138.6666666666667 130.1333333333333 138.6666666666667 132.2666666666667 139.52 134.6133333333334L181.9733333333333 209.7066666666667L155.0933333333333 256C153.8133333333333 258.7733333333334 153.6 260.9066666666667 154.6666666666667 262.6133333333334C155.7333333333333 264.3200000000001 157.6533333333333 265.1733333333334 160 265.1733333333334z" /> + <glyph glyph-name="xml" + unicode="&#xF5C0;" + horiz-adv-x="512" d=" M274.9866666666667 384L316.8 375.4666666666667L237.0133333333333 0L195.2 8.5333333333333L274.9866666666667 384M417.92 192L341.3333333333333 268.5866666666667V328.9600000000001L478.2933333333334 192L341.3333333333333 55.2533333333333V115.6266666666667L417.92 192M33.7066666666667 192L170.6666666666667 328.9600000000001V268.5866666666667L94.08 192L170.6666666666667 115.6266666666667V55.2533333333333L33.7066666666667 192z" /> + <glyph glyph-name="yeast" + unicode="&#xF5C1;" + horiz-adv-x="512" d=" M384 149.3333333333334C431.1466666666667 149.3333333333334 469.3333333333333 111.1466666666667 469.3333333333333 64S431.1466666666667 -21.3333333333333 384 -21.3333333333333S298.6666666666667 16.8533333333334 298.6666666666667 64L300.5866666666667 82.1333333333334C299.7333333333334 97.0666666666667 296.96 110.08 289.0666666666667 117.3333333333334C284.8 121.6 278.8266666666667 123.9466666666667 272 125.2266666666667C251.52 113.4933333333334 227.84 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384S341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 220.16 334.5066666666667 196.48 322.7733333333333 176C324.0533333333334 169.1733333333334 326.4 163.2000000000001 330.6666666666667 158.9333333333333C337.92 151.04 350.9333333333333 148.2666666666667 365.8666666666666 147.4133333333334L384 149.3333333333334M160 234.6666666666667C177.7066666666667 234.6666666666667 192 220.3733333333333 192 202.6666666666667S177.7066666666667 170.6666666666667 160 170.6666666666667S128 184.96 128 202.6666666666667S142.2933333333333 234.6666666666667 160 234.6666666666667M202.6666666666667 341.3333333333334C149.3333333333333 341.3333333333334 106.6666666666667 298.6666666666667 106.6666666666667 245.3333333333334S149.3333333333333 149.3333333333334 202.6666666666667 149.3333333333334S298.6666666666667 192 298.6666666666667 245.3333333333334S256 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="yelp" + unicode="&#xF5C2;" + horiz-adv-x="512" d=" M225.92 405.3333333333333C239.5733333333333 405.3333333333333 245.3333333333333 399.5733333333333 247.04 384.64L251.52 317.0133333333333L256.64 228.48C257.0666666666667 221.0133333333334 256 213.3333333333334 253.0133333333334 206.5066666666667C248.32 196.9066666666667 237.6533333333334 194.3466666666667 228.9066666666667 200.96C224 205.0133333333334 219.9466666666667 210.3466666666667 216.5333333333333 216.1066666666668L136.96 350.9333333333334C129.28 363.9466666666667 131.6266666666667 372.48 144.4266666666667 380.5866666666667C160 390.8266666666667 207.5733333333333 405.3333333333333 225.92 405.3333333333333M316.3733333333334 131.2000000000001L321.92 129.92L404.2666666666667 100.0533333333334C418.3466666666667 94.9333333333334 422.1866666666666 87.0400000000001 416 73.1733333333334C406.6133333333333 49.0666666666667 391.2533333333334 28.5866666666667 371.6266666666667 11.7333333333333C361.8133333333334 3.2 352 4.6933333333334 345.8133333333334 15.3600000000001L297.3866666666667 99.8400000000001C289.0666666666667 114.9866666666668 299.3066666666667 132.2666666666668 316.3733333333334 131.2000000000001M96 149.3333333333334C96 165.12 96 180.2666666666667 101.3333333333333 194.7733333333333C106.0266666666667 209.0666666666667 113.7066666666667 213.3333333333333 128 207.5733333333333L205.44 174.72C215.2533333333333 170.6666666666666 220.8 163.84 220.3733333333333 152.7466666666667C219.7333333333333 141.6533333333333 212.6933333333333 136.96 203.3066666666666 133.76L124.8 107.9466666666667C109.8666666666666 103.04 102.1866666666666 107.52 98.9866666666666 122.6666666666666C97.0666666666666 131.6266666666667 95.36 140.8 96 149.3333333333333M255.36 0C254.9333333333333 -17.28 247.4666666666667 -23.8933333333333 230.6133333333333 -21.3333333333333C208.4266666666667 -17.0666666666667 187.9466666666666 -8.5333333333333 169.8133333333333 5.12C160.8533333333333 11.9466666666667 158.9333333333333 22.4 165.5466666666666 31.36L223.36 107.3066666666667C228.2666666666667 113.7066666666667 235.3066666666667 115.2 242.9866666666666 112.2133333333334C251.0933333333333 109.2266666666667 255.36 102.8266666666667 255.36 94.08V0M308.2666666666667 163.84C292.9066666666667 163.6266666666667 282.24 181.3333333333334 290.9866666666666 193.92C308.6933333333333 220.3733333333333 327.4666666666666 246.1866666666667 346.2399999999999 271.7866666666667C351.9999999999999 280.5333333333334 361.3866666666666 281.1733333333334 369.2799999999999 273.92C389.1199999999999 256 403.4133333333333 234.6666666666667 411.5199999999999 208.64C414.5066666666666 199.04 410.6666666666666 190.2933333333334 401.7066666666666 187.7333333333334L321.9199999999999 167.04L308.2666666666666 163.84z" /> + <glyph glyph-name="youtube-play" + unicode="&#xF5C3;" + horiz-adv-x="512" d=" M213.3333333333333 96V288L341.3333333333333 192M426.6666666666667 354.1333333333334C413.8666666666666 358.4 334.9333333333333 362.6666666666667 256 362.6666666666667S98.1333333333333 358.6133333333334 85.3333333333333 354.56C52.0533333333333 343.4666666666667 42.6666666666667 268.8 42.6666666666667 192C42.6666666666667 115.4133333333334 52.0533333333333 40.5333333333333 85.3333333333333 29.6533333333334C98.1333333333333 25.3866666666667 177.0666666666667 21.3333333333334 256 21.3333333333334S413.8666666666666 25.3866666666667 426.6666666666667 29.6533333333334C459.9466666666666 40.5333333333334 469.3333333333333 115.4133333333334 469.3333333333333 192C469.3333333333333 268.8 459.9466666666666 343.2533333333334 426.6666666666667 354.1333333333334z" /> + <glyph glyph-name="zip-box" + unicode="&#xF5C4;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H256V128H213.3333333333333V170.6666666666667H256V128H298.6666666666667M298.6666666666667 256H256V213.3333333333334H298.6666666666667V170.6666666666667H256V213.3333333333334H213.3333333333333V256H256V298.6666666666667H213.3333333333333V341.3333333333334H256V298.6666666666667H298.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + </font> +</defs> +</svg> diff --git a/assets/fonts/materialdesignicons-webfont.ttf b/assets/fonts/materialdesignicons-webfont.ttf new file mode 100644 index 0000000..7fab06c Binary files /dev/null and b/assets/fonts/materialdesignicons-webfont.ttf differ diff --git a/assets/fonts/materialdesignicons-webfont.woff b/assets/fonts/materialdesignicons-webfont.woff new file mode 100644 index 0000000..e467721 Binary files /dev/null and b/assets/fonts/materialdesignicons-webfont.woff differ diff --git a/assets/fonts/materialdesignicons-webfont.woff2 b/assets/fonts/materialdesignicons-webfont.woff2 new file mode 100644 index 0000000..2c39f49 Binary files /dev/null and b/assets/fonts/materialdesignicons-webfont.woff2 differ diff --git a/assets/fonts/opensans-regular-webfont.woff b/assets/fonts/opensans-regular-webfont.woff new file mode 100644 index 0000000..97333a9 Binary files /dev/null and b/assets/fonts/opensans-regular-webfont.woff differ diff --git a/assets/fonts/roboto-regular-webfont.woff b/assets/fonts/roboto-regular-webfont.woff new file mode 100644 index 0000000..9718087 Binary files /dev/null and b/assets/fonts/roboto-regular-webfont.woff differ diff --git a/assets/fonts/rubik-regular-webfont.woff b/assets/fonts/rubik-regular-webfont.woff new file mode 100644 index 0000000..bbefd42 Binary files /dev/null and b/assets/fonts/rubik-regular-webfont.woff differ diff --git a/assets/fonts/rubik-regular-webfont.woff2 b/assets/fonts/rubik-regular-webfont.woff2 new file mode 100644 index 0000000..059672d Binary files /dev/null and b/assets/fonts/rubik-regular-webfont.woff2 differ diff --git a/assets/fonts/sourcesanspro-regular-webfont.woff b/assets/fonts/sourcesanspro-regular-webfont.woff new file mode 100644 index 0000000..f7204ed Binary files /dev/null and b/assets/fonts/sourcesanspro-regular-webfont.woff differ diff --git a/assets/fonts/themify.eot b/assets/fonts/themify.eot new file mode 100644 index 0000000..9ec298b Binary files /dev/null and b/assets/fonts/themify.eot differ diff --git a/assets/fonts/themify.svg b/assets/fonts/themify.svg new file mode 100644 index 0000000..3d53854 --- /dev/null +++ b/assets/fonts/themify.svg @@ -0,0 +1,362 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="themify" horiz-adv-x="512"> +<font-face units-per-em="512" ascent="480" descent="-32" /> +<missing-glyph horiz-adv-x="512" /> +<glyph unicode="&#x20;" d="" horiz-adv-x="256" /> +<glyph unicode="&#xe600;" d="M512 329.412h-99.178l70.114-70.114-21.293-21.293-70.114 70.114v-99.178h-30.118v98.966l-320.632-321.204-21.293 21.293 320.844 321.416h-99.388v30.118h99.177l-70.114 70.114 21.293 21.293 70.114-70.114v99.178h30.118v-99.298l68.879 68.999 21.293-21.293-68.758-68.879h99.057v-30.118z" /> +<glyph unicode="&#xe601;" d="M108.032 301.312c-28.793 0-46.682-15.059-46.682-39.334v-65.084c0-12.499 4.849-24.214 13.643-33.069 8.794-8.825 20.54-13.704 33.039-13.704h52.495l171.249-171.309v494.803l-169.563-172.303h-54.181zM301.659 400.068v-348.522l-128.662 128.692h-64.994c-9.126 0-16.535 7.469-16.535 16.655v65.084c0 2.74 0 9.216 16.564 9.216h66.771l126.856 128.873zM361.563 149.098v30.118c16.745 0 30.358 13.613 30.358 30.358s-13.613 30.358-30.358 30.358v30.118c33.34 0 60.476-27.136 60.476-60.476s-27.136-60.476-60.476-60.476zM482.756 209.332c0-66.44-54.031-120.471-120.471-120.471v30.118c49.815 0 90.353 40.538 90.353 90.353s-40.538 90.353-90.353 90.353v30.118c66.409 0 120.471-54.061 120.471-120.471z" /> +<glyph unicode="&#xe602;" d="M512-16.58c-1.897 80.926-83.667 150.558-196.397 168.93v41.382c14.818 14.245 25.359 36.352 32.256 55.206 9.999 5 18.793 16.143 23.913 31.112 7.168 20.721 4.397 39.846-6.204 49.061 0.844 7.168 1.385 14.487 0.452 21.775-2.38 19.968 1.957 31.262 5.843 41.201 3.192 8.343 6.897 17.8 3.192 28.461-13.312 38.34-52.013 59.452-108.966 59.452l-7.951-0.15c-39.544-1.416-51.411-18.071-59.362-33.581-0.994-1.868-2.319-4.397-2.319-4.548-51.561-4.608-51.109-47.255-50.718-81.529l0.090-11.113c0-6.174 0.271-12.619 0.783-19.245-12.8-9.036-15.179-30.268-5.391-52.315 5.572-12.499 13.613-21.956 22.558-26.865 7.319-20.299 18.823-44.273 35.508-59.181v-38.641c-114.387-17.74-197.391-87.552-199.288-169.412l-0.361-15.42h512.692l-0.332 15.42zM31.744-1.882c11.806 63.067 86.106 115.079 184.38 126.615l13.282 1.566v80.293l-6.506 4.517c-11.836 8.192-23.823 28.522-32.828 55.748l-2.5 8.463-8.855 1.536c-1.596 0.572-6.264 4.608-9.939 12.89-2.259 5.060-3.132 9.397-3.373 12.499l15.36-4.307-2.892 22.558c-1.265 9.939-1.928 19.606-1.928 28.612l-0.090 11.445c-0.452 40.388 1.536 49.212 23.281 51.17 16.414 1.446 22.648 13.523 26.383 20.751 4.518 8.794 8.433 16.354 33.732 17.287l6.837 0.12c24.967 0 68.638-5.090 80.384-38.611 0-1.295-1.566-5.331-2.711-8.282-4.367-11.264-10.963-28.281-7.65-55.808 0.723-5.662-0.211-12.77-1.204-20.329l-2.68-24.245 13.282 1.446c0.241-3.132-0.12-8.101-2.259-14.216-2.921-8.704-7.288-13.191-7.138-13.673h-10.842l-3.433-10.3c-8.524-25.691-19.577-45.086-30.389-53.248l-5.964-4.517v-82.101l13.192-1.656c96.708-12.077 169.893-63.94 181.609-126.253h-448.542z" /> +<glyph unicode="&#xe603;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM451.584 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.815c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h270.878v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471h-30.118c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.874c24.817-0.12 44.996-20.33 44.996-45.177zM421.466 225.204c0 8.313-6.776 15.059-15.059 15.059h-300.815c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.815c8.283 0 15.059 6.747 15.059 15.059v213.233z" /> +<glyph unicode="&#xe604;" d="M64.271 325.226l42.225 77.914c32.708 49.634 98.244 63.097 146.703 30.991l-16.595-25.088c-34.605 22.86-81.408 13.252-104.328-21.353l-42.225-77.915c-23.522-35.78-13.975-82.582 20.691-105.442 34.424-22.649 72.584-16.474 99.78 16.204l23.131-19.305c-22.347-26.865-51.019-40.719-80.655-40.719-19.727 0-39.846 6.144-58.85 18.673-48.489 32.045-61.922 97.551-29.876 146.041zM121.706 238.035l-3.915-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.132 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.076c-29.364-29.365-77.132-29.365-106.466 0s-29.364 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.925c-41.081-41.080-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.171 41.171-108.032 41.081-149.052 0.060zM330.18 269.177h122.7v30.117h-122.7v-30.117zM316.084 228.608l58.76-33.942 15.059 26.052-58.76 33.942-15.059-26.052zM323.764 445.184l-47.586-82.432 26.052-15.059 47.586 82.402-26.052 15.089zM477.877 397.93l-15.059 26.052-150.347-86.799 15.059-26.052 150.348 86.799z" /> +<glyph unicode="&#xe605;" d="M329.337 419.283c-6.565 26.172-30.087 45.659-58.278 45.659-28.070 0-51.501-19.365-58.157-45.659h-107.49v-30.118h331.294v30.118h-107.37zM271.059 434.824c11.505 0 21.233-6.656 26.353-15.541h-52.194c5.18 9.125 14.607 15.541 25.841 15.541zM391.529 359.529h30.118v-316.717c0-24.908-20.269-45.176-45.176-45.176h-210.823c-24.907 0-45.177 20.269-45.177 45.176v316.717h30.118v-316.717c0-8.283 6.746-15.059 15.059-15.059h210.823c8.313 0 15.059 6.776 15.059 15.059v316.717zM240.941 329.412v-240.941h-30.118v240.941h30.118zM331.294 329.412v-240.941h-30.118v240.941h30.118z" /> +<glyph unicode="&#xe606;" d="M346.353 175.33c91.347 0 165.647 68.337 165.647 152.335s-74.3 152.335-165.647 152.335c-57.585 0-111.225-28.25-141.071-73.216-21.233 12.017-45.056 18.312-69.752 18.312-74.722 0-135.53-56.019-135.53-124.898 0-68.849 60.807-124.868 135.53-124.868 5.602 0 11.294 0.392 17.257 1.115 19.637-17.709 45.839-27.738 73.095-27.738 30.178 0 58.097 11.656 78.065 32.226 14.697-3.764 28.642-5.602 42.406-5.602zM293.497 215.416l-6.385-8.072c-14.185-17.86-37.075-28.522-61.229-28.522-21.805 0-42.587 8.734-57.073 24.004l-5.542 5.813-7.951-1.385c-6.445-1.115-12.981-1.807-19.787-1.807-58.127 0-105.412 42.496-105.412 94.72 0 52.254 47.285 94.78 105.412 94.78 23.853 0 46.652-7.409 65.928-21.474l14.215-10.331 8.042 15.661c22.227 43.159 70.355 71.077 122.639 71.077 74.722 0 135.529-54.814 135.529-122.247 0-67.373-60.808-122.218-135.529-122.218-13.644 0-27.738 2.259-43.038 6.957l-9.818 3.042zM346.353 163.764c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 73.412c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM459.294 58.353c-20.751 0-37.647-16.896-37.647-37.647s16.896-37.647 37.647-37.647 37.647 16.896 37.647 37.647-16.896 37.647-37.647 37.647zM451.764 20.706c0 4.156 3.373 7.529 7.529 7.529s7.529-3.373 7.529-7.529c0-8.283-15.059-8.283-15.059 0z" /> +<glyph unicode="&#xe607;" d="M512.602 239.059h-61.591c-7.379 96.196-84.51 173.026-180.827 180.013v62.103h-30.118v-62.193c-95.533-7.77-171.731-84.299-179.079-179.923h-61.59v-30.117h61.59c7.349-95.624 83.546-172.153 179.049-179.923v-61.019h30.117v60.928c96.316 6.957 173.447 83.788 180.827 180.013h61.59v30.118zM270.185 59.046v59.543h-30.118v-59.452c-78.939 7.589-141.794 70.776-148.962 149.805h58.88v30.118h-58.88c7.168 79.029 70.024 142.215 148.962 149.805v-58.278h30.118v58.368c79.721-6.837 143.481-70.264 150.709-149.896h-58.88v-30.118h58.88c-7.228-79.631-70.988-143.059-150.708-149.895z" /> +<glyph unicode="&#xe608;" d="M269.644 449.642l-119.476-86.799v-365.628l120.049 84.149 121.706-83.877v365.478l-122.278 86.678zM361.834 54.829l-91.708 63.247-89.811-62.976v292.412l89.6 65.084 91.949-65.204v-292.563zM218.474 299.264c0-29.063 23.642-52.706 52.706-52.706s52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706-52.706-23.642-52.706-52.706zM271.18 321.852c12.438 0 22.588-10.149 22.588-22.588s-10.149-22.588-22.588-22.588-22.588 10.149-22.588 22.588 10.15 22.588 22.588 22.588z" /> +<glyph unicode="&#xe609;" d="M278.588 43.294c0-12.499-10.089-22.588-22.588-22.588s-22.588 10.089-22.588 22.588 10.089 22.588 22.588 22.588 22.588-10.089 22.588-22.588zM481.882 434.824v-421.647c0-24.908-18.824-45.176-41.924-45.176h-367.917c-23.1 0-41.924 20.269-41.924 45.176v421.647c0 24.907 18.824 45.176 41.924 45.176h367.947c23.070 0 41.894-20.269 41.894-45.176zM451.764 434.824c0 8.162-5.391 15.059-11.806 15.059h-367.917c-6.415 0-11.806-6.897-11.806-15.059v-421.647c0-8.162 5.391-15.059 11.806-15.059h367.947c6.385 0 11.776 6.897 11.776 15.059v421.647zM90.353 419.764h331.294v-331.294h-331.294v331.294zM120.471 118.588h271.059v271.059h-271.059v-271.059z" /> +<glyph unicode="&#xe60a;" d="M501.368 268.664h-187.483l-57.886 178.297-57.916-178.297h-187.452l151.643-110.17-57.886-178.297 151.612 110.201 151.643-110.201-57.886 178.297 151.612 110.171zM350.358 59.046l-94.358 68.608-94.358-68.578 36.051 110.983-94.359 68.488h116.645l36.020 110.954 36.020-110.954h116.645l-94.358-68.517 36.051-110.983z" /> +<glyph unicode="&#xe60b;" d="M195.764 389.647c-42.948 0-82.582-23.431-103.996-60.236h-31.533v-316.236c0-24.907 20.269-45.176 45.177-45.176h180.706c24.907 0 45.176 20.269 45.176 45.176v316.236h-31.533c-21.413 36.774-61.108 60.236-103.996 60.236zM195.764 359.529c25.871 0 50.356-11.324 67.283-30.117h-134.536c16.896 18.793 41.351 30.117 67.252 30.117zM301.176 13.176c0-8.283-6.747-15.059-15.059-15.059h-180.706c-8.313 0-15.059 6.776-15.059 15.059v286.118h210.823v-286.118zM240.941 480h-90.353v-90.353h90.353v90.353zM210.823 419.764h-30.118v30.118h30.118v-30.118zM359.755 434.492l94.449-15.601-4.909-29.696-180.706 29.817 2.56 15.481-2.56 15.48 180.706 29.817 4.909-29.696-94.449-15.601z" /> +<glyph unicode="&#xe60c;" d="M346.353 359.529c0 49.815-40.538 90.353-90.353 90.353s-90.353-40.538-90.353-90.353c0-44.664 32.648-81.619 75.294-88.817v-242.477h-60.236v-30.118h150.588v30.118h-60.236v242.477c42.647 7.198 75.294 44.153 75.294 88.817zM195.764 359.529c0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236-60.236 27.015-60.236 60.236zM135.65 413.982c-11.385-13.854-17.378-30.238-17.378-47.405s5.993-33.551 17.378-47.405l-23.311-19.155c-15.812 19.305-24.184 42.315-24.184 66.53s8.373 47.255 24.184 66.53l23.311-19.094zM60.236 366.547c0-32.497 11.656-63.127 33.702-88.486l-22.709-19.757c-26.534 30.479-41.111 68.97-41.111 108.243s14.577 77.764 41.111 108.273l22.709-19.757c-22.046-25.389-33.702-56.019-33.702-88.516zM423.846 366.547c0-24.245-8.373-47.225-24.214-66.53l-23.281 19.125c11.385 13.854 17.378 30.238 17.378 47.405s-5.993 33.551-17.378 47.405l23.281 19.125c15.842-19.276 24.214-42.285 24.214-66.53zM481.882 366.547c0-39.304-14.577-77.764-41.111-108.273l-22.709 19.757c22.046 25.42 33.702 56.019 33.702 88.516s-11.656 63.126-33.702 88.486l22.709 19.757c26.534-30.479 41.111-68.94 41.111-108.243z" /> +<glyph unicode="&#xe60d;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.119 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.12 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM402.703 419.764l-9.096-60.236h-395.836l33.672-242.025h358.791l31.262 224.768 7.108 47.375h83.396v30.117h-109.297zM389.3 329.412l-4.187-30.118h-348.582l-4.187 30.118h356.954zM57.645 147.622l-16.896 121.555h340.179l-16.896-121.555h-306.387z" /> +<glyph unicode="&#xe60e;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.439 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.15-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.438 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.149-22.588-22.588-22.588zM402.673 419.764l-9.065-60.236h-395.836l33.642-242.025h358.822l31.413 225.882 6.957 46.261h83.396v30.117h-109.327zM364.002 147.622h-306.356l-25.299 181.79h356.954l-25.299-181.79zM331.294 178.824h-240.941v119.537h30.118v-89.419h180.706v89.45h30.118v-119.567zM120.471 390.581h-30.117v59.301h240.941v-57.404h-30.118v27.286h-180.706v-29.184z" /> +<glyph unicode="&#xe60f;" d="M256 300.137c-41.502 0-75.294-33.792-75.294-75.294s33.792-75.294 75.294-75.294 75.294 33.792 75.294 75.294-33.792 75.294-75.294 75.294zM256 179.667c-24.907 0-45.177 20.269-45.177 45.177s20.269 45.177 45.177 45.177 45.176-20.269 45.176-45.177-20.269-45.177-45.177-45.177zM510.193 195.509c1.115 9.668 1.807 19.426 1.807 29.334s-0.692 19.667-1.807 29.334l-77.945 23.432c-3.584 12.107-8.373 23.702-14.276 34.605l38.52 71.589c-12.228 15.36-26.172 29.305-41.563 41.563l-71.589-38.55c-10.933 5.903-22.528 10.661-34.635 14.276l-23.372 77.945c-9.637 1.115-19.396 1.807-29.334 1.807s-19.697-0.692-29.334-1.807l-23.371-77.945c-12.137-3.584-23.763-8.373-34.636-14.306l-71.59 38.55c-15.39-12.228-29.335-26.172-41.532-41.563l38.52-71.529c-5.903-10.903-10.662-22.528-14.276-34.636l-77.975-23.431c-1.115-9.637-1.807-19.396-1.807-29.334s0.693-19.697 1.807-29.335l77.945-23.372c3.614-12.137 8.373-23.763 14.276-34.666l-38.52-71.56c12.228-15.39 26.172-29.334 41.563-41.563l71.589 38.52c10.903-5.903 22.528-10.661 34.636-14.276l23.371-77.945c9.668-1.115 19.426-1.807 29.334-1.807s19.697 0.692 29.334 1.807l23.372 77.945c12.108 3.614 23.733 8.373 34.635 14.276l71.56-38.52c15.39 12.258 29.334 26.202 41.563 41.592l-38.49 71.56c5.903 10.902 10.661 22.528 14.276 34.635l77.945 23.372zM408.034 196.322l-4.638-15.601c-3.012-10.149-7.017-19.877-11.926-28.883l-7.71-14.306 7.68-14.306 28.672-53.308c-2.981-3.163-6.053-6.235-9.216-9.216l-67.554 36.412-14.306-7.71c-9.065-4.909-18.793-8.885-28.913-11.926l-15.601-4.638-4.668-15.601-17.438-58.188c-2.168-0.060-4.307-0.091-6.415-0.091s-4.246 0.030-6.415 0.091l-17.438 58.188-4.668 15.601-15.601 4.638c-10.119 3.012-19.847 7.017-28.883 11.926l-14.306 7.71-67.614-36.352c-3.132 2.981-6.234 6.053-9.216 9.216l36.382 67.584-7.71 14.306c-4.879 9.036-8.885 18.764-11.927 28.913l-4.608 15.571-73.758 22.106c-0.090 2.168-0.12 4.307-0.12 6.385 0 2.108 0.030 4.246 0.12 6.415l73.728 22.107 4.638 15.601c3.012 10.149 7.017 19.877 11.927 28.883l7.71 14.306-36.382 67.614c2.981 3.132 6.053 6.234 9.186 9.216l67.674-36.442 14.336 7.8c8.945 4.879 18.643 8.885 28.792 11.897l15.601 4.638 4.668 15.601 17.438 58.188c2.198 0.030 4.337 0.060 6.445 0.060s4.247-0.030 6.415-0.090l17.438-58.188 4.668-15.601 15.601-4.638c10.089-3.012 19.848-7.017 28.913-11.926l14.306-7.68 67.584 36.382c3.132-2.981 6.235-6.053 9.216-9.216l-28.702-53.308-7.68-14.306 7.74-14.306c4.909-9.036 8.885-18.733 11.897-28.822l4.638-15.601 15.601-4.668 58.188-17.499c0.030-2.168 0.060-4.307 0.060-6.415s-0.030-4.247-0.12-6.415l-73.728-22.106z" /> +<glyph unicode="&#xe610;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647z" /> +<glyph unicode="&#xe611;" d="M500.074 1.25l-155.798 155.798c29.365 34.244 47.255 78.607 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.315 0-101.466-20.36-138.451-57.344-36.984-36.954-57.314-86.137-57.314-138.421 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.943 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 118.588c-91.347 0-165.647 74.3-165.647 165.647 0 44.273 17.197 85.865 48.489 117.158 31.292 31.262 72.885 48.489 117.157 48.489 91.347 0 165.647-74.3 165.647-165.647 0-91.347-74.3-165.647-165.647-165.647zM210.823 299.294h60.235v-30.117h-60.236v-60.236h-30.118v60.236h-60.236v30.118h60.236v60.236h30.118v-60.236z" /> +<glyph unicode="&#xe612;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647zM120.471 300.137h150.588v-30.118h-150.588v30.118z" /> +<glyph unicode="&#xe613;" d="M391.529 148.706c-16.414 0-31.594-4.728-44.875-12.409l-69.933 73.909 188.536 199.198-21.896 20.721-187.362-197.993-187.422 197.993-21.865-20.721 188.536-199.198-69.933-73.879c-13.252 7.65-28.461 12.378-44.845 12.378-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 22.498-8.584 42.887-22.227 58.7l67.403 71.228 67.404-71.228c-13.673-15.842-22.227-36.202-22.227-58.7 0-49.815 40.538-90.353 90.353-90.353s90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM120.471-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236zM391.529-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.015 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236z" /> +<glyph unicode="&#xe614;" d="M150.588 480v-512h210.823v512h-210.823zM331.294-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" /> +<glyph unicode="&#xe615;" d="M135.288 480h-59.754c-24.907 0-45.176-20.269-45.176-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.299 45.176-45.207 45.176zM75.535 449.882h59.754c8.282 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM60.476 342.964v31.051h89.871v-31.051h-89.871zM118.904 57.721h-26.203l-32.226 63.368v191.759h30.118v-195.192h30.118v195.192h29.636v-191.85l-31.443-63.277zM240.941 480v-512h210.823v512h-210.823zM421.647-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" /> +<glyph unicode="&#xe616;" d="M362.496 479.548l-362.044-362.044 149.083-149.052 362.014 362.014-149.052 149.082zM43.038 117.504l20.962 20.962 42.587-42.587 21.293 21.293-42.587 42.587 21.654 21.654 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 20.962 20.962 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 21.625 21.625 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.616-42.587 21.293 21.293-42.616 42.587 21.324 21.323 106.466-106.496-319.428-319.428-106.496 106.466z" /> +<glyph unicode="&#xe617;" d="M107.279 449.882v-465.589l141.131 98.485 143.119-98.183v465.288h-284.25zM361.412 41.758l-113.122 77.644-110.863-77.342v377.705h223.985v-378.007z" /> +<glyph unicode="&#xe618;" d="M301.99 176.595v303.405h-182.332v-303.495l90.986 61.832 91.347-61.741zM149.775 233.397v216.486h122.127v-216.576l-61.35 41.442-60.778-41.352zM481.882 449.671v-451.554h-451.764v451.554h59.452v-30.118h-29.334v-391.318h391.529v391.318h-120.621v30.118h150.739z" /> +<glyph unicode="&#xe619;" d="M180.706 239.059h-180.706v180.706h30.117v-123.754c30.509 96.166 121.555 165.165 225.882 165.165 105.592 0 199.409-71.077 228.111-172.845l-29.003-8.162c-25.058 88.847-106.948 150.919-199.108 150.919-97.159-0.030-181.188-68.548-202.029-161.912h126.735v-30.118zM331.294 208.941v-30.118h126.735c-20.872-93.395-104.779-161.882-202.029-161.882-92.22 0-174.080 62.072-199.108 150.92l-29.003-8.162c28.672-101.767 122.489-172.845 228.111-172.845 104.177 0 195.012 68.668 225.882 165.105v-123.724h30.118v180.706h-180.706z" /> +<glyph unicode="&#xe61a;" d="M481.882 208.941h-210.824v-210.824h-30.118v210.823h-210.823v30.118h210.823v210.824h30.118v-210.824h210.823v-30.118z" /> +<glyph unicode="&#xe61b;" d="M361.412 344.471c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.285-105.412-105.412c0-52.556 38.791-95.925 89.209-103.756v-242.598h30.118v242.357c51.501 6.867 91.498 50.658 91.498 103.996zM256 269.177c-41.532 0-75.294 33.762-75.294 75.294s33.762 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.762-75.294-75.294-75.294zM301.176 329.412h-30.118c0 16.625-13.493 30.117-30.118 30.117v30.118c33.22 0 60.236-27.016 60.236-60.236z" /> +<glyph unicode="&#xe61c;" d="M467.697 393.954l-42.255 42.285c-17.017 17.047-46.833 17.047-63.909 0l-272.776-272.805-51.862-159.262 158.058 53.157 272.716 272.745c17.649 17.589 17.649 46.26 0.030 63.88zM93.184 79.616l19.426 59.603 58.248-58.277-59.121-19.877-18.552 18.553zM131.162 163.223l165.436 165.436 63.579-63.548-165.466-165.466-63.548 63.579zM317.892 349.982l21.956 21.956 63.579-63.548-21.956-21.956-63.579 63.548zM446.404 351.368l-21.685-21.685-63.579 63.548 21.685 21.715c5.692 5.692 15.601 5.692 21.293 0l42.255-42.285c5.903-5.903 5.903-15.42 0.030-21.293z" /> +<glyph unicode="&#xe61d;" d="M496.911 424.493l-42.255 42.255c-17.046 17.047-46.833 17.047-63.909 0l-226.966-226.966-51.862-159.232 158.088 53.158 226.906 226.906c8.524 8.524 13.221 19.877 13.221 31.955s-4.699 23.401-13.221 31.925zM168.177 155.995l19.215 58.94 57.826-57.796-58.489-19.667-18.553 18.522zM205.764 239.179l120.049 120.049 63.548-63.548-120.049-120.049-63.548 63.548zM347.106 380.522l21.956 21.956 63.548-63.548-21.956-21.956-63.548 63.548zM475.618 381.907l-21.685-21.715-63.548 63.548 21.685 21.715c5.723 5.692 15.631 5.692 21.293 0l42.255-42.255c2.831-2.861 4.397-6.626 4.397-10.661s-1.566-7.771-4.397-10.632zM451.764 254.118h30.118v-286.118h-481.882v451.764h225.882v-30.118h-195.764v-391.529h421.647v256z" /> +<glyph unicode="&#xe61e;" d="M451.764 419.764v60.236h-391.529v-60.236h-15.541c-24.636 0-44.694-20.329-44.694-45.327v-90.052c0-24.998 20.058-45.327 44.694-45.327h181.429c8.282 0 15.059-6.776 15.059-15.059v-45.176h-30.358v-210.823h90.353v210.823h-29.877v45.176c0 24.907-20.269 45.176-45.177 45.176h-181.429c-8.011 0-14.577 6.837-14.577 15.21v90.052c0 8.373 6.566 15.209 14.577 15.209h15.541v-90.353h391.529v90.353h30.118v30.118h-30.118zM271.059-1.882h-30.118v150.588h30.118v-150.588zM421.647 329.412h-331.294v120.47h331.294v-120.47z" /> +<glyph unicode="&#xe61f;" d="M502.995 184.305l-267.084 268.77-4.036-4.005c-20.119 19.908-46.743 30.9-75.084 30.931 0 0 0 0-0.030 0-28.552 0-55.447-11.144-75.656-31.353-20.239-20.209-31.383-47.074-31.383-75.716 0-28.341 11.023-54.965 30.931-75.084l-66.5-66.53c-9.126-9.156-14.155-21.263-14.155-34.124 0-12.921 5-24.998 14.065-34.033l144.896-146.341c9.095-9.096 21.203-14.125 34.063-14.125 12.921 0 25.028 5.060 34.124 14.185l167.394 167.394 108.454 0.030zM79.842 372.962c0 20.54 8.011 39.846 22.558 54.393 14.547 14.516 33.822 22.528 54.362 22.528 0.030 0 0.030 0 0.030 0 20.299 0 39.333-7.891 53.79-22.106l-108.604-108.635c-14.246 14.487-22.136 33.521-22.136 53.82zM205.794 38.144c-3.404-3.404-7.981-5.331-12.8-5.331s-9.367 1.868-12.709 5.24l-109.508 110.652h245.579l-110.562-110.562zM346.474 178.824h-305.543l-5.511 5.602c-3.433 3.404-5.3 7.921-5.3 12.74 0 4.849 1.898 9.397 5.331 12.86l200.403 200.403 194.801-196.036-48.61-0.030-35.569-35.539zM472.486 119.823l-12.258 18.191-12.589-18.010c-9.608-13.764-41.050-60.567-41.050-84.269 0-29.063 23.642-52.706 52.706-52.706s52.706 23.673 52.706 52.736c0 23.552-30.238 70.295-39.514 84.058zM459.294 13.176c-12.438 0-22.588 10.149-22.588 22.588 0 7.228 10.511 27.708 23.070 47.917 12.047-20.179 22.106-40.629 22.106-47.917 0-12.438-10.149-22.588-22.588-22.588z" /> +<glyph unicode="&#xe620;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941s108.092-240.941 240.941-240.941 240.941 108.092 240.941 240.941-108.092 240.941-240.941 240.941zM256 434.824c52.706 0 100.834-19.577 137.849-51.682l-296.96-296.99c-32.136 36.984-51.712 85.142-51.712 137.849 0 116.224 94.57 210.823 210.823 210.823zM256 13.176c-52.706 0-100.834 19.577-137.849 51.682l296.96 296.99c32.135-36.984 51.712-85.142 51.712-137.849 0-116.224-94.57-210.823-210.823-210.823z" /> +<glyph unicode="&#xe621;" d="M376.471 480h-240.941c-24.907 0-45.177-20.269-45.177-45.176v-421.647c0-24.908 20.269-45.176 45.177-45.176h240.941c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM135.53 449.882h240.941c8.313 0 15.059-6.746 15.059-15.059v-45.177h-271.059v45.177c0 8.313 6.746 15.059 15.059 15.059zM391.529 359.529v-240.941h-271.059v240.941h271.059zM376.471-1.882h-240.941c-8.313 0-15.059 6.747-15.059 15.059v75.294h271.059v-75.294c0-8.313-6.747-15.059-15.059-15.059zM271.059 43.294c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059 6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059z" /> +<glyph unicode="&#xe622;" d="M451.764 239.059v-30.117h-391.529v30.118h391.529z" /> +<glyph unicode="&#xe623;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM329.788 374.166l5.541-29.575-54.904-10.27 34.515-58.338-25.931-15.36-32.738 55.296-32.828-55.266-25.871 15.36 34.696 58.428-53.489 10.149 5.602 29.575 56.561-10.692v56.29h30.118v-56.561l58.729 10.963z" /> +<glyph unicode="&#xe624;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM308.706 329.412c0-29.094-23.612-52.706-52.706-52.706s-52.706 23.612-52.706 52.706 23.612 52.706 52.706 52.706 52.706-23.612 52.706-52.706z" /> +<glyph unicode="&#xe625;" d="M320.632 449.882h-23.13c-6.988 17.709-23.161 30.118-41.954 30.118h-74.3c-8.794 0-15.963-2.711-21.263-8.072-9.517-9.548-9.457-23.221-9.397-37.737v-354.756l55.748-70.024h4.488v-41.412l30.118 20.721v20.721h4.428l55.808 70.024v340.3h19.456c10.149 0 10.661-16.263 10.661-19.516v-128.482h30.118v128.482c0.030 29.214-16.745 49.634-40.779 49.634zM181.248 449.882h74.3c8.584 0 15.541-8.764 15.541-19.516v-100.954h-90.383v104.93c0 5.843-0.060 14.668 0.542 15.541zM230.912 39.529h-10.029l-40.147 50.447-0.030 209.317h90.353v-209.317l-40.147-50.447z" /> +<glyph unicode="&#xe626;" d="M471.763 308.812l-16.384 16.384c2.349 5.391 3.825 11.084 4.187 16.926 0.783 13.101-3.644 25.148-12.529 34.033l-52.555 52.555c-6.204 6.204-13.161 9.337-20.691 9.337-13.523 0-23.161-9.728-33.37-20.059l-272.143-272.143-10.090-88.998 3.163-3.132-29.274-29.274 35.931-6.686 14.668 14.637 3.132-3.132 88.968 10.029 261.933 261.964 13.733-13.733c2.168-2.168 2.831-4.337 2.289-7.379-0.783-4.247-3.885-9.337-8.524-13.975l-90.835-90.865 21.293-21.293 90.835 90.865c9.125 9.095 14.969 19.426 16.866 29.817 2.349 12.83-1.416 24.967-10.601 34.123zM160.918 68.081l-64.091-7.259-7.078 7.077 7.288 64.030 169.322 169.322 63.88-63.88-169.321-169.292zM351.533 258.666l-63.88 63.88 74.21 74.21c4.096 4.187 10.3 10.451 11.324 10.662l52.555-52.556c3.614-3.614 3.885-8.372 3.764-10.872-0.301-5.060-2.651-9.969-6.565-13.915l-71.409-71.409z" /> +<glyph unicode="&#xe627;" d="M456.162 213.339l-185.103 185.133v-400.354h-30.118v400.354l-185.103-185.133-21.323 21.323 221.485 221.455 221.485-221.485-21.324-21.293z" /> +<glyph unicode="&#xe628;" d="M473.058 224.844l-221.485-221.485-21.293 21.293 185.103 185.103h-385.265v30.118h385.295l-185.133 185.163 21.293 21.293 221.485-221.485z" /> +<glyph unicode="&#xe629;" d="M481.882 209.784h-385.295l185.103-185.103-21.293-21.293-221.455 221.455 221.485 221.485 21.293-21.293-185.133-185.133h385.295v-30.118z" /> +<glyph unicode="&#xe62a;" d="M477.485 213.339l-221.485-221.455-221.485 221.455 21.293 21.293 185.133-185.103v400.354h30.117v-400.354l185.103 185.103 21.324-21.293z" /> +<glyph unicode="&#xe62b;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM450.711 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.845c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h0.723v59.874c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.995c24.425-0.542 44.123-20.51 44.123-45.056zM135.53 270.381h240.941v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471v-59.874zM420.593 225.204c0 7.951-6.235 14.276-14.005 14.848v-0.12h-301.176v0.332h-0.723c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.845c8.283 0 15.059 6.747 15.059 15.059v213.233z" /> +<glyph unicode="&#xe62c;" d="M59.362 420.788l159.262-424.689 36.502 228.924 228.924 36.502-424.689 159.262zM228.834 251.347l-22.016-137.999-95.985 255.97 255.97-95.985-137.969-21.986z" /> +<glyph unicode="&#xe62d;" d="M391.017 270.983l-28.25-28.25-21.293 21.293 28.25 28.25c29.365 29.364 29.365 77.132 0 106.466s-77.132 29.364-106.466 0l-89.962-89.992c-29.364-29.365-29.364-77.132 0-106.466s77.132-29.365 106.466 0l21.293-21.293c-20.57-20.57-47.525-30.81-74.541-30.81s-53.971 10.27-74.511 30.81c-41.081 41.081-41.081 107.972 0 149.052l89.962 89.962c41.111 41.111 107.941 41.111 149.052 0 41.111-41.051 41.111-107.942 0-149.022zM181.971 238.035l-3.916-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.131 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.106c-29.364-29.365-77.132-29.365-106.466 0s-29.365 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.894c-41.081-41.081-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.14 41.171-108.002 41.081-149.052 0.060z" /> +<glyph unicode="&#xe62e;" d="M0 480v-512h512v512h-512zM30.117 299.294h271.059v-301.176h-271.059v301.176zM481.882-1.882h-150.588v301.176h150.588v-301.176zM30.117 329.412v120.47h451.764v-120.47h-451.764z" /> +<glyph unicode="&#xe62f;" d="M391.529 449.882h-391.529v-331.294h391.529v331.294zM361.412 148.706h-331.294v271.059h331.294v-271.059zM512 329.412v-331.294h-391.529v91.286h30.118v-61.169h331.294v271.059h-60.717v30.118h90.835z" /> +<glyph unicode="&#xe630;" d="M331.294 449.882h-331.294v-271.059h331.294v271.059zM301.176 208.941h-271.059v210.824h271.059v-210.824zM421.647 88.471h-331.294v59.663h30.118v-29.546h271.059v210.824h-29.937v30.117h60.055v-271.059zM512 269.177v-271.059h-331.294v59.663h30.118v-29.546h271.059v210.823h-29.937v30.117h60.054z" /> +<glyph unicode="&#xe631;" d="M446.072 290.289l21.293 21.293-52.194 52.194 22.799 22.678-21.233 21.353-245.339-244.164c-14.577 10.12-32.226 16.113-51.291 16.113-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 19.908-6.686 38.189-17.619 53.127l158.54 157.756 52.344-52.345 21.293 21.293-52.315 52.284 21.113 21.022 52.254-52.254zM120.079 29.169c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236z" /> +<glyph unicode="&#xe632;" d="M256 68.081l-146.161 145.468 21.233 21.353 109.869-109.357v325.18h30.117v-325.18l109.839 109.327 21.233-21.353-146.131-145.438zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe633;" d="M30.117 449.882v-451.764h451.764v451.764h-451.764zM451.764 28.236h-391.529v60.236h391.529v-60.236zM60.236 118.588v301.176h391.529v-301.176h-391.529zM427.761 173.854l-20.992-21.594-72.794 70.746-46.803-50.477-74.873 132.97-102.43-149.836-24.877 16.986 129.807 189.832 78.426-139.204 39.665 42.827 94.87-92.25z" /> +<glyph unicode="&#xe634;" d="M376.471 460.183c-52.375 0-97.913-29.877-120.471-73.457-22.558 43.58-68.096 73.457-120.471 73.457-74.722 0-135.53-60.808-135.53-135.529 0-10.331 1.446-21.052 4.638-33.672l3.283-10.572c43.129-131.132 230.671-282.895 238.652-289.25l9.427-7.589 9.427 7.589c8.493 6.837 208.595 168.599 238.743 289.551l3.373 11.084c3.042 12.107 4.457 22.558 4.457 32.858 0 74.722-60.808 135.53-135.53 135.53zM478.539 299.897l-3.404-11.143c-24.365-97.762-179.079-232.719-219.136-266.331-38.611 32.618-184.38 160.738-219.407 267.204l-3.012 9.517c-2.319 9.366-3.463 17.709-3.463 25.51 0 58.127 47.284 105.412 105.412 105.412s105.412-47.315 105.412-105.412v-7.589h30.118v7.589c0 58.127 47.284 105.412 105.412 105.412s105.412-47.285 105.412-105.412c0-7.77-1.144-15.872-3.343-24.756z" /> +<glyph unicode="&#xe635;" d="M4.608 290.981c-3.163 12.62-4.608 23.341-4.608 33.672 0 74.722 60.807 135.529 135.53 135.529 52.374 0 97.912-29.876 120.47-73.457 22.558 43.58 68.096 73.457 120.471 73.457 74.722 0 135.529-60.808 135.529-135.529 0-10.3-1.416-20.721-4.428-32.858l-3.404-11.084c-2.44-9.969-6.867-21.715-13.644-36.111l-27.226 12.83c5.903 12.589 9.698 22.558 11.897 31.352l3.373 11.113c2.199 8.885 3.313 16.987 3.313 24.757 0 58.127-47.284 105.412-105.412 105.412s-105.412-47.315-105.412-105.412h-30.118c0 58.127-47.285 105.412-105.412 105.412s-105.412-47.315-105.412-105.412c0-7.801 1.145-16.143 3.493-25.51l3.012-9.517c2.831-8.644 7.078-18.612 13.282-31.111l-26.985-13.433c-6.867 13.854-11.626 25.088-14.998 35.328l-3.313 10.572zM255.97 21.88c-24.275 19.065-93.425 76.288-149.865 150.98l-24.004-18.191c72.102-95.382 161.25-161.19 164.984-163.93l8.975-6.565 8.915 6.626c3.885 2.861 95.985 71.5 166.731 163.78l-23.884 18.341c-55.658-72.553-127.067-131.494-151.853-151.040zM426.827 256.678l-85.293-60.236-85.293 60.236-85.323-60.236-85.444 60.205-94.148-66.319 17.348-24.636 76.8 54.151 85.444-60.265 85.323 60.236 85.293-60.236 85.293 60.236 76.469-54.091 17.408 24.576-93.876 66.38z" /> +<glyph unicode="&#xe636;" d="M421.647 347.392v-218.594c0-25.781-10.149-56.23-19.125-83.065-5.391-16.204-10.993-32.918-10.993-40.087v-22.588c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v22.588c0 12.047 5.541 28.612 12.559 49.604 7.8 23.492 17.558 52.676 17.558 73.548v218.594c0 8.283-6.204 14.547-14.396 14.547-8.373 0-15.42-6.325-15.692-14.095 0-0.091-0.060-0.18-0.060-0.271l0.030-116.254c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059l-0.030 123.061c0 0.15 0.091 0.271 0.091 0.452v42.345c0 6.988-4.216 14.547-13.433 14.547-8.252 0-15.902-6.325-16.384-13.553-0.030-0.392-0.301-0.753-0.361-1.174v-134.927c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.716-15.059 15.059v147.456c0 0.662 0.301 1.265 0.392 1.897v23.943c0 7.861-7.259 14.517-15.812 14.517-8.403 0-14.969-6.355-14.969-14.517v-26.082c0.060-0.452 0.271-0.844 0.271-1.325v0-147.456c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 138.3c0 0.12-0.090 0.211-0.12 0.332-0.994 7.168-7.469 12.589-15.059 12.589-8.403 0-15.209-6.536-15.209-14.547v-171.821c0-6.264-3.855-11.866-9.698-14.065-5.752-2.199-12.439-0.603-16.595 4.066l-33.642 37.767c-11.836 13.824-19.757 9.366-22.678 7.68-3.493-1.958-5.993-5.15-6.987-8.945-0.964-3.644-0.421-7.469 1.506-10.752l99.148-211.094c1.386-2.199 4.758-4.668 8.855-5.662 6.776-1.627 11.505-7.68 11.505-14.637v-26.654c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v16.444c-6.957 3.855-12.74 9.457-16.866 16.414l-99.117 211.125c-5.421 9.005-7.078 21.022-4.036 32.557 3.102 11.656 10.662 21.383 21.263 27.407 20.359 11.475 42.828 6.204 60.236-14.095l7.138-8.012v132.276c0 24.636 20.329 44.664 45.327 44.664 5.24 0 10.331-0.903 15.059-2.56 2.018 22.799 21.383 40.719 44.906 40.719 24.124 0 43.942-18.191 45.809-41.171 5.15 1.928 10.722 3.012 16.505 3.012 24.425 0 43.55-19.606 43.55-44.664v-7.891c4.909 1.777 10.18 2.74 15.661 2.74 24.938 0.030 44.484-19.577 44.484-44.635z" /> +<glyph unicode="&#xe637;" d="M459.053 316.762l-35.78-242.868c-3.554-18.432-11.716-26.503-17.649-32.406-5.752-5.723-9.577-9.517-9.577-28.1v-30.329c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v30.329c0 28.762 8.373 39.424 18.492 49.453 4.668 4.638 7.469 7.439 9.156 16.083l35.69 242.116c0.542 3.705 1.536 16.264-8.222 17.619-3.373 0.482-6.114-0.060-8.283-1.716-2.892-2.139-4.94-6.294-5.662-11.385l-14.969-99.87c-0.753-5.15-4.156-9.517-8.915-11.596s-10.27-1.506-14.577 1.476c-1.506-0.241-4.036 0.692-6.565 2.349-4.578 2.921-7.198 8.072-6.897 13.493l8.584 159.202c0.692 8.373-5.12 15.33-13.011 16.023-3.825 0.361-7.5-0.844-10.421-3.283-2.952-2.47-4.699-5.903-5.029-9.668l-13.945-144.023c-0.783-8.101-7.198-13.975-15.993-13.583-2.44 0.15-4.909 0.301-7.409 0.332-8.101 0.18-14.607 6.716-14.757 14.788l-3.464 184.29c0 8.072-6.325 14.396-14.095 14.396s-14.095-6.325-14.095-14.095l-3.554-198.355c-0.12-5.722-3.434-10.903-8.613-13.342-1.868-0.903-3.674-1.807-5.391-2.771-4.428-2.53-9.819-2.62-14.336-0.241-4.518 2.349-7.559 6.837-8.071 11.897l-15.511 160.497c-0.332 3.945-2.108 7.379-5 9.819-2.922 2.439-6.867 3.554-10.391 3.283-3.795-0.332-7.198-2.108-9.637-5.029-2.41-2.892-3.584-6.565-3.252-10.33l15.149-213.745c0.482-6.565-3.404-12.709-9.548-15.089-6.204-2.409-13.191-0.512-17.257 4.668l-46.713 58.82c-6.114 10.24-16.926 13.101-25.299 8.252-4.096-2.38-7.017-6.174-8.222-10.722-1.204-4.517-0.603-9.276 1.807-13.342l106.285-183.326c2.41-4.187 6.355-7.108 11.053-8.252 6.746-1.627 11.505-7.68 11.505-14.637v-20.781c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v10.541c-7.65 4.126-14.005 10.27-18.492 18.010l-106.316 183.326c-6.415 11.023-8.132 23.884-4.819 36.202 3.252 12.348 11.174 22.649 22.257 29.063 22.829 13.162 52.043 5.331 65.174-17.438l15.239-19.095-11.716 165.135c-1.024 11.505 2.59 23.010 10.18 32.106 7.589 9.036 18.311 14.607 30.088 15.661 11.957 1.084 23.341-2.62 32.436-10.24 4.397-3.704 7.921-8.101 10.541-12.981l0.422 22.678c0 24.154 19.847 43.972 44.212 43.972s44.212-19.848 44.212-44.243l0.421-22.468c2.651 4.909 6.204 9.337 10.632 13.071 9.125 7.65 20.721 11.324 32.467 10.24 24.425-2.139 42.526-23.732 40.388-48.128l-1.596-29.455c0.783 0.692 1.627 1.356 2.44 1.988 8.674 6.505 19.185 9.036 30.66 7.469 23.642-3.283 37.587-24.576 33.792-51.712z" /> +<glyph unicode="&#xe638;" d="M420.533 311.341v-176.007c0-23.401-11.535-37.376-19.968-47.556-7.048-8.553-10.722-13.342-10.722-20.901v-53.7c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v53.7c0 18.764 9.788 30.599 17.649 40.087 7.288 8.825 13.071 15.781 13.071 28.341v176.037c0 9.397-8.072 18.252-16.595 18.252-9.909 0-12.017-1.536-12.108-1.596-1.988-2.68-1.928-17.137-1.897-28.792 0.030-5.692 0.060-12.047-0.060-19.035-0.12-8.252-6.415-14.396-15.18-14.848-8.252 0.060-14.938 6.776-14.938 15.059v63.85c0 9.246-6.686 16.203-15.541 16.203-8.132 0-14.095-6.053-14.818-14.697v-60.325c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v0 60.566c0 0.091-0.060 0.181-0.060 0.301v23.281c0 1.988-0.421 19.336-14.276 19.336-13.553 0-15.601-12.108-15.601-19.336v-21.172c0-0.844-0.332-1.627-0.482-2.44v-78.125c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 80.836c-1.446 5.843-5.662 11.746-14.035 11.746-8.613 0-15.872-7.861-15.872-17.167v-100.894c0-0.211-0.18-0.392-0.18-0.602v-33.16c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.118c-5.3 1.928-12.981 3.494-17.378 2.5-3.554-0.692-7.138-3.825-9.367-8.162-1.777-3.404-4.156-10.451-0.271-19.185l51.14-111.947c0.482-1.054 0.813-2.139 1.054-3.252 1.686-8.283 9.397-13.733 17.709-12.981 4.186 0.542 8.463-0.904 11.655-3.764 3.162-2.861 5-6.927 5-11.204v-52.525c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v38.731c-16.143 4.187-29.184 16.896-33.34 33.882l-50.567 110.683c-6.626 14.938-6.234 31.412 0.964 45.387 6.445 12.439 17.709 21.353 30.148 23.883 6.325 1.295 14.878 0.934 23.341-0.783v21.685c0 0.301 0.15 0.572 0.18 0.874v55.717c0 26.082 20.661 47.284 45.989 47.284 6.024 0 11.806-1.204 17.047-3.373 5.994 19.396 22.076 31.834 43.159 31.834 20.118 0 35.9-12.709 41.834-31.955 5.361 2.259 11.234 3.493 17.438 3.493 20.751 0 37.888-13.372 43.58-32.286 5.512 1.204 11.113 1.476 16.143 1.476 25.359 0 46.743-22.137 46.743-48.369z" /> +<glyph unicode="&#xe639;" d="M240.941 359.529l-58.97 60.236h-181.971v-451.764h512v391.529h-271.059zM169.321 389.647l58.97-60.236h253.59v-61.048l-451.764 0.783v120.501h139.204zM30.117-1.882v240.911l451.764-0.783v-240.128h-451.764z" /> +<glyph unicode="&#xe63a;" d="M391.529 178.582v278.227l-357.767-139.113 357.767-139.113zM361.412 222.584l-244.585 95.112 244.585 95.141v-190.253zM451.764 480v-512h-30.118v512h30.118z" /> +<glyph unicode="&#xe63b;" d="M451.764 480v-512h-30.118v512h30.118zM45.989 450.605h345.54v-240.941h-346.052l87.673 119.025-87.16 121.916zM361.412 420.488h-256.844l65.807-92.040-65.295-88.666h256.332v180.706z" /> +<glyph unicode="&#xe63c;" d="M451.764 480v-512h-30.118v512h30.118zM150.107 449.882h240.941v-240.941h-150.107v-60.236h-210.823v240.941h119.988v60.236zM210.823 208.941h-60.236v150.588h-90.353v-180.706h150.588v30.118zM180.224 419.764v-30.118h0.482v-150.588h180.224v180.706h-180.706z" /> +<glyph unicode="&#xe63d;" d="M510.946 214.452c-38.671 98.394-141.161 164.533-254.946 164.533s-216.275-66.139-254.946-164.533c-1.385-3.524-1.385-7.469 0-10.993 38.701-98.425 141.161-164.563 254.946-164.563s216.245 66.108 254.946 164.532c1.415 3.554 1.415 7.469 0 11.023zM256 69.014c-99.328 0-188.808 55.988-224.648 139.927 35.81 83.938 125.29 139.927 224.648 139.927s188.837-55.989 224.648-139.927c-35.84-83.908-125.32-139.927-224.648-139.927zM256 318.66c-60.507 0-109.719-49.212-109.719-109.718s49.212-109.719 109.748-109.719c60.476 0 109.719 49.212 109.719 109.719s-49.243 109.719-109.749 109.719zM256 129.34c-43.911 0-79.631 35.719-79.631 79.601s35.749 79.601 79.631 79.601c43.882 0 79.601-35.719 79.601-79.601s-35.69-79.601-79.601-79.601zM256 249.811c-22.528 0-40.87-18.341-40.87-40.869s18.341-40.87 40.87-40.87 40.87 18.341 40.87 40.87-18.341 40.87-40.87 40.87zM256 198.189c-5.933 0-10.752 4.819-10.752 10.752s4.819 10.752 10.752 10.752 10.752-4.819 10.752-10.752-4.819-10.752-10.752-10.752z" /> +<glyph unicode="&#xe63e;" d="M131.283 300.62l-21.624 20.992 146.341 150.739 146.341-150.739-21.625-20.962-109.659 112.941v-324.277h-30.118v324.276l-109.659-112.971zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe63f;" d="M180.706 26.94v212.119h-30.118v-212.119l-109.809 109.809-21.293-21.293 146.161-146.161 146.191 146.191-21.293 21.293-109.839-109.839zM165.286 12.243h0.692l-0.332-0.361-0.362 0.361zM471.221 311.221l-109.809 109.839v-213.715h-30.118v213.715l-109.809-109.839-21.323 21.323 146.191 146.161 146.191-146.191-21.324-21.293z" /> +<glyph unicode="&#xe640;" d="M60.236 148.706h391.529v240.941h-391.529v-240.941zM90.353 359.529h331.294v-180.706h-331.294v180.706zM466.824 449.882h-421.647c-24.907 0-45.176-19.215-45.176-42.858v-305.814c0-23.642 20.269-42.858 45.176-42.858h421.647c24.907 0 45.176 19.215 45.176 42.858v305.815c0 23.642-20.269 42.858-45.176 42.858zM481.882 101.211c0-7.048-6.776-12.74-15.059-12.74h-421.647c-8.282 0-15.059 5.692-15.059 12.74v305.815c0 7.048 6.776 12.74 15.059 12.74h421.647c8.283 0 15.059-5.692 15.059-12.74v-305.815zM150.588 28.236h210.823v-30.118h-210.823v30.118z" /> +<glyph unicode="&#xe641;" d="M511.97 449.882h-67.976c0.030 5.060 0.241 9.879 0.241 15.059v15.059h-376.471v-15.059c0-4.819 0.121-10.029 0.15-15.059h-67.885l-0.030-15.029c-0.090-32.708 1.867-66.228 5.873-99.69 10.601-88.455 38.279-190.976 84.179-213.444 5.843-2.892 11.897-4.337 17.95-4.337 7.168 0 14.427 2.048 21.293 6.204l6.294 4.216c25.088-38.46 59.332-64.421 105.351-69.21v-60.476h-88.938v-30.118h210.824v30.118h-91.769v60.145c42.616 4.488 77.854 28.16 105.201 69.632l7.048-4.668c6.505-3.916 13.462-5.843 20.51-5.843 6.053 0 12.168 1.445 18.131 4.367 45.899 22.468 73.577 124.988 84.179 213.444 4.005 33.43 5.963 66.981 5.873 99.689l-0.030 14.999zM120.109 153.705l-6.897-4.638c-3.373-1.988-6.144-2.108-9.879-0.301-23.642 11.596-54.453 80.565-67.554 190.012-3.252 27.106-5.090 54.272-5.541 80.986h38.34c2.921-88.064 15.451-194.801 53.971-269.733l-2.439 3.675zM256 87.236c-136.734 0-156.582 242.447-158.028 362.647h316.055c-1.476-142.185-25.238-362.647-158.028-362.647zM476.22 338.779c-13.132-109.447-43.911-178.417-67.554-190.012-3.704-1.837-6.505-1.747-9.276-0.091l-7.529 5.029-3.493-5.24c32.497 61.38 51.411 152.576 55.145 271.3h38.279c-0.482-26.714-2.319-53.88-5.572-80.986z" /> +<glyph unicode="&#xe642;" d="M380.265 276.917l-122.971 200.975-126.826-201.036-135.5 115.441 52.374-394.18h417.28l52.345 393.788-136.704-114.989zM73.698 28.236l-4.005 30.118h372.586l-4.005-30.118h-364.574zM446.284 88.471h-380.567l-30.57 230.009 102.279-87.1 119.476 189.44 115.983-189.5 104.026 87.522-30.63-230.37z" /> +<glyph unicode="&#xe643;" d="M512 434.824v-240.007c0-24.908-20.269-45.176-45.176-45.176h-15.3v30.118h15.3c8.313 0 15.059 6.776 15.059 15.059v240.007c0 8.283-6.747 15.059-15.059 15.059h-421.647c-8.313 0-15.059-6.776-15.059-15.059v-240.007c0-8.283 6.746-15.059 15.059-15.059h45.177v-87.1l53.579 47.255 19.908-22.588-103.605-91.407v123.724h-15.059c-24.907 0-45.176 20.269-45.176 45.176v240.007c0 24.907 20.269 45.176 45.176 45.176h421.647c24.907 0 45.176-20.269 45.176-45.176zM422.25 192.678v-91.648c0-24.908-20.269-45.176-45.176-45.176h-15.059v-92.281l-110.442 92.281h-25.69c-24.907 0-45.177 20.269-45.177 45.176v91.648c0 24.908 20.269 45.177 45.177 45.177h151.19c24.908 0 45.176-20.269 45.176-45.177zM392.132 192.678c0 8.283-6.747 15.059-15.059 15.059h-151.19c-8.313 0-15.059-6.776-15.059-15.059v-91.648c0-8.283 6.746-15.059 15.059-15.059h36.653l69.361-58.007v58.007h45.176c8.313 0 15.059 6.776 15.059 15.059v91.648z" /> +<glyph unicode="&#xe644;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176z" /> +<glyph unicode="&#xe645;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176zM90.353 389.647h331.294v-30.118h-331.294v30.118zM90.353 329.412h331.294v-30.118h-331.294v30.118zM90.353 269.177h180.706v-30.118h-180.706v30.118z" /> +<glyph unicode="&#xe646;" d="M277.293 224l200.162-200.162-21.293-21.293-200.162 200.162-200.162-200.162-21.293 21.293 200.162 200.162-200.192 200.162 21.293 21.293 200.192-200.162 200.162 200.162 21.293-21.293-200.162-200.162z" /> +<glyph unicode="&#xe647;" d="M362.044 352.482v-255.94h-30.118v255.94c0 32.858-24.064 68.247-76.921 68.247-58.459 0-74.060-42.888-74.060-68.247v-244.585h0.211v-43.882c0-18.673 20.871-36.322 42.948-36.322 25.419 0 47.194 20.57 47.194 37.376v8.132h-0.091l0.241 229.406c0 26.323-7.439 26.323-14.035 26.323-11.113 0-16.475-1.054-16.475-24.787v-154.986h-30.118v154.986c0 13.583 0 54.904 46.592 54.904 20.149 0 44.152-9.788 44.152-56.471l-0.211-193.656h0.060v-43.882c0-35.328-36.864-67.493-77.312-67.493-38.912 0-73.065 31.051-73.065 66.44v2.228h-0.211v286.268c0 47.375 32.588 98.364 104.177 98.364 70.264-0.030 107.038-49.483 107.038-98.364z" /> +<glyph unicode="&#xe648;" d="M492.544 121.721l-21.293-21.293-215.251 215.221-215.22-215.221-21.293 21.293 236.514 236.514 236.544-236.514z" /> +<glyph unicode="&#xe649;" d="M397.764 224.844l-236.544-236.544-21.293 21.293 215.22 215.22-215.22 215.281 21.293 21.293 236.544-236.544z" /> +<glyph unicode="&#xe64a;" d="M156.822 224.874l215.221-215.251-21.293-21.293-236.514 236.544 236.544 236.514 21.293-21.293-215.251-215.221z" /> +<glyph unicode="&#xe64b;" d="M492.544 327.153l-236.574-236.544-236.514 236.544 21.293 21.293 215.19-215.221 215.281 215.251 21.324-21.323z" /> +<glyph unicode="&#xe64c;" d="M464.354 426.572l-266.029-406.137-148.119 132.096 20.058 22.468 122.007-108.845 246.905 376.923 25.178-16.505z" /> +<glyph unicode="&#xe64d;" d="M421.647 306.492h30.118v-308.375h-421.647v421.647h252.777v-30.118h-222.66v-361.412h361.412v278.257zM146.191 234.661l-21.323-21.324 103.424-103.424 228.502 346.714-25.148 16.595-208.173-315.874-77.282 77.312z" /> +<glyph unicode="&#xe64e;" d="M179.441 389.647v30.118h-87.823v-30.118h-91.618v-361.412h512v361.412h-332.559zM481.882 58.353h-451.764v210.824h197.482c-10.391-17.8-16.775-38.22-16.775-60.236 0-66.44 54.031-120.471 120.471-120.471s120.471 54.031 120.471 120.471c0 22.016-6.385 42.436-16.776 60.236h46.893v-210.823zM421.647 208.941c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353 40.538 90.353 90.353 90.353 90.353-40.538 90.353-90.353zM410.142 299.294c-21.203 18.492-48.55 30.118-78.848 30.118s-57.645-11.625-78.848-30.118h-222.328v60.236h451.764v-60.236h-71.74z" /> +<glyph unicode="&#xe64f;" d="M496.007 413.079h-58.036c-8.794 0-15.993-7.048-15.993-15.692v-20.089l-331.144-121.374v8.132c0 12.951-10.782 23.522-24.004 23.522h-42.828c-13.222 0-24.004-10.572-24.004-23.522v-141.192c0-12.921 10.782-23.522 24.004-23.522h42.828c13.192 0 24.004 10.601 24.004 23.522v9.969l31.142-5.692c-0.692-4.909-1.144-9.819-1.144-14.788 0-57.133 47.013-103.635 104.779-103.635 49.905 0 91.257 33.973 101.798 80.776l94.57-17.348v-19.848c0-8.644 7.198-15.692 15.993-15.692h58.036c8.795 0 15.993 7.048 15.993 15.692v345.088c0 8.644-7.198 15.692-15.993 15.692zM225.612 38.837c-41.171 0-74.662 32.979-74.662 73.517 0 3.132 0.813 6.174 1.204 9.276l145.769-26.745c-7.951-32.587-37.195-56.049-72.313-56.049zM481.882 66.726h-29.786v30.509l-391.379 71.77v-39.514h-30.599v128h30.599v-44.695l391.379 143.45v26.715h29.786v-316.236z" /> +<glyph unicode="&#xe650;" d="M479.262 426.331l-195.764-286.118-24.847 16.986 195.764 286.118 24.847-16.986zM271.059 58.594c0-33.22-27.016-60.236-60.236-60.236-6.114 0-16.203-0.452-16.293-0.452h-164.262l137.125 103.334c4.518 3.132 25.871 17.589 43.429 17.589 33.22 0 60.235-27.015 60.235-60.236zM240.941 58.594c0 16.595-13.523 30.118-30.118 30.118-5.27 0-17.529-6.114-25.691-11.836l-64.844-48.881h73.276c1.898 0.091 11.324 0.482 17.257 0.482 16.595 0 30.118 13.523 30.118 30.118z" /> +<glyph unicode="&#xe651;" d="M210.823 88.471v45.176h30.118v-15.059h30.117v15.059h30.118v-45.176h-90.353zM512 148.706h-30.118v-180.706h-451.764v180.706h-30.117v240.941h108.906c28.25 55.115 84.48 90.353 147.094 90.353s118.875-35.268 147.095-90.353h108.905v-240.941zM143.631 389.647h224.798c-24.847 37.135-66.56 60.236-112.399 60.236s-87.552-23.13-112.399-60.236zM451.764 148.706h-391.529v-150.588h391.529v150.588zM481.882 359.529h-451.764v-180.706h451.764v180.706z" /> +<glyph unicode="&#xe652;" d="M431.074 419.404h-215.401l-70.204-211.245h50.176l-60.536-182.272 285.606 242.477h-87.462l97.822 151.040zM338.733 238.245l-141.161-119.838 39.815 119.838h-50.146l50.146 151.040h138.3l-97.822-151.040h60.868z" /> +<glyph unicode="&#xe653;" d="M356.292 239.059l-115.23-217.841-26.624 14.065 91.859 173.659h-153.871l147.576 219.226 24.967-16.836-115.983-172.273h147.305z" /> +<glyph unicode="&#xe654;" d="M271.059 419.764v60.236h-30.118v-60.236h-210.823v-301.176h451.764v301.176h-210.823zM451.764 148.706h-391.529v240.941h391.529v-240.941zM105.412 88.471h301.176v-30.118h-77.824l45.297-70.053-25.299-16.354-55.868 86.408h-21.836v-90.353h-30.118v90.353h-21.444l-56.29-86.438-25.238 16.414 45.598 70.024h-78.156v30.118z" /> +<glyph unicode="&#xe655;" d="M391.529 359.529v72.101c0 26.654-22.197 48.369-49.483 48.369h-171.641c-27.256 0-49.453-21.715-49.453-48.369v-72.101h-90.835v-391.529h451.764v391.529h-90.353zM151.070 431.631c0 10.060 8.674 18.252 19.335 18.252h171.641c10.692 0 19.365-8.192 19.365-18.252v-72.101h-210.341v72.101zM451.764-1.882h-391.529v240.941h391.529v-240.941zM451.764 269.177h-391.529v60.236h60.717v-19.365h30.117v19.365h210.341v-19.365h30.118v19.365h60.236v-60.236z" /> +<glyph unicode="&#xe656;" d="M409.69 138.195l-21.263 21.324 49.514 49.423h-166.882v-166.882l49.423 49.514 21.324-21.263-85.805-85.986-85.805 85.986 21.323 21.263 49.423-49.514v166.882h-166.882l49.513-49.423-21.263-21.324-85.986 85.805 85.986 85.805 21.263-21.324-49.513-49.423h166.882v166.882l-49.423-49.514-21.323 21.263 85.805 85.986 85.805-85.986-21.324-21.263-49.423 49.514v-166.882h166.882l-49.514 49.423 21.263 21.324 85.986-85.805-85.986-85.805z" /> +<glyph unicode="&#xe657;" d="M350.63 116.691l21.564-21.022-116.194-119.115-116.194 119.085 21.564 21.022 79.571-81.529v377.736l-79.571-81.558-21.564 21.052 116.194 119.085 116.194-119.085-21.564-21.022-79.571 81.529v-377.765l79.571 81.589z" /> +<glyph unicode="&#xe658;" d="M503.447 224l-119.085-116.194-21.022 21.564 81.529 79.571h-377.736l81.558-79.571-21.022-21.564-119.115 116.194 119.085 116.194 21.022-21.564-81.528-79.571h377.765l-81.558 79.571 21.022 21.564 119.085-116.194z" /> +<glyph unicode="&#xe659;" d="M481.762 138.104l0.12-139.987-140.017 0.12 0.030 30.118 88.546-0.091-174.441 174.411-174.441-174.442 88.546 0.091 0.030-30.118-140.017-0.091 0.12 140.017 30.117-0.030-0.090-88.516 174.441 174.411-174.441 174.442 0.090-88.516-30.117-0.030-0.12 139.987 140.017-0.12-0.030-30.118-88.546 0.091 174.441-174.442 174.441 174.442-88.546-0.091-0.030 30.118 140.017 0.12-0.12-140.017-30.118 0.030 0.091 88.516-174.441-174.411 174.442-174.442-0.091 88.516 30.118 0.030z" /> +<glyph unicode="&#xe65a;" d="M481.882 449.973v-271.149h-30.118v219.768l-310.724-310.121-21.293 21.324 310.663 310.061h-220.34v30.118h271.812z" /> +<glyph unicode="&#xe65b;" d="M370.206 88.471l-310.724 310.122v-219.768h-30.117v271.149h271.812v-30.118h-220.34l310.663-310.061-21.293-21.324z" /> +<glyph unicode="&#xe65c;" d="M256 305.529l131.132-131.132-21.293-21.293-109.839 109.839-109.809-109.809-21.293 21.293 131.102 131.102zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65d;" d="M206.427 355.132l131.102-131.132-131.132-131.132-21.293 21.293 109.839 109.839-109.839 109.809 21.323 21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65e;" d="M326.897 333.809l-109.839-109.809 109.809-109.809-21.293-21.293-131.102 131.102 131.132 131.132 21.293-21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65f;" d="M365.809 294.897l21.293-21.293-131.102-131.132-131.132 131.102 21.293 21.293 109.839-109.809 109.809 109.839zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe660;" d="M256 297.096l206.427-206.427-21.293-21.293-185.133 185.133-185.103-185.103-21.293 21.293 206.396 206.396zM256 400.369l185.103-185.103 21.293 21.293-206.396 206.427-206.427-206.427 21.323-21.293 185.103 185.103z" /> +<glyph unicode="&#xe661;" d="M290.454 224l-206.427-206.427-21.293 21.293 185.103 185.133-185.103 185.103 21.293 21.324 206.427-206.427zM229.918 430.426l-21.293-21.323 185.103-185.103-185.103-185.103 21.293-21.293 206.396 206.396-206.396 206.427z" /> +<glyph unicode="&#xe662;" d="M240.549 224l185.103-185.103-21.293-21.293-206.396 206.396 206.427 206.427 21.293-21.293-185.133-185.133zM279.793 409.133l-21.293 21.293-206.427-206.426 206.427-206.427 21.293 21.293-185.103 185.133 185.103 185.133z" /> +<glyph unicode="&#xe663;" d="M256 159.428l-206.427 206.427 21.293 21.293 185.133-185.103 185.103 185.103 21.293-21.293-206.396-206.426zM256 56.124l-185.103 185.133-21.323-21.293 206.427-206.427 206.427 206.427-21.293 21.293-185.133-185.133z" /> +<glyph unicode="&#xe664;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h90.353v-30.118h30.118v30.118h60.235v-150.588h150.588v-301.176h-331.294zM150.588 239.059h30.118v-30.117h-30.118v30.118zM180.706 239.059v30.118h30.118v-30.118h-30.118zM180.706 299.294v30.118h30.118v-30.118h-30.118zM150.588 299.294h30.118v-30.117h-30.118v30.117zM150.588 359.529h30.118v-30.117h-30.118v30.117zM180.706 359.529v30.118h30.118v-30.118h-30.118zM150.588 419.764h30.118v-30.118h-30.118v30.118zM180.706 197.226c-33.22 0-60.236-27.015-60.236-60.236s27.016-60.236 60.236-60.236c1.868 0 3.644 0.211 6.596 0.603 19.456 2.139 36.684 13.704 46.11 30.901 5 9.125 7.53 18.793 7.53 28.732 0 33.22-27.016 60.236-60.236 60.236zM206.999 122.684c-4.698-8.584-13.282-14.366-22.95-15.42l-3.373-0.421c-16.595 0-30.088 13.523-30.088 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118c0-4.788-1.295-9.608-3.825-14.276z" /> +<glyph unicode="&#xe665;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM31.352 208.941h88.456c1.325-30.841 6.355-61.169 15.451-90.353h-78.396c-14.486 27.286-23.371 57.916-25.509 90.353zM119.808 239.059h-88.456c2.139 32.436 11.023 63.066 25.51 90.353h78.306c-9.066-29.184-14.065-59.512-15.36-90.353zM167.063 329.412h177.573c9.939-29.064 15.721-59.392 17.137-90.353h-211.847c1.386 30.961 7.198 61.29 17.137 90.353zM149.925 208.941h211.877c-1.476-30.961-7.259-61.289-17.228-90.353h-177.423c-9.969 29.063-15.781 59.392-17.227 90.353zM391.921 208.941h89.69c-2.139-32.437-11.023-63.067-25.51-90.353h-79.631c9.096 29.184 14.125 59.512 15.45 90.353zM391.921 239.059c-1.295 30.84-6.295 61.169-15.36 90.353h79.541c14.457-27.286 23.341-57.916 25.51-90.353h-89.69zM436.766 359.529h-70.897c-11.806 28.763-27.588 55.959-46.683 81.317 47.526-13.764 88.486-42.767 117.579-81.317zM273.288 449.039c24.817-27.015 44.695-57.224 59.392-89.51h-153.66c14.667 32.256 34.515 62.434 59.332 89.45 5.994 0.452 11.987 0.904 18.131 0.904 5.662 0 11.234-0.452 16.805-0.844zM192.241 440.456c-18.944-25.239-34.666-52.315-46.381-80.926h-69.692c28.763 38.159 69.18 66.981 116.074 80.926zM76.168 88.471h69.782c11.776-28.642 27.558-55.748 46.592-80.986-47.013 13.884-87.552 42.737-116.374 80.986zM238.713-0.979c-24.877 27.015-44.815 57.194-59.572 89.45h153.419c-14.757-32.286-34.695-62.494-59.603-89.51-5.452-0.392-10.933-0.844-16.474-0.844-6.024 0-11.897 0.452-17.769 0.904zM318.856 7.063c19.155 25.359 35.057 52.615 46.893 81.408h71.017c-29.154-38.641-70.234-67.674-117.911-81.408z" /> +<glyph unicode="&#xe666;" d="M328.313 92.988l29.425-6.415c-15.209-69.813-75.625-118.573-146.914-118.573-83.034 0-150.588 67.554-150.588 150.588 0 68.367 46.11 128.271 112.188 145.649l7.65-29.124c-52.827-13.915-89.721-61.831-89.721-116.525 0-66.44 54.031-120.471 120.471-120.471 57.013 0 105.321 39.002 117.489 94.87zM481.882 24.591v-30.118h-56.26l-28.762 124.024h-185.464l-16.384 243.411c-25.51 7.017-44.423 30.148-44.423 57.856 0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236c0-28.25-19.577-51.803-45.809-58.308l8.132-120.802 109.388 27.136 7.228-29.244-114.597-28.401 4.156-61.5h181.248l28.762-124.024h32.316zM210.823 389.647c16.625 0 30.118 13.523 30.118 30.118s-13.493 30.118-30.118 30.118-30.118-13.523-30.118-30.118 13.493-30.118 30.118-30.118z" /> +<glyph unicode="&#xe667;" d="M0 480v-120.471h512v120.471h-512zM481.882 389.647h-451.764v60.236h451.764v-60.236zM0 178.824h512v120.471h-512v-120.471zM30.117 269.177h451.764v-60.236h-451.764v60.236zM0-1.882h512v120.471h-512v-120.471zM30.117 88.471h451.764v-60.236h-451.764v60.236z" /> +<glyph unicode="&#xe668;" d="M150.588 480v-120.471h361.412v120.471h-361.412zM481.882 389.647h-301.176v60.236h301.176v-60.236zM150.588 178.824h361.412v120.471h-361.412v-120.471zM180.706 269.177h301.176v-60.236h-301.176v60.236zM150.588-1.882h361.412v120.471h-361.412v-120.471zM180.706 88.471h301.176v-60.236h-301.176v60.236zM0 359.529h120.471v120.471h-120.471v-120.471zM30.117 449.882h60.236v-60.236h-60.236v60.236zM0 178.824h120.471v120.471h-120.471v-120.471zM30.117 269.177h60.236v-60.236h-60.236v60.236zM0-1.882h120.471v120.471h-120.471v-120.471zM30.117 88.471h60.236v-60.236h-60.236v60.236z" /> +<glyph unicode="&#xe669;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM301.176 480v-210.823h210.824v210.823h-210.823zM481.882 299.294h-150.588v150.588h150.588v-150.588zM0-32h210.823v210.823h-210.823v-210.823zM30.117 148.706h150.588v-150.588h-150.588v150.588zM301.176-32h210.824v210.823h-210.823v-210.823zM331.294 148.706h150.588v-150.588h-150.588v150.588z" /> +<glyph unicode="&#xe66a;" d="M210.823 359.529h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.236h180.706zM451.764 359.529h-180.706v-60.236h30.118v30.118h60.236v-240.941h-30.118v-30.118h90.353v30.118h-30.118v240.941h60.236v-30.118h30.118v60.236h-30.118z" /> +<glyph unicode="&#xe66b;" d="M512-1.882v-30.118h-512v30.118h512zM240.911 428.559v-340.088h30.118v340.149l109.839-109.839 21.293 21.293-146.161 146.161-146.191-146.161 21.293-21.293 109.809 109.779z" /> +<glyph unicode="&#xe66c;" d="M451.764 449.882v-30.118h-30.118v-194.53c0-91.317-74.3-165.647-165.647-165.647s-165.647 74.33-165.647 165.647v194.53h-30.117v30.118h90.353v-30.118h-30.118v-194.53c0-74.722 60.808-135.529 135.529-135.529s135.529 60.808 135.529 135.53v194.53h-30.118v30.118h90.353zM60.236-1.882h391.529v30.118h-391.529v-30.118z" /> +<glyph unicode="&#xe66d;" d="M512 389.647h-331.294v-90.353h-86.528l-35.84-120.47h-58.338v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.016-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v360.719zM116.645 269.177h64.060v-90.353h-90.956l26.895 90.353zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66h180.706v210.823h271.059v-300.484z" /> +<glyph unicode="&#xe66e;" d="M271.059 419.012v30.87h45.176v30.118h-120.471v-30.118h45.177v-30.87c-117.519-7.83-210.823-105.652-210.823-225.13 0-124.567 101.316-225.882 225.882-225.882s225.882 101.316 225.882 225.882c0 119.476-93.305 217.299-210.824 225.13zM256-1.882c-107.942 0-195.764 87.823-195.764 195.764s87.823 195.764 195.764 195.764 195.764-87.823 195.764-195.764-87.823-195.764-195.764-195.764zM271.059 208.941h120.471v-30.118h-150.588v120.471h30.117v-90.353z" /> +<glyph unicode="&#xe66f;" d="M286.118 449.882v-15.059c0-16.625-13.523-30.118-30.118-30.118s-30.118 13.493-30.118 30.118v15.059h-105.412v-451.764h105.412v15.059c0 16.625 13.523 30.118 30.118 30.118s30.118-13.493 30.118-30.118v-15.059h105.412v451.764h-105.412zM197.662 419.764c6.716-25.932 30.328-45.177 58.338-45.177s51.621 19.245 58.338 45.177h47.074v-180.706h-210.823v180.706h47.074zM314.338 28.236c-6.686 25.932-30.298 45.176-58.338 45.176s-51.621-19.245-58.338-45.176h-47.074v180.706h210.824v-180.706h-47.074z" /> +<glyph unicode="&#xe670;" d="M462.848 187.106c2.5-6.114 3.976-14.035 3.976-24.305 0-15.842-7.228-29.244-18.703-37.135 4.156-7.048 6.144-15.089 6.144-23.13 0-16.926-9.427-31.353-23.642-38.791 2.409-5.662 3.825-12.649 3.885-21.233 0.060-13.523-3.885-24.396-11.776-32.316-8.313-8.342-20.089-12.589-34.966-12.589h-169.412c-22.708 0-38.34 12.168-49.785 21.082-6.596 5.12-12.83 9.999-17.167 9.999h-63.308c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h63.308c14.667 0 25.811-8.674 35.66-16.324 9.728-7.56 18.914-14.728 31.292-14.728h169.412c6.385 0 11.234 1.295 13.613 3.704 2.048 2.048 3.072 5.723 3.042 10.902-0.091 13.161-2.771 15.993-30.931 15.993h-3.192c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h37.888c9.246 0 15.962 5.933 15.962 14.095 0 13.553-13.523 15.571-21.594 15.571h-22.588c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h43.279c9.969 0 13.493 7.529 13.493 14.577 0 14.818 0 14.818-13.221 15.209-1.536 0.030-3.132 0.151-4.699 0.211h-32.406c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h29.575c0.211 0 0.392 0.12 0.603 0.12h19.004c8.885 0 16.143 6.837 16.143 15.209s-7.228 15.209-16.143 15.209h-134.114c-4.488 0-8.734 1.988-11.596 5.452-2.861 3.464-4.036 8.012-3.192 12.409l15.661 82.341c1.868 8.222 7.168 31.533 0.994 41.863-1.596 2.68-5.481 5.542-10.24 5.542 0 0 0 0 0 0-5.903 0-11.957-4.729-17.046-13.252l-97.612-157.636c-2.74-4.428-7.589-7.138-12.8-7.138h-77.372c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h68.999l93.004 150.287c14.336 24.094 32.979 27.738 42.767 27.738 0 0 0 0 0.030 0 14.607 0 28.762-7.951 36.081-20.209 10.963-18.341 7.168-43.52 2.62-63.428l-12.137-63.97h115.923c25.51 0 46.26-20.329 46.26-45.327 0.030-14.998-7.469-28.341-18.974-36.593z" /> +<glyph unicode="&#xe671;" d="M438.754 193.852c0-8.313-6.747-15.059-15.059-15.059h-69l-93.003-150.287c-14.366-24.094-32.979-27.738-42.767-27.738 0 0-0.030 0-0.030 0-14.607 0-28.762 7.951-36.111 20.209-10.963 18.372-7.168 43.55-2.62 63.428l12.137 63.97h-115.923c-25.51 0-46.23 20.329-46.23 45.327 0 16.505 9.035 30.991 22.528 38.912-4.608 6.294-7.529 13.703-7.529 21.956 0 15.842 7.228 29.244 18.703 37.135-4.156 7.077-6.144 15.119-6.144 23.161 0 17.317 9.878 31.985 24.606 39.303-4.005 7.71-4.879 15.541-4.879 20.781 0 28.070 17.499 44.815 46.773 44.815h169.412c22.709 0 38.37-12.168 49.784-21.082 6.596-5.12 12.83-9.999 17.137-9.999h63.337c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059h-63.337c-14.668 0-25.811 8.674-35.659 16.324-9.698 7.62-18.884 14.757-31.262 14.757h-169.412c-14.065 0-16.655-4.969-16.655-14.697 0-4.759 0-15.872 30.931-15.872h3.162c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-37.888c-9.246 0-15.932-5.933-15.932-14.095 0-13.553 13.523-15.571 21.594-15.571h22.588c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-43.249c-9.939 0-13.493-7.53-13.493-14.577 0-5.060 11.023-13.764 21.233-15.451h29.094c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-29.606c-0.211 0-0.391-0.12-0.603-0.12h-19.004c-8.885 0-16.113-6.837-16.113-15.209s7.228-15.209 16.113-15.209h134.114c4.488 0 8.734-1.988 11.595-5.452 2.861-3.464 4.036-8.012 3.192-12.409l-15.661-82.341c-1.868-8.222-7.168-31.503-0.994-41.863 1.596-2.651 5.482-5.541 10.24-5.541 5.903 0 11.957 4.728 17.047 13.252l97.551 157.636c2.74 4.428 7.589 7.138 12.8 7.138h77.372c8.403 0 15.119-6.747 15.119-15.059z" /> +<glyph unicode="&#xe672;" d="M421.647 419.764v-90.353h-30.118v60.236h-120.471v-361.412h49.483v-30.118h-129.084v30.118h49.483v361.412h-120.471v-60.236h-30.117v90.353h331.294z" /> +<glyph unicode="&#xe673;" d="M512-1.882v-30.118h-512v30.118h512zM156.702 239.781l126.615-91.136 168.448 188.265v-68.788h30.118v121.525h-121.555v-30.118h71.259l-152.697-170.616-124.356 89.57-131.674-119.146 20.209-22.317 113.634 102.762z" /> +<glyph unicode="&#xe674;" d="M155.588 214.875l-131.644 119.145 20.179 22.317 113.634-102.791 126.615 91.136 168.448-188.236v68.819h30.118v-121.555h-121.555v30.118h71.259l-152.667 170.617-124.386-89.57zM0-1.882v-30.118h512v30.118h-512z" /> +<glyph unicode="&#xe675;" d="M320.632 84.074l21.293-21.293-85.925-85.956-85.956 85.956 21.293 21.293 49.604-49.604v113.604h30.118v-113.604l49.574 49.604zM240.941 413.531v-113.604h30.117v113.604l49.574-49.574 21.293 21.293-85.925 85.925-85.956-85.925 21.293-21.293 49.604 49.573zM0 239.059v-30.117h512v30.118h-512z" /> +<glyph unicode="&#xe676;" d="M66.469 239.059h113.604v-30.117h-113.604l49.574-49.574-21.293-21.293-85.925 85.925 85.956 85.956 21.293-21.293-49.604-49.604zM417.25 309.956l-21.293-21.293 49.574-49.604h-113.604v-30.118h113.604l-49.574-49.574 21.293-21.293 85.925 85.925-85.925 85.956zM240.941-32h30.117v512h-30.118v-512z" /> +<glyph unicode="&#xe677;" d="M180.706 301.553h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.235h180.706zM481.882 419.764h-301.176v-77.613h30.118v47.495h120.471v-361.412h-30.118v-30.118h90.353v30.118h-30.118v361.412h120.471v-47.495h30.117v77.613h-30.118z" /> +<glyph unicode="&#xe678;" d="M256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.792-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.792 75.294-75.294-33.792-75.294-75.294-75.294zM271.059 359.529h-30.118v90.353h30.118v-90.353zM240.941 88.471h30.117v-90.353h-30.118v90.353zM481.882 239.059v-30.117h-90.353v30.118h90.353zM120.471 208.941h-90.353v30.118h90.353v-30.118zM362.496 309.203l-21.293 21.293 63.88 63.88 21.293-21.293-63.88-63.88zM149.504 138.797l21.293-21.293-63.88-63.88-21.293 21.293 63.88 63.88zM362.496 138.797l63.88-63.88-21.293-21.293-63.88 63.88 21.293 21.293zM149.504 309.203l-63.88 63.88 21.293 21.293 63.88-63.88-21.293-21.293z" /> +<glyph unicode="&#xe679;" d="M251.603 370.191l146.161-146.191-146.191-146.191-21.293 21.293 109.839 109.839h-340.118v30.118h340.089l-109.809 109.809 21.323 21.324zM481.882 480v-512h30.118v512h-30.118z" /> +<glyph unicode="&#xe67a;" d="M512 208.911h-340.089l109.809-109.809-21.293-21.293-146.191 146.191 146.191 146.191 21.293-21.293-109.869-109.869h340.149v-30.118zM0-32h30.117v512h-30.117v-512z" /> +<glyph unicode="&#xe67b;" d="M451.764 449.401c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.118c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.117v-206.216c0-162.786 210.884-240.941 219.889-244.164l5-1.837 5.030 1.747c9.036 3.102 221.846 77.914 221.846 245.097v205.372h-30.118zM60.236 243.215v126.614c22.076-25.058 54.422-40.9 90.353-40.9 36.020 0 68.246 16.053 90.353 41.231v-334.728c-49.965 22.498-180.706 92.371-180.706 207.781zM451.764 244.028c0-117.308-129.295-185.615-180.706-208.173v334.336c22.106-25.178 54.332-41.231 90.353-41.231 35.93 0 68.276 15.812 90.353 40.87v-125.802z" /> +<glyph unicode="&#xe67c;" d="M30.117 480v-512h451.764v512h-451.764zM451.764-1.882h-391.529v451.764h60.236v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.177-45.176s45.177 20.269 45.177 45.176c0 19.607-12.619 36.172-30.118 42.406v32.889h90.353v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h90.353v-32.889c-17.498-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h60.236v-451.764zM150.588 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM271.059 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM391.529 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059z" /> +<glyph unicode="&#xe67d;" d="M512 374.588c0 68.458-131.916 105.412-256 105.412s-256-36.954-256-105.412c0-4.487 0.723-9.577 2.409-15.059h-2.409v-286.118c0-68.457 131.916-105.412 256-105.412s256 36.954 256 105.412v286.118h-2.409c1.687 5.481 2.409 10.572 2.409 15.059zM256 449.882c129.295 0 225.882-39.755 225.882-75.294 0-11.987-11.685-25.148-32.918-37.014-42.737-23.974-114.868-38.279-192.964-38.279s-150.227 14.306-192.964 38.279c-21.233 11.867-32.919 25.028-32.919 37.014 0 35.539 96.588 75.294 225.882 75.294zM256-1.882c-129.295 0-225.882 39.755-225.882 75.294v49.182c5.27-4.066 11.053-8.162 18.191-12.137 47.044-26.323 124.687-42.044 207.691-42.044 10.39 0 20.691 0.241 30.81 0.723 71.108 3.343 135.68 18.281 176.851 41.322v0c0 0.030 0.030 0.030 0.030 0.030 7.108 4.005 12.95 8.072 18.191 12.137v-49.212c0-35.539-96.587-75.294-225.882-75.294zM448.964 136.749c-42.767-23.943-114.868-38.25-192.964-38.25-9.758 0-19.456 0.241-28.973 0.663-66.68 3.072-126.585 16.625-163.99 37.557v0c-21.203 11.926-32.919 25.088-32.919 37.075v49.212c5.27-4.066 11.084-8.162 18.221-12.137 47.014-26.323 124.657-42.044 207.661-42.044s160.648 15.721 207.661 42.044c7.138 3.976 12.95 8.072 18.221 12.137v-49.212c0-11.987-11.716-25.148-32.918-37.045zM448.933 237.161c-42.737-23.944-114.839-38.25-192.934-38.25s-150.196 14.306-192.934 38.25c-21.233 11.867-32.949 25.058-32.949 37.045v49.212c5.27-4.096 11.053-8.162 18.191-12.168 47.044-26.353 124.657-42.074 207.691-42.074s160.647 15.721 207.691 42.074c7.138 4.006 12.921 8.072 18.191 12.168v-49.212c0-11.987-11.716-25.178-32.949-37.044z" /> +<glyph unicode="&#xe67e;" d="M220.070 273.332c0 58.609-47.676 106.285-106.285 106.285-58.579 0-106.255-47.676-106.255-106.285 0-58.579 47.676-106.255 106.255-106.255 22.107 0 42.647 6.837 59.663 18.402-37.075-104.508-120.169-116.766-124.476-117.339l3.705-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.392 0.030c0.030 0.813 0.241 1.566 0.241 2.41zM113.784 197.165c-41.984 0-76.138 34.154-76.138 76.137s34.154 76.168 76.138 76.168c42.014 0 76.168-34.183 76.168-76.168s-34.154-76.137-76.168-76.137zM503.988 270.923c0.030 0.813 0.241 1.596 0.241 2.409 0 58.609-47.676 106.285-106.255 106.285s-106.255-47.676-106.255-106.285c0-58.579 47.676-106.255 106.255-106.255 22.106 0 42.647 6.837 59.663 18.402-37.045-104.508-120.17-116.766-124.476-117.339l3.704-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.421 0.030zM397.974 197.165c-41.984 0-76.137 34.154-76.137 76.137s34.154 76.168 76.137 76.168 76.137-34.183 76.137-76.168-34.154-76.137-76.137-76.137z" /> +<glyph unicode="&#xe67f;" d="M396.62 250.684c-22.106 0-42.676-6.837-59.693-18.432 37.044 104.569 120.2 116.856 124.507 117.399l-3.704 29.877c-1.536-0.181-154.383-21.203-167.544-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.707 106.285-106.285 106.285zM396.62 68.262c-42.014 0-76.137 34.154-76.137 76.137s34.154 76.137 76.137 76.137 76.137-34.154 76.137-76.137-34.154-76.137-76.137-76.137zM112.429 250.684c-22.106 0-42.647-6.837-59.663-18.432 37.044 104.569 120.169 116.856 124.476 117.399l-3.704 29.877c-1.536-0.181-154.353-21.203-167.575-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.646 106.285-106.255 106.285zM112.429 68.262c-42.014 0-76.138 34.154-76.138 76.137s34.153 76.137 76.138 76.137 76.138-34.154 76.138-76.137-34.124-76.137-76.138-76.137z" /> +<glyph unicode="&#xe680;" d="M431.586 239.059l-56.5 131.825-103.544-294.641-120.923 394.842-71.379-232.026h-79.24v-30.118h101.466l49.092 159.503 118.964-388.608 108.333 308.103 33.852-78.998h100.292v30.118z" /> +<glyph unicode="&#xe681;" d="M512 299.294h-90.594v54.754l-135.62 125.952h-195.674v-180.706h-90.112v-240.941h90.353v-93.364h331.294v93.365h90.353v240.941zM300.935 424.825l70.325-65.295h-70.325v65.295zM120.23 449.882h150.588v-120.47h120.471v-30.118h-271.059v150.588zM391.529-4.894h-271.059v150.588h271.059v-150.588zM481.882 88.471h-60.236v87.341h-331.294v-87.341h-60.236v180.706h451.764v-180.706zM331.475 88.471h-180.887v30.118h180.887v-30.118zM271.059 28.236h-120.471v30.118h120.471v-30.118zM90.353 208.941h-30.117v30.118h30.117v-30.118zM150.588 208.941h-30.118v30.118h30.118v-30.118z" /> +<glyph unicode="&#xe682;" d="M481.882 193.882c0-124.567-101.316-225.882-225.882-225.882s-225.882 101.316-225.882 225.882c0 105.351 74.572 198.144 177.333 220.642l6.445-29.425c-89.028-19.486-153.66-99.9-153.66-191.217 0-107.942 87.823-195.764 195.764-195.764s195.764 87.823 195.764 195.764c0 91.196-64.542 171.611-153.48 191.187l6.476 29.425c102.641-22.619 177.122-115.38 177.122-220.612zM271.059 480h-30.118v-301.176h30.118v301.176z" /> +<glyph unicode="&#xe683;" d="M90.353 359.529v-151.010c0-82.793 74.33-150.167 165.647-150.167s165.647 67.373 165.647 150.167v151.010h-331.294zM391.529 208.519c0-66.198-60.808-120.049-135.53-120.049s-135.53 53.851-135.53 120.049v120.892h271.059v-120.892zM211.305 389.647h-30.118v90.353h30.118v-90.353zM330.812 389.647h-30.118v90.353h30.118v-90.353zM240.941 58.353h30.117v-90.353h-30.118v90.353zM331.294 239.059h-150.588v30.118h150.588v-30.118zM331.294 178.824h-150.588v30.118h150.588v-30.118z" /> +<glyph unicode="&#xe684;" d="M451.313 210.658l30.058-2.018c-7.921-118.061-106.918-210.522-225.37-210.522-124.567 0-225.882 101.316-225.882 225.882 0 117.609 91.769 216.546 208.956 225.25l2.228-30.027c-101.526-7.53-181.067-93.275-181.067-195.223 0-107.942 87.823-195.764 195.764-195.764 102.671 0 188.446 80.113 195.313 182.423zM512 254.148v-15.059l-15.089-0.512h-225.34v241.453l15.089-0.030c124.266-0.271 225.34-101.617 225.34-225.852zM481.461 268.695c-6.716 95.473-83.606 172.965-179.772 180.555v-180.555h179.772z" /> +<glyph unicode="&#xe685;" d="M481.882 449.099h-331.535c-65.686 0-119.115-53.428-119.115-119.115s53.428-119.085 119.115-119.085h90.594v-212.781h30.118v420.864h60.687v-420.864h30.118v420.864h120.019v30.118zM240.941 240.987h-90.594c-49.092 0-88.998 39.906-88.998 88.968 0 49.092 39.906 88.998 88.998 88.998h90.594v-177.965z" /> +<glyph unicode="&#xe686;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM120.471 171.836v-83.365h30.117v83.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v85.233h-30.118v-85.233c-22.227-6.566-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM135.53 246.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.522-23.522-23.522-23.522 10.541-23.522 23.522 10.541 23.522 23.522 23.522zM240.941 235.836v-147.365h30.117v147.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v21.233h-30.118v-21.233c-22.227-6.565-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM256 310.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.552-23.522-23.552-23.522 10.572-23.522 23.552 10.541 23.522 23.522 23.522zM376.471 75.911c29.575 0 53.639 24.064 53.639 53.639 0 24.335-16.354 44.664-38.581 51.23v178.748h-30.118v-178.748c-22.227-6.565-38.58-26.925-38.58-51.23 0-29.575 24.064-53.639 53.639-53.639zM376.471 153.103c12.981 0 23.522-10.572 23.522-23.522s-10.572-23.522-23.522-23.522-23.522 10.572-23.522 23.522 10.541 23.522 23.522 23.522z" /> +<glyph unicode="&#xe687;" d="M256.512 481.054l-256.512-97.009v-322.048l256-96.015 256 96.015v322.018l-255.488 97.039zM454.295 373.745l-77.884-29.214-197.482 74.963 77.553 29.334 197.813-75.084zM256 299.385l-198.204 74.331 78.577 29.696 197.3-74.902-77.673-29.124zM30.117 351.909l210.823-79.059v-269.011l-210.823 79.059v269.011zM271.059 3.84v269.011l210.824 79.059v-269.011l-210.823-79.059z" /> +<glyph unicode="&#xe688;" d="M444.687 345.706l12.68 27.286-216.425 100.472v-297.502c-15.39 13.372-35.238 21.745-57.163 21.745-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763 87.763 39.394 87.763 87.763c0 1.596-0.392 3.102-0.482 4.638v311.717l173.628-80.595zM183.778 52.3c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.871-57.645-57.645-57.645z" /> +<glyph unicode="&#xe689;" d="M180.706 472.019v-277.745c-15.42 13.433-35.328 21.865-57.344 21.865-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.285 0 85.684 37.677 87.431 84.54v0 0.18c0.030 1.024 0.301 1.988 0.301 3.072s-0.241 2.018-0.271 3.042v183.537l271.059-53.037v-140.529c-15.45 13.583-35.478 22.106-57.645 22.106-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.736 0 86.498 38.34 87.552 85.805l0.211-0.060v353.461l-331.294 64.813zM123.362 70.731c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645c30.75 0 55.718-24.245 57.344-54.573v-6.114c-1.626-30.358-26.594-54.603-57.344-54.603zM210.823 345.645v89.811l271.059-53.067v-89.75l-271.059 53.007zM424.237-1.882c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.841-57.645-57.645-57.645z" /> +<glyph unicode="&#xe68a;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 133.647c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529v180.706c0 74.722 60.808 135.529 135.53 135.529s135.53-60.808 135.53-135.529v-180.706zM256 374.588c-24.907 0-45.177-20.269-45.177-45.176v-60.236c0-24.907 20.269-45.176 45.177-45.176s45.176 20.269 45.176 45.177v60.236c0 24.907-20.269 45.176-45.177 45.176zM271.059 269.177c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v60.236c0 8.313 6.746 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-60.236z" /> +<glyph unicode="&#xe68b;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 314.353v-15.059h-120.471v149.052c67.584-7.589 120.471-64.421 120.471-133.994zM240.941 448.346v-149.052h-120.471v15.059c0 69.572 52.886 126.404 120.471 133.993zM256-1.882c-74.722 0-135.53 60.808-135.53 135.53v135.529h271.059v-135.529c0-74.722-60.808-135.529-135.53-135.529z" /> +<glyph unicode="&#xe68c;" d="M322.831 191.563v0l-0.301 0.301c-0.392 0.332-0.663 0.723-1.084 1.024l-0.091-0.12-50.296 38.611v171.882c34.334-6.566 60.236-35.057 60.236-69.15l15.029-1.807 15.089 1.807c0 50.598-39.424 92.22-90.353 99.268v46.622h-30.118v-46.622c-50.929-7.047-90.353-48.67-90.353-99.268 0-28.371 12.679-55.356 34.666-74.481l-0.15-0.151 1.204-0.933c0 0 0 0 0 0v0l54.633-41.984v-171.821c-34.334 6.565-60.236 35.057-60.236 69.15h-30.118c0-50.597 39.424-92.22 90.353-99.268v-46.652h30.118v46.652c50.929 7.048 90.353 48.67 90.353 99.268 0 30.298-14.125 58.398-38.581 77.673zM205.463 281.796c-15.721 13.433-24.756 32.436-24.756 52.315 0 34.093 25.901 62.584 60.236 69.15v-148.721l-35.478 27.256zM271.059 44.74v148.661l33.25-25.57c17.077-13.462 26.986-33.009 26.986-53.94 0-34.093-25.901-62.584-60.236-69.15z" /> +<glyph unicode="&#xe68d;" d="M256 118.588c74.722 0 135.529 60.808 135.529 135.53v90.353c0 69.602-52.887 126.404-120.471 133.994v1.536h-30.118v-1.536c-67.584-7.59-120.471-64.392-120.471-133.994v-90.353c0-74.722 60.807-135.53 135.53-135.53zM180.706 417.988v-58.459h30.118v79.752c9.397 4.488 19.456 7.529 30.118 9.065v-88.817h30.117v88.817c10.661-1.536 20.721-4.548 30.118-9.065v-79.752h30.118v58.459c18.582-19.004 30.118-44.906 30.118-73.517v-15.059h-210.823v15.059c0 28.612 11.535 54.543 30.118 73.517zM150.588 299.294h210.823v-45.176c0-58.127-47.284-105.412-105.412-105.412s-105.412 47.284-105.412 105.412v45.177zM451.764 269.177v-97.883c0-62.253-60.808-112.941-135.529-112.941h-45.176v-90.353h-30.118v90.353h-45.177c-74.722 0-135.53 50.688-135.53 112.941v97.882h30.118v-97.882c0-45.688 47.285-82.823 105.412-82.823h120.47c58.127 0 105.412 37.135 105.412 82.823v97.882h30.118z" /> +<glyph unicode="&#xe68e;" d="M481.882 389.647v-60.236h-451.764v60.236h451.764zM30.117 178.824h451.764v60.236h-451.764v-60.236zM30.117 28.236h451.764v60.236h-451.764v-60.236z" /> +<glyph unicode="&#xe68f;" d="M481.882 419.764v-60.236h-331.294v60.236h331.294zM150.588 208.941h331.294v60.236h-331.294v-60.236zM150.588 58.353h331.294v60.236h-331.294v-60.236zM60.236 419.764c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 269.177c-16.625 0-30.117-13.463-30.117-30.118s13.492-30.117 30.117-30.117 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 118.588c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118z" /> +<glyph unicode="&#xe690;" d="M316.205 346.338l-147.637 42.707-168.569 0.603v-331.294h161.069l156.491-44.544 164.322 48.339v332.529l-165.677-48.339zM180.706 354.198l120.47-34.846v-269.553l-120.471 34.304v270.095zM30.117 359.529h120.47v-271.571l-120.471 0.512v271.059zM451.764 84.676l-120.471-35.449v270.125l120.471 35.148v-269.824z" /> +<glyph unicode="&#xe691;" d="M451.764 359.529v-2.078l-0.392 1.747-30.57-6.656c-4.187 54.302-49.212 97.34-104.568 97.34-55.447 0-100.563-43.219-104.629-97.642l-30.9 6.716v0.572h-180.706v-331.294h161.069l156.492-44.544 164.322 48.339v327.5h-30.118zM316.236 419.764c41.532 0 75.294-33.792 75.294-75.294 0-54.392-51.772-126.765-75.294-156.822-23.522 30.058-75.294 102.43-75.294 156.822 0 41.502 33.762 75.294 75.294 75.294zM180.706 328.147l32.557-7.077c12.409-68.337 72.463-144.204 87.913-162.816v-138.601l-120.471 34.304v274.191zM30.117 329.412h120.47v-271.571l-120.471 0.512v271.059zM331.294 19.11v139.173c15.481 18.643 75.685 94.72 87.974 163.117l32.497 7.048v-273.89l-120.471-35.449zM357.135 341.971c0 22.558-18.341 40.9-40.9 40.9s-40.9-18.341-40.9-40.9 18.341-40.93 40.9-40.93 40.9 18.341 40.9 40.93zM305.453 341.971c0 5.964 4.849 10.782 10.782 10.782s10.782-4.849 10.782-10.782-4.849-10.812-10.782-10.812-10.782 4.849-10.782 10.812z" /> +<glyph unicode="&#xe692;" d="M30.117 208.941c0-66.44 51.532-120.471 114.838-120.471v-30.118c-79.932 0-144.956 67.554-144.956 150.588s65.024 150.588 144.956 150.588h127.367l-49.573 49.574 21.293 21.293 85.956-85.925-85.925-85.956-21.323 21.323 49.604 49.574h-127.397c-63.308 0-114.838-54.031-114.838-120.471zM367.044 359.529v-30.117c63.308 0 114.839-54.031 114.839-120.471s-51.531-120.471-114.839-120.471h-127.397l49.574 49.574-21.293 21.293-85.925-85.925 85.956-85.956 21.293 21.293-49.604 49.604h127.368c79.963 0 144.987 67.554 144.987 150.588s-65.024 150.588-144.956 150.588z" /> +<glyph unicode="&#xe693;" d="M256 464.941c-91.317 0-165.647-74.3-165.647-165.647 0-131.704 147.968-303.766 154.262-311.055l11.385-13.101 11.385 13.132c6.295 7.259 154.262 179.32 154.262 311.025 0 91.347-74.33 165.647-165.647 165.647zM256 21.76c-34.515 42.887-135.53 177.062-135.53 277.534 0 74.722 60.808 135.529 135.53 135.529s135.529-60.808 135.529-135.529c0-100.382-101.014-234.647-135.53-277.534zM256 385.461c-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM256 234.873c-33.22 0-60.236 27.016-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.016 60.236-60.236-27.015-60.236-60.236-60.236z" /> +<glyph unicode="&#xe694;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM90.353 344.471c0-24.908-20.269-45.177-45.176-45.177s-45.176 20.269-45.176 45.177 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 344.471c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 208.941h361.412v30.118h-361.412v-30.118zM90.353 224c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.177 20.269 45.177 45.176 45.177 45.176-20.269 45.176-45.177zM60.236 224c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 88.471h361.412v30.118h-361.412v-30.118zM90.353 103.529c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.176 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 103.529c0 8.283-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059z" /> +<glyph unicode="&#xe695;" d="M256 480c-91.317 0-165.647-78.818-165.647-175.676 0-70.897 29.034-110.532 54.633-145.498 19.185-26.142 35.72-48.731 35.72-80.505v-63.127c0-26.022 20.269-47.195 45.177-47.195h60.236c24.908 0 45.176 21.173 45.176 47.195v64.030c0 31.473 15.571 52.254 35.238 78.577 24.546 32.858 55.115 73.698 55.115 146.523 0 96.858-74.331 175.676-165.647 175.676zM286.118-1.882h-60.236c-8.282 0-15.059 7.65-15.059 17.077v49.182h90.353v-49.182c0-9.427-6.776-17.077-15.059-17.077zM342.408 175.842c-17.679-23.642-35.84-47.978-40.237-81.348h-92.522c-4.578 33.19-22.709 58.036-40.358 82.131-24.004 32.768-48.821 66.65-48.821 127.699 0 80.263 60.808 145.559 135.53 145.559s135.529-65.295 135.529-145.559c0-62.796-24.967-96.196-49.122-128.482z" /> +<glyph unicode="&#xe696;" d="M358.25 419.343l-171.399-391.108h23.974v-30.118h-90.353v30.118h33.461l171.399 391.108h-24.154v30.118h90.353v-30.118h-33.28z" /> +<glyph unicode="&#xe697;" d="M325.271 50.041v-30.118h-138.541v30.118h54.212v223.804h-52.706v30.117h82.823v-253.922h54.212zM240.58 358.174c25.54 0 46.14 20.661 46.14 46.14 0 25.51-20.63 46.2-46.14 46.2-25.57 0-46.201-20.691-46.201-46.2 0-25.48 20.66-46.14 46.201-46.14z" /> +<glyph unicode="&#xe698;" d="M512 239.059c0-66.439-54.031-120.47-120.471-120.47-36.051 0-69.572 16.022-92.582 43.731l-0.060-0.030-0.421 0.542c-0.332 0.421-0.783 0.692-1.144 1.144l0.12 0.091-109.447 134.988c-17.137 19.276-41.743 30.358-67.524 30.358-49.815 0-90.353-40.538-90.353-90.353 0-49.815 40.538-90.353 90.353-90.353 27.558 0 53.278 12.348 70.536 33.882l0.271-0.211 24.606 30.479 23.431-18.914-24.787-30.69-0.301 0.241c-22.98-28.522-57.133-44.906-93.756-44.906-66.439 0-120.471 54.031-120.471 120.471 0 66.44 54.031 120.471 120.471 120.471 33.732 0 65.837-14.366 88.636-39.183l0.241 0.18 1.265-1.566 111.375-137.337c17.257-20.872 42.436-32.918 69.541-32.918 49.815 0 90.353 40.538 90.353 90.353 0 49.815-40.538 90.353-90.353 90.353-25.48 0-49.694-10.902-66.861-29.786l-28.551-35.388-23.431 18.914 28.551 35.388-0.12 0.091c22.889 25.991 55.868 40.9 90.413 40.9 66.44 0 120.47-54.031 120.47-120.47z" /> +<glyph unicode="&#xe699;" d="M0 389.647v-361.412h512v361.412h-512zM481.882 58.353h-451.764v301.176h451.764v-301.176zM77.162 73.080l-30.117 0.663c0.994 43.068 42.105 79.872 99.659 90.865v9.819c-7.469 7.8-12.8 18.372-16.414 27.798-4.879 3.493-9.096 8.854-12.017 15.541-5.572 12.348-4.608 24.726 1.897 32.166-0.121 2.228-0.18 4.428-0.18 6.536l-0.060 5.541c-0.18 16.173-0.482 42.767 27.98 47.707 5.843 10.21 14.547 18.884 35.508 19.607 33.822 1.054 57.706-11.385 65.807-34.666 2.74-7.981 0.18-14.607-1.686-19.426-1.777-4.578-3.464-8.885-2.47-16.987 0.392-3.222 0.332-6.385 0.090-9.396 5.27-7.138 6.355-17.98 2.47-29.364-2.861-8.222-7.5-14.577-13.071-18.312-3.343-8.644-8.132-18.191-14.667-25.45v-11.354c57.495-11.294 97.22-47.315 98.214-90.594l-30.118-0.692c-0.692 30.75-36.442 57.464-85.022 63.518l-13.191 1.656v51.471l6.024 4.517c3.192 2.409 8.162 9.668 12.499 22.919l4.066 10.361 2.228 19.004c0.422 3.192 0.813 6.234 0.572 8.071-1.868 15.661 1.988 25.6 4.276 31.503 0.15 0.422 0.271 0.692 0.362 0.933-6.325 11.927-26.474 12.439-35.268 12.228-8.343-0.332-8.945-1.506-10.571-4.608-2.048-3.976-6.897-13.312-19.185-14.396-2.771-0.241-3.644-0.813-3.644-0.813-1.235-1.928-1.144-11.053-1.084-17.107l0.030-5.873c0-4.246 0.301-8.794 0.874-13.432l2.108-17.257 3.614-0.632 0.090-7.469c4.638-14.035 10.21-21.715 13.583-24.034l6.476-4.488v-50.808l-13.312-1.566c-48.549-5.692-85.654-33.069-86.347-63.699zM451.764 239.059h-150.588v30.118h150.588v-30.118zM421.647 178.824h-120.471v30.118h120.471v-30.118z" /> +<glyph unicode="&#xe69a;" d="M271.059 359.529h169.412l-108.695 120.471h-211.305v-120.471h120.471v-112.128h-33.882v-279.401h97.882v279.401h-33.882v112.128zM150.588 449.882h167.786l54.363-60.236h-222.148v60.236zM274.824-1.882h-37.647v219.166h37.647v-219.166z" /> +<glyph unicode="&#xe69b;" d="M421.647-1.882h-90.353v180.706h-150.588v-180.706h-90.353v271.059h-30.117v-301.176h391.529v301.176h-30.118v-271.059zM210.823-1.882v150.588h90.353v-150.588h-90.353zM505.856 285.048l-17.829-24.305-232.026 170.466-232.026-170.406-17.829 24.275 249.856 183.476 249.856-183.507z" /> +<glyph unicode="&#xe69c;" d="M310.543 33.325c0-27.046-21.986-49.031-49.062-49.031-27.166 0-49.122 21.986-49.122 49.031 0 27.106 21.956 49.092 49.122 49.092 27.046 0 49.062-21.986 49.062-49.092zM351.413 408.531c-15.42 19.426-43.49 42.587-89.841 42.587-123.422 0-127.85-113.182-127.88-114.327l30.118-0.783c0.090 3.463 3.313 84.992 97.762 84.992 34.334 0 54.964-16.956 66.228-31.172 16.716-21.083 21.082-45.418 18.793-55.206-8.764-37.014-30.449-56.531-53.399-77.192-28.16-25.329-57.224-51.501-57.224-107.159h30.118c0 42.225 20.841 61.019 47.255 84.781 24.214 21.805 51.652 46.501 62.555 92.702 4.488 19.095-2.5 53.007-24.486 80.775z" /> +<glyph unicode="&#xe69d;" d="M481.31 236.499c-5.783 135.319-104.478 243.501-225.31 243.501s-219.528-108.183-225.31-243.501c-17.77-6.054-30.69-22.769-30.69-42.617v-120.471c0-24.907 20.179-45.176 44.996-45.176h45.357v30.118h30.117v150.588h-30.118v30.118h-29.455c6.776 117.519 91.557 210.824 195.102 210.824s188.326-93.305 195.102-210.824h-29.455v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 19.848-12.921 36.563-30.69 42.617zM60.236 58.353h-15.239c-8.192 0-14.878 6.776-14.878 15.059v120.471c0 8.283 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 73.412c0-8.283-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.776 14.878-15.059v-120.471z" /> +<glyph unicode="&#xe69e;" d="M406.588 103.529c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 43.294c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059zM512 385.13l-88.034 94.87h-335.842l-88.124-92.973v-193.747h28.19l-28.19-35.298v-189.982h512v188.536l-31.503 36.743h31.503v191.85zM101.044 449.882h309.79l55.838-60.236h-422.701l57.073 60.236zM30.117-1.882v120.471h451.764v-120.471h-451.764zM479.051 148.706h-447.94l35.569 44.574h374.182l38.189-44.574zM30.117 223.397v136.132h451.764v-136.132h-451.764zM406.588 329.412c-24.907 0-45.176-20.269-45.176-45.177 0-24.877 20.269-45.147 45.176-45.147s45.176 20.269 45.176 45.147c0 24.908-20.269 45.177-45.176 45.177zM406.588 269.207c-8.283 0-15.059 6.746-15.059 15.029s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.029-15.059-15.029z" /> +<glyph unicode="&#xe69f;" d="M425.683 389.767h-339.305l-86.377-131.734v-199.8h512v197.843l-86.317 133.692zM102.671 359.65h306.598l58.488-90.594h-424.478l59.392 90.594zM30.117 88.35v150.588h451.764v-150.588h-451.764zM406.588 208.82c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 148.586c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059z" /> +<glyph unicode="&#xe6a0;" d="M236.092 311.010l-1.024-5.964 20.269 2.59c0.12 0 0.632 0.091 0.934 0.12l19.185-2.439-0.933 5.452c32.828 6.084 99.629 21.835 137.788 54.513 14.878 12.709 23.070 29.817 23.070 48.188s-8.192 35.478-23.070 48.219c-28.371 24.335-77.132 24.305-105.502 0-24.516-20.992-40.93-51.983-51.531-79.149-10.601 27.106-27.016 58.007-51.531 78.938-28.34 24.275-77.041 24.245-105.382 0-14.878-12.709-23.070-29.786-23.070-48.098 0-18.312 8.192-35.358 23.070-48.038 38.159-32.587 104.96-48.279 137.728-54.332zM326.385 438.799c8.764 7.5 20.51 11.626 33.159 11.626 12.62 0 24.425-4.126 33.159-11.626 8.101-6.897 12.529-15.902 12.529-25.329 0-9.397-4.428-18.372-12.529-25.299-31.082-26.594-88.214-40.81-119.447-46.923 7.379 26.745 23.582 72.252 53.127 97.551zM117.91 438.588c8.764 7.469 20.51 11.595 33.159 11.595 12.619 0 24.395-4.126 33.13-11.595 29.395-25.088 45.598-70.385 53.007-97.069-31.202 6.053-88.185 20.179-119.296 46.743-8.072 6.867-12.499 15.781-12.499 25.118 0 9.366 4.427 18.312 12.499 25.209zM512 299.294h-512v-120.47h30.117v-210.824h451.764v210.823h30.118v120.471zM210.101 269.177h90.534l32.106-175.978-49.634 20.63-39.183-36.292-33.822 191.639zM30.117 269.177h149.383l10.631-60.236h-160.015v60.236zM451.764-1.882h-391.529v180.706h135.228l28.371-160.918 65.536 60.687 82.884-34.485-24.546 134.716h104.056v-180.706zM481.882 208.941h-139.685l-10.993 60.236h150.679v-60.236z" /> +<glyph unicode="&#xe6a1;" d="M271.059 359.891v89.991h-30.118v-89.991c-107.339-3.163-240.941-38.611-240.941-74.903v-212.059c0-24.908 20.269-45.176 45.176-45.176h53.91l60.115 118.392c17.077-3.132 51.591-8.252 95.564-8.252 44.544 0 81.137 5.24 99.027 8.342l57.464-118.483h55.567c24.907 0 45.176 20.269 45.176 45.176v212.059c0 36.292-133.632 71.77-240.941 74.902zM481.882 72.93c0-8.283-6.776-15.059-15.059-15.059h-36.683l-59.512 122.579-11.625-2.56c-0.452-0.091-45.628-9.909-104.267-9.909-58.459 0-99.84 9.728-100.262 9.849l-11.565 2.801-62.284-122.73h-35.449c-8.282 0-15.059 6.776-15.059 15.059v208.263c15.119 13.162 101.797 45.719 210.823 48.519v-0.332h30.117v0.392c108.996-2.831 195.704-35.388 210.823-48.55v-208.324zM150.588 268.574h30.058v-30.118h-30.058v-30.72h-30.118v30.72h-30.118v30.117h30.118v30.72h30.118v-30.72zM376.471 208.339c24.908 0 45.176 20.269 45.176 45.177s-20.269 45.177-45.176 45.177-45.176-20.239-45.176-45.177 20.269-45.177 45.176-45.177zM376.471 268.574c8.283 0 15.059-6.776 15.059-15.059s-6.776-15.059-15.059-15.059-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059z" /> +<glyph unicode="&#xe6a2;" d="M16.264 480l194.56-277.956v-234.044h90.353v234.044l194.56 277.956h-479.473zM271.059 211.531v-213.413h-30.118v213.413l-166.852 238.351h363.821l-166.852-238.351z" /> +<glyph unicode="&#xe6a3;" d="M376.38 480h-195.674v-60.536h30.118v30.419h150.588v-120.47h120.471v-240.941h-120.983v-30.118h151.1v295.695l-135.62 125.952zM391.529 424.825l70.325-65.295h-70.325v65.295zM0 389.647v-421.647h331.294v295.695l-135.62 125.952h-195.674zM210.823 334.471l70.325-65.295h-70.325v65.295zM30.117-1.882v361.412h150.588v-120.471h120.47v-240.941h-271.059z" /> +<glyph unicode="&#xe6a4;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h180.706v-150.588h150.588v-301.176h-331.294z" /> +<glyph unicode="&#xe6a5;" d="M404.962 353.476l-156.492 90.383c-20.781 11.957-49.694 4.247-61.681-16.565l-180.706-313.012c-12.469-21.564-5.029-49.243 16.564-61.741l95.744-54.935 131.222 0.542 171.911 293.617c12.438 21.564 5.029 49.243-16.565 61.711zM232.298 28.205l-105.954-0.421-88.697 50.868c-7.198 4.187-9.668 13.372-5.511 20.601l82.823 143.481 181.519-104.81-64.18-109.719zM395.445 306.914l-83.757-143.059-181.669 104.9 82.823 143.481c2.68 4.638 7.71 7.53 13.071 7.53 2.65 0 5.18-0.663 7.5-1.988l156.492-90.353c7.198-4.186 9.668-13.402 5.541-20.51zM512 28.236v-30.118h-210.823v30.118h210.823z" /> +<glyph unicode="&#xe6a6;" d="M60.236 480v-512h391.529v512h-391.529zM141.403 359.529l-42.406 90.353h314.007l-42.466-90.353h-229.135zM122.308 329.412h118.634v-271.059h-120.531l-30.058-34.786v373.88l31.955-68.036zM134.174 28.236h243.712l25.962-30.118h-295.635l25.962 30.118zM391.71 58.353h-120.651v271.059h118.603l31.985 68.096v-373.911l-29.937 34.756z" /> +<glyph unicode="&#xe6a7;" d="M512-1.882v-30.118h-512v30.118h512zM402.191 213.339l-21.293 21.293-109.809-109.809v355.178h-30.118v-355.207l-109.839 109.869-21.323-21.323 146.191-146.161 146.191 146.161z" /> +<glyph unicode="&#xe6a8;" d="M501.188 317.094l-84.661 102.671h-145.468v60.236h-30.118v-60.236h-210.823v-210.823h210.823v-240.941h30.118v240.941h145.709l84.42 108.153zM271.059 239.059h-210.823v150.588h342.076l60.265-73.065-60.507-77.523h-131.012z" /> +<glyph unicode="&#xe6a9;" d="M271.059 299.294h141.402l58.368 77.192-58.609 73.397h-141.161v30.118h-30.118v-30.118h-180.706v-150.588h180.706v-60.236h-141.161l-58.609-73.397 58.368-77.192h141.402v-120.471h30.118v120.471h180.706v150.588h-180.706v60.235zM90.353 419.764h307.38l34.966-43.791-35.207-46.562h-307.14v90.353zM421.647 118.588h-307.14l-35.208 46.562 34.966 43.791h307.38v-90.353z" /> +<glyph unicode="&#xe6aa;" d="M512 133.647v-15.059h-185.765v30.118h155.166c-3.373 50.959-23.763 97.31-55.476 133.541l-24.275-24.275-21.293 21.293 24.154 24.154c-36.202 31.714-82.522 51.983-133.452 55.387v-89.63h-30.118v89.63c-50.929-3.404-97.25-23.673-133.421-55.387l23.974-23.974-21.293-21.293-24.094 24.094c-31.714-36.231-52.133-82.582-55.477-133.542h155.738v-30.118h-186.368v15.059c0 141.161 114.838 256 256 256s256-114.839 256-256zM316.236 133.647c0-33.22-27.015-60.236-60.236-60.236s-60.236 27.015-60.236 60.236c0 19.396 9.367 36.442 23.612 47.495l-62.705 109.327 26.112 14.969 64.482-112.429c2.861 0.421 5.722 0.873 8.734 0.873 33.22 0 60.236-27.015 60.236-60.236zM286.118 133.647c0 16.595-13.523 30.118-30.118 30.118s-30.118-13.523-30.118-30.118 13.523-30.118 30.118-30.118 30.118 13.523 30.118 30.118z" /> +<glyph unicode="&#xe6ab;" d="M90.353 389.647v-331.294h331.294v331.294h-331.294zM391.529 88.471h-271.059v271.059h271.059v-271.059z" /> +<glyph unicode="&#xe6ac;" d="M269.252 273.062l32.557 40.357-0.12 0.091c25.75 29.244 62.856 46.020 101.738 46.020h57.163l-49.574 49.573 21.293 21.293 85.925-85.925-85.956-85.956-21.293 21.293 49.604 49.604h-57.163c-29.786 0-58.157-12.8-78.156-34.906l-32.527-40.327-23.492 18.884zM176.219 157.861l-0.332 0.241c-20.089-25.088-50.085-39.514-82.311-39.514h-93.576v-30.118h93.576c41.231 0 79.661 18.402 105.502 50.477l0.332-0.271 28.34 35.117-23.401 18.944-28.13-34.876zM410.986 168.162l49.604-49.574h-57.163c-31.684 0-61.169 14.125-81.317 38.581l-128.572 158.57-0.301-0.241c-25.6 27.889-61.681 44.032-99.659 44.032h-93.576v-30.118h93.576c30.058 0 58.669-12.891 78.637-35.238l125.32-154.564-0.151-0.12c25.901-32.406 64.542-51.019 106.014-51.019h57.163l-49.574-49.574 21.293-21.293 85.956 85.956-85.956 85.956-21.293-21.353z" /> +<glyph unicode="&#xe6ad;" d="M90.353 398.923v-349.907l349.907 175.797-349.907 174.11zM120.471 350.253l252.446-125.591-252.446-126.825v252.416z" /> +<glyph unicode="&#xe6ae;" d="M90.353 28.236h120.471v391.529h-120.471v-391.529zM120.471 389.647h60.236v-331.294h-60.236v331.294zM301.176 419.764v-391.529h120.471v391.529h-120.471zM391.529 58.353h-60.236v331.294h60.236v-331.294z" /> +<glyph unicode="&#xe6af;" d="M90.353 406.634v-365.508l219.286 183.657-219.286 181.851zM120.471 342.543l142.125-117.851-142.125-119.025v236.875zM460.228 224.783l-194.56-162.936-19.365 23.13 166.852 139.716-166.762 138.3 19.245 23.19 194.59-161.4z" /> +<glyph unicode="&#xe6b0;" d="M202.361 224.783l219.286-183.628v365.478l-219.286-181.851zM391.529 105.668l-142.125 118.995 142.125 117.88v-236.875zM98.816 224.662l166.852-139.716-19.365-23.13-194.56 162.936 194.62 161.371 19.245-23.191-166.792-138.27z" /> +<glyph unicode="&#xe6b1;" d="M384 344.471c-17.408 0-34.515-3.705-50.929-11.053-26.774 26.292-62.494 41.171-99.659 41.171-59.212 0-110.954-35.84-132.428-90.413-54.302 2.228-100.984-42.797-100.984-97.822 0-53.971 43.911-97.882 97.882-97.882h286.117c70.565 0 128 57.435 128 128s-57.435 128-128 128zM384 118.588h-286.118c-37.376 0-67.764 30.389-67.764 67.764s30.389 67.764 67.764 67.764c3.764 0 7.349-0.572 10.933-1.144l13.101-2.168 3.795 12.709c14.396 48.429 57.676 80.956 107.7 80.956 32.316 0 63.308-14.366 84.962-39.364l7.981-9.216 10.661 5.873c15.149 8.342 30.931 12.589 46.983 12.589 53.971 0 97.882-43.911 97.882-97.882s-43.911-97.882-97.882-97.882z" /> +<glyph unicode="&#xe6b2;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 46.050 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM320.632 213.339l21.293 21.293-85.925 85.956-85.956-85.925 21.293-21.293 49.604 49.573v-234.707h30.118v234.707l49.574-49.604z" /> +<glyph unicode="&#xe6b3;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 45.508 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM271.059 66.485v232.81h-30.118v-232.81l-49.573 49.574-21.293-21.293 85.925-85.925 85.956 85.956-21.293 21.293-49.604-49.604z" /> +<glyph unicode="&#xe6b4;" d="M481.882 419.764v-451.764h-451.764v451.764h67.584v-30.118h-37.467v-391.529h391.529v391.529h-38.49v30.118h68.608zM391.529 329.412h-271.059v120.47h92.913c6.234 17.529 22.98 30.118 42.617 30.118s36.382-12.589 42.617-30.118h92.913v-120.47zM361.412 419.764h-90.353v15.059c0 8.313-6.747 15.059-15.059 15.059s-15.059-6.747-15.059-15.059v-15.059h-90.353v-60.236h210.823v60.236z" /> +<glyph unicode="&#xe6b5;" d="M512 179.305l-58.971-0.060-61.772 120.049h-239.405l-89.389-120.44-62.464-0.030v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.015-60.236 60.235-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v150.377zM419.178 179.215l-117.368-0.12v90.082h71.077l46.291-89.962zM166.972 269.177h104.719v-90.112l-171.701-0.151 66.982 90.262zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66l451.764 0.452v-90.112z" /> +<glyph unicode="&#xe6b6;" d="M421.647 419.764v30.118h-90.353v-30.118h-150.588v30.118h-90.353v-30.118h-90.353v-451.764h512v451.764h-90.353zM361.412 419.764h30.118v-60.236h-30.118v60.236zM120.471 419.764h30.117v-60.236h-30.118v60.236zM481.882-1.882h-451.764v268.68h451.764v-268.68zM30.117 296.915v92.732h60.236v-60.236h90.353v60.236h150.588v-60.236h90.353v60.236h60.236v-92.732h-451.764z" /> +<glyph unicode="&#xe6b7;" d="M499.712 445.305c-1.596 0.301-39.786 7.349-89.781 7.349-63.397 0-115.291-11.023-154.353-32.768-45.719 23.040-98.304 34.696-156.492 34.696-50.628 0-86.317-9.096-87.793-9.487l-11.294-2.952 0.030-418.816 18.794 4.849c0.331 0.060 33.732 8.524 80.263 8.524 43.58 0 83.456-7.228 119.266-21.173v-24.938h75.294v25.781c38.581 14.697 82.733 18.402 116.254 18.402 47.044 0 83.908-6.776 84.269-6.837l17.829-3.313v418.364l-12.288 2.319zM30.117 61.154v357.135c13.583 2.53 38.46 6.174 68.969 6.174 53.037 0 100.563-10.842 141.854-31.443v-354.666c-42.255 18.582-89.66 28.461-141.854 28.461-29.184 0-53.398-3.042-68.969-5.662zM481.882 60.22c-16.143 2.108-41.954 4.638-71.981 4.638-55.657 0-101.828-8.975-138.843-25.75v354.575c42.827 23.492 98.515 28.853 138.842 28.853 30.81 0 57.284-2.922 71.981-4.94v-357.376z" /> +<glyph unicode="&#xe6b8;" d="M461.161 54.588c-0.421 0.392-39.514 38.972-39.514 96.678v99.147c0 93.395-74.33 169.351-165.647 169.351s-165.647-75.957-165.647-169.351v-99.147c0-56.049-39.334-96.467-39.695-96.858l-25.389-25.69h462.517l-26.624 25.871zM91.919 58.835c13.372 20.841 28.552 53.127 28.552 92.431v99.147c0 76.77 60.807 139.234 135.529 139.234s135.529-62.464 135.529-139.234v-99.147c0-39.755 14.908-71.77 28.25-92.431h-327.861zM271.059 419.764h-30.118v30.118h30.118v-30.118zM271.059 28.236h30.118c0-24.908-20.269-45.176-45.176-45.176s-45.177 20.269-45.177 45.176h30.118c0-8.313 6.776-15.059 15.059-15.059s15.059 6.747 15.059 15.059z" /> +<glyph unicode="&#xe6b9;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM391.198 239.059c2.952 43.972 18.522 85.986 45.086 121.073 25.901-34.123 42.285-75.746 45.297-121.073h-90.383zM481.581 208.941c-3.012-45.327-19.396-86.98-45.327-121.103-26.534 35.117-42.105 77.132-45.026 121.103h90.353zM416.406 383.353c-32.949-41.291-52.194-91.558-55.326-144.293h-90.022v210.101c56.591-3.675 107.64-27.979 145.348-65.807zM240.941 449.099v-210.040h-89.148c-3.072 52.766-22.317 103.003-55.236 144.293 37.466 37.617 88.154 61.892 144.384 65.747zM31.352 239.059c3.012 45.327 19.396 86.98 45.327 121.103 26.534-35.087 42.075-77.101 45.026-121.103h-90.353zM121.675 208.941c-2.921-44.032-18.432-86.016-44.996-121.103-25.931 34.123-42.316 75.776-45.327 121.103h90.323zM96.527 64.647c32.979 41.291 52.194 91.527 55.266 144.293h89.148v-210.041c-56.23 3.855-106.917 28.13-144.414 65.747zM271.059-1.159v210.101h90.052c3.102-52.736 22.348-103.002 55.266-144.324-37.707-37.798-88.726-62.103-145.317-65.777z" /> +<glyph unicode="&#xe6ba;" d="M512-1.882v-30.118h-512v30.118h512zM60.236 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.117v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM361.412 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.118v361.412z" /> +<glyph unicode="&#xe6bb;" d="M512-1.882v-30.118h-512v30.118h512zM361.412 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.118v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM60.236 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.117v361.412z" /> +<glyph unicode="&#xe6bc;" d="M439.205 28.236v-30.118h-213.323c-91.316 0-165.647 74.3-165.647 165.647s74.331 165.647 165.647 165.647h87.703l-79.692 79.692 21.293 21.293 116.043-116.044-116.043-116.073-21.293 21.324 79.692 79.692h-87.702c-74.722 0-135.53-60.808-135.53-135.53s60.808-135.529 135.53-135.529h213.324z" /> +<glyph unicode="&#xe6bd;" d="M451.764 254.118c0-91.347-74.3-165.647-165.647-165.647h-87.702l79.692-79.692-21.293-21.293-116.043 116.043 116.074 116.073 21.293-21.293-79.721-79.721h87.702c74.722 0 135.529 60.808 135.529 135.53s-60.808 135.53-135.529 135.53h-213.323v30.118h213.323c91.347 0 165.647-74.3 165.647-165.647z" /> +<glyph unicode="&#xe6be;" d="M451.764 193.882v-165.647h-165.647v30.118h114.537l-310.302 310.302v-114.537h-30.117v165.647h165.647v-30.117h-113.935l309.7-309.7v113.935h30.118z" /> +<glyph unicode="&#xe6bf;" d="M512 419.764h-512v-120.471h30.117v-331.294h451.764v331.294h30.118v120.471zM451.764-1.882h-391.529v301.176h391.529v-301.176zM481.882 329.412h-451.764v60.236h451.764v-60.236zM180.706 148.706h151.070c33.22 0 60.236 27.015 60.236 60.236s-27.015 60.236-60.236 60.236h-151.070c-33.22 0-60.236-27.016-60.236-60.236s27.016-60.236 60.236-60.236zM180.706 239.059h151.070c16.625 0 30.118-13.493 30.118-30.117s-13.493-30.118-30.118-30.118h-151.070c-16.625 0-30.118 13.493-30.118 30.118s13.493 30.118 30.118 30.118z" /> +<glyph unicode="&#xe6c0;" d="M460.529 100.759l-47.284 94.178-94.178-47.224 13.493-26.955 56.35 28.281c-11.234-57.435-58.91-101.346-117.851-107.972v228.111h45.176v30.118h-45.176v31.654c34.334 6.988 60.236 37.376 60.236 73.758 0 41.532-33.792 75.294-75.294 75.294s-75.294-33.762-75.294-75.294c0-36.382 25.901-66.771 60.236-73.758v-31.654h-45.177v-30.118h45.177v-228.111c-58.88 6.626-106.556 50.477-117.82 107.821l56.019-28.13 13.493 26.956-94.178 47.224-47.285-94.178 26.925-13.523 19.606 39.093c20.871-67.614 83.938-116.916 158.298-116.916 74.21 0 137.216 49.092 158.178 116.465l19.426-38.641 26.925 13.523zM210.823 404.706c0 24.907 20.269 45.176 45.177 45.176s45.176-20.269 45.176-45.176-20.269-45.177-45.177-45.177-45.177 20.269-45.177 45.177z" /> +<glyph unicode="&#xe6c1;" d="M512 419.764v-30.118h-512v30.118h512zM90.353 269.177h421.647v30.117h-421.647v-30.117zM0 148.706h512v30.118h-512v-30.118zM210.823 28.236h301.177v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c2;" d="M512 419.764v-30.118h-512v30.118h512zM421.647 299.294h-421.647v-30.117h421.647v30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h301.176v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c3;" d="M512 419.764v-30.118h-512v30.118h512zM0 269.177h512v30.117h-512v-30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe6c4;" d="M512 419.764v-30.118h-512v30.118h512zM45.176 299.294v-30.117h421.647v30.117h-421.647zM0 148.706h512v30.118h-512v-30.118zM105.412 28.236h301.176v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c5;" d="M254.614 435.065l-248.23-436.947h499.38l-251.151 436.947zM254.765 374.347l198.927-346.112h-395.565l196.638 346.112zM271.059 150.573h-30.118v118.603h30.118v-118.603zM286.118 87.537c0-16.625-13.462-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.463 30.118 30.118 30.118 30.118-13.493 30.118-30.118z" /> +<glyph unicode="&#xe6c6;" d="M443.151 275.471c15.18 15.42 23.673 35.569 23.673 57.314 0 45.267-36.834 82.101-82.070 82.101-26.684 0-51.050-13.071-66.469-34.635-15.089 4.668-30.901 7.5-47.224 8.644v30.87h30.118v30.118h-90.353v-30.118h30.118v-30.87c-16.324-1.144-32.136-3.976-47.225-8.644-15.42 21.594-39.756 34.635-66.469 34.635-45.236 0-82.070-36.834-82.070-82.1 0-21.775 8.493-41.924 23.672-57.314-15.029-28.973-23.672-61.801-23.672-96.647 0-51.411 18.552-98.515 49.243-135.138l-38.701-51.591 24.094-18.070 35.9 47.887c37.316-33.401 86.377-53.911 140.288-53.911s102.972 20.51 140.288 53.911l35.9-47.887 24.094 18.070-38.701 51.591c30.69 36.623 49.243 83.727 49.243 135.138 0 34.846-8.644 67.674-23.673 96.647zM384.753 384.768c28.642 0 51.953-23.311 51.953-51.983 0-11.234-3.614-21.805-10.089-30.63-20.42 28.19-47.616 51.019-79.209 66.319 9.698 10.21 22.95 16.294 37.346 16.294zM75.294 332.785c0 28.642 23.311 51.983 51.953 51.983 14.396 0 27.648-6.084 37.346-16.264-31.594-15.3-58.76-38.159-79.21-66.319-6.475 8.825-10.090 19.365-10.090 30.599zM256-1.882c-99.659 0-180.706 81.046-180.706 180.706s81.047 180.706 180.706 180.706 180.706-81.047 180.706-180.706-81.046-180.706-180.706-180.706zM271.059 178.824h120.471v-30.118h-150.588v120.471h30.117v-90.353z" /> +<glyph unicode="&#xe6c7;" d="M421.647 419.764v60.236h-391.529v-512h391.529v60.236h60.236v391.529h-60.236zM60.236-1.882v451.764h60.236v-451.764h-60.236zM391.529-1.882h-240.941v451.764h240.941v-451.764zM451.764 58.353h-30.118v90.353h30.118v-90.353zM451.764 178.824h-30.118v90.353h30.118v-90.353zM421.647 299.294v90.353h30.118v-90.353h-30.118zM180.706 359.529h150.588v-30.117h-150.588v30.117zM180.706 299.294h120.47v-30.117h-120.471v30.117z" /> +<glyph unicode="&#xe6c8;" d="M351.382 480h-260.548v-59.754h-15.54c-24.907 0-45.176-20.269-45.176-45.176v-258.651l75.927-149.263 74.21 149.353v258.56c0 24.908-20.269 45.176-45.177 45.176h-14.125v29.636h210.341v-150.588h150.588v-301.177h-346.353v-30.118h376.471v352.135l-160.618 159.864zM117.7 58.293h-24.215l-33.25 65.356v176.128h30.118v-181.519h30.118v181.519h29.636v-176.219l-32.406-65.265zM150.107 375.070v-45.176h-89.871v45.176c0 8.282 6.776 15.059 15.059 15.059h59.753c8.313 0 15.059-6.777 15.059-15.059zM361.412 427.535l98.575-98.123h-98.575v98.123z" /> +<glyph unicode="&#xe6c9;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 419.764v-90.353h-451.764v90.353h451.764zM30.117 28.236v271.059h451.764v-271.059h-451.764zM210.823 359.529h-30.118v30.118h30.118v-30.118zM150.588 359.529h-30.118v30.118h30.118v-30.118zM90.353 359.529h-30.117v30.118h30.117v-30.118z" /> +<glyph unicode="&#xe6ca;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236 208.941h30.118v30.118h-30.117v-30.118zM120.471 208.941h30.117v30.118h-30.118v-30.118zM180.706 208.941h30.118v30.118h-30.118v-30.118zM301.176 208.941h30.118v30.118h-30.118v-30.118zM361.412 208.941h30.118v30.118h-30.118v-30.118zM421.647 208.941h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM240.941 389.647h30.117v30.118h-30.118v-30.118zM240.941 329.412h30.117v30.117h-30.118v-30.117zM240.941 269.177h30.117v30.117h-30.118v-30.117zM240.941 208.941h30.117v30.118h-30.118v-30.118zM240.941 148.706h30.117v30.118h-30.118v-30.118zM240.941 88.471h30.117v30.118h-30.118v-30.118zM240.941 28.236h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118z" /> +<glyph unicode="&#xe6cb;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM405.534 241.197c0.632-5.632 1.054-11.355 1.054-17.197s-0.421-11.565-1.054-17.197l-1.115-9.878-43.339-13.011c-0.753-1.957-1.536-3.885-2.409-5.813l21.413-39.815-6.174-7.771c-7.168-9.005-15.39-17.228-24.425-24.425l-7.771-6.204-39.815 21.444c-1.897-0.844-3.855-1.656-5.813-2.409l-12.981-43.309-9.849-1.144c-5.662-0.663-11.414-1.054-17.257-1.054s-11.595 0.392-17.257 1.054l-9.849 1.144-13.011 43.309c-1.958 0.753-3.885 1.536-5.813 2.409l-39.845-21.413-7.77 6.174c-9.005 7.168-17.227 15.39-24.395 24.425l-6.144 7.74 21.413 39.815c-0.874 1.957-1.656 3.885-2.41 5.843l-43.34 13.011-1.115 9.878c-0.632 5.632-1.054 11.354-1.054 17.197s0.421 11.565 1.054 17.197l1.115 9.879 43.34 13.011c0.753 1.958 1.536 3.885 2.41 5.813l-21.413 39.815 6.144 7.77c7.138 8.975 15.36 17.197 24.425 24.426l7.77 6.204 39.816-21.444c1.898 0.874 3.855 1.656 5.813 2.409l13.011 43.309 9.849 1.144c11.324 1.325 23.191 1.325 34.515 0l9.849-1.144 13.011-43.309c1.957-0.723 3.885-1.536 5.813-2.409l39.815 21.444 7.771-6.204c9.005-7.168 17.228-15.39 24.395-24.396l6.174-7.771-21.413-39.845c0.844-1.897 1.656-3.855 2.409-5.782l43.339-13.041 1.115-9.879zM376.471 224c0 1.356-0.030 2.71-0.091 4.066l-39.243 11.776-2.289 7.831c-1.566 5.27-3.704 10.481-6.355 15.42l-3.825 7.138 19.336 35.93c-1.868 1.988-3.795 3.945-5.813 5.813l-35.9-19.335-7.198 3.855c-4.94 2.651-10.149 4.819-15.45 6.385l-7.83 2.319-11.746 39.183c-2.68 0.12-5.452 0.12-8.132 0l-11.746-39.213-7.831-2.319c-5.361-1.596-10.541-3.734-15.42-6.355l-7.138-3.885-35.96 19.365c-2.018-1.897-3.946-3.825-5.813-5.813l19.335-35.93-3.855-7.138c-2.65-4.939-4.819-10.119-6.385-15.48l-2.319-7.8-39.183-11.746c-0.060-1.356-0.090-2.71-0.090-4.066s0.030-2.711 0.090-4.036l39.213-11.776 2.319-7.83c1.566-5.331 3.734-10.541 6.385-15.481l3.825-7.138-19.335-35.93c1.868-1.988 3.795-3.945 5.813-5.813l35.93 19.336 7.138-3.825c4.94-2.651 10.149-4.819 15.451-6.385l7.831-2.319 11.776-39.213c2.68-0.12 5.452-0.12 8.132 0l11.776 39.183 7.8 2.319c5.331 1.566 10.541 3.735 15.481 6.385l7.138 3.825 35.9-19.336c2.018 1.868 3.945 3.825 5.813 5.813l-19.336 35.93 3.825 7.138c2.651 4.94 4.819 10.12 6.385 15.481l2.319 7.8 39.183 11.776c0.060 1.385 0.091 2.74 0.091 4.096z" /> +<glyph unicode="&#xe6cc;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM255.94 177.529l-124.808 124.898-21.323-21.324 146.131-146.191 146.221 146.191-21.293 21.293-124.928-124.868z" /> +<glyph unicode="&#xe6cd;" d="M47.104 419.764c-25.721 0-46.682-20.781-46.682-46.321h-0.421v-329.457c0-25.54 20.932-46.321 46.682-46.321h406.348v49.844h58.97v372.254h-464.896zM46.682 27.813c-9.126 0-16.564 7.259-16.564 16.204v288.618c0.723-0.211 1.627-0.15 2.349-0.361 4.307-1.265 8.825-2.048 13.644-2.139 0.211 0 0.361-0.091 0.572-0.091h376.26v-91.407h-86.106c-25.962 0-47.074-20.269-47.074-45.176v-30.118c0-24.907 21.113-45.176 47.074-45.176h86.106v-90.353h-376.26zM336.805 148.284c-9.366 0-16.956 6.747-16.956 15.059v30.118c0 8.313 7.62 15.059 16.956 15.059h145.077v-60.236h-145.077zM481.882 77.659h-28.853v40.508h28.853v-40.508zM453.029 238.637v121.524h-405.925c-8.222 0-16.564 4.126-16.564 13.282 0.030 8.945 7.469 16.204 16.564 16.204h434.779v-151.010h-28.853z" /> +<glyph unicode="&#xe6ce;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 359.529h-8.072l-70.957 60.236h79.029v-60.236zM263.318 269.177l70.988 60.236h87.913l-70.988-60.236h-87.913zM204.891 359.529l-70.987 60.236h87.883l70.987-60.236h-87.883zM287.744 329.412l-70.988-60.236h-87.913l70.957 60.236h87.944zM339.365 359.529l-70.988 60.236h87.883l70.988-60.236h-87.883zM30.117 419.764h57.224l70.988-60.236h-128.211v60.236zM30.117 329.412h123.151l-70.987-60.236h-52.164v60.236zM481.882 28.236h-451.764v210.823h451.764v-210.823zM481.882 269.177h-84.089l70.957 60.236h13.132v-60.236z" /> +<glyph unicode="&#xe6cf;" d="M391.259 276.706v67.764c0 24.907-20.42 45.176-45.538 45.176h-225.25v15.059c0 8.313 6.776 15.059 15.059 15.059h166.882v30.118h-166.882c-24.907 0-45.177-20.269-45.177-45.176v-15.059h-44.815c-25.118 0-45.538-20.269-45.538-45.176v-60.266c0-24.907 20.42-45.177 45.538-45.177h15.18v-165.617c0-24.907 20.269-45.176 45.176-45.176h239.857c25.118 0 45.538 20.269 45.538 45.176v67.795l120.712-83.817v303.134l-120.741-83.817zM481.882 114.944l-120.742 83.817v-125.349c0-8.313-6.897-15.059-15.42-15.059h-239.827c-8.282 0-15.059 6.747-15.059 15.059v195.735h-45.297c-8.523 0-15.42 6.746-15.42 15.059v60.265c0 8.313 6.897 15.059 15.42 15.059h300.212c8.493 0 15.42-6.747 15.42-15.059v-125.38l120.712 83.847v-187.994z" /> +<glyph unicode="&#xe6d0;" d="M449.957 299.294c-31.082 19.486-66.68 30.118-103.605 30.118-23.432 0-46.050-4.337-67.433-12.168l77.372 77.372c6.114-3.072 12.89-4.969 20.179-4.969 24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176-45.176-20.269-45.176-45.176c0-6.626 1.506-12.891 4.096-18.553l-117.76-117.73c-2.44 0.421-4.94 0.753-7.53 0.753-24.907 0-45.177-20.269-45.177-45.177 0-2.56 0.332-5.060 0.753-7.53l-101.978-101.978c-5.662 2.59-11.897 4.096-18.523 4.096-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176c0 7.288-1.897 14.065-4.969 20.149l77.402 77.403c-7.891-21.534-12.197-44.363-12.197-67.433 0-44.243 18.432-82.372 30.118-102.129v-63.518h90.353v90.353h-70.355c-12.589 24.877-19.998 51.591-19.998 75.294 0 26.714 6.626 53.127 18.914 76.649 3.404-0.813 6.867-1.356 10.481-1.356 24.907 0 45.177 20.269 45.177 45.177 0 5.421-1.114 10.541-2.861 15.36 49.513 34.063 115.862 38.189 169.231 11.234v-71.771h90.353v90.353h-62.043zM376.471 449.882c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059-15.059 6.747-15.059 15.059 6.747 15.059 15.059 15.059zM45.176 88.471c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM210.823 28.236h30.118v-30.118h-30.118v30.118zM210.101 239.059c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM481.882 239.059h-30.118v30.118h30.118v-30.118z" /> +<glyph unicode="&#xe6d1;" d="M79.149 274.779c-2.771 0-6.596-0.091-9.005-0.512l-0.723-0.12-0.362-0.632c-12.288-22.528-36.743-88.365-40.629-98.063-8.433 0.603-19.667 0.572-19.667 11.264 0 7.771 27.227 71.379 30.991 81.829l0.723 1.988h-2.108c-2.53 0-4.999-0.15-7.409-0.332-2.259-0.15-4.397-0.301-6.476-0.301-5.482 0-22.317-0.662-24.335 12.86-0.813 5.602 1.506 11.716 4.186 14.697 0.512-7.349 11.957-7.017 15.059-7.017 6.837 0 21.293 2.861 30.449 4.036 10.632 1.356 22.558 4.458 33.521 4.458 10.993 0 18.974-6.686 18.974-15.842 0-3.192-1.024-6.716-2.981-10.149-5.813 1.325-14.366 1.837-20.209 1.837zM196.488 191.232c-6.234-1.476-14.065-0.783-14.065 12.047 0.060 15.661 17.257 33.822 25.841 33.822 1.536 0 6.053-1.114 5.060-6.114-5.27-26.594-29.516-22.468-27.678-25.509 8.734-14.517 51.531 7.048 47.375 37.587-1.386 10.421-7.68 17.438-19.697 17.438-22.287 0-47.797-33.1-52.315-57.464-9.125-9.276-19.486-8.613-20.269-8.524-0.632 0.873-0.662 2.62 0.392 6.114 1.868 6.144 6.174 15.51 11.113 23.793 4.638 7.74 9.487 15.812 9.487 21.775 0 7.198-4.246 10.843-12.559 10.843-10.873 0-30.87-13.312-30.87-13.312 0.783 6.355 20.992 47.224 20.992 52.736 0 6.445-2.922 10.873-10.933 10.873-2.078 0-8.162-2.078-11.656-3.343-3.343-25.721-16.655-46.954-21.925-58.73-9.849-21.956-20.751-44.935-20.751-54.513 0-9.036 8.704-17.679 18.1-18.070 8.433 31.865 29.034 66.44 43.159 66.44 0 0-16.293-33.942-16.293-49.483 0-7.65 1.626-15.51 13.643-15.51 0.060 0 0.12 0 0.18 0 10.873-1.115 22.648 13.583 27.558 20.54 0.662-16.534 15.089-18.372 21.383-18.372 18.341 0 34.575 11.173 46.893 30.991-6.837-5.662-23.643-14.035-32.166-16.053zM322.59 201.382c0.632 2.469 2.409 7.379 6.686 15.661 5.361 10.421 12.68 24.636 12.68 33.25 0 5.030-2.38 7.259-7.771 7.259-6.897 0-16.776-6.295-25.811-16.414l-2.53-2.801v3.825c0 9.999-2.952 15.059-8.674 15.059-7.349 0-19.365-8.313-30.539-21.203 0 0 2.289 11.505 2.289 15.209 0 7.831-6.867 8.975-10.933 8.975-2.168 0-4.428-0.271-6.776-0.783-0.753-8.764-9.036-27.98-16.354-45.026-4.728-11.053-9.607-22.407-9.607-24.907 0-8.012 5.452-13.192 13.824-13.192 0.422 0 0.844 0 1.295 0.030 6.174 20.751 22.709 51.2 34.425 51.2h2.018l-0.692-1.958c-1.656-5.030-4.276-9.969-6.837-14.758-4.307-8.072-8.313-15.692-8.313-23.823 0-6.626 6.174-10.21 11.987-10.21 1.476 0 2.68 0.151 3.735 0.452 4.247 19.245 26.413 51.591 35.599 51.591h2.711l-1.506-2.319c-2.711-4.277-13.673-24.606-13.673-39.032 0-8.975 4.397-13.312 13.372-13.312 12.469 0 21.384 11.505 24.877 24.004-4.066-2.801-7.62-3.373-11.414-3.373-3.042-0.030-5.572 0.603-4.066 6.596zM377.495 191.744c-6.656-5.512-15.721-0.542-15.872 4.517-0.12 5.541 4.759 15.39 10.812 27.196 4.759 9.367 10.933 15.751 10.361 20.48-0.783 6.686-9.969 11.927-15.692 11.927-0.512 0-0.994-0.030-1.506-0.090-0.271 0-0.482-0.030-0.692-0.030-3.132-8.072-7.168-16.805-11.084-25.299-6.988-15.149-13.613-29.485-13.613-36.984 0-9.397 6.355-19.577 16.625-19.577 10.722 0.542 16.324 5.211 20.661 17.86zM380.596 266.135c2.771 0 6.084 0.301 9.728 0.844 4.728 5.752 7.108 10.601 7.108 14.366 0 3.885-6.084 6.024-23.612 6.174-5.541-5.602-5.24-9.638-5.24-14.125 0.030-4.849 3.976-7.259 12.017-7.259zM493.598 263.183l-0.904-0.030-0.12-0.844c-1.897-14.456-31.594-63.367-37.105-49.483-1.235 3.132 2.289 11.505 5.271 18.462 3.404 7.951 7.228 16.956 6.837 22.016-0.091 1.144-0.482 2.108-1.054 2.952-0.332 0.723-0.964 1.536-2.108 2.259-0.933 0.603-2.168 1.054-3.704 1.445-3.524 1.024-7.83 1.205-11.324 1.084-3.976 0.060-8.342-0.091-12.8-0.362l0.271 0.813c4.247 13.854 15.541 26.774 18.733 28.732 7.861 4.849 18.372 6.024 20.721-4.699 1.988 4.517 2.56 5.813 1.988 9.216-1.687 10.391-9.397 16.022-21.534 16.685-22.046 1.144-37.798-31.111-45.357-49.573l-0.18-0.422-0.361-0.271c-2.139-1.506-6.114-2.5-8.493-3.132-0.512-0.12-0.904-0.241-1.175-0.332-4.608-1.656-5.572-6.144-5.662-8.162-0.12-3.343 3.885-5.813 5.662-8.855 0 0-7.771-19.306-13.402-31.021-8.825-18.281-22.86-49.243-23.1-56.139-0.332-8.403 11.926-16.173 18.613-17.046 2.048 14.035 41.652 103.484 41.652 103.484 1.416 2.168 3.825 5.18 7.62 7.469 3.554 1.446 6.264 1.928 8.342 1.868 0.512-0.12 0.904-0.271 1.265-0.482 1.084-0.602 1.777-1.536 2.168-2.47-1.356-4.819-3.132-9.909-4.909-14.908-3.855-10.903-8.915-27.708-8.252-35.569 0.421-5.029 0.873-7.409 3.554-10.18 8.041-8.252 28.19 5.903 34.183 13.974l0.994-0.421c-7.168-20.42-18.191-34.244-29.967-34.605-15.692-0.542-22.227 9.608-22.227 9.608s-2.651-9.758 7.921-20.57c4.728-4.819 11.746-6.807 18.914-6.264 0.482 0.030 0.964 0.091 1.445 0.12 28.913 3.132 41.502 35.93 51.652 66.771 1.416 4.337 6.295 15.812 7.74 19.938 0.813 2.228 1.837 4.638 2.801 6.957l0.12 0.271c2.289 5.572 3.795 9.337 3.675 11.234-0.632 7.138-9.728 10.692-18.402 10.481z" /> +<glyph unicode="&#xe6d2;" d="M283.136 440.726c-29.997 0-63.156-5.090-99.539-16.444-288.738-90.233-160.106-289.672-122.278-309.369 64.18-33.28-34.666-107.64-34.666-107.64s84.841 24.817 192.874 35.9c129.868 13.252 275.727 32.166 288.889 104.418 20.601 113.272-46.954 293.135-225.28 293.135zM478.78 152.983c-9.849-54.061-180.375-71.469-262.325-79.812-40.749-4.187-78.095-10.24-109.147-16.204 4.246 10.572 6.505 21.654 5.572 32.918-1.054 12.589-7.349 36.020-37.466 51.682-11.204 6.686-51.441 58.73-44.544 116.796 8.855 74.361 92.823 115.652 161.702 137.186 32.045 9.999 62.524 15.059 90.564 15.059 59.362 0 107.851-22.046 144.173-65.566 49.002-58.73 61.169-138.782 51.471-192.060zM120.471 284.236c0 16.595 13.492 30.118 30.117 30.118s30.118-13.523 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118zM271.059 299.294c0 16.655 13.462 30.118 30.118 30.118 16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117zM400.565 224c-166.912-184.982-289.13-28.612-289.13-28.612 96.376-86.257 289.13 28.612 289.13 28.612z" /> +<glyph unicode="&#xe6d3;" d="M183.597 424.283c-288.708-90.233-160.106-289.672-122.248-309.369 64.18-33.28-34.696-107.64-34.696-107.64s84.841 24.817 192.874 35.9c129.867 13.252 275.757 32.166 288.889 104.418 24.064 132.307-72.192 355.599-324.819 276.691zM301.176 329.412c16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117 0 16.655 13.462 30.118 30.118 30.118zM150.588 314.353c16.625 0 30.118-13.523 30.118-30.118s-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118 13.493 30.118 30.118 30.118zM111.436 195.388c96.377-86.257 289.13 28.612 289.13 28.612-166.912-184.982-289.13-28.612-289.13-28.612z" /> +<glyph unicode="&#xe6d4;" d="M403.094 389.647c-28.22 55.085-84.48 90.353-147.095 90.353s-118.844-35.238-147.095-90.353h-108.906v-391.529h512v391.529h-108.906zM256 449.882c45.839 0 87.552-23.1 112.399-60.236h-224.798c24.877 37.105 66.56 60.236 112.399 60.236zM481.882 28.236h-451.764v331.294h451.764v-331.294zM240.941 178.824h-60.236v30.118h60.236v60.236h30.117v-60.236h60.236v-30.118h-60.236v-60.236h-30.118v60.236z" /> +<glyph unicode="&#xe6d5;" d="M512 121.058c0 31.503-25.66 57.163-57.133 57.163h-132.397l37.948 136.042 0.572 106.014c-0.060 32.377-27.558 59.724-60.115 59.724h-90.082c-32.618 0-60.145-27.347-60.145-59.724v-101.225l38.49-140.83h-132.006c-31.473 0-57.133-25.66-57.133-57.163v-122.94h30.117v-30.118h451.764v30.118h30.118v122.94zM481.882 28.236h-451.764v92.822c0 14.908 12.108 27.046 27.016 27.046h171.58l-47.947 172.996v99.177c0 15.781 14.035 29.606 30.028 29.606h90.082c15.932 0 29.937-13.824 29.937-29.606v-99.9l-48.007-172.273h172.062c14.908 0 27.015-12.137 27.015-27.046v-92.822z" /> +<glyph unicode="&#xe6d6;" d="M161.25 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM372.074 325.014l-21.293-21.293 79.692-79.721-79.692-79.692 21.293-21.293 100.984 100.985-100.985 101.014zM240.941-32h30.117v512h-30.118v-512z" /> +<glyph unicode="&#xe6d7;" d="M498.779 364.228l-42.255 42.285c-16.956 17.017-46.803 17.077-63.88 0l-379.121-379.241 163.66 0.091 65.747 65.295 24.817-23.341 231.032 231.063c8.524 8.493 13.221 19.847 13.221 31.924s-4.699 23.402-13.221 31.925zM204.077 175.33l24.817 24.817 63.518-63.518-24.787-24.847-63.548 63.548zM164.774 57.479l-78.547-0.030 96.557 96.588 39.484-39.484-57.494-57.073zM477.485 321.642l-163.75-163.75-63.548 63.548 163.75 163.78c2.831 2.861 6.596 4.427 10.632 4.427s7.8-1.566 10.661-4.397l42.255-42.285c5.873-5.903 5.873-15.42 0-21.324z" /> +<glyph unicode="&#xe6d8;" d="M0.783 449.882h90.353v-30.118h-60.236v-391.529h60.236v-30.118h-90.353v451.764zM422.43 449.882v-30.118h60.236v-391.529h-60.236v-30.118h90.353v451.764h-90.353zM268.348 240.053c-33.581 13.041-48.399 24.214-48.399 46.983 0 16.625 12.649 36.473 45.869 36.473 22.016 0 38.279-7.198 46.231-11.565l8.674 25.66c-10.812 6.144-28.913 11.926-53.82 11.926-47.315 0-78.728-28.19-78.728-66.108 0-34.334 24.546-54.905 64.301-69 32.858-12.62 45.869-25.63 45.869-48.369 0-24.546-18.793-41.563-50.929-41.563-21.684 0-42.255 7.228-56.35 15.902l-7.951-26.383c13.011-8.644 38.641-15.541 62.102-15.541 57.435 0 85.263 32.497 85.263 70.084 0.030 35.78-20.962 55.627-62.132 71.5z" /> +<glyph unicode="&#xe6d9;" d="M457.999 224l-101.014-101.014-21.293 21.293 79.721 79.721-79.692 79.692 21.293 21.293 100.985-100.984zM210.823-32h30.118v512h-30.118v-512z" /> +<glyph unicode="&#xe6da;" d="M176.309 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM271.059 480v-512h30.118v512h-30.118z" /> +<glyph unicode="&#xe6db;" d="M0 471.175v-503.175h503.175l-503.175 503.175zM30.117 398.471l89.058-89.058-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.757 21.293-21.293 19.727 19.727 21.383-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.383-21.384-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.384-21.384-19.727-19.727 21.293-21.293 19.727 19.727 76.68-76.68h-400.354v400.354zM60.236 28.236h232.116l-232.117 232.116v-232.116zM90.353 187.648l129.295-129.295h-129.295v129.295z" /> +<glyph unicode="&#xe6dc;" d="M60.236 480v-509.048l61.078 74.722 45.267-56.621 45.207 56.471 45.146-56.471 45.176 56.471 45.176-56.471 45.147 56.471 59.332-74.089v508.567h-391.529zM421.647 57.269l-29.214 36.472-45.147-56.471-45.176 56.471-45.176-56.471-45.147 56.471-45.207-56.471-45.026 56.32-31.202-38.189v394.481h331.294v-392.613zM331.204 359.529h-180.706v30.118h180.706v-30.118zM270.969 239.059h-120.471v30.118h120.471v-30.118zM360.749 299.294h-210.823v30.118h210.823v-30.118zM150.588 178.824h210.823v-30.118h-210.823v30.118z" /> +<glyph unicode="&#xe6dd;" d="M240.941 133.647h30.117v-165.647h-30.118v165.647zM421.647 214.964v-66.259h-331.294v66.259l32.948 14.667 33.31 190.133-12.921 23.462-20.209 36.773h265.036l-20.239-36.773-12.89-23.462 33.31-190.103 32.949-14.697zM391.529 195.418l-29.696 13.252-2.771 15.781-35.178 200.553 5.12 9.307 8.584 15.571h-163.178l13.703-24.908-1.807-10.421-36.141-205.884-29.696-13.252v-16.595h271.059v16.595z" /> +<glyph unicode="&#xe6de;" d="M162.756 152.049l21.293-21.293-158.358-158.328-21.293 21.293 158.358 158.328zM512 292.608l-66.018-19.185-110.893-157.997 12.921-33.671-46.833-46.833-234.255 234.255 46.863 46.863 33.672-12.921 157.967 110.893 7.469 25.72 11.685 40.267 187.422-187.392zM454.716 307.305l-115.411 115.38-4.94-17.076-2.952-10.18-179.803-126.193-30.388 11.655-11.716-11.716 191.668-191.668 11.716 11.746-5.873 15.42-5.752 14.969 9.246 13.132 116.947 166.671 10.18 2.952 17.077 4.909z" /> +<glyph unicode="&#xe6df;" d="M285.877 480h-59.754c-24.907 0-45.177-20.269-45.177-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.3 45.176-45.207 45.176zM226.124 449.882h59.754c8.283 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM243.291 57.721l-28.13 55.266h81.769l-27.437-55.266h-26.202zM211.065 143.074v169.773h89.871v-169.773h-89.871zM211.065 342.964v31.051h89.871v-31.051h-89.871z" /> +<glyph unicode="&#xe6e0;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941 0-128.933 100.954-234.526 229.828-240.399l38.791-1.777-82.010 82.010c-8.524 8.524-13.221 19.877-13.221 31.955s4.698 23.401 13.221 31.955c17.047 17.046 46.833 17.046 63.88 0l112.007-112.007 10.24 6.716c68.367 44.755 109.147 120.109 109.147 201.548 0 132.849-108.092 240.941-240.941 240.941zM381.289 54.588l-94.419 94.419c-28.401 28.431-78.065 28.431-106.466 0-14.215-14.216-22.046-33.13-22.046-53.248s7.831-39.033 22.046-53.248l22.317-22.317c-91.136 23.582-157.546 106.014-157.546 203.806 0 116.254 94.57 210.823 210.823 210.823s210.823-94.57 210.823-210.823c0-67.162-31.744-129.656-85.534-169.412zM346.353 284.236c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 193.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM256 299.294c-24.938 0-45.177 20.209-45.177 45.177s20.239 45.177 45.177 45.177c24.967 0 45.176-20.209 45.176-45.177s-20.209-45.177-45.177-45.177zM173.177 302.577c0-16.625-13.493-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.493 30.118 30.118 30.118 30.118-13.463 30.118-30.118z" /> +<glyph unicode="&#xe6e1;" d="M60.236 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.985-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM60.236 208.941c-16.595 0-30.117 13.493-30.117 30.118s13.523 30.118 30.117 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.117-30.118zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM256 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118z" /> +<glyph unicode="&#xe6e2;" d="M120.471 239.059c0-33.25-26.986-60.236-60.236-60.236s-60.236 26.986-60.236 60.236 26.985 60.236 60.236 60.236 60.236-26.986 60.236-60.236zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236z" /> +<glyph unicode="&#xe6e3;" d="M349.786 268.544c20.721 22.709 33.732 52.615 33.732 85.745 0 70.325-57.193 127.518-127.518 127.518s-127.518-57.193-127.518-127.518c0-33.13 13.011-63.036 33.732-85.745l34.244-240.308h44.484v-59.754h30.118v59.754h44.484l34.244 240.308zM180.706 415.337v-55.808h30.118v80.535c9.306 4.94 19.365 8.433 30.118 10.119v-120.772h30.117v120.772c10.752-1.686 20.812-5.18 30.118-10.12v-80.534h30.118v55.808c13.613-16.775 22.106-37.828 22.106-61.018 0-53.73-43.7-97.43-97.4-97.43s-97.4 43.671-97.4 97.4c0 23.221 8.493 44.273 22.107 61.048zM222.6 58.353l-26.203 183.838c17.86-9.517 37.948-15.451 59.603-15.451s41.743 5.933 59.603 15.481l-26.202-183.868h-66.801z" /> +<glyph unicode="&#xe6e4;" d="M331.294 480v-304.851c0-40.026-33.792-72.553-75.294-72.553s-75.294 32.527-75.294 72.553v304.851h-150.588v-314.188c0-128.482 116.374-197.813 225.882-197.813s225.882 69.331 225.882 197.813v314.188h-150.588zM451.764 449.882v-90.353h-90.353v90.353h90.353zM150.588 449.882v-90.353h-90.353v90.353h90.353zM256-1.882c-78.697 0-195.764 44.664-195.764 167.695v163.599h90.353v-154.262c0-56.621 47.285-102.671 105.412-102.671s105.412 46.050 105.412 102.671v154.262h90.353v-163.599c0-123.031-117.067-167.695-195.764-167.695z" /> +<glyph unicode="&#xe6e5;" d="M512 299.294v-30.117h-512v30.117h512zM0 178.824h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe6e6;" d="M0 239.119h15.059v-30.117h-15.059v30.118zM71.77 208.971h28.34v30.118h-28.34v-30.118zM156.792 208.971h28.34v30.118h-28.34v-30.118zM326.897 208.941h28.341v30.118h-28.341v-30.118zM241.845 208.971h28.311v30.088h-28.31v-30.088zM411.919 208.941h28.341v30.118h-28.341v-30.118zM496.941 239.059v-30.117h15.059v30.118h-15.059z" /> +<glyph unicode="&#xe6e7;" d="M0 239.059h120.471v-30.117h-120.471v30.118zM195.764 208.941h120.471v30.118h-120.471v-30.118zM391.529 239.059v-30.117h120.471v30.118h-120.471z" /> +<glyph unicode="&#xe6e8;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764z" /> +<glyph unicode="&#xe6e9;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM90.353 239.059h30.117v-30.117h-30.118v30.118zM90.353 359.529h30.117v-30.117h-30.118v30.117zM90.353 178.824h30.117v-30.118h-30.118v30.118zM90.353 299.294h30.117v-30.117h-30.118v30.117zM90.353 419.764h30.117v-30.118h-30.118v30.118zM90.353 58.353h30.117v-30.118h-30.118v30.118zM90.353 118.588h30.117v-30.118h-30.118v30.118zM391.529 419.764h30.118v-30.118h-30.118v30.118zM391.529 299.294h30.118v-30.117h-30.118v30.117zM391.529 359.529h30.118v-30.117h-30.118v30.117zM391.529 239.059h30.118v-30.117h-30.118v30.118zM391.529 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h30.118v-30.118h-30.118v30.118zM391.529 58.353h30.118v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe6ea;" d="M60.236-1.882h30.118v-30.118h-30.117v30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM421.647 389.647h30.118v30.118h-30.118v-30.118zM421.647 329.412h30.118v30.117h-30.118v-30.117zM421.647 88.471h30.118v30.118h-30.118v-30.118zM421.647 269.177h30.118v30.117h-30.118v-30.117zM421.647 208.941h30.118v30.118h-30.118v-30.118zM421.647 28.236h30.118v30.118h-30.118v-30.118zM421.647 148.706h30.118v30.118h-30.118v-30.118zM421.647 480v-30.118h30.118v30.118h-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM60.236 88.471h30.118v30.118h-30.117v-30.118zM60.236 28.236h30.118v30.118h-30.117v-30.118zM60.236 148.706h30.118v30.118h-30.117v-30.118zM60.236 389.647h30.118v30.118h-30.117v-30.118zM60.236 329.412h30.118v30.117h-30.117v-30.117zM60.236 269.177h30.118v30.117h-30.117v-30.117zM60.236 208.941h30.118v30.118h-30.117v-30.118z" /> +<glyph unicode="&#xe6eb;" d="M210.823 389.647v30.118h-210.823v-421.647h512v391.529h-301.176zM331.294 359.529v-30.117h-120.471v30.117h120.471zM481.882 28.236h-451.764v361.412h150.588v-90.353h301.176v-271.059zM361.412 329.412v30.117h120.471v-30.117h-120.471z" /> +<glyph unicode="&#xe6ec;" d="M361.412 419.764h-361.412v-421.647h512v421.647h-150.588zM481.882 389.647v-60.236h-120.471v60.236h120.471zM331.294 389.647v-60.236h-150.588v60.236h150.588zM30.117 389.647h120.47v-60.236h-120.471v60.236zM481.882 28.236h-451.764v271.059h451.764v-271.059z" /> +<glyph unicode="&#xe6ed;" d="M180.706 449.882v-30.118h-180.706v-120.471h30.117v-120.47h150.588v-181.248h331.294v452.307h-331.294zM60.236 299.294h120.471v-30.117h-120.471v30.117zM60.236 208.941v30.118h120.471v-30.118h-120.471zM481.882 27.693h-271.059v301.719h-180.706v60.236h180.706v30.118h271.059v-392.072z" /> +<glyph unicode="&#xe6ee;" d="M210.823 419.764v30.118h-210.823v-120.38h30.117v90.262h150.588v-90.353h331.294v90.353h-301.176zM210.823 389.647h120.47v-30.118h-120.471v30.118zM361.412 359.529v30.118h120.471v-30.118h-120.471z" /> +<glyph unicode="&#xe6ef;" d="M0 449.882v-421.647h512v421.647h-512zM481.882 58.353h-451.764v361.412h451.764v-361.412zM139.927 168.162l-70.867 70.897 70.897 70.897 21.293-21.293-49.604-49.604 49.574-49.574-21.293-21.324zM350.75 189.485l49.604 49.573-49.574 49.573 21.293 21.293 70.867-70.867-70.897-70.897-21.293 21.324z" /> +<glyph unicode="&#xe6f0;" d="M60.236 58.353h391.529v331.294h-391.529v-331.294zM90.353 359.529h331.294v-271.059h-331.294v271.059zM481.882 343.537h30.118v-239.074h-30.118v239.074zM0 343.537h30.117v-239.074h-30.117v239.074z" /> +<glyph unicode="&#xe6f1;" d="M512 480v-512h-150.588v512h150.588zM271.059-32h30.118v30.118h-30.118v-30.118zM217.54-32h26.774v30.118h-26.774v-30.118zM56.892-32h26.774v30.118h-26.775v-30.118zM110.442-32h26.775v30.118h-26.775v-30.118zM163.99-32h26.774v30.118h-26.774v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 449.882h30.117v30.118h-30.117v-30.118zM244.284 480h-26.774v-30.118h26.774v30.118zM190.735 480h-26.774v-30.118h26.774v30.118zM83.636 480h-26.745v-30.118h26.775v30.118zM137.186 480h-26.745v-30.118h26.775v30.118zM271.059 449.882h30.118v30.118h-30.118v-30.118zM271.059 28.236h30.118v30.118h-30.118v-30.118zM271.059 88.471h30.118v30.118h-30.118v-30.118zM271.059 208.941h30.118v30.118h-30.118v-30.118zM271.059 148.706h30.118v30.118h-30.118v-30.118zM271.059 329.412h30.118v30.117h-30.118v-30.117zM271.059 269.177h30.118v30.117h-30.118v-30.117zM271.059 389.647h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe6f2;" d="M0-1.882h30.117v-30.118h-30.117v30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117z" /> +<glyph unicode="&#xe6f3;" d="M0 480h150.588v-512h-150.588v512zM210.823-32h30.118v30.118h-30.118v-30.118zM428.333-32h26.774v30.118h-26.774v-30.118zM374.784-32h26.774v30.118h-26.774v-30.118zM267.716-32h26.774v30.118h-26.774v-30.118zM321.265-32h26.774v30.118h-26.774v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM428.363 449.882h26.774v30.118h-26.774v-30.118zM374.814 449.882h26.774v30.118h-26.774v-30.118zM321.265 449.882h26.774v30.118h-26.774v-30.118zM267.716 449.882h26.774v30.118h-26.774v-30.118zM210.823 449.882h30.118v30.118h-30.118v-30.118zM210.823 28.236h30.118v30.118h-30.118v-30.118zM210.823 88.471h30.118v30.118h-30.118v-30.118zM210.823 269.177h30.118v30.117h-30.118v-30.117zM210.823 148.706h30.118v30.118h-30.118v-30.118zM210.823 329.412h30.118v30.117h-30.118v-30.117zM210.823 389.647h30.118v30.118h-30.118v-30.118zM210.823 208.941h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe6f4;" d="M0.632 449.521v-451.764h512v451.764h-512zM245.067 223.729l-214.317-186.639v373.82l214.317-187.181zM43.941 419.404h425.803l-213.203-185.675-212.601 185.675zM256.512 213.73l212.811-185.856h-426.225l213.413 185.856zM267.987 223.729l214.528 186.85v-374.212l-214.528 187.362z" /> +<glyph unicode="&#xe6f5;" d="M0 269.177v-90.353h391.529v90.353h-391.529zM240.941 239.059v-30.117h-90.353v30.118h90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM361.412 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f6;" d="M90.353 449.882v-90.353h331.294v90.353h-331.294zM391.529 389.647h-271.059v30.118h271.059v-30.118zM90.353 239.059h331.294v90.353h-331.294v-90.353zM120.471 299.294h271.059v-30.117h-271.059v30.117zM90.353 118.678h331.294v90.353h-331.294v-90.353zM120.471 178.914h271.059v-30.118h-271.059v30.118zM90.353-1.792h331.294v90.353h-331.294v-90.353zM120.471 58.443h271.059v-30.118h-271.059v30.118z" /> +<glyph unicode="&#xe6f7;" d="M0 178.824h150.588v90.353h-150.588v-90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM180.706 178.824h150.588v90.353h-150.588v-90.353zM210.823 239.059h90.353v-30.117h-90.353v30.118zM361.412 269.177v-90.353h150.588v90.353h-150.588zM481.882 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f8;" d="M0 269.177v-90.353h512v90.353h-512zM271.059 239.059h90.353v-30.117h-90.353v30.118zM240.941 208.941h-90.353v30.118h90.353v-30.118zM30.117 239.059h90.353v-30.117h-90.353v30.118zM481.882 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f9;" d="M60.236 88.471h451.764v-30.118h-451.764v30.118zM210.823-1.671h301.177v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe6fa;" d="M240.941 359.529v-271.059h271.059v271.059h-271.059zM481.882 118.588h-210.824v210.824h210.823v-210.824zM35.358 359.529h175.465v-30.117h-175.465v30.117zM105.502 239.179h105.322v-30.117h-105.322v30.118zM210.553 269.236h-210.553v30.118h210.553v-30.118zM0.271 179.034h210.553v-30.118h-210.553v30.118zM35.358 118.588h175.465v-30.118h-175.465v30.118z" /> +<glyph unicode="&#xe6fb;" d="M451.764 118.588h-391.529v30.118h391.529v-30.118zM361.412 88.682h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" /> +<glyph unicode="&#xe6fc;" d="M0 419.764v-361.412h512v361.412h-512zM30.117 178.522v211.125h451.764v-211.125h-451.764z" /> +<glyph unicode="&#xe6fd;" d="M361.412 208.941h-301.176v30.118h301.176v-30.118zM361.412 178.824h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" /> +<glyph unicode="&#xe6fe;" d="M0 88.471h451.764v-30.118h-451.764v30.118zM0-1.671h301.176v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe6ff;" d="M301.176 359.529h175.465v-30.117h-175.466v30.117zM301.176 239.179h105.322v-30.117h-105.322v30.118zM301.447 299.355h210.553v-30.118h-210.553v30.118zM301.176 179.034h210.553v-30.118h-210.553v30.118zM301.176 118.588h175.465v-30.118h-175.466v30.118zM0 88.471h271.059v271.059h-271.059v-271.059zM30.117 329.412h210.823v-210.824h-210.823v210.824z" /> +<glyph unicode="&#xe700;" d="M30.117 88.471h451.764v-30.118h-451.764v30.118zM120.471-1.671h271.059v30.118h-271.059v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe701;" d="M30.117 359.529v-180.706h451.764v180.706h-451.764zM451.764 208.941h-391.529v120.471h391.529v-120.471zM421.647 148.706v-30.118h-331.294v30.118h331.294zM60.236 88.471h391.529v-30.118h-391.529v30.118z" /> +<glyph unicode="&#xe702;" d="M451.764 359.529h-271.059v30.118h271.059v-30.118zM180.706 329.412v-30.118h331.294v30.118h-331.294zM0 419.764h150.588v-150.588h-150.588v150.588zM30.117 299.294h90.353v90.353h-90.353v-90.353zM451.764 178.824h-271.059v-30.118h271.059v30.118zM180.706 88.471h331.294v30.118h-331.294v-30.118zM0 208.941h150.588v-150.588h-150.588v150.588zM30.117 88.471h90.353v90.353h-90.353v-90.353z" /> +<glyph unicode="&#xe703;" d="M451.764 329.412h-271.059v30.117h271.059v-30.117zM180.706 299.294v-30.117h331.294v30.117h-331.294zM0 239.059h150.588v150.588h-150.588v-150.588zM451.764 148.706h-271.059v-30.118h271.059v30.118zM180.706 58.353h331.294v30.118h-331.294v-30.118zM0 28.236h150.588v150.588h-150.588v-150.588z" /> +<glyph unicode="&#xe704;" d="M421.647 329.412h-421.647v60.236h421.647v-60.236zM0 299.294v-30.117h512v30.117h-512zM421.647 178.824h-421.647v-60.236h421.647v60.236zM0 58.353h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe705;" d="M496.851 329.412h-75.204v30.117h75.204v-30.117zM466.793 239.179h-45.147v-30.117h45.147v30.118zM421.767 299.355v-30.118h90.233v30.118h-90.233zM421.647 148.916h90.233v30.118h-90.233v-30.118zM421.647 88.471h75.204v30.118h-75.204v-30.118zM0 359.529h391.529v-271.059h-391.529v271.059zM30.117 118.588h331.294v210.824h-331.294v-210.824z" /> +<glyph unicode="&#xe706;" d="M512 239.059v-30.117h-512v30.118h512z" /> +<glyph unicode="&#xe707;" d="M30.117 359.529h90.353v90.353h-90.353v-90.353zM60.236 419.764h30.118v-30.118h-30.117v30.118zM150.588 359.529h90.353v90.353h-90.353v-90.353zM180.706 419.764h30.118v-30.118h-30.118v30.118zM271.059 359.529h90.353v90.353h-90.353v-90.353zM301.176 419.764h30.118v-30.118h-30.118v30.118zM391.529 449.882v-90.353h90.353v90.353h-90.353zM451.764 389.647h-30.118v30.118h30.118v-30.118zM30.117 239.059h90.353v90.353h-90.353v-90.353zM60.236 299.294h30.118v-30.117h-30.117v30.117zM150.588 239.059h90.353v90.353h-90.353v-90.353zM180.706 299.294h30.118v-30.117h-30.118v30.117zM271.059 239.059h90.353v90.353h-90.353v-90.353zM301.176 299.294h30.118v-30.117h-30.118v30.117zM391.529 239.059h90.353v90.353h-90.353v-90.353zM421.647 299.294h30.118v-30.117h-30.118v30.117zM30.117 118.588h90.353v90.353h-90.353v-90.353zM60.236 178.824h30.118v-30.118h-30.117v30.118zM150.588 118.588h90.353v90.353h-90.353v-90.353zM180.706 178.824h30.118v-30.118h-30.118v30.118zM271.059 118.588h90.353v90.353h-90.353v-90.353zM301.176 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h90.353v90.353h-90.353v-90.353zM421.647 178.824h30.118v-30.118h-30.118v30.118zM30.117-1.882h90.353v90.353h-90.353v-90.353zM60.236 58.353h30.118v-30.118h-30.117v30.118zM150.588-1.882h90.353v90.353h-90.353v-90.353zM180.706 58.353h30.118v-30.118h-30.118v30.118zM271.059-1.882h90.353v90.353h-90.353v-90.353zM301.176 58.353h30.118v-30.118h-30.118v30.118zM391.529-1.882h90.353v90.353h-90.353v-90.353zM421.647 58.353h30.118v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe708;" d="M0 329.412h150.588v150.588h-150.588v-150.588zM30.117 449.882h90.353v-90.353h-90.353v90.353zM180.706 329.412h150.588v150.588h-150.588v-150.588zM210.823 449.882h90.353v-90.353h-90.353v90.353zM361.412 480v-150.588h150.588v150.588h-150.588zM481.882 359.529h-90.353v90.353h90.353v-90.353zM0 148.706h150.588v150.588h-150.588v-150.588zM30.117 269.177h90.353v-90.353h-90.353v90.353zM180.706 148.706h150.588v150.588h-150.588v-150.588zM210.823 269.177h90.353v-90.353h-90.353v90.353zM361.412 148.706h150.588v150.588h-150.588v-150.588zM391.529 269.177h90.353v-90.353h-90.353v90.353zM0-32h150.588v150.588h-150.588v-150.588zM30.117 88.471h90.353v-90.353h-90.353v90.353zM180.706-32h150.588v150.588h-150.588v-150.588zM210.823 88.471h90.353v-90.353h-90.353v90.353zM361.412-32h150.588v150.588h-150.588v-150.588zM391.529 88.471h90.353v-90.353h-90.353v90.353z" /> +<glyph unicode="&#xe709;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM271.059 480v-210.823h210.824v210.823h-210.823zM451.764 299.294h-150.588v150.588h150.588v-150.588zM0-1.882h210.823v210.824h-210.823v-210.823zM30.117 178.824h150.588v-150.588h-150.588v150.588zM271.059-1.882h210.824v210.824h-210.823v-210.823zM301.176 178.824h150.588v-150.588h-150.588v150.588z" /> +<glyph unicode="&#xe70a;" d="M0 419.764h90.353v-90.353h-90.353v90.353zM271.059 329.412h90.353v90.353h-90.353v-90.353zM0 88.471h90.353v90.353h-90.353v-90.353zM271.059 88.471h90.353v90.353h-90.353v-90.353zM120.471 389.647h120.471v30.118h-120.471v-30.118zM120.471 329.412h120.471v30.117h-120.471v-30.117zM391.529 419.764v-30.118h120.471v30.118h-120.471zM391.529 329.412h120.471v30.117h-120.471v-30.117zM210.823 299.324h-90.353v-30.118h90.353v30.118zM481.882 299.324h-90.353v-30.118h90.353v30.118zM120.471 148.706h120.471v30.118h-120.471v-30.118zM120.471 88.471h120.471v30.118h-120.471v-30.118zM391.529 148.706h120.471v30.118h-120.471v-30.118zM391.529 88.471h120.471v30.118h-120.471v-30.118zM120.471 28.265h90.353v30.118h-90.353v-30.118zM391.529 28.265h90.353v30.118h-90.353v-30.118z" /> +<glyph unicode="&#xe70b;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM421.647 239.059h-301.176v30.118h301.176v-30.118zM271.059 208.941h150.588v-60.236h-150.588v60.236z" /> +<glyph unicode="&#xe70c;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM391.529 239.059h-301.176v30.118h301.176v-30.118zM240.941 148.706h-150.588v60.236h150.588v-60.236z" /> +<glyph unicode="&#xe70d;" d="M421.647 239.059h-331.294v30.118h331.294v-30.118zM512 389.647v-331.294h-512v331.294h512zM481.882 359.529h-451.764v-271.059h451.764v271.059zM191.458 148.706h129.084v60.236h-129.084v-60.236z" /> +<glyph unicode="&#xe70e;" d="M271.059 269.177h-210.823v30.117h210.823v-30.117zM120.26 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM451.764 299.294h-150.588v-60.235h150.588v60.235z" /> +<glyph unicode="&#xe70f;" d="M451.764 269.177h-210.823v30.117h210.823v-30.117zM241.152 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM210.823 299.294h-150.588v-60.235h150.588v60.235z" /> +<glyph unicode="&#xe710;" d="M30.117-32h90.353v512h-90.353v-512zM60.236 449.882h30.118v-451.764h-30.117v451.764zM150.588-32h90.353v512h-90.353v-512zM180.706 449.882h30.118v-451.764h-30.118v451.764zM271.059-32h90.353v512h-90.353v-512zM301.176 449.882h30.118v-451.764h-30.118v451.764zM391.529 480v-512h90.353v512h-90.353zM451.764-1.882h-30.118v451.764h30.118v-451.764z" /> +<glyph unicode="&#xe711;" d="M0-32h150.588v512h-150.588v-512zM30.117 449.882h90.353v-451.764h-90.353v451.764zM180.706-32h150.588v512h-150.588v-512zM210.823 449.882h90.353v-451.764h-90.353v451.764zM361.412 480v-512h150.588v512h-150.588zM481.882-1.882h-90.353v451.764h90.353v-451.764z" /> +<glyph unicode="&#xe712;" d="M0-32h240.941v512h-240.941v-512zM30.117 449.882h180.706v-451.764h-180.706v451.764zM271.059 480v-512h240.941v512h-240.941zM481.882-1.882h-180.706v451.764h180.706v-451.764z" /> +<glyph unicode="&#xe713;" d="M0 480v-90.353h512v90.353h-512zM481.882 419.764h-451.764v30.118h451.764v-30.118zM0 88.471h512v271.059h-512v-271.059zM30.117 329.412h451.764v-210.824h-451.764v210.824zM0-32h512v90.353h-512v-90.353zM30.117 28.236h451.764v-30.118h-451.764v30.118z" /> +<glyph unicode="&#xe714;" d="M0 480v-512h512v512h-512zM481.882 449.882v-271.059h-451.764v271.059h451.764zM481.882 148.706v-60.236h-451.764v60.236h451.764zM30.117-1.882v60.236h451.764v-60.236h-451.764z" /> +<glyph unicode="&#xe715;" d="M120.471 480v-271.059h391.529v271.059h-391.529zM481.882 239.059h-331.294v210.823h331.294v-210.823zM0 389.647h90.353v90.353h-90.353v-90.353zM30.117 449.882h30.117v-30.118h-30.117v30.118zM120.471 88.471h391.529v90.353h-391.529v-90.353zM150.588 148.706h331.294v-30.118h-331.294v30.118zM0 88.471h90.353v90.353h-90.353v-90.353zM30.117 148.706h30.117v-30.118h-30.117v30.118zM120.471-32h391.529v90.353h-391.529v-90.353zM150.588 28.236h331.294v-30.118h-331.294v30.118zM0-32h90.353v90.353h-90.353v-90.353zM30.117 28.236h30.117v-30.118h-30.117v30.118z" /> +<glyph unicode="&#xe716;" d="M90.353 480v-195.735l164.623-286.087 166.671 286.058v195.764h-331.294zM255.126 58.353h0.060l-0.030-0.060-0.030 0.060zM256 299.294c-16.625 0-30.118 13.523-30.118 30.118s13.493 30.117 30.118 30.117 30.118-13.523 30.118-30.117-13.493-30.118-30.118-30.118zM391.529 292.367l-120.471-206.788v185.736c25.901 6.716 45.176 30.118 45.176 58.097 0 33.22-27.015 60.236-60.236 60.236s-60.236-27.015-60.236-60.236c0-27.979 19.275-51.38 45.177-58.097v-188.356l-120.471 209.378v157.546h271.059v-157.515z" /> +<glyph unicode="&#xe717;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM271.059 107.475h29.485v-30.118h-89.088v30.118h29.485v133.12h-28.492v30.118h58.609v-163.238zM216.395 329.833c0 16.414 13.282 29.696 29.696 29.696s29.666-13.282 29.666-29.696c0-16.354-13.252-29.636-29.666-29.636s-29.696 13.282-29.696 29.636z" /> +<glyph unicode="&#xe718;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM290.876 111.993c0-17.107-13.914-31.051-31.051-31.051-17.197 0-31.112 13.945-31.112 31.051 0 17.167 13.915 31.082 31.112 31.082 17.137 0 31.051-13.884 31.051-31.082zM321.115 353.054c13.493-17.016 20.3-39.996 16.565-55.868-7.319-30.931-25.359-47.195-41.291-61.531-16.354-14.728-28.13-25.299-28.13-49.604h-30.118c0 37.677 20.209 55.899 38.069 71.981 13.884 12.499 26.986 24.305 32.106 46.050 1.024 4.307-1.175 18.070-10.842 30.268-9.246 11.716-21.925 17.649-37.587 17.649-53.579 0-56.29-43.49-56.411-48.459l-30.118 0.813c0.723 26.895 19.727 77.764 86.528 77.764 24.636 0 46.351-10.33 61.229-29.063z" /> +<glyph unicode="&#xe719;" d="M471.884 298.782c-28.822 107.128-116.344 181.218-215.884 181.218-99.238 0-187.091-74.21-215.883-181.218-22.498-2.47-40.117-21.444-40.117-44.665v-120.471c0-18.824 11.505-34.937 27.828-41.713 5.843-52.615 50.086-93.817 104.237-93.817h81.529c6.234-17.498 22.799-30.117 42.406-30.117h90.353c24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176h-90.353c-19.607 0-36.172-12.62-42.406-30.118h-81.529c-36.382 0-66.771 25.901-73.758 60.236h32.045v30.118h30.118v150.588h-30.118v30.118h-18.251c27.498 89.178 100.954 150.588 183.899 150.588 83.185 0 156.401-61.35 183.899-150.588h-18.252v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 23.221-17.619 42.195-40.116 44.664zM256 28.236h90.353c8.283 0 15.059-6.747 15.059-15.059s-6.776-15.059-15.059-15.059h-90.353c-8.282 0-15.059 6.747-15.059 15.059s6.776 15.059 15.059 15.059zM60.236 118.588h-15.239c-8.192 0-14.878 6.747-14.878 15.059v120.471c0 8.313 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 133.647c0-8.313-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.746 14.878-15.059v-120.471z" /> +<glyph unicode="&#xe71a;" d="M436.706 231.951v-95.955c0-20.179-9.698-46.833-18.252-70.325-5.572-15.269-11.866-32.587-11.866-39.454v-25.75c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.75c0 12.168 6.053 28.762 13.673 49.755 7.71 21.142 16.444 45.116 16.444 59.995v95.985c0 8.734-7.108 16.113-15.541 16.113-8.795 0-13.673-7.891-13.945-15.661-0.271-8.192-6.295-15.269-15.3-14.517-8.192 0.151-14.788 6.867-14.788 15.059v47.044c0 8.915-6.837 16.173-15.209 16.173-7.951 0-14.577-6.626-15.119-15.059-0.512-8.132-6.867-14.607-15.51-14.095-8.132 0.271-14.577 6.927-14.577 15.059v38.159c0 8.885-6.747 16.113-15.059 16.113-7.8 0-14.668-6.084-15.691-13.884-1.024-7.831-7.891-13.884-15.902-13.071-7.921 0.512-14.095 7.077-14.095 15.029v109.357c0 8.885-6.837 16.113-15.209 16.113s-15.209-7.228-15.209-16.113v-186.127c0-6.204-3.795-11.776-9.577-14.035-5.752-2.259-12.348-0.723-16.565 3.825l-33.551 36.472c-13.824 13.915-18.281 11.264-22.528 8.644-7.409-4.397-9.969-14.577-5.662-22.287l99.027-213.775c1.596-2.74 4.97-5.361 8.945-6.355 6.716-1.716 11.385-7.71 11.385-14.607v-25.058c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v15.029c-7.018 4.036-12.86 9.939-17.017 17.288l-98.996 213.775c-11.836 20.902-4.427 49.122 17.017 61.862 28.913 17.317 51.291-5.21 59.693-13.673l7.831-8.493v147.516c0 25.51 20.359 46.231 45.327 46.231s45.327-20.721 45.327-46.231v-70.023c4.879 1.747 10.119 2.71 15.571 2.71 23.823 0 43.37-18.944 45.056-42.887 4.759 1.777 9.878 2.71 15.209 2.71 24.998 0 45.327-20.751 45.327-46.291v-4.096c4.367 1.476 9.036 2.259 13.945 2.259 25.148 0.030 45.628-20.721 45.628-46.201z" /> +<glyph unicode="&#xe71b;" d="M509.651 254.298c0-24.968-20.721-45.297-46.231-45.297h-70.024c1.777-4.879 2.74-10.149 2.74-15.601 0-23.823-18.944-43.37-42.887-45.056 1.747-4.759 2.68-9.849 2.68-15.18 0-24.998-20.751-45.357-46.26-45.357h-4.096c1.476-4.367 2.259-9.036 2.259-13.945 0-25.148-20.781-45.628-46.26-45.628h-95.924c-20.179 0-46.833 9.698-70.355 18.252-15.27 5.572-32.557 11.866-39.424 11.866h-25.75c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h25.75c12.137 0 28.732-6.024 49.694-13.673 21.203-7.71 45.207-16.444 60.084-16.444h95.924c8.764 0 16.143 7.108 16.143 15.541 0 8.795-7.891 13.673-15.661 13.945-8.192 0.301-14.667 7.108-14.517 15.33s6.867 14.788 15.059 14.788h47.044c8.915 0 16.143 6.837 16.143 15.24 0 7.951-6.596 14.547-14.998 15.089-8.162 0.512-14.396 7.349-14.156 15.51 0.271 8.132 6.897 14.577 15.059 14.577h38.189c8.885 0 16.113 6.776 16.113 15.059 0 7.8-6.114 14.697-13.914 15.692-7.861 1.024-13.583 8.012-13.071 15.902 0.542 7.951 7.077 14.095 15.029 14.095h109.357c8.885 0 16.113 6.806 16.113 15.179 0 8.403-7.228 15.24-16.113 15.24h-186.127c-6.204 0-11.776 3.795-14.035 9.577s-0.692 12.348 3.855 16.565l36.472 33.521c13.854 13.824 11.204 18.221 8.644 22.528-4.457 7.499-14.457 10.089-22.348 5.662l-213.745-98.997c-2.68-1.566-5.3-4.939-6.355-8.945-1.656-6.716-7.65-11.385-14.577-11.385h-25.058c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059h15.029c4.036 7.018 9.909 12.891 17.258 16.987l213.775 99.027c20.872 11.746 49.152 4.397 61.892-17.016 17.288-28.822-5.211-51.26-13.644-59.693l-8.493-7.83h147.486c25.479 0 46.231-20.36 46.231-45.357z" /> +<glyph unicode="&#xe71c;" d="M494.592 73.412c0-8.313-6.747-15.059-15.059-15.059h-25.75c-6.837 0-24.154-6.295-39.424-11.866-23.522-8.553-50.176-18.252-70.355-18.252h-95.924c-25.51 0-46.261 20.48-46.261 45.659 0 4.909 0.783 9.577 2.259 13.945h-4.066c-25.51 0-46.261 20.36-46.261 45.357 0 5.331 0.934 10.421 2.68 15.18-23.944 1.656-42.888 21.203-42.888 45.026 0 5.452 0.964 10.692 2.74 15.601h-70.053c-25.509 0-46.23 20.329-46.23 45.297 0 24.997 20.721 45.357 46.23 45.357h147.486l-8.012 7.379c-8.915 8.885-31.412 31.322-14.095 60.175 12.74 21.384 40.96 28.763 62.886 16.475l211.667-97.942c8.072-4.488 14.185-10.481 18.281-17.559h15.059c8.313 0 15.059-6.747 15.059-15.059s-6.747-15.059-15.059-15.059h-25.028c-6.897 0-12.921 4.668-14.607 11.385-1.024 4.006-3.644 7.379-7.379 9.487l-211.667 97.913c-8.855 4.94-18.884 2.409-23.341-5.090-2.59-4.337-5.24-8.734 9.036-23.010l36.020-33.069c4.578-4.216 6.084-10.752 3.825-16.565s-7.831-9.577-14.035-9.577h-186.127c-8.855 0-16.083-6.837-16.083-15.239 0-8.373 7.228-15.179 16.113-15.179h109.357c7.951 0 14.517-6.144 15.029-14.095 0.512-7.921-5.21-14.878-13.071-15.902-7.8-0.994-13.884-7.921-13.884-15.721 0-8.283 7.228-15.059 16.113-15.059h38.189c8.132 0 14.818-6.476 15.059-14.577 0.241-8.162-6.024-14.998-14.125-15.51-8.433-0.542-15.029-7.138-15.029-15.089 0-8.403 7.258-15.24 16.143-15.24h47.044c8.222 0 14.908-6.596 15.059-14.788s-6.325-15.029-14.517-15.33c-7.77-0.271-15.661-5.15-15.661-13.945 0-8.403 7.409-15.51 16.143-15.51h95.924c14.878 0 38.882 8.734 60.055 16.444 20.962 7.65 37.556 13.673 49.694 13.673h25.75c8.342 0 15.089-6.747 15.089-15.059z" /> +<glyph unicode="&#xe71d;" d="M414.208 139.58c-28.793-17.378-51.26 5.211-59.693 13.673l-7.83 8.493v-147.516c0-25.51-20.329-46.231-45.327-46.231s-45.327 20.721-45.327 46.231v70.024c-4.879-1.777-10.119-2.74-15.571-2.74-23.793 0-43.369 18.944-45.056 42.887-4.758-1.777-9.879-2.711-15.209-2.711-24.998 0-45.327 20.751-45.327 46.291v4.096c-4.367-1.476-9.035-2.259-13.945-2.259-25.148 0-45.628 20.751-45.628 46.231v95.955c0 20.179 9.698 46.833 18.252 70.325 5.572 15.269 11.867 32.587 11.867 39.424v25.781c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059v-25.75c0-12.168-6.024-28.762-13.674-49.755-7.71-21.173-16.444-45.147-16.444-60.024v-95.955c0-8.734 7.108-16.113 15.54-16.113 8.794 0 13.674 7.891 13.944 15.661 0.301 8.132 6.957 14.517 15.059 14.517 0.090 0 0.18 0 0.271 0 8.192-0.15 14.788-6.867 14.788-15.059v-47.044c0-8.915 6.837-16.173 15.209-16.173 7.951 0 14.577 6.626 15.119 15.059 0.482 8.101 7.077 14.156 15.481 14.095 8.132-0.271 14.577-6.927 14.577-15.059v-38.189c0-8.885 6.776-16.113 15.059-16.113 7.8 0 14.667 6.084 15.691 13.884 1.024 7.861 8.041 13.974 15.902 13.101 7.921-0.512 14.095-7.077 14.095-15.029v-109.357c0-8.885 6.837-16.113 15.209-16.113s15.209 7.228 15.209 16.113v186.127c0 6.204 3.795 11.776 9.577 14.035 5.692 2.259 12.318 0.723 16.565-3.825l33.551-36.473c13.824-13.914 18.281-11.234 22.528-8.644 7.409 4.397 9.969 14.577 5.662 22.287l-99.027 213.775c-1.596 2.74-4.94 5.361-8.945 6.355-6.686 1.687-11.385 7.68-11.385 14.607v25.058c0 8.313 6.747 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-15.029c7.017-4.036 12.89-9.939 16.986-17.288l99.027-213.775c11.836-20.901 4.457-49.122-17.017-61.861z" /> +<glyph unicode="&#xe71e;" d="M391.529 178.824v301.176h-391.529v-391.529h391.529v90.353zM30.117 449.882h331.294v-240.941h-22.739l-77.221 99.961-34.906-36.563-67.704 116.887-107.701-180.284h-21.022v240.941zM300.635 208.941h-214.407l72.222 120.892 62.163-107.339 38.4 40.267 41.623-53.82zM30.117 118.588v60.236h331.294v-60.236h-331.294zM512 389.647v-391.529h-391.529v59.753h30.118v-29.636h331.294v331.294h-60.236v30.118h90.353z" /> +<glyph unicode="&#xe71f;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 208.941c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412c0 8.313 6.747 15.059 15.059 15.059s15.059-6.747 15.059-15.059zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" /> +<glyph unicode="&#xe720;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 88.471c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.284-105.412-105.412c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 74.722 60.808 135.53 135.53 135.53s135.53-60.807 135.53-135.53zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" /> +<glyph unicode="&#xe721;" d="M466.824 419.764h-421.647c-24.907 0-45.176-20.269-45.176-45.177v-301.176c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.907-20.269 45.176-45.176 45.176zM481.882 73.412c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v165.647h451.764v-165.647zM30.117 329.412v45.176c0 8.282 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.777 15.059-15.059v-45.176h-451.764z" /> +<glyph unicode="&#xe722;" d="M90.353 41.156l219.286 183.627-219.286 181.851v-365.478zM120.471 342.543l142.125-117.88-142.125-118.995v236.875zM421.647 419.764v-391.529h-30.118v391.529h30.118z" /> +<glyph unicode="&#xe723;" d="M202.361 223.217l219.286-181.851v365.478l-219.286-183.627zM391.529 105.457l-142.125 117.88 142.125 118.995v-236.875zM90.353 419.764h30.117v-391.529h-30.118v391.529z" /> +<glyph unicode="&#xe724;" d="M256 404.706c-99.659 0-180.706-81.047-180.706-180.706s81.047-180.706 180.706-180.706 180.706 81.046 180.706 180.706-81.046 180.706-180.706 180.706zM256 73.412c-83.034 0-150.588 67.554-150.588 150.588s67.554 150.588 150.588 150.588 150.588-67.554 150.588-150.588-67.554-150.588-150.588-150.588z" /> +<glyph unicode="&#xe725;" d="M255.217 398.11l-181.851-219.286h365.478l-183.627 219.286zM255.338 351.067l118.995-142.125h-236.875l117.88 142.125zM451.764 88.471v-30.118h-391.529v30.118h391.529z" /> +<glyph unicode="&#xe726;" d="M391.529 239.059h30.118c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.53h30.118c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412zM225.882 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.463 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.463-30.118 30.118-30.118zM346.353 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.462 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.462-30.118 30.118-30.118zM512 254.118c0-124.567-101.316-225.882-225.882-225.882-40.358 0-79.751 10.812-114.537 31.353l-165.647-85.625 85.624 165.617c-20.51 34.786-31.323 74.18-31.323 114.537 0 124.566 101.316 225.882 225.882 225.882s225.882-101.316 225.882-225.882zM481.882 254.118c0 107.942-87.823 195.764-195.764 195.764s-195.764-87.823-195.764-195.764c0-37.466 10.782-74.060 31.202-105.743l4.728-7.318-50.116-96.918 96.888 50.116 7.319-4.728c31.714-20.389 68.246-31.172 105.743-31.172 107.942 0 195.764 87.823 195.764 195.764z" /> +<glyph unicode="&#xe727;" d="M512 253.184c0 24.907-20.269 45.177-45.176 45.177h-144.805l8.584 27.528 0.692 108.935c0 24.907-20.269 45.176-45.176 45.176h-60.236c-24.907 0-45.177-20.269-45.177-45.176v-103.966l9.337-32.527h-144.866c-24.907 0-45.176-20.269-45.176-45.177v-104.99h28.070l-23.070-180.164h502.001l-23.070 180.164h28.070v105.020zM472.787-1.882h-51.14v60.236h-30.118v-60.236h-30.118v90.353h-30.118v-90.353h-30.118v120.471h-30.118v-120.471h-150.588v60.236h-30.118v-60.236h-51.14l19.215 150.046h395.144l19.215-150.046zM31.924 178.281h-1.807v74.903c0 8.312 6.746 15.059 15.059 15.059h185.675l-20.028 64.904v101.677c0 8.313 6.746 15.059 15.059 15.059h60.236c8.313 0 15.059-6.746 15.059-15.059v-102.189l-20.089-64.392h185.736c8.313 0 15.059-6.747 15.059-15.059v-74.872h-449.957zM240.941 419.764h30.117v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe728;" d="M250.006 286.584c13.162 0 23.16 4.849 30.299 14.577 5.452 7.138 7.981 18.583 7.981 33.732v49.995c0 15.149-2.53 26.292-7.981 33.43-7.168 9.668-17.167 14.547-30.298 14.547-12.891 0-22.889-4.849-29.967-14.547-5.452-7.168-8.012-18.312-8.012-33.461v-49.995c0-15.149 2.56-26.292 8.012-33.732 7.077-9.698 17.077-14.547 29.967-14.547zM237.719 390.009c0 13.131 4.006 19.697 12.288 19.697 8.584 0 12.288-6.566 12.288-19.697v-59.995c0-13.161-3.704-19.998-12.288-19.998-8.282 0-12.288 6.867-12.288 19.998v59.995zM311.717 297.156c-1.445 4.307-2.259 11.143-2.259 21.413v112.58h25.991v-104.839c0-6.024 0-9.427 0.301-10.029 0.572-4.006 2.56-6.264 5.993-6.264 5.12 0 10.541 4.006 16.264 12.288v108.845h25.991v-142.577h-25.991v15.721c-10.27-11.987-19.968-17.709-29.455-17.709-8.283 0-14.276 3.404-16.836 10.571zM410.594 124.281v-13.132h-25.721v13.132c0 12.86 4.307 19.456 12.86 19.456 8.553-0.030 12.86-6.596 12.86-19.456zM131.132 426.572c-6.264 17.709-12.529 35.719-18.582 53.428h30.329l20.269-75.144 19.426 75.144h29.154l-34.575-113.995v-77.433h-28.552v77.433c-2.59 14.005-8.313 34.003-17.468 60.567zM460.288 215.416c-5.15 22.588-23.733 39.153-45.719 41.713-52.586 5.722-105.743 5.722-158.6 5.722s-106.014 0-158.298-5.722c-22.227-2.56-40.538-19.125-45.959-41.713-7.138-31.985-7.439-66.861-7.439-99.99 0-32.858 0-67.976 7.439-99.99 5.15-22.588 23.732-39.153 45.718-41.442 52.556-5.993 105.713-5.993 158.57-5.993s106.014 0 158.6 5.993c21.956 2.289 40.267 18.853 45.719 41.442 7.138 31.985 7.439 67.132 7.439 99.99-0.030 33.13-0.030 68.005-7.469 99.99zM165.135 186.564h-30.54v-162.575h-28.582v162.575h-30.028v26.865h89.148v-26.865zM242.297 23.988h-25.45v15.42c-10.3-11.716-19.998-17.438-29.154-17.438-8.252 0-14.276 3.433-16.565 10.572-1.446 4.276-2.289 10.873-2.289 20.841v111.707h25.45v-103.996c0-6.024 0-9.156 0.271-10.029 0.602-3.976 2.59-5.993 5.994-5.993 5.18 0 10.601 3.976 16.293 11.987v108.002h25.45v-141.071zM339.456 66.274c0-13.161-0.603-22.558-2.59-28.551-3.132-10.3-10.3-15.721-20.3-15.721-9.125 0-18.010 5.15-26.594 15.721v-13.733h-25.389v189.44h25.389v-62.012c8.283 10.3 17.167 15.42 26.594 15.42 9.999 0 17.167-5.421 20.3-15.993 1.988-5.723 2.59-15.119 2.59-28.281v-56.29zM436.013 89.705h-51.14v-24.847c0-13.161 4.307-19.697 13.161-19.697 6.295 0 9.999 3.404 11.445 10.27 0.271 1.416 0.572 7.138 0.572 17.438h25.991v-3.735c0-8.283 0-14.005-0.572-16.565-0.603-5.692-2.892-10.842-5.993-15.42-6.897-9.999-17.438-15.149-30.841-15.149-13.433 0-23.462 4.849-30.87 14.577-5.421 6.867-8.283 18.010-8.283 33.159v49.423c0 15.149 2.59 25.991 8.012 33.159 7.439 9.728 17.438 14.577 30.599 14.577 12.89 0 22.86-4.849 30.268-14.577 5.18-7.138 7.74-17.98 7.74-33.159v-29.455zM314.007 124.582v-60.296c0-12.86-3.735-19.125-11.144-19.125-4.307 0-8.584 1.988-12.89 6.264v85.986c4.307 4.307 8.584 6.295 12.89 6.295 7.409 0 11.144-6.565 11.144-19.125z" /> +<glyph unicode="&#xe729;" d="M471.763 398.983c-12.529 15.902-34.033 24.335-62.132 24.335-7.951 0-15.692-0.693-22.829-1.777-26.172-4.397-90.925-37.105-112.82-105.954-1.536-4.758-0.572-9.999 2.56-13.944 3.132-3.916 8.101-6.054 13.041-5.632 16.926 1.356 29.575 0.362 33.491-4.005 3.132-3.404 4.276-11.625 3.192-23.13-1.385-15.36-10.029-33.1-19.094-50.447-4.367-7.951-17.709-32.377-25.962-32.377-1.957 0-5.090 2.078-8.313 5.541-15.481 16.716-18.673 48.58-21.413 76.74-0.964 9.276-1.837 18.131-3.132 26.504l-2.078 11.776c-2.861 16.565-6.114 35.328-11.264 52.074-6.204 19.396-21.052 44.394-42.797 51.14-4.698 1.325-9.819 1.988-15.149 1.988-20.721 0-39.334-9.909-44.604-12.981-22.076-13.101-39.936-29.154-57.224-44.694-13.041-11.686-26.504-23.823-41.743-34.575-3.976-2.831-6.355-10.089-6.355-14.969 0-5.692 3.192-10.902 8.313-13.463 1.687-0.873 1.928-1.265 3.283-3.915 2.169-4.216 6.656-12.921 19.276-14.939 11.173-1.656 21.655 1.627 30.358 4.367 4.728 1.506 9.216 2.891 12.138 2.891 1.054 0 2.289 0 4.788-4.186 5.21-8.704 8.072-18.643 11.084-29.184 1.566-5.361 3.102-10.722 4.999-16.263 6.686-18.402 11.806-38.49 17.197-59.753l4.728-18.884c10.782-44.423 25.57-105.201 66.831-122.519 6.234-2.651 13.342-4.005 21.173-4.005 20.149 0 41.472 8.854 53.308 16.264 35.117 20.691 67.493 51.26 98.906 93.485 57.555 77.041 93.004 169.863 99.178 202.451 4.909 26.082 1.356 46.381-10.933 62.042zM453.12 342.543c-4.397-23.13-34.726-111.074-93.726-190.012-29.003-39.002-58.428-66.981-90.383-85.805-11.866-7.409-35.75-15.089-47.104-10.27-27.316 11.475-40.026 63.729-49.303 101.918l-4.849 19.245c-5.572 21.956-10.873 42.737-17.95 62.344-1.686 4.819-3.072 9.698-4.488 14.517-3.404 11.897-6.957 24.214-14.185 36.262-7.409 12.529-17.709 18.884-30.63 18.884-7.559 0-14.457-2.168-21.142-4.276-4.788-1.506-9.337-2.922-14.427-3.222-0.391 0.692-0.813 1.506-1.325 2.349 11.385 8.975 21.684 18.221 31.744 27.287 16.926 15.239 32.918 29.606 52.345 41.111 6.988 4.066 18.853 8.824 29.364 8.824 2.59 0 4.94-0.301 6.626-0.753 7.71-2.379 17.86-16.474 22.588-31.262 4.548-14.757 7.62-32.527 10.3-48.219l2.078-11.656c1.174-7.439 1.958-15.751 2.861-24.455 3.222-32.888 6.927-70.114 29.364-94.298 9.396-10.029 19.607-15.119 30.359-15.119 26.142 0 41.954 28.973 53.73 50.597 9.366 17.98 19.456 38.882 21.324 59.633 1.928 21.203-1.536 35.84-10.933 46.17-9.457 10.391-22.92 13.372-34.274 14.186 24.335 46.351 71.168 63.699 80.444 65.265 5.541 0.813 11.746 1.385 18.131 1.385 10.632 0 29.696-1.687 38.46-12.83 6.565-8.403 8.192-20.751 5-37.798z" /> +<glyph unicode="&#xe72a;" d="M512 382.539c-18.853-8.132-39.303-13.974-60.446-16.233 21.775 12.981 38.34 33.43 46.14 57.796-20.149-12.017-42.887-20.781-66.59-25.329-19.155 20.48-46.442 33.13-76.649 33.13-58.157 0-104.93-47.104-104.93-104.9 0-8.132 0.994-16.263 2.59-24.064-87.070 4.518-164.714 46.11-216.365 109.809-9.096-15.571-14.306-33.46-14.306-52.977 0-36.382 18.523-68.517 46.772-87.371-17.197 0.663-33.461 5.542-47.435 13.312 0-0.301 0-0.964 0-1.295 0-50.959 36.051-93.214 84.148-102.972-8.764-2.259-18.191-3.554-27.618-3.554-6.806 0-13.312 0.632-19.788 1.627 13.312-41.592 51.983-71.8 98.093-72.794-36.081-28.25-81.228-44.815-130.289-44.815-8.764 0-16.896 0.301-25.329 1.265 46.471-29.877 101.677-47.104 161.16-47.104 192.964 0 298.556 159.834 298.556 298.526 0 4.578 0 9.095-0.301 13.673 20.42 14.939 38.279 33.491 52.586 54.272zM429.568 314.624c0-111.466-83.275-268.409-268.438-268.409-14.818 0-29.485 1.204-43.911 3.554 20.179 8.313 39.303 19.456 56.952 33.25 10.029 7.83 14.035 21.142 9.999 33.22-4.036 12.077-15.209 20.329-27.949 20.601-16.414 0.332-31.774 5.933-44.183 15.33 0.121 0.030 0.241 0.060 0.362 0.091 13.613 3.493 22.98 15.902 22.619 29.937-0.332 14.065-10.331 25.962-24.094 28.762-19.636 3.976-36.231 15.541-46.953 31.503 1.054-0.060 2.078-0.12 3.132-0.15 0.391 0 0.753 0 1.144 0 13.011 0 24.606 8.373 28.642 20.841 4.156 12.83-0.723 26.835-11.957 34.334-18.974 12.649-31.021 33.009-33.069 55.446 54.934-47.646 124.868-76.228 198.686-80.052 0.512-0.030 1.054-0.030 1.566-0.030 8.764 0 17.107 3.825 22.86 10.511 6.084 7.077 8.524 16.595 6.626 25.72-1.325 6.295-1.988 12.348-1.988 17.92 0 41.231 33.551 74.782 74.812 74.782 21.022 0 40.418-8.373 54.663-23.612 3.493-3.735 7.861-6.476 12.559-8.012-0.572-4.397-0.18-8.945 1.295-13.372 1.897-5.752 5.421-10.601 9.939-14.156-2.68-4.939-3.976-10.631-3.584-16.384 0.301-3.885 0.271-7.74 0.271-11.625z" /> +<glyph unicode="&#xe72b;" d="M261 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256c0 141.161-114.839 256-256 256zM261-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM421.647 208.941v-30.118h-180.706v150.588h30.117v-120.47h150.588z" /> +<glyph unicode="&#xe72c;" d="M396.047 97.897c-21.685-14.396-42.767-21.384-64.482-21.384-11.173 0-20.601 2.469-28.913 7.56-5.12 3.102-8.342 6.716-10.029 11.354-1.566 4.036-3.404 15.721-3.404 48.55v108.574h114.236v105.713h-114.206v121.736h-97.009l-1.686-13.192c-2.892-22.829-8.132-41.894-15.42-56.561-7.379-14.486-16.775-26.503-28.552-36.653-11.987-9.999-26.715-17.95-43.701-23.582l-10.331-3.434v-94.027h53.339v-154.052c0-24.456 2.62-42.858 7.891-55.838 5.15-13.644 14.908-26.774 29.184-39.123 13.975-11.806 30.268-20.691 48.219-26.323 18.402-6.084 39.635-9.216 63.097-9.216 21.052 0 40.538 2.139 57.645 6.325 17.288 3.945 36.563 10.963 58.88 21.474l8.644 4.066v113.574l-23.401-15.541zM389.331 19.079c-16.655-7.379-31.172-12.438-44.333-15.481-31.232-7.62-74.572-7.71-104.599 2.259-14.336 4.517-27.136 11.475-37.918 20.57-10.27 8.915-17.197 17.95-20.691 27.196-3.885 9.517-5.813 24.606-5.813 44.845v184.2h-53.308v42.496c16.354 6.505 30.87 14.998 43.369 25.449 14.757 12.71 26.865 28.19 35.96 46.080 7.5 14.998 12.951 32.467 16.475 53.188h40.659v-121.736h114.236v-45.477h-114.236v-138.662c0-32.166 1.566-49.393 5.3-59.060 3.945-10.933 11.565-19.877 22.588-26.564 27.98-17.197 67.012-15.119 102.31 1.265v-40.568z" /> +<glyph unicode="&#xe72d;" d="M487.876 180.54c2.68 14.757 4.036 29.365 4.036 43.46 0 144.203-128.572 259.253-279.401 231.876-22.769 15.812-49.243 24.124-76.981 24.124-74.722 0-135.53-60.808-135.53-135.53 0-27.738 8.313-54.212 24.124-77.011-2.68-14.758-4.036-29.335-4.036-43.46 0-144.203 128.602-259.252 279.401-231.876 22.769-15.812 49.243-24.124 76.981-24.124 74.722 0 135.53 60.808 135.53 135.529 0 27.738-8.313 54.212-24.124 77.011zM376.471-1.882c-23.341 0-45.538 7.589-64.241 21.956l-5.481 4.216-6.776-1.416c-15.029-3.102-29.817-4.668-44.002-4.668-113.483 0-205.794 92.31-205.794 205.794 0 14.185 1.566 28.973 4.699 44.002l1.386 6.776-4.216 5.482c-14.336 18.643-21.925 40.9-21.925 64.211 0 58.127 47.285 105.412 105.412 105.412 23.341 0 45.538-7.589 64.241-21.956l5.482-4.216 6.776 1.416c14.999 3.072 29.786 4.668 43.972 4.668 113.483 0 205.794-92.311 205.794-205.794 0-14.185-1.566-28.973-4.699-44.002l-1.385-6.776 4.216-5.481c14.366-18.643 21.956-40.9 21.956-64.211 0-58.127-47.284-105.412-105.412-105.412zM383.067 171.625c0-63.699-61.5-93.184-120.471-93.184-70.596 0-129.596 31.382-129.596 69.964 0 17.228 9.728 32.918 31.714 32.918 33.581 0 36.714-48.308 94.75-48.308 27.588 0 45.478 12.197 45.478 28.22 0 20.089-17.257 23.221-45.176 30.118l-45.809 11.294c-45.779 10.993-80.956 29.816-80.956 82.522 0 63.668 63.066 87.221 117.339 87.221 59.301 0 119.206-23.522 119.206-59.603 0-18.191-12.228-34.214-32.618-34.214-30.449 0-31.382 36.051-80.655 36.051-27.588 0-45.177-7.5-45.177-24.124 0-18.221 17.89-22.287 41.773-27.949l32.587-7.529c44.574-10.029 97.611-28.822 97.611-83.396z" /> +<glyph unicode="&#xe72e;" d="M204.649 76.544c-33.43 31.232-52.615 75.355-52.615 121.103 0 91.347 74.331 165.647 165.647 165.647h87.702l-79.692 79.692 21.293 21.293 116.074-116.074-116.073-116.073-21.293 21.293 79.692 79.691h-87.702c-74.722 0-135.53-60.808-135.53-135.529 0-37.978 15.3-73.156 43.038-99.087l-20.54-21.956zM483.328 208.038v-194.861c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe72f;" d="M166.46 232.162l-116.043 116.073 116.073 116.073 21.293-21.293-79.722-79.722h87.703c91.317 0 165.647-74.3 165.647-165.647 0-45.748-19.185-89.841-52.615-121.103l-20.54 21.986c27.738 25.962 43.038 61.139 43.038 99.117 0 74.722-60.808 135.529-135.53 135.529h-87.703l79.692-79.691-21.293-21.323zM481.882 208.188v-195.012c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v194.861h-30.117v-194.861c0-24.907 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v195.012h-30.118z" /> +<glyph unicode="&#xe730;" d="M361.412 148.706c0 30.118 0 150.588 0 180.706 0 150.588-90.353 150.588-90.353 150.588s-90.353 0-90.353-150.588 0-60.236 0-180.706c0 0-60.236 0-60.236-180.706 0 0 71.65 71.529 129.868 87.19 0.12-17.529 9.337-31.654 20.721-31.654s20.601 14.156 20.721 31.654c58.217-15.661 129.868-87.19 129.868-87.19 0 180.706-60.236 180.706-60.236 180.706zM271.059 449.852c7.83-0.632 50.206-8.132 58.639-90.323h-117.278c8.433 82.191 50.808 89.691 58.639 90.323zM271.059 88.471c-38.279 0-82.582-26.142-116.766-51.712 7.921 63.88 25.871 79.18 29.907 81.829h26.624v210.824h120.471v-210.824h26.624c4.036-2.651 21.986-17.95 29.907-81.829-34.183 25.57-78.486 51.712-116.766 51.712z" /> +<glyph unicode="&#xe731;" d="M452.517 292.518c0-115.019-63.94-200.644-157.997-200.644-31.594 0-61.29 17.107-71.228 36.533-17.107-67.404-20.54-80.324-20.54-80.324-6.114-22.468-18.643-44.966-29.666-62.464-31.412-22.197-34.334 12.168-34.334 12.168-0.723 20.601-0.362 45.327 5 67.373 0 0 5.692 23.642 37.647 159.172-9.487 18.673-9.487 46.471-9.487 46.471 0 43.4 25.148 75.776 56.38 75.776 26.654 0 39.575-20.179 39.575-44.183 0-26.654-17.167-66.65-25.871-103.575-7.228-31.232 15.601-56.35 46.050-56.35 55.627 0 92.883 71.168 92.883 155.347 0 64.362-43.37 112.309-121.826 112.309-88.697 0-143.902-66.259-143.902-140.108 0-25.54 7.59-43.429 19.396-57.524 5.361-6.476 6.114-8.734 4.186-16.354-1.476-5.331-4.518-18.281-6.054-23.221-1.898-7.62-8.011-10.27-14.457-7.62-40.749 16.805-59.813 61.711-59.813 111.978 0 83.004 70.024 182.754 208.655 182.754 111.947 0 185.404-81.077 185.404-167.514z" /> +<glyph unicode="&#xe732;" d="M451.764 419.764v-225.882h-30.118v170.707l-281.118-281.118-21.293 21.293 284.883 284.883h-178.236v30.118h225.882zM331.294-1.882h-301.176v301.176h197.994v30.118h-228.111v-361.412h361.412v232.327h-30.118v-202.21z" /> +<glyph unicode="&#xe733;" d="M232.93 6.46l279.070-38.46v241.845h-279.070v-203.385zM263.048 179.727h218.835v-177.182l-218.835 30.178v147.004zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM30.117 179.727h149.595v-135.62l-149.595 20.601v115.019zM0 235.685h209.829v202.752l-209.829-28.883v-173.869zM30.117 383.322l149.595 20.601v-138.089h-149.595v117.489zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM481.882 265.803h-218.835v149.474l218.835 30.178v-179.652z" /> +<glyph unicode="&#xe734;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM150.588 208.941h361.412v30.118h-361.412v-30.118zM150.588 88.471h361.412v30.118h-361.412v-30.118zM62.735 375.19h0.271v-71.77h10.722v82.131h-9.457l-17.95-9.608 2.139-8.463 14.276 7.71zM49.363 191.714l6.596 6.053c17.287 16.685 28.281 28.943 28.281 44.123 0 11.746-7.469 23.884-25.178 23.884-9.457 0-17.529-3.524-23.221-8.343l3.524-7.831c3.825 3.162 9.999 6.957 17.468 6.957 12.228 0 16.293-7.71 16.293-16.053-0.121-12.379-9.638-23.010-30.599-42.978l-8.704-8.463v-6.837h52.404v9.246h-36.864v0.241zM67.343 106.812v0.271c10.12 3.644 15.18 10.842 15.18 19.336 0 9.969-7.319 19.577-23.492 19.577-8.855 0-17.197-3.132-21.504-6.325l2.922-8.101c3.524 2.53 9.849 5.452 16.444 5.452 10.24 0 14.396-5.813 14.396-12.378 0-9.728-10.24-13.914-18.311-13.914h-6.204v-8.313h6.174c10.752 0 21.112-4.94 21.233-16.444 0.15-6.837-4.307-15.902-18.552-15.902-7.74 0-15.059 3.132-18.191 5.18l-3.042-8.584c4.036-2.68 12.108-5.602 21.353-5.602 19.697 0 29.937 11.505 29.937 24.636 0 11.505-8.222 19.094-18.341 21.113z" /> +<glyph unicode="&#xe735;" d="M21.022 304.625h103.544v-310.904h-103.544v310.904zM73.427 454.279c-35.148 0-58.368-23.221-58.368-53.669 0-29.787 22.287-53.639 57.103-53.639h0.632c36.081 0 58.669 23.853 58.368 53.639-0.332 30.449-22.287 53.669-57.736 53.669zM378.036 311.853c-55.085 0-79.601-30.178-93.184-51.471v44.243h-103.213c0 0 1.265-29.184 0-310.904h103.213v173.508c0 9.397 0.964 18.522 3.433 25.389 7.56 18.522 24.456 37.647 53.067 37.647 37.286 0 52.344-28.551 52.344-70.264v-166.28h103.243v178.206c0 95.382-50.839 139.927-118.904 139.927z" /> +<glyph unicode="&#xe736;" d="M512 480v-512h-120.471v512h120.471zM0-32h90.353v512h-90.353v-512zM331.294-32h30.118v30.118h-30.118v-30.118zM228.020-32h25.811v30.118h-25.811v-30.118zM279.673-32h25.811v30.118h-25.811v-30.118zM176.399-32h25.811v30.118h-25.811v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM120.471 389.647h30.117v30.118h-30.118v-30.118zM120.471 88.471h30.117v30.118h-30.118v-30.118zM120.471 28.236h30.117v30.118h-30.118v-30.118zM120.471 148.706h30.117v30.118h-30.118v-30.118zM120.471 269.177h30.117v30.117h-30.118v-30.117zM120.471 329.412h30.117v30.117h-30.118v-30.117zM120.471 208.941h30.117v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM176.399 449.882h25.811v30.118h-25.811v-30.118zM279.673 449.882h25.811v30.118h-25.811v-30.118zM228.020 449.882h25.811v30.118h-25.811v-30.118zM331.294 449.882h30.118v30.118h-30.118v-30.118zM331.294 329.412h30.118v30.117h-30.118v-30.117zM331.294 389.647h30.118v30.118h-30.118v-30.118zM331.294 269.177h30.118v30.117h-30.118v-30.117zM331.294 208.941h30.118v30.118h-30.118v-30.118zM331.294 28.236h30.118v30.118h-30.118v-30.118zM331.294 88.471h30.118v30.118h-30.118v-30.118zM331.294 148.706h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe737;" d="M30.117 449.882h90.353v-90.353h-90.353v90.353zM150.588 359.529h90.353v90.353h-90.353v-90.353zM271.059 359.529h90.353v90.353h-90.353v-90.353zM391.529 449.882v-90.353h90.353v90.353h-90.353zM30.117 239.059h90.353v90.353h-90.353v-90.353zM150.588 239.059h90.353v90.353h-90.353v-90.353zM271.059 239.059h90.353v90.353h-90.353v-90.353zM391.529 239.059h90.353v90.353h-90.353v-90.353zM30.117 118.588h90.353v90.353h-90.353v-90.353zM150.588 118.588h90.353v90.353h-90.353v-90.353zM271.059 118.588h90.353v90.353h-90.353v-90.353zM391.529 118.588h90.353v90.353h-90.353v-90.353zM30.117-1.882h90.353v90.353h-90.353v-90.353zM150.588-1.882h90.353v90.353h-90.353v-90.353zM271.059-1.882h90.353v90.353h-90.353v-90.353zM391.529-1.882h90.353v90.353h-90.353v-90.353z" /> +<glyph unicode="&#xe738;" d="M0 480h150.588v-150.588h-150.588v150.588zM180.706 329.412h150.588v150.588h-150.588v-150.588zM361.412 480v-150.588h150.588v150.588h-150.588zM0 148.706h150.588v150.588h-150.588v-150.588zM180.706 148.706h150.588v150.588h-150.588v-150.588zM361.412 148.706h150.588v150.588h-150.588v-150.588zM0-32h150.588v150.588h-150.588v-150.588zM180.706-32h150.588v150.588h-150.588v-150.588zM361.412-32h150.588v150.588h-150.588v-150.588z" /> +<glyph unicode="&#xe739;" d="M0 480h210.823v-210.823h-210.823v210.823zM271.059 480v-210.823h210.824v210.823h-210.823zM0-1.882h210.823v210.824h-210.823v-210.823zM271.059-1.882h210.824v210.824h-210.823v-210.823z" /> +<glyph unicode="&#xe73a;" d="M30.117 480h90.353v-512h-90.353v512zM150.588-32h90.353v512h-90.353v-512zM271.059-32h90.353v512h-90.353v-512zM391.529 480v-512h90.353v512h-90.353z" /> +<glyph unicode="&#xe73b;" d="M0 480h150.588v-512h-150.588v512zM180.706-32h150.588v512h-150.588v-512zM361.412 480v-512h150.588v512h-150.588z" /> +<glyph unicode="&#xe73c;" d="M0 480h240.941v-512h-240.941v512zM271.059 480v-512h240.941v512h-240.941z" /> +<glyph unicode="&#xe73d;" d="M391.529 480h-271.059c-66.259 0-120.471-54.212-120.471-120.471v-271.059c0-66.259 54.212-120.47 120.471-120.47h271.059c66.259 0 120.471 54.212 120.471 120.471v271.059c0 66.259-54.212 120.471-120.471 120.471zM481.882 88.471c0-49.815-40.538-90.353-90.353-90.353h-271.059c-49.815 0-90.353 40.538-90.353 90.353v180.706h96.588c-8.614-18.372-13.764-38.641-13.764-60.236 0-78.878 64.18-143.059 143.059-143.059s143.059 64.18 143.059 143.059c0 21.595-5.15 41.863-13.764 60.236h96.587v-180.706zM368.941 208.941c0-62.284-50.658-112.941-112.941-112.941s-112.941 50.658-112.941 112.941 50.658 112.941 112.941 112.941 112.941-50.658 112.941-112.941zM365.99 299.294c-26.262 31.894-65.536 52.706-109.99 52.706s-83.727-20.812-109.99-52.706h-115.892v60.236c0 49.815 40.538 90.353 90.353 90.353h271.059c49.815 0 90.353-40.538 90.353-90.353v-60.236h-115.892zM435.32 398.020v-39.092c0-9.005-7.349-16.354-16.324-16.354h-41.201c-9.036 0.030-16.384 7.379-16.384 16.354v39.092c0 9.005 7.349 16.354 16.384 16.354h41.201c8.975 0 16.324-7.349 16.324-16.354z" /> +<glyph unicode="&#xe73e;" d="M512 401.243v-39.394h-78.757v-78.788h-39.394v78.788h-78.757v39.394h78.757v78.758h39.394v-78.758h78.757zM312.923 95.096c0-35.388-16.896-64-43.068-86.769-35.388-30.479-83.697-40.327-129.235-40.327-57.525 0-140.619 24.606-140.619 95.985 0 14.457 4.939 28.642 11.415 41.563 27.347 55.356 112.881 69.541 167.966 71.077-10.119 13.221-19.667 28.582-19.667 45.839 0 10.149 3.644 16.926 6.776 26.444-7.409-0.904-14.457-1.536-21.534-1.536-59.693 0-111.375 44.002-111.375 105.864 0 58.458 45.207 108.303 101.196 120.591 18.793 4.036 38.129 6.174 57.524 6.174h134.505l-41.532-24.305h-41.593c30.509-19.065 45.869-56.32 45.869-90.774 0-81.529-68.94-87.673-68.94-128.301 0-39.695 92.31-55.387 92.31-141.523zM232.659 333.839c0 46.772-25.268 123.995-82.191 123.995-40.267 0-59.964-35.69-59.964-72.012 0-46.743 30.75-119.988 85.534-119.988 42.105 0.030 56.621 30.479 56.621 68.005zM269.553 68.623c0 43.068-40.358 67.072-71.71 88.938-5.24 0.603-10.18 0.603-15.42 0.603-50.417 0-125.531-15.993-125.531-79.993 0-59.060 66.469-81.86 115.712-81.86 45.839 0 96.948 18.462 96.948 72.313z" /> +<glyph unicode="&#xe73f;" d="M393.849 145.243c0-22.468-11.716-59.091-39.394-59.091-27.708 0-39.424 36.623-39.424 59.091 0 22.438 11.716 59.091 39.424 59.091 27.678 0 39.394-36.653 39.394-59.091zM157.546 204.333c-27.678 0-39.394-36.653-39.394-59.091 0-22.468 11.716-59.091 39.394-59.091 27.678 0 39.394 36.623 39.394 59.091 0 22.438-11.716 59.091-39.394 59.091zM512 199.394c0-34.183-3.373-70.476-18.764-101.858-40.629-82.161-152.305-90.142-232.298-90.142-81.228 0-199.68 7.048-241.845 90.142-15.722 31.082-19.095 67.675-19.095 101.858 0 44.935 12.318 87.371 41.864 121.826-5.541 16.926-8.313 34.786-8.313 52.344 0 23.070 5.21 46.11 15.691 67.072 48.61 0 79.692-21.233 116.615-50.146 31.082 7.379 63.066 10.752 95.082 10.752 28.913 0 58.157-3.102 86.166-9.849 36.623 28.612 67.675 49.243 115.682 49.243 10.481-20.932 15.692-44.002 15.692-67.072 0-17.558-2.771-35.087-8.313-51.712 29.546-34.756 41.834-77.523 41.834-122.459zM443.060 145.243c0 47.074-28.582 88.606-78.757 88.606-20.3 0-39.665-3.704-59.995-6.476-15.993-2.47-31.985-3.373-48.309-3.373s-32.316 0.904-48.309 3.373c-19.998 2.771-39.695 6.476-59.995 6.476-50.146 0-78.757-41.532-78.757-88.606 0-94.148 86.137-108.604 161.22-108.604h51.712c75.084-0.030 161.19 14.457 161.19 108.604z" /> +<glyph unicode="&#xe740;" d="M219.708 224c0-60.657-49.212-109.839-109.809-109.839-60.687 0-109.9 49.182-109.9 109.839s49.212 109.839 109.9 109.839c60.596 0 109.809-49.182 109.809-109.839zM512 224c0-60.657-49.212-109.839-109.899-109.839-60.596 0-109.809 49.212-109.809 109.839s49.212 109.839 109.809 109.839c60.687 0 109.899-49.182 109.899-109.839zM481.882 224c0 43.972-35.78 79.721-79.781 79.721-43.942 0-79.692-35.78-79.692-79.721s35.75-79.721 79.692-79.721c44.002 0 79.781 35.75 79.781 79.721z" /> +<glyph unicode="&#xe741;" d="M375.296 312.245l-9.306-88.245h-70.536v-256h-105.954v256h-52.796v88.245h52.796v53.127c0 71.771 29.846 114.628 114.688 114.628h70.505v-88.245h-44.123c-32.918 0-35.117-12.438-35.117-35.418v-44.092h79.842z" /> +<glyph unicode="&#xe742;" d="M507.572 348.356l-159.503 104.026-92.070-76.439-91.738 76.439-159.834-104.026 93.365-74.572-93.335-74.752 103.725-67.554v-46.171l148.089-88.516 148.359 88.486v46.622l102.912 67.162-93.305 74.722 93.334 74.572zM350.178 415.036l106.014-69.15-67.222-53.669-107.219 65.957 68.428 56.862zM361.412 273.784l-105.412-65.024-105.412 65.024 105.412 64.874 105.412-64.874zM55.808 345.886l106.225 69.15 68.216-56.832-107.249-65.988-67.192 53.669zM55.778 201.563l67.222 53.88 107.279-66.198-68.246-56.923-106.255 69.24zM374.513 102.385l-118.212-70.565-117.971 70.536v9.487l25.962-16.896 91.769 76.499 92.040-76.499 26.443 17.257v-9.819zM456.222 201.532l-106.044-69.21-68.457 56.923 107.249 66.198 67.252-53.91z" /> +<glyph unicode="&#xe743;" d="M256 480c-141.372 0-256-114.628-256-256s114.628-256 256-256 256 114.628 256 256-114.628 256-256 256zM481.702 220.356c-62.494 13.733-117.339 12.74-164.714 2.771-7.56 18.884-16.143 38.34-25.57 58.127 50.628 19.516 99.147 47.767 136.975 88.365 33.31-39.394 53.489-90.172 53.489-145.619 0-1.235-0.18-2.409-0.18-3.644zM407.281 391.243c-34.937-37.858-80.956-64.301-129.416-82.522-22.889 44.212-50.899 89.148-84.751 132.066 19.998 5.813 41.050 9.095 62.886 9.095 58.248 0 111.195-22.347 151.281-58.639zM163.539 429.854c34.124-42.075 62.102-86.859 85.173-131.102-89.57-27.708-179.682-30.961-214.257-31.021 14.276 72.493 63.368 132.518 129.084 162.124zM30.117 224c0 4.548 0.422 9.036 0.663 13.523 1.958-0.030 4.036-0.030 6.385-0.030 39.334 0 132.578 3.764 225.34 33.551 9.036-18.823 17.408-37.496 24.697-55.537-108.574-33.159-172.755-111.586-196.156-145.348-37.677 40.358-60.928 94.358-60.928 153.841zM113.182 49.197c17.95 27.136 78.336 105.954 185.073 137.637 28.943-78.245 42.315-142.878 47.164-170.195-27.437-11.866-57.645-18.522-89.419-18.522-54.151 0-103.876 19.185-142.818 51.079zM373.459 31.428c-5.964 32.015-19.155 91.618-45.267 162.786 43.49 8.433 93.636 8.674 150.829-4.367-10.27-67.042-49.935-124.356-105.563-158.419z" /> +<glyph unicode="&#xe744;" d="M421.677 144.941c-14.125 20.3-21.203 43.37-21.203 68.608 0 23.371 6.776 44.635 19.998 63.699 7.379 10.752 19.065 22.769 35.087 36.292-10.451 12.951-21.263 23.402-32.015 30.78-19.094 13.221-40.9 19.998-65.536 19.998-15.089 0-32.918-3.704-53.218-10.451-20.329-7.077-35.087-10.481-44.002-10.481-7.108 0-21.263 3.072-42.496 9.246-21.534 6.144-39.394 9.216-54.453 9.216-35.418 0-64.332-14.788-87.371-44.303-23.070-29.846-34.756-68.005-34.756-115.079 0-50.447 15.39-101.828 45.207-154.774 30.449-52.916 60.928-79.692 92.612-79.692 10.149 0 23.703 3.373 40.629 10.481 16.655 6.747 31.382 10.149 43.7 10.149 12.62 0 28.281-3.072 46.442-9.849 18.492-6.445 32.618-9.849 43.099-9.849 26.142 0 52.615 20.028 79.089 60.325 17.829 26.774 30.148 52.615 37.828 76.921-18.131 5.512-34.454 18.432-48.64 38.762zM407.281 45.764c-19.788-30.118-38.942-46.743-53.911-46.743-4.428 0-13.824 1.416-32.557 7.951-20.872 7.8-40.057 11.746-56.983 11.746-16.293 0-34.786-4.156-55.356-12.499-17.468-7.319-26.052-8.101-28.943-8.101-18.914 0-42.526 22.95-66.379 64.362-27.799 49.363-41.322 95.142-41.322 139.987 0 40.237 9.337 71.891 28.371 96.557 17.438 22.317 37.677 32.708 63.639 32.708 12.077 0 27.166-2.65 46.050-8.041 31.654-9.186 43.49-10.421 50.868-10.421 12.8 0 30.419 3.976 53.519 12.017 17.74 5.903 32.437 8.915 43.671 8.915 18.341 0 34.183-4.788 48.49-14.728 1.988-1.386 4.066-2.952 6.144-4.668-6.867-7.108-12.469-13.884-16.926-20.389-16.866-24.275-25.389-51.471-25.389-80.896 0-31.563 8.945-60.416 26.624-85.836 10.661-15.209 22.528-27.347 35.599-36.322-6.536-15.029-14.998-30.298-25.209-45.598zM283.829 360.613c-7.077-2.168-17.529-4.005-31.985-5.24 0.632 30.449 8.613 56.923 24.004 79.059 15.39 22.197 41.201 37.255 76.95 45.568 0.603-2.771 1.204-4.94 1.506-6.776 0-2.139 0.332-3.976 0.332-6.144 0-12.62-3.072-26.774-8.915-41.863-6.144-15.39-15.692-29.546-28.642-42.466-11.084-11.053-22.166-18.432-33.25-22.137z" /> +<glyph unicode="&#xe745;" d="M114.718 308.45h282.594v-205.011c0-18.764-15.119-33.882-33.521-33.882h-23.161v-69.873c0-17.558-14.125-31.684-31.654-31.684-17.558 0-31.774 14.156-31.774 31.684v69.873h-42.406v-69.873c0-17.529-14.215-31.684-31.774-31.684-17.197 0-31.382 14.156-31.382 31.684l-0.271 69.873h-22.799c-18.733 0-33.852 15.089-33.852 33.882v205.011zM70.987 314.293c-17.529 0-31.714-14.186-31.714-31.383v-132.397c0-17.558 14.185-31.684 31.714-31.684s31.383 14.156 31.383 31.684v132.397c0 17.197-14.095 31.382-31.382 31.382zM398.216 319.533h-284.732c0 48.941 29.274 91.437 72.674 113.573l-21.895 40.298c-1.235 2.168-0.632 4.94 1.536 6.174 2.138 0.933 4.94 0.332 6.174-1.868l22.137-40.628c18.823 8.342 39.756 12.95 61.892 12.95s43.068-4.608 61.892-12.921l22.137 40.629c1.235 2.168 4.036 2.771 6.174 1.868 2.168-1.235 2.771-4.006 1.536-6.174l-21.895-40.298c43.129-22.166 72.373-64.662 72.373-113.604zM203.023 382.931c0 6.476-5.21 12.017-11.957 12.017-6.506 0-11.716-5.541-11.716-12.017 0-6.445 5.21-11.987 11.716-11.987 6.746-0.030 11.957 5.512 11.957 11.987zM332.649 382.931c0 6.476-5.211 12.017-11.716 12.017-6.776 0-11.957-5.541-11.957-12.017 0-6.445 5.211-11.987 11.957-11.987 6.505-0.030 11.716 5.512 11.716 11.987zM441.012 314.293c-17.257 0-31.382-13.854-31.382-31.383v-132.397c0-17.558 14.125-31.684 31.382-31.684 17.529 0 31.714 14.156 31.714 31.684v132.397c-0.030 17.529-14.185 31.382-31.714 31.382z" /> +<glyph unicode="&#xe746;" d="M426.587 480h-381.41c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v383.217l-85.413 83.606zM240.941 449.882v-120.47h90.353v120.47h30.118v-150.588h-240.941v150.588h120.47zM90.353-1.882v180.706h331.294v-180.706h-331.294zM481.882 13.176c0-8.283-6.776-15.059-15.059-15.059h-15.059v210.823h-391.529v-210.823h-15.059c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.283 6.746 15.059 15.059 15.059h45.177v-180.706h301.176v180.706h22.769l67.584-66.138v-370.567z" /> +<glyph unicode="&#xe747;" d="M466.824 480h-381.41l-85.413-83.606v-383.217c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM391.529 449.882v-60.236h-240.941v60.236h240.941zM90.353-1.882v30.118h331.294v-30.118h-331.294zM481.882 13.176c0-8.283-6.747-15.059-15.059-15.059h-15.059v60.236h-391.529v-60.236h-15.059c-8.313 0-15.059 6.776-15.059 15.059v370.567l67.584 66.138h22.769v-90.353h301.176v90.353h45.176c8.313 0 15.059-6.776 15.059-15.059v-421.647zM256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.762-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.792-75.294-75.294-75.294z" /> +<glyph unicode="&#xe748;" d="M286.118-16.941c-9.849 1.747-19.998 3.163-30.419 3.163-10.119 0-20.269-1.445-30.388-3.163l3.764 204.77c-53.88 92.943-104.569 187.603-163.9 277.113 10.12-2.62 20.54-4.337 31.262-4.337s21.715 2.048 32.136 4.337c40.538-71.861 84.57-141.613 127.126-212.269 42.857 70.084 88.335 139.867 127.157 212.269 10.12-2.62 20.57-4.066 30.961-4.066 11.023 0 22.317 1.445 33.009 4.066-23.19-31.865-42.285-66.59-62.253-100.473-34.484-58.789-68.367-117.609-102.25-176.64l3.795-204.77z" /> +<glyph unicode="&#xe749;" d="M496.941 224c0-132.819-108.092-240.941-240.941-240.941s-240.941 108.123-240.941 240.941 108.092 240.941 240.941 240.941 240.941-108.123 240.941-240.941zM485.918 224c0 126.644-103.243 229.918-229.918 229.918s-229.918-103.274-229.918-229.918 103.243-229.918 229.918-229.918 229.918 103.274 229.918 229.918zM67.222 308.179l98.696-270.276c-69.12 33.642-116.706 104.358-116.706 186.097 0 29.816 6.475 58.368 18.010 84.179zM379.693 167.529l-20.45-68.849-74.752 222.088c0 0 12.378 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.611-2.409-55.145-2.68-55.145-2.68s-20.148 0.301-54.302 2.71c-11.294 0.813-12.649-16.113-1.356-16.926 10.481-1.084 21.504-2.198 21.504-2.198l32.256-88.185-45.177-135.53-75.294 223.714c0 0 12.379 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.37-2.409-55.145-2.68-55.145-2.68-3.764 0-8.313 0.271-13.162 0.271 36.834 56.229 100.292 93.334 172.635 93.334 53.79 0 102.731-20.721 139.565-54.332-0.813 0-1.868 0-2.68 0-20.179 0-34.695-17.498-34.695-36.593 0-16.926 9.939-31.202 20.42-48.369 8.101-13.733 16.926-31.473 16.926-57.043 0.030-17.679-7.198-38.159-15.842-66.922zM323.192 31.97c0.271-1.054 0.813-2.108 1.356-2.952-21.504-7.529-44.363-11.836-68.578-11.836-20.148 0-39.785 3.012-58.368 8.613l61.862 180.133 63.729-173.959zM462.788 224c0-76.348-41.412-142.788-103.002-178.567l63.187 182.332c10.481 30.148 15.872 53.218 15.872 74.24 0 7.5-0.542 14.517-1.627 21.233 16.173-29.575 25.57-63.217 25.57-99.238z" /> +<glyph unicode="&#xe74a;" d="M485.858 410.7c-17.468 22.166-54.091 23.010-79.661 19.185-20.48-3.404-90.293-34.063-113.755-107.791 41.773 3.404 63.849-3.042 59.633-49.002-1.747-19.576-11.535-40.478-22.166-60.958-12.83-23.372-36.171-69.421-67.313-36.171-27.678 29.817-25.992 86.889-31.924 124.808-3.885 21.324-7.68 47.737-14.517 69.873-5.994 18.764-20.059 41.292-36.623 46.442-18.311 5.15-40.93-2.981-54.121-10.632-41.834-24.757-69.451-59.693-110.351-88.636v-3.012c13.613-6.837 9.396-17.89 20.028-19.606 25.148-3.373 48.941 23.492 65.626-4.638 10.21-17.017 13.192-35.78 19.547-54.151 8.915-24.666 15.39-51.531 22.588-79.661 11.927-48.188 26.444-119.717 68.156-137.246 20.932-8.945 52.887 3.012 68.638 12.83 43.399 25.6 78.005 62.644 106.496 100.954 66.892 89.54 103.123 191.759 108.664 221.154 3.825 20.058 3.404 40.508-8.945 56.26z" /> +<glyph unicode="&#xe74b;" d="M459.385 328.268c0.332-4.548 0.332-9.096 0.332-13.673 0-138.692-105.592-298.526-298.556-298.526-59.452 0-114.688 17.228-161.16 47.104 8.463-0.964 16.595-1.265 25.359-1.265 49.062 0 94.178 16.565 130.259 44.815-46.14 0.964-84.781 31.202-98.093 72.794 6.475-0.964 12.98-1.627 19.757-1.627 9.457 0 18.884 1.295 27.648 3.554-48.068 9.758-84.148 51.983-84.148 102.972 0 0.332 0 0.994 0 1.295 13.974-7.771 30.208-12.649 47.435-13.312-28.251 18.853-46.773 51.019-46.773 87.371 0 19.486 5.21 37.376 14.306 52.977 51.652-63.699 129.295-105.291 216.365-109.809-1.656 7.8-2.62 15.932-2.62 24.064 0 57.796 46.803 104.9 104.93 104.9 30.208 0 57.495-12.649 76.68-33.13 23.702 4.548 46.411 13.312 66.59 25.329-7.8-24.365-24.365-44.845-46.14-57.796 21.142 2.259 41.592 8.101 60.446 16.233-14.306-20.781-32.166-39.334-52.615-54.272z" /> +<glyph unicode="&#xe74c;" d="M274.191 464.941v-121.735h114.236v-75.596h-114.236v-123.603c0-27.919 1.265-45.809 4.397-53.971 2.831-7.861 8.463-14.095 16.293-18.824 10.661-6.565 22.919-9.728 36.714-9.728 24.486 0 48.64 7.861 72.795 23.884v-75.926c-20.721-9.728-39.213-16.625-55.838-20.42-16.655-4.066-34.816-5.933-54.302-5.933-21.956 0-41.382 2.831-58.368 8.463-16.926 5.331-31.382 13.493-43.279 23.522-11.897 10.33-20.359 21.324-24.756 32.918-4.698 11.625-6.897 28.522-6.897 50.507v169.111h-53.339v68.096c18.793 6.235 35.117 15.059 48.61 26.323 13.523 11.626 24.185 25.42 32.346 41.412 8.132 16.324 13.794 36.714 16.926 61.5h68.698z" /> +<glyph unicode="&#xe74d;" d="M496.941 3.147c0-10.993-9.096-20.089-20.089-20.089h-441.705c-10.963 0-20.088 9.096-20.088 20.089v441.705c0 10.993 9.095 20.089 20.088 20.089h441.736c10.963 0 20.089-9.096 20.089-20.089v-441.705zM235.911 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-321.265c0-5.632 4.397-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v321.265zM446.735 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-200.795c0-5.632 4.367-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v200.795z" /> +<glyph unicode="&#xe74e;" d="M381.289-7.274c0-9.397-0.271-9.397-0.271-9.397v-0.271h-304.369c-9.427 0-9.427 0.271-9.427 0.271h-0.271v197.933h32.557v-166.219h249.555v166.22h32.226v-188.536zM316.507 47.631l-190.102-0.271v40.599l190.102 0.271v-40.599zM321.084 140.092l-3.493-40.327-189.59 17.468 3.764 40.327 189.32-17.468zM333.733 193.34l-10.511-39.303-183.657 49.243 10.481 39.274 183.687-49.212zM357.647 239.601l-20.721-34.937-163.75 96.768 20.691 34.966 163.78-96.798zM397.704 268.092l-33.31-22.859-107.339 157.034 33.611 23.161 107.038-157.334zM445.048 277.489l-40.087-6.988-32.527 187.452 40.056 6.988 32.557-187.452z" /> +<glyph unicode="&#xe74f;" d="M26.564 174.848l-4.186-26.353c-0.211-1.054-0.813-1.868-1.867-1.868s-1.686 0.813-1.867 1.868l-3.584 26.353 3.554 26.774c0.211 1.054 0.843 1.868 1.867 1.868s1.657-0.813 1.867-1.868l4.216-26.774zM45.809 174.848l-5.421-42.436c-0.211-1.054-1.054-1.868-2.078-1.868-1.054 0-1.867 0.813-1.867 2.048l-4.819 42.255c4.819 43.309 4.819 43.309 4.819 43.309 0 1.024 0.813 1.868 1.867 1.868 1.024 0 1.867-0.844 2.078-1.868l5.421-43.309zM64.844 174.848l-5.21-49.574c0-1.235-1.054-2.289-2.319-2.289s-2.289 1.054-2.5 2.289l-4.397 49.574 4.397 51.23c0.211 1.476 1.265 2.5 2.5 2.5 1.265 0 2.319-1.024 2.319-2.5l5.21-51.23zM84.088 174.848l-4.819-51.019c-0.211-1.687-1.445-2.74-2.921-2.74-1.445 0-2.71 1.054-2.71 2.74l-4.397 51.019 4.397 52.706c0 1.686 1.265 2.71 2.71 2.71 1.476 0 2.71-1.024 2.921-2.71l4.819-52.706zM103.334 174.848l-4.397-51.471c-0.211-1.868-1.686-3.343-3.343-3.343s-3.132 1.476-3.132 3.343l-4.186 51.471 4.186 48.911c0 1.716 1.476 3.162 3.132 3.162 1.686 0 3.132-1.476 3.343-3.162l4.397-48.911zM122.971 174.848l-4.397-51.471c0-2.048-1.686-3.764-3.554-3.764-2.078 0-3.554 1.716-3.764 3.764l-3.764 51.471c3.764 79.51 3.764 79.51 3.764 79.51 0.241 2.048 1.686 3.734 3.764 3.734 1.868 0 3.554-1.686 3.554-3.734l4.397-79.51zM142.215 174.426l-3.976-51.050c0-2.289-1.898-3.945-3.976-3.945-2.289 0-3.946 1.656-4.186 3.945l-3.343 51.050c3.343 97.882 3.343 97.882 3.343 97.882 0.211 2.289 1.868 3.976 4.186 3.976 2.078 0 3.976-1.687 3.976-3.976l3.976-97.882zM162.515 174.848l-3.764-50.628c-0.211-2.5-2.078-4.397-4.608-4.397-2.289 0-4.186 1.868-4.397 4.397l-3.343 50.628 3.343 105.834c0 2.5 2.108 4.608 4.397 4.608 2.5 0 4.397-2.108 4.608-4.608l3.764-105.834zM182.393 174.848l-3.373 109.387c-0.18 2.711-2.289 5.029-5 5.029-2.5 0-4.819-2.319-4.819-5.029l-2.952-109.387 2.952-50.417c0.211-2.711 2.319-4.819 4.819-4.819 2.71 0 4.819 2.108 5.030 4.819l3.343 50.417zM202.451 174.848l-3.132-49.995c0-2.921-2.289-5.24-5.24-5.24-2.922 0-5.030 2.319-5.21 5.24l-2.952 49.995 2.952 106.676c0 2.952 2.289 5.24 5.21 5.24 2.952 0 5.24-2.289 5.24-5.24l3.132-106.676zM222.961 174.637l-2.952-49.393c0-3.132-2.5-5.662-5.632-5.662s-5.662 2.53-5.843 5.662l-2.5 49.393 2.5 102.882c0.211 3.343 2.71 5.873 5.843 5.873 3.132 0 5.421-2.53 5.632-5.873l2.952-102.882zM243.23 174.637l-2.5 122.579c0 2.078-1.054 3.976-2.71 5-1.054 0.632-2.108 1.054-3.343 1.054-1.265 0-2.289-0.421-3.343-1.054-1.686-1.054-2.74-2.922-2.74-5l-0.211-1.235-2.108-121.103c0 0 0-0.211 2.319-49.363 0 0 0 0 0-0.241 0-1.235 0.422-2.5 1.265-3.524 1.265-1.476 2.922-2.289 4.819-2.289 1.686 0 3.132 0.813 4.186 1.868 1.265 1.024 1.868 2.5 1.868 4.187l0.211 5 2.289 44.123zM261.452 126.329c0-3.554-2.921-6.476-6.476-6.476s-6.476 2.921-6.716 6.476l-1.235 23.823-1.265 24.486 2.5 133v0.662c0.211 1.868 1.054 3.764 2.53 5 1.024 0.813 2.5 1.476 4.156 1.476 1.054 0 2.319-0.421 3.132-1.054 1.868-1.024 3.132-3.132 3.343-5.421l2.921-133.662-2.892-48.308zM437.76 119.612c-164.202 0-164.382 0-164.382 0-3.554 0.421-6.476 3.132-6.476 6.897v188.084c0 3.524 1.265 5.21 5.873 6.897 11.505 4.578 24.456 7.077 37.858 7.077 54.573 0 99.358-41.803 104.147-95.142 7.108 2.922 14.848 4.608 23.010 4.608 32.618 0 59.181-26.594 59.181-59.422-0.030-32.647-26.594-59-59.212-59z" /> +<glyph unicode="&#xe750;" d="M496.941 83.411c0-55.507-44.875-100.352-100.382-100.352-55.537 0-100.382 44.845-100.382 100.352 0 3.493 0.301 7.228 0.603 10.661l-112.941 56.5c-17.86-16.625-42.044-26.986-68.397-26.986-55.537 0-100.382 44.845-100.382 100.412 0 55.507 44.845 100.352 100.382 100.352 26.353 0 50.508-10.33 68.397-26.955l112.941 56.44c-0.301 3.494-0.603 7.228-0.603 10.662 0 55.567 44.845 100.412 100.382 100.412 55.507 0 100.382-44.845 100.382-100.412 0-55.537-44.875-100.382-100.382-100.382-26.353 0-50.507 10.361-68.397 26.986l-112.941-56.47c0.301-3.464 0.632-7.228 0.632-10.661 0-3.464-0.332-7.228-0.632-10.661l112.941-56.531c17.89 16.655 42.075 27.015 68.397 27.015 55.507 0.060 100.382-44.785 100.382-100.382z" /> +<glyph unicode="&#xe751;" d="M496.941 73.412c0-49.875-40.478-90.353-90.353-90.353h-301.176c-49.875 0-90.353 40.478-90.353 90.353v301.176c0 49.875 40.478 90.353 90.353 90.353h301.176c49.875 0 90.353-40.478 90.353-90.353v-301.176zM349.786 197.316c-17.558 0-33.551-6.897-45.478-18.191l-75.596 37.647c0.301 2.53 0.602 4.699 0.602 7.228s-0.301 4.698-0.632 7.228l75.595 37.617c11.926-11.294 27.919-18.191 45.478-18.191 36.714 0 66.831 30.087 66.831 67.132 0 36.714-30.118 66.831-66.831 66.831-37.014 0-67.132-30.118-67.132-66.831 0-2.5 0.301-4.699 0.632-7.198l-75.596-37.647c-11.897 10.993-27.889 17.89-45.447 17.89-36.714 0-66.831-29.786-66.831-66.831s30.117-66.831 66.831-66.831c17.559 0 33.551 6.897 45.477 17.89l75.595-37.647c-0.332-2.5-0.632-4.699-0.632-7.198 0-36.714 30.118-66.831 67.132-66.831 36.714 0 66.831 30.118 66.831 66.831 0 37.014-30.118 67.102-66.831 67.102z" /> +<glyph unicode="&#xe752;" d="M469.263 180.751c0.723-4.849 1.204-9.939 1.204-14.788 0-39.394-23.070-75.806-64.603-103.002-40.569-26.474-93.997-41.050-150.829-41.050s-110.501 14.577-150.829 41.050c-41.803 27.196-64.603 63.608-64.603 103.002 0 5.331 0.482 10.661 1.205 16.022-15.3 9.698-25.75 26.955-25.75 46.411 0 30.328 24.546 54.875 54.874 54.875 13.613 0 26.263-5.12 35.96-13.372 38.882 24.787 89.63 38.882 143.781 39.876l32.557 102.701c1.445 4.608 6.325 7.288 11.173 6.325l84.3-19.908c7.017 16.023 23.070 27.196 41.532 27.196 25.028 0 45.176-20.42 45.176-45.207 0-24.998-20.149-45.418-45.176-45.418-24.787 0-44.935 20.179-45.176 44.936l-76.529 17.98-28.16-88.877c51.23-2.168 99.087-16.293 136.012-40.327 9.698 8.734 22.588 14.095 36.683 14.095 30.329 0 54.875-24.546 54.875-54.875 0-20.42-11.173-38.159-27.678-47.646zM46.14 201.412c7.77 20.872 22.588 40.327 43.7 57.103-5.541 3.855-12.62 6.053-19.908 6.053-19.908 0-36.172-16.263-36.172-36.172 0-10.722 4.849-20.42 12.379-26.985zM451.764 165.964c0 32.527-19.938 63.608-56.109 87.221-37.406 24.275-87.431 37.858-140.619 37.858s-103.244-13.613-140.649-37.858c-36.202-23.582-56.109-54.663-56.109-87.221 0-32.798 19.908-63.88 56.109-87.462 37.406-24.275 87.431-37.888 140.619-37.888s103.243 13.613 140.619 37.888c36.202 23.582 56.139 54.663 56.139 87.462zM183.627 158.916c-18.221 0-33.762 14.818-33.762 33.039 0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762c0-18.221-15.059-33.039-33.28-33.039zM333.733 110.547c3.644-3.614 3.644-9.698 0-13.342-16.264-16.264-41.532-24.034-77.493-24.034h-0.482c-35.96 0-61.229 7.771-77.493 24.034-3.644 3.644-3.644 9.728 0 13.342 3.644 3.675 9.457 3.675 13.131 0 12.619-12.62 33.521-18.673 64.362-18.673h0.482c30.63 0 51.742 6.053 64.361 18.673 3.644 3.675 9.457 3.675 13.132 0zM362.135 191.955c0-18.191-15.059-33.039-33.28-33.039s-33.762 14.818-33.762 33.039c0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762zM392.734 380.883c0-14.517 11.897-26.443 26.474-26.443s26.474 11.926 26.474 26.443c0 14.577-11.926 26.504-26.474 26.504-14.577 0-26.474-11.927-26.474-26.504zM478.238 228.397c0 19.908-16.264 36.171-36.171 36.171-7.771 0-15.059-2.439-20.901-6.806 20.901-16.775 35.69-36.442 43.249-57.826 8.493 6.837 13.824 17.046 13.824 28.461z" /> +<glyph unicode="&#xe753;" d="M256 464.941c-133.060 0-240.941-107.851-240.941-240.941 0-98.635 59.332-183.417 144.233-220.672-0.662 16.836-0.15 37.014 4.186 55.326 4.608 19.546 30.991 131.283 30.991 131.283s-7.71 15.39-7.71 38.129c0 35.72 20.721 62.343 46.501 62.343 21.925 0 32.497-16.444 32.497-36.141 0-22.016-14.065-54.995-21.293-85.504-6.024-25.57 12.83-46.411 38.038-46.411 45.659 0 76.409 58.609 76.409 128.090 0 52.796-35.599 92.34-100.262 92.34-73.096 0-118.603-54.543-118.603-115.38 0-21.022 6.174-35.81 15.872-47.255 4.428-5.271 5.060-7.409 3.464-13.433-1.144-4.428-3.825-15.119-4.909-19.336-1.626-6.114-6.565-8.283-12.047-6.053-33.702 13.764-49.363 50.628-49.363 92.070 0 68.428 57.706 150.528 172.213 150.528 91.979 0 152.516-66.59 152.516-138.029 0-94.54-52.555-165.135-129.988-165.135-26.022 0-50.507 14.095-58.88 30.058 0 0-13.975-55.537-16.926-66.228-5.12-18.582-15.119-37.135-24.275-51.622 21.655-6.445 44.544-9.909 68.276-9.909 133.060 0 240.941 107.851 240.941 240.941s-107.882 240.941-240.941 240.941z" /> +<glyph unicode="&#xe754;" d="M0 409.555l209.829 28.883v-202.752h-209.829v173.869zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM232.93 6.46l279.070-38.46v241.845h-279.070v-203.385z" /> +<glyph unicode="&#xe755;" d="M417.099 20.706c-15.33-7.83-35.78-25.058-43.309-32.286-5.662-5.391-29.034-8.101-42.225-1.356-15.33 7.83-7.259 20.209-30.931 20.962-11.836 0.301-23.401 0.301-34.966 0.301-10.21-0.301-20.42-0.813-30.931-1.054-35.478-0.813-38.972-23.702-61.862-22.889-15.601 0.542-35.208 12.921-69.12 19.877-23.672 4.879-46.502 6.174-51.38 16.685-4.819 10.511 5.933 22.317 6.716 32.527 0.813 13.733-10.21 32.286-2.139 39.303 6.987 6.174 21.775 1.627 31.443 6.957 10.21 5.903 14.516 10.511 14.516 23.13 3.764-12.86-0.271-23.341-8.614-28.461-5.12-3.223-14.516-4.849-22.347-4.066-6.174 0.572-9.939-0.241-11.565-2.68-2.41-2.952-1.627-8.342 1.355-15.33 2.952-6.988 6.445-11.565 5.903-20.149-0.271-8.613-9.939-18.853-8.313-26.112 0.542-2.711 3.222-5.12 9.939-6.988 10.752-2.952 30.388-5.903 49.483-10.511 21.263-5.361 43.309-15.029 57.043-13.161 40.869 5.662 17.468 49.483 11.023 59.934-34.696 54.363-57.555 89.841-75.836 75.866-4.578-3.764-4.849 9.156-4.578 14.276 0.813 17.769 9.698 24.185 15.059 37.918 10.21 26.112 18.010 55.928 33.611 71.258 11.655 15.089 29.937 39.544 33.46 52.435-2.982 27.979-3.795 57.555-4.307 83.335-0.542 27.708 3.764 51.953 34.966 68.849 7.5 4.066 17.438 5.662 27.949 5.662 18.552 0.301 39.244-5.12 52.435-14.788 20.992-15.601 34.154-48.67 32.557-72.313-1.084-18.553 2.139-37.647 8.072-57.555 6.988-23.401 18.041-39.786 35.78-58.609 21.263-22.588 37.918-66.952 42.767-95.172 4.307-26.413-1.627-42.797-7.259-43.611-8.613-1.295-13.974-28.461-40.87-27.407-17.197 0.813-18.824 11.023-23.673 19.908-7.8 13.704-15.601 9.397-18.553-5.12-1.627-7.259-0.572-18.041 1.868-26.052 4.849-16.956 3.223-32.828 0.271-52.465-5.662-37.105 26.082-44.092 47.345-26.323 20.962 17.438 25.54 20.149 51.892 29.305 40.056 13.733 26.624 25.811 5.090 33.069-19.365 6.476-20.149 39.033-13.192 45.207 1.627-34.966 19.908-40.087 27.437-44.906 33.069-20.51-12.378-37.466-32.015-47.405zM371.923 150.573c7.259 24.245 4.036 33.882-0.783 56.772-3.764 17.197-19.637 40.629-32.015 47.857 3.223-2.68 9.156-10.481 15.33-22.287 10.752-20.209 21.504-50.026 14.517-74.782-2.68-9.637-9.125-10.993-13.433-11.264-18.824-2.168-7.8 22.588-15.601 56.17-8.885 37.677-18.010 40.358-20.149 43.309-11.084 48.911-23.161 44.062-26.684 62.344-2.952 16.414 14.276 29.846-9.125 34.424-7.259 1.356-17.468 8.613-21.504 9.156-4.036 0.512-6.204 27.166 8.854 27.979 14.788 1.084 17.498-16.685 14.788-23.702-4.276-6.957 0.271-9.668 7.56-7.228 5.903 1.867 2.139 17.468 3.493 19.606-3.764 22.588-13.192 25.811-22.86 27.708-37.135-2.952-20.45-43.851-24.214-40.087-5.391 5.662-20.962 0.542-20.962 4.066 0.271 20.962-6.746 33.069-16.414 33.34-10.752 0.271-15.059-14.788-15.601-23.371-0.813-8.072 4.578-25.058 8.613-23.703 2.68 0.813 7.258 6.204 2.41 5.903-2.41 0-6.174 5.933-6.716 12.921-0.271 7.017 2.44 14.005 11.565 13.733 10.481-0.271 10.481-21.233 9.397-22.046-3.464-2.41-7.8-7.018-8.343-7.801-3.464-5.662-10.18-7.228-12.891-9.698-4.578-4.819-5.632-10.21-2.138-12.077 12.348-6.988 8.313-15.029 25.54-15.631 11.294-0.542 19.607 1.626 27.437 4.036 5.903 1.868 25.028 5.903 29.033 12.921 1.868 2.952 4.036 2.952 5.361 2.138 2.68-1.325 3.223-6.445-3.493-8.072-9.397-2.71-18.824-7.83-27.407-11.053-8.343-3.464-11.023-4.819-18.823-6.144-17.739-3.223-30.9 6.445-19.095-5.12 4.036-3.764 7.8-6.174 18.011-5.933 22.588 0.813 47.616 28.010 50.026 15.902 0.512-2.68-7.017-5.903-12.921-8.885-20.962-10.21-35.75-30.66-49.212-23.642-12.107 6.445-24.185 36.322-23.944 22.829 0.271-20.691-27.166-38.972-14.517-62.644-8.343-2.108-26.895-41.683-29.576-62.103-1.626-11.836 1.084-26.353-1.898-34.425-4.036-11.836-22.317 11.294-16.384 39.514 1.054 4.819 0 5.933-1.356 3.464-7.258-13.161-3.222-31.714 2.68-44.604 2.44-5.662 8.613-8.072 13.191-12.921 9.397-10.722 46.501-38.189 52.977-44.906 8.343-7.8 5.933-26.052-11.294-27.949 8.885-16.685 17.468-18.312 17.227-45.447 10.21 5.361 6.204 17.197 1.868 24.697-2.982 5.421-6.716 7.83-5.933 9.156 0.542 0.813 5.933 5.421 8.885 1.868 9.125-10.21 26.353-12.077 44.635-9.668 18.553 2.168 38.46 8.613 47.586 23.401 4.307 6.988 7.259 9.397 9.156 8.072 2.139-1.054 2.981-5.903 2.68-13.974-0.271-8.613-3.764-17.498-6.174-24.757-2.44-8.342-3.223-13.974 4.849-14.276 2.139 15.089 6.445 29.877 7.529 44.935 1.356 17.197-11.023 48.911 2.44 64.813 3.493 4.307 7.771 4.819 13.704 4.819 0.783 21.534 33.882 19.877 44.906 11.023 0 4.879-10.481 9.427-14.788 11.324zM152.486 228.006c-1.898-3.464-6.716-6.144-2.982-6.716 1.356-0.271 5.12 3.012 6.746 6.716 1.325 4.578 2.68 7.018 0.542 7.831-2.44 0.783-1.898-4.036-4.307-7.831zM214.046 373.775c-3.222 0.813-2.68-4.005-1.054-3.493 1.084 0 2.44-1.627 1.868-4.036-0.542-3.222-0.271-5.421 2.168-5.421 0.271 0 0.783 0 0.783 0.813 1.114 6.776-2.138 11.596-3.764 12.137zM221.334 349.048c-2.68-0.271-2.168 5.933 6.445 5.391-5.391-0.542-3.494-5.391-6.445-5.391zM243.381 353.626c7.8 3.464 10.481-1.897 7.8-2.981-2.71-0.783-2.982 4.337-7.8 2.981zM275.908 375.401c-3.493-0.301-2.409-1.868-0.783-2.409 2.139-0.603 4.307-4.337 4.849-8.343 0-0.542 2.68 0.542 2.68 1.356 0.241 6.415-5.391 9.638-6.747 9.397zM291.509 433.468c-2.139 2.168-4.307 4.066-6.445 4.066-5.391-0.542-2.711-6.174-3.493-8.885-1.084-2.952-5.090-5.391-2.409-7.529 2.44-1.868 4.036 2.952 9.156 4.819 1.325 0.572 7.529-0.241 8.854 2.71 0.241 1.356-3.223 2.952-5.662 4.819zM321.356 314.654c-5.090 3.192-6.174 8.584-8.041 6.716-5.662-6.174 6.988-19.095 12.348-20.209 3.223-0.542 5.662 3.795 4.849 7.56-1.084 5.090-4.849 3.222-9.156 5.933z" /> +<glyph unicode="&#xe756;" d="M496.941 152.712c0-51.531-42.587-93.425-94.81-93.425-1.868 0-3.524 0.241-5.18 0.241h-286.358c-52.706 3.072-95.533 43.309-95.533 95.533 0 35.057 19.064 65.656 47.526 82.341-1.867 6.114-2.831 12.469-2.831 19.305 0 35.99 29.425 65.174 66.108 65.174 15.059 0 29.184-5.18 40.478-13.643 23.070 47.526 72.012 80.474 129.175 80.474 79.3 0 143.3-63.308 143.3-141.191 0-2.831-0.241-5.662-0.241-8.463 34.123-14.125 58.368-47.525 58.368-86.347zM193.898 114.341c23.070 0 39.756 7.288 56.47 23.281-6.837 8.463-14.366 16.716-21.413 25.178-9.637-9.397-20.239-15.3-33.882-15.3-16.715 0-31.052 11.053-31.052 28.461 0 17.167 14.366 28.461 30.6 28.461 51.772 0 62.825-90.353 138.12-90.353 36.714 0 67.764 23.070 67.764 61.651 0 39.063-31.292 61.892-68.457 61.892-23.070 0-40.237-6.596-56.712-22.829 7.529-8.222 14.577-16.926 21.895-25.419 9.397 9.186 19.998 15.059 33.401 15.059 15.541 0 31.051-11.053 31.051-27.527 0-18.131-13.192-29.636-30.81-29.636-50.116 0-63.518 90.353-136.945 90.353-36.472 0-68.698-22.348-68.698-61.169-0.060-39.725 31.232-62.103 68.668-62.103z" /> +<glyph unicode="&#xe757;" d="M300.544 118.257l-47.375-47.676-9.397-9.397c-27.618-27.286-66.198-36.714-101.316-27.919-6.626-28.883-32.346-50.206-63.066-50.206-35.449 0-64.332 28.883-64.332 64.632 0 30.389 21.022 56.139 49.573 62.705-9.096 35.478 0.301 74.391 27.919 101.978l3.764 3.764 47.375-47.707-3.434-3.433c-15.692-15.36-15.36-40.448 0-56.109 15.36-15.39 40.478-15.39 55.838 0l9.427 9.397 47.375 47.707 50.508 50.176 47.375-47.707-50.236-50.206zM247.537 378.654l-47.676-47.646-3.795 3.764c-15.36 15.36-40.478 15.36-55.838 0-15.36-15.39-15.36-40.81 0-56.17l106.978-106.978-47.345-47.676-50.507 50.206-47.375 47.646-9.427 9.397c-28.883 28.551-37.647 69.662-26.684 106.375-28.852 6.264-50.176 31.985-50.176 62.735 0 35.78 28.883 64.632 64.332 64.632 32.316 0 58.669-23.522 63.669-53.971 34.816 8.162 72.794-1.596 100.081-28.522l3.764-3.795zM440.471 336.308c10.361-36.051 1.235-76.529-27.286-105.080l-3.764-3.764-47.375 47.707 3.764 3.734c15.36 15.39 15.36 40.508 0 55.868-15.36 15.36-40.478 15.36-55.838 0l-107.309-107.34-47.676 47.707 50.507 50.206 47.676 47.646 9.096 9.427c28.551 28.522 69.331 37.647 105.743 26.956 4.367 31.413 31.353 55.567 64 55.567 35.449 0 64.332-28.883 64.332-64.632-0.030-32.618-24.486-59.603-55.868-64zM432.61-16.941c-31.353 0-57.404 22.257-63.368 51.772-36.382-11.264-78.125-2.53-106.978 26.353l-3.433 3.764 47.375 47.676 3.764-3.735c15.36-15.39 40.478-15.39 55.838 0 15.36 15.36 15.36 40.448 0 55.838l-9.397 9.427-97.913 97.852 47.676 47.707 97.882-97.913 9.125-9.397c27.286-27.286 37.014-65.897 28.22-101.014 31.382-4.397 55.537-31.082 55.537-63.668 0-35.78-28.853-64.662-64.332-64.662z" /> +<glyph unicode="&#xe758;" d="M468.028 464.941l-38.55-433.062-174.080-48.82-172.875 48.82-38.55 433.062h424.057zM389.12 376.425h-266.24l14.155-160.828h184.35l-6.686-68.638-59.302-16.022-59.030 15.993-3.916 42.135h-52.676l6.626-83.697 109.026-30.118h1.175v0.301l108.152 29.817 15.059 163.84h-193.988l-4.518 54.513h202.993l4.819 52.706z" /> +<glyph unicode="&#xe759;" d="M256 464.941c-133.060 0-240.941-107.911-240.941-240.941 0-133.060 107.882-240.941 240.941-240.941s240.941 107.882 240.941 240.941c0 133.029-107.882 240.941-240.941 240.941zM163.629 149.339c-41.894 0-75.867 33.913-75.867 75.836 0 41.894 33.972 75.836 75.867 75.836s75.806-33.942 75.806-75.836c0-41.924-33.942-75.836-75.806-75.836zM353.882 149.339c-41.894 0-75.836 33.913-75.836 75.836 0 41.894 33.942 75.836 75.836 75.836s75.836-33.942 75.836-75.836c0-41.924-33.942-75.836-75.836-75.836z" /> +<glyph unicode="&#xe75a;" d="M0 419.764v-391.529h512v391.529h-512zM255.82 184.335l-207.691 205.312h416.226l-208.535-205.312zM173.327 223.518l-143.209-141.011v282.594l143.209-141.583zM194.74 202.346l61.019-60.325 60.115 59.212 144.565-142.878h-411.919l146.221 143.993zM337.348 222.344l144.535 142.306v-285.124l-144.534 142.818z" /> +<glyph unicode="&#xe75b;" d="M257.897-16.941c-111.978 0-212.691 88.124-212.691 207.993 0 119.688 93.304 175.074 110.592 184.139 20.601 10.963 35.418 16.745 58.73 35.388 11.535 9.065 21.143 22.257 24.184 54.362 16.715-20.028 36.774-43.339 51.019-52.977 23.341-15.36 46.683-21.413 71.077-36.774 14.818-9.065 105.954-64.753 105.954-187.964 0-122.94-97.159-204.167-208.866-204.167zM422.55 181.745c-21.956 0-66.409-45.568-89.721-45.839-27.136-0.542-64.723 53.82-119.085 53.308-42.827-0.301-76.559-34.334-77.132-70.565-0.271-20.329 6.325-35.418 20.329-44.996 9.337-6.295 17.829-10.149 45.538-10.149 46.11 0 104.568 57.103 131.464 56.23 21.384-0.783 54.573-53.248 71.349-54.332 13.161-1.084 20.028 4.94 31.262 21.113 10.963 16.474 15.661 42.285 15.661 56.832 0 14.245-6.325 38.4-29.666 38.4zM358.912 36.036c-9.337-6.867-30.208-15.39-59.844-15.39s-43.611 6.325-52.947 13.462c-1.356 1.084-0.813 1.084-3.584 1.084-3.012 0-4.638-1.385-7.108-3.283-2.198-1.928-3.283-6.596 0-9.878 20.299-18.643 54.332-17.017 79.3-14.788 25.269 2.469 46.683 17.257 48.851 19.456 3.283 3.252 2.469 6.024 1.897 7.951-0.542 1.928-2.199 4.638-6.565 1.385zM344.064 82.929c-5.481 3.554-13.402 4.126-20.812 4.126-7.439 0-11.535 0.542-19.456-2.74-8.012-3.283-16.233-10.692-21.413-15.39-5.24-4.638-6.053-8.222-3.313-12.077 2.771-3.524 5.783-1.325 13.462 5.24 7.951 6.325 13.192 12.077 29.365 12.077s18.944-6.053 22.197-12.077c3.313-6.024 3.584-6.867 6.867-5.24 3.855 1.928 5.783 4.699 3.855 9.397-1.957 4.638-5.24 12.86-10.752 16.685z" /> +<glyph unicode="&#xe75c;" d="M15.059 198.58l141.764-92.461 99.177 82.703-142.908 88.245zM156.822 448.015l-141.764-92.491 98.033-78.457 142.908 88.154zM496.941 355.524l-141.733 92.491-99.207-82.793 142.938-88.154zM256 188.822l99.207-82.703 141.733 92.461-98.003 78.486zM256.301 171.023l-99.478-82.492-42.556 27.829v-31.172l142.035-85.203 142.065 85.203v31.172l-42.587-27.829z" /> +<glyph unicode="&#xe75d;" d="M496.941 442.052l-72.493-363.339-219.166-72.764-190.223 72.764 19.365 97.069h80.956l-7.921-40.057 114.989-43.882 132.457 43.882 18.492 92.401h-329.156l15.782 80.896h329.487l10.39 52.103h-329.216l16.052 80.926h410.202z" /> +<glyph unicode="&#xe75e;" d="M300.243 58.353h-30.118c0 97.37-80.655 176.58-179.772 176.58v30.118c115.742 0 209.89-92.732 209.89-206.697zM90.353 374.588v-30.117c160.436 0 286.118-125.681 286.118-286.118h30.118c0 177.333-138.902 316.236-316.236 316.236zM180.706 103.5c0 24.908-20.209 45.207-45.086 45.207-24.968 0-45.267-20.3-45.267-45.207s20.299-45.176 45.267-45.176c24.877 0 45.086 20.269 45.086 45.176zM150.588 103.5c0-8.283-6.716-15.059-14.969-15.059-8.343 0-15.149 6.776-15.149 15.059 0 8.313 6.806 15.089 15.149 15.089 8.252 0 14.969-6.776 14.969-15.089zM512 13.176v421.647c0 24.908-20.269 45.176-45.176 45.176h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.907 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176zM466.824 449.882c8.313 0 15.059-6.776 15.059-15.059v-421.647c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.282 6.746 15.059 15.059 15.059h421.647z" /> +<glyph unicode="&#xe75f;" d="M336.505-32h-30.118c0 166.068-137.457 301.176-306.387 301.176v30.118c185.555 0 336.505-148.63 336.505-331.294zM0 480v-30.118c270.216 0 481.882-211.667 481.882-481.882h30.118c0 287.082-224.918 512-512 512zM120.471 28.205c0 33.25-26.986 60.266-60.115 60.266-33.28 0-60.356-27.015-60.356-60.265 0-33.22 27.076-60.205 60.356-60.205 33.13 0 60.115 26.986 60.115 60.205zM90.353 28.205c0-16.595-13.463-30.087-29.997-30.087-16.685 0-30.238 13.493-30.238 30.087 0 16.625 13.553 30.148 30.238 30.148 16.535 0 29.997-13.523 29.997-30.148z" /> +</font></defs></svg> \ No newline at end of file diff --git a/assets/fonts/themify.ttf b/assets/fonts/themify.ttf new file mode 100644 index 0000000..5d627e7 Binary files /dev/null and b/assets/fonts/themify.ttf differ diff --git a/assets/fonts/themify.woff b/assets/fonts/themify.woff new file mode 100644 index 0000000..847ebd1 Binary files /dev/null and b/assets/fonts/themify.woff differ diff --git a/assets/fonts/typicons.eot b/assets/fonts/typicons.eot new file mode 100644 index 0000000..0873b12 Binary files /dev/null and b/assets/fonts/typicons.eot differ diff --git a/assets/fonts/typicons.less b/assets/fonts/typicons.less new file mode 100644 index 0000000..643aea7 --- /dev/null +++ b/assets/fonts/typicons.less @@ -0,0 +1,1040 @@ +@charset 'UTF-8'; + +/* @FONT-FACE loads font into browser */ +@font-face { + font-family: 'typicons'; + font-weight: normal; + font-style: normal; + src: url('../fonts/typicons.eot'); + src: url('../fonts/typicons.eot?#iefix') format('embedded-opentype'), + url('../fonts/typicons.woff') format('woff'), + url('../fonts/typicons.ttf') format('truetype'), + url('../fonts/typicons.svg#typicons') format('svg'); +} + +/* :before psuedo-selector inserts and styles icon */ +.typcn:before { + font-family: 'typicons'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + height: 1em; + font-size: 1em; + text-align: center; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +/* Code for individual icons */ +.typcn-adjust-brightness:before { + content: '\e000'; /* '' */ +} +.typcn-adjust-contrast:before { + content: '\e001'; /* '' */ +} +.typcn-anchor-outline:before { + content: '\e002'; /* '' */ +} +.typcn-anchor:before { + content: '\e003'; /* '' */ +} +.typcn-archive:before { + content: '\e004'; /* '' */ +} +.typcn-arrow-back-outline:before { + content: '\e005'; /* '' */ +} +.typcn-arrow-back:before { + content: '\e006'; /* '' */ +} +.typcn-arrow-down-outline:before { + content: '\e007'; /* '' */ +} +.typcn-arrow-down-thick:before { + content: '\e008'; /* '' */ +} +.typcn-arrow-down:before { + content: '\e009'; /* '' */ +} +.typcn-arrow-forward-outline:before { + content: '\e00a'; /* '' */ +} +.typcn-arrow-forward:before { + content: '\e00b'; /* '' */ +} +.typcn-arrow-left-outline:before { + content: '\e00c'; /* '' */ +} +.typcn-arrow-left-thick:before { + content: '\e00d'; /* '' */ +} +.typcn-arrow-left:before { + content: '\e00e'; /* '' */ +} +.typcn-arrow-loop-outline:before { + content: '\e00f'; /* '' */ +} +.typcn-arrow-loop:before { + content: '\e010'; /* '' */ +} +.typcn-arrow-maximise-outline:before { + content: '\e011'; /* '' */ +} +.typcn-arrow-maximise:before { + content: '\e012'; /* '' */ +} +.typcn-arrow-minimise-outline:before { + content: '\e013'; /* '' */ +} +.typcn-arrow-minimise:before { + content: '\e014'; /* '' */ +} +.typcn-arrow-move-outline:before { + content: '\e015'; /* '' */ +} +.typcn-arrow-move:before { + content: '\e016'; /* '' */ +} +.typcn-arrow-repeat-outline:before { + content: '\e017'; /* '' */ +} +.typcn-arrow-repeat:before { + content: '\e018'; /* '' */ +} +.typcn-arrow-right-outline:before { + content: '\e019'; /* '' */ +} +.typcn-arrow-right-thick:before { + content: '\e01a'; /* '' */ +} +.typcn-arrow-right:before { + content: '\e01b'; /* '' */ +} +.typcn-arrow-shuffle:before { + content: '\e01c'; /* '' */ +} +.typcn-arrow-sorted-down:before { + content: '\e01d'; /* '' */ +} +.typcn-arrow-sorted-up:before { + content: '\e01e'; /* '' */ +} +.typcn-arrow-sync-outline:before { + content: '\e01f'; /* '' */ +} +.typcn-arrow-sync:before { + content: '\e020'; /* '' */ +} +.typcn-arrow-unsorted:before { + content: '\e021'; /* '' */ +} +.typcn-arrow-up-outline:before { + content: '\e022'; /* '' */ +} +.typcn-arrow-up-thick:before { + content: '\e023'; /* '' */ +} +.typcn-arrow-up:before { + content: '\e024'; /* '' */ +} +.typcn-at:before { + content: '\e025'; /* '' */ +} +.typcn-attachment-outline:before { + content: '\e026'; /* '' */ +} +.typcn-attachment:before { + content: '\e027'; /* '' */ +} +.typcn-backspace-outline:before { + content: '\e028'; /* '' */ +} +.typcn-backspace:before { + content: '\e029'; /* '' */ +} +.typcn-battery-charge:before { + content: '\e02a'; /* '' */ +} +.typcn-battery-full:before { + content: '\e02b'; /* '' */ +} +.typcn-battery-high:before { + content: '\e02c'; /* '' */ +} +.typcn-battery-low:before { + content: '\e02d'; /* '' */ +} +.typcn-battery-mid:before { + content: '\e02e'; /* '' */ +} +.typcn-beaker:before { + content: '\e02f'; /* '' */ +} +.typcn-beer:before { + content: '\e030'; /* '' */ +} +.typcn-bell:before { + content: '\e031'; /* '' */ +} +.typcn-book:before { + content: '\e032'; /* '' */ +} +.typcn-bookmark:before { + content: '\e033'; /* '' */ +} +.typcn-briefcase:before { + content: '\e034'; /* '' */ +} +.typcn-brush:before { + content: '\e035'; /* '' */ +} +.typcn-business-card:before { + content: '\e036'; /* '' */ +} +.typcn-calculator:before { + content: '\e037'; /* '' */ +} +.typcn-calendar-outline:before { + content: '\e038'; /* '' */ +} +.typcn-calendar:before { + content: '\e039'; /* '' */ +} +.typcn-camera-outline:before { + content: '\e03a'; /* '' */ +} +.typcn-camera:before { + content: '\e03b'; /* '' */ +} +.typcn-cancel-outline:before { + content: '\e03c'; /* '' */ +} +.typcn-cancel:before { + content: '\e03d'; /* '' */ +} +.typcn-chart-area-outline:before { + content: '\e03e'; /* '' */ +} +.typcn-chart-area:before { + content: '\e03f'; /* '' */ +} +.typcn-chart-bar-outline:before { + content: '\e040'; /* '' */ +} +.typcn-chart-bar:before { + content: '\e041'; /* '' */ +} +.typcn-chart-line-outline:before { + content: '\e042'; /* '' */ +} +.typcn-chart-line:before { + content: '\e043'; /* '' */ +} +.typcn-chart-pie-outline:before { + content: '\e044'; /* '' */ +} +.typcn-chart-pie:before { + content: '\e045'; /* '' */ +} +.typcn-chevron-left-outline:before { + content: '\e046'; /* '' */ +} +.typcn-chevron-left:before { + content: '\e047'; /* '' */ +} +.typcn-chevron-right-outline:before { + content: '\e048'; /* '' */ +} +.typcn-chevron-right:before { + content: '\e049'; /* '' */ +} +.typcn-clipboard:before { + content: '\e04a'; /* '' */ +} +.typcn-cloud-storage:before { + content: '\e04b'; /* '' */ +} +.typcn-cloud-storage-outline:before { + content: '\e054'; /* '' */ +} +.typcn-code-outline:before { + content: '\e04c'; /* '' */ +} +.typcn-code:before { + content: '\e04d'; /* '' */ +} +.typcn-coffee:before { + content: '\e04e'; /* '' */ +} +.typcn-cog-outline:before { + content: '\e04f'; /* '' */ +} +.typcn-cog:before { + content: '\e050'; /* '' */ +} +.typcn-compass:before { + content: '\e051'; /* '' */ +} +.typcn-contacts:before { + content: '\e052'; /* '' */ +} +.typcn-credit-card:before { + content: '\e053'; /* '' */ +} +.typcn-css3:before { + content: '\e055'; /* '' */ +} +.typcn-database:before { + content: '\e056'; /* '' */ +} +.typcn-delete-outline:before { + content: '\e057'; /* '' */ +} +.typcn-delete:before { + content: '\e058'; /* '' */ +} +.typcn-device-desktop:before { + content: '\e059'; /* '' */ +} +.typcn-device-laptop:before { + content: '\e05a'; /* '' */ +} +.typcn-device-phone:before { + content: '\e05b'; /* '' */ +} +.typcn-device-tablet:before { + content: '\e05c'; /* '' */ +} +.typcn-directions:before { + content: '\e05d'; /* '' */ +} +.typcn-divide-outline:before { + content: '\e05e'; /* '' */ +} +.typcn-divide:before { + content: '\e05f'; /* '' */ +} +.typcn-document-add:before { + content: '\e060'; /* '' */ +} +.typcn-document-delete:before { + content: '\e061'; /* '' */ +} +.typcn-document-text:before { + content: '\e062'; /* '' */ +} +.typcn-document:before { + content: '\e063'; /* '' */ +} +.typcn-download-outline:before { + content: '\e064'; /* '' */ +} +.typcn-download:before { + content: '\e065'; /* '' */ +} +.typcn-dropbox:before { + content: '\e066'; /* '' */ +} +.typcn-edit:before { + content: '\e067'; /* '' */ +} +.typcn-eject-outline:before { + content: '\e068'; /* '' */ +} +.typcn-eject:before { + content: '\e069'; /* '' */ +} +.typcn-equals-outline:before { + content: '\e06a'; /* '' */ +} +.typcn-equals:before { + content: '\e06b'; /* '' */ +} +.typcn-export-outline:before { + content: '\e06c'; /* '' */ +} +.typcn-export:before { + content: '\e06d'; /* '' */ +} +.typcn-eye-outline:before { + content: '\e06e'; /* '' */ +} +.typcn-eye:before { + content: '\e06f'; /* '' */ +} +.typcn-feather:before { + content: '\e070'; /* '' */ +} +.typcn-film:before { + content: '\e071'; /* '' */ +} +.typcn-filter:before { + content: '\e072'; /* '' */ +} +.typcn-flag-outline:before { + content: '\e073'; /* '' */ +} +.typcn-flag:before { + content: '\e074'; /* '' */ +} +.typcn-flash-outline:before { + content: '\e075'; /* '' */ +} +.typcn-flash:before { + content: '\e076'; /* '' */ +} +.typcn-flow-children:before { + content: '\e077'; /* '' */ +} +.typcn-flow-merge:before { + content: '\e078'; /* '' */ +} +.typcn-flow-parallel:before { + content: '\e079'; /* '' */ +} +.typcn-flow-switch:before { + content: '\e07a'; /* '' */ +} +.typcn-folder-add:before { + content: '\e07b'; /* '' */ +} +.typcn-folder-delete:before { + content: '\e07c'; /* '' */ +} +.typcn-folder-open:before { + content: '\e07d'; /* '' */ +} +.typcn-folder:before { + content: '\e07e'; /* '' */ +} +.typcn-gift:before { + content: '\e07f'; /* '' */ +} +.typcn-globe-outline:before { + content: '\e080'; /* '' */ +} +.typcn-globe:before { + content: '\e081'; /* '' */ +} +.typcn-group-outline:before { + content: '\e082'; /* '' */ +} +.typcn-group:before { + content: '\e083'; /* '' */ +} +.typcn-headphones:before { + content: '\e084'; /* '' */ +} +.typcn-heart-full-outline:before { + content: '\e085'; /* '' */ +} +.typcn-heart-half-outline:before { + content: '\e086'; /* '' */ +} +.typcn-heart-outline:before { + content: '\e087'; /* '' */ +} +.typcn-heart:before { + content: '\e088'; /* '' */ +} +.typcn-home-outline:before { + content: '\e089'; /* '' */ +} +.typcn-home:before { + content: '\e08a'; /* '' */ +} +.typcn-html5:before { + content: '\e08b'; /* '' */ +} +.typcn-image-outline:before { + content: '\e08c'; /* '' */ +} +.typcn-image:before { + content: '\e08d'; /* '' */ +} +.typcn-infinity-outline:before { + content: '\e08e'; /* '' */ +} +.typcn-infinity:before { + content: '\e08f'; /* '' */ +} +.typcn-info-large-outline:before { + content: '\e090'; /* '' */ +} +.typcn-info-large:before { + content: '\e091'; /* '' */ +} +.typcn-info-outline:before { + content: '\e092'; /* '' */ +} +.typcn-info:before { + content: '\e093'; /* '' */ +} +.typcn-input-checked-outline:before { + content: '\e094'; /* '' */ +} +.typcn-input-checked:before { + content: '\e095'; /* '' */ +} +.typcn-key-outline:before { + content: '\e096'; /* '' */ +} +.typcn-key:before { + content: '\e097'; /* '' */ +} +.typcn-keyboard:before { + content: '\e098'; /* '' */ +} +.typcn-leaf:before { + content: '\e099'; /* '' */ +} +.typcn-lightbulb:before { + content: '\e09a'; /* '' */ +} +.typcn-link-outline:before { + content: '\e09b'; /* '' */ +} +.typcn-link:before { + content: '\e09c'; /* '' */ +} +.typcn-location-arrow-outline:before { + content: '\e09d'; /* '' */ +} +.typcn-location-arrow:before { + content: '\e09e'; /* '' */ +} +.typcn-location-outline:before { + content: '\e09f'; /* '' */ +} +.typcn-location:before { + content: '\e0a0'; /* '' */ +} +.typcn-lock-closed-outline:before { + content: '\e0a1'; /* '' */ +} +.typcn-lock-closed:before { + content: '\e0a2'; /* '' */ +} +.typcn-lock-open-outline:before { + content: '\e0a3'; /* '' */ +} +.typcn-lock-open:before { + content: '\e0a4'; /* '' */ +} +.typcn-mail:before { + content: '\e0a5'; /* '' */ +} +.typcn-map:before { + content: '\e0a6'; /* '' */ +} +.typcn-media-eject-outline:before { + content: '\e0a7'; /* '' */ +} +.typcn-media-eject:before { + content: '\e0a8'; /* '' */ +} +.typcn-media-fast-forward-outline:before { + content: '\e0a9'; /* '' */ +} +.typcn-media-fast-forward:before { + content: '\e0aa'; /* '' */ +} +.typcn-media-pause-outline:before { + content: '\e0ab'; /* '' */ +} +.typcn-media-pause:before { + content: '\e0ac'; /* '' */ +} +.typcn-media-play-outline:before { + content: '\e0ad'; /* '' */ +} +.typcn-media-play-reverse-outline:before { + content: '\e0ae'; /* '' */ +} +.typcn-media-play-reverse:before { + content: '\e0af'; /* '' */ +} +.typcn-media-play:before { + content: '\e0b0'; /* '' */ +} +.typcn-media-record-outline:before { + content: '\e0b1'; /* '' */ +} +.typcn-media-record:before { + content: '\e0b2'; /* '' */ +} +.typcn-media-rewind-outline:before { + content: '\e0b3'; /* '' */ +} +.typcn-media-rewind:before { + content: '\e0b4'; /* '' */ +} +.typcn-media-stop-outline:before { + content: '\e0b5'; /* '' */ +} +.typcn-media-stop:before { + content: '\e0b6'; /* '' */ +} +.typcn-message-typing:before { + content: '\e0b7'; /* '' */ +} +.typcn-message:before { + content: '\e0b8'; /* '' */ +} +.typcn-messages:before { + content: '\e0b9'; /* '' */ +} +.typcn-microphone-outline:before { + content: '\e0ba'; /* '' */ +} +.typcn-microphone:before { + content: '\e0bb'; /* '' */ +} +.typcn-minus-outline:before { + content: '\e0bc'; /* '' */ +} +.typcn-minus:before { + content: '\e0bd'; /* '' */ +} +.typcn-mortar-board:before { + content: '\e0be'; /* '' */ +} +.typcn-news:before { + content: '\e0bf'; /* '' */ +} +.typcn-notes-outline:before { + content: '\e0c0'; /* '' */ +} +.typcn-notes:before { + content: '\e0c1'; /* '' */ +} +.typcn-pen:before { + content: '\e0c2'; /* '' */ +} +.typcn-pencil:before { + content: '\e0c3'; /* '' */ +} +.typcn-phone-outline:before { + content: '\e0c4'; /* '' */ +} +.typcn-phone:before { + content: '\e0c5'; /* '' */ +} +.typcn-pi-outline:before { + content: '\e0c6'; /* '' */ +} +.typcn-pi:before { + content: '\e0c7'; /* '' */ +} +.typcn-pin-outline:before { + content: '\e0c8'; /* '' */ +} +.typcn-pin:before { + content: '\e0c9'; /* '' */ +} +.typcn-pipette:before { + content: '\e0ca'; /* '' */ +} +.typcn-plane-outline:before { + content: '\e0cb'; /* '' */ +} +.typcn-plane:before { + content: '\e0cc'; /* '' */ +} +.typcn-plug:before { + content: '\e0cd'; /* '' */ +} +.typcn-plus-outline:before { + content: '\e0ce'; /* '' */ +} +.typcn-plus:before { + content: '\e0cf'; /* '' */ +} +.typcn-point-of-interest-outline:before { + content: '\e0d0'; /* '' */ +} +.typcn-point-of-interest:before { + content: '\e0d1'; /* '' */ +} +.typcn-power-outline:before { + content: '\e0d2'; /* '' */ +} +.typcn-power:before { + content: '\e0d3'; /* '' */ +} +.typcn-printer:before { + content: '\e0d4'; /* '' */ +} +.typcn-puzzle-outline:before { + content: '\e0d5'; /* '' */ +} +.typcn-puzzle:before { + content: '\e0d6'; /* '' */ +} +.typcn-radar-outline:before { + content: '\e0d7'; /* '' */ +} +.typcn-radar:before { + content: '\e0d8'; /* '' */ +} +.typcn-refresh-outline:before { + content: '\e0d9'; /* '' */ +} +.typcn-refresh:before { + content: '\e0da'; /* '' */ +} +.typcn-rss-outline:before { + content: '\e0db'; /* '' */ +} +.typcn-rss:before { + content: '\e0dc'; /* '' */ +} +.typcn-scissors-outline:before { + content: '\e0dd'; /* '' */ +} +.typcn-scissors:before { + content: '\e0de'; /* '' */ +} +.typcn-shopping-bag:before { + content: '\e0df'; /* '' */ +} +.typcn-shopping-cart:before { + content: '\e0e0'; /* '' */ +} +.typcn-social-at-circular:before { + content: '\e0e1'; /* '' */ +} +.typcn-social-dribbble-circular:before { + content: '\e0e2'; /* '' */ +} +.typcn-social-dribbble:before { + content: '\e0e3'; /* '' */ +} +.typcn-social-facebook-circular:before { + content: '\e0e4'; /* '' */ +} +.typcn-social-facebook:before { + content: '\e0e5'; /* '' */ +} +.typcn-social-flickr-circular:before { + content: '\e0e6'; /* '' */ +} +.typcn-social-flickr:before { + content: '\e0e7'; /* '' */ +} +.typcn-social-github-circular:before { + content: '\e0e8'; /* '' */ +} +.typcn-social-github:before { + content: '\e0e9'; /* '' */ +} +.typcn-social-google-plus-circular:before { + content: '\e0ea'; /* '' */ +} +.typcn-social-google-plus:before { + content: '\e0eb'; /* '' */ +} +.typcn-social-instagram-circular:before { + content: '\e0ec'; /* '' */ +} +.typcn-social-instagram:before { + content: '\e0ed'; /* '' */ +} +.typcn-social-last-fm-circular:before { + content: '\e0ee'; /* '' */ +} +.typcn-social-last-fm:before { + content: '\e0ef'; /* '' */ +} +.typcn-social-linkedin-circular:before { + content: '\e0f0'; /* '' */ +} +.typcn-social-linkedin:before { + content: '\e0f1'; /* '' */ +} +.typcn-social-pinterest-circular:before { + content: '\e0f2'; /* '' */ +} +.typcn-social-pinterest:before { + content: '\e0f3'; /* '' */ +} +.typcn-social-skype-outline:before { + content: '\e0f4'; /* '' */ +} +.typcn-social-skype:before { + content: '\e0f5'; /* '' */ +} +.typcn-social-tumbler-circular:before { + content: '\e0f6'; /* '' */ +} +.typcn-social-tumbler:before { + content: '\e0f7'; /* '' */ +} +.typcn-social-twitter-circular:before { + content: '\e0f8'; /* '' */ +} +.typcn-social-twitter:before { + content: '\e0f9'; /* '' */ +} +.typcn-social-vimeo-circular:before { + content: '\e0fa'; /* '' */ +} +.typcn-social-vimeo:before { + content: '\e0fb'; /* '' */ +} +.typcn-social-youtube-circular:before { + content: '\e0fc'; /* '' */ +} +.typcn-social-youtube:before { + content: '\e0fd'; /* '' */ +} +.typcn-sort-alphabetically-outline:before { + content: '\e0fe'; /* '' */ +} +.typcn-sort-alphabetically:before { + content: '\e0ff'; /* '' */ +} +.typcn-sort-numerically-outline:before { + content: '\e100'; /* '' */ +} +.typcn-sort-numerically:before { + content: '\e101'; /* '' */ +} +.typcn-spanner-outline:before { + content: '\e102'; /* '' */ +} +.typcn-spanner:before { + content: '\e103'; /* '' */ +} +.typcn-spiral:before { + content: '\e104'; /* '' */ +} +.typcn-star-full-outline:before { + content: '\e105'; /* '' */ +} +.typcn-star-half-outline:before { + content: '\e106'; /* '' */ +} +.typcn-star-half:before { + content: '\e107'; /* '' */ +} +.typcn-star-outline:before { + content: '\e108'; /* '' */ +} +.typcn-star:before { + content: '\e109'; /* '' */ +} +.typcn-starburst-outline:before { + content: '\e10a'; /* '' */ +} +.typcn-starburst:before { + content: '\e10b'; /* '' */ +} +.typcn-stopwatch:before { + content: '\e10c'; /* '' */ +} +.typcn-support:before { + content: '\e10d'; /* '' */ +} +.typcn-tabs-outline:before { + content: '\e10e'; /* '' */ +} +.typcn-tag:before { + content: '\e10f'; /* '' */ +} +.typcn-tags:before { + content: '\e110'; /* '' */ +} +.typcn-th-large-outline:before { + content: '\e111'; /* '' */ +} +.typcn-th-large:before { + content: '\e112'; /* '' */ +} +.typcn-th-list-outline:before { + content: '\e113'; /* '' */ +} +.typcn-th-list:before { + content: '\e114'; /* '' */ +} +.typcn-th-menu-outline:before { + content: '\e115'; /* '' */ +} +.typcn-th-menu:before { + content: '\e116'; /* '' */ +} +.typcn-th-small-outline:before { + content: '\e117'; /* '' */ +} +.typcn-th-small:before { + content: '\e118'; /* '' */ +} +.typcn-thermometer:before { + content: '\e119'; /* '' */ +} +.typcn-thumbs-down:before { + content: '\e11a'; /* '' */ +} +.typcn-thumbs-ok:before { + content: '\e11b'; /* '' */ +} +.typcn-thumbs-up:before { + content: '\e11c'; /* '' */ +} +.typcn-tick-outline:before { + content: '\e11d'; /* '' */ +} +.typcn-tick:before { + content: '\e11e'; /* '' */ +} +.typcn-ticket:before { + content: '\e11f'; /* '' */ +} +.typcn-time:before { + content: '\e120'; /* '' */ +} +.typcn-times-outline:before { + content: '\e121'; /* '' */ +} +.typcn-times:before { + content: '\e122'; /* '' */ +} +.typcn-trash:before { + content: '\e123'; /* '' */ +} +.typcn-tree:before { + content: '\e124'; /* '' */ +} +.typcn-upload-outline:before { + content: '\e125'; /* '' */ +} +.typcn-upload:before { + content: '\e126'; /* '' */ +} +.typcn-user-add-outline:before { + content: '\e127'; /* '' */ +} +.typcn-user-add:before { + content: '\e128'; /* '' */ +} +.typcn-user-delete-outline:before { + content: '\e129'; /* '' */ +} +.typcn-user-delete:before { + content: '\e12a'; /* '' */ +} +.typcn-user-outline:before { + content: '\e12b'; /* '' */ +} +.typcn-user:before { + content: '\e12c'; /* '' */ +} +.typcn-vendor-android:before { + content: '\e12d'; /* '' */ +} +.typcn-vendor-apple:before { + content: '\e12e'; /* '' */ +} +.typcn-vendor-microsoft:before { + content: '\e12f'; /* '' */ +} +.typcn-video-outline:before { + content: '\e130'; /* '' */ +} +.typcn-video:before { + content: '\e131'; /* '' */ +} +.typcn-volume-down:before { + content: '\e132'; /* '' */ +} +.typcn-volume-mute:before { + content: '\e133'; /* '' */ +} +.typcn-volume-up:before { + content: '\e134'; /* '' */ +} +.typcn-volume:before { + content: '\e135'; /* '' */ +} +.typcn-warning-outline:before { + content: '\e136'; /* '' */ +} +.typcn-warning:before { + content: '\e137'; /* '' */ +} +.typcn-watch:before { + content: '\e138'; /* '' */ +} +.typcn-waves-outline:before { + content: '\e139'; /* '' */ +} +.typcn-waves:before { + content: '\e13a'; /* '' */ +} +.typcn-weather-cloudy:before { + content: '\e13b'; /* '' */ +} +.typcn-weather-downpour:before { + content: '\e13c'; /* '' */ +} +.typcn-weather-night:before { + content: '\e13d'; /* '' */ +} +.typcn-weather-partly-sunny:before { + content: '\e13e'; /* '' */ +} +.typcn-weather-shower:before { + content: '\e13f'; /* '' */ +} +.typcn-weather-snow:before { + content: '\e140'; /* '' */ +} +.typcn-weather-stormy:before { + content: '\e141'; /* '' */ +} +.typcn-weather-sunny:before { + content: '\e142'; /* '' */ +} +.typcn-weather-windy-cloudy:before { + content: '\e143'; /* '' */ +} +.typcn-weather-windy:before { + content: '\e144'; /* '' */ +} +.typcn-wi-fi-outline:before { + content: '\e145'; /* '' */ +} +.typcn-wi-fi:before { + content: '\e146'; /* '' */ +} +.typcn-wine:before { + content: '\e147'; /* '' */ +} +.typcn-world-outline:before { + content: '\e148'; /* '' */ +} +.typcn-world:before { + content: '\e149'; /* '' */ +} +.typcn-zoom-in-outline:before { + content: '\e14a'; /* '' */ +} +.typcn-zoom-in:before { + content: '\e14b'; /* '' */ +} +.typcn-zoom-out-outline:before { + content: '\e14c'; /* '' */ +} +.typcn-zoom-out:before { + content: '\e14d'; /* '' */ +} +.typcn-zoom-outline:before { + content: '\e14e'; /* '' */ +} +.typcn-zoom:before { + content: '\e14f'; /* '' */ +} \ No newline at end of file diff --git a/assets/fonts/typicons.svg b/assets/fonts/typicons.svg new file mode 100644 index 0000000..63929fe --- /dev/null +++ b/assets/fonts/typicons.svg @@ -0,0 +1,1180 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +Created by FontForge 20120731 at Sun Jul 27 14:53:18 2014 + By Stephen Hutchings +(c) Stephen Hutchings 2012 +</metadata> +<defs> +<font id="typicons" horiz-adv-x="750" > + <font-face + font-family="Typicons" + font-weight="400" + font-stretch="normal" + units-per-em="1000" + panose-1="2 0 5 3 0 0 0 0 0 0" + ascent="800" + descent="-200" + bbox="-1.5 -242 1001.45 800" + underline-thickness="50" + underline-position="-100" + unicode-range="U+E000-E14F" + /> +<missing-glyph horiz-adv-x="364" +d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" /> + <glyph glyph-name=".notdef" horiz-adv-x="364" +d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" /> + <glyph glyph-name="glyph1" unicode="&#xe001;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM333 50q103 0 176.5 73t73.5 177t-73.5 177t-176.5 73t-176.5 -73t-73.5 -177t73.5 -177t176.5 -73zM333 508q86 0 147.5 -61t61.5 -147t-61.5 -147 +t-147.5 -61v416z" /> + <glyph glyph-name="glyph2" unicode="&#xe002;" +d="M333 550q0 42 42 42t42 -42t-42 -42t-42 42zM42 342q0 51 37 88t88 37h17q-17 38 -17 83q0 86 61 147t147 61t147 -61t61 -147q0 -45 -17 -83h17q36 0 64.5 -18t44.5 -45q16 -28 16 -62q0 -26 -8 -46q50 -37 50 -100q0 -107 -53 -192t-134 -133q-88 -50 -188 -50 +q-79 0 -148 31t-117 79t-79 117t-31 148q0 63 50 100q-8 20 -8 46zM125 238q-17 0 -29.5 -12.5t-12.5 -29.5q0 -120 86 -206t206 -86t206 86t86 206q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5q0 -76 -48.5 -133t-117.5 -71v308h166q17 0 29.5 12.5t12.5 29.5 +t-12.5 29t-29.5 12h-166v50q36 13 59.5 44t23.5 73q0 52 -36.5 88.5t-88.5 36.5t-88.5 -36.5t-36.5 -88.5q0 -41 24 -72.5t59 -44.5v-50h-166q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5h166v-308q-69 14 -117.5 71t-48.5 133q0 17 -12.5 29.5t-29.5 12.5zM180 258 +q28 -25 28 -62q0 -95 84 -144v206h-112zM458 52q36 21 60 58.5t24 85.5q0 37 28 62h-112v-206zM333 550q0 42 42 42t42 -42t-42 -42t-42 42z" /> + <glyph glyph-name="glyph0" unicode="&#xe000;" horiz-adv-x="783" +d="M392 511l-42 122q-6 17 2 33.5t25 22.5q24 8 45 -9.5t11 -46.5zM58 342l123 -42l-123 -42q-17 -6 -33.5 2.5t-22.5 25.5q-8 24 9.5 45t46.5 11zM392 89l41 -122q6 -17 -2 -33.5t-25 -22.5q-24 -8 -45 9.5t-11 46.5zM781 314q8 -24 -9.5 -45t-46.5 -11l-122 42l122 42 +q17 6 33.5 -2.5t22.5 -25.5zM126 506q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24l57 -116zM126 15q-25 13 -24 40t24 39l116 57l-57 -116q-8 -17 -25 -22.5t-34 2.5zM657 94q17 -8 22.5 -25t-2.5 -34q-13 -25 -40 -24t-39 24l-57 116zM657 585q25 -13 24 -40t-24 -39 +l-116 -57l57 116q8 17 25 22.5t34 -2.5zM392 488q77 0 132 -55.5t55 -132.5t-55 -132.5t-132 -55.5t-132.5 55.5t-55.5 132.5t55.5 132.5t132.5 55.5z" /> + <glyph glyph-name="glyph3" unicode="&#xe003;" horiz-adv-x="583" +d="M542 238q17 0 29 -12.5t12 -29.5q0 -121 -85 -206.5t-206 -85.5t-206.5 85.5t-85.5 206.5q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5q0 -75 47.5 -132.5t119.5 -71.5v308h-167q-17 0 -29 12.5t-12 29.5t12 29t29 12h167v50q-37 13 -60 45t-23 72q0 52 36.5 88.5 +t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72t-60.5 -45v-50h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-167v-308q72 14 119.5 71.5t47.5 132.5q0 17 12.5 29.5t29.5 12.5zM292 592q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5 +t-12 29.5t-29 12.5z" /> + <glyph glyph-name="glyph4" unicode="&#xe004;" horiz-adv-x="792" +d="M458 300q9 0 15 -6t6 -15t-6 -15t-15 -6h-125q-9 0 -15 6t-6 15t6 15t15 6h125zM750 592q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-708q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h708zM667 467q17 0 29 -12.5t12 -29.5v-333q0 -52 -36.5 -88.5 +t-88.5 -36.5h-375q-52 0 -88.5 36.5t-36.5 88.5v333q0 17 12.5 29.5t29.5 12.5h542zM583 50q17 0 29.5 12.5t12.5 29.5v291h-458v-291q0 -17 12 -29.5t29 -12.5h375z" /> + <glyph glyph-name="glyph5" unicode="&#xe005;" +d="M750 8q0 -17 -12 -29t-30 -12q-21 0 -34 19q-48 74 -110.5 106.5t-146.5 38.5v-60q0 -34 -25 -59q-24 -24 -59 -23.5t-58 23.5l-263 258q-12 12 -12 30t12 30l262 258q23 23 58.5 23.5t59.5 -23.5q25 -25 25 -59v-71q145 -29 239 -144t94 -264v-42zM376 216 +q179 -4 282 -88q-24 101 -103 171t-185 82l-37 2v146l-232 -229l232 -229v146z" /> + <glyph glyph-name="glyph6" unicode="&#xe006;" horiz-adv-x="667" +d="M292 571q16 0 28.5 -12.5t12.5 -29.5v-106q142 -16 238 -122.5t96 -250.5v-42q-64 97 -146 130.5t-188 36.5v-104q0 -17 -12.5 -29.5t-28.5 -12.5q-18 0 -30 12l-262 259l262 259q12 12 30 12z" /> + <glyph glyph-name="glyph7" unicode="&#xe007;" horiz-adv-x="667" +d="M333 -88l-296 297q-37 37 -37 88t37 88q34 34 84.5 35.5t86.5 -30.5v202q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-202q36 32 87 30.5t85 -35.5q37 -37 37 -88t-37 -88zM125 339q-18 0 -30 -12t-12 -29.5t12 -29.5l238 -238l238 238q12 12 12 29.5t-12 29.5 +t-29.5 12t-29.5 -12l-137 -138v403q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-403l-138 138q-12 12 -29 12z" /> + <glyph glyph-name="glyph8" unicode="&#xe008;" horiz-adv-x="583" +d="M559 356q25 -25 25 -59t-25 -59l-267 -267l-268 267q-25 25 -25 59t25 59t59 25t59 -25l66 -66v302q0 34 24.5 58.5t59.5 24.5q34 0 58.5 -24.5t24.5 -58.5v-302l66 66q25 25 59 25t59 -25z" /> + <glyph glyph-name="glyph9" unicode="&#xe009;" horiz-adv-x="417" +d="M404 246q12 -12 12 -29.5t-12 -29.5l-196 -196l-196 196q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l96 -95v316q0 17 12 29t29 12t29.5 -12t12.5 -29v-316l96 95q12 12 29 12t29 -12z" /> + <glyph glyph-name="glyph10" unicode="&#xe00a;" +d="M42 -33q-18 0 -30 12.5t-12 28.5v42q0 149 94 264t239 144v71q0 34 25 59q24 24 59.5 23.5t58.5 -23.5l262 -258q12 -12 12 -30t-12 -30l-263 -258q-23 -23 -58 -23.5t-59 23.5q-25 25 -25 59v60q-84 -6 -146.5 -38.5t-110.5 -106.5q-13 -19 -34 -19zM375 216l42 1v-146 +l232 229l-232 229v-146q-16 0 -37 -2q-106 -12 -185 -82t-103 -171q103 84 283 88z" /> + <glyph glyph-name="glyph11" unicode="&#xe00b;" horiz-adv-x="667" +d="M333 529q0 17 12.5 29.5t29.5 12.5t29 -12l263 -259l-263 -259q-12 -12 -29 -12t-29.5 12.5t-12.5 29.5v104q-106 -3 -187.5 -36.5t-145.5 -130.5v42q0 144 95.5 250.5t237.5 122.5v106z" /> + <glyph glyph-name="glyph12" unicode="&#xe00c;" horiz-adv-x="805" +d="M510 50q0 -51 -37 -88t-88 -37t-88 37l-297 296l297 297q35 35 88 35t88 -35q37 -37 37 -88q0 -49 -32 -84h202q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-202q32 -35 32 -83zM118 258l238 -237q12 -12 29.5 -12t29.5 12t12 29t-12 29l-138 138h403 +q17 0 29 12t12 29t-12 29.5t-29 12.5h-403l138 137q12 12 12 30q0 17 -12 29t-29.5 12t-29.5 -12z" /> + <glyph glyph-name="glyph13" unicode="&#xe00d;" horiz-adv-x="704" +d="M621 342q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24 -58.5t-59 -24.5h-302l66 -66q25 -24 25 -58.5t-25 -59.5q-24 -24 -59 -24t-59 24l-267 267l267 268q25 25 59 25t59 -25q25 -24 25 -58.5t-25 -59.5l-66 -66h302z" /> + <glyph glyph-name="glyph14" unicode="&#xe00e;" horiz-adv-x="517" +d="M476 342q17 0 29 -12.5t12 -29.5t-12 -29.5t-29 -12.5h-316l95 -95q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12l-196 196l196 196q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-95 -95h316z" /> + <glyph glyph-name="glyph15" unicode="&#xe00f;" horiz-adv-x="958" +d="M625 633q51 0 88 -37t37 -88v-7q90 -23 149 -102t59 -182q0 -121 -85 -206.5t-206 -85.5h-375q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85h41q49 0 83 -31l121 120q36 36 88 36zM667 8q86 0 147 61.5t61 147.5t-55 147t-132 61h-87l53 54q12 12 12 29.5t-12 29.5 +t-29 12t-29 -12l-155 -155l155 -154q12 -12 29 -12t29 12t12 29.5t-12 29.5l-53 54h87q43 0 73.5 -36.5t30.5 -88.5t-36.5 -88.5t-88.5 -36.5h-375q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h41q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-41q-86 0 -147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5h375zM708 258q0 -34 -24.5 -58.5t-58.5 -24.5q-35 0 -59 24l-155 155q-9 -24 -30 -39t-48 -15h-41q-35 0 -59.5 -24.5t-24.5 -58.5q0 -35 25 -59.5t59 -24.5h375q34 0 58.5 24.5t24.5 59.5q0 30 -15 53.5t-37 28.5q10 -17 10 -41z" /> + <glyph glyph-name="glyph16" unicode="&#xe010;" +d="M562 467q77 0 132.5 -61.5t55.5 -147.5t-61 -147t-147 -61h-334q-86 0 -147 61t-61 147t61 147.5t147 61.5q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5h334q52 0 88.5 36.5t36.5 88.5t-31 88.5t-74 36.5 +h-86l53 -54q12 -12 12 -29t-12 -29q-13 -13 -29 -13t-29 13l-155 154l155 154q12 12 29 12t29 -12t12 -29t-12 -29l-53 -54h86z" /> + <glyph glyph-name="glyph17" unicode="&#xe011;" horiz-adv-x="792" +d="M490 675h302v-292q0 -40 -23.5 -72t-60.5 -45v-5v-294h-291q-13 -37 -48.5 -60.5t-76.5 -23.5h-292v292q0 40 23.5 72t60.5 45l-1 5v295h290q13 37 45 60t72 23zM625 50v211q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5v-128h-125q-17 0 -29.5 -12t-12.5 -29 +t12.5 -29.5t29.5 -12.5h208zM167 508v-211q0 -17 12 -29t29 -12t29.5 12t12.5 29v128h128q17 0 29 12.5t12 29.5t-12 29t-29 12h-211zM708 383v209h-208q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h66l-137 -137q-12 -12 -12 -29.5t12 -29.5t29 -12q18 0 30 12 +l137 137v-66q0 -17 12.5 -29t29.5 -12t29 12t12 29zM292 -33q17 0 29 12t12 29t-12 29.5t-29 12.5h-66l137 137q12 12 12 29.5t-12 29.5t-30 12q-17 0 -29 -12l-137 -137v66q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-208h209zM333 300q34 0 59 -24.5t25 -58.5 +q0 -22 -13 -43q5 1 15 1h81v86l1 9q-19 -12 -43 -12q-34 0 -58.5 25t-24.5 59q0 22 12 42l-9 -1h-86v-86l-1 -9q19 12 42 12z" /> + <glyph glyph-name="glyph18" unicode="&#xe012;" horiz-adv-x="667" +d="M458 633h209v-208q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5v66l-137 -137q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l137 137h-66q-17 0 -29 12.5t-12 29.5t12 29t29 12zM221 246q12 12 29 12t29 -12t12 -29.5t-12 -29.5l-137 -137h66 +q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-166h-42v208q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-66zM125 300q-17 0 -29.5 12.5t-12.5 29.5v208h209q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-125v-125q0 -17 -12.5 -29.5t-29.5 -12.5zM542 300q17 0 29 -12.5 +t12 -29.5v-208h-208q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h125v125q0 17 12.5 29.5t29.5 12.5z" /> + <glyph glyph-name="glyph19" unicode="&#xe013;" horiz-adv-x="792" +d="M667 675q51 0 88 -37t37 -88t-37 -88l-37 -37q32 -35 32 -83q0 -57 -45 -95q3 -13 3 -28v-252h-247q-18 0 -31 4q-38 -46 -97 -46q-50 0 -85 33l-37 -38q-37 -37 -86 -37q-51 0 -88 37t-37 88q0 52 37 89l39 39q-29 35 -29 81q0 53 41 91q-5 25 -5 31v253h253q9 0 27 -4 +q38 45 95 45q50 0 84 -31l36 36q37 37 89 37zM167 508v-166q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83h83q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-166zM696 521q12 12 12 29t-12 29q-13 13 -29 13q-17 0 -30 -13l-137 -137v66q0 17 -12.5 29.5t-29.5 12.5 +t-29 -12.5t-12 -29.5v-208h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-66zM375 50v208h-203q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5h61l-137 -137q-12 -12 -12 -29.5t12 -29.5t29 -12q15 0 27 12l140 142v-71q0 -17 12 -29.5t29 -12.5t29.5 12.5 +t12.5 29.5zM375 300v94q-22 -11 -39 -11h-44v-41q0 -21 -12 -42h95zM417 258v-96q21 13 44 13h39v44q0 32 30 39h-113zM419 92q0 -17 12.5 -29.5t29.5 -12.5h164v167q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-84h-81q-17 0 -29.5 -12t-12.5 -29z" /> + <glyph glyph-name="glyph20" unicode="&#xe014;" horiz-adv-x="667" +d="M88 258h204v-208q0 -18 -10 -30t-27 -12t-29.5 12.5t-12.5 29.5v71l-142 -142q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l137 137h-61q-17 0 -29 12.5t-12 29.5t12 29t29 12zM125 342q-17 0 -29.5 12t-12.5 29v167h167q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12zM542 258q17 0 29 -12t12 -29v-167h-166q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h83v84q0 17 12.5 29t29.5 12zM596 621q12 12 29 12t29 -12t12 -29.5t-12 -29.5l-137 -137h66q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-208v208q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-66z" /> + <glyph glyph-name="glyph21" unicode="&#xe015;" horiz-adv-x="951" +d="M927 359q25 -24 25 -58.5t-25 -59.5l-393 -392q-25 -25 -58 -25q-34 0 -59 25l-393 392q-25 25 -25 59.5t25 58.5l393 392q25 25 59 25q33 0 58 -25zM684 133q16 0 29 13l155 154l-155 154q-13 13 -29 13q-17 0 -30 -13q-12 -12 -12 -29t12 -29l54 -54h-191v191l54 -54 +q12 -12 30 -12q17 0 29 12t12 29.5t-12 29.5l-154 154l-155 -154q-12 -12 -12 -29.5t12 -29.5t30 -12q17 0 29 12l54 54v-191h-191l54 54q12 12 12 29t-12 29q-13 13 -30 13q-16 0 -29 -13l-155 -154l155 -154q13 -13 29 -13q17 0 30 13q12 12 12 29t-12 29l-54 54h191v-191 +l-54 54q-12 12 -29 12q-18 0 -30 -12t-12 -29.5t12 -29.5l155 -154l154 154q12 12 12 29.5t-12 29.5t-29 12q-18 0 -30 -12l-54 -54v191h191l-54 -54q-12 -12 -12 -29t12 -29q13 -13 30 -13zM612 217h-53v-53q20 11 42 11q0 22 11 42zM339 217q12 -22 12 -42q21 0 41 -11v53 +h-53zM339 383h53v53q-20 -11 -41 -11q0 -20 -12 -42zM612 383q-11 20 -11 42q-22 0 -42 11v-53h53z" /> + <glyph glyph-name="glyph22" unicode="&#xe016;" horiz-adv-x="784" +d="M630 454l154 -154l-154 -154q-13 -13 -29 -13q-17 0 -30 13q-12 12 -12 29t12 29l54 54h-191v-191l54 54q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-155 -154l-154 154q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l54 -54v191h-191l53 -54q12 -12 12 -29t-12 -29 +q-13 -13 -29 -13q-17 0 -30 13l-154 154l154 154q12 12 29.5 12t29.5 -12t12 -29t-12 -29l-53 -54h191v191l-54 -54q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5l154 154l155 -154q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-54 54v-191h191l-54 54q-12 12 -12 29 +t12 29t29.5 12t29.5 -12z" /> + <glyph glyph-name="glyph23" unicode="&#xe017;" horiz-adv-x="958" +d="M625 633q51 0 88 -37t37 -88v-7q90 -23 149 -102t59 -182q0 -121 -85 -206.5t-206 -85.5h-42q-48 0 -83 32l-120 -120q-37 -37 -89 -37q-51 0 -88 37t-37 88l1 8q-90 23 -149.5 102.5t-59.5 181.5q0 121 85.5 206t206.5 85h41q48 0 83 -32l121 121q36 36 88 36zM667 8 +q86 0 147 61.5t61 147.5t-55 147t-132 61h-87l53 54q12 12 12 29.5t-12 29.5t-29 12t-29 -12l-155 -155l155 -154q12 -12 29 -12t29 12t12 29.5t-12 29.5l-53 54h87q43 0 73.5 -36.5t30.5 -88.5t-36.5 -88.5t-88.5 -36.5h-42q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5 +t29.5 -12.5h42zM250 175q0 34 24.5 58.5t58.5 24.5q35 0 59 -24l155 -155q9 24 30 39t48 15h42q34 0 58.5 24.5t24.5 59.5q0 30 -15 53.5t-37 28.5q10 -17 10 -41q0 -34 -24.5 -58.5t-58.5 -24.5q-35 0 -59 24l-155 155q-9 -24 -30 -39t-48 -15h-41q-35 0 -59.5 -24.5 +t-24.5 -58.5q0 -30 15 -53.5t37 -28.5q-10 17 -10 40zM375 383q0 17 -12.5 29.5t-29.5 12.5h-41q-86 0 -147.5 -61t-61.5 -147t55.5 -147.5t132.5 -61.5h87l-54 -54q-12 -12 -12 -29t12 -29q13 -13 29 -13q17 0 30 13l154 154l-154 154q-13 13 -30 13q-16 0 -29 -13 +q-12 -12 -12 -29t12 -29l54 -54h-87q-43 0 -73.5 36.5t-30.5 88.5t36.5 88.5t88.5 36.5h41q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph24" unicode="&#xe018;" +d="M562 508q77 0 132.5 -61t55.5 -147t-61 -147t-147 -61q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5q52 0 88.5 36.5t36.5 88.5t-31 88.5t-74 36.5h-86l53 -54q12 -12 12 -29.5t-12 -29.5t-29 -12t-29 12l-155 155l155 154q12 12 29 12t29 -12t12 -29.5t-12 -29.5 +l-53 -54h86zM221 288q12 12 29 12t29 -12l155 -155l-155 -154q-12 -12 -29 -12t-29 12t-12 29.5t12 29.5l53 54h-86q-77 0 -132.5 61t-55.5 147t61 147t147 61q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 -36.5t-36.5 -88.5t31 -88.5t74 -36.5h86l-53 54 +q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph25" unicode="&#xe019;" horiz-adv-x="805" +d="M420 -75q-51 0 -88 37t-37 88q0 9 1 16t4 15t5.5 13t9 17.5t11.5 21.5h-201q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h201q-4 9 -11 21.5t-9.5 17.5t-5.5 13.5t-4 15.5t-1 16q0 52 36 88q35 35 88.5 35t88.5 -35l297 -297l-297 -296q-37 -37 -88 -37zM125 300 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h402l-137 -138q-12 -12 -12 -29t12 -29t29.5 -12t29.5 12l238 237l-238 238q-12 12 -29.5 12t-29.5 -12t-12 -29q0 -18 12 -30l137 -137h-402z" /> + <glyph glyph-name="glyph26" unicode="&#xe01a;" horiz-adv-x="704" +d="M319 526q25 25 59 25t59 -25l267 -268l-267 -267q-24 -24 -59 -24t-59 24q-25 25 -25 59.5t25 58.5l66 66h-302q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h302l-66 66q-25 25 -25 59.5t25 58.5z" /> + <glyph glyph-name="glyph27" unicode="&#xe01b;" horiz-adv-x="517" +d="M262 496q12 12 29.5 12t29.5 -12l196 -196l-196 -196q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l96 95h-316q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h316l-96 95q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph28" unicode="&#xe01c;" +d="M42 425q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h146q73 0 126 -55q-26 -28 -49 -70q-32 42 -77 42h-146zM362 295l-20 -58q-26 -80 -82 -133.5t-114 -53.5h-104q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h104q26 0 62 37t55 93l20 59q26 79 93 132.5t138 53.5 +h76l-53 54q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l154 -154l-154 -155q-12 -12 -30 -12q-17 0 -29 12t-12 29.5t12 29.5l53 54h-76q-43 0 -89 -39t-63 -91zM537 246q12 12 29.5 12t29.5 -12l154 -154l-154 -155q-12 -12 -30 -12q-17 0 -29 12t-12 29.5t12 29.5l53 54 +h-97q-95 0 -157 80q28 42 45 91q11 -39 42 -63.5t70 -24.5h97l-53 54q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph29" unicode="&#xe01d;" horiz-adv-x="542" +d="M500 467q17 0 29.5 -13t12.5 -29t-13 -29l-258 -263l-259 263q-12 12 -12 29t12.5 29.5t29.5 12.5h458z" /> + <glyph glyph-name="glyph30" unicode="&#xe01e;" horiz-adv-x="542" +d="M42 175q-17 0 -29.5 13t-12.5 29q0 17 12 29l259 262l258 -262q13 -13 13 -29t-12.5 -29t-29.5 -13h-458z" /> + <glyph glyph-name="glyph31" unicode="&#xe01f;" horiz-adv-x="792" +d="M229 675q0 51 37 88t88 37q52 0 89 -37l193 -193q25 -9 45 -29q111 -111 111 -261q0 -164 -116 -280q-54 -53 -118 -82q4 -15 4 -35q0 -51 -36.5 -88t-87.5 -37q-52 0 -89 37l-195 195q-24 9 -43 28q-111 111 -111 261q0 164 116 280q54 54 118 82q-5 18 -5 34zM411 -32 +q119 4 206 91q91 91 91 221q0 116 -86 202q-12 12 -29 12q-18 0 -30 -12t-12 -29.5t12 -29.5q34 -34 48 -66.5t14 -76.5q0 -95 -67 -162q-60 -60 -143 -66l52 52q12 12 12 29.5t-12 29.5t-29 12q-18 0 -30 -12l-154 -155l154 -154q12 -12 30 -12q17 0 29 12t12 29.5 +t-12 29.5zM379 591q-119 -6 -204 -91q-92 -92 -92 -221q0 -116 86 -202q12 -12 30 -12q17 0 29 12t12 29.5t-12 29.5q-34 34 -47.5 66t-13.5 77q0 95 67 162q61 61 144 67l-53 -54q-12 -12 -12 -29t12 -29q13 -13 29 -13q17 0 30 13l154 154l-154 154q-13 13 -30 13 +q-16 0 -29 -13q-12 -12 -12 -29t12 -29zM354 342q-33 0 -57 22.5t-26 54.5l-8 -7q-55 -55 -55 -133q0 -36 11 -60.5t39 -52.5q30 -30 23 -71l98 97q25 25 59 25q33 0 57 -22.5t26 -54.5l7 8q55 55 55 132q0 36 -10.5 61t-38.5 53t-23 70l-98 -98q-24 -24 -59 -24z" /> + <glyph glyph-name="glyph32" unicode="&#xe020;" horiz-adv-x="625" +d="M625 280q0 -129 -92 -221q-87 -87 -205 -91l56 -55q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-155 154l155 155q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-52 -52q83 6 143 66q67 67 67 162q0 44 -14 76.5t-48 66.5q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12 +q86 -86 86 -202zM83 279q0 -44 14 -76.5t48 -66.5q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12q-86 86 -86 202q0 129 92 221q85 85 204 91l-55 55q-12 12 -12 29t12 29t29.5 12t29.5 -12l155 -154l-155 -154q-13 -13 -29 -13q-17 0 -30 13q-12 12 -12 29t12 29l53 54 +q-83 -6 -144 -67q-67 -67 -67 -162z" /> + <glyph glyph-name="glyph33" unicode="&#xe021;" horiz-adv-x="542" +d="M42 342q-17 0 -29.5 12t-12.5 29t12 29l259 263l258 -263q13 -13 13 -29t-12.5 -28.5t-29.5 -12.5h-458zM500 258q17 0 29.5 -12.5t12.5 -28.5t-13 -29l-258 -263l-259 263q-12 12 -12 29q0 16 12.5 28.5t29.5 12.5h458z" /> + <glyph glyph-name="glyph34" unicode="&#xe022;" horiz-adv-x="667" +d="M333 -75q-52 0 -88.5 36.5t-36.5 88.5v198q-36 -32 -86.5 -30.5t-84.5 35.5q-37 37 -37 88.5t37 88.5l296 297l297 -297q37 -37 37 -88.5t-37 -88.5q-34 -34 -85 -35.5t-87 30.5v-198q0 -52 -36.5 -88.5t-88.5 -36.5zM292 449v-399q0 -17 12 -29.5t29 -12.5t29.5 12.5 +t12.5 29.5v399l137 -137q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-238 238l-238 -238q-12 -12 -12 -29.5t12 -29.5t29.5 -12t29.5 12z" /> + <glyph glyph-name="glyph35" unicode="&#xe023;" horiz-adv-x="583" +d="M292 668l267 -267q25 -25 25 -59t-25 -59t-59 -25t-59 25l-66 66v-302q0 -35 -24.5 -59t-58.5 -24q-35 0 -59.5 24.5t-24.5 58.5v302l-66 -66q-25 -25 -59 -25t-59 25t-25 59t25 59z" /> + <glyph glyph-name="glyph36" unicode="&#xe024;" horiz-adv-x="417" +d="M208 567l196 -196q12 -12 12 -29.5t-12 -29.5t-29 -12t-29 12l-96 96v-316q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5v316l-96 -96q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5z" /> + <glyph glyph-name="glyph37" unicode="&#xe025;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5v-21q0 -52 -36.5 -88.5t-88.5 -36.5q-62 0 -100 50q-45 -50 -109 -50q-60 0 -102.5 43t-42.5 103t42.5 103t102.5 43q47 0 86 -29q10 29 39 29q17 0 29.5 -12.5t12.5 -29.5v-125q0 -17 12.5 -29t29.5 -12t29 12t12 29v21 +q0 104 -73.5 177t-176.5 73t-176.5 -73t-73.5 -177t73.5 -177t176.5 -73q78 0 141 43q14 10 31 6.5t27 -17.5t6.5 -31t-17.5 -27q-83 -57 -188 -57q-138 0 -235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM333 238q26 0 44.5 18.5t18.5 43.5t-18.5 43.5t-44.5 18.5 +q-25 0 -43.5 -18t-18.5 -44t18.5 -44t43.5 -18z" /> + <glyph glyph-name="glyph38" unicode="&#xe026;" horiz-adv-x="794" +d="M311 282q-9 0 -14.5 6.5t-5.5 13.5q0 9 6 15l189 189q25 25 58 25q35 0 60 -25q24 -24 24 -59t-24 -59q-49 -49 -147.5 -147t-147.5 -147q-25 -25 -59 -25t-59 25q-24 24 -24 59t24 59l4 4q-29 38 -29 88l-34 -33q-49 -49 -49 -118t49 -118t118 -49t118 49l294 295 +q49 49 49 117.5t-49 117.5t-118 49q-68 0 -117 -49l-189 -189q-31 -31 -31 -73q0 -43 31 -74t73 -31q43 0 74 31l89 88q24 24 24 59q0 34 -25 59l-147 -147q-6 -6 -15 -6zM544 697q104 0 177 -73t73 -177q0 -103 -73 -176l-294 -295q-73 -73 -177 -73t-177 73t-73 177 +q0 103 73 176l295 295q73 73 176 73z" /> + <glyph glyph-name="glyph39" unicode="&#xe027;" horiz-adv-x="628" +d="M228 157q-42 0 -73 30.5t-31 73.5q0 44 30 74l189 189q49 49 118 49t118 -49t49 -118t-49 -118l-295 -295q-49 -49 -117 -49q-69 0 -118 49t-49 118t49 118l33 33q0 -49 30 -88l-4 -4q-24 -24 -24 -59t24 -59t59 -24t59 24q49 49 147 147.5t147 147.5q24 24 24 59t-24 59 +q-25 24 -59.5 24t-58.5 -24l-189 -189q-6 -6 -6 -15t6 -15t15 -6t15 6l147 147q25 -25 25 -59q0 -33 -25 -58l-88 -89q-30 -30 -74 -30z" /> + <glyph glyph-name="glyph40" unicode="&#xe028;" horiz-adv-x="874" +d="M749 -75h-417q-45 0 -92.5 24t-73.5 61q-27 37 -79.5 111t-78.5 111q-8 11 -8 26t7 26l159 222q26 37 73.5 61.5t92.5 24.5h417q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -36.5 -88.5t-88.5 -36.5zM92 258q28 -38 77.5 -108t64.5 -91q14 -20 44 -35.5t54 -15.5h417 +q17 0 29 12.5t12 29.5v417q0 17 -12 29t-29 12h-417q-24 0 -54 -15t-44 -35q-24 -34 -71 -100t-71 -100zM528 258l111 -110q10 -10 4 -23t-19 -13q-8 0 -15 7l-110 110l-110 -110q-7 -7 -15 -7q-13 0 -19 13t4 23l110 110l-110 111q-9 9 -5 20t14.5 14t20.5 -5l110 -110 +l110 110q14 14 28.5 -0.5t0.5 -28.5z" /> + <glyph glyph-name="glyph41" unicode="&#xe029;" horiz-adv-x="832" +d="M728 592q43 0 73.5 -30.5t30.5 -73.5v-417q0 -43 -30.5 -73.5t-73.5 -30.5h-417q-40 0 -82.5 22t-65.5 54l-159 222q-10 14 0 28q27 37 79.5 111t78.5 111q23 32 66 54.5t83 22.5h417zM632 184l-95 95l95 96q12 12 12 29.5t-12 29.5t-29.5 12t-29.5 -12l-95 -96l-96 96 +q-12 12 -29.5 12t-29.5 -12t-12 -29.5t12 -29.5l96 -96l-96 -95q-12 -12 -12 -29.5t12 -29.5q13 -13 30 -13q16 0 29 13l96 95l95 -95q13 -13 30 -13q16 0 29 13q12 12 12 29.5t-12 29.5z" /> + <glyph glyph-name="glyph42" unicode="&#xe02a;" horiz-adv-x="792" +d="M125 383h458v-250h-458v250zM368 179l132 97l-108 -18l-49 79l-135 -97l110 18zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458 +q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph43" unicode="&#xe02b;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM542 133q-17 0 -29.5 12.5t-12.5 29.5 +v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM417 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5 +q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z +" /> + <glyph glyph-name="glyph44" unicode="&#xe02c;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM417 133q-17 0 -29.5 12.5t-12.5 29.5 +v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5 +t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph45" unicode="&#xe02d;" horiz-adv-x="792" +d="M167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250 +q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph46" unicode="&#xe02e;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5 +v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29 +t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph47" unicode="&#xe02f;" horiz-adv-x="629" +d="M625 100q15 -54 -17 -93.5t-85 -39.5h-417q-53 0 -85 39.5t-17 93.5l103 380q2 8 5 28h-48q-17 0 -29 12.5t-12 29.5t12 29.5t29 12.5h500q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-49zM428 508h-233q-1 -28 -8 -49l-43 -160l4 1h333l4 -1zM523 50 +q28 0 21 28l-50 185q-7 -5 -13 -5h-333q-7 0 -14 5l-49 -185q-7 -28 21 -28h417z" /> + <glyph glyph-name="glyph48" unicode="&#xe030;" horiz-adv-x="708" +d="M208 112q0 -8 -6 -14t-14 -6t-14.5 6t-6.5 14v250q0 8 6.5 14.5t14.5 6.5t14 -6.5t6 -14.5v-250zM292 112q0 -8 -6.5 -14t-14.5 -6t-14.5 6t-6.5 14v250q0 8 6.5 14.5t14.5 6.5t14.5 -6.5t6.5 -14.5v-250zM375 112q0 -8 -6.5 -14t-14.5 -6t-14.5 6t-6.5 14v250 +q0 8 6.5 14.5t14.5 6.5t14.5 -6.5t6.5 -14.5v-250zM562 550q60 0 103 -43t43 -103v-208q0 -60 -43 -103t-103 -43h-20q0 -52 -36.5 -88.5t-88.5 -36.5h-292q-52 0 -88.5 36.5t-36.5 88.5v542q0 34 24 58.5t59 24.5h375q35 0 59.5 -24.5t24.5 -58.5v-42h20zM83 592v-63 +q0 -25 18.5 -43.5t44.5 -18.5q36 0 54 32l7 13l15 -3q14 -2 27.5 5.5t18.5 21.5l5 14h185v42h-375zM458 50v458h-157q-25 -41 -72 -41q-32 -42 -83 -42q-36 0 -63 21v-396q0 -17 12.5 -29.5t29.5 -12.5h292q17 0 29 12.5t12 29.5zM625 196v208q0 26 -18.5 44.5t-44.5 18.5 +h-62v-334h62q26 0 44.5 18.5t18.5 44.5z" /> + <glyph glyph-name="glyph49" unicode="&#xe031;" horiz-adv-x="666" +d="M655 79q19 -21 7.5 -46t-37.5 -25h-131q-14 -55 -59 -90t-102 -35t-101.5 35t-58.5 90h-131q-26 0 -38 26t8 46q3 3 8 9.5t17 29.5t21.5 50.5t17.5 74t8 98.5q0 81 46.5 145.5t120.5 90.5l-1 14q0 34 24 58.5t59 24.5t59.5 -24.5t24.5 -58.5l-2 -14q74 -26 121 -90.5 +t47 -145.5q0 -52 8 -98.5t17.5 -74.5t21.5 -50.5t17 -29.5t8 -10zM333 508q-69 0 -117.5 -48.5t-48.5 -117.5q0 -49 -4 -84h341q-5 43 -5 84q0 69 -49 117.5t-117 48.5zM333 -33q49 0 72 41h-143q23 -41 71 -41zM117 92h433q-25 52 -39 125h-355q-14 -73 -39 -125z" /> + <glyph glyph-name="glyph50" unicode="&#xe032;" +d="M625 675q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -30 -88.5t-74 -36.5h-28q-13 -36 -45.5 -59.5t-72.5 -23.5h-375q-52 0 -88.5 36.5t-36.5 88.5v458q0 16 12 30l125 125q12 12 30 12h458zM125 8h42v459h-84v-417q0 -17 12.5 -29.5t29.5 -12.5zM542 50v375 +q0 17 -12.5 29.5t-29.5 12.5h-292v-459h292q17 0 29.5 12.5t12.5 29.5zM667 133v417q0 17 -12.5 29.5t-29.5 12.5h-441l-42 -42h358q52 0 88.5 -36.5t36.5 -88.5v-333h21q6 0 13.5 11.5t7.5 29.5z" /> + <glyph glyph-name="glyph51" unicode="&#xe033;" horiz-adv-x="583" +d="M458 717q52 0 88.5 -36.5t36.5 -88.5v-584q0 -41 -19.5 -62.5t-46.5 -21.5q-34 0 -64 30l-132 133q-12 12 -29.5 12t-29.5 -12l-132 -133q-32 -31 -65.5 -30t-51.5 31q-13 23 -13 53v584q0 52 36.5 88.5t88.5 36.5h333zM125 633q-17 0 -29.5 -12t-12.5 -29v-413l102 94 +q44 41 106.5 41t106.5 -41l102 -94v413q0 17 -12.5 29t-29.5 12h-333zM380 146l120 -120v96l-130 120q-32 29 -78 29t-78 -29l-131 -120v-96l120 120q36 36 89 36q52 0 88 -36z" /> + <glyph glyph-name="glyph52" unicode="&#xe034;" +d="M625 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5q0 52 36.5 88.5t88.5 36.5h250q52 0 88.5 -36.5t36.5 -88.5zM250 550q-17 0 -29.5 -12.5t-12.5 -29.5h334q0 17 -12.5 29.5 +t-29.5 12.5h-250zM667 92v41h-584v-41q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5zM83 175h584v208q0 17 -12.5 29.5t-29.5 12.5h-500q-17 0 -29.5 -12.5t-12.5 -29.5v-208zM417 300q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-84q-17 0 -29 12t-12 29 +t12 29.5t29 12.5h84z" /> + <glyph glyph-name="glyph53" unicode="&#xe035;" horiz-adv-x="752" +d="M727 641q39 -39 19 -90q-108 -271 -390 -438q-13 -8 -23 -10q-13 -83 -75.5 -136.5t-147.5 -53.5q-19 0 -37 3l-61 9l-9 61q-16 101 44 178q54 69 144 83q4 14 8 22q167 282 438 390q15 6 31 6q35 0 59 -24zM110 -3q57 0 97 35.5t46 90.5l-43 43q-62 -7 -98.5 -55 +t-26.5 -113q8 -1 25 -1zM314 184q30 17 74 49q-67 67 -68 69q-28 -39 -49 -75zM422 258q170 132 247 324q-194 -77 -325 -248z" /> + <glyph glyph-name="glyph54" unicode="&#xe036;" horiz-adv-x="917" +d="M792 -33h-667q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h667q52 0 88.5 -36.5t36.5 -88.5v-416q0 -52 -36.5 -88.5t-88.5 -36.5zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-416q0 -17 12.5 -29.5t29.5 -12.5h667q17 0 29 12.5t12 29.5v416q0 17 -12 29.5 +t-29 12.5h-667zM375 175h-167q-17 0 -29 12.5t-12 29.5t12 29t29 12h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM375 342h-167q-17 0 -29 12t-12 29t12 29.5t29 12.5h167q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM542 362q0 84 83 84t83 -84 +q0 -83 -83 -83t-83 83zM625 244q45 0 74.5 -18t29.5 -42q0 -12 -30 -21t-74 -9q-47 0 -75.5 9t-28.5 21q0 24 28.5 42t75.5 18z" /> + <glyph glyph-name="glyph55" unicode="&#xe037;" horiz-adv-x="583" +d="M458 -75h-333q-53 0 -89 36t-36 89v500q0 53 36 89t89 36h333q53 0 89 -36t36 -89v-500q0 -53 -36 -89t-89 -36zM125 592q-19 0 -30.5 -11.5t-11.5 -30.5v-500q0 -19 11.5 -30.5t30.5 -11.5h333q19 0 30.5 11.5t11.5 30.5v500q0 19 -11.5 30.5t-30.5 11.5h-333zM125 342 +q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 342q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 342q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM125 217q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 217q0 41 42 41 +q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 217q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM125 92q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 92q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 92q0 41 42 41q41 0 41 -41 +q0 -42 -41 -42q-42 0 -42 42zM417 508h-250v-41h250v41zM458 550v-125h-333v125h333z" /> + <glyph glyph-name="glyph56" unicode="&#xe038;" +d="M667 542q37 -13 60 -45t23 -72v-375q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v375q0 40 23 72t60 45v8q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5h84q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-8zM500 550v-83q0 -17 12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5v83q0 17 -12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5zM167 550v-83q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5zM667 50v250h-584v-250q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5zM667 342v83q0 17 -12.5 29.5t-29.5 12.5q0 -35 -24.5 -59.5t-58.5 -24.5t-59 24.5t-25 59.5h-166q0 -35 -25 -59.5t-59 -24.5t-58.5 24.5t-24.5 59.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584z" /> + <glyph glyph-name="glyph57" unicode="&#xe039;" +d="M667 542q37 -13 60 -45t23 -72v-375q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v375q0 40 23 72t60 45v8q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5h84q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-8zM500 550v-83q0 -17 12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5v83q0 17 -12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5zM167 550v-83q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5zM667 50v250h-584v-250q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5z" /> + <glyph glyph-name="glyph58" unicode="&#xe03a;" horiz-adv-x="833" +d="M708 -33h-583q-52 0 -88.5 36.5t-36.5 88.5v333q0 52 36.5 88.5t88.5 36.5h66l42 42q18 18 46 29.5t54 11.5h167q26 0 54.5 -11.5t46.5 -29.5l41 -42h66q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5zM125 467q-17 0 -29.5 -12.5t-12.5 -29.5v-333 +q0 -17 12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5v333q0 17 -12.5 29.5t-29.5 12.5h-83q-17 0 -29 12l-54 54q-17 17 -42 17h-167q-24 0 -41 -17l-54 -54q-12 -12 -30 -12h-83zM417 383q-43 0 -74 -30.5t-31 -73.5t31 -73.5t74 -30.5t73.5 30.5t30.5 73.5 +t-30.5 73.5t-73.5 30.5zM417 425q61 0 103 -42.5t42 -103.5q0 -60 -42.5 -103t-102.5 -43q-61 0 -103.5 43t-42.5 103q0 61 42.5 103.5t103.5 42.5zM667 438q22 0 38 -16t16 -39t-15.5 -38.5t-38.5 -15.5t-39 16t-16 38q0 23 16 39t39 16z" /> + <glyph glyph-name="glyph59" unicode="&#xe03b;" horiz-adv-x="833" +d="M708 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5v333q0 52 36.5 88.5t88.5 36.5h66l42 42q18 18 46 29.5t54 11.5h167q26 0 54.5 -11.5t46.5 -29.5l41 -42h66zM417 133q60 0 102.5 43t42.5 103q0 61 -42 103.5 +t-103 42.5t-103.5 -42.5t-42.5 -103.5q0 -60 42.5 -103t103.5 -43zM667 329q23 0 38.5 15.5t15.5 38.5t-16 39t-38 16q-23 0 -39 -16t-16 -39q0 -22 16 -38t39 -16z" /> + <glyph glyph-name="glyph60" unicode="&#xe03c;" horiz-adv-x="708" +d="M354 -54q-146 0 -250 104t-104 250t104 250t250 104t250 -104t104 -250t-104 -250t-250 -104zM354 571q-112 0 -191.5 -79.5t-79.5 -191.5t79.5 -191.5t191.5 -79.5t191.5 79.5t79.5 191.5t-79.5 191.5t-191.5 79.5zM354 446q-17 0 -25 -2l169 -170q2 8 2 26 +q0 60 -43 103t-103 43zM354 488q77 0 132.5 -55.5t55.5 -132.5q0 -52 -29 -99l-258 257q48 30 99 30zM211 326q-3 -12 -3 -26q0 -60 43 -103t103 -43q18 0 26 2zM196 400l258 -258q-48 -30 -100 -30q-78 0 -132.5 55t-54.5 133q0 53 29 100z" /> + <glyph glyph-name="glyph61" unicode="&#xe03d;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM125 300q0 -86 61 -147t147 -61q50 0 96 24l-280 280q-24 -46 -24 -96zM517 204q25 48 25 96q0 86 -61.5 147t-147.5 61q-49 0 -95 -24z" /> + <glyph glyph-name="glyph62" unicode="&#xe03e;" +d="M625 675q52 0 88.5 -37.5t36.5 -87.5v-417q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29v125q0 45 27 78l167 209q31 38 82.5 44.5t90.5 -22.5l69 -53l92 114q38 47 97 47zM667 550q0 16 -13 29t-29 13q-20 0 -33 -16l-116 -145q-11 -14 -27 -16t-30 8 +l-102 77q-13 10 -30.5 8t-27.5 -15l-167 -209q-9 -11 -9 -26v-83h584v375zM708 -75h-666q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h666q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5z" /> + <glyph glyph-name="glyph63" unicode="&#xe03f;" +d="M708 550v-417h-666v125q0 30 18 52l167 209q21 26 54.5 30t60.5 -16l102 -76l116 145q22 27 56 31t61 -18q31 -24 31 -65zM708 8q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-666q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h666z" /> + <glyph glyph-name="glyph64" unicode="&#xe040;" horiz-adv-x="667" +d="M542 592q52 0 88.5 -36.5t36.5 -88.5v-375h-667v250q0 52 36.5 88.5t88.5 36.5q47 0 83 -33v199q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-74q36 33 84 33zM333 675q-17 0 -29 -12.5t-12 -29.5v-458h83v458q0 17 -12.5 29.5t-29.5 12.5zM167 175v167 +q0 17 -12.5 29t-29.5 12t-29.5 -12t-12.5 -29v-167h84zM583 175v292q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29v-292h83zM625 -75h-583q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h583q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5z" /> + <glyph glyph-name="glyph65" unicode="&#xe041;" horiz-adv-x="667" +d="M417 633v-500h-167v500q0 35 24.5 59.5t58.5 24.5q35 0 59.5 -24.5t24.5 -59.5zM625 467v-334h-167v334q0 34 24.5 58.5t59.5 24.5q34 0 58.5 -24t24.5 -59zM208 342v-209h-166v209q0 34 24 58.5t59 24.5t59 -24.5t24 -58.5zM625 8q17 0 29.5 -12t12.5 -29t-12.5 -29.5 +t-29.5 -12.5h-583q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h583z" /> + <glyph glyph-name="glyph66" unicode="&#xe042;" +d="M125 92q-37 0 -67.5 20.5t-45 50t-12 66t26.5 66.5l167 208q31 38 82.5 45t90.5 -23l69 -52l91 113q38 47 98 47q50 0 86 -34.5t39 -79.5t-27 -89l-167 -208q-31 -38 -82 -44.5t-91 22.5l-70 52l-91 -113q-38 -47 -97 -47zM292 467q-20 0 -33 -16l-167 -208 +q-16 -22 -3.5 -45t36.5 -23q20 0 33 16l141 177l134 -101q13 -10 30.5 -8t27.5 15l167 208q16 22 3.5 45t-36.5 23q-20 0 -33 -16l-141 -176l-134 100q-10 9 -25 9zM667 -75h-584q-17 0 -29 12.5t-12 29.5t12 29t29 12h584q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5z" /> + <glyph glyph-name="glyph67" unicode="&#xe043;" horiz-adv-x="667" +d="M31 152q-27 22 -31 56t18 61l167 208q21 26 54.5 30.5t60.5 -15.5l102 -77l116 145q22 27 56 31t61 -18t31 -56t-18 -61l-166 -208q-21 -26 -54.5 -30.5t-60.5 15.5l-102 77l-117 -145q-24 -32 -65 -32q-28 0 -52 19zM42 -75q-17 0 -29.5 12.5t-12.5 29.5t12.5 29 +t29.5 12h583q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-583z" /> + <glyph glyph-name="glyph68" unicode="&#xe044;" horiz-adv-x="722" +d="M264 675q0 34 24.5 58.5t58.5 24.5h8q174 -15 311 -129q27 -23 29.5 -59.5t-23.5 -63.5l-24 -23q74 -108 74 -238q0 -147 -92 -262q-24 -29 -65 -31q-19 0 -37 9q-86 -56 -185 -56q-142 0 -242.5 101t-100.5 243q0 119 74.5 212.5t189.5 120.5v93zM343 -12q85 0 155 52 +l-192 198v267q-95 -14 -159 -86.5t-64 -169.5q0 -108 76.5 -184.5t183.5 -76.5zM347 299l265 266q-116 97 -265 110v-376zM356 246l209 -211q74 93 74 210q0 118 -74 211z" /> + <glyph glyph-name="glyph69" unicode="&#xe045;" horiz-adv-x="675" +d="M359 218l234 234q82 -103 82 -235q0 -109 -58 -200q-9 -14 -25.5 -15.5t-28.5 10.5zM250 200l216 -217q-77 -58 -174 -58q-121 0 -206.5 86t-85.5 207q0 110 72 192t178 97v-307zM555 541l-222 -223v315q0 17 12.5 28t29.5 8q98 -18 177 -73q14 -10 14.5 -26.5 +t-11.5 -28.5z" /> + <glyph glyph-name="glyph70" unicode="&#xe046;" horiz-adv-x="510" +d="M510 92q0 -51 -37 -88t-88 -37q-52 0 -88 36l-297 297l297 297q35 35 88.5 35t88.5 -35q36 -36 36 -89q0 -52 -36 -88l-120 -120l120 -120q36 -36 36 -88zM118 300l238 -238q12 -12 29.5 -12t29.5 12t12 30q0 17 -12 29l-179 179l179 179q12 12 12 29q0 18 -12 30 +t-29.5 12t-29.5 -12z" /> + <glyph glyph-name="glyph71" unicode="&#xe047;" horiz-adv-x="410" +d="M385 567q25 -25 25 -59t-25 -59l-149 -149l149 -149q25 -25 25 -59t-25 -59t-59 -25t-59 25l-267 267l267 267q24 25 59 25t59 -25z" /> + <glyph glyph-name="glyph72" unicode="&#xe048;" horiz-adv-x="510" +d="M125 -33q-51 0 -88 37t-37 88t37 88l120 120l-120 120q-37 37 -37 88q0 52 37 89q35 35 88 35t88 -35l297 -297l-297 -297q-36 -36 -88 -36zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5q0 -16 13 -29l178 -179l-178 -179q-13 -13 -13 -29q0 -17 13 -30q12 -12 29 -12t29 12 +l238 238l-238 238q-12 12 -29 12z" /> + <glyph glyph-name="glyph73" unicode="&#xe049;" horiz-adv-x="410" +d="M24 567q24 25 59 25t59 -25l268 -267l-268 -267q-25 -25 -59 -25t-59 25t-25 59t25 59l150 149l-150 149q-25 25 -25 59t25 59z" /> + <glyph glyph-name="glyph74" unicode="&#xe04a;" horiz-adv-x="667" +d="M542 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h417zM208 592v-42q0 -17 12.5 -29.5t29.5 -12.5h167q17 0 29 12.5t12 29.5v42h-250zM583 50v500q0 17 -12 29.5t-29 12.5h-42 +v-42q0 -34 -24 -58.5t-59 -24.5h-167q-34 0 -58.5 24.5t-24.5 58.5v42h-42q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5zM500 92h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20zM500 217h-333 +q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 342h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20z" /> + <glyph glyph-name="glyph75" unicode="&#xe04b;" horiz-adv-x="833" +d="M625 425q86 0 147 -61t61 -147t-61 -147.5t-147 -61.5h-167v191l54 -53q13 -13 30 -13q16 0 29 13q12 12 12 29t-12 29l-125 125q-11 11 -29 11.5t-30 -11.5l-125 -125q-12 -12 -12 -29t12 -29q13 -13 30 -13q16 0 29 13l54 53v-191h-208q-69 0 -118 49t-49 118 +q0 58 35 102.5t90 58.5v6q0 104 73.5 177t176.5 73q80 0 144.5 -46.5t90.5 -121.5z" /> + <glyph glyph-name="glyph76" unicode="&#xe054;" horiz-adv-x="844" +d="M635 425q86 0 147.5 -61t61.5 -147t-61.5 -147.5t-147.5 -61.5h-458q-70 0 -123.5 49.5t-53.5 117.5q0 53 38 98t77 63v6q0 103 78 176.5t182 73.5q82 0 151.5 -47t94.5 -121zM635 92q52 0 88.5 36.5t36.5 88.5t-36 88.5t-88 36.5q-14 0 -34 -6l-45 -12l-8 45 +q-11 60 -57 99.5t-107 39.5q-69 0 -117.5 -48.5t-48.5 -117.5q0 -18 3 -34l10 -50l-59 1q-32 0 -55.5 -25t-23.5 -59q0 -35 24 -59t59 -24h229v158l-89 -90q-6 -6 -15 -6q-13 0 -19 13t4 23l125 125q15 9 30 0l125 -125q10 -10 4 -23t-19 -13q-9 0 -15 6l-89 90v-158h187z +" /> + <glyph glyph-name="glyph77" unicode="&#xe04c;" horiz-adv-x="951" +d="M302 8q-52 0 -89 37l-213 213l213 214q35 35 88.5 35t88.5 -35q37 -37 37 -88.5t-37 -88.5l-36 -37l36 -36q37 -37 37 -88.5t-37 -88.5t-88 -37zM118 258l154 -154q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-95 95l95 96q12 12 12 29.5t-12 29.5t-29.5 12t-29.5 -12z +M649 8q-51 0 -88 37t-37 88.5t37 88.5l37 36l-37 37q-37 37 -37 88.5t37 88.5q35 35 88.5 35t88.5 -35l213 -214l-213 -213q-37 -37 -89 -37zM649 425q-17 0 -29 -12t-12 -29.5t12 -29.5l95 -96l-95 -95q-12 -12 -12 -29.5t12 -29.5t29.5 -12t29.5 12l154 154l-154 155 +q-12 12 -30 12z" /> + <glyph glyph-name="glyph78" unicode="&#xe04d;" horiz-adv-x="805" +d="M243 50q-35 0 -59 24l-184 184l184 184q25 25 59.5 25t58.5 -25q25 -25 25 -59t-25 -59l-66 -66l66 -66q25 -25 25 -59t-25 -59q-24 -24 -59 -24zM562 50q-35 0 -59 24q-25 25 -25 59t25 59l66 66l-66 66q-25 25 -25 59t25 59q24 25 58.5 25t59.5 -25l184 -184l-184 -184 +q-24 -24 -59 -24z" /> + <glyph glyph-name="glyph79" unicode="&#xe04e;" horiz-adv-x="708" +d="M542 8h-500q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h500q17 0 29 -12.5t12 -29.5t-12 -29.5t-29 -12.5zM562 592q60 0 103 -43t43 -103t-43 -103t-103 -43h-20v-83q0 -35 -25 -59.5t-59 -24.5h-333q-34 0 -58.5 24.5t-24.5 59.5v375h520zM458 217v291h-333 +v-291h333zM562 383q26 0 44.5 18.5t18.5 44.5q0 25 -18.5 43.5t-44.5 18.5h-62v-125h62z" /> + <glyph glyph-name="glyph80" unicode="&#xe04f;" horiz-adv-x="770" +d="M448 592h-125l-36 -143l-141 41l-63 -109l106 -102l-106 -102l63 -108l141 40l36 -142h125l35 142l142 -40l62 108l-106 102l106 102l-62 109l-142 -41zM448 675q28 0 50.5 -17.5t29.5 -45.5l15 -59l59 17q12 3 23 3q48 0 72 -42l62 -108q14 -25 10.5 -53t-24.5 -48 +l-44 -43l44 -42q20 -20 24 -48t-10 -53l-62 -109q-24 -41 -72 -41q-11 0 -23 3l-59 16l-14 -59q-7 -28 -29.5 -45.5t-51.5 -17.5h-125q-29 0 -51.5 17.5t-29.5 45.5l-15 59l-58 -17q-12 -3 -23 -3q-48 0 -72 42l-63 108q-14 25 -10.5 53.5t24.5 48.5l44 42l-44 42 +q-20 20 -24 48.5t10 53.5l63 108q24 42 72 42q11 0 23 -3l58 -17l15 59q7 28 29.5 45.5t51.5 17.5h125zM385 362q-35 0 -59 -24t-24 -59t24 -59t59 -24t59.5 24.5t24.5 58.5t-24.5 58.5t-59.5 24.5zM385 404q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5t-88.5 36.5 +t-36.5 88.5t36.5 88.5t88.5 36.5z" /> + <glyph glyph-name="glyph81" unicode="&#xe050;" horiz-adv-x="575" +d="M200 69q-4 16 -19 25t-32 4l-61 -18q-17 -5 -35 2.5t-26 22.5l-21 36q-8 15 -5 34t15 31l45 44q12 12 12 29t-12 29l-45 44q-13 12 -15 31t6 34l20 37q8 15 26 22t35 2l61 -17q17 -5 32 4t19 25l15 61q5 17 20 29t32 12h41q17 0 32 -12t20 -29l16 -61q5 -17 19.5 -25 +t30.5 -4l61 17q17 5 35 -2t26 -22l21 -37q8 -15 5 -34t-15 -31l-45 -44q-13 -12 -12.5 -29t12.5 -29l45 -44q12 -12 15 -31t-5 -34l-21 -36q-8 -15 -26 -22.5t-35 -2.5l-61 18q-16 4 -30.5 -4t-19.5 -25l-16 -62q-5 -17 -20 -28.5t-32 -11.5h-41q-17 0 -32 11.5t-20 28.5z +M288 362q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5q34 0 58.5 24t24.5 59t-24.5 59t-58.5 24z" /> + <glyph glyph-name="glyph82" unicode="&#xe051;" +d="M375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM529 480q11 3 20 -6t6 -20l-72 -248q-3 -11 -14 -14 +l-248 -72h-5q-10 0 -17 8t-4 18l72 248q3 11 14 14zM246 171l201 57l-144 144z" /> + <glyph glyph-name="glyph83" unicode="&#xe052;" horiz-adv-x="792" +d="M667 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-459q-52 0 -88.5 36.5t-36.5 88.5v42h-41q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h41v83h-41q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h41v83h-41q-17 0 -29.5 12.5t-12.5 29.5 +t12.5 29t29.5 12h41v42q0 52 36.5 88.5t88.5 36.5h459zM167 550v-42h41v84q-17 0 -29 -12.5t-12 -29.5zM167 425v-83h41v83h-41zM167 258v-83h41v83h-41zM167 50q0 -17 12 -29.5t29 -12.5v84h-41v-42zM708 50v500q0 17 -12 29.5t-29 12.5h-417v-584h417q17 0 29 12.5 +t12 29.5zM375 362q0 84 83 84q84 0 84 -84q0 -83 -84 -83q-83 0 -83 83zM458 244q45 0 74.5 -18t29.5 -42q0 -12 -30 -21t-74 -9q-47 0 -75.5 9t-28.5 21q0 24 28.5 42t75.5 18z" /> + <glyph glyph-name="glyph84" unicode="&#xe053;" horiz-adv-x="708" +d="M583 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5h458zM625 92v166h-542v-166q0 -17 12.5 -29.5t29.5 -12.5h458q17 0 29.5 12.5t12.5 29.5zM625 342v41q0 17 -12.5 29.5 +t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-41h542zM458 133q-20 0 -20 21t20 21h84q20 0 20 -21t-20 -21h-84z" /> + <glyph glyph-name="glyph85" unicode="&#xe055;" +d="M112 658h638l-58 -304q-1 -8 -54 -292l-342 -120l-296 120l29 159h125l-12 -67l179 -71l208 71l29 150h-512l25 134h512l17 87h-512z" /> + <glyph glyph-name="glyph86" unicode="&#xe056;" horiz-adv-x="583" +d="M583 434v-4v-260q0 -121 -85 -206.5t-206 -85.5t-206.5 85.5t-85.5 206.5v260l1 4q5 116 89.5 196.5t201.5 80.5t201.5 -80.5t89.5 -196.5zM292 66q68 0 124.5 37t83.5 97v16q-86 -88 -208 -88q-123 0 -209 88v-16q27 -60 84 -97t125 -37zM292 628q-86 0 -147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61zM292 -39q70 0 125 42.5t74 108.5q-81 -88 -199 -88t-199 88q19 -66 74 -108.5t125 -42.5z" /> + <glyph glyph-name="glyph87" unicode="&#xe057;" +d="M375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM375 8q121 0 206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5t-206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5zM404 300l111 -110q10 -10 4 -23t-19 -13q-9 0 -15 6 +l-110 111l-110 -111q-6 -6 -15 -6q-13 0 -19 13t4 23l111 110l-111 110q-14 14 1 29t29 1l110 -111l110 111q14 14 29 -1t1 -29z" /> + <glyph glyph-name="glyph88" unicode="&#xe058;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM488 204l-96 96l96 96q12 12 12 29t-12 29t-29.5 12t-29.5 -12l-96 -95l-95 95q-12 12 -29.5 12t-29.5 -12t-12 -29t12 -29l95 -96l-95 -96q-12 -12 -12 -29 +t12 -29q13 -13 29 -13q17 0 30 13l95 95l96 -95q13 -13 29 -13q17 0 30 13q12 12 12 29t-12 29z" /> + <glyph glyph-name="glyph89" unicode="&#xe059;" horiz-adv-x="1000" +d="M875 758q52 0 88.5 -36.5t36.5 -88.5v-458q0 -52 -36.5 -88.5t-88.5 -36.5h-250v-83h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-500q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h125v83h-250q-52 0 -88.5 36.5t-36.5 88.5v458q0 52 36.5 88.5 +t88.5 36.5h750zM583 -33v83h-166v-83h166zM917 175v458q0 17 -12.5 29.5t-29.5 12.5h-750q-17 0 -29.5 -12.5t-12.5 -29.5v-458q0 -17 12.5 -29.5t29.5 -12.5h750q17 0 29.5 12.5t12.5 29.5zM833 633q17 0 29.5 -12t12.5 -29v-334q0 -17 -12.5 -29t-29.5 -12h-666 +q-17 0 -29.5 12t-12.5 29v334q0 17 12.5 29t29.5 12h666zM833 258v334h-666v-334h666z" /> + <glyph glyph-name="glyph90" unicode="&#xe05a;" horiz-adv-x="1000" +d="M916 131q36 -8 60 -36.5t24 -65.5q0 -43 -30.5 -73.5t-73.5 -30.5h-792q-43 0 -73.5 30.5t-30.5 73.5q0 37 24 65.5t60 36.5q0 6 -0.5 21t-0.5 23v375q0 52 36.5 88.5t88.5 36.5h584q52 0 88.5 -36.5t36.5 -88.5v-375q0 -8 -0.5 -23t-0.5 -21zM167 550v-375q0 -9 0.5 -23 +t0.5 -19h40v375q0 17 12.5 29.5t29.5 12.5h500q17 0 29.5 -12.5t12.5 -29.5v-375h41v42v375q0 17 -12 29.5t-29 12.5h-584q-17 0 -29 -12.5t-12 -29.5zM750 133v375h-500v-375h500zM896 8q8 0 14.5 6.5t6.5 14.5t-6.5 14.5t-14.5 6.5h-792q-8 0 -14.5 -6.5t-6.5 -14.5 +t6.5 -14.5t14.5 -6.5h792z" /> + <glyph glyph-name="glyph91" unicode="&#xe05b;" horiz-adv-x="542" +d="M417 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-292q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h292zM458 50v500q0 17 -12 29.5t-29 12.5h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h292 +q17 0 29 12.5t12 29.5zM375 550q17 0 29.5 -12.5t12.5 -29.5v-375q0 -17 -12.5 -29t-29.5 -12h-63q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5h-62q-17 0 -29.5 12t-12.5 29v375q0 17 12.5 29.5t29.5 12.5h208zM375 133v375h-208v-375h208z" /> + <glyph glyph-name="glyph92" unicode="&#xe05c;" horiz-adv-x="708" +d="M542 633q17 0 29 -12t12 -29v-500q0 -17 -12 -29.5t-29 -12.5h-146q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5h-145q-17 0 -29.5 12.5t-12.5 29.5v500q0 17 12.5 29t29.5 12h375zM542 92v500h-375v-500h375zM583 758q52 0 88.5 -36.5t36.5 -88.5v-625 +q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v625q0 52 36.5 88.5t88.5 36.5h458zM625 8v625q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-625q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph93" unicode="&#xe05d;" horiz-adv-x="746" +d="M746 404l-114 -108l-3 -3q38 -43 38 -97q0 -60 -43 -103t-103 -43h-113l-33 -167h-42l-33 167h-92q-55 0 -94 39l-107 107l77 77q-38 17 -61 52.5t-23 78.5q0 60 43 103t103 43h146v21q0 25 18 43.5t44 18.5t44.5 -18.5t18.5 -43.5v-21h121q54 0 93 -37zM521 133 +q25 0 43.5 18.5t18.5 44.5t-18.5 44t-43.5 18h-313q-21 0 -35 -14l-48 -48l48 -48q15 -15 35 -15h313zM574 356l51 48l-51 48q-15 15 -36 15h-392q-26 0 -44.5 -18.5t-18.5 -44.5q0 -25 18.5 -43.5t44.5 -18.5h392q22 0 36 14z" /> + <glyph glyph-name="glyph94" unicode="&#xe05e;" +d="M375 446q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 612q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM375 -96q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5 +t88.5 36.5t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 71q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM625 175h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5 +t-36.5 -88.5t-88.5 -36.5zM125 342q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph95" unicode="&#xe05f;" horiz-adv-x="667" +d="M240 550q0 94 93 94q94 0 94 -94t-94 -94q-93 0 -93 94zM240 50q0 94 93 94q94 0 94 -94t-94 -94q-93 0 -93 94zM0 300q0 34 24 58.5t59 24.5h500q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24.5t-24 58.5z" /> + <glyph glyph-name="glyph96" unicode="&#xe060;" horiz-adv-x="667" +d="M458 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12t-29 12t-12 29v84h-84q-17 0 -29 12t-12 29t12 29.5t29 12.5h84v83q0 17 12 29.5t29 12.5t29.5 -12.5t12.5 -29.5v-83h83zM654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5 +t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500 +q0 -17 12.5 -29.5t29.5 -12.5h417z" /> + <glyph glyph-name="glyph97" unicode="&#xe061;" horiz-adv-x="667" +d="M654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5 +t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417zM458 217h-250q-17 0 -29 12t-12 29t12 29.5t29 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12z" /> + <glyph glyph-name="glyph98" unicode="&#xe062;" horiz-adv-x="667" +d="M542 -75h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h417q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5zM125 592q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5v500q0 17 -12 29.5 +t-29 12.5h-417zM500 342h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20zM500 467h-333q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 217h-333q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 92 +h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20z" /> + <glyph glyph-name="glyph99" unicode="&#xe063;" horiz-adv-x="667" +d="M654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5 +t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417z" /> + <glyph glyph-name="glyph100" unicode="&#xe064;" +d="M749 92l1 -209q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29q0 209 1 209q0 9 1 13l84 250q10 28 39 28h23l-28 29q-37 37 -37 88t37 88q25 25 61 33t69 -3v57q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-57q33 11 69 3t61 -33q37 -37 37 -88t-37 -88 +l-28 -29h23q29 0 39 -28l84 -250q1 -4 1 -13zM179 529q-12 -12 -12 -29.5t12 -29.5l196 -195l196 196q12 12 12 29t-12 29t-29.5 12t-29.5 -12l-95 -95v241q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-241l-95 95q-13 13 -30 13q-16 0 -29 -13zM155 300l-69 -208 +h579l-70 208h-77l-143 -142l-143 142h-77zM667 -75v125h-584v-125h584z" /> + <glyph glyph-name="glyph101" unicode="&#xe065;" +d="M571 492q12 -12 12 -29.5t-12 -29.5l-196 -195l-196 195q-12 12 -12 29.5t12 29.5t29 12q18 0 30 -12l95 -96v279q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-279l95 96q11 11 30 11q18 0 29 -11zM749 133l1 -208q0 -17 -12.5 -29.5t-29.5 -12.5h-666 +q-17 0 -29.5 12.5t-12.5 29.5q0 208 1 208q0 9 1 13l84 250q10 29 39 29h9q7 -14 15 -22l62 -61h-56l-69 -209h578l-69 209h-56l62 61q8 8 15 22h9q29 0 39 -29l84 -250q1 -4 1 -13z" /> + <glyph glyph-name="glyph102" unicode="&#xe066;" +d="M0 262l154 121l221 -137l-154 -129zM221 650l154 -129l-221 -138l-154 121zM750 504l-154 -121l-221 138l154 129zM375 246l221 137l154 -121l-221 -145zM375 196l154 -129l67 45v-50l-221 -133l-221 133v50l67 -45z" /> + <glyph glyph-name="glyph103" unicode="&#xe067;" horiz-adv-x="792" +d="M773 578q19 -19 19 -44t-19 -44l-148 -148v-375q0 -17 -12.5 -29.5t-29.5 -12.5h-541q-17 0 -29.5 12.5t-12.5 29.5v541q0 17 12.5 29.5t29.5 12.5h375l148 148q19 19 44 19t44 -19zM354 189l262 262l-90 90l-262 -262zM247 244l3 -69l71 -3zM542 8v250l-133 -128 +q-16 -16 -50.5 -27t-64.5 -11h-127v127q0 33 9 66t25 49l132 133h-250v-459h459zM646 480l54 54l-91 91l-54 -54z" /> + <glyph glyph-name="glyph104" unicode="&#xe068;" horiz-adv-x="706" +d="M500 444q91 -27 148.5 -101.5t57.5 -172.5q0 -120 -86.5 -203.5t-208.5 -83.5q-98 0 -176.5 59t-106.5 150h-45q-35 0 -59 24t-24 59v417h417q34 0 58.5 -24.5t24.5 -59.5v-64zM167 366l200 -200q12 -12 29 -12q18 0 30 12t12 29.5t-12 29.5l-200 200h135q17 0 29 12.5 +t12 29.5t-12 29t-29 12h-278v-277q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v135zM417 -35q86 0 147 60.5t61 146.5t-61 146t-147 60q-30 0 -69 -16l107 -107q25 -25 25 -59.5t-25 -58.5q-25 -25 -59 -25t-59 25l-120 120q-9 -25 -9 -83q0 -86 61.5 -147.5 +t147.5 -61.5z" /> + <glyph glyph-name="glyph105" unicode="&#xe069;" horiz-adv-x="646" +d="M375 71q77 0 132 55t55 132t-55 132.5t-132 55.5q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q112 0 191.5 -79.5t79.5 -191.5t-79.5 -191t-191.5 -79t-191.5 79t-79.5 191q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5q0 -77 55 -132t132 -55zM277 633 +q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-135l242 -242q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-242 242v-135q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v277h277v0z" /> + <glyph glyph-name="glyph106" unicode="&#xe06a;" +d="M625 300h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 467q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-500zM625 8h-500 +q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 175q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h500q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph107" unicode="&#xe06b;" horiz-adv-x="667" +d="M583 508q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24t-24 59t24 59t59 24h500zM583 217q35 0 59.5 -24.5t24.5 -59.5q0 -34 -24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24t-24 59t24.5 59.5t58.5 24.5h500z" /> + <glyph glyph-name="glyph108" unicode="&#xe06c;" horiz-adv-x="792" +d="M780 392q12 -12 12 -29.5t-12 -29.5q-53 -53 -113 -114v-252q0 -17 -12.5 -29.5t-29.5 -12.5h-583q-17 0 -29.5 12.5t-12.5 29.5v583q0 17 12.5 29.5t29.5 12.5h333q0 34 26 58.5t63 24.5t66 -27q96 -102 250 -256zM470 136q205 210 221 226q-141 143 -220 228l-7 2 +l-6 -2v-165h-41q-38 0 -69 -13t-52 -33t-37 -48.5t-25 -55.5t-15 -57q90 81 198 82h41v-165l6 -2zM83 8h500v185q-49 -49 -82 -85q-14 -16 -37 -16q-20 0 -33.5 12t-13.5 29v125q-143 -3 -250 -166v20q0 48 7 95t25.5 95t45.5 84t71.5 58.5t100.5 22.5v41h-334v-500z" /> + <glyph glyph-name="glyph109" unicode="&#xe06d;" +d="M167 112q0 48 7 95t25.5 95t45.5 84t71.5 58.5t100.5 22.5v125q0 17 13.5 29t33.5 12q22 0 37 -15l249 -256q-168 -169 -249 -254q-14 -16 -37 -16q-20 0 -33.5 12t-13.5 29v125q-143 -3 -250 -166v20zM42 -75q-17 0 -29.5 12.5t-12.5 29.5v583q0 17 12.5 29.5t29.5 12.5 +h333v-84h-292v-500h500v125q52 54 84 86v-252q0 -17 -12.5 -29.5t-29.5 -12.5h-583z" /> + <glyph glyph-name="glyph110" unicode="&#xe06e;" +d="M375 425q-78 0 -137 -42q-62 -44 -132 -125q68 -79 132 -124q59 -42 137 -42t137 42q64 45 132 124q-70 81 -132 125q-59 42 -137 42zM375 508q106 0 185 -57q48 -34 95.5 -82.5t70.5 -79.5l24 -31q-9 -13 -25.5 -34.5t-66.5 -73t-98 -85.5q-79 -57 -185 -57 +q-107 0 -186 57q-48 34 -95.5 82.5t-70.5 79.5l-23 31q9 13 25.5 34.5t66 73t97.5 85.5q79 57 186 57zM375 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12t-29.5 12t-12.5 29t12.5 29.5t29.5 12.5zM375 133q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5 +t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 342q-34 0 -58.5 -24.5t-24.5 -59.5q0 -34 24 -58.5t59 -24.5t59 24.5t24 58.5q0 35 -24.5 59.5t-58.5 24.5z" /> + <glyph glyph-name="glyph111" unicode="&#xe06f;" horiz-adv-x="833" +d="M826 282q17 -23 0 -47q-6 -9 -27.5 -37t-71.5 -79.5t-101 -87.5q-90 -64 -209 -64q-120 0 -210 64q-51 36 -101 87.5t-71.5 79.5t-27.5 37q-17 23 0 47q5 9 27 37t72 79t101 87q91 65 210 65q118 0 209 -65q51 -36 101 -87t72 -79t27 -37zM417 112q60 0 102.5 43 +t42.5 103q0 61 -42.5 103.5t-102.5 42.5q-61 0 -103.5 -42.5t-42.5 -103.5q0 -60 42.5 -103t103.5 -43zM500 258q0 -34 -24 -58.5t-59 -24.5t-59.5 24.5t-24.5 58.5t24.5 59t59.5 25q34 0 58.5 -24.5t24.5 -59.5z" /> + <glyph glyph-name="glyph112" unicode="&#xe070;" horiz-adv-x="708" +d="M362 758q151 -28 248.5 -145.5t97.5 -270.5q0 -144 -87 -257.5t-225 -150.5v-51q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v51q-138 37 -225 150.5t-87 257.5q0 153 98 270.5t249 145.5l7 1zM396 21q100 35 163 120t66 192l-131 -131q-6 -6 -15 -6q-13 0 -19 12t4 23 +l157 157q-9 61 -36 113l-91 -91q-6 -6 -15 -6q-13 0 -19 13t4 23l98 98q-77 109 -208 136q-131 -27 -208 -136l98 -98q10 -10 4 -23t-19 -13q-9 0 -15 6l-91 91q-27 -52 -36 -113l157 -157q10 -11 4 -23t-19 -12q-9 0 -15 6l-130 131q3 -107 65.5 -192t162.5 -120v487 +q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-487z" /> + <glyph glyph-name="glyph113" unicode="&#xe071;" horiz-adv-x="667" +d="M167 467h333v-292h-333v292zM458 217v208h-250v-208h250zM542 717q52 0 88.5 -36.5t36.5 -88.5v-542q0 -52 -36.5 -88.5t-88.5 -36.5h-125v83h-167v-83h-125q-52 0 -88.5 36.5t-36.5 88.5v542q0 52 36.5 88.5t88.5 36.5h125v-84h167v84h125zM583 550v42q0 17 -12 29 +t-29 12h-42v-83h-333v83h-42q-17 0 -29.5 -12t-12.5 -29v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12v-42q0 -17 12.5 -29.5t29.5 -12.5h42v84h333v-84h42q17 0 29 12.5t12 29.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5z" /> + <glyph glyph-name="glyph114" unicode="&#xe072;" horiz-adv-x="671" +d="M627 550q35 0 42.5 -16.5t-17.5 -41.5l-175 -175q-24 -24 -41 -60t-17 -61v-146l-167 -83v208q0 35 -16.5 76t-41.5 66l-175 175q-25 25 -17.5 41.5t42.5 16.5h583z" /> + <glyph glyph-name="glyph115" unicode="&#xe073;" horiz-adv-x="583" +d="M512 611q20 20 45.5 8.5t25.5 -37.5v-334q0 -17 -12 -29q-64 -64 -154.5 -64t-154.5 64q-37 37 -88 40t-91 -29v-190q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v542q0 17 12 29q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40zM262 552q-37 37 -88 40 +t-91 -29v-95q54 26 116.5 16t106.5 -54q39 -39 94 -45t100 23v97q-58 -25 -124.5 -12.5t-113.5 59.5zM321 278q37 -37 88 -40t91 29v95q-43 -20 -83 -20q-80 0 -140 58q-39 39 -94 44.5t-100 -23.5v-96q42 17 84 17q90 0 154 -64z" /> + <glyph glyph-name="glyph116" unicode="&#xe074;" horiz-adv-x="583" +d="M512 611q20 20 45.5 8.5t25.5 -37.5v-334q0 -17 -12 -29q-64 -64 -154.5 -64t-154.5 64q-37 37 -88 40t-91 -29v-190q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v542q0 17 12 29q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40z" /> + <glyph glyph-name="glyph117" unicode="&#xe075;" horiz-adv-x="583" +d="M396 633zM396 633l-313 -295l209 -121l-104 -250l312 296l-208 120zM396 717q34 0 58.5 -24.5t24.5 -59.5q0 -17 -8 -35l-74 -179l145 -84q35 -20 40.5 -61.5t-25.5 -71.5l-312 -296q-25 -23 -58 -23q-45 0 -69 38t-7 78l76 182l-145 84q-35 20 -41 61t25 72l312 296 +q25 23 58 23z" /> + <glyph glyph-name="glyph118" unicode="&#xe076;" horiz-adv-x="500" +d="M479 299q18 -10 20.5 -31t-12.5 -36l-313 -296q-11 -11 -28 -11q-22 0 -34.5 19t-4.5 39l90 216l-176 102q-17 10 -20 31t12 36l313 296q13 11 28 11q17 0 29.5 -12.5t12.5 -29.5q0 -10 -4 -18l-89 -214z" /> + <glyph glyph-name="glyph119" unicode="&#xe077;" horiz-adv-x="667" +d="M542 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5q-40 0 -72.5 23.5t-45.5 60.5h-132q-86 0 -147.5 61t-61.5 147v299q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-59.5 -45.5v-7q0 -52 36.5 -88.5 +t88.5 -36.5h132q13 36 45.5 59.5t72.5 23.5q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5q-40 0 -72.5 23.5t-45.5 59.5h-132q-67 0 -125 43v-126q0 -52 36.5 -88.5t88.5 -36.5h132q13 36 45.5 59.5t72.5 23.5zM542 342q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5t-12 29.5t-29 12.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph120" unicode="&#xe078;" horiz-adv-x="667" +d="M583 126q37 -13 60.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v77q0 25 -18 43.5t-44 18.5q-63 0 -105 44q-42 -44 -104 -44q-25 0 -43.5 -18.5t-18.5 -43.5v-77q36 -13 59.5 -45.5t23.5 -72.5 +q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v77q0 60 43 103t103 43q26 0 44.5 18.5t18.5 43.5v63q-37 13 -60.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-59.5 -45.5v-63q0 -25 18.5 -43.5 +t44.5 -18.5q60 0 102.5 -43t42.5 -103v-77zM125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM333 633q-17 0 -29 -12t-12 -29t12 -29.5t29 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29 +t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph121" unicode="&#xe079;" horiz-adv-x="667" +d="M583 126q37 -13 60.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v348q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-60.5 -45.5v-348zM542 633 +q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5t-12 29t-29 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM250 592q0 -40 -23.5 -72.5t-59.5 -45.5v-348q36 -13 59.5 -45.5t23.5 -72.5 +q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v348q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12z +M125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph122" unicode="&#xe07a;" horiz-adv-x="667" +d="M167 126q36 -13 59.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v28q0 78 61 133q39 -32 76 -48q-53 -31 -53 -85v-28zM125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29 +t29.5 -12zM500 474q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-60.5 -45.5v-14q0 -84 -63 -144q-35 29 -76 45q56 35 56 99v14zM542 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5t-12 29 +t-29 12zM581 126q38 -12 62 -44.5t24 -73.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 39 22 71t58 46q-11 57 -57.5 95t-106.5 38q-94 0 -164 62t-83 154q-38 12 -62 44.5t-24 73.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -39 -22 -71t-58 -46 +q11 -57 57 -95t106 -38q94 0 164.5 -62.5t83.5 -153.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph123" unicode="&#xe07b;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM625 50q17 0 29.5 12.5t12.5 29.5v291h-167q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5 +t14.5 6.5h167q0 17 -12.5 29.5t-29.5 12.5h-250q-35 0 -59 24.5t-24 58.5h-167q-17 0 -29.5 -12.5t-12.5 -29.5v-83h167q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-167v-291q0 -17 12.5 -29.5t29.5 -12.5h500zM500 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v84h-83q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h83v83q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-83h83z" /> + <glyph glyph-name="glyph124" unicode="&#xe07c;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584q0 17 -12.5 29.5t-29.5 12.5h-250 +q-35 0 -59 24.5t-24 58.5h-167zM625 50q17 0 29.5 12.5t12.5 29.5v291h-584v-291q0 -17 12.5 -29.5t29.5 -12.5h500zM500 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12z" /> + <glyph glyph-name="glyph125" unicode="&#xe07d;" horiz-adv-x="876" +d="M846 467q16 0 24 -11.5t5 -30.5l-92 -333q-13 -53 -58.5 -89t-99.5 -36h-500q-53 0 -89 36t-36 89v416q0 53 36 89t89 36h171q34 0 58.5 -24.5t24.5 -58.5h250q40 0 72 -22.5t45 -60.5h100zM83 508v-387l67 262q6 19 20.5 30.5t33.5 11.5h463q0 19 -11.5 30.5t-30.5 11.5 +h-250q-35 0 -59 24.5t-24 58.5h-167q-19 0 -30.5 -11.5t-11.5 -30.5zM704 112l75 271h-571q-3 0 -7.5 -2.5t-4.5 -5.5l-79 -292q-3 -12 -1.5 -19.5t5.5 -10.5l4 -3h500q25 0 49 18.5t30 43.5z" /> + <glyph glyph-name="glyph126" unicode="&#xe07e;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584q0 17 -12.5 29.5t-29.5 12.5h-250 +q-35 0 -59 24.5t-24 58.5h-167zM625 50q17 0 29.5 12.5t12.5 29.5v291h-584v-291q0 -17 12.5 -29.5t29.5 -12.5h500z" /> + <glyph glyph-name="glyph127" unicode="&#xe07f;" +d="M708 467q17 0 29.5 -12.5t12.5 -29.5v-167q0 -17 -12.5 -29t-29.5 -12v-209q0 -52 -36.5 -88.5t-88.5 -36.5h-416q-52 0 -88.5 36.5t-36.5 88.5v209q-17 0 -29.5 12t-12.5 29v167q0 17 12.5 29.5t29.5 12.5h98q-15 32 -15 62q0 60 43 103t103 43q62 0 104 -44 +q42 44 104 44q60 0 103 -43t43 -103q0 -30 -15 -62h98zM667 300v83h-209v-83h209zM333 508v-41h84v41h-84zM417 383h-84v-83h84v83zM479 592q-20 0 -36.5 -12t-22.5 -31q16 -2 27 -13.5t11 -27.5v-37q12 -4 21 -4q26 0 44.5 18.5t18.5 43.5t-19 44t-44 19zM208 529 +q0 -25 18.5 -43.5t44.5 -18.5q9 0 21 4v37q0 16 11 27.5t27 13.5q-6 19 -22.5 31t-36.5 12q-25 0 -44 -19t-19 -44zM292 383h-209v-83h209v83zM167 -33h125v291h-167v-250q0 -17 12.5 -29t29.5 -12zM333 -33h84v291h-84v-291zM583 -33q17 0 29.5 12t12.5 29v250h-167v-291 +h125z" /> + <glyph glyph-name="glyph128" unicode="&#xe080;" horiz-adv-x="652" +d="M277 550q-69 0 -117.5 -49t-48.5 -118t48.5 -117.5t117.5 -48.5t118 48.5t49 117.5t-49 118t-118 49zM277 633q103 0 176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5t73.5 176.5t176.5 73.5zM527 -33q17 0 29.5 -12.5t12.5 -29.5 +t-12.5 -29.5t-29.5 -12.5h-416q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166v41q-155 0 -265 110q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12q85 -85 206 -85q122 0 207 85t85 206q0 122 -85 207l-30 29l86 85q12 12 29.5 12t29.5 -12t11.5 -29.5t-12.5 -29.5 +l-28 -28q82 -102 82 -234q0 -155 -110 -265q-77 -77 -181 -100v-51h166z" /> + <glyph glyph-name="glyph129" unicode="&#xe081;" horiz-adv-x="652" +d="M277 -33v41q-155 0 -265 110q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12q85 -85 206 -85q122 0 207 85t85 206q0 122 -85 207l-30 29l86 85q12 12 29.5 12t29.5 -12t11.5 -29t-12.5 -29l-28 -29q82 -102 82 -234q0 -155 -110 -265q-77 -77 -181 -100v-51h166 +q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-416q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166zM27 383q0 103 73.5 176.5t176.5 73.5t176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5z" /> + <glyph glyph-name="glyph130" unicode="&#xe082;" horiz-adv-x="958" +d="M479 217q-86 0 -147 61t-61 147t61 147t147 61t147.5 -61t61.5 -147t-61.5 -147t-147.5 -61zM479 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM812 175q-44 0 -74 30.5t-30 73.5t30 73.5t74 30.5t74.5 -30.5 +t30.5 -73.5t-30.5 -73.5t-74.5 -30.5zM812 342q-25 0 -43.5 -18.5t-18.5 -44.5q0 -25 18 -43.5t44 -18.5t44.5 18.5t18.5 43.5t-18.5 44t-44.5 19zM812 150q64 0 105 -27t41 -63q0 -18 -42 -32t-104 -14q-34 0 -66 5l1 -11q0 -33 -77 -58t-191 -25q-120 0 -193.5 25 +t-73.5 58l1 12q-40 -6 -67 -6q-65 0 -105.5 14t-40.5 32q0 36 40 63t106 27q79 0 121 -40q79 65 212 65t212 -65q42 40 121 40zM146 56q48 0 82 9l10 14q-30 30 -92 30q-78 0 -101 -39q35 -14 101 -14zM479 8q105 0 173 24q-20 24 -65.5 42t-107.5 18q-65 0 -110 -18 +t-64 -42q67 -24 174 -24zM812 56q67 0 101 15q-10 15 -36.5 26.5t-64.5 11.5q-61 0 -92 -29q4 -5 10 -15q32 -9 82 -9zM146 175q-44 0 -74 30.5t-30 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30 -73.5t-74 -30.5zM146 342q-26 0 -44.5 -19t-18.5 -44t18.5 -43.5 +t44.5 -18.5t44 18.5t18 43.5q0 26 -18.5 44.5t-43.5 18.5z" /> + <glyph glyph-name="glyph131" unicode="&#xe083;" horiz-adv-x="958" +d="M688 425q0 -86 -61.5 -147t-147.5 -61t-147 61t-61 147t61 147t147 61t147.5 -61t61.5 -147zM917 279q0 -43 -30.5 -73.5t-74.5 -30.5t-74 30.5t-30 73.5t30 73.5t74 30.5t74.5 -30.5t30.5 -73.5zM812 150q64 0 105 -27t41 -63q0 -18 -42 -32t-104 -14q-34 0 -66 5l1 -11 +q0 -33 -77 -58t-191 -25q-120 0 -193.5 25t-73.5 58l1 12q-40 -6 -67 -6q-65 0 -105.5 14t-40.5 32q0 36 40 63t106 27q79 0 121 -40q79 65 212 65t212 -65q42 40 121 40zM250 279q0 -43 -30 -73.5t-74 -30.5t-74 30.5t-30 73.5t30 73.5t74 30.5q43 0 73.5 -30.5t30.5 -73.5 +z" /> + <glyph glyph-name="glyph132" unicode="&#xe084;" +d="M750 258v-108l-1 -5q1 -10 1 -33v-83q0 -60 -43 -103t-103 -43t-103 43t-43 103v83q0 47 23 84.5t60 52.5q-3 66 -51 112.5t-115 46.5t-115 -46.5t-51 -112.5q37 -15 60 -52.5t23 -84.5v-83q0 -60 -43 -103t-103 -43t-103 43t-43 103v83q0 23 1 33l-1 5v108 +q0 155 110 265t265 110t265 -110t110 -265zM83 258v-41h42q0 41 1 41q6 79 54 139l-37 37q-60 -79 -60 -176zM208 29v83q0 27 -12.5 45t-28.5 18h-79q-5 -35 -5 -63v-83q0 -25 18.5 -43.5t44.5 -18.5t44 18.5t18 43.5zM517 404q11 11 32 31.5t31 30.5l26 26q-96 96 -231 96 +t-231 -96l74 -74l15 -14q58 58 142 58t142 -58zM667 29v83q0 28 -5 63h-79q-16 0 -28.5 -18t-12.5 -45v-83q0 -25 18 -43.5t44 -18.5t44.5 18.5t18.5 43.5zM667 217v41q0 97 -60 176l-37 -37q49 -62 55 -139v-41h42z" /> + <glyph glyph-name="glyph133" unicode="&#xe085;" horiz-adv-x="808" +d="M0 408q0 93 67 159t158 66q114 0 183 -95q32 44 78.5 69.5t96.5 25.5q94 0 159.5 -65.5t65.5 -159.5q0 -129 -83 -212q-30 -31 -101.5 -85t-132.5 -96.5t-62 -43.5q-18 -9 -25 -9t-25 9q-2 2 -62.5 44.5t-132 96.5t-101.5 84q-83 83 -83 212z" /> + <glyph glyph-name="glyph134" unicode="&#xe086;" horiz-adv-x="808" +d="M0 408q0 93 67 159t158 66q114 0 183 -95q32 44 78.5 69.5t96.5 25.5q94 0 159.5 -65.5t65.5 -159.5q0 -129 -83 -212q-30 -31 -101.5 -85t-132.5 -96.5t-62 -43.5q-18 -9 -25 -9t-25 9q-2 2 -62.5 44.5t-132 96.5t-101.5 84q-83 83 -83 212zM408 367v-309q60 39 145 101 +t118 95q62 62 62 154q0 59 -41 100.5t-100 41.5t-100.5 -41.5t-41.5 -100.5q0 -19 -11.5 -30t-30.5 -11z" /> + <glyph glyph-name="glyph135" unicode="&#xe087;" horiz-adv-x="812" +d="M406 -33q-13 0 -23 7q-21 14 -67.5 46.5t-123.5 90t-107 87.5q-85 85 -85 211q0 93 65.5 158.5t158.5 65.5q114 0 182 -94q31 44 79.5 69t103.5 25q93 0 158 -65.5t65 -158.5q0 -126 -85 -211q-30 -30 -106 -87.5t-124 -90.5t-67 -46q-10 -7 -24 -7zM224 550 +q-58 0 -99.5 -41t-41.5 -100q0 -91 61 -152q63 -63 262 -198q199 135 262 198q61 61 61 152q0 59 -41 100t-99 41q-59 0 -100 -41t-41 -100q0 -17 -12.5 -29t-29.5 -12t-29 12t-12 29q0 59 -41.5 100t-99.5 41z" /> + <glyph glyph-name="glyph136" unicode="&#xe088;" horiz-adv-x="729" +d="M365 368q0 76 -53.5 129t-129.5 53t-129 -53t-53 -129q0 -110 73 -183l292 -218q225 152 291 218q73 73 73 183q0 76 -53 129t-129 53t-129 -53t-53 -129v0z" /> + <glyph glyph-name="glyph137" unicode="&#xe089;" horiz-adv-x="917" +d="M886 364q31 -24 31 -64q0 -34 -24.5 -58.5t-59.5 -24.5h-41v-250q0 -35 -25 -59.5t-59 -24.5h-500q-34 0 -58.5 24.5t-24.5 59.5v250h-42q-35 0 -59 24.5t-24 58.5q0 37 29 63q63 53 163 139t169 145t70 60l27 23l28 -23q1 -1 69.5 -60t168.5 -145t162 -138zM542 -33v208 +h-167v-208h167zM708 300h125q-185 155 -375 320q-190 -165 -375 -320h125v-333h125v250h250v-250h125v333z" /> + <glyph glyph-name="glyph138" unicode="&#xe08a;" horiz-adv-x="833" +d="M417 675q257 -223 400 -343q16 -13 16 -32q0 -17 -12 -29.5t-29 -12.5h-84v-291q0 -17 -12 -29.5t-29 -12.5h-125q-17 0 -29.5 12.5t-12.5 29.5v166h-167v-166q0 -17 -12 -29.5t-29 -12.5h-125q-17 0 -29.5 12.5t-12.5 29.5v291h-83q-17 0 -29.5 12.5t-12.5 29.5t15 32z +" /> + <glyph glyph-name="glyph139" unicode="&#xe08b;" horiz-adv-x="583" +d="M338 654v-62h-42v125h46l25 -46l29 46h42v-125h-42v62l-29 -46zM558 592h-100v125h42v-84h58v-41zM200 592v83h-38v42h117v-42h-37v-83h-42zM67 633v-41h-42v125h42v-42h37v42h42v-125h-42v41h-37zM0 550h583l-50 -600l-241 -67l-242 67zM471 358l8 71h-375l21 -221h258 +l-8 -96l-83 -20l-84 20l-4 63h-75l13 -121l150 -42l150 42l20 229h-266l-8 75h283z" /> + <glyph glyph-name="glyph140" unicode="&#xe08c;" horiz-adv-x="833" +d="M271 467q-25 0 -44 -18.5t-19 -44.5q0 -25 18.5 -43.5t44.5 -18.5q25 0 43.5 18t18.5 44t-18.5 44.5t-43.5 18.5zM271 508q43 0 73.5 -30t30.5 -74t-30.5 -74t-73.5 -30t-73.5 30t-30.5 74t30.5 74t73.5 30zM396 175q-39 0 -75 21t-71 21q-32 0 -67 -84h474 +q-15 68 -37 116.5t-37 50.5q-27 0 -77 -56q-20 -22 -32.5 -33.5t-34 -23.5t-43.5 -12zM583 342q37 0 68 -62.5t44 -125.5l13 -62h-583q2 7 5 18t15 39.5t25 50.5t35 40t45 18q44 0 81 -20.5t65 -20.5q20 0 43.5 19.5t42 43t46 43t55.5 19.5zM833 550v-500q0 -34 -24.5 -58.5 +t-58.5 -24.5h-667q-35 0 -59 24.5t-24 58.5v500q0 34 24 58.5t59 24.5h667q34 0 58.5 -24.5t24.5 -58.5zM750 50v500h-667v-500h667z" /> + <glyph glyph-name="glyph141" unicode="&#xe08d;" horiz-adv-x="833" +d="M167 446q0 104 104 104t104 -104t-104 -104t-104 104zM583 383q33 0 62 -49q41 -74 63 -201h-583l13 42q14 43 44.5 84t67.5 41q43 0 101 -31q20 -11 45 -11q30 0 69 44q46 52 73 68q22 13 45 13zM0 592q0 34 24 58.5t59 24.5h667q34 0 58.5 -24.5t24.5 -58.5v-500 +q0 -35 -24.5 -59.5t-58.5 -24.5h-667q-34 0 -58.5 24.5t-24.5 59.5v500zM750 92v500h-667v-500h667z" /> + <glyph glyph-name="glyph142" unicode="&#xe08e;" horiz-adv-x="896" +d="M813 262q0 74 -53.5 127t-126.5 53q-75 0 -127 -52l-58 -56l-57 55q-53 53 -128 53q-73 0 -126.5 -53t-53.5 -127t53.5 -127t126.5 -53q75 0 127 52l58 56l57 -56q52 -52 127 -52q74 0 127.5 53.5t53.5 126.5zM633 525q109 0 186 -77t77 -186t-77 -186q-78 -78 -186 -78 +q-109 0 -185 76q-76 -76 -185 -76q-108 0 -186 78q-77 77 -77 186t77 186t186 77q110 0 185 -75q75 75 185 75zM229 262q0 -14 10 -24t24 -10t24 10l26 24l-24 23q-11 11 -26 11q-14 0 -24 -10t-10 -24zM187 262q0 31 22.5 53.5t53.5 22.5q32 0 55 -23l55 -53l-56 -54 +q-21 -21 -54 -21q-31 0 -53.5 22t-22.5 53zM667 262q0 14 -9.5 23.5t-24.5 9.5q-16 0 -25 -9l-25 -24l24 -23q11 -11 26 -11q14 0 24 10t10 24zM708 262q0 -31 -22 -53t-53 -22q-33 0 -55 22l-55 53l56 53q22 22 54 22q31 0 53 -22t22 -53z" /> + <glyph glyph-name="glyph143" unicode="&#xe08f;" horiz-adv-x="729" +d="M0 262q0 74 53 127t127 53t127 -53l58 -55l58 56q52 52 126 52q73 0 126.5 -53t53.5 -127t-53.5 -127t-126.5 -53q-74 0 -127 53l-57 55l-59 -56q-52 -52 -126 -52t-127 53t-53 127zM180 338q-31 0 -53.5 -22.5t-22.5 -53.5q0 -32 22 -54t54 -22t54 22l55 54l-55 53 +q-23 23 -54 23zM603 208q22 22 22 54t-22 54t-53.5 22t-53.5 -22l-56 -54l55 -53q22 -22 54 -22.5t54 21.5z" /> + <glyph glyph-name="glyph144" unicode="&#xe090;" horiz-adv-x="458" +d="M343 133q40 -5 62 -41q15 -25 10 -55t-27 -49q-74 -63 -172 -63q-128 0 -176 98q-42 87 10 190l24 46q-41 5 -63 41q-15 25 -10 55t27 49q51 43 123 57q-26 42 -26 89q0 69 49 118t118 49t117.5 -49t48.5 -118q0 -50 -27.5 -91.5t-72.5 -61.5q32 -42 35 -98.5t-27 -119.5 +zM292 633q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5q34 0 58.5 24.5t24.5 58.5t-24.5 58.5t-58.5 24.5zM216 8q31 0 60.5 10.5t43.5 21.5l13 10q-26 -9 -50 -9q-37 0 -45 26.5t12 65.5l42 83q35 73 8 120t-99 47q-31 0 -60.5 -10.5t-43.5 -20.5l-14 -10 +q27 9 51 9q37 0 45 -27t-12 -65l-42 -83q-35 -73 -8 -120.5t99 -47.5z" /> + <glyph glyph-name="glyph145" unicode="&#xe091;" horiz-adv-x="333" +d="M264 70q15 5 24.5 -9.5t-3.5 -26.5q-4 -4 -17.5 -13t-47 -21t-67.5 -12q-87 0 -119 63q-28 59 10 134l42 83q22 44 2 58q-4 4 -17 4q-9 0 -19.5 -2t-17.5 -4l-6 -2q-15 -5 -24.5 9t3.5 26q5 5 17.5 13.5t46 21t67.5 12.5q89 0 120 -63q28 -59 -10 -134l-42 -83 +q-22 -45 -2 -59q3 -3 17 -3q9 0 19.5 2t17.5 4zM125 550q0 104 104 104t104 -104t-104 -104t-104 104z" /> + <glyph glyph-name="glyph146" unicode="&#xe092;" horiz-adv-x="819" +d="M410 570q-39 0 -65 -44l-246 -411q-26 -44 -8.5 -75.5t69.5 -31.5h500q52 0 69.5 32t-9.5 76l-246 410q-26 44 -64 44zM160 -75q-67 0 -113.5 38t-46.5 102q0 45 28 93l246 411q50 85 136 85q85 0 135 -85l247 -411q51 -85 10 -159q-43 -74 -142 -74h-500zM472 102 +q-4 -4 -10.5 -10t-28.5 -15.5t-45 -8.5q-31 2 -44 26.5t-1 61.5l17 51q12 36 -10 48q-8 3 -18 1.5t-18 -4.5l-8 -4q4 4 10.5 10t28.5 15.5t45 8.5q31 -2 44 -27t1 -62l-17 -51q-11 -36 10 -47q8 -3 18 -1.5t18 4.5zM355 383q0 55 55 55q54 0 54 -55q0 -54 -54 -54 +q-55 0 -55 54z" /> + <glyph glyph-name="glyph147" unicode="&#xe093;" horiz-adv-x="819" +d="M160 -75q-67 0 -113.5 38t-46.5 103q0 45 28 92l246 411q50 85 136 85q85 0 135 -85l247 -411q27 -44 27 -93q0 -38 -17 -66q-43 -74 -142 -74h-500zM410 448q-27 0 -46 -19t-19 -46q0 -26 19.5 -45t45.5 -19q27 0 45.5 19t18.5 45t-19 45.5t-45 19.5zM480 95q6 7 0 12.5 +t-12 2.5q-20 -8 -30 -8l-6 1q-14 6 -4 35l17 51q13 41 -3 71t-52 32q-25 1 -48 -8.5t-32.5 -18t-11.5 -11.5q-6 -7 -0.5 -13t12.5 -3q20 8 30 8l6 -1q14 -6 4 -35l-17 -51q-14 -41 2.5 -70.5t52.5 -31.5h6q24 0 45.5 9.5t30.5 17.5t10 11z" /> + <glyph glyph-name="glyph148" unicode="&#xe094;" horiz-adv-x="625" +d="M500 633q69 0 107 -60t2 -125l-26 -46v-269q0 -52 -36.5 -88.5t-88.5 -36.5h-333q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h283q36 41 92 41zM464 529l-141 -243l-85 85q-12 12 -30 12q-17 0 -29 -12t-12 -29.5t12 -29.5l125 -125q12 -12 29 -12 +q27 2 37 21l167 292q6 20 3 32q-5 17 -21 25.5t-36 0.5q-14 -7 -19 -17zM458 92q17 0 29.5 12t12.5 29v207l-94 -164q-20 -36 -61 -42l-12 -1q-34 0 -59 25l-125 125q-25 25 -25 59t25 59q24 24 59 24t59 -24l47 -47l90 154h-279q-17 0 -29.5 -12t-12.5 -29v-334 +q0 -17 12.5 -29t29.5 -12h333z" /> + <glyph glyph-name="glyph149" unicode="&#xe095;" horiz-adv-x="583" +d="M458 8h-333q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h208q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-208q-17 0 -29.5 -12t-12.5 -29v-334q0 -17 12.5 -29t29.5 -12h333q17 0 29.5 12t12.5 29v125q0 17 12.5 29.5t29.5 12.5t29 -12.5 +t12 -29.5v-125q0 -52 -36.5 -88.5t-88.5 -36.5zM340 182q-23 0 -39 16l-111 111q-16 17 -16 40t16 39t39 16t39 -16l60 -59l144 227q11 20 33.5 26.5t42.5 -4.5t26 -33.5t-5 -42.5l-180 -291q-14 -26 -49 -29z" /> + <glyph glyph-name="glyph150" unicode="&#xe096;" horiz-adv-x="646" +d="M250 -75h-250v184l158 158q-12 36 -12 75q0 104 73 177t177 73t177 -73t73 -177t-73 -177t-177 -73h-63v-84h-83v-83zM83 8h84v84h83v83h146q69 0 117.5 49t48.5 118t-48.5 117.5t-117.5 48.5t-118 -48.5t-49 -117.5q0 -36 15 -69l12 -26l-173 -173v-66zM396 383 +q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM396 425q34 0 58.5 -24.5t24.5 -58.5q0 -35 -24.5 -59.5t-58.5 -24.5t-59 25t-25 59t24.5 58.5t59.5 24.5z" /> + <glyph glyph-name="glyph151" unicode="&#xe097;" horiz-adv-x="562" +d="M146 342q0 86 61 147t147 61t147 -61t61 -147t-61 -147.5t-147 -61.5h-104v-83h-83v-83h-84q-20 0 -41 15.5t-32 31.5l-10 15v63l165 164q-19 41 -19 86zM354 258q34 0 59 25t25 59t-24.5 58.5t-59.5 24.5q-34 0 -58.5 -24.5t-24.5 -58.5q0 -35 24.5 -59.5t58.5 -24.5z +" /> + <glyph glyph-name="glyph152" unicode="&#xe098;" horiz-adv-x="833" +d="M250 258h292v-83h-292v83zM125 258h83v-83h-83v83zM125 425h83v-42h-83v42zM250 300h-125v42h125v-42zM250 425h42v-42h-42v42zM292 342h41v-42h-41v42zM333 425h42v-42h-42v42zM375 342h42v-42h-42v42zM417 425h41v-42h-41v42zM458 342h42v-42h-42v42zM500 425h42v-42 +h-42v42zM542 342h41v-42h-41v42zM583 425h42v-42h-42v42zM625 300v42h42v83h41v-125h-83zM667 258v-41h41v-42h-125v42h42v41h42zM750 550q34 0 58.5 -24t24.5 -59v-334q0 -35 -24.5 -59t-58.5 -24h-667q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h667zM750 133v334h-667 +v-334h667z" /> + <glyph glyph-name="glyph153" unicode="&#xe099;" horiz-adv-x="708" +d="M708 342q0 -144 -87 -257.5t-225 -150.5v-51q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v51q-138 37 -225 150.5t-87 257.5q0 153 98 270.5t249 145.5l7 1l8 -1q151 -28 248.5 -145.5t97.5 -270.5zM396 21q102 35 165.5 123t63.5 198q0 121 -76.5 214.5t-194.5 117.5 +q-118 -24 -194.5 -117.5t-76.5 -214.5q0 -109 64 -197.5t166 -123.5v125l-182 181q-9 9 -5 20t14.5 14t20.5 -5l152 -152v150l-99 98q-9 9 -5 20t14.5 14t20.5 -5l68 -68v137q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-137l68 68q9 9 20.5 5t14.5 -14t-5 -20 +l-98 -98v-150l152 152q14 14 28.5 -0.5t0.5 -28.5l-181 -181v-125z" /> + <glyph glyph-name="glyph154" unicode="&#xe09a;" horiz-adv-x="625" +d="M312 571q51 0 87.5 -36.5t36.5 -87.5q0 -9 -6 -15t-15 -6t-15 6t-6 15q0 34 -24 58t-58 24q-20 0 -20 21t20 21zM312 -117q-17 0 -29 12.5t-12 29.5h-83q-17 0 -29.5 12.5t-12.5 29.5v125q0 25 -18 61t-72 114l-3 5q-53 79 -53 174q0 129 91.5 220.5t220.5 91.5 +t221 -91.5t92 -220.5q0 -97 -57 -179q-54 -77 -71.5 -112.5t-17.5 -62.5v-125q0 -17 -12 -29.5t-29 -12.5h-84q0 -17 -12.5 -29.5t-29.5 -12.5zM396 8v42h-167v-42h167zM500 314q42 61 42 132q0 94 -67.5 161.5t-162.5 67.5q-94 0 -161.5 -67.5t-67.5 -161.5q0 -70 42 -131 +l3 -6q82 -117 96 -176h47v84q0 17 12 29t29 12t29.5 -12t12.5 -29v-84h46q13 57 100 181z" /> + <glyph glyph-name="glyph155" unicode="&#xe09b;" horiz-adv-x="758" +d="M629 550q-19 0 -32 -13l-72 -72l-13 13q-36 36 -91 36t-91 -36l-174 -174q-38 -38 -38 -92q0 -53 38 -91l12 -13l-71 -71q-13 -13 -13 -32t13 -33q14 -14 32 -14q19 0 33 14l71 72l13 -13q38 -38 92 -38q53 0 91 38l174 174q37 37 37 91t-37 91l-13 13l72 72q14 14 14 33 +t-14 32q-13 13 -33 13zM129 -125q-53 0 -91 38.5t-38 90.5q0 54 38 92l20 20q-23 46 -23 96q0 89 62 151l174 174q61 61 150 61q52 0 96 -23l21 21q37 37 91 37q53 0 91 -38.5t38 -90.5q0 -55 -38 -91l-20 -20q24 -48 24 -97q0 -87 -63 -150l-173 -174q-62 -62 -151 -62 +q-51 0 -97 23l-20 -20q-38 -38 -91 -38zM460 250q-34 1 -59 26t-26 59l-76 -77q34 -1 58.5 -25.5t25.5 -58.5zM421 424q15 0 26 -11l13 -13l-30 -30q-14 -14 -14 -33t14 -32q13 -13 32 -13q20 0 33 13l30 30l13 -13q11 -11 11 -26q0 -16 -11 -27l-174 -173q-11 -11 -26 -11 +q-16 0 -27 11l-13 12l30 30q14 14 14 33t-14 32q-14 14 -32 14q-19 0 -33 -14l-30 -30l-13 13q-10 10 -10 26q0 17 10 27l174 174q11 11 27 11z" /> + <glyph glyph-name="glyph156" unicode="&#xe09c;" horiz-adv-x="592" +d="M578 537q14 -13 14 -32t-14 -33l-71 -72l12 -13q38 -38 38 -91t-38 -91l-173 -174q-38 -38 -92 -38q-53 0 -91 38l-13 13l-72 -72q-14 -14 -32 -14q-19 0 -33 14q-13 14 -13 33t13 32l72 71l-13 13q-37 37 -37 92q0 54 37 91l174 174q37 37 91.5 37t91.5 -37l13 -13 +l71 72q13 13 32 13t33 -13zM455 269q10 10 10 27q0 16 -10 26l-13 13l-30 -30q-13 -13 -33 -13q-19 0 -32 13t-13 32t13 33l30 30l-13 13q-11 11 -26 11q-16 0 -27 -11l-174 -174q-11 -11 -11 -26q0 -16 11 -27l13 -13l30 30q14 14 33 14q18 0 32 -14q13 -13 13 -32t-13 -33 +l-30 -30l13 -12q11 -11 26 -11q16 0 27 11z" /> + <glyph glyph-name="glyph157" unicode="&#xe09d;" horiz-adv-x="636" +d="M333 -71q-48 0 -69 62l-51 151l-151 50q-59 19 -62 67q-3 46 54 72l474 222q33 15 58.5 10t39.5 -26q20 -33 -2 -80l-221 -474q-25 -54 -70 -54zM109 265l170 -57l57 -171l199 427z" /> + <glyph glyph-name="glyph158" unicode="&#xe09e;" horiz-adv-x="552" +d="M262 4l-57 171l-171 57q-22 7 -30 18t-1.5 23t27.5 21l474 221q32 14 43.5 2.5t-2.5 -43.5l-222 -474q-9 -21 -20.5 -27.5t-22.5 1.5t-18 30z" /> + <glyph glyph-name="glyph159" unicode="&#xe09f;" horiz-adv-x="667" +d="M333 592q-103 0 -177 -72q-73 -71 -73 -173q0 -101 73 -172l177 -175l178 175q72 70 72 172q0 103 -72 173q-74 72 -178 72zM333 675q139 0 236 -96t97 -232t-97 -232l-236 -232l-235 232q-98 96 -98 232t98 232t235 96zM333 446q-42 0 -73 -31t-31 -73.5t31 -73.5 +q30 -30 73 -30q44 0 74 30q31 31 31 73.5t-31 73.5t-74 31zM333 488q60 0 103 -43t43 -103t-43 -103t-103 -43t-103 43t-43 103t43 103t103 43z" /> + <glyph glyph-name="glyph160" unicode="&#xe0a0;" horiz-adv-x="667" +d="M569 579q97 -96 97 -232t-97 -232l-236 -232l-235 232q-98 96 -98 232t98 232t236 96t235 -96zM333 238q44 0 74 30q31 31 31 73.5t-31 73.5t-74 31q-42 0 -73 -31t-31 -73.5t31 -73.5q30 -30 73 -30z" /> + <glyph glyph-name="glyph161" unicode="&#xe0a1;" horiz-adv-x="583" +d="M238 92q0 54 54 54t54 -54t-54 -54t-54 54zM292 633q68 0 117 -49t49 -117v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292q0 34 24 58.5t59 24.5h42v84q0 48 23.5 85.5t59.5 58.5q38 22 84 22zM292 550 +q-35 0 -59.5 -24.5t-24.5 -58.5v-125h167v125q0 35 -24.5 59t-58.5 24zM500 8v292h-417v-292h417z" /> + <glyph glyph-name="glyph162" unicode="&#xe0a2;" horiz-adv-x="583" +d="M500 383q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292q0 34 24 58.5t59 24.5h42v84q0 69 49 117.5t118 48.5t117.5 -48.5t48.5 -117.5v-84h42zM292 38q22 0 38 16t16 38t-16 38t-38 16t-38 -16t-16 -38t16 -38 +t38 -16zM375 342v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5t-24.5 -58.5v-125h167z" /> + <glyph glyph-name="glyph163" unicode="&#xe0a3;" horiz-adv-x="708" +d="M238 92q0 54 54 54t54 -54t-54 -54t-54 54zM0 300q0 34 24 58.5t59 24.5h125v-41h167v125q0 55 28.5 94.5t73.5 58.5q30 13 65 13q68 0 117 -49t49 -117v-125q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5 +t-24.5 -58.5v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292zM500 8v292h-417v-292h417z" /> + <glyph glyph-name="glyph164" unicode="&#xe0a4;" horiz-adv-x="708" +d="M542 633q69 0 117.5 -48.5t48.5 -117.5v-125q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5t-24.5 -58.5v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292 +q0 34 24 58.5t59 24.5h125v-41h167v125q0 69 49 117.5t118 48.5zM292 38q22 0 38 16t16 38t-16 38t-38 16t-38 -16t-16 -38t16 -38t38 -16z" /> + <glyph glyph-name="glyph165" unicode="&#xe0a5;" +d="M667 508q35 0 59 -24t24 -59v-375q0 -34 -24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5v375q0 35 24 59t59 24h584zM330 145l-65 57l-152 -152h524l-152 152l-65 -57q-19 -16 -45 -16t-45 16zM83 79l150 151l-150 131v-282zM517 230l150 -150v281zM667 425h-584v-9 +l274 -240q7 -6 18 -6t18 6l274 240v9z" /> + <glyph glyph-name="glyph166" unicode="&#xe0a6;" horiz-adv-x="667" +d="M42 -33q-18 0 -30 12.5t-12 28.5v417q0 17 12 29l188 188q11 11 27 12t28 -9l179 -143l162 161q20 20 45.5 8t25.5 -38v-416q0 -17 -13 -30l-187 -187q-11 -11 -27.5 -12t-28.5 9l-179 143l-161 -161q-12 -12 -29 -12zM83 109q122 120 125 122v302l-125 -125v-299z +M255 228l162 -129v311l-167 132v-311zM583 234v299q-122 -121 -125 -123v-301z" /> + <glyph glyph-name="glyph167" unicode="&#xe0a7;" horiz-adv-x="583" +d="M458 -75h-333q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h333q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 92q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h333q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-333zM292 514l-205 -211 +l-4 -3h417q-34 36 -104 107t-104 107zM292 633q161 -165 268 -275q23 -23 23 -58q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58z" /> + <glyph glyph-name="glyph168" unicode="&#xe0a8;" horiz-adv-x="583" +d="M500 133q34 0 58.5 -24.5t24.5 -58.5t-24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h417zM560 358q23 -23 23 -58q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58l268 275q161 -165 268 -275z" /> + <glyph glyph-name="glyph169" unicode="&#xe0a9;" +d="M458 438v-335l173 168zM450 533q29 0 52 -21l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22zM83 438v-335l173 168zM75 533q29 0 52 -21l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53 +t53 22z" /> + <glyph glyph-name="glyph170" unicode="&#xe0aa;" +d="M502 512l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22q29 0 52 -21zM127 512l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22q29 0 52 -21z" /> + <glyph glyph-name="glyph171" unicode="&#xe0ab;" horiz-adv-x="542" +d="M125 -33q-52 0 -88.5 36.5t-36.5 88.5v375q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-375q0 -52 -36.5 -88.5t-88.5 -36.5zM125 508q-17 0 -29.5 -12t-12.5 -29v-375q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v375q0 17 -12.5 29t-29.5 12zM417 -33 +q-52 0 -88.5 36.5t-36.5 88.5v375q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-375q0 -52 -36.5 -88.5t-88.5 -36.5zM417 508q-17 0 -29.5 -12t-12.5 -29v-375q0 -17 12.5 -29.5t29.5 -12.5t29 12.5t12 29.5v375q0 17 -12 29t-29 12z" /> + <glyph glyph-name="glyph172" unicode="&#xe0ac;" horiz-adv-x="458" +d="M83 550q35 0 59.5 -24.5t24.5 -58.5v-334q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24t-24 59v334q0 35 24 59t59 24zM375 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24t-59 24t-24 59v334q0 35 24 59t59 24z" /> + <glyph glyph-name="glyph173" unicode="&#xe0ad;" horiz-adv-x="417" +d="M83 508v-416q35 35 106.5 104t107.5 104l-210 205zM83 592q35 0 59 -24l275 -268q-166 -161 -276 -268q-24 -24 -58 -24t-58.5 24.5t-24.5 59.5v416q0 35 24.5 59.5t58.5 24.5z" /> + <glyph glyph-name="glyph174" unicode="&#xe0ae;" horiz-adv-x="417" +d="M333 508l-212 -208l212 -208v416zM275 567q25 25 58 25q35 0 59.5 -25t24.5 -59v-416q0 -34 -24.5 -59t-59.5 -25q-33 0 -58 25l-275 267q167 163 275 267z" /> + <glyph glyph-name="glyph175" unicode="&#xe0af;" horiz-adv-x="417" +d="M333 8q-33 0 -58 25l-275 267q167 163 275 267q25 25 58 25q35 0 59.5 -25t24.5 -59v-416q0 -34 -24.5 -59t-59.5 -25z" /> + <glyph glyph-name="glyph176" unicode="&#xe0b0;" horiz-adv-x="417" +d="M142 32q-24 -24 -59 -24q-34 0 -58.5 24.5t-24.5 59.5v416q0 35 24.5 59.5t58.5 24.5q35 0 59 -24l275 -268q-165 -161 -275 -268z" /> + <glyph glyph-name="glyph177" unicode="&#xe0b1;" horiz-adv-x="500" +d="M250 467q-69 0 -118 -49t-49 -118t49 -118t118 -49t118 49t49 118t-49 118t-118 49zM250 550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z" /> + <glyph glyph-name="glyph178" unicode="&#xe0b2;" horiz-adv-x="500" +d="M250 550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z" /> + <glyph glyph-name="glyph179" unicode="&#xe0b3;" +d="M292 438l-173 -167l173 -168v335zM300 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21zM667 438l-173 -167l173 -168v335zM675 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241 +q149 145 248 241q21 21 52 21z" /> + <glyph glyph-name="glyph180" unicode="&#xe0b4;" +d="M300 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21zM675 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21z" /> + <glyph glyph-name="glyph181" unicode="&#xe0b5;" horiz-adv-x="500" +d="M417 467h-334v-334h334v334zM417 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24h-334q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h334z" /> + <glyph glyph-name="glyph182" unicode="&#xe0b6;" horiz-adv-x="500" +d="M417 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24h-334q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h334z" /> + <glyph glyph-name="glyph183" unicode="&#xe0b7;" horiz-adv-x="792" +d="M667 550q52 0 88.5 -36.5t36.5 -88.5v-292q0 -52 -36.5 -88.5t-88.5 -36.5h-375l-125 -125v125h-42q-52 0 -88.5 36.5t-36.5 88.5v292q0 52 36.5 88.5t88.5 36.5h542zM708 133v292q0 17 -12 29.5t-29 12.5h-542q-17 0 -29.5 -12.5t-12.5 -29.5v-292q0 -17 12.5 -29 +t29.5 -12h542q17 0 29 12t12 29zM208 196q-34 0 -58.5 24t-24.5 59t24.5 59t58.5 24q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5zM208 321q-17 0 -29 -12.5t-12 -29.5t12 -29t29 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM396 196q-35 0 -59.5 24.5t-24.5 58.5 +t24.5 58.5t59.5 24.5q34 0 58.5 -24t24.5 -59t-24.5 -59t-58.5 -24zM396 321q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM583 196q-35 0 -59 24t-24 59t24 59t59 24t59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5zM583 321 +q-17 0 -29 -12.5t-12 -29.5t12 -29t29 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5z" /> + <glyph glyph-name="glyph184" unicode="&#xe0b8;" +d="M625 508h-500q-17 0 -29.5 -12t-12.5 -29v-292q0 -17 12.5 -29.5t29.5 -12.5h125v-7l7 7h368q17 0 29.5 12.5t12.5 29.5v292q0 17 -12.5 29t-29.5 12zM625 592q52 0 88.5 -36.5t36.5 -88.5v-292q0 -52 -36.5 -88.5t-88.5 -36.5h-333l-125 -125v125h-42q-52 0 -88.5 36.5 +t-36.5 88.5v292q0 52 36.5 88.5t88.5 36.5h500z" /> + <glyph glyph-name="glyph185" unicode="&#xe0b9;" horiz-adv-x="1000" +d="M875 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-42v-125l-125 125h-333q-52 0 -88.5 36.5t-36.5 88.5l-125 -125v125q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5h125zM125 175h167v187 +q0 43 30.5 74t73.5 31h271v41q0 17 -12.5 29.5t-29.5 12.5h-500q-17 0 -29.5 -12.5t-12.5 -29.5v-291q0 -17 12.5 -29.5t29.5 -12.5zM917 92v291q0 17 -12.5 29.5t-29.5 12.5h-479q-26 0 -44.5 -18.5t-18.5 -44.5v-270q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5z" /> + <glyph glyph-name="glyph186" unicode="&#xe0ba;" horiz-adv-x="583" +d="M292 133q-69 0 -118 49t-49 118v250q0 69 49 118t118 49t117.5 -49t48.5 -118v-250q0 -69 -48.5 -118t-117.5 -49zM292 633q-35 0 -59.5 -24.5t-24.5 -58.5v-250q0 -34 24.5 -58.5t59.5 -24.5q34 0 58.5 24.5t24.5 58.5v250q0 34 -24.5 58.5t-58.5 24.5zM583 300 +q0 -109 -71.5 -191t-178.5 -97v-45h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h125v45q-107 15 -178.5 97t-71.5 191v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83q0 -86 61.5 -147t147.5 -61 +t147 61t61 147v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83z" /> + <glyph glyph-name="glyph187" unicode="&#xe0bb;" horiz-adv-x="583" +d="M292 133q-69 0 -118 49t-49 118v250q0 69 49 118t118 49t117.5 -49t48.5 -118v-250q0 -69 -48.5 -118t-117.5 -49zM583 300q0 -109 -71.5 -191t-178.5 -97v-45h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5 +t29.5 12.5h125v45q-107 15 -178.5 97t-71.5 191v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83q0 -86 61.5 -147t147.5 -61t147 61t61 147v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83z" /> + <glyph glyph-name="glyph188" unicode="&#xe0bc;" +d="M625 133h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 300q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h500q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph189" unicode="&#xe0bd;" horiz-adv-x="667" +d="M583 342q35 0 59.5 -25t24.5 -59t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h500z" /> + <glyph glyph-name="glyph190" unicode="&#xe0be;" horiz-adv-x="833" +d="M771 471q55 -25 62 -79q0 -66 -54 -96l-46 -25q17 -67 17 -113q0 -88 -94 -148t-231 -60q-172 0 -267 88q-3 -1 -8.5 -2t-23.5 -3.5t-34 0.5q-32 3 -62 36.5t-30 76.5q0 87 12 137l13 63q-8 17 -8 50q0 24 18 47t44 36q225 113 279 138q42 21 65.5 20.5t59.5 -20.5z +M429 38q102 0 172 36.5t70 87.5l-17 117l-179 -87q-49 -20 -92 0l-175 87l-20 -117q0 -53 70 -88.5t171 -35.5zM733 375q13 6 13 14.5t-13 14.5q-262 134 -279 142q-27 13 -54 0l-279 -142q-13 -6 -13 -14.5t13 -14.5l8 -4q-13 -33 -25 -92q-12 -62 -12 -129q0 -15 10 -24 +t23 -9h4q29 0 29 33q0 6 -4 46.5t-4 74.5q0 52 12 83l238 -121q29 -14 58 0z" /> + <glyph glyph-name="glyph191" unicode="&#xe0bf;" horiz-adv-x="917" +d="M833 633q35 0 59.5 -24.5t24.5 -58.5v-500q0 -34 -24.5 -58.5t-59.5 -24.5h-750q-35 0 -59 24.5t-24 58.5v500q0 34 24 58.5t59 24.5h750zM83 550v-500h334v500h-334zM833 50v500h-375v-500h375zM792 238v-126q0 -8 -6.5 -14t-14.5 -6h-42q-8 0 -14.5 6t-6.5 14v126 +q0 8 6.5 14t14.5 6h42q8 0 14.5 -6t6.5 -14zM667 488v-209q0 -8 -6.5 -14.5t-14.5 -6.5h-125q-8 0 -14.5 6.5t-6.5 14.5v209q0 8 6.5 14t14.5 6h125q8 0 14.5 -6t6.5 -14zM729 383q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h42q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5 +t-14.5 -6.5h-42zM729 300q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h42q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-42zM521 175q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h125q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-125zM646 133q8 0 14.5 -6.5 +t6.5 -14.5t-6.5 -14t-14.5 -6h-125q-8 0 -14.5 6t-6.5 14t6.5 14.5t14.5 6.5h125zM729 467q-8 0 -14.5 6.5t-6.5 14.5t6.5 14t14.5 6h42q8 0 14.5 -6t6.5 -14t-6.5 -14.5t-14.5 -6.5h-42zM375 488v-126q0 -8 -6.5 -14t-14.5 -6h-208q-8 0 -14.5 6t-6.5 14v126q0 8 6.5 14 +t14.5 6h208q8 0 14.5 -6t6.5 -14zM354 217q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208zM354 300q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208zM354 133 +q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14t-14.5 -6h-208q-8 0 -14.5 6t-6.5 14t6.5 14.5t14.5 6.5h208z" /> + <glyph glyph-name="glyph192" unicode="&#xe0c0;" horiz-adv-x="667" +d="M583 639q34 0 59 -24.5t25 -58.5v-423q0 -69 -55.5 -117.5t-132.5 -48.5q-74 0 -127 45q-24 -40 -68 -63.5t-96 -23.5q-77 0 -132.5 49t-55.5 118q0 53 35 96.5t90 60.5v254q0 32 21 55.5t52 27.5l375 52zM333 133q0 47 35.5 82t89.5 42v72l-125 -18v-178zM583 133v423 +l-375 -53v-330q-14 2 -20 2q-44 0 -74.5 -24.5t-30.5 -58.5q0 -35 31 -59.5t74 -24.5t73.5 24.5t30.5 59.5v255l208 31v-163q-14 2 -21 2q-43 0 -73.5 -24.5t-30.5 -59.5t30.5 -59t73.5 -24t73.5 24t30.5 59z" /> + <glyph glyph-name="glyph193" unicode="&#xe0c1;" horiz-adv-x="625" +d="M602 636q9 1 16 -5.5t7 -15.5v-503q0 -43 -36.5 -73.5t-88.5 -30.5t-88.5 30.5t-36.5 73.5t36.5 74t88.5 31v155l-250 -26v-317q0 -43 -36.5 -73.5t-88.5 -30.5t-88.5 30.5t-36.5 73.5t36.5 73.5t88.5 30.5v430q0 8 5.5 14t12.5 7z" /> + <glyph glyph-name="glyph194" unicode="&#xe0c2;" horiz-adv-x="793" +d="M604 689q77 0 133 -56t56 -133q0 -22 -7 -50q20 -62 -25 -107l-187 -188q-30 -30 -74 -30h-3l-90 -90q-25 -25 -63 -40q-10 -4 -289 -97q-8 -2 -13 -2q-21 0 -34 17t-6 37q93 279 97 289q15 38 41 64q331 330 332 331q57 55 132 55zM299 67l-127 127q-2 -6 -12 -35 +t-17 -50l71 -71q35 11 85 29zM128 65l-21 -62l63 21zM449 195q-12 18 -10.5 40t17.5 38l154 154l-114 114l-297 -298l-8 -9l147 -147l10 7zM702 402q14 14 -0.5 28.5t-28.5 0.5l-188 -187q-10 -10 -4 -23t19 -13q9 0 15 6zM639 456q31 31 68 19q3 12 3 25q0 43 -31 74 +q-33 31 -77.5 29.5t-76.5 -33.5z" /> + <glyph glyph-name="glyph195" unicode="&#xe0c3;" horiz-adv-x="768" +d="M750 513q18 -18 18 -44t-18 -44l-456 -456q-17 -17 -47.5 -30.5t-58.5 -13.5h-188v187q0 28 13.5 59t30.5 48l456 456q18 18 44 18t44 -18zM115 172l52 -51l345 346l-51 51zM188 8q11 0 26 7q-8 8 -21 20.5t-40 40t-45 44.5l-18 18q-7 -17 -7 -26v-62l42 -42h63zM247 40 +l346 346l-51 51l-346 -345zM622 415l54 54l-132 132l-54 -53z" /> + <glyph glyph-name="glyph196" unicode="&#xe0c4;" horiz-adv-x="836" +d="M771 647q25 -25 42 -59.5t21.5 -87t-9.5 -109.5t-59.5 -131t-119.5 -148q-189 -189 -363 -189q-107 0 -172 65l-74 74q-37 37 -37 88.5t37 88.5l66 66q37 37 88 37t88 -37l58 -57l174 173l-58 58q-37 37 -37 88.5t37 88.5l66 66q36 36 89 36q52 0 88 -36zM512 597 +q-12 -12 -12 -29.5t12 -29.5l45 -45l125 125l-45 45q-12 12 -29 12q-18 0 -30 -12zM95 121l46 -45l125 125l-46 45q-12 12 -29 12t-29 -12l-67 -66q-12 -12 -12 -29.5t12 -29.5zM587 171q65 65 104 127t51 106.5t9 84t-13.5 62t-25.5 37.5l-125 -125l12 -12q12 -12 12 -29.5 +t-12 -29.5l-233 -233q-12 -12 -29 -12q-18 0 -30 12l-12 13l-125 -126q40 -40 113 -40q139 0 304 165z" /> + <glyph glyph-name="glyph197" unicode="&#xe0c5;" horiz-adv-x="710" +d="M453 505l-18 18q-18 18 -18 44t18 44l66 67q18 18 44 18t44 -18l19 -19zM173 261l18 -18l-154 -155l-19 18q-18 18 -18 45q0 26 18 44l66 66q18 18 44.5 18t44.5 -18zM664 603q8 -8 18 -22t21 -56.5t5 -90.5t-48 -123t-121 -154q-171 -171 -319 -171q-81 0 -127 46 +l-15 14l155 155l27 -27q14 -14 29 0l233 233q6 6 6 14q0 9 -6 15l-27 27l154 155z" /> + <glyph glyph-name="glyph198" unicode="&#xe0c6;" +d="M625 540q51 0 88 -37t37 -88q0 -52 -37 -89q-38 -39 -88 -61v-173q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5v198q-51 0 -88 37t-37 88t37 88q89 89 213 89t213 -89q15 -15 37 -15t37 15q37 37 88 37z +M654 385q12 12 12 29.5t-12 29.5q-13 13 -29 13t-29 -13q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q24 24 54 33v-326q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v326q30 -9 54 -33q46 -46 112 -59v-234 +q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v234q66 13 112 59z" /> + <glyph glyph-name="glyph199" unicode="&#xe0c7;" horiz-adv-x="583" +d="M571 444q12 -12 12 -29.5t-12 -29.5q-46 -46 -113 -59v-234q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v234q-67 13 -113 59q-24 24 -54 33v-326q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v326q-30 -9 -54 -33q-12 -12 -29.5 -12t-29.5 12t-12 29.5 +t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12z" /> + <glyph glyph-name="glyph200" unicode="&#xe0c8;" horiz-adv-x="709" +d="M685 484q24 -24 24 -58.5t-24 -59.5q-13 -13 -29 -19q-85 -41 -115 -100q-41 -82 -41 -197q0 -36 -23.5 -59.5t-59.5 -23.5q-38 0 -60 24l-134 135l-223 -159l159 223l-135 134q-16 15 -21.5 39.5t3.5 51.5q22 52 77 52q117 0 197 40l9 5q55 30 94 113q6 16 17 27 +q24 24 59.5 23.5t58.5 -24.5zM466 284q43 86 157 140l-164 169q-55 -117 -141 -160l-10 -5q-96 -45 -225 -45l333 -333q0 134 50 234z" /> + <glyph glyph-name="glyph201" unicode="&#xe0c9;" horiz-adv-x="668" +d="M458 50q0 -18 -11.5 -30t-29.5 -12q-17 0 -30 13l-135 135l-252 -189l189 252l-135 135q-19 19 -9 45q11 26 38 26q126 0 216 45q72 36 121 137q7 19 29 25.5t40 -10.5l166 -167q17 -18 11 -40t-25 -29q-102 -50 -138 -121q-45 -88 -45 -215z" /> + <glyph glyph-name="glyph202" unicode="&#xe0ca;" horiz-adv-x="766" +d="M718 627q47 -47 47.5 -122.5t-50.5 -116.5q-42 -33 -152 -74l67 -67q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12l-12 12l-218 -218q-25 -25 -63 -40q-1 -1 -23.5 -8.5t-62 -16t-72.5 -8.5q-62 0 -91 29q-19 19 -25.5 51.5t-3 64.5t11.5 63.5t13.5 48.5t7.5 20 +q15 38 41 64l218 218l-13 12q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l68 -68q42 112 73 152q41 52 118 52q73 0 121 -48zM88 -3q19 -16 108 6l-101 101q-22 -89 -7 -107zM241 17q27 10 41 24l218 218l-149 149l-218 -218q-14 -14 -24 -40z" /> + <glyph glyph-name="glyph203" unicode="&#xe0cb;" horiz-adv-x="833" +d="M770 284q41 -23 57 -68.5t-3 -89.5q-19 -43 -61.5 -63.5t-88.5 -7.5l-112 32v-35l37 -29q37 -30 45 -77.5t-18 -87.5q-26 -41 -72 -54t-89 9l-48 8q-12 0 -24.5 -2t-18.5 -4l-6 -2q-43 -22 -89 -9t-72 54q-26 40 -18 87.5t45 77.5l37 29v35l-112 -32q-46 -13 -88 7.5 +t-61 63.5t-3.5 89t56.5 69l208 118v200q0 60 43 103t103 43t102.5 -43t42.5 -103v-200zM747 159q6 14 1 29t-19 23l-250 143v248q0 26 -18.5 44.5t-43.5 18.5t-44 -18.5t-19 -44.5v-248l-250 -143q-13 -7 -18 -22.5t1 -29.5t20 -21t29 -3l218 62v-185l-68 -54 +q-13 -10 -15 -26.5t6 -29.5t24 -17t30 3q35 16 86 16q23 0 44 -4t31 -8l10 -4q14 -8 30 -3.5t24 17.5t6 29.5t-15 26.5l-68 54v185l218 -62q15 -4 29.5 3t20.5 21zM396 612q0 21 21 21q20 0 20 -21q0 -20 -20 -20q-21 0 -21 20z" /> + <glyph glyph-name="glyph204" unicode="&#xe0cc;" horiz-adv-x="667" +d="M646 237q28 -16 19 -47t-40 -31l-11 2l-218 62v-185l68 -54q23 -20 12.5 -47.5t-38.5 -27.5q-8 0 -16 3l-89 36l-88 -36q-14 -6 -29 -1t-23 19q-8 13 -5 28.5t15 25.5l68 54v185l-218 -62q-15 -4 -29.5 3t-20.5 21t-1 29t19 23l250 143v248q0 26 18.5 44.5t43.5 18.5 +t44 -18.5t19 -44.5v-248zM333 618q9 0 15 6t6 15q0 20 -21 20q-20 0 -20 -20q0 -21 20 -21z" /> + <glyph glyph-name="glyph205" unicode="&#xe0cd;" horiz-adv-x="583" +d="M542 550q19 0 30 -11.5t11 -30.5v-175q-9 -78 -53 -139.5t-113 -93.5v-133q0 -35 -24.5 -59.5t-59.5 -24.5h-83q-34 0 -58.5 24.5t-24.5 59.5v133q-70 32 -115.5 94t-51.5 139v175q0 19 11.5 30.5t30.5 11.5h41v125q0 19 11.5 30.5t30.5 11.5h83q19 0 30.5 -11.5 +t11.5 -30.5v-125h83v125q0 19 11.5 30.5t30.5 11.5h83q19 0 30.5 -11.5t11.5 -30.5v-125h42zM375 675v-125h83v125h-83zM125 675v-125h83v125h-83zM333 -33v83h-83v-83h83zM292 154q68 0 123 41t77 105h-396q19 -63 73.5 -104.5t122.5 -41.5zM500 362v105h-417v-105 +q0 -10 5 -20h408q4 8 4 20z" /> + <glyph glyph-name="glyph206" unicode="&#xe0ce;" +d="M375 -75q-52 0 -88.5 36.5t-36.5 88.5l2 127l-126 -2q-52 0 -89 36.5t-37 88.5t36.5 88.5t88.5 36.5l127 2l-2 122q0 52 36.5 89t88.5 37t88.5 -36.5t36.5 -88.5l2 -123l124 -2q51 0 87.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5l-123 2l-2 -128q0 -51 -36.5 -87.5 +t-88.5 -36.5zM333 258v-209q0 -17 12.5 -29t29.5 -12t29.5 12.5t12.5 29.5v208h209q17 0 29 12.5t12 29.5t-12.5 29.5t-29.5 12.5h-208v208q0 18 -12.5 30t-29.5 12t-29.5 -12.5t-12.5 -29.5v-208h-208q-18 0 -30 -12.5t-12 -29.5t12.5 -29.5t29.5 -12.5h208z" /> + <glyph glyph-name="glyph207" unicode="&#xe0cf;" horiz-adv-x="667" +d="M583 383q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5l-166 3v-170q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5l3 170l-170 -3q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h170l-3 167q0 34 24 58.5t59 24.5t59.5 -24.5t24.5 -58.5v-167h166z" /> + <glyph glyph-name="glyph208" unicode="&#xe0d0;" horiz-adv-x="833" +d="M604 633q-60 0 -103 -42.5t-43 -102.5v-63h-83v63q0 60 -43 102.5t-103 42.5t-103 -42.5t-43 -102.5t43 -103t103 -43h63v-84h-63q-60 0 -103 -43t-43 -103t43 -102.5t103 -42.5t103 42.5t43 102.5v63h83v-63q0 -60 43 -102.5t103 -42.5t103 42.5t43 102.5t-43 103 +t-103 43h-62v84h62q60 0 103 43t43 103t-43 102.5t-103 42.5zM542 425v63q0 26 18 44t44 18t44.5 -18.5t18.5 -43.5q0 -26 -18.5 -44.5t-44.5 -18.5h-62zM229 425q-25 0 -43.5 18.5t-18.5 44.5t18.5 44t43.5 18q26 0 44.5 -18.5t18.5 -43.5v-63h-63zM604 50q-26 0 -44 18 +t-18 44v63h62q26 0 44.5 -18.5t18.5 -44.5q0 -25 -18.5 -43.5t-44.5 -18.5zM229 50q-25 0 -43.5 18t-18.5 44t18.5 44.5t43.5 18.5h63v-63q0 -25 -18.5 -43.5t-44.5 -18.5zM604 717q94 0 161.5 -67.5t67.5 -161.5q0 -57 -26 -106.5t-71 -81.5q45 -32 71 -81.5t26 -106.5 +q0 -94 -67.5 -161.5t-161.5 -67.5q-57 0 -106 26.5t-81 71.5q-32 -45 -81.5 -71.5t-106.5 -26.5q-95 0 -162 67.5t-67 161.5q0 57 26.5 106.5t71.5 81.5q-45 32 -71.5 81.5t-26.5 106.5q0 94 67 161.5t162 67.5q57 0 106.5 -26.5t81.5 -71.5q32 45 81 71.5t106 26.5z +M458 342v-84h-83v84h83z" /> + <glyph glyph-name="glyph209" unicode="&#xe0d1;" horiz-adv-x="667" +d="M521 342h-63v-84h63q60 0 103 -43t43 -103t-43 -102.5t-103 -42.5t-103 42.5t-43 102.5v63h-83v-63q0 -60 -43 -102.5t-103 -42.5t-103 42.5t-43 102.5t43 103t103 43h62v84h-62q-60 0 -103 43t-43 103t43 102.5t103 42.5t103 -42.5t43 -102.5v-63h83v63q0 60 43 102.5 +t103 42.5t103 -42.5t43 -102.5t-43 -103t-103 -43zM458 488v-63h63q25 0 43.5 18.5t18.5 44.5t-18.5 44t-43.5 18q-26 0 -44.5 -18.5t-18.5 -43.5zM208 112v63h-62q-26 0 -44.5 -18.5t-18.5 -44.5q0 -25 18.5 -43.5t44.5 -18.5t44 18t18 44zM208 425v63q0 26 -18 44t-44 18 +t-44.5 -18.5t-18.5 -43.5q0 -26 18.5 -44.5t44.5 -18.5h62zM375 258v84h-83v-84h83zM521 175h-63v-63q0 -25 18.5 -43.5t44.5 -18.5q25 0 43.5 18t18.5 44t-18.5 44.5t-43.5 18.5z" /> + <glyph glyph-name="glyph210" unicode="&#xe0d2;" horiz-adv-x="708" +d="M605 547q103 -103 103 -250q0 -148 -103 -251t-251 -103q-147 0 -250 103q-104 104 -104 251q0 146 104 250q53 53 125 31v14q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-14q32 10 66.5 2t59.5 -33zM312 592v-209q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v209 +q0 17 -12.5 29t-29.5 12t-29.5 -12t-12.5 -29zM271 433q-7 -19 -20 -33q-43 -43 -43 -103t43 -103q41 -41 103 -41t103 41q43 43 43 103t-43 103q-12 12 -19 33v-50q0 -34 -24.5 -58.5t-59.5 -24.5q-34 0 -58.5 24t-24.5 59v50zM354 109q-76 0 -131.5 55.5t-55.5 132.5 +q0 78 55 133q12 12 12 29t-12 29t-29.5 12t-29.5 -12q-80 -80 -80 -191q0 -112 80 -192q79 -79 191 -79q113 0 192 79t79 192q0 112 -79 191q-12 12 -29.5 12t-29.5 -12t-12 -29t12 -29q55 -55 55 -133q0 -77 -56 -132.5t-132 -55.5z" /> + <glyph glyph-name="glyph211" unicode="&#xe0d3;" horiz-adv-x="542" +d="M271 109q76 0 131.5 55.5t55.5 132.5q0 78 -55 133q-12 12 -12 29t12 29t29.5 12t29.5 -12q80 -80 80 -191q0 -112 -80 -192q-79 -79 -191 -79q-113 0 -192 79t-79 192q0 112 79 191q12 12 29.5 12t29.5 -12t12 -29t-12 -29q-55 -55 -55 -133q0 -77 55.5 -132.5 +t132.5 -55.5zM271 342q-17 0 -29.5 12t-12.5 29v209q0 17 12.5 29t29.5 12t29 -12t12 -29v-209q0 -17 -12 -29t-29 -12z" /> + <glyph glyph-name="glyph212" unicode="&#xe0d4;" horiz-adv-x="708" +d="M583 592q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v417q0 52 36.5 88.5t88.5 36.5v83q0 17 12.5 29.5t29.5 12.5h375q17 0 29 -12.5t12 -29.5v-83zM208 633v-208h292v208h-292zM125 508q-17 0 -29.5 -12 +t-12.5 -29v-105q0 -25 18.5 -43.5t44.5 -18.5h416q26 0 44.5 18.5t18.5 43.5v105q0 17 -12.5 29t-29.5 12v-125q0 -17 -12 -29t-29 -12h-375q-17 0 -29.5 12t-12.5 29v125zM583 8q17 0 29.5 12.5t12.5 29.5v230q-29 -22 -63 -22h-416q-34 0 -63 22v-230q0 -17 12.5 -29.5 +t29.5 -12.5h458zM438 508q20 0 20 -20q0 -21 -20 -21h-167q-9 0 -15 6t-6 15q0 20 21 20h167zM500 133q9 0 15 -6t6 -15q0 -20 -21 -20h-292q-20 0 -20 20q0 21 20 21h292zM438 592q20 0 20 -21t-20 -21h-167q-9 0 -15 6t-6 15t6 15t15 6h167z" /> + <glyph glyph-name="glyph213" unicode="&#xe0d5;" horiz-adv-x="708" +d="M0 144q0 65 54 94q-54 28 -54 93v73q0 60 43 103t103 43h31q5 62 55.5 104t121.5 42t121.5 -42t55.5 -104h31q60 0 103 -43t43 -103v-73q0 -65 -54 -94q54 -28 54 -93v-115q0 -60 -43 -103t-103 -43h-114q-65 0 -94 54q-28 -54 -94 -54h-114q-60 0 -103 43t-43 103v115z +M625 29v115q0 20 -15 20q-10 0 -24 -10t-34 -10q-30 0 -51.5 27.5t-21.5 66.5t21.5 66t51.5 27q22 0 41 -16q7 -5 16 -5q16 0 16 21v73q0 26 -18.5 44.5t-44.5 18.5h-114q-13 0 -18.5 7.5t2.5 24.5q16 19 16 41q0 30 -27.5 51t-66.5 21t-66.5 -21t-27.5 -51q0 -17 11 -35 +q14 -21 9 -29.5t-20 -8.5h-114q-26 0 -44.5 -18.5t-18.5 -44.5v-73q0 -21 16 -21q7 0 23 11q14 10 34 10q30 0 51.5 -27t21.5 -66t-21.5 -66.5t-51.5 -27.5q-22 0 -41 16q-8 5 -16 5q-16 0 -16 -21v-115q0 -25 18.5 -43.5t44.5 -18.5h114q15 0 19.5 8.5t-8.5 29.5 +q-11 16 -11 35q0 30 27.5 51t66.5 21t66.5 -21t27.5 -51q0 -22 -16 -41q-8 -17 -2.5 -24.5t18.5 -7.5h114q26 0 44.5 18.5t18.5 43.5zM83 271v-66q5 2 16 2q23 0 44 -16q6 -6 13 -6q12 0 21.5 15.5t9.5 37.5t-9.5 37t-21.5 15q-6 0 -14 -6q-23 -15 -44 -15q-5 0 -15 2z +M610 206q5 0 15 -2v66q-5 -2 -16 -2q-22 0 -43 16q-6 6 -14 6q-12 0 -21.5 -15t-9.5 -37t9.5 -37.5t21.5 -15.5q6 0 14 6q22 15 44 15zM320 -33h67q-8 31 13 59q6 6 6 14q0 12 -15 21.5t-37 9.5t-37 -9.5t-15 -21.5q0 -7 6 -15q20 -29 12 -58z" /> + <glyph glyph-name="glyph214" unicode="&#xe0d6;" horiz-adv-x="542" +d="M469 331q-30 0 -51.5 -27t-21.5 -66t21.5 -66.5t51.5 -27.5q17 0 34 10q21 14 30 9.5t9 -19.5v-115q0 -25 -18.5 -43.5t-44.5 -18.5h-114q-13 0 -19 7.5t2 24.5q17 20 17 41q0 30 -27.5 51t-66.5 21t-66.5 -21t-27.5 -51q0 -18 10 -35q14 -21 9.5 -29.5t-19.5 -8.5h-115 +q-26 0 -44 18.5t-18 43.5v115q0 13 7.5 18.5t24.5 -2.5q19 -16 41 -16q30 0 51.5 27.5t21.5 66.5t-21.5 66t-51.5 27q-17 0 -34 -10q-21 -14 -30 -9.5t-9 19.5v73q0 26 18.5 44.5t43.5 18.5h115q15 0 19.5 8.5t-8.5 29.5q-11 16 -11 35q0 30 27.5 51t66.5 21t66.5 -21 +t27.5 -51q0 -21 -17 -41q-8 -17 -2 -24.5t19 -7.5h114q25 0 44 -18.5t19 -44.5v-73q0 -13 -7.5 -18.5t-24.5 2.5q-19 16 -41 16z" /> + <glyph glyph-name="glyph215" unicode="&#xe0d7;" horiz-adv-x="708" +d="M354 612q146 0 250 -104t104 -250t-104 -250t-250 -104t-250 104t-104 250t104 250t250 104zM354 -12q112 0 191.5 79t79.5 191t-79.5 191.5t-191.5 79.5t-191.5 -79.5t-79.5 -191.5t79.5 -191t191.5 -79zM500 300q-42 -9 -42 -42q0 -32 42 -41h37q-12 -53 -50.5 -91 +t-90.5 -50v36q-9 42 -42 42t-42 -42v-36q-52 12 -90 50t-50 91h36q42 9 42 41q0 33 -42 42h-36q12 53 50 91t90 50v-37q9 -42 42 -42q17 0 29.5 12.5t12.5 29.5v37q52 -12 90.5 -50.5t50.5 -90.5h-37zM475 179q-26 8 -42 30t-16 49t16 49t42 30q-17 25 -42 42 +q-8 -26 -30 -42t-49 -16t-49 16t-30 42q-25 -17 -42 -42q26 -8 42.5 -30t16.5 -49t-16.5 -49t-42.5 -30q15 -24 42 -41q8 26 30 42t49 16t49 -16t30 -42q27 17 42 41z" /> + <glyph glyph-name="glyph216" unicode="&#xe0d8;" horiz-adv-x="583" +d="M292 -33q-121 0 -206.5 85t-85.5 206t85.5 206.5t206.5 85.5t206 -85.5t85 -206.5t-85 -206t-206 -85zM250 462q-62 -13 -105.5 -56.5t-56.5 -105.5h79q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-79q13 -62 57 -106t105 -57v79q0 17 12.5 29.5t29.5 12.5t29 -12.5 +t12 -29.5v-79q61 13 105.5 57t57.5 106h-79q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h79q-13 61 -57 105t-106 57v-79q0 -17 -12 -29t-29 -12t-29.5 12t-12.5 29v79z" /> + <glyph glyph-name="glyph217" unicode="&#xe0d9;" horiz-adv-x="667" +d="M557 592q43 0 76 -33t34 -95v-206q0 -144 -98 -238.5t-236 -94.5t-235.5 97.5t-97.5 235.5t97.5 236t235.5 98q74 0 143 -32q39 32 81 32zM180 251q0 59 43 102t102 43q46 0 80 -22l-61 -59q-25 -25 -17 -41t43 -16h213v206q0 44 -26 44q-16 0 -35 -19l-48 -48 +q-65 51 -149 51q-100 0 -171 -71q-70 -70 -70 -171t70 -171q71 -71 171 -71t171 71q20 20 33 40q15 23 1.5 49t-42.5 26q-26 0 -40 -22q-19 -29 -52.5 -48t-70.5 -19q-59 0 -102 43.5t-43 102.5zM222 251q0 -43 30 -73t73 -30q42 0 73 31q8 8 14.5 17.5t9.5 15.5l2 5h-54 +q-65 0 -82 39q-16 38 27 81l10 5q-48 0 -73 -25q-30 -29 -30 -66z" /> + <glyph glyph-name="glyph218" unicode="&#xe0da;" horiz-adv-x="500" +d="M97 250q0 -59 43 -102t102 -43q37 0 70 18.5t52 48.5q10 16 30.5 20.5t36.5 -6.5q17 -11 21 -30t-6 -36q-14 -22 -33 -41q-71 -71 -171 -71t-171 71t-71 171t71 171t171 71q84 0 149 -51l48 48q25 25 43 17.5t18 -42.5v-214h-214q-35 0 -42.5 18t17.5 43l61 61 +q-35 23 -80 23q-59 0 -102 -43t-43 -102z" /> + <glyph glyph-name="glyph219" unicode="&#xe0db;" horiz-adv-x="667" +d="M125 592q110 0 210.5 -43t173 -115.5t115.5 -173t43 -210.5q0 -52 -36.5 -88.5t-88.5 -36.5h-375q-69 0 -118 49t-49 118v375q0 52 36.5 88.5t88.5 36.5zM167 8q34 0 58.5 24.5t24.5 59.5q0 34 -24 58.5t-59 24.5t-59 -24.5t-24 -58.5q0 -35 24.5 -59.5t58.5 -24.5z +M355 8q26 0 44 18.5t18 44.5q0 112 -79.5 191.5t-191.5 79.5q-26 0 -44 -18.5t-18 -44.5t18 -44t44 -18q60 0 103 -43t43 -103q0 -26 18.5 -44.5t44.5 -18.5zM521 8q26 0 44.5 18.5t18.5 44.5q0 118 -59 219t-159.5 159.5t-219.5 58.5q-26 0 -44 -18t-18 -44t18 -44.5 +t44 -18.5q129 0 221 -91.5t92 -220.5q0 -26 18 -44.5t44 -18.5z" /> + <glyph glyph-name="glyph220" unicode="&#xe0dc;" horiz-adv-x="667" +d="M83 133q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5t24 58.5t59 24.5zM83 633q158 0 292.5 -78t213 -212.5t78.5 -292.5q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5q0 172 -122 294.5t-295 122.5q-35 0 -59 24.5t-24 58.5t24 58.5 +t59 24.5zM83 383q138 0 236 -97.5t98 -235.5q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5q0 69 -49 118t-118 49q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5z" /> + <glyph glyph-name="glyph221" unicode="&#xe0dd;" horiz-adv-x="869" +d="M694 580q-29 0 -48 -11q-20 -10 -30 -16l-8 1q-59 0 -92 -50q-12 -18 -51 -85.5t-63 -95.5q-24 28 -64 96t-51 85q-33 50 -92 50q-46 0 -79 -33t-33 -79t33 -78.5t79 -32.5q58 0 91 48l69 -109q-32 -36 -65.5 -81t-51.5 -73l-17 -27q-18 -32 -11 -69t25 -66l18 -30 +l148 272l148 -272q3 4 8 11.5t15.5 29t16.5 41t5.5 43t-12.5 40.5q-63 101 -134 181l69 109q33 -48 91 -48q46 0 78.5 32.5t32.5 78.5q0 44 -30 76q11 13 22 18q2 0 6 2.5t6 2.5l13 2h6q15 0 44 -12q-14 19 -18 22q-20 20 -63 27h-11zM608 398q-23 0 -36 19t-5 41l10 16 +q13 13 31 13q19 0 32 -13t13 -31.5t-13 -31.5t-32 -13zM194 398q-18 0 -31 13t-13 31.5t13 31.5t31 13q19 0 32 -13l10 -16q8 -22 -5.5 -41t-36.5 -19zM401 241q-7 0 -11.5 5t-4.5 12q0 16 16 16q7 0 12 -4.5t5 -11.5t-5 -12t-12 -5zM694 664l19 -1q88 -10 138 -80 +q18 -23 18.5 -50.5t-16.5 -50.5q-20 -26 -50 -32v-7q0 -80 -57.5 -137.5t-137.5 -57.5q-14 0 -38 4q50 -66 82 -117q25 -36 27.5 -79t-12.5 -82t-26.5 -60.5t-23.5 -38.5q-25 -34 -68 -34q-50 2 -73 43l-75 138l-74 -138q-23 -41 -74 -43q-42 0 -67 34q-12 17 -23.5 38.5 +t-26.5 60.5t-12.5 82t27.5 79q38 59 81 117q-24 -4 -38 -4q-80 0 -137 57.5t-57 137.5t57 137t137 57q47 0 89 -21.5t70 -60.5q12 -17 48 -79q32 55 49 79q53 75 144 81l12 7q39 21 88 21z" /> + <glyph glyph-name="glyph222" unicode="&#xe0de;" horiz-adv-x="703" +d="M698 570q10 -12 0 -25t-24 -7q-37 17 -61 4q23 -34 23 -74q0 -55 -38.5 -93.5t-93.5 -38.5q-49 0 -87 33l-27 -49q45 -51 61 -72.5t52 -79.5l14 -22q48 -66 -33 -185l-1 -2q-7 -9 -18.5 -8.5t-16.5 10.5l-130 238l-130 -238q-6 -11 -18 -11q-10 0 -17 9q-3 4 -10 15 +t-18 33.5t-17.5 45t-4.5 49t17 46.5q75 112 126 171l-27 50q-38 -33 -87 -33q-55 0 -93.5 38.5t-38.5 93.5t38.5 93.5t93.5 38.5q66 0 110 -59q16 -24 38 -69t38 -68q16 23 38 68t38 69l2 2q40 57 108 57h3l8 5q45 28 99 19.5t84 -54.5zM131 425q17 0 29 12.5t12 29.5 +t-12 29t-29 12t-29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5zM318 284q9 0 15 6t6 14q0 9 -6 15t-15 6t-15 -6t-6 -15q0 -8 6 -14t15 -6zM506 425q17 0 29 12.5t12 29.5t-12 29t-29 12t-29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5z" /> + <glyph glyph-name="glyph223" unicode="&#xe0df;" horiz-adv-x="667" +d="M542 633q52 0 88.5 -36.5t36.5 -88.5v-458q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v458q0 52 36.5 88.5t88.5 36.5h417zM583 50v303q-19 -11 -41 -11h-63q0 -60 -43 -103t-103 -43t-102.5 43t-42.5 103h-63q-23 0 -42 11v-303q0 -17 12.5 -29.5 +t29.5 -12.5h417q17 0 29 12.5t12 29.5zM229 342q0 -43 30.5 -73.5t73.5 -30.5t74 30.5t31 73.5h-209zM583 425v83q0 17 -12 29.5t-29 12.5h-417q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5z" /> + <glyph glyph-name="glyph224" unicode="&#xe0e0;" horiz-adv-x="802" +d="M760 592q18 0 31.5 -15t10.5 -33l-42 -292q-2 -15 -13.5 -25t-27.5 -10h-472l7 -42h423q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-458q-20 0 -37 23q0 2 -1.5 5.5t-2.5 5.5l-78 466h-58q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h93q15 0 27 -10t14 -25 +l9 -48h575zM712 508h-160v-83h148zM510 508h-125v-83h125v83zM510 383h-125v-83h125v83zM344 508h-146l15 -84l6 1h125v83zM219 383l14 -83h111v83h-125zM552 300h131l11 83h-142v-83zM219 -12q0 62 62 62q63 0 63 -62q0 -63 -63 -63q-62 0 -62 63zM594 -12q0 62 62 62 +q63 0 63 -62q0 -63 -63 -63q-62 0 -62 63z" /> + <glyph glyph-name="glyph225" unicode="&#xe0e1;" +d="M368 488q77 0 130 -55t53 -133v-10q0 -31 -19 -52t-49 -21q-28 0 -50 25q-23 -25 -60 -25q-35 0 -59 24.5t-24 58.5q0 35 24 59t58 24q22 0 42 -12q5 12 17 12q16 0 16 -21v-72q0 -13 9 -22.5t22 -9.5t22 9.5t9 22.5v10q0 60 -40.5 103t-100.5 43q-59 0 -99.5 -42.5 +t-40.5 -103.5q0 -60 43 -103t103 -43q44 0 82 25q10 7 20 1t11 -16.5t-9 -18.5q-49 -33 -106 -33q-77 0 -132.5 55.5t-55.5 132.5q0 78 53.5 133t130.5 55zM374 258q17 0 29 12.5t12 29.5t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5zM375 -75 +q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph226" unicode="&#xe0e2;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM375 529q95 0 162 -67.5t67 -161.5t-67 -161.5 +t-162 -67.5t-162 67.5t-67 161.5t67 161.5t162 67.5zM562 304q-2 72 -51 125q-37 -50 -96 -86q15 -32 18 -41q64 14 129 2zM479 456q-48 32 -104 32q-17 0 -49 -8q40 -46 70 -100q48 28 83 76zM285 464q-73 -40 -92 -122q83 -16 166 19q-32 57 -74 103zM188 300 +q0 -73 50 -126q59 81 155 116q-2 5 -4.5 10.5t-5.5 12t-5 10.5q-65 -28 -132 -28q-25 0 -58 5zM269 146q49 -34 106 -34q27 0 57 10q-4 62 -25 129q-87 -31 -138 -105zM472 140q70 43 87 122q-60 11 -112 1q19 -65 25 -123z" /> + <glyph glyph-name="glyph227" unicode="&#xe0e3;" +d="M375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM665 330q-11 106 -87 179q-65 -85 -154 -136l24 -54q107 29 217 11zM547 535q-78 57 -172 57q-43 0 -87 -13q66 -76 117 -169q85 49 142 125zM248 562q-62 -30 -104.5 -85.5 +t-55.5 -123.5q148 -24 280 37q-51 94 -120 172zM83 300q0 -108 71 -190q95 140 254 197q-11 24 -22 47q-106 -50 -218 -50q-39 0 -84 8zM183 81q83 -73 192 -73q51 0 102 19q-10 120 -54 241q-150 -53 -240 -187zM517 45q65 36 105.5 101t43.5 142q-104 18 -203 -8 +q42 -112 54 -235z" /> + <glyph glyph-name="glyph228" unicode="&#xe0e4;" +d="M640 566q110 -110 110 -266q0 -155 -110 -265t-265 -110q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109zM333 349q0 49 31 83.5t78 34.5h58v-84h-58q-10 0 -17.5 -7.5t-7.5 -17.5v-58h83v-83h-83v-206q93 12 164 83q86 86 86 206 +q0 122 -86 207t-206 85q-122 0 -207 -85t-85 -207q0 -120 85 -206q71 -71 165 -83v206h-83v83h83v49z" /> + <glyph glyph-name="glyph229" unicode="&#xe0e5;" horiz-adv-x="375" +d="M250 383h125v-125h-125v-291h-125v291h-125v125h125v53q0 40 12.5 81t34.5 65q46 51 116 51h87v-125h-87q-16 0 -27 -10.5t-11 -26.5v-88z" /> + <glyph glyph-name="glyph230" unicode="&#xe0e6;" +d="M375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86t86 206q0 122 -86 207t-206 85zM250 196 +q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30.5 -73.5t-73.5 -30.5zM250 362q-26 0 -44 -18t-18 -44t18 -44t44 -18t44 18t18 44t-18 44t-44 18zM500 196q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5 +t-30.5 -73.5t-73.5 -30.5z" /> + <glyph glyph-name="glyph231" unicode="&#xe0e7;" horiz-adv-x="708" +d="M167 133q-69 0 -118 49t-49 118t49 118t118 49t117.5 -49t48.5 -118t-48.5 -118t-117.5 -49zM167 383q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5t59 24.5t24 58.5t-24 58.5t-59 24.5zM542 467q69 0 117.5 -49t48.5 -118t-48.5 -118t-117.5 -49t-118 49 +t-49 118t49 118t118 49z" /> + <glyph glyph-name="glyph232" unicode="&#xe0e8;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM413 237q0 14 7.5 25.5t19.5 11.5q11 0 18.5 -11.5 +t7.5 -25.5t-7 -25t-19 -11t-19.5 11t-7.5 25zM532 369q30 -33 30 -79q0 -69 -34.5 -107t-99.5 -41h-18l-15 -1h-20h-20l-15 1h-18q-65 3 -99.5 41.5t-34.5 106.5q0 46 30 79q-4 2 -1 33q3 30 14 57q40 -5 93 -42q20 5 51 5q33 0 51 -5q50 35 83 40l10 2q11 -27 14 -57 +q3 -31 -1 -33zM376 160q69 0 102 16q35 17 35 67q0 22 -14 40t-35 22q-9 1 -47.5 -1t-40.5 -2q-8 0 -36 2l-32 2q-32 1 -51 -16.5t-19 -46.5q0 -51 34 -67q33 -16 102 -16h2zM311 274q11 0 18.5 -11.5t7.5 -25.5t-7.5 -25t-18.5 -11q-12 0 -19.5 11t-7.5 25t7.5 25.5 +t19.5 11.5v0z" /> + <glyph glyph-name="glyph233" unicode="&#xe0e9;" horiz-adv-x="583" +d="M351 202q0 22 11.5 39.5t30.5 17.5q18 0 29.5 -17.5t11.5 -39.5t-11.5 -39.5t-29.5 -17.5q-19 0 -30.5 17.5t-11.5 39.5zM536 408q47 -52 47 -123q0 -129 -78 -187q-52 -39 -130 -43l-29 -1l-23 -1h-31h-32l-23 1l-28 1q-100 5 -154.5 64.5t-54.5 165.5q0 71 47 123 +q-4 3 0 50q5 52 20 89q58 -6 145 -66q30 8 80 8q51 0 80 -8q37 26 75 43q37 17 53 20l16 3q16 -40 21 -89q4 -46 -1 -50zM293 82q106 0 159 25q54 25 54 104q0 34 -22 63t-54 34q-14 2 -75 -1t-62 -3q-17 0 -49.5 2t-52 2.5t-42.5 -4.5t-37 -17q-33 -30 -33 -76 +q0 -79 53 -104q51 -25 158 -25h3zM192 259q18 0 29 -17.5t11 -39.5t-11 -39.5t-29 -17.5q-19 0 -31 17.5t-12 39.5t12 39.5t31 17.5v0z" /> + <glyph glyph-name="glyph234" unicode="&#xe0ea;" +d="M408 254q3 -3 9 -8.5t8.5 -8.5t7.5 -8.5t7.5 -9t5 -9t3.5 -11t1 -11.5q0 -37 -35 -64.5t-94 -27.5q-51 0 -77.5 20.5t-26.5 50.5q0 36 37 58q41 21 96 21q-17 17 -17 33q0 12 5 17h-17q-38 0 -60.5 24t-22.5 55q0 40 33 67q35 25 87 25h100l-29 -17h-29q33 -33 33 -67 +q0 -18 -6.5 -32t-13.5 -21t-21 -18l-13 -24q0 -8 13 -21zM342 308q20 0 33 13t13 37q0 33 -17 62.5t-46 29.5q-16 0 -33 -17q-6 -6 -13 -37q0 -30 17 -59t46 -29zM346 112q34 0 52.5 14t18.5 36q0 18 -12.5 32.5t-42.5 34.5h-12q-29 0 -50 -8l-4 -2l-6 -3t-6.5 -4t-7.5 -5.5 +t-6.5 -6.5t-6 -8t-4 -9.5t-1.5 -11.5q0 -25 24 -42t64 -17zM500 300h-42v42h42v41h42v-41h41v-42h-41v-42h-42v42zM375 -75q-156 0 -265.5 109.5t-109.5 265.5t109.5 265.5t265.5 109.5t265.5 -109.5t109.5 -265.5t-109.5 -265.5t-265.5 -109.5zM375 592q-121 0 -206.5 -85 +t-85.5 -207t85.5 -207t206.5 -85t206.5 85t85.5 207t-85.5 207t-206.5 85z" /> + <glyph glyph-name="glyph235" unicode="&#xe0eb;" horiz-adv-x="617" +d="M321 238q21 -18 28 -25t20.5 -22.5t18 -31t4.5 -34.5q0 -61 -58.5 -107.5t-158.5 -46.5q-84 0 -129.5 33.5t-45.5 83.5q0 64 62 100q47 25 159 37q-25 25 -25 54q0 13 8 29h-25q-62 0 -99.5 40t-37.5 90q0 64 50 108q56 46 146 46h170l-50 -30h-50q59 -48 59 -112 +q0 -29 -12 -53t-24.5 -35.5t-34.5 -28.5q-25 -25 -25 -41q0 -13 21 -34zM217 329q13 0 29 8.5t25 20.5q21 17 21 59q0 51 -29 100.5t-75 49.5q-16 0 -33 -8t-26 -21q-17 -30 -17 -63q0 -49 28.5 -97.5t76.5 -48.5zM217 0q57 0 89 24.5t32 63.5q0 29 -17.5 49t-70.5 59h-21 +q-51 0 -87 -13q-23 -5 -47 -25t-24 -58q0 -44 40.5 -72t105.5 -28zM492 300h-84v42h84v79l41 4v-83h84v-42h-84v-83h-41v83z" /> + <glyph glyph-name="glyph236" unicode="&#xe0ec;" +d="M375 675q156 0 265.5 -109.5t109.5 -265.5t-109.5 -265.5t-265.5 -109.5t-265.5 109.5t-109.5 265.5t109.5 265.5t265.5 109.5zM375 383q-35 0 -59 -24.5t-24 -58.5t24 -58.5t59 -24.5t59 24.5t24 58.5t-24 58.5t-59 24.5zM492 467q0 -22 14 -36t36 -14q21 0 35.5 15.5 +t14.5 34.5t-15.5 34.5t-34.5 15.5t-34.5 -14.5t-15.5 -35.5zM375 8q121 0 206.5 85t85.5 207h-125q0 -69 -49 -118t-118 -49t-118 49t-49 118h-125q0 -122 85.5 -207t206.5 -85z" /> + <glyph glyph-name="glyph237" unicode="&#xe0ed;" +d="M625 675q53 0 89 -36t36 -89v-500q0 -53 -36 -89t-89 -36h-500q-53 0 -89 36t-36 89v500q0 53 36 89t89 36h500zM375 425q-53 0 -89 -36t-36 -89t36 -89t89 -36t89 36t36 89t-36 89t-89 36zM533 508q0 -22 14 -36t36 -14q21 0 35.5 15.5t14.5 34.5t-15.5 34.5t-34.5 15.5 +t-34.5 -14.5t-15.5 -35.5zM625 8q19 0 30.5 11.5t11.5 30.5v250h-84q0 -88 -60 -148t-148 -60t-148 60t-60 148h-84v-250q0 -19 11.5 -30.5t30.5 -11.5h500z" /> + <glyph glyph-name="glyph238" unicode="&#xe0ee;" +d="M375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86t86 206q0 122 -86 207t-206 85zM467 203q83 0 83 55 +q0 47 -53 59l-26 5q-22 6 -22 24q0 21 27 21q30 0 32 -24l41 4q-5 52 -70 52q-71 0 -71 -59q0 -43 46 -53l28 -5q28 -8 28 -25q0 -22 -43 -22q-53 0 -70 51l-14 40q-12 40 -30 56.5t-60 16.5q-40 0 -67 -30t-27 -72q0 -40 26 -67t65 -27q38 0 60 18l-12 35q-20 -20 -46 -20 +q-24 0 -39.5 18.5t-15.5 44.5q0 30 15 48t42 18q17 0 27.5 -7.5t15 -16t10.5 -27.5l13 -40q23 -71 107 -71v0z" /> + <glyph glyph-name="glyph239" unicode="&#xe0ef;" horiz-adv-x="625" +d="M477 126q148 0 148 99q0 81 -94 103l-47 10q-39 10 -39 42q0 37 49 37q54 0 57 -42l72 8q-7 91 -124 91q-126 0 -126 -104q0 -74 82 -94l49 -9q50 -12 50 -45q0 -39 -77 -39q-94 0 -124 91l-24 72q-22 71 -56 100q-32 28 -105 28q-67 0 -117 -49q-51 -49 -51 -131 +q0 -77 48 -122q47 -46 115 -46q66 0 106 32l-22 62q-35 -35 -81 -35q-42 0 -69.5 32.5t-27.5 78.5q0 62 31 90q32 29 70 29q42 0 61 -22q17 -22 33 -70l23 -71q39 -126 190 -126v0z" /> + <glyph glyph-name="glyph240" unicode="&#xe0f0;" +d="M293 162h-67v217h67v-217zM224 440q0 14 10.5 24t25.5 10q36 0 36 -34q0 -33 -36 -33t-36 33zM462 385q38 0 58 -26t20 -69v-128h-68v121q0 48 -33 48q-17 0 -27.5 -11.5t-10.5 -31.5v-126h-68v148q0 56 -1 69h58l4 -29q23 35 68 35zM375 -75q-155 0 -265 110t-110 265 +t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph241" unicode="&#xe0f1;" horiz-adv-x="585" +d="M127 8h-125v417h125v-417zM442 412q70 0 106.5 -45t36.5 -123v-236h-125v223q0 87 -61 87q-49 0 -64 -49v-261h-125q2 375 0 417h99l8 -83h2q43 70 123 70zM0 529q0 63 65 63q64 0 64 -63q0 -62 -64 -62q-65 0 -65 62z" /> + <glyph glyph-name="glyph242" unicode="&#xe0f2;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM389 467q60 0 98.5 -37t38.5 -87q0 -64 -32.5 -106.5 +t-84.5 -42.5q-17 0 -32 8t-21 19q-1 1 -1.5 -2t-1.5 -9.5t-3 -15.5t-5.5 -21.5t-9 -25t-14 -27.5t-19.5 -29q-2 -2 -3.5 -1.5t-1.5 2.5q-9 38 1 83l27 117q-7 15 -7 35q0 24 12.5 40t29.5 16q29 0 29 -33q0 -12 -8.5 -41t-10.5 -36q-4 -17 6.5 -29t27.5 -12q30 0 49.5 33.5 +t19.5 81.5q0 36 -24 59.5t-66 23.5q-48 0 -77.5 -30.5t-29.5 -73.5q0 -25 15 -42q4 -5 3 -12l-5 -18q-2 -8 -10 -5q-45 18 -45 83q0 51 41.5 93t113.5 42z" /> + <glyph glyph-name="glyph243" unicode="&#xe0f3;" horiz-adv-x="500" +d="M265 601q103 0 169 -63t66 -149q0 -111 -56 -183t-144 -72q-29 0 -55 14t-36 33q-21 -86 -26 -102q-16 -58 -67 -122q-6 -6 -8 2q-12 85 1 141l47 203q-12 23 -12 58q0 41 21 68.5t51 27.5q24 0 37 -15.5t13 -39.5q0 -15 -5.5 -36.5t-14.5 -50t-13 -45.5q-7 -29 11 -50.5 +t48 -21.5q51 0 84 58t33 140q0 63 -40.5 102.5t-113.5 39.5q-82 0 -132.5 -52.5t-50.5 -125.5q0 -43 25 -73q8 -10 5 -20l-7 -30q-4 -16 -19 -9q-76 31 -76 141q0 88 71 160t194 72z" /> + <glyph glyph-name="glyph244" unicode="&#xe0f4;" +d="M506 -17q66 0 113.5 49.5t47.5 116.5q0 36 -17 75q6 31 6 61q0 119 -81 203q-80 83 -196 83q-25 0 -48 -5q-40 26 -87 26q-67 0 -114 -48.5t-47 -116.5q0 -47 23 -85q-6 -30 -6 -57q0 -118 82 -203q81 -84 197 -84q14 0 51 5q34 -20 76 -20zM214 204q0 16 11.5 27 +t28.5 11q29 0 41 -35q4 -4 17 -29q18 -25 63 -25q31 0 54 13t23 38q0 29 -40 44l-14 3l-19 5q-16 5 -18 5q-42 9 -74 23q-27 11 -46 34.5t-19 57.5q0 55 44 82.5t110 27.5q70 0 112 -33q35 -33 35 -63q0 -16 -12 -28.5t-28 -12.5q-11 0 -19 5t-11.5 9.5t-10.5 16.5 +q-18 43 -71 43q-26 0 -46 -10.5t-20 -28.5q0 -16 12 -24.5t33 -15.5l17 -4q78 -19 83 -21q60 -21 80 -57q10 -21 10 -51q0 -60 -45.5 -91.5t-116.5 -31.5q-104 0 -146 64q-18 28 -18 52zM244 675q54 0 101 -22q22 2 34 2q150 0 256 -109q105 -110 105 -261q0 -16 -4 -52 +q14 -42 14 -84q0 -102 -71 -175q-72 -74 -173 -74q-49 0 -90 17q-15 -2 -37 -2q-150 0 -257 109q-106 109 -106 261q0 21 3 44q-19 44 -19 98q0 102 70 174q72 74 174 74z" /> + <glyph glyph-name="glyph245" unicode="&#xe0f5;" +d="M736 245q14 -42 14 -83q0 -103 -71 -176q-72 -74 -173 -74q-46 0 -90 18q-15 -2 -37 -2q-150 0 -257 108q-106 109 -106 261q0 23 3 45q-19 44 -19 98q0 102 70 174q72 74 174 74q54 0 101 -22q11 1 34 1q150 0 256 -109q105 -110 105 -261q0 -16 -4 -52zM378 101 +q71 0 116.5 31.5t45.5 91.5q0 55 -42 85q-25 15 -48 23q-5 1 -83 21l-17 4q-28 9 -38 23q-7 7 -7 16q0 18 20.5 29t45.5 11q53 0 71 -43q8 -13 10.5 -17t11 -9t19.5 -5q16 0 28 12.5t12 28.5q0 32 -35 63q-42 33 -112 33q-66 0 -110 -27.5t-44 -82.5q0 -34 18.5 -58 +t46.5 -35q32 -14 74 -23q13 -3 18 -4l19 -5l14 -3q40 -15 40 -45q0 -24 -23 -37t-54 -13q-45 0 -63 25q-13 25 -17 29q-11 34 -41 34q-17 0 -28.5 -11t-11.5 -27q0 -28 19 -53.5t44 -39.5q42 -22 101 -22z" /> + <glyph glyph-name="glyph246" unicode="&#xe0f6;" +d="M474 150v52q-26 -17 -49 -17q-10 0 -21.5 6t-12.5 14q-4 8 -4 36v82h76v51h-76v82h-45q-6 -31 -11.5 -43.5t-21.5 -25.5q-17 -13 -32 -19v-45h35v-113q0 -53 50 -72q22 -6 38 -6q40 0 74 18v0zM375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265 +t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph247" unicode="&#xe0f7;" horiz-adv-x="330" +d="M330 53v86q-41 -28 -81 -28q-17 0 -36 9.5t-22 23.5q-8 14 -8 61v137h125v83h-125v140h-74q-10 -52 -19 -73t-36 -43q-27 -23 -54 -31v-76h58v-189q0 -60 37 -93q15 -15 47 -28q38 -9 65 -9q68 0 123 30v0z" /> + <glyph glyph-name="glyph248" unicode="&#xe0f8;" +d="M380 346q0 28 20 48t49 20t49 -21q22 5 43 16q-8 -24 -29 -37q24 3 39 11q-13 -19 -35 -36v-9q0 -106 -89 -164q-45 -30 -105 -30q-57 0 -105 31q3 -1 17 -1q47 0 85 29q-23 1 -40.5 14.5t-23.5 33.5q4 -2 12 -2q12 0 18 2q-23 5 -38.5 23.5t-15.5 44.5q11 -6 31 -8 +q-31 22 -31 57q0 16 10 34q55 -68 141 -71q-2 8 -2 15zM375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86 +t86 206q0 122 -86 207t-206 85z" /> + <glyph glyph-name="glyph249" unicode="&#xe0f9;" +d="M365 451q0 64 45.5 108.5t109.5 44.5q68 0 111 -47q48 10 98 36q-16 -54 -67 -85q43 6 88 25q-31 -47 -77 -81v-19q0 -109 -48 -204q-48 -97 -152 -165t-237 -68q-130 0 -236 69q16 -2 38 -2q107 0 190 65q-52 1 -90.5 32t-52.5 76q10 -4 28 -4t40 5q-52 11 -87 53 +t-35 100q29 -16 69 -19q-69 48 -69 129q0 38 21 76q126 -153 318 -159q-5 17 -5 34z" /> + <glyph glyph-name="glyph250" unicode="&#xe0fa;" +d="M394 343q5 29 30.5 52.5t53.5 23.5q62 0 50 -67q-10 -63 -60 -124q-46 -55 -86 -83q-12 -6 -23 -6q-27 0 -44 35q-4 8 -26.5 83t-25.5 79q-2 4 -6 4q-20 -4 -31 -15l-12 17l14 17q47 52 88 57q14 0 23 -13.5t12 -29.5t6 -37.5t5 -29.5q15 -65 26 -65q14 0 44 58 +q10 17 6 35t-21 18q-7 0 -23 -9zM375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph251" unicode="&#xe0fb;" horiz-adv-x="583" +d="M580 434q-21 -122 -110 -228q-88 -105 -160 -154q-42 -21 -74 -1q-31 19 -49 55q-10 19 -49.5 154.5t-47.5 145.5q-7 13 -32.5 1t-34.5 -21l-23 30l26 31q31 33 73 65.5t75 39.5q44 9 65 -43q13 -30 25 -108q2 -15 11 -51q29 -121 46 -121q25 0 82 108q26 49 3 81t-72 1 +q8 50 43 85q65 69 141 51q80 -15 62 -121z" /> + <glyph glyph-name="glyph252" unicode="&#xe0fc;" +d="M188 252v26h90v-26h-30v-150h-30v150h-30zM342 133v99h26v-130h-26v14q-8 -9 -19 -13.5t-20 0.5t-9 20v109h26v-100q2 -11 9 -8.5t13 9.5zM438 233q24 0 24 -32v-72q0 -13 -6.5 -21t-17.5 -8q-7 0 -13.5 3t-8.5 6l-3 3v-10h-26v176h26v-56q10 11 25 11zM435 132v68 +q0 11 -8 13t-14 -5v-81q4 -4 9 -5.5t9 1t4 9.5zM519 235q16 0 26.5 -10.5t10.5 -27.5v-33h-50v-25q0 -11 6 -15.5t12.5 0.5t6.5 15v6h25v-6q0 -25 -19 -35t-38 0t-19 35v58q0 17 11 27.5t28 10.5zM506 197v-13h25v13q0 15 -13 15q-12 0 -12 -15zM375 675q155 0 265 -110 +t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM463 386q16 0 32 14v-12h33v147h-33v-110q-9 -9 -16 -9q-5 0 -5 7v112h-33v-122q0 -27 22 -27zM335 496v-71q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v71q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5 +t-12 -29.5zM248 585h-38l40 -115v-82h37v82l39 115h-38l-20 -73zM577 63q10 9 15.5 40.5t5.5 58.5l1 26q0 104 -22 126q-10 9 -60 14.5t-95 5.5l-46 1q-180 0 -201 -21q-9 -9 -14.5 -40.5t-6.5 -58.5l-1 -27q0 -103 22 -125q10 -9 60 -14.5t95 -6.5h46q180 0 201 21z +M375 410q-10 0 -10 11v79q0 10 11 10q10 0 10 -10v-79q0 -11 -11 -11z" /> + <glyph glyph-name="glyph253" unicode="&#xe0fd;" horiz-adv-x="917" +d="M908 442q9 -70 9 -142t-9 -142q-7 -55 -15.5 -84t-25.5 -41q-30 -25 -409 -25q-378 0 -408 25q-28 19 -42 125q-8 62 -8 142t8 142q14 106 42 125q30 25 408 25q379 0 409 -25q17 -12 25.5 -41t15.5 -84zM375 150l250 150l-250 150v-300z" /> + <glyph glyph-name="glyph254" unicode="&#xe0fe;" horiz-adv-x="1000" +d="M234 217l58 115l57 -115h-115zM542 -1q-36 -32 -84 -32q-36 0 -65.5 18.5t-45.5 50.5l-8 14h-95l-7 -14q-16 -32 -46 -50.5t-66 -18.5q-44 0 -75.5 24t-43.5 61q-17 49 7 96l167 333q16 31 46 49t66 18t66 -18t46 -49l75 -151q21 12 42 12h11q-32 35 -32 83 +q0 52 36.5 88.5t88.5 36.5h250q36 0 66 -18.5t46 -50.5q34 -70 -12 -131l-100 -133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-250q-48 0 -83 32zM458 50q24 0 36 20t2 40l-167 334q-11 21 -37 21t-37 -21l-167 -334q-10 -20 1.5 -40t35.5 -20q26 0 37 23l31 60 +h198l30 -60q11 -23 37 -23zM521 217h42q17 0 29 12t12 29t-12 29.5t-29 12.5h-42q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM875 50q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-167l200 267q16 22 3.5 44.5t-36.5 22.5h-250q-17 0 -29.5 -12.5t-12.5 -29.5 +t12.5 -29.5t29.5 -12.5h167l-200 -266q-16 -23 -3.5 -45t36.5 -22h250z" /> + <glyph glyph-name="glyph255" unicode="&#xe0ff;" horiz-adv-x="917" +d="M412 110q10 -20 -1.5 -40t-35.5 -20q-26 0 -37 23l-30 60h-199l-30 -60q-7 -16 -23.5 -21.5t-32.5 2.5q-16 7 -21.5 23.5t2.5 32.5l167 334q11 21 38 21t37 -21zM151 217h115l-58 115zM875 50h-250q-24 0 -36.5 22t3.5 45l200 266h-167q-17 0 -29.5 12.5t-12.5 29.5 +t12.5 29.5t29.5 12.5h250q24 0 36.5 -22.5t-3.5 -44.5l-200 -267h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM542 217h-84q-17 0 -29 12t-12 29t12 29.5t29 12.5h84q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12z" /> + <glyph glyph-name="glyph256" unicode="&#xe100;" horiz-adv-x="982" +d="M183 550q37 0 67.5 -19t46.5 -46q66 64 157 64q94 0 158 -64l2 -3q59 68 149 68q82 0 140 -58t58 -140q0 -30 -9 -58q30 -52 30 -109q0 -91 -64 -154.5t-155 -63.5q-62 0 -114 33q-36 -33 -84 -33h-208q-49 0 -84 32q-35 -32 -83 -32q-52 0 -88.5 36.5t-36.5 88.5v194 +q-36 20 -52 53q-23 47 -6.5 95.5t61.5 71.5l58 31q25 13 57 13zM232 425q0 16 -15.5 29t-33.5 13q-9 0 -19 -5l-57 -30q-16 -7 -21.5 -23.5t2.5 -32.5q11 -23 41 -23q9 0 19 5v-266q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v333zM454 383q23 0 39.5 -16.5 +t16.5 -39.5t-16 -39l-167 -167q-20 -20 -8 -45.5t38 -25.5h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-108l96 96q41 41 41 98q0 58 -41 99q-39 39 -99 39q-59 0 -98 -39q-41 -41 -41 -99q0 -17 12.5 -29t29.5 -12t29 12t12 29q0 23 16.5 39.5t39.5 16.5zM763 50 +q56 0 95.5 39.5t39.5 95.5q0 59 -43 99q23 31 23 68q0 47 -34 81t-81 34q-69 0 -102 -62q-10 -20 1.5 -40.5t35.5 -20.5q26 0 37 22q9 17 28 17q13 0 22 -9t9 -22t-9 -22t-22 -9q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12q22 0 37 -15.5t15 -37.5t-15 -37t-37 -15 +t-37 15t-15 37q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5q0 -56 39.5 -95.5t95.5 -39.5z" /> + <glyph glyph-name="glyph257" unicode="&#xe101;" horiz-adv-x="875" +d="M125 50q-17 0 -29.5 12.5t-12.5 29.5v266l-23 -12q-16 -8 -32.5 -2.5t-23.5 21.5q-8 16 -2.5 32.5t21.5 23.5l83 41q22 11 41.5 -2.5t19.5 -34.5v-333q0 -17 -12.5 -29.5t-29.5 -12.5zM500 50h-208q-26 0 -38 25.5t8 45.5l167 167q16 16 16 39q0 24 -16 40t-39.5 16 +t-39.5 -16q-17 -15 -17 -40q0 -17 -12 -29t-29 -12t-29.5 12t-12.5 29q0 58 41 99q40 40 98.5 40t98.5 -40q41 -41 41 -99q0 -57 -41 -98l-96 -96h108q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM831 284q44 -41 44 -99q0 -56 -39.5 -95.5t-95.5 -39.5t-96 39.5 +t-40 95.5q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5q0 -22 15 -37t37 -15t37 15t15 37t-15 37.5t-37 15.5q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5q13 0 22 9t9 22t-9 22t-22 9q-20 0 -28 -17q-8 -15 -24.5 -20t-31.5 3t-20.5 24.5t2.5 31.5q33 62 102 62 +q47 0 80.5 -34t33.5 -81q0 -37 -23 -68z" /> + <glyph glyph-name="glyph258" unicode="&#xe102;" horiz-adv-x="792" +d="M167 133q0 42 41 42q42 0 42 -42q0 -41 -42 -41q-41 0 -41 41zM739 606q53 -73 53 -160q0 -112 -80 -192q-79 -79 -191 -79l-16 1q-110 -144 -138 -177q-61 -74 -159 -74q-86 0 -147 61t-61 147q0 94 74 159q86 73 177 138l-1 16q0 112 79 191q80 80 192 80q87 0 160 -53 +q12 -12 12 -29t-12 -29q12 12 29 12t29 -12zM83 133q0 -51 37 -88t88 -37q58 0 95 45q41 47 96 121q52 69 72 92q29 -8 50 -8q77 0 132 55.5t55 132.5q0 22 -8 52l-117 -115l-104 21l-21 104l119 116q-30 9 -56 9q-77 0 -132.5 -55t-55.5 -132q0 -21 8 -50q-27 -22 -93 -72 +q-60 -45 -120 -95q-45 -39 -45 -96zM683 539q-23 40 -66 66l-113 -111l11 -54l55 -12z" /> + <glyph glyph-name="glyph259" unicode="&#xe103;" horiz-adv-x="667" +d="M643 518q24 -7 24 -72q0 -86 -61.5 -147t-147.5 -61q-22 0 -42 4q-25 -31 -72 -93t-87 -109q-44 -52 -111 -52q-60 0 -103 42.5t-43 102.5q0 67 51 112q47 40 110 86.5t94 72.5q-5 25 -5 42q0 86 61 147t147 61q31 0 62 -10q11 -3 14.5 -14.5t-5.5 -20.5l-111 -108 +l16 -79l80 -16l109 106q9 9 20 6zM146 92q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph260" unicode="&#xe104;" horiz-adv-x="751" +d="M379 308q29 15 26.5 47t-26.5 53q-35 27 -77.5 16.5t-64.5 -49.5q-28 -52 -14 -98t59 -77t97 -29q82 6 127.5 75.5t26.5 149.5q-21 92 -105.5 135.5t-173.5 14.5q-80 -24 -126.5 -98t-40.5 -160q9 -93 73.5 -161.5t155.5 -84.5q88 -16 170.5 21t129.5 112q50 79 50 158 +q0 16 14 28.5t32 9.5q23 0 32 -18.5t6 -40.5q-13 -148 -126 -253t-262 -105q-72 0 -139 29t-114.5 77.5t-78 112t-30.5 133t29 140.5q38 82 113 133t156 60t160.5 -27t124.5 -116q47 -77 37.5 -170.5t-74.5 -158.5q-63 -63 -154 -72t-167 43q-71 51 -86 139t40 161 +q35 47 92.5 64.5t113.5 -2t86 -71.5q17 -29 17.5 -66.5t-13 -69.5t-43 -52t-66.5 -16q-52 0 -83.5 44t-3.5 89q20 27 51 23.5t45 -27.5q4 -15 5 -26.5t0 -15.5z" /> + <glyph glyph-name="glyph261" unicode="&#xe105;" horiz-adv-x="772" +d="M18 329q-23 23 -16 67q6 16 20 27.5t30 14.5h4l196 20l79 180l4 4q19 33 54 33q17 0 30 -10.5t16 -31.5l4 -4l79 -179l196 -21h4q34 -6 49.5 -40t-11.5 -64q-12 -11 -26 -23.5t-31.5 -28t-26.5 -23.5q-52 -52 -66 -62l41 -192q7 -45 -25 -63q-25 -18 -62 -4l-4 4l-171 96 +l-171 -96l-4 -4q-8 -4 -25 -4q-20 0 -33 13q-32 18 -25 62l41 192z" /> + <glyph glyph-name="glyph262" unicode="&#xe106;" horiz-adv-x="772" +d="M18 329q-23 23 -16 67q6 16 20 27.5t30 14.5h4l196 20l79 180l4 4q19 33 54 33q17 0 30 -10.5t16 -31.5l4 -4l79 -179l196 -21h4q34 -6 49.5 -40t-11.5 -64q-12 -11 -26 -23.5t-31.5 -28t-26.5 -23.5q-52 -52 -66 -62l41 -192q7 -45 -25 -63q-25 -18 -62 -4l-4 4l-171 96 +l-171 -96l-4 -4q-8 -4 -25 -4q-20 0 -33 13q-32 18 -25 62l41 192zM389 121q12 0 21 -9l150 -87q-5 34 -13.5 75.5t-14 67t-5.5 28.5q-7 29 12 42l129 116l-175 21q-28 9 -33 25l-71 158v-437z" /> + <glyph glyph-name="glyph263" unicode="&#xe107;" horiz-adv-x="348" +d="M327 621q12 12 21 12v-554q-117 -66 -192 -108q-14 -7 -25 4q-8 4 -8 21l45 216q-95 92 -162 150q-10 10 -4 21q0 3 5 8t11 5l217 25q54 121 92 200z" /> + <glyph glyph-name="glyph264" unicode="&#xe108;" horiz-adv-x="779" +d="M592 -74q-11 0 -31 9l-171 97l-172 -97q-38 -18 -67 3q-33 23 -25 63l40 194q-24 22 -73 66t-73 66q-28 30 -17 66q12 36 53 43l195 21l82 180q21 37 57 37q37 0 57 -37l81 -180l196 -22q40 -6 52 -42q12 -37 -17 -66l-146 -133l40 -193q5 -28 -13 -51.5t-48 -23.5z +M252 200q-1 -3 -6 -28.5t-13.5 -67.5t-15.5 -74l152 86q21 11 41 0l152 -86l-35 171q-5 23 13 39l129 118l-174 19q-24 3 -33 24l-72 159l-72 -159q-10 -21 -34 -24l-173 -19l129 -118q17 -15 12 -40z" /> + <glyph glyph-name="glyph265" unicode="&#xe109;" horiz-adv-x="696" +d="M238 418l91 202q5 12 19 12t19 -12l91 -202q131 -14 219 -24q12 -2 17 -14t-5 -22l-163 -149l44 -216q2 -12 -8 -20.5t-22 -1.5l-192 109q-115 -65 -192 -109q-12 -7 -22.5 1.5t-8.5 20.5l45 216q-98 89 -163 149q-10 9 -5 21.5t17 14.5z" /> + <glyph glyph-name="glyph266" unicode="&#xe10a;" horiz-adv-x="833" +d="M815 335q18 -12 18 -35t-18 -35l-77 -51l41 -83q11 -21 -2 -39.5t-33 -20.5l-92 -6l-6 -93q-2 -20 -20 -32.5t-40 -1.5l-83 41l-52 -77q-13 -19 -34 -19q-22 0 -35 19l-51 77l-83 -41q-21 -11 -39.5 1.5t-20.5 32.5l-6 93l-93 6q-20 2 -32.5 20t-1.5 40l41 83l-77 51 +q-19 13 -19 35t19 35l77 51l-41 83q-11 22 1.5 40t32.5 20l93 6l6 92q2 20 20.5 33t39.5 2l83 -41l51 77q11 17 34.5 17t34.5 -17l52 -77l83 41q21 11 40 -2t20 -33l6 -92l92 -6q20 -2 33 -20t2 -40l-41 -83zM647 210q-7 14 -3 29t17 24l56 37l-56 37q-29 21 -14 53l30 60 +l-67 4q-16 1 -27 12t-12 27l-4 67l-60 -30q-32 -15 -53 14l-37 56l-37 -56q-21 -29 -53 -14l-60 30l-4 -67q-1 -16 -12 -27t-27 -12l-67 -4l30 -60q7 -14 2.5 -29t-17.5 -24l-55 -37l55 -37q13 -9 17.5 -24t-2.5 -29l-30 -60l67 -4q16 -1 26.5 -12t11.5 -27l5 -67l60 30 +q8 4 18 4q23 0 35 -18l37 -56l37 55q9 13 24 17.5t29 -2.5l60 -30l4 67q1 16 12 27t27 12l66 4z" /> + <glyph glyph-name="glyph267" unicode="&#xe10b;" horiz-adv-x="792" +d="M690 379l92 -62q10 -7 10 -17t-10 -17l-92 -62l49 -99q6 -11 -0.5 -20t-16.5 -10l-111 -8l-7 -110q-1 -10 -10 -16.5t-20 -1.5l-99 50l-62 -93q-6 -9 -17 -9t-17 9l-62 93l-99 -50q-11 -5 -20 1.5t-10 16.5l-8 111l-110 7q-10 1 -17 10.5t-1 19.5l50 99l-93 62 +q-9 6 -9 17t9 17l93 62l-50 99q-6 10 1 19.5t17 10.5l110 7l8 111q1 10 10 16.5t20 0.5l99 -49l62 93q6 9 17 9t17 -9l62 -93l99 49q11 6 20 -0.5t10 -16.5l7 -111l111 -7q10 -1 16.5 -10t0.5 -20z" /> + <glyph glyph-name="glyph268" unicode="&#xe10c;" +d="M684 429q66 -94 66 -212q0 -155 -110 -265t-265 -110t-265 110t-110 265q0 144 96 250.5t238 121.5l-1 3v41h-41q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-41v-41l-1 -3q125 -14 216 -100l5 7l21 21 +q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-21 -21q-4 -4 -12 -8zM375 -75q121 0 206.5 85.5t85.5 206.5t-85.5 206t-206.5 85t-206.5 -85t-85.5 -206t85.5 -206.5t206.5 -85.5zM417 258h83q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-125q-17 0 -29.5 12.5 +t-12.5 29.5v125q0 17 12.5 29t29.5 12t29.5 -12t12.5 -29v-84zM375 467q103 0 176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5t73.5 176.5t176.5 73.5zM375 8q86 0 147 61.5t61 147.5t-61 147t-147 61t-147 -61t-61 -147t61 -147.5t147 -61.5z +" /> + <glyph glyph-name="glyph269" unicode="&#xe10d;" horiz-adv-x="708" +d="M354 654q146 0 250 -104t104 -250t-104 -250t-250 -104t-250 104t-104 250t104 250t250 104zM625 300q0 65 -30 123l-80 -80q6 -21 6 -43t-6 -43l80 -80q30 58 30 123zM83 300q0 -65 30 -123l81 81q-6 21 -6 42q0 22 6 43l-81 80q-30 -58 -30 -123zM211 384q22 37 59 59 +l-74 74l-59 -59zM270 157q-36 20 -59 59l-74 -74l59 -59zM295 241q24 -24 59.5 -24t58.5 24q25 25 25 59t-24.5 58.5t-59.5 24.5q-34 0 -58.5 -24.5t-24.5 -58.5q0 -35 24 -59zM571 458l-59 59l-74 -74q37 -22 59 -59zM497 216q-23 -39 -59 -59l74 -74l59 59zM477 541 +q-58 30 -123 30t-123 -30l81 -81q24 7 42 7t43 -7zM231 59q58 -30 123 -30t123 30l-80 81q-25 -7 -43 -7t-42 7z" /> + <glyph glyph-name="glyph270" unicode="&#xe10e;" horiz-adv-x="708" +d="M625 633q35 0 59 -24.5t24 -58.5v-417q0 -35 -24 -59t-59 -24h-83v-42q0 -34 -24.5 -58.5t-59.5 -24.5h-375q-35 0 -59 24.5t-24 58.5v375q0 35 24.5 59.5t58.5 24.5h42v83q0 34 24.5 58.5t58.5 24.5h417zM83 8h375v354q0 8 -6 14.5t-14 6.5h-355v-375zM625 133v417h-417 +v-125h230q25 0 43.5 -18.5t18.5 -44.5v-229h125z" /> + <glyph glyph-name="glyph271" unicode="&#xe10f;" horiz-adv-x="875" +d="M292 633q-87 0 -148 -61t-61 -147t61 -147l127 -124l229 -229l292 292q-295 295 -353 355q-61 61 -147 61zM292 717q121 0 207 -86q87 -90 352 -355q24 -25 24 -59t-24 -59l-292 -292q-24 -24 -59 -24t-59 24l-216 216q-7 5 -15 12l-125 125q-85 85 -85 206t85 206 +q86 86 207 86zM292 488q-26 0 -44.5 -18.5t-18.5 -44.5t18.5 -44t44.5 -18t44 18t18 44t-18 44.5t-44 18.5zM292 529q43 0 73.5 -30.5t30.5 -73.5t-30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5z" /> + <glyph glyph-name="glyph272" unicode="&#xe110;" horiz-adv-x="833" +d="M809 400q24 -25 24 -59t-24 -58l-45 -45l4 -4q24 -25 23.5 -59.5t-24.5 -58.5l-291 -292q-24 -24 -59 -24t-59 24q-181 181 -273 270q-85 85 -85 206q0 82 43 151q-6 132 84 222q85 85 206 85q122 0 207 -85zM417 -117l291 292l-269 272q-61 61 -147 61q-87 0 -148 -61 +t-61 -147t61 -147q92 -89 273 -270zM498 506l207 -209l45 45l-269 272q-61 61 -148 61q-86 0 -147 -61q-28 -28 -43 -63q69 41 149 41q120 0 206 -86zM292 363q-26 0 -44.5 -18.5t-18.5 -44.5t18.5 -44t44.5 -18t44 18t18 44t-18 44.5t-44 18.5zM292 404q43 0 73.5 -30.5 +t30.5 -73.5t-30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5z" /> + <glyph glyph-name="glyph273" unicode="&#xe111;" horiz-adv-x="833" +d="M292 717q34 0 58.5 -24.5t24.5 -59.5v-208q0 -35 -24.5 -59t-58.5 -24h-209q-35 0 -59 24t-24 59v208q0 35 24.5 59.5t58.5 24.5h209zM292 425v208h-209v-208h209zM750 717q34 0 58.5 -24.5t24.5 -59.5v-208q0 -35 -24.5 -59t-58.5 -24h-208q-35 0 -59.5 24.5t-24.5 58.5 +v208q0 35 25 59.5t59 24.5h208zM750 425v208h-208v-208h208zM292 258q34 0 58.5 -24t24.5 -59v-208q0 -35 -24.5 -59.5t-58.5 -24.5h-209q-34 0 -58.5 24.5t-24.5 59.5v208q0 35 24 59t59 24h209zM292 -33v208h-209v-208h209zM750 258q34 0 58.5 -24t24.5 -59v-208 +q0 -35 -24.5 -59.5t-58.5 -24.5h-208q-34 0 -59 24.5t-25 59.5v208q0 34 24.5 58.5t59.5 24.5h208zM750 -33v208h-208v-208h208z" /> + <glyph glyph-name="glyph274" unicode="&#xe112;" +d="M0 550q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5t-36.5 88.5v83zM417 550q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5 +t-36.5 88.5v83zM0 133q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5t-36.5 88.5v83zM417 133q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83 +q-52 0 -88.5 36.5t-36.5 88.5v83z" /> + <glyph glyph-name="glyph275" unicode="&#xe113;" horiz-adv-x="833" +d="M708 50h-291q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h291q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM708 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM708 342h-291 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h291q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5zM708 425q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM708 633h-291q-17 0 -29.5 -12 +t-12.5 -29t12.5 -29.5t29.5 -12.5h291q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM708 717q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM167 133q35 0 59 -24.5t24 -58.5v-83q0 -35 -24.5 -59.5 +t-58.5 -24.5h-84q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h84zM167 -33v83h-84v-83h84zM167 425q35 0 59 -24.5t24 -58.5v-84q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v84q0 34 24 58.5t59 24.5h84zM167 258v84h-84v-84h84zM167 717 +q34 0 58.5 -24.5t24.5 -59.5v-83q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h84zM167 550v83h-84v-83h84z" /> + <glyph glyph-name="glyph276" unicode="&#xe114;" horiz-adv-x="771" +d="M688 92q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24.5 -58.5t-58.5 -24.5h-292q-35 0 -59.5 24.5t-24.5 58.5t25 59t59 25h292zM688 383q34 0 58.5 -24.5t24.5 -58.5t-24.5 -58.5t-58.5 -24.5h-292q-35 0 -59.5 24.5t-24.5 58.5t24.5 58.5t59.5 24.5h292zM688 675 +q34 0 58.5 -24.5t24.5 -58.5q0 -35 -24.5 -59.5t-58.5 -24.5h-292q-34 0 -59 25t-25 59t24.5 58.5t59.5 24.5h292zM0 8q0 104 104 104t104 -104t-104 -104t-104 104zM0 300q0 104 104 104t104 -104t-104 -104t-104 104zM0 592q0 104 104 104t104 -104t-104 -104t-104 104z +" /> + <glyph glyph-name="glyph277" unicode="&#xe115;" horiz-adv-x="833" +d="M708 50h-583q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h583q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM708 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583zM708 342h-583 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5zM708 425q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583zM708 633h-583q-17 0 -29.5 -12 +t-12.5 -29t12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM708 717q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583z" /> + <glyph glyph-name="glyph278" unicode="&#xe116;" +d="M667 92q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h584zM667 383q35 0 59 -24.5t24 -58.5t-24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h584zM667 675q35 0 59 -24.5t24 -58.5 +q0 -35 -24.5 -59.5t-58.5 -24.5h-584q-34 0 -58.5 24.5t-24.5 59.5q0 34 24 58.5t59 24.5h584z" /> + <glyph glyph-name="glyph279" unicode="&#xe117;" horiz-adv-x="833" +d="M167 133q35 0 59 -24.5t24 -58.5v-83q0 -35 -24.5 -59.5t-58.5 -24.5h-84q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h84zM167 -33v83h-84v-83h84zM167 425q35 0 59 -24.5t24 -58.5v-84q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v84 +q0 34 24 58.5t59 24.5h84zM167 258v84h-84v-84h84zM167 717q34 0 58.5 -24.5t24.5 -59.5v-83q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h84zM167 550v83h-84v-83h84zM458 133q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5 +t-59 -24.5h-83q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h83zM458 -33v83h-83v-83h83zM458 425q35 0 59.5 -24.5t24.5 -58.5v-84q0 -34 -24.5 -58.5t-59.5 -24.5h-83q-35 0 -59 24.5t-24 58.5v84q0 34 24 58.5t59 24.5h83zM458 258v84h-83v-84h83zM458 717 +q34 0 59 -24.5t25 -59.5v-83q0 -34 -24.5 -58.5t-59.5 -24.5h-83q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h83zM458 550v83h-83v-83h83zM750 133q34 0 58.5 -24.5t24.5 -58.5v-83q0 -35 -24.5 -59.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 59.5v83 +q0 34 24.5 58.5t59.5 24.5h83zM750 -33v83h-83v-83h83zM750 425q34 0 58.5 -24.5t24.5 -58.5v-84q0 -34 -24.5 -58.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 58.5v84q0 34 24.5 58.5t59.5 24.5h83zM750 258v84h-83v-84h83zM750 717q34 0 58.5 -24.5t24.5 -59.5v-83 +q0 -34 -24.5 -58.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 58.5v83q0 35 24.5 59.5t59.5 24.5h83zM750 550v83h-83v-83h83z" /> + <glyph glyph-name="glyph280" unicode="&#xe118;" horiz-adv-x="792" +d="M0 8q0 104 104 104t104 -104t-104 -104t-104 104zM0 300q0 104 104 104t104 -104t-104 -104t-104 104zM0 592q0 104 104 104t104 -104t-104 -104t-104 104zM292 8q0 104 104 104t104 -104t-104 -104t-104 104zM292 300q0 104 104 104t104 -104t-104 -104t-104 104z +M292 592q0 104 104 104t104 -104t-104 -104t-104 104zM583 8q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104zM583 300q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104zM583 592q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104z" /> + <glyph glyph-name="glyph281" unicode="&#xe119;" horiz-adv-x="417" +d="M229 172q27 -7 45 -29t18 -51q0 -34 -25 -59t-59 -25t-58.5 24.5t-24.5 59.5q0 29 18 51t45 29v232q0 8 6 14.5t14 6.5t14.5 -6.5t6.5 -14.5v-232zM354 239q63 -63 63 -147q0 -86 -61.5 -147.5t-147.5 -61.5t-147 61.5t-61 147.5q0 85 62 147v332q0 60 43 103t103 43 +t103 -43t43 -103v-332zM208 -33q52 0 88.5 36.5t36.5 88.5q0 70 -62 107v372q0 25 -18.5 43.5t-44.5 18.5t-44 -18.5t-18 -43.5v-372q-63 -37 -63 -107q0 -52 36.5 -88.5t88.5 -36.5z" /> + <glyph glyph-name="glyph282" unicode="&#xe11a;" horiz-adv-x="708" +d="M583 592q52 0 88.5 -36.5t36.5 -88.5v-250q0 -52 -36.5 -88.5t-88.5 -36.5q-61 0 -99 50q-34 -34 -50.5 -67.5t-16.5 -87.5q0 -43 -30.5 -73.5t-73.5 -30.5t-74 30.5t-31 73.5q0 76 13 151q-139 15 -161 23q-30 11 -47 41.5t-12 62.5l28 249q5 30 25.5 55.5t46.5 35.5 +l13 5q56 23 136 23q66 0 139.5 -20.5t104.5 -44.5l7 -8q37 32 82 32zM333 -12q0 43 8.5 78t26 62.5t29 41t32.5 34.5q29 29 29 55v208q0 9 -5 20t-10 15q-19 14 -79 31t-114 17q-61 0 -104 -17l-16 -6q-5 -2 -11.5 -10t-7.5 -15l-27 -249q-2 -10 4 -13q12 -3 86 -12t95 -11 +l55 8l-12 -59q-20 -98 -20 -178q0 -8 6 -14.5t14 -6.5t14.5 6.5t6.5 14.5zM625 217v250q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-250q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5z" /> + <glyph glyph-name="glyph283" unicode="&#xe11b;" horiz-adv-x="731" +d="M712 312q45 -68 -25 -154q-44 -58 -154 -87q-16 -4 -34.5 -13.5t-29.5 -17t-27 -19.5t-17 -13q4 -9 8.5 -23.5t0.5 -51t-30 -62.5q-25 -27 -59 -36t-62.5 -1.5t-45.5 24.5l-208 209q-58 67 -4 133q122 142 154 196q8 13 13 40.5t10.5 68.5t9.5 62q5 28 26 48.5t40 27.5 +l18 7l54 50q19 5 37.5 6t28.5 0l9 -2q35 63 96 63q55 0 92.5 -50t7.5 -109l-34 -75l71 -37q55 -55 67 -104q8 -37 -13 -80zM283 -71q21 -20 46 -8t25 37q0 17 -13 30l-204 204l-29 -30q-12 -12 -12 -29t12 -29zM616 342q16 0 26 11t4 26q-21 36 -46 54q-43 29 -88 25 +q-28 0 -71 -29q-10 -5 -10 1q1 2 2 3q100 163 117 200q6 16 -3.5 31t-25.5 15q-21 0 -38 -25q-5 -9 -38.5 -69t-48.5 -89l20 100q3 15 -6 24t-23 9q-6 0 -14 -6t-11 -15l-16 -54q-3 6 -12 11.5t-18 5.5q-20 0 -25 -21l-29 -162q-6 -37 -75 -121l192 -192q24 24 75 54 +q29 18 74.5 25.5t71.5 24.5q50 34 50 71q0 33 -29 33q-8 0 -14 -4t-16.5 -13.5t-19.5 -15.5q-25 -12 -55 -12q-31 0 -50.5 23.5t-19.5 55.5q0 54 41 71q22 9 46.5 6.5t37.5 -15.5q5 -5 13.5 -16t15.5 -16t16 -5zM608 312q-28 0 -37 13q-19 29 -46 29q-21 0 -33.5 -11.5 +t-12.5 -30.5t12.5 -32t33.5 -13q27 0 46 29q11 16 37 16z" /> + <glyph glyph-name="glyph284" unicode="&#xe11c;" horiz-adv-x="708" +d="M649 438q30 -11 46.5 -41t11.5 -62l-28 -249q-5 -31 -25.5 -56t-46.5 -35l-13 -5q-56 -23 -136 -23q-66 0 -139 20.5t-104 44.5l-8 8q-37 -32 -82 -32q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5q61 0 99 -50q35 35 51.5 67.5t16.5 86.5q0 43 30.5 74 +t73.5 31t73.5 -31t30.5 -74q0 -75 -13 -150q136 -14 162 -24zM125 92q17 0 29.5 12t12.5 29v250q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12zM597 98l28 249q2 10 -5 13q-12 3 -86 12t-95 11l-55 -8l13 59q20 93 20 178 +q0 8 -6.5 14.5t-14.5 6.5t-14.5 -6.5t-6.5 -14.5q0 -43 -8.5 -78t-26 -62.5t-29 -41t-32.5 -34.5q-29 -29 -29 -55v-208q0 -24 15 -35q19 -14 79 -31t114 -17q62 0 105 17l15 6q5 2 11.5 10t7.5 15z" /> + <glyph glyph-name="glyph285" unicode="&#xe11d;" horiz-adv-x="625" +d="M292 -33q-53 0 -89 36l-166 167q-37 37 -37 88q0 52 37 89q35 35 88 35t88 -35l50 -50l128 230q16 30 45.5 47.5t63.5 17.5q70 0 107.5 -60.5t1.5 -125.5l-208 -375q-35 -64 -109 -64zM125 300q-17 0 -29.5 -12.5t-12.5 -29.5q0 -16 13 -29l166 -167q15 -15 35.5 -12 +t30.5 21l208 375q9 18 3.5 34t-19.5 23q-15 8 -31.5 3t-24.5 -19l-182 -327l-128 128q-12 12 -29 12z" /> + <glyph glyph-name="glyph286" unicode="&#xe11e;" horiz-adv-x="542" +d="M499 540q30 -16 39.5 -50t-7.5 -64l-208 -375q-20 -36 -61 -42l-12 -1q-34 0 -59 25l-167 166q-25 25 -25 59t25 59t59 25t59 -25l89 -88l154 278q16 30 50 40t64 -7z" /> + <glyph glyph-name="glyph287" unicode="&#xe11f;" horiz-adv-x="855" +d="M819 464q36 -36 35.5 -88.5t-36.5 -88.5l-381 -375q-38 -36 -88 -36q-52 0 -89 37l-224 223q-36 36 -35.5 88.5t36.5 88.5l381 375q35 35 88.5 34.5t88.5 -35.5zM760 347q12 12 12 29t-12 29l-53 53q-25 -23 -58 -22.5t-57 24.5t-24.5 57t22.5 58l-54 53q-12 12 -30 12 +q-17 0 -29 -12l-381 -375q-12 -12 -12.5 -29t11.5 -29l53 -53q25 23 58 22.5t57 -24.5q23 -24 24 -57t-21 -58l53 -53q12 -12 30 -12.5t30 11.5zM407 90l-194 194l235 226l194 -194zM272 283l136 -135l175 169l-135 135z" /> + <glyph glyph-name="glyph288" unicode="&#xe120;" +d="M542 258q0 -17 -12.5 -29t-29.5 -12h-125q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h125q17 0 29.5 -12.5t12.5 -29.5zM375 550q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206t206.5 -85t206.5 85t85.5 206t-85.5 206.5t-206.5 85.5zM375 633q155 0 265 -110t110 -265 +t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM417 383q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-125q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v125zM375 467q-86 0 -147 -61.5t-61 -147.5t61 -147t147 -61t147 61t61 147t-61 147.5t-147 61.5z +M375 508q103 0 176.5 -73t73.5 -177t-73.5 -177t-176.5 -73t-176.5 73t-73.5 177t73.5 177t176.5 73z" /> + <glyph glyph-name="glyph289" unicode="&#xe121;" horiz-adv-x="583" +d="M583 133q0 -51 -37 -88t-88 -37t-88 37l-78 78l-79 -78q-35 -35 -88 -35t-88 35q-37 37 -37 88q0 52 37 89l78 78l-78 78q-37 37 -37 89q0 51 37 88q35 35 88 35t88 -35l79 -78l78 78q35 35 88.5 35t88.5 -35q36 -36 36 -88q0 -53 -36 -89l-79 -78l79 -78q36 -36 36 -89z +M292 241l137 -137q12 -12 29.5 -12t29.5 12t12 29q0 18 -12 30l-137 137l137 137q12 12 12 30q0 17 -12 29t-29.5 12t-29.5 -12l-137 -137l-138 137q-12 12 -29 12t-29 -12q-13 -13 -13 -29q0 -17 13 -30l137 -137l-137 -137q-13 -13 -13 -30q0 -16 13 -29q12 -12 29 -12 +t29 12z" /> + <glyph glyph-name="glyph290" unicode="&#xe122;" horiz-adv-x="500" +d="M476 526q25 -25 25 -59t-25 -59l-108 -108l108 -108q25 -25 25 -59t-25 -59q-24 -24 -59 -24t-59 24l-108 108l-108 -108q-24 -24 -59 -24t-59 24q-25 25 -25 59t25 59l108 108l-108 108q-25 25 -25 59t25 59q24 25 59 25t59 -25l108 -108l108 108q24 25 59 25t59 -25z +" /> + <glyph glyph-name="glyph291" unicode="&#xe123;" horiz-adv-x="625" +d="M583 508q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5v-333q0 -69 -48.5 -118t-117.5 -49h-209q-69 0 -117.5 49t-48.5 118v333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h41v42q0 34 24.5 58.5t59.5 24.5h291q35 0 59.5 -24.5t24.5 -58.5v-42h41zM167 550v-42 +h291v42h-291zM500 92v333h-375v-333q0 -35 24.5 -59.5t58.5 -24.5h209q34 0 58.5 24.5t24.5 59.5zM188 362q8 0 14 -6t6 -14v-250q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM271 362q8 0 14.5 -6t6.5 -14v-250q0 -8 -6.5 -14.5t-14.5 -6.5 +t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM354 362q8 0 14.5 -6t6.5 -14v-250q0 -8 -6.5 -14.5t-14.5 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM438 362q8 0 14 -6t6 -14v-250q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6z" /> + <glyph glyph-name="glyph292" unicode="&#xe124;" +d="M741 76q17 -22 4 -45t-37 -23h-291v-125q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v125h-291q-24 0 -37 23t4 45l113 141h-39q-23 0 -36 21t2 44q292 417 293 418q12 16 33 16.5t34 -17.5l292 -417q14 -23 1.5 -44t-35.5 -21h-39zM417 92h205l-113 140q-17 22 -4 45 +t37 23h45l-212 302l-212 -302h45q24 0 37 -23t-4 -45l-113 -140h205v208q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-208z" /> + <glyph glyph-name="glyph293" unicode="&#xe125;" +d="M749 92l1 -209q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29v209q0 5 2 13l83 250q6 17 24 25q-28 37 -25 83.5t36 79.5l255 255l255 -255q33 -33 36 -79.5t-25 -83.5q17 -8 23 -25l84 -250q1 -4 1 -13zM179 484q-12 -12 -12 -29.5t12 -29.5t29.5 -12 +t29.5 12l95 95v-241q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v241l95 -95q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-196 196zM155 300l-69 -208h578l-69 208h-95v-21q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5v21h-95zM83 -75h584v125h-584v-125z" /> + <glyph glyph-name="glyph294" unicode="&#xe126;" +d="M749 133l1 -208q0 -17 -12.5 -29.5t-29.5 -12.5h-666q-17 0 -29.5 12.5t-12.5 29.5q0 208 1 208q0 9 1 13l84 250q10 29 39 29h167v-83h-137l-69 -209h578l-69 209h-137v83h167q29 0 39 -29l84 -250q1 -4 1 -13zM542 471q-19 0 -30 11l-95 96v-278q0 -17 -12.5 -29.5 +t-29.5 -12.5t-29.5 12.5t-12.5 29.5v278l-95 -96q-11 -11 -30 -11q-18 0 -29 11q-12 12 -12 29.5t12 29.5l196 197l196 -197q12 -12 12 -29.5t-12 -29.5q-11 -11 -29 -11z" /> + <glyph glyph-name="glyph295" unicode="&#xe127;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM625 92q-17 0 -29.5 12t-12.5 29v250q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-250q0 -17 -12.5 -29t-29.5 -12zM250 550q-52 0 -88.5 -36.5 +t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5t-99.5 18.5zM250 175 +q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph296" unicode="&#xe128;" horiz-adv-x="792" +d="M458 425q0 -86 -61 -147t-147 -61t-147 61t-61 147t61 147t147 61t147 -61t61 -147zM250 -75q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25zM750 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-83 +v-84q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v84h-83q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h83v83q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-83h83z" /> + <glyph glyph-name="glyph297" unicode="&#xe129;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM250 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147 +t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5t-99.5 18.5zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph298" unicode="&#xe12a;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58 +t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph299" unicode="&#xe12b;" horiz-adv-x="500" +d="M250 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5 +t-99.5 18.5zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph300" unicode="&#xe12c;" horiz-adv-x="500" +d="M250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM0 8q0 66 69 116.5t181 50.5q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58z" /> + <glyph glyph-name="glyph301" unicode="&#xe12d;" horiz-adv-x="667" +d="M238 617q-20 20 -38 54l-4 4q-8 8 0 8q0 8 8 0l4 -4l38 -50h4q45 17 67 17q53 0 100 -17q0 -3 2 -1l2 1l37 54q9 9 13 5q7 -6 0 -13q-1 -1 -38 -54l-4 -4l17 -9q59 -37 79 -83q11 -24 17 -54q0 -4 -4 -4h-409q-4 0 -4 4q6 56 46 96q27 33 62 50h5zM425 583 +q-13 0 -22.5 -10.5t-6.5 -22.5q0 -15 10 -24t23 -9q12 0 20.5 10t8.5 23q0 15 -10 24t-23 9zM246 583q-13 0 -23.5 -10t-10.5 -23t11 -23t27 -10q12 0 20.5 10t8.5 23q0 15 -10 24t-23 9zM42 425q16 0 28.5 -13t12.5 -29v-208q0 -16 -12.5 -29t-28.5 -13t-29 13t-13 29v208 +q0 16 13 29t29 13zM625 425q16 0 29 -13t13 -29v-208q0 -16 -13 -29t-29 -13t-29 13t-13 29v208q0 16 13 29t29 13zM125 92v333h417v-333q0 -16 -13 -29t-29 -13h-42v-125q0 -16 -12.5 -29t-28.5 -13t-29 13t-13 29v125h-83v-125q0 -16 -13 -29t-29 -13t-29 13t-13 29v125 +h-41q-16 0 -29 13t-13 29z" /> + <glyph glyph-name="glyph302" unicode="&#xe12e;" horiz-adv-x="661" +d="M323 525q-4 67 38 125l116 67q5 -67 -37 -125zM548 292q0 -56 31 -100t82 -63q-7 -30 -46 -96q-29 -41 -42 -54q-46 -62 -112 -50q-17 2 -47.5 21t-44.5 21q-30 6 -54 0q-17 -4 -52.5 -24t-47.5 -22q-7 0 -18 2t-15 2q-55 27 -88 71q-20 30 -42 75q-31 60 -41 108 +q-15 58 -9 134q3 36 19 72.5t36 56.5q29 36 66 50q29 12 88 12q15 -2 57 -19.5t72 -17.5q26 0 75.5 18.5t78.5 18.5q49 0 100 -29l38 -37q-38 -25 -61 -65t-23 -85z" /> + <glyph glyph-name="glyph303" unicode="&#xe12f;" +d="M292 279v-246q0 -6 -6 -11t-15 -5l-250 29q-21 7 -21 25v208q0 9 6 15t15 6h250q9 0 15 -6t6 -15zM354 300l375 -4q9 0 15 -6t6 -15v-292q0 -6 -6 -11t-15 -5l-375 41q-21 7 -21 25v246q0 9 6 15t15 6zM292 604v-242q0 -20 -21 -20h-250q-21 0 -21 20v209q0 9 6 15t15 6 +l250 29q9 3 15 -2.5t6 -14.5zM354 629l375 38q9 3 15 -2.5t6 -14.5v-292q0 -20 -21 -20h-375q-21 0 -21 20v246q0 9 6 17t15 8z" /> + <glyph glyph-name="glyph304" unicode="&#xe130;" horiz-adv-x="833" +d="M167 342q0 41 41 41q42 0 42 -41q0 -42 -42 -42q-41 0 -41 42zM583 592q48 0 83.5 -32t40.5 -77l71 23q20 7 37.5 -6t17.5 -33v-250q0 -20 -17 -33.5t-38 -6.5l-71 24q-6 -45 -41 -77t-83 -32h-83v-43q0 -50 -37 -87t-88 -37t-85.5 34.5t-39.5 85.5v47h-125q-51 0 -88 37 +t-37 88v250q0 51 37 88t88 37h458zM375 8q16 0 29 12.5t13 28.5v84h-84v-84q2 -17 13.5 -29t28.5 -12zM583 175q18 0 30 12t12 30v250q0 17 -12.5 29t-29.5 12h-458q-17 0 -29.5 -12t-12.5 -29v-250q0 -17 12.5 -29.5t29.5 -12.5h458zM750 275v134l-83 -25v-84q5 0 83 -25z +" /> + <glyph glyph-name="glyph305" unicode="&#xe131;" horiz-adv-x="875" +d="M833 508q18 0 30 -12t12 -29v-334q0 -17 -12 -29t-30 -12q-10 0 -18 4l-107 53v-16q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5v-16l107 53q8 4 18 4zM208 238q26 0 44.5 18t18.5 44 +t-18.5 44t-44.5 18t-44 -18t-18 -44t18 -44t44 -18z" /> + <glyph glyph-name="glyph306" unicode="&#xe132;" horiz-adv-x="660" +d="M422 557q31 0 54.5 -23.5t23.5 -66.5v-417q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM125 175q37 0 84.5 -14t82.5 -34v262 +q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3zM554 371q12 12 29.5 12t29.5 -12q47 -47 47 -113q0 -65 -47 -112q-13 -13 -30 -13q-16 0 -29 13 +q-12 12 -12 29t12 29q22 22 22 54t-22 54q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph307" unicode="&#xe133;" horiz-adv-x="625" +d="M613 579q12 -12 12 -29t-12 -29l-113 -113v-358q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-29 20 -79 32l-105 -105q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l64 64q-34 14 -55 45.5t-21 69.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74 +q28 19 56 19q47 0 67 -42l65 64q12 12 29.5 12t29.5 -12zM416 472q-14 -9 -41.5 -27.5t-41.5 -27.5v-88l84 84v54zM83 300v-83q0 -17 12.5 -29.5t29.5 -12.5q21 0 49 -5l118 118v101q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5zM221 158q40 -12 71 -31 +v102zM416 45l1 5v304l-84 -83v-171l79 -52z" /> + <glyph glyph-name="glyph308" unicode="&#xe134;" horiz-adv-x="895" +d="M613 371q47 -47 47 -113q0 -65 -47 -112q-13 -13 -30 -13q-16 0 -29 13q-12 12 -12 29t12 29q22 22 22 54t-22 54q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12zM696 454q81 -81 81 -195q0 -116 -81 -197q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5q56 56 56 137.5 +t-56 137.5q-12 12 -12 29t12 29t29.5 12t29.5 -12zM779 538q116 -114 116 -279q0 -164 -116 -280q-12 -12 -29 -12t-29 12t-12 29.5t12 29.5q91 91 91 221q0 129 -91 220q-12 12 -12.5 29.5t11.5 29.5t29.5 12t29.5 -12zM422 557q31 0 54.5 -23.5t23.5 -66.5v-417 +q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM125 175q37 0 84.5 -14t82.5 -34v262q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5 +t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3z" /> + <glyph glyph-name="glyph309" unicode="&#xe135;" horiz-adv-x="500" +d="M422 557q31 0 54.5 -23.5t23.5 -66.5v-417q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM292 127v262q-35 -20 -82.5 -33.5 +t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5q37 0 84.5 -14t82.5 -34zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3z" /> + <glyph glyph-name="glyph310" unicode="&#xe136;" horiz-adv-x="819" +d="M410 570q-39 0 -65 -44l-246 -410q-26 -44 -8.5 -76t69.5 -32h500q52 0 69 32t-9 76l-246 410q-26 44 -64 44zM410 654q85 0 135 -85l247 -411q50 -84 9 -159q-41 -74 -141 -74h-500q-99 0 -142 74q-42 74 9 159l247 411q50 85 136 85zM355 133q0 55 55 55q54 0 54 -55 +q0 -54 -54 -54q-55 0 -55 54zM472 383q0 -11 -5 -23l-57 -143q-35 86 -58 143q-5 12 -5 23q0 26 18.5 44.5t44.5 18.5t44 -18.5t18 -44.5z" /> + <glyph glyph-name="glyph311" unicode="&#xe137;" horiz-adv-x="819" +d="M792 158q51 -85 9 -159q-41 -74 -141 -74h-500q-101 0 -142 74q-42 74 9 159l247 411q50 85 136 85q85 0 135 -85zM410 69q27 0 45.5 18.5t18.5 45.5t-18.5 46t-45.5 19t-46 -19t-19 -46t19 -45.5t46 -18.5zM478 378q4 11 4 26q0 30 -21 51.5t-51 21.5t-51.5 -21.5 +t-21.5 -51.5q0 -14 5 -27l58 -143q4 -7 10 -7t9 7q59 143 59 144z" /> + <glyph glyph-name="glyph312" unicode="&#xe138;" horiz-adv-x="583" +d="M292 258q-17 0 -29.5 12.5t-12.5 29.5v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-41h42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-83zM500 504q83 -85 83 -204t-83 -204v-88q0 -52 -36.5 -88.5t-88.5 -36.5h-167q-52 0 -88.5 36.5t-36.5 88.5v88 +q-83 85 -83 204t83 204v88q0 52 36.5 88.5t88.5 36.5h167q52 0 88.5 -36.5t36.5 -88.5v-88zM167 592v-76q60 34 125 34t125 -34v76q0 17 -12.5 29t-29.5 12h-167q-17 0 -29 -12t-12 -29zM417 8v76q-60 -34 -125 -34t-125 34v-76q0 -17 12 -29t29 -12h167q17 0 29.5 12 +t12.5 29zM292 92q86 0 147 61t61 147t-61 147t-147 61t-147.5 -61t-61.5 -147t61.5 -147t147.5 -61z" /> + <glyph glyph-name="glyph313" unicode="&#xe139;" +d="M625 560q51 0 88 -37t37 -88q0 -48 -32 -83q32 -35 32 -84q0 -48 -32 -83q32 -35 32 -83q0 -52 -37 -89q-88 -88 -213 -88t-213 88q-15 15 -37 15t-37 -15q-36 -36 -88 -36q-51 0 -88 37t-37 88q0 48 32 83q-32 35 -32 83q0 49 32 84q-32 35 -32 83q0 51 37 88 +q89 89 213 89t213 -89q15 -15 37 -15t37 15q37 37 88 37zM654 72q12 12 12 29.5t-12 29.5t-29 12t-29 -12q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q40 40 96 40t96 -40q64 -64 154 -64t154 64zM96 464q-12 -12 -12 -29 +t12 -29q13 -13 29 -13t29 13q39 39 96 39t96 -39q64 -64 154 -64t154 64q12 12 12 29t-12 29q-13 13 -29 13t-29 -13q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64zM654 239q12 12 12 29.5t-12 29.5t-29 12t-29 -12q-40 -40 -96 -40t-96 40q-64 64 -154 64t-154 -64 +q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q39 39 96 39t96 -39q64 -64 154 -64t154 64z" /> + <glyph glyph-name="glyph314" unicode="&#xe13a;" horiz-adv-x="583" +d="M417 8q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5q-64 -64 -154 -64zM417 175q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40 +q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5q-64 -64 -154 -64zM417 342q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40q-12 -12 -29.5 -12t-29.5 12t-12 29t12 29 +q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29t-12 -29q-64 -64 -154 -64z" /> + <glyph glyph-name="glyph315" unicode="&#xe13b;" horiz-adv-x="833" +d="M625 8h-458q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v6q0 104 73.5 177t176.5 73q80 0 144.5 -46.5t90.5 -121.5q92 7 157.5 -54.5t65.5 -152.5q0 -86 -61 -147.5t-147 -61.5zM163 259q-32 0 -56 -25t-24 -59t24.5 -58.5t59.5 -24.5h458q52 0 88.5 36.5t36.5 88.5 +t-36.5 88.5t-88.5 36.5q-15 0 -34 -6l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -50z" /> + <glyph glyph-name="glyph316" unicode="&#xe13c;" horiz-adv-x="833" +d="M542 -117q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-250q0 -17 -12 -29.5t-29 -12.5zM292 -117q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-250q0 -17 -12 -29.5t-29 -12.5zM417 -200 +q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29t29.5 12t29 -12t12 -29v-250q0 -17 -12 -29.5t-29 -12.5zM167 50q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -70 -42.5 -125.5t-109.5 -74.5 +q-17 -5 -32.5 4t-19.5 25q-5 17 4 32t25 19q41 11 66.5 44.5t25.5 75.5q0 52 -36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l10 -50h-59q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5t59.5 -24.5 +q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5z" /> + <glyph glyph-name="glyph317" unicode="&#xe13d;" horiz-adv-x="473" +d="M160 -33q-54 0 -105 18l-55 21l37 45q81 99 81 228t-81 228l-37 46l55 20q54 19 105 19q129 0 221 -92t92 -221t-92 -220.5t-221 -91.5zM139 51q7 -1 21 -1q94 0 161.5 67t67.5 162t-67.5 162t-161.5 67q-14 0 -21 -1q63 -106 63 -228t-63 -228z" /> + <glyph glyph-name="glyph318" unicode="&#xe13e;" horiz-adv-x="912" +d="M562 675l-41 -125l-42 125q-6 17 2.5 33.5t25.5 22.5q23 8 43.5 -10t11.5 -46zM786 548l-118 -59l59 118q8 16 25.5 21.5t33.5 -2.5q25 -13 24 -39.5t-24 -38.5zM854 300l-125 42l125 41q17 6 33.5 -2t22.5 -25q8 -23 -10 -44t-46 -12zM315 607l59 -118l-118 59 +q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24zM699 286q60 -23 97 -75.5t37 -118.5q0 -86 -61 -147.5t-147 -61.5h-458q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v6q0 50 18 94q-24 22 -7 53t53 19q76 84 186 84l6 -1q55 63 140 63q77 0 132 -55t55 -132q0 -29 -9 -56z +M521 446q-44 0 -76 -34q88 -31 123 -121q21 6 47 8q10 22 10 43q0 43 -30.5 73.5t-73.5 30.5zM625 -33q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-15 0 -34 -6l-12 -1q-33 0 -41 38q-11 58 -56 96t-104 40l-3 -1q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -50 +l-59 1q-32 0 -56 -25t-24 -59t24.5 -58.5t59.5 -24.5h458z" /> + <glyph glyph-name="glyph319" unicode="&#xe13f;" horiz-adv-x="833" +d="M625 50q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l10 -50h-59q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5 +t59.5 -24.5q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -86 -61 -147t-147 -61zM354 50l42 125l42 -125q6 -17 -2.5 -33.5t-25.5 -22.5 +q-23 -8 -44 10t-12 46zM479 -33l42 125l41 -125q6 -17 -2 -33.5t-25 -22.5q-23 -8 -44 10t-12 46zM229 -33l42 125l41 -125q6 -17 -2 -33.5t-25 -22.5q-23 -8 -44 10t-12 46z" /> + <glyph glyph-name="glyph320" unicode="&#xe140;" horiz-adv-x="689" +d="M654 169q18 -4 28 -18.5t6 -32.5q-5 -26 -32 -33.5t-44 12.5l-69 78l17 -61q4 -16 -4.5 -31t-25.5 -20l-11 -2q-14 0 -25 8.5t-15 22.5l-17 63q-26 -21 -51 -30l46 -46q12 -12 12 -29t-12 -29q-13 -13 -29 -13q-17 0 -30 13l-29 29h-10l27 -83q6 -17 -2.5 -33.5 +t-25.5 -22.5q-23 -8 -43.5 10t-11.5 46l28 83h-11l-29 -29q-12 -12 -29.5 -12t-29.5 12t-12 29t12 29l46 46q-25 9 -51 30l-17 -63q-4 -14 -15 -22.5t-25 -8.5l-11 2q-16 4 -25 19t-4 32l16 62l-69 -79q-12 -13 -30.5 -14t-31.5 11q-14 12 -15 30t11 32q10 10 24 13l102 21 +l-61 17q-17 5 -25.5 20t-4.5 31t19 25t32 4l63 -16q-3 15 -3 29t3 29l-63 -16l-11 -2q-14 0 -25 8.5t-15 22.5q-4 16 4.5 31t25.5 20l61 17l-102 21q-18 4 -28 18.5t-6 32.5q5 26 32 33.5t44 -12.5l69 -79l-16 62q-5 17 4 32t25 19q17 5 32 -4t19 -25l17 -63q26 21 51 30 +l-46 46q-12 12 -12 29t12 29t29.5 12t29.5 -12l45 -45l-33 99q-6 17 2.5 33.5t25.5 22.5q23 8 43.5 -10t11.5 -46l-33 -99l45 45q12 12 29.5 12t29.5 -12t12 -29t-12 -29l-46 -46q25 -9 51 -30l17 63q4 16 19 25t32 4t25.5 -20t4.5 -31l-17 -61l69 78q12 13 30.5 14 +t31.5 -11q14 -12 15 -30t-11 -32q-10 -10 -24 -13l-102 -21l62 -17q16 -4 25 -19t4 -32q-4 -14 -15 -22.5t-25 -8.5l-11 2l-63 16q3 -15 3 -29t-3 -29l63 16q17 5 32 -4t19 -25q5 -17 -4 -32t-25 -19l-62 -17zM345 196q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 +t-74 -30.5t-31 -73.5t31 -73.5t74 -30.5z" /> + <glyph glyph-name="glyph321" unicode="&#xe141;" horiz-adv-x="833" +d="M625 50q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l11 -52l-60 2q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5 +t59.5 -24.5q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -86 -61 -147t-147 -61zM443 217l-62 -146l125 -61l-188 -168l63 146l-125 60z" /> + <glyph glyph-name="glyph322" unicode="&#xe142;" horiz-adv-x="783" +d="M433 633l-41 -122l-42 122q-6 17 2 33.5t25 22.5q24 8 45 -9.5t11 -46.5zM58 342l122 -42l-122 -42q-17 -6 -33.5 2.5t-22.5 25.5q-8 24 9.5 45t46.5 11zM350 -33l42 122l41 -122q6 -17 -2 -33.5t-25 -22.5q-24 -8 -45 9.5t-11 46.5zM725 258l-122 42l122 42 +q17 6 33.5 -2.5t22.5 -25.5q8 -24 -9.5 -45t-46.5 -11zM185 565l57 -116l-116 57q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24zM126 94l116 57l-57 -116q-8 -17 -25 -22.5t-34 2.5q-25 13 -24 40t24 39zM598 35l-57 116l116 -57q17 -8 22.5 -25t-2.5 -34q-13 -25 -40 -24 +t-39 24zM657 506l-116 -57l57 116q8 17 25 22.5t34 -2.5q25 -13 24 -40t-24 -39zM392 112q-77 0 -132.5 55.5t-55.5 132.5t55.5 132.5t132.5 55.5t132 -55.5t55 -132.5t-55 -132.5t-132 -55.5zM392 404q-43 0 -74 -30.5t-31 -73.5t31 -73.5t74 -30.5t73.5 30.5t30.5 73.5 +t-30.5 73.5t-73.5 30.5z" /> + <glyph glyph-name="glyph323" unicode="&#xe143;" horiz-adv-x="833" +d="M117 144q-9 0 -17 3q-46 20 -73 61.5t-27 91.5q0 58 35 102.5t90 58.5v6q0 103 73.5 176.5t176.5 73.5q92 0 161.5 -59t84.5 -150q3 -17 -7 -31t-27 -17q-17 -2 -31 7.5t-17 26.5q-11 60 -57 99.5t-107 39.5q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -53l-59 4 +q-32 0 -56 -25t-24 -59q0 -25 13.5 -45.5t36.5 -30.5q20 -9 24 -28.5t-7.5 -35.5t-32.5 -16zM708 508q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-91q8 -21 8 -41q0 -52 -36.5 -88.5t-88.5 -36.5h-208q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5 +t29 -12t12 -29t-12 -29.5t-29 -12.5q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-192q-17 0 -29 12.5t-12 29.5t12 29.5t29 12.5h400q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29 12.5t-12 29.5t12 29t29 12z +" /> + <glyph glyph-name="glyph324" unicode="&#xe144;" horiz-adv-x="725" +d="M600 592q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-91q8 -21 8 -42q0 -52 -36.5 -88.5t-88.5 -36.5h-267q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5 +t88.5 36.5h267q17 0 29 12.5t12 29.5t-12 29.5t-29 12.5h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h458q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" /> + <glyph glyph-name="glyph325" unicode="&#xe145;" horiz-adv-x="763" +d="M763 352q0 -64 -44 -108l-232 -236q-24 -25 -47.5 -33t-57.5 -8q-65 0 -110 50l-240 241q-13 13 -22.5 39t-9.5 51q0 48 29 87q23 25 31 31q139 117 321.5 117t321.5 -117q13 -10 22 -20q38 -36 38 -94zM382 50q26 0 44 18t18 44t-18 44.5t-44 18.5t-44.5 -18.5 +t-18.5 -44.5t18.5 -44t44.5 -18zM544 186q18 18 18 44.5t-18 44.5q-67 67 -162.5 67t-162.5 -67q-18 -18 -18 -44.5t18 -44.5t44.5 -18t44.5 18q31 31 73.5 31t73.5 -31q18 -18 44 -18q27 0 45 18zM661 304q18 18 18 44.5t-18 44.5q-115 115 -279 115t-280 -115 +q-18 -18 -18 -44.5t18 -44.5t44 -18t44 18q80 80 192 80t191 -80q18 -18 44 -18t44 18z" /> + <glyph glyph-name="glyph326" unicode="&#xe146;" horiz-adv-x="874" +d="M496 -9q-24 -25 -58.5 -24.5t-59.5 24.5t-25 58.5t25 59.5q24 25 58.5 25t59.5 -25q25 -24 25 -59t-25 -59zM790 320q-33 0 -58 25q-122 121 -295 121t-295 -121q-25 -25 -59 -24.5t-59 24.5q-25 25 -25 58.5t25 58.5q112 112 262 151.5t300.5 0t262.5 -151.5 +q25 -25 25 -58.5t-25 -58.5t-59 -25zM260 143q-34 0 -59 25t-25 59t25 59q64 64 150 86.5t172 0t150 -86.5q25 -25 25 -59t-25 -59t-59 -25t-59 25q-49 49 -118 49t-118 -49q-25 -25 -59 -25z" /> + <glyph glyph-name="glyph327" unicode="&#xe147;" horiz-adv-x="464" +d="M464 407q0 -85 -54.5 -149.5t-136.5 -78.5l1 -4v-167h41q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-166q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h41v167l1 4q-82 14 -136.5 78.5t-54.5 149.5q0 47 10 106.5t18 92t11 39.5q4 13 15 21.5t25 8.5h306 +q14 0 25 -8.5t15 -21.5q3 -7 11 -39.5t18 -92t10 -106.5zM232 258q55 0 96.5 35.5t49.5 89.5h-292q8 -54 49.5 -89.5t96.5 -35.5zM84 425h296q-4 79 -27 167h-242q-23 -88 -27 -167z" /> + <glyph glyph-name="glyph328" unicode="&#xe148;" +d="M375 717q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM375 467q0 -35 -4.5 -60.5t-10.5 -37.5t-12 -18.5t-10 -7.5l-5 -1v125q0 34 16.5 58.5t46.5 24.5q27 0 43 20.5t19 50.5q-39 12 -83 12q-84 0 -153 -42.5t-106 -114.5 +q16 -15 46.5 -46t45.5 -47q0 5 1 12t11.5 18.5t29.5 11.5v-83l83 -84v-83q39 0 56 -0.5t36.5 -4.5t26 -13t6.5 -24q26 13 35.5 18t22.5 16.5t15.5 17.5t6.5 26t4 36v53l41 42l-41 41v-83h-42q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5t12 29.5t29 12.5v125 +q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29zM500 383q0 16 12 29t30 13q17 0 29 -12l42 -42q12 -12 12 -29.5t-12 -29.5l-30 -29q-1 -90 -17.5 -120.5t-88.5 -66.5q-8 -4 -18 -4q-17 0 -28.5 11t-13.5 27q-11 3 -84 3q-17 0 -29 12.5t-12 29.5v66l-193 193q-16 -46 -16 -92 +q0 -121 85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5q0 87 -46.5 158t-122.5 106q-8 -44 -35 -70q37 -25 37 -69v-84z" /> + <glyph glyph-name="glyph329" unicode="&#xe149;" +d="M375 717q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM458 633v31q-42 11 -83 11q-75 0 -140.5 -31t-112.5 -86l-22 -28l-15 -24l123 -123q0 5 1 12t11.5 18.5t29.5 11.5v-83l83 -84v-83q39 0 56 -0.5t36.5 -4.5t26 -13t6.5 -24 +q26 13 35.5 18t22.5 16.5t15.5 17.5t6.5 26t4 36v53l41 42l-41 41v-83h-42q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5t12 29.5t29 12.5v125q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29q0 -35 -4.5 -60.5t-10.5 -37.5t-12 -18.5t-10 -7.5l-5 -1v125q0 34 16.5 58.5 +t46.5 24.5t46 24.5t16 58.5z" /> + <glyph glyph-name="glyph330" unicode="&#xe14a;" horiz-adv-x="700" +d="M396 342q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-84v-83q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v83h-83q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h83v83q0 8 6.5 14.5t14.5 6.5t14 -6.5t6 -14.5v-83h84zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5 +q-49 0 -88 33l-100 99q-48 -15 -90 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -43 -15 -91zM499 181q-27 -41 -68 -68l105 -104q15 -13 34 -13q20 0 33.5 14t13.5 33q0 21 -14 33zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5 +t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph331" unicode="&#xe14b;" horiz-adv-x="700" +d="M396 342q9 0 15 -6t6 -15t-6 -15t-15 -6h-84v-83q0 -21 -20 -21q-9 0 -15 6t-6 15v83h-84q-20 0 -20 21t20 21h84v83q0 9 6 15t15 6q20 0 20 -21v-83h84zM600 199q10 -10 30.5 -31.5t31.5 -32.5q38 -38 38 -92t-38 -92.5t-92 -38.5q-55 0 -93 38l-94 94q-48 -15 -91 -15 +q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -46 -14 -91zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph332" unicode="&#xe14c;" horiz-adv-x="700" +d="M396 300h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5q-49 0 -88 33l-100 99q-48 -15 -90 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206 +q0 -47 -15 -91zM499 181q-27 -41 -68 -68l105 -104q15 -13 34 -13q20 0 33.5 14t13.5 33q0 21 -14 33zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph333" unicode="&#xe14d;" horiz-adv-x="700" +d="M396 342q9 0 15 -6t6 -15t-6 -15t-15 -6h-208q-9 0 -15 6t-6 15t6 15t15 6h208zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5q-57 0 -93 38l-94 94q-48 -15 -91 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -46 -14 -91q9 -9 26.5 -27 +t26.5 -27zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph334" unicode="&#xe14e;" horiz-adv-x="700" +d="M409 467q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM409 508q69 0 117.5 -48.5t48.5 -117.5t-48.5 -118t-117.5 -49t-118 49t-49 118t49 117.5t118 48.5zM0 64q0 54 38 92l94 95q-15 43 -15 91q0 121 85.5 206 +t206.5 85t206 -85t85 -206t-85 -206.5t-206 -85.5q-43 0 -91 15l-100 -99q-39 -33 -88 -33q-54 0 -92 38.5t-38 92.5zM269 134q-41 27 -68 68l-104 -105q-14 -12 -14 -33q0 -20 14 -34t33 -14q18 0 34 14zM409 133q86 0 147 61.5t61 147.5t-61 147t-147 61t-147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5z" /> + <glyph glyph-name="glyph335" unicode="&#xe14f;" horiz-adv-x="700" +d="M409 633q121 0 206 -85t85 -206t-85 -206.5t-206 -85.5q-43 0 -91 15l-97 -97q-40 -35 -91 -35q-54 0 -92 38.5t-38 92.5t37 91q42 43 63 64l32 32q-15 48 -15 91q0 121 85.5 206t206.5 85zM409 133q86 0 147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147 +t61.5 -147.5t147.5 -61.5zM409 508q69 0 117.5 -48.5t48.5 -117.5t-48.5 -118t-117.5 -49t-118 49t-49 118t49 117.5t118 48.5zM409 217q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5t-88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5z" /> + </font> +</defs></svg> diff --git a/assets/fonts/typicons.ttf b/assets/fonts/typicons.ttf new file mode 100644 index 0000000..f7df94b Binary files /dev/null and b/assets/fonts/typicons.ttf differ diff --git a/assets/fonts/typicons.woff b/assets/fonts/typicons.woff new file mode 100644 index 0000000..14dc020 Binary files /dev/null and b/assets/fonts/typicons.woff differ diff --git a/assets/images/Copy of logo-rssa-black-1.png b/assets/images/Copy of logo-rssa-black-1.png new file mode 100644 index 0000000..b7d031d Binary files /dev/null and b/assets/images/Copy of logo-rssa-black-1.png differ diff --git a/assets/images/animat-customize-color.gif b/assets/images/animat-customize-color.gif new file mode 100644 index 0000000..2d3e8d7 Binary files /dev/null and b/assets/images/animat-customize-color.gif differ diff --git a/assets/images/animat-diamond-color.gif b/assets/images/animat-diamond-color.gif new file mode 100644 index 0000000..cd4d9c1 Binary files /dev/null and b/assets/images/animat-diamond-color.gif differ diff --git a/assets/images/animat-rocket-color.gif b/assets/images/animat-rocket-color.gif new file mode 100644 index 0000000..71e5777 Binary files /dev/null and b/assets/images/animat-rocket-color.gif differ diff --git a/assets/images/animat-search-color.gif b/assets/images/animat-search-color.gif new file mode 100644 index 0000000..945f048 Binary files /dev/null and b/assets/images/animat-search-color.gif differ diff --git a/assets/images/bg-pattern.png b/assets/images/bg-pattern.png new file mode 100644 index 0000000..ddae889 Binary files /dev/null and b/assets/images/bg-pattern.png differ diff --git a/assets/images/blog/1.jpg b/assets/images/blog/1.jpg new file mode 100644 index 0000000..3a820ff Binary files /dev/null and b/assets/images/blog/1.jpg differ diff --git a/assets/images/blog/2.jpg b/assets/images/blog/2.jpg new file mode 100644 index 0000000..3c3b273 Binary files /dev/null and b/assets/images/blog/2.jpg differ diff --git a/assets/images/blog/3.jpg b/assets/images/blog/3.jpg new file mode 100644 index 0000000..e987b35 Binary files /dev/null and b/assets/images/blog/3.jpg differ diff --git a/assets/images/blog/4.jpg b/assets/images/blog/4.jpg new file mode 100644 index 0000000..fa82a9f Binary files /dev/null and b/assets/images/blog/4.jpg differ diff --git a/assets/images/blog/5.jpg b/assets/images/blog/5.jpg new file mode 100644 index 0000000..113405a Binary files /dev/null and b/assets/images/blog/5.jpg differ diff --git a/assets/images/dust.png b/assets/images/dust.png new file mode 100644 index 0000000..08876f6 Binary files /dev/null and b/assets/images/dust.png differ diff --git a/assets/images/email/1.png b/assets/images/email/1.png new file mode 100644 index 0000000..3a12328 Binary files /dev/null and b/assets/images/email/1.png differ diff --git a/assets/images/email/2.png b/assets/images/email/2.png new file mode 100644 index 0000000..262e5aa Binary files /dev/null and b/assets/images/email/2.png differ diff --git a/assets/images/email/3.png b/assets/images/email/3.png new file mode 100644 index 0000000..ae596e4 Binary files /dev/null and b/assets/images/email/3.png differ diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 0000000..6637484 Binary files /dev/null and b/assets/images/favicon.ico differ diff --git a/assets/images/happy.png b/assets/images/happy.png new file mode 100644 index 0000000..b99fbed Binary files /dev/null and b/assets/images/happy.png differ diff --git a/assets/images/icons/about.svg b/assets/images/icons/about.svg new file mode 100644 index 0000000..103d75b --- /dev/null +++ b/assets/images/icons/about.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2196F3" d="M37,40H11l-6,6V12c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,37.3,40.3,40,37,40z"/> + <g fill="#fff"> + <rect x="22" y="20" width="4" height="11"/> + <circle cx="24" cy="15" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/accept_database.svg b/assets/images/icons/accept_database.svg new file mode 100644 index 0000000..5352564 --- /dev/null +++ b/assets/images/icons/accept_database.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <circle fill="#43A047" cx="38" cy="38" r="10"/> + <polygon fill="#DCEDC8" points="42.5,33.3 36.8,39 34.1,36.3 32,38.5 36.8,43.3 44.6,35.5"/> +</svg> diff --git a/assets/images/icons/add_column.svg b/assets/images/icons/add_column.svg new file mode 100644 index 0000000..c1b8f65 --- /dev/null +++ b/assets/images/icons/add_column.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M30,5H18c-2.2,0-4,1.8-4,4v30c0,2.2,1.8,4,4,4h12c2.2,0,4-1.8,4-4V9C34,6.8,32.2,5,30,5z M18,39V9h12l0,30 H18z"/> + <circle fill="#43A047" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36" y="32" width="4" height="12"/> + <rect x="32" y="36" width="12" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/add_database.svg b/assets/images/icons/add_database.svg new file mode 100644 index 0000000..06d349a --- /dev/null +++ b/assets/images/icons/add_database.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <circle fill="#43A047" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36" y="32" width="4" height="12"/> + <rect x="32" y="36" width="12" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/add_image.svg b/assets/images/icons/add_image.svg new file mode 100644 index 0000000..b78248c --- /dev/null +++ b/assets/images/icons/add_image.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8CBCD6" d="M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z"/> + <circle fill="#B3DDF5" cx="35" cy="16" r="3"/> + <polygon fill="#9AC9E3" points="20,16 9,32 31,32"/> + <polygon fill="#B3DDF5" points="31,22 23,32 39,32"/> + <circle fill="#43A047" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36" y="32" width="4" height="12"/> + <rect x="32" y="36" width="12" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/add_row.svg b/assets/images/icons/add_row.svg new file mode 100644 index 0000000..f29717a --- /dev/null +++ b/assets/images/icons/add_row.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M43,30V18c0-2.2-1.8-4-4-4H9c-2.2,0-4,1.8-4,4v12c0,2.2,1.8,4,4,4h30C41.2,34,43,32.2,43,30z M9,18h30v12 L9,30V18z"/> + <circle fill="#43A047" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="32" y="36" width="12" height="4"/> + <rect x="36" y="32" width="4" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/address_book.svg b/assets/images/icons/address_book.svg new file mode 100644 index 0000000..ed90c84 --- /dev/null +++ b/assets/images/icons/address_book.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#673AB7" d="M38,44H12V4h26c2.2,0,4,1.8,4,4v32C42,42.2,40.2,44,38,44z"/> + <path fill="#311B92" d="M10,4h2v40h-2c-2.2,0-4-1.8-4-4V8C6,5.8,7.8,4,10,4z"/> + <path fill="#fff" d="M36,24.2c-0.1,4.8-3.1,6.9-5.3,6.7c-0.6-0.1-2.1-0.1-2.9-1.6c-0.8,1-1.8,1.6-3.1,1.6c-2.6,0-3.3-2.5-3.4-3.1 c-0.1-0.7-0.2-1.4-0.1-2.2c0.1-1,1.1-6.5,5.7-6.5c2.2,0,3.5,1.1,3.7,1.3L30,27.2c0,0.3-0.2,1.6,1.1,1.6c2.1,0,2.4-3.9,2.4-4.6 c0.1-1.2,0.3-8.2-7-8.2c-6.9,0-7.9,7.4-8,9.2c-0.5,8.5,6,8.5,7.2,8.5c1.7,0,3.7-0.7,3.9-0.8l0.4,2c-0.3,0.2-2,1.1-4.4,1.1 c-2.2,0-10.1-0.4-9.8-10.8C16.1,23.1,17.4,14,26.6,14C35.8,14,36,22.1,36,24.2z M24.1,25.5c-0.1,1,0,1.8,0.2,2.3 c0.2,0.5,0.6,0.8,1.2,0.8c0.1,0,0.3,0,0.4-0.1c0.2-0.1,0.3-0.1,0.5-0.3c0.2-0.1,0.3-0.3,0.5-0.6c0.2-0.2,0.3-0.6,0.4-1l0.5-5.4 c-0.2-0.1-0.5-0.1-0.7-0.1c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.6,0.5-0.9,0.8c-0.2,0.4-0.4,0.8-0.6,1.3S24.2,24.8,24.1,25.5z"/> +</svg> diff --git a/assets/images/icons/advance.svg b/assets/images/icons/advance.svg new file mode 100644 index 0000000..b214160 --- /dev/null +++ b/assets/images/icons/advance.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1565C0"> + <polygon points="46.1,24 33,35 33,13"/> + <rect x="10" y="20" width="4" height="8"/> + <rect x="4" y="20" width="4" height="8"/> + <rect x="16" y="20" width="4" height="8"/> + <rect x="22" y="20" width="14" height="8"/> + </g> +</svg> diff --git a/assets/images/icons/advertising.svg b/assets/images/icons/advertising.svg new file mode 100644 index 0000000..a5ba71c --- /dev/null +++ b/assets/images/icons/advertising.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#90CAF9"> + <path d="M17.4,33H15v-4h4l0.4,1.5C19.7,31.8,18.7,33,17.4,33z"/> + <path d="M37,36c0,0-11.8-7-18-7V15c5.8,0,18-7,18-7V36z"/> + </g> + <g fill="#283593"> + <circle cx="9" cy="22" r="5"/> + <path d="M40,19h-3v6h3c1.7,0,3-1.3,3-3S41.7,19,40,19z"/> + <path d="M18.6,41.2c-0.9,0.6-2.5,1.2-4.6,1.4c-0.6,0.1-1.2-0.3-1.4-1L8.2,27.9c0,0,8.8-6.2,8.8,1.1 c0,5.5,1.5,8.4,2.2,9.5c0.5,0.7,0.5,1.6,0,2.3C19,41,18.8,41.1,18.6,41.2z"/> + </g> + <path fill="#3F51B5" d="M9,29h10V15H9c-1.1,0-2,0.9-2,2v10C7,28.1,7.9,29,9,29z"/> + <path fill="#42A5F5" d="M38,38L38,38c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2v28C40,37.1,39.1,38,38,38z"/> +</svg> diff --git a/assets/images/icons/alarm_clock.svg b/assets/images/icons/alarm_clock.svg new file mode 100644 index 0000000..6ba198c --- /dev/null +++ b/assets/images/icons/alarm_clock.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#37474F"> + <path d="M38.5,44.6l-4-4l2.1-2.1l4,4c0.6,0.6,0.6,1.5,0,2.1l0,0C40.1,45.1,39.1,45.1,38.5,44.6z"/> + <path d="M9.5,44.6l4-4l-2.1-2.1l-4,4c-0.6,0.6-0.6,1.5,0,2.1l0,0C7.9,45.1,8.9,45.1,9.5,44.6z"/> + </g> + <circle fill="#C62828" cx="24" cy="24" r="20"/> + <circle fill="#eee" cx="24" cy="24" r="16"/> + <rect x="19" y="22.1" transform="matrix(-.707 -.707 .707 -.707 12.904 62.537)" fill="#E53935" width=".8" height="13"/> + <rect x="23" y="11" width="2" height="13"/> + <rect x="26.1" y="22.7" transform="matrix(-.707 .707 -.707 -.707 65.787 27.25)" width="2.3" height="9.2"/> + <circle cx="24" cy="24" r="2"/> + <circle fill="#C62828" cx="24" cy="24" r="1"/> + <rect x="22" y="1" fill="#37474F" width="4" height="3"/> + <g fill="#37474F"> + <path d="M44.4,16.2c2.5-3.5,2.1-8.4-1-11.5c-3.1-3.1-8-3.5-11.5-1L44.4,16.2z"/> + <path d="M3.6,16.2c-2.5-3.5-2.1-8.4,1-11.5c3.1-3.1,8-3.5,11.5-1L3.6,16.2z"/> + </g> +</svg> diff --git a/assets/images/icons/alphabetical_sorting_az.svg b/assets/images/icons/alphabetical_sorting_az.svg new file mode 100644 index 0000000..66a4a4c --- /dev/null +++ b/assets/images/icons/alphabetical_sorting_az.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#546E7A" points="38,33 38,5 34,5 34,33 28,33 36,43 44,33"/> + <g fill="#2196F3"> + <path d="M16.8,17.2h-5.3l-1.1,3H6.9L12.6,5h2.9l5.7,15.2h-3.2L16.8,17.2z M12.2,14.5H16l-1.9-5.7L12.2,14.5z"/> + <path d="M12.4,40.5H20V43H8.4v-1.9L16,30.3H8.4v-2.5h11.4v1.7L12.4,40.5z"/> + </g> +</svg> diff --git a/assets/images/icons/alphabetical_sorting_za.svg b/assets/images/icons/alphabetical_sorting_za.svg new file mode 100644 index 0000000..63d9a7e --- /dev/null +++ b/assets/images/icons/alphabetical_sorting_za.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#2196F3"> + <path d="M16.8,40h-5.3l-1.1,3H6.9l5.7-15.2h2.9L21.1,43h-3.2L16.8,40z M12.2,37.3H16l-1.9-5.7L12.2,37.3z"/> + <path d="M12.4,17.7H20v2.5H8.4v-1.9L16,7.5H8.4V5h11.4v1.7L12.4,17.7z"/> + </g> + <polygon fill="#546E7A" points="38,33 38,5 34,5 34,33 28,33 36,43 44,33"/> +</svg> diff --git a/assets/images/icons/answers.svg b/assets/images/icons/answers.svg new file mode 100644 index 0000000..336cb46 --- /dev/null +++ b/assets/images/icons/answers.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#42A5F5" points="36,44 8,44 8,8 28,8 36,16"/> + <polygon fill="#90CAF9" points="40,40 12,40 12,4 32,4 40,12"/> + <polygon fill="#E1F5FE" points="38.5,13 31,13 31,5.5"/> + <path fill="#1976D2" d="M23.4,29.9c0-0.2,0-0.4,0.1-0.6s0.2-0.3,0.3-0.5s0.3-0.2,0.5-0.3s0.4-0.1,0.6-0.1s0.5,0,0.7,0.1 s0.4,0.2,0.5,0.3s0.2,0.3,0.3,0.5s0.1,0.4,0.1,0.6s0,0.4-0.1,0.6s-0.2,0.3-0.3,0.5s-0.3,0.2-0.5,0.3s-0.4,0.1-0.7,0.1 s-0.5,0-0.6-0.1s-0.4-0.2-0.5-0.3s-0.2-0.3-0.3-0.5S23.4,30.1,23.4,29.9z M26.1,26.8h-2.3L23.4,17h3L26.1,26.8z"/> +</svg> diff --git a/assets/images/icons/approval.svg b/assets/images/icons/approval.svg new file mode 100644 index 0000000..c2cd45a --- /dev/null +++ b/assets/images/icons/approval.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#8BC34A" points="24,3 28.7,6.6 34.5,5.8 36.7,11.3 42.2,13.5 41.4,19.3 45,24 41.4,28.7 42.2,34.5 36.7,36.7 34.5,42.2 28.7,41.4 24,45 19.3,41.4 13.5,42.2 11.3,36.7 5.8,34.5 6.6,28.7 3,24 6.6,19.3 5.8,13.5 11.3,11.3 13.5,5.8 19.3,6.6"/> + <polygon fill="#CCFF90" points="34.6,14.6 21,28.2 15.4,22.6 12.6,25.4 21,33.8 37.4,17.4"/> +</svg> diff --git a/assets/images/icons/approve.svg b/assets/images/icons/approve.svg new file mode 100644 index 0000000..79a96c8 --- /dev/null +++ b/assets/images/icons/approve.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <polygon fill="#4CAF50" points="32.6,18.6 22.3,28.9 17.4,24 14.6,26.8 22.3,34.5 35.4,21.4"/> +</svg> diff --git a/assets/images/icons/area_chart.svg b/assets/images/icons/area_chart.svg new file mode 100644 index 0000000..57a9352 --- /dev/null +++ b/assets/images/icons/area_chart.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="42,37 6,37 6,25 16,10 30,17 42,6"/> + <polygon fill="#00BCD4" points="42,42 6,42 6,32 16,24 30,26 42,17"/> +</svg> diff --git a/assets/images/icons/assistant.svg b/assets/images/icons/assistant.svg new file mode 100644 index 0000000..3f344d5 --- /dev/null +++ b/assets/images/icons/assistant.svg @@ -0,0 +1,17 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFA726"> + <circle cx="10" cy="26" r="4"/> + <circle cx="38" cy="26" r="4"/> + </g> + <path fill="#FFB74D" d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path fill="#FF5722" d="M24,3C14.6,3,7,10.6,7,20c0,1.2,0,3.4,0,3.4L9,25v-3l21-9.8l9,9.8v3l2-1.6c0,0,0-2.1,0-3.4 C41,12,35.3,3,24,3z"/> + <g fill="#784719"> + <circle cx="31" cy="26" r="2"/> + <circle cx="17" cy="26" r="2"/> + </g> + <path fill="#757575" d="M43,24c-0.6,0-1,0.4-1,1v-7c0-8.8-7.2-16-16-16h-7c-0.6,0-1,0.4-1,1s0.4,1,1,1h7c7.7,0,14,6.3,14,14v10 c0,0.6,0.4,1,1,1s1-0.4,1-1v2c0,3.9-3.1,7-7,7H24c-0.6,0-1,0.4-1,1s0.4,1,1,1h11c5,0,9-4,9-9v-5C44,24.4,43.6,24,43,24z"/> + <g fill="#37474F"> + <path d="M43,22h-1c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h1c1.1,0,2-0.9,2-2v-4C45,22.9,44.1,22,43,22z"/> + <circle cx="24" cy="38" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/audio_file.svg b/assets/images/icons/audio_file.svg new file mode 100644 index 0000000..b5fb1ca --- /dev/null +++ b/assets/images/icons/audio_file.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="204" fill="none" width="48" height="48"/> + <polygon fill="#90CAF9" points="244,45 212,45 212,3 234,3 244,13"/> + <polygon fill="#E1F5FE" points="242.5,14 233,14 233,4.5"/> + <g fill="#1976D2"> + <circle cx="227" cy="30" r="4"/> + <polygon points="234,21 229,19 229,30 231,30 231,22.9 234,24"/> + </g> + <polygon fill="#90CAF9" points="40,45 8,45 8,3 30,3 40,13"/> + <polygon fill="#E1F5FE" points="38.5,14 29,14 29,4.5"/> + <g fill="#1976D2"> + <circle cx="23" cy="30" r="4"/> + <polygon points="30,21 25,19 25,30 27,30 27,22.9 30,24"/> + </g> +</svg> diff --git a/assets/images/icons/automatic.svg b/assets/images/icons/automatic.svg new file mode 100644 index 0000000..cefdfd7 --- /dev/null +++ b/assets/images/icons/automatic.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M39,43H9c-2.2,0-4-1.8-4-4V9c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v30C43,41.2,41.2,43,39,43z"/> + <path fill="#B3E5FC" d="M33.6,25.4c0.1-0.4,0.1-0.9,0.1-1.4s0-0.9-0.1-1.4l2.8-2c0.3-0.2,0.4-0.6,0.2-0.9l-2.7-4.6 c-0.2-0.3-0.5-0.4-0.8-0.3L30,16.3c-0.7-0.6-1.5-1-2.4-1.4l-0.3-3.4c0-0.3-0.3-0.6-0.6-0.6h-5.3c-0.3,0-0.6,0.3-0.6,0.6L20.4,15 c-0.9,0.3-1.6,0.8-2.4,1.4l-3.1-1.4c-0.3-0.1-0.7,0-0.8,0.3l-2.7,4.6c-0.2,0.3-0.1,0.7,0.2,0.9l2.8,2c-0.1,0.4-0.1,0.9-0.1,1.4 s0,0.9,0.1,1.4l-2.8,2c-0.3,0.2-0.4,0.6-0.2,0.9l2.7,4.6c0.2,0.3,0.5,0.4,0.8,0.3l3.1-1.4c0.7,0.6,1.5,1,2.4,1.4l0.3,3.4 c0,0.3,0.3,0.6,0.6,0.6h5.3c0.3,0,0.6-0.3,0.6-0.6l0.3-3.4c0.9-0.3,1.6-0.8,2.4-1.4l3.1,1.4c0.3,0.1,0.7,0,0.8-0.3l2.7-4.6 c0.2-0.3,0.1-0.7-0.2-0.9L33.6,25.4z M24,29c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C29,26.8,26.8,29,24,29z"/> +</svg> diff --git a/assets/images/icons/automotive.svg b/assets/images/icons/automotive.svg new file mode 100644 index 0000000..afd35a9 --- /dev/null +++ b/assets/images/icons/automotive.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="none" stroke="#F44336" stroke-width="4" stroke-miterlimit="10" d="M7,20v-8c0-2.2,1.8-4,4-4h14c1.2,0,2.4,0.6,3.2,1.6 L35,18"/> + <g fill="#37474F"> + <circle cx="35" cy="37" r="5"/> + <circle cx="13" cy="37" r="5"/> + </g> + <path fill="#F44336" d="M40.2,17L33,14H7c-1.2,0-2,0.8-2,2v10c0,1.2,0.8,2,2,2h1c0-2.8,2.2-5,5-5s5,2.2,5,5h12c0-2.8,2.2-5,5-5 s5,2.2,5,5h1c1.2,0,2-0.8,2-2v-5.2C43,19.2,41.8,17.6,40.2,17z"/> + <g fill="#546E7A"> + <circle cx="24" cy="37" r="3"/> + <circle cx="35" cy="37" r="2"/> + <circle cx="13" cy="37" r="2"/> + <path d="M30.4,39c-0.3-0.6-0.4-1.3-0.4-2s0.2-1.4,0.4-2H17.6c0.3,0.6,0.4,1.3,0.4,2s-0.2,1.4-0.4,2H30.4z"/> + </g> +</svg> diff --git a/assets/images/icons/bad_decision.svg b/assets/images/icons/bad_decision.svg new file mode 100644 index 0000000..2ea9fcf --- /dev/null +++ b/assets/images/icons/bad_decision.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <rect x="16" y="24" fill="#F44336" width="16" height="4"/> +</svg> diff --git a/assets/images/icons/bar_chart.svg b/assets/images/icons/bar_chart.svg new file mode 100644 index 0000000..eefa592 --- /dev/null +++ b/assets/images/icons/bar_chart.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <rect x="19" y="22" width="10" height="20"/> + <rect x="6" y="12" width="10" height="30"/> + <rect x="32" y="6" width="10" height="36"/> + </g> +</svg> diff --git a/assets/images/icons/bearish.svg b/assets/images/icons/bearish.svg new file mode 100644 index 0000000..e1ec873 --- /dev/null +++ b/assets/images/icons/bearish.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#F44336"> + <rect x="40" y="34" width="4" height="10"/> + <rect x="34" y="29" width="4" height="15"/> + <rect x="28" y="33" width="4" height="11"/> + <rect x="22" y="25" width="4" height="19"/> + <rect x="16" y="28" width="4" height="16"/> + <rect x="10" y="24" width="4" height="20"/> + <rect x="4" y="19" width="4" height="25"/> + </g> + <g fill="#D32F2F"> + <polygon points="34,13.2 30,17.2 20,7.2 15,12.2 7.4,4.6 4.6,7.4 15,17.8 20,12.8 30,22.8 34,18.8 40.1,24.9 42.9,22.1"/> + <polygon points="44,26 35,26 44,17"/> + </g> +</svg> diff --git a/assets/images/icons/binoculars.svg b/assets/images/icons/binoculars.svg new file mode 100644 index 0000000..dfc4b2a --- /dev/null +++ b/assets/images/icons/binoculars.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#37474F"> + <circle cx="33" cy="16" r="6"/> + <circle cx="15" cy="16" r="6"/> + <path d="M46.7,25l-15.3,3H16.7L1.4,25l4.3-7.9c1.1-1.9,3.1-3.1,5.3-3.1h26.2c2.2,0,4.2,1.2,5.3,3.1L46.7,25z"/> + <circle cx="38" cy="30" r="10"/> + <circle cx="10" cy="30" r="10"/> + <circle cx="24" cy="28" r="5"/> + </g> + <circle fill="#546E7A" cx="24" cy="28" r="2"/> + <g fill="#a0f"> + <circle cx="38" cy="30" r="7"/> + <circle cx="10" cy="30" r="7"/> + </g> + <g fill="#CE93D8"> + <path d="M41.7,27.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C42.1,28.7,42.1,28.1,41.7,27.7z"/> + <path d="M10,26c-1.4,0-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1c1.2-1.3,3.3-1.3,4.5,0 c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0.1-1.4C12.8,26.6,11.4,26,10,26z"/> + </g> +</svg> diff --git a/assets/images/icons/biohazard.svg b/assets/images/icons/biohazard.svg new file mode 100644 index 0000000..f787dab --- /dev/null +++ b/assets/images/icons/biohazard.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#00A344" d="M24,13c-7.2,0-13,5.8-13,13s5.8,13,13,13s13-5.8,13-13S31.2,13,24,13z M24,35c-5,0-9-4-9-9s4-9,9-9s9,4,9,9 S29,35,24,35z"/> + <path fill="#00C853" d="M8.5,25.4c4-2.2,9-1.1,11.5,2.5c0.1,0.1,0.2,0.1,0.3,0.1l1.2-0.7c0.1-0.1,0.2-0.2,0.1-0.3 c0-0.2-0.1-0.4-0.1-0.6c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2l0,0 c0-0.1,0-0.1,0.1-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0.1-0.2c0,0,0,0,0,0c0,0,0-0.1,0.1-0.1c0,0,0-0.1,0.1-0.1c0,0,0-0.1,0.1-0.1 c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1 c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0.1,0c0.2-0.1,0.4-0.2,0.5-0.2c0.1,0,0.2-0.1,0.2-0.3v-1.3c0-0.1-0.1-0.2-0.2-0.2 c-4.5-0.4-8-4.1-8-8.6c0-4.1,3-7.6,6.9-8.4c0.1,0,0.2-0.1,0.2-0.3V4.8c0-0.1-0.1-0.2-0.2-0.2C16.4,5.5,12,10.4,12,16.3 c0,1.3,0.2,2.6,0.6,3.8c-1.2,0.2-2.5,0.7-3.6,1.3c-5.2,3-7.3,9.2-5.2,14.5C3.9,36,4,36,4.1,36l0.3-0.2c0.1-0.1,0.2-0.2,0.1-0.3 C3.3,31.7,4.8,27.4,8.5,25.4L8.5,25.4z M39,21.4c-1.2-0.7-2.4-1.1-3.6-1.3c0.4-1.2,0.6-2.4,0.6-3.8c0-5.9-4.4-10.8-10.2-11.7 c-0.1,0-0.2,0.1-0.2,0.2v0.4c0,0.1,0.1,0.2,0.2,0.3c4,0.8,6.9,4.3,6.9,8.4c0,4.5-3.5,8.2-8,8.6c-0.1,0-0.2,0.1-0.2,0.2v1.3 c0,0.1,0.1,0.2,0.2,0.3c0.2,0.1,0.4,0.1,0.6,0.2c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0c0.1,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0 c0.1,0.1,0.2,0.2,0.3,0.3c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1 c0,0,0,0.1,0.1,0.1c0,0,0,0,0,0c0,0.1,0,0.1,0.1,0.2c0,0,0,0,0,0c0,0.1,0,0.1,0,0.2c0,0,0,0,0,0c0,0.1,0,0.1,0,0.2c0,0,0,0,0,0.1 c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0.2,0,0.4-0.1,0.6c0,0.1,0,0.2,0.1,0.3l1.2,0.7c0.1,0.1,0.2,0,0.3-0.1c2.6-3.6,7.6-4.8,11.5-2.5 c3.6,2.1,5.2,6.3,3.9,10.1c0,0.1,0,0.2,0.1,0.3l0.3,0.2c0.1,0.1,0.2,0,0.3-0.1C46.3,30.5,44.2,24.3,39,21.4L39,21.4z M30.8,40.3 c-4-2.2-5.5-7.1-3.5-11.1c0.1-0.1,0-0.2-0.1-0.3L26,28.2c-0.1-0.1-0.2,0-0.3,0c-0.2,0.1-0.3,0.3-0.5,0.3c0,0,0,0,0,0 c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0,0,0c-0.1,0-0.1,0-0.2,0.1c0,0,0,0,0,0c-0.1,0-0.3,0.1-0.4,0.1c0,0,0,0,0,0c-0.1,0-0.1,0-0.2,0 c0,0,0,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0,0,0-0.1,0c-0.1,0-0.1,0-0.2,0c0,0,0,0,0,0 c-0.1,0-0.1,0-0.2,0c0,0,0,0,0,0c-0.1,0-0.1,0-0.2-0.1c0,0,0,0,0,0c0,0-0.1,0-0.1-0.1c0,0,0,0-0.1,0c-0.2-0.1-0.3-0.2-0.5-0.3 c-0.1-0.1-0.2-0.1-0.3,0l-1.2,0.7c-0.1,0.1-0.1,0.2-0.1,0.3c1.9,4,0.4,8.8-3.5,11.1c-3.6,2.1-8.2,1.3-10.9-1.7 c-0.1-0.1-0.2-0.1-0.3-0.1l-0.3,0.2c-0.1,0.1-0.1,0.2-0.1,0.3c3.6,4.5,10.2,5.8,15.4,2.8c1.2-0.7,2.2-1.5,3-2.4 c0.8,0.9,1.8,1.8,3,2.4c5.2,3,11.7,1.6,15.4-2.8c0.1-0.1,0-0.2-0.1-0.3L42,38.5c-0.1-0.1-0.2,0-0.3,0.1C39,41.5,34.4,42.3,30.8,40.3 L30.8,40.3z"/> +</svg> diff --git a/assets/images/icons/biomass.svg b/assets/images/icons/biomass.svg new file mode 100644 index 0000000..398147c --- /dev/null +++ b/assets/images/icons/biomass.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#9CCC65" d="M32,15V7H16v8L6.2,40c-0.6,1.5,0.5,3,2.1,3h31.5c1.6,0,2.6-1.6,2.1-3L32,15z"/> + <path fill="#8BC34A" d="M32,9H16c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2v0C34,8.1,33.1,9,32,9z"/> + <path fill="#2E7D32" d="M28,30c0,4.4-4,8-4,8s-4-3.6-4-8s4-8,4-8S28,25.6,28,30z"/> + <path fill="#388E3C" d="M31.1,32.6c-2,4-7.1,5.4-7.1,5.4s-2-5,0-8.9s7.1-5.4,7.1-5.4S33.1,28.6,31.1,32.6z"/> + <path fill="#43A047" d="M16.9,32.6c2,4,7.1,5.4,7.1,5.4s2-5,0-8.9s-7.1-5.4-7.1-5.4S14.9,28.6,16.9,32.6z"/> +</svg> diff --git a/assets/images/icons/biotech.svg b/assets/images/icons/biotech.svg new file mode 100644 index 0000000..ff74791 --- /dev/null +++ b/assets/images/icons/biotech.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#AD1457" d="M36,4c0,9.3-6,13.2-12.8,17.8C16.1,26.5,8,31.8,8,44h4c0-10.1,6.5-14.4,13.4-18.9C32.2,20.6,40,15.4,40,4 H36z"/> + <path fill="#AD1457" d="M38,41H11c-0.6,0-1-0.4-1-1s0.4-1,1-1h27c0.6,0,1,0.4,1,1S38.6,41,38,41z"/> + <path fill="#AD1457" d="M36,37H12c-0.6,0-1-0.4-1-1s0.4-1,1-1h24c0.6,0,1,0.4,1,1S36.6,37,36,37z"/> + <path fill="#AD1457" d="M34,33H14c-0.6,0-1-0.4-1-1s0.4-1,1-1h20c0.6,0,1,0.4,1,1S34.6,33,34,33z"/> + <path fill="#AD1457" d="M29,29H19c-0.6,0-1-0.4-1-1s0.4-1,1-1h10c0.6,0,1,0.4,1,1S29.6,29,29,29z"/> + <path fill="#E91E63" d="M37,9H10C9.4,9,9,8.6,9,8s0.4-1,1-1h27c0.6,0,1,0.4,1,1S37.6,9,37,9z"/> + <path fill="#E91E63" d="M36,13H12c-0.6,0-1-0.4-1-1s0.4-1,1-1h24c0.6,0,1,0.4,1,1S36.6,13,36,13z"/> + <path fill="#E91E63" d="M34,17H14c-0.6,0-1-0.4-1-1s0.4-1,1-1h20c0.6,0,1,0.4,1,1S34.6,17,34,17z"/> + <path fill="#E91E63" d="M29,21H19c-0.6,0-1-0.4-1-1s0.4-1,1-1h10c0.6,0,1,0.4,1,1S29.6,21,29,21z"/> + <path fill="#E91E63" d="M40,44h-4c0-10.1-6.5-14.4-13.4-18.9C15.8,20.6,8,15.4,8,4h4c0,9.3,6,13.2,12.8,17.8 C31.9,26.5,40,31.8,40,44z"/> +</svg> diff --git a/assets/images/icons/bookmark.svg b/assets/images/icons/bookmark.svg new file mode 100644 index 0000000..c2158e2 --- /dev/null +++ b/assets/images/icons/bookmark.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M37,43l-13-6l-13,6V9c0-2.2,1.8-4,4-4h18c2.2,0,4,1.8,4,4V43z"/> +</svg> diff --git a/assets/images/icons/briefcase.svg b/assets/images/icons/briefcase.svg new file mode 100644 index 0000000..094ba81 --- /dev/null +++ b/assets/images/icons/briefcase.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#424242" d="M27,7h-6c-1.7,0-3,1.3-3,3v3h2v-3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v3h2v-3C30,8.3,28.7,7,27,7z"/> + <path fill="#E65100" d="M40,43H8c-2.2,0-4-1.8-4-4V15c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,41.2,42.2,43,40,43z"/> + <path fill="#FF6E40" d="M40,28H8c-2.2,0-4-1.8-4-4v-9c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v9C44,26.2,42.2,28,40,28z"/> + <path fill="#FFF3E0" d="M26,26h-4c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h4c0.6,0,1,0.4,1,1v2C27,25.6,26.6,26,26,26z"/> +</svg> diff --git a/assets/images/icons/broken_link.svg b/assets/images/icons/broken_link.svg new file mode 100644 index 0000000..bc47a29 --- /dev/null +++ b/assets/images/icons/broken_link.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1976D2"> + <path d="M17.5,27c-1.1,1.2-2.7,2-4.5,2h-3c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c1.8,0,3.4,0.8,4.5,2h4.7 c-1.5-3.5-5.1-6-9.2-6h-3C4.5,13,0,17.5,0,23s4.5,10,10,10h3c4.1,0,7.6-2.5,9.2-6H17.5z"/> + <path d="M38,13h-3c-4.1,0-7.6,2.5-9.2,6h4.7c1.1-1.2,2.7-2,4.5-2h3c3.3,0,6,2.7,6,6s-2.7,6-6,6h-3 c-1.8,0-3.4-0.8-4.5-2h-4.7c1.5,3.5,5.1,6,9.2,6h3c5.5,0,10-4.5,10-10S43.5,13,38,13z"/> + </g> + <g fill="#00BCD4"> + <polygon points="19.5,4 16,6 22.1,14.1 23.4,13.3"/> + <polygon points="28.5,4 32,6 25.9,14.1 24.6,13.3"/> + <polygon points="28.5,44 32,42 25.9,33.9 24.6,34.7"/> + <polygon points="19.5,44 16,42 22.1,33.9 23.4,34.7"/> + </g> +</svg> diff --git a/assets/images/icons/bullish.svg b/assets/images/icons/bullish.svg new file mode 100644 index 0000000..74e403d --- /dev/null +++ b/assets/images/icons/bullish.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#4CAF50"> + <rect x="40" y="21" width="4" height="23"/> + <rect x="34" y="28" width="4" height="16"/> + <rect x="28" y="23" width="4" height="21"/> + <rect x="22" y="29" width="4" height="15"/> + <rect x="16" y="32" width="4" height="12"/> + <rect x="10" y="30" width="4" height="14"/> + <rect x="4" y="34" width="4" height="10"/> + </g> + <g fill="#388E3C"> + <polygon points="40.1,9.1 34,15.2 30,11.2 20,21.2 15,16.2 4.6,26.6 7.4,29.4 15,21.8 20,26.8 30,16.8 34,20.8 42.9,11.9"/> + <polygon points="44,8 35,8 44,17"/> + </g> +</svg> diff --git a/assets/images/icons/business.svg b/assets/images/icons/business.svg new file mode 100644 index 0000000..a5aa79d --- /dev/null +++ b/assets/images/icons/business.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#263238"> + <path d="M11,44H9c-0.6,0-1-0.4-1-1v-2h4v2C12,43.6,11.6,44,11,44z"/> + <path d="M39,44h-2c-0.6,0-1-0.4-1-1v-2h4v2C40,43.6,39.6,44,39,44z"/> + </g> + <path fill="#37474F" d="M27,7h-6c-1.7,0-3,1.3-3,3v3h2v-3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v3h2v-3C30,8.3,28.7,7,27,7z"/> + <path fill="#78909C" d="M40,43H8c-2.2,0-4-1.8-4-4V15c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,41.2,42.2,43,40,43z"/> +</svg> diff --git a/assets/images/icons/business_contact.svg b/assets/images/icons/business_contact.svg new file mode 100644 index 0000000..b6a5d61 --- /dev/null +++ b/assets/images/icons/business_contact.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#673AB7" d="M40,7H8c-2.2,0-4,1.8-4,4v26c0,2.2,1.8,4,4,4h5v-1.3c-0.6-0.3-1-1-1-1.7c0-1.1,0.9-2,2-2s2,0.9,2,2 c0,0.7-0.4,1.4-1,1.7V41h18v-1.3c-0.6-0.3-1-1-1-1.7c0-1.1,0.9-2,2-2s2,0.9,2,2c0,0.7-0.4,1.4-1,1.7V41h5c2.2,0,4-1.8,4-4V11 C44,8.8,42.2,7,40,7z"/> + <g fill="#D1C4E9"> + <circle cx="24" cy="18" r="4"/> + <path d="M31,28c0,0-1.9-4-7-4c-5.1,0-7,4-7,4v2h14V28z"/> + </g> +</svg> diff --git a/assets/images/icons/businessman.svg b/assets/images/icons/businessman.svg new file mode 100644 index 0000000..b9666fa --- /dev/null +++ b/assets/images/icons/businessman.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FF9800" points="24,37 19,31 19,25 29,25 29,31"/> + <g fill="#FFA726"> + <circle cx="33" cy="19" r="2"/> + <circle cx="15" cy="19" r="2"/> + </g> + <path fill="#FFB74D" d="M33,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,18.9,33,14.1,33,13z"/> + <path fill="#424242" d="M24,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H24z"/> + <g fill="#784719"> + <circle cx="28" cy="19" r="1"/> + <circle cx="20" cy="19" r="1"/> + </g> + <polygon fill="#fff" points="24,43 19,31 24,32 29,31"/> + <polygon fill="#D32F2F" points="23,35 22.3,39.5 24,43.5 25.7,39.5 25,35 26,34 24,32 22,34"/> + <path fill="#546E7A" d="M29,31L29,31l-5,12l-5-12c0,0-11,2-11,13h32C40,33,29,31,29,31z"/> +</svg> diff --git a/assets/images/icons/businesswoman.svg b/assets/images/icons/businesswoman.svg new file mode 100644 index 0000000..61b9023 --- /dev/null +++ b/assets/images/icons/businesswoman.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="16" y="15" fill="#BF360C" width="16" height="18"/> + <path fill="#78909C" d="M40,44H8c0-11,11-13,11-13h10C29,31,40,33,40,44z"/> + <path fill="#FF9800" d="M24,37c-2.2,0-5-6-5-6v-6h10v6C29,31,26.2,37,24,37z"/> + <path fill="#FFB74D" d="M33,14c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,19.9,33,15.1,33,14z"/> + <path fill="#FF5722" d="M24,4C17.9,4,9,7.4,9,27.3l7,4.7V19l12-7l4,5v15l7-6c0-4-0.7-20-11-20l-1-2H24z"/> + <path fill="#FFB74D" d="M24,38c-4.4,0-5-7-5-7s2.5,4,5,4s5-4,5-4S28.4,38,24,38z"/> + <circle fill="#784719" cx="28" cy="21" r="1"/> + <circle fill="#784719" cx="20" cy="21" r="1"/> +</svg> diff --git a/assets/images/icons/butting_in.svg b/assets/images/icons/butting_in.svg new file mode 100644 index 0000000..6438310 --- /dev/null +++ b/assets/images/icons/butting_in.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#CFD8DC" d="M24,3C12.4,3,3,12.4,3,24c0,11.6,9.4,21,21,21c0.3,0,0.7,0,1-0.1V3.1C24.7,3,24.3,3,24,3z"/> + <path fill="#37474F" d="M25,3.1v41.9c4.1-0.2,7.9-1.5,11-3.7V6.8C32.9,4.6,29.1,3.2,25,3.1z"/> + <path fill="#FFB74D" d="M20.5,13C14.1,13.3,8.9,18.7,9,25.1c0,2.8,1,5.4,2.7,7.5c1.4,1.7,2.3,3.9,2.3,6.1v3.8c3,1.6,6.4,2.5,10,2.5 c0.3,0,0.7,0,1-0.1c0.7,0,1.3-0.1,2-0.2v-9.4c3.6-2.1,6-5.9,6-10.4C33,18.2,27.4,12.7,20.5,13z"/> + <path fill="#FFB74D" d="M29,38.6L25,38v-9h8l-0.7,7C32.1,37.6,30.7,38.8,29,38.6z"/> + <polygon fill="#FFB74D" points="39,29 32,31 31,26 32,22"/> + <circle fill="#784719" cx="29.5" cy="25.5" r="1.5"/> + <path fill="#FF5722" d="M21,12c-7.2,0-13,5.8-13,13c0,7.6,5.1,9,6,13l4-3v-8l5-2l1-4c3.2,0,6-3.9,6-6.1C27.9,13,24.4,12,21,12z"/> + <circle fill="#FFB74D" cx="19" cy="27" r="3"/> + <path fill="#CFD8DC" d="M45,24c0-7.1-3.6-13.4-9-17.2v34.4C41.4,37.4,45,31.1,45,24z"/> + <path fill="#FF9800" d="M20,44.6c1.3,0.2,2.6,0.4,4,0.4c0.3,0,0.7,0,1-0.1c0.7,0,1.3-0.1,2-0.2v-6.5l-7-1V44.6z"/> +</svg> diff --git a/assets/images/icons/cable_release.svg b/assets/images/icons/cable_release.svg new file mode 100644 index 0000000..a209049 --- /dev/null +++ b/assets/images/icons/cable_release.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M34.9,29.1c-2.7-2.7-7.1-2.7-9.8,0l-4,4c-1.7,1.7-4.5,1.7-6.2,0c-1.7-1.7-1.7-4.5,0-6.2l4.5-4.5l-2.8-2.8 l-4.5,4.5c-3.3,3.3-3.3,8.6,0,11.8c3.3,3.3,8.6,3.3,11.8,0l4-4c1.2-1.1,3-1.1,4.2,0c1.1,1.2,1.1,3,0,4.2L27,41.2l2.8,2.8l5.1-5.1 C37.6,36.2,37.6,31.8,34.9,29.1z"/> + <path fill="#0277BD" d="M16.1,22.9L16.1,22.9c-2.8-2.8-2.8-7.3,0-10l6.8-6.8c2.8-2.8,7.3-2.8,10,0l0,0c2.8,2.8,2.8,7.3,0,10 l-6.8,6.8C23.3,25.7,18.9,25.7,16.1,22.9z"/> + <circle fill="#B3E5FC" cx="28" cy="11" r="4"/> +</svg> diff --git a/assets/images/icons/calculator.svg b/assets/images/icons/calculator.svg new file mode 100644 index 0000000..776f178 --- /dev/null +++ b/assets/images/icons/calculator.svg @@ -0,0 +1,29 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#616161" d="M40,16H8v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V16z"/> + <path fill="#424242" d="M36,4H12C9.8,4,8,5.8,8,8v9h32V8C40,5.8,38.2,4,36,4z"/> + <path fill="#9CCC65" d="M36,14H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v5C37,13.6,36.6,14,36,14z"/> + <g fill="#33691E"> + <rect x="33" y="10" width="2" height="2"/> + <rect x="29" y="10" width="2" height="2"/> + </g> + <path fill="#FF5252" d="M36,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,22.6,36.6,23,36,23z"/> + <g fill="#E0E0E0"> + <path d="M15,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,22.6,15.6,23,15,23z"/> + <path d="M22,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,22.6,22.6,23,22,23z"/> + <path d="M29,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,22.6,29.6,23,29,23z"/> + <path d="M15,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,28.6,15.6,29,15,29z"/> + <path d="M22,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,28.6,22.6,29,22,29z"/> + <path d="M29,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,28.6,29.6,29,29,29z"/> + <path d="M15,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,34.6,15.6,35,15,35z"/> + <path d="M22,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,34.6,22.6,35,22,35z"/> + <path d="M29,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,34.6,29.6,35,29,35z"/> + <path d="M15,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,40.6,15.6,41,15,41z"/> + <path d="M22,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,40.6,22.6,41,22,41z"/> + <path d="M29,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,40.6,29.6,41,29,41z"/> + </g> + <g fill="#BDBDBD"> + <path d="M36,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,28.6,36.6,29,36,29z"/> + <path d="M36,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,34.6,36.6,35,36,35z"/> + <path d="M36,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,40.6,36.6,41,36,41z"/> + </g> +</svg> diff --git a/assets/images/icons/calendar.svg b/assets/images/icons/calendar.svg new file mode 100644 index 0000000..f5332b1 --- /dev/null +++ b/assets/images/icons/calendar.svg @@ -0,0 +1,26 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#CFD8DC" d="M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z"/> + <path fill="#F44336" d="M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z"/> + <g fill="#B71C1C"> + <circle cx="33" cy="10" r="3"/> + <circle cx="15" cy="10" r="3"/> + </g> + <g fill="#B0BEC5"> + <path d="M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z"/> + <path d="M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z"/> + </g> + <g fill="#90A4AE"> + <rect x="13" y="20" width="4" height="4"/> + <rect x="19" y="20" width="4" height="4"/> + <rect x="25" y="20" width="4" height="4"/> + <rect x="31" y="20" width="4" height="4"/> + <rect x="13" y="26" width="4" height="4"/> + <rect x="19" y="26" width="4" height="4"/> + <rect x="25" y="26" width="4" height="4"/> + <rect x="31" y="26" width="4" height="4"/> + <rect x="13" y="32" width="4" height="4"/> + <rect x="19" y="32" width="4" height="4"/> + <rect x="25" y="32" width="4" height="4"/> + <rect x="31" y="32" width="4" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/call_transfer.svg b/assets/images/icons/call_transfer.svg new file mode 100644 index 0000000..5ed2675 --- /dev/null +++ b/assets/images/icons/call_transfer.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#009688" d="M39.2,8.4l-1.8,1.8c-6.3,6.5-5.4,22,0,27.6l1.8,1.8c0.5,0.5,1.3,0.5,1.8,0l3.6-3.7c0.5-0.5,0.5-1.3,0-1.8 l-3.4-3.4h-4.8c-1.3-1.3-1.3-12.1,0-13.4h4.8l3.3-3.4c0.5-0.5,0.5-1.3,0-1.8L41,8.4C40.5,7.9,39.7,7.9,39.2,8.4z"/> + <path fill="#009688" d="M11.2,8.4l-1.8,1.8c-6.3,6.5-5.4,22,0,27.6l1.8,1.8c0.5,0.5,1.3,0.5,1.8,0l3.6-3.7c0.5-0.5,0.5-1.3,0-1.8 l-3.4-3.4H8.5c-1.3-1.3-1.3-12.1,0-13.4h4.8l3.3-3.4c0.5-0.5,0.5-1.3,0-1.8L13,8.4C12.5,7.9,11.7,7.9,11.2,8.4z"/> + <g fill="#2196F3"> + <polygon points="25.3,18.6 30.7,24 25.3,29.4"/> + <rect x="16" y="22" width="11" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/callback.svg b/assets/images/icons/callback.svg new file mode 100644 index 0000000..668b568 --- /dev/null +++ b/assets/images/icons/callback.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2196F3" d="M26.4,33.9c0,0,4-2.6,4.8-3c0.8-0.4,1.7-0.6,2.2-0.2c0.8,0.5,7.5,4.9,8.1,5.3c0.6,0.4,0.8,1.5,0.1,2.6 c-0.8,1.1-4.3,5.5-5.8,5.4c-1.5,0-8.4,0.4-20.3-11.4C3.6,20.7,4,13.8,4,12.3c0-1.5,4.3-5.1,5.4-5.8c1.1-0.8,2.2-0.5,2.6,0.1 c0.4,0.6,4.8,7.3,5.3,8.1c0.3,0.5,0.2,1.4-0.2,2.2c-0.4,0.8-3,4.8-3,4.8s0.7,2.8,5,7.2C23.5,33.2,26.4,33.9,26.4,33.9z"/> + <g fill="#3F51B5"> + <path d="M35,9H25v4h10c1.1,0,2,0.9,2,2v10h4V15C41,11.7,38.3,9,35,9z"/> + <polygon points="28,16 21.3,11 28,6"/> + </g> +</svg> diff --git a/assets/images/icons/camcorder.svg b/assets/images/icons/camcorder.svg new file mode 100644 index 0000000..40a3430 --- /dev/null +++ b/assets/images/icons/camcorder.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#607D8B" d="M20,42H10c-2.2,0-4-1.8-4-4V15c0-5,4-9,9-9h0c5,0,9,4,9,9v23C24,40.2,22.2,42,20,42z"/> + <circle fill="#455A64" cx="15" cy="15" r="7"/> + <circle fill="#42A5F5" cx="15" cy="15" r="5.2"/> + <path fill="#90CAF9" d="M18.3,13c-0.8-0.9-2-1.5-3.3-1.5S12.6,12,11.7,13c-0.3,0.4-0.3,0.9,0.1,1.2c0.4,0.3,0.9,0.3,1.2-0.1 c1-1.2,2.9-1.2,3.9,0c0.2,0.2,0.4,0.3,0.7,0.3c0.2,0,0.4-0.1,0.6-0.2C18.6,13.9,18.6,13.3,18.3,13z"/> + <path fill="#607D8B" d="M40,31H28c-1.1,0-2-0.9-2-2V19c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2v10C42,30.1,41.1,31,40,31z"/> + <rect x="24" y="19" fill="#455A64" width="2" height="10"/> + <rect x="28" y="19" fill="#03A9F4" width="12" height="10"/> + <polygon fill="#4FC3F7" points="33,22.2 29,28 37,28"/> + <g fill="#B3E5FC"> + <circle cx="37.5" cy="21.5" r="1"/> + <polygon points="36,24.2 33,28 39,28"/> + </g> + <circle fill="#455A64" cx="15" cy="35" r="3"/> + <circle fill="#F44336" cx="15" cy="35" r="2"/> +</svg> diff --git a/assets/images/icons/camcorder_pro.svg b/assets/images/icons/camcorder_pro.svg new file mode 100644 index 0000000..888e303 --- /dev/null +++ b/assets/images/icons/camcorder_pro.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="27" y="8" fill="#37474F" width="10" height="4"/> + <path fill="#607D8B" d="M27,8h-9.7c-1.5,0-2.8,0.8-3.5,2.1l-3.3,6L14,18l3.3-6H27v7.2h4V12C31,9.8,29.2,8,27,8z"/> + <path fill="#607D8B" d="M30,40H6c-2.2,0-4-1.8-4-4V20c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v16C34,38.2,32.2,40,30,40z"/> + <path fill="#607D8B" d="M38,35l5,5h3V18h-3l-5,5V35z"/> + <path fill="#546E7A" d="M22,35H8c-1.1,0-2-0.9-2-2V23c0-1.1,0.9-2,2-2h14c1.1,0,2,0.9,2,2v10C24,34.1,23.1,35,22,35z"/> + <rect x="34" y="23" fill="#455A64" width="4" height="12"/> + <path fill="#263238" d="M41,13h-4c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h4c1.7,0,3,1.3,3,3v0C44,11.7,42.7,13,41,13z"/> + <rect x="8" y="23" fill="#03A9F4" width="14" height="10"/> + <polygon fill="#4FC3F7" points="13.5,25.5 9,32 18,32"/> + <g fill="#B3E5FC"> + <circle cx="19.5" cy="25.5" r="1.5"/> + <polygon points="17.5,27.6 14,32 21,32"/> + </g> +</svg> diff --git a/assets/images/icons/camera.svg b/assets/images/icons/camera.svg new file mode 100644 index 0000000..02760fc --- /dev/null +++ b/assets/images/icons/camera.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#512DA8" d="M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z"/> + <path fill="#8667C4" d="M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z"/> + <path fill="#5E35B1" d="M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z"/> + <circle fill="#512DA8" cx="24" cy="26" r="12"/> + <circle fill="#B388FF" cx="24" cy="26" r="9"/> + <path fill="#C7A7FF" d="M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z"/> + <ellipse fill="#8667C4" cx="11" cy="13.5" rx="2" ry="1.5"/> +</svg> diff --git a/assets/images/icons/camera_addon.svg b/assets/images/icons/camera_addon.svg new file mode 100644 index 0000000..ab33270 --- /dev/null +++ b/assets/images/icons/camera_addon.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#512DA8" d="M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z"/> + <path fill="#8667C4" d="M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z"/> + <path fill="#5E35B1" d="M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z"/> + <circle fill="#512DA8" cx="24" cy="26" r="12"/> + <circle fill="#B388FF" cx="24" cy="26" r="9"/> + <path fill="#C7A7FF" d="M28.8,23c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,24.4,29.3,23.5,28.8,23z"/> + <ellipse fill="#8667C4" cx="11" cy="13.5" rx="2" ry="1.5"/> + <path fill="#8BC34A" d="M48,33.8c0-1.3-1.1-2.4-2.4-2.4H42c-0.4,0-0.7-0.5-0.4-0.8c0.4-0.6,0.5-1.3,0.4-2.1 c-0.2-1.2-1.1-2.1-2.3-2.4C37.7,25.7,36,27.1,36,29c0,0.6,0.2,1.1,0.4,1.6c0.2,0.4,0,0.8-0.5,0.8h-3.6c-1.3,0-2.4,1.1-2.4,2.4V37 c0,0.4,0.5,0.7,0.8,0.4c0.6-0.4,1.3-0.5,2.1-0.4c1.2,0.2,2.1,1.1,2.4,2.3c0.4,1.9-1.1,3.6-2.9,3.6c-0.6,0-1.1-0.2-1.6-0.4 c-0.4-0.2-0.8,0-0.8,0.5v2.6c0,1.3,1.1,2.4,2.4,2.4h13.2c1.3,0,2.4-1.1,2.4-2.4V33.8z"/> +</svg> diff --git a/assets/images/icons/camera_identification.svg b/assets/images/icons/camera_identification.svg new file mode 100644 index 0000000..6833634 --- /dev/null +++ b/assets/images/icons/camera_identification.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#512DA8" d="M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z"/> + <path fill="#8667C4" d="M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z"/> + <path fill="#5E35B1" d="M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z"/> + <circle fill="#512DA8" cx="24" cy="26" r="12"/> + <circle fill="#B388FF" cx="24" cy="26" r="9"/> + <g fill="#616161"> + <rect x="42.2" y="38.3" transform="matrix(.707 -.707 .707 .707 -18.002 43.46)" width="2.4" height="10.4"/> + <circle cx="35" cy="35" r="10"/> + </g> + <rect x="43.9" y="42.4" transform="matrix(.707 -.707 .707 .707 -18.709 45.167)" fill="#37474F" width="2.4" height="5.6"/> + <circle fill="#64B5F6" cx="35" cy="35" r="8"/> + <path fill="#BBDEFB" d="M39.3,31.4c-1.1-1.3-2.6-2-4.2-2s-3.2,0.7-4.2,2c-0.2,0.3-0.2,0.6,0.1,0.9c0.3,0.2,0.6,0.2,0.9-0.1 c0.8-1,2-1.5,3.3-1.5s2.5,0.6,3.3,1.5c0.1,0.1,0.3,0.2,0.5,0.2c0.1,0,0.3,0,0.4-0.1C39.5,32.1,39.5,31.7,39.3,31.4z"/> + <path fill="#C7A7FF" d="M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z"/> + <ellipse fill="#8667C4" cx="11" cy="13.5" rx="2" ry="1.5"/> +</svg> diff --git a/assets/images/icons/cancel.svg b/assets/images/icons/cancel.svg new file mode 100644 index 0000000..22ee42a --- /dev/null +++ b/assets/images/icons/cancel.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#D50000" d="M24,6C14.1,6,6,14.1,6,24s8.1,18,18,18s18-8.1,18-18S33.9,6,24,6z M24,10c3.1,0,6,1.1,8.4,2.8L12.8,32.4 C11.1,30,10,27.1,10,24C10,16.3,16.3,10,24,10z M24,38c-3.1,0-6-1.1-8.4-2.8l19.6-19.6C36.9,18,38,20.9,38,24C38,31.7,31.7,38,24,38 z"/> +</svg> diff --git a/assets/images/icons/candle_sticks.svg b/assets/images/icons/candle_sticks.svg new file mode 100644 index 0000000..6551651 --- /dev/null +++ b/assets/images/icons/candle_sticks.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#546E7A"> + <rect x="38" y="4" width="2" height="20"/> + <rect x="15" y="7" width="2" height="17"/> + <rect x="8" y="27" width="2" height="17"/> + <rect x="28" y="19" width="2" height="22"/> + </g> + <path fill="#4CAF50" d="M36,7h6c1.1,0,2,0.9,2,2v10c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2V9C34,7.9,34.9,7,36,7z"/> + <path fill="#4CAF50" d="M13,10h6c1.1,0,2,0.9,2,2v7c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2v-7C11,10.9,11.9,10,13,10z"/> + <path fill="#F44336" d="M6,30h6c1.1,0,2,0.9,2,2v7c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-7C4,30.9,4.9,30,6,30z"/> + <path fill="#F44336" d="M26,22h6c1.1,0,2,0.9,2,2v12c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2V24C24,22.9,24.9,22,26,22z"/> +</svg> diff --git a/assets/images/icons/capacitor.svg b/assets/images/icons/capacitor.svg new file mode 100644 index 0000000..c4d8c36 --- /dev/null +++ b/assets/images/icons/capacitor.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FF9800"> + <rect y="27" width="25" height="4"/> + <rect y="17" width="25" height="4"/> + </g> + <g fill="#3F51B5"> + <path d="M46,35c1.1,0,2-0.9,2-2V15c0-1.1-0.9-2-2-2H27v22H46z"/> + <path d="M21,13c-1.1,0-2,0.9-2,2v18c0,1.1,0.9,2,2,2h2V13H21z"/> + </g> + <path fill="#303F9F" d="M25,33c1.1,0,2,0.9,2,2V13c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2v22C23,33.9,23.9,33,25,33z"/> +</svg> diff --git a/assets/images/icons/cell_phone.svg b/assets/images/icons/cell_phone.svg new file mode 100644 index 0000000..6fb9b38 --- /dev/null +++ b/assets/images/icons/cell_phone.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#546E7A" d="M12,40V10h20c2.2,0,4,1.8,4,4v26c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z"/> + <path fill="#4FC3F7" d="M32,13H16c-0.6,0-1,0.4-1,1v8c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1v-8C33,13.4,32.6,13,32,13z"/> + <path fill="#B3E5FC" d="M19,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,29.6,19.6,30,19,30z"/> + <path fill="#B3E5FC" d="M25,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,29.6,25.6,30,25,30z"/> + <path fill="#B3E5FC" d="M31,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,29.6,31.6,30,31,30z"/> + <path fill="#B3E5FC" d="M19,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,34.6,19.6,35,19,35z"/> + <path fill="#B3E5FC" d="M25,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,34.6,25.6,35,25,35z"/> + <path fill="#B3E5FC" d="M31,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,34.6,31.6,35,31,35z"/> + <path fill="#B3E5FC" d="M19,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,39.6,19.6,40,19,40z"/> + <path fill="#B3E5FC" d="M25,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,39.6,25.6,40,25,40z"/> + <path fill="#B3E5FC" d="M31,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,39.6,31.6,40,31,40z"/> + <path fill="#37474F" d="M16,10h-4V4c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2V10z"/> +</svg> diff --git a/assets/images/icons/charge_battery.svg b/assets/images/icons/charge_battery.svg new file mode 100644 index 0000000..1c706bf --- /dev/null +++ b/assets/images/icons/charge_battery.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#8BC34A"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> + <polygon fill="#FFEB3B" points="30,24 24.5,24 26.7,13 18,26 23.5,26 21.3,37"/> +</svg> diff --git a/assets/images/icons/checkmark.svg b/assets/images/icons/checkmark.svg new file mode 100644 index 0000000..044cc1e --- /dev/null +++ b/assets/images/icons/checkmark.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#43A047" points="40.6,12.1 17,35.7 7.4,26.1 4.6,29 17,41.3 43.4,14.9"/> +</svg> diff --git a/assets/images/icons/circuit.svg b/assets/images/icons/circuit.svg new file mode 100644 index 0000000..64b3262 --- /dev/null +++ b/assets/images/icons/circuit.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z"/> + <g fill="#FFC107"> + <path d="M6.6,8l6,6c-0.4,0.6-0.6,1.3-0.6,2c0,2.2,1.8,4,4,4s4-1.8,4-4s-1.8-4-4-4c-0.7,0-1.4,0.2-2,0.6l-6-6 C7.4,6.9,6.9,7.4,6.6,8z M16,14.5c0.8,0,1.5,0.7,1.5,1.5s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5S15.2,14.5,16,14.5z"/> + <path d="M41.4,40l-6-6c0.4-0.6,0.6-1.3,0.6-2c0-2.2-1.8-4-4-4s-4,1.8-4,4s1.8,4,4,4c0.7,0,1.4-0.2,2-0.6l6,6 C40.6,41.1,41.1,40.6,41.4,40z M32,33.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S32.8,33.5,32,33.5z"/> + <path d="M16,36c2.2,0,4-1.8,4-4c0-0.7-0.2-1.4-0.6-2L30,19.4c0.6,0.4,1.3,0.6,2,0.6c2.2,0,4-1.8,4-4s-1.8-4-4-4 s-4,1.8-4,4c0,0.7,0.2,1.4,0.6,2L18,28.6c-0.6-0.4-1.3-0.6-2-0.6c-2.2,0-4,1.8-4,4S13.8,36,16,36z M32,14.5c0.8,0,1.5,0.7,1.5,1.5 s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5S31.2,14.5,32,14.5z M16,30.5c0.8,0,1.5,0.7,1.5,1.5s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5 S15.2,30.5,16,30.5z"/> + </g> +</svg> diff --git a/assets/images/icons/clapperboard.svg b/assets/images/icons/clapperboard.svg new file mode 100644 index 0000000..c6851ab --- /dev/null +++ b/assets/images/icons/clapperboard.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M43.4,8.3L4,15l-0.3-2c-0.4-2.2,1.1-4.2,3.3-4.6l31.6-5.3c2.2-0.4,4.2,1.1,4.6,3.3L43.4,8.3z"/> + <path fill="#3F51B5" d="M40,41H8c-2.2,0-4-1.8-4-4V15h40v22C44,39.2,42.2,41,40,41z"/> + <g fill="#9FA8DA"> + <polygon points="18.8,6.4 23.7,11.7 27.7,11 22.7,5.7"/> + <polygon points="10.9,7.7 15.8,13 19.8,12.3 14.8,7.1"/> + <polygon points="26.7,5.1 31.6,10.3 35.5,9.7 30.6,4.4"/> + <polygon points="34.5,3.8 39.5,9 43.4,8.3 38.5,3.1"/> + </g> + <circle fill="#9FA8DA" cx="7.5" cy="11.5" r="1.5"/> + <g fill="#9FA8DA"> + <polygon points="40,15 36,21 40,21 44,15"/> + <polygon points="32,15 28,21 32,21 36,15"/> + <polygon points="24,15 20,21 24,21 28,15"/> + <polygon points="16,15 12,21 16,21 20,15"/> + <polygon points="8,15 4,21 8,21 12,15"/> + </g> +</svg> diff --git a/assets/images/icons/clear_filters.svg b/assets/images/icons/clear_filters.svg new file mode 100644 index 0000000..978f588 --- /dev/null +++ b/assets/images/icons/clear_filters.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#F57C00" points="29,23 19,23 7,9 41,9"/> + <g fill="#FF9800"> + <polygon points="29,38 19,44 19,23 29,23"/> + <path d="M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z"/> + </g> + <circle fill="#F44336" cx="38" cy="38" r="10"/> + <rect x="32" y="36" fill="#fff" width="12" height="4"/> +</svg> diff --git a/assets/images/icons/clock.svg b/assets/images/icons/clock.svg new file mode 100644 index 0000000..e84d2c8 --- /dev/null +++ b/assets/images/icons/clock.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#00ACC1" cx="24" cy="24" r="20"/> + <circle fill="#eee" cx="24" cy="24" r="16"/> + <rect x="23" y="11" width="2" height="13"/> + <rect x="26.1" y="22.7" transform="matrix(-.707 .707 -.707 -.707 65.787 27.25)" width="2.3" height="9.2"/> + <circle cx="24" cy="24" r="2"/> + <circle fill="#00ACC1" cx="24" cy="24" r="1"/> +</svg> diff --git a/assets/images/icons/close_up_mode.svg b/assets/images/icons/close_up_mode.svg new file mode 100644 index 0000000..7bc47e1 --- /dev/null +++ b/assets/images/icons/close_up_mode.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2E7D32" d="M5,24c0,18.9,14.8,19,17,19s4,0,4,0S24.1,26.5,5,24z"/> + <rect x="22" y="26" fill="#388E3C" width="4" height="17"/> + <path fill="#C62828" d="M34,16c0,5.1-5.2,8.2-8,8.2s-2-3.1-2-8.2s5-9.2,5-9.2S34,10.9,34,16z"/> + <path fill="#C62828" d="M14,16c0,5.1,5.2,8.2,8,8.2s2-3.1,2-8.2s-5-9.2-5-9.2S14,10.9,14,16z"/> + <path fill="#E53935" d="M24,27c-2.2-1.6-1.9-4.5,2.4-8.8C30.8,13.8,32,7,32,7s5,3.4,5,9C37,21.9,31.3,27,24,27z"/> + <path fill="#E53935" d="M24,27c2.2-1.6,1.9-4.5-2.4-8.8C17.2,13.8,16,7,16,7s-5,3.4-5,9C11,21.9,16.7,27,24,27z"/> + <path fill="#F44336" d="M30,16c0,6.1-2.7,11-6,11s-6-4.9-6-11s6-11,6-11S30,9.9,30,16z"/> + <path fill="#4CAF50" d="M22,43c0,0,1.8,0,4,0s17-0.1,17-19C23.9,26.5,22,43,22,43z"/> +</svg> diff --git a/assets/images/icons/cloth.svg b/assets/images/icons/cloth.svg new file mode 100644 index 0000000..fe4c55d --- /dev/null +++ b/assets/images/icons/cloth.svg @@ -0,0 +1,66 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF5722" d="M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z"/> + <g fill="#BF360C"> + <rect x="6" y="35" width="36" height="2"/> + <rect x="6" y="31" width="36" height="2"/> + <path d="M6.1,39c0.2,0.8,0.6,1.5,1.2,2h33.2c0.6-0.5,1-1.2,1.2-2H6.1z"/> + <path d="M6.1,9h35.7c-0.2-0.8-0.6-1.5-1.2-2H7.4C6.8,7.5,6.3,8.2,6.1,9z"/> + <rect x="6" y="23" width="36" height="2"/> + <rect x="6" y="27" width="36" height="2"/> + <rect x="6" y="15" width="36" height="2"/> + <rect x="6" y="11" width="36" height="2"/> + <rect x="6" y="19" width="36" height="2"/> + </g> + <g fill="#FF8A65"> + <rect x="27" y="6" width="2" height="5"/> + <rect x="27" y="13" width="2" height="6"/> + <rect x="27" y="29" width="2" height="6"/> + <rect x="31" y="6" width="2" height="1"/> + <rect x="19" y="29" width="2" height="6"/> + <rect x="31" y="9" width="2" height="6"/> + <rect x="23" y="6" width="2" height="1"/> + <rect x="23" y="25" width="2" height="6"/> + <rect x="23" y="9" width="2" height="6"/> + <rect x="19" y="21" width="2" height="6"/> + <rect x="23" y="17" width="2" height="6"/> + <rect x="23" y="33" width="2" height="6"/> + <rect x="27" y="21" width="2" height="6"/> + <rect x="39" y="33" width="2" height="6"/> + <rect x="39" y="17" width="2" height="6"/> + <rect x="39" y="25" width="2" height="6"/> + <path d="M39,6.1V7h1.6C40.2,6.6,39.6,6.3,39,6.1z"/> + <rect x="31" y="17" width="2" height="6"/> + <path d="M40.6,41H39v0.9C39.6,41.7,40.2,41.4,40.6,41z"/> + <rect x="35" y="13" width="2" height="6"/> + <rect x="31" y="33" width="2" height="6"/> + <rect x="35" y="29" width="2" height="6"/> + <rect x="39" y="9" width="2" height="6"/> + <rect x="35" y="21" width="2" height="6"/> + <rect x="31" y="25" width="2" height="6"/> + <rect x="35" y="37" width="2" height="5"/> + <rect x="35" y="6" width="2" height="5"/> + <rect x="31" y="41" width="2" height="1"/> + <rect x="23" y="41" width="2" height="1"/> + <rect x="27" y="37" width="2" height="5"/> + <rect x="19" y="37" width="2" height="5"/> + <rect x="7" y="17" width="2" height="6"/> + <path d="M9,41H7.4c0.5,0.4,1,0.7,1.6,0.9V41z"/> + <path d="M7.4,7H9V6.1C8.4,6.3,7.8,6.6,7.4,7z"/> + <rect x="7" y="33" width="2" height="6"/> + <rect x="7" y="25" width="2" height="6"/> + <rect x="7" y="9" width="2" height="6"/> + <rect x="11" y="29" width="2" height="6"/> + <rect x="15" y="17" width="2" height="6"/> + <rect x="15" y="33" width="2" height="6"/> + <rect x="15" y="9" width="2" height="6"/> + <rect x="15" y="6" width="2" height="1"/> + <rect x="19" y="6" width="2" height="5"/> + <rect x="15" y="25" width="2" height="6"/> + <rect x="15" y="41" width="2" height="1"/> + <rect x="11" y="21" width="2" height="6"/> + <rect x="11" y="6" width="2" height="5"/> + <rect x="11" y="37" width="2" height="5"/> + <rect x="19" y="13" width="2" height="6"/> + <rect x="11" y="13" width="2" height="6"/> + </g> +</svg> diff --git a/assets/images/icons/collaboration.svg b/assets/images/icons/collaboration.svg new file mode 100644 index 0000000..653c08c --- /dev/null +++ b/assets/images/icons/collaboration.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#1565C0" d="M25,22h13l6,6V11c0-2.2-1.8-4-4-4H25c-2.2,0-4,1.8-4,4v7C21,20.2,22.8,22,25,22z"/> + <path fill="#2196F3" d="M23,19H10l-6,6V8c0-2.2,1.8-4,4-4h15c2.2,0,4,1.8,4,4v7C27,17.2,25.2,19,23,19z"/> + <g fill="#FFA726"> + <circle cx="12" cy="31" r="5"/> + <circle cx="36" cy="31" r="5"/> + </g> + <g fill="#607D8B"> + <path d="M20,42c0,0-2.2-4-8-4s-8,4-8,4v2h16V42z"/> + <path d="M44,42c0,0-2.2-4-8-4s-8,4-8,4v2h16V42z"/> + </g> +</svg> diff --git a/assets/images/icons/collapse.svg b/assets/images/icons/collapse.svg new file mode 100644 index 0000000..8ce1c0f --- /dev/null +++ b/assets/images/icons/collapse.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#2196F3" points="5,30.9 8.1,34 24,18.1 39.9,34 43,30.9 24,12"/> +</svg> diff --git a/assets/images/icons/collect.svg b/assets/images/icons/collect.svg new file mode 100644 index 0000000..e8425e8 --- /dev/null +++ b/assets/images/icons/collect.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#009688"> + <rect x="22" y="35" width="4" height="11"/> + <polygon points="24,29.6 31,38 17,38"/> + </g> + <g fill="#009688"> + <rect x="22" y="2" width="4" height="11"/> + <polygon points="24,18.4 17,10 31,10"/> + </g> + <g fill="#009688"> + <rect x="2" y="22" width="11" height="4"/> + <polygon points="18.4,24 10,31 10,17"/> + </g> + <g fill="#009688"> + <rect x="35" y="22" width="11" height="4"/> + <polygon points="29.6,24 38,17 38,31"/> + </g> + <circle fill="#F44336" cx="24" cy="24" r="3"/> +</svg> diff --git a/assets/images/icons/combo_chart.svg b/assets/images/icons/combo_chart.svg new file mode 100644 index 0000000..0c1362b --- /dev/null +++ b/assets/images/icons/combo_chart.svg @@ -0,0 +1,17 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <rect x="37" y="18" width="6" height="24"/> + <rect x="29" y="26" width="6" height="16"/> + <rect x="21" y="22" width="6" height="20"/> + <rect x="13" y="32" width="6" height="10"/> + <rect x="5" y="28" width="6" height="14"/> + </g> + <g fill="#3F51B5"> + <circle cx="8" cy="16" r="3"/> + <circle cx="16" cy="18" r="3"/> + <circle cx="24" cy="11" r="3"/> + <circle cx="32" cy="13" r="3"/> + <circle cx="40" cy="9" r="3"/> + <polygon points="39.1,7.2 31.8,10.9 23.5,8.8 15.5,15.8 8.5,14.1 7.5,17.9 16.5,20.2 24.5,13.2 32.2,15.1 40.9,10.8"/> + </g> +</svg> diff --git a/assets/images/icons/comments.svg b/assets/images/icons/comments.svg new file mode 100644 index 0000000..c823ffa --- /dev/null +++ b/assets/images/icons/comments.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8BC34A" d="M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z"/> +</svg> diff --git a/assets/images/icons/compact_camera.svg b/assets/images/icons/compact_camera.svg new file mode 100644 index 0000000..c705892 --- /dev/null +++ b/assets/images/icons/compact_camera.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#607D8B" d="M40,39H8c-2.2,0-4-1.8-4-4V13c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v22C44,37.2,42.2,39,40,39z"/> + <circle fill="#455A64" cx="29" cy="24" r="12"/> + <circle fill="#42A5F5" cx="29" cy="24" r="9"/> + <path fill="#90CAF9" d="M33.8,21c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C34.2,22.4,34.3,21.5,33.8,21z"/> + <rect x="8" y="13" fill="#ADD8FB" width="6" height="3"/> +</svg> diff --git a/assets/images/icons/conference_call.svg b/assets/images/icons/conference_call.svg new file mode 100644 index 0000000..08aea61 --- /dev/null +++ b/assets/images/icons/conference_call.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#FFA726" cx="12" cy="21" r="5"/> + <g fill="#455A64"> + <path d="M2,34.7c0,0,2.8-6.3,10-6.3s10,6.3,10,6.3V38H2V34.7z"/> + <path d="M46,34.7c0,0-2.8-6.3-10-6.3s-10,6.3-10,6.3V38h20V34.7z"/> + </g> + <circle fill="#FFB74D" cx="24" cy="17" r="6"/> + <path fill="#607D8B" d="M36,34.1c0,0-3.3-7.5-12-7.5s-12,7.5-12,7.5V38h24V34.1z"/> + <circle fill="#FFA726" cx="36" cy="21" r="5"/> + <circle fill="#FFA726" cx="12" cy="21" r="5"/> + <circle fill="#FFA726" cx="36" cy="21" r="5"/> +</svg> diff --git a/assets/images/icons/contacts.svg b/assets/images/icons/contacts.svg new file mode 100644 index 0000000..517a851 --- /dev/null +++ b/assets/images/icons/contacts.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF7043" d="M38,44H12V4h26c2.2,0,4,1.8,4,4v32C42,42.2,40.2,44,38,44z"/> + <path fill="#BF360C" d="M10,4h2v40h-2c-2.2,0-4-1.8-4-4V8C6,5.8,7.8,4,10,4z"/> + <g fill="#AB300B"> + <circle cx="26" cy="20" r="4"/> + <path d="M33,30c0,0-1.9-4-7-4c-5.1,0-7,4-7,4v2h14V30z"/> + </g> +</svg> diff --git a/assets/images/icons/copyleft.svg b/assets/images/icons/copyleft.svg new file mode 100644 index 0000000..4362064 --- /dev/null +++ b/assets/images/icons/copyleft.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <path fill="#E1BEE7" d="M19.3,28.1c0.3,1.3,0.2,4.1,4.6,4.1c0.9,0,4.8,0.2,4.7-7.2v-1.6c0-6.7-3.2-7.2-4.8-7.2 c-2.3,0-4.2,0.6-4.5,4.3h-4.8c0.1-1.2,0.8-8.2,9.3-8.2c4.2,0,9.7,2.5,9.7,11.2V25c0,9.6-6.5,11.2-9.6,11.2c-3.7,0-8.7-1.6-9.3-8.1 H19.3z"/> +</svg> diff --git a/assets/images/icons/copyright.svg b/assets/images/icons/copyright.svg new file mode 100644 index 0000000..f275749 --- /dev/null +++ b/assets/images/icons/copyright.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <path fill="#E1BEE7" d="M33.5,28.1c-0.6,6.4-5.6,8.1-9.3,8.1c-3.1,0-9.6-1.6-9.6-11.2v-1.5c0-8.7,5.5-11.2,9.7-11.2 c8.5,0,9.2,7,9.3,8.2h-4.8c-0.3-3.6-2.2-4.3-4.5-4.3c-1.6,0-4.8,0.5-4.8,7.2V25c-0.1,7.5,3.8,7.2,4.7,7.2c4.3,0,4.3-2.9,4.6-4.1 H33.5z"/> +</svg> diff --git a/assets/images/icons/crystal_oscillator.svg b/assets/images/icons/crystal_oscillator.svg new file mode 100644 index 0000000..d0786c2 --- /dev/null +++ b/assets/images/icons/crystal_oscillator.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FF9800"> + <rect x="3" y="28" width="26" height="4"/> + <rect x="3" y="16" width="26" height="4"/> + </g> + <path fill="#2196F3" d="M43,11H20v26h23c1.1,0,2-0.9,2-2V13C45,11.9,44.1,11,43,11z"/> + <path fill="#64B5F6" d="M20,9h-2v30h2c1.1,0,2-0.9,2-2V11C22,9.9,21.1,9,20,9z"/> +</svg> diff --git a/assets/images/icons/currency_exchange.svg b/assets/images/icons/currency_exchange.svg new file mode 100644 index 0000000..be50ba9 --- /dev/null +++ b/assets/images/icons/currency_exchange.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#3F51B5" cx="18" cy="18" r="15"/> + <path fill="#FFF59D" d="M20.3,16v1.7h-3.8v1.4h3.8v1.7h-3.8c0,0.6,0.1,1.2,0.3,1.6c0.2,0.4,0.4,0.8,0.7,1c0.3,0.3,0.7,0.4,1.1,0.6 c0.4,0.1,0.9,0.2,1.4,0.2c0.4,0,0.7,0,1.1-0.1c0.4-0.1,0.7-0.1,1-0.3l0.4,2.7c-0.4,0.1-0.9,0.2-1.4,0.2c-0.5,0.1-1,0.1-1.5,0.1 c-0.9,0-1.8-0.1-2.6-0.4c-0.8-0.2-1.5-0.6-2-1.1c-0.6-0.5-1-1.1-1.4-1.9c-0.3-0.7-0.5-1.6-0.5-2.6h-1.9v-1.7h1.9v-1.4h-1.9V16h1.9 c0.1-1,0.3-1.8,0.6-2.6c0.4-0.7,0.8-1.4,1.4-1.9c0.6-0.5,1.3-0.9,2.1-1.1c0.8-0.3,1.7-0.4,2.6-0.4c0.4,0,0.9,0,1.3,0.1 c0.4,0.1,0.9,0.1,1.3,0.3l-0.4,2.7c-0.3-0.1-0.6-0.2-1-0.3c-0.4-0.1-0.7-0.1-1.1-0.1c-0.5,0-1,0.1-1.4,0.2c-0.4,0.1-0.8,0.3-1,0.6 c-0.3,0.3-0.5,0.6-0.7,1s-0.3,0.9-0.3,1.5H20.3z"/> + <circle fill="#4CAF50" cx="30" cy="30" r="15"/> + <path fill="#fff" d="M28.4,27c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.2,0.4,0.4,0.7,0.5c0.3,0.2,0.7,0.3,1.1,0.5c0.7,0.3,1.4,0.6,2,0.9 c0.6,0.3,1.1,0.7,1.5,1.1c0.4,0.4,0.8,0.9,1,1.4c0.2,0.5,0.4,1.2,0.4,1.9c0,0.7-0.1,1.3-0.3,1.8c-0.2,0.5-0.5,1-0.9,1.4 s-0.9,0.7-1.4,0.9c-0.6,0.2-1.2,0.4-1.8,0.5v2.2h-1.8v-2.2c-0.6-0.1-1.2-0.2-1.8-0.4s-1.1-0.5-1.5-1c-0.5-0.4-0.8-1-1.1-1.6 c-0.3-0.6-0.4-1.4-0.4-2.3h3.3c0,0.5,0.1,1,0.2,1.3c0.1,0.4,0.3,0.6,0.6,0.9c0.2,0.2,0.5,0.4,0.8,0.5c0.3,0.1,0.6,0.1,0.9,0.1 c0.4,0,0.7,0,0.9-0.1c0.3-0.1,0.5-0.2,0.7-0.4c0.2-0.2,0.3-0.4,0.4-0.6c0.1-0.2,0.1-0.5,0.1-0.8c0-0.3,0-0.6-0.1-0.8 c-0.1-0.2-0.2-0.5-0.4-0.7s-0.4-0.4-0.7-0.5c-0.3-0.2-0.7-0.3-1.1-0.5c-0.7-0.3-1.4-0.6-2-0.9c-0.6-0.3-1.1-0.7-1.5-1.1 c-0.4-0.4-0.8-0.9-1-1.4c-0.2-0.5-0.4-1.2-0.4-1.9c0-0.6,0.1-1.2,0.3-1.7c0.2-0.5,0.5-1,0.9-1.4c0.4-0.4,0.9-0.7,1.4-1 c0.5-0.2,1.2-0.4,1.8-0.5v-2.4h1.8v2.4c0.6,0.1,1.2,0.3,1.8,0.6c0.5,0.3,1,0.6,1.3,1.1c0.4,0.4,0.7,1,0.9,1.6c0.2,0.6,0.3,1.3,0.3,2 h-3.3c0-0.9-0.2-1.6-0.6-2c-0.4-0.4-0.9-0.7-1.5-0.7c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.4,0.2-0.6,0.4c-0.2,0.2-0.3,0.4-0.3,0.6 c-0.1,0.2-0.1,0.5-0.1,0.8C28.3,26.5,28.4,26.8,28.4,27z"/> +</svg> diff --git a/assets/images/icons/cursor.svg b/assets/images/icons/cursor.svg new file mode 100644 index 0000000..8b3f097 --- /dev/null +++ b/assets/images/icons/cursor.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E0E0E0" d="M27.8,39.7c-0.1,0-0.2,0-0.4-0.1c-0.2-0.1-0.4-0.3-0.6-0.5l-3.7-8.6l-4.5,4.2C18.5,34.9,18.3,35,18,35 c-0.1,0-0.3,0-0.4-0.1C17.3,34.8,17,34.4,17,34l0-22c0-0.4,0.2-0.8,0.6-0.9C17.7,11,17.9,11,18,11c0.2,0,0.5,0.1,0.7,0.3l16,15 c0.3,0.3,0.4,0.7,0.3,1.1c-0.1,0.4-0.5,0.6-0.9,0.7l-6.3,0.6l3.9,8.5c0.1,0.2,0.1,0.5,0,0.8c-0.1,0.2-0.3,0.5-0.5,0.6l-2.9,1.3 C28.1,39.7,27.9,39.7,27.8,39.7z"/> + <path fill="#212121" d="M18,12l16,15l-7.7,0.7l4.5,9.8l-2.9,1.3l-4.3-9.9L18,34L18,12 M18,10c-0.3,0-0.5,0.1-0.8,0.2 c-0.7,0.3-1.2,1-1.2,1.8l0,22c0,0.8,0.5,1.5,1.2,1.8C17.5,36,17.8,36,18,36c0.5,0,1-0.2,1.4-0.5l3.4-3.2l3.1,7.3 c0.2,0.5,0.6,0.9,1.1,1.1c0.2,0.1,0.5,0.1,0.7,0.1c0.3,0,0.5-0.1,0.8-0.2l2.9-1.3c0.5-0.2,0.9-0.6,1.1-1.1c0.2-0.5,0.2-1.1,0-1.5 l-3.3-7.2l4.9-0.4c0.8-0.1,1.5-0.6,1.7-1.3c0.3-0.7,0.1-1.6-0.5-2.1l-16-15C19,10.2,18.5,10,18,10L18,10z"/> +</svg> diff --git a/assets/images/icons/customer_support.svg b/assets/images/icons/customer_support.svg new file mode 100644 index 0000000..fd4a0bd --- /dev/null +++ b/assets/images/icons/customer_support.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFB74D" d="M29,43v-4.6l2.6,0.5c2.9,0.6,5.6-1.5,5.8-4.4L38,28l2.9-1.2c1-0.4,1.4-1.6,0.8-2.6L38,18 c-0.6-7.6-4.9-15-16-15C10.6,3,5,11.4,5,20c0,3.7,1.3,6.9,3.3,9.6c1.8,2.5,2.7,5.5,2.7,8.5l0,4.8H29z"/> + <polygon fill="#FF9800" points="29,43 29,38.4 22,37 22,43"/> + <circle fill="#784719" cx="33.5" cy="21.5" r="1.5"/> + <path fill="#FF5722" d="M21.4,3C12.3,3,5,10.3,5,19.4c0,11.1,6,11.4,6,18.6l2.6-0.9c2.1-0.7,3.9-2.3,4.7-4.4l2.8-6.8L27,23v-6 c0,0,7-3.8,7-10.3C31,4.2,25.7,3,21.4,3z"/> + <g fill="#546E7A"> + <path d="M21,2.1c-0.6,0-1,0.4-1,1v13.9c0,0.6,0.4,1,1,1s1-0.4,1-1V3.1C22,2.5,21.6,2.1,21,2.1z"/> + <path d="M36.9,31.9c-7.9,0-10.3-4.9-10.4-5.1c-0.2-0.5-0.8-0.7-1.3-0.5c-0.5,0.2-0.7,0.8-0.5,1.3 c0.1,0.3,3,6.3,12.2,6.3c0.6,0,1-0.4,1-1S37.4,31.9,36.9,31.9z"/> + </g> + <circle fill="#37474F" cx="37" cy="33" r="2"/> + <circle fill="#37474F" cx="21" cy="23" r="7"/> + <circle fill="#546E7A" cx="21" cy="23" r="4"/> +</svg> diff --git a/assets/images/icons/dam.svg b/assets/images/icons/dam.svg new file mode 100644 index 0000000..3af26d5 --- /dev/null +++ b/assets/images/icons/dam.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#81D4FA"> + <rect x="24" y="28" width="18" height="14"/> + <rect x="6" y="10" width="12" height="32"/> + </g> + <g fill="#1976D2"> + <path d="M16,8h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,10,16,9.1,16,8z"/> + <path d="M16,14h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,16,16,15.1,16,14z"/> + <path d="M16,20h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,22,16,21.1,16,20z"/> + <path d="M16,26h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,28,16,27.1,16,26z"/> + <path d="M16,32h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,34,16,33.1,16,32z"/> + <path d="M16,38h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,40,16,39.1,16,38z"/> + <path d="M40,32h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2 c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2 C40.9,34,40,33.1,40,32z"/> + <path d="M40,26h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2 c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2 C40.9,28,40,27.1,40,26z"/> + <path d="M40,38h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C40.9,40,40,39.1,40,38z"/> + </g> + <path fill="#455A64" d="M25.1,9.2L31.5,42H18V6h3.2C23.1,6,24.8,7.4,25.1,9.2z"/> +</svg> diff --git a/assets/images/icons/data_backup.svg b/assets/images/icons/data_backup.svg new file mode 100644 index 0000000..e0ecc97 --- /dev/null +++ b/assets/images/icons/data_backup.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <g fill="#2196F3"> + <polygon points="31,30 38,35.6 38,24.4"/> + <path d="M38,28c-0.3,0-0.7,0-1,0.1v4c0.3-0.1,0.7-0.1,1-0.1c3.3,0,6,2.7,6,6s-2.7,6-6,6s-6-2.7-6-6 c0-0.3,0-0.6,0.1-0.9l-3.4-2.7C28.3,35.5,28,36.7,28,38c0,5.5,4.5,10,10,10s10-4.5,10-10S43.5,28,38,28z"/> + </g> +</svg> diff --git a/assets/images/icons/data_configuration.svg b/assets/images/icons/data_configuration.svg new file mode 100644 index 0000000..2cdb75c --- /dev/null +++ b/assets/images/icons/data_configuration.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <path fill="#607D8B" d="M45.2,38.1c0.1-0.4,0.1-0.8,0.1-1.1s0-0.8-0.1-1.1l2.3-1.7c0.2-0.2,0.3-0.5,0.2-0.7l-2.3-3.9 c-0.1-0.2-0.4-0.3-0.7-0.2l-2.6,1.2c-0.6-0.5-1.3-0.9-2-1.2l-0.3-2.9c0-0.3-0.3-0.5-0.5-0.5h-4.5c-0.3,0-0.5,0.2-0.5,0.5l-0.3,2.9 c-0.7,0.3-1.4,0.7-2,1.2l-2.6-1.2c-0.3-0.1-0.6,0-0.7,0.2l-2.3,3.9c-0.1,0.2-0.1,0.6,0.2,0.7l2.3,1.7c-0.1,0.4-0.1,0.8-0.1,1.1 s0,0.8,0.1,1.1l-2.3,1.7c-0.2,0.2-0.3,0.5-0.2,0.7l2.3,3.9c0.1,0.2,0.4,0.3,0.7,0.2l2.6-1.2c0.6,0.5,1.3,0.9,2,1.2l0.3,2.9 c0,0.3,0.3,0.5,0.5,0.5h4.5c0.3,0,0.5-0.2,0.5-0.5l0.3-2.9c0.7-0.3,1.4-0.7,2-1.2l2.6,1.2c0.3,0.1,0.6,0,0.7-0.2l2.3-3.9 c0.1-0.2,0.1-0.6-0.2-0.7L45.2,38.1z M37,42.2c-2.9,0-5.2-2.3-5.2-5.2c0-2.9,2.3-5.2,5.2-5.2c2.9,0,5.2,2.3,5.2,5.2 C42.2,39.9,39.9,42.2,37,42.2z"/> + <path fill="#455A64" d="M37,31c-3.3,0-6,2.7-6,6c0,3.3,2.7,6,6,6s6-2.7,6-6C43,33.7,40.3,31,37,31z M37,40c-1.7,0-3-1.3-3-3 c0-1.7,1.3-3,3-3s3,1.3,3,3C40,38.7,38.7,40,37,40z"/> +</svg> diff --git a/assets/images/icons/data_encryption.svg b/assets/images/icons/data_encryption.svg new file mode 100644 index 0000000..7987905 --- /dev/null +++ b/assets/images/icons/data_encryption.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h25.1c1.3-1.3,4.9-0.9,4.9-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M34.4,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-2.4C40,33.5,37.5,31,34.4,31z"/> + </g> + <g fill="#FFA000"> + <polygon points="43,46 41,48 39,48 37,46 37,35.4 43,35.4 43,40 42,41 43,42 43,43 42,44 43,45"/> + <path d="M47.5,28.5c-0.3-0.9-1-1.6-2-1.8C44.2,26.4,42.2,26,40,26s-4.2,0.4-5.5,0.6c-1,0.2-1.7,0.9-2,1.8 C32.3,29.4,32,30.6,32,32c0,1.4,0.3,2.6,0.5,3.5c0.3,0.9,1,1.6,2,1.8c1.3,0.3,3.2,0.6,5.5,0.6s4.2-0.4,5.5-0.6c1-0.2,1.7-0.9,2-1.8 c0.3-0.9,0.5-2.1,0.5-3.5C48,30.6,47.7,29.4,47.5,28.5z M42.9,31h-5.7c-0.6,0-1.1-0.5-1.1-1.1v-1.4c0-0.3,1.8-0.6,4-0.6 s4,0.3,4,0.6v1.4C44,30.5,43.5,31,42.9,31z"/> + </g> + <rect x="39" y="37.1" fill="#D68600" width="1" height="10.9"/> +</svg> diff --git a/assets/images/icons/data_protection.svg b/assets/images/icons/data_protection.svg new file mode 100644 index 0000000..f699667 --- /dev/null +++ b/assets/images/icons/data_protection.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h25.1c1.3-1.3,4.9-0.9,4.9-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M34.4,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-2.4C40,33.5,37.5,31,34.4,31z"/> + </g> + <path fill="#009688" d="M46,25H32c-1.1,0-2,0.9-2,2v11.8c0,1.3,0.6,2.4,1.6,3.2l7.4,5.5l7.4-5.5c1-0.8,1.6-1.9,1.6-3.2V27 C48,25.9,47.1,25,46,25z"/> +</svg> diff --git a/assets/images/icons/data_recovery.svg b/assets/images/icons/data_recovery.svg new file mode 100644 index 0000000..8f94298 --- /dev/null +++ b/assets/images/icons/data_recovery.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <g fill="#F44336"> + <rect x="35" y="28" width="6" height="20"/> + <rect x="28" y="35" width="20" height="6"/> + </g> +</svg> diff --git a/assets/images/icons/data_sheet.svg b/assets/images/icons/data_sheet.svg new file mode 100644 index 0000000..b7872fa --- /dev/null +++ b/assets/images/icons/data_sheet.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M39,16v7h-6v-7h-2v7h-6v-7h-2v7h-7v2h7v6h-7v2h7v6h-7v2h25V16H39z M39,25v6h-6v-6H39z M25,25h6v6h-6V25z M25,33h6v6h-6V33z M33,39v-6h6v6H33z"/> + <polygon fill="#00BCD4" points="40,8 8,8 8,40 16,40 16,16 40,16"/> + <path fill="#0097A7" d="M7,7v34h10V17h24V7H7z M9,23v-6h6v6H9z M15,25v6H9v-6H15z M17,9h6v6h-6V9z M25,9h6v6h-6V9z M15,9v6H9V9H15z M9,39v-6h6v6H9z M39,15h-6V9h6V15z"/> +</svg> diff --git a/assets/images/icons/database.svg b/assets/images/icons/database.svg new file mode 100644 index 0000000..ecbaaa1 --- /dev/null +++ b/assets/images/icons/database.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> +</svg> diff --git a/assets/images/icons/debt.svg b/assets/images/icons/debt.svg new file mode 100644 index 0000000..2a42f1d --- /dev/null +++ b/assets/images/icons/debt.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFB74D" d="M10,12c-2.8,0-5-2.2-5-5s2.2-5,5-5s5,2.2,5,5S12.8,12,10,12z"/> + <path fill="#607D8B" d="M2,22v8l3,2l1,14h8l1-14l3-2v-8c0-4.4-3.6-8-8-8h0C5.6,14,2,17.6,2,22z"/> + <g fill="#263238"> + <path d="M22.4,40.4c-0.6,2.5-1,3.6-2.4,3.6c-0.6,0-1.2-0.5-1.9-1.1c-1-0.8-2.2-1.9-4.1-1.9v2c1.1,0,1.9,0.7,2.8,1.4 c0.9,0.7,1.9,1.6,3.2,1.6c3.1,0,3.8-2.9,4.4-5.2C25,38.2,25.4,37,27,37v-2C23.7,35,22.9,38.1,22.4,40.4z"/> + <polygon points="14.4,40 10,40 10,44 14.1,44"/> + </g> + <circle fill="#4CAF50" cx="36" cy="36" r="10"/> + <path fill="#fff" d="M35,34c0.1,0.2,0.1,0.3,0.3,0.4c0.1,0.1,0.3,0.2,0.5,0.4c0.2,0.1,0.5,0.2,0.8,0.3c0.5,0.2,0.9,0.4,1.3,0.6 c0.4,0.2,0.7,0.4,1,0.7c0.3,0.3,0.5,0.6,0.7,0.9c0.2,0.4,0.2,0.8,0.2,1.3c0,0.4-0.1,0.8-0.2,1.2c-0.1,0.4-0.3,0.7-0.6,0.9 c-0.3,0.3-0.6,0.5-0.9,0.6c-0.4,0.2-0.8,0.3-1.2,0.3v1.5h-1.2v-1.5c-0.4,0-0.8-0.1-1.2-0.3c-0.4-0.2-0.7-0.4-1-0.6 c-0.3-0.3-0.5-0.6-0.7-1.1c-0.2-0.4-0.3-0.9-0.3-1.5h2.2c0,0.4,0,0.7,0.1,0.9c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.1,0.3,0.2,0.5,0.3 c0.2,0.1,0.4,0.1,0.6,0.1c0.2,0,0.4,0,0.6-0.1c0.2-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.3,0.3-0.4c0.1-0.2,0.1-0.3,0.1-0.5 c0-0.2,0-0.4-0.1-0.6c-0.1-0.2-0.1-0.3-0.3-0.4c-0.1-0.1-0.3-0.3-0.5-0.4c-0.2-0.1-0.4-0.2-0.7-0.3c-0.5-0.2-0.9-0.4-1.3-0.6 c-0.4-0.2-0.7-0.4-1-0.7c-0.3-0.3-0.5-0.6-0.7-0.9c-0.2-0.4-0.2-0.8-0.2-1.3c0-0.4,0.1-0.8,0.2-1.2c0.1-0.3,0.3-0.7,0.6-0.9 c0.3-0.3,0.6-0.5,0.9-0.6c0.4-0.2,0.8-0.3,1.2-0.3v-1.6h1.2v1.6c0.4,0.1,0.8,0.2,1.2,0.4c0.4,0.2,0.6,0.4,0.9,0.7 c0.2,0.3,0.4,0.6,0.6,1c0.1,0.4,0.2,0.9,0.2,1.4h-2.2c0-0.6-0.1-1-0.4-1.3c-0.2-0.3-0.6-0.4-1-0.4c-0.2,0-0.4,0-0.6,0.1 c-0.2,0.1-0.3,0.2-0.4,0.3C35.1,32.7,35,32.8,35,33s-0.1,0.3-0.1,0.5C34.9,33.7,34.9,33.9,35,34z"/> +</svg> diff --git a/assets/images/icons/decision.svg b/assets/images/icons/decision.svg new file mode 100644 index 0000000..0aea000 --- /dev/null +++ b/assets/images/icons/decision.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <path fill="#0277BD" d="M21.8,29.6c0-6.6,5.1-6.2,5.1-10.2c0-1-0.3-3-2.9-3c-2.8,0-3,2.3-3,2.8h-3.8c0-1,0.4-6,6.8-6 c6.5,0,6.7,5.1,6.7,6c0,4.9-5.4,5.6-5.4,10.3H21.8z M21.5,34.5c0-0.3,0.1-2.1,2.1-2.1c2,0,2.2,1.8,2.2,2.1c0,0.6-0.3,2-2.2,2 C21.8,36.5,21.5,35.1,21.5,34.5z"/> +</svg> diff --git a/assets/images/icons/delete_column.svg b/assets/images/icons/delete_column.svg new file mode 100644 index 0000000..9003ca2 --- /dev/null +++ b/assets/images/icons/delete_column.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M30,5H18c-2.2,0-4,1.8-4,4v30c0,2.2,1.8,4,4,4h12c2.2,0,4-1.8,4-4V9C34,6.8,32.2,5,30,5z M18,39V9h12l0,30 H18z"/> + <circle fill="#F44336" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36.5" y="32" transform="matrix(-.707 .707 -.707 -.707 91.74 38)" width="3" height="12"/> + <rect x="36.5" y="32" transform="matrix(-.707 -.707 .707 -.707 38 91.74)" width="3" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/delete_database.svg b/assets/images/icons/delete_database.svg new file mode 100644 index 0000000..f5d69c6 --- /dev/null +++ b/assets/images/icons/delete_database.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#D1C4E9"> + <path d="M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z"/> + <path d="M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z"/> + <path d="M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z"/> + </g> + <circle fill="#F44336" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36.5" y="32" transform="matrix(-.707 .707 -.707 -.707 91.74 38)" width="3" height="12"/> + <rect x="36.5" y="32" transform="matrix(-.707 -.707 .707 -.707 38 91.74)" width="3" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/delete_row.svg b/assets/images/icons/delete_row.svg new file mode 100644 index 0000000..9079e24 --- /dev/null +++ b/assets/images/icons/delete_row.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M43,30V18c0-2.2-1.8-4-4-4H9c-2.2,0-4,1.8-4,4v12c0,2.2,1.8,4,4,4h30C41.2,34,43,32.2,43,30z M9,18h30v12 L9,30V18z"/> + <circle fill="#F44336" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36.5" y="32" transform="matrix(-.707 .707 -.707 -.707 91.74 38)" width="3" height="12"/> + <rect x="36.5" y="32" transform="matrix(-.707 -.707 .707 -.707 38 91.74)" width="3" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/department.svg b/assets/images/icons/department.svg new file mode 100644 index 0000000..7a7b49f --- /dev/null +++ b/assets/images/icons/department.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#C5CAE9" points="42,42 6,42 6,9 24,2 42,9"/> + <rect x="6" y="42" fill="#9FA8DA" width="36" height="2"/> + <rect x="20" y="35" fill="#BF360C" width="8" height="9"/> + <g fill="#1565C0"> + <rect x="31" y="27" width="6" height="5"/> + <rect x="21" y="27" width="6" height="5"/> + <rect x="11" y="27" width="6" height="5"/> + <rect x="31" y="35" width="6" height="5"/> + <rect x="11" y="35" width="6" height="5"/> + <rect x="31" y="19" width="6" height="5"/> + <rect x="21" y="19" width="6" height="5"/> + <rect x="11" y="19" width="6" height="5"/> + <rect x="31" y="11" width="6" height="5"/> + <rect x="21" y="11" width="6" height="5"/> + <rect x="11" y="11" width="6" height="5"/> + </g> +</svg> diff --git a/assets/images/icons/deployment.svg b/assets/images/icons/deployment.svg new file mode 100644 index 0000000..8ec3641 --- /dev/null +++ b/assets/images/icons/deployment.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#B0BEC5" d="M37,42H5V32h32c2.8,0,5,2.2,5,5v0C42,39.8,39.8,42,37,42z"/> + <path fill="#37474F" d="M10,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S11.7,34,10,34z M10,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C11,37.6,10.6,38,10,38z"/> + <path fill="#37474F" d="M19,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S20.7,34,19,34z M19,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C20,37.6,19.6,38,19,38z"/> + <path fill="#37474F" d="M37,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.7,34,37,34z M37,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C38,37.6,37.6,38,37,38z"/> + <path fill="#37474F" d="M28,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S29.7,34,28,34z M28,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C29,37.6,28.6,38,28,38z"/> + <path fill="#FF9800" d="M35,31H11c-1.1,0-2-0.9-2-2V7c0-1.1,0.9-2,2-2h24c1.1,0,2,0.9,2,2v22C37,30.1,36.1,31,35,31z"/> + <path fill="#8A5100" d="M26.5,13h-7c-0.8,0-1.5-0.7-1.5-1.5v0c0-0.8,0.7-1.5,1.5-1.5h7c0.8,0,1.5,0.7,1.5,1.5v0 C28,12.3,27.3,13,26.5,13z"/> + <path fill="#607D8B" d="M37,31H5v2h32c2.2,0,4,1.8,4,4s-1.8,4-4,4H5v2h32c3.3,0,6-2.7,6-6S40.3,31,37,31z"/> +</svg> diff --git a/assets/images/icons/diploma_1.svg b/assets/images/icons/diploma_1.svg new file mode 100644 index 0000000..3194c3a --- /dev/null +++ b/assets/images/icons/diploma_1.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="4" y="9" fill="#E8EAF6" width="40" height="30"/> + <g fill="#5C6BC0"> + <polygon points="30,34 32.8,34 27.8,29 25,31.8 30,36.8"/> + <polygon points="18,34 15.2,34 20.2,29 23,31.8 18,36.8"/> + </g> + <rect x="11" y="15" fill="#9FA8DA" width="26" height="4"/> + <path fill="#9FA8DA" d="M24,23c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5S26.8,23,24,23z M24,31c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3 S25.7,31,24,31z"/> + <path fill="#9FA8DA" d="M3,8v32h42V8H3z M43,35c-1.7,0-3,1.3-3,3H8c0-1.7-1.3-3-3-3V13c1.7,0,3-1.3,3-3h32c0,1.7,1.3,3,3,3V35z"/> +</svg> diff --git a/assets/images/icons/diploma_2.svg b/assets/images/icons/diploma_2.svg new file mode 100644 index 0000000..ea8d553 --- /dev/null +++ b/assets/images/icons/diploma_2.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="9" y="4" fill="#FBE9E7" width="30" height="40"/> + <g fill="#F4511E"> + <polygon points="30,37 32.8,37 27.8,32 25,34.8 30,39.8"/> + <polygon points="18,37 15.2,37 20.2,32 23,34.8 18,39.8"/> + </g> + <rect x="15" y="13" fill="#FF8A65" width="18" height="4"/> + <rect x="15" y="20" fill="#FF8A65" width="18" height="2"/> + <path fill="#FF8A65" d="M24,26c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5S26.8,26,24,26z M24,34c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3 S25.7,34,24,34z"/> + <path fill="#FF8A65" d="M8,3v42h32V3H8z M38,40c-1.7,0-3,1.3-3,3H13c0-1.7-1.3-3-3-3V8c1.7,0,3-1.3,3-3h22c0,1.7,1.3,3,3,3V40z"/> +</svg> diff --git a/assets/images/icons/disapprove.svg b/assets/images/icons/disapprove.svg new file mode 100644 index 0000000..0c14624 --- /dev/null +++ b/assets/images/icons/disapprove.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <g fill="#F44336"> + <rect x="22" y="16.8" transform="matrix(.707 -.707 .707 .707 -11.355 24.586)" width="4" height="18.5"/> + <rect x="22" y="16.8" transform="matrix(.707 .707 -.707 .707 25.414 -9.355)" width="4" height="18.5"/> + </g> +</svg> diff --git a/assets/images/icons/disclaimer.svg b/assets/images/icons/disclaimer.svg new file mode 100644 index 0000000..c48a1f8 --- /dev/null +++ b/assets/images/icons/disclaimer.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <path d="M13,22H8v-8.5c0-1.4,1.1-2.5,2.5-2.5h0c1.4,0,2.5,1.1,2.5,2.5V22z"/> + <path d="M20,22h-5V7.5C15,6.1,16.1,5,17.5,5h0C18.9,5,20,6.1,20,7.5V22z"/> + <path d="M27,22h-5V5.5C22,4.1,23.1,3,24.5,3h0C25.9,3,27,4.1,27,5.5V22z"/> + <path d="M34,22h-5V8.5C29,7.1,30.1,6,31.5,6h0C32.9,6,34,7.1,34,8.5V22z"/> + <path d="M32.1,43L27.1,38l10-10c1.4-1.4,3.6-1.4,4.9,0l0,0c1.4,1.4,1.4,3.6,0,4.9L32.1,43z"/> + <path d="M29,21c0,0.6-0.4,1-1,1s-1-0.4-1-1h-5c0,0.6-0.4,1-1,1s-1-0.4-1-1h-5c0,0.6-0.4,1-1,1s-1-0.4-1-1H8v16 c0,4.4,3.6,8,8,8h11.2c3.7,0,6.8-3,6.8-6.8V21H29z"/> + </g> + <g fill="#F44336"> + <rect x="20.2" y="25.5" transform="matrix(.707 -.707 .707 .707 -16.897 25.224)" width="3.5" height="15"/> + <rect x="20.2" y="25.6" transform="matrix(.707 .707 -.707 .707 29.811 -5.877)" width="3.5" height="15"/> + </g> +</svg> diff --git a/assets/images/icons/dislike.svg b/assets/images/icons/dislike.svg new file mode 100644 index 0000000..36a9f3e --- /dev/null +++ b/assets/images/icons/dislike.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z"/> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> +</svg> diff --git a/assets/images/icons/display.svg b/assets/images/icons/display.svg new file mode 100644 index 0000000..7ee9f1f --- /dev/null +++ b/assets/images/icons/display.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#80DEEA" d="M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z"/> + <g fill="#2962FF"> + <polygon points="36,17 31,17 29,15 31,13 36,13 38,15"/> + <polygon points="36,35 31,35 29,33 31,31 36,31 38,33"/> + <polygon points="37,30 37,18 39,16 41,18 41,30 39,32"/> + <polygon points="26,30 26,18 28,16 30,18 30,30 28,32"/> + <polygon points="17,17 12,17 10,15 12,13 17,13 19,15"/> + <polygon points="17,35 12,35 10,33 12,31 17,31 19,33"/> + <polygon points="18,30 18,18 20,16 22,18 22,30 20,32"/> + <polygon points="7,30 7,18 9,16 11,18 11,30 9,32"/> + </g> +</svg> diff --git a/assets/images/icons/do_not_inhale.svg b/assets/images/icons/do_not_inhale.svg new file mode 100644 index 0000000..3620b6b --- /dev/null +++ b/assets/images/icons/do_not_inhale.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFA726" d="M33.5,20C31.2,17.7,30,13.9,30,9c0-3.2,0-3,0-3H18c0,0,0-0.2,0,3c0,4.9-1.2,8.7-3.5,11 C12.1,20.2,9,22,9,25.4c0,4.5,5.1,4.6,6,4.6c1.2,0,6.1,4,8,4c0,0,0.7,0,1,0s1,0,1,0c1.9,0,6.8-4,8-4c0.9,0,6-0.1,6-4.6 C39,22,35.9,20.2,33.5,20z"/> + <path fill="#FFA726" d="M33.5,20C31.2,17.7,30,13.9,30,9c0-3.2,0-3,0-3H18c0,0,0-0.2,0,3c0,4.9-1.2,8.7-3.5,11 C12.1,20.2,9,22,9,25.4c0,4.5,5.1,4.6,6,4.6c1.2,0,6.1,4,8,4c0,0,0.7,0,1,0s1,0,1,0c1.9,0,6.8-4,8-4c0.9,0,6-0.1,6-4.6 C39,22,35.9,20.2,33.5,20z"/> + <path fill="#FFB74D" d="M26,9c0-3.2,0-3,0-3h-4c0,0,0-0.2,0,3c0,4.9-3,19-3,19s1.6,2,5,2s5-2,5-2S26,13.9,26,9z"/> + <path fill="#CC861E" d="M23,34c-3.3,0-6.4-3.1-8-4c0,0,0.7,0,1.8,0C19.9,30,21.3,34,23,34z"/> + <path fill="#CC861E" d="M25,34c3.3,0,6.4-3.1,8-4c0,0-0.7,0-1.8,0C28.1,30,26.7,34,25,34z"/> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> + <g fill="#FF5722"> + <polygon points="18,35 22,39 14,39"/> + <rect x="17" y="38" width="2" height="4"/> + <polygon points="30,35 34,39 26,39"/> + <rect x="29" y="38" width="2" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/do_not_insert.svg b/assets/images/icons/do_not_insert.svg new file mode 100644 index 0000000..0da319c --- /dev/null +++ b/assets/images/icons/do_not_insert.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#7CB342"> + <polygon points="31,29 24,36 17,29"/> + <rect x="22" y="7" width="4" height="25"/> + <path d="M42,18c-3.3,0-6,2.7-6,6v12c0,1.1-0.9,2-2,2H14c-1.1,0-2-0.9-2-2V24c0-3.3-2.7-6-6-6H4v4h2c1.1,0,2,0.9,2,2 v12c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V24c0-1.1,0.9-2,2-2h2v-4H42z"/> + </g> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> +</svg> diff --git a/assets/images/icons/do_not_mix.svg b/assets/images/icons/do_not_mix.svg new file mode 100644 index 0000000..dde058f --- /dev/null +++ b/assets/images/icons/do_not_mix.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#00BCD4" points="26.9,42 17,42 17,32.1"/> + <polygon fill="#00BCD4" points="30,6 30,26.2 19.8,36.4 22.6,39.2 34,27.8 34,6"/> + <polygon fill="#2196F3" points="15.9,31 6,31 6,21.1"/> + <polygon fill="#2196F3" points="20.2,14 8.8,25.4 11.6,28.2 21.8,18 41,18 41,14"/> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> +</svg> diff --git a/assets/images/icons/document.svg b/assets/images/icons/document.svg new file mode 100644 index 0000000..7b392f8 --- /dev/null +++ b/assets/images/icons/document.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="40,45 8,45 8,3 30,3 40,13"/> + <polygon fill="#E1F5FE" points="38.5,14 29,14 29,4.5"/> + <g fill="#1976D2"> + <rect x="16" y="21" width="17" height="2"/> + <rect x="16" y="25" width="13" height="2"/> + <rect x="16" y="29" width="17" height="2"/> + <rect x="16" y="33" width="13" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/donate.svg b/assets/images/icons/donate.svg new file mode 100644 index 0000000..dc785fa --- /dev/null +++ b/assets/images/icons/donate.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#E69329" points="11.7,21.6 16.8,31.5 26.3,27.6 30.7,14.9 15.9,15.7"/> + <circle fill="#546E7A" cx="15" cy="36" r="7.8"/> + <g fill="#90A4AE"> + <path d="M15,27c-5,0-9,4-9,9c0,5,4,9,9,9s9-4,9-9C24,31,20,27,15,27z M15,43c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7 s7,3.1,7,7C22,39.9,18.9,43,15,43z"/> + <rect x="14" y="33" width="2" height="8"/> + </g> + <g fill="#FFB74D"> + <path d="M12.9,36L12.9,36c1,1.9,3.2,2.7,5.1,1.7l16.5-8.5c1-0.5,1.7-1.2,2.2-1.9c1.7-3.2,5.6-10.7,8.2-17.2 l-18.2,8.7L21.9,26l-6.8,3.6C12.5,30.9,11.7,33.8,12.9,36z"/> + <path d="M30.2,3L13.7,9.3c-0.7,0.2-1.5,1-2.2,1.7l-5.6,7.5c-1,1.5-1.2,3.4-0.5,5.1c0.4,1,1.7,3.4,3.1,6.1 c1.6-1.7,3.9-2.7,6.5-2.7c0.4,0,0.9,0,1.3,0.1l-2.1-4.2l4.6-4.1h8c0,0,15.5-2.2,18.2-8.7L30.2,3z"/> + </g> + <path fill="#FFCDD2" d="M18.2,36c-1.3,0.6-2.8,0-3.3-1.3c-0.6-1.3,0-2.8,1.3-3.3C17.4,30.8,19.4,35.4,18.2,36z"/> +</svg> diff --git a/assets/images/icons/doughnut_chart.svg b/assets/images/icons/doughnut_chart.svg new file mode 100644 index 0000000..82f03e1 --- /dev/null +++ b/assets/images/icons/doughnut_chart.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#00BCD4" d="M24,30c-3.3,0-6-2.7-6-6s2.7-6,6-6V5C13.5,5,5,13.5,5,24s8.5,19,19,19c4.4,0,8.5-1.5,11.8-4.1l-8-10.2 C26.7,29.5,25.4,30,24,30z"/> + <path fill="#448AFF" d="M30,24h13c0-10.5-8.5-19-19-19v13C27.3,18,30,20.7,30,24z"/> + <path fill="#3F51B5" d="M43,24H30c0,1.9-0.9,3.6-2.3,4.7l8,10.2C40.2,35.4,43,30,43,24z"/> +</svg> diff --git a/assets/images/icons/down.svg b/assets/images/icons/down.svg new file mode 100644 index 0000000..58ff53d --- /dev/null +++ b/assets/images/icons/down.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <polygon points="24,44 12.3,30 35.7,30"/> + <rect x="20" y="6" width="8" height="27"/> + </g> +</svg> diff --git a/assets/images/icons/down_left.svg b/assets/images/icons/down_left.svg new file mode 100644 index 0000000..19a5198 --- /dev/null +++ b/assets/images/icons/down_left.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="4,29 18,17.3 18,40.7"/> + <path fill="#3F51B5" d="M42,21V8h-8v13c0,2.2-1.8,4-4,4H13v8h17C36.6,33,42,27.6,42,21z"/> +</svg> diff --git a/assets/images/icons/down_right.svg b/assets/images/icons/down_right.svg new file mode 100644 index 0000000..7dbc517 --- /dev/null +++ b/assets/images/icons/down_right.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="44,29 30,17.3 30,40.7"/> + <path fill="#3F51B5" d="M6,21V8h8v13c0,2.2,1.8,4,4,4h17v8H18C11.4,33,6,27.6,6,21z"/> +</svg> diff --git a/assets/images/icons/download.svg b/assets/images/icons/download.svg new file mode 100644 index 0000000..90513b7 --- /dev/null +++ b/assets/images/icons/download.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1565C0"> + <polygon points="24,37.1 13,24 35,24"/> + <rect x="20" y="4" width="8" height="4"/> + <rect x="20" y="10" width="8" height="4"/> + <rect x="20" y="16" width="8" height="11"/> + <rect x="6" y="40" width="36" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/edit_image.svg b/assets/images/icons/edit_image.svg new file mode 100644 index 0000000..3dd2020 --- /dev/null +++ b/assets/images/icons/edit_image.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8CBCD6" d="M31,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v17C44,35.2,38.2,41,31,41z"/> + <circle fill="#B3DDF5" cx="35" cy="16" r="3"/> + <polygon fill="#9AC9E3" points="20,16 9,32 31,32"/> + <polygon fill="#B3DDF5" points="31,22 23,32 39,32"/> + <path fill="#E57373" d="M47.7,29.1l-2.8-2.8c-0.4-0.4-1.1-0.4-1.6,0L42,27.6l4.4,4.4l1.3-1.3C48.1,30.3,48.1,29.6,47.7,29.1z"/> + <rect x="27.1" y="35.1" transform="matrix(.707 -.707 .707 .707 -16.508 36.511)" fill="#FF9800" width="17.4" height="6.2"/> + <rect x="41.5" y="27.8" transform="matrix(-.707 .707 -.707 -.707 95.395 22.352)" fill="#B0BEC5" width="3.1" height="6.2"/> + <polygon fill="#FFC107" points="27.5,42.2 26,48 31.8,46.5"/> + <polygon fill="#37474F" points="26.7,45 26,48 29,47.3"/> +</svg> diff --git a/assets/images/icons/electrical_sensor.svg b/assets/images/icons/electrical_sensor.svg new file mode 100644 index 0000000..5424956 --- /dev/null +++ b/assets/images/icons/electrical_sensor.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#B2EBF2" cx="32" cy="24" r="9"/> + <path fill="#4DD0E1" d="M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z"/> + <g fill="#3F51B5"> + <polygon points="25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22"/> + <circle cx="32" cy="24" r="4"/> + </g> +</svg> diff --git a/assets/images/icons/electrical_threshold.svg b/assets/images/icons/electrical_threshold.svg new file mode 100644 index 0000000..827d39e --- /dev/null +++ b/assets/images/icons/electrical_threshold.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="3" y="12" fill="#80DEEA" width="42" height="24"/> + <rect x="3" y="23" fill="#03A9F4" width="42" height="2"/> + <path fill="none" stroke="#3F51B5" stroke-width="4" stroke-miterlimit="10" d="M4,18l4.5-1.5c0.9-0.3,1.9,0.1,2.3,0.9l8.7,14.3 c0.7,1.2,2.4,1.3,3.2,0.2l2.3-2.8c0.5-0.6,1.4-0.9,2.2-0.6l3,1c1,0.3,2.1-0.2,2.5-1.1l4.3-10.1c0.5-1.1,1.9-1.6,2.9-0.9l4,2.7"/> +</svg> diff --git a/assets/images/icons/electricity.svg b/assets/images/icons/electricity.svg new file mode 100644 index 0000000..355229c --- /dev/null +++ b/assets/images/icons/electricity.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#00BCD4" d="M33.7,5L22,17l15,5L21.3,36.7l5.1,2.8L12,43l2.7-14.8l2.9,5.1L27,24l-15-5L25,5H33.7z"/> +</svg> diff --git a/assets/images/icons/electro_devices.svg b/assets/images/icons/electro_devices.svg new file mode 100644 index 0000000..7d9fa3a --- /dev/null +++ b/assets/images/icons/electro_devices.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"> + <path fill="#3F51B5" d="M39,43H9c-2.2,0-4-1.8-4-4V9c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v30C43,41.2,41.2,43,39,43z"/> + <path fill="#80DEEA" d="M33.2,5l-9.8,10.1L36,19.3L22.8,31.7l4.3,2.4L15,37l2.3-12.5l2.4,4.3l8-7.8L15,16.8L25.9,5H33.2z"/> +</svg> diff --git a/assets/images/icons/electronics.svg b/assets/images/icons/electronics.svg new file mode 100644 index 0000000..eb6a3c9 --- /dev/null +++ b/assets/images/icons/electronics.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF9800" d="M44,18v-4H34V4h-4v10h-4V4h-4v10h-4V4h-4v10H4v4h10v4H4v4h10v4H4v4h10v10h4V34h4v10h4V34h4v10h4V34h10v-4H34 v-4h10v-4H34v-4H44z"/> + <path fill="#4CAF50" d="M8,12v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V12c0-2.2-1.8-4-4-4H12C9.8,8,8,9.8,8,12z"/> + <path fill="#37474F" d="M31,31H17c-1.1,0-2-0.9-2-2V19c0-1.1,0.9-2,2-2h14c1.1,0,2,0.9,2,2v10C33,30.1,32.1,31,31,31z"/> +</svg> diff --git a/assets/images/icons/empty_battery.svg b/assets/images/icons/empty_battery.svg new file mode 100644 index 0000000..b1e61c3 --- /dev/null +++ b/assets/images/icons/empty_battery.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#CFD8DC"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> +</svg> diff --git a/assets/images/icons/empty_filter.svg b/assets/images/icons/empty_filter.svg new file mode 100644 index 0000000..7952c75 --- /dev/null +++ b/assets/images/icons/empty_filter.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <polygon points="29,23 19,23 7,9 41,9"/> + <polygon points="29,38 19,44 19,23 29,23"/> + <path d="M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z"/> + </g> +</svg> diff --git a/assets/images/icons/empty_trash.svg b/assets/images/icons/empty_trash.svg new file mode 100644 index 0000000..cd48e96 --- /dev/null +++ b/assets/images/icons/empty_trash.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#B39DDB" d="M30.6,44H17.4c-2,0-3.7-1.4-4-3.4L9,11h30l-4.5,29.6C34.2,42.6,32.5,44,30.6,44z"/> + <path fill="#7E57C2" d="M38,13H10c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v0C40,12.1,39.1,13,38,13z"/> +</svg> diff --git a/assets/images/icons/end_call.svg b/assets/images/icons/end_call.svg new file mode 100644 index 0000000..056c085 --- /dev/null +++ b/assets/images/icons/end_call.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M43.5,16.8l-2.3-2.3c-8.1-7.9-27.5-6.8-34.5,0l-2.3,2.3c-0.6,0.6-0.6,1.6,0,2.3l4.6,4.5 c0.6,0.6,1.7,0.6,2.3,0l5.1-4.9L16,13.4c1.6-1.6,14.4-1.6,16,0l-0.3,5.5l4.9,4.7c0.6,0.6,1.7,0.6,2.3,0l4.6-4.5 C44.2,18.4,44.2,17.4,43.5,16.8z"/> + <g fill="#B71C1C"> + <polygon points="24,40.5 16,31 32,31"/> + <rect x="21" y="24" width="6" height="7.5"/> + </g> +</svg> diff --git a/assets/images/icons/engineering.svg b/assets/images/icons/engineering.svg new file mode 100644 index 0000000..76a7a6a --- /dev/null +++ b/assets/images/icons/engineering.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#EF6C00" d="M37.4,24.6l-11.6-2.2l-3.9-11.2l-3.8,1.3L22,23.6l-7.8,9l3,2.6l7.8-9l11.6,2.2L37.4,24.6z"/> + <g fill="#FF9800"> + <path d="M24,19c-2.8,0-5,2.2-5,5c0,2.8,2.2,5,5,5s5-2.2,5-5C29,21.2,26.8,19,24,19z M24,26c-1.1,0-2-0.9-2-2 c0-1.1,0.9-2,2-2s2,0.9,2,2C26,25.1,25.1,26,24,26z"/> + <path d="M40.7,27c0.2-1,0.3-2,0.3-3c0-1-0.1-2-0.3-3l3.3-2.4c0.4-0.3,0.6-0.9,0.3-1.4L40,9.8 c-0.3-0.5-0.8-0.7-1.3-0.4L35,11c-1.5-1.3-3.3-2.3-5.2-3l-0.4-4.1c-0.1-0.5-0.5-0.9-1-0.9h-8.6c-0.5,0-1,0.4-1,0.9L18.2,8 c-1.9,0.7-3.7,1.7-5.2,3L9.3,9.3C8.8,9.1,8.2,9.3,8,9.8l-4.3,7.4c-0.3,0.5-0.1,1.1,0.3,1.4L7.3,21C7.1,22,7,23,7,24 c0,1,0.1,2,0.3,3L4,29.4c-0.4,0.3-0.6,0.9-0.3,1.4L8,38.2c0.3,0.5,0.8,0.7,1.3,0.4L13,37c1.5,1.3,3.3,2.3,5.2,3l0.4,4.1 c0.1,0.5,0.5,0.9,1,0.9h8.6c0.5,0,1-0.4,1-0.9l0.4-4.1c1.9-0.7,3.7-1.7,5.2-3l3.7,1.7c0.5,0.2,1.1,0,1.3-0.4l4.3-7.4 c0.3-0.5,0.1-1.1-0.3-1.4L40.7,27z M24,35c-6.1,0-11-4.9-11-11c0-6.1,4.9-11,11-11s11,4.9,11,11C35,30.1,30.1,35,24,35z"/> + </g> +</svg> diff --git a/assets/images/icons/entering_heaven_alive.svg b/assets/images/icons/entering_heaven_alive.svg new file mode 100644 index 0000000..d318230 --- /dev/null +++ b/assets/images/icons/entering_heaven_alive.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="17" y="29" fill="#039BE5" width="14" height="2"/> + <rect x="13" y="33" fill="#039BE5" width="22" height="2"/> + <rect x="9" y="37" fill="#039BE5" width="30" height="2"/> + <rect x="5" y="41" fill="#039BE5" width="38" height="2"/> + <path fill="#81D4FA" d="M35,13c-0.4,0-0.8,0-1.2,0.1C32.9,8.5,28.9,5,24,5c-4.1,0-7.6,2.5-9.2,6c-0.3,0-0.5,0-0.8,0 c-4.4,0-8,3.6-8,8s3.6,8,8,8c2.4,0,18.5,0,21,0c3.9,0,7-3.1,7-7C42,16.1,38.9,13,35,13z"/> + <path fill="#039BE5" d="M28,21c0-2.2-1.8-4-4-4s-4,1.8-4,4c0,0.5,0,6,0,6h8C28,27,28,21.5,28,21z"/> +</svg> diff --git a/assets/images/icons/expand.svg b/assets/images/icons/expand.svg new file mode 100644 index 0000000..40d4917 --- /dev/null +++ b/assets/images/icons/expand.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#2196F3" points="43,17.1 39.9,14 24,29.9 8.1,14 5,17.1 24,36"/> +</svg> diff --git a/assets/images/icons/expired.svg b/assets/images/icons/expired.svg new file mode 100644 index 0000000..0b22296 --- /dev/null +++ b/assets/images/icons/expired.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#00ACC1" cx="17" cy="17" r="14"/> + <circle fill="#eee" cx="17" cy="17" r="11"/> + <rect x="16" y="8" width="2" height="9"/> + <rect x="18.2" y="16" transform="matrix(-.707 .707 -.707 -.707 46.834 19.399)" width="2.4" height="6.8"/> + <circle cx="17" cy="17" r="2"/> + <circle fill="#00ACC1" cx="17" cy="17" r="1"/> + <path fill="#FFC107" d="M11.9,42l14.4-24.1c0.8-1.3,2.7-1.3,3.4,0L44.1,42c0.8,1.3-0.2,3-1.7,3H13.6C12.1,45,11.1,43.3,11.9,42z"/> + <path fill="#263238" d="M26.4,39.9c0-0.2,0-0.4,0.1-0.6s0.2-0.3,0.3-0.5s0.3-0.2,0.5-0.3s0.4-0.1,0.6-0.1s0.5,0,0.7,0.1 s0.4,0.2,0.5,0.3s0.2,0.3,0.3,0.5s0.1,0.4,0.1,0.6s0,0.4-0.1,0.6s-0.2,0.3-0.3,0.5s-0.3,0.2-0.5,0.3s-0.4,0.1-0.7,0.1 s-0.5,0-0.6-0.1s-0.4-0.2-0.5-0.3s-0.2-0.3-0.3-0.5S26.4,40.1,26.4,39.9z M29.2,36.8h-2.3L26.5,27h3L29.2,36.8z"/> +</svg> diff --git a/assets/images/icons/export.svg b/assets/images/icons/export.svg new file mode 100644 index 0000000..e5d1928 --- /dev/null +++ b/assets/images/icons/export.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFCCBC" d="M7,40V8c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H11C8.8,44,7,42.2,7,40z"/> + <g fill="#FF5722"> + <polygon points="42.7,24 32,33 32,15"/> + <rect x="14" y="21" width="23" height="6"/> + </g> +</svg> diff --git a/assets/images/icons/external.svg b/assets/images/icons/external.svg new file mode 100644 index 0000000..eac6c03 --- /dev/null +++ b/assets/images/icons/external.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#B2DFDB" cx="24" cy="31" r="14"/> + <g fill="#009688"> + <polygon points="24,3.3 33,14 15,14"/> + <rect x="21" y="11" width="6" height="23"/> + </g> +</svg> diff --git a/assets/images/icons/factory.svg b/assets/images/icons/factory.svg new file mode 100644 index 0000000..12eb665 --- /dev/null +++ b/assets/images/icons/factory.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#BF360C" d="M41.2,5h-7.3L32,43h11L41.2,5z"/> + <path fill="#E64A19" d="M33,23h-4v-6l-12,6v-6L5,23v20h28V23z"/> + <rect x="9" y="27" fill="#FFC107" width="4" height="4"/> + <rect x="17" y="27" fill="#FFC107" width="4" height="4"/> + <rect x="25" y="27" fill="#FFC107" width="4" height="4"/> + <rect x="9" y="35" fill="#FFC107" width="4" height="4"/> + <rect x="17" y="35" fill="#FFC107" width="4" height="4"/> + <rect x="25" y="35" fill="#FFC107" width="4" height="4"/> +</svg> diff --git a/assets/images/icons/factory_breakdown.svg b/assets/images/icons/factory_breakdown.svg new file mode 100644 index 0000000..881e027 --- /dev/null +++ b/assets/images/icons/factory_breakdown.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#E64A19" points="29,23 29,17 21,21 21,23 17,23 17,27 13,27 13,23 5,23 5,43 33,43 33,23"/> + <rect x="25" y="27" fill="#992B0A" width="4" height="4"/> + <rect x="9" y="35" fill="#992B0A" width="4" height="4"/> + <rect x="25" y="35" fill="#992B0A" width="4" height="4"/> + <rect x="17" y="35" fill="#992B0A" width="4" height="4"/> + <rect x="17" y="27" fill="#992B0A" width="4" height="4"/> + <polygon fill="#BF360C" points="41.2,5 38,5 38,7 36,7 36,9 33.7,9 32,43 43,43"/> +</svg> diff --git a/assets/images/icons/faq.svg b/assets/images/icons/faq.svg new file mode 100644 index 0000000..dae5cf7 --- /dev/null +++ b/assets/images/icons/faq.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#558B2F" d="M15,40h23l6,6V25c0-2.2-1.8-4-4-4H15c-2.2,0-4,1.8-4,4v11C11,38.2,12.8,40,15,40z"/> + <path fill="#1B5E20" d="M28.8,32.8h-3.6l-0.7,2.1h-2.2l3.7-10h1.9l3.7,10h-2.2L28.8,32.8z M25.7,31.2h2.5L27,27.4L25.7,31.2z"/> + <path fill="#8BC34A" d="M33,25H10l-6,6V8c0-2.2,1.8-4,4-4h25c2.2,0,4,1.8,4,4v13C37,23.2,35.2,25,33,25z"/> + <path fill="#fff" d="M25.4,14.2c0,1-0.2,1.8-0.5,2.5c-0.3,0.7-0.7,1.3-1.3,1.7l1.7,1.3L24,20.9l-2.2-1.7c-0.2,0-0.5,0.1-0.8,0.1 c-0.6,0-1.2-0.1-1.8-0.3c-0.5-0.2-1-0.6-1.4-1c-0.4-0.4-0.7-1-0.9-1.6c-0.2-0.6-0.3-1.3-0.3-2.1v-0.4c0-0.8,0.1-1.5,0.3-2.1 c0.2-0.6,0.5-1.2,0.9-1.6c0.4-0.4,0.8-0.8,1.4-1c0.5-0.2,1.1-0.3,1.8-0.3c0.6,0,1.2,0.1,1.8,0.3c0.5,0.2,1,0.6,1.4,1 c0.4,0.4,0.7,1,0.9,1.6c0.2,0.6,0.3,1.3,0.3,2.1V14.2z M23.2,13.7c0-1.1-0.2-1.9-0.6-2.4c-0.4-0.6-0.9-0.8-1.6-0.8 c-0.7,0-1.3,0.3-1.6,0.8c-0.4,0.6-0.6,1.4-0.6,2.4v0.5c0,0.5,0.1,1,0.2,1.4c0.1,0.4,0.2,0.8,0.4,1c0.2,0.3,0.4,0.5,0.7,0.6 c0.3,0.1,0.6,0.2,0.9,0.2c0.7,0,1.3-0.3,1.6-0.8c0.4-0.6,0.6-1.4,0.6-2.5V13.7z"/> +</svg> diff --git a/assets/images/icons/feed_in.svg b/assets/images/icons/feed_in.svg new file mode 100644 index 0000000..1d5903f --- /dev/null +++ b/assets/images/icons/feed_in.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2196F3" d="M38,24v12c0,1.1-0.9,2-2,2H12c-1.1,0-2-0.9-2-2V24c0-3.3-2.7-6-6-6h0v4h0c1.1,0,2,0.9,2,2v12 c0,3.3,2.7,6,6,6h24c3.3,0,6-2.7,6-6V24c0-1.1,0.9-2,2-2h0v-4h0C40.7,18,38,20.7,38,24z"/> + <g fill="#3F51B5"> + <polygon points="38.6,5.6 29,15.2 29,28 33,28 33,16.8 41.4,8.4"/> + <polygon points="6.6,8.4 15,16.8 15,28 19,28 19,15.2 9.4,5.6"/> + <polygon points="37,27 31,33 25,27"/> + <polygon points="23,27 17,33 11,27"/> + </g> +</svg> diff --git a/assets/images/icons/feedback.svg b/assets/images/icons/feedback.svg new file mode 100644 index 0000000..a5da4fa --- /dev/null +++ b/assets/images/icons/feedback.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#78909C" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z"/> + <rect x="12" y="11" fill="#fff" width="24" height="22"/> + <polygon fill="#9C27B0" points="24,13.6 18,21.4 30,21.4"/> + <path fill="#CFD8DC" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z"/> + <polygon fill="#9C27B0" points="24,28 26,26.7 26,20 22,20 22,26.7"/> +</svg> diff --git a/assets/images/icons/file.svg b/assets/images/icons/file.svg new file mode 100644 index 0000000..e7d2f40 --- /dev/null +++ b/assets/images/icons/file.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="40,45 8,45 8,3 30,3 40,13"/> + <polygon fill="#E1F5FE" points="38.5,14 29,14 29,4.5"/> +</svg> diff --git a/assets/images/icons/filing_cabinet.svg b/assets/images/icons/filing_cabinet.svg new file mode 100644 index 0000000..07acffc --- /dev/null +++ b/assets/images/icons/filing_cabinet.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="12" y="44" fill="#263238" width="4" height="2"/> + <rect x="32" y="44" fill="#263238" width="4" height="2"/> + <path fill="#607D8B" d="M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z"/> + <path fill="#B0BEC5" d="M12,17V8c0-0.6,0.4-1,1-1h22c0.6,0,1,0.4,1,1v9H12z"/> + <rect x="12" y="19" fill="#B0BEC5" width="24" height="10"/> + <path fill="#B0BEC5" d="M12,40v-9h24v9c0,0.6-0.4,1-1,1H13C12.4,41,12,40.6,12,40z"/> + <rect x="20" y="11" fill="#546E7A" width="8" height="2"/> + <rect x="20" y="23" fill="#546E7A" width="8" height="2"/> + <rect x="20" y="35" fill="#546E7A" width="8" height="2"/> +</svg> diff --git a/assets/images/icons/filled_filter.svg b/assets/images/icons/filled_filter.svg new file mode 100644 index 0000000..744bf3f --- /dev/null +++ b/assets/images/icons/filled_filter.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#F57C00" points="29,23 19,23 7,9 41,9"/> + <g fill="#FF9800"> + <polygon points="29,38 19,44 19,23 29,23"/> + <path d="M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z"/> + </g> +</svg> diff --git a/assets/images/icons/film.svg b/assets/images/icons/film.svg new file mode 100644 index 0000000..5075800 --- /dev/null +++ b/assets/images/icons/film.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M45,9H3v30h42V9z M22,37v-4h4v4H22z M30,37v-4h4v4H30z M38,37v-4h4v4H38z M14,37v-4h4v4H14z M6,37v-4h4v4H6 z M22,15v-4h4v4H22z M30,15v-4h4v4H30z M38,15v-4h4v4H38z M14,15v-4h4v4H14z M6,15v-4h4v4H6z"/> +</svg> diff --git a/assets/images/icons/film_reel.svg b/assets/images/icons/film_reel.svg new file mode 100644 index 0000000..785dd5a --- /dev/null +++ b/assets/images/icons/film_reel.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M43,39V24h-4v15c0,5,4,9,9,9v-4C45.2,44,43,41.8,43,39z"/> + <circle fill="#90A4AE" cx="24" cy="24" r="19"/> + <circle fill="#37474F" cx="24" cy="24" r="2"/> + <g fill="#253278"> + <circle cx="24" cy="14" r="5"/> + <circle cx="24" cy="34" r="5"/> + <circle cx="34" cy="24" r="5"/> + <circle cx="14" cy="24" r="5"/> + </g> +</svg> diff --git a/assets/images/icons/fine_print.svg b/assets/images/icons/fine_print.svg new file mode 100644 index 0000000..e7381e1 --- /dev/null +++ b/assets/images/icons/fine_print.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="33,42 5,42 5,4 24,4 33,13"/> + <polygon fill="#E1F5FE" points="31.5,14 23,14 23,5.5"/> + <rect x="38.3" y="34.8" transform="matrix(.707 -.707 .707 .707 -17.177 40.055)" fill="#616161" width="2.8" height="12"/> + <circle fill="#616161" cx="28" cy="29" r="11"/> + <circle fill="#90CAF9" cx="28" cy="29" r="9"/> + <rect x="39.5" y="37.6" transform="matrix(.707 -.707 .707 .707 -17.661 41.223)" fill="#37474F" width="2.8" height="8.7"/> + <g fill="#1976D2"> + <path d="M30,31h-9.7c0.4,1.6,1.3,3,2.5,4H30V31z"/> + <path d="M20.3,27H30v-4h-7.3C21.5,24,20.7,25.4,20.3,27z"/> + <path d="M20.1,20H11v2h7.3C18.8,21.3,19.4,20.6,20.1,20z"/> + <path d="M17.1,24H11v2h5.4C16.6,25.3,16.8,24.6,17.1,24z"/> + <path d="M16,29c0-0.3,0-0.7,0.1-1H11v2h5.1C16,29.7,16,29.3,16,29z"/> + <path d="M16.4,32H11v2h6.1C16.8,33.4,16.6,32.7,16.4,32z"/> + </g> +</svg> diff --git a/assets/images/icons/flash_auto.svg b/assets/images/icons/flash_auto.svg new file mode 100644 index 0000000..98ce709 --- /dev/null +++ b/assets/images/icons/flash_auto.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FFC107" points="33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45"/> + <path fill="#F44336" d="M40.8,14.5h-4.3L35.6,17H33l4.5-12h2.3l4.5,12h-2.6L40.8,14.5z M37.1,12.5h3L38.6,8L37.1,12.5z"/> +</svg> diff --git a/assets/images/icons/flash_off.svg b/assets/images/icons/flash_off.svg new file mode 100644 index 0000000..e77160f --- /dev/null +++ b/assets/images/icons/flash_off.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FFC107" points="33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45"/> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> +</svg> diff --git a/assets/images/icons/flash_on.svg b/assets/images/icons/flash_on.svg new file mode 100644 index 0000000..e8e5ad6 --- /dev/null +++ b/assets/images/icons/flash_on.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FFC107" points="33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45"/> +</svg> diff --git a/assets/images/icons/flow_chart.svg b/assets/images/icons/flow_chart.svg new file mode 100644 index 0000000..2928a6e --- /dev/null +++ b/assets/images/icons/flow_chart.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#CFD8DC" points="35,36 39,36 39,22 26,22 26,13 22,13 22,22 9,22 9,36 13,36 13,26 22,26 22,36 26,36 26,26 35,26"/> + <rect x="17" y="6" fill="#3F51B5" width="14" height="10"/> + <rect x="32" y="32" fill="#00BCD4" width="10" height="10"/> + <rect x="6" y="32" fill="#00BCD4" width="10" height="10"/> + <rect x="19" y="32" fill="#00BCD4" width="10" height="10"/> +</svg> diff --git a/assets/images/icons/folder.svg b/assets/images/icons/folder.svg new file mode 100644 index 0000000..66b2e3b --- /dev/null +++ b/assets/images/icons/folder.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFA000" d="M40,12H22l-4-4H8c-2.2,0-4,1.8-4,4v8h40v-4C44,13.8,42.2,12,40,12z"/> + <path fill="#FFCA28" d="M40,12H8c-2.2,0-4,1.8-4,4v20c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V16C44,13.8,42.2,12,40,12z"/> +</svg> diff --git a/assets/images/icons/frame.svg b/assets/images/icons/frame.svg new file mode 100644 index 0000000..92937ea --- /dev/null +++ b/assets/images/icons/frame.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3949AB" d="M40.6,40.1h-1.4c-0.2,0-0.3,0-0.5,0l-3.1-0.4c-2.4-0.3-4.9-0.2-7.3,0.4l-3.6,0.9c-0.5,0.1-1.1,0.1-1.6,0 L19.6,40c-2.4-0.6-4.8-0.7-7.3-0.4l-3.1,0.4c-0.2,0-0.3,0-0.5,0H7.4c-1.9,0-3.4-1.5-3.4-3.4v0c0-0.4,0.1-0.9,0.2-1.3l0.2-0.6 c1-2.5,1.1-5.3,0.4-7.9l-0.6-2c-0.2-0.7-0.2-1.3,0-2l0.3-0.8c0.9-2.7,0.8-5.7-0.2-8.4l-0.1-0.3C4.1,13.1,4,12.7,4,12.3v-1 c0-1.9,1.5-3.4,3.4-3.4l1.4,0c0.2,0,0.3,0,0.5,0l3.1,0.4c2.4,0.3,4.9,0.2,7.3-0.4l3.6-0.9c0.5-0.1,1.1-0.1,1.6,0L28.4,8 c2.4,0.6,4.8,0.7,7.3,0.4l3.1-0.4c0.2,0,0.3,0,0.5,0l1.4,0c1.9,0,3.4,1.5,3.4,3.4v1c0,0.4-0.1,0.9-0.2,1.3l-0.1,0.3 c-1.1,2.7-1.2,5.6-0.2,8.4l0.3,0.8c0.2,0.6,0.2,1.3,0,2l-0.6,2c-0.7,2.6-0.6,5.4,0.4,7.9l0.2,0.6c0.2,0.4,0.2,0.8,0.2,1.3v0 C44,38.6,42.5,40.1,40.6,40.1z"/> + <path fill="#BBDEFB" d="M38,36H10c-0.6,0-1-0.4-1-1V13c0-0.6,0.4-1,1-1h28c0.6,0,1,0.4,1,1v22C39,35.6,38.6,36,38,36z"/> +</svg> diff --git a/assets/images/icons/full_battery.svg b/assets/images/icons/full_battery.svg new file mode 100644 index 0000000..5ce2744 --- /dev/null +++ b/assets/images/icons/full_battery.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#8BC34A"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> +</svg> diff --git a/assets/images/icons/full_trash.svg b/assets/images/icons/full_trash.svg new file mode 100644 index 0000000..bcd9a52 --- /dev/null +++ b/assets/images/icons/full_trash.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FF8A65" points="24,21.3 12.7,10 26,1.7 38.3,10"/> + <polygon fill="#FFAB91" points="24,21.3 12.7,10 17,4.7 38.3,10"/> + <path fill="#B39DDB" d="M30.6,44H17.4c-2,0-3.7-1.4-4-3.4L9,11h30l-4.5,29.6C34.2,42.6,32.5,44,30.6,44z"/> + <path fill="#7E57C2" d="M38,13H10c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v0C40,12.1,39.1,13,38,13z"/> +</svg> diff --git a/assets/images/icons/gallery.svg b/assets/images/icons/gallery.svg new file mode 100644 index 0000000..2b89567 --- /dev/null +++ b/assets/images/icons/gallery.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E65100" d="M41,42H13c-2.2,0-4-1.8-4-4V18c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20C45,40.2,43.2,42,41,42z"/> + <path fill="#F57C00" d="M35,36H7c-2.2,0-4-1.8-4-4V12c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20C39,34.2,37.2,36,35,36z"/> + <circle fill="#FFF9C4" cx="30" cy="16" r="3"/> + <polygon fill="#942A09" points="17,17.9 8,31 26,31"/> + <polygon fill="#BF360C" points="28,23.5 22,31 34,31"/> +</svg> diff --git a/assets/images/icons/genealogy.svg b/assets/images/icons/genealogy.svg new file mode 100644 index 0000000..adadfbd --- /dev/null +++ b/assets/images/icons/genealogy.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#CFD8DC" points="40,9 40,7 31,7 31,12 24,12 15,12 15,23 8,23 8,25 15,25 15,36 24,36 31,36 31,41 40,41 40,39 33,39 33,31 40,31 40,29 31,29 31,34 24,34 17,34 17,14 24,14 31,14 31,19 40,19 40,17 33,17 33,9"/> + <rect x="4" y="20" fill="#00BCD4" width="8" height="8"/> + <g fill="#3F51B5"> + <rect x="36" y="14" width="8" height="8"/> + <rect x="36" y="4" width="8" height="8"/> + <rect x="20" y="9" width="8" height="8"/> + <rect x="20" y="31" width="8" height="8"/> + <rect x="36" y="36" width="8" height="8"/> + <rect x="36" y="26" width="8" height="8"/> + </g> +</svg> diff --git a/assets/images/icons/generic_sorting_asc.svg b/assets/images/icons/generic_sorting_asc.svg new file mode 100644 index 0000000..50dcbdb --- /dev/null +++ b/assets/images/icons/generic_sorting_asc.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="6" y="6" fill="#2196F3" width="4" height="4"/> + <rect x="6" y="14" fill="#2196F3" width="12" height="4"/> + <rect x="6" y="22" fill="#2196F3" width="20" height="4"/> + <rect x="6" y="30" fill="#2196F3" width="28" height="4"/> + <rect x="6" y="38" fill="#2196F3" width="36" height="4"/> +</svg> diff --git a/assets/images/icons/generic_sorting_desc.svg b/assets/images/icons/generic_sorting_desc.svg new file mode 100644 index 0000000..d78bcf3 --- /dev/null +++ b/assets/images/icons/generic_sorting_desc.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="6" y="38" fill="#2196F3" width="4" height="4"/> + <rect x="6" y="30" fill="#2196F3" width="12" height="4"/> + <rect x="6" y="22" fill="#2196F3" width="20" height="4"/> + <rect x="6" y="14" fill="#2196F3" width="28" height="4"/> + <rect x="6" y="6" fill="#2196F3" width="36" height="4"/> +</svg> diff --git a/assets/images/icons/globe.svg b/assets/images/icons/globe.svg new file mode 100644 index 0000000..b6faa3a --- /dev/null +++ b/assets/images/icons/globe.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#7CB342" d="M24,4C13,4,4,13,4,24s9,20,20,20s20-9,20-20S35,4,24,4z"/> + <path fill="#0277BD" d="M45,24c0,11.7-9.5,21-21,21S3,35.7,3,24S12.3,3,24,3S45,12.3,45,24z M23.8,33.7c0-0.4-0.2-0.6-0.6-0.8 c-1.3-0.4-2.5-0.4-3.6-1.5c-0.2-0.4-0.2-0.8-0.4-1.3c-0.4-0.4-1.5-0.6-2.1-0.8c-0.8,0-1.7,0-2.7,0c-0.4,0-1.1,0-1.5,0 c-0.6-0.2-1.1-1.1-1.5-1.7c0-0.2,0-0.6-0.4-0.6c-0.4-0.2-0.8,0.2-1.3,0c-0.2-0.2-0.2-0.4-0.2-0.6c0-0.6,0.4-1.3,0.8-1.7 c0.6-0.4,1.3,0.2,1.9,0.2c0.2,0,0.2,0,0.4,0.2c0.6,0.2,0.8,1,0.8,1.7c0,0.2,0,0.4,0,0.4c0,0.2,0.2,0.2,0.4,0.2 c0.2-1.1,0.2-2.1,0.4-3.2c0-1.3,1.3-2.5,2.3-2.9c0.4-0.2,0.6,0.2,1.1,0c1.3-0.4,4.4-1.7,3.8-3.4c-0.4-1.5-1.7-2.9-3.4-2.7 c-0.4,0.2-0.6,0.4-1,0.6c-0.6,0.4-1.9,1.7-2.5,1.7c-1.1-0.2-1.1-1.7-0.8-2.3c0.2-0.8,2.1-3.6,3.4-3.1c0.2,0.2,0.6,0.6,0.8,0.8 c0.4,0.2,1.1,0.2,1.7,0.2c0.2,0,0.4,0,0.6-0.2c0.2-0.2,0.2-0.2,0.2-0.4c0-0.6-0.6-1.3-1-1.7c-0.4-0.4-1.1-0.8-1.7-1.1 c-2.1-0.6-5.5,0.2-7.1,1.7s-2.9,4-3.8,6.1c-0.4,1.3-0.8,2.9-1,4.4c-0.2,1-0.4,1.9,0.2,2.9c0.6,1.3,1.9,2.5,3.2,3.4 c0.8,0.6,2.5,0.6,3.4,1.7c0.6,0.8,0.4,1.9,0.4,2.9c0,1.3,0.8,2.3,1.3,3.4c0.2,0.6,0.4,1.5,0.6,2.1c0,0.2,0.2,1.5,0.2,1.7 c1.3,0.6,2.3,1.3,3.8,1.7c0.2,0,1-1.3,1-1.5c0.6-0.6,1.1-1.5,1.7-1.9c0.4-0.2,0.8-0.4,1.3-0.8c0.4-0.4,0.6-1.3,0.8-1.9 C23.8,35.1,24,34.3,23.8,33.7z M24.2,14.3c0.2,0,0.4-0.2,0.8-0.4c0.6-0.4,1.3-1.1,1.9-1.5c0.6-0.4,1.3-1.1,1.7-1.5 c0.6-0.4,1.1-1.3,1.3-1.9c0.2-0.4,0.8-1.3,0.6-1.9c-0.2-0.4-1.3-0.6-1.7-0.8c-1.7-0.4-3.1-0.6-4.8-0.6c-0.6,0-1.5,0.2-1.7,0.8 c-0.2,1.1,0.6,0.8,1.5,1.1c0,0,0.2,1.7,0.2,1.9c0.2,1-0.4,1.7-0.4,2.7c0,0.6,0,1.7,0.4,2.1L24.2,14.3z M41.8,29 c0.2-0.4,0.2-1.1,0.4-1.5c0.2-1,0.2-2.1,0.2-3.1c0-2.1-0.2-4.2-0.8-6.1c-0.4-0.6-0.6-1.3-0.8-1.9c-0.4-1.1-1-2.1-1.9-2.9 c-0.8-1.1-1.9-4-3.8-3.1c-0.6,0.2-1,1-1.5,1.5c-0.4,0.6-0.8,1.3-1.3,1.9c-0.2,0.2-0.4,0.6-0.2,0.8c0,0.2,0.2,0.2,0.4,0.2 c0.4,0.2,0.6,0.2,1,0.4c0.2,0,0.4,0.2,0.2,0.4c0,0,0,0.2-0.2,0.2c-1,1.1-2.1,1.9-3.1,2.9c-0.2,0.2-0.4,0.6-0.4,0.8 c0,0.2,0.2,0.2,0.2,0.4c0,0.2-0.2,0.2-0.4,0.4c-0.4,0.2-0.8,0.4-1.1,0.6c-0.2,0.4,0,1.1-0.2,1.5c-0.2,1.1-0.8,1.9-1.3,2.9 c-0.4,0.6-0.6,1.3-1,1.9c0,0.8-0.2,1.5,0.2,2.1c1,1.5,2.9,0.6,4.4,1.3c0.4,0.2,0.8,0.2,1.1,0.6c0.6,0.6,0.6,1.7,0.8,2.3 c0.2,0.8,0.4,1.7,0.8,2.5c0.2,1,0.6,2.1,0.8,2.9c1.9-1.5,3.6-3.1,4.8-5.2C40.6,32.4,41.2,30.7,41.8,29z"/> +</svg> diff --git a/assets/images/icons/good_decision.svg b/assets/images/icons/good_decision.svg new file mode 100644 index 0000000..9721b1a --- /dev/null +++ b/assets/images/icons/good_decision.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <g fill="#4CAF50"> + <rect x="22" y="16" width="4" height="18"/> + <rect x="15" y="23" width="18" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/graduation_cap.svg b/assets/images/icons/graduation_cap.svg new file mode 100644 index 0000000..bb4c0d9 --- /dev/null +++ b/assets/images/icons/graduation_cap.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#37474F"> + <rect x="9" y="20" width="30" height="13"/> + <ellipse cx="24" cy="33" rx="15" ry="6"/> + </g> + <path fill="#78909C" d="M23.1,8.2L0.6,18.1c-0.8,0.4-0.8,1.5,0,1.9l22.5,9.9c0.6,0.2,1.2,0.2,1.8,0l22.5-9.9c0.8-0.4,0.8-1.5,0-1.9 L24.9,8.2C24.3,7.9,23.7,7.9,23.1,8.2z"/> + <g fill="#37474F"> + <path d="M43.2,20.4l-20-3.4c-0.5-0.1-1.1,0.3-1.2,0.8c-0.1,0.5,0.3,1.1,0.8,1.2L42,22.2V37c0,0.6,0.4,1,1,1 s1-0.4,1-1V21.4C44,20.9,43.6,20.5,43.2,20.4z"/> + <circle cx="43" cy="37" r="2"/> + <path d="M46,40c0,1.7-3,6-3,6s-3-4.3-3-6s1.3-3,3-3S46,38.3,46,40z"/> + </g> +</svg> diff --git a/assets/images/icons/grid.svg b/assets/images/icons/grid.svg new file mode 100644 index 0000000..f263eaf --- /dev/null +++ b/assets/images/icons/grid.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M7,7v34h34V7H7z M39,15h-6V9h6V15z M25,15V9h6v6H25z M31,17v6h-6v-6H31z M23,15h-6V9h6V15z M23,17v6h-6v-6 H23z M15,23H9v-6h6V23z M15,25v6H9v-6H15z M17,25h6v6h-6V25z M23,33v6h-6v-6H23z M25,33h6v6h-6V33z M25,31v-6h6v6H25z M33,25h6v6h-6 V25z M33,23v-6h6v6H33z M15,9v6H9V9H15z M9,33h6v6H9V33z M33,39v-6h6v6H33z"/> +</svg> diff --git a/assets/images/icons/headset.svg b/assets/images/icons/headset.svg new file mode 100644 index 0000000..cd9791f --- /dev/null +++ b/assets/images/icons/headset.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#0097A7" d="M24,5C14.1,5,6,13.1,6,23v15h4V23c0-7.7,6.3-14,14-14s14,6.3,14,14v15h4V23C42,13.1,33.9,5,24,5z"/> + <path fill="#37474F" d="M38,43h-4V31h4c2.2,0,4,1.8,4,4v4C42,41.2,40.2,43,38,43z"/> + <path fill="#37474F" d="M10,43h4V31h-4c-2.2,0-4,1.8-4,4v4C6,41.2,7.8,43,10,43z"/> +</svg> diff --git a/assets/images/icons/heat_map.svg b/assets/images/icons/heat_map.svg new file mode 100644 index 0000000..b4dd33b --- /dev/null +++ b/assets/images/icons/heat_map.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#CFD8DC" points="9,39 9,6 7,6 7,41 42,41 42,39"/> + <g fill="#00BCD4"> + <circle cx="14" cy="11" r="2"/> + <circle cx="32" cy="11" r="2"/> + <circle cx="39" cy="11" r="2"/> + <circle cx="23" cy="11" r="4"/> + <circle cx="14" cy="33" r="2"/> + <circle cx="30" cy="33" r="2"/> + <circle cx="22" cy="33" r="3"/> + <circle cx="38" cy="33" r="4"/> + <circle cx="14" cy="22" r="2"/> + <circle cx="39" cy="22" r="2"/> + <circle cx="32" cy="22" r="3"/> + </g> +</svg> diff --git a/assets/images/icons/high_battery.svg b/assets/images/icons/high_battery.svg new file mode 100644 index 0000000..150dc7c --- /dev/null +++ b/assets/images/icons/high_battery.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#CFD8DC"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> + <path fill="#8BC34A" d="M34,44H14c-1.1,0-2-0.9-2-2V13h24v29C36,43.1,35.1,44,34,44z"/> +</svg> diff --git a/assets/images/icons/high_priority.svg b/assets/images/icons/high_priority.svg new file mode 100644 index 0000000..58ac7d5 --- /dev/null +++ b/assets/images/icons/high_priority.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z"/> + <path fill="#fff" d="M21.6,32.7c0-0.3,0.1-0.6,0.2-0.9c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.4,0.8-0.5s0.6-0.2,1-0.2 s0.7,0.1,1,0.2c0.3,0.1,0.6,0.3,0.8,0.5c0.2,0.2,0.4,0.4,0.5,0.7c0.1,0.3,0.2,0.6,0.2,0.9s-0.1,0.6-0.2,0.9s-0.3,0.5-0.5,0.7 c-0.2,0.2-0.5,0.4-0.8,0.5c-0.3,0.1-0.6,0.2-1,0.2s-0.7-0.1-1-0.2s-0.5-0.3-0.8-0.5c-0.2-0.2-0.4-0.4-0.5-0.7S21.6,33.1,21.6,32.7z M25.8,28.1h-3.6L21.7,13h4.6L25.8,28.1z"/> +</svg> diff --git a/assets/images/icons/home.svg b/assets/images/icons/home.svg new file mode 100644 index 0000000..f416760 --- /dev/null +++ b/assets/images/icons/home.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#E8EAF6" points="42,39 6,39 6,23 24,6 42,23"/> + <g fill="#C5CAE9"> + <polygon points="39,21 34,16 34,9 39,9"/> + <rect x="6" y="39" width="36" height="5"/> + </g> + <polygon fill="#B71C1C" points="24,4.3 4,22.9 6,25.1 24,8.4 42,25.1 44,22.9"/> + <rect x="18" y="28" fill="#D84315" width="12" height="16"/> + <rect x="21" y="17" fill="#01579B" width="6" height="6"/> + <path fill="#FF8A65" d="M27.5,35.5c-0.3,0-0.5,0.2-0.5,0.5v2c0,0.3,0.2,0.5,0.5,0.5S28,38.3,28,38v-2C28,35.7,27.8,35.5,27.5,35.5z"/> +</svg> diff --git a/assets/images/icons/icons8_cup.svg b/assets/images/icons/icons8_cup.svg new file mode 100644 index 0000000..7055bdb --- /dev/null +++ b/assets/images/icons/icons8_cup.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M40,14H8l3.8,28.3c0.1,1,1,1.7,2,1.7h20.5c1,0,1.8-0.7,2-1.7L40,14z"/> + <g fill="#81C784"> + <path d="M42,14H6v-3c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4V14z"/> + <path d="M37.2,10H10.8l1.7-4.7c0.3-0.8,1-1.3,1.9-1.3h19.2c0.8,0,1.6,0.5,1.9,1.3L37.2,10z"/> + </g> + <path fill="#E8F5E9" d="M28,28.5c1.2-1.1,2-2.7,2-4.5c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6c0,1.8,0.8,3.4,2,4.5c-1.2,1.1-2,2.7-2,4.5 c0,3.3,2.7,6,6,6c3.3,0,6-2.7,6-6C30,31.2,29.2,29.6,28,28.5z M24,36c-1.7,0-3-1.3-3-3c0-1.7,1.3-3,3-3c1.7,0,3,1.3,3,3 C27,34.7,25.7,36,24,36z M24,27c-1.7,0-3-1.3-3-3c0-1.7,1.3-3,3-3c1.7,0,3,1.3,3,3C27,25.7,25.7,27,24,27z"/> +</svg> diff --git a/assets/images/icons/idea.svg b/assets/images/icons/idea.svg new file mode 100644 index 0000000..c88cb27 --- /dev/null +++ b/assets/images/icons/idea.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#FFF59D" cx="24" cy="22" r="20"/> + <path fill="#FBC02D" d="M37,22c0-7.7-6.6-13.8-14.5-12.9c-6,0.7-10.8,5.5-11.4,11.5c-0.5,4.6,1.4,8.7,4.6,11.3 c1.4,1.2,2.3,2.9,2.3,4.8V37h12v-0.1c0-1.8,0.8-3.6,2.2-4.8C35.1,29.7,37,26.1,37,22z"/> + <path fill="#FFF59D" d="M30.6,20.2l-3-2c-0.3-0.2-0.8-0.2-1.1,0L24,19.8l-2.4-1.6c-0.3-0.2-0.8-0.2-1.1,0l-3,2 c-0.2,0.2-0.4,0.4-0.4,0.7s0,0.6,0.2,0.8l3.8,4.7V37h2V26c0-0.2-0.1-0.4-0.2-0.6l-3.3-4.1l1.5-1l2.4,1.6c0.3,0.2,0.8,0.2,1.1,0 l2.4-1.6l1.5,1l-3.3,4.1C25.1,25.6,25,25.8,25,26v11h2V26.4l3.8-4.7c0.2-0.2,0.3-0.5,0.2-0.8S30.8,20.3,30.6,20.2z"/> + <circle fill="#5C6BC0" cx="24" cy="44" r="3"/> + <path fill="#9FA8DA" d="M26,45h-4c-2.2,0-4-1.8-4-4v-5h12v5C30,43.2,28.2,45,26,45z"/> + <g fill="#5C6BC0"> + <path d="M30,41l-11.6,1.6c0.3,0.7,0.9,1.4,1.6,1.8l9.4-1.3C29.8,42.5,30,41.8,30,41z"/> + <polygon points="18,38.7 18,40.7 30,39 30,37"/> + </g> +</svg> diff --git a/assets/images/icons/image_file.svg b/assets/images/icons/image_file.svg new file mode 100644 index 0000000..d6a2314 --- /dev/null +++ b/assets/images/icons/image_file.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="40,45 8,45 8,3 30,3 40,13"/> + <polygon fill="#E1F5FE" points="38.5,14 29,14 29,4.5"/> + <polygon fill="#1565C0" points="21,23 14,33 28,33"/> + <polygon fill="#1976D2" points="28,26.4 23,33 33,33"/> + <circle fill="#1976D2" cx="31.5" cy="24.5" r="1.5"/> +</svg> diff --git a/assets/images/icons/import.svg b/assets/images/icons/import.svg new file mode 100644 index 0000000..1696a78 --- /dev/null +++ b/assets/images/icons/import.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F8BBD0" d="M7,40V8c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H11C8.8,44,7,42.2,7,40z"/> + <g fill="#E91E63"> + <polygon points="13.3,24 24,15 24,33"/> + <rect x="19" y="21" width="23" height="6"/> + </g> +</svg> diff --git a/assets/images/icons/in_transit.svg b/assets/images/icons/in_transit.svg new file mode 100644 index 0000000..26b4ce7 --- /dev/null +++ b/assets/images/icons/in_transit.svg @@ -0,0 +1,25 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFC107" d="M44,36H30V16c0-1.1,0.9-2,2-2h8c0.6,0,1.2,0.3,1.6,0.8l6,7.7c0.3,0.4,0.4,0.8,0.4,1.2V32 C48,34.2,46.2,36,44,36z"/> + <g fill="#9575CD"> + <path d="M8,36h22V13c0-2.2-1.8-4-4-4H4v23C4,34.2,5.8,36,8,36z"/> + <rect y="9" width="10" height="2"/> + <rect y="14" width="10" height="2"/> + <rect y="19" width="10" height="2"/> + <rect y="24" width="10" height="2"/> + </g> + <g fill="#7E57C2"> + <rect x="4" y="11" width="16" height="2"/> + <rect x="4" y="16" width="12" height="2"/> + <rect x="4" y="21" width="8" height="2"/> + <rect x="4" y="26" width="4" height="2"/> + </g> + <g fill="#37474F"> + <circle cx="39" cy="36" r="5"/> + <circle cx="16" cy="36" r="5"/> + </g> + <g fill="#78909C"> + <circle cx="39" cy="36" r="2.5"/> + <circle cx="16" cy="36" r="2.5"/> + </g> + <path fill="#455A64" d="M44,26h-3.6c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.2-0.2-0.4-0.3-0.7-0.3H34c-0.6,0-1-0.4-1-1v-6 c0-0.6,0.4-1,1-1h5.5c0.3,0,0.6,0.1,0.8,0.4l4.5,5.4c0.1,0.2,0.2,0.4,0.2,0.6V25C45,25.6,44.6,26,44,26z"/> +</svg> diff --git a/assets/images/icons/info.svg b/assets/images/icons/info.svg new file mode 100644 index 0000000..0842a79 --- /dev/null +++ b/assets/images/icons/info.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#2196F3" cx="24" cy="24" r="21"/> + <rect x="22" y="22" fill="#fff" width="4" height="11"/> + <circle fill="#fff" cx="24" cy="16.5" r="2.5"/> +</svg> diff --git a/assets/images/icons/inspection.svg b/assets/images/icons/inspection.svg new file mode 100644 index 0000000..4885aea --- /dev/null +++ b/assets/images/icons/inspection.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#455A64" d="M36,4H26c0,1.1-0.9,2-2,2s-2-0.9-2-2H12C9.8,4,8,5.8,8,8v32c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V8 C40,5.8,38.2,4,36,4z"/> + <path fill="#fff" d="M36,41H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v32C37,40.6,36.6,41,36,41z"/> + <g fill="#90A4AE"> + <path d="M26,4c0,1.1-0.9,2-2,2s-2-0.9-2-2h-7v4c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V4H26z"/> + <path d="M24,0c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,0,24,0z M24,6c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2 S25.1,6,24,6z"/> + </g> + <polygon fill="#4CAF50" points="30.6,18.6 21.6,27.6 17.4,23.3 14.9,25.8 21.7,32.5 33.1,21.1"/> +</svg> diff --git a/assets/images/icons/integrated_webcam.svg b/assets/images/icons/integrated_webcam.svg new file mode 100644 index 0000000..0026a6d --- /dev/null +++ b/assets/images/icons/integrated_webcam.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#607D8B" d="M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z"/> + <circle fill="#455A64" cx="24" cy="24" r="12"/> + <circle fill="#42A5F5" cx="24" cy="24" r="9"/> + <path fill="#90CAF9" d="M28.8,21c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,22.4,29.3,21.5,28.8,21z"/> +</svg> diff --git a/assets/images/icons/internal.svg b/assets/images/icons/internal.svg new file mode 100644 index 0000000..7be0c1f --- /dev/null +++ b/assets/images/icons/internal.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#B3E5FC" cx="24" cy="30" r="15"/> + <g fill="#1565C0"> + <polygon points="24,38.7 15,28 33,28"/> + <rect x="21" y="5" width="6" height="26"/> + </g> +</svg> diff --git a/assets/images/icons/invite.svg b/assets/images/icons/invite.svg new file mode 100644 index 0000000..9f012ad --- /dev/null +++ b/assets/images/icons/invite.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#78909C" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z"/> + <rect x="12" y="11" fill="#fff" width="24" height="22"/> + <path fill="#CFD8DC" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z"/> + <g fill="#4CAF50"> + <rect x="22" y="14" width="4" height="12"/> + <rect x="18" y="18" width="12" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/ipad.svg b/assets/images/icons/ipad.svg new file mode 100644 index 0000000..addb773 --- /dev/null +++ b/assets/images/icons/ipad.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E38939" d="M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z"/> + <path fill="#FFF3E0" d="M36,6H12c-0.6,0-1,0.4-1,1v31c0,0.6,0.4,1,1,1h24c0.6,0,1-0.4,1-1V7C37,6.4,36.6,6,36,6z"/> + <circle fill="#A6642A" cx="24" cy="42" r="1.5"/> +</svg> diff --git a/assets/images/icons/iphone.svg b/assets/images/icons/iphone.svg new file mode 100644 index 0000000..128b5d7 --- /dev/null +++ b/assets/images/icons/iphone.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E38939" d="M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z"/> + <path fill="#FFF3E0" d="M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z"/> + <circle fill="#A6642A" cx="24" cy="41" r="1.5"/> +</svg> diff --git a/assets/images/icons/key.svg b/assets/images/icons/key.svg new file mode 100644 index 0000000..a5f47e9 --- /dev/null +++ b/assets/images/icons/key.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFA000"> + <polygon points="30,41 26,45 22,45 18,41 18,21 30,21 30,29 28,31 30,33 30,35 28,37 30,39"/> + <path d="M38,7.8C37.5,6,36,4.7,34.3,4.2C31.9,3.7,28.2,3,24,3s-7.9,0.7-10.3,1.2C12,4.7,10.5,6,10,7.8 c-0.5,1.7-1,4.1-1,6.7c0,2.6,0.5,5,1,6.7c0.5,1.8,1.9,3.1,3.7,3.5C16.1,25.3,19.8,26,24,26s7.9-0.7,10.3-1.2 c1.8-0.4,3.2-1.8,3.7-3.5c0.5-1.7,1-4.1,1-6.7C39,11.9,38.5,9.5,38,7.8z M29,13H19c-1.1,0-2-0.9-2-2V9c0-0.6,3.1-1,7-1s7,0.4,7,1v2 C31,12.1,30.1,13,29,13z"/> + </g> + <rect x="23" y="26" fill="#D68600" width="2" height="19"/> +</svg> diff --git a/assets/images/icons/kindle.svg b/assets/images/icons/kindle.svg new file mode 100644 index 0000000..8a5e614 --- /dev/null +++ b/assets/images/icons/kindle.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z"/> + <path fill="#eee" d="M35,6H13c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V7C36,6.4,35.6,6,35,6z"/> + <rect x="20" y="40" fill="#546E7A" width="8" height="2"/> + <g fill="#A1A1A1"> + <rect x="16" y="11" width="16" height="3"/> + <rect x="16" y="18" width="16" height="2"/> + <rect x="16" y="22" width="12" height="2"/> + <rect x="16" y="26" width="16" height="2"/> + <rect x="16" y="30" width="12" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/landscape.svg b/assets/images/icons/landscape.svg new file mode 100644 index 0000000..dfe42d1 --- /dev/null +++ b/assets/images/icons/landscape.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FF9800"> + <rect x="36.1" y="8.1" transform="matrix(.707 .707 -.707 .707 21.201 -25.184)" width="9.9" height="9.9"/> + <rect x="36" y="8" width="10" height="10"/> + </g> + <circle fill="#FFEB3B" cx="41" cy="13" r="3"/> + <polygon fill="#2E7D32" points="16.5,18 0,42 33,42"/> + <polygon fill="#4CAF50" points="33.6,24 19.2,42 48,42"/> +</svg> diff --git a/assets/images/icons/leave.svg b/assets/images/icons/leave.svg new file mode 100644 index 0000000..5ccfd51 --- /dev/null +++ b/assets/images/icons/leave.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFCDD2" d="M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z"/> + <path fill="#F44336" d="M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z"/> + <g fill="#B71C1C"> + <circle cx="33" cy="10" r="3"/> + <circle cx="15" cy="10" r="3"/> + </g> + <g fill="#BDBDBD"> + <path d="M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z"/> + <path d="M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z"/> + </g> + <path fill="#F44336" d="M22.2,35.3c0-0.2,0-0.5,0.1-0.7c0.1-0.2,0.2-0.4,0.4-0.5s0.3-0.3,0.5-0.3c0.2-0.1,0.5-0.1,0.7-0.1 s0.5,0,0.7,0.1c0.2,0.1,0.4,0.2,0.6,0.3s0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7c0,0.2,0,0.5-0.1,0.7c-0.1,0.2-0.2,0.4-0.4,0.5 c-0.2,0.1-0.3,0.3-0.6,0.3S24.3,37,24,37s-0.5,0-0.7-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.2-0.1-0.3-0.3-0.4-0.5 C22.3,35.8,22.2,35.6,22.2,35.3z M25.3,31h-2.6l-0.4-11h3.3L25.3,31z"/> +</svg> diff --git a/assets/images/icons/left.svg b/assets/images/icons/left.svg new file mode 100644 index 0000000..c845cc9 --- /dev/null +++ b/assets/images/icons/left.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <polygon points="4,24 18,12.3 18,35.7"/> + <rect x="15" y="20" width="27" height="8"/> + </g> +</svg> diff --git a/assets/images/icons/left_down.svg b/assets/images/icons/left_down.svg new file mode 100644 index 0000000..61a2f0a --- /dev/null +++ b/assets/images/icons/left_down.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="7,41 7,23 25,41"/> + <rect x="22.6" y="5" transform="matrix(.707 .707 -.707 .707 22.912 -12.567)" fill="#3F51B5" width="8" height="32.7"/> +</svg> diff --git a/assets/images/icons/left_down2.svg b/assets/images/icons/left_down2.svg new file mode 100644 index 0000000..a7183aa --- /dev/null +++ b/assets/images/icons/left_down2.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="19,44 30.7,30 7.3,30"/> + <path fill="#3F51B5" d="M27,6h13v8H27c-2.2,0-4,1.8-4,4v17h-8V18C15,11.4,20.4,6,27,6z"/> +</svg> diff --git a/assets/images/icons/left_up.svg b/assets/images/icons/left_up.svg new file mode 100644 index 0000000..56eed19 --- /dev/null +++ b/assets/images/icons/left_up.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="7,7 25,7 7,25"/> + <rect x="22.6" y="10.3" transform="matrix(-.707 .707 -.707 -.707 64.28 26.626)" fill="#3F51B5" width="8" height="32.7"/> +</svg> diff --git a/assets/images/icons/left_up2.svg b/assets/images/icons/left_up2.svg new file mode 100644 index 0000000..c71db15 --- /dev/null +++ b/assets/images/icons/left_up2.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="19,4 30.7,18 7.3,18"/> + <path fill="#3F51B5" d="M27,42h13v-8H27c-2.2,0-4-1.8-4-4V13h-8v17C15,36.6,20.4,42,27,42z"/> +</svg> diff --git a/assets/images/icons/library.svg b/assets/images/icons/library.svg new file mode 100644 index 0000000..14dde6a --- /dev/null +++ b/assets/images/icons/library.svg @@ -0,0 +1,23 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FF9800"> + <rect x="1" y="38" width="46" height="2"/> + <rect x="25" y="18" width="4" height="16"/> + <rect x="31" y="18" width="4" height="16"/> + <rect x="37" y="18" width="4" height="16"/> + <rect x="19" y="18" width="4" height="16"/> + <rect x="13" y="18" width="4" height="16"/> + <rect x="7" y="18" width="4" height="16"/> + <polygon points="43,16 5,16 5,13 24,4 43,13"/> + <rect x="5" y="34" width="38" height="2"/> + </g> + <g fill="#EF6C00"> + <rect x="25" y="16" width="4" height="2"/> + <rect x="31" y="16" width="4" height="2"/> + <rect x="37" y="16" width="4" height="2"/> + <rect x="19" y="16" width="4" height="2"/> + <rect x="13" y="16" width="4" height="2"/> + <rect x="7" y="16" width="4" height="2"/> + <rect x="3" y="36" width="42" height="2"/> + <circle cx="24" cy="11" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/light_at_the_end_of_tunnel.svg b/assets/images/icons/light_at_the_end_of_tunnel.svg new file mode 100644 index 0000000..0ce7314 --- /dev/null +++ b/assets/images/icons/light_at_the_end_of_tunnel.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z"/> + <path fill="#CCF2F6" d="M27.9,28.9h-5.8l-8.4,7.2l6-7.2v-2.4l-3,0.8l3-1.9v-1.5c0-0.8,0.1-1.7,0.6-2.4l-7.5-8.3l8.7,7.2 c0.7-0.7,1.5-1.1,2.5-1.2l0.6-7.3l1.1,7.3c0.3,0,0.6,0.1,0.8,0.1l1.2-1.2l-0.3,1.7c0.3,0.1,0.4,0.3,0.7,0.6l4.4-2.8l-3.6,3.9 c0.3,0.4,0.6,1,0.7,1.7l2.2,0.1l-2.2,0.8c0,0.3,0,1.5,0,1.5l2.6,1.4l-2.6-0.3c0,0,0,1.8,0,2.2l6.2,7.1L27.9,28.9z"/> +</svg> diff --git a/assets/images/icons/like.svg b/assets/images/icons/like.svg new file mode 100644 index 0000000..880f592 --- /dev/null +++ b/assets/images/icons/like.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z"/> +</svg> diff --git a/assets/images/icons/like_placeholder.svg b/assets/images/icons/like_placeholder.svg new file mode 100644 index 0000000..a5050d8 --- /dev/null +++ b/assets/images/icons/like_placeholder.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFCDD2" d="M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z"/> +</svg> diff --git a/assets/images/icons/line_chart.svg b/assets/images/icons/line_chart.svg new file mode 100644 index 0000000..fcd0a78 --- /dev/null +++ b/assets/images/icons/line_chart.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <circle cx="8" cy="38" r="3"/> + <circle cx="16" cy="40" r="3"/> + <circle cx="24" cy="33" r="3"/> + <circle cx="32" cy="35" r="3"/> + <circle cx="40" cy="31" r="3"/> + <polygon points="39.1,29.2 31.8,32.9 23.5,30.8 15.5,37.8 8.5,36.1 7.5,39.9 16.5,42.2 24.5,35.2 32.2,37.1 40.9,32.8"/> + </g> + <g fill="#00BCD4"> + <circle cx="8" cy="20" r="3"/> + <circle cx="16" cy="22" r="3"/> + <circle cx="24" cy="15" r="3"/> + <circle cx="32" cy="20" r="3"/> + <circle cx="40" cy="8" r="3"/> + <path d="M38.3,6.9c-2.1,3.2-5.3,8-6.9,10.4c-1.2-0.7-3.1-2-6.4-4l-1.3-0.8l-8.3,7.3l-7-1.7l-1,3.9l9,2.3l7.7-6.7 c2.6,1.6,5.8,3.6,6.5,4.1l0.5,0.5l0.9-0.1c1.1-0.1,1.1-0.1,9.5-12.9L38.3,6.9z"/> + </g> +</svg> diff --git a/assets/images/icons/link.svg b/assets/images/icons/link.svg new file mode 100644 index 0000000..43c700f --- /dev/null +++ b/assets/images/icons/link.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1976D2"> + <path d="M38,13h-3c-5.5,0-10,4.5-10,10s4.5,10,10,10h3c5.5,0,10-4.5,10-10S43.5,13,38,13z M38,29h-3 c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c3.3,0,6,2.7,6,6S41.3,29,38,29z"/> + <path d="M13,13h-3C4.5,13,0,17.5,0,23s4.5,10,10,10h3c5.5,0,10-4.5,10-10S18.5,13,13,13z M13,29h-3 c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c3.3,0,6,2.7,6,6S16.3,29,13,29z"/> + </g> + <path fill="#42A5F5" d="M33,21H15c-1.1,0-2,0.9-2,2s0.9,2,2,2h18c1.1,0,2-0.9,2-2S34.1,21,33,21z"/> +</svg> diff --git a/assets/images/icons/list.svg b/assets/images/icons/list.svg new file mode 100644 index 0000000..f5c8082 --- /dev/null +++ b/assets/images/icons/list.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#2196F3"> + <rect x="6" y="22" width="4" height="4"/> + <rect x="6" y="14" width="4" height="4"/> + <rect x="6" y="30" width="4" height="4"/> + <rect x="6" y="6" width="4" height="4"/> + <rect x="6" y="38" width="4" height="4"/> + </g> + <g fill="#2196F3"> + <rect x="14" y="22" width="28" height="4"/> + <rect x="14" y="14" width="28" height="4"/> + <rect x="14" y="30" width="28" height="4"/> + <rect x="14" y="6" width="28" height="4"/> + <rect x="14" y="38" width="28" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/lock.svg b/assets/images/icons/lock.svg new file mode 100644 index 0000000..8d0a9b8 --- /dev/null +++ b/assets/images/icons/lock.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#424242" d="M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6v4h4v-4C34,8.5,29.5,4,24,4z"/> + <path fill="#FB8C00" d="M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z"/> + <circle fill="#C76E00" cx="24" cy="31" r="3"/> +</svg> diff --git a/assets/images/icons/lock_landscape.svg b/assets/images/icons/lock_landscape.svg new file mode 100644 index 0000000..740f80d --- /dev/null +++ b/assets/images/icons/lock_landscape.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M7,10h34c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H7c-2.2,0-4-1.8-4-4V14C3,11.8,4.8,10,7,10z"/> + <path fill="#BBDEFB" d="M42,34V14c0-0.6-0.4-1-1-1H7c-0.6,0-1,0.4-1,1v20c0,0.6,0.4,1,1,1h34C41.6,35,42,34.6,42,34z"/> + <g fill="#3F51B5"> + <path d="M29,31H19c-0.6,0-1-0.4-1-1v-6c0-0.6,0.4-1,1-1h10c0.6,0,1,0.4,1,1v6C30,30.6,29.6,31,29,31z"/> + <path d="M24,17c-2.2,0-4,1.8-4,4v3h2v-3c0-1.1,0.9-2,2-2s2,0.9,2,2v3h2v-3C28,18.8,26.2,17,24,17z"/> + </g> +</svg> diff --git a/assets/images/icons/lock_portrait.svg b/assets/images/icons/lock_portrait.svg new file mode 100644 index 0000000..5d52cf4 --- /dev/null +++ b/assets/images/icons/lock_portrait.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M10,41V7c0-2.2,1.8-4,4-4h20c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H14C11.8,45,10,43.2,10,41z"/> + <path fill="#BBDEFB" d="M34,6H14c-0.6,0-1,0.4-1,1v34c0,0.6,0.4,1,1,1h20c0.6,0,1-0.4,1-1V7C35,6.4,34.6,6,34,6z"/> + <g fill="#3F51B5"> + <path d="M29,30H19c-0.6,0-1-0.4-1-1v-6c0-0.6,0.4-1,1-1h10c0.6,0,1,0.4,1,1v6C30,29.6,29.6,30,29,30z"/> + <path d="M24,16c-2.2,0-4,1.8-4,4v3h2v-3c0-1.1,0.9-2,2-2s2,0.9,2,2v3h2v-3C28,17.8,26.2,16,24,16z"/> + </g> +</svg> diff --git a/assets/images/icons/low_battery.svg b/assets/images/icons/low_battery.svg new file mode 100644 index 0000000..7225f26 --- /dev/null +++ b/assets/images/icons/low_battery.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#CFD8DC"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> + <path fill="#8BC34A" d="M34,44H14c-1.1,0-2-0.9-2-2v-9h24v9C36,43.1,35.1,44,34,44z"/> +</svg> diff --git a/assets/images/icons/low_priority.svg b/assets/images/icons/low_priority.svg new file mode 100644 index 0000000..96ff311 --- /dev/null +++ b/assets/images/icons/low_priority.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z"/> + <g fill="#FFEB3B"> + <polygon points="24,33.4 17,25 31,25"/> + <rect x="22" y="14.8" width="4" height="12.3"/> + </g> +</svg> diff --git a/assets/images/icons/make_decision.svg b/assets/images/icons/make_decision.svg new file mode 100644 index 0000000..149774d --- /dev/null +++ b/assets/images/icons/make_decision.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <polygon fill="#FF5722" points="24,23.5 24,12.5 30.6,18"/> + <path fill="#FF5722" d="M28.9,24.4c0,0.2,0.1,0.4,0.1,0.6c0,2.8-2.2,5-5,5s-5-2.2-5-5s2.2-5,5-5c0.7,0,1.4,0.2,2,0.4v-4.2 c-0.6-0.1-1.3-0.2-2-0.2c-5,0-9,4-9,9s4,9,9,9s9-4,9-9c0-1.2-0.2-2.4-0.7-3.4L28.9,24.4z"/> +</svg> diff --git a/assets/images/icons/manager.svg b/assets/images/icons/manager.svg new file mode 100644 index 0000000..b392a58 --- /dev/null +++ b/assets/images/icons/manager.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#FF9800" points="24,37 19,31 19,25 29,25 29,31"/> + <g fill="#FFA726"> + <circle cx="33" cy="19" r="2"/> + <circle cx="15" cy="19" r="2"/> + </g> + <path fill="#FFB74D" d="M33,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,18.9,33,14.1,33,13z"/> + <path fill="#FF5722" d="M24,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H24z"/> + <g fill="#784719"> + <circle cx="28" cy="19" r="1"/> + <circle cx="20" cy="19" r="1"/> + </g> + <path fill="#CFD8DC" d="M29,31L29,31l-5,1l-5-1c0,0-11,2-11,13h32C40,33,29,31,29,31z"/> + <polygon fill="#3F51B5" points="23,35 22,44 26,44 25,35 26,34 24,32 22,34"/> +</svg> diff --git a/assets/images/icons/medium_priority.svg b/assets/images/icons/medium_priority.svg new file mode 100644 index 0000000..bcd9ca9 --- /dev/null +++ b/assets/images/icons/medium_priority.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFC107" d="M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z"/> + <g fill="#37474F"> + <circle cx="24" cy="24" r="2"/> + <circle cx="32" cy="24" r="2"/> + <circle cx="16" cy="24" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/menu.svg b/assets/images/icons/menu.svg new file mode 100644 index 0000000..1ab7df5 --- /dev/null +++ b/assets/images/icons/menu.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#607D8B"> + <rect x="6" y="22" width="36" height="4"/> + <rect x="6" y="10" width="36" height="4"/> + <rect x="6" y="34" width="36" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/middle_battery.svg b/assets/images/icons/middle_battery.svg new file mode 100644 index 0000000..a483b09 --- /dev/null +++ b/assets/images/icons/middle_battery.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#CFD8DC"> + <path d="M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z"/> + <path d="M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z"/> + </g> + <path fill="#8BC34A" d="M34,44H14c-1.1,0-2-0.9-2-2V23h24v19C36,43.1,35.1,44,34,44z"/> +</svg> diff --git a/assets/images/icons/mind_map.svg b/assets/images/icons/mind_map.svg new file mode 100644 index 0000000..a534b6b --- /dev/null +++ b/assets/images/icons/mind_map.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#CFD8DC" points="39.4,23 38.6,19 26,21.6 26,8 22,8 22,20.3 8.1,11.3 5.9,14.7 21.1,24.5 9.4,39.8 12.6,42.2 23.9,27.4 32.3,40.1 35.7,37.9 27.3,25.4"/> + <circle fill="#3F51B5" cx="24" cy="24" r="7"/> + <g fill="#00BCD4"> + <circle cx="24" cy="8" r="5"/> + <circle cx="39" cy="21" r="5"/> + <circle cx="7" cy="13" r="5"/> + <circle cx="11" cy="41" r="5"/> + <circle cx="34" cy="39" r="5"/> + </g> +</svg> diff --git a/assets/images/icons/minus.svg b/assets/images/icons/minus.svg new file mode 100644 index 0000000..c50f43c --- /dev/null +++ b/assets/images/icons/minus.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="8" y="21" fill="#5C6BC0" width="32" height="6"/> +</svg> diff --git a/assets/images/icons/missed_call.svg b/assets/images/icons/missed_call.svg new file mode 100644 index 0000000..19602f6 --- /dev/null +++ b/assets/images/icons/missed_call.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#F44336"> + <polygon points="30.3,12.9 24,19.2 15.7,10.9 12.9,13.7 24,24.8 33.1,15.7"/> + <polygon points="36,19 27,10 36,10"/> + </g> + <path fill="#009688" d="M44.5,30.8l-2.4-2.4c-8.5-8.3-28.9-7.1-36.2,0l-2.4,2.4c-0.7,0.7-0.7,1.7,0,2.4l4.8,4.7 c0.7,0.7,1.7,0.7,2.4,0l5.3-5.1l-0.4-5.6c1.7-1.7,15.1-1.7,16.8,0L32.1,33l5.1,4.9c0.7,0.7,1.7,0.7,2.4,0l4.8-4.7 C45.2,32.5,45.2,31.4,44.5,30.8z"/> +</svg> diff --git a/assets/images/icons/mms.svg b/assets/images/icons/mms.svg new file mode 100644 index 0000000..23f75fd --- /dev/null +++ b/assets/images/icons/mms.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E91E63" d="M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z"/> + <polygon fill="#F48FB1" points="20,16.5 10,31 30,31"/> + <g fill="#F8BBD0"> + <circle cx="34" cy="15" r="3"/> + <polygon points="30,21 22,31 38,31"/> + </g> +</svg> diff --git a/assets/images/icons/money_transfer.svg b/assets/images/icons/money_transfer.svg new file mode 100644 index 0000000..7804c6d --- /dev/null +++ b/assets/images/icons/money_transfer.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#78909C" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z"/> + <rect x="14" y="1" fill="#AED581" width="20" height="31"/> + <g fill="#558B2F"> + <path d="M13,0v33h22V0H13z M33,31H15V2h18V31z"/> + <path d="M34,3c0,1.7-0.3,3-2,3c-1.7,0-3-1.3-3-3s1.3-2,3-2C33.7,1,34,1.3,34,3z"/> + <path d="M16,1c1.7,0,3,0.3,3,2s-1.3,3-3,3s-2-1.3-2-3S14.3,1,16,1z"/> + <circle cx="24" cy="8" r="2"/> + <circle cx="24" cy="20" r="6"/> + </g> + <path fill="#CFD8DC" d="M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z"/> +</svg> diff --git a/assets/images/icons/multiple_cameras.svg b/assets/images/icons/multiple_cameras.svg new file mode 100644 index 0000000..029fc84 --- /dev/null +++ b/assets/images/icons/multiple_cameras.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#455A64" d="M42,41H12c-2.2,0-4-1.8-4-4V17c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v20C46,39.2,44.2,41,42,41z"/> + <path fill="#78909C" d="M36,36H6c-2.2,0-4-1.8-4-4V12c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v20C40,34.2,38.2,36,36,36z"/> + <circle fill="#455A64" cx="26" cy="22" r="10"/> + <circle fill="#42A5F5" cx="26" cy="22" r="7"/> + <path fill="#90CAF9" d="M29.7,19.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C30.1,20.7,30.1,20.1,29.7,19.7z"/> + <rect x="6" y="12" fill="#ADD8FB" width="6" height="3"/> +</svg> diff --git a/assets/images/icons/multiple_devices.svg b/assets/images/icons/multiple_devices.svg new file mode 100644 index 0000000..f8fbfac --- /dev/null +++ b/assets/images/icons/multiple_devices.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#546E7A" d="M4,28V8c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H8C5.8,32,4,30.2,4,28z"/> + <path fill="#BBDEFB" d="M36,7H8C7.4,7,7,7.4,7,8v20c0,0.6,0.4,1,1,1h28c0.6,0,1-0.4,1-1V8C37,7.4,36.6,7,36,7z"/> + <path fill="#37474F" d="M38,33H6c-2.2,0-4-1.8-4-4v0h40v0C42,31.2,40.2,33,38,33z"/> + <path fill="#E38939" d="M24,40V16c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v24c0,2.2-1.8,4-4,4H28C25.8,44,24,42.2,24,40z"/> + <path fill="#FFF3E0" d="M40,15H28c-0.6,0-1,0.4-1,1v22c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V16C41,15.4,40.6,15,40,15z"/> + <circle fill="#A6642A" cx="34" cy="41.5" r="1.5"/> +</svg> diff --git a/assets/images/icons/multiple_inputs.svg b/assets/images/icons/multiple_inputs.svg new file mode 100644 index 0000000..a403cbd --- /dev/null +++ b/assets/images/icons/multiple_inputs.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90A4AE" d="M40,35v5H8v-5H4v5c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4v-5H40z"/> + <g fill="#1565C0"> + <polygon points="24,23.4 17,15 31,15"/> + <rect x="22" y="4" width="4" height="14"/> + <path d="M31.5,26.9L30.8,28l3.5,1.9l0.6-1.2c1.6-3,2.6-4.7,3.5-5.2C39.3,23,41,23,44,23v-4 C36.3,19,35.6,19.4,31.5,26.9z"/> + <polygon points="38.4,31 29.4,35 28,25"/> + <path d="M16.5,26.9l0.6,1.2L13.6,30L13,28.8c-1.6-3-2.6-4.7-3.5-5.2C8.7,23,7,23,4,23v-4 C11.7,19,12.4,19.4,16.5,26.9z"/> + <polygon points="20,25 18.6,35 9.6,31"/> + </g> +</svg> diff --git a/assets/images/icons/multiple_smartphones.svg b/assets/images/icons/multiple_smartphones.svg new file mode 100644 index 0000000..df3a507 --- /dev/null +++ b/assets/images/icons/multiple_smartphones.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#455A64" d="M4,31V8c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v23c0,2.2-1.8,4-4,4H8C5.8,35,4,33.2,4,31z"/> + <path fill="#BBDEFB" d="M20,7H8C7.4,7,7,7.4,7,8v21c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V8C21,7.4,20.6,7,20,7z"/> + <circle fill="#37474F" cx="14" cy="32.5" r="1.5"/> + <path fill="#546E7A" d="M14,36V13c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v23c0,2.2-1.8,4-4,4H18C15.8,40,14,38.2,14,36z"/> + <path fill="#BBDEFB" d="M30,12H18c-0.6,0-1,0.4-1,1v21c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V13C31,12.4,30.6,12,30,12z"/> + <circle fill="#37474F" cx="24" cy="37.5" r="1.5"/> + <path fill="#E38939" d="M24,40V18c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v22c0,2.2-1.8,4-4,4H28C25.8,44,24,42.2,24,40z"/> + <path fill="#FFF3E0" d="M40,17H28c-0.6,0-1,0.4-1,1v20c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V18C41,17.4,40.6,17,40,17z"/> + <circle fill="#A6642A" cx="34" cy="41.5" r="1.5"/> +</svg> diff --git a/assets/images/icons/music.svg b/assets/images/icons/music.svg new file mode 100644 index 0000000..6a44511 --- /dev/null +++ b/assets/images/icons/music.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#E91E63"> + <circle cx="19" cy="33" r="9"/> + <polygon points="24,6 24,33 28,33 28,14 39,17 39,10"/> + </g> +</svg> diff --git a/assets/images/icons/negative_dynamic.svg b/assets/images/icons/negative_dynamic.svg new file mode 100644 index 0000000..51e2b69 --- /dev/null +++ b/assets/images/icons/negative_dynamic.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <rect x="19" y="22" width="10" height="20"/> + <rect x="6" y="8" width="10" height="34"/> + <rect x="32" y="30" width="10" height="12"/> + </g> + <g fill="#3F51B5"> + <polygon points="42,12 32,22 42,22"/> + <rect x="32" y="6.9" transform="matrix(.707 -.707 .707 .707 .059 28.142)" width="4" height="14.1"/> + </g> +</svg> diff --git a/assets/images/icons/neutral_decision.svg b/assets/images/icons/neutral_decision.svg new file mode 100644 index 0000000..7a54393 --- /dev/null +++ b/assets/images/icons/neutral_decision.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFCC80"> + <circle cx="38" cy="26" r="4"/> + <circle cx="10" cy="26" r="4"/> + <path d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <path d="M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z"/> + </g> + <g fill="#37474F"> + <circle cx="24" cy="25" r="2"/> + <circle cx="32" cy="25" r="2"/> + <circle cx="16" cy="25" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/neutral_trading.svg b/assets/images/icons/neutral_trading.svg new file mode 100644 index 0000000..f8c0d2e --- /dev/null +++ b/assets/images/icons/neutral_trading.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1565C0"> + <polygon points="43.4,13 35,20 35,6"/> + <rect x="4" y="11" width="34" height="4"/> + </g> + <g fill="#2196F3"> + <rect x="40" y="23" width="4" height="19"/> + <rect x="34" y="23" width="4" height="19"/> + <rect x="28" y="23" width="4" height="19"/> + <rect x="22" y="23" width="4" height="19"/> + <rect x="16" y="23" width="4" height="19"/> + <rect x="10" y="23" width="4" height="19"/> + <rect x="4" y="23" width="4" height="19"/> + </g> +</svg> diff --git a/assets/images/icons/news.svg b/assets/images/icons/news.svg new file mode 100644 index 0000000..052f42b --- /dev/null +++ b/assets/images/icons/news.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF5722" d="M32,15v28H10c-2.2,0-4-1.8-4-4V15H32z"/> + <path fill="#FFCCBC" d="M14,5v34c0,2.2-1.8,4-4,4h29c2.2,0,4-1.8,4-4V5H14z"/> + <g fill="#FF5722"> + <rect x="20" y="10" width="18" height="4"/> + <rect x="20" y="17" width="8" height="2"/> + <rect x="30" y="17" width="8" height="2"/> + <rect x="20" y="21" width="8" height="2"/> + <rect x="30" y="21" width="8" height="2"/> + <rect x="20" y="25" width="8" height="2"/> + <rect x="30" y="25" width="8" height="2"/> + <rect x="20" y="29" width="8" height="2"/> + <rect x="30" y="29" width="8" height="2"/> + <rect x="20" y="33" width="8" height="2"/> + <rect x="30" y="33" width="8" height="2"/> + <rect x="20" y="37" width="8" height="2"/> + <rect x="30" y="37" width="8" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/next.svg b/assets/images/icons/next.svg new file mode 100644 index 0000000..2986bf9 --- /dev/null +++ b/assets/images/icons/next.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#2196F3" points="17.1,5 14,8.1 29.9,24 14,39.9 17.1,43 36,24"/> +</svg> diff --git a/assets/images/icons/night_landscape.svg b/assets/images/icons/night_landscape.svg new file mode 100644 index 0000000..a25366f --- /dev/null +++ b/assets/images/icons/night_landscape.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#673AB7" points="16.5,18 0,42 33,42"/> + <polygon fill="#9575CD" points="33.6,24 19.2,42 48,42"/> + <path fill="#40C4FF" d="M42.9,6.3C43.6,7.4,44,8.6,44,10c0,3.9-3.1,7-7,7c-0.7,0-1.3-0.1-1.9-0.3c1.2,2,3.4,3.3,5.9,3.3 c3.9,0,7-3.1,7-7C48,9.8,45.9,7.1,42.9,6.3z"/> +</svg> diff --git a/assets/images/icons/night_portrait.svg b/assets/images/icons/night_portrait.svg new file mode 100644 index 0000000..41c3267 --- /dev/null +++ b/assets/images/icons/night_portrait.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#40C4FF" d="M42.9,6.3C43.6,7.4,44,8.6,44,10c0,3.9-3.1,7-7,7c-0.7,0-1.3-0.1-1.9-0.3c1.2,2,3.4,3.3,5.9,3.3 c3.9,0,7-3.1,7-7C48,9.8,45.9,7.1,42.9,6.3z"/> + <g fill="#B39DDB"> + <circle cx="31" cy="19" r="2"/> + <circle cx="13" cy="19" r="2"/> + <polygon points="22,37 17,31 17,25 27,25 27,31"/> + </g> + <path fill="#D1C4E9" d="M31,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C31,18.9,31,14.1,31,13z"/> + <g fill="#673AB7"> + <circle cx="26" cy="19" r="1"/> + <circle cx="18" cy="19" r="1"/> + <path d="M22,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H22z"/> + <path d="M27,31L27,31c0,0-2,1-5,1s-5-1-5-1S6,33,6,44h32C38,33,27,31,27,31z"/> + </g> +</svg> diff --git a/assets/images/icons/no_idea.svg b/assets/images/icons/no_idea.svg new file mode 100644 index 0000000..7496b85 --- /dev/null +++ b/assets/images/icons/no_idea.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FBC02D" d="M37,22c0-7.7-6.6-13.8-14.5-12.9c-6,0.7-10.8,5.5-11.4,11.5c-0.5,4.6,1.4,8.7,4.6,11.3 c1.4,1.2,2.3,2.9,2.3,4.8V37h12v-0.1c0-1.8,0.8-3.6,2.2-4.8C35.1,29.7,37,26.1,37,22z"/> + <path fill="#FFF59D" d="M30.6,20.2l-3-2c-0.3-0.2-0.8-0.2-1.1,0L24,19.8l-2.4-1.6c-0.3-0.2-0.8-0.2-1.1,0l-3,2 c-0.2,0.2-0.4,0.4-0.4,0.7s0,0.6,0.2,0.8l3.8,4.7V37h2V26c0-0.2-0.1-0.4-0.2-0.6l-3.3-4.1l1.5-1l2.4,1.6c0.3,0.2,0.8,0.2,1.1,0 l2.4-1.6l1.5,1l-3.3,4.1C25.1,25.6,25,25.8,25,26v11h2V26.4l3.8-4.7c0.2-0.2,0.3-0.5,0.2-0.8S30.8,20.3,30.6,20.2z"/> + <circle fill="#5C6BC0" cx="24" cy="44" r="3"/> + <path fill="#9FA8DA" d="M26,45h-4c-2.2,0-4-1.8-4-4v-5h12v5C30,43.2,28.2,45,26,45z"/> + <g fill="#5C6BC0"> + <path d="M30,41l-11.6,1.6c0.3,0.7,0.9,1.4,1.6,1.8l9.4-1.3C29.8,42.5,30,41.8,30,41z"/> + <polygon points="18,38.7 18,40.7 30,39 30,37"/> + </g> + <rect x="22" y="-2.9" transform="matrix(.707 -.707 .707 .707 -9.941 24)" fill="#37474F" width="4" height="53.7"/> +</svg> diff --git a/assets/images/icons/no_video.svg b/assets/images/icons/no_video.svg new file mode 100644 index 0000000..7db6c24 --- /dev/null +++ b/assets/images/icons/no_video.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M8,12h22c2.2,0,4,1.8,4,4v16c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V16C4,13.8,5.8,12,8,12z"/> + <polygon fill="#388E3C" points="44,35 34,29 34,19 44,13"/> + <line fill="none" stroke="#212121" stroke-width="4" stroke-linejoin="round" stroke-miterlimit="10" x1="5" y1="5" x2="43" y2="43"/> +</svg> diff --git a/assets/images/icons/nook.svg b/assets/images/icons/nook.svg new file mode 100644 index 0000000..0951a95 --- /dev/null +++ b/assets/images/icons/nook.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90A4AE" d="M8,39V9c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v30c0,3.3-2.7,6-6,6H14C10.7,45,8,42.3,8,39z"/> + <path fill="#ECEFF1" d="M34,7H14c-1.1,0-2,0.9-2,2v26c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V9C36,7.9,35.1,7,34,7z"/> + <g fill="#B0BEC5"> + <rect x="16" y="12" width="16" height="3"/> + <rect x="16" y="19" width="16" height="2"/> + <rect x="16" y="23" width="12" height="2"/> + <rect x="16" y="27" width="16" height="2"/> + <rect x="16" y="31" width="12" height="2"/> + </g> + <path fill="none" stroke="#eee" stroke-width="2" stroke-miterlimit="10" d="M22,43v-1c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2v1"/> +</svg> diff --git a/assets/images/icons/numerical_sorting_12.svg b/assets/images/icons/numerical_sorting_12.svg new file mode 100644 index 0000000..54c00bc --- /dev/null +++ b/assets/images/icons/numerical_sorting_12.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#546E7A" points="38,33 38,5 34,5 34,33 28,33 36,43 44,33"/> + <g fill="#2196F3"> + <path d="M16.4,20h-3V8.6L9.9,9.7V7.3L16,5.1h0.3V20z"/> + <path d="M19.4,43H9.2v-2l4.8-5.1c0.4-0.4,0.7-0.8,0.9-1.1c0.2-0.3,0.5-0.6,0.6-0.9c0.2-0.3,0.3-0.5,0.3-0.8 c0.1-0.2,0.1-0.5,0.1-0.7c0-0.7-0.2-1.2-0.5-1.6c-0.3-0.4-0.8-0.6-1.4-0.6c-0.3,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.5,0.3-0.7,0.5 c-0.2,0.2-0.3,0.5-0.4,0.8s-0.1,0.6-0.1,1h-3c0-0.7,0.1-1.3,0.4-1.9c0.2-0.6,0.6-1.1,1-1.6c0.5-0.4,1-0.8,1.6-1.1 c0.6-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.1,0.5,1.5,0.8s0.7,0.8,0.9,1.3s0.3,1.1,0.3,1.8c0,0.5-0.1,1-0.2,1.4 S18.3,34.5,18,35s-0.6,0.9-1,1.4c-0.4,0.5-0.9,1-1.4,1.5L13,40.6h6.4V43z"/> + </g> +</svg> diff --git a/assets/images/icons/numerical_sorting_21.svg b/assets/images/icons/numerical_sorting_21.svg new file mode 100644 index 0000000..70a34f5 --- /dev/null +++ b/assets/images/icons/numerical_sorting_21.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#546E7A" points="38,33 38,5 34,5 34,33 28,33 36,43 44,33"/> + <g fill="#2196F3"> + <path d="M19.2,20H9v-2l4.8-5.1c0.4-0.4,0.7-0.8,0.9-1.1c0.2-0.3,0.5-0.6,0.6-0.9c0.2-0.3,0.3-0.5,0.3-0.8 c0.1-0.2,0.1-0.5,0.1-0.7c0-0.7-0.2-1.2-0.5-1.6c-0.3-0.4-0.8-0.6-1.4-0.6c-0.3,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.5,0.3-0.7,0.5 c-0.2,0.2-0.3,0.5-0.4,0.8s-0.1,0.6-0.1,1h-3c0-0.7,0.1-1.3,0.4-1.9c0.2-0.6,0.6-1.1,1-1.6c0.5-0.4,1-0.8,1.6-1.1 c0.6-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.1,0.5,1.5,0.8s0.7,0.8,0.9,1.3c0.2,0.5,0.3,1.1,0.3,1.8 c0,0.5-0.1,1-0.2,1.4s-0.4,0.9-0.7,1.4s-0.6,0.9-1,1.4c-0.4,0.5-0.9,1-1.4,1.5l-2.6,2.8h6.4V20z"/> + <path d="M16.2,43h-3V31.6l-3.5,1.1v-2.4l6.2-2.2h0.3V43z"/> + </g> +</svg> diff --git a/assets/images/icons/ok.svg b/assets/images/icons/ok.svg new file mode 100644 index 0000000..9eb8075 --- /dev/null +++ b/assets/images/icons/ok.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#4CAF50" cx="24" cy="24" r="21"/> + <polygon fill="#CCFF90" points="34.6,14.6 21,28.2 15.4,22.6 12.6,25.4 21,33.8 37.4,17.4"/> +</svg> diff --git a/assets/images/icons/old_time_camera.svg b/assets/images/icons/old_time_camera.svg new file mode 100644 index 0000000..c0198e4 --- /dev/null +++ b/assets/images/icons/old_time_camera.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#546E7A" d="M14,13H8v-1.8C8,10.5,8.5,10,9.2,10h3.6c0.7,0,1.2,0.5,1.2,1.2V13z"/> + <path fill="#5E35B1" d="M40,40H8c-2.2,0-4-1.8-4-4V22h40v14C44,38.2,42.2,40,40,40z"/> + <path fill="#42257A" d="M12.7,22c-0.4,1.3-0.7,2.6-0.7,4c0,6.6,5.4,12,12,12s12-5.4,12-12c0-1.4-0.3-2.7-0.7-4H12.7z"/> + <path fill="#78909C" d="M8,12h32c2.2,0,4,1.8,4,4v6H4v-6C4,13.8,5.8,12,8,12z"/> + <path fill="#78909C" d="M33.9,13.1H14.2L17.6,8c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,13.1z"/> + <path fill="#455A64" d="M35.3,22c-1.6-4.7-6.1-8-11.3-8s-9.7,3.3-11.3,8H35.3z"/> + <circle fill="#B388FF" cx="24" cy="26" r="9"/> + <path fill="#C7A7FF" d="M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z"/> + <rect x="36" y="15" fill="#DBE2E5" width="5" height="4"/> +</svg> diff --git a/assets/images/icons/online_support.svg b/assets/images/icons/online_support.svg new file mode 100644 index 0000000..f1ec50d --- /dev/null +++ b/assets/images/icons/online_support.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="13" y="30" fill="#BF360C" width="22" height="12"/> + <g fill="#FFA726"> + <circle cx="10" cy="26" r="4"/> + <circle cx="38" cy="26" r="4"/> + </g> + <path fill="#FFB74D" d="M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z"/> + <g fill="#784719"> + <circle cx="30" cy="26" r="2"/> + <circle cx="18" cy="26" r="2"/> + </g> + <path fill="#FF5722" d="M24,2C15.5,2,3,7.8,3,35.6L13,42V24l16.8-9.8L35,21v21l10-8.2c0-5.6-0.9-29-15.4-29L28.2,2H24z"/> + <path fill="#757575" d="M45,24c-0.6,0-1,0.4-1,1v-7c0-8.8-7.2-16-16-16h-9c-0.6,0-1,0.4-1,1s0.4,1,1,1h9c7.7,0,14,6.3,14,14v10 c0,0.6,0.4,1,1,1s1-0.4,1-1v2c0,3.9-3.1,7-7,7H24c-0.6,0-1,0.4-1,1s0.4,1,1,1h13c5,0,9-4,9-9v-5C46,24.4,45.6,24,45,24z"/> + <g fill="#37474F"> + <path d="M45,22h-1c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h1c1.1,0,2-0.9,2-2v-4C47,22.9,46.1,22,45,22z"/> + <circle cx="24" cy="38" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/opened_folder.svg b/assets/images/icons/opened_folder.svg new file mode 100644 index 0000000..8ec9194 --- /dev/null +++ b/assets/images/icons/opened_folder.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFA000" d="M38,12H22l-4-4H8c-2.2,0-4,1.8-4,4v24c0,2.2,1.8,4,4,4h31c1.7,0,3-1.3,3-3V16C42,13.8,40.2,12,38,12z"/> + <path fill="#FFCA28" d="M42.2,18H15.3c-1.9,0-3.6,1.4-3.9,3.3L8,40h31.7c1.9,0,3.6-1.4,3.9-3.3l2.5-14C46.6,20.3,44.7,18,42.2,18z"/> +</svg> diff --git a/assets/images/icons/org_unit.svg b/assets/images/icons/org_unit.svg new file mode 100644 index 0000000..16207cc --- /dev/null +++ b/assets/images/icons/org_unit.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M10,10v28h28V10H10z M34,34H14V14h20V34z"/> + <rect x="6" y="6" fill="#D81B60" width="12" height="12"/> + <g fill="#2196F3"> + <rect x="30" y="6" width="12" height="12"/> + <rect x="6" y="30" width="12" height="12"/> + <rect x="30" y="30" width="12" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/organization.svg b/assets/images/icons/organization.svg new file mode 100644 index 0000000..f3b253b --- /dev/null +++ b/assets/images/icons/organization.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M42,42H6V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4V42z"/> + <rect x="6" y="42" fill="#64B5F6" width="36" height="2"/> + <g fill="#1565C0"> + <rect x="31" y="27" width="6" height="5"/> + <rect x="21" y="27" width="6" height="5"/> + <rect x="11" y="27" width="6" height="5"/> + <rect x="31" y="35" width="6" height="5"/> + <rect x="11" y="35" width="6" height="5"/> + <rect x="31" y="19" width="6" height="5"/> + <rect x="21" y="19" width="6" height="5"/> + <rect x="11" y="19" width="6" height="5"/> + <rect x="31" y="11" width="6" height="5"/> + <rect x="21" y="11" width="6" height="5"/> + <rect x="11" y="11" width="6" height="5"/> + <rect x="21" y="35" width="6" height="9"/> + </g> +</svg> diff --git a/assets/images/icons/overtime.svg b/assets/images/icons/overtime.svg new file mode 100644 index 0000000..948316c --- /dev/null +++ b/assets/images/icons/overtime.svg @@ -0,0 +1,23 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#CFD8DC" d="M12,40V20h32v20c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z"/> + <path fill="#78909C" d="M44,16v6H12v-6c0-2.2,1.8-4,4-4h24C42.2,12,44,13.8,44,16z"/> + <g fill="#37474F"> + <circle cx="37" cy="16" r="3"/> + <circle cx="20" cy="16" r="3"/> + </g> + <g fill="#B0BEC5"> + <path d="M37,10c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2s2-0.9,2-2v-4C39,10.9,38.1,10,37,10z"/> + <path d="M20,10c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2s2-0.9,2-2v-4C22,10.9,21.1,10,20,10z"/> + </g> + <rect x="32" y="34" fill="#90A4AE" width="4" height="4"/> + <rect x="26" y="34" fill="#90A4AE" width="4" height="4"/> + <rect x="20" y="34" fill="#90A4AE" width="4" height="4"/> + <rect x="32" y="28" fill="#90A4AE" width="4" height="4"/> + <rect x="26" y="28" fill="#90A4AE" width="4" height="4"/> + <rect x="20" y="28" fill="#90A4AE" width="4" height="4"/> + <circle fill="#F44336" cx="16" cy="15" r="12"/> + <circle fill="#eee" cx="16" cy="15" r="9"/> + <rect x="15" y="8" width="2" height="7"/> + <rect x="16.9" y="14.2" transform="matrix(-.707 .707 -.707 -.707 42.506 16.192)" width="1.9" height="5.4"/> + <circle cx="16" cy="15" r="1.5"/> +</svg> diff --git a/assets/images/icons/package.svg b/assets/images/icons/package.svg new file mode 100644 index 0000000..2b7e96b --- /dev/null +++ b/assets/images/icons/package.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF9800" d="M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z"/> + <path fill="#8A5100" d="M29.5,16h-11c-0.8,0-1.5-0.7-1.5-1.5v0c0-0.8,0.7-1.5,1.5-1.5h11c0.8,0,1.5,0.7,1.5,1.5v0 C31,15.3,30.3,16,29.5,16z"/> +</svg> diff --git a/assets/images/icons/paid.svg b/assets/images/icons/paid.svg new file mode 100644 index 0000000..b74fea0 --- /dev/null +++ b/assets/images/icons/paid.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2E7D32" d="M25.4,5.6c-0.8-0.8-2-0.8-2.8,0l-12,12c-0.8,0.8-0.8,2,0,2.8C11,20.8,11.5,21,12,21s1-0.2,1.4-0.6l12-12 C26.2,7.6,26.2,6.4,25.4,5.6z"/> + <path fill="#1B5E20" d="M37.4,17.6l-12-12c-0.8-0.8-2-0.8-2.8,0c-0.8,0.8-0.8,2,0,2.8l12,12C35,20.8,35.5,21,36,21s1-0.2,1.4-0.6 C38.2,19.6,38.2,18.4,37.4,17.6z"/> + <path fill="#388E3C" d="M37.4,41H10.6c-1,0-1.8-0.7-2-1.6L5,21h38l-3.7,18.4C39.1,40.3,38.3,41,37.4,41z"/> + <path fill="#4CAF50" d="M43,23H5c-1.1,0-2-0.9-2-2v-2c0-1.1,0.9-2,2-2h38c1.1,0,2,0.9,2,2v2C45,22.1,44.1,23,43,23z"/> + <polygon fill="#DCEDC8" points="30.8,24.8 22.9,32.7 19.2,28.9 17,31.1 22.9,37 33,26.9"/> +</svg> diff --git a/assets/images/icons/panorama.svg b/assets/images/icons/panorama.svg new file mode 100644 index 0000000..e3cb71d --- /dev/null +++ b/assets/images/icons/panorama.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F57C00" d="M4,9v32c0,0,8.4-3,20-3s20,3,20,3V9c0,0-6.7,3-20,3S4,9,4,9z"/> + <path fill="#942A09" d="M24,34c0.1,0,0.3,0,0.4,0L15,19L6.9,36.2C10.3,35.3,16.5,34,24,34z"/> + <path fill="#BF360C" d="M24,34c3.3,0,6.3,0.2,9,0.6l-8-11.8l-7.8,11.5C19.3,34.1,21.6,34,24,34z"/> + <path fill="#E65100" d="M40.7,36L35,26.5l-5,7.8C34.5,34.7,38.2,35.4,40.7,36z"/> + <ellipse fill="#FFF9C4" cx="36" cy="19.5" rx="2" ry="2.5"/> +</svg> diff --git a/assets/images/icons/parallel_tasks.svg b/assets/images/icons/parallel_tasks.svg new file mode 100644 index 0000000..ecd9a80 --- /dev/null +++ b/assets/images/icons/parallel_tasks.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="36,13 36,9 22,9 22,22 13,22 13,26 22,26 22,39 36,39 36,35 26,35 26,26 36,26 36,22 26,22 26,13"/> + <rect x="6" y="17" fill="#D81B60" width="10" height="14"/> + <rect x="32" y="6" fill="#2196F3" width="10" height="10"/> + <rect x="32" y="32" fill="#2196F3" width="10" height="10"/> + <rect x="32" y="19" fill="#2196F3" width="10" height="10"/> +</svg> diff --git a/assets/images/icons/phone.svg b/assets/images/icons/phone.svg new file mode 100644 index 0000000..703c4d6 --- /dev/null +++ b/assets/images/icons/phone.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#009688" d="M39.1,7l-3.7,0C22.2,7.2,7.1,24.1,7,35.4l0,3.7c0,1,0.8,1.9,1.9,1.9l7.5-0.1c1,0,1.9-0.9,1.9-1.9l0.2-8.2 l-4.7-4c0-2.6,10.5-13.1,13.2-13.2l4.3,4.7l7.9-0.2c1,0,1.9-0.9,1.9-1.9L41,8.9C41,7.8,40.2,7,39.1,7z"/> +</svg> diff --git a/assets/images/icons/phone_android.svg b/assets/images/icons/phone_android.svg new file mode 100644 index 0000000..e602e93 --- /dev/null +++ b/assets/images/icons/phone_android.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z"/> + <path fill="#BBDEFB" d="M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z"/> + <rect x="21" y="40" fill="#78909C" width="6" height="2"/> +</svg> diff --git a/assets/images/icons/photo_reel.svg b/assets/images/icons/photo_reel.svg new file mode 100644 index 0000000..0f06cfb --- /dev/null +++ b/assets/images/icons/photo_reel.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#673AB7" d="M10,9c-2.2,0-4,1.8-4,4v26c0,2.2,1.8,4,4,4h16c2.2,0,4-1.8,4-4V13c0-2.2-1.8-4-4-4"/> + <g fill="#311B92"> + <rect x="14" y="13" width="2" height="26"/> + <path d="M24,9V7c0-1.2-0.8-2-2-2h-8c-1.2,0-2,0.8-2,2v2H24z"/> + </g> + <path fill="#D84315" d="M30,13H16v26h14V13z M21,37h-3v-4h3V37z M21,19h-3v-4h3V19z M27,37h-3v-4h3V37z M24,19v-4h3v4H24z"/> + <path fill="#FF5722" d="M30,13v2h3v4h-3v14h3v4h-3v2h12V13H30z M39,37h-3v-4h3V37z M39,19h-3v-4h3V19z"/> +</svg> diff --git a/assets/images/icons/picture.svg b/assets/images/icons/picture.svg new file mode 100644 index 0000000..a6d488d --- /dev/null +++ b/assets/images/icons/picture.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F57C00" d="M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z"/> + <circle fill="#FFF9C4" cx="35" cy="16" r="3"/> + <polygon fill="#942A09" points="20,16 9,32 31,32"/> + <polygon fill="#BF360C" points="31,22 23,32 39,32"/> +</svg> diff --git a/assets/images/icons/pie_chart.svg b/assets/images/icons/pie_chart.svg new file mode 100644 index 0000000..0220fba --- /dev/null +++ b/assets/images/icons/pie_chart.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#00BCD4" d="M24,6C14.1,6,6,14.1,6,24s8.1,18,18,18c5.2,0,9.9-2.2,13.1-5.7L24,24V6z"/> + <path fill="#448AFF" d="M42,24c0-9.9-8.1-18-18-18v18H42z"/> + <path fill="#3F51B5" d="M24,24l13.1,12.3c3-3.2,4.9-7.5,4.9-12.3H24z"/> +</svg> diff --git a/assets/images/icons/planner.svg b/assets/images/icons/planner.svg new file mode 100644 index 0000000..d66c231 --- /dev/null +++ b/assets/images/icons/planner.svg @@ -0,0 +1,20 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#CFD8DC" d="M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z"/> + <path fill="#F44336" d="M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z"/> + <g fill="#B71C1C"> + <circle cx="33" cy="10" r="3"/> + <circle cx="15" cy="10" r="3"/> + </g> + <g fill="#B0BEC5"> + <path d="M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z"/> + <path d="M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z"/> + </g> + <g fill="#B0BEC5"> + <rect x="13" y="21" width="6" height="6"/> + <rect x="21" y="21" width="6" height="6"/> + <rect x="29" y="21" width="6" height="6"/> + <rect x="13" y="29" width="6" height="6"/> + <rect x="21" y="29" width="6" height="6"/> + </g> + <rect x="29" y="29" fill="#F44336" width="6" height="6"/> +</svg> diff --git a/assets/images/icons/plus.svg b/assets/images/icons/plus.svg new file mode 100644 index 0000000..37f75e1 --- /dev/null +++ b/assets/images/icons/plus.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#4CAF50" cx="24" cy="24" r="21"/> + <g fill="#fff"> + <rect x="21" y="14" width="6" height="20"/> + <rect x="14" y="21" width="20" height="6"/> + </g> +</svg> diff --git a/assets/images/icons/podium_with_audience.svg b/assets/images/icons/podium_with_audience.svg new file mode 100644 index 0000000..73d1812 --- /dev/null +++ b/assets/images/icons/podium_with_audience.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#B0BEC5" points="41,12 7,12 6,16 11,19 9,16 39,16 37,19 42,16"/> + <polygon fill="#78909C" points="9,16 39,16 35,28 13,28"/> + <circle fill="#FFB74D" cx="24" cy="28" r="4"/> + <circle fill="#FFB74D" cx="36" cy="28" r="4"/> + <circle fill="#FFB74D" cx="12" cy="28" r="4"/> + <circle fill="#FFB74D" cx="18" cy="37" r="5"/> + <circle fill="#FFB74D" cx="30" cy="37" r="5"/> +</svg> diff --git a/assets/images/icons/podium_with_speaker.svg b/assets/images/icons/podium_with_speaker.svg new file mode 100644 index 0000000..f13192d --- /dev/null +++ b/assets/images/icons/podium_with_speaker.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#FFB74D" cx="24" cy="11" r="6"/> + <path fill="#607D8B" d="M36,26.1c0,0-3.3-7.1-12-7.1s-12,7.1-12,7.1V30h24V26.1z"/> + <polygon fill="#B0BEC5" points="41,25 7,25 6,29 11,32 9,29 39,29 37,32 42,29"/> + <polygon fill="#78909C" points="9,29 39,29 35,41 13,41"/> +</svg> diff --git a/assets/images/icons/podium_without_speaker.svg b/assets/images/icons/podium_without_speaker.svg new file mode 100644 index 0000000..034653c --- /dev/null +++ b/assets/images/icons/podium_without_speaker.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#B0BEC5" points="43,16 5,16 4,20 9,23 7,20 41,20 39,23 44,20"/> + <polygon fill="#78909C" points="7,20 41,20 37,36 11,36"/> +</svg> diff --git a/assets/images/icons/portrait_mode.svg b/assets/images/icons/portrait_mode.svg new file mode 100644 index 0000000..a04070d --- /dev/null +++ b/assets/images/icons/portrait_mode.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF9800" d="M22,38c-4.8,0-5-7-5-7v-6h10v6C27,31,26.8,38,22,38z"/> + <g fill="#FFA726"> + <circle cx="31" cy="19" r="2"/> + <circle cx="13" cy="19" r="2"/> + </g> + <path fill="#FFB74D" d="M31,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C31,18.9,31,14.1,31,13z"/> + <path fill="#424242" d="M22,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H22z"/> + <g fill="#784719"> + <circle cx="26" cy="19" r="1"/> + <circle cx="18" cy="19" r="1"/> + </g> + <path fill="#009688" d="M27,31L27,31c0,0-1.8,2-5,2s-5-2-5-2S6,33,6,44h32C38,33,27,31,27,31z"/> + <g fill="#FF9800"> + <rect x="36.1" y="6.1" transform="matrix(.707 .707 -.707 .707 19.787 -25.77)" width="9.9" height="9.9"/> + <rect x="36" y="6" width="10" height="10"/> + </g> + <circle fill="#FFEB3B" cx="41" cy="11" r="3"/> +</svg> diff --git a/assets/images/icons/positive_dynamic.svg b/assets/images/icons/positive_dynamic.svg new file mode 100644 index 0000000..01f62ac --- /dev/null +++ b/assets/images/icons/positive_dynamic.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <rect x="19" y="22" width="10" height="20"/> + <rect x="32" y="8" width="10" height="34"/> + <rect x="6" y="30" width="10" height="12"/> + </g> + <g fill="#3F51B5"> + <polygon points="11,8 21,18 21,8"/> + <rect x="11" y="8.9" transform="matrix(-.707 -.707 .707 -.707 10.879 36.506)" width="4" height="14.1"/> + </g> +</svg> diff --git a/assets/images/icons/previous.svg b/assets/images/icons/previous.svg new file mode 100644 index 0000000..25baeb8 --- /dev/null +++ b/assets/images/icons/previous.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#2196F3" points="30.9,43 34,39.9 18.1,24 34,8.1 30.9,5 12,24"/> +</svg> diff --git a/assets/images/icons/print.svg b/assets/images/icons/print.svg new file mode 100644 index 0000000..2387fc5 --- /dev/null +++ b/assets/images/icons/print.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="9" y="11" fill="#424242" width="30" height="3"/> + <path fill="#616161" d="M4,25h40v-7c0-2.2-1.8-4-4-4H8c-2.2,0-4,1.8-4,4V25z"/> + <path fill="#424242" d="M8,36h32c2.2,0,4-1.8,4-4v-8H4v8C4,34.2,5.8,36,8,36z"/> + <circle fill="#00E676" cx="40" cy="18" r="1"/> + <rect x="11" y="4" fill="#90CAF9" width="26" height="10"/> + <path fill="#242424" d="M37.5,31h-27C9.7,31,9,30.3,9,29.5v0c0-0.8,0.7-1.5,1.5-1.5h27c0.8,0,1.5,0.7,1.5,1.5v0 C39,30.3,38.3,31,37.5,31z"/> + <rect x="11" y="31" fill="#90CAF9" width="26" height="11"/> + <rect x="11" y="29" fill="#42A5F5" width="26" height="2"/> + <g fill="#1976D2"> + <rect x="16" y="33" width="17" height="2"/> + <rect x="16" y="37" width="13" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/privacy.svg b/assets/images/icons/privacy.svg new file mode 100644 index 0000000..2132ecf --- /dev/null +++ b/assets/images/icons/privacy.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#424242" d="M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6v4h4v-4C34,8.5,29.5,4,24,4z"/> + <path fill="#FB8C00" d="M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z"/> + <circle fill="#EFEBE9" cx="24" cy="31" r="6"/> + <circle fill="#1E88E5" cx="24" cy="31" r="3"/> + <circle fill="#fff" cx="26" cy="29" r="1"/> +</svg> diff --git a/assets/images/icons/process.svg b/assets/images/icons/process.svg new file mode 100644 index 0000000..33b74d4 --- /dev/null +++ b/assets/images/icons/process.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#9C27B0"> + <polygon points="31,8 42.9,9.6 33.1,19.4"/> + <polygon points="17,40 5.1,38.4 14.9,28.6"/> + <polygon points="8,17 9.6,5.1 19.4,14.9"/> + <path d="M9.3,21.2L5.1,22C5,22.7,5,23.3,5,24c0,4.6,1.6,9,4.6,12.4l3-2.6C10.3,31.1,9,27.6,9,24 C9,23.1,9.1,22.1,9.3,21.2z"/> + <path d="M24,5c-5.4,0-10.2,2.3-13.7,5.9l2.8,2.8C15.9,10.8,19.7,9,24,9c0.9,0,1.9,0.1,2.8,0.3l0.7-3.9 C26.4,5.1,25.2,5,24,5z"/> + <path d="M38.7,26.8l4.2-0.8c0.1-0.7,0.1-1.3,0.1-2c0-4.4-1.5-8.7-4.3-12.1l-3.1,2.5c2.2,2.7,3.4,6.1,3.4,9.5 C39,24.9,38.9,25.9,38.7,26.8z"/> + <path d="M34.9,34.3C32.1,37.2,28.3,39,24,39c-0.9,0-1.9-0.1-2.8-0.3l-0.7,3.9c1.2,0.2,2.4,0.3,3.5,0.3 c5.4,0,10.2-2.3,13.7-5.9L34.9,34.3z"/> + <polygon points="40,31 38.4,42.9 28.6,33.1"/> + </g> +</svg> diff --git a/assets/images/icons/puzzle.svg b/assets/images/icons/puzzle.svg new file mode 100644 index 0000000..e5bc590 --- /dev/null +++ b/assets/images/icons/puzzle.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8BC34A" d="M39,15c0-2.2-1.8-4-4-4h-6c-0.7,0-1.1-0.8-0.7-1.4c0.6-1,0.9-2.2,0.6-3.5c-0.4-2-1.9-3.6-3.8-4 C21.8,1.4,19,3.9,19,7c0,1,0.3,1.8,0.7,2.6c0.4,0.6,0,1.4-0.8,1.4h-6c-2.2,0-4,1.8-4,4v7c0,0.7,0.8,1.1,1.4,0.7 c1-0.6,2.2-0.9,3.5-0.6c2,0.4,3.6,1.9,4,3.8c0.7,3.2-1.8,6.1-4.9,6.1c-1,0-1.8-0.3-2.6-0.7C9.8,30.9,9,31.3,9,32v6c0,2.2,1.8,4,4,4 h22c2.2,0,4-1.8,4-4V15z"/> +</svg> diff --git a/assets/images/icons/questions.svg b/assets/images/icons/questions.svg new file mode 100644 index 0000000..6c1b7a2 --- /dev/null +++ b/assets/images/icons/questions.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#42A5F5" points="36,44 8,44 8,8 28,8 36,16"/> + <polygon fill="#90CAF9" points="40,40 12,40 12,4 32,4 40,12"/> + <polygon fill="#E1F5FE" points="38.5,13 31,13 31,5.5"/> + <path fill="#1976D2" d="M24.5,28.3c0-4.7,3.6-4.4,3.6-7.2c0-0.7-0.2-2.1-2-2.1c-2,0-2.1,1.6-2.1,2h-2.7c0-0.7,0.3-4.2,4.8-4.2 c4.6,0,4.7,3.6,4.7,4.3c0,3.5-3.8,4-3.8,7.3H24.5z M24.3,31.8c0-0.2,0-1.5,1.5-1.5c1.4,0,1.5,1.3,1.5,1.5c0,0.4-0.2,1.4-1.5,1.4 C24.5,33.2,24.3,32.2,24.3,31.8z"/> +</svg> diff --git a/assets/images/icons/radar_plot.svg b/assets/images/icons/radar_plot.svg new file mode 100644 index 0000000..32c9a75 --- /dev/null +++ b/assets/images/icons/radar_plot.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#CFD8DC" d="M38.4,13L24.1,6.4L4.6,12.1l8.8,13.2l-2.2,15.1h22.7l6.6-13.3L38.4,13z M32.1,37.5H14.7l1.8-12.9L9.4,13.9 l14.5-4.3L35.6,15l1.8,11.7L32.1,37.5z"/> + <g fill="#00BCD4"> + <circle cx="24" cy="8" r="4"/> + <circle cx="37" cy="14" r="4"/> + <circle cx="39" cy="27" r="4"/> + <circle cx="7" cy="13" r="4"/> + <circle cx="13" cy="39" r="4"/> + <circle cx="15" cy="25" r="4"/> + <circle cx="33" cy="39" r="4"/> + </g> +</svg> diff --git a/assets/images/icons/rating.svg b/assets/images/icons/rating.svg new file mode 100644 index 0000000..d104890 --- /dev/null +++ b/assets/images/icons/rating.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#F44336" cx="24" cy="24" r="21"/> + <polygon fill="#FFCA28" points="24,11 27.9,18.9 36.6,20.2 30.3,26.3 31.8,35 24,30.9 16.2,35 17.7,26.3 11.4,20.2 20.1,18.9"/> +</svg> diff --git a/assets/images/icons/ratings.svg b/assets/images/icons/ratings.svg new file mode 100644 index 0000000..e1db30d --- /dev/null +++ b/assets/images/icons/ratings.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#42A5F5" points="36,44 8,44 8,8 28,8 36,16"/> + <polygon fill="#90CAF9" points="40,40 12,40 12,4 32,4 40,12"/> + <polygon fill="#E1F5FE" points="38.5,13 31,13 31,5.5"/> + <polygon fill="#1976D2" points="34,20 27,20 29.4,22.4 27,24.9 23,20.9 16.9,26.9 19.1,29.1 23,25.1 27,29.1 31.6,24.6 34,27"/> +</svg> diff --git a/assets/images/icons/reading.svg b/assets/images/icons/reading.svg new file mode 100644 index 0000000..d2ddffe --- /dev/null +++ b/assets/images/icons/reading.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#5C6BC0" d="M40,40c-6.9,0-16,4-16,4V22c0,0,9-4,18-4L40,40z"/> + <path fill="#7986CB" d="M8,40c6.9,0,16,4,16,4V22c0,0-9-4-18-4L8,40z"/> + <g fill="#FFB74D"> + <circle cx="24" cy="12" r="8"/> + <path d="M41,32h1c0.6,0,1-0.4,1-1v-4c0-0.6-0.4-1-1-1h-1c-1.7,0-3,1.3-3,3v0C38,30.7,39.3,32,41,32z"/> + <path d="M7,26H6c-0.6,0-1,0.4-1,1v4c0,0.6,0.4,1,1,1h1c1.7,0,3-1.3,3-3v0C10,27.3,8.7,26,7,26z"/> + </g> +</svg> diff --git a/assets/images/icons/reading_ebook.svg b/assets/images/icons/reading_ebook.svg new file mode 100644 index 0000000..ebffdf1 --- /dev/null +++ b/assets/images/icons/reading_ebook.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2196F3" d="M33.5,27c-2.2-3-5.2-5-9.5-5s-7.3,2-9.5,5H33.5z"/> + <path fill="#546E7A" d="M34.1,43H13.9c-1.1,0-1.9-0.8-2-1.9l-0.8-13C11.1,27,12,26,13.1,26h21.8c1.2,0,2.1,1,2,2.1l-0.8,13 C36,42.2,35.2,43,34.1,43z"/> + <circle fill="#B0BEC5" cx="34" cy="29" r="1"/> + <g fill="#FFB74D"> + <circle cx="24" cy="12" r="8"/> + <path d="M16.1,42.4L15,43.5c-0.6,0.6-1.6,0.6-2.2,0l-3.3-3.3c-0.6-0.6-0.6-1.6,0-2.2l1.1-1.1c1.3-1.3,3.1-1.3,4.4,0 l1.1,1.1C17.3,39.3,17.3,41.2,16.1,42.4z"/> + <path d="M31.9,38l1.1-1.1c1.3-1.3,3.1-1.3,4.4,0l1.1,1.1c0.6,0.6,0.6,1.6,0,2.2l-3.3,3.3c-0.6,0.6-1.6,0.6-2.2,0 l-1.1-1.1C30.7,41.2,30.7,39.3,31.9,38z"/> + </g> +</svg> diff --git a/assets/images/icons/redo.svg b/assets/images/icons/redo.svg new file mode 100644 index 0000000..fe7a19f --- /dev/null +++ b/assets/images/icons/redo.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <polygon points="43,18 29,6.3 29,29.7"/> + <path d="M20,14h12v8H20c-2.8,0-5,2.2-5,5s2.2,5,5,5h3v8h-3c-7.2,0-13-5.8-13-13S12.8,14,20,14z"/> + </g> +</svg> diff --git a/assets/images/icons/refresh.svg b/assets/images/icons/refresh.svg new file mode 100644 index 0000000..5cae4ce --- /dev/null +++ b/assets/images/icons/refresh.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#1565C0"> + <path d="M13,13c0-3.3,2.7-6,6-6h10c3.3,0,6,2.7,6,6h4c0-5.5-4.5-10-10-10H19C13.5,3,9,7.5,9,13v11.2h4V13z"/> + <polygon points="4.6,22 11,30.4 17.4,22"/> + </g> + <g fill="#1565C0"> + <path d="M35,35c0,3.3-2.7,6-6,6H19c-3.3,0-6-2.7-6-6H9c0,5.5,4.5,10,10,10h10c5.5,0,10-4.5,10-10V23h-4V35z"/> + <polygon points="30.6,26 37,17.6 43.4,26"/> + </g> +</svg> diff --git a/assets/images/icons/registered_trademark.svg b/assets/images/icons/registered_trademark.svg new file mode 100644 index 0000000..3fc6cf4 --- /dev/null +++ b/assets/images/icons/registered_trademark.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <path fill="#E1BEE7" d="M25,26.8h-4.5v9h-4V12.5h8.2c1.3,0,2.5,0.2,3.6,0.5c1,0.3,1.9,0.8,2.6,1.3c0.7,0.6,1.3,1.3,1.6,2.2 s0.6,1.9,0.6,3c0,1.6-0.4,2.9-1.1,3.9c-0.8,1-1.8,1.9-3.1,2.4l5.2,9.7v0.2h-4.3L25,26.8z M20.5,23.6h4.2c0.7,0,1.4-0.1,1.9-0.3 c0.5-0.2,1-0.5,1.4-0.8c0.4-0.3,0.6-0.7,0.8-1.2c0.2-0.5,0.3-1,0.3-1.6c0-0.6-0.1-1.1-0.3-1.6c-0.2-0.5-0.4-0.9-0.8-1.2 c-0.4-0.3-0.8-0.6-1.4-0.8c-0.5-0.2-1.2-0.3-2-0.3h-4.1V23.6z"/> +</svg> diff --git a/assets/images/icons/remove_image.svg b/assets/images/icons/remove_image.svg new file mode 100644 index 0000000..d64f21b --- /dev/null +++ b/assets/images/icons/remove_image.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8CBCD6" d="M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z"/> + <circle fill="#B3DDF5" cx="35" cy="16" r="3"/> + <polygon fill="#9AC9E3" points="20,16 9,32 31,32"/> + <polygon fill="#B3DDF5" points="31,22 23,32 39,32"/> + <circle fill="#F44336" cx="38" cy="38" r="10"/> + <g fill="#fff"> + <rect x="36.5" y="32" transform="matrix(-.707 .707 -.707 -.707 91.74 38)" width="3" height="12"/> + <rect x="36.5" y="32" transform="matrix(-.707 -.707 .707 -.707 38 91.74)" width="3" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/reuse.svg b/assets/images/icons/reuse.svg new file mode 100644 index 0000000..f86be4b --- /dev/null +++ b/assets/images/icons/reuse.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#455A64" points="12.1,42 17.2,42 16.5,18.2 10.9,20.2"/> + <circle fill="#FFB74D" cx="36.5" cy="10" r="5"/> + <polygon fill="#607D8B" points="11,42 6,42 7.8,18.6 14.2,20.9"/> + <path fill="#607D8B" d="M31.7,15.9c-0.6-2-1.3-4-2.5-5.8c-1.3-1.6-3.2-3.1-6.1-2c-3.1,1.3-9.2,3.6-11.2,4.5 c-2.3,1.1-4.1,2.7-4.1,5.9c0,3.4,4.3,5.3,4.3,5.3l14.7-6.1l1.7,4.5l5.3,0.1C33.8,22.4,32.3,17.9,31.7,15.9z"/> + <path fill="#B39DDB" d="M37.9,42h-7.9c-1,0-1.8-0.7-2-1.7l-2.6-17.1h17l-2.6,17.1C39.8,41.3,38.9,42,37.9,42z"/> + <path fill="#7E57C2" d="M42,24H26c-0.6,0-1-0.4-1-1v0c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v0C43,23.6,42.6,24,42,24z"/> +</svg> diff --git a/assets/images/icons/right.svg b/assets/images/icons/right.svg new file mode 100644 index 0000000..2747f21 --- /dev/null +++ b/assets/images/icons/right.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <polygon points="44,24 30,35.7 30,12.3"/> + <rect x="6" y="20" width="27" height="8"/> + </g> +</svg> diff --git a/assets/images/icons/right_down.svg b/assets/images/icons/right_down.svg new file mode 100644 index 0000000..93dbdd6 --- /dev/null +++ b/assets/images/icons/right_down.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="41,41 23,41 41,23"/> + <rect x="17.4" y="5" transform="matrix(.707 -.707 .707 .707 -8.854 21.374)" fill="#3F51B5" width="8" height="32.7"/> +</svg> diff --git a/assets/images/icons/right_down2.svg b/assets/images/icons/right_down2.svg new file mode 100644 index 0000000..83df62d --- /dev/null +++ b/assets/images/icons/right_down2.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="29,44 17.3,30 40.7,30"/> + <path fill="#3F51B5" d="M21,6H8v8h13c2.2,0,4,1.8,4,4v17h8V18C33,11.4,27.6,6,21,6z"/> +</svg> diff --git a/assets/images/icons/right_up.svg b/assets/images/icons/right_up.svg new file mode 100644 index 0000000..4e8337d --- /dev/null +++ b/assets/images/icons/right_up.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="41,7 41,25 23,7"/> + <rect x="17.4" y="10.3" transform="matrix(-.707 -.707 .707 -.707 17.661 60.567)" fill="#3F51B5" width="8" height="32.7"/> +</svg> diff --git a/assets/images/icons/right_up2.svg b/assets/images/icons/right_up2.svg new file mode 100644 index 0000000..54a166b --- /dev/null +++ b/assets/images/icons/right_up2.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="29,4 17.3,18 40.7,18"/> + <path fill="#3F51B5" d="M21,42H8v-8h13c2.2,0,4-1.8,4-4V13h8v17C33,36.6,27.6,42,21,42z"/> +</svg> diff --git a/assets/images/icons/rotate_camera.svg b/assets/images/icons/rotate_camera.svg new file mode 100644 index 0000000..f6c0a0b --- /dev/null +++ b/assets/images/icons/rotate_camera.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#5E35B1"> + <path d="M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z"/> + <path d="M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z"/> + <path d="M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z"/> + </g> + <path fill="#E8EAF6" d="M34,25c0-5.5-4.5-10-10-10s-10,4.5-10,10s4.5,10,10,10v-2c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8h-3.5 l4.5,5.6l4.5-5.6H34z"/> +</svg> diff --git a/assets/images/icons/rotate_to_landscape.svg b/assets/images/icons/rotate_to_landscape.svg new file mode 100644 index 0000000..6365afe --- /dev/null +++ b/assets/images/icons/rotate_to_landscape.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M10,41V7c0-2.2,1.8-4,4-4h20c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H14C11.8,45,10,43.2,10,41z"/> + <path fill="#F3E5F5" d="M34,6H14c-0.6,0-1,0.4-1,1v34c0,0.6,0.4,1,1,1h20c0.6,0,1-0.4,1-1V7C35,6.4,34.6,6,34,6z"/> + <polygon fill="#9C27B0" points="22,34 27.9,27 16.1,27"/> + <path fill="#9C27B0" d="M26,16c-3.3,0-6,2.7-6,6v6h4v-6c0-1.1,0.9-2,2-2s2,0.9,2,2v2h4v-2C32,18.7,29.3,16,26,16z"/> +</svg> diff --git a/assets/images/icons/rotate_to_portrait.svg b/assets/images/icons/rotate_to_portrait.svg new file mode 100644 index 0000000..26e9cd4 --- /dev/null +++ b/assets/images/icons/rotate_to_portrait.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M41,38H7c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h34c2.2,0,4,1.8,4,4v20C45,36.2,43.2,38,41,38z"/> + <path fill="#F3E5F5" d="M6,14v20c0,0.6,0.4,1,1,1h34c0.6,0,1-0.4,1-1V14c0-0.6-0.4-1-1-1H7C6.4,13,6,13.4,6,14z"/> + <polygon fill="#9C27B0" points="26,15 20.1,22 31.9,22"/> + <path fill="#9C27B0" d="M24,21v6c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-4v2c0,3.3,2.7,6,6,6s6-2.7,6-6v-6H24z"/> +</svg> diff --git a/assets/images/icons/ruler.svg b/assets/images/icons/ruler.svg new file mode 100644 index 0000000..e3cb6d6 --- /dev/null +++ b/assets/images/icons/ruler.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="16.7" y="1.6" transform="matrix(-.707 -.707 .707 -.707 24 57.941)" fill="#FFA000" width="14.6" height="44.8"/> + <g fill="#9E6400"> + <rect x="17.9" y="20.2" transform="matrix(-.707 -.707 .707 -.707 21.177 51.125)" width="6.6" height="2"/> + <rect x="22.3" y="15.2" transform="matrix(-.707 -.707 .707 -.707 29.833 44.71)" width="3.7" height="2"/> + <rect x="25.9" y="12.2" transform="matrix(-.707 -.707 .707 -.707 40.49 43.125)" width="6.6" height="2"/> + <rect x="31.2" y="6.3" transform="matrix(.707 -.707 .707 .707 3.643 25.147)" width="2" height="3.7"/> + <rect x="6.3" y="31.2" transform="matrix(-.707 -.707 .707 -.707 -8.794 60.71)" width="3.7" height="2"/> + <rect x="9.9" y="28.2" transform="matrix(-.707 -.707 .707 -.707 1.863 59.125)" width="6.6" height="2"/> + <rect x="14.3" y="23.2" transform="matrix(-.707 -.707 .707 -.707 10.52 52.71)" width="3.7" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/rules.svg b/assets/images/icons/rules.svg new file mode 100644 index 0000000..2923c9e --- /dev/null +++ b/assets/images/icons/rules.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#42A5F5" d="M39,45H9c0,0-3-0.1-3-8h36C42,44.9,39,45,39,45z"/> + <rect x="8" y="3" fill="#90CAF9" width="32" height="34"/> + <g fill="#1976D2"> + <rect x="18" y="15" width="16" height="2"/> + <rect x="18" y="19" width="16" height="2"/> + <rect x="18" y="23" width="16" height="2"/> + <rect x="18" y="27" width="16" height="2"/> + <rect x="18" y="31" width="16" height="2"/> + </g> + <g fill="#1976D2"> + <rect x="14" y="15" width="2" height="2"/> + <rect x="14" y="19" width="2" height="2"/> + <rect x="14" y="23" width="2" height="2"/> + <rect x="14" y="27" width="2" height="2"/> + <rect x="14" y="31" width="2" height="2"/> + </g> +</svg> diff --git a/assets/images/icons/safe.svg b/assets/images/icons/safe.svg new file mode 100644 index 0000000..a6ae173 --- /dev/null +++ b/assets/images/icons/safe.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="8" y="39" fill="#455A64" width="6" height="3"/> + <rect x="34" y="39" fill="#455A64" width="6" height="3"/> + <path fill="#78909C" d="M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z"/> + <path fill="#90A4AE" d="M40,38H8c-0.6,0-1-0.4-1-1V11c0-0.6,0.4-1,1-1h32c0.6,0,1,0.4,1,1v26C41,37.6,40.6,38,40,38z"/> + <path fill="#37474F" d="M29,14c-5.5,0-10,4.5-10,10c0,5.5,4.5,10,10,10s10-4.5,10-10C39,18.5,34.5,14,29,14z M29,31 c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7s7,3.1,7,7C36,27.9,32.9,31,29,31z"/> + <g fill="#B0BEC5"> + <path d="M35.3,19.1l0.4-0.4c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-0.4,0.4C34.4,18.1,34.9,18.6,35.3,19.1z"/> + <path d="M22.7,19.1c0.4-0.5,0.9-1,1.4-1.4l-0.4-0.4c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4L22.7,19.1z"/> + <path d="M21,24c0-0.3,0-0.7,0.1-1h-0.6c-0.6,0-1,0.4-1,1s0.4,1,1,1h0.6C21,24.7,21,24.3,21,24z"/> + <path d="M29,16c0.3,0,0.7,0,1,0.1v-0.6c0-0.6-0.4-1-1-1s-1,0.4-1,1v0.6C28.3,16,28.7,16,29,16z"/> + <path d="M35.3,28.9c-0.4,0.5-0.9,1-1.4,1.4l0.4,0.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4 L35.3,28.9z"/> + <path d="M22.7,28.9l-0.4,0.4c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l0.4-0.4 C23.6,29.9,23.1,29.4,22.7,28.9z"/> + <path d="M37.5,23h-0.6c0,0.3,0.1,0.7,0.1,1s0,0.7-0.1,1h0.6c0.6,0,1-0.4,1-1S38.1,23,37.5,23z"/> + <path d="M29,32c-0.3,0-0.7,0-1-0.1v0.6c0,0.6,0.4,1,1,1s1-0.4,1-1v-0.6C29.7,32,29.3,32,29,32z"/> + </g> + <path fill="#455A64" d="M12,20c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2s2-0.9,2-2v-8C14,20.9,13.1,20,12,20z"/> + <path fill="#CFD8DC" d="M12,18c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2s2-0.9,2-2v-8C14,18.9,13.1,18,12,18z"/> +</svg> diff --git a/assets/images/icons/sales_performance.svg b/assets/images/icons/sales_performance.svg new file mode 100644 index 0000000..2fbf035 --- /dev/null +++ b/assets/images/icons/sales_performance.svg @@ -0,0 +1,66 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#FFA000"> + <path d="M38,13c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,12.1,41.3,13,38,13 z"/> + <path d="M38,10c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,9.1,41.3,10,38,10z"/> + <path d="M38,16c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,15.1,41.3,16,38,16 z"/> + <path d="M38,19c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,18.1,41.3,19,38,19 z"/> + <path d="M38,22c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,21.1,41.3,22,38,22 z"/> + <path d="M38,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,24.1,41.3,25,38,25 z"/> + <path d="M38,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,27.1,41.3,28,38,28 z"/> + <path d="M38,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,30.1,41.3,31,38,31 z"/> + <path d="M38,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,33.1,41.3,34,38,34 z"/> + <path d="M38,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,36.1,41.3,37,38,37 z"/> + <path d="M38,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,39.1,41.3,40,38,40 z"/> + </g> + <g fill="#FFC107"> + <ellipse cx="38" cy="8" rx="6" ry="2"/> + <path d="M38,12c-2.8,0-5.1-0.6-5.8-1.5C32.1,10.7,32,10.8,32,11c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,11.4,40.8,12,38,12z"/> + <path d="M38,15c-2.8,0-5.1-0.6-5.8-1.5C32.1,13.7,32,13.8,32,14c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,14.4,40.8,15,38,15z"/> + <path d="M38,18c-2.8,0-5.1-0.6-5.8-1.5C32.1,16.7,32,16.8,32,17c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,17.4,40.8,18,38,18z"/> + <path d="M38,21c-2.8,0-5.1-0.6-5.8-1.5C32.1,19.7,32,19.8,32,20c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,20.4,40.8,21,38,21z"/> + <path d="M38,24c-2.8,0-5.1-0.6-5.8-1.5C32.1,22.7,32,22.8,32,23c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,23.4,40.8,24,38,24z"/> + <path d="M38,27c-2.8,0-5.1-0.6-5.8-1.5C32.1,25.7,32,25.8,32,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,26.4,40.8,27,38,27z"/> + <path d="M38,30c-2.8,0-5.1-0.6-5.8-1.5C32.1,28.7,32,28.8,32,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,29.4,40.8,30,38,30z"/> + <path d="M38,33c-2.8,0-5.1-0.6-5.8-1.5C32.1,31.7,32,31.8,32,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,32.4,40.8,33,38,33z"/> + <path d="M38,36c-2.8,0-5.1-0.6-5.8-1.5C32.1,34.7,32,34.8,32,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,35.4,40.8,36,38,36z"/> + <path d="M38,39c-2.8,0-5.1-0.6-5.8-1.5C32.1,37.7,32,37.8,32,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,38.4,40.8,39,38,39z"/> + </g> + <g fill="#FFA000"> + <path d="M10,19c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,18.1,13.3,19,10,19 z"/> + <path d="M10,16c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,15.1,13.3,16,10,16 z"/> + <path d="M10,22c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,21.1,13.3,22,10,22 z"/> + <path d="M10,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,24.1,13.3,25,10,25 z"/> + <path d="M10,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,27.1,13.3,28,10,28 z"/> + <path d="M10,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,30.1,13.3,31,10,31 z"/> + <path d="M10,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,33.1,13.3,34,10,34 z"/> + <path d="M10,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,36.1,13.3,37,10,37 z"/> + <path d="M10,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,39.1,13.3,40,10,40 z"/> + </g> + <g fill="#FFC107"> + <ellipse cx="10" cy="14" rx="6" ry="2"/> + <path d="M10,18c-2.8,0-5.1-0.6-5.8-1.5C4.1,16.7,4,16.8,4,17c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,17.4,12.8,18,10,18z"/> + <path d="M10,21c-2.8,0-5.1-0.6-5.8-1.5C4.1,19.7,4,19.8,4,20c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,20.4,12.8,21,10,21z"/> + <path d="M10,24c-2.8,0-5.1-0.6-5.8-1.5C4.1,22.7,4,22.8,4,23c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,23.4,12.8,24,10,24z"/> + <path d="M10,27c-2.8,0-5.1-0.6-5.8-1.5C4.1,25.7,4,25.8,4,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,26.4,12.8,27,10,27z"/> + <path d="M10,30c-2.8,0-5.1-0.6-5.8-1.5C4.1,28.7,4,28.8,4,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,29.4,12.8,30,10,30z"/> + <path d="M10,33c-2.8,0-5.1-0.6-5.8-1.5C4.1,31.7,4,31.8,4,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,32.4,12.8,33,10,33z"/> + <path d="M10,36c-2.8,0-5.1-0.6-5.8-1.5C4.1,34.7,4,34.8,4,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,35.4,12.8,36,10,36z"/> + <path d="M10,39c-2.8,0-5.1-0.6-5.8-1.5C4.1,37.7,4,37.8,4,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,38.4,12.8,39,10,39z"/> + </g> + <g fill="#FFA000"> + <path d="M24,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,27.1,27.3,28,24,28 z"/> + <path d="M24,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,24.1,27.3,25,24,25 z"/> + <path d="M24,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,30.1,27.3,31,24,31 z"/> + <path d="M24,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,33.1,27.3,34,24,34 z"/> + <path d="M24,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,36.1,27.3,37,24,37 z"/> + <path d="M24,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,39.1,27.3,40,24,40 z"/> + </g> + <g fill="#FFC107"> + <ellipse cx="24" cy="23" rx="6" ry="2"/> + <path d="M24,27c-2.8,0-5.1-0.6-5.8-1.5C18.1,25.7,18,25.8,18,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,26.4,26.8,27,24,27z"/> + <path d="M24,30c-2.8,0-5.1-0.6-5.8-1.5C18.1,28.7,18,28.8,18,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,29.4,26.8,30,24,30z"/> + <path d="M24,33c-2.8,0-5.1-0.6-5.8-1.5C18.1,31.7,18,31.8,18,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,32.4,26.8,33,24,33z"/> + <path d="M24,36c-2.8,0-5.1-0.6-5.8-1.5C18.1,34.7,18,34.8,18,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,35.4,26.8,36,24,36z"/> + <path d="M24,39c-2.8,0-5.1-0.6-5.8-1.5C18.1,37.7,18,37.8,18,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,38.4,26.8,39,24,39z"/> + </g> +</svg> diff --git a/assets/images/icons/scatter_plot.svg b/assets/images/icons/scatter_plot.svg new file mode 100644 index 0000000..c280f16 --- /dev/null +++ b/assets/images/icons/scatter_plot.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#CFD8DC" points="9,39 9,6 7,6 7,41 42,41 42,39"/> + <g fill="#00BCD4"> + <circle cx="39" cy="11" r="3"/> + <circle cx="31" cy="13" r="3"/> + <circle cx="37" cy="19" r="3"/> + <circle cx="34" cy="26" r="3"/> + <circle cx="28" cy="20" r="3"/> + <circle cx="26" cy="28" r="3"/> + <circle cx="20" cy="23" r="3"/> + <circle cx="21" cy="33" r="3"/> + <circle cx="14" cy="30" r="3"/> + </g> +</svg> diff --git a/assets/images/icons/search.svg b/assets/images/icons/search.svg new file mode 100644 index 0000000..78a902d --- /dev/null +++ b/assets/images/icons/search.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#616161"> + <rect x="34.6" y="28.1" transform="matrix(.707 -.707 .707 .707 -15.154 36.586)" width="4" height="17"/> + <circle cx="20" cy="20" r="16"/> + </g> + <rect x="36.2" y="32.1" transform="matrix(.707 -.707 .707 .707 -15.839 38.239)" fill="#37474F" width="4" height="12.3"/> + <circle fill="#64B5F6" cx="20" cy="20" r="13"/> + <path fill="#BBDEFB" d="M26.9,14.2c-1.7-2-4.2-3.2-6.9-3.2s-5.2,1.2-6.9,3.2c-0.4,0.4-0.3,1.1,0.1,1.4c0.4,0.4,1.1,0.3,1.4-0.1 C16,13.9,17.9,13,20,13s4,0.9,5.4,2.5c0.2,0.2,0.5,0.4,0.8,0.4c0.2,0,0.5-0.1,0.6-0.2C27.2,15.3,27.2,14.6,26.9,14.2z"/> +</svg> diff --git a/assets/images/icons/self_service_kiosk.svg b/assets/images/icons/self_service_kiosk.svg new file mode 100644 index 0000000..83cdc8a --- /dev/null +++ b/assets/images/icons/self_service_kiosk.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#546E7A" d="M44,30H4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4V30z"/> + <path fill="#64B5F6" d="M40,27H8c-0.6,0-1-0.4-1-1V11c0-0.6,0.4-1,1-1h32c0.6,0,1,0.4,1,1v15C41,26.6,40.6,27,40,27z"/> + <path fill="#78909C" d="M40,41H8c-2.2,0-4-1.8-4-4v-7h40v7C44,39.2,42.2,41,40,41z"/> + <g fill="#37474F"> + <rect x="27" y="34" width="12" height="2"/> + <rect x="9" y="34" width="12" height="2"/> + <path d="M18,35c0,1.1-1.3,2-3,2s-3-0.9-3-2H18z"/> + </g> +</svg> diff --git a/assets/images/icons/selfie.svg b/assets/images/icons/selfie.svg new file mode 100644 index 0000000..6c1960c --- /dev/null +++ b/assets/images/icons/selfie.svg @@ -0,0 +1,19 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FFB74D" d="M32.9,22c0-0.3,0.1-0.7,0.1-1c0-1.1,0-5.9,0-7c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,0.3,0,0.7,0.1,1H32.9z"/> + <path fill="#37474F" d="M40,44H8c-2.2,0-4-1.8-4-4V26c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v14C44,42.2,42.2,44,40,44z"/> + <path fill="#BBDEFB" d="M7,26v14c0,0.6,0.4,1,1,1h29c0.6,0,1-0.4,1-1V26c0-0.6-0.4-1-1-1H8C7.4,25,7,25.4,7,26z"/> + <rect x="40" y="30" fill="#78909C" width="2" height="6"/> + <rect x="19" y="32" fill="#BF360C" width="8" height="9"/> + <rect x="20.5" y="37.5" fill="#FF9800" width="5" height="3.5"/> + <path fill="#FFB74D" d="M27.5,32c0-3.8-9-2.5-9,0c0,0.5,0,3,0,3.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C27.5,35,27.5,32.5,27.5,32z"/> + <g fill="#784719"> + <circle cx="28" cy="21" r="1"/> + <circle cx="20" cy="21" r="1"/> + <circle cx="25" cy="35.5" r=".5"/> + <circle cx="21" cy="35.5" r=".5"/> + </g> + <g fill="#FF5722"> + <path d="M23,27c-3,0-8,1.3-8,11l4,3v-6.5l6-3.5l2,2.5V41l4-3c0-2-0.8-10-6-10l-0.5-1H23z"/> + <path d="M16,22v-3l12-7l4,5v5h6.8C38.3,15.8,36.1,6,28,6l-1-2h-3C18.5,4,10.7,6.8,9.2,22H16z"/> + </g> +</svg> diff --git a/assets/images/icons/serial_tasks.svg b/assets/images/icons/serial_tasks.svg new file mode 100644 index 0000000..71d92cd --- /dev/null +++ b/assets/images/icons/serial_tasks.svg @@ -0,0 +1,10 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#90CAF9" d="M33,9H11v4h22c1.1,0,2,0.9,2,2v20H23v4h16V15C39,11.7,36.3,9,33,9z"/> + <rect x="6" y="6" fill="#D81B60" width="10" height="10"/> + <g fill="#2196F3"> + <rect x="32" y="17" width="10" height="10"/> + <rect x="16" y="32" width="10" height="10"/> + <circle cx="26" cy="11" r="5"/> + <circle cx="37" cy="37" r="5"/> + </g> +</svg> diff --git a/assets/images/icons/service_mark.svg b/assets/images/icons/service_mark.svg new file mode 100644 index 0000000..9bb2199 --- /dev/null +++ b/assets/images/icons/service_mark.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <g fill="#E1BEE7"> + <path d="M16.7,28.2c0-3.8-7.3-2.2-7.3-8.1c0-0.7,0.4-4.8,5.5-4.8c5.1,0,5.4,4.5,5.4,5.3h-3.5c0-0.4,0-2.5-2-2.5 c-1.8,0-1.9,1.7-1.9,2c0,3,7.4,2,7.4,8.1c0,2-1.1,4.8-5.3,4.8C10.3,33,9,29.6,9,27.3h3.5c0,0.5-0.2,2.8,2.5,2.8 C16.8,30.2,16.7,28.5,16.7,28.2z"/> + <path d="M27.1,15.6L30.3,28l3.2-12.4h4.5v17.2h-3.5v-4.6l0.3-7.2l-3.4,11.8h-2.4l-3.4-11.8l0.3,7.2v4.6h-3.5V15.6 H27.1z"/> + </g> +</svg> diff --git a/assets/images/icons/services.svg b/assets/images/icons/services.svg new file mode 100644 index 0000000..c1e76ae --- /dev/null +++ b/assets/images/icons/services.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E65100" d="M25.6,34.4c0.1-0.4,0.1-0.9,0.1-1.4s0-0.9-0.1-1.4l2.8-2c0.3-0.2,0.4-0.6,0.2-0.9l-2.7-4.6 c-0.2-0.3-0.5-0.4-0.8-0.3L22,25.3c-0.7-0.6-1.5-1-2.4-1.4l-0.3-3.4c0-0.3-0.3-0.6-0.6-0.6h-5.3c-0.3,0-0.6,0.3-0.6,0.6L12.4,24 c-0.9,0.3-1.6,0.8-2.4,1.4l-3.1-1.4c-0.3-0.1-0.7,0-0.8,0.3l-2.7,4.6c-0.2,0.3-0.1,0.7,0.2,0.9l2.8,2c-0.1,0.4-0.1,0.9-0.1,1.4 s0,0.9,0.1,1.4l-2.8,2c-0.3,0.2-0.4,0.6-0.2,0.9l2.7,4.6c0.2,0.3,0.5,0.4,0.8,0.3l3.1-1.4c0.7,0.6,1.5,1,2.4,1.4l0.3,3.4 c0,0.3,0.3,0.6,0.6,0.6h5.3c0.3,0,0.6-0.3,0.6-0.6l0.3-3.4c0.9-0.3,1.6-0.8,2.4-1.4l3.1,1.4c0.3,0.1,0.7,0,0.8-0.3l2.7-4.6 c0.2-0.3,0.1-0.7-0.2-0.9L25.6,34.4z M16,38c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C21,35.8,18.8,38,16,38z"/> + <path fill="#FFA000" d="M41.9,15.3C42,14.8,42,14.4,42,14s0-0.8-0.1-1.3l2.5-1.8c0.3-0.2,0.3-0.5,0.2-0.8l-2.5-4.3 c-0.2-0.3-0.5-0.4-0.8-0.2l-2.9,1.3c-0.7-0.5-1.4-0.9-2.2-1.3l-0.3-3.1C36,2.2,35.8,2,35.5,2h-4.9c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.1 c-0.8,0.3-1.5,0.7-2.2,1.3l-2.9-1.3c-0.3-0.1-0.6,0-0.8,0.2l-2.5,4.3c-0.2,0.3-0.1,0.6,0.2,0.8l2.5,1.8C24,13.2,24,13.6,24,14 s0,0.8,0.1,1.3l-2.5,1.8c-0.3,0.2-0.3,0.5-0.2,0.8l2.5,4.3c0.2,0.3,0.5,0.4,0.8,0.2l2.9-1.3c0.7,0.5,1.4,0.9,2.2,1.3l0.3,3.1 c0,0.3,0.3,0.5,0.6,0.5h4.9c0.3,0,0.6-0.2,0.6-0.5l0.3-3.1c0.8-0.3,1.5-0.7,2.2-1.3l2.9,1.3c0.3,0.1,0.6,0,0.8-0.2l2.5-4.3 c0.2-0.3,0.1-0.6-0.2-0.8L41.9,15.3z M33,19c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C38,16.8,35.8,19,33,19z"/> +</svg> diff --git a/assets/images/icons/settings.svg b/assets/images/icons/settings.svg new file mode 100644 index 0000000..8450234 --- /dev/null +++ b/assets/images/icons/settings.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#607D8B" d="M39.6,27.2c0.1-0.7,0.2-1.4,0.2-2.2s-0.1-1.5-0.2-2.2l4.5-3.2c0.4-0.3,0.6-0.9,0.3-1.4L40,10.8 c-0.3-0.5-0.8-0.7-1.3-0.4l-5,2.3c-1.2-0.9-2.4-1.6-3.8-2.2l-0.5-5.5c-0.1-0.5-0.5-0.9-1-0.9h-8.6c-0.5,0-1,0.4-1,0.9l-0.5,5.5 c-1.4,0.6-2.7,1.3-3.8,2.2l-5-2.3c-0.5-0.2-1.1,0-1.3,0.4l-4.3,7.4c-0.3,0.5-0.1,1.1,0.3,1.4l4.5,3.2c-0.1,0.7-0.2,1.4-0.2,2.2 s0.1,1.5,0.2,2.2L4,30.4c-0.4,0.3-0.6,0.9-0.3,1.4L8,39.2c0.3,0.5,0.8,0.7,1.3,0.4l5-2.3c1.2,0.9,2.4,1.6,3.8,2.2l0.5,5.5 c0.1,0.5,0.5,0.9,1,0.9h8.6c0.5,0,1-0.4,1-0.9l0.5-5.5c1.4-0.6,2.7-1.3,3.8-2.2l5,2.3c0.5,0.2,1.1,0,1.3-0.4l4.3-7.4 c0.3-0.5,0.1-1.1-0.3-1.4L39.6,27.2z M24,35c-5.5,0-10-4.5-10-10c0-5.5,4.5-10,10-10c5.5,0,10,4.5,10,10C34,30.5,29.5,35,24,35z"/> + <path fill="#455A64" d="M24,13c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C36,18.4,30.6,13,24,13z M24,30 c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5s5,2.2,5,5C29,27.8,26.8,30,24,30z"/> +</svg> diff --git a/assets/images/icons/share.svg b/assets/images/icons/share.svg new file mode 100644 index 0000000..dd9f708 --- /dev/null +++ b/assets/images/icons/share.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#1976D2" d="M38.1,31.2L19.4,24l18.7-7.2c1.5-0.6,2.3-2.3,1.7-3.9c-0.6-1.5-2.3-2.3-3.9-1.7l-26,10C8.8,21.6,8,22.8,8,24 s0.8,2.4,1.9,2.8l26,10c0.4,0.1,0.7,0.2,1.1,0.2c1.2,0,2.3-0.7,2.8-1.9C40.4,33.5,39.6,31.8,38.1,31.2z"/> + <g fill="#1E88E5"> + <circle cx="11" cy="24" r="7"/> + <circle cx="37" cy="14" r="7"/> + <circle cx="37" cy="34" r="7"/> + </g> +</svg> diff --git a/assets/images/icons/shipped.svg b/assets/images/icons/shipped.svg new file mode 100644 index 0000000..deb3e12 --- /dev/null +++ b/assets/images/icons/shipped.svg @@ -0,0 +1,14 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#8BC34A" d="M43,36H29V14h10.6c0.9,0,1.6,0.6,1.9,1.4L45,26v8C45,35.1,44.1,36,43,36z"/> + <path fill="#388E3C" d="M29,36H5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h22c1.1,0,2,0.9,2,2V36z"/> + <g fill="#37474F"> + <circle cx="37" cy="36" r="5"/> + <circle cx="13" cy="36" r="5"/> + </g> + <g fill="#78909C"> + <circle cx="37" cy="36" r="2"/> + <circle cx="13" cy="36" r="2"/> + </g> + <path fill="#37474F" d="M41,25h-7c-0.6,0-1-0.4-1-1v-7c0-0.6,0.4-1,1-1h5.3c0.4,0,0.8,0.3,0.9,0.7l1.7,5.2c0,0.1,0.1,0.2,0.1,0.3V24 C42,24.6,41.6,25,41,25z"/> + <polygon fill="#DCEDC8" points="21.8,13.8 13.9,21.7 10.2,17.9 8,20.1 13.9,26 24,15.9"/> +</svg> diff --git a/assets/images/icons/shop.svg b/assets/images/icons/shop.svg new file mode 100644 index 0000000..cc7b1fc --- /dev/null +++ b/assets/images/icons/shop.svg @@ -0,0 +1,29 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="5" y="19" fill="#CFD8DC" width="38" height="19"/> + <rect x="5" y="38" fill="#B0BEC5" width="38" height="4"/> + <rect x="27" y="24" fill="#455A64" width="12" height="18"/> + <rect x="9" y="24" fill="#E3F2FD" width="14" height="11"/> + <rect x="10" y="25" fill="#1E88E5" width="12" height="9"/> + <path fill="#90A4AE" d="M36.5,33.5c-0.3,0-0.5,0.2-0.5,0.5v2c0,0.3,0.2,0.5,0.5,0.5S37,36.3,37,36v-2C37,33.7,36.8,33.5,36.5,33.5z"/> + <g fill="#558B2F"> + <circle cx="24" cy="19" r="3"/> + <circle cx="36" cy="19" r="3"/> + <circle cx="12" cy="19" r="3"/> + </g> + <path fill="#7CB342" d="M40,6H8C6.9,6,6,6.9,6,8v3h36V8C42,6.9,41.1,6,40,6z"/> + <rect x="21" y="11" fill="#7CB342" width="6" height="8"/> + <polygon fill="#7CB342" points="37,11 32,11 33,19 39,19"/> + <polygon fill="#7CB342" points="11,11 16,11 15,19 9,19"/> + <g fill="#FFA000"> + <circle cx="30" cy="19" r="3"/> + <path d="M45,19c0,1.7-1.3,3-3,3s-3-1.3-3-3s1.3-3,3-3L45,19z"/> + <circle cx="18" cy="19" r="3"/> + <path d="M3,19c0,1.7,1.3,3,3,3s3-1.3,3-3s-1.3-3-3-3L3,19z"/> + </g> + <g fill="#FFC107"> + <polygon points="32,11 27,11 27,19 33,19"/> + <polygon points="42,11 37,11 39,19 45,19"/> + <polygon points="16,11 21,11 21,19 15,19"/> + <polygon points="6,11 11,11 9,19 3,19"/> + </g> +</svg> diff --git a/assets/images/icons/signature.svg b/assets/images/icons/signature.svg new file mode 100644 index 0000000..bf2480f --- /dev/null +++ b/assets/images/icons/signature.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#1565C0" d="M38.8,28.2C41.5,24.8,45,20.1,45,12c0-0.6-0.4-1-1-1s-1,0.4-1,1c0,6.7-2.5,10.7-5,13.9c-0.6-1.9-1-4.2-1-6.9 c0-0.5-0.4-1-1-1c-0.5,0-1,0.4-1,1c-0.1,1.7-0.6,3.6-1,3.8c-0.4,0-0.9-1.4-1-2.8c0-0.5-0.5-0.9-1-0.9c-0.5,0-1,0.3-1,0.9 c-0.3,1.7-1.1,4.1-2,4.1c-0.4,0-0.6-0.1-0.7-0.3c-0.3-0.3-0.4-1-0.4-1.6c0-0.4,0.1-0.8,0.1-1.2c0-0.5-0.4-1-0.9-1 c-0.5,0-1,0.3-1.1,0.8c0,0.1-0.1,0.5-0.1,1.1C25.7,23.6,25.1,27,23,27c-0.7,0-1.1-0.2-1.4-0.7c-0.5-0.8-0.5-2.1,0-3.3c0,0,0,0,0-0.1 c0.1-0.1,0.1-0.3,0.2-0.4c0,0,0,0,0,0c0.8-1.6,1.7-2.5,3.2-2.5c0.6,0,1-0.4,1-1s-0.4-1-1-1c-4.2,0-5.4,4.1-6.6,8 c-1.4,4.8-2.7,8-6.4,8c-5.1,0-7-6.6-7-11c0-8.6,4.7-14,9-14c2.9,0,4,2.3,4.1,2.4c0.2,0.5,0.8,0.7,1.3,0.5c0.5-0.2,0.7-0.8,0.5-1.3 C19.8,10.4,18.2,7,14,7C8.6,7,3,13,3,23c0,10.3,5.9,13,9,13c5.1,0,6.8-4.5,8.1-8.5c0.7,0.9,1.7,1.5,2.9,1.5c2.2,0,3.5-1.6,4.2-3.6 c0.5,0.4,1.1,0.6,1.8,0.6c1.4,0,2.4-1.2,3-2.4c0.4,0.7,1.1,1.2,2,1.2c0.6,0,1.1-0.3,1.5-0.7c0.3,1.4,0.7,2.7,1,3.8 C35.1,29.7,34,31.2,34,33c0,1.7,1.3,3,3,3c1.8,0,3-1.6,3-3c0-1.3-0.5-2.7-1.1-4.3C38.9,28.5,38.8,28.4,38.8,28.2z M37,34 c-0.7,0-1-0.5-1-1c0-0.9,0.5-1.8,1.3-2.9c0.4,1.2,0.7,2.1,0.7,2.9C38,33.3,37.7,34,37,34z"/> + <rect x="3" y="40" fill="#90A4AE" width="42" height="2"/> +</svg> diff --git a/assets/images/icons/sim_card.svg b/assets/images/icons/sim_card.svg new file mode 100644 index 0000000..abb59da --- /dev/null +++ b/assets/images/icons/sim_card.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#009688" d="M36,45H12c-2.2,0-4-1.8-4-4V7c0-2.2,1.8-4,4-4h16.3c1.1,0,2.1,0.4,2.8,1.2l7.7,7.7c0.8,0.8,1.2,1.8,1.2,2.8 V41C40,43.2,38.2,45,36,45z"/> + <path fill="#FF9800" d="M32,38H16c-1.1,0-2-0.9-2-2V24c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2v12C34,37.1,33.1,38,32,38z"/> + <path fill="#FFD54F" d="M29,30v3h5v2h-5v3h-2V22h2v6h5v2H29z M14,29v2h5v2h-5v2h5v3h2v-9H14z"/> +</svg> diff --git a/assets/images/icons/sim_card_chip.svg b/assets/images/icons/sim_card_chip.svg new file mode 100644 index 0000000..e267215 --- /dev/null +++ b/assets/images/icons/sim_card_chip.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF9800" d="M5,35V13c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v22c0,2.2-1.8,4-4,4H9C6.8,39,5,37.2,5,35z"/> + <g fill="#FFD54F"> + <path d="M43,21v-2H31c-1.1,0-2-0.9-2-2s0.9-2,2-2h1v-2h-1c-2.2,0-4,1.8-4,4s1.8,4,4,4h3v6h-3c-2.8,0-5,2.2-5,5 s2.2,5,5,5h2v-2h-2c-1.7,0-3-1.3-3-3s1.3-3,3-3h12v-2h-7v-6H43z"/> + <path d="M17,27h-3v-6h3c2.2,0,4-1.8,4-4s-1.8-4-4-4h-3v2h3c1.1,0,2,0.9,2,2s-0.9,2-2,2H5v2h7v6H5v2h12 c1.7,0,3,1.3,3,3s-1.3,3-3,3h-2v2h2c2.8,0,5-2.2,5-5S19.8,27,17,27z"/> + </g> +</svg> diff --git a/assets/images/icons/slr_back_side.svg b/assets/images/icons/slr_back_side.svg new file mode 100644 index 0000000..e5d771b --- /dev/null +++ b/assets/images/icons/slr_back_side.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#5E35B1" d="M40,10h-7.6l-2-3c-0.4-0.6-1-0.9-1.7-0.9h-9.6c-0.7,0-1.3,0.3-1.7,0.9l-2,3H8c-2.2,0-4,1.8-4,4v24 c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V14C44,11.8,42.2,10,40,10z"/> + <path fill="#F57C00" d="M11,16h20c0.6,0,1,0.4,1,1v16c0,0.6-0.4,1-1,1H11c-0.6,0-1-0.4-1-1V17C10,16.4,10.4,16,11,16z"/> + <polygon fill="#942A09" points="18.9,22 12,32 25.8,32"/> + <circle fill="#FFF9C4" cx="27" cy="21" r="2"/> + <polygon fill="#BF360C" points="25.2,26 20.4,32 30,32"/> + <g fill="#8667C4"> + <path d="M34,10h6V9.2C40,8.5,39.5,8,38.8,8h-3.6C34.5,8,34,8.5,34,9.2V10z"/> + <circle cx="38" cy="18" r="2"/> + <circle cx="38" cy="24" r="2"/> + <circle cx="38" cy="30" r="2"/> + </g> +</svg> diff --git a/assets/images/icons/smartphone_tablet.svg b/assets/images/icons/smartphone_tablet.svg new file mode 100644 index 0000000..5eec678 --- /dev/null +++ b/assets/images/icons/smartphone_tablet.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M4,39V7c0-2.2,1.8-4,4-4h22c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H8C5.8,43,4,41.2,4,39z"/> + <path fill="#BBDEFB" d="M30,6H8C7.4,6,7,6.4,7,7v29c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V7C31,6.4,30.6,6,30,6z"/> + <rect x="15" y="39" fill="#78909C" width="6" height="2"/> + <path fill="#E38939" d="M24,41V17c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v24c0,2.2-1.8,4-4,4H28C25.8,45,24,43.2,24,41z"/> + <path fill="#FFF3E0" d="M40,16H28c-0.6,0-1,0.4-1,1v22c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V17C41,16.4,40.6,16,40,16z"/> + <circle fill="#A6642A" cx="34" cy="42.5" r="1.5"/> +</svg> diff --git a/assets/images/icons/sms.svg b/assets/images/icons/sms.svg new file mode 100644 index 0000000..72a6e4c --- /dev/null +++ b/assets/images/icons/sms.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#009688" d="M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z"/> + <g fill="#fff"> + <circle cx="24" cy="22" r="3"/> + <circle cx="34" cy="22" r="3"/> + <circle cx="14" cy="22" r="3"/> + </g> +</svg> diff --git a/assets/images/icons/sound_recording_copyright.svg b/assets/images/icons/sound_recording_copyright.svg new file mode 100644 index 0000000..4d27d58 --- /dev/null +++ b/assets/images/icons/sound_recording_copyright.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <path fill="#E1BEE7" d="M20.7,27.2v8.4h-3.9V12.9h8.7c1.3,0,2.5,0.2,3.5,0.5c1,0.4,1.9,0.9,2.6,1.5c0.7,0.6,1.2,1.4,1.6,2.3 c0.4,0.9,0.6,1.8,0.6,2.9c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.6-1.6,2.2c-0.7,0.6-1.6,1.1-2.6,1.4c-1,0.3-2.2,0.5-3.5,0.5H20.7z M20.7,24h4.7c0.8,0,1.4-0.1,2-0.3c0.5-0.2,1-0.5,1.4-0.8c0.4-0.3,0.6-0.8,0.8-1.2c0.2-0.5,0.2-1,0.2-1.6c0-0.5-0.1-1-0.2-1.5 c-0.2-0.5-0.4-0.9-0.8-1.3c-0.4-0.4-0.8-0.7-1.4-0.9c-0.5-0.2-1.2-0.3-2-0.3h-4.7V24z"/> +</svg> diff --git a/assets/images/icons/speaker.svg b/assets/images/icons/speaker.svg new file mode 100644 index 0000000..f5f0a93 --- /dev/null +++ b/assets/images/icons/speaker.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#81D4FA" d="M28,7.1v2c7.3,1,13,7.3,13,14.9s-5.7,13.9-13,14.9v2c8.4-1,15-8.2,15-16.9S36.4,8.1,28,7.1z"/> + <path fill="#546E7A" d="M14,32H7c-1.1,0-2-0.9-2-2V18c0-1.1,0.9-2,2-2h7V32z"/> + <polygon fill="#78909C" points="26,42 14,32 14,16 26,6"/> + <path fill="#03A9F4" d="M28,17.3v2.1c1.8,0.8,3,2.5,3,4.6s-1.2,3.8-3,4.6v2.1c2.9-0.9,5-3.5,5-6.7S30.9,18.2,28,17.3z"/> + <path fill="#4FC3F7" d="M28,12.2v2c4.6,0.9,8,5,8,9.8s-3.4,8.9-8,9.8v2c5.7-1,10-5.9,10-11.8S33.7,13.1,28,12.2z"/> +</svg> diff --git a/assets/images/icons/sports_mode.svg b/assets/images/icons/sports_mode.svg new file mode 100644 index 0000000..e670522 --- /dev/null +++ b/assets/images/icons/sports_mode.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#FF9800" cx="28" cy="9" r="5"/> + <path fill="#00796B" d="M29,27.3l-9.2-4.1c-1-0.5-1.5,1-2,2c-0.5,1-4.1,7.2-3.8,8.3c0.3,0.9,1.1,1.4,1.9,1.4c0.2,0,0.4,0,0.6-0.1 L28.8,31c0.8-0.2,1.4-1,1.4-1.8C30.2,28.4,29.7,27.6,29,27.3z"/> + <path fill="#009688" d="M26.8,15.2l-2.2-1c-1.3-0.6-2.9,0-3.5,1.3L9.2,41.1c-0.5,1,0,2.2,1,2.7c0.3,0.1,0.6,0.2,0.9,0.2 c0.8,0,1.5-0.4,1.8-1.1c0,0,9.6-13.3,10.4-14.9s4.9-9.3,4.9-9.3C28.7,17.4,28.2,15.8,26.8,15.2z"/> + <path fill="#FF9800" d="M40.5,15.7c-0.7-0.8-2-1-2.8-0.3l-5,4.2l-6.4-3.5c-1.1-0.6-2.6-0.4-3.3,0.9c-0.8,1.3-0.4,2.9,0.8,3.4 l8.3,3.4c0.3,0.1,0.6,0.2,0.9,0.2c0.5,0,0.9-0.2,1.3-0.5l6-5C41.1,17.8,41.2,16.6,40.5,15.7z"/> + <path fill="#FF9800" d="M11.7,23.1l3.4-5.1l4.6,0.6l1.5-3.1c0.4-0.9,1.2-1.4,2.1-1.5c-0.1,0-0.2,0-0.2,0h-9c-0.7,0-1.3,0.3-1.7,0.9 l-4,6c-0.6,0.9-0.4,2.2,0.6,2.8C9.2,23.9,9.6,24,10,24C10.6,24,11.3,23.7,11.7,23.1z"/> +</svg> diff --git a/assets/images/icons/stack_of_photos.svg b/assets/images/icons/stack_of_photos.svg new file mode 100644 index 0000000..10d1716 --- /dev/null +++ b/assets/images/icons/stack_of_photos.svg @@ -0,0 +1,15 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="12.3" y="12.3" transform="matrix(.948 .318 -.318 .948 9.725 -6.994)" fill="#64B5F6" width="28" height="28"/> + <rect x="15.6" y="15.4" transform="matrix(.951 .31 -.31 .951 9.176 -6.977)" fill="#1E88E5" width="22" height="20"/> + <rect x="8.1" y="8.1" transform="matrix(.983 .181 -.181 .983 4.385 -3.65)" fill="#90CAF9" width="28" height="28"/> + <rect x="11.3" y="11.2" transform="matrix(.985 .175 -.175 .985 4.048 -3.566)" fill="#42A5F5" width="22" height="20"/> + <rect x="4" y="4" fill="#BBDEFB" width="28" height="28"/> + <rect x="7" y="7" fill="#4CAF50" width="22" height="20"/> + <path fill="#fff" d="M16,13c0-1.1,0.9-2,2-2s2,0.9,2,2s-2,4-2,4S16,14.1,16,13z"/> + <path fill="#fff" d="M20,21c0,1.1-0.9,2-2,2s-2-0.9-2-2s2-4,2-4S20,19.9,20,21z"/> + <path fill="#fff" d="M13.5,16.7c-1-0.6-1.3-1.8-0.7-2.7c0.6-1,1.8-1.3,2.7-0.7c1,0.6,2.5,3.7,2.5,3.7S14.5,17.3,13.5,16.7z"/> + <path fill="#fff" d="M22.5,17.3c1,0.6,1.3,1.8,0.7,2.7c-0.6,1-1.8,1.3-2.7,0.7C19.5,20.2,18,17,18,17S21.5,16.7,22.5,17.3z"/> + <path fill="#fff" d="M22.5,16.7c1-0.6,1.3-1.8,0.7-2.7c-0.6-1-1.8-1.3-2.7-0.7C19.5,13.8,18,17,18,17S21.5,17.3,22.5,16.7z"/> + <path fill="#fff" d="M13.5,17.3c-1,0.6-1.3,1.8-0.7,2.7c0.6,1,1.8,1.3,2.7,0.7c1-0.6,2.5-3.7,2.5-3.7S14.5,16.7,13.5,17.3z"/> + <circle fill="#FFC107" cx="18" cy="17" r="2"/> +</svg> diff --git a/assets/images/icons/start.svg b/assets/images/icons/start.svg new file mode 100644 index 0000000..af1dc73 --- /dev/null +++ b/assets/images/icons/start.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#F44336" d="M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z"/> + <polygon fill="#fff" points="31,24 20,16 20,32"/> +</svg> diff --git a/assets/images/icons/statistics.svg b/assets/images/icons/statistics.svg new file mode 100644 index 0000000..ac943fb --- /dev/null +++ b/assets/images/icons/statistics.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#37474F"> + <rect x="23" y="5" width="2" height="36"/> + <rect x="20.5" y="31.4" transform="matrix(.707 .707 -.707 .707 33.523 -3.921)" width="2" height="14.2"/> + <rect x="25.5" y="31.4" transform="matrix(-.707 .707 -.707 -.707 72.487 46.995)" width="2" height="14.2"/> + </g> + <rect x="4" y="8" fill="#CFD8DC" width="40" height="28"/> + <g fill="#607D8B"> + <rect x="3" y="7" width="42" height="4"/> + <rect x="3" y="35" width="42" height="2"/> + <circle cx="31.5" cy="43.5" r="1.5"/> + <circle cx="16.5" cy="43.5" r="1.5"/> + </g> + <g fill="#C51162"> + <polygon points="31.9,18.9 26,24.9 20,18.9 11.9,26.9 14.1,29.1 20,23.1 26,29.1 34.1,21.1"/> + <polygon points="36,24 29,17 36,17"/> + </g> +</svg> diff --git a/assets/images/icons/support.svg b/assets/images/icons/support.svg new file mode 100644 index 0000000..192c8f3 --- /dev/null +++ b/assets/images/icons/support.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#607D8B" d="M44.7,11L36,19.6c0,0-2.6,0-5.2-2.6s-2.6-5.2-2.6-5.2l8.7-8.7c-4.9-1.2-10.8,0.4-14.4,4 c-5.4,5.4-0.6,12.3-2,13.7C12.9,28.7,5.1,34.7,4.9,35c-2.3,2.3-2.4,6-0.2,8.2c2.2,2.2,5.9,2.1,8.2-0.2c0.3-0.3,6.7-8.4,14.2-15.9 c1.4-1.4,8,3.7,13.6-1.8C44.2,21.7,45.9,15.9,44.7,11z M9.4,41.1c-1.4,0-2.5-1.1-2.5-2.5C6.9,37.1,8,36,9.4,36 c1.4,0,2.5,1.1,2.5,2.5C11.9,39.9,10.8,41.1,9.4,41.1z"/> +</svg> diff --git a/assets/images/icons/survey.svg b/assets/images/icons/survey.svg new file mode 100644 index 0000000..366eb2f --- /dev/null +++ b/assets/images/icons/survey.svg @@ -0,0 +1,16 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#455A64" d="M36,4H26c0,1.1-0.9,2-2,2s-2-0.9-2-2H12C9.8,4,8,5.8,8,8v32c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V8 C40,5.8,38.2,4,36,4z"/> + <path fill="#fff" d="M36,41H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v32C37,40.6,36.6,41,36,41z"/> + <g fill="#90A4AE"> + <path d="M26,4c0,1.1-0.9,2-2,2s-2-0.9-2-2h-7v4c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V4H26z"/> + <path d="M24,0c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,0,24,0z M24,6c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2 S25.1,6,24,6z"/> + </g> + <g fill="#CFD8DC"> + <rect x="21" y="20" width="12" height="2"/> + <rect x="15" y="19" width="4" height="4"/> + </g> + <g fill="#03A9F4"> + <rect x="21" y="29" width="12" height="2"/> + <rect x="15" y="28" width="4" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/switch_camera.svg b/assets/images/icons/switch_camera.svg new file mode 100644 index 0000000..65d2a99 --- /dev/null +++ b/assets/images/icons/switch_camera.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#5E35B1"> + <path d="M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z"/> + <path d="M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z"/> + <path d="M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z"/> + </g> + <path fill="#E8EAF6" d="M34,25c0-5.5-4.5-10-10-10c-2.4,0-4.6,0.8-6.3,2.2l1.2,1.6c1.4-1.1,3.1-1.8,5.1-1.8c4.4,0,8,3.6,8,8h-3.5 l4.5,5.6l4.5-5.6H34z"/> + <path fill="#E8EAF6" d="M29.1,31.2C27.7,32.3,25.9,33,24,33c-4.4,0-8-3.6-8-8h3.5L15,19.4L10.5,25H14c0,5.5,4.5,10,10,10 c2.4,0,4.6-0.8,6.3-2.2L29.1,31.2z"/> +</svg> diff --git a/assets/images/icons/synchronize.svg b/assets/images/icons/synchronize.svg new file mode 100644 index 0000000..e788e4b --- /dev/null +++ b/assets/images/icons/synchronize.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#FF6F00" d="M38.7,11.9l-3.1,2.5c2.2,2.7,3.4,6.1,3.4,9.5c0,8.3-6.7,15-15,15c-0.9,0-1.9-0.1-2.8-0.3l-0.7,3.9 c1.2,0.2,2.4,0.3,3.5,0.3c10.5,0,19-8.5,19-19C43,19.6,41.5,15.3,38.7,11.9z"/> + <polygon fill="#FF6F02" points="31,8 42.9,9.6 33.1,19.4"/> + <path fill="#FF6F00" d="M24,5C13.5,5,5,13.5,5,24c0,4.6,1.6,9,4.6,12.4l3-2.6C10.3,31.1,9,27.6,9,24c0-8.3,6.7-15,15-15 c0.9,0,1.9,0.1,2.8,0.3l0.7-3.9C26.4,5.1,25.2,5,24,5z"/> + <polygon fill="#FF6F02" points="17,40 5.1,38.4 14.9,28.6"/> +</svg> diff --git a/assets/images/icons/tablet_android.svg b/assets/images/icons/tablet_android.svg new file mode 100644 index 0000000..edd9e87 --- /dev/null +++ b/assets/images/icons/tablet_android.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z"/> + <path fill="#BBDEFB" d="M36,6H12c-0.6,0-1,0.4-1,1v31c0,0.6,0.4,1,1,1h24c0.6,0,1-0.4,1-1V7C37,6.4,36.6,6,36,6z"/> + <rect x="21" y="41" fill="#78909C" width="6" height="2"/> +</svg> diff --git a/assets/images/icons/template.svg b/assets/images/icons/template.svg new file mode 100644 index 0000000..f4514d5 --- /dev/null +++ b/assets/images/icons/template.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="4" y="7" fill="#BBDEFB" width="40" height="34"/> + <rect x="9" y="12" fill="#3F51B5" width="30" height="5"/> + <g fill="#2196F3"> + <rect x="9" y="21" width="13" height="16"/> + <rect x="26" y="21" width="13" height="16"/> + </g> +</svg> diff --git a/assets/images/icons/timeline.svg b/assets/images/icons/timeline.svg new file mode 100644 index 0000000..9935399 --- /dev/null +++ b/assets/images/icons/timeline.svg @@ -0,0 +1,11 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#3F51B5" d="M42,29H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7c0.4-0.4,0.9-0.6,1.4-0.6H42 c0.6,0,1,0.4,1,1v8C43,28.6,42.6,29,42,29z"/> + <rect x="9" y="6" fill="#CFD8DC" width="2" height="36"/> + <g fill="#90A4AE"> + <circle cx="10" cy="10" r="3"/> + <circle cx="10" cy="24" r="3"/> + <circle cx="10" cy="38" r="3"/> + </g> + <path fill="#448AFF" d="M34,43H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7c0.4-0.4,0.9-0.6,1.4-0.6H34 c0.6,0,1,0.4,1,1v8C35,42.6,34.6,43,34,43z"/> + <path fill="#00BCD4" d="M35,15H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7C19.8,5.2,20.3,5,20.8,5H35 c0.6,0,1,0.4,1,1v8C36,14.6,35.6,15,35,15z"/> +</svg> diff --git a/assets/images/icons/todo_list.svg b/assets/images/icons/todo_list.svg new file mode 100644 index 0000000..403d3ce --- /dev/null +++ b/assets/images/icons/todo_list.svg @@ -0,0 +1,12 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <polygon points="17.8,18.1 10.4,25.4 6.2,21.3 4,23.5 10.4,29.9 20,20.3"/> + <polygon points="17.8,5.1 10.4,12.4 6.2,8.3 4,10.5 10.4,16.9 20,7.3"/> + <polygon points="17.8,31.1 10.4,38.4 6.2,34.3 4,36.5 10.4,42.9 20,33.3"/> + </g> + <g fill="#90CAF9"> + <rect x="24" y="22" width="20" height="4"/> + <rect x="24" y="9" width="20" height="4"/> + <rect x="24" y="35" width="20" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/touchscreen_smartphone.svg b/assets/images/icons/touchscreen_smartphone.svg new file mode 100644 index 0000000..13f527c --- /dev/null +++ b/assets/images/icons/touchscreen_smartphone.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#E38939" d="M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z"/> + <path fill="#FFF3E0" d="M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z"/> + <circle fill="#A6642A" cx="24" cy="41" r="1.5"/> + <circle fill="#E91E63" cx="24" cy="23" r="2"/> + <circle fill="none" stroke="#F48FB1" stroke-width="2" stroke-miterlimit="10" cx="24" cy="23" r="4"/> + <circle fill="none" stroke="#F8BBD0" stroke-miterlimit="10" cx="24" cy="23" r="6.5"/> +</svg> diff --git a/assets/images/icons/trademark.svg b/assets/images/icons/trademark.svg new file mode 100644 index 0000000..121a27d --- /dev/null +++ b/assets/images/icons/trademark.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <circle fill="#9C27B0" cx="24" cy="24" r="21"/> + <g fill="#E1BEE7"> + <path d="M20.6,18.5h-4.2v14.2h-3.5V18.5H8.7v-2.9h11.9V18.5z"/> + <path d="M27.1,15.6L30.3,28l3.2-12.4h4.5v17.1h-3.5v-4.6l0.3-7.1l-3.4,11.8h-2.4L25.7,21l0.3,7.1v4.6h-3.5V15.6 H27.1z"/> + </g> +</svg> diff --git a/assets/images/icons/tree_structure.svg b/assets/images/icons/tree_structure.svg new file mode 100644 index 0000000..54303ea --- /dev/null +++ b/assets/images/icons/tree_structure.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="36.9,13.8 35.1,10.2 7.5,24 35.1,37.8 36.9,34.2 16.5,24"/> + <rect x="6" y="18" fill="#D81B60" width="12" height="12"/> + <g fill="#2196F3"> + <rect x="30" y="6" width="12" height="12"/> + <rect x="30" y="30" width="12" height="12"/> + </g> +</svg> diff --git a/assets/images/icons/two_smartphones.svg b/assets/images/icons/two_smartphones.svg new file mode 100644 index 0000000..d62d549 --- /dev/null +++ b/assets/images/icons/two_smartphones.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#37474F" d="M6,36V8c0-2.2,1.8-4,4-4h14c2.2,0,4,1.8,4,4v28c0,2.2-1.8,4-4,4H10C7.8,40,6,38.2,6,36z"/> + <path fill="#BBDEFB" d="M24,7H10C9.4,7,9,7.4,9,8v25c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V8C25,7.4,24.6,7,24,7z"/> + <rect x="14" y="36" fill="#78909C" width="6" height="2"/> + <path fill="#E38939" d="M20,40V12c0-2.2,1.8-4,4-4h14c2.2,0,4,1.8,4,4v28c0,2.2-1.8,4-4,4H24C21.8,44,20,42.2,20,40z"/> + <path fill="#FFF3E0" d="M38,11H24c-0.6,0-1,0.4-1,1v25c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V12C39,11.4,38.6,11,38,11z"/> + <circle fill="#A6642A" cx="31" cy="41" r="1.5"/> +</svg> diff --git a/assets/images/icons/undo.svg b/assets/images/icons/undo.svg new file mode 100644 index 0000000..3287135 --- /dev/null +++ b/assets/images/icons/undo.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#00BCD4"> + <polygon points="5,18 19,6.3 19,29.7"/> + <path d="M28,14H16v8h12c2.8,0,5,2.2,5,5s-2.2,5-5,5h-3v8h3c7.2,0,13-5.8,13-13S35.2,14,28,14z"/> + </g> +</svg> diff --git a/assets/images/icons/unlock.svg b/assets/images/icons/unlock.svg new file mode 100644 index 0000000..35c03c6 --- /dev/null +++ b/assets/images/icons/unlock.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#424242" d="M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6h4C34,8.5,29.5,4,24,4z"/> + <path fill="#FB8C00" d="M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z"/> + <circle fill="#C76E00" cx="24" cy="31" r="3"/> +</svg> diff --git a/assets/images/icons/up.svg b/assets/images/icons/up.svg new file mode 100644 index 0000000..27042d8 --- /dev/null +++ b/assets/images/icons/up.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#3F51B5"> + <polygon points="24,4 35.7,18 12.3,18"/> + <rect x="20" y="15" width="8" height="27"/> + </g> +</svg> diff --git a/assets/images/icons/up_left.svg b/assets/images/icons/up_left.svg new file mode 100644 index 0000000..85b8d2f --- /dev/null +++ b/assets/images/icons/up_left.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="4,19 18,30.7 18,7.3"/> + <path fill="#3F51B5" d="M42,27v13h-8V27c0-2.2-1.8-4-4-4H13v-8h17C36.6,15,42,20.4,42,27z"/> +</svg> diff --git a/assets/images/icons/up_right.svg b/assets/images/icons/up_right.svg new file mode 100644 index 0000000..511fba0 --- /dev/null +++ b/assets/images/icons/up_right.svg @@ -0,0 +1,6 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#3F51B5" points="44,19 30,30.7 30,7.3"/> + <path fill="#3F51B5" d="M6,27v13h8V27c0-2.2,1.8-4,4-4h17v-8H18C11.4,15,6,20.4,6,27z"/> + <polygon fill="#3F51B5" points="44,19 30,30.7 30,7.3"/> + <path fill="#3F51B5" d="M6,27v13h8V27c0-2.2,1.8-4,4-4h17v-8H18C11.4,15,6,20.4,6,27z"/> +</svg> diff --git a/assets/images/icons/upload.svg b/assets/images/icons/upload.svg new file mode 100644 index 0000000..0308c40 --- /dev/null +++ b/assets/images/icons/upload.svg @@ -0,0 +1,9 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#009688"> + <polygon points="24,10.9 35,24 13,24"/> + <rect x="20" y="40" width="8" height="4"/> + <rect x="20" y="34" width="8" height="4"/> + <rect x="20" y="21" width="8" height="11"/> + <rect x="6" y="4" width="36" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/video_call.svg b/assets/images/icons/video_call.svg new file mode 100644 index 0000000..0b395ac --- /dev/null +++ b/assets/images/icons/video_call.svg @@ -0,0 +1,4 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M8,12h22c2.2,0,4,1.8,4,4v16c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V16C4,13.8,5.8,12,8,12z"/> + <polygon fill="#388E3C" points="44,35 34,29 34,19 44,13"/> +</svg> diff --git a/assets/images/icons/video_file.svg b/assets/images/icons/video_file.svg new file mode 100644 index 0000000..b795234 --- /dev/null +++ b/assets/images/icons/video_file.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <polygon fill="#90CAF9" points="40,45 8,45 8,3 30,3 40,13"/> + <polygon fill="#E1F5FE" points="38.5,14 29,14 29,4.5"/> + <polygon fill="#1976D2" points="30,28 20,22 20,34"/> +</svg> diff --git a/assets/images/icons/video_projector.svg b/assets/images/icons/video_projector.svg new file mode 100644 index 0000000..dcdf3ee --- /dev/null +++ b/assets/images/icons/video_projector.svg @@ -0,0 +1,27 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <g fill="#546E7A"> + <rect x="5" y="34" width="6" height="3"/> + <rect x="37" y="34" width="6" height="3"/> + </g> + <path fill="#78909C" d="M44,35H4c-2.2,0-4-1.8-4-4V17c0-2.2,1.8-4,4-4h40c2.2,0,4,1.8,4,4v14C48,33.2,46.2,35,44,35z"/> + <g fill="#37474F"> + <rect x="5" y="19" width="2" height="2"/> + <rect x="5" y="23" width="2" height="2"/> + <rect x="5" y="27" width="2" height="2"/> + <rect x="9" y="19" width="2" height="2"/> + <rect x="9" y="23" width="2" height="2"/> + <rect x="9" y="27" width="2" height="2"/> + <rect x="13" y="19" width="2" height="2"/> + <rect x="13" y="23" width="2" height="2"/> + <rect x="13" y="27" width="2" height="2"/> + <rect x="17" y="19" width="2" height="2"/> + <rect x="17" y="23" width="2" height="2"/> + <rect x="17" y="27" width="2" height="2"/> + <rect x="21" y="19" width="2" height="2"/> + <rect x="21" y="23" width="2" height="2"/> + <rect x="21" y="27" width="2" height="2"/> + </g> + <circle fill="#37474F" cx="37" cy="24" r="8"/> + <circle fill="#a0f" cx="37" cy="24" r="6"/> + <path fill="#EA80FC" d="M40.7,21.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C41.1,22.7,41.1,22.1,40.7,21.7z"/> +</svg> diff --git a/assets/images/icons/view_details.svg b/assets/images/icons/view_details.svg new file mode 100644 index 0000000..caf24e3 --- /dev/null +++ b/assets/images/icons/view_details.svg @@ -0,0 +1,13 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="7" y="4" fill="#BBDEFB" width="34" height="40"/> + <g fill="#2196F3"> + <rect x="13" y="26" width="4" height="4"/> + <rect x="13" y="18" width="4" height="4"/> + <rect x="13" y="34" width="4" height="4"/> + <rect x="13" y="10" width="4" height="4"/> + <rect x="21" y="26" width="14" height="4"/> + <rect x="21" y="18" width="14" height="4"/> + <rect x="21" y="34" width="14" height="4"/> + <rect x="21" y="10" width="14" height="4"/> + </g> +</svg> diff --git a/assets/images/icons/vip.svg b/assets/images/icons/vip.svg new file mode 100644 index 0000000..6754eb0 --- /dev/null +++ b/assets/images/icons/vip.svg @@ -0,0 +1,8 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#880E4F" d="M38,43H10c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,41.2,40.2,43,38,43z"/> + <g fill="#FFD54F"> + <path d="M15.9,28l2.1-9.1h2.8l-3.6,12.6h-2.6L11,18.9h2.8L15.9,28z"/> + <path d="M25.6,31.5h-2.5V18.9h2.5V31.5z"/> + <path d="M31.2,27.1v4.4h-2.5V18.9h4.3c3.7,0,4.1,3.4,4.1,4.2c0,1.2-0.5,4-4.1,4H31.2z M31.2,24.9h1.7 c1.3,0,1.5-1.1,1.5-1.9c0-1.6-0.9-2.1-1.5-2.1h-1.7V24.9z"/> + </g> +</svg> diff --git a/assets/images/icons/voice_presentation.svg b/assets/images/icons/voice_presentation.svg new file mode 100644 index 0000000..bbc1206 --- /dev/null +++ b/assets/images/icons/voice_presentation.svg @@ -0,0 +1,5 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#2196F3" d="M40,22h-8l-4,4V12c0-2.2,1.8-4,4-4h8c2.2,0,4,1.8,4,4v6C44,20.2,42.2,22,40,22z"/> + <circle fill="#FFA726" cx="17" cy="19" r="8"/> + <path fill="#607D8B" d="M30,36.7c0,0-3.6-6.7-13-6.7S4,36.7,4,36.7V40h26V36.7z"/> +</svg> diff --git a/assets/images/icons/voicemail.svg b/assets/images/icons/voicemail.svg new file mode 100644 index 0000000..ea57b08 --- /dev/null +++ b/assets/images/icons/voicemail.svg @@ -0,0 +1,3 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#4CAF50" d="M48,24c0-6.1-4.9-11-11-11s-11,4.9-11,11c0,2.7,0.9,5.1,2.5,7h-9c1.6-1.9,2.5-4.3,2.5-7c0-6.1-4.9-11-11-11 S0,17.9,0,24s4.9,11,11,11h27v-0.1C43.6,34.4,48,29.7,48,24z M4,24c0-3.9,3.1-7,7-7s7,3.1,7,7s-3.1,7-7,7S4,27.9,4,24z M37,31 c-3.9,0-7-3.1-7-7s3.1-7,7-7c3.9,0,7,3.1,7,7S40.9,31,37,31z"/> +</svg> diff --git a/assets/images/icons/webcam.svg b/assets/images/icons/webcam.svg new file mode 100644 index 0000000..929dc38 --- /dev/null +++ b/assets/images/icons/webcam.svg @@ -0,0 +1,7 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <path fill="#455A64" d="M36.5,44H11.5c-1.1,0-1.8-1.2-1.3-2.2L13,37h22l2.7,4.8C38.3,42.8,37.6,44,36.5,44z"/> + <circle fill="#78909C" cx="24" cy="23" r="18"/> + <path fill="#455A64" d="M24,35c-6.6,0-12-5.4-12-12c0-6.6,5.4-12,12-12s12,5.4,12,12C36,29.6,30.6,35,24,35z"/> + <circle fill="#42A5F5" cx="24" cy="23" r="9"/> + <path fill="#90CAF9" d="M28.8,20c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,21.4,29.3,20.5,28.8,20z"/> +</svg> diff --git a/assets/images/icons/workflow.svg b/assets/images/icons/workflow.svg new file mode 100644 index 0000000..858cb46 --- /dev/null +++ b/assets/images/icons/workflow.svg @@ -0,0 +1,18 @@ +<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"> + <rect x="7" y="31" fill="#00BCD4" width="10" height="10"/> + <path fill="#00BCD4" d="M35.3,19.3l-5.6-5.6c-0.4-0.4-0.4-1,0-1.4l5.6-5.6c0.4-0.4,1-0.4,1.4,0l5.6,5.6c0.4,0.4,0.4,1,0,1.4 l-5.6,5.6C36.3,19.7,35.7,19.7,35.3,19.3z"/> + <circle fill="#3F51B5" cx="12" cy="13" r="6"/> + <circle fill="#448AFF" cx="36" cy="36" r="6"/> + <g fill="#90A4AE"> + <rect x="11" y="24" width="2" height="5"/> + <polygon points="12,21 9,25 15,25"/> + </g> + <g fill="#90A4AE"> + <rect x="20" y="12" width="5" height="2"/> + <polygon points="28,13 24,10 24,16"/> + </g> + <g fill="#90A4AE"> + <rect x="35" y="21" width="2" height="5"/> + <polygon points="36,29 39,25 33,25"/> + </g> +</svg> diff --git a/assets/images/logo-rssa-black-1.png b/assets/images/logo-rssa-black-1.png new file mode 100644 index 0000000..ab762d3 Binary files /dev/null and b/assets/images/logo-rssa-black-1.png differ diff --git a/assets/images/logo-rssa-black-1.psd b/assets/images/logo-rssa-black-1.psd new file mode 100644 index 0000000..8a3385d Binary files /dev/null and b/assets/images/logo-rssa-black-1.psd differ diff --git a/assets/images/logo-rssa-black-1__.png b/assets/images/logo-rssa-black-1__.png new file mode 100644 index 0000000..9de60a4 Binary files /dev/null and b/assets/images/logo-rssa-black-1__.png differ diff --git a/assets/images/logo-rssa-help-desk-1.psd b/assets/images/logo-rssa-help-desk-1.psd new file mode 100644 index 0000000..b187b90 Binary files /dev/null and b/assets/images/logo-rssa-help-desk-1.psd differ diff --git a/assets/images/logo-rssa-help-desk.psd b/assets/images/logo-rssa-help-desk.psd new file mode 100644 index 0000000..4b018c2 Binary files /dev/null and b/assets/images/logo-rssa-help-desk.psd differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..52ac912 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/logo.psd b/assets/images/logo.psd new file mode 100644 index 0000000..c108cfd Binary files /dev/null and b/assets/images/logo.psd differ diff --git a/assets/images/logo_rssa.jpg b/assets/images/logo_rssa.jpg new file mode 100644 index 0000000..7dfa685 Binary files /dev/null and b/assets/images/logo_rssa.jpg differ diff --git a/assets/images/logo_rssa.png b/assets/images/logo_rssa.png new file mode 100644 index 0000000..e5d9cc3 Binary files /dev/null and b/assets/images/logo_rssa.png differ diff --git a/assets/images/logo_sm.png b/assets/images/logo_sm.png new file mode 100644 index 0000000..b5fe377 Binary files /dev/null and b/assets/images/logo_sm.png differ diff --git a/assets/images/map-marker.png b/assets/images/map-marker.png new file mode 100644 index 0000000..9abd5e6 Binary files /dev/null and b/assets/images/map-marker.png differ diff --git a/assets/images/properties/1.jpg b/assets/images/properties/1.jpg new file mode 100644 index 0000000..db141dd Binary files /dev/null and b/assets/images/properties/1.jpg differ diff --git a/assets/images/properties/2.jpg b/assets/images/properties/2.jpg new file mode 100644 index 0000000..e41d8db Binary files /dev/null and b/assets/images/properties/2.jpg differ diff --git a/assets/images/properties/3.jpg b/assets/images/properties/3.jpg new file mode 100644 index 0000000..b9eae7b Binary files /dev/null and b/assets/images/properties/3.jpg differ diff --git a/assets/images/properties/4.jpg b/assets/images/properties/4.jpg new file mode 100644 index 0000000..676e6a2 Binary files /dev/null and b/assets/images/properties/4.jpg differ diff --git a/assets/images/properties/5.jpg b/assets/images/properties/5.jpg new file mode 100644 index 0000000..5b8e428 Binary files /dev/null and b/assets/images/properties/5.jpg differ diff --git a/assets/images/properties/6.jpg b/assets/images/properties/6.jpg new file mode 100644 index 0000000..4bb7017 Binary files /dev/null and b/assets/images/properties/6.jpg differ diff --git a/assets/images/properties/7.jpg b/assets/images/properties/7.jpg new file mode 100644 index 0000000..241d127 Binary files /dev/null and b/assets/images/properties/7.jpg differ diff --git a/assets/images/properties/8.jpg b/assets/images/properties/8.jpg new file mode 100644 index 0000000..4e3c163 Binary files /dev/null and b/assets/images/properties/8.jpg differ diff --git a/assets/images/shots/shot-1.png b/assets/images/shots/shot-1.png new file mode 100644 index 0000000..0586034 Binary files /dev/null and b/assets/images/shots/shot-1.png differ diff --git a/assets/images/shots/shot-2.png b/assets/images/shots/shot-2.png new file mode 100644 index 0000000..1f1c530 Binary files /dev/null and b/assets/images/shots/shot-2.png differ diff --git a/assets/images/shots/shot-3.png b/assets/images/shots/shot-3.png new file mode 100644 index 0000000..1245ecc Binary files /dev/null and b/assets/images/shots/shot-3.png differ diff --git a/assets/images/small/img-1.jpg b/assets/images/small/img-1.jpg new file mode 100644 index 0000000..090ab44 Binary files /dev/null and b/assets/images/small/img-1.jpg differ diff --git a/assets/images/small/img-2.jpg b/assets/images/small/img-2.jpg new file mode 100644 index 0000000..1946ed3 Binary files /dev/null and b/assets/images/small/img-2.jpg differ diff --git a/assets/images/small/img-3.jpg b/assets/images/small/img-3.jpg new file mode 100644 index 0000000..117d2e6 Binary files /dev/null and b/assets/images/small/img-3.jpg differ diff --git a/assets/images/small/img-4.jpg b/assets/images/small/img-4.jpg new file mode 100644 index 0000000..549b921 Binary files /dev/null and b/assets/images/small/img-4.jpg differ diff --git a/assets/images/small/img-5.jpg b/assets/images/small/img-5.jpg new file mode 100644 index 0000000..1db8078 Binary files /dev/null and b/assets/images/small/img-5.jpg differ diff --git a/assets/images/small/img-6.jpg b/assets/images/small/img-6.jpg new file mode 100644 index 0000000..52d170d Binary files /dev/null and b/assets/images/small/img-6.jpg differ diff --git a/assets/images/small/img-7.jpg b/assets/images/small/img-7.jpg new file mode 100644 index 0000000..0202ef4 Binary files /dev/null and b/assets/images/small/img-7.jpg differ diff --git a/assets/images/team/team1.jpg b/assets/images/team/team1.jpg new file mode 100644 index 0000000..91d979e Binary files /dev/null and b/assets/images/team/team1.jpg differ diff --git a/assets/images/team/team2.jpg b/assets/images/team/team2.jpg new file mode 100644 index 0000000..5e3e2c4 Binary files /dev/null and b/assets/images/team/team2.jpg differ diff --git a/assets/images/team/team3.jpg b/assets/images/team/team3.jpg new file mode 100644 index 0000000..2834f3b Binary files /dev/null and b/assets/images/team/team3.jpg differ diff --git a/assets/images/users/avatar-1.jpg b/assets/images/users/avatar-1.jpg new file mode 100644 index 0000000..2cf4577 Binary files /dev/null and b/assets/images/users/avatar-1.jpg differ diff --git a/assets/images/users/avatar-10.jpg b/assets/images/users/avatar-10.jpg new file mode 100644 index 0000000..221691a Binary files /dev/null and b/assets/images/users/avatar-10.jpg differ diff --git a/assets/images/users/avatar-2.jpg b/assets/images/users/avatar-2.jpg new file mode 100644 index 0000000..af68262 Binary files /dev/null and b/assets/images/users/avatar-2.jpg differ diff --git a/assets/images/users/avatar-3.jpg b/assets/images/users/avatar-3.jpg new file mode 100644 index 0000000..51b6839 Binary files /dev/null and b/assets/images/users/avatar-3.jpg differ diff --git a/assets/images/users/avatar-4.jpg b/assets/images/users/avatar-4.jpg new file mode 100644 index 0000000..5d6c12e Binary files /dev/null and b/assets/images/users/avatar-4.jpg differ diff --git a/assets/images/users/avatar-5.jpg b/assets/images/users/avatar-5.jpg new file mode 100644 index 0000000..7b19535 Binary files /dev/null and b/assets/images/users/avatar-5.jpg differ diff --git a/assets/images/users/avatar-6.jpg b/assets/images/users/avatar-6.jpg new file mode 100644 index 0000000..4c7b027 Binary files /dev/null and b/assets/images/users/avatar-6.jpg differ diff --git a/assets/images/users/avatar-7.jpg b/assets/images/users/avatar-7.jpg new file mode 100644 index 0000000..b0ddff2 Binary files /dev/null and b/assets/images/users/avatar-7.jpg differ diff --git a/assets/images/users/avatar-8.jpg b/assets/images/users/avatar-8.jpg new file mode 100644 index 0000000..00c1684 Binary files /dev/null and b/assets/images/users/avatar-8.jpg differ diff --git a/assets/images/users/avatar-9.jpg b/assets/images/users/avatar-9.jpg new file mode 100644 index 0000000..4d292d8 Binary files /dev/null and b/assets/images/users/avatar-9.jpg differ diff --git a/assets/js/bootstrap.min.js b/assets/js/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/assets/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){ +this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/assets/js/detect.js b/assets/js/detect.js new file mode 100644 index 0000000..ca56a81 --- /dev/null +++ b/assets/js/detect.js @@ -0,0 +1,7 @@ +/** + * jQuery.browser.mobile (http://detectmobilebrowser.com/) + * + * jQuery.browser.mobile will be true if the browser is a mobile device + * + **/ +(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); \ No newline at end of file diff --git a/assets/js/enter.js b/assets/js/enter.js new file mode 100644 index 0000000..333379e --- /dev/null +++ b/assets/js/enter.js @@ -0,0 +1,11 @@ +$('body').on('keydown', 'input, select, textarea', function(e) { + if (e.which === 13) { + var self = $(this), form = self.parents('form:eq(0)'), focusable, next; + focusable = form.find('input, select, textarea, button, a').filter(':visible:enabled'); + next = focusable.eq(focusable.index(this)+1); + if (next.length) { + next.focus(); + } + return false; + } +}); \ No newline at end of file diff --git a/assets/js/fastclick.js b/assets/js/fastclick.js new file mode 100644 index 0000000..3af4f9d --- /dev/null +++ b/assets/js/fastclick.js @@ -0,0 +1,841 @@ +;(function () { + 'use strict'; + + /** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ + + /*jslint browser:true, node:true*/ + /*global define, Event, Node*/ + + + /** + * Instantiate fast-clicking listeners on the specified layer. + * + * @constructor + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + function FastClick(layer, options) { + var oldOnClick; + + options = options || {}; + + /** + * Whether a click is currently being tracked. + * + * @type boolean + */ + this.trackingClick = false; + + + /** + * Timestamp for when click tracking started. + * + * @type number + */ + this.trackingClickStart = 0; + + + /** + * The element being tracked for a click. + * + * @type EventTarget + */ + this.targetElement = null; + + + /** + * X-coordinate of touch start event. + * + * @type number + */ + this.touchStartX = 0; + + + /** + * Y-coordinate of touch start event. + * + * @type number + */ + this.touchStartY = 0; + + + /** + * ID of the last touch, retrieved from Touch.identifier. + * + * @type number + */ + this.lastTouchIdentifier = 0; + + + /** + * Touchmove boundary, beyond which a click will be cancelled. + * + * @type number + */ + this.touchBoundary = options.touchBoundary || 10; + + + /** + * The FastClick layer. + * + * @type Element + */ + this.layer = layer; + + /** + * The minimum time between tap(touchstart and touchend) events + * + * @type number + */ + this.tapDelay = options.tapDelay || 200; + + /** + * The maximum time for a tap + * + * @type number + */ + this.tapTimeout = options.tapTimeout || 700; + + if (FastClick.notNeeded(layer)) { + return; + } + + // Some old versions of Android don't have Function.prototype.bind + function bind(method, context) { + return function() { return method.apply(context, arguments); }; + } + + + var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; + var context = this; + for (var i = 0, l = methods.length; i < l; i++) { + context[methods[i]] = bind(context[methods[i]], context); + } + + // Set up event handlers as required + if (deviceIsAndroid) { + layer.addEventListener('mouseover', this.onMouse, true); + layer.addEventListener('mousedown', this.onMouse, true); + layer.addEventListener('mouseup', this.onMouse, true); + } + + layer.addEventListener('click', this.onClick, true); + layer.addEventListener('touchstart', this.onTouchStart, false); + layer.addEventListener('touchmove', this.onTouchMove, false); + layer.addEventListener('touchend', this.onTouchEnd, false); + layer.addEventListener('touchcancel', this.onTouchCancel, false); + + // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick + // layer when they are cancelled. + if (!Event.prototype.stopImmediatePropagation) { + layer.removeEventListener = function(type, callback, capture) { + var rmv = Node.prototype.removeEventListener; + if (type === 'click') { + rmv.call(layer, type, callback.hijacked || callback, capture); + } else { + rmv.call(layer, type, callback, capture); + } + }; + + layer.addEventListener = function(type, callback, capture) { + var adv = Node.prototype.addEventListener; + if (type === 'click') { + adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { + if (!event.propagationStopped) { + callback(event); + } + }), capture); + } else { + adv.call(layer, type, callback, capture); + } + }; + } + + // If a handler is already declared in the element's onclick attribute, it will be fired before + // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and + // adding it as listener. + if (typeof layer.onclick === 'function') { + + // Android browser on at least 3.2 requires a new reference to the function in layer.onclick + // - the old one won't work if passed to addEventListener directly. + oldOnClick = layer.onclick; + layer.addEventListener('click', function(event) { + oldOnClick(event); + }, false); + layer.onclick = null; + } + } + + /** + * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. + * + * @type boolean + */ + var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; + + /** + * Android requires exceptions. + * + * @type boolean + */ + var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; + + + /** + * iOS requires exceptions. + * + * @type boolean + */ + var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; + + + /** + * iOS 4 requires an exception for select elements. + * + * @type boolean + */ + var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); + + + /** + * iOS 6.0-7.* requires the target element to be manually derived + * + * @type boolean + */ + var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); + + /** + * BlackBerry requires exceptions. + * + * @type boolean + */ + var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; + + /** + * Determine whether a given element requires a native click. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element needs a native click + */ + FastClick.prototype.needsClick = function(target) { + switch (target.nodeName.toLowerCase()) { + + // Don't send a synthetic click to disabled inputs (issue #62) + case 'button': + case 'select': + case 'textarea': + if (target.disabled) { + return true; + } + + break; + case 'input': + + // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) + if ((deviceIsIOS && target.type === 'file') || target.disabled) { + return true; + } + + break; + case 'label': + case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames + case 'video': + return true; + } + + return (/\bneedsclick\b/).test(target.className); + }; + + + /** + * Determine whether a given element requires a call to focus to simulate click into element. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. + */ + FastClick.prototype.needsFocus = function(target) { + switch (target.nodeName.toLowerCase()) { + case 'textarea': + return true; + case 'select': + return !deviceIsAndroid; + case 'input': + switch (target.type) { + case 'button': + case 'checkbox': + case 'file': + case 'image': + case 'radio': + case 'submit': + return false; + } + + // No point in attempting to focus disabled inputs + return !target.disabled && !target.readOnly; + default: + return (/\bneedsfocus\b/).test(target.className); + } + }; + + + /** + * Send a click event to the specified element. + * + * @param {EventTarget|Element} targetElement + * @param {Event} event + */ + FastClick.prototype.sendClick = function(targetElement, event) { + var clickEvent, touch; + + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + + touch = event.changedTouches[0]; + + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); + }; + + FastClick.prototype.determineEventType = function(targetElement) { + + //Issue #159: Android Chrome Select Box does not open with a synthetic click event + if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { + return 'mousedown'; + } + + return 'click'; + }; + + + /** + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.focus = function(targetElement) { + var length; + + // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. + if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { + length = targetElement.value.length; + targetElement.setSelectionRange(length, length); + } else { + targetElement.focus(); + } + }; + + + /** + * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. + * + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.updateScrollParent = function(targetElement) { + var scrollParent, parentElement; + + scrollParent = targetElement.fastClickScrollParent; + + // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the + // target element was moved to another parent. + if (!scrollParent || !scrollParent.contains(targetElement)) { + parentElement = targetElement; + do { + if (parentElement.scrollHeight > parentElement.offsetHeight) { + scrollParent = parentElement; + targetElement.fastClickScrollParent = parentElement; + break; + } + + parentElement = parentElement.parentElement; + } while (parentElement); + } + + // Always update the scroll top tracker if possible. + if (scrollParent) { + scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; + } + }; + + + /** + * @param {EventTarget} targetElement + * @returns {Element|EventTarget} + */ + FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { + + // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. + if (eventTarget.nodeType === Node.TEXT_NODE) { + return eventTarget.parentNode; + } + + return eventTarget; + }; + + + /** + * On touch start, record the position and scroll offset. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchStart = function(event) { + var targetElement, touch, selection; + + // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). + if (event.targetTouches.length > 1) { + return true; + } + + targetElement = this.getTargetElementFromEventTarget(event.target); + touch = event.targetTouches[0]; + + if (deviceIsIOS) { + + // Only trusted events will deselect text on iOS (issue #49) + selection = window.getSelection(); + if (selection.rangeCount && !selection.isCollapsed) { + return true; + } + + if (!deviceIsIOS4) { + + // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): + // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched + // with the same identifier as the touch event that previously triggered the click that triggered the alert. + // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an + // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. + // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, + // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, + // random integers, it's safe to to continue if the identifier is 0 here. + if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { + event.preventDefault(); + return false; + } + + this.lastTouchIdentifier = touch.identifier; + + // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: + // 1) the user does a fling scroll on the scrollable layer + // 2) the user stops the fling scroll with another tap + // then the event.target of the last 'touchend' event will be the element that was under the user's finger + // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check + // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). + this.updateScrollParent(targetElement); + } + } + + this.trackingClick = true; + this.trackingClickStart = event.timeStamp; + this.targetElement = targetElement; + + this.touchStartX = touch.pageX; + this.touchStartY = touch.pageY; + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + event.preventDefault(); + } + + return true; + }; + + + /** + * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.touchHasMoved = function(event) { + var touch = event.changedTouches[0], boundary = this.touchBoundary; + + if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { + return true; + } + + return false; + }; + + + /** + * Update the last position. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchMove = function(event) { + if (!this.trackingClick) { + return true; + } + + // If the touch has moved, cancel the click tracking + if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { + this.trackingClick = false; + this.targetElement = null; + } + + return true; + }; + + + /** + * Attempt to find the labelled control for the given label element. + * + * @param {EventTarget|HTMLLabelElement} labelElement + * @returns {Element|null} + */ + FastClick.prototype.findControl = function(labelElement) { + + // Fast path for newer browsers supporting the HTML5 control attribute + if (labelElement.control !== undefined) { + return labelElement.control; + } + + // All browsers under test that support touch events also support the HTML5 htmlFor attribute + if (labelElement.htmlFor) { + return document.getElementById(labelElement.htmlFor); + } + + // If no for attribute exists, attempt to retrieve the first labellable descendant element + // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label + return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); + }; + + + /** + * On touch end, determine whether to send a click event at once. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchEnd = function(event) { + var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; + + if (!this.trackingClick) { + return true; + } + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + this.cancelNextClick = true; + return true; + } + + if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { + return true; + } + + // Reset to prevent wrong click cancel on input (issue #156). + this.cancelNextClick = false; + + this.lastClickTime = event.timeStamp; + + trackingClickStart = this.trackingClickStart; + this.trackingClick = false; + this.trackingClickStart = 0; + + // On some iOS devices, the targetElement supplied with the event is invalid if the layer + // is performing a transition or scroll, and has to be re-detected manually. Note that + // for this to function correctly, it must be called *after* the event target is checked! + // See issue #57; also filed as rdar://13048589 . + if (deviceIsIOSWithBadTarget) { + touch = event.changedTouches[0]; + + // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null + targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; + targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; + } + + targetTagName = targetElement.tagName.toLowerCase(); + if (targetTagName === 'label') { + forElement = this.findControl(targetElement); + if (forElement) { + this.focus(targetElement); + if (deviceIsAndroid) { + return false; + } + + targetElement = forElement; + } + } else if (this.needsFocus(targetElement)) { + + // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. + // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). + if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { + this.targetElement = null; + return false; + } + + this.focus(targetElement); + this.sendClick(targetElement, event); + + // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. + // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) + if (!deviceIsIOS || targetTagName !== 'select') { + this.targetElement = null; + event.preventDefault(); + } + + return false; + } + + if (deviceIsIOS && !deviceIsIOS4) { + + // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled + // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). + scrollParent = targetElement.fastClickScrollParent; + if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { + return true; + } + } + + // Prevent the actual click from going though - unless the target node is marked as requiring + // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. + if (!this.needsClick(targetElement)) { + event.preventDefault(); + this.sendClick(targetElement, event); + } + + return false; + }; + + + /** + * On touch cancel, stop tracking the click. + * + * @returns {void} + */ + FastClick.prototype.onTouchCancel = function() { + this.trackingClick = false; + this.targetElement = null; + }; + + + /** + * Determine mouse events which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onMouse = function(event) { + + // If a target element was never set (because a touch event was never fired) allow the event + if (!this.targetElement) { + return true; + } + + if (event.forwardedTouchEvent) { + return true; + } + + // Programmatically generated events targeting a specific element should be permitted + if (!event.cancelable) { + return true; + } + + // Derive and check the target element to see whether the mouse event needs to be permitted; + // unless explicitly enabled, prevent non-touch click events from triggering actions, + // to prevent ghost/doubleclicks. + if (!this.needsClick(this.targetElement) || this.cancelNextClick) { + + // Prevent any user-added listeners declared on FastClick element from being fired. + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + + // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + event.propagationStopped = true; + } + + // Cancel the event + event.stopPropagation(); + event.preventDefault(); + + return false; + } + + // If the mouse event is permitted, return true for the action to go through. + return true; + }; + + + /** + * On actual clicks, determine whether this is a touch-generated click, a click action occurring + * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or + * an actual click which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onClick = function(event) { + var permitted; + + // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. + if (this.trackingClick) { + this.targetElement = null; + this.trackingClick = false; + return true; + } + + // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. + if (event.target.type === 'submit' && event.detail === 0) { + return true; + } + + permitted = this.onMouse(event); + + // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. + if (!permitted) { + this.targetElement = null; + } + + // If clicks are permitted, return true for the action to go through. + return permitted; + }; + + + /** + * Remove all FastClick's event listeners. + * + * @returns {void} + */ + FastClick.prototype.destroy = function() { + var layer = this.layer; + + if (deviceIsAndroid) { + layer.removeEventListener('mouseover', this.onMouse, true); + layer.removeEventListener('mousedown', this.onMouse, true); + layer.removeEventListener('mouseup', this.onMouse, true); + } + + layer.removeEventListener('click', this.onClick, true); + layer.removeEventListener('touchstart', this.onTouchStart, false); + layer.removeEventListener('touchmove', this.onTouchMove, false); + layer.removeEventListener('touchend', this.onTouchEnd, false); + layer.removeEventListener('touchcancel', this.onTouchCancel, false); + }; + + + /** + * Check whether FastClick is needed. + * + * @param {Element} layer The layer to listen on + */ + FastClick.notNeeded = function(layer) { + var metaViewport; + var chromeVersion; + var blackberryVersion; + var firefoxVersion; + + // Devices that don't support touch don't need FastClick + if (typeof window.ontouchstart === 'undefined') { + return true; + } + + // Chrome version - zero for other browsers + chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (chromeVersion) { + + if (deviceIsAndroid) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // Chrome 32 and above with width=device-width or less don't need FastClick + if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + + // Chrome desktop doesn't need FastClick (issue #15) + } else { + return true; + } + } + + if (deviceIsBlackBerry10) { + blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); + + // BlackBerry 10.3+ does not require Fastclick library. + // https://github.com/ftlabs/fastclick/issues/251 + if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // user-scalable=no eliminates click delay. + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // width=device-width (or less than device-width) eliminates click delay. + if (document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + } + } + + // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) + if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + // Firefox version - zero for other browsers + firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (firefoxVersion >= 27) { + // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 + + metaViewport = document.querySelector('meta[name=viewport]'); + if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { + return true; + } + } + + // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version + // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx + if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + return false; + }; + + + /** + * Factory method for creating a FastClick object + * + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + FastClick.attach = function(layer, options) { + return new FastClick(layer, options); + }; + + + if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { + + // AMD. Register as an anonymous module. + define(function() { + return FastClick; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = FastClick.attach; + module.exports.FastClick = FastClick; + } else { + window.FastClick = FastClick; + } +}()); diff --git a/assets/js/jquery.app.js b/assets/js/jquery.app.js new file mode 100644 index 0000000..4dd6d1a --- /dev/null +++ b/assets/js/jquery.app.js @@ -0,0 +1,308 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Module/App: Main Js +*/ + + +!function($) { + "use strict"; + + var Sidemenu = function() { + this.$body = $("body"), + this.$openLeftBtn = $(".open-left"), + this.$menuItem = $("#sidebar-menu a") + }; + Sidemenu.prototype.openLeftBar = function() { + $("#wrapper").toggleClass("enlarged"); + $("#wrapper").addClass("forced"); + + if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")) { + $("body").removeClass("fixed-left").addClass("fixed-left-void"); + } else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")) { + $("body").removeClass("fixed-left-void").addClass("fixed-left"); + } + + if($("#wrapper").hasClass("enlarged")) { + $(".left ul").removeAttr("style"); + } else { + $(".subdrop").siblings("ul:first").show(); + } + + toggle_slimscroll(".slimscrollleft"); + $("body").trigger("resize"); + }, + //menu item click + Sidemenu.prototype.menuItemClick = function(e) { + if(!$("#wrapper").hasClass("enlarged")){ + if($(this).parent().hasClass("has_sub")) { + + } + if(!$(this).hasClass("subdrop")) { + // hide any open menus and remove all other classes + $("ul",$(this).parents("ul:first")).slideUp(350); + $("a",$(this).parents("ul:first")).removeClass("subdrop"); + $("#sidebar-menu .pull-right i").removeClass("md-remove").addClass("md-add"); + + // open our new menu and add the open class + $(this).next("ul").slideDown(350); + $(this).addClass("subdrop"); + $(".pull-right i",$(this).parents(".has_sub:last")).removeClass("md-add").addClass("md-remove"); + $(".pull-right i",$(this).siblings("ul")).removeClass("md-remove").addClass("md-add"); + }else if($(this).hasClass("subdrop")) { + $(this).removeClass("subdrop"); + $(this).next("ul").slideUp(350); + $(".pull-right i",$(this).parent()).removeClass("md-remove").addClass("md-add"); + } + } + }, + + //init sidemenu + Sidemenu.prototype.init = function() { + var $this = this; + + var ua = navigator.userAgent, + event = (ua.match(/iP/i)) ? "touchstart" : "click"; + + //bind on click + this.$openLeftBtn.on(event, function(e) { + e.stopPropagation(); + $this.openLeftBar(); + }); + + // LEFT SIDE MAIN NAVIGATION + $this.$menuItem.on(event, $this.menuItemClick); + + // NAVIGATION HIGHLIGHT & OPEN PARENT + $("#sidebar-menu ul li.has_sub a.active").parents("li:last").children("a:first").addClass("active").trigger("click"); + }, + + //init Sidemenu + $.Sidemenu = new Sidemenu, $.Sidemenu.Constructor = Sidemenu + +}(window.jQuery), + + +function($) { + "use strict"; + + var FullScreen = function() { + this.$body = $("body"), + this.$fullscreenBtn = $("#btn-fullscreen") + }; + + //turn on full screen + // Thanks to http://davidwalsh.name/fullscreen + FullScreen.prototype.launchFullscreen = function(element) { + if(element.requestFullscreen) { + element.requestFullscreen(); + } else if(element.mozRequestFullScreen) { + element.mozRequestFullScreen(); + } else if(element.webkitRequestFullscreen) { + element.webkitRequestFullscreen(); + } else if(element.msRequestFullscreen) { + element.msRequestFullscreen(); + } + }, + FullScreen.prototype.exitFullscreen = function() { + if(document.exitFullscreen) { + document.exitFullscreen(); + } else if(document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if(document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } + }, + //toggle screen + FullScreen.prototype.toggle_fullscreen = function() { + var $this = this; + var fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled; + if(fullscreenEnabled) { + if(!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { + $this.launchFullscreen(document.documentElement); + } else{ + $this.exitFullscreen(); + } + } + }, + //init sidemenu + FullScreen.prototype.init = function() { + var $this = this; + //bind + $this.$fullscreenBtn.on('click', function() { + $this.toggle_fullscreen(); + }); + }, + //init FullScreen + $.FullScreen = new FullScreen, $.FullScreen.Constructor = FullScreen + +}(window.jQuery), + + + +//main app module + function($) { + "use strict"; + + var App = function() { + this.VERSION = "1.0.0", + this.AUTHOR = "Coderthemes", + this.SUPPORT = "coderthemes@gmail.com", + this.pageScrollElement = "html, body", + this.$body = $("body") + }; + + //on doc load + App.prototype.onDocReady = function(e) { + FastClick.attach(document.body); + resizefunc.push("initscrolls"); + resizefunc.push("changeptype"); + + $('.animate-number').each(function(){ + $(this).animateNumbers($(this).attr("data-value"), true, parseInt($(this).attr("data-duration"))); + }); + + //RUN RESIZE ITEMS + $(window).resize(debounce(resizeitems,100)); + $("body").trigger("resize"); + + // right side-bar toggle + $('.right-bar-toggle').on('click', function(e){ + + $('#wrapper').toggleClass('right-bar-enabled'); + }); + + + }, + //initilizing + App.prototype.init = function() { + var $this = this; + //document load initialization + $(document).ready($this.onDocReady); + //init side bar - left + $.Sidemenu.init(); + //init fullscreen + $.FullScreen.init(); + }, + + $.App = new App, $.App.Constructor = App + +}(window.jQuery), + +//initializing main application module +function($) { + "use strict"; + $.App.init(); +}(window.jQuery); + + + +/* ------------ some utility functions ----------------------- */ +//this full screen +var toggle_fullscreen = function () { + +} + +function executeFunctionByName(functionName, context /*, args */) { + var args = [].slice.call(arguments).splice(2); + var namespaces = functionName.split("."); + var func = namespaces.pop(); + for(var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(this, args); +} +var w,h,dw,dh; +var changeptype = function(){ + w = $(window).width(); + h = $(window).height(); + dw = $(document).width(); + dh = $(document).height(); + + if(jQuery.browser.mobile === true){ + $("body").addClass("mobile").removeClass("fixed-left"); + } + + if(!$("#wrapper").hasClass("forced")){ + if(w > 1024){ + $("body").removeClass("smallscreen").addClass("widescreen"); + $("#wrapper").removeClass("enlarged"); + }else{ + $("body").removeClass("widescreen").addClass("smallscreen"); + $("#wrapper").addClass("enlarged"); + $(".left ul").removeAttr("style"); + } + if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")){ + $("body").removeClass("fixed-left").addClass("fixed-left-void"); + }else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")){ + $("body").removeClass("fixed-left-void").addClass("fixed-left"); + } + + } + toggle_slimscroll(".slimscrollleft"); +} + + +var debounce = function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) result = func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(context, args); + return result; + }; +} + +function resizeitems(){ + if($.isArray(resizefunc)){ + for (i = 0; i < resizefunc.length; i++) { + window[resizefunc[i]](); + } + } +} + +function initscrolls(){ + if(jQuery.browser.mobile !== true){ + //SLIM SCROLL + $('.slimscroller').slimscroll({ + height: 'auto', + size: "5px" + }); + + $('.slimscrollleft').slimScroll({ + height: 'auto', + position: 'right', + size: "5px", + color: '#dcdcdc', + wheelStep: 5 + }); + } +} +function toggle_slimscroll(item){ + if($("#wrapper").hasClass("enlarged")){ + $(item).css("overflow","inherit").parent().css("overflow","inherit"); + $(item). siblings(".slimScrollBar").css("visibility","hidden"); + }else{ + $(item).css("overflow","hidden").parent().css("overflow","hidden"); + $(item). siblings(".slimScrollBar").css("visibility","visible"); + } +} + + +// === following js will activate the menu in left side bar based on url ==== +$(document).ready(function() { + $("#sidebar-menu a").each(function() { + if (this.href == window.location.href) { + $(this).addClass("active"); + $(this).parent().addClass("active"); // add active to li of the current link + $(this).parent().parent().prev().addClass("active"); // add active class to an anchor + $(this).parent().parent().prev().click(); // click the item to make it drop + } + }); +}); \ No newline at end of file diff --git a/assets/js/jquery.blockUI.js b/assets/js/jquery.blockUI.js new file mode 100644 index 0000000..90ce5d6 --- /dev/null +++ b/assets/js/jquery.blockUI.js @@ -0,0 +1,620 @@ +/*! + * jQuery blockUI plugin + * Version 2.70.0-2014.11.23 + * Requires jQuery v1.7 or later + * + * Examples at: http://malsup.com/jquery/block/ + * Copyright (c) 2007-2013 M. Alsup + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Thanks to Amir-Hossein Sobhi for some excellent contributions! + */ + +;(function() { +/*jshint eqeqeq:false curly:false latedef:false */ +"use strict"; + + function setup($) { + $.fn._fadeIn = $.fn.fadeIn; + + var noOp = $.noop || function() {}; + + // this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle + // confusing userAgent strings on Vista) + var msie = /MSIE/.test(navigator.userAgent); + var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent); + var mode = document.documentMode || 0; + var setExpr = $.isFunction( document.createElement('div').style.setExpression ); + + // global $ methods for blocking/unblocking the entire page + $.blockUI = function(opts) { install(window, opts); }; + $.unblockUI = function(opts) { remove(window, opts); }; + + // convenience method for quick growl-like notifications (http://www.google.com/search?q=growl) + $.growlUI = function(title, message, timeout, onClose) { + var $m = $('<div class="growlUI"></div>'); + if (title) $m.append('<h1>'+title+'</h1>'); + if (message) $m.append('<h2>'+message+'</h2>'); + if (timeout === undefined) timeout = 3000; + + // Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications + var callBlock = function(opts) { + opts = opts || {}; + + $.blockUI({ + message: $m, + fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700, + fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000, + timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout, + centerY: false, + showOverlay: false, + onUnblock: onClose, + css: $.blockUI.defaults.growlCSS + }); + }; + + callBlock(); + var nonmousedOpacity = $m.css('opacity'); + $m.mouseover(function() { + callBlock({ + fadeIn: 0, + timeout: 30000 + }); + + var displayBlock = $('.blockMsg'); + displayBlock.stop(); // cancel fadeout if it has started + displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency + }).mouseout(function() { + $('.blockMsg').fadeOut(1000); + }); + // End konapun additions + }; + + // plugin method for blocking element content + $.fn.block = function(opts) { + if ( this[0] === window ) { + $.blockUI( opts ); + return this; + } + var fullOpts = $.extend({}, $.blockUI.defaults, opts || {}); + this.each(function() { + var $el = $(this); + if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked')) + return; + $el.unblock({ fadeOut: 0 }); + }); + + return this.each(function() { + if ($.css(this,'position') == 'static') { + this.style.position = 'relative'; + $(this).data('blockUI.static', true); + } + this.style.zoom = 1; // force 'hasLayout' in ie + install(this, opts); + }); + }; + + // plugin method for unblocking element content + $.fn.unblock = function(opts) { + if ( this[0] === window ) { + $.unblockUI( opts ); + return this; + } + return this.each(function() { + remove(this, opts); + }); + }; + + $.blockUI.version = 2.70; // 2nd generation blocking at no extra cost! + + // override these in your code to change the default behavior and style + $.blockUI.defaults = { + // message displayed when blocking (use null for no message) + message: '<h1>Please wait...</h1>', + + title: null, // title string; only used when theme == true + draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded) + + theme: false, // set to true to use with jQuery UI themes + + // styles for the message when blocking; if you wish to disable + // these and use an external stylesheet then do this in your code: + // $.blockUI.defaults.css = {}; + css: { + padding: 0, + margin: 0, + width: '30%', + top: '40%', + left: '35%', + textAlign: 'center', + color: '#000', + border: '3px solid #aaa', + backgroundColor:'#fff', + cursor: 'wait' + }, + + // minimal style set used when themes are used + themedCSS: { + width: '30%', + top: '40%', + left: '35%' + }, + + // styles for the overlay + overlayCSS: { + backgroundColor: '#000', + opacity: 0.6, + cursor: 'wait' + }, + + // style to replace wait cursor before unblocking to correct issue + // of lingering wait cursor + cursorReset: 'default', + + // styles applied when using $.growlUI + growlCSS: { + width: '350px', + top: '10px', + left: '', + right: '10px', + border: 'none', + padding: '5px', + opacity: 0.6, + cursor: 'default', + color: '#fff', + backgroundColor: '#000', + '-webkit-border-radius':'10px', + '-moz-border-radius': '10px', + 'border-radius': '10px' + }, + + // IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w + // (hat tip to Jorge H. N. de Vasconcelos) + /*jshint scripturl:true */ + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', + + // force usage of iframe in non-IE browsers (handy for blocking applets) + forceIframe: false, + + // z-index for the blocking overlay + baseZ: 1000, + + // set these to true to have the message automatically centered + centerX: true, // <-- only effects element blocking (page block controlled via css above) + centerY: true, + + // allow body element to be stetched in ie6; this makes blocking look better + // on "short" pages. disable if you wish to prevent changes to the body height + allowBodyStretch: true, + + // enable if you want key and mouse events to be disabled for content that is blocked + bindEvents: true, + + // be default blockUI will supress tab navigation from leaving blocking content + // (if bindEvents is true) + constrainTabKey: true, + + // fadeIn time in millis; set to 0 to disable fadeIn on block + fadeIn: 200, + + // fadeOut time in millis; set to 0 to disable fadeOut on unblock + fadeOut: 400, + + // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock + timeout: 0, + + // disable if you don't want to show the overlay + showOverlay: true, + + // if true, focus will be placed in the first available input field when + // page blocking + focusInput: true, + + // elements that can receive focus + focusableElements: ':input:enabled:visible', + + // suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity) + // no longer needed in 2012 + // applyPlatformOpacityRules: true, + + // callback method invoked when fadeIn has completed and blocking message is visible + onBlock: null, + + // callback method invoked when unblocking has completed; the callback is + // passed the element that has been unblocked (which is the window object for page + // blocks) and the options that were passed to the unblock call: + // onUnblock(element, options) + onUnblock: null, + + // callback method invoked when the overlay area is clicked. + // setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used. + onOverlayClick: null, + + // don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493 + quirksmodeOffsetHack: 4, + + // class name of the message block + blockMsgClass: 'blockMsg', + + // if it is already blocked, then ignore it (don't unblock and reblock) + ignoreIfBlocked: false + }; + + // private data and functions follow... + + var pageBlock = null; + var pageBlockEls = []; + + function install(el, opts) { + var css, themedCSS; + var full = (el == window); + var msg = (opts && opts.message !== undefined ? opts.message : undefined); + opts = $.extend({}, $.blockUI.defaults, opts || {}); + + if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked')) + return; + + opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {}); + css = $.extend({}, $.blockUI.defaults.css, opts.css || {}); + if (opts.onOverlayClick) + opts.overlayCSS.cursor = 'pointer'; + + themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {}); + msg = msg === undefined ? opts.message : msg; + + // remove the current block (if there is one) + if (full && pageBlock) + remove(window, {fadeOut:0}); + + // if an existing element is being used as the blocking content then we capture + // its current place in the DOM (and current display style) so we can restore + // it when we unblock + if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) { + var node = msg.jquery ? msg[0] : msg; + var data = {}; + $(el).data('blockUI.history', data); + data.el = node; + data.parent = node.parentNode; + data.display = node.style.display; + data.position = node.style.position; + if (data.parent) + data.parent.removeChild(node); + } + + $(el).data('blockUI.onUnblock', opts.onUnblock); + var z = opts.baseZ; + + // blockUI uses 3 layers for blocking, for simplicity they are all used on every platform; + // layer1 is the iframe layer which is used to supress bleed through of underlying content + // layer2 is the overlay layer which has opacity and a wait cursor (by default) + // layer3 is the message content that is displayed while blocking + var lyr1, lyr2, lyr3, s; + if (msie || opts.forceIframe) + lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>'); + else + lyr1 = $('<div class="blockUI" style="display:none"></div>'); + + if (opts.theme) + lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>'); + else + lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'); + + if (opts.theme && full) { + s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">'; + if ( opts.title ) { + s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>'; + } + s += '<div class="ui-widget-content ui-dialog-content"></div>'; + s += '</div>'; + } + else if (opts.theme) { + s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">'; + if ( opts.title ) { + s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>'; + } + s += '<div class="ui-widget-content ui-dialog-content"></div>'; + s += '</div>'; + } + else if (full) { + s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>'; + } + else { + s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>'; + } + lyr3 = $(s); + + // if we have a message, style it + if (msg) { + if (opts.theme) { + lyr3.css(themedCSS); + lyr3.addClass('ui-widget-content'); + } + else + lyr3.css(css); + } + + // style the overlay + if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/) + lyr2.css(opts.overlayCSS); + lyr2.css('position', full ? 'fixed' : 'absolute'); + + // make iframe layer transparent in IE + if (msie || opts.forceIframe) + lyr1.css('opacity',0.0); + + //$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el); + var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el); + $.each(layers, function() { + this.appendTo($par); + }); + + if (opts.theme && opts.draggable && $.fn.draggable) { + lyr3.draggable({ + handle: '.ui-dialog-titlebar', + cancel: 'li' + }); + } + + // ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling) + var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0); + if (ie6 || expr) { + // give body 100% height + if (full && opts.allowBodyStretch && $.support.boxModel) + $('html,body').css('height','100%'); + + // fix ie6 issue when blocked element has a border width + if ((ie6 || !$.support.boxModel) && !full) { + var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth'); + var fixT = t ? '(0 - '+t+')' : 0; + var fixL = l ? '(0 - '+l+')' : 0; + } + + // simulate fixed position + $.each(layers, function(i,o) { + var s = o[0].style; + s.position = 'absolute'; + if (i < 2) { + if (full) + s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"'); + else + s.setExpression('height','this.parentNode.offsetHeight + "px"'); + if (full) + s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'); + else + s.setExpression('width','this.parentNode.offsetWidth + "px"'); + if (fixL) s.setExpression('left', fixL); + if (fixT) s.setExpression('top', fixT); + } + else if (opts.centerY) { + if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'); + s.marginTop = 0; + } + else if (!opts.centerY && full) { + var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0; + var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"'; + s.setExpression('top',expression); + } + }); + } + + // show the message + if (msg) { + if (opts.theme) + lyr3.find('.ui-widget-content').append(msg); + else + lyr3.append(msg); + if (msg.jquery || msg.nodeType) + $(msg).show(); + } + + if ((msie || opts.forceIframe) && opts.showOverlay) + lyr1.show(); // opacity is zero + if (opts.fadeIn) { + var cb = opts.onBlock ? opts.onBlock : noOp; + var cb1 = (opts.showOverlay && !msg) ? cb : noOp; + var cb2 = msg ? cb : noOp; + if (opts.showOverlay) + lyr2._fadeIn(opts.fadeIn, cb1); + if (msg) + lyr3._fadeIn(opts.fadeIn, cb2); + } + else { + if (opts.showOverlay) + lyr2.show(); + if (msg) + lyr3.show(); + if (opts.onBlock) + opts.onBlock.bind(lyr3)(); + } + + // bind key and mouse events + bind(1, el, opts); + + if (full) { + pageBlock = lyr3[0]; + pageBlockEls = $(opts.focusableElements,pageBlock); + if (opts.focusInput) + setTimeout(focus, 20); + } + else + center(lyr3[0], opts.centerX, opts.centerY); + + if (opts.timeout) { + // auto-unblock + var to = setTimeout(function() { + if (full) + $.unblockUI(opts); + else + $(el).unblock(opts); + }, opts.timeout); + $(el).data('blockUI.timeout', to); + } + } + + // remove the block + function remove(el, opts) { + var count; + var full = (el == window); + var $el = $(el); + var data = $el.data('blockUI.history'); + var to = $el.data('blockUI.timeout'); + if (to) { + clearTimeout(to); + $el.removeData('blockUI.timeout'); + } + opts = $.extend({}, $.blockUI.defaults, opts || {}); + bind(0, el, opts); // unbind events + + if (opts.onUnblock === null) { + opts.onUnblock = $el.data('blockUI.onUnblock'); + $el.removeData('blockUI.onUnblock'); + } + + var els; + if (full) // crazy selector to handle odd field errors in ie6/7 + els = $('body').children().filter('.blockUI').add('body > .blockUI'); + else + els = $el.find('>.blockUI'); + + // fix cursor issue + if ( opts.cursorReset ) { + if ( els.length > 1 ) + els[1].style.cursor = opts.cursorReset; + if ( els.length > 2 ) + els[2].style.cursor = opts.cursorReset; + } + + if (full) + pageBlock = pageBlockEls = null; + + if (opts.fadeOut) { + count = els.length; + els.stop().fadeOut(opts.fadeOut, function() { + if ( --count === 0) + reset(els,data,opts,el); + }); + } + else + reset(els, data, opts, el); + } + + // move blocking element back into the DOM where it started + function reset(els,data,opts,el) { + var $el = $(el); + if ( $el.data('blockUI.isBlocked') ) + return; + + els.each(function(i,o) { + // remove via DOM calls so we don't lose event handlers + if (this.parentNode) + this.parentNode.removeChild(this); + }); + + if (data && data.el) { + data.el.style.display = data.display; + data.el.style.position = data.position; + data.el.style.cursor = 'default'; // #59 + if (data.parent) + data.parent.appendChild(data.el); + $el.removeData('blockUI.history'); + } + + if ($el.data('blockUI.static')) { + $el.css('position', 'static'); // #22 + } + + if (typeof opts.onUnblock == 'function') + opts.onUnblock(el,opts); + + // fix issue in Safari 6 where block artifacts remain until reflow + var body = $(document.body), w = body.width(), cssW = body[0].style.width; + body.width(w-1).width(w); + body[0].style.width = cssW; + } + + // bind/unbind the handler + function bind(b, el, opts) { + var full = el == window, $el = $(el); + + // don't bother unbinding if there is nothing to unbind + if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked'))) + return; + + $el.data('blockUI.isBlocked', b); + + // don't bind events when overlay is not in use or if bindEvents is false + if (!full || !opts.bindEvents || (b && !opts.showOverlay)) + return; + + // bind anchors and inputs for mouse and key events + var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove'; + if (b) + $(document).bind(events, opts, handler); + else + $(document).unbind(events, handler); + + // former impl... + // var $e = $('a,:input'); + // b ? $e.bind(events, opts, handler) : $e.unbind(events, handler); + } + + // event handler to suppress keyboard/mouse events when blocking + function handler(e) { + // allow tab navigation (conditionally) + if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) { + if (pageBlock && e.data.constrainTabKey) { + var els = pageBlockEls; + var fwd = !e.shiftKey && e.target === els[els.length-1]; + var back = e.shiftKey && e.target === els[0]; + if (fwd || back) { + setTimeout(function(){focus(back);},10); + return false; + } + } + } + var opts = e.data; + var target = $(e.target); + if (target.hasClass('blockOverlay') && opts.onOverlayClick) + opts.onOverlayClick(e); + + // allow events within the message content + if (target.parents('div.' + opts.blockMsgClass).length > 0) + return true; + + // allow events for content that is not being blocked + return target.parents().children().filter('div.blockUI').length === 0; + } + + function focus(back) { + if (!pageBlockEls) + return; + var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0]; + if (e) + e.focus(); + } + + function center(el, x, y) { + var p = el.parentNode, s = el.style; + var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth'); + var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth'); + if (x) s.left = l > 0 ? (l+'px') : '0'; + if (y) s.top = t > 0 ? (t+'px') : '0'; + } + + function sz(el, p) { + return parseInt($.css(el,p),10)||0; + } + + } + + + /*global define:true */ + if (typeof define === 'function' && define.amd && define.amd.jQuery) { + define(['jquery'], setup); + } else { + setup(jQuery); + } + +})(); diff --git a/assets/js/jquery.core.js b/assets/js/jquery.core.js new file mode 100644 index 0000000..83afe63 --- /dev/null +++ b/assets/js/jquery.core.js @@ -0,0 +1,228 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Module/App: Core js +*/ + + +//portlets +!function($) { + "use strict"; + + /** + Portlet Widget + */ + var Portlet = function() { + this.$body = $("body"), + this.$portletIdentifier = ".portlet", + this.$portletCloser = '.portlet a[data-toggle="remove"]', + this.$portletRefresher = '.portlet a[data-toggle="reload"]' + }; + + //on init + Portlet.prototype.init = function() { + // Panel closest + var $this = this; + $(document).on("click",this.$portletCloser, function (ev) { + ev.preventDefault(); + var $portlet = $(this).closest($this.$portletIdentifier); + var $portlet_parent = $portlet.parent(); + + + $portlet.slideUp("slow", function() { + $(this).remove(); + }); + if ($portlet_parent.children().length == 0) { + $portlet_parent.slideUp("slow", function() { + $(this).remove(); + }); + } + }); + + // Panel Reload + $(document).on("click",this.$portletRefresher, function (ev) { + ev.preventDefault(); + var $portlet = $(this).closest($this.$portletIdentifier); + // This is just a simulation, nothing is going to be reloaded + $portlet.append('<div class="panel-disabled"><div class="portlet-loader"></div></div>'); + var $pd = $portlet.find('.panel-disabled'); + setTimeout(function () { + $pd.fadeOut('fast', function () { + $pd.remove(); + }); + }, 500 + 300 * (Math.random() * 5)); + }); + }, + // + $.Portlet = new Portlet, $.Portlet.Constructor = Portlet + +}(window.jQuery), + + + +/** + * Components + */ +function($) { + "use strict"; + + var Components = function() {}; + + //initializing tooltip + Components.prototype.initTooltipPlugin = function() { + $.fn.tooltip && $('[data-toggle="tooltip"]').tooltip() + }, + + //initializing popover + Components.prototype.initPopoverPlugin = function() { + $.fn.popover && $('[data-toggle="popover"]').popover() + }, + + //initializing custom modal + Components.prototype.initCustomModalPlugin = function() { + $('[data-plugin="custommodal"]').on('click', function(e) { + Custombox.open({ + target: $(this).attr("href"), + effect: $(this).attr("data-animation"), + overlaySpeed: $(this).attr("data-overlaySpeed"), + overlayColor: $(this).attr("data-overlayColor") + }); + e.preventDefault(); + }); + }, + + //initializing nicescroll + Components.prototype.initNiceScrollPlugin = function() { + //You can change the color of scroll bar here + $.fn.niceScroll && $(".nicescroll").niceScroll({ cursorcolor: '#98a6ad',cursorwidth:'6px', cursorborderradius: '5px'}); + }, + + //initializing Slimscroll + Components.prototype.initSlimScrollPlugin = function() { + //You can change the color of scroll bar here + $.fn.slimScroll && $(".slimscroll-alt").slimScroll({ position: 'right',size: "5px", color: '#98a6ad',wheelStep: 10}); + }, + + //range slider + Components.prototype.initRangeSlider = function() { + $.fn.slider && $('[data-plugin="range-slider"]').slider({}); + }, + + /* ------------- + * Form related controls + */ + //switch + Components.prototype.initSwitchery = function() { + $('[data-plugin="switchery"]').each(function (idx, obj) { + new Switchery($(this)[0], $(this).data()); + }); + }, + //multiselect + Components.prototype.initMultiSelect = function() { + if($('[data-plugin="multiselect"]').length > 0) + $('[data-plugin="multiselect"]').multiSelect($(this).data()); + }, + + /* ------------- + * small charts related widgets + */ + //peity charts + Components.prototype.initPeityCharts = function() { + $('[data-plugin="peity-pie"]').each(function(idx, obj) { + var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[]; + var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20 + var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20 + $(this).peity("pie", { + fill: colors, + width: width, + height: height + }); + }); + //donut + $('[data-plugin="peity-donut"]').each(function(idx, obj) { + var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[]; + var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20 + var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20 + $(this).peity("donut", { + fill: colors, + width: width, + height: height + }); + }); + + $('[data-plugin="peity-donut-alt"]').each(function(idx, obj) { + $(this).peity("donut"); + }); + + // line + $('[data-plugin="peity-line"]').each(function(idx, obj) { + $(this).peity("line", $(this).data()); + }); + + // bar + $('[data-plugin="peity-bar"]').each(function(idx, obj) { + var colors = $(this).attr('data-colors')?$(this).attr('data-colors').split(","):[]; + var width = $(this).attr('data-width')?$(this).attr('data-width'):20; //default is 20 + var height = $(this).attr('data-height')?$(this).attr('data-height'):20; //default is 20 + $(this).peity("bar", { + fill: colors, + width: width, + height: height + }); + }); + }, + Components.prototype.initKnob = function() { + $('[data-plugin="knob"]').each(function(idx, obj) { + $(this).knob(); + }); + }, + + Components.prototype.initCircliful = function() { + $('[data-plugin="circliful"]').each(function(idx, obj) { + $(this).circliful(); + }); + }, + + Components.prototype.initCounterUp = function() { + var delay = $(this).attr('data-delay')?$(this).attr('data-delay'):100; //default is 100 + var time = $(this).attr('data-time')?$(this).attr('data-time'):1200; //default is 1200 + $('[data-plugin="counterup"]').each(function(idx, obj) { + $(this).counterUp({ + delay: 100, + time: 1200 + }); + }); + }, + + + //initilizing + Components.prototype.init = function() { + var $this = this; + this.initTooltipPlugin(), + this.initPopoverPlugin(), + this.initNiceScrollPlugin(), + this.initSlimScrollPlugin(), + this.initCustomModalPlugin(), + this.initRangeSlider(), + this.initSwitchery(), + this.initMultiSelect(), + this.initPeityCharts(), + this.initKnob(), + this.initCircliful(), + this.initCounterUp(), + //creating portles + $.Portlet.init(); + }, + + $.Components = new Components, $.Components.Constructor = Components + +}(window.jQuery), + //initializing main application module +function($) { + "use strict"; + $.Components.init(); +}(window.jQuery); + + + + diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js new file mode 100644 index 0000000..fad9ab1 --- /dev/null +++ b/assets/js/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), +void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); +//# sourceMappingURL=jquery.min.map \ No newline at end of file diff --git a/assets/js/jquery.scrollTo.min.js b/assets/js/jquery.scrollTo.min.js new file mode 100644 index 0000000..9d1aa7b --- /dev/null +++ b/assets/js/jquery.scrollTo.min.js @@ -0,0 +1,7 @@ +/** + * Copyright (c) 2007-2013 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * @author Ariel Flesler + * @version 1.4.6 + */ +;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,targ,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); diff --git a/assets/js/jquery.slimscroll.js b/assets/js/jquery.slimscroll.js new file mode 100644 index 0000000..2261a1b --- /dev/null +++ b/assets/js/jquery.slimscroll.js @@ -0,0 +1,470 @@ +/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * Version: 1.3.6 + * + */ +(function($) { + + $.fn.extend({ + slimScroll: function(options) { + + var defaults = { + + // width in pixels of the visible scroll area + width : 'auto', + + // height in pixels of the visible scroll area + height : '250px', + + // width in pixels of the scrollbar and rail + size : '7px', + + // scrollbar color, accepts any hex/color value + color: '#000', + + // scrollbar position - left/right + position : 'right', + + // distance in pixels between the side edge and the scrollbar + distance : '1px', + + // default scroll position on load - top / bottom / $('selector') + start : 'top', + + // sets scrollbar opacity + opacity : .4, + + // enables always-on mode for the scrollbar + alwaysVisible : false, + + // check if we should hide the scrollbar when user is hovering over + disableFadeOut : false, + + // sets visibility of the rail + railVisible : false, + + // sets rail color + railColor : '#333', + + // sets rail opacity + railOpacity : .2, + + // whether we should use jQuery UI Draggable to enable bar dragging + railDraggable : true, + + // defautlt CSS class of the slimscroll rail + railClass : 'slimScrollRail', + + // defautlt CSS class of the slimscroll bar + barClass : 'slimScrollBar', + + // defautlt CSS class of the slimscroll wrapper + wrapperClass : 'slimScrollDiv', + + // check if mousewheel should scroll the window if we reach top/bottom + allowPageScroll : false, + + // scroll amount applied to each mouse wheel step + wheelStep : 20, + + // scroll amount applied when user is using gestures + touchScrollStep : 200, + + // sets border radius + borderRadius: '7px', + + // sets border radius of the rail + railBorderRadius : '7px' + }; + + var o = $.extend(defaults, options); + + // do it for every element that matches selector + this.each(function(){ + + var isOverPanel, isOverBar, isDragg, queueHide, touchDif, + barHeight, percentScroll, lastScroll, + divS = '<div></div>', + minBarHeight = 30, + releaseScroll = false; + + // used in event handlers and for better minification + var me = $(this); + + // ensure we are not binding it again + if (me.parent().hasClass(o.wrapperClass)) + { + // start from last bar position + var offset = me.scrollTop(); + + // find bar and rail + bar = me.closest('.' + o.barClass); + rail = me.closest('.' + o.railClass); + + getBarHeight(); + + // check if we should scroll existing instance + if ($.isPlainObject(options)) + { + // Pass height: auto to an existing slimscroll object to force a resize after contents have changed + if ( 'height' in options && options.height == 'auto' ) { + me.parent().css('height', 'auto'); + me.css('height', 'auto'); + var height = me.parent().parent().height(); + me.parent().css('height', height); + me.css('height', height); + } + + if ('scrollTo' in options) + { + // jump to a static point + offset = parseInt(o.scrollTo); + } + else if ('scrollBy' in options) + { + // jump by value pixels + offset += parseInt(o.scrollBy); + } + else if ('destroy' in options) + { + // remove slimscroll elements + bar.remove(); + rail.remove(); + me.unwrap(); + return; + } + + // scroll content by the given offset + scrollContent(offset, false, true); + } + + return; + } + else if ($.isPlainObject(options)) + { + if ('destroy' in options) + { + return; + } + } + + // optionally set height to the parent's height + o.height = (o.height == 'auto') ? me.parent().height() : o.height; + + // wrap content + var wrapper = $(divS) + .addClass(o.wrapperClass) + .css({ + position: 'relative', + overflow: 'hidden', + width: o.width, + height: o.height + }); + + // update style for the div + me.css({ + overflow: 'hidden', + width: o.width, + height: o.height + }); + + // create scrollbar rail + var rail = $(divS) + .addClass(o.railClass) + .css({ + width: o.size, + height: '100%', + position: 'absolute', + top: 0, + display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', + 'border-radius': o.railBorderRadius, + background: o.railColor, + opacity: o.railOpacity, + zIndex: 90 + }); + + // create scrollbar + var bar = $(divS) + .addClass(o.barClass) + .css({ + background: o.color, + width: o.size, + position: 'absolute', + top: 0, + opacity: o.opacity, + display: o.alwaysVisible ? 'block' : 'none', + 'border-radius' : o.borderRadius, + BorderRadius: o.borderRadius, + MozBorderRadius: o.borderRadius, + WebkitBorderRadius: o.borderRadius, + zIndex: 99 + }); + + // set position + var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance }; + rail.css(posCss); + bar.css(posCss); + + // wrap it + me.wrap(wrapper); + + // append to parent div + me.parent().append(bar); + me.parent().append(rail); + + // make it draggable and no longer dependent on the jqueryUI + if (o.railDraggable){ + bar.bind("mousedown", function(e) { + var $doc = $(document); + isDragg = true; + t = parseFloat(bar.css('top')); + pageY = e.pageY; + + $doc.bind("mousemove.slimscroll", function(e){ + currTop = t + e.pageY - pageY; + bar.css('top', currTop); + scrollContent(0, bar.position().top, false);// scroll content + }); + + $doc.bind("mouseup.slimscroll", function(e) { + isDragg = false;hideBar(); + $doc.unbind('.slimscroll'); + }); + return false; + }).bind("selectstart.slimscroll", function(e){ + e.stopPropagation(); + e.preventDefault(); + return false; + }); + } + + // on rail over + rail.hover(function(){ + showBar(); + }, function(){ + hideBar(); + }); + + // on bar over + bar.hover(function(){ + isOverBar = true; + }, function(){ + isOverBar = false; + }); + + // show on parent mouseover + me.hover(function(){ + isOverPanel = true; + showBar(); + hideBar(); + }, function(){ + isOverPanel = false; + hideBar(); + }); + + // support for mobile + me.bind('touchstart', function(e,b){ + if (e.originalEvent.touches.length) + { + // record where touch started + touchDif = e.originalEvent.touches[0].pageY; + } + }); + + me.bind('touchmove', function(e){ + // prevent scrolling the page if necessary + if(!releaseScroll) + { + e.originalEvent.preventDefault(); + } + if (e.originalEvent.touches.length) + { + // see how far user swiped + var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; + // scroll content + scrollContent(diff, true); + touchDif = e.originalEvent.touches[0].pageY; + } + }); + + // set up initial height + getBarHeight(); + + // check start position + if (o.start === 'bottom') + { + // scroll content to bottom + bar.css({ top: me.outerHeight() - bar.outerHeight() }); + scrollContent(0, true); + } + else if (o.start !== 'top') + { + // assume jQuery selector + scrollContent($(o.start).position().top, null, true); + + // make sure bar stays hidden + if (!o.alwaysVisible) { bar.hide(); } + } + + // attach scroll events + attachWheel(this); + + function _onWheel(e) + { + // use mouse wheel only when mouse is over + if (!isOverPanel) { return; } + + var e = e || window.event; + + var delta = 0; + if (e.wheelDelta) { delta = -e.wheelDelta/120; } + if (e.detail) { delta = e.detail / 3; } + + var target = e.target || e.srcTarget || e.srcElement; + if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { + // scroll content + scrollContent(delta, true); + } + + // stop window scroll + if (e.preventDefault && !releaseScroll) { e.preventDefault(); } + if (!releaseScroll) { e.returnValue = false; } + } + + function scrollContent(y, isWheel, isJump) + { + releaseScroll = false; + var delta = y; + var maxTop = me.outerHeight() - bar.outerHeight(); + + if (isWheel) + { + // move bar with mouse wheel + delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight(); + + // move bar, make sure it doesn't go out + delta = Math.min(Math.max(delta, 0), maxTop); + + // if scrolling down, make sure a fractional change to the + // scroll position isn't rounded away when the scrollbar's CSS is set + // this flooring of delta would happened automatically when + // bar.css is set below, but we floor here for clarity + delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); + + // scroll the scrollbar + bar.css({ top: delta + 'px' }); + } + + // calculate actual scroll amount + percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight()); + delta = percentScroll * (me[0].scrollHeight - me.outerHeight()); + + if (isJump) + { + delta = y; + var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); + offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); + bar.css({ top: offsetTop + 'px' }); + } + + // scroll content + me.scrollTop(delta); + + // fire scrolling event + me.trigger('slimscrolling', ~~delta); + + // ensure bar is visible + showBar(); + + // trigger hide when scroll is stopped + hideBar(); + } + + function attachWheel(target) + { + if (window.addEventListener) + { + target.addEventListener('DOMMouseScroll', _onWheel, false ); + target.addEventListener('mousewheel', _onWheel, false ); + } + else + { + document.attachEvent("onmousewheel", _onWheel) + } + } + + function getBarHeight() + { + // calculate scrollbar height and make sure it is not too small + barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); + bar.css({ height: barHeight + 'px' }); + + // hide scrollbar if content is not long enough + var display = barHeight == me.outerHeight() ? 'none' : 'block'; + bar.css({ display: display }); + } + + function showBar() + { + // recalculate bar height + getBarHeight(); + clearTimeout(queueHide); + + // when bar reached top or bottom + if (percentScroll == ~~percentScroll) + { + //release wheel + releaseScroll = o.allowPageScroll; + + // publish approporiate event + if (lastScroll != percentScroll) + { + var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; + me.trigger('slimscroll', msg); + } + } + else + { + releaseScroll = false; + } + lastScroll = percentScroll; + + // show only when required + if(barHeight >= me.outerHeight()) { + //allow window scroll + releaseScroll = true; + return; + } + bar.stop(true,true).fadeIn('fast'); + if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); } + } + + function hideBar() + { + // only hide when options allow it + if (!o.alwaysVisible) + { + queueHide = setTimeout(function(){ + if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) + { + bar.fadeOut('slow'); + rail.fadeOut('slow'); + } + }, 1000); + } + } + + }); + + // maintain chainability + return this; + } + }); + + $.fn.extend({ + slimscroll: $.fn.slimScroll + }); + +})(jQuery); diff --git a/assets/js/jspdf.min.js b/assets/js/jspdf.min.js new file mode 100644 index 0000000..8230a7c --- /dev/null +++ b/assets/js/jspdf.min.js @@ -0,0 +1,197 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.jspdf=e()}(this,function(){"use strict";var t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e=(function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,i){var s={key:t,arg:e,resolve:n,reject:i,next:null};a?a=a.next=s:(o=a=s,r(t,e))})}function r(n,o){try{var a=e[n](o),s=a.value;s instanceof t?Promise.resolve(s.value).then(function(t){r("next",t)},function(t){r("throw",t)}):i(a.done?"return":"normal",a.value)}catch(t){i("throw",t)}}function i(t,e){switch(t){case"return":o.resolve({value:e,done:!0});break;case"throw":o.reject(e);break;default:o.resolve({value:e,done:!1})}o=o.next,o?r(o.key,o.arg):a=null}var o,a;this._invoke=n,"function"!=typeof e.return&&(this.return=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype.throw=function(t){return this._invoke("throw",t)},e.prototype.return=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),function(e){function n(t){var n={};this.subscribe=function(t,e,r){if("function"!=typeof e)return!1;n.hasOwnProperty(t)||(n[t]={});var i=Math.random().toString(35);return n[t][i]=[e,!!r],i},this.unsubscribe=function(t){for(var e in n)if(n[e][t])return delete n[e][t],!0;return!1},this.publish=function(r){if(n.hasOwnProperty(r)){var i=Array.prototype.slice.call(arguments,1),o=[];for(var a in n[r]){var s=n[r][a];try{s[0].apply(t,i)}catch(t){e.console&&console.error("jsPDF PubSub Error",t.message,t)}s[1]&&o.push(a)}o.length&&o.forEach(this.unsubscribe)}}}function r(c,l,u,h){var f={};"object"===("undefined"==typeof c?"undefined":t(c))&&(f=c,c=f.orientation,l=f.unit||l,u=f.format||u,h=f.compress||f.compressPdf||h),l=l||"mm",u=u||"a4",c=(""+(c||"P")).toLowerCase();var d,p,g,m,w,y,v,b,x,k=((""+u).toLowerCase(),!!h&&"function"==typeof Uint8Array),_=f.textColor||"0 g",C=f.drawColor||"0 G",A=f.fontSize||16,S=f.lineHeight||1.15,q=f.lineWidth||.200025,T=2,P=!1,I=[],E={},O={},F=0,R=[],B=[],D=[],j=[],z=[],N=0,L=0,M=0,U={title:"",subject:"",author:"",keywords:"",creator:""},H={},W=new n(H),X=function(t){return t.toFixed(2)},V=function(t){return t.toFixed(3)},Y=function(t){return("0"+parseInt(t)).slice(-2)},G=function(t){P?R[m].push(t):(M+=t.length+1,j.push(t))},J=function(){return T++,I[T]=M,G(T+" 0 obj"),T},Q=function(){var t=2*R.length+1;t+=z.length;var e={objId:t,content:""};return z.push(e),e},K=function(){return T++,I[T]=function(){return M},T},$=function(t){I[t]=M},Z=function(t){G("stream"),G(t),G("endstream")},tt=function(){var t,n,i,o,s,c,l,u,h,f=[];for(l=e.adler32cs||r.adler32cs,k&&"undefined"==typeof l&&(k=!1),t=1;t<=F;t++){if(f.push(J()),u=(w=D[t].width)*p,h=(y=D[t].height)*p,G("<</Type /Page"),G("/Parent 1 0 R"),G("/Resources 2 0 R"),G("/MediaBox [0 0 "+X(u)+" "+X(h)+"]"),W.publish("putPage",{pageNumber:t,page:R[t]}),G("/Contents "+(T+1)+" 0 R"),G(">>"),G("endobj"),n=R[t].join("\n"),J(),k){for(i=[],o=n.length;o--;)i[o]=n.charCodeAt(o);c=l.from(n),s=new a(6),s.append(new Uint8Array(i)),n=s.flush(),i=new Uint8Array(n.length+6),i.set(new Uint8Array([120,156])),i.set(n,2),i.set(new Uint8Array([255&c,c>>8&255,c>>16&255,c>>24&255]),n.length+2),n=String.fromCharCode.apply(null,i),G("<</Length "+n.length+" /Filter [/FlateDecode]>>")}else G("<</Length "+n.length+">>");Z(n),G("endobj")}I[1]=M,G("1 0 obj"),G("<</Type /Pages");var d="/Kids [";for(o=0;o<F;o++)d+=f[o]+" 0 R ";G(d+"]"),G("/Count "+F),G(">>"),G("endobj"),W.publish("postPutPages")},et=function(t){t.objectNumber=J(),G("<</BaseFont/"+t.PostScriptName+"/Type/Font"),"string"==typeof t.encoding&&G("/Encoding/"+t.encoding),G("/Subtype/Type1>>"),G("endobj")},nt=function(){for(var t in E)E.hasOwnProperty(t)&&et(E[t])},rt=function(){W.publish("putXobjectDict")},it=function(){G("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),G("/Font <<");for(var t in E)E.hasOwnProperty(t)&&G("/"+t+" "+E[t].objectNumber+" 0 R");G(">>"),G("/XObject <<"),rt(),G(">>")},ot=function(){nt(),W.publish("putResources"),I[2]=M,G("2 0 obj"),G("<<"),it(),G(">>"),G("endobj"),W.publish("postPutResources")},at=function(){W.publish("putAdditionalObjects");for(var t=0;t<z.length;t++){var e=z[t];I[e.objId]=M,G(e.objId+" 0 obj"),G(e.content),G("endobj")}T+=z.length,W.publish("postPutAdditionalObjects")},st=function(t,e,n){O.hasOwnProperty(e)||(O[e]={}),O[e][n]=t},ct=function(t,e,n,r){var i="F"+(Object.keys(E).length+1).toString(10),o=E[i]={id:i,PostScriptName:t,fontName:e,fontStyle:n,encoding:r,metadata:{}};return st(i,e,n),W.publish("addFont",o),i},lt=function(){for(var t="helvetica",e="times",n="courier",r="normal",i="bold",o="italic",a="bolditalic",s="StandardEncoding",c="zapfdingbats",l=[["Helvetica",t,r],["Helvetica-Bold",t,i],["Helvetica-Oblique",t,o],["Helvetica-BoldOblique",t,a],["Courier",n,r],["Courier-Bold",n,i],["Courier-Oblique",n,o],["Courier-BoldOblique",n,a],["Times-Roman",e,r],["Times-Bold",e,i],["Times-Italic",e,o],["Times-BoldItalic",e,a],["ZapfDingbats",c]],u=0,h=l.length;u<h;u++){var f=ct(l[u][0],l[u][1],l[u][2],s),d=l[u][0].split("-");st(f,d[0],d[1]||"")}W.publish("addFonts",{fonts:E,dictionary:O})},ut=function(t){return t.foo=function(){try{return t.apply(this,arguments)}catch(t){var n=t.stack||"";~n.indexOf(" at ")&&(n=n.split(" at ")[1]);var r="Error in function "+n.split("\n")[0].split("<")[0]+": "+t.message;if(!e.console)throw new Error(r);e.console.error(r,t),e.alert&&alert(r)}},t.foo.bar=t,t.foo},ht=function(t,e){var n,r,i,o,a,s,c,l,u;if(e=e||{},i=e.sourceEncoding||"Unicode",a=e.outputEncoding,(e.autoencode||a)&&E[d].metadata&&E[d].metadata[i]&&E[d].metadata[i].encoding&&(o=E[d].metadata[i].encoding,!a&&E[d].encoding&&(a=E[d].encoding),!a&&o.codePages&&(a=o.codePages[0]),"string"==typeof a&&(a=o[a]),a)){for(c=!1,s=[],n=0,r=t.length;n<r;n++)l=a[t.charCodeAt(n)],l?s.push(String.fromCharCode(l)):s.push(t[n]),s[n].charCodeAt(0)>>8&&(c=!0);t=s.join("")}for(n=t.length;void 0===c&&0!==n;)t.charCodeAt(n-1)>>8&&(c=!0),n--;if(!c)return t;for(s=e.noBOM?[]:[254,255],n=0,r=t.length;n<r;n++){if(l=t.charCodeAt(n),u=l>>8,u>>8)throw new Error("Character at position "+n+" of string '"+t+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");s.push(u),s.push(l-(u<<8))}return String.fromCharCode.apply(void 0,s)},ft=function(t,e){return ht(t,e).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},dt=function(){G("/Producer (jsPDF "+r.version+")");for(var t in U)U.hasOwnProperty(t)&&U[t]&&G("/"+t.substr(0,1).toUpperCase()+t.substr(1)+" ("+ft(U[t])+")");var e=new Date,n=e.getTimezoneOffset(),i=n<0?"+":"-",o=Math.floor(Math.abs(n/60)),a=Math.abs(n%60),s=[i,Y(o),"'",Y(a),"'"].join("");G(["/CreationDate (D:",e.getFullYear(),Y(e.getMonth()+1),Y(e.getDate()),Y(e.getHours()),Y(e.getMinutes()),Y(e.getSeconds()),s,")"].join(""))},pt=function(){switch(G("/Type /Catalog"),G("/Pages 1 0 R"),b||(b="fullwidth"),b){case"fullwidth":G("/OpenAction [3 0 R /FitH null]");break;case"fullheight":G("/OpenAction [3 0 R /FitV null]");break;case"fullpage":G("/OpenAction [3 0 R /Fit]");break;case"original":G("/OpenAction [3 0 R /XYZ null null 1]");break;default:var t=""+b;"%"===t.substr(t.length-1)&&(b=parseInt(b)/100),"number"==typeof b&&G("/OpenAction [3 0 R /XYZ null null "+X(b)+"]")}switch(x||(x="continuous"),x){case"continuous":G("/PageLayout /OneColumn");break;case"single":G("/PageLayout /SinglePage");break;case"two":case"twoleft":G("/PageLayout /TwoColumnLeft");break;case"tworight":G("/PageLayout /TwoColumnRight")}v&&G("/PageMode /"+v),W.publish("putCatalog")},gt=function(){G("/Size "+(T+1)),G("/Root "+T+" 0 R"),G("/Info "+(T-1)+" 0 R")},mt=function(t,e){var n="string"==typeof e&&e.toLowerCase();if("string"==typeof t){var r=t.toLowerCase();s.hasOwnProperty(r)&&(t=s[r][0]/p,e=s[r][1]/p)}if(Array.isArray(t)&&(e=t[1],t=t[0]),n){switch(n.substr(0,1)){case"l":e>t&&(n="s");break;case"p":t>e&&(n="s")}"s"===n&&(g=t,t=e,e=g)}P=!0,R[++F]=[],D[F]={width:Number(t)||w,height:Number(e)||y},B[F]={},vt(F)},wt=function(){mt.apply(this,arguments),G(X(q*p)+" w"),G(C),0!==N&&G(N+" J"),0!==L&&G(L+" j"),W.publish("addPage",{pageNumber:F})},yt=function(t){t>0&&t<=F&&(R.splice(t,1),D.splice(t,1),F--,m>F&&(m=F),this.setPage(m))},vt=function(t){t>0&&t<=F&&(m=t,w=D[t].width,y=D[t].height)},bt=function(t,e){var n;switch(t=void 0!==t?t:E[d].fontName,e=void 0!==e?e:E[d].fontStyle,void 0!==t&&(t=t.toLowerCase()),t){case"sans-serif":case"verdana":case"arial":case"helvetica":t="helvetica";break;case"fixed":case"monospace":case"terminal":case"courier":t="courier";break;case"serif":case"cursive":case"fantasy":default:t="times"}try{n=O[t][e]}catch(t){}return n||(n=O.times[e],null==n&&(n=O.times.normal)),n},xt=function(){P=!1,T=2,M=0,j=[],I=[],z=[],W.publish("buildDocument"),G("%PDF-"+o),tt(),at(),ot(),J(),G("<<"),dt(),G(">>"),G("endobj"),J(),G("<<"),pt(),G(">>"),G("endobj");var t,e=M,n="0000000000";for(G("xref"),G("0 "+(T+1)),G(n+" 65535 f "),t=1;t<=T;t++){var r=I[t];G("function"==typeof r?(n+I[t]()).slice(-10)+" 00000 n ":(n+I[t]).slice(-10)+" 00000 n ")}return G("trailer"),G("<<"),gt(),G(">>"),G("startxref"),G(""+e),G("%%EOF"),P=!0,j.join("\n")},kt=function(t){var e="S";return"F"===t?e="f":"FD"===t||"DF"===t?e="B":"f"!==t&&"f*"!==t&&"B"!==t&&"B*"!==t||(e=t),e},_t=function(){for(var t=xt(),e=t.length,n=new ArrayBuffer(e),r=new Uint8Array(n);e--;)r[e]=t.charCodeAt(e);return n},Ct=function(){return new Blob([_t()],{type:"application/pdf"})},At=ut(function(t,n){var r="dataur"===(""+t).substr(0,6)?"data:application/pdf;base64,"+btoa(xt()):0;switch(t){case void 0:return xt();case"save":if(navigator.getUserMedia&&(void 0===e.URL||void 0===e.URL.createObjectURL))return H.output("dataurlnewwindow");i(Ct(),n),"function"==typeof i.unload&&e.setTimeout&&setTimeout(i.unload,911);break;case"arraybuffer":return _t();case"blob":return Ct();case"bloburi":case"bloburl":return e.URL&&e.URL.createObjectURL(Ct())||void 0;case"datauristring":case"dataurlstring":return r;case"dataurlnewwindow":var o=e.open(r);if(o||"undefined"==typeof safari)return o;case"datauri":case"dataurl":return e.document.location.href=r;default:throw new Error('Output type "'+t+'" is not supported.')}});switch(l){case"pt":p=1;break;case"mm":p=72/25.4000508;break;case"cm":p=72/2.54000508;break;case"in":p=72;break;case"px":p=96/72;break;case"pc":p=12;break;case"em":p=12;break;case"ex":p=6;break;default:throw"Invalid unit: "+l}H.internal={pdfEscape:ft,getStyle:kt,getFont:function(){return E[bt.apply(H,arguments)]},getFontSize:function(){return A},getLineHeight:function(){return A*S},write:function(t){G(1===arguments.length?t:Array.prototype.join.call(arguments," "))},getCoordinateString:function(t){return X(t*p)},getVerticalCoordinateString:function(t){return X((y-t)*p)},collections:{},newObject:J,newAdditionalObject:Q,newObjectDeferred:K,newObjectDeferredBegin:$,putStream:Z,events:W,scaleFactor:p,pageSize:{get width(){return w},get height(){return y}},output:function(t,e){return At(t,e)},getNumberOfPages:function(){return R.length-1},pages:R,out:G,f2:X,getPageInfo:function(t){var e=2*(t-1)+3;return{objId:e,pageNumber:t,pageContext:B[t]}},getCurrentPageInfo:function(){var t=2*(m-1)+3;return{objId:t,pageNumber:m,pageContext:B[m]}},getPDFVersion:function(){return o}},H.addPage=function(){return wt.apply(this,arguments),this},H.setPage=function(){return vt.apply(this,arguments),this},H.insertPage=function(t){return this.addPage(),this.movePage(m,t),this},H.movePage=function(t,e){if(t>e){for(var n=R[t],r=D[t],i=B[t],o=t;o>e;o--)R[o]=R[o-1],D[o]=D[o-1],B[o]=B[o-1];R[e]=n,D[e]=r,B[e]=i,this.setPage(e)}else if(t<e){for(var n=R[t],r=D[t],i=B[t],o=t;o<e;o++)R[o]=R[o+1],D[o]=D[o+1],B[o]=B[o+1];R[e]=n,D[e]=r,B[e]=i,this.setPage(e)}return this},H.deletePage=function(){return yt.apply(this,arguments),this},H.setDisplayMode=function(t,e,n){b=t,x=e,v=n;var r=[void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"];if(r.indexOf(n)==-1)throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+n+'" is not recognized.');return this},H.text=function(t,e,n,r,i,o){function a(t){return t=t.split("\t").join(Array(f.TabLen||9).join(" ")),ft(t,r)}"number"==typeof t&&(g=n,n=e,e=t,t=g),"string"==typeof t&&(t=t.match(/[\n\r]/)?t.split(/\r\n|\r|\n/g):[t]),"string"==typeof i&&(o=i,i=null),"string"==typeof r&&(o=r,r=null),"number"==typeof r&&(i=r,r=null);var s,c="",l="Td";if(i){i*=Math.PI/180;var u=Math.cos(i),h=Math.sin(i);c=[X(u),X(h),X(h*-1),X(u),""].join(" "),l="Tm"}r=r||{},"noBOM"in r||(r.noBOM=!0),"autoencode"in r||(r.autoencode=!0);var m="",w=this.internal.getCurrentPageInfo().pageContext;if(!0===r.stroke?w.lastTextWasStroke!==!0&&(m="1 Tr\n",w.lastTextWasStroke=!0):(w.lastTextWasStroke&&(m="0 Tr\n"),w.lastTextWasStroke=!1),"undefined"==typeof this._runningPageHeight&&(this._runningPageHeight=0),"string"==typeof t)t=a(t);else{if("[object Array]"!==Object.prototype.toString.call(t))throw new Error('Type of text must be string or Array. "'+t+'" is not recognized.');for(var v=t.concat(),b=[],x=v.length;x--;)b.push(a(v.shift()));var k=Math.ceil((y-n-this._runningPageHeight)*p/(A*S));if(0<=k&&k<b.length+1,o){var C,q,T,P=A*S,I=t.map(function(t){return this.getStringUnitWidth(t)*A/p},this);if(T=Math.max.apply(Math,I),"center"===o)C=e-T/2,e-=I[0]/2;else{if("right"!==o)throw new Error('Unrecognized alignment option, use "center" or "right".');C=e-T,e-=I[0]}q=e,t=b[0];for(var E=1,x=b.length;E<x;E++){var O=T-I[E];"center"===o&&(O/=2),t+=") Tj\n"+(C-q+O)+" -"+P+" Td ("+b[E],q=C+O}}else t=b.join(") Tj\nT* (")}var F;return s||(F=X((y-n)*p)),G("BT\n/"+d+" "+A+" Tf\n"+A*S+" TL\n"+m+_+"\n"+c+X(e*p)+" "+F+" "+l+"\n("+t+") Tj\nET"),s&&this.text(s,e,n),this},H.lstext=function(t,e,n,r){console.warn("jsPDF.lstext is deprecated");for(var i=0,o=t.length;i<o;i++,e+=r)this.text(t[i],e,n);return this},H.line=function(t,e,n,r){return this.lines([[n-t,r-e]],t,e)},H.clip=function(){G("W"),G("S")},H.clip_fixed=function(t){G("evenodd"===t?"W*":"W"),G("n")},H.lines=function(t,e,n,r,i,o){var a,s,c,l,u,h,f,d,m,w,v;for("number"==typeof t&&(g=n,n=e,e=t,t=g),r=r||[1,1],G(V(e*p)+" "+V((y-n)*p)+" m "),a=r[0],s=r[1],l=t.length,w=e,v=n,c=0;c<l;c++)u=t[c],2===u.length?(w=u[0]*a+w,v=u[1]*s+v,G(V(w*p)+" "+V((y-v)*p)+" l")):(h=u[0]*a+w,f=u[1]*s+v,d=u[2]*a+w,m=u[3]*s+v,w=u[4]*a+w,v=u[5]*s+v,G(V(h*p)+" "+V((y-f)*p)+" "+V(d*p)+" "+V((y-m)*p)+" "+V(w*p)+" "+V((y-v)*p)+" c"));return o&&G(" h"),null!==i&&G(kt(i)),this},H.rect=function(t,e,n,r,i){kt(i);return G([X(t*p),X((y-e)*p),X(n*p),X(-r*p),"re"].join(" ")),null!==i&&G(kt(i)),this},H.triangle=function(t,e,n,r,i,o,a){return this.lines([[n-t,r-e],[i-n,o-r],[t-i,e-o]],t,e,[1,1],a,!0),this},H.roundedRect=function(t,e,n,r,i,o,a){var s=4/3*(Math.SQRT2-1);return this.lines([[n-2*i,0],[i*s,0,i,o-o*s,i,o],[0,r-2*o],[0,o*s,-(i*s),o,-i,o],[-n+2*i,0],[-(i*s),0,-i,-(o*s),-i,-o],[0,-r+2*o],[0,-(o*s),i*s,-o,i,-o]],t+i,e,[1,1],a),this},H.ellipse=function(t,e,n,r,i){var o=4/3*(Math.SQRT2-1)*n,a=4/3*(Math.SQRT2-1)*r;return G([X((t+n)*p),X((y-e)*p),"m",X((t+n)*p),X((y-(e-a))*p),X((t+o)*p),X((y-(e-r))*p),X(t*p),X((y-(e-r))*p),"c"].join(" ")),G([X((t-o)*p),X((y-(e-r))*p),X((t-n)*p),X((y-(e-a))*p),X((t-n)*p),X((y-e)*p),"c"].join(" ")),G([X((t-n)*p),X((y-(e+a))*p),X((t-o)*p),X((y-(e+r))*p),X(t*p),X((y-(e+r))*p),"c"].join(" ")),G([X((t+o)*p),X((y-(e+r))*p),X((t+n)*p),X((y-(e+a))*p),X((t+n)*p),X((y-e)*p),"c"].join(" ")),null!==i&&G(kt(i)),this},H.circle=function(t,e,n,r){return this.ellipse(t,e,n,n,r)},H.setProperties=function(t){for(var e in U)U.hasOwnProperty(e)&&t[e]&&(U[e]=t[e]);return this},H.setFontSize=function(t){return A=t,this},H.setFont=function(t,e){return d=bt(t,e),this},H.setFontStyle=H.setFontType=function(t){return d=bt(void 0,t),this},H.getFontList=function(){var t,e,n,r={};for(t in O)if(O.hasOwnProperty(t)){r[t]=n=[];for(e in O[t])O[t].hasOwnProperty(e)&&n.push(e)}return r},H.addFont=function(t,e,n){ct(t,e,n,"StandardEncoding")},H.setLineWidth=function(t){return G((t*p).toFixed(2)+" w"),this},H.setDrawColor=function(t,e,n,r){var i;return i=void 0===e||void 0===r&&t===e===n?"string"==typeof t?t+" G":X(t/255)+" G":void 0===r?"string"==typeof t?[t,e,n,"RG"].join(" "):[X(t/255),X(e/255),X(n/255),"RG"].join(" "):"string"==typeof t?[t,e,n,r,"K"].join(" "):[X(t),X(e),X(n),X(r),"K"].join(" "),G(i),this},H.setFillColor=function(e,n,r,i){var o;return void 0===n||void 0===i&&e===n===r?o="string"==typeof e?e+" g":X(e/255)+" g":void 0===i||"object"===("undefined"==typeof i?"undefined":t(i))?(o="string"==typeof e?[e,n,r,"rg"].join(" "):[X(e/255),X(n/255),X(r/255),"rg"].join(" "),i&&0===i.a&&(o=["255","255","255","rg"].join(" "))):o="string"==typeof e?[e,n,r,i,"k"].join(" "):[X(e),X(n),X(r),X(i),"k"].join(" "),G(o),this},H.setTextColor=function(t,e,n){if("string"==typeof t&&/^#[0-9A-Fa-f]{6}$/.test(t)){var r=parseInt(t.substr(1),16);t=r>>16&255,e=r>>8&255,n=255&r}return _=0===t&&0===e&&0===n||"undefined"==typeof e?V(t/255)+" g":[V(t/255),V(e/255),V(n/255),"rg"].join(" "),this},H.CapJoinStyles={0:0,butt:0,but:0,miter:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,bevel:2},H.setLineCap=function(t){var e=this.CapJoinStyles[t];if(void 0===e)throw new Error("Line cap style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return N=e,G(e+" J"),this},H.setLineJoin=function(t){var e=this.CapJoinStyles[t];if(void 0===e)throw new Error("Line join style of '"+t+"' is not recognized. See or extend .CapJoinStyles property for valid styles");return L=e,G(e+" j"),this},H.output=At,H.save=function(t){H.output("save",t)};for(var St in r.API)r.API.hasOwnProperty(St)&&("events"===St&&r.API.events.length?!function(t,e){var n,r,i;for(i=e.length-1;i!==-1;i--)n=e[i][0],r=e[i][1],t.subscribe.apply(t,[n].concat("function"==typeof r?[r]:r))}(W,r.API.events):H[St]=r.API[St]);return lt(),d="F1",wt(u,c),W.publish("initialized"),H}var o="1.3",s={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};return r.API={events:[]},r.version="1.x-master","function"==typeof define&&define.amd?define("jsPDF",function(){return r}):"undefined"!=typeof module&&module.exports?module.exports=r:e.jsPDF=r,r}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||void 0));/** + * jsPDF AcroForm Plugin + * Copyright (c) 2016 Alexander Weidt, https://github.com/BiggA94 + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +(window.AcroForm=function(t){var n=window.AcroForm;n.scale=function(t){return t*(r.internal.scaleFactor/1)},n.antiScale=function(t){return 1/r.internal.scaleFactor*t};var r={fields:[],xForms:[],acroFormDictionaryRoot:null,printedOut:!1,internal:null};e.API.acroformPlugin=r;var i=function(){for(var t in this.acroformPlugin.acroFormDictionaryRoot.Fields){var e=this.acroformPlugin.acroFormDictionaryRoot.Fields[t];e.hasAnnotation&&a.call(this,e)}},o=function(){if(this.acroformPlugin.acroFormDictionaryRoot)throw new Error("Exception while creating AcroformDictionary");this.acroformPlugin.acroFormDictionaryRoot=new n.AcroFormDictionary,this.acroformPlugin.internal=this.internal,this.acroformPlugin.acroFormDictionaryRoot._eventID=this.internal.events.subscribe("postPutResources",l),this.internal.events.subscribe("buildDocument",i),this.internal.events.subscribe("putCatalog",c),this.internal.events.subscribe("postPutPages",u)},a=function(t){var n={type:"reference",object:t};e.API.annotationPlugin.annotations[this.internal.getPageInfo(t.page).pageNumber].push(n)},s=function(t){this.acroformPlugin.printedOut&&(this.acroformPlugin.printedOut=!1,this.acroformPlugin.acroFormDictionaryRoot=null),this.acroformPlugin.acroFormDictionaryRoot||o.call(this),this.acroformPlugin.acroFormDictionaryRoot.Fields.push(t)},c=function(){"undefined"!=typeof this.acroformPlugin.acroFormDictionaryRoot?this.internal.write("/AcroForm "+this.acroformPlugin.acroFormDictionaryRoot.objId+" 0 R"):console.log("Root missing...")},l=function(){this.internal.events.unsubscribe(this.acroformPlugin.acroFormDictionaryRoot._eventID),delete this.acroformPlugin.acroFormDictionaryRoot._eventID,this.acroformPlugin.printedOut=!0},u=function(t){var e=!t;t||(this.internal.newObjectDeferredBegin(this.acroformPlugin.acroFormDictionaryRoot.objId),this.internal.out(this.acroformPlugin.acroFormDictionaryRoot.getString()));var t=t||this.acroformPlugin.acroFormDictionaryRoot.Kids;for(var r in t){var i=t[r],o=i.Rect;i.Rect&&(i.Rect=n.internal.calculateCoordinates.call(this,i.Rect)),this.internal.newObjectDeferredBegin(i.objId);var a="";if(a+=i.objId+" 0 obj\n",a+="<<\n"+i.getContent(),i.Rect=o,i.hasAppearanceStream&&!i.appearanceStreamContent){var s=n.internal.calculateAppearanceStream.call(this,i);a+="/AP << /N "+s+" >>\n",this.acroformPlugin.xForms.push(s)}if(i.appearanceStreamContent){a+="/AP << ";for(var c in i.appearanceStreamContent){var l=i.appearanceStreamContent[c];if(a+="/"+c+" ",a+="<< ",Object.keys(l).length>=1||Array.isArray(l))for(var r in l){var u=l[r];"function"==typeof u&&(u=u.call(this,i)),a+="/"+r+" "+u+" ",this.acroformPlugin.xForms.indexOf(u)>=0||this.acroformPlugin.xForms.push(u)}else{var u=l;"function"==typeof u&&(u=u.call(this,i)),a+="/"+r+" "+u+" \n",this.acroformPlugin.xForms.indexOf(u)>=0||this.acroformPlugin.xForms.push(u)}a+=" >>\n"}a+=">>\n"}a+=">>\nendobj\n",this.internal.out(a)}e&&h.call(this,this.acroformPlugin.xForms)},h=function(t){for(var e in t){var n=e,r=t[e];this.internal.newObjectDeferredBegin(r&&r.objId);var i="";i+=r?r.getString():"",this.internal.out(i),delete t[n]}};t.addField=function(t){return t instanceof n.TextField?d.call(this,t):t instanceof n.ChoiceField?p.call(this,t):t instanceof n.Button?f.call(this,t):t instanceof n.ChildClass?s.call(this,t):t&&s.call(this,t),t.page=this.acroformPlugin.internal.getCurrentPageInfo().pageNumber,this};var f=function(t){var t=t||new n.Field;t.FT="/Btn";var e=t.Ff||0;t.pushbutton&&(e=n.internal.setBitPosition(e,17),delete t.pushbutton),t.radio&&(e=n.internal.setBitPosition(e,16),delete t.radio),t.noToggleToOff&&(e=n.internal.setBitPosition(e,15)),t.Ff=e,s.call(this,t)},d=function(t){var t=t||new n.Field;t.FT="/Tx";var e=t.Ff||0;t.multiline&&(e=4096|e),t.password&&(e=8192|e),t.fileSelect&&(e|=1<<20),t.doNotSpellCheck&&(e|=1<<22),t.doNotScroll&&(e|=1<<23),t.Ff=t.Ff||e,s.call(this,t)},p=function(t){var e=t||new n.Field;e.FT="/Ch";var r=e.Ff||0;e.combo&&(r=n.internal.setBitPosition(r,18),delete e.combo),e.edit&&(r=n.internal.setBitPosition(r,19),delete e.edit),e.sort&&(r=n.internal.setBitPosition(r,20),delete e.sort),e.multiSelect&&this.internal.getPDFVersion()>=1.4&&(r=n.internal.setBitPosition(r,22),delete e.multiSelect),e.doNotSpellCheck&&this.internal.getPDFVersion()>=1.4&&(r=n.internal.setBitPosition(r,23),delete e.doNotSpellCheck),e.Ff=r,s.call(this,e)}})(e.API);var n=window.AcroForm;n.internal={},n.createFormXObject=function(t){var e=new n.FormXObject,r=n.Appearance.internal.getHeight(t)||0,i=n.Appearance.internal.getWidth(t)||0;return e.BBox=[0,0,i,r],e},n.Appearance={CheckBox:{createAppearanceStream:function(){var t={N:{On:n.Appearance.CheckBox.YesNormal},D:{On:n.Appearance.CheckBox.YesPushDown,Off:n.Appearance.CheckBox.OffPushDown}};return t},createMK:function(){return"<< /CA (3)>>"},YesPushDown:function(t){var e=n.createFormXObject(t),r="";t.Q=1;var i=n.internal.calculateX(t,"3","ZapfDingbats",50);return r+="0.749023 g\n 0 0 "+n.Appearance.internal.getWidth(t)+" "+n.Appearance.internal.getHeight(t)+" re\n f\n BMC\n q\n 0 0 1 rg\n /F13 "+i.fontSize+" Tf 0 g\n BT\n",r+=i.text,r+="ET\n Q\n EMC\n",e.stream=r,e},YesNormal:function(t){var e=n.createFormXObject(t),r="";t.Q=1;var i=n.internal.calculateX(t,"3","ZapfDingbats",.9*n.Appearance.internal.getHeight(t));return r+="1 g\n0 0 "+n.Appearance.internal.getWidth(t)+" "+n.Appearance.internal.getHeight(t)+" re\nf\nq\n0 0 1 rg\n0 0 "+(n.Appearance.internal.getWidth(t)-1)+" "+(n.Appearance.internal.getHeight(t)-1)+" re\nW\nn\n0 g\nBT\n/F13 "+i.fontSize+" Tf 0 g\n",r+=i.text,r+="ET\n Q\n",e.stream=r,e},OffPushDown:function(t){var e=n.createFormXObject(t),r="";return r+="0.749023 g\n 0 0 "+n.Appearance.internal.getWidth(t)+" "+n.Appearance.internal.getHeight(t)+" re\n f\n",e.stream=r,e}},RadioButton:{Circle:{createAppearanceStream:function(t){var e={D:{Off:n.Appearance.RadioButton.Circle.OffPushDown},N:{}};return e.N[t]=n.Appearance.RadioButton.Circle.YesNormal,e.D[t]=n.Appearance.RadioButton.Circle.YesPushDown,e},createMK:function(){return"<< /CA (l)>>"},YesNormal:function(t){var e=n.createFormXObject(t),r="",i=n.Appearance.internal.getWidth(t)<=n.Appearance.internal.getHeight(t)?n.Appearance.internal.getWidth(t)/4:n.Appearance.internal.getHeight(t)/4;i*=.9;var o=n.Appearance.internal.Bezier_C;return r+="q\n1 0 0 1 "+n.Appearance.internal.getWidth(t)/2+" "+n.Appearance.internal.getHeight(t)/2+" cm\n"+i+" 0 m\n"+i+" "+i*o+" "+i*o+" "+i+" 0 "+i+" c\n-"+i*o+" "+i+" -"+i+" "+i*o+" -"+i+" 0 c\n-"+i+" -"+i*o+" -"+i*o+" -"+i+" 0 -"+i+" c\n"+i*o+" -"+i+" "+i+" -"+i*o+" "+i+" 0 c\nf\nQ\n",e.stream=r,e},YesPushDown:function(t){var e=n.createFormXObject(t),r="",i=n.Appearance.internal.getWidth(t)<=n.Appearance.internal.getHeight(t)?n.Appearance.internal.getWidth(t)/4:n.Appearance.internal.getHeight(t)/4;i*=.9;var o=2*i,a=o*n.Appearance.internal.Bezier_C,s=i*n.Appearance.internal.Bezier_C;return r+="0.749023 g\n q\n 1 0 0 1 "+n.Appearance.internal.getWidth(t)/2+" "+n.Appearance.internal.getHeight(t)/2+" cm\n"+o+" 0 m\n"+o+" "+a+" "+a+" "+o+" 0 "+o+" c\n-"+a+" "+o+" -"+o+" "+a+" -"+o+" 0 c\n-"+o+" -"+a+" -"+a+" -"+o+" 0 -"+o+" c\n"+a+" -"+o+" "+o+" -"+a+" "+o+" 0 c\n f\n Q\n 0 g\n q\n 1 0 0 1 "+n.Appearance.internal.getWidth(t)/2+" "+n.Appearance.internal.getHeight(t)/2+" cm\n"+i+" 0 m\n"+i+" "+s+" "+s+" "+i+" 0 "+i+" c\n-"+s+" "+i+" -"+i+" "+s+" -"+i+" 0 c\n-"+i+" -"+s+" -"+s+" -"+i+" 0 -"+i+" c\n"+s+" -"+i+" "+i+" -"+s+" "+i+" 0 c\n f\n Q\n",e.stream=r,e},OffPushDown:function(t){var e=n.createFormXObject(t),r="",i=n.Appearance.internal.getWidth(t)<=n.Appearance.internal.getHeight(t)?n.Appearance.internal.getWidth(t)/4:n.Appearance.internal.getHeight(t)/4;i*=.9;var o=2*i,a=o*n.Appearance.internal.Bezier_C;return r+="0.749023 g\n q\n 1 0 0 1 "+n.Appearance.internal.getWidth(t)/2+" "+n.Appearance.internal.getHeight(t)/2+" cm\n"+o+" 0 m\n"+o+" "+a+" "+a+" "+o+" 0 "+o+" c\n-"+a+" "+o+" -"+o+" "+a+" -"+o+" 0 c\n-"+o+" -"+a+" -"+a+" -"+o+" 0 -"+o+" c\n"+a+" -"+o+" "+o+" -"+a+" "+o+" 0 c\n f\n Q\n",e.stream=r,e}},Cross:{createAppearanceStream:function(t){var e={D:{Off:n.Appearance.RadioButton.Cross.OffPushDown},N:{}};return e.N[t]=n.Appearance.RadioButton.Cross.YesNormal,e.D[t]=n.Appearance.RadioButton.Cross.YesPushDown,e},createMK:function(){return"<< /CA (8)>>"},YesNormal:function(t){var e=n.createFormXObject(t),r="",i=n.Appearance.internal.calculateCross(t);return r+="q\n 1 1 "+(n.Appearance.internal.getWidth(t)-2)+" "+(n.Appearance.internal.getHeight(t)-2)+" re\n W\n n\n "+i.x1.x+" "+i.x1.y+" m\n "+i.x2.x+" "+i.x2.y+" l\n "+i.x4.x+" "+i.x4.y+" m\n "+i.x3.x+" "+i.x3.y+" l\n s\n Q\n",e.stream=r,e},YesPushDown:function(t){var e=n.createFormXObject(t),r=n.Appearance.internal.calculateCross(t),i="";return i+="0.749023 g\n 0 0 "+n.Appearance.internal.getWidth(t)+" "+n.Appearance.internal.getHeight(t)+" re\n f\n q\n 1 1 "+(n.Appearance.internal.getWidth(t)-2)+" "+(n.Appearance.internal.getHeight(t)-2)+" re\n W\n n\n "+r.x1.x+" "+r.x1.y+" m\n "+r.x2.x+" "+r.x2.y+" l\n "+r.x4.x+" "+r.x4.y+" m\n "+r.x3.x+" "+r.x3.y+" l\n s\n Q\n",e.stream=i,e},OffPushDown:function(t){var e=n.createFormXObject(t),r="";return r+="0.749023 g\n 0 0 "+n.Appearance.internal.getWidth(t)+" "+n.Appearance.internal.getHeight(t)+" re\n f\n",e.stream=r,e}}},createDefaultAppearanceStream:function(t){var e="";return e+="/Helv 0 Tf 0 g"}},n.Appearance.internal={Bezier_C:.551915024494,calculateCross:function(t){var e=function(t,e){return t>e?e:t},r=n.Appearance.internal.getWidth(t),i=n.Appearance.internal.getHeight(t),o=e(r,i),a={x1:{x:(r-o)/2,y:(i-o)/2+o},x2:{x:(r-o)/2+o,y:(i-o)/2},x3:{x:(r-o)/2,y:(i-o)/2},x4:{x:(r-o)/2+o,y:(i-o)/2+o}};return a}},n.Appearance.internal.getWidth=function(t){return t.Rect[2]},n.Appearance.internal.getHeight=function(t){return t.Rect[3]},n.internal.inherit=function(t,e){Object.create||function(t){var e=function(){};return e.prototype=t,new e};t.prototype=Object.create(e.prototype),t.prototype.constructor=t},n.internal.arrayToPdfArray=function(t){if(Array.isArray(t)){var e=" [";for(var n in t){var r=t[n].toString();e+=r,e+=n<t.length-1?" ":""}return e+="]"}},n.internal.toPdfString=function(t){return t=t||"",0!==t.indexOf("(")&&(t="("+t),")"!=t.substring(t.length-1)&&(t+="("),t},n.PDFObject=function(){var t;Object.defineProperty(this,"objId",{get:function(){return t||(this.internal?t=this.internal.newObjectDeferred():e.API.acroformPlugin.internal&&(t=e.API.acroformPlugin.internal.newObjectDeferred())),t||console.log("Couldn't create Object ID"),t},configurable:!1})},n.PDFObject.prototype.toString=function(){return this.objId+" 0 R"},n.PDFObject.prototype.getString=function(){var t=this.objId+" 0 obj\n<<",e=this.getContent();return t+=e+">>\n",this.stream&&(t+="stream\n",t+=this.stream,t+="endstream\n"),t+="endobj\n"},n.PDFObject.prototype.getContent=function(){var t=function(t){var e="",r=Object.keys(t).filter(function(t){return"content"!=t&&"appearanceStreamContent"!=t&&"_"!=t.substring(0,1)});for(var i in r){var o=r[i],a=t[o];a&&(e+=Array.isArray(a)?"/"+o+" "+n.internal.arrayToPdfArray(a)+"\n":a instanceof n.PDFObject?"/"+o+" "+a.objId+" 0 R\n":"/"+o+" "+a+"\n")}return e},e="";return e+=t(this)},n.FormXObject=function(){n.PDFObject.call(this),this.Type="/XObject",this.Subtype="/Form",this.FormType=1,this.BBox,this.Matrix,this.Resources="2 0 R",this.PieceInfo;var t;Object.defineProperty(this,"Length",{enumerable:!0,get:function(){return void 0!==t?t.length:0}}),Object.defineProperty(this,"stream",{enumerable:!1,set:function(e){t=e},get:function(){return t?t:null}})},n.internal.inherit(n.FormXObject,n.PDFObject),n.AcroFormDictionary=function(){n.PDFObject.call(this);var t=[];Object.defineProperty(this,"Kids",{enumerable:!1,configurable:!0,get:function(){return t.length>0?t:void 0}}),Object.defineProperty(this,"Fields",{enumerable:!0,configurable:!0,get:function(){return t}}),this.DA},n.internal.inherit(n.AcroFormDictionary,n.PDFObject),n.Field=function(){n.PDFObject.call(this);var t;Object.defineProperty(this,"Rect",{enumerable:!0,configurable:!1,get:function(){if(t){var e=t;return e}},set:function(e){t=e}});var e="";Object.defineProperty(this,"FT",{enumerable:!0,set:function(t){e=t},get:function(){return e}});var r;Object.defineProperty(this,"T",{enumerable:!0,configurable:!1,set:function(t){r=t},get:function(){if(!r||r.length<1){if(this instanceof n.ChildClass)return;return"(FieldObject"+n.Field.FieldNum++ +")"}return"("==r.substring(0,1)&&r.substring(r.length-1)?r:"("+r+")"}});var i;Object.defineProperty(this,"DA",{enumerable:!0,get:function(){if(i)return"("+i+")"},set:function(t){i=t}});var o;Object.defineProperty(this,"DV",{enumerable:!0,configurable:!0,get:function(){if(o)return o},set:function(t){o=t}}),Object.defineProperty(this,"Type",{enumerable:!0,get:function(){return this.hasAnnotation?"/Annot":null}}),Object.defineProperty(this,"Subtype",{enumerable:!0,get:function(){return this.hasAnnotation?"/Widget":null}}),this.BG,Object.defineProperty(this,"hasAnnotation",{enumerable:!1,get:function(){return!!(this.Rect||this.BC||this.BG)}}),Object.defineProperty(this,"hasAppearanceStream",{enumerable:!1,configurable:!0,writable:!0}),Object.defineProperty(this,"page",{enumerable:!1,configurable:!0,writable:!0})},n.Field.FieldNum=0,n.internal.inherit(n.Field,n.PDFObject),n.ChoiceField=function(){n.Field.call(this),this.FT="/Ch",this.Opt=[],this.V="()",this.TI=0,this.combo=!1,Object.defineProperty(this,"edit",{enumerable:!0,set:function(t){1==t?(this._edit=!0,this.combo=!0):this._edit=!1},get:function(){return!!this._edit&&this._edit},configurable:!1}),this.hasAppearanceStream=!0,Object.defineProperty(this,"V",{get:function(){n.internal.toPdfString()}})},n.internal.inherit(n.ChoiceField,n.Field),window.ChoiceField=n.ChoiceField,n.ListBox=function(){n.ChoiceField.call(this)},n.internal.inherit(n.ListBox,n.ChoiceField),window.ListBox=n.ListBox,n.ComboBox=function(){n.ListBox.call(this),this.combo=!0},n.internal.inherit(n.ComboBox,n.ListBox),window.ComboBox=n.ComboBox,n.EditBox=function(){n.ComboBox.call(this),this.edit=!0},n.internal.inherit(n.EditBox,n.ComboBox),window.EditBox=n.EditBox,n.Button=function(){n.Field.call(this),this.FT="/Btn"},n.internal.inherit(n.Button,n.Field),window.Button=n.Button,n.PushButton=function(){n.Button.call(this),this.pushbutton=!0},n.internal.inherit(n.PushButton,n.Button),window.PushButton=n.PushButton,n.RadioButton=function(){n.Button.call(this),this.radio=!0;var t=[];Object.defineProperty(this,"Kids",{enumerable:!0,get:function(){if(t.length>0)return t}}),Object.defineProperty(this,"__Kids",{get:function(){return t}});var e;Object.defineProperty(this,"noToggleToOff",{enumerable:!1,get:function(){return e},set:function(t){e=t}})},n.internal.inherit(n.RadioButton,n.Button),window.RadioButton=n.RadioButton,n.ChildClass=function(t,e){n.Field.call(this),this.Parent=t,this._AppearanceType=n.Appearance.RadioButton.Circle,this.appearanceStreamContent=this._AppearanceType.createAppearanceStream(e),this.F=n.internal.setBitPosition(this.F,3,1),this.MK=this._AppearanceType.createMK(),this.AS="/Off",this._Name=e},n.internal.inherit(n.ChildClass,n.Field),n.RadioButton.prototype.setAppearance=function(t){if(!("createAppearanceStream"in t&&"createMK"in t))return void console.log("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");for(var e in this.__Kids){var n=this.__Kids[e];n.appearanceStreamContent=t.createAppearanceStream(n._Name),n.MK=t.createMK()}},n.RadioButton.prototype.createOption=function(t){var r=this,i=(this.__Kids.length,new n.ChildClass(r,t));return this.__Kids.push(i),e.API.addField(i),i},n.CheckBox=function(){Button.call(this),this.appearanceStreamContent=n.Appearance.CheckBox.createAppearanceStream(),this.MK=n.Appearance.CheckBox.createMK(),this.AS="/On",this.V="/On"},n.internal.inherit(n.CheckBox,n.Button),window.CheckBox=n.CheckBox,n.TextField=function(){n.Field.call(this),this.DA=n.Appearance.createDefaultAppearanceStream(),this.F=4;var t;Object.defineProperty(this,"V",{get:function(){return t?"("+t+")":t},enumerable:!0,set:function(e){t=e}});var e;Object.defineProperty(this,"DV",{get:function(){return e?"("+e+")":e},enumerable:!0,set:function(t){e=t}});var r=!1;Object.defineProperty(this,"multiline",{enumerable:!1,get:function(){return r},set:function(t){r=t}});var i=!1;Object.defineProperty(this,"MaxLen",{enumerable:!0,get:function(){return i},set:function(t){i=t}}),Object.defineProperty(this,"hasAppearanceStream",{enumerable:!1,get:function(){return this.V||this.DV}})},n.internal.inherit(n.TextField,n.Field),window.TextField=n.TextField,n.PasswordField=function(){TextField.call(this),Object.defineProperty(this,"password",{value:!0,enumerable:!1,configurable:!1,writable:!1})},n.internal.inherit(n.PasswordField,n.TextField),window.PasswordField=n.PasswordField,n.internal.calculateFontSpace=function(t,e,r){var r=r||"helvetica",i=n.internal.calculateFontSpace.canvas||(n.internal.calculateFontSpace.canvas=document.createElement("canvas")),o=i.getContext("2d");o.save();var a=e+" "+r;o.font=a;var s=o.measureText(t);o.fontcolor="black";var o=i.getContext("2d");s.height=1.5*o.measureText("3").width,o.restore();s.width;return s},n.internal.calculateX=function(t,e,r,i){var i=i||12,r=r||"helvetica",o={text:"",fontSize:""};e="("==e.substr(0,1)?e.substr(1):e,e=")"==e.substr(e.length-1)?e.substr(0,e.length-1):e;var a=e.split(" "),s=i,c=2,l=2,u=n.Appearance.internal.getHeight(t)||0;u=u<0?-u:u;var h=n.Appearance.internal.getWidth(t)||0;h=h<0?-h:h;var f=function(t,e,i){if(t+1<a.length){var o=e+" "+a[t+1],s=n.internal.calculateFontSpace(o,i+"px",r).width,c=h-2*l;return s<=c}return!1};s++;t:for(;;){var e="";s--;var d=n.internal.calculateFontSpace("3",s+"px",r).height,p=t.multiline?u-s:(u-d)/2;p+=c;var g=-l,m=g,w=p,y=0,v=0,b=0;if(0==s){s=12,e="(...) Tj\n",e+="% Width of Text: "+n.internal.calculateFontSpace(e,"1px").width+", FieldWidth:"+h+"\n";break}b=n.internal.calculateFontSpace(a[0]+" ",s+"px",r).width;var x="",k=0;for(var _ in a){x+=a[_]+" ",x=" "==x.substr(x.length-1)?x.substr(0,x.length-1):x;var C=parseInt(_);b=n.internal.calculateFontSpace(x+" ",s+"px",r).width;var A=f(C,x,s),S=_>=a.length-1;if(!A||S){if(A||S){if(S)v=C;else if(t.multiline&&(d+c)*(k+2)+c>u)continue t}else{if(!t.multiline)continue t;if((d+c)*(k+2)+c>u)continue t;v=C}for(var q="",T=y;T<=v;T++)q+=a[T]+" ";switch(q=" "==q.substr(q.length-1)?q.substr(0,q.length-1):q,b=n.internal.calculateFontSpace(q,s+"px",r).width,t.Q){case 2:g=h-b-l;break;case 1:g=(h-b)/2;break;case 0:default:g=l}e+=g+" "+w+" Td\n",e+="("+q+") Tj\n",e+=-g+" 0 Td\n",w=-(s+c),m=g,b=0,y=v+1,k++,x=""}else x+=" "}break}return o.text=e,o.fontSize=s,o},n.internal.calculateAppearanceStream=function(t){if(t.appearanceStreamContent)return t.appearanceStreamContent;if(t.V||t.DV){var e="",r=t.V||t.DV,i=n.internal.calculateX(t,r);e+="/Tx BMC\nq\n/F1 "+i.fontSize+" Tf\n1 0 0 1 0 0 Tm\n",e+="BT\n",e+=i.text,e+="ET\n",e+="Q\nEMC\n";var o=new n.createFormXObject(t);o.stream=e;return o}},n.internal.calculateCoordinates=function(t,e,r,i){var o={};if(this.internal){var a=function(t){return t*this.internal.scaleFactor};Array.isArray(t)?(t[0]=n.scale(t[0]),t[1]=n.scale(t[1]),t[2]=n.scale(t[2]),t[3]=n.scale(t[3]),o.lowerLeft_X=t[0]||0,o.lowerLeft_Y=a.call(this,this.internal.pageSize.height)-t[3]-t[1]||0,o.upperRight_X=t[0]+t[2]||0,o.upperRight_Y=a.call(this,this.internal.pageSize.height)-t[1]||0):(t=n.scale(t),e=n.scale(e),r=n.scale(r),i=n.scale(i),o.lowerLeft_X=t||0,o.lowerLeft_Y=this.internal.pageSize.height-e||0,o.upperRight_X=t+r||0,o.upperRight_Y=this.internal.pageSize.height-e+i||0)}else Array.isArray(t)?(o.lowerLeft_X=t[0]||0,o.lowerLeft_Y=t[1]||0,o.upperRight_X=t[0]+t[2]||0,o.upperRight_Y=t[1]+t[3]||0):(o.lowerLeft_X=t||0,o.lowerLeft_Y=e||0,o.upperRight_X=t+r||0,o.upperRight_Y=e+i||0);return[o.lowerLeft_X,o.lowerLeft_Y,o.upperRight_X,o.upperRight_Y]},n.internal.calculateColor=function(t,e,n){var r=new Array(3);return r.r=0|t,r.g=0|e,r.b=0|n,r},n.internal.getBitPosition=function(t,e){t=t||0;var n=1;return n<<=e-1,t|n},n.internal.setBitPosition=function(t,e,n){t=t||0,n=n||1;var r=1;if(r<<=e-1,1==n)var t=t|r;else var t=t&~r;return t},/** + * jsPDF addHTML PlugIn + * Copyright (c) 2014 Diego Casorran + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){t.addHTML=function(t,e,n,r,i){if("undefined"==typeof html2canvas&&"undefined"==typeof rasterizeHTML)throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");"number"!=typeof e&&(r=e,i=n),"function"==typeof r&&(i=r,r=null);var o=this.internal,a=o.scaleFactor,s=o.pageSize.width,c=o.pageSize.height;if(r=r||{},r.onrendered=function(t){e=parseInt(e)||0,n=parseInt(n)||0;var o=r.dim||{},l=o.h||0,u=o.w||Math.min(s,t.width/a)-e,h="JPEG";if(r.format&&(h=r.format),t.height>c&&r.pagesplit){var f=function(){for(var r=0;;){var o=document.createElement("canvas");o.width=Math.min(s*a,t.width),o.height=Math.min(c*a,t.height-r);var l=o.getContext("2d");l.drawImage(t,0,r,t.width,o.height,0,0,o.width,o.height);var f=[o,e,r?0:n,o.width/a,o.height/a,h,null,"SLOW"];if(this.addImage.apply(this,f),r+=o.height,r>=t.height)break;this.addPage()}i(u,r,null,f)}.bind(this);if("CANVAS"===t.nodeName){var d=new Image;d.onload=f,d.src=t.toDataURL("image/png"),t=d}else f()}else{var p=Math.random().toString(35),g=[t,e,n,u,l,h,p,"SLOW"];this.addImage.apply(this,g),i(u,l,p,g)}}.bind(this),"undefined"!=typeof html2canvas&&!r.rstz)return html2canvas(t,r);if("undefined"!=typeof rasterizeHTML){var l="drawDocument";return"string"==typeof t&&(l=/^http/.test(t)?"drawURL":"drawHTML"),r.width=r.width||s*a,rasterizeHTML[l](t,void 0,r).then(function(t){r.onrendered(t.image)},function(t){i(null,t)})}return null}}(e.API),/** @preserve + * jsPDF addImage plugin + * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/ + * 2013 Chris Dowling, https://github.com/gingerchris + * 2013 Trinh Ho, https://github.com/ineedfat + * 2013 Edwin Alejandro Perez, https://github.com/eaparango + * 2013 Norah Smith, https://github.com/burnburnrocket + * 2014 Diego Casorran, https://github.com/diegocr + * 2014 James Robb, https://github.com/jamesbrobb + * + * + */ +function(e){var n="addImage_",r=["jpeg","jpg","png"],i=function t(e){var n=this.internal.newObject(),r=this.internal.write,i=this.internal.putStream;if(e.n=n,r("<</Type /XObject"),r("/Subtype /Image"),r("/Width "+e.w),r("/Height "+e.h),e.cs===this.color_spaces.INDEXED?r("/ColorSpace [/Indexed /DeviceRGB "+(e.pal.length/3-1)+" "+("smask"in e?n+2:n+1)+" 0 R]"):(r("/ColorSpace /"+e.cs),e.cs===this.color_spaces.DEVICE_CMYK&&r("/Decode [1 0 1 0 1 0 1 0]")),r("/BitsPerComponent "+e.bpc),"f"in e&&r("/Filter /"+e.f),"dp"in e&&r("/DecodeParms <<"+e.dp+">>"),"trns"in e&&e.trns.constructor==Array){for(var o="",a=0,s=e.trns.length;a<s;a++)o+=e.trns[a]+" "+e.trns[a]+" ";r("/Mask ["+o+"]")}if("smask"in e&&r("/SMask "+(n+1)+" 0 R"),r("/Length "+e.data.length+">>"),i(e.data),r("endobj"),"smask"in e){var c="/Predictor "+e.p+" /Colors 1 /BitsPerComponent "+e.bpc+" /Columns "+e.w,l={w:e.w,h:e.h,cs:"DeviceGray",bpc:e.bpc,dp:c,data:e.smask};"f"in e&&(l.f=e.f),t.call(this,l)}e.cs===this.color_spaces.INDEXED&&(this.internal.newObject(),r("<< /Length "+e.pal.length+">>"),i(this.arrayBufferToBinaryString(new Uint8Array(e.pal))),r("endobj"))},o=function(){var t=this.internal.collections[n+"images"];for(var e in t)i.call(this,t[e])},a=function(){var t,e=this.internal.collections[n+"images"],r=this.internal.write;for(var i in e)t=e[i],r("/I"+t.i,t.n,"0","R")},s=function(t){return t&&"string"==typeof t&&(t=t.toUpperCase()),t in e.image_compression?t:e.image_compression.NONE},c=function(){var t=this.internal.collections[n+"images"];return t||(this.internal.collections[n+"images"]=t={},this.internal.events.subscribe("putResources",o),this.internal.events.subscribe("putXobjectDict",a)),t},l=function(t){var e=0;return t&&(e=Object.keys?Object.keys(t).length:function(t){var e=0;for(var n in t)t.hasOwnProperty(n)&&e++;return e}(t)),e},u=function(t){return"undefined"==typeof t||null===t},h=function(t){return"string"==typeof t&&e.sHashCode(t)},f=function(t){return r.indexOf(t)===-1},d=function(t){return"function"!=typeof e["process"+t.toUpperCase()]},p=function(e){return"object"===("undefined"==typeof e?"undefined":t(e))&&1===e.nodeType},g=function(e,n,r){if("IMG"===e.nodeName&&e.hasAttribute("src")){var i=""+e.getAttribute("src");if(!r&&0===i.indexOf("data:image/"))return i;!n&&/\.png(?:[?#].*)?$/i.test(i)&&(n="png")}if("CANVAS"===e.nodeName)var o=e;else{var o=document.createElement("canvas");o.width=e.clientWidth||e.width,o.height=e.clientHeight||e.height;var a=o.getContext("2d");if(!a)throw"addImage requires canvas to be supported by browser.";if(r){var s,c,l,u,h,f,d,p,g=Math.PI/180;"object"===("undefined"==typeof r?"undefined":t(r))&&(s=r.x,c=r.y,l=r.bg,r=r.angle),p=r*g,u=Math.abs(Math.cos(p)),h=Math.abs(Math.sin(p)),f=o.width,d=o.height,o.width=d*h+f*u,o.height=d*u+f*h,isNaN(s)&&(s=o.width/2),isNaN(c)&&(c=o.height/2),a.clearRect(0,0,o.width,o.height),a.fillStyle=l||"white",a.fillRect(0,0,o.width,o.height),a.save(),a.translate(s,c),a.rotate(p),a.drawImage(e,-(f/2),-(d/2)),a.rotate(-p),a.translate(-s,-c),a.restore()}else a.drawImage(e,0,0,o.width,o.height)}return o.toDataURL("png"==(""+n).toLowerCase()?"image/png":"image/jpeg")},m=function(t,e){var n;if(e)for(var r in e)if(t===e[r].alias){n=e[r];break}return n},w=function(t,e,n){return t||e||(t=-96,e=-96),t<0&&(t=-1*n.w*72/t/this.internal.scaleFactor),e<0&&(e=-1*n.h*72/e/this.internal.scaleFactor),0===t&&(t=e*n.w/n.h),0===e&&(e=t*n.h/n.w),[t,e]},y=function(t,e,n,r,i,o,a){var s=w.call(this,n,r,i),c=this.internal.getCoordinateString,l=this.internal.getVerticalCoordinateString;n=s[0],r=s[1],a[o]=i,this.internal.write("q",c(n),"0 0",c(r),c(t),l(e+r),"cm /I"+i.i,"Do Q")};e.color_spaces={DEVICE_RGB:"DeviceRGB",DEVICE_GRAY:"DeviceGray",DEVICE_CMYK:"DeviceCMYK",CAL_GREY:"CalGray",CAL_RGB:"CalRGB",LAB:"Lab",ICC_BASED:"ICCBased",INDEXED:"Indexed",PATTERN:"Pattern",SEPARATION:"Separation",DEVICE_N:"DeviceN"},e.decode={DCT_DECODE:"DCTDecode",FLATE_DECODE:"FlateDecode",LZW_DECODE:"LZWDecode",JPX_DECODE:"JPXDecode",JBIG2_DECODE:"JBIG2Decode",ASCII85_DECODE:"ASCII85Decode",ASCII_HEX_DECODE:"ASCIIHexDecode",RUN_LENGTH_DECODE:"RunLengthDecode",CCITT_FAX_DECODE:"CCITTFaxDecode"},e.image_compression={NONE:"NONE",FAST:"FAST",MEDIUM:"MEDIUM",SLOW:"SLOW"},e.sHashCode=function(t){return Array.prototype.reduce&&t.split("").reduce(function(t,e){return t=(t<<5)-t+e.charCodeAt(0),t&t},0)},e.isString=function(t){return"string"==typeof t},e.extractInfoFromBase64DataURI=function(t){return/^data:([\w]+?\/([\w]+?));base64,(.+?)$/g.exec(t)},e.supportsArrayBuffer=function(){return"undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array},e.isArrayBuffer=function(t){return!!this.supportsArrayBuffer()&&t instanceof ArrayBuffer},e.isArrayBufferView=function(t){return!!this.supportsArrayBuffer()&&("undefined"!=typeof Uint32Array&&(t instanceof Int8Array||t instanceof Uint8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array))},e.binaryStringToUint8Array=function(t){for(var e=t.length,n=new Uint8Array(e),r=0;r<e;r++)n[r]=t.charCodeAt(r);return n},e.arrayBufferToBinaryString=function(t){this.isArrayBuffer(t)&&(t=new Uint8Array(t));for(var e="",n=t.byteLength,r=0;r<n;r++)e+=String.fromCharCode(t[r]);return e},e.arrayBufferToBase64=function(t){for(var e,n,r,i,o,a="",s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=new Uint8Array(t),l=c.byteLength,u=l%3,h=l-u,f=0;f<h;f+=3)o=c[f]<<16|c[f+1]<<8|c[f+2],e=(16515072&o)>>18,n=(258048&o)>>12,r=(4032&o)>>6,i=63&o,a+=s[e]+s[n]+s[r]+s[i];return 1==u?(o=c[h],e=(252&o)>>2,n=(3&o)<<4,a+=s[e]+s[n]+"=="):2==u&&(o=c[h]<<8|c[h+1],e=(64512&o)>>10,n=(1008&o)>>4,r=(15&o)<<2,a+=s[e]+s[n]+s[r]+"="),a},e.createImageInfo=function(t,e,n,r,i,o,a,s,c,l,u,h,f){var d={alias:s,w:e,h:n,cs:r,bpc:i,i:a,data:t};return o&&(d.f=o),c&&(d.dp=c),l&&(d.trns=l),u&&(d.pal=u),h&&(d.smask=h),f&&(d.p=f),d},e.addImage=function(e,n,i,o,a,w,v,b,x){if("string"!=typeof n){var k=w;w=a,a=o,o=i,i=n,n=k}if("object"===("undefined"==typeof e?"undefined":t(e))&&!p(e)&&"imageData"in e){var _=e;e=_.imageData,n=_.format||n,i=_.x||i||0,o=_.y||o||0,a=_.w||a,w=_.h||w,v=_.alias||v,b=_.compression||b,x=_.rotation||_.angle||x}if(isNaN(i)||isNaN(o))throw console.error("jsPDF.addImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addImage");var C,A=c.call(this);if(!(C=m(e,A))){var S;if(p(e)&&(e=g(e,n,x)),u(v)&&(v=h(e)),!(C=m(v,A))){if(this.isString(e)){var q=this.extractInfoFromBase64DataURI(e);q?(n=q[2],e=atob(q[3])):137===e.charCodeAt(0)&&80===e.charCodeAt(1)&&78===e.charCodeAt(2)&&71===e.charCodeAt(3)&&(n="png")}if(n=(n||"JPEG").toLowerCase(),f(n))throw new Error("addImage currently only supports formats "+r+", not '"+n+"'");if(d(n))throw new Error("please ensure that the plugin for '"+n+"' support is added");if(this.supportsArrayBuffer()&&(e instanceof Uint8Array||(S=e,e=this.binaryStringToUint8Array(e))),C=this["process"+n.toUpperCase()](e,l(A),v,s(b),S),!C)throw new Error("An unkwown error occurred whilst processing the image")}}return y.call(this,i,o,a,w,C,C.i,A),this};var v=function(t){var e,n,r;if(255===!t.charCodeAt(0)||216===!t.charCodeAt(1)||255===!t.charCodeAt(2)||224===!t.charCodeAt(3)||!t.charCodeAt(6)==="J".charCodeAt(0)||!t.charCodeAt(7)==="F".charCodeAt(0)||!t.charCodeAt(8)==="I".charCodeAt(0)||!t.charCodeAt(9)==="F".charCodeAt(0)||0===!t.charCodeAt(10))throw new Error("getJpegSize requires a binary string jpeg file");for(var i=256*t.charCodeAt(4)+t.charCodeAt(5),o=4,a=t.length;o<a;){if(o+=i,255!==t.charCodeAt(o))throw new Error("getJpegSize could not find the size of the image");if(192===t.charCodeAt(o+1)||193===t.charCodeAt(o+1)||194===t.charCodeAt(o+1)||195===t.charCodeAt(o+1)||196===t.charCodeAt(o+1)||197===t.charCodeAt(o+1)||198===t.charCodeAt(o+1)||199===t.charCodeAt(o+1))return n=256*t.charCodeAt(o+5)+t.charCodeAt(o+6),e=256*t.charCodeAt(o+7)+t.charCodeAt(o+8),r=t.charCodeAt(o+9),[e,n,r];o+=2,i=256*t.charCodeAt(o)+t.charCodeAt(o+1)}},b=function(t){var e=t[0]<<8|t[1];if(65496!==e)throw new Error("Supplied data is not a JPEG");for(var n,r,i,o,a=t.length,s=(t[4]<<8)+t[5],c=4;c<a;){if(c+=s,n=x(t,c),s=(n[2]<<8)+n[3],(192===n[1]||194===n[1])&&255===n[0]&&s>7)return n=x(t,c+5),r=(n[2]<<8)+n[3],i=(n[0]<<8)+n[1],o=n[4],{width:r,height:i,numcomponents:o};c+=2}throw new Error("getJpegSizeFromBytes could not find the size of the image")},x=function(t,e){return t.subarray(e,e+5)};e.processJPEG=function(t,e,n,r,i){var o,a=this.color_spaces.DEVICE_RGB,s=this.decode.DCT_DECODE,c=8;return this.isString(t)?(o=v(t),this.createImageInfo(t,o[0],o[1],1==o[3]?this.color_spaces.DEVICE_GRAY:a,c,s,e,n)):(this.isArrayBuffer(t)&&(t=new Uint8Array(t)),this.isArrayBufferView(t)?(o=b(t),t=i||this.arrayBufferToBinaryString(t),this.createImageInfo(t,o.width,o.height,1==o.numcomponents?this.color_spaces.DEVICE_GRAY:a,c,s,e,n)):null)},e.processJPG=function(){return this.processJPEG.apply(this,arguments)}}(e.API),/** + * jsPDF Annotations PlugIn + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){var n={annotations:[],f2:function(t){return t.toFixed(2)},notEmpty:function(t){if("undefined"!=typeof t&&""!=t)return!0}};return e.API.annotationPlugin=n,e.API.events.push(["addPage",function(t){this.annotationPlugin.annotations[t.pageNumber]=[]}]),t.events.push(["putPage",function(t){for(var e=this.annotationPlugin.annotations[t.pageNumber],r=!1,i=0;i<e.length&&!r;i++){var o=e[i];switch(o.type){case"link":if(n.notEmpty(o.options.url)||n.notEmpty(o.options.pageNumber)){r=!0;break}case"reference":case"text":case"freetext":r=!0}}if(0!=r){this.internal.write("/Annots [");for(var a=this.annotationPlugin.f2,s=this.internal.scaleFactor,c=this.internal.pageSize.height,l=this.internal.getPageInfo(t.pageNumber),i=0;i<e.length;i++){var o=e[i];switch(o.type){case"reference":this.internal.write(" "+o.object.objId+" 0 R ");break;case"text":var u=this.internal.newAdditionalObject(),h=this.internal.newAdditionalObject(),f=o.title||"Note",d="/Rect ["+a(o.bounds.x*s)+" "+a(c-(o.bounds.y+o.bounds.h)*s)+" "+a((o.bounds.x+o.bounds.w)*s)+" "+a((c-o.bounds.y)*s)+"] ";y="<</Type /Annot /Subtype /Text "+d+"/Contents ("+o.contents+")",y+=" /Popup "+h.objId+" 0 R",y+=" /P "+l.objId+" 0 R",y+=" /T ("+f+") >>",u.content=y;var p=u.objId+" 0 R",g=30,d="/Rect ["+a((o.bounds.x+g)*s)+" "+a(c-(o.bounds.y+o.bounds.h)*s)+" "+a((o.bounds.x+o.bounds.w+g)*s)+" "+a((c-o.bounds.y)*s)+"] ";y="<</Type /Annot /Subtype /Popup "+d+" /Parent "+p,o.open&&(y+=" /Open true"),y+=" >>",h.content=y,this.internal.write(u.objId,"0 R",h.objId,"0 R");break;case"freetext":var d="/Rect ["+a(o.bounds.x*s)+" "+a((c-o.bounds.y)*s)+" "+a(o.bounds.x+o.bounds.w*s)+" "+a(c-(o.bounds.y+o.bounds.h)*s)+"] ",m=o.color||"#000000";y="<</Type /Annot /Subtype /FreeText "+d+"/Contents ("+o.contents+")",y+=" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#"+m+")",y+=" /Border [0 0 0]",y+=" >>",this.internal.write(y);break;case"link":if(o.options.name){var w=this.annotations._nameMap[o.options.name];o.options.pageNumber=w.page,o.options.top=w.y}else o.options.top||(o.options.top=0);var d="/Rect ["+a(o.x*s)+" "+a((c-o.y)*s)+" "+a(o.x+o.w*s)+" "+a(c-(o.y+o.h)*s)+"] ",y="";if(o.options.url)y="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /A <</S /URI /URI ("+o.options.url+") >>";else if(o.options.pageNumber){var t=this.internal.getPageInfo(o.options.pageNumber);switch(y="<</Type /Annot /Subtype /Link "+d+"/Border [0 0 0] /Dest ["+t.objId+" 0 R",o.options.magFactor=o.options.magFactor||"XYZ",o.options.magFactor){case"Fit":y+=" /Fit]";break;case"FitH":y+=" /FitH "+o.options.top+"]";break;case"FitV":o.options.left=o.options.left||0,y+=" /FitV "+o.options.left+"]";break;case"XYZ":default:var v=a((c-o.options.top)*s);o.options.left=o.options.left||0,"undefined"==typeof o.options.zoom&&(o.options.zoom=0),y+=" /XYZ "+o.options.left+" "+v+" "+o.options.zoom+"]"}}""!=y&&(y+=" >>",this.internal.write(y))}}this.internal.write("]")}}]),t.createAnnotation=function(t){switch(t.type){case"link":this.link(t.bounds.x,t.bounds.y,t.bounds.w,t.bounds.h,t);break;case"text":case"freetext":this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push(t)}},t.link=function(t,e,n,r,i){this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push({x:t,y:e,w:n,h:r,options:i,type:"link"})},t.link=function(t,e,n,r,i){this.annotationPlugin.annotations[this.internal.getCurrentPageInfo().pageNumber].push({x:t,y:e,w:n,h:r,options:i,type:"link"})},t.textWithLink=function(t,e,n,r){var i=this.getTextWidth(t),o=this.internal.getLineHeight();return this.text(t,e,n),n+=.2*o,this.link(e,n-o,i,o,r),i},t.getTextWidth=function(t){var e=this.internal.getFontSize(),n=this.getStringUnitWidth(t)*e/this.internal.scaleFactor;return n},t.getLineHeight=function(){return this.internal.getLineHeight()},this}(e.API),function(t){t.autoPrint=function(){var t;return this.internal.events.subscribe("postPutResources",function(){t=this.internal.newObject(),this.internal.write("<< /S/Named /Type/Action /N/Print >>","endobj")}),this.internal.events.subscribe("putCatalog",function(){this.internal.write("/OpenAction "+t+" 0 R")}),this}}(e.API),/** + * jsPDF Canvas PlugIn + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){return t.events.push(["initialized",function(){this.canvas.pdf=this}]),t.canvas={getContext:function(t){return this.pdf.context2d._canvas=this,this.pdf.context2d},style:{}},Object.defineProperty(t.canvas,"width",{get:function(){return this._width},set:function(t){this._width=t,this.getContext("2d").pageWrapX=t+1}}),Object.defineProperty(t.canvas,"height",{get:function(){return this._height},set:function(t){this._height=t,this.getContext("2d").pageWrapY=t+1}}),this}(e.API),/** ==================================================================== + * jsPDF Cell plugin + * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com + * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br + * 2013 Lee Driscoll, https://github.com/lsdriscoll + * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria + * 2014 James Hall, james@parall.ax + * 2014 Diego Casorran, https://github.com/diegocr + * + * + * ==================================================================== + */ +function(t){var e,n,r,i,o=3,a=13,s={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},c=1,l=function(t,e,n,r,i){s={x:t,y:e,w:n,h:r,ln:i}},u=function(){return s},h={left:0,top:0,bottom:0};t.setHeaderFunction=function(t){i=t},t.getTextDimensions=function(t){e=this.internal.getFont().fontName,n=this.table_font_size||this.internal.getFontSize(),r=this.internal.getFont().fontStyle;var i,o,a=19.049976/25.4;o=document.createElement("font"),o.id="jsPDFCell";try{o.style.fontStyle=r}catch(t){o.style.fontWeight=r}o.style.fontName=e,o.style.fontSize=n+"pt";try{o.textContent=t}catch(e){o.innerText=t}return document.body.appendChild(o),i={w:(o.offsetWidth+1)*a,h:(o.offsetHeight+1)*a},document.body.removeChild(o),i},t.cellAddPage=function(){var t=this.margins||h;this.addPage(),l(t.left,t.top,void 0,void 0),c+=1},t.cellInitialize=function(){s={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},c=1},t.cell=function(t,e,n,r,i,s,c){var f=u(),d=!1;if(void 0!==f.ln)if(f.ln===s)t=f.x+f.w,e=f.y;else{var p=this.margins||h;f.y+f.h+r+a>=this.internal.pageSize.height-p.bottom&&(this.cellAddPage(),d=!0,this.printHeaders&&this.tableHeaderRow&&this.printHeaderRow(s,!0)),e=u().y+u().h,d&&(e=a+10)}if(void 0!==i[0])if(this.printingHeaderRow?this.rect(t,e,n,r,"FD"):this.rect(t,e,n,r),"right"===c){i instanceof Array||(i=[i]);for(var g=0;g<i.length;g++){var m=i[g],w=this.getStringUnitWidth(m)*this.internal.getFontSize();this.text(m,t+n-w-o,e+this.internal.getLineHeight()*(g+1))}}else this.text(i,t+o,e+this.internal.getLineHeight());return l(t,e,n,r,s),this},t.arrayMax=function(t,e){var n,r,i,o=t[0];for(n=0,r=t.length;n<r;n+=1)i=t[n],e?e(o,i)===-1&&(o=i):i>o&&(o=i);return o},t.table=function(e,n,r,i,o){if(!r)throw"No data for PDF table";var a,l,u,f,d,p,g,m,w,y,v=[],b=[],x={},k={},_=[],C=[],A=!1,S=!0,q=12,T=h;if(T.width=this.internal.pageSize.width,o&&(o.autoSize===!0&&(A=!0),o.printHeaders===!1&&(S=!1),o.fontSize&&(q=o.fontSize),o.css&&"undefined"!=typeof o.css["font-size"]&&(q=16*o.css["font-size"]),o.margins&&(T=o.margins)),this.lnMod=0,s={x:void 0,y:void 0,w:void 0,h:void 0,ln:void 0},c=1,this.printHeaders=S,this.margins=T,this.setFontSize(q),this.table_font_size=q,void 0===i||null===i)v=Object.keys(r[0]);else if(i[0]&&"string"!=typeof i[0]){var P=19.049976/25.4;for(l=0,u=i.length;l<u;l+=1)a=i[l],v.push(a.name),b.push(a.prompt),k[a.name]=a.width*P}else v=i;if(A)for(y=function(t){return t[a]},l=0,u=v.length;l<u;l+=1){for(a=v[l],x[a]=r.map(y),_.push(this.getTextDimensions(b[l]||a).w),p=x[a],g=0,f=p.length;g<f;g+=1)d=p[g],_.push(this.getTextDimensions(d).w);k[a]=t.arrayMax(_),_=[]}if(S){var I=this.calculateLineHeight(v,k,b.length?b:v);for(l=0,u=v.length;l<u;l+=1)a=v[l],C.push([e,n,k[a],I,String(b.length?b[l]:a)]);this.setTableHeaderRow(C),this.printHeaderRow(1,!1)}for(l=0,u=r.length;l<u;l+=1){var I;for(m=r[l],I=this.calculateLineHeight(v,k,m),g=0,w=v.length;g<w;g+=1)a=v[g],this.cell(e,n,k[a],I,m[a],l+2,a.align)}return this.lastCellPos=s,this.table_x=e,this.table_y=n,this},t.calculateLineHeight=function(t,e,n){for(var r,i=0,a=0;a<t.length;a++){r=t[a],n[r]=this.splitTextToSize(String(n[r]),e[r]-o);var s=this.internal.getLineHeight()*n[r].length+o;s>i&&(i=s)}return i},t.setTableHeaderRow=function(t){this.tableHeaderRow=t},t.printHeaderRow=function(t,e){if(!this.tableHeaderRow)throw"Property tableHeaderRow does not exist.";var n,r,o,s;if(this.printingHeaderRow=!0,void 0!==i){var u=i(this,c);l(u[0],u[1],u[2],u[3],-1)}this.setFontStyle("bold");var h=[];for(o=0,s=this.tableHeaderRow.length;o<s;o+=1)this.setFillColor(200,200,200),n=this.tableHeaderRow[o],e&&(this.margins.top=a,n[1]=this.margins&&this.margins.top||0,h.push(n)),r=[].concat(n),this.cell.apply(this,r.concat(t));h.length>0&&this.setTableHeaderRow(h),this.setFontStyle("normal"),this.printingHeaderRow=!1}}(e.API),/** + * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. http://opensource.org/licenses/mit-license + */ +function(t){function e(){this._isStrokeTransparent=!1,this._strokeOpacity=1,this.strokeStyle="#000000",this.fillStyle="#000000",this._isFillTransparent=!1,this._fillOpacity=1,this.font="12pt times",this.textBaseline="alphabetic",this.textAlign="start",this.lineWidth=1,this.lineJoin="miter",this.lineCap="butt",this._transform=[1,0,0,1,0,0],this.globalCompositeOperation="normal",this.globalAlpha=1,this._clip_path=[],this.ignoreClearRect=!1,this.copy=function(t){this._isStrokeTransparent=t._isStrokeTransparent,this._strokeOpacity=t._strokeOpacity,this.strokeStyle=t.strokeStyle,this._isFillTransparent=t._isFillTransparent,this._fillOpacity=t._fillOpacity,this.fillStyle=t.fillStyle,this.font=t.font,this.lineWidth=t.lineWidth,this.lineJoin=t.lineJoin,this.lineCap=t.lineCap,this.textBaseline=t.textBaseline,this.textAlign=t.textAlign,this._fontSize=t._fontSize,this._transform=t._transform.slice(0),this.globalCompositeOperation=t.globalCompositeOperation,this.globalAlpha=t.globalAlpha,this._clip_path=t._clip_path.slice(0),this.ignoreClearRect=t.ignoreClearRect}}t.events.push(["initialized",function(){this.context2d.pdf=this,this.context2d.internal.pdf=this,this.context2d.ctx=new e,this.context2d.ctxStack=[],this.context2d.path=[]}]),t.context2d={pageWrapXEnabled:!1,pageWrapYEnabled:!1,pageWrapX:9999999,pageWrapY:9999999,ctx:new e,f2:function(t){return t.toFixed(2)},fillRect:function(t,e,n,r){if(!this._isFillTransparent()){t=this._wrapX(t),e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"f")}},strokeRect:function(t,e,n,r){if(!this._isStrokeTransparent()){t=this._wrapX(t),e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.pdf.rect(i.x,i.y,i.w,i.h,"s")}},clearRect:function(t,e,n,r){if(!this.ctx.ignoreClearRect){t=this._wrapX(t),e=this._wrapY(e);var i=this._matrix_map_rect(this.ctx._transform,{x:t,y:e,w:n,h:r});this.save(),this.setFillStyle("#ffffff"),this.pdf.rect(i.x,i.y,i.w,i.h,"f"),this.restore()}},save:function(){this.ctx._fontSize=this.pdf.internal.getFontSize();var t=new e;t.copy(this.ctx),this.ctxStack.push(this.ctx),this.ctx=t},restore:function(){this.ctx=this.ctxStack.pop(),this.setFillStyle(this.ctx.fillStyle),this.setStrokeStyle(this.ctx.strokeStyle),this.setFont(this.ctx.font),this.pdf.setFontSize(this.ctx._fontSize),this.setLineCap(this.ctx.lineCap),this.setLineWidth(this.ctx.lineWidth),this.setLineJoin(this.ctx.lineJoin)},rect:function(t,e,n,r){this.moveTo(t,e),this.lineTo(t+n,e),this.lineTo(t+n,e+r),this.lineTo(t,e+r),this.lineTo(t,e),this.closePath()},beginPath:function(){this.path=[]},closePath:function(){this.path.push({type:"close"})},_getRgba:function(t){var e={};if(this.internal.rxTransparent.test(t))e.r=0,e.g=0,e.b=0,e.a=0;else{var n=this.internal.rxRgb.exec(t);null!=n?(e.r=parseInt(n[1]),e.g=parseInt(n[2]),e.b=parseInt(n[3]),e.a=1):(n=this.internal.rxRgba.exec(t),null!=n?(e.r=parseInt(n[1]),e.g=parseInt(n[2]),e.b=parseInt(n[3]),e.a=parseFloat(n[4])):(e.a=1,"#"!=t.charAt(0)&&(t=o.colorNameToHex(t),t||(t="#000000")),4===t.length?(e.r=t.substring(1,2),e.r+=r,e.g=t.substring(2,3),e.g+=g,e.b=t.substring(3,4),e.b+=b):(e.r=t.substring(1,3),e.g=t.substring(3,5),e.b=t.substring(5,7)),e.r=parseInt(e.r,16),e.g=parseInt(e.g,16),e.b=parseInt(e.b,16)))}return e.style=t,e},setFillStyle:function(t){var e,n,r,i;if(this.internal.rxTransparent.test(t))e=0,n=0,r=0,i=0;else{var a=this.internal.rxRgb.exec(t);null!=a?(e=parseInt(a[1]),n=parseInt(a[2]),r=parseInt(a[3]),i=1):(a=this.internal.rxRgba.exec(t),null!=a?(e=parseInt(a[1]),n=parseInt(a[2]),r=parseInt(a[3]),i=parseFloat(a[4])):(i=1,"#"!=t.charAt(0)&&(t=o.colorNameToHex(t),t||(t="#000000")),4===t.length?(e=t.substring(1,2),e+=e,n=t.substring(2,3),n+=n,r=t.substring(3,4),r+=r):(e=t.substring(1,3),n=t.substring(3,5),r=t.substring(5,7)),e=parseInt(e,16),n=parseInt(n,16),r=parseInt(r,16)))}this.ctx.fillStyle=t,this.ctx._isFillTransparent=0==i,this.ctx._fillOpacity=i,this.pdf.setFillColor(e,n,r,{a:i}),this.pdf.setTextColor(e,n,r,{a:i})},setStrokeStyle:function(t){var e=this._getRgba(t);this.ctx.strokeStyle=e.style,this.ctx._isStrokeTransparent=0==e.a,this.ctx._strokeOpacity=e.a,0===e.a?this.pdf.setDrawColor(255,255,255):1===e.a?this.pdf.setDrawColor(e.r,e.g,e.b):this.pdf.setDrawColor(e.r,e.g,e.b)},fillText:function(t,e,n,r){if(!this._isFillTransparent()){e=this._wrapX(e),n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0],n=i[1];var o=this._matrix_rotation(this.ctx._transform),a=57.2958*o;if(this.ctx._clip_path.length>0){var s;s=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage(),s.push("q");var c=this.path;this.path=this.ctx._clip_path,this.ctx._clip_path=[],this._fill(null,!0),this.ctx._clip_path=this.path,this.path=c}var l;if(l=this.pdf.hotfix&&this.pdf.hotfix.scale_text?this._getTransform()[0]:1,l<.01)this.pdf.text(t,e,this._getBaseline(n),null,a);else{var u=this.pdf.internal.getFontSize();this.pdf.setFontSize(u*l),this.pdf.text(t,e,this._getBaseline(n),null,a),this.pdf.setFontSize(u)}this.ctx._clip_path.length>0&&s.push("Q")}},strokeText:function(t,e,n,r){if(!this._isStrokeTransparent()){e=this._wrapX(e),n=this._wrapY(n);var i=this._matrix_map_point(this.ctx._transform,[e,n]);e=i[0],n=i[1];var o=this._matrix_rotation(this.ctx._transform),a=57.2958*o;if(this.ctx._clip_path.length>0){var s;s=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage(),s.push("q");var c=this.path;this.path=this.ctx._clip_path,this.ctx._clip_path=[],this._fill(null,!0),this.ctx._clip_path=this.path,this.path=c}var l;if(l=this.pdf.hotfix&&this.pdf.hotfix.scale_text?this._getTransform()[0]:1,1===l)this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},a);else{var u=this.pdf.internal.getFontSize();this.pdf.setFontSize(u*l),this.pdf.text(t,e,this._getBaseline(n),{stroke:!0},a),this.pdf.setFontSize(u)}this.ctx._clip_path.length>0&&s.push("Q")}},setFont:function(t){this.ctx.font=t;var e=/\s*(\w+)\s+(\w+)\s+(\w+)\s+([\d\.]+)(px|pt|em)\s+(.*)?/;if(h=e.exec(t),null!=h){var n=h[1],r=(h[2],h[3]),i=h[4],o=h[5],a=h[6];i="px"===o?Math.floor(parseFloat(i)):"em"===o?Math.floor(parseFloat(i)*this.pdf.getFontSize()):Math.floor(parseFloat(i)),this.pdf.setFontSize(i),"bold"===r||"700"===r?this.pdf.setFontStyle("bold"):"italic"===n?this.pdf.setFontStyle("italic"):this.pdf.setFontStyle("normal");var s,c=a,l=c.toLowerCase().split(/\s*,\s*/);s=l.indexOf("arial")!=-1?"Arial":l.indexOf("verdana")!=-1?"Verdana":l.indexOf("helvetica")!=-1?"Helvetica":l.indexOf("sans-serif")!=-1?"sans-serif":l.indexOf("fixed")!=-1?"Fixed":l.indexOf("monospace")!=-1?"Monospace":l.indexOf("terminal")!=-1?"Terminal":l.indexOf("courier")!=-1?"Courier":l.indexOf("times")!=-1?"Times":l.indexOf("cursive")!=-1?"Cursive":l.indexOf("fantasy")!=-1?"Fantasy":(l.indexOf("serif")!=-1,"Serif");var u;u="bold"===r?"bold":"normal",this.pdf.setFont(s,u)}else{var e=/(\d+)(pt|px|em)\s+(\w+)\s*(\w+)?/,h=e.exec(t);if(null!=h){var f=h[1],c=(h[2],h[3]),u=h[4];u||(u="normal"),f="em"===o?Math.floor(parseFloat(i)*this.pdf.getFontSize()):Math.floor(parseFloat(f)),this.pdf.setFontSize(f),this.pdf.setFont(c,u)}}},setTextBaseline:function(t){this.ctx.textBaseline=t},getTextBaseline:function(){return this.ctx.textBaseline},setTextAlign:function(t){this.ctx.textAlign=t},getTextAlign:function(){return this.ctx.textAlign},setLineWidth:function(t){this.ctx.lineWidth=t,this.pdf.setLineWidth(t)},setLineCap:function(t){this.ctx.lineCap=t,this.pdf.setLineCap(t)},setLineJoin:function(t){this.ctx.lineJoin=t,this.pdf.setLineJoin(t)},moveTo:function(t,e){t=this._wrapX(t),e=this._wrapY(e);var n=this._matrix_map_point(this.ctx._transform,[t,e]);t=n[0],e=n[1];var r={type:"mt",x:t,y:e};this.path.push(r)},_wrapX:function(t){return this.pageWrapXEnabled?t%this.pageWrapX:t},_wrapY:function(t){return this.pageWrapYEnabled?(this._gotoPage(this._page(t)),(t-this.lastBreak)%this.pageWrapY):t},transform:function(t,e,n,r,i,o){this.ctx._transform=[t,e,n,r,i,o]},setTransform:function(t,e,n,r,i,o){this.ctx._transform=[t,e,n,r,i,o]},_getTransform:function(){return this.ctx._transform},lastBreak:0,pageBreaks:[],_page:function(t){if(this.pageWrapYEnabled){this.lastBreak=0;for(var e=0,n=0,r=0;r<this.pageBreaks.length;r++)if(t>=this.pageBreaks[r]){e++,0===this.lastBreak&&n++;var i=this.pageBreaks[r]-this.lastBreak;this.lastBreak=this.pageBreaks[r];var o=Math.floor(i/this.pageWrapY);n+=o}if(0===this.lastBreak){var o=Math.floor(t/this.pageWrapY)+1;n+=o}return n+e}return this.pdf.internal.getCurrentPageInfo().pageNumber},_gotoPage:function(t){},lineTo:function(t,e){t=this._wrapX(t),e=this._wrapY(e);var n=this._matrix_map_point(this.ctx._transform,[t,e]);t=n[0],e=n[1];var r={type:"lt",x:t,y:e};this.path.push(r)},bezierCurveTo:function(t,e,n,r,i,o){t=this._wrapX(t),e=this._wrapY(e),n=this._wrapX(n),r=this._wrapY(r),i=this._wrapX(i),o=this._wrapY(o);var a;a=this._matrix_map_point(this.ctx._transform,[i,o]),i=a[0],o=a[1],a=this._matrix_map_point(this.ctx._transform,[t,e]),t=a[0],e=a[1],a=this._matrix_map_point(this.ctx._transform,[n,r]),n=a[0],r=a[1];var s={type:"bct",x1:t,y1:e,x2:n,y2:r,x:i,y:o};this.path.push(s)},quadraticCurveTo:function(t,e,n,r){t=this._wrapX(t),e=this._wrapY(e),n=this._wrapX(n),r=this._wrapY(r);var i;i=this._matrix_map_point(this.ctx._transform,[n,r]),n=i[0],r=i[1],i=this._matrix_map_point(this.ctx._transform,[t,e]),t=i[0],e=i[1];var o={type:"qct",x1:t,y1:e,x:n,y:r};this.path.push(o)},arc:function(t,e,n,r,i,o){if(t=this._wrapX(t),e=this._wrapY(e),!this._matrix_is_identity(this.ctx._transform)){var a=this._matrix_map_point(this.ctx._transform,[t,e]);t=a[0],e=a[1];var s=this._matrix_map_point(this.ctx._transform,[0,0]),c=this._matrix_map_point(this.ctx._transform,[0,n]);n=Math.sqrt(Math.pow(c[0]-s[0],2)+Math.pow(c[1]-s[1],2))}var l={type:"arc",x:t,y:e,radius:n,startAngle:r,endAngle:i,anticlockwise:o};this.path.push(l)},drawImage:function(t,e,n,r,i,o,a,s,c){void 0!==o&&(e=o,n=a,r=s,i=c),e=this._wrapX(e),n=this._wrapY(n);var l,u=this._matrix_map_rect(this.ctx._transform,{x:e,y:n,w:r,h:i}),h=(this._matrix_map_rect(this.ctx._transform,{x:o,y:a,w:s,h:c}),/data:image\/(\w+).*/i),f=h.exec(t);l=null!=f?f[1]:"png",this.pdf.addImage(t,l,u.x,u.y,u.w,u.h)},_matrix_multiply:function(t,e){var n=e[0],r=e[1],i=e[2],o=e[3],a=e[4],s=e[5],c=n*t[0]+r*t[2],l=i*t[0]+o*t[2],u=a*t[0]+s*t[2]+t[4];return r=n*t[1]+r*t[3],o=i*t[1]+o*t[3],s=a*t[1]+s*t[3]+t[5],n=c,i=l,a=u,[n,r,i,o,a,s]},_matrix_rotation:function(t){return Math.atan2(t[2],t[0])},_matrix_decompose:function(t){var e=t[0],n=t[1],r=t[2],i=t[3],o=Math.sqrt(e*e+n*n);e/=o,n/=o;var a=e*r+n*i;r-=e*a,i-=n*a;var s=Math.sqrt(r*r+i*i);return r/=s,i/=s,a/=s,e*i<n*r&&(e=-e,n=-n,a=-a,o=-o),{scale:[o,0,0,s,0,0],translate:[1,0,0,1,t[4],t[5]],rotate:[e,n,-n,e,0,0],skew:[1,0,a,1,0,0]}},_matrix_map_point:function(t,e){var n=t[0],r=t[1],i=t[2],o=t[3],a=t[4],s=t[5],c=e[0],l=e[1],u=c*n+l*i+a,h=c*r+l*o+s;return[u,h]},_matrix_map_point_obj:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]);return{x:n[0],y:n[1]}},_matrix_map_rect:function(t,e){var n=this._matrix_map_point(t,[e.x,e.y]),r=this._matrix_map_point(t,[e.x+e.w,e.y+e.h]);return{x:n[0],y:n[1],w:r[0]-n[0],h:r[1]-n[1]}},_matrix_is_identity:function(t){return 1==t[0]&&(0==t[1]&&(0==t[2]&&(1==t[3]&&(0==t[4]&&0==t[5]))))},rotate:function(t){var e=[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,e)},scale:function(t,e){var n=[t,0,0,e,0,0];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n)},translate:function(t,e){var n=[1,0,0,1,t,e];this.ctx._transform=this._matrix_multiply(this.ctx._transform,n)},stroke:function(){if(this.ctx._clip_path.length>0){var t;t=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage(),t.push("q");var e=this.path;this.path=this.ctx._clip_path,this.ctx._clip_path=[],this._stroke(!0),this.ctx._clip_path=this.path,this.path=e,this._stroke(!1),t.push("Q")}else this._stroke(!1)},_stroke:function(t){if(t||!this._isStrokeTransparent()){for(var e=[],n=!1,r=this.path,i=0;i<r.length;i++){var o=r[i];switch(o.type){case"mt":e.push({start:o,deltas:[],abs:[]});break;case"lt":var a=[o.x-r[i-1].x,o.y-r[i-1].y];e[e.length-1].deltas.push(a),e[e.length-1].abs.push(o);break;case"bct":var a=[o.x1-r[i-1].x,o.y1-r[i-1].y,o.x2-r[i-1].x,o.y2-r[i-1].y,o.x-r[i-1].x,o.y-r[i-1].y];e[e.length-1].deltas.push(a);break;case"qct":var s=r[i-1].x+2/3*(o.x1-r[i-1].x),c=r[i-1].y+2/3*(o.y1-r[i-1].y),l=o.x+2/3*(o.x1-o.x),u=o.y+2/3*(o.y1-o.y),h=o.x,f=o.y,a=[s-r[i-1].x,c-r[i-1].y,l-r[i-1].x,u-r[i-1].y,h-r[i-1].x,f-r[i-1].y];e[e.length-1].deltas.push(a);break;case"arc":0==e.length&&e.push({start:{x:0,y:0},deltas:[],abs:[]}),e[e.length-1].arc=!0,e[e.length-1].abs.push(o);break;case"close":n=!0}}for(var i=0;i<e.length;i++){var d;if(d=i==e.length-1?"s":null,e[i].arc)for(var p=e[i].abs,g=0;g<p.length;g++){var m=p[g],w=360*m.startAngle/(2*Math.PI),y=360*m.endAngle/(2*Math.PI),v=m.x,b=m.y;this.internal.arc2(this,v,b,m.radius,w,y,m.anticlockwise,d,t)}else{var v=e[i].start.x,b=e[i].start.y;t?(this.pdf.lines(e[i].deltas,v,b,null,null),this.pdf.clip_fixed()):this.pdf.lines(e[i].deltas,v,b,null,d)}}}},_isFillTransparent:function(){return this.ctx._isFillTransparent||0==this.globalAlpha},_isStrokeTransparent:function(){return this.ctx._isStrokeTransparent||0==this.globalAlpha},fill:function(t){if(this.ctx._clip_path.length>0){var e;e=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage(),e.push("q");var n=this.path;this.path=this.ctx._clip_path,this.ctx._clip_path=[],this._fill(t,!0),this.ctx._clip_path=this.path,this.path=n,this._fill(t,!1),e.push("Q")}else this._fill(t,!1)},_fill:function(t,e){if(!this._isFillTransparent()){var r,i="function"==typeof this.pdf.internal.newObject2;r=window.outIntercept?"group"===window.outIntercept.type?window.outIntercept.stream:window.outIntercept:this.internal.getCurrentPage();var o=[],a=window.outIntercept;if(i)switch(this.ctx.globalCompositeOperation){case"normal":case"source-over":break;case"destination-in":case"destination-out":var s=this.pdf.internal.newStreamObject(),c=this.pdf.internal.newObject2();c.push("<</Type /ExtGState"),c.push("/SMask <</S /Alpha /G "+s.objId+" 0 R>>"),c.push(">>");var l="MASK"+c.objId;this.pdf.internal.addGraphicsState(l,c.objId);var u="/"+l+" gs";r.splice(0,0,"q"),r.splice(1,0,u),r.push("Q"),window.outIntercept=s;break;default:var h="/"+this.pdf.internal.blendModeMap[this.ctx.globalCompositeOperation.toUpperCase()];h&&this.pdf.internal.out(h+" gs")}var f=this.ctx.globalAlpha;if(this.ctx._fillOpacity<1&&(f=this.ctx._fillOpacity),i){var d=this.pdf.internal.newObject2();d.push("<</Type /ExtGState"),d.push("/CA "+f),d.push("/ca "+f),d.push(">>");var l="GS_O_"+d.objId;this.pdf.internal.addGraphicsState(l,d.objId),this.pdf.internal.out("/"+l+" gs")}for(var p=this.path,g=0;g<p.length;g++){var m=p[g];switch(m.type){case"mt":o.push({start:m,deltas:[],abs:[]});break;case"lt":var w=[m.x-p[g-1].x,m.y-p[g-1].y];o[o.length-1].deltas.push(w),o[o.length-1].abs.push(m);break;case"bct":var w=[m.x1-p[g-1].x,m.y1-p[g-1].y,m.x2-p[g-1].x,m.y2-p[g-1].y,m.x-p[g-1].x,m.y-p[g-1].y];o[o.length-1].deltas.push(w);break;case"qct":var y=p[g-1].x+2/3*(m.x1-p[g-1].x),v=p[g-1].y+2/3*(m.y1-p[g-1].y),b=m.x+2/3*(m.x1-m.x),x=m.y+2/3*(m.y1-m.y),k=m.x,_=m.y,w=[y-p[g-1].x,v-p[g-1].y,b-p[g-1].x,x-p[g-1].y,k-p[g-1].x,_-p[g-1].y];o[o.length-1].deltas.push(w);break;case"arc":0===o.length&&o.push({deltas:[],abs:[]}),o[o.length-1].arc=!0,o[o.length-1].abs.push(m);break;case"close":o.push({close:!0})}}for(var g=0;g<o.length;g++){var C;if(g==o.length-1?(C="f","evenodd"===t&&(C+="*")):C=null,o[g].close)this.pdf.internal.out("h"),this.pdf.internal.out("f");else if(o[g].arc){o[g].start&&this.internal.move2(this,o[g].start.x,o[g].start.y);for(var A=o[g].abs,S=0;S<A.length;S++){var q=A[S];if("undefined"!=typeof q.startAngle){var T=360*q.startAngle/(2*Math.PI),P=360*q.endAngle/(2*Math.PI),I=q.x,E=q.y;if(0===S&&this.internal.move2(this,I,E),this.internal.arc2(this,I,E,q.radius,T,P,q.anticlockwise,null,e),S===A.length-1&&o[g].start){var I=o[g].start.x,E=o[g].start.y;this.internal.line2(n,I,E)}}else this.internal.line2(n,q.x,q.y)}}else{var I=o[g].start.x,E=o[g].start.y;e?(this.pdf.lines(o[g].deltas,I,E,null,null),this.pdf.clip_fixed()):this.pdf.lines(o[g].deltas,I,E,null,C)}}window.outIntercept=a}},pushMask:function(){var t="function"==typeof this.pdf.internal.newObject2;if(!t)return void console.log("jsPDF v2 not enabled");var e=this.pdf.internal.newStreamObject(),n=this.pdf.internal.newObject2();n.push("<</Type /ExtGState"),n.push("/SMask <</S /Alpha /G "+e.objId+" 0 R>>"),n.push(">>");var r="MASK"+n.objId;this.pdf.internal.addGraphicsState(r,n.objId);var i="/"+r+" gs";this.pdf.internal.out(i)},clip:function(){if(this.ctx._clip_path.length>0)for(var t=0;t<this.path.length;t++)this.ctx._clip_path.push(this.path[t]);else this.ctx._clip_path=this.path;this.path=[]},measureText:function(t){var e=this.pdf;return{getWidth:function(){var n=e.internal.getFontSize(),r=e.getStringUnitWidth(t)*n/e.internal.scaleFactor;return r*=1.3333},get width(){return this.getWidth(t)}}},_getBaseline:function(t){var e=parseInt(this.pdf.internal.getFontSize()),n=.25*e;switch(this.ctx.textBaseline){case"bottom":return t-n;case"top":return t+e;case"hanging":return t+e-n;case"middle":return t+e/2-n;case"ideographic":return t;case"alphabetic":default:return t}}};var n=t.context2d;return Object.defineProperty(n,"fillStyle",{set:function(t){this.setFillStyle(t)},get:function(){return this.ctx.fillStyle}}),Object.defineProperty(n,"strokeStyle",{set:function(t){this.setStrokeStyle(t)},get:function(){return this.ctx.strokeStyle}}),Object.defineProperty(n,"lineWidth",{set:function(t){this.setLineWidth(t)},get:function(){return this.ctx.lineWidth}}),Object.defineProperty(n,"lineCap",{set:function(t){this.setLineCap(t)},get:function(){return this.ctx.lineCap}}),Object.defineProperty(n,"lineJoin",{set:function(t){this.setLineJoin(t)},get:function(){return this.ctx.lineJoin}}),Object.defineProperty(n,"miterLimit",{set:function(t){this.ctx.miterLimit=t},get:function(){return this.ctx.miterLimit}}),Object.defineProperty(n,"textBaseline",{set:function(t){this.setTextBaseline(t)},get:function(){return this.getTextBaseline()}}),Object.defineProperty(n,"textAlign",{set:function(t){this.setTextAlign(t)},get:function(){return this.getTextAlign()}}),Object.defineProperty(n,"font",{set:function(t){this.setFont(t)},get:function(){return this.ctx.font}}),Object.defineProperty(n,"globalCompositeOperation",{set:function(t){this.ctx.globalCompositeOperation=t},get:function(){return this.ctx.globalCompositeOperation}}),Object.defineProperty(n,"globalAlpha",{set:function(t){this.ctx.globalAlpha=t},get:function(){return this.ctx.globalAlpha}}),Object.defineProperty(n,"ignoreClearRect",{set:function(t){this.ctx.ignoreClearRect=t},get:function(){return this.ctx.ignoreClearRect}}),n.internal={},n.internal.rxRgb=/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,n.internal.rxRgba=/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/,n.internal.rxTransparent=/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/,n.internal.arc=function(t,e,n,r,i,o,a,s){for(var c=!0,l=this.pdf.internal.scaleFactor,u=this.pdf.internal.pageSize.height,h=this.pdf.internal.f2,f=i*(Math.PI/180),d=o*(Math.PI/180),p=this.createArc(r,f,d,a),g=0;g<p.length;g++){var m=p[g];c&&0===g?this.pdf.internal.out([h((m.x1+e)*l),h((u-(m.y1+n))*l),"m",h((m.x2+e)*l),h((u-(m.y2+n))*l),h((m.x3+e)*l),h((u-(m.y3+n))*l),h((m.x4+e)*l),h((u-(m.y4+n))*l),"c"].join(" ")):this.pdf.internal.out([h((m.x2+e)*l),h((u-(m.y2+n))*l),h((m.x3+e)*l),h((u-(m.y3+n))*l),h((m.x4+e)*l),h((u-(m.y4+n))*l),"c"].join(" ")),t._lastPoint={x:e,y:n}}null!==s&&this.pdf.internal.out(this.pdf.internal.getStyle(s))},n.internal.arc2=function(t,e,n,r,i,o,a,s,c){var l=e,u=n;c?(this.arc(t,l,u,r,i,o,a,null),this.pdf.clip_fixed()):this.arc(t,l,u,r,i,o,a,s)},n.internal.move2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.height,o=this.pdf.internal.f2;this.pdf.internal.out([o(e*r),o((i-n)*r),"m"].join(" ")),t._lastPoint={x:e,y:n}},n.internal.line2=function(t,e,n){var r=this.pdf.internal.scaleFactor,i=this.pdf.internal.pageSize.height,o=this.pdf.internal.f2,a={x:e,y:n};this.pdf.internal.out([o(a.x*r),o((i-a.y)*r),"l"].join(" ")),t._lastPoint=a},n.internal.createArc=function(t,e,n,r){var i=1e-5,o=2*Math.PI,a=Math.PI/2,s=e;for((s<o||s>o)&&(s%=o),s<0&&(s=o+s);e>n;)e-=o;var c=Math.abs(n-e);c<o&&r&&(c=o-c);for(var l=[],u=r?-1:1,h=s;c>i;){var f=u*Math.min(c,a),d=h+f;l.push(this.createSmallArc(t,h,d)),c-=Math.abs(d-h),h=d}return l},n.internal.getCurrentPage=function(){return this.pdf.internal.pages[this.pdf.internal.getCurrentPageInfo().pageNumber]},n.internal.createSmallArc=function(t,e,n){var r=(n-e)/2,i=t*Math.cos(r),o=t*Math.sin(r),a=i,s=-o,c=a*a+s*s,l=c+a*i+s*o,u=4/3*(Math.sqrt(2*c*l)-l)/(a*o-s*i),h=a-u*s,f=s+u*a,d=h,p=-f,g=r+e,m=Math.cos(g),w=Math.sin(g);return{x1:t*Math.cos(e),y1:t*Math.sin(e),x2:h*m-f*w,y2:h*w+f*m,x3:d*m-p*w,y3:d*w+p*m,x4:t*Math.cos(n),y4:t*Math.sin(n)}},this}(e.API),/** @preserve + * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser + * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com + * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria + * 2014 Diego Casorran, https://github.com/diegocr + * 2014 Daniel Husar, https://github.com/danielhusar + * 2014 Wolfgang Gassler, https://github.com/woolfg + * 2014 Steven Spungin, https://github.com/flamenco + * + * + * ==================================================================== + */ +function(e){var n,r,i,a,s,c,l,u,h,f,d,p,g,m,w,y,v,b,x,k;n=function(){function t(){}return function(e){return t.prototype=e,new t}}(),f=function(t){var e,n,r,i,o,a,s;for(n=0,r=t.length,e=void 0,i=!1,a=!1;!i&&n!==r;)e=t[n]=t[n].trimLeft(),e&&(i=!0),n++;for(n=r-1;r&&!a&&n!==-1;)e=t[n]=t[n].trimRight(),e&&(a=!0),n--;for(o=/\s+$/g,s=!0,n=0;n!==r;)"\u2028"!=t[n]&&(e=t[n].replace(/\s+/g," "),s&&(e=e.trimLeft()),e&&(s=o.test(e)),t[n]=e),n++;return t},d=function(t,e,n,r){return this.pdf=t,this.x=e,this.y=n,this.settings=r,this.watchFunctions=[],this.init(),this},p=function(t){var e,n,r;for(e=void 0,r=t.split(","),n=r.shift();!e&&n;)e=i[n.trim().toLowerCase()],n=r.shift();return e},g=function(t){t="auto"===t?"0px":t,t.indexOf("em")>-1&&!isNaN(Number(t.replace("em","")))&&(t=18.719*Number(t.replace("em",""))+"px"),t.indexOf("pt")>-1&&!isNaN(Number(t.replace("pt","")))&&(t=1.333*Number(t.replace("pt",""))+"px");var e,n,r;return n=void 0,e=16,(r=m[t])?r:(r={"xx-small":9,"x-small":11,small:13,medium:16,large:19,"x-large":23,"xx-large":28,auto:0}[{css_line_height_string:t}],r!==n?m[t]=r/e:(r=parseFloat(t))?m[t]=r/e:(r=t.match(/([\d\.]+)(px)/),3===r.length?m[t]=parseFloat(r[1])/e:m[t]=1))},h=function(t){var e,n,r;return r=function(t){var e;return e=function(t){return document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(t,null):t.currentStyle?t.currentStyle:t.style}(t),function(t){return t=t.replace(/-\D/g,function(t){return t.charAt(1).toUpperCase()}),e[t]}}(t),e={},n=void 0,e["font-family"]=p(r("font-family"))||"times",e["font-style"]=a[r("font-style")]||"normal",e["text-align"]=s[r("text-align")]||"left",n=c[r("font-weight")]||"normal","bold"===n&&("normal"===e["font-style"]?e["font-style"]=n:e["font-style"]=n+e["font-style"]),e["font-size"]=g(r("font-size"))||1,e["line-height"]=g(r("line-height"))||1,e.display="inline"===r("display")?"inline":"block",n="block"===e.display,e["margin-top"]=n&&g(r("margin-top"))||0,e["margin-bottom"]=n&&g(r("margin-bottom"))||0,e["padding-top"]=n&&g(r("padding-top"))||0,e["padding-bottom"]=n&&g(r("padding-bottom"))||0,e["margin-left"]=n&&g(r("margin-left"))||0,e["margin-right"]=n&&g(r("margin-right"))||0,e["padding-left"]=n&&g(r("padding-left"))||0,e["padding-right"]=n&&g(r("padding-right"))||0,e["page-break-before"]=r("page-break-before")||"auto",e.float=l[r("cssFloat")]||"none",e.clear=u[r("clear")]||"none",e.color=r("color"),e},w=function(t,e,n){var r,i,o,a,s;if(o=!1,i=void 0,a=void 0,s=void 0,r=n["#"+t.id])if("function"==typeof r)o=r(t,e);else for(i=0,a=r.length;!o&&i!==a;)o=r[i](t,e),i++;if(r=n[t.nodeName],!o&&r)if("function"==typeof r)o=r(t,e);else for(i=0,a=r.length;!o&&i!==a;)o=r[i](t,e),i++;return o},k=function(t,e){var n,r,i,o,a,s,c,l,u,h;for(n=[],r=[],i=0,h=t.rows[0].cells.length,l=t.clientWidth;i<h;)u=t.rows[0].cells[i],r[i]={name:u.textContent.toLowerCase().replace(/\s+/g,""),prompt:u.textContent.replace(/\r?\n/g,""),width:u.clientWidth/l*e.pdf.internal.pageSize.width},i++;for(i=1;i<t.rows.length;){for(s=t.rows[i],a={},o=0;o<s.cells.length;)a[r[o].name]=s.cells[o].textContent.replace(/\r?\n/g,""),o++;n.push(a),i++}return c={rows:n,headers:r}};var _={SCRIPT:1,STYLE:1,NOSCRIPT:1,OBJECT:1,EMBED:1,SELECT:1},C=1;r=function(e,i,o){var a,s,c,l,u,f,d,p,g;for(s=e.childNodes,a=void 0,c=h(e),u="block"===c.display,u&&(i.setBlockBoundary(),i.setBlockStyle(c)),d=19.049976/25.4,l=0,f=s.length;l<f;){if(a=s[l],"object"===("undefined"==typeof a?"undefined":t(a))){if(i.executeWatchFunctions(a),1===a.nodeType&&"HEADER"===a.nodeName){var m=a,v=i.pdf.margins_doc.top;i.pdf.internal.events.subscribe("addPage",function(t){i.y=v,r(m,i,o),i.pdf.margins_doc.top=i.y+10,i.y+=10},!1)}if(8===a.nodeType&&"#comment"===a.nodeName)~a.textContent.indexOf("ADD_PAGE")&&(i.pdf.addPage(),i.y=i.pdf.margins_doc.top);else if(1!==a.nodeType||_[a.nodeName])if(3===a.nodeType){var b=a.nodeValue;if(a.nodeValue&&"LI"===a.parentNode.nodeName)if("OL"===a.parentNode.parentNode.nodeName)b=C++ +". "+b;else{var x=c["font-size"],A=(3-.75*x)*i.pdf.internal.scaleFactor,S=.75*x*i.pdf.internal.scaleFactor,q=1.74*x/i.pdf.internal.scaleFactor;g=function(t,e){this.pdf.circle(t+A,e+S,q,"FD")}}16&a.ownerDocument.body.compareDocumentPosition(a)&&i.addText(b,c)}else"string"==typeof a&&i.addText(a,c);else{var T;if("IMG"===a.nodeName){var P=a.getAttribute("src");T=y[i.pdf.sHashCode(P)||P]}if(T){i.pdf.internal.pageSize.height-i.pdf.margins_doc.bottom<i.y+a.height&&i.y>i.pdf.margins_doc.top&&(i.pdf.addPage(),i.y=i.pdf.margins_doc.top,i.executeWatchFunctions(a));var I=h(a),E=i.x,O=12/i.pdf.internal.scaleFactor,F=(I["margin-left"]+I["padding-left"])*O,R=(I["margin-right"]+I["padding-right"])*O,B=(I["margin-top"]+I["padding-top"])*O,D=(I["margin-bottom"]+I["padding-bottom"])*O;E+=void 0!==I.float&&"right"===I.float?i.settings.width-a.width-R:F,i.pdf.addImage(T,E,i.y+B,a.width,a.height),T=void 0,"right"===I.float||"left"===I.float?(i.watchFunctions.push(function(t,e,n,r){return i.y>=e?(i.x+=t,i.settings.width+=n,!0):!!(r&&1===r.nodeType&&!_[r.nodeName]&&i.x+r.width>i.pdf.margins_doc.left+i.pdf.margins_doc.width)&&(i.x+=t,i.y=e,i.settings.width+=n,!0)}.bind(this,"left"===I.float?-a.width-F-R:0,i.y+a.height+B+D,a.width)),i.watchFunctions.push(function(t,e,n){return!(i.y<t&&e===i.pdf.internal.getNumberOfPages())||1===n.nodeType&&"both"===h(n).clear&&(i.y=t,!0)}.bind(this,i.y+a.height,i.pdf.internal.getNumberOfPages())),i.settings.width-=a.width+F+R,"left"===I.float&&(i.x+=a.width+F+R)):i.y+=a.height+B+D}else if("TABLE"===a.nodeName)p=k(a,i),i.y+=10,i.pdf.table(i.x,i.y,p.rows,p.headers,{autoSize:!1,printHeaders:o.printHeaders,margins:i.pdf.margins_doc,css:h(a)}),i.y=i.pdf.lastCellPos.y+i.pdf.lastCellPos.h+20;else if("OL"===a.nodeName||"UL"===a.nodeName)C=1,w(a,i,o)||r(a,i,o),i.y+=10;else if("LI"===a.nodeName){var j=i.x;i.x+=20/i.pdf.internal.scaleFactor,i.y+=3,w(a,i,o)||r(a,i,o),i.x=j}else"BR"===a.nodeName?(i.y+=c["font-size"]*i.pdf.internal.scaleFactor,i.addText("\u2028",n(c))):w(a,i,o)||r(a,i,o)}}l++}if(o.outY=i.y,u)return i.setBlockBoundary(g)},y={},v=function(t,e,n,r){function i(){e.pdf.internal.events.publish("imagesLoaded"),r(a)}function o(t,n,r){if(t){var o=new Image;a=++l,o.crossOrigin="",o.onerror=o.onload=function(){if(o.complete&&(0===o.src.indexOf("data:image/")&&(o.width=n||o.width||0,o.height=r||o.height||0),o.width+o.height)){var a=e.pdf.sHashCode(t)||t;y[a]=y[a]||o}--l||i()},o.src=t}}for(var a,s=t.getElementsByTagName("img"),c=s.length,l=0;c--;)o(s[c].getAttribute("src"),s[c].width,s[c].height);return l||i()},b=function(t,e,n){var i=t.getElementsByTagName("footer");if(i.length>0){i=i[0];var o=e.pdf.internal.write,a=e.y;e.pdf.internal.write=function(){},r(i,e,n);var s=Math.ceil(e.y-a)+5;e.y=a,e.pdf.internal.write=o,e.pdf.margins_doc.bottom+=s;for(var c=function(t){var o=void 0!==t?t.pageNumber:1,a=e.y;e.y=e.pdf.internal.pageSize.height-e.pdf.margins_doc.bottom,e.pdf.margins_doc.bottom-=s;for(var c=i.getElementsByTagName("span"),l=0;l<c.length;++l)(" "+c[l].className+" ").replace(/[\n\t]/g," ").indexOf(" pageCounter ")>-1&&(c[l].innerHTML=o),(" "+c[l].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")>-1&&(c[l].innerHTML="###jsPDFVarTotalPages###");r(i,e,n),e.pdf.margins_doc.bottom+=s,e.y=a},l=i.getElementsByTagName("span"),u=0;u<l.length;++u)(" "+l[u].className+" ").replace(/[\n\t]/g," ").indexOf(" totalPages ")>-1&&e.pdf.internal.events.subscribe("htmlRenderingFinished",e.pdf.putTotalPages.bind(e.pdf,"###jsPDFVarTotalPages###"),!0);e.pdf.internal.events.subscribe("addPage",c,!1),c(),_.FOOTER=1}},x=function(t,e,n,i,o,a){if(!e)return!1;"string"==typeof e||e.parentNode||(e=""+e.innerHTML),"string"==typeof e&&(e=function(t){var e,n,r,i;return r="jsPDFhtmlText"+Date.now().toString()+(1e3*Math.random()).toFixed(0),i="position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;",n=document.createElement("div"),n.style.cssText=i,n.innerHTML='<iframe style="height:1px;width:1px" name="'+r+'" />',document.body.appendChild(n),e=window.frames[r],e.document.open(),e.document.writeln(t),e.document.close(),e.document.body}(e.replace(/<\/?script[^>]*?>/gi,"")));var s,c=new d(t,n,i,o);return v.call(this,e,c,o.elementHandlers,function(t){b(e,c,o.elementHandlers),r(e,c,o.elementHandlers),c.pdf.internal.events.publish("htmlRenderingFinished"),s=c.dispose(),"function"==typeof a?a(s):t&&console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!")}),s||{x:c.x,y:c.y}},d.prototype.init=function(){return this.paragraph={text:[],style:[]},this.pdf.internal.write("q")},d.prototype.dispose=function(){return this.pdf.internal.write("Q"),{x:this.x,y:this.y,ready:!0}},d.prototype.executeWatchFunctions=function(t){var e=!1,n=[];if(this.watchFunctions.length>0){for(var r=0;r<this.watchFunctions.length;++r)this.watchFunctions[r](t)===!0?e=!0:n.push(this.watchFunctions[r]);this.watchFunctions=n}return e},d.prototype.splitFragmentsIntoLines=function(t,e){var r,i,o,a,s,c,l,u,h,f,d,p,g,m,w;for(i=12,d=this.pdf.internal.scaleFactor,s={},o=void 0,f=void 0,a=void 0,c=void 0,w=void 0,h=void 0,u=void 0,l=void 0,p=[],g=[p],r=0,m=this.settings.width;t.length;)if(c=t.shift(),w=e.shift(),c)if(o=w["font-family"],f=w["font-style"],a=s[o+f],a||(a=this.pdf.internal.getFont(o,f).metadata.Unicode,s[o+f]=a),h={widths:a.widths,kerning:a.kerning,fontSize:w["font-size"]*i,textIndent:r},u=this.pdf.getStringUnitWidth(c,h)*h.fontSize/d,"\u2028"==c)p=[],g.push(p);else if(r+u>m){for(l=this.pdf.splitTextToSize(c,m,h),p.push([l.shift(),w]);l.length;)p=[[l.shift(),w]],g.push(p);r=this.pdf.getStringUnitWidth(p[0][0],h)*h.fontSize/d}else p.push([c,w]),r+=u;if(void 0!==w["text-align"]&&("center"===w["text-align"]||"right"===w["text-align"]||"justify"===w["text-align"]))for(var y=0;y<g.length;++y){var v=this.pdf.getStringUnitWidth(g[y][0][0],h)*h.fontSize/d;y>0&&(g[y][0][1]=n(g[y][0][1]));var b=m-v;if("right"===w["text-align"])g[y][0][1]["margin-left"]=b;else if("center"===w["text-align"])g[y][0][1]["margin-left"]=b/2;else if("justify"===w["text-align"]){var x=g[y][0][0].split(" ").length-1;g[y][0][1]["word-spacing"]=b/x,y===g.length-1&&(g[y][0][1]["word-spacing"]=0)}}return g},d.prototype.RenderTextFragment=function(t,e){var n,r,i;i=0,n=12,this.pdf.internal.pageSize.height-this.pdf.margins_doc.bottom<this.y+this.pdf.internal.getFontSize()&&(this.pdf.internal.write("ET","Q"),this.pdf.addPage(),this.y=this.pdf.margins_doc.top,this.pdf.internal.write("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),e.color,"Td"),i=Math.max(i,e["line-height"],e["font-size"]),this.pdf.internal.write(0,(-1*n*i).toFixed(2),"Td")),r=this.pdf.internal.getFont(e["font-family"],e["font-style"]);var o=this.getPdfColor(e.color);o!==this.lastTextColor&&(this.pdf.internal.write(o),this.lastTextColor=o),void 0!==e["word-spacing"]&&e["word-spacing"]>0&&this.pdf.internal.write(e["word-spacing"].toFixed(2),"Tw"),this.pdf.internal.write("/"+r.id,(n*e["font-size"]).toFixed(2),"Tf","("+this.pdf.internal.pdfEscape(t)+") Tj"),void 0!==e["word-spacing"]&&this.pdf.internal.write(0,"Tw")},d.prototype.getPdfColor=function(t){var e,n,r,i,a=/rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/,s=a.exec(t);if(null!=s?(n=parseInt(s[1]),r=parseInt(s[2]),i=parseInt(s[3])):("#"!=t.charAt(0)&&(t=o.colorNameToHex(t),t||(t="#000000")),n=t.substring(1,3),n=parseInt(n,16),r=t.substring(3,5),r=parseInt(r,16),i=t.substring(5,7),i=parseInt(i,16)),"string"==typeof n&&/^#[0-9A-Fa-f]{6}$/.test(n)){var c=parseInt(n.substr(1),16);n=c>>16&255,r=c>>8&255,i=255&c}var l=this.f3;return e=0===n&&0===r&&0===i||"undefined"==typeof r?l(n/255)+" g":[l(n/255),l(r/255),l(i/255),"rg"].join(" ")},d.prototype.f3=function(t){return t.toFixed(3)},d.prototype.renderParagraph=function(t){var e,n,r,i,o,a,s,c,l,u,h,d,p,g,m;if(i=f(this.paragraph.text),g=this.paragraph.style,e=this.paragraph.blockstyle,p=this.paragraph.priorblockstyle||{},this.paragraph={text:[],style:[],blockstyle:{},priorblockstyle:e},i.join("").trim()){c=this.splitFragmentsIntoLines(i,g),s=void 0,l=void 0,n=12,r=n/this.pdf.internal.scaleFactor,this.priorMarginBottom=this.priorMarginBottom||0,d=(Math.max((e["margin-top"]||0)-this.priorMarginBottom,0)+(e["padding-top"]||0))*r,h=((e["margin-bottom"]||0)+(e["padding-bottom"]||0))*r,this.priorMarginBottom=e["margin-bottom"]||0,"always"===e["page-break-before"]&&(this.pdf.addPage(),this.y=0,d=((e["margin-top"]||0)+(e["padding-top"]||0))*r),u=this.pdf.internal.write,o=void 0,a=void 0,this.y+=d,u("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td");for(var w=0;c.length;){for(s=c.shift(),l=0,o=0,a=s.length;o!==a;)s[o][0].trim()&&(l=Math.max(l,s[o][1]["line-height"],s[o][1]["font-size"]),m=7*s[o][1]["font-size"]),o++;var y=0,v=0;void 0!==s[0][1]["margin-left"]&&s[0][1]["margin-left"]>0&&(v=this.pdf.internal.getCoordinateString(s[0][1]["margin-left"]),y=v-w,w=v);var b=Math.max(e["margin-left"]||0,0)*r;for(u(y+b,(-1*n*l).toFixed(2),"Td"),o=0,a=s.length;o!==a;)s[o][0]&&this.RenderTextFragment(s[o][0],s[o][1]),o++;if(this.y+=l*r,this.executeWatchFunctions(s[0][1])&&c.length>0){var x=[],k=[];c.forEach(function(t){for(var e=0,n=t.length;e!==n;)t[e][0]&&(x.push(t[e][0]+" "),k.push(t[e][1])),++e}),c=this.splitFragmentsIntoLines(f(x),k),u("ET","Q"),u("q","BT 0 g",this.pdf.internal.getCoordinateString(this.x),this.pdf.internal.getVerticalCoordinateString(this.y),"Td")}}return t&&"function"==typeof t&&t.call(this,this.x-9,this.y-m/2),u("ET","Q"),this.y+=h}},d.prototype.setBlockBoundary=function(t){return this.renderParagraph(t)},d.prototype.setBlockStyle=function(t){return this.paragraph.blockstyle=t},d.prototype.addText=function(t,e){return this.paragraph.text.push(t),this.paragraph.style.push(e)},i={helvetica:"helvetica","sans-serif":"helvetica","times new roman":"times",serif:"times",times:"times",monospace:"courier",courier:"courier"},c={100:"normal",200:"normal",300:"normal",400:"normal",500:"bold",600:"bold",700:"bold",800:"bold",900:"bold",normal:"normal",bold:"bold",bolder:"bold",lighter:"normal"},a={normal:"normal",italic:"italic",oblique:"italic"},s={left:"left",right:"right",center:"center",justify:"justify"},l={none:"none",right:"right",left:"left"},u={none:"none",both:"both"},m={normal:1},e.fromHTML=function(t,e,n,r,i,o){return this.margins_doc=o||{top:0,bottom:0},r||(r={}),r.elementHandlers||(r.elementHandlers={}),x(this,t,isNaN(e)?4:e,isNaN(n)?4:n,r,i)}}(e.API),/** ==================================================================== + * jsPDF JavaScript plugin + * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com + * + * + * ==================================================================== + */ +function(t){var e,n,r;t.addJS=function(t){return r=t,this.internal.events.subscribe("postPutResources",function(t){e=this.internal.newObject(),this.internal.write("<< /Names [(EmbeddedJS) "+(e+1)+" 0 R] >>","endobj"),n=this.internal.newObject(),this.internal.write("<< /S /JavaScript /JS (",r,") >>","endobj")}),this.internal.events.subscribe("putCatalog",function(){void 0!==e&&void 0!==n&&this.internal.write("/Names <</JavaScript "+e+" 0 R>>")}),this}}(e.API),/** + * jsPDF Outline PlugIn + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +function(t){return t.events.push(["postPutResources",function(){var t=this,e=/^(\d+) 0 obj$/;if(this.outline.root.children.length>0)for(var n=t.outline.render().split(/\r\n/),r=0;r<n.length;r++){var i=n[r],o=e.exec(i);if(null!=o){var a=o[1];t.internal.newObjectDeferredBegin(a)}t.internal.write(i)}if(this.outline.createNamedDestinations){for(var s=this.internal.pages.length,c=[],r=0;r<s;r++){var l=t.internal.newObject();c.push(l);var u=t.internal.getPageInfo(r+1);t.internal.write("<< /D["+u.objId+" 0 R /XYZ null null null]>> endobj")}var h=t.internal.newObject();t.internal.write("<< /Names [ ");for(var r=0;r<c.length;r++)t.internal.write("(page_"+(r+1)+")"+c[r]+" 0 R");t.internal.write(" ] >>","endobj");t.internal.newObject();t.internal.write("<< /Dests "+h+" 0 R"),t.internal.write(">>","endobj")}}]),t.events.push(["putCatalog",function(){var t=this;t.outline.root.children.length>0&&(t.internal.write("/Outlines",this.outline.makeRef(this.outline.root)),this.outline.createNamedDestinations&&t.internal.write("/Names "+namesOid+" 0 R"))}]),t.events.push(["initialized",function(){var t=this;t.outline={createNamedDestinations:!1,root:{children:[]}};t.outline.add=function(t,e,n){var r={title:e,options:n,children:[]};return null==t&&(t=this.root),t.children.push(r),r},t.outline.render=function(){return this.ctx={},this.ctx.val="",this.ctx.pdf=t,this.genIds_r(this.root),this.renderRoot(this.root),this.renderItems(this.root),this.ctx.val},t.outline.genIds_r=function(e){e.id=t.internal.newObjectDeferred();for(var n=0;n<e.children.length;n++)this.genIds_r(e.children[n])},t.outline.renderRoot=function(t){this.objStart(t),this.line("/Type /Outlines"),t.children.length>0&&(this.line("/First "+this.makeRef(t.children[0])),this.line("/Last "+this.makeRef(t.children[t.children.length-1]))),this.line("/Count "+this.count_r({count:0},t)),this.objEnd()},t.outline.renderItems=function(e){for(var n=0;n<e.children.length;n++){var r=e.children[n];this.objStart(r),this.line("/Title "+this.makeString(r.title)),this.line("/Parent "+this.makeRef(e)),n>0&&this.line("/Prev "+this.makeRef(e.children[n-1])),n<e.children.length-1&&this.line("/Next "+this.makeRef(e.children[n+1])),r.children.length>0&&(this.line("/First "+this.makeRef(r.children[0])),this.line("/Last "+this.makeRef(r.children[r.children.length-1])));var i=this.count=this.count_r({count:0},r);if(i>0&&this.line("/Count "+i),r.options&&r.options.pageNumber){var o=t.internal.getPageInfo(r.options.pageNumber);this.line("/Dest ["+o.objId+" 0 R /XYZ 0 "+this.ctx.pdf.internal.pageSize.height+" 0]")}this.objEnd()}for(var n=0;n<e.children.length;n++){var r=e.children[n];this.renderItems(r)}},t.outline.line=function(t){this.ctx.val+=t+"\r\n"},t.outline.makeRef=function(t){return t.id+" 0 R"},t.outline.makeString=function(e){return"("+t.internal.pdfEscape(e)+")"},t.outline.objStart=function(t){this.ctx.val+="\r\n"+t.id+" 0 obj\r\n<<\r\n"},t.outline.objEnd=function(t){this.ctx.val+=">> \r\nendobj\r\n"},t.outline.count_r=function(t,e){for(var n=0;n<e.children.length;n++)t.count++,this.count_r(t,e.children[n]);return t.count}}]),this}(e.API),/**@preserve + * ==================================================================== + * jsPDF PNG PlugIn + * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb + * + * + * ==================================================================== + */ +function(t){var e=function(){return"function"!=typeof PNG||"function"!=typeof c},n=function(e){return e!==t.image_compression.NONE&&r()},r=function(){var t="function"==typeof a;if(!t)throw new Error("requires deflate.js for compression");return t},i=function(e,n,r,i){var c=5,u=f;switch(i){case t.image_compression.FAST:c=3,u=h;break;case t.image_compression.MEDIUM:c=6,u=d;break;case t.image_compression.SLOW:c=9,u=p}e=l(e,n,r,u);var g=new Uint8Array(o(c)),m=s(e),w=new a(c),y=w.append(e),v=w.flush(),b=g.length+y.length+v.length,x=new Uint8Array(b+4);return x.set(g),x.set(y,g.length),x.set(v,g.length+y.length),x[b++]=m>>>24&255,x[b++]=m>>>16&255,x[b++]=m>>>8&255,x[b++]=255&m,t.arrayBufferToBinaryString(x)},o=function(t,e){var n=8,r=Math.LOG2E*Math.log(32768)-8,i=r<<4|n,o=i<<8,a=Math.min(3,(e-1&255)>>1);return o|=a<<6,o|=0,o+=31-o%31,[i,255&o&255]},s=function(t,e){for(var n,r=1,i=65535&r,o=r>>>16&65535,a=t.length,s=0;a>0;){n=a>e?e:a,a-=n;do i+=t[s++],o+=i;while(--n);i%=65521,o%=65521}return(o<<16|i)>>>0},l=function(t,e,n,r){for(var i,o,a,s=t.length/e,c=new Uint8Array(t.length+s),l=m(),u=0;u<s;u++){if(a=u*e,i=t.subarray(a,a+e),r)c.set(r(i,n,o),a+u);else{for(var h=0,f=l.length,d=[];h<f;h++)d[h]=l[h](i,n,o);var p=w(d.concat());c.set(d[p],a+u)}o=i}return c},u=function(t,e,n){var r=Array.apply([],t);return r.unshift(0),r},h=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=1;o<a;o++)r=t[o-e]||0,i[o+1]=t[o]-r+256&255;return i},f=function(t,e,n){var r,i=[],o=0,a=t.length;for(i[0]=2;o<a;o++)r=n&&n[o]||0,i[o+1]=t[o]-r+256&255;return i},d=function(t,e,n){var r,i,o=[],a=0,s=t.length;for(o[0]=3;a<s;a++)r=t[a-e]||0,i=n&&n[a]||0,o[a+1]=t[a]+256-(r+i>>>1)&255;return o},p=function(t,e,n){var r,i,o,a,s=[],c=0,l=t.length;for(s[0]=4;c<l;c++)r=t[c-e]||0,i=n&&n[c]||0,o=n&&n[c-e]||0,a=g(r,i,o),s[c+1]=t[c]-a+256&255;return s},g=function(t,e,n){var r=t+e-n,i=Math.abs(r-t),o=Math.abs(r-e),a=Math.abs(r-n);return i<=o&&i<=a?t:o<=a?e:n},m=function(){return[u,h,f,d,p]},w=function(t){for(var e,n,r,i=0,o=t.length;i<o;)e=y(t[i].slice(1)),(e<n||!n)&&(n=e,r=i),i++;return r},y=function(t){for(var e=0,n=t.length,r=0;e<n;)r+=Math.abs(t[e++]);return r},v=function(e){var n;switch(e){case t.image_compression.FAST:n=11;break;case t.image_compression.MEDIUM:n=13;break;case t.image_compression.SLOW:n=14;break;default:n=12}return n};t.processPNG=function(t,r,o,a,s){var c,l,u,h,f,d,p=this.color_spaces.DEVICE_RGB,g=this.decode.FLATE_DECODE,m=8;if(this.isArrayBuffer(t)&&(t=new Uint8Array(t)),this.isArrayBufferView(t)){if(e())throw new Error("PNG support requires png.js and zlib.js");if(c=new PNG(t),t=c.imgData,m=c.bits,p=c.colorSpace,h=c.colors,[4,6].indexOf(c.colorType)!==-1){if(8===c.bits)for(var w,y,b=32==c.pixelBitlength?new Uint32Array(c.decodePixels().buffer):16==c.pixelBitlength?new Uint16Array(c.decodePixels().buffer):new Uint8Array(c.decodePixels().buffer),x=b.length,k=new Uint8Array(x*c.colors),_=new Uint8Array(x),C=c.pixelBitlength-c.bits,A=0,S=0;A<x;A++){for(w=b[A],y=0;y<C;)k[S++]=w>>>y&255,y+=c.bits;_[A]=w>>>y&255}if(16===c.bits){for(var w,b=new Uint32Array(c.decodePixels().buffer),x=b.length,k=new Uint8Array(x*(32/c.pixelBitlength)*c.colors),_=new Uint8Array(x*(32/c.pixelBitlength)),q=c.colors>1,A=0,S=0,T=0;A<x;)w=b[A++],k[S++]=w>>>0&255,q&&(k[S++]=w>>>16&255,w=b[A++],k[S++]=w>>>0&255),_[T++]=w>>>16&255;m=8}n(a)?(t=i(k,c.width*c.colors,c.colors,a),d=i(_,c.width,1,a)):(t=k,d=_,g=null)}if(3===c.colorType&&(p=this.color_spaces.INDEXED,f=c.palette,c.transparency.indexed)){for(var P=c.transparency.indexed,I=0,A=0,x=P.length;A<x;++A)I+=P[A];if(I/=255,I===x-1&&P.indexOf(0)!==-1)u=[P.indexOf(0)];else if(I!==x){for(var b=c.decodePixels(),_=new Uint8Array(b.length),A=0,x=b.length;A<x;A++)_[A]=P[b[A]];d=i(_,c.width,1)}}var E=v(a);return l=g===this.decode.FLATE_DECODE?"/Predictor "+E+" /Colors "+h+" /BitsPerComponent "+m+" /Columns "+c.width:"/Colors "+h+" /BitsPerComponent "+m+" /Columns "+c.width,(this.isArrayBuffer(t)||this.isArrayBufferView(t))&&(t=this.arrayBufferToBinaryString(t)),(d&&this.isArrayBuffer(d)||this.isArrayBufferView(d))&&(d=this.arrayBufferToBinaryString(d)),this.createImageInfo(t,c.width,c.height,p,m,g,r,o,l,u,f,d,E)}throw new Error("Unsupported PNG image data, try using JPEG instead.")}}(e.API),function(t){t.autoPrint=function(){var t;return this.internal.events.subscribe("postPutResources",function(){t=this.internal.newObject(),this.internal.write("<< /S/Named /Type/Action /N/Print >>","endobj")}),this.internal.events.subscribe("putCatalog",function(){this.internal.write("/OpenAction "+t+" 0 R")}),this}}(e.API),/** @preserve + * jsPDF split_text_to_size plugin - MIT license. + * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com + * 2014 Diego Casorran, https://github.com/diegocr + */ +function(t){var e=t.getCharWidthsArray=function(t,e){e||(e={});var n,r,i,o=e.widths?e.widths:this.internal.getFont().metadata.Unicode.widths,a=o.fof?o.fof:1,s=e.kerning?e.kerning:this.internal.getFont().metadata.Unicode.kerning,c=s.fof?s.fof:1,l=0,u=o[0]||a,h=[];for(n=0,r=t.length;n<r;n++)i=t.charCodeAt(n),h.push((o[i]||u)/a+(s[i]&&s[i][l]||0)/c),l=i;return h},n=function(t){for(var e=t.length,n=0;e;)e--,n+=t[e];return n},r=t.getStringUnitWidth=function(t,r){return n(e.call(this,t,r))},i=function(t,e,n,r){for(var i=[],o=0,a=t.length,s=0;o!==a&&s+e[o]<n;)s+=e[o],o++;i.push(t.slice(0,o));var c=o;for(s=0;o!==a;)s+e[o]>r&&(i.push(t.slice(c,o)),s=0,c=o),s+=e[o],o++;return c!==o&&i.push(t.slice(c,o)),i},o=function(t,o,a){a||(a={});var s,c,l,u,h,f,d=[],p=[d],g=a.textIndent||0,m=0,w=0,y=t.split(" "),v=e(" ",a)[0];if(f=a.lineIndent===-1?y[0].length+2:a.lineIndent||0){var b=Array(f).join(" "),x=[];y.map(function(t){t=t.split(/\s*\n/),t.length>1?x=x.concat(t.map(function(t,e){return(e&&t.length?"\n":"")+t})):x.push(t[0])}),y=x,f=r(b,a)}for(l=0,u=y.length;l<u;l++){var k=0;if(s=y[l],f&&"\n"==s[0]&&(s=s.substr(1),k=1),c=e(s,a),w=n(c),g+m+w>o||k){if(w>o){for(h=i(s,c,o-(g+m),o),d.push(h.shift()),d=[h.pop()];h.length;)p.push([h.shift()]);w=n(c.slice(s.length-d[0].length))}else d=[s];p.push(d),g=w+f,m=v}else d.push(s),g+=m+w,m=v}if(f)var _=function(t,e){return(e?b:"")+t.join(" ")};else var _=function(t){return t.join(" ")};return p.map(_)};t.splitTextToSize=function(t,e,n){n||(n={});var r,i=n.fontSize||this.internal.getFontSize(),a=function(t){var e={0:1},n={};if(t.widths&&t.kerning)return{widths:t.widths,kerning:t.kerning};var r=this.internal.getFont(t.fontName,t.fontStyle),i="Unicode";return r.metadata[i]?{widths:r.metadata[i].widths||e,kerning:r.metadata[i].kerning||n}:{widths:e,kerning:n}}.call(this,n);r=Array.isArray(t)?t:t.split(/\r?\n/);var s=1*this.internal.scaleFactor*e/i;a.textIndent=n.textIndent?1*n.textIndent*this.internal.scaleFactor/i:0,a.lineIndent=n.lineIndent;var c,l,u=[];for(c=0,l=r.length;c<l;c++)u=u.concat(o(r[c],s,a));return u}}(e.API),/** @preserve +jsPDF standard_fonts_metrics plugin +Copyright (c) 2012 Willow Systems Corporation, willow-systems.com +MIT license. +*/ +function(t){var e=function(t){for(var e="0123456789abcdef",n="klmnopqrstuvwxyz",r={},i=0;i<n.length;i++)r[n[i]]=e[i];var o,a,s,c,l,u={},h=1,f=u,d=[],p="",g="",m=t.length-1;for(i=1;i!=m;)l=t[i],i+=1,"'"==l?a?(c=a.join(""),a=o):a=[]:a?a.push(l):"{"==l?(d.push([f,c]),f={},c=o):"}"==l?(s=d.pop(),s[0][s[1]]=f,c=o,f=s[0]):"-"==l?h=-1:c===o?r.hasOwnProperty(l)?(p+=r[l],c=parseInt(p,16)*h,h=1,p=""):p+=l:r.hasOwnProperty(l)?(g+=r[l],f[c]=parseInt(g,16)*h,h=1,c=o,g=""):g+=l;return u},n={codePages:["WinAnsiEncoding"],WinAnsiEncoding:e("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")},r={Unicode:{Courier:n,"Courier-Bold":n,"Courier-BoldOblique":n,"Courier-Oblique":n,Helvetica:n,"Helvetica-Bold":n,"Helvetica-BoldOblique":n,"Helvetica-Oblique":n,"Times-Roman":n,"Times-Bold":n,"Times-BoldItalic":n,"Times-Italic":n}},i={Unicode:{"Courier-Oblique":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":e("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),"Helvetica-Bold":e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),Courier:e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":e("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),Helvetica:e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),"Helvetica-BoldOblique":e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),"Courier-Bold":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":e("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":e("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),"Helvetica-Oblique":e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")}};t.events.push(["addFont",function(t){var e,n,o,a="Unicode";e=i[a][t.PostScriptName],e&&(n=t.metadata[a]?t.metadata[a]:t.metadata[a]={},n.widths=e.widths,n.kerning=e.kerning),o=r[a][t.PostScriptName],o&&(n=t.metadata[a]?t.metadata[a]:t.metadata[a]={},n.encoding=o,o.codePages&&o.codePages.length&&(t.encoding=o.codePages[0]))}])}(e.API),/** @preserve +jsPDF SVG plugin +Copyright (c) 2012 Willow Systems Corporation, willow-systems.com +*/ +function(t){t.addSVG=function(t,e,n,r,i){function o(t,e){var n=e.createElement("style");n.type="text/css",n.styleSheet?n.styleSheet.cssText=t:n.appendChild(e.createTextNode(t)),e.getElementsByTagName("head")[0].appendChild(n)}function a(t){var e="childframe",n=t.createElement("iframe");return o(".jsPDF_sillysvg_iframe {display:none;position:absolute;}",t),n.name=e,n.setAttribute("width",0),n.setAttribute("height",0),n.setAttribute("frameborder","0"),n.setAttribute("scrolling","no"),n.setAttribute("seamless","seamless"),n.setAttribute("class","jsPDF_sillysvg_iframe"),t.body.appendChild(n),n}function s(t,e){var n=(e.contentWindow||e.contentDocument).document;return n.write(t),n.close(),n.getElementsByTagName("svg")[0]}function c(t){for(var e=parseFloat(t[1]),n=parseFloat(t[2]),r=[],i=3,o=t.length;i<o;)"c"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2]),parseFloat(t[i+3]),parseFloat(t[i+4]),parseFloat(t[i+5]),parseFloat(t[i+6])]),i+=7):"l"===t[i]?(r.push([parseFloat(t[i+1]),parseFloat(t[i+2])]),i+=3):i+=1;return[e,n,r]}var l;if(e===l||n===l)throw new Error("addSVG needs values for 'x' and 'y'");var u=a(document),h=s(t,u),f=[1,1],d=parseFloat(h.getAttribute("width")),p=parseFloat(h.getAttribute("height"));d&&p&&(r&&i?f=[r/d,i/p]:r?f=[r/d,r/d]:i&&(f=[i/p,i/p]));var g,m,w,y,v=h.childNodes;for(g=0,m=v.length;g<m;g++)w=v[g],w.tagName&&"PATH"===w.tagName.toUpperCase()&&(y=c(w.getAttribute("d").split(" ")),y[0]=y[0]*f[0]+e,y[1]=y[1]*f[1]+n,this.lines.call(this,y[2],y[0],y[1],f));return this}}(e.API),/** ==================================================================== + * jsPDF total_pages plugin + * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br + * + * + * ==================================================================== + */ +function(t){t.putTotalPages=function(t){for(var e=new RegExp(t,"g"),n=1;n<=this.internal.getNumberOfPages();n++)for(var r=0;r<this.internal.pages[n].length;r++)this.internal.pages[n][r]=this.internal.pages[n][r].replace(e,this.internal.getNumberOfPages());return this}}(e.API),/** ==================================================================== + * jsPDF XMP metadata plugin + * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi + * + * + * ==================================================================== + */ +function(t){var e="",n="",r="";t.addMetadata=function(t,i){return n=i||"http://jspdf.default.namespaceuri/",e=t,this.internal.events.subscribe("postPutResources",function(){if(e){var t='<x:xmpmeta xmlns:x="adobe:ns:meta/">',i='<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="'+n+'"><jspdf:metadata>',o="</jspdf:metadata></rdf:Description></rdf:RDF>",a="</x:xmpmeta>",s=unescape(encodeURIComponent(t)),c=unescape(encodeURIComponent(i)),l=unescape(encodeURIComponent(e)),u=unescape(encodeURIComponent(o)),h=unescape(encodeURIComponent(a)),f=c.length+l.length+u.length+s.length+h.length;r=this.internal.newObject(),this.internal.write("<< /Type /Metadata /Subtype /XML /Length "+f+" >>"),this.internal.write("stream"),this.internal.write(s+c+l+u+h),this.internal.write("endstream"),this.internal.write("endobj")}else r=""}),this.internal.events.subscribe("putCatalog",function(){r&&this.internal.write("/Metadata "+r+" 0 R")}),this}}(e.API),function(t){if(t.URL=t.URL||t.webkitURL,t.Blob&&t.URL)try{return void new Blob}catch(t){}var e=t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||function(t){var e=function(t){return Object.prototype.toString.call(t).match(/^\[object\s(.*)\]$/)[1]},n=function(){this.data=[]},r=function(t,e,n){this.data=t,this.size=t.length,this.type=e,this.encoding=n},i=n.prototype,o=r.prototype,a=t.FileReaderSync,s=function(t){this.code=this[this.name=t]},c="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),l=c.length,u=t.URL||t.webkitURL||t,h=u.createObjectURL,f=u.revokeObjectURL,d=u,p=t.btoa,g=t.atob,m=t.ArrayBuffer,w=t.Uint8Array,y=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(r.fake=o.fake=!0;l--;)s.prototype[c[l]]=l+1;return u.createObjectURL||(d=t.URL=function(t){var e,n=document.createElementNS("http://www.w3.org/1999/xhtml","a");return n.href=t,"origin"in n||("data:"===n.protocol.toLowerCase()?n.origin=null:(e=t.match(y),n.origin=e&&e[1])),n}),d.createObjectURL=function(t){var e,n=t.type;return null===n&&(n="application/octet-stream"),t instanceof r?(e="data:"+n,"base64"===t.encoding?e+";base64,"+t.data:"URI"===t.encoding?e+","+decodeURIComponent(t.data):p?e+";base64,"+p(t.data):e+","+encodeURIComponent(t.data)):h?h.call(u,t):void 0},d.revokeObjectURL=function(t){"data:"!==t.substring(0,5)&&f&&f.call(u,t)},i.append=function(t){var n=this.data;if(w&&(t instanceof m||t instanceof w)){for(var i="",o=new w(t),c=0,l=o.length;c<l;c++)i+=String.fromCharCode(o[c]);n.push(i)}else if("Blob"===e(t)||"File"===e(t)){if(!a)throw new s("NOT_READABLE_ERR");var u=new a;n.push(u.readAsBinaryString(t))}else t instanceof r?"base64"===t.encoding&&g?n.push(g(t.data)):"URI"===t.encoding?n.push(decodeURIComponent(t.data)):"raw"===t.encoding&&n.push(t.data):("string"!=typeof t&&(t+=""),n.push(unescape(encodeURIComponent(t))))},i.getBlob=function(t){return arguments.length||(t=null),new r(this.data.join(""),t,"raw")},i.toString=function(){return"[object BlobBuilder]"},o.slice=function(t,e,n){var i=arguments.length;return i<3&&(n=null),new r(this.data.slice(t,i>1?e:this.data.length),n,this.encoding)},o.toString=function(){return"[object Blob]"},o.close=function(){this.size=0,delete this.data},n}(t);t.Blob=function(t,n){var r=n?n.type||"":"",i=new e;if(t)for(var o=0,a=t.length;o<a;o++)Uint8Array&&t[o]instanceof Uint8Array?i.append(t[o].buffer):i.append(t[o]);var s=i.getBlob(r);return!s.slice&&s.webkitSlice&&(s.slice=s.webkitSlice),s};var n=Object.getPrototypeOf||function(t){return t.__proto__};t.Blob.prototype=n(new t.Blob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||(void 0).content||void 0);var i=i||function(t){if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var e=t.document,n=function(){return t.URL||t.webkitURL||t},r=e.createElementNS("http://www.w3.org/1999/xhtml","a"),i="download"in r,o=function(t){var e=new MouseEvent("click");t.dispatchEvent(e)},a=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),s=t.webkitRequestFileSystem,c=t.requestFileSystem||s||t.mozRequestFileSystem,l=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},u="application/octet-stream",h=0,f=500,d=function(e){var r=function(){"string"==typeof e?n().revokeObjectURL(e):e.remove()};t.chrome?r():setTimeout(r,f)},p=function(t,e,n){e=[].concat(e);for(var r=e.length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){l(t)}}},g=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t},m=function(e,l,f){f||(e=g(e));var m,w,y,v=this,b=e.type,x=!1,k=function(){p(v,"writestart progress write writeend".split(" "))},_=function(){if(w&&a&&"undefined"!=typeof FileReader){var r=new FileReader;return r.onloadend=function(){var t=r.result;w.location.href="data:attachment/file"+t.slice(t.search(/[,;]/)),v.readyState=v.DONE,k()},r.readAsDataURL(e),void(v.readyState=v.INIT)}if(!x&&m||(m=n().createObjectURL(e)),w)w.location.href=m;else{var i=t.open(m,"_blank");void 0==i&&a&&(t.location.href=m)}v.readyState=v.DONE,k(),d(m)},C=function(t){return function(){if(v.readyState!==v.DONE)return t.apply(this,arguments)}},A={create:!0,exclusive:!1};return v.readyState=v.INIT,l||(l="download"),i?(m=n().createObjectURL(e),void setTimeout(function(){r.href=m,r.download=l,o(r),k(),d(m),v.readyState=v.DONE})):(t.chrome&&b&&b!==u&&(y=e.slice||e.webkitSlice,e=y.call(e,0,e.size,u),x=!0),s&&"download"!==l&&(l+=".download"),(b===u||s)&&(w=t),c?(h+=e.size,void c(t.TEMPORARY,h,C(function(t){t.root.getDirectory("saved",A,C(function(t){var n=function(){t.getFile(l,A,C(function(t){t.createWriter(C(function(n){n.onwriteend=function(e){w.location.href=t.toURL(),v.readyState=v.DONE,p(v,"writeend",e),d(t)},n.onerror=function(){var t=n.error;t.code!==t.ABORT_ERR&&_()},"writestart progress write abort".split(" ").forEach(function(t){n["on"+t]=v["on"+t]}),n.write(e),v.abort=function(){n.abort(),v.readyState=v.DONE},v.readyState=v.WRITING}),_)}),_)};t.getFile(l,{create:!1},C(function(t){t.remove(),n()}),C(function(t){t.code===t.NOT_FOUND_ERR?n():_()}))}),_)}),_)):void _())},w=m.prototype,y=function(t,e,n){return new m(t,e,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return n||(t=g(t)),navigator.msSaveOrOpenBlob(t,e||"download")}:(w.abort=function(){var t=this;t.readyState=t.DONE,p(t,"abort")},w.readyState=w.INIT=0,w.WRITING=1,w.DONE=2,w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null,y)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||(void 0).content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=i:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return i}),/* + * Copyright (c) 2012 chick307 <chick307@gmail.com> + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +void function(t,e){"object"==typeof module?module.exports=e():"function"==typeof define?define(e):t.adler32cs=e()}(e,function(){var t="function"==typeof ArrayBuffer&&"function"==typeof Uint8Array,e=null,n=function(){if(!t)return function(){return!1};try{var n={};"function"==typeof n.Buffer&&(e=n.Buffer)}catch(t){}return function(t){return t instanceof ArrayBuffer||null!==e&&t instanceof e}}(),r=function(){return null!==e?function(t){return new e(t,"utf8").toString("binary")}:function(t){return unescape(encodeURIComponent(t))}}(),i=65521,o=function(t,e){for(var n=65535&t,r=t>>>16,o=0,a=e.length;o<a;o++)n=(n+(255&e.charCodeAt(o)))%i,r=(r+n)%i;return(r<<16|n)>>>0},a=function(t,e){for(var n=65535&t,r=t>>>16,o=0,a=e.length;o<a;o++)n=(n+e[o])%i,r=(r+n)%i;return(r<<16|n)>>>0},s={},c=s.Adler32=function(){var e=function(t){if(!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");if(!isFinite(t=null==t?1:+t))throw new Error("First arguments needs to be a finite number.");this.checksum=t>>>0},i=e.prototype={};return i.constructor=e,e.from=function(t){return t.prototype=i,t}(function(t){if(!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");if(null==t)throw new Error("First argument needs to be a string.");this.checksum=o(1,t.toString())}),e.fromUtf8=function(t){return t.prototype=i,t}(function(t){if(!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");if(null==t)throw new Error("First argument needs to be a string.");var n=r(t.toString());this.checksum=o(1,n)}),t&&(e.fromBuffer=function(t){return t.prototype=i,t}(function(t){if(!(this instanceof e))throw new TypeError("Constructor cannot called be as a function.");if(!n(t))throw new Error("First argument needs to be ArrayBuffer.");var r=new Uint8Array(t);return this.checksum=a(1,r)})),i.update=function(t){if(null==t)throw new Error("First argument needs to be a string.");return t=t.toString(),this.checksum=o(this.checksum,t)},i.updateUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=r(t.toString());return this.checksum=o(this.checksum,e)},t&&(i.updateBuffer=function(t){if(!n(t))throw new Error("First argument needs to be ArrayBuffer.");var e=new Uint8Array(t);return this.checksum=a(this.checksum,e)}),i.clone=function(){return new c(this.checksum)},e}();return s.from=function(t){if(null==t)throw new Error("First argument needs to be a string.");return o(1,t.toString())},s.fromUtf8=function(t){if(null==t)throw new Error("First argument needs to be a string.");var e=r(t.toString());return o(1,e)},t&&(s.fromBuffer=function(t){if(!n(t))throw new Error("First argument need to be ArrayBuffer.");var e=new Uint8Array(t);return a(1,e)}),s});/** + * CssColors + * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv + * + * Licensed under the MIT License. + * http://opensource.org/licenses/mit-license + */ +var o={};o._colorsTable={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},o.colorNameToHex=function(t){return t=t.toLowerCase(),"undefined"!=typeof this._colorsTable[t]&&this._colorsTable[t]};/* + Deflate.js - https://github.com/gildas-lormeau/zip.js + Copyright (c) 2013 Gildas Lormeau. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution. + + 3. The names of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, + INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +var a=function(t){function e(){function t(t){var e,n,i,o,a,c,l=r.dyn_tree,u=r.stat_desc.static_tree,h=r.stat_desc.extra_bits,f=r.stat_desc.extra_base,p=r.stat_desc.max_length,g=0;for(o=0;o<=s;o++)t.bl_count[o]=0;for(l[2*t.heap[t.heap_max]+1]=0,e=t.heap_max+1;e<d;e++)n=t.heap[e],o=l[2*l[2*n+1]+1]+1,o>p&&(o=p,g++),l[2*n+1]=o,n>r.max_code||(t.bl_count[o]++,a=0,n>=f&&(a=h[n-f]),c=l[2*n],t.opt_len+=c*(o+a),u&&(t.static_len+=c*(u[2*n+1]+a)));if(0!==g){do{for(o=p-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(n=t.bl_count[o];0!==n;)i=t.heap[--e],i>r.max_code||(l[2*i+1]!=o&&(t.opt_len+=(o-l[2*i+1])*l[2*i],l[2*i+1]=o),n--)}}function e(t,e){var n=0;do n|=1&t,t>>>=1,n<<=1;while(--e>0);return n>>>1}function n(t,n,r){var i,o,a,c=[],l=0;for(i=1;i<=s;i++)c[i]=l=l+r[i-1]<<1;for(o=0;o<=n;o++)a=t[2*o+1],0!==a&&(t[2*o]=e(c[a]++,a))}var r=this;r.build_tree=function(e){var i,o,a,s=r.dyn_tree,c=r.stat_desc.static_tree,l=r.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=d,i=0;i<l;i++)0!==s[2*i]?(e.heap[++e.heap_len]=u=i,e.depth[i]=0):s[2*i+1]=0;for(;e.heap_len<2;)a=e.heap[++e.heap_len]=u<2?++u:0,s[2*a]=1,e.depth[a]=0,e.opt_len--,c&&(e.static_len-=c[2*a+1]);for(r.max_code=u,i=Math.floor(e.heap_len/2);i>=1;i--)e.pqdownheap(s,i);a=l;do i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],e.pqdownheap(s,1),o=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=o,s[2*a]=s[2*i]+s[2*o],e.depth[a]=Math.max(e.depth[i],e.depth[o])+1,s[2*i+1]=s[2*o+1]=a,e.heap[1]=a++,e.pqdownheap(s,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],t(e),n(s,r.max_code,e.bl_count)}}function n(t,e,n,r,i){var o=this;o.static_tree=t,o.extra_bits=e,o.extra_base=n,o.elems=r,o.max_length=i}function r(t,e,n,r,i){var o=this;o.good_length=t,o.max_lazy=e,o.nice_length=n,o.max_chain=r,o.func=i}function i(t,e,n,r){var i=t[2*e],o=t[2*n];return i<o||i==o&&r[e]<=r[n]}function o(){function t(){var t;for(It=2*St,Ot[Rt-1]=0,t=0;t<Rt-1;t++)Ot[t]=0;Yt=L[Gt].max_lazy,Qt=L[Gt].good_length,Kt=L[Gt].nice_length,Vt=L[Gt].max_chain,Ut=0,zt=0,Wt=0,Nt=Xt=tt-1,Mt=0,Ft=0}function r(){var t;for(t=0;t<f;t++)$t[2*t]=0;for(t=0;t<c;t++)Zt[2*t]=0;for(t=0;t<l;t++)te[2*t]=0;$t[2*p]=1,ee.opt_len=ee.static_len=0,se=le=0}function o(){ne.dyn_tree=$t,ne.stat_desc=n.static_l_desc,re.dyn_tree=Zt,re.stat_desc=n.static_d_desc,ie.dyn_tree=te,ie.stat_desc=n.static_bl_desc,he=0,fe=0,ue=8,r()}function a(t,e){var n,r,i=-1,o=t[1],a=0,s=7,c=4;for(0===o&&(s=138,c=3),t[2*(e+1)+1]=65535,n=0;n<=e;n++)r=o,o=t[2*(n+1)+1],++a<s&&r==o||(a<c?te[2*r]+=a:0!==r?(r!=i&&te[2*r]++,te[2*m]++):a<=10?te[2*w]++:te[2*y]++,a=0,i=r,0===o?(s=138,c=3):r==o?(s=6,c=3):(s=7,c=4))}function s(){var t;for(a($t,ne.max_code),a(Zt,re.max_code),ie.build_tree(ee),t=l-1;t>=3&&0===te[2*e.bl_order[t]+1];t--);return ee.opt_len+=3*(t+1)+5+5+4,t}function u(t){ee.pending_buf[ee.pending++]=t}function d(t){u(255&t),u(t>>>8&255)}function g(t){u(t>>8&255),u(255&t&255)}function R(t,e){var n,r=e;fe>v-r?(n=t,he|=n<<fe&65535,d(he),he=n>>>v-fe,fe+=r-v):(he|=t<<fe&65535,fe+=r)}function rt(t,e){var n=2*t;R(65535&e[n],65535&e[n+1])}function it(t,e){var n,r,i=-1,o=t[1],a=0,s=7,c=4;for(0===o&&(s=138,c=3),n=0;n<=e;n++)if(r=o,o=t[2*(n+1)+1],!(++a<s&&r==o)){if(a<c){do rt(r,te);while(0!==--a)}else 0!==r?(r!=i&&(rt(r,te),a--),rt(m,te),R(a-3,2)):a<=10?(rt(w,te),R(a-3,3)):(rt(y,te),R(a-11,7));a=0,i=r,0===o?(s=138,c=3):r==o?(s=6,c=3):(s=7,c=4)}}function ot(t,n,r){var i;for(R(t-257,5),R(n-1,5),R(r-4,4),i=0;i<r;i++)R(te[2*e.bl_order[i]+1],3);it($t,t-1),it(Zt,n-1)}function at(){16==fe?(d(he),he=0,fe=0):fe>=8&&(u(255&he),he>>>=8,fe-=8)}function st(){R($<<1,3),rt(p,n.static_ltree),at(),1+ue+10-fe<9&&(R($<<1,3),rt(p,n.static_ltree),at()),ue=7}function ct(t,n){var r,i,o;if(ee.pending_buf[ce+2*se]=t>>>8&255,ee.pending_buf[ce+2*se+1]=255&t,ee.pending_buf[oe+se]=255&n,se++,0===t?$t[2*n]++:(le++,t--,$t[2*(e._length_code[n]+h+1)]++,Zt[2*e.d_code(t)]++),0===(8191&se)&&Gt>2){for(r=8*se,i=Ut-zt,o=0;o<c;o++)r+=Zt[2*o]*(5+e.extra_dbits[o]);if(r>>>=3,le<Math.floor(se/2)&&r<Math.floor(i/2))return!0}return se==ae-1}function lt(t,n){var r,i,o,a,s=0;if(0!==se)do r=ee.pending_buf[ce+2*s]<<8&65280|255&ee.pending_buf[ce+2*s+1],i=255&ee.pending_buf[oe+s],s++,0===r?rt(i,t):(o=e._length_code[i],rt(o+h+1,t),a=e.extra_lbits[o],0!==a&&(i-=e.base_length[o],R(i,a)),r--,o=e.d_code(r),rt(o,n),a=e.extra_dbits[o],0!==a&&(r-=e.base_dist[o],R(r,a)));while(s<se);rt(p,t),ue=t[2*p+1]}function ut(){fe>8?d(he):fe>0&&u(255&he),he=0,fe=0}function ht(t,e,n){ut(),ue=8,n&&(d(e),d(~e)),ee.pending_buf.set(Pt.subarray(t,t+e),ee.pending),ee.pending+=e}function ft(t,e,n){R((K<<1)+(n?1:0),3),ht(t,e,!0)}function dt(t,e,i){var o,a,c=0;Gt>0?(ne.build_tree(ee),re.build_tree(ee),c=s(),o=ee.opt_len+3+7>>>3,a=ee.static_len+3+7>>>3,a<=o&&(o=a)):o=a=e+5,e+4<=o&&t!=-1?ft(t,e,i):a==o?(R(($<<1)+(i?1:0),3),lt(n.static_ltree,n.static_dtree)):(R((Z<<1)+(i?1:0),3),ot(ne.max_code+1,re.max_code+1,c+1),lt($t,Zt)),r(),i&&ut()}function pt(t){dt(zt>=0?zt:-1,Ut-zt,t),zt=Ut,xt.flush_pending()}function gt(){var t,e,n,r;do{if(r=It-Wt-Ut,0===r&&0===Ut&&0===Wt)r=St;else if(r==-1)r--;else if(Ut>=St+St-nt){Pt.set(Pt.subarray(St,St+St),0),Ht-=St,Ut-=St,zt-=St,t=Rt,n=t;do e=65535&Ot[--n],Ot[n]=e>=St?e-St:0;while(0!==--t);t=St,n=t;do e=65535&Et[--n],Et[n]=e>=St?e-St:0;while(0!==--t);r+=St}if(0===xt.avail_in)return;t=xt.read_buf(Pt,Ut+Wt,r),Wt+=t,Wt>=tt&&(Ft=255&Pt[Ut],Ft=(Ft<<jt^255&Pt[Ut+1])&Dt)}while(Wt<nt&&0!==xt.avail_in)}function mt(t){var e,n=65535;for(n>_t-5&&(n=_t-5);;){if(Wt<=1){if(gt(),0===Wt&&t==C)return U;if(0===Wt)break}if(Ut+=Wt,Wt=0,e=zt+n,(0===Ut||Ut>=e)&&(Wt=Ut-e,Ut=e,pt(!1),0===xt.avail_out))return U;if(Ut-zt>=St-nt&&(pt(!1),0===xt.avail_out))return U}return pt(t==q),0===xt.avail_out?t==q?W:U:t==q?X:H}function wt(t){var e,n,r=Vt,i=Ut,o=Xt,a=Ut>St-nt?Ut-(St-nt):0,s=Kt,c=Tt,l=Ut+et,u=Pt[i+o-1],h=Pt[i+o];Xt>=Qt&&(r>>=2),s>Wt&&(s=Wt);do if(e=t,Pt[e+o]==h&&Pt[e+o-1]==u&&Pt[e]==Pt[i]&&Pt[++e]==Pt[i+1]){i+=2,e++;do;while(Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&Pt[++i]==Pt[++e]&&i<l);if(n=et-(l-i),i=l-et,n>o){if(Ht=t,o=n,n>=s)break;u=Pt[i+o-1],h=Pt[i+o]}}while((t=65535&Et[t&c])>a&&0!==--r);return o<=Wt?o:Wt}function yt(t){for(var e,n=0;;){if(Wt<nt){if(gt(),Wt<nt&&t==C)return U;if(0===Wt)break}if(Wt>=tt&&(Ft=(Ft<<jt^255&Pt[Ut+(tt-1)])&Dt,n=65535&Ot[Ft],Et[Ut&Tt]=Ot[Ft],Ot[Ft]=Ut),0!==n&&(Ut-n&65535)<=St-nt&&Jt!=k&&(Nt=wt(n)),Nt>=tt)if(e=ct(Ut-Ht,Nt-tt),Wt-=Nt,Nt<=Yt&&Wt>=tt){Nt--;do Ut++,Ft=(Ft<<jt^255&Pt[Ut+(tt-1)])&Dt,n=65535&Ot[Ft],Et[Ut&Tt]=Ot[Ft],Ot[Ft]=Ut;while(0!==--Nt);Ut++}else Ut+=Nt,Nt=0,Ft=255&Pt[Ut],Ft=(Ft<<jt^255&Pt[Ut+1])&Dt;else e=ct(0,255&Pt[Ut]),Wt--,Ut++;if(e&&(pt(!1),0===xt.avail_out))return U}return pt(t==q),0===xt.avail_out?t==q?W:U:t==q?X:H}function vt(t){for(var e,n,r=0;;){if(Wt<nt){if(gt(),Wt<nt&&t==C)return U;if(0===Wt)break}if(Wt>=tt&&(Ft=(Ft<<jt^255&Pt[Ut+(tt-1)])&Dt,r=65535&Ot[Ft],Et[Ut&Tt]=Ot[Ft],Ot[Ft]=Ut),Xt=Nt,Lt=Ht,Nt=tt-1,0!==r&&Xt<Yt&&(Ut-r&65535)<=St-nt&&(Jt!=k&&(Nt=wt(r)),Nt<=5&&(Jt==x||Nt==tt&&Ut-Ht>4096)&&(Nt=tt-1)),Xt>=tt&&Nt<=Xt){n=Ut+Wt-tt,e=ct(Ut-1-Lt,Xt-tt),Wt-=Xt-1,Xt-=2;do++Ut<=n&&(Ft=(Ft<<jt^255&Pt[Ut+(tt-1)])&Dt,r=65535&Ot[Ft],Et[Ut&Tt]=Ot[Ft],Ot[Ft]=Ut);while(0!==--Xt);if(Mt=0,Nt=tt-1,Ut++,e&&(pt(!1),0===xt.avail_out))return U}else if(0!==Mt){if(e=ct(0,255&Pt[Ut-1]),e&&pt(!1),Ut++,Wt--,0===xt.avail_out)return U}else Mt=1,Ut++,Wt--}return 0!==Mt&&(e=ct(0,255&Pt[Ut-1]),Mt=0),pt(t==q),0===xt.avail_out?t==q?W:U:t==q?X:H}function bt(e){return e.total_in=e.total_out=0,e.msg=null,ee.pending=0,ee.pending_out=0,kt=G,At=C,o(),t(),T}var xt,kt,_t,Ct,At,St,qt,Tt,Pt,It,Et,Ot,Ft,Rt,Bt,Dt,jt,zt,Nt,Lt,Mt,Ut,Ht,Wt,Xt,Vt,Yt,Gt,Jt,Qt,Kt,$t,Zt,te,ee=this,ne=new e,re=new e,ie=new e;ee.depth=[];var oe,ae,se,ce,le,ue,he,fe;ee.bl_count=[],ee.heap=[],$t=[],Zt=[],te=[],ee.pqdownheap=function(t,e){for(var n=ee.heap,r=n[e],o=e<<1;o<=ee.heap_len&&(o<ee.heap_len&&i(t,n[o+1],n[o],ee.depth)&&o++,!i(t,r,n[o],ee.depth));)n[e]=n[o],e=o,o<<=1;n[e]=r},ee.deflateInit=function(t,e,n,r,i,o){return r||(r=Q),i||(i=D),o||(o=_),t.msg=null,e==b&&(e=6),i<1||i>B||r!=Q||n<9||n>15||e<0||e>9||o<0||o>k?E:(t.dstate=ee,qt=n,St=1<<qt,Tt=St-1,Bt=i+7,Rt=1<<Bt,Dt=Rt-1,jt=Math.floor((Bt+tt-1)/tt),Pt=new Uint8Array(2*St),Et=[],Ot=[],ae=1<<i+6,ee.pending_buf=new Uint8Array(4*ae),_t=4*ae,ce=Math.floor(ae/2),oe=3*ae,Gt=e,Jt=o,Ct=255&r,bt(t))},ee.deflateEnd=function(){return kt!=Y&&kt!=G&&kt!=J?E:(ee.pending_buf=null,Ot=null,Et=null,Pt=null,ee.dstate=null,kt==G?O:T)},ee.deflateParams=function(t,e,n){var r=T;return e==b&&(e=6),e<0||e>9||n<0||n>k?E:(L[Gt].func!=L[e].func&&0!==t.total_in&&(r=t.deflate(A)),Gt!=e&&(Gt=e,Yt=L[Gt].max_lazy,Qt=L[Gt].good_length,Kt=L[Gt].nice_length,Vt=L[Gt].max_chain),Jt=n,r)},ee.deflateSetDictionary=function(t,e,n){var r,i=n,o=0;if(!e||kt!=Y)return E;if(i<tt)return T;for(i>St-nt&&(i=St-nt,o=n-i),Pt.set(e.subarray(o,o+i),0),Ut=i,zt=i,Ft=255&Pt[0],Ft=(Ft<<jt^255&Pt[1])&Dt,r=0;r<=i-tt;r++)Ft=(Ft<<jt^255&Pt[r+(tt-1)])&Dt,Et[r&Tt]=Ot[Ft],Ot[Ft]=r;return T},ee.deflate=function(t,e){var n,r,i,o,a;if(e>q||e<0)return E;if(!t.next_out||!t.next_in&&0!==t.avail_in||kt==J&&e!=q)return t.msg=M[I-E],E;if(0===t.avail_out)return t.msg=M[I-F],F;if(xt=t,o=At,At=e,kt==Y&&(r=Q+(qt-8<<4)<<8,i=(Gt-1&255)>>1,i>3&&(i=3),r|=i<<6,0!==Ut&&(r|=V),r+=31-r%31,kt=G,g(r)),0!==ee.pending){if(xt.flush_pending(),0===xt.avail_out)return At=-1,T}else if(0===xt.avail_in&&e<=o&&e!=q)return xt.msg=M[I-F],F;if(kt==J&&0!==xt.avail_in)return t.msg=M[I-F],F;if(0!==xt.avail_in||0!==Wt||e!=C&&kt!=J){switch(a=-1,L[Gt].func){case j:a=mt(e);break;case z:a=yt(e);break;case N:a=vt(e)}if(a!=W&&a!=X||(kt=J),a==U||a==W)return 0===xt.avail_out&&(At=-1),T;if(a==H){if(e==A)st();else if(ft(0,0,!1),e==S)for(n=0;n<Rt;n++)Ot[n]=0;if(xt.flush_pending(),0===xt.avail_out)return At=-1,T}}return e!=q?T:P}}function a(){var t=this;t.next_in_index=0,t.next_out_index=0,t.avail_in=0,t.total_in=0,t.avail_out=0,t.total_out=0}var s=15,c=30,l=19,u=29,h=256,f=h+1+u,d=2*f+1,p=256,g=7,m=16,w=17,y=18,v=16,b=-1,x=1,k=2,_=0,C=0,A=1,S=3,q=4,T=0,P=1,I=2,E=-2,O=-3,F=-5,R=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];e._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],e.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],e.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],e.d_code=function(t){return t<256?R[t]:R[256+(t>>>7)]},e.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],e.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],e.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],e.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],n.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],n.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],n.static_l_desc=new n(n.static_ltree,e.extra_lbits,h+1,f,s),n.static_d_desc=new n(n.static_dtree,e.extra_dbits,0,c,s),n.static_bl_desc=new n(null,e.extra_blbits,0,l,g);var B=9,D=8,j=0,z=1,N=2,L=[new r(0,0,0,0,j),new r(4,4,8,4,z),new r(4,5,16,8,z),new r(4,6,32,32,z),new r(4,4,16,16,N),new r(8,16,32,32,N),new r(8,16,128,128,N),new r(8,32,128,256,N),new r(32,128,258,1024,N),new r(32,258,258,4096,N)],M=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],U=0,H=1,W=2,X=3,V=32,Y=42,G=113,J=666,Q=8,K=0,$=1,Z=2,tt=3,et=258,nt=et+tt+1;return a.prototype={deflateInit:function(t,e){var n=this;return n.dstate=new o,e||(e=s),n.dstate.deflateInit(n,t,e)},deflate:function(t){var e=this;return e.dstate?e.dstate.deflate(e,t):E},deflateEnd:function(){var t=this;if(!t.dstate)return E;var e=t.dstate.deflateEnd();return t.dstate=null,e},deflateParams:function(t,e){var n=this;return n.dstate?n.dstate.deflateParams(n,t,e):E},deflateSetDictionary:function(t,e){var n=this;return n.dstate?n.dstate.deflateSetDictionary(n,t,e):E},read_buf:function(t,e,n){var r=this,i=r.avail_in;return i>n&&(i=n),0===i?0:(r.avail_in-=i,t.set(r.next_in.subarray(r.next_in_index,r.next_in_index+i),e),r.next_in_index+=i,r.total_in+=i,i)},flush_pending:function(){var t=this,e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out),0!==e&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index),t.next_out_index+=e,t.dstate.pending_out+=e,t.total_out+=e,t.avail_out-=e,t.dstate.pending-=e,0===t.dstate.pending&&(t.dstate.pending_out=0))}},function(t){var e=this,n=new a,r=512,i=C,o=new Uint8Array(r);"undefined"==typeof t&&(t=b),n.deflateInit(t),n.next_out=o,e.append=function(t,e){var a,s,c=[],l=0,u=0,h=0;if(t.length){n.next_in_index=0,n.next_in=t,n.avail_in=t.length;do{if(n.next_out_index=0,n.avail_out=r,a=n.deflate(i),a!=T)throw"deflating: "+n.msg;n.next_out_index&&(n.next_out_index==r?c.push(new Uint8Array(o)):c.push(new Uint8Array(o.subarray(0,n.next_out_index)))),h+=n.next_out_index,e&&n.next_in_index>0&&n.next_in_index!=l&&(e(n.next_in_index),l=n.next_in_index)}while(n.avail_in>0||0===n.avail_out);return s=new Uint8Array(h),c.forEach(function(t){s.set(t,u),u+=t.length}),s}},e.flush=function(){var t,e,i=[],a=0,s=0;do{if(n.next_out_index=0,n.avail_out=r,t=n.deflate(q),t!=P&&t!=T)throw"deflating: "+n.msg;r-n.avail_out>0&&i.push(new Uint8Array(o.subarray(0,n.next_out_index))),s+=n.next_out_index}while(n.avail_in>0||0===n.avail_out);return n.deflateEnd(),e=new Uint8Array(s),i.forEach(function(t){e.set(t,a),a+=t.length}),e}}}(void 0);/* + html2canvas 0.5.0-beta3 <http://html2canvas.hertzen.com> + Copyright (c) 2016 Niklas von Hertzen + + Released under License +*/ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.html2canvas=t()}}(function(){var t;return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(e,n,r){(function(e){!function(i){function o(t){throw RangeError(R[t])}function a(t,e){for(var n=t.length;n--;)t[n]=e(t[n]);return t}function s(t,e){return a(t.split(F),e).join(".")}function c(t){for(var e,n,r=[],i=0,o=t.length;i<o;)e=t.charCodeAt(i++),e>=55296&&e<=56319&&i<o?(n=t.charCodeAt(i++),56320==(64512&n)?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),i--)):r.push(e);return r}function l(t){return a(t,function(t){var e="";return t>65535&&(t-=65536,e+=j(t>>>10&1023|55296),t=56320|1023&t),e+=j(t)}).join("")}function u(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:_}function h(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function f(t,e,n){var r=0;for(t=n?D(t/q):t>>1,t+=D(t/e);t>B*A>>1;r+=_)t=D(t/B);return D(r+(B+1)*t/(t+S))}function d(t){var e,n,r,i,a,s,c,h,d,p,g=[],m=t.length,w=0,y=P,v=T;for(n=t.lastIndexOf(I),n<0&&(n=0),r=0;r<n;++r)t.charCodeAt(r)>=128&&o("not-basic"),g.push(t.charCodeAt(r));for(i=n>0?n+1:0;i<m;){for(a=w,s=1,c=_;i>=m&&o("invalid-input"),h=u(t.charCodeAt(i++)),(h>=_||h>D((k-w)/s))&&o("overflow"),w+=h*s,d=c<=v?C:c>=v+A?A:c-v,!(h<d);c+=_)p=_-d,s>D(k/p)&&o("overflow"),s*=p;e=g.length+1,v=f(w-a,e,0==a),D(w/e)>k-y&&o("overflow"),y+=D(w/e),w%=e,g.splice(w++,0,y)}return l(g)}function p(t){var e,n,r,i,a,s,l,u,d,p,g,m,w,y,v,b=[];for(t=c(t),m=t.length,e=P,n=0,a=T,s=0;s<m;++s)g=t[s],g<128&&b.push(j(g));for(r=i=b.length,i&&b.push(I);r<m;){for(l=k,s=0;s<m;++s)g=t[s],g>=e&&g<l&&(l=g);for(w=r+1,l-e>D((k-n)/w)&&o("overflow"),n+=(l-e)*w,e=l,s=0;s<m;++s)if(g=t[s],g<e&&++n>k&&o("overflow"),g==e){for(u=n,d=_;p=d<=a?C:d>=a+A?A:d-a,!(u<p);d+=_)v=u-p,y=_-p,b.push(j(h(p+v%y,0))),u=D(v/y);b.push(j(h(u,0))),a=f(n,w,r==i),n=0,++r}++n,++e}return b.join("")}function g(t){return s(t,function(t){return E.test(t)?d(t.slice(4).toLowerCase()):t})}function m(t){return s(t,function(t){return O.test(t)?"xn--"+p(t):t})}var w="object"==typeof r&&r,y="object"==typeof n&&n&&n.exports==w&&n,v="object"==typeof e&&e;v.global!==v&&v.window!==v||(i=v);var b,x,k=2147483647,_=36,C=1,A=26,S=38,q=700,T=72,P=128,I="-",E=/^xn--/,O=/[^ -~]/,F=/\x2E|\u3002|\uFF0E|\uFF61/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},B=_-C,D=Math.floor,j=String.fromCharCode;if(b={version:"1.2.4",ucs2:{decode:c,encode:l},decode:d,encode:p,toASCII:m,toUnicode:g},"function"==typeof t&&"object"==typeof t.amd&&t.amd)t("punycode",function(){return b});else if(w&&!w.nodeType)if(y)y.exports=b;else for(x in b)b.hasOwnProperty(x)&&(w[x]=b[x]);else i.punycode=b}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(t,e,n){function r(t,e,n){!t.defaultView||e===t.defaultView.pageXOffset&&n===t.defaultView.pageYOffset||t.defaultView.scrollTo(e,n)}function i(t,e){try{e&&(e.width=t.width,e.height=t.height,e.getContext("2d").putImageData(t.getContext("2d").getImageData(0,0,t.width,t.height),0,0))}catch(e){s("Unable to copy canvas content from",t,e)}}function o(t,e){for(var n=3===t.nodeType?document.createTextNode(t.nodeValue):t.cloneNode(!1),r=t.firstChild;r;)e!==!0&&1===r.nodeType&&"SCRIPT"===r.nodeName||n.appendChild(o(r,e)),r=r.nextSibling;return 1===t.nodeType&&(n._scrollTop=t.scrollTop,n._scrollLeft=t.scrollLeft,"CANVAS"===t.nodeName?i(t,n):"TEXTAREA"!==t.nodeName&&"SELECT"!==t.nodeName||(n.value=t.value)),n}function a(t){if(1===t.nodeType){t.scrollTop=t._scrollTop,t.scrollLeft=t._scrollLeft;for(var e=t.firstChild;e;)a(e),e=e.nextSibling}}var s=t("./log");e.exports=function(t,e,n,i,s,c,l){var u=o(t.documentElement,s.javascriptEnabled),h=e.createElement("iframe");return h.className="html2canvas-container",h.style.visibility="hidden",h.style.position="fixed",h.style.left="-10000px",h.style.top="0px",h.style.border="0",h.width=n,h.height=i,h.scrolling="no",e.body.appendChild(h),new Promise(function(e){var n=h.contentWindow.document;h.contentWindow.onload=h.onload=function(){var t=setInterval(function(){n.body.childNodes.length>0&&(a(n.documentElement),clearInterval(t),"view"===s.type&&(h.contentWindow.scrollTo(c,l),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||h.contentWindow.scrollY===l&&h.contentWindow.scrollX===c||(n.documentElement.style.top=-l+"px",n.documentElement.style.left=-c+"px",n.documentElement.style.position="absolute")),e(h))},50)},n.open(),n.write("<!DOCTYPE html><html></html>"),r(t,c,l),n.replaceChild(n.adoptNode(u),n.documentElement),n.close()})}},{"./log":13}],3:[function(t,e,n){function r(t){this.r=0,this.g=0,this.b=0,this.a=null;this.fromArray(t)||this.namedColor(t)||this.rgb(t)||this.rgba(t)||this.hex6(t)||this.hex3(t)}r.prototype.darken=function(t){var e=1-t;return new r([Math.round(this.r*e),Math.round(this.g*e),Math.round(this.b*e),this.a])},r.prototype.isTransparent=function(){return 0===this.a},r.prototype.isBlack=function(){return 0===this.r&&0===this.g&&0===this.b},r.prototype.fromArray=function(t){return Array.isArray(t)&&(this.r=Math.min(t[0],255),this.g=Math.min(t[1],255),this.b=Math.min(t[2],255),t.length>3&&(this.a=t[3])),Array.isArray(t)};var i=/^#([a-f0-9]{3})$/i;r.prototype.hex3=function(t){var e=null;return null!==(e=t.match(i))&&(this.r=parseInt(e[1][0]+e[1][0],16),this.g=parseInt(e[1][1]+e[1][1],16),this.b=parseInt(e[1][2]+e[1][2],16)),null!==e};var o=/^#([a-f0-9]{6})$/i;r.prototype.hex6=function(t){var e=null;return null!==(e=t.match(o))&&(this.r=parseInt(e[1].substring(0,2),16),this.g=parseInt(e[1].substring(2,4),16),this.b=parseInt(e[1].substring(4,6),16)),null!==e};var a=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;r.prototype.rgb=function(t){var e=null;return null!==(e=t.match(a))&&(this.r=Number(e[1]),this.g=Number(e[2]),this.b=Number(e[3])),null!==e};var s=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;r.prototype.rgba=function(t){var e=null;return null!==(e=t.match(s))&&(this.r=Number(e[1]),this.g=Number(e[2]),this.b=Number(e[3]),this.a=Number(e[4])),null!==e},r.prototype.toString=function(){return null!==this.a&&1!==this.a?"rgba("+[this.r,this.g,this.b,this.a].join(",")+")":"rgb("+[this.r,this.g,this.b].join(",")+")"},r.prototype.namedColor=function(t){t=t.toLowerCase();var e=c[t];if(e)this.r=e[0],this.g=e[1],this.b=e[2];else if("transparent"===t)return this.r=this.g=this.b=this.a=0,!0;return!!e},r.prototype.isColor=!0;var c={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};e.exports=r},{}],4:[function(e,n,r){function i(t,e){var n=_++;if(e=e||{},e.logging&&(w.options.logging=!0,w.options.start=Date.now()),e.async="undefined"==typeof e.async||e.async,e.allowTaint="undefined"!=typeof e.allowTaint&&e.allowTaint,e.removeContainer="undefined"==typeof e.removeContainer||e.removeContainer,e.javascriptEnabled="undefined"!=typeof e.javascriptEnabled&&e.javascriptEnabled,e.imageTimeout="undefined"==typeof e.imageTimeout?1e4:e.imageTimeout,e.renderer="function"==typeof e.renderer?e.renderer:d,e.strict=!!e.strict,"string"==typeof t){if("string"!=typeof e.proxy)return Promise.reject("Proxy must be used when rendering url");var r=null!=e.width?e.width:window.innerWidth,i=null!=e.height?e.height:window.innerHeight;return b(h(t),e.proxy,document,r,i,e).then(function(t){return a(t.contentWindow.document.documentElement,t,e,r,i)})}var s=(void 0===t?[document.documentElement]:t.length?t:[t])[0];return s.setAttribute(k+n,n),o(s.ownerDocument,e,s.ownerDocument.defaultView.innerWidth,s.ownerDocument.defaultView.innerHeight,n).then(function(t){return"function"==typeof e.onrendered&&(w("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"),e.onrendered(t)),t})}function o(t,e,n,r,i){return v(t,t,n,r,e,t.defaultView.pageXOffset,t.defaultView.pageYOffset).then(function(o){w("Document cloned");var s=k+i,c="["+s+"='"+i+"']";t.querySelector(c).removeAttribute(s);var l=o.contentWindow,u=l.document.querySelector(c),h="function"==typeof e.onclone?Promise.resolve(e.onclone(l.document)):Promise.resolve(!0);return h.then(function(){return a(u,o,e,n,r)})})}function a(t,e,n,r,i){var o=e.contentWindow,a=new f(o.document),h=new p(n,a),d=x(t),m="view"===n.type?r:l(o.document),y="view"===n.type?i:u(o.document),v=new n.renderer(m,y,h,n,document),b=new g(t,v,a,h,n);return b.ready.then(function(){w("Finished rendering");var r;return r="view"===n.type?c(v.canvas,{width:v.canvas.width,height:v.canvas.height,top:0,left:0,x:0,y:0}):t===o.document.body||t===o.document.documentElement||null!=n.canvas?v.canvas:c(v.canvas,{width:null!=n.width?n.width:d.width,height:null!=n.height?n.height:d.height,top:d.top,left:d.left,x:0,y:0}),s(e,n),r})}function s(t,e){e.removeContainer&&(t.parentNode.removeChild(t),w("Cleaned up container"))}function c(t,e){var n=document.createElement("canvas"),r=Math.min(t.width-1,Math.max(0,e.left)),i=Math.min(t.width,Math.max(1,e.left+e.width)),o=Math.min(t.height-1,Math.max(0,e.top)),a=Math.min(t.height,Math.max(1,e.top+e.height));n.width=e.width,n.height=e.height;var s=i-r,c=a-o;return w("Cropping canvas at:","left:",e.left,"top:",e.top,"width:",s,"height:",c),w("Resulting crop with width",e.width,"and height",e.height,"with x",r,"and y",o),n.getContext("2d").drawImage(t,r,o,s,c,e.x,e.y,s,c),n}function l(t){return Math.max(Math.max(t.body.scrollWidth,t.documentElement.scrollWidth),Math.max(t.body.offsetWidth,t.documentElement.offsetWidth),Math.max(t.body.clientWidth,t.documentElement.clientWidth))}function u(t){return Math.max(Math.max(t.body.scrollHeight,t.documentElement.scrollHeight),Math.max(t.body.offsetHeight,t.documentElement.offsetHeight),Math.max(t.body.clientHeight,t.documentElement.clientHeight))}function h(t){var e=document.createElement("a");return e.href=t,e.href=e.href,e}var f=e("./support"),d=e("./renderers/canvas"),p=e("./imageloader"),g=e("./nodeparser"),m=e("./nodecontainer"),w=e("./log"),y=e("./utils"),v=e("./clone"),b=e("./proxy").loadUrlDocument,x=y.getBounds,k="data-html2canvas-node",_=0;i.CanvasRenderer=d,i.NodeContainer=m,i.log=w,i.utils=y;var C="undefined"==typeof document||"function"!=typeof Object.create||"function"!=typeof document.createElement("canvas").getContext?function(){return Promise.reject("No canvas support")}:i;n.exports=C,"function"==typeof t&&t.amd&&t("html2canvas",[],function(){return C})},{"./clone":2,"./imageloader":11,"./log":13,"./nodecontainer":14,"./nodeparser":15,"./proxy":16,"./renderers/canvas":20,"./support":22,"./utils":26}],5:[function(t,e,n){function r(t){if(this.src=t,i("DummyImageContainer for",t),!this.promise||!this.image){i("Initiating DummyImageContainer"),r.prototype.image=new Image;var e=this.image;r.prototype.promise=new Promise(function(t,n){e.onload=t,e.onerror=n,e.src=o(),e.complete===!0&&t(e)})}}var i=t("./log"),o=t("./utils").smallImage;e.exports=r},{"./log":13,"./utils":26}],6:[function(t,e,n){function r(t,e){var n,r,o=document.createElement("div"),a=document.createElement("img"),s=document.createElement("span"),c="Hidden Text";o.style.visibility="hidden",o.style.fontFamily=t,o.style.fontSize=e,o.style.margin=0,o.style.padding=0,document.body.appendChild(o),a.src=i(),a.width=1,a.height=1,a.style.margin=0,a.style.padding=0,a.style.verticalAlign="baseline",s.style.fontFamily=t,s.style.fontSize=e,s.style.margin=0,s.style.padding=0,s.appendChild(document.createTextNode(c)),o.appendChild(s),o.appendChild(a),n=a.offsetTop-s.offsetTop+1,o.removeChild(s),o.appendChild(document.createTextNode(c)),o.style.lineHeight="normal",a.style.verticalAlign="super",r=a.offsetTop-o.offsetTop+1,document.body.removeChild(o),this.baseline=n,this.lineWidth=1,this.middle=r}var i=t("./utils").smallImage;e.exports=r},{"./utils":26}],7:[function(t,e,n){function r(){this.data={}}var i=t("./font");r.prototype.getMetrics=function(t,e){return void 0===this.data[t+"-"+e]&&(this.data[t+"-"+e]=new i(t,e)),this.data[t+"-"+e]},e.exports=r},{"./font":6}],8:[function(t,e,n){function r(e,n,r){this.image=null,this.src=e;var i=this,a=o(e);this.promise=(n?new Promise(function(t){"about:blank"===e.contentWindow.document.URL||null==e.contentWindow.document.documentElement?e.contentWindow.onload=e.onload=function(){t(e)}:t(e)}):this.proxyLoad(r.proxy,a,r)).then(function(e){var n=t("./core");return n(e.contentWindow.document.documentElement,{type:"view",width:e.width,height:e.height,proxy:r.proxy,javascriptEnabled:r.javascriptEnabled,removeContainer:r.removeContainer,allowTaint:r.allowTaint,imageTimeout:r.imageTimeout/2})}).then(function(t){return i.image=t})}var i=t("./utils"),o=i.getBounds,a=t("./proxy").loadUrlDocument;r.prototype.proxyLoad=function(t,e,n){var r=this.src;return a(r.src,t,r.ownerDocument,e.width,e.height,n)},e.exports=r},{"./core":4,"./proxy":16,"./utils":26}],9:[function(t,e,n){function r(t){this.src=t.value,this.colorStops=[],this.type=null,this.x0=.5,this.y0=.5,this.x1=.5,this.y1=.5,this.promise=Promise.resolve(!0)}r.TYPES={LINEAR:1,RADIAL:2},r.REGEXP_COLORSTOP=/^\s*(rgba?\(\s*\d{1,3},\s*\d{1,3},\s*\d{1,3}(?:,\s*[0-9\.]+)?\s*\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\s+(\d{1,3}(?:\.\d+)?)(%|px)?)?(?:\s|$)/i,e.exports=r},{}],10:[function(t,e,n){function r(t,e){this.src=t,this.image=new Image;var n=this;this.tainted=null,this.promise=new Promise(function(r,i){n.image.onload=r,n.image.onerror=i,e&&(n.image.crossOrigin="anonymous"),n.image.src=t,n.image.complete===!0&&r(n.image)})}e.exports=r},{}],11:[function(t,e,n){function r(t,e){this.link=null,this.options=t,this.support=e,this.origin=this.getOrigin(window.location.href)}var i=t("./log"),o=t("./imagecontainer"),a=t("./dummyimagecontainer"),s=t("./proxyimagecontainer"),c=t("./framecontainer"),l=t("./svgcontainer"),u=t("./svgnodecontainer"),h=t("./lineargradientcontainer"),f=t("./webkitgradientcontainer"),d=t("./utils").bind;r.prototype.findImages=function(t){var e=[];return t.reduce(function(t,e){switch(e.node.nodeName){case"IMG":return t.concat([{args:[e.node.src],method:"url"}]);case"svg":case"IFRAME":return t.concat([{args:[e.node],method:e.node.nodeName}])}return t},[]).forEach(this.addImage(e,this.loadImage),this),e},r.prototype.findBackgroundImage=function(t,e){return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this.addImage(t,this.loadImage),this),t},r.prototype.addImage=function(t,e){return function(n){n.args.forEach(function(r){this.imageExists(t,r)||(t.splice(0,0,e.call(this,n)),i("Added image #"+t.length,"string"==typeof r?r.substring(0,100):r))},this)}},r.prototype.hasImageBackground=function(t){return"none"!==t.method},r.prototype.loadImage=function(t){if("url"===t.method){var e=t.args[0];return!this.isSVG(e)||this.support.svg||this.options.allowTaint?e.match(/data:image\/.*;base64,/i)?new o(e.replace(/url\(['"]{0,}|['"]{0,}\)$/gi,""),!1):this.isSameOrigin(e)||this.options.allowTaint===!0||this.isSVG(e)?new o(e,!1):this.support.cors&&!this.options.allowTaint&&this.options.useCORS?new o(e,!0):this.options.proxy?new s(e,this.options.proxy):new a(e):new l(e)}return"linear-gradient"===t.method?new h(t):"gradient"===t.method?new f(t):"svg"===t.method?new u(t.args[0],this.support.svg):"IFRAME"===t.method?new c(t.args[0],this.isSameOrigin(t.args[0].src),this.options):new a(t)},r.prototype.isSVG=function(t){return"svg"===t.substring(t.length-3).toLowerCase()||l.prototype.isInline(t)},r.prototype.imageExists=function(t,e){return t.some(function(t){return t.src===e})},r.prototype.isSameOrigin=function(t){return this.getOrigin(t)===this.origin},r.prototype.getOrigin=function(t){var e=this.link||(this.link=document.createElement("a"));return e.href=t,e.href=e.href,e.protocol+e.hostname+e.port},r.prototype.getPromise=function(t){return this.timeout(t,this.options.imageTimeout).catch(function(){var e=new a(t.src);return e.promise.then(function(e){t.image=e})})},r.prototype.get=function(t){var e=null;return this.images.some(function(n){return(e=n).src===t})?e:null},r.prototype.fetch=function(t){return this.images=t.reduce(d(this.findBackgroundImage,this),this.findImages(t)),this.images.forEach(function(t,e){t.promise.then(function(){i("Succesfully loaded image #"+(e+1),t)},function(n){i("Failed loading image #"+(e+1),t,n)})}),this.ready=Promise.all(this.images.map(this.getPromise,this)),i("Finished searching images"),this},r.prototype.timeout=function(t,e){var n,r=Promise.race([t.promise,new Promise(function(r,o){n=setTimeout(function(){i("Timed out loading image",t),o(t)},e)})]).then(function(t){return clearTimeout(n),t});return r.catch(function(){clearTimeout(n)}),r},e.exports=r},{"./dummyimagecontainer":5,"./framecontainer":8,"./imagecontainer":10,"./lineargradientcontainer":12,"./log":13,"./proxyimagecontainer":17,"./svgcontainer":23,"./svgnodecontainer":24,"./utils":26,"./webkitgradientcontainer":27}],12:[function(t,e,n){function r(t){i.apply(this,arguments),this.type=i.TYPES.LINEAR;var e=r.REGEXP_DIRECTION.test(t.args[0])||!i.REGEXP_COLORSTOP.test(t.args[0]);e?t.args[0].split(/\s+/).reverse().forEach(function(t,e){switch(t){case"left":this.x0=0,this.x1=1;break;case"top":this.y0=0,this.y1=1;break;case"right":this.x0=1,this.x1=0;break;case"bottom":this.y0=1,this.y1=0;break;case"to":var n=this.y0,r=this.x0;this.y0=this.y1,this.x0=this.x1,this.x1=r,this.y1=n;break;case"center":break;default:var i=.01*parseFloat(t,10);if(isNaN(i))break;0===e?(this.y0=i,this.y1=1-this.y0):(this.x0=i,this.x1=1-this.x0)}},this):(this.y0=0,this.y1=1),this.colorStops=t.args.slice(e?1:0).map(function(t){var e=t.match(i.REGEXP_COLORSTOP),n=+e[2],r=0===n?"%":e[3];return{color:new o(e[1]),stop:"%"===r?n/100:null}}),null===this.colorStops[0].stop&&(this.colorStops[0].stop=0),null===this.colorStops[this.colorStops.length-1].stop&&(this.colorStops[this.colorStops.length-1].stop=1),this.colorStops.forEach(function(t,e){null===t.stop&&this.colorStops.slice(e).some(function(n,r){return null!==n.stop&&(t.stop=(n.stop-this.colorStops[e-1].stop)/(r+1)+this.colorStops[e-1].stop,!0)},this)},this)}var i=t("./gradientcontainer"),o=t("./color");r.prototype=Object.create(i.prototype),r.REGEXP_DIRECTION=/^\s*(?:to|left|right|top|bottom|center|\d{1,3}(?:\.\d+)?%?)(?:\s|$)/i,e.exports=r},{"./color":3,"./gradientcontainer":9}],13:[function(t,e,n){var r=function(){r.options.logging&&window.console&&window.console.log&&Function.prototype.bind.call(window.console.log,window.console).apply(window.console,[Date.now()-r.options.start+"ms","html2canvas:"].concat([].slice.call(arguments,0)))};r.options={logging:!1},e.exports=r},{}],14:[function(t,e,n){function r(t,e){this.node=t,this.parent=e,this.stack=null,this.bounds=null,this.borders=null,this.clip=[],this.backgroundClip=[],this.offsetBounds=null,this.visible=null,this.computedStyles=null,this.colors={},this.styles={},this.backgroundImages=null,this.transformData=null,this.transformMatrix=null,this.isPseudoElement=!1,this.opacity=null}function i(t){var e=t.options[t.selectedIndex||0];return e?e.text||"":""}function o(t){if(t&&"matrix"===t[1])return t[2].split(",").map(function(t){return parseFloat(t.trim())});if(t&&"matrix3d"===t[1]){var e=t[2].split(",").map(function(t){return parseFloat(t.trim())});return[e[0],e[1],e[4],e[5],e[12],e[13]]}}function a(t){return t.toString().indexOf("%")!==-1}function s(t){return t.replace("px","")}function c(t){return parseFloat(t)}var l=t("./color"),u=t("./utils"),h=u.getBounds,f=u.parseBackgrounds,d=u.offsetBounds;r.prototype.cloneTo=function(t){t.visible=this.visible,t.borders=this.borders,t.bounds=this.bounds,t.clip=this.clip,t.backgroundClip=this.backgroundClip,t.computedStyles=this.computedStyles,t.styles=this.styles,t.backgroundImages=this.backgroundImages,t.opacity=this.opacity},r.prototype.getOpacity=function(){return null===this.opacity?this.opacity=this.cssFloat("opacity"):this.opacity},r.prototype.assignStack=function(t){this.stack=t,t.children.push(this)},r.prototype.isElementVisible=function(){return this.node.nodeType===Node.TEXT_NODE?this.parent.visible:"none"!==this.css("display")&&"hidden"!==this.css("visibility")&&!this.node.hasAttribute("data-html2canvas-ignore")&&("INPUT"!==this.node.nodeName||"hidden"!==this.node.getAttribute("type"))},r.prototype.css=function(t){return this.computedStyles||(this.computedStyles=this.isPseudoElement?this.parent.computedStyle(this.before?":before":":after"):this.computedStyle(null)),this.styles[t]||(this.styles[t]=this.computedStyles[t])},r.prototype.prefixedCss=function(t){var e=["webkit","moz","ms","o"],n=this.css(t);return void 0===n&&e.some(function(e){return n=this.css(e+t.substr(0,1).toUpperCase()+t.substr(1)),void 0!==n},this),void 0===n?null:n},r.prototype.computedStyle=function(t){return this.node.ownerDocument.defaultView.getComputedStyle(this.node,t)},r.prototype.cssInt=function(t){var e=parseInt(this.css(t),10);return isNaN(e)?0:e},r.prototype.color=function(t){return this.colors[t]||(this.colors[t]=new l(this.css(t)))},r.prototype.cssFloat=function(t){var e=parseFloat(this.css(t));return isNaN(e)?0:e},r.prototype.fontWeight=function(){var t=this.css("fontWeight");switch(parseInt(t,10)){case 401:t="bold";break;case 400:t="normal"}return t},r.prototype.parseClip=function(){var t=this.css("clip").match(this.CLIP);return t?{top:parseInt(t[1],10),right:parseInt(t[2],10),bottom:parseInt(t[3],10),left:parseInt(t[4],10)}:null},r.prototype.parseBackgroundImages=function(){return this.backgroundImages||(this.backgroundImages=f(this.css("backgroundImage")))},r.prototype.cssList=function(t,e){var n=(this.css(t)||"").split(",");return n=n[e||0]||n[0]||"auto",n=n.trim().split(" "),1===n.length&&(n=[n[0],a(n[0])?"auto":n[0]]),n},r.prototype.parseBackgroundSize=function(t,e,n){var r,i,o=this.cssList("backgroundSize",n);if(a(o[0]))r=t.width*parseFloat(o[0])/100;else{if(/contain|cover/.test(o[0])){var s=t.width/t.height,c=e.width/e.height;return s<c^"contain"===o[0]?{width:t.height*c,height:t.height}:{width:t.width,height:t.width/c}}r=parseInt(o[0],10)}return i="auto"===o[0]&&"auto"===o[1]?e.height:"auto"===o[1]?r/e.width*e.height:a(o[1])?t.height*parseFloat(o[1])/100:parseInt(o[1],10),"auto"===o[0]&&(r=i/e.height*e.width),{width:r,height:i}},r.prototype.parseBackgroundPosition=function(t,e,n,r){var i,o,s=this.cssList("backgroundPosition",n);return i=a(s[0])?(t.width-(r||e).width)*(parseFloat(s[0])/100):parseInt(s[0],10),o="auto"===s[1]?i/e.width*e.height:a(s[1])?(t.height-(r||e).height)*parseFloat(s[1])/100:parseInt(s[1],10),"auto"===s[0]&&(i=o/e.height*e.width),{left:i,top:o}},r.prototype.parseBackgroundRepeat=function(t){return this.cssList("backgroundRepeat",t)[0]},r.prototype.parseTextShadows=function(){var t=this.css("textShadow"),e=[];if(t&&"none"!==t)for(var n=t.match(this.TEXT_SHADOW_PROPERTY),r=0;n&&r<n.length;r++){var i=n[r].match(this.TEXT_SHADOW_VALUES);e.push({color:new l(i[0]),offsetX:i[1]?parseFloat(i[1].replace("px","")):0,offsetY:i[2]?parseFloat(i[2].replace("px","")):0,blur:i[3]?i[3].replace("px",""):0})}return e},r.prototype.parseTransform=function(){if(!this.transformData)if(this.hasTransform()){var t=this.parseBounds(),e=this.prefixedCss("transformOrigin").split(" ").map(s).map(c);e[0]+=t.left,e[1]+=t.top,this.transformData={origin:e,matrix:this.parseTransformMatrix()}}else this.transformData={origin:[0,0],matrix:[1,0,0,1,0,0]};return this.transformData},r.prototype.parseTransformMatrix=function(){if(!this.transformMatrix){var t=this.prefixedCss("transform"),e=t?o(t.match(this.MATRIX_PROPERTY)):null;this.transformMatrix=e?e:[1,0,0,1,0,0]}return this.transformMatrix},r.prototype.parseBounds=function(){return this.bounds||(this.bounds=this.hasTransform()?d(this.node):h(this.node))},r.prototype.hasTransform=function(){return"1,0,0,1,0,0"!==this.parseTransformMatrix().join(",")||this.parent&&this.parent.hasTransform()},r.prototype.getValue=function(){var t=this.node.value||"";return"SELECT"===this.node.tagName?t=i(this.node):"password"===this.node.type&&(t=Array(t.length+1).join("•")),0===t.length?this.node.placeholder||"":t},r.prototype.MATRIX_PROPERTY=/(matrix|matrix3d)\((.+)\)/,r.prototype.TEXT_SHADOW_PROPERTY=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g,r.prototype.TEXT_SHADOW_VALUES=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g,r.prototype.CLIP=/^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/,e.exports=r},{"./color":3,"./utils":26}],15:[function(t,e,n){function r(t,e,n,r,i){L("Starting NodeParser"),this.renderer=e,this.options=i,this.range=null,this.support=n,this.renderQueue=[],this.stack=new Y(!0,1,t.ownerDocument,null);var o=new U(t,null);if(i.background&&e.rectangle(0,0,e.width,e.height,new V(i.background)),t===t.ownerDocument.documentElement){var a=new U(o.color("backgroundColor").isTransparent()?t.ownerDocument.body:t.ownerDocument.documentElement,null);e.rectangle(0,0,e.width,e.height,a.color("backgroundColor"))}o.visibile=o.isElementVisible(),this.createPseudoHideStyles(t.ownerDocument),this.disableAnimations(t.ownerDocument),this.nodes=B([o].concat(this.getChildren(o)).filter(function(t){return t.visible=t.isElementVisible()}).map(this.getPseudoElements,this)),this.fontMetrics=new X,L("Fetched nodes, total:",this.nodes.length),L("Calculate overflow clips"),this.calculateOverflowClips(),L("Start fetching images"),this.images=r.fetch(this.nodes.filter(q)),this.ready=this.images.ready.then(J(function(){return L("Images loaded, starting parsing"),L("Creating stacking contexts"),this.createStackingContexts(),L("Sorting stacking contexts"),this.sortStackingContexts(this.stack),this.parse(this.stack),L("Render queue created with "+this.renderQueue.length+" items"),new Promise(J(function(t){i.async?"function"==typeof i.async?i.async.call(this,this.renderQueue,t):this.renderQueue.length>0?(this.renderIndex=0,this.asyncRenderer(this.renderQueue,t)):t():(this.renderQueue.forEach(this.paint,this),t())},this))},this))}function i(t){return t.parent&&t.parent.clip.length}function o(t){return t.replace(/(\-[a-z])/g,function(t){return t.toUpperCase().replace("-","")})}function a(){}function s(t,e,n,r){return t.map(function(i,o){if(i.width>0){var a=e.left,s=e.top,c=e.width,l=e.height-t[2].width;switch(o){case 0:l=t[0].width,i.args=h({c1:[a,s],c2:[a+c,s],c3:[a+c-t[1].width,s+l],c4:[a+t[3].width,s+l]},r[0],r[1],n.topLeftOuter,n.topLeftInner,n.topRightOuter,n.topRightInner);break;case 1:a=e.left+e.width-t[1].width,c=t[1].width,i.args=h({c1:[a+c,s],c2:[a+c,s+l+t[2].width],c3:[a,s+l],c4:[a,s+t[0].width]},r[1],r[2],n.topRightOuter,n.topRightInner,n.bottomRightOuter,n.bottomRightInner);break;case 2:s=s+e.height-t[2].width,l=t[2].width,i.args=h({c1:[a+c,s+l],c2:[a,s+l],c3:[a+t[3].width,s],c4:[a+c-t[3].width,s]},r[2],r[3],n.bottomRightOuter,n.bottomRightInner,n.bottomLeftOuter,n.bottomLeftInner);break;case 3:c=t[3].width,i.args=h({c1:[a,s+l+t[2].width],c2:[a,s],c3:[a+c,s+t[0].width],c4:[a+c,s+l]},r[3],r[0],n.bottomLeftOuter,n.bottomLeftInner,n.topLeftOuter,n.topLeftInner)}}return i})}function c(t,e,n,r){var i=4*((Math.sqrt(2)-1)/3),o=n*i,a=r*i,s=t+n,c=e+r;return{topLeft:u({x:t,y:c},{x:t,y:c-a},{x:s-o,y:e},{x:s,y:e}),topRight:u({x:t,y:e},{x:t+o,y:e},{x:s,y:c-a},{x:s,y:c}),bottomRight:u({x:s,y:e},{x:s,y:e+a},{x:t+o,y:c},{x:t,y:c}),bottomLeft:u({x:s,y:c},{x:s-o,y:c},{x:t,y:e+a},{x:t,y:e})}}function l(t,e,n){var r=t.left,i=t.top,o=t.width,a=t.height,s=e[0][0]<o/2?e[0][0]:o/2,l=e[0][1]<a/2?e[0][1]:a/2,u=e[1][0]<o/2?e[1][0]:o/2,h=e[1][1]<a/2?e[1][1]:a/2,f=e[2][0]<o/2?e[2][0]:o/2,d=e[2][1]<a/2?e[2][1]:a/2,p=e[3][0]<o/2?e[3][0]:o/2,g=e[3][1]<a/2?e[3][1]:a/2,m=o-u,w=a-d,y=o-f,v=a-g;return{topLeftOuter:c(r,i,s,l).topLeft.subdivide(.5),topLeftInner:c(r+n[3].width,i+n[0].width,Math.max(0,s-n[3].width),Math.max(0,l-n[0].width)).topLeft.subdivide(.5),topRightOuter:c(r+m,i,u,h).topRight.subdivide(.5),topRightInner:c(r+Math.min(m,o+n[3].width),i+n[0].width,m>o+n[3].width?0:u-n[3].width,h-n[0].width).topRight.subdivide(.5),bottomRightOuter:c(r+y,i+w,f,d).bottomRight.subdivide(.5),bottomRightInner:c(r+Math.min(y,o-n[3].width),i+Math.min(w,a+n[0].width),Math.max(0,f-n[1].width),d-n[2].width).bottomRight.subdivide(.5),bottomLeftOuter:c(r,i+v,p,g).bottomLeft.subdivide(.5), +bottomLeftInner:c(r+n[3].width,i+v,Math.max(0,p-n[3].width),g-n[2].width).bottomLeft.subdivide(.5)}}function u(t,e,n,r){var i=function(t,e,n){return{x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}};return{start:t,startControl:e,endControl:n,end:r,subdivide:function(o){var a=i(t,e,o),s=i(e,n,o),c=i(n,r,o),l=i(a,s,o),h=i(s,c,o),f=i(l,h,o);return[u(t,a,l,f),u(f,h,c,r)]},curveTo:function(t){t.push(["bezierCurve",e.x,e.y,n.x,n.y,r.x,r.y])},curveToReversed:function(r){r.push(["bezierCurve",n.x,n.y,e.x,e.y,t.x,t.y])}}}function h(t,e,n,r,i,o,a){var s=[];return e[0]>0||e[1]>0?(s.push(["line",r[1].start.x,r[1].start.y]),r[1].curveTo(s)):s.push(["line",t.c1[0],t.c1[1]]),n[0]>0||n[1]>0?(s.push(["line",o[0].start.x,o[0].start.y]),o[0].curveTo(s),s.push(["line",a[0].end.x,a[0].end.y]),a[0].curveToReversed(s)):(s.push(["line",t.c2[0],t.c2[1]]),s.push(["line",t.c3[0],t.c3[1]])),e[0]>0||e[1]>0?(s.push(["line",i[1].end.x,i[1].end.y]),i[1].curveToReversed(s)):s.push(["line",t.c4[0],t.c4[1]]),s}function f(t,e,n,r,i,o,a){e[0]>0||e[1]>0?(t.push(["line",r[0].start.x,r[0].start.y]),r[0].curveTo(t),r[1].curveTo(t)):t.push(["line",o,a]),(n[0]>0||n[1]>0)&&t.push(["line",i[0].start.x,i[0].start.y])}function d(t){return t.cssInt("zIndex")<0}function p(t){return t.cssInt("zIndex")>0}function g(t){return 0===t.cssInt("zIndex")}function m(t){return["inline","inline-block","inline-table"].indexOf(t.css("display"))!==-1}function w(t){return t instanceof Y}function y(t){return t.node.data.trim().length>0}function v(t){return/^(normal|none|0px)$/.test(t.parent.css("letterSpacing"))}function b(t){return["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(e){var n=t.css("border"+e+"Radius"),r=n.split(" ");return r.length<=1&&(r[1]=r[0]),r.map(O)})}function x(t){return t.nodeType===Node.TEXT_NODE||t.nodeType===Node.ELEMENT_NODE}function k(t){var e=t.css("position"),n=["absolute","relative","fixed"].indexOf(e)!==-1?t.css("zIndex"):"auto";return"auto"!==n}function _(t){return"static"!==t.css("position")}function C(t){return"none"!==t.css("float")}function A(t){return["inline-block","inline-table"].indexOf(t.css("display"))!==-1}function S(t){var e=this;return function(){return!t.apply(e,arguments)}}function q(t){return t.node.nodeType===Node.ELEMENT_NODE}function T(t){return t.isPseudoElement===!0}function P(t){return t.node.nodeType===Node.TEXT_NODE}function I(t){return function(e,n){return e.cssInt("zIndex")+t.indexOf(e)/t.length-(n.cssInt("zIndex")+t.indexOf(n)/t.length)}}function E(t){return t.getOpacity()<1}function O(t){return parseInt(t,10)}function F(t){return t.width}function R(t){return t.node.nodeType!==Node.ELEMENT_NODE||["SCRIPT","HEAD","TITLE","OBJECT","BR","OPTION"].indexOf(t.node.nodeName)===-1}function B(t){return[].concat.apply([],t)}function D(t){var e=t.substr(0,1);return e===t.substr(t.length-1)&&e.match(/'|"/)?t.substr(1,t.length-2):t}function j(t){for(var e,n=[],r=0,i=!1;t.length;)z(t[r])===i?(e=t.splice(0,r),e.length&&n.push(M.ucs2.encode(e)),i=!i,r=0):r++,r>=t.length&&(e=t.splice(0,r),e.length&&n.push(M.ucs2.encode(e)));return n}function z(t){return[32,13,10,9,45].indexOf(t)!==-1}function N(t){return/[^\u0000-\u00ff]/.test(t)}var L=t("./log"),M=t("punycode"),U=t("./nodecontainer"),H=t("./textcontainer"),W=t("./pseudoelementcontainer"),X=t("./fontmetrics"),V=t("./color"),Y=t("./stackingcontext"),G=t("./utils"),J=G.bind,Q=G.getBounds,K=G.parseBackgrounds,$=G.offsetBounds;r.prototype.calculateOverflowClips=function(){this.nodes.forEach(function(t){if(q(t)){T(t)&&t.appendToDOM(),t.borders=this.parseBorders(t);var e="hidden"===t.css("overflow")?[t.borders.clip]:[],n=t.parseClip();n&&["absolute","fixed"].indexOf(t.css("position"))!==-1&&e.push([["rect",t.bounds.left+n.left,t.bounds.top+n.top,n.right-n.left,n.bottom-n.top]]),t.clip=i(t)?t.parent.clip.concat(e):e,t.backgroundClip="hidden"!==t.css("overflow")?t.clip.concat([t.borders.clip]):t.clip,T(t)&&t.cleanDOM()}else P(t)&&(t.clip=i(t)?t.parent.clip:[]);T(t)||(t.bounds=null)},this)},r.prototype.asyncRenderer=function(t,e,n){n=n||Date.now(),this.paint(t[this.renderIndex++]),t.length===this.renderIndex?e():n+20>Date.now()?this.asyncRenderer(t,e,n):setTimeout(J(function(){this.asyncRenderer(t,e)},this),0)},r.prototype.createPseudoHideStyles=function(t){this.createStyles(t,"."+W.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+':before { content: "" !important; display: none !important; }.'+W.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER+':after { content: "" !important; display: none !important; }')},r.prototype.disableAnimations=function(t){this.createStyles(t,"* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}")},r.prototype.createStyles=function(t,e){var n=t.createElement("style");n.innerHTML=e,t.body.appendChild(n)},r.prototype.getPseudoElements=function(t){var e=[[t]];if(t.node.nodeType===Node.ELEMENT_NODE){var n=this.getPseudoElement(t,":before"),r=this.getPseudoElement(t,":after");n&&e.push(n),r&&e.push(r)}return B(e)},r.prototype.getPseudoElement=function(t,e){var n=t.computedStyle(e);if(!n||!n.content||"none"===n.content||"-moz-alt-content"===n.content||"none"===n.display)return null;for(var r=D(n.content),i="url"===r.substr(0,3),a=document.createElement(i?"img":"html2canvaspseudoelement"),s=new W(a,t,e),c=n.length-1;c>=0;c--){var l=o(n.item(c));a.style[l]=n[l]}if(a.className=W.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE+" "+W.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER,i)return a.src=K(r)[0].args[0],[s];var u=document.createTextNode(r);return a.appendChild(u),[s,new H(u,s)]},r.prototype.getChildren=function(t){return B([].filter.call(t.node.childNodes,x).map(function(e){var n=[e.nodeType===Node.TEXT_NODE?new H(e,t):new U(e,t)].filter(R);return e.nodeType===Node.ELEMENT_NODE&&n.length&&"TEXTAREA"!==e.tagName?n[0].isElementVisible()?n.concat(this.getChildren(n[0])):[]:n},this))},r.prototype.newStackingContext=function(t,e){var n=new Y(e,t.getOpacity(),t.node,t.parent);t.cloneTo(n);var r=e?n.getParentStack(this):n.parent.stack;r.contexts.push(n),t.stack=n},r.prototype.createStackingContexts=function(){this.nodes.forEach(function(t){q(t)&&(this.isRootElement(t)||E(t)||k(t)||this.isBodyWithTransparentRoot(t)||t.hasTransform())?this.newStackingContext(t,!0):q(t)&&(_(t)&&g(t)||A(t)||C(t))?this.newStackingContext(t,!1):t.assignStack(t.parent.stack)},this)},r.prototype.isBodyWithTransparentRoot=function(t){return"BODY"===t.node.nodeName&&t.parent.color("backgroundColor").isTransparent()},r.prototype.isRootElement=function(t){return null===t.parent},r.prototype.sortStackingContexts=function(t){t.contexts.sort(I(t.contexts.slice(0))),t.contexts.forEach(this.sortStackingContexts,this)},r.prototype.parseTextBounds=function(t){return function(e,n,r){if("none"!==t.parent.css("textDecoration").substr(0,4)||0!==e.trim().length){if(this.support.rangeBounds&&!t.parent.hasTransform()){var i=r.slice(0,n).join("").length;return this.getRangeBounds(t.node,i,e.length)}if(t.node&&"string"==typeof t.node.data){var o=t.node.splitText(e.length),a=this.getWrapperBounds(t.node,t.parent.hasTransform());return t.node=o,a}}else this.support.rangeBounds&&!t.parent.hasTransform()||(t.node=t.node.splitText(e.length));return{}}},r.prototype.getWrapperBounds=function(t,e){var n=t.ownerDocument.createElement("html2canvaswrapper"),r=t.parentNode,i=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),r.replaceChild(n,t);var o=e?$(n):Q(n);return r.replaceChild(i,n),o},r.prototype.getRangeBounds=function(t,e,n){var r=this.range||(this.range=t.ownerDocument.createRange());return r.setStart(t,e),r.setEnd(t,e+n),r.getBoundingClientRect()},r.prototype.parse=function(t){var e=t.contexts.filter(d),n=t.children.filter(q),r=n.filter(S(C)),i=r.filter(S(_)).filter(S(m)),o=n.filter(S(_)).filter(C),s=r.filter(S(_)).filter(m),c=t.contexts.concat(r.filter(_)).filter(g),l=t.children.filter(P).filter(y),u=t.contexts.filter(p);e.concat(i).concat(o).concat(s).concat(c).concat(l).concat(u).forEach(function(t){this.renderQueue.push(t),w(t)&&(this.parse(t),this.renderQueue.push(new a))},this)},r.prototype.paint=function(t){try{t instanceof a?this.renderer.ctx.restore():P(t)?(T(t.parent)&&t.parent.appendToDOM(),this.paintText(t),T(t.parent)&&t.parent.cleanDOM()):this.paintNode(t)}catch(t){if(L(t),this.options.strict)throw t}},r.prototype.paintNode=function(t){w(t)&&(this.renderer.setOpacity(t.opacity),this.renderer.ctx.save(),t.hasTransform()&&this.renderer.setTransform(t.parseTransform())),"INPUT"===t.node.nodeName&&"checkbox"===t.node.type?this.paintCheckbox(t):"INPUT"===t.node.nodeName&&"radio"===t.node.type?this.paintRadio(t):this.paintElement(t)},r.prototype.paintElement=function(t){var e=t.parseBounds();this.renderer.clip(t.backgroundClip,function(){this.renderer.renderBackground(t,e,t.borders.borders.map(F))},this),this.renderer.clip(t.clip,function(){this.renderer.renderBorders(t.borders.borders)},this),this.renderer.clip(t.backgroundClip,function(){switch(t.node.nodeName){case"svg":case"IFRAME":var n=this.images.get(t.node);n?this.renderer.renderImage(t,e,t.borders,n):L("Error loading <"+t.node.nodeName+">",t.node);break;case"IMG":var r=this.images.get(t.node.src);r?this.renderer.renderImage(t,e,t.borders,r):L("Error loading <img>",t.node.src);break;case"CANVAS":this.renderer.renderImage(t,e,t.borders,{image:t.node});break;case"SELECT":case"INPUT":case"TEXTAREA":this.paintFormValue(t)}},this)},r.prototype.paintCheckbox=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height),r={width:n-1,height:n-1,top:e.top,left:e.left},i=[3,3],o=[i,i,i,i],a=[1,1,1,1].map(function(t){return{color:new V("#A5A5A5"),width:t}}),c=l(r,o,a);this.renderer.clip(t.backgroundClip,function(){this.renderer.rectangle(r.left+1,r.top+1,r.width-2,r.height-2,new V("#DEDEDE")),this.renderer.renderBorders(s(a,r,c,o)),t.node.checked&&(this.renderer.font(new V("#424242"),"normal","normal","bold",n-3+"px","arial"),this.renderer.text("✔",r.left+n/6,r.top+n-1))},this)},r.prototype.paintRadio=function(t){var e=t.parseBounds(),n=Math.min(e.width,e.height)-2;this.renderer.clip(t.backgroundClip,function(){this.renderer.circleStroke(e.left+1,e.top+1,n,new V("#DEDEDE"),1,new V("#A5A5A5")),t.node.checked&&this.renderer.circle(Math.ceil(e.left+n/4)+1,Math.ceil(e.top+n/4)+1,Math.floor(n/2),new V("#424242"))},this)},r.prototype.paintFormValue=function(t){var e=t.getValue();if(e.length>0){var n=t.node.ownerDocument,r=n.createElement("html2canvaswrapper"),i=["lineHeight","textAlign","fontFamily","fontWeight","fontSize","color","paddingLeft","paddingTop","paddingRight","paddingBottom","width","height","borderLeftStyle","borderTopStyle","borderLeftWidth","borderTopWidth","boxSizing","whiteSpace","wordWrap"];i.forEach(function(e){try{r.style[e]=t.css(e)}catch(t){L("html2canvas: Parse: Exception caught in renderFormValue: "+t.message)}});var o=t.parseBounds();r.style.position="fixed",r.style.left=o.left+"px",r.style.top=o.top+"px",r.textContent=e,n.body.appendChild(r),this.paintText(new H(r.firstChild,t)),n.body.removeChild(r)}},r.prototype.paintText=function(t){t.applyTextTransform();var e=M.ucs2.decode(t.node.data),n=this.options.letterRendering&&!v(t)||N(t.node.data)?e.map(function(t){return M.ucs2.encode([t])}):j(e),r=t.parent.fontWeight(),i=t.parent.css("fontSize"),o=t.parent.css("fontFamily"),a=t.parent.parseTextShadows();this.renderer.font(t.parent.color("color"),t.parent.css("fontStyle"),t.parent.css("fontVariant"),r,i,o),a.length?this.renderer.fontShadow(a[0].color,a[0].offsetX,a[0].offsetY,a[0].blur):this.renderer.clearShadow(),this.renderer.clip(t.parent.clip,function(){n.map(this.parseTextBounds(t),this).forEach(function(e,r){e&&(this.renderer.text(n[r],e.left,e.bottom),this.renderTextDecoration(t.parent,e,this.fontMetrics.getMetrics(o,i)))},this)},this)},r.prototype.renderTextDecoration=function(t,e,n){switch(t.css("textDecoration").split(" ")[0]){case"underline":this.renderer.rectangle(e.left,Math.round(e.top+n.baseline+n.lineWidth),e.width,1,t.color("color"));break;case"overline":this.renderer.rectangle(e.left,Math.round(e.top),e.width,1,t.color("color"));break;case"line-through":this.renderer.rectangle(e.left,Math.ceil(e.top+n.middle+n.lineWidth),e.width,1,t.color("color"))}};var Z={inset:[["darken",.6],["darken",.1],["darken",.1],["darken",.6]]};r.prototype.parseBorders=function(t){var e=t.parseBounds(),n=b(t),r=["Top","Right","Bottom","Left"].map(function(e,n){var r=t.css("border"+e+"Style"),i=t.color("border"+e+"Color");"inset"===r&&i.isBlack()&&(i=new V([255,255,255,i.a]));var o=Z[r]?Z[r][n]:null;return{width:t.cssInt("border"+e+"Width"),color:o?i[o[0]](o[1]):i,args:null}}),i=l(e,n,r);return{clip:this.parseBackgroundClip(t,i,r,n,e),borders:s(r,e,i,n)}},r.prototype.parseBackgroundClip=function(t,e,n,r,i){var o=t.css("backgroundClip"),a=[];switch(o){case"content-box":case"padding-box":f(a,r[0],r[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),f(a,r[1],r[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),f(a,r[2],r[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),f(a,r[3],r[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:f(a,r[0],r[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),f(a,r[1],r[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),f(a,r[2],r[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),f(a,r[3],r[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)}return a},e.exports=r},{"./color":3,"./fontmetrics":7,"./log":13,"./nodecontainer":14,"./pseudoelementcontainer":18,"./stackingcontext":21,"./textcontainer":25,"./utils":26,punycode:1}],16:[function(t,e,n){function r(t,e,n){var r="withCredentials"in new XMLHttpRequest;if(!e)return Promise.reject("No proxy configured");var i=a(r),c=s(e,t,i);return r?u(c):o(n,c,i).then(function(t){return p(t.content)})}function i(t,e,n){var r="crossOrigin"in new Image,i=a(r),c=s(e,t,i);return r?Promise.resolve(c):o(n,c,i).then(function(t){return"data:"+t.type+";base64,"+t.content})}function o(t,e,n){return new Promise(function(r,i){var o=t.createElement("script"),a=function(){delete window.html2canvas.proxy[n],t.body.removeChild(o)};window.html2canvas.proxy[n]=function(t){a(),r(t)},o.src=e,o.onerror=function(t){a(),i(t)},t.body.appendChild(o)})}function a(t){return t?"":"html2canvas_"+Date.now()+"_"+ ++g+"_"+Math.round(1e5*Math.random())}function s(t,e,n){return t+"?url="+encodeURIComponent(e)+(n.length?"&callback=html2canvas.proxy."+n:"")}function c(t){return function(e){var n,r=new DOMParser;try{n=r.parseFromString(e,"text/html")}catch(t){f("DOMParser not supported, falling back to createHTMLDocument"),n=document.implementation.createHTMLDocument("");try{n.open(),n.write(e),n.close()}catch(t){f("createHTMLDocument write not supported, falling back to document.body.innerHTML"),n.body.innerHTML=e}}var i=n.querySelector("base");if(!i||!i.href.host){var o=n.createElement("base");o.href=t,n.head.insertBefore(o,n.head.firstChild)}return n}}function l(t,e,n,i,o,a){return new r(t,e,window.document).then(c(t)).then(function(t){return d(t,n,i,o,a,0,0)})}var u=t("./xhr"),h=t("./utils"),f=t("./log"),d=t("./clone"),p=h.decode64,g=0;n.Proxy=r,n.ProxyURL=i,n.loadUrlDocument=l},{"./clone":2,"./log":13,"./utils":26,"./xhr":28}],17:[function(t,e,n){function r(t,e){var n=document.createElement("a");n.href=t,t=n.href,this.src=t,this.image=new Image;var r=this;this.promise=new Promise(function(n,o){r.image.crossOrigin="Anonymous",r.image.onload=n,r.image.onerror=o,new i(t,e,document).then(function(t){r.image.src=t}).catch(o)})}var i=t("./proxy").ProxyURL;e.exports=r},{"./proxy":16}],18:[function(t,e,n){function r(t,e,n){i.call(this,t,e),this.isPseudoElement=!0,this.before=":before"===n}var i=t("./nodecontainer");r.prototype.cloneTo=function(t){r.prototype.cloneTo.call(this,t),t.isPseudoElement=!0,t.before=this.before},r.prototype=Object.create(i.prototype),r.prototype.appendToDOM=function(){this.before?this.parent.node.insertBefore(this.node,this.parent.node.firstChild):this.parent.node.appendChild(this.node),this.parent.node.className+=" "+this.getHideClass()},r.prototype.cleanDOM=function(){this.node.parentNode.removeChild(this.node),this.parent.node.className=this.parent.node.className.replace(this.getHideClass(),"")},r.prototype.getHideClass=function(){return this["PSEUDO_HIDE_ELEMENT_CLASS_"+(this.before?"BEFORE":"AFTER")]},r.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE="___html2canvas___pseudoelement_before",r.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER="___html2canvas___pseudoelement_after",e.exports=r},{"./nodecontainer":14}],19:[function(t,e,n){function r(t,e,n,r,i){this.width=t,this.height=e,this.images=n,this.options=r,this.document=i}var i=t("./log");r.prototype.renderImage=function(t,e,n,r){var i=t.cssInt("paddingLeft"),o=t.cssInt("paddingTop"),a=t.cssInt("paddingRight"),s=t.cssInt("paddingBottom"),c=n.borders,l=e.width-(c[1].width+c[3].width+i+a),u=e.height-(c[0].width+c[2].width+o+s);this.drawImage(r,0,0,r.image.width||l,r.image.height||u,e.left+i+c[3].width,e.top+o+c[0].width,l,u)},r.prototype.renderBackground=function(t,e,n){e.height>0&&e.width>0&&(this.renderBackgroundColor(t,e),this.renderBackgroundImage(t,e,n))},r.prototype.renderBackgroundColor=function(t,e){var n=t.color("backgroundColor");n.isTransparent()||this.rectangle(e.left,e.top,e.width,e.height,n)},r.prototype.renderBorders=function(t){t.forEach(this.renderBorder,this)},r.prototype.renderBorder=function(t){t.color.isTransparent()||null===t.args||this.drawShape(t.args,t.color)},r.prototype.renderBackgroundImage=function(t,e,n){var r=t.parseBackgroundImages();r.reverse().forEach(function(r,o,a){switch(r.method){case"url":var s=this.images.get(r.args[0]);s?this.renderBackgroundRepeating(t,e,s,a.length-(o+1),n):i("Error loading background-image",r.args[0]);break;case"linear-gradient":case"gradient":var c=this.images.get(r.value);c?this.renderBackgroundGradient(c,e,n):i("Error loading background-image",r.args[0]);break;case"none":break;default:i("Unknown background-image type",r.args[0])}},this)},r.prototype.renderBackgroundRepeating=function(t,e,n,r,i){var o=t.parseBackgroundSize(e,n.image,r),a=t.parseBackgroundPosition(e,n.image,r,o),s=t.parseBackgroundRepeat(r);switch(s){case"repeat-x":case"repeat no-repeat":this.backgroundRepeatShape(n,a,o,e,e.left+i[3],e.top+a.top+i[0],99999,o.height,i);break;case"repeat-y":case"no-repeat repeat":this.backgroundRepeatShape(n,a,o,e,e.left+a.left+i[3],e.top+i[0],o.width,99999,i);break;case"no-repeat":this.backgroundRepeatShape(n,a,o,e,e.left+a.left+i[3],e.top+a.top+i[0],o.width,o.height,i);break;default:this.renderBackgroundRepeat(n,a,o,{top:e.top,left:e.left},i[3],i[0])}},e.exports=r},{"./log":13}],20:[function(t,e,n){function r(t,e){o.apply(this,arguments),this.canvas=this.options.canvas||this.document.createElement("canvas"),this.options.canvas||(this.canvas.width=t,this.canvas.height=e),this.ctx=this.canvas.getContext("2d"),this.taintCtx=this.document.createElement("canvas").getContext("2d"),this.ctx.textBaseline="bottom",this.variables={},s("Initialized CanvasRenderer with size",t,"x",e)}function i(t){return t.length>0}var o=t("../renderer"),a=t("../lineargradientcontainer"),s=t("../log");r.prototype=Object.create(o.prototype),r.prototype.setFillStyle=function(t){return this.ctx.fillStyle="object"==typeof t&&t.isColor?t.toString():t,this.ctx},r.prototype.rectangle=function(t,e,n,r,i){this.setFillStyle(i).fillRect(t,e,n,r)},r.prototype.circle=function(t,e,n,r){this.setFillStyle(r),this.ctx.beginPath(),this.ctx.arc(t+n/2,e+n/2,n/2,0,2*Math.PI,!0),this.ctx.closePath(),this.ctx.fill()},r.prototype.circleStroke=function(t,e,n,r,i,o){this.circle(t,e,n,r),this.ctx.strokeStyle=o.toString(),this.ctx.stroke()},r.prototype.drawShape=function(t,e){this.shape(t),this.setFillStyle(e).fill()},r.prototype.taints=function(t){if(null===t.tainted){this.taintCtx.drawImage(t.image,0,0);try{this.taintCtx.getImageData(0,0,1,1),t.tainted=!1}catch(e){this.taintCtx=document.createElement("canvas").getContext("2d"),t.tainted=!0}}return t.tainted},r.prototype.drawImage=function(t,e,n,r,i,o,a,s,c){this.taints(t)&&!this.options.allowTaint||this.ctx.drawImage(t.image,e,n,r,i,o,a,s,c)},r.prototype.clip=function(t,e,n){this.ctx.save(),t.filter(i).forEach(function(t){this.shape(t).clip()},this),e.call(n),this.ctx.restore()},r.prototype.shape=function(t){return this.ctx.beginPath(),t.forEach(function(t,e){"rect"===t[0]?this.ctx.rect.apply(this.ctx,t.slice(1)):this.ctx[0===e?"moveTo":t[0]+"To"].apply(this.ctx,t.slice(1))},this),this.ctx.closePath(),this.ctx},r.prototype.font=function(t,e,n,r,i,o){this.setFillStyle(t).font=[e,n,r,i,o].join(" ").split(",")[0]},r.prototype.fontShadow=function(t,e,n,r){this.setVariable("shadowColor",t.toString()).setVariable("shadowOffsetY",e).setVariable("shadowOffsetX",n).setVariable("shadowBlur",r)},r.prototype.clearShadow=function(){this.setVariable("shadowColor","rgba(0,0,0,0)")},r.prototype.setOpacity=function(t){this.ctx.globalAlpha=t},r.prototype.setTransform=function(t){this.ctx.translate(t.origin[0],t.origin[1]),this.ctx.transform.apply(this.ctx,t.matrix),this.ctx.translate(-t.origin[0],-t.origin[1])},r.prototype.setVariable=function(t,e){return this.variables[t]!==e&&(this.variables[t]=this.ctx[t]=e),this},r.prototype.text=function(t,e,n){this.ctx.fillText(t,e,n)},r.prototype.backgroundRepeatShape=function(t,e,n,r,i,o,a,s,c){var l=[["line",Math.round(i),Math.round(o)],["line",Math.round(i+a),Math.round(o)],["line",Math.round(i+a),Math.round(s+o)],["line",Math.round(i),Math.round(s+o)]];this.clip([l],function(){this.renderBackgroundRepeat(t,e,n,r,c[3],c[0])},this)},r.prototype.renderBackgroundRepeat=function(t,e,n,r,i,o){var a=Math.round(r.left+e.left+i),s=Math.round(r.top+e.top+o);this.setFillStyle(this.ctx.createPattern(this.resizeImage(t,n),"repeat")),this.ctx.translate(a,s),this.ctx.fill(),this.ctx.translate(-a,-s)},r.prototype.renderBackgroundGradient=function(t,e){if(t instanceof a){var n=this.ctx.createLinearGradient(e.left+e.width*t.x0,e.top+e.height*t.y0,e.left+e.width*t.x1,e.top+e.height*t.y1);t.colorStops.forEach(function(t){n.addColorStop(t.stop,t.color.toString())}),this.rectangle(e.left,e.top,e.width,e.height,n)}},r.prototype.resizeImage=function(t,e){var n=t.image;if(n.width===e.width&&n.height===e.height)return n;var r,i=document.createElement("canvas");return i.width=e.width,i.height=e.height,r=i.getContext("2d"),r.drawImage(n,0,0,n.width,n.height,0,0,e.width,e.height),i},e.exports=r},{"../lineargradientcontainer":12,"../log":13,"../renderer":19}],21:[function(t,e,n){function r(t,e,n,r){i.call(this,n,r),this.ownStacking=t,this.contexts=[],this.children=[],this.opacity=(this.parent?this.parent.stack.opacity:1)*e}var i=t("./nodecontainer");r.prototype=Object.create(i.prototype),r.prototype.getParentStack=function(t){var e=this.parent?this.parent.stack:null;return e?e.ownStacking?e:e.getParentStack(t):t.stack},e.exports=r},{"./nodecontainer":14}],22:[function(t,e,n){function r(t){this.rangeBounds=this.testRangeBounds(t),this.cors=this.testCORS(),this.svg=this.testSVG()}r.prototype.testRangeBounds=function(t){var e,n,r,i,o=!1;return t.createRange&&(e=t.createRange(),e.getBoundingClientRect&&(n=t.createElement("boundtest"),n.style.height="123px",n.style.display="block",t.body.appendChild(n),e.selectNode(n),r=e.getBoundingClientRect(),i=r.height,123===i&&(o=!0),t.body.removeChild(n))),o},r.prototype.testCORS=function(){return"undefined"!=typeof(new Image).crossOrigin},r.prototype.testSVG=function(){var t=new Image,e=document.createElement("canvas"),n=e.getContext("2d");t.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{n.drawImage(t,0,0),e.toDataURL()}catch(t){return!1}return!0},e.exports=r},{}],23:[function(t,e,n){function r(t){this.src=t,this.image=null;var e=this;this.promise=this.hasFabric().then(function(){return e.isInline(t)?Promise.resolve(e.inlineFormatting(t)):i(t)}).then(function(t){return new Promise(function(n){window.html2canvas.svg.fabric.loadSVGFromString(t,e.createCanvas.call(e,n))})})}var i=t("./xhr"),o=t("./utils").decode64;r.prototype.hasFabric=function(){return window.html2canvas.svg&&window.html2canvas.svg.fabric?Promise.resolve():Promise.reject(new Error("html2canvas.svg.js is not loaded, cannot render svg"))},r.prototype.inlineFormatting=function(t){return/^data:image\/svg\+xml;base64,/.test(t)?this.decode64(this.removeContentType(t)):this.removeContentType(t)},r.prototype.removeContentType=function(t){return t.replace(/^data:image\/svg\+xml(;base64)?,/,"")},r.prototype.isInline=function(t){return/^data:image\/svg\+xml/i.test(t)},r.prototype.createCanvas=function(t){var e=this;return function(n,r){var i=new window.html2canvas.svg.fabric.StaticCanvas("c");e.image=i.lowerCanvasEl,i.setWidth(r.width).setHeight(r.height).add(window.html2canvas.svg.fabric.util.groupSVGElements(n,r)).renderAll(),t(i.lowerCanvasEl)}},r.prototype.decode64=function(t){return"function"==typeof window.atob?window.atob(t):o(t)},e.exports=r},{"./utils":26,"./xhr":28}],24:[function(t,e,n){function r(t,e){this.src=t,this.image=null;var n=this;this.promise=e?new Promise(function(e,r){n.image=new Image,n.image.onload=e,n.image.onerror=r,n.image.src="data:image/svg+xml,"+(new XMLSerializer).serializeToString(t),n.image.complete===!0&&e(n.image)}):this.hasFabric().then(function(){return new Promise(function(e){window.html2canvas.svg.fabric.parseSVGDocument(t,n.createCanvas.call(n,e))})})}var i=t("./svgcontainer");r.prototype=Object.create(i.prototype),e.exports=r},{"./svgcontainer":23}],25:[function(t,e,n){function r(t,e){o.call(this,t,e)}function i(t,e,n){if(t.length>0)return e+n.toUpperCase()}var o=t("./nodecontainer");r.prototype=Object.create(o.prototype),r.prototype.applyTextTransform=function(){this.node.data=this.transform(this.parent.css("textTransform"))},r.prototype.transform=function(t){var e=this.node.data;switch(t){case"lowercase":return e.toLowerCase();case"capitalize":return e.replace(/(^|\s|:|-|\(|\))([a-z])/g,i);case"uppercase":return e.toUpperCase();default:return e}},e.exports=r},{"./nodecontainer":14}],26:[function(t,e,n){n.smallImage=function(){return"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},n.bind=function(t,e){return function(){return t.apply(e,arguments)}},/* + * base64-arraybuffer + * https://github.com/niklasvh/base64-arraybuffer + * + * Copyright (c) 2012 Niklas von Hertzen + * Licensed under the MIT license. + */ +n.decode64=function(t){var e,n,r,i,o,a,s,c,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=t.length,h="";for(e=0;e<u;e+=4)n=l.indexOf(t[e]),r=l.indexOf(t[e+1]),i=l.indexOf(t[e+2]),o=l.indexOf(t[e+3]),a=n<<2|r>>4,s=(15&r)<<4|i>>2,c=(3&i)<<6|o,h+=64===i?String.fromCharCode(a):64===o||o===-1?String.fromCharCode(a,s):String.fromCharCode(a,s,c);return h},n.getBounds=function(t){if(t.getBoundingClientRect){var e=t.getBoundingClientRect(),n=null==t.offsetWidth?e.width:t.offsetWidth;return{top:e.top,bottom:e.bottom||e.top+e.height,right:e.left+n,left:e.left,width:n,height:null==t.offsetHeight?e.height:t.offsetHeight}}return{}},n.offsetBounds=function(t){var e=t.offsetParent?n.offsetBounds(t.offsetParent):{top:0,left:0};return{top:t.offsetTop+e.top,bottom:t.offsetTop+t.offsetHeight+e.top,right:t.offsetLeft+e.left+t.offsetWidth,left:t.offsetLeft+e.left,width:t.offsetWidth,height:t.offsetHeight}},n.parseBackgrounds=function(t){var e,n,r,i,o,a,s,c=" \r\n\t",l=[],u=0,h=0,f=function(){e&&('"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&s.push(n),"-"===e.substr(0,1)&&(i=e.indexOf("-",1)+1)>0&&(r=e.substr(0,i),e=e.substr(i)),l.push({prefix:r,method:e.toLowerCase(),value:o,args:s,image:null})),s=[],e=r=n=o=""};return s=[],e=r=n=o="",t.split("").forEach(function(t){if(!(0===u&&c.indexOf(t)>-1)){switch(t){case'"':a?a===t&&(a=null):a=t;break;case"(":if(a)break;if(0===u)return u=1,void(o+=t);h++;break;case")":if(a)break;if(1===u){if(0===h)return u=0,o+=t,void f();h--}break;case",":if(a)break;if(0===u)return void f();if(1===u&&0===h&&!e.match(/^url$/i))return s.push(n),n="",void(o+=t)}o+=t,0===u?e+=t:n+=t}}),f(),l}},{}],27:[function(t,e,n){function r(t){i.apply(this,arguments),this.type="linear"===t.args[0]?i.TYPES.LINEAR:i.TYPES.RADIAL}var i=t("./gradientcontainer");r.prototype=Object.create(i.prototype),e.exports=r},{"./gradientcontainer":9}],28:[function(t,e,n){function r(t){return new Promise(function(e,n){var r=new XMLHttpRequest;r.open("GET",t),r.onload=function(){200===r.status?e(r.responseText):n(new Error(r.statusText))},r.onerror=function(){n(new Error("Network Error"))},r.send()})}e.exports=r},{}]},{},[4])(4)}),/* +# PNG.js +# Copyright (c) 2011 Devon Govett +# MIT LICENSE +# +# +*/ +function(t){var e;e=function(){function e(t){var e,n,r,i,o,a,s,c,l,u,h,f,d,p,g;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},a=null;;){switch(e=this.readUInt32(),u=function(){var t,e;for(e=[],s=t=0;t<4;s=++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":a&&this.animation.frames.push(a),this.pos+=4,a={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},o=this.readUInt16(),i=this.readUInt16()||100,a.delay=1e3*o/i,a.disposeOp=this.data[this.pos++],a.blendOp=this.data[this.pos++],a.data=[];break;case"IDAT":case"fdAT":for("fdAT"===u&&(this.pos+=4,e-=4),t=(null!=a?a.data:void 0)||this.imgData,s=d=0;0<=e?d<e:d>e;s=0<=e?++d:--d)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(r=this.palette.length/3,this.transparency.indexed=this.read(e),this.transparency.indexed.length>r)throw new Error("More transparent colors than palette size");if(h=r-this.transparency.indexed.length,h>0)for(s=p=0;0<=h?p<h:p>h;s=0<=h?++p:--p)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":f=this.read(e),c=f.indexOf(0),l=String.fromCharCode.apply(String,f.slice(0,c)),this.text[l]=String.fromCharCode.apply(String,f.slice(c+1));break;case"IEND":return a&&this.animation.frames.push(a),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(g=this.colorType)||6===g,n=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*n,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}var n,r,i,o,a,s,l,u;e.load=function(t,n,r){var i;return"function"==typeof n&&(r=n),i=new XMLHttpRequest,i.open("GET",t,!0),i.responseType="arraybuffer",i.onload=function(){var t,o;return t=new Uint8Array(i.response||i.mozResponseArrayBuffer),o=new e(t),"function"==typeof(null!=n?n.getContext:void 0)&&o.render(n),"function"==typeof r?r(o):void 0},i.send(null)},o=0,i=1,a=2,r=0,n=1,e.prototype.read=function(t){var e,n,r;for(r=[],e=n=0;0<=t?n<t:n>t;e=0<=t?++n:--n)r.push(this.data[this.pos++]);return r},e.prototype.readUInt32=function(){var t,e,n,r;return t=this.data[this.pos++]<<24,e=this.data[this.pos++]<<16,n=this.data[this.pos++]<<8,r=this.data[this.pos++],t|e|n|r},e.prototype.readUInt16=function(){var t,e;return t=this.data[this.pos++]<<8,e=this.data[this.pos++],t|e},e.prototype.decodePixels=function(t){var e,n,r,i,o,a,s,l,u,h,f,d,p,g,m,w,y,v,b,x,k,_,C;if(null==t&&(t=this.imgData),0===t.length)return new Uint8Array(0);for(t=new c(t),t=t.getBytes(),d=this.pixelBitlength/8,w=d*this.width,p=new Uint8Array(w*this.height),a=t.length,m=0,g=0,n=0;g<a;){switch(t[g++]){case 0:for(i=b=0;b<w;i=b+=1)p[n++]=t[g++];break;case 1:for(i=x=0;x<w;i=x+=1)e=t[g++],o=i<d?0:p[n-d],p[n++]=(e+o)%256;break;case 2:for(i=k=0;k<w;i=k+=1)e=t[g++],r=(i-i%d)/d,y=m&&p[(m-1)*w+r*d+i%d],p[n++]=(y+e)%256;break;case 3:for(i=_=0;_<w;i=_+=1)e=t[g++],r=(i-i%d)/d,o=i<d?0:p[n-d],y=m&&p[(m-1)*w+r*d+i%d],p[n++]=(e+Math.floor((o+y)/2))%256;break;case 4:for(i=C=0;C<w;i=C+=1)e=t[g++],r=(i-i%d)/d,o=i<d?0:p[n-d],0===m?y=v=0:(y=p[(m-1)*w+r*d+i%d],v=r&&p[(m-1)*w+(r-1)*d+i%d]),s=o+y-v,l=Math.abs(s-o),h=Math.abs(s-y),f=Math.abs(s-v),u=l<=h&&l<=f?o:h<=f?y:v,p[n++]=(e+u)%256;break;default:throw new Error("Invalid filter algorithm: "+t[g-1])}m++}return p},e.prototype.decodePalette=function(){var t,e,n,r,i,o,a,s,c,l;for(r=this.palette,a=this.transparency.indexed||[],o=new Uint8Array((a.length||0)+r.length),i=0,n=r.length,t=0,e=s=0,c=r.length;s<c;e=s+=3)o[i++]=r[e],o[i++]=r[e+1],o[i++]=r[e+2],o[i++]=null!=(l=a[t++])?l:255;return o},e.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,c,l,u,h,f;if(r=this.colors,u=null,n=this.hasAlphaChannel,this.palette.length&&(u=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),r=4,n=!0),i=t.data||t,l=i.length,a=u||e,o=s=0,1===r)for(;o<l;)c=u?4*e[o/4]:s,h=a[c++],i[o++]=h,i[o++]=h,i[o++]=h,i[o++]=n?a[c++]:255,s=c;else for(;o<l;)c=u?4*e[o/4]:s,i[o++]=a[c++],i[o++]=a[c++],i[o++]=a[c++],i[o++]=n?a[c++]:255,s=c},e.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t};try{l=t.document.createElement("canvas"),u=l.getContext("2d")}catch(t){return-1}return s=function(t){var e;return u.width=t.width,u.height=t.height,u.clearRect(0,0,t.width,t.height),u.putImageData(t,0,0),e=new Image,e.src=l.toDataURL(),e},e.prototype.decodeFrames=function(t){var e,n,r,i,o,a,c,l;if(this.animation){for(c=this.animation.frames,l=[],n=o=0,a=c.length;o<a;n=++o)e=c[n],r=t.createImageData(e.width,e.height),i=this.decodePixels(new Uint8Array(e.data)),this.copyToImageData(r,i),e.imageData=r,l.push(e.image=s(r));return l}},e.prototype.renderFrame=function(t,e){var n,o,s;return o=this.animation.frames,n=o[e],s=o[e-1],0===e&&t.clearRect(0,0,this.width,this.height),(null!=s?s.disposeOp:void 0)===i?t.clearRect(s.xOffset,s.yOffset,s.width,s.height):(null!=s?s.disposeOp:void 0)===a&&t.putImageData(s.imageData,s.xOffset,s.yOffset),n.blendOp===r&&t.clearRect(n.xOffset,n.yOffset,n.width,n.height),t.drawImage(n.image,n.xOffset,n.yOffset)},e.prototype.animate=function(t){var e,n,r,i,o,a,s=this;return n=0,a=this.animation,i=a.numFrames,r=a.frames,o=a.numPlays,(e=function(){var a,c;if(a=n++%i,c=r[a],s.renderFrame(t,a),i>1&&n/i<o)return s.animation._timeout=setTimeout(e,c.delay)})()},e.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},e.prototype.render=function(t){var e,n;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext("2d"),this.animation?(this.decodeFrames(e),this.animate(e)):(n=e.createImageData(this.width,this.height),this.copyToImageData(n,this.decodePixels()),e.putImageData(n,0,0))},e}(),t.PNG=e}("undefined"!=typeof window&&window||void 0);/* + * Extracted from pdf.js + * https://github.com/andreasgal/pdf.js + * + * Copyright (c) 2011 Mozilla Foundation + * + * Contributors: Andreas Gal <gal@mozilla.com> + * Chris G Jones <cjones@mozilla.com> + * Shaon Barman <shaon.barman@gmail.com> + * Vivien Nicolas <21@vingtetun.org> + * Justin D'Arcangelo <justindarc@gmail.com> + * Yury Delendik + * + * + */ +var s=function(){function t(){this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=null}return t.prototype={ensureBuffer:function(t){var e=this.buffer,n=e?e.byteLength:0;if(t<n)return e;for(var r=512;r<t;)r<<=1;for(var i=new Uint8Array(r),o=0;o<n;++o)i[o]=e[o];return this.buffer=i},getByte:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return this.buffer[this.pos++]},getBytes:function(t){var e=this.pos;if(t){this.ensureBuffer(e+t);for(var n=e+t;!this.eof&&this.bufferLength<n;)this.readBlock();var r=this.bufferLength;n>r&&(n=r)}else{for(;!this.eof;)this.readBlock();var n=this.bufferLength}return this.pos=n,this.buffer.subarray(e,n)},lookChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos])},getChar:function(){for(var t=this.pos;this.bufferLength<=t;){if(this.eof)return null;this.readBlock()}return String.fromCharCode(this.buffer[this.pos++])},makeSubStream:function(t,e,n){for(var r=t+e;this.bufferLength<=r&&!this.eof;)this.readBlock();return new Stream(this.buffer,t,e,n)},skip:function(t){t||(t=1),this.pos+=t},reset:function(){this.pos=0}},t}(),c=function(){function t(t){throw new Error(t)}function e(e){var n=0,r=e[n++],i=e[n++];r!=-1&&i!=-1||t("Invalid header in flate stream"),8!=(15&r)&&t("Unknown compression method in flate stream"),((r<<8)+i)%31!=0&&t("Bad FCHECK in flate stream"),32&i&&t("FDICT bit set in flate stream"),this.bytes=e,this.bytesPos=n,this.codeSize=0,this.codeBuf=0,s.call(this)}if("undefined"!=typeof Uint32Array){var n=new Uint32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),r=new Uint32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),i=new Uint32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),o=[new Uint32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],a=[new Uint32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];return e.prototype=Object.create(s.prototype),e.prototype.getBits=function(e){for(var n,r=this.codeSize,i=this.codeBuf,o=this.bytes,a=this.bytesPos;r<e;)"undefined"==typeof(n=o[a++])&&t("Bad encoding in flate stream"),i|=n<<r,r+=8;return n=i&(1<<e)-1,this.codeBuf=i>>e,this.codeSize=r-=e,this.bytesPos=a,n},e.prototype.getCode=function(e){for(var n=e[0],r=e[1],i=this.codeSize,o=this.codeBuf,a=this.bytes,s=this.bytesPos;i<r;){var c;"undefined"==typeof(c=a[s++])&&t("Bad encoding in flate stream"),o|=c<<i,i+=8}var l=n[o&(1<<r)-1],u=l>>16,h=65535&l;return(0==i||i<u||0==u)&&t("Bad encoding in flate stream"),this.codeBuf=o>>u,this.codeSize=i-u,this.bytesPos=s,h},e.prototype.generateHuffmanTable=function(t){for(var e=t.length,n=0,r=0;r<e;++r)t[r]>n&&(n=t[r]);for(var i=1<<n,o=new Uint32Array(i),a=1,s=0,c=2;a<=n;++a,s<<=1,c<<=1)for(var l=0;l<e;++l)if(t[l]==a){for(var u=0,h=s,r=0;r<a;++r)u=u<<1|1&h,h>>=1;for(var r=u;r<i;r+=c)o[r]=a<<16|l;++s}return[o,n]},e.prototype.readBlock=function(){function e(t,e,n,r,i){for(var o=t.getBits(n)+r;o-- >0;)e[_++]=i}var s=this.getBits(3);if(1&s&&(this.eof=!0),s>>=1,0==s){var c,l=this.bytes,u=this.bytesPos;"undefined"==typeof(c=l[u++])&&t("Bad block header in flate stream");var h=c;"undefined"==typeof(c=l[u++])&&t("Bad block header in flate stream"),h|=c<<8,"undefined"==typeof(c=l[u++])&&t("Bad block header in flate stream");var f=c;"undefined"==typeof(c=l[u++])&&t("Bad block header in flate stream"),f|=c<<8,f!=(65535&~h)&&t("Bad uncompressed block length in flate stream"),this.codeBuf=0,this.codeSize=0;var d=this.bufferLength,p=this.ensureBuffer(d+h),g=d+h;this.bufferLength=g;for(var m=d;m<g;++m){if("undefined"==typeof(c=l[u++])){this.eof=!0;break}p[m]=c}return void(this.bytesPos=u)}var w,y;if(1==s)w=o,y=a;else if(2==s){for(var v=this.getBits(5)+257,b=this.getBits(5)+1,x=this.getBits(4)+4,k=Array(n.length),_=0;_<x;)k[n[_++]]=this.getBits(3);for(var C=this.generateHuffmanTable(k),A=0,_=0,S=v+b,q=new Array(S);_<S;){var T=this.getCode(C);16==T?e(this,q,2,3,A):17==T?e(this,q,3,3,A=0):18==T?e(this,q,7,11,A=0):q[_++]=A=T}w=this.generateHuffmanTable(q.slice(0,v)),y=this.generateHuffmanTable(q.slice(v,S))}else t("Unknown block type in flate stream");for(var p=this.buffer,P=p?p.length:0,I=this.bufferLength;;){var E=this.getCode(w);if(E<256)I+1>=P&&(p=this.ensureBuffer(I+1),P=p.length),p[I++]=E;else{if(256==E)return void(this.bufferLength=I);E-=257,E=r[E];var O=E>>16;O>0&&(O=this.getBits(O));var A=(65535&E)+O;E=this.getCode(y),E=i[E],O=E>>16,O>0&&(O=this.getBits(O));var F=(65535&E)+O;I+A>=P&&(p=this.ensureBuffer(I+A),P=p.length);for(var R=0;R<A;++R,++I)p[I]=p[I-F]}}},e}}();return function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";"undefined"==typeof t.btoa&&(t.btoa=function(t){var n,r,i,o,a,s,c,l,u=0,h=0,f="",d=[];if(!t)return t;do n=t.charCodeAt(u++),r=t.charCodeAt(u++),i=t.charCodeAt(u++),l=n<<16|r<<8|i,o=l>>18&63,a=l>>12&63,s=l>>6&63,c=63&l,d[h++]=e.charAt(o)+e.charAt(a)+e.charAt(s)+e.charAt(c);while(u<t.length);f=d.join("");var p=t.length%3;return(p?f.slice(0,p-3):f)+"===".slice(p||3)}),"undefined"==typeof t.atob&&(t.atob=function(t){var n,r,i,o,a,s,c,l,u=0,h=0,f="",d=[];if(!t)return t;t+="";do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),s=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),l=o<<18|a<<12|s<<6|c,n=l>>16&255,r=l>>8&255,i=255&l,64==s?d[h++]=String.fromCharCode(n):64==c?d[h++]=String.fromCharCode(n,r):d[h++]=String.fromCharCode(n,r,i);while(u<t.length);return f=d.join("")}),Array.prototype.map||(Array.prototype.map=function(t){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;for(var e=Object(this),n=e.length>>>0,r=new Array(n),i=arguments.length>1?arguments[1]:void 0,o=0;o<n;o++)o in e&&(r[o]=t.call(i,e[o],o,e));return r}),Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;for(var n=Object(this),r=n.length>>>0,i=0;i<r;i++)i in n&&t.call(e,n[i],i,n)}),Object.keys||(Object.keys=function(){var t=Object.prototype.hasOwnProperty,e=!{toString:null}.propertyIsEnumerable("toString"),n=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],r=n.length;return function(i){if("object"!=typeof i&&("function"!=typeof i||null===i))throw new TypeError;var o,a,s=[];for(o in i)t.call(i,o)&&s.push(o);if(e)for(a=0;a<r;a++)t.call(i,n[a])&&s.push(n[a]);return s}}()),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),String.prototype.trimLeft||(String.prototype.trimLeft=function(){return this.replace(/^\s+/g,"")}),String.prototype.trimRight||(String.prototype.trimRight=function(){return this.replace(/\s+$/g,"")})}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||void 0),e}); \ No newline at end of file diff --git a/assets/js/modernizr.min.js b/assets/js/modernizr.min.js new file mode 100644 index 0000000..40dd2a9 --- /dev/null +++ b/assets/js/modernizr.min.js @@ -0,0 +1 @@ +window.Modernizr=function(e,t,n){function r(e){b.cssText=e}function o(e,t){return r(S.join(e+";")+(t||""))}function a(e,t){return typeof e===t}function i(e,t){return!!~(""+e).indexOf(t)}function c(e,t){for(var r in e){var o=e[r];if(!i(o,"-")&&b[o]!==n)return"pfx"==t?o:!0}return!1}function s(e,t,r){for(var o in e){var i=t[e[o]];if(i!==n)return r===!1?e[o]:a(i,"function")?i.bind(r||t):i}return!1}function u(e,t,n){var r=e.charAt(0).toUpperCase()+e.slice(1),o=(e+" "+k.join(r+" ")+r).split(" ");return a(t,"string")||a(t,"undefined")?c(o,t):(o=(e+" "+T.join(r+" ")+r).split(" "),s(o,t,n))}function l(){p.input=function(n){for(var r=0,o=n.length;o>r;r++)j[n[r]]=!!(n[r]in E);return j.list&&(j.list=!(!t.createElement("datalist")||!e.HTMLDataListElement)),j}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),p.inputtypes=function(e){for(var r,o,a,i=0,c=e.length;c>i;i++)E.setAttribute("type",o=e[i]),r="text"!==E.type,r&&(E.value=x,E.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(o)&&E.style.WebkitAppearance!==n?(g.appendChild(E),a=t.defaultView,r=a.getComputedStyle&&"textfield"!==a.getComputedStyle(E,null).WebkitAppearance&&0!==E.offsetHeight,g.removeChild(E)):/^(search|tel)$/.test(o)||(r=/^(url|email)$/.test(o)?E.checkValidity&&E.checkValidity()===!1:E.value!=x)),P[e[i]]=!!r;return P}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d,f,m="2.8.3",p={},h=!0,g=t.documentElement,v="modernizr",y=t.createElement(v),b=y.style,E=t.createElement("input"),x=":)",w={}.toString,S=" -webkit- -moz- -o- -ms- ".split(" "),C="Webkit Moz O ms",k=C.split(" "),T=C.toLowerCase().split(" "),N={svg:"http://www.w3.org/2000/svg"},M={},P={},j={},$=[],D=$.slice,F=function(e,n,r,o){var a,i,c,s,u=t.createElement("div"),l=t.body,d=l||t.createElement("body");if(parseInt(r,10))for(;r--;)c=t.createElement("div"),c.id=o?o[r]:v+(r+1),u.appendChild(c);return a=["&#173;",'<style id="s',v,'">',e,"</style>"].join(""),u.id=v,(l?u:d).innerHTML+=a,d.appendChild(u),l||(d.style.background="",d.style.overflow="hidden",s=g.style.overflow,g.style.overflow="hidden",g.appendChild(d)),i=n(u,e),l?u.parentNode.removeChild(u):(d.parentNode.removeChild(d),g.style.overflow=s),!!i},z=function(t){var n=e.matchMedia||e.msMatchMedia;if(n)return n(t)&&n(t).matches||!1;var r;return F("@media "+t+" { #"+v+" { position: absolute; } }",function(t){r="absolute"==(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position}),r},A=function(){function e(e,o){o=o||t.createElement(r[e]||"div"),e="on"+e;var i=e in o;return i||(o.setAttribute||(o=t.createElement("div")),o.setAttribute&&o.removeAttribute&&(o.setAttribute(e,""),i=a(o[e],"function"),a(o[e],"undefined")||(o[e]=n),o.removeAttribute(e))),o=null,i}var r={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return e}(),L={}.hasOwnProperty;f=a(L,"undefined")||a(L.call,"undefined")?function(e,t){return t in e&&a(e.constructor.prototype[t],"undefined")}:function(e,t){return L.call(e,t)},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError;var n=D.call(arguments,1),r=function(){if(this instanceof r){var o=function(){};o.prototype=t.prototype;var a=new o,i=t.apply(a,n.concat(D.call(arguments)));return Object(i)===i?i:a}return t.apply(e,n.concat(D.call(arguments)))};return r}),M.flexbox=function(){return u("flexWrap")},M.flexboxlegacy=function(){return u("boxDirection")},M.canvas=function(){var e=t.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},M.canvastext=function(){return!(!p.canvas||!a(t.createElement("canvas").getContext("2d").fillText,"function"))},M.webgl=function(){return!!e.WebGLRenderingContext},M.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:F(["@media (",S.join("touch-enabled),("),v,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(e){n=9===e.offsetTop}),n},M.geolocation=function(){return"geolocation"in navigator},M.postmessage=function(){return!!e.postMessage},M.websqldatabase=function(){return!!e.openDatabase},M.indexedDB=function(){return!!u("indexedDB",e)},M.hashchange=function(){return A("hashchange",e)&&(t.documentMode===n||t.documentMode>7)},M.history=function(){return!(!e.history||!history.pushState)},M.draganddrop=function(){var e=t.createElement("div");return"draggable"in e||"ondragstart"in e&&"ondrop"in e},M.websockets=function(){return"WebSocket"in e||"MozWebSocket"in e},M.rgba=function(){return r("background-color:rgba(150,255,150,.5)"),i(b.backgroundColor,"rgba")},M.hsla=function(){return r("background-color:hsla(120,40%,100%,.5)"),i(b.backgroundColor,"rgba")||i(b.backgroundColor,"hsla")},M.multiplebgs=function(){return r("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(b.background)},M.backgroundsize=function(){return u("backgroundSize")},M.borderimage=function(){return u("borderImage")},M.borderradius=function(){return u("borderRadius")},M.boxshadow=function(){return u("boxShadow")},M.textshadow=function(){return""===t.createElement("div").style.textShadow},M.opacity=function(){return o("opacity:.55"),/^0.55$/.test(b.opacity)},M.cssanimations=function(){return u("animationName")},M.csscolumns=function(){return u("columnCount")},M.cssgradients=function(){var e="background-image:",t="gradient(linear,left top,right bottom,from(#9f9),to(white));",n="linear-gradient(left top,#9f9, white);";return r((e+"-webkit- ".split(" ").join(t+e)+S.join(n+e)).slice(0,-e.length)),i(b.backgroundImage,"gradient")},M.cssreflections=function(){return u("boxReflect")},M.csstransforms=function(){return!!u("transform")},M.csstransforms3d=function(){var e=!!u("perspective");return e&&"webkitPerspective"in g.style&&F("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(t){e=9===t.offsetLeft&&3===t.offsetHeight}),e},M.csstransitions=function(){return u("transition")},M.fontface=function(){var e;return F('@font-face {font-family:"font";src:url("https://")}',function(n,r){var o=t.getElementById("smodernizr"),a=o.sheet||o.styleSheet,i=a?a.cssRules&&a.cssRules[0]?a.cssRules[0].cssText:a.cssText||"":"";e=/src/i.test(i)&&0===i.indexOf(r.split(" ")[0])}),e},M.generatedcontent=function(){var e;return F(["#",v,"{font:0/0 a}#",v,':after{content:"',x,'";visibility:hidden;font:3px/1 a}'].join(""),function(t){e=t.offsetHeight>=3}),e},M.video=function(){var e=t.createElement("video"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(r){}return n},M.audio=function(){var e=t.createElement("audio"),n=!1;try{(n=!!e.canPlayType)&&(n=new Boolean(n),n.ogg=e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=e.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=e.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(e.canPlayType("audio/x-m4a;")||e.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(r){}return n},M.localstorage=function(){try{return localStorage.setItem(v,v),localStorage.removeItem(v),!0}catch(e){return!1}},M.sessionstorage=function(){try{return sessionStorage.setItem(v,v),sessionStorage.removeItem(v),!0}catch(e){return!1}},M.webworkers=function(){return!!e.Worker},M.applicationcache=function(){return!!e.applicationCache},M.svg=function(){return!!t.createElementNS&&!!t.createElementNS(N.svg,"svg").createSVGRect},M.inlinesvg=function(){var e=t.createElement("div");return e.innerHTML="<svg/>",(e.firstChild&&e.firstChild.namespaceURI)==N.svg},M.smil=function(){return!!t.createElementNS&&/SVGAnimate/.test(w.call(t.createElementNS(N.svg,"animate")))},M.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(w.call(t.createElementNS(N.svg,"clipPath")))};for(var H in M)f(M,H)&&(d=H.toLowerCase(),p[d]=M[H](),$.push((p[d]?"":"no-")+d));return p.input||l(),p.addTest=function(e,t){if("object"==typeof e)for(var r in e)f(e,r)&&p.addTest(r,e[r]);else{if(e=e.toLowerCase(),p[e]!==n)return p;t="function"==typeof t?t():t,"undefined"!=typeof h&&h&&(g.className+=" "+(t?"":"no-")+e),p[e]=t}return p},r(""),y=E=null,function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=y.elements;return"string"==typeof e?e.split(" "):e}function o(e){var t=v[e[h]];return t||(t={},g++,e[h]=g,v[g]=t),t}function a(e,n,r){if(n||(n=t),l)return n.createElement(e);r||(r=o(n));var a;return a=r.cache[e]?r.cache[e].cloneNode():p.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e),!a.canHaveChildren||m.test(e)||a.tagUrn?a:r.frag.appendChild(a)}function i(e,n){if(e||(e=t),l)return e.createDocumentFragment();n=n||o(e);for(var a=n.frag.cloneNode(),i=0,c=r(),s=c.length;s>i;i++)a.createElement(c[i]);return a}function c(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return y.shivMethods?a(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-]+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(y,t.frag)}function s(e){e||(e=t);var r=o(e);return!y.shivCSS||u||r.hasCSS||(r.hasCSS=!!n(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||c(e,r),e}var u,l,d="3.7.0",f=e.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,h="_html5shiv",g=0,v={};!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",u="hidden"in e,l=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(n){u=!0,l=!0}}();var y={elements:f.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:d,shivCSS:f.shivCSS!==!1,supportsUnknownElements:l,shivMethods:f.shivMethods!==!1,type:"default",shivDocument:s,createElement:a,createDocumentFragment:i};e.html5=y,s(t)}(this,t),p._version=m,p._prefixes=S,p._domPrefixes=T,p._cssomPrefixes=k,p.mq=z,p.hasEvent=A,p.testProp=function(e){return c([e])},p.testAllProps=u,p.testStyles=F,p.prefixed=function(e,t,n){return t?u(e,t,n):u(e,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(h?" js "+$.join(" "):""),p}(this,this.document); \ No newline at end of file diff --git a/assets/js/select2.js b/assets/js/select2.js new file mode 100644 index 0000000..9def5ae --- /dev/null +++ b/assets/js/select2.js @@ -0,0 +1,2 @@ +/*! Select2 4.0.8 | https://github.com/select2/select2/blob/master/LICENSE.md */ +!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(u){var e=function(){if(u&&u.fn&&u.fn.select2&&u.fn.select2.amd)var e=u.fn.select2.amd;var t,n,r,h,o,s,f,g,m,v,y,_,i,a,w;function b(e,t){return i.call(e,t)}function l(e,t){var n,r,i,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if("."===(p=e[u]))e.splice(u,1),u-=1;else if(".."===p){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((h||g)&&f){for(u=(n=e.split("/")).length;0<u;u-=1){if(r=n.slice(0,u).join("/"),h)for(d=h.length;0<d;d-=1)if(i=(i=f[h.slice(0,d).join("/")])&&i[r]){o=i,a=u;break}if(o)break;!l&&g&&g[r]&&(l=g[r],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(b(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!b(m,e)&&!b(_,e))throw new Error("No "+e);return m[e]}function c(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function S(e){return e?c(e):[]}return e&&e.requirejs||(e?n=e:e={},m={},v={},y={},_={},i=Object.prototype.hasOwnProperty,a=[].slice,w=/\.js$/,f=function(e,t){var n,r=c(e),i=r[0],o=t[1];return e=r[1],i&&(n=D(i=l(i,o))),i?e=n&&n.normalize?n.normalize(e,function(t){return function(e){return l(e,t)}}(o)):l(e,o):(i=(r=c(e=l(e,o)))[0],e=r[1],i&&(n=D(i))),{f:i?i+"!"+e:e,n:e,pr:i,p:n}},g={require:function(e){return A(e)},exports:function(e){var t=m[e];return void 0!==t?t:m[e]={}},module:function(e){return{id:e,uri:"",exports:m[e],config:function(e){return function(){return y&&y.config&&y.config[e]||{}}}(e)}}},o=function(e,t,n,r){var i,o,s,a,l,c,u,d=[],p=typeof n;if(c=S(r=r||e),"undefined"==p||"function"==p){for(t=!t.length&&n.length?["require","exports","module"]:t,l=0;l<t.length;l+=1)if("require"===(o=(a=f(t[l],c)).f))d[l]=g.require(e);else if("exports"===o)d[l]=g.exports(e),u=!0;else if("module"===o)i=d[l]=g.module(e);else if(b(m,o)||b(v,o)||b(_,o))d[l]=D(o);else{if(!a.p)throw new Error(e+" missing "+o);a.p.load(a.n,A(r,!0),x(o),{}),d[l]=m[o]}s=n?n.apply(m[e],d):void 0,e&&(i&&i.exports!==h&&i.exports!==m[e]?m[e]=i.exports:s===h&&u||(m[e]=s))}else e&&(m[e]=n)},t=n=s=function(e,t,n,r,i){if("string"==typeof e)return g[e]?g[e](t):D(f(e,S(t)).f);if(!e.splice){if((y=e).deps&&s(y.deps,y.callback),!t)return;t.splice?(e=t,t=n,n=null):e=h}return t=t||function(){},"function"==typeof n&&(n=r,r=i),r?o(h,e,t,n):setTimeout(function(){o(h,e,t,n)},4),s},s.config=function(e){return s(e)},t._defined=m,(r=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),b(m,e)||b(v,e)||(v[e]=[e,t,n])}).amd={jQuery:!0},e.requirejs=t,e.require=n,e.define=r),e.define("almond",function(){}),e.define("jquery",[],function(){var e=u||$;return null==e&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),e}),e.define("select2/utils",["jquery"],function(o){var i={};function u(e){var t=e.prototype,n=[];for(var r in t){"function"==typeof t[r]&&"constructor"!==r&&n.push(r)}return n}i.Extend=function(e,t){var n={}.hasOwnProperty;function r(){this.constructor=e}for(var i in t)n.call(t,i)&&(e[i]=t[i]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},i.Decorate=function(r,i){var e=u(i),t=u(r);function o(){var e=Array.prototype.unshift,t=i.prototype.constructor.length,n=r.prototype.constructor;0<t&&(e.call(arguments,r.prototype.constructor),n=i.prototype.constructor),n.apply(this,arguments)}i.displayName=r.displayName,o.prototype=new function(){this.constructor=o};for(var n=0;n<t.length;n++){var s=t[n];o.prototype[s]=r.prototype[s]}function a(e){var t=function(){};e in o.prototype&&(t=o.prototype[e]);var n=i.prototype[e];return function(){return Array.prototype.unshift.call(arguments,t),n.apply(this,arguments)}}for(var l=0;l<e.length;l++){var c=e[l];o.prototype[c]=a(c)}return o};function e(){this.listeners={}}e.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},e.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},e.prototype.invoke=function(e,t){for(var n=0,r=e.length;n<r;n++)e[n].apply(this,t)},i.Observable=e,i.generateChars=function(e){for(var t="",n=0;n<e;n++){t+=Math.floor(36*Math.random()).toString(36)}return t},i.bind=function(e,t){return function(){e.apply(t,arguments)}},i._convertData=function(e){for(var t in e){var n=t.split("-"),r=e;if(1!==n.length){for(var i=0;i<n.length;i++){var o=n[i];(o=o.substring(0,1).toLowerCase()+o.substring(1))in r||(r[o]={}),i==n.length-1&&(r[o]=e[t]),r=r[o]}delete e[t]}}return e},i.hasScroll=function(e,t){var n=o(t),r=t.style.overflowX,i=t.style.overflowY;return(r!==i||"hidden"!==i&&"visible"!==i)&&("scroll"===r||"scroll"===i||(n.innerHeight()<t.scrollHeight||n.innerWidth()<t.scrollWidth))},i.escapeMarkup=function(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t]},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var r=e.results[n],i=this.option(r);t.push(i)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},r.prototype.position=function(e,t){t.find(".select2-results").append(e)},r.prototype.sort=function(e){return this.options.get("sorter")(e)},r.prototype.highlightFirstItem=function(){var e=this.$results.find(".select2-results__option[aria-selected]"),t=e.filter("[aria-selected=true]");0<t.length?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},r.prototype.setClasses=function(){var t=this;this.data.current(function(e){var r=h.map(e,function(e){return e.id.toString()});t.$results.find(".select2-results__option[aria-selected]").each(function(){var e=h(this),t=f.GetData(this,"data"),n=""+t.id;null!=t.element&&t.element.selected||null==t.element&&-1<h.inArray(n,r)?e.attr("aria-selected","true"):e.attr("aria-selected","false")})})},r.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},r.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},r.prototype.option=function(e){var t=document.createElement("li");t.className="select2-results__option";var n={role:"treeitem","aria-selected":"false"},r=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var i in(null!=e.element&&r.call(e.element,":disabled")||null==e.element&&e.disabled)&&(delete n["aria-selected"],n["aria-disabled"]="true"),null==e.id&&delete n["aria-selected"],null!=e._resultId&&(t.id=e._resultId),e.title&&(t.title=e.title),e.children&&(n.role="group",n["aria-label"]=e.text,delete n["aria-selected"]),n){var o=n[i];t.setAttribute(i,o)}if(e.children){var s=h(t),a=document.createElement("strong");a.className="select2-results__group";h(a);this.template(e,a);for(var l=[],c=0;c<e.children.length;c++){var u=e.children[c],d=this.option(u);l.push(d)}var p=h("<ul></ul>",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):i<o&&l.$results.scrollTop(s)}}),t.on("results:focus",function(e){e.element.addClass("select2-results__option--highlighted")}),t.on("results:message",function(e){l.displayMessage(e)}),h.fn.mousewheel&&this.$results.on("mousewheel",function(e){var t=l.$results.scrollTop(),n=l.$results.get(0).scrollHeight-t+e.deltaY,r=0<e.deltaY&&t-e.deltaY<=0,i=e.deltaY<0&&n<=l.$results.height();r?(l.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):i&&(l.$results.scrollTop(l.$results.get(0).scrollHeight-l.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(e){var t=h(this),n=f.GetData(this,"data");"true"!==t.attr("aria-selected")?l.trigger("select",{originalEvent:e,data:n}):l.options.get("multiple")?l.trigger("unselect",{originalEvent:e,data:n}):l.trigger("close",{})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(e){var t=f.GetData(this,"data");l.getHighlightedResults().removeClass("select2-results__option--highlighted"),l.trigger("results:focus",{data:t,element:h(this)})})},r.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},r.prototype.destroy=function(){this.$results.remove()},r.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find("[aria-selected]").index(e),n=this.$results.offset().top,r=e.offset().top,i=this.$results.scrollTop()+(r-n),o=r-n;i-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=(e.id,e.id+"-results");this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex)}),e.on("disable",function(){n.$selection.attr("tabindex","-1")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){n(this);this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("<span></span>")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r),n.attr("title",t.title||t.text)}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,a){function n(e,t){n.__super__.constructor.apply(this,arguments)}return a.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('<ul class="select2-selection__rendered"></ul>'),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.options.get("disabled")){var t=i(this).parent(),n=a.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n<e.length;n++){var r=e[n],i=this.selectionContainer(),o=this.display(r,i);i.append(o),i.attr("title",r.title||r.text),a.StoreData(i[0],"data",r),t.push(i)}var s=this.$selection.find(".select2-selection__rendered");a.appendMany(s,t)}},n}),e.define("select2/selection/placeholder",["../utils"],function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();var r=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(r)},t}),e.define("select2/selection/allowClear",["jquery","../keys","../utils"],function(i,r,a){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(e){r._handleClear(e)}),t.on("keypress",function(e){r._handleKeyboardClear(e,t)})},e.prototype._handleClear=function(e,t){if(!this.options.get("disabled")){var n=this.$selection.find(".select2-selection__clear");if(0!==n.length){t.stopPropagation();var r=a.GetData(n[0],"data"),i=this.$element.val();this.$element.val(this.placeholder.id);var o={data:r};if(this.trigger("clear",o),o.prevented)this.$element.val(i);else{for(var s=0;s<r.length;s++)if(o={data:r[s]},this.trigger("unselect",o),o.prevented)return void this.$element.val(i);this.$element.trigger("change"),this.trigger("toggle",{})}}}},e.prototype._handleKeyboardClear=function(e,t,n){n.isOpen()||t.which!=r.DELETE&&t.which!=r.BACKSPACE||this._handleClear(t)},e.prototype.update=function(e,t){if(e.call(this,t),!(0<this.$selection.find(".select2-selection__placeholder").length||0===t.length)){var n=this.options.get("translations").get("removeAllItems"),r=i('<span class="select2-selection__clear" title="'+n()+'">&times;</span>');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,s,a){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){r.$search.attr("aria-activedescendant",e.id)}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===a.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0<t.length){var n=s.GetData(t[0],"data");r.searchRemoveChoice(n),e.preventDefault()}}});var i=document.documentMode,o=i&&i<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(e){o?r.$selection.off("input.search input.searchcheck"):r.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(e){if(o&&"input"===e.type)r.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=a.SHIFT&&t!=a.CTRL&&t!=a.ALT&&t!=a.TAB&&r.handleSearch(e)}})},e.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},e.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger("focus")},e.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="";""!==this.$search.attr("placeholder")?e=this.$selection.find(".select2-selection__rendered").innerWidth():e=.75*(this.$search.val().length+1)+"em";this.$search.css("width",e)},e}),e.define("select2/selection/eventRelay",["jquery"],function(s){function e(){}return e.prototype.bind=function(e,t,n){var r=this,i=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],o=["opening","closing","selecting","unselecting","clearing"];e.call(this,t,n),t.on("*",function(e,t){if(-1!==s.inArray(e,i)){t=t||{};var n=s.Event("select2:"+e,{params:t});r.$element.trigger(n),-1!==s.inArray(e,o)&&(t.prevented=n.isDefaultPrevented())}})},e}),e.define("select2/translation",["jquery","require"],function(t,n){function r(e){this.dict=e||{}}return r.prototype.all=function(){return this.dict},r.prototype.get=function(e){return this.dict[e]},r.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},r._cache={},r.loadPath=function(e){if(!(e in r._cache)){var t=n(e);r._cache[e]=t}return new r(r._cache[e])},r}),e.define("select2/diacritics",[],function(){return{"Ⓐ":"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","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"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","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"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","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"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","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"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","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"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","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),e.define("select2/data/base",["../utils"],function(r){function n(e,t){n.__super__.constructor.call(this)}return r.Extend(n,r.Observable),n.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},n.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},n.prototype.bind=function(e,t){},n.prototype.destroy=function(){},n.prototype.generateResultId=function(e,t){var n=e.id+"-result-";return n+=r.generateChars(4),null!=t.id?n+="-"+t.id.toString():n+="-"+r.generateChars(4),n},n}),e.define("select2/data/select",["./base","../utils","jquery"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var n=[],r=this;this.$element.find(":selected").each(function(){var e=l(this),t=r.item(e);n.push(t)}),e(n)},n.prototype.select=function(i){var o=this;if(i.selected=!0,l(i.element).is("option"))return i.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(e){var t=[];(i=[i]).push.apply(i,e);for(var n=0;n<i.length;n++){var r=i[n].id;-1===l.inArray(r,t)&&t.push(r)}o.$element.val(t),o.$element.trigger("change")});else{var e=i.id;this.$element.val(e),this.$element.trigger("change")}},n.prototype.unselect=function(i){var o=this;if(this.$element.prop("multiple")){if(i.selected=!1,l(i.element).is("option"))return i.element.selected=!1,void this.$element.trigger("change");this.current(function(e){for(var t=[],n=0;n<e.length;n++){var r=e[n].id;r!==i.id&&-1===l.inArray(r,t)&&t.push(r)}o.$element.val(t),o.$element.trigger("change")})}},n.prototype.bind=function(e,t){var n=this;(this.container=e).on("select",function(e){n.select(e.data)}),e.on("unselect",function(e){n.unselect(e.data)})},n.prototype.destroy=function(){this.$element.find("*").each(function(){a.RemoveData(this)})},n.prototype.query=function(r,e){var i=[],o=this;this.$element.children().each(function(){var e=l(this);if(e.is("option")||e.is("optgroup")){var t=o.item(e),n=o.matches(r,t);null!==n&&i.push(n)}}),e({results:i})},n.prototype.addOptions=function(e){a.appendMany(this.$element,e)},n.prototype.option=function(e){var t;e.children?(t=document.createElement("optgroup")).label=e.text:void 0!==(t=document.createElement("option")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);var n=l(t),r=this._normalizeItem(e);return r.element=t,a.StoreData(t,"data",r),n},n.prototype.item=function(e){var t={};if(null!=(t=a.GetData(e[0],"data")))return t;if(e.is("option"))t={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if(e.is("optgroup")){t={text:e.prop("label"),children:[],title:e.prop("title")};for(var n=e.children("option"),r=[],i=0;i<n.length;i++){var o=l(n[i]),s=this.item(o);r.push(s)}t.children=r}return(t=this._normalizeItem(t)).element=e[0],a.StoreData(e[0],"data",t),t},n.prototype._normalizeItem=function(e){e!==Object(e)&&(e={id:e,text:e});return null!=(e=l.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),l.extend({},{selected:!1,disabled:!1},e)},n.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},n}),e.define("select2/data/array",["./select","../utils","jquery"],function(e,f,g){function r(e,t){var n=t.get("data")||[];r.__super__.constructor.call(this,e,t),this.addOptions(this.convertToOptions(n))}return f.Extend(r,e),r.prototype.select=function(n){var e=this.$element.find("option").filter(function(e,t){return t.value==n.id.toString()});0===e.length&&(e=this.option(n),this.addOptions(e)),r.__super__.select.call(this,n)},r.prototype.convertToOptions=function(e){var t=this,n=this.$element.find("option"),r=n.map(function(){return t.item(g(this)).id}).get(),i=[];function o(e){return function(){return g(this).val()==e.id}}for(var s=0;s<e.length;s++){var a=this._normalizeItem(e[s]);if(0<=g.inArray(a.id,r)){var l=n.filter(o(a)),c=this.item(l),u=g.extend(!0,{},a,c),d=this.option(u);l.replaceWith(d)}else{var p=this.option(a);if(a.children){var h=this.convertToOptions(a.children);f.appendMany(p,h)}i.push(p)}}return i},r}),e.define("select2/data/ajax",["./array","../utils","jquery"],function(e,t,o){function n(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),n.__super__.constructor.call(this,e,t)}return t.Extend(n,e),n.prototype._applyDefaults=function(e){var t={data:function(e){return o.extend({},e,{q:e.term})},transport:function(e,t,n){var r=o.ajax(e);return r.then(t),r.fail(n),r}};return o.extend({},t,e,!0)},n.prototype.processResults=function(e){return e},n.prototype.query=function(n,r){var i=this;null!=this._request&&(o.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var t=o.extend({type:"GET"},this.ajaxOptions);function e(){var e=t.transport(t,function(e){var t=i.processResults(e,n);i.options.get("debug")&&window.console&&console.error&&(t&&t.results&&o.isArray(t.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),r(t)},function(){"status"in e&&(0===e.status||"0"===e.status)||i.trigger("results:message",{message:"errorLoading"})});i._request=e}"function"==typeof t.url&&(t.url=t.url.call(this.$element,n)),"function"==typeof t.data&&(t.data=t.data.call(this.$element,n)),this.ajaxOptions.delay&&null!=n.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(e,this.ajaxOptions.delay)):e()},n}),e.define("select2/data/tags",["jquery"],function(u){function e(e,t,n){var r=n.get("tags"),i=n.get("createTag");void 0!==i&&(this.createTag=i);var o=n.get("insertTag");if(void 0!==o&&(this.insertTag=o),e.call(this,t,n),u.isArray(r))for(var s=0;s<r.length;s++){var a=r[s],l=this._normalizeItem(a),c=this.option(l);this.$element.append(c)}}return e.prototype.query=function(e,c,u){var d=this;this._removeOldTags(),null!=c.term&&null==c.page?e.call(this,c,function e(t,n){for(var r=t.results,i=0;i<r.length;i++){var o=r[i],s=null!=o.children&&!e({results:o.children},!0);if((o.text||"").toUpperCase()===(c.term||"").toUpperCase()||s)return!n&&(t.data=r,void u(t))}if(n)return!0;var a=d.createTag(c);if(null!=a){var l=d.option(a);l.attr("data-select2-tag",!0),d.addOptions([l]),d.insertTag(r,a)}t.results=r,u(t)}):e.call(this,c,u)},e.prototype.createTag=function(e,t){var n=u.trim(t.term);return""===n?null:{id:n,text:n}},e.prototype.insertTag=function(e,t,n){t.unshift(n)},e.prototype._removeOldTags=function(e){this._lastTag;this.$element.find("option[data-select2-tag]").each(function(){this.selected||u(this).remove()})},e}),e.define("select2/data/tokenizer",["jquery"],function(d){function e(e,t,n){var r=n.get("tokenizer");void 0!==r&&(this.tokenizer=r),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".select2-search__field")},e.prototype.query=function(e,t,n){var r=this;t.term=t.term||"";var i=this.tokenizer(t,this.options,function(e){var t=r._normalizeItem(e);if(!r.$element.find("option").filter(function(){return d(this).val()===t.id}).length){var n=r.option(t);n.attr("data-select2-tag",!0),r._removeOldTags(),r.addOptions([n])}!function(e){r.trigger("select",{data:e})}(t)});i.term!==t.term&&(this.$search.length&&(this.$search.val(i.term),this.$search.trigger("focus")),t.term=i.term),e.call(this,t,n)},e.prototype.tokenizer=function(e,t,n,r){for(var i=n.get("tokenSeparators")||[],o=t.term,s=0,a=this.createTag||function(e){return{id:e.term,text:e.term}};s<o.length;){var l=o[s];if(-1!==d.inArray(l,i)){var c=o.substr(0,s),u=a(d.extend({},t,{term:c}));null!=u?(r(u),o=o.substr(s+1)||"",s=0):s++}else s++}return{term:o}},e}),e.define("select2/data/minimumInputLength",[],function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumInputLength",[],function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.query=function(n,r,i){var o=this;this.current(function(e){var t=null!=e?e.length:0;0<o.maximumSelectionLength&&t>=o.maximumSelectionLength?o.trigger("results:message",{message:"maximumSelected",args:{maximum:o.maximumSelectionLength}}):n.call(o,r,i)})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class="select2-dropdown"><span class="select2-results"></span></span>');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(i,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=i('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){i(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=n.get("dropdownParent")||f(document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this,i=!1;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),i||(i=!0,t.on("results:all",function(){r._positionDropdown(),r._resizeDropdown()}),t.on("results:append",function(){r._positionDropdown(),r._resizeDropdown()}))}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f("<span></span>"),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=a<i.top-s,u=l>i.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h=p.offset();d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r<t.length;r++){var i=t[r];i.children?n+=e(i.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e}),e.define("select2/dropdown/selectOnClose",["../utils"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("close",function(e){r._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalSelect2Event){var n=t.originalSelect2Event;if("select"===n._type||"unselect"===n._type)return}var r=this.getHighlightedResults();if(!(r.length<1)){var i=o.GetData(r[0],"data");null!=i.element&&i.element.selected||null==i.element&&i.selected||this.trigger("select",{data:i})}},e}),e.define("select2/dropdown/closeOnSelect",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(e){r._selectTriggered(e)}),t.on("unselect",function(e){r._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger("close",{originalEvent:n,originalSelect2Event:t})},e}),e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(f,g,m,v,y,_,$,w,b,A,x,t,D,S,E,C,O,T,q,L,j,I,P,k,R,U,M,z,e){function n(){this.reset()}return n.prototype.apply=function(t){if(null==(t=f.extend(!0,{},this.defaults,t)).dataAdapter){if(null!=t.ajax?t.dataAdapter=E:null!=t.data?t.dataAdapter=S:t.dataAdapter=D,0<t.minimumInputLength&&(t.dataAdapter=A.Decorate(t.dataAdapter,T)),0<t.maximumInputLength&&(t.dataAdapter=A.Decorate(t.dataAdapter,q)),0<t.maximumSelectionLength&&(t.dataAdapter=A.Decorate(t.dataAdapter,L)),t.tags&&(t.dataAdapter=A.Decorate(t.dataAdapter,C)),null==t.tokenSeparators&&null==t.tokenizer||(t.dataAdapter=A.Decorate(t.dataAdapter,O)),null!=t.query){var e=g(t.amdBase+"compat/query");t.dataAdapter=A.Decorate(t.dataAdapter,e)}if(null!=t.initSelection){var n=g(t.amdBase+"compat/initSelection");t.dataAdapter=A.Decorate(t.dataAdapter,n)}}if(null==t.resultsAdapter&&(t.resultsAdapter=m,null!=t.ajax&&(t.resultsAdapter=A.Decorate(t.resultsAdapter,k)),null!=t.placeholder&&(t.resultsAdapter=A.Decorate(t.resultsAdapter,P)),t.selectOnClose&&(t.resultsAdapter=A.Decorate(t.resultsAdapter,M))),null==t.dropdownAdapter){if(t.multiple)t.dropdownAdapter=j;else{var r=A.Decorate(j,I);t.dropdownAdapter=r}if(0!==t.minimumResultsForSearch&&(t.dropdownAdapter=A.Decorate(t.dropdownAdapter,U)),t.closeOnSelect&&(t.dropdownAdapter=A.Decorate(t.dropdownAdapter,z)),null!=t.dropdownCssClass||null!=t.dropdownCss||null!=t.adaptDropdownCssClass){var i=g(t.amdBase+"compat/dropdownCss");t.dropdownAdapter=A.Decorate(t.dropdownAdapter,i)}t.dropdownAdapter=A.Decorate(t.dropdownAdapter,R)}if(null==t.selectionAdapter){if(t.multiple?t.selectionAdapter=y:t.selectionAdapter=v,null!=t.placeholder&&(t.selectionAdapter=A.Decorate(t.selectionAdapter,_)),t.allowClear&&(t.selectionAdapter=A.Decorate(t.selectionAdapter,$)),t.multiple&&(t.selectionAdapter=A.Decorate(t.selectionAdapter,w)),null!=t.containerCssClass||null!=t.containerCss||null!=t.adaptContainerCssClass){var o=g(t.amdBase+"compat/containerCss");t.selectionAdapter=A.Decorate(t.selectionAdapter,o)}t.selectionAdapter=A.Decorate(t.selectionAdapter,b)}if("string"==typeof t.language)if(0<t.language.indexOf("-")){var s=t.language.split("-")[0];t.language=[t.language,s]}else t.language=[t.language];if(f.isArray(t.language)){var a=new x;t.language.push("en");for(var l=t.language,c=0;c<l.length;c++){var u=l[c],d={};try{d=x.loadPath(u)}catch(e){try{u=this.defaults.amdLanguageBase+u,d=x.loadPath(u)}catch(e){t.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+u+'" could not be automatically loaded. A fallback will be used instead.');continue}}a.extend(d)}t.translations=a}else{var p=x.loadPath(this.defaults.amdLanguageBase+"en"),h=new x(t.language);h.extend(p),t.translations=h}return t},n.prototype.reset=function(){function a(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return t[e]||e})}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:A.escapeMarkup,language:e,matcher:function e(t,n){if(""===f.trim(t.term))return n;if(n.children&&0<n.children.length){for(var r=f.extend(!0,{},n),i=n.children.length-1;0<=i;i--)null==e(t,n.children[i])&&r.children.splice(i,1);return 0<r.children.length?r:e(t,r)}var o=a(n.text).toUpperCase(),s=a(t.term).toUpperCase();return-1<o.indexOf(s)?n:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},n.prototype.set=function(e,t){var n={};n[f.camelCase(e)]=t;var r=A._convertData(n);f.extend(!0,this.defaults,r)},new n}),e.define("select2/options",["require","jquery","./defaults","./utils"],function(r,d,i,p){function e(e,t){if(this.options=e,null!=t&&this.fromElement(t),this.options=i.apply(this.options),t&&t.is("input")){var n=r(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=p.Decorate(this.options.dataAdapter,n)}}return e.prototype.fromElement=function(e){var t=["select2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.language&&(e.prop("lang")?this.options.language=e.prop("lang").toLowerCase():e.closest("[lang]").prop("lang")&&(this.options.language=e.closest("[lang]").prop("lang"))),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),p.GetData(e[0],"select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),p.StoreData(e[0],"data",p.GetData(e[0],"select2Tags")),p.StoreData(e[0],"tags",!0)),p.GetData(e[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),e.attr("ajax--url",p.GetData(e[0],"ajaxUrl")),p.StoreData(e[0],"ajax-Url",p.GetData(e[0],"ajaxUrl")));var n={};function r(e,t){return t.toUpperCase()}for(var i=0;i<e[0].attributes.length;i++){var o=e[0].attributes[i].name,s="data-";if(o.substr(0,s.length)==s){var a=o.substring(s.length),l=p.GetData(e[0],a);n[a.replace(/-([a-z])/g,r)]=l}}d.fn.jquery&&"1."==d.fn.jquery.substr(0,2)&&e[0].dataset&&(n=d.extend(!0,{},e[0].dataset,n));var c=d.extend(!0,{},p.GetData(e[0]),n);for(var u in c=p._convertData(c))-1<d.inArray(u,t)||(d.isPlainObject(this.options[u])?d.extend(this.options[u],c[u]):this.options[u]=c[u]);return this},e.prototype.get=function(e){return this.options[e]},e.prototype.set=function(e,t){this.options[e]=t},e}),e.define("select2/core",["jquery","./options","./utils","./keys"],function(i,c,u,r){var d=function(e,t){null!=u.GetData(e[0],"select2")&&u.GetData(e[0],"select2").destroy(),this.$element=e,this.id=this._generateId(e),t=t||{},this.options=new c(t,e),d.__super__.constructor.call(this);var n=e.attr("tabindex")||0;u.StoreData(e[0],"old-tabindex",n),e.attr("tabindex","-1");var r=this.options.get("dataAdapter");this.dataAdapter=new r(e,this.options);var i=this.render();this._placeContainer(i);var o=this.options.get("selectionAdapter");this.selection=new o(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,i);var s=this.options.get("dropdownAdapter");this.dropdown=new s(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,i);var a=this.options.get("resultsAdapter");this.results=new a(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){l.trigger("selection:update",{data:e})}),e.addClass("select2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),u.StoreData(e[0],"select2",this),e.data("select2",this)};return u.Extend(d,u.Observable),d.prototype._generateId=function(e){return"select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+u.generateChars(2):u.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},d.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},d.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var r=this._resolveWidth(e,"style");return null!=r?r:this._resolveWidth(e,"element")}if("element"==t){var i=e.outerWidth(!1);return i<=0?"auto":i+"px"}if("style"!=t)return"computedstyle"!=t?t:window.getComputedStyle(e[0]).width;var o=e.attr("style");if("string"!=typeof o)return null;for(var s=o.split(";"),a=0,l=s.length;a<l;a+=1){var c=s[a].replace(/\s/g,"").match(n);if(null!==c&&1<=c.length)return c[1]}return null},d.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},d.prototype._registerDomEvents=function(){var t=this;this.$element.on("change.select2",function(){t.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})}),this.$element.on("focus.select2",function(e){t.trigger("focus",e)}),this._syncA=u.bind(this._syncAttributes,this),this._syncS=u.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=e?(this._observer=new e(function(e){i.each(e,t._syncA),i.each(e,t._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",t._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",t._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",t._syncS,!1))},d.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerSelectionEvents=function(){var n=this,r=["toggle","focus"];this.selection.on("toggle",function(){n.toggleDropdown()}),this.selection.on("focus",function(e){n.focus(e)}),this.selection.on("*",function(e,t){-1===i.inArray(e,r)&&n.trigger(e,t)})},d.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerResultsEvents=function(){var n=this;this.results.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerEvents=function(){var n=this;this.on("open",function(){n.$container.addClass("select2-container--open")}),this.on("close",function(){n.$container.removeClass("select2-container--open")}),this.on("enable",function(){n.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){n.$container.addClass("select2-container--disabled")}),this.on("blur",function(){n.$container.removeClass("select2-container--focus")}),this.on("query",function(t){n.isOpen()||n.trigger("open",{}),this.dataAdapter.query(t,function(e){n.trigger("results:all",{data:e,query:t})})}),this.on("query:append",function(t){this.dataAdapter.query(t,function(e){n.trigger("results:append",{data:e,query:t})})}),this.on("keypress",function(e){var t=e.which;n.isOpen()?t===r.ESC||t===r.TAB||t===r.UP&&e.altKey?(n.close(),e.preventDefault()):t===r.ENTER?(n.trigger("results:select",{}),e.preventDefault()):t===r.SPACE&&e.ctrlKey?(n.trigger("results:toggle",{}),e.preventDefault()):t===r.UP?(n.trigger("results:previous",{}),e.preventDefault()):t===r.DOWN&&(n.trigger("results:next",{}),e.preventDefault()):(t===r.ENTER||t===r.SPACE||t===r.DOWN&&e.altKey)&&(n.open(),e.preventDefault())})},d.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},d.prototype._syncSubtree=function(e,t){var n=!1,r=this;if(!e||!e.target||"OPTION"===e.target.nodeName||"OPTGROUP"===e.target.nodeName){if(t)if(t.addedNodes&&0<t.addedNodes.length)for(var i=0;i<t.addedNodes.length;i++){t.addedNodes[i].selected&&(n=!0)}else t.removedNodes&&0<t.removedNodes.length&&(n=!0);else n=!0;n&&this.dataAdapter.current(function(e){r.trigger("selection:update",{data:e})})}},d.prototype.trigger=function(e,t){var n=d.__super__.trigger,r={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in r){var i=r[e],o={prevented:!1,name:e,args:t};if(n.call(this,i,o),o.prevented)return void(t.prevented=!0)}n.call(this,e,t)},d.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},d.prototype.open=function(){this.isOpen()||this.trigger("query",{})},d.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},d.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},d.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},d.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},d.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},d.prototype.data=function(){this.options.get("debug")&&0<arguments.length&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var t=[];return this.dataAdapter.current(function(e){t=e}),t},d.prototype.val=function(e){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==e||0===e.length)return this.$element.val();var t=e[0];i.isArray(t)&&(t=i.map(t,function(e){return e.toString()})),this.$element.val(t).trigger("change")},d.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",u.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),u.RemoveData(this.$element[0]),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},d.prototype.render=function(){var e=i('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1<i.inArray(t,a)?this:n}}return null==i.fn.select2.defaults&&(i.fn.select2.defaults=t),o}),{define:e.define,require:e.require}}(),t=e.require("jquery.select2");return u.fn.select2.amd=e,t}); \ No newline at end of file diff --git a/assets/js/waves.js b/assets/js/waves.js new file mode 100644 index 0000000..5bf3012 --- /dev/null +++ b/assets/js/waves.js @@ -0,0 +1,498 @@ + + +;(function(window) { + 'use strict'; + + var Waves = Waves || {}; + var $$ = document.querySelectorAll.bind(document); + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + var docElem, win, + box = {top: 0, left: 0}, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function convertStyle(obj) { + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 750, + + show: function(e, element) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = element || this; + + // Create ripple + var ripple = document.createElement('div'); + ripple.className = 'waves-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top); + var relativeX = (e.pageX - pos.left); + var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' waves-notransition'; + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('waves-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function(e) { + TouchHandler.touchup(e); + + var el = this; + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + var ripples = el.getElementsByClassName('waves-ripple'); + if (ripples.length > 0) { + ripple = ripples[ripples.length - 1]; + } else { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 350 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + var style = { + 'top': relativeY+'px', + 'left': relativeX+'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + try { + el.removeChild(ripple); + } catch(e) { + return false; + } + }, Effect.duration); + }, delay); + }, + + // Little hack to make <input> can perform waves effect + wrapInput: function(elements) { + for (var a = 0; a < elements.length; a++) { + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { + continue; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' waves-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + + /** + * Disable mousedown event for 500ms during and after touch + */ + var TouchHandler = { + /* uses an integer rather than bool so there's no issues with + * needing to clear timeouts if another touch event occurred + * within the 500ms. Cannot mouseup between touchstart and + * touchend, nor in the 500ms after touchend. */ + touches: 0, + allowEvent: function(e) { + var allow = true; + + if (e.type === 'touchstart') { + TouchHandler.touches += 1; //push + } else if (e.type === 'touchend' || e.type === 'touchcancel') { + setTimeout(function() { + if (TouchHandler.touches > 0) { + TouchHandler.touches -= 1; //pop after 500ms + } + }, 500); + } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { + allow = false; + } + + return allow; + }, + touchup: function(e) { + TouchHandler.allowEvent(e); + } + }; + + + /** + * Delegated click handler for .waves-effect element. + * returns null when .waves-effect element not in "click tree" + */ + function getWavesEffectElement(e) { + if (TouchHandler.allowEvent(e) === false) { + return null; + } + + var element = null; + var target = e.target || e.srcElement; + + while (target.parentElement !== null) { + if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { + element = target; + break; + } else if (target.classList.contains('waves-effect')) { + element = target; + break; + } + target = target.parentElement; + } + + return element; + } + + /** + * Bubble the click and show effect if .waves-effect elem was found + */ + function showEffect(e) { + var element = getWavesEffectElement(e); + + if (element !== null) { + Effect.show(e, element); + + if ('ontouchstart' in window) { + element.addEventListener('touchend', Effect.hide, false); + element.addEventListener('touchcancel', Effect.hide, false); + } + + element.addEventListener('mouseup', Effect.hide, false); + element.addEventListener('mouseleave', Effect.hide, false); + } + } + + Waves.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside <i> tag + Effect.wrapInput($$('.waves-effect')); + + if ('ontouchstart' in window) { + document.body.addEventListener('touchstart', showEffect, false); + } + + document.body.addEventListener('mousedown', showEffect, false); + }; + + /** + * Attach Waves to an input element (or any element which doesn't + * bubble mouseup/mousedown events). + * Intended to be used with dynamically loaded forms/inputs, or + * where the user doesn't want a delegated click handler. + */ + Waves.attach = function(element) { + //FUTURE: automatically add waves classes and allow users + // to specify them with an options param? Eg. light/classic/button + if (element.tagName.toLowerCase() === 'input') { + Effect.wrapInput([element]); + element = element.parentElement; + } + + if ('ontouchstart' in window) { + element.addEventListener('touchstart', showEffect, false); + } + + element.addEventListener('mousedown', showEffect, false); + }; + + window.Waves = Waves; + + document.addEventListener('DOMContentLoaded', function() { + Waves.displayEffect(); + }, false); + +})(window); + +/* +Tabs +*/ +/*! VelocityJS.org (1.2.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ +/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ +!function(e){function t(e){var t=e.length,r=$.type(e);return"function"===r||$.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===r||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var $=function(e,t){return new $.fn.init(e,t)};$.isWindow=function(e){return null!=e&&e==e.window},$.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?a[o.call(e)]||"object":typeof e},$.isArray=Array.isArray||function(e){return"array"===$.type(e)},$.isPlainObject=function(e){var t;if(!e||"object"!==$.type(e)||e.nodeType||$.isWindow(e))return!1;try{if(e.constructor&&!n.call(e,"constructor")&&!n.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}for(t in e);return void 0===t||n.call(e,t)},$.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},$.data=function(e,t,a){if(void 0===a){var n=e[$.expando],o=n&&r[n];if(void 0===t)return o;if(o&&t in o)return o[t]}else if(void 0!==t){var n=e[$.expando]||(e[$.expando]=++$.uuid);return r[n]=r[n]||{},r[n][t]=a,a}},$.removeData=function(e,t){var a=e[$.expando],n=a&&r[a];n&&$.each(t,function(e,t){delete n[t]})},$.extend=function(){var e,t,r,a,n,o,i=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof i&&(u=i,i=arguments[s]||{},s++),"object"!=typeof i&&"function"!==$.type(i)&&(i={}),s===l&&(i=this,s--);l>s;s++)if(null!=(n=arguments[s]))for(a in n)e=i[a],r=n[a],i!==r&&(u&&r&&($.isPlainObject(r)||(t=$.isArray(r)))?(t?(t=!1,o=e&&$.isArray(e)?e:[]):o=e&&$.isPlainObject(e)?e:{},i[a]=$.extend(u,o,r)):void 0!==r&&(i[a]=r));return i},$.queue=function(e,r,a){function n(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){r=(r||"fx")+"queue";var o=$.data(e,r);return a?(!o||$.isArray(a)?o=$.data(e,r,n(a)):o.push(a),o):o||[]}},$.dequeue=function(e,t){$.each(e.nodeType?[e]:e,function(e,r){t=t||"fx";var a=$.queue(r,t),n=a.shift();"inprogress"===n&&(n=a.shift()),n&&("fx"===t&&a.unshift("inprogress"),n.call(r,function(){$.dequeue(r,t)}))})},$.fn=$.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),r=this.offset(),a=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:$(e).offset();return r.top-=parseFloat(t.style.marginTop)||0,r.left-=parseFloat(t.style.marginLeft)||0,e.style&&(a.top+=parseFloat(e.style.borderTopWidth)||0,a.left+=parseFloat(e.style.borderLeftWidth)||0),{top:r.top-a.top,left:r.left-a.left}}};var r={};$.expando="velocity"+(new Date).getTime(),$.uuid=0;for(var a={},n=a.hasOwnProperty,o=a.toString,i="Boolean Number String Function Array Date RegExp Object Error".split(" "),s=0;s<i.length;s++)a["[object "+i[s]+"]"]=i[s].toLowerCase();$.fn.init.prototype=$.fn,e.Velocity={Utilities:$}}}(window),function(e){"object"==typeof module&&"object"==typeof module.exports?module.exports=e():"function"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return g.isWrapped(e)?e=[].slice.call(e):g.isNode(e)&&(e=[e]),e}function i(e){var t=$.data(e,"velocity");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return g.isString(e)?v.Easings[e]||(r=!1):r=g.isArray(e)&&1===e.length?s.apply(null,e):g.isArray(e)&&2===e.length?b.apply(null,e.concat([t])):g.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=v.Easings[v.defaults.easing]?v.defaults.easing:h),r}function c(e){if(e){var t=(new Date).getTime(),r=v.State.calls.length;r>1e4&&(v.State.calls=n(v.State.calls));for(var o=0;r>o;o++)if(v.State.calls[o]){var s=v.State.calls[o],l=s[0],u=s[2],f=s[3],d=!!f,m=null;f||(f=v.State.calls[o][3]=t-16);for(var y=Math.min((t-f)/u.duration,1),h=0,b=l.length;b>h;h++){var S=l[h],w=S.element;if(i(w)){var V=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var C=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(C,function(e,t){x.setPropertyValue(w,"display",t)})}x.setPropertyValue(w,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&x.setPropertyValue(w,"visibility",u.visibility);for(var T in S)if("element"!==T){var k=S[T],A,F=g.isString(k.easing)?v.Easings[k.easing]:k.easing;if(1===y)A=k.endValue;else{var E=k.endValue-k.startValue;if(A=k.startValue+E*F(y,u,E),!d&&A===k.currentValue)continue}if(k.currentValue=A,"tween"===T)m=A;else{if(x.Hooks.registered[T]){var j=x.Hooks.getRoot(T),H=i(w).rootPropertyValueCache[j];H&&(k.rootPropertyValue=H)}var N=x.setPropertyValue(w,T,k.currentValue+(0===parseFloat(A)?"":k.unitType),k.rootPropertyValue,k.scrollData);x.Hooks.registered[T]&&(i(w).rootPropertyValueCache[j]=x.Normalizations.registered[j]?x.Normalizations.registered[j]("extract",null,N[1]):N[1]),"transform"===N[0]&&(V=!0)}}u.mobileHA&&i(w).transformCache.translate3d===a&&(i(w).transformCache.translate3d="(0px, 0px, 0px)",V=!0),V&&x.flushTransformCache(w)}}u.display!==a&&"none"!==u.display&&(v.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(v.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],y,Math.max(0,f+u.duration-t),f,m),1===y&&p(o)}}v.State.isTicking&&P(c)}function p(e,t){if(!v.State.calls[e])return!1;for(var r=v.State.calls[e][0],n=v.State.calls[e][1],o=v.State.calls[e][2],s=v.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&x.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&x.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&($.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test($.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var f=!1;$.each(x.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(f=!0,delete i(p).transformCache[t])}),o.mobileHA&&(f=!0,delete i(p).transformCache.translate3d),f&&x.flushTransformCache(p),x.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(d){setTimeout(function(){throw d},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),v(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&$.dequeue(p,o.queue)}v.State.calls[e]=!1;for(var g=0,m=v.State.calls.length;m>g;g++)if(v.State.calls[g]!==!1){l=!0;break}l===!1&&(v.State.isTicking=!1,delete v.State.calls,v.State.calls=[])}var f=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="<!--[if IE "+e+"]><span></span><![endif]-->",t.getElementsByTagName("span").length)return t=null,e}return a}(),d=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r=(new Date).getTime(),a;return a=Math.max(0,16-(r-e)),e=r+a,setTimeout(function(){t(r+a)},a)}}(),g={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},$,m=!1;if(e.fn&&e.fn.jquery?($=e,m=!0):$=t.Velocity.Utilities,8>=f&&!m)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=f)return void(jQuery.fn.velocity=jQuery.fn.animate);var y=400,h="swing",v={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:$,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:y,easing:h,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){$.data(e,"velocity",{isSVG:g.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(v.State.scrollAnchor=t,v.State.scrollPropertyLeft="pageXOffset",v.State.scrollPropertyTop="pageYOffset"):(v.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,v.State.scrollPropertyLeft="scrollLeft",v.State.scrollPropertyTop="scrollTop");var b=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o={x:-1,v:0,tension:null,friction:null},i=[0],s=0,l=1e-4,u=.016,c,p,f;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,o.tension=e,o.friction=t,c=null!==n,c?(s=a(e,t),p=s/n*u):p=u;;)if(f=r(f||o,p),i.push(1+f.x),s+=16,!(Math.abs(f.x)>l&&Math.abs(f.v)>l))break;return c?function(e){return i[e*(i.length-1)|0]}:s}}();v.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},$.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){v.Easings[t[0]]=l.apply(null,t[1])});var x=v.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e<x.Lists.colors.length;e++){var t="color"===x.Lists.colors[e]?"0 0 0 1":"255 255 255 1";x.Hooks.templates[x.Lists.colors[e]]=["Red Green Blue Alpha",t]}var r,a,n;if(f)for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(" ");var o=a[1].match(x.RegEx.valueSplit);"Color"===n[0]&&(n.push(n.shift()),o.push(o.shift()),x.Hooks.templates[r]=[n.join(" "),o.join(" ")])}for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(" ");for(var e in n){var i=r+n[e],s=e;x.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=x.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return x.RegEx.valueUnwrap.test(t)&&(t=t.match(x.RegEx.valueUnwrap)[1]),x.Values.isCSSNullValue(t)&&(t=x.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=x.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=x.Hooks.cleanRootPropertyValue(a,t),t.toString().match(x.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=x.Hooks.registered[e];if(a){var n=a[0],o=a[1],i,s;return r=x.Hooks.cleanRootPropertyValue(n,r),i=r.toString().match(x.RegEx.valueSplit),i[o]=t,s=i.join(" ")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case"name":return"clip";case"extract":var a;return x.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(x.RegEx.valueUnwrap),a=a?a[1].replace(/,(\s+)?/g," "):r),a;case"inject":return"rect("+r+")"}},blur:function(e,t,r){switch(e){case"name":return v.State.isFirefox?"filter":"-webkit-filter";case"extract":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\(([0-9]+[A-z]+)\)/i);a=n?n[1]:0}return a;case"inject":return parseFloat(r)?"blur("+r+")":"none"}},opacity:function(e,t,r){if(8>=f)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=f||v.State.isGingerbread||(x.Lists.transformsBase=x.Lists.transformsBase.concat(x.Lists.transforms3D));for(var e=0;e<x.Lists.transformsBase.length;e++)!function(){var t=x.Lists.transformsBase[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return"transform";case"extract":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,"");case"inject":var o=!1;switch(t.substr(0,t.length-1)){case"translate":o=!/(%|px|em|rem|vw|vh|\d)$/i.test(n);break;case"scal":case"scale":v.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e<x.Lists.colors.length;e++)!function(){var t=x.Lists.colors[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return t;case"extract":var o;if(x.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:x.RegEx.isHex.test(n)?i="rgb("+x.Values.hexToRgb(n).join(" ")+")":/^rgba?\(/i.test(n)||(i=s.black),o=(i||n).toString().match(x.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=f||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=f?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=f?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(f||v.State.isAndroid&&!v.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(v.State.prefixMatches[e])return[v.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),g.isString(v.State.prefixElement.style[n]))return v.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,a;return e=e.replace(t,function(e,t,r,a){return t+t+r+r+a+a}),a=r.exec(e),a?[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&x.setPropertyValue(e,"display","none")}var l=0;if(8>=f)l=$.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===x.getPropertyValue(e,"display")&&(u=!0,x.setPropertyValue(e,"display",x.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(x.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(x.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(x.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(x.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var d;d=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===f&&"filter"===r?d.getPropertyValue(r):d[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var g=s(e,"position");("fixed"===g||"absolute"===g&&/top|left/i.test(r))&&(l=$(e).position()[r]+"px")}return l}var l;if(x.Hooks.registered[r]){var u=r,c=x.Hooks.getRoot(u);n===a&&(n=x.getPropertyValue(e,x.Names.prefixCheck(c)[0])),x.Normalizations.registered[c]&&(n=x.Normalizations.registered[c]("extract",e,n)),l=x.Hooks.extractValue(u,n)}else if(x.Normalizations.registered[r]){var p,d;p=x.Normalizations.registered[r]("name",e),"transform"!==p&&(d=s(e,x.Names.prefixCheck(p)[0]),x.Values.isCSSNullValue(d)&&x.Hooks.templates[r]&&(d=x.Hooks.templates[r][1])),l=x.Normalizations.registered[r]("extract",e,d)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(g){l=0}else l=e.getAttribute(r);else l=s(e,x.Names.prefixCheck(r)[0]);return x.Values.isCSSNullValue(l)&&(l=0),v.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(x.Normalizations.registered[r]&&"transform"===x.Normalizations.registered[r]("name",e))x.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(x.Hooks.registered[r]){var l=r,u=x.Hooks.getRoot(r);n=n||x.getPropertyValue(e,u),a=x.Hooks.injectValue(l,a,n),r=u}if(x.Normalizations.registered[r]&&(a=x.Normalizations.registered[r]("inject",e,a),r=x.Normalizations.registered[r]("name",e)),s=x.Names.prefixCheck(r)[0],8>=f)try{e.style[s]=a}catch(c){v.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;v.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(x.getPropertyValue(e,t))}var r="";if((f||v.State.isAndroid&&!v.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};$.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;$.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===f&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}x.setPropertyValue(e,"transform",r)}};x.Hooks.register(),x.Normalizations.register(),v.hook=function(e,t,r){var n=a;return e=o(e),$.each(e,function(e,o){if(i(o)===a&&v.init(o),r===a)n===a&&(n=v.CSS.getPropertyValue(o,t));else{var s=v.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&v.CSS.flushTransformCache(o),n=s}}),n};var S=function(){function e(){return l?T.promise||null:f}function n(){function e(e){function p(e,t){var r=a,i=a,s=a;return g.isArray(e)?(r=e[0],!g.isArray(e[1])&&/^[\d-]/.test(e[1])||g.isFunction(e[1])||x.RegEx.isHex.test(e[1])?s=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(i=t?e[1]:u(e[1],o.duration),e[2]!==a&&(s=e[2]))):r=e,t||(i=i||o.easing),g.isFunction(r)&&(r=r.call(n,w,P)),g.isFunction(s)&&(s=s.call(n,w,P)),[r||0,i,s]}function f(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=x.Values.getUnitType(e)),[a,r]}function d(){var e={myParent:n.parentNode||r.body,position:x.getPropertyValue(n,"position"),fontSize:x.getPropertyValue(n,"fontSize")},a=e.position===N.lastPosition&&e.myParent===N.lastParent,o=e.fontSize===N.lastFontSize;N.lastParent=e.myParent,N.lastPosition=e.position,N.lastFontSize=e.fontSize;var s=100,l={};if(o&&a)l.emToPx=N.lastEmToPx,l.percentToPxWidth=N.lastPercentToPxWidth,l.percentToPxHeight=N.lastPercentToPxHeight;else{var u=i(n).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");v.init(u),e.myParent.appendChild(u),$.each(["overflow","overflowX","overflowY"],function(e,t){v.CSS.setPropertyValue(u,t,"hidden")}),v.CSS.setPropertyValue(u,"position",e.position),v.CSS.setPropertyValue(u,"fontSize",e.fontSize),v.CSS.setPropertyValue(u,"boxSizing","content-box"),$.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){v.CSS.setPropertyValue(u,t,s+"%")}),v.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=N.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=N.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=N.lastEmToPx=(parseFloat(x.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===N.remToPx&&(N.remToPx=parseFloat(x.getPropertyValue(r.body,"fontSize"))||16),null===N.vwToPx&&(N.vwToPx=parseFloat(t.innerWidth)/100,N.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=N.remToPx,l.vwToPx=N.vwToPx,l.vhToPx=N.vhToPx,v.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),n),l}if(o.begin&&0===w)try{o.begin.call(m,m)}catch(y){setTimeout(function(){throw y},1)}if("scroll"===k){var S=/^x$/i.test(o.axis)?"Left":"Top",V=parseFloat(o.offset)||0,C,A,F;o.container?g.isWrapped(o.container)||g.isNode(o.container)?(o.container=o.container[0]||o.container,C=o.container["scroll"+S],F=C+$(n).position()[S.toLowerCase()]+V):o.container=null:(C=v.State.scrollAnchor[v.State["scrollProperty"+S]],A=v.State.scrollAnchor[v.State["scrollProperty"+("Left"===S?"Top":"Left")]],F=$(n).offset()[S.toLowerCase()]+V),s={scroll:{rootPropertyValue:!1,startValue:C,currentValue:C,endValue:F,unitType:"",easing:o.easing,scrollData:{container:o.container,direction:S,alternateValue:A}},element:n},v.debug&&console.log("tweensContainer (scroll): ",s.scroll,n)}else if("reverse"===k){if(!i(n).tweensContainer)return void $.dequeue(n,o.queue);"none"===i(n).opts.display&&(i(n).opts.display="auto"),"hidden"===i(n).opts.visibility&&(i(n).opts.visibility="visible"),i(n).opts.loop=!1,i(n).opts.begin=null,i(n).opts.complete=null,b.easing||delete o.easing,b.duration||delete o.duration,o=$.extend({},i(n).opts,o);var E=$.extend(!0,{},i(n).tweensContainer);for(var j in E)if("element"!==j){var H=E[j].startValue;E[j].startValue=E[j].currentValue=E[j].endValue,E[j].endValue=H,g.isEmptyObject(b)||(E[j].easing=o.easing),v.debug&&console.log("reverse tweensContainer ("+j+"): "+JSON.stringify(E[j]),n)}s=E}else if("start"===k){var E;i(n).tweensContainer&&i(n).isAnimating===!0&&(E=i(n).tweensContainer),$.each(h,function(e,t){if(RegExp("^"+x.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(x.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=x.Values.hexToRgb(n),u=i?x.Values.hexToRgb(i):a,c=0;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),h[e+s[c]]=f}delete h[e]}}});for(var R in h){var O=p(h[R]),z=O[0],q=O[1],M=O[2];R=x.Names.camelCase(R);var I=x.Hooks.getRoot(R),B=!1;if(i(n).isSVG||"tween"===I||x.Names.prefixCheck(I)[1]!==!1||x.Normalizations.registered[I]!==a){(o.display!==a&&null!==o.display&&"none"!==o.display||o.visibility!==a&&"hidden"!==o.visibility)&&/opacity|filter/.test(R)&&!M&&0!==z&&(M=0),o._cacheValues&&E&&E[R]?(M===a&&(M=E[R].endValue+E[R].unitType),B=i(n).rootPropertyValueCache[I]):x.Hooks.registered[R]?M===a?(B=x.getPropertyValue(n,I),M=x.getPropertyValue(n,R,B)):B=x.Hooks.templates[I][1]:M===a&&(M=x.getPropertyValue(n,R));var W,G,D,X=!1;if(W=f(R,M),M=W[0],D=W[1],W=f(R,z),z=W[0].replace(/^([+-\/*])=/,function(e,t){return X=t,""}),G=W[1],M=parseFloat(M)||0,z=parseFloat(z)||0,"%"===G&&(/^(fontSize|lineHeight)$/.test(R)?(z/=100,G="em"):/^scale/.test(R)?(z/=100,G=""):/(Red|Green|Blue)$/i.test(R)&&(z=z/100*255,G="")),/[\/*]/.test(X))G=D;else if(D!==G&&0!==M)if(0===z)G=D;else{l=l||d();var Y=/margin|padding|left|right|width|text|word|letter/i.test(R)||/X$/.test(R)||"x"===R?"x":"y";switch(D){case"%":M*="x"===Y?l.percentToPxWidth:l.percentToPxHeight;break;case"px":break;default:M*=l[D+"ToPx"]}switch(G){case"%":M*=1/("x"===Y?l.percentToPxWidth:l.percentToPxHeight);break;case"px":break;default:M*=1/l[G+"ToPx"]}}switch(X){case"+":z=M+z;break;case"-":z=M-z;break;case"*":z=M*z;break;case"/":z=M/z}s[R]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:z,unitType:G,easing:q},v.debug&&console.log("tweensContainer ("+R+"): "+JSON.stringify(s[R]),n)}else v.debug&&console.log("Skipping ["+I+"] due to a lack of browser support.")}s.element=n}s.element&&(x.Values.addClass(n,"velocity-animating"),L.push(s),""===o.queue&&(i(n).tweensContainer=s,i(n).opts=o),i(n).isAnimating=!0,w===P-1?(v.State.calls.push([L,m,o,null,T.resolver]),v.State.isTicking===!1&&(v.State.isTicking=!0,c())):w++)}var n=this,o=$.extend({},v.defaults,b),s={},l;switch(i(n)===a&&v.init(n),parseFloat(o.delay)&&o.queue!==!1&&$.queue(n,o.queue,function(e){v.velocityQueueEntryFlag=!0,i(n).delayTimer={setTimeout:setTimeout(e,parseFloat(o.delay)),next:e}}),o.duration.toString().toLowerCase()){case"fast":o.duration=200;break;case"normal":o.duration=y;break;case"slow":o.duration=600;break;default:o.duration=parseFloat(o.duration)||1}v.mock!==!1&&(v.mock===!0?o.duration=o.delay=1:(o.duration*=parseFloat(v.mock)||1,o.delay*=parseFloat(v.mock)||1)),o.easing=u(o.easing,o.duration),o.begin&&!g.isFunction(o.begin)&&(o.begin=null),o.progress&&!g.isFunction(o.progress)&&(o.progress=null),o.complete&&!g.isFunction(o.complete)&&(o.complete=null),o.display!==a&&null!==o.display&&(o.display=o.display.toString().toLowerCase(),"auto"===o.display&&(o.display=v.CSS.Values.getDisplayType(n))),o.visibility!==a&&null!==o.visibility&&(o.visibility=o.visibility.toString().toLowerCase()),o.mobileHA=o.mobileHA&&v.State.isMobile&&!v.State.isGingerbread,o.queue===!1?o.delay?setTimeout(e,o.delay):e():$.queue(n,o.queue,function(t,r){return r===!0?(T.promise&&T.resolver(m),!0):(v.velocityQueueEntryFlag=!0,void e(t))}),""!==o.queue&&"fx"!==o.queue||"inprogress"===$.queue(n)[0]||$.dequeue(n)}var s=arguments[0]&&(arguments[0].p||$.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||g.isString(arguments[0].properties)),l,f,d,m,h,b;if(g.isWrapped(this)?(l=!1,d=0,m=this,f=this):(l=!0,d=1,m=s?arguments[0].elements||arguments[0].e:arguments[0]),m=o(m)){s?(h=arguments[0].properties||arguments[0].p,b=arguments[0].options||arguments[0].o):(h=arguments[d],b=arguments[d+1]);var P=m.length,w=0;if(!/^(stop|finish)$/i.test(h)&&!$.isPlainObject(b)){var V=d+1;b={};for(var C=V;C<arguments.length;C++)g.isArray(arguments[C])||!/^(fast|normal|slow)$/i.test(arguments[C])&&!/^\d/.test(arguments[C])?g.isString(arguments[C])||g.isArray(arguments[C])?b.easing=arguments[C]:g.isFunction(arguments[C])&&(b.complete=arguments[C]):b.duration=arguments[C]}var T={promise:null,resolver:null,rejecter:null};l&&v.Promise&&(T.promise=new v.Promise(function(e,t){T.resolver=e,T.rejecter=t}));var k;switch(h){case"scroll":k="scroll";break;case"reverse":k="reverse";break;case"finish":case"stop":$.each(m,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var A=[];return $.each(v.State.calls,function(e,t){t&&$.each(t[1],function(r,n){var o=b===a?"":b;return o===!0||t[2].queue===o||b===a&&t[2].queue===!1?void $.each(m,function(r,a){a===n&&((b===!0||g.isString(b))&&($.each($.queue(a,g.isString(b)?b:""),function(e,t){g.isFunction(t)&&t(null,!0)}),$.queue(a,g.isString(b)?b:"",[])),"stop"===h?(i(a)&&i(a).tweensContainer&&o!==!1&&$.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue +}),A.push(e)):"finish"===h&&(t[2].duration=1))}):!0})}),"stop"===h&&($.each(A,function(e,t){p(t,!0)}),T.promise&&T.resolver(m)),e();default:if(!$.isPlainObject(h)||g.isEmptyObject(h)){if(g.isString(h)&&v.Redirects[h]){var F=$.extend({},b),E=F.duration,j=F.delay||0;return F.backwards===!0&&(m=$.extend(!0,[],m).reverse()),$.each(m,function(e,t){parseFloat(F.stagger)?F.delay=j+parseFloat(F.stagger)*e:g.isFunction(F.stagger)&&(F.delay=j+F.stagger.call(t,e,P)),F.drag&&(F.duration=parseFloat(E)||(/^(callout|transition)/.test(h)?1e3:y),F.duration=Math.max(F.duration*(F.backwards?1-e/P:(e+1)/P),.75*F.duration,200)),v.Redirects[h].call(t,t,F||{},e,P,m,T.promise?T:a)}),e()}var H="Velocity: First argument ("+h+") was not a property map, a known action, or a registered redirect. Aborting.";return T.promise?T.rejecter(new Error(H)):console.log(H),e()}k="start"}var N={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},L=[];$.each(m,function(e,t){g.isNode(t)&&n.call(t)});var F=$.extend({},v.defaults,b),R;if(F.loop=parseInt(F.loop),R=2*F.loop-1,F.loop)for(var O=0;R>O;O++){var z={delay:F.delay,progress:F.progress};O===R-1&&(z.display=F.display,z.visibility=F.visibility,z.complete=F.complete),S(m,"reverse",z)}return e()}};v=$.extend(S,v),v.animate=S;var P=t.requestAnimationFrame||d;return v.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(P=function(e){return setTimeout(function(){e(!0)},16)},c()):P=t.requestAnimationFrame||d}),e.Velocity=v,e!==t&&(e.fn.velocity=S,e.fn.velocity.defaults=v.defaults),$.each(["Down","Up"],function(e,t){v.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},f={};l.display===a&&(l.display="Down"===t?"inline"===v.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){f[r]=e.style[r];var a=v.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}f.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in f)e.style[t]=f[t];c&&c.call(i,i),s&&s.resolver(i)},v(e,p,l)}}),$.each(["In","Out"],function(e,t){v.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),v(this,u,l)}}),v}(window.jQuery||window.Zepto||window,window,document)});;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function n(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function o(a,b){return n(a,b,!0)}function p(a,b,c){var e,d=b.prototype;e=a.prototype=Object.create(d),e.constructor=a,e._super=d,c&&n(e,c)}function q(a,b){return function(){return a.apply(b,arguments)}}function r(a,b){return typeof a==g?a.apply(b?b[0]||d:d,b):a}function s(a,b){return a===d?b:a}function t(a,b,c){m(x(b),function(b){a.addEventListener(b,c,!1)})}function u(a,b,c){m(x(b),function(b){a.removeEventListener(b,c,!1)})}function v(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function w(a,b){return a.indexOf(b)>-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function z(a){return Array.prototype.slice.call(a,0)}function A(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];y(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h<e.length;){if(c=e[h],f=c?c+g:b,f in a)return f;h++}return d}function D(){return C++}function E(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function ab(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){r(a.options.enable,[a])&&c.handler(b)},this.init()}function bb(a){var b,c=a.options.inputClass;return b=c?c:H?wb:I?Eb:G?Gb:rb,new b(a,cb)}function cb(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&O&&0===d-e,g=b&(Q|R)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,db(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function db(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=gb(b)),e>1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:h(a.pointers[c].clientX),clientY:h(a.pointers[c].clientY)},c++;return{timeStamp:j(),pointers:b,center:hb(b),deltaX:a.deltaX,deltaY:a.deltaY}}function hb(a){var b=a.length;if(1===b)return{x:h(a[0].clientX),y:h(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Q|R)&&delete d[g[e].identifier],e++;return h.length?[A(f.concat(h),"identifier",!0),h]:void 0}function Gb(){ab.apply(this,arguments);var a=q(this.handler,this);this.touch=new Eb(this.manager,a),this.mouse=new rb(this.manager,a)}function Pb(a,b){this.manager=a,this.set(b)}function Qb(a){if(w(a,Mb))return Mb;var b=w(a,Nb),c=w(a,Ob);return b&&c?Nb+" "+Ob:b||c?b?Nb:Ob:w(a,Lb)?Lb:Kb}function Yb(a){this.id=D(),this.manager=null,this.options=o(a||{},this.defaults),this.options.enable=s(this.options.enable,!0),this.state=Rb,this.simultaneous={},this.requireFail=[]}function Zb(a){return a&Wb?"cancel":a&Ub?"end":a&Tb?"move":a&Sb?"start":""}function $b(a){return a==W?"down":a==V?"up":a==T?"left":a==U?"right":""}function _b(a,b){var c=b.manager;return c?c.get(a):a}function ac(){Yb.apply(this,arguments)}function bc(){ac.apply(this,arguments),this.pX=null,this.pY=null}function cc(){ac.apply(this,arguments)}function dc(){Yb.apply(this,arguments),this._timer=null,this._input=null}function ec(){ac.apply(this,arguments)}function fc(){ac.apply(this,arguments)}function gc(){Yb.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function hc(a,b){return b=b||{},b.recognizers=s(b.recognizers,hc.defaults.preset),new kc(a,b)}function kc(a,b){b=b||{},this.options=o(b,hc.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=bb(this),this.touchAction=new Pb(this,this.options.touchAction),lc(this,!0),m(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function lc(a,b){var c=a.element;m(a.options.cssProps,function(a,d){c.style[B(c.style,d)]=b?a:""})}function mc(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var e=["","webkit","moz","MS","ms","o"],f=b.createElement("div"),g="function",h=Math.round,i=Math.abs,j=Date.now,C=1,F=/mobile|tablet|ip(ad|hone|od)|android/i,G="ontouchstart"in a,H=B(a,"PointerEvent")!==d,I=G&&F.test(navigator.userAgent),J="touch",K="pen",L="mouse",M="kinect",N=25,O=1,P=2,Q=4,R=8,S=1,T=2,U=4,V=8,W=16,X=T|U,Y=V|W,Z=X|Y,$=["x","y"],_=["clientX","clientY"];ab.prototype={handler:function(){},init:function(){this.evEl&&t(this.element,this.evEl,this.domHandler),this.evTarget&&t(this.target,this.evTarget,this.domHandler),this.evWin&&t(E(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&u(this.element,this.evEl,this.domHandler),this.evTarget&&u(this.target,this.evTarget,this.domHandler),this.evWin&&u(E(this.element),this.evWin,this.domHandler)}};var ob={mousedown:O,mousemove:P,mouseup:Q},pb="mousedown",qb="mousemove mouseup";p(rb,ab,{handler:function(a){var b=ob[a.type];b&O&&0===a.button&&(this.pressed=!0),b&P&&1!==a.which&&(b=Q),this.pressed&&this.allow&&(b&Q&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:L,srcEvent:a}))}});var sb={pointerdown:O,pointermove:P,pointerup:Q,pointercancel:R,pointerout:R},tb={2:J,3:K,4:L,5:M},ub="pointerdown",vb="pointermove pointerup pointercancel";a.MSPointerEvent&&(ub="MSPointerDown",vb="MSPointerMove MSPointerUp MSPointerCancel"),p(wb,ab,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=sb[d],f=tb[a.pointerType]||a.pointerType,g=f==J,h=y(b,a.pointerId,"pointerId");e&O&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(Xb|Rb)))return!1;a++}return!0},recognize:function(a){var b=n({},a);return r(this.options.enable,[this,b])?(this.state&(Vb|Wb|Xb)&&(this.state=Rb),this.state=this.process(b),this.state&(Sb|Tb|Ub|Wb)&&this.tryEmit(b),void 0):(this.reset(),this.state=Xb,void 0)},process:function(){},getTouchAction:function(){},reset:function(){}},p(ac,Yb,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(Sb|Tb),e=this.attrTest(a);return d&&(c&R||!e)?b|Wb:d||e?c&Q?b|Ub:b&Sb?b|Tb:Sb:Xb}}),p(bc,ac,{defaults:{event:"pan",threshold:10,pointers:1,direction:Z},getTouchAction:function(){var a=this.options.direction,b=[];return a&X&&b.push(Ob),a&Y&&b.push(Nb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&X?(e=0===f?S:0>f?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime<b.time;if(this.reset(),a.eventType&O&&0===this.count)return this.failTimeout();if(d&&e&&c){if(a.eventType!=Q)return this.failTimeout();var f=this.pTime?a.timeStamp-this.pTime<b.interval:!0,g=!this.pCenter||kb(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,g&&f?this.count+=1:this.count=1,this._input=a;var h=this.count%b.taps;if(0===h)return this.hasRequireFailures()?(this._timer=k(function(){this.state=Vb,this.tryEmit()},b.interval,this),Sb):Vb}return Xb},failTimeout:function(){return this._timer=k(function(){this.state=Xb},this.options.interval,this),Xb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Vb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),hc.VERSION="2.0.4",hc.defaults={domEvents:!1,touchAction:Jb,enable:!0,inputTarget:null,inputClass:null,preset:[[ec,{enable:!1}],[cc,{enable:!1},["rotate"]],[fc,{direction:X}],[bc,{direction:X},["swipe"]],[gc],[gc,{event:"doubletap",taps:2},["tap"]],[dc]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ic=1,jc=2;kc.prototype={set:function(a){return n(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?jc:ic},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&Vb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===jc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(Sb|Tb|Ub)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof Yb)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(l(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(l(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(y(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return m(x(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return m(x(a),function(a){b?c[a].splice(y(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&mc(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&lc(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},n(hc,{INPUT_START:O,INPUT_MOVE:P,INPUT_END:Q,INPUT_CANCEL:R,STATE_POSSIBLE:Rb,STATE_BEGAN:Sb,STATE_CHANGED:Tb,STATE_ENDED:Ub,STATE_RECOGNIZED:Vb,STATE_CANCELLED:Wb,STATE_FAILED:Xb,DIRECTION_NONE:S,DIRECTION_LEFT:T,DIRECTION_RIGHT:U,DIRECTION_UP:V,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:X,DIRECTION_VERTICAL:Y,DIRECTION_ALL:Z,Manager:kc,Input:ab,TouchAction:Pb,TouchInput:Eb,MouseInput:rb,PointerEventInput:wb,TouchMouseInput:Gb,SingleTouchInput:Ab,Recognizer:Yb,AttrRecognizer:ac,Tap:gc,Pan:bc,Swipe:fc,Pinch:cc,Rotate:ec,Press:dc,on:t,off:u,each:m,merge:o,extend:n,inherit:p,bindFn:q,prefixed:B}),typeof define==g&&define.amd?define(function(){return hc}):"undefined"!=typeof module&&module.exports?module.exports=hc:a[c]=hc}(window,document,"Hammer");;(function(factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery', 'hammerjs'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery'), require('hammerjs')); + } else { + factory(jQuery, Hammer); + } +}(function($, Hammer) { + function hammerify(el, options) { + var $el = $(el); + if(!$el.data("hammer")) { + $el.data("hammer", new Hammer($el[0], options)); + } + } + + $.fn.hammer = function(options) { + return this.each(function() { + hammerify(this, options); + }); + }; + + // extend the emit method to also trigger jQuery events + Hammer.Manager.prototype.emit = (function(originalEmit) { + return function(type, data) { + originalEmit.call(this, type, data); + $(this.element).trigger({ + type: type, + gesture: data + }); + }; + })(Hammer.Manager.prototype.emit); +})); + + var methods = { + init : function() { + return this.each(function() { + + // For each set of tabs, we want to keep track of + // which tab is active and its associated content + var $this = $(this), + window_width = $(window).width(); + + $this.width('100%'); + // Set Tab Width for each tab + var $num_tabs = $(this).children('li').length; + $this.children('li').each(function() { + $(this).width((100/$num_tabs)+'%'); + }); + var $active, $content, $links = $this.find('li.tab a'), + $tabs_width = $this.width(), + $tab_width = $this.find('li').first().outerWidth(), + $index = 0; + + // If the location.hash matches one of the links, use that as the active tab. + $active = $($links.filter('[href="'+location.hash+'"]')); + + // If no match is found, use the first link or any with class 'active' as the initial active tab. + if ($active.length === 0) { + $active = $(this).find('li.tab a.active').first(); + } + if ($active.length === 0) { + $active = $(this).find('li.tab a').first(); + } + + $active.addClass('active'); + $index = $links.index($active); + if ($index < 0) { + $index = 0; + } + + $content = $($active[0].hash); + + // append indicator then set indicator width to tab width + $this.append('<div class="indicator"></div>'); + var $indicator = $this.find('.indicator'); + if ($this.is(":visible")) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + $(window).resize(function () { + $tabs_width = $this.width(); + $tab_width = $this.find('li').first().outerWidth(); + if ($index < 0) { + $index = 0; + } + if ($tab_width !== 0 && $tabs_width !== 0) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + }); + + // Hide the remaining content + $links.not($active).each(function () { + $(this.hash).hide(); + }); + + + // Bind the click event handler + $this.on('click', 'a', function(e){ + $tabs_width = $this.width(); + $tab_width = $this.find('li').first().outerWidth(); + + // Make the old tab inactive. + $active.removeClass('active'); + $content.hide(); + + // Update the variables with the new link and content + $active = $(this); + $content = $(this.hash); + $links = $this.find('li.tab a'); + + // Make the tab active. + $active.addClass('active'); + var $prev_index = $index; + $index = $links.index($(this)); + if ($index < 0) { + $index = 0; + } + // Change url to current tab + // window.location.hash = $active.attr('href'); + + $content.show(); + + // Update indicator + if (($index - $prev_index) >= 0) { + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"left": $index * $tab_width}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); + + } + else { + $indicator.velocity({"left": $index * $tab_width}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); + } + + // Prevent the anchor's default click action + e.preventDefault(); + }); + }); + + }, + select_tab : function( id ) { + this.find('a[href="#' + id + '"]').trigger('click'); + } + }; + + $.fn.tabs = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; + + $(document).ready(function(){ + $('ul.tabs').tabs(); + }); diff --git a/assets/js/wow.min.js b/assets/js/wow.min.js new file mode 100644 index 0000000..8af3d16 --- /dev/null +++ b/assets/js/wow.min.js @@ -0,0 +1,2 @@ +/*! WOW - v0.1.9 - 2014-05-10 +* Copyright (c) 2014 Matthieu Aussaguel; Licensed MIT */(function(){var a,b,c=function(a,b){return function(){return a.apply(b,arguments)}};a=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in a)d=a[c],null!=d&&(b[c]=d);return b},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a}(),b=this.WeakMap||(b=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),this.WOW=function(){function d(a){null==a&&(a={}),this.scrollCallback=c(this.scrollCallback,this),this.scrollHandler=c(this.scrollHandler,this),this.start=c(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),this.animationNameCache=new b}return d.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0},d.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():document.addEventListener("DOMContentLoaded",this.start)},d.prototype.start=function(){var a,b,c,d;if(this.boxes=this.element.getElementsByClassName(this.config.boxClass),this.boxes.length){if(this.disabled())return this.resetStyle();for(d=this.boxes,b=0,c=d.length;c>b;b++)a=d[b],this.applyStyle(a,!0);return window.addEventListener("scroll",this.scrollHandler,!1),window.addEventListener("resize",this.scrollHandler,!1),this.interval=setInterval(this.scrollCallback,50)}},d.prototype.stop=function(){return window.removeEventListener("scroll",this.scrollHandler,!1),window.removeEventListener("resize",this.scrollHandler,!1),null!=this.interval?clearInterval(this.interval):void 0},d.prototype.show=function(a){return this.applyStyle(a),a.className=""+a.className+" "+this.config.animateClass},d.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},d.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),d.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.setAttribute("style","visibility: visible;"));return e},d.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},d.prototype.vendors=["moz","webkit"],d.prototype.vendorSet=function(a,b){var c,d,e,f;f=[];for(c in b)d=b[c],a[""+c]=d,f.push(function(){var b,f,g,h;for(g=this.vendors,h=[],b=0,f=g.length;f>b;b++)e=g[b],h.push(a[""+e+c.charAt(0).toUpperCase()+c.substr(1)]=d);return h}.call(this));return f},d.prototype.vendorCSS=function(a,b){var c,d,e,f,g,h;for(d=window.getComputedStyle(a),c=d.getPropertyCSSValue(b),h=this.vendors,f=0,g=h.length;g>f;f++)e=h[f],c=c||d.getPropertyCSSValue("-"+e+"-"+b);return c},d.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=window.getComputedStyle(a).getPropertyValue("animation-name")}return"none"===b?"":b},d.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},d.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},d.prototype.scrollHandler=function(){return this.scrolled=!0},d.prototype.scrollCallback=function(){var a;return this.scrolled&&(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),!this.boxes.length)?this.stop():void 0},d.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},d.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=window.pageYOffset,e=f+this.element.clientHeight-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},d.prototype.util=function(){return this._util||(this._util=new a)},d.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},d}()}).call(this); \ No newline at end of file diff --git a/assets/less/components.less b/assets/less/components.less new file mode 100644 index 0000000..b157676 --- /dev/null +++ b/assets/less/components.less @@ -0,0 +1,4295 @@ +@import "variables.less"; +@import "elements.less"; + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Components +*/ + +/* ============= + == Components List== + + - Popover / Tooltips + - Buttons + - Panels + - Portlets + - Checkbox and radio + - Modals + - Tabs + - Progressbars + - Notifications + - Alerts + - Carousel + - Sweet Alert + - Widgets + - Nestable + - Rating + - Calendar + - Form + - Tables + - Charts + +============= */ + + +/* ================= + Popover / Tooltips +==================== */ +/* Popover */ +.popover { + font-family: inherit; + border: none; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; + box-shadow: 0 0 28px rgba(0, 0, 0, 0.15); + + .popover-title { + background-color: transparent; + color: @custom; + padding: 12px 15px; + font-size: 15px; + } + + .arrow { + border-color: transparent !important; + } +} + +/* Tooltips */ +.tooltip { + font-family: @font-secondary; + + .tooltip-inner { + padding: 4px 10px; + border-radius: 2px; + background-color: @dark; + } +} + +.tooltip.left .tooltip-arrow { + border-left-color: @dark; +} + +.tooltip.top .tooltip-arrow { + border-top-color: @dark; +} + +.tooltip.bottom .tooltip-arrow { + border-bottom-color: @dark; +} + +.tooltip.right .tooltip-arrow { + border-right-color: @dark; +} + +/* Tooltpster */ +.tooltipster-sidetip .tooltipster-box { + background-color: @custom; + border: 2px solid @custom; +} + +.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{ + border-top-color: @custom; +} + +.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{ + border-bottom-color: @custom; +} + +.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{ + border-left-color: @custom; +} + +.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border, +.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{ + border-right-color: @custom; +} + + +/* ============= + Buttons +============= */ +.btn { + border-radius: 2px; + padding: 6px 14px; +} + +.btn-md { + padding: 8px 18px; +} + +.btn-group-lg>.btn, .btn-lg { + padding: 10px 16px !important; + font-size: 16px; +} +.btn-group-sm>.btn, .btn-sm { + padding: 5px 10px !important; +} +.btn-group-xs>.btn, .btn-xs { + padding: 1px 5px !important; +} +.btn-group .btn+.btn, .btn-group .btn+.btn-group, +.btn-group .btn-group+.btn, .btn-group .btn-group+.btn-group { + margin-left: 0px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: 0 0 0 100px rgba(0,0,0,.1) inset; + box-shadow: 0 0 0 100px rgba(0,0,0,.1) inset; +} +.btn-custom,.btn-primary, .btn-success, .btn-info, .btn-warning, +.btn-danger, .btn-inverse, .btn-purple, .btn-pink, .btn-orange, +.btn-brown,.btn-teal{ + color: @white !important; +} + +.btn-custom { + background-color: @custom; + border-color: @custom; +} +.btn-custom:hover, .btn-custom:focus, .btn-custom:active, .btn-custom.active, +.btn-custom.focus, .btn-custom:active, .btn-custom:focus, .btn-custom:hover, +.open > .dropdown-toggle.btn-custom { + background-color: darken(@custom, 5%) !important; + border: 1px solid darken(@custom, 5%) !important; +} + +.btn-default { + background-color: @white; + border-color: fade(@dark,20%); +} +.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, +.btn-default.focus, .btn-default:active, .btn-default:focus, .btn-default:hover, +.open > .dropdown-toggle.btn-default { + background-color: fade(@dark, 7%) !important; + border: 1px solid fade(@dark, 20%) !important; +} + +.btn-primary{ + background-color: @primary !important; + border: 1px solid @primary !important; +} +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, +.btn-primary.focus, .btn-primary:active, .btn-primary:focus, .btn-primary:hover, +.open > .dropdown-toggle.btn-primary { + background-color: darken(@primary, 5%) !important; + border: 1px solid darken(@primary, 5%) !important; +} + +.btn-success { + background-color: @success !important; + border: 1px solid @success !important; +} +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.focus, .btn-success:active, .btn-success:focus, .btn-success:hover, .open > .dropdown-toggle.btn-success { + background-color: darken(@success, 5%) !important; + border: 1px solid darken(@success, 5%) !important; +} + +.btn-info { + background-color: @info !important; + border: 1px solid @info !important; +} +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.focus, .btn-info:active, .btn-info:focus, .btn-info:hover, .open > .dropdown-toggle.btn-info { + background-color: darken(@info, 5%) !important; + border: 1px solid darken(@info, 5%) !important; +} + +.btn-warning { + background-color: @warning !important; + border: 1px solid @warning !important; +} +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.focus, .btn-warning:active, .btn-warning:focus, .btn-warning:hover, .open > .dropdown-toggle.btn-warning { + background-color: darken(@warning, 5%) !important; + border: 1px solid darken(@warning, 5%) !important; +} + +.btn-danger { + background-color: @danger !important; + border: 1px solid @danger !important; +} +.btn-danger:active, .btn-danger:focus, .btn-danger:hover, .btn-danger.active, .btn-danger.focus, .btn-danger:active, .btn-danger:focus, .btn-danger:hover, .open > .dropdown-toggle.btn-danger { + background-color: darken(@danger, 5%) !important; + border: 1px solid darken(@danger, 5%) !important; +} + +.btn-inverse { + background-color: @inverse !important; + border: 1px solid @inverse !important; +} +.btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.focus, .btn-inverse:active, .btn-inverse:focus, .btn-inverse:hover, .open > .dropdown-toggle.btn-inverse { + background-color: darken(@inverse, 5%) !important; + border: 1px solid darken(@inverse, 5%) !important; +} + +.btn-purple { + background-color: @purple !important; + border: 1px solid @purple !important; +} +.btn-purple:hover, .btn-purple:focus, .btn-purple:active { + background-color: darken(@purple, 5%) !important; + border: 1px solid darken(@purple, 5%) !important; +} + +.btn-pink { + background-color: @pink !important; + border: 1px solid @pink !important; +} +.btn-pink:hover, .btn-pink:focus, .btn-pink:active { + background-color: darken(@pink, 5%) !important; + border: 1px solid darken(@pink, 5%) !important; +} + +.btn-orange { + background-color: @orange !important; + border: 1px solid @orange !important; +} +.btn-orange:hover, .btn-orange:focus, .btn-orange:active { + background-color: darken(@orange, 5%) !important; + border: 1px solid darken(@orange, 5%) !important; +} + +.btn-brown { + background-color: @brown !important; + border: 1px solid @brown !important; +} +.btn-brown:hover, .btn-brown:focus, .btn-brown:active { + background-color: darken(@brown, 5%) !important; + border: 1px solid darken(@brown, 5%) !important; +} + +.btn-teal { + background-color: @teal !important; + border: 1px solid @teal !important; +} +.btn-teal:hover, .btn-teal:focus, .btn-teal:active { + background-color: darken(@teal, 5%) !important; + border: 1px solid darken(@teal, 5%) !important; +} + + +.btn-bordered { + border-bottom: 3px solid transparent; +} + +.btn-bordered.btn-default { + background-color: @white; + border-bottom: 2px solid fade(@dark,10%) !important; +} +.btn-bordered.btn-custom { + background-color: @custom; + border-bottom: 2px solid darken(@custom, 7%) !important; +} + +.btn-bordered.btn-primary { + border-bottom: 2px solid darken(@primary, 7%) !important; +} + +.btn-bordered.btn-success { + border-bottom: 2px solid darken(@success, 7%) !important; +} + +.btn-bordered.btn-info { + border-bottom: 2px solid darken(@info, 7%) !important; +} + +.btn-bordered.btn-warning { + border-bottom: 2px solid darken(@warning, 10%) !important; +} + +.btn-bordered.btn-danger { + border-bottom: 2px solid darken(@danger, 10%) !important; +} + +.btn-bordered.btn-inverse { + border-bottom: 2px solid darken(@inverse, 20%) !important; +} + +.btn-bordered.btn-purple { + border-bottom: 2px solid darken(@purple, 7%) !important; +} + +.btn-bordered.btn-pink { + border-bottom: 2px solid darken(@pink, 7%) !important; +} + +.btn-bordered.btn-orange { + border-bottom: 2px solid darken(@orange, 7%) !important; +} + +.btn-bordered.btn-brown { + border-bottom: 2px solid darken(@brown, 7%) !important; +} + +.btn-bordered.btn-teal { + border-bottom: 2px solid darken(@teal, 7%) !important; +} + +.btn-rounded { + border-radius: 2em; + padding: 6px 18px; +} + +/* Social Buttons */ +.btn-facebook { + color: @white !important; + background-color: #3b5998 !important; +} +.btn-twitter { + color: @white !important; + background-color: #00aced !important; +} +.btn-linkedin { + color: @white !important; + background-color: #007bb6 !important; +} +.btn-dribbble { + color: @white !important; + background-color: #ea4c89 !important; +} +.btn-googleplus { + color: @white !important; + background-color: #dd4b39 !important; +} +.btn-instagram { + color: @white !important; + background-color: #517fa4 !important; +} +.btn-pinterest { + color: @white !important; + background-color: #cb2027 !important; +} +.btn-dropbox { + color: @white !important; + background-color: #007ee5 !important; +} +.btn-flickr { + color: @white !important; + background-color: #ff0084 !important; +} +.btn-tumblr { + color: @white !important; + background-color: #32506d !important; +} +.btn-skype { + color: @white !important; + background-color: #00aff0 !important; +} +.btn-youtube { + color: @white !important; + background-color: #bb0000 !important; +} +.btn-github { + color: @white !important; + background-color: #171515 !important; +} + + + +/* =========== + Panels + =============*/ + +.panel { + border: 2px solid @light3; + box-shadow: none; + margin-bottom: 20px; + .panel-body { + padding: 20px; + + p{ + margin-bottom: 0; + line-height: 24px; + } + + p + p { + padding-top: 10px; + } + } +} + +.panel-heading { + border: none !important; + padding: 15px 20px; + margin: -2px; + border-radius: 4px 4px 0 0; +} + +.panel-default > .panel-heading { + background-color: @light3; + border-bottom: none; + color: @light7; +} + +.panel-title { + font-size: 15px; + font-weight: 600; + margin-bottom: 0; + margin-top: 0; + text-transform: uppercase; + letter-spacing: 0.03em; + font-family: @font-secondary; +} + +.panel-sub-title { + margin-bottom: 0px; + color: fade(@white,70%) !important; + margin-top: 3px; +} + +.panel-footer { + background: @light3; + border-top: 0; +} + +.panel-default .panel-sub-title { + color: inherit !important; +} +.panel-color { + .panel-title { + color: @white; + } +} + +.panel-primary > .panel-heading { + background-color: @primary; +} + +.panel-success > .panel-heading { + background-color: @success; +} + +.panel-info > .panel-heading { + background-color: @info; +} + +.panel-warning > .panel-heading { + background-color: @warning; +} + +.panel-danger > .panel-heading { + background-color: @danger; +} + +.panel-purple > .panel-heading { + background-color: @purple; +} + +.panel-pink > .panel-heading { + background-color: @pink; +} + +.panel-orange > .panel-heading { + background-color: @orange; +} + +.panel-brown > .panel-heading { + background-color: @brown; +} + +.panel-teal > .panel-heading { + background-color: @teal; +} + +.panel-inverse > .panel-heading { + background-color: @inverse; +} + +.panel-border { + border-radius: 3px; +} + +.panel-border .panel-heading { + background-color: @white; + border-top: 3px solid #ccc !important; + border-radius: 3px; + padding: 15px 20px 0; + margin: -2px 0 0 0 !important; +} + +.panel-border .panel-body { + padding: 15px 20px 20px 20px; +} + +.panel-border.panel-primary .panel-heading { + border-color: @primary !important; + color: @primary !important; +} + +.panel-border.panel-success .panel-heading { + border-color: @success !important; + color: @success !important; +} + +.panel-border.panel-info .panel-heading { + border-color: @info !important; + color: @info !important; +} + +.panel-border.panel-warning .panel-heading { + border-color: @warning !important; + color: @warning !important; +} + +.panel-border.panel-danger .panel-heading { + border-color: @danger !important; + color: @danger !important; +} + +.panel-border.panel-purple .panel-heading { + border-color: @purple !important; + color: @purple !important; +} + +.panel-border.panel-pink .panel-heading { + border-color: @pink !important; + color: @pink !important; +} + +.panel-border.panel-orange .panel-heading { + border-color: @orange !important; + color: @orange !important; +} + +.panel-border.panel-brown .panel-heading { + border-color: @brown !important; + color: @brown !important; +} + +.panel-border.panel-teal .panel-heading { + border-color: @teal !important; + color: @teal !important; +} + +.panel-border.panel-inverse .panel-heading { + border-color: @inverse !important; + color: @inverse !important; +} + +.panel-default>.panel-heading+.panel-collapse>.panel-body { + border-top: 0 !important; +} + + + + +/* =========== + Portlets + =============*/ + +.portlet { + background: @white; + border-radius: 3px; + margin-bottom: 20px; + transition: all 0.4s; + border: 2px solid @light3; + + .portlet-heading { + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + color: @white; + padding: 12px 20px; + margin: -2px -2px 0 -2px; + + .portlet-title { + color: @white; + float: left; + font-size: 15px; + font-weight: 600; + margin-bottom: 0; + margin-top: 9px; + text-transform: uppercase; + letter-spacing: 0.03em; + font-family: @font-secondary; + } + .portlet-widgets { + display: inline-block; + float: right; + font-size: 15px; + line-height: 30px; + padding-left: 15px; + position: relative; + text-align: right; + .divider { + margin: 0 5px; + } + } + a { + color: #999999; + } + } + .portlet-body { + -moz-border-radius-bottomleft: 5px; + -moz-border-radius-bottomright: 5px; + -webkit-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + background: @white; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; + padding: 15px; + } +} + +.portlet-default { + .portlet-title { + color: @light7 !important; + } +} +.portlet .portlet-heading .portlet-widgets .collapsed .ion-minus-round:before { + content: "\f217" !important; +} + +.portlet .portlet-heading.bg-purple a, .portlet .portlet-heading.bg-info a, +.portlet .portlet-heading.bg-success a, .portlet .portlet-heading.bg-primary a, +.portlet .portlet-heading.bg-danger a, .portlet .portlet-heading.bg-warning a, +.portlet .portlet-heading.bg-inverse a, .portlet .portlet-heading.bg-pink a, +.portlet .portlet-heading.bg-orange a,.portlet .portlet-heading.bg-brown a, +.portlet .portlet-heading.bg-teal a{ + color: @white; +} + +.panel-disabled { + background: fade(@dark,50%); + cursor: progress; + bottom: 20px; + border-radius: 3px; + left: 10px; + position: absolute; + right: 10px; + top: 0; +} + +.portlet-loader { + width: 30px; + height: 30px; + background-color: @dark; + border-radius: 2px; + -webkit-animation: sk-rotateplane 1.2s infinite ease-in-out; + animation: sk-rotateplane 1.2s infinite ease-in-out; + position: absolute; + left: 50%; + top: 50%; + margin-left: -15px; + margin-top: -15px; +} + +@-webkit-keyframes sk-rotateplane { + 0% { + -webkit-transform: perspective(120px); + } + 50% { + -webkit-transform: perspective(120px) rotateY(180deg); + } + 100% { + -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg); + } +} +@keyframes sk-rotateplane { + 0% { + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + + +/* ==== Draggable card ==== */ +.card-draggable-placeholder { + border: 2px dashed rgba(67, 89, 102, 0.5); + margin-bottom: 16px; + background-color: rgba(67, 89, 102, 0.08); +} + + +/* ============= + Checkbox and Radios +============= */ + +.checkbox { + padding-left: 20px; + label { + display: inline-block; + padding-left: 5px; + position: relative; + font-family: @font-primary; + font-weight: normal; + + &::before { + -o-transition: 0.3s ease-in-out; + -webkit-transition: 0.3s ease-in-out; + background-color: @white; + border-radius: 2px; + border: 1px solid darken(@light3,10%); + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + position: absolute; + transition: 0.3s ease-in-out; + width: 17px; + outline: none !important; + margin-top: 2px; + } + &::after { + color: @light7; + display: inline-block; + font-size: 11px; + height: 16px; + left: 1px; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + position: absolute; + top: 2px; + width: 16px; + } + } + input[type="checkbox"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; + + &:disabled + label { + opacity: 0.65; + } + } + input[type="checkbox"]:focus + label { + &::before { + outline-offset: -2px; + outline: none; + } + } + input[type="checkbox"]:checked + label { + &::after { + content: '\f26b'; + font-family: 'Material-Design-Iconic-Font'; + font-weight: bold; + } + } + input[type="checkbox"]:disabled + label { + &::before { + background-color: @light; + cursor: not-allowed; + } + } +} + +.checkbox.checkbox-circle { + label { + &::before { + border-radius: 50%; + } + } +} + +.checkbox.checkbox-inline { + margin-top: 0; +} + +.checkbox.checkbox-single { + label { + height: 17px; + } +} + +.checkbox-custom { + input[type="checkbox"]:checked + label { + &::before { + background-color: @custom; + border-color: @custom; + } + &::after { + color: @white; + } + } +} + +.checkbox-primary { + input[type="checkbox"]:checked + label { + &::before { + background-color: @primary; + border-color: @primary; + } + &::after { + color: @white; + } + } +} + +.checkbox-danger { + input[type="checkbox"]:checked + label { + &::before { + background-color: @danger; + border-color: @danger; + } + &::after { + color: @white; + } + } +} + +.checkbox-info { + input[type="checkbox"]:checked + label { + &::before { + background-color: @info; + border-color: @info; + } + &::after { + color: @white; + } + } +} + +.checkbox-warning { + input[type="checkbox"]:checked + label { + &::before { + background-color: @warning; + border-color: @warning; + } + &::after { + color: @white; + } + } +} + +.checkbox-success { + input[type="checkbox"]:checked + label { + &::before { + background-color: @success; + border-color: @success; + } + &::after { + color: @white; + } + } +} + +.checkbox-purple { + input[type="checkbox"]:checked + label { + &::before { + background-color: @purple; + border-color: @purple; + } + &::after { + color: @white; + } + } +} + +.checkbox-pink { + input[type="checkbox"]:checked + label { + &::before { + background-color: @pink; + border-color: @pink; + } + &::after { + color: @white; + } + } +} + +.checkbox-inverse { + input[type="checkbox"]:checked + label { + &::before { + background-color: @inverse; + border-color: @inverse; + } + &::after { + color: @white; + } + } +} + +/* Radios */ + +.radio { + padding-left: 20px; + label { + display: inline-block; + padding-left: 5px; + position: relative; + font-family: @font-primary; + font-weight: normal; + + &::before { + -o-transition: border 0.5s ease-in-out; + -webkit-transition: border 0.5s ease-in-out; + background-color: @white; + border-radius: 50%; + border: 1px solid darken(@light3,10%); + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + outline: none !important; + position: absolute; + transition: border 0.5s ease-in-out; + width: 17px; + } + &::after { + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -ms-transform: scale(0, 0); + -o-transform: scale(0, 0); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -webkit-transform: scale(0, 0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + background-color: @light7; + border-radius: 50%; + content: " "; + display: inline-block; + height: 11px; + left: 3px; + margin-left: -20px; + position: absolute; + top: 3px; + transform: scale(0, 0); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + width: 11px; + } + } + input[type="radio"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; + &:disabled + label { + opacity: 0.65; + } + } + input[type="radio"]:focus + label { + &::before { + outline-offset: -2px; + } + } + input[type="radio"]:checked + label { + &::after { + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + } + input[type="radio"]:disabled + label { + &::before { + cursor: not-allowed; + } + } +} + +.radio.radio-inline { + margin-top: 0; +} + +.radio.radio-single { + label { + height: 17px; + } +} + + +.radio-custom { + input[type="radio"] + label { + &::after { + background-color: @custom; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @custom; + } + &::after { + background-color: @custom; + } + } +} + +.radio-primary { + input[type="radio"] + label { + &::after { + background-color: @primary; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @primary; + } + &::after { + background-color: @primary; + } + } +} + +.radio-danger { + input[type="radio"] + label { + &::after { + background-color: @danger; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @danger; + } + &::after { + background-color: @danger; + } + } +} + +.radio-info { + input[type="radio"] + label { + &::after { + background-color: @info; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @info; + } + &::after { + background-color: @info; + } + } +} + +.radio-warning { + input[type="radio"] + label { + &::after { + background-color: @warning; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @warning; + } + &::after { + background-color: @warning; + } + } +} + +.radio-success { + input[type="radio"] + label { + &::after { + background-color: @success; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @success; + } + &::after { + background-color: @success; + } + } +} + +.radio-purple { + input[type="radio"] + label { + &::after { + background-color: @purple; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @purple; + } + &::after { + background-color: @purple; + } + } +} + +.radio-pink { + input[type="radio"] + label { + &::after { + background-color: @pink; + } + } + input[type="radio"]:checked + label { + &::before { + border-color: @pink; + } + &::after { + background-color: @pink; + } + } +} + +/* ============= + Modals +============= */ + +.modal { + .modal-dialog { + .modal-content { + -moz-box-shadow: none; + -webkit-box-shadow: none; + border-color: #DDDDDD; + border-radius: 2px; + box-shadow: none; + padding: 25px; + .modal-header { + border-bottom-width: 2px; + margin: 0; + padding: 0; + padding-bottom: 15px; + } + .modal-body { + padding: 20px 0; + } + .modal-footer { + padding: 0; + padding-top: 15px; + } + } + } +} + +.modal-full { + width: 98%; +} + +.modal-content { + .nav.nav-tabs + .tab-content { + margin-bottom: 0; + } + .panel-group { + margin-bottom: 0; + } + .panel { + border-top: none; + } +} + +/* Custom-modal */ + +.modal-demo { + background-color: @white; + width: 600px; + .border-radius(4px); + display: none; + + .close { + position: absolute; + top: 15px; + right: 25px; + color: @light; + } +} + +.custom-modal-title { + padding: 15px 25px 15px 25px; + line-height: 22px; + font-size: 18px; + background-color: @dark; + color: @white; + text-align: left; + margin: 0; +} + +.custom-modal-text { + padding: 20px; +} + +.custombox-modal-flash, .custombox-modal-rotatedown { + .close { + top: 20px; + z-index: 9999; + } +} + + + + +/* ============= + Tabs +============= */ + +.tab-content { + padding: 20px 0 0 0; +} + +.nav-tabs>li>a { + color: @dark; + text-transform: uppercase; + font-weight: 600; + font-family: @font-secondary; + + &:hover { + background-color: fade(@muted,10%); + } +} + +.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover { + color: @custom; +} + +/* Vertial tab */ +.tabs-vertical-env { + + .tab-content { + background: @white; + display: table-cell; + padding: 0 0 0 20px; + vertical-align: top; + } + .nav.tabs-vertical { + display: table-cell; + min-width: 120px; + vertical-align: top; + width: 150px; + + li > a { + color: @dark; + text-align: center; + white-space: nowrap; + font-weight: 600; + font-family: @font-secondary; + text-transform: uppercase; + } + + li.active > a { + background-color: fade(@muted,10%); + border: 0; + color: @custom; + } + + } +} + +.tabs-vertical-env-right { + .tab-content { + padding: 0 20px 0 0; + } +} + +.tabs-bordered { + border-bottom: 2px solid fade(@muted,20%) !important; +} + +.tabs-bordered li a, .tabs-bordered li a:hover, .tabs-bordered li a:focus { + border: 0 !important; + background-color: @white !important; + padding: 10px 20px !important; +} +.tabs-bordered li.active a, .tabs-bordered li.active a:hover, .tabs-bordered li.active a:focus { + border-bottom: 2px solid @custom !important; + margin-bottom: -1px; + color: @custom; +} + +/* Navpills */ +.nav-pills>li>a { + color: @dark; +} +.nav-pills>li.active>a, .nav-pills>li.active>a:focus, .nav-pills>li.active>a:hover { + background-color: @custom; +} + + +/* ============= + Progressbars +============= */ + + +.progress { + -webkit-box-shadow: none !important; + background-color: @light3; + box-shadow: none !important; + height: 10px; + margin-bottom: 18px; + overflow: hidden; +} + +.progress-bar { + box-shadow: none; + font-size: 8px; + font-weight: 600; + line-height: 12px; +} + +.progress.progress-sm { + height: 5px !important; + .progress-bar { + font-size: 8px; + line-height: 5px; + } +} + +.progress.progress-md { + height: 15px !important; + .progress-bar { + font-size: 10.8px; + line-height: 14.4px; + } +} + +.progress.progress-lg { + height: 20px !important; + .progress-bar { + font-size: 12px; + line-height: 20px; + } +} + +.progress-bar-primary { + background-color: @primary; +} + +.progress-bar-success { + background-color: @success; +} + +.progress-bar-info { + background-color: @info; +} + +.progress-bar-warning { + background-color: @warning; +} + +.progress-bar-danger { + background-color: @danger; +} + +.progress-bar-inverse { + background-color: @inverse; +} + +.progress-bar-purple { + background-color: @purple; +} + +.progress-bar-pink { + background-color: @pink; +} + +.progress-bar-custom { + background-color: @custom; +} + +.progress-bar-orange { + background-color: @orange; +} + +.progress-bar-brown { + background-color: @brown; +} + +.progress-bar-teal { + background-color: @teal; +} + + +/* Progressbar Vertical */ +.progress-vertical { + min-height: 250px; + height: 250px; + width: 10px; + position: relative; + display: inline-block; + margin-bottom: 0; + margin-right: 20px; + + .progress-bar { + width: 100%; + } +} +.progress-vertical-bottom{ + min-height: 250px; + height: 250px; + position: relative; + width: 10px; + display: inline-block; + margin-bottom: 0; + margin-right: 20px; + + .progress-bar { + width: 100%; + position: absolute; + bottom: 0; + } +} + +.progress-vertical.progress-sm,.progress-vertical-bottom.progress-sm { + width: 5px !important; + .progress-bar { + font-size: 8px; + line-height: 5px; + } +} + +.progress-vertical.progress-md,.progress-vertical-bottom.progress-md { + width: 15px !important; + .progress-bar { + font-size: 10.8px; + line-height: 14.4px; + } +} + +.progress-vertical.progress-lg,.progress-vertical-bottom.progress-lg { + width: 20px !important; + .progress-bar { + font-size: 12px; + line-height: 20px; + } +} + + + +/* ============= + Notification +============= */ +#toast-container > div { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + opacity: 1; +} +#toast-container > :hover { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + opacity: 0.98; +} +.toast { + background-color: @custom; +} +.toast-success { + background-color: @success; + border: 2px solid @success; +} +.toast-error { + background-color: @danger; + border: 2px solid @danger; +} +.toast-info { + background-color: @info; + border: 2px solid @info; +} +.toast-warning { + background-color: @warning; + border: 2px solid @warning; +} + +/* ============= + Alerts +============= */ +.alert { + position: relative; + + .alert-link { + font-weight: 600; + font-family: @font-secondary; + } +} + +.alert-icon { + padding-left: 50px; + + i { + position: absolute; + left: 0; + height: 50px; + width: 50px; + text-align: center; + top: 0; + line-height: 50px; + font-size: 22px; + } +} + +.alert-success { + color: @success; + background-color: lighten(@success,35%); + border-color: lighten(@success,20%); + .alert-link { + color: darken(@success,10%); + } + hr { + border-top-color: darken(@success,10%); + } +} + +.alert-info { + color: @info; + background-color: lighten(@info,35%); + border-color: lighten(@info,20%); + .alert-link { + color: darken(@info,10%); + } + hr { + border-top-color: darken(@info,10%); + } +} + +.alert-warning { + color: @warning; + background-color: lighten(@warning, 25%); + border-color: lighten(@warning, 15%); + .alert-link { + color: darken(@warning, 10%); + } + hr { + border-top-color: darken(@warning, 10%); + } +} + +.alert-danger { + color: @danger; + background-color: lighten(@danger,25%); + border-color: lighten(@danger,15%); + .alert-link { + color: darken(@danger,10%); + } + hr { + border-top-color: darken(@danger,10%); + } +} + +/* ============= + Carousel +============= */ + +.carousel-control { + width: 10%; + + span { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + font-size: 30px; + } +} + + + +/* =========== */ +/* Sweet Alert */ +/* =========== */ + +.sweet-alert { + background: url("../images/bg-pattern.png"); + + h2 { + font-size: 24px; + position: relative; + } + + p { + font-size: 14px; + line-height: 22px; + } + .icon.success { + .placeholder { + border: 4px solid fade(@success,30%); + } + .line { + background-color: @success; + } + } + .icon.warning { + border-color: @warning; + } + .icon.info { + border-color: @info; + } + .btn-warning:focus,.btn-info:focus,.btn-success:focus,.btn-danger:focus,.btn-default:focus { + box-shadow: none; + } + .btn-lg { + font-size: 15px !important; + padding: 6px 14px !important; + } +} + + + +/* ============= + Widgets +============= */ +.widget-box-one { + .widget-one-icon { + position: absolute; + right: 30px; + font-size: 72px !important; + top: 0; + color: @light3; + overflow: hidden; + vertical-align: middle; + line-height: 2 !important; + } + + .wigdet-one-content { + position: relative; + } +} + +.widget-box-two { + .widget-two-icon { + position: absolute; + right: 30px; + font-size: 42px !important; + top: 30px; + overflow: hidden; + vertical-align: middle; + height: 80px; + width: 80px; + text-align: center; + line-height: 80px; + border-radius: 50%; + } + .wigdet-two-content { + position: relative; + } +} + + +.widget-two-primary { + background-color: fade(@primary,20%); + border-color: fade(@primary,50%); + + .widget-two-icon { + color: fade(@primary,50%); + border: 2px solid fade(@primary,50%); + } +} + +.widget-two-success { + background-color: fade(@success,20%); + border-color: fade(@success,50%); + + .widget-two-icon { + color: fade(@success,50%); + border: 2px solid fade(@success,50%); + } +} + +.widget-two-warning { + background-color: fade(@warning,20%); + border-color: fade(@warning,50%); + + .widget-two-icon { + color: fade(@warning,50%); + border: 2px solid fade(@warning,50%); + } +} + +.widget-two-info { + background-color: fade(@info,20%); + border-color: fade(@info,50%); + + .widget-two-icon { + color: fade(@info,50%); + border: 2px solid fade(@info,50%); + } +} + +.widget-two-danger { + background-color: fade(@danger,20%); + border-color: fade(@danger,50%); + + .widget-two-icon { + color: fade(@danger,50%); + border: 2px solid fade(@danger,50%); + } +} + +.widget-two-inverse { + background-color: fade(@inverse,20%); + border-color: fade(@inverse,50%); + + .widget-two-icon { + color: fade(@inverse,50%); + border: 2px solid fade(@inverse,50%); + } +} + +.widget-two-purple { + background-color: fade(@purple,20%); + border-color: fade(@purple,50%); + + .widget-two-icon { + color: fade(@purple,50%); + border: 2px solid fade(@purple,50%); + } +} + +.widget-two-pink { + background-color: fade(@pink,20%); + border-color: fade(@pink,50%); + + .widget-two-icon { + color: fade(@pink,50%); + border: 2px solid fade(@pink,50%); + } +} + +.widget-two-orange { + background-color: fade(@orange,20%); + border-color: fade(@orange,50%); + + .widget-two-icon { + color: fade(@orange,50%); + border: 2px solid fade(@orange,50%); + } +} + +.widget-two-brown { + background-color: fade(@brown,20%); + border-color: fade(@brown,50%); + + .widget-two-icon { + color: fade(@brown,50%); + border: 2px solid fade(@brown,50%); + } +} + +.widget-two-teal { + background-color: fade(@teal,20%); + border-color: fade(@teal,50%); + + .widget-two-icon { + color: fade(@teal,50%); + border: 2px solid fade(@teal,50%); + } +} + +.widget-two-default { + background-color: fade(@light3,50%); + border-color: darken(@light3,5%); + + .widget-two-icon { + color: darken(@light3,20%); + border: 2px solid darken(@light3,20%); + } +} + +.widget-box-three .bg-icon { + height: 80px; + width: 80px; + text-align: center; + -webkit-border-radius: 50%; + border-radius: 50%; + -moz-border-radius: 50%; + background-clip: padding-box; + border: 1px dashed @muted; + background-color: @light3; + margin-right: 20px; + + i { + line-height: 80px; + font-size: 36px; + color: @muted; + } +} + +.tilebox-two { + border-left: 4px solid @light3; + background-color: @light3; + i { + font-size: 54px; + opacity: 0.3; + margin-top: 15px; + } +} + +.tilebox-custom { + border-left-color: @custom; +} +.tilebox-primary { + border-left-color: @primary; +} +.tilebox-success { + border-left-color: @success; +} +.tilebox-info { + border-left-color: @info; +} +.tilebox-warning { + border-left-color: @warning; +} +.tilebox-danger { + border-left-color: @danger; +} +.tilebox-inverse { + border-left-color: @inverse; +} +.tilebox-pink { + border-left-color: @pink; +} +.tilebox-purple { + border-left-color: @purple; +} +.tilebox-dark { + border-left-color: @dark; +} +.tilebox-brown { + border-left-color: @brown; +} +.tilebox-orange { + border-left-color: @orange; +} +.tilebox-teal { + border-left-color: @teal; +} + + +/* Inbox-widget */ + +.inbox-widget { + .inbox-item { + border-bottom: 1px solid fade(@light3,90%); + overflow: hidden; + padding: 10px 0; + position: relative; + .inbox-item-img { + display: block; + float: left; + margin-right: 15px; + width: 40px; + } + img { + width: 40px; + } + .inbox-item-author { + color: @dark; + display: block; + margin: 0; + } + .inbox-item-text { + color: #a0a0a0; + display: block; + font-size: 12px; + margin: 0; + } + .inbox-item-date { + color: #a9a9a9; + font-size: 11px; + position: absolute; + right: 7px; + top: 2px; + } + } +} + +/* Chat widget */ +.conversation-list { + list-style: none; + padding: 0 10px; + li { + margin-bottom: 24px; + } + .chat-avatar { + display: inline-block; + float: left; + text-align: center; + width: 42px; + img { + border-radius: 100%; + width: @width; + } + i { + font-size: 12px; + font-style: normal; + } + } + .ctext-wrap { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + background: fade(@light3,60%); + border-radius: 3px; + display: inline-block; + padding: 12px; + position: relative; + + i { + color: @dark; + display: block; + font-size: 12px; + font-style: normal; + font-weight: bold; + font-family: @font-secondary; + position: relative; + } + p { + margin: 0; + padding-top: 3px; + } + &:after { + right: 100%; + top: 0; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-top-color: fade(@light3,60%); + border-width: 8px; + margin-left: -1px; + border-right-color: fade(@light3,60%); + } + } + .conversation-text { + display: inline-block; + float: left; + font-size: 12px; + margin-left: 12px; + width: 70%; + } + .odd { + .chat-avatar { + float: right !important; + } + .conversation-text { + float: right !important; + margin-right: 12px; + text-align: right; + width: 70% !important; + } + .ctext-wrap { + background-color: @danger; + color: @white; + + i { + color: @white; + } + &:after { + border-color: rgba(238, 238, 242, 0) !important; + border-left-color: @danger !important; + border-top-color: @danger !important; + left: 100% !important; + margin-right: -1px; + } + } + } +} + +.chat-send { + padding-left: 0; + padding-right: 30px; + + button { + width: @width; + } +} + +.chat-inputbar { + padding-left: 30px; +} + +/* Todos widget */ + +#todo-message { + font-size: 16px; +} + +.todo-list { + li { + border-radius: 0; + border: 0; + margin: 0; + padding: 1px; + color: @muted; + + &:last-of-type { + border-bottom: none; + } + } + label { + font-family: @font-primary; + } +} + +.todo-send { + padding-left: 0; +} + + +/* Avatar box */ +.avatar-sm-box { + height: 32px; + width: 32px; + color: @white; + display: block; + line-height: 32px; + text-align: center; + border-radius: 50%; + font-family: @font-secondary; + font-size: 16px; +} + + +/* ============= + Nestable +============= */ + + +.custom-dd { + .dd-list { + .dd-item { + .dd-handle { + background: @light3; + border: none; + padding: 8px 16px; + height: auto; + font-weight: 600; + font-family: @font-secondary; + .border-radius(3px); + + &:hover { + color: @custom; + } + } + + button { + height: auto; + font-size: 17px; + margin: 8px auto; + color: @light7; + width: 30px; + } + } + } +} + +.custom-dd-empty { + .dd-list { + .dd3-handle { + border: none; + background: @light3; + height: 36px !important; + width: 36px !important; + + &:before { + color: inherit; + top: 7px; + } + + &:hover { + color: @custom; + } + } + .dd3-content { + height: auto; + border: none; + padding: 8px 16px 8px 46px; + background: @light3; + font-weight: 600; + font-family: @font-secondary; + + &:hover { + color: @custom; + } + } + button { + width: 26px; + height: 26px; + font-size: 16px; + font-weight: 600; + } + } +} + +.dd-dragel > .dd-item .dd-handle { + padding: 8px 16px !important; + background: @light3; + height: auto; +} + +.dd-placeholder, .dd-empty { + background: @light3; + border: 1px dashed @muted; +} +.dd-dragel > .dd3-item > .dd3-handle { + border: none; + background: @light3; + height: 36px !important; + width: 36px !important; + + &:before { + color: inherit; + top: 7px; + } +} +.dd-dragel > .dd3-item > .dd3-content { + padding: 8px 16px 8px 46px; + background: @light3; + height: auto; +} + + + +/* ============= + Rating +============= */ + +.rating-md { + i { + font-size: 18px; + } +} + +.rating-lg { + i { + font-size: 24px; + } +} + + + +/* ============= + Calendar +============= */ + + +.calendar { + float: left; + margin-bottom: 0; +} + +.fc-view { + margin-top: 30px; +} +.none-border { + .modal-footer { + border-top: none; + } +} + +.fc-toolbar { + margin-bottom: 5px; + margin-top: 15px; + h2 { + font-size: 18px; + font-weight: 600; + font-family: @font-secondary; + line-height: 30px; + text-transform: uppercase; + } +} +.fc-day-grid-event .fc-time { + font-family: @font-secondary; +} + +.fc-day { + background: @white; +} + +.fc-toolbar .fc-state-active, .fc-toolbar .ui-state-active, +.fc-toolbar button:focus, .fc-toolbar button:hover, +.fc-toolbar .ui-state-hover { + z-index: 0; +} + + +.fc { + th.fc-widget-header { + background: @light; + font-size: 14px; + line-height: 20px; + padding: 10px 0; + text-transform: uppercase; + } +} +.fc-unthemed th, .fc-unthemed td, .fc-unthemed thead, .fc-unthemed tbody, .fc-unthemed .fc-divider, .fc-unthemed .fc-row, .fc-unthemed .fc-popover { + border-color: @light3; +} + +.fc-button { + background: #f1f1f1; + border: none; + color: @light7; + text-transform: capitalize; + box-shadow: none !important; + border-radius: 3px !important; + margin: 0 3px !important; + padding: 6px 12px !important; + height: auto !important; +} + +.fc-text-arrow { + font-family: inherit; + font-size: 16px; +} + +.fc-state-hover { + background: @light3; +} + +.fc-state-highlight { + background: #f0f0f0; +} + +.fc-state-down, .fc-state-active,.fc-state-disabled { + background-color: @custom !important; + color: @white !important; + text-shadow: none !important; +} + +.fc-cell-overlay { + background: #f0f0f0; +} + +.fc-unthemed { + .fc-today { + background: @white; + } +} + +.fc-event { + border-radius: 2px; + border: none; + cursor: move; + font-size: 13px; + margin: 5px 7px; + padding: 5px 5px; + text-align: center; +} + +.external-event { + cursor: move; + margin: 10px 0; + padding: 6px 10px; +} +.external-event.bg-primary { + background-color: fade(@primary,30%) !important; + color: @primary; +} + +.external-event.bg-success { + background-color: fade(@success,30%) !important; + color: @success; +} + +.external-event.bg-info { + background-color: fade(@info,30%) !important; + color: @info; +} + +.external-event.bg-warning { + background-color: fade(@warning,30%) !important; + color: @warning; +} + +.external-event.bg-danger { + background-color: fade(@danger,30%) !important; + color: @danger; +} + +.external-event.bg-pink { + background-color: fade(@pink,30%) !important; + color: @pink; +} + +.external-event.bg-purple { + background-color: fade(@purple,30%) !important; + color: @purple; +} + +.external-event.bg-inverse { + background-color: fade(@inverse,30%) !important; + color: @inverse; +} + +.external-event.bg-orange { + background-color: fade(@orange,30%) !important; + color: @orange; +} + +.external-event.bg-brown { + background-color: fade(@brown,30%) !important; + color: @brown; +} + +.external-event.bg-teal { + background-color: fade(@teal,30%) !important; + color: @teal; +} + +.fc-basic-view { + td.fc-week-number { + span { + padding-right: 8px; + font-weight: 700; + font-family: @font-secondary; + } + } + td.fc-day-number { + padding-right: 8px; + font-weight: 700; + font-family: @font-secondary; + } +} + + + +/* ============= + Form +============= */ + +/* Form components */ + +label { + font-weight: 600; + font-family: @font-secondary; +} + +textarea.form-control { + min-height: 90px; +} +.form-control { + border: 1px solid #e3e3e3; + border-radius: 4px; + padding: 7px 12px; + height: 38px; + max-width: 100%; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: all 300ms linear; + -moz-transition: all 300ms linear; + -o-transition: all 300ms linear; + -ms-transition: all 300ms linear; + transition: all 300ms linear; +} +.form-control:focus { + border: 1px solid #aaaaaa; + -webkit-box-shadow: none; + box-shadow: none; + outline: 0 !important; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-horizontal .form-group { + margin-left: -10px; + margin-right: -10px; +} +.form-control-feedback { + line-height: 38px !important; +} +.input-group-btn .btn { + padding: 8px 12px; +} +.input-group-btn .btn-sm { + padding: 5px 10px; +} +.input-group-btn .btn-lg { + padding: 10px 17px; +} + +.has-success .checkbox, .has-success .checkbox-inline, +.has-success .control-label, .has-success .help-block, +.has-success .radio, .has-success .radio-inline, +.has-success.checkbox label, .has-success.checkbox-inline label, +.has-success.radio label, .has-success.radio-inline label, +.has-success .form-control-feedback{ + color: @success; +} + +.has-warning .checkbox, .has-warning .checkbox-inline, +.has-warning .control-label, .has-warning .help-block, +.has-warning .radio, .has-warning .radio-inline, +.has-warning.checkbox label, .has-warning.checkbox-inline label, +.has-warning.radio label, .has-warning.radio-inline label, +.has-warning .form-control-feedback{ + color: @warning; +} +.has-error .checkbox, .has-error .checkbox-inline, +.has-error .control-label, .has-error .help-block, +.has-error .radio, .has-error .radio-inline, +.has-error.checkbox label, .has-error.checkbox-inline label, +.has-error.radio label, .has-error.radio-inline label, +.has-error .form-control-feedback{ + color: @danger; +} +.has-success .form-control { + border-color: @success; + box-shadow: none !important; +} +.has-warning .form-control { + border-color: @warning; + box-shadow: none !important; +} +.has-error .form-control { + border-color: @danger; + box-shadow: none !important; +} +.input-group-addon { + border-radius: 2px; + border: 1px solid #eeeeee; +} + + +/* == Form Advanced */ + +/* Bootstrap tagsinput */ +.bootstrap-tagsinput { + box-shadow: none; + padding: 5px 7px 5px; + width: 100%; + border: 1px solid #e3e3e3; + + .label-info { + background-color: @custom !important; + display: inline-block; + padding: 5px; + margin: 3px 1px; + } +} + +/* CSS Switch */ +input[switch] { + display: none; +} +input[switch] + label { + font-size: 1em; + line-height: 1; + width: 56px; + height: 24px; + background-color: #ddd; + background-image: none; + border-radius: 2rem; + padding: 0.16667rem; + cursor: pointer; + display: inline-block; + text-align: center; + position: relative; + font-family: inherit; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch] + label:before { + color: @dark; + content: attr(data-off-label); + display: block; + font-family: inherit; + font-weight: 500; + font-size: 12px; + line-height: 21px; + position: absolute; + right: 6px; + margin: 0.21667rem; + top: 0; + text-align: center; + min-width: 1.66667rem; + overflow: hidden; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch] + label:after { + content: ''; + position: absolute; + left: 3px; + background-color: #f7f7f7; + box-shadow: none; + border-radius: 2rem; + height: 20px; + width: 20px; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +input[switch]:checked + label { + background-color: @custom; +} +input[switch]:checked + label:before { + color: @white; + content: attr(data-on-label); + right: auto; + left: 6px; +} +input[switch]:checked + label:after { + left: 33px; + background-color: #f7f7f7; +} + +input[switch="bool"] + label { + background-color: @danger; +} +input[switch="bool"] + label:before,input[switch="bool"]:checked + label:before, +input[switch="default"]:checked + label:before{ + color: @white !important; +} + +input[switch="bool"]:checked + label { + background-color: @success; +} + +input[switch="default"]:checked + label { + background-color: #a2a2a2; +} + +input[switch="primary"]:checked + label { + background-color: @primary; +} + +input[switch="success"]:checked + label { + background-color: @success; +} + +input[switch="info"]:checked + label { + background-color: @info; +} + +input[switch="warning"]:checked + label { + background-color: @warning; +} + +input[switch="inverse"]:checked + label { + background-color: @inverse; +} + +input[switch="pink"]:checked + label { + background-color: @pink; +} + +input[switch="purple"]:checked + label { + background-color: @purple; +} + +input[switch="orange"]:checked + label { + background-color: @orange; +} + +input[switch="brown"]:checked + label { + background-color: @brown; +} + +input[switch="teal"]:checked + label { + background-color: @teal; +} + + +/* Button Switch css */ + +.btn-switch { + position: relative; + display: inline-block; + cursor: pointer; +} +.btn-switch > input[type="checkbox"] { + position: absolute; + opacity: 0; + visibility: hidden; + cursor: pointer; + left: -100%; + top: -100%; +} +.btn-switch > input[type="checkbox"] + .btn { + background-color: transparent !important; + border-color: @custom; + color: @custom !important; +} +.btn-switch > input[type="checkbox"] + .btn > em { + display: inline-block; + border: 1px solid @custom; + border-radius: 50%; + padding: 2px; + margin: 0 4px 0 0; + top: 1px; + font-size: 10px; + text-align: center; +} +.btn-switch > input[type="checkbox"] + .btn > em:before { + opacity: 0; +} +.btn-switch > input[type="checkbox"]:checked + .btn { + background-color: @custom !important; + color: @white !important; +} +.btn-switch > input[type="checkbox"]:checked + .btn > em { + background-color: @white; + color: @custom !important; +} +.btn-switch > input[type="checkbox"]:checked + .btn > em:before { + opacity: 1; +} + +.btn-switch-primary > input[type="checkbox"] + .btn, +.btn-switch-primary > input[type="checkbox"]:checked + .btn > em{ + color: @primary !important; +} +.btn-switch-primary > input[type="checkbox"] + .btn, +.btn-switch-primary > input[type="checkbox"] + .btn > em{ + border-color: @primary !important; +} +.btn-switch-primary > input[type="checkbox"]:checked + .btn { + background-color: @primary !important; +} + +.btn-switch-success > input[type="checkbox"] + .btn, +.btn-switch-success > input[type="checkbox"]:checked + .btn > em{ + color: @success !important; +} +.btn-switch-success > input[type="checkbox"] + .btn, +.btn-switch-success > input[type="checkbox"] + .btn > em{ + border-color: @success !important; +} +.btn-switch-success > input[type="checkbox"]:checked + .btn { + background-color: @success !important; +} + +.btn-switch-info > input[type="checkbox"] + .btn, +.btn-switch-info > input[type="checkbox"]:checked + .btn > em{ + color: @info !important; +} +.btn-switch-info > input[type="checkbox"] + .btn, +.btn-switch-info > input[type="checkbox"] + .btn > em{ + border-color: @info !important; +} +.btn-switch-info > input[type="checkbox"]:checked + .btn { + background-color: @info !important; +} + +.btn-switch-warning > input[type="checkbox"] + .btn, +.btn-switch-warning > input[type="checkbox"]:checked + .btn > em{ + color: @warning !important; +} +.btn-switch-warning > input[type="checkbox"] + .btn, +.btn-switch-warning > input[type="checkbox"] + .btn > em{ + border-color: @warning !important; +} +.btn-switch-warning > input[type="checkbox"]:checked + .btn { + background-color: @warning !important; +} + +.btn-switch-danger > input[type="checkbox"] + .btn, +.btn-switch-danger > input[type="checkbox"]:checked + .btn > em{ + color: @danger !important; +} +.btn-switch-danger > input[type="checkbox"] + .btn, +.btn-switch-danger > input[type="checkbox"] + .btn > em{ + border-color: @danger !important; +} +.btn-switch-danger > input[type="checkbox"]:checked + .btn { + background-color: @danger !important; +} + +.btn-switch-inverse > input[type="checkbox"] + .btn, +.btn-switch-inverse > input[type="checkbox"]:checked + .btn > em{ + color: @inverse !important; +} +.btn-switch-inverse > input[type="checkbox"] + .btn, +.btn-switch-inverse > input[type="checkbox"] + .btn > em{ + border-color: @inverse !important; +} +.btn-switch-inverse > input[type="checkbox"]:checked + .btn { + background-color: @inverse !important; +} + +.btn-switch-pink > input[type="checkbox"] + .btn, +.btn-switch-pink > input[type="checkbox"]:checked + .btn > em{ + color: @pink !important; +} +.btn-switch-pink > input[type="checkbox"] + .btn, +.btn-switch-pink > input[type="checkbox"] + .btn > em{ + border-color: @pink !important; +} +.btn-switch-pink > input[type="checkbox"]:checked + .btn { + background-color: @pink !important; +} + +.btn-switch-purple > input[type="checkbox"] + .btn, +.btn-switch-purple > input[type="checkbox"]:checked + .btn > em{ + color: @purple !important; +} +.btn-switch-purple > input[type="checkbox"] + .btn, +.btn-switch-purple > input[type="checkbox"] + .btn > em{ + border-color: @purple !important; +} +.btn-switch-purple > input[type="checkbox"]:checked + .btn { + background-color: @purple !important; +} + +.btn-switch-orange > input[type="checkbox"] + .btn, +.btn-switch-orange > input[type="checkbox"]:checked + .btn > em{ + color: @orange !important; +} +.btn-switch-orange > input[type="checkbox"] + .btn, +.btn-switch-orange > input[type="checkbox"] + .btn > em{ + border-color: @orange !important; +} +.btn-switch-orange > input[type="checkbox"]:checked + .btn { + background-color: @orange !important; +} + +.btn-switch-brown > input[type="checkbox"] + .btn, +.btn-switch-brown > input[type="checkbox"]:checked + .btn > em{ + color: @brown !important; +} +.btn-switch-brown > input[type="checkbox"] + .btn, +.btn-switch-brown > input[type="checkbox"] + .btn > em{ + border-color: @brown !important; +} +.btn-switch-brown > input[type="checkbox"]:checked + .btn { + background-color: @brown !important; +} + +.btn-switch-teal > input[type="checkbox"] + .btn, +.btn-switch-teal > input[type="checkbox"]:checked + .btn > em{ + color: @teal !important; +} +.btn-switch-teal > input[type="checkbox"] + .btn, +.btn-switch-teal > input[type="checkbox"] + .btn > em{ + border-color: @teal !important; +} +.btn-switch-teal > input[type="checkbox"]:checked + .btn { + background-color: @teal !important; +} + + +/* Multiple select */ +.search-input { + margin-bottom: 10px; +} + +.ms-container { + background: transparent url('../plugins/multiselect/img/multiple-arrow.png') no-repeat 50% 50%; + width: 100% !important; + max-width: 360px !important; + + .ms-list { + box-shadow: none; + border: 1px solid fade(@dark,20%); + } + .ms-list.ms-focus { + box-shadow: none; + border: 1px solid fade(@dark,40%); + } + .ms-selectable { + box-shadow: none; + outline: none !important; + + li.ms-elem-selectable{ + border: none; + padding: 5px 10px; + } + li.ms-hover { + background-color: @custom; + } + } + .ms-selection { + li.ms-elem-selection{ + border: none; + padding: 5px 10px; + } + li.ms-hover { + background-color: @custom; + } + } +} + + +/* Select 2 */ +.select2-container { + width: 100% !important; + + .select2-selection--single { + border: 1px solid #E3E3E3 !important; + height: 38px !important; + + .select2-selection__rendered { + line-height: 36px !important; + padding-left: 12px !important; + } + + .select2-selection__arrow { + height: 34px; + width: 34px; + right: 3px; + + b{ + border-color: #999 transparent transparent transparent; + border-width: 6px 6px 0 6px; + } + } + } +} + +.select2-container--open { + .select2-selection--single { + + .select2-selection__arrow { + + b{ + border-color: transparent transparent #999 transparent !important; + border-width: 0 6px 6px 6px !important; + } + } + } +} + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: @custom; +} +.select2-results__option { + padding: 6px 12px; +} + +.select2-dropdown { + border: 1px solid #e3e3e3 !important; + padding-top: 5px; + .box-shadow( 0 2px 2px rgba(0, 0, 0, .15)); +} +.select2-search { + input{ + border: 1px solid #e3e3e3 !important; + } +} + +.select2-container .select2-selection--multiple { + min-height: 38px !important; + border: 1px solid #e3e3e3 !important; + + .select2-selection__rendered { + padding: 2px 10px; + } + .select2-search__field { + margin-top: 7px; + border: 0 !important; + } + .select2-selection__choice { + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 1px; + padding: 0 7px; + } +} + + +/* AUTOCOMPLETE */ +.autocomplete-suggestions { + border: 1px solid #f9f9f9; + background: @white; + cursor: default; + overflow: auto; + -webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); +} + +.autocomplete-suggestion { + padding: 2px 5px; + white-space: nowrap; + overflow: hidden; +} + +.autocomplete-no-suggestion { + padding: 2px 5px; +} + +.autocomplete-selected { + background: fade(@muted,30%); + cursor: pointer; +} + +.autocomplete-suggestions strong { + font-weight: bold; + color: @dark; +} + +.autocomplete-group { + padding: 2px 5px; +} + +.autocomplete-group strong { + font-weight: bold; + font-size: 16px; + color: @dark; + display: block; +} + +/* Bootstrap-select */ +.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) { + width: 100% !important; +} +.bootstrap-select { + .dropdown-toggle { + &:focus { + outline: none !important; + } + } + .glyphicon { + padding-right: 6px; + } +} + +/* Bootstrap filestyle */ +.icon-span-filestyle { + padding-right: 5px; +} + + +/* Bootstrap-touchSpin */ +.bootstrap-touchspin { + .input-group-btn-vertical { + .btn { + padding: 9px 12px; + } + i { + top: 4px; + left: 8px; + } + } +} + + + +/* Form validation */ +.parsley-error { + border-color: @danger !important; +} +.parsley-errors-list { + display: none; + margin: 0; + padding: 0; +} +.parsley-errors-list.filled { + display: block; +} +.parsley-errors-list > li { + font-size: 12px; + list-style: none; + color: @danger; + margin-top: 5px; +} + + + +// Timepicker +.bootstrap-timepicker-widget table td input { + border: 1px solid fade(@dark,30%); + width: 35px; +} + + +// Datepicker +.datepicker-dropdown { + padding: 10px !important; +} + +.datepicker td, .datepicker th { + width: 30px; + height: 30px; +} + +.datepicker table tr td.active:hover, .datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:active, .datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, .datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], .datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +.datepicker table tr td.selected, .datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, .datepicker table tr td.selected.disabled:hover{ + background-color: @custom !important; + color: @white !important; + background-image: none !important; + text-shadow: none !important; +} + +.datepicker table tr td.today, .datepicker table tr td.today:hover, .datepicker table tr td.today.disabled, .datepicker table tr td.today.disabled:hover { + background-color: @success !important; + color: @white !important; + background-image: none !important; +} + +.datepicker-inline { + border: 2px solid fade(@dark,10%); +} + +//Daterange Picker + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: @custom; +} +.daterangepicker .input-mini.active { + border: 1px solid fade(@dark,30%); +} +.daterangepicker .ranges li { + border-radius: 2px; + color: @dark; + font-weight: 600; + font-size: 12px; + font-family: @font-secondary; +} +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, +.daterangepicker select.secondselect, .daterangepicker select.ampmselect{ + border: 1px solid fade(@dark,30%); + padding: 2px; + width: 60px; +} +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background-color: @custom; + border: 1px solid @custom; + color: @white; +} + + + + + +/* Wizard */ +.wizard > .content { + background: @white; + min-height: 240px; + padding: 20px !important; + border: 1px solid @light3; + margin-top: 10px !important; +} + +.wizard > .content > .body { + padding: 0px; + position: relative; + width: 100%; + + input { + border: 1px solid darken(@light3,4%); + } + + ul > li { + display: block; + line-height: 30px; + } + label.error { + color: @danger; + margin-left: 0; + margin-top: 5px; + font-size: 12px; + } + label { + display: inline-block; + margin-top: 10px; + } +} + +.wizard > .steps { + + a{ + font-size: 16px; + text-align: center; + font-family: @font-secondary; + } + + .number { + font-size: 86px; + line-height: 86px; + font-family: @font-secondary; + position: absolute; + left: 10px; + top: -14px; + opacity: 0.1; + } + + .disabled { + a { + background: @light3; + color: lighten(@dark,5%) !important; + cursor: default; + border: 1px solid darken(@light3,5%); + &:hover { + background: darken(@light3,5%); + border: 1px solid darken(@light3,10%); + } + &:active { + background: darken(@light3,5%); + border: 1px solid darken(@light3,10%); + } + } + } + .current { + a { + background: @custom; + &:hover { + background: @custom; + .number { + color: @white; + opacity: 0.4; + } + } + &:active { + background: @custom; + .number { + color: @white; + opacity: 0.4; + } + } + .number { + color: @white; + opacity: 0.4; + } + } + } + .done { + a { + background: @light3 !important; + color: lighten(@dark,5%) !important; + } + } +} + +.wizard > .steps a, .wizard > .steps a:hover, .wizard > .steps a:active, .wizard > .content { + border-radius: 2px; + position: relative; +} + +.wizard > .actions { + margin-top: 15px !important; + + a { + background: @custom; + border-radius: 2px !important; + color: @white; + + &:hover { + background: darken(@custom,15%); + color: @white; + } + &:active { + background: darken(@custom,15%); + color: @white; + } + } + .disabled { + a { + background: @white; + color: @dark; + cursor: default; + border: 1px solid #eaeaea; + &:hover { + background: @light3; + color: @dark; + cursor: default; + border: 1px solid #eaeaea; + } + &:active { + background: @light3; + color: @dark; + cursor: default; + border: 1px solid #eaeaea; + } + } + } +} + +.wizard.vertical > .content { + margin-top: 0px !important; +} + +@media (max-width: 560px) { + .wizard.vertical > .steps,.wizard.vertical > .content { + width: 100%; + } +} + + +/* Summernote */ +.note-editor { + position: relative; + + .btn-default { + background-color: transparent; + border-color: transparent !important; + } + .btn-group-sm > .btn, .btn-sm { + padding: 8px 12px !important; + } + .note-toolbar { + background-color: @light3; + border-bottom: 1px solid @light; + margin: 0; + } + .note-statusbar { + background-color: @white; + .note-resizebar { + border-top: none; + height: 15px; + padding-top: 3px; + } + } +} +.note-editor.note-frame { + border: 1px solid @light !important; +} + +.note-popover { + .popover { + .popover-content { + padding: 5px 0 10px 5px; + } + } + + .btn-default { + background-color: transparent; + border-color: transparent !important; + } + .btn-group-sm > .btn, .btn-sm { + padding: 8px 12px !important; + } +} + +.note-toolbar { + padding: 5px 0 10px 5px; +} + + + +/* Wysiwig css */ + +.mce-panel { + border: 1px solid @light3 !important; + background-color: @light3 !important; +} +.mce-menu { + background-color: @white !important; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); +} +.mce-menubar .mce-menubtn:hover, .mce-menubar .mce-menubtn.mce-active, .mce-menubar .mce-menubtn:focus { + border-color: @light3 !important; +} +.mce-menu-item:hover, .mce-menu-item.mce-selected, .mce-menu-item:focus,.mce-menu-item-normal.mce-active, +.mce-primary{ + background-color: @custom !important; +} +.mce-window-head .mce-title { + font-family: @font-secondary; +} +.mce-window { + padding: 20px !important; +} +.mce-window-head { + padding-bottom: 20px !important; + border-bottom: 0 !important; +} + + +/* == Form Uploads == */ + +.jFiler-input-dragDrop { + width: 100%; + background-color: #fafafa; +} + +.jFiler-theme-default .jFiler-input { + width: 100%; +} +.jFiler-theme-default .jFiler-input-button { + background-color: @custom; + background-image: none !important; + color: @white; + border: 1px solid @custom !important; +} + + + + + +/* ============= + Tables +============= */ +th { + font-family: @font-secondary; + font-weight: 600; +} +.table-centered { + td { + vertical-align: middle !important; + } +} + +/* Data table */ + +table.dataTable { + margin-top: 10px !important; + margin-bottom: 18px !important; +} +.table-bordered.dataTable>thead>tr>td, .table-bordered.dataTable>thead>tr>th { + border-bottom-width: 1px !important; +} + +/* Fixed Header table */ +.fixedHeader-floating { + top: 70px !important; +} +/* Key Table border */ +table.dataTable th.focus, table.dataTable td.focus { + outline: 2px solid @custom !important; + outline-offset: -1px; + background-color: @custom; + color: @white; +} + +/* Responsive data table */ +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { + box-shadow: 0 0 3px rgba(67, 89, 102, 0.2); + background-color: @success; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { + background-color: @danger; +} +table.dataTable>tbody>tr.child span.dtr-title { + font-family: @font-secondary; +} + +/* ColVid Tables */ +div.ColVis { + float: none; + margin-right: 30px; +} +button.ColVis_Button, +.ColVis_Button:hover { + float: none; + border-radius: 3px; + outline: none !important; + background: none; + box-shadow: none; + color: @white !important; + background-color: @custom !important; + border: 1px solid @custom !important; +} +.dataTables_length { + float: left; +} +div.ColVis_collectionBackground { + background-color: transparent; +} +ul.ColVis_collection { + padding: 10px 0 0 0; + background-color: @white; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + border: none; +} +ul.ColVis_collection li { + background: transparent !important; + padding: 3px 10px !important; + border: none !important; + box-shadow: none !important; +} +#datatable-colvid_info { + float: left; +} + +/* Responsive Table */ +.table-rep-plugin { + .dropdown-menu li.checkbox-row { + padding: 2px 15px !important; + } + + .table-responsive { + border: none !important; + } + tbody { + th { + font-size: 14px; + font-weight: normal; + } + } + .checkbox-row { + padding-left: 40px; + + label { + display: inline-block; + padding-left: 5px; + position: relative; + &::before { + -o-transition: 0.3s ease-in-out; + -webkit-transition: 0.3s ease-in-out; + background-color: @white; + border-radius: 3px; + border: 1px solid @muted; + content: ""; + display: inline-block; + height: 17px; + left: 0; + margin-left: -20px; + position: absolute; + transition: 0.3s ease-in-out; + width: 17px; + outline: none !important; + } + &::after { + color: @light3; + display: inline-block; + font-size: 11px; + height: 16px; + left: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 1px; + position: absolute; + top: -1px; + width: 16px; + } + } + input[type="checkbox"] { + cursor: pointer; + opacity: 0; + z-index: 1; + outline: none !important; + + &:disabled + label { + opacity: 0.65; + } + } + input[type="checkbox"]:focus + label { + &::before { + outline-offset: -2px; + outline: none; + } + } + input[type="checkbox"]:checked + label { + &::after { + content: "\f00c"; + font-family: 'FontAwesome'; + } + } + input[type="checkbox"]:disabled + label { + &::before { + background-color: @light; + cursor: not-allowed; + } + } + input[type="checkbox"]:checked + label { + &::before { + background-color: @white; + border-color: @success; + } + &::after { + color: @success; + } + } + } + table.focus-on tbody tr.focused th, table.focus-on tbody tr.focused td, + .sticky-table-header{ + background-color: @success; + color: @white; + border-color: @success; + } + .sticky-table-header.fixed-solution { + top: 70px !important; + } +} + + + +/* Data table editable */ +.add-edit-table { + td,th { + vertical-align: middle !important; + } + td { + border: 0 !important; + } +} +#datatable-editable .actions a { + padding: 5px; +} +#datatable-editable .form-control { + background-color: #ffffff; + width: 100%; +} +#datatable-editable .fa-trash-o { + color: #f05050; +} +#datatable-editable .fa-times { + color: #f05050; +} +#datatable-editable .fa-pencil { + color: #29b6f6; +} +#datatable-editable .fa-save { + color: #33b86c; +} +#datatable td { + font-weight: normal; +} +.modal-block { + background: transparent; + margin: 40px auto; + max-width: 600px; + padding: 0; + position: relative; + text-align: left; +} + + +.dt-buttons { + float: left; +} +div#datatable-buttons_info { + float: left; +} +table.dataTable thead th { + position: relative; + background-image: none !important; +} +table.dataTable thead th.sorting:after, +table.dataTable thead th.sorting_asc:after, +table.dataTable thead th.sorting_desc:after { + position: absolute; + top: 7px; + right: 8px; + display: block; + font-family: FontAwesome; +} +table.dataTable thead th.sorting:after { + content: "\f0dc"; + padding-top: 0.12em; +} +table.dataTable thead th.sorting_asc:after { + content: "\f0de"; +} +table.dataTable thead th.sorting_desc:after { + content: "\f0dd"; +} +.DTFC_LeftBodyWrapper table thead th.sorting:after, +.dataTables_scrollBody table thead th.sorting:after, +.DTFC_RightBodyLiner table thead th.sorting:after, +.DTFC_LeftBodyWrapper table thead th.sorting_asc:after, +.dataTables_scrollBody table thead th.sorting_asc:after, +.DTFC_RightBodyLiner table thead th.sorting_asc:after, +.DTFC_LeftBodyWrapper table thead th.sorting_desc:after, +.dataTables_scrollBody table thead th.sorting_desc:after, +.DTFC_RightBodyLiner table thead th.sorting_desc:after { + display: none !important; +} + +/* Tablesaw Tables */ +.tablesaw { + thead { + background: fade(@light3,70%); + background-image: none; + border: none; + + th { + text-shadow: none; + letter-spacing: 0.06em; + } + + tr:first-child th { + font-weight: 600; + border: none; + font-family: @font-secondary; + } + } + td { + border-top: 1px solid fade(@light3,70%) !important; + } +} + +.tablesaw td, .tablesaw tbody th { + font-size: inherit; + line-height: inherit; + padding: 10px !important; +} +.tablesaw-stack tbody tr ,.tablesaw tbody tr{ + border-bottom: none; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after, .tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + font-family: FontAwesome; + font-size: 10px; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after { + content: "\f176"; +} +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + content: "\f175"; +} +.tablesaw-bar .btn-select.btn-small:after, .tablesaw-bar .btn-select.btn-micro:after { + font-size: 8px; + padding-right: 10px; +} +.tablesaw-swipe .tablesaw-cell-persist { + box-shadow: none; +} +.tablesaw-enhanced .tablesaw-bar .btn { + text-shadow: none; + background-image: none; +} +.tablesaw-enhanced .tablesaw-bar .btn.btn-select { + &:hover { + background: @white; + } +} +.tablesaw-enhanced .tablesaw-bar .btn:hover, .tablesaw-enhanced .tablesaw-bar .btn:focus,.tablesaw-enhanced .tablesaw-bar .btn:active { + color: @custom !important; + background-color: @light3; + outline: none !important; + box-shadow: none !important; + background-image: none; +} + + +/* Table colored */ +.table-colored { + thead { + th { + color: @white; + } + } +} +.table-colored.table-custom { + thead { + th { + background-color: @custom; + } + } +} +.table-colored.table-primary { + thead { + th { + background-color: @primary; + } + } +} +.table-colored.table-success { + thead { + th { + background-color: @success; + } + } +} + +.table-colored.table-info { + thead { + th { + background-color: @info; + } + } +} + +.table-colored.table-warning { + thead { + th { + background-color: @warning; + } + } +} + +.table-colored.table-danger { + thead { + th { + background-color: @danger; + } + } +} + +.table-colored.table-inverse { + thead { + th { + background-color: @inverse; + } + } +} + +.table-colored.table-pink { + thead { + th { + background-color: @pink; + } + } +} + +.table-colored.table-purple { + thead { + th { + background-color: @purple; + } + } +} + +.table-colored.table-brown { + thead { + th { + background-color: @brown; + } + } +} + +.table-colored.table-orange { + thead { + th { + background-color: @orange; + } + } +} + +.table-colored.table-teal { + thead { + th { + background-color: @teal; + } + } +} + +/* Table colored-bordered */ + +.table-colored-bordered { + thead { + th { + border-bottom: 0 !important; + color: @white; + } + } +} + +.table-colored-bordered.table-bordered-primary { + border: 2px solid @primary; + + thead { + th { + background-color: @primary; + } + } +} + +.table-colored-bordered.table-bordered-success { + border: 2px solid @success; + + thead { + th { + background-color: @success; + } + } +} + +.table-colored-bordered.table-bordered-info { + border: 2px solid @info; + + thead { + th { + background-color: @info; + } + } +} + +.table-colored-bordered.table-bordered-custom { + border: 2px solid @custom; + + thead { + th { + background-color: @custom; + } + } +} + +.table-colored-bordered.table-bordered-warning { + border: 2px solid @warning; + + thead { + th { + background-color: @warning; + } + } +} + +.table-colored-bordered.table-bordered-danger { + border: 2px solid @danger; + + thead { + th { + background-color: @danger; + } + } +} + +.table-colored-bordered.table-bordered-inverse { + border: 2px solid @inverse; + + thead { + th { + background-color: @inverse; + } + } +} + +.table-colored-bordered.table-bordered-pink { + border: 2px solid @pink; + + thead { + th { + background-color: @pink; + } + } +} + +.table-colored-bordered.table-bordered-purple { + border: 2px solid @purple; + + thead { + th { + background-color: @purple; + } + } +} + +.table-colored-bordered.table-bordered-orange { + border: 2px solid @orange; + + thead { + th { + background-color: @orange; + } + } +} + +.table-colored-bordered.table-bordered-brown { + border: 2px solid @brown; + + thead { + th { + background-color: @brown; + } + } +} + +.table-colored-bordered.table-bordered-teal { + border: 2px solid @teal; + + thead { + th { + background-color: @teal; + } + } +} + + +/* Table full colored */ +.table-colored-full { + color: @white; + + thead { + th { + border-bottom: 0 !important; + padding: 10px !important; + } + } + tbody { + td,th { + border: 0 !important; + } + } +} + +.table-colored-full.table-full-primary { + background-color: fade(@primary,80%); + + thead { + th { + background-color: @primary; + } + } + tbody { + tr{ + &:hover { + background-color: @primary; + } + } + } +} + +.table-colored-full.table-full-success { + background-color: fade(@success,80%); + + thead { + th { + background-color: @success; + } + } + tbody { + tr{ + &:hover { + background-color: @success; + } + } + } +} + +.table-colored-full.table-full-info { + background-color: fade(@info,80%); + + thead { + th { + background-color: @info; + } + } + tbody { + tr{ + &:hover { + background-color: @info; + } + } + } +} + +.table-colored-full.table-full-custom { + background-color: fade(@custom,80%); + + thead { + th { + background-color: @custom; + } + } + tbody { + tr{ + &:hover { + background-color: @custom; + } + } + } +} + +.table-colored-full.table-full-warning { + background-color: fade(@warning,80%); + + thead { + th { + background-color: @warning; + } + } + tbody { + tr{ + &:hover { + background-color: @warning; + } + } + } +} + +.table-colored-full.table-full-danger { + background-color: fade(@danger,80%); + + thead { + th { + background-color: @danger; + } + } + tbody { + tr{ + &:hover { + background-color: @danger; + } + } + } +} + +.table-colored-full.table-full-inverse { + background-color: fade(@inverse,80%); + + thead { + th { + background-color: @inverse; + } + } + tbody { + tr{ + &:hover { + background-color: @inverse; + } + } + } +} + + +.table-colored-full.table-full-pink { + background-color: fade(@pink,80%); + + thead { + th { + background-color: @pink; + } + } + tbody { + tr{ + &:hover { + background-color: @pink; + } + } + } +} + +.table-colored-full.table-full-purple { + background-color: fade(@purple,80%); + + thead { + th { + background-color: @purple; + } + } + tbody { + tr{ + &:hover { + background-color: @purple; + } + } + } +} + +.table-colored-full.table-full-brown { + background-color: fade(@brown,80%); + + thead { + th { + background-color: @brown; + } + } + tbody { + tr{ + &:hover { + background-color: @brown; + } + } + } +} + +.table-colored-full.table-full-orange { + background-color: fade(@orange,80%); + + thead { + th { + background-color: @orange; + } + } + tbody { + tr{ + &:hover { + background-color: @orange; + } + } + } +} + + +.table-colored-full.table-full-teal { + background-color: fade(@teal,80%); + + thead { + th { + background-color: @teal; + } + } + tbody { + tr{ + &:hover { + background-color: @teal; + } + } + } +} + + +/* ===================================== + CHARTS + ===================================== */ +// Chart List +.chart-detail-list { + li { + margin: 0 10px; + } +} + +/* Flot chart */ +#flotTip { + padding: 8px 12px; + background-color: @dark !important; + z-index: 100; + color: @white; + opacity: 0.9; + font-size: 13px; + -webkit-border-radius: 3px !important; + -moz-border-radius: 3px !important;; + border-radius: 3px !important;; +} +.legend tr { + height: 20px; + font-family: @font-secondary; +} +.legendLabel { + padding-left: 5px !important; + line-height: 10px; + padding-right: 10px; +} + +/* Morris chart */ +.morris-hover.morris-default-style { + border-radius: 5px; + padding: 10px 12px; +} + +/* Chartist chart */ +.ct-golden-section:before { + float: none; +} +.ct-chart { + + max-height: 300px; + + .ct-label { + fill: #a3afb7; + color: #a3afb7; + font-size: 12px; + line-height: 1; + } +} +.ct-grid { + stroke: fade(@dark,10%); +} +.ct-chart.simple-pie-chart-chartist { + .ct-label { + color: @white; + fill: @white; + font-size: 16px; + } +} +.ct-chart .ct-series.ct-series-a .ct-bar, .ct-chart .ct-series.ct-series-a .ct-line, .ct-chart .ct-series.ct-series-a .ct-point, .ct-chart .ct-series.ct-series-a .ct-slice-donut { + stroke: @info; +} +.ct-chart .ct-series.ct-series-b .ct-bar, .ct-chart .ct-series.ct-series-b .ct-line, .ct-chart .ct-series.ct-series-b .ct-point, .ct-chart .ct-series.ct-series-b .ct-slice-donut { + stroke: @danger; +} +.ct-chart .ct-series.ct-series-c .ct-bar, .ct-chart .ct-series.ct-series-c .ct-line, .ct-chart .ct-series.ct-series-c .ct-point, .ct-chart .ct-series.ct-series-c .ct-slice-donut { + stroke: @success; +} +.ct-chart .ct-series.ct-series-d .ct-bar, .ct-chart .ct-series.ct-series-d .ct-line, .ct-chart .ct-series.ct-series-d .ct-point, .ct-chart .ct-series.ct-series-d .ct-slice-donut { + stroke: @orange; +} +.ct-chart .ct-series.ct-series-e .ct-bar, .ct-chart .ct-series.ct-series-e .ct-line, .ct-chart .ct-series.ct-series-e .ct-point, .ct-chart .ct-series.ct-series-e .ct-slice-donut { + stroke: @dark; +} +.ct-chart .ct-series.ct-series-f .ct-bar, .ct-chart .ct-series.ct-series-f .ct-line, .ct-chart .ct-series.ct-series-f .ct-point, .ct-chart .ct-series.ct-series-f .ct-slice-donut { + stroke: @primary; +} +.ct-chart .ct-series.ct-series-g .ct-bar, .ct-chart .ct-series.ct-series-g .ct-line, .ct-chart .ct-series.ct-series-g .ct-point, .ct-chart .ct-series.ct-series-g .ct-slice-donut { + stroke: @brown; +} +.ct-series-a .ct-area, .ct-series-a .ct-slice-pie { + fill: @info; +} +.ct-series-b .ct-area, .ct-series-b .ct-slice-pie { + fill: @danger; +} +.ct-series-c .ct-area, .ct-series-c .ct-slice-pie { + fill: @success; +} +.ct-series-d .ct-area, .ct-series-d .ct-slice-pie { + fill: @orange; +} +.chartist-tooltip { + position: absolute; + display: inline-block; + opacity: 0; + min-width: 10px; + padding: 2px 10px; + border-radius: 3px; + background: @dark; + color: @white; + text-align: center; + pointer-events: none; + z-index: 1; + -webkit-transition: opacity .2s linear; + -moz-transition: opacity .2s linear; + -o-transition: opacity .2s linear; + transition: opacity .2s linear; +} + +.chartist-tooltip.tooltip-show { + opacity: 1; +} + + +/* C3 chart */ +.c3 svg { + max-width: 100%; +} +.c3-tooltip td>span { + background: @dark; +} +.c3-tooltip td { + border-left: none; +} +.c3-tooltip { + box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12); + opacity: 1; +} +.c3-chart-arcs-title { + font-size: 18px; + font-weight: 600; + font-family: @font-secondary; +} +.c3-tooltip tr { + border: none !important; +} +.c3-tooltip th { + background-color: @dark; +} + +.c3-tooltip { + .value { + font-weight: 600; + font-family: @font-secondary; + } +} + +/* Sparkline chart */ +.jqstooltip { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: auto !important; + height: auto !important; + background-color: @dark !important; + padding: 5px 10px !important; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + border-color: @dark !important; +} +.jqsfield { + font-size: 12px !important; + line-height: 18px !important; +} + + + +/* Google Chart*/ +.google-chart { + .chart { + display: inline-block; + } +} \ No newline at end of file diff --git a/assets/less/core.less b/assets/less/core.less new file mode 100644 index 0000000..04fc6c2 --- /dev/null +++ b/assets/less/core.less @@ -0,0 +1,1071 @@ +@import url(https://fonts.googleapis.com/css?family=Varela+Round); +@import 'https://fonts.googleapis.com/css?family=Hind+Madurai:600,700'; + + + +@import "variables.less"; +@import "elements.less"; + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Core +*/ + +/* ============= + == Core List== + + - Common + - Helper classes + - Extra + - Bootstrap Custom + - Waves effect + - Print (Invoice css) + - Demo Css (Demo purpose only) + +============= */ + +/* ============= + Common +============= */ + +body { + font-family: @font-primary; + margin: 0; + padding-bottom: 60px; + overflow-x: hidden; + color: #797979; +} +html { + position: relative; + min-height: 100%; +} +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6{ + color: #505458; + font-family: @font-secondary; + margin: 10px 0; +} + +h5 { + font-size: 15px; +} + +p { + line-height: 1.6; +} + +* { + outline: none !important; +} + +b, strong { + font-weight: 600; + font-family: @font-secondary; +} + +a { + &:hover { + outline: 0; + text-decoration: none; + } + &:active { + outline: 0; + text-decoration: none; + } + &:focus { + outline: 0; + text-decoration: none; + } +} + +.container { + width: auto; +} + +.container-alt { + margin-left: auto; + margin-right: auto; + padding-left: 15px; + padding-right: 15px; +} + +/* Footer */ +.footer { + border-top: 1px solid fade(@muted,20%); + bottom: 0; + text-align:left !important; + padding: 19px 30px 20px; + position: absolute; + right: 0; + left: 225px; +} + +#wrapper { + height: @height; + overflow: hidden; + width: @width; +} + + + + + +/* ============= + Helper classes +============= */ + +.p-0 { + padding: 0 !important; +} +.p-20 { + padding: 20px !important; +} +.p-30 { + padding: 30px !important; +} +.p-l-0 { + padding-left: 0 !important; +} +.p-r-0 { + padding-right: 0 !important; +} +.p-t-0 { + padding-top: 0 !important; +} +.p-b-0 { + padding-bottom: 0 !important; +} +.p-t-10 { + padding-top: 10px !important; +} +.p-b-10 { + padding-bottom: 10px !important; +} +.p-l-r-10 { + padding-left: 10px; + padding-right: 10px; +} +.m-0 { + margin: 0 !important; +} +.m-r-5 { + margin-right: 5px !important; +} +.m-r-10 { + margin-right: 10px !important; +} +.m-r-15 { + margin-right: 15px !important; +} +.m-l-5 { + margin-left: 5px !important; +} +.m-l-10 { + margin-left: 10px !important; +} +.m-l-15 { + margin-left: 15px !important; +} +.m-t-5 { + margin-top: 5px !important; +} +.m-t-0 { + margin-top: 0 !important; +} +.m-t-10 { + margin-top: 10px !important; +} +.m-t-15 { + margin-top: 15px !important; +} +.m-t-20 { + margin-top: 20px !important; +} +.m-t-30 { + margin-top: 30px !important; +} +.m-t-40 { + margin-top: 40px !important; +} +.m-t-50 { + margin-top: 50px !important; +} +.m-b-0 { + margin-bottom: 0 !important; +} +.m-b-5 { + margin-bottom: 5px !important; +} +.m-b-10 { + margin-bottom: 10px !important; +} +.m-b-15 { + margin-bottom: 15px !important; +} +.m-b-20 { + margin-bottom: 20px !important; +} +.m-b-25 { + margin-bottom: 25px !important; +} +.m-b-30 { + margin-bottom: 30px !important; +} +.w-xs { + min-width: 80px; +} +.w-sm { + min-width: 95px; +} +.w-md { + min-width: 110px; +} +.w-lg { + min-width: 140px; +} + +.center-page { + float: none !important; + margin: 0 auto !important; +} + +.text-overflow { + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; +} +.font-secondary { + font-family: @font-secondary; +} +.font-600 { + font-weight: 600; +} +.font-normal { + font-weight: normal; +} +.font-light { + font-weight: 300; +} +.font-13 { + font-size: 13px !important; +} +.wrapper-md { + padding: 20px; +} +.pull-in { + margin-left: -20px; + margin-right: -20px; +} +.b-0 { + border: none !important; +} +.vertical-middle { + vertical-align: middle; +} +.bx-shadow { + -moz-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1); + -webkit-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1); + box-shadow: 0 1px 2px 0 rgba(0,0,0,0.1); +} +.bx-shadow-none { + box-shadow: none !important; +} +.mx-box { + max-height: 380px; + min-height: 380px; +} +.thumb-sm { + height: 32px; + width: 32px; +} +.thumb-md { + height: 48px; + width: 48px; +} +.thumb-lg { + height: 88px; + width: 88px; +} +.thumb-xl { + height: 120px; + width: 120px; +} +.bg-transparent { + background-color: transparent !important; +} + +// Slimscroll +.slimScrollDiv { + height: auto !important; +} + +/* ============= + Extras +============= */ +/* Table type box */ + +.table-box { + display: table; + height: 100%; + width: 100%; + + .table-detail { + display: table-cell; + vertical-align: middle; + } +} +/* Card Box */ +.card-box{ + padding: 20px; + border: 2px solid @light3; + .border-radius(5px); + margin-bottom: 20px; + background-color: @white; +} + + +/* Search box */ +.search-box{ + position: relative; + + .btn-search { + position: absolute; + top: 3px; + right: 3px; + background-color: transparent !important; + border: none !important; + font-size: 16px; + box-shadow: none !important; + outline: none !important; + color: @muted; + } + .form-control { + border: 2px solid fade(@muted,50%); + height: 38px; + border-radius: 30px; + padding: 8px 45px 8px 20px; + + &:focus { + border-width: 2px !important; + } + } + +} + + +/* ============= + Bootstrap-custom +============= */ + +.row { + margin-right: -10px; + margin-left: -10px; +} + +.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, +.col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, +.col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, +.col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, +.col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, +.col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, +.col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 { + padding-left: 10px; + padding-right: 10px; +} + + +.breadcrumb { + background-color: transparent; + margin-bottom: 15px; + padding-top: 10px; + padding-left: 0; +} + + +/* Dropdown */ +.dropdown-menu { + padding: 4px 0; + transition: all 300ms ease; + -moz-transition: all 300ms ease; + -webkit-transition: all 300ms ease; + -o-transition: all 300ms ease; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + border: 1px solid fade(@muted,15%); + & > li { + padding: 0 4px !important; + & > a { + padding: 6px 20px; + } + } +} +.dropdown-menu>li>a:focus, .dropdown-menu>li>a:hover { + background-color: @light3 !important; +} +.dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { + background-color: fade(@muted,10%); + color: @dark; +} + +.dropdown-lg { + width: 260px; +} + + +//Arrow dropdown +.arrow-dropdown-menu { + &:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid fade(@muted,15%); + border-left: 7px solid transparent; + content: ''; + } + &:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid @white; + border-left: 6px solid transparent; + content: ''; + } +} + +.arrow-dropdown-menu.arrow-menu-right { + &:before { + left: auto; + right: 11px; + } + &:after { + left: auto; + right: 12px; + } +} + + +/* Background colors */ +.bg-custom { + background-color: @custom !important; +} + +.bg-primary { + background-color: @primary !important; +} + +.bg-success { + background-color: @success !important; +} + +.bg-info { + background-color: @info !important; +} + +.bg-warning { + background-color: @warning !important; +} + +.bg-danger { + background-color: @danger !important; +} + +.bg-muted { + background-color: @light7 !important; +} + +.bg-inverse { + background-color: @inverse !important; +} + +.bg-purple { + background-color: @purple !important; +} + +.bg-pink { + background-color: @pink !important; +} + +.bg-orange { + background-color: @orange !important; +} + +.bg-brown { + background-color: @brown !important; +} + +.bg-teal { + background-color: @teal !important; +} + +.bg-white { + background-color: @white !important; +} + +.bg-dark { + background-color: @dark !important; +} + + +/* Text colors */ +.text-custom { + color: @custom !important; +} + +.text-white { + color: @white !important; +} + +.text-danger { + color: @danger !important; +} + +.text-muted { + color: @muted !important; +} + +.text-primary { + color: @primary !important; +} + +.text-warning { + color: @warning !important; +} + +.text-success { + color: @success !important; +} + +.text-info { + color: @info !important; +} + +.text-inverse { + color: @inverse !important; +} + +.text-pink { + color: @pink !important; +} + +.text-purple { + color: @purple !important; +} + +.text-orange { + color: @orange !important; +} + +.text-brown { + color: @brown !important; +} + +.text-teal { + color: @teal !important; +} + +.text-dark { + color: @dark !important; +} + + + +/* Labels */ +.label { + font-weight: 600; + letter-spacing: 0.05em; + padding: .3em .6em .2em; + font-family: @font-secondary; +} + +.label-white { + background-color: fade(@white,70%); + color: @dark !important; +} + +.label-default { + background-color: @custom; +} + +.label-primary { + background-color: @primary; +} + +.label-success { + background-color: @success; +} + +.label-info { + background-color: @info; +} + +.label-warning { + background-color: @warning; +} + +.label-danger { + background-color: @danger; +} + +.label-purple { + background-color: @purple; +} + +.label-pink { + background-color: @pink; +} + +.label-orange { + background-color: @orange; +} + +.label-brown { + background-color: @brown; +} + +.label-teal { + background-color: @teal; +} + +.label-inverse { + background-color: @inverse; +} + +/* Badge */ +.badge { + text-transform: uppercase; + padding: 3px 5px; + font-size: 11px; + margin-top: 1px; + background-color: @custom; +} + +.badge-xs { + font-size: 9px; +} + +.badge-xs, .badge-sm { + -webkit-transform: translate(0, -2px); + -ms-transform: translate(0, -2px); + -o-transform: translate(0, -2px); + transform: translate(0, -2px); +} + +.badge-white { + background-color: fade(@white,70%); + color: @dark !important; +} + +.badge-primary { + background-color: @primary; +} + +.badge-success { + background-color: @success; +} + +.badge-info { + background-color: @info; +} + +.badge-warning { + background-color: @warning; +} + +.badge-danger { + background-color: @danger; +} + +.badge-purple { + background-color: @purple; +} + +.badge-pink { + background-color: @pink; +} + +.badge-orange { + background-color: @orange; +} + +.badge-brown { + background-color: @brown; +} + +.badge-teal { + background-color: @teal; +} + +.badge-inverse { + background-color: @inverse; +} + +/* Pagination/ Pager */ + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +.pagination > li > a, +.pagination > li > span { + color: #636e7b; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #e4e7ea; +} + +.pagination-split li { + margin-left: 5px; + display: inline-block; + float: left; +} + +.pagination-split li:first-child { + margin-left: 0; +} + +.pagination-split li a { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + background-color: @custom; + border-color: @custom; +} + +.pager li > a, .pager li > span { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #636e7b; +} + + +.list-group-item.active, .list-group-item.active:focus, +.list-group-item.active:hover { + background-color: @custom; + border-color: @custom; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:focus .list-group-item-text, +.list-group-item.active:hover .list-group-item-text { + color: fade(@white,70%); +} + + + + + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; +} +.waves-effect { + .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; + } +} + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; +} +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; + .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; + } +} +.waves-block { + display: block; +} + +.waves-effect.waves-light { + .waves-ripple { + background-color: fade(@white, 40%); + } +} +.waves-effect.waves-custom { + .waves-ripple { + background-color: fade(@custom, 40%); + } +} +.waves-effect.waves-primary { + .waves-ripple { + background-color: fade(@primary, 40%); + } +} +.waves-effect.waves-success { + .waves-ripple { + background-color: fade(@success, 40%); + } +} +.waves-effect.waves-info { + .waves-ripple { + background-color: fade(@info, 40%); + } +} +.waves-effect.waves-warning { + .waves-ripple { + background-color: fade(@warning, 40%); + } +} +.waves-effect.waves-danger { + .waves-ripple { + background-color: fade(@danger, 40%); + } +} +.waves-effect.waves-pink { + .waves-ripple { + background-color: fade(@pink, 40%); + } +} +.waves-effect.purple { + .waves-ripple { + background-color: fade(@purple, 20%); + } +} +.waves-effect.waves-inverse { + .waves-ripple { + background-color: fade(@inverse, 40%); + } +} + +/* ============= + Print css +============= */ + +@media print { + .page-title-box,.topbar-left,.hidden-print,.breadcrumb,.page-title,.footer { + display: none; + margin: 0; + padding: 0; + } + + .left,.right-bar { + display: none; + } + .content { + margin-top: 0 !important; + padding-top: 0; + } + .content-page { + margin-left: 0; + margin-top: 0; + } + +} + + +/* ============= + Demo Css +============= */ + +.demo-box { + padding: 10px 15px; +} + +/* Button demo */ + +.button-list { + margin-left: -8px; + margin-bottom: -12px; + .btn { + margin-bottom: 12px; + margin-left: 8px; + } +} + +/* Popover */ + +.demo-popover { + .popover { + position: relative; + display: block; + float: left; + width: 260px; + margin: 20px; + z-index: 9; + } +} + +/* Tooltips */ + +.demo-tooltip { + .tooltip { + position: relative; + display: inline-block; + margin: 10px 20px; + opacity: 1; + } +} + +/* Grid page */ + +.grid-structure .grid-container { + background-color: fade(@light3,50%); + margin-bottom: 10px; + padding: 10px 20px; +} + +/* Demo Animation */ +.demo-animation { + text-align: center; + img { + position: relative; + width: 120px; + display: block; + margin: 0 auto 40px auto; + z-index: 1; + border-radius: 2px; + } +} + +/* Demo only */ +.icon-list-demo { + + div { + cursor: pointer; + line-height: 45px; + white-space: nowrap; + text-overflow: ellipsis; + display: block; + overflow: hidden; + + p { + margin-bottom: 0; + line-height: inherit; + } + } + + i { + text-align: center; + vertical-align: middle; + font-size: 24px; + border: 1px solid @light3; + width: 50px; + height: 50px; + line-height: 50px; + margin-right: 12px; + color: rgba(43, 61, 81, 0.7); + border-radius: 3px; + display: inline-block; + transition: all 0.2s; + } + + .col-md-4 { + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; + margin-bottom: 10px; + + &:hover i { + color: @success; + } + } +} + +/* Switchery demo */ +.switchery-demo .switchery { + margin-bottom: 10px; + margin-right: 5px; +} + + +/* Icon colored demo */ +.icon-colored { + height: 48px; + width: 48px; + margin: 2rem; +} \ No newline at end of file diff --git a/assets/less/elements.less b/assets/less/elements.less new file mode 100644 index 0000000..6b89406 --- /dev/null +++ b/assets/less/elements.less @@ -0,0 +1,483 @@ +//--------------------------------------------------- +// LESS Prefixer - https://github.com/JoelSutherland/LESS-Prefixer +//--------------------------------------------------- +// +// All of the CSS3 fun, none of the prefixes! +// +// As a rule, you can use the CSS properties you +// would expect just by adding a '.': +// +// box-shadow => .box-shadow(@args) +// +// Also, when shorthand is available, arguments are +// not parameterized. Learn CSS, not LESS Prefixer. +// +// ------------------------------------------------- +// TABLE OF CONTENTS +// (*) denotes a syntax-sugar helper +// ------------------------------------------------- +// +// .animation(@args) +// .animation-delay(@delay) +// .animation-direction(@direction) +// .animation-duration(@duration) +// .animation-fill-mode(@mode) +// .animation-iteration-count(@count) +// .animation-name(@name) +// .animation-play-state(@state) +// .animation-timing-function(@function) +// .background-size(@args) +// .border-radius(@args) +// .box-shadow(@args) +// .inner-shadow(@args) * +// .box-sizing(@args) +// .border-box() * +// .content-box() * +// .columns(@args) +// .column-count(@count) +// .column-gap(@gap) +// .column-rule(@args) +// .column-width(@width) +// .gradient(@default,@start,@stop) * +// .linear-gradient-top(@default,@color1,@stop1,@color2,@stop2,[@color3,@stop3,@color4,@stop4])* +// .linear-gradient-left(@default,@color1,@stop1,@color2,@stop2,[@color3,@stop3,@color4,@stop4])* +// .opacity(@factor) +// .transform(@args) +// .transform-origin(@args) +// .transform-style(@style) +// .rotate(@deg) +// .scale(@factor) +// .translate(@x,@y) +// .translate3d(@x,@y,@z) +// .translateHardware(@x,@y) * +// .text-shadow(@args) +// .transition(@args) +// .transition-delay(@delay) +// .transition-duration(@duration) +// .transition-property(@property) +// .transition-timing-function(@function) +// Flexbox: +// .flex-block() +// .flex-inline() +// .flex-flow(@direction: row, @wrap: nowrap) +// .flex-direction(@direction: row) +// .flex-wrap(@wrap: nowrap) +// .justify-content(@justification) +// .align-items(@mode) +// .align-content(@alignment) +// .flex(@args: none) +// .flex-grow(@grow: 1) +// .flex-shrink(@shrink: 1) +// .flex-basis(@basis: auto) +// .order(@num: 0) +// .align-self(@align: auto) +// +// Credit to LESS Elements for the motivation and +// to CSS3Please.com for implementation. +// +// Copyright (c) 2012 Joel Sutherland +// MIT Licensed: +// http://www.opensource.org/licenses/mit-license.php +// +//--------------------------------------------------- + + +// Animation + +.animation(@args) { + -webkit-animation: @args; + -moz-animation: @args; + -ms-animation: @args; + -o-animation: @args; + animation: @args; +} +.animation-delay(@delay) { + -webkit-animation-delay: @delay; + -moz-animation-delay: @delay; + -ms-animation-delay: @delay; + -o-animation-delay: @delay; + animation-delay: @delay; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + -moz-animation-direction: @direction; + -ms-animation-direction: @direction; + -o-animation-direction: @direction; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + -moz-animation-duration: @duration; + -ms-animation-duration: @duration; + -o-animation-duration: @duration; +} +.animation-fill-mode(@mode) { + -webkit-animation-fill-mode: @mode; + -moz-animation-fill-mode: @mode; + -ms-animation-fill-mode: @mode; + -o-animation-fill-mode: @mode; + animation-fill-mode: @mode; +} +.animation-iteration-count(@count) { + -webkit-animation-iteration-count: @count; + -moz-animation-iteration-count: @count; + -ms-animation-iteration-count: @count; + -o-animation-iteration-count: @count; + animation-iteration-count: @count; +} +.animation-name(@name) { + -webkit-animation-name: @name; + -moz-animation-name: @name; + -ms-animation-name: @name; + -o-animation-name: @name; + animation-name: @name; +} +.animation-play-state(@state) { + -webkit-animation-play-state: @state; + -moz-animation-play-state: @state; + -ms-animation-play-state: @state; + -o-animation-play-state: @state; + animation-play-state: @state; +} +.animation-timing-function(@function) { + -webkit-animation-timing-function: @function; + -moz-animation-timing-function: @function; + -ms-animation-timing-function: @function; + -o-animation-timing-function: @function; + animation-timing-function: @function; +} + + +// Background Size + +.background-size(@args) { + -webkit-background-size: @args; + background-size: @args; + -moz-background-size: @args; + -o-background-size: @args; +} + + +// Border Radius + +.border-radius(@args) { + -webkit-border-radius: @args; + border-radius: @args; + -moz-border-radius: @args; + + background-clip: padding-box; +} + + +// Box Shadows + +.box-shadow(@args) { + -webkit-box-shadow: @args; + box-shadow: @args; + -moz-box-shadow: @args; +} +.inner-shadow(@args) { + .box-shadow(inset @args); +} + + +// Box Sizing + +.box-sizing(@args) { + -webkit-box-sizing: @args; + -moz-box-sizing: @args; + box-sizing: @args; +} +.border-box(){ + .box-sizing(border-box); +} +.content-box(){ + .box-sizing(content-box); +} + + +// Columns + +.columns(@args) { + -webkit-columns: @args; + -moz-columns: @args; + columns: @args; +} +.column-count(@count) { + -webkit-column-count: @count; + -moz-column-count: @count; + column-count: @count; +} +.column-gap(@gap) { + -webkit-column-gap: @gap; + -moz-column-gap: @gap; + column-gap: @gap; +} +.column-width(@width) { + -webkit-column-width: @width; + -moz-column-width: @width; + column-width: @width; +} +.column-rule(@args) { + -webkit-column-rule: @args; + -moz-column-rule: @args; + column-rule: @args; +} + + +// Gradients + +.gradient(@default: #F5F5F5, @start: #EEE, @stop: #FFF) { + .linear-gradient-top(@default,@start,0%,@stop,100%); +} +.linear-gradient-top(@default,@color1,@stop1,@color2,@stop2) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(@stop1, @color1), color-stop(@stop2 @color2)); + background-image: -webkit-linear-gradient(top, @color1 @stop1, @color2 @stop2); + background-image: -moz-linear-gradient(top, @color1 @stop1, @color2 @stop2); + background-image: -ms-linear-gradient(top, @color1 @stop1, @color2 @stop2); + background-image: -o-linear-gradient(top, @color1 @stop1, @color2 @stop2); + background-image: linear-gradient(top, @color1 @stop1, @color2 @stop2); +} +.linear-gradient-top(@default,@color1,@stop1,@color2,@stop2,@color3,@stop3) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(@stop1, @color1), color-stop(@stop2 @color2), color-stop(@stop3 @color3)); + background-image: -webkit-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -moz-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -ms-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -o-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3); +} +.linear-gradient-top(@default,@color1,@stop1,@color2,@stop2,@color3,@stop3,@color4,@stop4) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(@stop1, @color1), color-stop(@stop2 @color2), color-stop(@stop3 @color3), color-stop(@stop4 @color4)); + background-image: -webkit-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -moz-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -ms-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -o-linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: linear-gradient(top, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); +} +.linear-gradient-left(@default,@color1,@stop1,@color2,@stop2) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left top, color-stop(@stop1, @color1), color-stop(@stop2 @color2)); + background-image: -webkit-linear-gradient(left, @color1 @stop1, @color2 @stop2); + background-image: -moz-linear-gradient(left, @color1 @stop1, @color2 @stop2); + background-image: -ms-linear-gradient(left, @color1 @stop1, @color2 @stop2); + background-image: -o-linear-gradient(left, @color1 @stop1, @color2 @stop2); + background-image: linear-gradient(left, @color1 @stop1, @color2 @stop2); +} +.linear-gradient-left(@default,@color1,@stop1,@color2,@stop2,@color3,@stop3) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left top, color-stop(@stop1, @color1), color-stop(@stop2 @color2), color-stop(@stop3 @color3)); + background-image: -webkit-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -moz-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -ms-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: -o-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3); + background-image: linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3); +} +.linear-gradient-left(@default,@color1,@stop1,@color2,@stop2,@color3,@stop3,@color4,@stop4) { + background-color: @default; + background-image: -webkit-gradient(linear, left top, left top, color-stop(@stop1, @color1), color-stop(@stop2 @color2), color-stop(@stop3 @color3), color-stop(@stop4 @color4)); + background-image: -webkit-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -moz-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -ms-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: -o-linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); + background-image: linear-gradient(left, @color1 @stop1, @color2 @stop2, @color3 @stop3, @color4 @stop4); +} + + +// Opacity + +.opacity(@factor) { + @iefactor: @factor*100; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=@{iefactor})"; + filter: ~"alpha(opacity=(@{iefactor}))"; + opacity: @factor; +} + + +// Text Shadow + +.text-shadow(@args) { + text-shadow: @args; +} + + +// Transforms + +.transform(@args) { + -webkit-transform: @args; + -moz-transform: @args; + -ms-transform: @args; + -o-transform: @args; + transform: @args; +} +.transform-origin(@args) { + -webkit-transform-origin: @args; + -moz-transform-origin: @args; + -ms-transform-origin: @args; + -o-transform-origin: @args; + transform-origin: @args; +} +.transform-style(@style) { + -webkit-transform-style: @style; + -moz-transform-style: @style; + -ms-transform-style: @style; + -o-transform-style: @style; + transform-style: @style; +} +.rotate(@deg:45deg){ + .transform(rotate(@deg)); +} +.scale(@factor:.5){ + .transform(scale(@factor)); +} +.translate(@x,@y){ + .transform(translate(@x,@y)); +} +.translate3d(@x,@y,@z) { + .transform(translate3d(@x,@y,@z)); +} +.translateHardware(@x,@y) { + .translate(@x,@y); + -webkit-transform: translate3d(@x,@y,0); + -moz-transform: translate3d(@x,@y,0); + -o-transform: translate3d(@x,@y,0); + -ms-transform: translate3d(@x,@y,0); + transform: translate3d(@x,@y,0); +} + + +// Transitions + +.transition(@args:200ms) { + -webkit-transition: @args; + -moz-transition: @args; + -o-transition: @args; + -ms-transition: @args; + transition: @args; +} +.transition-delay(@delay:0) { + -webkit-transition-delay: @delay; + -moz-transition-delay: @delay; + -o-transition-delay: @delay; + -ms-transition-delay: @delay; + transition-delay: @delay; +} +.transition-duration(@duration:200ms) { + -webkit-transition-duration: @duration; + -moz-transition-duration: @duration; + -o-transition-duration: @duration; + -ms-transition-duration: @duration; + transition-duration: @duration; +} +.transition-property(@property:all) { + -webkit-transition-property: @property; + -moz-transition-property: @property; + -o-transition-property: @property; + -ms-transition-property: @property; + transition-property: @property; +} +.transition-timing-function(@function:ease) { + -webkit-transition-timing-function: @function; + -moz-transition-timing-function: @function; + -o-transition-timing-function: @function; + -ms-transition-timing-function: @function; + transition-timing-function: @function; +} + +// Flexbox +.flex-block() { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} +.flex-inline() { + display: -ms-inline-flexbox; + display: -webkit-inline-flex; + display: inline-flex; +} +.flex-flow(@direction: row, @wrap: nowrap) { + -moz-flex-flow: @direction @wrap; + -ms-flex-direction: @direction; + -ms-flex-wrap: @wrap; + -webkit-flex-flow: @direction @wrap; + flex-flow: @direction @wrap; +} +.align-content(@alignment) { + -moz-align-content: @alignment; + -ms-align-content: @alignment; + -webkit-align-content: @alignment; + align-content: @alignment; +} +.flex-direction(@direction: row) { + -webkit-flex-direction: @direction; + -moz-flex-direction: @direction; + -ms-flex-direction: @direction; + flex-direction: @direction; +} +.flex-wrap(@wrap: nowrap) { + -webkit-flex-wrap: @wrap; + -moz-flex-wrap: @wrap; + -ms-flex-wrap: @wrap; + flex-wrap: @wrap; +} +.justify-content(@justification) { + -webkit-box-pack: @justification; + -moz-box-pack: @justification; + -ms-flex-pack: @justification; + -webkit-justify-content: @justification; + justify-content: @justification; +} +.align-items(@mode) { + -webkit-box-align: @mode; + -moz-box-align: @mode; + -ms-flex-align: @mode; + -webkit-align-items: @mode; + align-items: @mode; +} +.flex(@args: none) { + -webkit-flex: @args; + -moz-flex: @args; + -ms-flex: @args; + -webkit-flex: @args; + flex: @args; + +} +.order(@num: 0) { + -webkit-box-ordinal-group: @order; + -moz-box-ordinal-group: @order; + -ms-box-ordinal-group: @order; + -ms-flex-order: @order; + -webkit-order: @order; + -moz-order: @order; + -ms-order: @order; + order: @order; +} +.flex-grow(@grow: 1) { + -webkit-flex-grow: @grow; + -moz-flex-grow: @grow; + -ms-flex-grow: @grow; + -webkit-flex-grow: @grow; + flex-grow: @grow; +} +.flex-shrink(@shrink: 1) { + -webkit-flex-shrink: @shrink; + -moz-flex-shrink: @shrink; + -ms-flex-shrink: @shrink; + -webkit-flex-shrink: @shrink; + flex-shrink: @shrink; +} +.flex-basis(@basis: auto) { + -webkit-flex-basis: @basis; + -moz-flex-basis: @basis; + -ms-flex-basis: @basis; + -webkit-flex-basis: @basis; + flex-basis: @basis; +} +.align-self(@align: auto) { + -webkit-align-self: @align; + -moz-align-self: @align; + -ms-align-self: @align; + -webkit-align-self: @align; + align-self: @align; +} \ No newline at end of file diff --git a/assets/less/icons.less b/assets/less/icons.less new file mode 100644 index 0000000..4c23966 --- /dev/null +++ b/assets/less/icons.less @@ -0,0 +1,12 @@ +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Icons +*/ + +@import "icons/font-awesome/less/font-awesome"; +@import "icons/themify-icons/themify-icons"; +@import "icons/material-design/materialdesignicons"; +@import "icons/ionicons/less/ionicons"; +@import "icons/typicons/typicons"; diff --git a/assets/less/icons/css/material-design-iconic-font.css b/assets/less/icons/css/material-design-iconic-font.css new file mode 100644 index 0000000..428e3c3 --- /dev/null +++ b/assets/less/icons/css/material-design-iconic-font.css @@ -0,0 +1,5166 @@ +/*! + * Material Design Iconic Font by Sergey Kupletsky (@zavoloklom) - http://zavoloklom.github.io/material-design-iconic-font/ + * License - http://zavoloklom.github.io/material-design-iconic-font/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +@font-face { + font-family: 'Material-Design-Iconic-Font'; + src: url('../fonts/Material-Design-Iconic-Font.woff2?v=2.2.0') format('woff2'), url('../fonts/Material-Design-Iconic-Font.woff?v=2.2.0') format('woff'), url('../fonts/Material-Design-Iconic-Font.ttf?v=2.2.0') format('truetype'); + font-weight: normal; + font-style: normal; +} +.zmdi { + display: inline-block; + font: normal normal normal 14px/1 'Material-Design-Iconic-Font'; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.zmdi-hc-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.zmdi-hc-2x { + font-size: 2em; +} +.zmdi-hc-3x { + font-size: 3em; +} +.zmdi-hc-4x { + font-size: 4em; +} +.zmdi-hc-5x { + font-size: 5em; +} +.zmdi-hc-fw { + width: 1.28571429em; + text-align: center; +} +.zmdi-hc-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.zmdi-hc-ul > li { + position: relative; +} +.zmdi-hc-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.zmdi-hc-li.zmdi-hc-lg { + left: -1.85714286em; +} +.zmdi-hc-border { + padding: .1em .25em; + border: solid 0.1em #9e9e9e; + border-radius: 2px; +} +.zmdi-hc-border-circle { + padding: .1em .25em; + border: solid 0.1em #9e9e9e; + border-radius: 50%; +} +.zmdi.pull-left { + float: left; + margin-right: .15em; +} +.zmdi.pull-right { + float: right; + margin-left: .15em; +} +.zmdi-hc-spin { + -webkit-animation: zmdi-spin 1.5s infinite linear; + animation: zmdi-spin 1.5s infinite linear; +} +.zmdi-hc-spin-reverse { + -webkit-animation: zmdi-spin-reverse 1.5s infinite linear; + animation: zmdi-spin-reverse 1.5s infinite linear; +} +@-webkit-keyframes zmdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes zmdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes zmdi-spin-reverse { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } +} +@keyframes zmdi-spin-reverse { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(-359deg); + transform: rotate(-359deg); + } +} +.zmdi-hc-rotate-90 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.zmdi-hc-rotate-180 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.zmdi-hc-rotate-270 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.zmdi-hc-flip-horizontal { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.zmdi-hc-flip-vertical { + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +.zmdi-hc-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.zmdi-hc-stack-1x, +.zmdi-hc-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.zmdi-hc-stack-1x { + line-height: inherit; +} +.zmdi-hc-stack-2x { + font-size: 2em; +} +.zmdi-hc-inverse { + color: #ffffff; +} +/* Material Design Iconic Font uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.zmdi-3d-rotation:before { + content: '\f101'; +} +.zmdi-airplane-off:before { + content: '\f102'; +} +.zmdi-airplane:before { + content: '\f103'; +} +.zmdi-album:before { + content: '\f104'; +} +.zmdi-archive:before { + content: '\f105'; +} +.zmdi-assignment-account:before { + content: '\f106'; +} +.zmdi-assignment-alert:before { + content: '\f107'; +} +.zmdi-assignment-check:before { + content: '\f108'; +} +.zmdi-assignment-o:before { + content: '\f109'; +} +.zmdi-assignment-return:before { + content: '\f10a'; +} +.zmdi-assignment-returned:before { + content: '\f10b'; +} +.zmdi-assignment:before { + content: '\f10c'; +} +.zmdi-attachment-alt:before { + content: '\f10d'; +} +.zmdi-attachment:before { + content: '\f10e'; +} +.zmdi-audio:before { + content: '\f10f'; +} +.zmdi-badge-check:before { + content: '\f110'; +} +.zmdi-balance-wallet:before { + content: '\f111'; +} +.zmdi-balance:before { + content: '\f112'; +} +.zmdi-battery-alert:before { + content: '\f113'; +} +.zmdi-battery-flash:before { + content: '\f114'; +} +.zmdi-battery-unknown:before { + content: '\f115'; +} +.zmdi-battery:before { + content: '\f116'; +} +.zmdi-bike:before { + content: '\f117'; +} +.zmdi-block-alt:before { + content: '\f118'; +} +.zmdi-block:before { + content: '\f119'; +} +.zmdi-boat:before { + content: '\f11a'; +} +.zmdi-book-image:before { + content: '\f11b'; +} +.zmdi-book:before { + content: '\f11c'; +} +.zmdi-bookmark-outline:before { + content: '\f11d'; +} +.zmdi-bookmark:before { + content: '\f11e'; +} +.zmdi-brush:before { + content: '\f11f'; +} +.zmdi-bug:before { + content: '\f120'; +} +.zmdi-bus:before { + content: '\f121'; +} +.zmdi-cake:before { + content: '\f122'; +} +.zmdi-car-taxi:before { + content: '\f123'; +} +.zmdi-car-wash:before { + content: '\f124'; +} +.zmdi-car:before { + content: '\f125'; +} +.zmdi-card-giftcard:before { + content: '\f126'; +} +.zmdi-card-membership:before { + content: '\f127'; +} +.zmdi-card-travel:before { + content: '\f128'; +} +.zmdi-card:before { + content: '\f129'; +} +.zmdi-case-check:before { + content: '\f12a'; +} +.zmdi-case-download:before { + content: '\f12b'; +} +.zmdi-case-play:before { + content: '\f12c'; +} +.zmdi-case:before { + content: '\f12d'; +} +.zmdi-cast-connected:before { + content: '\f12e'; +} +.zmdi-cast:before { + content: '\f12f'; +} +.zmdi-chart-donut:before { + content: '\f130'; +} +.zmdi-chart:before { + content: '\f131'; +} +.zmdi-city-alt:before { + content: '\f132'; +} +.zmdi-city:before { + content: '\f133'; +} +.zmdi-close-circle-o:before { + content: '\f134'; +} +.zmdi-close-circle:before { + content: '\f135'; +} +.zmdi-close:before { + content: '\f136'; +} +.zmdi-cocktail:before { + content: '\f137'; +} +.zmdi-code-setting:before { + content: '\f138'; +} +.zmdi-code-smartphone:before { + content: '\f139'; +} +.zmdi-code:before { + content: '\f13a'; +} +.zmdi-coffee:before { + content: '\f13b'; +} +.zmdi-collection-bookmark:before { + content: '\f13c'; +} +.zmdi-collection-case-play:before { + content: '\f13d'; +} +.zmdi-collection-folder-image:before { + content: '\f13e'; +} +.zmdi-collection-image-o:before { + content: '\f13f'; +} +.zmdi-collection-image:before { + content: '\f140'; +} +.zmdi-collection-item-1:before { + content: '\f141'; +} +.zmdi-collection-item-2:before { + content: '\f142'; +} +.zmdi-collection-item-3:before { + content: '\f143'; +} +.zmdi-collection-item-4:before { + content: '\f144'; +} +.zmdi-collection-item-5:before { + content: '\f145'; +} +.zmdi-collection-item-6:before { + content: '\f146'; +} +.zmdi-collection-item-7:before { + content: '\f147'; +} +.zmdi-collection-item-8:before { + content: '\f148'; +} +.zmdi-collection-item-9-plus:before { + content: '\f149'; +} +.zmdi-collection-item-9:before { + content: '\f14a'; +} +.zmdi-collection-item:before { + content: '\f14b'; +} +.zmdi-collection-music:before { + content: '\f14c'; +} +.zmdi-collection-pdf:before { + content: '\f14d'; +} +.zmdi-collection-plus:before { + content: '\f14e'; +} +.zmdi-collection-speaker:before { + content: '\f14f'; +} +.zmdi-collection-text:before { + content: '\f150'; +} +.zmdi-collection-video:before { + content: '\f151'; +} +.zmdi-compass:before { + content: '\f152'; +} +.zmdi-cutlery:before { + content: '\f153'; +} +.zmdi-delete:before { + content: '\f154'; +} +.zmdi-dialpad:before { + content: '\f155'; +} +.zmdi-dns:before { + content: '\f156'; +} +.zmdi-drink:before { + content: '\f157'; +} +.zmdi-edit:before { + content: '\f158'; +} +.zmdi-email-open:before { + content: '\f159'; +} +.zmdi-email:before { + content: '\f15a'; +} +.zmdi-eye-off:before { + content: '\f15b'; +} +.zmdi-eye:before { + content: '\f15c'; +} +.zmdi-eyedropper:before { + content: '\f15d'; +} +.zmdi-favorite-outline:before { + content: '\f15e'; +} +.zmdi-favorite:before { + content: '\f15f'; +} +.zmdi-filter-list:before { + content: '\f160'; +} +.zmdi-fire:before { + content: '\f161'; +} +.zmdi-flag:before { + content: '\f162'; +} +.zmdi-flare:before { + content: '\f163'; +} +.zmdi-flash-auto:before { + content: '\f164'; +} +.zmdi-flash-off:before { + content: '\f165'; +} +.zmdi-flash:before { + content: '\f166'; +} +.zmdi-flip:before { + content: '\f167'; +} +.zmdi-flower-alt:before { + content: '\f168'; +} +.zmdi-flower:before { + content: '\f169'; +} +.zmdi-font:before { + content: '\f16a'; +} +.zmdi-fullscreen-alt:before { + content: '\f16b'; +} +.zmdi-fullscreen-exit:before { + content: '\f16c'; +} +.zmdi-fullscreen:before { + content: '\f16d'; +} +.zmdi-functions:before { + content: '\f16e'; +} +.zmdi-gas-station:before { + content: '\f16f'; +} +.zmdi-gesture:before { + content: '\f170'; +} +.zmdi-globe-alt:before { + content: '\f171'; +} +.zmdi-globe-lock:before { + content: '\f172'; +} +.zmdi-globe:before { + content: '\f173'; +} +.zmdi-graduation-cap:before { + content: '\f174'; +} +.zmdi-home:before { + content: '\f175'; +} +.zmdi-hospital-alt:before { + content: '\f176'; +} +.zmdi-hospital:before { + content: '\f177'; +} +.zmdi-hotel:before { + content: '\f178'; +} +.zmdi-hourglass-alt:before { + content: '\f179'; +} +.zmdi-hourglass-outline:before { + content: '\f17a'; +} +.zmdi-hourglass:before { + content: '\f17b'; +} +.zmdi-http:before { + content: '\f17c'; +} +.zmdi-image-alt:before { + content: '\f17d'; +} +.zmdi-image-o:before { + content: '\f17e'; +} +.zmdi-image:before { + content: '\f17f'; +} +.zmdi-inbox:before { + content: '\f180'; +} +.zmdi-invert-colors-off:before { + content: '\f181'; +} +.zmdi-invert-colors:before { + content: '\f182'; +} +.zmdi-key:before { + content: '\f183'; +} +.zmdi-label-alt-outline:before { + content: '\f184'; +} +.zmdi-label-alt:before { + content: '\f185'; +} +.zmdi-label-heart:before { + content: '\f186'; +} +.zmdi-label:before { + content: '\f187'; +} +.zmdi-labels:before { + content: '\f188'; +} +.zmdi-lamp:before { + content: '\f189'; +} +.zmdi-landscape:before { + content: '\f18a'; +} +.zmdi-layers-off:before { + content: '\f18b'; +} +.zmdi-layers:before { + content: '\f18c'; +} +.zmdi-library:before { + content: '\f18d'; +} +.zmdi-link:before { + content: '\f18e'; +} +.zmdi-lock-open:before { + content: '\f18f'; +} +.zmdi-lock-outline:before { + content: '\f190'; +} +.zmdi-lock:before { + content: '\f191'; +} +.zmdi-mail-reply-all:before { + content: '\f192'; +} +.zmdi-mail-reply:before { + content: '\f193'; +} +.zmdi-mail-send:before { + content: '\f194'; +} +.zmdi-mall:before { + content: '\f195'; +} +.zmdi-map:before { + content: '\f196'; +} +.zmdi-menu:before { + content: '\f197'; +} +.zmdi-money-box:before { + content: '\f198'; +} +.zmdi-money-off:before { + content: '\f199'; +} +.zmdi-money:before { + content: '\f19a'; +} +.zmdi-more-vert:before { + content: '\f19b'; +} +.zmdi-more:before { + content: '\f19c'; +} +.zmdi-movie-alt:before { + content: '\f19d'; +} +.zmdi-movie:before { + content: '\f19e'; +} +.zmdi-nature-people:before { + content: '\f19f'; +} +.zmdi-nature:before { + content: '\f1a0'; +} +.zmdi-navigation:before { + content: '\f1a1'; +} +.zmdi-open-in-browser:before { + content: '\f1a2'; +} +.zmdi-open-in-new:before { + content: '\f1a3'; +} +.zmdi-palette:before { + content: '\f1a4'; +} +.zmdi-parking:before { + content: '\f1a5'; +} +.zmdi-pin-account:before { + content: '\f1a6'; +} +.zmdi-pin-assistant:before { + content: '\f1a7'; +} +.zmdi-pin-drop:before { + content: '\f1a8'; +} +.zmdi-pin-help:before { + content: '\f1a9'; +} +.zmdi-pin-off:before { + content: '\f1aa'; +} +.zmdi-pin:before { + content: '\f1ab'; +} +.zmdi-pizza:before { + content: '\f1ac'; +} +.zmdi-plaster:before { + content: '\f1ad'; +} +.zmdi-power-setting:before { + content: '\f1ae'; +} +.zmdi-power:before { + content: '\f1af'; +} +.zmdi-print:before { + content: '\f1b0'; +} +.zmdi-puzzle-piece:before { + content: '\f1b1'; +} +.zmdi-quote:before { + content: '\f1b2'; +} +.zmdi-railway:before { + content: '\f1b3'; +} +.zmdi-receipt:before { + content: '\f1b4'; +} +.zmdi-refresh-alt:before { + content: '\f1b5'; +} +.zmdi-refresh-sync-alert:before { + content: '\f1b6'; +} +.zmdi-refresh-sync-off:before { + content: '\f1b7'; +} +.zmdi-refresh-sync:before { + content: '\f1b8'; +} +.zmdi-refresh:before { + content: '\f1b9'; +} +.zmdi-roller:before { + content: '\f1ba'; +} +.zmdi-ruler:before { + content: '\f1bb'; +} +.zmdi-scissors:before { + content: '\f1bc'; +} +.zmdi-screen-rotation-lock:before { + content: '\f1bd'; +} +.zmdi-screen-rotation:before { + content: '\f1be'; +} +.zmdi-search-for:before { + content: '\f1bf'; +} +.zmdi-search-in-file:before { + content: '\f1c0'; +} +.zmdi-search-in-page:before { + content: '\f1c1'; +} +.zmdi-search-replace:before { + content: '\f1c2'; +} +.zmdi-search:before { + content: '\f1c3'; +} +.zmdi-seat:before { + content: '\f1c4'; +} +.zmdi-settings-square:before { + content: '\f1c5'; +} +.zmdi-settings:before { + content: '\f1c6'; +} +.zmdi-shield-check:before { + content: '\f1c7'; +} +.zmdi-shield-security:before { + content: '\f1c8'; +} +.zmdi-shopping-basket:before { + content: '\f1c9'; +} +.zmdi-shopping-cart-plus:before { + content: '\f1ca'; +} +.zmdi-shopping-cart:before { + content: '\f1cb'; +} +.zmdi-sign-in:before { + content: '\f1cc'; +} +.zmdi-sort-amount-asc:before { + content: '\f1cd'; +} +.zmdi-sort-amount-desc:before { + content: '\f1ce'; +} +.zmdi-sort-asc:before { + content: '\f1cf'; +} +.zmdi-sort-desc:before { + content: '\f1d0'; +} +.zmdi-spellcheck:before { + content: '\f1d1'; +} +.zmdi-storage:before { + content: '\f1d2'; +} +.zmdi-store-24:before { + content: '\f1d3'; +} +.zmdi-store:before { + content: '\f1d4'; +} +.zmdi-subway:before { + content: '\f1d5'; +} +.zmdi-sun:before { + content: '\f1d6'; +} +.zmdi-tab-unselected:before { + content: '\f1d7'; +} +.zmdi-tab:before { + content: '\f1d8'; +} +.zmdi-tag-close:before { + content: '\f1d9'; +} +.zmdi-tag-more:before { + content: '\f1da'; +} +.zmdi-tag:before { + content: '\f1db'; +} +.zmdi-thumb-down:before { + content: '\f1dc'; +} +.zmdi-thumb-up-down:before { + content: '\f1dd'; +} +.zmdi-thumb-up:before { + content: '\f1de'; +} +.zmdi-ticket-star:before { + content: '\f1df'; +} +.zmdi-toll:before { + content: '\f1e0'; +} +.zmdi-toys:before { + content: '\f1e1'; +} +.zmdi-traffic:before { + content: '\f1e2'; +} +.zmdi-translate:before { + content: '\f1e3'; +} +.zmdi-triangle-down:before { + content: '\f1e4'; +} +.zmdi-triangle-up:before { + content: '\f1e5'; +} +.zmdi-truck:before { + content: '\f1e6'; +} +.zmdi-turning-sign:before { + content: '\f1e7'; +} +.zmdi-wallpaper:before { + content: '\f1e8'; +} +.zmdi-washing-machine:before { + content: '\f1e9'; +} +.zmdi-window-maximize:before { + content: '\f1ea'; +} +.zmdi-window-minimize:before { + content: '\f1eb'; +} +.zmdi-window-restore:before { + content: '\f1ec'; +} +.zmdi-wrench:before { + content: '\f1ed'; +} +.zmdi-zoom-in:before { + content: '\f1ee'; +} +.zmdi-zoom-out:before { + content: '\f1ef'; +} +.zmdi-alert-circle-o:before { + content: '\f1f0'; +} +.zmdi-alert-circle:before { + content: '\f1f1'; +} +.zmdi-alert-octagon:before { + content: '\f1f2'; +} +.zmdi-alert-polygon:before { + content: '\f1f3'; +} +.zmdi-alert-triangle:before { + content: '\f1f4'; +} +.zmdi-help-outline:before { + content: '\f1f5'; +} +.zmdi-help:before { + content: '\f1f6'; +} +.zmdi-info-outline:before { + content: '\f1f7'; +} +.zmdi-info:before { + content: '\f1f8'; +} +.zmdi-notifications-active:before { + content: '\f1f9'; +} +.zmdi-notifications-add:before { + content: '\f1fa'; +} +.zmdi-notifications-none:before { + content: '\f1fb'; +} +.zmdi-notifications-off:before { + content: '\f1fc'; +} +.zmdi-notifications-paused:before { + content: '\f1fd'; +} +.zmdi-notifications:before { + content: '\f1fe'; +} +.zmdi-account-add:before { + content: '\f1ff'; +} +.zmdi-account-box-mail:before { + content: '\f200'; +} +.zmdi-account-box-o:before { + content: '\f201'; +} +.zmdi-account-box-phone:before { + content: '\f202'; +} +.zmdi-account-box:before { + content: '\f203'; +} +.zmdi-account-calendar:before { + content: '\f204'; +} +.zmdi-account-circle:before { + content: '\f205'; +} +.zmdi-account-o:before { + content: '\f206'; +} +.zmdi-account:before { + content: '\f207'; +} +.zmdi-accounts-add:before { + content: '\f208'; +} +.zmdi-accounts-alt:before { + content: '\f209'; +} +.zmdi-accounts-list-alt:before { + content: '\f20a'; +} +.zmdi-accounts-list:before { + content: '\f20b'; +} +.zmdi-accounts-outline:before { + content: '\f20c'; +} +.zmdi-accounts:before { + content: '\f20d'; +} +.zmdi-face:before { + content: '\f20e'; +} +.zmdi-female:before { + content: '\f20f'; +} +.zmdi-male-alt:before { + content: '\f210'; +} +.zmdi-male-female:before { + content: '\f211'; +} +.zmdi-male:before { + content: '\f212'; +} +.zmdi-mood-bad:before { + content: '\f213'; +} +.zmdi-mood:before { + content: '\f214'; +} +.zmdi-run:before { + content: '\f215'; +} +.zmdi-walk:before { + content: '\f216'; +} +.zmdi-cloud-box:before { + content: '\f217'; +} +.zmdi-cloud-circle:before { + content: '\f218'; +} +.zmdi-cloud-done:before { + content: '\f219'; +} +.zmdi-cloud-download:before { + content: '\f21a'; +} +.zmdi-cloud-off:before { + content: '\f21b'; +} +.zmdi-cloud-outline-alt:before { + content: '\f21c'; +} +.zmdi-cloud-outline:before { + content: '\f21d'; +} +.zmdi-cloud-upload:before { + content: '\f21e'; +} +.zmdi-cloud:before { + content: '\f21f'; +} +.zmdi-download:before { + content: '\f220'; +} +.zmdi-file-plus:before { + content: '\f221'; +} +.zmdi-file-text:before { + content: '\f222'; +} +.zmdi-file:before { + content: '\f223'; +} +.zmdi-folder-outline:before { + content: '\f224'; +} +.zmdi-folder-person:before { + content: '\f225'; +} +.zmdi-folder-star-alt:before { + content: '\f226'; +} +.zmdi-folder-star:before { + content: '\f227'; +} +.zmdi-folder:before { + content: '\f228'; +} +.zmdi-gif:before { + content: '\f229'; +} +.zmdi-upload:before { + content: '\f22a'; +} +.zmdi-border-all:before { + content: '\f22b'; +} +.zmdi-border-bottom:before { + content: '\f22c'; +} +.zmdi-border-clear:before { + content: '\f22d'; +} +.zmdi-border-color:before { + content: '\f22e'; +} +.zmdi-border-horizontal:before { + content: '\f22f'; +} +.zmdi-border-inner:before { + content: '\f230'; +} +.zmdi-border-left:before { + content: '\f231'; +} +.zmdi-border-outer:before { + content: '\f232'; +} +.zmdi-border-right:before { + content: '\f233'; +} +.zmdi-border-style:before { + content: '\f234'; +} +.zmdi-border-top:before { + content: '\f235'; +} +.zmdi-border-vertical:before { + content: '\f236'; +} +.zmdi-copy:before { + content: '\f237'; +} +.zmdi-crop:before { + content: '\f238'; +} +.zmdi-format-align-center:before { + content: '\f239'; +} +.zmdi-format-align-justify:before { + content: '\f23a'; +} +.zmdi-format-align-left:before { + content: '\f23b'; +} +.zmdi-format-align-right:before { + content: '\f23c'; +} +.zmdi-format-bold:before { + content: '\f23d'; +} +.zmdi-format-clear-all:before { + content: '\f23e'; +} +.zmdi-format-clear:before { + content: '\f23f'; +} +.zmdi-format-color-fill:before { + content: '\f240'; +} +.zmdi-format-color-reset:before { + content: '\f241'; +} +.zmdi-format-color-text:before { + content: '\f242'; +} +.zmdi-format-indent-decrease:before { + content: '\f243'; +} +.zmdi-format-indent-increase:before { + content: '\f244'; +} +.zmdi-format-italic:before { + content: '\f245'; +} +.zmdi-format-line-spacing:before { + content: '\f246'; +} +.zmdi-format-list-bulleted:before { + content: '\f247'; +} +.zmdi-format-list-numbered:before { + content: '\f248'; +} +.zmdi-format-ltr:before { + content: '\f249'; +} +.zmdi-format-rtl:before { + content: '\f24a'; +} +.zmdi-format-size:before { + content: '\f24b'; +} +.zmdi-format-strikethrough-s:before { + content: '\f24c'; +} +.zmdi-format-strikethrough:before { + content: '\f24d'; +} +.zmdi-format-subject:before { + content: '\f24e'; +} +.zmdi-format-underlined:before { + content: '\f24f'; +} +.zmdi-format-valign-bottom:before { + content: '\f250'; +} +.zmdi-format-valign-center:before { + content: '\f251'; +} +.zmdi-format-valign-top:before { + content: '\f252'; +} +.zmdi-redo:before { + content: '\f253'; +} +.zmdi-select-all:before { + content: '\f254'; +} +.zmdi-space-bar:before { + content: '\f255'; +} +.zmdi-text-format:before { + content: '\f256'; +} +.zmdi-transform:before { + content: '\f257'; +} +.zmdi-undo:before { + content: '\f258'; +} +.zmdi-wrap-text:before { + content: '\f259'; +} +.zmdi-comment-alert:before { + content: '\f25a'; +} +.zmdi-comment-alt-text:before { + content: '\f25b'; +} +.zmdi-comment-alt:before { + content: '\f25c'; +} +.zmdi-comment-edit:before { + content: '\f25d'; +} +.zmdi-comment-image:before { + content: '\f25e'; +} +.zmdi-comment-list:before { + content: '\f25f'; +} +.zmdi-comment-more:before { + content: '\f260'; +} +.zmdi-comment-outline:before { + content: '\f261'; +} +.zmdi-comment-text-alt:before { + content: '\f262'; +} +.zmdi-comment-text:before { + content: '\f263'; +} +.zmdi-comment-video:before { + content: '\f264'; +} +.zmdi-comment:before { + content: '\f265'; +} +.zmdi-comments:before { + content: '\f266'; +} +.zmdi-check-all:before { + content: '\f267'; +} +.zmdi-check-circle-u:before { + content: '\f268'; +} +.zmdi-check-circle:before { + content: '\f269'; +} +.zmdi-check-square:before { + content: '\f26a'; +} +.zmdi-check:before { + content: '\f26b'; +} +.zmdi-circle-o:before { + content: '\f26c'; +} +.zmdi-circle:before { + content: '\f26d'; +} +.zmdi-dot-circle-alt:before { + content: '\f26e'; +} +.zmdi-dot-circle:before { + content: '\f26f'; +} +.zmdi-minus-circle-outline:before { + content: '\f270'; +} +.zmdi-minus-circle:before { + content: '\f271'; +} +.zmdi-minus-square:before { + content: '\f272'; +} +.zmdi-minus:before { + content: '\f273'; +} +.zmdi-plus-circle-o-duplicate:before { + content: '\f274'; +} +.zmdi-plus-circle-o:before { + content: '\f275'; +} +.zmdi-plus-circle:before { + content: '\f276'; +} +.zmdi-plus-square:before { + content: '\f277'; +} +.zmdi-plus:before { + content: '\f278'; +} +.zmdi-square-o:before { + content: '\f279'; +} +.zmdi-star-circle:before { + content: '\f27a'; +} +.zmdi-star-half:before { + content: '\f27b'; +} +.zmdi-star-outline:before { + content: '\f27c'; +} +.zmdi-star:before { + content: '\f27d'; +} +.zmdi-bluetooth-connected:before { + content: '\f27e'; +} +.zmdi-bluetooth-off:before { + content: '\f27f'; +} +.zmdi-bluetooth-search:before { + content: '\f280'; +} +.zmdi-bluetooth-setting:before { + content: '\f281'; +} +.zmdi-bluetooth:before { + content: '\f282'; +} +.zmdi-camera-add:before { + content: '\f283'; +} +.zmdi-camera-alt:before { + content: '\f284'; +} +.zmdi-camera-bw:before { + content: '\f285'; +} +.zmdi-camera-front:before { + content: '\f286'; +} +.zmdi-camera-mic:before { + content: '\f287'; +} +.zmdi-camera-party-mode:before { + content: '\f288'; +} +.zmdi-camera-rear:before { + content: '\f289'; +} +.zmdi-camera-roll:before { + content: '\f28a'; +} +.zmdi-camera-switch:before { + content: '\f28b'; +} +.zmdi-camera:before { + content: '\f28c'; +} +.zmdi-card-alert:before { + content: '\f28d'; +} +.zmdi-card-off:before { + content: '\f28e'; +} +.zmdi-card-sd:before { + content: '\f28f'; +} +.zmdi-card-sim:before { + content: '\f290'; +} +.zmdi-desktop-mac:before { + content: '\f291'; +} +.zmdi-desktop-windows:before { + content: '\f292'; +} +.zmdi-device-hub:before { + content: '\f293'; +} +.zmdi-devices-off:before { + content: '\f294'; +} +.zmdi-devices:before { + content: '\f295'; +} +.zmdi-dock:before { + content: '\f296'; +} +.zmdi-floppy:before { + content: '\f297'; +} +.zmdi-gamepad:before { + content: '\f298'; +} +.zmdi-gps-dot:before { + content: '\f299'; +} +.zmdi-gps-off:before { + content: '\f29a'; +} +.zmdi-gps:before { + content: '\f29b'; +} +.zmdi-headset-mic:before { + content: '\f29c'; +} +.zmdi-headset:before { + content: '\f29d'; +} +.zmdi-input-antenna:before { + content: '\f29e'; +} +.zmdi-input-composite:before { + content: '\f29f'; +} +.zmdi-input-hdmi:before { + content: '\f2a0'; +} +.zmdi-input-power:before { + content: '\f2a1'; +} +.zmdi-input-svideo:before { + content: '\f2a2'; +} +.zmdi-keyboard-hide:before { + content: '\f2a3'; +} +.zmdi-keyboard:before { + content: '\f2a4'; +} +.zmdi-laptop-chromebook:before { + content: '\f2a5'; +} +.zmdi-laptop-mac:before { + content: '\f2a6'; +} +.zmdi-laptop:before { + content: '\f2a7'; +} +.zmdi-mic-off:before { + content: '\f2a8'; +} +.zmdi-mic-outline:before { + content: '\f2a9'; +} +.zmdi-mic-setting:before { + content: '\f2aa'; +} +.zmdi-mic:before { + content: '\f2ab'; +} +.zmdi-mouse:before { + content: '\f2ac'; +} +.zmdi-network-alert:before { + content: '\f2ad'; +} +.zmdi-network-locked:before { + content: '\f2ae'; +} +.zmdi-network-off:before { + content: '\f2af'; +} +.zmdi-network-outline:before { + content: '\f2b0'; +} +.zmdi-network-setting:before { + content: '\f2b1'; +} +.zmdi-network:before { + content: '\f2b2'; +} +.zmdi-phone-bluetooth:before { + content: '\f2b3'; +} +.zmdi-phone-end:before { + content: '\f2b4'; +} +.zmdi-phone-forwarded:before { + content: '\f2b5'; +} +.zmdi-phone-in-talk:before { + content: '\f2b6'; +} +.zmdi-phone-locked:before { + content: '\f2b7'; +} +.zmdi-phone-missed:before { + content: '\f2b8'; +} +.zmdi-phone-msg:before { + content: '\f2b9'; +} +.zmdi-phone-paused:before { + content: '\f2ba'; +} +.zmdi-phone-ring:before { + content: '\f2bb'; +} +.zmdi-phone-setting:before { + content: '\f2bc'; +} +.zmdi-phone-sip:before { + content: '\f2bd'; +} +.zmdi-phone:before { + content: '\f2be'; +} +.zmdi-portable-wifi-changes:before { + content: '\f2bf'; +} +.zmdi-portable-wifi-off:before { + content: '\f2c0'; +} +.zmdi-portable-wifi:before { + content: '\f2c1'; +} +.zmdi-radio:before { + content: '\f2c2'; +} +.zmdi-reader:before { + content: '\f2c3'; +} +.zmdi-remote-control-alt:before { + content: '\f2c4'; +} +.zmdi-remote-control:before { + content: '\f2c5'; +} +.zmdi-router:before { + content: '\f2c6'; +} +.zmdi-scanner:before { + content: '\f2c7'; +} +.zmdi-smartphone-android:before { + content: '\f2c8'; +} +.zmdi-smartphone-download:before { + content: '\f2c9'; +} +.zmdi-smartphone-erase:before { + content: '\f2ca'; +} +.zmdi-smartphone-info:before { + content: '\f2cb'; +} +.zmdi-smartphone-iphone:before { + content: '\f2cc'; +} +.zmdi-smartphone-landscape-lock:before { + content: '\f2cd'; +} +.zmdi-smartphone-landscape:before { + content: '\f2ce'; +} +.zmdi-smartphone-lock:before { + content: '\f2cf'; +} +.zmdi-smartphone-portrait-lock:before { + content: '\f2d0'; +} +.zmdi-smartphone-ring:before { + content: '\f2d1'; +} +.zmdi-smartphone-setting:before { + content: '\f2d2'; +} +.zmdi-smartphone-setup:before { + content: '\f2d3'; +} +.zmdi-smartphone:before { + content: '\f2d4'; +} +.zmdi-speaker:before { + content: '\f2d5'; +} +.zmdi-tablet-android:before { + content: '\f2d6'; +} +.zmdi-tablet-mac:before { + content: '\f2d7'; +} +.zmdi-tablet:before { + content: '\f2d8'; +} +.zmdi-tv-alt-play:before { + content: '\f2d9'; +} +.zmdi-tv-list:before { + content: '\f2da'; +} +.zmdi-tv-play:before { + content: '\f2db'; +} +.zmdi-tv:before { + content: '\f2dc'; +} +.zmdi-usb:before { + content: '\f2dd'; +} +.zmdi-videocam-off:before { + content: '\f2de'; +} +.zmdi-videocam-switch:before { + content: '\f2df'; +} +.zmdi-videocam:before { + content: '\f2e0'; +} +.zmdi-watch:before { + content: '\f2e1'; +} +.zmdi-wifi-alt-2:before { + content: '\f2e2'; +} +.zmdi-wifi-alt:before { + content: '\f2e3'; +} +.zmdi-wifi-info:before { + content: '\f2e4'; +} +.zmdi-wifi-lock:before { + content: '\f2e5'; +} +.zmdi-wifi-off:before { + content: '\f2e6'; +} +.zmdi-wifi-outline:before { + content: '\f2e7'; +} +.zmdi-wifi:before { + content: '\f2e8'; +} +.zmdi-arrow-left-bottom:before { + content: '\f2e9'; +} +.zmdi-arrow-left:before { + content: '\f2ea'; +} +.zmdi-arrow-merge:before { + content: '\f2eb'; +} +.zmdi-arrow-missed:before { + content: '\f2ec'; +} +.zmdi-arrow-right-top:before { + content: '\f2ed'; +} +.zmdi-arrow-right:before { + content: '\f2ee'; +} +.zmdi-arrow-split:before { + content: '\f2ef'; +} +.zmdi-arrows:before { + content: '\f2f0'; +} +.zmdi-caret-down-circle:before { + content: '\f2f1'; +} +.zmdi-caret-down:before { + content: '\f2f2'; +} +.zmdi-caret-left-circle:before { + content: '\f2f3'; +} +.zmdi-caret-left:before { + content: '\f2f4'; +} +.zmdi-caret-right-circle:before { + content: '\f2f5'; +} +.zmdi-caret-right:before { + content: '\f2f6'; +} +.zmdi-caret-up-circle:before { + content: '\f2f7'; +} +.zmdi-caret-up:before { + content: '\f2f8'; +} +.zmdi-chevron-down:before { + content: '\f2f9'; +} +.zmdi-chevron-left:before { + content: '\f2fa'; +} +.zmdi-chevron-right:before { + content: '\f2fb'; +} +.zmdi-chevron-up:before { + content: '\f2fc'; +} +.zmdi-forward:before { + content: '\f2fd'; +} +.zmdi-long-arrow-down:before { + content: '\f2fe'; +} +.zmdi-long-arrow-left:before { + content: '\f2ff'; +} +.zmdi-long-arrow-return:before { + content: '\f300'; +} +.zmdi-long-arrow-right:before { + content: '\f301'; +} +.zmdi-long-arrow-tab:before { + content: '\f302'; +} +.zmdi-long-arrow-up:before { + content: '\f303'; +} +.zmdi-rotate-ccw:before { + content: '\f304'; +} +.zmdi-rotate-cw:before { + content: '\f305'; +} +.zmdi-rotate-left:before { + content: '\f306'; +} +.zmdi-rotate-right:before { + content: '\f307'; +} +.zmdi-square-down:before { + content: '\f308'; +} +.zmdi-square-right:before { + content: '\f309'; +} +.zmdi-swap-alt:before { + content: '\f30a'; +} +.zmdi-swap-vertical-circle:before { + content: '\f30b'; +} +.zmdi-swap-vertical:before { + content: '\f30c'; +} +.zmdi-swap:before { + content: '\f30d'; +} +.zmdi-trending-down:before { + content: '\f30e'; +} +.zmdi-trending-flat:before { + content: '\f30f'; +} +.zmdi-trending-up:before { + content: '\f310'; +} +.zmdi-unfold-less:before { + content: '\f311'; +} +.zmdi-unfold-more:before { + content: '\f312'; +} +.zmdi-apps:before { + content: '\f313'; +} +.zmdi-grid-off:before { + content: '\f314'; +} +.zmdi-grid:before { + content: '\f315'; +} +.zmdi-view-agenda:before { + content: '\f316'; +} +.zmdi-view-array:before { + content: '\f317'; +} +.zmdi-view-carousel:before { + content: '\f318'; +} +.zmdi-view-column:before { + content: '\f319'; +} +.zmdi-view-comfy:before { + content: '\f31a'; +} +.zmdi-view-compact:before { + content: '\f31b'; +} +.zmdi-view-dashboard:before { + content: '\f31c'; +} +.zmdi-view-day:before { + content: '\f31d'; +} +.zmdi-view-headline:before { + content: '\f31e'; +} +.zmdi-view-list-alt:before { + content: '\f31f'; +} +.zmdi-view-list:before { + content: '\f320'; +} +.zmdi-view-module:before { + content: '\f321'; +} +.zmdi-view-quilt:before { + content: '\f322'; +} +.zmdi-view-stream:before { + content: '\f323'; +} +.zmdi-view-subtitles:before { + content: '\f324'; +} +.zmdi-view-toc:before { + content: '\f325'; +} +.zmdi-view-web:before { + content: '\f326'; +} +.zmdi-view-week:before { + content: '\f327'; +} +.zmdi-widgets:before { + content: '\f328'; +} +.zmdi-alarm-check:before { + content: '\f329'; +} +.zmdi-alarm-off:before { + content: '\f32a'; +} +.zmdi-alarm-plus:before { + content: '\f32b'; +} +.zmdi-alarm-snooze:before { + content: '\f32c'; +} +.zmdi-alarm:before { + content: '\f32d'; +} +.zmdi-calendar-alt:before { + content: '\f32e'; +} +.zmdi-calendar-check:before { + content: '\f32f'; +} +.zmdi-calendar-close:before { + content: '\f330'; +} +.zmdi-calendar-note:before { + content: '\f331'; +} +.zmdi-calendar:before { + content: '\f332'; +} +.zmdi-time-countdown:before { + content: '\f333'; +} +.zmdi-time-interval:before { + content: '\f334'; +} +.zmdi-time-restore-setting:before { + content: '\f335'; +} +.zmdi-time-restore:before { + content: '\f336'; +} +.zmdi-time:before { + content: '\f337'; +} +.zmdi-timer-off:before { + content: '\f338'; +} +.zmdi-timer:before { + content: '\f339'; +} +.zmdi-android-alt:before { + content: '\f33a'; +} +.zmdi-android:before { + content: '\f33b'; +} +.zmdi-apple:before { + content: '\f33c'; +} +.zmdi-behance:before { + content: '\f33d'; +} +.zmdi-codepen:before { + content: '\f33e'; +} +.zmdi-dribbble:before { + content: '\f33f'; +} +.zmdi-dropbox:before { + content: '\f340'; +} +.zmdi-evernote:before { + content: '\f341'; +} +.zmdi-facebook-box:before { + content: '\f342'; +} +.zmdi-facebook:before { + content: '\f343'; +} +.zmdi-github-box:before { + content: '\f344'; +} +.zmdi-github:before { + content: '\f345'; +} +.zmdi-google-drive:before { + content: '\f346'; +} +.zmdi-google-earth:before { + content: '\f347'; +} +.zmdi-google-glass:before { + content: '\f348'; +} +.zmdi-google-maps:before { + content: '\f349'; +} +.zmdi-google-pages:before { + content: '\f34a'; +} +.zmdi-google-play:before { + content: '\f34b'; +} +.zmdi-google-plus-box:before { + content: '\f34c'; +} +.zmdi-google-plus:before { + content: '\f34d'; +} +.zmdi-google:before { + content: '\f34e'; +} +.zmdi-instagram:before { + content: '\f34f'; +} +.zmdi-language-css3:before { + content: '\f350'; +} +.zmdi-language-html5:before { + content: '\f351'; +} +.zmdi-language-javascript:before { + content: '\f352'; +} +.zmdi-language-python-alt:before { + content: '\f353'; +} +.zmdi-language-python:before { + content: '\f354'; +} +.zmdi-lastfm:before { + content: '\f355'; +} +.zmdi-linkedin-box:before { + content: '\f356'; +} +.zmdi-paypal:before { + content: '\f357'; +} +.zmdi-pinterest-box:before { + content: '\f358'; +} +.zmdi-pocket:before { + content: '\f359'; +} +.zmdi-polymer:before { + content: '\f35a'; +} +.zmdi-share:before { + content: '\f35b'; +} +.zmdi-stackoverflow:before { + content: '\f35c'; +} +.zmdi-steam-square:before { + content: '\f35d'; +} +.zmdi-steam:before { + content: '\f35e'; +} +.zmdi-twitter-box:before { + content: '\f35f'; +} +.zmdi-twitter:before { + content: '\f360'; +} +.zmdi-vk:before { + content: '\f361'; +} +.zmdi-wikipedia:before { + content: '\f362'; +} +.zmdi-windows:before { + content: '\f363'; +} +.zmdi-aspect-ratio-alt:before { + content: '\f364'; +} +.zmdi-aspect-ratio:before { + content: '\f365'; +} +.zmdi-blur-circular:before { + content: '\f366'; +} +.zmdi-blur-linear:before { + content: '\f367'; +} +.zmdi-blur-off:before { + content: '\f368'; +} +.zmdi-blur:before { + content: '\f369'; +} +.zmdi-brightness-2:before { + content: '\f36a'; +} +.zmdi-brightness-3:before { + content: '\f36b'; +} +.zmdi-brightness-4:before { + content: '\f36c'; +} +.zmdi-brightness-5:before { + content: '\f36d'; +} +.zmdi-brightness-6:before { + content: '\f36e'; +} +.zmdi-brightness-7:before { + content: '\f36f'; +} +.zmdi-brightness-auto:before { + content: '\f370'; +} +.zmdi-brightness-setting:before { + content: '\f371'; +} +.zmdi-broken-image:before { + content: '\f372'; +} +.zmdi-center-focus-strong:before { + content: '\f373'; +} +.zmdi-center-focus-weak:before { + content: '\f374'; +} +.zmdi-compare:before { + content: '\f375'; +} +.zmdi-crop-16-9:before { + content: '\f376'; +} +.zmdi-crop-3-2:before { + content: '\f377'; +} +.zmdi-crop-5-4:before { + content: '\f378'; +} +.zmdi-crop-7-5:before { + content: '\f379'; +} +.zmdi-crop-din:before { + content: '\f37a'; +} +.zmdi-crop-free:before { + content: '\f37b'; +} +.zmdi-crop-landscape:before { + content: '\f37c'; +} +.zmdi-crop-portrait:before { + content: '\f37d'; +} +.zmdi-crop-square:before { + content: '\f37e'; +} +.zmdi-exposure-alt:before { + content: '\f37f'; +} +.zmdi-exposure:before { + content: '\f380'; +} +.zmdi-filter-b-and-w:before { + content: '\f381'; +} +.zmdi-filter-center-focus:before { + content: '\f382'; +} +.zmdi-filter-frames:before { + content: '\f383'; +} +.zmdi-filter-tilt-shift:before { + content: '\f384'; +} +.zmdi-gradient:before { + content: '\f385'; +} +.zmdi-grain:before { + content: '\f386'; +} +.zmdi-graphic-eq:before { + content: '\f387'; +} +.zmdi-hdr-off:before { + content: '\f388'; +} +.zmdi-hdr-strong:before { + content: '\f389'; +} +.zmdi-hdr-weak:before { + content: '\f38a'; +} +.zmdi-hdr:before { + content: '\f38b'; +} +.zmdi-iridescent:before { + content: '\f38c'; +} +.zmdi-leak-off:before { + content: '\f38d'; +} +.zmdi-leak:before { + content: '\f38e'; +} +.zmdi-looks:before { + content: '\f38f'; +} +.zmdi-loupe:before { + content: '\f390'; +} +.zmdi-panorama-horizontal:before { + content: '\f391'; +} +.zmdi-panorama-vertical:before { + content: '\f392'; +} +.zmdi-panorama-wide-angle:before { + content: '\f393'; +} +.zmdi-photo-size-select-large:before { + content: '\f394'; +} +.zmdi-photo-size-select-small:before { + content: '\f395'; +} +.zmdi-picture-in-picture:before { + content: '\f396'; +} +.zmdi-slideshow:before { + content: '\f397'; +} +.zmdi-texture:before { + content: '\f398'; +} +.zmdi-tonality:before { + content: '\f399'; +} +.zmdi-vignette:before { + content: '\f39a'; +} +.zmdi-wb-auto:before { + content: '\f39b'; +} +.zmdi-eject-alt:before { + content: '\f39c'; +} +.zmdi-eject:before { + content: '\f39d'; +} +.zmdi-equalizer:before { + content: '\f39e'; +} +.zmdi-fast-forward:before { + content: '\f39f'; +} +.zmdi-fast-rewind:before { + content: '\f3a0'; +} +.zmdi-forward-10:before { + content: '\f3a1'; +} +.zmdi-forward-30:before { + content: '\f3a2'; +} +.zmdi-forward-5:before { + content: '\f3a3'; +} +.zmdi-hearing:before { + content: '\f3a4'; +} +.zmdi-pause-circle-outline:before { + content: '\f3a5'; +} +.zmdi-pause-circle:before { + content: '\f3a6'; +} +.zmdi-pause:before { + content: '\f3a7'; +} +.zmdi-play-circle-outline:before { + content: '\f3a8'; +} +.zmdi-play-circle:before { + content: '\f3a9'; +} +.zmdi-play:before { + content: '\f3aa'; +} +.zmdi-playlist-audio:before { + content: '\f3ab'; +} +.zmdi-playlist-plus:before { + content: '\f3ac'; +} +.zmdi-repeat-one:before { + content: '\f3ad'; +} +.zmdi-repeat:before { + content: '\f3ae'; +} +.zmdi-replay-10:before { + content: '\f3af'; +} +.zmdi-replay-30:before { + content: '\f3b0'; +} +.zmdi-replay-5:before { + content: '\f3b1'; +} +.zmdi-replay:before { + content: '\f3b2'; +} +.zmdi-shuffle:before { + content: '\f3b3'; +} +.zmdi-skip-next:before { + content: '\f3b4'; +} +.zmdi-skip-previous:before { + content: '\f3b5'; +} +.zmdi-stop:before { + content: '\f3b6'; +} +.zmdi-surround-sound:before { + content: '\f3b7'; +} +.zmdi-tune:before { + content: '\f3b8'; +} +.zmdi-volume-down:before { + content: '\f3b9'; +} +.zmdi-volume-mute:before { + content: '\f3ba'; +} +.zmdi-volume-off:before { + content: '\f3bb'; +} +.zmdi-volume-up:before { + content: '\f3bc'; +} +.zmdi-n-1-square:before { + content: '\f3bd'; +} +.zmdi-n-2-square:before { + content: '\f3be'; +} +.zmdi-n-3-square:before { + content: '\f3bf'; +} +.zmdi-n-4-square:before { + content: '\f3c0'; +} +.zmdi-n-5-square:before { + content: '\f3c1'; +} +.zmdi-n-6-square:before { + content: '\f3c2'; +} +.zmdi-neg-1:before { + content: '\f3c3'; +} +.zmdi-neg-2:before { + content: '\f3c4'; +} +.zmdi-plus-1:before { + content: '\f3c5'; +} +.zmdi-plus-2:before { + content: '\f3c6'; +} +.zmdi-sec-10:before { + content: '\f3c7'; +} +.zmdi-sec-3:before { + content: '\f3c8'; +} +.zmdi-zero:before { + content: '\f3c9'; +} +.zmdi-airline-seat-flat-angled:before { + content: '\f3ca'; +} +.zmdi-airline-seat-flat:before { + content: '\f3cb'; +} +.zmdi-airline-seat-individual-suite:before { + content: '\f3cc'; +} +.zmdi-airline-seat-legroom-extra:before { + content: '\f3cd'; +} +.zmdi-airline-seat-legroom-normal:before { + content: '\f3ce'; +} +.zmdi-airline-seat-legroom-reduced:before { + content: '\f3cf'; +} +.zmdi-airline-seat-recline-extra:before { + content: '\f3d0'; +} +.zmdi-airline-seat-recline-normal:before { + content: '\f3d1'; +} +.zmdi-airplay:before { + content: '\f3d2'; +} +.zmdi-closed-caption:before { + content: '\f3d3'; +} +.zmdi-confirmation-number:before { + content: '\f3d4'; +} +.zmdi-developer-board:before { + content: '\f3d5'; +} +.zmdi-disc-full:before { + content: '\f3d6'; +} +.zmdi-explicit:before { + content: '\f3d7'; +} +.zmdi-flight-land:before { + content: '\f3d8'; +} +.zmdi-flight-takeoff:before { + content: '\f3d9'; +} +.zmdi-flip-to-back:before { + content: '\f3da'; +} +.zmdi-flip-to-front:before { + content: '\f3db'; +} +.zmdi-group-work:before { + content: '\f3dc'; +} +.zmdi-hd:before { + content: '\f3dd'; +} +.zmdi-hq:before { + content: '\f3de'; +} +.zmdi-markunread-mailbox:before { + content: '\f3df'; +} +.zmdi-memory:before { + content: '\f3e0'; +} +.zmdi-nfc:before { + content: '\f3e1'; +} +.zmdi-play-for-work:before { + content: '\f3e2'; +} +.zmdi-power-input:before { + content: '\f3e3'; +} +.zmdi-present-to-all:before { + content: '\f3e4'; +} +.zmdi-satellite:before { + content: '\f3e5'; +} +.zmdi-tap-and-play:before { + content: '\f3e6'; +} +.zmdi-vibration:before { + content: '\f3e7'; +} +.zmdi-voicemail:before { + content: '\f3e8'; +} +.zmdi-group:before { + content: '\f3e9'; +} +.zmdi-rss:before { + content: '\f3ea'; +} +.zmdi-shape:before { + content: '\f3eb'; +} +.zmdi-spinner:before { + content: '\f3ec'; +} +.zmdi-ungroup:before { + content: '\f3ed'; +} +.zmdi-500px:before { + content: '\f3ee'; +} +.zmdi-8tracks:before { + content: '\f3ef'; +} +.zmdi-amazon:before { + content: '\f3f0'; +} +.zmdi-blogger:before { + content: '\f3f1'; +} +.zmdi-delicious:before { + content: '\f3f2'; +} +.zmdi-disqus:before { + content: '\f3f3'; +} +.zmdi-flattr:before { + content: '\f3f4'; +} +.zmdi-flickr:before { + content: '\f3f5'; +} +.zmdi-github-alt:before { + content: '\f3f6'; +} +.zmdi-google-old:before { + content: '\f3f7'; +} +.zmdi-linkedin:before { + content: '\f3f8'; +} +.zmdi-odnoklassniki:before { + content: '\f3f9'; +} +.zmdi-outlook:before { + content: '\f3fa'; +} +.zmdi-paypal-alt:before { + content: '\f3fb'; +} +.zmdi-pinterest:before { + content: '\f3fc'; +} +.zmdi-playstation:before { + content: '\f3fd'; +} +.zmdi-reddit:before { + content: '\f3fe'; +} +.zmdi-skype:before { + content: '\f3ff'; +} +.zmdi-slideshare:before { + content: '\f400'; +} +.zmdi-soundcloud:before { + content: '\f401'; +} +.zmdi-tumblr:before { + content: '\f402'; +} +.zmdi-twitch:before { + content: '\f403'; +} +.zmdi-vimeo:before { + content: '\f404'; +} +.zmdi-whatsapp:before { + content: '\f405'; +} +.zmdi-xbox:before { + content: '\f406'; +} +.zmdi-yahoo:before { + content: '\f407'; +} +.zmdi-youtube-play:before { + content: '\f408'; +} +.zmdi-youtube:before { + content: '\f409'; +} +.zmdi-3d-rotation:before { + content: '\f101'; +} +.zmdi-airplane-off:before { + content: '\f102'; +} +.zmdi-airplane:before { + content: '\f103'; +} +.zmdi-album:before { + content: '\f104'; +} +.zmdi-archive:before { + content: '\f105'; +} +.zmdi-assignment-account:before { + content: '\f106'; +} +.zmdi-assignment-alert:before { + content: '\f107'; +} +.zmdi-assignment-check:before { + content: '\f108'; +} +.zmdi-assignment-o:before { + content: '\f109'; +} +.zmdi-assignment-return:before { + content: '\f10a'; +} +.zmdi-assignment-returned:before { + content: '\f10b'; +} +.zmdi-assignment:before { + content: '\f10c'; +} +.zmdi-attachment-alt:before { + content: '\f10d'; +} +.zmdi-attachment:before { + content: '\f10e'; +} +.zmdi-audio:before { + content: '\f10f'; +} +.zmdi-badge-check:before { + content: '\f110'; +} +.zmdi-balance-wallet:before { + content: '\f111'; +} +.zmdi-balance:before { + content: '\f112'; +} +.zmdi-battery-alert:before { + content: '\f113'; +} +.zmdi-battery-flash:before { + content: '\f114'; +} +.zmdi-battery-unknown:before { + content: '\f115'; +} +.zmdi-battery:before { + content: '\f116'; +} +.zmdi-bike:before { + content: '\f117'; +} +.zmdi-block-alt:before { + content: '\f118'; +} +.zmdi-block:before { + content: '\f119'; +} +.zmdi-boat:before { + content: '\f11a'; +} +.zmdi-book-image:before { + content: '\f11b'; +} +.zmdi-book:before { + content: '\f11c'; +} +.zmdi-bookmark-outline:before { + content: '\f11d'; +} +.zmdi-bookmark:before { + content: '\f11e'; +} +.zmdi-brush:before { + content: '\f11f'; +} +.zmdi-bug:before { + content: '\f120'; +} +.zmdi-bus:before { + content: '\f121'; +} +.zmdi-cake:before { + content: '\f122'; +} +.zmdi-car-taxi:before { + content: '\f123'; +} +.zmdi-car-wash:before { + content: '\f124'; +} +.zmdi-car:before { + content: '\f125'; +} +.zmdi-card-giftcard:before { + content: '\f126'; +} +.zmdi-card-membership:before { + content: '\f127'; +} +.zmdi-card-travel:before { + content: '\f128'; +} +.zmdi-card:before { + content: '\f129'; +} +.zmdi-case-check:before { + content: '\f12a'; +} +.zmdi-case-download:before { + content: '\f12b'; +} +.zmdi-case-play:before { + content: '\f12c'; +} +.zmdi-case:before { + content: '\f12d'; +} +.zmdi-cast-connected:before { + content: '\f12e'; +} +.zmdi-cast:before { + content: '\f12f'; +} +.zmdi-chart-donut:before { + content: '\f130'; +} +.zmdi-chart:before { + content: '\f131'; +} +.zmdi-city-alt:before { + content: '\f132'; +} +.zmdi-city:before { + content: '\f133'; +} +.zmdi-close-circle-o:before { + content: '\f134'; +} +.zmdi-close-circle:before { + content: '\f135'; +} +.zmdi-close:before { + content: '\f136'; +} +.zmdi-cocktail:before { + content: '\f137'; +} +.zmdi-code-setting:before { + content: '\f138'; +} +.zmdi-code-smartphone:before { + content: '\f139'; +} +.zmdi-code:before { + content: '\f13a'; +} +.zmdi-coffee:before { + content: '\f13b'; +} +.zmdi-collection-bookmark:before { + content: '\f13c'; +} +.zmdi-collection-case-play:before { + content: '\f13d'; +} +.zmdi-collection-folder-image:before { + content: '\f13e'; +} +.zmdi-collection-image-o:before { + content: '\f13f'; +} +.zmdi-collection-image:before { + content: '\f140'; +} +.zmdi-collection-item-1:before { + content: '\f141'; +} +.zmdi-collection-item-2:before { + content: '\f142'; +} +.zmdi-collection-item-3:before { + content: '\f143'; +} +.zmdi-collection-item-4:before { + content: '\f144'; +} +.zmdi-collection-item-5:before { + content: '\f145'; +} +.zmdi-collection-item-6:before { + content: '\f146'; +} +.zmdi-collection-item-7:before { + content: '\f147'; +} +.zmdi-collection-item-8:before { + content: '\f148'; +} +.zmdi-collection-item-9-plus:before { + content: '\f149'; +} +.zmdi-collection-item-9:before { + content: '\f14a'; +} +.zmdi-collection-item:before { + content: '\f14b'; +} +.zmdi-collection-music:before { + content: '\f14c'; +} +.zmdi-collection-pdf:before { + content: '\f14d'; +} +.zmdi-collection-plus:before { + content: '\f14e'; +} +.zmdi-collection-speaker:before { + content: '\f14f'; +} +.zmdi-collection-text:before { + content: '\f150'; +} +.zmdi-collection-video:before { + content: '\f151'; +} +.zmdi-compass:before { + content: '\f152'; +} +.zmdi-cutlery:before { + content: '\f153'; +} +.zmdi-delete:before { + content: '\f154'; +} +.zmdi-dialpad:before { + content: '\f155'; +} +.zmdi-dns:before { + content: '\f156'; +} +.zmdi-drink:before { + content: '\f157'; +} +.zmdi-edit:before { + content: '\f158'; +} +.zmdi-email-open:before { + content: '\f159'; +} +.zmdi-email:before { + content: '\f15a'; +} +.zmdi-eye-off:before { + content: '\f15b'; +} +.zmdi-eye:before { + content: '\f15c'; +} +.zmdi-eyedropper:before { + content: '\f15d'; +} +.zmdi-favorite-outline:before { + content: '\f15e'; +} +.zmdi-favorite:before { + content: '\f15f'; +} +.zmdi-filter-list:before { + content: '\f160'; +} +.zmdi-fire:before { + content: '\f161'; +} +.zmdi-flag:before { + content: '\f162'; +} +.zmdi-flare:before { + content: '\f163'; +} +.zmdi-flash-auto:before { + content: '\f164'; +} +.zmdi-flash-off:before { + content: '\f165'; +} +.zmdi-flash:before { + content: '\f166'; +} +.zmdi-flip:before { + content: '\f167'; +} +.zmdi-flower-alt:before { + content: '\f168'; +} +.zmdi-flower:before { + content: '\f169'; +} +.zmdi-font:before { + content: '\f16a'; +} +.zmdi-fullscreen-alt:before { + content: '\f16b'; +} +.zmdi-fullscreen-exit:before { + content: '\f16c'; +} +.zmdi-fullscreen:before { + content: '\f16d'; +} +.zmdi-functions:before { + content: '\f16e'; +} +.zmdi-gas-station:before { + content: '\f16f'; +} +.zmdi-gesture:before { + content: '\f170'; +} +.zmdi-globe-alt:before { + content: '\f171'; +} +.zmdi-globe-lock:before { + content: '\f172'; +} +.zmdi-globe:before { + content: '\f173'; +} +.zmdi-graduation-cap:before { + content: '\f174'; +} +.zmdi-home:before { + content: '\f175'; +} +.zmdi-hospital-alt:before { + content: '\f176'; +} +.zmdi-hospital:before { + content: '\f177'; +} +.zmdi-hotel:before { + content: '\f178'; +} +.zmdi-hourglass-alt:before { + content: '\f179'; +} +.zmdi-hourglass-outline:before { + content: '\f17a'; +} +.zmdi-hourglass:before { + content: '\f17b'; +} +.zmdi-http:before { + content: '\f17c'; +} +.zmdi-image-alt:before { + content: '\f17d'; +} +.zmdi-image-o:before { + content: '\f17e'; +} +.zmdi-image:before { + content: '\f17f'; +} +.zmdi-inbox:before { + content: '\f180'; +} +.zmdi-invert-colors-off:before { + content: '\f181'; +} +.zmdi-invert-colors:before { + content: '\f182'; +} +.zmdi-key:before { + content: '\f183'; +} +.zmdi-label-alt-outline:before { + content: '\f184'; +} +.zmdi-label-alt:before { + content: '\f185'; +} +.zmdi-label-heart:before { + content: '\f186'; +} +.zmdi-label:before { + content: '\f187'; +} +.zmdi-labels:before { + content: '\f188'; +} +.zmdi-lamp:before { + content: '\f189'; +} +.zmdi-landscape:before { + content: '\f18a'; +} +.zmdi-layers-off:before { + content: '\f18b'; +} +.zmdi-layers:before { + content: '\f18c'; +} +.zmdi-library:before { + content: '\f18d'; +} +.zmdi-link:before { + content: '\f18e'; +} +.zmdi-lock-open:before { + content: '\f18f'; +} +.zmdi-lock-outline:before { + content: '\f190'; +} +.zmdi-lock:before { + content: '\f191'; +} +.zmdi-mail-reply-all:before { + content: '\f192'; +} +.zmdi-mail-reply:before { + content: '\f193'; +} +.zmdi-mail-send:before { + content: '\f194'; +} +.zmdi-mall:before { + content: '\f195'; +} +.zmdi-map:before { + content: '\f196'; +} +.zmdi-menu:before { + content: '\f197'; +} +.zmdi-money-box:before { + content: '\f198'; +} +.zmdi-money-off:before { + content: '\f199'; +} +.zmdi-money:before { + content: '\f19a'; +} +.zmdi-more-vert:before { + content: '\f19b'; +} +.zmdi-more:before { + content: '\f19c'; +} +.zmdi-movie-alt:before { + content: '\f19d'; +} +.zmdi-movie:before { + content: '\f19e'; +} +.zmdi-nature-people:before { + content: '\f19f'; +} +.zmdi-nature:before { + content: '\f1a0'; +} +.zmdi-navigation:before { + content: '\f1a1'; +} +.zmdi-open-in-browser:before { + content: '\f1a2'; +} +.zmdi-open-in-new:before { + content: '\f1a3'; +} +.zmdi-palette:before { + content: '\f1a4'; +} +.zmdi-parking:before { + content: '\f1a5'; +} +.zmdi-pin-account:before { + content: '\f1a6'; +} +.zmdi-pin-assistant:before { + content: '\f1a7'; +} +.zmdi-pin-drop:before { + content: '\f1a8'; +} +.zmdi-pin-help:before { + content: '\f1a9'; +} +.zmdi-pin-off:before { + content: '\f1aa'; +} +.zmdi-pin:before { + content: '\f1ab'; +} +.zmdi-pizza:before { + content: '\f1ac'; +} +.zmdi-plaster:before { + content: '\f1ad'; +} +.zmdi-power-setting:before { + content: '\f1ae'; +} +.zmdi-power:before { + content: '\f1af'; +} +.zmdi-print:before { + content: '\f1b0'; +} +.zmdi-puzzle-piece:before { + content: '\f1b1'; +} +.zmdi-quote:before { + content: '\f1b2'; +} +.zmdi-railway:before { + content: '\f1b3'; +} +.zmdi-receipt:before { + content: '\f1b4'; +} +.zmdi-refresh-alt:before { + content: '\f1b5'; +} +.zmdi-refresh-sync-alert:before { + content: '\f1b6'; +} +.zmdi-refresh-sync-off:before { + content: '\f1b7'; +} +.zmdi-refresh-sync:before { + content: '\f1b8'; +} +.zmdi-refresh:before { + content: '\f1b9'; +} +.zmdi-roller:before { + content: '\f1ba'; +} +.zmdi-ruler:before { + content: '\f1bb'; +} +.zmdi-scissors:before { + content: '\f1bc'; +} +.zmdi-screen-rotation-lock:before { + content: '\f1bd'; +} +.zmdi-screen-rotation:before { + content: '\f1be'; +} +.zmdi-search-for:before { + content: '\f1bf'; +} +.zmdi-search-in-file:before { + content: '\f1c0'; +} +.zmdi-search-in-page:before { + content: '\f1c1'; +} +.zmdi-search-replace:before { + content: '\f1c2'; +} +.zmdi-search:before { + content: '\f1c3'; +} +.zmdi-seat:before { + content: '\f1c4'; +} +.zmdi-settings-square:before { + content: '\f1c5'; +} +.zmdi-settings:before { + content: '\f1c6'; +} +.zmdi-shield-check:before { + content: '\f1c7'; +} +.zmdi-shield-security:before { + content: '\f1c8'; +} +.zmdi-shopping-basket:before { + content: '\f1c9'; +} +.zmdi-shopping-cart-plus:before { + content: '\f1ca'; +} +.zmdi-shopping-cart:before { + content: '\f1cb'; +} +.zmdi-sign-in:before { + content: '\f1cc'; +} +.zmdi-sort-amount-asc:before { + content: '\f1cd'; +} +.zmdi-sort-amount-desc:before { + content: '\f1ce'; +} +.zmdi-sort-asc:before { + content: '\f1cf'; +} +.zmdi-sort-desc:before { + content: '\f1d0'; +} +.zmdi-spellcheck:before { + content: '\f1d1'; +} +.zmdi-storage:before { + content: '\f1d2'; +} +.zmdi-store-24:before { + content: '\f1d3'; +} +.zmdi-store:before { + content: '\f1d4'; +} +.zmdi-subway:before { + content: '\f1d5'; +} +.zmdi-sun:before { + content: '\f1d6'; +} +.zmdi-tab-unselected:before { + content: '\f1d7'; +} +.zmdi-tab:before { + content: '\f1d8'; +} +.zmdi-tag-close:before { + content: '\f1d9'; +} +.zmdi-tag-more:before { + content: '\f1da'; +} +.zmdi-tag:before { + content: '\f1db'; +} +.zmdi-thumb-down:before { + content: '\f1dc'; +} +.zmdi-thumb-up-down:before { + content: '\f1dd'; +} +.zmdi-thumb-up:before { + content: '\f1de'; +} +.zmdi-ticket-star:before { + content: '\f1df'; +} +.zmdi-toll:before { + content: '\f1e0'; +} +.zmdi-toys:before { + content: '\f1e1'; +} +.zmdi-traffic:before { + content: '\f1e2'; +} +.zmdi-translate:before { + content: '\f1e3'; +} +.zmdi-triangle-down:before { + content: '\f1e4'; +} +.zmdi-triangle-up:before { + content: '\f1e5'; +} +.zmdi-truck:before { + content: '\f1e6'; +} +.zmdi-turning-sign:before { + content: '\f1e7'; +} +.zmdi-wallpaper:before { + content: '\f1e8'; +} +.zmdi-washing-machine:before { + content: '\f1e9'; +} +.zmdi-window-maximize:before { + content: '\f1ea'; +} +.zmdi-window-minimize:before { + content: '\f1eb'; +} +.zmdi-window-restore:before { + content: '\f1ec'; +} +.zmdi-wrench:before { + content: '\f1ed'; +} +.zmdi-zoom-in:before { + content: '\f1ee'; +} +.zmdi-zoom-out:before { + content: '\f1ef'; +} +.zmdi-alert-circle-o:before { + content: '\f1f0'; +} +.zmdi-alert-circle:before { + content: '\f1f1'; +} +.zmdi-alert-octagon:before { + content: '\f1f2'; +} +.zmdi-alert-polygon:before { + content: '\f1f3'; +} +.zmdi-alert-triangle:before { + content: '\f1f4'; +} +.zmdi-help-outline:before { + content: '\f1f5'; +} +.zmdi-help:before { + content: '\f1f6'; +} +.zmdi-info-outline:before { + content: '\f1f7'; +} +.zmdi-info:before { + content: '\f1f8'; +} +.zmdi-notifications-active:before { + content: '\f1f9'; +} +.zmdi-notifications-add:before { + content: '\f1fa'; +} +.zmdi-notifications-none:before { + content: '\f1fb'; +} +.zmdi-notifications-off:before { + content: '\f1fc'; +} +.zmdi-notifications-paused:before { + content: '\f1fd'; +} +.zmdi-notifications:before { + content: '\f1fe'; +} +.zmdi-account-add:before { + content: '\f1ff'; +} +.zmdi-account-box-mail:before { + content: '\f200'; +} +.zmdi-account-box-o:before { + content: '\f201'; +} +.zmdi-account-box-phone:before { + content: '\f202'; +} +.zmdi-account-box:before { + content: '\f203'; +} +.zmdi-account-calendar:before { + content: '\f204'; +} +.zmdi-account-circle:before { + content: '\f205'; +} +.zmdi-account-o:before { + content: '\f206'; +} +.zmdi-account:before { + content: '\f207'; +} +.zmdi-accounts-add:before { + content: '\f208'; +} +.zmdi-accounts-alt:before { + content: '\f209'; +} +.zmdi-accounts-list-alt:before { + content: '\f20a'; +} +.zmdi-accounts-list:before { + content: '\f20b'; +} +.zmdi-accounts-outline:before { + content: '\f20c'; +} +.zmdi-accounts:before { + content: '\f20d'; +} +.zmdi-face:before { + content: '\f20e'; +} +.zmdi-female:before { + content: '\f20f'; +} +.zmdi-male-alt:before { + content: '\f210'; +} +.zmdi-male-female:before { + content: '\f211'; +} +.zmdi-male:before { + content: '\f212'; +} +.zmdi-mood-bad:before { + content: '\f213'; +} +.zmdi-mood:before { + content: '\f214'; +} +.zmdi-run:before { + content: '\f215'; +} +.zmdi-walk:before { + content: '\f216'; +} +.zmdi-cloud-box:before { + content: '\f217'; +} +.zmdi-cloud-circle:before { + content: '\f218'; +} +.zmdi-cloud-done:before { + content: '\f219'; +} +.zmdi-cloud-download:before { + content: '\f21a'; +} +.zmdi-cloud-off:before { + content: '\f21b'; +} +.zmdi-cloud-outline-alt:before { + content: '\f21c'; +} +.zmdi-cloud-outline:before { + content: '\f21d'; +} +.zmdi-cloud-upload:before { + content: '\f21e'; +} +.zmdi-cloud:before { + content: '\f21f'; +} +.zmdi-download:before { + content: '\f220'; +} +.zmdi-file-plus:before { + content: '\f221'; +} +.zmdi-file-text:before { + content: '\f222'; +} +.zmdi-file:before { + content: '\f223'; +} +.zmdi-folder-outline:before { + content: '\f224'; +} +.zmdi-folder-person:before { + content: '\f225'; +} +.zmdi-folder-star-alt:before { + content: '\f226'; +} +.zmdi-folder-star:before { + content: '\f227'; +} +.zmdi-folder:before { + content: '\f228'; +} +.zmdi-gif:before { + content: '\f229'; +} +.zmdi-upload:before { + content: '\f22a'; +} +.zmdi-border-all:before { + content: '\f22b'; +} +.zmdi-border-bottom:before { + content: '\f22c'; +} +.zmdi-border-clear:before { + content: '\f22d'; +} +.zmdi-border-color:before { + content: '\f22e'; +} +.zmdi-border-horizontal:before { + content: '\f22f'; +} +.zmdi-border-inner:before { + content: '\f230'; +} +.zmdi-border-left:before { + content: '\f231'; +} +.zmdi-border-outer:before { + content: '\f232'; +} +.zmdi-border-right:before { + content: '\f233'; +} +.zmdi-border-style:before { + content: '\f234'; +} +.zmdi-border-top:before { + content: '\f235'; +} +.zmdi-border-vertical:before { + content: '\f236'; +} +.zmdi-copy:before { + content: '\f237'; +} +.zmdi-crop:before { + content: '\f238'; +} +.zmdi-format-align-center:before { + content: '\f239'; +} +.zmdi-format-align-justify:before { + content: '\f23a'; +} +.zmdi-format-align-left:before { + content: '\f23b'; +} +.zmdi-format-align-right:before { + content: '\f23c'; +} +.zmdi-format-bold:before { + content: '\f23d'; +} +.zmdi-format-clear-all:before { + content: '\f23e'; +} +.zmdi-format-clear:before { + content: '\f23f'; +} +.zmdi-format-color-fill:before { + content: '\f240'; +} +.zmdi-format-color-reset:before { + content: '\f241'; +} +.zmdi-format-color-text:before { + content: '\f242'; +} +.zmdi-format-indent-decrease:before { + content: '\f243'; +} +.zmdi-format-indent-increase:before { + content: '\f244'; +} +.zmdi-format-italic:before { + content: '\f245'; +} +.zmdi-format-line-spacing:before { + content: '\f246'; +} +.zmdi-format-list-bulleted:before { + content: '\f247'; +} +.zmdi-format-list-numbered:before { + content: '\f248'; +} +.zmdi-format-ltr:before { + content: '\f249'; +} +.zmdi-format-rtl:before { + content: '\f24a'; +} +.zmdi-format-size:before { + content: '\f24b'; +} +.zmdi-format-strikethrough-s:before { + content: '\f24c'; +} +.zmdi-format-strikethrough:before { + content: '\f24d'; +} +.zmdi-format-subject:before { + content: '\f24e'; +} +.zmdi-format-underlined:before { + content: '\f24f'; +} +.zmdi-format-valign-bottom:before { + content: '\f250'; +} +.zmdi-format-valign-center:before { + content: '\f251'; +} +.zmdi-format-valign-top:before { + content: '\f252'; +} +.zmdi-redo:before { + content: '\f253'; +} +.zmdi-select-all:before { + content: '\f254'; +} +.zmdi-space-bar:before { + content: '\f255'; +} +.zmdi-text-format:before { + content: '\f256'; +} +.zmdi-transform:before { + content: '\f257'; +} +.zmdi-undo:before { + content: '\f258'; +} +.zmdi-wrap-text:before { + content: '\f259'; +} +.zmdi-comment-alert:before { + content: '\f25a'; +} +.zmdi-comment-alt-text:before { + content: '\f25b'; +} +.zmdi-comment-alt:before { + content: '\f25c'; +} +.zmdi-comment-edit:before { + content: '\f25d'; +} +.zmdi-comment-image:before { + content: '\f25e'; +} +.zmdi-comment-list:before { + content: '\f25f'; +} +.zmdi-comment-more:before { + content: '\f260'; +} +.zmdi-comment-outline:before { + content: '\f261'; +} +.zmdi-comment-text-alt:before { + content: '\f262'; +} +.zmdi-comment-text:before { + content: '\f263'; +} +.zmdi-comment-video:before { + content: '\f264'; +} +.zmdi-comment:before { + content: '\f265'; +} +.zmdi-comments:before { + content: '\f266'; +} +.zmdi-check-all:before { + content: '\f267'; +} +.zmdi-check-circle-u:before { + content: '\f268'; +} +.zmdi-check-circle:before { + content: '\f269'; +} +.zmdi-check-square:before { + content: '\f26a'; +} +.zmdi-check:before { + content: '\f26b'; +} +.zmdi-circle-o:before { + content: '\f26c'; +} +.zmdi-circle:before { + content: '\f26d'; +} +.zmdi-dot-circle-alt:before { + content: '\f26e'; +} +.zmdi-dot-circle:before { + content: '\f26f'; +} +.zmdi-minus-circle-outline:before { + content: '\f270'; +} +.zmdi-minus-circle:before { + content: '\f271'; +} +.zmdi-minus-square:before { + content: '\f272'; +} +.zmdi-minus:before { + content: '\f273'; +} +.zmdi-plus-circle-o-duplicate:before { + content: '\f274'; +} +.zmdi-plus-circle-o:before { + content: '\f275'; +} +.zmdi-plus-circle:before { + content: '\f276'; +} +.zmdi-plus-square:before { + content: '\f277'; +} +.zmdi-plus:before { + content: '\f278'; +} +.zmdi-square-o:before { + content: '\f279'; +} +.zmdi-star-circle:before { + content: '\f27a'; +} +.zmdi-star-half:before { + content: '\f27b'; +} +.zmdi-star-outline:before { + content: '\f27c'; +} +.zmdi-star:before { + content: '\f27d'; +} +.zmdi-bluetooth-connected:before { + content: '\f27e'; +} +.zmdi-bluetooth-off:before { + content: '\f27f'; +} +.zmdi-bluetooth-search:before { + content: '\f280'; +} +.zmdi-bluetooth-setting:before { + content: '\f281'; +} +.zmdi-bluetooth:before { + content: '\f282'; +} +.zmdi-camera-add:before { + content: '\f283'; +} +.zmdi-camera-alt:before { + content: '\f284'; +} +.zmdi-camera-bw:before { + content: '\f285'; +} +.zmdi-camera-front:before { + content: '\f286'; +} +.zmdi-camera-mic:before { + content: '\f287'; +} +.zmdi-camera-party-mode:before { + content: '\f288'; +} +.zmdi-camera-rear:before { + content: '\f289'; +} +.zmdi-camera-roll:before { + content: '\f28a'; +} +.zmdi-camera-switch:before { + content: '\f28b'; +} +.zmdi-camera:before { + content: '\f28c'; +} +.zmdi-card-alert:before { + content: '\f28d'; +} +.zmdi-card-off:before { + content: '\f28e'; +} +.zmdi-card-sd:before { + content: '\f28f'; +} +.zmdi-card-sim:before { + content: '\f290'; +} +.zmdi-desktop-mac:before { + content: '\f291'; +} +.zmdi-desktop-windows:before { + content: '\f292'; +} +.zmdi-device-hub:before { + content: '\f293'; +} +.zmdi-devices-off:before { + content: '\f294'; +} +.zmdi-devices:before { + content: '\f295'; +} +.zmdi-dock:before { + content: '\f296'; +} +.zmdi-floppy:before { + content: '\f297'; +} +.zmdi-gamepad:before { + content: '\f298'; +} +.zmdi-gps-dot:before { + content: '\f299'; +} +.zmdi-gps-off:before { + content: '\f29a'; +} +.zmdi-gps:before { + content: '\f29b'; +} +.zmdi-headset-mic:before { + content: '\f29c'; +} +.zmdi-headset:before { + content: '\f29d'; +} +.zmdi-input-antenna:before { + content: '\f29e'; +} +.zmdi-input-composite:before { + content: '\f29f'; +} +.zmdi-input-hdmi:before { + content: '\f2a0'; +} +.zmdi-input-power:before { + content: '\f2a1'; +} +.zmdi-input-svideo:before { + content: '\f2a2'; +} +.zmdi-keyboard-hide:before { + content: '\f2a3'; +} +.zmdi-keyboard:before { + content: '\f2a4'; +} +.zmdi-laptop-chromebook:before { + content: '\f2a5'; +} +.zmdi-laptop-mac:before { + content: '\f2a6'; +} +.zmdi-laptop:before { + content: '\f2a7'; +} +.zmdi-mic-off:before { + content: '\f2a8'; +} +.zmdi-mic-outline:before { + content: '\f2a9'; +} +.zmdi-mic-setting:before { + content: '\f2aa'; +} +.zmdi-mic:before { + content: '\f2ab'; +} +.zmdi-mouse:before { + content: '\f2ac'; +} +.zmdi-network-alert:before { + content: '\f2ad'; +} +.zmdi-network-locked:before { + content: '\f2ae'; +} +.zmdi-network-off:before { + content: '\f2af'; +} +.zmdi-network-outline:before { + content: '\f2b0'; +} +.zmdi-network-setting:before { + content: '\f2b1'; +} +.zmdi-network:before { + content: '\f2b2'; +} +.zmdi-phone-bluetooth:before { + content: '\f2b3'; +} +.zmdi-phone-end:before { + content: '\f2b4'; +} +.zmdi-phone-forwarded:before { + content: '\f2b5'; +} +.zmdi-phone-in-talk:before { + content: '\f2b6'; +} +.zmdi-phone-locked:before { + content: '\f2b7'; +} +.zmdi-phone-missed:before { + content: '\f2b8'; +} +.zmdi-phone-msg:before { + content: '\f2b9'; +} +.zmdi-phone-paused:before { + content: '\f2ba'; +} +.zmdi-phone-ring:before { + content: '\f2bb'; +} +.zmdi-phone-setting:before { + content: '\f2bc'; +} +.zmdi-phone-sip:before { + content: '\f2bd'; +} +.zmdi-phone:before { + content: '\f2be'; +} +.zmdi-portable-wifi-changes:before { + content: '\f2bf'; +} +.zmdi-portable-wifi-off:before { + content: '\f2c0'; +} +.zmdi-portable-wifi:before { + content: '\f2c1'; +} +.zmdi-radio:before { + content: '\f2c2'; +} +.zmdi-reader:before { + content: '\f2c3'; +} +.zmdi-remote-control-alt:before { + content: '\f2c4'; +} +.zmdi-remote-control:before { + content: '\f2c5'; +} +.zmdi-router:before { + content: '\f2c6'; +} +.zmdi-scanner:before { + content: '\f2c7'; +} +.zmdi-smartphone-android:before { + content: '\f2c8'; +} +.zmdi-smartphone-download:before { + content: '\f2c9'; +} +.zmdi-smartphone-erase:before { + content: '\f2ca'; +} +.zmdi-smartphone-info:before { + content: '\f2cb'; +} +.zmdi-smartphone-iphone:before { + content: '\f2cc'; +} +.zmdi-smartphone-landscape-lock:before { + content: '\f2cd'; +} +.zmdi-smartphone-landscape:before { + content: '\f2ce'; +} +.zmdi-smartphone-lock:before { + content: '\f2cf'; +} +.zmdi-smartphone-portrait-lock:before { + content: '\f2d0'; +} +.zmdi-smartphone-ring:before { + content: '\f2d1'; +} +.zmdi-smartphone-setting:before { + content: '\f2d2'; +} +.zmdi-smartphone-setup:before { + content: '\f2d3'; +} +.zmdi-smartphone:before { + content: '\f2d4'; +} +.zmdi-speaker:before { + content: '\f2d5'; +} +.zmdi-tablet-android:before { + content: '\f2d6'; +} +.zmdi-tablet-mac:before { + content: '\f2d7'; +} +.zmdi-tablet:before { + content: '\f2d8'; +} +.zmdi-tv-alt-play:before { + content: '\f2d9'; +} +.zmdi-tv-list:before { + content: '\f2da'; +} +.zmdi-tv-play:before { + content: '\f2db'; +} +.zmdi-tv:before { + content: '\f2dc'; +} +.zmdi-usb:before { + content: '\f2dd'; +} +.zmdi-videocam-off:before { + content: '\f2de'; +} +.zmdi-videocam-switch:before { + content: '\f2df'; +} +.zmdi-videocam:before { + content: '\f2e0'; +} +.zmdi-watch:before { + content: '\f2e1'; +} +.zmdi-wifi-alt-2:before { + content: '\f2e2'; +} +.zmdi-wifi-alt:before { + content: '\f2e3'; +} +.zmdi-wifi-info:before { + content: '\f2e4'; +} +.zmdi-wifi-lock:before { + content: '\f2e5'; +} +.zmdi-wifi-off:before { + content: '\f2e6'; +} +.zmdi-wifi-outline:before { + content: '\f2e7'; +} +.zmdi-wifi:before { + content: '\f2e8'; +} +.zmdi-arrow-left-bottom:before { + content: '\f2e9'; +} +.zmdi-arrow-left:before { + content: '\f2ea'; +} +.zmdi-arrow-merge:before { + content: '\f2eb'; +} +.zmdi-arrow-missed:before { + content: '\f2ec'; +} +.zmdi-arrow-right-top:before { + content: '\f2ed'; +} +.zmdi-arrow-right:before { + content: '\f2ee'; +} +.zmdi-arrow-split:before { + content: '\f2ef'; +} +.zmdi-arrows:before { + content: '\f2f0'; +} +.zmdi-caret-down-circle:before { + content: '\f2f1'; +} +.zmdi-caret-down:before { + content: '\f2f2'; +} +.zmdi-caret-left-circle:before { + content: '\f2f3'; +} +.zmdi-caret-left:before { + content: '\f2f4'; +} +.zmdi-caret-right-circle:before { + content: '\f2f5'; +} +.zmdi-caret-right:before { + content: '\f2f6'; +} +.zmdi-caret-up-circle:before { + content: '\f2f7'; +} +.zmdi-caret-up:before { + content: '\f2f8'; +} +.zmdi-chevron-down:before { + content: '\f2f9'; +} +.zmdi-chevron-left:before { + content: '\f2fa'; +} +.zmdi-chevron-right:before { + content: '\f2fb'; +} +.zmdi-chevron-up:before { + content: '\f2fc'; +} +.zmdi-forward:before { + content: '\f2fd'; +} +.zmdi-long-arrow-down:before { + content: '\f2fe'; +} +.zmdi-long-arrow-left:before { + content: '\f2ff'; +} +.zmdi-long-arrow-return:before { + content: '\f300'; +} +.zmdi-long-arrow-right:before { + content: '\f301'; +} +.zmdi-long-arrow-tab:before { + content: '\f302'; +} +.zmdi-long-arrow-up:before { + content: '\f303'; +} +.zmdi-rotate-ccw:before { + content: '\f304'; +} +.zmdi-rotate-cw:before { + content: '\f305'; +} +.zmdi-rotate-left:before { + content: '\f306'; +} +.zmdi-rotate-right:before { + content: '\f307'; +} +.zmdi-square-down:before { + content: '\f308'; +} +.zmdi-square-right:before { + content: '\f309'; +} +.zmdi-swap-alt:before { + content: '\f30a'; +} +.zmdi-swap-vertical-circle:before { + content: '\f30b'; +} +.zmdi-swap-vertical:before { + content: '\f30c'; +} +.zmdi-swap:before { + content: '\f30d'; +} +.zmdi-trending-down:before { + content: '\f30e'; +} +.zmdi-trending-flat:before { + content: '\f30f'; +} +.zmdi-trending-up:before { + content: '\f310'; +} +.zmdi-unfold-less:before { + content: '\f311'; +} +.zmdi-unfold-more:before { + content: '\f312'; +} +.zmdi-apps:before { + content: '\f313'; +} +.zmdi-grid-off:before { + content: '\f314'; +} +.zmdi-grid:before { + content: '\f315'; +} +.zmdi-view-agenda:before { + content: '\f316'; +} +.zmdi-view-array:before { + content: '\f317'; +} +.zmdi-view-carousel:before { + content: '\f318'; +} +.zmdi-view-column:before { + content: '\f319'; +} +.zmdi-view-comfy:before { + content: '\f31a'; +} +.zmdi-view-compact:before { + content: '\f31b'; +} +.zmdi-view-dashboard:before { + content: '\f31c'; +} +.zmdi-view-day:before { + content: '\f31d'; +} +.zmdi-view-headline:before { + content: '\f31e'; +} +.zmdi-view-list-alt:before { + content: '\f31f'; +} +.zmdi-view-list:before { + content: '\f320'; +} +.zmdi-view-module:before { + content: '\f321'; +} +.zmdi-view-quilt:before { + content: '\f322'; +} +.zmdi-view-stream:before { + content: '\f323'; +} +.zmdi-view-subtitles:before { + content: '\f324'; +} +.zmdi-view-toc:before { + content: '\f325'; +} +.zmdi-view-web:before { + content: '\f326'; +} +.zmdi-view-week:before { + content: '\f327'; +} +.zmdi-widgets:before { + content: '\f328'; +} +.zmdi-alarm-check:before { + content: '\f329'; +} +.zmdi-alarm-off:before { + content: '\f32a'; +} +.zmdi-alarm-plus:before { + content: '\f32b'; +} +.zmdi-alarm-snooze:before { + content: '\f32c'; +} +.zmdi-alarm:before { + content: '\f32d'; +} +.zmdi-calendar-alt:before { + content: '\f32e'; +} +.zmdi-calendar-check:before { + content: '\f32f'; +} +.zmdi-calendar-close:before { + content: '\f330'; +} +.zmdi-calendar-note:before { + content: '\f331'; +} +.zmdi-calendar:before { + content: '\f332'; +} +.zmdi-time-countdown:before { + content: '\f333'; +} +.zmdi-time-interval:before { + content: '\f334'; +} +.zmdi-time-restore-setting:before { + content: '\f335'; +} +.zmdi-time-restore:before { + content: '\f336'; +} +.zmdi-time:before { + content: '\f337'; +} +.zmdi-timer-off:before { + content: '\f338'; +} +.zmdi-timer:before { + content: '\f339'; +} +.zmdi-android-alt:before { + content: '\f33a'; +} +.zmdi-android:before { + content: '\f33b'; +} +.zmdi-apple:before { + content: '\f33c'; +} +.zmdi-behance:before { + content: '\f33d'; +} +.zmdi-codepen:before { + content: '\f33e'; +} +.zmdi-dribbble:before { + content: '\f33f'; +} +.zmdi-dropbox:before { + content: '\f340'; +} +.zmdi-evernote:before { + content: '\f341'; +} +.zmdi-facebook-box:before { + content: '\f342'; +} +.zmdi-facebook:before { + content: '\f343'; +} +.zmdi-github-box:before { + content: '\f344'; +} +.zmdi-github:before { + content: '\f345'; +} +.zmdi-google-drive:before { + content: '\f346'; +} +.zmdi-google-earth:before { + content: '\f347'; +} +.zmdi-google-glass:before { + content: '\f348'; +} +.zmdi-google-maps:before { + content: '\f349'; +} +.zmdi-google-pages:before { + content: '\f34a'; +} +.zmdi-google-play:before { + content: '\f34b'; +} +.zmdi-google-plus-box:before { + content: '\f34c'; +} +.zmdi-google-plus:before { + content: '\f34d'; +} +.zmdi-google:before { + content: '\f34e'; +} +.zmdi-instagram:before { + content: '\f34f'; +} +.zmdi-language-css3:before { + content: '\f350'; +} +.zmdi-language-html5:before { + content: '\f351'; +} +.zmdi-language-javascript:before { + content: '\f352'; +} +.zmdi-language-python-alt:before { + content: '\f353'; +} +.zmdi-language-python:before { + content: '\f354'; +} +.zmdi-lastfm:before { + content: '\f355'; +} +.zmdi-linkedin-box:before { + content: '\f356'; +} +.zmdi-paypal:before { + content: '\f357'; +} +.zmdi-pinterest-box:before { + content: '\f358'; +} +.zmdi-pocket:before { + content: '\f359'; +} +.zmdi-polymer:before { + content: '\f35a'; +} +.zmdi-share:before { + content: '\f35b'; +} +.zmdi-stackoverflow:before { + content: '\f35c'; +} +.zmdi-steam-square:before { + content: '\f35d'; +} +.zmdi-steam:before { + content: '\f35e'; +} +.zmdi-twitter-box:before { + content: '\f35f'; +} +.zmdi-twitter:before { + content: '\f360'; +} +.zmdi-vk:before { + content: '\f361'; +} +.zmdi-wikipedia:before { + content: '\f362'; +} +.zmdi-windows:before { + content: '\f363'; +} +.zmdi-aspect-ratio-alt:before { + content: '\f364'; +} +.zmdi-aspect-ratio:before { + content: '\f365'; +} +.zmdi-blur-circular:before { + content: '\f366'; +} +.zmdi-blur-linear:before { + content: '\f367'; +} +.zmdi-blur-off:before { + content: '\f368'; +} +.zmdi-blur:before { + content: '\f369'; +} +.zmdi-brightness-2:before { + content: '\f36a'; +} +.zmdi-brightness-3:before { + content: '\f36b'; +} +.zmdi-brightness-4:before { + content: '\f36c'; +} +.zmdi-brightness-5:before { + content: '\f36d'; +} +.zmdi-brightness-6:before { + content: '\f36e'; +} +.zmdi-brightness-7:before { + content: '\f36f'; +} +.zmdi-brightness-auto:before { + content: '\f370'; +} +.zmdi-brightness-setting:before { + content: '\f371'; +} +.zmdi-broken-image:before { + content: '\f372'; +} +.zmdi-center-focus-strong:before { + content: '\f373'; +} +.zmdi-center-focus-weak:before { + content: '\f374'; +} +.zmdi-compare:before { + content: '\f375'; +} +.zmdi-crop-16-9:before { + content: '\f376'; +} +.zmdi-crop-3-2:before { + content: '\f377'; +} +.zmdi-crop-5-4:before { + content: '\f378'; +} +.zmdi-crop-7-5:before { + content: '\f379'; +} +.zmdi-crop-din:before { + content: '\f37a'; +} +.zmdi-crop-free:before { + content: '\f37b'; +} +.zmdi-crop-landscape:before { + content: '\f37c'; +} +.zmdi-crop-portrait:before { + content: '\f37d'; +} +.zmdi-crop-square:before { + content: '\f37e'; +} +.zmdi-exposure-alt:before { + content: '\f37f'; +} +.zmdi-exposure:before { + content: '\f380'; +} +.zmdi-filter-b-and-w:before { + content: '\f381'; +} +.zmdi-filter-center-focus:before { + content: '\f382'; +} +.zmdi-filter-frames:before { + content: '\f383'; +} +.zmdi-filter-tilt-shift:before { + content: '\f384'; +} +.zmdi-gradient:before { + content: '\f385'; +} +.zmdi-grain:before { + content: '\f386'; +} +.zmdi-graphic-eq:before { + content: '\f387'; +} +.zmdi-hdr-off:before { + content: '\f388'; +} +.zmdi-hdr-strong:before { + content: '\f389'; +} +.zmdi-hdr-weak:before { + content: '\f38a'; +} +.zmdi-hdr:before { + content: '\f38b'; +} +.zmdi-iridescent:before { + content: '\f38c'; +} +.zmdi-leak-off:before { + content: '\f38d'; +} +.zmdi-leak:before { + content: '\f38e'; +} +.zmdi-looks:before { + content: '\f38f'; +} +.zmdi-loupe:before { + content: '\f390'; +} +.zmdi-panorama-horizontal:before { + content: '\f391'; +} +.zmdi-panorama-vertical:before { + content: '\f392'; +} +.zmdi-panorama-wide-angle:before { + content: '\f393'; +} +.zmdi-photo-size-select-large:before { + content: '\f394'; +} +.zmdi-photo-size-select-small:before { + content: '\f395'; +} +.zmdi-picture-in-picture:before { + content: '\f396'; +} +.zmdi-slideshow:before { + content: '\f397'; +} +.zmdi-texture:before { + content: '\f398'; +} +.zmdi-tonality:before { + content: '\f399'; +} +.zmdi-vignette:before { + content: '\f39a'; +} +.zmdi-wb-auto:before { + content: '\f39b'; +} +.zmdi-eject-alt:before { + content: '\f39c'; +} +.zmdi-eject:before { + content: '\f39d'; +} +.zmdi-equalizer:before { + content: '\f39e'; +} +.zmdi-fast-forward:before { + content: '\f39f'; +} +.zmdi-fast-rewind:before { + content: '\f3a0'; +} +.zmdi-forward-10:before { + content: '\f3a1'; +} +.zmdi-forward-30:before { + content: '\f3a2'; +} +.zmdi-forward-5:before { + content: '\f3a3'; +} +.zmdi-hearing:before { + content: '\f3a4'; +} +.zmdi-pause-circle-outline:before { + content: '\f3a5'; +} +.zmdi-pause-circle:before { + content: '\f3a6'; +} +.zmdi-pause:before { + content: '\f3a7'; +} +.zmdi-play-circle-outline:before { + content: '\f3a8'; +} +.zmdi-play-circle:before { + content: '\f3a9'; +} +.zmdi-play:before { + content: '\f3aa'; +} +.zmdi-playlist-audio:before { + content: '\f3ab'; +} +.zmdi-playlist-plus:before { + content: '\f3ac'; +} +.zmdi-repeat-one:before { + content: '\f3ad'; +} +.zmdi-repeat:before { + content: '\f3ae'; +} +.zmdi-replay-10:before { + content: '\f3af'; +} +.zmdi-replay-30:before { + content: '\f3b0'; +} +.zmdi-replay-5:before { + content: '\f3b1'; +} +.zmdi-replay:before { + content: '\f3b2'; +} +.zmdi-shuffle:before { + content: '\f3b3'; +} +.zmdi-skip-next:before { + content: '\f3b4'; +} +.zmdi-skip-previous:before { + content: '\f3b5'; +} +.zmdi-stop:before { + content: '\f3b6'; +} +.zmdi-surround-sound:before { + content: '\f3b7'; +} +.zmdi-tune:before { + content: '\f3b8'; +} +.zmdi-volume-down:before { + content: '\f3b9'; +} +.zmdi-volume-mute:before { + content: '\f3ba'; +} +.zmdi-volume-off:before { + content: '\f3bb'; +} +.zmdi-volume-up:before { + content: '\f3bc'; +} +.zmdi-n-1-square:before { + content: '\f3bd'; +} +.zmdi-n-2-square:before { + content: '\f3be'; +} +.zmdi-n-3-square:before { + content: '\f3bf'; +} +.zmdi-n-4-square:before { + content: '\f3c0'; +} +.zmdi-n-5-square:before { + content: '\f3c1'; +} +.zmdi-n-6-square:before { + content: '\f3c2'; +} +.zmdi-neg-1:before { + content: '\f3c3'; +} +.zmdi-neg-2:before { + content: '\f3c4'; +} +.zmdi-plus-1:before { + content: '\f3c5'; +} +.zmdi-plus-2:before { + content: '\f3c6'; +} +.zmdi-sec-10:before { + content: '\f3c7'; +} +.zmdi-sec-3:before { + content: '\f3c8'; +} +.zmdi-zero:before { + content: '\f3c9'; +} +.zmdi-airline-seat-flat-angled:before { + content: '\f3ca'; +} +.zmdi-airline-seat-flat:before { + content: '\f3cb'; +} +.zmdi-airline-seat-individual-suite:before { + content: '\f3cc'; +} +.zmdi-airline-seat-legroom-extra:before { + content: '\f3cd'; +} +.zmdi-airline-seat-legroom-normal:before { + content: '\f3ce'; +} +.zmdi-airline-seat-legroom-reduced:before { + content: '\f3cf'; +} +.zmdi-airline-seat-recline-extra:before { + content: '\f3d0'; +} +.zmdi-airline-seat-recline-normal:before { + content: '\f3d1'; +} +.zmdi-airplay:before { + content: '\f3d2'; +} +.zmdi-closed-caption:before { + content: '\f3d3'; +} +.zmdi-confirmation-number:before { + content: '\f3d4'; +} +.zmdi-developer-board:before { + content: '\f3d5'; +} +.zmdi-disc-full:before { + content: '\f3d6'; +} +.zmdi-explicit:before { + content: '\f3d7'; +} +.zmdi-flight-land:before { + content: '\f3d8'; +} +.zmdi-flight-takeoff:before { + content: '\f3d9'; +} +.zmdi-flip-to-back:before { + content: '\f3da'; +} +.zmdi-flip-to-front:before { + content: '\f3db'; +} +.zmdi-group-work:before { + content: '\f3dc'; +} +.zmdi-hd:before { + content: '\f3dd'; +} +.zmdi-hq:before { + content: '\f3de'; +} +.zmdi-markunread-mailbox:before { + content: '\f3df'; +} +.zmdi-memory:before { + content: '\f3e0'; +} +.zmdi-nfc:before { + content: '\f3e1'; +} +.zmdi-play-for-work:before { + content: '\f3e2'; +} +.zmdi-power-input:before { + content: '\f3e3'; +} +.zmdi-present-to-all:before { + content: '\f3e4'; +} +.zmdi-satellite:before { + content: '\f3e5'; +} +.zmdi-tap-and-play:before { + content: '\f3e6'; +} +.zmdi-vibration:before { + content: '\f3e7'; +} +.zmdi-voicemail:before { + content: '\f3e8'; +} +.zmdi-group:before { + content: '\f3e9'; +} +.zmdi-rss:before { + content: '\f3ea'; +} +.zmdi-shape:before { + content: '\f3eb'; +} +.zmdi-spinner:before { + content: '\f3ec'; +} +.zmdi-ungroup:before { + content: '\f3ed'; +} +.zmdi-500px:before { + content: '\f3ee'; +} +.zmdi-8tracks:before { + content: '\f3ef'; +} +.zmdi-amazon:before { + content: '\f3f0'; +} +.zmdi-blogger:before { + content: '\f3f1'; +} +.zmdi-delicious:before { + content: '\f3f2'; +} +.zmdi-disqus:before { + content: '\f3f3'; +} +.zmdi-flattr:before { + content: '\f3f4'; +} +.zmdi-flickr:before { + content: '\f3f5'; +} +.zmdi-github-alt:before { + content: '\f3f6'; +} +.zmdi-google-old:before { + content: '\f3f7'; +} +.zmdi-linkedin:before { + content: '\f3f8'; +} +.zmdi-odnoklassniki:before { + content: '\f3f9'; +} +.zmdi-outlook:before { + content: '\f3fa'; +} +.zmdi-paypal-alt:before { + content: '\f3fb'; +} +.zmdi-pinterest:before { + content: '\f3fc'; +} +.zmdi-playstation:before { + content: '\f3fd'; +} +.zmdi-reddit:before { + content: '\f3fe'; +} +.zmdi-skype:before { + content: '\f3ff'; +} +.zmdi-slideshare:before { + content: '\f400'; +} +.zmdi-soundcloud:before { + content: '\f401'; +} +.zmdi-tumblr:before { + content: '\f402'; +} +.zmdi-twitch:before { + content: '\f403'; +} +.zmdi-vimeo:before { + content: '\f404'; +} +.zmdi-whatsapp:before { + content: '\f405'; +} +.zmdi-xbox:before { + content: '\f406'; +} +.zmdi-yahoo:before { + content: '\f407'; +} +.zmdi-youtube-play:before { + content: '\f408'; +} +.zmdi-youtube:before { + content: '\f409'; +} +.zmdi-import-export:before { + content: '\f30c'; +} +.zmdi-swap-vertical-:before { + content: '\f30c'; +} +.zmdi-airplanemode-inactive:before { + content: '\f102'; +} +.zmdi-airplanemode-active:before { + content: '\f103'; +} +.zmdi-rate-review:before { + content: '\f103'; +} +.zmdi-comment-sign:before { + content: '\f25a'; +} +.zmdi-network-warning:before { + content: '\f2ad'; +} +.zmdi-shopping-cart-add:before { + content: '\f1ca'; +} +.zmdi-file-add:before { + content: '\f221'; +} +.zmdi-network-wifi-scan:before { + content: '\f2e4'; +} +.zmdi-collection-add:before { + content: '\f14e'; +} +.zmdi-format-playlist-add:before { + content: '\f3ac'; +} +.zmdi-format-queue-music:before { + content: '\f3ab'; +} +.zmdi-plus-box:before { + content: '\f277'; +} +.zmdi-tag-backspace:before { + content: '\f1d9'; +} +.zmdi-alarm-add:before { + content: '\f32b'; +} +.zmdi-battery-charging:before { + content: '\f114'; +} +.zmdi-daydream-setting:before { + content: '\f217'; +} +.zmdi-more-horiz:before { + content: '\f19c'; +} +.zmdi-book-photo:before { + content: '\f11b'; +} +.zmdi-incandescent:before { + content: '\f189'; +} +.zmdi-wb-iridescent:before { + content: '\f38c'; +} +.zmdi-calendar-remove:before { + content: '\f330'; +} +.zmdi-refresh-sync-disabled:before { + content: '\f1b7'; +} +.zmdi-refresh-sync-problem:before { + content: '\f1b6'; +} +.zmdi-crop-original:before { + content: '\f17e'; +} +.zmdi-power-off:before { + content: '\f1af'; +} +.zmdi-power-off-setting:before { + content: '\f1ae'; +} +.zmdi-leak-remove:before { + content: '\f38d'; +} +.zmdi-star-border:before { + content: '\f27c'; +} +.zmdi-brightness-low:before { + content: '\f36d'; +} +.zmdi-brightness-medium:before { + content: '\f36e'; +} +.zmdi-brightness-high:before { + content: '\f36f'; +} +.zmdi-smartphone-portrait:before { + content: '\f2d4'; +} +.zmdi-live-tv:before { + content: '\f2d9'; +} +.zmdi-format-textdirection-l-to-r:before { + content: '\f249'; +} +.zmdi-format-textdirection-r-to-l:before { + content: '\f24a'; +} +.zmdi-arrow-back:before { + content: '\f2ea'; +} +.zmdi-arrow-forward:before { + content: '\f2ee'; +} +.zmdi-arrow-in:before { + content: '\f2e9'; +} +.zmdi-arrow-out:before { + content: '\f2ed'; +} +.zmdi-rotate-90-degrees-ccw:before { + content: '\f304'; +} +.zmdi-adb:before { + content: '\f33a'; +} +.zmdi-network-wifi:before { + content: '\f2e8'; +} +.zmdi-network-wifi-alt:before { + content: '\f2e3'; +} +.zmdi-network-wifi-lock:before { + content: '\f2e5'; +} +.zmdi-network-wifi-off:before { + content: '\f2e6'; +} +.zmdi-network-wifi-outline:before { + content: '\f2e7'; +} +.zmdi-network-wifi-info:before { + content: '\f2e4'; +} +.zmdi-layers-clear:before { + content: '\f18b'; +} +.zmdi-colorize:before { + content: '\f15d'; +} +.zmdi-format-paint:before { + content: '\f1ba'; +} +.zmdi-format-quote:before { + content: '\f1b2'; +} +.zmdi-camera-monochrome-photos:before { + content: '\f285'; +} +.zmdi-sort-by-alpha:before { + content: '\f1cf'; +} +.zmdi-folder-shared:before { + content: '\f225'; +} +.zmdi-folder-special:before { + content: '\f226'; +} +.zmdi-comment-dots:before { + content: '\f260'; +} +.zmdi-reorder:before { + content: '\f31e'; +} +.zmdi-dehaze:before { + content: '\f197'; +} +.zmdi-sort:before { + content: '\f1ce'; +} +.zmdi-pages:before { + content: '\f34a'; +} +.zmdi-stack-overflow:before { + content: '\f35c'; +} +.zmdi-calendar-account:before { + content: '\f204'; +} +.zmdi-paste:before { + content: '\f109'; +} +.zmdi-cut:before { + content: '\f1bc'; +} +.zmdi-save:before { + content: '\f297'; +} +.zmdi-smartphone-code:before { + content: '\f139'; +} +.zmdi-directions-bike:before { + content: '\f117'; +} +.zmdi-directions-boat:before { + content: '\f11a'; +} +.zmdi-directions-bus:before { + content: '\f121'; +} +.zmdi-directions-car:before { + content: '\f125'; +} +.zmdi-directions-railway:before { + content: '\f1b3'; +} +.zmdi-directions-run:before { + content: '\f215'; +} +.zmdi-directions-subway:before { + content: '\f1d5'; +} +.zmdi-directions-walk:before { + content: '\f216'; +} +.zmdi-local-hotel:before { + content: '\f178'; +} +.zmdi-local-activity:before { + content: '\f1df'; +} +.zmdi-local-play:before { + content: '\f1df'; +} +.zmdi-local-airport:before { + content: '\f103'; +} +.zmdi-local-atm:before { + content: '\f198'; +} +.zmdi-local-bar:before { + content: '\f137'; +} +.zmdi-local-cafe:before { + content: '\f13b'; +} +.zmdi-local-car-wash:before { + content: '\f124'; +} +.zmdi-local-convenience-store:before { + content: '\f1d3'; +} +.zmdi-local-dining:before { + content: '\f153'; +} +.zmdi-local-drink:before { + content: '\f157'; +} +.zmdi-local-florist:before { + content: '\f168'; +} +.zmdi-local-gas-station:before { + content: '\f16f'; +} +.zmdi-local-grocery-store:before { + content: '\f1cb'; +} +.zmdi-local-hospital:before { + content: '\f177'; +} +.zmdi-local-laundry-service:before { + content: '\f1e9'; +} +.zmdi-local-library:before { + content: '\f18d'; +} +.zmdi-local-mall:before { + content: '\f195'; +} +.zmdi-local-movies:before { + content: '\f19d'; +} +.zmdi-local-offer:before { + content: '\f187'; +} +.zmdi-local-parking:before { + content: '\f1a5'; +} +.zmdi-local-parking:before { + content: '\f1a5'; +} +.zmdi-local-pharmacy:before { + content: '\f176'; +} +.zmdi-local-phone:before { + content: '\f2be'; +} +.zmdi-local-pizza:before { + content: '\f1ac'; +} +.zmdi-local-post-office:before { + content: '\f15a'; +} +.zmdi-local-printshop:before { + content: '\f1b0'; +} +.zmdi-local-see:before { + content: '\f28c'; +} +.zmdi-local-shipping:before { + content: '\f1e6'; +} +.zmdi-local-store:before { + content: '\f1d4'; +} +.zmdi-local-taxi:before { + content: '\f123'; +} +.zmdi-local-wc:before { + content: '\f211'; +} +.zmdi-my-location:before { + content: '\f299'; +} +.zmdi-directions:before { + content: '\f1e7'; +} diff --git a/assets/less/icons/css/materialdesignicons.css b/assets/less/icons/css/materialdesignicons.css new file mode 100644 index 0000000..a33791c --- /dev/null +++ b/assets/less/icons/css/materialdesignicons.css @@ -0,0 +1,5039 @@ +/* MaterialDesignIcons.com */ +@font-face { + font-family: "Material Design Icons"; + src: url("../fonts/materialdesignicons-webfont.eot?v=1.6.50"); + src: url("../fonts/materialdesignicons-webfont.eot?#iefix&v=1.6.50") format("embedded-opentype"), url("../fonts/materialdesignicons-webfont.woff2?v=1.6.50") format("woff2"), url("../fonts/materialdesignicons-webfont.woff?v=1.6.50") format("woff"), url("../fonts/materialdesignicons-webfont.ttf?v=1.6.50") format("truetype"), url("../fonts/materialdesignicons-webfont.svg?v=1.6.50#materialdesigniconsregular") format("svg"); + font-weight: normal; + font-style: normal; +} +.mdi { + display: inline-block; + font: normal normal normal 24px/1 "Material Design Icons"; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} +.mdi-access-point:before { + content: "\F002"; +} +.mdi-access-point-network:before { + content: "\F003"; +} +.mdi-account:before { + content: "\F004"; +} +.mdi-account-alert:before { + content: "\F005"; +} +.mdi-account-box:before { + content: "\F006"; +} +.mdi-account-box-outline:before { + content: "\F007"; +} +.mdi-account-card-details:before { + content: "\F5D2"; +} +.mdi-account-check:before { + content: "\F008"; +} +.mdi-account-circle:before { + content: "\F009"; +} +.mdi-account-convert:before { + content: "\F00A"; +} +.mdi-account-key:before { + content: "\F00B"; +} +.mdi-account-location:before { + content: "\F00C"; +} +.mdi-account-minus:before { + content: "\F00D"; +} +.mdi-account-multiple:before { + content: "\F00E"; +} +.mdi-account-multiple-minus:before { + content: "\F5D3"; +} +.mdi-account-multiple-outline:before { + content: "\F00F"; +} +.mdi-account-multiple-plus:before { + content: "\F010"; +} +.mdi-account-network:before { + content: "\F011"; +} +.mdi-account-off:before { + content: "\F012"; +} +.mdi-account-outline:before { + content: "\F013"; +} +.mdi-account-plus:before { + content: "\F014"; +} +.mdi-account-remove:before { + content: "\F015"; +} +.mdi-account-search:before { + content: "\F016"; +} +.mdi-account-settings:before { + content: "\F630"; +} +.mdi-account-settings-variant:before { + content: "\F631"; +} +.mdi-account-star:before { + content: "\F017"; +} +.mdi-account-star-variant:before { + content: "\F018"; +} +.mdi-account-switch:before { + content: "\F019"; +} +.mdi-adjust:before { + content: "\F01A"; +} +.mdi-air-conditioner:before { + content: "\F01B"; +} +.mdi-airballoon:before { + content: "\F01C"; +} +.mdi-airplane:before { + content: "\F01D"; +} +.mdi-airplane-landing:before { + content: "\F5D4"; +} +.mdi-airplane-off:before { + content: "\F01E"; +} +.mdi-airplane-takeoff:before { + content: "\F5D5"; +} +.mdi-airplay:before { + content: "\F01F"; +} +.mdi-alarm:before { + content: "\F020"; +} +.mdi-alarm-check:before { + content: "\F021"; +} +.mdi-alarm-multiple:before { + content: "\F022"; +} +.mdi-alarm-off:before { + content: "\F023"; +} +.mdi-alarm-plus:before { + content: "\F024"; +} +.mdi-album:before { + content: "\F025"; +} +.mdi-alert:before { + content: "\F026"; +} +.mdi-alert-box:before { + content: "\F027"; +} +.mdi-alert-circle:before { + content: "\F028"; +} +.mdi-alert-circle-outline:before { + content: "\F5D6"; +} +.mdi-alert-octagon:before { + content: "\F029"; +} +.mdi-alert-outline:before { + content: "\F02A"; +} +.mdi-alpha:before { + content: "\F02B"; +} +.mdi-alphabetical:before { + content: "\F02C"; +} +.mdi-altimeter:before { + content: "\F5D7"; +} +.mdi-amazon:before { + content: "\F02D"; +} +.mdi-amazon-clouddrive:before { + content: "\F02E"; +} +.mdi-ambulance:before { + content: "\F02F"; +} +.mdi-amplifier:before { + content: "\F030"; +} +.mdi-anchor:before { + content: "\F031"; +} +.mdi-android:before { + content: "\F032"; +} +.mdi-android-debug-bridge:before { + content: "\F033"; +} +.mdi-android-studio:before { + content: "\F034"; +} +.mdi-animation:before { + content: "\F5D8"; +} +.mdi-apple:before { + content: "\F035"; +} +.mdi-apple-finder:before { + content: "\F036"; +} +.mdi-apple-ios:before { + content: "\F037"; +} +.mdi-apple-keyboard-caps:before { + content: "\F632"; +} +.mdi-apple-keyboard-command:before { + content: "\F633"; +} +.mdi-apple-keyboard-control:before { + content: "\F634"; +} +.mdi-apple-keyboard-option:before { + content: "\F635"; +} +.mdi-apple-keyboard-shift:before { + content: "\F636"; +} +.mdi-apple-mobileme:before { + content: "\F038"; +} +.mdi-apple-safari:before { + content: "\F039"; +} +.mdi-application:before { + content: "\F614"; +} +.mdi-appnet:before { + content: "\F03A"; +} +.mdi-apps:before { + content: "\F03B"; +} +.mdi-archive:before { + content: "\F03C"; +} +.mdi-arrange-bring-forward:before { + content: "\F03D"; +} +.mdi-arrange-bring-to-front:before { + content: "\F03E"; +} +.mdi-arrange-send-backward:before { + content: "\F03F"; +} +.mdi-arrange-send-to-back:before { + content: "\F040"; +} +.mdi-arrow-all:before { + content: "\F041"; +} +.mdi-arrow-bottom-left:before { + content: "\F042"; +} +.mdi-arrow-bottom-right:before { + content: "\F043"; +} +.mdi-arrow-compress:before { + content: "\F615"; +} +.mdi-arrow-compress-all:before { + content: "\F044"; +} +.mdi-arrow-down:before { + content: "\F045"; +} +.mdi-arrow-down-bold:before { + content: "\F046"; +} +.mdi-arrow-down-bold-circle:before { + content: "\F047"; +} +.mdi-arrow-down-bold-circle-outline:before { + content: "\F048"; +} +.mdi-arrow-down-bold-hexagon-outline:before { + content: "\F049"; +} +.mdi-arrow-down-drop-circle:before { + content: "\F04A"; +} +.mdi-arrow-down-drop-circle-outline:before { + content: "\F04B"; +} +.mdi-arrow-expand:before { + content: "\F616"; +} +.mdi-arrow-expand-all:before { + content: "\F04C"; +} +.mdi-arrow-left:before { + content: "\F04D"; +} +.mdi-arrow-left-bold:before { + content: "\F04E"; +} +.mdi-arrow-left-bold-circle:before { + content: "\F04F"; +} +.mdi-arrow-left-bold-circle-outline:before { + content: "\F050"; +} +.mdi-arrow-left-bold-hexagon-outline:before { + content: "\F051"; +} +.mdi-arrow-left-drop-circle:before { + content: "\F052"; +} +.mdi-arrow-left-drop-circle-outline:before { + content: "\F053"; +} +.mdi-arrow-right:before { + content: "\F054"; +} +.mdi-arrow-right-bold:before { + content: "\F055"; +} +.mdi-arrow-right-bold-circle:before { + content: "\F056"; +} +.mdi-arrow-right-bold-circle-outline:before { + content: "\F057"; +} +.mdi-arrow-right-bold-hexagon-outline:before { + content: "\F058"; +} +.mdi-arrow-right-drop-circle:before { + content: "\F059"; +} +.mdi-arrow-right-drop-circle-outline:before { + content: "\F05A"; +} +.mdi-arrow-top-left:before { + content: "\F05B"; +} +.mdi-arrow-top-right:before { + content: "\F05C"; +} +.mdi-arrow-up:before { + content: "\F05D"; +} +.mdi-arrow-up-bold:before { + content: "\F05E"; +} +.mdi-arrow-up-bold-circle:before { + content: "\F05F"; +} +.mdi-arrow-up-bold-circle-outline:before { + content: "\F060"; +} +.mdi-arrow-up-bold-hexagon-outline:before { + content: "\F061"; +} +.mdi-arrow-up-drop-circle:before { + content: "\F062"; +} +.mdi-arrow-up-drop-circle-outline:before { + content: "\F063"; +} +.mdi-assistant:before { + content: "\F064"; +} +.mdi-at:before { + content: "\F065"; +} +.mdi-attachment:before { + content: "\F066"; +} +.mdi-audiobook:before { + content: "\F067"; +} +.mdi-auto-fix:before { + content: "\F068"; +} +.mdi-auto-upload:before { + content: "\F069"; +} +.mdi-autorenew:before { + content: "\F06A"; +} +.mdi-av-timer:before { + content: "\F06B"; +} +.mdi-baby:before { + content: "\F06C"; +} +.mdi-backburger:before { + content: "\F06D"; +} +.mdi-backspace:before { + content: "\F06E"; +} +.mdi-backup-restore:before { + content: "\F06F"; +} +.mdi-bank:before { + content: "\F070"; +} +.mdi-barcode:before { + content: "\F071"; +} +.mdi-barcode-scan:before { + content: "\F072"; +} +.mdi-barley:before { + content: "\F073"; +} +.mdi-barrel:before { + content: "\F074"; +} +.mdi-basecamp:before { + content: "\F075"; +} +.mdi-basket:before { + content: "\F076"; +} +.mdi-basket-fill:before { + content: "\F077"; +} +.mdi-basket-unfill:before { + content: "\F078"; +} +.mdi-battery:before { + content: "\F079"; +} +.mdi-battery-10:before { + content: "\F07A"; +} +.mdi-battery-20:before { + content: "\F07B"; +} +.mdi-battery-30:before { + content: "\F07C"; +} +.mdi-battery-40:before { + content: "\F07D"; +} +.mdi-battery-50:before { + content: "\F07E"; +} +.mdi-battery-60:before { + content: "\F07F"; +} +.mdi-battery-70:before { + content: "\F080"; +} +.mdi-battery-80:before { + content: "\F081"; +} +.mdi-battery-90:before { + content: "\F082"; +} +.mdi-battery-alert:before { + content: "\F083"; +} +.mdi-battery-charging:before { + content: "\F084"; +} +.mdi-battery-charging-100:before { + content: "\F085"; +} +.mdi-battery-charging-20:before { + content: "\F086"; +} +.mdi-battery-charging-30:before { + content: "\F087"; +} +.mdi-battery-charging-40:before { + content: "\F088"; +} +.mdi-battery-charging-60:before { + content: "\F089"; +} +.mdi-battery-charging-80:before { + content: "\F08A"; +} +.mdi-battery-charging-90:before { + content: "\F08B"; +} +.mdi-battery-minus:before { + content: "\F08C"; +} +.mdi-battery-negative:before { + content: "\F08D"; +} +.mdi-battery-outline:before { + content: "\F08E"; +} +.mdi-battery-plus:before { + content: "\F08F"; +} +.mdi-battery-positive:before { + content: "\F090"; +} +.mdi-battery-unknown:before { + content: "\F091"; +} +.mdi-beach:before { + content: "\F092"; +} +.mdi-beats:before { + content: "\F097"; +} +.mdi-beer:before { + content: "\F098"; +} +.mdi-behance:before { + content: "\F099"; +} +.mdi-bell:before { + content: "\F09A"; +} +.mdi-bell-off:before { + content: "\F09B"; +} +.mdi-bell-outline:before { + content: "\F09C"; +} +.mdi-bell-plus:before { + content: "\F09D"; +} +.mdi-bell-ring:before { + content: "\F09E"; +} +.mdi-bell-ring-outline:before { + content: "\F09F"; +} +.mdi-bell-sleep:before { + content: "\F0A0"; +} +.mdi-beta:before { + content: "\F0A1"; +} +.mdi-bible:before { + content: "\F0A2"; +} +.mdi-bike:before { + content: "\F0A3"; +} +.mdi-bing:before { + content: "\F0A4"; +} +.mdi-binoculars:before { + content: "\F0A5"; +} +.mdi-bio:before { + content: "\F0A6"; +} +.mdi-biohazard:before { + content: "\F0A7"; +} +.mdi-bitbucket:before { + content: "\F0A8"; +} +.mdi-black-mesa:before { + content: "\F0A9"; +} +.mdi-blackberry:before { + content: "\F0AA"; +} +.mdi-blender:before { + content: "\F0AB"; +} +.mdi-blinds:before { + content: "\F0AC"; +} +.mdi-block-helper:before { + content: "\F0AD"; +} +.mdi-blogger:before { + content: "\F0AE"; +} +.mdi-bluetooth:before { + content: "\F0AF"; +} +.mdi-bluetooth-audio:before { + content: "\F0B0"; +} +.mdi-bluetooth-connect:before { + content: "\F0B1"; +} +.mdi-bluetooth-off:before { + content: "\F0B2"; +} +.mdi-bluetooth-settings:before { + content: "\F0B3"; +} +.mdi-bluetooth-transfer:before { + content: "\F0B4"; +} +.mdi-blur:before { + content: "\F0B5"; +} +.mdi-blur-linear:before { + content: "\F0B6"; +} +.mdi-blur-off:before { + content: "\F0B7"; +} +.mdi-blur-radial:before { + content: "\F0B8"; +} +.mdi-bone:before { + content: "\F0B9"; +} +.mdi-book:before { + content: "\F0BA"; +} +.mdi-book-minus:before { + content: "\F5D9"; +} +.mdi-book-multiple:before { + content: "\F0BB"; +} +.mdi-book-multiple-variant:before { + content: "\F0BC"; +} +.mdi-book-open:before { + content: "\F0BD"; +} +.mdi-book-open-page-variant:before { + content: "\F5DA"; +} +.mdi-book-open-variant:before { + content: "\F0BE"; +} +.mdi-book-plus:before { + content: "\F5DB"; +} +.mdi-book-variant:before { + content: "\F0BF"; +} +.mdi-bookmark:before { + content: "\F0C0"; +} +.mdi-bookmark-check:before { + content: "\F0C1"; +} +.mdi-bookmark-music:before { + content: "\F0C2"; +} +.mdi-bookmark-outline:before { + content: "\F0C3"; +} +.mdi-bookmark-plus:before { + content: "\F0C5"; +} +.mdi-bookmark-plus-outline:before { + content: "\F0C4"; +} +.mdi-bookmark-remove:before { + content: "\F0C6"; +} +.mdi-boombox:before { + content: "\F5DC"; +} +.mdi-border-all:before { + content: "\F0C7"; +} +.mdi-border-bottom:before { + content: "\F0C8"; +} +.mdi-border-color:before { + content: "\F0C9"; +} +.mdi-border-horizontal:before { + content: "\F0CA"; +} +.mdi-border-inside:before { + content: "\F0CB"; +} +.mdi-border-left:before { + content: "\F0CC"; +} +.mdi-border-none:before { + content: "\F0CD"; +} +.mdi-border-outside:before { + content: "\F0CE"; +} +.mdi-border-right:before { + content: "\F0CF"; +} +.mdi-border-style:before { + content: "\F0D0"; +} +.mdi-border-top:before { + content: "\F0D1"; +} +.mdi-border-vertical:before { + content: "\F0D2"; +} +.mdi-bowl:before { + content: "\F617"; +} +.mdi-bowling:before { + content: "\F0D3"; +} +.mdi-box:before { + content: "\F0D4"; +} +.mdi-box-cutter:before { + content: "\F0D5"; +} +.mdi-box-shadow:before { + content: "\F637"; +} +.mdi-bridge:before { + content: "\F618"; +} +.mdi-briefcase:before { + content: "\F0D6"; +} +.mdi-briefcase-check:before { + content: "\F0D7"; +} +.mdi-briefcase-download:before { + content: "\F0D8"; +} +.mdi-briefcase-upload:before { + content: "\F0D9"; +} +.mdi-brightness-1:before { + content: "\F0DA"; +} +.mdi-brightness-2:before { + content: "\F0DB"; +} +.mdi-brightness-3:before { + content: "\F0DC"; +} +.mdi-brightness-4:before { + content: "\F0DD"; +} +.mdi-brightness-5:before { + content: "\F0DE"; +} +.mdi-brightness-6:before { + content: "\F0DF"; +} +.mdi-brightness-7:before { + content: "\F0E0"; +} +.mdi-brightness-auto:before { + content: "\F0E1"; +} +.mdi-broom:before { + content: "\F0E2"; +} +.mdi-brush:before { + content: "\F0E3"; +} +.mdi-buffer:before { + content: "\F619"; +} +.mdi-bug:before { + content: "\F0E4"; +} +.mdi-bulletin-board:before { + content: "\F0E5"; +} +.mdi-bullhorn:before { + content: "\F0E6"; +} +.mdi-bullseye:before { + content: "\F5DD"; +} +.mdi-burst-mode:before { + content: "\F5DE"; +} +.mdi-bus:before { + content: "\F0E7"; +} +.mdi-cached:before { + content: "\F0E8"; +} +.mdi-cake:before { + content: "\F0E9"; +} +.mdi-cake-layered:before { + content: "\F0EA"; +} +.mdi-cake-variant:before { + content: "\F0EB"; +} +.mdi-calculator:before { + content: "\F0EC"; +} +.mdi-calendar:before { + content: "\F0ED"; +} +.mdi-calendar-blank:before { + content: "\F0EE"; +} +.mdi-calendar-check:before { + content: "\F0EF"; +} +.mdi-calendar-clock:before { + content: "\F0F0"; +} +.mdi-calendar-multiple:before { + content: "\F0F1"; +} +.mdi-calendar-multiple-check:before { + content: "\F0F2"; +} +.mdi-calendar-plus:before { + content: "\F0F3"; +} +.mdi-calendar-remove:before { + content: "\F0F4"; +} +.mdi-calendar-text:before { + content: "\F0F5"; +} +.mdi-calendar-today:before { + content: "\F0F6"; +} +.mdi-call-made:before { + content: "\F0F7"; +} +.mdi-call-merge:before { + content: "\F0F8"; +} +.mdi-call-missed:before { + content: "\F0F9"; +} +.mdi-call-received:before { + content: "\F0FA"; +} +.mdi-call-split:before { + content: "\F0FB"; +} +.mdi-camcorder:before { + content: "\F0FC"; +} +.mdi-camcorder-box:before { + content: "\F0FD"; +} +.mdi-camcorder-box-off:before { + content: "\F0FE"; +} +.mdi-camcorder-off:before { + content: "\F0FF"; +} +.mdi-camera:before { + content: "\F100"; +} +.mdi-camera-enhance:before { + content: "\F101"; +} +.mdi-camera-front:before { + content: "\F102"; +} +.mdi-camera-front-variant:before { + content: "\F103"; +} +.mdi-camera-iris:before { + content: "\F104"; +} +.mdi-camera-off:before { + content: "\F5DF"; +} +.mdi-camera-party-mode:before { + content: "\F105"; +} +.mdi-camera-rear:before { + content: "\F106"; +} +.mdi-camera-rear-variant:before { + content: "\F107"; +} +.mdi-camera-switch:before { + content: "\F108"; +} +.mdi-camera-timer:before { + content: "\F109"; +} +.mdi-candle:before { + content: "\F5E2"; +} +.mdi-candycane:before { + content: "\F10A"; +} +.mdi-car:before { + content: "\F10B"; +} +.mdi-car-battery:before { + content: "\F10C"; +} +.mdi-car-connected:before { + content: "\F10D"; +} +.mdi-car-wash:before { + content: "\F10E"; +} +.mdi-cards:before { + content: "\F638"; +} +.mdi-cards-outline:before { + content: "\F639"; +} +.mdi-cards-playing-outline:before { + content: "\F63A"; +} +.mdi-carrot:before { + content: "\F10F"; +} +.mdi-cart:before { + content: "\F110"; +} +.mdi-cart-off:before { + content: "\F66B"; +} +.mdi-cart-outline:before { + content: "\F111"; +} +.mdi-cart-plus:before { + content: "\F112"; +} +.mdi-case-sensitive-alt:before { + content: "\F113"; +} +.mdi-cash:before { + content: "\F114"; +} +.mdi-cash-100:before { + content: "\F115"; +} +.mdi-cash-multiple:before { + content: "\F116"; +} +.mdi-cash-usd:before { + content: "\F117"; +} +.mdi-cast:before { + content: "\F118"; +} +.mdi-cast-connected:before { + content: "\F119"; +} +.mdi-castle:before { + content: "\F11A"; +} +.mdi-cat:before { + content: "\F11B"; +} +.mdi-cellphone:before { + content: "\F11C"; +} +.mdi-cellphone-android:before { + content: "\F11D"; +} +.mdi-cellphone-basic:before { + content: "\F11E"; +} +.mdi-cellphone-dock:before { + content: "\F11F"; +} +.mdi-cellphone-iphone:before { + content: "\F120"; +} +.mdi-cellphone-link:before { + content: "\F121"; +} +.mdi-cellphone-link-off:before { + content: "\F122"; +} +.mdi-cellphone-settings:before { + content: "\F123"; +} +.mdi-certificate:before { + content: "\F124"; +} +.mdi-chair-school:before { + content: "\F125"; +} +.mdi-chart-arc:before { + content: "\F126"; +} +.mdi-chart-areaspline:before { + content: "\F127"; +} +.mdi-chart-bar:before { + content: "\F128"; +} +.mdi-chart-bubble:before { + content: "\F5E3"; +} +.mdi-chart-gantt:before { + content: "\F66C"; +} +.mdi-chart-histogram:before { + content: "\F129"; +} +.mdi-chart-line:before { + content: "\F12A"; +} +.mdi-chart-pie:before { + content: "\F12B"; +} +.mdi-chart-scatterplot-hexbin:before { + content: "\F66D"; +} +.mdi-chart-timeline:before { + content: "\F66E"; +} +.mdi-check:before { + content: "\F12C"; +} +.mdi-check-all:before { + content: "\F12D"; +} +.mdi-check-circle:before { + content: "\F5E0"; +} +.mdi-check-circle-outline:before { + content: "\F5E1"; +} +.mdi-checkbox-blank:before { + content: "\F12E"; +} +.mdi-checkbox-blank-circle:before { + content: "\F12F"; +} +.mdi-checkbox-blank-circle-outline:before { + content: "\F130"; +} +.mdi-checkbox-blank-outline:before { + content: "\F131"; +} +.mdi-checkbox-marked:before { + content: "\F132"; +} +.mdi-checkbox-marked-circle:before { + content: "\F133"; +} +.mdi-checkbox-marked-circle-outline:before { + content: "\F134"; +} +.mdi-checkbox-marked-outline:before { + content: "\F135"; +} +.mdi-checkbox-multiple-blank:before { + content: "\F136"; +} +.mdi-checkbox-multiple-blank-circle:before { + content: "\F63B"; +} +.mdi-checkbox-multiple-blank-circle-outline:before { + content: "\F63C"; +} +.mdi-checkbox-multiple-blank-outline:before { + content: "\F137"; +} +.mdi-checkbox-multiple-marked:before { + content: "\F138"; +} +.mdi-checkbox-multiple-marked-circle:before { + content: "\F63D"; +} +.mdi-checkbox-multiple-marked-circle-outline:before { + content: "\F63E"; +} +.mdi-checkbox-multiple-marked-outline:before { + content: "\F139"; +} +.mdi-checkerboard:before { + content: "\F13A"; +} +.mdi-chemical-weapon:before { + content: "\F13B"; +} +.mdi-chevron-double-down:before { + content: "\F13C"; +} +.mdi-chevron-double-left:before { + content: "\F13D"; +} +.mdi-chevron-double-right:before { + content: "\F13E"; +} +.mdi-chevron-double-up:before { + content: "\F13F"; +} +.mdi-chevron-down:before { + content: "\F140"; +} +.mdi-chevron-left:before { + content: "\F141"; +} +.mdi-chevron-right:before { + content: "\F142"; +} +.mdi-chevron-up:before { + content: "\F143"; +} +.mdi-chip:before { + content: "\F61A"; +} +.mdi-church:before { + content: "\F144"; +} +.mdi-cisco-webex:before { + content: "\F145"; +} +.mdi-city:before { + content: "\F146"; +} +.mdi-clipboard:before { + content: "\F147"; +} +.mdi-clipboard-account:before { + content: "\F148"; +} +.mdi-clipboard-alert:before { + content: "\F149"; +} +.mdi-clipboard-arrow-down:before { + content: "\F14A"; +} +.mdi-clipboard-arrow-left:before { + content: "\F14B"; +} +.mdi-clipboard-check:before { + content: "\F14C"; +} +.mdi-clipboard-outline:before { + content: "\F14D"; +} +.mdi-clipboard-text:before { + content: "\F14E"; +} +.mdi-clippy:before { + content: "\F14F"; +} +.mdi-clock:before { + content: "\F150"; +} +.mdi-clock-alert:before { + content: "\F5CE"; +} +.mdi-clock-end:before { + content: "\F151"; +} +.mdi-clock-fast:before { + content: "\F152"; +} +.mdi-clock-in:before { + content: "\F153"; +} +.mdi-clock-out:before { + content: "\F154"; +} +.mdi-clock-start:before { + content: "\F155"; +} +.mdi-close:before { + content: "\F156"; +} +.mdi-close-box:before { + content: "\F157"; +} +.mdi-close-box-outline:before { + content: "\F158"; +} +.mdi-close-circle:before { + content: "\F159"; +} +.mdi-close-circle-outline:before { + content: "\F15A"; +} +.mdi-close-network:before { + content: "\F15B"; +} +.mdi-close-octagon:before { + content: "\F15C"; +} +.mdi-close-octagon-outline:before { + content: "\F15D"; +} +.mdi-closed-caption:before { + content: "\F15E"; +} +.mdi-cloud:before { + content: "\F15F"; +} +.mdi-cloud-check:before { + content: "\F160"; +} +.mdi-cloud-circle:before { + content: "\F161"; +} +.mdi-cloud-download:before { + content: "\F162"; +} +.mdi-cloud-outline:before { + content: "\F163"; +} +.mdi-cloud-outline-off:before { + content: "\F164"; +} +.mdi-cloud-print:before { + content: "\F165"; +} +.mdi-cloud-print-outline:before { + content: "\F166"; +} +.mdi-cloud-sync:before { + content: "\F63F"; +} +.mdi-cloud-upload:before { + content: "\F167"; +} +.mdi-code-array:before { + content: "\F168"; +} +.mdi-code-braces:before { + content: "\F169"; +} +.mdi-code-brackets:before { + content: "\F16A"; +} +.mdi-code-equal:before { + content: "\F16B"; +} +.mdi-code-greater-than:before { + content: "\F16C"; +} +.mdi-code-greater-than-or-equal:before { + content: "\F16D"; +} +.mdi-code-less-than:before { + content: "\F16E"; +} +.mdi-code-less-than-or-equal:before { + content: "\F16F"; +} +.mdi-code-not-equal:before { + content: "\F170"; +} +.mdi-code-not-equal-variant:before { + content: "\F171"; +} +.mdi-code-parentheses:before { + content: "\F172"; +} +.mdi-code-string:before { + content: "\F173"; +} +.mdi-code-tags:before { + content: "\F174"; +} +.mdi-codepen:before { + content: "\F175"; +} +.mdi-coffee:before { + content: "\F176"; +} +.mdi-coffee-to-go:before { + content: "\F177"; +} +.mdi-coin:before { + content: "\F178"; +} +.mdi-collage:before { + content: "\F640"; +} +.mdi-color-helper:before { + content: "\F179"; +} +.mdi-comment:before { + content: "\F17A"; +} +.mdi-comment-account:before { + content: "\F17B"; +} +.mdi-comment-account-outline:before { + content: "\F17C"; +} +.mdi-comment-alert:before { + content: "\F17D"; +} +.mdi-comment-alert-outline:before { + content: "\F17E"; +} +.mdi-comment-check:before { + content: "\F17F"; +} +.mdi-comment-check-outline:before { + content: "\F180"; +} +.mdi-comment-multiple-outline:before { + content: "\F181"; +} +.mdi-comment-outline:before { + content: "\F182"; +} +.mdi-comment-plus-outline:before { + content: "\F183"; +} +.mdi-comment-processing:before { + content: "\F184"; +} +.mdi-comment-processing-outline:before { + content: "\F185"; +} +.mdi-comment-question-outline:before { + content: "\F186"; +} +.mdi-comment-remove-outline:before { + content: "\F187"; +} +.mdi-comment-text:before { + content: "\F188"; +} +.mdi-comment-text-outline:before { + content: "\F189"; +} +.mdi-compare:before { + content: "\F18A"; +} +.mdi-compass:before { + content: "\F18B"; +} +.mdi-compass-outline:before { + content: "\F18C"; +} +.mdi-console:before { + content: "\F18D"; +} +.mdi-contact-mail:before { + content: "\F18E"; +} +.mdi-content-copy:before { + content: "\F18F"; +} +.mdi-content-cut:before { + content: "\F190"; +} +.mdi-content-duplicate:before { + content: "\F191"; +} +.mdi-content-paste:before { + content: "\F192"; +} +.mdi-content-save:before { + content: "\F193"; +} +.mdi-content-save-all:before { + content: "\F194"; +} +.mdi-content-save-settings:before { + content: "\F61B"; +} +.mdi-contrast:before { + content: "\F195"; +} +.mdi-contrast-box:before { + content: "\F196"; +} +.mdi-contrast-circle:before { + content: "\F197"; +} +.mdi-cookie:before { + content: "\F198"; +} +.mdi-copyright:before { + content: "\F5E6"; +} +.mdi-counter:before { + content: "\F199"; +} +.mdi-cow:before { + content: "\F19A"; +} +.mdi-credit-card:before { + content: "\F19B"; +} +.mdi-credit-card-multiple:before { + content: "\F19C"; +} +.mdi-credit-card-off:before { + content: "\F5E4"; +} +.mdi-credit-card-scan:before { + content: "\F19D"; +} +.mdi-crop:before { + content: "\F19E"; +} +.mdi-crop-free:before { + content: "\F19F"; +} +.mdi-crop-landscape:before { + content: "\F1A0"; +} +.mdi-crop-portrait:before { + content: "\F1A1"; +} +.mdi-crop-square:before { + content: "\F1A2"; +} +.mdi-crosshairs:before { + content: "\F1A3"; +} +.mdi-crosshairs-gps:before { + content: "\F1A4"; +} +.mdi-crown:before { + content: "\F1A5"; +} +.mdi-cube:before { + content: "\F1A6"; +} +.mdi-cube-outline:before { + content: "\F1A7"; +} +.mdi-cube-send:before { + content: "\F1A8"; +} +.mdi-cube-unfolded:before { + content: "\F1A9"; +} +.mdi-cup:before { + content: "\F1AA"; +} +.mdi-cup-off:before { + content: "\F5E5"; +} +.mdi-cup-water:before { + content: "\F1AB"; +} +.mdi-currency-btc:before { + content: "\F1AC"; +} +.mdi-currency-eur:before { + content: "\F1AD"; +} +.mdi-currency-gbp:before { + content: "\F1AE"; +} +.mdi-currency-inr:before { + content: "\F1AF"; +} +.mdi-currency-ngn:before { + content: "\F1B0"; +} +.mdi-currency-rub:before { + content: "\F1B1"; +} +.mdi-currency-try:before { + content: "\F1B2"; +} +.mdi-currency-usd:before { + content: "\F1B3"; +} +.mdi-cursor-default:before { + content: "\F1B4"; +} +.mdi-cursor-default-outline:before { + content: "\F1B5"; +} +.mdi-cursor-move:before { + content: "\F1B6"; +} +.mdi-cursor-pointer:before { + content: "\F1B7"; +} +.mdi-cursor-text:before { + content: "\F5E7"; +} +.mdi-database:before { + content: "\F1B8"; +} +.mdi-database-minus:before { + content: "\F1B9"; +} +.mdi-database-plus:before { + content: "\F1BA"; +} +.mdi-debug-step-into:before { + content: "\F1BB"; +} +.mdi-debug-step-out:before { + content: "\F1BC"; +} +.mdi-debug-step-over:before { + content: "\F1BD"; +} +.mdi-decimal-decrease:before { + content: "\F1BE"; +} +.mdi-decimal-increase:before { + content: "\F1BF"; +} +.mdi-delete:before { + content: "\F1C0"; +} +.mdi-delete-forever:before { + content: "\F5E8"; +} +.mdi-delete-sweep:before { + content: "\F5E9"; +} +.mdi-delete-variant:before { + content: "\F1C1"; +} +.mdi-delta:before { + content: "\F1C2"; +} +.mdi-deskphone:before { + content: "\F1C3"; +} +.mdi-desktop-mac:before { + content: "\F1C4"; +} +.mdi-desktop-tower:before { + content: "\F1C5"; +} +.mdi-details:before { + content: "\F1C6"; +} +.mdi-deviantart:before { + content: "\F1C7"; +} +.mdi-dialpad:before { + content: "\F61C"; +} +.mdi-diamond:before { + content: "\F1C8"; +} +.mdi-dice-1:before { + content: "\F1CA"; +} +.mdi-dice-2:before { + content: "\F1CB"; +} +.mdi-dice-3:before { + content: "\F1CC"; +} +.mdi-dice-4:before { + content: "\F1CD"; +} +.mdi-dice-5:before { + content: "\F1CE"; +} +.mdi-dice-6:before { + content: "\F1CF"; +} +.mdi-dice-d20:before { + content: "\F5EA"; +} +.mdi-dice-d4:before { + content: "\F5EB"; +} +.mdi-dice-d6:before { + content: "\F5EC"; +} +.mdi-dice-d8:before { + content: "\F5ED"; +} +.mdi-dictionary:before { + content: "\F61D"; +} +.mdi-directions:before { + content: "\F1D0"; +} +.mdi-directions-fork:before { + content: "\F641"; +} +.mdi-discord:before { + content: "\F66F"; +} +.mdi-disk:before { + content: "\F5EE"; +} +.mdi-disk-alert:before { + content: "\F1D1"; +} +.mdi-disqus:before { + content: "\F1D2"; +} +.mdi-disqus-outline:before { + content: "\F1D3"; +} +.mdi-division:before { + content: "\F1D4"; +} +.mdi-division-box:before { + content: "\F1D5"; +} +.mdi-dns:before { + content: "\F1D6"; +} +.mdi-domain:before { + content: "\F1D7"; +} +.mdi-dots-horizontal:before { + content: "\F1D8"; +} +.mdi-dots-vertical:before { + content: "\F1D9"; +} +.mdi-download:before { + content: "\F1DA"; +} +.mdi-drag:before { + content: "\F1DB"; +} +.mdi-drag-horizontal:before { + content: "\F1DC"; +} +.mdi-drag-vertical:before { + content: "\F1DD"; +} +.mdi-drawing:before { + content: "\F1DE"; +} +.mdi-drawing-box:before { + content: "\F1DF"; +} +.mdi-dribbble:before { + content: "\F1E0"; +} +.mdi-dribbble-box:before { + content: "\F1E1"; +} +.mdi-drone:before { + content: "\F1E2"; +} +.mdi-dropbox:before { + content: "\F1E3"; +} +.mdi-drupal:before { + content: "\F1E4"; +} +.mdi-duck:before { + content: "\F1E5"; +} +.mdi-dumbbell:before { + content: "\F1E6"; +} +.mdi-earth:before { + content: "\F1E7"; +} +.mdi-earth-off:before { + content: "\F1E8"; +} +.mdi-edge:before { + content: "\F1E9"; +} +.mdi-eject:before { + content: "\F1EA"; +} +.mdi-elevation-decline:before { + content: "\F1EB"; +} +.mdi-elevation-rise:before { + content: "\F1EC"; +} +.mdi-elevator:before { + content: "\F1ED"; +} +.mdi-email:before { + content: "\F1EE"; +} +.mdi-email-open:before { + content: "\F1EF"; +} +.mdi-email-open-outline:before { + content: "\F5EF"; +} +.mdi-email-outline:before { + content: "\F1F0"; +} +.mdi-email-secure:before { + content: "\F1F1"; +} +.mdi-email-variant:before { + content: "\F5F0"; +} +.mdi-emoticon:before { + content: "\F1F2"; +} +.mdi-emoticon-cool:before { + content: "\F1F3"; +} +.mdi-emoticon-devil:before { + content: "\F1F4"; +} +.mdi-emoticon-happy:before { + content: "\F1F5"; +} +.mdi-emoticon-neutral:before { + content: "\F1F6"; +} +.mdi-emoticon-poop:before { + content: "\F1F7"; +} +.mdi-emoticon-sad:before { + content: "\F1F8"; +} +.mdi-emoticon-tongue:before { + content: "\F1F9"; +} +.mdi-engine:before { + content: "\F1FA"; +} +.mdi-engine-outline:before { + content: "\F1FB"; +} +.mdi-equal:before { + content: "\F1FC"; +} +.mdi-equal-box:before { + content: "\F1FD"; +} +.mdi-eraser:before { + content: "\F1FE"; +} +.mdi-eraser-variant:before { + content: "\F642"; +} +.mdi-escalator:before { + content: "\F1FF"; +} +.mdi-ethernet:before { + content: "\F200"; +} +.mdi-ethernet-cable:before { + content: "\F201"; +} +.mdi-ethernet-cable-off:before { + content: "\F202"; +} +.mdi-etsy:before { + content: "\F203"; +} +.mdi-ev-station:before { + content: "\F5F1"; +} +.mdi-evernote:before { + content: "\F204"; +} +.mdi-exclamation:before { + content: "\F205"; +} +.mdi-exit-to-app:before { + content: "\F206"; +} +.mdi-export:before { + content: "\F207"; +} +.mdi-eye:before { + content: "\F208"; +} +.mdi-eye-off:before { + content: "\F209"; +} +.mdi-eyedropper:before { + content: "\F20A"; +} +.mdi-eyedropper-variant:before { + content: "\F20B"; +} +.mdi-face:before { + content: "\F643"; +} +.mdi-face-profile:before { + content: "\F644"; +} +.mdi-facebook:before { + content: "\F20C"; +} +.mdi-facebook-box:before { + content: "\F20D"; +} +.mdi-facebook-messenger:before { + content: "\F20E"; +} +.mdi-factory:before { + content: "\F20F"; +} +.mdi-fan:before { + content: "\F210"; +} +.mdi-fast-forward:before { + content: "\F211"; +} +.mdi-fax:before { + content: "\F212"; +} +.mdi-ferry:before { + content: "\F213"; +} +.mdi-file:before { + content: "\F214"; +} +.mdi-file-chart:before { + content: "\F215"; +} +.mdi-file-check:before { + content: "\F216"; +} +.mdi-file-cloud:before { + content: "\F217"; +} +.mdi-file-delimited:before { + content: "\F218"; +} +.mdi-file-document:before { + content: "\F219"; +} +.mdi-file-document-box:before { + content: "\F21A"; +} +.mdi-file-excel:before { + content: "\F21B"; +} +.mdi-file-excel-box:before { + content: "\F21C"; +} +.mdi-file-export:before { + content: "\F21D"; +} +.mdi-file-find:before { + content: "\F21E"; +} +.mdi-file-hidden:before { + content: "\F613"; +} +.mdi-file-image:before { + content: "\F21F"; +} +.mdi-file-import:before { + content: "\F220"; +} +.mdi-file-lock:before { + content: "\F221"; +} +.mdi-file-multiple:before { + content: "\F222"; +} +.mdi-file-music:before { + content: "\F223"; +} +.mdi-file-outline:before { + content: "\F224"; +} +.mdi-file-pdf:before { + content: "\F225"; +} +.mdi-file-pdf-box:before { + content: "\F226"; +} +.mdi-file-powerpoint:before { + content: "\F227"; +} +.mdi-file-powerpoint-box:before { + content: "\F228"; +} +.mdi-file-presentation-box:before { + content: "\F229"; +} +.mdi-file-restore:before { + content: "\F670"; +} +.mdi-file-send:before { + content: "\F22A"; +} +.mdi-file-tree:before { + content: "\F645"; +} +.mdi-file-video:before { + content: "\F22B"; +} +.mdi-file-word:before { + content: "\F22C"; +} +.mdi-file-word-box:before { + content: "\F22D"; +} +.mdi-file-xml:before { + content: "\F22E"; +} +.mdi-film:before { + content: "\F22F"; +} +.mdi-filmstrip:before { + content: "\F230"; +} +.mdi-filmstrip-off:before { + content: "\F231"; +} +.mdi-filter:before { + content: "\F232"; +} +.mdi-filter-outline:before { + content: "\F233"; +} +.mdi-filter-remove:before { + content: "\F234"; +} +.mdi-filter-remove-outline:before { + content: "\F235"; +} +.mdi-filter-variant:before { + content: "\F236"; +} +.mdi-fingerprint:before { + content: "\F237"; +} +.mdi-fire:before { + content: "\F238"; +} +.mdi-firefox:before { + content: "\F239"; +} +.mdi-fish:before { + content: "\F23A"; +} +.mdi-flag:before { + content: "\F23B"; +} +.mdi-flag-checkered:before { + content: "\F23C"; +} +.mdi-flag-outline:before { + content: "\F23D"; +} +.mdi-flag-outline-variant:before { + content: "\F23E"; +} +.mdi-flag-triangle:before { + content: "\F23F"; +} +.mdi-flag-variant:before { + content: "\F240"; +} +.mdi-flash:before { + content: "\F241"; +} +.mdi-flash-auto:before { + content: "\F242"; +} +.mdi-flash-off:before { + content: "\F243"; +} +.mdi-flashlight:before { + content: "\F244"; +} +.mdi-flashlight-off:before { + content: "\F245"; +} +.mdi-flask:before { + content: "\F093"; +} +.mdi-flask-empty:before { + content: "\F094"; +} +.mdi-flask-empty-outline:before { + content: "\F095"; +} +.mdi-flask-outline:before { + content: "\F096"; +} +.mdi-flattr:before { + content: "\F246"; +} +.mdi-flip-to-back:before { + content: "\F247"; +} +.mdi-flip-to-front:before { + content: "\F248"; +} +.mdi-floppy:before { + content: "\F249"; +} +.mdi-flower:before { + content: "\F24A"; +} +.mdi-folder:before { + content: "\F24B"; +} +.mdi-folder-account:before { + content: "\F24C"; +} +.mdi-folder-download:before { + content: "\F24D"; +} +.mdi-folder-google-drive:before { + content: "\F24E"; +} +.mdi-folder-image:before { + content: "\F24F"; +} +.mdi-folder-lock:before { + content: "\F250"; +} +.mdi-folder-lock-open:before { + content: "\F251"; +} +.mdi-folder-move:before { + content: "\F252"; +} +.mdi-folder-multiple:before { + content: "\F253"; +} +.mdi-folder-multiple-image:before { + content: "\F254"; +} +.mdi-folder-multiple-outline:before { + content: "\F255"; +} +.mdi-folder-outline:before { + content: "\F256"; +} +.mdi-folder-plus:before { + content: "\F257"; +} +.mdi-folder-remove:before { + content: "\F258"; +} +.mdi-folder-upload:before { + content: "\F259"; +} +.mdi-food:before { + content: "\F25A"; +} +.mdi-food-apple:before { + content: "\F25B"; +} +.mdi-food-fork-drink:before { + content: "\F5F2"; +} +.mdi-food-off:before { + content: "\F5F3"; +} +.mdi-food-variant:before { + content: "\F25C"; +} +.mdi-football:before { + content: "\F25D"; +} +.mdi-football-australian:before { + content: "\F25E"; +} +.mdi-football-helmet:before { + content: "\F25F"; +} +.mdi-format-align-center:before { + content: "\F260"; +} +.mdi-format-align-justify:before { + content: "\F261"; +} +.mdi-format-align-left:before { + content: "\F262"; +} +.mdi-format-align-right:before { + content: "\F263"; +} +.mdi-format-annotation-plus:before { + content: "\F646"; +} +.mdi-format-bold:before { + content: "\F264"; +} +.mdi-format-clear:before { + content: "\F265"; +} +.mdi-format-color-fill:before { + content: "\F266"; +} +.mdi-format-float-center:before { + content: "\F267"; +} +.mdi-format-float-left:before { + content: "\F268"; +} +.mdi-format-float-none:before { + content: "\F269"; +} +.mdi-format-float-right:before { + content: "\F26A"; +} +.mdi-format-header-1:before { + content: "\F26B"; +} +.mdi-format-header-2:before { + content: "\F26C"; +} +.mdi-format-header-3:before { + content: "\F26D"; +} +.mdi-format-header-4:before { + content: "\F26E"; +} +.mdi-format-header-5:before { + content: "\F26F"; +} +.mdi-format-header-6:before { + content: "\F270"; +} +.mdi-format-header-decrease:before { + content: "\F271"; +} +.mdi-format-header-equal:before { + content: "\F272"; +} +.mdi-format-header-increase:before { + content: "\F273"; +} +.mdi-format-header-pound:before { + content: "\F274"; +} +.mdi-format-horizontal-align-center:before { + content: "\F61E"; +} +.mdi-format-horizontal-align-left:before { + content: "\F61F"; +} +.mdi-format-horizontal-align-right:before { + content: "\F620"; +} +.mdi-format-indent-decrease:before { + content: "\F275"; +} +.mdi-format-indent-increase:before { + content: "\F276"; +} +.mdi-format-italic:before { + content: "\F277"; +} +.mdi-format-line-spacing:before { + content: "\F278"; +} +.mdi-format-line-style:before { + content: "\F5C8"; +} +.mdi-format-line-weight:before { + content: "\F5C9"; +} +.mdi-format-list-bulleted:before { + content: "\F279"; +} +.mdi-format-list-bulleted-type:before { + content: "\F27A"; +} +.mdi-format-list-numbers:before { + content: "\F27B"; +} +.mdi-format-paint:before { + content: "\F27C"; +} +.mdi-format-paragraph:before { + content: "\F27D"; +} +.mdi-format-quote:before { + content: "\F27E"; +} +.mdi-format-size:before { + content: "\F27F"; +} +.mdi-format-strikethrough:before { + content: "\F280"; +} +.mdi-format-strikethrough-variant:before { + content: "\F281"; +} +.mdi-format-subscript:before { + content: "\F282"; +} +.mdi-format-superscript:before { + content: "\F283"; +} +.mdi-format-text:before { + content: "\F284"; +} +.mdi-format-textdirection-l-to-r:before { + content: "\F285"; +} +.mdi-format-textdirection-r-to-l:before { + content: "\F286"; +} +.mdi-format-title:before { + content: "\F5F4"; +} +.mdi-format-underline:before { + content: "\F287"; +} +.mdi-format-vertical-align-bottom:before { + content: "\F621"; +} +.mdi-format-vertical-align-center:before { + content: "\F622"; +} +.mdi-format-vertical-align-top:before { + content: "\F623"; +} +.mdi-format-wrap-inline:before { + content: "\F288"; +} +.mdi-format-wrap-square:before { + content: "\F289"; +} +.mdi-format-wrap-tight:before { + content: "\F28A"; +} +.mdi-format-wrap-top-bottom:before { + content: "\F28B"; +} +.mdi-forum:before { + content: "\F28C"; +} +.mdi-forward:before { + content: "\F28D"; +} +.mdi-foursquare:before { + content: "\F28E"; +} +.mdi-fridge:before { + content: "\F28F"; +} +.mdi-fridge-filled:before { + content: "\F290"; +} +.mdi-fridge-filled-bottom:before { + content: "\F291"; +} +.mdi-fridge-filled-top:before { + content: "\F292"; +} +.mdi-fullscreen:before { + content: "\F293"; +} +.mdi-fullscreen-exit:before { + content: "\F294"; +} +.mdi-function:before { + content: "\F295"; +} +.mdi-gamepad:before { + content: "\F296"; +} +.mdi-gamepad-variant:before { + content: "\F297"; +} +.mdi-gas-cylinder:before { + content: "\F647"; +} +.mdi-gas-station:before { + content: "\F298"; +} +.mdi-gate:before { + content: "\F299"; +} +.mdi-gauge:before { + content: "\F29A"; +} +.mdi-gavel:before { + content: "\F29B"; +} +.mdi-gender-female:before { + content: "\F29C"; +} +.mdi-gender-male:before { + content: "\F29D"; +} +.mdi-gender-male-female:before { + content: "\F29E"; +} +.mdi-gender-transgender:before { + content: "\F29F"; +} +.mdi-ghost:before { + content: "\F2A0"; +} +.mdi-gift:before { + content: "\F2A1"; +} +.mdi-git:before { + content: "\F2A2"; +} +.mdi-github-box:before { + content: "\F2A3"; +} +.mdi-github-circle:before { + content: "\F2A4"; +} +.mdi-glass-flute:before { + content: "\F2A5"; +} +.mdi-glass-mug:before { + content: "\F2A6"; +} +.mdi-glass-stange:before { + content: "\F2A7"; +} +.mdi-glass-tulip:before { + content: "\F2A8"; +} +.mdi-glassdoor:before { + content: "\F2A9"; +} +.mdi-glasses:before { + content: "\F2AA"; +} +.mdi-gmail:before { + content: "\F2AB"; +} +.mdi-gnome:before { + content: "\F2AC"; +} +.mdi-google:before { + content: "\F2AD"; +} +.mdi-google-cardboard:before { + content: "\F2AE"; +} +.mdi-google-chrome:before { + content: "\F2AF"; +} +.mdi-google-circles:before { + content: "\F2B0"; +} +.mdi-google-circles-communities:before { + content: "\F2B1"; +} +.mdi-google-circles-extended:before { + content: "\F2B2"; +} +.mdi-google-circles-group:before { + content: "\F2B3"; +} +.mdi-google-controller:before { + content: "\F2B4"; +} +.mdi-google-controller-off:before { + content: "\F2B5"; +} +.mdi-google-drive:before { + content: "\F2B6"; +} +.mdi-google-earth:before { + content: "\F2B7"; +} +.mdi-google-glass:before { + content: "\F2B8"; +} +.mdi-google-maps:before { + content: "\F5F5"; +} +.mdi-google-nearby:before { + content: "\F2B9"; +} +.mdi-google-pages:before { + content: "\F2BA"; +} +.mdi-google-physical-web:before { + content: "\F2BB"; +} +.mdi-google-play:before { + content: "\F2BC"; +} +.mdi-google-plus:before { + content: "\F2BD"; +} +.mdi-google-plus-box:before { + content: "\F2BE"; +} +.mdi-google-translate:before { + content: "\F2BF"; +} +.mdi-google-wallet:before { + content: "\F2C0"; +} +.mdi-grease-pencil:before { + content: "\F648"; +} +.mdi-grid:before { + content: "\F2C1"; +} +.mdi-grid-off:before { + content: "\F2C2"; +} +.mdi-group:before { + content: "\F2C3"; +} +.mdi-guitar-electric:before { + content: "\F2C4"; +} +.mdi-guitar-pick:before { + content: "\F2C5"; +} +.mdi-guitar-pick-outline:before { + content: "\F2C6"; +} +.mdi-hackernews:before { + content: "\F624"; +} +.mdi-hand-pointing-right:before { + content: "\F2C7"; +} +.mdi-hanger:before { + content: "\F2C8"; +} +.mdi-hangouts:before { + content: "\F2C9"; +} +.mdi-harddisk:before { + content: "\F2CA"; +} +.mdi-headphones:before { + content: "\F2CB"; +} +.mdi-headphones-box:before { + content: "\F2CC"; +} +.mdi-headphones-settings:before { + content: "\F2CD"; +} +.mdi-headset:before { + content: "\F2CE"; +} +.mdi-headset-dock:before { + content: "\F2CF"; +} +.mdi-headset-off:before { + content: "\F2D0"; +} +.mdi-heart:before { + content: "\F2D1"; +} +.mdi-heart-box:before { + content: "\F2D2"; +} +.mdi-heart-box-outline:before { + content: "\F2D3"; +} +.mdi-heart-broken:before { + content: "\F2D4"; +} +.mdi-heart-outline:before { + content: "\F2D5"; +} +.mdi-heart-pulse:before { + content: "\F5F6"; +} +.mdi-help:before { + content: "\F2D6"; +} +.mdi-help-circle:before { + content: "\F2D7"; +} +.mdi-help-circle-outline:before { + content: "\F625"; +} +.mdi-hexagon:before { + content: "\F2D8"; +} +.mdi-hexagon-outline:before { + content: "\F2D9"; +} +.mdi-highway:before { + content: "\F5F7"; +} +.mdi-history:before { + content: "\F2DA"; +} +.mdi-hololens:before { + content: "\F2DB"; +} +.mdi-home:before { + content: "\F2DC"; +} +.mdi-home-map-marker:before { + content: "\F5F8"; +} +.mdi-home-modern:before { + content: "\F2DD"; +} +.mdi-home-variant:before { + content: "\F2DE"; +} +.mdi-hops:before { + content: "\F2DF"; +} +.mdi-hospital:before { + content: "\F2E0"; +} +.mdi-hospital-building:before { + content: "\F2E1"; +} +.mdi-hospital-marker:before { + content: "\F2E2"; +} +.mdi-hotel:before { + content: "\F2E3"; +} +.mdi-houzz:before { + content: "\F2E4"; +} +.mdi-houzz-box:before { + content: "\F2E5"; +} +.mdi-human:before { + content: "\F2E6"; +} +.mdi-human-child:before { + content: "\F2E7"; +} +.mdi-human-female:before { + content: "\F649"; +} +.mdi-human-greeting:before { + content: "\F64A"; +} +.mdi-human-handsdown:before { + content: "\F64B"; +} +.mdi-human-handsup:before { + content: "\F64C"; +} +.mdi-human-male:before { + content: "\F64D"; +} +.mdi-human-male-female:before { + content: "\F2E8"; +} +.mdi-human-pregnant:before { + content: "\F5CF"; +} +.mdi-image:before { + content: "\F2E9"; +} +.mdi-image-album:before { + content: "\F2EA"; +} +.mdi-image-area:before { + content: "\F2EB"; +} +.mdi-image-area-close:before { + content: "\F2EC"; +} +.mdi-image-broken:before { + content: "\F2ED"; +} +.mdi-image-broken-variant:before { + content: "\F2EE"; +} +.mdi-image-filter:before { + content: "\F2EF"; +} +.mdi-image-filter-black-white:before { + content: "\F2F0"; +} +.mdi-image-filter-center-focus:before { + content: "\F2F1"; +} +.mdi-image-filter-center-focus-weak:before { + content: "\F2F2"; +} +.mdi-image-filter-drama:before { + content: "\F2F3"; +} +.mdi-image-filter-frames:before { + content: "\F2F4"; +} +.mdi-image-filter-hdr:before { + content: "\F2F5"; +} +.mdi-image-filter-none:before { + content: "\F2F6"; +} +.mdi-image-filter-tilt-shift:before { + content: "\F2F7"; +} +.mdi-image-filter-vintage:before { + content: "\F2F8"; +} +.mdi-image-multiple:before { + content: "\F2F9"; +} +.mdi-import:before { + content: "\F2FA"; +} +.mdi-inbox:before { + content: "\F2FB"; +} +.mdi-incognito:before { + content: "\F5F9"; +} +.mdi-information:before { + content: "\F2FC"; +} +.mdi-information-outline:before { + content: "\F2FD"; +} +.mdi-information-variant:before { + content: "\F64E"; +} +.mdi-instagram:before { + content: "\F2FE"; +} +.mdi-instapaper:before { + content: "\F2FF"; +} +.mdi-internet-explorer:before { + content: "\F300"; +} +.mdi-invert-colors:before { + content: "\F301"; +} +.mdi-jeepney:before { + content: "\F302"; +} +.mdi-jira:before { + content: "\F303"; +} +.mdi-jsfiddle:before { + content: "\F304"; +} +.mdi-json:before { + content: "\F626"; +} +.mdi-keg:before { + content: "\F305"; +} +.mdi-kettle:before { + content: "\F5FA"; +} +.mdi-key:before { + content: "\F306"; +} +.mdi-key-change:before { + content: "\F307"; +} +.mdi-key-minus:before { + content: "\F308"; +} +.mdi-key-plus:before { + content: "\F309"; +} +.mdi-key-remove:before { + content: "\F30A"; +} +.mdi-key-variant:before { + content: "\F30B"; +} +.mdi-keyboard:before { + content: "\F30C"; +} +.mdi-keyboard-backspace:before { + content: "\F30D"; +} +.mdi-keyboard-caps:before { + content: "\F30E"; +} +.mdi-keyboard-close:before { + content: "\F30F"; +} +.mdi-keyboard-off:before { + content: "\F310"; +} +.mdi-keyboard-return:before { + content: "\F311"; +} +.mdi-keyboard-tab:before { + content: "\F312"; +} +.mdi-keyboard-variant:before { + content: "\F313"; +} +.mdi-kodi:before { + content: "\F314"; +} +.mdi-label:before { + content: "\F315"; +} +.mdi-label-outline:before { + content: "\F316"; +} +.mdi-lambda:before { + content: "\F627"; +} +.mdi-lan:before { + content: "\F317"; +} +.mdi-lan-connect:before { + content: "\F318"; +} +.mdi-lan-disconnect:before { + content: "\F319"; +} +.mdi-lan-pending:before { + content: "\F31A"; +} +.mdi-language-c:before { + content: "\F671"; +} +.mdi-language-cpp:before { + content: "\F672"; +} +.mdi-language-csharp:before { + content: "\F31B"; +} +.mdi-language-css3:before { + content: "\F31C"; +} +.mdi-language-html5:before { + content: "\F31D"; +} +.mdi-language-javascript:before { + content: "\F31E"; +} +.mdi-language-php:before { + content: "\F31F"; +} +.mdi-language-python:before { + content: "\F320"; +} +.mdi-language-python-text:before { + content: "\F321"; +} +.mdi-laptop:before { + content: "\F322"; +} +.mdi-laptop-chromebook:before { + content: "\F323"; +} +.mdi-laptop-mac:before { + content: "\F324"; +} +.mdi-laptop-windows:before { + content: "\F325"; +} +.mdi-lastfm:before { + content: "\F326"; +} +.mdi-launch:before { + content: "\F327"; +} +.mdi-layers:before { + content: "\F328"; +} +.mdi-layers-off:before { + content: "\F329"; +} +.mdi-lead-pencil:before { + content: "\F64F"; +} +.mdi-leaf:before { + content: "\F32A"; +} +.mdi-led-off:before { + content: "\F32B"; +} +.mdi-led-on:before { + content: "\F32C"; +} +.mdi-led-outline:before { + content: "\F32D"; +} +.mdi-led-variant-off:before { + content: "\F32E"; +} +.mdi-led-variant-on:before { + content: "\F32F"; +} +.mdi-led-variant-outline:before { + content: "\F330"; +} +.mdi-library:before { + content: "\F331"; +} +.mdi-library-books:before { + content: "\F332"; +} +.mdi-library-music:before { + content: "\F333"; +} +.mdi-library-plus:before { + content: "\F334"; +} +.mdi-lightbulb:before { + content: "\F335"; +} +.mdi-lightbulb-outline:before { + content: "\F336"; +} +.mdi-link:before { + content: "\F337"; +} +.mdi-link-off:before { + content: "\F338"; +} +.mdi-link-variant:before { + content: "\F339"; +} +.mdi-link-variant-off:before { + content: "\F33A"; +} +.mdi-linkedin:before { + content: "\F33B"; +} +.mdi-linkedin-box:before { + content: "\F33C"; +} +.mdi-linux:before { + content: "\F33D"; +} +.mdi-lock:before { + content: "\F33E"; +} +.mdi-lock-open:before { + content: "\F33F"; +} +.mdi-lock-open-outline:before { + content: "\F340"; +} +.mdi-lock-outline:before { + content: "\F341"; +} +.mdi-lock-plus:before { + content: "\F5FB"; +} +.mdi-login:before { + content: "\F342"; +} +.mdi-login-variant:before { + content: "\F5FC"; +} +.mdi-logout:before { + content: "\F343"; +} +.mdi-logout-variant:before { + content: "\F5FD"; +} +.mdi-looks:before { + content: "\F344"; +} +.mdi-loupe:before { + content: "\F345"; +} +.mdi-lumx:before { + content: "\F346"; +} +.mdi-magnet:before { + content: "\F347"; +} +.mdi-magnet-on:before { + content: "\F348"; +} +.mdi-magnify:before { + content: "\F349"; +} +.mdi-magnify-minus:before { + content: "\F34A"; +} +.mdi-magnify-plus:before { + content: "\F34B"; +} +.mdi-mail-ru:before { + content: "\F34C"; +} +.mdi-map:before { + content: "\F34D"; +} +.mdi-map-marker:before { + content: "\F34E"; +} +.mdi-map-marker-circle:before { + content: "\F34F"; +} +.mdi-map-marker-minus:before { + content: "\F650"; +} +.mdi-map-marker-multiple:before { + content: "\F350"; +} +.mdi-map-marker-off:before { + content: "\F351"; +} +.mdi-map-marker-plus:before { + content: "\F651"; +} +.mdi-map-marker-radius:before { + content: "\F352"; +} +.mdi-margin:before { + content: "\F353"; +} +.mdi-markdown:before { + content: "\F354"; +} +.mdi-marker:before { + content: "\F652"; +} +.mdi-marker-check:before { + content: "\F355"; +} +.mdi-martini:before { + content: "\F356"; +} +.mdi-material-ui:before { + content: "\F357"; +} +.mdi-math-compass:before { + content: "\F358"; +} +.mdi-matrix:before { + content: "\F628"; +} +.mdi-maxcdn:before { + content: "\F359"; +} +.mdi-medium:before { + content: "\F35A"; +} +.mdi-memory:before { + content: "\F35B"; +} +.mdi-menu:before { + content: "\F35C"; +} +.mdi-menu-down:before { + content: "\F35D"; +} +.mdi-menu-left:before { + content: "\F35E"; +} +.mdi-menu-right:before { + content: "\F35F"; +} +.mdi-menu-up:before { + content: "\F360"; +} +.mdi-message:before { + content: "\F361"; +} +.mdi-message-alert:before { + content: "\F362"; +} +.mdi-message-draw:before { + content: "\F363"; +} +.mdi-message-image:before { + content: "\F364"; +} +.mdi-message-outline:before { + content: "\F365"; +} +.mdi-message-plus:before { + content: "\F653"; +} +.mdi-message-processing:before { + content: "\F366"; +} +.mdi-message-reply:before { + content: "\F367"; +} +.mdi-message-reply-text:before { + content: "\F368"; +} +.mdi-message-text:before { + content: "\F369"; +} +.mdi-message-text-outline:before { + content: "\F36A"; +} +.mdi-message-video:before { + content: "\F36B"; +} +.mdi-meteor:before { + content: "\F629"; +} +.mdi-microphone:before { + content: "\F36C"; +} +.mdi-microphone-off:before { + content: "\F36D"; +} +.mdi-microphone-outline:before { + content: "\F36E"; +} +.mdi-microphone-settings:before { + content: "\F36F"; +} +.mdi-microphone-variant:before { + content: "\F370"; +} +.mdi-microphone-variant-off:before { + content: "\F371"; +} +.mdi-microscope:before { + content: "\F654"; +} +.mdi-microsoft:before { + content: "\F372"; +} +.mdi-minecraft:before { + content: "\F373"; +} +.mdi-minus:before { + content: "\F374"; +} +.mdi-minus-box:before { + content: "\F375"; +} +.mdi-minus-circle:before { + content: "\F376"; +} +.mdi-minus-circle-outline:before { + content: "\F377"; +} +.mdi-minus-network:before { + content: "\F378"; +} +.mdi-mixcloud:before { + content: "\F62A"; +} +.mdi-monitor:before { + content: "\F379"; +} +.mdi-monitor-multiple:before { + content: "\F37A"; +} +.mdi-more:before { + content: "\F37B"; +} +.mdi-motorbike:before { + content: "\F37C"; +} +.mdi-mouse:before { + content: "\F37D"; +} +.mdi-mouse-off:before { + content: "\F37E"; +} +.mdi-mouse-variant:before { + content: "\F37F"; +} +.mdi-mouse-variant-off:before { + content: "\F380"; +} +.mdi-move-resize:before { + content: "\F655"; +} +.mdi-move-resize-variant:before { + content: "\F656"; +} +.mdi-movie:before { + content: "\F381"; +} +.mdi-multiplication:before { + content: "\F382"; +} +.mdi-multiplication-box:before { + content: "\F383"; +} +.mdi-music-box:before { + content: "\F384"; +} +.mdi-music-box-outline:before { + content: "\F385"; +} +.mdi-music-circle:before { + content: "\F386"; +} +.mdi-music-note:before { + content: "\F387"; +} +.mdi-music-note-bluetooth:before { + content: "\F5FE"; +} +.mdi-music-note-bluetooth-off:before { + content: "\F5FF"; +} +.mdi-music-note-eighth:before { + content: "\F388"; +} +.mdi-music-note-half:before { + content: "\F389"; +} +.mdi-music-note-off:before { + content: "\F38A"; +} +.mdi-music-note-quarter:before { + content: "\F38B"; +} +.mdi-music-note-sixteenth:before { + content: "\F38C"; +} +.mdi-music-note-whole:before { + content: "\F38D"; +} +.mdi-nature:before { + content: "\F38E"; +} +.mdi-nature-people:before { + content: "\F38F"; +} +.mdi-navigation:before { + content: "\F390"; +} +.mdi-near-me:before { + content: "\F5CD"; +} +.mdi-needle:before { + content: "\F391"; +} +.mdi-nest-protect:before { + content: "\F392"; +} +.mdi-nest-thermostat:before { + content: "\F393"; +} +.mdi-new-box:before { + content: "\F394"; +} +.mdi-newspaper:before { + content: "\F395"; +} +.mdi-nfc:before { + content: "\F396"; +} +.mdi-nfc-tap:before { + content: "\F397"; +} +.mdi-nfc-variant:before { + content: "\F398"; +} +.mdi-nodejs:before { + content: "\F399"; +} +.mdi-note:before { + content: "\F39A"; +} +.mdi-note-outline:before { + content: "\F39B"; +} +.mdi-note-plus:before { + content: "\F39C"; +} +.mdi-note-plus-outline:before { + content: "\F39D"; +} +.mdi-note-text:before { + content: "\F39E"; +} +.mdi-notification-clear-all:before { + content: "\F39F"; +} +.mdi-numeric:before { + content: "\F3A0"; +} +.mdi-numeric-0-box:before { + content: "\F3A1"; +} +.mdi-numeric-0-box-multiple-outline:before { + content: "\F3A2"; +} +.mdi-numeric-0-box-outline:before { + content: "\F3A3"; +} +.mdi-numeric-1-box:before { + content: "\F3A4"; +} +.mdi-numeric-1-box-multiple-outline:before { + content: "\F3A5"; +} +.mdi-numeric-1-box-outline:before { + content: "\F3A6"; +} +.mdi-numeric-2-box:before { + content: "\F3A7"; +} +.mdi-numeric-2-box-multiple-outline:before { + content: "\F3A8"; +} +.mdi-numeric-2-box-outline:before { + content: "\F3A9"; +} +.mdi-numeric-3-box:before { + content: "\F3AA"; +} +.mdi-numeric-3-box-multiple-outline:before { + content: "\F3AB"; +} +.mdi-numeric-3-box-outline:before { + content: "\F3AC"; +} +.mdi-numeric-4-box:before { + content: "\F3AD"; +} +.mdi-numeric-4-box-multiple-outline:before { + content: "\F3AE"; +} +.mdi-numeric-4-box-outline:before { + content: "\F3AF"; +} +.mdi-numeric-5-box:before { + content: "\F3B0"; +} +.mdi-numeric-5-box-multiple-outline:before { + content: "\F3B1"; +} +.mdi-numeric-5-box-outline:before { + content: "\F3B2"; +} +.mdi-numeric-6-box:before { + content: "\F3B3"; +} +.mdi-numeric-6-box-multiple-outline:before { + content: "\F3B4"; +} +.mdi-numeric-6-box-outline:before { + content: "\F3B5"; +} +.mdi-numeric-7-box:before { + content: "\F3B6"; +} +.mdi-numeric-7-box-multiple-outline:before { + content: "\F3B7"; +} +.mdi-numeric-7-box-outline:before { + content: "\F3B8"; +} +.mdi-numeric-8-box:before { + content: "\F3B9"; +} +.mdi-numeric-8-box-multiple-outline:before { + content: "\F3BA"; +} +.mdi-numeric-8-box-outline:before { + content: "\F3BB"; +} +.mdi-numeric-9-box:before { + content: "\F3BC"; +} +.mdi-numeric-9-box-multiple-outline:before { + content: "\F3BD"; +} +.mdi-numeric-9-box-outline:before { + content: "\F3BE"; +} +.mdi-numeric-9-plus-box:before { + content: "\F3BF"; +} +.mdi-numeric-9-plus-box-multiple-outline:before { + content: "\F3C0"; +} +.mdi-numeric-9-plus-box-outline:before { + content: "\F3C1"; +} +.mdi-nutrition:before { + content: "\F3C2"; +} +.mdi-octagon:before { + content: "\F3C3"; +} +.mdi-octagon-outline:before { + content: "\F3C4"; +} +.mdi-odnoklassniki:before { + content: "\F3C5"; +} +.mdi-office:before { + content: "\F3C6"; +} +.mdi-oil:before { + content: "\F3C7"; +} +.mdi-oil-temperature:before { + content: "\F3C8"; +} +.mdi-omega:before { + content: "\F3C9"; +} +.mdi-onedrive:before { + content: "\F3CA"; +} +.mdi-opacity:before { + content: "\F5CC"; +} +.mdi-open-in-app:before { + content: "\F3CB"; +} +.mdi-open-in-new:before { + content: "\F3CC"; +} +.mdi-openid:before { + content: "\F3CD"; +} +.mdi-opera:before { + content: "\F3CE"; +} +.mdi-ornament:before { + content: "\F3CF"; +} +.mdi-ornament-variant:before { + content: "\F3D0"; +} +.mdi-outbox:before { + content: "\F3D1"; +} +.mdi-owl:before { + content: "\F3D2"; +} +.mdi-package:before { + content: "\F3D3"; +} +.mdi-package-down:before { + content: "\F3D4"; +} +.mdi-package-up:before { + content: "\F3D5"; +} +.mdi-package-variant:before { + content: "\F3D6"; +} +.mdi-package-variant-closed:before { + content: "\F3D7"; +} +.mdi-page-first:before { + content: "\F600"; +} +.mdi-page-last:before { + content: "\F601"; +} +.mdi-palette:before { + content: "\F3D8"; +} +.mdi-palette-advanced:before { + content: "\F3D9"; +} +.mdi-panda:before { + content: "\F3DA"; +} +.mdi-pandora:before { + content: "\F3DB"; +} +.mdi-panorama:before { + content: "\F3DC"; +} +.mdi-panorama-fisheye:before { + content: "\F3DD"; +} +.mdi-panorama-horizontal:before { + content: "\F3DE"; +} +.mdi-panorama-vertical:before { + content: "\F3DF"; +} +.mdi-panorama-wide-angle:before { + content: "\F3E0"; +} +.mdi-paper-cut-vertical:before { + content: "\F3E1"; +} +.mdi-paperclip:before { + content: "\F3E2"; +} +.mdi-parking:before { + content: "\F3E3"; +} +.mdi-pause:before { + content: "\F3E4"; +} +.mdi-pause-circle:before { + content: "\F3E5"; +} +.mdi-pause-circle-outline:before { + content: "\F3E6"; +} +.mdi-pause-octagon:before { + content: "\F3E7"; +} +.mdi-pause-octagon-outline:before { + content: "\F3E8"; +} +.mdi-paw:before { + content: "\F3E9"; +} +.mdi-paw-off:before { + content: "\F657"; +} +.mdi-pen:before { + content: "\F3EA"; +} +.mdi-pencil:before { + content: "\F3EB"; +} +.mdi-pencil-box:before { + content: "\F3EC"; +} +.mdi-pencil-box-outline:before { + content: "\F3ED"; +} +.mdi-pencil-lock:before { + content: "\F3EE"; +} +.mdi-pencil-off:before { + content: "\F3EF"; +} +.mdi-percent:before { + content: "\F3F0"; +} +.mdi-pharmacy:before { + content: "\F3F1"; +} +.mdi-phone:before { + content: "\F3F2"; +} +.mdi-phone-bluetooth:before { + content: "\F3F3"; +} +.mdi-phone-classic:before { + content: "\F602"; +} +.mdi-phone-forward:before { + content: "\F3F4"; +} +.mdi-phone-hangup:before { + content: "\F3F5"; +} +.mdi-phone-in-talk:before { + content: "\F3F6"; +} +.mdi-phone-incoming:before { + content: "\F3F7"; +} +.mdi-phone-locked:before { + content: "\F3F8"; +} +.mdi-phone-log:before { + content: "\F3F9"; +} +.mdi-phone-minus:before { + content: "\F658"; +} +.mdi-phone-missed:before { + content: "\F3FA"; +} +.mdi-phone-outgoing:before { + content: "\F3FB"; +} +.mdi-phone-paused:before { + content: "\F3FC"; +} +.mdi-phone-plus:before { + content: "\F659"; +} +.mdi-phone-settings:before { + content: "\F3FD"; +} +.mdi-phone-voip:before { + content: "\F3FE"; +} +.mdi-pi:before { + content: "\F3FF"; +} +.mdi-pi-box:before { + content: "\F400"; +} +.mdi-pig:before { + content: "\F401"; +} +.mdi-pill:before { + content: "\F402"; +} +.mdi-pin:before { + content: "\F403"; +} +.mdi-pin-off:before { + content: "\F404"; +} +.mdi-pine-tree:before { + content: "\F405"; +} +.mdi-pine-tree-box:before { + content: "\F406"; +} +.mdi-pinterest:before { + content: "\F407"; +} +.mdi-pinterest-box:before { + content: "\F408"; +} +.mdi-pizza:before { + content: "\F409"; +} +.mdi-play:before { + content: "\F40A"; +} +.mdi-play-box-outline:before { + content: "\F40B"; +} +.mdi-play-circle:before { + content: "\F40C"; +} +.mdi-play-circle-outline:before { + content: "\F40D"; +} +.mdi-play-pause:before { + content: "\F40E"; +} +.mdi-play-protected-content:before { + content: "\F40F"; +} +.mdi-playlist-check:before { + content: "\F5C7"; +} +.mdi-playlist-minus:before { + content: "\F410"; +} +.mdi-playlist-play:before { + content: "\F411"; +} +.mdi-playlist-plus:before { + content: "\F412"; +} +.mdi-playlist-remove:before { + content: "\F413"; +} +.mdi-playstation:before { + content: "\F414"; +} +.mdi-plus:before { + content: "\F415"; +} +.mdi-plus-box:before { + content: "\F416"; +} +.mdi-plus-circle:before { + content: "\F417"; +} +.mdi-plus-circle-multiple-outline:before { + content: "\F418"; +} +.mdi-plus-circle-outline:before { + content: "\F419"; +} +.mdi-plus-network:before { + content: "\F41A"; +} +.mdi-plus-one:before { + content: "\F41B"; +} +.mdi-pocket:before { + content: "\F41C"; +} +.mdi-pokeball:before { + content: "\F41D"; +} +.mdi-polaroid:before { + content: "\F41E"; +} +.mdi-poll:before { + content: "\F41F"; +} +.mdi-poll-box:before { + content: "\F420"; +} +.mdi-polymer:before { + content: "\F421"; +} +.mdi-pool:before { + content: "\F606"; +} +.mdi-popcorn:before { + content: "\F422"; +} +.mdi-pot:before { + content: "\F65A"; +} +.mdi-pot-mix:before { + content: "\F65B"; +} +.mdi-pound:before { + content: "\F423"; +} +.mdi-pound-box:before { + content: "\F424"; +} +.mdi-power:before { + content: "\F425"; +} +.mdi-power-settings:before { + content: "\F426"; +} +.mdi-power-socket:before { + content: "\F427"; +} +.mdi-presentation:before { + content: "\F428"; +} +.mdi-presentation-play:before { + content: "\F429"; +} +.mdi-printer:before { + content: "\F42A"; +} +.mdi-printer-3d:before { + content: "\F42B"; +} +.mdi-printer-alert:before { + content: "\F42C"; +} +.mdi-priority-high:before { + content: "\F603"; +} +.mdi-priority-low:before { + content: "\F604"; +} +.mdi-professional-hexagon:before { + content: "\F42D"; +} +.mdi-projector:before { + content: "\F42E"; +} +.mdi-projector-screen:before { + content: "\F42F"; +} +.mdi-pulse:before { + content: "\F430"; +} +.mdi-puzzle:before { + content: "\F431"; +} +.mdi-qqchat:before { + content: "\F605"; +} +.mdi-qrcode:before { + content: "\F432"; +} +.mdi-qrcode-scan:before { + content: "\F433"; +} +.mdi-quadcopter:before { + content: "\F434"; +} +.mdi-quality-high:before { + content: "\F435"; +} +.mdi-quicktime:before { + content: "\F436"; +} +.mdi-radar:before { + content: "\F437"; +} +.mdi-radiator:before { + content: "\F438"; +} +.mdi-radio:before { + content: "\F439"; +} +.mdi-radio-handheld:before { + content: "\F43A"; +} +.mdi-radio-tower:before { + content: "\F43B"; +} +.mdi-radioactive:before { + content: "\F43C"; +} +.mdi-radiobox-blank:before { + content: "\F43D"; +} +.mdi-radiobox-marked:before { + content: "\F43E"; +} +.mdi-raspberrypi:before { + content: "\F43F"; +} +.mdi-ray-end:before { + content: "\F440"; +} +.mdi-ray-end-arrow:before { + content: "\F441"; +} +.mdi-ray-start:before { + content: "\F442"; +} +.mdi-ray-start-arrow:before { + content: "\F443"; +} +.mdi-ray-start-end:before { + content: "\F444"; +} +.mdi-ray-vertex:before { + content: "\F445"; +} +.mdi-rdio:before { + content: "\F446"; +} +.mdi-read:before { + content: "\F447"; +} +.mdi-readability:before { + content: "\F448"; +} +.mdi-receipt:before { + content: "\F449"; +} +.mdi-record:before { + content: "\F44A"; +} +.mdi-record-rec:before { + content: "\F44B"; +} +.mdi-recycle:before { + content: "\F44C"; +} +.mdi-reddit:before { + content: "\F44D"; +} +.mdi-redo:before { + content: "\F44E"; +} +.mdi-redo-variant:before { + content: "\F44F"; +} +.mdi-refresh:before { + content: "\F450"; +} +.mdi-regex:before { + content: "\F451"; +} +.mdi-relative-scale:before { + content: "\F452"; +} +.mdi-reload:before { + content: "\F453"; +} +.mdi-remote:before { + content: "\F454"; +} +.mdi-rename-box:before { + content: "\F455"; +} +.mdi-repeat:before { + content: "\F456"; +} +.mdi-repeat-off:before { + content: "\F457"; +} +.mdi-repeat-once:before { + content: "\F458"; +} +.mdi-replay:before { + content: "\F459"; +} +.mdi-reply:before { + content: "\F45A"; +} +.mdi-reply-all:before { + content: "\F45B"; +} +.mdi-reproduction:before { + content: "\F45C"; +} +.mdi-resize-bottom-right:before { + content: "\F45D"; +} +.mdi-responsive:before { + content: "\F45E"; +} +.mdi-rewind:before { + content: "\F45F"; +} +.mdi-ribbon:before { + content: "\F460"; +} +.mdi-road:before { + content: "\F461"; +} +.mdi-road-variant:before { + content: "\F462"; +} +.mdi-rocket:before { + content: "\F463"; +} +.mdi-rotate-3d:before { + content: "\F464"; +} +.mdi-rotate-left:before { + content: "\F465"; +} +.mdi-rotate-left-variant:before { + content: "\F466"; +} +.mdi-rotate-right:before { + content: "\F467"; +} +.mdi-rotate-right-variant:before { + content: "\F468"; +} +.mdi-rounded-corner:before { + content: "\F607"; +} +.mdi-router-wireless:before { + content: "\F469"; +} +.mdi-routes:before { + content: "\F46A"; +} +.mdi-rowing:before { + content: "\F608"; +} +.mdi-rss:before { + content: "\F46B"; +} +.mdi-rss-box:before { + content: "\F46C"; +} +.mdi-ruler:before { + content: "\F46D"; +} +.mdi-run:before { + content: "\F46E"; +} +.mdi-sale:before { + content: "\F46F"; +} +.mdi-satellite:before { + content: "\F470"; +} +.mdi-satellite-variant:before { + content: "\F471"; +} +.mdi-saxophone:before { + content: "\F609"; +} +.mdi-scale:before { + content: "\F472"; +} +.mdi-scale-balance:before { + content: "\F5D1"; +} +.mdi-scale-bathroom:before { + content: "\F473"; +} +.mdi-school:before { + content: "\F474"; +} +.mdi-screen-rotation:before { + content: "\F475"; +} +.mdi-screen-rotation-lock:before { + content: "\F476"; +} +.mdi-screwdriver:before { + content: "\F477"; +} +.mdi-script:before { + content: "\F478"; +} +.mdi-sd:before { + content: "\F479"; +} +.mdi-seal:before { + content: "\F47A"; +} +.mdi-seat-flat:before { + content: "\F47B"; +} +.mdi-seat-flat-angled:before { + content: "\F47C"; +} +.mdi-seat-individual-suite:before { + content: "\F47D"; +} +.mdi-seat-legroom-extra:before { + content: "\F47E"; +} +.mdi-seat-legroom-normal:before { + content: "\F47F"; +} +.mdi-seat-legroom-reduced:before { + content: "\F480"; +} +.mdi-seat-recline-extra:before { + content: "\F481"; +} +.mdi-seat-recline-normal:before { + content: "\F482"; +} +.mdi-security:before { + content: "\F483"; +} +.mdi-security-network:before { + content: "\F484"; +} +.mdi-select:before { + content: "\F485"; +} +.mdi-select-all:before { + content: "\F486"; +} +.mdi-select-inverse:before { + content: "\F487"; +} +.mdi-select-off:before { + content: "\F488"; +} +.mdi-selection:before { + content: "\F489"; +} +.mdi-send:before { + content: "\F48A"; +} +.mdi-serial-port:before { + content: "\F65C"; +} +.mdi-server:before { + content: "\F48B"; +} +.mdi-server-minus:before { + content: "\F48C"; +} +.mdi-server-network:before { + content: "\F48D"; +} +.mdi-server-network-off:before { + content: "\F48E"; +} +.mdi-server-off:before { + content: "\F48F"; +} +.mdi-server-plus:before { + content: "\F490"; +} +.mdi-server-remove:before { + content: "\F491"; +} +.mdi-server-security:before { + content: "\F492"; +} +.mdi-settings:before { + content: "\F493"; +} +.mdi-settings-box:before { + content: "\F494"; +} +.mdi-shape-circle-plus:before { + content: "\F65D"; +} +.mdi-shape-plus:before { + content: "\F495"; +} +.mdi-shape-polygon-plus:before { + content: "\F65E"; +} +.mdi-shape-rectangle-plus:before { + content: "\F65F"; +} +.mdi-shape-square-plus:before { + content: "\F660"; +} +.mdi-share:before { + content: "\F496"; +} +.mdi-share-variant:before { + content: "\F497"; +} +.mdi-shield:before { + content: "\F498"; +} +.mdi-shield-outline:before { + content: "\F499"; +} +.mdi-shopping:before { + content: "\F49A"; +} +.mdi-shopping-music:before { + content: "\F49B"; +} +.mdi-shredder:before { + content: "\F49C"; +} +.mdi-shuffle:before { + content: "\F49D"; +} +.mdi-shuffle-disabled:before { + content: "\F49E"; +} +.mdi-shuffle-variant:before { + content: "\F49F"; +} +.mdi-sigma:before { + content: "\F4A0"; +} +.mdi-sigma-lower:before { + content: "\F62B"; +} +.mdi-sign-caution:before { + content: "\F4A1"; +} +.mdi-signal:before { + content: "\F4A2"; +} +.mdi-signal-variant:before { + content: "\F60A"; +} +.mdi-silverware:before { + content: "\F4A3"; +} +.mdi-silverware-fork:before { + content: "\F4A4"; +} +.mdi-silverware-spoon:before { + content: "\F4A5"; +} +.mdi-silverware-variant:before { + content: "\F4A6"; +} +.mdi-sim:before { + content: "\F4A7"; +} +.mdi-sim-alert:before { + content: "\F4A8"; +} +.mdi-sim-off:before { + content: "\F4A9"; +} +.mdi-sitemap:before { + content: "\F4AA"; +} +.mdi-skip-backward:before { + content: "\F4AB"; +} +.mdi-skip-forward:before { + content: "\F4AC"; +} +.mdi-skip-next:before { + content: "\F4AD"; +} +.mdi-skip-next-circle:before { + content: "\F661"; +} +.mdi-skip-next-circle-outline:before { + content: "\F662"; +} +.mdi-skip-previous:before { + content: "\F4AE"; +} +.mdi-skip-previous-circle:before { + content: "\F663"; +} +.mdi-skip-previous-circle-outline:before { + content: "\F664"; +} +.mdi-skype:before { + content: "\F4AF"; +} +.mdi-skype-business:before { + content: "\F4B0"; +} +.mdi-slack:before { + content: "\F4B1"; +} +.mdi-sleep:before { + content: "\F4B2"; +} +.mdi-sleep-off:before { + content: "\F4B3"; +} +.mdi-smoking:before { + content: "\F4B4"; +} +.mdi-smoking-off:before { + content: "\F4B5"; +} +.mdi-snapchat:before { + content: "\F4B6"; +} +.mdi-snowman:before { + content: "\F4B7"; +} +.mdi-soccer:before { + content: "\F4B8"; +} +.mdi-sofa:before { + content: "\F4B9"; +} +.mdi-sort:before { + content: "\F4BA"; +} +.mdi-sort-alphabetical:before { + content: "\F4BB"; +} +.mdi-sort-ascending:before { + content: "\F4BC"; +} +.mdi-sort-descending:before { + content: "\F4BD"; +} +.mdi-sort-numeric:before { + content: "\F4BE"; +} +.mdi-sort-variant:before { + content: "\F4BF"; +} +.mdi-soundcloud:before { + content: "\F4C0"; +} +.mdi-source-branch:before { + content: "\F62C"; +} +.mdi-source-fork:before { + content: "\F4C1"; +} +.mdi-source-merge:before { + content: "\F62D"; +} +.mdi-source-pull:before { + content: "\F4C2"; +} +.mdi-speaker:before { + content: "\F4C3"; +} +.mdi-speaker-off:before { + content: "\F4C4"; +} +.mdi-speedometer:before { + content: "\F4C5"; +} +.mdi-spellcheck:before { + content: "\F4C6"; +} +.mdi-spotify:before { + content: "\F4C7"; +} +.mdi-spotlight:before { + content: "\F4C8"; +} +.mdi-spotlight-beam:before { + content: "\F4C9"; +} +.mdi-spray:before { + content: "\F665"; +} +.mdi-square-inc:before { + content: "\F4CA"; +} +.mdi-square-inc-cash:before { + content: "\F4CB"; +} +.mdi-stackexchange:before { + content: "\F60B"; +} +.mdi-stackoverflow:before { + content: "\F4CC"; +} +.mdi-stairs:before { + content: "\F4CD"; +} +.mdi-star:before { + content: "\F4CE"; +} +.mdi-star-circle:before { + content: "\F4CF"; +} +.mdi-star-half:before { + content: "\F4D0"; +} +.mdi-star-off:before { + content: "\F4D1"; +} +.mdi-star-outline:before { + content: "\F4D2"; +} +.mdi-steam:before { + content: "\F4D3"; +} +.mdi-steering:before { + content: "\F4D4"; +} +.mdi-step-backward:before { + content: "\F4D5"; +} +.mdi-step-backward-2:before { + content: "\F4D6"; +} +.mdi-step-forward:before { + content: "\F4D7"; +} +.mdi-step-forward-2:before { + content: "\F4D8"; +} +.mdi-stethoscope:before { + content: "\F4D9"; +} +.mdi-sticker:before { + content: "\F5D0"; +} +.mdi-stocking:before { + content: "\F4DA"; +} +.mdi-stop:before { + content: "\F4DB"; +} +.mdi-stop-circle:before { + content: "\F666"; +} +.mdi-stop-circle-outline:before { + content: "\F667"; +} +.mdi-store:before { + content: "\F4DC"; +} +.mdi-store-24-hour:before { + content: "\F4DD"; +} +.mdi-stove:before { + content: "\F4DE"; +} +.mdi-subdirectory-arrow-left:before { + content: "\F60C"; +} +.mdi-subdirectory-arrow-right:before { + content: "\F60D"; +} +.mdi-subway:before { + content: "\F4DF"; +} +.mdi-sunglasses:before { + content: "\F4E0"; +} +.mdi-surround-sound:before { + content: "\F5C5"; +} +.mdi-swap-horizontal:before { + content: "\F4E1"; +} +.mdi-swap-vertical:before { + content: "\F4E2"; +} +.mdi-swim:before { + content: "\F4E3"; +} +.mdi-switch:before { + content: "\F4E4"; +} +.mdi-sword:before { + content: "\F4E5"; +} +.mdi-sync:before { + content: "\F4E6"; +} +.mdi-sync-alert:before { + content: "\F4E7"; +} +.mdi-sync-off:before { + content: "\F4E8"; +} +.mdi-tab:before { + content: "\F4E9"; +} +.mdi-tab-unselected:before { + content: "\F4EA"; +} +.mdi-table:before { + content: "\F4EB"; +} +.mdi-table-column-plus-after:before { + content: "\F4EC"; +} +.mdi-table-column-plus-before:before { + content: "\F4ED"; +} +.mdi-table-column-remove:before { + content: "\F4EE"; +} +.mdi-table-column-width:before { + content: "\F4EF"; +} +.mdi-table-edit:before { + content: "\F4F0"; +} +.mdi-table-large:before { + content: "\F4F1"; +} +.mdi-table-row-height:before { + content: "\F4F2"; +} +.mdi-table-row-plus-after:before { + content: "\F4F3"; +} +.mdi-table-row-plus-before:before { + content: "\F4F4"; +} +.mdi-table-row-remove:before { + content: "\F4F5"; +} +.mdi-tablet:before { + content: "\F4F6"; +} +.mdi-tablet-android:before { + content: "\F4F7"; +} +.mdi-tablet-ipad:before { + content: "\F4F8"; +} +.mdi-tag:before { + content: "\F4F9"; +} +.mdi-tag-faces:before { + content: "\F4FA"; +} +.mdi-tag-multiple:before { + content: "\F4FB"; +} +.mdi-tag-outline:before { + content: "\F4FC"; +} +.mdi-tag-text-outline:before { + content: "\F4FD"; +} +.mdi-target:before { + content: "\F4FE"; +} +.mdi-taxi:before { + content: "\F4FF"; +} +.mdi-teamviewer:before { + content: "\F500"; +} +.mdi-telegram:before { + content: "\F501"; +} +.mdi-television:before { + content: "\F502"; +} +.mdi-television-guide:before { + content: "\F503"; +} +.mdi-temperature-celsius:before { + content: "\F504"; +} +.mdi-temperature-fahrenheit:before { + content: "\F505"; +} +.mdi-temperature-kelvin:before { + content: "\F506"; +} +.mdi-tennis:before { + content: "\F507"; +} +.mdi-tent:before { + content: "\F508"; +} +.mdi-terrain:before { + content: "\F509"; +} +.mdi-test-tube:before { + content: "\F668"; +} +.mdi-text-shadow:before { + content: "\F669"; +} +.mdi-text-to-speech:before { + content: "\F50A"; +} +.mdi-text-to-speech-off:before { + content: "\F50B"; +} +.mdi-textbox:before { + content: "\F60E"; +} +.mdi-texture:before { + content: "\F50C"; +} +.mdi-theater:before { + content: "\F50D"; +} +.mdi-theme-light-dark:before { + content: "\F50E"; +} +.mdi-thermometer:before { + content: "\F50F"; +} +.mdi-thermometer-lines:before { + content: "\F510"; +} +.mdi-thumb-down:before { + content: "\F511"; +} +.mdi-thumb-down-outline:before { + content: "\F512"; +} +.mdi-thumb-up:before { + content: "\F513"; +} +.mdi-thumb-up-outline:before { + content: "\F514"; +} +.mdi-thumbs-up-down:before { + content: "\F515"; +} +.mdi-ticket:before { + content: "\F516"; +} +.mdi-ticket-account:before { + content: "\F517"; +} +.mdi-ticket-confirmation:before { + content: "\F518"; +} +.mdi-tie:before { + content: "\F519"; +} +.mdi-timelapse:before { + content: "\F51A"; +} +.mdi-timer:before { + content: "\F51B"; +} +.mdi-timer-10:before { + content: "\F51C"; +} +.mdi-timer-3:before { + content: "\F51D"; +} +.mdi-timer-off:before { + content: "\F51E"; +} +.mdi-timer-sand:before { + content: "\F51F"; +} +.mdi-timetable:before { + content: "\F520"; +} +.mdi-toggle-switch:before { + content: "\F521"; +} +.mdi-toggle-switch-off:before { + content: "\F522"; +} +.mdi-tooltip:before { + content: "\F523"; +} +.mdi-tooltip-edit:before { + content: "\F524"; +} +.mdi-tooltip-image:before { + content: "\F525"; +} +.mdi-tooltip-outline:before { + content: "\F526"; +} +.mdi-tooltip-outline-plus:before { + content: "\F527"; +} +.mdi-tooltip-text:before { + content: "\F528"; +} +.mdi-tooth:before { + content: "\F529"; +} +.mdi-tor:before { + content: "\F52A"; +} +.mdi-traffic-light:before { + content: "\F52B"; +} +.mdi-train:before { + content: "\F52C"; +} +.mdi-tram:before { + content: "\F52D"; +} +.mdi-transcribe:before { + content: "\F52E"; +} +.mdi-transcribe-close:before { + content: "\F52F"; +} +.mdi-transfer:before { + content: "\F530"; +} +.mdi-translate:before { + content: "\F5CA"; +} +.mdi-tree:before { + content: "\F531"; +} +.mdi-trello:before { + content: "\F532"; +} +.mdi-trending-down:before { + content: "\F533"; +} +.mdi-trending-neutral:before { + content: "\F534"; +} +.mdi-trending-up:before { + content: "\F535"; +} +.mdi-triangle:before { + content: "\F536"; +} +.mdi-triangle-outline:before { + content: "\F537"; +} +.mdi-trophy:before { + content: "\F538"; +} +.mdi-trophy-award:before { + content: "\F539"; +} +.mdi-trophy-outline:before { + content: "\F53A"; +} +.mdi-trophy-variant:before { + content: "\F53B"; +} +.mdi-trophy-variant-outline:before { + content: "\F53C"; +} +.mdi-truck:before { + content: "\F53D"; +} +.mdi-truck-delivery:before { + content: "\F53E"; +} +.mdi-tshirt-crew:before { + content: "\F53F"; +} +.mdi-tshirt-v:before { + content: "\F540"; +} +.mdi-tumblr:before { + content: "\F541"; +} +.mdi-tumblr-reblog:before { + content: "\F542"; +} +.mdi-tune:before { + content: "\F62E"; +} +.mdi-tune-vertical:before { + content: "\F66A"; +} +.mdi-twitch:before { + content: "\F543"; +} +.mdi-twitter:before { + content: "\F544"; +} +.mdi-twitter-box:before { + content: "\F545"; +} +.mdi-twitter-circle:before { + content: "\F546"; +} +.mdi-twitter-retweet:before { + content: "\F547"; +} +.mdi-ubuntu:before { + content: "\F548"; +} +.mdi-umbraco:before { + content: "\F549"; +} +.mdi-umbrella:before { + content: "\F54A"; +} +.mdi-umbrella-outline:before { + content: "\F54B"; +} +.mdi-undo:before { + content: "\F54C"; +} +.mdi-undo-variant:before { + content: "\F54D"; +} +.mdi-unfold-less:before { + content: "\F54E"; +} +.mdi-unfold-more:before { + content: "\F54F"; +} +.mdi-ungroup:before { + content: "\F550"; +} +.mdi-untappd:before { + content: "\F551"; +} +.mdi-upload:before { + content: "\F552"; +} +.mdi-usb:before { + content: "\F553"; +} +.mdi-vector-arrange-above:before { + content: "\F554"; +} +.mdi-vector-arrange-below:before { + content: "\F555"; +} +.mdi-vector-circle:before { + content: "\F556"; +} +.mdi-vector-circle-variant:before { + content: "\F557"; +} +.mdi-vector-combine:before { + content: "\F558"; +} +.mdi-vector-curve:before { + content: "\F559"; +} +.mdi-vector-difference:before { + content: "\F55A"; +} +.mdi-vector-difference-ab:before { + content: "\F55B"; +} +.mdi-vector-difference-ba:before { + content: "\F55C"; +} +.mdi-vector-intersection:before { + content: "\F55D"; +} +.mdi-vector-line:before { + content: "\F55E"; +} +.mdi-vector-point:before { + content: "\F55F"; +} +.mdi-vector-polygon:before { + content: "\F560"; +} +.mdi-vector-polyline:before { + content: "\F561"; +} +.mdi-vector-rectangle:before { + content: "\F5C6"; +} +.mdi-vector-selection:before { + content: "\F562"; +} +.mdi-vector-square:before { + content: "\F001"; +} +.mdi-vector-triangle:before { + content: "\F563"; +} +.mdi-vector-union:before { + content: "\F564"; +} +.mdi-verified:before { + content: "\F565"; +} +.mdi-vibrate:before { + content: "\F566"; +} +.mdi-video:before { + content: "\F567"; +} +.mdi-video-off:before { + content: "\F568"; +} +.mdi-video-switch:before { + content: "\F569"; +} +.mdi-view-agenda:before { + content: "\F56A"; +} +.mdi-view-array:before { + content: "\F56B"; +} +.mdi-view-carousel:before { + content: "\F56C"; +} +.mdi-view-column:before { + content: "\F56D"; +} +.mdi-view-dashboard:before { + content: "\F56E"; +} +.mdi-view-day:before { + content: "\F56F"; +} +.mdi-view-grid:before { + content: "\F570"; +} +.mdi-view-headline:before { + content: "\F571"; +} +.mdi-view-list:before { + content: "\F572"; +} +.mdi-view-module:before { + content: "\F573"; +} +.mdi-view-quilt:before { + content: "\F574"; +} +.mdi-view-stream:before { + content: "\F575"; +} +.mdi-view-week:before { + content: "\F576"; +} +.mdi-vimeo:before { + content: "\F577"; +} +.mdi-vine:before { + content: "\F578"; +} +.mdi-violin:before { + content: "\F60F"; +} +.mdi-visualstudio:before { + content: "\F610"; +} +.mdi-vk:before { + content: "\F579"; +} +.mdi-vk-box:before { + content: "\F57A"; +} +.mdi-vk-circle:before { + content: "\F57B"; +} +.mdi-vlc:before { + content: "\F57C"; +} +.mdi-voice:before { + content: "\F5CB"; +} +.mdi-voicemail:before { + content: "\F57D"; +} +.mdi-volume-high:before { + content: "\F57E"; +} +.mdi-volume-low:before { + content: "\F57F"; +} +.mdi-volume-medium:before { + content: "\F580"; +} +.mdi-volume-off:before { + content: "\F581"; +} +.mdi-vpn:before { + content: "\F582"; +} +.mdi-walk:before { + content: "\F583"; +} +.mdi-wallet:before { + content: "\F584"; +} +.mdi-wallet-giftcard:before { + content: "\F585"; +} +.mdi-wallet-membership:before { + content: "\F586"; +} +.mdi-wallet-travel:before { + content: "\F587"; +} +.mdi-wan:before { + content: "\F588"; +} +.mdi-watch:before { + content: "\F589"; +} +.mdi-watch-export:before { + content: "\F58A"; +} +.mdi-watch-import:before { + content: "\F58B"; +} +.mdi-water:before { + content: "\F58C"; +} +.mdi-water-off:before { + content: "\F58D"; +} +.mdi-water-percent:before { + content: "\F58E"; +} +.mdi-water-pump:before { + content: "\F58F"; +} +.mdi-watermark:before { + content: "\F612"; +} +.mdi-weather-cloudy:before { + content: "\F590"; +} +.mdi-weather-fog:before { + content: "\F591"; +} +.mdi-weather-hail:before { + content: "\F592"; +} +.mdi-weather-lightning:before { + content: "\F593"; +} +.mdi-weather-night:before { + content: "\F594"; +} +.mdi-weather-partlycloudy:before { + content: "\F595"; +} +.mdi-weather-pouring:before { + content: "\F596"; +} +.mdi-weather-rainy:before { + content: "\F597"; +} +.mdi-weather-snowy:before { + content: "\F598"; +} +.mdi-weather-sunny:before { + content: "\F599"; +} +.mdi-weather-sunset:before { + content: "\F59A"; +} +.mdi-weather-sunset-down:before { + content: "\F59B"; +} +.mdi-weather-sunset-up:before { + content: "\F59C"; +} +.mdi-weather-windy:before { + content: "\F59D"; +} +.mdi-weather-windy-variant:before { + content: "\F59E"; +} +.mdi-web:before { + content: "\F59F"; +} +.mdi-webcam:before { + content: "\F5A0"; +} +.mdi-webhook:before { + content: "\F62F"; +} +.mdi-wechat:before { + content: "\F611"; +} +.mdi-weight:before { + content: "\F5A1"; +} +.mdi-weight-kilogram:before { + content: "\F5A2"; +} +.mdi-whatsapp:before { + content: "\F5A3"; +} +.mdi-wheelchair-accessibility:before { + content: "\F5A4"; +} +.mdi-white-balance-auto:before { + content: "\F5A5"; +} +.mdi-white-balance-incandescent:before { + content: "\F5A6"; +} +.mdi-white-balance-iridescent:before { + content: "\F5A7"; +} +.mdi-white-balance-sunny:before { + content: "\F5A8"; +} +.mdi-wifi:before { + content: "\F5A9"; +} +.mdi-wifi-off:before { + content: "\F5AA"; +} +.mdi-wii:before { + content: "\F5AB"; +} +.mdi-wikipedia:before { + content: "\F5AC"; +} +.mdi-window-close:before { + content: "\F5AD"; +} +.mdi-window-closed:before { + content: "\F5AE"; +} +.mdi-window-maximize:before { + content: "\F5AF"; +} +.mdi-window-minimize:before { + content: "\F5B0"; +} +.mdi-window-open:before { + content: "\F5B1"; +} +.mdi-window-restore:before { + content: "\F5B2"; +} +.mdi-windows:before { + content: "\F5B3"; +} +.mdi-wordpress:before { + content: "\F5B4"; +} +.mdi-worker:before { + content: "\F5B5"; +} +.mdi-wrap:before { + content: "\F5B6"; +} +.mdi-wrench:before { + content: "\F5B7"; +} +.mdi-wunderlist:before { + content: "\F5B8"; +} +.mdi-xaml:before { + content: "\F673"; +} +.mdi-xbox:before { + content: "\F5B9"; +} +.mdi-xbox-controller:before { + content: "\F5BA"; +} +.mdi-xbox-controller-off:before { + content: "\F5BB"; +} +.mdi-xda:before { + content: "\F5BC"; +} +.mdi-xing:before { + content: "\F5BD"; +} +.mdi-xing-box:before { + content: "\F5BE"; +} +.mdi-xing-circle:before { + content: "\F5BF"; +} +.mdi-xml:before { + content: "\F5C0"; +} +.mdi-yeast:before { + content: "\F5C1"; +} +.mdi-yelp:before { + content: "\F5C2"; +} +.mdi-youtube-play:before { + content: "\F5C3"; +} +.mdi-zip-box:before { + content: "\F5C4"; +} +.mdi-18px { + font-size: 18px; +} +.mdi-24px { + font-size: 24px; +} +.mdi-36px { + font-size: 36px; +} +.mdi-48px { + font-size: 48px; +} +.mdi-dark { + color: rgba(0, 0, 0, 0.54); +} +.mdi-dark.mdi-inactive { + color: rgba(0, 0, 0, 0.26); +} +.mdi-light { + color: white; +} +.mdi-light.mdi-inactive { + color: rgba(255, 255, 255, 0.3); +} +.mdi-rotate-45 { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} +.mdi-rotate-90 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.mdi-rotate-135 { + -webkit-transform: rotate(135deg); + -ms-transform: rotate(135deg); + transform: rotate(135deg); +} +.mdi-rotate-180 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.mdi-rotate-225 { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + transform: rotate(225deg); +} +.mdi-rotate-270 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.mdi-rotate-315 { + -webkit-transform: rotate(315deg); + -ms-transform: rotate(315deg); + transform: rotate(315deg); +} +.mdi-flip-horizontal { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} +.mdi-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); + filter: FlipV; + -ms-filter: "FlipV"; +} +/*# sourceMappingURL=materialdesignicons.css.map */ diff --git a/assets/less/icons/css/themify-icons.css b/assets/less/icons/css/themify-icons.css new file mode 100644 index 0000000..02cc854 --- /dev/null +++ b/assets/less/icons/css/themify-icons.css @@ -0,0 +1,1076 @@ +@font-face { + font-family: 'themify'; + src: url('../fonts/themify.eot?-fvbane'); + src: url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), url('../fonts/themify.woff?-fvbane') format('woff'), url('../fonts/themify.ttf?-fvbane') format('truetype'), url('../fonts/themify.svg?-fvbane#themify') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="ti-"], +[class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} diff --git a/assets/less/icons/css/typicons.css b/assets/less/icons/css/typicons.css new file mode 100644 index 0000000..67cf57c --- /dev/null +++ b/assets/less/icons/css/typicons.css @@ -0,0 +1,1370 @@ +@charset 'UTF-8'; +/* @FONT-FACE loads font into browser */ +@font-face { + font-family: 'typicons'; + font-weight: normal; + font-style: normal; + src: url('../fonts/typicons.eot'); + src: url('../fonts/typicons.eot?#iefix') format('embedded-opentype'), url('../fonts/typicons.woff') format('woff'), url('../fonts/typicons.ttf') format('truetype'), url('../fonts/typicons.svg#typicons') format('svg'); +} +/* :before psuedo-selector inserts and styles icon */ +.typcn:before { + font-family: 'typicons'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + height: 1em; + font-size: 1em; + text-align: center; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} +/* Code for individual icons */ +.typcn-adjust-brightness:before { + content: '\e000'; + /* '' */ +} +.typcn-adjust-contrast:before { + content: '\e001'; + /* '' */ +} +.typcn-anchor-outline:before { + content: '\e002'; + /* '' */ +} +.typcn-anchor:before { + content: '\e003'; + /* '' */ +} +.typcn-archive:before { + content: '\e004'; + /* '' */ +} +.typcn-arrow-back-outline:before { + content: '\e005'; + /* '' */ +} +.typcn-arrow-back:before { + content: '\e006'; + /* '' */ +} +.typcn-arrow-down-outline:before { + content: '\e007'; + /* '' */ +} +.typcn-arrow-down-thick:before { + content: '\e008'; + /* '' */ +} +.typcn-arrow-down:before { + content: '\e009'; + /* '' */ +} +.typcn-arrow-forward-outline:before { + content: '\e00a'; + /* '' */ +} +.typcn-arrow-forward:before { + content: '\e00b'; + /* '' */ +} +.typcn-arrow-left-outline:before { + content: '\e00c'; + /* '' */ +} +.typcn-arrow-left-thick:before { + content: '\e00d'; + /* '' */ +} +.typcn-arrow-left:before { + content: '\e00e'; + /* '' */ +} +.typcn-arrow-loop-outline:before { + content: '\e00f'; + /* '' */ +} +.typcn-arrow-loop:before { + content: '\e010'; + /* '' */ +} +.typcn-arrow-maximise-outline:before { + content: '\e011'; + /* '' */ +} +.typcn-arrow-maximise:before { + content: '\e012'; + /* '' */ +} +.typcn-arrow-minimise-outline:before { + content: '\e013'; + /* '' */ +} +.typcn-arrow-minimise:before { + content: '\e014'; + /* '' */ +} +.typcn-arrow-move-outline:before { + content: '\e015'; + /* '' */ +} +.typcn-arrow-move:before { + content: '\e016'; + /* '' */ +} +.typcn-arrow-repeat-outline:before { + content: '\e017'; + /* '' */ +} +.typcn-arrow-repeat:before { + content: '\e018'; + /* '' */ +} +.typcn-arrow-right-outline:before { + content: '\e019'; + /* '' */ +} +.typcn-arrow-right-thick:before { + content: '\e01a'; + /* '' */ +} +.typcn-arrow-right:before { + content: '\e01b'; + /* '' */ +} +.typcn-arrow-shuffle:before { + content: '\e01c'; + /* '' */ +} +.typcn-arrow-sorted-down:before { + content: '\e01d'; + /* '' */ +} +.typcn-arrow-sorted-up:before { + content: '\e01e'; + /* '' */ +} +.typcn-arrow-sync-outline:before { + content: '\e01f'; + /* '' */ +} +.typcn-arrow-sync:before { + content: '\e020'; + /* '' */ +} +.typcn-arrow-unsorted:before { + content: '\e021'; + /* '' */ +} +.typcn-arrow-up-outline:before { + content: '\e022'; + /* '' */ +} +.typcn-arrow-up-thick:before { + content: '\e023'; + /* '' */ +} +.typcn-arrow-up:before { + content: '\e024'; + /* '' */ +} +.typcn-at:before { + content: '\e025'; + /* '' */ +} +.typcn-attachment-outline:before { + content: '\e026'; + /* '' */ +} +.typcn-attachment:before { + content: '\e027'; + /* '' */ +} +.typcn-backspace-outline:before { + content: '\e028'; + /* '' */ +} +.typcn-backspace:before { + content: '\e029'; + /* '' */ +} +.typcn-battery-charge:before { + content: '\e02a'; + /* '' */ +} +.typcn-battery-full:before { + content: '\e02b'; + /* '' */ +} +.typcn-battery-high:before { + content: '\e02c'; + /* '' */ +} +.typcn-battery-low:before { + content: '\e02d'; + /* '' */ +} +.typcn-battery-mid:before { + content: '\e02e'; + /* '' */ +} +.typcn-beaker:before { + content: '\e02f'; + /* '' */ +} +.typcn-beer:before { + content: '\e030'; + /* '' */ +} +.typcn-bell:before { + content: '\e031'; + /* '' */ +} +.typcn-book:before { + content: '\e032'; + /* '' */ +} +.typcn-bookmark:before { + content: '\e033'; + /* '' */ +} +.typcn-briefcase:before { + content: '\e034'; + /* '' */ +} +.typcn-brush:before { + content: '\e035'; + /* '' */ +} +.typcn-business-card:before { + content: '\e036'; + /* '' */ +} +.typcn-calculator:before { + content: '\e037'; + /* '' */ +} +.typcn-calendar-outline:before { + content: '\e038'; + /* '' */ +} +.typcn-calendar:before { + content: '\e039'; + /* '' */ +} +.typcn-camera-outline:before { + content: '\e03a'; + /* '' */ +} +.typcn-camera:before { + content: '\e03b'; + /* '' */ +} +.typcn-cancel-outline:before { + content: '\e03c'; + /* '' */ +} +.typcn-cancel:before { + content: '\e03d'; + /* '' */ +} +.typcn-chart-area-outline:before { + content: '\e03e'; + /* '' */ +} +.typcn-chart-area:before { + content: '\e03f'; + /* '' */ +} +.typcn-chart-bar-outline:before { + content: '\e040'; + /* '' */ +} +.typcn-chart-bar:before { + content: '\e041'; + /* '' */ +} +.typcn-chart-line-outline:before { + content: '\e042'; + /* '' */ +} +.typcn-chart-line:before { + content: '\e043'; + /* '' */ +} +.typcn-chart-pie-outline:before { + content: '\e044'; + /* '' */ +} +.typcn-chart-pie:before { + content: '\e045'; + /* '' */ +} +.typcn-chevron-left-outline:before { + content: '\e046'; + /* '' */ +} +.typcn-chevron-left:before { + content: '\e047'; + /* '' */ +} +.typcn-chevron-right-outline:before { + content: '\e048'; + /* '' */ +} +.typcn-chevron-right:before { + content: '\e049'; + /* '' */ +} +.typcn-clipboard:before { + content: '\e04a'; + /* '' */ +} +.typcn-cloud-storage:before { + content: '\e04b'; + /* '' */ +} +.typcn-cloud-storage-outline:before { + content: '\e054'; + /* '' */ +} +.typcn-code-outline:before { + content: '\e04c'; + /* '' */ +} +.typcn-code:before { + content: '\e04d'; + /* '' */ +} +.typcn-coffee:before { + content: '\e04e'; + /* '' */ +} +.typcn-cog-outline:before { + content: '\e04f'; + /* '' */ +} +.typcn-cog:before { + content: '\e050'; + /* '' */ +} +.typcn-compass:before { + content: '\e051'; + /* '' */ +} +.typcn-contacts:before { + content: '\e052'; + /* '' */ +} +.typcn-credit-card:before { + content: '\e053'; + /* '' */ +} +.typcn-css3:before { + content: '\e055'; + /* '' */ +} +.typcn-database:before { + content: '\e056'; + /* '' */ +} +.typcn-delete-outline:before { + content: '\e057'; + /* '' */ +} +.typcn-delete:before { + content: '\e058'; + /* '' */ +} +.typcn-device-desktop:before { + content: '\e059'; + /* '' */ +} +.typcn-device-laptop:before { + content: '\e05a'; + /* '' */ +} +.typcn-device-phone:before { + content: '\e05b'; + /* '' */ +} +.typcn-device-tablet:before { + content: '\e05c'; + /* '' */ +} +.typcn-directions:before { + content: '\e05d'; + /* '' */ +} +.typcn-divide-outline:before { + content: '\e05e'; + /* '' */ +} +.typcn-divide:before { + content: '\e05f'; + /* '' */ +} +.typcn-document-add:before { + content: '\e060'; + /* '' */ +} +.typcn-document-delete:before { + content: '\e061'; + /* '' */ +} +.typcn-document-text:before { + content: '\e062'; + /* '' */ +} +.typcn-document:before { + content: '\e063'; + /* '' */ +} +.typcn-download-outline:before { + content: '\e064'; + /* '' */ +} +.typcn-download:before { + content: '\e065'; + /* '' */ +} +.typcn-dropbox:before { + content: '\e066'; + /* '' */ +} +.typcn-edit:before { + content: '\e067'; + /* '' */ +} +.typcn-eject-outline:before { + content: '\e068'; + /* '' */ +} +.typcn-eject:before { + content: '\e069'; + /* '' */ +} +.typcn-equals-outline:before { + content: '\e06a'; + /* '' */ +} +.typcn-equals:before { + content: '\e06b'; + /* '' */ +} +.typcn-export-outline:before { + content: '\e06c'; + /* '' */ +} +.typcn-export:before { + content: '\e06d'; + /* '' */ +} +.typcn-eye-outline:before { + content: '\e06e'; + /* '' */ +} +.typcn-eye:before { + content: '\e06f'; + /* '' */ +} +.typcn-feather:before { + content: '\e070'; + /* '' */ +} +.typcn-film:before { + content: '\e071'; + /* '' */ +} +.typcn-filter:before { + content: '\e072'; + /* '' */ +} +.typcn-flag-outline:before { + content: '\e073'; + /* '' */ +} +.typcn-flag:before { + content: '\e074'; + /* '' */ +} +.typcn-flash-outline:before { + content: '\e075'; + /* '' */ +} +.typcn-flash:before { + content: '\e076'; + /* '' */ +} +.typcn-flow-children:before { + content: '\e077'; + /* '' */ +} +.typcn-flow-merge:before { + content: '\e078'; + /* '' */ +} +.typcn-flow-parallel:before { + content: '\e079'; + /* '' */ +} +.typcn-flow-switch:before { + content: '\e07a'; + /* '' */ +} +.typcn-folder-add:before { + content: '\e07b'; + /* '' */ +} +.typcn-folder-delete:before { + content: '\e07c'; + /* '' */ +} +.typcn-folder-open:before { + content: '\e07d'; + /* '' */ +} +.typcn-folder:before { + content: '\e07e'; + /* '' */ +} +.typcn-gift:before { + content: '\e07f'; + /* '' */ +} +.typcn-globe-outline:before { + content: '\e080'; + /* '' */ +} +.typcn-globe:before { + content: '\e081'; + /* '' */ +} +.typcn-group-outline:before { + content: '\e082'; + /* '' */ +} +.typcn-group:before { + content: '\e083'; + /* '' */ +} +.typcn-headphones:before { + content: '\e084'; + /* '' */ +} +.typcn-heart-full-outline:before { + content: '\e085'; + /* '' */ +} +.typcn-heart-half-outline:before { + content: '\e086'; + /* '' */ +} +.typcn-heart-outline:before { + content: '\e087'; + /* '' */ +} +.typcn-heart:before { + content: '\e088'; + /* '' */ +} +.typcn-home-outline:before { + content: '\e089'; + /* '' */ +} +.typcn-home:before { + content: '\e08a'; + /* '' */ +} +.typcn-html5:before { + content: '\e08b'; + /* '' */ +} +.typcn-image-outline:before { + content: '\e08c'; + /* '' */ +} +.typcn-image:before { + content: '\e08d'; + /* '' */ +} +.typcn-infinity-outline:before { + content: '\e08e'; + /* '' */ +} +.typcn-infinity:before { + content: '\e08f'; + /* '' */ +} +.typcn-info-large-outline:before { + content: '\e090'; + /* '' */ +} +.typcn-info-large:before { + content: '\e091'; + /* '' */ +} +.typcn-info-outline:before { + content: '\e092'; + /* '' */ +} +.typcn-info:before { + content: '\e093'; + /* '' */ +} +.typcn-input-checked-outline:before { + content: '\e094'; + /* '' */ +} +.typcn-input-checked:before { + content: '\e095'; + /* '' */ +} +.typcn-key-outline:before { + content: '\e096'; + /* '' */ +} +.typcn-key:before { + content: '\e097'; + /* '' */ +} +.typcn-keyboard:before { + content: '\e098'; + /* '' */ +} +.typcn-leaf:before { + content: '\e099'; + /* '' */ +} +.typcn-lightbulb:before { + content: '\e09a'; + /* '' */ +} +.typcn-link-outline:before { + content: '\e09b'; + /* '' */ +} +.typcn-link:before { + content: '\e09c'; + /* '' */ +} +.typcn-location-arrow-outline:before { + content: '\e09d'; + /* '' */ +} +.typcn-location-arrow:before { + content: '\e09e'; + /* '' */ +} +.typcn-location-outline:before { + content: '\e09f'; + /* '' */ +} +.typcn-location:before { + content: '\e0a0'; + /* '' */ +} +.typcn-lock-closed-outline:before { + content: '\e0a1'; + /* '' */ +} +.typcn-lock-closed:before { + content: '\e0a2'; + /* '' */ +} +.typcn-lock-open-outline:before { + content: '\e0a3'; + /* '' */ +} +.typcn-lock-open:before { + content: '\e0a4'; + /* '' */ +} +.typcn-mail:before { + content: '\e0a5'; + /* '' */ +} +.typcn-map:before { + content: '\e0a6'; + /* '' */ +} +.typcn-media-eject-outline:before { + content: '\e0a7'; + /* '' */ +} +.typcn-media-eject:before { + content: '\e0a8'; + /* '' */ +} +.typcn-media-fast-forward-outline:before { + content: '\e0a9'; + /* '' */ +} +.typcn-media-fast-forward:before { + content: '\e0aa'; + /* '' */ +} +.typcn-media-pause-outline:before { + content: '\e0ab'; + /* '' */ +} +.typcn-media-pause:before { + content: '\e0ac'; + /* '' */ +} +.typcn-media-play-outline:before { + content: '\e0ad'; + /* '' */ +} +.typcn-media-play-reverse-outline:before { + content: '\e0ae'; + /* '' */ +} +.typcn-media-play-reverse:before { + content: '\e0af'; + /* '' */ +} +.typcn-media-play:before { + content: '\e0b0'; + /* '' */ +} +.typcn-media-record-outline:before { + content: '\e0b1'; + /* '' */ +} +.typcn-media-record:before { + content: '\e0b2'; + /* '' */ +} +.typcn-media-rewind-outline:before { + content: '\e0b3'; + /* '' */ +} +.typcn-media-rewind:before { + content: '\e0b4'; + /* '' */ +} +.typcn-media-stop-outline:before { + content: '\e0b5'; + /* '' */ +} +.typcn-media-stop:before { + content: '\e0b6'; + /* '' */ +} +.typcn-message-typing:before { + content: '\e0b7'; + /* '' */ +} +.typcn-message:before { + content: '\e0b8'; + /* '' */ +} +.typcn-messages:before { + content: '\e0b9'; + /* '' */ +} +.typcn-microphone-outline:before { + content: '\e0ba'; + /* '' */ +} +.typcn-microphone:before { + content: '\e0bb'; + /* '' */ +} +.typcn-minus-outline:before { + content: '\e0bc'; + /* '' */ +} +.typcn-minus:before { + content: '\e0bd'; + /* '' */ +} +.typcn-mortar-board:before { + content: '\e0be'; + /* '' */ +} +.typcn-news:before { + content: '\e0bf'; + /* '' */ +} +.typcn-notes-outline:before { + content: '\e0c0'; + /* '' */ +} +.typcn-notes:before { + content: '\e0c1'; + /* '' */ +} +.typcn-pen:before { + content: '\e0c2'; + /* '' */ +} +.typcn-pencil:before { + content: '\e0c3'; + /* '' */ +} +.typcn-phone-outline:before { + content: '\e0c4'; + /* '' */ +} +.typcn-phone:before { + content: '\e0c5'; + /* '' */ +} +.typcn-pi-outline:before { + content: '\e0c6'; + /* '' */ +} +.typcn-pi:before { + content: '\e0c7'; + /* '' */ +} +.typcn-pin-outline:before { + content: '\e0c8'; + /* '' */ +} +.typcn-pin:before { + content: '\e0c9'; + /* '' */ +} +.typcn-pipette:before { + content: '\e0ca'; + /* '' */ +} +.typcn-plane-outline:before { + content: '\e0cb'; + /* '' */ +} +.typcn-plane:before { + content: '\e0cc'; + /* '' */ +} +.typcn-plug:before { + content: '\e0cd'; + /* '' */ +} +.typcn-plus-outline:before { + content: '\e0ce'; + /* '' */ +} +.typcn-plus:before { + content: '\e0cf'; + /* '' */ +} +.typcn-point-of-interest-outline:before { + content: '\e0d0'; + /* '' */ +} +.typcn-point-of-interest:before { + content: '\e0d1'; + /* '' */ +} +.typcn-power-outline:before { + content: '\e0d2'; + /* '' */ +} +.typcn-power:before { + content: '\e0d3'; + /* '' */ +} +.typcn-printer:before { + content: '\e0d4'; + /* '' */ +} +.typcn-puzzle-outline:before { + content: '\e0d5'; + /* '' */ +} +.typcn-puzzle:before { + content: '\e0d6'; + /* '' */ +} +.typcn-radar-outline:before { + content: '\e0d7'; + /* '' */ +} +.typcn-radar:before { + content: '\e0d8'; + /* '' */ +} +.typcn-refresh-outline:before { + content: '\e0d9'; + /* '' */ +} +.typcn-refresh:before { + content: '\e0da'; + /* '' */ +} +.typcn-rss-outline:before { + content: '\e0db'; + /* '' */ +} +.typcn-rss:before { + content: '\e0dc'; + /* '' */ +} +.typcn-scissors-outline:before { + content: '\e0dd'; + /* '' */ +} +.typcn-scissors:before { + content: '\e0de'; + /* '' */ +} +.typcn-shopping-bag:before { + content: '\e0df'; + /* '' */ +} +.typcn-shopping-cart:before { + content: '\e0e0'; + /* '' */ +} +.typcn-social-at-circular:before { + content: '\e0e1'; + /* '' */ +} +.typcn-social-dribbble-circular:before { + content: '\e0e2'; + /* '' */ +} +.typcn-social-dribbble:before { + content: '\e0e3'; + /* '' */ +} +.typcn-social-facebook-circular:before { + content: '\e0e4'; + /* '' */ +} +.typcn-social-facebook:before { + content: '\e0e5'; + /* '' */ +} +.typcn-social-flickr-circular:before { + content: '\e0e6'; + /* '' */ +} +.typcn-social-flickr:before { + content: '\e0e7'; + /* '' */ +} +.typcn-social-github-circular:before { + content: '\e0e8'; + /* '' */ +} +.typcn-social-github:before { + content: '\e0e9'; + /* '' */ +} +.typcn-social-google-plus-circular:before { + content: '\e0ea'; + /* '' */ +} +.typcn-social-google-plus:before { + content: '\e0eb'; + /* '' */ +} +.typcn-social-instagram-circular:before { + content: '\e0ec'; + /* '' */ +} +.typcn-social-instagram:before { + content: '\e0ed'; + /* '' */ +} +.typcn-social-last-fm-circular:before { + content: '\e0ee'; + /* '' */ +} +.typcn-social-last-fm:before { + content: '\e0ef'; + /* '' */ +} +.typcn-social-linkedin-circular:before { + content: '\e0f0'; + /* '' */ +} +.typcn-social-linkedin:before { + content: '\e0f1'; + /* '' */ +} +.typcn-social-pinterest-circular:before { + content: '\e0f2'; + /* '' */ +} +.typcn-social-pinterest:before { + content: '\e0f3'; + /* '' */ +} +.typcn-social-skype-outline:before { + content: '\e0f4'; + /* '' */ +} +.typcn-social-skype:before { + content: '\e0f5'; + /* '' */ +} +.typcn-social-tumbler-circular:before { + content: '\e0f6'; + /* '' */ +} +.typcn-social-tumbler:before { + content: '\e0f7'; + /* '' */ +} +.typcn-social-twitter-circular:before { + content: '\e0f8'; + /* '' */ +} +.typcn-social-twitter:before { + content: '\e0f9'; + /* '' */ +} +.typcn-social-vimeo-circular:before { + content: '\e0fa'; + /* '' */ +} +.typcn-social-vimeo:before { + content: '\e0fb'; + /* '' */ +} +.typcn-social-youtube-circular:before { + content: '\e0fc'; + /* '' */ +} +.typcn-social-youtube:before { + content: '\e0fd'; + /* '' */ +} +.typcn-sort-alphabetically-outline:before { + content: '\e0fe'; + /* '' */ +} +.typcn-sort-alphabetically:before { + content: '\e0ff'; + /* '' */ +} +.typcn-sort-numerically-outline:before { + content: '\e100'; + /* '' */ +} +.typcn-sort-numerically:before { + content: '\e101'; + /* '' */ +} +.typcn-spanner-outline:before { + content: '\e102'; + /* '' */ +} +.typcn-spanner:before { + content: '\e103'; + /* '' */ +} +.typcn-spiral:before { + content: '\e104'; + /* '' */ +} +.typcn-star-full-outline:before { + content: '\e105'; + /* '' */ +} +.typcn-star-half-outline:before { + content: '\e106'; + /* '' */ +} +.typcn-star-half:before { + content: '\e107'; + /* '' */ +} +.typcn-star-outline:before { + content: '\e108'; + /* '' */ +} +.typcn-star:before { + content: '\e109'; + /* '' */ +} +.typcn-starburst-outline:before { + content: '\e10a'; + /* '' */ +} +.typcn-starburst:before { + content: '\e10b'; + /* '' */ +} +.typcn-stopwatch:before { + content: '\e10c'; + /* '' */ +} +.typcn-support:before { + content: '\e10d'; + /* '' */ +} +.typcn-tabs-outline:before { + content: '\e10e'; + /* '' */ +} +.typcn-tag:before { + content: '\e10f'; + /* '' */ +} +.typcn-tags:before { + content: '\e110'; + /* '' */ +} +.typcn-th-large-outline:before { + content: '\e111'; + /* '' */ +} +.typcn-th-large:before { + content: '\e112'; + /* '' */ +} +.typcn-th-list-outline:before { + content: '\e113'; + /* '' */ +} +.typcn-th-list:before { + content: '\e114'; + /* '' */ +} +.typcn-th-menu-outline:before { + content: '\e115'; + /* '' */ +} +.typcn-th-menu:before { + content: '\e116'; + /* '' */ +} +.typcn-th-small-outline:before { + content: '\e117'; + /* '' */ +} +.typcn-th-small:before { + content: '\e118'; + /* '' */ +} +.typcn-thermometer:before { + content: '\e119'; + /* '' */ +} +.typcn-thumbs-down:before { + content: '\e11a'; + /* '' */ +} +.typcn-thumbs-ok:before { + content: '\e11b'; + /* '' */ +} +.typcn-thumbs-up:before { + content: '\e11c'; + /* '' */ +} +.typcn-tick-outline:before { + content: '\e11d'; + /* '' */ +} +.typcn-tick:before { + content: '\e11e'; + /* '' */ +} +.typcn-ticket:before { + content: '\e11f'; + /* '' */ +} +.typcn-time:before { + content: '\e120'; + /* '' */ +} +.typcn-times-outline:before { + content: '\e121'; + /* '' */ +} +.typcn-times:before { + content: '\e122'; + /* '' */ +} +.typcn-trash:before { + content: '\e123'; + /* '' */ +} +.typcn-tree:before { + content: '\e124'; + /* '' */ +} +.typcn-upload-outline:before { + content: '\e125'; + /* '' */ +} +.typcn-upload:before { + content: '\e126'; + /* '' */ +} +.typcn-user-add-outline:before { + content: '\e127'; + /* '' */ +} +.typcn-user-add:before { + content: '\e128'; + /* '' */ +} +.typcn-user-delete-outline:before { + content: '\e129'; + /* '' */ +} +.typcn-user-delete:before { + content: '\e12a'; + /* '' */ +} +.typcn-user-outline:before { + content: '\e12b'; + /* '' */ +} +.typcn-user:before { + content: '\e12c'; + /* '' */ +} +.typcn-vendor-android:before { + content: '\e12d'; + /* '' */ +} +.typcn-vendor-apple:before { + content: '\e12e'; + /* '' */ +} +.typcn-vendor-microsoft:before { + content: '\e12f'; + /* '' */ +} +.typcn-video-outline:before { + content: '\e130'; + /* '' */ +} +.typcn-video:before { + content: '\e131'; + /* '' */ +} +.typcn-volume-down:before { + content: '\e132'; + /* '' */ +} +.typcn-volume-mute:before { + content: '\e133'; + /* '' */ +} +.typcn-volume-up:before { + content: '\e134'; + /* '' */ +} +.typcn-volume:before { + content: '\e135'; + /* '' */ +} +.typcn-warning-outline:before { + content: '\e136'; + /* '' */ +} +.typcn-warning:before { + content: '\e137'; + /* '' */ +} +.typcn-watch:before { + content: '\e138'; + /* '' */ +} +.typcn-waves-outline:before { + content: '\e139'; + /* '' */ +} +.typcn-waves:before { + content: '\e13a'; + /* '' */ +} +.typcn-weather-cloudy:before { + content: '\e13b'; + /* '' */ +} +.typcn-weather-downpour:before { + content: '\e13c'; + /* '' */ +} +.typcn-weather-night:before { + content: '\e13d'; + /* '' */ +} +.typcn-weather-partly-sunny:before { + content: '\e13e'; + /* '' */ +} +.typcn-weather-shower:before { + content: '\e13f'; + /* '' */ +} +.typcn-weather-snow:before { + content: '\e140'; + /* '' */ +} +.typcn-weather-stormy:before { + content: '\e141'; + /* '' */ +} +.typcn-weather-sunny:before { + content: '\e142'; + /* '' */ +} +.typcn-weather-windy-cloudy:before { + content: '\e143'; + /* '' */ +} +.typcn-weather-windy:before { + content: '\e144'; + /* '' */ +} +.typcn-wi-fi-outline:before { + content: '\e145'; + /* '' */ +} +.typcn-wi-fi:before { + content: '\e146'; + /* '' */ +} +.typcn-wine:before { + content: '\e147'; + /* '' */ +} +.typcn-world-outline:before { + content: '\e148'; + /* '' */ +} +.typcn-world:before { + content: '\e149'; + /* '' */ +} +.typcn-zoom-in-outline:before { + content: '\e14a'; + /* '' */ +} +.typcn-zoom-in:before { + content: '\e14b'; + /* '' */ +} +.typcn-zoom-out-outline:before { + content: '\e14c'; + /* '' */ +} +.typcn-zoom-out:before { + content: '\e14d'; + /* '' */ +} +.typcn-zoom-outline:before { + content: '\e14e'; + /* '' */ +} +.typcn-zoom:before { + content: '\e14f'; + /* '' */ +} diff --git a/assets/less/icons/font-awesome/css/font-awesome.css b/assets/less/icons/font-awesome/css/font-awesome.css new file mode 100644 index 0000000..a0b879f --- /dev/null +++ b/assets/less/icons/font-awesome/css/font-awesome.css @@ -0,0 +1,2199 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/assets/less/icons/font-awesome/css/mixins.css b/assets/less/icons/font-awesome/css/mixins.css new file mode 100644 index 0000000..e69de29 diff --git a/assets/less/icons/font-awesome/css/variables.css b/assets/less/icons/font-awesome/css/variables.css new file mode 100644 index 0000000..e69de29 diff --git a/assets/less/icons/font-awesome/fonts/FontAwesome.otf b/assets/less/icons/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/assets/less/icons/font-awesome/fonts/FontAwesome.otf differ diff --git a/assets/less/icons/font-awesome/fonts/fontawesome-webfont.eot b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/assets/less/icons/font-awesome/fonts/fontawesome-webfont.svg b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,685 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="fontawesomeregular" horiz-adv-x="1536" > +<font-face units-per-em="1792" ascent="1536" descent="-256" /> +<missing-glyph horiz-adv-x="448" /> +<glyph unicode=" " horiz-adv-x="448" /> +<glyph unicode="&#x09;" horiz-adv-x="448" /> +<glyph unicode="&#xa0;" horiz-adv-x="448" /> +<glyph unicode="&#xa8;" horiz-adv-x="1792" /> +<glyph unicode="&#xa9;" horiz-adv-x="1792" /> +<glyph unicode="&#xae;" horiz-adv-x="1792" /> +<glyph unicode="&#xb4;" horiz-adv-x="1792" /> +<glyph unicode="&#xc6;" horiz-adv-x="1792" /> +<glyph unicode="&#xd8;" horiz-adv-x="1792" /> +<glyph unicode="&#x2000;" horiz-adv-x="768" /> +<glyph unicode="&#x2001;" horiz-adv-x="1537" /> +<glyph unicode="&#x2002;" horiz-adv-x="768" /> +<glyph unicode="&#x2003;" horiz-adv-x="1537" /> +<glyph unicode="&#x2004;" horiz-adv-x="512" /> +<glyph unicode="&#x2005;" horiz-adv-x="384" /> +<glyph unicode="&#x2006;" horiz-adv-x="256" /> +<glyph unicode="&#x2007;" horiz-adv-x="256" /> +<glyph unicode="&#x2008;" horiz-adv-x="192" /> +<glyph unicode="&#x2009;" horiz-adv-x="307" /> +<glyph unicode="&#x200a;" horiz-adv-x="85" /> +<glyph unicode="&#x202f;" horiz-adv-x="307" /> +<glyph unicode="&#x205f;" horiz-adv-x="384" /> +<glyph unicode="&#x2122;" horiz-adv-x="1792" /> +<glyph unicode="&#x221e;" horiz-adv-x="1792" /> +<glyph unicode="&#x2260;" horiz-adv-x="1792" /> +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> +<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> +<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> +<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> +<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> +<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> +<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> +<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> +<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> +<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> +<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> +<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " /> +<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> +<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> +<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> +<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> +<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> +<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> +<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> +<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> +<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> +<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> +<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> +<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> +<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> +<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> +<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> +<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> +<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> +<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> +<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> +<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> +<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> +<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> +<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> +<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> +<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> +<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> +<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> +<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> +<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> +<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> +<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> +<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> +<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> +<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> +<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> +<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> +<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> +<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> +<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> +<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> +<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> +<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> +<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> +<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> +<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> +<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> +<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> +<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> +<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> +<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> +<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> +<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> +<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> +<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> +<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> +<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> +<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> +<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> +<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> +<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> +<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> +<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> +<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf092;" d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> +<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> +<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> +<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> +<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> +<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> +<glyph unicode="&#xf09b;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5 t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" /> +<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> +<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> +<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> +<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> +<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> +<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> +<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> +<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> +<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> +<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> +<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> +<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> +<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> +<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> +<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> +<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> +<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> +<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> +<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> +<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> +<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> +<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> +<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> +<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> +<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> +<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> +<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> +<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" /> +<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> +<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> +<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> +<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> +<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> +<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> +<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> +<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> +<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> +<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> +<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> +<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> +<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> +<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> +<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> +<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> +<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> +<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> +<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> +<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> +<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> +<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> +<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> +<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> +<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> +<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> +<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> +<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> +<glyph unicode="&#xf116;" horiz-adv-x="1792" /> +<glyph unicode="&#xf117;" horiz-adv-x="1792" /> +<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> +<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> +<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> +<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> +<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> +<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> +<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> +<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> +<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> +<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> +<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> +<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> +<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> +<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> +<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> +<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> +<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> +<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> +<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> +<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> +<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> +<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> +<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> +<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> +<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> +<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> +<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> +<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> +<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> +<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> +<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> +<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> +<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> +<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> +<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> +<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> +<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> +<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> +<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> +<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> +<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> +<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> +<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> +<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> +<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" /> +<glyph unicode="&#xf16d;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" /> +<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> +<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> +<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" /> +<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> +<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> +<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> +<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> +<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> +<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> +<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> +<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> +<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> +<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> +<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> +<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> +<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> +<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> +<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> +<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> +<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " /> +<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> +<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> +<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> +<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> +<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" /> +<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> +<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> +<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> +<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> +<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" /> +<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> +<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" /> +<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> +<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> +<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" /> +<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" /> +<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> +<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> +<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" /> +<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> +<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " /> +<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" /> +<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> +<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> +<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> +<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " /> +<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> +<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> +<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> +<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" /> +<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> +<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> +<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> +<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" /> +<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" /> +<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> +<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> +<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> +<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> +<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> +<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> +<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> +<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> +<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" /> +<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> +<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" /> +<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> +<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> +<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> +<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> +<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> +<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> +<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" /> +<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" /> +<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> +<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> +<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> +<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> +<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> +<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> +<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" /> +<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> +<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> +<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> +<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> +<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> +<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" /> +<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M441 864q32 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" /> +<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> +<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> +<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" /> +<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> +<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> +<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> +<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> +<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> +<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> +<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" /> +<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> +<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> +<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> +<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> +<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> +<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> +<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> +<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> +<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> +<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> +<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" /> +<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" /> +<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" /> +<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" /> +<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" /> +<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" /> +<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" /> +<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" /> +<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" /> +<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" /> +<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" /> +<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" /> +<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" /> +<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" /> +<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" /> +<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" /> +<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" /> +<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" /> +<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" /> +<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> +<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" /> +<glyph unicode="&#xf22e;" horiz-adv-x="1792" /> +<glyph unicode="&#xf22f;" horiz-adv-x="1792" /> +<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" /> +<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" /> +<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" /> +<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" /> +<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" /> +<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" /> +<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" /> +<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" /> +<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" /> +<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" /> +<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" /> +<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" /> +<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" /> +<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" /> +<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" /> +<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" /> +<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" /> +<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" /> +<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" /> +<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" /> +<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" /> +<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" /> +<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" /> +<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" /> +<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> +<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" /> +<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" /> +<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" /> +<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" /> +<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" /> +<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" /> +<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" /> +<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" /> +<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" /> +<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" /> +<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" /> +<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" /> +<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" /> +<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" /> +<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" /> +<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" /> +<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" /> +<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" /> +<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" /> +<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" /> +<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" /> +<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " /> +<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" /> +<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> +<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" /> +<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" /> +<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" /> +<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" /> +<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> +<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" /> +<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" /> +<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" /> +<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" /> +<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" /> +<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> +<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" /> +<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" /> +<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" /> +<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" /> +<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" /> +<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" /> +<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" /> +<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" /> +<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" /> +<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" /> +<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 q16 0 16 -16z" /> +<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" /> +<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" /> +<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" /> +<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" /> +<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" /> +<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" /> +<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" /> +<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" /> +<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" /> +<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> +<glyph unicode="&#xf296;" horiz-adv-x="1792" d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" /> +<glyph unicode="&#xf297;" horiz-adv-x="1792" d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" /> +<glyph unicode="&#xf298;" d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" /> +<glyph unicode="&#xf299;" horiz-adv-x="1792" d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" /> +<glyph unicode="&#xf29a;" horiz-adv-x="1792" d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> +<glyph unicode="&#xf29b;" d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" /> +<glyph unicode="&#xf29c;" d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5 t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf29d;" horiz-adv-x="1408" d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 q-67 -192 -92 -234q-16 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 q3 -1 7 1t7 4l3 2q11 9 11 17z" /> +<glyph unicode="&#xf29e;" horiz-adv-x="2304" d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 t9.5 -70.5z" /> +<glyph unicode="&#xf2a0;" horiz-adv-x="1408" d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 q-18 -19 -45 -19z" /> +<glyph unicode="&#xf2a1;" horiz-adv-x="2176" d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" /> +<glyph unicode="&#xf2a2;" horiz-adv-x="1792" d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" /> +<glyph unicode="&#xf2a3;" horiz-adv-x="2304" d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" /> +<glyph unicode="&#xf2a4;" horiz-adv-x="1792" d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" /> +<glyph unicode="&#xf2a5;" d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf2a6;" horiz-adv-x="1535" d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" /> +<glyph unicode="&#xf2a7;" horiz-adv-x="1664" d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147l-4 -4t-5 -4q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148q-34 23 -76 23 q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26l-12 224 q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" /> +<glyph unicode="&#xf2a8;" horiz-adv-x="1792" d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" /> +<glyph unicode="&#xf2a9;" horiz-adv-x="1280" d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" /> +<glyph unicode="&#xf2aa;" d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 43 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> +<glyph unicode="&#xf2ab;" d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> +<glyph unicode="&#xf2ac;" horiz-adv-x="1664" d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" /> +<glyph unicode="&#xf2ad;" d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" /> +<glyph unicode="&#xf2ae;" horiz-adv-x="2304" d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" /> +<glyph unicode="&#xf2b0;" d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" /> +<glyph unicode="&#xf2b1;" horiz-adv-x="1664" d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" /> +<glyph unicode="&#xf2b2;" horiz-adv-x="1792" d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" /> +<glyph unicode="&#xf2b3;" d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110 h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> +<glyph unicode="&#xf2b4;" d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" /> +<glyph unicode="&#xf2b5;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b6;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b7;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b8;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2b9;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2ba;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bb;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bc;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2bd;" horiz-adv-x="1792" /> +<glyph unicode="&#xf2be;" horiz-adv-x="1792" /> +<glyph unicode="&#xf500;" horiz-adv-x="1792" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/assets/less/icons/font-awesome/fonts/fontawesome-webfont.ttf b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff2 b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/assets/less/icons/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/assets/less/icons/font-awesome/less/animated.less b/assets/less/icons/font-awesome/less/animated.less new file mode 100644 index 0000000..66ad52a --- /dev/null +++ b/assets/less/icons/font-awesome/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/assets/less/icons/font-awesome/less/bordered-pulled.less b/assets/less/icons/font-awesome/less/bordered-pulled.less new file mode 100644 index 0000000..f1c8ad7 --- /dev/null +++ b/assets/less/icons/font-awesome/less/bordered-pulled.less @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/assets/less/icons/font-awesome/less/core.less b/assets/less/icons/font-awesome/less/core.less new file mode 100644 index 0000000..c577ac8 --- /dev/null +++ b/assets/less/icons/font-awesome/less/core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/assets/less/icons/font-awesome/less/fixed-width.less b/assets/less/icons/font-awesome/less/fixed-width.less new file mode 100644 index 0000000..110289f --- /dev/null +++ b/assets/less/icons/font-awesome/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/assets/less/icons/font-awesome/less/font-awesome.less b/assets/less/icons/font-awesome/less/font-awesome.less new file mode 100644 index 0000000..c44e5f4 --- /dev/null +++ b/assets/less/icons/font-awesome/less/font-awesome.less @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; +@import "screen-reader.less"; diff --git a/assets/less/icons/font-awesome/less/icons.less b/assets/less/icons/font-awesome/less/icons.less new file mode 100644 index 0000000..ba21b22 --- /dev/null +++ b/assets/less/icons/font-awesome/less/icons.less @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-feed:before, +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } diff --git a/assets/less/icons/font-awesome/less/larger.less b/assets/less/icons/font-awesome/less/larger.less new file mode 100644 index 0000000..c9d6467 --- /dev/null +++ b/assets/less/icons/font-awesome/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/assets/less/icons/font-awesome/less/list.less b/assets/less/icons/font-awesome/less/list.less new file mode 100644 index 0000000..0b44038 --- /dev/null +++ b/assets/less/icons/font-awesome/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/assets/less/icons/font-awesome/less/mixins.less b/assets/less/icons/font-awesome/less/mixins.less new file mode 100644 index 0000000..beef231 --- /dev/null +++ b/assets/less/icons/font-awesome/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/assets/less/icons/font-awesome/less/path.less b/assets/less/icons/font-awesome/less/path.less new file mode 100644 index 0000000..835be41 --- /dev/null +++ b/assets/less/icons/font-awesome/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/assets/less/icons/font-awesome/less/rotated-flipped.less b/assets/less/icons/font-awesome/less/rotated-flipped.less new file mode 100644 index 0000000..f6ba814 --- /dev/null +++ b/assets/less/icons/font-awesome/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/assets/less/icons/font-awesome/less/screen-reader.less b/assets/less/icons/font-awesome/less/screen-reader.less new file mode 100644 index 0000000..11c1881 --- /dev/null +++ b/assets/less/icons/font-awesome/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/assets/less/icons/font-awesome/less/stacked.less b/assets/less/icons/font-awesome/less/stacked.less new file mode 100644 index 0000000..fc53fb0 --- /dev/null +++ b/assets/less/icons/font-awesome/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/assets/less/icons/font-awesome/less/variables.less b/assets/less/icons/font-awesome/less/variables.less new file mode 100644 index 0000000..2b33819 --- /dev/null +++ b/assets/less/icons/font-awesome/less/variables.less @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.6.3"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-500px: "\f26e"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; +@fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-safari: "\f267"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-television: "\f26c"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; +@fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/assets/less/icons/ionicons/css/_ionicons-variables.css b/assets/less/icons/ionicons/css/_ionicons-variables.css new file mode 100644 index 0000000..4726aa7 --- /dev/null +++ b/assets/less/icons/ionicons/css/_ionicons-variables.css @@ -0,0 +1,6 @@ +/*! +Ionicons, v1.5.0 +Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ +https://twitter.com/benjsperry https://twitter.com/ionicframework +MIT License: https://github.com/driftyco/ionicons +*/ diff --git a/assets/less/icons/ionicons/css/ionicons.css b/assets/less/icons/ionicons/css/ionicons.css new file mode 100644 index 0000000..f0eb438 --- /dev/null +++ b/assets/less/icons/ionicons/css/ionicons.css @@ -0,0 +1,2496 @@ +/*! +Ionicons, v1.5.0 +Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ +https://twitter.com/benjsperry https://twitter.com/ionicframework +MIT License: https://github.com/driftyco/ionicons +*/ +@font-face { + font-family: "Ionicons"; + src: url("../fonts/ionicons.eot?v=1.5.0"); + src: url("../fonts/ionicons.eot?v=1.5.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=1.5.0") format("truetype"), url("../fonts/ionicons.woff?v=1.5.0") format("woff"), url("../fonts/ionicons.svg?v=1.5.0#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; +} +.ion, +.ion-loading-a, +.ion-loading-b, +.ion-loading-c, +.ion-loading-d, +.ion-looping, +.ion-refreshing, +.ion-ios7-reloading, +.ionicons, +.ion-alert, +.ion-alert-circled, +.ion-android-add, +.ion-android-add-contact, +.ion-android-alarm, +.ion-android-archive, +.ion-android-arrow-back, +.ion-android-arrow-down-left, +.ion-android-arrow-down-right, +.ion-android-arrow-forward, +.ion-android-arrow-up-left, +.ion-android-arrow-up-right, +.ion-android-battery, +.ion-android-book, +.ion-android-calendar, +.ion-android-call, +.ion-android-camera, +.ion-android-chat, +.ion-android-checkmark, +.ion-android-clock, +.ion-android-close, +.ion-android-contact, +.ion-android-contacts, +.ion-android-data, +.ion-android-developer, +.ion-android-display, +.ion-android-download, +.ion-android-drawer, +.ion-android-dropdown, +.ion-android-earth, +.ion-android-folder, +.ion-android-forums, +.ion-android-friends, +.ion-android-hand, +.ion-android-image, +.ion-android-inbox, +.ion-android-information, +.ion-android-keypad, +.ion-android-lightbulb, +.ion-android-locate, +.ion-android-location, +.ion-android-mail, +.ion-android-microphone, +.ion-android-mixer, +.ion-android-more, +.ion-android-note, +.ion-android-playstore, +.ion-android-printer, +.ion-android-promotion, +.ion-android-reminder, +.ion-android-remove, +.ion-android-search, +.ion-android-send, +.ion-android-settings, +.ion-android-share, +.ion-android-social, +.ion-android-social-user, +.ion-android-sort, +.ion-android-stair-drawer, +.ion-android-star, +.ion-android-stopwatch, +.ion-android-storage, +.ion-android-system-back, +.ion-android-system-home, +.ion-android-system-windows, +.ion-android-timer, +.ion-android-trash, +.ion-android-user-menu, +.ion-android-volume, +.ion-android-wifi, +.ion-aperture, +.ion-archive, +.ion-arrow-down-a, +.ion-arrow-down-b, +.ion-arrow-down-c, +.ion-arrow-expand, +.ion-arrow-graph-down-left, +.ion-arrow-graph-down-right, +.ion-arrow-graph-up-left, +.ion-arrow-graph-up-right, +.ion-arrow-left-a, +.ion-arrow-left-b, +.ion-arrow-left-c, +.ion-arrow-move, +.ion-arrow-resize, +.ion-arrow-return-left, +.ion-arrow-return-right, +.ion-arrow-right-a, +.ion-arrow-right-b, +.ion-arrow-right-c, +.ion-arrow-shrink, +.ion-arrow-swap, +.ion-arrow-up-a, +.ion-arrow-up-b, +.ion-arrow-up-c, +.ion-asterisk, +.ion-at, +.ion-bag, +.ion-battery-charging, +.ion-battery-empty, +.ion-battery-full, +.ion-battery-half, +.ion-battery-low, +.ion-beaker, +.ion-beer, +.ion-bluetooth, +.ion-bonfire, +.ion-bookmark, +.ion-briefcase, +.ion-bug, +.ion-calculator, +.ion-calendar, +.ion-camera, +.ion-card, +.ion-cash, +.ion-chatbox, +.ion-chatbox-working, +.ion-chatboxes, +.ion-chatbubble, +.ion-chatbubble-working, +.ion-chatbubbles, +.ion-checkmark, +.ion-checkmark-circled, +.ion-checkmark-round, +.ion-chevron-down, +.ion-chevron-left, +.ion-chevron-right, +.ion-chevron-up, +.ion-clipboard, +.ion-clock, +.ion-close, +.ion-close-circled, +.ion-close-round, +.ion-closed-captioning, +.ion-cloud, +.ion-code, +.ion-code-download, +.ion-code-working, +.ion-coffee, +.ion-compass, +.ion-compose, +.ion-connection-bars, +.ion-contrast, +.ion-cube, +.ion-disc, +.ion-document, +.ion-document-text, +.ion-drag, +.ion-earth, +.ion-edit, +.ion-egg, +.ion-eject, +.ion-email, +.ion-eye, +.ion-eye-disabled, +.ion-female, +.ion-filing, +.ion-film-marker, +.ion-fireball, +.ion-flag, +.ion-flame, +.ion-flash, +.ion-flash-off, +.ion-flask, +.ion-folder, +.ion-fork, +.ion-fork-repo, +.ion-forward, +.ion-funnel, +.ion-game-controller-a, +.ion-game-controller-b, +.ion-gear-a, +.ion-gear-b, +.ion-grid, +.ion-hammer, +.ion-happy, +.ion-headphone, +.ion-heart, +.ion-heart-broken, +.ion-help, +.ion-help-buoy, +.ion-help-circled, +.ion-home, +.ion-icecream, +.ion-icon-social-google-plus, +.ion-icon-social-google-plus-outline, +.ion-image, +.ion-images, +.ion-information, +.ion-information-circled, +.ion-ionic, +.ion-ios7-alarm, +.ion-ios7-alarm-outline, +.ion-ios7-albums, +.ion-ios7-albums-outline, +.ion-ios7-americanfootball, +.ion-ios7-americanfootball-outline, +.ion-ios7-analytics, +.ion-ios7-analytics-outline, +.ion-ios7-arrow-back, +.ion-ios7-arrow-down, +.ion-ios7-arrow-forward, +.ion-ios7-arrow-left, +.ion-ios7-arrow-right, +.ion-ios7-arrow-thin-down, +.ion-ios7-arrow-thin-left, +.ion-ios7-arrow-thin-right, +.ion-ios7-arrow-thin-up, +.ion-ios7-arrow-up, +.ion-ios7-at, +.ion-ios7-at-outline, +.ion-ios7-barcode, +.ion-ios7-barcode-outline, +.ion-ios7-baseball, +.ion-ios7-baseball-outline, +.ion-ios7-basketball, +.ion-ios7-basketball-outline, +.ion-ios7-bell, +.ion-ios7-bell-outline, +.ion-ios7-bolt, +.ion-ios7-bolt-outline, +.ion-ios7-bookmarks, +.ion-ios7-bookmarks-outline, +.ion-ios7-box, +.ion-ios7-box-outline, +.ion-ios7-briefcase, +.ion-ios7-briefcase-outline, +.ion-ios7-browsers, +.ion-ios7-browsers-outline, +.ion-ios7-calculator, +.ion-ios7-calculator-outline, +.ion-ios7-calendar, +.ion-ios7-calendar-outline, +.ion-ios7-camera, +.ion-ios7-camera-outline, +.ion-ios7-cart, +.ion-ios7-cart-outline, +.ion-ios7-chatboxes, +.ion-ios7-chatboxes-outline, +.ion-ios7-chatbubble, +.ion-ios7-chatbubble-outline, +.ion-ios7-checkmark, +.ion-ios7-checkmark-empty, +.ion-ios7-checkmark-outline, +.ion-ios7-circle-filled, +.ion-ios7-circle-outline, +.ion-ios7-clock, +.ion-ios7-clock-outline, +.ion-ios7-close, +.ion-ios7-close-empty, +.ion-ios7-close-outline, +.ion-ios7-cloud, +.ion-ios7-cloud-download, +.ion-ios7-cloud-download-outline, +.ion-ios7-cloud-outline, +.ion-ios7-cloud-upload, +.ion-ios7-cloud-upload-outline, +.ion-ios7-cloudy, +.ion-ios7-cloudy-night, +.ion-ios7-cloudy-night-outline, +.ion-ios7-cloudy-outline, +.ion-ios7-cog, +.ion-ios7-cog-outline, +.ion-ios7-compose, +.ion-ios7-compose-outline, +.ion-ios7-contact, +.ion-ios7-contact-outline, +.ion-ios7-copy, +.ion-ios7-copy-outline, +.ion-ios7-download, +.ion-ios7-download-outline, +.ion-ios7-drag, +.ion-ios7-email, +.ion-ios7-email-outline, +.ion-ios7-expand, +.ion-ios7-eye, +.ion-ios7-eye-outline, +.ion-ios7-fastforward, +.ion-ios7-fastforward-outline, +.ion-ios7-filing, +.ion-ios7-filing-outline, +.ion-ios7-film, +.ion-ios7-film-outline, +.ion-ios7-flag, +.ion-ios7-flag-outline, +.ion-ios7-folder, +.ion-ios7-folder-outline, +.ion-ios7-football, +.ion-ios7-football-outline, +.ion-ios7-gear, +.ion-ios7-gear-outline, +.ion-ios7-glasses, +.ion-ios7-glasses-outline, +.ion-ios7-heart, +.ion-ios7-heart-outline, +.ion-ios7-help, +.ion-ios7-help-empty, +.ion-ios7-help-outline, +.ion-ios7-home, +.ion-ios7-home-outline, +.ion-ios7-infinite, +.ion-ios7-infinite-outline, +.ion-ios7-information, +.ion-ios7-information-empty, +.ion-ios7-information-outline, +.ion-ios7-ionic-outline, +.ion-ios7-keypad, +.ion-ios7-keypad-outline, +.ion-ios7-lightbulb, +.ion-ios7-lightbulb-outline, +.ion-ios7-location, +.ion-ios7-location-outline, +.ion-ios7-locked, +.ion-ios7-locked-outline, +.ion-ios7-loop, +.ion-ios7-loop-strong, +.ion-ios7-medkit, +.ion-ios7-medkit-outline, +.ion-ios7-mic, +.ion-ios7-mic-off, +.ion-ios7-mic-outline, +.ion-ios7-minus, +.ion-ios7-minus-empty, +.ion-ios7-minus-outline, +.ion-ios7-monitor, +.ion-ios7-monitor-outline, +.ion-ios7-moon, +.ion-ios7-moon-outline, +.ion-ios7-more, +.ion-ios7-more-outline, +.ion-ios7-musical-note, +.ion-ios7-musical-notes, +.ion-ios7-navigate, +.ion-ios7-navigate-outline, +.ion-ios7-paper, +.ion-ios7-paper-outline, +.ion-ios7-paperplane, +.ion-ios7-paperplane-outline, +.ion-ios7-partlysunny, +.ion-ios7-partlysunny-outline, +.ion-ios7-pause, +.ion-ios7-pause-outline, +.ion-ios7-paw, +.ion-ios7-paw-outline, +.ion-ios7-people, +.ion-ios7-people-outline, +.ion-ios7-person, +.ion-ios7-person-outline, +.ion-ios7-personadd, +.ion-ios7-personadd-outline, +.ion-ios7-photos, +.ion-ios7-photos-outline, +.ion-ios7-pie, +.ion-ios7-pie-outline, +.ion-ios7-play, +.ion-ios7-play-outline, +.ion-ios7-plus, +.ion-ios7-plus-empty, +.ion-ios7-plus-outline, +.ion-ios7-pricetag, +.ion-ios7-pricetag-outline, +.ion-ios7-pricetags, +.ion-ios7-pricetags-outline, +.ion-ios7-printer, +.ion-ios7-printer-outline, +.ion-ios7-pulse, +.ion-ios7-pulse-strong, +.ion-ios7-rainy, +.ion-ios7-rainy-outline, +.ion-ios7-recording, +.ion-ios7-recording-outline, +.ion-ios7-redo, +.ion-ios7-redo-outline, +.ion-ios7-refresh, +.ion-ios7-refresh-empty, +.ion-ios7-refresh-outline, +.ion-ios7-reload, +.ion-ios7-reverse-camera, +.ion-ios7-reverse-camera-outline, +.ion-ios7-rewind, +.ion-ios7-rewind-outline, +.ion-ios7-search, +.ion-ios7-search-strong, +.ion-ios7-settings, +.ion-ios7-settings-strong, +.ion-ios7-shrink, +.ion-ios7-skipbackward, +.ion-ios7-skipbackward-outline, +.ion-ios7-skipforward, +.ion-ios7-skipforward-outline, +.ion-ios7-snowy, +.ion-ios7-speedometer, +.ion-ios7-speedometer-outline, +.ion-ios7-star, +.ion-ios7-star-half, +.ion-ios7-star-outline, +.ion-ios7-stopwatch, +.ion-ios7-stopwatch-outline, +.ion-ios7-sunny, +.ion-ios7-sunny-outline, +.ion-ios7-telephone, +.ion-ios7-telephone-outline, +.ion-ios7-tennisball, +.ion-ios7-tennisball-outline, +.ion-ios7-thunderstorm, +.ion-ios7-thunderstorm-outline, +.ion-ios7-time, +.ion-ios7-time-outline, +.ion-ios7-timer, +.ion-ios7-timer-outline, +.ion-ios7-toggle, +.ion-ios7-toggle-outline, +.ion-ios7-trash, +.ion-ios7-trash-outline, +.ion-ios7-undo, +.ion-ios7-undo-outline, +.ion-ios7-unlocked, +.ion-ios7-unlocked-outline, +.ion-ios7-upload, +.ion-ios7-upload-outline, +.ion-ios7-videocam, +.ion-ios7-videocam-outline, +.ion-ios7-volume-high, +.ion-ios7-volume-low, +.ion-ios7-wineglass, +.ion-ios7-wineglass-outline, +.ion-ios7-world, +.ion-ios7-world-outline, +.ion-ipad, +.ion-iphone, +.ion-ipod, +.ion-jet, +.ion-key, +.ion-knife, +.ion-laptop, +.ion-leaf, +.ion-levels, +.ion-lightbulb, +.ion-link, +.ion-load-a, +.ion-load-b, +.ion-load-c, +.ion-load-d, +.ion-location, +.ion-locked, +.ion-log-in, +.ion-log-out, +.ion-loop, +.ion-magnet, +.ion-male, +.ion-man, +.ion-map, +.ion-medkit, +.ion-merge, +.ion-mic-a, +.ion-mic-b, +.ion-mic-c, +.ion-minus, +.ion-minus-circled, +.ion-minus-round, +.ion-model-s, +.ion-monitor, +.ion-more, +.ion-mouse, +.ion-music-note, +.ion-navicon, +.ion-navicon-round, +.ion-navigate, +.ion-network, +.ion-no-smoking, +.ion-nuclear, +.ion-outlet, +.ion-paper-airplane, +.ion-paperclip, +.ion-pause, +.ion-person, +.ion-person-add, +.ion-person-stalker, +.ion-pie-graph, +.ion-pin, +.ion-pinpoint, +.ion-pizza, +.ion-plane, +.ion-planet, +.ion-play, +.ion-playstation, +.ion-plus, +.ion-plus-circled, +.ion-plus-round, +.ion-podium, +.ion-pound, +.ion-power, +.ion-pricetag, +.ion-pricetags, +.ion-printer, +.ion-pull-request, +.ion-qr-scanner, +.ion-quote, +.ion-radio-waves, +.ion-record, +.ion-refresh, +.ion-reply, +.ion-reply-all, +.ion-ribbon-a, +.ion-ribbon-b, +.ion-sad, +.ion-scissors, +.ion-search, +.ion-settings, +.ion-share, +.ion-shuffle, +.ion-skip-backward, +.ion-skip-forward, +.ion-social-android, +.ion-social-android-outline, +.ion-social-apple, +.ion-social-apple-outline, +.ion-social-bitcoin, +.ion-social-bitcoin-outline, +.ion-social-buffer, +.ion-social-buffer-outline, +.ion-social-designernews, +.ion-social-designernews-outline, +.ion-social-dribbble, +.ion-social-dribbble-outline, +.ion-social-dropbox, +.ion-social-dropbox-outline, +.ion-social-facebook, +.ion-social-facebook-outline, +.ion-social-foursquare, +.ion-social-foursquare-outline, +.ion-social-freebsd-devil, +.ion-social-github, +.ion-social-github-outline, +.ion-social-google, +.ion-social-google-outline, +.ion-social-googleplus, +.ion-social-googleplus-outline, +.ion-social-hackernews, +.ion-social-hackernews-outline, +.ion-social-instagram, +.ion-social-instagram-outline, +.ion-social-linkedin, +.ion-social-linkedin-outline, +.ion-social-pinterest, +.ion-social-pinterest-outline, +.ion-social-reddit, +.ion-social-reddit-outline, +.ion-social-rss, +.ion-social-rss-outline, +.ion-social-skype, +.ion-social-skype-outline, +.ion-social-tumblr, +.ion-social-tumblr-outline, +.ion-social-tux, +.ion-social-twitter, +.ion-social-twitter-outline, +.ion-social-usd, +.ion-social-usd-outline, +.ion-social-vimeo, +.ion-social-vimeo-outline, +.ion-social-windows, +.ion-social-windows-outline, +.ion-social-wordpress, +.ion-social-wordpress-outline, +.ion-social-yahoo, +.ion-social-yahoo-outline, +.ion-social-youtube, +.ion-social-youtube-outline, +.ion-speakerphone, +.ion-speedometer, +.ion-spoon, +.ion-star, +.ion-stats-bars, +.ion-steam, +.ion-stop, +.ion-thermometer, +.ion-thumbsdown, +.ion-thumbsup, +.ion-toggle, +.ion-toggle-filled, +.ion-trash-a, +.ion-trash-b, +.ion-trophy, +.ion-umbrella, +.ion-university, +.ion-unlocked, +.ion-upload, +.ion-usb, +.ion-videocamera, +.ion-volume-high, +.ion-volume-low, +.ion-volume-medium, +.ion-volume-mute, +.ion-wand, +.ion-waterdrop, +.ion-wifi, +.ion-wineglass, +.ion-woman, +.ion-wrench, +.ion-xbox { + display: inline-block; + font-family: "Ionicons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.ion-spin, +.ion-loading-a, +.ion-loading-b, +.ion-loading-c, +.ion-loading-d, +.ion-looping, +.ion-refreshing, +.ion-ios7-reloading { + -webkit-animation: spin 1s infinite linear; + -moz-animation: spin 1s infinite linear; + -o-animation: spin 1s infinite linear; + animation: spin 1s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.ion-loading-a { + -webkit-animation-timing-function: steps(8, start); + -moz-animation-timing-function: steps(8, start); + animation-timing-function: steps(8, start); +} +.ion-alert:before { + content: "\f101"; +} +.ion-alert-circled:before { + content: "\f100"; +} +.ion-android-add:before { + content: "\f2c7"; +} +.ion-android-add-contact:before { + content: "\f2c6"; +} +.ion-android-alarm:before { + content: "\f2c8"; +} +.ion-android-archive:before { + content: "\f2c9"; +} +.ion-android-arrow-back:before { + content: "\f2ca"; +} +.ion-android-arrow-down-left:before { + content: "\f2cb"; +} +.ion-android-arrow-down-right:before { + content: "\f2cc"; +} +.ion-android-arrow-forward:before { + content: "\f30f"; +} +.ion-android-arrow-up-left:before { + content: "\f2cd"; +} +.ion-android-arrow-up-right:before { + content: "\f2ce"; +} +.ion-android-battery:before { + content: "\f2cf"; +} +.ion-android-book:before { + content: "\f2d0"; +} +.ion-android-calendar:before { + content: "\f2d1"; +} +.ion-android-call:before { + content: "\f2d2"; +} +.ion-android-camera:before { + content: "\f2d3"; +} +.ion-android-chat:before { + content: "\f2d4"; +} +.ion-android-checkmark:before { + content: "\f2d5"; +} +.ion-android-clock:before { + content: "\f2d6"; +} +.ion-android-close:before { + content: "\f2d7"; +} +.ion-android-contact:before { + content: "\f2d8"; +} +.ion-android-contacts:before { + content: "\f2d9"; +} +.ion-android-data:before { + content: "\f2da"; +} +.ion-android-developer:before { + content: "\f2db"; +} +.ion-android-display:before { + content: "\f2dc"; +} +.ion-android-download:before { + content: "\f2dd"; +} +.ion-android-drawer:before { + content: "\f310"; +} +.ion-android-dropdown:before { + content: "\f2de"; +} +.ion-android-earth:before { + content: "\f2df"; +} +.ion-android-folder:before { + content: "\f2e0"; +} +.ion-android-forums:before { + content: "\f2e1"; +} +.ion-android-friends:before { + content: "\f2e2"; +} +.ion-android-hand:before { + content: "\f2e3"; +} +.ion-android-image:before { + content: "\f2e4"; +} +.ion-android-inbox:before { + content: "\f2e5"; +} +.ion-android-information:before { + content: "\f2e6"; +} +.ion-android-keypad:before { + content: "\f2e7"; +} +.ion-android-lightbulb:before { + content: "\f2e8"; +} +.ion-android-locate:before { + content: "\f2e9"; +} +.ion-android-location:before { + content: "\f2ea"; +} +.ion-android-mail:before { + content: "\f2eb"; +} +.ion-android-microphone:before { + content: "\f2ec"; +} +.ion-android-mixer:before { + content: "\f2ed"; +} +.ion-android-more:before { + content: "\f2ee"; +} +.ion-android-note:before { + content: "\f2ef"; +} +.ion-android-playstore:before { + content: "\f2f0"; +} +.ion-android-printer:before { + content: "\f2f1"; +} +.ion-android-promotion:before { + content: "\f2f2"; +} +.ion-android-reminder:before { + content: "\f2f3"; +} +.ion-android-remove:before { + content: "\f2f4"; +} +.ion-android-search:before { + content: "\f2f5"; +} +.ion-android-send:before { + content: "\f2f6"; +} +.ion-android-settings:before { + content: "\f2f7"; +} +.ion-android-share:before { + content: "\f2f8"; +} +.ion-android-social:before { + content: "\f2fa"; +} +.ion-android-social-user:before { + content: "\f2f9"; +} +.ion-android-sort:before { + content: "\f2fb"; +} +.ion-android-stair-drawer:before { + content: "\f311"; +} +.ion-android-star:before { + content: "\f2fc"; +} +.ion-android-stopwatch:before { + content: "\f2fd"; +} +.ion-android-storage:before { + content: "\f2fe"; +} +.ion-android-system-back:before { + content: "\f2ff"; +} +.ion-android-system-home:before { + content: "\f300"; +} +.ion-android-system-windows:before { + content: "\f301"; +} +.ion-android-timer:before { + content: "\f302"; +} +.ion-android-trash:before { + content: "\f303"; +} +.ion-android-user-menu:before { + content: "\f312"; +} +.ion-android-volume:before { + content: "\f304"; +} +.ion-android-wifi:before { + content: "\f305"; +} +.ion-aperture:before { + content: "\f313"; +} +.ion-archive:before { + content: "\f102"; +} +.ion-arrow-down-a:before { + content: "\f103"; +} +.ion-arrow-down-b:before { + content: "\f104"; +} +.ion-arrow-down-c:before { + content: "\f105"; +} +.ion-arrow-expand:before { + content: "\f25e"; +} +.ion-arrow-graph-down-left:before { + content: "\f25f"; +} +.ion-arrow-graph-down-right:before { + content: "\f260"; +} +.ion-arrow-graph-up-left:before { + content: "\f261"; +} +.ion-arrow-graph-up-right:before { + content: "\f262"; +} +.ion-arrow-left-a:before { + content: "\f106"; +} +.ion-arrow-left-b:before { + content: "\f107"; +} +.ion-arrow-left-c:before { + content: "\f108"; +} +.ion-arrow-move:before { + content: "\f263"; +} +.ion-arrow-resize:before { + content: "\f264"; +} +.ion-arrow-return-left:before { + content: "\f265"; +} +.ion-arrow-return-right:before { + content: "\f266"; +} +.ion-arrow-right-a:before { + content: "\f109"; +} +.ion-arrow-right-b:before { + content: "\f10a"; +} +.ion-arrow-right-c:before { + content: "\f10b"; +} +.ion-arrow-shrink:before { + content: "\f267"; +} +.ion-arrow-swap:before { + content: "\f268"; +} +.ion-arrow-up-a:before { + content: "\f10c"; +} +.ion-arrow-up-b:before { + content: "\f10d"; +} +.ion-arrow-up-c:before { + content: "\f10e"; +} +.ion-asterisk:before { + content: "\f314"; +} +.ion-at:before { + content: "\f10f"; +} +.ion-bag:before { + content: "\f110"; +} +.ion-battery-charging:before { + content: "\f111"; +} +.ion-battery-empty:before { + content: "\f112"; +} +.ion-battery-full:before { + content: "\f113"; +} +.ion-battery-half:before { + content: "\f114"; +} +.ion-battery-low:before { + content: "\f115"; +} +.ion-beaker:before { + content: "\f269"; +} +.ion-beer:before { + content: "\f26a"; +} +.ion-bluetooth:before { + content: "\f116"; +} +.ion-bonfire:before { + content: "\f315"; +} +.ion-bookmark:before { + content: "\f26b"; +} +.ion-briefcase:before { + content: "\f26c"; +} +.ion-bug:before { + content: "\f2be"; +} +.ion-calculator:before { + content: "\f26d"; +} +.ion-calendar:before { + content: "\f117"; +} +.ion-camera:before { + content: "\f118"; +} +.ion-card:before { + content: "\f119"; +} +.ion-cash:before { + content: "\f316"; +} +.ion-chatbox:before { + content: "\f11b"; +} +.ion-chatbox-working:before { + content: "\f11a"; +} +.ion-chatboxes:before { + content: "\f11c"; +} +.ion-chatbubble:before { + content: "\f11e"; +} +.ion-chatbubble-working:before { + content: "\f11d"; +} +.ion-chatbubbles:before { + content: "\f11f"; +} +.ion-checkmark:before { + content: "\f122"; +} +.ion-checkmark-circled:before { + content: "\f120"; +} +.ion-checkmark-round:before { + content: "\f121"; +} +.ion-chevron-down:before { + content: "\f123"; +} +.ion-chevron-left:before { + content: "\f124"; +} +.ion-chevron-right:before { + content: "\f125"; +} +.ion-chevron-up:before { + content: "\f126"; +} +.ion-clipboard:before { + content: "\f127"; +} +.ion-clock:before { + content: "\f26e"; +} +.ion-close:before { + content: "\f12a"; +} +.ion-close-circled:before { + content: "\f128"; +} +.ion-close-round:before { + content: "\f129"; +} +.ion-closed-captioning:before { + content: "\f317"; +} +.ion-cloud:before { + content: "\f12b"; +} +.ion-code:before { + content: "\f271"; +} +.ion-code-download:before { + content: "\f26f"; +} +.ion-code-working:before { + content: "\f270"; +} +.ion-coffee:before { + content: "\f272"; +} +.ion-compass:before { + content: "\f273"; +} +.ion-compose:before { + content: "\f12c"; +} +.ion-connection-bars:before { + content: "\f274"; +} +.ion-contrast:before { + content: "\f275"; +} +.ion-cube:before { + content: "\f318"; +} +.ion-disc:before { + content: "\f12d"; +} +.ion-document:before { + content: "\f12f"; +} +.ion-document-text:before { + content: "\f12e"; +} +.ion-drag:before { + content: "\f130"; +} +.ion-earth:before { + content: "\f276"; +} +.ion-edit:before { + content: "\f2bf"; +} +.ion-egg:before { + content: "\f277"; +} +.ion-eject:before { + content: "\f131"; +} +.ion-email:before { + content: "\f132"; +} +.ion-eye:before { + content: "\f133"; +} +.ion-eye-disabled:before { + content: "\f306"; +} +.ion-female:before { + content: "\f278"; +} +.ion-filing:before { + content: "\f134"; +} +.ion-film-marker:before { + content: "\f135"; +} +.ion-fireball:before { + content: "\f319"; +} +.ion-flag:before { + content: "\f279"; +} +.ion-flame:before { + content: "\f31a"; +} +.ion-flash:before { + content: "\f137"; +} +.ion-flash-off:before { + content: "\f136"; +} +.ion-flask:before { + content: "\f138"; +} +.ion-folder:before { + content: "\f139"; +} +.ion-fork:before { + content: "\f27a"; +} +.ion-fork-repo:before { + content: "\f2c0"; +} +.ion-forward:before { + content: "\f13a"; +} +.ion-funnel:before { + content: "\f31b"; +} +.ion-game-controller-a:before { + content: "\f13b"; +} +.ion-game-controller-b:before { + content: "\f13c"; +} +.ion-gear-a:before { + content: "\f13d"; +} +.ion-gear-b:before { + content: "\f13e"; +} +.ion-grid:before { + content: "\f13f"; +} +.ion-hammer:before { + content: "\f27b"; +} +.ion-happy:before { + content: "\f31c"; +} +.ion-headphone:before { + content: "\f140"; +} +.ion-heart:before { + content: "\f141"; +} +.ion-heart-broken:before { + content: "\f31d"; +} +.ion-help:before { + content: "\f143"; +} +.ion-help-buoy:before { + content: "\f27c"; +} +.ion-help-circled:before { + content: "\f142"; +} +.ion-home:before { + content: "\f144"; +} +.ion-icecream:before { + content: "\f27d"; +} +.ion-icon-social-google-plus:before { + content: "\f146"; +} +.ion-icon-social-google-plus-outline:before { + content: "\f145"; +} +.ion-image:before { + content: "\f147"; +} +.ion-images:before { + content: "\f148"; +} +.ion-information:before { + content: "\f14a"; +} +.ion-information-circled:before { + content: "\f149"; +} +.ion-ionic:before { + content: "\f14b"; +} +.ion-ios7-alarm:before { + content: "\f14d"; +} +.ion-ios7-alarm-outline:before { + content: "\f14c"; +} +.ion-ios7-albums:before { + content: "\f14f"; +} +.ion-ios7-albums-outline:before { + content: "\f14e"; +} +.ion-ios7-americanfootball:before { + content: "\f31f"; +} +.ion-ios7-americanfootball-outline:before { + content: "\f31e"; +} +.ion-ios7-analytics:before { + content: "\f321"; +} +.ion-ios7-analytics-outline:before { + content: "\f320"; +} +.ion-ios7-arrow-back:before { + content: "\f150"; +} +.ion-ios7-arrow-down:before { + content: "\f151"; +} +.ion-ios7-arrow-forward:before { + content: "\f152"; +} +.ion-ios7-arrow-left:before { + content: "\f153"; +} +.ion-ios7-arrow-right:before { + content: "\f154"; +} +.ion-ios7-arrow-thin-down:before { + content: "\f27e"; +} +.ion-ios7-arrow-thin-left:before { + content: "\f27f"; +} +.ion-ios7-arrow-thin-right:before { + content: "\f280"; +} +.ion-ios7-arrow-thin-up:before { + content: "\f281"; +} +.ion-ios7-arrow-up:before { + content: "\f155"; +} +.ion-ios7-at:before { + content: "\f157"; +} +.ion-ios7-at-outline:before { + content: "\f156"; +} +.ion-ios7-barcode:before { + content: "\f323"; +} +.ion-ios7-barcode-outline:before { + content: "\f322"; +} +.ion-ios7-baseball:before { + content: "\f325"; +} +.ion-ios7-baseball-outline:before { + content: "\f324"; +} +.ion-ios7-basketball:before { + content: "\f327"; +} +.ion-ios7-basketball-outline:before { + content: "\f326"; +} +.ion-ios7-bell:before { + content: "\f159"; +} +.ion-ios7-bell-outline:before { + content: "\f158"; +} +.ion-ios7-bolt:before { + content: "\f15b"; +} +.ion-ios7-bolt-outline:before { + content: "\f15a"; +} +.ion-ios7-bookmarks:before { + content: "\f15d"; +} +.ion-ios7-bookmarks-outline:before { + content: "\f15c"; +} +.ion-ios7-box:before { + content: "\f15f"; +} +.ion-ios7-box-outline:before { + content: "\f15e"; +} +.ion-ios7-briefcase:before { + content: "\f283"; +} +.ion-ios7-briefcase-outline:before { + content: "\f282"; +} +.ion-ios7-browsers:before { + content: "\f161"; +} +.ion-ios7-browsers-outline:before { + content: "\f160"; +} +.ion-ios7-calculator:before { + content: "\f285"; +} +.ion-ios7-calculator-outline:before { + content: "\f284"; +} +.ion-ios7-calendar:before { + content: "\f163"; +} +.ion-ios7-calendar-outline:before { + content: "\f162"; +} +.ion-ios7-camera:before { + content: "\f165"; +} +.ion-ios7-camera-outline:before { + content: "\f164"; +} +.ion-ios7-cart:before { + content: "\f167"; +} +.ion-ios7-cart-outline:before { + content: "\f166"; +} +.ion-ios7-chatboxes:before { + content: "\f169"; +} +.ion-ios7-chatboxes-outline:before { + content: "\f168"; +} +.ion-ios7-chatbubble:before { + content: "\f16b"; +} +.ion-ios7-chatbubble-outline:before { + content: "\f16a"; +} +.ion-ios7-checkmark:before { + content: "\f16e"; +} +.ion-ios7-checkmark-empty:before { + content: "\f16c"; +} +.ion-ios7-checkmark-outline:before { + content: "\f16d"; +} +.ion-ios7-circle-filled:before { + content: "\f16f"; +} +.ion-ios7-circle-outline:before { + content: "\f170"; +} +.ion-ios7-clock:before { + content: "\f172"; +} +.ion-ios7-clock-outline:before { + content: "\f171"; +} +.ion-ios7-close:before { + content: "\f2bc"; +} +.ion-ios7-close-empty:before { + content: "\f2bd"; +} +.ion-ios7-close-outline:before { + content: "\f2bb"; +} +.ion-ios7-cloud:before { + content: "\f178"; +} +.ion-ios7-cloud-download:before { + content: "\f174"; +} +.ion-ios7-cloud-download-outline:before { + content: "\f173"; +} +.ion-ios7-cloud-outline:before { + content: "\f175"; +} +.ion-ios7-cloud-upload:before { + content: "\f177"; +} +.ion-ios7-cloud-upload-outline:before { + content: "\f176"; +} +.ion-ios7-cloudy:before { + content: "\f17a"; +} +.ion-ios7-cloudy-night:before { + content: "\f308"; +} +.ion-ios7-cloudy-night-outline:before { + content: "\f307"; +} +.ion-ios7-cloudy-outline:before { + content: "\f179"; +} +.ion-ios7-cog:before { + content: "\f17c"; +} +.ion-ios7-cog-outline:before { + content: "\f17b"; +} +.ion-ios7-compose:before { + content: "\f17e"; +} +.ion-ios7-compose-outline:before { + content: "\f17d"; +} +.ion-ios7-contact:before { + content: "\f180"; +} +.ion-ios7-contact-outline:before { + content: "\f17f"; +} +.ion-ios7-copy:before { + content: "\f182"; +} +.ion-ios7-copy-outline:before { + content: "\f181"; +} +.ion-ios7-download:before { + content: "\f184"; +} +.ion-ios7-download-outline:before { + content: "\f183"; +} +.ion-ios7-drag:before { + content: "\f185"; +} +.ion-ios7-email:before { + content: "\f187"; +} +.ion-ios7-email-outline:before { + content: "\f186"; +} +.ion-ios7-expand:before { + content: "\f30d"; +} +.ion-ios7-eye:before { + content: "\f189"; +} +.ion-ios7-eye-outline:before { + content: "\f188"; +} +.ion-ios7-fastforward:before { + content: "\f18b"; +} +.ion-ios7-fastforward-outline:before { + content: "\f18a"; +} +.ion-ios7-filing:before { + content: "\f18d"; +} +.ion-ios7-filing-outline:before { + content: "\f18c"; +} +.ion-ios7-film:before { + content: "\f18f"; +} +.ion-ios7-film-outline:before { + content: "\f18e"; +} +.ion-ios7-flag:before { + content: "\f191"; +} +.ion-ios7-flag-outline:before { + content: "\f190"; +} +.ion-ios7-folder:before { + content: "\f193"; +} +.ion-ios7-folder-outline:before { + content: "\f192"; +} +.ion-ios7-football:before { + content: "\f329"; +} +.ion-ios7-football-outline:before { + content: "\f328"; +} +.ion-ios7-gear:before { + content: "\f195"; +} +.ion-ios7-gear-outline:before { + content: "\f194"; +} +.ion-ios7-glasses:before { + content: "\f197"; +} +.ion-ios7-glasses-outline:before { + content: "\f196"; +} +.ion-ios7-heart:before { + content: "\f199"; +} +.ion-ios7-heart-outline:before { + content: "\f198"; +} +.ion-ios7-help:before { + content: "\f19c"; +} +.ion-ios7-help-empty:before { + content: "\f19a"; +} +.ion-ios7-help-outline:before { + content: "\f19b"; +} +.ion-ios7-home:before { + content: "\f32b"; +} +.ion-ios7-home-outline:before { + content: "\f32a"; +} +.ion-ios7-infinite:before { + content: "\f19e"; +} +.ion-ios7-infinite-outline:before { + content: "\f19d"; +} +.ion-ios7-information:before { + content: "\f1a1"; +} +.ion-ios7-information-empty:before { + content: "\f19f"; +} +.ion-ios7-information-outline:before { + content: "\f1a0"; +} +.ion-ios7-ionic-outline:before { + content: "\f1a2"; +} +.ion-ios7-keypad:before { + content: "\f1a4"; +} +.ion-ios7-keypad-outline:before { + content: "\f1a3"; +} +.ion-ios7-lightbulb:before { + content: "\f287"; +} +.ion-ios7-lightbulb-outline:before { + content: "\f286"; +} +.ion-ios7-location:before { + content: "\f1a6"; +} +.ion-ios7-location-outline:before { + content: "\f1a5"; +} +.ion-ios7-locked:before { + content: "\f1a8"; +} +.ion-ios7-locked-outline:before { + content: "\f1a7"; +} +.ion-ios7-loop:before { + content: "\f32d"; +} +.ion-ios7-loop-strong:before { + content: "\f32c"; +} +.ion-ios7-medkit:before { + content: "\f289"; +} +.ion-ios7-medkit-outline:before { + content: "\f288"; +} +.ion-ios7-mic:before { + content: "\f1ab"; +} +.ion-ios7-mic-off:before { + content: "\f1a9"; +} +.ion-ios7-mic-outline:before { + content: "\f1aa"; +} +.ion-ios7-minus:before { + content: "\f1ae"; +} +.ion-ios7-minus-empty:before { + content: "\f1ac"; +} +.ion-ios7-minus-outline:before { + content: "\f1ad"; +} +.ion-ios7-monitor:before { + content: "\f1b0"; +} +.ion-ios7-monitor-outline:before { + content: "\f1af"; +} +.ion-ios7-moon:before { + content: "\f1b2"; +} +.ion-ios7-moon-outline:before { + content: "\f1b1"; +} +.ion-ios7-more:before { + content: "\f1b4"; +} +.ion-ios7-more-outline:before { + content: "\f1b3"; +} +.ion-ios7-musical-note:before { + content: "\f1b5"; +} +.ion-ios7-musical-notes:before { + content: "\f1b6"; +} +.ion-ios7-navigate:before { + content: "\f1b8"; +} +.ion-ios7-navigate-outline:before { + content: "\f1b7"; +} +.ion-ios7-paper:before { + content: "\f32f"; +} +.ion-ios7-paper-outline:before { + content: "\f32e"; +} +.ion-ios7-paperplane:before { + content: "\f1ba"; +} +.ion-ios7-paperplane-outline:before { + content: "\f1b9"; +} +.ion-ios7-partlysunny:before { + content: "\f1bc"; +} +.ion-ios7-partlysunny-outline:before { + content: "\f1bb"; +} +.ion-ios7-pause:before { + content: "\f1be"; +} +.ion-ios7-pause-outline:before { + content: "\f1bd"; +} +.ion-ios7-paw:before { + content: "\f331"; +} +.ion-ios7-paw-outline:before { + content: "\f330"; +} +.ion-ios7-people:before { + content: "\f1c0"; +} +.ion-ios7-people-outline:before { + content: "\f1bf"; +} +.ion-ios7-person:before { + content: "\f1c2"; +} +.ion-ios7-person-outline:before { + content: "\f1c1"; +} +.ion-ios7-personadd:before { + content: "\f1c4"; +} +.ion-ios7-personadd-outline:before { + content: "\f1c3"; +} +.ion-ios7-photos:before { + content: "\f1c6"; +} +.ion-ios7-photos-outline:before { + content: "\f1c5"; +} +.ion-ios7-pie:before { + content: "\f28b"; +} +.ion-ios7-pie-outline:before { + content: "\f28a"; +} +.ion-ios7-play:before { + content: "\f1c8"; +} +.ion-ios7-play-outline:before { + content: "\f1c7"; +} +.ion-ios7-plus:before { + content: "\f1cb"; +} +.ion-ios7-plus-empty:before { + content: "\f1c9"; +} +.ion-ios7-plus-outline:before { + content: "\f1ca"; +} +.ion-ios7-pricetag:before { + content: "\f28d"; +} +.ion-ios7-pricetag-outline:before { + content: "\f28c"; +} +.ion-ios7-pricetags:before { + content: "\f333"; +} +.ion-ios7-pricetags-outline:before { + content: "\f332"; +} +.ion-ios7-printer:before { + content: "\f1cd"; +} +.ion-ios7-printer-outline:before { + content: "\f1cc"; +} +.ion-ios7-pulse:before { + content: "\f335"; +} +.ion-ios7-pulse-strong:before { + content: "\f334"; +} +.ion-ios7-rainy:before { + content: "\f1cf"; +} +.ion-ios7-rainy-outline:before { + content: "\f1ce"; +} +.ion-ios7-recording:before { + content: "\f1d1"; +} +.ion-ios7-recording-outline:before { + content: "\f1d0"; +} +.ion-ios7-redo:before { + content: "\f1d3"; +} +.ion-ios7-redo-outline:before { + content: "\f1d2"; +} +.ion-ios7-refresh:before { + content: "\f1d6"; +} +.ion-ios7-refresh-empty:before { + content: "\f1d4"; +} +.ion-ios7-refresh-outline:before { + content: "\f1d5"; +} +.ion-ios7-reload:before { + content: "\f28e"; +} +.ion-ios7-reverse-camera:before { + content: "\f337"; +} +.ion-ios7-reverse-camera-outline:before { + content: "\f336"; +} +.ion-ios7-rewind:before { + content: "\f1d8"; +} +.ion-ios7-rewind-outline:before { + content: "\f1d7"; +} +.ion-ios7-search:before { + content: "\f1da"; +} +.ion-ios7-search-strong:before { + content: "\f1d9"; +} +.ion-ios7-settings:before { + content: "\f339"; +} +.ion-ios7-settings-strong:before { + content: "\f338"; +} +.ion-ios7-shrink:before { + content: "\f30e"; +} +.ion-ios7-skipbackward:before { + content: "\f1dc"; +} +.ion-ios7-skipbackward-outline:before { + content: "\f1db"; +} +.ion-ios7-skipforward:before { + content: "\f1de"; +} +.ion-ios7-skipforward-outline:before { + content: "\f1dd"; +} +.ion-ios7-snowy:before { + content: "\f309"; +} +.ion-ios7-speedometer:before { + content: "\f290"; +} +.ion-ios7-speedometer-outline:before { + content: "\f28f"; +} +.ion-ios7-star:before { + content: "\f1e0"; +} +.ion-ios7-star-half:before { + content: "\f33a"; +} +.ion-ios7-star-outline:before { + content: "\f1df"; +} +.ion-ios7-stopwatch:before { + content: "\f1e2"; +} +.ion-ios7-stopwatch-outline:before { + content: "\f1e1"; +} +.ion-ios7-sunny:before { + content: "\f1e4"; +} +.ion-ios7-sunny-outline:before { + content: "\f1e3"; +} +.ion-ios7-telephone:before { + content: "\f1e6"; +} +.ion-ios7-telephone-outline:before { + content: "\f1e5"; +} +.ion-ios7-tennisball:before { + content: "\f33c"; +} +.ion-ios7-tennisball-outline:before { + content: "\f33b"; +} +.ion-ios7-thunderstorm:before { + content: "\f1e8"; +} +.ion-ios7-thunderstorm-outline:before { + content: "\f1e7"; +} +.ion-ios7-time:before { + content: "\f292"; +} +.ion-ios7-time-outline:before { + content: "\f291"; +} +.ion-ios7-timer:before { + content: "\f1ea"; +} +.ion-ios7-timer-outline:before { + content: "\f1e9"; +} +.ion-ios7-toggle:before { + content: "\f33e"; +} +.ion-ios7-toggle-outline:before { + content: "\f33d"; +} +.ion-ios7-trash:before { + content: "\f1ec"; +} +.ion-ios7-trash-outline:before { + content: "\f1eb"; +} +.ion-ios7-undo:before { + content: "\f1ee"; +} +.ion-ios7-undo-outline:before { + content: "\f1ed"; +} +.ion-ios7-unlocked:before { + content: "\f1f0"; +} +.ion-ios7-unlocked-outline:before { + content: "\f1ef"; +} +.ion-ios7-upload:before { + content: "\f1f2"; +} +.ion-ios7-upload-outline:before { + content: "\f1f1"; +} +.ion-ios7-videocam:before { + content: "\f1f4"; +} +.ion-ios7-videocam-outline:before { + content: "\f1f3"; +} +.ion-ios7-volume-high:before { + content: "\f1f5"; +} +.ion-ios7-volume-low:before { + content: "\f1f6"; +} +.ion-ios7-wineglass:before { + content: "\f294"; +} +.ion-ios7-wineglass-outline:before { + content: "\f293"; +} +.ion-ios7-world:before { + content: "\f1f8"; +} +.ion-ios7-world-outline:before { + content: "\f1f7"; +} +.ion-ipad:before { + content: "\f1f9"; +} +.ion-iphone:before { + content: "\f1fa"; +} +.ion-ipod:before { + content: "\f1fb"; +} +.ion-jet:before { + content: "\f295"; +} +.ion-key:before { + content: "\f296"; +} +.ion-knife:before { + content: "\f297"; +} +.ion-laptop:before { + content: "\f1fc"; +} +.ion-leaf:before { + content: "\f1fd"; +} +.ion-levels:before { + content: "\f298"; +} +.ion-lightbulb:before { + content: "\f299"; +} +.ion-link:before { + content: "\f1fe"; +} +.ion-load-a:before { + content: "\f29a"; +} +.ion-load-b:before { + content: "\f29b"; +} +.ion-load-c:before { + content: "\f29c"; +} +.ion-load-d:before { + content: "\f29d"; +} +.ion-location:before { + content: "\f1ff"; +} +.ion-locked:before { + content: "\f200"; +} +.ion-log-in:before { + content: "\f29e"; +} +.ion-log-out:before { + content: "\f29f"; +} +.ion-loop:before { + content: "\f201"; +} +.ion-magnet:before { + content: "\f2a0"; +} +.ion-male:before { + content: "\f2a1"; +} +.ion-man:before { + content: "\f202"; +} +.ion-map:before { + content: "\f203"; +} +.ion-medkit:before { + content: "\f2a2"; +} +.ion-merge:before { + content: "\f33f"; +} +.ion-mic-a:before { + content: "\f204"; +} +.ion-mic-b:before { + content: "\f205"; +} +.ion-mic-c:before { + content: "\f206"; +} +.ion-minus:before { + content: "\f209"; +} +.ion-minus-circled:before { + content: "\f207"; +} +.ion-minus-round:before { + content: "\f208"; +} +.ion-model-s:before { + content: "\f2c1"; +} +.ion-monitor:before { + content: "\f20a"; +} +.ion-more:before { + content: "\f20b"; +} +.ion-mouse:before { + content: "\f340"; +} +.ion-music-note:before { + content: "\f20c"; +} +.ion-navicon:before { + content: "\f20e"; +} +.ion-navicon-round:before { + content: "\f20d"; +} +.ion-navigate:before { + content: "\f2a3"; +} +.ion-network:before { + content: "\f341"; +} +.ion-no-smoking:before { + content: "\f2c2"; +} +.ion-nuclear:before { + content: "\f2a4"; +} +.ion-outlet:before { + content: "\f342"; +} +.ion-paper-airplane:before { + content: "\f2c3"; +} +.ion-paperclip:before { + content: "\f20f"; +} +.ion-pause:before { + content: "\f210"; +} +.ion-person:before { + content: "\f213"; +} +.ion-person-add:before { + content: "\f211"; +} +.ion-person-stalker:before { + content: "\f212"; +} +.ion-pie-graph:before { + content: "\f2a5"; +} +.ion-pin:before { + content: "\f2a6"; +} +.ion-pinpoint:before { + content: "\f2a7"; +} +.ion-pizza:before { + content: "\f2a8"; +} +.ion-plane:before { + content: "\f214"; +} +.ion-planet:before { + content: "\f343"; +} +.ion-play:before { + content: "\f215"; +} +.ion-playstation:before { + content: "\f30a"; +} +.ion-plus:before { + content: "\f218"; +} +.ion-plus-circled:before { + content: "\f216"; +} +.ion-plus-round:before { + content: "\f217"; +} +.ion-podium:before { + content: "\f344"; +} +.ion-pound:before { + content: "\f219"; +} +.ion-power:before { + content: "\f2a9"; +} +.ion-pricetag:before { + content: "\f2aa"; +} +.ion-pricetags:before { + content: "\f2ab"; +} +.ion-printer:before { + content: "\f21a"; +} +.ion-pull-request:before { + content: "\f345"; +} +.ion-qr-scanner:before { + content: "\f346"; +} +.ion-quote:before { + content: "\f347"; +} +.ion-radio-waves:before { + content: "\f2ac"; +} +.ion-record:before { + content: "\f21b"; +} +.ion-refresh:before { + content: "\f21c"; +} +.ion-reply:before { + content: "\f21e"; +} +.ion-reply-all:before { + content: "\f21d"; +} +.ion-ribbon-a:before { + content: "\f348"; +} +.ion-ribbon-b:before { + content: "\f349"; +} +.ion-sad:before { + content: "\f34a"; +} +.ion-scissors:before { + content: "\f34b"; +} +.ion-search:before { + content: "\f21f"; +} +.ion-settings:before { + content: "\f2ad"; +} +.ion-share:before { + content: "\f220"; +} +.ion-shuffle:before { + content: "\f221"; +} +.ion-skip-backward:before { + content: "\f222"; +} +.ion-skip-forward:before { + content: "\f223"; +} +.ion-social-android:before { + content: "\f225"; +} +.ion-social-android-outline:before { + content: "\f224"; +} +.ion-social-apple:before { + content: "\f227"; +} +.ion-social-apple-outline:before { + content: "\f226"; +} +.ion-social-bitcoin:before { + content: "\f2af"; +} +.ion-social-bitcoin-outline:before { + content: "\f2ae"; +} +.ion-social-buffer:before { + content: "\f229"; +} +.ion-social-buffer-outline:before { + content: "\f228"; +} +.ion-social-designernews:before { + content: "\f22b"; +} +.ion-social-designernews-outline:before { + content: "\f22a"; +} +.ion-social-dribbble:before { + content: "\f22d"; +} +.ion-social-dribbble-outline:before { + content: "\f22c"; +} +.ion-social-dropbox:before { + content: "\f22f"; +} +.ion-social-dropbox-outline:before { + content: "\f22e"; +} +.ion-social-facebook:before { + content: "\f231"; +} +.ion-social-facebook-outline:before { + content: "\f230"; +} +.ion-social-foursquare:before { + content: "\f34d"; +} +.ion-social-foursquare-outline:before { + content: "\f34c"; +} +.ion-social-freebsd-devil:before { + content: "\f2c4"; +} +.ion-social-github:before { + content: "\f233"; +} +.ion-social-github-outline:before { + content: "\f232"; +} +.ion-social-google:before { + content: "\f34f"; +} +.ion-social-google-outline:before { + content: "\f34e"; +} +.ion-social-googleplus:before { + content: "\f235"; +} +.ion-social-googleplus-outline:before { + content: "\f234"; +} +.ion-social-hackernews:before { + content: "\f237"; +} +.ion-social-hackernews-outline:before { + content: "\f236"; +} +.ion-social-instagram:before { + content: "\f351"; +} +.ion-social-instagram-outline:before { + content: "\f350"; +} +.ion-social-linkedin:before { + content: "\f239"; +} +.ion-social-linkedin-outline:before { + content: "\f238"; +} +.ion-social-pinterest:before { + content: "\f2b1"; +} +.ion-social-pinterest-outline:before { + content: "\f2b0"; +} +.ion-social-reddit:before { + content: "\f23b"; +} +.ion-social-reddit-outline:before { + content: "\f23a"; +} +.ion-social-rss:before { + content: "\f23d"; +} +.ion-social-rss-outline:before { + content: "\f23c"; +} +.ion-social-skype:before { + content: "\f23f"; +} +.ion-social-skype-outline:before { + content: "\f23e"; +} +.ion-social-tumblr:before { + content: "\f241"; +} +.ion-social-tumblr-outline:before { + content: "\f240"; +} +.ion-social-tux:before { + content: "\f2c5"; +} +.ion-social-twitter:before { + content: "\f243"; +} +.ion-social-twitter-outline:before { + content: "\f242"; +} +.ion-social-usd:before { + content: "\f353"; +} +.ion-social-usd-outline:before { + content: "\f352"; +} +.ion-social-vimeo:before { + content: "\f245"; +} +.ion-social-vimeo-outline:before { + content: "\f244"; +} +.ion-social-windows:before { + content: "\f247"; +} +.ion-social-windows-outline:before { + content: "\f246"; +} +.ion-social-wordpress:before { + content: "\f249"; +} +.ion-social-wordpress-outline:before { + content: "\f248"; +} +.ion-social-yahoo:before { + content: "\f24b"; +} +.ion-social-yahoo-outline:before { + content: "\f24a"; +} +.ion-social-youtube:before { + content: "\f24d"; +} +.ion-social-youtube-outline:before { + content: "\f24c"; +} +.ion-speakerphone:before { + content: "\f2b2"; +} +.ion-speedometer:before { + content: "\f2b3"; +} +.ion-spoon:before { + content: "\f2b4"; +} +.ion-star:before { + content: "\f24e"; +} +.ion-stats-bars:before { + content: "\f2b5"; +} +.ion-steam:before { + content: "\f30b"; +} +.ion-stop:before { + content: "\f24f"; +} +.ion-thermometer:before { + content: "\f2b6"; +} +.ion-thumbsdown:before { + content: "\f250"; +} +.ion-thumbsup:before { + content: "\f251"; +} +.ion-toggle:before { + content: "\f355"; +} +.ion-toggle-filled:before { + content: "\f354"; +} +.ion-trash-a:before { + content: "\f252"; +} +.ion-trash-b:before { + content: "\f253"; +} +.ion-trophy:before { + content: "\f356"; +} +.ion-umbrella:before { + content: "\f2b7"; +} +.ion-university:before { + content: "\f357"; +} +.ion-unlocked:before { + content: "\f254"; +} +.ion-upload:before { + content: "\f255"; +} +.ion-usb:before { + content: "\f2b8"; +} +.ion-videocamera:before { + content: "\f256"; +} +.ion-volume-high:before { + content: "\f257"; +} +.ion-volume-low:before { + content: "\f258"; +} +.ion-volume-medium:before { + content: "\f259"; +} +.ion-volume-mute:before { + content: "\f25a"; +} +.ion-wand:before { + content: "\f358"; +} +.ion-waterdrop:before { + content: "\f25b"; +} +.ion-wifi:before { + content: "\f25c"; +} +.ion-wineglass:before { + content: "\f2b9"; +} +.ion-woman:before { + content: "\f25d"; +} +.ion-wrench:before { + content: "\f2ba"; +} +.ion-xbox:before { + content: "\f30c"; +} diff --git a/assets/less/icons/ionicons/fonts/ionicons.eot b/assets/less/icons/ionicons/fonts/ionicons.eot new file mode 100644 index 0000000..7e677c6 Binary files /dev/null and b/assets/less/icons/ionicons/fonts/ionicons.eot differ diff --git a/assets/less/icons/ionicons/fonts/ionicons.svg b/assets/less/icons/ionicons/fonts/ionicons.svg new file mode 100644 index 0000000..9252bab --- /dev/null +++ b/assets/less/icons/ionicons/fonts/ionicons.svg @@ -0,0 +1,1899 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2014-6-16: Created. +--> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +Created by FontForge 20120731 at Mon Jun 16 13:18:27 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) +</metadata> +<defs> +<font id="Ionicons" horiz-adv-x="448" > + <font-face + font-family="Ionicons" + font-weight="500" + font-stretch="normal" + units-per-em="512" + panose-1="2 0 6 3 0 0 0 0 0 0" + ascent="448" + descent="-64" + bbox="-0.5 -64.0026 512.487 448" + underline-thickness="25.6" + underline-position="-51.2" + unicode-range="U+F100-F358" + /> + <missing-glyph /> + <glyph glyph-name="ion-alert-circled" unicode="&#xf100;" +d="M445 26c3 -5 5 -13 2 -18s-8 -8 -14 -8h-418c-6 0 -11 3 -14 8s-1 13 2 18l207 349c3 5 8 9 14 9s11 -4 14 -9zM256 48v48h-64v-48h64zM256 128v144h-64v-144h64z" /> + <glyph glyph-name="ion-alert" unicode="&#xf101;" horiz-adv-x="128" +d="M128 -32h-128v96h128v-96zM112 128h-96l-16 288h128z" /> + <glyph glyph-name="ion-android-add-contact" unicode="&#xf2c6;" horiz-adv-x="512" +d="M258 174c59 -18 95 -58 108 -110h-366c13 52 49 92 108 110c22 -13 48 -20 75 -20s53 7 75 20zM183 184c-73 0 -132 59 -132 132s59 132 132 132s132 -59 132 -132s-59 -132 -132 -132zM276 280h-185c14 -37 50 -63 92 -63s79 26 93 63zM512 48v-32h-80v-80h-32v80h-80 +v32h80v80h32v-80h80z" /> + <glyph glyph-name="ion-android-add" unicode="&#xf2c7;" horiz-adv-x="512" +d="M512 224v-64h-224v-224h-64v224h-224v64h224v224h64v-224h224z" /> + <glyph glyph-name="ion-android-alarm" unicode="&#xf2c8;" horiz-adv-x="512" +d="M256 400c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM392 40c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM224 160l16 176h24l8 -160 +l80 -96l-16 -16zM388 432c53 -27 97 -71 124 -124l-28 -15c-12 24 -28 45 -47 64s-40 35 -64 47l15 28v0zM124 432v0l15 -28c-24 -12 -45 -28 -64 -47s-35 -40 -47 -64l-28 15c27 53 71 97 124 124z" /> + <glyph glyph-name="ion-android-archive" unicode="&#xf2c9;" horiz-adv-x="512" +d="M432 400l80 -64v-352h-512v352l80 64h352zM256 64l112 128h-56v56h-112v-56h-56zM36 336h440l-60 48h-320z" /> + <glyph glyph-name="ion-android-arrow-back" unicode="&#xf2ca;" horiz-adv-x="256" +d="M256 448l-144 -256l144 -256h-112l-144 256l144 256h112z" /> + <glyph glyph-name="ion-android-arrow-down-left" unicode="&#xf2cb;" horiz-adv-x="480" +d="M0 256h80v-167l343 343l57 -57l-343 -343h167v-80h-304v304z" /> + <glyph glyph-name="ion-android-arrow-down-right" unicode="&#xf2cc;" horiz-adv-x="480" +d="M480 256v-304h-304v80h167l-343 343l57 57l343 -343v167h80z" /> + <glyph glyph-name="ion-android-arrow-forward" unicode="&#xf30f;" horiz-adv-x="256" +d="M0 448h112l144 -256l-144 -256h-112l144 256z" /> + <glyph glyph-name="ion-android-arrow-up-left" unicode="&#xf2cd;" horiz-adv-x="480" +d="M304 432v-80h-167l343 -343l-57 -57l-343 343v-167h-80v304h304z" /> + <glyph glyph-name="ion-android-arrow-up-right" unicode="&#xf2ce;" horiz-adv-x="480" +d="M176 432h304v-304h-80v167l-343 -343l-57 57l343 343h-167v80z" /> + <glyph glyph-name="ion-android-battery" unicode="&#xf2cf;" horiz-adv-x="256" +d="M192 352h64v-32v-352h-256v352v32h64v32v32h128v-32v-32zM224 224v96h-64v64h-64v-64h-64v-96h192z" /> + <glyph glyph-name="ion-android-book" unicode="&#xf2d0;" horiz-adv-x="512" +d="M0 448l176 -112v-384l-176 144v352zM512 448v-352l-176 -144v384zM208 -64v384h96v-384h-96zM426 442c17 0 38 -2 38 -2l-160 -96h-48h-48l-160 96s21 2 38 2s54 1 106 -26s64 -44 64 -44s12 17 64 44s89 26 106 26z" /> + <glyph glyph-name="ion-android-calendar" unicode="&#xf2d1;" horiz-adv-x="512" +d="M502 416c6 0 10 -4 10 -10v-460c0 -6 -4 -10 -10 -10h-492c-6 0 -10 4 -10 10v460c0 6 4 10 10 10h102v32h64v-32h160v32h64v-32h102zM480 -32v416h-80v-32h-64v32h-160v-32h-64v32h-80v-416h448z" /> + <glyph glyph-name="ion-android-call" unicode="&#xf2d2;" horiz-adv-x="512" +d="M451 98c38 -28 56 -46 60 -62c4 -19 -7 -26 -40 -64c-32 -37 -61 -36 -84 -36s-61 12 -121 48c-22 14 -49 33 -74 54c-15 12 -35 30 -52 48c-12 12 -24 25 -32 35c-21 25 -40 52 -54 74c-36 60 -54 105 -54 128s-1 52 36 84c38 33 45 44 64 40c16 -4 34 -23 62 -60 +s46 -64 40 -76c-8 -15 -25 -23 -56 -39c-11 -6 -32 -18 -28 -28c5 -13 28 -55 81 -109l13 -13v0c48 -44 84 -63 96 -68c10 -4 22 17 28 28c16 31 24 48 39 56c12 6 39 -12 76 -40zM417 353c-31 31 -71 49 -113 52v43c112 -7 201 -96 208 -208h-43c-3 42 -21 82 -52 113z +M304 358c57 -14 103 -61 117 -118h-44c-12 34 -39 61 -73 73v45z" /> + <glyph glyph-name="ion-android-camera" unicode="&#xf2d3;" horiz-adv-x="512" +d="M96 368l-80 -32v48h80v-16zM336 352h176v-352h-512v304l128 48h48v48h32h96h32v-48zM256 48c71 0 128 57 128 128s-57 128 -128 128s-128 -57 -128 -128s57 -128 128 -128zM156 176c0 67 33 100 100 100s100 -33 100 -100s-33 -100 -100 -100s-100 33 -100 100z" /> + <glyph glyph-name="ion-android-chat" unicode="&#xf2d4;" horiz-adv-x="480" +d="M224 448c141 0 256 -115 256 -256s-115 -256 -256 -256v64c-124 0 -224 100 -224 224s100 224 224 224v0zM208 246v48c0 6 -4 10 -10 10h-92c-6 0 -10 -4 -10 -10v-108c0 -6 4 -10 10 -10h70v-16c0 -9 -7 -16 -16 -16v-32c26 0 48 22 48 48v26v60zM384 246v48 +c0 6 -4 10 -10 10h-92c-6 0 -10 -4 -10 -10v-108c0 -6 4 -10 10 -10h70v-16c0 -9 -7 -16 -16 -16v-32c26 0 48 22 48 48v26v60z" /> + <glyph glyph-name="ion-android-checkmark" unicode="&#xf2d5;" horiz-adv-x="512" +d="M176 -16l-176 176l80 83l112 -107l248 248l72 -72z" /> + <glyph glyph-name="ion-android-clock" unicode="&#xf2d6;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM192 176l16 176h24l8 -160 +l80 -96l-16 -16z" /> + <glyph glyph-name="ion-android-close" unicode="&#xf2d7;" horiz-adv-x="407" +d="M407 350l-158 -158l158 -158l-45 -46l-158 159l-159 -159l-45 46l158 158l-158 158l45 46l159 -159l158 159z" /> + <glyph glyph-name="ion-android-contact" unicode="&#xf2d8;" horiz-adv-x="488" +d="M344 82c78 -24 126 -77 144 -146h-488c18 69 66 122 144 146c30 -17 64 -26 100 -26s70 9 100 26zM244 448c97 0 176 -79 176 -176s-79 -176 -176 -176s-176 79 -176 176s79 176 176 176zM244 140c56 0 104 35 123 84h-246c19 -49 67 -84 123 -84z" /> + <glyph glyph-name="ion-android-contacts" unicode="&#xf2d9;" horiz-adv-x="512" +d="M237 85c54 -16 87 -53 99 -101h-336c12 47 45 85 99 101c20 -12 44 -19 69 -19s49 7 69 19zM168 336c67 0 121 -54 121 -121s-54 -121 -121 -121s-121 54 -121 121s54 121 121 121zM168 123c38 0 71 26 84 58h-169c13 -32 47 -58 85 -58zM332 48c-15 23 -38 42 -68 54 +c13 11 24 23 32 37c15 -6 31 -9 48 -9c25 0 49 7 69 19c54 -16 87 -53 99 -101h-180zM314 245c-9 42 -36 78 -72 99c22 34 59 56 102 56c67 0 121 -54 121 -121s-54 -121 -121 -121c-13 0 -25 2 -37 6c3 9 6 18 8 28c9 -3 19 -5 29 -5c38 0 71 26 84 58h-114z" /> + <glyph glyph-name="ion-android-data" unicode="&#xf2da;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM88 56v0v0v0zM240 1c40 3 77 18 108 44l-124 147v144l-16 47c-40 -3 -77 -18 -108 -44l28 -39l-11 -12l-39 28c-26 -31 -42 -68 -45 -108l47 -8v-16l-47 -8 +c3 -40 18 -77 44 -108l39 28l12 -11l-28 -39c31 -26 68 -42 108 -45l8 47h16z" /> + <glyph glyph-name="ion-android-developer" unicode="&#xf2db;" horiz-adv-x="512" +d="M140 7c10 0 19 -8 20 -18v-1v-1c0 -10 -10 -19 -20 -19v0v0h-8c-46 0 -79 20 -79 77c0 15 1 31 3 46s2 31 2 45s-1 34 -36 34c-12 0 -22 10 -22 22v0v0c0 12 10 22 22 22c35 0 36 20 36 34s-1 30 -3 45s-3 31 -3 46c0 57 34 77 80 77h8v0v0c10 0 20 -9 20 -19v-1v-1 +c-1 -10 -10 -18 -20 -18h-1c-27 -2 -41 -7 -43 -41c-1 -13 0 -26 1 -40c1 -15 3 -29 4 -43c2 -32 -3 -49 -24 -61v0v0c21 -12 26 -29 24 -61c-1 -14 -3 -28 -4 -43c-1 -14 -2 -26 -1 -40c2 -34 16 -39 43 -41h1zM372 7h1c27 2 41 7 43 41c1 14 0 26 -1 40c-1 15 -3 29 -4 43 +c-2 32 3 49 24 61v0v0c-21 12 -26 29 -24 61c1 14 3 28 4 43c1 14 2 27 1 40c-2 34 -16 39 -43 41h-1c-10 0 -19 8 -20 18v1v1c0 10 10 19 20 19v0v0h7c46 0 80 -20 80 -77c0 -15 -1 -31 -3 -46s-2 -31 -2 -45s1 -34 36 -34c12 0 22 -10 22 -22v0v0c0 -12 -10 -22 -22 -22 +c-35 0 -36 -20 -36 -34s1 -30 2 -45c2 -15 3 -31 3 -46c0 -57 -34 -77 -80 -77h-7v0v0c-10 0 -20 9 -20 19v1v1c1 10 10 18 20 18z" /> + <glyph glyph-name="ion-android-display" unicode="&#xf2dc;" horiz-adv-x="501" +d="M449 192l52 -53l-74 -29l25 -76l-79 6l-10 -78l-69 40l-44 -66l-44 66l-68 -40l-10 78l-79 -6l25 76l-74 29l52 53l-52 53l74 29l-25 76l79 -6l10 78l68 -40l44 66l44 -66l69 40l10 -78l79 6l-25 -76l74 -29zM250 32c88 0 160 72 160 160s-72 160 -160 160v-320z" /> + <glyph glyph-name="ion-android-download" unicode="&#xf2dd;" +d="M264 256h88l-128 -128l-128 128h88v175v1h80v-1v-175zM296 404c88 -30 152 -114 152 -212c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 98 64 182 152 212v-34c-24 -10 -46 -24 -64 -42c-36 -36 -56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56 +s56 85 56 136s-20 100 -56 136c-19 18 -40 32 -64 42v34zM96 80v16h256v-16h-256z" /> + <glyph glyph-name="ion-android-drawer" unicode="&#xf310;" horiz-adv-x="256" +d="M0 320v64h256v-64h-256zM0 0v64h256v-64h-256zM0 160v64h256v-64h-256z" /> + <glyph glyph-name="ion-android-dropdown" unicode="&#xf2de;" horiz-adv-x="288" +d="M0 32l288 288v-288h-288z" /> + <glyph glyph-name="ion-android-earth" unicode="&#xf2df;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM32 192c0 -51 20 -100 56 -136c31 -31 71 -49 113 -54c6 16 22 31 8 42c-9 7 -17 14 -25 22c-3 3 -11 21 -9 24c6 9 7 16 9 27c3 13 -4 17 -15 24c-16 10 -31 24 -47 36 +c-8 6 -18 10 -21 20s-4 22 -10 30c-15 22 -13 38 -11 64c0 7 -1 17 -2 26c-30 -35 -46 -79 -46 -125zM360 56c36 36 56 85 56 136s-20 100 -56 136c-30 30 -67 48 -108 54v-9l4 -10l-15 -14l-9 3l-11 11l-11 13l-15 6c-17 -3 -33 -8 -49 -15c0 -2 1 -4 1 -7c8 3 16 5 24 8 +c3 1 14 -7 17 -9c-4 -5 -22 -17 -23 -23c0 -2 7 -7 7 -11v-18c4 3 21 22 23 22c14 4 37 -19 39 -27s-23 -26 -35 -37c-9 -9 -26 -13 -21 -26c2 -4 11 -22 6 -26c-6 -5 -16 10 -19 13c-9 11 -28 7 -41 7c0 -19 -1 -33 16 -46c16 -12 32 -27 51 -35c14 -6 38 8 50 -1 +c17 -12 32 -24 51 -32c8 -4 36 -21 28 -33c-5 -8 -11 -16 -15 -25s-13 -20 -21 -26c-9 -7 -19 -19 -24 -32c38 7 72 25 100 53zM391 262c7 -10 4 -38 4 -50c0 -22 2 -44 -5 -65c-12 9 -23 26 -25 48c-2 23 1 41 -3 61c-3 17 -21 34 -29 50c-7 15 -15 30 -22 45 +c2 -1 6 -2 8 -3c14 -13 27 -26 41 -39c12 -12 21 -33 31 -47z" /> + <glyph glyph-name="ion-android-folder" unicode="&#xf2e0;" horiz-adv-x="512" +d="M432 16h-432v352h144l48 -64h240v-32h-368l-40 -128l16 -16l40 128h432z" /> + <glyph glyph-name="ion-android-forums" unicode="&#xf2e1;" horiz-adv-x="512" +d="M422 432c6 0 10 -4 10 -10v-268c0 -6 -4 -10 -10 -10h-230l-112 -112v112h-70c-6 0 -10 4 -10 10v268c0 6 4 10 10 10h412zM502 352c6 0 10 -4 10 -10v-268c0 -6 -4 -10 -10 -10h-70v-112l-112 112h-160l48 48h223c22 0 33 13 33 33v207h38z" /> + <glyph glyph-name="ion-android-friends" unicode="&#xf2e2;" horiz-adv-x="512" +d="M325 117c54 -16 87 -53 99 -101h-336c12 48 45 85 99 101c20 -12 44 -19 69 -19s49 7 69 19zM256 368c67 0 121 -54 121 -121s-54 -121 -121 -121s-121 54 -121 121s54 121 121 121zM256 155c38 0 71 26 84 58h-169c13 -32 47 -58 85 -58zM412 86c-18 20 -42 36 -72 46 +c8 6 18 11 30 15c12 -7 26 -11 41 -11s29 4 41 11c32 -10 53 -32 60 -61h-100zM411 298c40 0 73 -33 73 -73s-33 -73 -73 -73c-18 0 -34 7 -47 18c3 5 6 10 9 16c10 -9 23 -16 38 -16c23 0 43 15 51 35h-81c4 12 6 25 6 38c0 16 -3 33 -9 47c10 5 21 8 33 8zM172 132 +c-30 -10 -54 -26 -72 -46h-100c7 29 27 51 59 61c12 -7 27 -11 42 -11s29 4 41 11c12 -4 22 -9 30 -15zM101 170c15 0 28 7 38 16c3 -6 5 -11 9 -16c-13 -11 -29 -18 -47 -18c-40 0 -73 33 -73 73s33 73 73 73c12 0 23 -3 33 -8c-6 -14 -9 -31 -9 -47c0 -13 2 -26 6 -38h-81 +c8 -20 28 -35 51 -35z" /> + <glyph glyph-name="ion-android-hand" unicode="&#xf2e3;" horiz-adv-x="473" +d="M459 172c17 -17 19 -42 2 -59c0 0 -110 -118 -144 -139v0c-32 -24 -73 -38 -113 -38c-63 0 -117 41 -135 97v1v0c0 1 -1 3 -1 4l-66 216c-6 17 2 36 19 42s35 -3 41 -20l38 -102c2 -4 3 -1 3 2l-26 184c-3 17 9 35 26 38s34 -10 37 -27l29 -157c0 -3 2 -2 2 0l1 202 +c0 18 14 32 32 32s32 -14 32 -32l9 -200c0 -5 3 -5 4 -1l27 154c2 18 18 31 36 29s29 -19 27 -37l-24 -196c-2 -13 -4 -34 2 -41c9 -10 24 -10 36 2l48 48c17 17 41 15 58 -2z" /> + <glyph glyph-name="ion-android-image" unicode="&#xf2e4;" horiz-adv-x="512" +d="M0 448h512v-512h-512v512zM480 -32v448h-448v-448h448zM448 88v-88h-384v136l96 64l112 -96l80 40z" /> + <glyph glyph-name="ion-android-inbox" unicode="&#xf2e5;" horiz-adv-x="512" +d="M416 416l96 -256v-192h-512v192l96 256h320zM336 160h112l-64 216h-256l-64 -216h112c0 -44 36 -80 80 -80s80 36 80 80z" /> + <glyph glyph-name="ion-android-information" unicode="&#xf2e6;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM256 67v157h-64v-157h64zM224 272c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40z" /> + <glyph glyph-name="ion-android-keypad" unicode="&#xf2e7;" horiz-adv-x="384" +d="M96 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 362c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76 +c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM96 234c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 234c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 234c0 -6 -4 -10 -10 -10 +h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM96 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM243 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76z +M243 -22c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76zM384 106c0 -6 -4 -10 -10 -10h-76c-6 0 -10 4 -10 10v76c0 6 4 10 10 10h76c6 0 10 -4 10 -10v-76z" /> + <glyph glyph-name="ion-android-lightbulb" unicode="&#xf2e8;" horiz-adv-x="352" +d="M176 448c97 0 176 -79 176 -176c0 -62 -24 -117 -72 -148v-156h-32v-32h-144v32h-32v156c-48 31 -72 86 -72 148c0 97 79 176 176 176zM248 0v16h-144v-16h144zM248 48v16h-144v-16h144zM262 151c37 24 58 67 58 121c0 38 -15 75 -42 102s-64 42 -102 42 +s-75 -15 -102 -42s-42 -64 -42 -102c0 -54 21 -97 58 -121l14 -9v-18v-28h144v28v18z" /> + <glyph glyph-name="ion-android-locate" unicode="&#xf2e9;" horiz-adv-x="512" +d="M160 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96zM512 208v-32h-65c-4 -47 -22 -87 -55 -120s-73 -51 -120 -55v-65h-32v65c-47 4 -87 22 -120 55s-51 73 -55 120h-65v32h65c1 13 3 26 7 39s9 24 15 35s13 22 21 32s16 18 26 26s21 15 32 21 +s22 11 35 15s26 6 39 7v65h32v-65c47 -4 87 -22 120 -55s51 -73 55 -120h65zM256 49c39 0 73 14 101 42s42 62 42 101s-14 73 -42 101s-62 42 -101 42s-73 -14 -101 -42s-42 -62 -42 -101s14 -73 42 -101s62 -42 101 -42z" /> + <glyph glyph-name="ion-android-location" unicode="&#xf2ea;" horiz-adv-x="320" +d="M320 288c0 -20 -3 -39 -10 -57v0l-1 -1v-1c-67 -171 -149 -293 -149 -293v0s-82 121 -149 292v2l-1 1v0c-7 18 -10 37 -10 57c0 88 72 160 160 160s160 -72 160 -160zM160 256c26 0 48 22 48 48s-22 48 -48 48s-48 -22 -48 -48s22 -48 48 -48z" /> + <glyph glyph-name="ion-android-mail" unicode="&#xf2eb;" horiz-adv-x="512" +d="M256 142l256 124v-266h-512v266zM512 310l-256 -123l-256 123v74h512v-74z" /> + <glyph glyph-name="ion-android-microphone" unicode="&#xf2ec;" horiz-adv-x="320" +d="M225 192c0 -35 -29 -64 -64 -64v0c-35 0 -64 29 -64 64v160c0 35 29 64 64 64v0c35 0 64 -29 64 -64v-160zM272 208h48v-8c0 -80 -59 -147 -135 -159v-73h-48v73c-78 11 -137 78 -137 159v8h48v-8c0 -30 12 -59 33 -80s49 -32 79 -32s58 11 79 32s33 50 33 80v8z" /> + <glyph glyph-name="ion-android-mixer" unicode="&#xf2ed;" horiz-adv-x="512" +d="M0 335v32h304v-32h-304zM432 335v32h80v-32h-80zM0 176v32h80v-32h-80zM208 176v32h304v-32h-304zM0 14v32h304v-32h-304zM432 14v32h80v-32h-80zM192 136c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112zM416 296 +c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112zM416 -24c0 -22 -22 -40 -48 -40v0c-26 0 -48 18 -48 40v112c0 22 22 40 48 40v0c26 0 48 -18 48 -40v-112z" /> + <glyph glyph-name="ion-android-more" unicode="&#xf2ee;" horiz-adv-x="128" +d="M0 128v128h128v-128h-128zM0 320v128h128v-128h-128zM0 -64v128h128v-128h-128z" /> + <glyph glyph-name="ion-android-note" unicode="&#xf2ef;" horiz-adv-x="464" +d="M0 448h464v-512h-464v512zM40 384v-64h256v64h-256zM424 32v48h-384v-48h384zM424 128v48h-384v-48h384zM424 224v48h-384v-48h384z" /> + <glyph glyph-name="ion-android-playstore" unicode="&#xf2f0;" horiz-adv-x="512" +d="M512 320c-23 -265 -16 -384 -16 -384h-480s7 116 -16 384h128c0 71 57 128 128 128s128 -57 128 -128h128zM256 416c-53 0 -96 -43 -96 -96h192c0 53 -43 96 -96 96zM192 16l176 104l-176 104v-208z" /> + <glyph glyph-name="ion-android-printer" unicode="&#xf2f1;" horiz-adv-x="512" +d="M96 320v96h320v-96h-320zM512 229v0v-165h-96v-96h-320v96h-96v165v0c0 33 27 59 60 59h392c33 0 60 -26 60 -59zM352 32v128h-192v-128h192zM416 200c13 0 24 11 24 24s-11 24 -24 24s-24 -11 -24 -24s11 -24 24 -24z" /> + <glyph glyph-name="ion-android-promotion" unicode="&#xf2f2;" horiz-adv-x="384" +d="M384 256l-192 -192l-192 192v192h192v0zM96 304c26 0 48 22 48 48s-22 48 -48 48s-48 -22 -48 -48s22 -48 48 -48zM384 192v-64l-192 -192l-192 192v64l192 -192z" /> + <glyph glyph-name="ion-android-reminder" unicode="&#xf2f3;" horiz-adv-x="416" +d="M0 48l64 160v96c0 80 64 144 144 144v0c80 0 144 -64 144 -144v-96l64 -160zM208 -64c-54 0 -100 33 -119 80h238c-19 -47 -65 -80 -119 -80z" /> + <glyph glyph-name="ion-android-remove" unicode="&#xf2f4;" horiz-adv-x="512" +d="M0 160v64h512v-64h-512z" /> + <glyph glyph-name="ion-android-search" unicode="&#xf2f5;" horiz-adv-x="512" +d="M510 6c6 -6 -3 -27 -22 -46s-40 -28 -46 -22l-113 113c-4 4 -1 15 8 28l-40 40c-31 -24 -70 -39 -113 -39c-102 0 -184 82 -184 184s82 184 184 184s184 -82 184 -184c0 -43 -15 -82 -39 -113l40 -40c13 9 24 12 28 8zM184 120c38 0 75 15 102 42s42 64 42 102 +s-15 75 -42 102s-64 42 -102 42s-75 -15 -102 -42s-42 -64 -42 -102s15 -75 42 -102s64 -42 102 -42z" /> + <glyph glyph-name="ion-android-send" unicode="&#xf2f6;" horiz-adv-x="512" +d="M0 448l512 -256l-512 -256l43 235l426 21l-426 21z" /> + <glyph glyph-name="ion-android-settings" unicode="&#xf2f7;" horiz-adv-x="491" +d="M438 192c0 -14 -2 -28 -5 -42l58 -44l-48 -84l-67 29c-21 -19 -45 -33 -73 -42l-9 -73h-96l-9 73c-28 9 -52 23 -73 42l-68 -29l-48 84l58 44c-3 14 -4 28 -4 42s1 28 4 42l-58 44l48 84l68 -29c21 19 45 33 73 42l9 73h96l9 -73c28 -9 52 -23 73 -42l67 29l48 -84 +l-58 -44c3 -14 5 -28 5 -42zM246 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z" /> + <glyph glyph-name="ion-android-share" unicode="&#xf2f8;" horiz-adv-x="480" +d="M400 96c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80c0 5 0 10 1 14l-186 104c-14 -13 -34 -22 -55 -22c-44 0 -80 36 -80 80s36 80 80 80c21 0 41 -9 55 -22l186 104c-1 5 -1 9 -1 14c0 44 36 80 80 80s80 -36 80 -80s-36 -80 -80 -80c-22 0 -42 9 -56 23 +l-186 -102c1 -5 2 -11 2 -17s-1 -12 -2 -17l185 -102c14 14 35 23 57 23z" /> + <glyph glyph-name="ion-android-social-user" unicode="&#xf2f9;" horiz-adv-x="512" +d="M142 334c0 76 38 114 114 114s114 -38 114 -114s-38 -114 -114 -114s-114 38 -114 114zM502 50c7 -7 10 -14 10 -22v-92h-512v92c0 8 3 15 10 22c61 61 143 91 246 91s185 -30 246 -91z" /> + <glyph glyph-name="ion-android-social" unicode="&#xf2fa;" horiz-adv-x="512" +d="M256 280c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM73 213c0 41 20 61 61 61s61 -20 61 -61s-20 -61 -61 -61s-61 20 -61 61zM136 112c7 0 15 -1 24 -2v0v0c-21 -17 -31 -30 -32 -38v-72h-128v50c0 2 1 5 2 7s1 3 3 5c33 33 76 50 131 50zM505 80 +c5 -5 7 -10 7 -15v-65h-352v65c0 5 2 10 7 15c42 43 98 64 169 64s127 -21 169 -64z" /> + <glyph glyph-name="ion-android-sort" unicode="&#xf2fb;" horiz-adv-x="512" +d="M0 288v64h512v-64h-512zM0 160v64h352v-64h-352zM0 32v64h192v-64h-192z" /> + <glyph glyph-name="ion-android-stair-drawer" unicode="&#xf311;" horiz-adv-x="512" +d="M0 0v96h256v-96h-256zM128 144v96h256v-96h-256zM256 288v96h256v-96h-256z" /> + <glyph glyph-name="ion-android-star" unicode="&#xf2fc;" horiz-adv-x="512" +d="M512 246l-136 -121l40 -178l-160 85l-160 -85l40 178l-136 121l182 17l74 174l74 -174z" /> + <glyph glyph-name="ion-android-stopwatch" unicode="&#xf2fd;" +d="M240 383c116 -8 208 -105 208 -223c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 118 92 215 208 223v17h-32v48h96v-48h-32v-17zM360 24c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56 +s100 20 136 56zM337 273c3 -3 3 -8 0 -11l-74 -74c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48s-48 22 -48 48s22 48 48 48c10 0 20 -3 28 -9l74 74c3 3 8 3 11 0zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-android-storage" unicode="&#xf2fe;" +d="M0 256h448v-128h-448v128zM128 160v32h-96v-32h96zM0 416h448v-128h-448v128zM128 320v32h-96v-32h96zM0 96h448v-128h-448v128zM128 0v32h-96v-32h96z" /> + <glyph glyph-name="ion-android-system-back" unicode="&#xf2ff;" horiz-adv-x="512" +d="M416 256c53 0 96 -43 96 -96s-43 -96 -96 -96h-192v32h192c35 0 64 29 64 64s-29 64 -64 64v0h-361l67 -80h-42l-80 96l80 96h42l-67 -80h361z" /> + <glyph glyph-name="ion-android-system-home" unicode="&#xf300;" horiz-adv-x="512" +d="M256 303l-224 -84v-123h448v123zM256 338v0l256 -96v-178h-512v178z" /> + <glyph glyph-name="ion-android-system-windows" unicode="&#xf301;" horiz-adv-x="512" +d="M0 256h416v-192h-416v192zM384 96v128h-352v-128h352zM128 320h384v-192h-32v160h-352v32z" /> + <glyph glyph-name="ion-android-timer" unicode="&#xf302;" horiz-adv-x="320" +d="M210 202c87 -46 110 -206 110 -234h-320c0 27 23 188 110 234c-87 41 -110 187 -110 214h320c0 -26 -23 -172 -110 -214zM61 304c12 -25 25 -44 41 -58c17 -15 36 -22 58 -22s41 7 58 22c16 14 29 34 41 59c12 26 19 52 23 69c1 3 2 10 2 10h-248c4 -21 12 -52 25 -80z +M284 0c-4 25 -12 58 -26 91c-12 29 -25 51 -41 67c-17 17 -36 25 -57 25s-39 -8 -56 -25c-16 -16 -30 -38 -42 -67c-14 -33 -22 -66 -26 -91h248z" /> + <glyph glyph-name="ion-android-trash" unicode="&#xf303;" horiz-adv-x="352" +d="M16 249c39 -10 68 -21 160 -21s121 12 160 21c-2 -54 -10 -224 -11 -266c-1 -25 -66 -46 -147 -46s-145 21 -146 46c-2 34 -13 212 -16 266zM256 374c81 -10 96 -10 96 -53s-68 -59 -176 -59s-176 16 -176 58s17 44 96 54v66c0 6 5 8 11 8h140c6 0 9 -2 9 -8v-66z +M128 416v-39c15 1 31 1 48 1s34 0 48 -1v39h-96z" /> + <glyph glyph-name="ion-android-user-menu" unicode="&#xf312;" +d="M144 232c-28 0 -52 17 -62 42h124c-10 -25 -34 -42 -62 -42zM0 416h288v-288h-21c-9 35 -32 62 -72 74c-15 -8 -33 -13 -51 -13s-36 5 -51 13c-40 -12 -63 -39 -72 -74h-21v288zM144 209c49 0 89 40 89 89s-40 89 -89 89s-89 -40 -89 -89s40 -89 89 -89zM320 288v128h128 +v-128h-128zM320 128v128h128v-128h-128zM320 -32v128h128v-128h-128zM160 -32v128h128v-128h-128zM0 -32v128h128v-128h-128z" /> + <glyph glyph-name="ion-android-volume" unicode="&#xf304;" horiz-adv-x="512" +d="M234 448c54 0 70 -115 70 -256s-16 -256 -70 -256c-42 0 -74 64 -138 160h-64c-18 0 -32 43 -32 96s14 96 32 96h64c64 96 96 160 138 160zM240 -14c24 0 34 82 34 206s-10 206 -34 206c-18 0 -24 -78 -27 -144c28 -7 43 -32 43 -62s-15 -55 -43 -62 +c3 -66 9 -144 27 -144zM466 370c30 -52 46 -113 46 -178s-17 -126 -47 -178l-23 24c4 8 8 16 12 25c17 41 26 84 26 129s-9 88 -26 129c-4 9 -8 17 -12 25zM411 295c23 -28 37 -64 37 -103s-14 -75 -37 -103l-22 23c18 23 27 51 27 80c0 30 -9 57 -27 80zM375 229 +c6 -11 9 -24 9 -37s-3 -27 -9 -38l-30 12c4 8 7 17 7 26s-3 18 -7 26z" /> + <glyph glyph-name="ion-android-wifi" unicode="&#xf305;" horiz-adv-x="512" +d="M333 181c20 -8 38 -20 54 -34l-54 -61c-21 16 -48 26 -77 26s-56 -10 -77 -26l-54 61c16 14 34 26 54 34c24 10 50 16 77 16s53 -6 77 -16zM256 96c24 0 47 -8 66 -22l-66 -74l-66 74c19 14 42 22 66 22zM372 269c29 -12 56 -28 80 -49l-55 -61c-38 34 -87 54 -141 54 +s-103 -21 -141 -54l-55 61c24 21 51 37 80 49c37 16 76 24 116 24s79 -8 116 -24zM256 384c98 0 188 -36 256 -96l-50 -56c-55 48 -127 77 -206 77s-151 -29 -206 -77l-50 56c68 60 158 96 256 96z" /> + <glyph glyph-name="ion-aperture" unicode="&#xf313;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM168 342l56 -86h-147 +c17 40 50 71 91 86zM381 160h-102l72 129c21 -27 33 -60 33 -97c0 -11 -1 -22 -3 -32zM328 314l-49 -90l-78 126c8 1 15 2 23 2c40 0 76 -14 104 -38zM67 224h102l-72 -129c-21 27 -33 60 -33 97c0 11 1 22 3 32zM280 42l-56 86h147c-17 -40 -50 -71 -91 -86zM120 70l49 90 +l78 -126c-8 -1 -15 -2 -23 -2c-40 0 -76 14 -104 38z" /> + <glyph glyph-name="ion-archive" unicode="&#xf102;" +d="M224 140l-128 116h80v96h96v-96h80zM433 151c11 -6 17 -19 15 -32l-9 -67c-2 -13 -9 -20 -28 -20h-374c-18 0 -26 7 -28 20l-9 67c-2 13 3 26 14 32l72 55h42l-62 -62h50c2 0 5 -1 6 -3l18 -45h168l18 45c1 2 3 3 5 3h51l-62 62h42z" /> + <glyph glyph-name="ion-arrow-down-a" unicode="&#xf103;" horiz-adv-x="384" +d="M192 -0l-192 192h112v192h160v-192h112z" /> + <glyph glyph-name="ion-arrow-down-b" unicode="&#xf104;" horiz-adv-x="320" +d="M3 263c-2 2 -3 6 -3 9c0 9 8 16 17 16v0h286v0c9 0 17 -7 17 -16c0 -3 -1 -6 -3 -8l-2 -3l-136 -156c-5 -5 -11 -9 -19 -9s-14 4 -19 9l-136 156z" /> + <glyph glyph-name="ion-arrow-down-c" unicode="&#xf105;" horiz-adv-x="274" +d="M265 125l-105 -100c-6 -6 -14 -9 -23 -9s-16 3 -22 9l-106 100c-12 12 -12 31 0 43s34 12 46 0l50 -48v217c0 17 14 31 32 31s32 -14 32 -31v-217l50 48c12 12 34 12 46 0s12 -31 0 -43z" /> + <glyph glyph-name="ion-arrow-expand" unicode="&#xf25e;" horiz-adv-x="320" +d="M178 238l64 64l-50 50h128v-128l-50 50l-64 -64zM178 146l28 28l64 -64l50 50v-128h-128l50 50zM142 146l-64 -64l50 -50h-128v128l50 -50l64 64zM142 238l-28 -28l-64 64l-50 -50v128h128l-50 -50z" /> + <glyph glyph-name="ion-arrow-graph-down-left" unicode="&#xf25f;" +d="M0 64v160l61 -61l131 141l107 -112l149 128l-149 -203l-107 107l-94 -98l62 -62h-160z" /> + <glyph glyph-name="ion-arrow-graph-down-right" unicode="&#xf260;" +d="M288 64l62 62l-94 98l-107 -107l-149 203l149 -128l107 112l131 -141l61 61v-160h-160z" /> + <glyph glyph-name="ion-arrow-graph-up-left" unicode="&#xf261;" +d="M160 320l-62 -62l94 -98l107 107l149 -203l-149 128l-107 -112l-131 141l-61 -61v160h160z" /> + <glyph glyph-name="ion-arrow-graph-up-right" unicode="&#xf262;" +d="M288 320h160v-160l-61 61l-131 -141l-107 112l-149 -128l149 203l107 -107l94 98z" /> + <glyph glyph-name="ion-arrow-left-a" unicode="&#xf106;" horiz-adv-x="384" +d="M0 192l192 192v-112h192v-160h-192v-112z" /> + <glyph glyph-name="ion-arrow-left-b" unicode="&#xf107;" horiz-adv-x="192" +d="M167 349c2 2 6 3 9 3c9 0 16 -8 16 -17v0v-286v0c0 -9 -7 -17 -16 -17c-3 0 -7 1 -9 3l-2 2l-156 136c-5 5 -9 11 -9 19s4 14 9 19l156 136z" /> + <glyph glyph-name="ion-arrow-left-c" unicode="&#xf108;" horiz-adv-x="352" +d="M109 320c12 12 32 12 44 0s12 -34 0 -46l-49 -50h217c17 0 31 -14 31 -32s-14 -32 -31 -32h-217l48 -50c12 -12 12 -34 0 -46s-31 -12 -43 0l-100 106c-6 6 -9 13 -9 22s3 17 9 23z" /> + <glyph glyph-name="ion-arrow-move" unicode="&#xf263;" +d="M448 192l-96 -96v76h-109l1 -108h76l-96 -96l-96 96h76v108h-108v-76l-96 96l96 96v-76h108v108h-76l96 96l96 -96h-76v-108h108v76z" /> + <glyph glyph-name="ion-arrow-resize" unicode="&#xf264;" horiz-adv-x="320" +d="M192 352h128v-128l-50 50l-9 -9l-183 -183l50 -50h-128v128l50 -50l128 128v0l64 64z" /> + <glyph glyph-name="ion-arrow-return-left" unicode="&#xf265;" horiz-adv-x="384" +d="M128 352v-64h248c4 0 8 -4 8 -8v-240c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v48c0 4 4 8 8 8h248v128h-192v-64l-128 96z" /> + <glyph glyph-name="ion-arrow-return-right" unicode="&#xf266;" horiz-adv-x="384" +d="M384 256l-128 -96v64h-192v-128h248c4 0 8 -4 8 -8v-48c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v240c0 4 4 8 8 8h248v64z" /> + <glyph glyph-name="ion-arrow-right-a" unicode="&#xf109;" horiz-adv-x="384" +d="M384 192l-192 -192v112h-192v160h192v112z" /> + <glyph glyph-name="ion-arrow-right-b" unicode="&#xf10a;" horiz-adv-x="192" +d="M25 35c-2 -2 -6 -3 -9 -3c-9 0 -16 8 -16 17v0v286v0c0 9 7 17 16 17c3 0 6 -1 8 -3l3 -2l156 -136c5 -5 9 -11 9 -19s-4 -14 -9 -19l-156 -136z" /> + <glyph glyph-name="ion-arrow-right-c" unicode="&#xf10b;" horiz-adv-x="352" +d="M243 320l100 -105c6 -6 9 -14 9 -23s-3 -16 -9 -22l-100 -106c-12 -12 -31 -12 -43 0s-12 34 0 46l48 50h-217c-17 0 -31 14 -31 32s14 32 31 32h217l-49 50c-12 12 -12 34 0 46s32 12 44 0z" /> + <glyph glyph-name="ion-arrow-shrink" unicode="&#xf267;" horiz-adv-x="384" +d="M384 356l-82 -82l50 -50h-128v128l50 -50l82 82zM384 28l-28 -28l-82 82l-50 -50v128h128l-50 -50zM0 28l82 82l-50 50h128v-128l-50 50l-82 -82zM0 356l28 28l82 -82l50 50v-128h-128l50 50z" /> + <glyph glyph-name="ion-arrow-swap" unicode="&#xf268;" horiz-adv-x="384" +d="M0 120c0 4 4 8 8 8h248v64l128 -96l-128 -96v64h-248c-4 0 -8 4 -8 8v48zM384 264c0 -4 -4 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4 0 8 -4 8 -8v-48z" /> + <glyph glyph-name="ion-arrow-up-a" unicode="&#xf10c;" horiz-adv-x="384" +d="M192 384l192 -192h-112v-192h-160v192h-112z" /> + <glyph glyph-name="ion-arrow-up-b" unicode="&#xf10d;" horiz-adv-x="320" +d="M317 121c2 -2 3 -6 3 -9c0 -9 -8 -16 -17 -16v0h-286v0c-9 0 -17 7 -17 16c0 3 1 6 3 8l2 3l136 156c5 5 11 9 19 9s14 -4 19 -9l136 -156z" /> + <glyph glyph-name="ion-arrow-up-c" unicode="&#xf10e;" horiz-adv-x="274" +d="M9 259l105 100c6 6 14 9 23 9s16 -3 22 -9l106 -100c12 -12 12 -31 0 -43s-34 -12 -46 0l-50 48v-217c0 -17 -14 -31 -32 -31s-32 14 -32 31v217l-50 -49c-12 -12 -34 -12 -46 0s-12 32 0 44z" /> + <glyph glyph-name="ion-asterisk" unicode="&#xf314;" +d="M448 224v-64l-186 10l104 -170l-56 -32l-86 176l-86 -176l-56 32l104 170l-186 -10v64l187 -7l-109 167l60 32l86 -176l86 176l60 -32l-109 -167z" /> + <glyph glyph-name="ion-at" unicode="&#xf10f;" +d="M422 41c-24 -25 -52 -43 -85 -55s-69 -18 -105 -18c-35 0 -66 6 -95 17s-53 26 -73 46s-36 43 -47 71s-17 58 -17 90s6 62 18 89s29 51 50 71s46 35 74 47c28 11 58 17 90 17c28 0 55 -4 81 -12s49 -20 69 -36s36 -36 48 -60s18 -53 18 -85c0 -24 -3 -46 -10 -64 +s-16 -34 -27 -46s-24 -22 -38 -28s-29 -10 -45 -10s-29 4 -39 12s-15 17 -15 29h-3c-6 -10 -15 -19 -28 -28s-28 -13 -46 -13c-28 0 -49 9 -64 27s-23 42 -23 71c0 17 3 34 9 50s14 31 24 44s23 23 38 31s31 12 49 12c15 0 27 -4 38 -10c10 -6 18 -15 21 -24h1l5 24h54 +l-24 -113c-1 -6 -2 -12 -3 -19s-2 -13 -2 -19c0 -7 1 -13 4 -18s7 -7 15 -7c16 0 29 9 39 26s16 40 16 68c0 24 -4 45 -12 64s-20 34 -34 47s-32 23 -52 29s-41 9 -65 9c-26 0 -49 -4 -70 -13s-39 -22 -54 -38s-27 -34 -35 -56c-8 -21 -13 -44 -13 -69c0 -26 4 -51 13 -72 +s21 -39 37 -54s35 -27 57 -35s46 -12 72 -12c33 0 61 6 85 16s45 25 65 43zM231 260c-10 0 -18 -2 -25 -8s-14 -13 -19 -22s-8 -18 -11 -28s-4 -20 -4 -30c0 -5 0 -10 1 -16c1 -5 3 -10 6 -15s7 -8 12 -11s11 -5 19 -5c11 0 20 3 28 8s14 13 19 21s9 16 11 26s3 19 3 27 +c0 6 0 13 -1 19s-4 12 -7 17s-7 9 -12 12s-12 5 -20 5z" /> + <glyph glyph-name="ion-bag" unicode="&#xf110;" +d="M416 288l32 -320h-448l32 320h64v4c0 68 56 124 124 124h8c68 0 124 -56 124 -124v-4h64zM128 292v-4h192v4c0 51 -41 92 -92 92v0h-8c-51 0 -92 -41 -92 -92zM36 0h376l-25 256h-35v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36 +h-192v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36h-35z" /> + <glyph glyph-name="ion-battery-charging" unicode="&#xf111;" +d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM225 288l-100 -111h61l-27 -81l100 111h-61z" /> + <glyph glyph-name="ion-battery-empty" unicode="&#xf112;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-337v-192h337v32v32h32h15z" /> + <glyph glyph-name="ion-battery-full" unicode="&#xf113;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37z" /> + <glyph glyph-name="ion-battery-half" unicode="&#xf114;" +d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-81l32 -192h49v32v32h32h15z" /> + <glyph glyph-name="ion-battery-low" unicode="&#xf115;" +d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM369 288h-209l32 -192h177v32v32h32h15v64h-15h-32v32v32z" /> + <glyph glyph-name="ion-beaker" unicode="&#xf269;" horiz-adv-x="384" +d="M375 52c6 -9 9 -20 9 -32c0 -28 -16 -52 -63 -52h-258c-47 0 -63 24 -63 52c0 12 3 23 9 32l49 73l48 73l2 3c13 20 20 45 20 71v92s-15 30 -15 39s6 13 15 13h127c9 0 16 -3 16 -12s-15 -20 -15 -40v-92c0 -26 6 -51 19 -71l3 -4l48 -72zM345 7c3 3 7 8 7 14 +c0 5 -2 10 -4 14l-49 72v0v1l-48 72s-2 3 -3 5c-16 26 -24 56 -24 87v74c0 7 0 18 1 22c5 18 0 16 -9 16h-47c-9 0 -15 2 -10 -16c1 -4 1 -16 1 -22v-75c0 -32 -9 -61 -25 -86l-3 -5l-47 -73v0v0l-49 -73c-2 -4 -4 -9 -4 -14c0 -6 3 -10 6 -13c4 -4 12 -7 25 -7h258 +c13 0 20 3 24 7zM327 37l1 -1c1 -2 2 -5 2 -7c0 -7 -6 -13 -14 -13v0h-16h-30h-157h-29h-16v0c-7 0 -14 5 -14 13c0 3 1 6 3 8l8 13l1 1v0v1l16 23l42 66l1 1v0v0l12 18h109l14 -20v0l1 -1l1 -2l40 -62l12 -18zM238 106c2 -1 4 -2 6 -2s3 0 5 2c1 2 3 4 3 6s-1 4 -3 6 +c-1 2 -3 2 -5 2s-4 0 -6 -2c-1 -2 -2 -4 -2 -6s0 -4 2 -6zM274 50c2 -2 5 -4 7 -4c1 0 3 0 4 1c4 2 4 7 2 11l-23 36c-1 2 -4 4 -7 4c-2 0 -3 0 -4 -1c-4 -2 -5 -7 -3 -11zM124 141v0c-4 -5 0 0 0 0z" /> + <glyph glyph-name="ion-beer" unicode="&#xf26a;" +d="M384 288c35 0 64 -29 64 -64v-96c0 -35 -29 -64 -64 -64h-32v-80c0 -9 -7 -16 -16 -16h-256c-9 0 -16 7 -16 16v223c-26 0 -48 22 -48 48v54v1c-10 11 -16 26 -16 42c0 35 29 64 64 64c18 0 34 -8 46 -20c10 12 26 20 43 20c14 0 27 -6 37 -14c12 9 26 14 42 14 +c17 0 34 -6 46 -16c11 10 26 16 42 16c35 0 64 -29 64 -64c0 -24 -18 -44 -32 -48v-16h32zM296 144c4 0 8 3 8 8v0v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -3 2 -6 4 -7c1 -1 2 -1 4 -1zM303 220c1 2 1 4 1 6s-1 4 -3 5s-4 1 -6 1s-4 -2 -5 -4s-2 -4 -2 -6s2 -4 4 -5 +s4 -1 6 -1s4 2 5 4zM320 288v32h-20c-3 -8 -7 -16 -13 -23c-13 -16 -33 -25 -55 -25c-26 0 -48 13 -61 33c-6 -2 -12 -3 -18 -3c-12 0 -23 4 -32 10c-2 1 -3 3 -5 4c-1 -2 -2 -3 -3 -5c-5 -6 -11 -10 -17 -14v-32v-9h80c0 4 4 8 8 8s8 -4 8 -8h128v32zM351 343c1 3 1 6 1 9 +c0 18 -14 32 -32 32c-9 0 -17 -4 -23 -10c-2 -2 -6 -5 -16 -6h-8c-6 1 -12 3 -14 5c-7 7 -16 11 -27 11c-9 0 -18 -4 -25 -9l-7 -7c0 -1 0 -1 -1 -2c-3 -3 -7 -5 -11 -5c-5 0 -8 3 -11 6c-1 2 -2 3 -3 5s-3 4 -5 6c-4 4 -10 6 -16 6c-10 0 -18 -9 -25 -16 +c-7 -8 -27 -8 -34 0s-18 16 -30 16c-18 0 -32 -14 -32 -32c0 -2 1 -5 1 -7c2 -9 7 -17 15 -21v-34v-35c0 -9 7 -16 16 -16v26v23v32c10 0 18 4 24 11c2 2 3 4 4 6c0 0 6 10 12 11s20 6 30 -5c4 -5 11 -9 19 -9c3 0 5 1 7 2c3 1 7 2 9 4v0c3 2 6 4 10 4c7 0 12 -4 14 -10 +c0 0 1 -1 1 -2c1 -3 1 -5 3 -8c7 -12 20 -20 35 -20c13 0 25 6 32 16c5 7 8 15 8 24s9 8 9 8h7h48c6 0 13 -3 15 -9zM416 128v96c0 18 -14 32 -32 32h-32v-160h32c18 0 32 14 32 32zM128 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM288 280c0 5 3 8 8 8s8 -3 8 -8 +s-3 -8 -8 -8s-8 3 -8 8z" /> + <glyph glyph-name="ion-bluetooth" unicode="&#xf116;" horiz-adv-x="256" +d="M12 304c16 16 18 13 19 12l68 -65v0v0c2 -2 10 -10 10 -3v156v0v2c0 6 6 10 12 10c4 0 7 -2 9 -4v0s117 -113 122 -117s5 -10 1 -14l-84 -81s-4 -4 -4 -8s4 -8 4 -8l84 -81c4 -4 4 -10 -1 -14s-122 -117 -122 -117v0c-2 -2 -5 -4 -9 -4c-6 0 -12 4 -12 10v2v0v156 +s-8 -1 -10 -3v0v-1l-68 -64c-1 -1 -3 -4 -19 12s-12 17 -11 18s90 86 90 86s4 3 4 8v0c0 5 -4 8 -4 8s-89 85 -90 86s-5 2 11 18zM152 328v-79c0 -8 8 -1 10 1l30 30s3 5 3 7s-1 5 -3 7l-30 30c-2 2 -10 11 -10 4zM152 135v-79s8 2 10 4l30 30c2 2 3 5 3 7s-1 5 -3 7l-30 30 +c-2 2 -10 9 -10 1z" /> + <glyph glyph-name="ion-bonfire" unicode="&#xf315;" horiz-adv-x="384" +d="M207 97l15 -89c1 -3 1 -5 1 -8c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 2 0 5 1 7l15 92v0c2 7 8 13 16 13s15 -7 16 -15zM242 93v0v0v0zM329 58c9 -8 10 -25 0 -35s-27 -9 -35 0c-1 1 -2 3 -3 4l-49 66c-3 5 -2 11 2 15c5 5 10 5 16 1l64 -47c2 -1 3 -3 5 -4zM309 113v0 +v0v0zM371 126c9 -1 13 -7 13 -19c0 -9 -10 -14 -18 -12l-57 18v0v0c-3 2 -6 5 -5 9s4 7 8 6zM75 113v0v0v0zM75 113v0l-58 -18c-8 -2 -17 3 -17 12c0 12 3 18 12 19l60 2c4 1 7 -2 8 -6s-2 -7 -5 -9v0zM124 109c5 4 11 4 16 -1c4 -4 5 -10 2 -15l-49 -66c-1 -1 -2 -3 -3 -4 +c-10 -10 -25 -10 -35 0s-10 25 0 35c2 2 3 3 5 4zM288 320c0 -32 -9 -58 -50 -86c-37 -26 -94 -46 -110 -106c0 0 -58 24 -48 96s124 106 112 192c24 0 96 -35 96 -96zM288 192c-16 -50 -44 -64 -80 -64c-15 0 -32 9 -43 26c12 15 28 26 47 37c9 5 20 10 29 16 +c21 14 38 31 47 49c5 -15 5 -48 0 -64zM88 288c-6 4 -9 14 -8 27c2 22 34 39 32 69c14 2 31 -3 42 -24c-5 -11 -15 -21 -28 -34s-26 -22 -38 -38z" /> + <glyph glyph-name="ion-bookmark" unicode="&#xf26b;" horiz-adv-x="192" +d="M184 384c4 0 8 -4 8 -8v-56h-192v56c0 4 4 8 8 8h176zM0 0v304h192v-304l-96 96z" /> + <glyph glyph-name="ion-briefcase" unicode="&#xf26c;" +d="M240 176v8h208v-176c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v176h208v-8h32zM440 304c4 0 8 -4 8 -8v-96h-208v8h-32v-8h-208v96c0 4 4 8 8 8h120v31c1 28 22 49 51 49h90c30 0 50 -21 51 -49v-31h120zM288 332v1c0 10 -9 19 -19 19h-90c-10 0 -19 -9 -19 -19v-1v-1v-27 +h128v27v1z" /> + <glyph glyph-name="ion-bug" unicode="&#xf2be;" +d="M343 321c-6 -16 -16 -31 -28 -43c-24 -24 -57 -37 -91 -37s-67 13 -91 37c-12 12 -22 27 -28 43c29 39 72 63 119 63s90 -24 119 -63zM95 305c22 -45 68 -77 121 -80v-225c-40 2 -77 22 -104 54c-7 -6 -10 -9 -13 -15c8 -9 7 -22 -1 -31c-9 -10 -24 -11 -34 -2 +s-11 24 -2 34l3 3s2 1 2 1c4 13 13 25 27 36c-15 26 -26 57 -29 90c-7 0 -12 -2 -17 -3c-1 -13 -11 -23 -24 -23s-24 11 -24 24s11 24 24 24h3c4 2 8 5 12 6c7 2 14 4 25 4c1 23 6 45 13 65c-6 4 -11 7 -15 11c-6 5 -11 13 -14 19c-1 0 -3 1 -4 2c-12 6 -15 21 -9 33 +s21 15 33 9c11 -6 15 -20 10 -31c2 -3 3 -7 4 -8c2 -2 5 -3 8 -5c2 3 3 5 5 8zM424 192c13 0 24 -11 24 -24s-11 -24 -24 -24s-23 10 -24 23c-5 1 -10 3 -17 3c-3 -33 -14 -64 -29 -90c14 -11 23 -23 27 -36c0 0 1 0 2 -1l3 -3c9 -10 8 -25 -2 -34s-25 -8 -34 2 +c-8 9 -9 22 -1 31c-3 6 -6 9 -13 15c-27 -32 -64 -52 -104 -54v225c53 3 99 35 121 80c2 -3 3 -5 5 -8c3 2 6 3 8 5c1 1 2 5 4 8c-5 11 -1 25 10 31c12 6 27 3 33 -9s3 -27 -9 -33c-1 -1 -3 -2 -4 -2c-3 -6 -8 -14 -14 -19c-4 -4 -9 -7 -15 -11c7 -20 12 -42 13 -65 +c11 0 18 -2 25 -4c4 -1 8 -4 12 -6h3z" /> + <glyph glyph-name="ion-calculator" unicode="&#xf26d;" horiz-adv-x="320" +d="M304 416c9 0 16 -7 16 -16v-416c0 -9 -7 -16 -16 -16h-288c-9 0 -16 7 -16 16v416c0 9 7 16 16 16h288zM48 240v-32h32v32h-32zM48 176v-32h32v32h-32zM48 112v-32h32v32h-32zM144 16v32h-96v-32h96zM144 80v32h-32v-32h32zM144 144v32h-32v-32h32zM144 208v32h-32v-32 +h32zM208 16v32h-32v-32h32zM208 80v32h-32v-32h32zM208 144v32h-32v-32h32zM208 208v32h-32v-32h32zM272 16v96h-32v-96h32zM272 144v32h-32v-32h32zM272 208v32h-32v-32h32zM272 288v80h-224v-80h224z" /> + <glyph glyph-name="ion-calendar" unicode="&#xf117;" +d="M112 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM336 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM440 384c4 0 8 -4 8 -8v-400c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v400 +c0 4 4 8 8 8h56v-41c0 -22 24 -39 48 -39s48 17 48 39v41h128v-41c0 -22 25 -39 49 -39s47 17 47 39v41h56zM400 16v256h-352v-256h352z" /> + <glyph glyph-name="ion-camera" unicode="&#xf118;" horiz-adv-x="416" +d="M382 301c18 0 34 -14 34 -33v-202c0 -19 -16 -34 -34 -34h-348c-19 0 -34 15 -34 34v202c0 19 15 33 34 33h69l39 40v0c6 7 15 11 25 11h84c9 0 17 -4 23 -10v0v0v0l41 -41h67zM208 82c51 0 92 42 92 93s-41 93 -92 93s-92 -42 -92 -93s41 -93 92 -93zM376 248 +c8 0 14 6 14 14s-6 14 -14 14s-14 -6 -14 -14s6 -14 14 -14zM208 245c38 0 70 -31 70 -70s-32 -70 -70 -70c-39 0 -70 31 -70 70s31 70 70 70z" /> + <glyph glyph-name="ion-card" unicode="&#xf119;" +d="M420 352c16 0 28 -12 28 -28v0v-264v0c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v0v0v264v0v0c0 16 12 28 28 28h392zM45 320c-7 0 -12 -5 -13 -12v-20h384v20c-1 7 -6 12 -13 12h-358zM403 64c7 0 12 5 13 12v116h-384v-116c1 -7 6 -12 13 -12h358zM64 128v16 +h192v-16h-192zM64 96v16h96v-16h-96zM320 96v48h64v-48h-64z" /> + <glyph glyph-name="ion-cash" unicode="&#xf316;" horiz-adv-x="512" +d="M0 352h512v-256h-512v256zM193 128c-20 23 -33 58 -33 96s13 73 33 96h-97c0 -35 -29 -64 -64 -64v-80c27 0 48 -21 48 -48h113zM298 187c3 4 4 9 4 15c0 3 0 5 -1 8s-2 6 -4 8s-4 4 -7 6s-6 4 -10 5c-1 0 -4 1 -7 2s-5 0 -8 1v31c2 -1 5 -2 7 -3c4 -3 6 -7 7 -13h20 +c0 5 -2 9 -4 13s-5 8 -9 11s-9 5 -14 6c-2 1 -5 2 -7 2v9h-18v-9c-2 0 -4 -1 -6 -2c-5 -1 -10 -2 -14 -5s-7 -6 -9 -10s-4 -9 -4 -14c0 -3 0 -5 1 -8s2 -5 4 -7s5 -5 8 -7s7 -4 12 -5c3 -1 6 0 8 -1v-35c-3 1 -6 2 -9 4s-5 4 -6 7s-2 6 -2 9h-20c0 -5 2 -11 4 -16 +c3 -5 6 -8 10 -11s9 -6 15 -7c3 -1 5 -2 8 -2v-9h18v9c3 0 6 1 9 2c5 1 10 2 14 5s7 7 10 11zM480 176v80c-35 0 -64 29 -64 64h-97c20 -23 33 -58 33 -96s-13 -73 -33 -96h113c0 27 22 48 48 48zM64 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z +M384 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM273 213c2 -1 4 -2 6 -4s3 -5 3 -9c0 -2 0 -4 -1 -6s-2 -4 -4 -5s-5 -3 -8 -4c-1 0 -2 -1 -4 -1v31c3 -1 6 -1 8 -2zM236 257c1 2 3 3 5 4s4 2 6 2v-26c-4 1 -7 3 -9 5s-4 4 -4 8c0 3 1 5 2 7zM0 64 +v16h512v-16h-512zM0 32v16h512v-16h-512z" /> + <glyph glyph-name="ion-chatbox-working" unicode="&#xf11a;" horiz-adv-x="416" +d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153zM304 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 256c-18 0 -32 -14 -32 -32s14 -32 32 -32 +s32 14 32 32s-14 32 -32 32zM112 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> + <glyph glyph-name="ion-chatbox" unicode="&#xf11b;" horiz-adv-x="416" +d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153z" /> + <glyph glyph-name="ion-chatboxes" unicode="&#xf11c;" horiz-adv-x="416" +d="M246 82l26 -18c-4 -21 -29 -32 -52 -32h-90c-8 0 -11 -2 -13 -3l-53 -45v48h-16c-26 0 -48 16 -48 41v129c0 25 20 45 46 45h2v-101c0 -33 29 -59 64 -59h117c10 0 14 -3 17 -5zM353 400c35 0 63 -27 63 -60v-168c0 -33 -28 -60 -63 -60h-17v-64l-75 60c-2 2 -7 4 -17 4 +h-101c-35 0 -63 27 -63 60v98v70c0 33 21 60 56 60h217z" /> + <glyph glyph-name="ion-chatbubble-working" unicode="&#xf11d;" horiz-adv-x="416" +d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15zM304 224c-18 0 -32 -14 -32 -32 +s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM112 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> + <glyph glyph-name="ion-chatbubble" unicode="&#xf11e;" horiz-adv-x="416" +d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15z" /> + <glyph glyph-name="ion-chatbubbles" unicode="&#xf11f;" horiz-adv-x="416" +d="M25 57c-1 1 0 2 -1 3c-15 22 -24 49 -24 77c0 42 19 80 49 106c-2 -11 -4 -22 -4 -34c0 -92 78 -168 174 -168c15 0 30 2 44 6c-27 -32 -69 -53 -115 -53c-20 0 -40 5 -58 12h-1v0c-2 1 -5 2 -8 2s-6 -1 -9 -2l-56 -22l12 63c0 4 -1 7 -3 10v0zM242 400 +c96 0 174 -76 174 -168c0 -33 -11 -64 -28 -90c-1 -1 -1 -2 -2 -3v0c-2 -4 -3 -8 -3 -12l17 -74l-69 26c-3 1 -6 2 -10 2c-3 0 -6 -1 -9 -2v0l-2 -1c-8 -3 -16 -5 -24 -7c-14 -4 -29 -6 -44 -6c-96 0 -173 75 -173 167c0 12 1 24 3 35c16 76 86 133 170 133z" /> + <glyph glyph-name="ion-checkmark-circled" unicode="&#xf120;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM339 267c1 1 1 2 1 3s0 3 -1 4l-31 24c-1 1 -3 1 -4 1s-2 0 -3 -1l-111 -143s-44 42 -45 43s-4 3 -6 3s-3 -2 -4 -3l-25 -25l-1 -1c-1 -1 -1 -3 -1 -4s0 -2 1 -3l2 -1 +s78 -75 79 -76s3 -3 5 -3s4 2 5 3z" /> + <glyph glyph-name="ion-checkmark-round" unicode="&#xf121;" horiz-adv-x="416" +d="M400 376c17 -13 22 -39 9 -57l-207 -302c-13 -18 -37 -22 -54 -9s-137 147 -137 147c-15 16 -15 42 1 58s40 15 55 -2l99 -107l180 263c13 18 37 22 54 9z" /> + <glyph glyph-name="ion-checkmark" unicode="&#xf122;" horiz-adv-x="416" +d="M414 338c1 -2 2 -4 2 -6s-1 -4 -2 -6l-249 -320c-2 -2 -5 -6 -9 -6s-8 3 -10 5s-141 136 -141 136l-3 3c-1 2 -2 4 -2 6s1 3 2 5l2 2c14 15 42 44 44 46s4 6 8 6s8 -4 10 -6s80 -78 80 -78l200 257c2 2 4 2 6 2s5 -1 7 -2z" /> + <glyph glyph-name="ion-chevron-down" unicode="&#xf123;" +d="M224 150v0v0l174 167c4 4 12 4 16 0l31 -30c4 -4 4 -12 0 -16l-213 -204c-2 -2 -5 -3 -8 -3s-6 1 -8 3l-213 204c-4 4 -4 12 0 16l31 30c4 4 12 4 16 0z" /> + <glyph glyph-name="ion-chevron-left" unicode="&#xf124;" horiz-adv-x="256" +d="M86 192l167 -174c4 -4 4 -12 0 -16l-30 -31c-4 -4 -12 -4 -16 0l-204 213c-2 2 -3 5 -3 8s1 6 3 8l204 213c4 4 12 3 16 -1l30 -30c4 -4 4 -12 0 -16l-167 -174v0v0z" /> + <glyph glyph-name="ion-chevron-right" unicode="&#xf125;" horiz-adv-x="256" +d="M170 192v0v0l-167 174c-4 4 -4 12 0 16l30 30c4 4 12 5 16 1l204 -213c2 -2 3 -5 3 -8s-1 -6 -3 -8l-204 -213c-4 -4 -12 -4 -16 0l-30 31c-4 4 -4 12 0 16z" /> + <glyph glyph-name="ion-chevron-up" unicode="&#xf126;" +d="M224 234l-174 -167c-4 -4 -12 -4 -16 0l-31 30c-4 4 -4 12 0 16l213 204c2 2 5 3 8 3s6 -1 8 -3l213 -204c4 -4 4 -12 0 -16l-31 -30c-4 -4 -12 -4 -16 0l-174 167v0v0z" /> + <glyph glyph-name="ion-clipboard" unicode="&#xf127;" horiz-adv-x="352" +d="M80 288c2 20 10 35 28 40l1 1c12 3 21 7 21 20v21c0 26 20 46 46 46s46 -20 46 -46v-21c0 -13 9 -18 21 -21h1c18 -5 26 -20 28 -40h-192zM176 384c-8 0 -14 -6 -14 -14s6 -14 14 -14s14 6 14 14s-6 14 -14 14zM325 385c15 0 27 -13 27 -29v-360c0 -16 -12 -28 -27 -28 +h-149h-149c-15 0 -27 12 -27 28v360c0 16 12 29 27 29h74v-15c0 -11 -9 -18 -19 -18h-37c-7 0 -13 -5 -13 -12v-328c0 -6 6 -12 12 -12h264c6 0 12 6 12 12v328c0 7 -6 12 -13 12h-37c-10 0 -19 7 -19 18v15h74zM64 240v16h112v-16h-112zM64 144v16h160v-16h-160zM64 48v16 +h129v-16h-129zM64 96v16h176v-16h-176zM64 192v16h208v-16h-208z" /> + <glyph glyph-name="ion-clock" unicode="&#xf26e;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM393 283c-2 3 -3 6 -5 9zM324 356c-3 2 -6 3 -9 5zM133 361c-3 -2 -6 -3 -9 -5zM60 292c-2 -3 -3 -6 -5 -9zM55 101c2 -3 3 -6 5 -9zM124 28c3 -2 6 -3 9 -5zM315 23 +c3 2 6 3 9 5zM360 56c10 10 18 21 26 33l-27 16l8 14l27 -16c13 25 21 52 22 81h-32v16h32c-1 29 -9 56 -22 81l-28 -16l-8 14l28 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -28l-14 -8l-16 28 +c-12 -8 -23 -16 -33 -26s-18 -21 -26 -33l27 -16l-8 -14l-27 16c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -29 9 -56 22 -81l28 16l8 -14l-28 -16c8 -12 16 -23 26 -33s21 -18 33 -26l16 27l14 -8l-16 -27c25 -13 52 -21 81 -22v32h16v-32c29 1 56 9 81 22l-16 27l14 8l16 -27 +c12 8 23 16 33 26zM393 101l-5 -9c2 3 3 6 5 9zM368 199v-16h-113c-4 -13 -17 -23 -31 -23c-7 0 -15 3 -20 7l-70 -71l-6 6l71 70c-4 6 -7 13 -7 20c0 12 6 22 16 28v84h32v-84c8 -4 13 -12 15 -21h113z" /> + <glyph glyph-name="ion-close-circled" unicode="&#xf128;" +d="M224 415c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM332 116l-75 75l76 75c3 3 3 9 0 12l-22 21c-2 2 -4 3 -6 3s-3 -1 -5 -3l-76 -74l-76 74c-2 2 -3 3 -5 3s-4 -1 -6 -3l-21 -21c-3 -3 -3 -9 0 -12l76 -75l-76 -76 +c-2 -1 -2 -3 -2 -5s0 -4 2 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l75 76l76 -75c2 -2 3 -3 5 -3s4 1 6 3l21 21c2 1 3 4 3 6s-1 4 -3 6z" /> + <glyph glyph-name="ion-close-round" unicode="&#xf129;" horiz-adv-x="384" +d="M374 61c14 -14 14 -37 0 -51s-37 -14 -51 0l-131 131l-131 -131c-14 -14 -36 -14 -50 0s-14 37 0 51l130 131l-130 131c-14 14 -14 37 0 51s36 14 50 0l131 -131l131 131c14 14 37 14 51 0s14 -37 0 -51l-131 -131z" /> + <glyph glyph-name="ion-close" unicode="&#xf12a;" horiz-adv-x="384" +d="M380 61c3 -3 4 -6 4 -10s-1 -7 -4 -10l-38 -37c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-131 131l-131 -131c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-38 37c-3 3 -4 6 -4 10s1 7 4 10l132 131l-132 130c-5 5 -5 15 0 20l37 38c3 2 6 4 10 4s7 -1 10 -4l131 -130l131 130c3 2 6 4 10 4 +s7 -1 10 -4l37 -38c5 -5 5 -14 0 -19l-132 -130z" /> + <glyph glyph-name="ion-closed-captioning" unicode="&#xf317;" horiz-adv-x="512" +d="M0 384h512v-384h-512v384zM464 192c0 27 0 44 -4 80s-23 56 -59 60s-91 4 -138 4h-7h-7c-47 0 -102 0 -138 -4s-55 -24 -59 -60s-4 -53 -4 -80s2 -47 4 -80s19 -56 59 -60s96 -4 145 -4s105 0 145 4s57 27 59 60s4 53 4 80zM372 164v4h53c0 -27 -7 -48 -19 -62 +s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28c1 -17 12 -29 27 -29s27 10 27 29v1z +M195 164v4h53c0 -27 -7 -48 -19 -62s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28 +c1 -17 12 -29 27 -29s27 10 27 29v1z" /> + <glyph glyph-name="ion-cloud" unicode="&#xf12b;" +d="M366 215c45 0 82 -38 82 -84s-37 -83 -82 -83v0h-276c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> + <glyph glyph-name="ion-code-download" unicode="&#xf26f;" +d="M299 164l-63 -63v0l-1 -1v0l-2 -1v0l-1 -1v0l-2 -1v0h-1v0h-1c-1 0 -3 -1 -4 -1s-3 1 -4 1h-1v0h-1v0l-2 1v0l-1 1v0c-1 1 -2 1 -3 2v0l-63 63c-6 6 -6 17 0 23s18 6 24 0l35 -34v118c0 9 7 17 16 17s16 -8 16 -17v-118l35 34c6 6 18 6 24 0s6 -17 0 -23zM136 56 +c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 +c-5 -5 -11 -7 -17 -7z" /> + <glyph glyph-name="ion-code-working" unicode="&#xf270;" +d="M128 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM200 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM272 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM136 56c-7 0 -12 2 -17 7l-112 112c-5 5 -7 10 -7 17 +s2 12 7 17l112 112c5 5 10 7 17 7s12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17l-95 -95l95 -95c5 -5 7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7zM312 56c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17l95 95l-95 95c-5 5 -7 10 -7 17s2 12 7 17s10 7 17 7s12 -2 17 -7l112 -112 +c5 -5 7 -10 7 -17s-2 -12 -7 -17l-112 -112c-5 -5 -10 -7 -17 -7z" /> + <glyph glyph-name="ion-code" unicode="&#xf271;" +d="M136 56c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 +c-5 -5 -11 -7 -17 -7z" /> + <glyph glyph-name="ion-coffee" unicode="&#xf272;" horiz-adv-x="384" +d="M319 191c37 -7 65 -40 65 -79c0 -20 -8 -39 -21 -54c-15 -17 -37 -26 -61 -26c-8 0 -17 1 -25 3c-6 1 -10 3 -15 5c-11 -15 -23 -25 -32 -33v0c-5 -5 -12 -7 -19 -7h-102c-7 0 -14 2 -19 7v0c-17 15 -41 36 -62 86s-28 91 -28 111s3 20 16 20h101c-5 17 -37 19 -37 46 +c0 17 15 32 28 37c-2 -8 -3 -14 -3 -21c0 -19 39 -30 39 -53c0 -3 0 -6 -1 -9h56c1 5 2 10 2 14c0 36 -56 36 -56 84c0 28 21 55 47 62c-4 -14 -9 -23 -9 -35c0 -32 57 -50 57 -88c0 -13 -5 -25 -12 -37h76c13 0 16 0 16 -20c0 -4 0 -8 -1 -13zM302 64c33 0 50 25 50 48 +s-17 43 -39 47c-4 -19 -11 -42 -21 -66c-4 -9 -8 -17 -12 -25c6 -3 13 -4 22 -4z" /> + <glyph glyph-name="ion-compass" unicode="&#xf273;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224c0 39 10 76 27 108c-16 12 -27 30 -27 52c0 35 29 64 64 64c22 0 40 -11 52 -27c32 17 69 27 108 27zM32 352c0 -10 5 -20 13 -26c13 17 28 32 45 45c-6 8 -16 13 -26 13c-18 0 -32 -14 -32 -32z +M360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM320 320c0 0 -54 -130 -72 -152s-120 -104 -120 -104s54 132 72 152s120 104 120 104z" /> + <glyph glyph-name="ion-compose" unicode="&#xf12c;" horiz-adv-x="384" +d="M379 348c7 -7 7 -18 0 -25l-32 -31l-55 55l31 32c7 7 18 7 25 0zM282 338l55 -55l-177 -173l-64 -14l14 64zM320 192l32 32v-201c0 -13 -10 -23 -23 -23h-306c-13 0 -23 10 -23 23v306c0 13 10 23 23 23h201l-32 -32h-149c-6 0 -11 -5 -11 -10v-268s4 -10 10 -10h269 +s9 5 9 10v150z" /> + <glyph glyph-name="ion-connection-bars" unicode="&#xf274;" horiz-adv-x="352" +d="M0 32v64h64v-64h-64zM96 32v128h64v-128h-64zM192 32v224h64v-224h-64zM288 32v320h64v-320h-64z" /> + <glyph glyph-name="ion-contrast" unicode="&#xf275;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56v-384c51 0 100 20 136 56z" /> + <glyph glyph-name="ion-cube" unicode="&#xf318;" +d="M435 280c7 0 13 -6 13 -12v-183c0 -9 -6 -17 -14 -22v-1l-175 -92v-1c-2 -1 -4 -1 -6 -1c-7 0 -13 6 -13 12v185c0 9 5 17 13 22v0l3 2l172 89l2 1c2 1 3 1 5 1zM422 329c0 0 8 -3 8 -9c0 -7 -8 -11 -8 -11l-183 -97l-2 -1c-4 -2 -8 -3 -13 -3s-9 1 -13 3l-2 1l-183 96 +s-8 5 -8 12c0 6 8 9 8 9l181 82s11 5 17 5s17 -5 17 -5zM195 187c8 -5 13 -13 13 -22v-185c0 -6 -6 -12 -13 -12c-2 0 -4 1 -6 2v0l-175 92v1c-8 5 -14 13 -14 22v183c0 6 6 12 13 12c2 0 4 0 5 -1l2 -1l171 -89z" /> + <glyph glyph-name="ion-disc" unicode="&#xf12d;" +d="M224 289c54 0 97 -43 97 -97s-43 -97 -97 -97s-97 43 -97 97s43 97 97 97zM224 148c24 0 44 20 44 44s-20 44 -44 44s-44 -20 -44 -44s20 -44 44 -44zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 69 +c68 0 123 55 123 123s-55 123 -123 123s-123 -55 -123 -123s55 -123 123 -123z" /> + <glyph glyph-name="ion-document-text" unicode="&#xf12e;" horiz-adv-x="288" +d="M286 279c1 -3 2 -6 2 -10v-245c0 -13 -10 -24 -22 -24h-243c-12 0 -23 11 -23 24v336c0 13 11 24 23 24h160c3 0 6 0 9 -2c2 -1 5 -3 7 -5l84 -92c2 -2 2 -4 3 -6zM48 269v-10c0 -1 1 -3 3 -3h71c2 0 3 2 3 3v10c0 2 -1 3 -3 3h-71c-2 0 -3 -1 -3 -3zM48 141v-10 +c0 -1 1 -3 3 -3h123c2 0 2 2 2 3v10c0 2 0 3 -2 3h-123c-2 0 -3 -1 -3 -3zM208 67v10c0 2 0 3 -2 3h-155c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h155c2 0 2 2 2 3zM240 195v10c0 2 0 3 -2 3h-187c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h187c2 0 2 2 2 3zM193 270h60l-71 78 +v-66c0 -6 5 -12 11 -12z" /> + <glyph glyph-name="ion-document" unicode="&#xf12f;" horiz-adv-x="288" +d="M287 279c1 -3 1 -5 1 -9v-244c0 -13 -9 -26 -21 -26h-243c-12 0 -24 13 -24 26v335c0 13 12 23 24 23h160c3 0 6 0 9 -2c2 -1 5 -2 7 -4l83 -92c2 -2 3 -4 4 -7zM193 337v-63h58zM32 32h224v210h-67c-15 0 -28 13 -28 28v82h-129v-320z" /> + <glyph glyph-name="ion-drag" unicode="&#xf130;" horiz-adv-x="512" +d="M0 272v32h512v-32h-512zM0 176v32h512v-32h-512zM0 80v32h512v-32h-512z" /> + <glyph glyph-name="ion-earth" unicode="&#xf276;" +d="M308 321c-1 0 0 -1 -1 -1s-4 4 -3 5l1 1l1 1l2 1l1 1v1c0 1 -1 2 -1 3v2c1 1 2 1 3 1l1 -1l2 -1l1 -2c0 -1 1 -1 2 -1c2 -1 4 -2 5 -3c3 -3 5 -7 6 -11v-2c-2 -1 -3 -3 -5 -4c-1 -1 -2 -1 -3 -1c-2 0 -4 1 -5 2s-1 2 -1 3c0 2 -1 4 -1 6c0 1 -1 1 -1 1h-2s-1 -1 -2 -1z +M253 351l-1 1c0 1 0 4 1 4h1c4 1 6 3 10 4h1c1 0 2 -1 3 -2c2 -2 2 -3 0 -5v0l-1 -2c0 -1 -1 -2 -1 -3v-1h-1c-3 0 -6 1 -8 2c-2 0 -3 1 -4 2zM134 270h-5c-5 0 -10 1 -14 2h-3s-1 1 -2 1v1s1 2 2 3c1 0 1 1 2 1s2 1 3 1s2 0 3 -1l1 -1l1 -1c2 -1 4 -2 6 -2h5c1 0 1 -1 2 -1 +h1l1 -1c0 -1 0 -2 -1 -2h-2zM144 263c0 0 1 -1 2 -1s1 -1 1 -1v-4h-1v0h-1c-2 1 -5 2 -7 2h-4h-3h-1v1v0c1 0 1 1 2 1l8 4v0l1 -1c1 -1 2 0 3 -1zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM88 56c11 -11 24 -20 37 -28 +c-1 1 -3 2 -4 3l-7 7c-3 4 -4 9 -6 13v1c0 2 -1 4 -1 6c0 3 -2 7 -2 10v1c-1 1 -1 2 -1 3s-1 3 -1 4c0 3 1 5 1 8v3c0 3 1 5 1 8v2c-1 1 -1 3 -1 4v5s0 5 1 7c0 1 1 1 1 2v5c0 3 2 7 2 10v1c-2 1 -2 2 -3 3c-2 2 -2 4 -2 7c0 2 0 4 1 6v1h-1c-4 3 -8 6 -11 10 +c-1 2 -2 4 -4 6l-3 3s-2 3 -2 4c-1 2 -1 4 -1 6v2c-1 2 -1 4 -1 6v8s1 4 2 6c0 1 1 1 2 2c2 2 3 5 5 7l3 6c1 1 2 2 2 4c1 2 1 4 1 6v3c0 2 -1 3 -3 4l-1 1c-2 1 -4 3 -6 4v1c-1 4 -2 5 -3 9c0 1 -1 3 -1 3c-2 1 -3 3 -5 4v2v3s1 3 1 4h-1c-3 1 -6 3 -9 5c-2 1 -3 2 -4 4 +c-1 1 -2 3 -3 4c-1 2 -1 3 -1 5c0 3 2 7 2 10v2h-1v1v0c-19 -30 -29 -65 -29 -101c0 -51 20 -100 56 -136zM403 251c0 0 0 -1 1 -1v1c0 2 0 5 -1 7s-2 3 -3 4c0 0 -10 -6 -27 14s-24 16 -24 16s-2 -2 -2 -1h-1v0v-2c0 -1 -1 -2 -1 -4s-1 -6 -1 -8v-1h-1c-3 -1 -6 -1 -9 -2 +c-2 0 -4 -1 -6 0s-3 2 -4 3c-2 2 -3 3 -4 5c-2 3 -4 7 -6 10v1v0c2 1 3 2 4 3h1c1 0 3 1 4 1c2 0 3 1 5 1h3c2 2 5 2 7 4v1c2 2 3 4 5 6l1 1l-1 1l-2 4v2c0 2 1 3 1 5v2c-3 0 -6 1 -9 1c-1 2 -3 5 -4 7h-1c-2 0 -3 1 -5 1h-1c-1 1 -2 2 -2 3c-1 2 -2 3 -2 5c-1 4 0 8 0 12v0 +c3 0 7 1 10 1c-18 11 -38 20 -58 25v-1c-2 -4 -4 -6 -6 -10c-1 -1 -1 -2 -2 -2c-2 0 -4 -1 -6 -1s-2 0 -3 -1v-1c-2 -2 -4 -5 -6 -7c-3 -3 -6 -6 -9 -10v-1h-1v1c-2 1 -4 2 -5 4c-2 2 -3 4 -4 6c-2 4 -3 8 -3 12c0 1 1 1 1 1c1 3 2 7 3 10c0 1 1 1 1 2v1v2v0h-6h-3v0l4 -8 +v-1h-1c-2 -1 -3 -3 -5 -4l-1 -1l-5 -5v0c0 1 -1 1 -2 2s-3 2 -5 3v1h-6l-2 -1c-1 0 -1 -1 -2 -1h-3c-2 0 -2 0 -3 2c0 1 -1 1 -2 1h-1l-2 -1l-3 -3s-2 -1 -3 -2l-1 -1l-6 -3v-1c0 -1 -1 -1 -1 -2v-6c0 -1 1 -2 1 -3c1 -2 1 -2 3 -2h2c1 1 3 1 4 2c2 1 3 2 4 3s3 2 3 4v1 +c0 1 1 0 2 0v0h2c1 -1 3 -1 4 0c1 0 1 0 2 1l2 2s3 2 4 2c2 0 3 1 4 -1v-1l2 -2c1 0 1 -2 2 -2l2 -1c1 -1 1 -1 1 -2s-1 -1 -1 -2s-1 -2 -2 -3c0 -1 -1 -2 -1 -3l-1 -1c0 -1 0 -1 1 -1h1c1 0 2 1 3 1v0v-1c0 -2 -1 -4 -1 -6s-1 -3 -2 -5c0 -1 0 -1 -1 -2s-3 -2 -5 -2 +c-1 0 -2 1 -3 1s-2 1 -2 1c-1 1 -1 1 -2 1h-3h-1c-1 0 -1 -1 -1 -2s-2 -1 -2 -2l-1 -1h-1c-2 0 -3 -1 -5 -1h-8h-1c-3 -1 -7 -2 -10 -3c-1 0 -1 -1 -1 -1c-1 -1 -2 -1 -3 -1c-1 -1 -3 -2 -4 -2h-3h-2l-1 1c-5 -6 -18 -6 -22 -12v-1c0 -2 -1 -3 -1 -5c0 -4 0 -8 -1 -12 +c0 -1 -1 -1 -1 -2l-1 -1h-2l-1 1s-1 0 -1 1s-1 2 -1 3c-1 2 -1 3 -1 5c0 3 -2 4 -4 6c-1 1 -2 2 -3 2c-2 1 -5 1 -7 1c-1 0 -1 1 -2 1c-2 0 -4 -1 -6 -1c-8 -2 -13 -8 -18 -14v-1c-1 -3 -2 -5 -2 -8c0 -2 1 -4 1 -5c1 -2 2 -3 4 -3h5c1 0 2 1 3 1h2c1 0 1 -1 2 -2s0 -3 0 -4 +s-1 -1 -1 -1c-1 -1 -1 -2 -2 -3s-2 -1 -3 -1s-1 -2 -1 -3s-1 -1 0 -2l1 -1s1 -1 2 -1v-2v-1v-10v-2c0 -3 2 -5 5 -7l1 -1c2 -1 3 -3 5 -3h5c2 0 3 1 5 3c1 1 1 2 2 3l1 1c1 1 3 2 4 2s2 0 3 -1l2 -2l2 -1c3 -1 5 -3 8 -4l1 -1c2 0 3 0 5 -1c4 -2 7 -4 10 -8c0 0 1 -1 2 -1 +c7 -2 14 -7 19 -12c3 -3 5 -7 7 -11c0 -1 1 -3 1 -4l1 -1c2 -2 3 -3 4 -5s3 -5 4 -7v0s3 -1 4 -1c5 -1 10 -3 14 -6c4 -2 5 -4 8 -7c1 -1 2 -1 2 -3v-5c-1 -6 -4 -11 -10 -15c0 0 -1 0 -1 -1c-2 -5 -4 -11 -6 -16l-1 -1c-3 -4 -5 -7 -8 -11l-1 -1c-1 0 -1 -2 -2 -2 +c-4 -2 -9 -3 -13 -4c-1 0 -1 -1 -1 -1c-2 -3 -5 -7 -8 -10v0c-1 -1 -2 -3 -3 -4c-2 -3 -3 -6 -5 -9c0 -1 -1 -2 -2 -2c-4 -3 -9 -6 -13 -9h-1l-7 -7c0 0 -1 -1 -1 -2c-1 -2 -2 -3 -3 -5s-1 -4 -2 -6l-1 -2s1 -1 1 -2c1 -6 3 -19 4 -25v-1c28 -15 59 -24 92 -24 +c40 0 77 12 109 34c-1 1 -1 2 -1 3v2c0 2 1 3 2 5c2 3 2 7 4 10c1 3 4 6 5 9c0 1 1 3 1 4v2s-1 3 -1 4c0 2 -1 5 -1 7c-1 3 -1 5 0 8l3 6s2 4 4 6l1 1l4 4c2 2 2 3 3 5c1 3 2 6 1 9c0 2 -1 4 -2 6s-2 3 -2 5c-1 3 -1 7 0 10c0 1 2 3 2 4c1 2 1 3 2 5s1 3 1 5c0 3 0 6 -1 8v2 +s-1 1 -2 1l-1 -1h-2l-1 -1c-1 0 -1 0 -2 1h-1c-1 1 -1 2 -2 2s-2 1 -3 1c-2 0 -5 1 -7 1c-4 0 -7 -1 -11 -1c-3 0 -7 0 -10 1s-5 3 -8 5c-4 2 -7 4 -10 7c-4 3 -7 7 -10 10l-1 1v1c0 2 -1 4 -1 6c0 4 1 7 2 11c1 5 1 10 3 15c1 2 1 3 1 5s1 3 1 5c0 1 -1 2 -1 3v0v2v1 +c0 1 1 1 1 2c3 6 8 10 15 12l1 1c2 3 5 6 7 9c0 0 1 1 2 1c4 1 7 2 11 3c3 1 5 2 8 2s6 -1 8 -1c3 0 6 -1 8 -2h1h9c2 0 3 -1 5 -2c1 0 1 -1 2 -1s1 -1 2 -1c5 -4 9 -7 14 -11h2v0h9c2 0 4 -1 6 -1z" /> + <glyph glyph-name="ion-edit" unicode="&#xf2bf;" +d="M381 259l-250 -251l-91 91l251 250zM440 360c12 -12 11 -32 -2 -45l-45 -45l-91 91l45 45c13 13 33 14 45 2zM14 17l18 68l85 -85l-68 -18zM0 -32l9 32l23 -23z" /> + <glyph glyph-name="ion-egg" unicode="&#xf277;" horiz-adv-x="320" +d="M160 416c64 0 160 -133 160 -257s-64 -191 -160 -191s-160 67 -160 191s96 257 160 257z" /> + <glyph glyph-name="ion-eject" unicode="&#xf131;" horiz-adv-x="320" +d="M303 128h-286v0c-10 0 -17 7 -17 16c0 3 1 5 3 8l138 191c5 5 11 9 19 9s14 -4 19 -9l138 -190c2 -3 3 -6 3 -9c0 -9 -7 -16 -17 -16v0zM308 96c7 0 12 -5 12 -12v-40c0 -7 -5 -12 -12 -12h-296c-7 0 -12 5 -12 12v40c0 7 5 12 12 12h296z" /> + <glyph glyph-name="ion-email" unicode="&#xf132;" horiz-adv-x="416" +d="M19 299c-4 2 -11 7 -13 11c-3 8 1 10 12 10h191h191c11 0 15 -2 12 -10c-2 -4 -9 -9 -13 -11c-11 -6 -163 -89 -169 -92s-12 -4 -21 -4s-15 1 -21 4s-158 86 -169 92zM408 295c9 4 8 -1 8 -5v-205c0 -9 -12 -21 -22 -21h-185h-185c-10 0 -24 12 -24 21v205s0 9 9 5 +c8 -4 83 -56 132 -88l-83 -93c-2 -2 -2 -4 -1 -5s4 -1 6 1l98 83c15 -10 25 -16 27 -17c8 -4 14 -4 21 -4s13 0 21 4c2 1 12 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5l-82 93c49 32 123 84 131 88z" /> + <glyph glyph-name="ion-eye-disabled" unicode="&#xf306;" +d="M344 290c41 -27 76 -66 104 -100c-51 -54 -124 -135 -224 -135c-36 0 -65 8 -92 22l-77 -77l-23 23l71 71c-36 25 -68 61 -103 98c78 85 142 137 224 137c34 0 64 -9 92 -23l77 78l23 -23zM134 192c0 -19 6 -36 16 -51l27 27c-4 7 -5 15 -5 24c0 29 23 53 52 53h8 +c-5 -6 -8 -13 -8 -21c0 -3 0 -5 1 -8l51 50c-15 11 -33 17 -52 17c-49 0 -90 -41 -90 -91zM224 101c49 0 90 41 90 91c0 19 -6 37 -16 52l-50 -51c3 -1 5 -1 8 -1c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53c-9 0 -17 2 -24 6l-28 -27c15 -11 33 -17 52 -17z" /> + <glyph glyph-name="ion-eye" unicode="&#xf133;" +d="M224 320c99 0 172 -70 224 -129c-51 -50 -124 -127 -224 -127s-157 60 -224 128c78 79 142 128 224 128zM224 101c49 0 90 41 90 91s-41 91 -90 91s-90 -41 -90 -91s41 -91 90 -91zM224 224c0 -18 14 -32 32 -32c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53s-52 24 -52 53 +s23 53 52 53h8c-5 -6 -8 -13 -8 -21z" /> + <glyph glyph-name="ion-female" unicode="&#xf278;" horiz-adv-x="256" +d="M160 164v-68h64v-64h-64v-64h-64v64h-64v64h64v68c-55 14 -96 64 -96 124c0 71 57 128 128 128s128 -57 128 -128c0 -60 -41 -110 -96 -124zM128 208c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> + <glyph glyph-name="ion-filing" unicode="&#xf134;" horiz-adv-x="384" +d="M317 319c12 0 19 0 19 -20v-28h-288v28c0 20 8 20 20 20h249zM269 352c13 0 19 -1 19 -19h-192c0 18 7 19 20 19h153zM368 278c13 -8 17 -17 15 -41l-17 -184c-4 -21 -16 -21 -24 -21h-300c-8 0 -20 0 -24 21l-17 185c-3 26 1 31 15 40l15 10v-32h321v32z" /> + <glyph glyph-name="ion-film-marker" unicode="&#xf135;" horiz-adv-x="416" +d="M400 240c9 0 16 -7 16 -15v-210c0 -8 -7 -15 -16 -15h-384c-9 0 -16 7 -16 15v210c0 8 6 14 13 15c-2 2 -3 4 -4 7l-9 45c-2 8 5 16 13 18l370 74c8 2 16 -4 18 -12l9 -46c2 -8 -4 -16 -12 -18l-342 -68h344zM257 46l-20 58l51 36h-62l-20 58l-19 -58h-63l51 -36l-19 -58 +l50 36z" /> + <glyph glyph-name="ion-fireball" unicode="&#xf319;" horiz-adv-x="320" +d="M297 210c14 -24 23 -52 23 -82c0 -33 -10 -63 -26 -88v0v0c-29 -43 -78 -72 -134 -72c-17 0 -32 1 -46 7s-25 13 -33 25c-11 16 -17 28 -21 52c-6 -25 2 -48 9 -60c-43 26 -69 71 -69 125v4c5 78 65 109 90 151c8 14 13 30 10 48c11 -9 15 -25 15 -39 +c0 -16 -3 -29 -3 -29c4 8 7 18 9 31c6 35 2 85 -37 132l-1 1s7 0 18 -3c95 -16 169 -91 184 -186c2 -12 3 -23 3 -35c0 -16 -2 -32 -5 -47c10 23 13 43 14 55v10z" /> + <glyph glyph-name="ion-flag" unicode="&#xf279;" horiz-adv-x="384" +d="M362 266c0 0 12 2 22 6c0 -16 -7 -32 -9 -36c-28 -50 -99 -123 -181 -84c-65 31 -92 30 -117 24c-1 0 -2 -1 -3 -1c-3 -1 -15 -5 -26 -1v197c0 16 14 31 33 35c39 7 106 5 148 -74c39 -74 97 -72 133 -66zM24 416c4 0 8 -4 8 -8v-432c0 -4 -4 -8 -8 -8h-16 +c-4 0 -8 4 -8 8v432c0 4 4 8 8 8h16z" /> + <glyph glyph-name="ion-flame" unicode="&#xf31a;" horiz-adv-x="256" +d="M1 128c-11 109 72 224 159 288c-26 -145 97 -142 96 -288c-1 -120 -105 -160 -128 -160s-114 26 -127 160zM88 80c0 -44 40 -80 40 -80s41 36 41 80s-41 80 -41 80s-40 -36 -40 -80z" /> + <glyph glyph-name="ion-flash-off" unicode="&#xf136;" +d="M115 -4c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2c12 -4 24 -9 35 -15v0c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 8 -35 14zM86 291c-20 -28 -32 -62 -32 -99 +c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2c37 0 71 12 99 32l-52 53l36 40l55 -54c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -72 -12 -100 -32 +l53 -52l-36 -41zM178 58l38 113h-85l139 155l-38 -113h85z" /> + <glyph glyph-name="ion-flash" unicode="&#xf137;" horiz-adv-x="320" +d="M0 160l224 256l-51 -192h147l-224 -256l51 192h-147z" /> + <glyph glyph-name="ion-flask" unicode="&#xf138;" horiz-adv-x="384" +d="M382 21c2 -4 3 -10 0 -14s-8 -7 -13 -7h-177h-178c-5 0 -9 3 -12 7s-2 10 0 14l118 199v150c0 8 6 14 14 14s15 -6 15 -14v-80c4 3 10 5 16 5c15 0 27 -12 27 -27s-12 -26 -27 -26c-6 0 -12 2 -16 5v-31c0 -2 -1 -4 -2 -6l-35 -59h72c-15 6 -26 20 -26 37 +c0 23 19 42 43 42c15 0 27 -8 35 -19c-1 2 -1 3 -1 5v154c0 8 6 14 14 14s15 -6 15 -14v-150zM218 151h53l-31 54c2 -5 3 -11 3 -17c0 -17 -10 -31 -25 -37zM201 319c-12 0 -22 9 -22 21s10 21 22 21s22 -9 22 -21s-10 -21 -22 -21z" /> + <glyph glyph-name="ion-folder" unicode="&#xf139;" horiz-adv-x="384" +d="M366 256c18 0 19 -7 18 -18l-12 -186c-1 -11 -3 -20 -21 -20h-317c-18 0 -20 9 -21 20l-13 184c-1 11 0 20 18 20h348zM362 305l2 -33h-344c0 6 4 46 6 63c2 18 8 17 25 17h75c28 0 23 0 37 -15c16 -18 19 -17 41 -17h143c11 0 15 -3 15 -15z" /> + <glyph glyph-name="ion-fork-repo" unicode="&#xf2c0;" horiz-adv-x="320" +d="M320 368v-64h-48v-48h-64v48h-48v64h48v48h64v-48h48zM208 208h64v-5v0c0 -43 -7 -70 -38 -95c-23 -19 -51 -20 -75 -22c-9 -1 -18 -2 -26 -3c-6 -1 -13 -5 -20 -10c9 -11 15 -25 15 -41c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55 +c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-160c8 4 18 7 27 9c11 2 21 2 31 3c17 1 33 3 40 9c10 8 14 11 14 50zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32 +s14 -32 32 -32z" /> + <glyph glyph-name="ion-fork" unicode="&#xf27a;" horiz-adv-x="128" +d="M78 299v0v0v0zM128 282c0 -26 -15 -48 -37 -58c-12 -6 -11 -11 -11 -11s16 -200 16 -213s-3 -18 -9 -24s-15 -8 -23 -8v0v0c-8 0 -16 2 -22 8s-10 13 -10 24s16 213 16 213s0 6 -11 11c-22 10 -37 32 -37 58c0 43 15 93 24 134h8v-117c0 -6 3 -11 9 -11s9 4 10 10v1 +l9 117h8l10 -117v-1c1 -6 3 -10 9 -10s9 5 9 11v117h8v0c9 -40 24 -91 24 -134z" /> + <glyph glyph-name="ion-forward" unicode="&#xf13a;" horiz-adv-x="384" +d="M224 150c-102 0 -171 -9 -224 -102c0 0 37 208 224 208v80l160 -144l-160 -134v92z" /> + <glyph glyph-name="ion-funnel" unicode="&#xf31b;" +d="M224 416c124 0 224 -36 224 -80c0 -8 -3 -15 -9 -22v0c-35 -43 -151 -179 -151 -218v-4v-83v0c0 -23 -29 -41 -64 -41s-64 18 -64 41v0v87c0 39 -117 177 -149 216v0c-7 8 -11 16 -11 24c0 44 100 80 224 80zM224 288c106 0 192 25 192 56s-86 56 -192 56 +s-192 -25 -192 -56s86 -56 192 -56z" /> + <glyph glyph-name="ion-game-controller-a" unicode="&#xf13b;" +d="M0 193c0 65 50 111 111 111h226c61 0 111 -46 111 -111s-50 -113 -111 -113h-226c-61 0 -111 48 -111 113zM373 215c-11 0 -20 -9 -20 -19s9 -19 20 -19s19 9 19 19s-8 19 -19 19zM330 256c-11 0 -19 -9 -19 -19s8 -19 19 -19s20 9 20 19s-9 19 -20 19zM330 173 +c-11 0 -19 -8 -19 -19c0 -10 8 -19 19 -19s20 9 20 19c0 11 -9 19 -20 19zM288 215c-11 0 -20 -9 -20 -19s9 -19 20 -19s19 9 19 19s-8 19 -19 19zM56 203v-22c0 -3 2 -5 5 -5v0h35v-38v-2c0 -3 2 -4 5 -4h22c3 0 5 2 5 5v0v39h37h1c3 0 5 2 5 5v22c0 3 -2 5 -5 5h-1h-37v38 +v1c0 3 -2 5 -5 5h-22c-3 0 -5 -2 -5 -5v-1v-38h-35h-1c-2 0 -4 -2 -4 -5z" /> + <glyph glyph-name="ion-game-controller-b" unicode="&#xf13c;" +d="M346 348c45 -13 67 -61 88 -149s18 -152 -7 -164s-53 15 -80 49c-24 27 -33 28 -123 28s-100 -2 -122 -28c-27 -34 -56 -61 -81 -49s-28 76 -7 164s43 136 88 149s59 -12 122 -12s77 25 122 12zM96 184c22 0 40 18 40 40s-18 40 -40 40s-39 -18 -39 -40s17 -40 39 -40z +M278 204c11 0 19 9 19 20s-8 19 -19 19s-20 -8 -20 -19s9 -20 20 -20zM320 162c11 0 19 8 19 19s-8 20 -19 20s-19 -9 -19 -20s8 -19 19 -19zM320 247c11 0 19 8 19 19s-8 20 -19 20s-19 -9 -19 -20s8 -19 19 -19zM362 204c11 0 20 9 20 20s-9 19 -20 19s-19 -8 -19 -19 +s8 -20 19 -20z" /> + <glyph glyph-name="ion-gear-a" unicode="&#xf13d;" horiz-adv-x="384" +d="M347 192c0 -24 15 -43 37 -56c-4 -13 -10 -26 -16 -38c-25 6 -45 -3 -62 -20s-22 -37 -16 -62c-12 -6 -25 -12 -38 -16c-13 22 -36 37 -60 37s-47 -15 -60 -37c-13 4 -27 10 -39 16c6 25 2 45 -15 62s-37 21 -62 15c-6 12 -12 26 -16 39c22 13 37 36 37 60s-15 43 -37 56 +c4 13 9 26 16 38c25 -6 45 3 62 20s21 37 15 62c12 6 26 12 39 16c13 -22 36 -37 60 -37s47 15 60 37c13 -4 27 -10 39 -16c-6 -25 -2 -45 15 -62s37 -26 62 -20c6 -12 12 -25 16 -38c-22 -13 -37 -32 -37 -56zM192 94c54 0 98 44 98 98s-44 98 -98 98s-98 -44 -98 -98 +s44 -98 98 -98z" /> + <glyph glyph-name="ion-gear-b" unicode="&#xf13e;" horiz-adv-x="384" +d="M384 154h-44c-4 -14 -10 -27 -17 -39l32 -32l-54 -54l-33 32c-12 -7 -24 -11 -38 -15v-46h-76v46c-13 4 -26 8 -38 15l-33 -32l-54 54l32 32c-7 12 -13 25 -17 39h-44v76h43c4 14 9 29 16 41l-30 30l54 54l29 -29c13 8 27 13 42 17v41h76v-41c15 -4 29 -9 42 -17l29 29 +l54 -54l-30 -30c7 -12 13 -27 16 -41h43v-76zM192 138c30 0 54 24 54 54s-24 54 -54 54s-54 -24 -54 -54s24 -54 54 -54z" /> + <glyph glyph-name="ion-grid" unicode="&#xf13f;" horiz-adv-x="320" +d="M64 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 167 +c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 39 +c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50z" /> + <glyph glyph-name="ion-hammer" unicode="&#xf27b;" horiz-adv-x="320" +d="M314 416c3 0 6 -3 6 -6v-84c0 -3 -3 -6 -6 -6h-52c-3 0 -6 3 -6 6v14c-6 5 -16 9 -22 7c-7 -2 -23 -13 -30 -25s-6 -28 -6 -66l8 -2c5 -1 7 -6 7 -9v-70c0 -95 11 -201 11 -201c0 -3 -3 -6 -6 -6h-84c-3 0 -6 3 -6 6c0 0 11 106 11 201v70c0 3 3 8 7 9l7 2 +c0 43 -5 58 -22 74c-18 16 -41 19 -63 17s-51 -35 -58 -45s-10 2 -10 11c1 16 22 60 72 81s91 22 102 22s27 -1 38 -3s16 -18 26 -18c7 0 14 5 18 9v6c0 3 3 6 6 6h52z" /> + <glyph glyph-name="ion-happy" unicode="&#xf31c;" +d="M355 158c8 -4 11 -13 7 -21c-24 -46 -78 -73 -138 -73c-62 0 -118 29 -139 74c-4 8 0 17 8 21c2 1 5 1 7 1c6 0 11 -3 14 -9c16 -34 60 -55 110 -55c49 0 92 21 110 56c3 5 8 8 14 8c3 0 5 -1 7 -2zM381 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6 +s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22c11 14 23 23 44 23s35 -9 45 -23zM157 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22 +c11 14 23 23 44 23s35 -9 45 -23zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56 +s100 20 136 56z" /> + <glyph glyph-name="ion-headphone" unicode="&#xf140;" horiz-adv-x="384" +d="M383 210c3 -51 -3 -130 -13 -162c-20 -67 -40 -80 -72 -80s-58 27 -58 59v106c0 33 23 59 53 59c18 0 34 -9 44 -24c0 0 11 7 13 22s4 34 -5 64s-21 19 -36 38c-2 3 -5 7 -8 10l-10 10c-2 2 -3 3 -5 4c-11 9 -21 17 -34 23c-19 9 -39 13 -60 13s-42 -4 -61 -13 +c-13 -6 -22 -14 -33 -23c-2 -1 -3 -2 -5 -4l-10 -10s-6 -7 -8 -10c-15 -19 -27 -8 -36 -38c-9 -31 -7 -49 -5 -64s13 -22 13 -22c10 15 26 24 44 24c30 0 53 -27 53 -59v-106c0 -32 -26 -59 -58 -59s-52 13 -72 80c-10 32 -16 111 -13 162c3 60 22 108 56 145v0 +c8 8 15 16 24 23s19 13 29 18c25 13 53 20 82 20s57 -7 82 -20c10 -5 19 -11 28 -18s17 -15 25 -23v0c34 -37 53 -85 56 -145z" /> + <glyph glyph-name="ion-heart-broken" unicode="&#xf31d;" horiz-adv-x="416" +d="M181 160c0 -36 -2 -71 4 -107c2 -10 2 -20 2 -31l-153 159c-45 47 -45 124 0 171c40 41 103 43 144 3c-2 -15 -3 -31 -3 -46c-18 -14 -40 -21 -56 -39l11 7c17 11 15 8 35 14c3 1 8 3 11 5c0 -1 -1 -5 -1 -6c1 -20 11 -39 15 -60c0 -5 1 -10 -1 -15c-8 -17 -7 -37 -8 -55 +zM274 147c8 -18 23 -29 38 -39l-104 -108l-17 18c0 13 -4 26 -4 38c-2 48 10 94 21 142v0c1 -1 2 -1 3 -1c30 -6 52 -24 63 -50zM382 352c46 -47 46 -124 0 -171l-68 -70c-28 24 -42 54 -65 81c-12 13 -26 23 -41 32c-3 13 -8 26 -11 39c-3 12 14 21 16 31c3 12 3 26 3 39 +l19 19c40 42 107 42 147 0z" /> + <glyph glyph-name="ion-heart" unicode="&#xf141;" horiz-adv-x="416" +d="M382 352c46 -47 46 -124 0 -171l-174 -181l-174 181c-46 47 -46 124 0 171c40 42 107 42 147 0l27 -28l28 28c40 42 106 42 146 0z" /> + <glyph glyph-name="ion-help-buoy" unicode="&#xf27c;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM402 264c-10 24 -23 45 -42 64s-41 32 -65 42l-19 -61c14 -6 27 -15 38 -26s21 -24 27 -38zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM88 328 +c-19 -19 -32 -41 -42 -65l61 -19c6 14 15 27 26 38s24 21 38 27l-19 61c-24 -10 -45 -23 -64 -42zM46 120c10 -24 23 -45 42 -64s41 -32 65 -42l19 61c-14 6 -27 15 -38 26s-21 24 -27 38zM360 56c19 19 32 41 42 65l-61 19c-6 -14 -15 -27 -26 -38s-24 -21 -38 -27l19 -61 +c24 10 45 23 64 42z" /> + <glyph glyph-name="ion-help-circled" unicode="&#xf142;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM244 89c1 18 -12 31 -29 31c-16 0 -30 -11 -30 -29s12 -30 28 -30c17 0 31 10 31 28zM293 217c7 10 12 22 12 36c0 23 -9 40 -25 52c-17 13 -37 18 -62 18 +c-19 0 -34 -4 -47 -13c-19 -13 -28 -34 -28 -68h49c0 9 -1 19 4 27s13 15 26 15s19 -3 25 -11c5 -7 8 -15 8 -23c0 -7 -4 -14 -8 -20c-2 -4 -6 -7 -10 -10c0 0 -26 -15 -35 -30c-7 -11 -9 -24 -10 -41c0 -1 0 -4 4 -4h39s5 3 5 4c0 6 1 15 2 19c2 7 6 12 12 17l14 9 +c12 9 21 17 25 23z" /> + <glyph glyph-name="ion-help" unicode="&#xf143;" horiz-adv-x="256" +d="M217 371c25 -19 39 -46 39 -83c0 -22 -8 -42 -19 -57c-7 -9 -21 -21 -40 -36l-21 -14c-10 -8 -17 -18 -20 -28c-2 -6 -3 -19 -3 -29c0 -2 -1 -6 -7 -6h-62c-7 0 -7 3 -7 5c1 26 4 49 15 66c15 23 57 48 57 48c6 5 11 9 15 15c7 10 12 21 12 32c0 13 -3 26 -11 36 +c-10 12 -21 18 -41 18s-32 -11 -40 -24s-7 -29 -7 -43h-77c0 54 14 88 44 108c20 14 45 20 75 20c39 0 70 -7 98 -28zM114 78c27 -1 47 -20 46 -48s-22 -46 -49 -45c-26 1 -46 19 -45 47s22 47 48 46z" /> + <glyph glyph-name="ion-home" unicode="&#xf144;" horiz-adv-x="384" +d="M384 160h-48v-160h-96v128h-96v-128h-96v160h-48l192 224z" /> + <glyph glyph-name="ion-icecream" unicode="&#xf27d;" horiz-adv-x="320" +d="M32 192h256l-128 -224zM307 275c8 -5 13 -13 13 -23c0 -16 -14 -28 -30 -28h-4h-252h-4c-16 0 -30 13 -30 28c0 10 6 18 14 23c1 0 1 2 2 2c4 3 7 7 8 12v1c-2 6 -2 12 -2 18c0 42 34 76 76 76c8 0 16 -2 23 -4c-3 -12 -4 -31 -4 -31c2 15 11 29 11 29c18 23 46 38 77 38 +c53 0 96 -43 96 -96c0 -11 -2 -21 -5 -30v-1c0 -4 4 -9 8 -12c1 0 2 -2 3 -2z" /> + <glyph glyph-name="ion-icon-social-google-plus-outline" unicode="&#xf145;" +d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" /> + <glyph glyph-name="ion-icon-social-google-plus" unicode="&#xf146;" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" /> + <glyph glyph-name="ion-image" unicode="&#xf147;" +d="M336 224c-26 0 -48 22 -48 48s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM420 384c16 0 28 -12 28 -28v-328c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v328c0 16 12 28 28 28h392zM317 186l99 -106v260c0 7 -6 12 -13 12h-358c-7 0 -12 -5 -13 -12v-260l126 152 +c4 4 10 8 17 8s13 -2 17 -7l54 -59l4 -4c3 -2 7 -4 11 -4s8 2 12 5l18 16c4 3 8 5 13 5s10 -2 13 -6z" /> + <glyph glyph-name="ion-images" unicode="&#xf148;" +d="M426 308c13 -1 23 -12 22 -24l-14 -263c-1 -13 -12 -22 -25 -21l-330 16c-13 1 -23 10 -22 23l2 46l-15 -1c-12 -1 -22 7 -23 18l-21 236c-1 11 7 21 19 22l296 24c12 1 22 -7 23 -18l5 -54zM71 302c1 12 11 22 24 22l219 -11l-2 31h-1v1c-1 5 -5 8 -10 8l-261 -22 +c-5 0 -10 -4 -10 -9v0v-1l16 -178l18 25zM405 66l10 198v1v0c0 6 -5 10 -11 10l-58 3l-29 2l-204 9c-6 0 -11 -4 -12 -9v0v-1l-3 -63l-7 -128v-7l6 7l102 109c4 4 8 6 14 6s11 -3 14 -7l43 -49l3 -3c2 -2 6 -4 10 -4s5 1 9 3l17 12c4 3 7 4 11 4s9 -2 11 -5l27 -33zM341 186 +c-20 0 -35 15 -35 35s16 35 35 35c20 0 35 -16 35 -35s-16 -35 -35 -35z" /> + <glyph glyph-name="ion-information-circled" unicode="&#xf149;" +d="M448 195c2 -124 -97 -225 -221 -227s-225 97 -227 221s97 225 221 227s225 -97 227 -221zM224 336c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM268 53v11h-22v172h-66v-12h22v-160h-22v-11h88z" /> + <glyph glyph-name="ion-information" unicode="&#xf14a;" horiz-adv-x="128" +d="M96 0h32v-16h-128v16h32v240h-32v16h96v-256zM64 304c-27 0 -48 21 -48 48s21 48 48 48s48 -21 48 -48s-21 -48 -48 -48z" /> + <glyph glyph-name="ion-ionic" unicode="&#xf14b;" horiz-adv-x="416" +d="M378 313c24 -34 38 -76 38 -121c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208c45 0 87 -14 121 -38c6 5 13 7 21 7c19 0 35 -16 35 -35c0 -8 -2 -15 -7 -21zM344 56c18 18 31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-5 13 -12 25 -20 36 +c-5 -2 -10 -3 -15 -3c-19 0 -35 15 -35 34c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 15 -75 15s-51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75s5 -51 15 -75c10 -23 23 -43 41 -61s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15 +c23 10 43 23 61 41zM112 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96z" /> + <glyph glyph-name="ion-ios7-alarm-outline" unicode="&#xf14c;" horiz-adv-x="404" +d="M384 256l-54 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l36 -45l-12 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 71 -43 115c0 51 22 97 57 129l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 +h5c20 0 39 -7 54 -18l-54 -52l11 -11c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -8 -38 -20 -52zM22 280l91 89c-9 5 -19 7 -32 6c-37 -2 -65 -32 -65 -67c0 -10 2 -19 6 -28z +M362 172c0 88 -72 158 -160 158s-160 -70 -160 -158s72 -158 160 -158s160 70 160 158zM291 369l91 -89c4 9 6 18 6 28c0 35 -28 65 -65 67c-13 1 -23 -1 -32 -6zM202 288h16v-144h-112v16h96v128z" /> + <glyph glyph-name="ion-ios7-alarm" unicode="&#xf14d;" horiz-adv-x="404" +d="M385 256l-55 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l37 -45l-13 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 70 -43 114c0 51 22 98 57 130l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 +h5c20 0 39 -7 54 -18l-54 -53l11 -10c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -7 -38 -19 -52zM218 144v144h-16v-128h-96v-16h112z" /> + <glyph glyph-name="ion-ios7-albums-outline" unicode="&#xf14e;" +d="M432 304h-416v-288h416v288zM448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> + <glyph glyph-name="ion-ios7-albums" unicode="&#xf14f;" +d="M448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> + <glyph glyph-name="ion-ios7-americanfootball-outline" unicode="&#xf31e;" +d="M356 324c120 -120 88 -352 88 -352s-28 -4 -70 -4c-78 0 -204 14 -282 92c-120 120 -88 352 -88 352s28 4 70 4c78 0 204 -14 282 -92zM364 64l66 -67c2 23 3 61 -1 105l-3 24zM345 313c-33 33 -78 56 -134 71c-11 3 -22 5 -33 7l-71 -71l69 -69l37 37l11 -11l-37 -37 +l21 -21l37 37l11 -11l-37 -37l21 -21l37 37l11 -11l-37 -37l21 -21l37 37l11 -11l-37 -37l70 -69l70 71c-4 24 -10 46 -18 67c-15 40 -34 74 -60 100zM19 282l3 -24l62 62l-66 67c-2 -23 -3 -61 1 -105zM29 398l66 -66l63 62c-27 4 -55 6 -84 6c-18 0 -33 -1 -45 -2zM103 71 +c33 -33 78 -56 134 -71c11 -3 22 -5 33 -7l71 71l-69 69l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-21 21l-37 -37l-11 11l37 37l-69 69l-71 -71c4 -24 10 -46 18 -67c15 -40 34 -74 60 -100zM374 -16c18 0 33 1 45 2l-67 66l-62 -62 +c27 -4 55 -6 84 -6z" /> + <glyph glyph-name="ion-ios7-americanfootball" unicode="&#xf31f;" +d="M3 402l81 -82l-76 -76c-12 70 -7 134 -5 158zM272 133l69 -69l-84 -85c-59 12 -120 36 -165 81s-69 106 -81 165l85 84l69 -69l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11l37 37l21 -21l-37 -37l11 -11zM176 251l-69 69l84 85 +c59 -12 120 -36 165 -81s69 -106 81 -165l-84 -84l-70 69l37 37l-11 11l-37 -37l-21 21l37 37l-11 11l-37 -37l-21 21l37 37l-11 11l-37 -37l-21 21l37 37l-11 11zM276 -24l77 76l81 -81c-12 -1 -33 -3 -60 -3c-28 0 -62 2 -98 8zM172 408l-76 -76l-82 81c12 1 33 3 60 3 +c28 0 62 -2 98 -8zM445 -18l-81 82l76 76c12 -70 7 -134 5 -158z" /> + <glyph glyph-name="ion-ios7-analytics-outline" unicode="&#xf320;" +d="M224 400c-28 0 -55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45s35 41 45 66c11 26 16 53 16 81s-5 55 -16 81 +c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM76 128c-25 0 -41 18 -42 19c-3 3 -2 9 1 12s8 2 11 -1c1 -1 15 -17 36 -14c12 2 27 26 38 42c4 6 9 12 12 16 +c17 21 34 23 45 21c24 -3 45 -28 54 -50c7 -18 18 -28 32 -29c15 -1 31 11 43 30c1 2 3 4 4 7c9 17 24 43 52 43c31 0 52 -35 53 -36c2 -4 1 -9 -3 -11s-9 -1 -11 3c0 0 -5 8 -12 15c-6 6 -16 13 -27 13c-18 0 -29 -19 -38 -35c-1 -3 -3 -5 -4 -7c-15 -25 -36 -40 -58 -38 +c-20 1 -36 15 -46 39s-28 39 -41 41c-11 1 -21 -4 -31 -16c-3 -4 -6 -9 -10 -15c-14 -20 -31 -45 -50 -48c-3 0 -5 -1 -8 -1z" /> + <glyph glyph-name="ion-ios7-analytics" unicode="&#xf321;" +d="M224 416c124 0 224 -100 224 -224c0 -13 -1 -25 -3 -37c-1 -6 -2 -12 -3 -17c-24 -98 -113 -170 -218 -170c-122 0 -221 98 -224 219v5c0 9 1 17 2 26c13 111 107 198 222 198zM431 168c1 8 1 16 1 24c0 28 -5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45 +c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81v0c14 -21 29 -34 29 -34h1v-1c1 -1 15 -16 36 -13c12 2 27 26 38 42c4 6 9 12 12 16c17 21 34 23 45 21c24 -3 45 -27 54 -50c7 -18 18 -28 32 -29c15 -1 31 9 43 29 +c1 2 3 4 4 7c9 17 24 44 52 44c31 0 52 -35 53 -36c3 -4 9 -12 16 -20z" /> + <glyph glyph-name="ion-ios7-arrow-back" unicode="&#xf150;" horiz-adv-x="192" +d="M192 320l-127 -128l127 -128l-32 -32l-160 160v0v0l160 160z" /> + <glyph glyph-name="ion-ios7-arrow-down" unicode="&#xf151;" horiz-adv-x="320" +d="M301 288l19 -21l-160 -171l-160 171l19 21l141 -150z" /> + <glyph glyph-name="ion-ios7-arrow-forward" unicode="&#xf152;" horiz-adv-x="192" +d="M0 320l32 32l160 -160v0v0l-160 -160l-32 32l127 128z" /> + <glyph glyph-name="ion-ios7-arrow-left" unicode="&#xf153;" horiz-adv-x="192" +d="M192 333l-150 -141l150 -141l-21 -19l-171 160l171 160z" /> + <glyph glyph-name="ion-ios7-arrow-right" unicode="&#xf154;" horiz-adv-x="192" +d="M0 333l21 19l171 -160l-171 -160l-21 19l150 141z" /> + <glyph glyph-name="ion-ios7-arrow-thin-down" unicode="&#xf27e;" horiz-adv-x="192" +d="M190 126c2 -2 2 -4 2 -6s0 -4 -2 -6c0 0 -87 -79 -88 -80s-3 -2 -6 -2s-5 1 -6 2s-88 80 -88 80c-3 3 -3 9 0 12s9 3 12 0l74 -67v285c0 4 4 8 8 8s8 -4 8 -8v-285l74 67c3 3 9 3 12 0z" /> + <glyph glyph-name="ion-ios7-arrow-thin-left" unicode="&#xf27f;" horiz-adv-x="320" +d="M94 98c-2 -2 -4 -2 -6 -2s-4 0 -6 2c0 0 -79 87 -80 88s-2 3 -2 6s1 5 2 6s80 88 80 88c3 3 9 3 12 0s3 -9 0 -12l-67 -74h285c4 0 8 -4 8 -8s-4 -8 -8 -8h-285l67 -74c3 -3 3 -9 0 -12z" /> + <glyph glyph-name="ion-ios7-arrow-thin-right" unicode="&#xf280;" horiz-adv-x="320" +d="M226 98c-3 3 -3 9 0 12l67 74h-285c-4 0 -8 4 -8 8s4 8 8 8h285l-67 74c-3 3 -3 9 0 12s9 3 12 0c0 0 79 -87 80 -88s2 -3 2 -6s-1 -5 -2 -6s-80 -88 -80 -88c-2 -2 -4 -2 -6 -2s-4 0 -6 2z" /> + <glyph glyph-name="ion-ios7-arrow-thin-up" unicode="&#xf281;" horiz-adv-x="192" +d="M190 258c-3 -3 -9 -3 -12 0l-74 67v-285c0 -4 -4 -8 -8 -8s-8 4 -8 8v285l-74 -67c-3 -3 -9 -3 -12 0s-3 9 0 12c0 0 87 79 88 80s3 2 6 2s5 -1 6 -2s88 -80 88 -80c2 -2 2 -4 2 -6s0 -4 -2 -6z" /> + <glyph glyph-name="ion-ios7-arrow-up" unicode="&#xf155;" horiz-adv-x="320" +d="M301 96l-141 150l-141 -150l-19 21l160 171l160 -171z" /> + <glyph glyph-name="ion-ios7-at-outline" unicode="&#xf156;" horiz-adv-x="255" +d="M236 127v1h19l-3 -6c-3 -6 -13 -19 -22 -27s-18 -14 -28 -20s-21 -10 -32 -13s-23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 11 -26 29 -34 46c-7 16 -10 33 -10 58c0 18 4 38 11 55c7 16 17 30 29 42s27 21 43 28c15 6 33 9 53 9c16 0 32 -3 46 -8 +c15 -5 28 -12 39 -22s17 -21 24 -35c6 -13 8 -26 8 -44c0 -14 -2 -28 -7 -40s-9 -20 -17 -30c-8 -9 -13 -15 -23 -21c-11 -6 -20 -9 -29 -9c-8 0 -15 2 -20 7c-3 2 -5 6 -6 9c-6 -6 -11 -10 -17 -12c-10 -3 -18 -4 -26 -4s-15 1 -21 4s-12 7 -17 12s-8 11 -11 18 +s-5 14 -5 22c0 12 3 24 7 36v2c4 11 5 16 13 26c8 11 17 19 28 26s24 11 38 11c12 0 21 -3 31 -9c7 -4 12 -10 16 -16l6 17h18l-38 -102c-2 -5 -4 -10 -5 -14s-1 -7 -1 -10c0 -2 1 -4 3 -5s4 -2 8 -2c6 0 11 2 20 7c8 4 12 9 19 17c6 8 10 14 14 25s6 23 6 35 +c0 15 -2 25 -7 36c-6 13 -10 22 -19 30s-20 15 -33 20s-27 7 -42 7c-19 0 -35 -3 -48 -9c-15 -6 -27 -14 -37 -24c-11 -10 -19 -23 -25 -37c-6 -15 -10 -32 -10 -48c0 -22 2 -36 8 -49c6 -15 17 -31 28 -41s24 -18 38 -23s30 -7 46 -7c10 0 20 1 30 4s18 6 27 11 +s17 11 24 18s14 13 19 21zM147 154c4 5 8 12 11 20l21 57c-2 5 -4 10 -7 13c-3 4 -6 6 -10 8c-1 0 -1 1 -2 1c-3 2 -5 3 -9 4c-5 1 -9 2 -13 2c-10 0 -19 -3 -28 -9s-17 -13 -23 -22c-5 -8 -7 -11 -10 -20c0 -1 -1 -3 -1 -4c-4 -11 -5 -20 -5 -30c0 -6 1 -11 3 -16 +s5 -9 8 -13s7 -6 12 -8s9 -3 15 -3c4 0 9 1 14 2c4 1 8 2 12 5s8 7 12 13z" /> + <glyph glyph-name="ion-ios7-at" unicode="&#xf157;" horiz-adv-x="256" +d="M228 128v0h28c-1 -1 -2 -4 -3 -6c-4 -6 -14 -19 -23 -27s-18 -14 -28 -20s-20 -10 -32 -13c-11 -3 -23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 10 -26 28 -34 46c-7 16 -10 33 -10 58c0 19 4 39 11 55s17 30 29 42s28 21 44 28c15 6 32 9 52 9c16 0 31 -3 46 -8 +s28 -12 39 -22s18 -22 25 -36c6 -14 8 -26 8 -44c0 -14 -2 -28 -7 -40c-4 -11 -9 -20 -17 -30c-7 -9 -14 -16 -24 -22c-12 -6 -21 -9 -30 -9s-16 2 -22 8c-2 1 -3 3 -4 5c-4 -4 -9 -6 -14 -8c-10 -3 -18 -5 -27 -5c-8 0 -16 2 -23 5s-12 7 -17 12s-9 12 -12 19s-4 14 -4 22 +c0 12 2 25 6 37l1 1c4 10 5 17 13 27c8 11 17 20 28 27c12 7 24 10 38 10c12 0 22 -3 33 -9c5 -3 8 -6 12 -10l5 12h25l-39 -104c-2 -5 -3 -9 -4 -13c-1 -3 -1 -7 -1 -9s0 -3 1 -3c0 0 1 -1 5 -1c5 0 11 2 19 7c7 4 10 8 16 16s9 13 13 23s6 20 6 32c0 14 -1 24 -6 34 +c-5 12 -10 21 -18 28c-9 8 -19 14 -31 18s-26 7 -40 7c-18 0 -32 -3 -44 -8c-14 -6 -25 -13 -35 -23s-18 -22 -24 -35c-6 -14 -9 -30 -9 -45c0 -21 3 -34 8 -46c6 -14 16 -30 26 -39s22 -16 35 -21c14 -5 28 -7 43 -7c10 0 20 2 29 4s18 6 26 11s28 20 38 33zM144 157 +c4 5 7 12 10 19l20 55c-1 4 -3 7 -5 9c-3 3 -6 6 -9 8h-1h-1v1c-3 2 -5 2 -8 3c-4 1 -8 1 -12 1c-9 0 -17 -2 -25 -7c-10 -6 -17 -14 -21 -21c-5 -8 -6 -11 -9 -19c0 -1 -1 -2 -1 -3c-3 -10 -6 -19 -6 -28c0 -5 1 -10 3 -14s4 -8 7 -11s7 -6 11 -8s8 -2 13 -2c4 0 8 0 12 1 +v0c4 1 7 2 11 5c3 2 7 5 11 11z" /> + <glyph glyph-name="ion-ios7-barcode-outline" unicode="&#xf322;" horiz-adv-x="416" +d="M0 64v256h80v-16h-64v-224h64v-16h-80zM336 320h80v-256h-80v16h64v224h-64v16zM64 128v128h16v-128h-16zM336 128v128h16v-128h-16zM272 96v192h16v-192h-16zM128 96v192h16v-192h-16zM199 112v160h16v-160h-16z" /> + <glyph glyph-name="ion-ios7-barcode" unicode="&#xf323;" horiz-adv-x="416" +d="M0 320h416v-256h-416v256zM80 128v128h-16v-128h16zM144 96v192h-16v-192h16zM215 112v160h-16v-160h16zM288 96v192h-16v-192h16zM352 128v128h-16v-128h16z" /> + <glyph glyph-name="ion-ios7-baseball-outline" unicode="&#xf324;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM77 45l3 -3 +l3 3c9 9 18 19 25 30l-20 10l7 15l22 -11c4 7 8 14 11 22c2 5 3 9 5 14l-23 5l3 16l25 -5c4 14 5 28 6 43h-24v16h24c-1 14 -3 28 -6 42l-25 -5l-3 16l24 4c-2 5 -4 11 -6 16c-3 7 -7 14 -11 21l-22 -11l-7 14l21 11c-7 11 -16 21 -26 31l-3 3l-3 -3 +c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66zM305 0c17 7 33 17 48 29c-13 12 -23 25 -33 40l-25 -13l-7 14l24 12c-7 13 -13 27 -18 41l-27 -5l-3 16l25 4c-4 15 -5 30 -6 46h-27v16h27c1 15 3 30 6 44l-25 5l3 16l26 -5 +c5 14 11 28 18 41l-23 12l7 14l24 -13c10 15 21 29 34 41c-15 12 -31 22 -48 29c-26 11 -53 16 -81 16s-55 -5 -81 -16c-19 -8 -36 -18 -51 -31c12 -11 22 -24 31 -38l22 12l7 -14l-21 -11c7 -13 13 -27 18 -42l24 5l3 -16l-22 -4c4 -14 5 -30 6 -45h24v-16h-24 +c-1 -16 -3 -31 -7 -46l23 -4l-3 -16l-24 4c-5 -14 -11 -28 -18 -41l21 -11l-7 -14l-23 12c-9 -13 -19 -26 -30 -37c15 -13 32 -23 51 -31c26 -11 53 -16 81 -16s55 5 81 16zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-5 5 +c-2 -2 -4 -3 -6 -5c-10 -10 -18 -21 -26 -32l18 -10l-7 -14l-20 10c-4 -7 -7 -13 -10 -20c-2 -5 -4 -11 -6 -16l21 -4l-3 -16l-22 4c-3 -13 -5 -27 -6 -41h21v-16h-21c1 -14 3 -29 6 -43l22 5l3 -16l-20 -4c2 -5 3 -10 5 -15c3 -7 7 -14 11 -21l19 10l7 -15l-18 -9 +c7 -11 16 -21 26 -31c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-baseball" unicode="&#xf325;" +d="M83 45l-3 -3c-4 -4 -8 -8 -12 -11c-42 41 -68 98 -68 161s26 120 68 161c4 -3 8 -7 12 -11l3 -3c10 -10 19 -20 26 -31l-21 -11l7 -14l22 11c4 -7 8 -14 11 -21c2 -5 4 -11 6 -16l-24 -4l3 -16l25 5c3 -14 5 -28 6 -42h-24v-16h24c-1 -15 -2 -29 -6 -43l-25 5l-3 -16 +l23 -4c-2 -5 -3 -10 -5 -15c-3 -8 -7 -15 -11 -22l-22 11l-7 -15l20 -10c-7 -11 -16 -21 -25 -30zM320 69c10 -15 20 -28 33 -40c4 -4 9 -8 13 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c4 3 8 7 12 11c11 11 21 24 30 37l23 -12l7 14l-21 11c7 13 13 27 18 41 +l24 -4l3 16l-23 4c4 15 6 30 7 46h24v16h-24c-1 15 -2 31 -6 45l22 4l-3 16l-24 -5c-5 15 -11 29 -18 42l21 11l-7 14l-22 -12c-9 14 -19 27 -31 38c-4 4 -8 8 -12 11c39 33 89 52 144 52c54 0 102 -19 141 -50c-4 -3 -8 -7 -12 -11c-13 -12 -24 -26 -34 -41l-24 13l-7 -14 +l23 -12c-7 -13 -13 -27 -18 -41l-26 5l-3 -16l25 -5c-3 -14 -5 -29 -6 -44h-27v-16h27c1 -16 2 -31 6 -46l-25 -4l3 -16l27 5c5 -14 11 -28 18 -41l-24 -12l7 -14zM448 192c0 -64 -27 -122 -70 -163c-4 3 -8 7 -12 11c-2 2 -4 3 -6 5c-10 10 -19 20 -26 31l18 9l-7 15 +l-19 -10c-4 7 -8 14 -11 21c-2 5 -3 10 -5 15l20 4l-3 16l-22 -5c-3 14 -5 29 -6 43h21v16h-21c1 14 3 28 6 41l22 -4l3 16l-21 4c2 5 4 11 6 16c3 7 6 13 10 20l20 -10l7 14l-18 10c8 11 16 22 26 32c2 2 4 3 6 5c4 4 8 8 12 11c43 -41 70 -99 70 -163zM68 353v0v0v0z +M68 31v0v0zM80 20v0v0v0zM80 364v0v0zM378 29v0v0v0zM378 355v0v0zM366 366v0v0v0zM366 18v0v0z" /> + <glyph glyph-name="ion-ios7-basketball-outline" unicode="&#xf326;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM371 339 +l-5 5c-2 -2 -4 -3 -6 -5c-19 -19 -35 -41 -45 -66c-10 -23 -15 -48 -16 -73h133c-1 25 -6 50 -16 73c-10 25 -26 47 -45 66zM353 355c-15 12 -31 22 -48 29c-23 10 -48 15 -73 16v-200h51c2 61 29 116 70 155zM143 384c-19 -8 -36 -18 -51 -31c40 -39 66 -93 68 -153h56v200 +c-25 -1 -50 -6 -73 -16zM77 339c-19 -19 -35 -41 -45 -66c-10 -23 -15 -48 -16 -73h128c-1 25 -6 50 -16 73c-10 25 -26 47 -45 66l-3 3zM77 45l3 -3l3 3c19 19 35 41 45 66c10 23 15 48 16 73h-128c1 -25 6 -50 16 -73c10 -25 26 -47 45 -66zM92 31c15 -13 32 -23 51 -31 +c23 -10 48 -15 73 -16v200h-56c-2 -60 -28 -114 -68 -153zM305 0c17 7 33 17 48 29c-41 39 -68 94 -70 155h-51v-200c25 1 50 6 73 16zM371 45c19 19 35 41 45 66c10 23 15 48 16 73h-133c1 -25 6 -50 16 -73c10 -25 26 -47 45 -66c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-basketball" unicode="&#xf327;" +d="M160 200c-2 60 -28 114 -68 153c-4 4 -8 8 -12 11c37 31 84 50 136 52v-216h-56zM283 200h-51v216c51 -2 96 -20 133 -50c-4 -3 -8 -7 -12 -11c-41 -39 -68 -94 -70 -155zM360 339l5 5c4 4 9 8 13 11c41 -39 68 -94 70 -155h-149c1 25 6 50 16 73c10 25 26 47 45 66z +M128 273c10 -23 15 -48 16 -73h-144c2 60 28 114 68 153c4 -3 8 -7 12 -11l3 -3c19 -19 35 -41 45 -66zM283 184c2 -61 29 -116 70 -155c4 -4 8 -8 12 -11c-37 -30 -82 -48 -133 -50v216h51zM83 45l-3 -3c-4 -4 -8 -8 -12 -11c-40 39 -66 93 -68 153h144 +c-1 -25 -6 -50 -16 -73c-10 -25 -26 -47 -45 -66zM315 111c-10 23 -15 48 -16 73h149c-2 -61 -29 -116 -70 -155c-4 3 -9 7 -13 11l-5 5c-19 19 -35 41 -45 66zM160 184h56v-216c-52 2 -99 21 -136 52c4 3 8 7 12 11c40 39 66 93 68 153zM68 31v0v0zM378 29v0v0v0zM68 353v0 +v0v0zM80 20v0v0v0zM365 18v0v0zM80 364v0v0zM365 366v0v0v0zM378 355v0v0z" /> + <glyph glyph-name="ion-ios7-bell-outline" unicode="&#xf158;" horiz-adv-x="384" +d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM43 80h298c-25 25 -40 58 -40 142c0 46 -13 80 -37 101c-23 19 -52 23 -72 23s-49 -4 -72 -23c-25 -21 -37 -55 -37 -101 +c0 -51 -5 -85 -17 -110c-6 -13 -14 -23 -23 -32zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> + <glyph glyph-name="ion-ios7-bell" unicode="&#xf159;" horiz-adv-x="384" +d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> + <glyph glyph-name="ion-ios7-bolt-outline" unicode="&#xf15a;" horiz-adv-x="226" +d="M131 316l-100 -140h65h19l-3 -19l-17 -89l100 140h-65h-19l3 19zM160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> + <glyph glyph-name="ion-ios7-bolt" unicode="&#xf15b;" horiz-adv-x="226" +d="M160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> + <glyph glyph-name="ion-ios7-bookmarks-outline" unicode="&#xf15c;" horiz-adv-x="418" +d="M385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150c10 0 20 -5 26 -12v0v0c6 7 16 12 26 12h150zM201 37v309c0 9 -12 22 -25 22h-143 +c-9 0 -16 -7 -16 -16v-286c0 -9 7 -18 16 -18h144c10 0 19 -3 24 -11zM273 368v-100l23 14l9 6l9 -6l23 -14v100h-64zM401 66v286c0 9 -7 16 -16 16h-32v-131l-48 32l-48 -32v131h-15c-13 0 -25 -13 -25 -22v-309c5 9 14 11 24 11h144c9 0 16 9 16 18z" /> + <glyph glyph-name="ion-ios7-bookmarks" unicode="&#xf15d;" horiz-adv-x="418" +d="M296 283l-23 -15v116h64v-116l-23 15l-9 6zM385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150s18 -8 18 -15v-329l8 -6l8 6v329s10 15 18 15h22v-146 +l48 32l48 -32v146h32z" /> + <glyph glyph-name="ion-ios7-box-outline" unicode="&#xf15e;" horiz-adv-x="320" +d="M192 208h-1h-63c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16zM192 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-64c-18 0 -32 14 -32 32s14 32 32 32h64zM320 336v-80h-16v-208h-288v208h-16v80h320zM288 64v192h-256v-192h256zM304 272v48h-288 +v-48h288z" /> + <glyph glyph-name="ion-ios7-box" unicode="&#xf15f;" horiz-adv-x="320" +d="M16 48v192h288v-192h-288zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16h-64zM0 336h320v-80h-16h-288h-16v80z" /> + <glyph glyph-name="ion-ios7-briefcase-outline" unicode="&#xf282;" horiz-adv-x="416" +d="M368 320h48v-320h-416v320h48v16h32v-16h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v16h32v-16zM144 320v0h128v0v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30zM400 16v224h-384v-224h384zM400 256v48h-32v-16h-32v16h-256v-16h-32v16h-32v-48 +h384z" /> + <glyph glyph-name="ion-ios7-briefcase" unicode="&#xf283;" horiz-adv-x="416" +d="M48 320v16h32v-16h-32zM0 0v240h416v-240h-416zM336 320v16h32v-16h-32zM368 320h48v-64h-416v64h48v-32h32v32h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v-32h32v32zM272 320v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30v0h128v0z" /> + <glyph glyph-name="ion-ios7-browsers-outline" unicode="&#xf160;" horiz-adv-x="384" +d="M0 304h304v-304h-304v304zM288 16v272h-272v-272h272zM384 384v-304h-64v16h48v272h-272v-48h-16v64h304z" /> + <glyph glyph-name="ion-ios7-browsers" unicode="&#xf161;" horiz-adv-x="384" +d="M0 304h304v-304h-304v304zM80 384h304v-304h-64v240h-240v64z" /> + <glyph glyph-name="ion-ios7-calculator-outline" unicode="&#xf284;" horiz-adv-x="288" +d="M32 288v64h224v-64h-224zM48 336v-32h192v32h-192zM256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM272 32v320c0 9 -7 16 -16 16h-224c-9 0 -16 -7 -16 -16v-320c0 -9 7 -16 16 -16h224c9 0 16 7 16 16z +M48 208h32h16v-16h-64v64h16v-16v-32zM48 128h32h16v-16h-64v64h16v-16v-32zM48 48h32h16v-16h-64v64h16v-16v-32zM128 208h32h16v-16h-64v64h16v-16v-32zM208 208h32h16v-16h-64v64h16v-16v-32zM128 128h32h16v-16h-64v64h16v-16v-32zM128 48h32h16v-16h-64v64h16v-16v-32z +M208 48h32h16v-16h-64v144h16v-96v-32z" /> + <glyph glyph-name="ion-ios7-calculator" unicode="&#xf285;" horiz-adv-x="288" +d="M256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM248 168h-48v-128h48v128zM248 248h-48v-48h48v48zM168 88h-48v-48h48v48zM168 168h-48v-48h48v48zM168 248h-48v-48h48v48zM88 88h-48v-48h48v48zM88 168 +h-48v-48h48v48zM88 248h-48v-48h48v48zM40 296h208v48h-208v-48z" /> + <glyph glyph-name="ion-ios7-calendar-outline" unicode="&#xf162;" horiz-adv-x="384" +d="M16 336v-64h352v64zM288 352h96v-352h-384v352h96v32h16v-32h160v32h16v-32zM368 16v240h-352v-240h352zM368 272v64h-80v-32h-16v32h-160v-32h-16v32h-80v-64h352z" /> + <glyph glyph-name="ion-ios7-calendar" unicode="&#xf163;" horiz-adv-x="384" +d="M0 0v256h384v-256h-384zM384 352v-80h-384v80h96v-48h16v48h160v-48h16v48h96zM96 352v32h16v-32h-16zM272 352v32h16v-32h-16z" /> + <glyph glyph-name="ion-ios7-camera-outline" unicode="&#xf164;" horiz-adv-x="384" +d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-7l-5 3c-3 4 -7 8 -10 11c-12 13 -20 24 -26 30 +c-5 5 -7 4 -7 4h-88s-2 0 -7 -4c-6 -5 -14 -14 -25 -27c-3 -4 -7 -10 -11 -14l-5 -3h-7h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17zM192 258c47 0 86 -38 86 -85s-39 -85 -86 -85s-86 38 -86 85s39 85 86 85zM192 104c38 0 70 31 70 69 +s-32 69 -70 69s-70 -31 -70 -69s32 -69 70 -69zM288 239v17h17v-17h-17zM160 173c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z" /> + <glyph glyph-name="ion-ios7-camera" unicode="&#xf165;" horiz-adv-x="384" +d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM192 88c47 0 86 38 86 85s-39 85 -86 85s-86 -38 -86 -85s39 -85 86 -85zM305 239v17h-17v-17h17 +zM192 242c38 0 70 -31 70 -69s-32 -69 -70 -69s-70 31 -70 69s32 69 70 69zM192 141c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-ios7-cart-outline" unicode="&#xf166;" horiz-adv-x="384" +d="M377 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM89 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM64 352h320l-15 -175s-209 -30 -244 -34s-69 -30 -74 -62h333v-17h-352s0 5 2 17c5 35 33 62 65 73l-57 213h-42v17h53z +M352 192l15 143h-297l44 -177c1 0 2 1 3 1z" /> + <glyph glyph-name="ion-ios7-cart" unicode="&#xf167;" horiz-adv-x="384" +d="M377 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM89 32c0 -14 -11 -25 -25 -25s-25 11 -25 25s11 25 25 25s25 -11 25 -25zM64 352h320l-15 -175s-209 -30 -244 -34s-69 -30 -74 -62h333v-17h-352s0 5 2 17c5 35 33 62 65 73l-57 213h-42v17h53z +" /> + <glyph glyph-name="ion-ios7-chatboxes-outline" unicode="&#xf168;" horiz-adv-x="416" +d="M16 384v-192h96v-16h-112v224h288v-112h-16v96h-256zM128 272h288v-224h-48v-64h-13l-64 64h-163v224zM400 64v192h-256v-192h153l55 -55v55h48z" /> + <glyph glyph-name="ion-ios7-chatboxes" unicode="&#xf169;" horiz-adv-x="416" +d="M288 400v-112h-176v-112h-112v224h288zM128 272h288v-224h-48v-64h-13l-64 64h-163v224z" /> + <glyph glyph-name="ion-ios7-chatbubble-outline" unicode="&#xf16a;" horiz-adv-x="384" +d="M192 336c-97 0 -176 -62 -176 -138c0 -26 10 -51 27 -73c0 -1 0 -2 1 -3s2 -1 2 -2c4 -6 6 -13 6 -20c0 -3 1 -3 -13 -47l39 17v0c2 1 10 4 11 4h1v0c5 2 10 3 16 3c5 0 9 -1 14 -2l1 -1h2c19 -6 41 -10 70 -10c48 0 92 15 125 40c32 25 50 58 50 94 +c0 76 -79 138 -176 138zM192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84 +c0 85 86 154 192 154z" /> + <glyph glyph-name="ion-ios7-chatbubble" unicode="&#xf16b;" horiz-adv-x="384" +d="M192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84c0 85 86 154 192 154z +" /> + <glyph glyph-name="ion-ios7-checkmark-empty" unicode="&#xf16c;" horiz-adv-x="207" +d="M74 118c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47l125 126l17 -18z" /> + <glyph glyph-name="ion-ios7-checkmark-outline" unicode="&#xf16d;" horiz-adv-x="416" +d="M292 271l18 -18l-134 -135c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-checkmark" unicode="&#xf16e;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM176 118l134 135l-18 18l-125 -126l-47 47l-18 -18l56 -56c2 -2 6 -4 9 -4s7 2 9 4z" /> + <glyph glyph-name="ion-ios7-circle-filled" unicode="&#xf16f;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 352c88 0 160 -72 160 -160s-72 -160 -160 -160s-160 72 -160 160s72 160 160 160z" /> + <glyph glyph-name="ion-ios7-circle-outline" unicode="&#xf170;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-clock-outline" unicode="&#xf171;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 192v128h17v-145h-113v17h96z" /> + <glyph glyph-name="ion-ios7-clock" unicode="&#xf172;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM225 175v145h-17v-128h-96v-17h113z" /> + <glyph glyph-name="ion-ios7-close-empty" unicode="&#xf2bd;" horiz-adv-x="192" +d="M180 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> + <glyph glyph-name="ion-ios7-close-outline" unicode="&#xf2bb;" horiz-adv-x="416" +d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM343 57c74 74 74 196 0 270s-196 74 -270 0s-74 -196 0 -270s196 -74 270 0zM292 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> + <glyph glyph-name="ion-ios7-close" unicode="&#xf2bc;" horiz-adv-x="416" +d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM304 108l-84 84l84 84l-12 12l-84 -84l-84 84l-12 -12l84 -84l-84 -84l12 -12l84 84l84 -84z" /> + <glyph glyph-name="ion-ios7-cloud-download-outline" unicode="&#xf173;" +d="M161 67l55 -54v242h16v-242l55 54l12 -12l-75 -73l-74 73zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82v0h-101v16h97h4c37 0 66 30 66 66s-29 67 -66 67h-15v20c0 55 -46 97 -101 97c-38 0 -73 -22 -90 -56l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -18 -44 -39l-1 -9 +l-9 -3c-30 -10 -50 -36 -50 -67c0 -40 33 -74 74 -74h91v-16h-91c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115c0 -1 -1 -2 -1 -3z" /> + <glyph glyph-name="ion-ios7-cloud-download" unicode="&#xf174;" +d="M216 13v107h16v-107l55 54l12 -12l-75 -73l-74 73l11 12zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82h-134v135h-16v-135h-35h-21h-70c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115 +c0 -1 -1 -2 -1 -3z" /> + <glyph glyph-name="ion-ios7-cloud-outline" unicode="&#xf175;" +d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4zM366 64c37 0 66 32 66 69s-29 67 -66 67h-15v21c0 56 -46 99 -101 99 +c-38 0 -73 -23 -90 -58l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39l-1 -9l-9 -3c-30 -10 -50 -37 -50 -69c0 -41 33 -76 74 -76h272h4z" /> + <glyph glyph-name="ion-ios7-cloud-upload-outline" unicode="&#xf176;" +d="M161 188l-11 11l74 75l75 -75l-12 -11l-55 54v-242h-16v242zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83v0h-101v16h97h4c37 0 66 30 66 67s-29 70 -66 70l-15 1v20c0 56 -46 99 -101 99c-38 0 -73 -23 -90 -58l-6 -13l-14 6c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39 +l-1 -9l-9 -3c-30 -10 -50 -39 -50 -71c0 -41 33 -75 74 -75h91v-16h-91c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloud-upload" unicode="&#xf177;" +d="M216 0v96h16v-96h-16zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83h-134v146l55 -54l12 11l-75 75l-74 -75l11 -11l55 54v-146h-35h-31h-60c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116 +c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloud" unicode="&#xf178;" +d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4z" /> + <glyph glyph-name="ion-ios7-cloudy-night-outline" unicode="&#xf307;" horiz-adv-x="384" +d="M125 224c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 240v0c37 0 68 -26 76 -61 +h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78zM361 142c8 0 15 2 23 4c-4 -7 -9 -14 -14 -20c-21 -24 -50 -41 -84 -45c4 6 6 12 8 19c19 4 36 13 50 25c-18 1 -35 6 -50 13c-23 11 -42 29 -56 51 +c-14 21 -22 48 -22 75c0 15 2 30 7 44c-24 -12 -43 -33 -53 -59c-5 2 -12 4 -18 5c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52c0 -32 12 -63 35 -86s54 -36 86 -36h6z" /> + <glyph glyph-name="ion-ios7-cloudy-night" unicode="&#xf308;" horiz-adv-x="384" +d="M361 142c8 0 15 2 23 4c-4 -7 -9 -15 -14 -21c-21 -24 -50 -40 -84 -44h-3c4 10 7 21 7 32c0 22 -9 43 -24 58c-14 15 -33 23 -53 24c-6 16 -16 29 -29 40c-10 8 -20 13 -32 17v2c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52 +c0 -32 12 -63 35 -86s54 -36 86 -36h6zM125 239v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v7c0 43 35 79 78 79z" /> + <glyph glyph-name="ion-ios7-cloudy-outline" unicode="&#xf179;" horiz-adv-x="274" +d="M125 272c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-6 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 288v0c37 0 68 -26 76 -61 +h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-cloudy" unicode="&#xf17a;" horiz-adv-x="274" +d="M125 288v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-cog-outline" unicode="&#xf17b;" horiz-adv-x="384" +d="M313 235c4 -12 7 -25 8 -37v-13c-1 -13 -4 -25 -8 -37c-1 -4 -3 -7 -5 -12c-5 -11 -11 -20 -19 -29c0 0 -2 -3 -6 -7s-7 -6 -7 -6c-9 -8 -19 -14 -29 -19c-4 -2 -8 -3 -11 -4c-12 -4 -24 -7 -37 -8h-13c-13 1 -25 4 -37 8c-4 1 -7 3 -11 5c-11 5 -23 12 -32 21l-4 4l-4 4 +c-9 10 -16 20 -21 32c-2 3 -3 7 -4 10c0 0 -1 3 -3 10s-3 10 -3 10c-1 6 -2 13 -2 19v11c1 13 4 26 8 38c1 4 2 7 4 10c5 12 12 22 21 32c1 2 3 4 4 5s3 3 5 4c9 8 20 15 31 20c4 2 7 4 11 5c12 4 25 7 38 8h11c6 0 13 -1 19 -2l8 -2s11 -4 11 -4c3 -1 7 -2 11 -4 +c12 -5 22 -12 32 -21l4 -4l4 -4c9 -9 15 -20 21 -32c2 -4 4 -7 5 -11zM81 186c0 -5 1 -11 2 -16l103 28l28 103c-5 1 -10 2 -16 2h-10c-11 0 -22 -3 -33 -7c-3 -1 -8 -2 -11 -4c-10 -5 -18 -10 -26 -18l-4 -4l-4 -4c-8 -9 -14 -18 -19 -28l-3 -9c-4 -11 -7 -22 -7 -33v-10z +M240 89c9 4 18 10 26 17l-76 76l-103 -28v-1c1 -3 3 -6 4 -9c5 -10 11 -20 19 -28l4 -4s2 -3 3 -4c8 -8 18 -13 28 -18c3 -2 7 -3 10 -4c10 -4 21 -6 32 -7h11c11 0 22 3 32 7c3 1 7 2 10 3zM305 186v11c-1 11 -3 22 -7 32c-1 3 -2 7 -4 10c-5 10 -11 20 -19 28l-3 3l-4 4 +c-8 8 -18 14 -28 19c-3 2 -7 2 -10 3l-1 1l-28 -104l76 -76c7 8 13 16 17 25c2 3 3 7 4 11c4 10 7 22 7 33zM384 175l-33 -8c-1 -5 -2 -10 -3 -14l27 -20l-12 -30l-34 5c-2 -4 -5 -7 -8 -11l17 -29l-22 -23l-30 17c-3 -2 -6 -5 -10 -7l5 -34l-29 -12l-21 27 +c-4 -1 -9 -2 -14 -3l-8 -33h-32l-9 33c-4 1 -9 2 -13 3l-21 -28l-29 12l4 34c-4 2 -7 5 -11 8l-30 -18l-23 22l18 31c-3 4 -5 7 -7 11l-35 -5l-12 29l28 22c-1 4 -1 8 -2 12l-35 9v32l35 9c1 4 1 8 2 12l-29 22l12 30l36 -5c2 4 5 7 7 10l-19 32l22 22l32 -19c4 3 8 6 12 8 +l-5 35l29 13l22 -29c4 1 8 1 12 2l9 35h32l9 -35c4 -1 8 -1 12 -2l22 28l29 -12l-5 -35c4 -2 7 -5 11 -8l30 18l22 -23l-17 -29c3 -4 5 -7 7 -11l35 5l12 -30l-28 -21c1 -4 2 -9 3 -13l33 -9v-32zM338 140l-8 7l2 10l3 12l1 11l10 2l22 6v7l-22 6l-10 2l-1 11l-3 12l-2 10 +l8 6l18 13l-3 7l-22 -3l-10 -1l-6 8c-2 3 -3 6 -6 10l-7 8l6 10l11 18l-5 6l-20 -12l-8 -5l-9 7l-9 6l-10 6l2 10l4 23l-7 2l-14 -18l-6 -8l-10 2c-4 1 -7 1 -11 2l-11 2l-3 10l-5 23h-7l-6 -23l-3 -10l-11 -2c-4 0 -6 -1 -10 -2l-11 -2l-6 8l-14 19l-7 -3l3 -23l2 -11 +l-9 -5l-2 -1c-3 -2 -5 -4 -8 -6l-9 -6l-9 6l-21 12l-5 -5l12 -21l6 -9l-6 -8c-2 -3 -4 -7 -6 -10l-6 -9l-10 2l-23 3l-3 -7l19 -14l8 -6l-2 -10c-1 -4 -1 -7 -2 -11l-2 -11l-10 -2l-23 -6v-7l23 -6l10 -3l1 -10c1 -4 2 -7 3 -11l2 -11l-8 -6l-19 -14l3 -6l23 3l10 1l6 -9 +c2 -4 4 -7 6 -10l6 -8l-5 -9l-12 -20l5 -5l20 11l9 6l9 -6c3 -2 6 -5 10 -7l9 -5l-2 -11l-3 -22l7 -3l13 18l6 9l11 -3c4 -1 8 -1 12 -2l10 -2l3 -10l5 -21h8l5 21l2 10l11 2c4 1 8 1 12 2l10 3l7 -9l13 -17l7 3l-4 21l-1 11l9 5c2 2 4 4 7 6c0 0 1 1 2 1l8 6l9 -5l19 -11 +l5 5l-11 18l-5 9l6 9c2 3 6 6 8 10l5 9l11 -1l21 -3l3 6z" /> + <glyph glyph-name="ion-ios7-cog" unicode="&#xf17c;" horiz-adv-x="384" +d="M384 175l-33 -8c-1 -5 -2 -10 -3 -14l27 -20l-12 -30l-34 5c-2 -4 -5 -7 -8 -11l17 -29l-22 -23l-30 17c-3 -2 -6 -5 -10 -7l5 -34l-29 -12l-21 27c-4 -1 -9 -2 -14 -3l-8 -33h-32l-9 33c-4 1 -9 2 -13 3l-21 -28l-29 12l4 34c-4 2 -7 5 -11 8l-30 -18l-23 22l18 31 +c-3 4 -5 7 -7 11l-35 -5l-12 29l28 22c-1 4 -1 8 -2 12l-35 9v32l35 9c1 4 1 8 2 12l-29 22l12 30l36 -5c2 4 5 7 7 10l-19 32l22 22l32 -19c4 3 8 6 12 8l-5 35l29 13l22 -29c4 1 8 1 12 2l9 35h32l9 -35c4 -1 8 -1 12 -2l22 28l29 -12l-5 -35c4 -2 7 -5 11 -8l30 18 +l22 -23l-17 -29c3 -4 5 -7 7 -11l35 5l12 -30l-28 -21c1 -4 2 -9 3 -13l33 -9v-32zM321 185c0 4 -1 8 -1 12c-1 13 -3 25 -7 37c-1 4 -3 8 -5 12c-5 11 -12 22 -21 31l-4 4l-5 5c-10 9 -19 16 -31 21c-4 2 -8 3 -11 4c0 0 -7 2 -11 3l-8 2c-6 1 -13 3 -19 3h-11 +c-13 -1 -26 -4 -38 -8c-4 -1 -7 -3 -11 -5c-11 -5 -22 -12 -31 -20c-2 -1 -4 -4 -5 -5s-3 -2 -4 -4c-9 -10 -16 -20 -21 -32c-2 -3 -4 -7 -5 -11c-4 -12 -6 -24 -7 -37v-12c0 -6 1 -12 2 -18c0 0 1 -3 3 -10s3 -10 3 -10c1 -3 3 -7 4 -10c5 -12 12 -22 21 -32 +c2 -2 2 -3 4 -5c1 -1 3 -2 4 -3c9 -9 20 -16 32 -22c4 -2 7 -3 11 -4c12 -4 24 -7 37 -8h13c12 1 25 3 37 7c3 1 7 3 11 5c10 5 20 11 29 19c0 0 3 2 7 6s6 7 6 7c8 9 14 18 19 29c2 5 4 8 5 12c4 12 7 24 8 37zM214 301l-28 -103l-103 -28c-1 5 -2 11 -2 16v10 +c0 11 3 22 7 33l3 9c5 10 11 19 19 28l4 4l4 4c8 8 17 13 27 18c3 2 7 3 10 4c11 4 22 7 33 7h10c5 0 11 -1 16 -2zM87 154l103 28l76 -76c-8 -6 -17 -13 -26 -17c-3 -1 -7 -2 -10 -3c-10 -4 -21 -7 -32 -7h-11c-11 0 -22 3 -32 7c-3 1 -8 2 -11 4c-10 5 -19 10 -27 18 +c-1 1 -2 3 -3 4l-4 4c-8 8 -14 18 -19 28c-2 3 -3 6 -4 9v1zM298 229c4 -10 6 -21 7 -32v-11c-1 -11 -3 -23 -7 -33c-1 -4 -2 -7 -4 -11c-4 -9 -10 -17 -17 -25l-76 76l28 104l1 -1c3 -1 7 -2 10 -3c10 -5 20 -11 28 -19l4 -4l3 -3c8 -8 14 -18 19 -28c2 -3 3 -7 4 -10z" /> + <glyph glyph-name="ion-ios7-compose-outline" unicode="&#xf17d;" horiz-adv-x="368" +d="M288 48v192l16 16v-224h-304v288h240l-16 -16h-208v-256h272zM158 164l171 171l11 -11l-180 -180h-32v32l180 180l11 -11l-171 -171zM364 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" /> + <glyph glyph-name="ion-ios7-compose" unicode="&#xf17e;" horiz-adv-x="368" +d="M128 176l180 180l32 -32l-180 -180h-32v32zM364 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4zM176 128l128 129v-3v-222h-304v288h240v0v0l-128 -128v-64h64z" /> + <glyph glyph-name="ion-ios7-contact-outline" unicode="&#xf17f;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 383c-105 0 -191 -86 -191 -191c0 -47 17 -89 45 -122c18 8 62 24 90 32c2 1 3 0 3 10c0 11 -1 18 -4 24c-4 8 -7 20 -9 31c-4 5 -10 15 -14 33c-3 16 -1 22 1 28v2 +c1 4 0 23 -3 38c-2 10 1 34 15 52c9 12 27 26 58 28h18c32 -2 49 -16 58 -28c14 -18 17 -42 15 -52c-3 -15 -4 -34 -3 -38c0 0 1 -1 1 -2c2 -6 3 -12 0 -28c-4 -18 -10 -27 -14 -32c-2 -11 -5 -24 -9 -32c-3 -7 -6 -15 -6 -23c0 -10 0 -10 2 -11c27 -8 73 -24 93 -32 +c28 33 45 76 45 122c0 105 -86 191 -191 191z" /> + <glyph glyph-name="ion-ios7-contact" unicode="&#xf180;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c59 0 111 27 146 69c-20 8 -66 24 -93 32c-2 1 -3 1 -3 11c0 8 4 16 7 23c4 8 7 21 9 32c4 5 10 14 14 32c3 16 2 22 0 28c0 0 -1 1 -1 2c-1 4 0 23 3 38c2 10 -1 34 -15 52 +c-9 12 -26 26 -58 28h-18c-31 -2 -49 -16 -58 -28c-14 -18 -17 -42 -15 -52c3 -15 4 -34 3 -38v-2c-2 -6 -4 -12 -1 -28c4 -18 10 -28 14 -33c2 -11 5 -23 9 -31c3 -6 4 -13 4 -24c0 -10 -1 -9 -3 -10c-28 -8 -72 -24 -90 -32c35 -42 87 -69 146 -69z" /> + <glyph glyph-name="ion-ios7-copy-outline" unicode="&#xf181;" horiz-adv-x="288" +d="M192 352v-64h64v-16h-80v80h16zM213 384l75 -75v-261h-48v-48h-240v336h48v48h165zM224 16v32h-176v272h-32v-304h208zM272 64v238l-65 66h-143v-304h208z" /> + <glyph glyph-name="ion-ios7-copy" unicode="&#xf182;" horiz-adv-x="288" +d="M32 32h16h192v-32h-240v336h32v-288v-16zM213 384l75 -75v-261h-48h-192v288v48h165zM256 272v16h-64v64h-16v-80h80z" /> + <glyph glyph-name="ion-ios7-download-outline" unicode="&#xf183;" horiz-adv-x="320" +d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 196l55 -55v243h16v-243l55 55l11 -12l-74 -74l-74 74z" /> + <glyph glyph-name="ion-ios7-download" unicode="&#xf184;" horiz-adv-x="320" +d="M168 304h152v-304h-320v304h152v-163l-55 55l-11 -12l74 -74l74 74l-11 12l-55 -55v163zM152 304v80h16v-80h-16z" /> + <glyph glyph-name="ion-ios7-drag" unicode="&#xf185;" horiz-adv-x="352" +d="M0 128v16h352v-16h-352zM0 184v16h352v-16h-352zM0 240v16h352v-16h-352z" /> + <glyph glyph-name="ion-ios7-email-outline" unicode="&#xf186;" horiz-adv-x="384" +d="M0 320h384v-256h-384v256zM192 180l163 124h-326zM16 80h352v214l-115 -88l68 -77l-2 -2l-79 70l-48 -37l-48 37l-79 -70l-2 2l68 77l-115 88v-214z" /> + <glyph glyph-name="ion-ios7-email" unicode="&#xf187;" horiz-adv-x="384" +d="M384 64h-384v242l131 -100l-68 -77l2 -2l79 70l48 -37l48 37l79 -70l2 2l-68 77l131 100v-242zM376 320l-184 -140l-184 140h368z" /> + <glyph glyph-name="ion-ios7-expand" unicode="&#xf30d;" horiz-adv-x="364" +d="M214 152l8 8l92 -92l50 50v-108h-108l50 50zM150 232l-8 -8l-92 92l-50 -50v108h108l-50 -50z" /> + <glyph glyph-name="ion-ios7-eye-outline" unicode="&#xf188;" horiz-adv-x="384" +d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 288c-62 0 -111 -36 -170 -96c24 -24 48 -50 76 -68c30 -20 60 -28 94 -28 +c75 0 133 56 171 95c-26 29 -50 50 -74 66c-32 21 -64 31 -97 31zM192 112c-44 0 -80 36 -80 80s36 80 80 80s80 -36 80 -80s-36 -80 -80 -80zM192 256c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64zM224 192h16v0c0 -26 -22 -48 -48 -48s-48 21 -48 48 +s22 48 48 48v-16c-16 0 -32 -13 -32 -31s15 -33 32 -33s32 14 32 32v0z" /> + <glyph glyph-name="ion-ios7-eye" unicode="&#xf189;" horiz-adv-x="384" +d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM186 221 +c0 -19 16 -35 35 -35c7 0 14 2 19 6v0c0 -27 -22 -48 -48 -48s-48 21 -48 48s22 48 48 48c-4 -5 -6 -12 -6 -19z" /> + <glyph glyph-name="ion-ios7-fastforward-outline" unicode="&#xf18a;" +d="M16 293v-202l184 101zM240 292v0v-78v-27v-95l176 100zM224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> + <glyph glyph-name="ion-ios7-fastforward" unicode="&#xf18b;" +d="M224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> + <glyph glyph-name="ion-ios7-filing-outline" unicode="&#xf18c;" horiz-adv-x="352" +d="M288 320l64 -96v-160h-176h-176v160l64 96h224zM333 224l-45 68v-68h45zM80 304v-80h48c0 -26 22 -48 48 -48s48 22 48 48h48v80h-192zM64 292l-45 -68h45v68zM336 80v128h-98c-7 -28 -32 -48 -62 -48s-55 20 -62 48h-98v-128h160h160z" /> + <glyph glyph-name="ion-ios7-filing" unicode="&#xf18d;" horiz-adv-x="352" +d="M176 160c30 0 55 20 62 48h114v-144h-176h-176v144h114c7 -28 32 -48 62 -48zM64 224h-7h-57l64 96v0v-80h16v80h192v-80h16v80v0l64 -96h-56h-8h-16h-8h-40c0 -26 -22 -48 -48 -48s-48 22 -48 48h-39h-9h-16z" /> + <glyph glyph-name="ion-ios7-film-outline" unicode="&#xf18e;" horiz-adv-x="384" +d="M0 349v35h32v-35h-32zM303 366h-222v-142h222v142zM320 384v0v-177h-256v177h256zM303 160h-222v-143h222v143zM320 178v0v-178h-256v178h256zM0 279v35h32v-35h-32zM0 210v34h32v-34h-32zM0 140v34h32v-34h-32zM0 70v35h32v-35h-32zM0 0v35h32v-35h-32zM352 349v35h32 +v-35h-32zM352 279v35h32v-35h-32zM352 210v34h32v-34h-32zM352 140v34h32v-34h-32zM352 70v35h32v-35h-32zM352 0v35h32v-35h-32z" /> + <glyph glyph-name="ion-ios7-film" unicode="&#xf18f;" horiz-adv-x="384" +d="M0 349v35h32v-35h-32zM320 384v0v-177h-256v177h256zM320 178v0v-178h-256v178h256zM0 279v35h32v-35h-32zM0 210v34h32v-34h-32zM0 140v34h32v-34h-32zM0 70v35h32v-35h-32zM0 0v35h32v-35h-32zM352 349v35h32v-35h-32zM352 279v35h32v-35h-32zM352 210v34h32v-34h-32z +M352 140v34h32v-34h-32zM352 70v35h32v-35h-32zM352 0v35h32v-35h-32z" /> + <glyph glyph-name="ion-ios7-flag-outline" unicode="&#xf190;" horiz-adv-x="256" +d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4zM240 179v0v141c-11 -1 -25 -4 -40 -4 +c-25 0 -46 6 -68 11s-42 9 -64 9c-30 0 -46 -5 -52 -7v-137c10 3 26 6 52 6c24 0 45 -8 67 -13c21 -4 43 -9 66 -9c15 0 28 2 39 3z" /> + <glyph glyph-name="ion-ios7-flag" unicode="&#xf191;" horiz-adv-x="256" +d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4z" /> + <glyph glyph-name="ion-ios7-folder-outline" unicode="&#xf192;" horiz-adv-x="320" +d="M294 304c16 0 26 -9 26 -25v-202c0 -16 -10 -29 -26 -29h-266c-16 0 -28 13 -28 29v235c0 15 12 24 28 24h60c6 0 14 -5 21 -13c8 -9 14 -19 19 -19h166zM28 320c-2 0 -12 1 -12 -8v-56h288v23c0 7 -3 9 -10 9h-166c-14 0 -18 10 -30 24c-6 7 -11 8 -15 8h-11h-44z +M294 64c7 0 10 7 10 13v163h-288v-163c0 -7 6 -13 12 -13h266z" /> + <glyph glyph-name="ion-ios7-folder" unicode="&#xf193;" horiz-adv-x="320" +d="M0 77v163h320v-163c0 -16 -10 -29 -26 -29h-266c-16 0 -28 13 -28 29zM320 279v-23h-320v56c0 15 12 24 28 24h60c6 0 14 -5 21 -13c8 -9 14 -19 19 -19h166c16 0 26 -9 26 -25z" /> + <glyph glyph-name="ion-ios7-football-outline" unicode="&#xf328;" +d="M152 208l72 48l72 -48l-24 -80h-96zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM388 64c11 14 21 30 28 47c9 22 15 46 16 70l-13 -10l-42 59v78l21 -3c-8 12 -17 24 -27 34c-19 19 -41 35 -66 45c-7 3 -13 5 -20 7 +l10 -25l-71 -22l-71 22l10 25c-7 -2 -13 -4 -20 -7c-25 -10 -47 -26 -66 -45c-10 -10 -19 -22 -27 -34l21 3v-78l-42 -59l-13 10c1 -24 7 -48 16 -70c7 -17 17 -33 28 -47l1 13l69 -24l44 -61l-2 -2c17 -4 34 -6 52 -6s35 2 52 6l-2 2l44 61l69 24z" /> + <glyph glyph-name="ion-ios7-football" unicode="&#xf329;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM432 181v11c0 28 -5 55 -16 81c-5 11 -11 22 -18 32l-21 3v-78l42 -59zM176 128h96l24 80l-72 48l-72 -48zM285 391c-20 6 -40 9 -61 9s-41 -3 -61 -9l-10 -25l71 -22l71 22z +M32 273c-11 -26 -16 -53 -16 -81v-11l13 -10l42 59v78l-21 -3c-7 -10 -13 -21 -18 -32zM77 45c19 -19 41 -35 66 -45c10 -4 19 -7 29 -10l2 2l-44 61l-69 24l-1 -13c5 -7 11 -13 17 -19zM371 45c6 6 12 12 17 19l-1 13l-69 -24l-44 -61l2 -2c10 3 19 6 29 10 +c25 10 47 26 66 45z" /> + <glyph glyph-name="ion-ios7-gear-outline" unicode="&#xf194;" horiz-adv-x="384" +d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM360 232c14 0 24 -11 24 -25v-15v-15 +c0 -14 -10 -24 -24 -24h-15c-12 0 -23 -11 -23 -24c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-22 -22c-4 -4 -11 -7 -18 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -23 -11 -23 -23v-15c0 -14 -11 -25 -25 -25h-30c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23 +c-6 0 -13 -3 -17 -8l-10 -9c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7 +s13 -3 17 -7l10 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 24 -11 24 -25v-15c0 -12 11 -23 24 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -9c-5 -4 -8 -11 -8 -17c0 -13 11 -23 23 -23h15zM368 192v15 +c0 4 -3 9 -8 9h-15c-10 0 -20 4 -27 12s-12 17 -12 27c0 11 5 21 13 28l9 9c2 2 3 5 3 7s-1 4 -3 6l-22 22c-2 1 -4 2 -6 2s-4 0 -6 -2l-10 -9c-8 -8 -17 -13 -28 -13c-10 0 -20 4 -28 11s-12 18 -12 28v15c0 5 -4 9 -8 9h-30c-4 0 -9 -4 -9 -9v-15c0 -10 -4 -21 -12 -28 +s-17 -11 -27 -11c-11 0 -21 4 -28 12l-10 10v0v0c-1 1 -4 2 -6 2s-4 0 -6 -2l-23 -22c-2 -2 -2 -5 -2 -6s0 -5 2 -7l9 -9c8 -8 13 -17 13 -28c0 -10 -4 -19 -11 -27s-18 -12 -28 -12h-15c-5 0 -9 -5 -9 -9v-15v-15c0 -4 4 -9 9 -9h15c10 0 21 -4 28 -12s11 -17 11 -27 +c0 -11 -4 -21 -12 -29l-9 -8c-3 -3 -3 -10 0 -13l22 -22v0v0c1 -1 4 -2 6 -2s4 0 6 2l10 9c7 8 17 13 28 13c10 0 19 -4 27 -11s12 -18 12 -28v-15c0 -5 4 -9 9 -9h30c5 0 9 4 9 9v15c0 10 4 21 12 28s17 11 27 11c11 0 21 -5 29 -13l9 -9c2 -2 4 -2 6 -2s4 0 6 2l23 22 +c3 3 3 10 0 13l-10 9c-8 7 -12 17 -12 28c0 10 4 20 11 28s18 12 28 12h15c5 0 7 4 7 8v15z" /> + <glyph glyph-name="ion-ios7-gear" unicode="&#xf195;" horiz-adv-x="384" +d="M360 232c14 0 24 -11 24 -25v-15v-15c0 -14 -10 -25 -24 -25h-15c-12 0 -23 -10 -23 -23c0 -6 3 -13 8 -17l10 -9c10 -10 10 -25 0 -35l-23 -22c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-9 9c-5 5 -11 8 -17 8c-13 0 -24 -11 -24 -23v-15c0 -14 -10 -25 -24 -25h-30 +c-14 0 -25 11 -25 25v15c0 12 -10 23 -23 23c-6 0 -13 -2 -17 -7l-10 -10c-4 -4 -10 -7 -17 -7s-14 3 -18 7l-22 22c-10 10 -10 25 0 35l9 9c5 4 8 11 8 17c0 13 -11 23 -23 23h-15c-14 0 -25 11 -25 25v15v15c0 14 11 25 25 25h15c12 0 23 10 23 23c0 6 -3 13 -8 17l-9 9 +c-10 10 -10 25 0 35l22 22c4 4 11 7 18 7s14 -3 18 -7l9 -10c4 -5 11 -7 17 -7c13 0 23 11 23 23v15c0 14 11 25 25 25h30c14 0 25 -11 25 -25v-15c0 -12 10 -23 23 -23c6 0 13 3 17 8l9 9c4 4 11 7 18 7s14 -3 18 -7l22 -22c10 -10 10 -25 0 -35l-10 -10 +c-5 -4 -8 -10 -8 -16c0 -13 11 -23 23 -23h15zM273 192v0c0 44 -36 80 -80 80s-80 -36 -80 -80v0v0c0 -44 36 -80 80 -80s80 36 80 80v0z" /> + <glyph glyph-name="ion-ios7-glasses-outline" unicode="&#xf196;" +d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 +c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" /> + <glyph glyph-name="ion-ios7-glasses" unicode="&#xf197;" +d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 +c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58z" /> + <glyph glyph-name="ion-ios7-heart-outline" unicode="&#xf198;" horiz-adv-x="384" +d="M277 350c-38 0 -71 -24 -85 -57c-14 33 -47 57 -85 57c-51 0 -92 -42 -92 -93c0 -25 10 -47 26 -64l151 -152l148 150c17 17 29 40 29 66c0 51 -41 93 -92 93zM277 365v0c59 0 107 -49 107 -108c0 -30 -12 -57 -33 -77l-148 -150l-11 -11l-11 11l-151 153 +c-19 20 -30 46 -30 74c0 59 48 108 107 108c34 0 65 -16 85 -42c20 26 51 42 85 42z" /> + <glyph glyph-name="ion-ios7-heart" unicode="&#xf199;" horiz-adv-x="384" +d="M277 365v0c59 0 107 -49 107 -108c0 -30 -12 -57 -33 -77l-148 -150l-11 -11l-11 11l-151 153c-19 20 -30 46 -30 74c0 59 48 108 107 108c34 0 65 -16 85 -42c20 26 51 42 85 42z" /> + <glyph glyph-name="ion-ios7-help-empty" unicode="&#xf19a;" horiz-adv-x="128" +d="M68 82c-9 0 -17 8 -17 17s8 17 17 17s17 -8 17 -17s-8 -17 -17 -17zM102 197c-23 -22 -22 -27 -23 -53h-19c1 28 7 43 30 64c11 10 19 24 19 39c0 24 -19 39 -42 39c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62c33 0 60 -20 60 -54c0 -22 -11 -37 -26 -51z" /> + <glyph glyph-name="ion-ios7-help-outline" unicode="&#xf19b;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM212 302c33 0 60 -21 60 -55c0 -22 -11 -36 -26 -50c-23 -23 -22 -27 -23 -53h-19 +c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62zM212 116c9 0 17 -8 17 -17s-8 -17 -17 -17s-17 8 -17 17s8 17 17 17z" /> + <glyph glyph-name="ion-ios7-help" unicode="&#xf19c;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46 +c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" /> + <glyph glyph-name="ion-ios7-home-outline" unicode="&#xf32a;" horiz-adv-x="384" +d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45zM80 294v42h-32v-67z" /> + <glyph glyph-name="ion-ios7-home" unicode="&#xf32b;" horiz-adv-x="384" +d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -154v-20l-192 154l-192 -154v20l32 26v96h64v-45z" /> + <glyph glyph-name="ion-ios7-infinite-outline" unicode="&#xf19d;" horiz-adv-x="384" +d="M359 249c33 -31 33 -82 0 -113c-16 -15 -36 -24 -59 -24c-22 0 -44 9 -60 24l-108 102c-13 12 -30 18 -48 18s-35 -6 -48 -18c-26 -25 -26 -66 0 -91c13 -12 30 -19 48 -19s35 7 48 19l36 34l12 -11l-36 -34c-16 -15 -37 -24 -60 -24s-43 9 -59 24c-33 31 -33 82 0 113 +c16 15 36 23 59 23c22 0 44 -8 60 -23l108 -102c13 -12 30 -19 48 -19s34 7 47 19c26 25 26 66 0 91c-13 12 -29 18 -47 18s-35 -6 -48 -18l-37 -35l-11 11l36 35c16 15 37 23 60 23s43 -8 59 -23z" /> + <glyph glyph-name="ion-ios7-infinite" unicode="&#xf19e;" horiz-adv-x="384" +d="M358 249c17 -15 26 -36 26 -57c0 -22 -9 -42 -26 -57s-39 -23 -63 -23s-45 8 -62 23l-103 93c-11 10 -26 15 -41 15s-30 -5 -41 -15s-16 -22 -16 -36s5 -26 16 -36s26 -15 41 -15s30 5 41 15l30 28l23 -20l-32 -29c-17 -15 -38 -23 -62 -23s-46 8 -63 23s-26 35 -26 57 +s9 42 26 57s39 23 63 23s45 -8 62 -23l104 -93c11 -10 25 -15 40 -15s30 5 41 15s17 22 17 36s-6 26 -17 36s-26 15 -41 15s-29 -5 -40 -15l-31 -28l-23 20l32 29c17 15 38 23 62 23s46 -8 63 -23z" /> + <glyph glyph-name="ion-ios7-information-empty" unicode="&#xf19f;" horiz-adv-x="64" +d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" /> + <glyph glyph-name="ion-ios7-information-outline" unicode="&#xf1a0;" horiz-adv-x="416" +d="M184 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM224 104h16v-8h-64v8h16v120h-16v8h48v-128zM208 400c57 0 106 -20 147 -61s61 -90 61 -147s-20 -106 -61 -147s-90 -61 -147 -61s-106 20 -147 61s-61 90 -61 147s20 106 61 147s90 61 147 61z +M208 1c53 0 98 19 135 56s56 82 56 135s-19 98 -56 135s-82 56 -135 56s-98 -19 -135 -56s-56 -82 -56 -135s19 -98 56 -135s82 -56 135 -56z" /> + <glyph glyph-name="ion-ios7-information" unicode="&#xf1a1;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM204 296c-11 0 -20 -9 -20 -20s9 -20 20 -20s20 9 20 20s-9 20 -20 20zM240 96v8h-16v128h-48v-8h16v-120h-16v-8h64z" /> + <glyph glyph-name="ion-ios7-ionic-outline" unicode="&#xf1a2;" horiz-adv-x="416" +d="M378 313c24 -34 38 -76 38 -121c0 -115 -92 -208 -207 -208s-209 93 -209 208s94 208 209 208c45 0 86 -14 120 -38c6 5 13 8 21 8c19 0 35 -16 35 -35c0 -8 -2 -16 -7 -22zM350 357c-12 0 -22 -10 -22 -22s10 -22 22 -22s22 10 22 22s-10 22 -22 22zM344 56 +c18 18 31 39 41 62c10 24 15 48 15 74s-5 51 -15 75c-5 13 -12 25 -20 36c-5 -2 -10 -3 -15 -3c-19 0 -35 16 -35 35c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 14 -75 14s-51 -4 -75 -14c-23 -10 -43 -24 -61 -42s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75 +s5 -50 15 -74c10 -23 23 -44 41 -62s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41zM208 288c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM208 112c44 0 80 36 80 80s-36 80 -80 80s-79 -36 -79 -80s35 -80 79 -80z" /> + <glyph glyph-name="ion-ios7-keypad-outline" unicode="&#xf1a3;" horiz-adv-x="384" +d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM331 16c21 0 37 16 37 37s-16 38 -37 38s-38 -17 -38 -38s17 -37 38 -37zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM192 16c21 0 37 16 37 37s-16 38 -37 38 +s-37 -17 -37 -38s16 -37 37 -37zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM53 16c21 0 38 16 38 37s-17 38 -38 38s-37 -17 -37 -38s16 -37 37 -37zM331 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM331 155 +c21 0 37 16 37 37s-16 37 -37 37s-38 -16 -38 -37s17 -37 38 -37zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM192 155c21 0 37 16 37 37s-16 37 -37 37s-37 -16 -37 -37s16 -37 37 -37zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53 +s-53 23 -53 53s23 53 53 53zM53 155c21 0 38 16 38 37s-17 37 -38 37s-37 -16 -37 -37s16 -37 37 -37zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54zM331 368c-21 0 -38 -16 -38 -37s17 -38 38 -38s37 17 37 38s-16 37 -37 37zM192 384 +c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM192 293c21 0 37 17 37 38s-16 37 -37 37s-37 -16 -37 -37s16 -38 37 -38zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53zM53 293c21 0 38 17 38 38s-17 37 -38 37 +s-37 -16 -37 -37s16 -38 37 -38z" /> + <glyph glyph-name="ion-ios7-keypad" unicode="&#xf1a4;" horiz-adv-x="384" +d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM331 245c30 0 53 -23 53 -53 +s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53s-53 23 -53 53s23 53 53 53zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54z +M192 384c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53z" /> + <glyph glyph-name="ion-ios7-lightbulb-outline" unicode="&#xf286;" horiz-adv-x="288" +d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-128v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141zM239 194l6 8c16 22 27 47 27 73c0 33 -16 65 -40 89s-55 36 -88 36 +s-64 -12 -88 -36s-40 -56 -40 -89c0 -26 11 -51 27 -73l19 -26v0c5 -6 9 -13 13 -21c17 -29 21 -58 21 -75h16v112l-32 64h17l31 -64v-112h32v112l31 64h17l-32 -64v-112h16c0 17 4 45 21 75c8 14 16 25 24 36c1 1 1 2 2 3zM112 -32v16h64v-16h-64zM96 0v16h96v-16h-96z +M96 32v16h96v-16h-96z" /> + <glyph glyph-name="ion-ios7-lightbulb" unicode="&#xf287;" horiz-adv-x="288" +d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-32v128l32 64h-16l-32 -64v-128h-32v128l-31 64h-17l32 -64v-128h-32v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141z +M112 -32v16h64v-16h-64zM96 0v16h96v-16h-96zM96 32v16h96v-16h-96z" /> + <glyph glyph-name="ion-ios7-location-outline" unicode="&#xf1a5;" horiz-adv-x="268" +d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v0v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM243 239c6 14 9 29 9 44c0 65 -53 117 -118 117s-118 -52 -118 -117c0 -15 3 -31 9 -45 +c0 -1 1 -1 1 -2l1 -2l107 -227l107 227l1 2c0 1 1 1 1 2v1zM134 352c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> + <glyph glyph-name="ion-ios7-location" unicode="&#xf1a6;" horiz-adv-x="268" +d="M134 416c74 0 134 -59 134 -133c0 -17 -3 -34 -9 -50l-1 -1c0 -1 -1 -3 -1 -4l-1 -1l-122 -259l-122 260c0 1 -2 3 -2 4v1v0c-6 16 -10 34 -10 50c0 74 60 133 134 133zM134 241c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> + <glyph glyph-name="ion-ios7-locked-outline" unicode="&#xf1a7;" horiz-adv-x="320" +d="M264 224h56v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-72zM72 296v-72h176v72c0 48 -40 88 -88 88s-88 -40 -88 -88zM304 0v208h-288v-208h288zM192 128c0 -15 -10 -27 -24 -31v-41c0 -4 -4 -8 -8 -8s-8 4 -8 8v41c-14 4 -24 16 -24 31 +c0 18 14 32 32 32s32 -14 32 -32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-ios7-locked" unicode="&#xf1a8;" horiz-adv-x="320" +d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM264 224h56v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32c0 -15 10 -27 24 -31v-41c0 -4 4 -8 8 -8s8 4 8 8 +v41zM248 224v72c0 48 -40 88 -88 88s-88 -40 -88 -88v-72h176z" /> + <glyph glyph-name="ion-ios7-loop-strong" unicode="&#xf32c;" horiz-adv-x="512" +d="M256 400c115 0 208 -93 208 -208c0 -14 -1 -28 -4 -42l-1 -4l-24 5l1 4c2 12 4 24 4 37c0 101 -83 184 -184 184c-66 0 -127 -36 -160 -94l-2 -3l-21 11l2 4c37 65 106 106 181 106zM416 102l2 3l21 -11l-2 -4c-37 -65 -106 -106 -181 -106c-115 0 -208 93 -208 208 +c0 14 1 28 4 42l1 4l24 -5l-1 -4c-2 -12 -4 -24 -4 -37c0 -101 83 -184 184 -184c66 0 127 36 160 94zM384 192h128l-64 -64zM0 192l64 64l64 -64h-128z" /> + <glyph glyph-name="ion-ios7-loop" unicode="&#xf32d;" horiz-adv-x="489" +d="M478 192l11 -11l-52 -53l-53 53l10 11l43 -41zM449 192v0v0c0 -7 0 -14 -1 -21l-16 1c1 7 1 14 1 21c-1 103 -85 187 -188 187c-68 0 -131 -37 -164 -96l-14 8c36 64 104 104 178 104c112 0 203 -91 204 -202v0v-2zM409 100l14 -8c-36 -64 -104 -104 -178 -104 +c-111 0 -202 90 -204 200v0v3v1v0c0 7 0 14 1 21l16 -1c-1 -7 -1 -14 -1 -21c0 -103 85 -187 188 -187c68 0 131 37 164 96zM53 256l52 -53l-11 -11l-41 41l-42 -41l-11 11z" /> + <glyph glyph-name="ion-ios7-medkit-outline" unicode="&#xf288;" horiz-adv-x="416" +d="M224 240h-32v-48v-16h-16h-48v-32h48h16v-16v-48h32v48v16h16h48v32h-48h-16v16v48zM240 256v0v-64h64v-64h-64v-64h-64v64h-64v64h64v64h64zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97 +c-11 0 -14 -8 -14 -18zM400 16v288h-384v-288h384z" /> + <glyph glyph-name="ion-ios7-medkit" unicode="&#xf289;" horiz-adv-x="416" +d="M224 176h16h48v-32h-48h-16v-16v-48h-32v48v16h-16h-48v32h48h16v16v48h32v-48v-16zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18zM304 128v64h-64v64h-64v-64h-64 +v-64h64v-64h64v64h64z" /> + <glyph glyph-name="ion-ios7-mic-off" unicode="&#xf1a9;" horiz-adv-x="280" +d="M266 -32l-258 440l14 8l258 -440zM128 95c-44 0 -79 37 -79 83v118l113 -193c-10 -5 -22 -8 -34 -8zM207 178c0 -10 -2 -19 -5 -28l-136 234c14 20 37 32 62 32c44 0 79 -38 79 -84v-154zM256 176c0 -28 -9 -54 -24 -75l-10 17c11 17 17 36 17 58v80h17v-80zM139 49v0 +v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109c17 0 34 4 48 11l9 -16c-14 -7 -30 -12 -47 -13z" /> + <glyph glyph-name="ion-ios7-mic-outline" unicode="&#xf1aa;" horiz-adv-x="256" +d="M128 416c44 0 79 -38 79 -84v-154c0 -46 -35 -84 -79 -84s-79 38 -79 84v154c0 46 35 84 79 84zM191 178v154c0 37 -28 68 -63 68s-63 -31 -63 -68v-154c0 -37 28 -68 63 -68s63 31 63 68zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63 +c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> + <glyph glyph-name="ion-ios7-mic" unicode="&#xf1ab;" horiz-adv-x="256" +d="M128 94c-44 0 -79 38 -79 84v154c0 46 35 84 79 84s79 -38 79 -84v-154c0 -46 -35 -84 -79 -84zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> + <glyph glyph-name="ion-ios7-minus-empty" unicode="&#xf1ac;" horiz-adv-x="256" +d="M256 183h-256v17h256v-17z" /> + <glyph glyph-name="ion-ios7-minus-outline" unicode="&#xf1ad;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM80 183v17h256v-17h-256z" /> + <glyph glyph-name="ion-ios7-minus" unicode="&#xf1ae;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-256v-17h256z" /> + <glyph glyph-name="ion-ios7-monitor-outline" unicode="&#xf1af;" horiz-adv-x="480" +d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448z" /> + <glyph glyph-name="ion-ios7-monitor" unicode="&#xf1b0;" horiz-adv-x="480" +d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448zM32 96v224h416v-224h-416z" /> + <glyph glyph-name="ion-ios7-moon-outline" unicode="&#xf1b1;" horiz-adv-x="216" +d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5zM116 93c25 0 48 9 65 24c-65 5 -116 59 -116 125 +c0 14 2 28 6 40c-33 -16 -55 -51 -55 -90c0 -55 45 -99 100 -99z" /> + <glyph glyph-name="ion-ios7-moon" unicode="&#xf1b2;" horiz-adv-x="216" +d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5z" /> + <glyph glyph-name="ion-ios7-more-outline" unicode="&#xf1b3;" horiz-adv-x="320" +d="M160 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32 +s-32 14 -32 32s14 32 32 32zM288 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> + <glyph glyph-name="ion-ios7-more" unicode="&#xf1b4;" horiz-adv-x="320" +d="M160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> + <glyph glyph-name="ion-ios7-musical-note" unicode="&#xf1b5;" horiz-adv-x="192" +d="M192 346v-1v-65c0 -3 -3 -6 -6 -5v0l-73 13v-192c0 -33 1 -80 -51 -82c-48 -2 -62 16 -62 41c0 19 9 39 51 41c22 1 37 1 45 1v273l90 -19l2 -1c2 0 3 -1 4 -3v0v-1v0z" /> + <glyph glyph-name="ion-ios7-musical-notes" unicode="&#xf1b6;" horiz-adv-x="320" +d="M320 128c0 -34 4 -80 -49 -82c-49 -2 -62 16 -62 41c0 20 9 39 52 41c23 1 34 2 43 2v160l-191 -32v-161c0 -34 3 -81 -50 -83c-49 -2 -63 17 -63 42c0 20 9 39 52 41c23 1 35 1 44 1v237l224 35v-242z" /> + <glyph glyph-name="ion-ios7-navigate-outline" unicode="&#xf1b7;" horiz-adv-x="416" +d="M208 384c-51 0 -99 -21 -135 -57s-57 -84 -57 -135s21 -99 57 -135s84 -57 135 -57s99 21 135 57s57 84 57 135s-21 99 -57 135s-84 57 -135 57zM208 400v0c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM304 288l-96 -224v128h-128z" /> + <glyph glyph-name="ion-ios7-navigate" unicode="&#xf1b8;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64l96 224l-224 -96h128v-128z" /> + <glyph glyph-name="ion-ios7-paper-outline" unicode="&#xf32e;" horiz-adv-x="384" +d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-16h-16v-289c0 -8 7 -15 15 -15h322c8 0 15 7 15 15v337h-304v-320h-16v320v16zM96 320v16h128v-16h-128zM96 240v16h240v-16h-240zM96 160v16h192v-16h-192zM96 80v16h240v-16h-240z" /> + <glyph glyph-name="ion-ios7-paper" unicode="&#xf32f;" horiz-adv-x="384" +d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-288h16v288v32v16zM96 336v-16h128v16h-128zM96 176v-16h192v16h-192zM336 80v16h-240v-16h240zM336 240v16h-240v-16h240z" /> + <glyph glyph-name="ion-ios7-paperplane-outline" unicode="&#xf1b9;" horiz-adv-x="320" +d="M0 198l320 154l-146 -320l-57 115zM132 152l41 -83l115 249zM286 320l-248 -121l83 -36z" /> + <glyph glyph-name="ion-ios7-paperplane" unicode="&#xf1ba;" horiz-adv-x="320" +d="M0 198l320 154l-214 -200zM320 352l-146 -320l-52 104z" /> + <glyph glyph-name="ion-ios7-partlysunny-outline" unicode="&#xf1bb;" horiz-adv-x="384" +d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM129 153c-4 -3 -8 -7 -12 -12c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 40 -10 53 -25c-4 -2 -9 -4 -14 -8 +c-10 11 -23 17 -39 17c-30 0 -55 -25 -55 -55c0 -23 15 -43 35 -51zM235 208c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14 +c-3 14 -11 26 -22 35s-25 14 -39 14zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> + <glyph glyph-name="ion-ios7-partlysunny" unicode="&#xf1bc;" horiz-adv-x="384" +d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8 +c0 43 35 78 78 78zM201 252l1 -2v0c-31 -5 -62 -43 -62 -75c0 -2 1 -5 1 -7l-1 -1h-1c-11 -6 -18 -14 -22 -26v1v-1c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 39 -9 52 -23z" /> + <glyph glyph-name="ion-ios7-pause-outline" unicode="&#xf1bd;" horiz-adv-x="256" +d="M63 336h-47v-288h47v288zM79 352v0v-320h-79v320h79zM240 336h-47v-288h47v288zM256 352v0v-320h-79v320h79z" /> + <glyph glyph-name="ion-ios7-pause" unicode="&#xf1be;" horiz-adv-x="256" +d="M0 32v320h79v-320h-79zM177 32v320h79v-320h-79z" /> + <glyph glyph-name="ion-ios7-paw-outline" unicode="&#xf330;" horiz-adv-x="416" +d="M262 238c-11 2 -20 7 -27 17c-12 16 -15 41 -11 65c6 37 27 64 54 64h6c12 -2 22 -8 30 -19c12 -16 16 -39 13 -61c-6 -37 -31 -66 -59 -66h-6zM278 368c-18 0 -34 -21 -38 -50c-3 -20 -1 -41 8 -53c5 -6 11 -10 17 -11h3c19 0 39 23 43 52c3 18 -2 37 -11 49 +c-4 5 -10 12 -19 13h-3zM412 244c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM357 162c14 0 29 13 37 32c6 15 7 31 2 44c-2 5 -5 12 -12 15c-2 1 -4 2 -7 2 +c-13 0 -28 -15 -36 -36c-9 -25 -6 -50 8 -56c2 -1 5 -1 8 -1zM7 187c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43zM22 194c8 -19 23 -32 37 -32c3 0 6 0 8 1c14 6 17 31 8 56 +c-8 21 -23 36 -36 36c-3 0 -5 -1 -7 -2c-7 -3 -10 -10 -12 -15c-5 -13 -4 -29 2 -44zM149 238c-28 0 -53 29 -59 66c-3 22 1 45 13 61c8 11 18 17 30 19h6c27 0 47 -28 53 -65c4 -24 2 -48 -10 -64c-7 -10 -17 -15 -28 -17h-5zM139 368h-4c-9 -1 -15 -8 -19 -13 +c-9 -12 -13 -31 -10 -49c4 -29 24 -52 43 -52h3c6 1 11 5 16 11c9 12 11 32 8 52c-4 29 -19 51 -37 51zM208 192c64 0 128 -71 128 -138c0 -20 -11 -36 -22 -43c-13 -8 -23 -11 -42 -11c-23 0 -29 7 -40 14c-8 5 -14 9 -24 9s-16 -4 -24 -9c-11 -7 -17 -14 -40 -14 +c-19 0 -29 3 -42 11c-11 7 -22 23 -22 43c0 67 64 138 128 138zM306 25c6 3 14 14 14 29c0 28 -14 59 -36 83c-11 12 -23 22 -36 29s-27 10 -40 10s-27 -3 -40 -10s-25 -17 -36 -29c-22 -24 -36 -55 -36 -83c0 -15 8 -26 14 -29c11 -7 18 -9 34 -9c14 0 19 3 26 8 +c2 1 4 3 6 4c9 5 18 11 32 11s23 -6 32 -11c2 -1 4 -3 6 -4c7 -5 12 -8 26 -8c16 0 23 2 34 9z" /> + <glyph glyph-name="ion-ios7-paw" unicode="&#xf331;" horiz-adv-x="416" +d="M262 238c-11 2 -20 7 -27 17c-12 16 -15 41 -11 65c6 37 27 64 54 64h6c12 -2 22 -8 30 -19c12 -16 16 -39 13 -61c-6 -37 -31 -66 -59 -66h-6zM412 244c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46 +c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM7 187c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43zM149 238c-28 0 -53 29 -59 66c-3 22 1 45 13 61c8 11 18 17 30 19h6 +c27 0 47 -28 53 -65c4 -24 2 -48 -10 -64c-7 -10 -17 -15 -28 -17h-5zM208 192c64 0 128 -71 128 -138c0 -20 -11 -36 -22 -43c-13 -8 -23 -11 -42 -11c-23 0 -29 7 -40 14c-8 5 -14 9 -24 9s-16 -4 -24 -9c-11 -7 -17 -14 -40 -14c-19 0 -29 3 -42 11c-11 7 -22 23 -22 43 +c0 67 64 138 128 138z" /> + <glyph glyph-name="ion-ios7-people-outline" unicode="&#xf1bf;" +d="M224 336v0v0zM317 113c11 -4 -11 4 0 0c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 +c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM115 84c-6 -6 9 10 0 0c-6 -6 -10 -12 -12 -20h4 +h238c-4 15 -17 27 -30 33s-28 4 -41 9s-25 9 -28 25c-2 11 -2 22 -2 33c0 2 7 7 8 9c3 5 4 11 5 17c1 5 0 12 4 15c5 4 7 7 9 13c2 8 3 12 -1 19c-3 5 0 8 1 13c3 11 4 24 2 36c-8 37 -62 45 -86 19c-12 -13 -12 -31 -9 -47c1 -6 6 -14 3 -19c-1 -3 -5 -6 -4 -10 +c2 -5 2 -11 4 -16c2 -4 4 -6 7 -8s3 -6 3 -9c1 -7 2 -17 6 -23c3 -4 8 -6 8 -11v-21c-1 -8 -2 -18 -8 -24c-7 -6 -18 -10 -27 -12c-11 -3 -23 -3 -33 -7c-8 -3 -15 -8 -21 -14zM112 126c-15 -7 9 4 0 0c-9 -5 -18 -11 -25 -19c-1 -2 -6 -11 -7 -11h-25h-55c0 20 13 34 31 40 +c6 2 27 4 30 11c2 5 0 11 0 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12l3 12c1 9 1 19 1 28c0 16 -1 34 8 48c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7 +c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-8 -1 -15 -1 -22 -5zM71 112c6 10 16 18 26 24c-9 9 -5 26 -4 37c0 2 0 5 2 5h8c6 0 11 1 17 2c-7 23 0 47 -5 70c-3 16 -15 23 -31 23c-17 0 -27 -9 -30 -25c-4 -22 3 -46 -4 -68c9 -1 17 -2 26 -2c1 0 1 -28 1 -29 +c-1 -12 -8 -18 -19 -22c-12 -4 -29 -3 -36 -15h49zM368 96c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44 +c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10c18 -6 31 -20 31 -40h-80zM367 123c4 -4 -5 5 0 0s8 -11 15 -11h16h28c-7 12 -26 11 -38 16c-11 4 -16 12 -17 24c0 2 -1 27 1 27c9 0 18 0 26 1 +c-7 23 1 47 -4 70c-3 15 -15 23 -30 23c-17 0 -28 -8 -31 -25c-4 -23 2 -46 -5 -68c6 -2 12 -2 18 -2s8 1 9 -5c1 -11 5 -28 -4 -37c6 -4 11 -8 16 -13z" /> + <glyph glyph-name="ion-ios7-people" unicode="&#xf1c0;" +d="M317 113c11 -4 -11 4 0 0v0zM317 113c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 +c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM111 126h2h-1h-1zM111 126c-9 -5 -17 -11 -24 -19 +c-1 -2 -6 -11 -7 -11h-25h-55c0 20 12 34 30 40c6 2 27 4 30 11c2 5 1 11 1 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12c1 4 2 7 3 11c1 9 1 19 1 28c0 16 -1 35 8 49c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3 +c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-7 -1 -14 -2 -21 -5c2 1 2 2 -1 0c-8 -4 -4 -2 -1 0zM417 136c18 -6 31 -20 31 -40h-80c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6 +s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10z" /> + <glyph glyph-name="ion-ios7-person-outline" unicode="&#xf1c1;" horiz-adv-x="320" +d="M106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 +c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4 +c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8 +s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> + <glyph glyph-name="ion-ios7-person" unicode="&#xf1c2;" horiz-adv-x="320" +d="M267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 +c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> + <glyph glyph-name="ion-ios7-personadd-outline" unicode="&#xf1c3;" horiz-adv-x="320" +d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 +s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3 +c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38 +v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> + <glyph glyph-name="ion-ios7-personadd" unicode="&#xf1c4;" horiz-adv-x="320" +d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 +s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> + <glyph glyph-name="ion-ios7-photos-outline" unicode="&#xf1c5;" +d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-352v-288h32v-16h-48v320z" /> + <glyph glyph-name="ion-ios7-photos" unicode="&#xf1c6;" +d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" /> + <glyph glyph-name="ion-ios7-pie-outline" unicode="&#xf28a;" +d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM49 160c2 -20 6 -40 14 -59c7 -16 15 -30 26 -44 +c5 -6 10 -12 15 -17c12 -12 24 -22 38 -30c7 -4 15 -8 23 -11c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-3 8 -8 15 -12 22c-8 14 -17 27 -29 39c-5 5 -11 10 -17 15c-14 11 -28 19 -44 26c-19 8 -39 12 -59 14v-191 +v-16h-16h-191zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16h-207c0 5 -1 11 -1 16zM16 208h192v192c-26 0 -51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75z" /> + <glyph glyph-name="ion-ios7-pie" unicode="&#xf28b;" +d="M32 176h208v208c5 0 11 -1 16 -1c17 -1 33 -4 49 -9c24 -8 46 -21 65 -36c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78c-15 19 -28 41 -36 65c-5 16 -8 32 -9 49c0 5 -1 11 -1 16zM0 208c0 115 93 208 208 208c5 0 11 -1 16 -1v-207v-16h-16 +h-207c0 5 -1 11 -1 16z" /> + <glyph glyph-name="ion-ios7-play-outline" unicode="&#xf1c7;" horiz-adv-x="256" +d="M16 323v-262l210 131zM0 352v0l256 -160l-256 -160v320z" /> + <glyph glyph-name="ion-ios7-play" unicode="&#xf1c8;" horiz-adv-x="256" +d="M0 352v0l256 -160l-256 -160v320z" /> + <glyph glyph-name="ion-ios7-plus-empty" unicode="&#xf1c9;" horiz-adv-x="256" +d="M256 183h-120v-119h-17v119h-119v17h119v120h17v-120h120v-17z" /> + <glyph glyph-name="ion-ios7-plus-outline" unicode="&#xf1ca;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM216 320v-120h120v-17h-120v-119h-17v119h-119v17h119v120h17z" /> + <glyph glyph-name="ion-ios7-plus" unicode="&#xf1cb;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-120v120h-17v-120h-119v-17h119v-119h17v119h120z" /> + <glyph glyph-name="ion-ios7-pricetag-outline" unicode="&#xf28c;" horiz-adv-x="384" +d="M143 368h-111c-9 0 -16 -7 -16 -16v-108c0 -6 3 -12 7 -16l213 -207h1v-1c3 -3 7 -4 11 -4s8 1 11 4l104 105c3 3 5 7 5 11s-2 8 -5 11v1v0l-204 213c-4 4 -10 7 -16 7zM143 384v0c10 0 20 -4 28 -12l204 -213c6 -6 9 -15 9 -23s-3 -16 -9 -22l-105 -105 +c-6 -6 -14 -9 -22 -9s-17 3 -23 9l-214 207c-7 7 -11 17 -11 28v108c0 18 14 32 32 32h111zM96 320c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM96 336v0c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" /> + <glyph glyph-name="ion-ios7-pricetag" unicode="&#xf28d;" horiz-adv-x="384" +d="M64 288c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM375 159c6 -6 9 -14 9 -23s-3 -16 -9 -22l-105 -105c-6 -6 -13 -9 -22 -9s-17 3 -23 9l-214 207c-8 8 -11 17 -11 28v108c0 9 3 17 9 23s14 9 23 9h111c11 0 20 -4 28 -12zM96 240 +c13 0 25 5 34 14s14 21 14 34s-5 25 -14 34s-21 14 -34 14s-25 -5 -34 -14s-14 -21 -14 -34s5 -25 14 -34s21 -14 34 -14z" /> + <glyph glyph-name="ion-ios7-pricetags-outline" unicode="&#xf332;" +d="M416 384h32v-144l-240 -272l-25 24l-23 -24l-160 160l256 288h160v-32zM160 -9l12 12l11 12l217 248v105v16v16h-137l-241 -272zM432 247v121h-16v-112l-221 -253l13 -12zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336 +c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> + <glyph glyph-name="ion-ios7-pricetags" unicode="&#xf333;" +d="M432 384h16v-144l-240 -272l-13 13l237 266v137zM256 416h160v-32v-16v-112l-221 -253l-12 -11l-23 -24l-160 160zM320 288c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" /> + <glyph glyph-name="ion-ios7-printer-outline" unicode="&#xf1cc;" horiz-adv-x="416" +d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-48v-114h-256v114h-48c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 368v-32h256v32h-256zM320 16v192h-224v-192h224zM400 146v159c0 9 -7 15 -16 15v0h-352c-9 0 -16 -6 -16 -15v-159 +c0 -9 7 -16 16 -16h48v94h256v-94h48c9 0 16 7 16 16z" /> + <glyph glyph-name="ion-ios7-printer" unicode="&#xf1cd;" horiz-adv-x="416" +d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-32v126h-288v-126h-32c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 0v224h256v-224h-256z" /> + <glyph glyph-name="ion-ios7-pulse-strong" unicode="&#xf334;" horiz-adv-x="480" +d="M432 175c27 0 48 -20 48 -47s-21 -49 -48 -49c-21 0 -38 13 -45 31h-51c-7 0 -13 4 -15 11l-16 47l-50 -173c-2 -7 -8 -11 -15 -11h-1c-7 0 -14 5 -15 12l-51 308l-45 -182c-2 -7 -9 -12 -16 -12h-112v32h99l61 245c2 7 8 13 16 13s15 -7 16 -14l52 -314l45 155 +c2 7 8 11 15 11v0c7 0 13 -4 15 -11l29 -85h38c6 19 25 33 46 33z" /> + <glyph glyph-name="ion-ios7-pulse" unicode="&#xf335;" +d="M416 160c18 0 32 -14 32 -32s-14 -32 -32 -32c-15 0 -27 10 -31 23h-65c-3 0 -7 2 -8 5l-23 72l-57 -198c-1 -3 -4 -6 -8 -6v0c-4 0 -7 3 -8 7l-58 346l-54 -220c-1 -4 -4 -6 -8 -6h-96v16h90l62 251c1 4 4 6 8 6s7 -3 8 -7l58 -349l54 190c1 3 4 5 8 5s7 -2 8 -5l30 -91 +h59c3 14 16 25 31 25z" /> + <glyph glyph-name="ion-ios7-rainy-outline" unicode="&#xf1ce;" horiz-adv-x="288" +d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 +c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1zM220 146c28 0 52 24 52 52s-24 54 -52 54h-6l-15 -2l-3 15c-3 14 -11 31 -23 40c-12 10 -26 14 -41 14 +c-36 0 -66 -31 -66 -67v-12v-10c-6 0 -12 -2 -14 -2c-20 -3 -35 -23 -35 -43c0 -10 4 -20 11 -27s16 -12 26 -12h124v0v0h42z" /> + <glyph glyph-name="ion-ios7-rainy" unicode="&#xf1cf;" horiz-adv-x="288" +d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 +c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1z" /> + <glyph glyph-name="ion-ios7-recording-outline" unicode="&#xf1d0;" horiz-adv-x="480" +d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -75 -53 -95h146c-32 20 -53 55 -53 95c0 62 49 112 110 112zM16 192c0 -53 42 -95 94 -95s93 42 93 95s-41 95 -93 95s-94 -42 -94 -95z +M370 97c52 0 94 42 94 95s-42 95 -94 95s-93 -42 -93 -95s41 -95 93 -95zM368 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM368 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM112 240c-26 0 -48 -22 -48 -48 +s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM112 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" /> + <glyph glyph-name="ion-ios7-recording" unicode="&#xf1d1;" horiz-adv-x="480" +d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -76 -53 -95h146c-32 19 -53 55 -53 95c0 62 49 112 110 112zM112 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z +M368 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM368 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM112 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" /> + <glyph glyph-name="ion-ios7-redo-outline" unicode="&#xf1d2;" horiz-adv-x="384" +d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10zM208 256c-201 0 -192 -169 -192 -169c48 81 101 105 192 105v-65l148 97l-148 97v-65z" /> + <glyph glyph-name="ion-ios7-redo" unicode="&#xf1d3;" horiz-adv-x="384" +d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10z" /> + <glyph glyph-name="ion-ios7-refresh-empty" unicode="&#xf1d4;" horiz-adv-x="256" +d="M128 64c-71 0 -128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108h20c0 -71 -57 -128 -128 -128z" /> + <glyph glyph-name="ion-ios7-refresh-outline" unicode="&#xf1d5;" horiz-adv-x="416" +d="M316 192v0h20c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1 +c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-refresh" unicode="&#xf1d6;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64c71 0 128 57 128 128h-20c0 -60 -48 -108 -108 -108s-108 48 -108 108s48 108 108 108v-56l96 56l-96 64v-44c-71 0 -128 -57 -128 -128s57 -128 128 -128z" /> + <glyph glyph-name="ion-ios7-reload" unicode="&#xf28e;" horiz-adv-x="512" +d="M256 384c105.9 0 191.7 -85.7002 191.9 -191.5l55 52.5l9 -9.09961l-70.3008 -67.9004l-66.5996 67.9004l9 9.09961l51.0996 -52.4004c-0.299805 98.5 -80.5 178.601 -179.1 178.601c-98.7998 0 -179.2 -80.4004 -179.2 -179.2s80.4004 -179.2 179.2 -179.2 +c78.5996 0 145.5 51 169.5 121.601l12.4004 -3.5c-25.6006 -76.1006 -97.3008 -130.9 -181.9 -130.9c-106 0 -192 86 -192 192s86 192 192 192z" /> + <glyph glyph-name="ion-ios7-reverse-camera-outline" unicode="&#xf336;" horiz-adv-x="384" +d="M238 129l2 2l11 -12l-2 -2c-16 -14 -36 -21 -57 -21c-45 0 -82 36 -87 78h-30l38 50l39 -50h-31c5 -33 35 -62 71 -62c17 0 33 6 46 17zM252 249c16 -14 25 -37 27 -57h30l-38 -51l-39 51h31c-5 35 -35 64 -71 64c-17 0 -33 -6 -46 -17l-2 -2l-11 12l2 2 +c16 14 36 21 57 21c22 0 44 -8 60 -23zM354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-6s-4 1 -6 3s-6 8 -9 11 +c-12 13 -21 24 -27 30c-5 5 -7 4 -7 4h-88s-1 0 -6 -4c-6 -5 -15 -14 -26 -27c-3 -4 -8 -11 -11 -14s-4 -3 -6 -3h-6h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17z" /> + <glyph glyph-name="ion-ios7-reverse-camera" unicode="&#xf337;" horiz-adv-x="384" +d="M354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM249 117l2 2l-11 12l-2 -2c-13 -11 -29 -17 -46 -17c-36 0 -66 29 -71 62h31l-39 50l-38 -50h30 +c5 -42 42 -78 87 -78c21 0 41 7 57 21zM271 141l38 51h-30c-2 20 -11 43 -27 57c-16 15 -38 23 -60 23c-21 0 -41 -7 -57 -21l-2 -2l11 -12l2 2c13 11 29 17 46 17c36 0 66 -29 71 -64h-31z" /> + <glyph glyph-name="ion-ios7-rewind-outline" unicode="&#xf1d7;" +d="M432 293l-184 -101l184 -101v202zM208 292v0l-176 -100l176 -100v95v27v78zM224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> + <glyph glyph-name="ion-ios7-rewind" unicode="&#xf1d8;" +d="M224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> + <glyph glyph-name="ion-ios7-search-strong" unicode="&#xf1d9;" horiz-adv-x="384" +d="M280 150l-4 -7l108 -109l-34 -34l-108 109l-7 -5c-24 -15 -53 -25 -83 -25c-84 0 -152 69 -152 153s68 152 152 152s152 -68 152 -152c0 -30 -9 -58 -24 -82zM237 317c-23 23 -53 35 -85 35s-62 -12 -85 -35s-35 -53 -35 -85s12 -62 35 -85s53 -35 85 -35s62 12 85 35 +s36 53 36 85s-13 62 -36 85z" /> + <glyph glyph-name="ion-ios7-search" unicode="&#xf1da;" horiz-adv-x="384" +d="M384 23l-23 -23l-113 113c-26 -21 -60 -33 -96 -33c-84 0 -152 68 -152 152s68 152 152 152s152 -68 152 -152c0 -36 -12 -69 -33 -95zM56 135c26 -26 60 -39 96 -39s70 14 96 40s40 60 40 96s-14 70 -40 96s-60 40 -96 40s-70 -14 -96 -40s-40 -60 -40 -96 +s14 -71 40 -97z" /> + <glyph glyph-name="ion-ios7-settings-strong" unicode="&#xf338;" +d="M0 72h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283zM0 208h91c6 14 21 24 37 24s31 -10 37 -24h283v-32h-283c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-91zM0 344h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91 +c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283z" /> + <glyph glyph-name="ion-ios7-settings" unicode="&#xf339;" +d="M320 344c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 360v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM320 72c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 88v0c18 0 32 -14 32 -32s-14 -32 -32 -32 +s-32 14 -32 32s14 32 32 32zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM175 200h273v-16h-273c0 3 1 5 1 8s-1 5 -1 8zM80 192c0 -3 1 -5 1 -8h-81v16h81 +c0 -3 -1 -5 -1 -8zM367 64h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM272 56c0 -3 1 -5 1 -8h-273v16h273c0 -3 -1 -5 -1 -8zM367 336h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM273 336c0 -3 -1 -5 -1 -8s1 -5 1 -8h-273v16h273z" /> + <glyph glyph-name="ion-ios7-shrink" unicode="&#xf30e;" horiz-adv-x="364" +d="M364 18l-8 -8l-92 92l-50 -50v108h108l-50 -50zM0 366l8 8l92 -92l50 50v-108h-108l50 50z" /> + <glyph glyph-name="ion-ios7-skipbackward-outline" unicode="&#xf1db;" horiz-adv-x="320" +d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320zM80 192l7 -4l217 -128v264v0l-217 -128zM16 336v-288h47v126v8v28v126h-47z" /> + <glyph glyph-name="ion-ios7-skipbackward" unicode="&#xf1dc;" horiz-adv-x="320" +d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320z" /> + <glyph glyph-name="ion-ios7-skipforward-outline" unicode="&#xf1dd;" horiz-adv-x="320" +d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142zM233 188l7 4l-7 4l-217 128v0v-264zM304 48v288h-47v-126v-28v-8v-126h47z" /> + <glyph glyph-name="ion-ios7-skipforward" unicode="&#xf1de;" horiz-adv-x="320" +d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142z" /> + <glyph glyph-name="ion-ios7-snowy" unicode="&#xf309;" horiz-adv-x="256" +d="M252 131c4 -2 5 -7 3 -11s-7 -5 -11 -3l-29 17c-2 -8 -2 -16 0 -24c1 -4 -3 -9 -7 -10s-8 2 -9 6c-2 12 -3 24 1 36l-64 36v-73c11 -3 22 -8 31 -16c3 -3 4 -8 1 -11s-8 -4 -11 -1c-6 5 -13 10 -21 12v-33c0 -4 -4 -8 -8 -8s-8 4 -8 8v33c-8 -2 -15 -7 -21 -12 +c-3 -3 -8 -2 -11 1s-3 8 0 11c9 8 20 13 32 16v73l-65 -36c4 -12 4 -23 2 -35c-1 -4 -5 -8 -9 -7s-8 6 -7 10c2 8 2 16 0 24l-29 -17c-4 -2 -9 -1 -11 3s-1 9 3 11l29 16c-6 6 -13 10 -21 13c-4 1 -6 6 -5 10c2 4 6 6 10 5c12 -4 22 -11 30 -19l65 36l-65 37 +c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5 7 -3 11s7 5 11 3l29 -16c2 8 2 15 0 23c-1 4 3 9 7 10s8 -2 9 -6c2 -12 1 -25 -2 -36l65 -36v73c-12 3 -23 8 -32 16c-3 3 -3 8 0 11s8 4 11 1c6 -5 13 -10 21 -12v33c0 4 4 8 8 8 +s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5 +c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" /> + <glyph glyph-name="ion-ios7-speedometer-outline" unicode="&#xf28f;" +d="M448 163v0v0c0 -63 -27 -120 -70 -160l-2 -3l-37 37l11 11l26 -25c16 17 28 36 38 57c10 23 17 47 18 72h-32v16h32c-1 26 -6 51 -16 75c-9 22 -22 42 -38 59l-28 -28l-6 6l-5 5v0h-1l28 28c-18 17 -38 30 -61 40s-48 14 -73 15v-37h-16v37c-25 -1 -50 -5 -73 -15 +s-43 -23 -61 -40l27 -28v0v0l-5 -5l-6 -6l-28 28c-16 -17 -29 -37 -38 -59c-10 -24 -15 -49 -16 -75h32v-16h-32c1 -25 8 -49 18 -72c9 -21 22 -40 38 -57l25 25l12 -11l-37 -37v1c-44 40 -72 97 -72 161v1v0c0 122 100 221 224 221v0v0h1c124 0 223 -99 223 -221zM208 193 +l110 68l10 -11l-82 -94l-1 -1c-5 -6 -13 -10 -21 -10c-15 0 -27 11 -27 26c0 8 4 15 9 20z" /> + <glyph glyph-name="ion-ios7-speedometer" unicode="&#xf290;" +d="M224 384c124 0 224 -99 224 -221c0 -64 -28 -122 -72 -163h-304c-44 41 -72 99 -72 163c0 122 100 221 224 221zM246 156l82 94l-10 11l-110 -68l-2 -2c-5 -5 -9 -12 -9 -20c0 -15 12 -26 27 -26c8 0 16 4 21 10zM372 18c35 35 60 87 60 145v0v1c0 84 -52 157 -125 188 +c-25 11 -54 16 -83 16v0v0v0c-29 0 -57 -5 -82 -16c-72 -30 -126 -104 -126 -188v0v-1c0 -50 21 -109 62 -146l1 -1l15 15l19 19l-11 10l-23 -23c-15 16 -23 31 -32 50c-10 21 -15 43 -16 67h29v15h-29c0 23 5 47 15 69c9 20 20 38 35 54l26 -26l5 5l5 5v0v0l-25 26 +c17 16 36 28 57 37c22 9 44 13 68 14v-35h14v35c24 -1 46 -5 68 -14c21 -9 40 -21 57 -37l-26 -26h1v0l5 -5l5 -5l26 26c15 -16 26 -34 35 -54c10 -22 14 -46 15 -69h-29v-15h29c-1 -24 -6 -46 -16 -67c-9 -19 -17 -34 -32 -50l-23 24l-11 -11l19 -19l15 -15z" /> + <glyph glyph-name="ion-ios7-star-half" unicode="&#xf33a;" +d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" /> + <glyph glyph-name="ion-ios7-star-outline" unicode="&#xf1df;" +d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171zM331 27l-43 122l108 75h-131l-41 123l-41 -123h-131l108 -75l-43 -122l107 76z" /> + <glyph glyph-name="ion-ios7-star" unicode="&#xf1e0;" +d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171z" /> + <glyph glyph-name="ion-ios7-stopwatch-outline" unicode="&#xf1e1;" horiz-adv-x="384" +d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM192 2 +c96 0 173 77 173 171s-77 171 -173 171c-95 0 -173 -77 -173 -171s77 -171 173 -171zM200 191c14 -4 24 -17 24 -31c0 -15 -10 -26 -24 -30l-8 -18v0l-8 18c-14 4 -24 15 -24 30c0 14 12 27 24 31v129h16v-129z" /> + <glyph glyph-name="ion-ios7-stopwatch" unicode="&#xf1e2;" horiz-adv-x="384" +d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM200 130 +c14 4 24 15 24 30c0 14 -10 27 -24 31v129h-16v-129c-12 -4 -24 -17 -24 -31c0 -15 10 -26 24 -30l8 -18z" /> + <glyph glyph-name="ion-ios7-sunny-outline" unicode="&#xf1e3;" horiz-adv-x="320" +d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 +s76 -34 76 -76s-34 -76 -76 -76zM160 251c-32 0 -59 -27 -59 -59s27 -59 59 -59s59 27 59 59s-27 59 -59 59z" /> + <glyph glyph-name="ion-ios7-sunny" unicode="&#xf1e4;" horiz-adv-x="320" +d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 +s76 -34 76 -76s-34 -76 -76 -76z" /> + <glyph glyph-name="ion-ios7-telephone-outline" unicode="&#xf1e5;" horiz-adv-x="352" +d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 +c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44zM324 57c19 22 13 31 1 43c-13 14 -50 39 -72 39c-3 0 -6 -1 -8 -2 +c-19 -12 -28 -18 -37 -18s-15 6 -23 13h-1c-19 16 -23 21 -30 29l-2 2c-1 1 -3 2 -4 3c-6 6 -11 12 -27 30v1c-10 11 -17 18 -18 28s5 20 16 34c15 20 -5 48 -31 79l-1 1c-7 8 -14 12 -22 12c-10 0 -18 -6 -23 -9c-1 0 -2 -1 -2 -1c-11 -7 -18 -16 -21 -24 +c-5 -16 -7 -35 17 -79c23 -42 43 -70 76 -104c31 -32 45 -42 76 -64c32 -23 64 -38 84 -38c21 0 32 1 52 25z" /> + <glyph glyph-name="ion-ios7-telephone" unicode="&#xf1e6;" horiz-adv-x="352" +d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 +c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44z" /> + <glyph glyph-name="ion-ios7-tennisball-outline" unicode="&#xf33b;" +d="M378 355c43 -41 70 -99 70 -163s-27 -122 -70 -163c-4 -4 -8 -8 -12 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c-4 3 -8 7 -12 11c-42 41 -68 98 -68 161s26 120 68 161c4 4 8 8 12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c4 -3 8 -7 12 -11zM77 45l3 -3 +l3 3c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-3 3l-3 -3c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66zM305 0c17 7 33 17 48 29c-43 41 -70 99 -70 163s27 122 70 163c-15 12 -31 22 -48 29 +c-26 11 -53 16 -81 16s-55 -5 -81 -16c-19 -8 -36 -18 -51 -31c42 -41 68 -98 68 -161s-26 -120 -68 -161c15 -13 32 -23 51 -31c26 -11 53 -16 81 -16s55 5 81 16zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66l-5 5c-2 -2 -4 -3 -6 -5 +c-19 -19 -35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66c2 -2 4 -3 6 -5z" /> + <glyph glyph-name="ion-ios7-tennisball" unicode="&#xf33c;" +d="M283 192c0 -64 27 -122 70 -163c4 -4 9 -8 13 -11c-39 -31 -88 -50 -142 -50c-55 0 -105 19 -144 52c4 3 8 7 12 11c42 41 68 98 68 161s-26 120 -68 161c-4 4 -8 8 -12 11c39 33 89 52 144 52c54 0 103 -19 142 -50c-4 -3 -9 -7 -13 -11c-43 -41 -70 -99 -70 -163z +M448 192c0 -64 -27 -122 -70 -163c-4 3 -8 7 -12 11c-2 2 -4 3 -6 5c-19 19 -35 41 -45 66c-11 26 -16 53 -16 81s5 55 16 81c10 25 26 47 45 66c2 2 4 3 6 5c4 4 8 8 12 11c43 -41 70 -99 70 -163zM83 45l-3 -3c-4 -4 -8 -8 -12 -11c-42 41 -68 98 -68 161s26 120 68 161 +c4 -3 8 -7 12 -11l3 -3c19 -19 35 -41 45 -66c11 -26 16 -53 16 -81s-5 -55 -16 -81c-10 -25 -26 -47 -45 -66zM68 353v0v0v0zM80 20v0v0v0zM68 31v0v0zM80 364v0v0zM378 29v0v0v0zM366 18v0v0zM378 355v0v0zM366 366v0v0v0z" /> + <glyph glyph-name="ion-ios7-thunderstorm-outline" unicode="&#xf1e7;" horiz-adv-x="274" +d="M193 176l-88 -128l29 96h-52l15 80h72l-16 -48h40zM209 275c36 0 65 -29 65 -65s-29 -66 -65 -66h-8v17h8c27 0 49 22 49 49s-22 50 -49 50h-6l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 13 -39 13c-34 0 -63 -27 -63 -62v-12s1 -9 1 -9c-5 0 -12 -2 -14 -2 +c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h11v-17h-11c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78c37 0 68 -26 76 -61h8z" /> + <glyph glyph-name="ion-ios7-thunderstorm" unicode="&#xf1e8;" horiz-adv-x="274" +d="M153 176h40l-22 -32l-66 -96l29 96h-52l15 80h72zM84 240h107l-16 -48h18h30l-33 -48h19c36 0 65 30 65 66s-29 65 -65 65h-8c-8 35 -39 61 -76 61c-43 0 -78 -35 -78 -78v-8c-26 -2 -47 -26 -47 -53c0 -29 24 -53 52 -53h14z" /> + <glyph glyph-name="ion-ios7-time-outline" unicode="&#xf291;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45 +s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45zM216 368c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM216 16c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM392 192 +c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM40 192c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8 +zM64 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM64 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8 +s-8 3 -8 8zM238 200c4 -8 2 -18 -6 -22v-122c0 -4 -4 -8 -8 -8s-8 4 -8 8v122c-2 1 -4 4 -6 6c-3 5 -3 11 0 16l-37 63c-2 4 -1 9 3 11s8 1 10 -3l38 -63c5 0 11 -3 14 -8z" /> + <glyph glyph-name="ion-ios7-time" unicode="&#xf292;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 376c-4 0 -8 -4 -8 -8s4 -8 8 -8s8 4 8 8s-4 8 -8 8zM48 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM76 97c4 2 4 7 2 11s-6 5 -10 3s-5 -7 -3 -11s7 -5 11 -3z +M78 276c2 4 2 9 -2 11s-9 1 -11 -3s-1 -9 3 -11s8 -1 10 3zM132 351c-4 -2 -5 -7 -3 -11s7 -4 11 -2s5 6 3 10s-7 5 -11 3zM143 36c2 4 1 8 -3 10s-9 2 -11 -2s-1 -9 3 -11s9 -1 11 3zM224 8c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM232 178c8 4 10 14 6 22 +c-3 5 -9 8 -14 8l-38 64c-2 4 -7 4 -11 2s-4 -7 -2 -11l37 -63c-3 -5 -3 -11 0 -16c2 -2 4 -5 6 -6v-122c0 -4 4 -8 8 -8s8 4 8 8v122zM316 33c4 2 5 7 3 11s-7 4 -11 2s-5 -6 -3 -10s7 -5 11 -3zM319 340c2 4 1 9 -3 11s-9 1 -11 -3s-1 -8 3 -10s9 -2 11 2zM383 100 +c2 4 1 9 -3 11s-8 1 -10 -3s-2 -9 2 -11s9 -1 11 3zM380 273c4 2 5 7 3 11s-7 5 -11 3s-4 -7 -2 -11s6 -5 10 -3zM400 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8z" /> + <glyph glyph-name="ion-ios7-timer-outline" unicode="&#xf1e9;" horiz-adv-x="416" +d="M189 176l-1 2s-89 118 -86 120s121 -85 121 -85c1 -1 1 -2 2 -3c5 -5 8 -11 8 -18c0 -14 -11 -25 -25 -25c-8 0 -14 3 -19 9zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208c0 57 23 109 61 147l12 -12c-35 -35 -56 -82 -56 -135 +c0 -106 85 -191 191 -191s191 85 191 191c0 100 -77 183 -175 191v-95h-16v112v0v0z" /> + <glyph glyph-name="ion-ios7-timer" unicode="&#xf1ea;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM102 298c-2 -2 86 -120 86 -120l1 -1c5 -6 11 -10 19 -10c14 0 25 11 25 25c0 7 -3 13 -8 18l-3 3c0 0 -117 87 -120 85zM208 1c106 0 192 85 192 191s-86 192 -192 192v-96h16v78 +c88 -9 158 -84 158 -174c0 -96 -78 -174 -174 -174s-175 78 -175 174c0 48 19 92 51 124l-11 12c-35 -35 -56 -83 -56 -136c0 -106 85 -191 191 -191z" /> + <glyph glyph-name="ion-ios7-toggle-outline" unicode="&#xf33d;" +d="M96 128c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM96 144v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM351 160v0h-255c-44 0 -80 -36 -80 -80s36 -80 80 -80h256c44 0 80 36 80 80s-37 80 -81 80zM352 176v0 +c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM352 352c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM352 368v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM97 384v0c-44 0 -81 -36 -81 -80 +s36 -80 80 -80h256c44 0 80 36 80 80s-36 80 -80 80h-255zM96 400v0h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96z" /> + <glyph glyph-name="ion-ios7-toggle" unicode="&#xf33e;" +d="M96 128c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM352 176c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM96 16c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM352 256c-26 0 -48 22 -48 48 +s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM96 208c-53 0 -96 43 -96 96s43 96 96 96h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256zM352 368c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64z" /> + <glyph glyph-name="ion-ios7-trash-outline" unicode="&#xf1eb;" horiz-adv-x="288" +d="M288 335v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20h80zM95 355v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM230 30l23 290h-217l23 -290v0v-1c0 -8 7 -14 15 -14 +h141c8 0 15 6 15 14v1v0zM137 47v241h14v-241h-14zM208 288l-11 -241h-14l10 241h15zM94 288l11 -241h-14l-11 241h14z" /> + <glyph glyph-name="ion-ios7-trash" unicode="&#xf1ec;" horiz-adv-x="288" +d="M208 335h80v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20zM95 355v0v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM91 47h14l-11 241h-14zM151 47v241h-14v-241h14z +M197 47l11 241h-14l-11 -241h14z" /> + <glyph glyph-name="ion-ios7-undo-outline" unicode="&#xf1ed;" horiz-adv-x="384" +d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136zM368 87c0 0 9 169 -192 169v65l-148 -97l148 -97v65c91 0 144 -24 192 -105z" /> + <glyph glyph-name="ion-ios7-undo" unicode="&#xf1ee;" horiz-adv-x="384" +d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136z" /> + <glyph glyph-name="ion-ios7-unlocked-outline" unicode="&#xf1ef;" horiz-adv-x="320" +d="M72 224h248v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-8h-16v8c0 48 -40 88 -88 88s-88 -40 -88 -88v-72zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-41c0 -4 -4 -8 -8 -8s-8 4 -8 8v41c-14 4 -24 16 -24 31 +c0 18 14 32 32 32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-ios7-unlocked" unicode="&#xf1f0;" horiz-adv-x="320" +d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM72 224h248v-240h-320v240h56v72c0 57 46 104 104 104c57 0 104 -47 104 -104v-8h-16v8c0 48 -40 88 -88 88s-88 -40 -88 -88v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32 +c0 -15 10 -27 24 -31v-41c0 -4 4 -8 8 -8s8 4 8 8v41z" /> + <glyph glyph-name="ion-ios7-upload-outline" unicode="&#xf1f1;" horiz-adv-x="320" +d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 330l-11 12l74 74l74 -74l-11 -12l-55 55v-243h-16v243z" /> + <glyph glyph-name="ion-ios7-upload" unicode="&#xf1f2;" horiz-adv-x="320" +d="M168 304h152v-304h-320v304h152v-162h16v162zM168 385v-81h-16v81l-55 -55l-11 12l74 74l74 -74l-11 -12z" /> + <glyph glyph-name="ion-ios7-videocam-outline" unicode="&#xf1f3;" horiz-adv-x="418" +d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM273 99v188c0 9 -8 16 -17 16h-221c-9 0 -18 -7 -18 -16v-188c0 -9 10 -18 19 -18h221c9 0 16 9 16 18zM320 235l98 53v-192l-98 53v86zM401 258v0l-64 -33 +v-66l64 -33v132z" /> + <glyph glyph-name="ion-ios7-videocam" unicode="&#xf1f4;" horiz-adv-x="418" +d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM320 235l98 53v-192l-98 53v86z" /> + <glyph glyph-name="ion-ios7-volume-high" unicode="&#xf1f5;" horiz-adv-x="320" +d="M278 320c26 -36 42 -80 42 -128s-16 -92 -42 -128l-14 10c24 33 39 74 39 118s-15 85 -39 118zM224 96l-14 10c18 24 29 54 29 86s-11 62 -29 86l14 10c20 -27 32 -60 32 -96s-12 -69 -32 -96zM177 128l-13 10c12 15 18 34 18 54s-6 39 -18 54l13 10 +c14 -18 22 -40 22 -64s-8 -46 -22 -64zM58 232l70 56v-192l-70 56h-58v80h58z" /> + <glyph glyph-name="ion-ios7-volume-low" unicode="&#xf1f6;" horiz-adv-x="128" +d="M58 232l70 56v-192l-70 56h-58v80h58z" /> + <glyph glyph-name="ion-ios7-wineglass-outline" unicode="&#xf293;" horiz-adv-x="224" +d="M129 179c-5 -3 -9 -14 -9 -19v-160h71v-16h-160v16h73v160c0 4 -6 16 -11 19c-9 6 -22 15 -43 30c-18 13 -50 36 -50 97c0 49 29 94 29 94h166s29 -44 29 -93c0 -61 -31 -85 -50 -98c-21 -15 -35 -23 -45 -30zM40 384c-7 -13 -24 -45 -24 -78v-2h192v3 +c0 33 -17 77 -24 77h-144zM112 192c7 0 13 2 18 6c9 6 20 13 35 24c14 10 37 26 42 66h-190c2 -15 7 -28 14 -39c9 -13 20 -22 28 -27c17 -12 29 -21 37 -26c5 -3 10 -4 16 -4z" /> + <glyph glyph-name="ion-ios7-wineglass" unicode="&#xf294;" horiz-adv-x="224" +d="M129 179c-5 -3 -9 -14 -9 -19v-160h71v-16h-160v16h73v160c0 4 -6 16 -11 19c-9 6 -22 15 -43 30c-18 13 -50 36 -50 97c0 49 29 94 29 94h166s29 -44 29 -93c0 -61 -31 -85 -50 -98c-21 -15 -35 -23 -45 -30zM40 384c-7 -13 -24 -45 -24 -78v-2h192v3 +c0 33 -17 77 -24 77h-144z" /> + <glyph glyph-name="ion-ios7-world-outline" unicode="&#xf1f7;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM216 276v-76h75c-1 31 -5 60 -11 84c-21 -5 -42 -7 -64 -8zM216 292c20 1 41 3 60 8c-14 46 -38 76 -60 82v-90zM200 382c-23 -6 -45 -36 -60 -82 +c19 -5 39 -7 60 -8v90zM200 276c-22 1 -44 3 -65 8c-6 -24 -10 -53 -11 -84h76v76zM108 200c1 32 4 62 11 88c-21 6 -41 15 -59 25c-26 -31 -41 -70 -43 -113h91zM108 184h-91c2 -43 17 -82 43 -113c19 10 38 19 59 25c-7 26 -10 56 -11 88zM124 184c1 -31 5 -60 11 -84 +c21 5 43 8 65 9v75h-76zM200 92c-21 -1 -41 -3 -60 -8c15 -46 37 -76 60 -82v90zM216 2c22 6 46 36 60 82c-19 5 -40 7 -60 8v-90zM216 109c22 -1 43 -4 64 -9c6 24 10 53 11 84h-75v-75zM308 184c-1 -32 -5 -62 -12 -88c21 -6 41 -15 60 -25c26 31 41 70 43 113h-91z +M308 200v0h91c-2 43 -17 82 -43 113c-19 -10 -38 -19 -59 -25c7 -26 10 -56 11 -88zM344 326c-25 25 -56 44 -91 52c16 -17 29 -43 39 -74c18 6 35 13 52 22zM163 378c-35 -8 -67 -27 -91 -52c16 -9 34 -15 52 -21c10 31 23 56 39 73zM72 58c25 -25 56 -44 91 -52 +c-16 17 -30 43 -40 74c-18 -6 -35 -13 -51 -22zM253 6c35 8 66 27 91 52c-17 9 -34 16 -52 22c-10 -31 -23 -57 -39 -74z" /> + <glyph glyph-name="ion-ios7-world" unicode="&#xf1f8;" horiz-adv-x="416" +d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM208 1c106 0 191 85 191 191s-85 191 -191 191v0v0v0c-106 0 -191 -85 -191 -191s86 -191 191 -191v0v0v0zM274 276c6 -22 9 -48 10 -76h-68v68c20 1 39 4 58 8 +zM216 366c20 -6 41 -34 54 -75c-17 -4 -36 -6 -54 -7v82zM145 291c13 42 35 69 55 75v-82c-19 1 -37 3 -55 7zM333 315c-15 -8 -31 -15 -48 -20c-9 29 -21 52 -36 67c32 -8 61 -24 84 -47zM299 200c-1 29 -4 56 -10 80c19 6 37 14 54 23c23 -28 38 -64 40 -103h-84zM132 200 +c1 28 3 54 9 76c19 -5 39 -7 59 -8v-68h-68zM284 184c-1 -28 -4 -54 -10 -76c-19 5 -38 7 -58 8v68h68zM141 108c-6 22 -8 48 -9 76h68v-68c-20 -1 -40 -3 -59 -8zM200 18c-20 6 -42 33 -55 75c18 4 36 6 55 7v-82zM249 22c15 15 27 38 36 67c17 -5 33 -11 48 -19 +c-23 -23 -52 -40 -84 -48zM167 362c-15 -15 -27 -39 -36 -67c-16 5 -33 11 -48 19c22 23 52 40 84 48zM289 104c6 24 9 51 10 80h84c-2 -39 -17 -75 -40 -103c-17 9 -35 17 -54 23zM216 100c18 -1 37 -3 54 -7c-13 -42 -34 -69 -54 -75v82zM127 280c-6 -24 -11 -51 -11 -80 +h-83c2 39 17 75 40 103c17 -9 35 -17 54 -23zM116 184c1 -29 4 -56 10 -80c-19 -6 -36 -14 -53 -23c-23 28 -38 64 -40 103h83zM83 70c15 8 32 14 48 19c9 -28 21 -52 36 -67c-32 8 -62 25 -84 48z" /> + <glyph glyph-name="ion-ipad" unicode="&#xf1f9;" horiz-adv-x="288" +d="M0 375c0 5 4 9 9 9h270c5 0 9 -4 9 -9v-366c0 -5 -4 -9 -9 -9h-270c-5 0 -9 4 -9 9v366zM144 10c8 0 14 6 14 14s-7 14 -14 14c-8 0 -14 -6 -14 -14s6 -14 14 -14zM32 329v-275c0 -4 3 -6 6 -6h211c3 0 7 2 7 6v275c0 4 -4 7 -7 7h-211c-3 0 -6 -3 -6 -7z" /> + <glyph glyph-name="ion-iphone" unicode="&#xf1fa;" horiz-adv-x="192" +d="M168 384c13 0 24 -11 24 -24v-336c0 -13 -11 -24 -24 -24h-144c-13 0 -24 11 -24 24v336c0 13 11 24 24 24h144zM80 348v0c0 -2 2 -4 4 -4h24c2 0 4 2 4 4v0c0 2 -2 4 -4 4h-24c-2 0 -4 -2 -4 -4zM68 352c-2 0 -4 -2 -4 -4s2 -4 4 -4s4 2 4 4s-2 4 -4 4zM96 16 +c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM176 64v256h-160v-256h160z" /> + <glyph glyph-name="ion-ipod" unicode="&#xf1fb;" horiz-adv-x="224" +d="M112 137c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM196 384c15 0 28 -12 28 -28v-328c0 -16 -13 -28 -28 -28h-168c-15 0 -28 12 -28 28v328c0 16 13 28 28 28h168zM112 32c40 0 72 32 72 72s-32 72 -72 72s-72 -32 -72 -72s32 -72 72 -72z +M192 221v118c-1 7 -6 12 -12 13h-136c-7 -1 -12 -7 -12 -15v-114c0 -8 6 -15 14 -15h131c8 0 14 5 15 13z" /> + <glyph glyph-name="ion-jet" unicode="&#xf295;" horiz-adv-x="326" +d="M222 80l-2 -13l53 -58l-18 -27l-74 9l-18 -55l-19 55l-73 -9l-18 27l53 58l-2 13l-104 -35l3 53l114 103s26 173 28 192c5 40 18 55 18 55s13 -15 18 -55c2 -19 28 -192 28 -192l114 -103l3 -53z" /> + <glyph glyph-name="ion-key" unicode="&#xf296;" horiz-adv-x="192" +d="M144 147c28 -17 48 -48 48 -83c0 -53 -43 -96 -96 -96s-96 43 -96 96c0 36 19 67 48 84c0 0 7 16 12 41c0 4 11 6 11 12v20c0 5 -7 9 -7 11v8v8c0 2 0 4 1 6c0 1 1 1 1 2l2 1l4 4v1c2 2 3 4 3 6c0 1 1 8 1 9c0 3 -2 6 -4 8l-1 1l-4 4v0l-1 1v0c-2 2 -3 5 -3 8v7 +c0 3 2 7 4 9v0l5 5v0c2 2 4 3 4 6v24c0 3 -2 6 -4 8v1l-4 4l-1 1c-2 2 -3 5 -3 8v18c0 11 0 19 9 23c3 1 14 3 23 3c20 0 30 -8 32 -36c0 0 7 -81 9 -143s7 -90 7 -90zM96 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-knife" unicode="&#xf297;" horiz-adv-x="64" +d="M62 416c2 0 2 -1 2 -6v-412c0 -15 -10 -30 -24 -30v0v0c-14 0 -24 15 -24 30c1 19 14 83 16 130v0c1 30 -32 31 -32 70c0 134 35 191 54 214c2 2 5 4 8 4z" /> + <glyph glyph-name="ion-laptop" unicode="&#xf1fc;" horiz-adv-x="512" +d="M480 342v-262h-448v262c0 6 4 10 10 10h428c6 0 10 -4 10 -10zM448 112v208h-384v-208h384zM0 59v5h512v-5c-70 -20 -116 -27 -256 -27s-186 7 -256 27z" /> + <glyph glyph-name="ion-leaf" unicode="&#xf1fd;" horiz-adv-x="422" +d="M412 69c18 -3 10 -41 -5 -39c0 0 -21 -1 -63 12c0 0 -16 -19 -39 -30c-26 -12 -118 -33 -197 38c-108 97 -120 354 -100 333c86 -90 197 -47 270 -106c55 -44 88 -127 77 -192c0 0 5 -8 57 -16zM316 65c5 5 10 16 10 24c-161 52 -252 160 -252 160s104 -143 242 -184z +" /> + <glyph glyph-name="ion-levels" unicode="&#xf298;" horiz-adv-x="350" +d="M46 349c11 -5 18 -16 18 -29s-7 -24 -18 -29v-275c0 -9 -7 -16 -16 -16s-16 7 -16 16v278c-8 6 -14 15 -14 26s6 20 14 26v22c0 9 7 16 16 16s16 -7 16 -16v-19zM142 155c9 -6 15 -16 15 -27s-6 -21 -15 -27v-85c0 -9 -7 -16 -16 -16s-16 7 -16 16v84 +c-10 5 -17 16 -17 28s7 23 17 28v212c0 9 7 16 16 16s16 -7 16 -16v-213zM238 285c10 -6 16 -16 16 -28s-6 -22 -16 -28v-213c0 -9 -7 -16 -16 -16s-16 7 -16 16v213c-10 6 -16 16 -16 28s6 22 16 28v83c0 9 7 16 16 16s16 -7 16 -16v-83zM350 65c0 -12 -6 -22 -16 -28v-21 +c0 -9 -7 -16 -16 -16s-16 7 -16 16v21c-10 6 -16 16 -16 28s6 22 16 28v275c0 9 7 16 16 16s16 -7 16 -16v-275c10 -6 16 -16 16 -28z" /> + <glyph glyph-name="ion-lightbulb" unicode="&#xf299;" horiz-adv-x="256" +d="M128 416c71 0 128 -56 128 -124c0 -5 0 -9 -1 -14s-2 -11 -3 -16v-2c-17 -63 -45 -71 -59 -167v-1c-2 -9 -10 -12 -20 -12h-90c-10 0 -18 3 -20 12v1c-14 96 -42 104 -59 167v2c-1 5 -2 11 -3 16s-1 9 -1 14c0 68 57 124 128 124zM190 52v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8 +v-1c1 -2 2 -3 2 -5s-1 -4 -2 -6v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8v-1c1 -2 2 -4 2 -6c0 -5 -4 -9 -10 -11h-1c-6 -1 -13 -2 -19 -3h-2c-6 -1 -11 -5 -14 -9v0c-4 -5 -10 -10 -18 -10s-15 6 -19 11v0c-3 4 -7 7 -13 8h-2c-6 1 -13 2 -19 3h-1c-6 2 -10 6 -10 11c0 2 1 4 2 6v1 +c2 2 3 4 3 7s-1 5 -3 8v1c-1 2 -2 4 -2 6s1 3 2 5v1c2 3 3 5 3 8s-1 4 -3 7v1v0c-1 2 -2 4 -2 6c0 4 -1 6 7 6h114c8 0 7 -2 7 -6c0 -2 -1 -4 -2 -6v0z" /> + <glyph glyph-name="ion-link" unicode="&#xf1fe;" horiz-adv-x="384" +d="M192 240v0v0v0zM304 288c44 0 80 -36 80 -80v-32c0 -44 -36 -80 -80 -80h-112c-33 0 -60 20 -73 48c-4 10 -7 20 -7 32v32h48v-32c0 -18 14 -32 32 -32h112c18 0 32 14 32 32v32c0 18 -14 32 -32 32v0h-16c-6 31 -32 48 -32 48h48zM266 240c4 -10 6 -21 6 -32v-32v0h-48 +v0v32c0 18 -14 32 -32 32v0h-112c-18 0 -32 -14 -32 -32v-32c0 -18 14 -32 32 -32h16c6 -31 32 -48 32 -48h-48c-44 0 -80 36 -80 80v32c0 44 36 80 80 80h112c33 0 62 -20 74 -48z" /> + <glyph glyph-name="ion-load-a" unicode="&#xf29a;" horiz-adv-x="512" +d="M192 352c0 42.6667 21.3333 64 64 64c42.6667 0 64 -21.3333 64 -64s-21.3333 -64 -64 -64c-42.6667 0 -64 21.3333 -64 64zM48 192c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM360 304c0 5.33333 2.66667 8 8 8s8 -2.66667 8 -8s-2.66667 -8 -8 -8 +s-8 2.66667 -8 8zM180.1 340.4c9.9502 -10.0503 14.9253 -22.1838 14.9253 -36.4004c0 -14.2166 -4.9751 -26.3501 -14.9253 -36.4004c-9.94971 -10.0498 -21.9662 -15.0747 -36.0494 -15.0747s-26.1 5.0249 -36.0502 15.0747 +c-9.9502 10.0503 -14.9253 22.1838 -14.9253 36.4004s4.9751 26.3501 14.9253 36.4004c9.9502 10.0498 21.9669 15.0747 36.0502 15.0747c14.0833 0 26.0997 -5.0249 36.0494 -15.0747zM400 192c0 10.6667 5.33333 16 16 16s16 -5.33333 16 -16s-5.33333 -16 -16 -16 +s-16 5.33333 -16 16zM345 79c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM224 32c0 21.3333 10.6667 32 32 32c21.3333 0 32 -10.6667 32 -32c0 -21.3333 -10.6667 -32 -32 -32c-21.3333 0 -32 10.6667 -32 32zM104 80c0 26.6667 13.3333 40 40 40 +c26.6667 0 40 -13.3333 40 -40s-13.3333 -40 -40 -40c-26.6667 0 -40 13.3333 -40 40z" /> + <glyph glyph-name="ion-load-b" unicode="&#xf29b;" horiz-adv-x="512" +d="M288 288c0 -17.7002 -14.2998 -32 -32 -32v0c-17.7002 0 -32 14.2998 -32 32v96c0 17.7002 14.2998 32 32 32v0c17.7002 0 32 -14.2998 32 -32v-96zM256 128v0c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v96 +c0 17.7002 14.2998 32 32 32zM448 224v0c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-96c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h96zM160 224v0c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-96c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32 +h96zM346.5 237.3c-12.5 -12.5 -32.7998 -12.5 -45.2998 0v0c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.9004c12.5 12.5 32.8008 12.5 45.3008 0v0c12.5 -12.5 12.5 -32.7998 0 -45.2998zM210.7 146.7v0c12.5 -12.5 12.5 -32.7002 0 -45.2998l-67.9004 -67.9004 +c-12.5 -12.5 -32.7998 -12.5 -45.2998 0s-12.5 32.7998 0 45.2998l67.9004 67.9004c12.5 12.5 32.7998 12.5 45.2998 0zM414.4 78.9004v0c12.5 -12.5 12.5 -32.8008 0 -45.3008s-32.8008 -12.5 -45.3008 0l-67.8994 67.9004c-12.5 12.5 -12.5 32.7998 0 45.2998 +s32.7998 12.5 45.2998 0zM210.7 282.5v0c12.5 -12.5 12.5 -32.7998 0 -45.2998s-32.7998 -12.5 -45.2998 0l-67.9004 67.8994c-12.5 12.5 -12.5 32.8008 0 45.3008s32.7998 12.5 45.2998 0z" /> + <glyph glyph-name="ion-load-c" unicode="&#xf29c;" horiz-adv-x="512" +d="M479.8 221.9c0.5 -2.90039 0.100586 -6 -1.2002 -8.90039c-3.7998 -8.40039 -14.6992 -11.9004 -22.5 -6.7002c-3.69922 2.40039 -6.09961 6.40039 -6.7998 10.7002c-0.799805 4.7002 -1.59961 9.40039 -2.59961 14.0996c-4.40039 20.4004 -11.7002 40 -21.9004 58.2002 +c-12 21.4004 -27.8994 40.4004 -47 55.7998c-18.2002 14.7002 -39.2002 26 -61.5 33c-20.7002 6.5 -42.5 9.30078 -64.2002 8.90039c-1.2998 0 -2.59961 0.0996094 -3.89941 0.0996094c-3.2002 -0.299805 -6.2998 -0.299805 -9.5 -0.599609 +c-6.5 -0.5 -13 -1.5 -19.5 -2.7002c-12.7998 -2.39941 -25.4004 -6 -37.4004 -10.8994c-20.7998 -8.40039 -40 -20.3008 -56.7998 -35.1006c-16.7998 -14.7002 -31.0996 -32.0996 -42.0996 -51.3994c-12.4004 -21.6006 -20.4004 -45.3008 -24.1006 -69.9004 +c-1.7002 -11.2002 -2.39941 -22.9004 -2.09961 -34.2002c0.200195 -5.5 0.700195 -11 1.2998 -16.3994c0.700195 -6.30078 1.7002 -12.7002 3 -18.9004c5.09961 -23.9004 14.4004 -46.7998 27.9004 -67.0996c12.8994 -19.9004 29.2998 -37.5 48.1992 -51.8008 +c19.5 -14.6992 41.7002 -25.8994 65.1006 -32.7998c24.5996 -7.2998 50.7002 -9.7998 76.2998 -7.59961c25 2.2002 49.7002 8.7998 72.2998 19.7998c11.2998 5.40039 22 11.9004 32.1006 19.2998c9.89941 7.2002 18.7998 15.2998 27 24.4004 +c4.09961 4.5 8.19922 9.09961 11.7998 13.8994c3.59961 4.80078 6.89941 9.80078 10.0996 14.9004c6.2002 9.90039 11.9004 20.0996 16.7998 30.7998c3.80078 8.40039 7.80078 16.7998 11 25.5c1.60059 4.10059 3 8.2998 4.10059 12.6006 +c0.899414 3.69922 1.5 7.39941 2.2002 11.1992c0.799805 -8.59961 0.199219 -17.3994 -1.30078 -25.8994c-1 -5.40039 -2.09961 -10.9004 -3.59961 -16.2002c-1.40039 -5 -3.09961 -9.7998 -4.90039 -14.5996c-3.59961 -9.7002 -7.7998 -19.3008 -12.7998 -28.5 +c-5.7998 -10.7002 -12.7998 -20.6006 -20.5996 -30c-7.7002 -9.30078 -15.9004 -18.1006 -25.1006 -25.9004c-18.2998 -15.4004 -39.1992 -27.7002 -61.5 -36.2998c-23.1992 -8.90039 -47.7998 -13.7002 -72.5996 -14.5 +c-25.4004 -0.900391 -51.0996 2.7002 -75.2998 10.3994c-23.2002 7.40039 -45.2998 18.6006 -64.9004 33.1006c-19.2002 14.0996 -36 31.2002 -49.7998 50.5c-6.90039 9.7002 -13.0996 20 -18.4004 30.7002c-5.39941 10.8994 -9.69922 22.0996 -13.2998 33.5996 +c-5.7002 18.0996 -8.59961 37 -9.5 55.9004c-1 19.5 1 39.0996 5.2002 58.0996c5.2002 23.7998 14.7002 46.5 27.4004 67.2998c11.5 18.7002 25.7998 35.7002 42.1992 50.2998c16.4004 14.6006 34.9004 26.8008 54.8008 36.2002c23.1992 10.9004 48.3994 18 73.8994 20.5 +c9.7998 0.900391 19.7002 1.2998 29.6006 1.2002c12.6992 -0.0996094 25.1992 -1.59961 37.5996 -4.09961c24 -4.90039 47 -13.7002 68.0996 -26.1006c21.4004 -12.5 40.7002 -28.7998 56.7002 -47.7002c14.7998 -17.5996 27 -37.3994 35.9004 -58.5996 +c4.39941 -10.2998 8 -21 10.7998 -31.7998c2.2002 -8.5 3.90039 -17.1006 5.2998 -25.7998z" /> + <glyph glyph-name="ion-load-d" unicode="&#xf29d;" horiz-adv-x="512" +d="M432 208c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16h-80c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h80zM176 192c0 -8.7998 -7.2002 -16 -16 -16h-80c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h80c8.7998 0 16 -7.2002 16 -16zM256 112 +c8.7998 0 16 -7.2002 16 -16v-80c0 -8.7998 -7.2002 -16 -16 -16s-16 7.2002 -16 16v80c0 8.7998 7.2002 16 16 16zM256 384c8.7998 0 16 -7.2002 16 -16v-80c0 -8.7998 -7.2002 -16 -16 -16s-16 7.2002 -16 16v80c0 8.7998 7.2002 16 16 16zM325.3 232 +c-4.39941 7.7002 -1.7998 17.4004 5.90039 21.9004l69.2998 40c7.7002 4.39941 17.5 1.7998 21.9004 -5.90039c4.39941 -7.7002 1.7998 -17.5 -5.90039 -21.9004l-69.2998 -40c-7.7002 -4.39941 -17.5 -1.7998 -21.9004 5.90039zM186.7 152 +c4.39941 -7.7002 1.7998 -17.4004 -5.90039 -21.9004l-69.2998 -40c-7.7002 -4.39941 -17.5 -1.7998 -21.9004 5.90039c-4.39941 7.7002 -1.7998 17.5 5.90039 21.9004l69.2998 40c7.7002 4.39941 17.5 1.7998 21.9004 -5.90039zM317.9 116.9l40 -69.3008 +c4.39941 -7.69922 1.7998 -17.5 -5.90039 -21.8994c-7.7002 -4.40039 -17.5 -1.7998 -21.9004 5.89941l-40 69.3008c-4.39941 7.69922 -1.7998 17.5 5.90039 21.8994c7.7002 4.40039 17.5 1.7998 21.9004 -5.89941zM181.9 352.4l40 -69.3008 +c4.39941 -7.69922 1.7998 -17.5 -5.90039 -21.8994c-7.7002 -4.40039 -17.5 -1.7998 -21.9004 5.89941l-40 69.3008c-4.39941 7.69922 -1.7998 17.5 5.90039 21.8994c7.7002 4.40039 17.5 1.7998 21.9004 -5.89941zM296 261.3 +c-7.7002 4.40039 -10.2998 14.2002 -5.90039 21.9004l40 69.2998c4.5 7.7002 14.2002 10.2998 21.9004 5.90039c7.7002 -4.5 10.2998 -14.2002 5.90039 -21.9004l-40 -69.2998c-4.5 -7.7002 -14.2002 -10.2998 -21.9004 -5.90039zM216 122.7 +c7.7002 -4.40039 10.2998 -14.2002 5.90039 -21.9004l-40 -69.2998c-4.5 -7.7002 -14.2002 -10.2998 -21.9004 -5.90039c-7.7002 4.5 -10.2998 14.2002 -5.90039 21.9004l40 69.2998c4.5 7.7002 14.2002 10.2998 21.9004 5.90039zM416.4 117.9 +c7.69922 -4.5 10.2998 -14.2002 5.89941 -21.9004c-4.5 -7.7002 -14.2002 -10.2998 -21.8994 -5.90039l-69.3008 40c-7.69922 4.5 -10.2998 14.2002 -5.89941 21.9004c4.5 7.7002 14.2002 10.2998 21.8994 5.90039zM95.5996 266.1 +c-7.69922 4.5 -10.2998 14.2002 -5.89941 21.9004c4.5 7.7002 14.2002 10.2998 21.8994 5.90039l69.3008 -40c7.69922 -4.5 10.3994 -14.2002 5.89941 -21.9004s-14.2002 -10.2998 -21.8994 -5.90039z" /> + <glyph glyph-name="ion-location" unicode="&#xf1ff;" horiz-adv-x="239" +d="M119 384c66 0 120 -54 120 -120c0 -115 -120 -264 -120 -264s-119 149 -119 264c0 66 53 120 119 120zM119 206c31 0 57 25 57 56s-26 57 -57 57s-56 -26 -56 -57s25 -56 56 -56z" /> + <glyph glyph-name="ion-locked" unicode="&#xf200;" horiz-adv-x="384" +d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46s43 -73 43 -115v-31h22c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340zM97 255v-31h17h155h18v31c0 27 -10 61 -28 80v0v1 +c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80z" /> + <glyph glyph-name="ion-log-in" unicode="&#xf29e;" horiz-adv-x="384" +d="M160 160v48h-152c-4 0 -8 4 -8 8v16c0 4 4 8 8 8h152v48l64 -64zM376 384c4 0 8 -4 8 -8v-302c0 -8 0 -10 -9 -15l-119 -59v64h-152c-4 0 -8 4 -8 8v104h32v-80h128v224l48 32h-176v-80h-32v104c0 4 4 8 8 8h272z" /> + <glyph glyph-name="ion-log-out" unicode="&#xf29f;" horiz-adv-x="384" +d="M320 288l64 -64l-64 -64v48h-152c-4 0 -8 4 -8 8v16c0 4 4 8 8 8h152v48zM288 272h-32v80h-176l48 -32v-224h128v80h32v-104c0 -4 -4 -8 -8 -8h-152v-64l-119 59c-9 5 -9 7 -9 15v302c0 4 4 8 8 8h272c4 0 8 -4 8 -8v-104z" /> + <glyph glyph-name="ion-loop" unicode="&#xf201;" horiz-adv-x="512" +d="M273.4 147.5l-0.300781 -58c48.9004 8.2002 86.3008 51 86.3008 102.5c0 15.9004 -3.60059 31 -10 44.5c-2.80078 5.7998 -6 11.2998 -9.80078 16.5l47.1006 43.5c1.09961 -1.2998 2.09961 -2.7002 3.09961 -4c20.9004 -28 33.2002 -62.7998 33.2002 -100.5v-3.7002 +c-1.5 -71.5 -47.5996 -132 -111.4 -154.6c-12.2998 -4.2998 -25.1992 -7.2998 -38.5 -8.7002l-0.0996094 -57l-76.2002 67l-26.2002 23l44.4004 38.7002zM89 195.7c1.59961 72.0996 48.2998 133 112.9 155.2c11.6992 4 24 6.7998 36.7998 8.09961l0.0996094 57 +l76.1006 -66.9004l26.1992 -23.0996l-44.2998 -38.5996l-58.3994 -50.9004l0.199219 57.9004c-48.7998 -8.30078 -86 -51.1006 -86 -102.4c0 -16 3.60059 -31.0996 10.1006 -44.7002c2.7002 -5.7998 6 -11.2002 9.7002 -16.2998l-47 -43.5996 +c-1.30078 1.59961 -2.60059 3.2998 -3.80078 5c-20.5 27.8994 -32.5996 62.2998 -32.5996 99.5996v3.7002z" /> + <glyph glyph-name="ion-magnet" unicode="&#xf2a0;" horiz-adv-x="384" +d="M192 416c115 0 192 -78 192 -200c0 -49 -3 -77 -15 -128c-16 -66 -39 -113 -39 -113v-1c-2 -3 -6 -6 -10 -6c-1 0 -3 1 -4 1l-2 1l-50 20l-2 1c-3 2 -5 5 -5 9c0 1 0 3 1 4v1c7 16 27 59 37 101s13 63 13 108c0 71 -52 122 -116 122s-116 -51 -116 -122 +c0 -45 3 -66 13 -108s30 -85 37 -101v-1c1 -1 1 -3 1 -4c0 -4 -2 -7 -5 -9l-2 -1l-50 -20l-2 -1c-1 0 -3 -1 -4 -1c-4 0 -8 3 -10 6v1s-24 47 -40 113c-12 51 -14 79 -14 128c0 122 77 200 192 200zM109 4c-9 19 -27 59 -36 98l-42 -12c13 -53 30 -92 35 -104l43 17v1z +M317 -14c5 12 23 51 36 104l-43 12c-9 -39 -26 -79 -35 -98v-1z" /> + <glyph glyph-name="ion-male" unicode="&#xf2a1;" +d="M448 256l-63 63l-69 -69c22 -30 36 -66 36 -106c0 -97 -79 -176 -176 -176s-176 79 -176 176s79 176 176 176c40 0 76 -14 106 -36l69 69l-63 63h160v-160zM266 54c24 24 38 56 38 90s-14 66 -38 90s-56 38 -90 38s-66 -14 -90 -38s-38 -56 -38 -90s14 -66 38 -90 +s56 -38 90 -38s66 14 90 38z" /> + <glyph glyph-name="ion-man" unicode="&#xf202;" horiz-adv-x="168" +d="M84 341c-21 0 -37 17 -37 38s16 37 37 37s37 -16 37 -37s-16 -38 -37 -38zM121 333c28 0 47 -24 47 -48v-114c0 -22 -32 -22 -32 0v105h-5v-286c0 -28 -41 -31 -43 0v165h-1h-7v-165c-1 -29 -43 -30 -43 0v286h-6v-105c0 -22 -31 -22 -31 0v114c0 24 19 48 47 48h37h37z +" /> + <glyph glyph-name="ion-map" unicode="&#xf203;" +d="M441 311c4 -3 7 -8 7 -14v-281c0 -6 -3 -11 -8 -14c-2 -1 -5 -2 -7 -2c-3 0 -5 0 -7 2l-97 66l-97 -66c-5 -3 -11 -3 -16 0l-97 66l-97 -66c-4 -3 -10 -3 -15 0s-7 8 -7 14v281c0 6 3 11 7 14l105 71c5 3 10 3 15 0l97 -66l97 66c5 3 10 3 15 0zM103 95v241l-71 -49v-242 +zM135 95l73 -49v131l-4 -13c-7 2 -14 6 -21 10l9 13c6 -4 10 -6 16 -8v109l-73 49v-101c4 -2 8 -4 12 -7l-9 -13c-1 1 -2 1 -3 2v-123zM240 46l73 49v109l-2 -2c-2 -2 -3 -4 -5 -6l-12 11c2 2 3 4 5 6c3 3 6 7 9 10l5 -5v119l-73 -49v-112h6l3 -15c-3 0 -6 -1 -9 -1v0v-114z +M416 46v0v242l-71 49v-88c3 1 5 2 8 2l3 -15c-4 -1 -7 -2 -11 -4v-137zM67 192v-1l-16 5l1 1c2 7 4 13 9 20l13 -9c-4 -5 -5 -10 -7 -16zM97 227c-3 -1 -11 -5 -14 -7l-11 12c4 3 7 6 11 8c3 2 7 3 10 4l5 -15c-2 -1 1 -1 -1 -2zM264 182c5 2 11 5 16 10l10 -12 +c-6 -6 -12 -9 -19 -12zM166 210c4 -4 6 -7 10 -11l-11 -12c-4 4 -7 9 -11 13l-3 3l12 11c1 -1 2 -3 3 -4zM376 218l-12 12l11 10l-11 10l12 12l10 -11l10 11l12 -12l-11 -10l11 -10l-12 -12l-10 11z" /> + <glyph glyph-name="ion-medkit" unicode="&#xf2a2;" +d="M440 304c4 0 8 -4 8 -8v-288c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v288c0 4 4 8 8 8h120v31c1 28 22 49 51 49h45h45c30 0 50 -21 51 -49v-31h120zM160 331v-27h128v27v1v1c0 10 -9 19 -19 19h-45h-45c-10 0 -19 -9 -19 -19v-1v-1zM320 128v64h-64v64h-64v-64h-64v-64 +h64v-64h64v64h64z" /> + <glyph glyph-name="ion-merge" unicode="&#xf33f;" horiz-adv-x="384" +d="M320 224c35 0 64 -29 64 -64s-29 -64 -64 -64c-24 0 -44 13 -55 32h-10c-61 0 -115 25 -159 74v-115c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -19 -8 -37 -22 -49 +c4 -9 17 -35 37 -58c32 -35 70 -53 112 -53h10c11 19 31 32 55 32zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 128c18 0 32 14 32 32s-14 32 -32 32 +s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-mic-a" unicode="&#xf204;" horiz-adv-x="288" +d="M0 210c0 10 9 19 20 19s19 -9 19 -19v-14c0 -28 12 -53 31 -72s45 -31 74 -31s55 12 74 31s31 44 31 72v14c0 10 8 19 19 19s20 -9 20 -19v-14c0 -66 -46 -120 -108 -136c-1 0 -3 -1 -4 -1c-6 -2 -10 -7 -12 -13v-58c0 -11 -9 -20 -20 -20v0c-11 0 -20 9 -20 20v58 +c-2 6 -6 11 -12 13c-1 0 -3 1 -4 1c-62 16 -108 70 -108 136v14zM67 340c0 42 34 76 77 76s78 -34 78 -76v-144c0 -42 -35 -75 -78 -75s-77 33 -77 75v144z" /> + <glyph glyph-name="ion-mic-b" unicode="&#xf205;" horiz-adv-x="160" +d="M80 416c35 0 65 -23 76 -59c6 -18 4 -45 2 -55s-8 -20 -14 -28c-3 -4 -7 -7 -11 -9c-1 0 -1 -1 -2 -1c-3 -1 -6 -2 -10 -3c-12 -3 -25 -5 -39 -5v0h-1h-1v0c-14 0 -29 2 -41 5c-4 1 -7 2 -10 3c-1 0 -1 1 -2 1c-4 2 -8 5 -11 9c-6 8 -12 18 -14 28s-4 37 2 55 +c11 36 41 59 76 59zM119 247c6 0 12 -5 12 -12v-2c-5 -67 -18 -241 -19 -252c0 0 -3 -13 -32 -13v0c-29 0 -32 13 -32 13c-1 11 -13 185 -18 252v2c0 7 5 12 11 12h1c1 0 1 -1 2 -1c2 0 4 -1 6 -1c9 -2 21 -2 31 -2s20 0 29 2c2 0 4 1 6 1c1 0 1 1 2 1h1zM90 166v33 +c0 6 -4 11 -10 11s-10 -5 -10 -11v-33c0 -6 4 -11 10 -11s10 5 10 11z" /> + <glyph glyph-name="ion-mic-c" unicode="&#xf206;" horiz-adv-x="256" +d="M201 416c30 0 55 -23 55 -52v-28h-59v-37h59v-43h-59v-37h59v-43h-59v-37h59v-42c0 -29 -25 -52 -55 -52h-30v-77h-86v77h-30c-30 0 -55 23 -55 52v42h152v37h-152v43h152v37h-152v43h152v37h-152v28c0 29 25 52 55 52h146z" /> + <glyph glyph-name="ion-minus-circled" unicode="&#xf207;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-256v-32h256z" /> + <glyph glyph-name="ion-minus-round" unicode="&#xf208;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322z" /> + <glyph glyph-name="ion-minus" unicode="&#xf209;" horiz-adv-x="384" +d="M0 160v64h384v-64h-384z" /> + <glyph glyph-name="ion-model-s" unicode="&#xf2c1;" horiz-adv-x="512" +d="M509 57v-8v0v-1v-3v0c0 -3 -1 -5 -1 -7c-1 -12 -2 -18 -6 -20c-3 -2 -6 -2 -10 -2h-43s-10 1 -11 16v8c20 1 39 1 52 0c10 0 13 0 16 6c2 3 2 7 3 11zM3 57c1 -4 1 -8 3 -11c3 -6 6 -6 16 -6c13 1 32 1 52 0v-8c-1 -15 -8 -16 -11 -16h-43s-7 0 -10 2c-4 2 -6 8 -7 20v7 +v0v3v1v0v8zM512 151c0 -31 -2 -58 -2 -68c0 -4 0 -11 -1 -18c-1 -4 -1 -8 -3 -11c-3 -6 -6 -6 -16 -6c-13 1 -32 1 -52 0c-13 0 -27 -2 -39 -2c-30 -1 -21 4 -34 4s-63 -2 -109 -2s-97 2 -110 2s-4 -5 -34 -4c-12 0 -25 2 -38 2c-20 1 -39 1 -52 0c-10 0 -13 0 -16 6 +c-2 3 -2 7 -3 11c-1 7 -1 14 -1 18c0 10 -2 37 -2 68s4 61 6 64c1 2 8 9 26 21s17 10 20 18c-3 1 -5 3 -7 3c-4 0 -4 -3 -12 -3s-24 1 -28 5c-4 3 -5 5 -5 8s2 9 5 13s19 6 27 7s10 0 12 -1c4 -2 3 -22 3 -22l9 -1c5 13 12 41 24 62c13 23 26 30 32 32s10 2 48 6s69 5 96 5 +s58 -1 96 -5s42 -4 48 -6s19 -9 32 -32c12 -21 19 -49 24 -62l9 1s-1 20 3 22c2 1 4 2 12 1s24 -3 27 -7s5 -10 5 -13s-1 -4 -5 -8s-20 -5 -28 -5s-8 3 -12 3c-2 0 -4 -2 -7 -3c3 -8 2 -6 20 -18s25 -19 26 -21c2 -3 6 -33 6 -64zM86 303c-5 -11 -11 -33 -10 -36 +s-1 -5 15 -4s117 3 165 3s149 -2 165 -3s14 1 15 4s-5 25 -10 36s-17 31 -26 37c-2 1 -17 7 -54 9c-34 2 -72 3 -90 3s-56 -1 -90 -3c-37 -2 -52 -8 -54 -9c-7 -4 -21 -26 -26 -37zM123 178c7 2 11 2 11 2s-17 16 -48 25s-49 11 -66 10c0 0 -3 -16 0 -27s8 -10 16 -12 +s13 -5 16 -4s7 4 12 4s29 -4 38 -4s14 4 21 6zM358 99c15 2 34 19 21 33c-18 19 -15 19 -55 24c-35 4 -61 4 -68 4s-33 0 -68 -4c-40 -5 -37 -5 -55 -24c-13 -14 6 -31 21 -33c14 -2 74 -3 102 -3s88 1 102 3zM492 188c3 11 0 27 0 27c-17 1 -35 -1 -66 -10s-48 -26 -48 -26 +s4 1 11 -1s12 -6 21 -6s33 4 38 4s9 -3 12 -4s8 2 16 4s13 1 16 12z" /> + <glyph glyph-name="ion-monitor" unicode="&#xf20a;" +d="M437 384c6 0 11 -5 11 -11v-266c0 -6 -5 -11 -11 -11h-426c-6 0 -11 5 -11 11v266c0 6 5 11 11 11h426zM416 128v224h-384v-224h384zM270 0h-92c-28 0 -42 3 -30 12s30 16 30 23c0 4 1 45 1 45h45h45s1 -41 1 -45c0 -7 18 -14 30 -23s-2 -12 -30 -12z" /> + <glyph glyph-name="ion-more" unicode="&#xf20b;" horiz-adv-x="384" +d="M50 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM192 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM334 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48z" /> + <glyph glyph-name="ion-mouse" unicode="&#xf340;" horiz-adv-x="256" +d="M128 416h-1h5h-4zM251 255c2 1 2 1 4 1h1v-176c0 -37 -21 -71 -53 -91c-5 -3 -9 -5 -14 -7v-1v0c-18 -9 -39 -13 -61 -13c-71 0 -128 50 -128 112v176h1c2 0 3 0 5 -1v0c34 -13 76 -23 122 -23s88 10 122 23h1zM189 -18c5 2 10 4 14 7c-5 -3 -9 -5 -14 -7v0v-1v1v0z +M203 -11c-4 -3 -9 -5 -14 -7c5 2 9 4 14 7zM132 416c69 -2 124 -51 124 -112v-23c-2 -2 -4 -4 -6 -5c-1 -1 -3 0 -4 -1c-23 -10 -50 -16 -82 -19h-1h-2c-11 0 -17 0 -17 10v86c0 9 -7 16 -16 16s-16 -7 -16 -16v-85c0 -11 -6 -11 -17 -11h-2c-32 3 -61 9 -84 19v0 +c-1 0 -1 1 -2 1c-3 1 -5 3 -7 5v23c0 61 57 111 127 112h5z" /> + <glyph glyph-name="ion-music-note" unicode="&#xf20c;" horiz-adv-x="384" +d="M362 416c12 0 22 -9 22 -21v-303s-3 -43 -12 -55v0c-9 -15 -25 -21 -43 -21h-37c-28 0 -52 20 -52 48s24 48 52 48h60v192l-208 -38v-232c0 -8 -3 -27 -13 -41c-1 -2 -2 -3 -3 -5c0 -1 -1 -1 -2 -2v0c-9 -11 -23 -18 -38 -18h-37c-28 0 -51 20 -51 48s23 48 51 48v0h61 +v286c1 14 13 28 27 32l218 33s3 1 5 1z" /> + <glyph glyph-name="ion-navicon-round" unicode="&#xf20d;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 352c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 96c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32 +h322z" /> + <glyph glyph-name="ion-navicon" unicode="&#xf20e;" horiz-adv-x="320" +d="M0 175v32h320v-32h-320zM0 271v32h320v-32h-320zM0 79v32h320v-32h-320z" /> + <glyph glyph-name="ion-navigate" unicode="&#xf2a3;" +d="M448 416l-192 -448v256h-256z" /> + <glyph glyph-name="ion-network" unicode="&#xf341;" horiz-adv-x="384" +d="M384 352c0 -24 -13 -44 -32 -55v-93l-128 -64v-53c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v53l-128 64v93c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-53l96 -48l96 48v53c-19 11 -32 31 -32 55 +c0 35 29 64 64 64s64 -29 64 -64zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 320c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-no-smoking" unicode="&#xf2c2;" +d="M328 144v48h16v-48h-16zM80 144v48h90l48 -48h-138zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 9 -35 15h-1c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2 +c12 -4 24 -9 35 -15v0zM224 22c37 0 72 12 100 32l-238 238c-20 -28 -32 -63 -32 -100c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2zM362 93c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2 +c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -71 -12 -99 -32zM320 150l-42 42h42v-42zM352 144v48h16v-48h-16zM328 235c16 -7 16 -27 16 -34v-1h-16v1c0 8 -1 17 -7 20c-4 2 -13 4 -39 4h-3c-13 0 -24 0 -33 13c-5 8 -5 19 -2 29c-4 1 -8 1 -12 3c-17 7 -26 20 -26 38 +c0 33 27 44 39 44v-16c-1 0 -23 -2 -23 -28c0 -11 5 -19 16 -23c9 -4 18 -3 18 -3c3 0 6 -2 7 -5s2 -6 0 -8c-5 -7 -7 -18 -4 -22c4 -6 7 -6 20 -6h3c24 0 37 -2 46 -6zM368 200v0h-16c0 28 -4 41 -7 46c-6 10 -14 14 -25 14h-30c-3 0 -5 2 -6 4s-1 6 0 8c0 0 8 18 6 32 +c-1 8 -6 17 -27 17v16c24 0 40 -11 43 -30c2 -11 0 -23 -3 -31h17c16 0 30 -8 39 -22c6 -10 9 -28 9 -54z" /> + <glyph glyph-name="ion-nuclear" unicode="&#xf2a4;" +d="M176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM448 176c0 -27 -5 -53 -15 -78s-23 -47 -40 -66s-36 -35 -59 -48l-79 136c22 12 33 31 33 56h160zM224 240 +c-12 0 -23 -3 -33 -9l-80 138c35 20 73 31 113 31s78 -10 113 -30l-81 -139c-10 6 -21 9 -32 9zM160 176c0 -25 11 -44 33 -56l-79 -136c-35 20 -62 46 -83 80s-31 71 -31 112h160z" /> + <glyph glyph-name="ion-outlet" unicode="&#xf342;" +d="M338 416c61 0 110 -51 110 -113v-222c0 -62 -49 -113 -110 -113h-228c-61 0 -110 51 -110 113v222c0 62 49 113 110 113h228zM143 197v102c0 11 -9 21 -20 21h-23c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h23c11 0 20 9 20 20v1zM265 52v29 +c0 23 -18 42 -41 42s-41 -19 -41 -42v-29v0c0 -11 9 -20 20 -20h21h21c11 0 20 7 20 18v2zM368 197v102c0 11 -9 21 -20 21h-24c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h24c11 0 20 9 20 20v1z" /> + <glyph glyph-name="ion-paper-airplane" unicode="&#xf2c3;" +d="M0 176l448 240l-112 -448l-112 112l-80 -112l-16 160zM319 31l80 323l-322 -173l83 -31l192 154l-128 -176z" /> + <glyph glyph-name="ion-paperclip" unicode="&#xf20f;" horiz-adv-x="160" +d="M149 293c6 0 11 -5 11 -12v-195c0 -28 -10 -49 -24 -63c-15 -15 -36 -23 -56 -23c-40 0 -80 31 -80 88v234c0 24 11 44 29 54s39 11 57 0s29 -30 29 -54l-1 -225c0 -13 -3 -24 -9 -32s-16 -12 -25 -12c-17 0 -34 15 -34 44v173c0 6 6 12 12 12s11 -6 11 -12v-173 +c0 -14 5 -21 11 -21c2 0 5 2 7 4c3 4 5 10 5 17v225c0 15 -6 28 -17 34s-24 6 -35 0s-17 -19 -17 -34v-234c0 -44 29 -64 57 -64s57 19 57 63v195c0 6 6 11 12 11z" /> + <glyph glyph-name="ion-pause" unicode="&#xf210;" horiz-adv-x="256" +d="M96 12c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72c7 0 12 -5 12 -12v-360zM244 384c7 0 12 -5 12 -12v-360c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72z" /> + <glyph glyph-name="ion-person-add" unicode="&#xf211;" +d="M397 120h-42v51h-51v42h51v51h42v-51h51v-42h-51v-51zM384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27 +c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> + <glyph glyph-name="ion-person-stalker" unicode="&#xf212;" +d="M393 123c42 -16 52 -26 53 -33c2 -9 2 -90 2 -90h-98c0 18 0 71 -1 77c-1 10 -1 29 -55 50c-8 3 -14 5 -19 7c18 8 15 15 15 28c0 19 -9 11 -15 47c-2 14 -4 5 -9 28c-3 12 1 12 1 18s-1 10 -2 22c-1 14 11 52 57 52s59 -38 58 -52c-1 -12 -2 -16 -2 -22 +c-1 -6 4 -6 1 -18c-5 -23 -7 -14 -9 -28c-6 -36 -16 -28 -16 -47c0 -29 -2 -23 39 -39zM325 0h-163h-162s0 65 2 77c2 10 15 22 69 43c54 20 50 17 50 55c0 24 -12 8 -20 54c-3 18 -5 7 -11 36c-3 15 2 16 1 23s-2 14 -3 29c-2 19 15 67 74 67s77 -49 75 -67 +c-1 -15 -2 -22 -3 -29s5 -8 2 -23c-6 -29 -9 -18 -12 -36c-8 -46 -20 -30 -20 -54c0 -32 -2 -36 31 -48c6 -2 11 -4 19 -7c54 -21 67 -33 69 -43c1 -6 2 -28 2 -47v-30z" /> + <glyph glyph-name="ion-person" unicode="&#xf213;" horiz-adv-x="384" +d="M384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64 +c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> + <glyph glyph-name="ion-pie-graph" unicode="&#xf2a5;" +d="M1 192c0 5 -1 11 -1 16c0 115 93 208 208 208c5 0 11 -1 16 -1v-32v-191h-191h-32zM78 46c-26 32 -42 71 -45 114h223v223c43 -3 82 -19 114 -45c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78z" /> + <glyph glyph-name="ion-pin" unicode="&#xf2a6;" horiz-adv-x="224" +d="M188 220c20 -10 36 -31 36 -55c0 -17 -3 -21 -15 -21h-81l-12 -176h-8l-12 176h-81c-12 0 -15 5 -15 21c0 24 16 45 36 55v0c1 0 3 1 4 2c7 4 12 11 14 19l18 118v5c0 7 -4 10 -10 13v0c-1 0 -1 1 -2 1c-7 3 -12 9 -12 17c0 20 6 21 18 21h92c12 0 18 -1 18 -21 +c0 -8 -5 -14 -12 -17c-1 0 -1 -1 -2 -1v0c-6 -3 -10 -6 -10 -13v-5l18 -118c2 -8 7 -15 14 -19c1 -1 3 -2 4 -2v0z" /> + <glyph glyph-name="ion-pinpoint" unicode="&#xf2a7;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c32 32 51 75 55 120l-63 8v16l63 8c-4 45 -23 88 -55 120s-75 51 -120 55l-8 -63h-16l-8 63c-45 -4 -88 -23 -120 -55s-51 -75 -55 -120l63 -8v-16l-63 -8 +c4 -45 23 -88 55 -120s75 -51 120 -55l8 63h16l8 -63c45 4 88 23 120 55z" /> + <glyph glyph-name="ion-pizza" unicode="&#xf2a8;" horiz-adv-x="352" +d="M317 317c5 -2 8 -7 8 -13c0 -2 0 -4 -1 -6v0l-148 -330l-148 330v0c-1 2 -1 4 -1 6c0 6 3 11 8 13v0c1 0 1 0 2 1v0c42 18 90 28 139 28s97 -10 139 -28v0s0 -1 1 -1h1zM167 330c-4 -2 -5 -7 -3 -11c0 -1 5 -9 14 -15c12 -8 27 -8 41 0c4 2 5 7 3 11s-7 5 -11 3 +c-9 -5 -16 -5 -23 0c-6 4 -10 9 -10 9c-2 4 -7 5 -11 3zM80 288c0 -18 14 -32 32 -32s32 14 32 32s-14 32 -32 32s-32 -14 -32 -32zM134 187c1 10 5 16 13 19c6 3 13 3 13 3c4 0 8 3 8 7s-3 9 -7 9c-1 0 -10 0 -20 -4c-14 -6 -22 -17 -23 -33c0 -4 3 -9 7 -9s9 4 9 8z +M188 53c13 7 20 20 20 36c0 4 -5 7 -9 7s-7 -4 -7 -8c0 -10 -4 -17 -11 -21c-6 -3 -13 -3 -13 -3c-4 0 -8 -5 -8 -9s5 -7 9 -7c1 0 10 0 19 5zM176 109c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM240 224c18 0 32 14 32 32s-14 32 -32 32 +s-32 -14 -32 -32s14 -32 32 -32zM344 382c5 -2 8 -7 8 -13c0 -2 0 -3 -1 -5v-1l-7 -16l-1 -3c-2 -5 -7 -8 -13 -8c-2 0 -4 1 -6 2h-1c-45 19 -95 30 -147 30s-102 -11 -147 -30v0c-2 -1 -4 -2 -6 -2c-6 0 -12 4 -14 9l-1 2l-7 16v1c-1 2 -1 3 -1 5c0 6 3 11 8 13v0 +c1 0 1 1 2 1v0c51 21 107 33 166 33s115 -12 166 -33v0c1 0 1 -1 2 -1z" /> + <glyph glyph-name="ion-plane" unicode="&#xf214;" +d="M250 136c0 -7 1 -69 -6 -102c-1 -4 3 -4 5 -7l51 -33c2 -2 3 -8 3 -8l1 -18l-68 16l-12 -32l-12 32l-68 -16l1 18s0 6 2 8l52 33c2 3 6 3 5 7c-7 33 -6 95 -6 102s-8 5 -8 5l-62 -13l-128 -49c0 23 2 26 9 31l183 131s5 63 5 113c0 24 12 78 27 78s27 -54 27 -78 +c0 -53 5 -113 5 -113l183 -131c6 -4 9 -7 9 -31l-128 49l-62 13s-8 2 -8 -5z" /> + <glyph glyph-name="ion-planet" unicode="&#xf343;" horiz-adv-x="512" +d="M96 182c39 -24 85 -48 134 -69c44 -19 87 -35 126 -46c-27 -22 -62 -35 -100 -35c-85 0 -155 66 -160 150zM107 251c1 4 3 8 5 11c10 21 26 40 44 55c27 22 62 35 100 35c85 0 155 -66 160 -150v-10c0 -21 -4 -41 -11 -59c-1 -4 -3 -8 -5 -11c-6 1 -13 3 -19 5 +c-39 11 -82 26 -126 45c-56 24 -108 52 -148 79zM430 163c57 -35 87 -62 81 -82c-4 -12 -19 -17 -44 -17c-50 0 -136 23 -231 64c-141 61 -246 140 -235 175c4 12 20 20 44 17c22 -3 47 -9 73 -18c-8 -9 -8 -12 -14 -22c-23 5 -44 8 -59 8h-6c2 -2 5 -6 8 -9 +c11 -11 27 -24 46 -37c41 -29 97 -59 156 -85c44 -19 89 -35 128 -46c36 -10 68 -15 90 -15h6c-2 2 -5 6 -8 9c-10 10 -24 22 -41 34c4 11 5 12 6 24z" /> + <glyph glyph-name="ion-play" unicode="&#xf215;" horiz-adv-x="320" +d="M309 215c7 -6 11 -14 11 -23s-4 -17 -11 -23l-278 -166c-4 -2 -7 -3 -11 -3c-11 0 -20 9 -20 20v0v344v0c0 11 9 20 20 20c4 0 8 -1 11 -3z" /> + <glyph glyph-name="ion-playstation" unicode="&#xf30a;" horiz-adv-x="512" +d="M400 245c0 -11 0 -22 -2 -33c-2 -10 -5 -20 -10 -28c-4 -7 -10 -13 -18 -17c-7 -4 -16 -6 -24 -6c-13 0 -31 4 -42 9v131v2c0 9 -7 17 -15 17h-1c-9 0 -16 -8 -16 -17v-3v-300l-80 26v358s28 -4 75 -18s67 -21 84 -31c8 -5 15 -11 21 -17c7 -7 13 -14 17 -23 +c8 -16 10 -33 11 -50zM87 90c-4 -2 -8 -3 -11 -6c-1 -1 -3 -3 -2 -5s4 -4 6 -5c6 -2 13 -3 19 -3c7 0 15 0 22 2c5 1 9 3 14 5c30 10 41 12 41 12v-42c-14 -2 -36 -4 -50 -4c-30 -1 -60 4 -88 13c-9 3 -19 6 -27 12c-4 3 -8 8 -10 13c-2 4 -1 9 1 13s5 8 9 11 +c9 6 18 10 28 14c8 4 17 7 26 10c35 12 111 37 111 37v-47s-62 -20 -89 -30zM512 102c0 -5 -2 -9 -5 -13c-6 -7 -14 -11 -22 -15s-17 -8 -26 -11c-54 -19 -171 -59 -171 -59v48s92 30 133 44c6 2 11 4 16 8c2 2 4 3 3 6c-1 2 -4 4 -6 5c-6 2 -13 3 -19 3 +c-10 0 -20 -2 -30 -5c-29 -10 -97 -32 -97 -32v49s45 14 67 16c8 1 23 1 31 1c26 0 54 -3 79 -11c5 -2 8 -3 14 -5c9 -3 18 -8 25 -14c4 -4 8 -9 8 -15z" /> + <glyph glyph-name="ion-plus-circled" unicode="&#xf216;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-112v112h-32v-112h-112v-32h112v-112h32v112h112z" /> + <glyph glyph-name="ion-plus-round" unicode="&#xf217;" horiz-adv-x="384" +d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-129v-129c0 -17 -14 -31 -32 -31s-32 14 -32 31v129h-129c-17 0 -31 14 -31 32s14 32 31 32h129v129c0 17 14 31 32 31s32 -14 32 -31v-129h129z" /> + <glyph glyph-name="ion-plus" unicode="&#xf218;" horiz-adv-x="384" +d="M384 224v-64h-160v-160h-64v160h-160v64h160v160h64v-160h160z" /> + <glyph glyph-name="ion-podium" unicode="&#xf344;" +d="M0 0v192h128v-192h-128zM160 0v288h128v-288h-128zM320 0v128h128v-128h-128z" /> + <glyph glyph-name="ion-pound" unicode="&#xf219;" +d="M93 96h-93v54h101l13 84h-99v54h107l22 128h64l-22 -128h106l22 128h63l-22 -128h93v-54h-102l-12 -84h99v-54h-107l-22 -128h-63l22 128h-107l-22 -128h-63zM177 234l-12 -84h106l12 84h-106v0z" /> + <glyph glyph-name="ion-power" unicode="&#xf2a9;" +d="M224 192c-18 0 -32 14 -32 32v160c0 18 14 32 32 32s32 -14 32 -32v-160c0 -18 -14 -32 -32 -32zM347 379c61 -40 101 -109 101 -187c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 78 40 147 101 187v0c5 3 11 5 17 5c18 0 32 -14 32 -32c0 -6 -2 -12 -5 -17 +c-2 -3 -4 -6 -7 -8c-1 -1 -3 -2 -4 -3c-8 -6 -16 -12 -23 -19c-30 -30 -47 -70 -47 -113s17 -83 47 -113s70 -47 113 -47s83 17 113 47s47 70 47 113s-17 83 -47 113c-7 7 -15 13 -23 19c-1 1 -3 2 -4 3c-3 2 -5 5 -7 8c-3 5 -5 11 -5 17c0 18 14 32 32 32c6 0 12 -2 17 -5 +v0z" /> + <glyph glyph-name="ion-pricetag" unicode="&#xf2aa;" +d="M439 187c12 -12 12 -31 0 -43l-165 -167c-11 -11 -30 -11 -42 -1l-3 3l-206 209l-6 5c-6 7 -9 15 -10 24v0v2v0l-7 98v4v0c0 12 4 24 13 33l49 49c8 9 20 13 31 13h4l100 -4v0c12 0 22 -4 30 -12v0l2 -2v0l210 -211v0v0zM112 256c26 0 48 22 48 48s-22 48 -48 48 +s-48 -22 -48 -48s22 -48 48 -48z" /> + <glyph glyph-name="ion-pricetags" unicode="&#xf2ab;" +d="M440 209c10 -11 11 -28 0 -39l-29 -29c11 11 10 28 0 39v0v0l-190 191v0l-1 1h-1c-8 7 -16 12 -27 12v0l-90 3h-4c-9 0 -19 -3 -26 -10l28 27c8 8 17 12 27 12h4l90 -4v0c11 0 19 -4 27 -11h1l1 -1v0l190 -191v0v0zM396 166v0c11 -11 11 -29 0 -40l-108 -109v1l-26 -27 +l-2 -2l-13 -13c-10 -10 -26 -10 -37 -1l-3 3l-186 188l-5 5c-5 6 -9 14 -10 22v0v2v0l-6 88v3v1c0 11 4 21 12 29l44 45l1 1l1 1c7 6 17 9 26 9h4l90 -3v0c11 0 19 -4 27 -11v0l2 -1v0l189 -191v0zM79 308c-12 -8 -21 -21 -21 -37c0 -24 19 -43 43 -43c16 0 29 9 37 21 +c4 7 7 14 7 22c0 24 -20 44 -44 44c-8 0 -15 -3 -22 -7z" /> + <glyph glyph-name="ion-printer" unicode="&#xf21a;" +d="M392 320c28 0 56 -19 56 -55v-131c0 -31 -28 -54 -56 -54h-40v-112h-8h-8h-224h-11h-5v112h-40c-28 0 -56 24 -56 62v123c0 38 28 55 56 55h40v64h256v-64h40zM336 -16v176h-224v-176h224zM336 320v48h-224v-48h224zM384 256v16h-17v-16h17zM128 112v16h192v-16h-192z +M128 64v16h192v-16h-192zM128 16v16h192v-16h-192z" /> + <glyph glyph-name="ion-pull-request" unicode="&#xf345;" horiz-adv-x="384" +d="M64 384c35 0 64 -29 64 -64c0 -24 -13 -44 -32 -55v-178c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v178c-19 11 -32 31 -32 55c0 35 29 64 64 64zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM64 288 +c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM351 88c20 -11 33 -32 33 -56c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 23 12 44 31 55v156c0 16 -4 26 -11 33c-10 9 -26 12 -52 12v-64l-96 96l96 96v-64c42 1 74 -8 96 -29c21 -19 31 -46 31 -80v-155z +M320 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> + <glyph glyph-name="ion-qr-scanner" unicode="&#xf346;" horiz-adv-x="416" +d="M48 324v-68h-48v68c0 33 28 60 61 60h67v-48h-68c-7 0 -12 -5 -12 -12zM356 384c33 0 60 -27 60 -60v-68h-48v68c0 7 -6 12 -13 12h-67v48h68zM368 61v67h48v-67c0 -33 -27 -61 -60 -61h-68v49h68c7 0 12 5 12 12zM60 49h68v-49h-67c-33 0 -61 28 -61 61v67h48v-67 +c0 -7 5 -12 12 -12z" /> + <glyph glyph-name="ion-quote" unicode="&#xf347;" horiz-adv-x="384" +d="M128 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15zM352 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15z" /> + <glyph glyph-name="ion-radio-waves" unicode="&#xf2ac;" horiz-adv-x="384" +d="M128 192c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM96 192c0 -9 1 -17 3 -25s6 -16 10 -23s8 -13 14 -19s12 -11 19 -15l-23 -23c-6 4 -12 10 -17 15c-25 25 -38 55 -38 90s13 65 38 90c6 6 11 11 17 15l23 -23c-14 -9 -25 -20 -33 -35 +s-13 -30 -13 -47zM288 192c0 11 -2 22 -6 33s-9 20 -16 28s-15 15 -24 21l23 23c6 -4 12 -10 17 -15c25 -25 38 -55 38 -90s-13 -65 -38 -90c-6 -6 -11 -11 -17 -15l-23 23c14 9 25 20 33 35s13 30 13 47zM32 192c0 -26 6 -50 17 -72s27 -41 47 -56l-23 -23 +c-6 5 -11 9 -17 15c-18 18 -31 38 -41 61c-10 24 -15 49 -15 75s5 51 15 75c10 23 23 43 41 61c6 6 11 10 17 15l23 -23c-13 -10 -24 -21 -34 -34s-17 -28 -22 -44s-8 -33 -8 -50zM352 192c0 26 -6 50 -17 72s-27 41 -47 56l22 23c6 -5 12 -9 18 -15c18 -18 31 -38 41 -61 +c10 -24 15 -49 15 -75s-5 -51 -15 -75c-10 -23 -23 -43 -41 -61c-6 -6 -12 -10 -18 -15l-22 23c20 15 36 34 47 56s17 46 17 72z" /> + <glyph glyph-name="ion-record" unicode="&#xf21b;" horiz-adv-x="416" +d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208z" /> + <glyph glyph-name="ion-refresh" unicode="&#xf21c;" horiz-adv-x="512" +d="M416 96l-104 112h73.5c-6.7002 65.4004 -63.0996 112 -129.5 112c-70.5996 0 -128 -57 -128 -128s57.4004 -128 128 -128c27.5 0 52.9004 7.90039 75 24.2002l6.2002 4.59961l43.2002 -46.2002l-7.5 -5.89941c-33.8008 -26.5 -74 -40.6006 -116.9 -40.7002 +c-91 0.200195 -167.4 63.5996 -187.1 148.6v0.100586c-0.200195 1 -0.5 2.09961 -0.700195 3.2002c-0.100586 0.399414 -0.200195 0.899414 -0.299805 1.39941c-0.100586 0.700195 -0.300781 1.40039 -0.400391 2.10059c-0.200195 0.799805 -0.299805 1.69922 -0.5 2.59961 +c-0.0996094 0.400391 -0.0996094 0.700195 -0.200195 1.09961c-0.200195 1.2002 -0.399414 2.40039 -0.599609 3.60059v0.200195c-0.900391 6.19922 -1.60059 12.5996 -1.90039 19.0996v0.900391c-0.0996094 1.39941 -0.200195 2.69922 -0.200195 4.09961 +c-0.0996094 1.7002 -0.0996094 3.2998 -0.0996094 5s0.0996094 3.40039 0.0996094 5c0.100586 1.40039 0.100586 2.7002 0.200195 4.09961v0.800781c0.299805 6.39941 0.900391 12.7998 1.90039 19.0996v0.200195c0.200195 1.2002 0.399414 2.39941 0.599609 3.59961 +c0.100586 0.400391 0.100586 0.700195 0.200195 1.10059c0.200195 0.899414 0.299805 1.69922 0.5 2.59961c0.0996094 0.700195 0.299805 1.40039 0.400391 2.09961c0.0996094 0.5 0.199219 0.900391 0.299805 1.40039c0.200195 1.09961 0.399414 2.2002 0.700195 3.2998 +v0.100586c19.6992 85 95.7998 148.399 186.699 148.6v0h0.400391c10.5996 0 21.0996 -0.900391 31.2002 -2.59961c0.5 0 0.899414 -0.100586 1.39941 -0.200195c0.700195 -0.100586 1.5 -0.299805 2.2002 -0.400391c57.2002 -10.5 105.601 -46.3994 133 -95.5996 +c13 -23.2998 21.2002 -49.4004 23.5 -77.2998h64.7002z" /> + <glyph glyph-name="ion-reply-all" unicode="&#xf21d;" horiz-adv-x="416" +d="M257 256c153 0 159 -208 159 -208c-51 93 -91 102 -159 102v-92l-152 134l152 144v-80zM0 192l144 136v-57l-82 -79l82 -68v-58z" /> + <glyph glyph-name="ion-reply" unicode="&#xf21e;" horiz-adv-x="384" +d="M384 48c-53 93 -122 102 -224 102v-92l-160 134l160 144v-80c187 0 224 -208 224 -208z" /> + <glyph glyph-name="ion-ribbon-a" unicode="&#xf348;" horiz-adv-x="352" +d="M272 416l80 -96l-64 -134c-24 30 -59 49 -99 53zM80 416l83 -177c-40 -4 -75 -23 -99 -53l-64 134zM189 416h67l-53 -112h-27h-27l-53 112h80h13zM176 224c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM176 0c53 0 96 43 96 96 +s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM176 184c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88z" /> + <glyph glyph-name="ion-ribbon-b" unicode="&#xf349;" horiz-adv-x="384" +d="M192 376c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88zM192 416c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM192 192c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM83 194c26 -30 65 -50 109 -50 +c12 0 23 1 34 4l-34 -74l-48 -106l-48 80h-96zM301 194l83 -146h-96l-48 -80l-40 88l45 98c22 9 41 23 56 40z" /> + <glyph glyph-name="ion-sad" unicode="&#xf34a;" +d="M367 164c3 -9 -2 -17 -11 -19c-3 -1 -7 0 -10 1c-5 2 -9 5 -11 10s-4 12 -13 15s-14 0 -19 -3c-4 -3 -10 -3 -15 -1c-3 1 -7 3 -9 6c-6 8 -3 17 5 22c15 9 29 13 49 6s29 -21 34 -37zM165 195c8 -5 10 -14 4 -22c-2 -3 -6 -5 -9 -6c-5 -2 -11 -2 -15 1c-5 3 -10 6 -19 3 +s-11 -10 -13 -15s-6 -8 -11 -10c-3 -1 -7 -2 -10 -1c-9 2 -14 10 -11 19c5 16 14 30 34 37s35 3 50 -6zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56 +s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM317 89c5 -7 3 -17 -4 -22c-3 -2 -6 -3 -9 -3c-5 0 -10 3 -13 7c0 0 -19 25 -67 25s-67 -25 -67 -25c-3 -4 -8 -7 -13 -7c-3 0 -6 1 -9 3c-7 5 -9 15 -4 22c1 2 28 39 93 39 +s92 -37 93 -39z" /> + <glyph glyph-name="ion-scissors" unicode="&#xf34b;" horiz-adv-x="384" +d="M341 332c-13 -33 -117 -172 -117 -172l-32 -32s-31 -13 -50 -43s-33 -71 -33 -71v0c-7 -26 -28 -46 -53 -46c-31 0 -56 29 -56 64s25 64 56 64c13 0 25 -5 34 -13c2 -1 3 -3 4 -4v0l2 -2c4 -4 7 -2 14 11c8 15 17 35 27 54s38 59 38 59l17 23l144 192 +c23 -20 18 -51 5 -84zM56 0c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32zM192 160c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM143 183c-30 41 -90 125 -100 149c-13 33 -18 64 5 84l134 -178l-3 -4v0v0l-17 -23v-1v0 +c-1 -1 -10 -13 -19 -27zM328 96c31 0 56 -29 56 -64s-25 -64 -56 -64c-25 0 -47 20 -54 46v0s-13 41 -32 71c-11 17 -26 28 -36 35l29 29l1 1h1c1 1 1 2 2 4c3 -4 5 -9 7 -12c10 -19 20 -39 28 -54c7 -13 10 -15 14 -11c1 1 0 1 1 2h1c1 1 2 3 4 4c9 8 21 13 34 13zM328 0 +c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32z" /> + <glyph glyph-name="ion-search" unicode="&#xf21f;" horiz-adv-x="384" +d="M381 61c4 -4 4 -10 0 -14l-43 -44c-2 -2 -5 -3 -8 -3s-5 1 -7 3l-84 86c-25 -15 -52 -23 -80 -23c-87 0 -159 71 -159 159s72 159 159 159s158 -71 158 -159c0 -27 -7 -54 -21 -78zM159 322c-53 0 -97 -43 -97 -97s44 -97 97 -97s96 43 96 97s-43 97 -96 97z" /> + <glyph glyph-name="ion-settings" unicode="&#xf2ad;" horiz-adv-x="416" +d="M402 310c10 -6 15 -25 14 -36c-1 -17 -7 -36 -25 -54c-1 -1 -2 -1 -3 -2c-26 -25 -62 -30 -94 -20c-1 1 -2 2 -4 2c-5 1 -10 0 -13 -4l-36 -39c52 -50 107 -96 107 -96c2 -2 2 -5 0 -7l-50 -51c-2 -2 -5 -2 -7 0c0 0 -44 55 -93 107l-92 -98c-14 -16 -40 -15 -55 0 +c-15 16 -15 42 1 56l97 93l-12 12c-2 2 -3 7 -1 10l2 5c-25 26 -36 33 -56 32s-36 -13 -48 -28s-10 -52 -8 -62s-7 -6 -12 0c-9 10 -23 50 -6 93s42 69 48 75s16 15 24 21s21 -1 27 5c4 4 5 11 5 16l-4 4c-2 2 -2 5 0 7l31 31c2 2 5 2 7 0l50 -50c2 -2 2 -6 0 -8l-31 -31 +c-2 -2 -5 -2 -7 0l-8 9c-7 0 -15 -5 -17 -10c-3 -6 -6 -21 -3 -33c3 -11 13 -20 36 -43l5 3c4 2 8 1 10 -1c0 0 1 -2 13 -14l38 37c4 3 5 7 4 13c0 2 0 4 -1 5c-10 33 -6 69 19 96l2 2c18 18 36 25 53 26c10 1 30 -5 35 -15l-48 -48l-2 -3l-1 -1c-1 -1 -1 -2 -1 -4 +s0 -3 1 -5l2 -2l2 -2l41 -42l3 -3l1 -1c1 -1 2 -1 4 -1s3 0 4 1l2 1l2 3z" /> + <glyph glyph-name="ion-share" unicode="&#xf220;" horiz-adv-x="384" +d="M288 70v59l38 31v-109c0 -11 -8 -19 -19 -19h-288c-11 0 -19 9 -19 19v218c0 11 8 19 19 19h120c-29 -18 -43 -38 -43 -38h-58v-180h250zM256 224c-84 0 -116 -24 -160 -96c0 0 5 164 160 164v60l128 -96l-128 -96v64z" /> + <glyph glyph-name="ion-shuffle" unicode="&#xf221;" +d="M338 267c-52 0 -83 -43 -120 -92c-41 -55 -88 -120 -171 -120h-47v63h47c52 0 84 47 121 96c41 55 87 116 170 116h29v54l81 -81l-81 -84v48h-29zM121 230c-21 21 -42 35 -74 36c-34 1 -47 0 -47 0v63h47c48 0 83 -20 113 -48c-10 -12 -19 -24 -28 -36 +c-4 -5 -7 -10 -11 -15zM367 118v47l81 -84l-81 -81v54h-29c-50 0 -87 23 -117 53c12 14 22 28 32 41c2 3 5 6 7 9c22 -24 46 -39 78 -39h29z" /> + <glyph glyph-name="ion-skip-backward" unicode="&#xf222;" horiz-adv-x="384" +d="M12 352h8c7 0 12 -5 12 -12v-113l187 122c2 2 5 3 8 3c8 0 16 -7 16 -17v-63l118 78c2 2 5 2 8 2c8 0 15 -7 15 -17v-286c0 -10 -7 -17 -15 -17c-3 0 -5 1 -8 3l-118 78v-64c0 -10 -8 -17 -16 -17c-3 0 -5 1 -8 3l-187 122v-113c0 -7 -5 -12 -12 -12h-8 +c-7 0 -12 5 -12 12v296c0 7 5 12 12 12z" /> + <glyph glyph-name="ion-skip-forward" unicode="&#xf223;" horiz-adv-x="384" +d="M372 352c7 0 12 -5 12 -12v-296c0 -7 -5 -12 -12 -12h-8c-7 0 -12 5 -12 12v113l-187 -122c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v64l-119 -78c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v286c0 10 7 17 15 17c3 0 6 0 8 -2l119 -78v63c0 10 7 17 15 17c3 0 6 -1 8 -3 +l187 -122v113c0 7 5 12 12 12h8z" /> + <glyph glyph-name="ion-social-android-outline" unicode="&#xf224;" horiz-adv-x="352" +d="M272 240h-192v-60v-89h24h16v-15v-52c0 -4 4 -8 8 -8s8 4 8 8v52v15h17h49h15v-15v-52c0 -2 1 -4 3 -6h1v0c1 -1 2 -2 4 -2h1v0v0c4 0 7 4 7 8v52v15h17h22v89v60zM288 256v0v-76v-90c0 -7 -3 -15 -10 -15h-29v-51c0 -13 -10 -24 -23 -24v0h-1c-6 0 -11 2 -15 5 +c-5 4 -9 11 -9 19v51h-49v-51c0 -13 -11 -24 -24 -24s-24 11 -24 24v51h-28c-7 0 -12 8 -12 15v90v76h224zM328 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM328 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96 +c0 13 11 24 24 24zM24 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM24 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM175 354c-14 0 -27 -3 -38 -6l-10 -4c-28 -12 -40 -37 -44 -56h186 +c-4 18 -15 43 -44 56l-10 4c-12 4 -25 6 -39 6v0v0h-1zM105 384v0h1l19 -23c13 5 30 9 50 9h1c20 0 36 -4 50 -9l20 23v0s1 -1 2 -1c1 -1 2 -3 2 -3l-19 -22c48 -21 56 -71 57 -86h-224c1 15 9 66 57 87l-19 22c0 1 1 1 2 2zM127 309c-7 0 -14 6 -14 13s6 14 14 14 +c7 0 13 -7 13 -14s-5 -13 -13 -13zM225 309c-7 0 -13 6 -13 13s5 14 13 14c7 0 13 -7 13 -14s-6 -13 -13 -13z" /> + <glyph glyph-name="ion-social-android" unicode="&#xf225;" horiz-adv-x="352" +d="M64 180v76h224v-76v-90c0 -7 -4 -14 -11 -14h-28v-52c0 -13 -11 -24 -24 -24v0h-1c-6 0 -10 2 -14 5c-5 4 -9 11 -9 19v52h-49v-52c0 -13 -11 -24 -24 -24s-24 11 -24 24v52h-29c-7 0 -11 7 -11 14v90zM328 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24 +s-24 11 -24 24v96c0 13 11 24 24 24zM24 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM231 359c48 -21 56 -72 57 -87h-224c1 15 8 66 56 87l-18 22c0 1 0 1 1 2s3 1 3 1l19 -23c14 5 31 9 51 9s36 -4 50 -9l20 23c0 1 1 0 2 -1 +l2 -2zM127 309c8 0 13 6 13 13s-6 14 -13 14c-8 0 -14 -7 -14 -14s7 -13 14 -13zM225 309c7 0 14 6 14 13s-7 14 -14 14c-8 0 -13 -7 -13 -14s6 -13 13 -13z" /> + <glyph glyph-name="ion-social-apple-outline" unicode="&#xf226;" horiz-adv-x="320" +d="M238 278c-15 0 -26 -4 -37 -8c-10 -4 -21 -8 -35 -8s-25 4 -37 8c-11 4 -22 8 -34 8c-11 0 -23 -3 -34 -10c-12 -7 -23 -18 -31 -31c-12 -18 -16 -47 -13 -77c3 -34 16 -69 35 -99c13 -21 30 -45 50 -45h1c8 0 13 3 20 6c10 5 23 10 44 10v0c21 0 34 -5 44 -10 +c7 -3 12 -6 19 -6v0c22 0 44 35 52 48c8 12 12 20 17 31c-12 7 -22 16 -30 28c-10 15 -17 33 -18 52c-1 18 2 37 10 53c6 12 14 22 24 30c-14 13 -31 20 -47 20zM238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1 +c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16zM214 364c-11 -5 -21 -13 -28 -22c-4 -5 -9 -13 -13 -23c-1 -3 -2 -6 -2 -9c11 4 21 11 28 21c4 5 12 18 15 33z +M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> + <glyph glyph-name="ion-social-apple" unicode="&#xf227;" horiz-adv-x="320" +d="M238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16z +M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> + <glyph glyph-name="ion-social-bitcoin-outline" unicode="&#xf2ae;" horiz-adv-x="320" +d="M184 400h-8v-48v-16h-16h-32h-16v16v48h-9v-48v-16h-16h-72v-16h13c11 0 19 0 25 -3s10 -7 13 -13s3 -8 3 -20v-178c0 -11 0 -18 -3 -24v-1c-1 -3 -4 -10 -12 -14h-1c-5 -3 -8 -3 -17 -3h-13l-3 -16h67h16v-16v-48h9v48v16h16h32h16v-16v-48h8v49v16h15c23 1 41 5 55 10 +c16 6 28 15 37 26c8 11 12 29 13 42c1 14 -1 29 -4 36s-8 16 -21 23c-7 4 -14 6 -21 8l-46 11l43 19c4 2 7 4 12 9c6 5 9 12 11 16c2 5 4 13 3 22c-1 17 -4 29 -10 37c-7 9 -17 16 -31 21c-12 5 -24 7 -41 8l-15 1v15v47zM200 416v0v-63c20 -1 32 -4 45 -9 +c16 -6 29 -15 38 -27s12 -28 13 -45c1 -10 0 -20 -3 -28s-8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 24 -18 29 -30c4 -10 6 -30 5 -44c-1 -16 -6 -37 -16 -51c-11 -14 -26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-65h-40v64h-32v-64h-41v64h-87l8 48h28 +c9 0 8 1 11 2s4 3 5 6s1 9 1 18v178c0 9 0 10 -1 12s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40zM160 298v-74h-32v74h32zM160 176v0v-90h-32v90h32zM200 294v0c6 -2 10 -7 14 -12c4 -6 6 -13 6 -21s-2 -15 -7 -21c-4 -5 -7 -9 -13 -12v66zM200 174v0 +c5 -1 8 -1 12 -3c8 -3 14 -7 19 -13s8 -15 8 -24c0 -11 -2 -19 -10 -26s-13 -11 -23 -15c-2 -1 -4 0 -6 -1v82z" /> + <glyph glyph-name="ion-social-bitcoin" unicode="&#xf2af;" horiz-adv-x="320" +d="M314 169c4 -10 7 -30 6 -44c-1 -16 -5 -37 -16 -51s-26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-64h-40v64h-32v-64h-41v64h-87l9 48h26c9 0 9 0 12 1s4 4 5 7s2 8 2 17v173c0 9 -1 16 -2 18s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40v-64c20 -1 33 -4 46 -9 +c16 -6 28 -15 37 -27s12 -28 13 -45c1 -10 0 -20 -3 -28c-2 -8 -8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 23 -18 28 -30zM128 298v-74h32v74h-32zM128 86h32v90h-32v-90zM200 294v-66c6 3 9 7 13 12c5 6 7 12 7 20s-2 15 -6 21c-4 5 -8 11 -14 13z +M229 107c8 7 10 15 10 26c0 9 -3 19 -8 25s-12 10 -20 13c-4 2 -6 2 -11 3v-82c2 0 5 1 7 2c10 4 14 6 22 13z" /> + <glyph glyph-name="ion-social-buffer-outline" unicode="&#xf228;" horiz-adv-x="384" +d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM183 366l-156 -75l156 -75c2 -1 5 -1 9 -1s7 0 9 1l156 75l-156 75c-2 1 -5 2 -9 2s-7 -1 -9 -2zM377 200c9 -4 9 -12 0 -16l-169 -81 +c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM201 117l156 75l-19 9l-123 -59c-6 -3 -15 -5 -23 -5s-17 2 -23 5l-123 59l-19 -9l156 -75 +c2 -1 5 -2 9 -2s7 1 9 2zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17zM201 18l156 75l-19 9 +l-123 -60c-6 -3 -15 -4 -23 -4s-17 1 -23 4l-123 60l-19 -9l156 -75c2 -1 5 -2 9 -2s7 1 9 2z" /> + <glyph glyph-name="ion-social-buffer" unicode="&#xf229;" horiz-adv-x="384" +d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM377 200c9 -4 9 -12 0 -16l-169 -81c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0 +s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3 +c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17z" /> + <glyph glyph-name="ion-social-designernews-outline" unicode="&#xf22a;" +d="M259 302v-53l-65 103zM0 188zM297 352l151 -119v-201h-248l-200 156h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h41l-2 98l63 -98h36v84v80zM432 48v178l-119 92v1v-47v-83v-17h-15h-37h-9l-4 8l-33 50l1 -42v-16h-16h-41h-16v16v29c-3 -6 -7 -12 -12 -17 +c-8 -9 -18 -16 -30 -21s-24 -7 -38 -7h-16l159 -124h226zM59 298h-1h-3v-57h4c8 0 13 2 17 6c5 6 6 15 6 22c0 26 -12 29 -23 29zM59 314v0c25 0 39 -16 39 -45c0 -28 -14 -44 -40 -44h-19v89h20z" /> + <glyph glyph-name="ion-social-designernews" unicode="&#xf22b;" +d="M258 303l1 -53l-64 102zM297 352l151 -118v-202h-248l-200 157v0h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h40l-2 99l64 -99h36v83v80zM98 270c0 -28 -14 -44 -40 -44h-19v89h19c26 0 40 -16 40 -45z" /> + <glyph glyph-name="ion-social-dribbble-outline" unicode="&#xf22c;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM314 296c-17 -25 -47 -47 -85 -64c5 -10 9 -20 13 -31c33 3 75 4 110 2c-2 35 -16 68 -38 93zM192 352c-14 0 -26 -2 -39 -5c23 -23 43 -53 62 -87c34 14 62 33 79 55 +c-28 23 -63 37 -102 37zM120 334c-41 -21 -71 -58 -83 -103h25c44 0 85 6 121 17c-19 34 -40 63 -63 86zM32 200v-8c0 -40 15 -78 40 -106c24 45 67 83 122 106c4 2 8 3 14 4c-3 8 -6 16 -10 24c-40 -13 -88 -20 -138 -21c-9 0 -19 1 -28 1zM192 32c20 0 39 3 57 10 +c-3 25 -8 53 -15 79c-4 17 -10 33 -16 49c-7 -2 -13 -4 -17 -6c-48 -22 -86 -56 -107 -98c27 -21 61 -34 98 -34zM278 58c40 26 68 67 73 116c-30 2 -68 3 -99 0c4 -12 9 -25 12 -38c7 -27 11 -52 14 -78z" /> + <glyph glyph-name="ion-social-dribbble" unicode="&#xf22d;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM192 32c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM242 201c-4 11 -8 21 -13 31c25 11 47 24 63 39c15 -19 26 -42 28 -67c-26 0 -55 -1 -78 -3z +M271 292c-15 -12 -34 -23 -56 -32c-12 22 -24 41 -38 59c5 1 10 1 15 1c30 0 57 -11 79 -28zM142 310c15 -18 28 -39 41 -62c-34 -10 -72 -16 -113 -17c11 36 38 65 72 79zM319 176c-4 -33 -21 -63 -46 -83c-3 14 -5 28 -9 43c-3 13 -8 26 -12 38c21 2 45 3 67 2zM194 192 +c-43 -18 -79 -46 -104 -78c-16 22 -26 49 -26 78v7c49 1 95 8 134 21c4 -8 7 -16 10 -24c-6 -1 -10 -2 -14 -4zM219 170c6 -16 11 -32 15 -49c4 -15 7 -31 10 -46c-16 -7 -34 -11 -52 -11c-31 0 -59 11 -81 29c22 30 53 54 90 71c4 2 11 4 18 6z" /> + <glyph glyph-name="ion-social-dropbox-outline" unicode="&#xf22e;" horiz-adv-x="384" +d="M113 371l79 -66l-114 -71l-78 63zM27 295l52 -42l86 53l-53 46zM306 235l78 -63l-78 -51v-39l-114 -69l-114 68v39l-78 52l78 63l114 -71l-79 -66l-19 12v-20l98 -59l98 59v20l-19 -12l-79 66zM79 217l-52 -44l85 -55l53 44zM219 162l53 -44l85 56l-52 43zM384 297 +l-78 -63l-114 71l79 66zM219 305l86 -52l52 42l-85 56z" /> + <glyph glyph-name="ion-social-dropbox" unicode="&#xf22f;" horiz-adv-x="384" +d="M113 371l79 -66l-114 -71l-78 63zM0 172l78 62l114 -70l-79 -66zM192 164l114 70l78 -62l-113 -74zM384 297l-78 -63l-114 71l79 66zM192 150l80 -66l34 22v-25l-114 -68l-114 68v25l34 -22z" /> + <glyph glyph-name="ion-social-facebook-outline" unicode="&#xf230;" horiz-adv-x="192" +d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38zM170 208l4 32h-45h-17v17v37c0 10 1 21 9 30c10 11 25 12 37 12h18v32h-40c-28 0 -49 -6 -60 -18c-10 -11 -15 -27 -15 -51v-43v-16h-15h-30v-32h30h15v-16 +v-176h51v176v16h17h41z" /> + <glyph glyph-name="ion-social-facebook" unicode="&#xf231;" horiz-adv-x="192" +d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38z" /> + <glyph glyph-name="ion-social-foursquare-outline" unicode="&#xf34c;" +d="M439 298c12 -12 12 -32 0 -44l-196 -197c-6 -6 -14 -9 -22 -9h-5v0c-6 1 -13 4 -17 9l-118 119c-12 12 -12 31 0 43l35 35c6 6 13 9 21 9s16 -3 22 -9l62 -62l140 141c6 6 13 9 21 9v0c8 0 16 -3 22 -9zM221 80l194 196l-33 33l-161 -162l-84 84l-33 -33zM338 323l-77 78 +zM259 402c-10 9 -23 14 -36 14s-25 -5 -35 -14c20 18 51 18 71 0zM431 229c11 -11 17 -23 17 -37c0 -13 -6 -26 -17 -37l-170 -172c-10 -10 -25 -15 -38 -15s-27 5 -37 15l-171 172c-20 20 -20 54 0 74l171 172c1 1 1 0 2 1c10 9 22 14 35 14s26 -5 36 -14c1 -1 1 0 2 -1 +l77 -78l-23 -22l-77 77c-4 4 -9 6 -15 6s-10 -2 -14 -6l-171 -171c-8 -8 -8 -22 0 -30l171 -171c4 -4 8 -6 14 -6s11 2 15 6l171 171c8 8 8 22 0 30h-1l23 23v-1z" /> + <glyph glyph-name="ion-social-foursquare" unicode="&#xf34d;" +d="M444 302c3 -3 4 -6 4 -10s-1 -8 -4 -11l-213 -213c-3 -3 -6 -4 -10 -4v0v0h-2c-3 0 -7 2 -9 4l-118 119c-6 6 -6 15 0 21l35 35c3 3 6 4 10 4s8 -1 11 -4l73 -73l167 167c3 3 6 5 10 5s8 -2 11 -5zM431 230v-1c11 -11 17 -23 17 -37s-6 -25 -17 -37l-170 -172 +c-20 -20 -55 -20 -75 0l-171 172c-10 10 -15 24 -15 37s5 27 15 37l171 172c10 10 24 15 38 15s27 -5 37 -15l77 -78l-116 -116l-55 55c-8 8 -18 12 -29 12s-21 -4 -29 -12l-35 -35c-8 -8 -12 -18 -12 -29s4 -21 12 -29l119 -119c5 -5 12 -10 19 -12h2h8c11 0 21 4 29 12z +" /> + <glyph glyph-name="ion-social-freebsd-devil" unicode="&#xf2c4;" horiz-adv-x="512" +d="M503 333c19 -37 8 -81 -20 -108s-60 -33 -60 -33c2 -32 16 -59 -41 -102c-43 -32 2 -90 2 -90c10 -14 23 -19 32 -32h-272s15 14 -7 32c0 0 -20 17 -18 29s6 13 9 15s0 7 0 7l-19 19s-13 -13 -44 -13c-38 0 -65 39 -65 39h46s-6 -8 -7 -13c-1 -4 1 -5 1 -5s11 -6 22 -6 +c17 0 33 12 33 12l-24 22l-15 -4l-16 37l39 -10l-1 -15l28 -18s9 9 7 27s-9 26 -9 26s-4 0 -9 -4s-6 -6 -6 -6l-10 44s43 -19 50 -63c3 -20 -6 -35 -6 -35l17 -10s6 5 17 7s23 2 29 -8s5 -12 4 -19s0 -9 6 -11s6 -6 11 -8s15 -6 21 -2s8 11 8 18v16s-9 8 -32 20 +s-54 22 -66 40s-12 44 0 57c9 10 23 25 26 35c4 14 4 42 4 42s-10 16 -8 40c2 30 22 84 96 114c0 0 -40 -55 -20 -80c0 0 37 11 77 9c31 -2 56 -12 73 -28s25 -23 47 -17s28 17 28 33c0 19 -16 51 -16 51s36 -7 58 -51zM195 245c14 4 21 -11 21 -11c14 25 30 60 22 64 +s-64 -25 -66 -88c0 0 6 31 23 35zM232 230c5 7 34 8 37 -17c4 -35 -24 -57 -24 -57s7 -2 23 2c17 4 43 29 43 70s-21 66 -41 62s-38 -60 -38 -60z" /> + <glyph glyph-name="ion-social-github-outline" unicode="&#xf232;" +d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 +c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 +c-89 30 -153 116 -153 218c0 127 100 230 224 230zM146 -0c-15 0 -28 4 -38 9c14 -10 28 -17 44 -23v6v8h-6zM157 73c-16 4 -35 10 -52 24c6 -6 11 -11 13 -16c7 -12 14 -17 25 -17c4 0 9 1 12 2c1 2 1 5 2 7zM347 14c17 13 32 28 45 46c26 37 40 80 40 126 +c0 29 -5 58 -16 84c-10 25 -26 48 -45 68s-41 34 -66 45c-26 11 -53 17 -81 17s-55 -6 -81 -17c-25 -11 -47 -25 -66 -45s-35 -42 -45 -68c-11 -26 -16 -55 -16 -84c0 -46 14 -89 40 -126c10 -14 22 -27 35 -38c-7 8 -11 16 -13 22c-7 18 -15 24 -17 25h-2v1 +c-5 3 -20 13 -15 28c3 9 12 15 25 15h1v0v0c13 -1 24 -6 32 -13c-21 19 -37 48 -37 98c0 24 7 47 21 66c-3 13 -6 34 5 62l3 8l7 2c2 0 5 1 10 1c12 0 31 -3 60 -22c17 4 35 6 53 6v0v0c18 0 36 -2 53 -6c29 19 48 22 60 22c5 0 8 -1 10 -1l7 -2l3 -7c11 -27 8 -50 5 -63 +c14 -19 21 -41 21 -66c0 -92 -55 -117 -92 -125c3 -8 5 -18 5 -30v-51v-6c18 7 35 16 51 28z" /> + <glyph glyph-name="ion-social-github" unicode="&#xf233;" +d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 +c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 +c-89 30 -153 116 -153 218c0 127 100 230 224 230z" /> + <glyph glyph-name="ion-social-google-outline" unicode="&#xf34e;" horiz-adv-x="256" +d="M191 366c12 -10 37 -30 37 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -17 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 2 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 11 48 33 67c29 24 63 28 91 28h106l-33 -18h-32zM155 142c-4 1 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -25 -11 -38c0 -34 20 -89 64 -89c13 0 27 6 35 14z" /> + <glyph glyph-name="ion-social-google" unicode="&#xf34f;" horiz-adv-x="288" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -48 -99 -140 -99c-80 0 -115 39 -115 77c0 10 3 42 42 65c27 16 61 20 85 22c-4 7 -8 16 -8 27c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 70 29 95 29h133l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 20 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 38 -15 54c-7 13 -20 27 -40 27c-11 0 -22 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -32 -2 -51 -8c-16 -6 -37 -16 -37 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44z" /> + <glyph glyph-name="ion-social-googleplus-outline" unicode="&#xf234;" +d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1 +c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 +c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" /> + <glyph glyph-name="ion-social-googleplus" unicode="&#xf235;" +d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13 +c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z +M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" /> + <glyph glyph-name="ion-social-hackernews-outline" unicode="&#xf236;" horiz-adv-x="384" +d="M352 352h-320v-320h320v320zM384 384v0v-384h-384v384h384zM233 289h45l-64 -120v-72h-40v72l-66 120h47l40 -84z" /> + <glyph glyph-name="ion-social-hackernews" unicode="&#xf237;" horiz-adv-x="384" +d="M0 384h384v-384h-384v384zM214 169l64 120h-45l-38 -84l-40 84h-47l66 -120v-72h40v72z" /> + <glyph glyph-name="ion-social-instagram-outline" unicode="&#xf350;" horiz-adv-x="384" +d="M384 336v-289c0 -26 -22 -47 -48 -47h-288c-26 0 -48 21 -48 47v289c0 26 22 48 48 48h288c26 0 48 -22 48 -48zM192 272c-44 0 -80 -36 -80 -80s36 -80 80 -80s80 36 80 80s-36 80 -80 80zM352 288v48c0 9 -7 16 -16 16h-48c-9 0 -16 -7 -16 -16v-48c0 -9 7 -16 16 -16 +h48c9 0 16 7 16 16zM337 32c9 0 15 7 15 16v176h-52c3 -10 4 -21 4 -32c0 -30 -11 -58 -32 -79s-50 -33 -80 -33s-58 12 -79 33s-33 49 -33 79c0 11 2 22 5 32h-53v-176c0 -9 8 -16 17 -16h288z" /> + <glyph glyph-name="ion-social-instagram" unicode="&#xf351;" horiz-adv-x="384" +d="M112 192c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM113 271c-14 -14 -23 -29 -28 -47h-85v112c0 13 4 25 14 34s22 14 35 14h288c13 0 24 -5 33 -14s14 -21 14 -34v-112h-84c-5 18 -14 33 -28 47c-22 22 -49 33 -80 33s-57 -11 -79 -33zM352 300 +v39c0 4 -2 7 -4 9s-5 4 -9 4h-38c-4 0 -7 -2 -9 -4s-4 -5 -4 -9v-39c0 -4 2 -7 4 -9s5 -3 9 -3h38c4 0 7 1 9 3s4 5 4 9zM272 113c22 22 32 48 32 79h80v-144c0 -13 -5 -24 -14 -34s-20 -14 -33 -14h-288c-13 0 -24 4 -34 14s-15 21 -15 34v144h81c0 -31 10 -57 32 -79 +s48 -33 79 -33s58 11 80 33z" /> + <glyph glyph-name="ion-social-linkedin-outline" unicode="&#xf238;" horiz-adv-x="384" +d="M119 64v0h-55v171h55v-171zM93 261v0v0c-18 0 -29 13 -29 29c0 17 12 30 30 30s29 -13 29 -30c0 -16 -12 -29 -30 -29zM257 239c36 0 63 -24 63 -75v-100h-55v94c0 22 -8 37 -28 37c-15 0 -24 -10 -28 -20c-2 -4 -2 -9 -2 -14v-97h-55v171h55v-24c8 11 21 28 50 28z +M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM350 32c1 0 2 1 2 2v316c0 1 -1 2 -2 2h-316s-2 -1 -2 -2v-315s1 -3 3 -3h315z" /> + <glyph glyph-name="ion-social-linkedin" unicode="&#xf239;" horiz-adv-x="384" +d="M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM119 64v171h-55v-171h55zM93 261c18 0 30 13 30 29c0 17 -11 30 -29 30s-30 -13 -30 -30c0 -16 11 -29 29 -29v0zM320 64v100c0 51 -27 75 -63 75 +c-29 0 -42 -17 -50 -28v24h-55v-171h55v97c0 5 0 10 2 14c4 10 13 20 28 20c20 0 28 -15 28 -37v-94h55z" /> + <glyph glyph-name="ion-social-pinterest-outline" unicode="&#xf2b0;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136c14 -14 31 -25 48 -34c1 6 2 10 3 16c4 18 29 122 29 122 +s-8 15 -8 36c0 33 20 58 44 58c20 0 30 -16 30 -34c0 -20 -13 -51 -20 -79c-6 -24 12 -43 35 -43c42 0 71 54 71 119c0 49 -33 85 -93 85c-68 0 -110 -50 -110 -107c0 -20 6 -33 15 -44c4 -5 5 -6 3 -12c-1 -4 -4 -14 -5 -18c-2 -6 -6 -8 -11 -6c-31 13 -46 48 -46 86 +c0 64 54 140 160 140c86 0 142 -63 142 -129c0 -88 -49 -153 -121 -153c-24 0 -47 13 -55 28c0 0 -12 -52 -15 -62c-2 -6 -4 -13 -7 -19c15 -4 31 -6 47 -6c51 0 100 20 136 56z" /> + <glyph glyph-name="ion-social-pinterest" unicode="&#xf2b1;" +d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-22 0 -44 3 -64 9c8 14 18 31 23 48c3 10 16 62 16 62c8 -15 30 -28 54 -28c72 0 121 65 121 153c0 66 -56 129 -142 129c-106 0 -160 -76 -160 -140c0 -39 15 -73 46 -86c5 -2 10 0 12 6c1 4 3 14 4 18 +c2 6 1 7 -3 12c-9 11 -15 24 -15 44c0 57 42 107 110 107c60 0 94 -36 94 -85c0 -65 -29 -119 -71 -119c-24 0 -42 19 -36 43c7 28 20 59 20 79c0 18 -10 34 -30 34c-24 0 -43 -25 -43 -58c0 -21 7 -36 7 -36s-25 -104 -29 -122c-4 -17 -5 -35 -4 -51 +c-79 35 -134 113 -134 205c0 124 100 224 224 224z" /> + <glyph glyph-name="ion-social-reddit-outline" unicode="&#xf23a;" horiz-adv-x="449" +d="M259 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM127 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM449 197c0 -20 -9 -36 -27 -45c1 -5 1 -9 1 -14c0 -38 -19 -71 -58 -98s-85 -40 -140 -40s-102 13 -141 40 +s-58 59 -58 97c0 5 0 10 1 15c-18 9 -27 24 -27 45c0 14 5 25 15 35s21 15 35 15c13 0 24 -4 33 -13c36 25 79 39 129 41h7l29 98l86 -17c8 19 21 28 41 28c12 0 22 -4 31 -13s13 -20 13 -32s-4 -23 -13 -32s-19 -13 -31 -13s-23 4 -32 13s-13 19 -13 31l-69 14l-24 -77 +c50 -2 94 -16 129 -41c10 9 21 13 34 13c9 0 16 -3 24 -7s14 -10 18 -18s7 -16 7 -25zM375 366c-4 0 -8 -1 -11 -2s-6 -4 -8 -6s-5 -6 -6 -9s-2 -6 -2 -10c0 -8 3 -14 8 -19s12 -8 19 -8c5 0 9 1 13 3s8 6 10 10s4 9 4 14c0 8 -3 14 -8 19s-12 8 -19 8zM18 197 +c0 -11 5 -20 14 -27c7 19 19 37 37 53c-6 4 -12 6 -19 6c-3 0 -7 0 -10 -1s-6 -3 -9 -5s-5 -4 -7 -7s-4 -6 -5 -9s-1 -6 -1 -10zM355 55c34 23 50 51 50 83v9c-1 6 -3 12 -5 18c-6 16 -15 30 -30 43c-5 4 -10 9 -15 12v0c-36 25 -79 37 -130 37s-95 -12 -131 -37v0 +c-5 -3 -10 -8 -15 -12c-15 -13 -24 -27 -30 -43c-2 -6 -4 -12 -5 -18v-9c0 -32 16 -60 50 -83c36 -25 80 -37 131 -37s94 12 130 37zM417 170c9 6 14 16 14 27c0 9 -3 17 -9 23s-13 9 -22 9c-7 0 -14 -2 -20 -6c18 -16 30 -34 37 -53zM289 90l13 -12 +c-20 -20 -45 -30 -77 -30s-58 10 -78 30l13 12c16 -16 38 -24 65 -24s48 8 64 24z" /> + <glyph glyph-name="ion-social-reddit" unicode="&#xf23b;" horiz-adv-x="449" +d="M449 197c0 -20 -11 -37 -27 -45c1 -5 1 -9 1 -14c0 -76 -89 -138 -199 -138s-198 61 -198 137c0 5 0 10 1 15c-16 8 -27 25 -27 45c0 28 23 50 50 50c13 0 24 -5 33 -13c33 23 79 39 129 41h2l31 103l90 -18c8 14 22 24 39 24v0h1c25 0 44 -20 44 -45s-19 -45 -44 -45h-1 +v0c-23 0 -42 17 -44 40l-67 14l-22 -74c49 -3 93 -17 125 -40c9 8 21 13 34 13c27 0 49 -22 49 -50zM34 177c5 15 15 29 29 41c-4 3 -9 5 -15 5c-14 0 -25 -11 -25 -25c0 -9 4 -17 11 -21zM358 339c0 -9 7 -17 16 -17s17 8 17 17s-8 17 -17 17s-16 -8 -16 -17zM127 160 +c0 -18 14 -32 32 -32s32 14 32 32s-14 31 -32 31s-32 -13 -32 -31zM224 48c48 0 77 29 78 30l-13 12s-25 -24 -65 -24c-41 0 -64 24 -64 24l-13 -12c1 -1 29 -30 77 -30zM291 128c18 0 32 14 32 32s-14 31 -32 31s-32 -13 -32 -31s14 -32 32 -32zM415 176c7 5 11 13 11 22 +c0 14 -11 25 -25 25c-6 0 -11 -2 -15 -5c14 -12 24 -27 29 -42z" /> + <glyph glyph-name="ion-social-rss-outline" unicode="&#xf23c;" horiz-adv-x="384" +d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM56 16c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM240 16c-2 26 -8 52 -19 77 +c-12 28 -30 54 -52 76s-48 40 -76 52c-25 10 -51 16 -77 18v-47c50 -3 92 -22 123 -53s50 -73 53 -123h48zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80zM227 228c56 -56 89 -131 93 -212h48c-8 190 -162 344 -352 352v-48c81 -4 155 -36 211 -92z" /> + <glyph glyph-name="ion-social-rss" unicode="&#xf23d;" horiz-adv-x="384" +d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80z" /> + <glyph glyph-name="ion-social-skype-outline" unicode="&#xf23e;" horiz-adv-x="384" +d="M106 352c-41 0 -74 -33 -74 -73c0 -13 4 -25 10 -36l6 -11l-2 -12c-2 -10 -3 -20 -3 -30c0 -40 16 -77 44 -105s67 -44 107 -44c9 0 19 1 28 3l11 2l9 -5c11 -6 24 -9 36 -9c41 0 74 33 74 73c0 11 -3 22 -8 32l-5 10l3 11c2 10 3 21 3 32c0 40 -16 77 -44 105 +s-67 43 -107 43c-9 0 -18 0 -26 -2l-12 -2l-10 7c-12 7 -26 11 -40 11zM106 384v0c21 0 40 -6 56 -16c10 2 21 2 32 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3 +c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105zM288 104c-8 -12 -21 -21 -37 -28s-36 -10 -58 -10c-26 0 -48 5 -65 14c-12 7 -22 15 -30 26s-12 22 -12 33c0 7 3 12 8 17s11 7 19 7c6 0 12 -2 16 -6s7 -8 10 -15s7 -13 11 -18 +s8 -9 15 -12s16 -5 27 -5c15 0 28 4 37 10s13 13 13 22c0 7 -2 13 -7 17c-5 5 -11 9 -19 11c-8 3 -20 5 -34 8c-19 4 -35 9 -48 14c-13 6 -24 13 -32 23s-11 22 -11 36s4 25 12 36c8 10 20 19 36 25c15 6 34 8 54 8c16 0 30 -1 42 -5s23 -9 31 -15s14 -13 18 -20 +s5 -14 5 -21c0 -6 -2 -12 -7 -17s-11 -8 -19 -8c-7 0 -12 2 -16 5c-3 3 -7 7 -11 14c-5 8 -10 15 -16 20s-17 8 -31 8c-13 0 -23 -3 -31 -8s-12 -11 -12 -18c0 -4 2 -7 4 -10c3 -3 6 -6 11 -8s10 -5 15 -6s13 -3 25 -6c15 -3 28 -6 40 -10s23 -8 32 -14s15 -13 20 -22 +s8 -20 8 -32c0 -15 -5 -28 -13 -40z" /> + <glyph glyph-name="ion-social-skype" unicode="&#xf23f;" horiz-adv-x="384" +d="M373 151c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105c21 0 41 -6 57 -16c10 2 20 2 31 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39z +M288 104c9 12 12 25 12 40c0 12 -2 23 -7 32s-12 16 -21 22s-19 10 -31 14s-26 7 -41 10c-12 3 -20 5 -25 6s-10 4 -15 6s-7 5 -10 8c-2 3 -4 6 -4 10c0 7 3 13 11 18s19 7 32 7c14 0 25 -2 31 -7s11 -12 16 -20c4 -7 8 -11 11 -14c4 -3 9 -5 16 -5c8 0 13 3 18 8s8 11 8 17 +c0 7 -2 14 -6 21s-10 14 -18 20s-18 11 -30 15s-27 5 -43 5c-20 0 -38 -2 -53 -8c-16 -6 -28 -15 -36 -25c-8 -11 -12 -22 -12 -36s3 -26 11 -36s19 -17 32 -23c13 -5 29 -10 48 -14c14 -3 26 -5 34 -8c8 -2 14 -6 19 -11c5 -4 7 -10 7 -17c0 -9 -4 -17 -13 -23 +s-22 -9 -37 -9c-11 0 -20 2 -27 5s-11 6 -15 11s-8 12 -11 19s-6 11 -10 15s-10 6 -16 6c-8 0 -14 -2 -19 -7s-8 -10 -8 -17c0 -11 4 -22 12 -33s18 -19 30 -26c17 -9 39 -14 65 -14c22 0 42 3 58 10s29 16 37 28z" /> + <glyph glyph-name="ion-social-tumblr-outline" unicode="&#xf240;" horiz-adv-x="256" +d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 +c9 -6 19 -8 31 -8zM240 17v29c-15 -6 -31 -10 -47 -10c-15 0 -28 3 -40 10c-10 6 -17 15 -21 25c-2 6 -4 17 -4 52v117h96v32h-96v112h-32c-2 -16 -7 -36 -14 -50c-8 -16 -17 -29 -30 -40c-11 -9 -23 -17 -36 -23v-31h48v-156c0 -21 2 -32 4 -38c3 -8 10 -15 18 -22 +c9 -8 19 -14 31 -18c13 -4 29 -6 46 -6c16 0 28 2 41 5c11 2 23 6 36 12z" /> + <glyph glyph-name="ion-social-tumblr" unicode="&#xf241;" horiz-adv-x="256" +d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 +c9 -6 19 -8 31 -8z" /> + <glyph glyph-name="ion-social-tux" unicode="&#xf2c5;" horiz-adv-x="384" +d="M191 347c2 2 3 4 5 5c-3 -2 -5 -4 -7 -8c0 1 1 2 2 3zM362 52c7 -4 22 -10 22 -20s-16 -16 -42 -30s-33 -34 -61 -34s-26 17 -37 20s-35 3 -48 3s-33 -1 -42 -4s-23 -19 -38 -19s-26 9 -56 16s-60 7 -60 23s11 17 7 31s-7 25 -4 30s10 4 19 5s19 2 22 11c1 5 -2 17 5 25 +c-4 16 -2 27 10 44c17 23 14 38 23 53s32 36 37 45c9 16 9 22 8 55s-2 50 -2 50c0 33 20 60 58 60h14c38 0 64 -32 65 -69c0 -19 -6 -38 4 -67c0 0 12 -20 22 -33s37 -43 45 -68s13 -56 12 -66c-1 -6 -1 -9 -3 -11c3 -1 6 -2 8 -5c3 -4 2 -11 0 -26c-1 -8 5 -15 12 -19z +M138 -3c1 13 -4 21 -17 43s-32 58 -46 65c0 0 -4 2 -8 2s-12 3 -15 -7c-2 -7 0 -19 -2 -22c-2 -4 -9 -9 -14 -10s-22 -1 -25 -5s1 -12 5 -24s-6 -18 -7 -23s-2 -12 7 -15s33 -7 46 -9c15 -3 38 -14 51 -15c12 -1 24 7 25 20zM254 62c-2 10 -5 28 1 35c4 5 10 6 17 5 +c0 4 1 9 3 12c1 2 3 3 7 5s7 3 12 3c20 -1 24 -12 20 -6c-3 4 -9 9 -14 10c0 0 4 12 2 34c-4 40 -33 62 -33 62c27 -30 28 -58 28 -72c0 -6 -2 -18 -5 -24c-4 -1 -7 -2 -11 -4c-10 -5 -8 2 -8 10c0 10 2 20 -5 49c-5 22 -17 28 -18 33s-1 14 -9 30s-18 18 -15 34s5 22 -8 25 +s-23 8 -24 13v10c0 2 1 5 2 7l3 3c2 2 5 4 9 4c8 0 14 -6 14 -14c0 -3 -1 -7 -3 -10s-2 -3 -3 -4c-2 -2 3 -4 7 -4c3 0 5 1 7 10c1 3 1 8 1 13v0c0 14 -11 25 -23 25c-4 0 -8 -2 -12 -4c-2 -1 -4 -4 -6 -6c-1 -1 -1 -2 -1 -3h-1c-2 -4 -2 -8 -2 -12c0 -5 -1 -9 0 -13 +c0 -2 1 -3 0 -3c-2 0 -6 5 -10 5c-6 0 -10 -2 -10 -2s1 15 -3 23c-4 9 -18 16 -24 4s-2 -25 1 -31l3 -6c2 1 5 4 5 4s-6 3 -7 11c-1 9 3 14 7 15s10 -2 12 -8s1 -13 1 -13s-9 -8 -13 -11s-12 -8 -12 -11s0 -5 2 -7c3 -4 9 -8 13 -10s7 -4 15 -4s14 3 29 8c22 7 19 12 23 12 +s6 -3 4 -6s-6 -2 -22 -9s-22 -9 -28 -10s-12 -5 -27 9c-1 1 10 -17 17 -20s20 2 30 7s15 10 21 11s9 -2 5 -5s-16 -8 -23 -13s-19 -15 -27 -16s-21 16 -25 22c-5 8 -7 11 -5 -12c0 0 -6 -8 -10 -15s-6 -13 -7 -19c-1 -5 -1 -10 -1 -12s-12 -14 -18 -41s2 -58 -8 -55 +c-6 2 -16 14 -16 27s1 17 2 20c1 4 -4 -8 -4 -21s2 -17 7 -23c3 -4 45 -32 56 -42s10 -20 7 -27s-10 -11 -10 -11s5 -10 9 -19s2 -22 2 -22s4 1 4 9s-4 16 -5 19c0 0 17 -12 38 -10c25 2 41 12 54 22c18 13 13 23 15 4c2 -17 -12 -27 -10 -34c4 8 11 12 13 24s0 26 -2 36z +M157 323c0 -1 -1 -2 -1 -3v0c2 0 3 5 2 8c-1 4 -3 6 -4 6h-2c3 -2 5 -6 5 -11zM211 335c3 -2 6 -5 6 -10v-3v0c2 0 3 4 2 7s-3 6 -5 6h-3zM348 15c24 11 36 17 21 26c-17 10 -27 13 -27 29c0 5 4 16 2 22c-1 4 -6 5 -9 5l-1 -1c-7 -6 -13 -24 -33 -24s-27 19 -28 24 +c-4 2 -9 1 -12 -4c-4 -7 -3 -12 1 -36c6 -31 -5 -54 1 -64s18 -18 33 -10s28 23 52 33z" /> + <glyph glyph-name="ion-social-twitter-outline" unicode="&#xf242;" horiz-adv-x="472" +d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 +c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15zM414 301c3 2 8 6 11 8c-2 0 -11 -2 -19 -1s-21 5 -21 5s14 13 18 17l11 11c-4 -1 -10 -2 -14 -3l-8 -2l-6 6 +c-15 16 -37 26 -59 26c-45 0 -81 -37 -81 -81c0 -6 1 -12 2 -18l5 -21l-22 1c-42 2 -81 13 -118 32c-28 14 -53 34 -75 56c-1 -6 -2 -13 -2 -19c0 -27 14 -53 36 -68c0 0 33 -23 46 -29c-24 -2 -56 0 -56 0c-8 0 -16 1 -24 3c8 -28 32 -50 62 -56l61 -10l-61 -21 +c-7 -2 -14 -3 -21 -3c15 -20 38 -34 64 -34l45 -1l-35 -28c-18 -14 -38 -25 -60 -33c-10 -3 -19 -6 -29 -8c27 -9 55 -14 84 -14c40 0 78 8 112 24c31 14 58 34 81 60c22 24 38 53 50 84c11 30 17 62 17 92v12l-1 8z" /> + <glyph glyph-name="ion-social-twitter" unicode="&#xf243;" horiz-adv-x="472" +d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 +c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15z" /> + <glyph glyph-name="ion-social-usd-outline" unicode="&#xf352;" horiz-adv-x="320" +d="M125 345c11 2 19 3 19 3v-131l-22 6c-15 5 -27 11 -36 19c-12 10 -19 25 -19 43c0 13 4 24 11 33c6 8 13 14 22 19c7 4 17 6 25 8zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM252 151 +c10 -10 15 -24 15 -42c0 -9 -1 -18 -5 -27s-11 -17 -20 -24c-8 -6 -18 -11 -31 -15c-6 -2 -11 -3 -17 -4s-18 -1 -18 -1v145l20 -5c10 -3 19 -6 28 -9c10 -4 20 -10 28 -18zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14s-16 5 -26 8v-107c6 1 10 2 14 3 +c11 3 20 8 27 13s11 11 14 18zM315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23 +s20 -11 31 -14v120c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46 +c-7 4 -13 8 -22 10v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM293 72c7 12 11 27 11 44c0 8 -1 16 -4 24s-7 15 -12 22s-12 13 -20 19c-8 5 -18 10 -29 13c-5 1 -13 3 -24 6h-1l-4 1c-7 2 -13 4 -21 6l-13 3v137 +s9 -1 19 -4s19 -6 28 -12c15 -9 25 -24 30 -43h38c-2 8 -4 15 -8 22c-7 13 -16 24 -28 32c-12 9 -27 16 -43 20c-8 2 -16 4 -23 5l-13 2v31h-32v-31l-14 -2c-7 -1 -14 -2 -20 -4c-15 -4 -29 -10 -41 -18s-21 -16 -28 -28c-7 -11 -10 -24 -10 -40c0 -8 1 -15 3 -23 +c2 -7 6 -14 11 -21s14 -13 23 -19c10 -6 22 -10 37 -14v0v0c4 -1 8 -2 11 -3c5 -1 11 -3 16 -4l12 -3v-151s-8 1 -20 4s-26 8 -36 15c-11 8 -20 18 -26 30c-4 7 -6 16 -8 24h-36c2 -11 5 -23 10 -32c8 -14 17 -26 30 -35c13 -10 28 -16 46 -21c8 -2 17 -4 26 -5l14 -2v-33 +h32v33l15 1c9 1 17 3 26 5c17 4 32 10 45 18s23 19 31 31z" /> + <glyph glyph-name="ion-social-usd" unicode="&#xf353;" horiz-adv-x="320" +d="M315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23s20 -11 31 -14v120 +c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46c-7 4 -13 8 -22 10 +v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14 +s-16 5 -26 8v-107c6 1 10 2 14 3c11 3 20 8 27 13s11 11 14 18z" /> + <glyph glyph-name="ion-social-vimeo-outline" unicode="&#xf244;" +d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-10 -4 -19 -5 -27 -5c-17 0 -31 9 -44 27c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-2 2 -5 3 -8 3s-6 -1 -9 -3 +c-10 -6 -28 -18 -28 -18l-21 27c26 24 82 71 82 71c11 9 33 25 48 27h8c18 0 32 -7 42 -22c11 -17 15 -37 18 -57c7 -41 12 -82 24 -122c3 -10 7 -20 12 -29c4 -7 9 -10 14 -10c4 0 7 2 11 5s7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26h-7 +c-11 0 -20 -2 -32 -7c6 24 24 62 54 84c20 14 45 20 67 20c10 0 20 -2 27 -4c23 -8 36 -23 41 -46zM418 244c13 30 17 59 11 87c-4 19 -13 28 -30 34c-6 2 -14 3 -22 3c-21 0 -42 -6 -57 -17c-16 -12 -29 -30 -38 -48h6h8c23 -1 39 -19 40 -41c0 -10 0 -22 -4 -34 +c-11 -29 -29 -58 -51 -85c-4 -4 -7 -9 -12 -13c-7 -6 -15 -8 -22 -8c-8 0 -18 3 -27 18c-7 11 -11 22 -14 32c-10 31 -14 64 -19 95c-2 10 -3 19 -5 29c-3 17 -6 36 -16 51c-7 10 -16 15 -28 15h-6c-8 -1 -25 -11 -40 -23c-2 -2 -43 -37 -70 -61l2 -3c5 4 12 7 16 10 +c6 3 12 5 18 5c7 0 13 -3 18 -7c8 -7 13 -12 16 -18c6 -11 12 -24 16 -37c13 -44 26 -88 38 -133c5 -19 13 -41 26 -59s23 -20 31 -20c6 0 13 1 21 4c23 8 43 25 61 41c32 29 57 63 83 99v0c21 28 37 55 50 84z" /> + <glyph glyph-name="ion-social-vimeo" unicode="&#xf245;" +d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-31 -11 -52 -5 -71 22c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-5 4 -11 3 -17 0c-10 -6 -28 -18 -28 -18l-21 27 +c26 24 82 71 82 71c11 9 33 25 48 27c21 3 38 -4 50 -22c11 -17 15 -37 18 -57c7 -41 11 -82 23 -122c3 -10 8 -20 13 -29c7 -11 15 -13 25 -5c4 3 7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26s-24 -1 -39 -7c6 24 24 62 54 84c29 21 71 24 94 16 +s36 -23 41 -46z" /> + <glyph glyph-name="ion-social-windows-outline" unicode="&#xf246;" +d="M432 167h-216v-149l216 -32v181zM448 183v0v-215l-248 36v179h248zM168 167h-152v-120l152 -22v142zM184 183v0v-177l-184 27v150h184zM432 398v0l-216 -31v-152h216v183zM448 416v0v-217h-248v182zM168 360v0l-152 -22v-123h152v145zM184 378v0v-179h-184v153z" /> + <glyph glyph-name="ion-social-windows" unicode="&#xf247;" +d="M448 183v0v-215l-248 36v179h248zM184 183v0v-177l-184 27v150h184zM448 416v0v-217h-248v182zM184 378v0v-179h-184v153z" /> + <glyph glyph-name="ion-social-wordpress-outline" unicode="&#xf248;" horiz-adv-x="384" +d="M192 384c106 0 192 -86 192 -192c0 -9 -1 -18 -2 -26c-12 -85 -79 -153 -165 -164c-8 -1 -17 -2 -25 -2c-106 0 -192 86 -192 192s86 192 192 192zM19 192c0 -68 40 -127 98 -155l-83 225c-10 -21 -15 -45 -15 -70zM214 21c12 2 24 4 35 8c0 1 -1 2 -1 3l-53 145l-33 -96 +v0l-19 -55c15 -5 32 -7 49 -7c8 0 15 1 22 2zM216 273l62 -186l17 58c9 22 13 41 13 56c0 21 -7 35 -14 47c-9 14 -17 27 -17 41c0 16 12 30 29 30h2c-31 28 -71 45 -116 45c-60 0 -113 -30 -144 -77c4 0 8 -1 11 -1c18 0 46 3 46 3c9 1 10 -14 1 -15c0 0 -10 -1 -20 -1 +l63 -187l38 113l-27 74c-9 0 -18 1 -18 1c-9 0 -8 16 1 15c0 0 28 -3 45 -3c18 0 46 3 46 3c9 1 11 -14 2 -15c0 0 -10 -1 -20 -1zM279 43c45 26 77 71 84 125c1 8 2 16 2 24c0 30 -8 58 -22 83c1 -6 1 -12 1 -18c0 -18 -3 -37 -13 -62l-39 -113z" /> + <glyph glyph-name="ion-social-wordpress" unicode="&#xf249;" horiz-adv-x="384" +d="M195 177l53 -146c0 -1 6 -13 9 -19c-3 -1 -5 -2 -8 -3v0c-10 -3 -21 -6 -32 -7c-8 -1 -17 -2 -25 -2c-17 0 -34 2 -50 6v0c-2 0 -3 2 -5 2l25 73v0zM17 268c6 0 7 -1 15 -1l93 -255c-3 1 -5 2 -8 3c-63 27 -109 87 -116 158c-1 6 -1 13 -1 19c0 25 7 53 17 76zM366 273 +c11 -24 18 -52 18 -81c0 -9 -1 -18 -2 -26c-9 -65 -50 -120 -107 -147c-2 -1 -3 -1 -5 -2l22 65l39 113c10 25 13 45 13 62v19v0c-1 18 -10 44 -36 43h-2c-17 0 -29 -14 -29 -30c0 -14 8 -27 17 -41c7 -12 14 -26 14 -47c0 -15 -4 -34 -13 -56l-17 -58l-62 186 +c10 0 20 1 20 1c9 1 7 16 -2 15c0 0 -28 -3 -46 -3c-17 0 -45 3 -45 3c-9 1 -10 -15 -1 -15c0 0 9 -1 18 -1l27 -74l-38 -113l-63 187c10 0 20 2 20 2c9 1 8 15 -1 14c0 0 -28 -2 -46 -2h-34c5 9 11 17 17 25c35 44 90 72 150 72c24 0 48 -5 69 -13c34 -13 63 -36 85 -65 +c2 -2 3 -5 5 -7c6 -8 11 -17 15 -26z" /> + <glyph glyph-name="ion-social-yahoo-outline" unicode="&#xf24a;" horiz-adv-x="320" +d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4zM178 180l111 184h-1c-7 0 -15 0 -24 2l-90 -150l-14 -23l-14 23l-89 150c-9 -2 -17 -2 -25 -2h-1l111 -184l2 -4 +v-5v-151c6 1 11 0 16 0s11 1 16 0v151v5z" /> + <glyph glyph-name="ion-social-yahoo" unicode="&#xf24b;" horiz-adv-x="320" +d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4z" /> + <glyph glyph-name="ion-social-youtube-outline" unicode="&#xf24c;" horiz-adv-x="512" +d="M265 352v0h-9h-9c-65 0 -118 -2 -168 -4h-1h-1c-23 0 -42 -22 -42 -49v-1v-1c-2 -34 -3 -70 -3 -105v0v0c0 -35 1 -70 3 -104v-2v-1c0 -14 5 -26 14 -36c8 -9 17 -13 28 -13h1h1c52 -2 108 -4 166 -4h11v0v0h11c58 0 113 2 166 4h1h1c11 0 20 4 28 13c9 10 14 22 14 36v1 +v2c2 34 3 68 3 104v0v0c0 36 -1 71 -3 105v1v2c0 27 -19 49 -42 49h-1h-1c-49 2 -103 3 -168 3zM265 384v0c58 0 115 0 170 -3c41 0 74 -36 74 -81c2 -36 3 -72 3 -108s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-55 -3 -111 -4 -168 -4h-11h-11c-57 0 -113 1 -168 4 +c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 82 73 82c55 2 112 3 170 3h9h9zM207 94v197l145 -99z" /> + <glyph glyph-name="ion-social-youtube" unicode="&#xf24d;" horiz-adv-x="512" +d="M509 299c2 -36 3 -71 3 -107s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-58 -3 -118 -4 -179 -4s-121 1 -179 4c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 81 73 81c55 3 112 4 170 4h9h9c58 0 115 -1 170 -4c41 0 74 -36 74 -81zM207 94l145 98l-145 99 +v-197z" /> + <glyph glyph-name="ion-speakerphone" unicode="&#xf2b2;" +d="M39 266c0 -37 20 -69 50 -86c-1 0 -2 1 -3 1s-4 1 -5 1v0c-35 3 -62 33 -69 69c-6 0 -12 7 -12 16c0 8 5 15 11 16c6 42 40 75 81 75h8c-36 -15 -61 -51 -61 -92zM433 357c10 -25 15 -56 15 -88s-5 -63 -15 -88l-3 -9c-6 -14 -15 -26 -24 -34c-10 -10 -22 -19 -34 -20h-3 +c-7 0 -15 2 -22 5c-3 2 -10 5 -10 5c-22 10 -84 28 -115 29c-4 -8 -10 -20 -12 -30c-2 -9 -6 -27 -7 -61c-1 -32 1 -59 3 -82c0 -2 1 -5 1 -7c0 -6 -2 -9 -9 -9h-77c-6 0 -9 3 -9 6v7c2 72 25 140 26 145c2 9 5 17 7 30c2 12 -27 13 -40 24c-29 17 -47 49 -47 86 +c0 41 25 77 59 92h42h19c58 3 114 21 163 50c1 1 3 1 4 2v0c8 4 16 6 24 6c13 0 26 -6 37 -16c9 -9 18 -21 24 -35c1 -3 2 -5 3 -8zM410 180c9 22 15 54 15 89s-6 66 -15 88c-8 18 -19 29 -30 29s-21 -11 -29 -29c-9 -22 -15 -53 -15 -88s6 -67 15 -89c8 -19 18 -33 29 -33 +s22 15 30 33z" /> + <glyph glyph-name="ion-speedometer" unicode="&#xf2b3;" +d="M312 192l8 -8l-64 -84v-4c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32h4zM224 352c124 0 224 -100 224 -224c0 -34 -8 -67 -22 -96h-36c15 27 25 57 26 88h-32v16h32c-1 29 -9 56 -22 81l-27 -15l-8 13l27 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8 +l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -8 -23 -16 -33 -26s-19 -21 -26 -33l28 -16l-8 -13l-28 15c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -31 11 -61 26 -88h-36c-14 29 -22 62 -22 96c0 124 100 224 224 224z" /> + <glyph glyph-name="ion-spoon" unicode="&#xf2b4;" horiz-adv-x="128" +d="M128 288c0 64 -26 128 -64 128s-64 -64 -64 -128v0c1 -25 16 -54 37 -64l1 -1v0c3 -2 10 -6 10 -10c0 0 -16 -199 -16 -210s4 -20 10 -26s14 -9 22 -9v0v0c8 0 16 3 22 9s10 13 10 26s-16 210 -16 210c0 4 7 8 10 10l1 1c22 10 37 38 37 64z" /> + <glyph glyph-name="ion-star" unicode="&#xf24e;" horiz-adv-x="384" +d="M384 240l-119 -89l47 -151l-120 96l-120 -96l47 151l-119 89h147l45 144l45 -144h147z" /> + <glyph glyph-name="ion-stats-bars" unicode="&#xf2b5;" horiz-adv-x="352" +d="M96 32v320h64v-320h-64zM0 32v96h64v-96h-64zM192 32v160h64v-160h-64zM288 32v224h64v-224h-64z" /> + <glyph glyph-name="ion-steam" unicode="&#xf30b;" horiz-adv-x="512" +d="M480 240c0 -20 -16 -37 -37 -37c-20 0 -37 16 -37 37c0 20 16 37 37 37c20 0 37 -17 37 -37zM443 309c38 0 69 -31 69 -69s-31 -70 -69 -70l-67 -48c-2 -26 -24 -47 -51 -47c-25 0 -46 18 -51 41l-196 78c-8 -5 -16 -7 -26 -7c-28 0 -52 24 -52 52s24 52 52 52 +c25 0 45 -18 50 -41l196 -79c8 5 17 8 27 8c2 0 3 -1 5 -1l43 62c0 38 32 69 70 69zM443 286c-26 0 -47 -20 -47 -46s21 -47 47 -47s46 21 46 47s-20 46 -46 46zM52 277c-21 0 -38 -17 -38 -38s17 -38 38 -38c3 0 5 0 8 1l-16 6v0c-15 7 -22 24 -16 39s24 23 39 17v0l19 -7 +c-6 12 -19 20 -34 20zM325 165c-3 0 -6 -1 -9 -1l16 -6c16 -6 23 -24 17 -40s-23 -23 -39 -17c-6 3 -13 6 -19 8c6 -12 19 -20 34 -20c21 0 38 17 38 38s-17 38 -38 38z" /> + <glyph glyph-name="ion-stop" unicode="&#xf24f;" horiz-adv-x="384" +d="M373 384c6 0 11 -5 11 -11v-362c0 -6 -5 -11 -11 -11h-362c-6 0 -11 5 -11 11v362c0 6 5 11 11 11h362z" /> + <glyph glyph-name="ion-thermometer" unicode="&#xf2b6;" horiz-adv-x="160" +d="M127 112c20 -14 33 -38 33 -64c0 -44 -36 -80 -80 -80s-80 36 -80 80c0 27 13 51 33 65v257c0 26 21 46 47 46s47 -20 47 -46v-258zM65 370v-50h30v50c0 8 -7 14 -15 14s-15 -6 -15 -14zM96 160v16h-16v-16h16zM96 192v64h-16v-64h16z" /> + <glyph glyph-name="ion-thumbsdown" unicode="&#xf250;" horiz-adv-x="384" +d="M24 195c-10 5 -18 17 -18 29c0 14 8 25 20 30c-4 5 -6 12 -6 19c0 14 8 25 20 30c-3 5 -5 11 -5 17c0 18 11 24 35 30s74 12 126 9c23 -1 55 -7 76 -7v32h112v-240h-112v16c-15 -1 -31 -4 -40 -14c-22 -23 -40 -65 -40 -108c0 -19 1 -29 -4 -34c-13 -13 -44 9 -52 37 +c-9 34 -1 62 1 87h-103c-19 0 -34 15 -34 34c0 15 10 29 24 33zM336 352c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> + <glyph glyph-name="ion-thumbsup" unicode="&#xf251;" horiz-adv-x="384" +d="M360 189c10 -5 18 -17 18 -29c0 -14 -8 -25 -20 -30c4 -5 6 -12 6 -19c0 -14 -8 -25 -20 -30c3 -5 5 -11 5 -17c0 -18 -11 -24 -35 -30s-74 -12 -126 -9c-23 1 -55 7 -76 7v-32h-112v240h112v-16c15 1 31 4 40 14c22 23 40 65 40 108c0 19 -1 29 4 34c13 13 44 -9 52 -37 +c9 -34 1 -62 -1 -87h103c19 0 34 -15 34 -34c0 -15 -10 -29 -24 -33zM48 32c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-toggle-filled" unicode="&#xf354;" +d="M320 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM320 320c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM320 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> + <glyph glyph-name="ion-toggle" unicode="&#xf355;" +d="M320 288h-192c-53 0 -96 -43 -96 -96s43 -96 96 -96h192c53 0 96 43 96 96s-43 96 -96 96zM320 320v0c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM128 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48 +s-22 48 -48 48zM128 272v0c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80z" /> + <glyph glyph-name="ion-trash-a" unicode="&#xf252;" horiz-adv-x="352" +d="M261 320v0h91v-32h-9s-5 -1 -8 -4s-4 -9 -4 -9l-19 -241c-2 -29 -2 -34 -36 -34h-200c-34 0 -34 5 -36 34l-19 242s-1 6 -4 9s-8 3 -8 3h-9v32h91v29c0 19 14 35 34 35h101c20 0 35 -16 35 -35v-29zM112 349v-29h128v29c0 10 -9 15 -19 15h-91c-10 0 -18 -5 -18 -15z +M104 64h20l-10 192h-21zM187 64v192h-22v-192h22zM249 64l10 192h-20l-11 -192h21z" /> + <glyph glyph-name="ion-trash-b" unicode="&#xf253;" horiz-adv-x="320" +d="M318 315c3 -12 4 -11 -7 -11h-302c-11 0 -10 -1 -7 11c2 9 4 13 4 13c3 9 9 9 19 11l53 7c7 1 7 1 10 7c9 20 10 31 20 31h103c10 0 12 -11 21 -31c3 -6 3 -6 10 -7l53 -6c10 -2 16 -2 19 -11c0 0 2 -5 4 -14zM283 272c17 0 18 -2 17 -15l-19 -242c-2 -12 -2 -15 -17 -15 +h-208c-15 0 -15 3 -17 15l-19 242c-1 12 0 15 17 15h246z" /> + <glyph glyph-name="ion-trophy" unicode="&#xf356;" +d="M448 345c0 -25 2 -73 -22 -122c-15 -30 -36 -55 -63 -75c-23 -16 -49 -28 -77 -35c-16 -17 -32 -27 -46 -31v-33s0 -49 99 -49h13v-32h-256v32h13c85 0 97 35 99 46v36c-14 4 -30 14 -46 31c-28 7 -55 19 -77 35c-27 20 -48 45 -63 75c-17 36 -21 71 -22 97v0v11v0v21v0 +h80c-2 35 0 64 0 64h143h1h1h142s2 -29 0 -64h81v-7zM51 237c17 -34 43 -61 77 -78c-22 40 -33 84 -42 135c-1 8 -2 17 -3 26h-51c1 -23 5 -53 19 -83zM397 237c14 30 18 60 19 83h-51c-1 -9 -3 -18 -4 -26c-9 -51 -20 -95 -42 -135c34 17 61 43 78 78z" /> + <glyph glyph-name="ion-umbrella" unicode="&#xf2b7;" +d="M344 160v0v0v0zM104 160v0v0v0zM240 399c116 -8 208 -109 208 -227v-12c-4 25 -26 52 -52 52c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52s-49 -12 -52 -45v-135c0 -17 -6 -33 -18 -45s-29 -19 -46 -19c-35 0 -63 29 -63 64c0 9 7 16 16 16s16 -7 16 -16 +c0 -18 14 -32 31 -32c18 0 32 14 32 32v134c-1 24 -26 46 -52 46c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52c-27 0 -49 -26 -52 -52v18c0 118 92 213 208 221v1c0 9 7 16 16 16s16 -7 16 -16v-1z" /> + <glyph glyph-name="ion-university" unicode="&#xf357;" +d="M224 384l224 -111l-92 -60l-132 -85l-160 102v-198l-32 16v203l-32 21zM358 192l10 -82l-6 -3c-1 -1 -93 -54 -131 -99l-7 -8l-7 8c-38 45 -130 98 -131 99l-6 3l9 82l135 -88z" /> + <glyph glyph-name="ion-unlocked" unicode="&#xf254;" horiz-adv-x="384" +d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46c20 -21 33 -51 39 -82h-53c-5 18 -13 35 -24 47v0v1c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80v-31h265 +c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340z" /> + <glyph glyph-name="ion-upload" unicode="&#xf255;" +d="M366 215c45 0 82 -37 82 -83s-37 -84 -82 -84h-110v80h48l-80 84l-80 -84h48v-80h-102c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> + <glyph glyph-name="ion-usb" unicode="&#xf2b8;" horiz-adv-x="256" +d="M16 228v0v0zM256 320c0 -11 -6 -21 -14 -27v0c-2 -1 -3 -5 -3 -7c-1 -20 -3 -36 -9 -50c-7 -19 -20 -33 -39 -46c-17 -12 -29 -21 -36 -34c-7 -12 -11 -28 -11 -53v-24c0 -7 2 -13 10 -18c4 -2 7 -6 10 -9c8 -9 14 -21 14 -34c0 -28 -22 -50 -50 -50s-50 22 -50 50v1v0 +c0 18 10 33 24 42c5 4 9 5 9 18v0c0 14 -3 17 -10 27s-18 17 -32 26c-19 13 -33 27 -40 46c-6 15 -8 31 -9 39s-2 9 -4 11c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32c0 -10 -4 -20 -12 -26c-3 -2 -4 -11 -4 -14v0v0c0 -9 3 -18 7 -28c10 -21 45 -44 52 -44 +s8 5 8 12v196s-1 2 -3 4h-1v1v0c-9 6 -15 16 -15 27c0 18 14 32 32 32s32 -14 32 -32c0 -11 -5 -21 -14 -27v0c-2 -2 -2 -3 -2 -5v-140c0 -10 2 -12 8 -11c13 3 48 30 52 43c3 10 6 23 7 41v1c0 2 -2 4 -3 6c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32zM32 240 +c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM128 368c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM224 304c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> + <glyph glyph-name="ion-videocamera" unicode="&#xf256;" +d="M335 263v-66l113 35v-89v-88l-113 35v-65c0 -5 -4 -9 -9 -9h-317c-5 0 -9 4 -9 9v12v55v171c0 5 4 9 9 9h208v38c0 4 -6 10 -10 10h-176v48h178c36 0 65 -29 65 -64v-32h52c5 0 9 -4 9 -9zM226 107c20 0 36 16 36 36s-16 35 -36 35s-36 -15 -36 -35c0 -10 4 -19 11 -26 +h-68c7 7 11 16 11 26c0 20 -16 36 -36 36s-36 -16 -36 -36s16 -36 36 -36h12h95h11z" /> + <glyph glyph-name="ion-volume-high" unicode="&#xf257;" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 27 52 27 84s-10 60 -27 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146zM365 369l20 15 +c39 -54 63 -120 63 -192s-24 -138 -63 -192l-20 15c36 49 58 111 58 177s-22 128 -58 177z" /> + <glyph glyph-name="ion-volume-low" unicode="&#xf258;" horiz-adv-x="288" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100z" /> + <glyph glyph-name="ion-volume-medium" unicode="&#xf259;" horiz-adv-x="370" +d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146z" /> + <glyph glyph-name="ion-volume-mute" unicode="&#xf25a;" +d="M224 231l47 51v-180l-47 51h-65v78h65zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-39 0 -76 10 -108 27l-1 1c-69 38 -115 112 -115 196c0 124 100 224 224 224c39 0 75 -10 107 -28h1zM362 93c20 28 33 62 33 99c0 66 -38 123 -92 151 +c-6 3 -11 6 -17 8c-19 7 -40 11 -62 11c-37 0 -71 -12 -99 -32l73 -74h-76l-36 35c-20 -28 -32 -62 -32 -99c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c19 -7 39 -11 61 -11c37 0 72 12 100 32l-20 20v77z" /> + <glyph glyph-name="ion-wand" unicode="&#xf358;" +d="M192 208l48 48l48 -48l-48 -48zM0 16l176 176l48 -48l-176 -176zM224 352v64h32v-64h-32zM398 344l-45 -45l-23 22l46 45zM127 299l-45 45l22 22l45 -45zM376 50l-46 45l23 23l45 -46zM384 192v32h64v-32h-64z" /> + <glyph glyph-name="ion-waterdrop" unicode="&#xf25b;" horiz-adv-x="320" +d="M175 409c40 -41 145 -160 145 -288c0 -85 -72 -153 -160 -153c-56 0 -106 27 -134 69c-6 9 -11 19 -15 29c-7 17 -11 35 -11 55v4c1 67 31 131 64 183c20 31 42 57 59 77c9 10 16 18 22 24l1 1v0c4 3 8 6 14 6c5 0 10 -3 14 -6v0zM160 24c55 0 100 45 100 100 +c0 14 -3 28 -8 40c-17 -65 -70 -116 -136 -130c13 -6 28 -10 44 -10z" /> + <glyph glyph-name="ion-wifi" unicode="&#xf25c;" +d="M224 352c80 0 156 -30 214 -84l10 -10l-10 -9l-32 -32l-10 -10l-9 9c-44 41 -103 64 -163 64s-119 -23 -163 -64l-9 -9l-10 10l-32 32l-10 9l10 10c58 54 134 84 214 84v0zM365 192l11 -10l-10 -10l-33 -32l-9 -9l-10 8c-25 22 -57 35 -90 35s-65 -13 -90 -35l-10 -8 +l-9 9l-33 32l-10 10l11 10c37 33 83 52 132 54v0h9v0v0c52 0 102 -19 141 -54zM224 32l-10 10l-52 52l-11 10l12 10c17 11 32 20 61 20s47 -9 62 -20l11 -10l-10 -10l-53 -52z" /> + <glyph glyph-name="ion-wineglass" unicode="&#xf2b9;" horiz-adv-x="256" +d="M167 153c-11 -4 -24 -8 -24 -32v-94c0 -11 4 -19 12 -25c3 -2 7 -4 15 -6c32 -9 48 -16 50 -18c2 -1 4 -3 4 -7c0 0 -14 -3 -96 -3s-96 3 -96 3c0 4 2 6 4 7c2 2 18 9 50 18c8 2 11 4 14 6c8 6 11 14 11 25v94c0 24 -11 28 -22 32s-18 6 -26 11c-12 7 -23 16 -32 26 +c-20 23 -31 52 -31 87c0 50 4 100 8 114s14 25 31 25h178c17 0 27 -11 31 -25s8 -65 8 -115c0 -35 -11 -63 -31 -86c-9 -10 -20 -19 -32 -26c-8 -5 -15 -7 -26 -11zM128 178c26 0 50 11 67 28l6 6c16 18 22 35 23 65s-2 83 -8 107h-177c-7 -35 -8 -80 -7 -108s7 -46 23 -64 +c2 -3 4 -6 7 -8c17 -16 41 -26 66 -26zM208 277c0 -10 -1 -20 -4 -29s-8 -18 -15 -25l-5 -5c-14 -14 -34 -23 -56 -23c-21 0 -41 8 -55 22l-6 6c-7 7 -12 16 -15 25s-3 15 -4 29c-1 9 0 34 1 53c1 10 2 19 3 22h153c1 -6 2 -14 2 -22c1 -21 1 -45 1 -53zM192 269v0v26 +c0 4 -4 8 -8 8s-8 -4 -8 -8v-26c0 -3 1 -6 3 -7c1 -1 3 -1 5 -1c4 0 8 3 8 8zM191 316c1 2 1 4 1 6s-2 4 -4 5s-4 1 -6 1s-4 -1 -5 -3s-1 -4 -1 -6s2 -4 4 -5s4 -1 6 -1s4 1 5 3z" /> + <glyph glyph-name="ion-woman" unicode="&#xf25d;" horiz-adv-x="192" +d="M30 299c3 12 17 33 42 34h48c24 -1 38 -22 42 -34l29 -104c6 -23 -21 -32 -27 -10l-26 96h-9l46 -169h-43v-127c0 -23 -31 -23 -31 0v127h-10v-127c0 -23 -32 -23 -32 0v127h-42l45 169h-7l-27 -96c-7 -21 -33 -13 -27 10zM133 379c0 -21 -17 -37 -37 -37s-37 16 -37 37 +s17 37 37 37s37 -16 37 -37z" /> + <glyph glyph-name="ion-wrench" unicode="&#xf2ba;" +d="M430 333c14 -14 19 -31 18 -44s-6 -39 -32 -65s-77 -42 -113 -24c-5 3 -13 5 -21 -3c-10 -9 -202 -215 -202 -215c-17 -19 -48 -18 -66 0s-19 49 0 66c0 0 207 194 215 202s5 16 3 22c-20 47 2 89 24 112c22 24 51 31 65 32c13 1 31 -5 44 -18l-57 -56l10 -56l55 -10z +M59 5c6 6 6 17 0 23s-16 6 -22 0s-6 -17 0 -23s16 -6 22 0z" /> + <glyph glyph-name="ion-xbox" unicode="&#xf30c;" +d="M95 200c-49 -72 -50 -139 -50 -143c-28 38 -45 84 -45 135c0 67 30 128 77 169l3 -1c51 -18 93 -68 93 -68s-38 -33 -78 -92zM448 192c0 -51 -17 -97 -45 -135c0 4 -1 71 -50 143c-40 59 -78 92 -78 92s42 50 93 68l3 1c47 -41 77 -102 77 -169zM169 367 +c-37 17 -65 12 -72 10c36 25 80 39 127 39s91 -14 127 -39c-7 2 -35 6 -72 -10c-29 -13 -55 -35 -55 -35s-26 22 -55 35zM327 155c40 -49 54 -85 62 -108l2 -5c-41 -46 -101 -74 -167 -74s-126 28 -167 74l1 5c8 23 23 59 63 108c46 57 103 94 103 94s57 -37 103 -94z" /> + </font> +</defs></svg> diff --git a/assets/less/icons/ionicons/fonts/ionicons.ttf b/assets/less/icons/ionicons/fonts/ionicons.ttf new file mode 100644 index 0000000..e347409 Binary files /dev/null and b/assets/less/icons/ionicons/fonts/ionicons.ttf differ diff --git a/assets/less/icons/ionicons/fonts/ionicons.woff b/assets/less/icons/ionicons/fonts/ionicons.woff new file mode 100644 index 0000000..5267cb1 Binary files /dev/null and b/assets/less/icons/ionicons/fonts/ionicons.woff differ diff --git a/assets/less/icons/ionicons/less/_ionicons-animation.less b/assets/less/icons/ionicons/less/_ionicons-animation.less new file mode 100644 index 0000000..c6c5ab1 --- /dev/null +++ b/assets/less/icons/ionicons/less/_ionicons-animation.less @@ -0,0 +1,85 @@ +// Animation Icons +// -------------------------- + +.spin() { + -webkit-animation: spin 1s infinite linear; + -moz-animation: spin 1s infinite linear; + -o-animation: spin 1s infinite linear; + animation: spin 1s infinite linear; +} + +.@{ionicons-prefix}loading-a, +.@{ionicons-prefix}loading-b, +.@{ionicons-prefix}loading-c, +.@{ionicons-prefix}loading-d, +.@{ionicons-prefix}looping, +.@{ionicons-prefix}refreshing, +.@{ionicons-prefix}ios7-reloading { + &:extend(.ion); +} + +.@{ionicons-prefix}spin, +.@{ionicons-prefix}loading-a, +.@{ionicons-prefix}loading-b, +.@{ionicons-prefix}loading-c, +.@{ionicons-prefix}loading-d, +.@{ionicons-prefix}looping, +.@{ionicons-prefix}refreshing, +.@{ionicons-prefix}ios7-reloading { + .spin() +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} + +.@{ionicons-prefix}loading-a { + -webkit-animation-timing-function: steps(8, start); + -moz-animation-timing-function: steps(8, start); + animation-timing-function: steps(8, start); +} +// +//.@{ionicons-prefix}loading-a:before { +// &:extend(.@{ionicons-prefix}load-a:before); +//} +// +//.@{ionicons-prefix}loading-b:before { +// &:extend(.@{ionicons-prefix}load-b:before); +//} +// +//.@{ionicons-prefix}loading-c:before { +// &:extend(.@{ionicons-prefix}load-c:before); +//} +// +//.@{ionicons-prefix}loading-d:before { +// &:extend(.@{ionicons-prefix}load-d:before); +//} +// +//.@{ionicons-prefix}looping:before { +// &:extend(.@{ionicons-prefix}loop:before); +//} +// +//.@{ionicons-prefix}refreshing:before { +// &:extend(.@{ionicons-prefix}refresh:before); +//} +// +//.@{ionicons-prefix}ios7-reloading:before { +// &:extend(.@{ionicons-prefix}ios7-reload:before); +//} diff --git a/assets/less/icons/ionicons/less/_ionicons-font.less b/assets/less/icons/ionicons/less/_ionicons-font.less new file mode 100644 index 0000000..1d9bf7e --- /dev/null +++ b/assets/less/icons/ionicons/less/_ionicons-font.less @@ -0,0 +1,27 @@ +// Ionicons Font Path +// -------------------------- + +@font-face { + font-family: @ionicons-font-family; + src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}"); + src:url("@{ionicons-font-path}/ionicons.eot?v=@{ionicons-version}#iefix") format("embedded-opentype"), + url("@{ionicons-font-path}/ionicons.ttf?v=@{ionicons-version}") format("truetype"), + url("@{ionicons-font-path}/ionicons.woff?v=@{ionicons-version}") format("woff"), + url("@{ionicons-font-path}/ionicons.svg?v=@{ionicons-version}#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; +} + +.ion { + display: inline-block; + font-family: @ionicons-font-family; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/assets/less/icons/ionicons/less/_ionicons-icons.less b/assets/less/icons/ionicons/less/_ionicons-icons.less new file mode 100644 index 0000000..1e87e66 --- /dev/null +++ b/assets/less/icons/ionicons/less/_ionicons-icons.less @@ -0,0 +1,1209 @@ +// Ionicons Icons +// -------------------------- + +.ionicons, +.@{ionicons-prefix}alert, +.@{ionicons-prefix}alert-circled, +.@{ionicons-prefix}android-add, +.@{ionicons-prefix}android-add-contact, +.@{ionicons-prefix}android-alarm, +.@{ionicons-prefix}android-archive, +.@{ionicons-prefix}android-arrow-back, +.@{ionicons-prefix}android-arrow-down-left, +.@{ionicons-prefix}android-arrow-down-right, +.@{ionicons-prefix}android-arrow-forward, +.@{ionicons-prefix}android-arrow-up-left, +.@{ionicons-prefix}android-arrow-up-right, +.@{ionicons-prefix}android-battery, +.@{ionicons-prefix}android-book, +.@{ionicons-prefix}android-calendar, +.@{ionicons-prefix}android-call, +.@{ionicons-prefix}android-camera, +.@{ionicons-prefix}android-chat, +.@{ionicons-prefix}android-checkmark, +.@{ionicons-prefix}android-clock, +.@{ionicons-prefix}android-close, +.@{ionicons-prefix}android-contact, +.@{ionicons-prefix}android-contacts, +.@{ionicons-prefix}android-data, +.@{ionicons-prefix}android-developer, +.@{ionicons-prefix}android-display, +.@{ionicons-prefix}android-download, +.@{ionicons-prefix}android-drawer, +.@{ionicons-prefix}android-dropdown, +.@{ionicons-prefix}android-earth, +.@{ionicons-prefix}android-folder, +.@{ionicons-prefix}android-forums, +.@{ionicons-prefix}android-friends, +.@{ionicons-prefix}android-hand, +.@{ionicons-prefix}android-image, +.@{ionicons-prefix}android-inbox, +.@{ionicons-prefix}android-information, +.@{ionicons-prefix}android-keypad, +.@{ionicons-prefix}android-lightbulb, +.@{ionicons-prefix}android-locate, +.@{ionicons-prefix}android-location, +.@{ionicons-prefix}android-mail, +.@{ionicons-prefix}android-microphone, +.@{ionicons-prefix}android-mixer, +.@{ionicons-prefix}android-more, +.@{ionicons-prefix}android-note, +.@{ionicons-prefix}android-playstore, +.@{ionicons-prefix}android-printer, +.@{ionicons-prefix}android-promotion, +.@{ionicons-prefix}android-reminder, +.@{ionicons-prefix}android-remove, +.@{ionicons-prefix}android-search, +.@{ionicons-prefix}android-send, +.@{ionicons-prefix}android-settings, +.@{ionicons-prefix}android-share, +.@{ionicons-prefix}android-social, +.@{ionicons-prefix}android-social-user, +.@{ionicons-prefix}android-sort, +.@{ionicons-prefix}android-stair-drawer, +.@{ionicons-prefix}android-star, +.@{ionicons-prefix}android-stopwatch, +.@{ionicons-prefix}android-storage, +.@{ionicons-prefix}android-system-back, +.@{ionicons-prefix}android-system-home, +.@{ionicons-prefix}android-system-windows, +.@{ionicons-prefix}android-timer, +.@{ionicons-prefix}android-trash, +.@{ionicons-prefix}android-user-menu, +.@{ionicons-prefix}android-volume, +.@{ionicons-prefix}android-wifi, +.@{ionicons-prefix}aperture, +.@{ionicons-prefix}archive, +.@{ionicons-prefix}arrow-down-a, +.@{ionicons-prefix}arrow-down-b, +.@{ionicons-prefix}arrow-down-c, +.@{ionicons-prefix}arrow-expand, +.@{ionicons-prefix}arrow-graph-down-left, +.@{ionicons-prefix}arrow-graph-down-right, +.@{ionicons-prefix}arrow-graph-up-left, +.@{ionicons-prefix}arrow-graph-up-right, +.@{ionicons-prefix}arrow-left-a, +.@{ionicons-prefix}arrow-left-b, +.@{ionicons-prefix}arrow-left-c, +.@{ionicons-prefix}arrow-move, +.@{ionicons-prefix}arrow-resize, +.@{ionicons-prefix}arrow-return-left, +.@{ionicons-prefix}arrow-return-right, +.@{ionicons-prefix}arrow-right-a, +.@{ionicons-prefix}arrow-right-b, +.@{ionicons-prefix}arrow-right-c, +.@{ionicons-prefix}arrow-shrink, +.@{ionicons-prefix}arrow-swap, +.@{ionicons-prefix}arrow-up-a, +.@{ionicons-prefix}arrow-up-b, +.@{ionicons-prefix}arrow-up-c, +.@{ionicons-prefix}asterisk, +.@{ionicons-prefix}at, +.@{ionicons-prefix}bag, +.@{ionicons-prefix}battery-charging, +.@{ionicons-prefix}battery-empty, +.@{ionicons-prefix}battery-full, +.@{ionicons-prefix}battery-half, +.@{ionicons-prefix}battery-low, +.@{ionicons-prefix}beaker, +.@{ionicons-prefix}beer, +.@{ionicons-prefix}bluetooth, +.@{ionicons-prefix}bonfire, +.@{ionicons-prefix}bookmark, +.@{ionicons-prefix}briefcase, +.@{ionicons-prefix}bug, +.@{ionicons-prefix}calculator, +.@{ionicons-prefix}calendar, +.@{ionicons-prefix}camera, +.@{ionicons-prefix}card, +.@{ionicons-prefix}cash, +.@{ionicons-prefix}chatbox, +.@{ionicons-prefix}chatbox-working, +.@{ionicons-prefix}chatboxes, +.@{ionicons-prefix}chatbubble, +.@{ionicons-prefix}chatbubble-working, +.@{ionicons-prefix}chatbubbles, +.@{ionicons-prefix}checkmark, +.@{ionicons-prefix}checkmark-circled, +.@{ionicons-prefix}checkmark-round, +.@{ionicons-prefix}chevron-down, +.@{ionicons-prefix}chevron-left, +.@{ionicons-prefix}chevron-right, +.@{ionicons-prefix}chevron-up, +.@{ionicons-prefix}clipboard, +.@{ionicons-prefix}clock, +.@{ionicons-prefix}close, +.@{ionicons-prefix}close-circled, +.@{ionicons-prefix}close-round, +.@{ionicons-prefix}closed-captioning, +.@{ionicons-prefix}cloud, +.@{ionicons-prefix}code, +.@{ionicons-prefix}code-download, +.@{ionicons-prefix}code-working, +.@{ionicons-prefix}coffee, +.@{ionicons-prefix}compass, +.@{ionicons-prefix}compose, +.@{ionicons-prefix}connection-bars, +.@{ionicons-prefix}contrast, +.@{ionicons-prefix}cube, +.@{ionicons-prefix}disc, +.@{ionicons-prefix}document, +.@{ionicons-prefix}document-text, +.@{ionicons-prefix}drag, +.@{ionicons-prefix}earth, +.@{ionicons-prefix}edit, +.@{ionicons-prefix}egg, +.@{ionicons-prefix}eject, +.@{ionicons-prefix}email, +.@{ionicons-prefix}eye, +.@{ionicons-prefix}eye-disabled, +.@{ionicons-prefix}female, +.@{ionicons-prefix}filing, +.@{ionicons-prefix}film-marker, +.@{ionicons-prefix}fireball, +.@{ionicons-prefix}flag, +.@{ionicons-prefix}flame, +.@{ionicons-prefix}flash, +.@{ionicons-prefix}flash-off, +.@{ionicons-prefix}flask, +.@{ionicons-prefix}folder, +.@{ionicons-prefix}fork, +.@{ionicons-prefix}fork-repo, +.@{ionicons-prefix}forward, +.@{ionicons-prefix}funnel, +.@{ionicons-prefix}game-controller-a, +.@{ionicons-prefix}game-controller-b, +.@{ionicons-prefix}gear-a, +.@{ionicons-prefix}gear-b, +.@{ionicons-prefix}grid, +.@{ionicons-prefix}hammer, +.@{ionicons-prefix}happy, +.@{ionicons-prefix}headphone, +.@{ionicons-prefix}heart, +.@{ionicons-prefix}heart-broken, +.@{ionicons-prefix}help, +.@{ionicons-prefix}help-buoy, +.@{ionicons-prefix}help-circled, +.@{ionicons-prefix}home, +.@{ionicons-prefix}icecream, +.@{ionicons-prefix}icon-social-google-plus, +.@{ionicons-prefix}icon-social-google-plus-outline, +.@{ionicons-prefix}image, +.@{ionicons-prefix}images, +.@{ionicons-prefix}information, +.@{ionicons-prefix}information-circled, +.@{ionicons-prefix}ionic, +.@{ionicons-prefix}ios7-alarm, +.@{ionicons-prefix}ios7-alarm-outline, +.@{ionicons-prefix}ios7-albums, +.@{ionicons-prefix}ios7-albums-outline, +.@{ionicons-prefix}ios7-americanfootball, +.@{ionicons-prefix}ios7-americanfootball-outline, +.@{ionicons-prefix}ios7-analytics, +.@{ionicons-prefix}ios7-analytics-outline, +.@{ionicons-prefix}ios7-arrow-back, +.@{ionicons-prefix}ios7-arrow-down, +.@{ionicons-prefix}ios7-arrow-forward, +.@{ionicons-prefix}ios7-arrow-left, +.@{ionicons-prefix}ios7-arrow-right, +.@{ionicons-prefix}ios7-arrow-thin-down, +.@{ionicons-prefix}ios7-arrow-thin-left, +.@{ionicons-prefix}ios7-arrow-thin-right, +.@{ionicons-prefix}ios7-arrow-thin-up, +.@{ionicons-prefix}ios7-arrow-up, +.@{ionicons-prefix}ios7-at, +.@{ionicons-prefix}ios7-at-outline, +.@{ionicons-prefix}ios7-barcode, +.@{ionicons-prefix}ios7-barcode-outline, +.@{ionicons-prefix}ios7-baseball, +.@{ionicons-prefix}ios7-baseball-outline, +.@{ionicons-prefix}ios7-basketball, +.@{ionicons-prefix}ios7-basketball-outline, +.@{ionicons-prefix}ios7-bell, +.@{ionicons-prefix}ios7-bell-outline, +.@{ionicons-prefix}ios7-bolt, +.@{ionicons-prefix}ios7-bolt-outline, +.@{ionicons-prefix}ios7-bookmarks, +.@{ionicons-prefix}ios7-bookmarks-outline, +.@{ionicons-prefix}ios7-box, +.@{ionicons-prefix}ios7-box-outline, +.@{ionicons-prefix}ios7-briefcase, +.@{ionicons-prefix}ios7-briefcase-outline, +.@{ionicons-prefix}ios7-browsers, +.@{ionicons-prefix}ios7-browsers-outline, +.@{ionicons-prefix}ios7-calculator, +.@{ionicons-prefix}ios7-calculator-outline, +.@{ionicons-prefix}ios7-calendar, +.@{ionicons-prefix}ios7-calendar-outline, +.@{ionicons-prefix}ios7-camera, +.@{ionicons-prefix}ios7-camera-outline, +.@{ionicons-prefix}ios7-cart, +.@{ionicons-prefix}ios7-cart-outline, +.@{ionicons-prefix}ios7-chatboxes, +.@{ionicons-prefix}ios7-chatboxes-outline, +.@{ionicons-prefix}ios7-chatbubble, +.@{ionicons-prefix}ios7-chatbubble-outline, +.@{ionicons-prefix}ios7-checkmark, +.@{ionicons-prefix}ios7-checkmark-empty, +.@{ionicons-prefix}ios7-checkmark-outline, +.@{ionicons-prefix}ios7-circle-filled, +.@{ionicons-prefix}ios7-circle-outline, +.@{ionicons-prefix}ios7-clock, +.@{ionicons-prefix}ios7-clock-outline, +.@{ionicons-prefix}ios7-close, +.@{ionicons-prefix}ios7-close-empty, +.@{ionicons-prefix}ios7-close-outline, +.@{ionicons-prefix}ios7-cloud, +.@{ionicons-prefix}ios7-cloud-download, +.@{ionicons-prefix}ios7-cloud-download-outline, +.@{ionicons-prefix}ios7-cloud-outline, +.@{ionicons-prefix}ios7-cloud-upload, +.@{ionicons-prefix}ios7-cloud-upload-outline, +.@{ionicons-prefix}ios7-cloudy, +.@{ionicons-prefix}ios7-cloudy-night, +.@{ionicons-prefix}ios7-cloudy-night-outline, +.@{ionicons-prefix}ios7-cloudy-outline, +.@{ionicons-prefix}ios7-cog, +.@{ionicons-prefix}ios7-cog-outline, +.@{ionicons-prefix}ios7-compose, +.@{ionicons-prefix}ios7-compose-outline, +.@{ionicons-prefix}ios7-contact, +.@{ionicons-prefix}ios7-contact-outline, +.@{ionicons-prefix}ios7-copy, +.@{ionicons-prefix}ios7-copy-outline, +.@{ionicons-prefix}ios7-download, +.@{ionicons-prefix}ios7-download-outline, +.@{ionicons-prefix}ios7-drag, +.@{ionicons-prefix}ios7-email, +.@{ionicons-prefix}ios7-email-outline, +.@{ionicons-prefix}ios7-expand, +.@{ionicons-prefix}ios7-eye, +.@{ionicons-prefix}ios7-eye-outline, +.@{ionicons-prefix}ios7-fastforward, +.@{ionicons-prefix}ios7-fastforward-outline, +.@{ionicons-prefix}ios7-filing, +.@{ionicons-prefix}ios7-filing-outline, +.@{ionicons-prefix}ios7-film, +.@{ionicons-prefix}ios7-film-outline, +.@{ionicons-prefix}ios7-flag, +.@{ionicons-prefix}ios7-flag-outline, +.@{ionicons-prefix}ios7-folder, +.@{ionicons-prefix}ios7-folder-outline, +.@{ionicons-prefix}ios7-football, +.@{ionicons-prefix}ios7-football-outline, +.@{ionicons-prefix}ios7-gear, +.@{ionicons-prefix}ios7-gear-outline, +.@{ionicons-prefix}ios7-glasses, +.@{ionicons-prefix}ios7-glasses-outline, +.@{ionicons-prefix}ios7-heart, +.@{ionicons-prefix}ios7-heart-outline, +.@{ionicons-prefix}ios7-help, +.@{ionicons-prefix}ios7-help-empty, +.@{ionicons-prefix}ios7-help-outline, +.@{ionicons-prefix}ios7-home, +.@{ionicons-prefix}ios7-home-outline, +.@{ionicons-prefix}ios7-infinite, +.@{ionicons-prefix}ios7-infinite-outline, +.@{ionicons-prefix}ios7-information, +.@{ionicons-prefix}ios7-information-empty, +.@{ionicons-prefix}ios7-information-outline, +.@{ionicons-prefix}ios7-ionic-outline, +.@{ionicons-prefix}ios7-keypad, +.@{ionicons-prefix}ios7-keypad-outline, +.@{ionicons-prefix}ios7-lightbulb, +.@{ionicons-prefix}ios7-lightbulb-outline, +.@{ionicons-prefix}ios7-location, +.@{ionicons-prefix}ios7-location-outline, +.@{ionicons-prefix}ios7-locked, +.@{ionicons-prefix}ios7-locked-outline, +.@{ionicons-prefix}ios7-loop, +.@{ionicons-prefix}ios7-loop-strong, +.@{ionicons-prefix}ios7-medkit, +.@{ionicons-prefix}ios7-medkit-outline, +.@{ionicons-prefix}ios7-mic, +.@{ionicons-prefix}ios7-mic-off, +.@{ionicons-prefix}ios7-mic-outline, +.@{ionicons-prefix}ios7-minus, +.@{ionicons-prefix}ios7-minus-empty, +.@{ionicons-prefix}ios7-minus-outline, +.@{ionicons-prefix}ios7-monitor, +.@{ionicons-prefix}ios7-monitor-outline, +.@{ionicons-prefix}ios7-moon, +.@{ionicons-prefix}ios7-moon-outline, +.@{ionicons-prefix}ios7-more, +.@{ionicons-prefix}ios7-more-outline, +.@{ionicons-prefix}ios7-musical-note, +.@{ionicons-prefix}ios7-musical-notes, +.@{ionicons-prefix}ios7-navigate, +.@{ionicons-prefix}ios7-navigate-outline, +.@{ionicons-prefix}ios7-paper, +.@{ionicons-prefix}ios7-paper-outline, +.@{ionicons-prefix}ios7-paperplane, +.@{ionicons-prefix}ios7-paperplane-outline, +.@{ionicons-prefix}ios7-partlysunny, +.@{ionicons-prefix}ios7-partlysunny-outline, +.@{ionicons-prefix}ios7-pause, +.@{ionicons-prefix}ios7-pause-outline, +.@{ionicons-prefix}ios7-paw, +.@{ionicons-prefix}ios7-paw-outline, +.@{ionicons-prefix}ios7-people, +.@{ionicons-prefix}ios7-people-outline, +.@{ionicons-prefix}ios7-person, +.@{ionicons-prefix}ios7-person-outline, +.@{ionicons-prefix}ios7-personadd, +.@{ionicons-prefix}ios7-personadd-outline, +.@{ionicons-prefix}ios7-photos, +.@{ionicons-prefix}ios7-photos-outline, +.@{ionicons-prefix}ios7-pie, +.@{ionicons-prefix}ios7-pie-outline, +.@{ionicons-prefix}ios7-play, +.@{ionicons-prefix}ios7-play-outline, +.@{ionicons-prefix}ios7-plus, +.@{ionicons-prefix}ios7-plus-empty, +.@{ionicons-prefix}ios7-plus-outline, +.@{ionicons-prefix}ios7-pricetag, +.@{ionicons-prefix}ios7-pricetag-outline, +.@{ionicons-prefix}ios7-pricetags, +.@{ionicons-prefix}ios7-pricetags-outline, +.@{ionicons-prefix}ios7-printer, +.@{ionicons-prefix}ios7-printer-outline, +.@{ionicons-prefix}ios7-pulse, +.@{ionicons-prefix}ios7-pulse-strong, +.@{ionicons-prefix}ios7-rainy, +.@{ionicons-prefix}ios7-rainy-outline, +.@{ionicons-prefix}ios7-recording, +.@{ionicons-prefix}ios7-recording-outline, +.@{ionicons-prefix}ios7-redo, +.@{ionicons-prefix}ios7-redo-outline, +.@{ionicons-prefix}ios7-refresh, +.@{ionicons-prefix}ios7-refresh-empty, +.@{ionicons-prefix}ios7-refresh-outline, +.@{ionicons-prefix}ios7-reload, +.@{ionicons-prefix}ios7-reverse-camera, +.@{ionicons-prefix}ios7-reverse-camera-outline, +.@{ionicons-prefix}ios7-rewind, +.@{ionicons-prefix}ios7-rewind-outline, +.@{ionicons-prefix}ios7-search, +.@{ionicons-prefix}ios7-search-strong, +.@{ionicons-prefix}ios7-settings, +.@{ionicons-prefix}ios7-settings-strong, +.@{ionicons-prefix}ios7-shrink, +.@{ionicons-prefix}ios7-skipbackward, +.@{ionicons-prefix}ios7-skipbackward-outline, +.@{ionicons-prefix}ios7-skipforward, +.@{ionicons-prefix}ios7-skipforward-outline, +.@{ionicons-prefix}ios7-snowy, +.@{ionicons-prefix}ios7-speedometer, +.@{ionicons-prefix}ios7-speedometer-outline, +.@{ionicons-prefix}ios7-star, +.@{ionicons-prefix}ios7-star-half, +.@{ionicons-prefix}ios7-star-outline, +.@{ionicons-prefix}ios7-stopwatch, +.@{ionicons-prefix}ios7-stopwatch-outline, +.@{ionicons-prefix}ios7-sunny, +.@{ionicons-prefix}ios7-sunny-outline, +.@{ionicons-prefix}ios7-telephone, +.@{ionicons-prefix}ios7-telephone-outline, +.@{ionicons-prefix}ios7-tennisball, +.@{ionicons-prefix}ios7-tennisball-outline, +.@{ionicons-prefix}ios7-thunderstorm, +.@{ionicons-prefix}ios7-thunderstorm-outline, +.@{ionicons-prefix}ios7-time, +.@{ionicons-prefix}ios7-time-outline, +.@{ionicons-prefix}ios7-timer, +.@{ionicons-prefix}ios7-timer-outline, +.@{ionicons-prefix}ios7-toggle, +.@{ionicons-prefix}ios7-toggle-outline, +.@{ionicons-prefix}ios7-trash, +.@{ionicons-prefix}ios7-trash-outline, +.@{ionicons-prefix}ios7-undo, +.@{ionicons-prefix}ios7-undo-outline, +.@{ionicons-prefix}ios7-unlocked, +.@{ionicons-prefix}ios7-unlocked-outline, +.@{ionicons-prefix}ios7-upload, +.@{ionicons-prefix}ios7-upload-outline, +.@{ionicons-prefix}ios7-videocam, +.@{ionicons-prefix}ios7-videocam-outline, +.@{ionicons-prefix}ios7-volume-high, +.@{ionicons-prefix}ios7-volume-low, +.@{ionicons-prefix}ios7-wineglass, +.@{ionicons-prefix}ios7-wineglass-outline, +.@{ionicons-prefix}ios7-world, +.@{ionicons-prefix}ios7-world-outline, +.@{ionicons-prefix}ipad, +.@{ionicons-prefix}iphone, +.@{ionicons-prefix}ipod, +.@{ionicons-prefix}jet, +.@{ionicons-prefix}key, +.@{ionicons-prefix}knife, +.@{ionicons-prefix}laptop, +.@{ionicons-prefix}leaf, +.@{ionicons-prefix}levels, +.@{ionicons-prefix}lightbulb, +.@{ionicons-prefix}link, +.@{ionicons-prefix}load-a, +.@{ionicons-prefix}load-b, +.@{ionicons-prefix}load-c, +.@{ionicons-prefix}load-d, +.@{ionicons-prefix}location, +.@{ionicons-prefix}locked, +.@{ionicons-prefix}log-in, +.@{ionicons-prefix}log-out, +.@{ionicons-prefix}loop, +.@{ionicons-prefix}magnet, +.@{ionicons-prefix}male, +.@{ionicons-prefix}man, +.@{ionicons-prefix}map, +.@{ionicons-prefix}medkit, +.@{ionicons-prefix}merge, +.@{ionicons-prefix}mic-a, +.@{ionicons-prefix}mic-b, +.@{ionicons-prefix}mic-c, +.@{ionicons-prefix}minus, +.@{ionicons-prefix}minus-circled, +.@{ionicons-prefix}minus-round, +.@{ionicons-prefix}model-s, +.@{ionicons-prefix}monitor, +.@{ionicons-prefix}more, +.@{ionicons-prefix}mouse, +.@{ionicons-prefix}music-note, +.@{ionicons-prefix}navicon, +.@{ionicons-prefix}navicon-round, +.@{ionicons-prefix}navigate, +.@{ionicons-prefix}network, +.@{ionicons-prefix}no-smoking, +.@{ionicons-prefix}nuclear, +.@{ionicons-prefix}outlet, +.@{ionicons-prefix}paper-airplane, +.@{ionicons-prefix}paperclip, +.@{ionicons-prefix}pause, +.@{ionicons-prefix}person, +.@{ionicons-prefix}person-add, +.@{ionicons-prefix}person-stalker, +.@{ionicons-prefix}pie-graph, +.@{ionicons-prefix}pin, +.@{ionicons-prefix}pinpoint, +.@{ionicons-prefix}pizza, +.@{ionicons-prefix}plane, +.@{ionicons-prefix}planet, +.@{ionicons-prefix}play, +.@{ionicons-prefix}playstation, +.@{ionicons-prefix}plus, +.@{ionicons-prefix}plus-circled, +.@{ionicons-prefix}plus-round, +.@{ionicons-prefix}podium, +.@{ionicons-prefix}pound, +.@{ionicons-prefix}power, +.@{ionicons-prefix}pricetag, +.@{ionicons-prefix}pricetags, +.@{ionicons-prefix}printer, +.@{ionicons-prefix}pull-request, +.@{ionicons-prefix}qr-scanner, +.@{ionicons-prefix}quote, +.@{ionicons-prefix}radio-waves, +.@{ionicons-prefix}record, +.@{ionicons-prefix}refresh, +.@{ionicons-prefix}reply, +.@{ionicons-prefix}reply-all, +.@{ionicons-prefix}ribbon-a, +.@{ionicons-prefix}ribbon-b, +.@{ionicons-prefix}sad, +.@{ionicons-prefix}scissors, +.@{ionicons-prefix}search, +.@{ionicons-prefix}settings, +.@{ionicons-prefix}share, +.@{ionicons-prefix}shuffle, +.@{ionicons-prefix}skip-backward, +.@{ionicons-prefix}skip-forward, +.@{ionicons-prefix}social-android, +.@{ionicons-prefix}social-android-outline, +.@{ionicons-prefix}social-apple, +.@{ionicons-prefix}social-apple-outline, +.@{ionicons-prefix}social-bitcoin, +.@{ionicons-prefix}social-bitcoin-outline, +.@{ionicons-prefix}social-buffer, +.@{ionicons-prefix}social-buffer-outline, +.@{ionicons-prefix}social-designernews, +.@{ionicons-prefix}social-designernews-outline, +.@{ionicons-prefix}social-dribbble, +.@{ionicons-prefix}social-dribbble-outline, +.@{ionicons-prefix}social-dropbox, +.@{ionicons-prefix}social-dropbox-outline, +.@{ionicons-prefix}social-facebook, +.@{ionicons-prefix}social-facebook-outline, +.@{ionicons-prefix}social-foursquare, +.@{ionicons-prefix}social-foursquare-outline, +.@{ionicons-prefix}social-freebsd-devil, +.@{ionicons-prefix}social-github, +.@{ionicons-prefix}social-github-outline, +.@{ionicons-prefix}social-google, +.@{ionicons-prefix}social-google-outline, +.@{ionicons-prefix}social-googleplus, +.@{ionicons-prefix}social-googleplus-outline, +.@{ionicons-prefix}social-hackernews, +.@{ionicons-prefix}social-hackernews-outline, +.@{ionicons-prefix}social-instagram, +.@{ionicons-prefix}social-instagram-outline, +.@{ionicons-prefix}social-linkedin, +.@{ionicons-prefix}social-linkedin-outline, +.@{ionicons-prefix}social-pinterest, +.@{ionicons-prefix}social-pinterest-outline, +.@{ionicons-prefix}social-reddit, +.@{ionicons-prefix}social-reddit-outline, +.@{ionicons-prefix}social-rss, +.@{ionicons-prefix}social-rss-outline, +.@{ionicons-prefix}social-skype, +.@{ionicons-prefix}social-skype-outline, +.@{ionicons-prefix}social-tumblr, +.@{ionicons-prefix}social-tumblr-outline, +.@{ionicons-prefix}social-tux, +.@{ionicons-prefix}social-twitter, +.@{ionicons-prefix}social-twitter-outline, +.@{ionicons-prefix}social-usd, +.@{ionicons-prefix}social-usd-outline, +.@{ionicons-prefix}social-vimeo, +.@{ionicons-prefix}social-vimeo-outline, +.@{ionicons-prefix}social-windows, +.@{ionicons-prefix}social-windows-outline, +.@{ionicons-prefix}social-wordpress, +.@{ionicons-prefix}social-wordpress-outline, +.@{ionicons-prefix}social-yahoo, +.@{ionicons-prefix}social-yahoo-outline, +.@{ionicons-prefix}social-youtube, +.@{ionicons-prefix}social-youtube-outline, +.@{ionicons-prefix}speakerphone, +.@{ionicons-prefix}speedometer, +.@{ionicons-prefix}spoon, +.@{ionicons-prefix}star, +.@{ionicons-prefix}stats-bars, +.@{ionicons-prefix}steam, +.@{ionicons-prefix}stop, +.@{ionicons-prefix}thermometer, +.@{ionicons-prefix}thumbsdown, +.@{ionicons-prefix}thumbsup, +.@{ionicons-prefix}toggle, +.@{ionicons-prefix}toggle-filled, +.@{ionicons-prefix}trash-a, +.@{ionicons-prefix}trash-b, +.@{ionicons-prefix}trophy, +.@{ionicons-prefix}umbrella, +.@{ionicons-prefix}university, +.@{ionicons-prefix}unlocked, +.@{ionicons-prefix}upload, +.@{ionicons-prefix}usb, +.@{ionicons-prefix}videocamera, +.@{ionicons-prefix}volume-high, +.@{ionicons-prefix}volume-low, +.@{ionicons-prefix}volume-medium, +.@{ionicons-prefix}volume-mute, +.@{ionicons-prefix}wand, +.@{ionicons-prefix}waterdrop, +.@{ionicons-prefix}wifi, +.@{ionicons-prefix}wineglass, +.@{ionicons-prefix}woman, +.@{ionicons-prefix}wrench, +.@{ionicons-prefix}xbox +{ + &:extend(.ion); +} +.@{ionicons-prefix}alert:before { content: @ionicon-var-alert; } +.@{ionicons-prefix}alert-circled:before { content: @ionicon-var-alert-circled; } +.@{ionicons-prefix}android-add:before { content: @ionicon-var-android-add; } +.@{ionicons-prefix}android-add-contact:before { content: @ionicon-var-android-add-contact; } +.@{ionicons-prefix}android-alarm:before { content: @ionicon-var-android-alarm; } +.@{ionicons-prefix}android-archive:before { content: @ionicon-var-android-archive; } +.@{ionicons-prefix}android-arrow-back:before { content: @ionicon-var-android-arrow-back; } +.@{ionicons-prefix}android-arrow-down-left:before { content: @ionicon-var-android-arrow-down-left; } +.@{ionicons-prefix}android-arrow-down-right:before { content: @ionicon-var-android-arrow-down-right; } +.@{ionicons-prefix}android-arrow-forward:before { content: @ionicon-var-android-arrow-forward; } +.@{ionicons-prefix}android-arrow-up-left:before { content: @ionicon-var-android-arrow-up-left; } +.@{ionicons-prefix}android-arrow-up-right:before { content: @ionicon-var-android-arrow-up-right; } +.@{ionicons-prefix}android-battery:before { content: @ionicon-var-android-battery; } +.@{ionicons-prefix}android-book:before { content: @ionicon-var-android-book; } +.@{ionicons-prefix}android-calendar:before { content: @ionicon-var-android-calendar; } +.@{ionicons-prefix}android-call:before { content: @ionicon-var-android-call; } +.@{ionicons-prefix}android-camera:before { content: @ionicon-var-android-camera; } +.@{ionicons-prefix}android-chat:before { content: @ionicon-var-android-chat; } +.@{ionicons-prefix}android-checkmark:before { content: @ionicon-var-android-checkmark; } +.@{ionicons-prefix}android-clock:before { content: @ionicon-var-android-clock; } +.@{ionicons-prefix}android-close:before { content: @ionicon-var-android-close; } +.@{ionicons-prefix}android-contact:before { content: @ionicon-var-android-contact; } +.@{ionicons-prefix}android-contacts:before { content: @ionicon-var-android-contacts; } +.@{ionicons-prefix}android-data:before { content: @ionicon-var-android-data; } +.@{ionicons-prefix}android-developer:before { content: @ionicon-var-android-developer; } +.@{ionicons-prefix}android-display:before { content: @ionicon-var-android-display; } +.@{ionicons-prefix}android-download:before { content: @ionicon-var-android-download; } +.@{ionicons-prefix}android-drawer:before { content: @ionicon-var-android-drawer; } +.@{ionicons-prefix}android-dropdown:before { content: @ionicon-var-android-dropdown; } +.@{ionicons-prefix}android-earth:before { content: @ionicon-var-android-earth; } +.@{ionicons-prefix}android-folder:before { content: @ionicon-var-android-folder; } +.@{ionicons-prefix}android-forums:before { content: @ionicon-var-android-forums; } +.@{ionicons-prefix}android-friends:before { content: @ionicon-var-android-friends; } +.@{ionicons-prefix}android-hand:before { content: @ionicon-var-android-hand; } +.@{ionicons-prefix}android-image:before { content: @ionicon-var-android-image; } +.@{ionicons-prefix}android-inbox:before { content: @ionicon-var-android-inbox; } +.@{ionicons-prefix}android-information:before { content: @ionicon-var-android-information; } +.@{ionicons-prefix}android-keypad:before { content: @ionicon-var-android-keypad; } +.@{ionicons-prefix}android-lightbulb:before { content: @ionicon-var-android-lightbulb; } +.@{ionicons-prefix}android-locate:before { content: @ionicon-var-android-locate; } +.@{ionicons-prefix}android-location:before { content: @ionicon-var-android-location; } +.@{ionicons-prefix}android-mail:before { content: @ionicon-var-android-mail; } +.@{ionicons-prefix}android-microphone:before { content: @ionicon-var-android-microphone; } +.@{ionicons-prefix}android-mixer:before { content: @ionicon-var-android-mixer; } +.@{ionicons-prefix}android-more:before { content: @ionicon-var-android-more; } +.@{ionicons-prefix}android-note:before { content: @ionicon-var-android-note; } +.@{ionicons-prefix}android-playstore:before { content: @ionicon-var-android-playstore; } +.@{ionicons-prefix}android-printer:before { content: @ionicon-var-android-printer; } +.@{ionicons-prefix}android-promotion:before { content: @ionicon-var-android-promotion; } +.@{ionicons-prefix}android-reminder:before { content: @ionicon-var-android-reminder; } +.@{ionicons-prefix}android-remove:before { content: @ionicon-var-android-remove; } +.@{ionicons-prefix}android-search:before { content: @ionicon-var-android-search; } +.@{ionicons-prefix}android-send:before { content: @ionicon-var-android-send; } +.@{ionicons-prefix}android-settings:before { content: @ionicon-var-android-settings; } +.@{ionicons-prefix}android-share:before { content: @ionicon-var-android-share; } +.@{ionicons-prefix}android-social:before { content: @ionicon-var-android-social; } +.@{ionicons-prefix}android-social-user:before { content: @ionicon-var-android-social-user; } +.@{ionicons-prefix}android-sort:before { content: @ionicon-var-android-sort; } +.@{ionicons-prefix}android-stair-drawer:before { content: @ionicon-var-android-stair-drawer; } +.@{ionicons-prefix}android-star:before { content: @ionicon-var-android-star; } +.@{ionicons-prefix}android-stopwatch:before { content: @ionicon-var-android-stopwatch; } +.@{ionicons-prefix}android-storage:before { content: @ionicon-var-android-storage; } +.@{ionicons-prefix}android-system-back:before { content: @ionicon-var-android-system-back; } +.@{ionicons-prefix}android-system-home:before { content: @ionicon-var-android-system-home; } +.@{ionicons-prefix}android-system-windows:before { content: @ionicon-var-android-system-windows; } +.@{ionicons-prefix}android-timer:before { content: @ionicon-var-android-timer; } +.@{ionicons-prefix}android-trash:before { content: @ionicon-var-android-trash; } +.@{ionicons-prefix}android-user-menu:before { content: @ionicon-var-android-user-menu; } +.@{ionicons-prefix}android-volume:before { content: @ionicon-var-android-volume; } +.@{ionicons-prefix}android-wifi:before { content: @ionicon-var-android-wifi; } +.@{ionicons-prefix}aperture:before { content: @ionicon-var-aperture; } +.@{ionicons-prefix}archive:before { content: @ionicon-var-archive; } +.@{ionicons-prefix}arrow-down-a:before { content: @ionicon-var-arrow-down-a; } +.@{ionicons-prefix}arrow-down-b:before { content: @ionicon-var-arrow-down-b; } +.@{ionicons-prefix}arrow-down-c:before { content: @ionicon-var-arrow-down-c; } +.@{ionicons-prefix}arrow-expand:before { content: @ionicon-var-arrow-expand; } +.@{ionicons-prefix}arrow-graph-down-left:before { content: @ionicon-var-arrow-graph-down-left; } +.@{ionicons-prefix}arrow-graph-down-right:before { content: @ionicon-var-arrow-graph-down-right; } +.@{ionicons-prefix}arrow-graph-up-left:before { content: @ionicon-var-arrow-graph-up-left; } +.@{ionicons-prefix}arrow-graph-up-right:before { content: @ionicon-var-arrow-graph-up-right; } +.@{ionicons-prefix}arrow-left-a:before { content: @ionicon-var-arrow-left-a; } +.@{ionicons-prefix}arrow-left-b:before { content: @ionicon-var-arrow-left-b; } +.@{ionicons-prefix}arrow-left-c:before { content: @ionicon-var-arrow-left-c; } +.@{ionicons-prefix}arrow-move:before { content: @ionicon-var-arrow-move; } +.@{ionicons-prefix}arrow-resize:before { content: @ionicon-var-arrow-resize; } +.@{ionicons-prefix}arrow-return-left:before { content: @ionicon-var-arrow-return-left; } +.@{ionicons-prefix}arrow-return-right:before { content: @ionicon-var-arrow-return-right; } +.@{ionicons-prefix}arrow-right-a:before { content: @ionicon-var-arrow-right-a; } +.@{ionicons-prefix}arrow-right-b:before { content: @ionicon-var-arrow-right-b; } +.@{ionicons-prefix}arrow-right-c:before { content: @ionicon-var-arrow-right-c; } +.@{ionicons-prefix}arrow-shrink:before { content: @ionicon-var-arrow-shrink; } +.@{ionicons-prefix}arrow-swap:before { content: @ionicon-var-arrow-swap; } +.@{ionicons-prefix}arrow-up-a:before { content: @ionicon-var-arrow-up-a; } +.@{ionicons-prefix}arrow-up-b:before { content: @ionicon-var-arrow-up-b; } +.@{ionicons-prefix}arrow-up-c:before { content: @ionicon-var-arrow-up-c; } +.@{ionicons-prefix}asterisk:before { content: @ionicon-var-asterisk; } +.@{ionicons-prefix}at:before { content: @ionicon-var-at; } +.@{ionicons-prefix}bag:before { content: @ionicon-var-bag; } +.@{ionicons-prefix}battery-charging:before { content: @ionicon-var-battery-charging; } +.@{ionicons-prefix}battery-empty:before { content: @ionicon-var-battery-empty; } +.@{ionicons-prefix}battery-full:before { content: @ionicon-var-battery-full; } +.@{ionicons-prefix}battery-half:before { content: @ionicon-var-battery-half; } +.@{ionicons-prefix}battery-low:before { content: @ionicon-var-battery-low; } +.@{ionicons-prefix}beaker:before { content: @ionicon-var-beaker; } +.@{ionicons-prefix}beer:before { content: @ionicon-var-beer; } +.@{ionicons-prefix}bluetooth:before { content: @ionicon-var-bluetooth; } +.@{ionicons-prefix}bonfire:before { content: @ionicon-var-bonfire; } +.@{ionicons-prefix}bookmark:before { content: @ionicon-var-bookmark; } +.@{ionicons-prefix}briefcase:before { content: @ionicon-var-briefcase; } +.@{ionicons-prefix}bug:before { content: @ionicon-var-bug; } +.@{ionicons-prefix}calculator:before { content: @ionicon-var-calculator; } +.@{ionicons-prefix}calendar:before { content: @ionicon-var-calendar; } +.@{ionicons-prefix}camera:before { content: @ionicon-var-camera; } +.@{ionicons-prefix}card:before { content: @ionicon-var-card; } +.@{ionicons-prefix}cash:before { content: @ionicon-var-cash; } +.@{ionicons-prefix}chatbox:before { content: @ionicon-var-chatbox; } +.@{ionicons-prefix}chatbox-working:before { content: @ionicon-var-chatbox-working; } +.@{ionicons-prefix}chatboxes:before { content: @ionicon-var-chatboxes; } +.@{ionicons-prefix}chatbubble:before { content: @ionicon-var-chatbubble; } +.@{ionicons-prefix}chatbubble-working:before { content: @ionicon-var-chatbubble-working; } +.@{ionicons-prefix}chatbubbles:before { content: @ionicon-var-chatbubbles; } +.@{ionicons-prefix}checkmark:before { content: @ionicon-var-checkmark; } +.@{ionicons-prefix}checkmark-circled:before { content: @ionicon-var-checkmark-circled; } +.@{ionicons-prefix}checkmark-round:before { content: @ionicon-var-checkmark-round; } +.@{ionicons-prefix}chevron-down:before { content: @ionicon-var-chevron-down; } +.@{ionicons-prefix}chevron-left:before { content: @ionicon-var-chevron-left; } +.@{ionicons-prefix}chevron-right:before { content: @ionicon-var-chevron-right; } +.@{ionicons-prefix}chevron-up:before { content: @ionicon-var-chevron-up; } +.@{ionicons-prefix}clipboard:before { content: @ionicon-var-clipboard; } +.@{ionicons-prefix}clock:before { content: @ionicon-var-clock; } +.@{ionicons-prefix}close:before { content: @ionicon-var-close; } +.@{ionicons-prefix}close-circled:before { content: @ionicon-var-close-circled; } +.@{ionicons-prefix}close-round:before { content: @ionicon-var-close-round; } +.@{ionicons-prefix}closed-captioning:before { content: @ionicon-var-closed-captioning; } +.@{ionicons-prefix}cloud:before { content: @ionicon-var-cloud; } +.@{ionicons-prefix}code:before { content: @ionicon-var-code; } +.@{ionicons-prefix}code-download:before { content: @ionicon-var-code-download; } +.@{ionicons-prefix}code-working:before { content: @ionicon-var-code-working; } +.@{ionicons-prefix}coffee:before { content: @ionicon-var-coffee; } +.@{ionicons-prefix}compass:before { content: @ionicon-var-compass; } +.@{ionicons-prefix}compose:before { content: @ionicon-var-compose; } +.@{ionicons-prefix}connection-bars:before { content: @ionicon-var-connection-bars; } +.@{ionicons-prefix}contrast:before { content: @ionicon-var-contrast; } +.@{ionicons-prefix}cube:before { content: @ionicon-var-cube; } +.@{ionicons-prefix}disc:before { content: @ionicon-var-disc; } +.@{ionicons-prefix}document:before { content: @ionicon-var-document; } +.@{ionicons-prefix}document-text:before { content: @ionicon-var-document-text; } +.@{ionicons-prefix}drag:before { content: @ionicon-var-drag; } +.@{ionicons-prefix}earth:before { content: @ionicon-var-earth; } +.@{ionicons-prefix}edit:before { content: @ionicon-var-edit; } +.@{ionicons-prefix}egg:before { content: @ionicon-var-egg; } +.@{ionicons-prefix}eject:before { content: @ionicon-var-eject; } +.@{ionicons-prefix}email:before { content: @ionicon-var-email; } +.@{ionicons-prefix}eye:before { content: @ionicon-var-eye; } +.@{ionicons-prefix}eye-disabled:before { content: @ionicon-var-eye-disabled; } +.@{ionicons-prefix}female:before { content: @ionicon-var-female; } +.@{ionicons-prefix}filing:before { content: @ionicon-var-filing; } +.@{ionicons-prefix}film-marker:before { content: @ionicon-var-film-marker; } +.@{ionicons-prefix}fireball:before { content: @ionicon-var-fireball; } +.@{ionicons-prefix}flag:before { content: @ionicon-var-flag; } +.@{ionicons-prefix}flame:before { content: @ionicon-var-flame; } +.@{ionicons-prefix}flash:before { content: @ionicon-var-flash; } +.@{ionicons-prefix}flash-off:before { content: @ionicon-var-flash-off; } +.@{ionicons-prefix}flask:before { content: @ionicon-var-flask; } +.@{ionicons-prefix}folder:before { content: @ionicon-var-folder; } +.@{ionicons-prefix}fork:before { content: @ionicon-var-fork; } +.@{ionicons-prefix}fork-repo:before { content: @ionicon-var-fork-repo; } +.@{ionicons-prefix}forward:before { content: @ionicon-var-forward; } +.@{ionicons-prefix}funnel:before { content: @ionicon-var-funnel; } +.@{ionicons-prefix}game-controller-a:before { content: @ionicon-var-game-controller-a; } +.@{ionicons-prefix}game-controller-b:before { content: @ionicon-var-game-controller-b; } +.@{ionicons-prefix}gear-a:before { content: @ionicon-var-gear-a; } +.@{ionicons-prefix}gear-b:before { content: @ionicon-var-gear-b; } +.@{ionicons-prefix}grid:before { content: @ionicon-var-grid; } +.@{ionicons-prefix}hammer:before { content: @ionicon-var-hammer; } +.@{ionicons-prefix}happy:before { content: @ionicon-var-happy; } +.@{ionicons-prefix}headphone:before { content: @ionicon-var-headphone; } +.@{ionicons-prefix}heart:before { content: @ionicon-var-heart; } +.@{ionicons-prefix}heart-broken:before { content: @ionicon-var-heart-broken; } +.@{ionicons-prefix}help:before { content: @ionicon-var-help; } +.@{ionicons-prefix}help-buoy:before { content: @ionicon-var-help-buoy; } +.@{ionicons-prefix}help-circled:before { content: @ionicon-var-help-circled; } +.@{ionicons-prefix}home:before { content: @ionicon-var-home; } +.@{ionicons-prefix}icecream:before { content: @ionicon-var-icecream; } +.@{ionicons-prefix}icon-social-google-plus:before { content: @ionicon-var-icon-social-google-plus; } +.@{ionicons-prefix}icon-social-google-plus-outline:before { content: @ionicon-var-icon-social-google-plus-outline; } +.@{ionicons-prefix}image:before { content: @ionicon-var-image; } +.@{ionicons-prefix}images:before { content: @ionicon-var-images; } +.@{ionicons-prefix}information:before { content: @ionicon-var-information; } +.@{ionicons-prefix}information-circled:before { content: @ionicon-var-information-circled; } +.@{ionicons-prefix}ionic:before { content: @ionicon-var-ionic; } +.@{ionicons-prefix}ios7-alarm:before { content: @ionicon-var-ios7-alarm; } +.@{ionicons-prefix}ios7-alarm-outline:before { content: @ionicon-var-ios7-alarm-outline; } +.@{ionicons-prefix}ios7-albums:before { content: @ionicon-var-ios7-albums; } +.@{ionicons-prefix}ios7-albums-outline:before { content: @ionicon-var-ios7-albums-outline; } +.@{ionicons-prefix}ios7-americanfootball:before { content: @ionicon-var-ios7-americanfootball; } +.@{ionicons-prefix}ios7-americanfootball-outline:before { content: @ionicon-var-ios7-americanfootball-outline; } +.@{ionicons-prefix}ios7-analytics:before { content: @ionicon-var-ios7-analytics; } +.@{ionicons-prefix}ios7-analytics-outline:before { content: @ionicon-var-ios7-analytics-outline; } +.@{ionicons-prefix}ios7-arrow-back:before { content: @ionicon-var-ios7-arrow-back; } +.@{ionicons-prefix}ios7-arrow-down:before { content: @ionicon-var-ios7-arrow-down; } +.@{ionicons-prefix}ios7-arrow-forward:before { content: @ionicon-var-ios7-arrow-forward; } +.@{ionicons-prefix}ios7-arrow-left:before { content: @ionicon-var-ios7-arrow-left; } +.@{ionicons-prefix}ios7-arrow-right:before { content: @ionicon-var-ios7-arrow-right; } +.@{ionicons-prefix}ios7-arrow-thin-down:before { content: @ionicon-var-ios7-arrow-thin-down; } +.@{ionicons-prefix}ios7-arrow-thin-left:before { content: @ionicon-var-ios7-arrow-thin-left; } +.@{ionicons-prefix}ios7-arrow-thin-right:before { content: @ionicon-var-ios7-arrow-thin-right; } +.@{ionicons-prefix}ios7-arrow-thin-up:before { content: @ionicon-var-ios7-arrow-thin-up; } +.@{ionicons-prefix}ios7-arrow-up:before { content: @ionicon-var-ios7-arrow-up; } +.@{ionicons-prefix}ios7-at:before { content: @ionicon-var-ios7-at; } +.@{ionicons-prefix}ios7-at-outline:before { content: @ionicon-var-ios7-at-outline; } +.@{ionicons-prefix}ios7-barcode:before { content: @ionicon-var-ios7-barcode; } +.@{ionicons-prefix}ios7-barcode-outline:before { content: @ionicon-var-ios7-barcode-outline; } +.@{ionicons-prefix}ios7-baseball:before { content: @ionicon-var-ios7-baseball; } +.@{ionicons-prefix}ios7-baseball-outline:before { content: @ionicon-var-ios7-baseball-outline; } +.@{ionicons-prefix}ios7-basketball:before { content: @ionicon-var-ios7-basketball; } +.@{ionicons-prefix}ios7-basketball-outline:before { content: @ionicon-var-ios7-basketball-outline; } +.@{ionicons-prefix}ios7-bell:before { content: @ionicon-var-ios7-bell; } +.@{ionicons-prefix}ios7-bell-outline:before { content: @ionicon-var-ios7-bell-outline; } +.@{ionicons-prefix}ios7-bolt:before { content: @ionicon-var-ios7-bolt; } +.@{ionicons-prefix}ios7-bolt-outline:before { content: @ionicon-var-ios7-bolt-outline; } +.@{ionicons-prefix}ios7-bookmarks:before { content: @ionicon-var-ios7-bookmarks; } +.@{ionicons-prefix}ios7-bookmarks-outline:before { content: @ionicon-var-ios7-bookmarks-outline; } +.@{ionicons-prefix}ios7-box:before { content: @ionicon-var-ios7-box; } +.@{ionicons-prefix}ios7-box-outline:before { content: @ionicon-var-ios7-box-outline; } +.@{ionicons-prefix}ios7-briefcase:before { content: @ionicon-var-ios7-briefcase; } +.@{ionicons-prefix}ios7-briefcase-outline:before { content: @ionicon-var-ios7-briefcase-outline; } +.@{ionicons-prefix}ios7-browsers:before { content: @ionicon-var-ios7-browsers; } +.@{ionicons-prefix}ios7-browsers-outline:before { content: @ionicon-var-ios7-browsers-outline; } +.@{ionicons-prefix}ios7-calculator:before { content: @ionicon-var-ios7-calculator; } +.@{ionicons-prefix}ios7-calculator-outline:before { content: @ionicon-var-ios7-calculator-outline; } +.@{ionicons-prefix}ios7-calendar:before { content: @ionicon-var-ios7-calendar; } +.@{ionicons-prefix}ios7-calendar-outline:before { content: @ionicon-var-ios7-calendar-outline; } +.@{ionicons-prefix}ios7-camera:before { content: @ionicon-var-ios7-camera; } +.@{ionicons-prefix}ios7-camera-outline:before { content: @ionicon-var-ios7-camera-outline; } +.@{ionicons-prefix}ios7-cart:before { content: @ionicon-var-ios7-cart; } +.@{ionicons-prefix}ios7-cart-outline:before { content: @ionicon-var-ios7-cart-outline; } +.@{ionicons-prefix}ios7-chatboxes:before { content: @ionicon-var-ios7-chatboxes; } +.@{ionicons-prefix}ios7-chatboxes-outline:before { content: @ionicon-var-ios7-chatboxes-outline; } +.@{ionicons-prefix}ios7-chatbubble:before { content: @ionicon-var-ios7-chatbubble; } +.@{ionicons-prefix}ios7-chatbubble-outline:before { content: @ionicon-var-ios7-chatbubble-outline; } +.@{ionicons-prefix}ios7-checkmark:before { content: @ionicon-var-ios7-checkmark; } +.@{ionicons-prefix}ios7-checkmark-empty:before { content: @ionicon-var-ios7-checkmark-empty; } +.@{ionicons-prefix}ios7-checkmark-outline:before { content: @ionicon-var-ios7-checkmark-outline; } +.@{ionicons-prefix}ios7-circle-filled:before { content: @ionicon-var-ios7-circle-filled; } +.@{ionicons-prefix}ios7-circle-outline:before { content: @ionicon-var-ios7-circle-outline; } +.@{ionicons-prefix}ios7-clock:before { content: @ionicon-var-ios7-clock; } +.@{ionicons-prefix}ios7-clock-outline:before { content: @ionicon-var-ios7-clock-outline; } +.@{ionicons-prefix}ios7-close:before { content: @ionicon-var-ios7-close; } +.@{ionicons-prefix}ios7-close-empty:before { content: @ionicon-var-ios7-close-empty; } +.@{ionicons-prefix}ios7-close-outline:before { content: @ionicon-var-ios7-close-outline; } +.@{ionicons-prefix}ios7-cloud:before { content: @ionicon-var-ios7-cloud; } +.@{ionicons-prefix}ios7-cloud-download:before { content: @ionicon-var-ios7-cloud-download; } +.@{ionicons-prefix}ios7-cloud-download-outline:before { content: @ionicon-var-ios7-cloud-download-outline; } +.@{ionicons-prefix}ios7-cloud-outline:before { content: @ionicon-var-ios7-cloud-outline; } +.@{ionicons-prefix}ios7-cloud-upload:before { content: @ionicon-var-ios7-cloud-upload; } +.@{ionicons-prefix}ios7-cloud-upload-outline:before { content: @ionicon-var-ios7-cloud-upload-outline; } +.@{ionicons-prefix}ios7-cloudy:before { content: @ionicon-var-ios7-cloudy; } +.@{ionicons-prefix}ios7-cloudy-night:before { content: @ionicon-var-ios7-cloudy-night; } +.@{ionicons-prefix}ios7-cloudy-night-outline:before { content: @ionicon-var-ios7-cloudy-night-outline; } +.@{ionicons-prefix}ios7-cloudy-outline:before { content: @ionicon-var-ios7-cloudy-outline; } +.@{ionicons-prefix}ios7-cog:before { content: @ionicon-var-ios7-cog; } +.@{ionicons-prefix}ios7-cog-outline:before { content: @ionicon-var-ios7-cog-outline; } +.@{ionicons-prefix}ios7-compose:before { content: @ionicon-var-ios7-compose; } +.@{ionicons-prefix}ios7-compose-outline:before { content: @ionicon-var-ios7-compose-outline; } +.@{ionicons-prefix}ios7-contact:before { content: @ionicon-var-ios7-contact; } +.@{ionicons-prefix}ios7-contact-outline:before { content: @ionicon-var-ios7-contact-outline; } +.@{ionicons-prefix}ios7-copy:before { content: @ionicon-var-ios7-copy; } +.@{ionicons-prefix}ios7-copy-outline:before { content: @ionicon-var-ios7-copy-outline; } +.@{ionicons-prefix}ios7-download:before { content: @ionicon-var-ios7-download; } +.@{ionicons-prefix}ios7-download-outline:before { content: @ionicon-var-ios7-download-outline; } +.@{ionicons-prefix}ios7-drag:before { content: @ionicon-var-ios7-drag; } +.@{ionicons-prefix}ios7-email:before { content: @ionicon-var-ios7-email; } +.@{ionicons-prefix}ios7-email-outline:before { content: @ionicon-var-ios7-email-outline; } +.@{ionicons-prefix}ios7-expand:before { content: @ionicon-var-ios7-expand; } +.@{ionicons-prefix}ios7-eye:before { content: @ionicon-var-ios7-eye; } +.@{ionicons-prefix}ios7-eye-outline:before { content: @ionicon-var-ios7-eye-outline; } +.@{ionicons-prefix}ios7-fastforward:before { content: @ionicon-var-ios7-fastforward; } +.@{ionicons-prefix}ios7-fastforward-outline:before { content: @ionicon-var-ios7-fastforward-outline; } +.@{ionicons-prefix}ios7-filing:before { content: @ionicon-var-ios7-filing; } +.@{ionicons-prefix}ios7-filing-outline:before { content: @ionicon-var-ios7-filing-outline; } +.@{ionicons-prefix}ios7-film:before { content: @ionicon-var-ios7-film; } +.@{ionicons-prefix}ios7-film-outline:before { content: @ionicon-var-ios7-film-outline; } +.@{ionicons-prefix}ios7-flag:before { content: @ionicon-var-ios7-flag; } +.@{ionicons-prefix}ios7-flag-outline:before { content: @ionicon-var-ios7-flag-outline; } +.@{ionicons-prefix}ios7-folder:before { content: @ionicon-var-ios7-folder; } +.@{ionicons-prefix}ios7-folder-outline:before { content: @ionicon-var-ios7-folder-outline; } +.@{ionicons-prefix}ios7-football:before { content: @ionicon-var-ios7-football; } +.@{ionicons-prefix}ios7-football-outline:before { content: @ionicon-var-ios7-football-outline; } +.@{ionicons-prefix}ios7-gear:before { content: @ionicon-var-ios7-gear; } +.@{ionicons-prefix}ios7-gear-outline:before { content: @ionicon-var-ios7-gear-outline; } +.@{ionicons-prefix}ios7-glasses:before { content: @ionicon-var-ios7-glasses; } +.@{ionicons-prefix}ios7-glasses-outline:before { content: @ionicon-var-ios7-glasses-outline; } +.@{ionicons-prefix}ios7-heart:before { content: @ionicon-var-ios7-heart; } +.@{ionicons-prefix}ios7-heart-outline:before { content: @ionicon-var-ios7-heart-outline; } +.@{ionicons-prefix}ios7-help:before { content: @ionicon-var-ios7-help; } +.@{ionicons-prefix}ios7-help-empty:before { content: @ionicon-var-ios7-help-empty; } +.@{ionicons-prefix}ios7-help-outline:before { content: @ionicon-var-ios7-help-outline; } +.@{ionicons-prefix}ios7-home:before { content: @ionicon-var-ios7-home; } +.@{ionicons-prefix}ios7-home-outline:before { content: @ionicon-var-ios7-home-outline; } +.@{ionicons-prefix}ios7-infinite:before { content: @ionicon-var-ios7-infinite; } +.@{ionicons-prefix}ios7-infinite-outline:before { content: @ionicon-var-ios7-infinite-outline; } +.@{ionicons-prefix}ios7-information:before { content: @ionicon-var-ios7-information; } +.@{ionicons-prefix}ios7-information-empty:before { content: @ionicon-var-ios7-information-empty; } +.@{ionicons-prefix}ios7-information-outline:before { content: @ionicon-var-ios7-information-outline; } +.@{ionicons-prefix}ios7-ionic-outline:before { content: @ionicon-var-ios7-ionic-outline; } +.@{ionicons-prefix}ios7-keypad:before { content: @ionicon-var-ios7-keypad; } +.@{ionicons-prefix}ios7-keypad-outline:before { content: @ionicon-var-ios7-keypad-outline; } +.@{ionicons-prefix}ios7-lightbulb:before { content: @ionicon-var-ios7-lightbulb; } +.@{ionicons-prefix}ios7-lightbulb-outline:before { content: @ionicon-var-ios7-lightbulb-outline; } +.@{ionicons-prefix}ios7-location:before { content: @ionicon-var-ios7-location; } +.@{ionicons-prefix}ios7-location-outline:before { content: @ionicon-var-ios7-location-outline; } +.@{ionicons-prefix}ios7-locked:before { content: @ionicon-var-ios7-locked; } +.@{ionicons-prefix}ios7-locked-outline:before { content: @ionicon-var-ios7-locked-outline; } +.@{ionicons-prefix}ios7-loop:before { content: @ionicon-var-ios7-loop; } +.@{ionicons-prefix}ios7-loop-strong:before { content: @ionicon-var-ios7-loop-strong; } +.@{ionicons-prefix}ios7-medkit:before { content: @ionicon-var-ios7-medkit; } +.@{ionicons-prefix}ios7-medkit-outline:before { content: @ionicon-var-ios7-medkit-outline; } +.@{ionicons-prefix}ios7-mic:before { content: @ionicon-var-ios7-mic; } +.@{ionicons-prefix}ios7-mic-off:before { content: @ionicon-var-ios7-mic-off; } +.@{ionicons-prefix}ios7-mic-outline:before { content: @ionicon-var-ios7-mic-outline; } +.@{ionicons-prefix}ios7-minus:before { content: @ionicon-var-ios7-minus; } +.@{ionicons-prefix}ios7-minus-empty:before { content: @ionicon-var-ios7-minus-empty; } +.@{ionicons-prefix}ios7-minus-outline:before { content: @ionicon-var-ios7-minus-outline; } +.@{ionicons-prefix}ios7-monitor:before { content: @ionicon-var-ios7-monitor; } +.@{ionicons-prefix}ios7-monitor-outline:before { content: @ionicon-var-ios7-monitor-outline; } +.@{ionicons-prefix}ios7-moon:before { content: @ionicon-var-ios7-moon; } +.@{ionicons-prefix}ios7-moon-outline:before { content: @ionicon-var-ios7-moon-outline; } +.@{ionicons-prefix}ios7-more:before { content: @ionicon-var-ios7-more; } +.@{ionicons-prefix}ios7-more-outline:before { content: @ionicon-var-ios7-more-outline; } +.@{ionicons-prefix}ios7-musical-note:before { content: @ionicon-var-ios7-musical-note; } +.@{ionicons-prefix}ios7-musical-notes:before { content: @ionicon-var-ios7-musical-notes; } +.@{ionicons-prefix}ios7-navigate:before { content: @ionicon-var-ios7-navigate; } +.@{ionicons-prefix}ios7-navigate-outline:before { content: @ionicon-var-ios7-navigate-outline; } +.@{ionicons-prefix}ios7-paper:before { content: @ionicon-var-ios7-paper; } +.@{ionicons-prefix}ios7-paper-outline:before { content: @ionicon-var-ios7-paper-outline; } +.@{ionicons-prefix}ios7-paperplane:before { content: @ionicon-var-ios7-paperplane; } +.@{ionicons-prefix}ios7-paperplane-outline:before { content: @ionicon-var-ios7-paperplane-outline; } +.@{ionicons-prefix}ios7-partlysunny:before { content: @ionicon-var-ios7-partlysunny; } +.@{ionicons-prefix}ios7-partlysunny-outline:before { content: @ionicon-var-ios7-partlysunny-outline; } +.@{ionicons-prefix}ios7-pause:before { content: @ionicon-var-ios7-pause; } +.@{ionicons-prefix}ios7-pause-outline:before { content: @ionicon-var-ios7-pause-outline; } +.@{ionicons-prefix}ios7-paw:before { content: @ionicon-var-ios7-paw; } +.@{ionicons-prefix}ios7-paw-outline:before { content: @ionicon-var-ios7-paw-outline; } +.@{ionicons-prefix}ios7-people:before { content: @ionicon-var-ios7-people; } +.@{ionicons-prefix}ios7-people-outline:before { content: @ionicon-var-ios7-people-outline; } +.@{ionicons-prefix}ios7-person:before { content: @ionicon-var-ios7-person; } +.@{ionicons-prefix}ios7-person-outline:before { content: @ionicon-var-ios7-person-outline; } +.@{ionicons-prefix}ios7-personadd:before { content: @ionicon-var-ios7-personadd; } +.@{ionicons-prefix}ios7-personadd-outline:before { content: @ionicon-var-ios7-personadd-outline; } +.@{ionicons-prefix}ios7-photos:before { content: @ionicon-var-ios7-photos; } +.@{ionicons-prefix}ios7-photos-outline:before { content: @ionicon-var-ios7-photos-outline; } +.@{ionicons-prefix}ios7-pie:before { content: @ionicon-var-ios7-pie; } +.@{ionicons-prefix}ios7-pie-outline:before { content: @ionicon-var-ios7-pie-outline; } +.@{ionicons-prefix}ios7-play:before { content: @ionicon-var-ios7-play; } +.@{ionicons-prefix}ios7-play-outline:before { content: @ionicon-var-ios7-play-outline; } +.@{ionicons-prefix}ios7-plus:before { content: @ionicon-var-ios7-plus; } +.@{ionicons-prefix}ios7-plus-empty:before { content: @ionicon-var-ios7-plus-empty; } +.@{ionicons-prefix}ios7-plus-outline:before { content: @ionicon-var-ios7-plus-outline; } +.@{ionicons-prefix}ios7-pricetag:before { content: @ionicon-var-ios7-pricetag; } +.@{ionicons-prefix}ios7-pricetag-outline:before { content: @ionicon-var-ios7-pricetag-outline; } +.@{ionicons-prefix}ios7-pricetags:before { content: @ionicon-var-ios7-pricetags; } +.@{ionicons-prefix}ios7-pricetags-outline:before { content: @ionicon-var-ios7-pricetags-outline; } +.@{ionicons-prefix}ios7-printer:before { content: @ionicon-var-ios7-printer; } +.@{ionicons-prefix}ios7-printer-outline:before { content: @ionicon-var-ios7-printer-outline; } +.@{ionicons-prefix}ios7-pulse:before { content: @ionicon-var-ios7-pulse; } +.@{ionicons-prefix}ios7-pulse-strong:before { content: @ionicon-var-ios7-pulse-strong; } +.@{ionicons-prefix}ios7-rainy:before { content: @ionicon-var-ios7-rainy; } +.@{ionicons-prefix}ios7-rainy-outline:before { content: @ionicon-var-ios7-rainy-outline; } +.@{ionicons-prefix}ios7-recording:before { content: @ionicon-var-ios7-recording; } +.@{ionicons-prefix}ios7-recording-outline:before { content: @ionicon-var-ios7-recording-outline; } +.@{ionicons-prefix}ios7-redo:before { content: @ionicon-var-ios7-redo; } +.@{ionicons-prefix}ios7-redo-outline:before { content: @ionicon-var-ios7-redo-outline; } +.@{ionicons-prefix}ios7-refresh:before { content: @ionicon-var-ios7-refresh; } +.@{ionicons-prefix}ios7-refresh-empty:before { content: @ionicon-var-ios7-refresh-empty; } +.@{ionicons-prefix}ios7-refresh-outline:before { content: @ionicon-var-ios7-refresh-outline; } +.@{ionicons-prefix}ios7-reload:before { content: @ionicon-var-ios7-reload; } +.@{ionicons-prefix}ios7-reverse-camera:before { content: @ionicon-var-ios7-reverse-camera; } +.@{ionicons-prefix}ios7-reverse-camera-outline:before { content: @ionicon-var-ios7-reverse-camera-outline; } +.@{ionicons-prefix}ios7-rewind:before { content: @ionicon-var-ios7-rewind; } +.@{ionicons-prefix}ios7-rewind-outline:before { content: @ionicon-var-ios7-rewind-outline; } +.@{ionicons-prefix}ios7-search:before { content: @ionicon-var-ios7-search; } +.@{ionicons-prefix}ios7-search-strong:before { content: @ionicon-var-ios7-search-strong; } +.@{ionicons-prefix}ios7-settings:before { content: @ionicon-var-ios7-settings; } +.@{ionicons-prefix}ios7-settings-strong:before { content: @ionicon-var-ios7-settings-strong; } +.@{ionicons-prefix}ios7-shrink:before { content: @ionicon-var-ios7-shrink; } +.@{ionicons-prefix}ios7-skipbackward:before { content: @ionicon-var-ios7-skipbackward; } +.@{ionicons-prefix}ios7-skipbackward-outline:before { content: @ionicon-var-ios7-skipbackward-outline; } +.@{ionicons-prefix}ios7-skipforward:before { content: @ionicon-var-ios7-skipforward; } +.@{ionicons-prefix}ios7-skipforward-outline:before { content: @ionicon-var-ios7-skipforward-outline; } +.@{ionicons-prefix}ios7-snowy:before { content: @ionicon-var-ios7-snowy; } +.@{ionicons-prefix}ios7-speedometer:before { content: @ionicon-var-ios7-speedometer; } +.@{ionicons-prefix}ios7-speedometer-outline:before { content: @ionicon-var-ios7-speedometer-outline; } +.@{ionicons-prefix}ios7-star:before { content: @ionicon-var-ios7-star; } +.@{ionicons-prefix}ios7-star-half:before { content: @ionicon-var-ios7-star-half; } +.@{ionicons-prefix}ios7-star-outline:before { content: @ionicon-var-ios7-star-outline; } +.@{ionicons-prefix}ios7-stopwatch:before { content: @ionicon-var-ios7-stopwatch; } +.@{ionicons-prefix}ios7-stopwatch-outline:before { content: @ionicon-var-ios7-stopwatch-outline; } +.@{ionicons-prefix}ios7-sunny:before { content: @ionicon-var-ios7-sunny; } +.@{ionicons-prefix}ios7-sunny-outline:before { content: @ionicon-var-ios7-sunny-outline; } +.@{ionicons-prefix}ios7-telephone:before { content: @ionicon-var-ios7-telephone; } +.@{ionicons-prefix}ios7-telephone-outline:before { content: @ionicon-var-ios7-telephone-outline; } +.@{ionicons-prefix}ios7-tennisball:before { content: @ionicon-var-ios7-tennisball; } +.@{ionicons-prefix}ios7-tennisball-outline:before { content: @ionicon-var-ios7-tennisball-outline; } +.@{ionicons-prefix}ios7-thunderstorm:before { content: @ionicon-var-ios7-thunderstorm; } +.@{ionicons-prefix}ios7-thunderstorm-outline:before { content: @ionicon-var-ios7-thunderstorm-outline; } +.@{ionicons-prefix}ios7-time:before { content: @ionicon-var-ios7-time; } +.@{ionicons-prefix}ios7-time-outline:before { content: @ionicon-var-ios7-time-outline; } +.@{ionicons-prefix}ios7-timer:before { content: @ionicon-var-ios7-timer; } +.@{ionicons-prefix}ios7-timer-outline:before { content: @ionicon-var-ios7-timer-outline; } +.@{ionicons-prefix}ios7-toggle:before { content: @ionicon-var-ios7-toggle; } +.@{ionicons-prefix}ios7-toggle-outline:before { content: @ionicon-var-ios7-toggle-outline; } +.@{ionicons-prefix}ios7-trash:before { content: @ionicon-var-ios7-trash; } +.@{ionicons-prefix}ios7-trash-outline:before { content: @ionicon-var-ios7-trash-outline; } +.@{ionicons-prefix}ios7-undo:before { content: @ionicon-var-ios7-undo; } +.@{ionicons-prefix}ios7-undo-outline:before { content: @ionicon-var-ios7-undo-outline; } +.@{ionicons-prefix}ios7-unlocked:before { content: @ionicon-var-ios7-unlocked; } +.@{ionicons-prefix}ios7-unlocked-outline:before { content: @ionicon-var-ios7-unlocked-outline; } +.@{ionicons-prefix}ios7-upload:before { content: @ionicon-var-ios7-upload; } +.@{ionicons-prefix}ios7-upload-outline:before { content: @ionicon-var-ios7-upload-outline; } +.@{ionicons-prefix}ios7-videocam:before { content: @ionicon-var-ios7-videocam; } +.@{ionicons-prefix}ios7-videocam-outline:before { content: @ionicon-var-ios7-videocam-outline; } +.@{ionicons-prefix}ios7-volume-high:before { content: @ionicon-var-ios7-volume-high; } +.@{ionicons-prefix}ios7-volume-low:before { content: @ionicon-var-ios7-volume-low; } +.@{ionicons-prefix}ios7-wineglass:before { content: @ionicon-var-ios7-wineglass; } +.@{ionicons-prefix}ios7-wineglass-outline:before { content: @ionicon-var-ios7-wineglass-outline; } +.@{ionicons-prefix}ios7-world:before { content: @ionicon-var-ios7-world; } +.@{ionicons-prefix}ios7-world-outline:before { content: @ionicon-var-ios7-world-outline; } +.@{ionicons-prefix}ipad:before { content: @ionicon-var-ipad; } +.@{ionicons-prefix}iphone:before { content: @ionicon-var-iphone; } +.@{ionicons-prefix}ipod:before { content: @ionicon-var-ipod; } +.@{ionicons-prefix}jet:before { content: @ionicon-var-jet; } +.@{ionicons-prefix}key:before { content: @ionicon-var-key; } +.@{ionicons-prefix}knife:before { content: @ionicon-var-knife; } +.@{ionicons-prefix}laptop:before { content: @ionicon-var-laptop; } +.@{ionicons-prefix}leaf:before { content: @ionicon-var-leaf; } +.@{ionicons-prefix}levels:before { content: @ionicon-var-levels; } +.@{ionicons-prefix}lightbulb:before { content: @ionicon-var-lightbulb; } +.@{ionicons-prefix}link:before { content: @ionicon-var-link; } +.@{ionicons-prefix}load-a:before { content: @ionicon-var-load-a; } +.@{ionicons-prefix}load-b:before { content: @ionicon-var-load-b; } +.@{ionicons-prefix}load-c:before { content: @ionicon-var-load-c; } +.@{ionicons-prefix}load-d:before { content: @ionicon-var-load-d; } +.@{ionicons-prefix}location:before { content: @ionicon-var-location; } +.@{ionicons-prefix}locked:before { content: @ionicon-var-locked; } +.@{ionicons-prefix}log-in:before { content: @ionicon-var-log-in; } +.@{ionicons-prefix}log-out:before { content: @ionicon-var-log-out; } +.@{ionicons-prefix}loop:before { content: @ionicon-var-loop; } +.@{ionicons-prefix}magnet:before { content: @ionicon-var-magnet; } +.@{ionicons-prefix}male:before { content: @ionicon-var-male; } +.@{ionicons-prefix}man:before { content: @ionicon-var-man; } +.@{ionicons-prefix}map:before { content: @ionicon-var-map; } +.@{ionicons-prefix}medkit:before { content: @ionicon-var-medkit; } +.@{ionicons-prefix}merge:before { content: @ionicon-var-merge; } +.@{ionicons-prefix}mic-a:before { content: @ionicon-var-mic-a; } +.@{ionicons-prefix}mic-b:before { content: @ionicon-var-mic-b; } +.@{ionicons-prefix}mic-c:before { content: @ionicon-var-mic-c; } +.@{ionicons-prefix}minus:before { content: @ionicon-var-minus; } +.@{ionicons-prefix}minus-circled:before { content: @ionicon-var-minus-circled; } +.@{ionicons-prefix}minus-round:before { content: @ionicon-var-minus-round; } +.@{ionicons-prefix}model-s:before { content: @ionicon-var-model-s; } +.@{ionicons-prefix}monitor:before { content: @ionicon-var-monitor; } +.@{ionicons-prefix}more:before { content: @ionicon-var-more; } +.@{ionicons-prefix}mouse:before { content: @ionicon-var-mouse; } +.@{ionicons-prefix}music-note:before { content: @ionicon-var-music-note; } +.@{ionicons-prefix}navicon:before { content: @ionicon-var-navicon; } +.@{ionicons-prefix}navicon-round:before { content: @ionicon-var-navicon-round; } +.@{ionicons-prefix}navigate:before { content: @ionicon-var-navigate; } +.@{ionicons-prefix}network:before { content: @ionicon-var-network; } +.@{ionicons-prefix}no-smoking:before { content: @ionicon-var-no-smoking; } +.@{ionicons-prefix}nuclear:before { content: @ionicon-var-nuclear; } +.@{ionicons-prefix}outlet:before { content: @ionicon-var-outlet; } +.@{ionicons-prefix}paper-airplane:before { content: @ionicon-var-paper-airplane; } +.@{ionicons-prefix}paperclip:before { content: @ionicon-var-paperclip; } +.@{ionicons-prefix}pause:before { content: @ionicon-var-pause; } +.@{ionicons-prefix}person:before { content: @ionicon-var-person; } +.@{ionicons-prefix}person-add:before { content: @ionicon-var-person-add; } +.@{ionicons-prefix}person-stalker:before { content: @ionicon-var-person-stalker; } +.@{ionicons-prefix}pie-graph:before { content: @ionicon-var-pie-graph; } +.@{ionicons-prefix}pin:before { content: @ionicon-var-pin; } +.@{ionicons-prefix}pinpoint:before { content: @ionicon-var-pinpoint; } +.@{ionicons-prefix}pizza:before { content: @ionicon-var-pizza; } +.@{ionicons-prefix}plane:before { content: @ionicon-var-plane; } +.@{ionicons-prefix}planet:before { content: @ionicon-var-planet; } +.@{ionicons-prefix}play:before { content: @ionicon-var-play; } +.@{ionicons-prefix}playstation:before { content: @ionicon-var-playstation; } +.@{ionicons-prefix}plus:before { content: @ionicon-var-plus; } +.@{ionicons-prefix}plus-circled:before { content: @ionicon-var-plus-circled; } +.@{ionicons-prefix}plus-round:before { content: @ionicon-var-plus-round; } +.@{ionicons-prefix}podium:before { content: @ionicon-var-podium; } +.@{ionicons-prefix}pound:before { content: @ionicon-var-pound; } +.@{ionicons-prefix}power:before { content: @ionicon-var-power; } +.@{ionicons-prefix}pricetag:before { content: @ionicon-var-pricetag; } +.@{ionicons-prefix}pricetags:before { content: @ionicon-var-pricetags; } +.@{ionicons-prefix}printer:before { content: @ionicon-var-printer; } +.@{ionicons-prefix}pull-request:before { content: @ionicon-var-pull-request; } +.@{ionicons-prefix}qr-scanner:before { content: @ionicon-var-qr-scanner; } +.@{ionicons-prefix}quote:before { content: @ionicon-var-quote; } +.@{ionicons-prefix}radio-waves:before { content: @ionicon-var-radio-waves; } +.@{ionicons-prefix}record:before { content: @ionicon-var-record; } +.@{ionicons-prefix}refresh:before { content: @ionicon-var-refresh; } +.@{ionicons-prefix}reply:before { content: @ionicon-var-reply; } +.@{ionicons-prefix}reply-all:before { content: @ionicon-var-reply-all; } +.@{ionicons-prefix}ribbon-a:before { content: @ionicon-var-ribbon-a; } +.@{ionicons-prefix}ribbon-b:before { content: @ionicon-var-ribbon-b; } +.@{ionicons-prefix}sad:before { content: @ionicon-var-sad; } +.@{ionicons-prefix}scissors:before { content: @ionicon-var-scissors; } +.@{ionicons-prefix}search:before { content: @ionicon-var-search; } +.@{ionicons-prefix}settings:before { content: @ionicon-var-settings; } +.@{ionicons-prefix}share:before { content: @ionicon-var-share; } +.@{ionicons-prefix}shuffle:before { content: @ionicon-var-shuffle; } +.@{ionicons-prefix}skip-backward:before { content: @ionicon-var-skip-backward; } +.@{ionicons-prefix}skip-forward:before { content: @ionicon-var-skip-forward; } +.@{ionicons-prefix}social-android:before { content: @ionicon-var-social-android; } +.@{ionicons-prefix}social-android-outline:before { content: @ionicon-var-social-android-outline; } +.@{ionicons-prefix}social-apple:before { content: @ionicon-var-social-apple; } +.@{ionicons-prefix}social-apple-outline:before { content: @ionicon-var-social-apple-outline; } +.@{ionicons-prefix}social-bitcoin:before { content: @ionicon-var-social-bitcoin; } +.@{ionicons-prefix}social-bitcoin-outline:before { content: @ionicon-var-social-bitcoin-outline; } +.@{ionicons-prefix}social-buffer:before { content: @ionicon-var-social-buffer; } +.@{ionicons-prefix}social-buffer-outline:before { content: @ionicon-var-social-buffer-outline; } +.@{ionicons-prefix}social-designernews:before { content: @ionicon-var-social-designernews; } +.@{ionicons-prefix}social-designernews-outline:before { content: @ionicon-var-social-designernews-outline; } +.@{ionicons-prefix}social-dribbble:before { content: @ionicon-var-social-dribbble; } +.@{ionicons-prefix}social-dribbble-outline:before { content: @ionicon-var-social-dribbble-outline; } +.@{ionicons-prefix}social-dropbox:before { content: @ionicon-var-social-dropbox; } +.@{ionicons-prefix}social-dropbox-outline:before { content: @ionicon-var-social-dropbox-outline; } +.@{ionicons-prefix}social-facebook:before { content: @ionicon-var-social-facebook; } +.@{ionicons-prefix}social-facebook-outline:before { content: @ionicon-var-social-facebook-outline; } +.@{ionicons-prefix}social-foursquare:before { content: @ionicon-var-social-foursquare; } +.@{ionicons-prefix}social-foursquare-outline:before { content: @ionicon-var-social-foursquare-outline; } +.@{ionicons-prefix}social-freebsd-devil:before { content: @ionicon-var-social-freebsd-devil; } +.@{ionicons-prefix}social-github:before { content: @ionicon-var-social-github; } +.@{ionicons-prefix}social-github-outline:before { content: @ionicon-var-social-github-outline; } +.@{ionicons-prefix}social-google:before { content: @ionicon-var-social-google; } +.@{ionicons-prefix}social-google-outline:before { content: @ionicon-var-social-google-outline; } +.@{ionicons-prefix}social-googleplus:before { content: @ionicon-var-social-googleplus; } +.@{ionicons-prefix}social-googleplus-outline:before { content: @ionicon-var-social-googleplus-outline; } +.@{ionicons-prefix}social-hackernews:before { content: @ionicon-var-social-hackernews; } +.@{ionicons-prefix}social-hackernews-outline:before { content: @ionicon-var-social-hackernews-outline; } +.@{ionicons-prefix}social-instagram:before { content: @ionicon-var-social-instagram; } +.@{ionicons-prefix}social-instagram-outline:before { content: @ionicon-var-social-instagram-outline; } +.@{ionicons-prefix}social-linkedin:before { content: @ionicon-var-social-linkedin; } +.@{ionicons-prefix}social-linkedin-outline:before { content: @ionicon-var-social-linkedin-outline; } +.@{ionicons-prefix}social-pinterest:before { content: @ionicon-var-social-pinterest; } +.@{ionicons-prefix}social-pinterest-outline:before { content: @ionicon-var-social-pinterest-outline; } +.@{ionicons-prefix}social-reddit:before { content: @ionicon-var-social-reddit; } +.@{ionicons-prefix}social-reddit-outline:before { content: @ionicon-var-social-reddit-outline; } +.@{ionicons-prefix}social-rss:before { content: @ionicon-var-social-rss; } +.@{ionicons-prefix}social-rss-outline:before { content: @ionicon-var-social-rss-outline; } +.@{ionicons-prefix}social-skype:before { content: @ionicon-var-social-skype; } +.@{ionicons-prefix}social-skype-outline:before { content: @ionicon-var-social-skype-outline; } +.@{ionicons-prefix}social-tumblr:before { content: @ionicon-var-social-tumblr; } +.@{ionicons-prefix}social-tumblr-outline:before { content: @ionicon-var-social-tumblr-outline; } +.@{ionicons-prefix}social-tux:before { content: @ionicon-var-social-tux; } +.@{ionicons-prefix}social-twitter:before { content: @ionicon-var-social-twitter; } +.@{ionicons-prefix}social-twitter-outline:before { content: @ionicon-var-social-twitter-outline; } +.@{ionicons-prefix}social-usd:before { content: @ionicon-var-social-usd; } +.@{ionicons-prefix}social-usd-outline:before { content: @ionicon-var-social-usd-outline; } +.@{ionicons-prefix}social-vimeo:before { content: @ionicon-var-social-vimeo; } +.@{ionicons-prefix}social-vimeo-outline:before { content: @ionicon-var-social-vimeo-outline; } +.@{ionicons-prefix}social-windows:before { content: @ionicon-var-social-windows; } +.@{ionicons-prefix}social-windows-outline:before { content: @ionicon-var-social-windows-outline; } +.@{ionicons-prefix}social-wordpress:before { content: @ionicon-var-social-wordpress; } +.@{ionicons-prefix}social-wordpress-outline:before { content: @ionicon-var-social-wordpress-outline; } +.@{ionicons-prefix}social-yahoo:before { content: @ionicon-var-social-yahoo; } +.@{ionicons-prefix}social-yahoo-outline:before { content: @ionicon-var-social-yahoo-outline; } +.@{ionicons-prefix}social-youtube:before { content: @ionicon-var-social-youtube; } +.@{ionicons-prefix}social-youtube-outline:before { content: @ionicon-var-social-youtube-outline; } +.@{ionicons-prefix}speakerphone:before { content: @ionicon-var-speakerphone; } +.@{ionicons-prefix}speedometer:before { content: @ionicon-var-speedometer; } +.@{ionicons-prefix}spoon:before { content: @ionicon-var-spoon; } +.@{ionicons-prefix}star:before { content: @ionicon-var-star; } +.@{ionicons-prefix}stats-bars:before { content: @ionicon-var-stats-bars; } +.@{ionicons-prefix}steam:before { content: @ionicon-var-steam; } +.@{ionicons-prefix}stop:before { content: @ionicon-var-stop; } +.@{ionicons-prefix}thermometer:before { content: @ionicon-var-thermometer; } +.@{ionicons-prefix}thumbsdown:before { content: @ionicon-var-thumbsdown; } +.@{ionicons-prefix}thumbsup:before { content: @ionicon-var-thumbsup; } +.@{ionicons-prefix}toggle:before { content: @ionicon-var-toggle; } +.@{ionicons-prefix}toggle-filled:before { content: @ionicon-var-toggle-filled; } +.@{ionicons-prefix}trash-a:before { content: @ionicon-var-trash-a; } +.@{ionicons-prefix}trash-b:before { content: @ionicon-var-trash-b; } +.@{ionicons-prefix}trophy:before { content: @ionicon-var-trophy; } +.@{ionicons-prefix}umbrella:before { content: @ionicon-var-umbrella; } +.@{ionicons-prefix}university:before { content: @ionicon-var-university; } +.@{ionicons-prefix}unlocked:before { content: @ionicon-var-unlocked; } +.@{ionicons-prefix}upload:before { content: @ionicon-var-upload; } +.@{ionicons-prefix}usb:before { content: @ionicon-var-usb; } +.@{ionicons-prefix}videocamera:before { content: @ionicon-var-videocamera; } +.@{ionicons-prefix}volume-high:before { content: @ionicon-var-volume-high; } +.@{ionicons-prefix}volume-low:before { content: @ionicon-var-volume-low; } +.@{ionicons-prefix}volume-medium:before { content: @ionicon-var-volume-medium; } +.@{ionicons-prefix}volume-mute:before { content: @ionicon-var-volume-mute; } +.@{ionicons-prefix}wand:before { content: @ionicon-var-wand; } +.@{ionicons-prefix}waterdrop:before { content: @ionicon-var-waterdrop; } +.@{ionicons-prefix}wifi:before { content: @ionicon-var-wifi; } +.@{ionicons-prefix}wineglass:before { content: @ionicon-var-wineglass; } +.@{ionicons-prefix}woman:before { content: @ionicon-var-woman; } +.@{ionicons-prefix}wrench:before { content: @ionicon-var-wrench; } +.@{ionicons-prefix}xbox:before { content: @ionicon-var-xbox; } \ No newline at end of file diff --git a/assets/less/icons/ionicons/less/_ionicons-variables.less b/assets/less/icons/ionicons/less/_ionicons-variables.less new file mode 100644 index 0000000..576d146 --- /dev/null +++ b/assets/less/icons/ionicons/less/_ionicons-variables.less @@ -0,0 +1,615 @@ +/*! +Ionicons, v1.5.0 +Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ +https://twitter.com/benjsperry https://twitter.com/ionicframework +MIT License: https://github.com/driftyco/ionicons +*/ +// Ionicons Variables +// -------------------------- + +@ionicons-font-path: "../fonts"; +@ionicons-font-family: "Ionicons"; +@ionicons-version: "1.5.0"; +@ionicons-prefix: ion-; + +@ionicon-var-alert: "\f101"; +@ionicon-var-alert-circled: "\f100"; +@ionicon-var-android-add: "\f2c7"; +@ionicon-var-android-add-contact: "\f2c6"; +@ionicon-var-android-alarm: "\f2c8"; +@ionicon-var-android-archive: "\f2c9"; +@ionicon-var-android-arrow-back: "\f2ca"; +@ionicon-var-android-arrow-down-left: "\f2cb"; +@ionicon-var-android-arrow-down-right: "\f2cc"; +@ionicon-var-android-arrow-forward: "\f30f"; +@ionicon-var-android-arrow-up-left: "\f2cd"; +@ionicon-var-android-arrow-up-right: "\f2ce"; +@ionicon-var-android-battery: "\f2cf"; +@ionicon-var-android-book: "\f2d0"; +@ionicon-var-android-calendar: "\f2d1"; +@ionicon-var-android-call: "\f2d2"; +@ionicon-var-android-camera: "\f2d3"; +@ionicon-var-android-chat: "\f2d4"; +@ionicon-var-android-checkmark: "\f2d5"; +@ionicon-var-android-clock: "\f2d6"; +@ionicon-var-android-close: "\f2d7"; +@ionicon-var-android-contact: "\f2d8"; +@ionicon-var-android-contacts: "\f2d9"; +@ionicon-var-android-data: "\f2da"; +@ionicon-var-android-developer: "\f2db"; +@ionicon-var-android-display: "\f2dc"; +@ionicon-var-android-download: "\f2dd"; +@ionicon-var-android-drawer: "\f310"; +@ionicon-var-android-dropdown: "\f2de"; +@ionicon-var-android-earth: "\f2df"; +@ionicon-var-android-folder: "\f2e0"; +@ionicon-var-android-forums: "\f2e1"; +@ionicon-var-android-friends: "\f2e2"; +@ionicon-var-android-hand: "\f2e3"; +@ionicon-var-android-image: "\f2e4"; +@ionicon-var-android-inbox: "\f2e5"; +@ionicon-var-android-information: "\f2e6"; +@ionicon-var-android-keypad: "\f2e7"; +@ionicon-var-android-lightbulb: "\f2e8"; +@ionicon-var-android-locate: "\f2e9"; +@ionicon-var-android-location: "\f2ea"; +@ionicon-var-android-mail: "\f2eb"; +@ionicon-var-android-microphone: "\f2ec"; +@ionicon-var-android-mixer: "\f2ed"; +@ionicon-var-android-more: "\f2ee"; +@ionicon-var-android-note: "\f2ef"; +@ionicon-var-android-playstore: "\f2f0"; +@ionicon-var-android-printer: "\f2f1"; +@ionicon-var-android-promotion: "\f2f2"; +@ionicon-var-android-reminder: "\f2f3"; +@ionicon-var-android-remove: "\f2f4"; +@ionicon-var-android-search: "\f2f5"; +@ionicon-var-android-send: "\f2f6"; +@ionicon-var-android-settings: "\f2f7"; +@ionicon-var-android-share: "\f2f8"; +@ionicon-var-android-social: "\f2fa"; +@ionicon-var-android-social-user: "\f2f9"; +@ionicon-var-android-sort: "\f2fb"; +@ionicon-var-android-stair-drawer: "\f311"; +@ionicon-var-android-star: "\f2fc"; +@ionicon-var-android-stopwatch: "\f2fd"; +@ionicon-var-android-storage: "\f2fe"; +@ionicon-var-android-system-back: "\f2ff"; +@ionicon-var-android-system-home: "\f300"; +@ionicon-var-android-system-windows: "\f301"; +@ionicon-var-android-timer: "\f302"; +@ionicon-var-android-trash: "\f303"; +@ionicon-var-android-user-menu: "\f312"; +@ionicon-var-android-volume: "\f304"; +@ionicon-var-android-wifi: "\f305"; +@ionicon-var-aperture: "\f313"; +@ionicon-var-archive: "\f102"; +@ionicon-var-arrow-down-a: "\f103"; +@ionicon-var-arrow-down-b: "\f104"; +@ionicon-var-arrow-down-c: "\f105"; +@ionicon-var-arrow-expand: "\f25e"; +@ionicon-var-arrow-graph-down-left: "\f25f"; +@ionicon-var-arrow-graph-down-right: "\f260"; +@ionicon-var-arrow-graph-up-left: "\f261"; +@ionicon-var-arrow-graph-up-right: "\f262"; +@ionicon-var-arrow-left-a: "\f106"; +@ionicon-var-arrow-left-b: "\f107"; +@ionicon-var-arrow-left-c: "\f108"; +@ionicon-var-arrow-move: "\f263"; +@ionicon-var-arrow-resize: "\f264"; +@ionicon-var-arrow-return-left: "\f265"; +@ionicon-var-arrow-return-right: "\f266"; +@ionicon-var-arrow-right-a: "\f109"; +@ionicon-var-arrow-right-b: "\f10a"; +@ionicon-var-arrow-right-c: "\f10b"; +@ionicon-var-arrow-shrink: "\f267"; +@ionicon-var-arrow-swap: "\f268"; +@ionicon-var-arrow-up-a: "\f10c"; +@ionicon-var-arrow-up-b: "\f10d"; +@ionicon-var-arrow-up-c: "\f10e"; +@ionicon-var-asterisk: "\f314"; +@ionicon-var-at: "\f10f"; +@ionicon-var-bag: "\f110"; +@ionicon-var-battery-charging: "\f111"; +@ionicon-var-battery-empty: "\f112"; +@ionicon-var-battery-full: "\f113"; +@ionicon-var-battery-half: "\f114"; +@ionicon-var-battery-low: "\f115"; +@ionicon-var-beaker: "\f269"; +@ionicon-var-beer: "\f26a"; +@ionicon-var-bluetooth: "\f116"; +@ionicon-var-bonfire: "\f315"; +@ionicon-var-bookmark: "\f26b"; +@ionicon-var-briefcase: "\f26c"; +@ionicon-var-bug: "\f2be"; +@ionicon-var-calculator: "\f26d"; +@ionicon-var-calendar: "\f117"; +@ionicon-var-camera: "\f118"; +@ionicon-var-card: "\f119"; +@ionicon-var-cash: "\f316"; +@ionicon-var-chatbox: "\f11b"; +@ionicon-var-chatbox-working: "\f11a"; +@ionicon-var-chatboxes: "\f11c"; +@ionicon-var-chatbubble: "\f11e"; +@ionicon-var-chatbubble-working: "\f11d"; +@ionicon-var-chatbubbles: "\f11f"; +@ionicon-var-checkmark: "\f122"; +@ionicon-var-checkmark-circled: "\f120"; +@ionicon-var-checkmark-round: "\f121"; +@ionicon-var-chevron-down: "\f123"; +@ionicon-var-chevron-left: "\f124"; +@ionicon-var-chevron-right: "\f125"; +@ionicon-var-chevron-up: "\f126"; +@ionicon-var-clipboard: "\f127"; +@ionicon-var-clock: "\f26e"; +@ionicon-var-close: "\f12a"; +@ionicon-var-close-circled: "\f128"; +@ionicon-var-close-round: "\f129"; +@ionicon-var-closed-captioning: "\f317"; +@ionicon-var-cloud: "\f12b"; +@ionicon-var-code: "\f271"; +@ionicon-var-code-download: "\f26f"; +@ionicon-var-code-working: "\f270"; +@ionicon-var-coffee: "\f272"; +@ionicon-var-compass: "\f273"; +@ionicon-var-compose: "\f12c"; +@ionicon-var-connection-bars: "\f274"; +@ionicon-var-contrast: "\f275"; +@ionicon-var-cube: "\f318"; +@ionicon-var-disc: "\f12d"; +@ionicon-var-document: "\f12f"; +@ionicon-var-document-text: "\f12e"; +@ionicon-var-drag: "\f130"; +@ionicon-var-earth: "\f276"; +@ionicon-var-edit: "\f2bf"; +@ionicon-var-egg: "\f277"; +@ionicon-var-eject: "\f131"; +@ionicon-var-email: "\f132"; +@ionicon-var-eye: "\f133"; +@ionicon-var-eye-disabled: "\f306"; +@ionicon-var-female: "\f278"; +@ionicon-var-filing: "\f134"; +@ionicon-var-film-marker: "\f135"; +@ionicon-var-fireball: "\f319"; +@ionicon-var-flag: "\f279"; +@ionicon-var-flame: "\f31a"; +@ionicon-var-flash: "\f137"; +@ionicon-var-flash-off: "\f136"; +@ionicon-var-flask: "\f138"; +@ionicon-var-folder: "\f139"; +@ionicon-var-fork: "\f27a"; +@ionicon-var-fork-repo: "\f2c0"; +@ionicon-var-forward: "\f13a"; +@ionicon-var-funnel: "\f31b"; +@ionicon-var-game-controller-a: "\f13b"; +@ionicon-var-game-controller-b: "\f13c"; +@ionicon-var-gear-a: "\f13d"; +@ionicon-var-gear-b: "\f13e"; +@ionicon-var-grid: "\f13f"; +@ionicon-var-hammer: "\f27b"; +@ionicon-var-happy: "\f31c"; +@ionicon-var-headphone: "\f140"; +@ionicon-var-heart: "\f141"; +@ionicon-var-heart-broken: "\f31d"; +@ionicon-var-help: "\f143"; +@ionicon-var-help-buoy: "\f27c"; +@ionicon-var-help-circled: "\f142"; +@ionicon-var-home: "\f144"; +@ionicon-var-icecream: "\f27d"; +@ionicon-var-icon-social-google-plus: "\f146"; +@ionicon-var-icon-social-google-plus-outline: "\f145"; +@ionicon-var-image: "\f147"; +@ionicon-var-images: "\f148"; +@ionicon-var-information: "\f14a"; +@ionicon-var-information-circled: "\f149"; +@ionicon-var-ionic: "\f14b"; +@ionicon-var-ios7-alarm: "\f14d"; +@ionicon-var-ios7-alarm-outline: "\f14c"; +@ionicon-var-ios7-albums: "\f14f"; +@ionicon-var-ios7-albums-outline: "\f14e"; +@ionicon-var-ios7-americanfootball: "\f31f"; +@ionicon-var-ios7-americanfootball-outline: "\f31e"; +@ionicon-var-ios7-analytics: "\f321"; +@ionicon-var-ios7-analytics-outline: "\f320"; +@ionicon-var-ios7-arrow-back: "\f150"; +@ionicon-var-ios7-arrow-down: "\f151"; +@ionicon-var-ios7-arrow-forward: "\f152"; +@ionicon-var-ios7-arrow-left: "\f153"; +@ionicon-var-ios7-arrow-right: "\f154"; +@ionicon-var-ios7-arrow-thin-down: "\f27e"; +@ionicon-var-ios7-arrow-thin-left: "\f27f"; +@ionicon-var-ios7-arrow-thin-right: "\f280"; +@ionicon-var-ios7-arrow-thin-up: "\f281"; +@ionicon-var-ios7-arrow-up: "\f155"; +@ionicon-var-ios7-at: "\f157"; +@ionicon-var-ios7-at-outline: "\f156"; +@ionicon-var-ios7-barcode: "\f323"; +@ionicon-var-ios7-barcode-outline: "\f322"; +@ionicon-var-ios7-baseball: "\f325"; +@ionicon-var-ios7-baseball-outline: "\f324"; +@ionicon-var-ios7-basketball: "\f327"; +@ionicon-var-ios7-basketball-outline: "\f326"; +@ionicon-var-ios7-bell: "\f159"; +@ionicon-var-ios7-bell-outline: "\f158"; +@ionicon-var-ios7-bolt: "\f15b"; +@ionicon-var-ios7-bolt-outline: "\f15a"; +@ionicon-var-ios7-bookmarks: "\f15d"; +@ionicon-var-ios7-bookmarks-outline: "\f15c"; +@ionicon-var-ios7-box: "\f15f"; +@ionicon-var-ios7-box-outline: "\f15e"; +@ionicon-var-ios7-briefcase: "\f283"; +@ionicon-var-ios7-briefcase-outline: "\f282"; +@ionicon-var-ios7-browsers: "\f161"; +@ionicon-var-ios7-browsers-outline: "\f160"; +@ionicon-var-ios7-calculator: "\f285"; +@ionicon-var-ios7-calculator-outline: "\f284"; +@ionicon-var-ios7-calendar: "\f163"; +@ionicon-var-ios7-calendar-outline: "\f162"; +@ionicon-var-ios7-camera: "\f165"; +@ionicon-var-ios7-camera-outline: "\f164"; +@ionicon-var-ios7-cart: "\f167"; +@ionicon-var-ios7-cart-outline: "\f166"; +@ionicon-var-ios7-chatboxes: "\f169"; +@ionicon-var-ios7-chatboxes-outline: "\f168"; +@ionicon-var-ios7-chatbubble: "\f16b"; +@ionicon-var-ios7-chatbubble-outline: "\f16a"; +@ionicon-var-ios7-checkmark: "\f16e"; +@ionicon-var-ios7-checkmark-empty: "\f16c"; +@ionicon-var-ios7-checkmark-outline: "\f16d"; +@ionicon-var-ios7-circle-filled: "\f16f"; +@ionicon-var-ios7-circle-outline: "\f170"; +@ionicon-var-ios7-clock: "\f172"; +@ionicon-var-ios7-clock-outline: "\f171"; +@ionicon-var-ios7-close: "\f2bc"; +@ionicon-var-ios7-close-empty: "\f2bd"; +@ionicon-var-ios7-close-outline: "\f2bb"; +@ionicon-var-ios7-cloud: "\f178"; +@ionicon-var-ios7-cloud-download: "\f174"; +@ionicon-var-ios7-cloud-download-outline: "\f173"; +@ionicon-var-ios7-cloud-outline: "\f175"; +@ionicon-var-ios7-cloud-upload: "\f177"; +@ionicon-var-ios7-cloud-upload-outline: "\f176"; +@ionicon-var-ios7-cloudy: "\f17a"; +@ionicon-var-ios7-cloudy-night: "\f308"; +@ionicon-var-ios7-cloudy-night-outline: "\f307"; +@ionicon-var-ios7-cloudy-outline: "\f179"; +@ionicon-var-ios7-cog: "\f17c"; +@ionicon-var-ios7-cog-outline: "\f17b"; +@ionicon-var-ios7-compose: "\f17e"; +@ionicon-var-ios7-compose-outline: "\f17d"; +@ionicon-var-ios7-contact: "\f180"; +@ionicon-var-ios7-contact-outline: "\f17f"; +@ionicon-var-ios7-copy: "\f182"; +@ionicon-var-ios7-copy-outline: "\f181"; +@ionicon-var-ios7-download: "\f184"; +@ionicon-var-ios7-download-outline: "\f183"; +@ionicon-var-ios7-drag: "\f185"; +@ionicon-var-ios7-email: "\f187"; +@ionicon-var-ios7-email-outline: "\f186"; +@ionicon-var-ios7-expand: "\f30d"; +@ionicon-var-ios7-eye: "\f189"; +@ionicon-var-ios7-eye-outline: "\f188"; +@ionicon-var-ios7-fastforward: "\f18b"; +@ionicon-var-ios7-fastforward-outline: "\f18a"; +@ionicon-var-ios7-filing: "\f18d"; +@ionicon-var-ios7-filing-outline: "\f18c"; +@ionicon-var-ios7-film: "\f18f"; +@ionicon-var-ios7-film-outline: "\f18e"; +@ionicon-var-ios7-flag: "\f191"; +@ionicon-var-ios7-flag-outline: "\f190"; +@ionicon-var-ios7-folder: "\f193"; +@ionicon-var-ios7-folder-outline: "\f192"; +@ionicon-var-ios7-football: "\f329"; +@ionicon-var-ios7-football-outline: "\f328"; +@ionicon-var-ios7-gear: "\f195"; +@ionicon-var-ios7-gear-outline: "\f194"; +@ionicon-var-ios7-glasses: "\f197"; +@ionicon-var-ios7-glasses-outline: "\f196"; +@ionicon-var-ios7-heart: "\f199"; +@ionicon-var-ios7-heart-outline: "\f198"; +@ionicon-var-ios7-help: "\f19c"; +@ionicon-var-ios7-help-empty: "\f19a"; +@ionicon-var-ios7-help-outline: "\f19b"; +@ionicon-var-ios7-home: "\f32b"; +@ionicon-var-ios7-home-outline: "\f32a"; +@ionicon-var-ios7-infinite: "\f19e"; +@ionicon-var-ios7-infinite-outline: "\f19d"; +@ionicon-var-ios7-information: "\f1a1"; +@ionicon-var-ios7-information-empty: "\f19f"; +@ionicon-var-ios7-information-outline: "\f1a0"; +@ionicon-var-ios7-ionic-outline: "\f1a2"; +@ionicon-var-ios7-keypad: "\f1a4"; +@ionicon-var-ios7-keypad-outline: "\f1a3"; +@ionicon-var-ios7-lightbulb: "\f287"; +@ionicon-var-ios7-lightbulb-outline: "\f286"; +@ionicon-var-ios7-location: "\f1a6"; +@ionicon-var-ios7-location-outline: "\f1a5"; +@ionicon-var-ios7-locked: "\f1a8"; +@ionicon-var-ios7-locked-outline: "\f1a7"; +@ionicon-var-ios7-loop: "\f32d"; +@ionicon-var-ios7-loop-strong: "\f32c"; +@ionicon-var-ios7-medkit: "\f289"; +@ionicon-var-ios7-medkit-outline: "\f288"; +@ionicon-var-ios7-mic: "\f1ab"; +@ionicon-var-ios7-mic-off: "\f1a9"; +@ionicon-var-ios7-mic-outline: "\f1aa"; +@ionicon-var-ios7-minus: "\f1ae"; +@ionicon-var-ios7-minus-empty: "\f1ac"; +@ionicon-var-ios7-minus-outline: "\f1ad"; +@ionicon-var-ios7-monitor: "\f1b0"; +@ionicon-var-ios7-monitor-outline: "\f1af"; +@ionicon-var-ios7-moon: "\f1b2"; +@ionicon-var-ios7-moon-outline: "\f1b1"; +@ionicon-var-ios7-more: "\f1b4"; +@ionicon-var-ios7-more-outline: "\f1b3"; +@ionicon-var-ios7-musical-note: "\f1b5"; +@ionicon-var-ios7-musical-notes: "\f1b6"; +@ionicon-var-ios7-navigate: "\f1b8"; +@ionicon-var-ios7-navigate-outline: "\f1b7"; +@ionicon-var-ios7-paper: "\f32f"; +@ionicon-var-ios7-paper-outline: "\f32e"; +@ionicon-var-ios7-paperplane: "\f1ba"; +@ionicon-var-ios7-paperplane-outline: "\f1b9"; +@ionicon-var-ios7-partlysunny: "\f1bc"; +@ionicon-var-ios7-partlysunny-outline: "\f1bb"; +@ionicon-var-ios7-pause: "\f1be"; +@ionicon-var-ios7-pause-outline: "\f1bd"; +@ionicon-var-ios7-paw: "\f331"; +@ionicon-var-ios7-paw-outline: "\f330"; +@ionicon-var-ios7-people: "\f1c0"; +@ionicon-var-ios7-people-outline: "\f1bf"; +@ionicon-var-ios7-person: "\f1c2"; +@ionicon-var-ios7-person-outline: "\f1c1"; +@ionicon-var-ios7-personadd: "\f1c4"; +@ionicon-var-ios7-personadd-outline: "\f1c3"; +@ionicon-var-ios7-photos: "\f1c6"; +@ionicon-var-ios7-photos-outline: "\f1c5"; +@ionicon-var-ios7-pie: "\f28b"; +@ionicon-var-ios7-pie-outline: "\f28a"; +@ionicon-var-ios7-play: "\f1c8"; +@ionicon-var-ios7-play-outline: "\f1c7"; +@ionicon-var-ios7-plus: "\f1cb"; +@ionicon-var-ios7-plus-empty: "\f1c9"; +@ionicon-var-ios7-plus-outline: "\f1ca"; +@ionicon-var-ios7-pricetag: "\f28d"; +@ionicon-var-ios7-pricetag-outline: "\f28c"; +@ionicon-var-ios7-pricetags: "\f333"; +@ionicon-var-ios7-pricetags-outline: "\f332"; +@ionicon-var-ios7-printer: "\f1cd"; +@ionicon-var-ios7-printer-outline: "\f1cc"; +@ionicon-var-ios7-pulse: "\f335"; +@ionicon-var-ios7-pulse-strong: "\f334"; +@ionicon-var-ios7-rainy: "\f1cf"; +@ionicon-var-ios7-rainy-outline: "\f1ce"; +@ionicon-var-ios7-recording: "\f1d1"; +@ionicon-var-ios7-recording-outline: "\f1d0"; +@ionicon-var-ios7-redo: "\f1d3"; +@ionicon-var-ios7-redo-outline: "\f1d2"; +@ionicon-var-ios7-refresh: "\f1d6"; +@ionicon-var-ios7-refresh-empty: "\f1d4"; +@ionicon-var-ios7-refresh-outline: "\f1d5"; +@ionicon-var-ios7-reload: "\f28e"; +@ionicon-var-ios7-reverse-camera: "\f337"; +@ionicon-var-ios7-reverse-camera-outline: "\f336"; +@ionicon-var-ios7-rewind: "\f1d8"; +@ionicon-var-ios7-rewind-outline: "\f1d7"; +@ionicon-var-ios7-search: "\f1da"; +@ionicon-var-ios7-search-strong: "\f1d9"; +@ionicon-var-ios7-settings: "\f339"; +@ionicon-var-ios7-settings-strong: "\f338"; +@ionicon-var-ios7-shrink: "\f30e"; +@ionicon-var-ios7-skipbackward: "\f1dc"; +@ionicon-var-ios7-skipbackward-outline: "\f1db"; +@ionicon-var-ios7-skipforward: "\f1de"; +@ionicon-var-ios7-skipforward-outline: "\f1dd"; +@ionicon-var-ios7-snowy: "\f309"; +@ionicon-var-ios7-speedometer: "\f290"; +@ionicon-var-ios7-speedometer-outline: "\f28f"; +@ionicon-var-ios7-star: "\f1e0"; +@ionicon-var-ios7-star-half: "\f33a"; +@ionicon-var-ios7-star-outline: "\f1df"; +@ionicon-var-ios7-stopwatch: "\f1e2"; +@ionicon-var-ios7-stopwatch-outline: "\f1e1"; +@ionicon-var-ios7-sunny: "\f1e4"; +@ionicon-var-ios7-sunny-outline: "\f1e3"; +@ionicon-var-ios7-telephone: "\f1e6"; +@ionicon-var-ios7-telephone-outline: "\f1e5"; +@ionicon-var-ios7-tennisball: "\f33c"; +@ionicon-var-ios7-tennisball-outline: "\f33b"; +@ionicon-var-ios7-thunderstorm: "\f1e8"; +@ionicon-var-ios7-thunderstorm-outline: "\f1e7"; +@ionicon-var-ios7-time: "\f292"; +@ionicon-var-ios7-time-outline: "\f291"; +@ionicon-var-ios7-timer: "\f1ea"; +@ionicon-var-ios7-timer-outline: "\f1e9"; +@ionicon-var-ios7-toggle: "\f33e"; +@ionicon-var-ios7-toggle-outline: "\f33d"; +@ionicon-var-ios7-trash: "\f1ec"; +@ionicon-var-ios7-trash-outline: "\f1eb"; +@ionicon-var-ios7-undo: "\f1ee"; +@ionicon-var-ios7-undo-outline: "\f1ed"; +@ionicon-var-ios7-unlocked: "\f1f0"; +@ionicon-var-ios7-unlocked-outline: "\f1ef"; +@ionicon-var-ios7-upload: "\f1f2"; +@ionicon-var-ios7-upload-outline: "\f1f1"; +@ionicon-var-ios7-videocam: "\f1f4"; +@ionicon-var-ios7-videocam-outline: "\f1f3"; +@ionicon-var-ios7-volume-high: "\f1f5"; +@ionicon-var-ios7-volume-low: "\f1f6"; +@ionicon-var-ios7-wineglass: "\f294"; +@ionicon-var-ios7-wineglass-outline: "\f293"; +@ionicon-var-ios7-world: "\f1f8"; +@ionicon-var-ios7-world-outline: "\f1f7"; +@ionicon-var-ipad: "\f1f9"; +@ionicon-var-iphone: "\f1fa"; +@ionicon-var-ipod: "\f1fb"; +@ionicon-var-jet: "\f295"; +@ionicon-var-key: "\f296"; +@ionicon-var-knife: "\f297"; +@ionicon-var-laptop: "\f1fc"; +@ionicon-var-leaf: "\f1fd"; +@ionicon-var-levels: "\f298"; +@ionicon-var-lightbulb: "\f299"; +@ionicon-var-link: "\f1fe"; +@ionicon-var-load-a: "\f29a"; +@ionicon-var-load-b: "\f29b"; +@ionicon-var-load-c: "\f29c"; +@ionicon-var-load-d: "\f29d"; +@ionicon-var-location: "\f1ff"; +@ionicon-var-locked: "\f200"; +@ionicon-var-log-in: "\f29e"; +@ionicon-var-log-out: "\f29f"; +@ionicon-var-loop: "\f201"; +@ionicon-var-magnet: "\f2a0"; +@ionicon-var-male: "\f2a1"; +@ionicon-var-man: "\f202"; +@ionicon-var-map: "\f203"; +@ionicon-var-medkit: "\f2a2"; +@ionicon-var-merge: "\f33f"; +@ionicon-var-mic-a: "\f204"; +@ionicon-var-mic-b: "\f205"; +@ionicon-var-mic-c: "\f206"; +@ionicon-var-minus: "\f209"; +@ionicon-var-minus-circled: "\f207"; +@ionicon-var-minus-round: "\f208"; +@ionicon-var-model-s: "\f2c1"; +@ionicon-var-monitor: "\f20a"; +@ionicon-var-more: "\f20b"; +@ionicon-var-mouse: "\f340"; +@ionicon-var-music-note: "\f20c"; +@ionicon-var-navicon: "\f20e"; +@ionicon-var-navicon-round: "\f20d"; +@ionicon-var-navigate: "\f2a3"; +@ionicon-var-network: "\f341"; +@ionicon-var-no-smoking: "\f2c2"; +@ionicon-var-nuclear: "\f2a4"; +@ionicon-var-outlet: "\f342"; +@ionicon-var-paper-airplane: "\f2c3"; +@ionicon-var-paperclip: "\f20f"; +@ionicon-var-pause: "\f210"; +@ionicon-var-person: "\f213"; +@ionicon-var-person-add: "\f211"; +@ionicon-var-person-stalker: "\f212"; +@ionicon-var-pie-graph: "\f2a5"; +@ionicon-var-pin: "\f2a6"; +@ionicon-var-pinpoint: "\f2a7"; +@ionicon-var-pizza: "\f2a8"; +@ionicon-var-plane: "\f214"; +@ionicon-var-planet: "\f343"; +@ionicon-var-play: "\f215"; +@ionicon-var-playstation: "\f30a"; +@ionicon-var-plus: "\f218"; +@ionicon-var-plus-circled: "\f216"; +@ionicon-var-plus-round: "\f217"; +@ionicon-var-podium: "\f344"; +@ionicon-var-pound: "\f219"; +@ionicon-var-power: "\f2a9"; +@ionicon-var-pricetag: "\f2aa"; +@ionicon-var-pricetags: "\f2ab"; +@ionicon-var-printer: "\f21a"; +@ionicon-var-pull-request: "\f345"; +@ionicon-var-qr-scanner: "\f346"; +@ionicon-var-quote: "\f347"; +@ionicon-var-radio-waves: "\f2ac"; +@ionicon-var-record: "\f21b"; +@ionicon-var-refresh: "\f21c"; +@ionicon-var-reply: "\f21e"; +@ionicon-var-reply-all: "\f21d"; +@ionicon-var-ribbon-a: "\f348"; +@ionicon-var-ribbon-b: "\f349"; +@ionicon-var-sad: "\f34a"; +@ionicon-var-scissors: "\f34b"; +@ionicon-var-search: "\f21f"; +@ionicon-var-settings: "\f2ad"; +@ionicon-var-share: "\f220"; +@ionicon-var-shuffle: "\f221"; +@ionicon-var-skip-backward: "\f222"; +@ionicon-var-skip-forward: "\f223"; +@ionicon-var-social-android: "\f225"; +@ionicon-var-social-android-outline: "\f224"; +@ionicon-var-social-apple: "\f227"; +@ionicon-var-social-apple-outline: "\f226"; +@ionicon-var-social-bitcoin: "\f2af"; +@ionicon-var-social-bitcoin-outline: "\f2ae"; +@ionicon-var-social-buffer: "\f229"; +@ionicon-var-social-buffer-outline: "\f228"; +@ionicon-var-social-designernews: "\f22b"; +@ionicon-var-social-designernews-outline: "\f22a"; +@ionicon-var-social-dribbble: "\f22d"; +@ionicon-var-social-dribbble-outline: "\f22c"; +@ionicon-var-social-dropbox: "\f22f"; +@ionicon-var-social-dropbox-outline: "\f22e"; +@ionicon-var-social-facebook: "\f231"; +@ionicon-var-social-facebook-outline: "\f230"; +@ionicon-var-social-foursquare: "\f34d"; +@ionicon-var-social-foursquare-outline: "\f34c"; +@ionicon-var-social-freebsd-devil: "\f2c4"; +@ionicon-var-social-github: "\f233"; +@ionicon-var-social-github-outline: "\f232"; +@ionicon-var-social-google: "\f34f"; +@ionicon-var-social-google-outline: "\f34e"; +@ionicon-var-social-googleplus: "\f235"; +@ionicon-var-social-googleplus-outline: "\f234"; +@ionicon-var-social-hackernews: "\f237"; +@ionicon-var-social-hackernews-outline: "\f236"; +@ionicon-var-social-instagram: "\f351"; +@ionicon-var-social-instagram-outline: "\f350"; +@ionicon-var-social-linkedin: "\f239"; +@ionicon-var-social-linkedin-outline: "\f238"; +@ionicon-var-social-pinterest: "\f2b1"; +@ionicon-var-social-pinterest-outline: "\f2b0"; +@ionicon-var-social-reddit: "\f23b"; +@ionicon-var-social-reddit-outline: "\f23a"; +@ionicon-var-social-rss: "\f23d"; +@ionicon-var-social-rss-outline: "\f23c"; +@ionicon-var-social-skype: "\f23f"; +@ionicon-var-social-skype-outline: "\f23e"; +@ionicon-var-social-tumblr: "\f241"; +@ionicon-var-social-tumblr-outline: "\f240"; +@ionicon-var-social-tux: "\f2c5"; +@ionicon-var-social-twitter: "\f243"; +@ionicon-var-social-twitter-outline: "\f242"; +@ionicon-var-social-usd: "\f353"; +@ionicon-var-social-usd-outline: "\f352"; +@ionicon-var-social-vimeo: "\f245"; +@ionicon-var-social-vimeo-outline: "\f244"; +@ionicon-var-social-windows: "\f247"; +@ionicon-var-social-windows-outline: "\f246"; +@ionicon-var-social-wordpress: "\f249"; +@ionicon-var-social-wordpress-outline: "\f248"; +@ionicon-var-social-yahoo: "\f24b"; +@ionicon-var-social-yahoo-outline: "\f24a"; +@ionicon-var-social-youtube: "\f24d"; +@ionicon-var-social-youtube-outline: "\f24c"; +@ionicon-var-speakerphone: "\f2b2"; +@ionicon-var-speedometer: "\f2b3"; +@ionicon-var-spoon: "\f2b4"; +@ionicon-var-star: "\f24e"; +@ionicon-var-stats-bars: "\f2b5"; +@ionicon-var-steam: "\f30b"; +@ionicon-var-stop: "\f24f"; +@ionicon-var-thermometer: "\f2b6"; +@ionicon-var-thumbsdown: "\f250"; +@ionicon-var-thumbsup: "\f251"; +@ionicon-var-toggle: "\f355"; +@ionicon-var-toggle-filled: "\f354"; +@ionicon-var-trash-a: "\f252"; +@ionicon-var-trash-b: "\f253"; +@ionicon-var-trophy: "\f356"; +@ionicon-var-umbrella: "\f2b7"; +@ionicon-var-university: "\f357"; +@ionicon-var-unlocked: "\f254"; +@ionicon-var-upload: "\f255"; +@ionicon-var-usb: "\f2b8"; +@ionicon-var-videocamera: "\f256"; +@ionicon-var-volume-high: "\f257"; +@ionicon-var-volume-low: "\f258"; +@ionicon-var-volume-medium: "\f259"; +@ionicon-var-volume-mute: "\f25a"; +@ionicon-var-wand: "\f358"; +@ionicon-var-waterdrop: "\f25b"; +@ionicon-var-wifi: "\f25c"; +@ionicon-var-wineglass: "\f2b9"; +@ionicon-var-woman: "\f25d"; +@ionicon-var-wrench: "\f2ba"; +@ionicon-var-xbox: "\f30c"; \ No newline at end of file diff --git a/assets/less/icons/ionicons/less/ionicons.less b/assets/less/icons/ionicons/less/ionicons.less new file mode 100644 index 0000000..da7fa2b --- /dev/null +++ b/assets/less/icons/ionicons/less/ionicons.less @@ -0,0 +1,4 @@ +@import "_ionicons-variables"; +@import "_ionicons-font"; +@import "_ionicons-animation"; +@import "_ionicons-icons"; \ No newline at end of file diff --git a/assets/less/icons/material-design/css/materialdesignicons.css b/assets/less/icons/material-design/css/materialdesignicons.css new file mode 100644 index 0000000..79b8bd6 --- /dev/null +++ b/assets/less/icons/material-design/css/materialdesignicons.css @@ -0,0 +1,6707 @@ +/* MaterialDesignIcons.com */ +@font-face { + font-family: "Material Design Icons"; + src: url("../fonts/materialdesignicons-webfont.eot?v=1.6.50"); + src: url("../fonts/materialdesignicons-webfont.eot?#iefix&v=1.6.50") format("embedded-opentype"), url("../fonts/materialdesignicons-webfont.woff2?v=1.6.50") format("woff2"), url("../fonts/materialdesignicons-webfont.woff?v=1.6.50") format("woff"), url("../fonts/materialdesignicons-webfont.ttf?v=1.6.50") format("truetype"), url("../fonts/materialdesignicons-webfont.svg?v=1.6.50#materialdesigniconsregular") format("svg"); + font-weight: normal; + font-style: normal; +} +.mdi { + display: inline-block; + font: normal normal normal 24px/1 "Material Design Icons"; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} + +.mdi-access-point:before { + content: "\F002"; +} + +.mdi-access-point-network:before { + content: "\F003"; +} + +.mdi-account:before { + content: "\F004"; +} + +.mdi-account-alert:before { + content: "\F005"; +} + +.mdi-account-box:before { + content: "\F006"; +} + +.mdi-account-box-outline:before { + content: "\F007"; +} + +.mdi-account-card-details:before { + content: "\F5D2"; +} + +.mdi-account-check:before { + content: "\F008"; +} + +.mdi-account-circle:before { + content: "\F009"; +} + +.mdi-account-convert:before { + content: "\F00A"; +} + +.mdi-account-key:before { + content: "\F00B"; +} + +.mdi-account-location:before { + content: "\F00C"; +} + +.mdi-account-minus:before { + content: "\F00D"; +} + +.mdi-account-multiple:before { + content: "\F00E"; +} + +.mdi-account-multiple-minus:before { + content: "\F5D3"; +} + +.mdi-account-multiple-outline:before { + content: "\F00F"; +} + +.mdi-account-multiple-plus:before { + content: "\F010"; +} + +.mdi-account-network:before { + content: "\F011"; +} + +.mdi-account-off:before { + content: "\F012"; +} + +.mdi-account-outline:before { + content: "\F013"; +} + +.mdi-account-plus:before { + content: "\F014"; +} + +.mdi-account-remove:before { + content: "\F015"; +} + +.mdi-account-search:before { + content: "\F016"; +} + +.mdi-account-settings:before { + content: "\F630"; +} + +.mdi-account-settings-variant:before { + content: "\F631"; +} + +.mdi-account-star:before { + content: "\F017"; +} + +.mdi-account-star-variant:before { + content: "\F018"; +} + +.mdi-account-switch:before { + content: "\F019"; +} + +.mdi-adjust:before { + content: "\F01A"; +} + +.mdi-air-conditioner:before { + content: "\F01B"; +} + +.mdi-airballoon:before { + content: "\F01C"; +} + +.mdi-airplane:before { + content: "\F01D"; +} + +.mdi-airplane-landing:before { + content: "\F5D4"; +} + +.mdi-airplane-off:before { + content: "\F01E"; +} + +.mdi-airplane-takeoff:before { + content: "\F5D5"; +} + +.mdi-airplay:before { + content: "\F01F"; +} + +.mdi-alarm:before { + content: "\F020"; +} + +.mdi-alarm-check:before { + content: "\F021"; +} + +.mdi-alarm-multiple:before { + content: "\F022"; +} + +.mdi-alarm-off:before { + content: "\F023"; +} + +.mdi-alarm-plus:before { + content: "\F024"; +} + +.mdi-album:before { + content: "\F025"; +} + +.mdi-alert:before { + content: "\F026"; +} + +.mdi-alert-box:before { + content: "\F027"; +} + +.mdi-alert-circle:before { + content: "\F028"; +} + +.mdi-alert-circle-outline:before { + content: "\F5D6"; +} + +.mdi-alert-octagon:before { + content: "\F029"; +} + +.mdi-alert-outline:before { + content: "\F02A"; +} + +.mdi-alpha:before { + content: "\F02B"; +} + +.mdi-alphabetical:before { + content: "\F02C"; +} + +.mdi-altimeter:before { + content: "\F5D7"; +} + +.mdi-amazon:before { + content: "\F02D"; +} + +.mdi-amazon-clouddrive:before { + content: "\F02E"; +} + +.mdi-ambulance:before { + content: "\F02F"; +} + +.mdi-amplifier:before { + content: "\F030"; +} + +.mdi-anchor:before { + content: "\F031"; +} + +.mdi-android:before { + content: "\F032"; +} + +.mdi-android-debug-bridge:before { + content: "\F033"; +} + +.mdi-android-studio:before { + content: "\F034"; +} + +.mdi-animation:before { + content: "\F5D8"; +} + +.mdi-apple:before { + content: "\F035"; +} + +.mdi-apple-finder:before { + content: "\F036"; +} + +.mdi-apple-ios:before { + content: "\F037"; +} + +.mdi-apple-keyboard-caps:before { + content: "\F632"; +} + +.mdi-apple-keyboard-command:before { + content: "\F633"; +} + +.mdi-apple-keyboard-control:before { + content: "\F634"; +} + +.mdi-apple-keyboard-option:before { + content: "\F635"; +} + +.mdi-apple-keyboard-shift:before { + content: "\F636"; +} + +.mdi-apple-mobileme:before { + content: "\F038"; +} + +.mdi-apple-safari:before { + content: "\F039"; +} + +.mdi-application:before { + content: "\F614"; +} + +.mdi-appnet:before { + content: "\F03A"; +} + +.mdi-apps:before { + content: "\F03B"; +} + +.mdi-archive:before { + content: "\F03C"; +} + +.mdi-arrange-bring-forward:before { + content: "\F03D"; +} + +.mdi-arrange-bring-to-front:before { + content: "\F03E"; +} + +.mdi-arrange-send-backward:before { + content: "\F03F"; +} + +.mdi-arrange-send-to-back:before { + content: "\F040"; +} + +.mdi-arrow-all:before { + content: "\F041"; +} + +.mdi-arrow-bottom-left:before { + content: "\F042"; +} + +.mdi-arrow-bottom-right:before { + content: "\F043"; +} + +.mdi-arrow-compress:before { + content: "\F615"; +} + +.mdi-arrow-compress-all:before { + content: "\F044"; +} + +.mdi-arrow-down:before { + content: "\F045"; +} + +.mdi-arrow-down-bold:before { + content: "\F046"; +} + +.mdi-arrow-down-bold-circle:before { + content: "\F047"; +} + +.mdi-arrow-down-bold-circle-outline:before { + content: "\F048"; +} + +.mdi-arrow-down-bold-hexagon-outline:before { + content: "\F049"; +} + +.mdi-arrow-down-drop-circle:before { + content: "\F04A"; +} + +.mdi-arrow-down-drop-circle-outline:before { + content: "\F04B"; +} + +.mdi-arrow-expand:before { + content: "\F616"; +} + +.mdi-arrow-expand-all:before { + content: "\F04C"; +} + +.mdi-arrow-left:before { + content: "\F04D"; +} + +.mdi-arrow-left-bold:before { + content: "\F04E"; +} + +.mdi-arrow-left-bold-circle:before { + content: "\F04F"; +} + +.mdi-arrow-left-bold-circle-outline:before { + content: "\F050"; +} + +.mdi-arrow-left-bold-hexagon-outline:before { + content: "\F051"; +} + +.mdi-arrow-left-drop-circle:before { + content: "\F052"; +} + +.mdi-arrow-left-drop-circle-outline:before { + content: "\F053"; +} + +.mdi-arrow-right:before { + content: "\F054"; +} + +.mdi-arrow-right-bold:before { + content: "\F055"; +} + +.mdi-arrow-right-bold-circle:before { + content: "\F056"; +} + +.mdi-arrow-right-bold-circle-outline:before { + content: "\F057"; +} + +.mdi-arrow-right-bold-hexagon-outline:before { + content: "\F058"; +} + +.mdi-arrow-right-drop-circle:before { + content: "\F059"; +} + +.mdi-arrow-right-drop-circle-outline:before { + content: "\F05A"; +} + +.mdi-arrow-top-left:before { + content: "\F05B"; +} + +.mdi-arrow-top-right:before { + content: "\F05C"; +} + +.mdi-arrow-up:before { + content: "\F05D"; +} + +.mdi-arrow-up-bold:before { + content: "\F05E"; +} + +.mdi-arrow-up-bold-circle:before { + content: "\F05F"; +} + +.mdi-arrow-up-bold-circle-outline:before { + content: "\F060"; +} + +.mdi-arrow-up-bold-hexagon-outline:before { + content: "\F061"; +} + +.mdi-arrow-up-drop-circle:before { + content: "\F062"; +} + +.mdi-arrow-up-drop-circle-outline:before { + content: "\F063"; +} + +.mdi-assistant:before { + content: "\F064"; +} + +.mdi-at:before { + content: "\F065"; +} + +.mdi-attachment:before { + content: "\F066"; +} + +.mdi-audiobook:before { + content: "\F067"; +} + +.mdi-auto-fix:before { + content: "\F068"; +} + +.mdi-auto-upload:before { + content: "\F069"; +} + +.mdi-autorenew:before { + content: "\F06A"; +} + +.mdi-av-timer:before { + content: "\F06B"; +} + +.mdi-baby:before { + content: "\F06C"; +} + +.mdi-backburger:before { + content: "\F06D"; +} + +.mdi-backspace:before { + content: "\F06E"; +} + +.mdi-backup-restore:before { + content: "\F06F"; +} + +.mdi-bank:before { + content: "\F070"; +} + +.mdi-barcode:before { + content: "\F071"; +} + +.mdi-barcode-scan:before { + content: "\F072"; +} + +.mdi-barley:before { + content: "\F073"; +} + +.mdi-barrel:before { + content: "\F074"; +} + +.mdi-basecamp:before { + content: "\F075"; +} + +.mdi-basket:before { + content: "\F076"; +} + +.mdi-basket-fill:before { + content: "\F077"; +} + +.mdi-basket-unfill:before { + content: "\F078"; +} + +.mdi-battery:before { + content: "\F079"; +} + +.mdi-battery-10:before { + content: "\F07A"; +} + +.mdi-battery-20:before { + content: "\F07B"; +} + +.mdi-battery-30:before { + content: "\F07C"; +} + +.mdi-battery-40:before { + content: "\F07D"; +} + +.mdi-battery-50:before { + content: "\F07E"; +} + +.mdi-battery-60:before { + content: "\F07F"; +} + +.mdi-battery-70:before { + content: "\F080"; +} + +.mdi-battery-80:before { + content: "\F081"; +} + +.mdi-battery-90:before { + content: "\F082"; +} + +.mdi-battery-alert:before { + content: "\F083"; +} + +.mdi-battery-charging:before { + content: "\F084"; +} + +.mdi-battery-charging-100:before { + content: "\F085"; +} + +.mdi-battery-charging-20:before { + content: "\F086"; +} + +.mdi-battery-charging-30:before { + content: "\F087"; +} + +.mdi-battery-charging-40:before { + content: "\F088"; +} + +.mdi-battery-charging-60:before { + content: "\F089"; +} + +.mdi-battery-charging-80:before { + content: "\F08A"; +} + +.mdi-battery-charging-90:before { + content: "\F08B"; +} + +.mdi-battery-minus:before { + content: "\F08C"; +} + +.mdi-battery-negative:before { + content: "\F08D"; +} + +.mdi-battery-outline:before { + content: "\F08E"; +} + +.mdi-battery-plus:before { + content: "\F08F"; +} + +.mdi-battery-positive:before { + content: "\F090"; +} + +.mdi-battery-unknown:before { + content: "\F091"; +} + +.mdi-beach:before { + content: "\F092"; +} + +.mdi-beats:before { + content: "\F097"; +} + +.mdi-beer:before { + content: "\F098"; +} + +.mdi-behance:before { + content: "\F099"; +} + +.mdi-bell:before { + content: "\F09A"; +} + +.mdi-bell-off:before { + content: "\F09B"; +} + +.mdi-bell-outline:before { + content: "\F09C"; +} + +.mdi-bell-plus:before { + content: "\F09D"; +} + +.mdi-bell-ring:before { + content: "\F09E"; +} + +.mdi-bell-ring-outline:before { + content: "\F09F"; +} + +.mdi-bell-sleep:before { + content: "\F0A0"; +} + +.mdi-beta:before { + content: "\F0A1"; +} + +.mdi-bible:before { + content: "\F0A2"; +} + +.mdi-bike:before { + content: "\F0A3"; +} + +.mdi-bing:before { + content: "\F0A4"; +} + +.mdi-binoculars:before { + content: "\F0A5"; +} + +.mdi-bio:before { + content: "\F0A6"; +} + +.mdi-biohazard:before { + content: "\F0A7"; +} + +.mdi-bitbucket:before { + content: "\F0A8"; +} + +.mdi-black-mesa:before { + content: "\F0A9"; +} + +.mdi-blackberry:before { + content: "\F0AA"; +} + +.mdi-blender:before { + content: "\F0AB"; +} + +.mdi-blinds:before { + content: "\F0AC"; +} + +.mdi-block-helper:before { + content: "\F0AD"; +} + +.mdi-blogger:before { + content: "\F0AE"; +} + +.mdi-bluetooth:before { + content: "\F0AF"; +} + +.mdi-bluetooth-audio:before { + content: "\F0B0"; +} + +.mdi-bluetooth-connect:before { + content: "\F0B1"; +} + +.mdi-bluetooth-off:before { + content: "\F0B2"; +} + +.mdi-bluetooth-settings:before { + content: "\F0B3"; +} + +.mdi-bluetooth-transfer:before { + content: "\F0B4"; +} + +.mdi-blur:before { + content: "\F0B5"; +} + +.mdi-blur-linear:before { + content: "\F0B6"; +} + +.mdi-blur-off:before { + content: "\F0B7"; +} + +.mdi-blur-radial:before { + content: "\F0B8"; +} + +.mdi-bone:before { + content: "\F0B9"; +} + +.mdi-book:before { + content: "\F0BA"; +} + +.mdi-book-minus:before { + content: "\F5D9"; +} + +.mdi-book-multiple:before { + content: "\F0BB"; +} + +.mdi-book-multiple-variant:before { + content: "\F0BC"; +} + +.mdi-book-open:before { + content: "\F0BD"; +} + +.mdi-book-open-page-variant:before { + content: "\F5DA"; +} + +.mdi-book-open-variant:before { + content: "\F0BE"; +} + +.mdi-book-plus:before { + content: "\F5DB"; +} + +.mdi-book-variant:before { + content: "\F0BF"; +} + +.mdi-bookmark:before { + content: "\F0C0"; +} + +.mdi-bookmark-check:before { + content: "\F0C1"; +} + +.mdi-bookmark-music:before { + content: "\F0C2"; +} + +.mdi-bookmark-outline:before { + content: "\F0C3"; +} + +.mdi-bookmark-plus:before { + content: "\F0C5"; +} + +.mdi-bookmark-plus-outline:before { + content: "\F0C4"; +} + +.mdi-bookmark-remove:before { + content: "\F0C6"; +} + +.mdi-boombox:before { + content: "\F5DC"; +} + +.mdi-border-all:before { + content: "\F0C7"; +} + +.mdi-border-bottom:before { + content: "\F0C8"; +} + +.mdi-border-color:before { + content: "\F0C9"; +} + +.mdi-border-horizontal:before { + content: "\F0CA"; +} + +.mdi-border-inside:before { + content: "\F0CB"; +} + +.mdi-border-left:before { + content: "\F0CC"; +} + +.mdi-border-none:before { + content: "\F0CD"; +} + +.mdi-border-outside:before { + content: "\F0CE"; +} + +.mdi-border-right:before { + content: "\F0CF"; +} + +.mdi-border-style:before { + content: "\F0D0"; +} + +.mdi-border-top:before { + content: "\F0D1"; +} + +.mdi-border-vertical:before { + content: "\F0D2"; +} + +.mdi-bowl:before { + content: "\F617"; +} + +.mdi-bowling:before { + content: "\F0D3"; +} + +.mdi-box:before { + content: "\F0D4"; +} + +.mdi-box-cutter:before { + content: "\F0D5"; +} + +.mdi-box-shadow:before { + content: "\F637"; +} + +.mdi-bridge:before { + content: "\F618"; +} + +.mdi-briefcase:before { + content: "\F0D6"; +} + +.mdi-briefcase-check:before { + content: "\F0D7"; +} + +.mdi-briefcase-download:before { + content: "\F0D8"; +} + +.mdi-briefcase-upload:before { + content: "\F0D9"; +} + +.mdi-brightness-1:before { + content: "\F0DA"; +} + +.mdi-brightness-2:before { + content: "\F0DB"; +} + +.mdi-brightness-3:before { + content: "\F0DC"; +} + +.mdi-brightness-4:before { + content: "\F0DD"; +} + +.mdi-brightness-5:before { + content: "\F0DE"; +} + +.mdi-brightness-6:before { + content: "\F0DF"; +} + +.mdi-brightness-7:before { + content: "\F0E0"; +} + +.mdi-brightness-auto:before { + content: "\F0E1"; +} + +.mdi-broom:before { + content: "\F0E2"; +} + +.mdi-brush:before { + content: "\F0E3"; +} + +.mdi-buffer:before { + content: "\F619"; +} + +.mdi-bug:before { + content: "\F0E4"; +} + +.mdi-bulletin-board:before { + content: "\F0E5"; +} + +.mdi-bullhorn:before { + content: "\F0E6"; +} + +.mdi-bullseye:before { + content: "\F5DD"; +} + +.mdi-burst-mode:before { + content: "\F5DE"; +} + +.mdi-bus:before { + content: "\F0E7"; +} + +.mdi-cached:before { + content: "\F0E8"; +} + +.mdi-cake:before { + content: "\F0E9"; +} + +.mdi-cake-layered:before { + content: "\F0EA"; +} + +.mdi-cake-variant:before { + content: "\F0EB"; +} + +.mdi-calculator:before { + content: "\F0EC"; +} + +.mdi-calendar:before { + content: "\F0ED"; +} + +.mdi-calendar-blank:before { + content: "\F0EE"; +} + +.mdi-calendar-check:before { + content: "\F0EF"; +} + +.mdi-calendar-clock:before { + content: "\F0F0"; +} + +.mdi-calendar-multiple:before { + content: "\F0F1"; +} + +.mdi-calendar-multiple-check:before { + content: "\F0F2"; +} + +.mdi-calendar-plus:before { + content: "\F0F3"; +} + +.mdi-calendar-remove:before { + content: "\F0F4"; +} + +.mdi-calendar-text:before { + content: "\F0F5"; +} + +.mdi-calendar-today:before { + content: "\F0F6"; +} + +.mdi-call-made:before { + content: "\F0F7"; +} + +.mdi-call-merge:before { + content: "\F0F8"; +} + +.mdi-call-missed:before { + content: "\F0F9"; +} + +.mdi-call-received:before { + content: "\F0FA"; +} + +.mdi-call-split:before { + content: "\F0FB"; +} + +.mdi-camcorder:before { + content: "\F0FC"; +} + +.mdi-camcorder-box:before { + content: "\F0FD"; +} + +.mdi-camcorder-box-off:before { + content: "\F0FE"; +} + +.mdi-camcorder-off:before { + content: "\F0FF"; +} + +.mdi-camera:before { + content: "\F100"; +} + +.mdi-camera-enhance:before { + content: "\F101"; +} + +.mdi-camera-front:before { + content: "\F102"; +} + +.mdi-camera-front-variant:before { + content: "\F103"; +} + +.mdi-camera-iris:before { + content: "\F104"; +} + +.mdi-camera-off:before { + content: "\F5DF"; +} + +.mdi-camera-party-mode:before { + content: "\F105"; +} + +.mdi-camera-rear:before { + content: "\F106"; +} + +.mdi-camera-rear-variant:before { + content: "\F107"; +} + +.mdi-camera-switch:before { + content: "\F108"; +} + +.mdi-camera-timer:before { + content: "\F109"; +} + +.mdi-candle:before { + content: "\F5E2"; +} + +.mdi-candycane:before { + content: "\F10A"; +} + +.mdi-car:before { + content: "\F10B"; +} + +.mdi-car-battery:before { + content: "\F10C"; +} + +.mdi-car-connected:before { + content: "\F10D"; +} + +.mdi-car-wash:before { + content: "\F10E"; +} + +.mdi-cards:before { + content: "\F638"; +} + +.mdi-cards-outline:before { + content: "\F639"; +} + +.mdi-cards-playing-outline:before { + content: "\F63A"; +} + +.mdi-carrot:before { + content: "\F10F"; +} + +.mdi-cart:before { + content: "\F110"; +} + +.mdi-cart-off:before { + content: "\F66B"; +} + +.mdi-cart-outline:before { + content: "\F111"; +} + +.mdi-cart-plus:before { + content: "\F112"; +} + +.mdi-case-sensitive-alt:before { + content: "\F113"; +} + +.mdi-cash:before { + content: "\F114"; +} + +.mdi-cash-100:before { + content: "\F115"; +} + +.mdi-cash-multiple:before { + content: "\F116"; +} + +.mdi-cash-usd:before { + content: "\F117"; +} + +.mdi-cast:before { + content: "\F118"; +} + +.mdi-cast-connected:before { + content: "\F119"; +} + +.mdi-castle:before { + content: "\F11A"; +} + +.mdi-cat:before { + content: "\F11B"; +} + +.mdi-cellphone:before { + content: "\F11C"; +} + +.mdi-cellphone-android:before { + content: "\F11D"; +} + +.mdi-cellphone-basic:before { + content: "\F11E"; +} + +.mdi-cellphone-dock:before { + content: "\F11F"; +} + +.mdi-cellphone-iphone:before { + content: "\F120"; +} + +.mdi-cellphone-link:before { + content: "\F121"; +} + +.mdi-cellphone-link-off:before { + content: "\F122"; +} + +.mdi-cellphone-settings:before { + content: "\F123"; +} + +.mdi-certificate:before { + content: "\F124"; +} + +.mdi-chair-school:before { + content: "\F125"; +} + +.mdi-chart-arc:before { + content: "\F126"; +} + +.mdi-chart-areaspline:before { + content: "\F127"; +} + +.mdi-chart-bar:before { + content: "\F128"; +} + +.mdi-chart-bubble:before { + content: "\F5E3"; +} + +.mdi-chart-gantt:before { + content: "\F66C"; +} + +.mdi-chart-histogram:before { + content: "\F129"; +} + +.mdi-chart-line:before { + content: "\F12A"; +} + +.mdi-chart-pie:before { + content: "\F12B"; +} + +.mdi-chart-scatterplot-hexbin:before { + content: "\F66D"; +} + +.mdi-chart-timeline:before { + content: "\F66E"; +} + +.mdi-check:before { + content: "\F12C"; +} + +.mdi-check-all:before { + content: "\F12D"; +} + +.mdi-check-circle:before { + content: "\F5E0"; +} + +.mdi-check-circle-outline:before { + content: "\F5E1"; +} + +.mdi-checkbox-blank:before { + content: "\F12E"; +} + +.mdi-checkbox-blank-circle:before { + content: "\F12F"; +} + +.mdi-checkbox-blank-circle-outline:before { + content: "\F130"; +} + +.mdi-checkbox-blank-outline:before { + content: "\F131"; +} + +.mdi-checkbox-marked:before { + content: "\F132"; +} + +.mdi-checkbox-marked-circle:before { + content: "\F133"; +} + +.mdi-checkbox-marked-circle-outline:before { + content: "\F134"; +} + +.mdi-checkbox-marked-outline:before { + content: "\F135"; +} + +.mdi-checkbox-multiple-blank:before { + content: "\F136"; +} + +.mdi-checkbox-multiple-blank-circle:before { + content: "\F63B"; +} + +.mdi-checkbox-multiple-blank-circle-outline:before { + content: "\F63C"; +} + +.mdi-checkbox-multiple-blank-outline:before { + content: "\F137"; +} + +.mdi-checkbox-multiple-marked:before { + content: "\F138"; +} + +.mdi-checkbox-multiple-marked-circle:before { + content: "\F63D"; +} + +.mdi-checkbox-multiple-marked-circle-outline:before { + content: "\F63E"; +} + +.mdi-checkbox-multiple-marked-outline:before { + content: "\F139"; +} + +.mdi-checkerboard:before { + content: "\F13A"; +} + +.mdi-chemical-weapon:before { + content: "\F13B"; +} + +.mdi-chevron-double-down:before { + content: "\F13C"; +} + +.mdi-chevron-double-left:before { + content: "\F13D"; +} + +.mdi-chevron-double-right:before { + content: "\F13E"; +} + +.mdi-chevron-double-up:before { + content: "\F13F"; +} + +.mdi-chevron-down:before { + content: "\F140"; +} + +.mdi-chevron-left:before { + content: "\F141"; +} + +.mdi-chevron-right:before { + content: "\F142"; +} + +.mdi-chevron-up:before { + content: "\F143"; +} + +.mdi-chip:before { + content: "\F61A"; +} + +.mdi-church:before { + content: "\F144"; +} + +.mdi-cisco-webex:before { + content: "\F145"; +} + +.mdi-city:before { + content: "\F146"; +} + +.mdi-clipboard:before { + content: "\F147"; +} + +.mdi-clipboard-account:before { + content: "\F148"; +} + +.mdi-clipboard-alert:before { + content: "\F149"; +} + +.mdi-clipboard-arrow-down:before { + content: "\F14A"; +} + +.mdi-clipboard-arrow-left:before { + content: "\F14B"; +} + +.mdi-clipboard-check:before { + content: "\F14C"; +} + +.mdi-clipboard-outline:before { + content: "\F14D"; +} + +.mdi-clipboard-text:before { + content: "\F14E"; +} + +.mdi-clippy:before { + content: "\F14F"; +} + +.mdi-clock:before { + content: "\F150"; +} + +.mdi-clock-alert:before { + content: "\F5CE"; +} + +.mdi-clock-end:before { + content: "\F151"; +} + +.mdi-clock-fast:before { + content: "\F152"; +} + +.mdi-clock-in:before { + content: "\F153"; +} + +.mdi-clock-out:before { + content: "\F154"; +} + +.mdi-clock-start:before { + content: "\F155"; +} + +.mdi-close:before { + content: "\F156"; +} + +.mdi-close-box:before { + content: "\F157"; +} + +.mdi-close-box-outline:before { + content: "\F158"; +} + +.mdi-close-circle:before { + content: "\F159"; +} + +.mdi-close-circle-outline:before { + content: "\F15A"; +} + +.mdi-close-network:before { + content: "\F15B"; +} + +.mdi-close-octagon:before { + content: "\F15C"; +} + +.mdi-close-octagon-outline:before { + content: "\F15D"; +} + +.mdi-closed-caption:before { + content: "\F15E"; +} + +.mdi-cloud:before { + content: "\F15F"; +} + +.mdi-cloud-check:before { + content: "\F160"; +} + +.mdi-cloud-circle:before { + content: "\F161"; +} + +.mdi-cloud-download:before { + content: "\F162"; +} + +.mdi-cloud-outline:before { + content: "\F163"; +} + +.mdi-cloud-outline-off:before { + content: "\F164"; +} + +.mdi-cloud-print:before { + content: "\F165"; +} + +.mdi-cloud-print-outline:before { + content: "\F166"; +} + +.mdi-cloud-sync:before { + content: "\F63F"; +} + +.mdi-cloud-upload:before { + content: "\F167"; +} + +.mdi-code-array:before { + content: "\F168"; +} + +.mdi-code-braces:before { + content: "\F169"; +} + +.mdi-code-brackets:before { + content: "\F16A"; +} + +.mdi-code-equal:before { + content: "\F16B"; +} + +.mdi-code-greater-than:before { + content: "\F16C"; +} + +.mdi-code-greater-than-or-equal:before { + content: "\F16D"; +} + +.mdi-code-less-than:before { + content: "\F16E"; +} + +.mdi-code-less-than-or-equal:before { + content: "\F16F"; +} + +.mdi-code-not-equal:before { + content: "\F170"; +} + +.mdi-code-not-equal-variant:before { + content: "\F171"; +} + +.mdi-code-parentheses:before { + content: "\F172"; +} + +.mdi-code-string:before { + content: "\F173"; +} + +.mdi-code-tags:before { + content: "\F174"; +} + +.mdi-codepen:before { + content: "\F175"; +} + +.mdi-coffee:before { + content: "\F176"; +} + +.mdi-coffee-to-go:before { + content: "\F177"; +} + +.mdi-coin:before { + content: "\F178"; +} + +.mdi-collage:before { + content: "\F640"; +} + +.mdi-color-helper:before { + content: "\F179"; +} + +.mdi-comment:before { + content: "\F17A"; +} + +.mdi-comment-account:before { + content: "\F17B"; +} + +.mdi-comment-account-outline:before { + content: "\F17C"; +} + +.mdi-comment-alert:before { + content: "\F17D"; +} + +.mdi-comment-alert-outline:before { + content: "\F17E"; +} + +.mdi-comment-check:before { + content: "\F17F"; +} + +.mdi-comment-check-outline:before { + content: "\F180"; +} + +.mdi-comment-multiple-outline:before { + content: "\F181"; +} + +.mdi-comment-outline:before { + content: "\F182"; +} + +.mdi-comment-plus-outline:before { + content: "\F183"; +} + +.mdi-comment-processing:before { + content: "\F184"; +} + +.mdi-comment-processing-outline:before { + content: "\F185"; +} + +.mdi-comment-question-outline:before { + content: "\F186"; +} + +.mdi-comment-remove-outline:before { + content: "\F187"; +} + +.mdi-comment-text:before { + content: "\F188"; +} + +.mdi-comment-text-outline:before { + content: "\F189"; +} + +.mdi-compare:before { + content: "\F18A"; +} + +.mdi-compass:before { + content: "\F18B"; +} + +.mdi-compass-outline:before { + content: "\F18C"; +} + +.mdi-console:before { + content: "\F18D"; +} + +.mdi-contact-mail:before { + content: "\F18E"; +} + +.mdi-content-copy:before { + content: "\F18F"; +} + +.mdi-content-cut:before { + content: "\F190"; +} + +.mdi-content-duplicate:before { + content: "\F191"; +} + +.mdi-content-paste:before { + content: "\F192"; +} + +.mdi-content-save:before { + content: "\F193"; +} + +.mdi-content-save-all:before { + content: "\F194"; +} + +.mdi-content-save-settings:before { + content: "\F61B"; +} + +.mdi-contrast:before { + content: "\F195"; +} + +.mdi-contrast-box:before { + content: "\F196"; +} + +.mdi-contrast-circle:before { + content: "\F197"; +} + +.mdi-cookie:before { + content: "\F198"; +} + +.mdi-copyright:before { + content: "\F5E6"; +} + +.mdi-counter:before { + content: "\F199"; +} + +.mdi-cow:before { + content: "\F19A"; +} + +.mdi-credit-card:before { + content: "\F19B"; +} + +.mdi-credit-card-multiple:before { + content: "\F19C"; +} + +.mdi-credit-card-off:before { + content: "\F5E4"; +} + +.mdi-credit-card-scan:before { + content: "\F19D"; +} + +.mdi-crop:before { + content: "\F19E"; +} + +.mdi-crop-free:before { + content: "\F19F"; +} + +.mdi-crop-landscape:before { + content: "\F1A0"; +} + +.mdi-crop-portrait:before { + content: "\F1A1"; +} + +.mdi-crop-square:before { + content: "\F1A2"; +} + +.mdi-crosshairs:before { + content: "\F1A3"; +} + +.mdi-crosshairs-gps:before { + content: "\F1A4"; +} + +.mdi-crown:before { + content: "\F1A5"; +} + +.mdi-cube:before { + content: "\F1A6"; +} + +.mdi-cube-outline:before { + content: "\F1A7"; +} + +.mdi-cube-send:before { + content: "\F1A8"; +} + +.mdi-cube-unfolded:before { + content: "\F1A9"; +} + +.mdi-cup:before { + content: "\F1AA"; +} + +.mdi-cup-off:before { + content: "\F5E5"; +} + +.mdi-cup-water:before { + content: "\F1AB"; +} + +.mdi-currency-btc:before { + content: "\F1AC"; +} + +.mdi-currency-eur:before { + content: "\F1AD"; +} + +.mdi-currency-gbp:before { + content: "\F1AE"; +} + +.mdi-currency-inr:before { + content: "\F1AF"; +} + +.mdi-currency-ngn:before { + content: "\F1B0"; +} + +.mdi-currency-rub:before { + content: "\F1B1"; +} + +.mdi-currency-try:before { + content: "\F1B2"; +} + +.mdi-currency-usd:before { + content: "\F1B3"; +} + +.mdi-cursor-default:before { + content: "\F1B4"; +} + +.mdi-cursor-default-outline:before { + content: "\F1B5"; +} + +.mdi-cursor-move:before { + content: "\F1B6"; +} + +.mdi-cursor-pointer:before { + content: "\F1B7"; +} + +.mdi-cursor-text:before { + content: "\F5E7"; +} + +.mdi-database:before { + content: "\F1B8"; +} + +.mdi-database-minus:before { + content: "\F1B9"; +} + +.mdi-database-plus:before { + content: "\F1BA"; +} + +.mdi-debug-step-into:before { + content: "\F1BB"; +} + +.mdi-debug-step-out:before { + content: "\F1BC"; +} + +.mdi-debug-step-over:before { + content: "\F1BD"; +} + +.mdi-decimal-decrease:before { + content: "\F1BE"; +} + +.mdi-decimal-increase:before { + content: "\F1BF"; +} + +.mdi-delete:before { + content: "\F1C0"; +} + +.mdi-delete-forever:before { + content: "\F5E8"; +} + +.mdi-delete-sweep:before { + content: "\F5E9"; +} + +.mdi-delete-variant:before { + content: "\F1C1"; +} + +.mdi-delta:before { + content: "\F1C2"; +} + +.mdi-deskphone:before { + content: "\F1C3"; +} + +.mdi-desktop-mac:before { + content: "\F1C4"; +} + +.mdi-desktop-tower:before { + content: "\F1C5"; +} + +.mdi-details:before { + content: "\F1C6"; +} + +.mdi-deviantart:before { + content: "\F1C7"; +} + +.mdi-dialpad:before { + content: "\F61C"; +} + +.mdi-diamond:before { + content: "\F1C8"; +} + +.mdi-dice-1:before { + content: "\F1CA"; +} + +.mdi-dice-2:before { + content: "\F1CB"; +} + +.mdi-dice-3:before { + content: "\F1CC"; +} + +.mdi-dice-4:before { + content: "\F1CD"; +} + +.mdi-dice-5:before { + content: "\F1CE"; +} + +.mdi-dice-6:before { + content: "\F1CF"; +} + +.mdi-dice-d20:before { + content: "\F5EA"; +} + +.mdi-dice-d4:before { + content: "\F5EB"; +} + +.mdi-dice-d6:before { + content: "\F5EC"; +} + +.mdi-dice-d8:before { + content: "\F5ED"; +} + +.mdi-dictionary:before { + content: "\F61D"; +} + +.mdi-directions:before { + content: "\F1D0"; +} + +.mdi-directions-fork:before { + content: "\F641"; +} + +.mdi-discord:before { + content: "\F66F"; +} + +.mdi-disk:before { + content: "\F5EE"; +} + +.mdi-disk-alert:before { + content: "\F1D1"; +} + +.mdi-disqus:before { + content: "\F1D2"; +} + +.mdi-disqus-outline:before { + content: "\F1D3"; +} + +.mdi-division:before { + content: "\F1D4"; +} + +.mdi-division-box:before { + content: "\F1D5"; +} + +.mdi-dns:before { + content: "\F1D6"; +} + +.mdi-domain:before { + content: "\F1D7"; +} + +.mdi-dots-horizontal:before { + content: "\F1D8"; +} + +.mdi-dots-vertical:before { + content: "\F1D9"; +} + +.mdi-download:before { + content: "\F1DA"; +} + +.mdi-drag:before { + content: "\F1DB"; +} + +.mdi-drag-horizontal:before { + content: "\F1DC"; +} + +.mdi-drag-vertical:before { + content: "\F1DD"; +} + +.mdi-drawing:before { + content: "\F1DE"; +} + +.mdi-drawing-box:before { + content: "\F1DF"; +} + +.mdi-dribbble:before { + content: "\F1E0"; +} + +.mdi-dribbble-box:before { + content: "\F1E1"; +} + +.mdi-drone:before { + content: "\F1E2"; +} + +.mdi-dropbox:before { + content: "\F1E3"; +} + +.mdi-drupal:before { + content: "\F1E4"; +} + +.mdi-duck:before { + content: "\F1E5"; +} + +.mdi-dumbbell:before { + content: "\F1E6"; +} + +.mdi-earth:before { + content: "\F1E7"; +} + +.mdi-earth-off:before { + content: "\F1E8"; +} + +.mdi-edge:before { + content: "\F1E9"; +} + +.mdi-eject:before { + content: "\F1EA"; +} + +.mdi-elevation-decline:before { + content: "\F1EB"; +} + +.mdi-elevation-rise:before { + content: "\F1EC"; +} + +.mdi-elevator:before { + content: "\F1ED"; +} + +.mdi-email:before { + content: "\F1EE"; +} + +.mdi-email-open:before { + content: "\F1EF"; +} + +.mdi-email-open-outline:before { + content: "\F5EF"; +} + +.mdi-email-outline:before { + content: "\F1F0"; +} + +.mdi-email-secure:before { + content: "\F1F1"; +} + +.mdi-email-variant:before { + content: "\F5F0"; +} + +.mdi-emoticon:before { + content: "\F1F2"; +} + +.mdi-emoticon-cool:before { + content: "\F1F3"; +} + +.mdi-emoticon-devil:before { + content: "\F1F4"; +} + +.mdi-emoticon-happy:before { + content: "\F1F5"; +} + +.mdi-emoticon-neutral:before { + content: "\F1F6"; +} + +.mdi-emoticon-poop:before { + content: "\F1F7"; +} + +.mdi-emoticon-sad:before { + content: "\F1F8"; +} + +.mdi-emoticon-tongue:before { + content: "\F1F9"; +} + +.mdi-engine:before { + content: "\F1FA"; +} + +.mdi-engine-outline:before { + content: "\F1FB"; +} + +.mdi-equal:before { + content: "\F1FC"; +} + +.mdi-equal-box:before { + content: "\F1FD"; +} + +.mdi-eraser:before { + content: "\F1FE"; +} + +.mdi-eraser-variant:before { + content: "\F642"; +} + +.mdi-escalator:before { + content: "\F1FF"; +} + +.mdi-ethernet:before { + content: "\F200"; +} + +.mdi-ethernet-cable:before { + content: "\F201"; +} + +.mdi-ethernet-cable-off:before { + content: "\F202"; +} + +.mdi-etsy:before { + content: "\F203"; +} + +.mdi-ev-station:before { + content: "\F5F1"; +} + +.mdi-evernote:before { + content: "\F204"; +} + +.mdi-exclamation:before { + content: "\F205"; +} + +.mdi-exit-to-app:before { + content: "\F206"; +} + +.mdi-export:before { + content: "\F207"; +} + +.mdi-eye:before { + content: "\F208"; +} + +.mdi-eye-off:before { + content: "\F209"; +} + +.mdi-eyedropper:before { + content: "\F20A"; +} + +.mdi-eyedropper-variant:before { + content: "\F20B"; +} + +.mdi-face:before { + content: "\F643"; +} + +.mdi-face-profile:before { + content: "\F644"; +} + +.mdi-facebook:before { + content: "\F20C"; +} + +.mdi-facebook-box:before { + content: "\F20D"; +} + +.mdi-facebook-messenger:before { + content: "\F20E"; +} + +.mdi-factory:before { + content: "\F20F"; +} + +.mdi-fan:before { + content: "\F210"; +} + +.mdi-fast-forward:before { + content: "\F211"; +} + +.mdi-fax:before { + content: "\F212"; +} + +.mdi-ferry:before { + content: "\F213"; +} + +.mdi-file:before { + content: "\F214"; +} + +.mdi-file-chart:before { + content: "\F215"; +} + +.mdi-file-check:before { + content: "\F216"; +} + +.mdi-file-cloud:before { + content: "\F217"; +} + +.mdi-file-delimited:before { + content: "\F218"; +} + +.mdi-file-document:before { + content: "\F219"; +} + +.mdi-file-document-box:before { + content: "\F21A"; +} + +.mdi-file-excel:before { + content: "\F21B"; +} + +.mdi-file-excel-box:before { + content: "\F21C"; +} + +.mdi-file-export:before { + content: "\F21D"; +} + +.mdi-file-find:before { + content: "\F21E"; +} + +.mdi-file-hidden:before { + content: "\F613"; +} + +.mdi-file-image:before { + content: "\F21F"; +} + +.mdi-file-import:before { + content: "\F220"; +} + +.mdi-file-lock:before { + content: "\F221"; +} + +.mdi-file-multiple:before { + content: "\F222"; +} + +.mdi-file-music:before { + content: "\F223"; +} + +.mdi-file-outline:before { + content: "\F224"; +} + +.mdi-file-pdf:before { + content: "\F225"; +} + +.mdi-file-pdf-box:before { + content: "\F226"; +} + +.mdi-file-powerpoint:before { + content: "\F227"; +} + +.mdi-file-powerpoint-box:before { + content: "\F228"; +} + +.mdi-file-presentation-box:before { + content: "\F229"; +} + +.mdi-file-restore:before { + content: "\F670"; +} + +.mdi-file-send:before { + content: "\F22A"; +} + +.mdi-file-tree:before { + content: "\F645"; +} + +.mdi-file-video:before { + content: "\F22B"; +} + +.mdi-file-word:before { + content: "\F22C"; +} + +.mdi-file-word-box:before { + content: "\F22D"; +} + +.mdi-file-xml:before { + content: "\F22E"; +} + +.mdi-film:before { + content: "\F22F"; +} + +.mdi-filmstrip:before { + content: "\F230"; +} + +.mdi-filmstrip-off:before { + content: "\F231"; +} + +.mdi-filter:before { + content: "\F232"; +} + +.mdi-filter-outline:before { + content: "\F233"; +} + +.mdi-filter-remove:before { + content: "\F234"; +} + +.mdi-filter-remove-outline:before { + content: "\F235"; +} + +.mdi-filter-variant:before { + content: "\F236"; +} + +.mdi-fingerprint:before { + content: "\F237"; +} + +.mdi-fire:before { + content: "\F238"; +} + +.mdi-firefox:before { + content: "\F239"; +} + +.mdi-fish:before { + content: "\F23A"; +} + +.mdi-flag:before { + content: "\F23B"; +} + +.mdi-flag-checkered:before { + content: "\F23C"; +} + +.mdi-flag-outline:before { + content: "\F23D"; +} + +.mdi-flag-outline-variant:before { + content: "\F23E"; +} + +.mdi-flag-triangle:before { + content: "\F23F"; +} + +.mdi-flag-variant:before { + content: "\F240"; +} + +.mdi-flash:before { + content: "\F241"; +} + +.mdi-flash-auto:before { + content: "\F242"; +} + +.mdi-flash-off:before { + content: "\F243"; +} + +.mdi-flashlight:before { + content: "\F244"; +} + +.mdi-flashlight-off:before { + content: "\F245"; +} + +.mdi-flask:before { + content: "\F093"; +} + +.mdi-flask-empty:before { + content: "\F094"; +} + +.mdi-flask-empty-outline:before { + content: "\F095"; +} + +.mdi-flask-outline:before { + content: "\F096"; +} + +.mdi-flattr:before { + content: "\F246"; +} + +.mdi-flip-to-back:before { + content: "\F247"; +} + +.mdi-flip-to-front:before { + content: "\F248"; +} + +.mdi-floppy:before { + content: "\F249"; +} + +.mdi-flower:before { + content: "\F24A"; +} + +.mdi-folder:before { + content: "\F24B"; +} + +.mdi-folder-account:before { + content: "\F24C"; +} + +.mdi-folder-download:before { + content: "\F24D"; +} + +.mdi-folder-google-drive:before { + content: "\F24E"; +} + +.mdi-folder-image:before { + content: "\F24F"; +} + +.mdi-folder-lock:before { + content: "\F250"; +} + +.mdi-folder-lock-open:before { + content: "\F251"; +} + +.mdi-folder-move:before { + content: "\F252"; +} + +.mdi-folder-multiple:before { + content: "\F253"; +} + +.mdi-folder-multiple-image:before { + content: "\F254"; +} + +.mdi-folder-multiple-outline:before { + content: "\F255"; +} + +.mdi-folder-outline:before { + content: "\F256"; +} + +.mdi-folder-plus:before { + content: "\F257"; +} + +.mdi-folder-remove:before { + content: "\F258"; +} + +.mdi-folder-upload:before { + content: "\F259"; +} + +.mdi-food:before { + content: "\F25A"; +} + +.mdi-food-apple:before { + content: "\F25B"; +} + +.mdi-food-fork-drink:before { + content: "\F5F2"; +} + +.mdi-food-off:before { + content: "\F5F3"; +} + +.mdi-food-variant:before { + content: "\F25C"; +} + +.mdi-football:before { + content: "\F25D"; +} + +.mdi-football-australian:before { + content: "\F25E"; +} + +.mdi-football-helmet:before { + content: "\F25F"; +} + +.mdi-format-align-center:before { + content: "\F260"; +} + +.mdi-format-align-justify:before { + content: "\F261"; +} + +.mdi-format-align-left:before { + content: "\F262"; +} + +.mdi-format-align-right:before { + content: "\F263"; +} + +.mdi-format-annotation-plus:before { + content: "\F646"; +} + +.mdi-format-bold:before { + content: "\F264"; +} + +.mdi-format-clear:before { + content: "\F265"; +} + +.mdi-format-color-fill:before { + content: "\F266"; +} + +.mdi-format-float-center:before { + content: "\F267"; +} + +.mdi-format-float-left:before { + content: "\F268"; +} + +.mdi-format-float-none:before { + content: "\F269"; +} + +.mdi-format-float-right:before { + content: "\F26A"; +} + +.mdi-format-header-1:before { + content: "\F26B"; +} + +.mdi-format-header-2:before { + content: "\F26C"; +} + +.mdi-format-header-3:before { + content: "\F26D"; +} + +.mdi-format-header-4:before { + content: "\F26E"; +} + +.mdi-format-header-5:before { + content: "\F26F"; +} + +.mdi-format-header-6:before { + content: "\F270"; +} + +.mdi-format-header-decrease:before { + content: "\F271"; +} + +.mdi-format-header-equal:before { + content: "\F272"; +} + +.mdi-format-header-increase:before { + content: "\F273"; +} + +.mdi-format-header-pound:before { + content: "\F274"; +} + +.mdi-format-horizontal-align-center:before { + content: "\F61E"; +} + +.mdi-format-horizontal-align-left:before { + content: "\F61F"; +} + +.mdi-format-horizontal-align-right:before { + content: "\F620"; +} + +.mdi-format-indent-decrease:before { + content: "\F275"; +} + +.mdi-format-indent-increase:before { + content: "\F276"; +} + +.mdi-format-italic:before { + content: "\F277"; +} + +.mdi-format-line-spacing:before { + content: "\F278"; +} + +.mdi-format-line-style:before { + content: "\F5C8"; +} + +.mdi-format-line-weight:before { + content: "\F5C9"; +} + +.mdi-format-list-bulleted:before { + content: "\F279"; +} + +.mdi-format-list-bulleted-type:before { + content: "\F27A"; +} + +.mdi-format-list-numbers:before { + content: "\F27B"; +} + +.mdi-format-paint:before { + content: "\F27C"; +} + +.mdi-format-paragraph:before { + content: "\F27D"; +} + +.mdi-format-quote:before { + content: "\F27E"; +} + +.mdi-format-size:before { + content: "\F27F"; +} + +.mdi-format-strikethrough:before { + content: "\F280"; +} + +.mdi-format-strikethrough-variant:before { + content: "\F281"; +} + +.mdi-format-subscript:before { + content: "\F282"; +} + +.mdi-format-superscript:before { + content: "\F283"; +} + +.mdi-format-text:before { + content: "\F284"; +} + +.mdi-format-textdirection-l-to-r:before { + content: "\F285"; +} + +.mdi-format-textdirection-r-to-l:before { + content: "\F286"; +} + +.mdi-format-title:before { + content: "\F5F4"; +} + +.mdi-format-underline:before { + content: "\F287"; +} + +.mdi-format-vertical-align-bottom:before { + content: "\F621"; +} + +.mdi-format-vertical-align-center:before { + content: "\F622"; +} + +.mdi-format-vertical-align-top:before { + content: "\F623"; +} + +.mdi-format-wrap-inline:before { + content: "\F288"; +} + +.mdi-format-wrap-square:before { + content: "\F289"; +} + +.mdi-format-wrap-tight:before { + content: "\F28A"; +} + +.mdi-format-wrap-top-bottom:before { + content: "\F28B"; +} + +.mdi-forum:before { + content: "\F28C"; +} + +.mdi-forward:before { + content: "\F28D"; +} + +.mdi-foursquare:before { + content: "\F28E"; +} + +.mdi-fridge:before { + content: "\F28F"; +} + +.mdi-fridge-filled:before { + content: "\F290"; +} + +.mdi-fridge-filled-bottom:before { + content: "\F291"; +} + +.mdi-fridge-filled-top:before { + content: "\F292"; +} + +.mdi-fullscreen:before { + content: "\F293"; +} + +.mdi-fullscreen-exit:before { + content: "\F294"; +} + +.mdi-function:before { + content: "\F295"; +} + +.mdi-gamepad:before { + content: "\F296"; +} + +.mdi-gamepad-variant:before { + content: "\F297"; +} + +.mdi-gas-cylinder:before { + content: "\F647"; +} + +.mdi-gas-station:before { + content: "\F298"; +} + +.mdi-gate:before { + content: "\F299"; +} + +.mdi-gauge:before { + content: "\F29A"; +} + +.mdi-gavel:before { + content: "\F29B"; +} + +.mdi-gender-female:before { + content: "\F29C"; +} + +.mdi-gender-male:before { + content: "\F29D"; +} + +.mdi-gender-male-female:before { + content: "\F29E"; +} + +.mdi-gender-transgender:before { + content: "\F29F"; +} + +.mdi-ghost:before { + content: "\F2A0"; +} + +.mdi-gift:before { + content: "\F2A1"; +} + +.mdi-git:before { + content: "\F2A2"; +} + +.mdi-github-box:before { + content: "\F2A3"; +} + +.mdi-github-circle:before { + content: "\F2A4"; +} + +.mdi-glass-flute:before { + content: "\F2A5"; +} + +.mdi-glass-mug:before { + content: "\F2A6"; +} + +.mdi-glass-stange:before { + content: "\F2A7"; +} + +.mdi-glass-tulip:before { + content: "\F2A8"; +} + +.mdi-glassdoor:before { + content: "\F2A9"; +} + +.mdi-glasses:before { + content: "\F2AA"; +} + +.mdi-gmail:before { + content: "\F2AB"; +} + +.mdi-gnome:before { + content: "\F2AC"; +} + +.mdi-google:before { + content: "\F2AD"; +} + +.mdi-google-cardboard:before { + content: "\F2AE"; +} + +.mdi-google-chrome:before { + content: "\F2AF"; +} + +.mdi-google-circles:before { + content: "\F2B0"; +} + +.mdi-google-circles-communities:before { + content: "\F2B1"; +} + +.mdi-google-circles-extended:before { + content: "\F2B2"; +} + +.mdi-google-circles-group:before { + content: "\F2B3"; +} + +.mdi-google-controller:before { + content: "\F2B4"; +} + +.mdi-google-controller-off:before { + content: "\F2B5"; +} + +.mdi-google-drive:before { + content: "\F2B6"; +} + +.mdi-google-earth:before { + content: "\F2B7"; +} + +.mdi-google-glass:before { + content: "\F2B8"; +} + +.mdi-google-maps:before { + content: "\F5F5"; +} + +.mdi-google-nearby:before { + content: "\F2B9"; +} + +.mdi-google-pages:before { + content: "\F2BA"; +} + +.mdi-google-physical-web:before { + content: "\F2BB"; +} + +.mdi-google-play:before { + content: "\F2BC"; +} + +.mdi-google-plus:before { + content: "\F2BD"; +} + +.mdi-google-plus-box:before { + content: "\F2BE"; +} + +.mdi-google-translate:before { + content: "\F2BF"; +} + +.mdi-google-wallet:before { + content: "\F2C0"; +} + +.mdi-grease-pencil:before { + content: "\F648"; +} + +.mdi-grid:before { + content: "\F2C1"; +} + +.mdi-grid-off:before { + content: "\F2C2"; +} + +.mdi-group:before { + content: "\F2C3"; +} + +.mdi-guitar-electric:before { + content: "\F2C4"; +} + +.mdi-guitar-pick:before { + content: "\F2C5"; +} + +.mdi-guitar-pick-outline:before { + content: "\F2C6"; +} + +.mdi-hackernews:before { + content: "\F624"; +} + +.mdi-hand-pointing-right:before { + content: "\F2C7"; +} + +.mdi-hanger:before { + content: "\F2C8"; +} + +.mdi-hangouts:before { + content: "\F2C9"; +} + +.mdi-harddisk:before { + content: "\F2CA"; +} + +.mdi-headphones:before { + content: "\F2CB"; +} + +.mdi-headphones-box:before { + content: "\F2CC"; +} + +.mdi-headphones-settings:before { + content: "\F2CD"; +} + +.mdi-headset:before { + content: "\F2CE"; +} + +.mdi-headset-dock:before { + content: "\F2CF"; +} + +.mdi-headset-off:before { + content: "\F2D0"; +} + +.mdi-heart:before { + content: "\F2D1"; +} + +.mdi-heart-box:before { + content: "\F2D2"; +} + +.mdi-heart-box-outline:before { + content: "\F2D3"; +} + +.mdi-heart-broken:before { + content: "\F2D4"; +} + +.mdi-heart-outline:before { + content: "\F2D5"; +} + +.mdi-heart-pulse:before { + content: "\F5F6"; +} + +.mdi-help:before { + content: "\F2D6"; +} + +.mdi-help-circle:before { + content: "\F2D7"; +} + +.mdi-help-circle-outline:before { + content: "\F625"; +} + +.mdi-hexagon:before { + content: "\F2D8"; +} + +.mdi-hexagon-outline:before { + content: "\F2D9"; +} + +.mdi-highway:before { + content: "\F5F7"; +} + +.mdi-history:before { + content: "\F2DA"; +} + +.mdi-hololens:before { + content: "\F2DB"; +} + +.mdi-home:before { + content: "\F2DC"; +} + +.mdi-home-map-marker:before { + content: "\F5F8"; +} + +.mdi-home-modern:before { + content: "\F2DD"; +} + +.mdi-home-variant:before { + content: "\F2DE"; +} + +.mdi-hops:before { + content: "\F2DF"; +} + +.mdi-hospital:before { + content: "\F2E0"; +} + +.mdi-hospital-building:before { + content: "\F2E1"; +} + +.mdi-hospital-marker:before { + content: "\F2E2"; +} + +.mdi-hotel:before { + content: "\F2E3"; +} + +.mdi-houzz:before { + content: "\F2E4"; +} + +.mdi-houzz-box:before { + content: "\F2E5"; +} + +.mdi-human:before { + content: "\F2E6"; +} + +.mdi-human-child:before { + content: "\F2E7"; +} + +.mdi-human-female:before { + content: "\F649"; +} + +.mdi-human-greeting:before { + content: "\F64A"; +} + +.mdi-human-handsdown:before { + content: "\F64B"; +} + +.mdi-human-handsup:before { + content: "\F64C"; +} + +.mdi-human-male:before { + content: "\F64D"; +} + +.mdi-human-male-female:before { + content: "\F2E8"; +} + +.mdi-human-pregnant:before { + content: "\F5CF"; +} + +.mdi-image:before { + content: "\F2E9"; +} + +.mdi-image-album:before { + content: "\F2EA"; +} + +.mdi-image-area:before { + content: "\F2EB"; +} + +.mdi-image-area-close:before { + content: "\F2EC"; +} + +.mdi-image-broken:before { + content: "\F2ED"; +} + +.mdi-image-broken-variant:before { + content: "\F2EE"; +} + +.mdi-image-filter:before { + content: "\F2EF"; +} + +.mdi-image-filter-black-white:before { + content: "\F2F0"; +} + +.mdi-image-filter-center-focus:before { + content: "\F2F1"; +} + +.mdi-image-filter-center-focus-weak:before { + content: "\F2F2"; +} + +.mdi-image-filter-drama:before { + content: "\F2F3"; +} + +.mdi-image-filter-frames:before { + content: "\F2F4"; +} + +.mdi-image-filter-hdr:before { + content: "\F2F5"; +} + +.mdi-image-filter-none:before { + content: "\F2F6"; +} + +.mdi-image-filter-tilt-shift:before { + content: "\F2F7"; +} + +.mdi-image-filter-vintage:before { + content: "\F2F8"; +} + +.mdi-image-multiple:before { + content: "\F2F9"; +} + +.mdi-import:before { + content: "\F2FA"; +} + +.mdi-inbox:before { + content: "\F2FB"; +} + +.mdi-incognito:before { + content: "\F5F9"; +} + +.mdi-information:before { + content: "\F2FC"; +} + +.mdi-information-outline:before { + content: "\F2FD"; +} + +.mdi-information-variant:before { + content: "\F64E"; +} + +.mdi-instagram:before { + content: "\F2FE"; +} + +.mdi-instapaper:before { + content: "\F2FF"; +} + +.mdi-internet-explorer:before { + content: "\F300"; +} + +.mdi-invert-colors:before { + content: "\F301"; +} + +.mdi-jeepney:before { + content: "\F302"; +} + +.mdi-jira:before { + content: "\F303"; +} + +.mdi-jsfiddle:before { + content: "\F304"; +} + +.mdi-json:before { + content: "\F626"; +} + +.mdi-keg:before { + content: "\F305"; +} + +.mdi-kettle:before { + content: "\F5FA"; +} + +.mdi-key:before { + content: "\F306"; +} + +.mdi-key-change:before { + content: "\F307"; +} + +.mdi-key-minus:before { + content: "\F308"; +} + +.mdi-key-plus:before { + content: "\F309"; +} + +.mdi-key-remove:before { + content: "\F30A"; +} + +.mdi-key-variant:before { + content: "\F30B"; +} + +.mdi-keyboard:before { + content: "\F30C"; +} + +.mdi-keyboard-backspace:before { + content: "\F30D"; +} + +.mdi-keyboard-caps:before { + content: "\F30E"; +} + +.mdi-keyboard-close:before { + content: "\F30F"; +} + +.mdi-keyboard-off:before { + content: "\F310"; +} + +.mdi-keyboard-return:before { + content: "\F311"; +} + +.mdi-keyboard-tab:before { + content: "\F312"; +} + +.mdi-keyboard-variant:before { + content: "\F313"; +} + +.mdi-kodi:before { + content: "\F314"; +} + +.mdi-label:before { + content: "\F315"; +} + +.mdi-label-outline:before { + content: "\F316"; +} + +.mdi-lambda:before { + content: "\F627"; +} + +.mdi-lan:before { + content: "\F317"; +} + +.mdi-lan-connect:before { + content: "\F318"; +} + +.mdi-lan-disconnect:before { + content: "\F319"; +} + +.mdi-lan-pending:before { + content: "\F31A"; +} + +.mdi-language-c:before { + content: "\F671"; +} + +.mdi-language-cpp:before { + content: "\F672"; +} + +.mdi-language-csharp:before { + content: "\F31B"; +} + +.mdi-language-css3:before { + content: "\F31C"; +} + +.mdi-language-html5:before { + content: "\F31D"; +} + +.mdi-language-javascript:before { + content: "\F31E"; +} + +.mdi-language-php:before { + content: "\F31F"; +} + +.mdi-language-python:before { + content: "\F320"; +} + +.mdi-language-python-text:before { + content: "\F321"; +} + +.mdi-laptop:before { + content: "\F322"; +} + +.mdi-laptop-chromebook:before { + content: "\F323"; +} + +.mdi-laptop-mac:before { + content: "\F324"; +} + +.mdi-laptop-windows:before { + content: "\F325"; +} + +.mdi-lastfm:before { + content: "\F326"; +} + +.mdi-launch:before { + content: "\F327"; +} + +.mdi-layers:before { + content: "\F328"; +} + +.mdi-layers-off:before { + content: "\F329"; +} + +.mdi-lead-pencil:before { + content: "\F64F"; +} + +.mdi-leaf:before { + content: "\F32A"; +} + +.mdi-led-off:before { + content: "\F32B"; +} + +.mdi-led-on:before { + content: "\F32C"; +} + +.mdi-led-outline:before { + content: "\F32D"; +} + +.mdi-led-variant-off:before { + content: "\F32E"; +} + +.mdi-led-variant-on:before { + content: "\F32F"; +} + +.mdi-led-variant-outline:before { + content: "\F330"; +} + +.mdi-library:before { + content: "\F331"; +} + +.mdi-library-books:before { + content: "\F332"; +} + +.mdi-library-music:before { + content: "\F333"; +} + +.mdi-library-plus:before { + content: "\F334"; +} + +.mdi-lightbulb:before { + content: "\F335"; +} + +.mdi-lightbulb-outline:before { + content: "\F336"; +} + +.mdi-link:before { + content: "\F337"; +} + +.mdi-link-off:before { + content: "\F338"; +} + +.mdi-link-variant:before { + content: "\F339"; +} + +.mdi-link-variant-off:before { + content: "\F33A"; +} + +.mdi-linkedin:before { + content: "\F33B"; +} + +.mdi-linkedin-box:before { + content: "\F33C"; +} + +.mdi-linux:before { + content: "\F33D"; +} + +.mdi-lock:before { + content: "\F33E"; +} + +.mdi-lock-open:before { + content: "\F33F"; +} + +.mdi-lock-open-outline:before { + content: "\F340"; +} + +.mdi-lock-outline:before { + content: "\F341"; +} + +.mdi-lock-plus:before { + content: "\F5FB"; +} + +.mdi-login:before { + content: "\F342"; +} + +.mdi-login-variant:before { + content: "\F5FC"; +} + +.mdi-logout:before { + content: "\F343"; +} + +.mdi-logout-variant:before { + content: "\F5FD"; +} + +.mdi-looks:before { + content: "\F344"; +} + +.mdi-loupe:before { + content: "\F345"; +} + +.mdi-lumx:before { + content: "\F346"; +} + +.mdi-magnet:before { + content: "\F347"; +} + +.mdi-magnet-on:before { + content: "\F348"; +} + +.mdi-magnify:before { + content: "\F349"; +} + +.mdi-magnify-minus:before { + content: "\F34A"; +} + +.mdi-magnify-plus:before { + content: "\F34B"; +} + +.mdi-mail-ru:before { + content: "\F34C"; +} + +.mdi-map:before { + content: "\F34D"; +} + +.mdi-map-marker:before { + content: "\F34E"; +} + +.mdi-map-marker-circle:before { + content: "\F34F"; +} + +.mdi-map-marker-minus:before { + content: "\F650"; +} + +.mdi-map-marker-multiple:before { + content: "\F350"; +} + +.mdi-map-marker-off:before { + content: "\F351"; +} + +.mdi-map-marker-plus:before { + content: "\F651"; +} + +.mdi-map-marker-radius:before { + content: "\F352"; +} + +.mdi-margin:before { + content: "\F353"; +} + +.mdi-markdown:before { + content: "\F354"; +} + +.mdi-marker:before { + content: "\F652"; +} + +.mdi-marker-check:before { + content: "\F355"; +} + +.mdi-martini:before { + content: "\F356"; +} + +.mdi-material-ui:before { + content: "\F357"; +} + +.mdi-math-compass:before { + content: "\F358"; +} + +.mdi-matrix:before { + content: "\F628"; +} + +.mdi-maxcdn:before { + content: "\F359"; +} + +.mdi-medium:before { + content: "\F35A"; +} + +.mdi-memory:before { + content: "\F35B"; +} + +.mdi-menu:before { + content: "\F35C"; +} + +.mdi-menu-down:before { + content: "\F35D"; +} + +.mdi-menu-left:before { + content: "\F35E"; +} + +.mdi-menu-right:before { + content: "\F35F"; +} + +.mdi-menu-up:before { + content: "\F360"; +} + +.mdi-message:before { + content: "\F361"; +} + +.mdi-message-alert:before { + content: "\F362"; +} + +.mdi-message-draw:before { + content: "\F363"; +} + +.mdi-message-image:before { + content: "\F364"; +} + +.mdi-message-outline:before { + content: "\F365"; +} + +.mdi-message-plus:before { + content: "\F653"; +} + +.mdi-message-processing:before { + content: "\F366"; +} + +.mdi-message-reply:before { + content: "\F367"; +} + +.mdi-message-reply-text:before { + content: "\F368"; +} + +.mdi-message-text:before { + content: "\F369"; +} + +.mdi-message-text-outline:before { + content: "\F36A"; +} + +.mdi-message-video:before { + content: "\F36B"; +} + +.mdi-meteor:before { + content: "\F629"; +} + +.mdi-microphone:before { + content: "\F36C"; +} + +.mdi-microphone-off:before { + content: "\F36D"; +} + +.mdi-microphone-outline:before { + content: "\F36E"; +} + +.mdi-microphone-settings:before { + content: "\F36F"; +} + +.mdi-microphone-variant:before { + content: "\F370"; +} + +.mdi-microphone-variant-off:before { + content: "\F371"; +} + +.mdi-microscope:before { + content: "\F654"; +} + +.mdi-microsoft:before { + content: "\F372"; +} + +.mdi-minecraft:before { + content: "\F373"; +} + +.mdi-minus:before { + content: "\F374"; +} + +.mdi-minus-box:before { + content: "\F375"; +} + +.mdi-minus-circle:before { + content: "\F376"; +} + +.mdi-minus-circle-outline:before { + content: "\F377"; +} + +.mdi-minus-network:before { + content: "\F378"; +} + +.mdi-mixcloud:before { + content: "\F62A"; +} + +.mdi-monitor:before { + content: "\F379"; +} + +.mdi-monitor-multiple:before { + content: "\F37A"; +} + +.mdi-more:before { + content: "\F37B"; +} + +.mdi-motorbike:before { + content: "\F37C"; +} + +.mdi-mouse:before { + content: "\F37D"; +} + +.mdi-mouse-off:before { + content: "\F37E"; +} + +.mdi-mouse-variant:before { + content: "\F37F"; +} + +.mdi-mouse-variant-off:before { + content: "\F380"; +} + +.mdi-move-resize:before { + content: "\F655"; +} + +.mdi-move-resize-variant:before { + content: "\F656"; +} + +.mdi-movie:before { + content: "\F381"; +} + +.mdi-multiplication:before { + content: "\F382"; +} + +.mdi-multiplication-box:before { + content: "\F383"; +} + +.mdi-music-box:before { + content: "\F384"; +} + +.mdi-music-box-outline:before { + content: "\F385"; +} + +.mdi-music-circle:before { + content: "\F386"; +} + +.mdi-music-note:before { + content: "\F387"; +} + +.mdi-music-note-bluetooth:before { + content: "\F5FE"; +} + +.mdi-music-note-bluetooth-off:before { + content: "\F5FF"; +} + +.mdi-music-note-eighth:before { + content: "\F388"; +} + +.mdi-music-note-half:before { + content: "\F389"; +} + +.mdi-music-note-off:before { + content: "\F38A"; +} + +.mdi-music-note-quarter:before { + content: "\F38B"; +} + +.mdi-music-note-sixteenth:before { + content: "\F38C"; +} + +.mdi-music-note-whole:before { + content: "\F38D"; +} + +.mdi-nature:before { + content: "\F38E"; +} + +.mdi-nature-people:before { + content: "\F38F"; +} + +.mdi-navigation:before { + content: "\F390"; +} + +.mdi-near-me:before { + content: "\F5CD"; +} + +.mdi-needle:before { + content: "\F391"; +} + +.mdi-nest-protect:before { + content: "\F392"; +} + +.mdi-nest-thermostat:before { + content: "\F393"; +} + +.mdi-new-box:before { + content: "\F394"; +} + +.mdi-newspaper:before { + content: "\F395"; +} + +.mdi-nfc:before { + content: "\F396"; +} + +.mdi-nfc-tap:before { + content: "\F397"; +} + +.mdi-nfc-variant:before { + content: "\F398"; +} + +.mdi-nodejs:before { + content: "\F399"; +} + +.mdi-note:before { + content: "\F39A"; +} + +.mdi-note-outline:before { + content: "\F39B"; +} + +.mdi-note-plus:before { + content: "\F39C"; +} + +.mdi-note-plus-outline:before { + content: "\F39D"; +} + +.mdi-note-text:before { + content: "\F39E"; +} + +.mdi-notification-clear-all:before { + content: "\F39F"; +} + +.mdi-numeric:before { + content: "\F3A0"; +} + +.mdi-numeric-0-box:before { + content: "\F3A1"; +} + +.mdi-numeric-0-box-multiple-outline:before { + content: "\F3A2"; +} + +.mdi-numeric-0-box-outline:before { + content: "\F3A3"; +} + +.mdi-numeric-1-box:before { + content: "\F3A4"; +} + +.mdi-numeric-1-box-multiple-outline:before { + content: "\F3A5"; +} + +.mdi-numeric-1-box-outline:before { + content: "\F3A6"; +} + +.mdi-numeric-2-box:before { + content: "\F3A7"; +} + +.mdi-numeric-2-box-multiple-outline:before { + content: "\F3A8"; +} + +.mdi-numeric-2-box-outline:before { + content: "\F3A9"; +} + +.mdi-numeric-3-box:before { + content: "\F3AA"; +} + +.mdi-numeric-3-box-multiple-outline:before { + content: "\F3AB"; +} + +.mdi-numeric-3-box-outline:before { + content: "\F3AC"; +} + +.mdi-numeric-4-box:before { + content: "\F3AD"; +} + +.mdi-numeric-4-box-multiple-outline:before { + content: "\F3AE"; +} + +.mdi-numeric-4-box-outline:before { + content: "\F3AF"; +} + +.mdi-numeric-5-box:before { + content: "\F3B0"; +} + +.mdi-numeric-5-box-multiple-outline:before { + content: "\F3B1"; +} + +.mdi-numeric-5-box-outline:before { + content: "\F3B2"; +} + +.mdi-numeric-6-box:before { + content: "\F3B3"; +} + +.mdi-numeric-6-box-multiple-outline:before { + content: "\F3B4"; +} + +.mdi-numeric-6-box-outline:before { + content: "\F3B5"; +} + +.mdi-numeric-7-box:before { + content: "\F3B6"; +} + +.mdi-numeric-7-box-multiple-outline:before { + content: "\F3B7"; +} + +.mdi-numeric-7-box-outline:before { + content: "\F3B8"; +} + +.mdi-numeric-8-box:before { + content: "\F3B9"; +} + +.mdi-numeric-8-box-multiple-outline:before { + content: "\F3BA"; +} + +.mdi-numeric-8-box-outline:before { + content: "\F3BB"; +} + +.mdi-numeric-9-box:before { + content: "\F3BC"; +} + +.mdi-numeric-9-box-multiple-outline:before { + content: "\F3BD"; +} + +.mdi-numeric-9-box-outline:before { + content: "\F3BE"; +} + +.mdi-numeric-9-plus-box:before { + content: "\F3BF"; +} + +.mdi-numeric-9-plus-box-multiple-outline:before { + content: "\F3C0"; +} + +.mdi-numeric-9-plus-box-outline:before { + content: "\F3C1"; +} + +.mdi-nutrition:before { + content: "\F3C2"; +} + +.mdi-octagon:before { + content: "\F3C3"; +} + +.mdi-octagon-outline:before { + content: "\F3C4"; +} + +.mdi-odnoklassniki:before { + content: "\F3C5"; +} + +.mdi-office:before { + content: "\F3C6"; +} + +.mdi-oil:before { + content: "\F3C7"; +} + +.mdi-oil-temperature:before { + content: "\F3C8"; +} + +.mdi-omega:before { + content: "\F3C9"; +} + +.mdi-onedrive:before { + content: "\F3CA"; +} + +.mdi-opacity:before { + content: "\F5CC"; +} + +.mdi-open-in-app:before { + content: "\F3CB"; +} + +.mdi-open-in-new:before { + content: "\F3CC"; +} + +.mdi-openid:before { + content: "\F3CD"; +} + +.mdi-opera:before { + content: "\F3CE"; +} + +.mdi-ornament:before { + content: "\F3CF"; +} + +.mdi-ornament-variant:before { + content: "\F3D0"; +} + +.mdi-outbox:before { + content: "\F3D1"; +} + +.mdi-owl:before { + content: "\F3D2"; +} + +.mdi-package:before { + content: "\F3D3"; +} + +.mdi-package-down:before { + content: "\F3D4"; +} + +.mdi-package-up:before { + content: "\F3D5"; +} + +.mdi-package-variant:before { + content: "\F3D6"; +} + +.mdi-package-variant-closed:before { + content: "\F3D7"; +} + +.mdi-page-first:before { + content: "\F600"; +} + +.mdi-page-last:before { + content: "\F601"; +} + +.mdi-palette:before { + content: "\F3D8"; +} + +.mdi-palette-advanced:before { + content: "\F3D9"; +} + +.mdi-panda:before { + content: "\F3DA"; +} + +.mdi-pandora:before { + content: "\F3DB"; +} + +.mdi-panorama:before { + content: "\F3DC"; +} + +.mdi-panorama-fisheye:before { + content: "\F3DD"; +} + +.mdi-panorama-horizontal:before { + content: "\F3DE"; +} + +.mdi-panorama-vertical:before { + content: "\F3DF"; +} + +.mdi-panorama-wide-angle:before { + content: "\F3E0"; +} + +.mdi-paper-cut-vertical:before { + content: "\F3E1"; +} + +.mdi-paperclip:before { + content: "\F3E2"; +} + +.mdi-parking:before { + content: "\F3E3"; +} + +.mdi-pause:before { + content: "\F3E4"; +} + +.mdi-pause-circle:before { + content: "\F3E5"; +} + +.mdi-pause-circle-outline:before { + content: "\F3E6"; +} + +.mdi-pause-octagon:before { + content: "\F3E7"; +} + +.mdi-pause-octagon-outline:before { + content: "\F3E8"; +} + +.mdi-paw:before { + content: "\F3E9"; +} + +.mdi-paw-off:before { + content: "\F657"; +} + +.mdi-pen:before { + content: "\F3EA"; +} + +.mdi-pencil:before { + content: "\F3EB"; +} + +.mdi-pencil-box:before { + content: "\F3EC"; +} + +.mdi-pencil-box-outline:before { + content: "\F3ED"; +} + +.mdi-pencil-lock:before { + content: "\F3EE"; +} + +.mdi-pencil-off:before { + content: "\F3EF"; +} + +.mdi-percent:before { + content: "\F3F0"; +} + +.mdi-pharmacy:before { + content: "\F3F1"; +} + +.mdi-phone:before { + content: "\F3F2"; +} + +.mdi-phone-bluetooth:before { + content: "\F3F3"; +} + +.mdi-phone-classic:before { + content: "\F602"; +} + +.mdi-phone-forward:before { + content: "\F3F4"; +} + +.mdi-phone-hangup:before { + content: "\F3F5"; +} + +.mdi-phone-in-talk:before { + content: "\F3F6"; +} + +.mdi-phone-incoming:before { + content: "\F3F7"; +} + +.mdi-phone-locked:before { + content: "\F3F8"; +} + +.mdi-phone-log:before { + content: "\F3F9"; +} + +.mdi-phone-minus:before { + content: "\F658"; +} + +.mdi-phone-missed:before { + content: "\F3FA"; +} + +.mdi-phone-outgoing:before { + content: "\F3FB"; +} + +.mdi-phone-paused:before { + content: "\F3FC"; +} + +.mdi-phone-plus:before { + content: "\F659"; +} + +.mdi-phone-settings:before { + content: "\F3FD"; +} + +.mdi-phone-voip:before { + content: "\F3FE"; +} + +.mdi-pi:before { + content: "\F3FF"; +} + +.mdi-pi-box:before { + content: "\F400"; +} + +.mdi-pig:before { + content: "\F401"; +} + +.mdi-pill:before { + content: "\F402"; +} + +.mdi-pin:before { + content: "\F403"; +} + +.mdi-pin-off:before { + content: "\F404"; +} + +.mdi-pine-tree:before { + content: "\F405"; +} + +.mdi-pine-tree-box:before { + content: "\F406"; +} + +.mdi-pinterest:before { + content: "\F407"; +} + +.mdi-pinterest-box:before { + content: "\F408"; +} + +.mdi-pizza:before { + content: "\F409"; +} + +.mdi-play:before { + content: "\F40A"; +} + +.mdi-play-box-outline:before { + content: "\F40B"; +} + +.mdi-play-circle:before { + content: "\F40C"; +} + +.mdi-play-circle-outline:before { + content: "\F40D"; +} + +.mdi-play-pause:before { + content: "\F40E"; +} + +.mdi-play-protected-content:before { + content: "\F40F"; +} + +.mdi-playlist-check:before { + content: "\F5C7"; +} + +.mdi-playlist-minus:before { + content: "\F410"; +} + +.mdi-playlist-play:before { + content: "\F411"; +} + +.mdi-playlist-plus:before { + content: "\F412"; +} + +.mdi-playlist-remove:before { + content: "\F413"; +} + +.mdi-playstation:before { + content: "\F414"; +} + +.mdi-plus:before { + content: "\F415"; +} + +.mdi-plus-box:before { + content: "\F416"; +} + +.mdi-plus-circle:before { + content: "\F417"; +} + +.mdi-plus-circle-multiple-outline:before { + content: "\F418"; +} + +.mdi-plus-circle-outline:before { + content: "\F419"; +} + +.mdi-plus-network:before { + content: "\F41A"; +} + +.mdi-plus-one:before { + content: "\F41B"; +} + +.mdi-pocket:before { + content: "\F41C"; +} + +.mdi-pokeball:before { + content: "\F41D"; +} + +.mdi-polaroid:before { + content: "\F41E"; +} + +.mdi-poll:before { + content: "\F41F"; +} + +.mdi-poll-box:before { + content: "\F420"; +} + +.mdi-polymer:before { + content: "\F421"; +} + +.mdi-pool:before { + content: "\F606"; +} + +.mdi-popcorn:before { + content: "\F422"; +} + +.mdi-pot:before { + content: "\F65A"; +} + +.mdi-pot-mix:before { + content: "\F65B"; +} + +.mdi-pound:before { + content: "\F423"; +} + +.mdi-pound-box:before { + content: "\F424"; +} + +.mdi-power:before { + content: "\F425"; +} + +.mdi-power-settings:before { + content: "\F426"; +} + +.mdi-power-socket:before { + content: "\F427"; +} + +.mdi-presentation:before { + content: "\F428"; +} + +.mdi-presentation-play:before { + content: "\F429"; +} + +.mdi-printer:before { + content: "\F42A"; +} + +.mdi-printer-3d:before { + content: "\F42B"; +} + +.mdi-printer-alert:before { + content: "\F42C"; +} + +.mdi-priority-high:before { + content: "\F603"; +} + +.mdi-priority-low:before { + content: "\F604"; +} + +.mdi-professional-hexagon:before { + content: "\F42D"; +} + +.mdi-projector:before { + content: "\F42E"; +} + +.mdi-projector-screen:before { + content: "\F42F"; +} + +.mdi-pulse:before { + content: "\F430"; +} + +.mdi-puzzle:before { + content: "\F431"; +} + +.mdi-qqchat:before { + content: "\F605"; +} + +.mdi-qrcode:before { + content: "\F432"; +} + +.mdi-qrcode-scan:before { + content: "\F433"; +} + +.mdi-quadcopter:before { + content: "\F434"; +} + +.mdi-quality-high:before { + content: "\F435"; +} + +.mdi-quicktime:before { + content: "\F436"; +} + +.mdi-radar:before { + content: "\F437"; +} + +.mdi-radiator:before { + content: "\F438"; +} + +.mdi-radio:before { + content: "\F439"; +} + +.mdi-radio-handheld:before { + content: "\F43A"; +} + +.mdi-radio-tower:before { + content: "\F43B"; +} + +.mdi-radioactive:before { + content: "\F43C"; +} + +.mdi-radiobox-blank:before { + content: "\F43D"; +} + +.mdi-radiobox-marked:before { + content: "\F43E"; +} + +.mdi-raspberrypi:before { + content: "\F43F"; +} + +.mdi-ray-end:before { + content: "\F440"; +} + +.mdi-ray-end-arrow:before { + content: "\F441"; +} + +.mdi-ray-start:before { + content: "\F442"; +} + +.mdi-ray-start-arrow:before { + content: "\F443"; +} + +.mdi-ray-start-end:before { + content: "\F444"; +} + +.mdi-ray-vertex:before { + content: "\F445"; +} + +.mdi-rdio:before { + content: "\F446"; +} + +.mdi-read:before { + content: "\F447"; +} + +.mdi-readability:before { + content: "\F448"; +} + +.mdi-receipt:before { + content: "\F449"; +} + +.mdi-record:before { + content: "\F44A"; +} + +.mdi-record-rec:before { + content: "\F44B"; +} + +.mdi-recycle:before { + content: "\F44C"; +} + +.mdi-reddit:before { + content: "\F44D"; +} + +.mdi-redo:before { + content: "\F44E"; +} + +.mdi-redo-variant:before { + content: "\F44F"; +} + +.mdi-refresh:before { + content: "\F450"; +} + +.mdi-regex:before { + content: "\F451"; +} + +.mdi-relative-scale:before { + content: "\F452"; +} + +.mdi-reload:before { + content: "\F453"; +} + +.mdi-remote:before { + content: "\F454"; +} + +.mdi-rename-box:before { + content: "\F455"; +} + +.mdi-repeat:before { + content: "\F456"; +} + +.mdi-repeat-off:before { + content: "\F457"; +} + +.mdi-repeat-once:before { + content: "\F458"; +} + +.mdi-replay:before { + content: "\F459"; +} + +.mdi-reply:before { + content: "\F45A"; +} + +.mdi-reply-all:before { + content: "\F45B"; +} + +.mdi-reproduction:before { + content: "\F45C"; +} + +.mdi-resize-bottom-right:before { + content: "\F45D"; +} + +.mdi-responsive:before { + content: "\F45E"; +} + +.mdi-rewind:before { + content: "\F45F"; +} + +.mdi-ribbon:before { + content: "\F460"; +} + +.mdi-road:before { + content: "\F461"; +} + +.mdi-road-variant:before { + content: "\F462"; +} + +.mdi-rocket:before { + content: "\F463"; +} + +.mdi-rotate-3d:before { + content: "\F464"; +} + +.mdi-rotate-left:before { + content: "\F465"; +} + +.mdi-rotate-left-variant:before { + content: "\F466"; +} + +.mdi-rotate-right:before { + content: "\F467"; +} + +.mdi-rotate-right-variant:before { + content: "\F468"; +} + +.mdi-rounded-corner:before { + content: "\F607"; +} + +.mdi-router-wireless:before { + content: "\F469"; +} + +.mdi-routes:before { + content: "\F46A"; +} + +.mdi-rowing:before { + content: "\F608"; +} + +.mdi-rss:before { + content: "\F46B"; +} + +.mdi-rss-box:before { + content: "\F46C"; +} + +.mdi-ruler:before { + content: "\F46D"; +} + +.mdi-run:before { + content: "\F46E"; +} + +.mdi-sale:before { + content: "\F46F"; +} + +.mdi-satellite:before { + content: "\F470"; +} + +.mdi-satellite-variant:before { + content: "\F471"; +} + +.mdi-saxophone:before { + content: "\F609"; +} + +.mdi-scale:before { + content: "\F472"; +} + +.mdi-scale-balance:before { + content: "\F5D1"; +} + +.mdi-scale-bathroom:before { + content: "\F473"; +} + +.mdi-school:before { + content: "\F474"; +} + +.mdi-screen-rotation:before { + content: "\F475"; +} + +.mdi-screen-rotation-lock:before { + content: "\F476"; +} + +.mdi-screwdriver:before { + content: "\F477"; +} + +.mdi-script:before { + content: "\F478"; +} + +.mdi-sd:before { + content: "\F479"; +} + +.mdi-seal:before { + content: "\F47A"; +} + +.mdi-seat-flat:before { + content: "\F47B"; +} + +.mdi-seat-flat-angled:before { + content: "\F47C"; +} + +.mdi-seat-individual-suite:before { + content: "\F47D"; +} + +.mdi-seat-legroom-extra:before { + content: "\F47E"; +} + +.mdi-seat-legroom-normal:before { + content: "\F47F"; +} + +.mdi-seat-legroom-reduced:before { + content: "\F480"; +} + +.mdi-seat-recline-extra:before { + content: "\F481"; +} + +.mdi-seat-recline-normal:before { + content: "\F482"; +} + +.mdi-security:before { + content: "\F483"; +} + +.mdi-security-network:before { + content: "\F484"; +} + +.mdi-select:before { + content: "\F485"; +} + +.mdi-select-all:before { + content: "\F486"; +} + +.mdi-select-inverse:before { + content: "\F487"; +} + +.mdi-select-off:before { + content: "\F488"; +} + +.mdi-selection:before { + content: "\F489"; +} + +.mdi-send:before { + content: "\F48A"; +} + +.mdi-serial-port:before { + content: "\F65C"; +} + +.mdi-server:before { + content: "\F48B"; +} + +.mdi-server-minus:before { + content: "\F48C"; +} + +.mdi-server-network:before { + content: "\F48D"; +} + +.mdi-server-network-off:before { + content: "\F48E"; +} + +.mdi-server-off:before { + content: "\F48F"; +} + +.mdi-server-plus:before { + content: "\F490"; +} + +.mdi-server-remove:before { + content: "\F491"; +} + +.mdi-server-security:before { + content: "\F492"; +} + +.mdi-settings:before { + content: "\F493"; +} + +.mdi-settings-box:before { + content: "\F494"; +} + +.mdi-shape-circle-plus:before { + content: "\F65D"; +} + +.mdi-shape-plus:before { + content: "\F495"; +} + +.mdi-shape-polygon-plus:before { + content: "\F65E"; +} + +.mdi-shape-rectangle-plus:before { + content: "\F65F"; +} + +.mdi-shape-square-plus:before { + content: "\F660"; +} + +.mdi-share:before { + content: "\F496"; +} + +.mdi-share-variant:before { + content: "\F497"; +} + +.mdi-shield:before { + content: "\F498"; +} + +.mdi-shield-outline:before { + content: "\F499"; +} + +.mdi-shopping:before { + content: "\F49A"; +} + +.mdi-shopping-music:before { + content: "\F49B"; +} + +.mdi-shredder:before { + content: "\F49C"; +} + +.mdi-shuffle:before { + content: "\F49D"; +} + +.mdi-shuffle-disabled:before { + content: "\F49E"; +} + +.mdi-shuffle-variant:before { + content: "\F49F"; +} + +.mdi-sigma:before { + content: "\F4A0"; +} + +.mdi-sigma-lower:before { + content: "\F62B"; +} + +.mdi-sign-caution:before { + content: "\F4A1"; +} + +.mdi-signal:before { + content: "\F4A2"; +} + +.mdi-signal-variant:before { + content: "\F60A"; +} + +.mdi-silverware:before { + content: "\F4A3"; +} + +.mdi-silverware-fork:before { + content: "\F4A4"; +} + +.mdi-silverware-spoon:before { + content: "\F4A5"; +} + +.mdi-silverware-variant:before { + content: "\F4A6"; +} + +.mdi-sim:before { + content: "\F4A7"; +} + +.mdi-sim-alert:before { + content: "\F4A8"; +} + +.mdi-sim-off:before { + content: "\F4A9"; +} + +.mdi-sitemap:before { + content: "\F4AA"; +} + +.mdi-skip-backward:before { + content: "\F4AB"; +} + +.mdi-skip-forward:before { + content: "\F4AC"; +} + +.mdi-skip-next:before { + content: "\F4AD"; +} + +.mdi-skip-next-circle:before { + content: "\F661"; +} + +.mdi-skip-next-circle-outline:before { + content: "\F662"; +} + +.mdi-skip-previous:before { + content: "\F4AE"; +} + +.mdi-skip-previous-circle:before { + content: "\F663"; +} + +.mdi-skip-previous-circle-outline:before { + content: "\F664"; +} + +.mdi-skype:before { + content: "\F4AF"; +} + +.mdi-skype-business:before { + content: "\F4B0"; +} + +.mdi-slack:before { + content: "\F4B1"; +} + +.mdi-sleep:before { + content: "\F4B2"; +} + +.mdi-sleep-off:before { + content: "\F4B3"; +} + +.mdi-smoking:before { + content: "\F4B4"; +} + +.mdi-smoking-off:before { + content: "\F4B5"; +} + +.mdi-snapchat:before { + content: "\F4B6"; +} + +.mdi-snowman:before { + content: "\F4B7"; +} + +.mdi-soccer:before { + content: "\F4B8"; +} + +.mdi-sofa:before { + content: "\F4B9"; +} + +.mdi-sort:before { + content: "\F4BA"; +} + +.mdi-sort-alphabetical:before { + content: "\F4BB"; +} + +.mdi-sort-ascending:before { + content: "\F4BC"; +} + +.mdi-sort-descending:before { + content: "\F4BD"; +} + +.mdi-sort-numeric:before { + content: "\F4BE"; +} + +.mdi-sort-variant:before { + content: "\F4BF"; +} + +.mdi-soundcloud:before { + content: "\F4C0"; +} + +.mdi-source-branch:before { + content: "\F62C"; +} + +.mdi-source-fork:before { + content: "\F4C1"; +} + +.mdi-source-merge:before { + content: "\F62D"; +} + +.mdi-source-pull:before { + content: "\F4C2"; +} + +.mdi-speaker:before { + content: "\F4C3"; +} + +.mdi-speaker-off:before { + content: "\F4C4"; +} + +.mdi-speedometer:before { + content: "\F4C5"; +} + +.mdi-spellcheck:before { + content: "\F4C6"; +} + +.mdi-spotify:before { + content: "\F4C7"; +} + +.mdi-spotlight:before { + content: "\F4C8"; +} + +.mdi-spotlight-beam:before { + content: "\F4C9"; +} + +.mdi-spray:before { + content: "\F665"; +} + +.mdi-square-inc:before { + content: "\F4CA"; +} + +.mdi-square-inc-cash:before { + content: "\F4CB"; +} + +.mdi-stackexchange:before { + content: "\F60B"; +} + +.mdi-stackoverflow:before { + content: "\F4CC"; +} + +.mdi-stairs:before { + content: "\F4CD"; +} + +.mdi-star:before { + content: "\F4CE"; +} + +.mdi-star-circle:before { + content: "\F4CF"; +} + +.mdi-star-half:before { + content: "\F4D0"; +} + +.mdi-star-off:before { + content: "\F4D1"; +} + +.mdi-star-outline:before { + content: "\F4D2"; +} + +.mdi-steam:before { + content: "\F4D3"; +} + +.mdi-steering:before { + content: "\F4D4"; +} + +.mdi-step-backward:before { + content: "\F4D5"; +} + +.mdi-step-backward-2:before { + content: "\F4D6"; +} + +.mdi-step-forward:before { + content: "\F4D7"; +} + +.mdi-step-forward-2:before { + content: "\F4D8"; +} + +.mdi-stethoscope:before { + content: "\F4D9"; +} + +.mdi-sticker:before { + content: "\F5D0"; +} + +.mdi-stocking:before { + content: "\F4DA"; +} + +.mdi-stop:before { + content: "\F4DB"; +} + +.mdi-stop-circle:before { + content: "\F666"; +} + +.mdi-stop-circle-outline:before { + content: "\F667"; +} + +.mdi-store:before { + content: "\F4DC"; +} + +.mdi-store-24-hour:before { + content: "\F4DD"; +} + +.mdi-stove:before { + content: "\F4DE"; +} + +.mdi-subdirectory-arrow-left:before { + content: "\F60C"; +} + +.mdi-subdirectory-arrow-right:before { + content: "\F60D"; +} + +.mdi-subway:before { + content: "\F4DF"; +} + +.mdi-sunglasses:before { + content: "\F4E0"; +} + +.mdi-surround-sound:before { + content: "\F5C5"; +} + +.mdi-swap-horizontal:before { + content: "\F4E1"; +} + +.mdi-swap-vertical:before { + content: "\F4E2"; +} + +.mdi-swim:before { + content: "\F4E3"; +} + +.mdi-switch:before { + content: "\F4E4"; +} + +.mdi-sword:before { + content: "\F4E5"; +} + +.mdi-sync:before { + content: "\F4E6"; +} + +.mdi-sync-alert:before { + content: "\F4E7"; +} + +.mdi-sync-off:before { + content: "\F4E8"; +} + +.mdi-tab:before { + content: "\F4E9"; +} + +.mdi-tab-unselected:before { + content: "\F4EA"; +} + +.mdi-table:before { + content: "\F4EB"; +} + +.mdi-table-column-plus-after:before { + content: "\F4EC"; +} + +.mdi-table-column-plus-before:before { + content: "\F4ED"; +} + +.mdi-table-column-remove:before { + content: "\F4EE"; +} + +.mdi-table-column-width:before { + content: "\F4EF"; +} + +.mdi-table-edit:before { + content: "\F4F0"; +} + +.mdi-table-large:before { + content: "\F4F1"; +} + +.mdi-table-row-height:before { + content: "\F4F2"; +} + +.mdi-table-row-plus-after:before { + content: "\F4F3"; +} + +.mdi-table-row-plus-before:before { + content: "\F4F4"; +} + +.mdi-table-row-remove:before { + content: "\F4F5"; +} + +.mdi-tablet:before { + content: "\F4F6"; +} + +.mdi-tablet-android:before { + content: "\F4F7"; +} + +.mdi-tablet-ipad:before { + content: "\F4F8"; +} + +.mdi-tag:before { + content: "\F4F9"; +} + +.mdi-tag-faces:before { + content: "\F4FA"; +} + +.mdi-tag-multiple:before { + content: "\F4FB"; +} + +.mdi-tag-outline:before { + content: "\F4FC"; +} + +.mdi-tag-text-outline:before { + content: "\F4FD"; +} + +.mdi-target:before { + content: "\F4FE"; +} + +.mdi-taxi:before { + content: "\F4FF"; +} + +.mdi-teamviewer:before { + content: "\F500"; +} + +.mdi-telegram:before { + content: "\F501"; +} + +.mdi-television:before { + content: "\F502"; +} + +.mdi-television-guide:before { + content: "\F503"; +} + +.mdi-temperature-celsius:before { + content: "\F504"; +} + +.mdi-temperature-fahrenheit:before { + content: "\F505"; +} + +.mdi-temperature-kelvin:before { + content: "\F506"; +} + +.mdi-tennis:before { + content: "\F507"; +} + +.mdi-tent:before { + content: "\F508"; +} + +.mdi-terrain:before { + content: "\F509"; +} + +.mdi-test-tube:before { + content: "\F668"; +} + +.mdi-text-shadow:before { + content: "\F669"; +} + +.mdi-text-to-speech:before { + content: "\F50A"; +} + +.mdi-text-to-speech-off:before { + content: "\F50B"; +} + +.mdi-textbox:before { + content: "\F60E"; +} + +.mdi-texture:before { + content: "\F50C"; +} + +.mdi-theater:before { + content: "\F50D"; +} + +.mdi-theme-light-dark:before { + content: "\F50E"; +} + +.mdi-thermometer:before { + content: "\F50F"; +} + +.mdi-thermometer-lines:before { + content: "\F510"; +} + +.mdi-thumb-down:before { + content: "\F511"; +} + +.mdi-thumb-down-outline:before { + content: "\F512"; +} + +.mdi-thumb-up:before { + content: "\F513"; +} + +.mdi-thumb-up-outline:before { + content: "\F514"; +} + +.mdi-thumbs-up-down:before { + content: "\F515"; +} + +.mdi-ticket:before { + content: "\F516"; +} + +.mdi-ticket-account:before { + content: "\F517"; +} + +.mdi-ticket-confirmation:before { + content: "\F518"; +} + +.mdi-tie:before { + content: "\F519"; +} + +.mdi-timelapse:before { + content: "\F51A"; +} + +.mdi-timer:before { + content: "\F51B"; +} + +.mdi-timer-10:before { + content: "\F51C"; +} + +.mdi-timer-3:before { + content: "\F51D"; +} + +.mdi-timer-off:before { + content: "\F51E"; +} + +.mdi-timer-sand:before { + content: "\F51F"; +} + +.mdi-timetable:before { + content: "\F520"; +} + +.mdi-toggle-switch:before { + content: "\F521"; +} + +.mdi-toggle-switch-off:before { + content: "\F522"; +} + +.mdi-tooltip:before { + content: "\F523"; +} + +.mdi-tooltip-edit:before { + content: "\F524"; +} + +.mdi-tooltip-image:before { + content: "\F525"; +} + +.mdi-tooltip-outline:before { + content: "\F526"; +} + +.mdi-tooltip-outline-plus:before { + content: "\F527"; +} + +.mdi-tooltip-text:before { + content: "\F528"; +} + +.mdi-tooth:before { + content: "\F529"; +} + +.mdi-tor:before { + content: "\F52A"; +} + +.mdi-traffic-light:before { + content: "\F52B"; +} + +.mdi-train:before { + content: "\F52C"; +} + +.mdi-tram:before { + content: "\F52D"; +} + +.mdi-transcribe:before { + content: "\F52E"; +} + +.mdi-transcribe-close:before { + content: "\F52F"; +} + +.mdi-transfer:before { + content: "\F530"; +} + +.mdi-translate:before { + content: "\F5CA"; +} + +.mdi-tree:before { + content: "\F531"; +} + +.mdi-trello:before { + content: "\F532"; +} + +.mdi-trending-down:before { + content: "\F533"; +} + +.mdi-trending-neutral:before { + content: "\F534"; +} + +.mdi-trending-up:before { + content: "\F535"; +} + +.mdi-triangle:before { + content: "\F536"; +} + +.mdi-triangle-outline:before { + content: "\F537"; +} + +.mdi-trophy:before { + content: "\F538"; +} + +.mdi-trophy-award:before { + content: "\F539"; +} + +.mdi-trophy-outline:before { + content: "\F53A"; +} + +.mdi-trophy-variant:before { + content: "\F53B"; +} + +.mdi-trophy-variant-outline:before { + content: "\F53C"; +} + +.mdi-truck:before { + content: "\F53D"; +} + +.mdi-truck-delivery:before { + content: "\F53E"; +} + +.mdi-tshirt-crew:before { + content: "\F53F"; +} + +.mdi-tshirt-v:before { + content: "\F540"; +} + +.mdi-tumblr:before { + content: "\F541"; +} + +.mdi-tumblr-reblog:before { + content: "\F542"; +} + +.mdi-tune:before { + content: "\F62E"; +} + +.mdi-tune-vertical:before { + content: "\F66A"; +} + +.mdi-twitch:before { + content: "\F543"; +} + +.mdi-twitter:before { + content: "\F544"; +} + +.mdi-twitter-box:before { + content: "\F545"; +} + +.mdi-twitter-circle:before { + content: "\F546"; +} + +.mdi-twitter-retweet:before { + content: "\F547"; +} + +.mdi-ubuntu:before { + content: "\F548"; +} + +.mdi-umbraco:before { + content: "\F549"; +} + +.mdi-umbrella:before { + content: "\F54A"; +} + +.mdi-umbrella-outline:before { + content: "\F54B"; +} + +.mdi-undo:before { + content: "\F54C"; +} + +.mdi-undo-variant:before { + content: "\F54D"; +} + +.mdi-unfold-less:before { + content: "\F54E"; +} + +.mdi-unfold-more:before { + content: "\F54F"; +} + +.mdi-ungroup:before { + content: "\F550"; +} + +.mdi-untappd:before { + content: "\F551"; +} + +.mdi-upload:before { + content: "\F552"; +} + +.mdi-usb:before { + content: "\F553"; +} + +.mdi-vector-arrange-above:before { + content: "\F554"; +} + +.mdi-vector-arrange-below:before { + content: "\F555"; +} + +.mdi-vector-circle:before { + content: "\F556"; +} + +.mdi-vector-circle-variant:before { + content: "\F557"; +} + +.mdi-vector-combine:before { + content: "\F558"; +} + +.mdi-vector-curve:before { + content: "\F559"; +} + +.mdi-vector-difference:before { + content: "\F55A"; +} + +.mdi-vector-difference-ab:before { + content: "\F55B"; +} + +.mdi-vector-difference-ba:before { + content: "\F55C"; +} + +.mdi-vector-intersection:before { + content: "\F55D"; +} + +.mdi-vector-line:before { + content: "\F55E"; +} + +.mdi-vector-point:before { + content: "\F55F"; +} + +.mdi-vector-polygon:before { + content: "\F560"; +} + +.mdi-vector-polyline:before { + content: "\F561"; +} + +.mdi-vector-rectangle:before { + content: "\F5C6"; +} + +.mdi-vector-selection:before { + content: "\F562"; +} + +.mdi-vector-square:before { + content: "\F001"; +} + +.mdi-vector-triangle:before { + content: "\F563"; +} + +.mdi-vector-union:before { + content: "\F564"; +} + +.mdi-verified:before { + content: "\F565"; +} + +.mdi-vibrate:before { + content: "\F566"; +} + +.mdi-video:before { + content: "\F567"; +} + +.mdi-video-off:before { + content: "\F568"; +} + +.mdi-video-switch:before { + content: "\F569"; +} + +.mdi-view-agenda:before { + content: "\F56A"; +} + +.mdi-view-array:before { + content: "\F56B"; +} + +.mdi-view-carousel:before { + content: "\F56C"; +} + +.mdi-view-column:before { + content: "\F56D"; +} + +.mdi-view-dashboard:before { + content: "\F56E"; +} + +.mdi-view-day:before { + content: "\F56F"; +} + +.mdi-view-grid:before { + content: "\F570"; +} + +.mdi-view-headline:before { + content: "\F571"; +} + +.mdi-view-list:before { + content: "\F572"; +} + +.mdi-view-module:before { + content: "\F573"; +} + +.mdi-view-quilt:before { + content: "\F574"; +} + +.mdi-view-stream:before { + content: "\F575"; +} + +.mdi-view-week:before { + content: "\F576"; +} + +.mdi-vimeo:before { + content: "\F577"; +} + +.mdi-vine:before { + content: "\F578"; +} + +.mdi-violin:before { + content: "\F60F"; +} + +.mdi-visualstudio:before { + content: "\F610"; +} + +.mdi-vk:before { + content: "\F579"; +} + +.mdi-vk-box:before { + content: "\F57A"; +} + +.mdi-vk-circle:before { + content: "\F57B"; +} + +.mdi-vlc:before { + content: "\F57C"; +} + +.mdi-voice:before { + content: "\F5CB"; +} + +.mdi-voicemail:before { + content: "\F57D"; +} + +.mdi-volume-high:before { + content: "\F57E"; +} + +.mdi-volume-low:before { + content: "\F57F"; +} + +.mdi-volume-medium:before { + content: "\F580"; +} + +.mdi-volume-off:before { + content: "\F581"; +} + +.mdi-vpn:before { + content: "\F582"; +} + +.mdi-walk:before { + content: "\F583"; +} + +.mdi-wallet:before { + content: "\F584"; +} + +.mdi-wallet-giftcard:before { + content: "\F585"; +} + +.mdi-wallet-membership:before { + content: "\F586"; +} + +.mdi-wallet-travel:before { + content: "\F587"; +} + +.mdi-wan:before { + content: "\F588"; +} + +.mdi-watch:before { + content: "\F589"; +} + +.mdi-watch-export:before { + content: "\F58A"; +} + +.mdi-watch-import:before { + content: "\F58B"; +} + +.mdi-water:before { + content: "\F58C"; +} + +.mdi-water-off:before { + content: "\F58D"; +} + +.mdi-water-percent:before { + content: "\F58E"; +} + +.mdi-water-pump:before { + content: "\F58F"; +} + +.mdi-watermark:before { + content: "\F612"; +} + +.mdi-weather-cloudy:before { + content: "\F590"; +} + +.mdi-weather-fog:before { + content: "\F591"; +} + +.mdi-weather-hail:before { + content: "\F592"; +} + +.mdi-weather-lightning:before { + content: "\F593"; +} + +.mdi-weather-night:before { + content: "\F594"; +} + +.mdi-weather-partlycloudy:before { + content: "\F595"; +} + +.mdi-weather-pouring:before { + content: "\F596"; +} + +.mdi-weather-rainy:before { + content: "\F597"; +} + +.mdi-weather-snowy:before { + content: "\F598"; +} + +.mdi-weather-sunny:before { + content: "\F599"; +} + +.mdi-weather-sunset:before { + content: "\F59A"; +} + +.mdi-weather-sunset-down:before { + content: "\F59B"; +} + +.mdi-weather-sunset-up:before { + content: "\F59C"; +} + +.mdi-weather-windy:before { + content: "\F59D"; +} + +.mdi-weather-windy-variant:before { + content: "\F59E"; +} + +.mdi-web:before { + content: "\F59F"; +} + +.mdi-webcam:before { + content: "\F5A0"; +} + +.mdi-webhook:before { + content: "\F62F"; +} + +.mdi-wechat:before { + content: "\F611"; +} + +.mdi-weight:before { + content: "\F5A1"; +} + +.mdi-weight-kilogram:before { + content: "\F5A2"; +} + +.mdi-whatsapp:before { + content: "\F5A3"; +} + +.mdi-wheelchair-accessibility:before { + content: "\F5A4"; +} + +.mdi-white-balance-auto:before { + content: "\F5A5"; +} + +.mdi-white-balance-incandescent:before { + content: "\F5A6"; +} + +.mdi-white-balance-iridescent:before { + content: "\F5A7"; +} + +.mdi-white-balance-sunny:before { + content: "\F5A8"; +} + +.mdi-wifi:before { + content: "\F5A9"; +} + +.mdi-wifi-off:before { + content: "\F5AA"; +} + +.mdi-wii:before { + content: "\F5AB"; +} + +.mdi-wikipedia:before { + content: "\F5AC"; +} + +.mdi-window-close:before { + content: "\F5AD"; +} + +.mdi-window-closed:before { + content: "\F5AE"; +} + +.mdi-window-maximize:before { + content: "\F5AF"; +} + +.mdi-window-minimize:before { + content: "\F5B0"; +} + +.mdi-window-open:before { + content: "\F5B1"; +} + +.mdi-window-restore:before { + content: "\F5B2"; +} + +.mdi-windows:before { + content: "\F5B3"; +} + +.mdi-wordpress:before { + content: "\F5B4"; +} + +.mdi-worker:before { + content: "\F5B5"; +} + +.mdi-wrap:before { + content: "\F5B6"; +} + +.mdi-wrench:before { + content: "\F5B7"; +} + +.mdi-wunderlist:before { + content: "\F5B8"; +} + +.mdi-xaml:before { + content: "\F673"; +} + +.mdi-xbox:before { + content: "\F5B9"; +} + +.mdi-xbox-controller:before { + content: "\F5BA"; +} + +.mdi-xbox-controller-off:before { + content: "\F5BB"; +} + +.mdi-xda:before { + content: "\F5BC"; +} + +.mdi-xing:before { + content: "\F5BD"; +} + +.mdi-xing-box:before { + content: "\F5BE"; +} + +.mdi-xing-circle:before { + content: "\F5BF"; +} + +.mdi-xml:before { + content: "\F5C0"; +} + +.mdi-yeast:before { + content: "\F5C1"; +} + +.mdi-yelp:before { + content: "\F5C2"; +} + +.mdi-youtube-play:before { + content: "\F5C3"; +} + +.mdi-zip-box:before { + content: "\F5C4"; +} + +.mdi-18px { + font-size: 18px; +} + +.mdi-24px { + font-size: 24px; +} + +.mdi-36px { + font-size: 36px; +} + +.mdi-48px { + font-size: 48px; +} + +.mdi-dark { + color: rgba(0, 0, 0, 0.54); +} + +.mdi-dark.mdi-inactive { + color: rgba(0, 0, 0, 0.26); +} + +.mdi-light { + color: white; +} + +.mdi-light.mdi-inactive { + color: rgba(255, 255, 255, 0.3); +} + +.mdi-rotate-45 { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.mdi-rotate-90 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.mdi-rotate-135 { + -webkit-transform: rotate(135deg); + -ms-transform: rotate(135deg); + transform: rotate(135deg); +} + +.mdi-rotate-180 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.mdi-rotate-225 { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + transform: rotate(225deg); +} + +.mdi-rotate-270 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.mdi-rotate-315 { + -webkit-transform: rotate(315deg); + -ms-transform: rotate(315deg); + transform: rotate(315deg); +} + +.mdi-flip-horizontal { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + +.mdi-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); + filter: FlipV; + -ms-filter: "FlipV"; +} + +/*# sourceMappingURL=materialdesignicons.css.map */ diff --git a/assets/less/icons/material-design/css/materialdesignicons.css.map b/assets/less/icons/material-design/css/materialdesignicons.css.map new file mode 100644 index 0000000..1413ee3 --- /dev/null +++ b/assets/less/icons/material-design/css/materialdesignicons.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAAA,UAUC;EATC,WAAW,EAAE,uBAAmB;EAChC,GAAG,EAAE,wDAAuE;EAC5E,GAAG,EAAE,iaAA0G;EAK/G,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;;ACTpB,IAAoB;EAClB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,mDAAiE;EACvE,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACNxB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,cAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kDAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mDAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+CAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,cAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,cAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,4BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,cAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,6BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,8BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oCAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,yBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,0BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,qBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,kBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,sBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,2BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,+BAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,oBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,uBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,eAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,iBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,gBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,wBAAmC;EAC/B,OAAO,EAAE,OAAY;;;AADzB,mBAAmC;EAC/B,OAAO,EAAE,OAAY;;;ACF7B,SAA8B;EAAE,SAAS,EAAE,IAAI;;;AAC/C,SAA8B;EAAE,SAAS,EAAE,IAAI;;;AAC/C,SAA8B;EAAE,SAAS,EAAE,IAAI;;;AAC/C,SAA8B;EAAE,SAAS,EAAE,IAAI;;;AAC/C,SAAyB;EAAE,KAAK,EAAE,mBAAmB;;;AACrD,sBAAsC;EAAE,KAAK,EAAE,mBAAmB;;;AAClE,UAA0B;EAAE,KAAK,EAAE,KAAsB;;;AACzD,uBAAuC;EAAE,KAAK,EAAE,wBAAwB;;;AAGpE,cAAsC;EAClC,iBAAiB,EAAE,aAAqB;EACxC,aAAa,EAAE,aAAqB;EACpC,SAAS,EAAE,aAAqB;;;AAHpC,cAAsC;EAClC,iBAAiB,EAAE,aAAqB;EACxC,aAAa,EAAE,aAAqB;EACpC,SAAS,EAAE,aAAqB;;;AAHpC,eAAsC;EAClC,iBAAiB,EAAE,cAAqB;EACxC,aAAa,EAAE,cAAqB;EACpC,SAAS,EAAE,cAAqB;;;AAHpC,eAAsC;EAClC,iBAAiB,EAAE,cAAqB;EACxC,aAAa,EAAE,cAAqB;EACpC,SAAS,EAAE,cAAqB;;;AAHpC,eAAsC;EAClC,iBAAiB,EAAE,cAAqB;EACxC,aAAa,EAAE,cAAqB;EACpC,SAAS,EAAE,cAAqB;;;AAHpC,eAAsC;EAClC,iBAAiB,EAAE,cAAqB;EACxC,aAAa,EAAE,cAAqB;EACpC,SAAS,EAAE,cAAqB;;;AAHpC,eAAsC;EAClC,iBAAiB,EAAE,cAAqB;EACxC,aAAa,EAAE,cAAqB;EACpC,SAAS,EAAE,cAAqB;;;AAGxC,oBAAoC;EAC5B,iBAAiB,EAAE,UAAU;EAC7B,SAAS,EAAE,UAAU;EACrB,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,OAAO;;;AAE3B,kBAAkC;EAC1B,iBAAiB,EAAE,UAAU;EAC7B,SAAS,EAAE,UAAU;EACrB,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,OAAO", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_icons.scss","../scss/_extras.scss"], +"names": [], +"file": "materialdesignicons.css" +} diff --git a/assets/less/icons/material-design/css/materialdesignicons.min.css b/assets/less/icons/material-design/css/materialdesignicons.min.css new file mode 100644 index 0000000..f469d7d --- /dev/null +++ b/assets/less/icons/material-design/css/materialdesignicons.min.css @@ -0,0 +1,2 @@ +/* MaterialDesignIcons.com */@font-face{font-family:"Material Design Icons";src:url("../fonts/materialdesignicons-webfont.eot?v=1.6.50");src:url("../fonts/materialdesignicons-webfont.eot?#iefix&v=1.6.50") format("embedded-opentype"),url("../fonts/materialdesignicons-webfont.woff2?v=1.6.50") format("woff2"),url("../fonts/materialdesignicons-webfont.woff?v=1.6.50") format("woff"),url("../fonts/materialdesignicons-webfont.ttf?v=1.6.50") format("truetype"),url("../fonts/materialdesignicons-webfont.svg?v=1.6.50#materialdesigniconsregular") format("svg");font-weight:normal;font-style:normal}.mdi{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mdi-access-point:before{content:"\F002"}.mdi-access-point-network:before{content:"\F003"}.mdi-account:before{content:"\F004"}.mdi-account-alert:before{content:"\F005"}.mdi-account-box:before{content:"\F006"}.mdi-account-box-outline:before{content:"\F007"}.mdi-account-card-details:before{content:"\F5D2"}.mdi-account-check:before{content:"\F008"}.mdi-account-circle:before{content:"\F009"}.mdi-account-convert:before{content:"\F00A"}.mdi-account-key:before{content:"\F00B"}.mdi-account-location:before{content:"\F00C"}.mdi-account-minus:before{content:"\F00D"}.mdi-account-multiple:before{content:"\F00E"}.mdi-account-multiple-minus:before{content:"\F5D3"}.mdi-account-multiple-outline:before{content:"\F00F"}.mdi-account-multiple-plus:before{content:"\F010"}.mdi-account-network:before{content:"\F011"}.mdi-account-off:before{content:"\F012"}.mdi-account-outline:before{content:"\F013"}.mdi-account-plus:before{content:"\F014"}.mdi-account-remove:before{content:"\F015"}.mdi-account-search:before{content:"\F016"}.mdi-account-settings:before{content:"\F630"}.mdi-account-settings-variant:before{content:"\F631"}.mdi-account-star:before{content:"\F017"}.mdi-account-star-variant:before{content:"\F018"}.mdi-account-switch:before{content:"\F019"}.mdi-adjust:before{content:"\F01A"}.mdi-air-conditioner:before{content:"\F01B"}.mdi-airballoon:before{content:"\F01C"}.mdi-airplane:before{content:"\F01D"}.mdi-airplane-landing:before{content:"\F5D4"}.mdi-airplane-off:before{content:"\F01E"}.mdi-airplane-takeoff:before{content:"\F5D5"}.mdi-airplay:before{content:"\F01F"}.mdi-alarm:before{content:"\F020"}.mdi-alarm-check:before{content:"\F021"}.mdi-alarm-multiple:before{content:"\F022"}.mdi-alarm-off:before{content:"\F023"}.mdi-alarm-plus:before{content:"\F024"}.mdi-album:before{content:"\F025"}.mdi-alert:before{content:"\F026"}.mdi-alert-box:before{content:"\F027"}.mdi-alert-circle:before{content:"\F028"}.mdi-alert-circle-outline:before{content:"\F5D6"}.mdi-alert-octagon:before{content:"\F029"}.mdi-alert-outline:before{content:"\F02A"}.mdi-alpha:before{content:"\F02B"}.mdi-alphabetical:before{content:"\F02C"}.mdi-altimeter:before{content:"\F5D7"}.mdi-amazon:before{content:"\F02D"}.mdi-amazon-clouddrive:before{content:"\F02E"}.mdi-ambulance:before{content:"\F02F"}.mdi-amplifier:before{content:"\F030"}.mdi-anchor:before{content:"\F031"}.mdi-android:before{content:"\F032"}.mdi-android-debug-bridge:before{content:"\F033"}.mdi-android-studio:before{content:"\F034"}.mdi-animation:before{content:"\F5D8"}.mdi-apple:before{content:"\F035"}.mdi-apple-finder:before{content:"\F036"}.mdi-apple-ios:before{content:"\F037"}.mdi-apple-keyboard-caps:before{content:"\F632"}.mdi-apple-keyboard-command:before{content:"\F633"}.mdi-apple-keyboard-control:before{content:"\F634"}.mdi-apple-keyboard-option:before{content:"\F635"}.mdi-apple-keyboard-shift:before{content:"\F636"}.mdi-apple-mobileme:before{content:"\F038"}.mdi-apple-safari:before{content:"\F039"}.mdi-application:before{content:"\F614"}.mdi-appnet:before{content:"\F03A"}.mdi-apps:before{content:"\F03B"}.mdi-archive:before{content:"\F03C"}.mdi-arrange-bring-forward:before{content:"\F03D"}.mdi-arrange-bring-to-front:before{content:"\F03E"}.mdi-arrange-send-backward:before{content:"\F03F"}.mdi-arrange-send-to-back:before{content:"\F040"}.mdi-arrow-all:before{content:"\F041"}.mdi-arrow-bottom-left:before{content:"\F042"}.mdi-arrow-bottom-right:before{content:"\F043"}.mdi-arrow-compress:before{content:"\F615"}.mdi-arrow-compress-all:before{content:"\F044"}.mdi-arrow-down:before{content:"\F045"}.mdi-arrow-down-bold:before{content:"\F046"}.mdi-arrow-down-bold-circle:before{content:"\F047"}.mdi-arrow-down-bold-circle-outline:before{content:"\F048"}.mdi-arrow-down-bold-hexagon-outline:before{content:"\F049"}.mdi-arrow-down-drop-circle:before{content:"\F04A"}.mdi-arrow-down-drop-circle-outline:before{content:"\F04B"}.mdi-arrow-expand:before{content:"\F616"}.mdi-arrow-expand-all:before{content:"\F04C"}.mdi-arrow-left:before{content:"\F04D"}.mdi-arrow-left-bold:before{content:"\F04E"}.mdi-arrow-left-bold-circle:before{content:"\F04F"}.mdi-arrow-left-bold-circle-outline:before{content:"\F050"}.mdi-arrow-left-bold-hexagon-outline:before{content:"\F051"}.mdi-arrow-left-drop-circle:before{content:"\F052"}.mdi-arrow-left-drop-circle-outline:before{content:"\F053"}.mdi-arrow-right:before{content:"\F054"}.mdi-arrow-right-bold:before{content:"\F055"}.mdi-arrow-right-bold-circle:before{content:"\F056"}.mdi-arrow-right-bold-circle-outline:before{content:"\F057"}.mdi-arrow-right-bold-hexagon-outline:before{content:"\F058"}.mdi-arrow-right-drop-circle:before{content:"\F059"}.mdi-arrow-right-drop-circle-outline:before{content:"\F05A"}.mdi-arrow-top-left:before{content:"\F05B"}.mdi-arrow-top-right:before{content:"\F05C"}.mdi-arrow-up:before{content:"\F05D"}.mdi-arrow-up-bold:before{content:"\F05E"}.mdi-arrow-up-bold-circle:before{content:"\F05F"}.mdi-arrow-up-bold-circle-outline:before{content:"\F060"}.mdi-arrow-up-bold-hexagon-outline:before{content:"\F061"}.mdi-arrow-up-drop-circle:before{content:"\F062"}.mdi-arrow-up-drop-circle-outline:before{content:"\F063"}.mdi-assistant:before{content:"\F064"}.mdi-at:before{content:"\F065"}.mdi-attachment:before{content:"\F066"}.mdi-audiobook:before{content:"\F067"}.mdi-auto-fix:before{content:"\F068"}.mdi-auto-upload:before{content:"\F069"}.mdi-autorenew:before{content:"\F06A"}.mdi-av-timer:before{content:"\F06B"}.mdi-baby:before{content:"\F06C"}.mdi-backburger:before{content:"\F06D"}.mdi-backspace:before{content:"\F06E"}.mdi-backup-restore:before{content:"\F06F"}.mdi-bank:before{content:"\F070"}.mdi-barcode:before{content:"\F071"}.mdi-barcode-scan:before{content:"\F072"}.mdi-barley:before{content:"\F073"}.mdi-barrel:before{content:"\F074"}.mdi-basecamp:before{content:"\F075"}.mdi-basket:before{content:"\F076"}.mdi-basket-fill:before{content:"\F077"}.mdi-basket-unfill:before{content:"\F078"}.mdi-battery:before{content:"\F079"}.mdi-battery-10:before{content:"\F07A"}.mdi-battery-20:before{content:"\F07B"}.mdi-battery-30:before{content:"\F07C"}.mdi-battery-40:before{content:"\F07D"}.mdi-battery-50:before{content:"\F07E"}.mdi-battery-60:before{content:"\F07F"}.mdi-battery-70:before{content:"\F080"}.mdi-battery-80:before{content:"\F081"}.mdi-battery-90:before{content:"\F082"}.mdi-battery-alert:before{content:"\F083"}.mdi-battery-charging:before{content:"\F084"}.mdi-battery-charging-100:before{content:"\F085"}.mdi-battery-charging-20:before{content:"\F086"}.mdi-battery-charging-30:before{content:"\F087"}.mdi-battery-charging-40:before{content:"\F088"}.mdi-battery-charging-60:before{content:"\F089"}.mdi-battery-charging-80:before{content:"\F08A"}.mdi-battery-charging-90:before{content:"\F08B"}.mdi-battery-minus:before{content:"\F08C"}.mdi-battery-negative:before{content:"\F08D"}.mdi-battery-outline:before{content:"\F08E"}.mdi-battery-plus:before{content:"\F08F"}.mdi-battery-positive:before{content:"\F090"}.mdi-battery-unknown:before{content:"\F091"}.mdi-beach:before{content:"\F092"}.mdi-beats:before{content:"\F097"}.mdi-beer:before{content:"\F098"}.mdi-behance:before{content:"\F099"}.mdi-bell:before{content:"\F09A"}.mdi-bell-off:before{content:"\F09B"}.mdi-bell-outline:before{content:"\F09C"}.mdi-bell-plus:before{content:"\F09D"}.mdi-bell-ring:before{content:"\F09E"}.mdi-bell-ring-outline:before{content:"\F09F"}.mdi-bell-sleep:before{content:"\F0A0"}.mdi-beta:before{content:"\F0A1"}.mdi-bible:before{content:"\F0A2"}.mdi-bike:before{content:"\F0A3"}.mdi-bing:before{content:"\F0A4"}.mdi-binoculars:before{content:"\F0A5"}.mdi-bio:before{content:"\F0A6"}.mdi-biohazard:before{content:"\F0A7"}.mdi-bitbucket:before{content:"\F0A8"}.mdi-black-mesa:before{content:"\F0A9"}.mdi-blackberry:before{content:"\F0AA"}.mdi-blender:before{content:"\F0AB"}.mdi-blinds:before{content:"\F0AC"}.mdi-block-helper:before{content:"\F0AD"}.mdi-blogger:before{content:"\F0AE"}.mdi-bluetooth:before{content:"\F0AF"}.mdi-bluetooth-audio:before{content:"\F0B0"}.mdi-bluetooth-connect:before{content:"\F0B1"}.mdi-bluetooth-off:before{content:"\F0B2"}.mdi-bluetooth-settings:before{content:"\F0B3"}.mdi-bluetooth-transfer:before{content:"\F0B4"}.mdi-blur:before{content:"\F0B5"}.mdi-blur-linear:before{content:"\F0B6"}.mdi-blur-off:before{content:"\F0B7"}.mdi-blur-radial:before{content:"\F0B8"}.mdi-bone:before{content:"\F0B9"}.mdi-book:before{content:"\F0BA"}.mdi-book-minus:before{content:"\F5D9"}.mdi-book-multiple:before{content:"\F0BB"}.mdi-book-multiple-variant:before{content:"\F0BC"}.mdi-book-open:before{content:"\F0BD"}.mdi-book-open-page-variant:before{content:"\F5DA"}.mdi-book-open-variant:before{content:"\F0BE"}.mdi-book-plus:before{content:"\F5DB"}.mdi-book-variant:before{content:"\F0BF"}.mdi-bookmark:before{content:"\F0C0"}.mdi-bookmark-check:before{content:"\F0C1"}.mdi-bookmark-music:before{content:"\F0C2"}.mdi-bookmark-outline:before{content:"\F0C3"}.mdi-bookmark-plus:before{content:"\F0C5"}.mdi-bookmark-plus-outline:before{content:"\F0C4"}.mdi-bookmark-remove:before{content:"\F0C6"}.mdi-boombox:before{content:"\F5DC"}.mdi-border-all:before{content:"\F0C7"}.mdi-border-bottom:before{content:"\F0C8"}.mdi-border-color:before{content:"\F0C9"}.mdi-border-horizontal:before{content:"\F0CA"}.mdi-border-inside:before{content:"\F0CB"}.mdi-border-left:before{content:"\F0CC"}.mdi-border-none:before{content:"\F0CD"}.mdi-border-outside:before{content:"\F0CE"}.mdi-border-right:before{content:"\F0CF"}.mdi-border-style:before{content:"\F0D0"}.mdi-border-top:before{content:"\F0D1"}.mdi-border-vertical:before{content:"\F0D2"}.mdi-bowl:before{content:"\F617"}.mdi-bowling:before{content:"\F0D3"}.mdi-box:before{content:"\F0D4"}.mdi-box-cutter:before{content:"\F0D5"}.mdi-box-shadow:before{content:"\F637"}.mdi-bridge:before{content:"\F618"}.mdi-briefcase:before{content:"\F0D6"}.mdi-briefcase-check:before{content:"\F0D7"}.mdi-briefcase-download:before{content:"\F0D8"}.mdi-briefcase-upload:before{content:"\F0D9"}.mdi-brightness-1:before{content:"\F0DA"}.mdi-brightness-2:before{content:"\F0DB"}.mdi-brightness-3:before{content:"\F0DC"}.mdi-brightness-4:before{content:"\F0DD"}.mdi-brightness-5:before{content:"\F0DE"}.mdi-brightness-6:before{content:"\F0DF"}.mdi-brightness-7:before{content:"\F0E0"}.mdi-brightness-auto:before{content:"\F0E1"}.mdi-broom:before{content:"\F0E2"}.mdi-brush:before{content:"\F0E3"}.mdi-buffer:before{content:"\F619"}.mdi-bug:before{content:"\F0E4"}.mdi-bulletin-board:before{content:"\F0E5"}.mdi-bullhorn:before{content:"\F0E6"}.mdi-bullseye:before{content:"\F5DD"}.mdi-burst-mode:before{content:"\F5DE"}.mdi-bus:before{content:"\F0E7"}.mdi-cached:before{content:"\F0E8"}.mdi-cake:before{content:"\F0E9"}.mdi-cake-layered:before{content:"\F0EA"}.mdi-cake-variant:before{content:"\F0EB"}.mdi-calculator:before{content:"\F0EC"}.mdi-calendar:before{content:"\F0ED"}.mdi-calendar-blank:before{content:"\F0EE"}.mdi-calendar-check:before{content:"\F0EF"}.mdi-calendar-clock:before{content:"\F0F0"}.mdi-calendar-multiple:before{content:"\F0F1"}.mdi-calendar-multiple-check:before{content:"\F0F2"}.mdi-calendar-plus:before{content:"\F0F3"}.mdi-calendar-remove:before{content:"\F0F4"}.mdi-calendar-text:before{content:"\F0F5"}.mdi-calendar-today:before{content:"\F0F6"}.mdi-call-made:before{content:"\F0F7"}.mdi-call-merge:before{content:"\F0F8"}.mdi-call-missed:before{content:"\F0F9"}.mdi-call-received:before{content:"\F0FA"}.mdi-call-split:before{content:"\F0FB"}.mdi-camcorder:before{content:"\F0FC"}.mdi-camcorder-box:before{content:"\F0FD"}.mdi-camcorder-box-off:before{content:"\F0FE"}.mdi-camcorder-off:before{content:"\F0FF"}.mdi-camera:before{content:"\F100"}.mdi-camera-enhance:before{content:"\F101"}.mdi-camera-front:before{content:"\F102"}.mdi-camera-front-variant:before{content:"\F103"}.mdi-camera-iris:before{content:"\F104"}.mdi-camera-off:before{content:"\F5DF"}.mdi-camera-party-mode:before{content:"\F105"}.mdi-camera-rear:before{content:"\F106"}.mdi-camera-rear-variant:before{content:"\F107"}.mdi-camera-switch:before{content:"\F108"}.mdi-camera-timer:before{content:"\F109"}.mdi-candle:before{content:"\F5E2"}.mdi-candycane:before{content:"\F10A"}.mdi-car:before{content:"\F10B"}.mdi-car-battery:before{content:"\F10C"}.mdi-car-connected:before{content:"\F10D"}.mdi-car-wash:before{content:"\F10E"}.mdi-cards:before{content:"\F638"}.mdi-cards-outline:before{content:"\F639"}.mdi-cards-playing-outline:before{content:"\F63A"}.mdi-carrot:before{content:"\F10F"}.mdi-cart:before{content:"\F110"}.mdi-cart-off:before{content:"\F66B"}.mdi-cart-outline:before{content:"\F111"}.mdi-cart-plus:before{content:"\F112"}.mdi-case-sensitive-alt:before{content:"\F113"}.mdi-cash:before{content:"\F114"}.mdi-cash-100:before{content:"\F115"}.mdi-cash-multiple:before{content:"\F116"}.mdi-cash-usd:before{content:"\F117"}.mdi-cast:before{content:"\F118"}.mdi-cast-connected:before{content:"\F119"}.mdi-castle:before{content:"\F11A"}.mdi-cat:before{content:"\F11B"}.mdi-cellphone:before{content:"\F11C"}.mdi-cellphone-android:before{content:"\F11D"}.mdi-cellphone-basic:before{content:"\F11E"}.mdi-cellphone-dock:before{content:"\F11F"}.mdi-cellphone-iphone:before{content:"\F120"}.mdi-cellphone-link:before{content:"\F121"}.mdi-cellphone-link-off:before{content:"\F122"}.mdi-cellphone-settings:before{content:"\F123"}.mdi-certificate:before{content:"\F124"}.mdi-chair-school:before{content:"\F125"}.mdi-chart-arc:before{content:"\F126"}.mdi-chart-areaspline:before{content:"\F127"}.mdi-chart-bar:before{content:"\F128"}.mdi-chart-bubble:before{content:"\F5E3"}.mdi-chart-gantt:before{content:"\F66C"}.mdi-chart-histogram:before{content:"\F129"}.mdi-chart-line:before{content:"\F12A"}.mdi-chart-pie:before{content:"\F12B"}.mdi-chart-scatterplot-hexbin:before{content:"\F66D"}.mdi-chart-timeline:before{content:"\F66E"}.mdi-check:before{content:"\F12C"}.mdi-check-all:before{content:"\F12D"}.mdi-check-circle:before{content:"\F5E0"}.mdi-check-circle-outline:before{content:"\F5E1"}.mdi-checkbox-blank:before{content:"\F12E"}.mdi-checkbox-blank-circle:before{content:"\F12F"}.mdi-checkbox-blank-circle-outline:before{content:"\F130"}.mdi-checkbox-blank-outline:before{content:"\F131"}.mdi-checkbox-marked:before{content:"\F132"}.mdi-checkbox-marked-circle:before{content:"\F133"}.mdi-checkbox-marked-circle-outline:before{content:"\F134"}.mdi-checkbox-marked-outline:before{content:"\F135"}.mdi-checkbox-multiple-blank:before{content:"\F136"}.mdi-checkbox-multiple-blank-circle:before{content:"\F63B"}.mdi-checkbox-multiple-blank-circle-outline:before{content:"\F63C"}.mdi-checkbox-multiple-blank-outline:before{content:"\F137"}.mdi-checkbox-multiple-marked:before{content:"\F138"}.mdi-checkbox-multiple-marked-circle:before{content:"\F63D"}.mdi-checkbox-multiple-marked-circle-outline:before{content:"\F63E"}.mdi-checkbox-multiple-marked-outline:before{content:"\F139"}.mdi-checkerboard:before{content:"\F13A"}.mdi-chemical-weapon:before{content:"\F13B"}.mdi-chevron-double-down:before{content:"\F13C"}.mdi-chevron-double-left:before{content:"\F13D"}.mdi-chevron-double-right:before{content:"\F13E"}.mdi-chevron-double-up:before{content:"\F13F"}.mdi-chevron-down:before{content:"\F140"}.mdi-chevron-left:before{content:"\F141"}.mdi-chevron-right:before{content:"\F142"}.mdi-chevron-up:before{content:"\F143"}.mdi-chip:before{content:"\F61A"}.mdi-church:before{content:"\F144"}.mdi-cisco-webex:before{content:"\F145"}.mdi-city:before{content:"\F146"}.mdi-clipboard:before{content:"\F147"}.mdi-clipboard-account:before{content:"\F148"}.mdi-clipboard-alert:before{content:"\F149"}.mdi-clipboard-arrow-down:before{content:"\F14A"}.mdi-clipboard-arrow-left:before{content:"\F14B"}.mdi-clipboard-check:before{content:"\F14C"}.mdi-clipboard-outline:before{content:"\F14D"}.mdi-clipboard-text:before{content:"\F14E"}.mdi-clippy:before{content:"\F14F"}.mdi-clock:before{content:"\F150"}.mdi-clock-alert:before{content:"\F5CE"}.mdi-clock-end:before{content:"\F151"}.mdi-clock-fast:before{content:"\F152"}.mdi-clock-in:before{content:"\F153"}.mdi-clock-out:before{content:"\F154"}.mdi-clock-start:before{content:"\F155"}.mdi-close:before{content:"\F156"}.mdi-close-box:before{content:"\F157"}.mdi-close-box-outline:before{content:"\F158"}.mdi-close-circle:before{content:"\F159"}.mdi-close-circle-outline:before{content:"\F15A"}.mdi-close-network:before{content:"\F15B"}.mdi-close-octagon:before{content:"\F15C"}.mdi-close-octagon-outline:before{content:"\F15D"}.mdi-closed-caption:before{content:"\F15E"}.mdi-cloud:before{content:"\F15F"}.mdi-cloud-check:before{content:"\F160"}.mdi-cloud-circle:before{content:"\F161"}.mdi-cloud-download:before{content:"\F162"}.mdi-cloud-outline:before{content:"\F163"}.mdi-cloud-outline-off:before{content:"\F164"}.mdi-cloud-print:before{content:"\F165"}.mdi-cloud-print-outline:before{content:"\F166"}.mdi-cloud-sync:before{content:"\F63F"}.mdi-cloud-upload:before{content:"\F167"}.mdi-code-array:before{content:"\F168"}.mdi-code-braces:before{content:"\F169"}.mdi-code-brackets:before{content:"\F16A"}.mdi-code-equal:before{content:"\F16B"}.mdi-code-greater-than:before{content:"\F16C"}.mdi-code-greater-than-or-equal:before{content:"\F16D"}.mdi-code-less-than:before{content:"\F16E"}.mdi-code-less-than-or-equal:before{content:"\F16F"}.mdi-code-not-equal:before{content:"\F170"}.mdi-code-not-equal-variant:before{content:"\F171"}.mdi-code-parentheses:before{content:"\F172"}.mdi-code-string:before{content:"\F173"}.mdi-code-tags:before{content:"\F174"}.mdi-codepen:before{content:"\F175"}.mdi-coffee:before{content:"\F176"}.mdi-coffee-to-go:before{content:"\F177"}.mdi-coin:before{content:"\F178"}.mdi-collage:before{content:"\F640"}.mdi-color-helper:before{content:"\F179"}.mdi-comment:before{content:"\F17A"}.mdi-comment-account:before{content:"\F17B"}.mdi-comment-account-outline:before{content:"\F17C"}.mdi-comment-alert:before{content:"\F17D"}.mdi-comment-alert-outline:before{content:"\F17E"}.mdi-comment-check:before{content:"\F17F"}.mdi-comment-check-outline:before{content:"\F180"}.mdi-comment-multiple-outline:before{content:"\F181"}.mdi-comment-outline:before{content:"\F182"}.mdi-comment-plus-outline:before{content:"\F183"}.mdi-comment-processing:before{content:"\F184"}.mdi-comment-processing-outline:before{content:"\F185"}.mdi-comment-question-outline:before{content:"\F186"}.mdi-comment-remove-outline:before{content:"\F187"}.mdi-comment-text:before{content:"\F188"}.mdi-comment-text-outline:before{content:"\F189"}.mdi-compare:before{content:"\F18A"}.mdi-compass:before{content:"\F18B"}.mdi-compass-outline:before{content:"\F18C"}.mdi-console:before{content:"\F18D"}.mdi-contact-mail:before{content:"\F18E"}.mdi-content-copy:before{content:"\F18F"}.mdi-content-cut:before{content:"\F190"}.mdi-content-duplicate:before{content:"\F191"}.mdi-content-paste:before{content:"\F192"}.mdi-content-save:before{content:"\F193"}.mdi-content-save-all:before{content:"\F194"}.mdi-content-save-settings:before{content:"\F61B"}.mdi-contrast:before{content:"\F195"}.mdi-contrast-box:before{content:"\F196"}.mdi-contrast-circle:before{content:"\F197"}.mdi-cookie:before{content:"\F198"}.mdi-copyright:before{content:"\F5E6"}.mdi-counter:before{content:"\F199"}.mdi-cow:before{content:"\F19A"}.mdi-credit-card:before{content:"\F19B"}.mdi-credit-card-multiple:before{content:"\F19C"}.mdi-credit-card-off:before{content:"\F5E4"}.mdi-credit-card-scan:before{content:"\F19D"}.mdi-crop:before{content:"\F19E"}.mdi-crop-free:before{content:"\F19F"}.mdi-crop-landscape:before{content:"\F1A0"}.mdi-crop-portrait:before{content:"\F1A1"}.mdi-crop-square:before{content:"\F1A2"}.mdi-crosshairs:before{content:"\F1A3"}.mdi-crosshairs-gps:before{content:"\F1A4"}.mdi-crown:before{content:"\F1A5"}.mdi-cube:before{content:"\F1A6"}.mdi-cube-outline:before{content:"\F1A7"}.mdi-cube-send:before{content:"\F1A8"}.mdi-cube-unfolded:before{content:"\F1A9"}.mdi-cup:before{content:"\F1AA"}.mdi-cup-off:before{content:"\F5E5"}.mdi-cup-water:before{content:"\F1AB"}.mdi-currency-btc:before{content:"\F1AC"}.mdi-currency-eur:before{content:"\F1AD"}.mdi-currency-gbp:before{content:"\F1AE"}.mdi-currency-inr:before{content:"\F1AF"}.mdi-currency-ngn:before{content:"\F1B0"}.mdi-currency-rub:before{content:"\F1B1"}.mdi-currency-try:before{content:"\F1B2"}.mdi-currency-usd:before{content:"\F1B3"}.mdi-cursor-default:before{content:"\F1B4"}.mdi-cursor-default-outline:before{content:"\F1B5"}.mdi-cursor-move:before{content:"\F1B6"}.mdi-cursor-pointer:before{content:"\F1B7"}.mdi-cursor-text:before{content:"\F5E7"}.mdi-database:before{content:"\F1B8"}.mdi-database-minus:before{content:"\F1B9"}.mdi-database-plus:before{content:"\F1BA"}.mdi-debug-step-into:before{content:"\F1BB"}.mdi-debug-step-out:before{content:"\F1BC"}.mdi-debug-step-over:before{content:"\F1BD"}.mdi-decimal-decrease:before{content:"\F1BE"}.mdi-decimal-increase:before{content:"\F1BF"}.mdi-delete:before{content:"\F1C0"}.mdi-delete-forever:before{content:"\F5E8"}.mdi-delete-sweep:before{content:"\F5E9"}.mdi-delete-variant:before{content:"\F1C1"}.mdi-delta:before{content:"\F1C2"}.mdi-deskphone:before{content:"\F1C3"}.mdi-desktop-mac:before{content:"\F1C4"}.mdi-desktop-tower:before{content:"\F1C5"}.mdi-details:before{content:"\F1C6"}.mdi-deviantart:before{content:"\F1C7"}.mdi-dialpad:before{content:"\F61C"}.mdi-diamond:before{content:"\F1C8"}.mdi-dice-1:before{content:"\F1CA"}.mdi-dice-2:before{content:"\F1CB"}.mdi-dice-3:before{content:"\F1CC"}.mdi-dice-4:before{content:"\F1CD"}.mdi-dice-5:before{content:"\F1CE"}.mdi-dice-6:before{content:"\F1CF"}.mdi-dice-d20:before{content:"\F5EA"}.mdi-dice-d4:before{content:"\F5EB"}.mdi-dice-d6:before{content:"\F5EC"}.mdi-dice-d8:before{content:"\F5ED"}.mdi-dictionary:before{content:"\F61D"}.mdi-directions:before{content:"\F1D0"}.mdi-directions-fork:before{content:"\F641"}.mdi-discord:before{content:"\F66F"}.mdi-disk:before{content:"\F5EE"}.mdi-disk-alert:before{content:"\F1D1"}.mdi-disqus:before{content:"\F1D2"}.mdi-disqus-outline:before{content:"\F1D3"}.mdi-division:before{content:"\F1D4"}.mdi-division-box:before{content:"\F1D5"}.mdi-dns:before{content:"\F1D6"}.mdi-domain:before{content:"\F1D7"}.mdi-dots-horizontal:before{content:"\F1D8"}.mdi-dots-vertical:before{content:"\F1D9"}.mdi-download:before{content:"\F1DA"}.mdi-drag:before{content:"\F1DB"}.mdi-drag-horizontal:before{content:"\F1DC"}.mdi-drag-vertical:before{content:"\F1DD"}.mdi-drawing:before{content:"\F1DE"}.mdi-drawing-box:before{content:"\F1DF"}.mdi-dribbble:before{content:"\F1E0"}.mdi-dribbble-box:before{content:"\F1E1"}.mdi-drone:before{content:"\F1E2"}.mdi-dropbox:before{content:"\F1E3"}.mdi-drupal:before{content:"\F1E4"}.mdi-duck:before{content:"\F1E5"}.mdi-dumbbell:before{content:"\F1E6"}.mdi-earth:before{content:"\F1E7"}.mdi-earth-off:before{content:"\F1E8"}.mdi-edge:before{content:"\F1E9"}.mdi-eject:before{content:"\F1EA"}.mdi-elevation-decline:before{content:"\F1EB"}.mdi-elevation-rise:before{content:"\F1EC"}.mdi-elevator:before{content:"\F1ED"}.mdi-email:before{content:"\F1EE"}.mdi-email-open:before{content:"\F1EF"}.mdi-email-open-outline:before{content:"\F5EF"}.mdi-email-outline:before{content:"\F1F0"}.mdi-email-secure:before{content:"\F1F1"}.mdi-email-variant:before{content:"\F5F0"}.mdi-emoticon:before{content:"\F1F2"}.mdi-emoticon-cool:before{content:"\F1F3"}.mdi-emoticon-devil:before{content:"\F1F4"}.mdi-emoticon-happy:before{content:"\F1F5"}.mdi-emoticon-neutral:before{content:"\F1F6"}.mdi-emoticon-poop:before{content:"\F1F7"}.mdi-emoticon-sad:before{content:"\F1F8"}.mdi-emoticon-tongue:before{content:"\F1F9"}.mdi-engine:before{content:"\F1FA"}.mdi-engine-outline:before{content:"\F1FB"}.mdi-equal:before{content:"\F1FC"}.mdi-equal-box:before{content:"\F1FD"}.mdi-eraser:before{content:"\F1FE"}.mdi-eraser-variant:before{content:"\F642"}.mdi-escalator:before{content:"\F1FF"}.mdi-ethernet:before{content:"\F200"}.mdi-ethernet-cable:before{content:"\F201"}.mdi-ethernet-cable-off:before{content:"\F202"}.mdi-etsy:before{content:"\F203"}.mdi-ev-station:before{content:"\F5F1"}.mdi-evernote:before{content:"\F204"}.mdi-exclamation:before{content:"\F205"}.mdi-exit-to-app:before{content:"\F206"}.mdi-export:before{content:"\F207"}.mdi-eye:before{content:"\F208"}.mdi-eye-off:before{content:"\F209"}.mdi-eyedropper:before{content:"\F20A"}.mdi-eyedropper-variant:before{content:"\F20B"}.mdi-face:before{content:"\F643"}.mdi-face-profile:before{content:"\F644"}.mdi-facebook:before{content:"\F20C"}.mdi-facebook-box:before{content:"\F20D"}.mdi-facebook-messenger:before{content:"\F20E"}.mdi-factory:before{content:"\F20F"}.mdi-fan:before{content:"\F210"}.mdi-fast-forward:before{content:"\F211"}.mdi-fax:before{content:"\F212"}.mdi-ferry:before{content:"\F213"}.mdi-file:before{content:"\F214"}.mdi-file-chart:before{content:"\F215"}.mdi-file-check:before{content:"\F216"}.mdi-file-cloud:before{content:"\F217"}.mdi-file-delimited:before{content:"\F218"}.mdi-file-document:before{content:"\F219"}.mdi-file-document-box:before{content:"\F21A"}.mdi-file-excel:before{content:"\F21B"}.mdi-file-excel-box:before{content:"\F21C"}.mdi-file-export:before{content:"\F21D"}.mdi-file-find:before{content:"\F21E"}.mdi-file-hidden:before{content:"\F613"}.mdi-file-image:before{content:"\F21F"}.mdi-file-import:before{content:"\F220"}.mdi-file-lock:before{content:"\F221"}.mdi-file-multiple:before{content:"\F222"}.mdi-file-music:before{content:"\F223"}.mdi-file-outline:before{content:"\F224"}.mdi-file-pdf:before{content:"\F225"}.mdi-file-pdf-box:before{content:"\F226"}.mdi-file-powerpoint:before{content:"\F227"}.mdi-file-powerpoint-box:before{content:"\F228"}.mdi-file-presentation-box:before{content:"\F229"}.mdi-file-restore:before{content:"\F670"}.mdi-file-send:before{content:"\F22A"}.mdi-file-tree:before{content:"\F645"}.mdi-file-video:before{content:"\F22B"}.mdi-file-word:before{content:"\F22C"}.mdi-file-word-box:before{content:"\F22D"}.mdi-file-xml:before{content:"\F22E"}.mdi-film:before{content:"\F22F"}.mdi-filmstrip:before{content:"\F230"}.mdi-filmstrip-off:before{content:"\F231"}.mdi-filter:before{content:"\F232"}.mdi-filter-outline:before{content:"\F233"}.mdi-filter-remove:before{content:"\F234"}.mdi-filter-remove-outline:before{content:"\F235"}.mdi-filter-variant:before{content:"\F236"}.mdi-fingerprint:before{content:"\F237"}.mdi-fire:before{content:"\F238"}.mdi-firefox:before{content:"\F239"}.mdi-fish:before{content:"\F23A"}.mdi-flag:before{content:"\F23B"}.mdi-flag-checkered:before{content:"\F23C"}.mdi-flag-outline:before{content:"\F23D"}.mdi-flag-outline-variant:before{content:"\F23E"}.mdi-flag-triangle:before{content:"\F23F"}.mdi-flag-variant:before{content:"\F240"}.mdi-flash:before{content:"\F241"}.mdi-flash-auto:before{content:"\F242"}.mdi-flash-off:before{content:"\F243"}.mdi-flashlight:before{content:"\F244"}.mdi-flashlight-off:before{content:"\F245"}.mdi-flask:before{content:"\F093"}.mdi-flask-empty:before{content:"\F094"}.mdi-flask-empty-outline:before{content:"\F095"}.mdi-flask-outline:before{content:"\F096"}.mdi-flattr:before{content:"\F246"}.mdi-flip-to-back:before{content:"\F247"}.mdi-flip-to-front:before{content:"\F248"}.mdi-floppy:before{content:"\F249"}.mdi-flower:before{content:"\F24A"}.mdi-folder:before{content:"\F24B"}.mdi-folder-account:before{content:"\F24C"}.mdi-folder-download:before{content:"\F24D"}.mdi-folder-google-drive:before{content:"\F24E"}.mdi-folder-image:before{content:"\F24F"}.mdi-folder-lock:before{content:"\F250"}.mdi-folder-lock-open:before{content:"\F251"}.mdi-folder-move:before{content:"\F252"}.mdi-folder-multiple:before{content:"\F253"}.mdi-folder-multiple-image:before{content:"\F254"}.mdi-folder-multiple-outline:before{content:"\F255"}.mdi-folder-outline:before{content:"\F256"}.mdi-folder-plus:before{content:"\F257"}.mdi-folder-remove:before{content:"\F258"}.mdi-folder-upload:before{content:"\F259"}.mdi-food:before{content:"\F25A"}.mdi-food-apple:before{content:"\F25B"}.mdi-food-fork-drink:before{content:"\F5F2"}.mdi-food-off:before{content:"\F5F3"}.mdi-food-variant:before{content:"\F25C"}.mdi-football:before{content:"\F25D"}.mdi-football-australian:before{content:"\F25E"}.mdi-football-helmet:before{content:"\F25F"}.mdi-format-align-center:before{content:"\F260"}.mdi-format-align-justify:before{content:"\F261"}.mdi-format-align-left:before{content:"\F262"}.mdi-format-align-right:before{content:"\F263"}.mdi-format-annotation-plus:before{content:"\F646"}.mdi-format-bold:before{content:"\F264"}.mdi-format-clear:before{content:"\F265"}.mdi-format-color-fill:before{content:"\F266"}.mdi-format-float-center:before{content:"\F267"}.mdi-format-float-left:before{content:"\F268"}.mdi-format-float-none:before{content:"\F269"}.mdi-format-float-right:before{content:"\F26A"}.mdi-format-header-1:before{content:"\F26B"}.mdi-format-header-2:before{content:"\F26C"}.mdi-format-header-3:before{content:"\F26D"}.mdi-format-header-4:before{content:"\F26E"}.mdi-format-header-5:before{content:"\F26F"}.mdi-format-header-6:before{content:"\F270"}.mdi-format-header-decrease:before{content:"\F271"}.mdi-format-header-equal:before{content:"\F272"}.mdi-format-header-increase:before{content:"\F273"}.mdi-format-header-pound:before{content:"\F274"}.mdi-format-horizontal-align-center:before{content:"\F61E"}.mdi-format-horizontal-align-left:before{content:"\F61F"}.mdi-format-horizontal-align-right:before{content:"\F620"}.mdi-format-indent-decrease:before{content:"\F275"}.mdi-format-indent-increase:before{content:"\F276"}.mdi-format-italic:before{content:"\F277"}.mdi-format-line-spacing:before{content:"\F278"}.mdi-format-line-style:before{content:"\F5C8"}.mdi-format-line-weight:before{content:"\F5C9"}.mdi-format-list-bulleted:before{content:"\F279"}.mdi-format-list-bulleted-type:before{content:"\F27A"}.mdi-format-list-numbers:before{content:"\F27B"}.mdi-format-paint:before{content:"\F27C"}.mdi-format-paragraph:before{content:"\F27D"}.mdi-format-quote:before{content:"\F27E"}.mdi-format-size:before{content:"\F27F"}.mdi-format-strikethrough:before{content:"\F280"}.mdi-format-strikethrough-variant:before{content:"\F281"}.mdi-format-subscript:before{content:"\F282"}.mdi-format-superscript:before{content:"\F283"}.mdi-format-text:before{content:"\F284"}.mdi-format-textdirection-l-to-r:before{content:"\F285"}.mdi-format-textdirection-r-to-l:before{content:"\F286"}.mdi-format-title:before{content:"\F5F4"}.mdi-format-underline:before{content:"\F287"}.mdi-format-vertical-align-bottom:before{content:"\F621"}.mdi-format-vertical-align-center:before{content:"\F622"}.mdi-format-vertical-align-top:before{content:"\F623"}.mdi-format-wrap-inline:before{content:"\F288"}.mdi-format-wrap-square:before{content:"\F289"}.mdi-format-wrap-tight:before{content:"\F28A"}.mdi-format-wrap-top-bottom:before{content:"\F28B"}.mdi-forum:before{content:"\F28C"}.mdi-forward:before{content:"\F28D"}.mdi-foursquare:before{content:"\F28E"}.mdi-fridge:before{content:"\F28F"}.mdi-fridge-filled:before{content:"\F290"}.mdi-fridge-filled-bottom:before{content:"\F291"}.mdi-fridge-filled-top:before{content:"\F292"}.mdi-fullscreen:before{content:"\F293"}.mdi-fullscreen-exit:before{content:"\F294"}.mdi-function:before{content:"\F295"}.mdi-gamepad:before{content:"\F296"}.mdi-gamepad-variant:before{content:"\F297"}.mdi-gas-cylinder:before{content:"\F647"}.mdi-gas-station:before{content:"\F298"}.mdi-gate:before{content:"\F299"}.mdi-gauge:before{content:"\F29A"}.mdi-gavel:before{content:"\F29B"}.mdi-gender-female:before{content:"\F29C"}.mdi-gender-male:before{content:"\F29D"}.mdi-gender-male-female:before{content:"\F29E"}.mdi-gender-transgender:before{content:"\F29F"}.mdi-ghost:before{content:"\F2A0"}.mdi-gift:before{content:"\F2A1"}.mdi-git:before{content:"\F2A2"}.mdi-github-box:before{content:"\F2A3"}.mdi-github-circle:before{content:"\F2A4"}.mdi-glass-flute:before{content:"\F2A5"}.mdi-glass-mug:before{content:"\F2A6"}.mdi-glass-stange:before{content:"\F2A7"}.mdi-glass-tulip:before{content:"\F2A8"}.mdi-glassdoor:before{content:"\F2A9"}.mdi-glasses:before{content:"\F2AA"}.mdi-gmail:before{content:"\F2AB"}.mdi-gnome:before{content:"\F2AC"}.mdi-google:before{content:"\F2AD"}.mdi-google-cardboard:before{content:"\F2AE"}.mdi-google-chrome:before{content:"\F2AF"}.mdi-google-circles:before{content:"\F2B0"}.mdi-google-circles-communities:before{content:"\F2B1"}.mdi-google-circles-extended:before{content:"\F2B2"}.mdi-google-circles-group:before{content:"\F2B3"}.mdi-google-controller:before{content:"\F2B4"}.mdi-google-controller-off:before{content:"\F2B5"}.mdi-google-drive:before{content:"\F2B6"}.mdi-google-earth:before{content:"\F2B7"}.mdi-google-glass:before{content:"\F2B8"}.mdi-google-maps:before{content:"\F5F5"}.mdi-google-nearby:before{content:"\F2B9"}.mdi-google-pages:before{content:"\F2BA"}.mdi-google-physical-web:before{content:"\F2BB"}.mdi-google-play:before{content:"\F2BC"}.mdi-google-plus:before{content:"\F2BD"}.mdi-google-plus-box:before{content:"\F2BE"}.mdi-google-translate:before{content:"\F2BF"}.mdi-google-wallet:before{content:"\F2C0"}.mdi-grease-pencil:before{content:"\F648"}.mdi-grid:before{content:"\F2C1"}.mdi-grid-off:before{content:"\F2C2"}.mdi-group:before{content:"\F2C3"}.mdi-guitar-electric:before{content:"\F2C4"}.mdi-guitar-pick:before{content:"\F2C5"}.mdi-guitar-pick-outline:before{content:"\F2C6"}.mdi-hackernews:before{content:"\F624"}.mdi-hand-pointing-right:before{content:"\F2C7"}.mdi-hanger:before{content:"\F2C8"}.mdi-hangouts:before{content:"\F2C9"}.mdi-harddisk:before{content:"\F2CA"}.mdi-headphones:before{content:"\F2CB"}.mdi-headphones-box:before{content:"\F2CC"}.mdi-headphones-settings:before{content:"\F2CD"}.mdi-headset:before{content:"\F2CE"}.mdi-headset-dock:before{content:"\F2CF"}.mdi-headset-off:before{content:"\F2D0"}.mdi-heart:before{content:"\F2D1"}.mdi-heart-box:before{content:"\F2D2"}.mdi-heart-box-outline:before{content:"\F2D3"}.mdi-heart-broken:before{content:"\F2D4"}.mdi-heart-outline:before{content:"\F2D5"}.mdi-heart-pulse:before{content:"\F5F6"}.mdi-help:before{content:"\F2D6"}.mdi-help-circle:before{content:"\F2D7"}.mdi-help-circle-outline:before{content:"\F625"}.mdi-hexagon:before{content:"\F2D8"}.mdi-hexagon-outline:before{content:"\F2D9"}.mdi-highway:before{content:"\F5F7"}.mdi-history:before{content:"\F2DA"}.mdi-hololens:before{content:"\F2DB"}.mdi-home:before{content:"\F2DC"}.mdi-home-map-marker:before{content:"\F5F8"}.mdi-home-modern:before{content:"\F2DD"}.mdi-home-variant:before{content:"\F2DE"}.mdi-hops:before{content:"\F2DF"}.mdi-hospital:before{content:"\F2E0"}.mdi-hospital-building:before{content:"\F2E1"}.mdi-hospital-marker:before{content:"\F2E2"}.mdi-hotel:before{content:"\F2E3"}.mdi-houzz:before{content:"\F2E4"}.mdi-houzz-box:before{content:"\F2E5"}.mdi-human:before{content:"\F2E6"}.mdi-human-child:before{content:"\F2E7"}.mdi-human-female:before{content:"\F649"}.mdi-human-greeting:before{content:"\F64A"}.mdi-human-handsdown:before{content:"\F64B"}.mdi-human-handsup:before{content:"\F64C"}.mdi-human-male:before{content:"\F64D"}.mdi-human-male-female:before{content:"\F2E8"}.mdi-human-pregnant:before{content:"\F5CF"}.mdi-image:before{content:"\F2E9"}.mdi-image-album:before{content:"\F2EA"}.mdi-image-area:before{content:"\F2EB"}.mdi-image-area-close:before{content:"\F2EC"}.mdi-image-broken:before{content:"\F2ED"}.mdi-image-broken-variant:before{content:"\F2EE"}.mdi-image-filter:before{content:"\F2EF"}.mdi-image-filter-black-white:before{content:"\F2F0"}.mdi-image-filter-center-focus:before{content:"\F2F1"}.mdi-image-filter-center-focus-weak:before{content:"\F2F2"}.mdi-image-filter-drama:before{content:"\F2F3"}.mdi-image-filter-frames:before{content:"\F2F4"}.mdi-image-filter-hdr:before{content:"\F2F5"}.mdi-image-filter-none:before{content:"\F2F6"}.mdi-image-filter-tilt-shift:before{content:"\F2F7"}.mdi-image-filter-vintage:before{content:"\F2F8"}.mdi-image-multiple:before{content:"\F2F9"}.mdi-import:before{content:"\F2FA"}.mdi-inbox:before{content:"\F2FB"}.mdi-incognito:before{content:"\F5F9"}.mdi-information:before{content:"\F2FC"}.mdi-information-outline:before{content:"\F2FD"}.mdi-information-variant:before{content:"\F64E"}.mdi-instagram:before{content:"\F2FE"}.mdi-instapaper:before{content:"\F2FF"}.mdi-internet-explorer:before{content:"\F300"}.mdi-invert-colors:before{content:"\F301"}.mdi-jeepney:before{content:"\F302"}.mdi-jira:before{content:"\F303"}.mdi-jsfiddle:before{content:"\F304"}.mdi-json:before{content:"\F626"}.mdi-keg:before{content:"\F305"}.mdi-kettle:before{content:"\F5FA"}.mdi-key:before{content:"\F306"}.mdi-key-change:before{content:"\F307"}.mdi-key-minus:before{content:"\F308"}.mdi-key-plus:before{content:"\F309"}.mdi-key-remove:before{content:"\F30A"}.mdi-key-variant:before{content:"\F30B"}.mdi-keyboard:before{content:"\F30C"}.mdi-keyboard-backspace:before{content:"\F30D"}.mdi-keyboard-caps:before{content:"\F30E"}.mdi-keyboard-close:before{content:"\F30F"}.mdi-keyboard-off:before{content:"\F310"}.mdi-keyboard-return:before{content:"\F311"}.mdi-keyboard-tab:before{content:"\F312"}.mdi-keyboard-variant:before{content:"\F313"}.mdi-kodi:before{content:"\F314"}.mdi-label:before{content:"\F315"}.mdi-label-outline:before{content:"\F316"}.mdi-lambda:before{content:"\F627"}.mdi-lan:before{content:"\F317"}.mdi-lan-connect:before{content:"\F318"}.mdi-lan-disconnect:before{content:"\F319"}.mdi-lan-pending:before{content:"\F31A"}.mdi-language-c:before{content:"\F671"}.mdi-language-cpp:before{content:"\F672"}.mdi-language-csharp:before{content:"\F31B"}.mdi-language-css3:before{content:"\F31C"}.mdi-language-html5:before{content:"\F31D"}.mdi-language-javascript:before{content:"\F31E"}.mdi-language-php:before{content:"\F31F"}.mdi-language-python:before{content:"\F320"}.mdi-language-python-text:before{content:"\F321"}.mdi-laptop:before{content:"\F322"}.mdi-laptop-chromebook:before{content:"\F323"}.mdi-laptop-mac:before{content:"\F324"}.mdi-laptop-windows:before{content:"\F325"}.mdi-lastfm:before{content:"\F326"}.mdi-launch:before{content:"\F327"}.mdi-layers:before{content:"\F328"}.mdi-layers-off:before{content:"\F329"}.mdi-lead-pencil:before{content:"\F64F"}.mdi-leaf:before{content:"\F32A"}.mdi-led-off:before{content:"\F32B"}.mdi-led-on:before{content:"\F32C"}.mdi-led-outline:before{content:"\F32D"}.mdi-led-variant-off:before{content:"\F32E"}.mdi-led-variant-on:before{content:"\F32F"}.mdi-led-variant-outline:before{content:"\F330"}.mdi-library:before{content:"\F331"}.mdi-library-books:before{content:"\F332"}.mdi-library-music:before{content:"\F333"}.mdi-library-plus:before{content:"\F334"}.mdi-lightbulb:before{content:"\F335"}.mdi-lightbulb-outline:before{content:"\F336"}.mdi-link:before{content:"\F337"}.mdi-link-off:before{content:"\F338"}.mdi-link-variant:before{content:"\F339"}.mdi-link-variant-off:before{content:"\F33A"}.mdi-linkedin:before{content:"\F33B"}.mdi-linkedin-box:before{content:"\F33C"}.mdi-linux:before{content:"\F33D"}.mdi-lock:before{content:"\F33E"}.mdi-lock-open:before{content:"\F33F"}.mdi-lock-open-outline:before{content:"\F340"}.mdi-lock-outline:before{content:"\F341"}.mdi-lock-plus:before{content:"\F5FB"}.mdi-login:before{content:"\F342"}.mdi-login-variant:before{content:"\F5FC"}.mdi-logout:before{content:"\F343"}.mdi-logout-variant:before{content:"\F5FD"}.mdi-looks:before{content:"\F344"}.mdi-loupe:before{content:"\F345"}.mdi-lumx:before{content:"\F346"}.mdi-magnet:before{content:"\F347"}.mdi-magnet-on:before{content:"\F348"}.mdi-magnify:before{content:"\F349"}.mdi-magnify-minus:before{content:"\F34A"}.mdi-magnify-plus:before{content:"\F34B"}.mdi-mail-ru:before{content:"\F34C"}.mdi-map:before{content:"\F34D"}.mdi-map-marker:before{content:"\F34E"}.mdi-map-marker-circle:before{content:"\F34F"}.mdi-map-marker-minus:before{content:"\F650"}.mdi-map-marker-multiple:before{content:"\F350"}.mdi-map-marker-off:before{content:"\F351"}.mdi-map-marker-plus:before{content:"\F651"}.mdi-map-marker-radius:before{content:"\F352"}.mdi-margin:before{content:"\F353"}.mdi-markdown:before{content:"\F354"}.mdi-marker:before{content:"\F652"}.mdi-marker-check:before{content:"\F355"}.mdi-martini:before{content:"\F356"}.mdi-material-ui:before{content:"\F357"}.mdi-math-compass:before{content:"\F358"}.mdi-matrix:before{content:"\F628"}.mdi-maxcdn:before{content:"\F359"}.mdi-medium:before{content:"\F35A"}.mdi-memory:before{content:"\F35B"}.mdi-menu:before{content:"\F35C"}.mdi-menu-down:before{content:"\F35D"}.mdi-menu-left:before{content:"\F35E"}.mdi-menu-right:before{content:"\F35F"}.mdi-menu-up:before{content:"\F360"}.mdi-message:before{content:"\F361"}.mdi-message-alert:before{content:"\F362"}.mdi-message-draw:before{content:"\F363"}.mdi-message-image:before{content:"\F364"}.mdi-message-outline:before{content:"\F365"}.mdi-message-plus:before{content:"\F653"}.mdi-message-processing:before{content:"\F366"}.mdi-message-reply:before{content:"\F367"}.mdi-message-reply-text:before{content:"\F368"}.mdi-message-text:before{content:"\F369"}.mdi-message-text-outline:before{content:"\F36A"}.mdi-message-video:before{content:"\F36B"}.mdi-meteor:before{content:"\F629"}.mdi-microphone:before{content:"\F36C"}.mdi-microphone-off:before{content:"\F36D"}.mdi-microphone-outline:before{content:"\F36E"}.mdi-microphone-settings:before{content:"\F36F"}.mdi-microphone-variant:before{content:"\F370"}.mdi-microphone-variant-off:before{content:"\F371"}.mdi-microscope:before{content:"\F654"}.mdi-microsoft:before{content:"\F372"}.mdi-minecraft:before{content:"\F373"}.mdi-minus:before{content:"\F374"}.mdi-minus-box:before{content:"\F375"}.mdi-minus-circle:before{content:"\F376"}.mdi-minus-circle-outline:before{content:"\F377"}.mdi-minus-network:before{content:"\F378"}.mdi-mixcloud:before{content:"\F62A"}.mdi-monitor:before{content:"\F379"}.mdi-monitor-multiple:before{content:"\F37A"}.mdi-more:before{content:"\F37B"}.mdi-motorbike:before{content:"\F37C"}.mdi-mouse:before{content:"\F37D"}.mdi-mouse-off:before{content:"\F37E"}.mdi-mouse-variant:before{content:"\F37F"}.mdi-mouse-variant-off:before{content:"\F380"}.mdi-move-resize:before{content:"\F655"}.mdi-move-resize-variant:before{content:"\F656"}.mdi-movie:before{content:"\F381"}.mdi-multiplication:before{content:"\F382"}.mdi-multiplication-box:before{content:"\F383"}.mdi-music-box:before{content:"\F384"}.mdi-music-box-outline:before{content:"\F385"}.mdi-music-circle:before{content:"\F386"}.mdi-music-note:before{content:"\F387"}.mdi-music-note-bluetooth:before{content:"\F5FE"}.mdi-music-note-bluetooth-off:before{content:"\F5FF"}.mdi-music-note-eighth:before{content:"\F388"}.mdi-music-note-half:before{content:"\F389"}.mdi-music-note-off:before{content:"\F38A"}.mdi-music-note-quarter:before{content:"\F38B"}.mdi-music-note-sixteenth:before{content:"\F38C"}.mdi-music-note-whole:before{content:"\F38D"}.mdi-nature:before{content:"\F38E"}.mdi-nature-people:before{content:"\F38F"}.mdi-navigation:before{content:"\F390"}.mdi-near-me:before{content:"\F5CD"}.mdi-needle:before{content:"\F391"}.mdi-nest-protect:before{content:"\F392"}.mdi-nest-thermostat:before{content:"\F393"}.mdi-new-box:before{content:"\F394"}.mdi-newspaper:before{content:"\F395"}.mdi-nfc:before{content:"\F396"}.mdi-nfc-tap:before{content:"\F397"}.mdi-nfc-variant:before{content:"\F398"}.mdi-nodejs:before{content:"\F399"}.mdi-note:before{content:"\F39A"}.mdi-note-outline:before{content:"\F39B"}.mdi-note-plus:before{content:"\F39C"}.mdi-note-plus-outline:before{content:"\F39D"}.mdi-note-text:before{content:"\F39E"}.mdi-notification-clear-all:before{content:"\F39F"}.mdi-numeric:before{content:"\F3A0"}.mdi-numeric-0-box:before{content:"\F3A1"}.mdi-numeric-0-box-multiple-outline:before{content:"\F3A2"}.mdi-numeric-0-box-outline:before{content:"\F3A3"}.mdi-numeric-1-box:before{content:"\F3A4"}.mdi-numeric-1-box-multiple-outline:before{content:"\F3A5"}.mdi-numeric-1-box-outline:before{content:"\F3A6"}.mdi-numeric-2-box:before{content:"\F3A7"}.mdi-numeric-2-box-multiple-outline:before{content:"\F3A8"}.mdi-numeric-2-box-outline:before{content:"\F3A9"}.mdi-numeric-3-box:before{content:"\F3AA"}.mdi-numeric-3-box-multiple-outline:before{content:"\F3AB"}.mdi-numeric-3-box-outline:before{content:"\F3AC"}.mdi-numeric-4-box:before{content:"\F3AD"}.mdi-numeric-4-box-multiple-outline:before{content:"\F3AE"}.mdi-numeric-4-box-outline:before{content:"\F3AF"}.mdi-numeric-5-box:before{content:"\F3B0"}.mdi-numeric-5-box-multiple-outline:before{content:"\F3B1"}.mdi-numeric-5-box-outline:before{content:"\F3B2"}.mdi-numeric-6-box:before{content:"\F3B3"}.mdi-numeric-6-box-multiple-outline:before{content:"\F3B4"}.mdi-numeric-6-box-outline:before{content:"\F3B5"}.mdi-numeric-7-box:before{content:"\F3B6"}.mdi-numeric-7-box-multiple-outline:before{content:"\F3B7"}.mdi-numeric-7-box-outline:before{content:"\F3B8"}.mdi-numeric-8-box:before{content:"\F3B9"}.mdi-numeric-8-box-multiple-outline:before{content:"\F3BA"}.mdi-numeric-8-box-outline:before{content:"\F3BB"}.mdi-numeric-9-box:before{content:"\F3BC"}.mdi-numeric-9-box-multiple-outline:before{content:"\F3BD"}.mdi-numeric-9-box-outline:before{content:"\F3BE"}.mdi-numeric-9-plus-box:before{content:"\F3BF"}.mdi-numeric-9-plus-box-multiple-outline:before{content:"\F3C0"}.mdi-numeric-9-plus-box-outline:before{content:"\F3C1"}.mdi-nutrition:before{content:"\F3C2"}.mdi-octagon:before{content:"\F3C3"}.mdi-octagon-outline:before{content:"\F3C4"}.mdi-odnoklassniki:before{content:"\F3C5"}.mdi-office:before{content:"\F3C6"}.mdi-oil:before{content:"\F3C7"}.mdi-oil-temperature:before{content:"\F3C8"}.mdi-omega:before{content:"\F3C9"}.mdi-onedrive:before{content:"\F3CA"}.mdi-opacity:before{content:"\F5CC"}.mdi-open-in-app:before{content:"\F3CB"}.mdi-open-in-new:before{content:"\F3CC"}.mdi-openid:before{content:"\F3CD"}.mdi-opera:before{content:"\F3CE"}.mdi-ornament:before{content:"\F3CF"}.mdi-ornament-variant:before{content:"\F3D0"}.mdi-outbox:before{content:"\F3D1"}.mdi-owl:before{content:"\F3D2"}.mdi-package:before{content:"\F3D3"}.mdi-package-down:before{content:"\F3D4"}.mdi-package-up:before{content:"\F3D5"}.mdi-package-variant:before{content:"\F3D6"}.mdi-package-variant-closed:before{content:"\F3D7"}.mdi-page-first:before{content:"\F600"}.mdi-page-last:before{content:"\F601"}.mdi-palette:before{content:"\F3D8"}.mdi-palette-advanced:before{content:"\F3D9"}.mdi-panda:before{content:"\F3DA"}.mdi-pandora:before{content:"\F3DB"}.mdi-panorama:before{content:"\F3DC"}.mdi-panorama-fisheye:before{content:"\F3DD"}.mdi-panorama-horizontal:before{content:"\F3DE"}.mdi-panorama-vertical:before{content:"\F3DF"}.mdi-panorama-wide-angle:before{content:"\F3E0"}.mdi-paper-cut-vertical:before{content:"\F3E1"}.mdi-paperclip:before{content:"\F3E2"}.mdi-parking:before{content:"\F3E3"}.mdi-pause:before{content:"\F3E4"}.mdi-pause-circle:before{content:"\F3E5"}.mdi-pause-circle-outline:before{content:"\F3E6"}.mdi-pause-octagon:before{content:"\F3E7"}.mdi-pause-octagon-outline:before{content:"\F3E8"}.mdi-paw:before{content:"\F3E9"}.mdi-paw-off:before{content:"\F657"}.mdi-pen:before{content:"\F3EA"}.mdi-pencil:before{content:"\F3EB"}.mdi-pencil-box:before{content:"\F3EC"}.mdi-pencil-box-outline:before{content:"\F3ED"}.mdi-pencil-lock:before{content:"\F3EE"}.mdi-pencil-off:before{content:"\F3EF"}.mdi-percent:before{content:"\F3F0"}.mdi-pharmacy:before{content:"\F3F1"}.mdi-phone:before{content:"\F3F2"}.mdi-phone-bluetooth:before{content:"\F3F3"}.mdi-phone-classic:before{content:"\F602"}.mdi-phone-forward:before{content:"\F3F4"}.mdi-phone-hangup:before{content:"\F3F5"}.mdi-phone-in-talk:before{content:"\F3F6"}.mdi-phone-incoming:before{content:"\F3F7"}.mdi-phone-locked:before{content:"\F3F8"}.mdi-phone-log:before{content:"\F3F9"}.mdi-phone-minus:before{content:"\F658"}.mdi-phone-missed:before{content:"\F3FA"}.mdi-phone-outgoing:before{content:"\F3FB"}.mdi-phone-paused:before{content:"\F3FC"}.mdi-phone-plus:before{content:"\F659"}.mdi-phone-settings:before{content:"\F3FD"}.mdi-phone-voip:before{content:"\F3FE"}.mdi-pi:before{content:"\F3FF"}.mdi-pi-box:before{content:"\F400"}.mdi-pig:before{content:"\F401"}.mdi-pill:before{content:"\F402"}.mdi-pin:before{content:"\F403"}.mdi-pin-off:before{content:"\F404"}.mdi-pine-tree:before{content:"\F405"}.mdi-pine-tree-box:before{content:"\F406"}.mdi-pinterest:before{content:"\F407"}.mdi-pinterest-box:before{content:"\F408"}.mdi-pizza:before{content:"\F409"}.mdi-play:before{content:"\F40A"}.mdi-play-box-outline:before{content:"\F40B"}.mdi-play-circle:before{content:"\F40C"}.mdi-play-circle-outline:before{content:"\F40D"}.mdi-play-pause:before{content:"\F40E"}.mdi-play-protected-content:before{content:"\F40F"}.mdi-playlist-check:before{content:"\F5C7"}.mdi-playlist-minus:before{content:"\F410"}.mdi-playlist-play:before{content:"\F411"}.mdi-playlist-plus:before{content:"\F412"}.mdi-playlist-remove:before{content:"\F413"}.mdi-playstation:before{content:"\F414"}.mdi-plus:before{content:"\F415"}.mdi-plus-box:before{content:"\F416"}.mdi-plus-circle:before{content:"\F417"}.mdi-plus-circle-multiple-outline:before{content:"\F418"}.mdi-plus-circle-outline:before{content:"\F419"}.mdi-plus-network:before{content:"\F41A"}.mdi-plus-one:before{content:"\F41B"}.mdi-pocket:before{content:"\F41C"}.mdi-pokeball:before{content:"\F41D"}.mdi-polaroid:before{content:"\F41E"}.mdi-poll:before{content:"\F41F"}.mdi-poll-box:before{content:"\F420"}.mdi-polymer:before{content:"\F421"}.mdi-pool:before{content:"\F606"}.mdi-popcorn:before{content:"\F422"}.mdi-pot:before{content:"\F65A"}.mdi-pot-mix:before{content:"\F65B"}.mdi-pound:before{content:"\F423"}.mdi-pound-box:before{content:"\F424"}.mdi-power:before{content:"\F425"}.mdi-power-settings:before{content:"\F426"}.mdi-power-socket:before{content:"\F427"}.mdi-presentation:before{content:"\F428"}.mdi-presentation-play:before{content:"\F429"}.mdi-printer:before{content:"\F42A"}.mdi-printer-3d:before{content:"\F42B"}.mdi-printer-alert:before{content:"\F42C"}.mdi-priority-high:before{content:"\F603"}.mdi-priority-low:before{content:"\F604"}.mdi-professional-hexagon:before{content:"\F42D"}.mdi-projector:before{content:"\F42E"}.mdi-projector-screen:before{content:"\F42F"}.mdi-pulse:before{content:"\F430"}.mdi-puzzle:before{content:"\F431"}.mdi-qqchat:before{content:"\F605"}.mdi-qrcode:before{content:"\F432"}.mdi-qrcode-scan:before{content:"\F433"}.mdi-quadcopter:before{content:"\F434"}.mdi-quality-high:before{content:"\F435"}.mdi-quicktime:before{content:"\F436"}.mdi-radar:before{content:"\F437"}.mdi-radiator:before{content:"\F438"}.mdi-radio:before{content:"\F439"}.mdi-radio-handheld:before{content:"\F43A"}.mdi-radio-tower:before{content:"\F43B"}.mdi-radioactive:before{content:"\F43C"}.mdi-radiobox-blank:before{content:"\F43D"}.mdi-radiobox-marked:before{content:"\F43E"}.mdi-raspberrypi:before{content:"\F43F"}.mdi-ray-end:before{content:"\F440"}.mdi-ray-end-arrow:before{content:"\F441"}.mdi-ray-start:before{content:"\F442"}.mdi-ray-start-arrow:before{content:"\F443"}.mdi-ray-start-end:before{content:"\F444"}.mdi-ray-vertex:before{content:"\F445"}.mdi-rdio:before{content:"\F446"}.mdi-read:before{content:"\F447"}.mdi-readability:before{content:"\F448"}.mdi-receipt:before{content:"\F449"}.mdi-record:before{content:"\F44A"}.mdi-record-rec:before{content:"\F44B"}.mdi-recycle:before{content:"\F44C"}.mdi-reddit:before{content:"\F44D"}.mdi-redo:before{content:"\F44E"}.mdi-redo-variant:before{content:"\F44F"}.mdi-refresh:before{content:"\F450"}.mdi-regex:before{content:"\F451"}.mdi-relative-scale:before{content:"\F452"}.mdi-reload:before{content:"\F453"}.mdi-remote:before{content:"\F454"}.mdi-rename-box:before{content:"\F455"}.mdi-repeat:before{content:"\F456"}.mdi-repeat-off:before{content:"\F457"}.mdi-repeat-once:before{content:"\F458"}.mdi-replay:before{content:"\F459"}.mdi-reply:before{content:"\F45A"}.mdi-reply-all:before{content:"\F45B"}.mdi-reproduction:before{content:"\F45C"}.mdi-resize-bottom-right:before{content:"\F45D"}.mdi-responsive:before{content:"\F45E"}.mdi-rewind:before{content:"\F45F"}.mdi-ribbon:before{content:"\F460"}.mdi-road:before{content:"\F461"}.mdi-road-variant:before{content:"\F462"}.mdi-rocket:before{content:"\F463"}.mdi-rotate-3d:before{content:"\F464"}.mdi-rotate-left:before{content:"\F465"}.mdi-rotate-left-variant:before{content:"\F466"}.mdi-rotate-right:before{content:"\F467"}.mdi-rotate-right-variant:before{content:"\F468"}.mdi-rounded-corner:before{content:"\F607"}.mdi-router-wireless:before{content:"\F469"}.mdi-routes:before{content:"\F46A"}.mdi-rowing:before{content:"\F608"}.mdi-rss:before{content:"\F46B"}.mdi-rss-box:before{content:"\F46C"}.mdi-ruler:before{content:"\F46D"}.mdi-run:before{content:"\F46E"}.mdi-sale:before{content:"\F46F"}.mdi-satellite:before{content:"\F470"}.mdi-satellite-variant:before{content:"\F471"}.mdi-saxophone:before{content:"\F609"}.mdi-scale:before{content:"\F472"}.mdi-scale-balance:before{content:"\F5D1"}.mdi-scale-bathroom:before{content:"\F473"}.mdi-school:before{content:"\F474"}.mdi-screen-rotation:before{content:"\F475"}.mdi-screen-rotation-lock:before{content:"\F476"}.mdi-screwdriver:before{content:"\F477"}.mdi-script:before{content:"\F478"}.mdi-sd:before{content:"\F479"}.mdi-seal:before{content:"\F47A"}.mdi-seat-flat:before{content:"\F47B"}.mdi-seat-flat-angled:before{content:"\F47C"}.mdi-seat-individual-suite:before{content:"\F47D"}.mdi-seat-legroom-extra:before{content:"\F47E"}.mdi-seat-legroom-normal:before{content:"\F47F"}.mdi-seat-legroom-reduced:before{content:"\F480"}.mdi-seat-recline-extra:before{content:"\F481"}.mdi-seat-recline-normal:before{content:"\F482"}.mdi-security:before{content:"\F483"}.mdi-security-network:before{content:"\F484"}.mdi-select:before{content:"\F485"}.mdi-select-all:before{content:"\F486"}.mdi-select-inverse:before{content:"\F487"}.mdi-select-off:before{content:"\F488"}.mdi-selection:before{content:"\F489"}.mdi-send:before{content:"\F48A"}.mdi-serial-port:before{content:"\F65C"}.mdi-server:before{content:"\F48B"}.mdi-server-minus:before{content:"\F48C"}.mdi-server-network:before{content:"\F48D"}.mdi-server-network-off:before{content:"\F48E"}.mdi-server-off:before{content:"\F48F"}.mdi-server-plus:before{content:"\F490"}.mdi-server-remove:before{content:"\F491"}.mdi-server-security:before{content:"\F492"}.mdi-settings:before{content:"\F493"}.mdi-settings-box:before{content:"\F494"}.mdi-shape-circle-plus:before{content:"\F65D"}.mdi-shape-plus:before{content:"\F495"}.mdi-shape-polygon-plus:before{content:"\F65E"}.mdi-shape-rectangle-plus:before{content:"\F65F"}.mdi-shape-square-plus:before{content:"\F660"}.mdi-share:before{content:"\F496"}.mdi-share-variant:before{content:"\F497"}.mdi-shield:before{content:"\F498"}.mdi-shield-outline:before{content:"\F499"}.mdi-shopping:before{content:"\F49A"}.mdi-shopping-music:before{content:"\F49B"}.mdi-shredder:before{content:"\F49C"}.mdi-shuffle:before{content:"\F49D"}.mdi-shuffle-disabled:before{content:"\F49E"}.mdi-shuffle-variant:before{content:"\F49F"}.mdi-sigma:before{content:"\F4A0"}.mdi-sigma-lower:before{content:"\F62B"}.mdi-sign-caution:before{content:"\F4A1"}.mdi-signal:before{content:"\F4A2"}.mdi-signal-variant:before{content:"\F60A"}.mdi-silverware:before{content:"\F4A3"}.mdi-silverware-fork:before{content:"\F4A4"}.mdi-silverware-spoon:before{content:"\F4A5"}.mdi-silverware-variant:before{content:"\F4A6"}.mdi-sim:before{content:"\F4A7"}.mdi-sim-alert:before{content:"\F4A8"}.mdi-sim-off:before{content:"\F4A9"}.mdi-sitemap:before{content:"\F4AA"}.mdi-skip-backward:before{content:"\F4AB"}.mdi-skip-forward:before{content:"\F4AC"}.mdi-skip-next:before{content:"\F4AD"}.mdi-skip-next-circle:before{content:"\F661"}.mdi-skip-next-circle-outline:before{content:"\F662"}.mdi-skip-previous:before{content:"\F4AE"}.mdi-skip-previous-circle:before{content:"\F663"}.mdi-skip-previous-circle-outline:before{content:"\F664"}.mdi-skype:before{content:"\F4AF"}.mdi-skype-business:before{content:"\F4B0"}.mdi-slack:before{content:"\F4B1"}.mdi-sleep:before{content:"\F4B2"}.mdi-sleep-off:before{content:"\F4B3"}.mdi-smoking:before{content:"\F4B4"}.mdi-smoking-off:before{content:"\F4B5"}.mdi-snapchat:before{content:"\F4B6"}.mdi-snowman:before{content:"\F4B7"}.mdi-soccer:before{content:"\F4B8"}.mdi-sofa:before{content:"\F4B9"}.mdi-sort:before{content:"\F4BA"}.mdi-sort-alphabetical:before{content:"\F4BB"}.mdi-sort-ascending:before{content:"\F4BC"}.mdi-sort-descending:before{content:"\F4BD"}.mdi-sort-numeric:before{content:"\F4BE"}.mdi-sort-variant:before{content:"\F4BF"}.mdi-soundcloud:before{content:"\F4C0"}.mdi-source-branch:before{content:"\F62C"}.mdi-source-fork:before{content:"\F4C1"}.mdi-source-merge:before{content:"\F62D"}.mdi-source-pull:before{content:"\F4C2"}.mdi-speaker:before{content:"\F4C3"}.mdi-speaker-off:before{content:"\F4C4"}.mdi-speedometer:before{content:"\F4C5"}.mdi-spellcheck:before{content:"\F4C6"}.mdi-spotify:before{content:"\F4C7"}.mdi-spotlight:before{content:"\F4C8"}.mdi-spotlight-beam:before{content:"\F4C9"}.mdi-spray:before{content:"\F665"}.mdi-square-inc:before{content:"\F4CA"}.mdi-square-inc-cash:before{content:"\F4CB"}.mdi-stackexchange:before{content:"\F60B"}.mdi-stackoverflow:before{content:"\F4CC"}.mdi-stairs:before{content:"\F4CD"}.mdi-star:before{content:"\F4CE"}.mdi-star-circle:before{content:"\F4CF"}.mdi-star-half:before{content:"\F4D0"}.mdi-star-off:before{content:"\F4D1"}.mdi-star-outline:before{content:"\F4D2"}.mdi-steam:before{content:"\F4D3"}.mdi-steering:before{content:"\F4D4"}.mdi-step-backward:before{content:"\F4D5"}.mdi-step-backward-2:before{content:"\F4D6"}.mdi-step-forward:before{content:"\F4D7"}.mdi-step-forward-2:before{content:"\F4D8"}.mdi-stethoscope:before{content:"\F4D9"}.mdi-sticker:before{content:"\F5D0"}.mdi-stocking:before{content:"\F4DA"}.mdi-stop:before{content:"\F4DB"}.mdi-stop-circle:before{content:"\F666"}.mdi-stop-circle-outline:before{content:"\F667"}.mdi-store:before{content:"\F4DC"}.mdi-store-24-hour:before{content:"\F4DD"}.mdi-stove:before{content:"\F4DE"}.mdi-subdirectory-arrow-left:before{content:"\F60C"}.mdi-subdirectory-arrow-right:before{content:"\F60D"}.mdi-subway:before{content:"\F4DF"}.mdi-sunglasses:before{content:"\F4E0"}.mdi-surround-sound:before{content:"\F5C5"}.mdi-swap-horizontal:before{content:"\F4E1"}.mdi-swap-vertical:before{content:"\F4E2"}.mdi-swim:before{content:"\F4E3"}.mdi-switch:before{content:"\F4E4"}.mdi-sword:before{content:"\F4E5"}.mdi-sync:before{content:"\F4E6"}.mdi-sync-alert:before{content:"\F4E7"}.mdi-sync-off:before{content:"\F4E8"}.mdi-tab:before{content:"\F4E9"}.mdi-tab-unselected:before{content:"\F4EA"}.mdi-table:before{content:"\F4EB"}.mdi-table-column-plus-after:before{content:"\F4EC"}.mdi-table-column-plus-before:before{content:"\F4ED"}.mdi-table-column-remove:before{content:"\F4EE"}.mdi-table-column-width:before{content:"\F4EF"}.mdi-table-edit:before{content:"\F4F0"}.mdi-table-large:before{content:"\F4F1"}.mdi-table-row-height:before{content:"\F4F2"}.mdi-table-row-plus-after:before{content:"\F4F3"}.mdi-table-row-plus-before:before{content:"\F4F4"}.mdi-table-row-remove:before{content:"\F4F5"}.mdi-tablet:before{content:"\F4F6"}.mdi-tablet-android:before{content:"\F4F7"}.mdi-tablet-ipad:before{content:"\F4F8"}.mdi-tag:before{content:"\F4F9"}.mdi-tag-faces:before{content:"\F4FA"}.mdi-tag-multiple:before{content:"\F4FB"}.mdi-tag-outline:before{content:"\F4FC"}.mdi-tag-text-outline:before{content:"\F4FD"}.mdi-target:before{content:"\F4FE"}.mdi-taxi:before{content:"\F4FF"}.mdi-teamviewer:before{content:"\F500"}.mdi-telegram:before{content:"\F501"}.mdi-television:before{content:"\F502"}.mdi-television-guide:before{content:"\F503"}.mdi-temperature-celsius:before{content:"\F504"}.mdi-temperature-fahrenheit:before{content:"\F505"}.mdi-temperature-kelvin:before{content:"\F506"}.mdi-tennis:before{content:"\F507"}.mdi-tent:before{content:"\F508"}.mdi-terrain:before{content:"\F509"}.mdi-test-tube:before{content:"\F668"}.mdi-text-shadow:before{content:"\F669"}.mdi-text-to-speech:before{content:"\F50A"}.mdi-text-to-speech-off:before{content:"\F50B"}.mdi-textbox:before{content:"\F60E"}.mdi-texture:before{content:"\F50C"}.mdi-theater:before{content:"\F50D"}.mdi-theme-light-dark:before{content:"\F50E"}.mdi-thermometer:before{content:"\F50F"}.mdi-thermometer-lines:before{content:"\F510"}.mdi-thumb-down:before{content:"\F511"}.mdi-thumb-down-outline:before{content:"\F512"}.mdi-thumb-up:before{content:"\F513"}.mdi-thumb-up-outline:before{content:"\F514"}.mdi-thumbs-up-down:before{content:"\F515"}.mdi-ticket:before{content:"\F516"}.mdi-ticket-account:before{content:"\F517"}.mdi-ticket-confirmation:before{content:"\F518"}.mdi-tie:before{content:"\F519"}.mdi-timelapse:before{content:"\F51A"}.mdi-timer:before{content:"\F51B"}.mdi-timer-10:before{content:"\F51C"}.mdi-timer-3:before{content:"\F51D"}.mdi-timer-off:before{content:"\F51E"}.mdi-timer-sand:before{content:"\F51F"}.mdi-timetable:before{content:"\F520"}.mdi-toggle-switch:before{content:"\F521"}.mdi-toggle-switch-off:before{content:"\F522"}.mdi-tooltip:before{content:"\F523"}.mdi-tooltip-edit:before{content:"\F524"}.mdi-tooltip-image:before{content:"\F525"}.mdi-tooltip-outline:before{content:"\F526"}.mdi-tooltip-outline-plus:before{content:"\F527"}.mdi-tooltip-text:before{content:"\F528"}.mdi-tooth:before{content:"\F529"}.mdi-tor:before{content:"\F52A"}.mdi-traffic-light:before{content:"\F52B"}.mdi-train:before{content:"\F52C"}.mdi-tram:before{content:"\F52D"}.mdi-transcribe:before{content:"\F52E"}.mdi-transcribe-close:before{content:"\F52F"}.mdi-transfer:before{content:"\F530"}.mdi-translate:before{content:"\F5CA"}.mdi-tree:before{content:"\F531"}.mdi-trello:before{content:"\F532"}.mdi-trending-down:before{content:"\F533"}.mdi-trending-neutral:before{content:"\F534"}.mdi-trending-up:before{content:"\F535"}.mdi-triangle:before{content:"\F536"}.mdi-triangle-outline:before{content:"\F537"}.mdi-trophy:before{content:"\F538"}.mdi-trophy-award:before{content:"\F539"}.mdi-trophy-outline:before{content:"\F53A"}.mdi-trophy-variant:before{content:"\F53B"}.mdi-trophy-variant-outline:before{content:"\F53C"}.mdi-truck:before{content:"\F53D"}.mdi-truck-delivery:before{content:"\F53E"}.mdi-tshirt-crew:before{content:"\F53F"}.mdi-tshirt-v:before{content:"\F540"}.mdi-tumblr:before{content:"\F541"}.mdi-tumblr-reblog:before{content:"\F542"}.mdi-tune:before{content:"\F62E"}.mdi-tune-vertical:before{content:"\F66A"}.mdi-twitch:before{content:"\F543"}.mdi-twitter:before{content:"\F544"}.mdi-twitter-box:before{content:"\F545"}.mdi-twitter-circle:before{content:"\F546"}.mdi-twitter-retweet:before{content:"\F547"}.mdi-ubuntu:before{content:"\F548"}.mdi-umbraco:before{content:"\F549"}.mdi-umbrella:before{content:"\F54A"}.mdi-umbrella-outline:before{content:"\F54B"}.mdi-undo:before{content:"\F54C"}.mdi-undo-variant:before{content:"\F54D"}.mdi-unfold-less:before{content:"\F54E"}.mdi-unfold-more:before{content:"\F54F"}.mdi-ungroup:before{content:"\F550"}.mdi-untappd:before{content:"\F551"}.mdi-upload:before{content:"\F552"}.mdi-usb:before{content:"\F553"}.mdi-vector-arrange-above:before{content:"\F554"}.mdi-vector-arrange-below:before{content:"\F555"}.mdi-vector-circle:before{content:"\F556"}.mdi-vector-circle-variant:before{content:"\F557"}.mdi-vector-combine:before{content:"\F558"}.mdi-vector-curve:before{content:"\F559"}.mdi-vector-difference:before{content:"\F55A"}.mdi-vector-difference-ab:before{content:"\F55B"}.mdi-vector-difference-ba:before{content:"\F55C"}.mdi-vector-intersection:before{content:"\F55D"}.mdi-vector-line:before{content:"\F55E"}.mdi-vector-point:before{content:"\F55F"}.mdi-vector-polygon:before{content:"\F560"}.mdi-vector-polyline:before{content:"\F561"}.mdi-vector-rectangle:before{content:"\F5C6"}.mdi-vector-selection:before{content:"\F562"}.mdi-vector-square:before{content:"\F001"}.mdi-vector-triangle:before{content:"\F563"}.mdi-vector-union:before{content:"\F564"}.mdi-verified:before{content:"\F565"}.mdi-vibrate:before{content:"\F566"}.mdi-video:before{content:"\F567"}.mdi-video-off:before{content:"\F568"}.mdi-video-switch:before{content:"\F569"}.mdi-view-agenda:before{content:"\F56A"}.mdi-view-array:before{content:"\F56B"}.mdi-view-carousel:before{content:"\F56C"}.mdi-view-column:before{content:"\F56D"}.mdi-view-dashboard:before{content:"\F56E"}.mdi-view-day:before{content:"\F56F"}.mdi-view-grid:before{content:"\F570"}.mdi-view-headline:before{content:"\F571"}.mdi-view-list:before{content:"\F572"}.mdi-view-module:before{content:"\F573"}.mdi-view-quilt:before{content:"\F574"}.mdi-view-stream:before{content:"\F575"}.mdi-view-week:before{content:"\F576"}.mdi-vimeo:before{content:"\F577"}.mdi-vine:before{content:"\F578"}.mdi-violin:before{content:"\F60F"}.mdi-visualstudio:before{content:"\F610"}.mdi-vk:before{content:"\F579"}.mdi-vk-box:before{content:"\F57A"}.mdi-vk-circle:before{content:"\F57B"}.mdi-vlc:before{content:"\F57C"}.mdi-voice:before{content:"\F5CB"}.mdi-voicemail:before{content:"\F57D"}.mdi-volume-high:before{content:"\F57E"}.mdi-volume-low:before{content:"\F57F"}.mdi-volume-medium:before{content:"\F580"}.mdi-volume-off:before{content:"\F581"}.mdi-vpn:before{content:"\F582"}.mdi-walk:before{content:"\F583"}.mdi-wallet:before{content:"\F584"}.mdi-wallet-giftcard:before{content:"\F585"}.mdi-wallet-membership:before{content:"\F586"}.mdi-wallet-travel:before{content:"\F587"}.mdi-wan:before{content:"\F588"}.mdi-watch:before{content:"\F589"}.mdi-watch-export:before{content:"\F58A"}.mdi-watch-import:before{content:"\F58B"}.mdi-water:before{content:"\F58C"}.mdi-water-off:before{content:"\F58D"}.mdi-water-percent:before{content:"\F58E"}.mdi-water-pump:before{content:"\F58F"}.mdi-watermark:before{content:"\F612"}.mdi-weather-cloudy:before{content:"\F590"}.mdi-weather-fog:before{content:"\F591"}.mdi-weather-hail:before{content:"\F592"}.mdi-weather-lightning:before{content:"\F593"}.mdi-weather-night:before{content:"\F594"}.mdi-weather-partlycloudy:before{content:"\F595"}.mdi-weather-pouring:before{content:"\F596"}.mdi-weather-rainy:before{content:"\F597"}.mdi-weather-snowy:before{content:"\F598"}.mdi-weather-sunny:before{content:"\F599"}.mdi-weather-sunset:before{content:"\F59A"}.mdi-weather-sunset-down:before{content:"\F59B"}.mdi-weather-sunset-up:before{content:"\F59C"}.mdi-weather-windy:before{content:"\F59D"}.mdi-weather-windy-variant:before{content:"\F59E"}.mdi-web:before{content:"\F59F"}.mdi-webcam:before{content:"\F5A0"}.mdi-webhook:before{content:"\F62F"}.mdi-wechat:before{content:"\F611"}.mdi-weight:before{content:"\F5A1"}.mdi-weight-kilogram:before{content:"\F5A2"}.mdi-whatsapp:before{content:"\F5A3"}.mdi-wheelchair-accessibility:before{content:"\F5A4"}.mdi-white-balance-auto:before{content:"\F5A5"}.mdi-white-balance-incandescent:before{content:"\F5A6"}.mdi-white-balance-iridescent:before{content:"\F5A7"}.mdi-white-balance-sunny:before{content:"\F5A8"}.mdi-wifi:before{content:"\F5A9"}.mdi-wifi-off:before{content:"\F5AA"}.mdi-wii:before{content:"\F5AB"}.mdi-wikipedia:before{content:"\F5AC"}.mdi-window-close:before{content:"\F5AD"}.mdi-window-closed:before{content:"\F5AE"}.mdi-window-maximize:before{content:"\F5AF"}.mdi-window-minimize:before{content:"\F5B0"}.mdi-window-open:before{content:"\F5B1"}.mdi-window-restore:before{content:"\F5B2"}.mdi-windows:before{content:"\F5B3"}.mdi-wordpress:before{content:"\F5B4"}.mdi-worker:before{content:"\F5B5"}.mdi-wrap:before{content:"\F5B6"}.mdi-wrench:before{content:"\F5B7"}.mdi-wunderlist:before{content:"\F5B8"}.mdi-xaml:before{content:"\F673"}.mdi-xbox:before{content:"\F5B9"}.mdi-xbox-controller:before{content:"\F5BA"}.mdi-xbox-controller-off:before{content:"\F5BB"}.mdi-xda:before{content:"\F5BC"}.mdi-xing:before{content:"\F5BD"}.mdi-xing-box:before{content:"\F5BE"}.mdi-xing-circle:before{content:"\F5BF"}.mdi-xml:before{content:"\F5C0"}.mdi-yeast:before{content:"\F5C1"}.mdi-yelp:before{content:"\F5C2"}.mdi-youtube-play:before{content:"\F5C3"}.mdi-zip-box:before{content:"\F5C4"}.mdi-18px{font-size:18px}.mdi-24px{font-size:24px}.mdi-36px{font-size:36px}.mdi-48px{font-size:48px}.mdi-dark{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive{color:rgba(0,0,0,0.26)}.mdi-light{color:#fff}.mdi-light.mdi-inactive{color:rgba(255,255,255,0.3)}.mdi-rotate-45{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.mdi-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-135{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.mdi-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-225{-webkit-transform:rotate(225deg);-ms-transform:rotate(225deg);transform:rotate(225deg)}.mdi-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-rotate-315{-webkit-transform:rotate(315deg);-ms-transform:rotate(315deg);transform:rotate(315deg)}.mdi-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"} +/*# sourceMappingURL=materialdesignicons.min.css.map */ diff --git a/assets/less/icons/material-design/css/materialdesignicons.min.css.map b/assets/less/icons/material-design/css/materialdesignicons.min.css.map new file mode 100644 index 0000000..863ad28 --- /dev/null +++ b/assets/less/icons/material-design/css/materialdesignicons.min.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,UAUC,CATC,WAAW,CAAE,uBAAmB,CAChC,GAAG,CAAE,wDAAuE,CAC5E,GAAG,CAAE,6ZAA0G,CAK/G,WAAW,CAAE,MAAM,CACnB,UAAU,CAAE,MAAM,CCTpB,IAAoB,CAClB,OAAO,CAAE,YAAY,CACrB,IAAI,CAAE,mDAAiE,CACvE,SAAS,CAAE,OAAO,CAClB,cAAc,CAAE,IAAI,CACpB,sBAAsB,CAAE,WAAW,CACnC,uBAAuB,CAAE,SAAS,CAClC,SAAS,CAAE,eAAe,CCNxB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,cAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kDAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mDAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+CAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,cAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,cAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,4BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,cAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,6BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,8BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oCAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,yBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,0BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,qBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,kBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,sBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,2BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,+BAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,oBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,uBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,eAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,iBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,gBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,wBAAmC,CAC/B,OAAO,CAAE,OAAY,CADzB,mBAAmC,CAC/B,OAAO,CAAE,OAAY,CCF7B,SAA8B,CAAE,SAAS,CAAE,IAAI,CAC/C,SAA8B,CAAE,SAAS,CAAE,IAAI,CAC/C,SAA8B,CAAE,SAAS,CAAE,IAAI,CAC/C,SAA8B,CAAE,SAAS,CAAE,IAAI,CAC/C,SAAyB,CAAE,KAAK,CAAE,gBAAmB,CACrD,sBAAsC,CAAE,KAAK,CAAE,gBAAmB,CAClE,UAA0B,CAAE,KAAK,CAAE,IAAsB,CACzD,uBAAuC,CAAE,KAAK,CAAE,qBAAwB,CAGpE,cAAsC,CAClC,iBAAiB,CAAE,aAAqB,CACxC,aAAa,CAAE,aAAqB,CACpC,SAAS,CAAE,aAAqB,CAHpC,cAAsC,CAClC,iBAAiB,CAAE,aAAqB,CACxC,aAAa,CAAE,aAAqB,CACpC,SAAS,CAAE,aAAqB,CAHpC,eAAsC,CAClC,iBAAiB,CAAE,cAAqB,CACxC,aAAa,CAAE,cAAqB,CACpC,SAAS,CAAE,cAAqB,CAHpC,eAAsC,CAClC,iBAAiB,CAAE,cAAqB,CACxC,aAAa,CAAE,cAAqB,CACpC,SAAS,CAAE,cAAqB,CAHpC,eAAsC,CAClC,iBAAiB,CAAE,cAAqB,CACxC,aAAa,CAAE,cAAqB,CACpC,SAAS,CAAE,cAAqB,CAHpC,eAAsC,CAClC,iBAAiB,CAAE,cAAqB,CACxC,aAAa,CAAE,cAAqB,CACpC,SAAS,CAAE,cAAqB,CAHpC,eAAsC,CAClC,iBAAiB,CAAE,cAAqB,CACxC,aAAa,CAAE,cAAqB,CACpC,SAAS,CAAE,cAAqB,CAGxC,oBAAoC,CAC5B,iBAAiB,CAAE,UAAU,CAC7B,SAAS,CAAE,UAAU,CACrB,MAAM,CAAE,KAAK,CACb,UAAU,CAAE,OAAO,CAE3B,kBAAkC,CAC1B,iBAAiB,CAAE,UAAU,CAC7B,SAAS,CAAE,UAAU,CACrB,MAAM,CAAE,KAAK,CACb,UAAU,CAAE,OAAO", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_icons.scss","../scss/_extras.scss"], +"names": [], +"file": "materialdesignicons.min.css" +} diff --git a/assets/less/icons/material-design/fonts/materialdesignicons-webfont.eot b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.eot new file mode 100644 index 0000000..9be3446 Binary files /dev/null and b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.eot differ diff --git a/assets/less/icons/material-design/fonts/materialdesignicons-webfont.svg b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.svg new file mode 100644 index 0000000..266dea6 --- /dev/null +++ b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.svg @@ -0,0 +1,4962 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<defs> + <font id="Material Design Icons" horiz-adv-x="24"> + <font-face font-family="Material Design Icons" + units-per-em="512" ascent="448" + descent="64" /> + <missing-glyph horiz-adv-x="0" /> + <glyph glyph-name="access-point" + unicode="&#xF002;" + horiz-adv-x="512" d=" M105.1733333333333 342.8266666666667C66.56 304.2133333333334 42.6666666666667 250.88 42.6666666666667 192C42.6666666666667 133.12 66.56 79.7866666666668 105.1733333333333 41.1733333333333L135.2533333333333 71.2533333333333C104.32 101.9733333333334 85.3333333333333 144.64 85.3333333333333 192C85.3333333333333 239.1466666666667 104.32 282.0266666666667 135.2533333333333 312.7466666666667L105.1733333333333 342.8266666666667M406.8266666666667 342.8266666666667L376.7466666666667 312.7466666666667C407.68 282.0266666666667 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 144.64 407.68 101.9733333333334 376.7466666666667 71.2533333333333L406.8266666666667 41.1733333333333C445.44 79.7866666666666 469.3333333333333 133.12 469.3333333333333 192C469.3333333333333 250.88 445.44 304.2133333333334 406.8266666666667 342.8266666666667M165.5466666666667 282.4533333333334C142.2933333333333 259.2000000000001 128 227.2 128 192C128 156.8 142.2933333333333 124.8 165.5466666666667 101.5466666666666L195.6266666666667 131.6266666666667C180.2666666666667 146.9866666666667 170.6666666666667 168.3200000000001 170.6666666666667 192S180.2666666666667 237.0133333333333 195.6266666666667 252.3733333333334L165.5466666666667 282.4533333333334M346.4533333333334 282.4533333333334L316.3733333333334 252.3733333333334C331.7333333333334 237.0133333333333 341.3333333333333 215.68 341.3333333333333 192S331.7333333333334 146.9866666666667 316.3733333333334 131.6266666666667L346.4533333333333 101.5466666666667C369.7066666666666 124.8 384 156.8 384 192C384 227.2 369.7066666666666 259.2000000000001 346.4533333333333 282.4533333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="access-point-network" + unicode="&#xF003;" + horiz-adv-x="512" d=" M105.1733333333333 385.4933333333334C66.56 346.88 42.6666666666667 293.5466666666667 42.6666666666667 234.6666666666667C42.6666666666667 175.7866666666667 66.56 122.4533333333334 105.1733333333333 83.84L135.2533333333333 113.92C104.32 144.64 85.3333333333333 187.3066666666667 85.3333333333333 234.6666666666667C85.3333333333333 281.8133333333334 104.32 324.6933333333334 135.2533333333333 355.4133333333334L105.1733333333333 385.4933333333334M406.8266666666667 385.4933333333334L376.7466666666667 355.4133333333334C407.68 324.6933333333334 426.6666666666667 281.8133333333334 426.6666666666667 234.6666666666667C426.6666666666667 187.3066666666667 407.68 144.6400000000001 376.7466666666667 113.92L406.8266666666667 83.84C445.44 122.4533333333334 469.3333333333333 175.7866666666667 469.3333333333333 234.6666666666667C469.3333333333333 293.5466666666667 445.44 346.88 406.8266666666667 385.4933333333334M165.5466666666667 325.12C142.2933333333333 301.8666666666667 128 269.8666666666667 128 234.6666666666667C128 199.4666666666667 142.2933333333333 167.4666666666667 165.5466666666667 144.2133333333334L195.6266666666667 174.2933333333334C180.2666666666667 189.6533333333334 170.6666666666667 210.9866666666667 170.6666666666667 234.6666666666667S180.2666666666667 279.68 195.6266666666667 295.04L165.5466666666667 325.12M346.4533333333334 325.12L316.3733333333334 295.04C331.7333333333334 279.68 341.3333333333333 258.3466666666667 341.3333333333333 234.6666666666667S331.7333333333334 189.6533333333334 316.3733333333334 174.2933333333334L346.4533333333333 144.2133333333334C369.7066666666666 167.4666666666667 384 199.4666666666667 384 234.6666666666667C384 269.8666666666667 369.7066666666666 301.8666666666667 346.4533333333333 325.12M256 277.3333333333334C232.5333333333334 277.3333333333334 213.3333333333333 258.1333333333334 213.3333333333333 234.6666666666667S232.5333333333334 192 256 192S298.6666666666667 211.2 298.6666666666667 234.6666666666667S279.4666666666667 277.3333333333334 256 277.3333333333334M234.6666666666667 149.3333333333334V64H213.3333333333333C201.6 64 192 54.4 192 42.6666666666667H42.6666666666667V0H192C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C310.4 -21.3333333333333 320 -11.7333333333333 320 0H469.3333333333333V42.6666666666667H320C320 54.4 310.4 64 298.6666666666667 64H277.3333333333333V149.3333333333334H234.6666666666667z" /> + <glyph glyph-name="account" + unicode="&#xF004;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334S303.1466666666667 192 256 192S170.6666666666667 230.1866666666667 170.6666666666667 277.3333333333334S208.8533333333333 362.6666666666667 256 362.6666666666667M256 149.3333333333334C350.2933333333334 149.3333333333334 426.6666666666667 111.1466666666667 426.6666666666667 64V21.3333333333334H85.3333333333333V64C85.3333333333333 111.1466666666667 161.7066666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="account-alert" + unicode="&#xF005;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667C260.48 362.6666666666667 298.6666666666667 324.48 298.6666666666667 277.3333333333334S260.48 192 213.3333333333333 192S128 230.1866666666667 128 277.3333333333334S166.1866666666667 362.6666666666667 213.3333333333333 362.6666666666667M213.3333333333333 149.3333333333334C307.6266666666667 149.3333333333334 384 111.1466666666667 384 64V21.3333333333334H42.6666666666667V64C42.6666666666667 111.1466666666667 119.04 149.3333333333334 213.3333333333333 149.3333333333334M426.6666666666667 192V298.6666666666667H469.3333333333333V192H426.6666666666667M426.6666666666667 106.6666666666667V149.3333333333334H469.3333333333333V106.6666666666667H426.6666666666667z" /> + <glyph glyph-name="account-box" + unicode="&#xF006;" + horiz-adv-x="512" d=" M128 85.3333333333334C128 128 213.3333333333333 151.4666666666667 256 151.4666666666667S384 128 384 85.3333333333334V64H128M320 256C320 220.5866666666667 291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320S320 291.4133333333334 320 256M64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="account-box-outline" + unicode="&#xF007;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M352 101.3333333333334C352 133.3333333333334 288 149.3333333333334 256 149.3333333333334S160 133.3333333333334 160 101.3333333333334V85.3333333333334H352M256 186.6666666666667C282.4533333333333 186.6666666666667 304 208.2133333333334 304 234.6666666666667S282.4533333333333 282.6666666666667 256 282.6666666666667S208 261.12 208 234.6666666666667S229.5466666666667 186.6666666666667 256 186.6666666666667z" /> + <glyph glyph-name="account-card-details" + unicode="&#xF5D2;" + horiz-adv-x="512" d=" M42.6666666666667 384H469.3333333333333C491.7333333333333 384 512 363.7333333333334 512 341.3333333333334V42.6666666666667C512 20.2666666666667 491.7333333333333 0 469.3333333333333 0H42.6666666666667C20.2666666666667 0 0 20.2666666666667 0 42.6666666666667V341.3333333333334C0 363.7333333333334 20.2666666666667 384 42.6666666666667 384M298.6666666666667 320V298.6666666666667H469.3333333333333V320H298.6666666666667M298.6666666666667 277.3333333333334V256H469.3333333333333V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667V213.3333333333334H448V234.6666666666667H298.6666666666667M170.6666666666667 151.2533333333333C128 151.2533333333333 42.6666666666667 128 42.6666666666667 85.3333333333334V64H298.6666666666667V85.3333333333334C298.6666666666667 128 213.3333333333333 151.2533333333333 170.6666666666667 151.2533333333333M170.6666666666667 320C135.2533333333333 320 106.6666666666667 291.4133333333334 106.6666666666667 256S135.2533333333333 192 170.6666666666667 192S234.6666666666667 220.5866666666667 234.6666666666667 256S206.08 320 170.6666666666667 320z" /> + <glyph glyph-name="account-check" + unicode="&#xF008;" + horiz-adv-x="512" d=" M192 341.3333333333334C233.1733333333333 341.3333333333334 266.6666666666667 307.8400000000001 266.6666666666667 266.6666666666667S233.1733333333333 192 192 192S117.3333333333333 225.4933333333334 117.3333333333333 266.6666666666667S150.8266666666667 341.3333333333334 192 341.3333333333334M192 154.6666666666667C274.56 154.6666666666667 341.3333333333333 121.1733333333334 341.3333333333333 80V42.6666666666667H42.6666666666667V80C42.6666666666667 121.1733333333334 109.44 154.6666666666667 192 154.6666666666667M362.6666666666667 177.92L304 241.92L328.7466666666667 266.6666666666667L362.6666666666667 232.7466666666667L439.2533333333334 309.3333333333334L464 279.2533333333334L362.6666666666667 177.92z" /> + <glyph glyph-name="account-circle" + unicode="&#xF009;" + horiz-adv-x="512" d=" M256 38.4C202.6666666666667 38.4 155.52 65.7066666666667 128 106.6666666666667C128.64 149.3333333333334 213.3333333333333 172.8 256 172.8S383.36 149.3333333333334 384 106.6666666666667C356.48 65.7066666666667 309.3333333333333 38.4 256 38.4M256 341.3333333333334C291.4133333333333 341.3333333333334 320 312.7466666666667 320 277.3333333333334S291.4133333333333 213.3333333333334 256 213.3333333333334S192 241.92 192 277.3333333333334S220.5866666666667 341.3333333333334 256 341.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="account-convert" + unicode="&#xF00A;" + horiz-adv-x="512" d=" M160 -10.6666666666666L188.8 17.92L270.08 -63.36L256 -64C121.8133333333333 -64 11.9466666666667 39.2533333333333 1.0666666666667 170.6666666666667H33.0666666666667C40.7466666666667 90.4533333333334 90.6666666666667 22.6133333333333 160 -10.6666666666666M352 394.6666666666667L323.2 366.0800000000001L241.92 447.36L256 448C390.1866666666666 448 500.0533333333333 344.7466666666667 510.9333333333333 213.3333333333334H478.9333333333333C471.2533333333333 293.5466666666667 421.3333333333333 361.1733333333334 352 394.6666666666667M128 85.3333333333334C128 128 213.3333333333333 151.4666666666667 256 151.4666666666667S384 128 384 85.3333333333334V64H128V85.3333333333334M320 256C320 220.5866666666667 291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320S320 291.4133333333334 320 256z" /> + <glyph glyph-name="account-key" + unicode="&#xF00B;" + horiz-adv-x="512" d=" M234.6666666666667 234.6666666666667V192H213.3333333333333V149.3333333333334H170.6666666666667V192H124.3733333333333C115.6266666666667 167.04 91.9466666666667 149.3333333333334 64 149.3333333333334C28.5866666666667 149.3333333333334 0 177.92 0 213.3333333333334S28.5866666666667 277.3333333333334 64 277.3333333333334C91.9466666666667 277.3333333333334 115.6266666666667 259.6266666666667 124.3733333333333 234.6666666666667H234.6666666666667M64 234.6666666666667C52.2666666666667 234.6666666666667 42.6666666666667 225.0666666666667 42.6666666666667 213.3333333333334S52.2666666666667 192 64 192S85.3333333333333 201.6 85.3333333333333 213.3333333333334S75.7333333333333 234.6666666666667 64 234.6666666666667M341.3333333333333 149.3333333333334C398.2933333333334 149.3333333333334 512 120.7466666666667 512 64V21.3333333333334H170.6666666666667V64C170.6666666666667 120.7466666666667 284.3733333333334 149.3333333333334 341.3333333333333 149.3333333333334M341.3333333333333 192C294.1866666666666 192 256 230.1866666666667 256 277.3333333333334S294.1866666666666 362.6666666666667 341.3333333333333 362.6666666666667S426.6666666666667 324.48 426.6666666666667 277.3333333333334S388.48 192 341.3333333333333 192z" /> + <glyph glyph-name="account-location" + unicode="&#xF00C;" + horiz-adv-x="512" d=" M384 106.6666666666667H128V125.8666666666667C128 168.5333333333334 213.3333333333333 192 256 192S384 168.5333333333334 384 125.8666666666667M256 334.9333333333334C288 334.9333333333334 313.6 309.3333333333334 313.6 277.3333333333334C313.6 245.3333333333334 288 219.7333333333334 256 219.7333333333334C224 219.7333333333334 198.4 245.3333333333334 198.4 277.3333333333334C198.4 309.3333333333334 224 334.9333333333334 256 334.9333333333334M405.3333333333333 405.3333333333333H106.6666666666667C82.9866666666667 405.3333333333333 64 386.3466666666667 64 362.6666666666667V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192L256 -42.6666666666666L320 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V362.6666666666667C448 386.3466666666667 428.8 405.3333333333333 405.3333333333333 405.3333333333333z" /> + <glyph glyph-name="account-minus" + unicode="&#xF00D;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M21.3333333333333 234.6666666666667V192H192V234.6666666666667M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192z" /> + <glyph glyph-name="account-multiple" + unicode="&#xF00E;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667C335.1466666666667 170.6666666666667 328.1066666666667 170.6666666666667 320.64 169.6C345.3866666666667 151.68 362.6666666666667 128 362.6666666666667 96V42.6666666666667H490.6666666666666V96C490.6666666666666 145.7066666666667 391.04 170.6666666666667 341.3333333333333 170.6666666666667M170.6666666666667 170.6666666666667C120.96 170.6666666666667 21.3333333333333 145.7066666666667 21.3333333333333 96V42.6666666666667H320V96C320 145.7066666666667 220.3733333333333 170.6666666666667 170.6666666666667 170.6666666666667M170.6666666666667 213.3333333333334C206.08 213.3333333333334 234.6666666666667 241.92 234.6666666666667 277.3333333333334S206.08 341.3333333333334 170.6666666666667 341.3333333333334S106.6666666666667 312.7466666666667 106.6666666666667 277.3333333333334S135.2533333333333 213.3333333333334 170.6666666666667 213.3333333333334M341.3333333333333 213.3333333333334C376.7466666666667 213.3333333333334 405.3333333333333 241.92 405.3333333333333 277.3333333333334S376.7466666666667 341.3333333333334 341.3333333333333 341.3333333333334S277.3333333333333 312.7466666666667 277.3333333333333 277.3333333333334S305.92 213.3333333333334 341.3333333333333 213.3333333333334z" /> + <glyph glyph-name="account-multiple-minus" + unicode="&#xF5D3;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667C234.6666666666667 170.6666666666667 149.3333333333333 149.3333333333334 149.3333333333333 106.6666666666667V64H405.3333333333333V106.6666666666667C405.3333333333333 149.3333333333334 320 170.6666666666667 277.3333333333333 170.6666666666667M418.56 167.2533333333333C436.2666666666667 151.8933333333333 448 131.84 448 106.6666666666667V64H512V106.6666666666667C512 139.52 461.4399999999999 160 418.56 167.2533333333333M277.3333333333333 213.3333333333334C312.7466666666667 213.3333333333334 341.3333333333333 241.92 341.3333333333333 277.3333333333334S312.7466666666667 341.3333333333334 277.3333333333333 341.3333333333334S213.3333333333333 312.7466666666667 213.3333333333333 277.3333333333334S241.92 213.3333333333334 277.3333333333333 213.3333333333334M384 213.3333333333334C419.4133333333333 213.3333333333334 448 241.92 448 277.3333333333334S419.4133333333333 341.3333333333334 384 341.3333333333334C377.1733333333333 341.3333333333334 370.56 340.2666666666667 364.3733333333333 338.3466666666667C376.5333333333333 321.0666666666667 384 299.9466666666667 384 277.3333333333334C384 254.72 376.5333333333333 233.8133333333334 364.3733333333333 216.5333333333334C370.56 214.4 377.1733333333333 213.3333333333334 384 213.3333333333334M170.6666666666667 234.6666666666667H0V192H170.6666666666667V234.6666666666667z" /> + <glyph glyph-name="account-multiple-outline" + unicode="&#xF00F;" + horiz-adv-x="512" d=" M352 309.3333333333334C375.4666666666667 309.3333333333334 394.6666666666667 290.1333333333334 394.6666666666667 266.6666666666667S375.4666666666667 224 352 224S309.3333333333333 243.2 309.3333333333333 266.6666666666667S328.5333333333333 309.3333333333334 352 309.3333333333334M352 192C393.1733333333333 192 426.6666666666667 225.4933333333334 426.6666666666667 266.6666666666667S393.1733333333333 341.3333333333334 352 341.3333333333334S277.3333333333333 307.8400000000001 277.3333333333333 266.6666666666667S310.8266666666667 192 352 192M160 309.3333333333334C183.4666666666667 309.3333333333334 202.6666666666667 290.1333333333334 202.6666666666667 266.6666666666667S183.4666666666667 224 160 224S117.3333333333333 243.2 117.3333333333333 266.6666666666667S136.5333333333333 309.3333333333334 160 309.3333333333334M160 192C201.1733333333333 192 234.6666666666667 225.4933333333334 234.6666666666667 266.6666666666667S201.1733333333333 341.3333333333334 160 341.3333333333334S85.3333333333333 307.8400000000001 85.3333333333333 266.6666666666667S118.8266666666667 192 160 192M458.6666666666666 74.6666666666667H298.6666666666667V101.3333333333334C298.6666666666667 111.1466666666667 294.4 119.68 288 127.36C306.3466666666667 133.7600000000001 329.3866666666667 138.6666666666667 352 138.6666666666667C404.0533333333334 138.6666666666667 458.6666666666666 112.8533333333334 458.6666666666666 101.3333333333334M266.6666666666667 74.6666666666667H53.3333333333333V101.3333333333334C53.3333333333333 112.8533333333334 107.9466666666667 138.6666666666667 160 138.6666666666667S266.6666666666667 112.8533333333334 266.6666666666667 101.3333333333334M352 170.6666666666667C326.4 170.6666666666667 286.5066666666667 163.4133333333334 256 149.3333333333334C225.4933333333334 163.6266666666667 185.6 170.6666666666667 160 170.6666666666667C113.7066666666667 170.6666666666667 21.3333333333333 147.6266666666667 21.3333333333333 101.3333333333334V42.6666666666667H490.6666666666666V101.3333333333334C490.6666666666666 147.6266666666667 398.2933333333334 170.6666666666667 352 170.6666666666667z" /> + <glyph glyph-name="account-multiple-plus" + unicode="&#xF010;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667C234.6666666666667 170.6666666666667 149.3333333333333 149.3333333333334 149.3333333333333 106.6666666666667V64H405.3333333333333V106.6666666666667C405.3333333333333 149.3333333333334 320 170.6666666666667 277.3333333333333 170.6666666666667M418.56 167.2533333333333C436.2666666666667 151.8933333333333 448 131.84 448 106.6666666666667V64H512V106.6666666666667C512 139.52 461.4399999999999 160 418.56 167.2533333333333M277.3333333333333 213.3333333333334C312.7466666666667 213.3333333333334 341.3333333333333 241.92 341.3333333333333 277.3333333333334S312.7466666666667 341.3333333333334 277.3333333333333 341.3333333333334S213.3333333333333 312.7466666666667 213.3333333333333 277.3333333333334S241.92 213.3333333333334 277.3333333333333 213.3333333333334M384 213.3333333333334C419.4133333333333 213.3333333333334 448 241.92 448 277.3333333333334S419.4133333333333 341.3333333333334 384 341.3333333333334C377.1733333333333 341.3333333333334 370.56 340.2666666666667 364.3733333333333 338.3466666666667C376.5333333333333 321.0666666666667 384 299.9466666666667 384 277.3333333333334C384 254.72 376.5333333333333 233.8133333333334 364.3733333333333 216.5333333333334C370.56 214.4 377.1733333333333 213.3333333333334 384 213.3333333333334M170.6666666666667 234.6666666666667H106.6666666666667V298.6666666666667H64V234.6666666666667H0V192H64V128H106.6666666666667V192H170.6666666666667V234.6666666666667z" /> + <glyph glyph-name="account-network" + unicode="&#xF011;" + horiz-adv-x="512" d=" M277.3333333333333 106.6666666666667V64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H106.6666666666667V138.6666666666667C106.6666666666667 179.84 173.44 213.3333333333334 256 213.3333333333334S405.3333333333333 179.84 405.3333333333333 138.6666666666667V106.6666666666667H277.3333333333333M256 405.3333333333333C297.1733333333333 405.3333333333333 330.6666666666667 371.8400000000001 330.6666666666667 330.6666666666667S297.1733333333333 256 256 256S181.3333333333333 289.4933333333334 181.3333333333333 330.6666666666667S214.8266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="account-off" + unicode="&#xF012;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334C341.3333333333333 235.7333333333334 311.4666666666667 200.96 272 193.4933333333334L172.16 293.3333333333334C179.6266666666667 332.8 214.4 362.6666666666667 256 362.6666666666667M261.9733333333333 149.3333333333334L389.9733333333334 21.3333333333334L426.6666666666667 -15.36L399.5733333333333 -42.6666666666666L335.5733333333333 21.3333333333334H85.3333333333333V64C85.3333333333333 103.2533333333333 138.6666666666667 136.3200000000001 210.56 146.3466666666667L59.3066666666667 297.6L86.4 324.6933333333334L261.9733333333333 149.3333333333334M426.6666666666667 64V38.8266666666667L322.9866666666667 142.5066666666667C384 129.4933333333334 426.6666666666667 99.2 426.6666666666667 64z" /> + <glyph glyph-name="account-outline" + unicode="&#xF013;" + horiz-adv-x="512" d=" M256 170.6666666666667C199.04 170.6666666666667 85.3333333333333 142.2933333333334 85.3333333333333 85.3333333333334V21.3333333333334H426.6666666666667V85.3333333333334C426.6666666666667 142.2933333333334 312.96 170.6666666666667 256 170.6666666666667M256 362.6666666666667C208.8533333333333 362.6666666666667 170.6666666666667 324.48 170.6666666666667 277.3333333333334S208.8533333333333 192 256 192S341.3333333333333 230.1866666666667 341.3333333333333 277.3333333333334S303.1466666666667 362.6666666666667 256 362.6666666666667M256 130.1333333333333C319.36 130.1333333333333 386.1333333333334 98.9866666666667 386.1333333333334 85.3333333333334V61.8666666666667H125.8666666666667V85.3333333333334C125.8666666666667 98.9866666666667 192 130.1333333333333 256 130.1333333333333M256 322.1333333333334C280.7466666666667 322.1333333333334 300.8 302.0800000000001 300.8 277.3333333333334C300.8 252.5866666666667 280.7466666666667 232.5333333333334 256 232.5333333333334C231.2533333333334 232.5333333333334 211.2 252.5866666666667 211.2 277.3333333333334C211.2 302.0800000000001 231.2533333333334 322.1333333333334 256 322.1333333333334z" /> + <glyph glyph-name="account-plus" + unicode="&#xF014;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M128 234.6666666666667V298.6666666666667H85.3333333333333V234.6666666666667H21.3333333333333V192H85.3333333333333V128H128V192H192V234.6666666666667M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192z" /> + <glyph glyph-name="account-remove" + unicode="&#xF015;" + horiz-adv-x="512" d=" M320 149.3333333333334C376.9600000000001 149.3333333333334 490.6666666666666 120.96 490.6666666666666 64V21.3333333333334H149.3333333333333V64C149.3333333333333 120.96 263.04 149.3333333333334 320 149.3333333333334M320 192C272.8533333333333 192 234.6666666666667 230.1866666666667 234.6666666666667 277.3333333333334S272.8533333333333 362.6666666666667 320 362.6666666666667S405.3333333333333 324.48 405.3333333333333 277.3333333333334S367.1466666666667 192 320 192M106.6666666666667 243.4133333333334L151.8933333333333 288.8533333333334L182.1866666666667 258.5600000000001L136.7466666666667 213.3333333333334L182.1866666666667 168.1066666666667L151.8933333333333 137.8133333333333L106.6666666666667 183.2533333333333L61.44 137.8133333333334L31.1466666666667 168.1066666666667L76.5866666666667 213.3333333333334L31.1466666666667 258.56L61.44 288.8533333333334L106.6666666666667 243.4133333333334z" /> + <glyph glyph-name="account-search" + unicode="&#xF016;" + horiz-adv-x="512" d=" M202.6666666666667 384C279.2533333333334 384 341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 210.9866666666667 328.7466666666667 179.4133333333334 307.84 155.0933333333334L313.8133333333333 149.3333333333334H330.6666666666667L437.3333333333333 42.6666666666667L405.3333333333333 10.6666666666667L298.6666666666667 117.3333333333334V134.1866666666667L292.9066666666667 140.16C268.5866666666667 119.2533333333333 237.0133333333333 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384M202.6666666666667 149.3333333333334C237.0133333333333 149.3333333333334 266.6666666666667 167.4666666666667 284.16 194.56C266.6666666666667 218.6666666666667 237.0133333333333 234.6666666666667 202.6666666666667 234.6666666666667C168.32 234.6666666666667 138.6666666666667 218.6666666666667 121.1733333333333 194.56C138.6666666666667 167.4666666666667 168.32 149.3333333333334 202.6666666666667 149.3333333333334M202.6666666666667 341.3333333333334C181.9733333333333 341.3333333333334 165.3333333333333 324.6933333333334 165.3333333333333 304S181.9733333333333 266.6666666666667 202.6666666666667 266.6666666666667S240 283.3066666666667 240 304S223.36 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="account-settings" + unicode="&#xF630;" + horiz-adv-x="512" d=" M256 362.6666666666667C303.1466666666667 362.6666666666667 341.3333333333333 324.48 341.3333333333333 277.3333333333334S303.1466666666667 192 256 192S170.6666666666667 230.1866666666667 170.6666666666667 277.3333333333334S208.8533333333333 362.6666666666667 256 362.6666666666667M256 149.3333333333334C350.2933333333334 149.3333333333334 426.6666666666667 111.1466666666667 426.6666666666667 64V21.3333333333334H85.3333333333333V64C85.3333333333333 111.1466666666667 161.7066666666667 149.3333333333334 256 149.3333333333334M149.3333333333333 -21.3333333333333H192V-64H149.3333333333333V-21.3333333333333M234.6666666666667 -21.3333333333333H277.3333333333333V-64H234.6666666666667V-21.3333333333333M320 -21.3333333333333H362.6666666666667V-64H320V-21.3333333333333z" /> + <glyph glyph-name="account-settings-variant" + unicode="&#xF631;" + horiz-adv-x="512" d=" M192 362.6666666666667C144.8533333333333 362.6666666666667 106.6666666666667 324.48 106.6666666666667 277.3333333333334S144.8533333333333 192 192 192S277.3333333333333 230.1866666666667 277.3333333333333 277.3333333333334S239.1466666666667 362.6666666666667 192 362.6666666666667M192 149.3333333333334C135.04 149.3333333333334 21.3333333333333 120.96 21.3333333333333 64V21.3333333333334H257.7066666666667C256.64 28.3733333333333 256 35.4133333333334 256 42.6666666666667C256 74.6666666666667 266.6666666666667 106.6666666666667 286.08 132.2666666666667C253.44 143.36 217.1733333333333 149.3333333333334 192 149.3333333333334M384 149.3333333333334C381.2266666666667 149.3333333333334 378.88 147.4133333333334 378.4533333333333 144.8533333333334L374.3999999999999 116.6933333333333C367.9999999999999 113.92 361.8133333333333 110.5066666666667 356.2666666666666 106.6666666666667L329.8133333333332 117.3333333333334C327.4666666666666 117.3333333333334 324.6933333333332 117.3333333333334 323.1999999999999 114.56L301.8666666666666 77.6533333333334C300.5866666666666 75.3066666666667 301.0133333333332 72.5333333333334 303.1466666666666 70.8266666666667L325.7599999999999 53.3333333333334C325.3333333333333 49.7066666666667 325.1199999999999 46.2933333333334 325.1199999999999 42.6666666666667C325.1199999999999 39.04 325.3333333333333 35.6266666666667 325.7599999999999 32L303.1466666666666 14.5066666666667C301.2266666666666 12.8000000000001 300.5866666666666 10.0266666666666 301.8666666666666 7.68L323.1999999999999 -29.2266666666667C324.4799999999999 -32 327.2533333333332 -32 329.8133333333332 -32L356.2666666666666 -21.3333333333333C361.8133333333333 -25.1733333333333 367.7866666666665 -28.8 374.3999999999999 -31.36L378.4533333333333 -59.52C378.88 -62.08 381.0133333333333 -64 384 -64H426.6666666666667C429.0133333333333 -64 431.36 -62.08 431.7866666666667 -59.52L435.84 -31.36C442.24 -28.5866666666666 448 -25.1733333333333 453.76 -21.3333333333333L480 -32C482.7733333333333 -32 485.5466666666667 -32 487.04 -29.2266666666667L508.3733333333333 7.68C509.6533333333333 10.0266666666666 509.0133333333333 12.8 507.0933333333333 14.5066666666667L484.2666666666667 32C484.6933333333333 35.6266666666667 485.1199999999999 39.04 485.1199999999999 42.6666666666667C485.1199999999999 46.2933333333334 484.9066666666666 49.7066666666667 484.2666666666667 53.3333333333334L506.8799999999999 70.8266666666667C508.8 72.5333333333333 509.4399999999999 75.3066666666667 508.1599999999999 77.6533333333334L486.8266666666666 114.5600000000001C485.5466666666666 117.3333333333334 482.7733333333332 117.3333333333334 479.9999999999999 117.3333333333334L453.7599999999999 106.6666666666667C447.9999999999999 110.5066666666667 442.2399999999999 114.1333333333334 435.6266666666666 116.6933333333334L431.5733333333332 144.8533333333334C431.3599999999998 147.4133333333334 429.0133333333332 149.3333333333334 426.6666666666665 149.3333333333334M405.3333333333332 74.6666666666667C423.0399999999998 74.6666666666667 437.3333333333332 60.3733333333334 437.3333333333332 42.6666666666667S423.0399999999998 10.6666666666667 405.3333333333332 10.6666666666667C387.4133333333332 10.6666666666667 373.3333333333332 24.9600000000002 373.3333333333332 42.6666666666667S387.6266666666666 74.6666666666667 405.3333333333332 74.6666666666667z" /> + <glyph glyph-name="account-star" + unicode="&#xF017;" + horiz-adv-x="512" d=" M320 149.3333333333334C263.04 149.3333333333334 149.3333333333333 120.96 149.3333333333333 64V21.3333333333334H490.6666666666666V64C490.6666666666666 120.96 376.9600000000001 149.3333333333334 320 149.3333333333334M320 192C367.1466666666667 192 405.3333333333333 230.1866666666667 405.3333333333333 277.3333333333334S367.1466666666667 362.6666666666667 320 362.6666666666667S234.6666666666667 324.48 234.6666666666667 277.3333333333334S272.8533333333333 192 320 192M106.6666666666667 164.6933333333334L158.9333333333333 132.9066666666667L145.0666666666667 192.8533333333334L192 232.96L130.3466666666666 238.2933333333334L106.6666666666667 294.6133333333334L82.56 238.2933333333334L21.3333333333333 232.96L67.84 192.8533333333333L53.3333333333333 132.9066666666667L106.6666666666667 164.6933333333334z" /> + <glyph glyph-name="account-star-variant" + unicode="&#xF018;" + horiz-adv-x="512" d=" M192 149.3333333333334C248.96 149.3333333333334 362.6666666666667 120.96 362.6666666666667 64V21.3333333333334H21.3333333333333V64C21.3333333333333 120.96 135.04 149.3333333333334 192 149.3333333333334M192 192C144.8533333333333 192 106.6666666666667 230.1866666666667 106.6666666666667 277.3333333333334S144.8533333333333 362.6666666666667 192 362.6666666666667S277.3333333333333 324.48 277.3333333333333 277.3333333333334S239.1466666666667 192 192 192M405.3333333333333 164.6933333333334L352.8533333333333 132.9066666666667L366.9333333333333 192.8533333333334L320 232.9600000000001L381.6533333333333 238.2933333333334L405.3333333333333 294.6133333333334L429.44 238.2933333333334L490.6666666666666 232.96L444.16 192.8533333333333L458.6666666666666 132.9066666666667L405.3333333333333 164.6933333333333z" /> + <glyph glyph-name="account-switch" + unicode="&#xF019;" + horiz-adv-x="512" d=" M341.3333333333333 256C391.04 256 490.6666666666666 231.04 490.6666666666666 181.3333333333334V128H362.6666666666667V181.3333333333334C362.6666666666667 213.3333333333334 345.3866666666667 237.0133333333333 320.8533333333333 254.9333333333334L341.3333333333333 256M170.6666666666667 256C220.3733333333333 256 320 231.04 320 181.3333333333334V128H21.3333333333333V181.3333333333334C21.3333333333333 231.04 120.96 256 170.6666666666667 256M170.6666666666667 298.6666666666667C135.2533333333333 298.6666666666667 106.6666666666667 327.2533333333334 106.6666666666667 362.6666666666667S135.2533333333333 426.6666666666667 170.6666666666667 426.6666666666667S234.6666666666667 398.08 234.6666666666667 362.6666666666667S206.08 298.6666666666667 170.6666666666667 298.6666666666667M341.3333333333333 298.6666666666667C305.92 298.6666666666667 277.3333333333333 327.2533333333334 277.3333333333333 362.6666666666667S305.92 426.6666666666667 341.3333333333333 426.6666666666667S405.3333333333333 398.08 405.3333333333333 362.6666666666667S376.7466666666667 298.6666666666667 341.3333333333333 298.6666666666667M192 90.6666666666667V42.6666666666667H320V90.6666666666667L389.3333333333333 21.3333333333334L320 -48V0H192V-48L122.6666666666667 21.3333333333334L192 90.6666666666667z" /> + <glyph glyph-name="adjust" + unicode="&#xF01A;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M320 192C320 156.5866666666667 291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256S320 227.4133333333334 320 192z" /> + <glyph glyph-name="air-conditioner" + unicode="&#xF01B;" + horiz-adv-x="512" d=" M140.5866666666667 433.92C190.5066666666667 472.5333333333333 244.6933333333333 425.3866666666667 256.8533333333333 352C266.0266666666667 352 274.9866666666666 349.44 283.0933333333333 344.7466666666667C294.1866666666666 357.5466666666667 304 375.04 300.16 394.6666666666667C291.2 440.5333333333333 342.6133333333333 477.6533333333333 391.4666666666667 414.2933333333334C430.08 364.3733333333334 382.9333333333334 310.1866666666667 309.3333333333334 298.0266666666667C309.3333333333334 288.8533333333334 306.9866666666667 279.68 302.0800000000001 271.5733333333334C314.88 260.6933333333334 332.3733333333334 250.88 352 254.7200000000001C397.44 263.6800000000001 434.7733333333333 212.48 371.4133333333333 163.4133333333334C321.4933333333334 124.8 267.3066666666667 171.9466666666667 255.1466666666667 245.3333333333334C245.9733333333334 245.3333333333334 237.0133333333334 248.1066666666667 229.12 252.8C218.0266666666667 240 208 222.2933333333334 211.84 202.6666666666667C220.8 157.0133333333333 169.3866666666667 119.68 120.5333333333333 183.04C81.7066666666667 233.1733333333334 129.0666666666667 287.36 202.6666666666667 299.3066666666667C202.6666666666667 308.48 205.44 317.44 210.1333333333333 325.5466666666667C197.3333333333333 336.4266666666667 179.84 346.4533333333334 160 342.6133333333334C114.56 333.6533333333333 77.2266666666667 384.8533333333334 140.5866666666667 433.92M106.6666666666667 106.6666666666667H149.3333333333333C172.8 106.6666666666667 192 87.4666666666667 192 64V-64H149.3333333333333V-21.3333333333333H106.6666666666667V-64H64V64C64 87.4666666666667 83.2 106.6666666666667 106.6666666666667 106.6666666666667M106.6666666666667 64V21.3333333333334H149.3333333333333V64H106.6666666666667M275.84 106.6666666666667H320L257.4933333333334 -64H213.3333333333333L275.84 106.6666666666667M384 106.6666666666667H448V64H384V-21.3333333333333H448V-64H384C360.5333333333333 -64 341.3333333333333 -44.8 341.3333333333333 -21.3333333333333V64C341.3333333333333 87.4666666666667 360.5333333333333 106.6666666666667 384 106.6666666666667z" /> + <glyph glyph-name="airballoon" + unicode="&#xF01C;" + horiz-adv-x="512" d=" M234.6666666666667 -42.6666666666666C211.2 -42.6666666666666 192 -23.4666666666667 192 0V42.6666666666667H320V0C320 -23.4666666666667 300.8 -42.6666666666666 277.3333333333333 -42.6666666666666H234.6666666666667M256 426.6666666666667C271.1466666666667 426.6666666666667 285.6533333333333 424.7466666666667 299.7333333333334 421.12C324.6933333333334 387.6266666666667 341.3333333333333 326.1866666666667 341.3333333333333 256C341.3333333333333 207.36 333.2266666666667 162.7733333333333 320 106.6666666666667C320 83.2 300.8 64 277.3333333333333 64H234.6666666666667C211.2 64 192 83.2 192 106.6666666666667C178.7733333333334 162.7733333333333 170.6666666666667 207.36 170.6666666666667 256C170.6666666666667 326.1866666666667 187.3066666666667 387.6266666666667 212.2666666666667 421.12C226.3466666666667 424.7466666666667 240.8533333333333 426.6666666666667 256 426.6666666666667M426.6666666666667 277.3333333333334C426.6666666666667 209.4933333333334 387.2 108.3733333333333 329.8133333333334 80.8533333333334C350.08 119.68 362.6666666666667 195.6266666666667 362.6666666666667 256C362.6666666666667 316.3733333333334 350.08 370.9866666666667 329.8133333333334 409.8133333333334C387.2 382.2933333333334 426.6666666666667 345.1733333333334 426.6666666666667 277.3333333333334M85.3333333333333 277.3333333333334C85.3333333333333 345.1733333333334 124.8 382.2933333333334 182.1866666666667 409.8133333333334C161.92 370.9866666666667 149.3333333333333 316.3733333333334 149.3333333333333 256S161.92 119.68 182.1866666666667 80.8533333333334C124.8 108.3733333333333 85.3333333333333 209.4933333333334 85.3333333333333 277.3333333333334z" /> + <glyph glyph-name="airplane" + unicode="&#xF01D;" + horiz-adv-x="512" d=" M448 106.6666666666667V149.3333333333334L277.3333333333333 256V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V256L42.6666666666667 149.3333333333334V106.6666666666667L213.3333333333333 160V42.6666666666667L170.6666666666667 10.6666666666667V-21.3333333333333L245.3333333333333 0L320 -21.3333333333333V10.6666666666667L277.3333333333333 42.6666666666667V160L448 106.6666666666667z" /> + <glyph glyph-name="airplane-landing" + unicode="&#xF5D4;" + horiz-adv-x="512" d=" M53.3333333333333 42.6666666666667H458.6666666666666V0H53.3333333333333V42.6666666666667M206.5066666666667 164.9066666666667L299.3066666666666 140.16L412.5866666666667 109.8666666666667C429.6533333333333 105.3866666666667 447.1466666666667 115.4133333333334 451.84 132.48C456.32 149.3333333333334 446.2933333333333 167.0400000000001 429.2266666666667 171.7333333333334L315.9466666666667 202.0266666666667L257.0666666666667 394.6666666666667L215.8933333333334 405.3333333333333V228.6933333333334L109.8666666666667 257.0666666666667L90.0266666666667 306.5600000000001L59.0933333333333 314.88V204.5866666666667L93.2266666666667 195.4133333333334L206.5066666666667 164.9066666666667z" /> + <glyph glyph-name="airplane-off" + unicode="&#xF01E;" + horiz-adv-x="512" d=" M67.2 335.5733333333334L173.44 229.12L45.8666666666667 149.3333333333334V106.6666666666667L216.5333333333333 160V42.6666666666667L173.8666666666667 10.6666666666667V-21.3333333333333L248.5333333333334 0L323.2 -21.3333333333333V10.6666666666667L280.5333333333333 42.6666666666667V122.24L402.56 0L429.8666666666667 27.0933333333334L94.2933333333333 362.6666666666667M280.5333333333333 256V373.3333333333334C280.5333333333333 391.04 266.24 405.3333333333333 248.5333333333334 405.3333333333333S216.5333333333333 391.04 216.5333333333333 373.3333333333334V294.8266666666667L383.36 128L451.1999999999999 106.6666666666667V149.3333333333334L280.5333333333333 256z" /> + <glyph glyph-name="airplane-takeoff" + unicode="&#xF5D5;" + horiz-adv-x="512" d=" M53.3333333333333 42.6666666666667H458.6666666666666V0H53.3333333333333V42.6666666666667M470.8266666666667 242.3466666666667C466.3466666666666 259.4133333333334 448.64 269.6533333333333 431.5733333333333 264.9600000000001L318.2933333333333 234.6666666666667L170.6666666666667 371.8400000000001L129.92 360.9600000000001L218.24 208L112.2133333333333 179.6266666666667L70.1866666666667 212.48L39.2533333333334 204.16L78.08 136.7466666666667L94.5066666666667 108.3733333333333L128.64 117.3333333333334L241.92 147.84L334.72 172.5866666666667L448 202.6666666666667C465.28 207.7866666666667 475.3066666666667 225.2800000000001 470.8266666666667 242.3466666666667z" /> + <glyph glyph-name="airplay" + unicode="&#xF01F;" + horiz-adv-x="512" d=" M128 -21.3333333333333H384L256 106.6666666666667M448 384H64C40.5333333333333 384 21.3333333333333 364.8 21.3333333333333 341.3333333333334V85.3333333333334C21.3333333333333 61.8666666666667 40.5333333333333 42.6666666666667 64 42.6666666666667H149.3333333333333V85.3333333333334H64V341.3333333333334H448V85.3333333333334H362.6666666666667V42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V341.3333333333334C490.6666666666666 364.8 471.4666666666667 384 448 384z" /> + <glyph glyph-name="alarm" + unicode="&#xF020;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M266.6666666666667 277.3333333333334H234.6666666666667V149.3333333333334L336 88.5333333333333L352 114.7733333333333L266.6666666666667 165.3333333333334V277.3333333333334M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334z" /> + <glyph glyph-name="alarm-check" + unicode="&#xF021;" + horiz-adv-x="512" d=" M224.8533333333333 138.0266666666667L179.4133333333333 183.4666666666667L156.8 160.8533333333334L224.64 93.0133333333333L352.64 221.0133333333333L330.0266666666667 243.6266666666667L224.8533333333334 138.0266666666667M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334z" /> + <glyph glyph-name="alarm-multiple" + unicode="&#xF022;" + horiz-adv-x="512" d=" M198.1866666666667 378.6666666666667L110.08 304.64L85.3333333333333 334.0800000000001L173.6533333333333 408.1066666666667L198.1866666666667 378.6666666666667M469.3333333333333 333.8666666666667L444.5866666666667 304.4266666666667L356.2666666666667 378.6666666666667L381.0133333333333 408.1066666666667L469.3333333333333 333.8666666666667M277.3333333333333 362.6666666666667C371.6266666666667 362.6666666666667 448 286.2933333333334 448 192S371.6266666666667 21.3333333333334 277.3333333333333 21.3333333333334S106.6666666666667 97.7066666666667 106.6666666666667 192S183.04 362.6666666666667 277.3333333333333 362.6666666666667M277.3333333333333 320C206.72 320 149.3333333333333 262.6133333333334 149.3333333333333 192S206.72 64 277.3333333333333 64S405.3333333333333 121.3866666666667 405.3333333333333 192S347.9466666666666 320 277.3333333333333 320M256 288H288V191.36L356.6933333333333 160L343.4666666666666 130.9866666666667L256 170.6666666666667V288M21.3333333333333 149.3333333333334C21.3333333333333 202.6666666666667 45.44 249.6 83.4133333333333 280.9600000000001C71.04 253.8666666666667 64 224 64 192L65.28 167.8933333333334L64 149.3333333333334C64 100.6933333333333 91.0933333333333 58.4533333333334 130.9866666666667 36.6933333333333C158.72 10.6666666666667 193.4933333333334 -8.32 232.32 -16.64C219.3066666666667 -19.6266666666667 205.8666666666667 -21.3333333333333 192 -21.3333333333333C97.7066666666667 -21.3333333333333 21.3333333333333 55.04 21.3333333333333 149.3333333333334z" /> + <glyph glyph-name="alarm-off" + unicode="&#xF023;" + horiz-adv-x="512" d=" M170.6666666666667 378.0266666666667L140.8 408.32L122.4533333333333 393.1733333333334L152.7466666666667 362.6666666666667M351.36 55.68C325.5466666666666 34.3466666666667 292.2666666666667 21.3333333333334 256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667C106.6666666666667 206.9333333333333 119.68 240.2133333333334 141.0133333333333 266.0266666666667M62.2933333333333 399.1466666666667L35.2 371.8400000000001L64 343.4666666666667L39.8933333333333 323.6266666666667L70.1866666666667 293.3333333333334L93.8666666666667 313.3866666666667L110.9333333333333 296.32C81.7066666666667 262.6133333333334 64 218.6666666666667 64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C304 -21.3333333333333 347.9466666666666 -3.6266666666667 381.6533333333333 25.6L428.5866666666667 -21.3333333333333L455.6799999999999 5.76L82.9866666666667 378.24L62.2933333333333 399.1466666666667M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334L469.3333333333333 325.9733333333334M256 320C338.56 320 405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667C405.3333333333333 152.7466666666667 401.92 135.4666666666667 396.16 119.4666666666667L428.5866666666667 87.04C440.9599999999999 112.4266666666666 448 140.5866666666667 448 170.6666666666666C448 276.6933333333334 362.0266666666667 362.6666666666667 256 362.6666666666667C225.92 362.6666666666667 197.76 355.6266666666667 172.3733333333333 343.2533333333334L204.8 310.8266666666667C220.8 316.5866666666667 238.08 320 256 320z" /> + <glyph glyph-name="alarm-plus" + unicode="&#xF024;" + horiz-adv-x="512" d=" M277.3333333333333 256H234.6666666666667V192H170.6666666666667V149.3333333333334H234.6666666666667V85.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333V192H277.3333333333333M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667S362.0266666666667 362.6666666666667 256 362.6666666666667M469.3333333333333 325.9733333333334L371.2 408.32L343.68 375.68L441.8133333333334 293.3333333333334M168.1066666666667 375.68L140.8 408.32L42.6666666666667 326.1866666666667L70.1866666666667 293.5466666666667L168.1066666666667 375.68z" /> + <glyph glyph-name="album" + unicode="&#xF025;" + horiz-adv-x="512" d=" M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334M256 96C202.6666666666667 96 160 138.6666666666667 160 192S202.6666666666667 288 256 288S352 245.3333333333334 352 192S309.3333333333333 96 256 96M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="alert" + unicode="&#xF026;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334H234.6666666666667V234.6666666666667H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M21.3333333333333 0H490.6666666666666L256 405.3333333333333L21.3333333333333 0z" /> + <glyph glyph-name="alert-box" + unicode="&#xF027;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M277.3333333333333 170.6666666666667V298.6666666666667H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334V128H234.6666666666667V85.3333333333334H277.3333333333333z" /> + <glyph glyph-name="alert-circle" + unicode="&#xF028;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V298.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V128H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="alert-circle-outline" + unicode="&#xF5D6;" + horiz-adv-x="512" d=" M234.6666666666667 128H277.3333333333333V85.3333333333334H234.6666666666667V128M234.6666666666667 298.6666666666667H277.3333333333333V170.6666666666667H234.6666666666667V298.6666666666667M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="alert-octagon" + unicode="&#xF029;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V298.6666666666667H277.3333333333333M256 78.9333333333333C240.64 78.9333333333333 228.2666666666667 91.3066666666666 228.2666666666667 106.6666666666667C228.2666666666667 122.0266666666667 240.64 134.4 256 134.4C271.36 134.4 283.7333333333334 122.0266666666667 283.7333333333334 106.6666666666667C283.7333333333334 91.3066666666667 271.36 78.9333333333333 256 78.9333333333333M335.5733333333333 384H176.4266666666667L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334L335.5733333333333 384z" /> + <glyph glyph-name="alert-outline" + unicode="&#xF02A;" + horiz-adv-x="512" d=" M256 405.3333333333333L21.3333333333333 0H490.6666666666666M256 320L416.64 42.6666666666667H95.36M234.6666666666667 234.6666666666667V149.3333333333334H277.3333333333333V234.6666666666667M234.6666666666667 106.6666666666667V64H277.3333333333333V106.6666666666667" /> + <glyph glyph-name="alpha" + unicode="&#xF02B;" + horiz-adv-x="512" d=" M385.7066666666666 68.2666666666667C375.8933333333333 65.4933333333333 367.1466666666666 64 359.4666666666666 64C333.8666666666666 64 316.5866666666666 82.7733333333333 307.8399999999999 120.5333333333334H306.7733333333333C285.6533333333333 79.7866666666668 255.9999999999999 59.52 218.6666666666666 59.52C190.7199999999999 59.52 168.3199999999999 69.9733333333333 151.4666666666666 91.0933333333334S126.2933333333333 138.6666666666667 126.2933333333333 170.6666666666667C126.2933333333333 208 135.8933333333333 237.8666666666667 154.88 261.12C173.8666666666667 284.3733333333334 199.68 296.1066666666667 232.32 296.1066666666667C249.8133333333334 296.1066666666667 265.6 291.2 279.2533333333334 281.6C292.9066666666667 271.7866666666667 303.36 258.1333333333334 310.6133333333334 240.4266666666667H311.4666666666667L326.6133333333333 291.6266666666667H381.2266666666666L335.5733333333333 178.1333333333333C340.6933333333333 151.68 346.0266666666666 133.5466666666667 351.9999999999999 123.9466666666667C357.1199999999999 114.3466666666667 364.3733333333332 109.44 373.3333333333333 109.44C378.4533333333332 109.44 382.5066666666666 110.2933333333333 386.1333333333333 111.7866666666666L385.7066666666666 68.2666666666667M294.8266666666666 180.0533333333334C290.3466666666666 204.16 283.0933333333333 222.9333333333333 273.28 235.7333333333333C263.68 248.7466666666667 251.9466666666667 255.1466666666667 238.5066666666667 255.1466666666667C221.0133333333333 255.1466666666667 206.9333333333333 247.2533333333334 196.48 231.68C186.0266666666667 215.8933333333333 181.3333333333333 196.48 181.3333333333333 173.6533333333333C181.3333333333333 152.7466666666667 185.3866666666667 135.4666666666667 194.56 121.3866666666667C203.52 107.3066666666666 215.68 100.48 230.8266666666667 100.48C243.6266666666666 100.48 255.36 106.6666666666666 265.8133333333333 118.4C276.48 130.56 285.2266666666667 148.2666666666667 292.2666666666667 171.52L294.8266666666666 180.0533333333333z" /> + <glyph glyph-name="alphabetical" + unicode="&#xF02C;" + horiz-adv-x="512" d=" M128 213.3333333333334C151.4666666666667 213.3333333333334 170.6666666666667 194.1333333333333 170.6666666666667 170.6666666666667V85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V170.6666666666667C42.6666666666667 194.1333333333333 61.8666666666667 213.3333333333334 85.3333333333333 213.3333333333334H128M85.3333333333333 170.6666666666667V128H128V170.6666666666667H85.3333333333333M426.6666666666667 170.6666666666667V128H469.3333333333333V85.3333333333334H426.6666666666667C403.2 85.3333333333334 384 104.5333333333333 384 128V170.6666666666667C384 194.1333333333333 403.2 213.3333333333334 426.6666666666667 213.3333333333334H469.3333333333333V170.6666666666667H426.6666666666667M256 298.6666666666667V213.3333333333334H298.6666666666667C322.1333333333334 213.3333333333334 341.3333333333333 194.1333333333333 341.3333333333333 170.6666666666667V128C341.3333333333333 104.5333333333333 322.1333333333334 85.3333333333334 298.6666666666667 85.3333333333334H256C232.5333333333334 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128V298.6666666666667H256M256 128H298.6666666666667V170.6666666666667H256V128z" /> + <glyph glyph-name="altimeter" + unicode="&#xF5D7;" + horiz-adv-x="512" d=" M149.3333333333333 384V341.3333333333334H362.6666666666667V384H149.3333333333333M192 298.6666666666667V256H320V298.6666666666667H192M42.6666666666667 278.1866666666667V105.8133333333334L128.64 192L42.6666666666667 278.1866666666667M469.9733333333334 278.1866666666667L384 192L469.9733333333334 105.8133333333334V278.1866666666667M149.3333333333333 213.3333333333334V170.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333M192 128V85.3333333333334H320V128H192M149.3333333333333 42.6666666666667V0H362.6666666666667V42.6666666666667H149.3333333333333z" /> + <glyph glyph-name="amazon" + unicode="&#xF02D;" + horiz-adv-x="512" d=" M339.84 83.4133333333334C336 80 330.6666666666667 79.7866666666666 326.4 82.1333333333334C307.4133333333333 97.92 304 105.1733333333334 293.5466666666666 120.3200000000001C262.1866666666666 88.3200000000001 240 78.72 199.2533333333333 78.72C151.2533333333333 78.72 113.7066666666666 108.3733333333334 113.7066666666666 167.6800000000001C113.7066666666666 214.1866666666667 138.6666666666666 245.3333333333334 174.72 261.1200000000001C205.8666666666666 274.7733333333335 249.1733333333333 277.3333333333334 282.2399999999999 280.9600000000001V288C282.2399999999999 302.0800000000001 283.3066666666666 318.0800000000001 275.2 329.8133333333334C268.3733333333332 340.2666666666667 254.9333333333333 344.7466666666667 243.2 344.7466666666667C221.44 344.7466666666667 202.0266666666666 333.44 197.3333333333333 310.4C196.2666666666666 305.28 191.9999999999999 300.1600000000001 187.3066666666666 299.9466666666667L131.8399999999999 305.92C127.1466666666666 306.9866666666667 122.0266666666666 310.6133333333334 123.3066666666666 317.8666666666667C136.1066666666666 385.0666666666667 196.9066666666666 405.3333333333333 251.3066666666666 405.3333333333333C279.0399999999999 405.3333333333333 315.3066666666666 397.8666666666667 337.2799999999999 376.9600000000001C365.0133333333333 350.9333333333334 362.6666666666667 316.1600000000001 362.6666666666667 278.4V189.44C362.6666666666667 162.7733333333333 373.3333333333333 150.8266666666667 384 136.5333333333333C387.6266666666667 131.2 388.48 125.0133333333333 384 121.3866666666667L340.0533333333333 83.4133333333333H339.84M282.24 222.72V234.6666666666667C240.8533333333334 234.6666666666667 197.12 226.3466666666667 197.12 177.7066666666667C197.12 152.96 210.1333333333333 136.1066666666667 231.8933333333334 136.1066666666667C248.1066666666667 136.1066666666667 262.4 146.1333333333334 271.5733333333333 162.1333333333334C282.6666666666667 181.9733333333334 282.24 200.5333333333334 282.24 222.72M430.08 31.1466666666667C384 -2.9866666666667 316.16 -21.3333333333333 258.1333333333334 -21.3333333333333C176.8533333333333 -21.3333333333333 103.4666666666667 8.7466666666667 48 58.88C43.7333333333333 62.72 47.5733333333333 68.0533333333333 53.3333333333333 65.0666666666666C112.64 30.2933333333333 186.6666666666667 9.3866666666667 263.04 9.3866666666667C314.4533333333333 9.3866666666667 371.2 20.0533333333333 423.2533333333334 42.0266666666666C431.1466666666667 45.44 437.3333333333333 36.9066666666667 430.08 31.1466666666667M449.4933333333334 53.3333333333333C443.52 61.0133333333333 410.0266666666667 56.96 394.6666666666667 55.0399999999999C390.6133333333333 54.6133333333332 389.9733333333334 58.4533333333333 394.0266666666667 61.4399999999999C420.4799999999999 80.2133333333333 464.2133333333333 74.6666666666666 469.3333333333333 68.4799999999999C474.4533333333333 62.0799999999999 467.84 18.3466666666665 442.88 -2.3466666666668C439.04 -5.7600000000001 435.4133333333333 -3.8400000000001 437.3333333333333 -1e-13C442.88 14.2933333333332 455.4666666666667 45.6533333333332 449.4933333333334 53.3333333333332z" /> + <glyph glyph-name="amazon-clouddrive" + unicode="&#xF02E;" + horiz-adv-x="512" d=" M105.3866666666667 210.7733333333334C111.5733333333333 210.7733333333334 117.3333333333333 209.9200000000001 122.88 208.4266666666667C123.0933333333333 254.0800000000001 160 291.2000000000001 205.8666666666667 291.2000000000001C240.4266666666667 291.2000000000001 270.2933333333333 269.8666666666668 282.4533333333333 239.5733333333334C295.04 256 314.4533333333333 266.0266666666667 336.2133333333333 266.0266666666667C373.3333333333333 266.0266666666667 404.0533333333334 235.7333333333334 404.0533333333334 198.1866666666667C404.0533333333334 193.0666666666667 403.4133333333333 187.7333333333334 402.3466666666667 182.8266666666667C407.4666666666667 184.7466666666667 413.2266666666668 185.8133333333334 419.2000000000001 185.8133333333334C446.9333333333334 185.8133333333334 469.3333333333334 163.2000000000001 469.3333333333334 135.4666666666667C469.3333333333334 107.7333333333334 446.9333333333334 85.3333333333334 419.2000000000001 85.3333333333334H105.3866666666667C70.8266666666667 85.3333333333334 42.6666666666667 113.4933333333334 42.6666666666667 148.0533333333334C42.6666666666667 182.8266666666667 70.8266666666667 210.7733333333333 105.3866666666667 210.7733333333333z" /> + <glyph glyph-name="ambulance" + unicode="&#xF02F;" + horiz-adv-x="512" d=" M384 53.3333333333334C401.7066666666666 53.3333333333334 416 67.6266666666667 416 85.3333333333334S401.7066666666666 117.3333333333334 384 117.3333333333334S352 103.04 352 85.3333333333334S366.2933333333334 53.3333333333334 384 53.3333333333334M416 245.3333333333334H362.6666666666667V192H457.8133333333333L416 245.3333333333334M128 53.3333333333334C145.7066666666667 53.3333333333334 160 67.6266666666667 160 85.3333333333334S145.7066666666667 117.3333333333334 128 117.3333333333334S96 103.04 96 85.3333333333334S110.2933333333333 53.3333333333334 128 53.3333333333334M426.6666666666667 277.3333333333334L490.6666666666666 192V85.3333333333334H448C448 49.92 419.4133333333333 21.3333333333334 384 21.3333333333334S320 49.92 320 85.3333333333334H192C192 49.92 163.4133333333333 21.3333333333334 128 21.3333333333334S64 49.92 64 85.3333333333334H21.3333333333333V320C21.3333333333333 343.68 40.32 362.6666666666667 64 362.6666666666667H362.6666666666667V277.3333333333334H426.6666666666667M170.6666666666667 320V256H106.6666666666667V213.3333333333334H170.6666666666667V149.3333333333334H213.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333V320H170.6666666666667z" /> + <glyph glyph-name="amplifier" + unicode="&#xF030;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333H298.6666666666667C310.4 405.3333333333333 320 395.7333333333334 320 384H448V0H405.3333333333333C405.3333333333333 -11.7333333333333 395.7333333333334 -21.3333333333333 384 -21.3333333333333S362.6666666666667 -11.7333333333333 362.6666666666667 0H149.3333333333333C149.3333333333333 -11.7333333333333 139.7333333333333 -21.3333333333333 128 -21.3333333333333S106.6666666666667 -11.7333333333333 106.6666666666667 0H64V384H192C192 395.7333333333334 201.6 405.3333333333333 213.3333333333333 405.3333333333333M106.6666666666667 341.3333333333334V256H405.3333333333333V341.3333333333334H106.6666666666667M149.3333333333333 320C161.0666666666667 320 170.6666666666667 310.4 170.6666666666667 298.6666666666667S161.0666666666667 277.3333333333334 149.3333333333333 277.3333333333334S128 286.9333333333334 128 298.6666666666667S137.6 320 149.3333333333333 320M256 320H298.6666666666667V298.6666666666667H256V320M320 320H341.3333333333333V277.3333333333334H320V320M362.6666666666667 320H384V277.3333333333334H362.6666666666667V320M256 213.3333333333334C208.8533333333333 213.3333333333334 170.6666666666667 175.1466666666667 170.6666666666667 128S208.8533333333333 42.6666666666667 256 42.6666666666667S341.3333333333333 80.8533333333334 341.3333333333333 128S303.1466666666667 213.3333333333334 256 213.3333333333334M213.3333333333333 320C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334S192 286.9333333333334 192 298.6666666666667S201.6 320 213.3333333333333 320z" /> + <glyph glyph-name="anchor" + unicode="&#xF031;" + horiz-adv-x="512" d=" M256 405.3333333333333C220.5866666666667 405.3333333333333 192 376.7466666666667 192 341.3333333333334C192 314.24 209.0666666666667 290.1333333333334 234.6666666666667 280.9600000000001V234.6666666666667H170.6666666666667V192H234.6666666666667V44.3733333333333C195.4133333333333 50.5599999999999 160.64 73.1733333333334 139.3066666666667 106.6666666666667H170.6666666666667V149.3333333333334H64V42.6666666666667H106.6666666666667V78.9333333333333C140.3733333333333 29.6533333333334 196.2666666666667 0 256 0S371.6266666666667 29.6533333333334 405.3333333333333 78.72V42.6666666666667H448V149.3333333333334H341.3333333333333V106.6666666666667H372.48C351.1466666666667 73.3866666666667 316.3733333333334 50.5600000000001 277.3333333333333 44.3733333333333V192H341.3333333333333V234.6666666666667H277.3333333333333V281.1733333333334C302.9333333333333 290.1333333333334 320 314.24 320 341.3333333333334C320 376.7466666666667 291.4133333333333 405.3333333333333 256 405.3333333333333M256 362.6666666666667C267.7333333333334 362.6666666666667 277.3333333333333 353.0666666666667 277.3333333333333 341.3333333333334S267.7333333333334 320 256 320S234.6666666666667 329.6 234.6666666666667 341.3333333333334S244.2666666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="android" + unicode="&#xF032;" + horiz-adv-x="512" d=" M320 341.3333333333334H298.6666666666667V362.6666666666667H320M213.3333333333333 341.3333333333334H192V362.6666666666667H213.3333333333333M331.3066666666667 401.92L359.2533333333334 429.8666666666667C363.3066666666667 433.92 363.3066666666667 440.7466666666667 359.2533333333334 445.0133333333333C354.9866666666667 449.0666666666667 348.16 449.0666666666667 344.1066666666667 445.0133333333333L312.5333333333333 413.44C295.4666666666667 421.76 276.2666666666667 426.6666666666667 256 426.6666666666667C235.52 426.6666666666667 216.32 421.76 199.2533333333333 413.2266666666667L167.4666666666667 445.0133333333333C163.4133333333333 449.0666666666667 156.5866666666667 449.0666666666667 152.5333333333333 445.0133333333333C148.2666666666667 440.7466666666667 148.2666666666667 433.92 152.5333333333333 429.8666666666667L180.48 401.92C148.6933333333333 378.4533333333334 128 341.3333333333334 128 298.6666666666667H384C384 341.3333333333334 362.6666666666667 378.6666666666667 331.3066666666666 401.92M437.3333333333333 277.3333333333334C419.6266666666667 277.3333333333334 405.3333333333333 263.04 405.3333333333333 245.3333333333334V96C405.3333333333333 78.2933333333334 419.6266666666667 64 437.3333333333333 64S469.3333333333333 78.2933333333334 469.3333333333333 96V245.3333333333334C469.3333333333333 263.04 455.04 277.3333333333334 437.3333333333333 277.3333333333334M74.6666666666667 277.3333333333334C56.96 277.3333333333334 42.6666666666667 263.04 42.6666666666667 245.3333333333334V96C42.6666666666667 78.2933333333334 56.96 64 74.6666666666667 64S106.6666666666667 78.2933333333334 106.6666666666667 96V245.3333333333334C106.6666666666667 263.04 92.3733333333333 277.3333333333334 74.6666666666667 277.3333333333334M128 64C128 52.2666666666667 137.6 42.6666666666667 149.3333333333333 42.6666666666667H170.6666666666667V-32C170.6666666666667 -49.7066666666666 184.96 -64 202.6666666666667 -64S234.6666666666667 -49.7066666666666 234.6666666666667 -32V42.6666666666667H277.3333333333333V-32C277.3333333333333 -49.7066666666666 291.6266666666667 -64 309.3333333333333 -64S341.3333333333333 -49.7066666666666 341.3333333333333 -32V42.6666666666667H362.6666666666667C374.4 42.6666666666667 384 52.2666666666667 384 64V277.3333333333334H128V64z" /> + <glyph glyph-name="android-debug-bridge" + unicode="&#xF033;" + horiz-adv-x="512" d=" M320 256C308.2666666666667 256 298.6666666666667 265.6 298.6666666666667 277.3333333333334S308.2666666666667 298.6666666666667 320 298.6666666666667S341.3333333333333 289.0666666666667 341.3333333333333 277.3333333333334S331.7333333333334 256 320 256M192 256C180.2666666666667 256 170.6666666666667 265.6 170.6666666666667 277.3333333333334S180.2666666666667 298.6666666666667 192 298.6666666666667S213.3333333333333 289.0666666666667 213.3333333333333 277.3333333333334S203.7333333333334 256 192 256M343.8933333333333 354.7733333333333L388.6933333333334 399.5733333333333L371.2000000000001 417.28L321.92 368C302.08 378.0266666666667 279.68 384 256 384C232.1066666666667 384 209.92 378.0266666666667 190.08 368L140.8 417.28L123.3066666666667 399.5733333333333L168.1066666666666 354.7733333333333C130.9866666666667 327.68 106.6666666666667 284.1600000000001 106.6666666666667 234.6666666666667V213.3333333333334H405.3333333333333V234.6666666666667C405.3333333333333 284.1600000000001 381.0133333333333 327.68 343.8933333333333 354.7733333333333M106.6666666666667 106.6666666666667C106.6666666666667 24.3200000000001 173.44 -42.6666666666666 256 -42.6666666666666S405.3333333333333 24.1066666666667 405.3333333333333 106.6666666666667V192H106.6666666666667V106.6666666666667z" /> + <glyph glyph-name="android-studio" + unicode="&#xF034;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333H277.3333333333333V362.6666666666667H288C305.7066666666667 362.6666666666667 320 348.3733333333334 320 330.6666666666667V256L310.6133333333334 246.6133333333334L345.6 186.0266666666667C369.28 209.28 384 241.4933333333334 384 277.3333333333334H426.6666666666667C426.6666666666667 225.7066666666667 403.84 179.4133333333334 367.5733333333333 148.0533333333334L434.56 32L437.3333333333333 -15.36L397.44 10.6666666666667L331.9466666666666 124.3733333333333C309.3333333333333 113.0666666666667 283.3066666666666 106.6666666666667 256 106.6666666666667C228.6933333333333 106.6666666666667 202.6666666666666 113.0666666666667 180.0533333333333 124.3733333333333L114.56 10.6666666666667L74.6666666666667 -15.36L77.44 32L201.3866666666667 246.6133333333334L192 256V330.6666666666667C192 348.3733333333334 206.2933333333333 362.6666666666667 224 362.6666666666667H234.6666666666667V405.3333333333333M201.3866666666667 161.4933333333334C218.0266666666667 153.6 236.5866666666667 149.3333333333334 256 149.3333333333334C275.4133333333333 149.3333333333334 293.9733333333333 153.6 310.6133333333334 161.4933333333334L279.4666666666667 215.4666666666667H279.2533333333334C266.0266666666667 202.6666666666667 245.9733333333333 202.6666666666667 232.7466666666667 215.4666666666667H232.5333333333334L201.3866666666667 161.4933333333334M256 320C244.2666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S244.2666666666667 277.3333333333334 256 277.3333333333334S277.3333333333333 286.9333333333334 277.3333333333333 298.6666666666667S267.7333333333334 320 256 320z" /> + <glyph glyph-name="animation" + unicode="&#xF5D8;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V149.3333333333334H85.3333333333333V362.6666666666667H298.6666666666667V405.3333333333333H85.3333333333333M170.6666666666667 320C146.9866666666667 320 128 301.0133333333333 128 277.3333333333334V64H170.6666666666667V277.3333333333334H384V320H170.6666666666667M256 234.6666666666667C232.32 234.6666666666667 213.3333333333333 215.68 213.3333333333333 192V21.3333333333334C213.3333333333333 -2.3466666666666 232.32 -21.3333333333333 256 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V192C469.3333333333333 215.68 450.3466666666667 234.6666666666667 426.6666666666667 234.6666666666667H256z" /> + <glyph glyph-name="apple" + unicode="&#xF035;" + horiz-adv-x="512" d=" M399.1466666666667 32C381.4400000000001 5.5466666666667 362.6666666666667 -20.2666666666666 334.08 -20.6933333333333C305.4933333333334 -21.3333333333333 296.32 -3.84 263.8933333333333 -3.84C231.2533333333334 -3.84 221.2266666666667 -20.2666666666666 194.1333333333334 -21.3333333333333C166.1866666666667 -22.4 145.0666666666667 6.8266666666667 127.1466666666667 32.64C90.6666666666667 85.3333333333334 62.72 182.4 100.2666666666667 247.68C118.8266666666667 280.1066666666667 152.1066666666667 300.5866666666667 188.16 301.2266666666667C215.4666666666667 301.6533333333333 241.4933333333334 282.6666666666667 258.3466666666667 282.6666666666667C274.9866666666666 282.6666666666667 306.56 305.4933333333334 339.6266666666667 302.08C353.4933333333334 301.44 392.32 296.5333333333333 417.28 259.8400000000001C415.36 258.56 370.9866666666667 232.5333333333334 371.4133333333333 178.56C372.0533333333334 114.1333333333333 427.9466666666666 92.5866666666667 428.5866666666667 92.3733333333333C427.9466666666666 90.88 419.6266666666666 61.6533333333333 399.1466666666667 32M277.3333333333333 373.3333333333334C292.9066666666667 391.04 318.72 404.48 340.0533333333333 405.3333333333333C342.8266666666667 380.3733333333334 332.8 355.2000000000001 317.8666666666666 337.2800000000001C303.1466666666667 319.1466666666667 278.8266666666666 305.0666666666667 254.9333333333333 306.9866666666667C251.7333333333333 331.5200000000001 263.68 357.12 277.3333333333333 373.3333333333334z" /> + <glyph glyph-name="apple-finder" + unicode="&#xF036;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H253.6533333333334C265.8133333333334 385.92 280.1066666666667 407.8933333333333 297.1733333333333 426.6666666666667L320.8533333333333 402.9866666666667C311.68 390.4 303.5733333333333 376.7466666666667 296.32 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H318.5066666666667L325.5466666666666 -26.24L286.5066666666667 -41.6L275.84 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M85.3333333333333 320V42.6666666666667H267.52C266.6666666666667 49.7066666666667 265.3866666666667 56.7466666666667 264.5333333333333 64H256C197.3333333333333 64 144.64 74.6666666666667 109.44 90.4533333333333L128.8533333333333 125.44C149.3333333333333 114.3466666666667 195.6266666666667 106.6666666666667 256 106.6666666666667H261.12C260.48 120.96 260.6933333333334 135.2533333333333 261.76 149.3333333333334H192S200.5333333333333 235.3066666666667 234.6666666666667 320H85.3333333333333M426.6666666666667 42.6666666666667V320H277.3333333333333C258.1333333333334 272.64 247.04 224.8533333333333 241.0666666666667 192H302.2933333333334C298.6666666666667 164.6933333333334 298.0266666666667 136.1066666666667 299.9466666666667 108.16C338.5600000000001 110.9333333333334 368.0000000000001 117.3333333333334 383.1466666666667 125.4400000000001L402.56 90.4533333333334C377.3866666666667 78.9333333333334 343.4666666666667 70.4 304.8533333333334 66.3466666666668C306.1333333333334 58.2400000000001 307.4133333333333 50.3466666666668 309.3333333333334 42.6666666666667H426.6666666666667M128 277.3333333333334H170.6666666666667V213.3333333333334H128V277.3333333333334M341.3333333333333 277.3333333333334H384V213.3333333333334H341.3333333333333V277.3333333333334z" /> + <glyph glyph-name="apple-ios" + unicode="&#xF037;" + horiz-adv-x="512" d=" M426.6666666666667 256V298.6666666666667H341.3333333333333C317.8666666666667 298.6666666666667 298.6666666666667 279.4666666666667 298.6666666666667 256V213.3333333333334C298.6666666666667 189.8666666666667 317.8666666666667 170.6666666666667 341.3333333333333 170.6666666666667H384V128H298.6666666666667V85.3333333333334H384C407.4666666666667 85.3333333333334 426.6666666666667 104.5333333333333 426.6666666666667 128V170.6666666666667C426.6666666666667 194.1333333333333 407.4666666666667 213.3333333333334 384 213.3333333333334H341.3333333333333V256M234.6666666666667 128H192V256H234.6666666666667M234.6666666666667 298.6666666666667H192C168.5333333333333 298.6666666666667 149.3333333333333 279.4666666666667 149.3333333333333 256V128C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334H234.6666666666667C258.1333333333334 85.3333333333334 277.3333333333333 104.5333333333333 277.3333333333333 128V256C277.3333333333333 279.4666666666667 258.1333333333334 298.6666666666667 234.6666666666667 298.6666666666667M85.3333333333333 85.3333333333334H128V213.3333333333334H85.3333333333333M85.3333333333333 256H128V298.6666666666667H85.3333333333333V256z" /> + <glyph glyph-name="apple-keyboard-caps" + unicode="&#xF632;" + horiz-adv-x="512" d=" M320 149.3333333333334V277.3333333333334H366.2933333333334L256 387.6266666666667L145.7066666666667 277.3333333333334H192V149.3333333333334H320M256 448L469.3333333333333 234.6666666666667H362.6666666666667V106.6666666666667H149.3333333333333V234.6666666666667H42.6666666666667L256 448M149.3333333333333 64H362.6666666666667V-64H149.3333333333333V64M320 21.3333333333334H192V-21.3333333333333H320V21.3333333333334z" /> + <glyph glyph-name="apple-keyboard-command" + unicode="&#xF633;" + horiz-adv-x="512" d=" M128 405.3333333333333C175.1466666666667 405.3333333333333 213.3333333333333 367.1466666666667 213.3333333333333 320V277.3333333333334H298.6666666666667V320C298.6666666666667 367.1466666666667 336.8533333333333 405.3333333333333 384 405.3333333333333S469.3333333333333 367.1466666666667 469.3333333333333 320S431.1466666666667 234.6666666666667 384 234.6666666666667H341.3333333333333V149.3333333333334H384C431.1466666666667 149.3333333333334 469.3333333333333 111.1466666666667 469.3333333333333 64S431.1466666666667 -21.3333333333333 384 -21.3333333333333S298.6666666666667 16.8533333333334 298.6666666666667 64V106.6666666666667H213.3333333333333V64C213.3333333333333 16.8533333333334 175.1466666666667 -21.3333333333333 128 -21.3333333333333S42.6666666666667 16.8533333333334 42.6666666666667 64S80.8533333333333 149.3333333333334 128 149.3333333333334H170.6666666666667V234.6666666666667H128C80.8533333333333 234.6666666666667 42.6666666666667 272.8533333333334 42.6666666666667 320S80.8533333333333 405.3333333333333 128 405.3333333333333M341.3333333333333 64C341.3333333333333 40.5333333333333 360.5333333333333 21.3333333333334 384 21.3333333333334S426.6666666666667 40.5333333333333 426.6666666666667 64S407.4666666666667 106.6666666666667 384 106.6666666666667H341.3333333333333V64M298.6666666666667 234.6666666666667H213.3333333333333V149.3333333333334H298.6666666666667V234.6666666666667M128 106.6666666666667C104.5333333333333 106.6666666666667 85.3333333333333 87.4666666666667 85.3333333333333 64S104.5333333333333 21.3333333333334 128 21.3333333333334S170.6666666666667 40.5333333333333 170.6666666666667 64V106.6666666666667H128M170.6666666666667 320C170.6666666666667 343.4666666666667 151.4666666666667 362.6666666666667 128 362.6666666666667S85.3333333333333 343.4666666666667 85.3333333333333 320S104.5333333333333 277.3333333333334 128 277.3333333333334H170.6666666666667V320M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 296.5333333333334 426.6666666666667 320S407.4666666666667 362.6666666666667 384 362.6666666666667S341.3333333333333 343.4666666666667 341.3333333333333 320V277.3333333333334H384z" /> + <glyph glyph-name="apple-keyboard-control" + unicode="&#xF634;" + horiz-adv-x="512" d=" M421.9733333333334 196.6933333333334L391.68 166.6133333333334L256 302.2933333333334L120.32 166.6133333333334L90.0266666666667 196.6933333333333L256 362.6666666666667L421.9733333333334 196.6933333333333z" /> + <glyph glyph-name="apple-keyboard-option" + unicode="&#xF635;" + horiz-adv-x="512" d=" M64 362.6666666666667H194.3466666666666L344.5333333333333 64H448V21.3333333333334H317.44L167.2533333333333 320H64V362.6666666666667M298.6666666666667 362.6666666666667H448V320H298.6666666666667V362.6666666666667z" /> + <glyph glyph-name="apple-keyboard-shift" + unicode="&#xF636;" + horiz-adv-x="512" d=" M320 64V192H366.2933333333334L256 302.2933333333334L145.7066666666667 192H192V64H320M256 362.6666666666667L469.3333333333333 149.3333333333334H362.6666666666667V21.3333333333334H149.3333333333333V149.3333333333334H42.6666666666667L256 362.6666666666667z" /> + <glyph glyph-name="apple-mobileme" + unicode="&#xF038;" + horiz-adv-x="512" d=" M469.3333333333333 127.1466666666667C469.3333333333333 80.4266666666667 431.7866666666667 42.6666666666667 385.4933333333334 42.6666666666667H126.5066666666667C80.2133333333333 42.6666666666667 42.6666666666667 80.4266666666667 42.6666666666667 127.1466666666667C42.6666666666667 169.1733333333334 73.1733333333333 203.9466666666667 113.28 210.3466666666667C112.64 213.3333333333334 112.4266666666667 216.32 112.4266666666667 219.5200000000001C112.4266666666667 248.9600000000001 136.1066666666667 273.0666666666667 165.5466666666667 273.0666666666667C178.56 273.0666666666667 190.72 268.1600000000001 199.8933333333334 260.2666666666667C216.32 297.6 237.44 331.9466666666667 296.7466666666667 331.9466666666667C368.64 331.9466666666667 402.56 276.0533333333334 402.56 216.96C402.56 214.6133333333334 402.56 212.0533333333334 402.3466666666667 209.7066666666667C440.5333333333333 201.8133333333334 469.3333333333333 167.8933333333334 469.3333333333333 127.1466666666667z" /> + <glyph glyph-name="apple-safari" + unicode="&#xF039;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 147.4133333333334 102.4 106.6666666666667 130.3466666666666 76.5866666666667L210.7733333333333 237.2266666666667L371.4133333333333 317.6533333333334C341.3333333333333 345.6 300.5866666666667 362.6666666666667 256 362.6666666666667M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 236.5866666666667 409.6 277.3333333333334 381.6533333333333 307.4133333333334L301.2266666666667 146.7733333333333L140.5866666666667 66.3466666666667C170.6666666666667 38.4 211.4133333333333 21.3333333333334 256 21.3333333333334M256 192L239.5733333333333 208.4266666666667L206.9333333333333 142.9333333333333L272.4266666666666 175.5733333333333L256 192M256 74.6666666666667H277.3333333333333V42.6666666666667H256V74.6666666666667M338.7733333333333 109.0133333333333L353.92 124.16L376.5333333333333 101.5466666666667L361.3866666666666 86.4L338.7733333333333 109.0133333333334M373.3333333333333 192V213.3333333333334H405.3333333333333V192H373.3333333333333M256 309.3333333333334H234.6666666666667V341.3333333333334H256V309.3333333333334M173.2266666666666 274.9866666666667L158.08 259.8400000000001L135.4666666666667 282.4533333333334L150.6133333333333 297.6L173.2266666666666 274.9866666666667M138.6666666666667 192V170.6666666666667H106.6666666666667V192H138.6666666666667z" /> + <glyph glyph-name="application" + unicode="&#xF614;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667C429.0133333333333 362.6666666666667 448 343.4666666666667 448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C82.9866666666667 21.3333333333334 64 40.5333333333333 64 64V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H405.3333333333333M405.3333333333333 64V277.3333333333334H106.6666666666667V64H405.3333333333333z" /> + <glyph glyph-name="appnet" + unicode="&#xF03A;" + horiz-adv-x="512" d=" M308.6933333333334 253.0133333333333C321.4933333333334 283.9466666666667 345.1733333333333 356.6933333333334 348.8 369.4933333333334C352 382.08 361.6 384 366.9333333333334 384H410.6666666666668C417.9200000000001 384 421.9733333333334 378.4533333333333 420.2666666666667 369.4933333333334C374.4000000000001 207.5733333333334 343.2533333333334 160 343.2533333333334 149.3333333333334C343.2533333333334 122.0266666666667 372.4800000000001 71.04 399.7866666666667 71.04C416.0000000000001 71.04 412.5866666666667 94.72 430.7200000000001 94.72H465.28C470.8266666666667 94.72 476.1600000000001 89.1733333333333 476.1600000000001 79.9999999999999C476.1600000000001 71.0399999999999 466.1333333333334 -1e-13 397.0133333333334 -1e-13C327.6800000000001 -1e-13 301.8666666666667 83.6266666666666 301.8666666666667 83.6266666666666C292.9066666666667 65.4933333333332 239.5733333333334 -1e-13 174.0800000000001 -1e-13C57.6 -1e-13 35.84 123.7333333333332 35.84 196.4799999999999C35.84 269.4400000000001 70.4 384 168.7466666666667 384C266.6666666666667 384 308.6933333333333 253.0133333333333 308.6933333333333 253.0133333333333M96 202.0266666666667C96 160 94.08 72.7466666666667 170.6666666666667 71.0400000000001C214.1866666666667 69.1200000000001 254.08 123.7333333333334 273.28 167.4666666666667C246.8266666666667 258.3466666666667 228.6933333333334 312.9600000000001 170.6666666666667 312.9600000000001C92.16 311.2533333333334 96 202.0266666666667 96 202.0266666666667z" /> + <glyph glyph-name="apps" + unicode="&#xF03B;" + horiz-adv-x="512" d=" M341.3333333333333 21.3333333333334H426.6666666666667V106.6666666666667H341.3333333333333M341.3333333333333 149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333M213.3333333333333 277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M213.3333333333333 149.3333333333334H298.6666666666667V234.6666666666667H213.3333333333333M85.3333333333333 149.3333333333334H170.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 21.3333333333334H170.6666666666667V106.6666666666667H85.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V106.6666666666667H213.3333333333333M85.3333333333333 277.3333333333334H170.6666666666667V362.6666666666667H85.3333333333333V277.3333333333334z" /> + <glyph glyph-name="archive" + unicode="&#xF03C;" + horiz-adv-x="512" d=" M64 384H448V298.6666666666667H64V384M85.3333333333333 277.3333333333334H426.6666666666667V0H85.3333333333333V277.3333333333334M202.6666666666667 213.3333333333334C196.6933333333333 213.3333333333334 192 208.64 192 202.6666666666667V170.6666666666667H320V202.6666666666667C320 208.64 315.3066666666666 213.3333333333334 309.3333333333333 213.3333333333334H202.6666666666667z" /> + <glyph glyph-name="arrange-bring-forward" + unicode="&#xF03D;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H341.3333333333333V106.6666666666667H42.6666666666667V405.3333333333333M469.3333333333333 277.3333333333334V-21.3333333333333H170.6666666666667V64H213.3333333333333V21.3333333333334H426.6666666666667V234.6666666666667H384V277.3333333333334H469.3333333333333z" /> + <glyph glyph-name="arrange-bring-to-front" + unicode="&#xF03E;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V320H192V362.6666666666667H85.3333333333333V256H128V213.3333333333334H42.6666666666667V405.3333333333333M469.3333333333333 170.6666666666667V-21.3333333333333H277.3333333333333V64H320V21.3333333333334H426.6666666666667V128H384V170.6666666666667H469.3333333333333M170.6666666666667 277.3333333333334H341.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334z" /> + <glyph glyph-name="arrange-send-backward" + unicode="&#xF03F;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H341.3333333333333V106.6666666666667H42.6666666666667V405.3333333333333M469.3333333333333 277.3333333333334V-21.3333333333333H170.6666666666667V64H384V277.3333333333334H469.3333333333333M85.3333333333333 362.6666666666667V149.3333333333334H298.6666666666667V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrange-send-to-back" + unicode="&#xF040;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V213.3333333333334H42.6666666666667V405.3333333333333M192 362.6666666666667H85.3333333333333V256H192V362.6666666666667M469.3333333333333 170.6666666666667V-21.3333333333333H277.3333333333333V170.6666666666667H469.3333333333333M320 21.3333333333334H426.6666666666667V128H320V21.3333333333334M341.3333333333333 277.3333333333334V213.3333333333334H277.3333333333333V277.3333333333334H341.3333333333333M234.6666666666667 106.6666666666667H170.6666666666667V170.6666666666667H234.6666666666667V106.6666666666667z" /> + <glyph glyph-name="arrow-all" + unicode="&#xF041;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H384L352 245.3333333333334L382.2933333333334 275.6266666666667L465.92 192L382.2933333333334 108.3733333333333L352 138.6666666666667L384 170.6666666666667H277.3333333333333V64L309.3333333333333 96L339.6266666666667 65.7066666666667L256 -17.92L172.3733333333333 65.7066666666667L202.6666666666667 96L234.6666666666667 64V170.6666666666667H128L160 138.6666666666667L129.7066666666667 108.3733333333333L46.08 192L129.7066666666667 275.6266666666667L160 245.3333333333334L128 213.3333333333334H234.6666666666667V320L202.6666666666667 288L172.3733333333333 318.2933333333334L256 401.92L339.6266666666667 318.2933333333334L309.3333333333333 288L277.3333333333333 320V213.3333333333334z" /> + <glyph glyph-name="arrow-bottom-left" + unicode="&#xF042;" + horiz-adv-x="512" d=" M405.3333333333333 311.2533333333334L375.2533333333334 341.3333333333334L149.3333333333333 115.4133333333334V256H106.6666666666667V42.6666666666667H320V85.3333333333334H179.4133333333333L405.3333333333333 311.2533333333334z" /> + <glyph glyph-name="arrow-bottom-right" + unicode="&#xF043;" + horiz-adv-x="512" d=" M106.6666666666667 311.2533333333334L136.7466666666667 341.3333333333334L362.6666666666667 115.4133333333334V256H405.3333333333333V42.6666666666667H192V85.3333333333334H332.5866666666667L106.6666666666667 311.2533333333334z" /> + <glyph glyph-name="arrow-compress" + unicode="&#xF615;" + horiz-adv-x="512" d=" M416 382.0800000000001L320 286.0800000000001V362.6666666666667H277.3333333333333V213.3333333333334H426.6666666666667V256H350.08L446.08 352L416 382.0800000000001M85.3333333333333 170.6666666666667V128H161.92L65.92 32L96 1.92L192 97.92V21.3333333333334H234.6666666666667V170.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrow-compress-all" + unicode="&#xF044;" + horiz-adv-x="512" d=" M416 382.0800000000001L446.08 352L350.08 256H426.6666666666667V213.3333333333334H277.3333333333333V362.6666666666667H320V286.0800000000001L416 382.0800000000001M446.08 32L416 1.92L320 97.92V21.3333333333334H277.3333333333333V170.6666666666667H426.6666666666667V128H350.08L446.08 32M96 382.0800000000001L192 286.0800000000001V362.6666666666667H234.6666666666667V213.3333333333334H85.3333333333333V256H161.92L65.92 352L96 382.0800000000001M65.92 32L161.92 128H85.3333333333333V170.6666666666667H234.6666666666667V21.3333333333334H192V97.92L96 1.92L65.92 32z" /> + <glyph glyph-name="arrow-down" + unicode="&#xF045;" + horiz-adv-x="512" d=" M234.6666666666667 362.6666666666667H277.3333333333333V106.6666666666667L394.6666666666667 224L424.9600000000001 193.7066666666667L256 24.7466666666667L87.04 193.7066666666667L117.3333333333333 224L234.6666666666667 106.6666666666667V362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold" + unicode="&#xF046;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H298.6666666666667V170.6666666666667L373.3333333333333 245.3333333333334L424.9600000000001 193.7066666666667L256 24.7466666666667L87.04 193.7066666666667L138.6666666666667 245.3333333333334L213.3333333333333 170.6666666666667V362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold-circle" + unicode="&#xF047;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 85.3333333333334L362.6666666666667 192H298.6666666666667V277.3333333333334H213.3333333333333V192H149.3333333333333L256 85.3333333333334z" /> + <glyph glyph-name="arrow-down-bold-circle-outline" + unicode="&#xF048;" + horiz-adv-x="512" d=" M256 85.3333333333334L149.3333333333333 192H213.3333333333333V277.3333333333334H298.6666666666667V192H362.6666666666667L256 85.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="arrow-down-bold-hexagon-outline" + unicode="&#xF049;" + horiz-adv-x="512" d=" M256 85.3333333333334L149.3333333333333 192H213.3333333333333V277.3333333333334H298.6666666666667V192H362.6666666666667L256 85.3333333333334M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-down-drop-circle" + unicode="&#xF04A;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="arrow-down-drop-circle-outline" + unicode="&#xF04B;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.2933333333334 362.6666666666667 426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="arrow-expand" + unicode="&#xF616;" + horiz-adv-x="512" d=" M213.3333333333333 0V42.6666666666667H136.7466666666667L232.7466666666667 138.6666666666667L202.6666666666667 168.7466666666667L106.6666666666667 72.7466666666667V149.3333333333334H64V0H213.3333333333333M309.3333333333333 215.2533333333333L405.3333333333333 311.2533333333334V234.6666666666667H448V384H298.6666666666667V341.3333333333334H375.2533333333334L279.2533333333334 245.3333333333334L309.3333333333333 215.2533333333333z" /> + <glyph glyph-name="arrow-expand-all" + unicode="&#xF04C;" + horiz-adv-x="512" d=" M202.6666666666667 168.7466666666667L232.7466666666667 138.6666666666667L136.7466666666667 42.6666666666667H213.3333333333333V0H64V149.3333333333334H106.6666666666667V72.7466666666667L202.6666666666667 168.7466666666667M232.7466666666667 245.3333333333334L202.6666666666667 215.2533333333333L106.6666666666667 311.2533333333334V234.6666666666667H64V384H213.3333333333333V341.3333333333334H136.7466666666667L232.7466666666667 245.3333333333334M309.3333333333333 168.7466666666667L405.3333333333333 72.7466666666667V149.3333333333334H448V0H298.6666666666667V42.6666666666667H375.2533333333334L279.2533333333334 138.6666666666667L309.3333333333333 168.7466666666667M279.2533333333334 245.3333333333334L375.2533333333334 341.3333333333334H298.6666666666667V384H448V234.6666666666667H405.3333333333333V311.2533333333334L309.3333333333333 215.2533333333333L279.2533333333334 245.3333333333334z" /> + <glyph glyph-name="arrow-left" + unicode="&#xF04D;" + horiz-adv-x="512" d=" M426.6666666666667 213.3333333333334V170.6666666666667H170.6666666666667L288 53.3333333333334L257.7066666666667 23.04L88.7466666666667 192L257.7066666666667 360.9600000000001L288 330.6666666666667L170.6666666666667 213.3333333333334H426.6666666666667z" /> + <glyph glyph-name="arrow-left-bold" + unicode="&#xF04E;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667V149.3333333333334H234.6666666666667L309.3333333333333 74.6666666666667L257.7066666666667 23.04L88.7466666666667 192L257.7066666666667 360.9600000000001L309.3333333333333 309.3333333333334L234.6666666666667 234.6666666666667H426.6666666666667z" /> + <glyph glyph-name="arrow-left-bold-circle" + unicode="&#xF04F;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M149.3333333333333 192L256 85.3333333333334V149.3333333333334H341.3333333333333V234.6666666666667H256V298.6666666666667L149.3333333333333 192z" /> + <glyph glyph-name="arrow-left-bold-circle-outline" + unicode="&#xF050;" + horiz-adv-x="512" d=" M149.3333333333333 192L256 298.6666666666667V234.6666666666667H341.3333333333333V149.3333333333334H256V85.3333333333334L149.3333333333333 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192z" /> + <glyph glyph-name="arrow-left-bold-hexagon-outline" + unicode="&#xF051;" + horiz-adv-x="512" d=" M149.3333333333333 192L256 298.6666666666667V234.6666666666667H341.3333333333333V149.3333333333334H256V85.3333333333334L149.3333333333333 192M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-left-drop-circle" + unicode="&#xF052;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="arrow-left-drop-circle-outline" + unicode="&#xF053;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192M426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="arrow-right" + unicode="&#xF054;" + horiz-adv-x="512" d=" M85.3333333333333 213.3333333333334V170.6666666666667H341.3333333333333L224 53.3333333333334L254.2933333333333 23.04L423.2533333333334 192L254.2933333333333 360.9600000000001L224 330.6666666666667L341.3333333333333 213.3333333333334H85.3333333333333z" /> + <glyph glyph-name="arrow-right-bold" + unicode="&#xF055;" + horiz-adv-x="512" d=" M85.3333333333333 234.6666666666667V149.3333333333334H277.3333333333333L202.6666666666667 74.6666666666667L254.2933333333333 23.04L423.2533333333334 192L254.2933333333333 360.9600000000001L202.6666666666667 309.3333333333334L277.3333333333333 234.6666666666667H85.3333333333333z" /> + <glyph glyph-name="arrow-right-bold-circle" + unicode="&#xF056;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M362.6666666666667 192L256 298.6666666666667V234.6666666666667H170.6666666666667V149.3333333333334H256V85.3333333333334L362.6666666666667 192z" /> + <glyph glyph-name="arrow-right-bold-circle-outline" + unicode="&#xF057;" + horiz-adv-x="512" d=" M362.6666666666667 192L256 85.3333333333334V149.3333333333334H170.6666666666667V234.6666666666667H256V298.6666666666667L362.6666666666667 192M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192z" /> + <glyph glyph-name="arrow-right-bold-hexagon-outline" + unicode="&#xF058;" + horiz-adv-x="512" d=" M362.6666666666667 192L256 85.3333333333334V149.3333333333334H170.6666666666667V234.6666666666667H256V298.6666666666667L362.6666666666667 192M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-right-drop-circle" + unicode="&#xF059;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="arrow-right-drop-circle-outline" + unicode="&#xF05A;" + horiz-adv-x="512" d=" M42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192M85.3333333333333 192C85.3333333333333 286.2933333333334 161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="arrow-top-left" + unicode="&#xF05B;" + horiz-adv-x="512" d=" M405.3333333333333 72.7466666666667L375.2533333333334 42.6666666666667L149.3333333333333 268.5866666666667V128H106.6666666666667V341.3333333333334H320V298.6666666666667H179.4133333333333L405.3333333333333 72.7466666666667z" /> + <glyph glyph-name="arrow-top-right" + unicode="&#xF05C;" + horiz-adv-x="512" d=" M106.6666666666667 72.7466666666667L332.5866666666667 298.6666666666667H192V341.3333333333334H405.3333333333333V128H362.6666666666667V268.5866666666667L136.7466666666667 42.6666666666667L106.6666666666667 72.7466666666667z" /> + <glyph glyph-name="arrow-up" + unicode="&#xF05D;" + horiz-adv-x="512" d=" M277.3333333333333 21.3333333333334H234.6666666666667V277.3333333333334L117.3333333333333 160L87.04 190.2933333333334L256 359.2533333333334L424.9600000000001 190.2933333333334L394.6666666666667 160L277.3333333333333 277.3333333333334V21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold" + unicode="&#xF05E;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334H213.3333333333333V213.3333333333334L138.6666666666667 138.6666666666667L87.04 190.2933333333334L256 359.2533333333334L424.9600000000001 190.2933333333334L373.3333333333333 138.6666666666667L298.6666666666667 213.3333333333334V21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold-circle" + unicode="&#xF05F;" + horiz-adv-x="512" d=" M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M256 298.6666666666667L149.3333333333333 192H213.3333333333333V106.6666666666667H298.6666666666667V192H362.6666666666667L256 298.6666666666667z" /> + <glyph glyph-name="arrow-up-bold-circle-outline" + unicode="&#xF060;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 192H298.6666666666667V106.6666666666667H213.3333333333333V192H149.3333333333333L256 298.6666666666667M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="arrow-up-bold-hexagon-outline" + unicode="&#xF061;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 192H298.6666666666667V106.6666666666667H213.3333333333333V192H149.3333333333333L256 298.6666666666667M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="arrow-up-drop-circle" + unicode="&#xF062;" + horiz-adv-x="512" d=" M256 -21.3333333333333C138.24 -21.3333333333333 42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333M362.6666666666667 149.3333333333334L256 256L149.3333333333333 149.3333333333334H362.6666666666667z" /> + <glyph glyph-name="arrow-up-drop-circle-outline" + unicode="&#xF063;" + horiz-adv-x="512" d=" M256 -21.3333333333333C373.76 -21.3333333333333 469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333S42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M362.6666666666667 149.3333333333334L256 256L149.3333333333333 149.3333333333334H362.6666666666667z" /> + <glyph glyph-name="assistant" + unicode="&#xF064;" + horiz-adv-x="512" d=" M405.3333333333333 405.3333333333333H106.6666666666667C83.2 405.3333333333333 64 386.1333333333334 64 362.6666666666667V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192L256 -42.6666666666666L320 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V362.6666666666667C448 386.1333333333334 428.8 405.3333333333333 405.3333333333333 405.3333333333333M296.1066666666667 173.2266666666667L256 85.3333333333334L215.8933333333334 173.2266666666667L128 213.3333333333334L215.8933333333334 253.44L256 341.3333333333334L296.1066666666667 253.44L384 213.3333333333334" /> + <glyph glyph-name="at" + unicode="&#xF065;" + horiz-adv-x="512" d=" M371.6266666666667 128C379.5200000000001 147.4133333333334 384 169.1733333333334 384 192C384 274.5600000000001 326.6133333333334 341.3333333333334 256 341.3333333333334S128 274.5600000000001 128 192S185.3866666666667 42.6666666666667 256 42.6666666666667C288.8533333333333 42.6666666666667 320 42.6666666666667 341.3333333333333 59.3066666666667V9.6000000000001C320 1e-13 287.1466666666667 1e-13 256 1e-13C161.7066666666667 1e-13 85.3333333333333 85.9733333333335 85.3333333333333 192.0000000000001S161.7066666666667 384.0000000000001 256 384.0000000000001S426.6666666666667 298.0266666666668 426.6666666666667 192.0000000000001C426.6666666666667 152.5333333333334 416 115.8400000000001 397.8666666666666 85.3333333333334H298.6666666666667V117.3333333333334C285.0133333333333 97.4933333333335 266.6666666666667 85.3333333333334 245.3333333333333 85.3333333333334C204.16 85.3333333333334 170.6666666666667 133.12 170.6666666666667 192S204.16 298.6666666666667 245.3333333333333 298.6666666666667C266.6666666666667 298.6666666666667 285.0133333333333 286.5066666666667 298.6666666666667 266.6666666666667V277.3333333333334H341.3333333333333V128H371.6266666666667M256 256C232.5333333333334 256 213.3333333333333 227.4133333333334 213.3333333333333 192S232.5333333333334 128 256 128S298.6666666666667 156.5866666666667 298.6666666666667 192S279.4666666666667 256 256 256z" /> + <glyph glyph-name="attachment" + unicode="&#xF066;" + horiz-adv-x="512" d=" M160 64C95.1466666666667 64 42.6666666666667 116.48 42.6666666666667 181.3333333333334S95.1466666666667 298.6666666666667 160 298.6666666666667H384C431.1466666666667 298.6666666666667 469.3333333333333 260.48 469.3333333333333 213.3333333333334S431.1466666666667 128 384 128H202.6666666666667C173.2266666666666 128 149.3333333333333 151.8933333333333 149.3333333333333 181.3333333333334S173.2266666666666 234.6666666666667 202.6666666666667 234.6666666666667H362.6666666666667V202.6666666666667H202.6666666666667C190.9333333333333 202.6666666666667 181.3333333333333 193.0666666666667 181.3333333333333 181.3333333333334S190.9333333333333 160 202.6666666666667 160H384C413.44 160 437.3333333333333 183.8933333333334 437.3333333333333 213.3333333333334S413.44 266.6666666666667 384 266.6666666666667H160C112.8533333333333 266.6666666666667 74.6666666666667 228.48 74.6666666666667 181.3333333333334S112.8533333333333 96 160 96H362.6666666666667V64H160z" /> + <glyph glyph-name="audiobook" + unicode="&#xF067;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M277.3333333333333 128C253.8666666666667 128 234.6666666666667 108.8 234.6666666666667 85.3333333333334S253.8666666666667 42.6666666666667 277.3333333333333 42.6666666666667S320 61.8666666666667 320 85.3333333333334V192H384V234.6666666666667H298.6666666666667V122.24C292.48 125.8666666666667 285.0133333333333 128 277.3333333333333 128z" /> + <glyph glyph-name="auto-fix" + unicode="&#xF068;" + horiz-adv-x="512" d=" M160 328.5333333333334L106.6666666666667 298.6666666666667L136.5333333333333 352L106.6666666666667 405.3333333333333L160 375.4666666666667L213.3333333333333 405.3333333333333L183.4666666666667 352L213.3333333333333 298.6666666666667L160 328.5333333333334M416 119.4666666666667L469.3333333333333 149.3333333333334L439.4666666666667 96L469.3333333333333 42.6666666666667L416 72.5333333333333L362.6666666666667 42.6666666666667L392.5333333333333 96L362.6666666666667 149.3333333333334L416 119.4666666666667M469.3333333333333 405.3333333333333L439.4666666666667 352L469.3333333333333 298.6666666666667L416 328.5333333333334L362.6666666666667 298.6666666666667L392.5333333333333 352L362.6666666666667 405.3333333333333L416 375.4666666666667L469.3333333333333 405.3333333333333M284.5866666666667 175.36L336.64 227.4133333333334L291.4133333333333 272.6400000000001L239.36 220.5866666666667L284.5866666666667 175.3600000000001M306.56 292.4800000000001L356.48 242.5600000000001C364.8 234.6666666666668 364.8 220.8000000000001 356.48 212.4800000000001L107.52 -36.48C99.2 -44.8 85.3333333333333 -44.8 77.44 -36.48L27.52 13.44C19.2 21.3333333333334 19.2 35.2 27.52 43.52L276.48 292.48C284.8 300.8 298.6666666666667 300.8 306.56 292.48z" /> + <glyph glyph-name="auto-upload" + unicode="&#xF069;" + horiz-adv-x="512" d=" M114.1333333333333 178.1333333333333L138.6666666666667 256L163.2 178.1333333333333M117.3333333333333 298.6666666666667L49.0666666666667 106.6666666666667H89.6L104.5333333333333 149.3333333333334H172.8L187.7333333333333 106.6666666666667H228.2666666666667L160 298.6666666666667M234.6666666666667 21.3333333333334H469.3333333333333V64H234.6666666666667M298.6666666666667 106.6666666666667H405.3333333333333V213.3333333333334H469.3333333333333L352 330.6666666666667L234.6666666666667 213.3333333333334H298.6666666666667V106.6666666666667z" /> + <glyph glyph-name="autorenew" + unicode="&#xF06A;" + horiz-adv-x="512" d=" M256 320V256L341.3333333333333 341.3333333333334L256 426.6666666666667V362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 158.5066666666667 95.1466666666667 127.36 111.7866666666667 101.1200000000001L142.9333333333333 132.2666666666667C133.3333333333333 149.9733333333334 128 170.6666666666667 128 192C128 262.6133333333334 185.3866666666667 320 256 320M400.2133333333333 282.88L369.0666666666667 251.7333333333334C378.4533333333334 233.8133333333334 384 213.3333333333334 384 192C384 121.3866666666667 326.6133333333334 64 256 64V128L170.6666666666667 42.6666666666667L256 -42.6666666666666V21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 225.4933333333334 416.8533333333333 256.64 400.2133333333334 282.88z" /> + <glyph glyph-name="av-timer" + unicode="&#xF06B;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334C234.6666666666667 73.6 244.2666666666667 64 256 64S277.3333333333333 73.6 277.3333333333333 85.3333333333334S267.7333333333334 106.6666666666667 256 106.6666666666667S234.6666666666667 97.0666666666667 234.6666666666667 85.3333333333334M234.6666666666667 384V298.6666666666667H277.3333333333333V339.6266666666667C349.6533333333333 329.1733333333334 405.3333333333333 267.3066666666667 405.3333333333333 192C405.3333333333333 109.44 338.56 42.6666666666667 256 42.6666666666667S106.6666666666667 109.44 106.6666666666667 192C106.6666666666667 227.84 119.2533333333333 260.6933333333334 140.3733333333333 286.2933333333334L256 170.6666666666667L286.08 200.7466666666667L141.0133333333333 345.8133333333334V345.3866666666667C94.2933333333333 310.4 64 254.9333333333334 64 192C64 85.9733333333334 149.9733333333333 0 256 0S448 85.9733333333334 448 192S362.0266666666667 384 256 384M384 192C384 203.7333333333334 374.4 213.3333333333334 362.6666666666667 213.3333333333334S341.3333333333333 203.7333333333334 341.3333333333333 192S350.9333333333333 170.6666666666667 362.6666666666667 170.6666666666667S384 180.2666666666667 384 192M128 192C128 180.2666666666667 137.6 170.6666666666667 149.3333333333333 170.6666666666667S170.6666666666667 180.2666666666667 170.6666666666667 192S161.0666666666667 213.3333333333334 149.3333333333333 213.3333333333334S128 203.7333333333334 128 192z" /> + <glyph glyph-name="baby" + unicode="&#xF06C;" + horiz-adv-x="512" d=" M394.6666666666667 362.6666666666667C424.1066666666667 362.6666666666667 448 338.7733333333333 448 309.3333333333334S424.1066666666667 256 394.6666666666667 256S341.3333333333333 279.8933333333333 341.3333333333333 309.3333333333334S365.2266666666667 362.6666666666667 394.6666666666667 362.6666666666667M96 21.3333333333334C78.2933333333333 21.3333333333334 64 35.6266666666667 64 53.3333333333334S78.2933333333333 85.3333333333334 96 85.3333333333334H245.3333333333333C263.04 85.3333333333334 277.3333333333333 71.04 277.3333333333333 53.3333333333334S263.04 21.3333333333334 245.3333333333333 21.3333333333334H96M343.2533333333334 42.6666666666667L313.3866666666667 128H234.6666666666667L144 218.6666666666667S192 272 266.6666666666667 272C330.6666666666667 272 338.1333333333334 250.6666666666667 342.6133333333333 237.44L403.6266666666667 64C409.6 47.36 400.64 29.0133333333333 384 23.04C367.36 17.28 349.0133333333333 26.0266666666666 343.2533333333334 42.6666666666667z" /> + <glyph glyph-name="backburger" + unicode="&#xF06D;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667L192 85.3333333333334L162.1333333333333 55.04L25.1733333333333 192L162.1333333333333 328.9600000000001L192 298.6666666666667L106.6666666666667 213.3333333333334H448V170.6666666666667H106.6666666666667M448 320V277.3333333333334H234.6666666666667V320H448M448 106.6666666666667V64H234.6666666666667V106.6666666666667H448z" /> + <glyph glyph-name="backspace" + unicode="&#xF06E;" + horiz-adv-x="512" d=" M469.3333333333333 384H149.3333333333333C134.6133333333334 384 123.0933333333333 376.5333333333333 115.4133333333333 365.2266666666667L0 192L115.4133333333333 18.9866666666667C123.0933333333333 7.68 134.6133333333334 0 149.3333333333333 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 364.8 492.8 384 469.3333333333333 384M405.3333333333333 115.4133333333334L375.2533333333334 85.3333333333334L298.6666666666667 161.92L222.08 85.3333333333334L192 115.4133333333334L268.5866666666667 192L192 268.5866666666667L222.08 298.6666666666667L298.6666666666667 222.08L375.2533333333334 298.6666666666667L405.3333333333333 268.5866666666667L328.7466666666667 192" /> + <glyph glyph-name="backup-restore" + unicode="&#xF06F;" + horiz-adv-x="512" d=" M256 384C149.9733333333333 384 64 298.0266666666667 64 192H0L85.3333333333333 106.6666666666667L170.6666666666667 192H106.6666666666667C106.6666666666667 274.5600000000001 173.44 341.3333333333334 256 341.3333333333334S405.3333333333333 274.5600000000001 405.3333333333333 192S338.56 42.6666666666667 256 42.6666666666667C224 42.6666666666667 193.92 53.3333333333334 169.3866666666667 70.4L138.6666666666667 39.68C171.52 14.9333333333333 212.0533333333333 0 256 0C362.0266666666667 0 448 85.9733333333334 448 192S362.0266666666667 384 256 384M298.6666666666667 192C298.6666666666667 215.4666666666667 279.4666666666667 234.6666666666667 256 234.6666666666667S213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192z" /> + <glyph glyph-name="bank" + unicode="&#xF070;" + horiz-adv-x="512" d=" M245.3333333333333 426.6666666666667L42.6666666666667 320V277.3333333333334H448V320M341.3333333333333 234.6666666666667V85.3333333333334H405.3333333333333V234.6666666666667M42.6666666666667 -21.3333333333333H448V42.6666666666667H42.6666666666667M213.3333333333333 234.6666666666667V85.3333333333334H277.3333333333333V234.6666666666667M85.3333333333333 234.6666666666667V85.3333333333334H149.3333333333333V234.6666666666667H85.3333333333333z" /> + <glyph glyph-name="barcode" + unicode="&#xF071;" + horiz-adv-x="512" d=" M42.6666666666667 320H85.3333333333333V64H42.6666666666667V320M106.6666666666667 320H128V64H106.6666666666667V320M149.3333333333333 320H213.3333333333333V64H149.3333333333333V320M234.6666666666667 320H256V64H234.6666666666667V320M298.6666666666667 320H341.3333333333333V64H298.6666666666667V320M362.6666666666667 320H426.6666666666667V64H362.6666666666667V320M448 320H469.3333333333333V64H448V320z" /> + <glyph glyph-name="barcode-scan" + unicode="&#xF072;" + horiz-adv-x="512" d=" M85.3333333333333 320H128V64H85.3333333333333V320M149.3333333333333 320H170.6666666666667V64H149.3333333333333V320M192 320H256V64H192V320M277.3333333333333 320H298.6666666666667V64H277.3333333333333V320M341.3333333333333 320H384V64H341.3333333333333V320M405.3333333333333 320H426.6666666666667V64H405.3333333333333V320M42.6666666666667 362.6666666666667V277.3333333333334H0V362.6666666666667C0 386.1333333333334 19.2 405.3333333333333 42.6666666666667 405.3333333333333H128V362.6666666666667H42.6666666666667M469.3333333333333 405.3333333333333C492.8 405.3333333333333 512 386.1333333333334 512 362.6666666666667V277.3333333333334H469.3333333333333V362.6666666666667H384V405.3333333333333H469.3333333333333M42.6666666666667 106.6666666666667V21.3333333333334H128V-21.3333333333333H42.6666666666667C19.2 -21.3333333333333 0 -2.1333333333333 0 21.3333333333334V106.6666666666667H42.6666666666667M469.3333333333333 21.3333333333334V106.6666666666667H512V21.3333333333334C512 -2.1333333333333 492.8 -21.3333333333333 469.3333333333333 -21.3333333333333H384V21.3333333333334H469.3333333333333z" /> + <glyph glyph-name="barley" + unicode="&#xF073;" + horiz-adv-x="512" d=" M156.3733333333333 56.96C138.6666666666667 81.7066666666667 138.6666666666667 110.2933333333334 138.6666666666667 138.6666666666668C174.2933333333333 117.3333333333334 209.7066666666667 96 227.6266666666667 71.0400000000001L234.6666666666667 59.0933333333334V107.7333333333334C202.6666666666667 126.9333333333334 172.3733333333333 146.5600000000001 156.3733333333333 168.96C138.6666666666667 193.7066666666667 138.6666666666667 222.2933333333334 138.6666666666667 250.6666666666667C174.2933333333333 229.3333333333334 209.7066666666667 208.0000000000001 227.6266666666667 183.0400000000001L234.6666666666667 170.6666666666667V219.7333333333334C202.6666666666667 238.9333333333334 172.3733333333333 258.5600000000001 156.3733333333333 280.9600000000001C138.6666666666667 305.7066666666667 138.6666666666667 334.2933333333334 138.6666666666667 362.6666666666667C174.2933333333333 341.3333333333334 209.7066666666667 320 227.6266666666667 295.04C229.76 292.0533333333334 231.68 288.8533333333334 233.3866666666667 285.44C229.76 298.6666666666667 227.4133333333334 311.04 227.2 323.8400000000001C226.9866666666667 356.0533333333334 241.0666666666667 389.12 255.1466666666667 422.1866666666667C269.8666666666667 390.6133333333334 284.5866666666667 358.8266666666667 284.8 326.6133333333334C285.0133333333333 313.1733333333334 282.6666666666667 299.52 278.8266666666667 286.0800000000001C280.5333333333334 289.0666666666667 282.24 292.0533333333334 284.3733333333334 295.04C302.2933333333333 320 337.7066666666667 341.3333333333334 373.3333333333333 362.6666666666667C373.3333333333333 334.2933333333334 373.3333333333333 305.7066666666667 355.6266666666667 280.9600000000001C339.6266666666667 258.56 309.3333333333333 238.9333333333334 277.3333333333333 219.7333333333334V170.6666666666667L284.3733333333334 183.04C302.2933333333333 208 337.7066666666667 229.3333333333334 373.3333333333333 250.6666666666667C373.3333333333333 222.2933333333334 373.3333333333333 193.7066666666667 355.6266666666667 168.96C339.6266666666667 146.56 309.3333333333334 126.9333333333333 277.3333333333334 107.7333333333334V59.0933333333334L284.3733333333334 71.04C302.2933333333334 96 337.7066666666667 117.3333333333333 373.3333333333333 138.6666666666666C373.3333333333333 110.2933333333333 373.3333333333333 81.7066666666667 355.6266666666667 56.96C339.6266666666667 34.5599999999999 309.3333333333334 14.9333333333333 277.3333333333334 -4.2666666666667V-42.6666666666666H234.6666666666667V-4.2666666666667C202.6666666666667 14.9333333333333 172.3733333333334 34.5600000000001 156.3733333333334 56.96z" /> + <glyph glyph-name="barrel" + unicode="&#xF074;" + horiz-adv-x="512" d=" M384 42.6666666666667H405.3333333333333V0H106.6666666666667V42.6666666666667H128V170.6666666666667H106.6666666666667V213.3333333333334H128V341.3333333333334H106.6666666666667V384H405.3333333333333V341.3333333333334H384V213.3333333333334H405.3333333333333V170.6666666666667H384V42.6666666666667M192 170.6666666666667C192 135.2533333333333 220.5866666666667 106.6666666666667 256 106.6666666666667S320 135.2533333333333 320 170.6666666666667C320 213.3333333333334 256 285.2266666666667 256 285.2266666666667S192 213.3333333333334 192 170.6666666666667z" /> + <glyph glyph-name="basecamp" + unicode="&#xF075;" + horiz-adv-x="512" d=" M72.32 114.3466666666667C72.5333333333333 116.2666666666667 72.96 118.4 73.6 120.32C74.6666666666667 124.16 75.52 128 76.8 131.4133333333333C81.4933333333333 145.28 88.7466666666667 158.2933333333333 96 170.6666666666666C100.2666666666667 177.0666666666667 104.32 183.2533333333333 108.16 189.44C112.2133333333333 195.6266666666666 116.2666666666667 201.8133333333333 120.96 207.7866666666666C128 217.3866666666666 137.6 227.6266666666667 149.3333333333333 231.4666666666667C166.1866666666667 236.8 178.56 219.52 188.16 208.64C193.7066666666667 202.6666666666666 199.68 196.2666666666666 207.1466666666667 192.64C210.7733333333334 191.1466666666667 214.6133333333334 190.2933333333333 218.4533333333333 190.5066666666667C224 190.9333333333333 228.9066666666667 194.7733333333333 233.1733333333333 198.1866666666666C244.48 207.5733333333333 253.8666666666667 219.7333333333333 262.6133333333333 231.4666666666667C272.4266666666666 244.2666666666666 281.8133333333333 257.4933333333334 292.9066666666667 269.2266666666667C297.6 274.1333333333334 302.5066666666666 280.5333333333333 309.3333333333333 282.6666666666667C311.8933333333333 283.52 315.0933333333333 283.3066666666666 318.08 282.0266666666667C320 281.1733333333333 321.0666666666666 280.1066666666667 322.1333333333333 279.04C323.6266666666666 277.3333333333333 325.3333333333333 276.48 326.8266666666666 275.4133333333333C338.7733333333333 266.6666666666667 349.8666666666666 256 360.32 245.3333333333333C369.28 236.16 378.0266666666666 226.3466666666666 386.1333333333333 216.3199999999999C394.6666666666666 206.5066666666666 401.9199999999999 196.48 408.5333333333333 185.6C416.64 172.16 423.4666666666666 158.2933333333333 431.1466666666666 144.8533333333333C437.9733333333333 132.48 445.0133333333332 118.1866666666666 437.9733333333333 104.1066666666667C437.3333333333333 103.4666666666666 437.3333333333333 102.6133333333334 437.3333333333333 101.9733333333333C424.7466666666666 81.28 402.7733333333332 68.48 381.0133333333332 60.16C354.7733333333332 50.1333333333333 326.8266666666666 45.2266666666666 298.6666666666666 43.3066666666666C270.08 41.1733333333333 241.0666666666666 41.3866666666667 212.2666666666666 43.9466666666667C186.2399999999999 46.5066666666667 159.9999999999999 51.2 135.6799999999999 60.5866666666667C115.1999999999999 68.48 95.9999999999999 80 81.9199999999999 97.4933333333333C78.7199999999999 101.76 75.9466666666666 106.0266666666666 73.5999999999999 110.72C73.1733333333332 111.1466666666667 72.9599999999999 111.7866666666667 72.7466666666666 112.2133333333334C72.3199999999999 113.0666666666667 72.1066666666666 113.4933333333334 72.3199999999999 114.3466666666667M44.3733333333332 96C47.3599999999999 91.0933333333334 50.7733333333332 86.8266666666667 54.1866666666666 82.7733333333333C61.0133333333332 74.6666666666667 68.9066666666666 67.2 77.2266666666666 60.5866666666667C95.1466666666666 46.72 115.8399999999999 36.6933333333333 137.3866666666666 29.6533333333334C162.1333333333333 21.3333333333334 188.1599999999999 17.2800000000001 214.1866666666666 15.1466666666667C244.2666666666666 12.5866666666667 274.9866666666666 12.5866666666667 305.0666666666666 15.7866666666667C332.7999999999999 18.7733333333334 360.7466666666666 24.5333333333334 386.7733333333332 34.7733333333334C409.8133333333332 43.9466666666667 431.1466666666666 57.1733333333334 449.7066666666666 73.8133333333334C454.6133333333332 78.08 459.3066666666665 82.5600000000001 462.9333333333332 87.8933333333334C466.3466666666666 92.3733333333334 469.3333333333333 97.2800000000001 469.3333333333333 102.8266666666667C469.3333333333333 109.2266666666667 469.3333333333333 115.84 467.6266666666666 122.24C466.1333333333333 129.28 464.2133333333333 136.1066666666667 462.5066666666667 142.9333333333334L460.5866666666666 150.6133333333334C453.76 180.6933333333334 443.3066666666667 209.92 429.2266666666667 237.4400000000001C417.2800000000001 260.48 402.56 282.4533333333334 385.2800000000001 302.0800000000001C369.2800000000001 320 350.5066666666667 336.64 329.1733333333334 348.1600000000001C317.8666666666668 354.56 305.7066666666667 359.4666666666667 293.3333333333334 362.6666666666667C286.7200000000001 365.2266666666667 279.8933333333334 366.7200000000001 273.0666666666667 368.2133333333334C271.1466666666668 368.4266666666667 269.4400000000001 368.8533333333334 267.7333333333334 368.8533333333334H247.6800000000001C245.3333333333335 368.8533333333334 243.8400000000001 369.0666666666667 241.7066666666668 368.8533333333334C240.0000000000001 368.64 238.0800000000001 368.2133333333334 236.3733333333335 368C232.7466666666668 367.36 229.3333333333335 366.7200000000001 225.9200000000001 365.8666666666667C219.0933333333334 364.3733333333334 212.4800000000001 362.6666666666667 205.8666666666668 359.68C192.8533333333335 354.56 180.6933333333335 347.7333333333334 169.1733333333335 339.6266666666667C146.5600000000001 324.2666666666667 126.9333333333335 304.4266666666667 110.5066666666668 282.6666666666667C93.2266666666668 259.6266666666667 79.1466666666668 233.8133333333334 68.4800000000001 206.9333333333333C56.9600000000001 178.3466666666667 49.0666666666668 148.48 44.1600000000001 117.9733333333334C43.5200000000001 114.1333333333333 42.6666666666668 110.08 42.6666666666668 106.6666666666667V99.84C42.6666666666668 98.7733333333333 42.6666666666668 98.1333333333334 43.3066666666668 97.28C43.5200000000001 96.8533333333334 43.9466666666668 96 44.3733333333335 96z" /> + <glyph glyph-name="basket" + unicode="&#xF076;" + horiz-adv-x="512" d=" M117.3333333333333 0C100.6933333333333 0 86.1866666666667 9.6 79.1466666666667 23.4666666666667L23.4666666666667 225.2800000000001L21.3333333333333 234.6666666666667C21.3333333333333 246.4000000000001 30.9333333333333 256 42.6666666666667 256H140.3733333333333L238.5066666666667 396.1600000000001C242.3466666666667 401.7066666666667 248.7466666666667 405.3333333333334 256 405.3333333333334C263.2533333333334 405.3333333333334 269.8666666666667 401.7066666666667 273.7066666666667 395.9466666666667L371.6266666666667 256H469.3333333333333C481.0666666666667 256 490.6666666666666 246.4000000000001 490.6666666666666 234.6666666666667L489.8133333333333 228.48L432.8533333333333 23.4666666666667C425.8133333333334 9.6000000000001 411.3066666666666 0 394.6666666666667 0H117.3333333333333M256 346.88L192 256H320L256 346.88M256 170.6666666666667C232.5333333333334 170.6666666666667 213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334S298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="basket-fill" + unicode="&#xF077;" + horiz-adv-x="512" d=" M64 405.3333333333333H128V341.3333333333334H64V405.3333333333333M128 298.6666666666667H192V234.6666666666667H128V298.6666666666667M170.6666666666667 405.3333333333333H234.6666666666667V341.3333333333334H170.6666666666667V405.3333333333333M362.6666666666667 213.3333333333334L256 320H320V405.3333333333333H405.3333333333333V320H469.3333333333333L362.6666666666667 213.3333333333334M160 -21.3333333333333C143.36 -21.3333333333333 128.8533333333333 -11.7333333333333 121.8133333333333 2.1333333333334L66.1333333333333 161.28L64 170.6666666666667C64 182.4 73.6 192 85.3333333333333 192H426.6666666666667C438.4 192 448 182.4 448 170.6666666666667L447.1466666666667 164.48L390.1866666666666 2.1333333333334C383.1466666666667 -11.7333333333332 368.64 -21.3333333333333 352 -21.3333333333333H160M162.3466666666667 21.3333333333334H349.6533333333333L396.16 149.3333333333334H115.6266666666667L162.3466666666666 21.3333333333334z" /> + <glyph glyph-name="basket-unfill" + unicode="&#xF078;" + horiz-adv-x="512" d=" M64 234.6666666666667H128V298.6666666666667H64V234.6666666666667M106.6666666666667 341.3333333333334H170.6666666666667V405.3333333333333H106.6666666666667V341.3333333333334M170.6666666666667 234.6666666666667H234.6666666666667V298.6666666666667H170.6666666666667V234.6666666666667M362.6666666666667 426.6666666666667L256 320H320V234.6666666666667H405.3333333333333V320H469.3333333333333L362.6666666666667 426.6666666666667M160 -21.3333333333333C143.36 -21.3333333333333 128.8533333333333 -11.7333333333333 121.8133333333333 2.1333333333334L66.1333333333333 161.28L64 170.6666666666667C64 182.4 73.6 192 85.3333333333333 192H426.6666666666667C438.4 192 448 182.4 448 170.6666666666667L447.1466666666667 164.48L390.1866666666666 2.1333333333334C383.1466666666667 -11.7333333333332 368.64 -21.3333333333333 352 -21.3333333333333H160M162.3466666666667 21.3333333333334H349.6533333333333L396.16 149.3333333333334H115.6266666666667L162.3466666666666 21.3333333333334z" /> + <glyph glyph-name="battery" + unicode="&#xF079;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-10" + unicode="&#xF07A;" + horiz-adv-x="512" d=" M341.3333333333333 64H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-20" + unicode="&#xF07B;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-30" + unicode="&#xF07C;" + horiz-adv-x="512" d=" M341.3333333333333 128H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-40" + unicode="&#xF07D;" + horiz-adv-x="512" d=" M341.3333333333333 149.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-50" + unicode="&#xF07E;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-60" + unicode="&#xF07F;" + horiz-adv-x="512" d=" M341.3333333333333 192H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-70" + unicode="&#xF080;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-80" + unicode="&#xF081;" + horiz-adv-x="512" d=" M341.3333333333333 256H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-90" + unicode="&#xF082;" + horiz-adv-x="512" d=" M341.3333333333333 277.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-alert" + unicode="&#xF083;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-charging" + unicode="&#xF084;" + horiz-adv-x="512" d=" M334.2933333333333 362.6666666666667H298.6666666666667V405.3333333333333H213.3333333333333V362.6666666666667H177.7066666666667C162.1333333333333 362.6666666666667 149.3333333333333 349.8666666666667 149.3333333333333 334.2933333333334V7.2533333333333C149.3333333333333 -8.5333333333333 162.1333333333333 -21.3333333333333 177.7066666666667 -21.3333333333333H334.08C349.8666666666666 -21.3333333333333 362.6666666666667 -8.5333333333333 362.6666666666667 7.04V334.2933333333334C362.6666666666667 349.8666666666667 349.8666666666666 362.6666666666667 334.2933333333333 362.6666666666667M234.6666666666667 21.3333333333334V138.6666666666667H192L277.3333333333333 298.6666666666667V181.3333333333334H320" /> + <glyph glyph-name="battery-charging-100" + unicode="&#xF085;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-20" + unicode="&#xF086;" + horiz-adv-x="512" d=" M491.7333333333333 213.3333333333334H427.7333333333334V362.6666666666667L321.0666666666667 149.3333333333334H385.0666666666667V-21.3333333333333M257.0666666666667 85.3333333333334H86.4V320H257.0666666666667M271.36 362.6666666666667H235.7333333333334V405.3333333333333H107.7333333333334V362.6666666666667H72.1066666666667C56.5333333333333 362.6666666666667 43.7333333333333 349.8666666666667 43.7333333333333 334.2933333333334V7.04C43.7333333333333 -8.5333333333334 56.5333333333333 -21.3333333333333 72.1066666666667 -21.3333333333333H271.36C286.9333333333333 -21.3333333333333 299.7333333333333 -8.5333333333333 299.7333333333333 7.04V334.2933333333334C299.7333333333333 349.8666666666667 286.9333333333333 362.6666666666667 271.36 362.6666666666667z" /> + <glyph glyph-name="battery-charging-30" + unicode="&#xF087;" + horiz-adv-x="512" d=" M256 128H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333L490.6666666666666 213.3333333333334z" /> + <glyph glyph-name="battery-charging-40" + unicode="&#xF088;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 170.6666666666667H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-60" + unicode="&#xF089;" + horiz-adv-x="512" d=" M256 213.3333333333334H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333L490.6666666666666 213.3333333333334z" /> + <glyph glyph-name="battery-charging-80" + unicode="&#xF08A;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 256H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-charging-90" + unicode="&#xF08B;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H426.6666666666667V362.6666666666667L320 149.3333333333334H384V-21.3333333333333M256 277.3333333333334H85.3333333333333V320H256M270.2933333333333 362.6666666666667H234.6666666666667V405.3333333333333H106.6666666666667V362.6666666666667H71.04C55.4666666666667 362.6666666666667 42.6666666666667 349.8666666666667 42.6666666666667 334.2933333333334V7.04C42.6666666666667 -8.5333333333333 55.4666666666667 -21.3333333333333 71.04 -21.3333333333333H270.2933333333333C285.8666666666667 -21.3333333333333 298.6666666666667 -8.5333333333333 298.6666666666667 7.04V334.2933333333334C298.6666666666667 349.8666666666667 285.8666666666667 362.6666666666667 270.2933333333333 362.6666666666667z" /> + <glyph glyph-name="battery-minus" + unicode="&#xF08C;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667C371.2 362.6666666666667 384 349.8666666666667 384 334.2933333333334V7.04C384 -8.5333333333334 371.2 -21.3333333333333 355.6266666666667 -21.3333333333333H156.3733333333333C140.8 -21.3333333333333 128 -8.5333333333333 128 7.04V334.2933333333334C128 349.8666666666667 140.8 362.6666666666667 156.3733333333333 362.6666666666667H192V405.3333333333333H320V362.6666666666667H355.6266666666667M170.6666666666667 192V149.3333333333334H341.3333333333333V192" /> + <glyph glyph-name="battery-negative" + unicode="&#xF08D;" + horiz-adv-x="512" d=" M248.96 362.6666666666667C264.5333333333333 362.6666666666667 277.3333333333333 349.8666666666667 277.3333333333333 334.2933333333334V7.04C277.3333333333333 -8.5333333333334 264.5333333333333 -21.3333333333333 248.96 -21.3333333333333H49.7066666666667C34.1333333333333 -21.3333333333333 21.3333333333333 -8.5333333333333 21.3333333333333 7.04V334.2933333333334C21.3333333333333 349.8666666666667 34.1333333333333 362.6666666666667 49.7066666666667 362.6666666666667H85.3333333333333V405.3333333333333H213.3333333333333V362.6666666666667H248.96M320 192H490.6666666666666V149.3333333333334H320V192M64 170.6666666666667H234.6666666666667V320H64V170.6666666666667z" /> + <glyph glyph-name="battery-outline" + unicode="&#xF08E;" + horiz-adv-x="512" d=" M341.3333333333333 21.3333333333334H170.6666666666667V320H341.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.04C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.04V334.2933333333334C384 349.8666666666667 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="battery-plus" + unicode="&#xF08F;" + horiz-adv-x="512" d=" M355.6266666666667 362.6666666666667C371.2 362.6666666666667 384 349.8666666666667 384 334.2933333333334V7.04C384 -8.5333333333334 371.2 -21.3333333333333 355.6266666666667 -21.3333333333333H156.3733333333333C140.8 -21.3333333333333 128 -8.5333333333333 128 7.04V334.2933333333334C128 349.8666666666667 140.8 362.6666666666667 156.3733333333333 362.6666666666667H192V405.3333333333333H320V362.6666666666667H355.6266666666667M341.3333333333333 149.3333333333334V192H277.3333333333333V256H234.6666666666667V192H170.6666666666667V149.3333333333334H234.6666666666667V85.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333z" /> + <glyph glyph-name="battery-positive" + unicode="&#xF090;" + horiz-adv-x="512" d=" M248.96 362.6666666666667C264.5333333333333 362.6666666666667 277.3333333333333 349.8666666666667 277.3333333333333 334.2933333333334V7.04C277.3333333333333 -8.5333333333334 264.5333333333333 -21.3333333333333 248.96 -21.3333333333333H49.7066666666667C34.1333333333333 -21.3333333333333 21.3333333333333 -8.5333333333333 21.3333333333333 7.04V334.2933333333334C21.3333333333333 349.8666666666667 34.1333333333333 362.6666666666667 49.7066666666667 362.6666666666667H85.3333333333333V405.3333333333333H213.3333333333333V362.6666666666667H248.96M490.6666666666666 149.3333333333334H426.6666666666667V85.3333333333334H384V149.3333333333334H320V192H384V256H426.6666666666667V192H490.6666666666666V149.3333333333334M64 170.6666666666667H234.6666666666667V320H64V170.6666666666667z" /> + <glyph glyph-name="battery-unknown" + unicode="&#xF091;" + horiz-adv-x="512" d=" M321.4933333333334 186.6666666666667L302.2933333333333 167.04C290.7733333333333 155.52 282.6666666666667 145.4933333333334 279.2533333333334 128H235.7333333333334C238.08 147.2000000000001 246.6133333333334 164.6933333333334 259.6266666666667 177.7066666666667L286.0800000000001 204.5866666666667C293.9733333333334 212.2666666666667 298.6666666666667 222.9333333333333 298.6666666666667 234.6666666666667C298.6666666666667 258.3466666666667 279.4666666666667 277.3333333333334 256 277.3333333333334S213.3333333333334 258.1333333333334 213.3333333333334 234.6666666666667H170.6666666666667C170.6666666666667 281.8133333333334 208.8533333333333 320 256 320S341.3333333333333 281.8133333333334 341.3333333333333 234.6666666666667C341.3333333333333 215.8933333333333 333.6533333333333 198.8266666666667 321.4933333333334 186.6666666666667M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M355.6266666666667 362.6666666666667H320V405.3333333333333H192V362.6666666666667H156.3733333333333C140.8 362.6666666666667 128 349.8666666666667 128 334.2933333333334V7.2533333333333C128 -8.5333333333333 140.8 -21.3333333333333 156.3733333333333 -21.3333333333333H355.6266666666667C371.2000000000001 -21.3333333333333 384 -8.5333333333333 384 7.2533333333333V334.2933333333334C384 350.0800000000001 371.2 362.6666666666667 355.6266666666667 362.6666666666667z" /> + <glyph glyph-name="beach" + unicode="&#xF092;" + horiz-adv-x="512" d=" M320 52.48C365.44 59.52 416 64 469.3333333333333 64V-21.3333333333333H106.6666666666667C106.6666666666667 -7.4666666666667 174.9333333333333 24.3200000000001 277.3333333333333 44.8000000000001V183.4666666666667C259.4133333333333 178.1333333333334 244.2666666666667 166.1866666666667 234.6666666666667 150.4C221.6533333333333 172.16 197.76 186.6666666666667 170.6666666666667 186.6666666666667S119.68 172.16 106.6666666666667 150.4C107.3066666666667 226.7733333333334 181.3333333333333 289.4933333333334 277.3333333333333 297.8133333333334V298.6666666666667C277.3333333333333 310.4 286.9333333333333 320 298.6666666666667 320S320 310.4 320 298.6666666666667V297.8133333333334C416 289.4933333333334 489.8133333333333 226.7733333333333 490.6666666666666 150.4C477.6533333333333 172.16 453.76 186.6666666666667 426.6666666666667 186.6666666666667S375.68 172.16 362.6666666666667 150.4C353.0666666666667 166.1866666666667 337.92 178.1333333333334 320 183.6800000000001V52.48M149.3333333333333 405.3333333333333C149.3333333333333 346.4533333333334 101.5466666666667 298.6666666666667 42.6666666666667 298.6666666666667V405.3333333333333H149.3333333333333z" /> + <glyph glyph-name="beats" + unicode="&#xF097;" + horiz-adv-x="512" d=" M149.3333333333333 192C149.3333333333333 133.12 197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667C231.8933333333334 298.6666666666667 209.92 290.7733333333333 192 277.3333333333334V395.52C212.2666666666667 401.92 233.6 405.3333333333333 256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192C42.6666666666667 270.9333333333334 85.3333333333333 339.8400000000001 149.3333333333333 376.7466666666667V192M309.3333333333333 192C309.3333333333333 184.1066666666667 305.0666666666667 177.4933333333334 298.6666666666667 173.6533333333334L258.3466666666667 143.1466666666667C254.72 140.3733333333333 250.24 138.6666666666667 245.3333333333333 138.6666666666667C233.6 138.6666666666667 224 148.2666666666667 224 160V224C224 235.7333333333334 233.6 245.3333333333334 245.3333333333333 245.3333333333334C250.24 245.3333333333334 254.72 243.6266666666667 258.3466666666667 240.8533333333333L298.6666666666667 210.3466666666667C305.0666666666667 206.5066666666667 309.3333333333333 199.8933333333333 309.3333333333333 192z" /> + <glyph glyph-name="beer" + unicode="&#xF098;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H405.3333333333333L362.6666666666667 -21.3333333333333H128L85.3333333333333 405.3333333333333M132.2666666666667 362.6666666666667L166.4 21.3333333333334H187.7333333333334L158.5066666666667 312.7466666666667C181.3333333333333 320 210.9866666666667 322.3466666666667 234.6666666666667 298.6666666666667C267.9466666666667 265.3866666666667 327.04 283.9466666666667 352 293.76L358.4 362.6666666666667H132.2666666666667z" /> + <glyph glyph-name="behance" + unicode="&#xF099;" + horiz-adv-x="512" d=" M417.7066666666666 186.24C416.8533333333333 199.4666666666667 412.3733333333333 209.4933333333334 404.4799999999999 216.32C396.5866666666666 223.1466666666667 386.7733333333333 226.5600000000001 375.04 226.5600000000001C362.6666666666667 226.5600000000001 352 222.9333333333334 345.3866666666666 215.68C338.3466666666666 208.4266666666667 333.8666666666666 198.6133333333334 332.16 186.24M467.6266666666666 191.1466666666667C469.3333333333333 182.4 469.3333333333333 169.8133333333334 469.3333333333333 153.3866666666667H330.6666666666666C331.7333333333333 134.1866666666667 338.1333333333332 120.96 350.7199999999999 113.2800000000001C358.1866666666666 108.3733333333334 367.36 106.0266666666668 378.2399999999999 106.0266666666668C389.5466666666666 106.0266666666668 398.7199999999999 109.0133333333334 405.3333333333333 114.7733333333334C409.5999999999999 117.9733333333334 413.0133333333332 122.2400000000001 415.9999999999999 128.0000000000001H466.7733333333332C465.4933333333332 116.48 459.3066666666665 105.1733333333334 447.9999999999999 93.4400000000001C431.3599999999999 74.6666666666667 407.4666666666666 65.7066666666667 376.7466666666666 65.7066666666667C351.3599999999999 65.7066666666667 329.1733333333333 73.6000000000001 309.3333333333333 89.1733333333334C290.5599999999999 104.7466666666668 280.7466666666666 130.1333333333335 280.7466666666666 165.3333333333334C280.7466666666666 198.4000000000001 289.4933333333333 224.0000000000001 306.9866666666666 241.0666666666668C324.4799999999999 258.7733333333335 347.0933333333333 267.5200000000001 375.04 267.5200000000001C391.4666666666666 267.5200000000001 406.3999999999999 264.5333333333334 419.6266666666666 258.5600000000001C432.8533333333333 252.5866666666668 443.9466666666666 243.4133333333334 452.4799999999999 230.4000000000001C460.3733333333333 219.0933333333335 465.28 206.0800000000001 467.6266666666666 191.1466666666668M204.3733333333333 147.84C204.3733333333333 161.7066666666667 198.6133333333334 171.3066666666667 187.52 176.4266666666667C181.3333333333333 179.2000000000001 172.3733333333333 180.6933333333333 160.8533333333333 181.3333333333334H103.8933333333333V110.08H160C171.52 110.08 180.48 111.5733333333334 186.88 114.7733333333334C198.6133333333334 120.5333333333334 204.3733333333333 131.6266666666667 204.3733333333333 147.84M103.8933333333333 224.8533333333334H160C171.52 224.8533333333334 181.3333333333333 226.9866666666667 188.16 231.4666666666667C195.4133333333333 235.7333333333334 198.8266666666667 243.6266666666667 198.8266666666667 254.7200000000001C198.8266666666667 266.6666666666668 194.1333333333333 275.2000000000001 184.7466666666667 279.2533333333334C176.4266666666667 282.0266666666667 165.9733333333333 283.3066666666668 153.3866666666667 283.3066666666668H103.8933333333333M250.0266666666667 183.0400000000001C256.8533333333333 172.3733333333334 260.2666666666667 159.3600000000001 260.2666666666667 144.2133333333334C260.2666666666667 128.0000000000001 256 114.3466666666667 248.5333333333333 101.7600000000001C243.4133333333333 93.4400000000001 237.2266666666667 86.6133333333334 229.76 80.8533333333334C221.2266666666666 74.6666666666667 211.2 69.9733333333334 199.68 67.6266666666667C188.1599999999999 65.2800000000001 175.7866666666666 64 162.3466666666666 64H42.6666666666667V329.6H170.6666666666667C203.3066666666667 328.9600000000001 226.1333333333334 320 239.5733333333333 301.2266666666667C247.68 289.92 251.7333333333334 276.48 251.7333333333334 260.6933333333334C251.7333333333334 244.48 247.68 231.4666666666667 239.5733333333333 221.6533333333334C234.6666666666667 216.1066666666667 228.2666666666667 210.9866666666667 219.3066666666667 206.5066666666667C232.7466666666667 201.6 242.9866666666667 193.7066666666667 250.0266666666667 183.04M427.9466666666667 291.8400000000001H321.0666666666667V318.5066666666667H427.9466666666667V291.8400000000001z" /> + <glyph glyph-name="bell" + unicode="&#xF09A;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334H298.6666666666667M256 405.3333333333333C267.7333333333334 405.3333333333333 277.3333333333333 395.7333333333334 277.3333333333333 384V360.9600000000001C337.92 350.7200000000001 384 298.0266666666667 384 234.6666666666667V106.6666666666667L448 42.6666666666667H64L128 106.6666666666667V234.6666666666667C128 298.0266666666667 174.08 350.7200000000001 234.6666666666667 360.9600000000001V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="bell-off" + unicode="&#xF09B;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334H298.6666666666667M421.12 -12.16L366.2933333333334 42.6666666666667H64L128 106.6666666666667V234.6666666666667C128 248.5333333333334 130.1333333333333 261.9733333333334 134.4 274.5600000000001L74.0266666666667 334.9333333333334L104.32 365.0133333333333L155.52 313.8133333333334L451.1999999999999 18.1333333333334L421.12 -12.16M234.6666666666667 360.9600000000001V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333S277.3333333333333 395.7333333333334 277.3333333333333 384V360.9600000000001C337.92 350.7200000000001 384 298.0266666666667 384 234.6666666666667V145.7066666666667L187.0933333333333 342.6133333333334C201.3866666666667 352 217.3866666666667 357.9733333333334 234.6666666666667 360.9600000000001z" /> + <glyph glyph-name="bell-outline" + unicode="&#xF09C;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H149.3333333333333V224C149.3333333333333 277.3333333333334 192 320 245.3333333333333 320S341.3333333333333 277.3333333333334 341.3333333333333 224M384 106.6666666666667V224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64M245.3333333333333 -21.3333333333333C268.8 -21.3333333333333 288 -2.1333333333333 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333z" /> + <glyph glyph-name="bell-plus" + unicode="&#xF09D;" + horiz-adv-x="512" d=" M213.3333333333333 0C213.3333333333333 -23.6799999999999 232.5333333333334 -42.6666666666666 256 -42.6666666666666S298.6666666666667 -23.4666666666667 298.6666666666667 0M402.7733333333333 89.1733333333334V213.3333333333334C402.7733333333333 282.6666666666667 354.7733333333333 340.6933333333334 289.92 356.0533333333334V371.4133333333334C289.92 390.1866666666667 274.7733333333333 405.3333333333333 256 405.3333333333333C237.2266666666667 405.3333333333333 222.08 390.1866666666667 222.08 371.4133333333334V356.0533333333334C157.2266666666667 340.6933333333334 109.2266666666667 282.6666666666667 109.2266666666667 213.3333333333334V89.1733333333334L64 43.9466666666667V21.3333333333334H448V43.9466666666667M341.3333333333333 170.6666666666667H277.3333333333333V106.6666666666667H234.6666666666667V170.6666666666667H170.6666666666667V213.3333333333334H234.6666666666667V277.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333" /> + <glyph glyph-name="bell-ring" + unicode="&#xF09E;" + horiz-adv-x="512" d=" M245.3333333333333 -21.3333333333333C248.32 -21.3333333333333 251.0933333333333 -21.3333333333333 253.8666666666667 -20.48C267.7333333333334 -17.4933333333333 279.2533333333334 -8.1066666666667 284.5866666666667 4.6933333333333C286.72 9.8133333333333 288 15.5733333333334 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333M384 224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64L384 106.6666666666667M426.0266666666667 234.6666666666667H468.6933333333333C465.4933333333333 303.1466666666667 431.7866666666667 363.3066666666667 380.8 402.1333333333334L350.2933333333333 371.6266666666667C393.8133333333334 341.3333333333334 422.8266666666667 291.2000000000001 426.0266666666667 234.6666666666667M140.3733333333333 371.6266666666667L109.8666666666667 402.1333333333334C58.88 363.3066666666667 25.1733333333333 303.1466666666667 21.3333333333333 234.6666666666667H64C67.84 291.2000000000001 96.8533333333333 341.3333333333334 140.3733333333333 371.6266666666667z" /> + <glyph glyph-name="bell-ring-outline" + unicode="&#xF09F;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334V224C341.3333333333333 277.3333333333334 298.6666666666667 320 245.3333333333333 320S149.3333333333333 277.3333333333334 149.3333333333333 224V85.3333333333334H341.3333333333333M384 106.6666666666667L426.6666666666667 64V42.6666666666667H64V64L106.6666666666667 106.6666666666667V224C106.6666666666667 289.4933333333334 152.1066666666667 344.32 213.3333333333333 358.8266666666667V373.3333333333334C213.3333333333333 391.04 227.6266666666667 405.3333333333333 245.3333333333333 405.3333333333333S277.3333333333333 391.04 277.3333333333333 373.3333333333334V358.8266666666667C338.3466666666667 344.3200000000001 384 289.4933333333334 384 224V106.6666666666667M245.3333333333333 -21.3333333333333C221.8666666666667 -21.3333333333333 202.6666666666667 -2.1333333333333 202.6666666666667 21.3333333333334H288C288 -2.1333333333333 268.8 -21.3333333333333 245.3333333333333 -21.3333333333333M426.0266666666667 234.6666666666667C422.8266666666667 291.2000000000001 393.8133333333333 341.3333333333334 350.2933333333333 371.6266666666667L380.8 402.1333333333334C431.7866666666667 363.3066666666667 465.4933333333332 303.1466666666667 468.6933333333333 234.6666666666667H426.0266666666667M140.3733333333333 371.6266666666667C96.8533333333333 341.3333333333334 67.84 291.2000000000001 64 234.6666666666667H21.3333333333333C25.1733333333333 303.1466666666667 58.88 363.3066666666667 109.8666666666667 402.1333333333334L140.3733333333333 371.6266666666667z" /> + <glyph glyph-name="bell-sleep" + unicode="&#xF0A0;" + horiz-adv-x="512" d=" M298.6666666666667 238.9333333333334L238.9333333333333 166.4H298.6666666666667V128H192V166.4L251.7333333333334 238.9333333333334H192V277.3333333333334H298.6666666666667M384 106.6666666666667V224C384 289.4933333333334 338.3466666666667 344.32 277.3333333333333 358.8266666666667V373.3333333333334C277.3333333333333 391.04 263.04 405.3333333333333 245.3333333333333 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334V358.8266666666667C152.1066666666667 344.3200000000001 106.6666666666667 289.4933333333334 106.6666666666667 224V106.6666666666667L64 64V42.6666666666667H426.6666666666667V64M245.3333333333333 -21.3333333333333C268.8 -21.3333333333333 288 -2.1333333333333 288 21.3333333333334H202.6666666666667C202.6666666666667 -2.1333333333333 221.8666666666667 -21.3333333333333 245.3333333333333 -21.3333333333333z" /> + <glyph glyph-name="beta" + unicode="&#xF0A1;" + horiz-adv-x="512" d=" M196.9066666666667 72.7466666666667V-45.2266666666667H146.7733333333333V304.64C146.7733333333333 335.5733333333334 155.9466666666667 359.8933333333333 174.08 378.0266666666667C192 396.16 216.96 405.3333333333333 247.68 405.3333333333333C277.3333333333333 405.3333333333333 300.16 398.08 317.2266666666667 384C334.08 369.4933333333334 342.4 349.44 342.4 324.0533333333334C342.4 306.56 336.8533333333334 290.1333333333334 325.76 274.9866666666667C314.6666666666667 259.8400000000001 300.3733333333334 249.3866666666667 282.6666666666667 243.6266666666667V242.7733333333334C309.3333333333334 238.5066666666667 330.0266666666667 228.9066666666667 344.1066666666667 213.3333333333334C358.1866666666667 198.1866666666667 365.2266666666667 178.7733333333333 365.2266666666667 154.88C365.2266666666667 126.72 355.4133333333333 103.68 336 85.9733333333334C316.3733333333334 68.2666666666668 290.7733333333333 59.5200000000001 258.7733333333333 59.5200000000001C236.16 59.5200000000001 215.4666666666667 64.0000000000001 196.9066666666667 72.7466666666668M228.6933333333333 218.6666666666668V259.6266666666667C247.2533333333333 261.9733333333334 262.4 268.8 274.56 280.32C286.5066666666667 292.0533333333334 292.48 305.0666666666667 292.48 320C292.48 349.44 277.3333333333333 364.3733333333334 247.4666666666667 364.3733333333334C231.2533333333334 364.3733333333334 218.6666666666667 359.2533333333334 209.92 348.8C201.1733333333333 338.3466666666667 196.9066666666667 323.8400000000001 196.9066666666667 304.8533333333334V117.3333333333334C216.32 106.0266666666666 235.3066666666667 100.48 253.6533333333334 100.48C271.5733333333333 100.48 285.6533333333333 105.1733333333334 295.68 114.3466666666667C305.7066666666667 123.7333333333334 310.6133333333334 136.96 310.6133333333334 153.8133333333334C310.6133333333334 192 283.3066666666667 213.3333333333334 228.6933333333334 218.6666666666667z" /> + <glyph glyph-name="bible" + unicode="&#xF0A2;" + horiz-adv-x="512" d=" M123.9466666666667 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -1.0666666666667 406.4 -21.3333333333333 384 -21.3333333333333H128C105.6 -21.3333333333333 85.3333333333333 -1.0666666666667 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 384 103.04 403.4133333333334 123.9466666666667 405.3333333333333M277.3333333333333 234.6666666666667V170.6666666666667H213.3333333333333V128H277.3333333333333V21.3333333333334H320V128H384V170.6666666666667H320V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="bike" + unicode="&#xF0A3;" + horiz-adv-x="512" d=" M106.6666666666667 10.6666666666667C65.4933333333333 10.6666666666667 32 44.16 32 85.3333333333334S65.4933333333333 160 106.6666666666667 160S181.3333333333333 126.5066666666667 181.3333333333333 85.3333333333334S147.84 10.6666666666667 106.6666666666667 10.6666666666667M106.6666666666667 192C47.7866666666667 192 0 144.2133333333334 0 85.3333333333334S47.7866666666667 -21.3333333333333 106.6666666666667 -21.3333333333333S213.3333333333333 26.4533333333334 213.3333333333333 85.3333333333334S165.5466666666667 192 106.6666666666667 192M315.7333333333334 234.6666666666667H405.3333333333333V273.0666666666667H337.0666666666667L295.68 342.8266666666667C289.4933333333334 353.4933333333334 277.3333333333334 360.5333333333334 264.5333333333334 360.5333333333334C254.5066666666667 360.5333333333334 245.3333333333334 356.48 238.9333333333334 349.8666666666667L160 271.1466666666667C153.3866666666667 264.5333333333334 149.3333333333333 256 149.3333333333333 245.3333333333334C149.3333333333333 231.8933333333333 156.3733333333333 220.5866666666667 167.4666666666667 213.9733333333333L238.9333333333333 170.6666666666667V64H277.3333333333333V202.6666666666667L229.3333333333333 237.8666666666667L278.8266666666667 288M405.3333333333333 10.6666666666667C364.16 10.6666666666667 330.6666666666667 44.16 330.6666666666667 85.3333333333334S364.16 160 405.3333333333333 160S480 126.5066666666667 480 85.3333333333334S446.5066666666667 10.6666666666667 405.3333333333333 10.6666666666667M405.3333333333333 192C346.4533333333334 192 298.6666666666667 144.2133333333334 298.6666666666667 85.3333333333334S346.4533333333334 -21.3333333333333 405.3333333333333 -21.3333333333333S512 26.4533333333334 512 85.3333333333334S464.2133333333333 192 405.3333333333333 192M341.3333333333333 345.6C362.6666666666667 345.6 379.7333333333334 362.6666666666667 379.7333333333334 384S362.6666666666667 422.4 341.3333333333333 422.4S302.9333333333333 405.3333333333333 302.9333333333333 384S320 345.6 341.3333333333333 345.6z" /> + <glyph glyph-name="bing" + unicode="&#xF0A4;" + horiz-adv-x="512" d=" M106.6666666666667 384V42.6666666666667L186.0266666666667 0L384 110.5066666666667V197.76L208.4266666666667 257.0666666666667L242.7733333333333 174.0800000000001L297.3866666666667 149.3333333333334L185.6 87.04V356.9066666666667L106.6666666666667 384" /> + <glyph glyph-name="binoculars" + unicode="&#xF0A5;" + horiz-adv-x="512" d=" M234.6666666666667 320H277.3333333333333V170.6666666666667H234.6666666666667V320M192 21.3333333333334C192 9.6 182.4 0 170.6666666666667 0H106.6666666666667C94.9333333333333 0 85.3333333333333 9.6 85.3333333333333 21.3333333333334V128L128 320H213.3333333333333V170.6666666666667C213.3333333333333 158.9333333333333 203.7333333333334 149.3333333333334 192 149.3333333333334V21.3333333333334M213.3333333333333 341.3333333333334H149.3333333333333V384H213.3333333333333V341.3333333333334M320 21.3333333333334V149.3333333333334C308.2666666666667 149.3333333333334 298.6666666666667 158.9333333333333 298.6666666666667 170.6666666666667V320H384L426.6666666666667 128V21.3333333333334C426.6666666666667 9.6 417.0666666666667 0 405.3333333333333 0H341.3333333333333C329.6 0 320 9.6 320 21.3333333333334M298.6666666666667 341.3333333333334V384H362.6666666666667V341.3333333333334H298.6666666666667z" /> + <glyph glyph-name="bio" + unicode="&#xF0A6;" + horiz-adv-x="512" d=" M362.6666666666667 192H426.6666666666667C450.1333333333334 192 469.3333333333333 172.8 469.3333333333333 149.3333333333334V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H362.6666666666667C339.2 42.6666666666667 320 61.8666666666667 320 85.3333333333334V149.3333333333334C320 172.8 339.2 192 362.6666666666667 192M362.6666666666667 149.3333333333334V85.3333333333334H426.6666666666667V149.3333333333334H362.6666666666667M42.6666666666667 298.6666666666667H149.3333333333333C172.8 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.8666666666667 172.8 170.6666666666667 149.3333333333333 170.6666666666667C172.8 170.6666666666667 192 151.4666666666667 192 128V85.3333333333334C192 61.8666666666667 172.8 42.6666666666667 149.3333333333333 42.6666666666667H42.6666666666667V298.6666666666667M85.3333333333333 256V192H149.3333333333333V256H85.3333333333333M85.3333333333333 85.3333333333334H149.3333333333333V149.3333333333334H85.3333333333333V85.3333333333334M234.6666666666667 170.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667V256z" /> + <glyph glyph-name="biohazard" + unicode="&#xF0A7;" + horiz-adv-x="512" d=" M490.6666666666666 105.3866666666667C490.6666666666666 100.48 490.6666666666666 96 489.8133333333333 91.7333333333334C485.9733333333334 146.3466666666667 440.32 189.6533333333334 384 189.6533333333334C376.1066666666667 189.6533333333334 368.4266666666666 188.5866666666667 360.9600000000001 187.0933333333334C361.8133333333334 181.3333333333334 362.6666666666667 176.4266666666667 362.6666666666667 170.6666666666668C362.6666666666667 120.5333333333334 326.6133333333334 78.5066666666667 278.8266666666667 68.0533333333334C286.2933333333333 20.2666666666668 326.6133333333334 -16.8533333333333 376.5333333333333 -20.48C371.84 -21.3333333333333 367.36 -21.3333333333333 362.6666666666667 -21.3333333333333C318.2933333333333 -21.3333333333333 278.8266666666667 1.28 256 35.4133333333334C233.1733333333333 1.28 193.92 -21.3333333333333 149.3333333333333 -21.3333333333333C144.64 -21.3333333333333 140.16 -21.3333333333333 135.4666666666667 -20.48C185.3866666666667 -16.8533333333333 225.4933333333334 20.0533333333333 233.1733333333333 68.0533333333333C185.1733333333333 78.5066666666667 149.3333333333333 120.5333333333334 149.3333333333333 170.6666666666667C149.3333333333333 176.4266666666667 150.1866666666667 181.3333333333334 150.8266666666667 187.0933333333334C143.5733333333333 188.5866666666667 135.8933333333333 189.6533333333333 128 189.6533333333333C71.68 189.6533333333333 26.0266666666667 146.3466666666667 21.9733333333333 91.7333333333333C21.3333333333333 95.9999999999999 21.3333333333333 100.48 21.3333333333333 105.3866666666667C21.3333333333333 173.8666666666667 76.5866666666667 229.5466666666666 145.28 231.68C134.4 250.24 128 272 128 295.04C128 342.6133333333334 154.24 384 193.28 405.3333333333333C166.6133333333333 386.1333333333334 149.3333333333333 355.4133333333334 149.3333333333333 320C149.3333333333333 291.2000000000001 161.28 264.7466666666667 180.6933333333333 245.3333333333334C200.1066666666667 264.7466666666667 226.56 276.48 256 276.48C285.2266666666667 276.48 311.8933333333333 264.7466666666667 330.6666666666667 245.3333333333334C350.5066666666667 264.7466666666667 362.6666666666667 291.2000000000001 362.6666666666667 320C362.6666666666667 355.4133333333334 345.1733333333333 386.1333333333334 318.72 405.3333333333333C357.76 384 384 342.6133333333334 384 295.04C384 272 377.6 250.24 366.7200000000001 231.68C435.6266666666667 229.5466666666667 490.6666666666666 173.8666666666667 490.6666666666666 105.3866666666667M197.76 232.32C214.4 221.44 234.6666666666667 215.04 256 215.04S297.6 221.44 314.24 232.32C298.6666666666667 246.4000000000001 278.6133333333334 255.36 256 255.36S213.3333333333333 246.4000000000001 197.76 232.32M256 139.3066666666667C273.4933333333334 139.3066666666667 288 153.6 288 170.6666666666667C288 188.3733333333333 273.7066666666667 202.6666666666667 256 202.6666666666667S224 188.3733333333333 224 170.6666666666667C224 153.6 238.2933333333333 139.3066666666667 256 139.3066666666667M234.0266666666667 89.8133333333334C231.8933333333334 130.1333333333334 207.1466666666667 164.48 171.7333333333334 180.2666666666667C171.3066666666667 177.0666666666667 170.6666666666667 174.0800000000001 170.6666666666667 170.6666666666668C170.6666666666667 131.84 197.76 99.4133333333334 234.0266666666667 89.8133333333334M340.48 180.2666666666667C304.8533333333334 164.48 279.8933333333333 130.1333333333334 277.3333333333333 89.8133333333334C314.24 99.4133333333334 341.3333333333333 131.84 341.3333333333333 170.6666666666667C341.3333333333333 174.0800000000001 340.6933333333334 177.0666666666667 340.48 180.2666666666667z" /> + <glyph glyph-name="bitbucket" + unicode="&#xF0A8;" + horiz-adv-x="512" d=" M256 325.12C321.28 324.9066666666667 374.4 336.2133333333334 374.4 350.0800000000001C374.4 363.9466666666667 321.4933333333334 375.2533333333334 256 375.4666666666667C190.72 375.4666666666667 137.6 364.3733333333334 137.6 350.5066666666667C137.6 336.4266666666667 190.5066666666667 325.12 256 325.12M256 140.8C288 140.8 314.6666666666667 167.2533333333333 314.6666666666667 199.68C314.6666666666667 232.1066666666667 288.4266666666666 258.3466666666667 256 258.3466666666667C224 258.3466666666667 197.3333333333333 232.1066666666667 197.3333333333333 199.68S224 140.8 256 140.8M256 405.3333333333333C357.76 405.3333333333333 440.7466666666667 378.0266666666667 440.7466666666667 344.1066666666667C440.7466666666667 335.1466666666667 418.56 206.72 409.8133333333334 155.9466666666667C405.9733333333334 133.12 346.88 99.6266666666667 256 99.6266666666667V100.0533333333333V99.6266666666667C165.12 99.6266666666667 106.0266666666667 133.12 102.1866666666667 155.9466666666667C93.44 206.72 71.2533333333333 335.1466666666667 71.2533333333333 344.1066666666667C71.2533333333333 378.0266666666667 154.24 405.3333333333333 256 405.3333333333333M388.9066666666667 104.96C392.1066666666667 104.96 395.3066666666667 102.6133333333334 395.3066666666667 97.7066666666667V96.0000000000001L382.08 27.5200000000001C375.8933333333333 0 321.4933333333334 -21.3333333333333 256 -21.3333333333333C190.5066666666667 -21.3333333333333 136.1066666666667 0 129.92 27.52L116.6933333333333 96V97.7066666666667C116.6933333333333 102.6133333333334 119.8933333333333 104.96 123.0933333333333 104.96C126.08 104.96 128 103.04 128 103.04S173.6533333333333 66.9866666666666 256 66.9866666666666S384 103.04 384 103.04S385.92 104.96 388.9066666666667 104.96M285.44 199.68C285.44 183.4666666666667 272.2133333333334 170.6666666666667 256 170.6666666666667C239.7866666666667 170.6666666666667 226.56 183.4666666666667 226.56 199.68C226.56 215.8933333333333 239.7866666666667 229.12 256 229.12C272.2133333333333 229.12 285.44 215.8933333333333 285.44 199.68z" /> + <glyph glyph-name="black-mesa" + unicode="&#xF0A9;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 141.0133333333333 107.7333333333333 95.36 143.1466666666667 64H192V192H362.6666666666667L408.5333333333333 115.4133333333334C420.0533333333333 138.6666666666667 426.6666666666667 164.48 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="blackberry" + unicode="&#xF0AA;" + horiz-adv-x="512" d=" M116.2666666666667 228.6933333333334C136.5333333333333 228.6933333333334 160 212.2666666666667 160 192S136.5333333333333 155.3066666666667 116.2666666666667 155.3066666666667H42.6666666666667L57.3866666666667 228.6933333333334H116.2666666666667M130.9866666666666 346.4533333333333C151.2533333333333 346.4533333333333 175.1466666666667 330.0266666666667 175.1466666666667 309.3333333333333C175.1466666666667 289.4933333333334 151.2533333333333 272.8533333333334 130.9866666666666 272.8533333333334H57.3866666666667L72.1066666666667 346.4533333333333H130.9866666666667M277.9733333333333 346.4533333333333C298.6666666666667 346.4533333333333 322.1333333333334 330.0266666666667 322.1333333333334 309.3333333333333C322.1333333333334 289.4933333333334 298.6666666666667 272.8533333333334 277.9733333333333 272.8533333333334H200.7466666666667L215.4666666666667 346.4533333333333H277.9733333333333M263.2533333333334 228.6933333333334C283.7333333333334 228.6933333333334 307.4133333333333 212.2666666666667 307.4133333333333 192S283.7333333333334 155.3066666666666 263.2533333333334 155.3066666666666H186.0266666666667L200.7466666666667 228.6933333333333H263.2533333333334M234.0266666666667 111.1466666666667C254.2933333333333 111.1466666666667 277.9733333333333 94.5066666666666 277.9733333333333 74.6666666666666C277.9733333333333 53.9733333333333 254.2933333333333 37.5466666666666 234.0266666666667 37.5466666666666H160L175.1466666666667 111.1466666666667H234.0266666666667M395.7333333333334 155.3066666666666C416 155.3066666666666 439.8933333333333 138.6666666666666 439.8933333333333 118.4S416 81.7066666666667 395.7333333333334 81.7066666666667H322.1333333333334L336.8533333333333 155.3066666666666H395.7333333333333M425.1733333333333 272.8533333333333C445.4399999999999 272.8533333333333 469.3333333333333 256 469.3333333333333 236.16C469.3333333333333 215.8933333333333 445.4399999999999 199.2533333333333 425.1733333333333 199.2533333333333H352L366.2933333333334 272.8533333333333H425.1733333333333z" /> + <glyph glyph-name="blender" + unicode="&#xF0AB;" + horiz-adv-x="512" d=" M170.6666666666667 384C170.6666666666667 376.7466666666667 174.2933333333333 369.28 181.3333333333333 365.2266666666667L256 320H53.3333333333333C35.6266666666667 320 21.3333333333333 305.7066666666667 21.3333333333333 288S35.6266666666667 256 53.3333333333333 256H179.4133333333333L42.6666666666667 170.6666666666667C24.7466666666667 160 21.3333333333333 144.64 21.3333333333333 128C21.3333333333333 106.6666666666667 37.76 85.3333333333334 64 85.3333333333334C78.72 85.3333333333334 93.6533333333333 96 106.6666666666667 106.6666666666667L149.3333333333333 141.2266666666667C153.6 50.7733333333334 228.48 -21.3333333333333 320 -21.3333333333333C414.2933333333334 -21.3333333333333 490.6666666666666 55.04 490.6666666666666 149.3333333333334C490.6666666666666 211.6266666666667 457.1733333333333 266.6666666666667 407.2533333333334 295.8933333333333C406.6133333333333 296.32 405.9733333333334 296.9600000000001 405.3333333333333 297.3866666666667C405.3333333333333 297.3866666666667 403.6266666666667 298.6666666666667 402.3466666666667 299.3066666666667C336.2133333333333 343.8933333333333 277.9733333333333 368.64 203.7333333333333 402.56C199.2533333333333 404.48 195.4133333333333 405.3333333333333 192 405.3333333333333C179.2 405.3333333333333 170.6666666666667 395.52 170.6666666666667 384M320 256C378.88 256 426.6666666666667 208.2133333333334 426.6666666666667 149.3333333333334S378.88 42.6666666666667 320 42.6666666666667S213.3333333333333 90.4533333333334 213.3333333333333 149.3333333333334S261.12 256 320 256M320 224C278.8266666666667 224 245.3333333333333 190.5066666666667 245.3333333333333 149.3333333333334S278.8266666666667 74.6666666666667 320 74.6666666666667S394.6666666666667 108.16 394.6666666666667 149.3333333333334S361.1733333333333 224 320 224z" /> + <glyph glyph-name="blinds" + unicode="&#xF0AC;" + horiz-adv-x="512" d=" M64 405.3333333333333H448C459.7333333333333 405.3333333333333 469.3333333333333 395.7333333333334 469.3333333333333 384V341.3333333333334C469.3333333333333 329.6 459.7333333333333 320 448 320H426.6666666666667V170.6666666666667C426.6666666666667 158.9333333333333 417.0666666666667 149.3333333333334 405.3333333333333 149.3333333333334H277.3333333333333V103.04C302.2933333333333 94.2933333333333 320 70.6133333333334 320 42.6666666666667C320 7.2533333333333 291.4133333333333 -21.3333333333333 256 -21.3333333333333S192 7.2533333333333 192 42.6666666666667C192 70.6133333333334 209.7066666666667 94.2933333333334 234.6666666666667 103.04V149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667V320H64C52.2666666666667 320 42.6666666666667 329.6 42.6666666666667 341.3333333333334V384C42.6666666666667 395.7333333333334 52.2666666666667 405.3333333333333 64 405.3333333333333M256 64C244.2666666666667 64 234.6666666666667 54.4 234.6666666666667 42.6666666666667S244.2666666666667 21.3333333333334 256 21.3333333333334S277.3333333333333 30.9333333333333 277.3333333333333 42.6666666666667S267.7333333333334 64 256 64z" /> + <glyph glyph-name="block-helper" + unicode="&#xF0AD;" + horiz-adv-x="512" d=" M256 448C397.44 448 512 333.44 512 192S397.44 -64 256 -64S0 50.5600000000001 0 192S114.56 448 256 448M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192C42.6666666666667 140.8 60.8 93.8666666666667 90.88 56.96L391.04 357.12C354.1333333333334 387.2 307.2 405.3333333333333 256 405.3333333333333M256 -21.3333333333333C373.76 -21.3333333333333 469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 243.2 451.1999999999999 290.1333333333334 421.12 327.04L120.96 26.8800000000001C157.8666666666667 -3.1999999999999 204.8 -21.3333333333333 256 -21.3333333333333z" /> + <glyph glyph-name="blogger" + unicode="&#xF0AE;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667H212.2666666666667C200.5333333333333 170.6666666666667 190.9333333333333 161.0666666666667 190.9333333333333 149.3333333333334S200.5333333333333 128 212.2666666666667 128H298.6666666666667C310.4 128 320 137.6 320 149.3333333333334S310.4 170.6666666666667 298.6666666666667 170.6666666666667M212.2666666666667 234.6666666666667H267.7333333333333C279.4666666666667 234.6666666666667 289.0666666666666 244.2666666666667 289.0666666666666 256S279.4666666666667 277.3333333333334 267.7333333333333 277.3333333333334H212.2666666666667C200.5333333333333 277.3333333333334 190.9333333333333 267.7333333333334 190.9333333333333 256S200.5333333333333 234.6666666666667 212.2666666666667 234.6666666666667M341.3333333333333 256V234.6666666666667C341.3333333333333 222.9333333333333 350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334S384 203.7333333333334 384 192V128C384 92.5866666666667 355.4133333333333 64 320 64H192C156.5866666666667 64 128 92.5866666666667 128 128V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334H277.3333333333333C312.7466666666667 341.3333333333334 341.3333333333333 312.7466666666667 341.3333333333333 277.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="bluetooth" + unicode="&#xF0AF;" + horiz-adv-x="512" d=" M317.44 100.48L277.3333333333333 60.3733333333333V140.5866666666667M277.3333333333333 323.6266666666667L317.44 283.52L277.3333333333333 243.6266666666667M377.8133333333334 283.52L256 405.3333333333333H234.6666666666667V243.6266666666667L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.96L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L377.8133333333334 100.48L286.08 192L377.8133333333334 283.52z" /> + <glyph glyph-name="bluetooth-audio" + unicode="&#xF0B0;" + horiz-adv-x="512" d=" M274.7733333333333 100.48L234.6666666666667 60.3733333333333V140.5866666666667M234.6666666666667 323.6266666666667L274.7733333333333 283.52L234.6666666666667 243.6266666666667M335.1466666666667 283.52L213.3333333333333 405.3333333333333H192V243.6266666666667L94.08 341.3333333333334L64 311.2533333333334L183.2533333333333 192L64 72.96L94.08 42.6666666666667L192 140.5866666666667V-21.3333333333333H213.3333333333333L335.1466666666667 100.48L243.4133333333334 192M416.64 304.8533333333334L389.5466666666667 277.3333333333334C402.9866666666667 252.1600000000001 410.6666666666667 222.9333333333333 410.6666666666667 192C410.6666666666667 161.0666666666667 402.9866666666667 131.84 389.5466666666667 106.6666666666667L415.1466666666667 80.64C435.84 113.4933333333334 448 152.1066666666667 448 193.92C448 234.6666666666667 436.48 272.4266666666667 416.64 304.8533333333334M303.7866666666667 192L353.28 142.2933333333334C359.2533333333334 157.8666666666667 362.6666666666667 174.5066666666667 362.6666666666667 192C362.6666666666667 209.4933333333334 359.2533333333334 226.1333333333334 353.4933333333334 241.4933333333334L303.7866666666667 192z" /> + <glyph glyph-name="bluetooth-connect" + unicode="&#xF0B1;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667L362.6666666666667 192L405.3333333333333 149.3333333333334L448 192M317.44 100.48L277.3333333333333 60.3733333333333V140.5866666666667M277.3333333333333 323.6266666666667L317.44 283.52L277.3333333333333 243.6266666666667M377.8133333333334 283.52L256 405.3333333333333H234.6666666666667V243.6266666666667L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.96L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L377.8133333333334 100.48L286.08 192M149.3333333333333 192L106.6666666666667 234.6666666666667L64 192L106.6666666666667 149.3333333333334L149.3333333333333 192z" /> + <glyph glyph-name="bluetooth-off" + unicode="&#xF0B2;" + horiz-adv-x="512" d=" M277.3333333333333 323.6266666666667L317.44 283.52L283.3066666666666 249.3866666666667L313.3866666666667 219.3066666666667L377.8133333333334 283.7333333333334L256 405.3333333333333H234.6666666666667V298.0266666666667L277.3333333333333 255.36M115.4133333333333 362.6666666666667L85.3333333333333 332.5866666666667L225.92 192L106.6666666666667 72.7466666666667L136.7466666666667 42.6666666666667L234.6666666666667 140.5866666666667V-21.3333333333333H256L347.52 70.1866666666667L396.5866666666667 21.3333333333334L426.6666666666667 51.4133333333334M277.3333333333333 60.3733333333334V140.5866666666667L317.44 100.48" /> + <glyph glyph-name="bluetooth-settings" + unicode="&#xF0B3;" + horiz-adv-x="512" d=" M317.44 143.1466666666667L277.3333333333333 103.04V183.2533333333333L317.44 143.1466666666667M277.3333333333333 366.2933333333334L317.44 326.1866666666667L277.3333333333333 286.0800000000001M377.8133333333334 326.1866666666667L256 448H234.6666666666667V286.0800000000001L136.7466666666667 384L106.6666666666667 353.92L225.92 234.6666666666667L106.6666666666667 115.4133333333334L136.7466666666667 85.3333333333334L234.6666666666667 183.2533333333333V21.3333333333334H256L377.8133333333334 143.1466666666667L286.08 234.6666666666667L377.8133333333334 326.1866666666667M320 -64H362.6666666666667V-21.3333333333333H320M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667V-64z" /> + <glyph glyph-name="bluetooth-transfer" + unicode="&#xF0B4;" + horiz-adv-x="512" d=" M313.8133333333334 283.52L222.08 192L313.8133333333334 100.48L192 -21.3333333333333H170.6666666666667V140.5866666666667L72.7466666666667 42.6666666666667L42.6666666666667 72.7466666666667L161.92 192L42.6666666666667 311.2533333333334L72.7466666666667 341.3333333333334L170.6666666666667 243.4133333333334V405.3333333333333H192L313.8133333333334 283.52M213.3333333333333 323.6266666666667V243.4133333333334L253.44 283.52L213.3333333333333 323.6266666666667M253.44 100.48L213.3333333333333 140.5866666666667V60.3733333333333L253.44 100.48M469.3333333333333 277.3333333333334H426.6666666666667V213.3333333333334H384V277.3333333333334H341.3333333333333L405.3333333333333 362.6666666666667L469.3333333333333 277.3333333333334M469.3333333333333 106.6666666666667L405.3333333333333 21.3333333333334L341.3333333333333 106.6666666666667H384V170.6666666666667H426.6666666666667V106.6666666666667H469.3333333333333z" /> + <glyph glyph-name="blur" + unicode="&#xF0B5;" + horiz-adv-x="512" d=" M298.6666666666667 266.6666666666667C280.96 266.6666666666667 266.6666666666667 252.3733333333334 266.6666666666667 234.6666666666667S280.96 202.6666666666667 298.6666666666667 202.6666666666667S330.6666666666667 216.96 330.6666666666667 234.6666666666667S316.3733333333334 266.6666666666667 298.6666666666667 266.6666666666667M298.6666666666667 181.3333333333334C280.96 181.3333333333334 266.6666666666667 167.04 266.6666666666667 149.3333333333334S280.96 117.3333333333334 298.6666666666667 117.3333333333334S330.6666666666667 131.6266666666667 330.6666666666667 149.3333333333334S316.3733333333334 181.3333333333334 298.6666666666667 181.3333333333334M213.3333333333333 85.3333333333334C201.6 85.3333333333334 192 75.7333333333334 192 64S201.6 42.6666666666667 213.3333333333333 42.6666666666667S234.6666666666667 52.2666666666667 234.6666666666667 64S225.0666666666667 85.3333333333334 213.3333333333333 85.3333333333334M213.3333333333333 266.6666666666667C195.6266666666667 266.6666666666667 181.3333333333333 252.3733333333334 181.3333333333333 234.6666666666667S195.6266666666667 202.6666666666667 213.3333333333333 202.6666666666667S245.3333333333333 216.96 245.3333333333333 234.6666666666667S231.04 266.6666666666667 213.3333333333333 266.6666666666667M298.6666666666667 10.6666666666667C292.6933333333334 10.6666666666667 288 5.9733333333334 288 0S292.6933333333334 -10.6666666666666 298.6666666666667 -10.6666666666666S309.3333333333333 -5.9733333333334 309.3333333333333 0S304.64 10.6666666666667 298.6666666666667 10.6666666666667M298.6666666666667 85.3333333333334C286.9333333333333 85.3333333333334 277.3333333333333 75.7333333333334 277.3333333333333 64S286.9333333333333 42.6666666666667 298.6666666666667 42.6666666666667S320 52.2666666666667 320 64S310.4 85.3333333333334 298.6666666666667 85.3333333333334M448 160C442.0266666666667 160 437.3333333333333 155.3066666666667 437.3333333333333 149.3333333333334S442.0266666666667 138.6666666666667 448 138.6666666666667S458.6666666666666 143.36 458.6666666666666 149.3333333333334S453.9733333333334 160 448 160M384 341.3333333333334C372.2666666666667 341.3333333333334 362.6666666666667 331.7333333333334 362.6666666666667 320S372.2666666666667 298.6666666666667 384 298.6666666666667S405.3333333333333 308.2666666666667 405.3333333333333 320S395.7333333333334 341.3333333333334 384 341.3333333333334M384 256C372.2666666666667 256 362.6666666666667 246.4000000000001 362.6666666666667 234.6666666666667S372.2666666666667 213.3333333333334 384 213.3333333333334S405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667S395.7333333333334 256 384 256M384 85.3333333333334C372.2666666666667 85.3333333333334 362.6666666666667 75.7333333333334 362.6666666666667 64S372.2666666666667 42.6666666666667 384 42.6666666666667S405.3333333333333 52.2666666666667 405.3333333333333 64S395.7333333333334 85.3333333333334 384 85.3333333333334M384 170.6666666666667C372.2666666666667 170.6666666666667 362.6666666666667 161.0666666666667 362.6666666666667 149.3333333333334S372.2666666666667 128 384 128S405.3333333333333 137.6 405.3333333333333 149.3333333333334S395.7333333333334 170.6666666666667 384 170.6666666666667M213.3333333333333 181.3333333333334C195.6266666666667 181.3333333333334 181.3333333333333 167.04 181.3333333333333 149.3333333333334S195.6266666666667 117.3333333333334 213.3333333333333 117.3333333333334S245.3333333333333 131.6266666666667 245.3333333333333 149.3333333333334S231.04 181.3333333333334 213.3333333333333 181.3333333333334M213.3333333333333 298.6666666666667C225.0666666666667 298.6666666666667 234.6666666666667 308.2666666666667 234.6666666666667 320S225.0666666666667 341.3333333333334 213.3333333333333 341.3333333333334S192 331.7333333333334 192 320S201.6 298.6666666666667 213.3333333333333 298.6666666666667M213.3333333333333 373.3333333333334C219.3066666666667 373.3333333333334 224 378.0266666666667 224 384S219.3066666666667 394.6666666666667 213.3333333333333 394.6666666666667S202.6666666666667 389.9733333333334 202.6666666666667 384S207.36 373.3333333333334 213.3333333333333 373.3333333333334M213.3333333333333 10.6666666666667C207.36 10.6666666666667 202.6666666666667 5.9733333333334 202.6666666666667 0S207.36 -10.6666666666666 213.3333333333333 -10.6666666666666S224 -5.9733333333334 224 0S219.3066666666667 10.6666666666667 213.3333333333333 10.6666666666667M64 160C58.0266666666667 160 53.3333333333333 155.3066666666667 53.3333333333333 149.3333333333334S58.0266666666667 138.6666666666667 64 138.6666666666667S74.6666666666667 143.36 74.6666666666667 149.3333333333334S69.9733333333333 160 64 160M298.6666666666667 373.3333333333334C304.64 373.3333333333334 309.3333333333333 378.0266666666667 309.3333333333333 384S304.64 394.6666666666667 298.6666666666667 394.6666666666667S288 389.9733333333334 288 384S292.6933333333334 373.3333333333334 298.6666666666667 373.3333333333334M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 308.2666666666667 320 320S310.4 341.3333333333334 298.6666666666667 341.3333333333334S277.3333333333333 331.7333333333334 277.3333333333333 320S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667M448 224C453.9733333333334 224 458.6666666666666 228.6933333333334 458.6666666666666 234.6666666666667S453.9733333333334 245.3333333333334 448 245.3333333333334S437.3333333333333 240.64 437.3333333333333 234.6666666666667S442.0266666666667 224 448 224M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334M64 245.3333333333334C58.0266666666667 245.3333333333334 53.3333333333333 240.64 53.3333333333333 234.6666666666667S58.0266666666667 224 64 224S74.6666666666667 228.6933333333334 74.6666666666667 234.6666666666667S69.9733333333333 245.3333333333334 64 245.3333333333334M128 256C116.2666666666667 256 106.6666666666667 246.4000000000001 106.6666666666667 234.6666666666667S116.2666666666667 213.3333333333334 128 213.3333333333334S149.3333333333333 222.9333333333333 149.3333333333333 234.6666666666667S139.7333333333333 256 128 256M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M128 170.6666666666667C116.2666666666667 170.6666666666667 106.6666666666667 161.0666666666667 106.6666666666667 149.3333333333334S116.2666666666667 128 128 128S149.3333333333333 137.6 149.3333333333333 149.3333333333334S139.7333333333333 170.6666666666667 128 170.6666666666667z" /> + <glyph glyph-name="blur-linear" + unicode="&#xF0B6;" + horiz-adv-x="512" d=" M277.3333333333333 85.3333333333334C289.0666666666667 85.3333333333334 298.6666666666667 94.9333333333333 298.6666666666667 106.6666666666667S289.0666666666667 128 277.3333333333333 128S256 118.4 256 106.6666666666667S265.6 85.3333333333334 277.3333333333333 85.3333333333334M277.3333333333333 170.6666666666667C289.0666666666667 170.6666666666667 298.6666666666667 180.2666666666667 298.6666666666667 192S289.0666666666667 213.3333333333334 277.3333333333333 213.3333333333334S256 203.7333333333334 256 192S265.6 170.6666666666667 277.3333333333333 170.6666666666667M277.3333333333333 256C289.0666666666667 256 298.6666666666667 265.6 298.6666666666667 277.3333333333334S289.0666666666667 298.6666666666667 277.3333333333333 298.6666666666667S256 289.0666666666667 256 277.3333333333334S265.6 256 277.3333333333333 256M362.6666666666667 181.3333333333334C368.64 181.3333333333334 373.3333333333333 186.0266666666667 373.3333333333333 192S368.64 202.6666666666667 362.6666666666667 202.6666666666667S352 197.9733333333333 352 192S356.6933333333333 181.3333333333334 362.6666666666667 181.3333333333334M362.6666666666667 266.6666666666667C368.64 266.6666666666667 373.3333333333333 271.36 373.3333333333333 277.3333333333334S368.64 288 362.6666666666667 288S352 283.3066666666667 352 277.3333333333334S356.6933333333333 266.6666666666667 362.6666666666667 266.6666666666667M64 384V341.3333333333334H448V384M362.6666666666667 96C368.64 96 373.3333333333333 100.6933333333333 373.3333333333333 106.6666666666667S368.64 117.3333333333334 362.6666666666667 117.3333333333334S352 112.64 352 106.6666666666667S356.6933333333333 96 362.6666666666667 96M192 85.3333333333334C203.7333333333334 85.3333333333334 213.3333333333333 94.9333333333333 213.3333333333333 106.6666666666667S203.7333333333334 128 192 128S170.6666666666667 118.4 170.6666666666667 106.6666666666667S180.2666666666667 85.3333333333334 192 85.3333333333334M106.6666666666667 160C124.3733333333333 160 138.6666666666667 174.2933333333334 138.6666666666667 192S124.3733333333333 224 106.6666666666667 224S74.6666666666667 209.7066666666667 74.6666666666667 192S88.96 160 106.6666666666667 160M106.6666666666667 245.3333333333334C124.3733333333333 245.3333333333334 138.6666666666667 259.6266666666667 138.6666666666667 277.3333333333334S124.3733333333333 309.3333333333334 106.6666666666667 309.3333333333334S74.6666666666667 295.04 74.6666666666667 277.3333333333334S88.96 245.3333333333334 106.6666666666667 245.3333333333334M64 0H448V42.6666666666667H64M192 256C203.7333333333334 256 213.3333333333333 265.6 213.3333333333333 277.3333333333334S203.7333333333334 298.6666666666667 192 298.6666666666667S170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334S180.2666666666667 256 192 256M192 170.6666666666667C203.7333333333334 170.6666666666667 213.3333333333333 180.2666666666667 213.3333333333333 192S203.7333333333334 213.3333333333334 192 213.3333333333334S170.6666666666667 203.7333333333334 170.6666666666667 192S180.2666666666667 170.6666666666667 192 170.6666666666667M106.6666666666667 74.6666666666667C124.3733333333333 74.6666666666667 138.6666666666667 88.96 138.6666666666667 106.6666666666667S124.3733333333333 138.6666666666667 106.6666666666667 138.6666666666667S74.6666666666667 124.3733333333333 74.6666666666667 106.6666666666667S88.96 74.6666666666667 106.6666666666667 74.6666666666667z" /> + <glyph glyph-name="blur-off" + unicode="&#xF0B7;" + horiz-adv-x="512" d=" M64 160C58.0266666666667 160 53.3333333333333 155.3066666666667 53.3333333333333 149.3333333333334S58.0266666666667 138.6666666666667 64 138.6666666666667S74.6666666666667 143.36 74.6666666666667 149.3333333333334S69.9733333333333 160 64 160M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M213.3333333333333 10.6666666666667C207.36 10.6666666666667 202.6666666666667 5.9733333333334 202.6666666666667 0S207.36 -10.6666666666666 213.3333333333333 -10.6666666666666S224 -5.9733333333334 224 0S219.3066666666667 10.6666666666667 213.3333333333333 10.6666666666667M64 245.3333333333334C58.0266666666667 245.3333333333334 53.3333333333333 240.64 53.3333333333333 234.6666666666667S58.0266666666667 224 64 224S74.6666666666667 228.6933333333334 74.6666666666667 234.6666666666667S69.9733333333333 245.3333333333334 64 245.3333333333334M128 170.6666666666667C116.2666666666667 170.6666666666667 106.6666666666667 161.0666666666667 106.6666666666667 149.3333333333334S116.2666666666667 128 128 128S149.3333333333333 137.6 149.3333333333333 149.3333333333334S139.7333333333333 170.6666666666667 128 170.6666666666667M448 160C442.0266666666667 160 437.3333333333333 155.3066666666667 437.3333333333333 149.3333333333334S442.0266666666667 138.6666666666667 448 138.6666666666667S458.6666666666666 143.36 458.6666666666666 149.3333333333334S453.9733333333334 160 448 160M213.3333333333333 85.3333333333334C201.6 85.3333333333334 192 75.7333333333334 192 64S201.6 42.6666666666667 213.3333333333333 42.6666666666667S234.6666666666667 52.2666666666667 234.6666666666667 64S225.0666666666667 85.3333333333334 213.3333333333333 85.3333333333334M53.3333333333333 335.5733333333334L133.9733333333333 254.9333333333334L128 256C116.2666666666667 256 106.6666666666667 246.4000000000001 106.6666666666667 234.6666666666667S116.2666666666667 213.3333333333334 128 213.3333333333334S149.3333333333333 222.9333333333333 149.3333333333333 234.6666666666667C149.3333333333333 236.8 148.6933333333333 238.72 148.0533333333334 240.64L208 180.6933333333333C192.8533333333333 178.3466666666667 181.3333333333333 165.12 181.3333333333333 149.3333333333333C181.3333333333333 131.6266666666667 195.6266666666667 117.3333333333333 213.3333333333333 117.3333333333333C229.12 117.3333333333333 242.3466666666667 128.8533333333334 244.6933333333334 144L304.64 84.0533333333333C302.7200000000001 84.6933333333333 300.8 85.3333333333333 298.6666666666667 85.3333333333333C286.9333333333334 85.3333333333333 277.3333333333334 75.7333333333333 277.3333333333334 63.9999999999999S286.9333333333334 42.6666666666666 298.6666666666667 42.6666666666666S320 52.2666666666666 320 63.9999999999999C320 66.1333333333333 319.36 68.0533333333333 318.7200000000001 69.9733333333333L399.36 -10.6666666666667L426.6666666666667 16.4266666666667L80.4266666666667 362.6666666666667L53.3333333333333 335.5733333333334M298.6666666666667 10.6666666666667C292.6933333333334 10.6666666666667 288 5.9733333333334 288 0S292.6933333333334 -10.6666666666666 298.6666666666667 -10.6666666666666S309.3333333333333 -5.9733333333334 309.3333333333333 0S304.64 10.6666666666667 298.6666666666667 10.6666666666667M384 298.6666666666667C395.7333333333334 298.6666666666667 405.3333333333333 308.2666666666667 405.3333333333333 320S395.7333333333334 341.3333333333334 384 341.3333333333334S362.6666666666667 331.7333333333334 362.6666666666667 320S372.2666666666667 298.6666666666667 384 298.6666666666667M384 213.3333333333334C395.7333333333334 213.3333333333334 405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667S395.7333333333334 256 384 256S362.6666666666667 246.4000000000001 362.6666666666667 234.6666666666667S372.2666666666667 213.3333333333334 384 213.3333333333334M384 128C395.7333333333334 128 405.3333333333333 137.6 405.3333333333333 149.3333333333334S395.7333333333334 170.6666666666667 384 170.6666666666667S362.6666666666667 161.0666666666667 362.6666666666667 149.3333333333334S372.2666666666667 128 384 128M213.3333333333333 298.6666666666667C225.0666666666667 298.6666666666667 234.6666666666667 308.2666666666667 234.6666666666667 320S225.0666666666667 341.3333333333334 213.3333333333333 341.3333333333334S192 331.7333333333334 192 320S201.6 298.6666666666667 213.3333333333333 298.6666666666667M448 224C453.9733333333334 224 458.6666666666666 228.6933333333334 458.6666666666666 234.6666666666667S453.9733333333334 245.3333333333334 448 245.3333333333334S437.3333333333333 240.64 437.3333333333333 234.6666666666667S442.0266666666667 224 448 224M213.3333333333333 373.3333333333334C219.3066666666667 373.3333333333334 224 378.0266666666667 224 384S219.3066666666667 394.6666666666667 213.3333333333333 394.6666666666667S202.6666666666667 389.9733333333334 202.6666666666667 384S207.36 373.3333333333334 213.3333333333333 373.3333333333334M298.6666666666667 373.3333333333334C304.64 373.3333333333334 309.3333333333333 378.0266666666667 309.3333333333333 384S304.64 394.6666666666667 298.6666666666667 394.6666666666667S288 389.9733333333334 288 384S292.6933333333334 373.3333333333334 298.6666666666667 373.3333333333334M294.4 202.6666666666667H298.6666666666667C316.3733333333334 202.6666666666667 330.6666666666667 216.96 330.6666666666667 234.6666666666667S316.3733333333334 266.6666666666667 298.6666666666667 266.6666666666667S266.6666666666667 252.3733333333334 266.6666666666667 234.6666666666667V230.4000000000001C269.0133333333333 216.1066666666667 280.1066666666667 205.0133333333334 294.4 202.6666666666667M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 308.2666666666667 320 320S310.4 341.3333333333334 298.6666666666667 341.3333333333334S277.3333333333333 331.7333333333334 277.3333333333333 320S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667z" /> + <glyph glyph-name="blur-radial" + unicode="&#xF0B8;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667C286.9333333333333 170.6666666666667 277.3333333333333 161.0666666666667 277.3333333333333 149.3333333333334S286.9333333333333 128 298.6666666666667 128S320 137.6 320 149.3333333333334S310.4 170.6666666666667 298.6666666666667 170.6666666666667M298.6666666666667 96C292.6933333333334 96 288 91.3066666666667 288 85.3333333333334S292.6933333333334 74.6666666666667 298.6666666666667 74.6666666666667S309.3333333333333 79.36 309.3333333333333 85.3333333333334S304.64 96 298.6666666666667 96M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M362.6666666666667 245.3333333333334C356.6933333333333 245.3333333333334 352 240.64 352 234.6666666666667S356.6933333333333 224 362.6666666666667 224S373.3333333333333 228.6933333333334 373.3333333333333 234.6666666666667S368.64 245.3333333333334 362.6666666666667 245.3333333333334M362.6666666666667 160C356.6933333333333 160 352 155.3066666666667 352 149.3333333333334S356.6933333333333 138.6666666666667 362.6666666666667 138.6666666666667S373.3333333333333 143.36 373.3333333333333 149.3333333333334S368.64 160 362.6666666666667 160M298.6666666666667 288C304.64 288 309.3333333333333 292.6933333333334 309.3333333333333 298.6666666666667S304.64 309.3333333333334 298.6666666666667 309.3333333333334S288 304.64 288 298.6666666666667S292.6933333333334 288 298.6666666666667 288M298.6666666666667 256C286.9333333333333 256 277.3333333333333 246.4000000000001 277.3333333333333 234.6666666666667S286.9333333333333 213.3333333333334 298.6666666666667 213.3333333333334S320 222.9333333333333 320 234.6666666666667S310.4 256 298.6666666666667 256M213.3333333333333 288C219.3066666666667 288 224 292.6933333333334 224 298.6666666666667S219.3066666666667 309.3333333333334 213.3333333333333 309.3333333333334S202.6666666666667 304.64 202.6666666666667 298.6666666666667S207.36 288 213.3333333333333 288M149.3333333333333 160C143.36 160 138.6666666666667 155.3066666666667 138.6666666666667 149.3333333333334S143.36 138.6666666666667 149.3333333333333 138.6666666666667S160 143.36 160 149.3333333333334S155.3066666666667 160 149.3333333333333 160M213.3333333333333 96C207.36 96 202.6666666666667 91.3066666666667 202.6666666666667 85.3333333333334S207.36 74.6666666666667 213.3333333333333 74.6666666666667S224 79.36 224 85.3333333333334S219.3066666666667 96 213.3333333333333 96M149.3333333333333 245.3333333333334C143.36 245.3333333333334 138.6666666666667 240.64 138.6666666666667 234.6666666666667S143.36 224 149.3333333333333 224S160 228.6933333333334 160 234.6666666666667S155.3066666666667 245.3333333333334 149.3333333333333 245.3333333333334M213.3333333333333 170.6666666666667C201.6 170.6666666666667 192 161.0666666666667 192 149.3333333333334S201.6 128 213.3333333333333 128S234.6666666666667 137.6 234.6666666666667 149.3333333333334S225.0666666666667 170.6666666666667 213.3333333333333 170.6666666666667M213.3333333333333 256C201.6 256 192 246.4000000000001 192 234.6666666666667S201.6 213.3333333333334 213.3333333333333 213.3333333333334S234.6666666666667 222.9333333333333 234.6666666666667 234.6666666666667S225.0666666666667 256 213.3333333333333 256z" /> + <glyph glyph-name="bone" + unicode="&#xF0B9;" + horiz-adv-x="512" d=" M170.6666666666667 149.3333333333334C170.6666666666667 113.92 142.08 85.3333333333334 106.6666666666667 85.3333333333334S42.6666666666667 113.92 42.6666666666667 149.3333333333334C42.6666666666667 165.76 48.8533333333333 180.6933333333334 58.88 192C48.8533333333333 203.3066666666667 42.6666666666667 218.24 42.6666666666667 234.6666666666667C42.6666666666667 270.0800000000001 71.2533333333333 298.6666666666667 106.6666666666667 298.6666666666667S170.6666666666667 270.0800000000001 170.6666666666667 234.6666666666667C199.04 232.96 227.6266666666667 231.04 256 231.04S312.96 232.96 341.3333333333333 234.6666666666667C341.3333333333333 270.0800000000001 369.92 298.6666666666667 405.3333333333333 298.6666666666667S469.3333333333333 270.0800000000001 469.3333333333333 234.6666666666667C469.3333333333333 218.24 463.1466666666666 203.3066666666667 453.1199999999999 192C463.1466666666666 180.6933333333334 469.3333333333333 165.76 469.3333333333333 149.3333333333334C469.3333333333333 113.92 440.7466666666667 85.3333333333334 405.3333333333333 85.3333333333334S341.3333333333333 113.92 341.3333333333333 149.3333333333334C312.96 151.04 284.3733333333334 152.96 256 152.96S199.04 151.04 170.6666666666667 149.3333333333334z" /> + <glyph glyph-name="book" + unicode="&#xF0BA;" + horiz-adv-x="512" d=" M384 -21.3333333333333C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.3466666666667 407.4666666666667 405.3333333333333 384 405.3333333333333H256V256L202.6666666666667 288L149.3333333333333 256V405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384z" /> + <glyph glyph-name="book-minus" + unicode="&#xF5D9;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M384 64V106.6666666666667H256V64H384z" /> + <glyph glyph-name="book-multiple" + unicode="&#xF0BB;" + horiz-adv-x="512" d=" M405.3333333333333 64H192C168.5333333333333 64 149.3333333333333 83.2 149.3333333333333 106.6666666666667V362.6666666666667C149.3333333333333 386.1333333333334 168.5333333333333 405.3333333333333 192 405.3333333333333H213.3333333333333V298.6666666666667L256 330.6666666666667L298.6666666666667 298.6666666666667V405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64M362.6666666666667 21.3333333333334V-21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V320H106.6666666666667V21.3333333333334H362.6666666666667z" /> + <glyph glyph-name="book-multiple-variant" + unicode="&#xF0BC;" + horiz-adv-x="512" d=" M405.3333333333333 64H192C168.5333333333333 64 149.3333333333333 83.2 149.3333333333333 106.6666666666667V362.6666666666667C149.3333333333333 386.1333333333334 168.5333333333333 405.3333333333333 192 405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64M213.3333333333333 256L256 288L298.6666666666667 256V362.6666666666667H213.3333333333333V256M362.6666666666667 21.3333333333334V-21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V320H106.6666666666667V21.3333333333334H362.6666666666667z" /> + <glyph glyph-name="book-open" + unicode="&#xF0BD;" + horiz-adv-x="512" d=" M277.3333333333333 192H426.6666666666667V160H277.3333333333333M277.3333333333333 245.3333333333334H426.6666666666667V213.3333333333334H277.3333333333333M277.3333333333333 138.6666666666667H426.6666666666667V106.6666666666667H277.3333333333333M448 362.6666666666667H64C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V42.6666666666667C21.3333333333333 19.2 40.5333333333333 0 64 0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V320C490.6666666666666 343.4666666666667 471.4666666666667 362.6666666666667 448 362.6666666666667M448 42.6666666666667H256V320H448" /> + <glyph glyph-name="book-open-page-variant" + unicode="&#xF5DA;" + horiz-adv-x="512" d=" M405.3333333333333 405.3333333333333L298.6666666666667 309.3333333333334V74.6666666666667L405.3333333333333 170.6666666666667V405.3333333333333M138.6666666666667 341.3333333333334C97.0666666666667 341.3333333333334 52.2666666666667 332.8 21.3333333333333 309.3333333333334V-3.4133333333333C21.3333333333333 -8.7466666666667 26.6666666666667 -14.08 32 -14.08C34.1333333333333 -14.08 35.2 -12.5866666666666 37.3333333333333 -12.5866666666666C66.1333333333333 1.28 107.7333333333333 10.6666666666667 138.6666666666667 10.6666666666667C180.2666666666667 10.6666666666667 225.0666666666667 2.1333333333334 256 -21.3333333333333C284.8 -3.1999999999999 337.0666666666667 10.6666666666667 373.3333333333333 10.6666666666667C408.5333333333333 10.6666666666667 444.8 4.0533333333334 474.6666666666666 -11.9466666666666C476.8 -13.0133333333333 477.8666666666666 -12.5866666666666 480 -12.5866666666666C485.3333333333333 -12.5866666666666 490.6666666666666 -7.2533333333333 490.6666666666666 -1.92V309.3333333333334C477.8666666666666 318.9333333333334 464 325.3333333333334 448 330.6666666666667V42.6666666666667C424.5333333333333 50.1333333333334 398.9333333333333 53.3333333333334 373.3333333333333 53.3333333333334C337.0666666666667 53.3333333333334 284.8 39.4666666666667 256 21.3333333333334V309.3333333333334C225.0666666666667 332.8 180.2666666666667 341.3333333333334 138.6666666666667 341.3333333333334z" /> + <glyph glyph-name="book-open-variant" + unicode="&#xF0BE;" + horiz-adv-x="512" d=" M448 341.3333333333334C424.32 348.8 398.2933333333334 352 373.3333333333333 352C331.7333333333334 352 286.9333333333333 343.4666666666667 256 320C225.0666666666667 343.4666666666667 180.2666666666667 352 138.6666666666667 352C97.0666666666667 352 52.2666666666667 343.4666666666667 21.3333333333333 320V7.4666666666667C21.3333333333333 2.1333333333334 26.6666666666667 -3.1999999999999 32 -3.1999999999999C34.1333333333333 -3.1999999999999 35.2 -2.1333333333333 37.3333333333333 -2.1333333333333C66.1333333333333 11.7333333333333 107.7333333333333 21.3333333333334 138.6666666666667 21.3333333333334C180.2666666666667 21.3333333333334 225.0666666666667 12.8000000000001 256 -10.6666666666666C284.8 7.4666666666667 337.0666666666667 21.3333333333334 373.3333333333333 21.3333333333334C408.5333333333333 21.3333333333334 444.8 14.9333333333333 474.6666666666666 -1.0666666666667C476.8 -2.1333333333333 477.8666666666666 -2.1333333333333 480 -2.1333333333333C485.3333333333333 -2.1333333333333 490.6666666666666 3.2 490.6666666666666 8.5333333333333V320C477.8666666666666 329.6 464 336 448 341.3333333333334M448 53.3333333333334C424.5333333333333 60.8000000000001 398.9333333333333 64 373.3333333333333 64C337.0666666666667 64 284.8 50.1333333333334 256 32V277.3333333333334C284.8 295.4666666666667 337.0666666666667 309.3333333333334 373.3333333333333 309.3333333333334C398.9333333333333 309.3333333333334 424.5333333333333 306.1333333333334 448 298.6666666666667V53.3333333333334z" /> + <glyph glyph-name="book-plus" + unicode="&#xF5DB;" + horiz-adv-x="512" d=" M384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.5333333333333 405.3333333333333 128 405.3333333333333H149.3333333333333V256L202.6666666666667 288L256 256V405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333M298.6666666666667 21.3333333333334H341.3333333333333V64H384V106.6666666666667H341.3333333333333V149.3333333333334H298.6666666666667V106.6666666666667H256V64H298.6666666666667V21.3333333333334z" /> + <glyph glyph-name="book-variant" + unicode="&#xF0BF;" + horiz-adv-x="512" d=" M128 362.6666666666667H234.6666666666667V192L181.3333333333333 224L128 192M384 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="bookmark" + unicode="&#xF0C0;" + horiz-adv-x="512" d=" M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V0L256 64L405.3333333333333 0V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="bookmark-check" + unicode="&#xF0C1;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 149.3333333333334L368 282.4533333333334L337.92 312.7466666666667L234.6666666666667 209.4933333333334L179.4133333333333 264.7466666666667L149.3333333333333 234.6666666666667L234.6666666666667 149.3333333333334z" /> + <glyph glyph-name="bookmark-music" + unicode="&#xF0C2;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 213.3333333333334C211.2 213.3333333333334 192 194.1333333333333 192 170.6666666666667S211.2 128 234.6666666666667 128S277.3333333333333 147.2000000000001 277.3333333333333 170.6666666666667V277.3333333333334H341.3333333333333V320H256V207.5733333333334C249.8133333333334 211.2 242.3466666666667 213.3333333333334 234.6666666666667 213.3333333333334z" /> + <glyph glyph-name="bookmark-outline" + unicode="&#xF0C3;" + horiz-adv-x="512" d=" M362.6666666666667 64L256 110.5066666666667L149.3333333333333 64V341.3333333333334H362.6666666666667M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V0L256 64L405.3333333333333 0V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="bookmark-plus" + unicode="&#xF0C5;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 298.6666666666667V256H192V213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333V213.3333333333334H320V256H277.3333333333333V298.6666666666667H234.6666666666667z" /> + <glyph glyph-name="bookmark-plus-outline" + unicode="&#xF0C4;" + horiz-adv-x="512" d=" M362.6666666666667 64V341.3333333333334H149.3333333333333V64L256 110.5066666666667L362.6666666666667 64M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M234.6666666666667 298.6666666666667H277.3333333333333V256H320V213.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334H192V256H234.6666666666667V298.6666666666667z" /> + <glyph glyph-name="bookmark-remove" + unicode="&#xF0C6;" + horiz-adv-x="512" d=" M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V0L256 64L106.6666666666667 0V341.3333333333334C106.6666666666667 365.0133333333333 125.8666666666667 384 149.3333333333333 384H362.6666666666667M174.2933333333333 264.9600000000001L225.92 213.3333333333334L174.2933333333333 161.92L204.5866666666667 131.6266666666667L256 183.2533333333333L307.4133333333333 131.6266666666667L337.7066666666667 161.92L286.08 213.3333333333334L337.7066666666667 264.9600000000001L307.4133333333333 295.04L256 243.6266666666667L204.5866666666667 295.04L174.2933333333333 264.9600000000001z" /> + <glyph glyph-name="boombox" + unicode="&#xF5DC;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334L106.6666666666667 298.6666666666667V277.3333333333334H64C52.2666666666667 277.3333333333334 42.6666666666667 267.7333333333334 42.6666666666667 256V85.3333333333334C42.6666666666667 73.6 52.2666666666667 64 64 64H448C459.7333333333333 64 469.3333333333333 73.6 469.3333333333333 85.3333333333334V256C469.3333333333333 267.7333333333334 459.7333333333333 277.3333333333334 448 277.3333333333334H405.3333333333333V298.6666666666667L362.6666666666667 341.3333333333334H149.3333333333333M149.3333333333333 298.6666666666667H362.6666666666667V277.3333333333334H149.3333333333333V298.6666666666667M234.6666666666667 256H277.3333333333333C283.3066666666666 256 288 251.3066666666667 288 245.3333333333334S283.3066666666666 234.6666666666667 277.3333333333333 234.6666666666667H234.6666666666667C228.6933333333334 234.6666666666667 224 239.36 224 245.3333333333334S228.6933333333334 256 234.6666666666667 256M160 224C195.4133333333333 224 224 195.4133333333334 224 160S195.4133333333333 96 160 96S96 124.5866666666667 96 160S124.5866666666667 224 160 224M352 224C387.4133333333333 224 416 195.4133333333334 416 160S387.4133333333333 96 352 96S288 124.5866666666667 288 160S316.5866666666667 224 352 224M160 192C142.2933333333333 192 128 177.7066666666667 128 160S142.2933333333333 128 160 128S192 142.2933333333334 192 160S177.7066666666667 192 160 192M352 192C334.2933333333333 192 320 177.7066666666667 320 160S334.2933333333333 128 352 128S384 142.2933333333334 384 160S369.7066666666666 192 352 192z" /> + <glyph glyph-name="border-all" + unicode="&#xF0C7;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H277.3333333333333V341.3333333333334H405.3333333333333M405.3333333333333 42.6666666666667H277.3333333333333V170.6666666666667H405.3333333333333M234.6666666666667 213.3333333333334H106.6666666666667V341.3333333333334H234.6666666666667M234.6666666666667 42.6666666666667H106.6666666666667V170.6666666666667H234.6666666666667M64 0H448V384H64V0z" /> + <glyph glyph-name="border-bottom" + unicode="&#xF0C8;" + horiz-adv-x="512" d=" M106.6666666666667 128H64V85.3333333333334H106.6666666666667M64 0H448V42.6666666666667H64M106.6666666666667 213.3333333333334H64V170.6666666666667H106.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M106.6666666666667 298.6666666666667H64V256H106.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M362.6666666666667 213.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333M106.6666666666667 384H64V341.3333333333334H106.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333M192 384H149.3333333333333V341.3333333333334H192M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M192 213.3333333333334H149.3333333333333V170.6666666666667H192V213.3333333333334z" /> + <glyph glyph-name="border-color" + unicode="&#xF0C9;" + horiz-adv-x="512" d=" M441.8133333333334 361.8133333333334C450.1333333333334 370.1333333333334 450.1333333333334 384 441.8133333333334 391.8933333333333L391.8933333333333 441.8133333333334C384 450.1333333333334 370.1333333333334 450.1333333333334 361.8133333333334 441.8133333333334L320 400L400 320M378.6666666666667 298.6666666666667L298.6666666666667 378.6666666666667L85.3333333333333 165.3333333333334V85.3333333333334H165.3333333333333L378.6666666666667 298.6666666666667z" /> + <glyph glyph-name="border-horizontal" + unicode="&#xF0CA;" + horiz-adv-x="512" d=" M405.3333333333333 0H448V42.6666666666667H405.3333333333333M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M64 170.6666666666667H448V213.3333333333334H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M192 384H149.3333333333333V341.3333333333334H192M106.6666666666667 384H64V341.3333333333334H106.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 298.6666666666667H64V256H106.6666666666667M64 0H106.6666666666667V42.6666666666667H64V0z" /> + <glyph glyph-name="border-inside" + unicode="&#xF0CB;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M277.3333333333333 384H234.6666666666667V213.3333333333334H64V170.6666666666667H234.6666666666667V0H277.3333333333333V170.6666666666667H448V213.3333333333334H277.3333333333333M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M362.6666666666667 384H320V341.3333333333334H362.6666666666667M106.6666666666667 384H64V341.3333333333334H106.6666666666667M192 384H149.3333333333333V341.3333333333334H192M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 298.6666666666667H64V256H106.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 0H106.6666666666667V42.6666666666667H64V0z" /> + <glyph glyph-name="border-left" + unicode="&#xF0CC;" + horiz-adv-x="512" d=" M320 341.3333333333334H362.6666666666667V384H320M320 170.6666666666667H362.6666666666667V213.3333333333334H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 256H448V298.6666666666667H405.3333333333333M64 0H106.6666666666667V384H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667V0z" /> + <glyph glyph-name="border-none" + unicode="&#xF0CD;" + horiz-adv-x="512" d=" M320 341.3333333333334H362.6666666666667V384H320M320 170.6666666666667H362.6666666666667V213.3333333333334H320M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M405.3333333333333 341.3333333333334H448V384H405.3333333333333M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M64 341.3333333333334H106.6666666666667V384H64M64 256H106.6666666666667V298.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 85.3333333333334H106.6666666666667V128H64M64 0H106.6666666666667V42.6666666666667H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M149.3333333333333 0H192V42.6666666666667H149.3333333333333M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333V341.3333333333334z" /> + <glyph glyph-name="border-outside" + unicode="&#xF0CE;" + horiz-adv-x="512" d=" M192 213.3333333333334H149.3333333333333V170.6666666666667H192M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M64 0H448V384H64M362.6666666666667 213.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V256H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="border-right" + unicode="&#xF0CF;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M234.6666666666667 341.3333333333334H277.3333333333333V384H234.6666666666667M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M320 341.3333333333334H362.6666666666667V384H320M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 0H448V384H405.3333333333333M320 170.6666666666667H362.6666666666667V213.3333333333334H320M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 256H106.6666666666667V298.6666666666667H64M64 85.3333333333334H106.6666666666667V128H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M64 0H106.6666666666667V42.6666666666667H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M64 341.3333333333334H106.6666666666667V384H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0z" /> + <glyph glyph-name="border-style" + unicode="&#xF0D0;" + horiz-adv-x="512" d=" M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M64 384V0H106.6666666666667V341.3333333333334H448V384M405.3333333333333 256H448V298.6666666666667H405.3333333333333" /> + <glyph glyph-name="border-top" + unicode="&#xF0D1;" + horiz-adv-x="512" d=" M320 170.6666666666667H362.6666666666667V213.3333333333334H320M405.3333333333333 0H448V42.6666666666667H405.3333333333333M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 85.3333333333334H448V128H405.3333333333333M64 341.3333333333334H448V384H64M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 256H106.6666666666667V298.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 0H106.6666666666667V42.6666666666667H64M64 85.3333333333334H106.6666666666667V128H64M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M234.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0z" /> + <glyph glyph-name="border-vertical" + unicode="&#xF0D2;" + horiz-adv-x="512" d=" M320 170.6666666666667H362.6666666666667V213.3333333333334H320M320 0H362.6666666666667V42.6666666666667H320M320 341.3333333333334H362.6666666666667V384H320M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H448V384H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 0H448V42.6666666666667H405.3333333333333M234.6666666666667 0H277.3333333333333V384H234.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M64 85.3333333333334H106.6666666666667V128H64M64 0H106.6666666666667V42.6666666666667H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64M149.3333333333333 170.6666666666667H192V213.3333333333334H149.3333333333333M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 341.3333333333334H106.6666666666667V384H64M64 256H106.6666666666667V298.6666666666667H64V256z" /> + <glyph glyph-name="bowl" + unicode="&#xF617;" + horiz-adv-x="512" d=" M469.3333333333333 128C469.3333333333333 45.44 402.56 -21.3333333333333 320 -21.3333333333333H192C109.44 -21.3333333333333 42.6666666666667 45.44 42.6666666666667 128V192H332.3733333333334L433.0666666666667 353.28L469.3333333333333 330.6666666666667L382.7200000000001 192H469.3333333333333V128z" /> + <glyph glyph-name="bowling" + unicode="&#xF0D3;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M266.6666666666667 213.3333333333334C248.96 213.3333333333334 234.6666666666667 199.04 234.6666666666667 181.3333333333334S248.96 149.3333333333334 266.6666666666667 149.3333333333334S298.6666666666667 163.6266666666667 298.6666666666667 181.3333333333334S284.3733333333334 213.3333333333334 266.6666666666667 213.3333333333334M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334M126.5066666666667 266.6666666666667C114.7733333333333 246.4000000000001 121.8133333333333 220.3733333333333 142.08 208.64C162.56 196.6933333333333 188.5866666666667 203.7333333333333 200.5333333333333 224C212.2666666666667 244.6933333333334 205.2266666666667 270.7200000000001 184.7466666666667 282.4533333333334C164.48 294.1866666666667 138.6666666666667 287.36 126.5066666666667 266.6666666666667z" /> + <glyph glyph-name="box" + unicode="&#xF0D4;" + horiz-adv-x="512" d=" M328.32 148.48C328.32 178.7733333333334 303.7866666666667 203.3066666666667 273.4933333333334 203.3066666666667C243.4133333333334 203.3066666666667 218.88 178.7733333333334 218.88 148.48C218.88 118.4 243.4133333333334 93.8666666666667 273.4933333333334 93.8666666666667C303.7866666666667 93.8666666666667 328.32 118.4000000000001 328.32 148.4800000000001M364.8 148.4800000000001C364.8 98.1333333333334 323.8400000000001 57.3866666666668 273.4933333333334 57.3866666666668C238.7200000000001 57.3866666666668 208.4266666666667 77.0133333333335 193.0666666666667 105.8133333333335C177.7066666666667 77.0133333333334 147.4133333333333 57.3866666666668 112.64 57.3866666666668C62.72 57.3866666666668 22.1866666666667 97.4933333333335 21.3333333333334 146.9866666666668V298.6666666666667C21.3333333333334 308.0533333333334 29.6533333333334 316.1600000000001 39.68 316.1600000000001S57.6 308.0533333333334 57.8133333333334 298.6666666666667V221.44C73.1733333333334 232.96 92.16 239.7866666666667 112.64 239.7866666666667C147.4133333333334 239.7866666666667 177.7066666666667 220.16 193.0666666666667 191.36C208.4266666666667 220.16 238.7200000000001 239.7866666666667 273.4933333333334 239.7866666666667C323.84 239.7866666666667 364.8 198.8266666666667 364.8 148.48M167.2533333333334 148.48C167.2533333333334 178.7733333333333 142.72 203.3066666666666 112.64 203.3066666666666C82.3466666666667 203.3066666666666 57.8133333333334 178.7733333333333 57.8133333333334 148.48C57.8133333333334 118.4 82.3466666666667 93.8666666666667 112.64 93.8666666666667C142.72 93.8666666666667 167.2533333333334 118.4 167.2533333333334 148.48M487.2533333333334 86.1866666666667C489.6 82.7733333333333 490.6666666666667 78.9333333333333 490.6666666666667 75.3066666666666C490.6666666666667 69.7599999999999 488.1066666666667 63.9999999999999 483.4133333333334 60.8C480.0000000000001 58.4533333333333 476.3733333333334 57.1733333333333 472.5333333333334 57.1733333333333C467.2 57.1733333333333 461.8666666666667 59.5199999999999 458.6666666666667 63.9999999999999L417.9200000000001 117.9733333333333L377.6 64C373.9733333333333 59.52 368.64 57.1733333333334 363.3066666666666 57.1733333333334C359.4666666666666 57.1733333333334 355.6266666666666 58.4533333333333 351.9999999999999 60.8000000000001C347.5199999999999 64 344.9599999999999 69.9733333333334 344.9599999999999 75.5200000000001C344.9599999999999 79.1466666666668 346.2399999999999 82.9866666666668 348.3733333333333 86.1866666666667L394.6666666666667 148.4800000000001L348.3733333333333 210.9866666666667C346.0266666666667 214.1866666666667 344.9599999999999 217.8133333333334 344.9599999999999 221.6533333333334C344.9599999999999 227.2000000000001 347.52 232.5333333333334 351.9999999999999 236.1600000000001C360.32 242.1333333333334 371.4133333333333 240.6400000000001 377.5999999999999 232.7466666666668L417.9199999999999 178.9866666666667L458.6666666666666 232.7466666666668C464.2133333333333 240.6400000000001 475.5199999999999 242.1333333333334 483.4133333333332 236.1600000000001C488.3199999999999 232.5333333333334 490.6666666666666 226.9866666666668 490.6666666666666 221.2266666666668C490.6666666666666 217.6000000000001 489.5999999999999 213.9733333333334 487.2533333333332 210.9866666666667L440.7466666666666 148.4800000000001L487.2533333333332 86.1866666666667z" /> + <glyph glyph-name="box-cutter" + unicode="&#xF0D5;" + horiz-adv-x="512" d=" M154.0266666666667 193.92C146.9866666666667 186.88 143.1466666666667 178.1333333333333 142.08 168.96L259.6266666666667 118.6133333333334L440.7466666666667 299.5200000000001C457.3866666666667 316.3733333333334 457.3866666666667 343.2533333333334 440.7466666666667 359.8933333333334L410.4533333333334 390.1866666666667C393.8133333333334 406.8266666666667 366.9333333333334 406.8266666666667 350.0800000000001 390.1866666666667L154.0266666666668 193.9200000000001M106.6666666666667 106.6666666666667V-16L230.6133333333333 95.36L123.9466666666666 138.0266666666667L106.6666666666667 106.6666666666667M365.2266666666667 344.9600000000001C373.3333333333333 353.28 387.2000000000001 353.28 395.52 344.9600000000001C403.84 336.4266666666667 403.84 322.9866666666667 395.52 314.6666666666667C387.2 306.3466666666667 373.3333333333333 306.3466666666667 365.2266666666666 314.6666666666667C356.9066666666666 322.9866666666667 356.9066666666666 336.4266666666667 365.2266666666666 344.9600000000001z" /> + <glyph glyph-name="box-shadow" + unicode="&#xF637;" + horiz-adv-x="512" d=" M64 384H384V64H64V384M405.3333333333333 42.6666666666667H448V0H405.3333333333333V42.6666666666667M405.3333333333333 106.6666666666667H448V64H405.3333333333333V106.6666666666667M405.3333333333333 170.6666666666667H448V128H405.3333333333333V170.6666666666667M405.3333333333333 234.6666666666667H448V192H405.3333333333333V234.6666666666667M405.3333333333333 298.6666666666667H448V256H405.3333333333333V298.6666666666667M341.3333333333333 42.6666666666667H384V0H341.3333333333333V42.6666666666667M277.3333333333333 42.6666666666667H320V0H277.3333333333333V42.6666666666667M213.3333333333333 42.6666666666667H256V0H213.3333333333333V42.6666666666667M149.3333333333333 42.6666666666667H192V0H149.3333333333333V42.6666666666667z" /> + <glyph glyph-name="bridge" + unicode="&#xF618;" + horiz-adv-x="512" d=" M149.3333333333333 149.3333333333334V215.2533333333333C133.9733333333333 222.2933333333334 119.68 230.8266666666667 106.6666666666667 240.8533333333333V149.3333333333334H149.3333333333333M106.6666666666667 64H64V106.6666666666667H21.3333333333333V149.3333333333334H64V298.6666666666667H106.6666666666667V268.1600000000001C145.0666666666667 234.6666666666667 197.76 213.3333333333334 256 213.3333333333334C314.24 213.3333333333334 366.9333333333333 234.6666666666667 405.3333333333333 268.1600000000001V298.6666666666667H448V149.3333333333334H490.6666666666666V106.6666666666667H448V64H405.3333333333333V106.6666666666667H106.6666666666667V64M362.6666666666667 215.2533333333333V149.3333333333334H405.3333333333333V240.8533333333333C392.32 230.8266666666667 378.0266666666667 222.2933333333334 362.6666666666667 215.2533333333333M341.3333333333333 149.3333333333334V206.5066666666667C327.68 201.6 313.3866666666667 197.9733333333333 298.6666666666667 195.4133333333334V149.3333333333334H341.3333333333333M277.3333333333333 149.3333333333334V192.8533333333333L256 192L234.6666666666667 192.8533333333333V149.3333333333334H277.3333333333333M213.3333333333333 149.3333333333334V195.4133333333334C198.6133333333334 197.9733333333333 184.32 201.6 170.6666666666667 206.5066666666667V149.3333333333334H213.3333333333333z" /> + <glyph glyph-name="briefcase" + unicode="&#xF0D6;" + horiz-adv-x="512" d=" M298.6666666666667 320H213.3333333333333V362.6666666666667H298.6666666666667M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-check" + unicode="&#xF0D7;" + horiz-adv-x="512" d=" M224 74.6666666666667L149.3333333333333 149.3333333333334L179.4133333333333 179.4133333333334L224 135.04L334.5066666666667 245.3333333333334L364.5866666666667 215.2533333333333M213.3333333333333 362.6666666666667H298.6666666666667V320H213.3333333333333M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-download" + unicode="&#xF0D8;" + horiz-adv-x="512" d=" M256 42.6666666666667L149.3333333333333 149.3333333333334H213.3333333333333V234.6666666666667H298.6666666666667V149.3333333333334H362.6666666666667M213.3333333333333 362.6666666666667H298.6666666666667V320H213.3333333333333M426.6666666666667 320H341.3333333333333V362.6666666666667L298.6666666666667 405.3333333333333H213.3333333333333L170.6666666666667 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="briefcase-upload" + unicode="&#xF0D9;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.6533333333333 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V277.3333333333334C42.6666666666667 301.0133333333333 61.6533333333333 320 85.3333333333333 320H170.6666666666667V362.6666666666667L213.3333333333333 405.3333333333333H298.6666666666667L341.3333333333333 362.6666666666667V320H426.6666666666667M213.3333333333333 362.6666666666667V320H298.6666666666667V362.6666666666667H213.3333333333333M256 256L149.3333333333333 149.3333333333334H213.3333333333333V64H298.6666666666667V149.3333333333334H362.6666666666667L256 256z" /> + <glyph glyph-name="brightness-1" + unicode="&#xF0DA;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="brightness-2" + unicode="&#xF0DB;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C174.5066666666667 405.3333333333333 138.0266666666667 394.6666666666667 106.6666666666667 376.5333333333333C170.6666666666667 339.6266666666667 213.3333333333333 270.9333333333334 213.3333333333333 192S170.6666666666667 44.3733333333333 106.6666666666667 7.4666666666667C138.0266666666667 -10.6666666666666 174.5066666666667 -21.3333333333333 213.3333333333333 -21.3333333333333C331.0933333333333 -21.3333333333333 426.6666666666667 74.24 426.6666666666667 192S331.0933333333333 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="brightness-3" + unicode="&#xF0DC;" + horiz-adv-x="512" d=" M192 405.3333333333333C169.6 405.3333333333333 148.2666666666667 401.92 128 395.52C214.6133333333333 368.4266666666667 277.3333333333333 288 277.3333333333333 192C277.3333333333333 96 214.6133333333334 15.5733333333334 128 -11.52C148.2666666666667 -17.92 169.6 -21.3333333333333 192 -21.3333333333333C309.76 -21.3333333333333 405.3333333333333 74.24 405.3333333333333 192S309.76 405.3333333333333 192 405.3333333333333z" /> + <glyph glyph-name="brightness-4" + unicode="&#xF0DD;" + horiz-adv-x="512" d=" M256 64C237.0133333333333 64 218.88 68.2666666666667 202.6666666666667 75.7333333333334C246.6133333333334 96 277.3333333333333 140.3733333333333 277.3333333333333 192C277.3333333333333 243.6266666666667 246.6133333333334 288 202.6666666666667 308.2666666666667C218.88 315.7333333333334 237.0133333333333 320 256 320C326.6133333333334 320 384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334z" /> + <glyph glyph-name="brightness-5" + unicode="&#xF0DE;" + horiz-adv-x="512" d=" M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 121.3866666666667L497.28 192L426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667z" /> + <glyph glyph-name="brightness-6" + unicode="&#xF0DF;" + horiz-adv-x="512" d=" M256 64V320C326.6133333333334 320 384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 121.3866666666667L497.28 192L426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667z" /> + <glyph glyph-name="brightness-7" + unicode="&#xF0E0;" + horiz-adv-x="512" d=" M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192S208.8533333333333 106.6666666666667 256 106.6666666666667S341.3333333333333 144.8533333333334 341.3333333333333 192S303.1466666666667 277.3333333333334 256 277.3333333333334M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334z" /> + <glyph glyph-name="brightness-auto" + unicode="&#xF0E1;" + horiz-adv-x="512" d=" M305.0666666666667 106.6666666666667L290.1333333333334 149.3333333333334H221.8666666666667L206.9333333333334 106.6666666666667H166.4L234.6666666666667 298.6666666666667H277.3333333333333L345.6 106.6666666666667H305.0666666666666M426.6666666666667 262.6133333333334V362.6666666666667H326.6133333333333L256 433.28L185.3866666666667 362.6666666666667H85.3333333333333V262.6133333333334L14.72 192L85.3333333333333 121.3866666666667V21.3333333333334H185.3866666666667L256 -49.28L326.6133333333334 21.3333333333334H426.6666666666667V121.3866666666667L497.28 192L426.6666666666667 262.6133333333334M231.4666666666667 178.1333333333334H280.5333333333333L256 256L231.4666666666667 178.1333333333333z" /> + <glyph glyph-name="broom" + unicode="&#xF0E2;" + horiz-adv-x="512" d=" M413.0133333333333 389.9733333333334L443.3066666666667 359.68L321.2800000000001 237.8666666666667C344.1066666666667 205.0133333333333 347.3066666666667 165.5466666666666 328.1066666666667 139.9466666666667L193.28 274.7733333333334C218.88 293.9733333333334 258.3466666666667 290.7733333333334 291.2 267.9466666666667L413.0133333333333 389.9733333333334M126.5066666666667 73.1733333333334C83.6266666666667 116.0533333333334 57.3866666666667 167.2533333333333 50.1333333333333 215.04L154.24 259.6266666666667L312.96 100.9066666666667L268.3733333333334 -3.1999999999999C220.5866666666667 4.0533333333334 169.3866666666667 30.2933333333334 126.5066666666667 73.1733333333334z" /> + <glyph glyph-name="brush" + unicode="&#xF0E3;" + horiz-adv-x="512" d=" M441.8133333333334 349.2266666666667L413.2266666666667 377.8133333333334C405.3333333333333 386.1333333333334 391.4666666666667 386.1333333333334 383.1466666666667 377.8133333333334L192 186.6666666666667L250.6666666666667 128L441.8133333333334 319.1466666666667C450.1333333333334 327.4666666666667 450.1333333333334 341.3333333333334 441.8133333333334 349.2266666666667M149.3333333333333 149.3333333333334C113.92 149.3333333333334 85.3333333333333 120.7466666666667 85.3333333333333 85.3333333333334C85.3333333333333 57.3866666666667 60.5866666666667 42.6666666666667 42.6666666666667 42.6666666666667C62.2933333333333 16.64 96 0 128 0C175.1466666666667 0 213.3333333333333 38.1866666666667 213.3333333333333 85.3333333333334C213.3333333333333 120.7466666666667 184.7466666666667 149.3333333333334 149.3333333333333 149.3333333333334z" /> + <glyph glyph-name="buffer" + unicode="&#xF619;" + horiz-adv-x="512" d=" M268.8 386.9866666666667C325.76 360.5333333333334 384 333.0133333333333 440.7466666666667 306.56C443.9466666666666 305.0666666666667 448 304 448 299.7333333333334S443.9466666666666 294.6133333333334 440.7466666666667 293.12C384 266.6666666666667 326.4 239.5733333333334 269.2266666666667 213.3333333333334C260.48 208.8533333333333 251.52 208.8533333333333 242.7733333333333 213.3333333333334C185.3866666666667 239.7866666666667 128 266.6666666666667 70.8266666666667 293.3333333333334C67.84 294.6133333333334 64 295.68 64 299.9466666666667C64 303.7866666666667 67.84 304.8533333333334 70.6133333333333 306.1333333333334C128 333.0133333333333 186.4533333333333 360.5333333333334 244.0533333333333 387.2C250.24 389.9733333333334 262.4 389.76 268.8 386.9866666666667M256 -3.1999999999999C251.7333333333334 -3.1999999999999 248.7466666666667 -1.4933333333333 242.7733333333334 0.64C185.3866666666667 27.0933333333334 128 53.9733333333334 71.04 80.64C68.0533333333333 82.1333333333334 64 82.9866666666667 64 87.4666666666667C64 91.7333333333334 68.0533333333333 92.5866666666667 71.2533333333333 94.08C80.64 98.5600000000001 90.24 103.0400000000001 99.6266666666667 107.52C109.2266666666667 111.7866666666667 118.6133333333333 111.7866666666667 128 107.3066666666667C166.1866666666667 89.6000000000001 204.16 71.8933333333334 242.1333333333334 54.1866666666667C251.52 49.7066666666667 260.9066666666667 49.92 270.2933333333333 54.1866666666667C308.2666666666667 72.1066666666667 346.24 89.8133333333334 384 107.52C393.3866666666667 111.7866666666666 402.56 112 411.52 107.7333333333334C421.76 103.2533333333333 431.7866666666667 98.3466666666667 441.8133333333334 93.6533333333334C443.3066666666667 93.0133333333333 444.8 92.16 446.08 91.0933333333334C448.8533333333333 88.96 448.8533333333333 85.3333333333334 446.08 83.6266666666667C444.3733333333334 82.3466666666667 442.4533333333333 81.28 440.5333333333333 80.4266666666667C384 53.3333333333334 327.04 27.3066666666667 270.08 1.0666666666667C265.8133333333333 -1.0666666666667 260.0533333333333 -3.1999999999999 256 -3.1999999999999M256 103.0400000000001C253.8666666666666 103.0400000000001 246.4 105.1733333333334 242.3466666666666 106.6666666666667C185.1733333333333 133.5466666666668 128 160.0000000000001 71.2533333333333 186.8800000000001C68.2666666666666 188.1600000000001 64 189.2266666666667 64 193.4933333333334C64 197.9733333333334 68.2666666666666 198.8266666666667 71.4666666666666 200.3200000000001C81.0666666666666 205.0133333333334 90.6666666666666 209.4933333333334 100.2666666666666 213.9733333333334C109.44 218.0266666666667 118.6133333333333 218.0266666666667 128 213.3333333333334C165.9733333333333 195.8400000000001 204.3733333333333 177.9200000000001 242.7733333333333 160.0000000000001C251.52 155.9466666666668 260.48 155.9466666666668 269.44 160.0000000000001C307.84 178.1333333333335 346.24 196.0533333333334 384.8533333333333 213.9733333333334C393.6 218.0266666666667 402.56 218.0266666666667 411.52 213.9733333333334C421.5466666666666 209.2800000000001 431.7866666666667 204.5866666666668 441.8133333333334 199.8933333333334C443.0933333333333 199.2533333333334 444.5866666666667 198.6133333333334 445.8666666666667 197.5466666666668C448.8533333333334 195.2000000000001 448.8533333333334 192.0000000000001 445.6533333333333 189.4400000000001C444.5866666666667 188.5866666666668 443.0933333333333 187.9466666666667 441.8133333333334 187.3066666666667C384 160.0000000000001 326.6133333333334 133.3333333333334 269.0133333333333 106.6666666666667C264.9600000000001 104.7466666666668 257.7066666666667 103.0400000000001 256 103.0400000000001z" /> + <glyph glyph-name="bug" + unicode="&#xF0E4;" + horiz-adv-x="512" d=" M298.6666666666667 192H213.3333333333333V234.6666666666667H298.6666666666667M298.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H298.6666666666667M426.6666666666667 277.3333333333334H366.7200000000001C357.12 293.9733333333334 343.8933333333333 308.2666666666667 327.8933333333333 319.1466666666667L362.6666666666667 353.92L332.5866666666667 384L286.2933333333333 337.7066666666667C276.48 340.0533333333334 266.6666666666667 341.3333333333334 256 341.3333333333334C245.3333333333333 341.3333333333334 235.52 340.0533333333334 225.92 337.7066666666667L179.4133333333333 384L149.3333333333333 353.92L183.8933333333334 319.1466666666667C168.1066666666667 308.2666666666667 154.88 293.9733333333334 145.28 277.3333333333334H85.3333333333333V234.6666666666667H129.92C128.8533333333333 227.6266666666667 128 220.5866666666667 128 213.3333333333334V192H85.3333333333333V149.3333333333334H128V128C128 120.7466666666667 128.8533333333333 113.7066666666667 129.92 106.6666666666667H85.3333333333333V64H145.28C167.4666666666667 25.8133333333334 208.64 0 256 0S344.5333333333333 25.8133333333334 366.7200000000001 64H426.6666666666667V106.6666666666667H382.08C383.1466666666667 113.7066666666667 384 120.7466666666667 384 128V149.3333333333334H426.6666666666667V192H384V213.3333333333334C384 220.5866666666667 383.1466666666667 227.6266666666667 382.08 234.6666666666667H426.6666666666667V277.3333333333334z" /> + <glyph glyph-name="bulletin-board" + unicode="&#xF0E5;" + horiz-adv-x="512" d=" M256.8533333333333 394.6666666666667L203.3066666666667 341.3333333333334H309.9733333333333L256.8533333333333 394.6666666666667M85.3333333333333 298.6666666666667V21.3333333333334H426.6666666666667V298.6666666666667H85.3333333333333M256 448L362.6666666666667 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667C42.6666666666667 322.1333333333334 61.8666666666667 341.3333333333334 85.3333333333333 341.3333333333334H149.3333333333333L256 448M149.3333333333333 64V149.3333333333334H256V64H149.3333333333333M298.6666666666667 85.3333333333334V234.6666666666667H384V85.3333333333334H298.6666666666667M128 192V256H234.6666666666667V192H128z" /> + <glyph glyph-name="bullhorn" + unicode="&#xF0E6;" + horiz-adv-x="512" d=" M341.3333333333333 192V106.6666666666667C341.3333333333333 94.9333333333333 331.7333333333334 85.3333333333334 320 85.3333333333334C316.3733333333334 85.3333333333334 312.96 85.3333333333334 299.9466666666667 96C286.7200000000001 106.6666666666667 264.32 128 241.28 138.6666666666667C219.9466666666667 148.48 197.9733333333334 149.3333333333334 176.2133333333334 149.3333333333334L202.0266666666667 78.5066666666667L202.6666666666667 74.6666666666667C202.6666666666667 68.6933333333333 197.9733333333334 64 192 64H149.3333333333333C144.64 64 140.5866666666667 66.9866666666667 139.3066666666667 71.2533333333333L110.72 149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667C61.8666666666667 170.6666666666667 42.6666666666667 189.8666666666667 42.6666666666667 213.3333333333334S61.8666666666667 256 85.3333333333333 256C85.3333333333333 267.7333333333334 94.9333333333333 277.3333333333334 106.6666666666667 277.3333333333334H170.6666666666667C194.3466666666666 277.3333333333334 218.0266666666667 277.3333333333334 241.28 288C264.32 298.6666666666667 286.7200000000001 320 299.9466666666667 330.6666666666667C312.96 341.3333333333334 316.3733333333334 341.3333333333334 320 341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V234.6666666666667C353.0666666666667 234.6666666666667 362.6666666666667 225.0666666666667 362.6666666666667 213.3333333333334S353.0666666666667 192 341.3333333333333 192M448 213.3333333333334C448 183.8933333333334 436.0533333333334 157.2266666666667 416.8533333333333 137.8133333333334L386.56 168.1066666666667C398.08 179.6266666666667 405.3333333333333 195.6266666666667 405.3333333333333 213.3333333333334C405.3333333333333 231.04 398.08 247.04 386.56 258.5600000000001L416.8533333333333 288.8533333333334C436.0533333333334 269.4400000000001 448 242.7733333333334 448 213.3333333333334z" /> + <glyph glyph-name="bullseye" + unicode="&#xF5DD;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.2933333333334 362.6666666666667 426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667M256 320C185.3866666666667 320 128 262.6133333333334 128 192S185.3866666666667 64 256 64S384 121.3866666666667 384 192S326.6133333333334 320 256 320M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="burst-mode" + unicode="&#xF5DE;" + horiz-adv-x="512" d=" M21.3333333333333 341.3333333333334H64V42.6666666666667H21.3333333333333V341.3333333333334M106.6666666666667 341.3333333333334H149.3333333333333V42.6666666666667H106.6666666666667V341.3333333333334M469.3333333333333 341.3333333333334H213.3333333333333C201.6 341.3333333333334 192 331.7333333333334 192 320V64C192 52.2666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H469.3333333333333C481.0666666666667 42.6666666666667 490.6666666666666 52.2666666666667 490.6666666666666 64V320C490.6666666666666 331.7333333333334 481.0666666666667 341.3333333333334 469.3333333333333 341.3333333333334M234.6666666666667 85.3333333333334L288 152.5333333333334L326.1866666666666 106.6666666666667L379.52 175.36L448 85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="bus" + unicode="&#xF0E7;" + horiz-adv-x="512" d=" M384 213.3333333333334H128V320H384M352 85.3333333333334C334.2933333333333 85.3333333333334 320 99.6266666666667 320 117.3333333333334S334.2933333333333 149.3333333333334 352 149.3333333333334S384 135.04 384 117.3333333333334S369.7066666666666 85.3333333333334 352 85.3333333333334M160 85.3333333333334C142.2933333333333 85.3333333333334 128 99.6266666666667 128 117.3333333333334S142.2933333333333 149.3333333333334 160 149.3333333333334S192 135.04 192 117.3333333333334S177.7066666666667 85.3333333333334 160 85.3333333333334M85.3333333333333 106.6666666666667C85.3333333333333 87.8933333333334 93.6533333333333 71.04 106.6666666666667 59.3066666666667V21.3333333333334C106.6666666666667 9.6 116.2666666666667 0 128 0H149.3333333333333C161.0666666666667 0 170.6666666666667 9.6 170.6666666666667 21.3333333333334V42.6666666666667H341.3333333333333V21.3333333333334C341.3333333333333 9.6 350.9333333333333 0 362.6666666666667 0H384C395.7333333333334 0 405.3333333333333 9.6 405.3333333333333 21.3333333333334V59.3066666666667C418.3466666666667 71.0400000000001 426.6666666666667 87.8933333333334 426.6666666666667 106.6666666666667V320C426.6666666666667 394.6666666666667 350.2933333333334 405.3333333333333 256 405.3333333333333S85.3333333333333 394.6666666666667 85.3333333333333 320V106.6666666666667z" /> + <glyph glyph-name="cached" + unicode="&#xF0E8;" + horiz-adv-x="512" d=" M405.3333333333333 277.3333333333334L320 192H384C384 121.3866666666667 326.6133333333334 64 256 64C234.6666666666667 64 213.9733333333333 69.3333333333334 196.2666666666667 78.9333333333333L165.12 47.7866666666666C191.36 31.1466666666667 222.5066666666667 21.3333333333334 256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192H490.6666666666666M128 192C128 262.6133333333334 185.3866666666667 320 256 320C277.3333333333333 320 298.0266666666667 314.6666666666667 315.7333333333334 305.0666666666667L346.88 336.2133333333334C320.64 352.8533333333334 289.4933333333334 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192H21.3333333333333L106.6666666666667 106.6666666666667L192 192" /> + <glyph glyph-name="cake" + unicode="&#xF0E9;" + horiz-adv-x="512" d=" M245.3333333333333 437.3333333333333C256 432 277.3333333333333 396.8 277.3333333333333 373.3333333333334S263.04 341.3333333333334 245.3333333333333 341.3333333333334S213.3333333333333 344.5333333333334 213.3333333333333 368S234.6666666666667 405.3333333333333 245.3333333333333 437.3333333333333M394.6666666666667 256C448 256 490.6666666666666 213.3333333333334 490.6666666666666 160C490.6666666666666 126.72 473.8133333333333 97.4933333333333 448 80.2133333333333V-42.6666666666666H64V80.2133333333333C38.1866666666667 97.4933333333333 21.3333333333333 126.72 21.3333333333333 160C21.3333333333333 213.3333333333334 64 256 117.3333333333333 256H213.3333333333333V320H277.3333333333333V256H394.6666666666667M256 106.6666666666667C285.44 106.6666666666667 309.3333333333333 130.5600000000001 309.3333333333333 160H341.3333333333333C341.3333333333333 130.5600000000001 365.2266666666667 106.6666666666667 394.6666666666667 106.6666666666667S448 130.5600000000001 448 160S424.1066666666667 213.3333333333334 394.6666666666667 213.3333333333334H117.3333333333333C87.8933333333333 213.3333333333334 64 189.4400000000001 64 160S87.8933333333333 106.6666666666667 117.3333333333333 106.6666666666667S170.6666666666667 130.56 170.6666666666667 160H202.6666666666667C202.6666666666667 130.5600000000001 226.56 106.6666666666667 256 106.6666666666667z" /> + <glyph glyph-name="cake-layered" + unicode="&#xF0EA;" + horiz-adv-x="512" d=" M448 0V85.3333333333334C448 109.0133333333333 428.8 128 405.3333333333333 128H384V192C384 215.68 364.8 234.6666666666667 341.3333333333333 234.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667V234.6666666666667H170.6666666666667C146.9866666666667 234.6666666666667 128 215.68 128 192V128H106.6666666666667C82.9866666666667 128 64 109.0133333333333 64 85.3333333333334V0H21.3333333333333V-42.6666666666666H490.6666666666666V0M256 298.6666666666667C279.4666666666667 298.6666666666667 298.6666666666667 317.8666666666667 298.6666666666667 341.3333333333334C298.6666666666667 349.44 296.5333333333333 356.9066666666667 292.48 363.3066666666667L256 426.6666666666667L219.3066666666667 363.3066666666667C215.4666666666667 356.9066666666667 213.3333333333333 349.44 213.3333333333333 341.3333333333334C213.3333333333333 317.8666666666667 232.5333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="cake-variant" + unicode="&#xF0EB;" + horiz-adv-x="512" d=" M256 320C279.68 320 298.6666666666667 339.2000000000001 298.6666666666667 362.6666666666667C298.6666666666667 370.7733333333333 296.5333333333333 378.24 292.48 384.64L256 448L219.52 384.64C215.4666666666667 378.24 213.3333333333333 370.7733333333333 213.3333333333333 362.6666666666667C213.3333333333333 339.2000000000001 232.5333333333334 320 256 320M354.1333333333334 106.6666666666667L331.3066666666667 129.7066666666667L308.2666666666667 106.6666666666667C280.5333333333333 79.1466666666667 231.8933333333333 78.9333333333333 203.9466666666666 106.6666666666667L181.3333333333333 129.7066666666667L157.8666666666667 106.6666666666667C144 93.0133333333333 125.44 85.3333333333334 105.8133333333334 85.3333333333334C90.24 85.3333333333334 75.9466666666667 90.24 64 98.3466666666667V0C64 -11.7333333333333 73.6 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C438.4 -21.3333333333333 448 -11.7333333333333 448 0V98.3466666666667C436.0533333333334 90.24 421.76 85.3333333333334 406.1866666666666 85.3333333333334C386.56 85.3333333333334 368 93.0133333333333 354.1333333333333 106.6666666666667M384 256H277.3333333333333V298.6666666666667H234.6666666666667V256H128C92.5866666666667 256 64 227.4133333333334 64 192V159.1466666666667C64 136.1066666666667 82.7733333333333 117.3333333333334 105.8133333333333 117.3333333333334C117.3333333333333 117.3333333333334 128 121.6 135.2533333333333 129.4933333333334L181.3333333333333 174.9333333333333L226.3466666666667 129.4933333333334C242.1333333333334 113.7066666666667 269.6533333333333 113.7066666666667 285.44 129.4933333333334L330.6666666666667 174.9333333333333L376.5333333333333 129.4933333333334C384 121.6 394.6666666666667 117.3333333333334 405.9733333333333 117.3333333333334C429.0133333333333 117.3333333333334 447.9999999999999 136.1066666666667 447.9999999999999 159.1466666666667V192C447.9999999999999 227.4133333333334 419.4133333333333 256 383.9999999999999 256z" /> + <glyph glyph-name="calculator" + unicode="&#xF0EC;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.8666666666667 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667V277.3333333333334H362.6666666666667V362.6666666666667H149.3333333333333M149.3333333333333 234.6666666666667V192H192V234.6666666666667H149.3333333333333M234.6666666666667 234.6666666666667V192H277.3333333333333V234.6666666666667H234.6666666666667M320 234.6666666666667V192H362.6666666666667V234.6666666666667H320M149.3333333333333 149.3333333333334V106.6666666666667H192V149.3333333333334H149.3333333333333M234.6666666666667 149.3333333333334V106.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M320 149.3333333333334V106.6666666666667H362.6666666666667V149.3333333333334H320M149.3333333333333 64V21.3333333333334H192V64H149.3333333333333M234.6666666666667 64V21.3333333333334H277.3333333333333V64H234.6666666666667M320 64V21.3333333333334H362.6666666666667V64H320z" /> + <glyph glyph-name="calendar" + unicode="&#xF0ED;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M341.3333333333333 426.6666666666667V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H384V426.6666666666667M362.6666666666667 192H256V85.3333333333334H362.6666666666667V192z" /> + <glyph glyph-name="calendar-blank" + unicode="&#xF0EE;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M341.3333333333333 426.6666666666667V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H384V426.6666666666667" /> + <glyph glyph-name="calendar-check" + unicode="&#xF0EF;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M352.64 212.0533333333334L330.0266666666667 234.6666666666667L225.92 130.5600000000001L180.6933333333333 175.7866666666668L158.08 153.1733333333334L225.92 85.3333333333334L352.64 212.0533333333334z" /> + <glyph glyph-name="calendar-clock" + unicode="&#xF0F0;" + horiz-adv-x="512" d=" M320 170.6666666666667H352V110.5066666666667L404.0533333333334 80.4266666666667L388.0533333333334 52.6933333333333L320 91.9466666666667V170.6666666666667M405.3333333333333 277.3333333333334H106.6666666666667V42.6666666666667H206.2933333333333C197.12 62.08 192 83.84 192 106.6666666666667C192 189.2266666666667 258.7733333333333 256 341.3333333333333 256C364.16 256 385.92 250.88 405.3333333333333 241.7066666666667V277.3333333333334M106.6666666666667 0C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H128V426.6666666666667H170.6666666666667V384H341.3333333333333V426.6666666666667H384V384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V211.2C474.4533333333333 184.3200000000001 490.6666666666666 147.4133333333334 490.6666666666666 106.6666666666667C490.6666666666666 24.1066666666667 423.8933333333333 -42.6666666666666 341.3333333333333 -42.6666666666666C300.5866666666667 -42.6666666666666 263.68 -26.4533333333333 236.8 0H106.6666666666667M341.3333333333333 210.1333333333333C284.16 210.1333333333333 237.8666666666667 163.84 237.8666666666667 106.6666666666667C237.8666666666667 49.4933333333333 284.16 3.2 341.3333333333333 3.2C398.5066666666667 3.2 444.8 49.4933333333333 444.8 106.6666666666667C444.8 163.84 398.5066666666667 210.1333333333333 341.3333333333333 210.1333333333333z" /> + <glyph glyph-name="calendar-multiple" + unicode="&#xF0F1;" + horiz-adv-x="512" d=" M448 85.3333333333334V277.3333333333334H149.3333333333333V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H170.6666666666667V426.6666666666667H213.3333333333333V384H384V426.6666666666667H426.6666666666667V384H448M64 0H362.6666666666667V-42.6666666666666H64C40.32 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V256H64V0M405.3333333333333 128H320V213.3333333333334H405.3333333333333V128z" /> + <glyph glyph-name="calendar-multiple-check" + unicode="&#xF0F2;" + horiz-adv-x="512" d=" M448 85.3333333333334V277.3333333333334H149.3333333333333V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H170.6666666666667V426.6666666666667H213.3333333333333V384H384V426.6666666666667H426.6666666666667V384H448M373.9733333333334 212.0533333333334L279.2533333333334 117.3333333333334L222.08 174.5066666666667L244.6933333333334 197.12L279.2533333333334 162.5600000000001L351.36 234.6666666666667L373.9733333333333 212.0533333333334M64 0H362.6666666666667V-42.6666666666666H64C40.32 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V256H64V0z" /> + <glyph glyph-name="calendar-plus" + unicode="&#xF0F3;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V298.6666666666667H106.6666666666667V42.6666666666667H405.3333333333333M341.3333333333333 426.6666666666667H384V384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H128V426.6666666666667H170.6666666666667V384H341.3333333333333V426.6666666666667M234.6666666666667 256H277.3333333333333V192H341.3333333333333V149.3333333333334H277.3333333333333V85.3333333333334H234.6666666666667V149.3333333333334H170.6666666666667V192H234.6666666666667V256z" /> + <glyph glyph-name="calendar-remove" + unicode="&#xF0F4;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M198.6133333333334 85.3333333333334L250.6666666666667 137.3866666666667L302.72 85.3333333333334L325.3333333333333 107.9466666666667L273.28 160L325.3333333333333 212.0533333333334L302.72 234.6666666666667L250.6666666666667 182.6133333333334L198.6133333333334 234.6666666666667L176 212.0533333333334L228.0533333333333 160L176 107.9466666666667L198.6133333333334 85.3333333333334z" /> + <glyph glyph-name="calendar-text" + unicode="&#xF0F5;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H149.3333333333333V106.6666666666667H298.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M362.6666666666667 234.6666666666667H149.3333333333333V192H362.6666666666667V234.6666666666667z" /> + <glyph glyph-name="calendar-today" + unicode="&#xF0F6;" + horiz-adv-x="512" d=" M149.3333333333333 234.6666666666667H256V128H149.3333333333333M405.3333333333333 42.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H384V426.6666666666667H341.3333333333333V384H170.6666666666667V426.6666666666667H128V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="call-made" + unicode="&#xF0F7;" + horiz-adv-x="512" d=" M192 341.3333333333334V298.6666666666667H332.5866666666667L85.3333333333333 51.4133333333334L115.4133333333333 21.3333333333334L362.6666666666667 268.5866666666667V128H405.3333333333333V341.3333333333334" /> + <glyph glyph-name="call-merge" + unicode="&#xF0F8;" + horiz-adv-x="512" d=" M362.6666666666667 12.5866666666667L392.7466666666667 42.6666666666667L320 115.4133333333334L289.92 85.3333333333334M160 277.3333333333334H234.6666666666667V158.0800000000001L119.2533333333333 42.6666666666667L149.3333333333333 12.5866666666667L277.3333333333333 140.5866666666667V277.3333333333334H352L256 373.3333333333334" /> + <glyph glyph-name="call-missed" + unicode="&#xF0F9;" + horiz-adv-x="512" d=" M417.92 298.6666666666667L256 136.7466666666667L136.7466666666667 256H234.6666666666667V298.6666666666667H64V128H106.6666666666667V225.92L256 76.5866666666667L448 268.5866666666667" /> + <glyph glyph-name="call-received" + unicode="&#xF0FA;" + horiz-adv-x="512" d=" M426.6666666666667 332.5866666666667L396.5866666666667 362.6666666666667L149.3333333333333 115.4133333333334V256H106.6666666666667V42.6666666666667H320V85.3333333333334H179.4133333333333" /> + <glyph glyph-name="call-split" + unicode="&#xF0FB;" + horiz-adv-x="512" d=" M298.6666666666667 362.6666666666667L347.52 313.8133333333334L286.08 252.3733333333334L316.3733333333334 222.08L377.8133333333334 283.52L426.6666666666667 234.6666666666667V362.6666666666667M213.3333333333333 362.6666666666667H85.3333333333333V234.6666666666667L134.1866666666667 283.52L234.6666666666667 183.2533333333333V21.3333333333334H277.3333333333333V200.7466666666667L164.48 313.8133333333334" /> + <glyph glyph-name="camcorder" + unicode="&#xF0FC;" + horiz-adv-x="512" d=" M362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C353.0666666666667 64 362.6666666666667 73.6 362.6666666666667 85.3333333333334V160L448 74.6666666666667V309.3333333333334L362.6666666666667 224z" /> + <glyph glyph-name="camcorder-box" + unicode="&#xF0FD;" + horiz-adv-x="512" d=" M384 106.6666666666667L298.6666666666667 174.9333333333333V106.6666666666667H128V277.3333333333334H298.6666666666667V209.0666666666667L384 277.3333333333334M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camcorder-box-off" + unicode="&#xF0FE;" + horiz-adv-x="512" d=" M128 277.3333333333334H143.5733333333333L298.6666666666667 122.24V106.6666666666667H128M48.4266666666667 426.6666666666667L21.3333333333333 399.5733333333333L64 356.6933333333334C51.4133333333333 349.4400000000001 42.6666666666667 335.7866666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H399.5733333333333L442.24 -21.3333333333333L469.3333333333333 5.76M426.6666666666667 362.6666666666667H166.8266666666667L252.16 277.3333333333334H298.6666666666667V230.8266666666667L310.8266666666667 218.6666666666667L384 277.3333333333334V145.4933333333334L469.3333333333333 60.3733333333333V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camcorder-off" + unicode="&#xF0FF;" + horiz-adv-x="512" d=" M69.76 405.3333333333333L42.6666666666667 378.24L100.9066666666667 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C345.6 64 349.6533333333333 65.7066666666667 352.8533333333333 67.84L420.9066666666667 0L448 27.0933333333334M448 309.3333333333334L362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H209.4933333333334L448 81.4933333333333V309.3333333333334z" /> + <glyph glyph-name="camera" + unicode="&#xF100;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H149.3333333333333L192 405.3333333333333H320L362.6666666666667 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667M256 256C291.4133333333333 256 320 227.4133333333334 320 192S291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256z" /> + <glyph glyph-name="camera-enhance" + unicode="&#xF101;" + horiz-adv-x="512" d=" M192 384L152.96 341.3333333333334H85.3333333333333C61.8666666666667 341.3333333333334 42.6666666666667 322.1333333333334 42.6666666666667 298.6666666666667V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V298.6666666666667C469.3333333333333 322.1333333333334 450.1333333333334 341.3333333333334 426.6666666666667 341.3333333333334H359.04L320 384M256 64C197.12 64 149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667S197.12 277.3333333333334 256 277.3333333333334S362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667S314.88 64 256 64M256 85.3333333333334L282.6666666666667 144L341.3333333333333 170.6666666666667L282.6666666666667 197.3333333333334L256 256L229.3333333333333 197.3333333333334L170.6666666666667 170.6666666666667L229.3333333333333 144" /> + <glyph glyph-name="camera-front" + unicode="&#xF102;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667V181.3333333333334C362.6666666666667 216.96 291.6266666666667 234.6666666666667 256 234.6666666666667S149.3333333333333 216.96 149.3333333333333 181.3333333333334M362.6666666666667 448H149.3333333333333C125.8666666666667 448 106.6666666666667 428.8 106.6666666666667 405.3333333333333V106.6666666666667C106.6666666666667 83.2 125.8666666666667 64 149.3333333333333 64H362.6666666666667C386.1333333333334 64 405.3333333333333 83.2 405.3333333333333 106.6666666666667V405.3333333333333C405.3333333333333 428.8 386.1333333333334 448 362.6666666666667 448M256 277.3333333333334C279.4666666666667 277.3333333333334 298.6666666666667 296.5333333333334 298.6666666666667 320S279.4666666666667 362.6666666666667 256 362.6666666666667S213.3333333333333 343.4666666666667 213.3333333333333 320S232.5333333333334 277.3333333333334 256 277.3333333333334M298.6666666666667 21.3333333333334V-21.3333333333333H405.3333333333333V21.3333333333334M213.3333333333333 21.3333333333334H106.6666666666667V-21.3333333333333H213.3333333333333V-64L277.3333333333333 0L213.3333333333333 64V21.3333333333334z" /> + <glyph glyph-name="camera-front-variant" + unicode="&#xF103;" + horiz-adv-x="512" d=" M128 448H384C407.4666666666667 448 426.6666666666667 428.8 426.6666666666667 405.3333333333333V-21.3333333333333C426.6666666666667 -44.8 407.4666666666667 -64 384 -64H128C104.5333333333333 -64 85.3333333333333 -44.8 85.3333333333333 -21.3333333333333V405.3333333333333C85.3333333333333 428.8 104.5333333333333 448 128 448M256 320C291.4133333333333 320 320 291.4133333333334 320 256S291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320M234.6666666666667 426.6666666666667V384H277.3333333333333V426.6666666666667H234.6666666666667M128 362.6666666666667V96C128 125.44 185.3866666666667 149.3333333333334 256 149.3333333333334S384 125.44 384 96V362.6666666666667H128M277.3333333333333 64H192V21.3333333333334H277.3333333333333V-21.3333333333333L341.3333333333333 42.6666666666667L277.3333333333333 106.6666666666667V64z" /> + <glyph glyph-name="camera-iris" + unicode="&#xF104;" + horiz-adv-x="512" d=" M292.9066666666667 128L209.7066666666667 -16.2133333333333C224.64 -19.4133333333332 240 -21.3333333333333 256 -21.3333333333333C307.2 -21.3333333333333 354.1333333333334 -3.1999999999999 390.8266666666667 26.6666666666667L312.7466666666667 162.1333333333335M52.48 128C72.1066666666667 65.7066666666667 119.68 15.7866666666667 180.2666666666667 -7.2533333333333L258.56 128M182.1866666666667 192L98.9866666666666 336C64 298.6666666666667 42.6666666666667 247.68 42.6666666666667 192C42.6666666666667 177.4933333333334 44.16 163.2000000000001 46.9333333333333 149.3333333333334H206.72M465.0666666666667 234.6666666666667H305.28L311.4666666666667 224L413.0133333333333 48C448 85.9733333333334 469.3333333333333 136.5333333333334 469.3333333333333 192C469.3333333333333 206.72 467.84 221.0133333333333 465.0666666666667 234.6666666666667M459.52 256C439.8933333333333 318.5066666666667 392.32 368.2133333333334 331.7333333333333 391.2533333333334L253.44 256M200.5333333333333 224L302.2933333333333 400.2133333333333C287.36 403.4133333333334 272 405.3333333333333 256 405.3333333333333C204.8 405.3333333333333 157.8666666666667 387.4133333333334 121.1733333333333 357.3333333333334L199.2533333333333 221.8666666666667L200.5333333333333 224z" /> + <glyph glyph-name="camera-off" + unicode="&#xF5DF;" + horiz-adv-x="512" d=" M25.6 352.64L53.3333333333333 379.7333333333334L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L356.9066666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 324.6933333333334 43.52 329.1733333333334 44.8 333.44L25.6 352.64M149.3333333333333 362.6666666666667L192 405.3333333333333H320L362.6666666666667 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 51.2 463.7866666666666 39.8933333333334 454.8266666666667 32L348.3733333333333 138.6666666666667C357.5466666666666 154.24 362.6666666666667 172.5866666666667 362.6666666666667 192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667C236.5866666666667 298.6666666666667 218.24 293.5466666666667 202.6666666666667 284.3733333333334L124.16 362.6666666666667H149.3333333333333M149.3333333333333 192C149.3333333333333 133.12 197.12 85.3333333333334 256 85.3333333333334C266.6666666666667 85.3333333333334 277.9733333333333 87.04 288 90.24L250.0266666666667 128C219.52 131.2000000000001 195.2 155.52 192 186.0266666666667L154.24 224C151.04 213.9733333333333 149.3333333333333 202.6666666666667 149.3333333333333 192M256 256C291.4133333333333 256 320 227.4133333333334 320 192C320 184.5333333333334 318.72 177.28 316.3733333333334 170.6666666666667L234.6666666666667 252.3733333333334C241.28 254.72 248.5333333333334 256 256 256z" /> + <glyph glyph-name="camera-party-mode" + unicode="&#xF105;" + horiz-adv-x="512" d=" M256 85.3333333333334C221.2266666666667 85.3333333333334 190.72 102.1866666666667 170.6666666666667 128H256C291.4133333333333 128 320 156.5866666666667 320 192C320 199.4666666666667 318.5066666666667 206.72 316.16 213.3333333333334H360.5333333333333C361.8133333333333 206.5066666666667 362.6666666666667 199.2533333333333 362.6666666666667 192C362.6666666666667 133.12 314.88 85.3333333333334 256 85.3333333333334M256 298.6666666666667C290.7733333333333 298.6666666666667 321.28 281.8133333333334 341.3333333333333 256H256C220.5866666666667 256 192 227.4133333333334 192 192C192 184.5333333333334 193.4933333333334 177.4933333333334 195.84 170.6666666666667H151.4666666666667C149.9733333333333 177.4933333333334 149.3333333333333 184.7466666666667 149.3333333333333 192C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667M426.6666666666667 362.6666666666667H359.04L320 405.3333333333333H192L152.96 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camera-rear" + unicode="&#xF106;" + horiz-adv-x="512" d=" M256 320C232.32 320 213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333C279.2533333333334 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320M362.6666666666667 448H149.3333333333333C125.8666666666667 448 106.6666666666667 428.8 106.6666666666667 405.3333333333333V106.6666666666667C106.6666666666667 83.2 125.8666666666667 64 149.3333333333333 64H362.6666666666667C386.1333333333334 64 405.3333333333333 83.2 405.3333333333333 106.6666666666667V405.3333333333333C405.3333333333333 428.8 386.1333333333334 448 362.6666666666667 448M298.6666666666667 21.3333333333334V-21.3333333333333H405.3333333333333V21.3333333333334M213.3333333333333 21.3333333333334H106.6666666666667V-21.3333333333333H213.3333333333333V-64L277.3333333333333 0L213.3333333333333 64V21.3333333333334z" /> + <glyph glyph-name="camera-rear-variant" + unicode="&#xF107;" + horiz-adv-x="512" d=" M128 448H384C407.4666666666667 448 426.6666666666667 428.8 426.6666666666667 405.3333333333333V-21.3333333333333C426.6666666666667 -44.8 407.4666666666667 -64 384 -64H128C104.5333333333333 -64 85.3333333333333 -44.8 85.3333333333333 -21.3333333333333V405.3333333333333C85.3333333333333 428.8 104.5333333333333 448 128 448M256 405.3333333333333C232.5333333333334 405.3333333333333 213.3333333333333 386.1333333333334 213.3333333333333 362.6666666666667S232.5333333333334 320 256 320S298.6666666666667 339.2000000000001 298.6666666666667 362.6666666666667S279.4666666666667 405.3333333333333 256 405.3333333333333M277.3333333333333 64H192V21.3333333333334H277.3333333333333V-21.3333333333333L341.3333333333333 42.6666666666667L277.3333333333333 106.6666666666667V64z" /> + <glyph glyph-name="camera-switch" + unicode="&#xF108;" + horiz-adv-x="512" d=" M320 117.3333333333334V170.6666666666667H192V117.3333333333334L117.3333333333333 192L192 266.6666666666667V213.3333333333334H320V266.6666666666667L394.6666666666667 192M426.6666666666667 362.6666666666667H359.04L320 405.3333333333333H192L152.96 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="camera-timer" + unicode="&#xF109;" + horiz-adv-x="512" d=" M105.3866666666667 312.5333333333334C97.0666666666667 320.8533333333334 97.0666666666667 334.5066666666667 105.3866666666667 342.8266666666667C113.7066666666667 351.1466666666667 127.1466666666667 351.1466666666667 135.4666666666667 342.8266666666667L278.8266666666667 228.0533333333334L286.2933333333333 222.0800000000001C302.9333333333333 205.4400000000001 302.9333333333333 178.3466666666668 286.2933333333333 161.7066666666667C269.6533333333333 145.0666666666667 242.56 145.0666666666667 225.92 161.7066666666667L219.9466666666667 169.1733333333334L105.3866666666667 312.5333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 239.1466666666667 407.4666666666667 281.8133333333334 376.7466666666667 312.7466666666667L406.8266666666667 342.8266666666667C445.44 304.2133333333334 469.3333333333333 250.88 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192H85.3333333333333C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334M256 426.6666666666667C279.4666666666667 426.6666666666667 298.6666666666667 407.4666666666667 298.6666666666667 384S279.4666666666667 341.3333333333334 256 341.3333333333334S213.3333333333333 360.5333333333334 213.3333333333333 384S232.5333333333334 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="candle" + unicode="&#xF5E2;" + horiz-adv-x="512" d=" M266.6666666666667 405.3333333333333C231.2533333333334 405.3333333333333 202.6666666666667 334.0800000000001 202.6666666666667 298.6666666666667C202.6666666666667 263.2533333333334 231.2533333333334 234.6666666666667 266.6666666666667 234.6666666666667S330.6666666666667 263.2533333333334 330.6666666666667 298.6666666666667S302.08 405.3333333333333 266.6666666666667 405.3333333333333M266.6666666666667 309.3333333333334C278.4 309.3333333333334 288 299.7333333333334 288 288S278.4 266.6666666666667 266.6666666666667 266.6666666666667S245.3333333333333 276.2666666666667 245.3333333333333 288S254.9333333333333 309.3333333333334 266.6666666666667 309.3333333333334M213.3333333333333 213.3333333333334C201.6 213.3333333333334 192 203.7333333333334 192 192V21.3333333333334H149.3333333333333C137.6 21.3333333333334 128 30.9333333333333 128 42.6666666666667V64C128 75.7333333333334 118.4 85.3333333333334 106.6666666666667 85.3333333333334S85.3333333333333 75.7333333333334 85.3333333333333 64V42.6666666666667C85.3333333333333 7.2533333333333 113.92 -21.3333333333333 149.3333333333333 -21.3333333333333H405.3333333333333C417.0666666666667 -21.3333333333333 426.6666666666667 -11.7333333333333 426.6666666666667 0S417.0666666666667 21.3333333333334 405.3333333333333 21.3333333333334H341.3333333333333V192C341.3333333333333 203.7333333333334 331.7333333333334 213.3333333333334 320 213.3333333333334H213.3333333333333z" /> + <glyph glyph-name="candycane" + unicode="&#xF10A;" + horiz-adv-x="512" d=" M213.3333333333333 234.6666666666667C213.3333333333333 211.2 194.1333333333333 192 170.6666666666667 192S128 211.2 128 234.6666666666667V277.3333333333334C128 290.7733333333333 130.1333333333333 303.5733333333334 133.76 315.7333333333334L213.3333333333333 236.1600000000001V234.6666666666667M256 405.3333333333333C271.7866666666667 405.3333333333333 286.72 402.56 300.5866666666667 397.2266666666667L255.36 320C237.6533333333334 320 222.72 309.3333333333334 216.5333333333333 293.3333333333334L154.4533333333333 355.4133333333334C177.92 385.7066666666667 214.6133333333334 405.3333333333333 256 405.3333333333333M378.88 313.3866666666667L298.6666666666667 233.1733333333334V277.3333333333334C298.6666666666667 285.44 296.5333333333333 292.9066666666667 292.6933333333334 299.3066666666667L337.7066666666667 375.8933333333333C357.12 359.8933333333333 371.6266666666667 338.1333333333334 378.88 313.3866666666667M384 168.7466666666667L298.6666666666667 83.4133333333334V172.8L384 258.1333333333334V168.7466666666667M384 21.3333333333334C384 -2.1333333333333 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333S298.6666666666667 -2.1333333333333 298.6666666666667 21.3333333333334V23.2533333333333L384 108.5866666666667V21.3333333333334z" /> + <glyph glyph-name="car" + unicode="&#xF10B;" + horiz-adv-x="512" d=" M106.6666666666667 213.3333333333334L138.6666666666667 309.3333333333334H373.3333333333333L405.3333333333333 213.3333333333334M373.3333333333333 106.6666666666667C355.6266666666667 106.6666666666667 341.3333333333333 120.96 341.3333333333333 138.6666666666667S355.6266666666667 170.6666666666667 373.3333333333333 170.6666666666667S405.3333333333333 156.3733333333333 405.3333333333333 138.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 120.96 106.6666666666667 138.6666666666667S120.96 170.6666666666667 138.6666666666667 170.6666666666667S170.6666666666667 156.3733333333333 170.6666666666667 138.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667M403.6266666666667 320C399.36 332.3733333333334 387.4133333333333 341.3333333333334 373.3333333333333 341.3333333333334H138.6666666666667C124.5866666666667 341.3333333333334 112.64 332.3733333333334 108.3733333333333 320L64 192V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H106.6666666666667C118.4 0 128 9.6 128 21.3333333333334V42.6666666666667H384V21.3333333333334C384 9.6 393.6 0 405.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V192L403.6266666666667 320z" /> + <glyph glyph-name="car-battery" + unicode="&#xF10C;" + horiz-adv-x="512" d=" M85.3333333333333 384V320H21.3333333333333V21.3333333333334H490.6666666666666V320H426.6666666666667V384H298.6666666666667V320H213.3333333333333V384H85.3333333333333M64 277.3333333333334H448V64H64V277.3333333333334M320 234.6666666666667V192H277.3333333333333V149.3333333333334H320V106.6666666666667H362.6666666666667V149.3333333333334H405.3333333333333V192H362.6666666666667V234.6666666666667H320M106.6666666666667 192V149.3333333333334H234.6666666666667V192H106.6666666666667z" /> + <glyph glyph-name="car-connected" + unicode="&#xF10D;" + horiz-adv-x="512" d=" M106.6666666666667 149.3333333333334H405.3333333333333L373.3333333333333 245.3333333333334H138.6666666666667L106.6666666666667 149.3333333333334M373.3333333333333 42.6666666666667C391.04 42.6666666666667 405.3333333333333 56.96 405.3333333333333 74.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667S341.3333333333333 92.3733333333333 341.3333333333333 74.6666666666667S355.6266666666667 42.6666666666667 373.3333333333333 42.6666666666667M138.6666666666667 42.6666666666667C156.3733333333333 42.6666666666667 170.6666666666667 56.96 170.6666666666667 74.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667S106.6666666666667 92.3733333333333 106.6666666666667 74.6666666666667S120.96 42.6666666666667 138.6666666666667 42.6666666666667M403.6266666666667 256L448 128V-42.6666666666666C448 -54.4 438.4 -64 426.6666666666667 -64H405.3333333333333C393.6 -64 384 -54.4 384 -42.6666666666666V-21.3333333333333H128V-42.6666666666666C128 -54.4 118.4 -64 106.6666666666667 -64H85.3333333333333C73.6 -64 64 -54.4 64 -42.6666666666666V128L108.3733333333333 256C112.64 268.3733333333334 124.8 277.3333333333334 138.6666666666667 277.3333333333334H373.3333333333333C387.2 277.3333333333334 399.36 268.3733333333334 403.6266666666667 256M256 448C301.2266666666667 448 344.5333333333333 429.6533333333333 376.5333333333333 397.8666666666667L346.2399999999999 367.5733333333333C322.3466666666667 391.4666666666667 289.7066666666667 405.3333333333333 256 405.3333333333333C222.2933333333333 405.3333333333333 189.6533333333333 391.4666666666667 165.76 367.5733333333333L135.68 397.8666666666667C167.4666666666667 429.6533333333333 210.7733333333334 448 256 448M256 362.6666666666667C278.6133333333334 362.6666666666667 300.16 353.28 316.16 337.4933333333334L285.8666666666667 307.2000000000001C277.9733333333334 315.0933333333334 267.3066666666667 320 256 320C245.3333333333333 320 234.0266666666667 315.0933333333334 226.1333333333334 307.2000000000001L195.84 337.4933333333334C211.84 353.28 233.3866666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="car-wash" + unicode="&#xF10E;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667L138.6666666666667 266.6666666666667H373.3333333333333L405.3333333333333 170.6666666666667M373.3333333333333 64C355.6266666666667 64 341.3333333333333 78.2933333333334 341.3333333333333 96S355.6266666666667 128 373.3333333333333 128S405.3333333333333 113.7066666666667 405.3333333333333 96S391.04 64 373.3333333333333 64M138.6666666666667 64C120.96 64 106.6666666666667 78.2933333333334 106.6666666666667 96S120.96 128 138.6666666666667 128S170.6666666666667 113.7066666666667 170.6666666666667 96S156.3733333333333 64 138.6666666666667 64M403.6266666666667 277.3333333333334C399.36 289.7066666666667 387.4133333333333 298.6666666666667 373.3333333333333 298.6666666666667H138.6666666666667C124.5866666666667 298.6666666666667 112.64 289.7066666666667 108.3733333333333 277.3333333333334L64 149.3333333333334V-21.3333333333333C64 -33.0666666666667 73.6 -42.6666666666666 85.3333333333333 -42.6666666666666H106.6666666666667C118.4 -42.6666666666666 128 -33.0666666666667 128 -21.3333333333333V0H384V-21.3333333333333C384 -33.0666666666667 393.6 -42.6666666666666 405.3333333333333 -42.6666666666666H426.6666666666667C438.4 -42.6666666666666 448 -33.0666666666667 448 -21.3333333333333V149.3333333333334M149.3333333333333 341.3333333333334C167.04 341.3333333333334 181.3333333333333 355.6266666666667 181.3333333333333 373.3333333333334C181.3333333333333 394.6666666666667 149.3333333333333 430.9333333333334 149.3333333333333 430.9333333333334S117.3333333333333 394.6666666666667 117.3333333333333 373.3333333333334C117.3333333333333 355.6266666666667 131.6266666666667 341.3333333333334 149.3333333333333 341.3333333333334M256 341.3333333333334C273.7066666666667 341.3333333333334 288 355.6266666666667 288 373.3333333333334C288 394.6666666666667 256 430.9333333333334 256 430.9333333333334S224 394.6666666666667 224 373.3333333333334C224 355.6266666666667 238.2933333333333 341.3333333333334 256 341.3333333333334M362.6666666666667 341.3333333333334C380.3733333333333 341.3333333333334 394.6666666666667 355.6266666666667 394.6666666666667 373.3333333333334C394.6666666666667 394.6666666666667 362.6666666666667 430.9333333333334 362.6666666666667 430.9333333333334S330.6666666666667 394.6666666666667 330.6666666666667 373.3333333333334C330.6666666666667 355.6266666666667 344.9600000000001 341.3333333333334 362.6666666666667 341.3333333333334z" /> + <glyph glyph-name="cards" + unicode="&#xF638;" + horiz-adv-x="512" d=" M458.0266666666666 355.2000000000001L429.44 367.1466666666667V174.5066666666667L481.28 299.5200000000001C490.0266666666666 321.2800000000001 480 346.2400000000001 458.0266666666666 355.2000000000001M42.0266666666666 276.2666666666668L147.84 21.3333333333334C154.4533333333333 4.9066666666667 170.0266666666667 -5.1199999999999 186.4533333333333 -5.5466666666667C192 -5.5466666666667 197.76 -4.48 203.3066666666667 -2.1333333333333L360.5333333333334 62.9333333333333C376.5333333333334 69.5466666666666 386.3466666666667 85.3333333333334 386.7733333333334 101.12C386.9866666666668 106.6666666666667 385.9200000000001 112.8533333333334 384.0000000000001 118.4L277.3333333333333 373.3333333333334C271.1466666666667 389.76 255.36 399.7866666666667 238.72 400C233.1733333333333 400 227.6266666666667 398.7200000000001 222.2933333333333 396.8L65.28 331.7333333333334C43.52 322.7733333333333 33.0666666666667 297.8133333333334 42.0266666666667 276.2666666666667M386.56 357.3333333333333C386.56 380.8 367.36 400 343.8933333333333 400H312.9599999999999L386.56 222.08" /> + <glyph glyph-name="cards-outline" + unicode="&#xF639;" + horiz-adv-x="512" d=" M238.72 400C233.1733333333333 400 227.6266666666667 398.7200000000001 222.2933333333333 396.8L65.28 331.7333333333334C43.52 322.7733333333333 33.0666666666667 297.8133333333334 42.0266666666667 276.2666666666667L147.84 21.3333333333334C154.4533333333333 4.9066666666667 170.0266666666667 -4.9066666666666 186.4533333333333 -5.3333333333333C192 -5.3333333333333 197.76 -4.6933333333333 203.3066666666667 -2.1333333333333L360.5333333333334 62.9333333333333C376.5333333333334 69.5466666666666 386.3466666666667 85.3333333333334 386.7733333333334 101.3333333333334C386.9866666666668 106.6666666666667 385.9200000000001 112.8533333333334 384.0000000000001 118.4L277.3333333333333 373.3333333333334C271.1466666666667 389.76 255.36 399.7866666666667 238.72 400M312.96 400L386.56 221.8666666666667V357.3333333333334C386.56 380.8 367.36 400 343.8933333333333 400M429.4400000000001 367.1466666666667V174.5066666666667L481.28 299.52C490.0266666666667 321.2800000000001 480.0000000000001 346.0266666666667 458.0266666666667 354.9866666666667M238.7200000000001 357.9733333333334L344.9600000000001 101.5466666666667L187.3066666666667 36.2666666666668L81.0666666666667 292.48" /> + <glyph glyph-name="cards-playing-outline" + unicode="&#xF63A;" + horiz-adv-x="512" d=" M238.72 400C255.36 399.7866666666667 271.1466666666667 389.76 277.3333333333333 373.3333333333334L384 118.4C385.92 112.8533333333334 386.9866666666667 106.6666666666667 386.7733333333333 101.3333333333334C386.3466666666667 85.3333333333334 376.5333333333333 69.5466666666667 360.5333333333333 62.9333333333333L203.3066666666667 -2.1333333333333C197.76 -4.6933333333334 192 -5.3333333333333 186.4533333333333 -5.3333333333333C170.0266666666667 -4.9066666666666 154.4533333333333 4.9066666666667 147.84 21.3333333333334L42.0266666666667 276.2666666666667C33.0666666666667 297.8133333333334 43.52 322.7733333333333 65.28 331.7333333333334L222.2933333333333 396.8C227.6266666666667 398.72 233.1733333333333 400 238.72 400M312.96 400H343.8933333333333C367.36 400 386.56 380.8 386.56 357.3333333333333V221.8666666666667L312.9600000000001 400M429.4400000000001 367.1466666666667L458.0266666666667 354.9866666666666C480.0000000000001 346.0266666666667 490.0266666666667 321.28 481.28 299.52L429.4400000000001 174.5066666666666V367.1466666666667M238.7200000000001 357.9733333333334L81.0666666666667 292.48L187.0933333333333 36.2666666666667L344.9600000000001 101.5466666666666L238.7200000000001 357.9733333333333M184.5333333333333 265.8133333333334L253.44 214.4L244.0533333333334 128.8533333333334L175.1466666666667 180.48L184.5333333333333 265.8133333333334z" /> + <glyph glyph-name="carrot" + unicode="&#xF10F;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667L337.0666666666667 213.3333333333334H288C282.0266666666667 213.3333333333334 277.3333333333333 208.64 277.3333333333333 202.6666666666667S282.0266666666667 192 288 192H332.8L311.4666666666667 85.3333333333334H266.6666666666667C260.6933333333334 85.3333333333334 256 80.64 256 74.6666666666667S260.6933333333334 64 266.6666666666667 64H307.2L298.6666666666667 21.3333333333334C298.6666666666667 -2.1333333333333 279.4666666666667 -21.3333333333333 256 -21.3333333333333S213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334L192 128H224C229.9733333333333 128 234.6666666666667 132.6933333333334 234.6666666666667 138.6666666666667S229.9733333333333 149.3333333333334 224 149.3333333333334H187.7333333333334L170.6666666666667 234.6666666666667C170.6666666666667 260.2666666666667 190.5066666666667 282.24 219.52 292.48L189.8666666666667 335.36C183.2533333333333 345.1733333333334 185.6 358.4 195.4133333333333 365.0133333333333C205.0133333333333 371.84 218.24 369.28 225.0666666666667 359.68L234.6666666666667 345.6V384C234.6666666666667 395.7333333333334 244.2666666666667 405.3333333333333 256 405.3333333333333S277.3333333333333 395.7333333333334 277.3333333333333 384V335.36L309.3333333333333 372.48C316.3733333333334 381.4400000000001 330.0266666666667 382.5066666666667 338.9866666666667 374.8266666666667C347.9466666666667 367.36 349.0133333333333 353.92 341.3333333333333 344.7466666666667L295.8933333333333 291.2000000000001C322.9866666666667 280.5333333333334 341.3333333333333 259.2000000000001 341.3333333333333 234.6666666666667z" /> + <glyph glyph-name="cart" + unicode="&#xF110;" + horiz-adv-x="512" d=" M362.6666666666667 64C338.9866666666667 64 320 45.0133333333333 320 21.3333333333334C320 -2.1333333333333 339.2 -21.3333333333333 362.6666666666667 -21.3333333333333S405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334C405.3333333333333 45.0133333333333 386.1333333333334 64 362.6666666666667 64M21.3333333333333 405.3333333333333V362.6666666666667H64L140.8 200.7466666666667L111.7866666666667 148.48C108.5866666666667 142.5066666666667 106.6666666666666 135.4666666666667 106.6666666666666 128C106.6666666666666 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H405.3333333333333V128H158.2933333333333C155.3066666666667 128 152.96 130.3466666666667 152.96 133.3333333333334C152.96 134.4 153.1733333333333 135.2533333333333 153.6 135.8933333333333L172.8 170.6666666666667H331.7333333333334C347.7333333333334 170.6666666666667 361.8133333333334 179.6266666666667 369.0666666666667 192.64L445.4400000000001 330.6666666666667C446.9333333333334 334.08 448.0000000000001 337.7066666666667 448.0000000000001 341.3333333333333C448.0000000000001 353.0666666666667 438.4000000000001 362.6666666666667 426.6666666666668 362.6666666666667H111.1466666666667L91.0933333333333 405.3333333333333M149.3333333333333 64C125.6533333333333 64 106.6666666666667 45.0133333333333 106.6666666666667 21.3333333333334C106.6666666666667 -2.1333333333333 125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334C192 45.0133333333333 172.8 64 149.3333333333333 64z" /> + <glyph glyph-name="cart-off" + unicode="&#xF66B;" + horiz-adv-x="512" d=" M484.9066666666666 -36.9066666666666L27.0933333333333 420.9066666666667L0 393.8133333333334L93.6533333333333 300.1600000000001L140.8 200.7466666666667L112 148.48C108.5866666666667 142.5066666666667 106.6666666666667 135.4666666666667 106.6666666666667 128C106.6666666666667 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H308.48L337.92 55.8933333333334C327.2533333333334 48.2133333333334 320 35.6266666666667 320 21.3333333333334C320 -2.1333333333333 339.2 -21.3333333333333 362.6666666666667 -21.3333333333333C376.9600000000001 -21.3333333333333 389.5466666666667 -14.2933333333333 397.2266666666667 -3.4133333333333L457.8133333333333 -64L484.9066666666666 -36.9066666666666M158.2933333333333 128C155.3066666666667 128 152.96 130.3466666666667 152.96 133.3333333333334L153.6 135.8933333333333L172.8 170.6666666666667H223.1466666666667L265.8133333333333 128H158.2933333333333M331.7333333333334 170.6666666666667C347.7333333333334 170.6666666666667 361.8133333333334 179.4133333333334 369.0666666666667 192.64L445.4400000000001 330.6666666666667C447.1466666666667 334.08 448.0000000000001 337.7066666666667 448.0000000000001 341.3333333333333C448.0000000000001 353.0666666666667 438.4000000000001 362.6666666666667 426.6666666666668 362.6666666666667H139.52L331.7333333333334 170.6666666666667M149.3333333333333 64C125.8666666666667 64 106.6666666666667 44.8000000000001 106.6666666666667 21.3333333333334S125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334S172.8 64 149.3333333333333 64z" /> + <glyph glyph-name="cart-outline" + unicode="&#xF111;" + horiz-adv-x="512" d=" M362.6666666666667 64C386.1333333333334 64 405.3333333333333 44.8000000000001 405.3333333333333 21.3333333333334S386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333C338.9866666666667 -21.3333333333333 320 -2.1333333333333 320 21.3333333333334C320 45.0133333333333 338.9866666666667 64 362.6666666666667 64M21.3333333333333 405.3333333333333H91.0933333333333L111.1466666666667 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334C448 337.7066666666667 446.9333333333333 334.0800000000001 445.44 330.6666666666667L369.0666666666666 192.6400000000001C361.8133333333333 179.6266666666667 347.7333333333333 170.6666666666668 331.7333333333333 170.6666666666668H172.8L153.6 135.8933333333334L152.96 133.3333333333334C152.96 130.3466666666667 155.3066666666667 128.0000000000001 158.2933333333333 128.0000000000001H405.3333333333333V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128C106.6666666666667 135.4666666666667 108.5866666666667 142.5066666666667 111.7866666666667 148.48L140.8 200.7466666666667L64 362.6666666666667H21.3333333333333V405.3333333333333M149.3333333333333 64C172.8 64 192 44.8000000000001 192 21.3333333333334S172.8 -21.3333333333333 149.3333333333333 -21.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334C106.6666666666667 45.0133333333333 125.6533333333333 64 149.3333333333333 64M341.3333333333333 213.3333333333334L400.64 320H130.9866666666667L181.3333333333333 213.3333333333334H341.3333333333333z" /> + <glyph glyph-name="cart-plus" + unicode="&#xF112;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V320H341.3333333333333V362.6666666666667H277.3333333333333V426.6666666666667H234.6666666666667V362.6666666666667H170.6666666666667V320H234.6666666666667M149.3333333333333 64C125.8666666666667 64 106.6666666666667 44.8000000000001 106.6666666666667 21.3333333333334S125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S192 -2.1333333333333 192 21.3333333333334S172.8 64 149.3333333333333 64M362.6666666666667 64C339.2 64 320 44.8000000000001 320 21.3333333333334S339.2 -21.3333333333333 362.6666666666667 -21.3333333333333S405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334S386.1333333333334 64 362.6666666666667 64M152.96 133.3333333333334L153.6 135.8933333333333L172.8 170.6666666666667H331.7333333333334C347.7333333333334 170.6666666666667 361.8133333333334 179.4133333333334 369.0666666666667 192.64L451.4133333333333 342.1866666666667L414.2933333333334 362.6666666666667H414.08L390.6133333333333 320L331.7333333333333 213.3333333333334H181.9733333333333L179.2 219.0933333333333L131.4133333333333 320L111.1466666666667 362.6666666666667L91.0933333333333 405.3333333333333H21.3333333333333V362.6666666666667H64L140.8 200.7466666666667L112 148.48C108.5866666666667 142.5066666666667 106.6666666666667 135.4666666666667 106.6666666666667 128C106.6666666666667 104.5333333333333 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334H405.3333333333333V128H158.2933333333333C155.52 128 152.96 130.3466666666667 152.96 133.3333333333334z" /> + <glyph glyph-name="case-sensitive-alt" + unicode="&#xF113;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334C426.6666666666667 181.3333333333334 416 192 384 192H341.3333333333333V213.3333333333334C341.3333333333333 234.6666666666667 341.3333333333333 234.6666666666667 298.6666666666667 234.6666666666667V42.6666666666667H384C416 42.6666666666667 426.6666666666667 53.9733333333334 426.6666666666667 85.3333333333334V149.3333333333334M256 192C256 224 244.6933333333334 234.6666666666667 213.3333333333333 234.6666666666667H128C96 234.6666666666667 85.3333333333333 224 85.3333333333333 192V42.6666666666667H128V106.6666666666667H213.3333333333333V42.6666666666667H256V192M213.3333333333333 298.6666666666667H298.6666666666667V341.3333333333334H213.3333333333333V298.6666666666667M469.3333333333333 256V21.3333333333334C469.3333333333333 -2.3466666666666 450.3466666666667 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V256C42.6666666666667 279.68 61.6533333333333 298.6666666666667 85.3333333333333 298.6666666666667H170.6666666666667V341.3333333333334L213.3333333333333 384H298.6666666666667L341.3333333333333 341.3333333333334V298.6666666666667H426.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256M341.3333333333333 85.3333333333334H384V149.3333333333334H341.3333333333333V85.3333333333334M128 192H213.3333333333333V149.3333333333334H128V192z" /> + <glyph glyph-name="cash" + unicode="&#xF114;" + horiz-adv-x="512" d=" M64 320H448V64H64V320M256 256C291.4133333333333 256 320 227.4133333333334 320 192S291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256M149.3333333333333 277.3333333333334C149.3333333333333 253.8666666666667 130.1333333333333 234.6666666666667 106.6666666666667 234.6666666666667V149.3333333333334C130.1333333333333 149.3333333333334 149.3333333333333 130.1333333333333 149.3333333333333 106.6666666666667H362.6666666666667C362.6666666666667 130.1333333333333 381.8666666666666 149.3333333333334 405.3333333333333 149.3333333333334V234.6666666666667C381.8666666666666 234.6666666666667 362.6666666666667 253.8666666666667 362.6666666666667 277.3333333333334H149.3333333333333z" /> + <glyph glyph-name="cash-100" + unicode="&#xF115;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334H469.3333333333333V21.3333333333334H42.6666666666667V341.3333333333334M426.6666666666667 64V298.6666666666667H85.3333333333333V64H426.6666666666667M362.6666666666667 277.3333333333334C362.6666666666667 253.8666666666667 381.8666666666666 234.6666666666667 405.3333333333333 234.6666666666667V128C381.8666666666666 128 362.6666666666667 108.8 362.6666666666667 85.3333333333334H149.3333333333333C149.3333333333333 108.8 130.1333333333333 128 106.6666666666667 128V234.6666666666667C130.1333333333333 234.6666666666667 149.3333333333333 253.8666666666667 149.3333333333333 277.3333333333334H362.6666666666667M362.6666666666667 170.6666666666667V192C362.6666666666667 215.4666666666667 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192V170.6666666666667C298.6666666666667 147.2000000000001 312.96 128 330.6666666666667 128S362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M330.6666666666667 213.3333333333334C336.64 213.3333333333334 341.3333333333333 208.64 341.3333333333333 202.6666666666667V160C341.3333333333333 154.0266666666667 336.64 149.3333333333334 330.6666666666667 149.3333333333334S320 154.0266666666667 320 160V202.6666666666667C320 208.64 324.6933333333334 213.3333333333334 330.6666666666667 213.3333333333334M277.3333333333333 170.6666666666667V192C277.3333333333333 215.4666666666667 263.04 234.6666666666667 245.3333333333333 234.6666666666667S213.3333333333333 215.4666666666667 213.3333333333333 192V170.6666666666667C213.3333333333333 147.2000000000001 227.6266666666667 128 245.3333333333333 128S277.3333333333333 147.2000000000001 277.3333333333333 170.6666666666667M245.3333333333333 213.3333333333334C251.3066666666667 213.3333333333334 256 208.64 256 202.6666666666667V160C256 154.0266666666667 251.3066666666667 149.3333333333334 245.3333333333333 149.3333333333334S234.6666666666667 154.0266666666667 234.6666666666667 160V202.6666666666667C234.6666666666667 208.64 239.36 213.3333333333334 245.3333333333333 213.3333333333334M170.6666666666667 128H192V234.6666666666667H170.6666666666667L149.3333333333333 224V202.6666666666667L170.6666666666667 213.3333333333334V128z" /> + <glyph glyph-name="cash-multiple" + unicode="&#xF116;" + horiz-adv-x="512" d=" M106.6666666666667 320H490.6666666666666V64H106.6666666666667V320M298.6666666666667 256C334.08 256 362.6666666666667 227.4133333333334 362.6666666666667 192S334.08 128 298.6666666666667 128S234.6666666666667 156.5866666666667 234.6666666666667 192S263.2533333333334 256 298.6666666666667 256M192 277.3333333333334C192 253.8666666666667 172.8 234.6666666666667 149.3333333333333 234.6666666666667V149.3333333333334C172.8 149.3333333333334 192 130.1333333333333 192 106.6666666666667H405.3333333333333C405.3333333333333 130.1333333333333 424.5333333333333 149.3333333333334 448 149.3333333333334V234.6666666666667C424.5333333333333 234.6666666666667 405.3333333333333 253.8666666666667 405.3333333333333 277.3333333333334H192M21.3333333333333 234.6666666666667H64V21.3333333333334H405.3333333333333V-21.3333333333333H21.3333333333333V234.6666666666667z" /> + <glyph glyph-name="cash-usd" + unicode="&#xF117;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333V106.6666666666667H298.6666666666667C310.4 106.6666666666667 320 116.2666666666667 320 128V192C320 203.7333333333334 310.4 213.3333333333334 298.6666666666667 213.3333333333334H234.6666666666667V234.6666666666667H320V277.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667V277.3333333333334H213.3333333333333C201.6 277.3333333333334 192 267.7333333333334 192 256V192C192 180.2666666666667 201.6 170.6666666666667 213.3333333333333 170.6666666666667H277.3333333333333V149.3333333333334H192V106.6666666666667H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="cast" + unicode="&#xF118;" + horiz-adv-x="512" d=" M21.3333333333333 234.6666666666667V192C127.36 192 213.3333333333333 106.0266666666666 213.3333333333333 0H256C256 129.7066666666667 150.8266666666667 234.6666666666667 21.3333333333333 234.6666666666667M21.3333333333333 149.3333333333334V106.6666666666667C80.2133333333333 106.6666666666667 128 58.88 128 0H170.6666666666667C170.6666666666667 82.5600000000001 103.8933333333333 149.3333333333334 21.3333333333333 149.3333333333334M21.3333333333333 64V0H85.3333333333333C85.3333333333333 35.4133333333334 56.7466666666667 64 21.3333333333333 64M448 384H64C40.32 384 21.3333333333333 365.0133333333333 21.3333333333333 341.3333333333334V277.3333333333334H64V341.3333333333334H448V42.6666666666667H298.6666666666667V0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 365.0133333333333 471.4666666666667 384 448 384z" /> + <glyph glyph-name="cast-connected" + unicode="&#xF119;" + horiz-adv-x="512" d=" M448 384H64C40.32 384 21.3333333333333 365.0133333333333 21.3333333333333 341.3333333333334V277.3333333333334H64V341.3333333333334H448V42.6666666666667H298.6666666666667V0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 365.0133333333333 471.4666666666667 384 448 384M21.3333333333333 234.6666666666667V192C127.36 192 213.3333333333333 106.0266666666666 213.3333333333333 0H256C256 129.7066666666667 150.8266666666667 234.6666666666667 21.3333333333333 234.6666666666667M405.3333333333333 298.6666666666667H106.6666666666667V263.8933333333334C191.1466666666667 236.5866666666667 257.92 169.8133333333334 285.2266666666667 85.3333333333334H405.3333333333333M21.3333333333333 149.3333333333334V106.6666666666667C80.2133333333333 106.6666666666667 128 58.88 128 0H170.6666666666667C170.6666666666667 82.5600000000001 103.8933333333333 149.3333333333334 21.3333333333333 149.3333333333334M21.3333333333333 64V0H85.3333333333333C85.3333333333333 35.4133333333334 56.7466666666667 64 21.3333333333333 64z" /> + <glyph glyph-name="castle" + unicode="&#xF11A;" + horiz-adv-x="512" d=" M42.6666666666667 170.6666666666667H85.3333333333333V128H128V170.6666666666667H170.6666666666667V128H213.3333333333333V170.6666666666667H256V128H298.6666666666667V234.6666666666667L362.6666666666667 298.6666666666667V426.6666666666667H405.3333333333333L490.6666666666666 384L405.3333333333333 341.3333333333334V298.6666666666667L469.3333333333333 234.6666666666667V-21.3333333333333H234.6666666666667V42.6666666666667C234.6666666666667 66.1333333333334 215.4666666666667 85.3333333333334 192 85.3333333333334S149.3333333333333 66.1333333333334 149.3333333333333 42.6666666666667V-21.3333333333333H42.6666666666667V170.6666666666667M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 223.1466666666667 362.6666666666667 209.0666666666667V170.6666666666667H405.3333333333333V209.0666666666667C405.3333333333333 223.1466666666667 395.7333333333334 234.6666666666667 384 234.6666666666667z" /> + <glyph glyph-name="cat" + unicode="&#xF11B;" + horiz-adv-x="512" d=" M256 277.3333333333334L227.6266666666667 275.4133333333334C209.28 297.1733333333334 157.8666666666667 352 106.6666666666667 352C106.6666666666667 352 64.64 288.8533333333334 105.8133333333333 204.5866666666667C94.08 186.88 86.8266666666667 177.7066666666667 85.3333333333333 156.5866666666667L44.16 150.4L48.64 129.4933333333334L86.1866666666667 135.04L89.1733333333333 119.8933333333334L55.68 99.84L65.7066666666667 80.8533333333334L96.64 99.84C121.1733333333333 47.7866666666666 183.2533333333333 21.3333333333334 256 21.3333333333334S390.8266666666667 47.7866666666666 415.36 99.84L446.2933333333333 80.8533333333334L456.3199999999999 99.84L422.8266666666666 119.8933333333333L425.8133333333333 135.04L463.36 129.4933333333334L467.84 150.4L426.6666666666667 156.5866666666667C425.1733333333333 177.7066666666667 417.92 186.88 406.1866666666666 204.5866666666667C447.36 288.8533333333334 405.3333333333333 352 405.3333333333333 352C354.1333333333334 352 302.7200000000001 297.1733333333334 284.3733333333334 275.4133333333334L256 277.3333333333334M192 213.3333333333334C203.7333333333334 213.3333333333334 213.3333333333333 203.7333333333334 213.3333333333333 192S203.7333333333334 170.6666666666667 192 170.6666666666667S170.6666666666667 180.2666666666667 170.6666666666667 192S180.2666666666667 213.3333333333334 192 213.3333333333334M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192S331.7333333333334 170.6666666666667 320 170.6666666666667S298.6666666666667 180.2666666666667 298.6666666666667 192S308.2666666666667 213.3333333333334 320 213.3333333333334M234.6666666666667 149.3333333333334H277.3333333333333L262.4 119.68C266.6666666666667 106.0266666666666 278.6133333333334 96 293.3333333333333 96C311.04 96 325.3333333333333 110.2933333333334 325.3333333333333 128H336C336 104.5333333333333 316.8 85.3333333333334 293.3333333333333 85.3333333333334C277.3333333333333 85.3333333333334 263.4666666666667 94.08 256 106.6666666666667C248.5333333333334 94.08 234.6666666666667 85.3333333333334 218.6666666666667 85.3333333333334C195.2 85.3333333333334 176 104.5333333333333 176 128H186.6666666666667C186.6666666666667 110.2933333333334 200.96 96 218.6666666666667 96C233.3866666666667 96 245.3333333333333 106.0266666666666 249.6 119.68L234.6666666666667 149.3333333333334z" /> + <glyph glyph-name="cellphone" + unicode="&#xF11C;" + horiz-adv-x="512" d=" M362.6666666666667 42.6666666666667H149.3333333333333V341.3333333333334H362.6666666666667M362.6666666666667 426.6666666666667H149.3333333333333C125.6533333333333 426.6666666666667 106.6666666666667 407.68 106.6666666666667 384V0C106.6666666666667 -23.4666666666667 125.8666666666667 -42.6666666666666 149.3333333333333 -42.6666666666666H362.6666666666667C386.1333333333334 -42.6666666666666 405.3333333333333 -23.4666666666667 405.3333333333333 0V384C405.3333333333333 407.68 386.1333333333334 426.6666666666667 362.6666666666667 426.6666666666667z" /> + <glyph glyph-name="cellphone-android" + unicode="&#xF11D;" + horiz-adv-x="512" d=" M368 64H144V362.6666666666667H368M298.6666666666667 0H213.3333333333333V21.3333333333334H298.6666666666667M341.3333333333333 426.6666666666667H170.6666666666667C135.2533333333333 426.6666666666667 106.6666666666667 398.08 106.6666666666667 362.6666666666667V21.3333333333334C106.6666666666667 -14.08 135.2533333333333 -42.6666666666666 170.6666666666667 -42.6666666666666H341.3333333333333C376.7466666666667 -42.6666666666666 405.3333333333333 -14.08 405.3333333333333 21.3333333333334V362.6666666666667C405.3333333333333 398.08 376.7466666666667 426.6666666666667 341.3333333333333 426.6666666666667z" /> + <glyph glyph-name="cellphone-basic" + unicode="&#xF11E;" + horiz-adv-x="512" d=" M320 405.3333333333333C308.2666666666667 405.3333333333333 298.6666666666667 395.7333333333334 298.6666666666667 384V320H213.3333333333333C189.6533333333333 320 170.6666666666667 301.0133333333333 170.6666666666667 277.3333333333334V21.3333333333334C170.6666666666667 -2.3466666666666 189.6533333333333 -21.3333333333333 213.3333333333333 -21.3333333333333H320C343.68 -21.3333333333333 362.6666666666667 -2.3466666666666 362.6666666666667 21.3333333333334V277.3333333333334C362.6666666666667 293.12 354.1333333333334 306.7733333333333 341.3333333333333 314.0266666666667V384C341.3333333333333 395.7333333333334 331.7333333333334 405.3333333333333 320 405.3333333333333M213.3333333333333 277.3333333333334H320V170.6666666666667H213.3333333333333V277.3333333333334M213.3333333333333 128H234.6666666666667V106.6666666666667H213.3333333333333V128M256 128H277.3333333333333V106.6666666666667H256V128M298.6666666666667 128H320V106.6666666666667H298.6666666666667V128M213.3333333333333 85.3333333333334H234.6666666666667V64H213.3333333333333V85.3333333333334M256 85.3333333333334H277.3333333333333V64H256V85.3333333333334M298.6666666666667 85.3333333333334H320V64H298.6666666666667V85.3333333333334M213.3333333333333 42.6666666666667H234.6666666666667V21.3333333333334H213.3333333333333V42.6666666666667M256 42.6666666666667H277.3333333333333V21.3333333333334H256V42.6666666666667M298.6666666666667 42.6666666666667H320V21.3333333333334H298.6666666666667V42.6666666666667z" /> + <glyph glyph-name="cellphone-dock" + unicode="&#xF11F;" + horiz-adv-x="512" d=" M341.3333333333333 128H170.6666666666667V341.3333333333334H341.3333333333333M341.3333333333333 426.6666666666667H170.6666666666667C146.9866666666667 426.6666666666667 128 407.68 128 384V85.3333333333334C128 61.8666666666667 147.2 42.6666666666667 170.6666666666667 42.6666666666667H341.3333333333333C364.8 42.6666666666667 384 61.8666666666667 384 85.3333333333334V384C384 407.68 364.8 426.6666666666667 341.3333333333333 426.6666666666667M170.6666666666667 -42.6666666666666H341.3333333333333V0H170.6666666666667V-42.6666666666666z" /> + <glyph glyph-name="cellphone-iphone" + unicode="&#xF120;" + horiz-adv-x="512" d=" M341.3333333333333 64H149.3333333333333V362.6666666666667H341.3333333333333M245.3333333333333 -21.3333333333333C227.6266666666667 -21.3333333333333 213.3333333333333 -7.04 213.3333333333333 10.6666666666667S227.6266666666667 42.6666666666667 245.3333333333333 42.6666666666667S277.3333333333333 28.3733333333333 277.3333333333333 10.6666666666667S263.04 -21.3333333333333 245.3333333333333 -21.3333333333333M330.6666666666667 426.6666666666667H160C130.56 426.6666666666667 106.6666666666667 402.7733333333333 106.6666666666667 373.3333333333334V10.6666666666667C106.6666666666667 -18.7733333333333 130.56 -42.6666666666666 160 -42.6666666666666H330.6666666666667C360.1066666666667 -42.6666666666666 384 -18.7733333333333 384 10.6666666666667V373.3333333333334C384 402.7733333333333 360.1066666666667 426.6666666666667 330.6666666666667 426.6666666666667z" /> + <glyph glyph-name="cellphone-link" + unicode="&#xF121;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334H384V234.6666666666667H469.3333333333333M490.6666666666666 277.3333333333334H362.6666666666667C350.9333333333333 277.3333333333334 341.3333333333333 267.7333333333334 341.3333333333333 256V42.6666666666667C341.3333333333333 30.9333333333333 350.9333333333333 21.3333333333334 362.6666666666667 21.3333333333334H490.6666666666666C502.4 21.3333333333334 512 30.9333333333333 512 42.6666666666667V256C512 267.7333333333334 502.4 277.3333333333334 490.6666666666666 277.3333333333334M85.3333333333333 320H469.3333333333333V362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V85.3333333333334H0V21.3333333333334H298.6666666666667V85.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="cellphone-link-off" + unicode="&#xF122;" + horiz-adv-x="512" d=" M490.6666666666666 277.3333333333334H362.6666666666667C350.9333333333333 277.3333333333334 341.3333333333333 267.7333333333334 341.3333333333333 256V166.8266666666667L384 124.16V234.6666666666667H469.3333333333333V85.3333333333334H422.8266666666667L486.8266666666667 21.3333333333334H490.6666666666666C502.4 21.3333333333334 512 30.9333333333333 512 42.6666666666667V256C512 267.7333333333334 502.4 277.3333333333334 490.6666666666666 277.3333333333334M85.3333333333333 314.24L314.24 85.3333333333334H85.3333333333333V314.24M40.96 412.8L13.8666666666667 385.7066666666667L52.6933333333333 346.88C46.5066666666667 339.6266666666667 42.6666666666667 330.6666666666667 42.6666666666667 320V85.3333333333334H0V21.3333333333334H378.24L428.3733333333334 -28.8L455.4666666666667 -1.7066666666667L82.9866666666667 370.7733333333333L40.96 412.8M469.3333333333333 320V362.6666666666667H145.4933333333334L188.16 320H469.3333333333333z" /> + <glyph glyph-name="cellphone-settings" + unicode="&#xF123;" + horiz-adv-x="512" d=" M341.3333333333333 106.6666666666667H170.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 448H170.6666666666667C147.2 448 128 428.8 128 405.3333333333333V64C128 40.5333333333333 147.2 21.3333333333334 170.6666666666667 21.3333333333334H341.3333333333333C364.8 21.3333333333334 384 40.5333333333333 384 64V405.3333333333333C384 428.8 364.8 448 341.3333333333333 448M320 -64H362.6666666666667V-21.3333333333333H320M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="certificate" + unicode="&#xF124;" + horiz-adv-x="512" d=" M85.3333333333333 384C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V128C42.6666666666667 104.5333333333333 61.8666666666667 85.3333333333334 85.3333333333333 85.3333333333334H256V-21.3333333333333L320 42.6666666666667L384 -21.3333333333333V85.3333333333334H426.6666666666667C450.1333333333334 85.3333333333334 469.3333333333333 104.5333333333333 469.3333333333333 128V341.3333333333334C469.3333333333333 364.8 450.1333333333334 384 426.6666666666667 384H85.3333333333333M256 341.3333333333334L320 298.6666666666667L384 341.3333333333334V266.6666666666667L448 234.6666666666667L384 202.6666666666667V128L320 170.6666666666667L256 128V202.6666666666667L192 234.6666666666667L256 266.6666666666667V341.3333333333334M85.3333333333333 341.3333333333334H192V298.6666666666667H85.3333333333333V341.3333333333334M85.3333333333333 256H149.3333333333333V213.3333333333334H85.3333333333333V256M85.3333333333333 170.6666666666667H192V128H85.3333333333333V170.6666666666667z" /> + <glyph glyph-name="chair-school" + unicode="&#xF125;" + horiz-adv-x="512" d=" M469.3333333333333 341.3333333333334V298.6666666666667H362.6666666666667L288.64 192H341.3333333333333V149.3333333333334H308.48L387.6266666666667 -21.3333333333333H340.6933333333334L320.8533333333334 21.3333333333334H136.1066666666667L114.1333333333333 -21.3333333333333H66.1333333333333L154.24 149.3333333333334H149.3333333333333C139.7333333333333 149.3333333333334 131.6266666666667 155.7333333333334 128.8533333333333 164.2666666666667L61.2266666666667 366.0800000000001L81.4933333333333 373.3333333333334C92.5866666666667 376.7466666666667 104.7466666666667 370.56 108.3733333333333 359.4666666666667L164.6933333333333 192H258.1333333333334L332.16 298.6666666666667H256V341.3333333333334H469.3333333333333M202.6666666666667 149.3333333333334L158.2933333333333 64H301.0133333333333L261.5466666666666 149.3333333333334H202.6666666666667z" /> + <glyph glyph-name="chart-arc" + unicode="&#xF126;" + horiz-adv-x="512" d=" M345.1733333333333 29.8666666666667L302.2933333333333 104.1066666666667C323.2 119.4666666666667 337.7066666666667 143.36 340.6933333333334 170.6666666666667H426.6666666666667C423.04 111.7866666666667 391.4666666666667 60.5866666666667 345.1733333333333 29.8666666666667M277.3333333333333 298.0266666666667V384C369.0666666666667 378.4533333333334 442.4533333333334 305.0666666666667 448 213.3333333333334H362.0266666666667C357.12 257.92 321.92 293.12 277.3333333333333 298.0266666666667M149.3333333333333 181.3333333333334C149.3333333333333 167.68 152.1066666666667 154.6666666666667 157.44 142.9333333333333L83.2 100.0533333333334C70.8266666666667 124.5866666666667 64 152.1066666666667 64 181.3333333333334C64 277.9733333333334 139.52 356.9066666666667 234.6666666666667 362.6666666666667V276.6933333333334C186.6666666666667 271.36 149.3333333333333 230.8266666666667 149.3333333333333 181.3333333333334M245.3333333333333 0C181.9733333333333 0 126.2933333333333 32 93.8666666666667 81.4933333333333L168.1066666666667 124.3733333333333C185.6 100.6933333333333 213.3333333333333 85.3333333333334 245.3333333333333 85.3333333333334C258.9866666666667 85.3333333333334 272 88.1066666666667 283.7333333333334 93.44L326.6133333333334 19.2C302.08 6.8266666666667 274.56 0 245.3333333333333 0z" /> + <glyph glyph-name="chart-areaspline" + unicode="&#xF127;" + horiz-adv-x="512" d=" M372.2666666666667 124.16L469.3333333333333 292.0533333333334V0H42.6666666666667V384H85.3333333333333V116.48L202.6666666666667 320L341.3333333333333 239.36L431.7866666666667 395.7333333333334L468.6933333333334 374.4000000000001L357.12 181.3333333333334L218.2400000000001 261.3333333333334L91.9466666666667 42.6666666666667H140.16L233.8133333333333 203.9466666666667L372.2666666666667 124.16z" /> + <glyph glyph-name="chart-bar" + unicode="&#xF128;" + horiz-adv-x="512" d=" M469.3333333333333 0H42.6666666666667V384H85.3333333333333V42.6666666666667H128V234.6666666666667H213.3333333333333V42.6666666666667H256V320H341.3333333333333V42.6666666666667H384V149.3333333333334H469.3333333333333V0z" /> + <glyph glyph-name="chart-bubble" + unicode="&#xF5E3;" + horiz-adv-x="512" d=" M153.6 209.0666666666667C191.36 209.0666666666667 221.8666666666667 178.5600000000001 221.8666666666667 140.8000000000001C221.8666666666667 103.0400000000001 191.36 72.5333333333334 153.6 72.5333333333334C115.84 72.5333333333334 85.3333333333333 103.0400000000001 85.3333333333333 140.8000000000001C85.3333333333333 178.5600000000001 115.84 209.0666666666667 153.6 209.0666666666667M315.7333333333334 106.6666666666667C339.2 106.6666666666667 358.4 87.4666666666667 358.4 64S339.2 21.3333333333334 315.7333333333334 21.3333333333334S273.0666666666667 40.5333333333333 273.0666666666667 64S292.2666666666667 106.6666666666667 315.7333333333334 106.6666666666667M324.2666666666667 362.6666666666667C380.8 362.6666666666667 426.6666666666667 316.8 426.6666666666667 260.2666666666667S380.8 157.8666666666667 324.2666666666667 157.8666666666667S221.8666666666666 203.7333333333333 221.8666666666666 260.2666666666667S267.7333333333334 362.6666666666667 324.2666666666667 362.6666666666667z" /> + <glyph glyph-name="chart-gantt" + unicode="&#xF66C;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334H213.3333333333333V405.3333333333333H256V-21.3333333333333H213.3333333333333V64H128V128H213.3333333333333V170.6666666666667H85.3333333333333V234.6666666666667H213.3333333333333V277.3333333333334H42.6666666666667V341.3333333333334M298.6666666666667 341.3333333333334H362.6666666666667V277.3333333333334H298.6666666666667V341.3333333333334M298.6666666666667 234.6666666666667H405.3333333333333V170.6666666666667H298.6666666666667V234.6666666666667M298.6666666666667 128H469.3333333333333V64H298.6666666666667V128z" /> + <glyph glyph-name="chart-histogram" + unicode="&#xF129;" + horiz-adv-x="512" d=" M64 384H106.6666666666667V170.6666666666667H192V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667V128H448V0H64V384z" /> + <glyph glyph-name="chart-line" + unicode="&#xF12A;" + horiz-adv-x="512" d=" M341.3333333333333 196.6933333333334L431.7866666666667 353.0666666666667L468.6933333333334 331.7333333333334L357.12 138.6666666666667L218.2400000000001 218.6666666666667L116.48 42.6666666666667H469.3333333333333V0H42.6666666666667V384H85.3333333333333V73.8133333333334L202.6666666666667 277.3333333333334L341.3333333333333 196.6933333333334z" /> + <glyph glyph-name="chart-pie" + unicode="&#xF12B;" + horiz-adv-x="512" d=" M448 213.3333333333334H277.3333333333333V384C371.6266666666667 384 448 307.6266666666667 448 213.3333333333334M405.3333333333333 170.6666666666667C405.3333333333333 111.36 375.04 59.0933333333334 329.1733333333333 28.3733333333333L247.04 170.6666666666667H405.3333333333333M234.6666666666667 0C175.36 0 123.0933333333333 30.2933333333334 92.3733333333333 76.16L230.8266666666667 156.16L310.6133333333334 17.7066666666667C288 6.4 261.9733333333334 0 234.6666666666667 0M64 170.6666666666667C64 264.9600000000001 140.3733333333333 341.3333333333334 234.6666666666667 341.3333333333334V183.04L81.7066666666667 94.72C70.4 117.3333333333334 64 143.36 64 170.6666666666667z" /> + <glyph glyph-name="chart-scatterplot-hexbin" + unicode="&#xF66D;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H85.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M298.6666666666667 138.6666666666667L256 64H169.3866666666667L126.2933333333333 138.6666666666667L169.3866666666667 213.3333333333334H256L298.6666666666667 138.6666666666667M300.3733333333334 309.3333333333334L257.28 234.6666666666667H170.6666666666667L128 309.3333333333334L170.6666666666667 384H257.28L300.3733333333333 309.3333333333334M453.3333333333333 224L410.24 149.3333333333334H324.0533333333334L280.9600000000001 224L324.0533333333333 298.6666666666667H410.24L453.3333333333333 224z" /> + <glyph glyph-name="chart-timeline" + unicode="&#xF66E;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H85.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M149.3333333333333 234.6666666666667H362.6666666666667V170.6666666666667H149.3333333333333V234.6666666666667M234.6666666666667 128H448V64H234.6666666666667V128M128 362.6666666666667H469.3333333333333V277.3333333333334H426.6666666666667V320H170.6666666666667V277.3333333333334H128V362.6666666666667z" /> + <glyph glyph-name="check" + unicode="&#xF12C;" + horiz-adv-x="512" d=" M448 298.6666666666667L192 42.6666666666667L74.6666666666667 160L104.7466666666667 190.0800000000001L192 103.04L417.92 328.7466666666667L448 298.6666666666667z" /> + <glyph glyph-name="check-all" + unicode="&#xF12D;" + horiz-adv-x="512" d=" M8.7466666666667 161.92L128 42.6666666666667L158.08 72.96L39.04 192M474.4533333333334 328.9600000000001L248.7466666666667 103.04L160 192L129.4933333333334 161.92L248.7466666666667 42.6666666666667L504.7466666666667 298.6666666666667M384 298.6666666666667L353.92 328.9600000000001L218.4533333333333 193.4933333333334L248.7466666666667 163.4133333333334L384 298.6666666666667z" /> + <glyph glyph-name="check-circle" + unicode="&#xF5E0;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M234.6666666666667 96L384 245.3333333333334L353.92 275.4133333333334L234.6666666666667 156.3733333333333L168.7466666666667 222.08L138.6666666666667 192L234.6666666666667 96z" /> + <glyph glyph-name="check-circle-outline" + unicode="&#xF5E1;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667M234.6666666666667 96L138.6666666666667 192L168.7466666666667 222.08L234.6666666666667 156.3733333333333L353.92 275.4133333333334L384 245.3333333333334L234.6666666666667 96z" /> + <glyph glyph-name="checkbox-blank" + unicode="&#xF12E;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="checkbox-blank-circle" + unicode="&#xF12F;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-blank-circle-outline" + unicode="&#xF130;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-blank-outline" + unicode="&#xF131;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M405.3333333333333 341.3333333333334V42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333z" /> + <glyph glyph-name="checkbox-marked" + unicode="&#xF132;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L106.6666666666667 192L136.7466666666667 222.2933333333334L213.3333333333333 145.7066666666667L375.2533333333334 307.6266666666667L405.3333333333333 277.3333333333334M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="checkbox-marked-circle" + unicode="&#xF133;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L106.6666666666667 192L136.7466666666667 222.2933333333334L213.3333333333333 145.7066666666667L375.2533333333334 307.6266666666667L405.3333333333333 277.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="checkbox-marked-circle-outline" + unicode="&#xF134;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667C272.2133333333333 362.6666666666667 288 360.32 302.9333333333333 356.0533333333334L336.4266666666666 389.5466666666667C311.68 399.7866666666667 284.5866666666667 405.3333333333333 256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192M168.7466666666667 232.96L138.6666666666667 202.6666666666667L234.6666666666667 106.6666666666667L448 320L417.92 350.2933333333334L234.6666666666667 167.04L168.7466666666667 232.96z" /> + <glyph glyph-name="checkbox-marked-outline" + unicode="&#xF135;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H320V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V213.3333333333334H405.3333333333333M168.7466666666667 232.96L138.6666666666667 202.6666666666667L234.6666666666667 106.6666666666667L448 320L417.92 350.2933333333334L234.6666666666667 167.04L168.7466666666667 232.96z" /> + <glyph glyph-name="checkbox-multiple-blank" + unicode="&#xF136;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkbox-multiple-blank-circle" + unicode="&#xF63B;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-blank-circle-outline" + unicode="&#xF63C;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M298.6666666666667 362.6666666666667C369.4933333333334 362.6666666666667 426.6666666666667 305.2800000000001 426.6666666666667 234.6666666666667C426.6666666666667 163.84 369.4933333333334 106.6666666666667 298.6666666666667 106.6666666666667C228.0533333333333 106.6666666666667 170.6666666666667 164.0533333333334 170.6666666666667 234.6666666666667S228.0533333333333 362.6666666666667 298.6666666666667 362.6666666666667M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-blank-outline" + unicode="&#xF137;" + horiz-adv-x="512" d=" M426.6666666666667 106.6666666666667V362.6666666666667H170.6666666666667V106.6666666666667H426.6666666666667M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkbox-multiple-marked" + unicode="&#xF138;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333M277.3333333333333 149.3333333333334L426.6666666666667 298.6666666666667L396.5866666666667 328.7466666666667L277.3333333333333 209.7066666666667L211.4133333333333 275.4133333333334L181.3333333333333 245.3333333333334L277.3333333333333 149.3333333333334z" /> + <glyph glyph-name="checkbox-multiple-marked-circle" + unicode="&#xF63D;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667S392.9600000000001 405.3333333333333 298.6666666666667 405.3333333333333M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001M385.92 318.2933333333334L416 288L277.3333333333333 149.3333333333334L196.48 230.1866666666667L226.7733333333334 260.48L277.3333333333333 209.7066666666667" /> + <glyph glyph-name="checkbox-multiple-marked-circle-outline" + unicode="&#xF63E;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333C204.3733333333333 405.3333333333333 128 328.9600000000001 128 234.6666666666667S204.3733333333333 64 298.6666666666667 64S469.3333333333333 140.3733333333333 469.3333333333333 234.6666666666667H426.6666666666667C426.6666666666667 163.84 369.4933333333334 106.6666666666667 298.6666666666667 106.6666666666667C228.0533333333333 106.6666666666667 170.6666666666667 164.0533333333334 170.6666666666667 234.6666666666667S228.0533333333333 362.6666666666667 298.6666666666667 362.6666666666667C307.84 362.6666666666667 317.0133333333333 361.6 325.76 359.68L360.1066666666667 393.8133333333334C340.48 401.4933333333334 320 405.3333333333333 298.6666666666667 405.3333333333333M439.2533333333334 371.6266666666667L298.6666666666667 231.04L247.8933333333334 281.8133333333334L217.8133333333333 251.52L298.6666666666667 170.6666666666667L469.3333333333333 341.3333333333334M105.1733333333333 323.8400000000001C65.7066666666667 291.4133333333334 42.6666666666667 242.9866666666667 42.6666666666667 192C42.6666666666667 97.7066666666667 119.04 21.3333333333334 213.3333333333333 21.3333333333334C226.9866666666667 21.3333333333334 240.4266666666667 23.04 253.44 26.24C215.8933333333333 34.5600000000001 181.3333333333333 53.3333333333334 152.96 79.1466666666667C111.36 101.3333333333334 85.3333333333333 144.8533333333334 85.3333333333333 192C85.3333333333333 198.4 85.9733333333333 204.5866666666667 86.8266666666667 210.9866666666667C85.9733333333333 218.88 85.3333333333333 226.7733333333334 85.3333333333333 234.6666666666667C85.3333333333333 265.3866666666667 92.16 295.8933333333333 105.1733333333333 323.8400000000001z" /> + <glyph glyph-name="checkbox-multiple-marked-outline" + unicode="&#xF139;" + horiz-adv-x="512" d=" M426.6666666666667 106.6666666666667V234.6666666666667H469.3333333333333V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H170.6666666666667C146.9866666666667 64 128 83.2 128 106.6666666666667V362.6666666666667C128 386.3466666666667 146.9866666666667 405.3333333333333 170.6666666666667 405.3333333333333H341.3333333333333V362.6666666666667H170.6666666666667V106.6666666666667H426.6666666666667M232.7466666666667 296.9600000000001L298.6666666666667 231.04L439.2533333333334 371.6266666666667L469.3333333333333 341.3333333333334L298.6666666666667 170.6666666666667L202.6666666666667 266.6666666666667L232.7466666666667 296.9600000000001M341.3333333333333 21.3333333333334V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V298.6666666666667H85.3333333333333V21.3333333333334H341.3333333333333z" /> + <glyph glyph-name="checkerboard" + unicode="&#xF13A;" + horiz-adv-x="512" d=" M64 384H448V0H64V384M106.6666666666667 341.3333333333334V192H256V42.6666666666667H405.3333333333333V192H256V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="chemical-weapon" + unicode="&#xF13B;" + horiz-adv-x="512" d=" M234.6666666666667 280.9600000000001C209.7066666666667 289.7066666666667 192 313.6 192 341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 313.3866666666667 302.08 289.7066666666667 277.3333333333333 280.9600000000001V221.0133333333333C270.5066666666667 222.9333333333333 263.4666666666667 224 256 224S241.4933333333334 222.9333333333333 234.6666666666667 221.0133333333333V280.9600000000001M390.4 -2.1333333333333C366.08 11.7333333333333 354.56 38.8266666666667 359.2533333333334 64.8533333333334L307.2 94.9333333333333C317.44 104.7466666666667 325.12 117.3333333333334 328.5333333333333 131.84L380.5866666666667 101.76C400.64 119.04 430.08 122.4533333333334 454.1866666666666 108.5866666666667C484.9066666666666 90.8800000000001 495.36 51.84 477.6533333333333 21.3333333333334C459.9466666666667 -9.3866666666667 420.9066666666667 -19.84 390.4 -2.1333333333333M57.6 108.8C81.7066666666667 122.6666666666667 111.1466666666667 119.04 131.2 101.9733333333334L183.4666666666667 132.0533333333334C186.88 117.3333333333334 194.3466666666667 104.96 204.8 95.1466666666667L152.5333333333334 65.0666666666667C157.44 39.0400000000001 145.7066666666667 11.7333333333333 121.6 -2.1333333333333C90.88 -19.8399999999999 51.84 -9.3866666666666 34.1333333333334 21.3333333333334C16.4266666666667 51.8400000000001 26.88 91.0933333333334 57.6 108.8000000000001M298.6666666666667 149.3333333333334C298.6666666666667 125.8666666666667 279.4666666666667 106.6666666666667 256 106.6666666666667C232.32 106.6666666666667 213.3333333333333 125.8666666666667 213.3333333333333 149.3333333333334S232.5333333333334 192 256 192C279.68 192 298.6666666666667 172.8 298.6666666666667 149.3333333333334M362.6666666666667 149.3333333333334L362.0266666666667 137.1733333333334L330.6666666666667 155.52C328.5333333333333 178.3466666666667 316.3733333333333 198.1866666666667 298.6666666666667 210.7733333333333V247.2533333333334C336.4266666666666 230.6133333333334 362.6666666666667 193.0666666666667 362.6666666666667 149.3333333333334M319.36 63.36C301.6533333333333 50.3466666666667 279.68 42.6666666666667 256 42.6666666666667S210.3466666666666 50.3466666666667 192.64 64L224 81.7066666666667C233.8133333333334 77.2266666666666 244.6933333333334 74.6666666666667 256 74.6666666666667S277.9733333333333 77.2266666666667 288 81.7066666666667L319.36 63.36M149.9733333333333 137.3866666666667L149.3333333333333 149.3333333333334C149.3333333333333 193.0666666666667 175.5733333333333 230.6133333333334 213.3333333333333 247.04V210.56C195.6266666666667 198.1866666666667 183.4666666666667 178.3466666666667 181.3333333333333 155.7333333333334L149.9733333333333 137.3866666666667z" /> + <glyph glyph-name="chevron-double-down" + unicode="&#xF13C;" + horiz-adv-x="512" d=" M353.92 328.7466666666667L384 298.6666666666667L256 170.6666666666667L128 298.6666666666667L158.08 328.7466666666667L256 231.04L353.92 328.7466666666667M353.92 200.7466666666667L384 170.6666666666667L256 42.6666666666667L128 170.6666666666667L158.08 200.7466666666667L256 103.04L353.92 200.7466666666667z" /> + <glyph glyph-name="chevron-double-left" + unicode="&#xF13D;" + horiz-adv-x="512" d=" M392.7466666666667 289.92L362.6666666666667 320L234.6666666666667 192L362.6666666666667 64L392.7466666666667 94.08L295.04 192L392.7466666666667 289.92M264.7466666666667 289.92L234.6666666666667 320L106.6666666666667 192L234.6666666666667 64L264.7466666666667 94.08L167.04 192L264.7466666666667 289.92z" /> + <glyph glyph-name="chevron-double-right" + unicode="&#xF13E;" + horiz-adv-x="512" d=" M119.2533333333333 289.92L149.3333333333333 320L277.3333333333333 192L149.3333333333333 64L119.2533333333333 94.08L216.96 192L119.2533333333333 289.92M247.2533333333334 289.92L277.3333333333333 320L405.3333333333333 192L277.3333333333333 64L247.2533333333334 94.08L344.9600000000001 192L247.2533333333334 289.92z" /> + <glyph glyph-name="chevron-double-up" + unicode="&#xF13F;" + horiz-adv-x="512" d=" M158.08 55.2533333333333L128 85.3333333333334L256 213.3333333333334L384 85.3333333333334L353.92 55.2533333333333L256 152.96L158.08 55.2533333333333M158.08 183.2533333333333L128 213.3333333333334L256 341.3333333333334L384 213.3333333333334L353.92 183.2533333333333L256 280.9600000000001L158.08 183.2533333333333z" /> + <glyph glyph-name="chevron-down" + unicode="&#xF140;" + horiz-adv-x="512" d=" M158.08 264.9600000000001L256 167.04L353.92 264.9600000000001L384 234.6666666666667L256 106.6666666666667L128 234.6666666666667L158.08 264.9600000000001z" /> + <glyph glyph-name="chevron-left" + unicode="&#xF141;" + horiz-adv-x="512" d=" M328.7466666666667 94.2933333333334L231.04 192L328.7466666666667 289.92L298.6666666666667 320L170.6666666666667 192L298.6666666666667 64L328.7466666666667 94.2933333333334z" /> + <glyph glyph-name="chevron-right" + unicode="&#xF142;" + horiz-adv-x="512" d=" M183.2533333333333 94.2933333333334L280.96 192L183.2533333333333 289.92L213.3333333333333 320L341.3333333333333 192L213.3333333333333 64L183.2533333333333 94.2933333333334z" /> + <glyph glyph-name="chevron-up" + unicode="&#xF143;" + horiz-adv-x="512" d=" M158.08 119.2533333333333L256 216.96L353.92 119.2533333333333L384 149.3333333333334L256 277.3333333333334L128 149.3333333333334L158.08 119.2533333333333z" /> + <glyph glyph-name="chip" + unicode="&#xF61A;" + horiz-adv-x="512" d=" M128 362.6666666666667H384V341.3333333333334H448V298.6666666666667H384V256H448V213.3333333333334H384V170.6666666666667H448V128H384V85.3333333333334H448V42.6666666666667H384V21.3333333333334H128V42.6666666666667H64V85.3333333333334H128V128H64V170.6666666666667H128V213.3333333333334H64V256H128V298.6666666666667H64V341.3333333333334H128V362.6666666666667M234.6666666666667 128V64H256V128H234.6666666666667M277.3333333333333 128V64H298.6666666666667V128H277.3333333333333M320 128V64H341.3333333333333V128H320z" /> + <glyph glyph-name="church" + unicode="&#xF144;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333H277.3333333333333V362.6666666666667H320V320H277.3333333333333V247.4666666666667L469.3333333333333 170.6666666666667V128L426.6666666666667 145.0666666666667V-21.3333333333333H298.6666666666667V85.3333333333334C298.6666666666667 108.8 279.4666666666667 128 256 128S213.3333333333333 108.8 213.3333333333333 85.3333333333334V-21.3333333333333H85.3333333333333V145.0666666666667L42.6666666666667 128V170.6666666666667L234.6666666666667 247.4666666666667V320H192V362.6666666666667H234.6666666666667V405.3333333333333M128 21.3333333333334H170.6666666666667V128L149.3333333333333 149.3333333333334L128 128V21.3333333333334M341.3333333333333 21.3333333333334H384V128L362.6666666666667 149.3333333333334L341.3333333333333 128V21.3333333333334z" /> + <glyph glyph-name="cisco-webex" + unicode="&#xF145;" + horiz-adv-x="512" d=" M256 384C362.0266666666667 384 448 298.0266666666667 448 192S362.0266666666667 0 256 0S64 85.9733333333334 64 192S149.9733333333333 384 256 384M126.72 266.6666666666667C85.3333333333333 195.2 109.8666666666667 103.8933333333334 181.3333333333333 62.72C252.8 21.3333333333334 402.1333333333334 280.1066666666667 330.6666666666667 321.2800000000001C259.2 362.6666666666667 167.8933333333333 338.1333333333334 126.72 266.6666666666667z" /> + <glyph glyph-name="city" + unicode="&#xF146;" + horiz-adv-x="512" d=" M405.3333333333333 128H362.6666666666667V170.6666666666667H405.3333333333333M405.3333333333333 42.6666666666667H362.6666666666667V85.3333333333334H405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V341.3333333333334H277.3333333333333M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 128H234.6666666666667V170.6666666666667H277.3333333333333M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M149.3333333333333 213.3333333333334H106.6666666666667V256H149.3333333333333M149.3333333333333 128H106.6666666666667V170.6666666666667H149.3333333333333M149.3333333333333 42.6666666666667H106.6666666666667V85.3333333333334H149.3333333333333M320 213.3333333333334V341.3333333333334L256 405.3333333333333L192 341.3333333333334V298.6666666666667H64V0H448V213.3333333333334H320z" /> + <glyph glyph-name="clipboard" + unicode="&#xF147;" + horiz-adv-x="512" d=" M192 362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667S320 398.08 320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H192M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667S244.2666666666667 341.3333333333334 256 341.3333333333334S277.3333333333333 350.9333333333334 277.3333333333333 362.6666666666667S267.7333333333334 384 256 384z" /> + <glyph glyph-name="clipboard-account" + unicode="&#xF148;" + horiz-adv-x="512" d=" M384 42.6666666666667H128V72.5333333333333C128 115.2 213.3333333333333 138.6666666666666 256 138.6666666666666S384 115.2 384 72.5333333333333M256 298.6666666666667C291.4133333333333 298.6666666666667 320 270.0800000000001 320 234.6666666666667S291.4133333333333 170.6666666666667 256 170.6666666666667S192 199.2533333333333 192 234.6666666666667S220.5866666666667 298.6666666666667 256 298.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-alert" + unicode="&#xF149;" + horiz-adv-x="512" d=" M256 341.3333333333334C244.2666666666667 341.3333333333334 234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384S277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334M277.3333333333333 149.3333333333334H234.6666666666667V277.3333333333334H277.3333333333333M277.3333333333333 64H234.6666666666667V106.6666666666667H277.3333333333333M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-arrow-down" + unicode="&#xF14A;" + horiz-adv-x="512" d=" M256 64L149.3333333333333 170.6666666666667H213.3333333333333V256H298.6666666666667V170.6666666666667H362.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-arrow-left" + unicode="&#xF14B;" + horiz-adv-x="512" d=" M341.3333333333333 128H256V64L149.3333333333333 170.6666666666667L256 277.3333333333334V213.3333333333334H341.3333333333333M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-check" + unicode="&#xF14C;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L128 170.6666666666667L158.08 200.7466666666667L213.3333333333333 145.7066666666667L353.92 286.2933333333334L384 256M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clipboard-outline" + unicode="&#xF14D;" + horiz-adv-x="512" d=" M149.3333333333333 277.3333333333334V320H106.6666666666667V42.6666666666667H405.3333333333333V320H362.6666666666667V277.3333333333334H149.3333333333333M192 362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667S320 398.08 320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667H192M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667S244.2666666666667 341.3333333333334 256 341.3333333333334S277.3333333333333 350.9333333333334 277.3333333333333 362.6666666666667S267.7333333333334 384 256 384z" /> + <glyph glyph-name="clipboard-text" + unicode="&#xF14E;" + horiz-adv-x="512" d=" M362.6666666666667 256H149.3333333333333V298.6666666666667H362.6666666666667M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M298.6666666666667 85.3333333333334H149.3333333333333V128H298.6666666666667M256 384C267.7333333333334 384 277.3333333333333 374.4 277.3333333333333 362.6666666666667S267.7333333333334 341.3333333333334 256 341.3333333333334S234.6666666666667 350.9333333333334 234.6666666666667 362.6666666666667S244.2666666666667 384 256 384M405.3333333333333 384H316.16C307.2 408.7466666666667 283.7333333333334 426.6666666666667 256 426.6666666666667C228.2666666666667 426.6666666666667 204.8 408.7466666666667 195.84 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="clippy" + unicode="&#xF14F;" + horiz-adv-x="512" d=" M320 117.3333333333334C320 87.8933333333334 296.1066666666667 64 266.6666666666667 64S213.3333333333333 87.8933333333334 213.3333333333333 117.3333333333334V154.6666666666667C213.3333333333333 163.4133333333334 220.5866666666667 170.6666666666667 229.3333333333333 170.6666666666667S245.3333333333333 163.4133333333334 245.3333333333333 154.6666666666667V117.3333333333334C245.3333333333333 105.6 254.9333333333333 96 266.6666666666667 96S288 105.6 288 117.3333333333334V194.3466666666667C269.44 200.32 256 216.1066666666667 256 234.6666666666667C256 258.1333333333334 277.3333333333333 277.3333333333334 304 277.3333333333334S352 258.1333333333334 352 234.6666666666667C352 216.1066666666667 338.56 200.32 320 194.3466666666667V117.3333333333334M176 277.3333333333334C202.6666666666667 277.3333333333334 224 258.1333333333334 224 234.6666666666667C224 216.1066666666667 210.56 200.32 192 194.3466666666667V80C192 41.8133333333334 223.1466666666667 10.6666666666667 261.3333333333333 10.6666666666667S330.6666666666667 41.8133333333334 330.6666666666667 80V154.6666666666667C330.6666666666667 163.4133333333334 337.92 170.6666666666667 346.6666666666667 170.6666666666667S362.6666666666667 163.4133333333334 362.6666666666667 154.6666666666667V80C362.6666666666667 24.1066666666667 317.2266666666667 -21.3333333333333 261.3333333333333 -21.3333333333333S160 24.1066666666667 160 80V194.3466666666667C141.44 200.32 128 216.1066666666667 128 234.6666666666667C128 258.1333333333334 149.3333333333333 277.3333333333334 176 277.3333333333334M214.6133333333334 317.2266666666667L205.44 286.0800000000001C196.6933333333333 290.7733333333333 186.6666666666667 293.3333333333334 176 293.3333333333334C156.5866666666667 293.3333333333334 139.3066666666667 284.8 128.64 271.5733333333334L103.04 290.7733333333334C116.48 307.8400000000001 136.7466666666667 320 160 324.0533333333334V325.3333333333334C160 369.4933333333334 195.84 405.3333333333333 240 405.3333333333333C284.16 405.3333333333333 320 369.4933333333334 320 325.3333333333334V324.0533333333334C343.2533333333334 320 363.52 307.8400000000001 376.9600000000001 290.7733333333334L351.36 271.5733333333334C340.6933333333334 284.8 323.4133333333334 293.3333333333334 304 293.3333333333334C293.3333333333334 293.3333333333334 283.3066666666667 290.7733333333333 274.56 286.0800000000001L265.3866666666667 317.2266666666667C272.4266666666667 320 280.1066666666667 322.7733333333333 288 324.0533333333334V325.3333333333334C288 352 266.6666666666667 373.3333333333334 240.0000000000001 373.3333333333334S192 352 192 325.3333333333334V324.0533333333334C199.8933333333333 322.7733333333334 207.5733333333333 320 214.6133333333334 317.2266666666667M304 250.6666666666667C292.2666666666667 250.6666666666667 282.6666666666667 243.4133333333334 282.6666666666667 234.6666666666667S292.2666666666667 218.6666666666667 304 218.6666666666667S325.3333333333333 225.92 325.3333333333333 234.6666666666667S315.7333333333334 250.6666666666667 304 250.6666666666667M176 250.6666666666667C164.2666666666667 250.6666666666667 154.6666666666667 243.4133333333334 154.6666666666667 234.6666666666667S164.2666666666667 218.6666666666667 176 218.6666666666667S197.3333333333333 225.92 197.3333333333333 234.6666666666667S187.7333333333334 250.6666666666667 176 250.6666666666667z" /> + <glyph glyph-name="clock" + unicode="&#xF150;" + horiz-adv-x="512" d=" M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M266.6666666666667 298.6666666666667V186.6666666666667L362.6666666666667 129.7066666666667L346.6666666666667 103.4666666666667L234.6666666666667 170.6666666666667V298.6666666666667H266.6666666666667z" /> + <glyph glyph-name="clock-alert" + unicode="&#xF5CE;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333C304 -21.3333333333333 348.3733333333333 -5.1199999999999 384 21.3333333333334V79.36C352.64 43.9466666666667 306.9866666666667 21.3333333333334 256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667C327.68 362.6666666666667 388.9066666666667 318.5066666666667 414.08 256H459.52C432.4266666666666 342.6133333333334 352 405.3333333333333 256 405.3333333333333M234.6666666666667 298.6666666666667V170.6666666666667L346.6666666666667 103.4666666666667L362.6666666666667 129.7066666666667L266.6666666666667 186.6666666666668V298.6666666666667H234.6666666666667M426.6666666666667 213.3333333333334V64H469.3333333333333V213.3333333333334H426.6666666666667M426.6666666666667 21.3333333333334V-21.3333333333333H469.3333333333333V21.3333333333334H426.6666666666667z" /> + <glyph glyph-name="clock-end" + unicode="&#xF151;" + horiz-adv-x="512" d=" M256 426.6666666666667C173.6533333333333 426.6666666666667 106.6666666666667 359.68 106.6666666666667 277.3333333333334C106.6666666666667 194.7733333333333 173.44 128 256 128C338.3466666666667 128 405.3333333333333 194.7733333333333 405.3333333333333 277.3333333333334C405.3333333333333 359.68 338.3466666666667 426.6666666666667 256 426.6666666666667M256 380.8C312.96 380.8 359.4666666666667 334.5066666666667 359.4666666666667 277.3333333333334C359.4666666666667 220.16 312.9600000000001 173.8666666666667 256 173.8666666666667C198.8266666666667 173.8666666666667 152.5333333333334 220.16 152.5333333333334 277.3333333333334C152.5333333333334 334.5066666666667 198.8266666666667 380.8 256 380.8M234.6666666666667 341.3333333333334V262.6133333333334L302.72 223.36L318.72 251.0933333333334L266.6666666666667 281.1733333333334V341.3333333333334M320 106.6666666666667V42.6666666666667H64V0H320V-64L405.3333333333333 21.3333333333334M405.3333333333333 21.3333333333334V-64H448V106.6666666666667H405.3333333333333" /> + <glyph glyph-name="clock-fast" + unicode="&#xF152;" + horiz-adv-x="512" d=" M320 362.6666666666667C414.2933333333334 362.6666666666667 490.6666666666666 286.2933333333334 490.6666666666666 192S414.2933333333334 21.3333333333334 320 21.3333333333334S149.3333333333333 97.7066666666667 149.3333333333333 192S225.7066666666667 362.6666666666667 320 362.6666666666667M320 320C249.3866666666667 320 192 262.6133333333334 192 192S249.3866666666667 64 320 64S448 121.3866666666667 448 192S390.6133333333333 320 320 320M298.6666666666667 277.3333333333334H330.6666666666667V196.6933333333334L380.3733333333333 146.9866666666667L357.76 124.3733333333333L298.6666666666667 183.4666666666667V277.3333333333334M42.6666666666667 64C30.9333333333333 64 21.3333333333333 73.6 21.3333333333333 85.3333333333334S30.9333333333333 106.6666666666667 42.6666666666667 106.6666666666667H124.3733333333333C130.9866666666667 91.52 139.52 77.2266666666667 149.3333333333333 64H42.6666666666667M64 170.6666666666667C52.2666666666667 170.6666666666667 42.6666666666667 180.2666666666667 42.6666666666667 192S52.2666666666667 213.3333333333334 64 213.3333333333334H107.7333333333333L106.6666666666667 192L107.7333333333333 170.6666666666667H64M85.3333333333333 277.3333333333334C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667S73.6 320 85.3333333333333 320H149.3333333333333C139.52 306.7733333333333 130.9866666666667 292.48 124.3733333333333 277.3333333333334H85.3333333333333z" /> + <glyph glyph-name="clock-in" + unicode="&#xF153;" + horiz-adv-x="512" d=" M47.1466666666667 431.1466666666667L16.8533333333333 400.8533333333334L102.4 315.52L64 277.3333333333334H170.6666666666667V384L132.48 345.6M256 277.3333333333334C173.6533333333333 277.3333333333334 106.6666666666667 210.56 106.6666666666667 128S173.44 -21.3333333333333 256 -21.3333333333333C338.3466666666667 -21.3333333333333 405.3333333333333 45.44 405.3333333333333 128S338.56 277.3333333333334 256 277.3333333333334M256 231.4666666666667C312.96 231.4666666666667 359.4666666666667 185.1733333333334 359.4666666666667 128C359.4666666666667 70.8266666666667 313.1733333333334 24.5333333333333 256 24.5333333333333C198.8266666666667 24.5333333333333 152.5333333333334 70.8266666666667 152.5333333333334 128C152.5333333333334 185.1733333333333 198.8266666666667 231.4666666666667 256 231.4666666666667M234.6666666666667 192V113.28L302.72 74.0266666666666L318.72 101.76L266.6666666666667 131.84V192" /> + <glyph glyph-name="clock-out" + unicode="&#xF154;" + horiz-adv-x="512" d=" M384 426.6666666666667L422.4 388.48L336.8533333333334 303.1466666666667L367.1466666666667 272.8533333333334L452.48 358.1866666666667L490.6666666666666 320V426.6666666666667M256 277.3333333333334C173.6533333333333 277.3333333333334 106.6666666666667 210.56 106.6666666666667 128S173.44 -21.3333333333333 256 -21.3333333333333C338.3466666666667 -21.3333333333333 405.3333333333333 45.44 405.3333333333333 128S338.56 277.3333333333334 256 277.3333333333334M256 231.4666666666667C312.96 231.4666666666667 359.4666666666667 185.1733333333334 359.4666666666667 128C359.4666666666667 70.8266666666667 313.1733333333334 24.5333333333333 256 24.5333333333333C198.8266666666667 24.5333333333333 152.5333333333334 70.8266666666667 152.5333333333334 128C152.5333333333334 185.1733333333333 198.8266666666667 231.4666666666667 256 231.4666666666667M234.6666666666667 192V113.28L302.72 74.0266666666666L318.72 101.76L266.6666666666667 131.84V192" /> + <glyph glyph-name="clock-start" + unicode="&#xF155;" + horiz-adv-x="512" d=" M256 426.6666666666667C173.6533333333333 426.6666666666667 106.6666666666667 359.68 106.6666666666667 277.3333333333334C106.6666666666667 194.7733333333333 173.44 128 256 128C338.3466666666667 128 405.3333333333333 194.7733333333333 405.3333333333333 277.3333333333334C405.3333333333333 359.68 338.3466666666667 426.6666666666667 256 426.6666666666667M256 380.8C312.96 380.8 359.4666666666667 334.5066666666667 359.4666666666667 277.3333333333334C359.4666666666667 220.16 312.9600000000001 173.8666666666667 256 173.8666666666667C198.8266666666667 173.8666666666667 152.5333333333334 220.16 152.5333333333334 277.3333333333334C152.5333333333334 334.5066666666667 198.8266666666667 380.8 256 380.8M234.6666666666667 341.3333333333334V262.6133333333334L302.72 223.36L318.72 251.0933333333334L266.6666666666667 281.1733333333334V341.3333333333334M85.3333333333333 106.6666666666667V-64H128V0H384V-64L469.3333333333333 21.3333333333334L384 106.6666666666667V42.6666666666667H128V106.6666666666667" /> + <glyph glyph-name="close" + unicode="&#xF156;" + horiz-adv-x="512" d=" M405.3333333333333 311.2533333333334L375.2533333333334 341.3333333333334L256 222.08L136.7466666666667 341.3333333333334L106.6666666666667 311.2533333333334L225.92 192L106.6666666666667 72.7466666666667L136.7466666666667 42.6666666666667L256 161.92L375.2533333333334 42.6666666666667L405.3333333333333 72.7466666666667L286.08 192L405.3333333333333 311.2533333333334z" /> + <glyph glyph-name="close-box" + unicode="&#xF157;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M332.8 85.3333333333334L256 162.1333333333333L179.2 85.3333333333334L149.3333333333333 115.2000000000001L226.1333333333334 192L149.3333333333333 268.8L179.2 298.6666666666667L256 221.8666666666667L332.8 298.6666666666667L362.6666666666667 268.8L285.8666666666667 192L362.6666666666667 115.2000000000001L332.8 85.3333333333334z" /> + <glyph glyph-name="close-box-outline" + unicode="&#xF158;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667M362.6666666666667 268.8L285.8666666666667 192L362.6666666666667 115.2000000000001L332.8 85.3333333333334L256 162.1333333333333L179.2 85.3333333333334L149.3333333333333 115.2000000000001L226.1333333333334 192L149.3333333333333 268.8L179.2 298.6666666666667L256 221.8666666666667L332.8 298.6666666666667L362.6666666666667 268.8z" /> + <glyph glyph-name="close-circle" + unicode="&#xF159;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.9733333333334 405.3333333333333 469.3333333333333 309.9733333333334 469.3333333333333 192S373.9733333333334 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.0266666666666 42.6666666666667 192S138.0266666666667 405.3333333333333 256 405.3333333333333M332.5866666666667 298.6666666666667L256 222.08L179.4133333333333 298.6666666666667L149.3333333333333 268.5866666666667L225.92 192L149.3333333333333 115.4133333333334L179.4133333333333 85.3333333333334L256 161.92L332.5866666666667 85.3333333333334L362.6666666666667 115.4133333333334L286.08 192L362.6666666666667 268.5866666666667L332.5866666666667 298.6666666666667z" /> + <glyph glyph-name="close-circle-outline" + unicode="&#xF15A;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.9733333333334 42.6666666666667 192S138.0266666666667 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.0266666666666 469.3333333333333 192S373.9733333333334 405.3333333333333 256 405.3333333333333M311.2533333333334 277.3333333333334L256 222.08L200.7466666666667 277.3333333333334L170.6666666666667 247.2533333333334L225.92 192L170.6666666666667 136.7466666666667L200.7466666666667 106.6666666666667L256 161.92L311.2533333333334 106.6666666666667L341.3333333333333 136.7466666666667L286.08 192L341.3333333333333 247.2533333333334L311.2533333333334 277.3333333333334z" /> + <glyph glyph-name="close-network" + unicode="&#xF15B;" + horiz-adv-x="512" d=" M311.2533333333334 320L256 264.7466666666667L200.7466666666667 320L170.6666666666667 289.92L225.92 234.6666666666667L170.6666666666667 179.4133333333334L200.7466666666667 149.3333333333334L256 204.5866666666667L311.2533333333334 149.3333333333334L341.3333333333333 179.4133333333334L286.08 234.6666666666667L341.3333333333333 289.92L311.2533333333334 320M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="close-octagon" + unicode="&#xF15C;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334L335.5733333333333 384M179.4133333333333 298.6666666666667L256 222.08L332.5866666666667 298.6666666666667L362.6666666666667 268.5866666666667L286.08 192L362.6666666666667 115.4133333333334L332.5866666666667 85.3333333333334L256 161.92L179.4133333333333 85.3333333333334L149.3333333333333 115.4133333333334L225.92 192L149.3333333333333 268.5866666666667" /> + <glyph glyph-name="close-octagon-outline" + unicode="&#xF15D;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333C373.3333333333333 37.5466666666667 448 112.4266666666667 448 112.4266666666667V271.5733333333334L335.5733333333333 384M194.1333333333333 341.3333333333334H317.8666666666666L405.3333333333333 253.8666666666667V130.1333333333334L317.8666666666667 42.6666666666667H194.1333333333333L106.6666666666667 130.1333333333333V253.8666666666667M194.56 283.52L164.48 253.4400000000001L225.92 192L164.48 130.5600000000001L194.56 100.48L256 161.92L317.44 100.48L347.52 130.5600000000001L286.08 192L347.52 253.44L317.44 283.52L256 222.08" /> + <glyph glyph-name="closed-caption" + unicode="&#xF15E;" + horiz-adv-x="512" d=" M384 213.3333333333334H352V224H309.3333333333333V160H352V170.6666666666667H384V149.3333333333334C384 137.6 374.4 128 362.6666666666667 128H298.6666666666667C286.9333333333333 128 277.3333333333333 137.6 277.3333333333333 149.3333333333334V234.6666666666667C277.3333333333333 246.4000000000001 286.9333333333333 256 298.6666666666667 256H362.6666666666667C374.4 256 384 246.4000000000001 384 234.6666666666667M234.6666666666667 213.3333333333334H202.6666666666667V224H160V160H202.6666666666667V170.6666666666667H234.6666666666667V149.3333333333334C234.6666666666667 137.6 225.0666666666667 128 213.3333333333333 128H149.3333333333333C137.6 128 128 137.6 128 149.3333333333334V234.6666666666667C128 246.4000000000001 137.6 256 149.3333333333333 256H213.3333333333333C225.0666666666667 256 234.6666666666667 246.4000000000001 234.6666666666667 234.6666666666667M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.68 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.68 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="cloud" + unicode="&#xF15F;" + horiz-adv-x="512" d=" M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-check" + unicode="&#xF160;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L138.6666666666667 160L168.7466666666667 190.2933333333334L213.3333333333333 145.7066666666667L323.84 256L353.92 225.92M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-circle" + unicode="&#xF161;" + horiz-adv-x="512" d=" M352 106.6666666666667H170.6666666666667C135.2533333333333 106.6666666666667 106.6666666666667 135.2533333333333 106.6666666666667 170.6666666666667S135.2533333333333 234.6666666666667 170.6666666666667 234.6666666666667H173.6533333333333C183.04 271.36 216.1066666666667 298.6666666666667 256 298.6666666666667C303.1466666666667 298.6666666666667 341.3333333333333 260.48 341.3333333333333 213.3333333333334H352C381.44 213.3333333333334 405.3333333333333 189.44 405.3333333333333 160S381.44 106.6666666666667 352 106.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="cloud-download" + unicode="&#xF162;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667L256 64L149.3333333333333 170.6666666666667H213.3333333333333V256H298.6666666666667V170.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-outline" + unicode="&#xF163;" + horiz-adv-x="512" d=" M405.3333333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667H143.1466666666667C157.2266666666667 283.9466666666667 202.6666666666667 320 256 320C320.8533333333333 320 373.3333333333333 267.52 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128S440.7466666666667 64 405.3333333333333 64M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-outline-off" + unicode="&#xF164;" + horiz-adv-x="512" d=" M164.9066666666667 234.6666666666667L335.5733333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667M64 335.5733333333334L122.6666666666667 277.3333333333334C54.6133333333333 274.1333333333334 0 218.24 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H378.24L420.9066666666667 -21.3333333333333L448 5.76L91.0933333333333 362.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C224 362.6666666666667 195.2 353.4933333333334 170.6666666666667 337.7066666666667L201.6 306.56C217.8133333333333 315.0933333333334 236.3733333333334 320 256 320C320.8533333333333 320 373.3333333333333 267.52 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128C469.3333333333333 103.8933333333334 455.6799999999999 82.9866666666667 436.0533333333334 72.1066666666667L466.9866666666667 41.1733333333333C494.08 60.5866666666667 512 92.16 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="cloud-print" + unicode="&#xF165;" + horiz-adv-x="512" d=" M256 405.3333333333333C194.3466666666666 405.3333333333333 140.8 370.3466666666667 114.1333333333333 319.1466666666667C49.92 312.32 0 257.92 0 192C0 121.3866666666667 57.3866666666667 64 128 64V-21.3333333333333H384V64H405.3333333333333C464.2133333333333 64 512 111.7866666666667 512 170.6666666666667C512 226.9866666666667 468.2666666666667 272.6400000000001 412.8 276.48C398.2933333333334 350.0800000000001 333.6533333333333 405.3333333333333 256 405.3333333333333M170.6666666666667 170.6666666666667H341.3333333333333V21.3333333333334H170.6666666666667V170.6666666666667M192 149.3333333333334V128H320V149.3333333333334H192M192 106.6666666666667V85.3333333333334H320V106.6666666666667H192M192 64V42.6666666666667H320V64H192z" /> + <glyph glyph-name="cloud-print-outline" + unicode="&#xF166;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667C440.7466666666667 106.6666666666667 469.3333333333333 135.2533333333333 469.3333333333333 170.6666666666667S440.7466666666667 234.6666666666667 405.3333333333333 234.6666666666667H373.3333333333333V245.3333333333334C373.3333333333333 310.1866666666667 320.8533333333333 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 157.2266666666667 326.6133333333334 143.1466666666667 277.3333333333334H128C80.8533333333333 277.3333333333334 42.6666666666667 239.1466666666667 42.6666666666667 192S80.8533333333333 106.6666666666667 128 106.6666666666667V213.3333333333334H384V106.6666666666667H405.3333333333333M413.0133333333333 276.48C468.2666666666667 272.64 512 226.9866666666667 512 170.6666666666667C512 111.7866666666667 464.2133333333333 64 405.3333333333333 64H384V-21.3333333333333H128V64C57.3866666666667 64 0 121.3866666666667 0 192C0 257.92 49.92 312.32 114.1333333333333 319.1466666666667C140.8 370.3466666666667 194.3466666666666 405.3333333333333 256 405.3333333333333C333.6533333333333 405.3333333333333 398.2933333333334 349.8666666666667 413.0133333333333 276.48M170.6666666666667 170.6666666666667V21.3333333333334H341.3333333333333V170.6666666666667H170.6666666666667M192 64H320V42.6666666666667H192V64M320 85.3333333333334H192V106.6666666666667H320V85.3333333333334M192 149.3333333333334H320V128H192V149.3333333333334z" /> + <glyph glyph-name="cloud-sync" + unicode="&#xF63F;" + horiz-adv-x="512" d=" M256 362.6666666666667C333.6533333333333 362.6666666666667 398.2933333333334 307.4133333333334 412.8 233.8133333333334C468.2666666666667 229.9733333333334 512 184.3200000000001 512 128C512 69.1200000000001 464.2133333333333 21.3333333333334 405.3333333333333 21.3333333333334H128C57.3866666666667 21.3333333333334 0 78.72 0 149.3333333333334C0 215.2533333333333 49.92 269.6533333333334 114.1333333333333 276.48C140.8 327.68 194.3466666666666 362.6666666666667 256 362.6666666666667M160 241.2800000000001C129.28 202.6666666666667 132.2666666666667 148.0533333333334 166.8266666666667 113.4933333333334C184.7466666666667 96 209.28 85.3333333333334 234.6666666666667 85.3333333333334V45.6533333333334L295.04 105.8133333333334L234.6666666666667 166.1866666666667V128C220.5866666666667 128 206.9333333333333 133.5466666666667 196.9066666666667 143.5733333333334C178.9866666666667 161.4933333333334 176.2133333333333 189.6533333333334 190.2933333333333 210.7733333333334L160 241.2800000000001M195.6266666666667 256.6400000000001L226.56 225.7066666666667L256 196.48V234.6666666666667C270.08 234.6666666666667 283.7333333333334 229.12 293.76 219.0933333333333C311.68 201.1733333333334 314.4533333333333 173.0133333333333 300.3733333333334 151.8933333333333L330.6666666666667 121.3866666666667C361.3866666666667 160 358.4 214.6133333333333 323.84 249.1733333333334C305.92 266.6666666666667 281.3866666666667 277.3333333333334 256 277.3333333333334V317.0133333333333L195.6266666666667 256.64z" /> + <glyph glyph-name="cloud-upload" + unicode="&#xF167;" + horiz-adv-x="512" d=" M298.6666666666667 170.6666666666667V85.3333333333334H213.3333333333333V170.6666666666667H149.3333333333333L256 277.3333333333334L362.6666666666667 170.6666666666667M412.8 234.0266666666667C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 140.8 327.68 114.1333333333333 276.6933333333334C49.92 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 234.0266666666667z" /> + <glyph glyph-name="code-array" + unicode="&#xF168;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M128 320V64H213.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334H213.3333333333333V320H128M341.3333333333333 106.6666666666667H298.6666666666667V64H384V320H298.6666666666667V277.3333333333334H341.3333333333333V106.6666666666667z" /> + <glyph glyph-name="code-braces" + unicode="&#xF169;" + horiz-adv-x="512" d=" M170.6666666666667 384C147.2 384 128 364.8 128 341.3333333333334V256C128 232.5333333333334 108.8 213.3333333333334 85.3333333333333 213.3333333333334H64V170.6666666666667H85.3333333333333C108.8 170.6666666666667 128 151.4666666666667 128 128V42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H213.3333333333333V42.6666666666667H170.6666666666667V149.3333333333334C170.6666666666667 172.8 151.4666666666667 192 128 192C151.4666666666667 192 170.6666666666667 211.2 170.6666666666667 234.6666666666667V341.3333333333334H213.3333333333333V384M341.3333333333333 384C364.8 384 384 364.8 384 341.3333333333334V256C384 232.5333333333334 403.2 213.3333333333334 426.6666666666667 213.3333333333334H448V170.6666666666667H426.6666666666667C403.2 170.6666666666667 384 151.4666666666667 384 128V42.6666666666667C384 19.2 364.8 0 341.3333333333333 0H298.6666666666667V42.6666666666667H341.3333333333333V149.3333333333334C341.3333333333333 172.8 360.5333333333333 192 384 192C360.5333333333333 192 341.3333333333333 211.2 341.3333333333333 234.6666666666667V341.3333333333334H298.6666666666667V384H341.3333333333333z" /> + <glyph glyph-name="code-brackets" + unicode="&#xF16A;" + horiz-adv-x="512" d=" M320 362.6666666666667V320H384V64H320V21.3333333333334H426.6666666666667V362.6666666666667M85.3333333333333 362.6666666666667V21.3333333333334H192V64H128V320H192V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="code-equal" + unicode="&#xF16B;" + horiz-adv-x="512" d=" M128 170.6666666666667H234.6666666666667V128H128M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M128 256H234.6666666666667V213.3333333333334H128M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-greater-than" + unicode="&#xF16C;" + horiz-adv-x="512" d=" M222.08 289.92L320 192L222.08 93.8666666666667L192 124.16L259.84 192L192 259.8400000000001M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-greater-than-or-equal" + unicode="&#xF16D;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M147.4133333333333 289.92L245.3333333333333 192L147.4133333333333 93.8666666666667L117.3333333333333 124.16L185.1733333333333 192L117.3333333333333 259.8400000000001M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-less-than" + unicode="&#xF16E;" + horiz-adv-x="512" d=" M289.92 289.92L192 192L289.92 93.8666666666667L320 124.16L252.16 192L320 259.8400000000001M405.3333333333333 384C429.0133333333333 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333z" /> + <glyph glyph-name="code-less-than-or-equal" + unicode="&#xF16F;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H384V128H277.3333333333333M277.3333333333333 256H384V213.3333333333334H277.3333333333333M215.2533333333333 289.92L245.3333333333333 259.8400000000001L177.4933333333334 192L245.3333333333333 124.16L215.2533333333333 93.8666666666667L117.3333333333333 192M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-not-equal" + unicode="&#xF170;" + horiz-adv-x="512" d=" M128 128H170.6666666666667V85.3333333333334H128M234.6666666666667 170.6666666666667H384V128H234.6666666666667M234.6666666666667 256H384V213.3333333333334H234.6666666666667M128 298.6666666666667H170.6666666666667V170.6666666666667H128M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-not-equal-variant" + unicode="&#xF171;" + horiz-adv-x="512" d=" M234.6666666666667 309.3333333333334V248.96L177.7066666666667 192L234.6666666666667 135.04V74.6666666666667L117.3333333333333 192M277.3333333333333 310.8266666666667L396.16 192L277.3333333333333 73.1733333333334V133.5466666666667L335.7866666666667 192L277.3333333333333 250.4533333333334M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384H106.6666666666667z" /> + <glyph glyph-name="code-parentheses" + unicode="&#xF172;" + horiz-adv-x="512" d=" M375.8933333333333 384C408.1066666666667 335.5733333333334 426.6666666666667 265.6 426.6666666666667 192C426.6666666666667 118.6133333333334 408.1066666666667 48.64 375.8933333333333 0L341.3333333333333 22.1866666666667C368.2133333333334 62.5066666666667 384 125.2266666666667 384 192S368.2133333333334 321.7066666666667 341.3333333333333 362.0266666666667L375.8933333333333 384M136.1066666666667 384L170.6666666666667 361.8133333333334C143.7866666666667 321.7066666666667 128 258.7733333333334 128 192S143.7866666666667 62.2933333333334 170.6666666666667 22.1866666666667L136.1066666666667 0C103.8933333333333 48.4266666666667 85.3333333333333 118.4 85.3333333333333 192S103.8933333333333 335.5733333333334 136.1066666666667 384z" /> + <glyph glyph-name="code-string" + unicode="&#xF173;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M266.6666666666667 213.3333333333334H245.3333333333333C227.6266666666667 213.3333333333334 213.3333333333333 227.6266666666667 213.3333333333333 245.3333333333334S227.6266666666667 277.3333333333334 245.3333333333333 277.3333333333334H266.6666666666667C284.3733333333334 277.3333333333334 298.6666666666667 263.04 298.6666666666667 245.3333333333334H341.3333333333333C341.3333333333333 286.5066666666667 307.84 320 266.6666666666667 320H245.3333333333333C204.16 320 170.6666666666667 286.5066666666667 170.6666666666667 245.3333333333334S204.16 170.6666666666667 245.3333333333333 170.6666666666667H266.6666666666667C284.3733333333334 170.6666666666667 298.6666666666667 156.3733333333333 298.6666666666667 138.6666666666667S284.3733333333334 106.6666666666667 266.6666666666667 106.6666666666667H245.3333333333333C227.6266666666667 106.6666666666667 213.3333333333333 120.96 213.3333333333333 138.6666666666667H170.6666666666667C170.6666666666667 97.4933333333333 204.16 64 245.3333333333333 64H266.6666666666667C307.84 64 341.3333333333333 97.4933333333333 341.3333333333333 138.6666666666667S307.84 213.3333333333334 266.6666666666667 213.3333333333334z" /> + <glyph glyph-name="code-tags" + unicode="&#xF174;" + horiz-adv-x="512" d=" M311.4666666666667 93.8666666666667L409.6 192L311.4666666666667 290.1333333333334L341.3333333333333 320L469.3333333333333 192L341.3333333333333 64L311.4666666666667 93.8666666666667M200.5333333333333 93.8666666666667L102.4 192L200.5333333333333 290.1333333333334L170.6666666666667 320L42.6666666666667 192L170.6666666666667 64L200.5333333333333 93.8666666666667z" /> + <glyph glyph-name="codepen" + unicode="&#xF175;" + horiz-adv-x="512" d=" M414.9333333333333 164.48L373.3333333333333 192L414.9333333333333 219.52M272.4266666666666 47.36V124.3733333333333L344.1066666666667 172.16L401.7066666666666 133.5466666666666M256 152.96L197.5466666666667 192L256 231.04L314.4533333333333 192M239.5733333333333 47.36L110.2933333333334 133.5466666666666L167.8933333333334 172.16L239.5733333333333 124.3733333333333M97.0666666666667 219.52L138.6666666666667 192L97.0666666666667 164.48M239.5733333333333 336.6400000000001V259.6266666666667L167.8933333333334 211.84L110.2933333333334 250.4533333333334M272.4266666666666 336.6400000000001L401.7066666666666 250.4533333333334L344.1066666666667 211.84L272.4266666666666 259.6266666666667M448 252.5866666666667V253.4400000000001C448 253.8666666666667 448 254.2933333333334 447.36 254.7200000000001C447.36 254.9333333333334 447.36 255.36 447.1466666666666 256.0000000000001C447.1466666666666 256.0000000000001 446.9333333333332 256.0000000000001 446.7199999999999 256.8533333333334C446.7199999999999 257.0666666666667 446.5066666666666 257.2800000000001 446.2933333333333 257.4933333333334C446.2933333333333 257.92 446.08 258.3466666666667 445.8666666666666 258.5600000000001C445.6533333333333 258.9866666666667 445.44 259.2000000000001 445.44 259.4133333333334C445.2266666666666 259.8400000000001 444.8 260.0533333333334 444.5866666666667 260.48C444.3733333333333 260.6933333333334 444.3733333333333 260.9066666666667 444.16 261.12C444.16 261.5466666666667 443.7333333333334 261.9733333333334 443.3066666666667 261.9733333333334L442.6666666666667 262.6133333333334C442.24 263.04 442.0266666666667 263.2533333333334 441.6 263.4666666666667L440.9599999999999 264.1066666666667C440.7466666666666 264.1066666666667 440.7466666666666 264.1066666666667 440.7466666666666 264.32L265.1733333333333 381.2266666666667C259.6266666666666 384.8533333333333 252.3733333333333 384.8533333333333 246.8266666666666 381.2266666666667L71.2533333333333 264.3200000000001C71.2533333333333 264.1066666666667 71.2533333333333 264.1066666666667 71.04 264.1066666666667L70.4 263.4666666666667C69.9733333333333 263.2533333333334 69.76 263.0400000000001 69.3333333333333 262.6133333333334L68.6933333333333 261.9733333333334L67.84 261.1200000000001C67.6266666666667 260.9066666666668 67.6266666666667 260.6933333333335 67.4133333333333 260.4800000000002C67.2 260.0533333333335 66.7733333333333 259.8400000000002 66.56 259.4133333333334C66.56 259.2000000000001 66.3466666666667 258.9866666666668 66.1333333333333 258.5600000000001C65.92 258.3466666666668 65.7066666666667 257.9200000000002 65.7066666666667 257.4933333333335C65.4933333333333 257.2800000000001 65.28 257.0666666666668 65.28 256.8533333333335C65.0666666666667 256.0000000000001 65.0666666666667 256.0000000000001 64.8533333333333 256.0000000000001C64.64 255.3600000000002 64.64 254.9333333333335 64.64 254.7200000000001C64 254.2933333333334 64 253.8666666666667 64 253.4400000000001V130.5600000000001C64 130.1333333333334 64 129.7066666666667 64.64 129.28C64.64 129.0666666666667 64.64 128.6400000000001 64.8533333333333 128C65.0666666666667 128 65.0666666666667 128 65.28 127.1466666666667C65.28 126.9333333333334 65.4933333333333 126.72 65.7066666666667 126.5066666666667C65.7066666666667 126.0800000000001 65.92 125.6533333333334 66.1333333333333 125.4400000000001C66.3466666666667 125.0133333333334 66.56 124.8000000000001 66.56 124.5866666666667C66.7733333333333 124.1600000000001 67.2 123.9466666666667 67.4133333333333 123.5200000000001C67.6266666666667 123.3066666666667 67.6266666666667 123.0933333333334 67.84 122.8800000000001C68.2666666666667 122.6666666666668 68.48 122.2400000000001 68.6933333333333 122.0266666666668L69.3333333333333 121.3866666666668C69.76 120.9600000000001 69.9733333333333 120.7466666666668 70.4 120.5333333333334L71.04 119.8933333333334C71.2533333333333 119.8933333333334 71.2533333333333 119.8933333333334 71.2533333333333 119.6800000000001L246.8266666666667 2.7733333333334C249.6 0.8533333333334 252.8 1e-13 256 1e-13C259.2 1e-13 262.4 0.8533333333334 265.1733333333333 2.7733333333334L440.7466666666667 119.6800000000001C440.7466666666667 119.8933333333334 440.7466666666667 119.8933333333334 440.9600000000001 119.8933333333334L441.6 120.5333333333334C442.0266666666667 120.7466666666667 442.2400000000001 120.96 442.6666666666668 121.3866666666667L443.3066666666668 122.0266666666667C443.5200000000001 122.24 443.7333333333334 122.6666666666667 444.1600000000001 122.88C444.3733333333335 123.0933333333334 444.3733333333335 123.3066666666667 444.5866666666667 123.52C444.8000000000001 123.9466666666667 445.2266666666668 124.16 445.4400000000001 124.5866666666667C445.4400000000001 124.8 445.6533333333334 125.0133333333333 445.8666666666667 125.44C446.0800000000001 125.6533333333333 446.2933333333334 126.08 446.2933333333334 126.5066666666667C446.5066666666667 126.72 446.7200000000001 126.9333333333333 446.7200000000001 127.1466666666667C446.9333333333334 128 447.1466666666667 128 447.1466666666667 128C447.36 128.64 447.36 129.0666666666667 447.36 129.28C448.0000000000001 129.7066666666667 448.0000000000001 130.1333333333333 448.0000000000001 130.56V252.5866666666667z" /> + <glyph glyph-name="coffee" + unicode="&#xF176;" + horiz-adv-x="512" d=" M42.6666666666667 0H426.6666666666667V42.6666666666667H42.6666666666667M426.6666666666667 277.3333333333334H384V341.3333333333334H426.6666666666667M426.6666666666667 384H85.3333333333333V170.6666666666667C85.3333333333333 123.52 123.52 85.3333333333334 170.6666666666667 85.3333333333334H298.6666666666667C345.8133333333334 85.3333333333334 384 123.52 384 170.6666666666667V234.6666666666667H426.6666666666667C450.1333333333334 234.6666666666667 469.3333333333333 253.8666666666667 469.3333333333333 277.3333333333334V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="coffee-to-go" + unicode="&#xF177;" + horiz-adv-x="512" d=" M64 42.6666666666667V85.3333333333334H362.6666666666667L325.5466666666666 122.88L355.6266666666666 152.96L444.5866666666667 64L355.6266666666667 -24.96L325.5466666666667 5.12L362.6666666666667 42.6666666666667H64M362.6666666666667 277.3333333333334V341.3333333333334H320V277.3333333333334H362.6666666666667M362.6666666666667 384C386.3466666666667 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V277.3333333333334C405.3333333333333 253.6533333333334 386.3466666666667 234.6666666666667 362.6666666666667 234.6666666666667H320V213.3333333333334C320 166.1866666666667 281.8133333333334 128 234.6666666666667 128H149.3333333333333C102.1866666666667 128 64 166.1866666666667 64 213.3333333333334V384H362.6666666666667z" /> + <glyph glyph-name="coin" + unicode="&#xF178;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667M234.6666666666667 85.3333333333334V106.6666666666667H192V149.3333333333334H277.3333333333333V170.6666666666667H213.3333333333333C201.6 170.6666666666667 192 180.2666666666667 192 192V256C192 267.7333333333334 201.6 277.3333333333334 213.3333333333333 277.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V277.3333333333334H320V234.6666666666667H234.6666666666667V213.3333333333334H298.6666666666667C310.4 213.3333333333334 320 203.7333333333334 320 192V128C320 116.2666666666667 310.4 106.6666666666667 298.6666666666667 106.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="collage" + unicode="&#xF640;" + horiz-adv-x="512" d=" M106.6666666666667 384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 18.9866666666667 82.9866666666667 0 106.6666666666667 0H234.6666666666667V384M277.3333333333333 384V213.3333333333334H448V341.3333333333334C448 365.0133333333333 429.0133333333333 384 405.3333333333333 384M277.3333333333333 170.6666666666667V0H405.3333333333333C429.0133333333333 0 448 18.9866666666667 448 42.6666666666667V170.6666666666667" /> + <glyph glyph-name="color-helper" + unicode="&#xF179;" + horiz-adv-x="512" d=" M0 -64H512V21.3333333333334H0V-64z" /> + <glyph glyph-name="comment" + unicode="&#xF17A;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192z" /> + <glyph glyph-name="comment-account" + unicode="&#xF17B;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M341.3333333333333 149.3333333333334V170.6666666666667C341.3333333333333 199.04 284.3733333333334 213.3333333333334 256 213.3333333333334S170.6666666666667 199.04 170.6666666666667 170.6666666666667V149.3333333333334H341.3333333333333M256 320C232.5333333333334 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320z" /> + <glyph glyph-name="comment-account-outline" + unicode="&#xF17C;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M341.3333333333333 149.3333333333334H170.6666666666667V170.6666666666667C170.6666666666667 199.04 227.6266666666667 213.3333333333334 256 213.3333333333334S341.3333333333333 199.04 341.3333333333333 170.6666666666667V149.3333333333334M256 320C279.4666666666667 320 298.6666666666667 300.8 298.6666666666667 277.3333333333334S279.4666666666667 234.6666666666667 256 234.6666666666667S213.3333333333333 253.8666666666667 213.3333333333333 277.3333333333334S232.5333333333334 320 256 320z" /> + <glyph glyph-name="comment-alert" + unicode="&#xF17D;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M277.3333333333333 234.6666666666667V320H234.6666666666667V234.6666666666667H277.3333333333333M277.3333333333333 149.3333333333334V192H234.6666666666667V149.3333333333334H277.3333333333333z" /> + <glyph glyph-name="comment-alert-outline" + unicode="&#xF17E;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M277.3333333333333 234.6666666666667H234.6666666666667V320H277.3333333333333V234.6666666666667M277.3333333333333 149.3333333333334H234.6666666666667V192H277.3333333333333V149.3333333333334z" /> + <glyph glyph-name="comment-check" + unicode="&#xF17F;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 128L384 298.6666666666667L353.92 328.9600000000001L213.3333333333333 188.3733333333333L158.08 243.4133333333334L128 213.3333333333334L213.3333333333333 128z" /> + <glyph glyph-name="comment-check-outline" + unicode="&#xF180;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M352 277.3333333333334L234.6666666666667 160L160 234.6666666666667L190.08 264.7466666666667L234.6666666666667 220.3733333333333L321.92 307.4133333333334L352 277.3333333333334z" /> + <glyph glyph-name="comment-multiple-outline" + unicode="&#xF181;" + horiz-adv-x="512" d=" M256 -42.6666666666666C244.2666666666667 -42.6666666666666 234.6666666666667 -33.0666666666667 234.6666666666667 -21.3333333333333V42.6666666666667H149.3333333333333C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V298.6666666666667C106.6666666666667 322.3466666666667 125.8666666666667 341.3333333333334 149.3333333333333 341.3333333333334H448C471.4666666666667 341.3333333333334 490.6666666666666 322.1333333333334 490.6666666666666 298.6666666666667V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H360.5333333333333L281.6 -36.48C277.3333333333333 -40.5333333333334 272 -42.6666666666666 266.6666666666667 -42.6666666666666H256M277.3333333333333 85.3333333333334V19.6266666666667L343.04 85.3333333333334H448V298.6666666666667H149.3333333333333V85.3333333333334H277.3333333333333M64 128H21.3333333333333V384C21.3333333333333 407.4666666666667 40.5333333333333 426.6666666666667 64 426.6666666666667H405.3333333333333V384H64V128z" /> + <glyph glyph-name="comment-outline" + unicode="&#xF182;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333z" /> + <glyph glyph-name="comment-plus-outline" + unicode="&#xF183;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M234.6666666666667 320H277.3333333333333V256H341.3333333333333V213.3333333333334H277.3333333333333V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667V256H234.6666666666667V320z" /> + <glyph glyph-name="comment-processing" + unicode="&#xF184;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M362.6666666666667 213.3333333333334V256H320V213.3333333333334H362.6666666666667M277.3333333333333 213.3333333333334V256H234.6666666666667V213.3333333333334H277.3333333333333M192 213.3333333333334V256H149.3333333333333V213.3333333333334H192z" /> + <glyph glyph-name="comment-processing-outline" + unicode="&#xF185;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M362.6666666666667 213.3333333333334H320V256H362.6666666666667V213.3333333333334M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333V213.3333333333334M192 213.3333333333334H149.3333333333333V256H192V213.3333333333334z" /> + <glyph glyph-name="comment-question-outline" + unicode="&#xF186;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H170.6666666666667V0C170.6666666666667 -11.7333333333333 180.2666666666667 -21.3333333333333 192 -21.3333333333333H202.6666666666667C208 -21.3333333333333 213.3333333333333 -19.1999999999999 217.6 -15.1466666666666L296.5333333333333 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333M85.3333333333333 362.6666666666667H426.6666666666667V106.6666666666667H279.04L213.3333333333333 40.96V106.6666666666667H85.3333333333333V362.6666666666667M260.0533333333333 330.6666666666667C241.0666666666667 330.6666666666667 225.92 326.8266666666667 214.4 319.1466666666667C202.6666666666666 311.4666666666667 196.6933333333333 298.6666666666667 197.76 283.9466666666667H239.7866666666667C239.7866666666667 289.92 241.92 294.4000000000001 245.3333333333333 297.3866666666667C249.6 300.3733333333334 254.2933333333333 301.8666666666667 260.0533333333333 301.8666666666667C266.6666666666667 301.8666666666667 272.4266666666666 300.1600000000001 276.2666666666667 296.3200000000001C280.1066666666667 292.6933333333334 282.0266666666667 288 282.0266666666667 281.6C282.0266666666667 275.6266666666667 280.32 270.2933333333334 277.3333333333333 265.8133333333334C273.7066666666666 261.12 269.2266666666666 257.2800000000001 263.68 254.2933333333334C252.5866666666666 247.4666666666667 245.3333333333333 241.4933333333334 240.8533333333333 236.3733333333334C236.8 231.2533333333334 234.6666666666667 224.0000000000001 234.6666666666667 213.3333333333334H277.3333333333333C277.3333333333333 219.3066666666667 278.4 224.0000000000001 280.32 227.8400000000001C282.24 231.4666666666667 285.8666666666666 234.6666666666667 291.4133333333333 237.8666666666668C301.2266666666667 242.3466666666668 309.3333333333333 248.3200000000001 315.52 256.0000000000001C321.7066666666666 263.8933333333334 324.9066666666667 272.2133333333334 324.9066666666667 281.6C324.9066666666667 296.5333333333334 319.1466666666667 308.48 307.6266666666666 317.4400000000001C296.1066666666667 326.1866666666667 280.1066666666667 330.6666666666668 260.0533333333333 330.6666666666668M234.6666666666667 192V149.3333333333334H277.3333333333333V192H234.6666666666667z" /> + <glyph glyph-name="comment-remove-outline" + unicode="&#xF187;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M200.7466666666667 320L256 264.7466666666667L311.2533333333334 320L341.3333333333333 289.92L286.08 234.6666666666667L341.3333333333333 179.4133333333334L311.2533333333334 149.3333333333334L256 204.5866666666667L200.7466666666667 149.3333333333334L170.6666666666667 179.4133333333334L225.92 234.6666666666667L170.6666666666667 289.92L200.7466666666667 320z" /> + <glyph glyph-name="comment-text" + unicode="&#xF188;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M106.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 256V213.3333333333334H277.3333333333333V256H106.6666666666667M106.6666666666667 170.6666666666667V128H320V170.6666666666667H106.6666666666667z" /> + <glyph glyph-name="comment-text-outline" + unicode="&#xF189;" + horiz-adv-x="512" d=" M192 -21.3333333333333C180.2666666666667 -21.3333333333333 170.6666666666667 -11.7333333333333 170.6666666666667 0V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H296.5333333333333L217.6 -15.1466666666666C213.3333333333333 -19.2 208 -21.3333333333333 202.6666666666667 -21.3333333333333H192M213.3333333333333 106.6666666666667V40.96L279.04 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V106.6666666666667H213.3333333333333M128 298.6666666666667H384V256H128V298.6666666666667M128 213.3333333333334H320V170.6666666666667H128V213.3333333333334z" /> + <glyph glyph-name="compare" + unicode="&#xF18A;" + horiz-adv-x="512" d=" M405.3333333333333 384H298.6666666666667V341.3333333333334H405.3333333333333V64L298.6666666666667 192V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M213.3333333333333 64H106.6666666666667L213.3333333333333 192M213.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H213.3333333333333V-42.6666666666666H256V426.6666666666667H213.3333333333333V384z" /> + <glyph glyph-name="compass" + unicode="&#xF18B;" + horiz-adv-x="512" d=" M302.72 145.28L128 64L209.28 238.72L384 320M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 215.4666666666667C242.9866666666667 215.4666666666667 232.5333333333334 205.0133333333333 232.5333333333334 192C232.5333333333334 178.9866666666667 242.9866666666667 168.5333333333334 256 168.5333333333334C269.0133333333333 168.5333333333334 279.4666666666667 178.9866666666667 279.4666666666667 192C279.4666666666667 205.0133333333333 269.0133333333333 215.4666666666667 256 215.4666666666667z" /> + <glyph glyph-name="compass-outline" + unicode="&#xF18C;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334L217.6 230.4000000000001L362.6666666666667 298.6666666666667L294.4 153.6L149.3333333333333 85.3333333333334M256 211.2C245.3333333333333 211.2 236.8 202.6666666666667 236.8 192S245.3333333333333 172.8 256 172.8S275.2 181.3333333333334 275.2 192S266.6666666666667 211.2 256 211.2M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="console" + unicode="&#xF18D;" + horiz-adv-x="512" d=" M426.6666666666667 42.6666666666667V298.6666666666667H85.3333333333333V42.6666666666667H426.6666666666667M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V341.3333333333334C42.6666666666667 365.0133333333333 61.8666666666667 384 85.3333333333333 384H426.6666666666667M277.3333333333333 85.3333333333334V128H384V85.3333333333334H277.3333333333333M204.3733333333333 170.6666666666667L118.8266666666667 256H179.2L249.6 185.6C257.92 177.28 257.92 163.6266666666667 249.6 155.3066666666667L179.6266666666667 85.3333333333334H119.2533333333333L204.3733333333333 170.6666666666667z" /> + <glyph glyph-name="contact-mail" + unicode="&#xF18E;" + horiz-adv-x="512" d=" M448 277.3333333333334V298.6666666666667L384 256L320 298.6666666666667V277.3333333333334L384 234.6666666666667M469.3333333333333 384H42.6666666666667C19.2 384 0 364.8 0 341.3333333333334V42.6666666666667C0 19.2 19.2 0 42.6666666666667 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 364.8 492.8 384 469.3333333333333 384M170.6666666666667 320C206.08 320 234.6666666666667 291.4133333333334 234.6666666666667 256S206.08 192 170.6666666666667 192S106.6666666666667 220.5866666666667 106.6666666666667 256S135.2533333333333 320 170.6666666666667 320M298.6666666666667 64H42.6666666666667V85.3333333333334C42.6666666666667 128 128 151.4666666666667 170.6666666666667 151.4666666666667S298.6666666666667 128 298.6666666666667 85.3333333333334M469.3333333333333 192H298.6666666666667V320H469.3333333333333" /> + <glyph glyph-name="content-copy" + unicode="&#xF18F;" + horiz-adv-x="512" d=" M405.3333333333333 0H170.6666666666667V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H170.6666666666667C147.2 341.3333333333334 128 322.1333333333334 128 298.6666666666667V0C128 -23.4666666666667 147.2 -42.6666666666666 170.6666666666667 -42.6666666666666H405.3333333333333C428.8 -42.6666666666666 448 -23.4666666666667 448 0V298.6666666666667C448 322.1333333333334 428.8 341.3333333333334 405.3333333333333 341.3333333333334M341.3333333333333 426.6666666666667H85.3333333333333C61.8666666666667 426.6666666666667 42.6666666666667 407.4666666666667 42.6666666666667 384V85.3333333333334H85.3333333333333V384H341.3333333333333V426.6666666666667z" /> + <glyph glyph-name="content-cut" + unicode="&#xF190;" + horiz-adv-x="512" d=" M405.3333333333333 384L277.3333333333333 256L320 213.3333333333334L469.3333333333333 362.6666666666667V384M256 181.3333333333334C250.0266666666667 181.3333333333334 245.3333333333333 186.0266666666667 245.3333333333333 192S250.0266666666667 202.6666666666667 256 202.6666666666667S266.6666666666667 197.9733333333333 266.6666666666667 192S261.9733333333333 181.3333333333334 256 181.3333333333334M128 21.3333333333334C104.5333333333333 21.3333333333334 85.3333333333333 40.5333333333333 85.3333333333333 64C85.3333333333333 87.68 104.5333333333333 106.6666666666667 128 106.6666666666667S170.6666666666667 87.4666666666667 170.6666666666667 64C170.6666666666667 40.3200000000001 151.4666666666667 21.3333333333334 128 21.3333333333334M128 277.3333333333334C104.5333333333333 277.3333333333334 85.3333333333333 296.5333333333334 85.3333333333333 320C85.3333333333333 343.68 104.5333333333333 362.6666666666667 128 362.6666666666667S170.6666666666667 343.4666666666667 170.6666666666667 320C170.6666666666667 296.32 151.4666666666667 277.3333333333334 128 277.3333333333334M205.6533333333333 285.0133333333333C210.56 295.68 213.3333333333333 307.4133333333334 213.3333333333333 320C213.3333333333333 367.1466666666667 175.1466666666667 405.3333333333333 128 405.3333333333333S42.6666666666667 367.1466666666667 42.6666666666667 320S80.8533333333333 234.6666666666667 128 234.6666666666667C140.5866666666667 234.6666666666667 152.32 237.4400000000001 162.9866666666667 242.3466666666667L213.3333333333333 192L162.9866666666667 141.6533333333334C152.32 146.56 140.5866666666667 149.3333333333334 128 149.3333333333334C80.8533333333333 149.3333333333334 42.6666666666667 111.1466666666667 42.6666666666667 64S80.8533333333333 -21.3333333333333 128 -21.3333333333333S213.3333333333333 16.8533333333334 213.3333333333333 64C213.3333333333333 76.5866666666667 210.56 88.3200000000001 205.6533333333333 98.9866666666667L256 149.3333333333334L405.3333333333333 0H469.3333333333333V21.3333333333334L205.6533333333333 285.0133333333333z" /> + <glyph glyph-name="content-duplicate" + unicode="&#xF191;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V384C42.6666666666667 407.4666666666667 61.8666666666667 426.6666666666667 85.3333333333333 426.6666666666667H341.3333333333333V384H85.3333333333333V128H234.6666666666667V170.6666666666667L320 106.6666666666667L234.6666666666667 42.6666666666667V85.3333333333334M405.3333333333333 0V298.6666666666667H170.6666666666667V170.6666666666667H128V298.6666666666667C128 322.1333333333334 147.2 341.3333333333334 170.6666666666667 341.3333333333334H405.3333333333333C428.8 341.3333333333334 448 322.1333333333334 448 298.6666666666667V0C448 -23.4666666666667 428.8 -42.6666666666666 405.3333333333333 -42.6666666666666H170.6666666666667C147.2 -42.6666666666666 128 -23.4666666666667 128 0V42.6666666666667H170.6666666666667V0H405.3333333333333z" /> + <glyph glyph-name="content-paste" + unicode="&#xF192;" + horiz-adv-x="512" d=" M405.3333333333333 21.3333333333334H106.6666666666667V362.6666666666667H149.3333333333333V298.6666666666667H362.6666666666667V362.6666666666667H405.3333333333333M256 405.3333333333333C267.7333333333334 405.3333333333333 277.3333333333333 395.7333333333334 277.3333333333333 384S267.7333333333334 362.6666666666667 256 362.6666666666667S234.6666666666667 372.2666666666667 234.6666666666667 384S244.2666666666667 405.3333333333333 256 405.3333333333333M405.3333333333333 405.3333333333333H316.16C307.2 430.08 283.7333333333334 448 256 448C228.2666666666667 448 204.8 430.08 195.84 405.3333333333333H106.6666666666667C83.2 405.3333333333333 64 386.1333333333334 64 362.6666666666667V21.3333333333334C64 -2.1333333333333 83.2 -21.3333333333333 106.6666666666667 -21.3333333333333H405.3333333333333C428.8 -21.3333333333333 448 -2.1333333333333 448 21.3333333333334V362.6666666666667C448 386.1333333333334 428.8 405.3333333333333 405.3333333333333 405.3333333333333z" /> + <glyph glyph-name="content-save" + unicode="&#xF193;" + horiz-adv-x="512" d=" M320 256H106.6666666666667V341.3333333333334H320M256 42.6666666666667C220.5866666666667 42.6666666666667 192 71.2533333333333 192 106.6666666666667S220.5866666666667 170.6666666666667 256 170.6666666666667S320 142.0800000000001 320 106.6666666666667S291.4133333333333 42.6666666666667 256 42.6666666666667M362.6666666666667 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V298.6666666666667L362.6666666666667 384z" /> + <glyph glyph-name="content-save-all" + unicode="&#xF194;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667V384H149.3333333333333V298.6666666666667H362.6666666666667M298.6666666666667 85.3333333333334C334.08 85.3333333333334 362.6666666666667 113.92 362.6666666666667 149.3333333333334S334.08 213.3333333333334 298.6666666666667 213.3333333333334S234.6666666666667 184.7466666666667 234.6666666666667 149.3333333333334S263.2533333333334 85.3333333333334 298.6666666666667 85.3333333333334M405.3333333333333 426.6666666666667L490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.6533333333333 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V384C106.6666666666667 407.4666666666667 125.8666666666667 426.6666666666667 149.3333333333333 426.6666666666667H405.3333333333333M21.3333333333333 298.6666666666667H64V0H362.6666666666667V-42.6666666666666H64C40.5333333333333 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V298.6666666666667z" /> + <glyph glyph-name="content-save-settings" + unicode="&#xF61B;" + horiz-adv-x="512" d=" M320 277.3333333333334V362.6666666666667H106.6666666666667V277.3333333333334H320M256 64C291.4133333333333 64 320 92.5866666666667 320 128S291.4133333333333 192 256 192S192 163.4133333333334 192 128S220.5866666666667 64 256 64M362.6666666666667 405.3333333333333L448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C82.9866666666667 21.3333333333334 64 40.5333333333333 64 64V362.6666666666667C64 386.1333333333334 83.2 405.3333333333333 106.6666666666667 405.3333333333333H362.6666666666667M234.6666666666667 -21.3333333333333H277.3333333333333V-64H234.6666666666667V-21.3333333333333M149.3333333333333 -21.3333333333333H192V-64H149.3333333333333V-21.3333333333333M320 -21.3333333333333H362.6666666666667V-64H320V-21.3333333333333z" /> + <glyph glyph-name="contrast" + unicode="&#xF195;" + horiz-adv-x="512" d=" M93.44 2.1333333333334C80.64 6.1866666666667 70.4 16.4266666666667 66.1333333333333 29.2266666666667L418.7733333333333 381.8666666666667C431.5733333333333 377.6 441.8133333333334 367.36 445.8666666666666 354.56L93.44 2.1333333333334M426.6666666666667 106.6666666666667V64H277.3333333333333V106.6666666666667H426.6666666666667M64 320H128V384H170.6666666666667V320H234.6666666666667V277.3333333333334H170.6666666666667V213.3333333333334H128V277.3333333333334H64V320z" /> + <glyph glyph-name="contrast-box" + unicode="&#xF196;" + horiz-adv-x="512" d=" M362.6666666666667 117.3333333333334H256V85.3333333333334H362.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667L405.3333333333333 341.3333333333334M117.3333333333333 288H160V330.6666666666667H192V288H234.6666666666667V256H192V213.3333333333334H160V256H117.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="contrast-circle" + unicode="&#xF197;" + horiz-adv-x="512" d=" M256 21.3333333333334C208.8533333333333 21.3333333333334 166.1866666666667 40.5333333333333 135.2533333333333 71.2533333333333L376.7466666666667 312.7466666666667C407.4666666666667 281.8133333333334 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334M128 277.3333333333334H170.6666666666667V320H202.6666666666667V277.3333333333334H245.3333333333333V245.3333333333334H202.6666666666667V202.6666666666667H170.6666666666667V245.3333333333334H128M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 106.6666666666667H362.6666666666667V138.6666666666667H256V106.6666666666667z" /> + <glyph glyph-name="cookie" + unicode="&#xF198;" + horiz-adv-x="512" d=" M256 384C149.9733333333333 384 64 298.0266666666667 64 192S149.9733333333333 0 256 0S448 85.9733333333334 448 192C448 202.6666666666667 447.1466666666667 213.3333333333334 445.2266666666667 224C439.4666666666667 234.6666666666667 426.6666666666667 234.6666666666667 426.6666666666667 234.6666666666667H384V256C384 277.3333333333334 362.6666666666667 277.3333333333334 362.6666666666667 277.3333333333334H320V298.6666666666667C320 320 298.6666666666667 320 298.6666666666667 320H277.3333333333333V362.6666666666667C277.3333333333333 384 256 384 256 384M202.6666666666667 320C220.3733333333333 320 234.6666666666667 305.7066666666667 234.6666666666667 288S220.3733333333333 256 202.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S184.96 320 202.6666666666667 320M138.6666666666667 234.6666666666667C156.3733333333333 234.6666666666667 170.6666666666667 220.3733333333333 170.6666666666667 202.6666666666667S156.3733333333333 170.6666666666667 138.6666666666667 170.6666666666667S106.6666666666667 184.96 106.6666666666667 202.6666666666667S120.96 234.6666666666667 138.6666666666667 234.6666666666667M245.3333333333333 213.3333333333334C263.04 213.3333333333334 277.3333333333333 199.04 277.3333333333333 181.3333333333334S263.04 149.3333333333334 245.3333333333333 149.3333333333334S213.3333333333333 163.6266666666667 213.3333333333333 181.3333333333334S227.6266666666667 213.3333333333334 245.3333333333333 213.3333333333334M352 170.6666666666667C369.7066666666666 170.6666666666667 384 156.3733333333333 384 138.6666666666667S369.7066666666666 106.6666666666667 352 106.6666666666667S320 120.96 320 138.6666666666667S334.2933333333333 170.6666666666667 352 170.6666666666667M234.6666666666667 106.6666666666667C252.3733333333334 106.6666666666667 266.6666666666667 92.3733333333333 266.6666666666667 74.6666666666667S252.3733333333334 42.6666666666667 234.6666666666667 42.6666666666667S202.6666666666667 56.96 202.6666666666667 74.6666666666667S216.96 106.6666666666667 234.6666666666667 106.6666666666667z" /> + <glyph glyph-name="copyright" + unicode="&#xF5E6;" + horiz-adv-x="512" d=" M215.04 216.32C216.1066666666667 223.36 218.4533333333333 229.5466666666667 221.44 234.6666666666667C224 240.2133333333334 228.6933333333334 244.6933333333334 234.0266666666667 248.1066666666667C239.1466666666667 251.3066666666667 245.3333333333333 252.8000000000001 253.44 253.0133333333334C258.3466666666667 252.8000000000001 262.8266666666667 251.9466666666667 266.6666666666667 250.24C271.1466666666667 248.32 274.9866666666667 245.3333333333334 277.9733333333333 242.5600000000001C280.96 239.36 283.3066666666666 235.5200000000001 285.2266666666667 231.2533333333334C287.1466666666667 226.9866666666668 288 222.2933333333334 288 217.6H326.4C325.9733333333334 227.6266666666667 324.0533333333334 236.8000000000001 320 245.3333333333334C316.8 253.4400000000001 311.8933333333333 260.6933333333334 305.4933333333334 266.6666666666668C298.6666666666667 272.6400000000001 291.4133333333333 277.3333333333334 282.4533333333333 280.7466666666668C273.4933333333334 284.1600000000001 263.68 285.6533333333334 252.8 285.6533333333334C238.9333333333333 285.6533333333334 226.7733333333333 283.3066666666668 216.5333333333333 278.4000000000001C206.2933333333333 273.4933333333334 197.76 266.6666666666668 190.9333333333333 258.7733333333335C184.1066666666667 250.4533333333334 178.9866666666667 240.8533333333334 175.7866666666667 229.7600000000001C172.5866666666667 218.6666666666668 170.6666666666667 207.1466666666667 170.6666666666667 194.7733333333334V189.0133333333334C170.6666666666667 176.6400000000001 172.3733333333334 165.1200000000001 175.5733333333334 154.0266666666668C178.7733333333334 142.9333333333334 183.8933333333334 133.3333333333334 190.72 125.2266666666668C197.5466666666667 117.3333333333334 206.0800000000001 110.5066666666668 216.32 105.8133333333335C226.56 101.1200000000001 238.7200000000001 98.5600000000001 252.5866666666667 98.5600000000001C262.6133333333334 98.5600000000001 272 100.2666666666668 280.7466666666667 103.4666666666668C289.4933333333334 106.6666666666668 297.1733333333333 111.1466666666668 303.7866666666667 117.3333333333335C310.4 122.6666666666668 315.7333333333334 129.2800000000002 320 136.9600000000002C323.4133333333333 144.6400000000001 325.76 152.7466666666668 325.9733333333333 161.4933333333335H288C288 157.0133333333334 286.5066666666667 152.9600000000002 284.5866666666667 149.3333333333335C282.6666666666667 145.2800000000002 280.1066666666667 142.0800000000002 277.3333333333333 139.3066666666668C273.7066666666667 136.5333333333334 270.08 134.4000000000001 265.8133333333334 132.9066666666668C261.76 131.4133333333334 257.4933333333334 130.9866666666668 253.0133333333334 130.7733333333334C245.3333333333334 130.9866666666668 238.9333333333334 132.4800000000001 234.0266666666667 135.6800000000001C228.6933333333334 138.6666666666668 224 143.5733333333334 221.44 149.3333333333335C218.4533333333333 154.2400000000001 216.1066666666667 160.6400000000001 215.04 167.6800000000001C213.9733333333333 174.7200000000002 213.3333333333333 181.9733333333335 213.3333333333333 189.0133333333334V194.7733333333334C213.3333333333333 202.6666666666668 213.9733333333333 209.2800000000001 215.04 216.3200000000001M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="counter" + unicode="&#xF199;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M85.3333333333333 320V64H234.6666666666667V320H85.3333333333333M426.6666666666667 64V320H400.2133333333334C405.3333333333333 308.48 404.2666666666667 297.1733333333334 404.2666666666667 295.8933333333333C402.7733333333334 281.6 392.7466666666668 266.6666666666667 389.12 261.3333333333334L339.4133333333334 206.9333333333333L410.24 207.36L410.4533333333334 181.3333333333333L299.5200000000001 181.9733333333333L298.6666666666668 203.3066666666666S363.7333333333334 272.2133333333333 366.9333333333334 278.4C369.9200000000001 284.3733333333333 382.0800000000001 320 352.0000000000001 320C325.7600000000001 318.9333333333333 328.7466666666668 292.2666666666667 328.7466666666668 292.2666666666667L295.8933333333335 292.0533333333333S296.1066666666668 306.1333333333334 304.0000000000001 320H277.3333333333333V64H332.3733333333334L332.16 82.3466666666667L352.8533333333333 82.5600000000001S372.2666666666667 85.9733333333334 372.48 104.96C373.3333333333333 126.2933333333334 355.2000000000001 126.2933333333334 352 126.2933333333334C349.2266666666667 126.2933333333334 329.1733333333333 125.2266666666667 329.1733333333333 107.7333333333334H296.7466666666667S297.6 151.6800000000001 352 151.6800000000001C407.4666666666667 151.6800000000001 404.48 108.5866666666668 404.48 108.5866666666668S405.3333333333333 81.9200000000001 380.8 71.8933333333334L391.8933333333333 64.0000000000001H426.6666666666667M190.2933333333333 106.6666666666667H158.2933333333333V230.4000000000001L119.8933333333333 218.4533333333334V244.6933333333334L186.88 268.5866666666667H190.2933333333333V106.6666666666667z" /> + <glyph glyph-name="cow" + unicode="&#xF19A;" + horiz-adv-x="512" d=" M224 64C229.9733333333333 64 234.6666666666667 59.3066666666667 234.6666666666667 53.3333333333334S229.9733333333333 42.6666666666667 224 42.6666666666667S213.3333333333333 47.36 213.3333333333333 53.3333333333334S218.0266666666667 64 224 64M288 64C293.9733333333333 64 298.6666666666667 59.3066666666667 298.6666666666667 53.3333333333334S293.9733333333333 42.6666666666667 288 42.6666666666667S277.3333333333333 47.36 277.3333333333333 53.3333333333334S282.0266666666667 64 288 64M213.3333333333333 213.3333333333334C225.0666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S225.0666666666667 170.6666666666667 213.3333333333333 170.6666666666667S192 180.2666666666667 192 192S201.6 213.3333333333334 213.3333333333333 213.3333333333334M298.6666666666667 213.3333333333334C310.4 213.3333333333334 320 203.7333333333334 320 192S310.4 170.6666666666667 298.6666666666667 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S286.9333333333333 213.3333333333334 298.6666666666667 213.3333333333334M384 64C384 16.8533333333334 326.6133333333334 -21.3333333333333 256 -21.3333333333333S128 16.8533333333334 128 64C128 83.2 137.6 100.9066666666667 153.6 115.2000000000001C137.6 136.5333333333334 128 163.2000000000001 128 192L130.56 218.0266666666667C119.04 214.8266666666667 105.1733333333333 214.8266666666667 93.8666666666667 218.0266666666667C72.1066666666667 224 39.2533333333333 248.5333333333334 44.16 265.6C49.0666666666667 282.6666666666667 89.8133333333334 285.8666666666667 111.5733333333333 279.4666666666667C124.16 275.8400000000001 137.6 266.6666666666668 145.4933333333334 256.8533333333334L157.6533333333333 274.1333333333334C144.8533333333333 297.6 149.3333333333333 362.6666666666667 213.3333333333333 384L211.4133333333333 381.0133333333333C205.44 371.6266666666667 190.08 341.9733333333334 206.2933333333333 309.9733333333334C221.6533333333333 316.3733333333334 238.2933333333333 320 256 320C273.7066666666667 320 290.3466666666667 316.3733333333334 305.7066666666667 309.9733333333334C321.92 341.9733333333334 306.56 371.6266666666667 300.5866666666667 381.0133333333333L298.6666666666667 384C362.6666666666667 362.6666666666667 367.1466666666667 297.6 354.3466666666667 274.1333333333334L366.5066666666667 256.8533333333334C374.4 266.6666666666667 387.84 275.8400000000001 400.4266666666666 279.4666666666667C422.1866666666666 285.8666666666667 462.9333333333333 282.6666666666667 467.84 265.6C472.7466666666667 248.5333333333333 439.8933333333333 224 418.1333333333334 218.0266666666667C406.8266666666667 214.8266666666667 392.9600000000001 214.8266666666667 381.4400000000001 218.0266666666667L384 192C384 163.2000000000001 374.4 136.5333333333334 358.4 115.2000000000001C374.4 100.9066666666667 384 83.2 384 64M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 87.4666666666667 170.6666666666667 64S208.8533333333333 21.3333333333334 256 21.3333333333334S341.3333333333333 40.5333333333333 341.3333333333333 64S303.1466666666667 106.6666666666667 256 106.6666666666667M256 149.3333333333334C279.8933333333333 149.3333333333334 302.2933333333333 144.8533333333334 321.4933333333334 137.3866666666667C333.8666666666667 152.1066666666667 341.3333333333333 170.6666666666667 341.3333333333333 192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334S170.6666666666667 239.1466666666667 170.6666666666667 192C170.6666666666667 170.6666666666667 178.1333333333333 152.1066666666667 190.5066666666667 137.3866666666667C209.7066666666667 144.8533333333334 232.1066666666667 149.3333333333334 256 149.3333333333334M300.5866666666667 381.0133333333333z" /> + <glyph glyph-name="credit-card" + unicode="&#xF19B;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H85.3333333333333V320H426.6666666666667M426.6666666666667 64H85.3333333333333V192H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="credit-card-multiple" + unicode="&#xF19C;" + horiz-adv-x="512" d=" M448 277.3333333333334V320H149.3333333333333V277.3333333333334H448M448 106.6666666666667V213.3333333333334H149.3333333333333V106.6666666666667H448M448 362.6666666666667C471.4666666666667 362.6666666666667 490.6666666666666 343.4666666666667 490.6666666666666 320V106.6666666666667C490.6666666666666 83.2 471.4666666666667 64 448 64H149.3333333333333C125.6533333333333 64 106.6666666666667 83.2 106.6666666666667 106.6666666666667V320C106.6666666666667 343.68 125.6533333333333 362.6666666666667 149.3333333333333 362.6666666666667H448M64 21.3333333333334H384V-21.3333333333333H64C40.5333333333333 -21.3333333333333 21.3333333333333 -2.1333333333333 21.3333333333333 21.3333333333334V256H64V21.3333333333334z" /> + <glyph glyph-name="credit-card-off" + unicode="&#xF5E4;" + horiz-adv-x="512" d=" M19.84 358.4L47.1466666666667 385.4933333333334L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L356.9066666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 324.6933333333334 43.52 329.1733333333334 45.0133333333333 333.2266666666667L19.84 358.4M426.6666666666667 277.3333333333334V320H166.8266666666667L124.16 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V64C469.3333333333333 51.2 463.7866666666666 39.8933333333334 454.8266666666667 32L422.8266666666667 64H426.6666666666667V192H294.8266666666667L209.4933333333334 277.3333333333334H426.6666666666667M85.3333333333333 277.3333333333334H100.9066666666667L85.3333333333333 292.9066666666667V277.3333333333334M85.3333333333333 192V64H314.24L186.24 192H85.3333333333333z" /> + <glyph glyph-name="credit-card-scan" + unicode="&#xF19D;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667H128V405.3333333333333H42.6666666666667C19.2 405.3333333333333 0 386.1333333333334 0 362.6666666666667V277.3333333333334H42.6666666666667V362.6666666666667M469.3333333333333 405.3333333333333H384V362.6666666666667H469.3333333333333V277.3333333333334H512V362.6666666666667C512 386.1333333333334 492.8 405.3333333333333 469.3333333333333 405.3333333333333M42.6666666666667 106.6666666666667H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H128V21.3333333333334H42.6666666666667V106.6666666666667M469.3333333333333 21.3333333333334H384V-21.3333333333333H469.3333333333333C492.8 -21.3333333333333 512 -2.1333333333333 512 21.3333333333334V106.6666666666667H469.3333333333333V21.3333333333334M85.3333333333333 277.3333333333334V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H384C407.4666666666667 64 426.6666666666667 83.2 426.6666666666667 106.6666666666667V277.3333333333334C426.6666666666667 300.8 407.4666666666667 320 384 320H128C104.5333333333333 320 85.3333333333333 300.8 85.3333333333333 277.3333333333334M128 106.6666666666667V192H384V106.6666666666667H128M384 277.3333333333334V234.6666666666667H128V277.3333333333334H384z" /> + <glyph glyph-name="crop" + unicode="&#xF19E;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334V426.6666666666667H106.6666666666667V341.3333333333334H21.3333333333333V298.6666666666667H106.6666666666667V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H362.6666666666667V-42.6666666666666H405.3333333333333V42.6666666666667H490.6666666666666V85.3333333333334M362.6666666666667 128H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H192V298.6666666666667H362.6666666666667V128z" /> + <glyph glyph-name="crop-free" + unicode="&#xF19F;" + horiz-adv-x="512" d=" M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667M64 341.3333333333334V256H106.6666666666667V341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="crop-landscape" + unicode="&#xF1A0;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H106.6666666666667V298.6666666666667H405.3333333333333M405.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H405.3333333333333C428.8 42.6666666666667 448 61.8666666666667 448 85.3333333333334V298.6666666666667C448 322.3466666666667 428.8 341.3333333333334 405.3333333333333 341.3333333333334z" /> + <glyph glyph-name="crop-portrait" + unicode="&#xF1A1;" + horiz-adv-x="512" d=" M362.6666666666667 42.6666666666667H149.3333333333333V341.3333333333334H362.6666666666667M362.6666666666667 384H149.3333333333333C125.8666666666667 384 106.6666666666667 364.8 106.6666666666667 341.3333333333334V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0H362.6666666666667C386.1333333333334 0 405.3333333333333 19.2 405.3333333333333 42.6666666666667V341.3333333333334C405.3333333333333 365.0133333333333 386.1333333333334 384 362.6666666666667 384z" /> + <glyph glyph-name="crop-square" + unicode="&#xF1A2;" + horiz-adv-x="512" d=" M384 64H128V320H384M384 362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667z" /> + <glyph glyph-name="crosshairs" + unicode="&#xF1A3;" + horiz-adv-x="512" d=" M65.0666666666667 170.6666666666667H21.3333333333333V213.3333333333334H65.0666666666667C74.6666666666667 302.2933333333334 145.7066666666667 373.3333333333334 234.6666666666667 382.9333333333334V426.6666666666667H277.3333333333333V382.9333333333334C366.2933333333334 373.3333333333334 437.3333333333333 302.2933333333334 446.9333333333333 213.3333333333334H490.6666666666666V170.6666666666667H446.9333333333333C437.3333333333333 81.7066666666667 366.2933333333333 10.6666666666667 277.3333333333333 1.0666666666667V-42.6666666666666H234.6666666666667V1.0666666666667C145.7066666666667 10.6666666666667 74.6666666666667 81.7066666666667 65.0666666666667 170.6666666666667M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="crosshairs-gps" + unicode="&#xF1A4;" + horiz-adv-x="512" d=" M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M65.0666666666667 170.6666666666667H21.3333333333333V213.3333333333334H65.0666666666667C74.6666666666667 302.2933333333334 145.7066666666667 373.3333333333334 234.6666666666667 382.9333333333334V426.6666666666667H277.3333333333333V382.9333333333334C366.2933333333334 373.3333333333334 437.3333333333333 302.2933333333334 446.9333333333333 213.3333333333334H490.6666666666666V170.6666666666667H446.9333333333333C437.3333333333333 81.7066666666667 366.2933333333333 10.6666666666667 277.3333333333333 1.0666666666667V-42.6666666666666H234.6666666666667V1.0666666666667C145.7066666666667 10.6666666666667 74.6666666666667 81.7066666666667 65.0666666666667 170.6666666666667M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="crown" + unicode="&#xF1A5;" + horiz-adv-x="512" d=" M106.6666666666667 106.6666666666667L64 341.3333333333334L181.3333333333333 192L256 341.3333333333334L330.6666666666667 192L448 341.3333333333334L405.3333333333333 106.6666666666667H106.6666666666667M405.3333333333333 42.6666666666667C405.3333333333333 30.9333333333333 395.7333333333334 21.3333333333334 384 21.3333333333334H128C116.2666666666667 21.3333333333334 106.6666666666667 30.9333333333333 106.6666666666667 42.6666666666667V64H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="cube" + unicode="&#xF1A6;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L128.8533333333333 288L256 216.5333333333334L383.1466666666667 288L256 359.4666666666667z" /> + <glyph glyph-name="cube-outline" + unicode="&#xF1A7;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L128.8533333333333 288L256 216.5333333333334L383.1466666666667 288L256 359.4666666666667M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V251.52L277.3333333333333 179.6266666666667V36.48L405.3333333333333 108.5866666666666z" /> + <glyph glyph-name="cube-send" + unicode="&#xF1A8;" + horiz-adv-x="512" d=" M341.3333333333333 362.6666666666667L192 276.48V107.52L341.3333333333333 21.3333333333334L490.6666666666666 107.52V276.48M341.3333333333333 313.3866666666667L422.4 266.6666666666668L341.3333333333333 219.9466666666667L260.48 266.6666666666668M0 298.6666666666667V256H149.3333333333333V298.6666666666667M234.6666666666667 232.32L320 183.04V82.9866666666667L234.6666666666667 132.0533333333334M448 232.32V132.0533333333334L362.6666666666667 82.9866666666667V183.0400000000001M42.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334M85.3333333333333 128V85.3333333333334H149.3333333333333V128" /> + <glyph glyph-name="cube-unfolded" + unicode="&#xF1A9;" + horiz-adv-x="512" d=" M128 256V362.6666666666667H277.3333333333333V256H490.6666666666666V106.6666666666667H384V0H234.6666666666667V106.6666666666667H21.3333333333333V256H128M341.3333333333333 106.6666666666667H277.3333333333333V42.6666666666667H341.3333333333333V106.6666666666667M170.6666666666667 256H234.6666666666667V320H170.6666666666667V256M128 149.3333333333334V213.3333333333334H64V149.3333333333334H128M384 213.3333333333334V149.3333333333334H448V213.3333333333334H384M277.3333333333333 213.3333333333334V149.3333333333334H341.3333333333333V213.3333333333334H277.3333333333333M170.6666666666667 213.3333333333334V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667z" /> + <glyph glyph-name="cup" + unicode="&#xF1AA;" + horiz-adv-x="512" d=" M390.8266666666667 277.3333333333334H120.96L111.5733333333333 362.6666666666667H400.4266666666666M64 405.3333333333333L106.6666666666667 16.4266666666667C109.44 -4.9066666666666 127.36 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C384 -21.3333333333333 402.56 -4.9066666666666 405.3333333333333 16.4266666666667L448 405.3333333333333H64z" /> + <glyph glyph-name="cup-off" + unicode="&#xF5E5;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L389.76 -11.52C382.5066666666667 -17.7066666666666 373.3333333333333 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C127.36 -21.3333333333333 109.44 -4.9066666666666 106.6666666666667 16.4266666666667L75.3066666666667 302.9333333333334L21.3333333333333 356.9066666666667M390.8266666666667 277.3333333333334L400.4266666666666 362.6666666666667H124.16L81.4933333333333 405.3333333333333H448L411.52 75.3066666666667L209.4933333333334 277.3333333333334H390.8266666666667z" /> + <glyph glyph-name="cup-water" + unicode="&#xF1AB;" + horiz-adv-x="512" d=" M390.8266666666667 277.3333333333334H120.96L111.5733333333333 362.6666666666667H400.4266666666666M256 42.6666666666667C220.5866666666667 42.6666666666667 192 71.2533333333333 192 106.6666666666667C192 149.3333333333334 256 221.8666666666667 256 221.8666666666667S320 149.3333333333334 320 106.6666666666667C320 71.2533333333333 291.4133333333333 42.6666666666667 256 42.6666666666667M64 405.3333333333333L106.6666666666667 16.4266666666667C109.44 -4.9066666666666 127.36 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C384 -21.3333333333333 402.56 -4.9066666666666 405.3333333333333 16.4266666666667L448 405.3333333333333H64z" /> + <glyph glyph-name="currency-btc" + unicode="&#xF1AC;" + horiz-adv-x="512" d=" M96 341.3333333333334H170.6666666666667V405.3333333333333H213.3333333333333V341.3333333333334H245.3333333333333V405.3333333333333H288V341.3333333333334C405.3333333333333 341.3333333333334 405.3333333333333 213.3333333333334 341.3333333333333 208C426.6666666666667 213.3333333333334 448 42.6666666666667 288 42.6666666666667V-21.3333333333333H245.3333333333333V42.6666666666667H213.3333333333333V-21.3333333333333H170.6666666666667V42.6666666666667H96L106.6666666666667 85.3333333333334H128C139.7333333333333 85.3333333333334 149.3333333333333 94.9333333333333 149.3333333333333 106.6666666666667V277.3333333333334C149.3333333333333 289.0666666666667 139.7333333333333 298.6666666666667 128 298.6666666666667H96V341.3333333333334M213.3333333333333 298.6666666666667V213.3333333333334S309.3333333333333 208 309.3333333333333 256S213.3333333333333 298.6666666666667 213.3333333333333 298.6666666666667M213.3333333333333 181.3333333333334V85.3333333333334S330.6666666666667 85.3333333333334 330.6666666666667 133.3333333333334S213.3333333333333 181.3333333333334 213.3333333333333 181.3333333333334z" /> + <glyph glyph-name="currency-eur" + unicode="&#xF1AD;" + horiz-adv-x="512" d=" M150.8266666666667 213.3333333333334L149.3333333333333 192L150.8266666666667 170.6666666666667H370.1333333333334L352 128H163.6266666666667C187.7333333333334 77.6533333333334 239.1466666666667 42.6666666666667 298.6666666666667 42.6666666666667C346.24 42.6666666666667 388.6933333333333 64.8533333333334 416 99.6266666666667V40.1066666666667C384 14.9333333333333 342.8266666666667 0 298.6666666666667 0C215.04 0 144 53.3333333333334 117.3333333333333 128H42.6666666666667L64 170.6666666666667H107.7333333333333L106.6666666666667 192L107.7333333333333 213.3333333333334H42.6666666666667L64 256H117.3333333333333C144 330.6666666666667 215.04 384 298.6666666666667 384C352 384 401.0666666666667 361.8133333333334 435.84 326.1866666666667L417.4933333333334 282.6666666666667C390.1866666666666 318.2933333333334 347.0933333333333 341.3333333333334 298.6666666666667 341.3333333333334C239.1466666666667 341.3333333333334 187.7333333333334 306.3466666666667 163.6266666666667 256H406.1866666666666L388.0533333333333 213.3333333333334H150.8266666666667z" /> + <glyph glyph-name="currency-gbp" + unicode="&#xF1AE;" + horiz-adv-x="512" d=" M138.6666666666667 0V26.6666666666667C158.72 36.48 175.7866666666667 51.84 187.9466666666667 70.4C200.1066666666667 88.96 206.2933333333333 109.8666666666667 206.5066666666667 133.3333333333334L206.08 154.24L204.16 170.6666666666667H149.3333333333333V213.3333333333334H200.5333333333333C197.3333333333333 231.04 195.4133333333333 249.3866666666667 194.7733333333334 272C195.4133333333333 306.9866666666667 205.6533333333333 334.2933333333334 225.7066666666667 353.92C245.3333333333333 373.3333333333334 272.4266666666666 384 305.4933333333334 384C320.64 384 333.6533333333333 382.5066666666667 344.1066666666667 379.7333333333334C354.7733333333333 377.1733333333334 362.6666666666667 373.9733333333334 369.28 370.1333333333334L357.5466666666666 333.0133333333333C351.9999999999999 336 345.3866666666666 338.7733333333333 336.8533333333333 341.3333333333333C328.1066666666666 343.4666666666667 317.6533333333333 344.5333333333333 305.4933333333333 344.7466666666667C282.6666666666666 344.32 266.6666666666666 337.28 255.9999999999999 323.6266666666667C245.3333333333333 310.1866666666667 240.8533333333333 292.6933333333334 241.0666666666666 271.36L243.2 239.5733333333333L247.4666666666666 213.3333333333333H330.6666666666666V170.6666666666666H251.5199999999999C253.4399999999999 149.3333333333333 252.5866666666666 128 248.5333333333332 107.52C242.1333333333332 81.92 229.1199999999999 60.16 209.7066666666665 42.6666666666667H384V0H138.6666666666667z" /> + <glyph glyph-name="currency-inr" + unicode="&#xF1AF;" + horiz-adv-x="512" d=" M170.6666666666667 384H384L362.6666666666667 341.3333333333334H293.12C303.36 328.9600000000001 311.04 314.4533333333334 315.52 298.6666666666667H384L362.6666666666667 256H320C314.6666666666667 201.1733333333334 271.7866666666667 157.2266666666667 217.6 150.1866666666667V149.3333333333334H202.6666666666667L330.6666666666667 0H277.3333333333333L149.3333333333333 149.3333333333334V192H202.6666666666667C240.2133333333333 192 271.36 219.7333333333334 276.48 256H149.3333333333333L170.6666666666667 298.6666666666667H270.08C258.1333333333334 323.8400000000001 232.5333333333334 341.3333333333334 202.6666666666667 341.3333333333334H149.3333333333333L170.6666666666667 384z" /> + <glyph glyph-name="currency-ngn" + unicode="&#xF1B0;" + horiz-adv-x="512" d=" M85.3333333333333 256H128V384H170.6666666666667L243.6266666666667 256H341.3333333333333V384H384V256H426.6666666666667V213.3333333333334H384V170.6666666666667H426.6666666666667V128H384V0H341.3333333333333L268.16 128H170.6666666666667V0H128V128H85.3333333333333V170.6666666666667H128V213.3333333333334H85.3333333333333V256M170.6666666666667 256H194.7733333333333L170.6666666666667 298.0266666666667V256M170.6666666666667 213.3333333333334V170.6666666666667H243.6266666666667L219.3066666666667 213.3333333333334H170.6666666666667M341.3333333333333 85.3333333333334V128H316.8L341.3333333333333 85.3333333333334M267.9466666666667 213.3333333333334L292.48 170.6666666666667H341.3333333333333V213.3333333333334H267.9466666666667z" /> + <glyph glyph-name="currency-rub" + unicode="&#xF1B1;" + horiz-adv-x="512" d=" M128 234.6666666666667H149.3333333333333V384H309.3333333333333C362.6666666666667 384 405.3333333333333 341.3333333333334 405.3333333333333 288S362.6666666666667 192 309.3333333333333 192H192V149.3333333333334H320V106.6666666666667H192V0H149.3333333333333V106.6666666666667H128V149.3333333333334H149.3333333333333V192H128V234.6666666666667M309.3333333333333 341.3333333333334H192V234.6666666666667H309.3333333333333C338.7733333333333 234.6666666666667 362.6666666666667 258.5600000000001 362.6666666666667 288S338.7733333333333 341.3333333333334 309.3333333333333 341.3333333333334z" /> + <glyph glyph-name="currency-try" + unicode="&#xF1B2;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 85.9733333333334 319.36 0 213.3333333333333 0H170.6666666666667V175.5733333333334L106.6666666666667 152.1066666666667V197.5466666666667L170.6666666666667 221.0133333333334V258.7733333333334L106.6666666666667 235.52V280.7466666666667L170.6666666666667 304.2133333333334V384H213.3333333333333V320L320 358.4V313.1733333333334L213.3333333333333 274.3466666666667V236.3733333333334L320 275.2000000000001V229.76L213.3333333333333 190.9333333333333V42.6666666666667C295.8933333333333 42.6666666666667 362.6666666666667 109.44 362.6666666666667 192H405.3333333333333z" /> + <glyph glyph-name="currency-usd" + unicode="&#xF1B3;" + horiz-adv-x="512" d=" M251.7333333333334 215.4666666666667C203.3066666666667 228.0533333333334 187.7333333333334 241.0666666666667 187.7333333333334 261.3333333333334C187.7333333333334 284.5866666666667 209.28 300.8 245.3333333333333 300.8C283.3066666666666 300.8 297.3866666666667 282.6666666666667 298.6666666666667 256H345.8133333333334C344.32 292.6933333333334 321.92 326.4 277.3333333333333 337.2800000000001V384H213.3333333333333V337.92C171.9466666666667 328.9600000000001 138.6666666666667 302.0800000000001 138.6666666666667 260.9066666666667C138.6666666666667 211.6266666666667 179.4133333333333 187.0933333333334 238.9333333333333 172.8000000000001C292.2666666666667 160.0000000000001 302.9333333333333 141.2266666666667 302.9333333333333 121.3866666666667C302.9333333333333 106.6666666666667 292.48 83.2000000000001 245.3333333333333 83.2000000000001C201.3866666666667 83.2000000000001 184.1066666666666 102.8266666666668 181.3333333333333 128.0000000000001H134.8266666666667C137.3866666666667 81.2800000000001 172.3733333333333 55.0400000000001 213.3333333333333 46.2933333333334V0H277.3333333333333V45.8666666666667C318.9333333333333 53.3333333333334 352 77.8666666666667 352 121.6C352 182.1866666666667 300.16 202.6666666666667 251.7333333333334 215.4666666666667z" /> + <glyph glyph-name="cursor-default" + unicode="&#xF1B4;" + horiz-adv-x="512" d=" M290.9866666666667 -20.6933333333333C280.32 -25.8133333333333 267.52 -21.3333333333333 262.6133333333334 -10.6666666666666L216.1066666666667 90.4533333333334L162.56 47.3600000000001C158.9333333333333 44.3733333333334 154.4533333333334 42.6666666666667 149.3333333333334 42.6666666666667C137.6 42.6666666666667 128 52.2666666666668 128 64.0000000000001V384C128 395.7333333333334 137.6 405.3333333333333 149.3333333333334 405.3333333333333C154.4533333333334 405.3333333333333 159.36 403.4133333333334 162.9866666666667 400.4266666666667L163.2 400.64L408.32 194.9866666666667C417.4933333333334 187.3066666666667 418.56 173.8666666666667 411.0933333333333 164.9066666666667C407.8933333333333 161.0666666666667 403.4133333333333 158.5066666666667 398.9333333333333 157.6533333333333L331.52 144.4266666666667L378.4533333333333 43.52C384 32.8533333333334 378.88 20.2666666666667 368.2133333333333 15.36L290.9866666666666 -20.6933333333334z" /> + <glyph glyph-name="cursor-default-outline" + unicode="&#xF1B5;" + horiz-adv-x="512" d=" M214.8266666666667 143.5733333333334C225.4933333333334 148.6933333333334 238.08 144 243.2 133.3333333333334L292.2666666666667 26.88L330.6666666666667 45.0133333333333L281.3866666666667 151.2533333333333C276.2666666666667 161.92 280.96 174.72 291.6266666666667 179.6266666666667L297.6 181.3333333333334L346.6666666666667 190.9333333333333L170.6666666666667 338.7733333333333V108.8L209.4933333333334 140.16L214.8266666666667 143.5733333333334M290.9866666666667 -20.6933333333333C280.32 -25.8133333333333 267.52 -21.3333333333333 262.6133333333334 -10.6666666666666L216.1066666666667 90.4533333333334L162.56 47.3600000000001C158.9333333333333 44.3733333333334 154.4533333333334 42.6666666666667 149.3333333333334 42.6666666666667C137.6 42.6666666666667 128 52.2666666666668 128 64.0000000000001V384C128 395.7333333333334 137.6 405.3333333333333 149.3333333333334 405.3333333333333C154.4533333333334 405.3333333333333 159.36 403.4133333333334 162.9866666666667 400.4266666666667L163.2 400.64L408.32 194.9866666666667C417.4933333333334 187.3066666666667 418.56 173.8666666666667 411.0933333333333 164.9066666666667C407.8933333333333 161.0666666666667 403.4133333333333 158.5066666666667 398.9333333333333 157.6533333333333L331.52 144.4266666666667L378.4533333333333 43.52C384 32.8533333333334 378.88 20.2666666666667 368.2133333333333 15.36L290.9866666666666 -20.6933333333334z" /> + <glyph glyph-name="cursor-move" + unicode="&#xF1B6;" + horiz-adv-x="512" d=" M277.3333333333333 320V213.3333333333334H384V282.6666666666667L474.6666666666666 192L384 101.3333333333334V170.6666666666667H277.3333333333333V64H346.6666666666667L256 -26.6666666666666L165.3333333333333 64H234.6666666666667V170.6666666666667H128V101.3333333333334L37.3333333333333 192L128 282.6666666666667V213.3333333333334H234.6666666666667V320H165.3333333333333L256 410.6666666666667L346.6666666666667 320H277.3333333333333z" /> + <glyph glyph-name="cursor-pointer" + unicode="&#xF1B7;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C236.8 405.3333333333333 256 386.1333333333334 256 362.6666666666667V266.6666666666667S298.6666666666667 272 298.6666666666667 250.6666666666667C298.6666666666667 250.6666666666667 341.3333333333333 256 341.3333333333333 234.6666666666667C341.3333333333333 234.6666666666667 384 240 384 218.6666666666667C384 218.6666666666667 426.6666666666667 224 426.6666666666667 202.6666666666667V128C426.6666666666667 106.6666666666667 362.6666666666667 0 362.6666666666667 -21.3333333333333H192S149.3333333333333 128 85.3333333333333 170.6666666666667C85.3333333333333 170.6666666666667 64 298.6666666666667 170.6666666666667 192V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="cursor-text" + unicode="&#xF5E7;" + horiz-adv-x="512" d=" M277.3333333333333 42.6666666666667C277.3333333333333 30.9333333333333 286.9333333333333 21.3333333333334 298.6666666666667 21.3333333333334H341.3333333333333V-21.3333333333333H288C276.2666666666667 -21.3333333333333 256 -11.7333333333333 256 0C256 -11.7333333333333 235.7333333333334 -21.3333333333333 224 -21.3333333333333H170.6666666666667V21.3333333333334H213.3333333333333C225.0666666666667 21.3333333333334 234.6666666666667 30.9333333333333 234.6666666666667 42.6666666666667V341.3333333333334C234.6666666666667 353.0666666666667 225.0666666666667 362.6666666666667 213.3333333333333 362.6666666666667H170.6666666666667V405.3333333333333H224C235.7333333333334 405.3333333333333 256 395.7333333333334 256 384C256 395.7333333333334 276.2666666666667 405.3333333333333 288 405.3333333333333H341.3333333333333V362.6666666666667H298.6666666666667C286.9333333333333 362.6666666666667 277.3333333333333 353.0666666666667 277.3333333333333 341.3333333333334V42.6666666666667z" /> + <glyph glyph-name="database" + unicode="&#xF1B8;" + horiz-adv-x="512" d=" M256 384C161.7066666666667 384 85.3333333333333 345.8133333333334 85.3333333333333 298.6666666666667S161.7066666666667 213.3333333333334 256 213.3333333333334S426.6666666666667 251.52 426.6666666666667 298.6666666666667S350.2933333333334 384 256 384M85.3333333333333 256V192C85.3333333333333 144.8533333333334 161.7066666666667 106.6666666666667 256 106.6666666666667S426.6666666666667 144.8533333333334 426.6666666666667 192V256C426.6666666666667 208.8533333333333 350.2933333333334 170.6666666666667 256 170.6666666666667S85.3333333333333 208.8533333333333 85.3333333333333 256M85.3333333333333 149.3333333333334V85.3333333333334C85.3333333333333 38.1866666666667 161.7066666666667 0 256 0S426.6666666666667 38.1866666666667 426.6666666666667 85.3333333333334V149.3333333333334C426.6666666666667 102.1866666666667 350.2933333333334 64 256 64S85.3333333333333 102.1866666666667 85.3333333333333 149.3333333333334z" /> + <glyph glyph-name="database-minus" + unicode="&#xF1B9;" + horiz-adv-x="512" d=" M192 384C97.7066666666667 384 21.3333333333333 345.8133333333334 21.3333333333333 298.6666666666667S97.7066666666667 213.3333333333334 192 213.3333333333334S362.6666666666667 251.52 362.6666666666667 298.6666666666667S286.2933333333333 384 192 384M21.3333333333333 256V192C21.3333333333333 144.8533333333334 97.7066666666667 106.6666666666667 192 106.6666666666667S362.6666666666667 144.8533333333334 362.6666666666667 192V256C362.6666666666667 208.8533333333333 286.2933333333333 170.6666666666667 192 170.6666666666667S21.3333333333333 208.8533333333333 21.3333333333333 256M21.3333333333333 149.3333333333334V85.3333333333334C21.3333333333333 38.1866666666667 97.7066666666667 0 192 0C222.08 0 251.52 4.0533333333334 277.3333333333333 11.52V75.52C251.52 68.0533333333333 222.08 64 192 64C97.7066666666667 64 21.3333333333333 102.1866666666667 21.3333333333333 149.3333333333334M320 85.3333333333334V42.6666666666667H490.6666666666666V85.3333333333334" /> + <glyph glyph-name="database-plus" + unicode="&#xF1BA;" + horiz-adv-x="512" d=" M192 384C97.7066666666667 384 21.3333333333333 345.8133333333334 21.3333333333333 298.6666666666667S97.7066666666667 213.3333333333334 192 213.3333333333334S362.6666666666667 251.52 362.6666666666667 298.6666666666667S286.2933333333333 384 192 384M21.3333333333333 256V192C21.3333333333333 144.8533333333334 97.7066666666667 106.6666666666667 192 106.6666666666667S362.6666666666667 144.8533333333334 362.6666666666667 192V256C362.6666666666667 208.8533333333333 286.2933333333333 170.6666666666667 192 170.6666666666667S21.3333333333333 208.8533333333333 21.3333333333333 256M21.3333333333333 149.3333333333334V85.3333333333334C21.3333333333333 38.1866666666667 97.7066666666667 0 192 0C222.08 0 251.52 4.0533333333334 277.3333333333333 11.52V75.52C251.52 68.0533333333333 222.08 64 192 64C97.7066666666667 64 21.3333333333333 102.1866666666667 21.3333333333333 149.3333333333334M384 149.3333333333334V85.3333333333334H320V42.6666666666667H384V-21.3333333333333H426.6666666666667V42.6666666666667H490.6666666666666V85.3333333333334H426.6666666666667V149.3333333333334" /> + <glyph glyph-name="debug-step-into" + unicode="&#xF1BB;" + horiz-adv-x="512" d=" M256 -21.3333333333333C232.5333333333334 -21.3333333333333 213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334S232.5333333333334 64 256 64S298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333M277.3333333333333 405.3333333333333V170.6666666666667L373.3333333333333 266.6666666666667L403.6266666666667 236.3733333333334L256 88.7466666666667L108.3733333333333 236.3733333333334L138.6666666666667 266.6666666666667L234.6666666666667 170.6666666666667V405.3333333333333H277.3333333333333z" /> + <glyph glyph-name="debug-step-out" + unicode="&#xF1BC;" + horiz-adv-x="512" d=" M256 -21.3333333333333C232.5333333333334 -21.3333333333333 213.3333333333333 -2.1333333333333 213.3333333333333 21.3333333333334S232.5333333333334 64 256 64S298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333M277.3333333333333 106.6666666666667H234.6666666666667V320L138.6666666666667 224L108.3733333333333 254.2933333333334L256 401.92L403.6266666666667 254.2933333333334L373.3333333333333 224L277.3333333333333 320V106.6666666666667z" /> + <glyph glyph-name="debug-step-over" + unicode="&#xF1BD;" + horiz-adv-x="512" d=" M256 149.3333333333334C279.4666666666667 149.3333333333334 298.6666666666667 130.1333333333333 298.6666666666667 106.6666666666667S279.4666666666667 64 256 64S213.3333333333333 83.2 213.3333333333333 106.6666666666667S232.5333333333334 149.3333333333334 256 149.3333333333334M500.48 258.9866666666667L466.56 112L320 145.92L401.0666666666667 196.6933333333333C370.9866666666667 245.3333333333334 317.2266666666667 277.3333333333334 256 277.3333333333334C171.7333333333334 277.3333333333334 101.76 216.32 87.8933333333333 135.8933333333334L45.8666666666667 143.36C63.1466666666667 243.6266666666667 150.6133333333333 320 256 320C332.3733333333334 320 399.5733333333333 279.68 437.3333333333333 219.3066666666667L500.48 258.9866666666667z" /> + <glyph glyph-name="decimal-decrease" + unicode="&#xF1BE;" + horiz-adv-x="512" d=" M256 85.3333333333334L320 21.3333333333334V64H448V106.6666666666667H320V149.3333333333334L256 85.3333333333334M192 341.3333333333334C227.4133333333334 341.3333333333334 256 312.7466666666667 256 277.3333333333334V213.3333333333334C256 177.92 227.4133333333334 149.3333333333334 192 149.3333333333334S128 177.92 128 213.3333333333334V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334M192 298.6666666666667C180.2666666666667 298.6666666666667 170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334V213.3333333333334C170.6666666666667 201.6 180.2666666666667 192 192 192S213.3333333333333 201.6 213.3333333333333 213.3333333333334V277.3333333333334C213.3333333333333 289.0666666666667 203.7333333333334 298.6666666666667 192 298.6666666666667M85.3333333333333 192C97.0666666666667 192 106.6666666666667 182.4 106.6666666666667 170.6666666666667S97.0666666666667 149.3333333333334 85.3333333333333 149.3333333333334S64 158.9333333333333 64 170.6666666666667S73.6 192 85.3333333333333 192z" /> + <glyph glyph-name="decimal-increase" + unicode="&#xF1BF;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334L405.3333333333333 21.3333333333334V64H277.3333333333333V106.6666666666667H405.3333333333333V149.3333333333334L469.3333333333333 85.3333333333334M192 341.3333333333334C227.4133333333334 341.3333333333334 256 312.7466666666667 256 277.3333333333334V213.3333333333334C256 177.92 227.4133333333334 149.3333333333334 192 149.3333333333334S128 177.92 128 213.3333333333334V277.3333333333334C128 312.7466666666667 156.5866666666667 341.3333333333334 192 341.3333333333334M192 298.6666666666667C180.2666666666667 298.6666666666667 170.6666666666667 289.0666666666667 170.6666666666667 277.3333333333334V213.3333333333334C170.6666666666667 201.6 180.2666666666667 192 192 192S213.3333333333333 201.6 213.3333333333333 213.3333333333334V277.3333333333334C213.3333333333333 289.0666666666667 203.7333333333334 298.6666666666667 192 298.6666666666667M341.3333333333333 341.3333333333334C376.7466666666667 341.3333333333334 405.3333333333333 312.7466666666667 405.3333333333333 277.3333333333334V213.3333333333334C405.3333333333333 177.92 376.7466666666667 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 177.92 277.3333333333333 213.3333333333334V277.3333333333334C277.3333333333333 312.7466666666667 305.92 341.3333333333334 341.3333333333333 341.3333333333334M341.3333333333333 298.6666666666667C329.6 298.6666666666667 320 289.0666666666667 320 277.3333333333334V213.3333333333334C320 201.6 329.6 192 341.3333333333333 192S362.6666666666667 201.6 362.6666666666667 213.3333333333334V277.3333333333334C362.6666666666667 289.0666666666667 353.0666666666667 298.6666666666667 341.3333333333333 298.6666666666667M85.3333333333333 192C97.0666666666667 192 106.6666666666667 182.4 106.6666666666667 170.6666666666667S97.0666666666667 149.3333333333334 85.3333333333333 149.3333333333334S64 158.9333333333333 64 170.6666666666667S73.6 192 85.3333333333333 192z" /> + <glyph glyph-name="delete" + unicode="&#xF1C0;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667H330.6666666666667L309.3333333333333 384H202.6666666666667L181.3333333333333 362.6666666666667H106.6666666666667V320H405.3333333333333M128 42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H341.3333333333333C364.8 0 384 19.2 384 42.6666666666667V298.6666666666667H128V42.6666666666667z" /> + <glyph glyph-name="delete-forever" + unicode="&#xF5E8;" + horiz-adv-x="512" d=" M128 42.6666666666667C128 19.2 147.2 0 170.6666666666667 0H341.3333333333333C364.8 0 384 19.2 384 42.6666666666667V298.6666666666667H128V42.6666666666667M180.48 194.56L210.56 224.6400000000001L256 179.4133333333334L301.2266666666667 224.6400000000001L331.3066666666667 194.56L286.08 149.3333333333334L331.3066666666667 104.1066666666667L301.2266666666667 74.0266666666666L256 119.2533333333333L210.7733333333333 74.0266666666666L180.6933333333333 104.1066666666667L225.92 149.3333333333334L180.48 194.56M330.6666666666667 362.6666666666667L309.3333333333333 384H202.6666666666667L181.3333333333333 362.6666666666667H106.6666666666667V320H405.3333333333333V362.6666666666667H330.6666666666667z" /> + <glyph glyph-name="delete-sweep" + unicode="&#xF5E9;" + horiz-adv-x="512" d=" M320 106.6666666666667H405.3333333333333V64H320V106.6666666666667M320 277.3333333333334H469.3333333333333V234.6666666666667H320V277.3333333333334M320 192H448V149.3333333333334H320V192M64 64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H234.6666666666667C258.1333333333334 21.3333333333334 277.3333333333333 40.5333333333333 277.3333333333333 64V277.3333333333334H64V64M298.6666666666667 341.3333333333334H234.6666666666667L213.3333333333333 362.6666666666667H128L106.6666666666667 341.3333333333334H42.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334z" /> + <glyph glyph-name="delete-variant" + unicode="&#xF1C1;" + horiz-adv-x="512" d=" M448.64 384L384 14.72C380.3733333333333 -5.76 362.6666666666667 -21.3333333333333 341.3333333333333 -21.3333333333333H170.6666666666667C149.3333333333333 -21.3333333333333 131.6266666666667 -5.76 128 14.72L63.36 384H448.64M114.3466666666667 341.3333333333334L170.6666666666667 21.3333333333334H341.3333333333333L397.6533333333333 341.3333333333334H114.3466666666667M192 64V149.3333333333334H277.3333333333333V64H192M277.3333333333333 166.8266666666667L209.4933333333334 234.6666666666667L277.3333333333333 302.5066666666667L345.1733333333333 234.6666666666667L277.3333333333333 166.8266666666667z" /> + <glyph glyph-name="delta" + unicode="&#xF1C2;" + horiz-adv-x="512" d=" M256 282.24L392.32 64H119.68L256 282.24M256 362.6666666666667L42.6666666666667 21.3333333333334H469.3333333333333" /> + <glyph glyph-name="deskphone" + unicode="&#xF1C3;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M320 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H320M106.6666666666667 341.3333333333334V256H277.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M170.6666666666667 213.3333333333334V170.6666666666667H213.3333333333333V213.3333333333334H170.6666666666667M234.6666666666667 213.3333333333334V170.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667M106.6666666666667 149.3333333333334V106.6666666666667H149.3333333333333V149.3333333333334H106.6666666666667M170.6666666666667 149.3333333333334V106.6666666666667H213.3333333333333V149.3333333333334H170.6666666666667M234.6666666666667 149.3333333333334V106.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M234.6666666666667 85.3333333333334V42.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667M170.6666666666667 85.3333333333334V42.6666666666667H213.3333333333333V85.3333333333334H170.6666666666667M106.6666666666667 85.3333333333334V42.6666666666667H149.3333333333333V85.3333333333334H106.6666666666667z" /> + <glyph glyph-name="desktop-mac" + unicode="&#xF1C4;" + horiz-adv-x="512" d=" M448 149.3333333333334H64V362.6666666666667H448M448 405.3333333333333H64C40.32 405.3333333333333 21.3333333333333 386.3466666666667 21.3333333333333 362.6666666666667V106.6666666666667C21.3333333333333 83.2 40.5333333333333 64 64 64H213.3333333333333L170.6666666666667 0V-21.3333333333333H341.3333333333333V0L298.6666666666667 64H448C471.4666666666667 64 490.6666666666666 83.2 490.6666666666666 106.6666666666667V362.6666666666667C490.6666666666666 386.3466666666667 471.4666666666667 405.3333333333333 448 405.3333333333333z" /> + <glyph glyph-name="desktop-tower" + unicode="&#xF1C5;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C364.8 405.3333333333333 384 386.1333333333334 384 362.6666666666667V21.3333333333334C384 -2.1333333333333 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333H170.6666666666667C147.2 -21.3333333333333 128 -2.1333333333333 128 21.3333333333334V362.6666666666667C128 386.1333333333334 147.2 405.3333333333333 170.6666666666667 405.3333333333333M170.6666666666667 362.6666666666667V320H341.3333333333333V362.6666666666667H170.6666666666667M341.3333333333333 277.3333333333334H170.6666666666667V234.6666666666667H341.3333333333333V277.3333333333334M341.3333333333333 64H298.6666666666667V21.3333333333334H341.3333333333333V64z" /> + <glyph glyph-name="details" + unicode="&#xF1C6;" + horiz-adv-x="512" d=" M136.1066666666667 320H376.1066666666667L256 106.6666666666667L136.1066666666667 320M64 362.6666666666667L256 21.3333333333334L448 362.6666666666667H64z" /> + <glyph glyph-name="deviantart" + unicode="&#xF1C7;" + horiz-adv-x="512" d=" M128 320H256L298.6666666666667 405.3333333333333H384V320L309.3333333333333 170.6666666666667H384V64H256L213.3333333333333 -21.3333333333333H128V64L202.6666666666667 213.3333333333334H128V320z" /> + <glyph glyph-name="dialpad" + unicode="&#xF61C;" + horiz-adv-x="512" d=" M256 42.6666666666667C232.5333333333334 42.6666666666667 213.3333333333333 23.4666666666667 213.3333333333333 0S232.5333333333334 -42.6666666666666 256 -42.6666666666666S298.6666666666667 -23.4666666666667 298.6666666666667 0S279.4666666666667 42.6666666666667 256 42.6666666666667M128 426.6666666666667C104.5333333333333 426.6666666666667 85.3333333333333 407.4666666666667 85.3333333333333 384S104.5333333333333 341.3333333333334 128 341.3333333333334S170.6666666666667 360.5333333333334 170.6666666666667 384S151.4666666666667 426.6666666666667 128 426.6666666666667M128 298.6666666666667C104.5333333333333 298.6666666666667 85.3333333333333 279.4666666666667 85.3333333333333 256S104.5333333333333 213.3333333333334 128 213.3333333333334S170.6666666666667 232.5333333333334 170.6666666666667 256S151.4666666666667 298.6666666666667 128 298.6666666666667M128 170.6666666666667C104.5333333333333 170.6666666666667 85.3333333333333 151.4666666666667 85.3333333333333 128S104.5333333333333 85.3333333333334 128 85.3333333333334S170.6666666666667 104.5333333333333 170.6666666666667 128S151.4666666666667 170.6666666666667 128 170.6666666666667M384 341.3333333333334C407.4666666666667 341.3333333333334 426.6666666666667 360.5333333333334 426.6666666666667 384S407.4666666666667 426.6666666666667 384 426.6666666666667S341.3333333333333 407.4666666666667 341.3333333333333 384S360.5333333333333 341.3333333333334 384 341.3333333333334M256 170.6666666666667C232.5333333333334 170.6666666666667 213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334S298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667M384 170.6666666666667C360.5333333333333 170.6666666666667 341.3333333333333 151.4666666666667 341.3333333333333 128S360.5333333333333 85.3333333333334 384 85.3333333333334S426.6666666666667 104.5333333333333 426.6666666666667 128S407.4666666666667 170.6666666666667 384 170.6666666666667M384 298.6666666666667C360.5333333333333 298.6666666666667 341.3333333333333 279.4666666666667 341.3333333333333 256S360.5333333333333 213.3333333333334 384 213.3333333333334S426.6666666666667 232.5333333333334 426.6666666666667 256S407.4666666666667 298.6666666666667 384 298.6666666666667M256 298.6666666666667C232.5333333333334 298.6666666666667 213.3333333333333 279.4666666666667 213.3333333333333 256S232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 232.5333333333334 298.6666666666667 256S279.4666666666667 298.6666666666667 256 298.6666666666667M256 426.6666666666667C232.5333333333334 426.6666666666667 213.3333333333333 407.4666666666667 213.3333333333333 384S232.5333333333334 341.3333333333334 256 341.3333333333334S298.6666666666667 360.5333333333334 298.6666666666667 384S279.4666666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="diamond" + unicode="&#xF1C8;" + horiz-adv-x="512" d=" M341.3333333333333 256H405.3333333333333L298.6666666666667 106.6666666666667M213.3333333333333 256H298.6666666666667L256 85.3333333333334M106.6666666666667 256H170.6666666666667L213.3333333333333 106.6666666666667M320 362.6666666666667H362.6666666666667L405.3333333333333 298.6666666666667H341.3333333333333M234.6666666666667 362.6666666666667H277.3333333333333L298.6666666666667 298.6666666666667H213.3333333333333M149.3333333333333 362.6666666666667H192L170.6666666666667 298.6666666666667H106.6666666666667M128 405.3333333333333L42.6666666666667 277.3333333333334L256 -21.3333333333333L469.3333333333333 277.3333333333334L384 405.3333333333333H128z" /> + <glyph glyph-name="dice-1" + unicode="&#xF1CA;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="dice-2" + unicode="&#xF1CB;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128z" /> + <glyph glyph-name="dice-3" + unicode="&#xF1CC;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128z" /> + <glyph glyph-name="dice-4" + unicode="&#xF1CD;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-5" + unicode="&#xF1CE;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-6" + unicode="&#xF1CF;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334M362.6666666666667 128C339.2 128 320 108.8 320 85.3333333333334S339.2 42.6666666666667 362.6666666666667 42.6666666666667S405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334S386.1333333333334 128 362.6666666666667 128M362.6666666666667 234.6666666666667C339.2 234.6666666666667 320 215.4666666666667 320 192S339.2 149.3333333333334 362.6666666666667 149.3333333333334S405.3333333333333 168.5333333333334 405.3333333333333 192S386.1333333333334 234.6666666666667 362.6666666666667 234.6666666666667M362.6666666666667 341.3333333333334C339.2 341.3333333333334 320 322.1333333333334 320 298.6666666666667S339.2 256 362.6666666666667 256S405.3333333333333 275.2000000000001 405.3333333333333 298.6666666666667S386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334M149.3333333333333 234.6666666666667C125.8666666666667 234.6666666666667 106.6666666666667 215.4666666666667 106.6666666666667 192S125.8666666666667 149.3333333333334 149.3333333333333 149.3333333333334S192 168.5333333333334 192 192S172.8 234.6666666666667 149.3333333333333 234.6666666666667M149.3333333333333 128C125.8666666666667 128 106.6666666666667 108.8 106.6666666666667 85.3333333333334S125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667S192 61.8666666666667 192 85.3333333333334S172.8 128 149.3333333333333 128z" /> + <glyph glyph-name="dice-d20" + unicode="&#xF5EA;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667M318.5066666666667 271.5733333333334C348.8 271.5733333333334 373.3333333333333 247.04 373.3333333333333 216.7466666666667V160C373.3333333333333 130.1333333333333 348.8 105.6 318.5066666666667 105.6C288 105.6 263.68 130.1333333333333 263.68 160V216.7466666666667C263.68 247.04 288.2133333333333 271.5733333333334 318.5066666666667 271.5733333333334M318.2933333333333 240.8533333333334C305.92 240.8533333333334 295.68 230.8266666666667 295.68 218.24V159.36C295.68 146.7733333333334 305.92 136.5333333333334 318.2933333333333 136.5333333333334C330.6666666666667 136.5333333333334 341.3333333333333 146.7733333333334 341.3333333333333 159.36V218.24C341.3333333333333 230.8266666666667 330.6666666666667 240.8533333333334 318.2933333333333 240.8533333333334M244.2666666666667 133.1200000000001V107.5200000000001L134.6133333333333 108.1600000000001V129.9200000000001S207.7866666666667 200.96 208 222.5066666666667C208 248.9600000000001 186.24 246.1866666666667 186.24 246.1866666666667S165.3333333333333 245.3333333333334 162.9866666666667 219.5200000000001L130.9866666666667 218.4533333333334S131.84 271.7866666666667 188.3733333333333 271.7866666666667C238.9333333333333 271.7866666666667 239.5733333333333 233.8133333333334 239.5733333333333 224C239.5733333333333 188.16 173.8666666666667 132.9066666666667 173.8666666666667 132.9066666666667L244.2666666666667 133.12z" /> + <glyph glyph-name="dice-d4" + unicode="&#xF5EB;" + horiz-adv-x="512" d=" M286.5066666666667 124.8H304.8533333333333V98.9866666666667H286.5066666666667V64H254.2933333333333V98.9866666666667H188.16L186.6666666666667 119.2533333333333L254.08 225.7066666666667H286.5066666666667V124.8M218.6666666666667 124.8H254.2933333333333V181.9733333333334L218.6666666666667 124.8M469.3333333333333 0H42.6666666666667C34.9866666666667 0 27.9466666666667 4.0533333333334 24.1066666666667 10.6666666666667C20.2666666666667 17.4933333333333 20.48 25.8133333333334 24.5333333333333 32L237.8666666666667 384C245.3333333333333 397.2266666666667 266.6666666666667 397.2266666666667 274.3466666666667 384L487.6799999999999 32C491.52 25.8133333333334 491.7333333333333 17.4933333333333 487.8933333333333 10.6666666666667C484.0533333333333 4.0533333333334 477.0133333333333 0 469.3333333333333 0M80.64 42.6666666666667H431.5733333333333L256 332.1600000000001L80.64 42.6666666666667z" /> + <glyph glyph-name="dice-d6" + unicode="&#xF5EC;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M285.6533333333333 244.6933333333334C232.32 245.3333333333333 231.68 202.0266666666667 231.68 202.0266666666667S243.4133333333334 216.1066666666667 267.3066666666667 216.1066666666667C281.3866666666667 216.1066666666667 309.3333333333334 203.7333333333333 310.4 161.92C311.68 117.9733333333334 272.4266666666667 106.6666666666667 272.4266666666667 106.6666666666667S197.76 88.3200000000001 198.4 177.92C199.04 278.6133333333334 285.6533333333333 270.2933333333334 285.6533333333333 270.2933333333334V244.6933333333334M254.9333333333334 189.8666666666667C239.1466666666667 192 231.04 175.36 231.04 175.36L231.4666666666667 160C231.4666666666667 143.5733333333334 242.9866666666667 131.6266666666667 256 131.6266666666667C269.0133333333333 131.6266666666667 278.4000000000001 143.5733333333334 278.4000000000001 160S267.9466666666667 189.8666666666667 254.9333333333334 189.8666666666667z" /> + <glyph glyph-name="dice-d8" + unicode="&#xF5ED;" + horiz-adv-x="512" d=" M256 -42.6666666666666C248.96 -42.6666666666666 242.56 -39.2533333333333 238.5066666666667 -33.4933333333333L89.1733333333333 179.84C84.0533333333333 187.0933333333334 84.0533333333333 196.9066666666667 89.1733333333333 204.16L238.5066666666667 417.4933333333334C246.4 429.0133333333333 265.6 429.0133333333333 273.4933333333334 417.4933333333334L422.8266666666667 204.16C427.9466666666666 196.9066666666667 427.9466666666666 187.0933333333334 422.8266666666667 179.84L273.4933333333334 -33.4933333333333C269.44 -39.2533333333333 263.04 -42.6666666666666 256 -42.6666666666666M132.6933333333333 192L256 15.7866666666666L379.3066666666667 192L256 368.2133333333334L132.6933333333333 192M256 272C283.9466666666667 272 306.7733333333333 251.7333333333334 306.7733333333333 226.5600000000001C306.7733333333333 211.84 298.6666666666667 198.8266666666667 286.72 190.5066666666667C301.6533333333333 182.1866666666667 311.4666666666667 167.8933333333334 311.4666666666667 151.4666666666667C311.4666666666667 125.4400000000001 286.72 104.5333333333334 256 104.5333333333334C225.28 104.5333333333334 200.5333333333333 125.4400000000001 200.5333333333333 151.4666666666667C200.5333333333333 167.8933333333334 210.3466666666667 182.1866666666667 225.28 190.5066666666667C213.3333333333333 198.8266666666667 205.44 211.84 205.44 226.5600000000001C205.44 251.7333333333334 228.0533333333334 272 256 272M256 178.1333333333333C242.9866666666667 178.1333333333333 232.5333333333334 167.68 232.5333333333334 154.6666666666667C232.5333333333334 141.6533333333334 242.9866666666667 131.2000000000001 256 131.2000000000001C269.0133333333333 131.2000000000001 279.4666666666667 141.6533333333334 279.4666666666667 154.6666666666667C279.4666666666667 167.68 269.0133333333333 178.1333333333333 256 178.1333333333333M256 245.3333333333334C245.3333333333333 245.3333333333334 236.8 235.7333333333334 236.8 224S245.3333333333333 202.6666666666667 256 202.6666666666667S275.2 212.2666666666667 275.2 224S266.6666666666667 245.3333333333334 256 245.3333333333334z" /> + <glyph glyph-name="dictionary" + unicode="&#xF61D;" + horiz-adv-x="512" d=" M123.9466666666667 405.3333333333333C103.04 403.4133333333334 85.3333333333333 384 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -1.0666666666667 105.6 -21.3333333333333 128 -21.3333333333333H384C406.4 -21.3333333333333 426.6666666666667 -1.0666666666667 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.3466666666667 407.4666666666667 405.3333333333333 384 405.3333333333333H256V256L202.6666666666667 288L149.3333333333333 256V405.3333333333333H123.9466666666667M256 170.6666666666667H277.3333333333333C289.0666666666667 170.6666666666667 298.6666666666667 161.0666666666667 298.6666666666667 149.3333333333334V64H277.3333333333333V106.6666666666667H256V64H234.6666666666667V149.3333333333334C234.6666666666667 161.0666666666667 244.2666666666667 170.6666666666667 256 170.6666666666667M256 149.3333333333334V128H277.3333333333333V149.3333333333334H256M320 128H384V106.6666666666667L341.3333333333333 42.6666666666667H384V21.3333333333334H320V42.6666666666667L362.6666666666667 106.6666666666667H320V128z" /> + <glyph glyph-name="directions" + unicode="&#xF1D0;" + horiz-adv-x="512" d=" M298.6666666666667 138.6666666666667V192H213.3333333333333V128H170.6666666666667V213.3333333333334C170.6666666666667 225.0666666666667 180.2666666666667 234.6666666666667 192 234.6666666666667H298.6666666666667V288L373.3333333333333 213.3333333333334M463.1466666666666 207.1466666666667L271.1466666666667 399.1466666666667H270.9333333333334C262.6133333333334 407.4666666666667 249.1733333333334 407.4666666666667 240.8533333333334 399.1466666666667L48.8533333333334 207.1466666666667C40.5333333333333 198.8266666666667 40.5333333333333 185.1733333333334 48.8533333333334 176.8533333333334L240.8533333333334 -15.1466666666666C249.1733333333334 -23.2533333333333 262.6133333333334 -23.4666666666667 271.1466666666667 -15.1466666666666L463.1466666666666 176.8533333333334C471.4666666666667 185.1733333333334 471.4666666666667 198.8266666666667 463.1466666666666 207.1466666666667z" /> + <glyph glyph-name="directions-fork" + unicode="&#xF641;" + horiz-adv-x="512" d=" M64 362.6666666666667V181.3333333333334L128 245.3333333333334L192 170.6666666666667C213.3333333333333 149.3333333333334 213.3333333333333 128 213.3333333333333 128V0H298.6666666666667V149.3333333333334S298.6666666666667 170.6666666666667 287.36 192S256 234.6666666666667 256 234.6666666666667L192 307.6266666666667L245.3333333333333 362.6666666666667M384 362.6666666666667L288.8533333333333 267.3066666666668L298.6666666666667 256S318.5066666666667 234.6666666666667 330.0266666666667 213.3333333333334C334.5066666666667 204.8 337.0666666666667 196.48 338.56 189.2266666666667L448 298.6666666666667" /> + <glyph glyph-name="discord" + unicode="&#xF66F;" + horiz-adv-x="512" d=" M469.3333333333333 -64L357.3333333333333 42.6666666666667L370.7733333333333 0H96C66.56 0 42.6666666666667 23.8933333333334 42.6666666666667 53.3333333333334V373.3333333333334C42.6666666666667 402.7733333333333 66.56 426.6666666666667 96 426.6666666666667H416C445.44 426.6666666666667 469.3333333333333 402.7733333333333 469.3333333333333 373.3333333333334V-64M256 302.9333333333334C198.8266666666667 302.9333333333334 158.72 278.4000000000001 158.72 278.4000000000001C180.6933333333333 298.0266666666667 219.0933333333333 309.3333333333334 219.0933333333333 309.3333333333334L215.4666666666667 312.9600000000001C179.4133333333333 312.3200000000001 146.7733333333333 287.36 146.7733333333333 287.36C110.08 210.7733333333334 112.4266666666666 144.6400000000001 112.4266666666666 144.6400000000001C142.2933333333333 106.0266666666668 186.6666666666666 108.8000000000001 186.6666666666666 108.8000000000001L201.8133333333333 128.0000000000001C175.1466666666666 133.7600000000001 158.2933333333333 157.4400000000001 158.2933333333333 157.4400000000001S198.4 130.1333333333333 256 130.1333333333333S353.7066666666666 157.44 353.7066666666666 157.44S336.8533333333333 133.76 310.1866666666666 128L325.3333333333333 108.8S369.7066666666666 106.0266666666666 399.5733333333333 144.64C399.5733333333333 144.64 401.92 210.7733333333333 365.2266666666667 287.36C365.2266666666667 287.36 332.5866666666667 312.32 296.5333333333333 312.9600000000001L292.9066666666667 309.3333333333334S331.3066666666667 298.0266666666667 353.2800000000001 278.4C353.2800000000001 278.4 313.1733333333334 302.9333333333334 256.0000000000001 302.9333333333334M211.8400000000001 222.08C225.7066666666668 222.08 237.0133333333334 209.92 236.8000000000001 194.9866666666667C236.8000000000001 180.2666666666667 225.7066666666668 167.8933333333334 211.8400000000001 167.8933333333334C198.1866666666667 167.8933333333334 187.0933333333334 180.2666666666667 187.0933333333334 194.9866666666667C187.0933333333334 209.92 197.9733333333334 222.08 211.8400000000001 222.08M300.8000000000001 222.08C314.6666666666668 222.08 325.7600000000001 209.92 325.7600000000001 194.9866666666667C325.7600000000001 180.2666666666667 314.6666666666668 167.8933333333334 300.8000000000001 167.8933333333334C287.1466666666667 167.8933333333334 276.0533333333334 180.2666666666667 276.0533333333334 194.9866666666667C276.0533333333334 209.92 286.9333333333334 222.08 300.8000000000001 222.08z" /> + <glyph glyph-name="disk" + unicode="&#xF5EE;" + horiz-adv-x="512" d=" M256 149.3333333333334C232.32 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192C213.3333333333333 215.68 232.32 234.6666666666667 256 234.6666666666667C279.68 234.6666666666667 298.6666666666667 215.68 298.6666666666667 192C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="disk-alert" + unicode="&#xF1D1;" + horiz-adv-x="512" d=" M213.3333333333333 149.3333333333334C189.6533333333333 149.3333333333334 170.6666666666667 168.5333333333334 170.6666666666667 192C170.6666666666667 215.68 189.6533333333333 234.6666666666667 213.3333333333333 234.6666666666667C236.8 234.6666666666667 256 215.4666666666667 256 192S236.8 149.3333333333334 213.3333333333333 149.3333333333334M213.3333333333333 362.6666666666667C119.04 362.6666666666667 42.6666666666667 286.2933333333334 42.6666666666667 192S119.04 21.3333333333334 213.3333333333333 21.3333333333334S384 97.7066666666667 384 192S307.6266666666667 362.6666666666667 213.3333333333333 362.6666666666667M426.6666666666667 192H469.3333333333333V298.6666666666667H426.6666666666667M426.6666666666667 106.6666666666667H469.3333333333333V149.3333333333334H426.6666666666667V106.6666666666667z" /> + <glyph glyph-name="disqus" + unicode="&#xF1D2;" + horiz-adv-x="512" d=" M257.7066666666667 -21.3333333333333C205.44 -21.3333333333333 157.6533333333333 -2.3466666666666 120.7466666666667 29.2266666666667L30.08 16.8533333333334L65.0666666666667 103.4666666666667C53.3333333333333 130.5600000000001 46.08 160.0000000000001 46.08 192.0000000000001C46.08 309.3333333333334 140.8 405.3333333333334 257.7066666666667 405.3333333333334C374.6133333333333 405.3333333333333 469.3333333333333 309.3333333333334 469.3333333333333 192S374.6133333333333 -21.3333333333333 257.7066666666667 -21.3333333333333M373.3333333333333 192.64V193.28C373.3333333333333 254.72 329.8133333333334 298.6666666666667 254.9333333333333 298.6666666666667H174.08V85.3333333333334H253.8666666666667C329.1733333333333 85.3333333333334 373.3333333333333 130.9866666666667 373.3333333333333 192.6400000000001M256 137.8133333333334H232.32V246.1866666666667H256C290.56 246.1866666666667 313.6 226.3466666666667 313.6 192C313.6 157.2266666666667 290.56 137.8133333333334 256 137.8133333333334z" /> + <glyph glyph-name="disqus-outline" + unicode="&#xF1D3;" + horiz-adv-x="512" d=" M253.8666666666667 138.6666666666667H230.4V245.3333333333334H253.8666666666667C288 245.3333333333334 311.4666666666667 226.1333333333334 311.4666666666667 192S288 138.6666666666667 253.8666666666667 138.6666666666667M253.8666666666667 298.6666666666667H172.8V85.3333333333334H251.7333333333334C326.4 85.3333333333334 371.2 130.1333333333333 371.2 192S328.5333333333333 298.6666666666667 253.8666666666666 298.6666666666667M256 21.3333333333334C215.4666666666666 21.3333333333334 177.0666666666666 36.2666666666667 147.2 61.8666666666667L132.2666666666666 74.6666666666667L96 70.4L110.9333333333333 104.5333333333334L104.5333333333333 121.6000000000001C93.8666666666666 145.0666666666667 89.6 168.5333333333334 89.6 194.1333333333334C89.6 288.0000000000001 166.4 364.8000000000001 258.1333333333333 364.8000000000001C349.8666666666666 364.8000000000001 424.5333333333333 285.8666666666668 424.5333333333333 192.0000000000001C424.5333333333333 98.1333333333334 347.7333333333333 21.3333333333334 256 21.3333333333334M256 405.3333333333335C138.6666666666667 405.3333333333333 44.8 309.3333333333334 44.8 192C44.8 160 51.2 130.1333333333333 64 102.4L29.8666666666667 14.9333333333334L121.6 27.7333333333335C157.8666666666667 -4.2666666666665 206.9333333333333 -23.4666666666665 258.1333333333334 -23.4666666666665C375.4666666666667 -23.4666666666665 469.3333333333333 72.5333333333335 469.3333333333333 189.8666666666668S373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="division" + unicode="&#xF1D4;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H405.3333333333333V170.6666666666667M256 341.3333333333334C279.4666666666667 341.3333333333334 298.6666666666667 322.1333333333334 298.6666666666667 298.6666666666667S279.4666666666667 256 256 256S213.3333333333333 275.2000000000001 213.3333333333333 298.6666666666667S232.5333333333334 341.3333333333334 256 341.3333333333334M256 128C279.4666666666667 128 298.6666666666667 108.8 298.6666666666667 85.3333333333334S279.4666666666667 42.6666666666667 256 42.6666666666667S213.3333333333333 61.8666666666667 213.3333333333333 85.3333333333334S232.5333333333334 128 256 128z" /> + <glyph glyph-name="division-box" + unicode="&#xF1D5;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H362.6666666666667M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667M256 128C244.2666666666667 128 234.6666666666667 118.4 234.6666666666667 106.6666666666667S244.2666666666667 85.3333333333334 256 85.3333333333334S277.3333333333333 94.9333333333333 277.3333333333333 106.6666666666667S267.7333333333334 128 256 128z" /> + <glyph glyph-name="dns" + unicode="&#xF1D6;" + horiz-adv-x="512" d=" M149.3333333333333 256C125.8666666666667 256 106.6666666666667 275.2000000000001 106.6666666666667 298.6666666666667S125.8666666666667 341.3333333333334 149.3333333333333 341.3333333333334S192 322.1333333333334 192 298.6666666666667S172.8 256 149.3333333333333 256M426.6666666666667 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667V234.6666666666667C64 222.9333333333333 73.6 213.3333333333334 85.3333333333333 213.3333333333334H426.6666666666667C438.4 213.3333333333334 448 222.9333333333333 448 234.6666666666667V362.6666666666667C448 374.4 438.4 384 426.6666666666667 384M149.3333333333333 42.6666666666667C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334S125.8666666666667 128 149.3333333333333 128S192 108.8 192 85.3333333333334S172.8 42.6666666666667 149.3333333333333 42.6666666666667M426.6666666666667 170.6666666666667H85.3333333333333C73.6 170.6666666666667 64 161.0666666666667 64 149.3333333333334V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V149.3333333333334C448 161.0666666666667 438.4 170.6666666666667 426.6666666666667 170.6666666666667z" /> + <glyph glyph-name="domain" + unicode="&#xF1D7;" + horiz-adv-x="512" d=" M384 128H341.3333333333333V85.3333333333334H384M384 213.3333333333334H341.3333333333333V170.6666666666667H384M426.6666666666667 42.6666666666667H256V85.3333333333334H298.6666666666667V128H256V170.6666666666667H298.6666666666667V213.3333333333334H256V256H426.6666666666667M213.3333333333333 298.6666666666667H170.6666666666667V341.3333333333334H213.3333333333333M213.3333333333333 213.3333333333334H170.6666666666667V256H213.3333333333333M213.3333333333333 128H170.6666666666667V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667H170.6666666666667V85.3333333333334H213.3333333333333M128 298.6666666666667H85.3333333333333V341.3333333333334H128M128 213.3333333333334H85.3333333333333V256H128M128 128H85.3333333333333V170.6666666666667H128M128 42.6666666666667H85.3333333333333V85.3333333333334H128M256 298.6666666666667V384H42.6666666666667V0H469.3333333333333V298.6666666666667H256z" /> + <glyph glyph-name="dots-horizontal" + unicode="&#xF1D8;" + horiz-adv-x="512" d=" M341.3333333333333 192C341.3333333333333 215.4666666666667 360.5333333333333 234.6666666666667 384 234.6666666666667S426.6666666666667 215.4666666666667 426.6666666666667 192S407.4666666666667 149.3333333333334 384 149.3333333333334S341.3333333333333 168.5333333333334 341.3333333333333 192M213.3333333333333 192C213.3333333333333 215.4666666666667 232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192M85.3333333333333 192C85.3333333333333 215.4666666666667 104.5333333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.4666666666667 170.6666666666667 192S151.4666666666667 149.3333333333334 128 149.3333333333334S85.3333333333333 168.5333333333334 85.3333333333333 192z" /> + <glyph glyph-name="dots-vertical" + unicode="&#xF1D9;" + horiz-adv-x="512" d=" M256 106.6666666666667C279.4666666666667 106.6666666666667 298.6666666666667 87.4666666666667 298.6666666666667 64S279.4666666666667 21.3333333333334 256 21.3333333333334S213.3333333333333 40.5333333333333 213.3333333333333 64S232.5333333333334 106.6666666666667 256 106.6666666666667M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334S213.3333333333333 296.5333333333334 213.3333333333333 320S232.5333333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="download" + unicode="&#xF1DA;" + horiz-adv-x="512" d=" M106.6666666666667 21.3333333333334H405.3333333333333V64H106.6666666666667M405.3333333333333 256H320V384H192V256H106.6666666666667L256 106.6666666666667L405.3333333333333 256z" /> + <glyph glyph-name="drag" + unicode="&#xF1DB;" + horiz-adv-x="512" d=" M149.3333333333333 42.6666666666667V85.3333333333334H192V42.6666666666667H149.3333333333333M234.6666666666667 42.6666666666667V85.3333333333334H277.3333333333333V42.6666666666667H234.6666666666667M320 42.6666666666667V85.3333333333334H362.6666666666667V42.6666666666667H320M149.3333333333333 128V170.6666666666667H192V128H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M320 128V170.6666666666667H362.6666666666667V128H320M149.3333333333333 213.3333333333334V256H192V213.3333333333334H149.3333333333333M234.6666666666667 213.3333333333334V256H277.3333333333333V213.3333333333334H234.6666666666667M320 213.3333333333334V256H362.6666666666667V213.3333333333334H320M149.3333333333333 298.6666666666667V341.3333333333334H192V298.6666666666667H149.3333333333333M234.6666666666667 298.6666666666667V341.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667M320 298.6666666666667V341.3333333333334H362.6666666666667V298.6666666666667H320z" /> + <glyph glyph-name="drag-horizontal" + unicode="&#xF1DC;" + horiz-adv-x="512" d=" M64 128V170.6666666666667H106.6666666666667V128H64M64 213.3333333333334V256H106.6666666666667V213.3333333333334H64M149.3333333333333 128V170.6666666666667H192V128H149.3333333333333M149.3333333333333 213.3333333333334V256H192V213.3333333333334H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 213.3333333333334V256H277.3333333333333V213.3333333333334H234.6666666666667M320 128V170.6666666666667H362.6666666666667V128H320M320 213.3333333333334V256H362.6666666666667V213.3333333333334H320M405.3333333333333 128V170.6666666666667H448V128H405.3333333333333M405.3333333333333 213.3333333333334V256H448V213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="drag-vertical" + unicode="&#xF1DD;" + horiz-adv-x="512" d=" M192 384H234.6666666666667V341.3333333333334H192V384M277.3333333333333 384H320V341.3333333333334H277.3333333333333V384M192 298.6666666666667H234.6666666666667V256H192V298.6666666666667M277.3333333333333 298.6666666666667H320V256H277.3333333333333V298.6666666666667M192 213.3333333333334H234.6666666666667V170.6666666666667H192V213.3333333333334M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333V213.3333333333334M192 128H234.6666666666667V85.3333333333334H192V128M277.3333333333333 128H320V85.3333333333334H277.3333333333333V128M192 42.6666666666667H234.6666666666667V0H192V42.6666666666667M277.3333333333333 42.6666666666667H320V0H277.3333333333333V42.6666666666667z" /> + <glyph glyph-name="drawing" + unicode="&#xF1DE;" + horiz-adv-x="512" d=" M181.3333333333333 384C246.1866666666667 384 298.6666666666667 331.52 298.6666666666667 266.6666666666667C298.6666666666667 238.2933333333334 288.64 212.2666666666667 271.7866666666667 192H448V0H256V176.2133333333334C235.7333333333334 159.36 209.7066666666667 149.3333333333334 181.3333333333333 149.3333333333334C116.48 149.3333333333334 64 201.8133333333334 64 266.6666666666667S116.48 384 181.3333333333333 384z" /> + <glyph glyph-name="drawing-box" + unicode="&#xF1DF;" + horiz-adv-x="512" d=" M384 64H256V187.52C241.92 174.5066666666667 223.36 166.4 202.6666666666667 166.4C159.1466666666667 166.4 123.7333333333333 201.8133333333333 123.7333333333333 245.3333333333334S159.1466666666667 324.2666666666667 202.6666666666667 324.2666666666667S281.6 288.8533333333334 281.6 245.3333333333334C281.6 224.64 273.4933333333333 206.08 260.48 192H384M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="dribbble" + unicode="&#xF1E0;" + horiz-adv-x="512" d=" M350.2933333333334 55.04C341.3333333333333 96 330.6666666666667 133.76 320 167.04C330.6666666666667 168.5333333333334 341.3333333333333 169.3866666666667 353.7066666666666 169.3866666666667H354.1333333333333C373.9733333333333 169.3866666666667 395.7333333333333 166.8266666666667 419.4133333333333 161.4933333333334C411.3066666666666 117.3333333333334 385.7066666666666 79.5733333333334 350.2933333333332 55.04M256 25.6C218.88 25.6 184.7466666666667 37.76 157.0133333333333 58.4533333333333C162.9866666666667 68.0533333333333 175.5733333333333 86.6133333333334 195.84 105.8133333333333C216.32 125.6533333333333 245.3333333333333 146.1333333333333 282.24 158.2933333333333C294.8266666666667 122.6666666666666 306.3466666666667 82.1333333333333 315.0933333333333 36.48C296.7466666666667 29.44 277.3333333333333 25.5999999999999 256 25.5999999999999M89.6 192V194.3466666666667C94.2933333333333 194.1333333333333 100.48 194.1333333333333 107.7333333333333 194.1333333333333H107.9466666666667C141.2266666666666 194.3466666666667 199.68 197.12 258.9866666666667 215.68C262.1866666666667 208.64 265.3866666666667 201.3866666666667 268.5866666666667 193.7066666666667C228.9066666666667 180.48 197.76 159.36 174.72 138.6666666666667C152.7466666666667 118.1866666666667 137.6 98.3466666666667 128.8533333333333 85.3333333333334C104.5333333333333 113.92 89.6 151.2533333333333 89.6 192M182.4 341.3333333333334C194.1333333333333 327.4666666666667 217.1733333333333 297.3866666666667 241.92 250.6666666666667C192 235.52 141.0133333333333 232.1066666666667 110.5066666666667 232.1066666666667H107.7333333333333C102.6133333333333 232.1066666666667 98.1333333333333 232.1066666666667 94.5066666666667 232.32C106.6666666666667 280.1066666666667 138.6666666666667 320 182.4 341.3333333333334M256 358.4C295.2533333333334 358.4 331.3066666666666 344.7466666666667 359.68 321.92C337.92 295.68 309.3333333333333 277.3333333333334 277.9733333333333 263.4666666666667C256 305.7066666666667 234.6666666666667 336 220.5866666666667 354.56C232.1066666666667 356.9066666666667 243.84 358.4 256 358.4M386.7733333333333 294.8266666666667C407.4666666666666 268.3733333333334 420.48 235.5200000000001 422.1866666666666 199.8933333333334C398.08 205.0133333333334 375.4666666666666 207.36 354.1333333333333 207.36H353.9199999999999C336.8533333333333 207.36 320.8533333333333 205.8666666666667 305.7066666666666 203.3066666666667C302.08 212.2666666666667 298.6666666666666 220.8000000000001 294.6133333333333 229.1200000000001C328.32 243.8400000000001 360.5333333333333 264.9600000000001 386.7733333333332 294.8266666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="dribbble-box" + unicode="&#xF1E1;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M321.92 96C315.9466666666667 125.0133333333333 308.6933333333334 151.2533333333333 300.3733333333334 174.5066666666667L324.2666666666667 176.2133333333334H324.6933333333333C338.56 176.2133333333334 353.92 174.5066666666667 370.3466666666667 170.6666666666667C364.5866666666667 139.9466666666667 346.88 113.28 321.92 96M256 75.52C230.1866666666667 75.52 206.08 84.0533333333333 186.88 98.3466666666667C190.9333333333333 105.1733333333334 199.68 118.1866666666667 213.3333333333333 131.6266666666667C228.2666666666667 145.4933333333334 248.32 160 274.3466666666667 168.3200000000001C283.3066666666666 143.5733333333334 291.2 115.2000000000001 297.3866666666667 83.2C284.3733333333334 78.2933333333333 270.5066666666667 75.52 256 75.52M139.52 192V193.7066666666667L152.32 193.4933333333334C175.7866666666667 193.4933333333334 216.5333333333333 195.6266666666667 258.1333333333334 208.6400000000001L264.7466666666667 193.28C237.0133333333333 183.8933333333334 215.2533333333333 169.1733333333334 199.2533333333333 154.4533333333334C183.68 140.3733333333333 173.2266666666666 126.2933333333334 167.04 117.3333333333334C149.9733333333333 137.3866666666667 139.52 163.4133333333334 139.52 192M204.5866666666667 296.32C212.6933333333333 286.7200000000001 228.9066666666667 265.8133333333334 246.1866666666667 232.96C210.9866666666666 222.5066666666667 175.5733333333333 220.16 154.0266666666667 220.16H142.9333333333333C151.2533333333333 253.6533333333334 174.2933333333333 281.3866666666667 204.5866666666667 296.3200000000001M256 308.48C283.52 308.48 308.6933333333334 298.6666666666667 328.7466666666667 282.88C313.3866666666667 264.5333333333334 293.12 251.3066666666667 271.36 241.92C256 271.5733333333334 241.28 292.6933333333334 231.2533333333334 305.7066666666667C239.1466666666667 307.4133333333334 247.4666666666667 308.48 256 308.48M347.52 263.8933333333334C362.0266666666667 245.3333333333334 371.2 222.5066666666667 372.2666666666667 197.5466666666667C355.4133333333333 200.96 339.6266666666667 202.6666666666667 324.6933333333333 202.6666666666667C312.7466666666666 202.6666666666667 301.44 201.8133333333334 290.7733333333333 199.8933333333334L283.0933333333333 218.0266666666667C306.56 228.2666666666667 329.1733333333333 242.9866666666667 347.52 263.8933333333334M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="drone" + unicode="&#xF1E2;" + horiz-adv-x="512" d=" M469.3333333333333 213.3333333333334H448L426.6666666666667 256H293.3333333333333L341.3333333333333 181.3333333333334H298.6666666666667L229.3333333333333 256H85.3333333333333C73.6 256 42.6666666666667 265.6 42.6666666666667 277.3333333333334S74.6666666666667 330.6666666666667 117.3333333333333 330.6666666666667S163.6266666666667 309.3333333333334 192 298.6666666666667H448C459.7333333333333 298.6666666666667 469.3333333333333 289.0666666666667 469.3333333333333 277.3333333333334V213.3333333333334M229.3333333333333 309.3333333333334L298.6666666666667 384H341.3333333333333L293.3333333333333 309.3333333333334H229.3333333333333M384 213.3333333333334V245.3333333333334H421.3333333333333L405.3333333333333 213.3333333333334H384M64 42.6666666666667C52.2666666666667 42.6666666666667 42.6666666666667 52.2666666666667 42.6666666666667 64S52.2666666666667 85.3333333333334 64 85.3333333333334C111.1466666666667 85.3333333333334 149.3333333333333 47.1466666666667 149.3333333333333 0C149.3333333333333 -11.7333333333333 139.7333333333333 -21.3333333333333 128 -21.3333333333333S106.6666666666667 -11.7333333333333 106.6666666666667 0C106.6666666666667 23.4666666666667 87.4666666666667 42.6666666666667 64 42.6666666666667M234.6666666666667 0C234.6666666666667 -11.7333333333333 225.0666666666667 -21.3333333333333 213.3333333333333 -21.3333333333333S192 -11.7333333333333 192 0C192 70.6133333333334 134.6133333333334 128 64 128C52.2666666666667 128 42.6666666666667 137.6 42.6666666666667 149.3333333333334S52.2666666666667 170.6666666666667 64 170.6666666666667C158.2933333333333 170.6666666666667 234.6666666666667 94.2933333333334 234.6666666666667 0z" /> + <glyph glyph-name="dropbox" + unicode="&#xF1E3;" + horiz-adv-x="512" d=" M256 137.3866666666667L348.8 60.5866666666667L388.2666666666667 86.4V57.6L256 -21.3333333333333L124.16 57.6V86.4L163.84 60.5866666666667L256 137.3866666666667M163.84 394.6666666666667L256 318.0800000000001L348.16 394.6666666666667L480 309.3333333333334L388.9066666666667 235.9466666666667L480 162.9866666666667L348.16 77.0133333333333L256 154.0266666666667L163.84 77.0133333333333L32 162.9866666666667L123.0933333333333 235.9466666666667L32 309.3333333333334L163.84 394.6666666666667M256 156.16L386.7733333333333 235.9466666666667L256 315.9466666666667L125.2266666666667 235.9466666666667L256 156.16z" /> + <glyph glyph-name="drupal" + unicode="&#xF1E4;" + horiz-adv-x="512" d=" M436.6933333333333 135.4666666666667C436.6933333333333 121.8133333333333 432 98.9866666666667 423.04 83.2C413.8666666666666 67.2 407.04 62.72 393.3866666666666 62.72C377.6 65.0666666666666 347.9466666666666 110.5066666666667 327.68 112.64C302.5066666666666 112.64 250.2399999999999 60.3733333333333 207.1466666666666 60.3733333333333C182.1866666666666 60.3733333333333 173.0133333333333 65.0666666666666 166.1866666666666 69.5466666666666C152.5333333333333 78.72 148.0533333333333 92.3733333333333 148.0533333333333 110.5066666666667C148.0533333333333 144.64 179.84 174.08 218.4533333333333 174.08C268.5866666666666 174.08 302.5066666666666 124.16 327.68 126.2933333333333C347.9466666666666 126.2933333333333 388.9066666666667 167.2533333333333 409.3866666666666 167.2533333333333C429.8666666666666 171.7333333333334 436.6933333333333 149.3333333333333 436.6933333333333 135.4666666666667M354.7733333333333 335.36C332.16 349.0133333333333 311.68 355.8399999999999 288.8533333333333 369.4933333333333C275.4133333333333 378.6666666666667 257.0666666666666 398.9333333333333 241.28 417.28C234.6666666666667 387.6266666666666 229.9733333333333 376.32 218.4533333333333 367.1466666666667C195.84 351.36 184.32 344.5333333333333 164.0533333333333 335.36C148.0533333333334 326.4 64 276.2666666666667 64 167.2533333333333C64 58.24 157.2266666666667 -21.3333333333333 257.0666666666667 -21.3333333333333C359.4666666666667 -21.3333333333333 448 53.3333333333334 448 164.9066666666667C452.48 276.2666666666667 368.4266666666666 326.4000000000001 354.7733333333333 335.36z" /> + <glyph glyph-name="duck" + unicode="&#xF1E5;" + horiz-adv-x="512" d=" M181.3333333333333 341.3333333333334C163.6266666666667 341.3333333333334 149.3333333333333 327.04 149.3333333333333 309.3333333333334S163.6266666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 291.6266666666667 213.3333333333333 309.3333333333334S199.04 341.3333333333334 181.3333333333333 341.3333333333334M213.3333333333333 405.3333333333333C272.2133333333333 405.3333333333333 320 357.5466666666667 320 298.6666666666667C320 262.4000000000001 301.8666666666667 230.4000000000001 274.3466666666667 211.2C308.0533333333333 208 346.0266666666667 200.32 384 181.3333333333334C448 149.3333333333334 469.3333333333333 192 469.3333333333333 192S448 0 320 0H192S85.3333333333333 0 85.3333333333333 106.6666666666667C85.3333333333333 170.6666666666667 149.3333333333333 192 128 234.6666666666667C42.6666666666667 234.6666666666667 42.6666666666667 309.3333333333334 42.6666666666667 309.3333333333334C64 298.6666666666667 90.4533333333333 298.6666666666667 106.6666666666667 306.1333333333334C110.72 361.6 157.0133333333333 405.3333333333333 213.3333333333333 405.3333333333333z" /> + <glyph glyph-name="dumbbell" + unicode="&#xF1E6;" + horiz-adv-x="512" d=" M90.0266666666667 146.7733333333334L74.6666666666667 161.92C58.24 178.56 58.24 205.44 74.6666666666667 222.08C91.7333333333333 238.9333333333334 118.6133333333334 238.9333333333334 135.2533333333333 222.08L190.2933333333333 167.2533333333333L280.7466666666667 257.7066666666667L225.92 312.7466666666667C209.0666666666667 329.3866666666667 209.0666666666667 356.2666666666667 225.92 373.3333333333334C242.56 389.76 269.44 389.76 286.08 373.3333333333334L301.2266666666667 357.9733333333334L421.9733333333334 237.2266666666667L437.3333333333333 222.08C453.76 205.44 453.76 178.5600000000001 437.3333333333333 161.92C420.2666666666667 145.0666666666667 393.3866666666667 145.0666666666667 376.7466666666667 161.92L321.7066666666667 216.7466666666667L231.2533333333334 126.2933333333334L286.08 71.2533333333333C302.9333333333333 54.6133333333333 302.9333333333333 27.7333333333334 286.08 10.6666666666667C269.44 -5.76 242.56 -5.76 225.92 10.6666666666667L210.7733333333333 26.0266666666666L90.0266666666666 146.7733333333333M67.4133333333333 33.7066666666667L90.0266666666666 56.3199999999999L59.9466666666666 86.4C51.6266666666666 94.72 51.6266666666666 108.16 59.9466666666666 116.48C68.2666666666666 124.8 81.7066666666666 124.8 90.0266666666666 116.48L180.48 26.0266666666666C188.8 17.7066666666667 188.8 4.2666666666667 180.48 -4.0533333333333C172.16 -12.3733333333333 158.72 -12.3733333333333 150.4 -4.0533333333333L120.32 26.0266666666666L97.7066666666666 3.4133333333334L67.4133333333333 33.7066666666667M414.2933333333334 380.5866666666667L444.5866666666667 350.2933333333334L421.9733333333334 327.68L452.0533333333334 297.6C460.3733333333334 289.28 460.3733333333334 275.8400000000001 452.0533333333334 267.52C443.7333333333334 258.9866666666667 430.2933333333334 258.9866666666667 421.9733333333334 267.52L331.5200000000001 357.9733333333334C323.2000000000001 366.2933333333333 323.2000000000001 379.7333333333334 331.5200000000001 388.0533333333334C339.8400000000001 396.3733333333334 353.2800000000001 396.3733333333334 361.6 388.0533333333334L391.6800000000001 357.9733333333334L414.2933333333334 380.5866666666667z" /> + <glyph glyph-name="earth" + unicode="&#xF1E7;" + horiz-adv-x="512" d=" M381.8666666666666 77.0133333333333C376.32 94.08 360.32 106.6666666666667 341.3333333333333 106.6666666666667H320V170.6666666666667C320 182.4 310.4 192 298.6666666666667 192H170.6666666666667V234.6666666666667H213.3333333333333C225.0666666666667 234.6666666666667 234.6666666666667 244.2666666666667 234.6666666666667 256V298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 317.8666666666667 320 341.3333333333334V350.0800000000001C382.5066666666667 324.9066666666667 426.6666666666667 263.68 426.6666666666667 192C426.6666666666667 147.6266666666667 409.6 107.3066666666667 381.8666666666666 77.0133333333333M234.6666666666667 22.8266666666667C150.4 33.28 85.3333333333333 104.96 85.3333333333333 192C85.3333333333333 205.2266666666667 87.04 218.0266666666667 89.8133333333333 230.1866666666667L192 128V106.6666666666667C192 83.2 211.2 64 234.6666666666667 64M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="earth-off" + unicode="&#xF1E8;" + horiz-adv-x="512" d=" M469.3333333333333 335.5733333333334L437.3333333333333 304C457.8133333333333 271.36 469.3333333333333 233.1733333333334 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333C215.04 -21.3333333333333 176.64 -9.8133333333333 144 10.6666666666667L112.4266666666667 -21.3333333333333L85.3333333333333 5.9733333333334L442.0266666666667 362.6666666666667L469.3333333333333 335.5733333333334M381.8666666666666 77.0133333333333C409.6 107.3066666666667 426.6666666666667 147.6266666666667 426.6666666666667 192C426.6666666666667 221.2266666666667 419.4133333333333 248.7466666666667 406.4 272.64L316.3733333333334 182.6133333333334C318.7200000000001 179.2 320 175.1466666666667 320 170.6666666666666V106.6666666666667H341.3333333333333C360.32 106.6666666666667 376.32 94.08 381.8666666666666 77.0133333333333M234.6666666666667 22.8266666666667V64C224 64 214.8266666666667 67.6266666666667 207.5733333333333 73.8133333333334L175.36 41.6C193.4933333333334 32 213.3333333333333 25.6 234.6666666666667 22.8266666666667M320 350.0800000000001V341.3333333333334C320 317.8666666666667 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667V256C234.6666666666667 244.2666666666667 225.0666666666667 234.6666666666667 213.3333333333333 234.6666666666667H170.6666666666667V192H217.1733333333333L172.5866666666667 147.4133333333334L89.8133333333333 230.1866666666667C87.04 218.0266666666667 85.3333333333333 205.2266666666667 85.3333333333333 192C85.3333333333333 154.88 97.28 120.3200000000001 117.3333333333333 92.3733333333333L87.04 61.8666666666667C59.0933333333333 97.92 42.6666666666667 142.9333333333333 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333C305.0666666666667 405.3333333333333 350.08 388.9066666666667 386.1333333333334 360.9600000000001L355.6266666666667 330.6666666666667C344.7466666666667 338.3466666666667 332.8 344.9600000000001 320 350.0800000000001z" /> + <glyph glyph-name="edge" + unicode="&#xF1E9;" + horiz-adv-x="512" d=" M58.4533333333333 217.3866666666667C81.7066666666667 477.0133333333333 480 477.0133333333333 452.2666666666667 158.72H183.68C183.68 67.2 307.6266666666666 38.1866666666667 416.8533333333333 100.0533333333333V10.0266666666666C282.6666666666667 -61.4399999999999 106.6666666666667 -9.1733333333333 106.6666666666667 147.4133333333334C106.6666666666667 264.9600000000001 212.6933333333333 302.7200000000001 212.6933333333333 302.7200000000001S183.04 264.9600000000001 182.1866666666667 233.6H334.9333333333333C334.9333333333333 385.4933333333334 125.8666666666666 329.1733333333334 58.4533333333333 217.3866666666667z" /> + <glyph glyph-name="eject" + unicode="&#xF1EA;" + horiz-adv-x="512" d=" M256 341.3333333333334L113.7066666666667 128H398.2933333333334M106.6666666666667 85.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V85.3333333333334z" /> + <glyph glyph-name="elevation-decline" + unicode="&#xF1EB;" + horiz-adv-x="512" d=" M448 0H64V208L201.6 128L282.0266666666667 174.9333333333333L448 79.1466666666667V0M64 257.2800000000001V304L201.6 224L282.0266666666667 270.9333333333334L448 175.1466666666667V128L282.0266666666667 224L201.6 177.7066666666667L64 257.2800000000001z" /> + <glyph glyph-name="elevation-rise" + unicode="&#xF1EC;" + horiz-adv-x="512" d=" M64 0V79.1466666666667L229.9733333333334 174.9333333333334L310.4 128L448 208V0H64M448 257.2800000000001L310.4 177.7066666666667L229.9733333333334 224L64 128V175.1466666666667L229.9733333333334 270.9333333333334L310.4 224L448 304V257.2800000000001z" /> + <glyph glyph-name="elevator" + unicode="&#xF1ED;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333L234.6666666666667 320H170.6666666666667V234.6666666666667H128V320H64L149.3333333333333 405.3333333333333M362.6666666666667 234.6666666666667L277.3333333333333 320H341.3333333333333V405.3333333333333H384V320H448L362.6666666666667 234.6666666666667M149.3333333333333 192H362.6666666666667C386.1333333333334 192 405.3333333333333 172.8 405.3333333333333 149.3333333333334V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.8666666666667 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V149.3333333333334C106.6666666666667 172.8 125.8666666666667 192 149.3333333333333 192M149.3333333333333 149.3333333333334V21.3333333333334H362.6666666666667V149.3333333333334H149.3333333333333z" /> + <glyph glyph-name="email" + unicode="&#xF1EE;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334L256 170.6666666666667L85.3333333333333 277.3333333333334V320L256 213.3333333333334L426.6666666666667 320M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="email-open" + unicode="&#xF1EF;" + horiz-adv-x="512" d=" M85.3333333333333 277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334L256 384L85.3333333333333 277.3333333333334M469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V277.3333333333334C42.6666666666667 292.9066666666667 50.9866666666667 306.3466666666667 63.36 313.8133333333334L256 434.3466666666667L448.64 313.8133333333334C461.0133333333333 306.3466666666667 469.3333333333333 292.9066666666667 469.3333333333333 277.3333333333334z" /> + <glyph glyph-name="email-open-outline" + unicode="&#xF5EF;" + horiz-adv-x="512" d=" M256 120.3200000000001L85.3333333333333 226.9866666666667V64H426.6666666666667V226.9866666666667L256 120.3200000000001M85.3333333333333 277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334L256 384L85.3333333333333 277.3333333333334M469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V277.3333333333334C42.6666666666667 292.9066666666667 50.9866666666667 306.3466666666667 63.36 313.8133333333334L256 434.3466666666667L448.64 313.8133333333334C461.0133333333333 306.3466666666667 469.3333333333333 292.9066666666667 469.3333333333333 277.3333333333334z" /> + <glyph glyph-name="email-outline" + unicode="&#xF1F0;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M426.6666666666667 64H85.3333333333333V277.3333333333334L256 170.6666666666667L426.6666666666667 277.3333333333334V64M426.6666666666667 320L256 213.3333333333334L85.3333333333333 320H426.6666666666667z" /> + <glyph glyph-name="email-secure" + unicode="&#xF1F1;" + horiz-adv-x="512" d=" M437.3333333333333 448C466.7733333333333 448 490.6666666666666 424.1066666666667 490.6666666666666 394.6666666666667V384C502.4 384 512 374.4 512 362.6666666666667V277.3333333333334C512 265.6 502.4 256 490.6666666666666 256H384C372.2666666666667 256 362.6666666666667 265.6 362.6666666666667 277.3333333333334V362.6666666666667C362.6666666666667 374.4 372.2666666666667 384 384 384V394.6666666666667C384 424.1066666666667 407.8933333333333 448 437.3333333333333 448M256 213.3333333333334L85.3333333333333 320V277.3333333333334L256 170.6666666666667L345.1733333333333 226.3466666666667C356.0533333333334 218.24 369.4933333333334 213.3333333333334 384 213.3333333333334H469.3333333333333V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H320V277.3333333333334C320 269.6533333333334 321.28 262.4000000000001 323.84 256L256 213.3333333333334M437.3333333333333 426.6666666666667C419.6266666666667 426.6666666666667 405.3333333333333 412.3733333333334 405.3333333333333 394.6666666666667V384H469.3333333333333V394.6666666666667C469.3333333333333 412.3733333333334 455.04 426.6666666666667 437.3333333333333 426.6666666666667z" /> + <glyph glyph-name="email-variant" + unicode="&#xF5F0;" + horiz-adv-x="512" d=" M256 170.6666666666667L42.6666666666667 303.7866666666667V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V304L256 170.6666666666667M469.3333333333333 64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V253.6533333333334L85.3333333333333 226.9866666666667V64H426.6666666666667V226.9866666666667L469.3333333333333 253.6533333333334V64z" /> + <glyph glyph-name="emoticon" + unicode="&#xF1F2;" + horiz-adv-x="512" d=" M256 74.6666666666667C305.7066666666667 74.6666666666667 347.7333333333334 105.8133333333334 365.0133333333333 149.3333333333334H146.9866666666667C164.0533333333333 105.8133333333334 206.2933333333333 74.6666666666667 256 74.6666666666667M181.3333333333333 213.3333333333334C199.04 213.3333333333334 213.3333333333333 227.6266666666667 213.3333333333333 245.3333333333334S199.04 277.3333333333334 181.3333333333333 277.3333333333334S149.3333333333333 263.04 149.3333333333333 245.3333333333334S163.6266666666667 213.3333333333334 181.3333333333333 213.3333333333334M330.6666666666667 213.3333333333334C348.3733333333333 213.3333333333334 362.6666666666667 227.6266666666667 362.6666666666667 245.3333333333334S348.3733333333333 277.3333333333334 330.6666666666667 277.3333333333334S298.6666666666667 263.04 298.6666666666667 245.3333333333334S312.96 213.3333333333334 330.6666666666667 213.3333333333334M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="emoticon-cool" + unicode="&#xF1F3;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667C405.3333333333333 205.2266666666667 360.1066666666667 181.3333333333334 330.6666666666667 181.3333333333334S272 205.2266666666667 272 234.6666666666667H240C240 205.2266666666667 210.7733333333333 181.3333333333334 181.3333333333333 181.3333333333334S106.6666666666667 205.2266666666667 106.6666666666667 234.6666666666667H90.6666666666667C87.2533333333333 221.0133333333333 85.3333333333333 206.72 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 206.72 424.7466666666667 221.0133333333333 421.3333333333333 234.6666666666667H405.3333333333333M256 362.6666666666667C192.8533333333333 362.6666666666667 137.6 328.32 108.16 277.3333333333334H403.84C374.4 328.32 319.1466666666667 362.6666666666667 256 362.6666666666667M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-devil" + unicode="&#xF1F4;" + horiz-adv-x="512" d=" M32 403.4133333333334C51.2 384 82.56 368.4266666666667 121.3866666666667 357.3333333333334C158.08 387.4133333333334 205.0133333333333 405.3333333333333 256 405.3333333333333C306.9866666666667 405.3333333333333 353.92 387.4133333333334 390.6133333333333 357.3333333333334C429.44 368.4266666666667 460.8 384 480 403.4133333333334C479.36 368.64 461.8666666666666 336.8533333333334 432.64 311.4666666666667C455.8933333333333 277.3333333333334 469.3333333333333 236.3733333333334 469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192C42.6666666666667 236.3733333333334 56.1066666666667 277.3333333333334 79.36 311.4666666666667C50.1333333333333 336.8533333333334 32.64 368.64 32 403.4133333333334M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M224 234.6666666666667C224 217.6 209.0666666666667 202.6666666666667 192 202.6666666666667S160 217.6 160 234.6666666666667V266.6666666666667L224 234.6666666666667M352 234.6666666666667C352 217.6 337.0666666666667 202.6666666666667 320 202.6666666666667S288 217.6 288 234.6666666666667L352 266.6666666666667V234.6666666666667M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-happy" + unicode="&#xF1F5;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M213.3333333333333 245.3333333333334C213.3333333333333 228.2666666666667 198.4 213.3333333333334 181.3333333333333 213.3333333333334S149.3333333333333 228.2666666666667 149.3333333333333 245.3333333333334S164.2666666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 262.4000000000001 213.3333333333333 245.3333333333334M362.6666666666667 245.3333333333334C362.6666666666667 228.2666666666667 347.7333333333334 213.3333333333334 330.6666666666667 213.3333333333334S298.6666666666667 228.2666666666667 298.6666666666667 245.3333333333334S313.6 277.3333333333334 330.6666666666667 277.3333333333334S362.6666666666667 262.4000000000001 362.6666666666667 245.3333333333334M256 80.4266666666667C218.6666666666667 80.4266666666667 185.8133333333333 96 166.6133333333333 119.04L196.9066666666667 149.3333333333334C206.5066666666667 133.9733333333334 229.3333333333333 123.0933333333334 256 123.0933333333334S305.4933333333334 133.9733333333334 315.0933333333333 149.3333333333334L345.3866666666666 119.04C326.1866666666666 96 293.3333333333333 80.4266666666667 255.9999999999999 80.4266666666667z" /> + <glyph glyph-name="emoticon-neutral" + unicode="&#xF1F6;" + horiz-adv-x="512" d=" M181.3333333333333 213.3333333333334C163.6266666666667 213.3333333333334 149.3333333333333 227.6266666666667 149.3333333333333 245.3333333333334S163.6266666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 263.04 213.3333333333333 245.3333333333334S199.04 213.3333333333334 181.3333333333333 213.3333333333334M330.6666666666667 213.3333333333334C312.96 213.3333333333334 298.6666666666667 227.6266666666667 298.6666666666667 245.3333333333334S312.96 277.3333333333334 330.6666666666667 277.3333333333334S362.6666666666667 263.04 362.6666666666667 245.3333333333334S348.3733333333333 213.3333333333334 330.6666666666667 213.3333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M192 149.3333333333334H320C331.7333333333334 149.3333333333334 341.3333333333333 139.7333333333334 341.3333333333333 128S331.7333333333334 106.6666666666667 320 106.6666666666667H192C180.2666666666667 106.6666666666667 170.6666666666667 116.2666666666667 170.6666666666667 128S180.2666666666667 149.3333333333334 192 149.3333333333334z" /> + <glyph glyph-name="emoticon-poop" + unicode="&#xF1F7;" + horiz-adv-x="512" d=" M192 213.3333333333334C203.7333333333334 213.3333333333334 213.3333333333333 194.1333333333333 213.3333333333333 170.6666666666667S203.7333333333334 128 192 128S170.6666666666667 147.2000000000001 170.6666666666667 170.6666666666667S180.2666666666667 213.3333333333334 192 213.3333333333334M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 194.1333333333333 341.3333333333333 170.6666666666667S331.7333333333334 128 320 128S298.6666666666667 147.2000000000001 298.6666666666667 170.6666666666667S308.2666666666667 213.3333333333334 320 213.3333333333334M208 410.6666666666667S341.3333333333333 362.6666666666667 320 277.3333333333334C320 277.3333333333334 405.3333333333333 277.3333333333334 368 202.6666666666667C368 202.6666666666667 457.8133333333333 193.28 432.64 120.7466666666667C405.3333333333333 95.36 398.9333333333334 87.8933333333334 373.3333333333333 69.3333333333334L433.28 103.68C455.4666666666666 92.8 519.8933333333332 53.9733333333334 448 0C362.6666666666667 -64 234.6666666666667 -5.3333333333333 192 -5.3333333333333S106.6666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333S42.6666666666667 0 42.6666666666667 42.6666666666667S85.3333333333333 106.6666666666667 106.6666666666667 106.6666666666667C106.6666666666667 106.6666666666667 42.6666666666667 170.6666666666667 149.3333333333333 213.3333333333334C149.3333333333333 213.3333333333334 106.6666666666667 277.3333333333334 192 298.6666666666667C192 298.6666666666667 170.6666666666667 320 192 341.3333333333334S208 389.3333333333333 208 410.6666666666667M170.6666666666667 85.3333333333334C199.04 60.3733333333333 227.6266666666667 35.6266666666667 256 35.6266666666667S312.96 60.3733333333334 341.3333333333333 85.3333333333334H170.6666666666667M192 234.6666666666667C168.5333333333333 234.6666666666667 149.3333333333333 206.08 149.3333333333333 170.6666666666667S168.5333333333333 106.6666666666667 192 106.6666666666667S234.6666666666667 135.2533333333333 234.6666666666667 170.6666666666667S215.4666666666667 234.6666666666667 192 234.6666666666667M320 234.6666666666667C296.5333333333333 234.6666666666667 277.3333333333333 206.08 277.3333333333333 170.6666666666667S296.5333333333333 106.6666666666667 320 106.6666666666667S362.6666666666667 135.2533333333333 362.6666666666667 170.6666666666667S343.4666666666667 234.6666666666667 320 234.6666666666667z" /> + <glyph glyph-name="emoticon-sad" + unicode="&#xF1F8;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M330.6666666666667 277.3333333333334C347.7333333333334 277.3333333333334 362.6666666666667 262.4000000000001 362.6666666666667 245.3333333333334S347.7333333333334 213.3333333333334 330.6666666666667 213.3333333333334S298.6666666666667 228.2666666666667 298.6666666666667 245.3333333333334S313.6 277.3333333333334 330.6666666666667 277.3333333333334M213.3333333333333 245.3333333333334C213.3333333333333 228.2666666666667 198.4 213.3333333333334 181.3333333333333 213.3333333333334S149.3333333333333 228.2666666666667 149.3333333333333 245.3333333333334S164.2666666666667 277.3333333333334 181.3333333333333 277.3333333333334S213.3333333333333 262.4000000000001 213.3333333333333 245.3333333333334M256 149.3333333333334C293.3333333333333 149.3333333333334 326.1866666666666 133.9733333333334 345.3866666666667 110.72L315.0933333333334 80.4266666666667C305.4933333333334 96 282.6666666666667 106.6666666666667 256 106.6666666666667S206.5066666666667 96 196.9066666666667 80.4266666666667L166.6133333333334 110.72C185.8133333333333 133.9733333333334 218.6666666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="emoticon-tongue" + unicode="&#xF1F9;" + horiz-adv-x="512" d=" M192 277.3333333333334C215.4666666666667 277.3333333333334 234.6666666666667 258.1333333333334 234.6666666666667 234.6666666666667C234.6666666666667 226.9866666666667 232.5333333333334 219.52 228.9066666666667 213.3333333333334C221.6533333333333 226.1333333333334 207.7866666666667 234.6666666666667 192 234.6666666666667S162.3466666666667 226.1333333333334 155.0933333333333 213.3333333333334C151.4666666666667 219.52 149.3333333333333 226.9866666666667 149.3333333333333 234.6666666666667C149.3333333333333 258.1333333333334 168.5333333333333 277.3333333333334 192 277.3333333333334M320 277.3333333333334C343.4666666666667 277.3333333333334 362.6666666666667 258.1333333333334 362.6666666666667 234.6666666666667C362.6666666666667 226.9866666666667 360.5333333333333 219.52 356.9066666666667 213.3333333333334C349.6533333333333 226.1333333333334 335.7866666666667 234.6666666666667 320 234.6666666666667S290.3466666666667 226.1333333333334 283.0933333333333 213.3333333333334C279.4666666666667 219.52 277.3333333333333 226.9866666666667 277.3333333333333 234.6666666666667C277.3333333333333 258.1333333333334 296.5333333333333 277.3333333333334 320 277.3333333333334M256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C138.0266666666667 -21.3333333333333 42.6666666666667 74.6666666666667 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M192 170.6666666666667H320C331.7333333333334 170.6666666666667 341.3333333333333 161.0666666666667 341.3333333333333 149.3333333333334S331.7333333333334 128 320 128C320 85.3333333333334 300.8 64 277.3333333333333 64S234.6666666666667 85.3333333333334 234.6666666666667 128H192C180.2666666666667 128 170.6666666666667 137.6 170.6666666666667 149.3333333333334S180.2666666666667 170.6666666666667 192 170.6666666666667z" /> + <glyph glyph-name="engine" + unicode="&#xF1FA;" + horiz-adv-x="512" d=" M149.3333333333333 362.6666666666667V320H213.3333333333333V277.3333333333334H149.3333333333333L106.6666666666667 234.6666666666667V170.6666666666667H64V234.6666666666667H21.3333333333333V64H64V128H106.6666666666667V64H170.6666666666667L213.3333333333333 21.3333333333334H384V106.6666666666667H426.6666666666667V42.6666666666667H490.6666666666666V256H426.6666666666667V192H384V277.3333333333334H256V320H320V362.6666666666667H149.3333333333333z" /> + <glyph glyph-name="engine-outline" + unicode="&#xF1FB;" + horiz-adv-x="512" d=" M170.6666666666667 234.6666666666667H341.3333333333333V64H234.6666666666667L192 106.6666666666667H149.3333333333333V213.3333333333334M149.3333333333333 362.6666666666667V320H213.3333333333333V277.3333333333334H149.3333333333333L106.6666666666667 234.6666666666667V170.6666666666667H64V234.6666666666667H21.3333333333333V64H64V128H106.6666666666667V64H170.6666666666667L213.3333333333333 21.3333333333334H384V106.6666666666667H426.6666666666667V42.6666666666667H490.6666666666666V256H426.6666666666667V192H384V277.3333333333334H256V320H320V362.6666666666667H149.3333333333333z" /> + <glyph glyph-name="equal" + unicode="&#xF1FC;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333V234.6666666666667M405.3333333333333 106.6666666666667H106.6666666666667V149.3333333333334H405.3333333333333V106.6666666666667z" /> + <glyph glyph-name="equal-box" + unicode="&#xF1FD;" + horiz-adv-x="512" d=" M362.6666666666667 106.6666666666667V149.3333333333334H149.3333333333333V106.6666666666667H362.6666666666667M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M362.6666666666667 234.6666666666667V277.3333333333334H149.3333333333333V234.6666666666667H362.6666666666667z" /> + <glyph glyph-name="eraser" + unicode="&#xF1FE;" + horiz-adv-x="512" d=" M346.4533333333333 372.0533333333334L452.0533333333333 266.6666666666667C468.6933333333333 249.8133333333334 468.6933333333333 222.9333333333333 452.0533333333333 206.08L256 10.0266666666666C222.72 -23.2533333333333 168.7466666666667 -23.2533333333333 135.2533333333333 10.0266666666666L59.9466666666667 85.3333333333334C43.3066666666667 102.1866666666667 43.3066666666667 129.0666666666667 59.9466666666667 145.92L286.08 372.0533333333334C302.9333333333333 388.6933333333334 329.8133333333334 388.6933333333334 346.4533333333334 372.0533333333334M90.0266666666667 115.6266666666667L165.5466666666667 40.3200000000001C182.1866666666667 23.4666666666667 209.0666666666667 23.4666666666667 225.92 40.3200000000001L301.2266666666667 115.6266666666667L195.6266666666666 221.2266666666667L90.0266666666666 115.6266666666667z" /> + <glyph glyph-name="eraser-variant" + unicode="&#xF642;" + horiz-adv-x="512" d=" M322.9866666666667 384C312.1066666666667 384 301.2266666666667 379.7333333333334 292.9066666666667 371.4133333333334L55.2533333333333 133.76C38.6133333333333 117.3333333333334 38.6133333333333 90.24 55.2533333333333 73.3866666666667L107.3066666666667 21.3333333333334H270.7200000000001L456.7466666666667 207.5733333333334C473.6 224 473.6 251.0933333333334 456.7466666666667 267.9466666666667L353.2800000000001 371.4133333333334C344.9600000000001 379.7333333333334 333.8666666666667 384 322.9866666666667 384M362.6666666666667 64L320 21.3333333333334H469.3333333333333V64" /> + <glyph glyph-name="escalator" + unicode="&#xF1FF;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H404.2666666666667L148.2666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64S61.8666666666667 106.6666666666667 85.3333333333333 106.6666666666667H112.8533333333333L149.3333333333333 143.1466666666667V234.6666666666667C149.3333333333333 246.4000000000001 158.9333333333333 256 170.6666666666667 256H192C203.7333333333334 256 213.3333333333333 246.4000000000001 213.3333333333333 234.6666666666667V207.1466666666667L368.8533333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320S450.1333333333334 277.3333333333334 426.6666666666667 277.3333333333334M181.3333333333333 341.3333333333334C199.04 341.3333333333334 213.3333333333333 327.04 213.3333333333333 309.3333333333334S199.04 277.3333333333334 181.3333333333333 277.3333333333334S149.3333333333333 291.6266666666667 149.3333333333333 309.3333333333334S163.6266666666667 341.3333333333334 181.3333333333333 341.3333333333334z" /> + <glyph glyph-name="ethernet" + unicode="&#xF200;" + horiz-adv-x="512" d=" M149.3333333333333 128H192V64H234.6666666666667V128H277.3333333333333V64H320V128H362.6666666666667V64H405.3333333333333V256H320V320H192V256H106.6666666666667V64H149.3333333333333V128M93.44 384H418.7733333333333C446.7200000000001 384 469.3333333333333 361.3866666666667 469.3333333333333 333.2266666666667V29.2266666666667C469.3333333333333 1.2800000000001 446.7200000000001 -21.3333333333333 418.7733333333333 -21.3333333333333H93.44C65.28 -21.3333333333333 42.6666666666667 1.28 42.6666666666667 29.2266666666667V333.2266666666667C42.6666666666667 361.3866666666667 65.28 384 93.44 384z" /> + <glyph glyph-name="ethernet-cable" + unicode="&#xF201;" + horiz-adv-x="512" d=" M234.6666666666667 384V298.6666666666667H277.3333333333333V384H234.6666666666667M170.6666666666667 362.6666666666667V213.3333333333334H341.3333333333333V362.6666666666667H298.6666666666667V277.3333333333334H213.3333333333333V362.6666666666667H170.6666666666667M213.3333333333333 192V-21.3333333333333H298.6666666666667V192H213.3333333333333z" /> + <glyph glyph-name="ethernet-cable-off" + unicode="&#xF202;" + horiz-adv-x="512" d=" M234.6666666666667 384H277.3333333333333V298.6666666666667H234.6666666666667V384M170.6666666666667 362.6666666666667H213.3333333333333V277.3333333333334H298.6666666666667V362.6666666666667H341.3333333333333V213.3333333333334H273.4933333333334L170.6666666666667 316.1600000000001V362.6666666666667M426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L298.6666666666667 79.5733333333334V-21.3333333333333H213.3333333333333V164.9066666666667L42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334z" /> + <glyph glyph-name="etsy" + unicode="&#xF203;" + horiz-adv-x="512" d=" M143.36 4.6933333333333C175.5733333333333 6.1866666666667 214.8266666666667 4.6933333333333 253.2266666666667 4.6933333333333C292.6933333333334 4.6933333333333 333.2266666666667 7.2533333333333 365.2266666666667 4.6933333333333C378.0266666666667 3.6266666666667 389.9733333333334 -4.0533333333333 400.4266666666666 2.7733333333333C408.7466666666667 13.2266666666666 402.56 27.52 404.48 41.6C407.8933333333333 68.6933333333333 432.64 100.9066666666667 396.5866666666667 107.7333333333334C381.2266666666667 93.6533333333334 391.4666666666667 80.4266666666667 382.9333333333333 62.9333333333333C372.2666666666667 42.0266666666666 334.5066666666667 34.7733333333333 298.6666666666667 32C267.52 29.44 213.3333333333333 26.4533333333333 202.6666666666667 47.5733333333334C192.8533333333333 65.28 198.1866666666667 92.8000000000001 198.1866666666667 115.6266666666667C198.1866666666667 141.2266666666667 195.4133333333333 165.9733333333334 202.6666666666667 185.6C241.4933333333334 182.8266666666667 292.2666666666667 198.6133333333333 320 181.3333333333334C338.56 170.6666666666667 327.8933333333333 148.0533333333334 349.44 140.8C364.16 144.8533333333334 356.2666666666667 163.84 355.4133333333333 181.3333333333334C354.7733333333333 193.28 354.7733333333333 209.28 355.4133333333333 222.5066666666667C356.0533333333334 240.4266666666667 362.6666666666667 261.12 343.4666666666667 261.5466666666667C328.32 249.6 339.8400000000001 229.76 323.8400000000001 218.6666666666667C318.9333333333334 215.04 307.8400000000001 213.3333333333334 300.3733333333334 213.3333333333334C270.9333333333334 209.7066666666667 224.8533333333334 212.2666666666667 200.1066666666667 216.7466666666667C196.9066666666667 252.5866666666667 197.12 301.4400000000001 200.1066666666667 337.2800000000001C213.3333333333334 350.5066666666667 244.2666666666667 351.1466666666667 264.9600000000001 350.9333333333334C301.4400000000001 350.9333333333334 358.1866666666667 347.7333333333334 369.0666666666667 329.6C375.04 320 370.3466666666667 298.6666666666667 380.8 296.5333333333334C402.1333333333334 291.6266666666667 391.6800000000001 329.6 392.7466666666667 347.0933333333334C393.3866666666667 360.3200000000001 399.1466666666667 368.64 396.5866666666667 378.24C389.76 387.6266666666667 379.52 382.9333333333334 373.3333333333333 382.0800000000001C306.1333333333334 373.3333333333334 204.8 378.24 133.5466666666667 378.24C125.0133333333333 378.24 110.08 382.5066666666667 104.1066666666667 372.48C99.84 349.8666666666667 130.56 359.2533333333334 141.2266666666667 347.0933333333334C144.8533333333333 343.2533333333334 149.9733333333333 325.76 151.04 314.0266666666667C154.24 282.88 151.04 235.3066666666667 151.04 189.4400000000001C151.04 141.2266666666667 154.88 92.3733333333334 151.04 62.9333333333334C149.3333333333333 52.6933333333334 143.5733333333333 36.2666666666668 141.2266666666667 33.9200000000001C128 20.4800000000001 92.5866666666667 35.2 96 6.6133333333334C108.5866666666667 -1.7066666666666 126.5066666666667 3.8400000000001 143.36 4.6933333333334z" /> + <glyph glyph-name="ev-station" + unicode="&#xF5F1;" + horiz-adv-x="512" d=" M421.76 293.76L421.9733333333334 293.9733333333334L342.6133333333334 373.3333333333333L320 350.7200000000001L365.0133333333333 305.7066666666667C344.9599999999999 298.0266666666667 330.6666666666667 278.8266666666667 330.6666666666667 256C330.6666666666667 226.5600000000001 354.56 202.6666666666667 384 202.6666666666667C391.68 202.6666666666667 398.7200000000001 204.3733333333333 405.3333333333333 207.1466666666667V53.3333333333334C405.3333333333333 41.6 395.7333333333334 32 384 32S362.6666666666667 41.6 362.6666666666667 53.3333333333334V149.3333333333334C362.6666666666667 172.8 343.4666666666667 192 320 192H298.6666666666667V341.3333333333334C298.6666666666667 364.8 279.4666666666667 384 256 384H128C104.5333333333333 384 85.3333333333333 364.8 85.3333333333333 341.3333333333334V0H298.6666666666667V160H330.6666666666667V53.3333333333334C330.6666666666667 23.8933333333334 354.56 0 384 0S437.3333333333333 23.8933333333334 437.3333333333333 53.3333333333334V256C437.3333333333333 270.7200000000001 431.36 284.1600000000001 421.76 293.76M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256S372.2666666666667 277.3333333333334 384 277.3333333333334S405.3333333333333 267.7333333333334 405.3333333333333 256S395.7333333333334 234.6666666666667 384 234.6666666666667M170.6666666666667 64V160H128L213.3333333333333 320V213.3333333333334H256L170.6666666666667 64z" /> + <glyph glyph-name="evernote" + unicode="&#xF204;" + horiz-adv-x="512" d=" M321.92 199.8933333333333S325.9733333333333 227.2 341.3333333333333 227.2C357.5466666666667 227.2 379.3066666666667 190.72 379.3066666666667 190.72S329.8133333333334 199.8933333333333 321.92 199.8933333333333M405.3333333333333 347.9466666666667C397.6533333333333 360.7466666666667 359.04 375.2533333333334 338.9866666666667 375.2533333333334H288S270.9333333333333 405.3333333333333 232.1066666666667 405.3333333333333C193.0666666666667 405.3333333333333 195.6266666666667 388.0533333333334 195.6266666666667 373.3333333333334V313.1733333333334L177.92 294.6133333333334H96S73.3866666666667 279.2533333333334 73.3866666666667 246.6133333333333C73.3866666666667 213.3333333333333 83.6266666666667 99.2 152.1066666666667 88.5333333333333C233.1733333333333 76.16 247.04 113.7066666666667 247.04 118.1866666666667C247.04 137.3866666666667 247.4666666666667 166.1866666666667 247.4666666666667 166.1866666666667S271.1466666666667 120.96 306.9866666666667 120.96S363.52 100.2666666666667 363.52 79.1466666666667V39.8933333333333S362.6666666666667 15.36 341.3333333333333 15.36H296.32S281.6 26.88 281.6 42.6666666666667C281.6 58.6666666666667 288.64 62.9333333333333 297.1733333333334 62.9333333333333C305.4933333333334 62.9333333333333 312.5333333333334 62.08 312.5333333333334 62.08V95.36S244.6933333333334 96 244.6933333333334 43.9466666666667C244.6933333333334 -7.8933333333333 280.1066666666667 -21.3333333333333 308.48 -21.3333333333333H354.7733333333334S438.6133333333334 -10.6666666666666 438.6133333333334 154.6666666666667S412.3733333333333 335.36 405.3333333333333 347.9466666666667M160 313.3866666666667H90.88L177.4933333333334 400.64V330.6666666666667L160 313.3866666666667z" /> + <glyph glyph-name="exclamation" + unicode="&#xF205;" + horiz-adv-x="512" d=" M234.6666666666667 352H277.3333333333333V117.3333333333334H234.6666666666667V352M277.3333333333333 74.6666666666667V32H234.6666666666667V74.6666666666667H277.3333333333333z" /> + <glyph glyph-name="exit-to-app" + unicode="&#xF206;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V256H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M215.04 115.6266666666667L245.3333333333333 85.3333333333334L352 192L245.3333333333333 298.6666666666667L215.04 268.5866666666667L270.2933333333333 213.3333333333334H64V170.6666666666667H270.2933333333333L215.04 115.6266666666667z" /> + <glyph glyph-name="export" + unicode="&#xF207;" + horiz-adv-x="512" d=" M490.6666666666666 192L405.3333333333333 277.3333333333334V213.3333333333334H213.3333333333333V170.6666666666667H405.3333333333333V106.6666666666667M21.3333333333333 64V320C21.3333333333333 343.68 40.5333333333333 362.6666666666667 64 362.6666666666667H320C343.4666666666667 362.6666666666667 362.6666666666667 343.4666666666667 362.6666666666667 320V256H320V320H64V64H320V128H362.6666666666667V64C362.6666666666667 40.5333333333333 343.4666666666667 21.3333333333334 320 21.3333333333334H64C40.5333333333333 21.3333333333334 21.3333333333333 40.5333333333333 21.3333333333333 64z" /> + <glyph glyph-name="eye" + unicode="&#xF208;" + horiz-adv-x="512" d=" M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M256 85.3333333333334C197.12 85.3333333333334 149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334M256 352C149.3333333333333 352 58.24 285.6533333333333 21.3333333333333 192C58.24 98.3466666666667 149.3333333333333 32 256 32S453.76 98.3466666666667 490.6666666666666 192C453.76 285.6533333333333 362.6666666666667 352 256 352z" /> + <glyph glyph-name="eye-off" + unicode="&#xF209;" + horiz-adv-x="512" d=" M252.3733333333334 256L320 188.5866666666667V192C320 227.4133333333334 291.4133333333333 256 256 256H252.3733333333334M160.64 238.9333333333334L193.7066666666667 205.8666666666667C192.64 201.3866666666666 192 196.9066666666667 192 192C192 156.5866666666667 220.5866666666667 128 256 128C260.6933333333334 128 265.3866666666667 128.64 269.8666666666667 129.7066666666667L302.9333333333334 96.64C288.64 89.6 272.8533333333334 85.3333333333333 256 85.3333333333333C197.12 85.3333333333333 149.3333333333333 133.12 149.3333333333333 192C149.3333333333333 208.8533333333333 153.6 224.6399999999999 160.64 238.9333333333333M42.6666666666667 356.9066666666667L91.3066666666666 308.2666666666667L100.9066666666667 298.6666666666667C65.7066666666667 270.9333333333334 37.9733333333333 234.6666666666667 21.3333333333333 192C58.24 98.3466666666667 149.3333333333333 32 256 32C289.0666666666667 32 320.64 38.4 349.44 49.92L358.6133333333333 40.96L420.9066666666667 -21.3333333333333L448 5.76L69.76 384M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192C362.6666666666667 178.3466666666667 359.8933333333333 165.12 354.9866666666667 153.1733333333334L417.4933333333334 90.6666666666667C449.4933333333334 117.3333333333334 475.0933333333333 152.3200000000001 490.6666666666666 192C453.76 285.6533333333333 362.6666666666667 352 256 352C226.1333333333334 352 197.5466666666667 346.6666666666667 170.6666666666667 337.0666666666667L216.96 291.2000000000001C229.12 295.8933333333333 242.1333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="eyedropper" + unicode="&#xF20A;" + horiz-adv-x="512" d=" M412.8 197.9733333333333L367.36 152.5333333333333L337.2800000000001 182.8266666666667L172.8 18.3466666666667L74.6666666666667 -21.3333333333333L42.6666666666667 10.6666666666667L82.3466666666667 108.8L246.8266666666667 273.28L216.5333333333333 303.36L261.9733333333334 348.8L412.8 197.9733333333333M357.5466666666667 384C382.5066666666667 408.96 423.04 408.96 448 384C472.96 359.04 472.96 318.5066666666667 448 293.5466666666667L407.04 252.5866666666667L316.5866666666666 343.04L357.5466666666667 384M118.6133333333333 84.6933333333333L96 32L148.6933333333333 54.6133333333333L307.2 213.3333333333334L277.3333333333333 243.2L118.6133333333333 84.6933333333333z" /> + <glyph glyph-name="eyedropper-variant" + unicode="&#xF20B;" + horiz-adv-x="512" d=" M147.6266666666667 42.6666666666667L106.6666666666667 83.6266666666667L278.6133333333334 256L320 214.6133333333334M441.8133333333334 327.8933333333333L391.8933333333333 377.8133333333334C384 386.1333333333334 370.1333333333334 386.1333333333334 361.8133333333334 377.8133333333334L295.2533333333334 311.2533333333334L254.08 352L224 321.92L254.2933333333333 291.6266666666667L64 101.3333333333334V0H165.3333333333333L355.6266666666667 190.2933333333334L385.9200000000001 160L416.0000000000001 190.0800000000001L375.0400000000001 231.04L441.6000000000002 297.6C450.1333333333335 306.1333333333334 450.1333333333335 320 441.8133333333335 327.8933333333333z" /> + <glyph glyph-name="face" + unicode="&#xF643;" + horiz-adv-x="512" d=" M192 197.3333333333334C177.28 197.3333333333334 165.3333333333333 185.3866666666667 165.3333333333333 170.6666666666667S177.28 144 192 144S218.6666666666667 155.9466666666667 218.6666666666667 170.6666666666667S206.72 197.3333333333334 192 197.3333333333334M320 197.3333333333334C305.28 197.3333333333334 293.3333333333333 185.3866666666667 293.3333333333333 170.6666666666667S305.28 144 320 144S346.6666666666667 155.9466666666667 346.6666666666667 170.6666666666667S334.72 197.3333333333334 320 197.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192C85.3333333333333 198.1866666666667 85.3333333333333 204.3733333333333 86.4 210.3466666666667C136.7466666666667 232.7466666666667 176.64 273.92 197.5466666666667 324.9066666666667C236.16 270.2933333333334 299.7333333333334 234.6666666666667 371.6266666666667 234.6666666666667C388.2666666666667 234.6666666666667 404.2666666666667 236.5866666666667 419.6266666666667 240.2133333333334C424.1066666666667 225.0666666666667 426.6666666666667 208.8533333333333 426.6666666666667 192C426.6666666666667 97.92 350.08 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="face-profile" + unicode="&#xF644;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 269.0133333333333C289.4933333333334 247.4666666666667 328.96 234.6666666666667 371.6266666666667 234.6666666666667C388.2666666666667 234.6666666666667 404.2666666666667 236.5866666666667 419.6266666666667 240.2133333333334C424.1066666666667 225.0666666666667 426.6666666666667 208.8533333333333 426.6666666666667 192C426.6666666666667 97.92 350.08 21.3333333333334 256 21.3333333333334C192 21.3333333333334 136.32 56.7466666666667 106.6666666666667 109.0133333333333L144 149.3333333333334V170.6666666666667C144 185.3866666666667 155.9466666666667 197.3333333333334 170.6666666666667 197.3333333333334S197.3333333333333 185.3866666666667 197.3333333333333 170.6666666666667V149.3333333333334H256M341.3333333333333 197.3333333333334C326.6133333333334 197.3333333333334 314.6666666666667 185.3866666666667 314.6666666666667 170.6666666666667S326.6133333333334 144 341.3333333333333 144S368 155.9466666666667 368 170.6666666666667S356.0533333333334 197.3333333333334 341.3333333333333 197.3333333333334z" /> + <glyph glyph-name="facebook" + unicode="&#xF20C;" + horiz-adv-x="512" d=" M362.6666666666667 405.3333333333333V320H320C305.28 320 298.6666666666667 302.7200000000001 298.6666666666667 288V234.6666666666667H362.6666666666667V149.3333333333334H298.6666666666667V-21.3333333333333H213.3333333333333V149.3333333333334H149.3333333333333V234.6666666666667H213.3333333333333V320C213.3333333333333 367.1466666666667 251.52 405.3333333333333 298.6666666666667 405.3333333333333H362.6666666666667z" /> + <glyph glyph-name="facebook-box" + unicode="&#xF20D;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667V298.6666666666667H362.6666666666667C350.9333333333333 298.6666666666667 341.3333333333333 289.0666666666667 341.3333333333333 277.3333333333334V234.6666666666667H405.3333333333333V170.6666666666667H341.3333333333333V21.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667V234.6666666666667H277.3333333333333V288C277.3333333333333 329.3866666666667 310.8266666666667 362.6666666666667 352 362.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="facebook-messenger" + unicode="&#xF20E;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.6666666666667 405.3333333333333 42.6666666666667 317.0133333333333 42.6666666666667 208C42.6666666666667 146.5600000000001 72.96 91.7333333333334 120.5333333333333 55.4666666666667L121.8133333333333 -21.3333333333333L195.4133333333333 18.7733333333333L194.7733333333334 18.9866666666667C214.1866666666667 13.6533333333334 234.6666666666667 10.6666666666667 256 10.6666666666667C373.3333333333333 10.6666666666667 469.3333333333333 98.9866666666667 469.3333333333333 208S373.3333333333333 405.3333333333333 256 405.3333333333333M277.9733333333333 140.5866666666667L224.8533333333333 196.6933333333333L117.3333333333333 140.5866666666667L232.1066666666667 260.6933333333334L287.1466666666667 208L390.6133333333333 260.6933333333334L277.9733333333333 140.5866666666667z" /> + <glyph glyph-name="factory" + unicode="&#xF20F;" + horiz-adv-x="512" d=" M85.3333333333333 64V21.3333333333334H170.6666666666667V64H85.3333333333333M85.3333333333333 149.3333333333334V106.6666666666667H298.6666666666667V149.3333333333334H85.3333333333333M213.3333333333333 64V21.3333333333334H298.6666666666667V64H213.3333333333333M341.3333333333333 149.3333333333334V106.6666666666667H426.6666666666667V149.3333333333334H341.3333333333333M341.3333333333333 64V21.3333333333334H426.6666666666667V64H341.3333333333333M42.6666666666667 -21.3333333333333V277.3333333333334L149.3333333333333 192V277.3333333333334L256 192V277.3333333333334L362.6666666666667 192L384 405.3333333333333H448L469.3333333333333 192V-21.3333333333333H42.6666666666667z" /> + <glyph glyph-name="fan" + unicode="&#xF210;" + horiz-adv-x="512" d=" M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334M266.6666666666667 405.3333333333333C362.6666666666667 405.3333333333333 365.0133333333333 329.1733333333334 314.6666666666667 304C293.5466666666666 293.5466666666667 284.16 271.1466666666667 280.1066666666667 251.3066666666667C290.3466666666667 247.04 299.3066666666666 240.4266666666667 306.1333333333334 231.8933333333333C385.0666666666667 274.56 469.9733333333334 257.7066666666667 469.9733333333334 181.3333333333334C469.9733333333334 85.3333333333334 393.8133333333334 83.2 368.64 133.76C357.9733333333334 154.88 335.36 164.2666666666667 315.52 168.3200000000001C311.2533333333334 158.0800000000001 304.64 149.3333333333334 296.1066666666667 142.0800000000001C338.56 63.36 321.7066666666667 -21.3333333333333 245.3333333333333 -21.3333333333333C149.3333333333333 -21.3333333333333 147.4133333333333 55.04 197.76 80.2133333333333C218.6666666666667 90.6666666666666 228.0533333333333 112.8533333333333 232.32 132.48C221.8666666666667 136.7466666666666 212.6933333333333 143.5733333333333 205.8666666666667 152.1066666666666C127.1466666666667 109.8666666666667 42.6666666666667 126.5066666666667 42.6666666666667 202.6666666666667C42.6666666666667 298.6666666666667 118.6133333333333 301.0133333333333 143.7866666666667 250.4533333333334C154.4533333333333 229.3333333333334 176.8533333333334 220.16 196.6933333333333 216.1066666666667C200.7466666666667 226.3466666666667 207.5733333333333 235.3066666666667 216.32 242.1333333333334C173.8666666666667 320.8533333333334 190.72 405.3333333333333 266.6666666666667 405.3333333333333z" /> + <glyph glyph-name="fast-forward" + unicode="&#xF211;" + horiz-adv-x="512" d=" M277.3333333333333 320V64L458.6666666666666 192M85.3333333333333 64L266.6666666666667 192L85.3333333333333 320V64z" /> + <glyph glyph-name="fax" + unicode="&#xF212;" + horiz-adv-x="512" d=" M128 405.3333333333333C116.2666666666667 405.3333333333333 106.6666666666667 395.7333333333334 106.6666666666667 384V298.6666666666667H128V341.3333333333334H170.6666666666667V362.6666666666667H128V384H170.6666666666667V405.3333333333333H128M234.6666666666667 405.3333333333333C222.9333333333333 405.3333333333333 213.3333333333333 395.7333333333334 213.3333333333333 384V298.6666666666667H234.6666666666667V341.3333333333334H256V298.6666666666667H277.3333333333333V384C277.3333333333333 395.7333333333334 267.7333333333334 405.3333333333333 256 405.3333333333333H234.6666666666667M320 405.3333333333333L350.2933333333334 352L320 298.6666666666667H344.1066666666667L362.6666666666667 330.6666666666667L381.2266666666667 298.6666666666667H405.3333333333333L375.04 352L405.3333333333333 405.3333333333333H381.2266666666667L362.6666666666667 373.3333333333334L344.1066666666667 405.3333333333333H320M234.6666666666667 384H256V362.6666666666667H234.6666666666667V384M106.6666666666667 256C71.2533333333333 256 42.6666666666667 227.4133333333334 42.6666666666667 192V64H128V-21.3333333333333H384V64H469.3333333333333V192C469.3333333333333 227.4133333333334 440.7466666666667 256 405.3333333333333 256H106.6666666666667M405.3333333333333 213.3333333333334C417.0666666666667 213.3333333333334 426.6666666666667 203.7333333333334 426.6666666666667 192S417.0666666666667 170.6666666666667 405.3333333333333 170.6666666666667S384 180.2666666666667 384 192S393.6 213.3333333333334 405.3333333333333 213.3333333333334M170.6666666666667 128H341.3333333333333V21.3333333333334H170.6666666666667V128z" /> + <glyph glyph-name="ferry" + unicode="&#xF213;" + horiz-adv-x="512" d=" M128 320H384V235.52L256 277.3333333333334L128 235.52M84.0533333333333 42.6666666666667H85.3333333333333C119.4666666666667 42.6666666666667 149.3333333333333 61.44 170.6666666666667 85.3333333333334C192 61.44 221.8666666666667 42.6666666666667 256 42.6666666666667S320 61.44 341.3333333333333 85.3333333333334C362.6666666666667 61.44 392.5333333333333 42.6666666666667 426.6666666666667 42.6666666666667H427.7333333333334L468.2666666666667 185.3866666666667C469.9733333333332 190.72 469.3333333333333 196.6933333333334 466.9866666666667 201.8133333333334C464.2133333333334 206.9333333333334 459.7333333333333 210.7733333333334 454.1866666666666 212.48L426.6666666666667 221.44V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667H320V426.6666666666667H192V362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V221.44L57.8133333333333 212.48C52.2666666666667 210.7733333333333 47.7866666666667 206.9333333333333 45.0133333333333 201.8133333333333C42.6666666666667 196.6933333333333 42.0266666666667 190.72 43.7333333333333 185.3866666666667M426.6666666666667 0C397.0133333333333 0 367.36 10.0266666666666 341.3333333333333 28.3733333333333C289.28 -8.1066666666667 222.72 -8.1066666666667 170.6666666666667 28.3733333333333C144.64 10.0266666666666 114.9866666666667 0 85.3333333333333 0H42.6666666666667V-42.6666666666666H85.3333333333333C114.56 -42.6666666666666 143.7866666666667 -35.1999999999999 170.6666666666667 -21.3333333333333C224 -49.0666666666667 288 -49.0666666666667 341.3333333333333 -21.3333333333333C368.2133333333334 -35.1999999999999 397.2266666666667 -42.6666666666666 426.6666666666667 -42.6666666666666H469.3333333333333V0H426.6666666666667z" /> + <glyph glyph-name="file" + unicode="&#xF214;" + horiz-adv-x="512" d=" M277.3333333333333 256V373.3333333333334L394.6666666666667 256M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.3466666666667 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333H128z" /> + <glyph glyph-name="file-chart" + unicode="&#xF215;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M149.3333333333333 21.3333333333334H192V149.3333333333334H149.3333333333333V21.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V192H234.6666666666667V21.3333333333334M320 21.3333333333334H362.6666666666667V106.6666666666667H320V21.3333333333334z" /> + <glyph glyph-name="file-check" + unicode="&#xF216;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M222.9333333333333 54.1866666666667L324.2666666666667 155.52L299.3066666666666 185.6L222.9333333333333 109.2266666666667L189.0133333333333 142.9333333333333L164.2666666666667 118.1866666666667L222.9333333333333 54.1866666666667z" /> + <glyph glyph-name="file-cloud" + unicode="&#xF217;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M334.5066666666667 128C327.2533333333334 164.2666666666667 294.8266666666667 192 256 192C225.0666666666667 192 198.4 174.5066666666667 185.1733333333333 149.3333333333334C152.96 145.4933333333334 128 118.4 128 85.3333333333334C128 49.92 156.5866666666667 21.3333333333334 192 21.3333333333334H330.6666666666667C360.1066666666667 21.3333333333334 384 45.2266666666667 384 74.6666666666667C384 102.8266666666667 362.0266666666667 125.6533333333334 334.5066666666667 128z" /> + <glyph glyph-name="file-delimited" + unicode="&#xF218;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M298.6666666666667 128V213.3333333333334H213.3333333333333V128H262.4C268.8 85.3333333333334 256 64 206.9333333333333 34.5600000000001L231.4666666666667 17.0666666666667C277.3333333333333 42.6666666666667 298.6666666666667 106.6666666666667 298.6666666666667 128z" /> + <glyph glyph-name="file-document" + unicode="&#xF219;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M320 64V106.6666666666667H128V64H320M384 149.3333333333334V192H128V149.3333333333334H384z" /> + <glyph glyph-name="file-document-box" + unicode="&#xF21A;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H149.3333333333333V128H298.6666666666667M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M362.6666666666667 256H149.3333333333333V298.6666666666667H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-excel" + unicode="&#xF21B;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M362.6666666666667 213.3333333333334H277.3333333333333V170.6666666666667H298.6666666666667L256 135.04L213.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667L234.6666666666667 117.3333333333334L170.6666666666667 64H149.3333333333333V21.3333333333334H234.6666666666667V64H213.3333333333333L256 99.6266666666667L298.6666666666667 64H277.3333333333333V21.3333333333334H362.6666666666667V64H341.3333333333333L277.3333333333333 117.3333333333334L341.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334z" /> + <glyph glyph-name="file-excel-box" + unicode="&#xF21C;" + horiz-adv-x="512" d=" M345.6 85.3333333333334H302.9333333333333L256 166.4L209.0666666666667 85.3333333333334H166.4L234.6666666666667 192L166.4 298.6666666666667H209.0666666666667L256 217.6L302.9333333333333 298.6666666666667H345.6L277.3333333333333 192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-export" + unicode="&#xF21D;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333M190.5066666666667 187.3066666666667H341.3333333333333V36.48L296.1066666666667 81.7066666666667L235.7333333333334 21.3333333333334L175.36 81.7066666666667L235.7333333333334 141.8666666666667" /> + <glyph glyph-name="file-find" + unicode="&#xF21E;" + horiz-adv-x="512" d=" M192 170.6666666666667C192 135.2533333333333 220.5866666666667 106.6666666666667 256 106.6666666666667S320 135.2533333333333 320 170.6666666666667S291.4133333333333 234.6666666666667 256 234.6666666666667S192 206.08 192 170.6666666666667M426.6666666666667 30.08V277.3333333333334L298.6666666666667 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C393.6 -21.3333333333333 402.1333333333334 -18.1333333333333 409.3866666666667 -12.8L314.88 81.7066666666667C297.8133333333334 70.6133333333334 277.3333333333334 64 256 64C197.12 64 149.3333333333334 111.7866666666667 149.3333333333334 170.6666666666667S197.12 277.3333333333334 256 277.3333333333334S362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667C362.6666666666667 149.3333333333334 356.0533333333334 128.8533333333334 344.9600000000001 112L426.6666666666667 30.08z" /> + <glyph glyph-name="file-hidden" + unicode="&#xF613;" + horiz-adv-x="512" d=" M277.3333333333333 256H298.6666666666667V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V256M394.6666666666667 256L349.44 301.2266666666667L376.1066666666667 327.8933333333333L426.6666666666667 277.3333333333334V234.6666666666667H384V213.3333333333334H320V256H394.6666666666667M277.3333333333333 373.3333333333334V405.3333333333333H256V362.6666666666667H277.3333333333333V320H234.6666666666667V362.6666666666667H192V405.3333333333333H170.6666666666667V362.6666666666667H128V341.3333333333334H85.3333333333333V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333H298.6666666666667L349.0133333333333 354.9866666666667L322.3466666666667 328.3200000000001L277.3333333333333 373.3333333333334M426.6666666666667 21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H341.3333333333333V21.3333333333334H384V42.6666666666667H426.6666666666667V21.3333333333334M384 128H426.6666666666667V64H384V128M256 -21.3333333333333V21.3333333333334H320V-21.3333333333333H256M170.6666666666667 -21.3333333333333V21.3333333333334H234.6666666666667V-21.3333333333333H170.6666666666667M128 -21.3333333333333C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V64H128V21.3333333333334H149.3333333333333V-21.3333333333333H128M85.3333333333333 149.3333333333334H128V85.3333333333334H85.3333333333333V149.3333333333334M85.3333333333333 234.6666666666667H128V170.6666666666667H85.3333333333333V234.6666666666667M384 213.3333333333334H426.6666666666667V149.3333333333334H384V213.3333333333334M85.3333333333333 320H128V256H85.3333333333333V320z" /> + <glyph glyph-name="file-image" + unicode="&#xF21F;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M128 21.3333333333334H384V192L298.6666666666667 106.6666666666667L256 149.3333333333334L128 21.3333333333334M170.6666666666667 256C147.2 256 128 236.8 128 213.3333333333334S147.2 170.6666666666667 170.6666666666667 170.6666666666667S213.3333333333333 189.8666666666667 213.3333333333333 213.3333333333334S194.1333333333333 256 170.6666666666667 256z" /> + <glyph glyph-name="file-import" + unicode="&#xF220;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333M214.4 208.64L274.7733333333333 148.2666666666667L320 193.4933333333334V42.6666666666667H169.1733333333333L214.4 87.8933333333334L154.0266666666667 148.2666666666667" /> + <glyph glyph-name="file-lock" + unicode="&#xF221;" + horiz-adv-x="512" d=" M128 405.3333333333333C104.32 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333H128M277.3333333333333 373.3333333333334L394.6666666666667 256H277.3333333333333V373.3333333333334M256 213.3333333333334C291.4133333333333 213.3333333333334 320 184.7466666666667 320 149.3333333333334V128H341.3333333333333V42.6666666666667H170.6666666666667V128H192V149.3333333333334C192 184.3200000000001 220.5866666666667 213.3333333333334 256 213.3333333333334M256 170.6666666666667C244.2666666666667 170.6666666666667 234.6666666666667 161.0666666666667 234.6666666666667 149.3333333333334V128H277.3333333333333V149.3333333333334C277.3333333333333 160.64 267.7333333333334 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="file-multiple" + unicode="&#xF222;" + horiz-adv-x="512" d=" M320 298.6666666666667H437.3333333333333L320 416V298.6666666666667M170.6666666666667 448H341.3333333333333L469.3333333333333 320V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H170.6666666666667C146.9866666666667 21.3333333333334 128 40.5333333333333 128 64V405.3333333333333C128 428.8 147.2 448 170.6666666666667 448M85.3333333333333 362.6666666666667V-21.3333333333333H426.6666666666667V-64H85.3333333333333C61.8666666666667 -64 42.6666666666667 -44.8 42.6666666666667 -21.3333333333333V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="file-music" + unicode="&#xF223;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M192 106.6666666666667C168.5333333333333 106.6666666666667 149.3333333333333 87.4666666666667 149.3333333333333 64S168.5333333333333 21.3333333333334 192 21.3333333333334S234.6666666666667 40.5333333333333 234.6666666666667 64V170.6666666666667H298.6666666666667V213.3333333333334H213.3333333333333V100.9066666666667C207.1466666666667 104.5333333333334 199.68 106.6666666666667 192 106.6666666666667z" /> + <glyph glyph-name="file-outline" + unicode="&#xF224;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M234.6666666666667 362.6666666666667H128V21.3333333333334H384V213.3333333333334H234.6666666666667V362.6666666666667z" /> + <glyph glyph-name="file-pdf" + unicode="&#xF225;" + horiz-adv-x="512" d=" M298.6666666666667 256H416L298.6666666666667 373.3333333333334V256M149.3333333333333 405.3333333333333H320L448 277.3333333333334V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H149.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M254.5066666666667 182.6133333333334C263.2533333333334 163.4133333333334 274.3466666666667 147.6266666666667 287.1466666666667 136.7466666666667L295.8933333333333 129.92C277.3333333333333 126.5066666666667 251.7333333333333 120.5333333333334 224.64 110.08L222.2933333333333 109.2266666666667L232.96 131.4133333333334C242.56 149.9733333333334 249.6 166.8266666666667 254.5066666666667 182.6133333333334M392.7466666666667 101.3333333333334C396.5866666666667 105.1733333333334 398.5066666666667 110.08 398.7200000000001 115.4133333333334C399.36 119.68 398.2933333333334 123.7333333333334 396.16 127.1466666666667C389.9733333333334 137.1733333333334 373.9733333333334 141.8666666666667 347.52 141.8666666666667L320 140.3733333333333L301.44 152.7466666666667C288 163.84 275.8400000000001 183.2533333333333 267.3066666666667 207.36L268.16 210.3466666666667C275.2 238.7200000000001 281.8133333333334 273.0666666666667 267.7333333333334 287.1466666666667C264.32 290.5600000000001 259.6266666666667 292.2666666666667 254.7200000000001 292.2666666666667H249.6C241.7066666666667 292.2666666666667 234.6666666666667 283.9466666666667 232.7466666666667 275.8400000000001C224.8533333333334 247.4666666666667 229.5466666666667 231.8933333333334 237.44 206.0800000000001V205.8666666666667C232.1066666666667 187.0933333333334 225.28 165.3333333333334 214.4 143.3600000000001L193.92 104.96L174.9333333333333 94.5066666666668C149.3333333333333 78.5066666666668 137.1733333333333 60.5866666666668 134.8266666666667 49.2800000000001C133.9733333333333 45.2266666666667 134.4 41.6000000000001 135.8933333333333 37.7600000000001L136.5333333333333 36.6933333333334L146.7733333333333 30.0800000000001L156.16 27.7333333333335C173.44 27.7333333333335 193.0666666666666 48.0000000000001 219.52 93.2266666666668L223.36 94.7200000000001C245.3333333333333 101.7600000000001 272.64 106.6666666666668 309.3333333333333 110.7200000000001C331.3066666666666 99.8400000000001 357.12 94.9333333333335 373.3333333333333 94.9333333333335C382.7200000000001 94.9333333333335 389.12 97.2800000000001 392.7466666666667 101.3333333333335M384 116.4800000000002L385.92 114.1333333333336C385.7066666666666 112.0000000000002 385.0666666666667 111.7866666666669 384 111.3600000000002H383.1466666666667L379.0933333333333 110.9333333333335C369.28 110.9333333333335 354.1333333333334 114.9866666666669 338.56 121.8133333333335C340.48 123.9466666666668 341.3333333333333 123.9466666666668 343.4666666666666 123.9466666666668C373.3333333333333 123.9466666666668 381.8666666666666 118.6133333333335 383.9999999999999 116.4800000000002M188.3733333333333 85.3333333333334C174.5066666666667 59.9466666666667 161.92 45.8666666666667 152.32 42.6666666666667C153.3866666666667 50.7733333333333 162.9866666666667 64.8533333333334 178.1333333333334 78.72L188.3733333333334 85.3333333333334M252.8 232.7466666666667C247.8933333333334 251.9466666666667 247.68 267.52 251.3066666666667 276.48L252.8 279.04L256 277.9733333333334C259.6266666666667 272.8533333333334 260.0533333333334 266.0266666666667 257.92 254.5066666666667L257.2800000000001 251.0933333333334L253.8666666666667 233.6L252.8 232.7466666666668z" /> + <glyph glyph-name="file-pdf-box" + unicode="&#xF226;" + horiz-adv-x="512" d=" M243.84 214.6133333333334C238.9333333333333 198.8266666666667 231.8933333333333 181.9733333333334 222.2933333333333 163.4133333333334C218.0266666666667 155.3066666666667 213.3333333333333 147.6266666666667 211.6266666666667 141.2266666666667L213.9733333333333 142.0800000000001C241.0666666666667 152.5333333333334 266.6666666666667 158.5066666666667 285.2266666666667 161.92C282.0266666666667 164.0533333333334 279.04 166.4 276.48 168.7466666666667C263.68 179.6266666666667 252.5866666666667 195.4133333333334 243.84 214.6133333333334M382.08 133.3333333333334C378.4533333333333 129.28 372.0533333333334 126.9333333333333 362.6666666666667 126.9333333333333C346.4533333333333 126.9333333333333 320 131.84 298.6666666666667 142.72C261.9733333333333 138.6666666666667 234.6666666666667 133.76 212.6933333333333 126.72C211.6266666666666 126.2933333333334 210.3466666666666 125.8666666666667 208.8533333333333 125.2266666666667C182.4 80 162.7733333333333 59.7333333333334 145.4933333333333 59.7333333333334C142.08 59.7333333333334 138.6666666666666 60.5866666666667 136.1066666666666 62.08L125.8666666666666 68.6933333333333L125.2266666666666 69.76C123.7333333333333 73.6 123.3066666666666 77.2266666666667 124.16 81.28C126.5066666666666 92.5866666666667 138.6666666666666 110.5066666666667 164.2666666666666 126.5066666666667C168.32 129.4933333333334 174.72 132.9066666666667 183.2533333333333 136.96C189.6533333333333 148.0533333333334 196.4799999999999 161.0666666666667 203.7333333333333 175.36C214.6133333333333 197.3333333333334 221.44 219.0933333333333 226.7733333333333 237.8666666666667V238.08C218.88 263.8933333333334 214.1866666666666 279.4666666666667 222.0799999999999 307.8400000000001C223.9999999999999 315.9466666666667 231.0399999999999 324.2666666666667 238.9333333333332 324.2666666666667H244.0533333333333C248.9599999999999 324.2666666666667 253.6533333333332 322.56 257.0666666666666 319.1466666666667C271.1466666666666 305.0666666666667 264.5333333333332 270.7200000000001 257.4933333333333 242.3466666666667C257.0666666666666 241.0666666666667 256.8533333333333 240 256.6399999999999 239.36C265.1733333333333 215.2533333333333 277.3333333333333 195.84 290.7733333333332 184.7466666666667C296.3199999999999 180.48 302.5066666666666 176.2133333333333 309.3333333333332 172.3733333333333C318.9333333333332 173.44 328.1066666666666 173.8666666666667 336.8533333333333 173.8666666666667C363.3066666666665 173.8666666666667 379.3066666666665 169.1733333333333 385.4933333333333 159.1466666666667C387.6266666666666 155.7333333333334 388.6933333333332 151.68 388.0533333333333 147.4133333333333C387.8399999999999 142.08 385.9199999999999 137.1733333333333 382.08 133.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M373.3333333333333 148.48C371.2 150.6133333333334 362.6666666666667 155.9466666666667 332.8 155.9466666666667C331.3066666666666 155.9466666666667 329.8133333333333 155.9466666666667 327.8933333333333 153.8133333333334C343.4666666666666 146.9866666666667 358.6133333333333 142.9333333333334 368.4266666666666 142.9333333333334C369.92 142.9333333333334 371.2 143.1466666666667 372.48 143.36H373.3333333333333C374.4 143.7866666666667 375.04 144 375.2533333333334 146.1333333333334C374.8266666666667 146.7733333333334 374.4 147.6266666666667 373.3333333333333 148.48M177.7066666666667 117.3333333333334C173.2266666666666 114.7733333333334 169.6 112.4266666666667 167.4666666666667 110.72C152.32 96.8533333333334 142.72 82.7733333333333 141.6533333333333 74.6666666666667C151.2533333333333 77.8666666666667 163.84 91.9466666666667 177.7066666666667 117.3333333333334M242.1333333333334 264.7466666666667L243.2 265.6C244.6933333333334 272.4266666666667 245.3333333333333 278.4 246.6133333333334 283.0933333333334L247.2533333333334 286.5066666666667C249.3866666666667 298.6666666666667 248.96 304.8533333333334 245.3333333333333 309.9733333333334L242.1333333333334 311.04C241.7066666666667 310.4 241.0666666666667 309.3333333333333 240.64 308.48C237.0133333333333 299.52 237.2266666666667 283.9466666666667 242.1333333333334 264.7466666666667z" /> + <glyph glyph-name="file-powerpoint" + unicode="&#xF227;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M170.6666666666667 213.3333333333334V170.6666666666667H192V42.6666666666667H170.6666666666667V21.3333333333334H256V42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333C312.7466666666667 85.3333333333334 341.3333333333333 113.92 341.3333333333333 149.3333333333334S312.7466666666667 213.3333333333334 277.3333333333333 213.3333333333334H170.6666666666667M277.3333333333333 170.6666666666667C289.0666666666667 170.6666666666667 298.6666666666667 161.0666666666667 298.6666666666667 149.3333333333334S289.0666666666667 128 277.3333333333333 128H234.6666666666667V170.6666666666667H277.3333333333333z" /> + <glyph glyph-name="file-powerpoint-box" + unicode="&#xF228;" + horiz-adv-x="512" d=" M209.0666666666667 162.1333333333333H262.4C294.4 162.1333333333333 308.48 168.1066666666667 322.1333333333334 179.6266666666667C335.7866666666667 191.36 341.3333333333333 208 341.3333333333333 229.76C341.3333333333333 250.4533333333334 336 266.6666666666667 322.1333333333334 279.8933333333333C308.2666666666667 292.48 295.04 298.6666666666667 262.4 298.6666666666667H170.6666666666667V85.3333333333334H209.0666666666667V162.1333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 83.2 384 106.6666666666667 384H405.3333333333333M209.0666666666667 192V268.8H258.1333333333334C272.2133333333334 268.8 283.0933333333334 263.4666666666667 290.1333333333334 256C297.1733333333334 248.5333333333334 300.8 240.64 300.8 229.5466666666667C300.8 217.6 296.9600000000001 209.28 290.1333333333334 202.6666666666667C283.3066666666667 196.0533333333334 275.2000000000001 192 260.6933333333334 192H209.0666666666667z" /> + <glyph glyph-name="file-presentation-box" + unicode="&#xF229;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667H106.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-restore" + unicode="&#xF670;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M256 64C212.2666666666667 64 174.72 90.4533333333333 158.2933333333333 128H194.7733333333333C208.2133333333333 108.8 230.6133333333333 96 256 96C297.1733333333333 96 330.6666666666667 129.4933333333334 330.6666666666667 170.6666666666667S297.1733333333333 245.3333333333334 256 245.3333333333334C227.2 245.3333333333334 202.6666666666667 228.6933333333334 189.8666666666667 204.8L224 170.6666666666667H138.6666666666667V256L166.4 228.2666666666667C185.3866666666667 257.7066666666667 218.24 277.3333333333334 256 277.3333333333334C314.88 277.3333333333334 362.6666666666667 229.5466666666667 362.6666666666667 170.6666666666667S314.88 64 256 64z" /> + <glyph glyph-name="file-send" + unicode="&#xF22A;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333H128C104.32 405.3333333333333 85.3333333333333 386.3466666666667 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V277.3333333333334L298.6666666666667 405.3333333333333M267.52 34.7733333333333V77.44H182.1866666666667V119.8933333333333H267.52V162.56L331.52 98.56L267.52 34.7733333333333M277.3333333333333 256V373.3333333333334L394.6666666666667 256H277.3333333333333z" /> + <glyph glyph-name="file-tree" + unicode="&#xF645;" + horiz-adv-x="512" d=" M64 384H192V298.6666666666667H64V384M320 234.6666666666667H448V149.3333333333334H320V234.6666666666667M320 85.3333333333334H448V0H320V85.3333333333334M277.3333333333333 170.6666666666667H149.3333333333333V64H277.3333333333333V21.3333333333334H106.6666666666667V256H149.3333333333333V213.3333333333334H277.3333333333333V170.6666666666667z" /> + <glyph glyph-name="file-video" + unicode="&#xF22B;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M362.6666666666667 42.6666666666667V170.6666666666667L298.6666666666667 123.7333333333334V170.6666666666667H149.3333333333333V42.6666666666667H298.6666666666667V89.6L362.6666666666667 42.6666666666667z" /> + <glyph glyph-name="file-word" + unicode="&#xF22C;" + horiz-adv-x="512" d=" M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M277.3333333333333 373.3333333333334V256H394.6666666666667L277.3333333333333 373.3333333333334M149.3333333333333 170.6666666666667L181.3333333333333 21.3333333333334H224L256 85.3333333333334L288 21.3333333333334H330.6666666666667L362.6666666666667 170.6666666666667H384V213.3333333333334H298.6666666666667V170.6666666666667H320L300.8 81.0666666666667L277.3333333333333 128H234.6666666666667L211.2 81.0666666666667L192 170.6666666666667H213.3333333333333V213.3333333333334H128V170.6666666666667H149.3333333333333z" /> + <glyph glyph-name="file-word-box" + unicode="&#xF22D;" + horiz-adv-x="512" d=" M330.6666666666667 85.3333333333334H298.6666666666667L256 245.3333333333334L213.3333333333333 85.3333333333334H181.3333333333333L130.1333333333333 298.6666666666667H166.4L199.2533333333333 138.6666666666667L241.0666666666667 298.6666666666667H270.9333333333334L312.9600000000001 138.6666666666667L345.6 298.6666666666667H381.8666666666666M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="file-xml" + unicode="&#xF22E;" + horiz-adv-x="512" d=" M277.3333333333333 256H394.6666666666667L277.3333333333333 373.3333333333334V256M128 405.3333333333333H298.6666666666667L426.6666666666667 277.3333333333334V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.3466666666667 104.32 405.3333333333333 128 405.3333333333333M130.56 117.3333333333334L210.3466666666666 37.5466666666666L240.64 67.6266666666667L190.9333333333333 117.3333333333333L240.64 167.04L210.3466666666666 197.12L130.56 117.3333333333333M368.64 117.3333333333333L288.8533333333334 197.12L258.56 167.04L308.2666666666667 117.3333333333333L258.56 67.6266666666667L288.8533333333334 37.5466666666666L368.64 117.3333333333333z" /> + <glyph glyph-name="film" + unicode="&#xF22F;" + horiz-adv-x="512" d=" M74.6666666666667 384H106.6666666666667V409.6C106.6666666666667 418.9866666666667 114.3466666666667 426.6666666666667 123.7333333333333 426.6666666666667H217.6C226.9866666666666 426.6666666666667 234.6666666666667 418.9866666666667 234.6666666666667 409.6V384H266.6666666666667C284.3733333333334 384 298.6666666666667 369.7066666666667 298.6666666666667 352V341.3333333333334H469.3333333333333V21.3333333333334H298.6666666666667V10.6666666666667C298.6666666666667 -7.04 284.3733333333334 -21.3333333333333 266.6666666666667 -21.3333333333333H74.6666666666667C56.96 -21.3333333333333 42.6666666666667 -7.04 42.6666666666667 10.6666666666667V352C42.6666666666667 369.7066666666667 56.96 384 74.6666666666667 384M384 298.6666666666667V256H426.6666666666667V298.6666666666667H384M298.6666666666667 298.6666666666667V256H341.3333333333333V298.6666666666667H298.6666666666667M213.3333333333333 298.6666666666667V256H256V298.6666666666667H213.3333333333333M298.6666666666667 106.6666666666667V64H341.3333333333333V106.6666666666667H298.6666666666667M384 106.6666666666667V64H426.6666666666667V106.6666666666667H384M213.3333333333333 106.6666666666667V64H256V106.6666666666667H213.3333333333333z" /> + <glyph glyph-name="filmstrip" + unicode="&#xF230;" + horiz-adv-x="512" d=" M384 256H341.3333333333333V298.6666666666667H384M384 170.6666666666667H341.3333333333333V213.3333333333334H384M384 85.3333333333334H341.3333333333333V128H384M170.6666666666667 256H128V298.6666666666667H170.6666666666667M170.6666666666667 170.6666666666667H128V213.3333333333334H170.6666666666667M170.6666666666667 85.3333333333334H128V128H170.6666666666667M384 384V341.3333333333334H341.3333333333333V384H170.6666666666667V341.3333333333334H128V384H85.3333333333333V0H128V42.6666666666667H170.6666666666667V0H341.3333333333333V42.6666666666667H384V0H426.6666666666667V384H384z" /> + <glyph glyph-name="filmstrip-off" + unicode="&#xF231;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L341.3333333333333 36.9066666666667V0H170.6666666666667V42.6666666666667H128V0H85.3333333333333V292.9066666666667L21.3333333333333 356.9066666666667M384 256V298.6666666666667H341.3333333333333V256H384M384 170.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H384M384 128H358.8266666666667L145.4933333333334 341.3333333333334H170.6666666666667V384H341.3333333333333V341.3333333333334H384V384H426.6666666666667V60.16L384 102.8266666666667V128M170.6666666666667 170.6666666666667V207.5733333333334L164.9066666666667 213.3333333333334H128V170.6666666666667H170.6666666666667M170.6666666666667 85.3333333333334V128H128V85.3333333333334H170.6666666666667M128 384V358.8266666666667L102.8266666666667 384H128z" /> + <glyph glyph-name="filter" + unicode="&#xF232;" + horiz-adv-x="512" d=" M64 405.3333333333333H448V362.6666666666667H446.2933333333334L298.6666666666667 215.04V-40.7466666666667L213.3333333333333 44.5866666666667V215.2533333333333L65.92 362.6666666666667H64V405.3333333333333z" /> + <glyph glyph-name="filter-outline" + unicode="&#xF233;" + horiz-adv-x="512" d=" M64 405.3333333333333H448V362.6666666666667H446.2933333333334L320 236.3733333333334V-40.7466666666667L192 87.2533333333333V236.5866666666667L65.92 362.6666666666667H64V405.3333333333333M234.6666666666667 104.96L277.3333333333333 62.2933333333334V256H279.2533333333334L385.92 362.6666666666667H126.2933333333333L232.96 256H234.6666666666667V104.96z" /> + <glyph glyph-name="filter-remove" + unicode="&#xF234;" + horiz-adv-x="512" d=" M314.88 3.6266666666667L375.4666666666667 64L314.88 124.3733333333333L344.9600000000001 154.4533333333334L405.3333333333333 94.5066666666667L465.7066666666666 154.4533333333334L495.7866666666666 124.3733333333333L435.84 64L495.7866666666666 3.6266666666667L465.7066666666666 -26.4533333333333L405.3333333333333 34.1333333333334L344.9600000000001 -26.4533333333333L314.88 3.6266666666667M42.6666666666667 405.3333333333333H426.6666666666667V362.6666666666667H424.9600000000001L277.3333333333333 215.04V-40.7466666666667L192 44.5866666666667V215.2533333333333L44.5866666666667 362.6666666666667H42.6666666666667V405.3333333333333z" /> + <glyph glyph-name="filter-remove-outline" + unicode="&#xF235;" + horiz-adv-x="512" d=" M314.24 3.6266666666667L375.04 64L314.24 124.3733333333333L344.5333333333333 154.4533333333334L405.3333333333333 94.5066666666667L465.0666666666667 154.4533333333334L495.36 124.3733333333333L435.4133333333333 64L495.36 3.6266666666667L465.0666666666666 -26.4533333333333L405.3333333333333 34.1333333333334L344.5333333333333 -26.4533333333333L314.24 3.6266666666667M42.6666666666667 405.3333333333333H426.6666666666667V362.6666666666667H424.9600000000001L298.6666666666667 236.3733333333334V-40.7466666666667L170.6666666666667 87.2533333333333V236.5866666666667L44.5866666666667 362.6666666666667H42.6666666666667V405.3333333333333M213.3333333333333 104.96L256 62.2933333333334V256H257.92L364.5866666666667 362.6666666666667H104.96L211.6266666666667 256H213.3333333333333V104.96z" /> + <glyph glyph-name="filter-variant" + unicode="&#xF236;" + horiz-adv-x="512" d=" M128 170.6666666666667H384V213.3333333333334H128M64 320V277.3333333333334H448V320M213.3333333333333 64H298.6666666666667V106.6666666666667H213.3333333333333V64z" /> + <glyph glyph-name="fingerprint" + unicode="&#xF237;" + horiz-adv-x="512" d=" M252.3733333333334 411.0933333333334C179.84 409.8133333333334 132.9066666666667 377.1733333333334 132.9066666666667 377.1733333333334C126.9333333333333 373.3333333333333 125.44 364.5866666666667 129.4933333333334 358.6133333333334C133.76 352 142.08 350.9333333333334 148.48 355.4133333333333C148.48 355.4133333333333 240.4266666666667 423.4666666666667 372.48 354.56C378.6666666666667 350.9333333333334 386.9866666666667 353.0666666666667 390.6133333333334 359.4666666666667C394.6666666666668 365.8666666666667 391.8933333333333 373.9733333333334 384.64 378.0266666666667C349.0133333333333 396.8 315.3066666666667 406.1866666666667 285.0133333333333 409.6C273.7066666666667 410.88 262.8266666666667 411.3066666666667 252.3733333333334 411.0933333333334M260.6933333333334 355.4133333333334C133.5466666666667 357.12 72.7466666666667 254.9333333333334 72.7466666666667 254.9333333333334C68.6933333333334 248.7466666666667 70.4 240.64 76.3733333333334 236.5866666666667C82.56 232.5333333333334 90.88 234.6666666666667 96 241.4933333333334C96 241.4933333333334 147.6266666666667 330.6666666666667 260.2666666666667 328.7466666666667C373.3333333333334 327.2533333333334 422.8266666666667 242.1333333333334 422.8266666666667 242.1333333333334C426.6666666666668 235.9466666666667 434.7733333333334 233.8133333333334 441.1733333333334 237.4400000000001C448.0000000000001 241.2800000000001 449.4933333333334 249.3866666666667 445.8666666666667 256C445.8666666666667 256 387.2000000000001 353.7066666666667 260.6933333333334 355.4133333333334M245.3333333333334 302.5066666666667C209.4933333333334 299.9466666666667 175.1466666666667 286.9333333333334 149.3333333333334 265.3866666666667C98.56 223.36 66.1333333333333 146.3466666666667 101.76 42.6666666666667C104.1066666666667 35.6266666666667 111.7866666666667 32 118.8266666666667 34.3466666666667C125.6533333333333 36.6933333333333 129.4933333333333 44.3733333333333 126.9333333333333 51.2C94.08 146.56 123.3066666666667 209.0666666666667 166.4 245.3333333333333C208.4266666666667 279.68 282.6666666666667 288 337.92 253.8666666666667C365.0133333333333 236.8 386.1333333333333 207.36 396.8 178.3466666666667C407.68 149.3333333333334 407.04 121.1733333333334 398.2933333333333 107.9466666666667C389.3333333333333 94.08 371.2 88.96 355.2 93.0133333333333C339.2 97.0666666666667 326.1866666666666 108.5866666666667 325.5466666666666 132.9066666666667C324.9066666666667 169.3866666666667 296.32 192 266.6666666666667 195.4133333333334C238.08 198.8266666666667 205.0133333333333 183.4666666666667 196.4799999999999 149.3333333333334C180.2666666666666 87.04 221.0133333333333 -1.4933333333333 315.3066666666666 -30.9333333333333C322.3466666666666 -33.0666666666667 329.8133333333333 -29.2266666666667 332.1599999999999 -22.1866666666666C334.2933333333333 -15.1466666666666 330.6666666666666 -7.4666666666666 323.2 -5.3333333333333C241.4933333333333 20.0533333333334 210.56 97.4933333333333 222.2933333333332 143.1466666666667C227.4133333333333 163.6266666666667 245.3333333333333 170.6666666666667 264.1066666666666 168.96C282.6666666666665 166.8266666666667 298.6666666666666 155.7333333333334 298.6666666666666 132.48C299.7333333333333 97.4933333333333 322.56 73.8133333333334 348.5866666666666 67.2000000000001C374.6133333333333 60.5866666666668 404.6933333333332 68.9066666666667 420.6933333333332 93.4400000000001C437.3333333333333 118.4000000000001 434.5599999999999 153.6000000000001 421.9733333333332 187.5200000000001C409.1733333333332 221.6533333333334 385.4933333333332 255.3600000000001 351.9999999999999 276.4800000000001C319.1466666666666 296.9600000000001 281.3866666666665 305.0666666666667 245.3333333333332 302.5066666666667M253.0133333333332 250.6666666666667V250.4533333333334C215.0399999999999 249.1733333333334 177.0666666666665 229.5466666666667 155.3066666666665 188.1600000000001C127.1466666666665 135.0400000000001 139.9466666666665 80.8533333333334 158.7199999999998 41.8133333333334C177.7066666666665 2.5600000000001 203.5199999999998 -23.4666666666666 203.5199999999998 -23.4666666666666C208.6399999999998 -28.8 216.9599999999998 -28.8 222.2933333333332 -23.6799999999999S227.6266666666665 -10.6666666666666 222.5066666666665 -4.9066666666666C222.5066666666665 -4.9066666666666 199.6799999999998 18.5600000000001 182.8266666666665 53.3333333333334S155.7333333333332 132.0533333333334 178.7733333333332 175.5733333333334C202.6666666666665 220.3733333333333 245.3333333333332 231.2533333333334 282.8799999999999 220.3733333333333C320.8533333333332 209.28 352.6399999999999 176.2133333333334 351.9999999999999 127.36C351.1466666666666 119.8933333333333 356.4799999999999 113.4933333333334 363.9466666666665 113.0666666666667C371.1999999999998 112.4266666666667 377.5999999999998 117.9733333333334 378.2399999999999 126.72C379.5199999999998 187.7333333333334 338.5599999999999 231.8933333333333 290.3466666666665 245.9733333333334C278.1866666666665 249.3866666666667 265.5999999999998 251.0933333333334 253.0133333333332 250.6666666666667M257.7066666666665 144C250.2399999999999 143.7866666666667 244.4799999999999 137.6 244.6933333333332 130.3466666666667C244.6933333333332 130.3466666666667 245.3333333333332 98.7733333333333 262.6133333333332 68.2666666666667C280.5333333333332 37.76 318.5066666666665 8.7466666666667 384.6399999999999 14.9333333333333C391.8933333333332 15.36 397.6533333333332 21.3333333333334 397.2266666666665 29.0133333333333C396.7999999999999 36.48 390.3999999999999 42.0266666666666 382.0799999999998 41.3866666666667C324.0533333333332 36.0533333333333 299.5199999999998 58.0266666666666 285.6533333333332 81.7066666666667C271.7866666666665 105.1733333333334 271.3599999999999 130.56 271.3599999999999 130.56C271.3599999999999 138.0266666666667 265.3866666666666 144 257.7066666666665 144z" /> + <glyph glyph-name="fire" + unicode="&#xF238;" + horiz-adv-x="512" d=" M249.8133333333334 42.6666666666667C211.84 42.6666666666667 181.3333333333333 72.7466666666667 181.3333333333333 109.6533333333334C181.3333333333333 144.2133333333334 203.3066666666667 168.5333333333334 241.0666666666667 176.2133333333334C278.8266666666667 183.8933333333334 317.8666666666667 202.0266666666667 339.6266666666667 231.2533333333334C347.9466666666667 203.7333333333334 352 174.72 352 145.0666666666667C352 88.7466666666667 306.3466666666667 42.6666666666667 249.8133333333334 42.6666666666667M288 433.7066666666667S303.7866666666667 377.1733333333334 303.7866666666667 331.3066666666667C303.7866666666667 287.36 274.9866666666667 251.7333333333334 231.04 251.7333333333334C186.88 251.7333333333334 153.6 287.36 153.6 331.3066666666668L154.24 339.2000000000001C111.1466666666667 288 85.3333333333333 221.6533333333334 85.3333333333333 149.3333333333334C85.3333333333333 55.04 161.7066666666667 -21.3333333333333 256 -21.3333333333333S426.6666666666667 55.04 426.6666666666667 149.3333333333334C426.6666666666667 264.5333333333334 371.4133333333333 366.9333333333334 288 433.7066666666667z" /> + <glyph glyph-name="firefox" + unicode="&#xF239;" + horiz-adv-x="512" d=" M448 198.4C448 206.9333333333334 445.8666666666666 219.7333333333334 443.7333333333334 228.2666666666667C437.3333333333333 264.5333333333334 418.1333333333334 296.5333333333334 394.6666666666667 322.1333333333334C390.4 328.5333333333334 381.8666666666666 334.9333333333334 373.3333333333333 341.3333333333334C349.8666666666666 360.5333333333334 322.1333333333334 373.3333333333334 290.1333333333334 379.7333333333334C226.1333333333334 390.4000000000001 162.1333333333333 369.0666666666667 119.4666666666667 324.2666666666667V326.4000000000001C117.3333333333333 330.6666666666667 117.3333333333333 330.6666666666667 115.2 330.6666666666667C113.0666666666667 334.9333333333334 113.0666666666667 337.0666666666667 110.9333333333333 339.2000000000001C110.9333333333333 343.4666666666667 108.8 347.7333333333334 108.8 352C102.4 349.8666666666667 102.4 343.4666666666667 100.2666666666667 339.2000000000001C96 334.9333333333334 91.7333333333333 328.5333333333334 91.7333333333333 322.1333333333334C89.6 317.8666666666667 85.3333333333333 298.6666666666668 89.6 296.5333333333334H91.7333333333333V290.1333333333334C87.4666666666666 285.8666666666667 85.3333333333333 283.7333333333334 85.3333333333333 281.6C78.9333333333333 268.8000000000001 72.5333333333333 258.1333333333334 70.4 245.3333333333334V236.8000000000001V238.9333333333334C66.1333333333333 234.6666666666667 66.1333333333333 228.2666666666667 64 224.0000000000001C66.1333333333333 224.0000000000001 66.1333333333333 226.1333333333334 68.2666666666667 226.1333333333334C57.6 170.6666666666668 72.5333333333333 113.0666666666667 106.6666666666666 70.4C157.8666666666666 8.5333333333334 245.3333333333333 -17.0666666666666 322.1333333333333 10.6666666666667C396.8 38.4 448 110.9333333333333 448 192V198.4M288 360.5333333333334C320 354.1333333333334 349.8666666666666 339.2000000000001 373.3333333333333 317.8666666666667C375.4666666666667 315.7333333333334 377.6 311.4666666666667 377.6 311.4666666666667C371.2 317.8666666666667 356.2666666666667 328.5333333333334 347.7333333333334 324.2666666666667C349.8666666666667 317.8666666666667 375.4666666666667 285.8666666666667 377.6 283.7333333333334C377.6 283.7333333333334 384 256 386.1333333333333 253.8666666666667C386.1333333333333 249.6 371.2 194.1333333333334 371.2 185.6C371.2 183.4666666666667 352 145.0666666666667 354.1333333333333 145.0666666666667C347.7333333333333 130.1333333333333 341.3333333333333 130.1333333333333 339.2 128C337.0666666666666 128 324.2666666666667 123.7333333333334 309.3333333333333 119.4666666666667C296.5333333333333 117.3333333333333 281.5999999999999 113.0666666666666 270.9333333333333 115.2C264.5333333333333 115.2 256 115.2 249.6 119.4666666666667C247.4666666666666 121.6 230.3999999999999 130.1333333333333 226.1333333333333 132.2666666666667C219.7333333333333 134.4 215.4666666666666 138.6666666666666 211.2 142.9333333333333H234.6666666666667C247.4666666666667 145.0666666666666 302.9333333333333 164.2666666666667 300.8 172.8C300.8 179.2 290.1333333333334 183.4666666666667 285.8666666666667 187.7333333333333C279.4666666666667 189.8666666666666 253.8666666666667 185.6 243.2 181.3333333333333C243.2 181.3333333333333 202.6666666666667 192 192 200.5333333333333C192 202.6666666666666 189.8666666666667 215.4666666666666 189.8666666666667 217.6C187.7333333333334 219.7333333333333 196.2666666666667 226.1333333333333 196.2666666666667 226.1333333333333S217.6 247.4666666666667 217.6 249.6C221.8666666666667 249.6 226.1333333333334 253.8666666666666 228.2666666666667 256C226.1333333333334 256 230.4 258.1333333333334 236.8 262.4C243.2000000000001 266.6666666666667 247.4666666666667 266.6666666666667 247.4666666666667 273.0666666666667C247.4666666666667 273.0666666666667 258.1333333333334 292.2666666666667 245.3333333333334 290.1333333333334C245.3333333333334 290.1333333333334 226.1333333333334 292.2666666666667 219.7333333333334 292.2666666666667C213.3333333333334 288 211.2000000000001 290.1333333333334 204.8000000000001 292.2666666666667C204.8000000000001 292.2666666666667 200.5333333333334 296.5333333333333 200.5333333333334 298.6666666666667C202.6666666666668 302.9333333333333 217.6000000000001 334.9333333333333 224.0000000000001 337.0666666666666C219.7333333333334 345.6 198.4000000000001 339.2 194.1333333333334 332.8C194.1333333333334 332.8 177.0666666666667 320 168.5333333333334 317.8666666666666C168.5333333333334 320 157.8666666666667 322.1333333333334 147.2000000000001 322.1333333333334C185.6000000000001 354.1333333333334 236.8000000000001 369.0666666666666 288.0000000000001 360.5333333333333z" /> + <glyph glyph-name="fish" + unicode="&#xF23A;" + horiz-adv-x="512" d=" M256 21.3333333333334L272.2133333333333 85.3333333333334C202.6666666666667 89.8133333333334 140.5866666666667 119.4666666666667 122.6666666666667 158.2933333333334C120.7466666666667 148.0533333333334 117.9733333333333 138.6666666666667 113.7066666666667 131.6266666666667C99.6266666666667 106.6666666666667 71.04 106.6666666666667 42.6666666666667 106.6666666666667C66.1333333333333 106.6666666666667 74.6666666666667 140.16 74.6666666666667 181.3333333333334S66.1333333333333 256 42.6666666666667 256C71.04 256 99.6266666666667 256 113.7066666666667 231.04C117.9733333333333 224 120.7466666666667 214.6133333333334 122.6666666666667 204.3733333333333C136.5333333333333 234.6666666666667 177.4933333333334 259.2000000000001 227.4133333333334 270.5066666666667L192 341.3333333333334C234.6666666666667 341.3333333333334 277.3333333333333 341.3333333333334 305.7066666666667 327.04C329.8133333333334 315.0933333333334 343.68 292.9066666666667 356.0533333333334 269.2266666666667C418.3466666666667 254.2933333333334 469.3333333333333 220.5866666666667 469.3333333333333 181.3333333333334C469.3333333333333 141.2266666666667 416 106.6666666666667 352 92.5866666666667C334.2933333333333 69.12 317.0133333333333 47.36 302.2933333333333 35.6266666666667C284.3733333333334 21.3333333333334 270.2933333333333 21.3333333333334 256 21.3333333333334M362.6666666666667 213.3333333333334C350.9333333333333 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192S350.9333333333333 170.6666666666667 362.6666666666667 170.6666666666667S384 180.2666666666667 384 192S374.4 213.3333333333334 362.6666666666667 213.3333333333334z" /> + <glyph glyph-name="flag" + unicode="&#xF23B;" + horiz-adv-x="512" d=" M307.2 320L298.6666666666667 362.6666666666667H106.6666666666667V0H149.3333333333333V149.3333333333334H268.8L277.3333333333333 106.6666666666667H426.6666666666667V320H307.2z" /> + <glyph glyph-name="flag-checkered" + unicode="&#xF23C;" + horiz-adv-x="512" d=" M307.2 320H426.6666666666667V106.6666666666667H277.3333333333333L268.8 149.3333333333334H149.3333333333333V0H106.6666666666667V362.6666666666667H298.6666666666667L307.2 320M298.6666666666667 149.3333333333334H341.3333333333333V192H384V234.6666666666667H341.3333333333333V277.3333333333334H298.6666666666667V234.6666666666667L277.3333333333333 277.3333333333334V320H234.6666666666667V277.3333333333334H192V320H149.3333333333333V277.3333333333334H192V234.6666666666667H149.3333333333333V192H192V234.6666666666667H234.6666666666667V192H277.3333333333333V234.6666666666667L298.6666666666667 192V149.3333333333334M234.6666666666667 234.6666666666667V277.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667M298.6666666666667 234.6666666666667H341.3333333333333V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="flag-outline" + unicode="&#xF23D;" + horiz-adv-x="512" d=" M309.3333333333333 320H426.6666666666667V106.6666666666667H277.3333333333333L266.6666666666667 149.3333333333334H149.3333333333333V0H106.6666666666667V362.6666666666667H298.6666666666667L309.3333333333333 320M149.3333333333333 320V192H277.3333333333333L288 149.3333333333334H384V277.3333333333334H298.6666666666667L288 320H149.3333333333333z" /> + <glyph glyph-name="flag-outline-variant" + unicode="&#xF23E;" + horiz-adv-x="512" d=" M128 384C139.7333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V343.8933333333333C171.9466666666667 353.28 202.6666666666667 362.6666666666667 234.6666666666667 362.6666666666667C298.6666666666667 362.6666666666667 298.6666666666667 320 341.3333333333333 320C405.3333333333333 320 426.6666666666667 362.6666666666667 426.6666666666667 362.6666666666667V192S405.3333333333333 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 192 234.6666666666667 192C170.6666666666667 192 149.3333333333333 149.3333333333334 149.3333333333333 149.3333333333334V0H106.6666666666667V362.6666666666667C106.6666666666667 374.4 116.2666666666667 384 128 384M149.3333333333333 293.3333333333334V202.6666666666667S192 234.6666666666667 234.6666666666667 234.6666666666667S298.6666666666667 192 341.3333333333333 192S384 213.3333333333334 384 213.3333333333334V288S362.6666666666667 277.3333333333334 341.3333333333333 277.3333333333334C298.6666666666667 277.3333333333334 277.3333333333333 320 234.6666666666667 320S149.3333333333333 293.3333333333334 149.3333333333333 293.3333333333334z" /> + <glyph glyph-name="flag-triangle" + unicode="&#xF23F;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H192V-21.3333333333333H149.3333333333333V405.3333333333333M405.3333333333333 256L234.6666666666667 136.5333333333334V375.4666666666667L405.3333333333333 256z" /> + <glyph glyph-name="flag-variant" + unicode="&#xF240;" + horiz-adv-x="512" d=" M128 384C139.7333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V343.8933333333333C171.9466666666667 353.28 202.6666666666667 362.6666666666667 234.6666666666667 362.6666666666667C298.6666666666667 362.6666666666667 298.6666666666667 320 341.3333333333333 320C405.3333333333333 320 426.6666666666667 362.6666666666667 426.6666666666667 362.6666666666667V192S405.3333333333333 149.3333333333334 341.3333333333333 149.3333333333334S277.3333333333333 192 234.6666666666667 192C170.6666666666667 192 149.3333333333333 149.3333333333334 149.3333333333333 149.3333333333334V0H106.6666666666667V362.6666666666667C106.6666666666667 374.4 116.2666666666667 384 128 384z" /> + <glyph glyph-name="flash" + unicode="&#xF241;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V170.6666666666667H213.3333333333333V-21.3333333333333L362.6666666666667 234.6666666666667H277.3333333333333L362.6666666666667 405.3333333333333H149.3333333333333z" /> + <glyph glyph-name="flash-auto" + unicode="&#xF242;" + horiz-adv-x="512" d=" M359.4666666666667 284.8L384 362.6666666666667L408.5333333333333 284.8M405.3333333333333 405.3333333333333H362.6666666666667L294.4 213.3333333333334H334.9333333333334L349.8666666666667 256H418.1333333333334L433.0666666666667 213.3333333333334H473.6M64 405.3333333333333V149.3333333333334H128V-42.6666666666666L277.3333333333333 213.3333333333334H192L277.3333333333333 405.3333333333333H64z" /> + <glyph glyph-name="flash-off" + unicode="&#xF243;" + horiz-adv-x="512" d=" M362.6666666666667 234.6666666666667H277.3333333333333L362.6666666666667 405.3333333333333H149.3333333333333V358.8266666666667L329.8133333333334 178.3466666666667M69.76 384L42.6666666666667 356.9066666666667L149.3333333333333 250.24V170.6666666666667H213.3333333333333V-21.3333333333333L289.7066666666667 109.6533333333334L378.24 21.3333333333334L405.3333333333333 48.4266666666667L69.76 384z" /> + <glyph glyph-name="flashlight" + unicode="&#xF244;" + horiz-adv-x="512" d=" M192 234.6666666666667L128 341.3333333333334H384L320 234.6666666666667H192M384 362.6666666666667H128V405.3333333333333H384V362.6666666666667M192 -21.3333333333333V213.3333333333334H320V-21.3333333333333H192M256 170.6666666666667C244.2666666666667 170.6666666666667 234.6666666666667 161.0666666666667 234.6666666666667 149.3333333333334S244.2666666666667 128 256 128S277.3333333333333 137.6 277.3333333333333 149.3333333333334S267.7333333333334 170.6666666666667 256 170.6666666666667z" /> + <glyph glyph-name="flashlight-off" + unicode="&#xF245;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L320 58.24V-21.3333333333333H192V186.24L42.6666666666667 335.5733333333334M384 341.3333333333334L320 234.6666666666667H252.16L145.4933333333334 341.3333333333334H384M384 362.6666666666667H128V405.3333333333333H384V362.6666666666667M320 213.3333333333334V166.8266666666667L273.4933333333334 213.3333333333334H320z" /> + <glyph glyph-name="flask" + unicode="&#xF093;" + horiz-adv-x="512" d=" M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L352.64 139.3066666666667L298.6666666666667 85.3333333333334L190.5066666666667 193.4933333333334L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M277.3333333333333 234.6666666666667C265.6 234.6666666666667 256 225.0666666666667 256 213.3333333333334S265.6 192 277.3333333333333 192S298.6666666666667 201.6 298.6666666666667 213.3333333333334S289.0666666666667 234.6666666666667 277.3333333333333 234.6666666666667z" /> + <glyph glyph-name="flask-empty" + unicode="&#xF094;" + horiz-adv-x="512" d=" M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="flask-empty-outline" + unicode="&#xF095;" + horiz-adv-x="512" d=" M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L277.3333333333333 269.8666666666667V362.6666666666667H234.6666666666667V269.8666666666667L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="flask-outline" + unicode="&#xF096;" + horiz-adv-x="512" d=" M106.6666666666667 42.6666666666667C106.6666666666667 30.9333333333333 116.2666666666667 21.3333333333334 128 21.3333333333334H384C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667C405.3333333333333 47.1466666666667 403.84 51.4133333333334 401.4933333333334 54.8266666666667L277.3333333333333 269.8666666666667V362.6666666666667H234.6666666666667V269.8666666666667L110.5066666666667 54.8266666666667C108.16 51.4133333333334 106.6666666666667 47.1466666666667 106.6666666666667 42.6666666666667M128 -21.3333333333333C92.5866666666667 -21.3333333333333 64 7.2533333333333 64 42.6666666666667C64 55.4666666666667 67.84 67.4133333333334 74.6666666666667 77.44L192 281.3866666666667V320C180.2666666666667 320 170.6666666666667 329.6 170.6666666666667 341.3333333333334V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H298.6666666666667C322.1333333333334 405.3333333333333 341.3333333333333 386.1333333333334 341.3333333333333 362.6666666666667V341.3333333333334C341.3333333333333 329.6 331.7333333333334 320 320 320V281.3866666666667L437.3333333333333 77.44C444.16 67.4133333333334 448 55.4666666666666 448 42.6666666666667C448 7.2533333333333 419.4133333333333 -21.3333333333333 384 -21.3333333333333H128M277.3333333333333 106.6666666666667L305.92 135.2533333333333L347.0933333333333 64H164.9066666666667L221.6533333333333 162.3466666666667L277.3333333333333 106.6666666666667M266.6666666666667 192C272.64 192 277.3333333333333 187.3066666666667 277.3333333333333 181.3333333333334S272.64 170.6666666666667 266.6666666666667 170.6666666666667S256 175.36 256 181.3333333333334S260.6933333333334 192 266.6666666666667 192z" /> + <glyph glyph-name="flattr" + unicode="&#xF246;" + horiz-adv-x="512" d=" M448 256V128C448 57.3866666666667 390.6133333333333 0 320 0H94.08L236.16 141.8666666666667C242.7733333333334 148.48 249.3866666666667 155.0933333333334 252.5866666666667 154.6666666666667C256 154.0266666666667 256 146.3466666666667 256 138.6666666666667V85.3333333333334H298.6666666666667C334.08 85.3333333333334 362.6666666666667 113.92 362.6666666666667 149.3333333333334V268.5866666666667L448 353.92V256M64 128V256C64 326.6133333333334 121.3866666666667 384 192 384H417.92L275.84 242.1333333333334C269.2266666666667 235.52 262.6133333333334 228.9066666666667 259.4133333333333 229.3333333333334C256 229.9733333333334 256 237.6533333333334 256 245.3333333333334V298.6666666666667H213.3333333333333C177.92 298.6666666666667 149.3333333333333 270.0800000000001 149.3333333333333 234.6666666666667V115.4133333333334L64 30.08V128z" /> + <glyph glyph-name="flip-to-back" + unicode="&#xF247;" + horiz-adv-x="512" d=" M320 85.3333333333334H362.6666666666667V128H320M320 341.3333333333334H362.6666666666667V384H320M106.6666666666667 298.6666666666667H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H362.6666666666667V42.6666666666667H106.6666666666667M405.3333333333333 85.3333333333334C428.8 85.3333333333334 448 104.5333333333333 448 128H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M192 85.3333333333334V128H149.3333333333333C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M405.3333333333333 384V341.3333333333334H448C448 365.0133333333333 428.8 384 405.3333333333333 384M277.3333333333333 128H234.6666666666667V85.3333333333334H277.3333333333333M192 384C168.32 384 149.3333333333333 365.0133333333333 149.3333333333333 341.3333333333334H192M192 213.3333333333334H149.3333333333333V170.6666666666667H192M192 298.6666666666667H149.3333333333333V256H192V298.6666666666667z" /> + <glyph glyph-name="flip-to-front" + unicode="&#xF248;" + horiz-adv-x="512" d=" M149.3333333333333 0H192V42.6666666666667H149.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 128H192V341.3333333333334H405.3333333333333M405.3333333333333 384H192C168.32 384 149.3333333333333 365.0133333333333 149.3333333333333 341.3333333333334V128C149.3333333333333 104.5333333333333 168.5333333333333 85.3333333333334 192 85.3333333333334H405.3333333333333C428.8 85.3333333333334 448 104.5333333333333 448 128V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M320 0H362.6666666666667V42.6666666666667H320M64 256H106.6666666666667V298.6666666666667H64M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M64 85.3333333333334H106.6666666666667V128H64M64 170.6666666666667H106.6666666666667V213.3333333333334H64V170.6666666666667z" /> + <glyph glyph-name="floppy" + unicode="&#xF249;" + horiz-adv-x="512" d=" M96 -21.3333333333333L42.6666666666667 32V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667V128C362.6666666666667 139.7333333333334 353.0666666666667 149.3333333333334 341.3333333333333 149.3333333333334H149.3333333333333C137.6 149.3333333333334 128 139.7333333333334 128 128V-21.3333333333333H96M106.6666666666667 362.6666666666667V234.6666666666667C106.6666666666667 222.9333333333333 116.2666666666667 213.3333333333334 128 213.3333333333334H384C395.7333333333334 213.3333333333334 405.3333333333333 222.9333333333333 405.3333333333333 234.6666666666667V362.6666666666667H106.6666666666667M170.6666666666667 106.6666666666667H234.6666666666667V21.3333333333334H170.6666666666667V106.6666666666667M426.6666666666667 362.6666666666667V341.3333333333334H448V362.6666666666667H426.6666666666667z" /> + <glyph glyph-name="flower" + unicode="&#xF24A;" + horiz-adv-x="512" d=" M64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C256 85.3333333333334 170.0266666666667 170.6666666666667 64 170.6666666666667M256 330.6666666666667C285.44 330.6666666666667 309.3333333333333 306.7733333333333 309.3333333333333 277.3333333333334S285.44 224 256 224S202.6666666666667 247.8933333333333 202.6666666666667 277.3333333333334S226.56 330.6666666666667 256 330.6666666666667M119.4666666666667 229.3333333333334C119.4666666666667 199.8933333333334 143.36 176 172.8 176C184.1066666666666 176 194.56 179.6266666666667 202.6666666666667 185.3866666666667V181.3333333333334C202.6666666666667 151.8933333333334 226.56 128 256 128S309.3333333333333 151.8933333333334 309.3333333333333 181.3333333333334V185.3866666666667C317.44 179.6266666666667 327.8933333333333 176 339.2 176C368.64 176 392.5333333333333 199.8933333333334 392.5333333333333 229.3333333333334C392.5333333333333 250.6666666666667 379.9466666666666 268.8 362.0266666666667 277.3333333333334C379.9466666666666 285.8666666666667 392.5333333333333 304.2133333333334 392.5333333333333 325.3333333333334C392.5333333333333 354.7733333333333 368.64 378.6666666666667 339.2 378.6666666666667C327.8933333333333 378.6666666666667 317.44 375.2533333333334 309.3333333333333 369.28V373.3333333333334C309.3333333333333 402.7733333333333 285.44 426.6666666666667 256 426.6666666666667S202.6666666666667 402.7733333333333 202.6666666666667 373.3333333333334V369.28C194.56 375.2533333333334 184.1066666666667 378.6666666666667 172.8 378.6666666666667C143.36 378.6666666666667 119.4666666666667 354.7733333333333 119.4666666666667 325.3333333333334C119.4666666666667 304.2133333333334 132.0533333333333 285.8666666666667 149.9733333333333 277.3333333333334C132.0533333333333 268.8 119.4666666666667 250.6666666666667 119.4666666666667 229.3333333333334M256 -21.3333333333333C362.0266666666667 -21.3333333333333 448 64.64 448 170.6666666666667C341.3333333333333 170.6666666666667 256 85.3333333333334 256 -21.3333333333333z" /> + <glyph glyph-name="folder" + unicode="&#xF24B;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320H256L213.3333333333333 362.6666666666667z" /> + <glyph glyph-name="folder-account" + unicode="&#xF24C;" + horiz-adv-x="512" d=" M405.3333333333333 85.3333333333334H234.6666666666667V106.6666666666667C234.6666666666667 135.04 291.6266666666667 149.3333333333334 320 149.3333333333334S405.3333333333333 135.04 405.3333333333333 106.6666666666667M320 256C343.4666666666667 256 362.6666666666667 236.8 362.6666666666667 213.3333333333334S343.4666666666667 170.6666666666667 320 170.6666666666667S277.3333333333333 189.8666666666667 277.3333333333333 213.3333333333334C277.3333333333333 237.0133333333333 296.5333333333333 256 320 256M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-download" + unicode="&#xF24D;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M410.6666666666667 170.6666666666667H341.3333333333333V256H298.6666666666667V170.6666666666667H229.3333333333333L320 80" /> + <glyph glyph-name="folder-google-drive" + unicode="&#xF24E;" + horiz-adv-x="512" d=" M293.3333333333333 256H344.32L405.3333333333333 149.3333333333334H342.4L288 246.1866666666667M390.4 85.3333333333334H272L301.8666666666667 138.6666666666667H411.0933333333333L416.64 128.8533333333334M245.3333333333333 85.3333333333334L221.8666666666667 130.9866666666667L282.4533333333333 236.8000000000001L314.4533333333333 180.0533333333334L261.3333333333333 85.3333333333334M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-image" + unicode="&#xF24F;" + horiz-adv-x="512" d=" M106.6666666666667 85.3333333333334L202.6666666666667 213.3333333333334L277.3333333333333 117.3333333333334L330.6666666666667 181.3333333333334L405.3333333333333 85.3333333333334M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 300.8 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-lock" + unicode="&#xF250;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M405.3333333333333 85.3333333333334V170.6666666666667H384V192C384 227.4133333333334 355.4133333333333 256 320 256S256 227.4133333333334 256 192V170.6666666666667H234.6666666666667V85.3333333333334H405.3333333333333M320 213.3333333333334C331.7333333333334 213.3333333333334 341.3333333333333 203.7333333333334 341.3333333333333 192V170.6666666666667H298.6666666666667V192C298.6666666666667 203.7333333333334 308.2666666666667 213.3333333333334 320 213.3333333333334z" /> + <glyph glyph-name="folder-lock-open" + unicode="&#xF251;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M405.3333333333333 85.3333333333334V170.6666666666667H298.6666666666667V213.3333333333334C298.6666666666667 225.0666666666667 308.2666666666667 234.6666666666667 320 234.6666666666667S341.3333333333333 225.0666666666667 341.3333333333333 213.3333333333334H384C384 248.7466666666667 355.4133333333333 277.3333333333334 320 277.3333333333334S256 248.7466666666667 256 213.3333333333334V170.6666666666667H234.6666666666667V85.3333333333334H405.3333333333333z" /> + <glyph glyph-name="folder-move" + unicode="&#xF252;" + horiz-adv-x="512" d=" M192 64V128H106.6666666666667V213.3333333333334H192V277.3333333333334L298.6666666666667 170.6666666666667M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-multiple" + unicode="&#xF253;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667H298.6666666666667L256 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H469.3333333333333C492.8 64 512 83.2 512 106.6666666666667V320C512 343.4666666666667 492.8 362.6666666666667 469.3333333333333 362.6666666666667M42.6666666666667 320H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H426.6666666666667V21.3333333333334H42.6666666666667V320z" /> + <glyph glyph-name="folder-multiple-image" + unicode="&#xF254;" + horiz-adv-x="512" d=" M149.3333333333333 128L245.3333333333333 256L320 160L373.3333333333333 224L448 128M469.3333333333333 362.6666666666667H298.6666666666667L256 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V106.6666666666667C85.3333333333333 83.2 104.5333333333333 64 128 64H469.3333333333333C492.8 64 512 83.2 512 106.6666666666667V320C512 343.4666666666667 492.8 362.6666666666667 469.3333333333333 362.6666666666667M42.6666666666667 320H0V21.3333333333334C0 -2.1333333333333 19.2 -21.3333333333333 42.6666666666667 -21.3333333333333H426.6666666666667V21.3333333333334H42.6666666666667V320z" /> + <glyph glyph-name="folder-multiple-outline" + unicode="&#xF255;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667C492.8 362.6666666666667 512 343.4666666666667 512 320V106.6666666666667C512 83.2 492.8 64 469.3333333333333 64H128C104.5333333333333 64 85.3333333333333 83.2 85.3333333333333 106.6666666666667V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333H256L298.6666666666667 362.6666666666667H469.3333333333333M42.6666666666667 320V21.3333333333334H426.6666666666667V-21.3333333333333H42.6666666666667C19.2 -21.3333333333333 0 -2.1333333333333 0 21.3333333333334V320H42.6666666666667M128 320V106.6666666666667H469.3333333333333V320H128z" /> + <glyph glyph-name="folder-outline" + unicode="&#xF256;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V277.3333333333334H426.6666666666667M426.6666666666667 320H256L213.3333333333333 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V277.3333333333334C469.3333333333333 301.0133333333333 450.1333333333334 320 426.6666666666667 320z" /> + <glyph glyph-name="folder-plus" + unicode="&#xF257;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667L256 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333M320 256V192H256V149.3333333333334H320V85.3333333333334H362.6666666666667V149.3333333333334H426.6666666666667V192H362.6666666666667V256H320z" /> + <glyph glyph-name="folder-remove" + unicode="&#xF258;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667L256 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333M265.8133333333334 215.8933333333334L311.2533333333334 170.6666666666667L265.8133333333334 125.44L296.1066666666667 95.1466666666667L341.3333333333333 140.5866666666667L386.56 95.1466666666667L416.8533333333333 125.4400000000001L371.4133333333333 170.6666666666667L416.8533333333333 215.8933333333334L386.56 246.1866666666667L341.3333333333333 200.7466666666667L296.1066666666667 246.1866666666667L265.8133333333333 215.8933333333333z" /> + <glyph glyph-name="folder-upload" + unicode="&#xF259;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H213.3333333333333L256 320H426.6666666666667M229.3333333333333 170.6666666666667H298.6666666666667V85.3333333333334H341.3333333333333V170.6666666666667H410.6666666666667L320 261.3333333333334" /> + <glyph glyph-name="food" + unicode="&#xF25A;" + horiz-adv-x="512" d=" M330.6666666666667 0L298.6666666666667 277.3333333333334H346.24L322.1333333333334 374.1866666666667L359.2533333333334 384L385.92 277.3333333333334H469.3333333333333L437.3333333333333 0H330.6666666666667M106.6666666666667 213.3333333333334H213.3333333333333C248.7466666666667 213.3333333333334 277.3333333333333 184.7466666666667 277.3333333333333 149.3333333333334H42.6666666666667C42.6666666666667 184.7466666666667 71.2533333333333 213.3333333333334 106.6666666666667 213.3333333333334M277.3333333333333 64C277.3333333333333 28.5866666666667 248.7466666666667 0 213.3333333333333 0H106.6666666666667C71.2533333333333 0 42.6666666666667 28.5866666666667 42.6666666666667 64H277.3333333333333M64 128H170.6666666666667L202.6666666666667 96L234.6666666666667 128H256C267.7333333333334 128 277.3333333333333 118.4 277.3333333333333 106.6666666666667S267.7333333333334 85.3333333333334 256 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667S52.2666666666667 128 64 128z" /> + <glyph glyph-name="food-apple" + unicode="&#xF25B;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667C469.3333333333333 170.6666666666667 362.6666666666667 -21.3333333333333 320 -21.3333333333333S277.3333333333333 0 256 0S234.6666666666667 -21.3333333333333 192 -21.3333333333333S42.6666666666667 170.6666666666667 85.3333333333333 234.6666666666667S192 298.6666666666667 234.6666666666667 277.3333333333334V341.3333333333334C114.7733333333333 275.8400000000001 87.68 367.36 87.68 367.36S144.4266666666667 443.9466666666667 234.6666666666667 341.3333333333334V384H277.3333333333333V277.3333333333334C320 298.6666666666667 384 298.6666666666667 426.6666666666667 234.6666666666667z" /> + <glyph glyph-name="food-fork-drink" + unicode="&#xF5F2;" + horiz-adv-x="512" d=" M64 384C52.2666666666667 384 42.6666666666667 374.4 42.6666666666667 362.6666666666667V245.3333333333334C42.6666666666667 209.28 64.64 178.5600000000001 96 165.9733333333334V32C96 14.2933333333334 110.2933333333333 0 128 0S160 14.2933333333334 160 32V165.9733333333334C191.36 178.5600000000001 213.3333333333333 209.28 213.3333333333333 245.3333333333334V362.6666666666667C213.3333333333333 374.4 203.7333333333334 384 192 384S170.6666666666667 374.4 170.6666666666667 362.6666666666667V277.3333333333334C170.6666666666667 271.36 165.9733333333333 266.6666666666667 160 266.6666666666667S149.3333333333333 271.36 149.3333333333333 277.3333333333334V362.6666666666667C149.3333333333333 374.4 139.7333333333333 384 128 384S106.6666666666667 374.4 106.6666666666667 362.6666666666667V277.3333333333334C106.6666666666667 271.36 101.9733333333333 266.6666666666667 96 266.6666666666667S85.3333333333333 271.36 85.3333333333333 277.3333333333334V362.6666666666667C85.3333333333333 374.4 75.7333333333333 384 64 384M424.1066666666667 384C421.3333333333333 384 418.56 382.0800000000001 416 380.5866666666667L341.3333333333333 336V256H256V213.3333333333334H277.3333333333333L298.6666666666667 0H426.6666666666667L448 213.3333333333334H469.3333333333333V256H384V312.7466666666667L437.3333333333333 344.7466666666667C448 350.7200000000001 450.7733333333333 362.6666666666667 444.5866666666667 373.3333333333334C440.1066666666667 381.0133333333333 432.2133333333334 385.0666666666667 424.1066666666667 384z" /> + <glyph glyph-name="food-off" + unicode="&#xF5F3;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L448 -15.36L420.9066666666667 -42.6666666666666L378.24 0H330.6666666666667L324.48 53.3333333333334L276.6933333333334 101.5466666666666C274.3466666666667 92.16 266.0266666666667 85.3333333333333 256 85.3333333333333H64C52.2666666666667 85.3333333333333 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666666S52.2666666666667 128 64 128H170.6666666666667L202.6666666666667 95.9999999999999L234.6666666666667 128H250.24L228.9066666666667 149.3333333333334H42.6666666666667C42.6666666666667 184.7466666666667 71.2533333333333 213.3333333333334 106.6666666666667 213.3333333333334H164.9066666666667L42.6666666666667 335.5733333333334M298.6666666666667 277.3333333333334H346.24L322.1333333333334 374.1866666666667L359.2533333333334 384L385.92 277.3333333333334H469.3333333333333L442.4533333333333 44.3733333333333L310.1866666666666 176.64L298.6666666666667 277.3333333333334M277.3333333333333 64C277.3333333333333 28.5866666666667 248.7466666666667 0 213.3333333333333 0H106.6666666666667C71.2533333333333 0 42.6666666666667 28.5866666666667 42.6666666666667 64H277.3333333333333z" /> + <glyph glyph-name="food-variant" + unicode="&#xF25C;" + horiz-adv-x="512" d=" M469.3333333333333 64C469.3333333333333 16.8533333333334 431.1466666666667 -21.3333333333333 384 -21.3333333333333H320C272.8533333333333 -21.3333333333333 234.6666666666667 16.8533333333334 234.6666666666667 64V106.6666666666667H379.52L438.3999999999999 208.4266666666667L471.6799999999999 189.2266666666667L423.8933333333333 106.6666666666667H469.3333333333333V64M192 -21.3333333333333H42.6666666666667C42.6666666666667 42.6666666666667 42.6666666666667 106.6666666666667 49.7066666666667 174.2933333333334C55.4666666666667 228.2666666666667 65.7066666666667 284.5866666666667 76.8 341.3333333333334H64V384H170.6666666666667V341.3333333333334H157.8666666666667C168.96 284.5866666666667 179.2 228.2666666666667 184.96 174.2933333333334C192 106.6666666666667 192 42.6666666666667 192 -21.3333333333333z" /> + <glyph glyph-name="football" + unicode="&#xF25D;" + horiz-adv-x="512" d=" M160 288C195.6266666666667 322.7733333333333 240.8533333333333 347.9466666666667 285.2266666666667 358.8266666666667C329.8133333333334 369.7066666666667 373.3333333333333 366.2933333333334 396.8 362.6666666666667C420.48 359.4666666666667 423.8933333333333 356.0533333333334 427.3066666666667 332.5866666666667C430.5066666666667 309.3333333333334 433.7066666666667 265.6 422.8266666666667 221.2266666666667C411.9466666666666 176.8533333333334 386.7733333333333 131.6266666666667 352 96C316.3733333333334 61.2266666666667 271.1466666666667 36.0533333333334 226.7733333333333 25.1733333333333C182.4 14.2933333333333 138.6666666666666 17.4933333333333 115.4133333333333 20.6933333333333C91.9466666666666 24.1066666666667 88.5333333333333 27.52 85.3333333333333 51.2C81.7066666666667 74.6666666666667 78.2933333333333 118.1866666666667 89.1733333333333 162.7733333333333C100.0533333333333 207.1466666666667 125.2266666666667 252.3733333333333 160 288M155.7333333333333 111.1466666666667L175.1466666666666 91.7333333333334L200.96 117.3333333333334L226.7733333333333 91.7333333333334L246.1866666666667 111.1466666666667L220.5866666666667 136.96L256 172.5866666666667L281.8133333333334 146.7733333333333L301.2266666666667 166.1866666666667L275.4133333333333 192L311.04 227.4133333333334L336.8533333333333 201.8133333333334L356.2666666666667 221.2266666666667L330.6666666666667 247.0400000000001L356.2666666666667 272.8533333333334L336.8533333333333 292.2666666666668L311.04 266.6666666666668L285.2266666666666 292.2666666666668L265.8133333333333 272.8533333333335L291.4133333333333 247.0400000000002L256 211.4133333333334L230.1866666666667 237.2266666666667L210.7733333333333 217.8133333333334L236.5866666666667 192L200.96 156.5866666666667L175.1466666666667 182.1866666666667L155.7333333333334 162.7733333333333L181.3333333333333 136.96L155.7333333333333 111.1466666666667z" /> + <glyph glyph-name="football-australian" + unicode="&#xF25E;" + horiz-adv-x="512" d=" M160 288C195.6266666666667 322.7733333333333 240.8533333333333 347.9466666666667 285.2266666666667 358.8266666666667C384 384 448 320 422.8266666666667 221.2266666666667C411.9466666666666 176.8533333333334 386.7733333333333 131.6266666666667 352 96C316.3733333333334 61.2266666666667 271.1466666666667 36.0533333333334 226.7733333333333 25.1733333333333C128 0 64 64 89.1733333333333 162.7733333333334C100.0533333333333 207.1466666666667 125.2266666666667 252.3733333333334 160 288M226.56 207.7866666666667L218.88 200.1066666666668L264.1066666666667 154.8800000000001L271.7866666666667 162.5600000000001L226.56 207.7866666666667M247.8933333333334 229.1200000000001L240.2133333333334 221.4400000000001L285.4400000000001 176.2133333333334L293.12 183.8933333333334L247.8933333333334 229.1200000000001M205.2266666666667 186.4533333333334L197.5466666666667 178.7733333333334L242.7733333333334 133.5466666666668L250.4533333333334 141.2266666666667L205.2266666666667 186.4533333333334M269.44 250.0266666666668L261.9733333333334 242.5600000000001L307.2000000000001 197.3333333333334L314.6666666666667 204.8000000000001L269.4400000000001 250.0266666666668M184.1066666666667 164.6933333333334L176.6400000000001 157.2266666666668L221.8666666666667 112.0000000000001L229.3333333333334 119.4666666666668L184.1066666666667 164.6933333333334M290.7733333333334 271.3600000000001L283.3066666666668 263.8933333333335L328.5333333333334 218.6666666666668L336 226.1333333333334L290.7733333333334 271.3600000000001z" /> + <glyph glyph-name="football-helmet" + unicode="&#xF25F;" + horiz-adv-x="512" d=" M288 192C270.2933333333333 192 256 177.7066666666667 256 160S270.2933333333333 128 288 128S320 142.2933333333334 320 160S305.7066666666667 192 288 192M288 384C388.0533333333334 384 469.3333333333333 307.6266666666667 469.3333333333333 213.3333333333334C469.3333333333333 178.7733333333333 469.3333333333333 149.3333333333334 449.92 106.6666666666667C362.6666666666667 106.6666666666667 341.3333333333333 21.3333333333334 266.6666666666667 21.3333333333334C220.16 21.3333333333334 197.76 58.0266666666666 193.0666666666667 106.6666666666667H175.7866666666667L148.48 14.9333333333333C145.28 4.48 135.04 -1.7066666666667 124.5866666666667 0H64C52.2666666666667 0 42.6666666666667 9.6 42.6666666666667 21.3333333333334S52.2666666666667 42.6666666666667 64 42.6666666666667V106.6666666666667C52.2666666666667 106.6666666666667 42.6666666666667 116.2666666666667 42.6666666666667 128S52.2666666666667 149.3333333333334 64 149.3333333333334H144L154.24 183.68C143.36 189.0133333333333 130.7733333333334 192 117.3333333333333 192H108.16L106.6666666666667 213.3333333333334C106.6666666666667 307.6266666666667 187.9466666666667 384 288 384M106.6666666666667 106.6666666666667V42.6666666666667H112.2133333333333L131.2 106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="format-align-center" + unicode="&#xF260;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M149.3333333333333 298.6666666666667H362.6666666666667V256H149.3333333333333V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M149.3333333333333 128H362.6666666666667V85.3333333333334H149.3333333333333V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-justify" + unicode="&#xF261;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M64 298.6666666666667H448V256H64V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 128H448V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-left" + unicode="&#xF262;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M64 298.6666666666667H320V256H64V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 128H320V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-align-right" + unicode="&#xF263;" + horiz-adv-x="512" d=" M64 384H448V341.3333333333334H64V384M192 298.6666666666667H448V256H192V298.6666666666667M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M192 128H448V85.3333333333334H192V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-annotation-plus" + unicode="&#xF646;" + horiz-adv-x="512" d=" M181.3333333333333 298.6666666666667H224L341.3333333333333 0H290.1333333333334L266.6666666666667 64H134.4L110.9333333333333 0H64L181.3333333333333 298.6666666666667M151.4666666666667 106.6666666666667H253.8666666666666L202.6666666666667 241.0666666666667L151.4666666666667 106.6666666666667M469.3333333333333 341.3333333333334V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334H469.3333333333333z" /> + <glyph glyph-name="format-bold" + unicode="&#xF264;" + horiz-adv-x="512" d=" M288 117.3333333333334H213.3333333333333V181.3333333333334H288C305.7066666666667 181.3333333333334 320 167.04 320 149.3333333333334S305.7066666666667 117.3333333333334 288 117.3333333333334M213.3333333333333 309.3333333333334H277.3333333333333C295.04 309.3333333333334 309.3333333333333 295.04 309.3333333333333 277.3333333333334S295.04 245.3333333333334 277.3333333333333 245.3333333333334H213.3333333333333M332.8 217.8133333333334C353.4933333333334 232.32 368 256 368 277.3333333333334C368 325.5466666666667 330.6666666666667 362.6666666666667 282.6666666666667 362.6666666666667H149.3333333333333V64H299.52C344.32 64 378.6666666666667 100.2666666666667 378.6666666666667 144.8533333333334C378.6666666666667 177.28 360.32 205.0133333333333 332.8 217.8133333333333z" /> + <glyph glyph-name="format-clear" + unicode="&#xF265;" + horiz-adv-x="512" d=" M128 341.3333333333334V337.4933333333334L188.16 277.3333333333334H239.36L224 241.4933333333334L268.8 196.6933333333334L303.1466666666667 277.3333333333334H426.6666666666667V341.3333333333334H128M69.76 341.3333333333334L42.6666666666667 314.24L191.36 165.5466666666668L138.6666666666667 42.6666666666667H202.6666666666667L236.16 120.7466666666667L356.9066666666667 0L384 27.0933333333334L75.7333333333333 335.5733333333334L69.76 341.3333333333334z" /> + <glyph glyph-name="format-color-fill" + unicode="&#xF266;" + horiz-adv-x="512" d=" M405.3333333333333 202.6666666666667S362.6666666666667 156.3733333333333 362.6666666666667 128C362.6666666666667 104.5333333333333 381.8666666666666 85.3333333333334 405.3333333333333 85.3333333333334S448 104.5333333333333 448 128C448 156.3733333333333 405.3333333333333 202.6666666666667 405.3333333333333 202.6666666666667M111.1466666666667 234.6666666666667L213.3333333333333 336.8533333333334L315.52 234.6666666666667M353.28 257.2800000000001L162.56 448L132.48 417.92L183.2533333333333 367.1466666666667L73.3866666666667 257.28C60.8 245.3333333333333 60.8 224.64 73.3866666666667 212.0533333333333L190.72 94.72C196.9066666666667 88.5333333333333 205.2266666666666 85.3333333333333 213.3333333333333 85.3333333333333S229.76 88.5333333333333 235.9466666666667 94.72L353.2800000000001 212.0533333333333C365.8666666666667 224.64 365.8666666666667 245.3333333333333 353.2800000000001 257.28z" /> + <glyph glyph-name="format-float-center" + unicode="&#xF267;" + horiz-adv-x="512" d=" M192 298.6666666666667H320V170.6666666666667H192V298.6666666666667M64 384H448V341.3333333333334H64V384M64 128H448V85.3333333333334H64V128M64 42.6666666666667H362.6666666666667V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-left" + unicode="&#xF268;" + horiz-adv-x="512" d=" M64 298.6666666666667H192V170.6666666666667H64V298.6666666666667M64 384H448V341.3333333333334H64V384M448 298.6666666666667V256H234.6666666666667V298.6666666666667H448M448 213.3333333333334V170.6666666666667H234.6666666666667V213.3333333333334H448M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-none" + unicode="&#xF269;" + horiz-adv-x="512" d=" M64 298.6666666666667H192V170.6666666666667H64V298.6666666666667M64 384H448V341.3333333333334H64V384M448 213.3333333333334V170.6666666666667H234.6666666666667V213.3333333333334H448M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-float-right" + unicode="&#xF26A;" + horiz-adv-x="512" d=" M320 298.6666666666667H448V170.6666666666667H320V298.6666666666667M64 384H448V341.3333333333334H64V384M277.3333333333333 298.6666666666667V256H64V298.6666666666667H277.3333333333333M192 213.3333333333334V170.6666666666667H64V213.3333333333334H192M64 128H362.6666666666667V85.3333333333334H64V128M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-header-1" + unicode="&#xF26B;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M298.6666666666667 64V106.6666666666667H341.3333333333333V313.3866666666667L288 282.6666666666667V331.9466666666667L341.3333333333333 362.6666666666667H384V106.6666666666667H426.6666666666667V64H298.6666666666667z" /> + <glyph glyph-name="format-header-2" + unicode="&#xF26C;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M448 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667C277.3333333333333 117.9733333333334 281.6 128 288.8533333333333 135.68L392.7466666666667 247.2533333333334C400.64 254.9333333333334 405.3333333333333 265.6 405.3333333333333 277.3333333333334C405.3333333333333 300.8 386.1333333333334 320 362.6666666666667 320S320 300.8 320 277.3333333333334H277.3333333333333C277.3333333333333 324.48 315.52 362.6666666666667 362.6666666666667 362.6666666666667S448 324.48 448 277.3333333333334C448 253.8666666666667 438.4 232.5333333333334 423.04 216.96L320 106.6666666666667H448V64z" /> + <glyph glyph-name="format-header-3" + unicode="&#xF26D;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V128H320V106.6666666666667H405.3333333333333V192H320V234.6666666666667H405.3333333333333V320H320V298.6666666666667H277.3333333333333V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667z" /> + <glyph glyph-name="format-header-4" + unicode="&#xF26E;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M384 64V170.6666666666667H277.3333333333333V213.3333333333334L384 362.6666666666667H426.6666666666667V213.3333333333334H448V170.6666666666667H426.6666666666667V64H384M384 213.3333333333334V289.7066666666667L329.6 213.3333333333334H384z" /> + <glyph glyph-name="format-header-5" + unicode="&#xF26F;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H426.6666666666667V320H320V234.6666666666667H362.6666666666667C409.8133333333334 234.6666666666667 448 196.48 448 149.3333333333334S409.8133333333334 64 362.6666666666667 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V128H320V106.6666666666667H362.6666666666667C386.1333333333334 106.6666666666667 405.3333333333333 125.8666666666667 405.3333333333333 149.3333333333334S386.1333333333334 192 362.6666666666667 192H320C296.5333333333333 192 277.3333333333333 211.2 277.3333333333333 234.6666666666667V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667z" /> + <glyph glyph-name="format-header-6" + unicode="&#xF270;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M320 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V298.6666666666667H405.3333333333333V320H320V234.6666666666667H405.3333333333333C428.8 234.6666666666667 448 215.4666666666667 448 192V106.6666666666667C448 83.2 428.8 64 405.3333333333333 64H320C296.5333333333333 64 277.3333333333333 83.2 277.3333333333333 106.6666666666667V320C277.3333333333333 343.4666666666667 296.5333333333333 362.6666666666667 320 362.6666666666667M320 192V106.6666666666667H405.3333333333333V192H320z" /> + <glyph glyph-name="format-header-decrease" + unicode="&#xF271;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M435.6266666666667 289.92L359.04 213.3333333333334L435.6266666666666 136.7466666666667L405.3333333333333 106.6666666666667L298.6666666666667 213.3333333333334L405.3333333333333 320L435.6266666666667 289.92z" /> + <glyph glyph-name="format-header-equal" + unicode="&#xF272;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M298.6666666666667 234.6666666666667V277.3333333333334H448V234.6666666666667H298.6666666666667M298.6666666666667 192H448V149.3333333333334H298.6666666666667V192z" /> + <glyph glyph-name="format-header-increase" + unicode="&#xF273;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H128V234.6666666666667H213.3333333333333V362.6666666666667H256V64H213.3333333333333V192H128V64H85.3333333333333V362.6666666666667M311.2533333333334 289.92L387.6266666666667 213.3333333333334L311.2533333333334 136.7466666666667L341.3333333333333 106.6666666666667L448 213.3333333333334L341.3333333333333 320L311.2533333333334 289.92z" /> + <glyph glyph-name="format-header-pound" + unicode="&#xF274;" + horiz-adv-x="512" d=" M64 362.6666666666667H106.6666666666667V234.6666666666667H192V362.6666666666667H234.6666666666667V64H192V192H106.6666666666667V64H64V362.6666666666667M277.3333333333333 277.3333333333334H326.6133333333334L333.44 341.3333333333334H376.1066666666667L369.2800000000001 277.3333333333334H411.9466666666667L418.7733333333334 341.3333333333334H461.4400000000001L454.6133333333333 277.3333333333334H490.6666666666666V234.6666666666667H450.1333333333334L445.8666666666667 192H490.6666666666666V149.3333333333334H441.3866666666667L434.56 85.3333333333334H391.8933333333333L398.7200000000001 149.3333333333334H356.0533333333334L349.2266666666667 85.3333333333334H306.56L313.3866666666667 149.3333333333334H277.3333333333333V192H317.8666666666667L322.1333333333334 234.6666666666667H277.3333333333333V277.3333333333334M364.8 234.6666666666667L360.5333333333334 192H403.2000000000001L407.4666666666667 234.6666666666667H364.8z" /> + <glyph glyph-name="format-horizontal-align-center" + unicode="&#xF61E;" + horiz-adv-x="512" d=" M405.3333333333333 106.6666666666667V170.6666666666667H490.6666666666666V213.3333333333334H405.3333333333333V277.3333333333334L320 192L405.3333333333333 106.6666666666667M106.6666666666667 277.3333333333334V213.3333333333334H21.3333333333333V170.6666666666667H106.6666666666667V106.6666666666667L192 192L106.6666666666667 277.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V362.6666666666667H234.6666666666667V21.3333333333334z" /> + <glyph glyph-name="format-horizontal-align-left" + unicode="&#xF61F;" + horiz-adv-x="512" d=" M234.6666666666667 106.6666666666667V170.6666666666667H448V213.3333333333334H234.6666666666667V277.3333333333334L149.3333333333333 192L234.6666666666667 106.6666666666667M64 21.3333333333334H106.6666666666667V362.6666666666667H64V21.3333333333334z" /> + <glyph glyph-name="format-horizontal-align-right" + unicode="&#xF620;" + horiz-adv-x="512" d=" M277.3333333333333 277.3333333333334V213.3333333333334H64V170.6666666666667H277.3333333333333V106.6666666666667L362.6666666666667 192L277.3333333333333 277.3333333333334M405.3333333333333 21.3333333333334H448V362.6666666666667H405.3333333333333V21.3333333333334z" /> + <glyph glyph-name="format-indent-decrease" + unicode="&#xF275;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H448V213.3333333333334H234.6666666666667M234.6666666666667 256H448V298.6666666666667H234.6666666666667M64 384V341.3333333333334H448V384M64 0H448V42.6666666666667H64M64 192L149.3333333333333 106.6666666666667V277.3333333333334M234.6666666666667 85.3333333333334H448V128H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="format-indent-increase" + unicode="&#xF276;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H448V213.3333333333334H234.6666666666667M234.6666666666667 256H448V298.6666666666667H234.6666666666667M64 384V341.3333333333334H448V384M234.6666666666667 85.3333333333334H448V128H234.6666666666667M64 277.3333333333334V106.6666666666667L149.3333333333333 192M64 0H448V42.6666666666667H64V0z" /> + <glyph glyph-name="format-italic" + unicode="&#xF277;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V298.6666666666667H260.48L187.52 128H128V64H298.6666666666667V128H251.52L324.48 298.6666666666667H384V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="format-line-spacing" + unicode="&#xF278;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667H469.3333333333333V213.3333333333334H213.3333333333333M213.3333333333333 42.6666666666667H469.3333333333333V85.3333333333334H213.3333333333333M213.3333333333333 298.6666666666667H469.3333333333333V341.3333333333334H213.3333333333333M128 298.6666666666667H181.3333333333333L106.6666666666667 373.3333333333334L32 298.6666666666667H85.3333333333333V85.3333333333334H32L106.6666666666667 10.6666666666667L181.3333333333333 85.3333333333334H128V298.6666666666667z" /> + <glyph glyph-name="format-line-style" + unicode="&#xF5C8;" + horiz-adv-x="512" d=" M64 106.6666666666667H170.6666666666667V149.3333333333334H64V106.6666666666667M202.6666666666667 106.6666666666667H309.3333333333333V149.3333333333334H202.6666666666667V106.6666666666667M341.3333333333333 106.6666666666667H448V149.3333333333334H341.3333333333333V106.6666666666667M64 21.3333333333334H106.6666666666667V64H64V21.3333333333334M149.3333333333333 21.3333333333334H192V64H149.3333333333333V21.3333333333334M234.6666666666667 21.3333333333334H277.3333333333333V64H234.6666666666667V21.3333333333334M320 21.3333333333334H362.6666666666667V64H320V21.3333333333334M405.3333333333333 21.3333333333334H448V64H405.3333333333333V21.3333333333334M64 192H234.6666666666667V234.6666666666667H64V192M277.3333333333333 192H448V234.6666666666667H277.3333333333333V192M64 362.6666666666667V277.3333333333334H448V362.6666666666667H64z" /> + <glyph glyph-name="format-line-weight" + unicode="&#xF5C9;" + horiz-adv-x="512" d=" M64 85.3333333333334H448V128H64V85.3333333333334M64 21.3333333333334H448V42.6666666666667H64V21.3333333333334M64 170.6666666666667H448V234.6666666666667H64V170.6666666666667M64 362.6666666666667V277.3333333333334H448V362.6666666666667H64z" /> + <glyph glyph-name="format-list-bulleted" + unicode="&#xF279;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H448V298.6666666666667H149.3333333333333V341.3333333333334M149.3333333333333 170.6666666666667V213.3333333333334H448V170.6666666666667H149.3333333333333M85.3333333333333 352C103.04 352 117.3333333333333 337.7066666666667 117.3333333333333 320S103.04 288 85.3333333333333 288S53.3333333333333 302.2933333333334 53.3333333333333 320S67.6266666666667 352 85.3333333333333 352M85.3333333333333 224C103.04 224 117.3333333333333 209.7066666666667 117.3333333333333 192S103.04 160 85.3333333333333 160S53.3333333333333 174.2933333333334 53.3333333333333 192S67.6266666666667 224 85.3333333333333 224M149.3333333333333 42.6666666666667V85.3333333333334H448V42.6666666666667H149.3333333333333M85.3333333333333 96C103.04 96 117.3333333333333 81.7066666666667 117.3333333333333 64S103.04 32 85.3333333333333 32S53.3333333333333 46.2933333333334 53.3333333333333 64S67.6266666666667 96 85.3333333333333 96z" /> + <glyph glyph-name="format-list-bulleted-type" + unicode="&#xF27A;" + horiz-adv-x="512" d=" M106.6666666666667 245.3333333333334L160 149.3333333333334H53.3333333333333L106.6666666666667 245.3333333333334M64 362.6666666666667H149.3333333333333V277.3333333333334H64V362.6666666666667M106.6666666666667 21.3333333333334C130.1333333333333 21.3333333333334 149.3333333333333 40.5333333333333 149.3333333333333 64S130.1333333333333 106.6666666666667 106.6666666666667 106.6666666666667S64 87.4666666666667 64 64S83.2 21.3333333333334 106.6666666666667 21.3333333333334M192 341.3333333333334V298.6666666666667H448V341.3333333333334H192M192 42.6666666666667H448V85.3333333333334H192V42.6666666666667M192 170.6666666666667H448V213.3333333333334H192V170.6666666666667z" /> + <glyph glyph-name="format-list-numbers" + unicode="&#xF27B;" + horiz-adv-x="512" d=" M149.3333333333333 170.6666666666667H448V213.3333333333334H149.3333333333333M149.3333333333333 42.6666666666667H448V85.3333333333334H149.3333333333333M149.3333333333333 298.6666666666667H448V341.3333333333334H149.3333333333333M42.6666666666667 213.3333333333334H81.0666666666667L42.6666666666667 168.5333333333334V149.3333333333334H106.6666666666667V170.6666666666667H68.2666666666667L106.6666666666667 215.4666666666667V234.6666666666667H42.6666666666667M64 277.3333333333334H85.3333333333333V362.6666666666667H42.6666666666667V341.3333333333334H64M42.6666666666667 85.3333333333334H85.3333333333333V74.6666666666667H64V53.3333333333334H85.3333333333333V42.6666666666667H42.6666666666667V21.3333333333334H106.6666666666667V106.6666666666667H42.6666666666667V85.3333333333334z" /> + <glyph glyph-name="format-paint" + unicode="&#xF27C;" + horiz-adv-x="512" d=" M384 362.6666666666667V384C384 395.7333333333334 374.4 405.3333333333333 362.6666666666667 405.3333333333333H106.6666666666667C94.9333333333333 405.3333333333333 85.3333333333333 395.7333333333334 85.3333333333333 384V298.6666666666667C85.3333333333333 286.9333333333334 94.9333333333333 277.3333333333334 106.6666666666667 277.3333333333334H362.6666666666667C374.4 277.3333333333334 384 286.9333333333334 384 298.6666666666667V320H405.3333333333333V234.6666666666667H192V0C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H256C267.7333333333334 -21.3333333333333 277.3333333333333 -11.7333333333333 277.3333333333333 0V192H448V362.6666666666667H384z" /> + <glyph glyph-name="format-paragraph" + unicode="&#xF27D;" + horiz-adv-x="512" d=" M277.3333333333333 362.6666666666667C324.48 362.6666666666667 362.6666666666667 324.48 362.6666666666667 277.3333333333334S324.48 192 277.3333333333333 192H234.6666666666667V64H192V362.6666666666667H277.3333333333333M277.3333333333333 234.6666666666667C300.8 234.6666666666667 320 253.8666666666667 320 277.3333333333334S300.8 320 277.3333333333333 320H234.6666666666667V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="format-quote" + unicode="&#xF27E;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H362.6666666666667L405.3333333333333 170.6666666666667V298.6666666666667H277.3333333333333V170.6666666666667H341.3333333333333M128 85.3333333333334H192L234.6666666666667 170.6666666666667V298.6666666666667H106.6666666666667V170.6666666666667H170.6666666666667L128 85.3333333333334z" /> + <glyph glyph-name="format-size" + unicode="&#xF27F;" + horiz-adv-x="512" d=" M64 192H128V42.6666666666667H192V192H256V256H64M192 362.6666666666667V298.6666666666667H298.6666666666667V42.6666666666667H362.6666666666667V298.6666666666667H469.3333333333333V362.6666666666667H192z" /> + <glyph glyph-name="format-strikethrough" + unicode="&#xF280;" + horiz-adv-x="512" d=" M64 149.3333333333334H448V192H64M106.6666666666667 362.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667H298.6666666666667V298.6666666666667H405.3333333333333V362.6666666666667M213.3333333333333 42.6666666666667H298.6666666666667V106.6666666666667H213.3333333333333V42.6666666666667z" /> + <glyph glyph-name="format-strikethrough-variant" + unicode="&#xF281;" + horiz-adv-x="512" d=" M490.6666666666666 192V149.3333333333334H397.0133333333333C418.3466666666667 103.68 417.28 -21.3333333333333 264.1066666666667 -21.3333333333333C86.4 -22.4 93.2266666666667 117.3333333333334 93.2266666666667 117.3333333333334L177.92 116.2666666666667C178.56 44.3733333333333 245.3333333333333 44.3733333333333 258.56 45.2266666666666C272.2133333333333 46.2933333333333 323.2 46.0799999999999 327.2533333333334 95.9999999999999C328.96 119.2533333333333 305.4933333333334 136.9599999999999 279.8933333333333 149.3333333333333H21.3333333333333V192H490.6666666666666M414.08 279.68L329.1733333333333 280.32S332.8 339.4133333333333 259.2 339.6266666666666C185.6 340.0533333333334 192 292.6933333333334 192 286.7200000000001C192.8533333333333 280.7466666666667 199.2533333333333 251.3066666666667 256 237.2266666666667H121.8133333333333S47.36 380.8 229.12 405.3333333333333C414.9333333333334 430.9333333333334 414.5066666666667 279.2533333333334 414.08 279.68z" /> + <glyph glyph-name="format-subscript" + unicode="&#xF282;" + horiz-adv-x="512" d=" M341.3333333333333 289.92L243.4133333333334 192L341.3333333333333 94.08L311.2533333333334 64L213.3333333333333 161.92L115.4133333333333 64L85.3333333333333 94.08L183.2533333333333 192L85.3333333333333 289.92L115.4133333333333 320L213.3333333333333 222.08L311.2533333333334 320L341.3333333333333 289.92M466.1333333333333 -0.64H362.0266666666667V20.6933333333333L381.0133333333334 37.76C397.2266666666668 51.6266666666667 409.1733333333334 63.1466666666667 417.2800000000001 72.5333333333333C425.1733333333334 81.92 429.2266666666667 90.6666666666667 429.4400000000001 98.9866666666666C429.6533333333334 104.96 427.7333333333334 109.8666666666666 423.6800000000001 113.92C419.8400000000001 117.3333333333333 413.6533333333334 119.8933333333333 405.3333333333334 119.8933333333333C398.7200000000001 119.8933333333333 392.9600000000001 118.6133333333332 387.4133333333334 116.0533333333333L373.3333333333334 107.9466666666666L363.7333333333334 132.9066666666666C369.4933333333334 137.3866666666666 376.3200000000001 141.2266666666666 384.6400000000001 144.2133333333333S402.1333333333335 149.3333333333333 412.1600000000001 149.3333333333333C428.8000000000001 148.4799999999999 441.6 143.9999999999999 450.1333333333335 135.2533333333332C458.6666666666667 126.5066666666666 463.3600000000001 115.4133333333333 463.3600000000001 101.7599999999999C463.1466666666668 89.8133333333333 459.3066666666667 78.72 451.8400000000001 68.6933333333333C444.5866666666668 58.6666666666666 435.6266666666668 49.0666666666666 424.7466666666668 39.68L411.0933333333335 28.5866666666666V28.16H466.1333333333335V-0.6400000000001z" /> + <glyph glyph-name="format-superscript" + unicode="&#xF283;" + horiz-adv-x="512" d=" M341.3333333333333 289.92L243.4133333333334 192L341.3333333333333 94.08L311.2533333333334 64L213.3333333333333 161.92L115.4133333333333 64L85.3333333333333 94.08L183.2533333333333 192L85.3333333333333 289.92L115.4133333333333 320L213.3333333333333 222.08L311.2533333333334 320L341.3333333333333 289.92M466.1333333333333 256H362.0266666666667V277.3333333333334L381.0133333333334 294.8266666666667C397.2266666666668 308.48 409.1733333333334 320 417.2800000000001 329.6C425.1733333333334 338.9866666666667 429.2266666666667 347.7333333333334 429.4400000000001 355.8400000000001C429.6533333333334 361.8133333333334 427.7333333333334 366.9333333333334 423.6800000000001 370.7733333333333C419.8400000000001 374.8266666666667 413.6533333333334 376.7466666666667 405.3333333333334 376.9600000000001C398.7200000000001 376.7466666666667 392.9600000000001 375.4666666666667 387.4133333333334 373.3333333333334L373.3333333333334 365.0133333333333L363.7333333333334 389.9733333333334C369.4933333333334 394.6666666666667 376.3200000000001 398.2933333333334 384.6400000000001 401.28S402.1333333333334 405.3333333333333 412.16 405.3333333333333C428.8 405.3333333333333 441.6 401.0666666666667 450.1333333333334 392.32C458.6666666666666 384 463.36 372.48 463.36 358.8266666666667C463.1466666666666 346.88 459.3066666666667 335.7866666666667 451.84 325.76C444.5866666666667 315.5200000000001 435.6266666666667 305.92 424.7466666666668 296.7466666666667L411.0933333333334 285.6533333333334V285.2266666666667H466.1333333333333V256z" /> + <glyph glyph-name="format-text" + unicode="&#xF284;" + horiz-adv-x="512" d=" M394.6666666666667 362.6666666666667L419.4133333333333 269.8666666666667L398.9333333333333 264.3200000000001C389.3333333333333 282.88 379.52 301.4400000000001 368.2133333333333 310.8266666666667C356.9066666666667 320 343.68 320 330.6666666666667 320H277.3333333333333V96C277.3333333333333 85.3333333333334 277.3333333333333 74.6666666666667 284.3733333333334 69.3333333333334C291.6266666666667 64 305.7066666666667 64 320 64V42.6666666666667H192V64C206.2933333333333 64 220.3733333333333 64 227.6266666666667 69.3333333333334C234.6666666666667 74.6666666666667 234.6666666666667 85.3333333333334 234.6666666666667 96V320H181.3333333333333C168.32 320 155.0933333333333 320 143.7866666666667 310.8266666666667C132.48 301.44 122.6666666666667 282.88 113.0666666666667 264.3200000000001L92.5866666666667 269.8666666666667L117.3333333333333 362.6666666666667H394.6666666666667z" /> + <glyph glyph-name="format-textdirection-l-to-r" + unicode="&#xF285;" + horiz-adv-x="512" d=" M448 64L362.6666666666667 149.3333333333334V85.3333333333334H106.6666666666667V42.6666666666667H362.6666666666667V-21.3333333333333M192 234.6666666666667V128H234.6666666666667V362.6666666666667H277.3333333333333V128H320V362.6666666666667H362.6666666666667V405.3333333333333H192C144.8533333333333 405.3333333333333 106.6666666666667 367.1466666666667 106.6666666666667 320S144.8533333333333 234.6666666666667 192 234.6666666666667z" /> + <glyph glyph-name="format-textdirection-r-to-l" + unicode="&#xF286;" + horiz-adv-x="512" d=" M170.6666666666667 85.3333333333334V149.3333333333334L85.3333333333333 64L170.6666666666667 -21.3333333333333V42.6666666666667H426.6666666666667V85.3333333333334M213.3333333333333 234.6666666666667V128H256V362.6666666666667H298.6666666666667V128H341.3333333333333V362.6666666666667H384V405.3333333333333H213.3333333333333C166.1866666666667 405.3333333333333 128 367.1466666666667 128 320S166.1866666666667 234.6666666666667 213.3333333333333 234.6666666666667z" /> + <glyph glyph-name="format-title" + unicode="&#xF5F4;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667V298.6666666666667H224V42.6666666666667H288V298.6666666666667H405.3333333333333V362.6666666666667H106.6666666666667z" /> + <glyph glyph-name="format-underline" + unicode="&#xF287;" + horiz-adv-x="512" d=" M106.6666666666667 0H405.3333333333333V42.6666666666667H106.6666666666667V0M256 85.3333333333334C326.6133333333334 85.3333333333334 384 142.72 384 213.3333333333334V384H330.6666666666667V213.3333333333334C330.6666666666667 172.16 297.1733333333333 138.6666666666667 256 138.6666666666667S181.3333333333333 172.16 181.3333333333333 213.3333333333334V384H128V213.3333333333334C128 142.72 185.3866666666667 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="format-vertical-align-bottom" + unicode="&#xF621;" + horiz-adv-x="512" d=" M341.3333333333333 170.6666666666667H277.3333333333333V384H234.6666666666667V170.6666666666667H170.6666666666667L256 85.3333333333334L341.3333333333333 170.6666666666667M85.3333333333333 42.6666666666667V0H426.6666666666667V42.6666666666667H85.3333333333333z" /> + <glyph glyph-name="format-vertical-align-center" + unicode="&#xF622;" + horiz-adv-x="512" d=" M170.6666666666667 42.6666666666667H234.6666666666667V-42.6666666666666H277.3333333333333V42.6666666666667H341.3333333333333L256 128L170.6666666666667 42.6666666666667M341.3333333333333 341.3333333333334H277.3333333333333V426.6666666666667H234.6666666666667V341.3333333333334H170.6666666666667L256 256L341.3333333333333 341.3333333333334M85.3333333333333 213.3333333333334V170.6666666666667H426.6666666666667V213.3333333333334H85.3333333333333z" /> + <glyph glyph-name="format-vertical-align-top" + unicode="&#xF623;" + horiz-adv-x="512" d=" M170.6666666666667 213.3333333333334H234.6666666666667V0H277.3333333333333V213.3333333333334H341.3333333333333L256 298.6666666666667L170.6666666666667 213.3333333333334M85.3333333333333 384V341.3333333333334H426.6666666666667V384H85.3333333333333z" /> + <glyph glyph-name="format-wrap-inline" + unicode="&#xF288;" + horiz-adv-x="512" d=" M170.6666666666667 298.6666666666667L277.3333333333333 85.3333333333334H64L170.6666666666667 298.6666666666667M64 384H448V341.3333333333334H64V384M448 128V85.3333333333334H298.6666666666667V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-square" + unicode="&#xF289;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 298.6666666666667H128V256H64V298.6666666666667M448 298.6666666666667V256H384V298.6666666666667H448M64 213.3333333333334H128V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H384V213.3333333333334H448M64 128H128V85.3333333333334H64V128M448 128V85.3333333333334H384V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-tight" + unicode="&#xF28A;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 298.6666666666667H192V256H64V298.6666666666667M448 298.6666666666667V256H320V298.6666666666667H448M64 213.3333333333334H149.3333333333333V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H362.6666666666667V213.3333333333334H448M64 128H128V85.3333333333334H64V128M448 128V85.3333333333334H384V128H448M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="format-wrap-top-bottom" + unicode="&#xF28B;" + horiz-adv-x="512" d=" M256 298.6666666666667L362.6666666666667 85.3333333333334H149.3333333333333L256 298.6666666666667M64 384H448V341.3333333333334H64V384M64 42.6666666666667H448V0H64V42.6666666666667z" /> + <glyph glyph-name="forum" + unicode="&#xF28C;" + horiz-adv-x="512" d=" M362.6666666666667 192V384C362.6666666666667 395.7333333333334 353.0666666666667 405.3333333333333 341.3333333333333 405.3333333333333H64C52.2666666666667 405.3333333333333 42.6666666666667 395.7333333333334 42.6666666666667 384V85.3333333333334L128 170.6666666666667H341.3333333333333C353.0666666666667 170.6666666666667 362.6666666666667 180.2666666666667 362.6666666666667 192M448 320H405.3333333333333V128H128V85.3333333333334C128 73.6 137.6 64 149.3333333333333 64H384L469.3333333333333 -21.3333333333333V298.6666666666667C469.3333333333333 310.4 459.7333333333333 320 448 320z" /> + <glyph glyph-name="forward" + unicode="&#xF28D;" + horiz-adv-x="512" d=" M256 277.3333333333334V362.6666666666667L426.6666666666667 192L256 21.3333333333334V106.6666666666667H85.3333333333333V277.3333333333334H256z" /> + <glyph glyph-name="foursquare" + unicode="&#xF28E;" + horiz-adv-x="512" d=" M362.6666666666667 341.3333333333334L353.4933333333334 288C352 283.0933333333334 345.6 277.3333333333334 339.4133333333333 277.3333333333334H256C245.9733333333333 277.3333333333334 233.6 270.5066666666667 233.6 260.48V251.7333333333334C233.6 241.7066666666667 245.9733333333333 234.6666666666667 256 234.6666666666667H325.9733333333333C333.0133333333333 234.6666666666667 339.84 226.9866666666667 338.3466666666667 219.52C336.8533333333333 211.84 318.72 164.6933333333333 317.8666666666666 160C317.0133333333333 156.3733333333333 312.32 149.3333333333334 304 149.3333333333334H242.56C231.4666666666666 149.3333333333334 228.0533333333333 147.84 220.5866666666666 138.6666666666667C213.3333333333333 129.28 155.0933333333333 61.8666666666667 155.0933333333333 61.8666666666667C154.4533333333333 61.2266666666666 149.3333333333333 63.1466666666667 149.3333333333333 64V341.3333333333334C149.3333333333333 347.7333333333334 162.3466666666666 362.6666666666667 170.6666666666666 362.6666666666667H352C358.8266666666667 362.6666666666667 364.3733333333333 349.6533333333333 362.6666666666667 341.3333333333334M362.6666666666667 139.7333333333334C365.0133333333333 149.9733333333334 400.64 304.6400000000001 410.0266666666667 350.9333333333334M375.04 405.3333333333333H147.4133333333333C115.84 405.3333333333333 106.6666666666667 381.6533333333333 106.6666666666667 366.9333333333334V5.12C106.6666666666667 -11.52 115.6266666666667 -17.9200000000001 120.7466666666667 -19.84C125.8666666666667 -21.9733333333334 139.7333333333333 -23.6799999999999 148.0533333333334 -14.08C148.0533333333334 -14.08 248.5333333333334 101.9733333333334 250.4533333333333 103.8933333333334C253.2266666666667 106.6666666666667 253.2266666666667 106.6666666666667 256 106.6666666666667H325.5466666666666C354.7733333333333 106.6666666666667 359.4666666666667 128.0000000000001 362.6666666666667 139.7333333333334C365.0133333333333 149.9733333333334 400.64 304.6400000000001 410.0266666666667 350.9333333333334C417.28 386.3466666666668 408.32 405.3333333333334 375.04 405.3333333333334z" /> + <glyph glyph-name="fridge" + unicode="&#xF28F;" + horiz-adv-x="512" d=" M192 0V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192M149.3333333333333 362.6666666666667V256H362.6666666666667V362.6666666666667H149.3333333333333M149.3333333333333 42.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333V42.6666666666667M170.6666666666667 192H213.3333333333333V128H170.6666666666667V192M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667V320z" /> + <glyph glyph-name="fridge-filled" + unicode="&#xF290;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V256H106.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V234.6666666666667H405.3333333333333V42.6666666666667M170.6666666666667 341.3333333333334V298.6666666666667H213.3333333333333V341.3333333333334H170.6666666666667M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fridge-filled-bottom" + unicode="&#xF291;" + horiz-adv-x="512" d=" M170.6666666666667 277.3333333333334V320H213.3333333333333V277.3333333333334H170.6666666666667M149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0V-21.3333333333333H320V0H192V-21.3333333333333H149.3333333333333V0C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667V256H362.6666666666667V362.6666666666667H149.3333333333333M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fridge-filled-top" + unicode="&#xF292;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333C125.8666666666667 405.3333333333333 106.6666666666667 386.1333333333334 106.6666666666667 362.6666666666667V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0V-21.3333333333333H192V0H320V-21.3333333333333H362.6666666666667V0C386.1333333333334 0 405.3333333333333 19.2 405.3333333333333 42.6666666666667V362.6666666666667C405.3333333333333 386.1333333333334 386.1333333333334 405.3333333333333 362.6666666666667 405.3333333333333H149.3333333333333M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667V320M149.3333333333333 213.3333333333334H362.6666666666667V42.6666666666667H149.3333333333333V213.3333333333334M170.6666666666667 192V128H213.3333333333333V192H170.6666666666667z" /> + <glyph glyph-name="fullscreen" + unicode="&#xF293;" + horiz-adv-x="512" d=" M106.6666666666667 341.3333333333334H213.3333333333333V298.6666666666667H149.3333333333333V234.6666666666667H106.6666666666667V341.3333333333334M298.6666666666667 341.3333333333334H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334M362.6666666666667 149.3333333333334H405.3333333333333V42.6666666666667H298.6666666666667V85.3333333333334H362.6666666666667V149.3333333333334M213.3333333333333 85.3333333333334V42.6666666666667H106.6666666666667V149.3333333333334H149.3333333333333V85.3333333333334H213.3333333333333z" /> + <glyph glyph-name="fullscreen-exit" + unicode="&#xF294;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H405.3333333333333V106.6666666666667H341.3333333333333V42.6666666666667H298.6666666666667V149.3333333333334M106.6666666666667 149.3333333333334H213.3333333333333V42.6666666666667H170.6666666666667V106.6666666666667H106.6666666666667V149.3333333333334M170.6666666666667 341.3333333333334H213.3333333333333V234.6666666666667H106.6666666666667V277.3333333333334H170.6666666666667V341.3333333333334M405.3333333333333 277.3333333333334V234.6666666666667H298.6666666666667V341.3333333333334H341.3333333333333V277.3333333333334H405.3333333333333z" /> + <glyph glyph-name="function" + unicode="&#xF295;" + horiz-adv-x="512" d=" M332.8 335.1466666666667C309.3333333333333 337.28 288.64 320 286.5066666666667 296.32L281.1733333333333 234.6666666666667H341.3333333333333V192H277.3333333333333L267.9466666666667 83.84C263.8933333333333 36.9066666666667 222.5066666666667 2.1333333333334 175.5733333333333 6.4C147.6266666666667 8.7466666666667 124.16 24.3200000000001 110.2933333333333 46.2933333333334L142.2933333333333 78.2933333333334C147.4133333333333 62.5066666666668 161.4933333333334 50.3466666666668 179.2 48.8533333333334C202.6666666666667 46.72 223.36 64.0000000000001 225.4933333333334 87.6800000000001L234.6666666666667 192H170.6666666666667V234.6666666666667H238.2933333333333L244.0533333333333 300.1600000000001C248.1066666666667 347.0933333333334 289.4933333333334 381.8666666666667 336.4266666666666 377.6C364.3733333333333 375.2533333333334 387.84 359.68 401.7066666666666 337.7066666666667L369.7066666666666 305.7066666666667C364.5866666666667 321.4933333333334 350.5066666666667 333.6533333333334 332.8 335.1466666666667z" /> + <glyph glyph-name="gamepad" + unicode="&#xF296;" + horiz-adv-x="512" d=" M352 256L288 192L352 128H469.3333333333333V256M192 96V-21.3333333333333H320V96L256 160M160 256H42.6666666666667V128H160L224 192M320 288V405.3333333333333H192V288L256 224L320 288z" /> + <glyph glyph-name="gamepad-variant" + unicode="&#xF297;" + horiz-adv-x="512" d=" M149.3333333333333 320H362.6666666666667C433.28 320 490.6666666666666 262.6133333333334 490.6666666666666 192S433.28 64 362.6666666666667 64C324.6933333333334 64 290.7733333333333 80.4266666666667 267.3066666666667 106.6666666666667H244.6933333333334C221.2266666666667 80.4266666666667 187.3066666666667 64 149.3333333333334 64C78.72 64 21.3333333333334 121.3866666666667 21.3333333333334 192S78.72 320 149.3333333333334 320M128 256V213.3333333333334H85.3333333333333V170.6666666666667H128V128H170.6666666666667V170.6666666666667H213.3333333333333V213.3333333333334H170.6666666666667V256H128M330.6666666666667 192C312.96 192 298.6666666666667 177.7066666666667 298.6666666666667 160S312.96 128 330.6666666666667 128S362.6666666666667 142.2933333333334 362.6666666666667 160S348.3733333333333 192 330.6666666666667 192M394.6666666666667 256C376.9600000000001 256 362.6666666666667 241.7066666666667 362.6666666666667 224S376.9600000000001 192 394.6666666666667 192S426.6666666666667 206.2933333333334 426.6666666666667 224S412.3733333333333 256 394.6666666666667 256z" /> + <glyph glyph-name="gas-cylinder" + unicode="&#xF647;" + horiz-adv-x="512" d=" M341.3333333333333 256V21.3333333333334C341.3333333333333 -2.1333333333333 322.1333333333334 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C189.8666666666667 -21.3333333333333 170.6666666666667 -2.1333333333333 170.6666666666667 21.3333333333334V256C170.6666666666667 295.68 197.76 329.1733333333334 234.6666666666667 338.56V362.6666666666667H192V405.3333333333333H320V362.6666666666667H277.3333333333333V338.56C314.24 329.1733333333334 341.3333333333333 295.68 341.3333333333333 256z" /> + <glyph glyph-name="gas-station" + unicode="&#xF298;" + horiz-adv-x="512" d=" M384 234.6666666666667C372.2666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256S372.2666666666667 277.3333333333334 384 277.3333333333334S405.3333333333333 267.7333333333334 405.3333333333333 256S395.7333333333334 234.6666666666667 384 234.6666666666667M256 234.6666666666667H128V341.3333333333334H256M421.76 293.76L421.9733333333334 293.9733333333334L342.6133333333334 373.3333333333333L320 350.7200000000001L365.0133333333333 305.7066666666667C344.9600000000001 298.6666666666667 330.6666666666667 278.8266666666667 330.6666666666667 256C330.6666666666667 226.5600000000001 354.56 202.6666666666667 384 202.6666666666667C391.68 202.6666666666667 398.7200000000001 204.3733333333333 405.3333333333333 207.1466666666667V53.3333333333334C405.3333333333333 41.6 395.7333333333334 32 384 32S362.6666666666667 41.6 362.6666666666667 53.3333333333334V149.3333333333334C362.6666666666667 173.0133333333333 343.4666666666667 192 320 192H298.6666666666667V341.3333333333334C298.6666666666667 365.0133333333333 279.4666666666667 384 256 384H128C104.32 384 85.3333333333333 365.0133333333333 85.3333333333333 341.3333333333334V0H298.6666666666667V160H330.6666666666667V53.3333333333334C330.6666666666667 23.8933333333334 354.56 0 384 0S437.3333333333333 23.8933333333334 437.3333333333333 53.3333333333334V256C437.3333333333333 270.7200000000001 431.36 284.1600000000001 421.76 293.76z" /> + <glyph glyph-name="gate" + unicode="&#xF299;" + horiz-adv-x="512" d=" M192 341.3333333333334V234.6666666666667H149.3333333333333V320H106.6666666666667V234.6666666666667H64V277.3333333333334H21.3333333333333V21.3333333333334H64V64H106.6666666666667V21.3333333333334H149.3333333333333V64H192V21.3333333333334H234.6666666666667V64H277.3333333333333V21.3333333333334H320V64H362.6666666666667V21.3333333333334H405.3333333333333V64H448V21.3333333333334H490.6666666666666V277.3333333333334H448V234.6666666666667H405.3333333333333V320H362.6666666666667V234.6666666666667H320V341.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667V341.3333333333334H192M64 192H106.6666666666667V106.6666666666667H64V192M149.3333333333333 192H192V106.6666666666667H149.3333333333333V192M234.6666666666667 192H277.3333333333333V106.6666666666667H234.6666666666667V192M320 192H362.6666666666667V106.6666666666667H320V192M405.3333333333333 192H448V106.6666666666667H405.3333333333333V192z" /> + <glyph glyph-name="gauge" + unicode="&#xF29A;" + horiz-adv-x="512" d=" M369.0666666666667 64C405.3333333333333 96 426.6666666666667 140.8 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667S85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 140.8 106.6666666666667 96 142.9333333333333 64C174.9333333333333 91.7333333333334 213.3333333333333 106.6666666666667 256 106.6666666666667S339.2 91.7333333333334 369.0666666666667 64M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M149.3333333333333 256C161.0666666666667 256 170.6666666666667 246.4000000000001 170.6666666666667 234.6666666666667S161.0666666666667 213.3333333333334 149.3333333333333 213.3333333333334S128 222.9333333333333 128 234.6666666666667S137.6 256 149.3333333333333 256M213.3333333333333 320C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334S192 286.9333333333334 192 298.6666666666667S201.6 320 213.3333333333333 320M362.6666666666667 256C374.4 256 384 246.4000000000001 384 234.6666666666667S374.4 213.3333333333334 362.6666666666667 213.3333333333334S341.3333333333333 222.9333333333333 341.3333333333333 234.6666666666667S350.9333333333333 256 362.6666666666667 256M307.2 317.8666666666667C317.8666666666667 313.6 322.1333333333334 300.8 320 290.1333333333334L290.1333333333334 217.6C294.4 211.2 298.6666666666667 202.6666666666667 298.6666666666667 192.0000000000001C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192.0000000000001C213.3333333333333 213.3333333333334 228.2666666666667 232.5333333333334 249.6 234.6666666666667L279.4666666666667 305.0666666666667C283.7333333333333 317.8666666666667 296.5333333333333 322.1333333333334 307.2 317.8666666666667z" /> + <glyph glyph-name="gavel" + unicode="&#xF29B;" + horiz-adv-x="512" d=" M49.0666666666667 15.36L253.8666666666666 220.16L224 250.4533333333333L208.6399999999999 235.3066666666666C200.3199999999999 226.9866666666666 186.88 226.9866666666666 178.56 235.3066666666666L163.4133333333333 250.4533333333333C155.0933333333333 258.7733333333333 155.0933333333333 272.2133333333333 163.4133333333333 280.5333333333333L284.1599999999999 401.28C292.4799999999999 409.6 305.9199999999999 409.6 314.2399999999999 401.28L329.3866666666666 386.1333333333334C337.7066666666666 377.8133333333333 337.7066666666666 364.3733333333334 329.3866666666666 356.0533333333333L314.2399999999999 341.3333333333333L344.5333333333333 310.8266666666667C352.8533333333333 319.1466666666667 366.2933333333333 319.1466666666667 374.6133333333333 310.8266666666667C382.9333333333333 302.5066666666667 382.9333333333333 288.8533333333333 374.6133333333333 280.5333333333333L404.6933333333333 250.4533333333333L419.84 265.6C428.16 273.92 441.8133333333334 273.92 450.1333333333334 265.6L465.0666666666667 250.4533333333333C473.3866666666667 242.1333333333333 473.3866666666667 228.48 465.0666666666667 220.16L344.5333333333333 99.6266666666667C336.2133333333333 91.3066666666666 322.56 91.3066666666666 314.24 99.6266666666667L299.3066666666666 114.56C290.7733333333333 122.88 290.7733333333333 136.5333333333333 299.3066666666666 144.8533333333333L314.24 160L284.16 190.0799999999999L79.1466666666667 -14.9333333333334C70.8266666666666 -23.2533333333334 57.3866666666666 -23.2533333333334 49.0666666666666 -14.9333333333334C40.7466666666666 -6.6133333333333 40.7466666666666 7.04 49.0666666666666 15.36M426.6666666666667 42.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 23.4666666666667 469.3333333333333 0V-21.3333333333333H256V0C256 23.4666666666667 275.2 42.6666666666667 298.6666666666667 42.6666666666667H426.6666666666667z" /> + <glyph glyph-name="gender-female" + unicode="&#xF29C;" + horiz-adv-x="512" d=" M256 362.6666666666667C326.6133333333334 362.6666666666667 384 305.2800000000001 384 234.6666666666667C384 171.3066666666667 337.92 118.6133333333334 277.3333333333333 108.3733333333333V64H320V21.3333333333334H277.3333333333333V-21.3333333333333H234.6666666666667V21.3333333333334H192V64H234.6666666666667V108.3733333333333C174.08 118.6133333333334 128 171.3066666666667 128 234.6666666666667C128 305.2800000000001 185.3866666666667 362.6666666666667 256 362.6666666666667M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667S208.8533333333333 149.3333333333334 256 149.3333333333334S341.3333333333333 187.52 341.3333333333333 234.6666666666667S303.1466666666667 320 256 320z" /> + <glyph glyph-name="gender-male" + unicode="&#xF29D;" + horiz-adv-x="512" d=" M192 256C219.52 256 245.3333333333333 247.2533333333334 266.0266666666667 232.32L375.04 341.3333333333334H277.3333333333333V384H448V213.3333333333334H405.3333333333333V311.2533333333334L296.32 202.6666666666667C311.2533333333334 181.3333333333334 320 155.7333333333334 320 128C320 57.3866666666667 262.6133333333334 0 192 0S64 57.3866666666667 64 128S121.3866666666667 256 192 256M192 213.3333333333334C144.8533333333333 213.3333333333334 106.6666666666667 175.1466666666667 106.6666666666667 128S144.8533333333333 42.6666666666667 192 42.6666666666667S277.3333333333333 80.8533333333334 277.3333333333333 128S239.1466666666667 213.3333333333334 192 213.3333333333334z" /> + <glyph glyph-name="gender-male-female" + unicode="&#xF29E;" + horiz-adv-x="512" d=" M375.04 362.6666666666667H298.6666666666667V405.3333333333333H448V256H405.3333333333333V332.5866666666667L323.6266666666667 250.88C334.72 234.0266666666667 341.3333333333333 213.3333333333334 341.3333333333333 192C341.3333333333333 140.3733333333333 304.64 97.28 256 87.4666666666667V42.6666666666667H298.6666666666667V0H256V-42.6666666666666H213.3333333333333V0H170.6666666666667V42.6666666666667H213.3333333333333V87.4666666666667C164.6933333333333 97.2800000000001 128 140.3733333333334 128 192.0000000000001C128 250.8800000000001 175.7866666666667 298.6666666666668 234.6666666666667 298.6666666666668C256 298.6666666666668 276.48 292.2666666666667 293.3333333333333 280.9600000000001L375.04 362.6666666666667M234.6666666666667 256C199.2533333333333 256 170.6666666666667 227.4133333333334 170.6666666666667 192S199.2533333333333 128 234.6666666666667 128S298.6666666666667 156.5866666666667 298.6666666666667 192S270.08 256 234.6666666666667 256z" /> + <glyph glyph-name="gender-transgender" + unicode="&#xF29F;" + horiz-adv-x="512" d=" M417.7066666666666 384H320V426.6666666666667H490.6666666666666V256H448V353.92L344.9600000000001 250.88C356.0533333333334 234.0266666666667 362.6666666666667 213.3333333333334 362.6666666666667 192C362.6666666666667 140.3733333333333 325.9733333333333 97.28 277.3333333333333 87.4666666666667V42.6666666666667H320V0H277.3333333333333V-42.6666666666666H234.6666666666667V0H192V42.6666666666667H234.6666666666667V87.4666666666667C186.0266666666667 97.2800000000001 149.3333333333333 140.3733333333334 149.3333333333333 192.0000000000001C149.3333333333333 213.3333333333334 155.7333333333333 233.8133333333334 166.8266666666667 250.4533333333334L141.6533333333333 275.8400000000001L111.7866666666667 246.1866666666667L81.7066666666667 276.48L111.5733333333333 306.1333333333334L64 353.7066666666667V277.3333333333334H21.3333333333333V426.6666666666667H170.6666666666667V384H94.08L141.6533333333333 336.2133333333334L172.3733333333333 366.7200000000001L202.6666666666667 336.4266666666667L171.9466666666667 305.92L196.9066666666667 280.7466666666667C213.3333333333333 292.0533333333334 234.6666666666667 298.6666666666667 256 298.6666666666667S297.8133333333334 292.2666666666667 314.6666666666667 280.9600000000001L417.7066666666666 384M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256z" /> + <glyph glyph-name="ghost" + unicode="&#xF2A0;" + horiz-adv-x="512" d=" M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334V-21.3333333333333L128 42.6666666666667L192 -21.3333333333333L256 42.6666666666667L320 -21.3333333333333L384 42.6666666666667L448 -21.3333333333333V213.3333333333334C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333M192 277.3333333333334C215.4666666666667 277.3333333333334 234.6666666666667 258.1333333333334 234.6666666666667 234.6666666666667S215.4666666666667 192 192 192S149.3333333333333 211.2 149.3333333333333 234.6666666666667S168.5333333333333 277.3333333333334 192 277.3333333333334M320 277.3333333333334C343.4666666666667 277.3333333333334 362.6666666666667 258.1333333333334 362.6666666666667 234.6666666666667S343.4666666666667 192 320 192S277.3333333333333 211.2 277.3333333333333 234.6666666666667S296.5333333333333 277.3333333333334 320 277.3333333333334z" /> + <glyph glyph-name="gift" + unicode="&#xF2A1;" + horiz-adv-x="512" d=" M469.3333333333333 192V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V192C30.9333333333333 192 21.3333333333333 201.6 21.3333333333333 213.3333333333334V277.3333333333334C21.3333333333333 300.8 40.5333333333333 320 64 320H131.6266666666667C129.28 326.6133333333334 128 333.8666666666667 128 341.3333333333334C128 376.7466666666667 156.5866666666667 405.3333333333333 192 405.3333333333333C213.3333333333333 405.3333333333333 232.1066666666667 394.6666666666667 243.84 378.88V379.0933333333334L256 362.6666666666667L268.16 379.0933333333334V378.88C279.8933333333333 394.6666666666667 298.6666666666667 405.3333333333333 320 405.3333333333333C355.4133333333333 405.3333333333333 384 376.7466666666667 384 341.3333333333334C384 333.8666666666667 382.7200000000001 326.6133333333334 380.3733333333333 320H448C471.4666666666667 320 490.6666666666666 300.8 490.6666666666666 277.3333333333334V213.3333333333334C490.6666666666666 201.6 481.0666666666667 192 469.3333333333333 192M85.3333333333333 21.3333333333334H234.6666666666667V192H85.3333333333333V21.3333333333334M426.6666666666667 21.3333333333334V192H277.3333333333333V21.3333333333334H426.6666666666667M192 362.6666666666667C180.2666666666667 362.6666666666667 170.6666666666667 353.0666666666667 170.6666666666667 341.3333333333334S180.2666666666667 320 192 320S213.3333333333333 329.6 213.3333333333333 341.3333333333334S203.7333333333334 362.6666666666667 192 362.6666666666667M320 362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334S308.2666666666667 320 320 320S341.3333333333333 329.6 341.3333333333333 341.3333333333334S331.7333333333334 362.6666666666667 320 362.6666666666667M64 277.3333333333334V234.6666666666667H234.6666666666667V277.3333333333334H64M277.3333333333333 277.3333333333334V234.6666666666667H448V277.3333333333334H277.3333333333333z" /> + <glyph glyph-name="git" + unicode="&#xF2A2;" + horiz-adv-x="512" d=" M55.4666666666667 222.08L178.7733333333334 345.6L214.8266666666667 309.3333333333334C209.7066666666667 291.2000000000001 218.0266666666667 271.36 234.6666666666667 261.76V143.5733333333334C221.8666666666667 136.3200000000001 213.3333333333333 122.4533333333334 213.3333333333333 106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64S298.6666666666667 83.2 298.6666666666667 106.6666666666667C298.6666666666667 122.4533333333334 290.1333333333334 136.3200000000001 277.3333333333333 143.5733333333334V247.2533333333334L321.4933333333334 202.6666666666667C320 199.4666666666667 320 195.84 320 192C320 168.5333333333334 339.2 149.3333333333334 362.6666666666667 149.3333333333334S405.3333333333333 168.5333333333334 405.3333333333333 192S386.1333333333334 234.6666666666667 362.6666666666667 234.6666666666667C358.8266666666667 234.6666666666667 355.2 234.6666666666667 352 233.1733333333334L297.1733333333333 288C302.72 307.8400000000001 292.48 329.6 272.64 337.92C263.4666666666667 341.3333333333334 253.8666666666666 342.1866666666667 245.3333333333333 339.8400000000001L209.0666666666667 375.8933333333333L225.92 392.5333333333334C242.56 409.3866666666667 269.44 409.3866666666667 286.08 392.5333333333334L456.5333333333333 222.08C473.3866666666666 205.44 473.3866666666666 178.5600000000001 456.5333333333333 161.92L286.08 -8.5333333333333C269.44 -25.3866666666666 242.56 -25.3866666666666 225.92 -8.5333333333333L55.4666666666667 161.92C38.6133333333333 178.56 38.6133333333333 205.44 55.4666666666667 222.08z" /> + <glyph glyph-name="github-box" + unicode="&#xF2A3;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H316.8C309.3333333333333 -19.6266666666667 309.3333333333333 -5.1199999999999 309.3333333333333 0V58.4533333333334C309.3333333333333 78.2933333333334 302.2933333333333 91.3066666666667 294.6133333333334 97.9200000000001C342.1866666666666 103.2533333333335 392.1066666666667 121.1733333333334 392.1066666666667 202.6666666666668C392.1066666666667 226.3466666666668 384.0000000000001 245.3333333333335 370.1333333333334 260.4800000000002C372.2666666666667 265.8133333333335 379.7333333333334 288.0000000000001 368 316.8000000000002C368 316.8000000000002 350.08 322.5600000000001 309.3333333333333 295.0400000000002C292.48 299.7333333333335 274.1333333333334 302.0800000000002 256 302.0800000000002C237.8666666666667 302.0800000000002 219.52 299.7333333333335 202.6666666666667 295.0400000000002C161.92 322.5600000000001 144 316.8000000000002 144 316.8000000000002C132.2666666666667 288.0000000000001 139.7333333333333 265.8133333333335 141.8666666666667 260.4800000000002C128 245.3333333333335 119.8933333333333 226.3466666666668 119.8933333333333 202.6666666666668C119.8933333333333 121.3866666666668 169.6 103.0400000000001 216.96 97.7066666666668C210.9866666666667 92.3733333333335 205.44 82.9866666666668 203.52 69.1200000000001C191.36 64.0000000000002 160 54.4000000000001 141.44 86.8266666666668C141.44 86.8266666666668 130.1333333333333 107.3066666666668 108.8 108.8000000000001C108.8 108.8000000000001 87.8933333333333 109.2266666666668 106.6666666666666 96.0000000000001C106.6666666666666 96.0000000000001 121.1733333333333 89.3866666666668 130.9866666666666 64.6400000000001C130.9866666666666 64.6400000000001 143.5733333333333 23.2533333333334 202.6666666666666 36.0533333333335V0C202.6666666666666 -5.1199999999999 202.6666666666666 -19.6266666666667 194.9866666666666 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="github-circle" + unicode="&#xF2A4;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192C42.6666666666667 97.7066666666667 103.8933333333333 17.7066666666667 188.5866666666667 -10.6666666666666C199.2533333333333 -12.3733333333333 202.6666666666667 -5.76 202.6666666666667 0V36.0533333333334C143.5733333333333 23.2533333333333 130.9866666666667 64.64 130.9866666666667 64.64C121.1733333333334 89.3866666666667 107.3066666666667 96 107.3066666666667 96C87.8933333333333 109.2266666666667 108.8 108.8 108.8 108.8C130.1333333333333 107.3066666666667 141.44 86.8266666666667 141.44 86.8266666666667C160 54.4 191.36 64 203.52 69.1200000000001C205.44 82.9866666666667 210.9866666666667 92.3733333333334 216.96 97.7066666666667C169.6 103.0400000000001 119.8933333333334 121.3866666666667 119.8933333333334 202.6666666666667C119.8933333333334 226.3466666666667 128 245.3333333333334 141.8666666666667 260.48C139.7333333333334 265.8133333333334 132.2666666666667 288 144 316.8000000000001C144 316.8000000000001 161.92 322.5600000000001 202.6666666666667 295.0400000000001C219.5200000000001 299.7333333333334 237.8666666666667 302.0800000000001 256 302.0800000000001C274.1333333333334 302.0800000000001 292.48 299.7333333333334 309.3333333333334 295.0400000000001C350.08 322.5600000000001 368 316.8000000000001 368 316.8000000000001C379.7333333333334 288.0000000000001 372.2666666666667 265.8133333333334 370.1333333333334 260.48C384 245.3333333333334 392.1066666666667 226.3466666666667 392.1066666666667 202.6666666666667C392.1066666666667 121.1733333333334 342.1866666666667 103.2533333333333 294.6133333333334 97.92C302.2933333333334 91.3066666666667 309.3333333333334 78.2933333333333 309.3333333333334 58.4533333333333V0C309.3333333333334 -5.76 312.7466666666667 -12.5866666666666 323.6266666666667 -10.6666666666666C408.32 17.92 469.3333333333333 97.7066666666667 469.3333333333333 192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="glass-flute" + unicode="&#xF2A5;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C334.2933333333333 341.3333333333334 327.04 277.3333333333334 314.6666666666667 238.2933333333334C302.2933333333333 199.04 284.3733333333334 184.96 275.6266666666667 147.6266666666667C266.6666666666667 110.2933333333334 266.6666666666667 49.7066666666667 279.04 21.3333333333334C291.6266666666667 -7.04 316.3733333333334 -3.6266666666667 328.96 -5.3333333333333C341.3333333333333 -7.04 341.3333333333333 -14.2933333333333 341.3333333333333 -21.3333333333333H170.6666666666667C170.6666666666667 -14.2933333333333 170.6666666666667 -7.04 183.04 -5.3333333333333C195.6266666666667 -3.6266666666667 220.3733333333333 -7.04 232.96 21.3333333333334C245.3333333333333 49.7066666666667 245.3333333333333 110.2933333333334 236.3733333333334 147.6266666666667C227.6266666666667 184.96 209.7066666666667 199.04 197.3333333333333 238.2933333333334C184.96 277.3333333333334 177.7066666666667 341.3333333333334 170.6666666666667 405.3333333333333M213.3333333333333 362.6666666666667C214.8266666666667 340.6933333333334 216.5333333333333 318.5066666666667 218.4533333333333 298.6666666666667H293.5466666666666C295.4666666666667 318.5066666666667 297.1733333333333 340.6933333333334 298.6666666666667 362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="glass-mug" + unicode="&#xF2A6;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V298.6666666666667H384V362.6666666666667H213.3333333333333M170.6666666666667 405.3333333333333H448V384L426.6666666666667 362.6666666666667V21.3333333333334L448 0V-21.3333333333333H149.3333333333333V0L170.6666666666667 21.3333333333334V51.2L89.6 88.96C74.6666666666667 96 64 110.5066666666667 64 128V277.3333333333334C64 300.8 83.2 320 106.6666666666667 320H170.6666666666667V362.6666666666667L149.3333333333333 384V405.3333333333333H170.6666666666667M106.6666666666667 128L170.6666666666667 98.3466666666667V277.3333333333334H106.6666666666667V128z" /> + <glyph glyph-name="glass-stange" + unicode="&#xF2A7;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333V-21.3333333333333H170.6666666666667V405.3333333333333M213.3333333333333 362.6666666666667V298.6666666666667H298.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="glass-tulip" + unicode="&#xF2A8;" + horiz-adv-x="512" d=" M170.6666666666667 405.3333333333333H341.3333333333333C334.2933333333333 391.04 327.04 376.9600000000001 332.3733333333334 341.3333333333334C337.7066666666667 305.7066666666667 355.6266666666667 248.96 346.6666666666667 218.88C337.7066666666667 189.0133333333333 302.2933333333333 186.0266666666667 284.3733333333334 152.3200000000001C266.6666666666667 118.6133333333334 266.6666666666667 53.9733333333334 279.04 23.4666666666667C291.6266666666667 -7.04 316.3733333333334 -3.6266666666666 328.96 -5.3333333333333C341.3333333333333 -7.04 341.3333333333333 -14.2933333333333 341.3333333333333 -21.3333333333333H170.6666666666667C170.6666666666667 -14.2933333333333 170.6666666666667 -7.04 183.04 -5.3333333333333C195.6266666666667 -3.6266666666667 220.3733333333333 -7.04 232.96 23.4666666666667C245.3333333333333 53.9733333333334 245.3333333333333 118.6133333333334 227.6266666666667 152.3200000000001C209.7066666666667 186.0266666666667 174.2933333333333 189.0133333333334 165.3333333333333 218.8800000000001C156.3733333333333 248.9600000000001 174.2933333333333 305.7066666666667 179.6266666666667 341.3333333333334C184.96 376.9600000000001 177.7066666666667 391.04 170.6666666666667 405.3333333333334M213.3333333333333 362.6666666666668C213.3333333333333 337.2800000000001 209.7066666666667 316.3733333333334 205.6533333333333 298.6666666666668H304.4266666666666C301.44 316.3733333333334 298.6666666666667 337.2800000000001 298.6666666666667 362.6666666666668H213.3333333333333z" /> + <glyph glyph-name="glassdoor" + unicode="&#xF2A9;" + horiz-adv-x="512" d=" M384 320H341.3333333333333V128C341.3333333333333 106.6666666666667 337.4933333333334 93.0133333333333 320 86.4L202.6666666666667 42.6666666666667V320C202.6666666666667 334.9333333333334 207.7866666666667 360.5333333333334 234.6666666666667 357.5466666666667L384 341.3333333333334V367.1466666666667L192 402.9866666666667C184.32 404.48 178.3466666666666 405.3333333333333 170.6666666666667 405.3333333333333C143.36 405.3333333333333 128 388.6933333333334 128 362.6666666666667V13.44C128 -20.2666666666667 157.2266666666667 -26.88 170.6666666666667 -21.3333333333333L362.6666666666667 57.1733333333334C384 65.92 384 85.3333333333334 384 106.6666666666667V320z" /> + <glyph glyph-name="glasses" + unicode="&#xF2AA;" + horiz-adv-x="512" d=" M64 234.6666666666667C58.88 234.6666666666667 54.4 232.7466666666667 51.4133333333333 229.3333333333334C48.4266666666667 226.1333333333334 47.1466666666667 221.44 47.7866666666667 216.32L58.4533333333333 152.5333333333334C60.16 138.6666666666667 72.5333333333333 128 85.3333333333333 128H149.3333333333333C162.9866666666667 128 178.3466666666666 139.9466666666667 181.3333333333333 153.1733333333334L203.9466666666667 221.2266666666667C204.8 224 204.16 228.0533333333334 202.6666666666667 230.6133333333333C200.32 233.1733333333333 196.6933333333333 234.6666666666667 192 234.6666666666667H64M149.3333333333333 85.3333333333334H85.3333333333333C50.7733333333333 85.3333333333334 20.48 112.2133333333334 16.2133333333333 146.3466666666667L5.5466666666667 210.1333333333333C3.2 228.2666666666667 8.32 245.3333333333334 19.4133333333333 257.7066666666667C30.5066666666667 270.0800000000001 46.72 277.3333333333334 64 277.3333333333334H192C209.7066666666667 277.3333333333334 225.7066666666667 269.8666666666667 235.9466666666667 256.8533333333334C238.2933333333333 253.6533333333333 240.4266666666667 250.24 242.1333333333334 246.4C251.3066666666667 248.32 260.6933333333333 248.32 269.6533333333333 246.4C271.36 250.24 273.4933333333334 253.6533333333333 276.0533333333334 256.8533333333334C286.08 269.8666666666667 302.08 277.3333333333334 320 277.3333333333334H448C465.28 277.3333333333334 481.4933333333333 270.0800000000001 492.5866666666666 257.7066666666667C503.4666666666667 245.3333333333334 508.5866666666666 228.2666666666667 506.4533333333333 210.9866666666667L495.5733333333333 145.4933333333334C491.52 112.2133333333334 461.0133333333333 85.3333333333334 426.6666666666667 85.3333333333334H362.6666666666667C329.3866666666667 85.3333333333334 296.96 110.72 288.8533333333333 142.9333333333333L269.6533333333333 200.7466666666667C261.5466666666666 206.72 250.24 206.72 242.1333333333333 200.7466666666667L222.5066666666666 141.4400000000001C214.8266666666667 110.5066666666667 182.6133333333334 85.3333333333334 149.3333333333333 85.3333333333334M320 234.6666666666667C315.3066666666666 234.6666666666667 311.68 233.1733333333334 309.3333333333333 230.6133333333334C307.6266666666667 228.0533333333334 307.2 224 308.2666666666667 219.7333333333334L329.8133333333333 154.6666666666667C333.6533333333333 139.9466666666667 349.0133333333333 128 362.6666666666667 128H426.6666666666667C439.2533333333334 128 451.84 138.6666666666667 453.3333333333333 151.68L464.2133333333334 217.1733333333334C464.8533333333334 221.44 463.5733333333333 226.1333333333334 460.5866666666666 229.3333333333334C457.6 232.7466666666667 453.1199999999999 234.6666666666667 448 234.6666666666667H320z" /> + <glyph glyph-name="gmail" + unicode="&#xF2AB;" + horiz-adv-x="512" d=" M426.6666666666667 64H384V250.6666666666667L256 170.6666666666667L128 250.6666666666667V64H85.3333333333333V320H110.9333333333333L256 229.3333333333334L401.0666666666667 320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="gnome" + unicode="&#xF2AC;" + horiz-adv-x="512" d=" M392.9600000000001 405.3333333333333C304.2133333333334 405.3333333333333 288 278.8266666666667 337.4933333333334 278.8266666666667C387.4133333333334 278.8266666666667 481.7066666666667 405.3333333333333 392.9600000000001 405.3333333333333M256 389.76C254.2933333333333 389.76 252.8 389.76 251.3066666666667 389.5466666666667C201.3866666666667 383.1466666666667 218.88 296.1066666666667 245.3333333333333 294.6133333333334C271.36 292.9066666666667 299.52 389.76 256 389.76M169.1733333333333 355.4133333333334C166.6133333333333 355.4133333333334 163.6266666666667 354.7733333333333 160.64 353.4933333333334C120.5333333333333 336.8533333333334 154.4533333333333 268.5866666666667 177.0666666666666 273.0666666666667C197.76 277.3333333333334 200.32 356.2666666666667 169.1733333333333 355.4133333333334M105.1733333333333 301.8666666666667C101.76 302.0800000000001 97.92 300.8 94.08 298.0266666666667C61.8666666666666 275.8400000000001 104.7466666666666 222.2933333333334 123.7333333333333 230.6133333333334C140.16 237.8666666666667 129.7066666666666 301.0133333333333 105.1733333333333 301.8666666666667M283.5199999999999 260.9066666666667C215.4666666666666 260.2666666666667 128.6399999999999 225.7066666666667 113.4933333333333 158.0800000000001C96.64 82.9866666666667 182.6133333333334 -21.3333333333333 272.2133333333333 -21.3333333333333C316.3733333333334 -21.3333333333333 367.1466666666667 18.5600000000001 376.7466666666667 68.9066666666667C384 107.3066666666667 291.2 91.9466666666667 294.6133333333334 66.5600000000001C298.6666666666667 36.0533333333334 272.2133333333333 21.3333333333334 246.4 40.5333333333334C164.0533333333334 103.2533333333335 382.5066666666667 134.4000000000001 368 219.9466666666667C363.3066666666667 247.6800000000001 327.2533333333334 261.1200000000001 283.52 260.9066666666668z" /> + <glyph glyph-name="google" + unicode="&#xF2AD;" + horiz-adv-x="512" d=" M455.4666666666667 211.2H259.8400000000001V152.96H398.7200000000001C391.6800000000001 71.68 324.0533333333334 36.9066666666667 260.0533333333334 36.9066666666667C178.3466666666666 36.9066666666667 106.6666666666667 101.3333333333334 106.6666666666667 192C106.6666666666667 279.4666666666667 174.9333333333333 347.0933333333334 260.2666666666667 347.0933333333334C326.1866666666666 347.0933333333334 364.8 305.0666666666667 364.8 305.0666666666667L405.3333333333333 347.3066666666667S353.28 405.3333333333333 258.1333333333334 405.3333333333333C136.96 405.3333333333333 43.3066666666667 302.9333333333334 43.3066666666667 192C43.3066666666667 84.2666666666667 131.4133333333333 -21.3333333333333 261.3333333333333 -21.3333333333333C375.4666666666667 -21.3333333333333 458.6666666666666 56.96 458.6666666666666 172.5866666666667C458.6666666666666 197.12 455.4666666666667 211.2 455.4666666666667 211.2z" /> + <glyph glyph-name="google-cardboard" + unicode="&#xF2AE;" + horiz-adv-x="512" d=" M442.4533333333333 320H68.2666666666667C54.4 320 42.6666666666667 307.8400000000001 42.6666666666667 292.9066666666667V69.76C42.6666666666667 54.8266666666667 54.4 42.6666666666667 68.9066666666667 42.6666666666667H170.6666666666667C182.1866666666667 42.6666666666667 192 49.4933333333333 195.4133333333333 59.52L225.0666666666667 133.5466666666667C230.1866666666667 145.92 242.1333333333334 154.6666666666667 256 154.6666666666667C269.8666666666667 154.6666666666667 281.8133333333334 145.92 286.9333333333333 133.5466666666667L316.5866666666667 59.52C320.64 49.4933333333333 329.8133333333333 42.6666666666667 340.2666666666667 42.6666666666667H442.4533333333333C457.6 42.6666666666667 469.3333333333333 54.8266666666667 469.3333333333333 69.76V292.9066666666667C469.3333333333333 307.8400000000001 457.6 320 442.4533333333333 320M154.0266666666667 136.96C128 136.96 106.6666666666667 158.9333333333333 106.6666666666667 185.8133333333334C106.6666666666667 213.3333333333334 128 234.6666666666667 154.0266666666667 234.6666666666667C180.0533333333333 234.6666666666667 201.1733333333333 213.3333333333334 201.1733333333333 185.8133333333334C201.1733333333333 158.9333333333334 180.0533333333333 136.96 154.0266666666667 136.96M357.9733333333334 136.96C331.9466666666667 136.96 310.8266666666667 158.9333333333334 310.8266666666667 185.8133333333334S331.9466666666667 234.6666666666667 357.9733333333334 234.6666666666667S405.3333333333333 212.6933333333334 405.3333333333333 185.8133333333334S384 136.96 357.9733333333334 136.96z" /> + <glyph glyph-name="google-chrome" + unicode="&#xF2AF;" + horiz-adv-x="512" d=" M256 21.3333333333334L329.8133333333334 149.3333333333334H329.6C336.8533333333334 162.1333333333333 341.3333333333333 176.4266666666667 341.3333333333333 192C341.3333333333333 217.6 329.8133333333334 240.4266666666667 311.8933333333333 256H414.08C422.1866666666666 236.1600000000001 426.6666666666667 214.6133333333334 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334M85.3333333333333 192C85.3333333333333 223.1466666666667 93.6533333333333 252.1600000000001 108.16 277.3333333333334L182.1866666666667 149.3333333333334H182.4C197.12 123.9466666666667 224 106.6666666666667 256 106.6666666666667C265.6 106.6666666666667 274.7733333333333 108.5866666666667 283.52 111.5733333333334L232.32 23.2533333333333C149.3333333333333 34.7733333333333 85.3333333333333 105.8133333333334 85.3333333333333 192M320 192C320 156.5866666666667 291.4133333333333 128 256 128S192 156.5866666666667 192 192S220.5866666666667 256 256 256S320 227.4133333333334 320 192M256 362.6666666666667C319.1466666666667 362.6666666666667 374.1866666666666 328.32 403.6266666666667 277.3333333333334H256C214.6133333333334 277.3333333333334 180.2666666666667 247.8933333333334 172.3733333333333 208.8533333333333L121.6 296.9600000000001C152.7466666666667 336.8533333333334 201.3866666666667 362.6666666666667 256 362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="google-circles" + unicode="&#xF2B0;" + horiz-adv-x="512" d=" M355.4133333333333 128H362.6666666666667C384 128 405.3333333333333 132.2666666666667 423.8933333333333 139.52C408.9600000000001 48.4266666666667 330.0266666666667 -21.3333333333333 234.6666666666667 -21.3333333333333C128 -21.3333333333333 42.6666666666667 64.64 42.6666666666667 170.6666666666667C42.6666666666667 266.0266666666667 112.4266666666667 344.9600000000001 203.5200000000001 359.8933333333333C196.2666666666667 341.3333333333334 192 320 192 298.6666666666667V291.4133333333334C142.5066666666667 273.92 106.6666666666667 226.5600000000001 106.6666666666667 170.6666666666667C106.6666666666667 100.0533333333334 164.0533333333333 42.6666666666667 234.6666666666667 42.6666666666667C290.56 42.6666666666667 337.92 78.5066666666667 355.4133333333333 128M362.6666666666667 234.6666666666667C398.08 234.6666666666667 426.6666666666667 263.2533333333334 426.6666666666667 298.6666666666667S398.08 362.6666666666667 362.6666666666667 362.6666666666667S298.6666666666667 334.0800000000001 298.6666666666667 298.6666666666667S327.2533333333334 234.6666666666667 362.6666666666667 234.6666666666667M362.6666666666667 426.6666666666667C433.28 426.6666666666667 490.6666666666666 369.28 490.6666666666666 298.6666666666667S433.28 170.6666666666667 362.6666666666667 170.6666666666667S234.6666666666667 228.0533333333334 234.6666666666667 298.6666666666667C234.6666666666667 369.4933333333334 292.0533333333333 426.6666666666667 362.6666666666667 426.6666666666667z" /> + <glyph glyph-name="google-circles-communities" + unicode="&#xF2B1;" + horiz-adv-x="512" d=" M320 192C296.32 192 277.3333333333333 173.0133333333333 277.3333333333333 149.3333333333334C277.3333333333333 125.8666666666667 296.5333333333333 106.6666666666667 320 106.6666666666667S362.6666666666667 125.8666666666667 362.6666666666667 149.3333333333334C362.6666666666667 173.0133333333333 343.4666666666667 192 320 192M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M298.6666666666667 256C298.6666666666667 279.68 279.4666666666667 298.6666666666667 256 298.6666666666667C232.32 298.6666666666667 213.3333333333333 279.68 213.3333333333333 256C213.3333333333333 232.5333333333334 232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 232.5333333333334 298.6666666666667 256M192 192C168.5333333333333 192 149.3333333333333 172.8 149.3333333333333 149.3333333333334S168.5333333333333 106.6666666666667 192 106.6666666666667S234.6666666666667 125.8666666666667 234.6666666666667 149.3333333333334C234.6666666666667 173.0133333333333 215.4666666666667 192 192 192z" /> + <glyph glyph-name="google-circles-extended" + unicode="&#xF2B2;" + horiz-adv-x="512" d=" M384 42.6666666666667C360.32 42.6666666666667 341.3333333333333 61.8666666666667 341.3333333333333 85.3333333333334C341.3333333333333 109.0133333333333 360.32 128 384 128C407.4666666666667 128 426.6666666666667 108.8 426.6666666666667 85.3333333333334S407.4666666666667 42.6666666666667 384 42.6666666666667M384 170.6666666666667C336.8533333333333 170.6666666666667 298.6666666666667 132.48 298.6666666666667 85.3333333333334S336.8533333333333 0 384 0S469.3333333333333 38.1866666666667 469.3333333333333 85.3333333333334S431.1466666666667 170.6666666666667 384 170.6666666666667M256 211.2C233.6 211.2 215.4666666666667 193.0666666666667 215.4666666666667 170.6666666666667C215.4666666666667 148.2666666666667 233.6 130.1333333333333 256 130.1333333333333C278.4 130.1333333333333 296.5333333333333 148.2666666666667 296.5333333333333 170.6666666666667C296.5333333333333 193.0666666666667 278.4 211.2 256 211.2M128 42.6666666666667C104.32 42.6666666666667 85.3333333333333 61.8666666666667 85.3333333333333 85.3333333333334C85.3333333333333 109.0133333333333 104.32 128 128 128C151.4666666666667 128 170.6666666666667 108.8 170.6666666666667 85.3333333333334S151.4666666666667 42.6666666666667 128 42.6666666666667M128 170.6666666666667C80.8533333333333 170.6666666666667 42.6666666666667 132.48 42.6666666666667 85.3333333333334S80.8533333333333 0 128 0S213.3333333333333 38.1866666666667 213.3333333333333 85.3333333333334S175.1466666666667 170.6666666666667 128 170.6666666666667M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334C232.32 277.3333333333334 213.3333333333333 296.5333333333334 213.3333333333333 320C213.3333333333333 343.68 232.32 362.6666666666667 256 362.6666666666667M256 234.6666666666667C303.1466666666667 234.6666666666667 341.3333333333333 272.8533333333334 341.3333333333333 320S303.1466666666667 405.3333333333333 256 405.3333333333333S170.6666666666667 367.1466666666667 170.6666666666667 320S208.8533333333333 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="google-circles-group" + unicode="&#xF2B3;" + horiz-adv-x="512" d=" M106.6666666666667 234.6666666666667C83.2 234.6666666666667 64 215.4666666666667 64 192C64 168.3200000000001 83.2 149.3333333333334 106.6666666666667 149.3333333333334C130.3466666666667 149.3333333333334 149.3333333333333 168.3200000000001 149.3333333333333 192C149.3333333333333 215.4666666666667 130.1333333333333 234.6666666666667 106.6666666666667 234.6666666666667M106.6666666666667 106.6666666666667C59.52 106.6666666666667 21.3333333333333 144.8533333333334 21.3333333333333 192S59.52 277.3333333333334 106.6666666666667 277.3333333333334S192 239.1466666666667 192 192S153.8133333333333 106.6666666666667 106.6666666666667 106.6666666666667M224 213.3333333333334H298.6666666666667V277.3333333333334L384 192L298.6666666666667 106.6666666666667V170.6666666666667H224V213.3333333333334M106.6666666666667 320C97.0666666666667 320 87.68 318.9333333333334 78.72 317.0133333333333C120.1066666666667 382.9333333333334 193.7066666666667 426.6666666666667 277.3333333333333 426.6666666666667C407.04 426.6666666666667 512 321.7066666666667 512 192S407.04 -42.6666666666666 277.3333333333333 -42.6666666666666C193.7066666666667 -42.6666666666666 120.1066666666667 1.0666666666667 78.72 66.9866666666667C87.68 65.0666666666667 97.0666666666667 64 106.6666666666667 64C123.7333333333333 64 139.9466666666667 67.4133333333334 154.6666666666667 73.3866666666667C185.8133333333333 41.1733333333333 229.12 21.3333333333334 277.3333333333333 21.3333333333334C371.6266666666667 21.3333333333334 448 97.7066666666667 448 192S371.6266666666667 362.6666666666667 277.3333333333333 362.6666666666667C229.12 362.6666666666667 185.8133333333333 342.8266666666667 154.6666666666667 310.6133333333334C139.9466666666667 316.5866666666667 123.7333333333333 320 106.6666666666667 320z" /> + <glyph glyph-name="google-controller" + unicode="&#xF2B4;" + horiz-adv-x="512" d=" M170.0266666666667 106.6666666666667L106.6666666666667 42.6666666666667C99.6266666666667 36.2666666666667 90.24 32 80 32C59.3066666666667 32 42.6666666666667 48.64 42.6666666666667 69.3333333333334V74.6666666666667L64 232.1066666666667C68.48 281.3866666666667 109.6533333333333 320 160 320H352C402.3466666666667 320 443.52 281.3866666666667 448 232.1066666666667L469.3333333333333 74.6666666666667V69.3333333333334C469.3333333333333 48.64 452.6933333333333 32 432 32C421.76 32 412.3733333333333 36.2666666666667 405.3333333333333 42.6666666666667L341.9733333333334 106.6666666666667H170.0266666666667M149.3333333333333 277.3333333333334V234.6666666666667H106.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667V213.3333333333334H213.3333333333333V234.6666666666667H170.6666666666667V277.3333333333334H149.3333333333333M352 277.3333333333334C343.2533333333334 277.3333333333334 336 270.0800000000001 336 261.3333333333334S343.2533333333334 245.3333333333334 352 245.3333333333334S368 252.5866666666667 368 261.3333333333334S360.7466666666667 277.3333333333334 352 277.3333333333334M314.6666666666667 240C305.92 240 298.6666666666667 232.7466666666667 298.6666666666667 224S305.92 208 314.6666666666667 208S330.6666666666667 215.2533333333333 330.6666666666667 224S323.4133333333333 240 314.6666666666667 240M389.3333333333333 240C380.5866666666667 240 373.3333333333333 232.7466666666667 373.3333333333333 224S380.5866666666667 208 389.3333333333333 208S405.3333333333333 215.2533333333333 405.3333333333333 224S398.08 240 389.3333333333333 240M352 202.6666666666667C343.2533333333334 202.6666666666667 336 195.4133333333334 336 186.6666666666667S343.2533333333334 170.6666666666667 352 170.6666666666667S368 177.92 368 186.6666666666667S360.7466666666667 202.6666666666667 352 202.6666666666667z" /> + <glyph glyph-name="google-controller-off" + unicode="&#xF2B5;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L271.5733333333333 106.6666666666667H170.0266666666667L106.6666666666667 42.6666666666667C99.6266666666667 36.2666666666667 90.24 32 80 32C59.3066666666667 32 42.6666666666667 48.64 42.6666666666667 69.3333333333334V74.6666666666667L64 232.1066666666667C66.1333333333333 254.08 75.3066666666667 273.7066666666667 89.3866666666667 288.8533333333334L42.6666666666667 335.5733333333334M106.6666666666667 234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H170.6666666666667V207.5733333333334L143.5733333333333 234.6666666666667H106.6666666666667M352 320C402.3466666666667 320 443.52 281.3866666666667 448 232.1066666666667L469.3333333333333 74.6666666666667V69.3333333333334C469.3333333333333 55.2533333333333 461.6533333333333 42.6666666666667 450.1333333333334 36.6933333333333L166.8266666666667 320H352M352 277.3333333333334C343.2533333333334 277.3333333333334 336 270.0800000000001 336 261.3333333333334S343.2533333333334 245.3333333333334 352 245.3333333333334S368 252.5866666666667 368 261.3333333333334S360.7466666666667 277.3333333333334 352 277.3333333333334M314.6666666666667 240C305.92 240 298.6666666666667 232.7466666666667 298.6666666666667 224S305.92 208 314.6666666666667 208S330.6666666666667 215.2533333333333 330.6666666666667 224S323.4133333333333 240 314.6666666666667 240M389.3333333333333 240C380.5866666666667 240 373.3333333333333 232.7466666666667 373.3333333333333 224S380.5866666666667 208 389.3333333333333 208S405.3333333333333 215.2533333333333 405.3333333333333 224S398.08 240 389.3333333333333 240M352 202.6666666666667C343.2533333333334 202.6666666666667 336 195.4133333333334 336 186.6666666666667S343.2533333333334 170.6666666666667 352 170.6666666666667S368 177.92 368 186.6666666666667S360.7466666666667 202.6666666666667 352 202.6666666666667z" /> + <glyph glyph-name="google-drive" + unicode="&#xF2B6;" + horiz-adv-x="512" d=" M164.48 373.3333333333334L24.5333333333333 128L97.7066666666667 0L237.44 245.3333333333334M207.5733333333333 128L134.4 0H414.2933333333333L487.4666666666666 128M475.3066666666666 149.3333333333334L328.96 405.3333333333333H182.8266666666667L329.1733333333333 149.3333333333334H475.3066666666667z" /> + <glyph glyph-name="google-earth" + unicode="&#xF2B7;" + horiz-adv-x="512" d=" M264.5333333333333 286.7200000000001C204.8 343.2533333333334 155.7333333333333 327.4666666666667 134.6133333333333 317.8666666666667C150.6133333333333 333.2266666666667 169.3866666666667 345.6 190.2933333333333 354.1333333333334C249.6 356.2666666666667 316.3733333333334 344.7466666666667 353.28 292.0533333333334C353.28 292.0533333333334 405.3333333333333 202.6666666666667 423.68 242.1333333333334C428.3733333333333 226.1333333333334 430.9333333333333 209.4933333333334 430.9333333333333 192.0000000000001C430.9333333333333 185.6 430.5066666666667 179.4133333333334 429.8666666666666 173.2266666666667C386.56 178.1333333333334 327.04 227.8400000000001 264.5333333333333 286.7200000000001M407.4666666666666 104.5333333333334C387.4133333333333 96.64 362.6666666666666 83.2000000000001 322.9866666666666 83.2000000000001C282.88 83.2000000000001 247.68 99.2000000000001 203.9466666666666 113.0666666666667C164.2666666666666 125.6533333333334 149.3333333333333 145.0666666666667 122.0266666666666 145.0666666666667C107.9466666666666 145.0666666666667 100.9066666666666 130.9866666666667 97.0666666666666 119.2533333333335C86.8266666666666 141.4400000000001 81.0666666666666 165.9733333333334 81.0666666666666 192.0000000000001C81.0666666666666 209.2800000000001 83.6266666666666 225.7066666666668 88.3199999999999 241.4933333333334C115.1999999999999 275.2000000000001 156.3733333333333 296.1066666666668 215.2533333333333 250.4533333333335C215.2533333333333 250.4533333333335 348.1599999999999 151.0400000000001 424.1066666666666 144.4266666666667C420.2666666666666 130.3466666666668 414.5066666666666 117.3333333333334 407.4666666666666 104.5333333333334M256 17.0666666666667C232.1066666666667 17.0666666666667 209.28 21.9733333333334 188.3733333333333 30.72C175.1466666666667 62.2933333333334 175.36 87.0400000000001 212.2666666666667 74.6666666666667C212.2666666666667 74.6666666666667 295.8933333333333 42.6666666666667 384 72.96C352 38.6133333333334 306.56 17.0666666666667 256 17.0666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="google-glass" + unicode="&#xF2B8;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334V160H402.56C389.5466666666667 85.3333333333334 330.6666666666667 32 256 32C167.68 32 96 103.68 96 192C96 280.32 167.68 352 256 352C300.5866666666667 352 339.2 333.0133333333333 366.08 302.0800000000001L403.84 340.0533333333334C367.7866666666667 380.16 316.3733333333334 405.3333333333333 256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333C373.3333333333333 -21.3333333333333 458.6666666666666 74.6666666666667 458.6666666666666 192V213.3333333333334H277.3333333333333z" /> + <glyph glyph-name="google-maps" + unicode="&#xF5F5;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667C83.2 362.6666666666667 64 343.4666666666667 64 320V100.48L238.5066666666667 274.9866666666667C235.9466666666667 286.0800000000001 234.6666666666667 297.1733333333334 234.6666666666667 308.6933333333334C234.6666666666667 328.1066666666667 238.9333333333333 346.4533333333334 247.2533333333334 362.6666666666667H106.6666666666667M384 0C407.4666666666667 0 426.6666666666667 19.2 426.6666666666667 42.6666666666667V194.9866666666667C410.4533333333333 170.6666666666667 390.6133333333333 144.8533333333334 368.8533333333333 117.3333333333334L352 96L335.36 117.3333333333334C306.9866666666667 152.5333333333334 282.0266666666667 185.1733333333334 264.32 215.2533333333333C257.0666666666667 227.6266666666667 250.88 239.7866666666667 245.9733333333334 252.1600000000001L159.1466666666667 165.3333333333334L324.48 0H384M64 42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H294.1866666666666L144 150.1866666666667L64 70.1866666666667V42.6666666666667M352 128C407.68 199.8933333333334 448 253.8666666666667 448 307.8400000000001C448 361.6 405.3333333333333 405.3333333333333 352 405.3333333333333S256 361.6 256 307.8400000000001C256 253.8666666666667 295.8933333333333 199.8933333333334 352 128M394.6666666666667 309.3333333333334C394.6666666666667 285.8666666666667 375.4666666666667 266.6666666666667 352 266.6666666666667S309.3333333333333 285.8666666666667 309.3333333333333 309.3333333333334S328.5333333333333 352 352 352S394.6666666666667 332.8 394.6666666666667 309.3333333333334z" /> + <glyph glyph-name="google-nearby" + unicode="&#xF2B9;" + horiz-adv-x="512" d=" M89.6 384C76.16 384 65.0666666666667 373.3333333333334 64 360.32V68.2666666666667C64 54.1866666666667 75.52 42.6666666666667 89.6 42.6666666666667C91.9466666666667 42.6666666666667 94.2933333333333 42.6666666666667 96.64 43.7333333333334C181.3333333333333 88.7466666666667 267.9466666666666 141.2266666666667 352 190.2933333333334C361.3866666666667 194.3466666666667 367.1466666666667 203.5200000000001 367.1466666666667 213.3333333333334C367.1466666666667 222.5066666666667 362.6666666666667 231.0400000000001 354.1333333333334 235.5200000000001C266.6666666666667 286.7200000000001 175.1466666666667 339.8400000000001 96.64 382.9333333333334C94.2933333333333 384 91.9466666666667 384 89.6 384M423.8933333333333 320C421.5466666666667 320 419.2000000000001 320 416.8533333333334 318.9333333333334C396.8 307.8400000000001 373.9733333333334 294.8266666666667 352.0000000000001 282.6666666666667C359.4666666666668 278.4 366.7200000000001 274.3466666666667 373.3333333333334 270.2933333333334C394.6666666666668 258.56 406.8266666666667 236.8 406.8266666666667 213.3333333333334C406.8266666666667 188.16 392.1066666666667 164.9066666666667 369.4933333333334 154.24C339.6266666666667 136.7466666666667 275.6266666666667 98.9866666666667 241.4933333333334 79.1466666666667C300.1600000000001 45.0133333333333 358.8266666666667 10.6666666666667 416.8533333333335 -20.2666666666666C419.2000000000001 -21.3333333333333 421.5466666666668 -21.3333333333333 423.8933333333335 -21.3333333333333C438.1866666666668 -21.3333333333333 449.4933333333334 -9.8133333333333 449.4933333333334 4.2666666666667C449.4933333333334 101.5466666666666 449.7066666666668 199.2533333333333 449.4933333333334 296.32C448 309.3333333333334 437.3333333333333 320 423.8933333333333 320z" /> + <glyph glyph-name="google-pages" + unicode="&#xF2BA;" + horiz-adv-x="512" d=" M405.3333333333333 384H277.3333333333333V277.3333333333334L362.6666666666667 298.6666666666667L341.3333333333333 213.3333333333334H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M362.6666666666667 85.3333333333334L277.3333333333333 106.6666666666667V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V170.6666666666667H341.3333333333333M170.6666666666667 170.6666666666667H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H234.6666666666667V106.6666666666667L149.3333333333333 85.3333333333334M64 341.3333333333334V213.3333333333334H170.6666666666667L149.3333333333333 298.6666666666667L234.6666666666667 277.3333333333334V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334z" /> + <glyph glyph-name="google-physical-web" + unicode="&#xF2BB;" + horiz-adv-x="512" d=" M256 416C362.0266666666667 416 448 330.0266666666667 448 224C448 168.3200000000001 424.32 117.9733333333334 386.3466666666667 82.9866666666667L363.7333333333334 105.6C395.7333333333334 134.8266666666667 416 177.0666666666667 416 224C416 312.32 344.32 384 256 384C167.68 384 96 312.3200000000001 96 224C96 177.0666666666667 116.2666666666667 134.8266666666667 148.2666666666667 105.6L125.6533333333333 82.9866666666667C87.68 117.9733333333334 64 168.3200000000001 64 224C64 330.0266666666667 149.9733333333333 416 256 416M256 352C326.6133333333334 352 384 294.6133333333334 384 224C384 186.0266666666667 367.36 151.68 341.3333333333333 128L318.2933333333333 151.04C338.9866666666667 168.5333333333334 352 194.7733333333333 352 224C352 277.3333333333334 309.3333333333333 320 256 320S160 277.3333333333334 160 224C160 194.7733333333333 173.0133333333333 168.5333333333334 193.7066666666667 151.04L170.6666666666667 128C144.64 151.68 128 186.0266666666667 128 224C128 294.6133333333334 185.3866666666667 352 256 352M173.0133333333333 71.4666666666667L240.8533333333333 139.5200000000001C249.1733333333333 147.84 262.8266666666666 147.84 271.1466666666667 139.5200000000001L338.9866666666666 71.4666666666667C347.3066666666666 63.1466666666667 347.3066666666666 49.7066666666667 338.9866666666666 41.3866666666667L271.1466666666667 -26.4533333333333C262.8266666666666 -34.7733333333333 249.1733333333333 -34.7733333333333 240.8533333333333 -26.4533333333333L173.0133333333333 41.3866666666667C164.6933333333333 49.7066666666667 164.6933333333333 63.1466666666667 173.0133333333333 71.4666666666667z" /> + <glyph glyph-name="google-play" + unicode="&#xF2BC;" + horiz-adv-x="512" d=" M64 10.6666666666667V373.3333333333334C64 385.92 71.2533333333333 397.0133333333333 81.92 402.1333333333334L292.0533333333333 192L81.92 -18.1333333333333C71.2533333333333 -12.8 64 -1.92 64 10.6666666666667M358.6133333333334 125.44L129.0666666666667 -7.2533333333333L310.1866666666666 173.8666666666667L358.6133333333333 125.4400000000001M430.08 217.3866666666667C437.3333333333333 211.6266666666667 442.6666666666667 202.6666666666667 442.6666666666667 192.0000000000001S437.9733333333334 172.8000000000001 430.5066666666667 166.8266666666667L381.6533333333333 138.6666666666668L328.32 192.0000000000001L381.6533333333333 245.3333333333334L430.08 217.3866666666667M129.0666666666667 391.2533333333334L358.6133333333333 258.5600000000001L310.1866666666666 210.1333333333334L129.0666666666666 391.2533333333334z" /> + <glyph glyph-name="google-plus" + unicode="&#xF2BD;" + horiz-adv-x="512" d=" M490.6666666666666 213.3333333333334H448V256H405.3333333333333V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V128H448V170.6666666666667H490.6666666666666M170.6666666666667 213.3333333333334V162.1333333333333H256C251.7333333333334 140.8 230.4 98.1333333333334 170.6666666666667 98.1333333333334C119.4666666666667 98.1333333333334 78.9333333333333 140.8000000000001 78.9333333333333 192.0000000000001C78.9333333333333 243.2000000000001 119.4666666666667 285.8666666666668 170.6666666666667 285.8666666666668C200.5333333333333 285.8666666666668 219.7333333333334 273.0666666666667 230.4 262.4000000000001L270.9333333333334 300.8000000000001C245.3333333333333 326.4 211.2 341.3333333333334 170.6666666666667 341.3333333333334C87.4666666666667 341.3333333333334 21.3333333333333 275.2000000000001 21.3333333333333 192S87.4666666666667 42.6666666666667 170.6666666666667 42.6666666666667C256 42.6666666666667 313.6 102.4 313.6 187.7333333333334C313.6 198.4 313.6 204.8000000000001 311.4666666666667 213.3333333333334H170.6666666666667z" /> + <glyph glyph-name="google-plus-box" + unicode="&#xF2BE;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M426.6666666666667 192H384V234.6666666666667H362.6666666666667V192H320V170.6666666666667H362.6666666666667V128H384V170.6666666666667H426.6666666666667V192M192 207.1466666666667V170.6666666666667H253.0133333333333C249.8133333333333 155.52 234.6666666666667 125.0133333333333 192 125.0133333333333C155.52 125.0133333333333 126.5066666666667 155.52 126.5066666666667 192C126.5066666666667 228.48 155.52 258.9866666666667 192 258.9866666666667C213.3333333333333 258.9866666666667 226.9866666666667 249.8133333333334 234.6666666666667 242.3466666666667L263.68 269.6533333333334C245.3333333333333 288 221.0133333333333 298.6666666666667 192 298.6666666666667C132.48 298.6666666666667 85.3333333333333 251.52 85.3333333333333 192S132.48 85.3333333333334 192 85.3333333333334C253.0133333333333 85.3333333333334 294.1866666666666 128 294.1866666666666 189.0133333333333C294.1866666666666 196.48 294.1866666666666 201.1733333333334 292.48 207.1466666666667H192z" /> + <glyph glyph-name="google-translate" + unicode="&#xF2BF;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V85.3333333333334C21.3333333333333 61.6533333333334 40.32 42.6666666666667 64 42.6666666666667H320L192 426.6666666666667H64M263.2533333333334 341.3333333333334L277.3333333333333 298.6666666666667H448V0H264.1066666666667L277.9733333333334 -42.6666666666666H448C471.6799999999999 -42.6666666666666 490.6666666666666 -23.6799999999999 490.6666666666666 0V298.6666666666667C490.6666666666666 322.3466666666667 471.6799999999999 341.3333333333334 448 341.3333333333334H263.2533333333334M150.6133333333333 321.92C174.08 321.92 193.92 313.3866666666667 208.64 298.6666666666667L184.7466666666667 276.6933333333334C178.56 282.88 167.8933333333333 289.92 150.6133333333334 289.92C120.96 289.92 97.28 265.6 97.28 235.9466666666667S120.96 181.3333333333334 150.6133333333334 181.3333333333334C185.1733333333333 181.3333333333334 197.5466666666667 206.2933333333334 200.1066666666667 218.6666666666667H150.6133333333333V247.8933333333333H232.1066666666667C233.1733333333333 242.9866666666667 233.3866666666667 239.5733333333333 233.3866666666667 233.3866666666667C233.3866666666667 183.8933333333333 200.1066666666666 149.3333333333334 150.6133333333333 149.3333333333334C102.6133333333333 149.3333333333334 64 187.9466666666667 64 235.9466666666667C64 284.1600000000001 102.6133333333334 321.92 150.6133333333333 321.92M341.3333333333333 234.6666666666667V213.3333333333334H305.92L312.7466666666667 192H384C378.24 178.9866666666667 376.1066666666667 167.04 358.6133333333333 146.5600000000001C350.08 156.5866666666667 343.2533333333334 165.3333333333334 341.3333333333333 170.6666666666667H320C322.56 161.4933333333334 333.2266666666666 147.2000000000001 346.0266666666667 132.6933333333334C343.2533333333334 129.92 339.4133333333333 126.2933333333334 336 123.3066666666667L341.9733333333333 105.3866666666667C347.3066666666666 110.08 352.64 114.9866666666667 357.9733333333333 119.8933333333334C379.7333333333333 97.0666666666667 402.7733333333333 75.9466666666667 402.7733333333333 75.9466666666667L414.7199999999999 88.7466666666668S391.8933333333333 111.1466666666668 371.4133333333333 133.3333333333334C384.8533333333333 148.2666666666668 396.8 166.4000000000001 405.3333333333333 192.0000000000001H426.6666666666666V213.3333333333334H362.6666666666666V234.6666666666668H341.3333333333333z" /> + <glyph glyph-name="google-wallet" + unicode="&#xF2C0;" + horiz-adv-x="512" d=" M210.9866666666667 211.6266666666667C208.2133333333333 236.5866666666667 200.32 260.9066666666667 187.0933333333333 282.24C181.3333333333333 292.48 180.48 305.0666666666667 184.1066666666666 314.6666666666667C185.8133333333333 320 188.3733333333333 324.2666666666667 192.64 328.7466666666667C197.12 333.2266666666667 201.8133333333333 335.7866666666667 206.2933333333333 337.4933333333334C210.7733333333334 339.4133333333334 213.3333333333333 340.0533333333334 219.9466666666667 340.0533333333334C227.4133333333334 340.0533333333334 234.6666666666667 337.7066666666667 240.64 333.8666666666667L250.0266666666667 325.12L252.3733333333334 321.7066666666667C276.0533333333333 282.4533333333334 288.64 237.6533333333334 288.64 192L288 175.1466666666667C285.44 134.8266666666667 273.0666666666667 96 252.16 61.2266666666667C245.3333333333333 49.7066666666667 232.96 42.6666666666667 219.52 42.6666666666667L208.64 44.5866666666667L199.8933333333334 48.4266666666667C189.0133333333334 54.8266666666667 182.8266666666667 65.92 181.3333333333334 77.44C181.3333333333334 84.2666666666667 182.1866666666667 91.3066666666666 185.3866666666667 97.92L187.0933333333334 100.6933333333333C203.52 128 212.2666666666667 159.36 212.2666666666667 192L210.9866666666666 211.6266666666667M434.7733333333333 279.8933333333333C441.1733333333333 251.3066666666667 444.5866666666667 221.44 444.5866666666667 192C444.5866666666667 161.4933333333334 441.1733333333333 131.84 434.7733333333333 103.2533333333333L429.0133333333333 80.8533333333334C421.9733333333334 55.4666666666667 413.8666666666666 35.84 405.3333333333333 21.3333333333334C398.9333333333333 8.1066666666667 385.28 0 370.7733333333333 0C364.8 0 359.04 1.28 353.7066666666666 3.84C341.3333333333333 9.6 334.2933333333333 19.84 331.7333333333333 31.1466666666667L330.6666666666667 40.3200000000001C330.6666666666667 49.0666666666667 334.2933333333333 56.5333333333334 334.5066666666666 57.1733333333334C354.56 99.4133333333334 364.5866666666666 144.4266666666667 364.5866666666666 192C364.5866666666666 238.5066666666667 354.56 283.9466666666667 334.2933333333333 326.8266666666667C324.6933333333333 346.6666666666667 333.2266666666666 370.56 353.0666666666666 380.1600000000001C358.6133333333333 382.7200000000001 364.3733333333333 384 370.3466666666666 384C385.7066666666666 384 399.9999999999999 375.04 406.3999999999999 361.1733333333334C418.7733333333332 335.1466666666667 428.3733333333333 307.8400000000001 434.7733333333332 279.8933333333334M343.8933333333333 245.3333333333334C346.88 227.84 348.5866666666667 209.92 348.5866666666667 192C348.5866666666667 149.3333333333334 340.2666666666667 108.3733333333333 324.2666666666667 69.9733333333334C322.3466666666667 102.1866666666667 314.6666666666667 133.1200000000001 302.08 161.2800000000001L303.36 176.4266666666667L304 192.8533333333334C304 237.2266666666668 292.48 280.5333333333334 270.2933333333333 318.5066666666667C298.6666666666667 298.0266666666668 323.84 272.8533333333334 343.8933333333333 245.3333333333334M85.3333333333333 224C67.2 234.0266666666667 60.5866666666667 256 69.9733333333333 273.4933333333334C76.3733333333333 285.2266666666667 88.5333333333333 292.6933333333334 101.9733333333333 292.6933333333334C107.9466666666667 292.6933333333334 113.7066666666667 291.2000000000001 119.04 288C146.56 273.7066666666667 171.3066666666667 253.8666666666667 191.36 231.2533333333334L194.56 212.2666666666667L195.84 192C195.84 161.4933333333334 187.9466666666667 131.4133333333334 172.8 105.1733333333334C162.1333333333334 156.5866666666667 130.56 200.1066666666667 85.3333333333334 224z" /> + <glyph glyph-name="grease-pencil" + unicode="&#xF648;" + horiz-adv-x="512" d=" M397.2266666666667 416C386.3466666666667 416 375.4666666666667 411.9466666666667 367.1466666666667 403.4133333333334L229.3333333333333 265.6L318.9333333333333 176.2133333333333L456.7466666666667 313.8133333333333C473.6 330.6666666666667 473.6 357.5466666666666 456.7466666666667 374.1866666666666L427.52 403.4133333333333C419.2 411.9466666666666 408.32 416 397.2266666666666 416M209.0666666666666 245.3333333333333L68.9066666666666 105.1733333333334L83.8399999999999 90.24C72.5333333333333 80.2133333333334 61.6533333333333 68.6933333333333 50.7733333333333 57.8133333333334C34.1333333333333 40.96 34.1333333333333 14.08 50.7733333333333 -2.5599999999999C67.4133333333333 -19.1999999999999 94.2933333333333 -19.1999999999999 111.1466666666666 -2.5599999999999C122.0266666666666 7.8933333333334 133.3333333333333 19.6266666666667 143.5733333333333 30.2933333333334L158.5066666666666 15.5733333333334L298.6666666666667 155.7333333333334" /> + <glyph glyph-name="grid" + unicode="&#xF2C1;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 362.6666666666667V277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 234.6666666666667V149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333M341.3333333333333 106.6666666666667V21.3333333333334H426.6666666666667V106.6666666666667H341.3333333333333M298.6666666666667 21.3333333333334V106.6666666666667H213.3333333333333V21.3333333333334H298.6666666666667M170.6666666666667 21.3333333333334V106.6666666666667H85.3333333333333V21.3333333333334H170.6666666666667M170.6666666666667 149.3333333333334V234.6666666666667H85.3333333333333V149.3333333333334H170.6666666666667M170.6666666666667 277.3333333333334V362.6666666666667H85.3333333333333V277.3333333333334H170.6666666666667M213.3333333333333 149.3333333333334H298.6666666666667V234.6666666666667H213.3333333333333V149.3333333333334M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C62.2933333333333 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="grid-off" + unicode="&#xF2C2;" + horiz-adv-x="512" d=" M0 388.9066666666667L27.3066666666667 416L480 -36.6933333333333L452.9066666666666 -64L410.24 -21.3333333333333H85.3333333333333C62.2933333333333 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V346.24L0 388.9066666666667M213.3333333333333 362.6666666666667V284.1600000000001L170.6666666666667 326.8266666666667V362.6666666666667H134.8266666666667L92.16 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V27.7333333333334L426.6666666666667 70.4V106.6666666666667H390.8266666666667L348.16 149.3333333333334H426.6666666666667V234.6666666666667H341.3333333333333V156.16L298.6666666666667 198.8266666666667V234.6666666666667H262.8266666666667L220.16 277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333M341.3333333333333 362.6666666666667V277.3333333333334H426.6666666666667V362.6666666666667H341.3333333333333M341.3333333333333 21.3333333333334H367.5733333333333L341.3333333333333 47.5733333333334V21.3333333333334M85.3333333333333 277.3333333333334H111.5733333333333L85.3333333333333 303.5733333333334V277.3333333333334M213.3333333333333 149.3333333333334H239.5733333333333L213.3333333333333 175.5733333333334V149.3333333333334M298.6666666666667 21.3333333333334V90.24L282.24 106.6666666666667H213.3333333333333V21.3333333333334H298.6666666666667M170.6666666666667 21.3333333333334V106.6666666666667H85.3333333333333V21.3333333333334H170.6666666666667M170.6666666666667 149.3333333333334V218.24L154.24 234.6666666666667H85.3333333333333V149.3333333333334H170.6666666666667z" /> + <glyph glyph-name="group" + unicode="&#xF2C3;" + horiz-adv-x="512" d=" M170.6666666666667 277.3333333333334V192H277.3333333333333V277.3333333333334H170.6666666666667M21.3333333333333 426.6666666666667H106.6666666666667V405.3333333333333H405.3333333333333V426.6666666666667H490.6666666666666V341.3333333333334H469.3333333333333V42.6666666666667H490.6666666666666V-42.6666666666666H405.3333333333333V-21.3333333333333H106.6666666666667V-42.6666666666666H21.3333333333333V42.6666666666667H42.6666666666667V341.3333333333334H21.3333333333333V426.6666666666667M106.6666666666667 42.6666666666667V21.3333333333334H405.3333333333333V42.6666666666667H426.6666666666667V341.3333333333334H405.3333333333333V362.6666666666667H106.6666666666667V341.3333333333334H85.3333333333333V42.6666666666667H106.6666666666667M128 320H320V234.6666666666667H384V64H170.6666666666667V149.3333333333334H128V320M320 149.3333333333334H213.3333333333333V106.6666666666667H341.3333333333333V192H320V149.3333333333334z" /> + <glyph glyph-name="guitar-electric" + unicode="&#xF2C4;" + horiz-adv-x="512" d=" M437.3333333333333 405.3333333333333L397.8666666666666 360.9600000000001L401.7066666666666 357.12L222.9333333333333 188.5866666666667C218.2399999999999 183.8933333333333 201.5999999999999 176 197.5466666666666 186.0266666666667C187.9466666666666 210.7733333333334 218.24 213.3333333333334 213.3333333333333 217.6C190.72 228.6933333333334 164.9066666666667 209.4933333333334 163.6266666666666 208.4266666666667C148.0533333333333 196.6933333333334 138.6666666666666 182.8266666666667 133.5466666666666 167.8933333333334C127.1466666666666 148.48 110.2933333333333 146.1333333333334 100.9066666666666 145.7066666666667C77.6533333333333 144.2133333333334 64 138.0266666666668 53.3333333333333 123.0933333333334C48.4266666666666 116.48 40.5333333333333 106.6666666666667 42.6666666666666 86.1866666666667C46.08 64.0000000000001 62.9333333333333 35.6266666666667 75.9466666666666 21.3333333333334C89.8133333333333 6.6133333333334 107.7333333333333 -8.1066666666666 123.9466666666666 -15.9999999999999C135.4666666666666 -21.3333333333333 142.5066666666666 -23.0399999999998 159.36 -18.7733333333332C174.2933333333333 -14.9333333333332 189.0133333333333 -2.9866666666666 195.2 12.8000000000001C200.32 26.4533333333335 200.96 36.2666666666668 203.3066666666667 47.3600000000001C206.2933333333333 61.6533333333335 208.2133333333333 64.0000000000002 223.36 70.8266666666668C237.6533333333333 77.0133333333335 245.3333333333333 77.8666666666668 257.0666666666666 90.0266666666668C265.3866666666667 98.7733333333335 269.6533333333333 108.1600000000001 272.2133333333333 118.1866666666669C274.3466666666666 126.7200000000002 275.8399999999999 137.3866666666668 271.7866666666667 138.6666666666669C268.16 141.8666666666669 261.76 121.3866666666668 246.6133333333333 130.9866666666669C235.7333333333333 137.8133333333335 237.0133333333333 154.8800000000002 246.4 164.4800000000002C307.4133333333333 226.5600000000002 357.3333333333333 277.3333333333335 418.7733333333333 339.4133333333336L423.68 334.5066666666669L469.3333333333333 373.3333333333334z" /> + <glyph glyph-name="guitar-pick" + unicode="&#xF2C5;" + horiz-adv-x="512" d=" M405.3333333333333 360.5333333333334C386.1333333333334 377.6 362.6666666666667 388.2666666666667 337.0666666666667 394.6666666666667C330.6666666666667 396.8 290.1333333333334 405.3333333333334 260.2666666666667 405.3333333333334H251.7333333333334C221.8666666666667 405.3333333333334 179.2 396.8 172.8 394.6666666666667C149.3333333333334 388.2666666666667 125.8666666666667 377.6 106.6666666666667 360.5333333333334C64 322.1333333333334 64 262.4000000000001 85.3333333333333 213.3333333333334C106.6666666666667 160 130.1333333333333 113.0666666666667 162.1333333333333 66.1333333333334C187.7333333333334 29.8666666666667 215.4666666666667 -21.3333333333333 256 -21.3333333333333C296.5333333333333 -21.3333333333333 324.2666666666667 29.8666666666667 352 66.1333333333334C384 110.9333333333334 407.4666666666667 160.0000000000001 428.8 213.3333333333334C448 262.4000000000001 448 322.1333333333334 405.3333333333333 360.5333333333334z" /> + <glyph glyph-name="guitar-pick-outline" + unicode="&#xF2C6;" + horiz-adv-x="512" d=" M405.3333333333333 360.5333333333334C386.1333333333334 377.6 362.6666666666667 388.2666666666667 337.0666666666667 394.6666666666667C330.6666666666667 396.8 290.1333333333334 405.3333333333334 260.2666666666667 405.3333333333334H251.7333333333334C221.8666666666667 405.3333333333334 179.2 396.8 172.8 394.6666666666667C149.3333333333334 388.2666666666667 125.8666666666667 377.6 106.6666666666667 360.5333333333334C64 322.1333333333334 64 262.4000000000001 85.3333333333333 213.3333333333334C106.6666666666667 160 130.1333333333333 113.0666666666667 162.1333333333333 66.1333333333334C187.7333333333334 29.8666666666667 215.4666666666667 -21.3333333333333 256 -21.3333333333333C296.5333333333333 -21.3333333333333 324.2666666666667 29.8666666666667 352 66.1333333333334C384 110.9333333333334 407.4666666666667 160.0000000000001 428.8 213.3333333333334C448 262.4000000000001 448 322.1333333333334 405.3333333333333 360.5333333333334M388.2666666666667 230.4000000000001C364.8 172.8000000000001 343.4666666666666 130.1333333333334 315.7333333333333 91.7333333333335C311.4666666666667 87.4666666666668 309.3333333333333 81.0666666666668 305.0666666666666 76.8000000000001C294.4 59.7333333333335 268.8 21.3333333333334 256 21.3333333333334C241.0666666666667 21.3333333333334 217.6 57.6000000000001 204.8 76.8000000000001C200.5333333333333 81.0666666666668 198.4 87.4666666666668 194.1333333333333 91.7333333333335C168.5333333333333 130.1333333333335 145.0666666666667 172.8000000000001 121.6 230.4000000000001C117.3333333333333 245.3333333333335 100.2666666666667 298.6666666666668 134.4 330.6666666666668C145.0666666666666 341.3333333333335 162.1333333333333 347.7333333333335 183.4666666666666 354.1333333333335C192 354.1333333333335 228.2666666666666 362.6666666666668 251.7333333333333 362.6666666666668H258.1333333333333C281.5999999999999 362.6666666666668 317.8666666666666 356.2666666666668 326.3999999999999 354.1333333333335C347.7333333333333 347.7333333333335 364.8 341.3333333333335 375.4666666666666 330.6666666666668C411.7333333333333 298.6666666666668 394.6666666666666 245.3333333333335 388.2666666666667 230.4000000000001z" /> + <glyph glyph-name="hackernews" + unicode="&#xF624;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H469.3333333333333V-21.3333333333333H42.6666666666667V405.3333333333333M240 74.6666666666667H272V169.3866666666667L341.3333333333333 298.6666666666667H309.3333333333333L256 199.2533333333333L202.6666666666667 298.6666666666667H170.6666666666667L240 169.3866666666667V74.6666666666667z" /> + <glyph glyph-name="hand-pointing-right" + unicode="&#xF2C7;" + horiz-adv-x="512" d=" M448 256C459.7333333333333 256 469.3333333333333 246.4000000000001 469.3333333333333 234.6666666666667S459.7333333333333 213.3333333333334 448 213.3333333333334H352.64L349.8666666666667 187.52L302.9333333333334 82.1333333333333C298.6666666666668 71.4666666666666 287.36 63.9999999999999 274.3466666666667 63.9999999999999H181.3333333333333C164.2666666666667 63.9999999999999 149.3333333333333 79.5733333333333 149.3333333333333 95.9999999999999V234.6666666666667C149.3333333333333 242.9866666666667 152.7466666666667 250.4533333333334 158.5066666666667 256L248.1066666666667 360.5333333333334L264.5333333333333 344.7466666666667C268.8 340.6933333333334 271.36 335.1466666666667 271.36 328.9600000000001L270.72 324.2666666666667L234.6666666666667 256H448M42.6666666666667 64V234.6666666666667H106.6666666666667V64H42.6666666666667z" /> + <glyph glyph-name="hanger" + unicode="&#xF2C8;" + horiz-adv-x="512" d=" M442.88 99.4133333333334H442.6666666666667C458.6666666666666 90.24 469.3333333333333 72.96 469.3333333333333 53.3333333333334C469.3333333333333 23.8933333333334 445.44 0 416 0H96C66.56 0 42.6666666666667 23.8933333333334 42.6666666666667 53.3333333333334C42.6666666666667 72.96 53.3333333333333 90.24 69.3333333333333 99.4133333333334H69.12L234.6666666666667 194.9866666666667S234.6666666666667 213.3333333333334 256 234.6666666666667C277.3333333333333 234.6666666666667 298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320S213.3333333333333 300.8 213.3333333333333 277.3333333333334H170.6666666666667C170.6666666666667 324.48 208.8533333333333 362.6666666666667 256 362.6666666666667S341.3333333333333 324.48 341.3333333333333 277.3333333333334C341.3333333333333 237.6533333333334 314.24 204.3733333333333 277.3333333333333 194.7733333333333L442.88 99.4133333333334M96 42.6666666666667H416C419.6266666666667 42.6666666666667 423.2533333333334 44.5866666666667 425.1733333333333 48C428.16 53.3333333333334 426.6666666666667 59.52 421.3333333333333 62.5066666666667L256 158.0800000000001L90.6666666666667 62.5066666666667C85.3333333333333 59.52 83.84 53.3333333333334 86.8266666666667 48C88.7466666666667 44.5866666666667 92.3733333333333 42.6666666666667 96 42.6666666666667z" /> + <glyph glyph-name="hangouts" + unicode="&#xF2C9;" + horiz-adv-x="512" d=" M320 213.3333333333334L298.6666666666667 170.6666666666667H266.6666666666667L288 213.3333333333334H256V277.3333333333334H320M234.6666666666667 213.3333333333334L213.3333333333333 170.6666666666667H181.3333333333333L202.6666666666667 213.3333333333334H170.6666666666667V277.3333333333334H234.6666666666667M245.3333333333333 405.3333333333333C145.28 405.3333333333333 64 324.0533333333334 64 224C64 123.9466666666667 145.28 42.6666666666667 245.3333333333333 42.6666666666667H256V-32C359.68 18.1333333333334 426.6666666666667 128 426.6666666666667 224C426.6666666666667 324.2666666666667 345.3866666666667 405.3333333333333 245.3333333333333 405.3333333333333z" /> + <glyph glyph-name="harddisk" + unicode="&#xF2CA;" + horiz-adv-x="512" d=" M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333M256 362.6666666666667C185.3866666666667 362.6666666666667 128 305.2800000000001 128 234.6666666666667S185.3866666666667 106.6666666666667 258.1333333333334 106.6666666666667L239.36 154.24C233.6 164.48 237.0133333333333 177.4933333333334 247.2533333333333 183.4666666666667L265.5999999999999 194.1333333333334C275.8399999999999 199.8933333333334 288.8533333333333 196.48 294.8266666666666 186.2400000000001L335.7866666666666 134.6133333333334C365.2266666666667 158.0800000000001 384 194.1333333333333 384 234.6666666666667C384 305.2800000000001 326.6133333333334 362.6666666666667 256 362.6666666666667M256 256C267.7333333333334 256 277.3333333333333 246.4000000000001 277.3333333333333 234.6666666666667S267.7333333333334 213.3333333333334 256 213.3333333333334S234.6666666666667 222.9333333333333 234.6666666666667 234.6666666666667S244.2666666666667 256 256 256M149.3333333333333 64C137.6 64 128 54.4 128 42.6666666666667S137.6 21.3333333333334 149.3333333333333 21.3333333333334S170.6666666666667 30.9333333333333 170.6666666666667 42.6666666666667S161.0666666666667 64 149.3333333333333 64M257.92 164.9066666666667L311.04 30.2933333333334L366.2933333333334 62.2933333333334L276.2666666666667 175.5733333333334L257.9200000000001 164.9066666666667z" /> + <glyph glyph-name="headphones" + unicode="&#xF2CB;" + horiz-adv-x="512" d=" M256 426.6666666666667C149.3333333333333 426.6666666666667 64 341.3333333333334 64 234.6666666666667V85.3333333333334C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334H192V192H106.6666666666667V234.6666666666667C106.6666666666667 317.2266666666667 173.44 384 256 384S405.3333333333333 317.2266666666667 405.3333333333333 234.6666666666667V192H320V21.3333333333334H384C419.4133333333333 21.3333333333334 448 49.92 448 85.3333333333334V234.6666666666667C448 341.3333333333334 362.0266666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="headphones-box" + unicode="&#xF2CC;" + horiz-adv-x="512" d=" M153.6 64C139.52 64 128 75.52 128 89.6V192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192V89.6C384 75.52 372.48 64 358.4 64H298.6666666666667V149.3333333333334H341.3333333333333V192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334S170.6666666666667 239.1466666666667 170.6666666666667 192V149.3333333333334H213.3333333333333V64M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="headphones-settings" + unicode="&#xF2CD;" + horiz-adv-x="512" d=" M256 426.6666666666667C362.0266666666667 426.6666666666667 448 340.6933333333334 448 234.6666666666667V85.3333333333334C448 49.92 419.4133333333333 21.3333333333334 384 21.3333333333334H320V192H405.3333333333333V234.6666666666667C405.3333333333333 317.2266666666667 338.56 384 256 384S106.6666666666667 317.2266666666667 106.6666666666667 234.6666666666667V192H192V21.3333333333334H128C92.5866666666667 21.3333333333334 64 49.92 64 85.3333333333334V234.6666666666667C64 340.6933333333334 149.9733333333333 426.6666666666667 256 426.6666666666667M320 -64V-21.3333333333333H362.6666666666667V-64H320M234.6666666666667 -64V-21.3333333333333H277.3333333333333V-64H234.6666666666667M149.3333333333333 -64V-21.3333333333333H192V-64H149.3333333333333z" /> + <glyph glyph-name="headset" + unicode="&#xF2CE;" + horiz-adv-x="512" d=" M256 426.6666666666667C149.3333333333333 426.6666666666667 64 341.3333333333334 64 234.6666666666667V85.3333333333334C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334H192V192H106.6666666666667V234.6666666666667C106.6666666666667 317.2266666666667 173.44 384 256 384S405.3333333333333 317.2266666666667 405.3333333333333 234.6666666666667V192H320V21.3333333333334H405.3333333333333V0H256V-42.6666666666666H384C419.4133333333333 -42.6666666666666 448 -14.08 448 21.3333333333334V234.6666666666667C448 341.3333333333334 362.0266666666667 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="headset-dock" + unicode="&#xF2CF;" + horiz-adv-x="512" d=" M42.6666666666667 64H192V317.2266666666667C155.0933333333333 307.8400000000001 128 274.3466666666667 128 234.6666666666667V213.3333333333334H170.6666666666667V85.3333333333334H128C104.5333333333333 85.3333333333334 85.3333333333333 104.5333333333333 85.3333333333333 128V234.6666666666667C85.3333333333333 305.2800000000001 142.72 362.6666666666667 213.3333333333333 362.6666666666667H234.6666666666667C305.28 362.6666666666667 362.6666666666667 305.2800000000001 362.6666666666667 234.6666666666667V192H384V256H426.6666666666667V192C426.6666666666667 168.5333333333334 407.4666666666667 149.3333333333334 384 149.3333333333334H362.6666666666667V128C362.6666666666667 104.5333333333333 343.4666666666667 85.3333333333334 320 85.3333333333334H277.3333333333333V213.3333333333334H320V234.6666666666667C320 274.3466666666667 292.9066666666667 307.8400000000001 256 317.2266666666667V64H469.3333333333333V21.3333333333334H42.6666666666667V64z" /> + <glyph glyph-name="headset-off" + unicode="&#xF2D0;" + horiz-adv-x="512" d=" M480 346.24L435.84 302.0800000000001C443.7333333333334 281.1733333333334 448 258.3466666666667 448 234.6666666666667V21.3333333333334C448 -14.08 419.4133333333333 -42.6666666666666 384 -42.6666666666666H256V0H405.3333333333333V21.3333333333334H320V186.24L192 58.24V21.3333333333334H155.0933333333333L101.76 -32L74.6666666666667 -4.6933333333333L452.6933333333333 373.3333333333334L480 346.24M256 426.6666666666667C309.9733333333333 426.6666666666667 358.8266666666667 404.48 393.6 368.64L363.52 338.3466666666667C336.4266666666666 366.5066666666667 298.6666666666667 384 256 384C173.44 384 106.6666666666667 317.2266666666667 106.6666666666667 234.6666666666667V192H192V166.8266666666667L74.6666666666667 49.7066666666667C68.0533333333333 59.9466666666667 64 72.1066666666667 64 85.3333333333334V234.6666666666667C64 340.6933333333334 149.9733333333333 426.6666666666667 256 426.6666666666667M405.3333333333333 192V234.6666666666667C405.3333333333333 246.1866666666667 404.0533333333334 257.2800000000001 401.7066666666666 267.9466666666667L325.76 192H405.3333333333333z" /> + <glyph glyph-name="heart" + unicode="&#xF2D1;" + horiz-adv-x="512" d=" M256 -7.4666666666667L225.0666666666667 20.6933333333333C115.2 120.3200000000001 42.6666666666667 186.24 42.6666666666667 266.6666666666667C42.6666666666667 332.5866666666667 94.2933333333333 384 160 384C197.12 384 232.7466666666667 366.7200000000001 256 339.6266666666667C279.2533333333334 366.7200000000001 314.88 384 352 384C417.7066666666666 384 469.3333333333333 332.5866666666667 469.3333333333333 266.6666666666667C469.3333333333333 186.24 396.8 120.3200000000001 286.9333333333333 20.6933333333333L256 -7.4666666666667z" /> + <glyph glyph-name="heart-box" + unicode="&#xF2D2;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M256 85.3333333333334L271.36 99.4133333333334C326.4 149.3333333333334 362.6666666666667 182.1866666666667 362.6666666666667 222.5066666666667C362.6666666666667 255.36 336.8533333333333 281.1733333333334 304 281.1733333333334C285.44 281.1733333333334 267.7333333333334 272.4266666666667 256 258.7733333333333C244.2666666666667 272.4266666666667 226.56 281.1733333333333 208 281.1733333333333C175.1466666666667 281.1733333333334 149.3333333333333 255.36 149.3333333333333 222.5066666666667C149.3333333333333 182.1866666666667 185.6 149.3333333333334 240.64 99.4133333333334L256 85.3333333333334z" /> + <glyph glyph-name="heart-box-outline" + unicode="&#xF2D3;" + horiz-adv-x="512" d=" M256 85.3333333333334L240.64 99.4133333333334C185.6 149.3333333333334 149.3333333333333 182.1866666666667 149.3333333333333 222.5066666666667C149.3333333333333 255.36 175.1466666666667 281.1733333333334 208 281.1733333333334C226.56 281.1733333333334 244.2666666666667 272.4266666666667 256 258.7733333333333C267.7333333333334 272.4266666666667 285.44 281.1733333333333 304 281.1733333333333C336.8533333333333 281.1733333333333 362.6666666666667 255.36 362.6666666666667 222.5066666666667C362.6666666666667 182.1866666666667 326.4 149.3333333333334 271.36 99.4133333333334L256 85.3333333333334M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="heart-broken" + unicode="&#xF2D4;" + horiz-adv-x="512" d=" M256 -7.4666666666667L225.0666666666667 20.6933333333333C115.2 120.3200000000001 42.6666666666667 186.24 42.6666666666667 266.6666666666667C42.6666666666667 332.5866666666667 94.2933333333333 384 160 384C174.2933333333333 384 188.16 381.44 201.3866666666667 376.9600000000001L277.3333333333333 248.5333333333334L192 141.8666666666667L256 -7.4666666666667M352 384C417.7066666666666 384 469.3333333333333 332.5866666666667 469.3333333333333 266.6666666666667C469.3333333333333 186.24 396.8 120.3200000000001 286.9333333333333 20.6933333333333L256 -7.4666666666667L234.6666666666667 141.8666666666667L330.6666666666667 248.5333333333333L274.1333333333334 356.9066666666667C295.8933333333333 373.9733333333334 323.6266666666667 384 352 384z" /> + <glyph glyph-name="heart-outline" + unicode="&#xF2D5;" + horiz-adv-x="512" d=" M258.1333333333334 52.2666666666667L256 50.1333333333333L253.6533333333334 52.2666666666667C152.32 144.2133333333334 85.3333333333333 205.0133333333333 85.3333333333333 266.6666666666667C85.3333333333333 309.3333333333334 117.3333333333333 341.3333333333334 160 341.3333333333334C192.8533333333333 341.3333333333334 224.8533333333333 320 236.16 290.9866666666667H275.84C287.1466666666667 320 319.1466666666667 341.3333333333334 352 341.3333333333334C394.6666666666667 341.3333333333334 426.6666666666667 309.3333333333334 426.6666666666667 266.6666666666667C426.6666666666667 205.0133333333333 359.68 144.2133333333334 258.1333333333334 52.2666666666667M352 384C314.88 384 279.2533333333334 366.7200000000001 256 339.6266666666667C232.7466666666667 366.7200000000001 197.12 384 160 384C94.2933333333333 384 42.6666666666667 332.5866666666667 42.6666666666667 266.6666666666667C42.6666666666667 186.24 115.2 120.3200000000001 225.0666666666667 20.6933333333333L256 -7.4666666666667L286.9333333333333 20.6933333333333C396.8 120.3200000000001 469.3333333333333 186.24 469.3333333333333 266.6666666666667C469.3333333333333 332.5866666666667 417.7066666666666 384 352 384z" /> + <glyph glyph-name="heart-pulse" + unicode="&#xF5F6;" + horiz-adv-x="512" d=" M160 362.6666666666667C95.1466666666667 362.6666666666667 42.6666666666667 310.1866666666667 42.6666666666667 245.3333333333334C42.6666666666667 234.6666666666667 44.5866666666667 224 47.36 213.3333333333334H134.4L161.4933333333334 285.2266666666667C167.8933333333333 302.2933333333334 193.0666666666667 304 201.1733333333333 285.2266666666667L245.3333333333333 170.6666666666667L257.92 200.96C260.6933333333334 208 268.16 213.3333333333334 277.3333333333333 213.3333333333334H464.64C467.4133333333333 224 469.3333333333333 234.6666666666667 469.3333333333333 245.3333333333334C469.3333333333333 310.1866666666667 416.8533333333333 362.6666666666667 352 362.6666666666667C312.32 362.6666666666667 277.3333333333333 342.8266666666667 256 312.7466666666667C234.6666666666667 342.8266666666667 199.68 362.6666666666667 160 362.6666666666667M64 181.3333333333334C52.2666666666667 181.3333333333334 42.6666666666667 171.7333333333334 42.6666666666667 160S52.2666666666667 138.6666666666667 64 138.6666666666667H116.0533333333333L234.6666666666667 21.3333333333334C256 2.1333333333334 256 2.1333333333334 277.3333333333333 21.3333333333334L395.9466666666666 138.6666666666667H448C459.7333333333333 138.6666666666667 469.3333333333333 148.2666666666667 469.3333333333333 160S459.7333333333333 181.3333333333334 448 181.3333333333334H285.8666666666667L266.0266666666667 132.2666666666667C257.4933333333334 110.72 232.96 113.7066666666667 225.0666666666667 131.6266666666667L181.3333333333333 245.3333333333334L160.8533333333333 195.6266666666667C157.6533333333333 187.52 150.4 181.3333333333334 140.8 181.3333333333334H64z" /> + <glyph glyph-name="help" + unicode="&#xF2D6;" + horiz-adv-x="512" d=" M213.3333333333333 42.6666666666667H277.3333333333333V-21.3333333333333H213.3333333333333V42.6666666666667M256 405.3333333333333C370.1333333333334 400.64 419.84 285.44 352 199.04C334.2933333333333 177.7066666666667 305.7066666666667 163.6266666666667 291.6266666666667 145.7066666666667C277.3333333333333 128 277.3333333333333 106.6666666666667 277.3333333333333 85.3333333333334H213.3333333333333C213.3333333333333 120.96 213.3333333333333 151.04 227.6266666666667 172.3733333333333C241.7066666666667 193.7066666666667 270.2933333333333 206.2933333333334 288 220.3733333333333C339.6266666666667 268.1600000000001 326.8266666666667 335.7866666666667 256 341.3333333333334C220.5866666666667 341.3333333333334 192 312.7466666666667 192 277.3333333333334H128C128 347.9466666666667 185.3866666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="help-circle" + unicode="&#xF2D7;" + horiz-adv-x="512" d=" M321.4933333333334 208L302.2933333333333 188.3733333333333C286.9333333333333 173.0133333333333 277.3333333333333 160 277.3333333333333 128H234.6666666666667V138.6666666666667C234.6666666666667 162.3466666666667 244.2666666666667 183.68 259.6266666666667 199.04L286.08 225.92C293.9733333333333 233.6 298.6666666666667 244.2666666666667 298.6666666666667 256C298.6666666666667 279.68 279.4666666666667 298.6666666666667 256 298.6666666666667S213.3333333333333 279.4666666666667 213.3333333333333 256H170.6666666666667C170.6666666666667 303.1466666666667 208.8533333333333 341.3333333333334 256 341.3333333333334S341.3333333333333 303.1466666666667 341.3333333333333 256C341.3333333333333 237.2266666666667 333.6533333333333 220.3733333333333 321.4933333333334 208M277.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="help-circle-outline" + unicode="&#xF625;" + horiz-adv-x="512" d=" M234.6666666666667 64H277.3333333333333V106.6666666666667H234.6666666666667V64M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667H213.3333333333333C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334S298.6666666666667 258.1333333333334 298.6666666666667 234.6666666666667C298.6666666666667 192 234.6666666666667 197.3333333333334 234.6666666666667 128H277.3333333333333C277.3333333333333 176 341.3333333333333 181.3333333333334 341.3333333333333 234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320z" /> + <glyph glyph-name="hexagon" + unicode="&#xF2D8;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96z" /> + <glyph glyph-name="hexagon-outline" + unicode="&#xF2D9;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L106.6666666666667 275.4133333333334V108.5866666666667L256 24.5333333333333L405.3333333333333 108.5866666666667V275.4133333333334L256 359.4666666666667z" /> + <glyph glyph-name="highway" + unicode="&#xF5F7;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333L170.6666666666667 277.3333333333334H234.6666666666667V405.3333333333333H213.3333333333333M277.3333333333333 405.3333333333333V277.3333333333334H341.3333333333333L298.6666666666667 405.3333333333333H277.3333333333333M42.6666666666667 256V234.6666666666667H85.3333333333333V213.3333333333334H128V234.6666666666667H384L385.28 213.3333333333334H426.6666666666667V234.6666666666667H469.3333333333333V256H42.6666666666667M149.3333333333333 213.3333333333334L71.2533333333333 -21.3333333333333H234.6666666666667V213.3333333333334H149.3333333333333M277.3333333333333 213.3333333333334V-21.3333333333333H440.7466666666667L362.6666666666667 213.3333333333334H277.3333333333333z" /> + <glyph glyph-name="history" + unicode="&#xF2DA;" + horiz-adv-x="512" d=" M234.6666666666667 298.6666666666667V189.6533333333334L335.1466666666667 130.1333333333334L352 157.4400000000001L266.6666666666667 208V298.6666666666667M266.6666666666667 405.3333333333333C191.36 405.3333333333333 126.08 364.3733333333334 91.0933333333333 303.5733333333334L42.6666666666667 352V213.3333333333334H181.3333333333333L122.6666666666667 272C148.48 325.76 202.6666666666667 362.6666666666667 266.6666666666667 362.6666666666667C354.9866666666667 362.6666666666667 426.6666666666667 290.9866666666667 426.6666666666667 202.6666666666667C426.6666666666667 114.3466666666667 354.9866666666667 42.6666666666667 266.6666666666667 42.6666666666667C196.9066666666667 42.6666666666667 138.0266666666667 87.2533333333333 116.0533333333334 149.3333333333334H71.2533333333333C94.72 63.36 173.0133333333333 0 266.6666666666667 0C378.4533333333334 0 469.3333333333333 90.6666666666667 469.3333333333333 202.6666666666667S378.6666666666667 405.3333333333333 266.6666666666667 405.3333333333333z" /> + <glyph glyph-name="hololens" + unicode="&#xF2DB;" + horiz-adv-x="512" d=" M256 277.3333333333334S469.3333333333333 277.3333333333334 469.3333333333333 213.3333333333334C469.3333333333333 213.3333333333334 471.2533333333333 141.6533333333334 464 144C448 213.3333333333334 256 213.3333333333334 256 213.3333333333334S64 213.3333333333334 48 144C40.7466666666667 141.6533333333334 42.6666666666667 213.3333333333334 42.6666666666667 213.3333333333334C42.6666666666667 277.3333333333334 256 277.3333333333334 256 277.3333333333334M256 192C426.6666666666667 192 442.6666666666667 144 442.6666666666667 144C421.3333333333333 80 405.3333333333333 64 320 64C256 64 277.3333333333333 96 256 96S256 64 192 64C106.6666666666667 64 90.6666666666667 80 69.3333333333333 144C69.3333333333333 144 85.3333333333333 192 256 192z" /> + <glyph glyph-name="home" + unicode="&#xF2DC;" + horiz-adv-x="512" d=" M213.3333333333333 21.3333333333334V149.3333333333334H298.6666666666667V21.3333333333334H405.3333333333333V192H469.3333333333333L256 384L42.6666666666667 192H106.6666666666667V21.3333333333334H213.3333333333333z" /> + <glyph glyph-name="home-map-marker" + unicode="&#xF5F8;" + horiz-adv-x="512" d=" M256 384L42.6666666666667 192H106.6666666666667V21.3333333333334H405.3333333333333V192H469.3333333333333L256 384M256 283.7333333333334C300.8 283.7333333333334 337.0666666666667 247.4666666666667 337.0666666666667 202.6666666666667C337.0666666666667 138.6666666666667 256 64 256 64S174.9333333333333 138.6666666666667 174.9333333333333 202.6666666666667C174.9333333333333 247.4666666666667 211.2 283.7333333333334 256 283.7333333333334M256 234.6666666666667C238.2933333333333 234.6666666666667 224 220.3733333333333 224 202.6666666666667S238.2933333333333 170.6666666666667 256 170.6666666666667S288 184.96 288 202.6666666666667S273.7066666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="home-modern" + unicode="&#xF2DD;" + horiz-adv-x="512" d=" M128 0V277.3333333333334C128 300.8 147.2 320 170.6666666666667 320L341.3333333333333 384V320C364.8 320 384 300.8 384 277.3333333333334V0H256V106.6666666666667H170.6666666666667V0H128M298.6666666666667 42.6666666666667H341.3333333333333V106.6666666666667H298.6666666666667V42.6666666666667M170.6666666666667 170.6666666666667H213.3333333333333V256H170.6666666666667V170.6666666666667M256 170.6666666666667H341.3333333333333V256H256V170.6666666666667z" /> + <glyph glyph-name="home-variant" + unicode="&#xF2DE;" + horiz-adv-x="512" d=" M170.6666666666667 21.3333333333334H106.6666666666667V192H42.6666666666667L256 384L469.3333333333333 192H405.3333333333333V21.3333333333334H256V149.3333333333334H170.6666666666667V21.3333333333334M298.6666666666667 149.3333333333334V85.3333333333334H362.6666666666667V149.3333333333334H298.6666666666667z" /> + <glyph glyph-name="hops" + unicode="&#xF2DF;" + horiz-adv-x="512" d=" M448 192S266.6666666666667 234.6666666666667 266.6666666666667 405.3333333333333C266.6666666666667 405.3333333333333 448 405.3333333333333 448 192M64 192C64 405.3333333333333 245.3333333333333 405.3333333333333 245.3333333333333 405.3333333333333C245.3333333333333 234.6666666666667 64 192 64 192M256 309.3333333333334S277.3333333333333 263.2533333333334 320 224C314.88 145.92 256 106.6666666666667 256 106.6666666666667S197.12 145.92 192 224C234.6666666666667 263.2533333333334 256 309.3333333333334 256 309.3333333333334M442.6666666666667 165.3333333333334S426.6666666666667 85.3333333333334 384 42.6666666666667C384 42.6666666666667 331.3066666666666 77.6533333333334 305.7066666666667 132.0533333333334C321.0666666666667 158.2933333333334 330.6666666666667 189.4400000000001 336 210.56C365.44 188.16 400 170.6666666666667 442.6666666666667 165.3333333333334M330.6666666666667 58.6666666666667C309.3333333333333 16 256 -16 256 -16S202.6666666666667 16 181.3333333333333 58.6666666666667C181.3333333333333 58.6666666666667 204.5866666666667 78.08 220.8 110.9333333333333C230.8266666666667 99.2 242.3466666666667 89.8133333333334 256 85.3333333333334C269.6533333333333 89.8133333333334 281.1733333333333 99.2 291.2 110.9333333333333C307.4133333333333 78.08 330.6666666666667 58.6666666666667 330.6666666666667 58.6666666666667M69.3333333333333 165.3333333333334C112 170.6666666666667 146.56 188.16 176 210.56C181.3333333333333 189.4400000000001 190.9333333333333 158.2933333333334 206.2933333333333 132.0533333333334C180.6933333333333 77.6533333333334 128 42.6666666666667 128 42.6666666666667C85.3333333333333 85.3333333333334 69.3333333333333 165.3333333333334 69.3333333333333 165.3333333333334z" /> + <glyph glyph-name="hospital" + unicode="&#xF2E0;" + horiz-adv-x="512" d=" M384 149.3333333333334H298.6666666666667V64H213.3333333333333V149.3333333333334H128V234.6666666666667H213.3333333333333V320H298.6666666666667V234.6666666666667H384M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="hospital-building" + unicode="&#xF2E1;" + horiz-adv-x="512" d=" M42.6666666666667 -21.3333333333333V298.6666666666667C42.6666666666667 310.4 52.2666666666667 320 64 320H149.3333333333333V405.3333333333333H362.6666666666667V320H448C459.7333333333333 320 469.3333333333333 310.4 469.3333333333333 298.6666666666667V-21.3333333333333H298.6666666666667V85.3333333333334H213.3333333333333V-21.3333333333333H42.6666666666667M192 362.6666666666667V234.6666666666667H234.6666666666667V277.3333333333334H277.3333333333333V234.6666666666667H320V362.6666666666667H277.3333333333333V320H234.6666666666667V362.6666666666667H192M85.3333333333333 21.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V21.3333333333334M85.3333333333333 128H170.6666666666667V192H85.3333333333333V128M341.3333333333333 21.3333333333334H426.6666666666667V85.3333333333334H341.3333333333333V21.3333333333334M341.3333333333333 128H426.6666666666667V192H341.3333333333333V128M213.3333333333333 128H298.6666666666667V192H213.3333333333333V128z" /> + <glyph glyph-name="hospital-marker" + unicode="&#xF2E2;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.3466666666667 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 144 256 -21.3333333333333 256 -21.3333333333333S106.6666666666667 144 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333M192 320V192H234.6666666666667V234.6666666666667H277.3333333333333V192H320V320H277.3333333333333V277.3333333333334H234.6666666666667V320H192z" /> + <glyph glyph-name="hotel" + unicode="&#xF2E3;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667H234.6666666666667V149.3333333333334H64V341.3333333333334H21.3333333333333V21.3333333333334H64V85.3333333333334H448V21.3333333333334H490.6666666666666V213.3333333333334C490.6666666666666 260.48 452.48 298.6666666666667 405.3333333333333 298.6666666666667M149.3333333333333 170.6666666666667C184.7466666666667 170.6666666666667 213.3333333333333 199.2533333333333 213.3333333333333 234.6666666666667S184.7466666666667 298.6666666666667 149.3333333333333 298.6666666666667S85.3333333333333 270.0800000000001 85.3333333333333 234.6666666666667S113.92 170.6666666666667 149.3333333333333 170.6666666666667z" /> + <glyph glyph-name="houzz" + unicode="&#xF2E4;" + horiz-adv-x="512" d=" M256 -64V106.6666666666667L108.8 21.3333333333334V362.6666666666667L256 448V277.3333333333334L108.8 192L256 106.6666666666667V277.3333333333334L403.2 362.6666666666667V21.3333333333334L256 -64z" /> + <glyph glyph-name="houzz-box" + unicode="&#xF2E5;" + horiz-adv-x="512" d=" M256 362.6666666666667L158.08 305.28V192L256 249.6V362.6666666666667M256 249.6V21.3333333333334L353.92 78.72V307.2000000000001L256 249.6M256 134.4L158.08 192V76.8000000000001L256 134.4M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="human" + unicode="&#xF2E6;" + horiz-adv-x="512" d=" M448 256H320V-21.3333333333333H277.3333333333333V106.6666666666667H234.6666666666667V-21.3333333333333H192V256H64V298.6666666666667H448M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320C232.32 320 213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667C213.3333333333333 386.3466666666667 232.32 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="human-child" + unicode="&#xF2E7;" + horiz-adv-x="512" d=" M256 405.3333333333333C291.4133333333333 405.3333333333333 320 376.7466666666667 320 341.3333333333334S291.4133333333333 277.3333333333334 256 277.3333333333334S192 305.92 192 341.3333333333334S220.5866666666667 405.3333333333333 256 405.3333333333333M234.6666666666667 -21.3333333333333H170.6666666666667V106.6666666666667H128V256H384V106.6666666666667H341.3333333333333V-21.3333333333333H277.3333333333333V64H234.6666666666667V-21.3333333333333z" /> + <glyph glyph-name="human-female" + unicode="&#xF649;" + horiz-adv-x="512" d=" M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320S213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333M224 -21.3333333333333V106.6666666666667H160L215.2533333333333 268.5866666666667C220.5866666666667 286.0800000000001 236.8 298.6666666666667 256 298.6666666666667C275.2 298.6666666666667 291.4133333333333 286.0800000000001 296.7466666666667 268.5866666666667L352 106.6666666666667H288V-21.3333333333333H224z" /> + <glyph glyph-name="human-greeting" + unicode="&#xF64A;" + horiz-adv-x="512" d=" M32 362.6666666666667V330.6666666666667C32 242.1333333333334 79.1466666666667 164.6933333333333 149.3333333333333 121.6V21.3333333333334H469.3333333333333V64C469.3333333333333 120.7466666666667 355.6266666666667 149.3333333333334 298.6666666666667 149.3333333333334H293.3333333333333C192 149.3333333333334 106.6666666666667 234.6666666666667 106.6666666666667 330.6666666666667V362.6666666666667M298.6666666666667 362.6666666666667C251.52 362.6666666666667 213.3333333333333 324.48 213.3333333333333 277.3333333333334S251.52 192 298.6666666666667 192S384 230.1866666666667 384 277.3333333333334S345.8133333333334 362.6666666666667 298.6666666666667 362.6666666666667z" /> + <glyph glyph-name="human-handsdown" + unicode="&#xF64B;" + horiz-adv-x="512" d=" M256 426.6666666666667C232.32 426.6666666666667 213.3333333333333 407.4666666666667 213.3333333333333 384C213.3333333333333 360.32 232.32 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 360.32 298.6666666666667 384C298.6666666666667 407.4666666666667 279.4666666666667 426.6666666666667 256 426.6666666666667M213.3333333333333 320C207.5733333333333 320 202.6666666666667 317.6533333333333 198.6133333333334 314.0266666666667H198.4L85.3333333333333 200.7466666666667L115.6266666666667 170.6666666666667L192 247.2533333333334V-21.3333333333333H234.6666666666667V128H277.3333333333333V-21.3333333333333H320V247.2533333333334L396.3733333333333 170.6666666666667L426.6666666666667 200.7466666666667L313.6 314.0266666666667C309.3333333333333 317.6533333333333 304.4266666666666 320 298.6666666666667 320" /> + <glyph glyph-name="human-handsup" + unicode="&#xF64C;" + horiz-adv-x="512" d=" M106.6666666666667 426.6666666666667C106.6666666666667 369.0666666666667 139.9466666666667 316.5866666666667 192 291.8400000000001V-21.3333333333333H234.6666666666667V128H277.3333333333333V-21.3333333333333H320V292.0533333333334C372.0533333333334 316.5866666666667 405.3333333333333 369.0666666666667 405.3333333333333 426.6666666666667H362.6666666666667C362.6666666666667 367.7866666666667 314.88 320 256 320S149.3333333333333 367.7866666666667 149.3333333333333 426.6666666666667M256 426.6666666666667C232.32 426.6666666666667 213.3333333333333 407.68 213.3333333333333 384C213.3333333333333 360.32 232.32 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 360.32 298.6666666666667 384C298.6666666666667 407.68 279.68 426.6666666666667 256 426.6666666666667z" /> + <glyph glyph-name="human-male" + unicode="&#xF64D;" + horiz-adv-x="512" d=" M256 405.3333333333333C279.4666666666667 405.3333333333333 298.6666666666667 386.1333333333334 298.6666666666667 362.6666666666667S279.4666666666667 320 256 320S213.3333333333333 339.2000000000001 213.3333333333333 362.6666666666667S232.5333333333334 405.3333333333333 256 405.3333333333333M224 298.6666666666667H288C311.4666666666667 298.6666666666667 330.6666666666667 279.4666666666667 330.6666666666667 256V138.6666666666667H298.6666666666667V-21.3333333333333H213.3333333333333V138.6666666666667H181.3333333333333V256C181.3333333333333 279.4666666666667 200.5333333333333 298.6666666666667 224 298.6666666666667z" /> + <glyph glyph-name="human-male-female" + unicode="&#xF2E8;" + horiz-adv-x="512" d=" M160 405.3333333333333C183.4666666666667 405.3333333333333 202.6666666666667 386.1333333333334 202.6666666666667 362.6666666666667S183.4666666666667 320 160 320S117.3333333333333 339.2000000000001 117.3333333333333 362.6666666666667S136.5333333333333 405.3333333333333 160 405.3333333333333M128 298.6666666666667H192C215.4666666666667 298.6666666666667 234.6666666666667 279.4666666666667 234.6666666666667 256V138.6666666666667H202.6666666666667V-21.3333333333333H117.3333333333333V138.6666666666667H85.3333333333333V256C85.3333333333333 279.4666666666667 104.5333333333333 298.6666666666667 128 298.6666666666667M352 405.3333333333333C375.4666666666667 405.3333333333333 394.6666666666667 386.1333333333334 394.6666666666667 362.6666666666667S375.4666666666667 320 352 320S309.3333333333333 339.2000000000001 309.3333333333333 362.6666666666667S328.5333333333333 405.3333333333333 352 405.3333333333333M320 -21.3333333333333V106.6666666666667H256L311.2533333333334 268.5866666666667C316.5866666666667 286.0800000000001 332.8 298.6666666666667 352 298.6666666666667C371.2 298.6666666666667 387.4133333333333 286.0800000000001 392.7466666666667 268.5866666666667L448 106.6666666666667H384V-21.3333333333333H320z" /> + <glyph glyph-name="human-pregnant" + unicode="&#xF5CF;" + horiz-adv-x="512" d=" M192 362.6666666666667C192 386.3466666666667 210.9866666666667 405.3333333333333 234.6666666666667 405.3333333333333C258.3466666666667 405.3333333333333 277.3333333333333 386.3466666666667 277.3333333333333 362.6666666666667C277.3333333333333 338.9866666666667 258.3466666666667 320 234.6666666666667 320C210.9866666666667 320 192 338.9866666666667 192 362.6666666666667M341.3333333333333 170.6666666666667C341.3333333333333 199.2533333333333 323.6266666666667 224 298.6666666666667 234.6666666666667C298.6666666666667 270.0800000000001 270.08 298.6666666666667 234.6666666666667 298.6666666666667S170.6666666666667 270.0800000000001 170.6666666666667 234.6666666666667V85.3333333333334H213.3333333333333V-21.3333333333333H277.3333333333333V85.3333333333334H341.3333333333333V170.6666666666667z" /> + <glyph glyph-name="image" + unicode="&#xF2E9;" + horiz-adv-x="512" d=" M181.3333333333333 160L234.6666666666667 96L309.3333333333333 192L405.3333333333333 64H106.6666666666667M448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667z" /> + <glyph glyph-name="image-album" + unicode="&#xF2EA;" + horiz-adv-x="512" d=" M128 42.6666666666667L192 125.0133333333333L237.6533333333334 69.9733333333334L301.6533333333333 152.3200000000001L384 42.6666666666667H128M128 362.6666666666667H234.6666666666667V192L181.3333333333333 224L128 192M384 405.3333333333333H128C104.5333333333333 405.3333333333333 85.3333333333333 386.1333333333334 85.3333333333333 362.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="image-area" + unicode="&#xF2EB;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.3466666666667 61.6533333333333 341.3333333333334 85.3333333333333 341.3333333333334H426.6666666666667M106.6666666666667 106.6666666666667H405.3333333333333L309.3333333333333 234.6666666666667L234.6666666666667 138.6666666666667L181.3333333333333 202.6666666666667L106.6666666666667 106.6666666666667z" /> + <glyph glyph-name="image-area-close" + unicode="&#xF2EC;" + horiz-adv-x="512" d=" M256 -42.6666666666666L170.6666666666667 42.6666666666667H341.3333333333333L256 -42.6666666666666M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V128C469.3333333333333 104.5333333333333 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384H426.6666666666667M106.6666666666667 149.3333333333334H405.3333333333333L309.3333333333333 277.3333333333334L234.6666666666667 181.3333333333334L181.3333333333333 245.3333333333334L106.6666666666667 149.3333333333334z" /> + <glyph glyph-name="image-broken" + unicode="&#xF2ED;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V213.3333333333334H405.3333333333333V170.6666666666667H362.6666666666667V128H320V85.3333333333334H277.3333333333333V42.6666666666667H234.6666666666667V0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M448 128V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H320V42.6666666666667H362.6666666666667V85.3333333333334H405.3333333333333V128H448M405.3333333333333 266.6666666666667C405.3333333333333 272.64 400.64 277.3333333333334 394.6666666666667 277.3333333333334H117.3333333333333C111.36 277.3333333333334 106.6666666666667 272.64 106.6666666666667 266.6666666666667V117.3333333333334C106.6666666666667 111.36 111.36 106.6666666666667 117.3333333333333 106.6666666666667H234.6666666666667V128H277.3333333333333V170.6666666666667H320V213.3333333333334H362.6666666666667V256H405.3333333333333V266.6666666666667z" /> + <glyph glyph-name="image-broken-variant" + unicode="&#xF2EE;" + horiz-adv-x="512" d=" M448 341.3333333333334V200.7466666666667L384 264.9600000000001L298.6666666666667 179.4133333333334L213.3333333333333 264.7466666666667L128 179.4133333333334L64 243.6266666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334M384 204.3733333333333L448 140.16V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V183.04L128 119.2533333333333L213.3333333333333 204.5866666666667L298.6666666666667 119.2533333333333" /> + <glyph glyph-name="image-filter" + unicode="&#xF2EF;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M340.48 228.48L281.8133333333334 152.96L240 203.3066666666667L181.3333333333333 128H416L340.48 228.48z" /> + <glyph glyph-name="image-filter-black-white" + unicode="&#xF2F0;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667L256 213.3333333333334V42.6666666666667H106.6666666666667L256 213.3333333333334V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="image-filter-center-focus" + unicode="&#xF2F1;" + horiz-adv-x="512" d=" M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M106.6666666666667 341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V256H106.6666666666667M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667V128z" /> + <glyph glyph-name="image-filter-center-focus-weak" + unicode="&#xF2F2;" + horiz-adv-x="512" d=" M106.6666666666667 128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H192V42.6666666666667H106.6666666666667M106.6666666666667 341.3333333333334H192V384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V256H106.6666666666667M405.3333333333333 384H320V341.3333333333334H405.3333333333333V256H448V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M405.3333333333333 42.6666666666667H320V0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V128H405.3333333333333M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192S208.8533333333333 106.6666666666667 256 106.6666666666667S341.3333333333333 144.8533333333334 341.3333333333333 192S303.1466666666667 277.3333333333334 256 277.3333333333334M256 149.3333333333334C232.5333333333334 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="image-filter-drama" + unicode="&#xF2F3;" + horiz-adv-x="512" d=" M405.3333333333333 64H128C80.8533333333333 64 42.6666666666667 102.1866666666667 42.6666666666667 149.3333333333334S80.8533333333333 234.6666666666667 128 234.6666666666667S213.3333333333333 196.48 213.3333333333333 149.3333333333334H256C256 208.2133333333334 216.32 257.7066666666667 162.1333333333333 272.6400000000001C183.68 301.2266666666667 217.6 320 256 320C320.64 320 373.3333333333333 267.3066666666667 373.3333333333333 202.6666666666667V192H405.3333333333333C440.7466666666667 192 469.3333333333333 163.4133333333334 469.3333333333333 128S440.7466666666667 64 405.3333333333333 64M412.8 233.8133333333334C398.2933333333334 307.4133333333334 333.6533333333333 362.6666666666667 256 362.6666666666667C194.3466666666666 362.6666666666667 141.0133333333333 327.68 114.3466666666667 276.48C50.1333333333333 269.6533333333334 0 215.4666666666667 0 149.3333333333334C0 78.72 57.3866666666667 21.3333333333334 128 21.3333333333334H405.3333333333333C464.2133333333333 21.3333333333334 512 69.1200000000001 512 128C512 184.3200000000001 468.2666666666667 229.9733333333334 412.8 233.8133333333334z" /> + <glyph glyph-name="image-filter-frames" + unicode="&#xF2F4;" + horiz-adv-x="512" d=" M384 277.3333333333334H128V64H384M426.6666666666667 21.3333333333334H85.3333333333333V320H181.3333333333333L256.8533333333333 394.6666666666667L330.6666666666667 320H426.6666666666667M426.6666666666667 362.6666666666667H341.3333333333333L256 448L170.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667z" /> + <glyph glyph-name="image-filter-hdr" + unicode="&#xF2F5;" + horiz-adv-x="512" d=" M298.6666666666667 320L218.6666666666667 213.3333333333334L279.4666666666667 132.2666666666667L245.3333333333333 106.6666666666667C209.28 154.6666666666667 149.3333333333333 234.6666666666667 149.3333333333333 234.6666666666667L21.3333333333333 64H490.6666666666666L298.6666666666667 320z" /> + <glyph glyph-name="image-filter-none" + unicode="&#xF2F6;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="image-filter-tilt-shift" + unicode="&#xF2F7;" + horiz-adv-x="512" d=" M121.1733333333333 26.8800000000001C152.7466666666667 1.0666666666667 192 -16 234.6666666666667 -20.2666666666666V22.8266666666667C203.52 26.6666666666667 175.1466666666667 39.0400000000001 151.4666666666667 57.3866666666667M277.3333333333333 22.8266666666667V-20.2666666666666C320 -16 359.2533333333334 1.0666666666667 390.8266666666667 26.8800000000001L360.32 57.3866666666667C336.8533333333334 39.0400000000001 308.48 26.6666666666667 277.3333333333333 22.8266666666667M390.6133333333333 87.4666666666667L421.12 56.96C446.9333333333333 88.5333333333334 464 128.0000000000001 468.2666666666667 170.6666666666668H425.1733333333333C421.3333333333333 139.5200000000001 408.9599999999999 111.1466666666667 390.6133333333333 87.4666666666667M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192M86.8266666666667 170.6666666666667H43.7333333333333C48 128 65.0666666666667 88.7466666666667 90.88 57.1733333333334L121.3866666666667 87.68C103.04 111.1466666666667 90.6666666666667 139.52 86.8266666666667 170.6666666666667M121.3866666666667 296.5333333333334L90.88 326.8266666666667C65.0666666666667 295.2533333333334 48 256 43.7333333333333 213.3333333333334H86.8266666666667C90.6666666666667 244.48 103.04 272.8533333333334 121.3866666666667 296.5333333333334M425.1733333333333 213.3333333333334H468.2666666666667C464 256 446.9333333333333 295.2533333333334 421.12 326.8266666666667L390.6133333333333 296.5333333333334C408.9599999999999 272.8533333333334 421.3333333333333 244.48 425.1733333333333 213.3333333333334M390.8266666666667 357.12C359.2533333333334 382.9333333333334 320 400 277.3333333333333 404.2666666666667V361.1733333333334C308.48 357.3333333333334 336.8533333333333 344.9600000000001 360.5333333333333 326.6133333333334M234.6666666666667 361.1733333333334V404.2666666666667C192 400 152.7466666666667 382.9333333333334 121.1733333333333 357.12L151.4666666666667 326.6133333333334C175.1466666666667 344.9600000000001 203.52 357.3333333333334 234.6666666666667 361.1733333333334z" /> + <glyph glyph-name="image-filter-vintage" + unicode="&#xF2F8;" + horiz-adv-x="512" d=" M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667M398.9333333333333 183.4666666666667C392.9599999999999 186.88 386.7733333333333 189.6533333333333 380.5866666666667 192C386.7733333333333 194.3466666666667 392.9599999999999 197.12 398.9333333333333 200.5333333333334C439.8933333333333 224 462.7199999999999 266.6666666666667 462.9333333333333 311.2533333333334C424.7466666666667 333.2266666666667 376.1066666666667 334.9333333333334 334.9333333333333 311.2533333333334C328.96 307.8400000000001 323.4133333333333 303.7866666666667 318.2933333333333 299.7333333333334C319.36 306.3466666666667 320 313.1733333333334 320 320C320 367.36 294.1866666666666 408.5333333333334 256 430.7200000000001C217.8133333333333 408.5333333333333 192 367.36 192 320C192 313.1733333333334 192.64 306.3466666666667 193.7066666666667 299.7333333333334C188.5866666666667 304 183.04 308.0533333333334 177.0666666666667 311.4666666666667C136.1066666666667 335.1466666666667 87.4666666666667 333.44 49.0666666666667 311.4666666666667C49.0666666666667 267.3066666666667 71.8933333333334 224 113.0666666666667 200.7466666666667C119.04 197.3333333333334 125.2266666666667 194.56 131.4133333333334 192C125.2266666666667 189.8666666666667 119.04 187.0933333333334 113.0666666666667 183.68C72.1066666666667 160 49.28 117.3333333333334 49.0666666666667 72.96C87.2533333333334 50.9866666666666 135.8933333333334 49.28 177.0666666666667 72.96C183.04 76.3733333333333 188.5866666666667 80.4266666666667 193.7066666666667 84.48C192.64 77.6533333333333 192 70.8266666666666 192 63.9999999999999C192 16.64 217.8133333333333 -24.5333333333334 256 -46.7200000000001C294.1866666666666 -24.5333333333334 320 16.6399999999999 320 63.9999999999999C320 70.8266666666666 319.36 77.6533333333333 318.2933333333333 84.2666666666666C323.4133333333333 79.9999999999999 328.96 76.16 334.9333333333333 72.7466666666666C375.8933333333333 49.0666666666666 424.5333333333333 50.7733333333333 462.9333333333333 72.7466666666666C462.7199999999999 117.3333333333333 439.8933333333333 160 398.9333333333333 183.4666666666667z" /> + <glyph glyph-name="image-multiple" + unicode="&#xF2F9;" + horiz-adv-x="512" d=" M469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667M234.6666666666667 192L277.9733333333333 134.1866666666667L341.3333333333333 213.3333333333334L426.6666666666667 106.6666666666667H170.6666666666667M42.6666666666667 320V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320" /> + <glyph glyph-name="import" + unicode="&#xF2FA;" + horiz-adv-x="512" d=" M298.6666666666667 192L213.3333333333333 277.3333333333334V213.3333333333334H42.6666666666667V170.6666666666667H213.3333333333333V106.6666666666667M426.6666666666667 64V320C426.6666666666667 343.68 407.4666666666667 362.6666666666667 384 362.6666666666667H128C104.5333333333333 362.6666666666667 85.3333333333333 343.4666666666667 85.3333333333333 320V256H128V320H384V64H128V128H85.3333333333333V64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64z" /> + <glyph glyph-name="inbox" + unicode="&#xF2FB;" + horiz-adv-x="512" d=" M341.3333333333333 234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667H170.6666666666667L256 149.3333333333334M405.3333333333333 128H320C320 92.5866666666667 291.4133333333333 64 256 64S192 92.5866666666667 192 128H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="incognito" + unicode="&#xF5F9;" + horiz-adv-x="512" d=" M256 384C198.6133333333334 384 158.08 357.9733333333334 158.08 357.9733333333334L128 256H384L353.92 357.9733333333334S313.3866666666667 384 256 384M256 213.3333333333334C197.76 213.3333333333334 114.9866666666667 201.8133333333334 109.44 200.7466666666667C87.2533333333333 194.7733333333334 69.3333333333333 188.8 55.2533333333333 183.2533333333333C33.7066666666667 176 21.3333333333333 170.6666666666667 21.3333333333333 170.6666666666667H490.6666666666666S478.2933333333334 176 456.7466666666667 183.2533333333333C442.6666666666667 188.8 424.32 194.7733333333333 401.92 200.7466666666667C401.92 200.7466666666667 316.16 213.3333333333334 256 213.3333333333334M160 149.3333333333334C118.8266666666667 149.3333333333334 85.3333333333333 115.84 85.3333333333333 74.6666666666667S118.8266666666667 0 160 0S234.6666666666667 33.4933333333333 234.6666666666667 74.6666666666667C234.6666666666667 78.08 234.6666666666667 81.4933333333333 234.0266666666667 84.6933333333333C240.8533333333334 86.1866666666667 248.1066666666667 87.4666666666666 256 87.2533333333333C263.8933333333333 87.2533333333333 271.1466666666667 86.1866666666667 277.9733333333333 84.6933333333333C277.3333333333333 81.4933333333333 277.3333333333333 78.08 277.3333333333333 74.6666666666667C277.3333333333333 33.4933333333333 310.8266666666667 0 352 0S426.6666666666667 33.4933333333333 426.6666666666667 74.6666666666667S393.1733333333333 149.3333333333334 352 149.3333333333334C320.64 149.3333333333334 293.76 130.1333333333333 282.6666666666667 102.6133333333334C275.84 104.7466666666667 267.7333333333334 106.6666666666667 256 106.6666666666667S236.16 104.7466666666667 229.3333333333333 102.6133333333334C218.24 130.1333333333333 191.36 149.3333333333334 160 149.3333333333334M160 128C189.44 128 213.3333333333333 104.1066666666667 213.3333333333333 74.6666666666667S189.44 21.3333333333334 160 21.3333333333334S106.6666666666667 45.2266666666667 106.6666666666667 74.6666666666667S130.56 128 160 128M352 128C381.44 128 405.3333333333333 104.1066666666667 405.3333333333333 74.6666666666667S381.44 21.3333333333334 352 21.3333333333334S298.6666666666667 45.2266666666667 298.6666666666667 74.6666666666667S322.56 128 352 128z" /> + <glyph glyph-name="information" + unicode="&#xF2FC;" + horiz-adv-x="512" d=" M277.3333333333333 256H234.6666666666667V298.6666666666667H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V213.3333333333334H277.3333333333333M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="information-outline" + unicode="&#xF2FD;" + horiz-adv-x="512" d=" M234.6666666666667 256H277.3333333333333V298.6666666666667H234.6666666666667M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V213.3333333333334H234.6666666666667V85.3333333333334z" /> + <glyph glyph-name="information-variant" + unicode="&#xF64E;" + horiz-adv-x="512" d=" M288 362.6666666666667C270.2933333333333 362.6666666666667 256 348.3733333333334 256 330.6666666666667S270.2933333333333 298.6666666666667 288 298.6666666666667S320 312.9600000000001 320 330.6666666666667S305.7066666666667 362.6666666666667 288 362.6666666666667M280.32 260.9066666666667C254.9333333333334 258.7733333333334 185.6 203.5200000000001 185.6 203.5200000000001C181.3333333333333 200.32 182.6133333333333 200.5333333333334 186.0266666666667 194.56C189.44 188.8000000000001 189.0133333333333 188.3733333333334 193.0666666666666 191.1466666666667C197.3333333333333 193.9200000000001 204.3733333333333 198.4 216.1066666666666 205.6533333333334C261.3333333333333 234.6666666666667 223.36 167.6800000000001 203.9466666666666 54.8266666666667C196.2666666666667 -1.0666666666667 246.6133333333333 27.7333333333334 259.6266666666666 36.2666666666667C272.4266666666666 44.5866666666667 306.7733333333333 68.2666666666667 310.1866666666666 70.6133333333334C314.88 73.8133333333333 311.4666666666667 76.3733333333333 307.84 81.7066666666667C305.28 85.3333333333334 302.72 82.7733333333333 302.72 82.7733333333333C288.8533333333333 73.6 263.4666666666667 54.4 260.0533333333333 66.56C256 78.72 282.0266666666667 162.1333333333333 296.32 219.52C298.6666666666667 233.1733333333333 305.0666666666666 263.04 280.32 260.9066666666667z" /> + <glyph glyph-name="instagram" + unicode="&#xF2FE;" + horiz-adv-x="512" d=" M166.4 405.3333333333333H345.6C413.8666666666666 405.3333333333333 469.3333333333333 349.8666666666667 469.3333333333333 281.6V102.4C469.3333333333333 34.1333333333334 413.8666666666666 -21.3333333333333 345.6 -21.3333333333333H166.4C98.1333333333333 -21.3333333333333 42.6666666666667 34.1333333333334 42.6666666666667 102.4V281.6C42.6666666666667 349.8666666666667 98.1333333333333 405.3333333333333 166.4 405.3333333333333M162.1333333333333 362.6666666666667C119.68 362.6666666666667 85.3333333333333 328.32 85.3333333333333 285.8666666666667V98.1333333333334C85.3333333333333 55.68 119.68 21.3333333333334 162.1333333333333 21.3333333333334H349.8666666666666C392.32 21.3333333333334 426.6666666666667 55.68 426.6666666666667 98.1333333333334V285.8666666666667C426.6666666666667 328.32 392.32 362.6666666666667 349.8666666666666 362.6666666666667H162.1333333333333M368 330.6666666666667C382.7200000000001 330.6666666666667 394.6666666666667 318.7200000000001 394.6666666666667 304S382.7200000000001 277.3333333333334 368 277.3333333333334S341.3333333333333 289.28 341.3333333333333 304S353.28 330.6666666666667 368 330.6666666666667M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334S149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256z" /> + <glyph glyph-name="instapaper" + unicode="&#xF2FF;" + horiz-adv-x="512" d=" M213.3333333333333 341.3333333333334C213.3333333333333 353.0666666666667 203.7333333333334 362.6666666666667 192 362.6666666666667H170.6666666666667V405.3333333333333H341.3333333333333V362.6666666666667H320C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334V42.6666666666667C298.6666666666667 30.9333333333333 308.2666666666667 21.3333333333334 320 21.3333333333334H341.3333333333333V-21.3333333333333H170.6666666666667V21.3333333333334H192C203.7333333333334 21.3333333333334 213.3333333333333 30.9333333333333 213.3333333333333 42.6666666666667V341.3333333333334z" /> + <glyph glyph-name="internet-explorer" + unicode="&#xF300;" + horiz-adv-x="512" d=" M277.3333333333333 384L298.6666666666667 382.7200000000001C358.4 409.8133333333334 410.24 413.0133333333333 437.3333333333333 385.7066666666667C458.6666666666666 364.1600000000001 460.3733333333333 327.04 446.2933333333334 283.3066666666667C461.0133333333333 256 469.3333333333333 225.0666666666667 469.3333333333333 192L468.2666666666667 170.6666666666667H193.7066666666667C201.6 122.0266666666667 235.9466666666667 85.3333333333334 277.3333333333333 85.3333333333334C305.28 85.3333333333334 330.0266666666667 102.1866666666667 345.6 128H458.6666666666666C432 53.3333333333334 360.9600000000001 0 277.3333333333333 0C250.0266666666667 0 224 5.76 200.7466666666667 16C138.6666666666667 -14.5066666666667 82.9866666666667 -19.1999999999999 54.8266666666667 9.3866666666667C21.3333333333333 43.52 35.84 115.84 85.3333333333333 192C105.1733333333333 223.1466666666667 130.9866666666667 254.72 161.4933333333334 284.8L178.7733333333334 301.2266666666667C153.8133333333333 286.5066666666667 121.8133333333334 264.1066666666667 89.3866666666667 231.04C107.3066666666667 318.2933333333334 184.7466666666667 384 277.3333333333333 384M277.3333333333333 298.6666666666667C239.1466666666667 298.6666666666667 206.72 267.3066666666667 195.84 224H358.8266666666667C347.9466666666666 267.3066666666667 315.52 298.6666666666667 277.3333333333333 298.6666666666667M427.9466666666666 361.3866666666667C413.8666666666666 375.68 388.6933333333333 376.5333333333333 357.12 366.7200000000001C388.6933333333333 352 416 329.3866666666667 435.4133333333333 301.0133333333333C442.2399999999999 327.4666666666667 440.32 348.8 427.9466666666666 361.3866666666667M82.9866666666667 21.3333333333334C100.6933333333333 3.4133333333334 136.5333333333333 6.6133333333333 180.0533333333333 26.4533333333333C140.5866666666667 49.7066666666667 110.2933333333333 86.6133333333334 95.36 130.56C69.76 82.1333333333334 64 41.1733333333333 82.9866666666667 21.3333333333334z" /> + <glyph glyph-name="invert-colors" + unicode="&#xF301;" + horiz-adv-x="512" d=" M256 30.2933333333334C221.8666666666667 30.2933333333334 189.6533333333333 43.5200000000001 165.5466666666667 67.6266666666667C141.2266666666667 91.9466666666667 128 123.9466666666667 128 158.2933333333334C128 192 141.2266666666667 224.64 165.5466666666667 248.7466666666667L256 339.2000000000001M376.7466666666667 278.8266666666667L256 399.5733333333333L135.2533333333333 278.8266666666667C68.6933333333333 212.2666666666667 68.6933333333333 104.1066666666667 135.2533333333333 37.5466666666666C168.5333333333333 4.2666666666667 212.2666666666667 -12.3733333333333 256 -12.3733333333333C299.7333333333334 -12.3733333333333 343.4666666666667 4.2666666666668 376.7466666666667 37.5466666666667C443.3066666666667 104.1066666666667 443.3066666666667 212.2666666666667 376.7466666666667 278.8266666666667z" /> + <glyph glyph-name="jeepney" + unicode="&#xF302;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667V298.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333V298.6666666666667H106.6666666666667V170.6666666666667H42.6666666666667C42.6666666666667 150.8266666666667 53.3333333333333 134.1866666666667 74.6666666666667 129.4933333333334V21.3333333333334C74.6666666666667 9.6 84.2666666666667 0 96 0H117.3333333333333C129.0666666666667 0 138.6666666666667 9.6 138.6666666666667 21.3333333333334V42.6666666666667H373.3333333333333V21.3333333333334C373.3333333333333 9.6 382.9333333333333 0 394.6666666666667 0H416C427.7333333333334 0 437.3333333333333 9.6 437.3333333333333 21.3333333333334V129.4933333333334C458.6666666666666 134.4 469.3333333333333 150.8266666666667 469.3333333333333 170.6666666666667H405.3333333333333M170.6666666666667 128C152.96 128 138.6666666666667 142.2933333333334 138.6666666666667 160S152.96 192 170.6666666666667 192S202.6666666666667 177.7066666666667 202.6666666666667 160S188.3733333333333 128 170.6666666666667 128M341.3333333333333 128C323.6266666666667 128 309.3333333333333 142.2933333333334 309.3333333333333 160S323.6266666666667 192 341.3333333333333 192S373.3333333333333 177.7066666666667 373.3333333333333 160S359.04 128 341.3333333333333 128M373.3333333333333 224C339.6266666666667 230.8266666666667 299.3066666666666 234.6666666666667 256 234.6666666666667S170.6666666666667 230.8266666666667 138.6666666666667 224V298.6666666666667H373.3333333333333V224z" /> + <glyph glyph-name="jira" + unicode="&#xF303;" + horiz-adv-x="512" d=" M256 405.3333333333333C274.56 405.3333333333333 289.7066666666667 390.1866666666667 289.7066666666667 371.6266666666667C289.7066666666667 353.0666666666667 274.56 337.92 256 337.92C237.44 337.92 222.2933333333333 353.0666666666667 222.2933333333333 371.6266666666667C222.2933333333333 390.1866666666667 237.44 405.3333333333333 256 405.3333333333333M166.1866666666667 382.9333333333334C184.7466666666667 382.9333333333334 199.8933333333334 367.7866666666667 199.8933333333334 349.2266666666667C199.8933333333334 330.6666666666667 184.7466666666667 315.52 166.1866666666667 315.52C147.6266666666667 315.52 132.48 330.6666666666667 132.48 349.2266666666667C132.48 367.7866666666667 147.6266666666667 382.9333333333334 166.1866666666667 382.9333333333334M345.8133333333334 382.9333333333334C364.3733333333334 382.9333333333334 379.52 367.7866666666667 379.52 349.2266666666667C379.52 330.6666666666667 364.3733333333333 315.52 345.8133333333334 315.52C327.2533333333334 315.52 312.1066666666667 330.6666666666667 312.1066666666667 349.2266666666667C312.1066666666667 367.7866666666667 327.2533333333334 382.9333333333334 345.8133333333334 382.9333333333334M251.7333333333334 214.4C206.9333333333333 259.4133333333334 218.0266666666667 281.8133333333334 218.0266666666667 281.8133333333334H296.7466666666667C296.7466666666667 248.1066666666667 251.7333333333334 214.4 251.7333333333334 214.4M296.7466666666667 -10.0266666666666S296.7466666666667 34.7733333333334 206.9333333333333 124.5866666666667C117.3333333333333 214.4 105.8133333333333 237.0133333333333 94.5066666666667 304.2133333333334C94.5066666666667 304.2133333333334 103.04 315.52 114.3466666666667 304.2133333333334C125.44 293.12 150.8266666666667 284.5866666666667 173.2266666666666 284.5866666666667C173.2266666666666 284.5866666666667 195.6266666666667 214.4 257.4933333333334 169.6C257.4933333333334 169.6 338.7733333333333 253.6533333333333 338.7733333333333 287.36C338.7733333333333 287.36 364.16 281.8133333333334 394.6666666666667 304.2133333333333C394.6666666666667 304.2133333333333 416 315.52 417.4933333333334 304.2133333333333C420.2666666666667 281.8133333333334 397.6533333333333 203.3066666666666 305.0666666666667 124.5866666666667C305.0666666666667 124.5866666666667 364.16 57.1733333333334 358.4 -10.0266666666666H296.7466666666667M195.6266666666667 102.1866666666667L243.4133333333334 48.8533333333334C221.0133333333333 26.4533333333333 218.0266666666667 -21.3333333333333 218.0266666666667 -21.3333333333333H150.8266666666667C161.92 68.48 195.6266666666667 102.1866666666667 195.6266666666667 102.1866666666667z" /> + <glyph glyph-name="jsfiddle" + unicode="&#xF304;" + horiz-adv-x="512" d=" M433.7066666666666 217.8133333333334C467.1999999999999 203.9466666666667 490.6666666666666 171.5200000000001 490.6666666666666 133.7600000000001C490.6666666666666 83.4133333333334 449.28 42.6666666666667 398.2933333333334 42.6666666666667H115.2C64 43.52 21.3333333333333 85.3333333333334 21.3333333333333 136.1066666666667C21.3333333333333 170.0266666666667 39.8933333333333 199.8933333333334 67.6266666666667 216.1066666666667C65.7066666666667 222.08 64.8533333333333 228.48 64.8533333333333 234.6666666666667C64.8533333333333 270.0800000000001 93.6533333333333 298.6666666666667 129.28 298.6666666666667C144 298.6666666666667 157.6533333333333 293.3333333333334 168.5333333333333 285.0133333333333C191.1466666666667 331.3066666666667 238.9333333333333 363.52 294.6133333333334 363.52C371.6266666666667 363.52 434.1333333333334 301.8666666666667 434.1333333333334 225.92C434.1333333333334 223.1466666666667 433.92 220.3733333333333 433.7066666666667 217.8133333333333M196.6933333333334 216.5333333333333C158.9333333333333 216.5333333333334 128 189.4400000000001 128 156.3733333333333C128 123.0933333333334 158.9333333333333 96 196.6933333333333 96C218.6666666666667 96 238.2933333333333 105.3866666666667 250.88 119.68L229.3333333333334 144C222.2933333333334 134.8266666666667 208.4266666666667 128 196.6933333333334 128C179.8400000000001 128 166.1866666666667 140.8 166.1866666666667 156.3733333333333C166.1866666666667 171.7333333333334 179.8400000000001 184.3200000000001 196.6933333333334 184.3200000000001C206.7200000000001 184.3200000000001 215.8933333333334 179.4133333333334 225.2800000000001 173.2266666666667C234.6666666666667 167.2533333333334 250.2400000000001 145.7066666666667 262.6133333333334 131.84C293.7600000000001 100.48 309.9733333333334 97.7066666666667 328.5333333333334 97.7066666666667C366.2933333333334 97.7066666666667 396.8 124.8000000000001 396.8 157.8666666666667C396.8 191.1466666666668 366.2933333333334 218.0266666666667 328.5333333333334 218.0266666666667C306.3466666666667 218.0266666666667 286.7200000000001 208.8533333333334 274.1333333333334 194.5600000000001L295.68 170.6666666666667C302.72 179.4133333333334 316.5866666666667 186.0266666666667 328.5333333333333 186.0266666666667C345.3866666666666 186.0266666666667 359.04 173.4400000000001 359.04 157.8666666666667C359.04 142.5066666666667 345.3866666666666 129.92 328.5333333333333 129.92C318.5066666666666 129.92 309.3333333333333 134.8266666666667 299.7333333333333 141.0133333333333C290.3466666666667 146.9866666666667 274.7733333333333 168.5333333333333 262.6133333333333 182.4C231.2533333333333 213.3333333333333 215.04 216.5333333333333 196.6933333333333 216.5333333333333z" /> + <glyph glyph-name="json" + unicode="&#xF626;" + horiz-adv-x="512" d=" M106.6666666666667 384H149.3333333333333V341.3333333333334H106.6666666666667V234.6666666666667C106.6666666666667 211.2 87.4666666666667 192 64 192C87.4666666666667 192 106.6666666666667 172.8 106.6666666666667 149.3333333333334V42.6666666666667H149.3333333333333V0H106.6666666666667C83.84 5.76 64 19.2 64 42.6666666666667V128C64 151.4666666666667 44.8 170.6666666666667 21.3333333333333 170.6666666666667H0V213.3333333333334H21.3333333333333C44.8 213.3333333333334 64 232.5333333333334 64 256V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V256C448 232.5333333333334 467.1999999999999 213.3333333333334 490.6666666666666 213.3333333333334H512V170.6666666666667H490.6666666666666C467.1999999999999 170.6666666666667 448 151.4666666666667 448 128V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H362.6666666666667V42.6666666666667H405.3333333333333V149.3333333333334C405.3333333333333 172.8 424.5333333333333 192 448 192C424.5333333333333 192 405.3333333333333 211.2 405.3333333333333 234.6666666666667V341.3333333333334H362.6666666666667V384H405.3333333333333M256 128C267.7333333333334 128 277.3333333333333 118.4 277.3333333333333 106.6666666666667S267.7333333333334 85.3333333333334 256 85.3333333333334S234.6666666666667 94.9333333333333 234.6666666666667 106.6666666666667S244.2666666666667 128 256 128M170.6666666666667 128C182.4 128 192 118.4 192 106.6666666666667S182.4 85.3333333333334 170.6666666666667 85.3333333333334S149.3333333333333 94.9333333333333 149.3333333333333 106.6666666666667S158.9333333333333 128 170.6666666666667 128M341.3333333333333 128C353.0666666666667 128 362.6666666666667 118.4 362.6666666666667 106.6666666666667S353.0666666666667 85.3333333333334 341.3333333333333 85.3333333333334S320 94.9333333333333 320 106.6666666666667S329.6 128 341.3333333333333 128z" /> + <glyph glyph-name="keg" + unicode="&#xF305;" + horiz-adv-x="512" d=" M106.6666666666667 -21.3333333333333V21.3333333333334H128V106.6666666666667H106.6666666666667V149.3333333333334H128V213.3333333333334H106.6666666666667V298.6666666666667H234.6666666666667V384H213.3333333333333V405.3333333333333H298.6666666666667V384H277.3333333333333V298.6666666666667H405.3333333333333V213.3333333333334H384V149.3333333333334H405.3333333333333V106.6666666666667H384V21.3333333333334H405.3333333333333V-21.3333333333333H106.6666666666667M362.6666666666667 256C362.6666666666667 267.7333333333334 353.0666666666667 277.3333333333334 341.3333333333333 277.3333333333334H298.6666666666667C286.9333333333333 277.3333333333334 277.3333333333333 267.7333333333334 277.3333333333333 256S286.9333333333333 234.6666666666667 298.6666666666667 234.6666666666667H341.3333333333333C353.0666666666667 234.6666666666667 362.6666666666667 244.2666666666667 362.6666666666667 256z" /> + <glyph glyph-name="kettle" + unicode="&#xF5FA;" + horiz-adv-x="512" d=" M266.6666666666667 384C166.6133333333333 384 85.3333333333333 326.6133333333334 85.3333333333333 256C85.3333333333333 230.6133333333334 96 206.08 116.0533333333333 184.96C96.64 160 85.3333333333333 128.8533333333334 85.3333333333333 96V21.3333333333334C85.3333333333333 -2.3466666666666 104.32 -21.3333333333333 128 -21.3333333333333H405.3333333333333C429.0133333333333 -21.3333333333333 448 -2.3466666666666 448 21.3333333333334V96C448 122.0266666666667 440.7466666666667 147.84 426.6666666666667 170.6666666666667L469.3333333333333 213.3333333333334L405.3333333333333 277.3333333333334L360.5333333333333 232.5333333333334C332.3733333333334 247.8933333333333 299.7333333333334 256 266.6666666666667 256C227.2 256 190.9333333333333 244.6933333333334 161.0666666666667 225.92C153.3866666666667 235.3066666666667 149.3333333333333 245.3333333333334 149.3333333333333 256C149.3333333333333 294.1866666666667 201.8133333333333 325.3333333333334 266.6666666666667 325.3333333333334C297.1733333333333 325.3333333333334 326.4 318.2933333333334 348.3733333333333 305.7066666666667L391.4666666666666 348.8C357.76 371.4133333333334 313.1733333333333 384 266.6666666666667 384M266.6666666666667 213.3333333333334C273.92 213.3333333333334 280.96 212.48 288 211.4133333333334C221.6533333333333 201.1733333333334 170.6666666666667 144 170.6666666666667 74.6666666666667V21.3333333333334H128V74.6666666666667C128 151.2533333333333 190.08 213.3333333333334 266.6666666666667 213.3333333333334z" /> + <glyph glyph-name="key" + unicode="&#xF306;" + horiz-adv-x="512" d=" M149.3333333333333 149.3333333333334C125.8666666666667 149.3333333333334 106.6666666666667 168.5333333333334 106.6666666666667 192S125.8666666666667 234.6666666666667 149.3333333333333 234.6666666666667S192 215.4666666666667 192 192S172.8 149.3333333333334 149.3333333333333 149.3333333333334M269.8666666666667 234.6666666666667C252.3733333333334 284.3733333333334 205.0133333333333 320 149.3333333333333 320C78.72 320 21.3333333333333 262.6133333333334 21.3333333333333 192S78.72 64 149.3333333333333 64C205.0133333333333 64 252.3733333333334 99.6266666666667 269.8666666666667 149.3333333333334H362.6666666666667V64H448V149.3333333333334H490.6666666666666V234.6666666666667H269.8666666666667z" /> + <glyph glyph-name="key-change" + unicode="&#xF307;" + horiz-adv-x="512" d=" M138.6666666666667 405.3333333333333C180.48 405.3333333333333 216.1066666666666 378.6666666666667 229.12 341.3333333333334H469.3333333333333V277.3333333333334H384V213.3333333333334H320V277.3333333333334H229.12C216.1066666666667 240 180.48 213.3333333333334 138.6666666666667 213.3333333333334C85.3333333333333 213.3333333333334 42.6666666666667 256 42.6666666666667 309.3333333333334S85.3333333333333 405.3333333333333 138.6666666666667 405.3333333333333M138.6666666666667 341.3333333333334C120.96 341.3333333333334 106.6666666666667 327.04 106.6666666666667 309.3333333333334S120.96 277.3333333333334 138.6666666666667 277.3333333333334S170.6666666666667 291.6266666666667 170.6666666666667 309.3333333333334S156.3733333333333 341.3333333333334 138.6666666666667 341.3333333333334M138.6666666666667 170.6666666666667C180.48 170.6666666666667 216.1066666666666 144 229.12 106.6666666666667H469.3333333333333V42.6666666666667H426.6666666666667V-21.3333333333333H384V42.6666666666667H341.3333333333333V-21.3333333333333H277.3333333333333V42.6666666666667H229.12C216.1066666666667 5.3333333333334 180.48 -21.3333333333333 138.6666666666667 -21.3333333333333C85.3333333333333 -21.3333333333333 42.6666666666667 21.3333333333334 42.6666666666667 74.6666666666667S85.3333333333333 170.6666666666667 138.6666666666667 170.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 92.3733333333333 106.6666666666667 74.6666666666667S120.96 42.6666666666667 138.6666666666667 42.6666666666667S170.6666666666667 56.96 170.6666666666667 74.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667z" /> + <glyph glyph-name="key-minus" + unicode="&#xF308;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M170.6666666666667 85.3333333333334H341.3333333333333V42.6666666666667H170.6666666666667V85.3333333333334z" /> + <glyph glyph-name="key-plus" + unicode="&#xF309;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M170.6666666666667 85.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V85.3333333333334H341.3333333333333V42.6666666666667H277.3333333333333V-21.3333333333333H234.6666666666667V42.6666666666667H170.6666666666667V85.3333333333334z" /> + <glyph glyph-name="key-remove" + unicode="&#xF30A;" + horiz-adv-x="512" d=" M138.6666666666667 384C180.48 384 216.1066666666666 357.3333333333334 229.12 320H469.3333333333333V256H384V192H320V256H229.12C216.1066666666667 218.6666666666667 180.48 192 138.6666666666667 192C85.3333333333333 192 42.6666666666667 234.6666666666667 42.6666666666667 288S85.3333333333333 384 138.6666666666667 384M138.6666666666667 320C120.96 320 106.6666666666667 305.7066666666667 106.6666666666667 288S120.96 256 138.6666666666667 256S170.6666666666667 270.2933333333334 170.6666666666667 288S156.3733333333333 320 138.6666666666667 320M311.2533333333334 149.3333333333334L341.3333333333333 119.2533333333333L286.08 64L341.3333333333333 8.7466666666667L311.2533333333334 -21.3333333333333L256 33.92L200.7466666666667 -21.3333333333333L170.6666666666667 8.7466666666667L225.92 64L170.6666666666667 119.2533333333333L200.7466666666667 149.3333333333334L256 94.08L311.2533333333334 149.3333333333334z" /> + <glyph glyph-name="key-variant" + unicode="&#xF30B;" + horiz-adv-x="512" d=" M469.3333333333333 64V-21.3333333333333H384V42.6666666666667H320V106.6666666666667H256L207.7866666666667 154.88C196.0533333333333 151.2533333333333 183.68 149.3333333333334 170.6666666666667 149.3333333333334C100.0533333333333 149.3333333333334 42.6666666666667 206.72 42.6666666666667 277.3333333333334S100.0533333333333 405.3333333333333 170.6666666666667 405.3333333333333S298.6666666666667 347.9466666666667 298.6666666666667 277.3333333333334C298.6666666666667 264.3200000000001 296.7466666666667 251.9466666666667 293.12 240.2133333333334L469.3333333333333 64M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334z" /> + <glyph glyph-name="keyboard" + unicode="&#xF30C;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H362.6666666666667V277.3333333333334H405.3333333333333M405.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334H405.3333333333333M341.3333333333333 234.6666666666667H298.6666666666667V277.3333333333334H341.3333333333333M341.3333333333333 170.6666666666667H298.6666666666667V213.3333333333334H341.3333333333333M341.3333333333333 85.3333333333334H170.6666666666667V128H341.3333333333333M149.3333333333333 234.6666666666667H106.6666666666667V277.3333333333334H149.3333333333333M149.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H149.3333333333333M170.6666666666667 213.3333333333334H213.3333333333333V170.6666666666667H170.6666666666667M170.6666666666667 277.3333333333334H213.3333333333333V234.6666666666667H170.6666666666667M234.6666666666667 213.3333333333334H277.3333333333333V170.6666666666667H234.6666666666667M234.6666666666667 277.3333333333334H277.3333333333333V234.6666666666667H234.6666666666667M426.6666666666667 341.3333333333334H85.3333333333333C61.6533333333333 341.3333333333334 42.6666666666667 322.3466666666667 42.6666666666667 298.6666666666667V85.3333333333334C42.6666666666667 61.8666666666667 61.8666666666667 42.6666666666667 85.3333333333333 42.6666666666667H426.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 61.8666666666667 469.3333333333333 85.3333333333334V298.6666666666667C469.3333333333333 322.3466666666667 450.1333333333334 341.3333333333334 426.6666666666667 341.3333333333334z" /> + <glyph glyph-name="keyboard-backspace" + unicode="&#xF30D;" + horiz-adv-x="512" d=" M448 213.3333333333334H145.7066666666667L222.08 289.92L192 320L64 192L192 64L222.08 94.2933333333334L145.7066666666667 170.6666666666667H448V213.3333333333334z" /> + <glyph glyph-name="keyboard-caps" + unicode="&#xF30E;" + horiz-adv-x="512" d=" M128 64H384V106.6666666666667H128M256 268.5866666666667L353.92 170.6666666666667L384 200.96L256 328.9600000000001L128 200.96L158.08 170.6666666666667L256 268.5866666666667z" /> + <glyph glyph-name="keyboard-close" + unicode="&#xF30F;" + horiz-adv-x="512" d=" M256 -42.6666666666666L341.3333333333333 42.6666666666667H170.6666666666667M405.3333333333333 277.3333333333334H362.6666666666667V320H405.3333333333333M405.3333333333333 213.3333333333334H362.6666666666667V256H405.3333333333333M341.3333333333333 277.3333333333334H298.6666666666667V320H341.3333333333333M341.3333333333333 213.3333333333334H298.6666666666667V256H341.3333333333333M341.3333333333333 128H170.6666666666667V170.6666666666667H341.3333333333333M149.3333333333333 277.3333333333334H106.6666666666667V320H149.3333333333333M149.3333333333333 213.3333333333334H106.6666666666667V256H149.3333333333333M170.6666666666667 256H213.3333333333333V213.3333333333334H170.6666666666667M170.6666666666667 320H213.3333333333333V277.3333333333334H170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 320H277.3333333333333V277.3333333333334H234.6666666666667M426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V128C42.6666666666667 104.5333333333333 61.8666666666667 85.3333333333334 85.3333333333333 85.3333333333334H426.6666666666667C450.1333333333334 85.3333333333334 469.3333333333333 104.5333333333333 469.3333333333333 128V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="keyboard-off" + unicode="&#xF310;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L335.5733333333333 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 309.3333333333334 46.5066666666667 318.5066666666667 52.48 325.76L21.3333333333333 356.9066666666667M405.3333333333333 234.6666666666667V277.3333333333334H362.6666666666667V234.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333M341.3333333333333 234.6666666666667V277.3333333333334H298.6666666666667V234.6666666666667H341.3333333333333M341.3333333333333 170.6666666666667V213.3333333333334H298.6666666666667V188.16L252.16 234.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667V252.1600000000001L209.4933333333334 277.3333333333334L145.4933333333334 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 66.9866666666667 457.8133333333333 51.4133333333334 441.6 45.44L316.16 170.6666666666667H341.3333333333333M170.6666666666667 128V85.3333333333334H292.9066666666667L250.24 128H170.6666666666667M106.6666666666667 234.6666666666667H143.5733333333333L106.6666666666667 271.5733333333334V234.6666666666667M149.3333333333333 170.6666666666667V213.3333333333334H106.6666666666667V170.6666666666667H149.3333333333333M170.6666666666667 170.6666666666667H207.5733333333333L170.6666666666667 207.5733333333334V170.6666666666667z" /> + <glyph glyph-name="keyboard-return" + unicode="&#xF311;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667V213.3333333333334H124.3733333333333L200.7466666666667 289.92L170.6666666666667 320L42.6666666666667 192L170.6666666666667 64L200.7466666666667 94.2933333333334L124.3733333333333 170.6666666666667H448V298.6666666666667H405.3333333333333z" /> + <glyph glyph-name="keyboard-tab" + unicode="&#xF312;" + horiz-adv-x="512" d=" M426.6666666666667 64H469.3333333333333V320H426.6666666666667M247.2533333333334 289.92L323.6266666666667 213.3333333333334H21.3333333333333V170.6666666666667H323.6266666666667L247.2533333333334 94.2933333333334L277.3333333333333 64L405.3333333333333 192L277.3333333333333 320L247.2533333333334 289.92z" /> + <glyph glyph-name="keyboard-variant" + unicode="&#xF313;" + horiz-adv-x="512" d=" M128 106.6666666666667H384V64H128V106.6666666666667M128 170.6666666666667V128H42.6666666666667V170.6666666666667H128M149.3333333333333 128V170.6666666666667H213.3333333333333V128H149.3333333333333M234.6666666666667 128V170.6666666666667H277.3333333333333V128H234.6666666666667M298.6666666666667 128V170.6666666666667H362.6666666666667V128H298.6666666666667M384 128V170.6666666666667H469.3333333333333V128H384M42.6666666666667 234.6666666666667H106.6666666666667V192H42.6666666666667V234.6666666666667M405.3333333333333 192V234.6666666666667H469.3333333333333V192H405.3333333333333M384 192H341.3333333333333V234.6666666666667H384V192M170.6666666666667 192H128V234.6666666666667H170.6666666666667V192M256 192H192V234.6666666666667H256V192M320 192H277.3333333333333V234.6666666666667H320V192M42.6666666666667 256V298.6666666666667H85.3333333333333V256H42.6666666666667M106.6666666666667 256V298.6666666666667H149.3333333333333V256H106.6666666666667M170.6666666666667 256V298.6666666666667H213.3333333333333V256H170.6666666666667M234.6666666666667 256V298.6666666666667H277.3333333333333V256H234.6666666666667M298.6666666666667 256V298.6666666666667H341.3333333333333V256H298.6666666666667M362.6666666666667 256V298.6666666666667H469.3333333333333V256H362.6666666666667z" /> + <glyph glyph-name="kodi" + unicode="&#xF314;" + horiz-adv-x="512" d=" M256.64 426.6666666666667C252.16 426.6666666666667 247.4666666666667 424.32 243.4133333333334 420.0533333333334L189.44 366.0800000000001C184.7466666666667 361.3866666666667 183.4666666666667 358.8266666666667 178.7733333333334 354.56C172.5866666666667 349.44 169.8133333333333 343.2533333333334 170.0266666666667 335.36C170.6666666666667 307.8400000000001 170.6666666666667 280.7466666666667 170.6666666666667 253.2266666666667V167.2533333333333C170.6666666666667 165.12 170.6666666666667 163.4133333333334 171.3066666666667 161.28C173.0133333333333 154.6666666666667 177.28 153.1733333333334 181.9733333333333 158.0800000000001C207.5733333333333 183.68 230.4 206.9333333333333 256 232.7466666666667C285.0133333333333 261.76 314.24 290.7733333333334 343.2533333333334 320C352 328.5333333333334 352 338.1333333333334 343.2533333333334 346.6666666666667C318.72 371.2 293.76 395.3066666666667 269.44 420.0533333333334C265.1733333333333 424.32 261.12 426.6666666666667 256.64 426.6666666666667M398.08 284.5866666666667C393.6 284.5866666666667 389.3333333333333 282.6666666666667 385.28 278.6133333333334C360.7466666666667 253.8666666666667 336 229.5466666666667 311.2533333333333 204.5866666666667C302.9333333333333 196.2666666666667 302.9333333333333 187.0933333333334 311.2533333333333 178.56C335.7866666666667 154.0266666666667 360.1066666666667 129.28 384.64 104.7466666666667C393.1733333333333 96 402.1333333333333 96 410.6666666666666 104.7466666666667C434.3466666666666 128 458.6666666666666 152.1066666666667 481.9199999999999 176C485.5466666666666 179.6266666666667 489.1733333333332 183.04 490.6666666666666 187.9466666666667V194.56C489.1733333333332 199.68 485.5466666666666 202.6666666666667 481.9199999999999 206.72C458.0266666666665 230.6133333333334 434.56 254.7200000000001 410.6666666666666 278.6133333333334C406.6133333333333 282.6666666666668 402.3466666666666 284.5866666666667 398.08 284.5866666666667M101.9733333333333 275.4133333333334C99.1999999999999 276.4800000000001 97.7066666666666 274.3466666666667 95.9999999999999 272.6400000000001C71.4666666666666 247.6800000000001 49.9199999999999 225.4933333333334 25.3866666666666 200.7466666666667C19.8399999999999 194.9866666666667 19.8399999999999 186.88 25.3866666666666 181.3333333333334C38.6133333333332 167.8933333333333 52.0533333333332 154.6666666666667 65.2799999999999 141.2266666666667C76.7999999999999 129.7066666666667 85.3333333333332 120.96 97.2799999999999 109.2266666666667C100.6933333333332 106.0266666666668 103.6799999999999 106.6666666666667 105.3866666666666 110.72C106.6666666666665 112.8533333333334 106.6666666666665 115.6266666666667 106.6666666666665 117.9733333333334V263.8933333333333C106.6666666666665 265.6 106.6666666666665 267.7333333333334 106.0266666666665 269.2266666666667C105.5999999999999 272 104.5333333333332 274.3466666666667 101.9733333333332 275.4133333333333M257.9199999999999 144C253.6533333333332 144 248.7466666666665 142.08 244.6933333333332 138.0266666666667C220.1599999999999 113.28 195.8399999999998 88.1066666666667 171.3066666666665 63.36C162.7733333333332 54.8266666666667 162.7733333333332 45.8666666666667 171.3066666666665 37.3333333333334C194.9866666666665 13.44 218.8799999999999 -10.0266666666666 242.7733333333332 -33.92C246.1866666666666 -37.5466666666667 249.8133333333332 -41.1733333333333 254.7199999999999 -42.6666666666666H260.6933333333332C265.3866666666666 -41.3866666666667 269.2266666666665 -38.1866666666666 272.6399999999999 -34.7733333333333C296.5333333333332 -10.6666666666666 320.6399999999999 13.2266666666667 344.7466666666665 37.3333333333334C353.0666666666665 45.8666666666667 351.9999999999999 55.4666666666667 344.1066666666665 64C319.3599999999998 88.7466666666667 295.2533333333332 113.28 270.7199999999998 138.0266666666667C266.6666666666665 142.0800000000001 262.3999999999998 144 257.9199999999999 144z" /> + <glyph glyph-name="label" + unicode="&#xF315;" + horiz-adv-x="512" d=" M376.1066666666667 323.4133333333334C368.4266666666666 334.2933333333334 355.6266666666667 341.3333333333334 341.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H341.3333333333333C355.6266666666667 42.6666666666667 368.4266666666666 49.92 376.1066666666667 60.8000000000001L469.3333333333333 192L376.1066666666667 323.4133333333334z" /> + <glyph glyph-name="label-outline" + unicode="&#xF316;" + horiz-adv-x="512" d=" M341.3333333333333 85.3333333333334H106.6666666666667V298.6666666666667H341.3333333333333L417.0666666666667 192M376.1066666666667 323.4133333333334C368.4266666666666 334.2933333333334 355.6266666666667 341.3333333333334 341.3333333333333 341.3333333333334H106.6666666666667C83.2 341.3333333333334 64 322.1333333333334 64 298.6666666666667V85.3333333333334C64 61.8666666666667 83.2 42.6666666666667 106.6666666666667 42.6666666666667H341.3333333333333C355.6266666666667 42.6666666666667 368.4266666666666 49.92 376.1066666666667 60.8000000000001L469.3333333333333 192L376.1066666666667 323.4133333333334z" /> + <glyph glyph-name="lambda" + unicode="&#xF627;" + horiz-adv-x="512" d=" M128 21.3333333333334L216.7466666666667 279.2533333333334L199.2533333333333 320H170.6666666666667V362.6666666666667H213.3333333333333C222.2933333333333 362.6666666666667 229.9733333333333 357.12 233.1733333333333 349.2266666666667L355.4133333333333 64H384V21.3333333333334H341.3333333333333C332.16 21.3333333333334 324.48 27.0933333333334 321.4933333333334 34.9866666666667L241.7066666666667 220.8000000000001L173.2266666666666 21.3333333333334H128z" /> + <glyph glyph-name="lan" + unicode="&#xF317;" + horiz-adv-x="512" d=" M213.3333333333333 405.3333333333333C189.6533333333333 405.3333333333333 170.6666666666667 386.3466666666667 170.6666666666667 362.6666666666667V298.6666666666667C170.6666666666667 274.9866666666667 189.6533333333333 256 213.3333333333333 256H234.6666666666667V213.3333333333334H42.6666666666667V170.6666666666667H128V128H106.6666666666667C82.9866666666667 128 64 109.0133333333333 64 85.3333333333334V21.3333333333334C64 -2.3466666666666 82.9866666666667 -21.3333333333333 106.6666666666667 -21.3333333333333H192C215.68 -21.3333333333333 234.6666666666667 -2.3466666666666 234.6666666666667 21.3333333333334V85.3333333333334C234.6666666666667 109.0133333333333 215.68 128 192 128H170.6666666666667V170.6666666666667H341.3333333333333V128H320C296.32 128 277.3333333333333 109.0133333333333 277.3333333333333 85.3333333333334V21.3333333333334C277.3333333333333 -2.3466666666666 296.32 -21.3333333333333 320 -21.3333333333333H405.3333333333333C429.0133333333333 -21.3333333333333 448 -2.3466666666666 448 21.3333333333334V85.3333333333334C448 109.0133333333333 429.0133333333333 128 405.3333333333333 128H384V170.6666666666667H469.3333333333333V213.3333333333334H277.3333333333333V256H298.6666666666667C322.3466666666667 256 341.3333333333333 274.9866666666667 341.3333333333333 298.6666666666667V362.6666666666667C341.3333333333333 386.3466666666667 322.3466666666667 405.3333333333333 298.6666666666667 405.3333333333333H213.3333333333333M213.3333333333333 362.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V362.6666666666667M106.6666666666667 85.3333333333334H192V21.3333333333334H106.6666666666667V85.3333333333334M320 85.3333333333334H405.3333333333333V21.3333333333334H320V85.3333333333334z" /> + <glyph glyph-name="lan-connect" + unicode="&#xF318;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M64 170.6666666666667V21.3333333333334H213.3333333333333V64H106.6666666666667V170.6666666666667H64M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128z" /> + <glyph glyph-name="lan-disconnect" + unicode="&#xF319;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M82.7733333333333 160.8533333333334L52.48 130.56L97.92 85.3333333333334L52.48 40.1066666666667L82.7733333333333 9.8133333333334L128 55.2533333333333L173.2266666666667 9.8133333333334L203.52 40.1066666666667L158.08 85.3333333333334L203.52 130.5600000000001L173.2266666666666 160.8533333333334L128 115.4133333333334L82.7733333333333 160.8533333333334M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128z" /> + <glyph glyph-name="lan-pending" + unicode="&#xF31A;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667C61.6533333333333 426.6666666666667 42.6666666666667 407.68 42.6666666666667 384V298.6666666666667C42.6666666666667 274.9866666666667 61.6533333333333 256 85.3333333333333 256H21.3333333333333V213.3333333333334H277.3333333333333V256H213.3333333333333C237.0133333333333 256 256 274.9866666666667 256 298.6666666666667V384C256 407.68 237.0133333333333 426.6666666666667 213.3333333333333 426.6666666666667H85.3333333333333M85.3333333333333 384H213.3333333333333V298.6666666666667H85.3333333333333V384M64 192V149.3333333333334H106.6666666666667V192H64M298.6666666666667 170.6666666666667C274.9866666666667 170.6666666666667 256 151.68 256 128V42.6666666666667C256 18.9866666666667 274.9866666666667 0 298.6666666666667 0H234.6666666666667V-42.6666666666666H490.6666666666666V0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V128C469.3333333333333 151.68 450.3466666666667 170.6666666666667 426.6666666666667 170.6666666666667H298.6666666666667M64 128V85.3333333333334H106.6666666666667V128H64M298.6666666666667 128H426.6666666666667V42.6666666666667H298.6666666666667V128M64 64V21.3333333333334H106.6666666666667V64H64M128 64V21.3333333333334H170.6666666666667V64H128M192 64V21.3333333333334H234.6666666666667V64H192z" /> + <glyph glyph-name="language-c" + unicode="&#xF671;" + horiz-adv-x="512" d=" M329.6 107.3066666666667L338.56 55.2533333333333C333.0133333333333 52.2666666666667 324.0533333333333 49.4933333333333 312.1066666666667 46.9333333333333C299.9466666666666 44.16 285.6533333333333 42.6666666666667 269.2266666666667 42.6666666666667C222.08 43.52 186.6666666666667 57.6 162.9866666666666 84.48C138.6666666666666 111.5733333333334 127.1466666666667 145.92 127.1466666666667 187.5200000000001C128 236.8 142.5066666666667 274.56 170.6666666666667 301.0133333333333C197.9733333333333 327.68 232.96 341.3333333333334 275.2 341.3333333333334C291.2 341.3333333333334 305.0666666666667 339.8400000000001 316.5866666666667 337.28S336.64 331.9466666666667 342.1866666666666 328.7466666666667L329.3866666666667 275.6266666666667L307.2 282.88C298.6666666666667 285.0133333333333 288.64 286.08 277.3333333333333 286.08C252.8 286.2933333333333 232.32 278.4 216.32 262.6133333333334C200.1066666666666 247.04 192 223.1466666666667 191.1466666666667 191.36C191.36 162.3466666666667 199.04 139.7333333333334 214.1866666666667 123.0933333333334C229.3333333333333 106.6666666666667 250.4533333333333 98.1333333333334 277.9733333333333 97.92L306.3466666666667 100.48C315.52 102.1866666666667 323.2 104.5333333333334 329.6 107.3066666666667z" /> + <glyph glyph-name="language-cpp" + unicode="&#xF672;" + horiz-adv-x="512" d=" M224 107.3066666666667L232.7466666666667 55.2533333333333C227.2 52.2666666666667 218.24 49.4933333333333 206.2933333333333 46.9333333333333C194.1333333333333 44.16 179.84 42.6666666666667 163.4133333333333 42.6666666666667C116.2666666666667 43.52 80.8533333333333 57.6 57.1733333333333 84.48C33.28 111.5733333333334 21.3333333333333 145.92 21.3333333333333 187.52C22.4 236.8 36.6933333333333 274.56 64 301.0133333333333C92.16 327.68 127.1466666666667 341.3333333333334 169.3866666666667 341.3333333333334C185.3866666666667 341.3333333333334 199.2533333333333 339.8400000000001 210.7733333333334 337.28S230.8266666666667 331.9466666666667 236.3733333333334 328.7466666666667L224 275.6266666666667L201.3866666666667 282.88C192.8533333333333 285.0133333333333 183.04 286.08 171.7333333333333 286.08C146.9866666666666 286.2933333333333 126.5066666666666 278.4 110.5066666666666 262.6133333333334C94.2933333333333 247.04 85.9733333333333 223.1466666666667 85.3333333333333 191.36C85.3333333333333 162.3466666666667 93.2266666666667 139.7333333333334 108.3733333333333 123.0933333333334C123.52 106.6666666666667 144.8533333333333 98.1333333333334 172.16 97.92L200.5333333333333 100.48C209.7066666666667 102.1866666666667 217.3866666666667 104.5333333333334 224 107.3066666666667M234.6666666666667 213.3333333333334H277.3333333333333V256H320V213.3333333333334H362.6666666666667V170.6666666666667H320V128H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334M384 213.3333333333334H426.6666666666667V256H469.3333333333333V213.3333333333334H512V170.6666666666667H469.3333333333333V128H426.6666666666667V170.6666666666667H384V213.3333333333334z" /> + <glyph glyph-name="language-csharp" + unicode="&#xF31B;" + horiz-adv-x="512" d=" M245.3333333333333 107.3066666666667L254.08 55.2533333333333C248.5333333333334 52.2666666666667 239.5733333333333 49.4933333333333 227.6266666666667 46.9333333333333C215.4666666666667 44.16 201.1733333333333 42.6666666666667 184.7466666666667 42.6666666666667C137.6 43.52 102.1866666666667 57.6 78.5066666666667 84.48C54.6133333333333 111.5733333333334 42.6666666666667 145.92 42.6666666666667 187.52C43.7333333333333 236.8 58.0266666666667 274.56 85.3333333333333 301.0133333333333C113.4933333333334 327.68 148.48 341.3333333333334 190.72 341.3333333333334C206.72 341.3333333333334 220.5866666666667 339.8400000000001 232.1066666666667 337.28S252.16 331.9466666666667 257.7066666666666 328.7466666666667L245.3333333333333 275.6266666666667L222.72 282.88C214.1866666666666 285.0133333333333 204.3733333333333 286.08 193.0666666666666 286.08C168.3199999999999 286.2933333333333 147.8399999999999 278.4 131.8399999999999 262.6133333333334C115.6266666666666 247.04 107.3066666666666 223.1466666666667 106.6666666666666 191.36C106.6666666666666 162.3466666666667 114.56 139.7333333333334 129.7066666666666 123.0933333333334C144.8533333333333 106.6666666666667 166.1866666666666 98.1333333333334 193.4933333333333 97.92L221.8666666666666 100.48C231.0399999999999 102.1866666666667 238.72 104.5333333333334 245.3333333333333 107.3066666666667M296.32 42.6666666666667L309.3333333333333 128H277.3333333333333L284.5866666666667 170.6666666666667H316.5866666666667L323.4133333333333 213.3333333333334H291.4133333333333L298.6666666666667 256H330.6666666666667L343.68 341.3333333333334H386.3466666666667L373.3333333333333 256H394.6666666666667L407.68 341.3333333333334H450.3466666666667L437.3333333333333 256H469.3333333333333L462.08 213.3333333333334H430.08L423.2533333333334 170.6666666666667H455.2533333333333L448 128H416L402.9866666666667 42.6666666666667H360.32L373.3333333333333 128H352L338.9866666666667 42.6666666666667H296.32M359.2533333333334 170.6666666666667H380.5866666666667L387.4133333333333 213.3333333333334H366.08L359.2533333333334 170.6666666666667z" /> + <glyph glyph-name="language-css3" + unicode="&#xF31C;" + horiz-adv-x="512" d=" M106.6666666666667 384L92.8 312.7466666666667H382.7199999999999L373.3333333333333 266.6666666666667H83.6266666666667L69.5466666666667 195.6266666666667H359.4666666666667L343.2533333333334 114.3466666666667L226.3466666666667 75.7333333333334L125.0133333333333 114.3466666666667L132.0533333333333 149.3333333333334H60.8L43.9466666666667 64L211.4133333333333 0L404.48 64L430.08 192.6400000000001L435.2 218.4533333333334L468.0533333333333 384H106.6666666666667z" /> + <glyph glyph-name="language-html5" + unicode="&#xF31D;" + horiz-adv-x="512" d=" M256 73.3866666666667L342.8266666666667 97.4933333333333L354.56 227.6266666666667H200.1066666666667L196.2666666666667 270.9333333333334H358.3999999999999L362.6666666666666 313.3866666666667H149.3333333333333L161.28 185.1733333333334H308.2666666666667L303.36 130.1333333333333L256 117.3333333333334L208.6399999999999 130.1333333333333L205.6533333333333 165.5466666666667H162.9866666666666L169.1733333333333 97.4933333333333L256 73.3866666666667M86.8266666666667 384H425.1733333333333L394.6666666666667 38.4L256 0L117.3333333333333 38.4L86.8266666666667 384z" /> + <glyph glyph-name="language-javascript" + unicode="&#xF31E;" + horiz-adv-x="512" d=" M64 384H448V0H64V384M164.9066666666667 63.1466666666667C173.44 45.0133333333333 190.2933333333333 30.08 219.0933333333333 30.08C251.0933333333333 30.08 273.0666666666666 47.1466666666667 273.0666666666666 84.48V207.7866666666667H236.8V85.3333333333334C236.8 66.9866666666667 229.3333333333333 62.2933333333334 217.6 62.2933333333334C205.2266666666666 62.2933333333334 200.1066666666666 70.8266666666667 194.3466666666666 80.8533333333334L164.9066666666667 63.1466666666668M292.48 66.9866666666668C303.1466666666667 46.0800000000001 324.6933333333334 30.0800000000001 358.4 30.0800000000001C392.5333333333334 30.0800000000001 418.1333333333334 47.7866666666668 418.1333333333334 80.4266666666667C418.1333333333334 110.5066666666668 400.8533333333334 123.9466666666667 370.1333333333334 137.1733333333334L361.1733333333333 141.0133333333334C345.6 147.6266666666668 338.9866666666667 152.1066666666668 338.9866666666667 162.7733333333334C338.9866666666667 171.5200000000001 345.6 178.3466666666668 356.2666666666667 178.3466666666668C366.5066666666667 178.3466666666668 373.3333333333333 173.8666666666667 379.52 162.7733333333334L407.4666666666666 181.3333333333334C395.7333333333333 201.8133333333334 379.0933333333333 209.7066666666667 356.2666666666667 209.7066666666667C324.0533333333333 209.7066666666667 303.36 189.2266666666667 303.36 162.1333333333334C303.36 132.6933333333334 320.64 118.8266666666667 346.6666666666667 107.7333333333334L355.6266666666667 103.8933333333334C372.2666666666667 96.64 382.08 92.16 382.08 79.7866666666668C382.08 69.5466666666667 372.48 62.0800000000001 357.5466666666667 62.0800000000001C339.8400000000001 62.0800000000001 329.6 71.2533333333335 321.92 84.0533333333335L292.48 66.9866666666668z" /> + <glyph glyph-name="language-php" + unicode="&#xF31F;" + horiz-adv-x="512" d=" M256 62.2933333333334C114.56 62.2933333333334 0 120.3200000000001 0 192.0000000000001S114.56 321.7066666666667 256 321.7066666666667S512 263.68 512 192S397.44 62.2933333333334 256 62.2933333333334M145.28 231.8933333333334C156.8 231.8933333333334 164.6933333333333 229.7600000000001 168.5333333333333 225.2800000000001C172.3733333333333 221.0133333333334 173.2266666666666 213.3333333333334 171.3066666666667 203.3066666666667C169.1733333333333 192.0000000000001 165.12 184.7466666666667 158.9333333333333 180.0533333333334C152.96 175.36 143.7866666666666 173.0133333333334 131.4133333333333 173.0133333333334H112.8533333333333L124.16 231.8933333333334H145.28M70.6133333333333 113.4933333333334H101.3333333333333L108.5866666666667 150.8266666666667H134.8266666666667C146.3466666666667 150.8266666666667 155.7333333333334 152.1066666666667 163.2 154.4533333333334C170.6666666666667 157.0133333333333 177.4933333333334 161.0666666666667 183.68 166.8266666666667C188.8 171.5200000000001 192.8533333333333 176.6400000000001 196.0533333333333 182.4C199.2533333333333 187.9466666666667 201.6 194.3466666666667 202.6666666666667 201.1733333333334C206.08 217.8133333333334 203.7333333333334 230.8266666666667 195.6266666666667 240.0000000000001C187.3066666666667 249.3866666666667 174.5066666666667 253.8666666666668 156.8 253.8666666666668H97.92L70.6133333333333 113.4933333333334M225.28 291.2000000000001L197.9733333333333 150.8266666666667H228.2666666666667L244.0533333333333 231.2533333333334H268.3733333333334C276.0533333333333 231.2533333333334 281.1733333333333 229.9733333333334 283.52 227.4133333333334C285.8666666666666 224.8533333333334 286.2933333333333 220.1600000000001 285.0133333333333 213.3333333333334L272.8533333333333 150.8266666666667H303.7866666666667L316.3733333333333 216.3200000000001C319.1466666666667 229.5466666666667 317.0133333333333 239.1466666666668 310.6133333333333 245.3333333333334C304.2133333333333 251.0933333333334 292.48 253.8666666666668 275.4133333333333 253.8666666666668H248.32L256 291.2000000000001H225.28M384 231.8933333333333C395.7333333333334 231.8933333333333 403.4133333333333 229.76 407.2533333333334 225.28C411.0933333333333 221.0133333333333 411.9466666666666 213.3333333333333 410.0266666666667 203.3066666666667C407.8933333333333 192 403.84 184.7466666666667 397.8666666666666 180.0533333333334C391.68 175.36 382.5066666666667 173.0133333333333 370.1333333333333 173.0133333333333H351.9999999999999L362.6666666666666 231.8933333333333H383.9999999999999M309.3333333333333 113.4933333333334H340.0533333333333L347.3066666666666 150.8266666666667H373.3333333333333C385.0666666666666 150.8266666666667 394.6666666666666 152.1066666666667 402.1333333333333 154.4533333333334C409.6 157.0133333333333 415.9999999999999 161.0666666666667 422.3999999999999 166.8266666666667C427.5199999999999 171.5200000000001 431.7866666666667 176.6400000000001 434.7733333333332 182.4C437.9733333333332 187.9466666666667 440.32 194.3466666666667 441.5999999999999 201.1733333333334C444.7999999999999 217.8133333333334 442.4533333333332 230.8266666666667 434.3466666666666 240.0000000000001C426.6666666666666 249.3866666666667 413.2266666666666 253.8666666666668 395.5199999999999 253.8666666666668H336.8533333333333L309.3333333333333 113.4933333333334z" /> + <glyph glyph-name="language-python" + unicode="&#xF320;" + horiz-adv-x="512" d=" M408.32 288C442.0266666666667 288 469.3333333333333 260.6933333333334 469.3333333333333 226.9866666666667V146.3466666666667C469.3333333333333 112.6400000000001 442.0266666666667 85.3333333333334 408.32 85.3333333333334H256C256 77.0133333333333 262.8266666666667 64.8533333333334 271.1466666666667 64.8533333333334H362.6666666666667V29.0133333333333C362.6666666666667 -4.6933333333333 335.36 -32 301.6533333333333 -32H210.3466666666666C176.64 -32 149.3333333333333 -4.6933333333333 149.3333333333333 29.0133333333333V109.0133333333333C149.3333333333333 142.72 176.64 169.8133333333333 210.3466666666666 169.8133333333333H322.3466666666667C356.0533333333333 169.8133333333333 383.1466666666667 197.12 383.1466666666667 230.8266666666667V288H408.32M317.0133333333333 36.48C308.48 36.48 301.6533333333333 30.08 301.6533333333333 17.4933333333333C301.6533333333333 4.9066666666667 308.48 2.3466666666667 317.0133333333333 2.3466666666667C325.3333333333333 2.3466666666667 332.16 9.1733333333333 332.16 17.4933333333333C332.16 30.08 325.3333333333333 36.48 317.0133333333333 36.48M103.68 74.6666666666667C69.9733333333333 74.6666666666667 42.6666666666667 101.9733333333334 42.6666666666667 135.68V216.32C42.6666666666667 250.0266666666667 69.9733333333333 277.3333333333334 103.68 277.3333333333334H256C256 285.6533333333333 249.1733333333333 297.8133333333334 240.8533333333333 297.8133333333334H149.3333333333333V333.6533333333333C149.3333333333333 367.36 176.64 394.6666666666667 210.3466666666666 394.6666666666667H301.6533333333333C335.36 394.6666666666667 362.6666666666667 367.36 362.6666666666667 333.6533333333333V253.6533333333334C362.6666666666667 219.9466666666667 335.36 192.8533333333334 301.6533333333333 192.8533333333334H189.6533333333333C155.9466666666667 192.8533333333334 128.8533333333334 165.5466666666668 128.8533333333334 131.84V74.6666666666667H103.68M194.9866666666667 326.1866666666667C203.52 326.1866666666667 210.3466666666667 332.5866666666667 210.3466666666667 345.1733333333334C210.3466666666667 357.76 203.52 360.32 194.9866666666667 360.32C186.6666666666667 360.32 179.84 357.76 179.84 345.1733333333334S186.6666666666667 326.1866666666667 194.9866666666667 326.1866666666667z" /> + <glyph glyph-name="language-python-text" + unicode="&#xF321;" + horiz-adv-x="512" d=" M42.6666666666667 326.6133333333334C190.2933333333333 425.1733333333334 236.8 298.6666666666667 240.64 228.9066666666667C244.48 159.36 176.8533333333333 71.68 91.9466666666667 129.7066666666667V14.9333333333333L42.6666666666667 47.5733333333334V326.6133333333334M90.0266666666667 290.1333333333334V175.36C167.2533333333333 129.0666666666667 193.7066666666667 167.04 193.7066666666667 232.7466666666667C193.7066666666667 325.5466666666666 140.16 328.7466666666667 90.0266666666667 290.1333333333334M321.7066666666666 359.4666666666667S317.8666666666666 285.0133333333333 321.7066666666666 211.84C329.3866666666666 138.6666666666666 420.0533333333333 195.4133333333333 420.0533333333333 195.4133333333333V343.04L469.3333333333333 337.0666666666667V139.9466666666667C469.3333333333333 8.5333333333333 338.1333333333334 14.9333333333333 338.1333333333334 14.9333333333333L321.7066666666667 64C436.48 64 421.9733333333334 140.16 421.9733333333334 140.16C283.0933333333334 85.9733333333334 272.4266666666667 178.9866666666667 272.4266666666667 178.9866666666667V326.6133333333334L321.7066666666667 359.4666666666667z" /> + <glyph glyph-name="laptop" + unicode="&#xF322;" + horiz-adv-x="512" d=" M85.3333333333333 320H426.6666666666667V106.6666666666667H85.3333333333333M426.6666666666667 64C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H0V21.3333333333334H512V64H426.6666666666667z" /> + <glyph glyph-name="laptop-chromebook" + unicode="&#xF323;" + horiz-adv-x="512" d=" M426.6666666666667 128H85.3333333333333V341.3333333333334H426.6666666666667M298.6666666666667 64H213.3333333333333V85.3333333333334H298.6666666666667M469.3333333333333 64V384H42.6666666666667V64H0V21.3333333333334H512V64H469.3333333333333z" /> + <glyph glyph-name="laptop-mac" + unicode="&#xF324;" + horiz-adv-x="512" d=" M256 42.6666666666667C244.2666666666667 42.6666666666667 234.6666666666667 52.2666666666667 234.6666666666667 64S244.2666666666667 85.3333333333334 256 85.3333333333334S277.3333333333333 75.7333333333334 277.3333333333333 64S267.7333333333334 42.6666666666667 256 42.6666666666667M85.3333333333333 341.3333333333334H426.6666666666667V106.6666666666667H85.3333333333333M426.6666666666667 64C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H0C0 40.5333333333333 19.2 21.3333333333334 42.6666666666667 21.3333333333334H469.3333333333333C492.8 21.3333333333334 512 40.5333333333333 512 64H426.6666666666667z" /> + <glyph glyph-name="laptop-windows" + unicode="&#xF325;" + horiz-adv-x="512" d=" M64 362.6666666666667H448C459.7333333333333 362.6666666666667 469.3333333333333 353.0666666666667 469.3333333333333 341.3333333333334V106.6666666666667C469.3333333333333 94.9333333333333 459.7333333333333 85.3333333333334 448 85.3333333333334H469.3333333333333L512 21.3333333333334V0H0V21.3333333333334L42.6666666666667 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667V341.3333333333334C42.6666666666667 353.0666666666667 52.2666666666667 362.6666666666667 64 362.6666666666667M85.3333333333333 320V128H426.6666666666667V320H85.3333333333333z" /> + <glyph glyph-name="lastfm" + unicode="&#xF326;" + horiz-adv-x="512" d=" M384 65.4933333333333C339.6266666666667 65.7066666666667 315.9466666666667 87.4666666666667 299.52 126.0800000000001L294.8266666666666 136.5333333333334L254.2933333333333 229.76C240.8533333333333 262.6133333333334 207.36 285.0133333333333 169.8133333333333 285.0133333333333C118.8266666666666 285.0133333333333 77.44 243.4133333333334 77.44 192S118.8266666666666 98.9866666666667 169.8133333333333 98.9866666666667C205.2266666666666 98.9866666666667 236.3733333333333 119.2533333333333 251.7333333333333 149.3333333333334L268.1599999999999 110.72C245.3333333333333 82.1333333333334 209.4933333333334 64 169.8133333333333 64C99.6266666666667 64 42.6666666666667 121.1733333333334 42.6666666666667 192C42.6666666666667 262.6133333333334 99.6266666666667 320 169.8133333333333 320C222.72 320 265.6 291.4133333333334 287.36 241.0666666666667C288.8533333333333 237.0133333333334 310.1866666666666 186.8800000000001 328.9599999999999 144.2133333333334C340.4799999999999 117.3333333333334 350.2933333333333 100.0533333333334 382.08 98.9866666666667C413.4399999999999 97.92 434.9866666666666 117.3333333333334 434.9866666666666 141.4400000000001C434.9866666666666 165.12 418.56 170.6666666666667 390.8266666666666 180.0533333333334C341.3333333333333 196.48 315.5199999999999 213.3333333333334 315.5199999999999 252.8000000000001C315.5199999999999 291.6266666666667 341.3333333333333 317.4400000000001 383.9999999999999 317.4400000000001C411.9466666666666 317.4400000000001 431.7866666666665 305.0666666666667 445.6533333333333 280.3200000000001L418.56 266.6666666666667C408.32 280.7466666666667 397.0133333333332 286.5066666666667 382.7199999999999 286.5066666666667C362.6666666666666 286.5066666666667 348.3733333333333 272.4266666666667 348.3733333333333 253.8666666666667C348.3733333333333 227.4133333333334 371.84 223.36 404.6933333333333 212.6933333333334C448.8533333333333 198.1866666666667 469.3333333333333 181.3333333333334 469.3333333333333 140.3733333333333C469.3333333333333 97.0666666666667 432.4266666666666 65.4933333333333 384 65.4933333333333z" /> + <glyph glyph-name="launch" + unicode="&#xF327;" + horiz-adv-x="512" d=" M298.6666666666667 384V341.3333333333334H375.2533333333334L165.5466666666667 131.6266666666667L195.6266666666667 101.5466666666667L405.3333333333333 311.2533333333334V234.6666666666667H448V384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V192H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="layers" + unicode="&#xF328;" + horiz-adv-x="512" d=" M256 106.6666666666667L413.0133333333333 228.9066666666667L448 256L256 405.3333333333333L64 256L98.7733333333333 228.9066666666667M256 52.48L98.56 174.72L64 147.84L256 -1.4933333333333L448 147.84L413.2266666666667 174.9333333333333L256 52.48z" /> + <glyph glyph-name="layers-off" + unicode="&#xF329;" + horiz-adv-x="512" d=" M69.76 426.6666666666667L42.6666666666667 399.5733333333333L132.6933333333333 309.3333333333334L64 256L98.7733333333333 228.9066666666667L256 106.6666666666667L300.8 141.44L331.3066666666666 110.9333333333333L256 52.48L98.7733333333333 174.72L64 147.84L256 -1.4933333333333L361.6 80.64L442.24 0L469.3333333333333 27.0933333333334L69.76 426.6666666666667M413.0133333333333 228.9066666666667L448 256L256 405.3333333333333L193.92 356.9066666666667L361.8133333333334 188.8000000000001L413.0133333333333 228.9066666666667M422.6133333333333 128L448 147.84L417.4933333333334 178.3466666666667L392.1066666666667 158.72L422.6133333333333 128z" /> + <glyph glyph-name="lead-pencil" + unicode="&#xF64F;" + horiz-adv-x="512" d=" M359.2533333333334 389.76C350.9333333333333 389.76 342.8266666666667 386.56 336.4266666666666 380.3733333333334L291.2 335.1466666666667L404.2666666666667 221.8666666666667L449.4933333333334 266.6666666666667C462.2933333333334 279.68 462.2933333333334 299.9466666666667 449.4933333333334 312.3200000000001L381.8666666666666 380.3733333333334C375.4666666666666 386.56 367.36 389.76 359.2533333333334 389.76M276.0533333333333 320L103.2533333333333 146.9866666666667L157.8666666666667 141.0133333333334L161.7066666666667 92.16L210.3466666666666 88.5333333333333L216.5333333333333 33.92L389.3333333333333 206.9333333333333M90.6666666666667 127.1466666666667L53.3333333333333 -15.5733333333333L196.2666666666667 22.6133333333333L191.1466666666667 68.6933333333333L141.8666666666666 72.3200000000001L138.0266666666667 121.8133333333334" /> + <glyph glyph-name="leaf" + unicode="&#xF32A;" + horiz-adv-x="512" d=" M362.6666666666667 277.3333333333334C170.6666666666667 234.6666666666667 125.8666666666667 103.04 81.4933333333333 -7.2533333333333L121.8133333333333 -21.3333333333333L142.08 27.7333333333334C152.32 24.1066666666667 162.9866666666667 21.3333333333334 170.6666666666667 21.3333333333334C405.3333333333333 21.3333333333334 469.3333333333333 384 469.3333333333333 384C448 341.3333333333334 298.6666666666667 336 192 314.6666666666667S42.6666666666667 202.6666666666667 42.6666666666667 160S80 80 80 80C149.3333333333333 277.3333333333334 362.6666666666667 277.3333333333334 362.6666666666667 277.3333333333334z" /> + <glyph glyph-name="led-off" + unicode="&#xF32B;" + horiz-adv-x="512" d=" M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320z" /> + <glyph glyph-name="led-on" + unicode="&#xF32C;" + horiz-adv-x="512" d=" M234.6666666666667 448V362.6666666666667H277.3333333333333V448H234.6666666666667M390.4 399.1466666666667L325.12 335.1466666666667L354.9866666666667 304.8533333333334L420.2666666666667 368.8533333333334L390.4 399.1466666666667M121.8133333333334 399.1466666666667L91.52 368.8533333333334L155.52 304.8533333333334L185.8133333333333 335.1466666666667L121.8133333333334 399.1466666666667M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320M42.6666666666667 256V213.3333333333334H128V256H42.6666666666667M384 256V213.3333333333334H469.3333333333333V256H384z" /> + <glyph glyph-name="led-outline" + unicode="&#xF32D;" + horiz-adv-x="512" d=" M256 320C208.8533333333333 320 170.6666666666667 281.8133333333334 170.6666666666667 234.6666666666667V106.6666666666667H128V64H192V-42.6666666666666H234.6666666666667V64H277.3333333333333V-42.6666666666666H320V64H384V106.6666666666667H341.3333333333333V234.6666666666667C341.3333333333333 281.8133333333334 303.1466666666667 320 256 320M256 277.3333333333334C279.4666666666667 277.3333333333334 298.6666666666667 258.1333333333334 298.6666666666667 234.6666666666667V128H213.3333333333333V234.6666666666667C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334z" /> + <glyph glyph-name="led-variant-off" + unicode="&#xF32E;" + horiz-adv-x="512" d=" M256 384C214.4 384 179.84 354.1333333333334 172.3733333333333 314.6666666666667L358.8266666666667 128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384M69.9733333333333 362.6666666666667L42.6666666666667 335.5733333333334L170.6666666666667 207.5733333333334V170.6666666666667H128V128H192V0H234.6666666666667V128H250.24L277.3333333333333 100.9066666666667V0H320V58.24L399.5733333333333 -21.3333333333333L426.6666666666667 5.9733333333334L320 112.6400000000001L170.6666666666667 261.9733333333334L69.9733333333333 362.6666666666667z" /> + <glyph glyph-name="led-variant-on" + unicode="&#xF32F;" + horiz-adv-x="512" d=" M256 384C208.8533333333333 384 170.6666666666667 345.8133333333334 170.6666666666667 298.6666666666667V170.6666666666667H128V128H192V0H234.6666666666667V128H277.3333333333333V0H320V128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384z" /> + <glyph glyph-name="led-variant-outline" + unicode="&#xF330;" + horiz-adv-x="512" d=" M256 384C208.8533333333333 384 170.6666666666667 345.8133333333334 170.6666666666667 298.6666666666667V170.6666666666667H128V128H192V0H234.6666666666667V128H277.3333333333333V0H320V128H384V170.6666666666667H341.3333333333333V298.6666666666667C341.3333333333333 345.8133333333334 303.1466666666667 384 256 384M256 341.3333333333334C279.4666666666667 341.3333333333334 298.6666666666667 322.1333333333334 298.6666666666667 298.6666666666667V192H213.3333333333333V298.6666666666667C213.3333333333333 322.1333333333334 232.5333333333334 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="library" + unicode="&#xF331;" + horiz-adv-x="512" d=" M256 277.3333333333334C291.4133333333333 277.3333333333334 320 305.92 320 341.3333333333334S291.4133333333333 405.3333333333333 256 405.3333333333333S192 376.7466666666667 192 341.3333333333334S220.5866666666667 277.3333333333334 256 277.3333333333334M256 201.8133333333334C205.6533333333333 248.5333333333334 138.6666666666667 277.3333333333334 64 277.3333333333334V42.6666666666667C138.6666666666667 42.6666666666667 205.6533333333333 13.8666666666667 256 -32.8533333333333C306.3466666666667 13.8666666666667 373.3333333333333 42.6666666666667 448 42.6666666666667V277.3333333333334C373.3333333333333 277.3333333333334 306.3466666666667 248.5333333333334 256 201.8133333333334z" /> + <glyph glyph-name="library-books" + unicode="&#xF332;" + horiz-adv-x="512" d=" M405.3333333333333 298.6666666666667H192V341.3333333333334H405.3333333333333M320 128H192V170.6666666666667H320M405.3333333333333 213.3333333333334H192V256H405.3333333333333M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="library-music" + unicode="&#xF333;" + horiz-adv-x="512" d=" M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333M384 298.6666666666667H320V181.3333333333334C320 151.8933333333334 296.1066666666667 128 266.6666666666667 128S213.3333333333333 151.8933333333333 213.3333333333333 181.3333333333334S237.2266666666667 234.6666666666667 266.6666666666667 234.6666666666667C278.8266666666667 234.6666666666667 289.7066666666667 230.6133333333334 298.6666666666667 224V341.3333333333334H384M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="library-plus" + unicode="&#xF334;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H320V128H277.3333333333333V213.3333333333334H192V256H277.3333333333333V341.3333333333334H320V256H405.3333333333333M426.6666666666667 405.3333333333333H170.6666666666667C147.2 405.3333333333333 128 386.1333333333334 128 362.6666666666667V106.6666666666667C128 83.2 147.2 64 170.6666666666667 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M85.3333333333333 320H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H384V21.3333333333334H85.3333333333333V320z" /> + <glyph glyph-name="lightbulb" + unicode="&#xF335;" + horiz-adv-x="512" d=" M256 405.3333333333333C173.44 405.3333333333333 106.6666666666667 338.56 106.6666666666667 256C106.6666666666667 205.2266666666667 132.0533333333333 160.6400000000001 170.6666666666667 133.5466666666667V85.3333333333334C170.6666666666667 73.6 180.2666666666667 64 192 64H320C331.7333333333334 64 341.3333333333333 73.6 341.3333333333333 85.3333333333334V133.5466666666667C379.9466666666666 160.64 405.3333333333333 205.2266666666667 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333M192 0C192 -11.7333333333333 201.6 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C310.4 -21.3333333333333 320 -11.7333333333333 320 0V21.3333333333334H192V0z" /> + <glyph glyph-name="lightbulb-outline" + unicode="&#xF336;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.56 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 205.2266666666667 379.9466666666666 160.6400000000001 341.3333333333333 133.5466666666667V85.3333333333334C341.3333333333333 73.6 331.7333333333334 64 320 64H192C180.2666666666667 64 170.6666666666667 73.6 170.6666666666667 85.3333333333334V133.5466666666667C132.0533333333334 160.64 106.6666666666667 205.2266666666667 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333M192 0V21.3333333333334H320V0C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0M256 362.6666666666667C197.12 362.6666666666667 149.3333333333333 314.88 149.3333333333333 256C149.3333333333333 212.2666666666667 175.5733333333333 174.72 213.3333333333333 158.2933333333334V106.6666666666667H298.6666666666667V158.2933333333334C336.4266666666666 174.72 362.6666666666667 212.2666666666667 362.6666666666667 256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="link" + unicode="&#xF337;" + horiz-adv-x="512" d=" M341.3333333333333 320H277.3333333333333V279.4666666666667H341.3333333333333C389.5466666666666 279.4666666666667 428.8 240.4266666666667 428.8 192C428.8 143.7866666666667 389.5466666666667 104.5333333333333 341.3333333333333 104.5333333333333H277.3333333333333V64H341.3333333333333C411.9466666666666 64 469.3333333333333 121.3866666666667 469.3333333333333 192C469.3333333333333 262.8266666666667 411.9466666666666 320 341.3333333333333 320M83.2 192C83.2 240.4266666666667 122.4533333333333 279.4666666666667 170.6666666666667 279.4666666666667H234.6666666666667V320H170.6666666666667C100.0533333333333 320 42.6666666666667 262.6133333333334 42.6666666666667 192S100.0533333333333 64 170.6666666666667 64H234.6666666666667V104.5333333333333H170.6666666666667C122.4533333333333 104.5333333333333 83.2 143.7866666666666 83.2 192M170.6666666666667 170.6666666666667H341.3333333333333V213.3333333333334H170.6666666666667V170.6666666666667z" /> + <glyph glyph-name="link-off" + unicode="&#xF338;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L314.24 64H277.3333333333333V100.9066666666667L207.5733333333333 170.6666666666667H170.6666666666667V207.5733333333334L117.3333333333333 261.12C96 245.3333333333334 83.2 220.16 83.2 192C83.2 143.7866666666667 122.4533333333333 104.5333333333333 170.6666666666667 104.5333333333333H234.6666666666667V64H170.6666666666667C100.0533333333333 64 42.6666666666667 121.3866666666667 42.6666666666667 192C42.6666666666667 231.2533333333334 60.3733333333333 266.6666666666667 88.32 289.92L42.6666666666667 335.5733333333334M341.3333333333333 320C411.9466666666666 320 469.3333333333333 262.6133333333334 469.3333333333333 192C469.3333333333333 144.8533333333334 443.7333333333334 103.4666666666667 405.3333333333333 81.28L375.4666666666667 111.5733333333333C406.8266666666667 124.8 428.8 155.7333333333334 428.8 192C428.8 240.4266666666666 389.5466666666667 279.4666666666667 341.3333333333333 279.4666666666667H277.3333333333333V320H341.3333333333333M170.6666666666667 320H234.6666666666667V279.4666666666667H207.36L166.8266666666667 320H170.6666666666667M341.3333333333333 213.3333333333334V170.6666666666667H316.16L273.4933333333334 213.3333333333334H341.3333333333333z" /> + <glyph glyph-name="link-variant" + unicode="&#xF339;" + horiz-adv-x="512" d=" M225.92 161.92C234.6666666666667 153.6 234.6666666666667 139.9466666666667 225.92 131.6266666666667C217.6 123.3066666666667 203.9466666666667 123.3066666666667 195.6266666666667 131.6266666666667C154.0266666666667 173.2266666666667 154.0266666666667 240.8533333333333 195.6266666666667 282.4533333333334L271.1466666666667 357.9733333333334C312.7466666666667 399.5733333333333 380.3733333333334 399.5733333333333 421.9733333333334 357.9733333333334C463.5733333333333 316.3733333333334 463.5733333333333 248.7466666666667 421.9733333333334 207.1466666666667L390.1866666666667 175.36C390.4000000000001 192.8533333333334 387.6266666666667 210.3466666666667 381.6533333333334 226.9866666666667L391.6800000000001 237.2266666666667C416.8533333333334 262.1866666666667 416.8533333333334 302.7200000000001 391.6800000000001 327.6800000000001C366.7200000000001 352.8533333333334 326.1866666666667 352.8533333333334 301.2266666666667 327.6800000000001L225.9200000000001 252.3733333333334C200.7466666666667 227.4133333333334 200.7466666666667 186.8800000000001 225.9200000000001 161.9200000000001M286.0800000000001 252.3733333333334C294.4000000000001 260.6933333333334 308.0533333333334 260.6933333333334 316.3733333333334 252.3733333333334C357.9733333333334 210.7733333333334 357.9733333333334 143.1466666666667 316.3733333333334 101.5466666666667L240.8533333333334 26.0266666666668C199.2533333333334 -15.5733333333333 131.6266666666667 -15.5733333333333 90.0266666666667 26.0266666666668C48.4266666666667 67.6266666666667 48.4266666666667 135.2533333333335 90.0266666666667 176.8533333333334L121.8133333333334 208.6400000000001C121.6000000000001 191.1466666666668 124.3733333333334 173.6533333333334 130.3466666666667 156.8000000000001L120.3200000000001 146.7733333333334C95.1466666666667 121.8133333333334 95.1466666666667 81.2800000000001 120.3200000000001 56.3200000000001C145.2800000000001 31.1466666666667 185.8133333333334 31.1466666666667 210.7733333333334 56.3200000000001L286.0800000000001 131.6266666666667C311.2533333333334 156.5866666666667 311.2533333333334 197.12 286.0800000000001 222.08C277.3333333333334 230.4000000000001 277.3333333333334 244.0533333333334 286.0800000000001 252.3733333333334z" /> + <glyph glyph-name="link-variant-off" + unicode="&#xF33A;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L296.5333333333333 81.7066666666667L240.8533333333334 26.0266666666666C199.2533333333334 -15.5733333333333 131.6266666666667 -15.5733333333333 90.0266666666667 26.0266666666666C48.4266666666667 67.6266666666667 48.4266666666667 135.2533333333333 90.0266666666667 176.8533333333334L121.8133333333334 208.64C121.6 191.1466666666667 124.3733333333334 173.6533333333333 130.3466666666667 156.8L120.32 146.7733333333333C95.1466666666667 121.8133333333333 95.1466666666667 81.28 120.32 56.3200000000001C145.28 31.1466666666667 185.8133333333333 31.1466666666667 210.7733333333334 56.3200000000001L266.6666666666668 111.7866666666667L232.1066666666667 146.1333333333333C231.8933333333334 141.0133333333333 229.7600000000001 135.68 225.9200000000001 131.6266666666667C217.6000000000001 123.3066666666667 203.9466666666668 123.3066666666667 195.6266666666667 131.6266666666667C173.2266666666667 154.24 162.7733333333334 184.1066666666667 164.6933333333334 213.3333333333334L42.6666666666667 335.5733333333334M271.1466666666667 357.9733333333334C312.7466666666667 399.5733333333333 380.3733333333334 399.5733333333333 421.9733333333334 357.9733333333334C463.5733333333333 316.3733333333334 463.5733333333333 248.7466666666667 421.9733333333334 207.1466666666667L390.1866666666667 175.36C390.4000000000001 192.8533333333334 387.6266666666667 210.3466666666667 381.6533333333334 226.9866666666667L391.6800000000001 237.2266666666667C416.8533333333334 262.1866666666667 416.8533333333334 302.7200000000001 391.6800000000001 327.6800000000001C366.7200000000001 352.8533333333334 326.1866666666667 352.8533333333334 301.2266666666667 327.6800000000001L230.1866666666667 256.6400000000001L200.1066666666667 286.9333333333334L271.1466666666667 357.9733333333334M286.0800000000001 252.3733333333334C294.4000000000001 260.6933333333334 308.0533333333334 260.6933333333334 316.3733333333334 252.3733333333334C345.6 223.1466666666667 354.3466666666667 181.3333333333334 342.6133333333334 144.4266666666667L304.6400000000001 182.1866666666667C303.5733333333334 196.6933333333334 297.3866666666667 210.9866666666667 286.0800000000001 222.0800000000001C277.3333333333334 230.4000000000001 277.3333333333334 244.0533333333334 286.0800000000001 252.3733333333334z" /> + <glyph glyph-name="linkedin" + unicode="&#xF33B;" + horiz-adv-x="512" d=" M448 0H362.6666666666667V144C362.6666666666667 166.6133333333334 337.28 185.3866666666667 314.6666666666667 185.3866666666667S277.3333333333333 166.6133333333334 277.3333333333333 144V0H192V256H277.3333333333333V213.3333333333334C291.4133333333333 236.1600000000001 327.68 250.88 352 250.88C405.3333333333333 250.88 448 207.36 448 154.6666666666667V0M149.3333333333333 0H64V256H149.3333333333333V0M106.6666666666667 384C130.1333333333333 384 149.3333333333333 364.8 149.3333333333333 341.3333333333334S130.1333333333333 298.6666666666667 106.6666666666667 298.6666666666667S64 317.8666666666667 64 341.3333333333334S83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="linkedin-box" + unicode="&#xF33C;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H341.3333333333333V155.7333333333334C341.3333333333333 173.4400000000001 327.04 187.7333333333334 309.3333333333333 187.7333333333334S277.3333333333333 173.4400000000001 277.3333333333333 155.7333333333334V42.6666666666667H213.3333333333333V234.6666666666667H277.3333333333333V209.0666666666667C288 226.9866666666667 311.2533333333334 238.9333333333334 330.6666666666667 238.9333333333334C371.84 238.9333333333334 405.3333333333333 205.44 405.3333333333333 164.2666666666667M138.6666666666667 270.7200000000001C117.3333333333333 270.7200000000001 100.0533333333333 288 100.0533333333333 309.3333333333334S117.3333333333333 347.9466666666667 138.6666666666667 347.9466666666667S177.28 330.6666666666667 177.28 309.3333333333334S160 270.7200000000001 138.6666666666667 270.7200000000001M170.6666666666667 42.6666666666667H106.6666666666667V234.6666666666667H170.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="linux" + unicode="&#xF33D;" + horiz-adv-x="512" d=" M281.1733333333333 138.6666666666667C267.3066666666666 122.4533333333334 244.6933333333333 122.4533333333334 230.8266666666667 138.6666666666667L158.72 224C152.7466666666667 207.36 149.3333333333333 189.4400000000001 149.3333333333333 170.6666666666667C149.3333333333333 135.04 161.4933333333334 102.8266666666667 181.3333333333333 79.5733333333334C213.3333333333333 77.44 240.8533333333333 64.8533333333334 251.3066666666667 42.6666666666667H260.6933333333333C271.1466666666667 64 297.6 75.9466666666667 329.8133333333333 78.2933333333334C350.08 101.5466666666667 362.6666666666667 134.4 362.6666666666667 170.6666666666667C362.6666666666667 189.4400000000001 359.2533333333334 207.36 353.28 224L281.1733333333333 138.6666666666667M426.6666666666667 5.3333333333334C426.6666666666667 -6.4 411.7333333333334 -21.3333333333333 400 -21.3333333333333H282.6666666666667C270.9333333333333 -21.3333333333333 256 -6.4 256 5.3333333333334C256 -6.4 241.0666666666667 -21.3333333333333 229.3333333333333 -21.3333333333333H112C100.2666666666667 -21.3333333333333 85.3333333333333 -6.4 85.3333333333333 5.3333333333334C85.3333333333333 33.0666666666667 105.3866666666667 57.3866666666667 134.4 71.4666666666667C117.3333333333333 99.4133333333334 106.6666666666667 133.76 106.6666666666667 170.6666666666667C85.3333333333333 128 57.6 116.0533333333334 44.5866666666667 128C32 139.9466666666667 38.1866666666667 174.2933333333334 66.1333333333333 204.5866666666667C81.92 221.8666666666667 106.6666666666667 242.7733333333333 123.9466666666667 250.6666666666667C130.7733333333333 265.3866666666667 139.52 278.8266666666667 149.3333333333333 290.56V298.6666666666667C149.3333333333333 357.5466666666667 197.12 405.3333333333333 256 405.3333333333333S362.6666666666667 357.5466666666667 362.6666666666667 298.6666666666667V290.56C372.48 278.8266666666667 381.2266666666667 265.3866666666667 388.0533333333334 250.6666666666667C405.3333333333333 242.7733333333334 430.08 221.8666666666667 445.8666666666667 204.5866666666667C473.8133333333333 174.2933333333334 480.0000000000001 139.9466666666667 467.4133333333334 128C454.4000000000001 116.0533333333334 426.6666666666668 128 405.3333333333334 170.6666666666667C405.3333333333334 133.3333333333334 394.6666666666668 98.7733333333333 376.9600000000001 70.6133333333334C406.4 56.96 426.6666666666667 33.28 426.6666666666667 5.3333333333334M210.7733333333334 256C201.8133333333333 245.3333333333334 201.8133333333333 228.9066666666667 210.7733333333334 218.6666666666667L237.44 186.6666666666667C246.1866666666667 176.4266666666667 260.48 176.4266666666667 269.44 186.6666666666667L296.1066666666667 218.6666666666667C304.8533333333334 228.9066666666667 304.8533333333334 245.3333333333334 296.1066666666667 256H210.7733333333334M213.3333333333333 336C201.6 336 192 322.1333333333334 192 298.6666666666667S201.6 261.3333333333334 213.3333333333333 261.3333333333334S234.6666666666667 275.2000000000001 234.6666666666667 298.6666666666667S225.0666666666667 336 213.3333333333333 336M298.6666666666667 336C286.9333333333333 336 277.3333333333333 322.1333333333334 277.3333333333333 298.6666666666667S286.9333333333333 261.3333333333334 298.6666666666667 261.3333333333334S320 275.2000000000001 320 298.6666666666667S310.4 336 298.6666666666667 336z" /> + <glyph glyph-name="lock" + unicode="&#xF33E;" + horiz-adv-x="512" d=" M256 85.3333333333334C279.4666666666667 85.3333333333334 298.6666666666667 104.5333333333333 298.6666666666667 128C298.6666666666667 151.68 279.4666666666667 170.6666666666667 256 170.6666666666667S213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.3466666666667 104.5333333333333 277.3333333333334 128 277.3333333333334H149.3333333333333V320C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 384C220.5866666666667 384 192 355.4133333333334 192 320V277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384z" /> + <glyph glyph-name="lock-open" + unicode="&#xF33F;" + horiz-adv-x="512" d=" M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.1333333333334 104.5333333333333 277.3333333333334 128 277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384S192 355.4133333333334 192 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 85.3333333333334C279.4666666666667 85.3333333333334 298.6666666666667 104.5333333333333 298.6666666666667 128S279.4666666666667 170.6666666666667 256 170.6666666666667S213.3333333333333 151.4666666666667 213.3333333333333 128S232.5333333333334 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="lock-open-outline" + unicode="&#xF340;" + horiz-adv-x="512" d=" M384 21.3333333333334V234.6666666666667H128V21.3333333333334H384M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.1333333333334 104.5333333333333 277.3333333333334 128 277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384S192 355.4133333333334 192 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 85.3333333333334C232.5333333333334 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128S232.5333333333334 170.6666666666667 256 170.6666666666667S298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334z" /> + <glyph glyph-name="lock-outline" + unicode="&#xF341;" + horiz-adv-x="512" d=" M256 85.3333333333334C232.32 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128C213.3333333333333 151.68 232.32 170.6666666666667 256 170.6666666666667C279.4666666666667 170.6666666666667 298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334M384 21.3333333333334V234.6666666666667H128V21.3333333333334H384M384 277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.32 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V234.6666666666667C85.3333333333333 258.3466666666667 104.32 277.3333333333334 128 277.3333333333334H149.3333333333333V320C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320V277.3333333333334H384M256 384C220.5866666666667 384 192 355.4133333333334 192 320V277.3333333333334H320V320C320 355.4133333333334 291.4133333333333 384 256 384z" /> + <glyph glyph-name="lock-plus" + unicode="&#xF5FB;" + horiz-adv-x="512" d=" M384 277.3333333333334H362.6666666666667V320C362.6666666666667 378.88 314.88 426.6666666666667 256 426.6666666666667S149.3333333333333 378.88 149.3333333333333 320V277.3333333333334H128C104.5333333333333 277.3333333333334 85.3333333333333 258.1333333333334 85.3333333333333 234.6666666666667V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V234.6666666666667C426.6666666666667 258.1333333333334 407.4666666666667 277.3333333333334 384 277.3333333333334M189.8666666666667 320C189.8666666666667 356.48 219.52 386.1333333333334 256 386.1333333333334C292.48 386.1333333333334 322.1333333333334 356.48 322.1333333333334 320V277.3333333333334H189.8666666666667V320M341.3333333333333 106.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V106.6666666666667H170.6666666666667V149.3333333333334H234.6666666666667V213.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333V106.6666666666667z" /> + <glyph glyph-name="login" + unicode="&#xF342;" + horiz-adv-x="512" d=" M213.3333333333333 80V149.3333333333334H64V234.6666666666667H213.3333333333333V304L325.3333333333333 192L213.3333333333333 80M170.6666666666667 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V21.3333333333334C405.3333333333333 -2.1333333333333 386.1333333333334 -21.3333333333333 362.6666666666667 -21.3333333333333H170.6666666666667C147.2 -21.3333333333333 128 -2.1333333333333 128 21.3333333333334V106.6666666666667H170.6666666666667V21.3333333333334H362.6666666666667V362.6666666666667H170.6666666666667V277.3333333333334H128V362.6666666666667C128 386.1333333333334 147.2 405.3333333333333 170.6666666666667 405.3333333333333z" /> + <glyph glyph-name="login-variant" + unicode="&#xF5FC;" + horiz-adv-x="512" d=" M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V256H106.6666666666667V341.3333333333334H405.3333333333333V42.6666666666667H106.6666666666667V128H64V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M215.04 115.6266666666667L245.3333333333333 85.3333333333334L352 192L245.3333333333333 298.6666666666667L215.04 268.5866666666667L270.2933333333333 213.3333333333334H64V170.6666666666667H270.2933333333333L215.04 115.6266666666667z" /> + <glyph glyph-name="logout" + unicode="&#xF343;" + horiz-adv-x="512" d=" M362.6666666666667 80V149.3333333333334H213.3333333333333V234.6666666666667H362.6666666666667V304L474.6666666666666 192L362.6666666666667 80M277.3333333333333 405.3333333333333C300.8 405.3333333333333 320 386.1333333333334 320 362.6666666666667V277.3333333333334H277.3333333333333V362.6666666666667H85.3333333333333V21.3333333333334H277.3333333333333V106.6666666666667H320V21.3333333333334C320 -2.1333333333333 300.8 -21.3333333333333 277.3333333333333 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H277.3333333333333z" /> + <glyph glyph-name="logout-variant" + unicode="&#xF5FD;" + horiz-adv-x="512" d=" M300.3733333333334 115.4133333333334L355.6266666666667 170.6666666666667H149.3333333333333V213.3333333333334H355.6266666666667L300.3733333333334 268.5866666666667L330.6666666666667 298.6666666666667L437.3333333333333 192L330.6666666666667 85.3333333333334L300.3733333333334 115.4133333333334M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V241.7066666666667L405.3333333333333 284.3733333333334V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333V99.6266666666667L448 142.2933333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333z" /> + <glyph glyph-name="looks" + unicode="&#xF344;" + horiz-adv-x="512" d=" M256 320C126.2933333333333 320 21.3333333333333 215.04 21.3333333333333 85.3333333333334H64C64 191.1466666666667 150.1866666666667 277.3333333333334 256 277.3333333333334S448 191.1466666666667 448 85.3333333333334H490.6666666666666C490.6666666666666 215.04 385.7066666666666 320 256 320M256 234.6666666666667C173.6533333333333 234.6666666666667 106.6666666666667 167.68 106.6666666666667 85.3333333333334H149.3333333333333C149.3333333333333 144.2133333333334 197.12 192 256 192S362.6666666666667 144.2133333333334 362.6666666666667 85.3333333333334H405.3333333333333C405.3333333333333 167.68 338.3466666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="loupe" + unicode="&#xF345;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V192C469.3333333333333 309.76 373.76 405.3333333333333 256 405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="lumx" + unicode="&#xF346;" + horiz-adv-x="512" d=" M263.4666666666667 410.6666666666667L429.44 244.6933333333334L293.76 109.0133333333333L263.4666666666667 139.3066666666667L369.0666666666667 244.6933333333334L233.3866666666667 380.5866666666667L263.4666666666667 410.6666666666667M338.9866666666667 244.6933333333334L308.6933333333334 214.6133333333333L218.24 305.0666666666667L112.64 199.4666666666667L82.56 229.76L218.24 365.44L338.9866666666667 244.6933333333334M218.24 274.9866666666667L248.5333333333334 244.6933333333334L142.9333333333333 139.3066666666666L278.6133333333334 3.4133333333333L248.5333333333334 -26.6666666666667L82.56 139.3066666666666L218.24 274.9866666666666M173.0133333333333 139.3066666666666L203.3066666666667 169.3866666666667L293.76 78.9333333333333L399.36 184.5333333333333L429.44 154.2399999999999L293.76 18.5599999999999L173.0133333333333 139.3066666666666z" /> + <glyph glyph-name="magnet" + unicode="&#xF347;" + horiz-adv-x="512" d=" M64 298.6666666666667V170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667V298.6666666666667H362.6666666666667V170.6666666666667C362.6666666666667 111.7866666666667 314.88 64 256 64S149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667V298.6666666666667M362.6666666666667 341.3333333333334H448V405.3333333333333H362.6666666666667M64 341.3333333333334H149.3333333333333V405.3333333333333H64" /> + <glyph glyph-name="magnet-on" + unicode="&#xF348;" + horiz-adv-x="512" d=" M64 298.6666666666667V170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333S448 64.64 448 170.6666666666667V298.6666666666667H362.6666666666667V170.6666666666667C362.6666666666667 111.7866666666667 314.88 64 256 64S149.3333333333333 111.7866666666667 149.3333333333333 170.6666666666667V298.6666666666667M362.6666666666667 341.3333333333334H448V405.3333333333333H362.6666666666667M64 341.3333333333334H149.3333333333333V405.3333333333333H64M277.3333333333333 416L192 256H234.6666666666667V138.6666666666667L320 298.6666666666667H277.3333333333333V416z" /> + <glyph glyph-name="magnify" + unicode="&#xF349;" + horiz-adv-x="512" d=" M202.6666666666667 384C279.2533333333334 384 341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 210.9866666666667 328.7466666666667 179.4133333333334 308.0533333333333 155.0933333333334L313.8133333333333 149.3333333333334H330.6666666666667L437.3333333333333 42.6666666666667L405.3333333333333 10.6666666666667L298.6666666666667 117.3333333333334V134.1866666666667L292.9066666666667 139.9466666666667C268.5866666666667 119.2533333333333 237.0133333333333 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384M202.6666666666667 341.3333333333334C149.3333333333333 341.3333333333334 106.6666666666667 298.6666666666667 106.6666666666667 245.3333333333334S149.3333333333333 149.3333333333334 202.6666666666667 149.3333333333334S298.6666666666667 192 298.6666666666667 245.3333333333334S256 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="magnify-minus" + unicode="&#xF34A;" + horiz-adv-x="512" d=" M192 405.3333333333333C274.56 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 222.5066666666667 330.6666666666667 192 311.68 166.6133333333334L328.7466666666667 149.3333333333333H341.3333333333333L469.3333333333333 21.3333333333334L426.6666666666667 -21.3333333333333L298.6666666666667 106.6666666666667V119.2533333333333L281.3866666666667 136.3200000000001C256 117.3333333333334 225.4933333333334 106.6666666666667 192 106.6666666666667C109.44 106.6666666666667 42.6666666666667 173.44 42.6666666666667 256S109.44 405.3333333333333 192 405.3333333333333M106.6666666666667 277.3333333333334V234.6666666666667H277.3333333333333V277.3333333333334H106.6666666666667z" /> + <glyph glyph-name="magnify-plus" + unicode="&#xF34B;" + horiz-adv-x="512" d=" M192 405.3333333333333C274.56 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 222.5066666666667 330.6666666666667 192 311.68 166.6133333333334L328.7466666666667 149.3333333333333H341.3333333333333L469.3333333333333 21.3333333333334L426.6666666666667 -21.3333333333333L298.6666666666667 106.6666666666667V119.2533333333333L281.3866666666667 136.3200000000001C256 117.3333333333334 225.4933333333334 106.6666666666667 192 106.6666666666667C109.44 106.6666666666667 42.6666666666667 173.44 42.6666666666667 256S109.44 405.3333333333333 192 405.3333333333333M170.6666666666667 341.3333333333334V277.3333333333334H106.6666666666667V234.6666666666667H170.6666666666667V170.6666666666667H213.3333333333333V234.6666666666667H277.3333333333333V277.3333333333334H213.3333333333333V341.3333333333334H170.6666666666667z" /> + <glyph glyph-name="mail-ru" + unicode="&#xF34C;" + horiz-adv-x="512" d=" M329.6 193.92C327.2533333333334 241.0666666666667 292.2666666666667 269.44 250.0266666666667 269.44H248.32C199.4666666666666 269.44 172.5866666666667 231.04 172.5866666666667 187.52C172.5866666666667 138.6666666666667 205.2266666666666 107.7333333333334 248.1066666666667 107.7333333333334C296.1066666666667 107.7333333333334 327.4666666666667 142.9333333333333 329.8133333333333 184.32M248.5333333333333 311.68C281.1733333333333 311.68 311.8933333333333 297.1733333333333 334.2933333333333 274.56C334.2933333333333 285.44 341.3333333333333 293.5466666666666 351.9999999999999 293.5466666666666H354.3466666666666C370.1333333333332 293.5466666666666 373.3333333333333 278.6133333333334 373.3333333333333 273.92V105.3866666666667C372.4799999999999 94.2933333333333 384.8533333333333 88.7466666666666 391.8933333333333 95.9999999999999C418.9866666666666 123.5199999999999 451.1999999999999 238.72 375.04 305.28C304 367.5733333333333 208.6399999999999 357.3333333333333 157.8666666666666 322.3466666666666C104.1066666666666 285.2266666666666 69.5466666666666 202.6666666666666 103.04 125.6533333333333C139.52 41.3866666666667 244.0533333333333 16.2133333333333 306.1333333333333 41.3866666666667C337.7066666666666 53.9733333333333 351.9999999999999 11.52 320 -2.3466666666667C270.08 -23.4666666666667 132.9066666666667 -21.3333333333334 68.6933333333333 89.8133333333333C25.3866666666666 164.9066666666667 27.52 296.96 142.5066666666666 365.44C230.6133333333334 417.7066666666667 346.4533333333333 403.2 416 330.6666666666667C489.6 253.8666666666667 485.3333333333333 110.9333333333333 413.8666666666666 55.2533333333333C381.6533333333333 30.08 333.6533333333333 54.6133333333333 334.08 91.52L333.6533333333333 103.4666666666666C311.2533333333333 81.0666666666666 281.1733333333333 68.0533333333333 248.5333333333333 68.0533333333333C184.1066666666666 68.0533333333333 128 124.8 128 189.2266666666666C128 254.2933333333333 184.1066666666666 311.68 248.5333333333333 311.68z" /> + <glyph glyph-name="map" + unicode="&#xF34D;" + horiz-adv-x="512" d=" M320 42.6666666666667L192 87.68V341.3333333333334L320 296.3200000000001M437.3333333333333 384H433.92L320 339.2000000000001L192 384L71.68 343.4666666666667C67.2 341.9733333333334 64 338.1333333333334 64 333.2266666666667V10.6666666666667C64 4.6933333333333 68.6933333333333 0 74.6666666666667 0C75.7333333333333 0 77.0133333333333 0 78.08 0.64L192 44.8000000000001L320 0L440.32 40.5333333333333C444.8 42.6666666666667 448 45.8666666666667 448 50.7733333333333V373.3333333333334C448 379.3066666666667 443.3066666666667 384 437.3333333333333 384z" /> + <glyph glyph-name="map-marker" + unicode="&#xF34E;" + horiz-adv-x="512" d=" M256 202.6666666666667C226.56 202.6666666666667 202.6666666666667 226.5600000000001 202.6666666666667 256S226.56 309.3333333333334 256 309.3333333333334S309.3333333333333 285.44 309.3333333333333 256S285.44 202.6666666666667 256 202.6666666666667M256 405.3333333333333C173.44 405.3333333333333 106.6666666666667 338.56 106.6666666666667 256C106.6666666666667 144 256 -21.3333333333333 256 -21.3333333333333S405.3333333333333 144 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="map-marker-circle" + unicode="&#xF34F;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 181.3333333333334C238.2933333333333 181.3333333333334 224 195.6266666666667 224 213.3333333333334S238.2933333333333 245.3333333333334 256 245.3333333333334S288 231.04 288 213.3333333333334S273.7066666666667 181.3333333333334 256 181.3333333333334M256 294.4C211.2 294.4 174.9333333333333 258.1333333333334 174.9333333333333 213.3333333333334C174.9333333333333 149.3333333333334 256 74.6666666666667 256 74.6666666666667S337.0666666666667 149.3333333333334 337.0666666666667 213.3333333333334C337.0666666666667 258.1333333333334 300.8 294.4 256 294.4z" /> + <glyph glyph-name="map-marker-minus" + unicode="&#xF650;" + horiz-adv-x="512" d=" M192 202.6666666666667C221.44 202.6666666666667 245.3333333333333 226.5600000000001 245.3333333333333 256S221.44 309.3333333333334 192 309.3333333333334S138.6666666666667 285.44 138.6666666666667 256S162.56 202.6666666666667 192 202.6666666666667M192 405.3333333333333C274.3466666666667 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 144 192 -21.3333333333333 192 -21.3333333333333S42.6666666666667 144 42.6666666666667 256C42.6666666666667 338.56 109.44 405.3333333333333 192 405.3333333333333M320 85.3333333333334H490.6666666666666V42.6666666666667H320V85.3333333333334z" /> + <glyph glyph-name="map-marker-multiple" + unicode="&#xF350;" + horiz-adv-x="512" d=" M298.6666666666667 202.6666666666667C328.1066666666667 202.6666666666667 352 226.5600000000001 352 256S328.1066666666667 309.3333333333334 298.6666666666667 309.3333333333334S245.3333333333333 285.44 245.3333333333333 256S269.2266666666667 202.6666666666667 298.6666666666667 202.6666666666667M298.6666666666667 405.3333333333333C381.0133333333333 405.3333333333333 448 338.56 448 256C448 144 298.6666666666667 -21.3333333333333 298.6666666666667 -21.3333333333333S149.3333333333333 144 149.3333333333333 256C149.3333333333333 338.56 216.1066666666666 405.3333333333333 298.6666666666667 405.3333333333333M106.6666666666667 256C106.6666666666667 160 215.04 28.5866666666667 234.6666666666667 4.0533333333333L213.3333333333333 -21.3333333333333S64 144 64 256C64 323.6266666666667 109.0133333333333 380.8 170.6666666666667 399.1466666666667C131.4133333333333 363.9466666666667 106.6666666666667 312.9600000000001 106.6666666666667 256z" /> + <glyph glyph-name="map-marker-off" + unicode="&#xF351;" + horiz-adv-x="512" d=" M349.2266666666667 104.5333333333333L250.6666666666667 203.3066666666666L248.32 205.6533333333333L69.76 384L42.6666666666667 356.9066666666667L110.5066666666667 289.0666666666667C107.9466666666667 278.4 106.6666666666667 267.52 106.6666666666667 256C106.6666666666667 144 256 -21.3333333333333 256 -21.3333333333333S291.6266666666667 18.1333333333334 327.8933333333333 71.4666666666667L399.5733333333333 0L426.6666666666667 27.3066666666667M256 309.3333333333334C285.44 309.3333333333334 309.3333333333333 285.44 309.3333333333333 256C309.3333333333333 240.4266666666667 302.2933333333333 226.3466666666667 291.6266666666667 216.5333333333334L369.0666666666667 138.6666666666667C389.9733333333334 178.7733333333333 405.3333333333333 220.16 405.3333333333333 256C405.3333333333333 338.56 338.56 405.3333333333333 256 405.3333333333333C213.3333333333333 405.3333333333333 175.7866666666667 387.8400000000001 148.48 359.68L216.5333333333333 291.6266666666667C226.3466666666667 302.5066666666667 240.2133333333333 309.3333333333334 256 309.3333333333334z" /> + <glyph glyph-name="map-marker-plus" + unicode="&#xF651;" + horiz-adv-x="512" d=" M192 202.6666666666667C221.44 202.6666666666667 245.3333333333333 226.5600000000001 245.3333333333333 256S221.44 309.3333333333334 192 309.3333333333334S138.6666666666667 285.44 138.6666666666667 256S162.56 202.6666666666667 192 202.6666666666667M192 405.3333333333333C274.3466666666667 405.3333333333333 341.3333333333333 338.56 341.3333333333333 256C341.3333333333333 144 192 -21.3333333333333 192 -21.3333333333333S42.6666666666667 144 42.6666666666667 256C42.6666666666667 338.56 109.44 405.3333333333333 192 405.3333333333333M320 85.3333333333334H384V149.3333333333334H426.6666666666667V85.3333333333334H490.6666666666666V42.6666666666667H426.6666666666667V-21.3333333333333H384V42.6666666666667H320V85.3333333333334z" /> + <glyph glyph-name="map-marker-radius" + unicode="&#xF352;" + horiz-adv-x="512" d=" M256 405.3333333333333C326.6133333333334 405.3333333333333 384 348.5866666666667 384 278.4C384 183.2533333333333 256 42.6666666666667 256 42.6666666666667S128 183.2533333333333 128 278.4C128 348.5866666666667 185.3866666666667 405.3333333333333 256 405.3333333333333M256 320C232.5333333333334 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334S232.5333333333334 234.6666666666667 256 234.6666666666667S298.6666666666667 253.8666666666667 298.6666666666667 277.3333333333334S279.4666666666667 320 256 320M426.6666666666667 42.6666666666667C426.6666666666667 -4.48 350.2933333333334 -42.6666666666666 256 -42.6666666666666S85.3333333333333 -4.48 85.3333333333333 42.6666666666667C85.3333333333333 70.1866666666667 111.36 94.72 151.68 110.2933333333334L165.3333333333333 90.8800000000001C142.2933333333333 81.28 128 68.0533333333334 128 53.3333333333334C128 23.8933333333334 185.3866666666667 0 256 0S384 23.8933333333334 384 53.3333333333334C384 68.0533333333334 369.7066666666666 81.28 346.6666666666667 90.8800000000001L360.32 110.2933333333334C400.64 94.72 426.6666666666667 70.1866666666667 426.6666666666667 42.6666666666667z" /> + <glyph glyph-name="margin" + unicode="&#xF353;" + horiz-adv-x="512" d=" M312.1066666666667 303.36L275.2 324.6933333333334L394.6666666666667 403.6266666666667L386.1333333333334 260.6933333333334L349.2266666666667 282.0266666666667L186.24 0H136.96L312.1066666666667 303.36M373.3333333333333 192C414.5066666666667 192 448 154.88 448 96S414.5066666666667 0 373.3333333333333 0S298.6666666666667 37.12 298.6666666666667 96S332.16 192 373.3333333333333 192M373.3333333333333 149.3333333333334C355.6266666666667 149.3333333333334 341.3333333333333 131.4133333333334 341.3333333333333 96C341.3333333333333 60.5866666666667 355.6266666666667 42.6666666666667 373.3333333333333 42.6666666666667S405.3333333333333 60.5866666666667 405.3333333333333 96C405.3333333333333 131.4133333333334 391.04 149.3333333333334 373.3333333333333 149.3333333333334M160 341.3333333333334C201.1733333333333 341.3333333333334 234.6666666666667 304.2133333333334 234.6666666666667 245.3333333333334S201.1733333333333 149.3333333333334 160 149.3333333333334S85.3333333333333 186.4533333333334 85.3333333333333 245.3333333333334S118.8266666666667 341.3333333333334 160 341.3333333333334M160 298.6666666666667C142.2933333333333 298.6666666666667 128 280.7466666666667 128 245.3333333333334C128 209.92 142.2933333333333 192 160 192S192 209.92 192 245.3333333333334C192 280.7466666666667 177.7066666666667 298.6666666666667 160 298.6666666666667z" /> + <glyph glyph-name="markdown" + unicode="&#xF354;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667V277.3333333333334H85.3333333333333L149.3333333333333 213.3333333333334L213.3333333333333 277.3333333333334H256V106.6666666666667H213.3333333333333V216.96L149.3333333333333 152.96L85.3333333333333 216.96V106.6666666666667H42.6666666666667M341.3333333333333 277.3333333333334H405.3333333333333V192H458.6666666666666L373.3333333333333 96L288 192H341.3333333333333V277.3333333333334z" /> + <glyph glyph-name="marker" + unicode="&#xF652;" + horiz-adv-x="512" d=" M394.6666666666667 423.4666666666667C383.36 423.4666666666667 372.48 419.4133333333334 364.16 411.0933333333334L240.2133333333334 286.9333333333334L360.7466666666668 166.4L484.9066666666668 290.3466666666667C501.3333333333334 306.9866666666667 501.3333333333334 333.8666666666667 484.9066666666668 350.72L424.3200000000001 411.0933333333333C416.0000000000001 419.4133333333333 405.3333333333334 423.4666666666667 394.6666666666668 423.4666666666667M219.7333333333334 266.6666666666667L92.5866666666667 139.52C75.9466666666667 122.88 75.9466666666667 96 93.0133333333333 78.72C66.9866666666667 52.48 40.5333333333333 26.24 14.2933333333333 0H135.04L153.3866666666667 18.3466666666667C170.0266666666667 2.1333333333333 196.6933333333333 2.3466666666667 213.3333333333333 18.7733333333333L340.2666666666667 145.92" /> + <glyph glyph-name="marker-check" + unicode="&#xF355;" + horiz-adv-x="512" d=" M213.3333333333333 106.6666666666667L106.6666666666667 213.3333333333334L136.7466666666667 243.6266666666667L213.3333333333333 167.04L375.2533333333334 328.9600000000001L405.3333333333333 298.6666666666667M405.3333333333333 426.6666666666667H106.6666666666667C82.9866666666667 426.6666666666667 64 407.68 64 384V108.16C64 93.44 71.4666666666667 80.4266666666667 82.7733333333333 72.7466666666667L256 -42.6666666666666L429.0133333333333 72.7466666666667C440.32 80.4266666666667 448 93.44 448 108.16V384C448 407.68 428.8 426.6666666666667 405.3333333333333 426.6666666666667z" /> + <glyph glyph-name="martini" + unicode="&#xF356;" + horiz-adv-x="512" d=" M160 298.6666666666667L117.3333333333333 341.3333333333334H394.6666666666667L352 298.6666666666667M234.6666666666667 170.6666666666667V42.6666666666667H128V0H384V42.6666666666667H277.3333333333333V170.6666666666667L448 341.3333333333334V384H64V341.3333333333334L234.6666666666667 170.6666666666667z" /> + <glyph glyph-name="material-ui" + unicode="&#xF357;" + horiz-adv-x="512" d=" M170.6666666666667 93.6533333333334V120.1066666666667L298.6666666666667 193.92V293.76L192 232.1066666666667L85.3333333333333 293.76V170.6666666666667L64 158.2933333333334L42.6666666666667 170.6666666666667V341.3333333333334L65.4933333333333 354.56L192 281.3866666666667L275.84 329.8133333333334L318.5066666666667 354.5600000000001L341.3333333333333 341.3333333333334V169.3866666666667L232.96 106.6666666666667L319.36 56.96L426.6666666666667 118.8266666666667V213.3333333333334L448 225.7066666666667L469.3333333333333 213.3333333333334V94.2933333333334L319.36 7.6800000000001L170.6666666666667 93.6533333333334M469.3333333333333 240L448 227.6266666666667L426.6666666666667 240V264.9600000000001L448 277.3333333333334L469.3333333333333 264.9600000000001V240z" /> + <glyph glyph-name="math-compass" + unicode="&#xF358;" + horiz-adv-x="512" d=" M277.3333333333333 358.4V384C277.3333333333333 396.8 268.8 405.3333333333333 256 405.3333333333333V358.4C209.0666666666667 349.8666666666667 192 326.4 192 298.6666666666667C192 281.6 198.4 266.6666666666667 209.0666666666667 256L85.3333333333333 23.4666666666667V-21.3333333333333L132.2666666666667 21.3333333333334L247.4666666666667 234.6666666666667H256C292.2666666666667 234.6666666666667 320 262.4000000000001 320 298.6666666666667C320 326.4 302.9333333333334 349.8666666666667 277.3333333333334 358.4M275.2000000000001 288C270.9333333333334 281.6 264.5333333333334 277.3333333333334 256 277.3333333333334C243.2000000000001 277.3333333333334 234.6666666666667 285.8666666666667 234.6666666666667 298.6666666666667C234.6666666666667 302.9333333333334 236.8 305.0666666666667 236.8 309.3333333333334C241.0666666666667 315.7333333333334 247.4666666666667 320 256 320C268.8 320 277.3333333333334 311.4666666666667 277.3333333333334 298.6666666666667C277.3333333333334 294.4 275.2000000000001 292.2666666666667 275.2000000000001 288M426.6666666666667 23.4666666666667V-21.3333333333333L379.7333333333334 21.3333333333334L285.8666666666667 196.2666666666667C300.8 200.5333333333333 313.6 206.9333333333333 324.2666666666667 215.4666666666667L426.6666666666667 23.4666666666667z" /> + <glyph glyph-name="matrix" + unicode="&#xF628;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H128V362.6666666666667H85.3333333333333V21.3333333333334H128V-21.3333333333333H42.6666666666667V405.3333333333333M426.6666666666667 362.6666666666667H384V405.3333333333333H469.3333333333333V-21.3333333333333H384V21.3333333333334H426.6666666666667V362.6666666666667M192 341.3333333333334H213.3333333333333V234.6666666666667H234.6666666666667V213.3333333333334H170.6666666666667V234.6666666666667H192V320L170.6666666666667 309.3333333333334V330.6666666666667L192 341.3333333333334M320 170.6666666666667H341.3333333333333V64H362.6666666666667V42.6666666666667H298.6666666666667V64H320V149.3333333333334L298.6666666666667 138.6666666666667V160L320 170.6666666666667M192 170.6666666666667C215.4666666666667 170.6666666666667 234.6666666666667 142.0800000000001 234.6666666666667 106.6666666666667S215.4666666666667 42.6666666666667 192 42.6666666666667S149.3333333333333 71.2533333333333 149.3333333333333 106.6666666666667S168.5333333333333 170.6666666666667 192 170.6666666666667M192 149.3333333333334C180.2666666666667 149.3333333333334 170.6666666666667 130.1333333333333 170.6666666666667 106.6666666666667S180.2666666666667 64 192 64S213.3333333333333 83.2 213.3333333333333 106.6666666666667S203.7333333333334 149.3333333333334 192 149.3333333333334M320 341.3333333333334C343.4666666666667 341.3333333333334 362.6666666666667 312.7466666666667 362.6666666666667 277.3333333333334S343.4666666666667 213.3333333333334 320 213.3333333333334S277.3333333333333 241.92 277.3333333333333 277.3333333333334S296.5333333333333 341.3333333333334 320 341.3333333333334M320 320C308.2666666666667 320 298.6666666666667 300.8 298.6666666666667 277.3333333333334S308.2666666666667 234.6666666666667 320 234.6666666666667S341.3333333333333 253.8666666666667 341.3333333333333 277.3333333333334S331.7333333333334 320 320 320z" /> + <glyph glyph-name="maxcdn" + unicode="&#xF359;" + horiz-adv-x="512" d=" M439.4666666666667 305.28C420.9066666666667 328.32 392.1066666666667 341.3333333333334 360.5333333333333 341.3333333333334H62.9333333333333L98.56 265.1733333333334L50.9866666666667 42.6666666666667H129.0666666666667L176.64 265.1733333333334H243.2L195.6266666666667 42.6666666666667H273.7066666666667L321.28 265.1733333333334H360.5333333333334C369.0666666666667 265.1733333333334 376.1066666666667 262.4 380.1600000000001 257.2800000000001C384.0000000000001 252.3733333333334 385.4933333333334 245.3333333333334 384.0000000000001 236.8000000000001L342.1866666666666 42.6666666666667H420.0533333333333L458.6666666666666 220.8C464.6399999999999 251.52 457.8133333333333 282.4533333333334 439.4666666666666 305.28z" /> + <glyph glyph-name="medium" + unicode="&#xF35A;" + horiz-adv-x="512" d=" M467.84 306.7733333333333L338.9866666666667 96.64L246.8266666666667 246.8266666666667L320 366.0800000000001C323.6266666666667 371.6266666666667 330.6666666666667 373.9733333333334 336.64 372.2666666666667L467.84 306.7733333333334M469.3333333333333 26.0266666666666C469.3333333333333 13.8666666666667 458.6666666666666 9.1733333333333 445.6533333333333 15.7866666666666L345.1733333333333 65.92L469.3333333333333 268.5866666666667V26.0266666666666M192 22.6133333333333C192 10.6666666666667 182.8266666666667 5.12 172.16 10.6666666666667L54.4 69.1200000000001C48 72.5333333333334 42.6666666666667 81.0666666666667 42.6666666666667 88.3200000000001V359.68C42.6666666666667 369.2800000000001 49.7066666666667 373.3333333333334 58.4533333333334 369.4933333333334L185.6 305.92L192 296.1066666666667V22.6133333333333M326.1866666666666 75.52L213.3333333333333 132.0533333333334V260.0533333333334L326.1866666666666 75.52z" /> + <glyph glyph-name="memory" + unicode="&#xF35B;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H149.3333333333333V298.6666666666667H362.6666666666667M448 213.3333333333334V256H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H320V384H277.3333333333333V341.3333333333334H234.6666666666667V384H192V341.3333333333334H149.3333333333333C125.6533333333333 341.3333333333334 106.6666666666667 322.3466666666667 106.6666666666667 298.6666666666667V256H64V213.3333333333334H106.6666666666667V170.6666666666667H64V128H106.6666666666667V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H192V0H234.6666666666667V42.6666666666667H277.3333333333333V0H320V42.6666666666667H362.6666666666667C386.1333333333334 42.6666666666667 405.3333333333333 61.8666666666667 405.3333333333333 85.3333333333334V128H448V170.6666666666667H405.3333333333333V213.3333333333334M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333M320 256H192V128H320V256z" /> + <glyph glyph-name="menu" + unicode="&#xF35C;" + horiz-adv-x="512" d=" M64 320H448V277.3333333333334H64V320M64 213.3333333333334H448V170.6666666666667H64V213.3333333333334M64 106.6666666666667H448V64H64V106.6666666666667z" /> + <glyph glyph-name="menu-down" + unicode="&#xF35D;" + horiz-adv-x="512" d=" M149.3333333333333 234.6666666666667L256 128L362.6666666666667 234.6666666666667H149.3333333333333z" /> + <glyph glyph-name="menu-left" + unicode="&#xF35E;" + horiz-adv-x="512" d=" M298.6666666666667 298.6666666666667L192 192L298.6666666666667 85.3333333333334V298.6666666666667z" /> + <glyph glyph-name="menu-right" + unicode="&#xF35F;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L320 192L213.3333333333333 298.6666666666667V85.3333333333334z" /> + <glyph glyph-name="menu-up" + unicode="&#xF360;" + horiz-adv-x="512" d=" M149.3333333333333 128L256 234.6666666666667L362.6666666666667 128H149.3333333333333z" /> + <glyph glyph-name="message" + unicode="&#xF361;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-alert" + unicode="&#xF362;" + horiz-adv-x="512" d=" M277.3333333333333 234.6666666666667H234.6666666666667V320H277.3333333333333M277.3333333333333 149.3333333333334H234.6666666666667V192H277.3333333333333M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-draw" + unicode="&#xF363;" + horiz-adv-x="512" d=" M384 149.3333333333334H224L266.6666666666667 192H384M128 149.3333333333334V202.6666666666667L274.7733333333333 349.0133333333333C278.8266666666666 353.0666666666667 285.6533333333333 353.0666666666667 289.92 349.0133333333333L327.4666666666667 311.2533333333334C331.7333333333333 306.9866666666667 331.7333333333333 300.3733333333334 327.4666666666667 296.1066666666667L180.6933333333333 149.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-image" + unicode="&#xF364;" + horiz-adv-x="512" d=" M106.6666666666667 149.3333333333334L181.3333333333333 245.3333333333334L234.6666666666667 181.3333333333334L309.3333333333333 277.3333333333334L405.3333333333333 149.3333333333334M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-outline" + unicode="&#xF365;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M426.6666666666667 106.6666666666667H128L85.3333333333333 64V362.6666666666667H426.6666666666667" /> + <glyph glyph-name="message-plus" + unicode="&#xF653;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H128L42.6666666666667 -21.3333333333333V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M234.6666666666667 320V256H170.6666666666667V213.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333V256H277.3333333333333V320H234.6666666666667z" /> + <glyph glyph-name="message-processing" + unicode="&#xF366;" + horiz-adv-x="512" d=" M362.6666666666667 213.3333333333334H320V256H362.6666666666667M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M192 213.3333333333334H149.3333333333333V256H192M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="message-reply" + unicode="&#xF367;" + horiz-adv-x="512" d=" M469.3333333333333 362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H384L469.3333333333333 -21.3333333333333V362.6666666666667z" /> + <glyph glyph-name="message-reply-text" + unicode="&#xF368;" + horiz-adv-x="512" d=" M384 277.3333333333334H128V320H384V277.3333333333334M384 213.3333333333334H128V256H384V213.3333333333334M384 149.3333333333334H128V192H384V149.3333333333334M469.3333333333333 362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V106.6666666666667C42.6666666666667 83.2 61.8666666666667 64 85.3333333333333 64H384L469.3333333333333 -21.3333333333333V362.6666666666667z" /> + <glyph glyph-name="message-text" + unicode="&#xF369;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.1333333333334 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333M128 256H384V213.3333333333334H128M298.6666666666667 149.3333333333334H128V192H298.6666666666667M384 277.3333333333334H128V320H384" /> + <glyph glyph-name="message-text-outline" + unicode="&#xF36A;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H128L42.6666666666667 -21.3333333333333V362.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H426.6666666666667M85.3333333333333 362.6666666666667V81.7066666666667L110.2933333333333 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333M128 298.6666666666667H384V256H128V298.6666666666667M128 213.3333333333334H320V170.6666666666667H128V213.3333333333334z" /> + <glyph glyph-name="message-video" + unicode="&#xF36B;" + horiz-adv-x="512" d=" M384 149.3333333333334L298.6666666666667 217.6V149.3333333333334H128V320H298.6666666666667V251.7333333333334L384 320M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V-21.3333333333333L128 64H426.6666666666667C450.1333333333334 64 469.3333333333333 83.2 469.3333333333333 106.6666666666667V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="meteor" + unicode="&#xF629;" + horiz-adv-x="512" d=" M59.7333333333333 384L419.6266666666667 46.5066666666667S426.6666666666667 36.9066666666667 417.7066666666667 27.52C408.9600000000001 18.1333333333333 397.4400000000001 26.24 397.4400000000001 26.24L59.7333333333333 384M166.6133333333333 350.0800000000001L446.08 93.0133333333333S452.9066666666666 83.6266666666667 444.16 74.6666666666667C435.2 64.64 423.68 72.7466666666667 423.68 72.7466666666667L166.6133333333333 350.0800000000001M91.52 277.3333333333334L370.9866666666667 20.6933333333333S377.8133333333334 11.3066666666666 369.0666666666667 1.92C360.1066666666667 -7.6799999999999 348.5866666666667 0 348.5866666666667 0L91.52 277.3333333333334M257.0666666666667 320.8533333333334L452.2666666666667 141.44S456.96 134.8266666666667 450.7733333333334 128C444.8 121.6 436.6933333333334 127.36 436.6933333333334 127.36L257.0666666666667 320.8533333333334M116.2666666666667 193.92L311.4666666666667 14.2933333333334S316.1600000000001 7.6800000000001 310.1866666666667 1.0666666666667C304.0000000000001 -5.5466666666666 295.8933333333334 0 295.8933333333334 0L116.2666666666667 193.92M349.4400000000001 279.04L438.4000000000001 197.5466666666667S440.7466666666668 194.56 437.3333333333334 191.36C434.7733333333334 188.3733333333333 430.7200000000001 190.9333333333334 430.7200000000001 190.9333333333334L349.4400000000001 279.04M161.28 104.5333333333333L250.4533333333333 23.2533333333333S252.8 20.0533333333334 249.6 17.0666666666667C246.6133333333333 13.8666666666667 242.56 16.64 242.56 16.64L161.28 104.5333333333333z" /> + <glyph glyph-name="microphone" + unicode="&#xF36C;" + horiz-adv-x="512" d=" M256 405.3333333333333C291.4133333333333 405.3333333333333 320 376.7466666666667 320 341.3333333333334V213.3333333333334C320 177.92 291.4133333333333 149.3333333333334 256 149.3333333333334S192 177.92 192 213.3333333333334V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333M405.3333333333333 213.3333333333334C405.3333333333333 138.0266666666667 349.6533333333333 75.9466666666667 277.3333333333333 65.4933333333333V0H234.6666666666667V65.4933333333333C162.3466666666666 75.9466666666667 106.6666666666667 138.0266666666667 106.6666666666667 213.3333333333334H149.3333333333333C149.3333333333333 154.4533333333334 197.12 106.6666666666667 256 106.6666666666667S362.6666666666667 154.4533333333334 362.6666666666667 213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="microphone-off" + unicode="&#xF36D;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334C405.3333333333333 187.9466666666667 398.08 164.2666666666667 386.1333333333334 143.36L359.8933333333333 169.6C365.6533333333333 182.8266666666667 369.0666666666667 197.5466666666667 369.0666666666667 213.3333333333334H405.3333333333333M320 209.92L192 337.4933333333334V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V209.92M91.0933333333333 384L448 27.0933333333334L420.9066666666667 0L331.52 89.3866666666667C315.0933333333333 79.5733333333334 296.7466666666667 72.96 277.3333333333333 69.9733333333334V0H234.6666666666667V69.9733333333334C164.6933333333333 80.4266666666667 106.6666666666667 140.5866666666667 106.6666666666667 213.3333333333334H142.9333333333333C142.9333333333333 149.3333333333334 197.12 104.5333333333333 256 104.5333333333333C273.28 104.5333333333333 290.1333333333334 108.5866666666667 305.28 115.6266666666667L269.8666666666667 151.04L256 149.3333333333334C220.5866666666667 149.3333333333334 192 177.92 192 213.3333333333334V228.6933333333334L64 356.9066666666667L91.0933333333333 384z" /> + <glyph glyph-name="microphone-outline" + unicode="&#xF36E;" + horiz-adv-x="512" d=" M369.0666666666667 213.3333333333334C369.0666666666667 149.3333333333334 314.88 104.5333333333333 256 104.5333333333333S142.9333333333333 149.3333333333334 142.9333333333333 213.3333333333334H106.6666666666667C106.6666666666667 140.5866666666667 164.6933333333333 80.4266666666667 234.6666666666667 69.9733333333334V0H277.3333333333333V69.9733333333334C347.3066666666667 80.4266666666667 405.3333333333333 140.5866666666667 405.3333333333333 213.3333333333334M230.4 343.4666666666667C230.4 357.5466666666667 241.92 369.0666666666667 256 369.0666666666667C270.08 369.0666666666667 281.6 357.5466666666667 281.6 343.4666666666667L281.3866666666667 211.2C281.3866666666667 197.12 270.08 185.6 256 185.6C241.92 185.6 230.4 197.12 230.4 211.2M256 149.3333333333334C291.4133333333333 149.3333333333334 320 177.92 320 213.3333333333334V341.3333333333334C320 376.7466666666667 291.4133333333333 405.3333333333333 256 405.3333333333333S192 376.7466666666667 192 341.3333333333334V213.3333333333334C192 177.92 220.5866666666667 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="microphone-settings" + unicode="&#xF36F;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H369.0666666666667C369.0666666666667 170.6666666666667 314.88 125.8666666666667 256 125.8666666666667S142.9333333333333 170.6666666666667 142.9333333333333 234.6666666666667H106.6666666666667C106.6666666666667 161.92 164.6933333333333 101.76 234.6666666666667 91.3066666666667V21.3333333333334H277.3333333333333V91.3066666666667C347.3066666666667 101.76 405.3333333333333 161.9200000000001 405.3333333333333 234.6666666666667M320 -64H362.6666666666667V-21.3333333333333H320M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M256 170.6666666666667C291.4133333333333 170.6666666666667 320 199.2533333333333 320 234.6666666666667V362.6666666666667C320 398.08 291.4133333333333 426.6666666666667 256 426.6666666666667S192 398.08 192 362.6666666666667V234.6666666666667C192 199.2533333333333 220.5866666666667 170.6666666666667 256 170.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="microphone-variant" + unicode="&#xF370;" + horiz-adv-x="512" d=" M192 384C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667H106.6666666666667C106.6666666666667 345.8133333333334 144.8533333333333 384 192 384M252.5866666666667 238.5066666666667L234.6666666666667 64H213.3333333333333V42.6666666666667C213.3333333333333 19.2 232.5333333333334 0 256 0S298.6666666666667 19.2 298.6666666666667 42.6666666666667V149.3333333333334C298.6666666666667 196.48 336.8533333333333 234.6666666666667 384 234.6666666666667H426.6666666666667L405.3333333333333 213.3333333333334L426.6666666666667 192H384C360.5333333333333 192 341.3333333333333 172.8 341.3333333333333 149.3333333333334V42.6666666666667C341.3333333333333 -4.48 303.1466666666667 -42.6666666666666 256 -42.6666666666666S170.6666666666667 -4.48 170.6666666666667 42.6666666666667V64H149.3333333333333L131.4133333333333 238.5066666666667C120.96 249.1733333333334 113.28 262.4000000000001 109.44 277.3333333333334H274.56C270.7200000000001 262.4000000000001 263.04 249.1733333333334 252.5866666666667 238.5066666666667M192 213.3333333333334C180.2666666666667 213.3333333333334 170.6666666666667 203.7333333333334 170.6666666666667 192S180.2666666666667 170.6666666666667 192 170.6666666666667S213.3333333333333 180.2666666666667 213.3333333333333 192S203.7333333333334 213.3333333333334 192 213.3333333333334z" /> + <glyph glyph-name="microphone-variant-off" + unicode="&#xF371;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L341.3333333333333 37.12C338.3466666666667 -7.4666666666667 301.2266666666667 -42.6666666666666 256 -42.6666666666666C208.8533333333333 -42.6666666666666 170.6666666666667 -4.48 170.6666666666667 42.6666666666667V64H149.3333333333333L131.4133333333333 238.5066666666667C124.16 245.9733333333334 117.9733333333333 254.72 113.7066666666667 264.5333333333334L42.6666666666667 335.5733333333334M192 384C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667H188.16L129.7066666666667 357.12C145.28 373.3333333333334 167.4666666666667 384 192 384M252.5866666666667 238.5066666666667L252.16 234.6666666666667L209.4933333333334 277.3333333333334H274.56C270.7200000000001 262.4000000000001 263.04 249.1733333333334 252.5866666666667 238.5066666666667M234.6666666666667 64H213.3333333333333V42.6666666666667C213.3333333333333 19.2 232.5333333333334 0 256 0S298.6666666666667 19.2 298.6666666666667 42.6666666666667V79.5733333333334L242.1333333333334 136.1066666666667L234.6666666666667 64M384 234.6666666666667H426.6666666666667L405.3333333333333 213.3333333333334L426.6666666666667 192H384C360.5333333333333 192 341.3333333333333 172.8 341.3333333333333 149.3333333333334V145.4933333333334L305.0666666666667 181.3333333333334C317.8666666666667 213.3333333333334 348.3733333333333 234.6666666666667 384 234.6666666666667M170.6666666666667 192C170.6666666666667 180.2666666666667 180.2666666666667 170.6666666666667 192 170.6666666666667C196.48 170.6666666666667 200.5333333333333 171.9466666666667 203.9466666666667 174.2933333333334L174.2933333333333 203.9466666666667C171.9466666666667 200.5333333333334 170.6666666666667 196.48 170.6666666666667 192z" /> + <glyph glyph-name="microscope" + unicode="&#xF654;" + horiz-adv-x="512" d=" M201.8133333333333 314.0266666666667L235.7333333333334 256C180.6933333333333 250.4533333333334 138.6666666666667 204.5866666666667 138.6666666666667 149.3333333333334C138.6666666666667 90.4533333333334 186.4533333333334 42.6666666666667 245.3333333333333 42.6666666666667C289.0666666666667 42.6666666666667 326.6133333333334 68.9066666666667 343.04 106.6666666666667H288V149.3333333333334H458.6666666666666V106.6666666666667H410.6666666666667C401.92 73.1733333333334 383.36 43.52 358.1866666666666 21.3333333333334H416V-21.3333333333333H74.6666666666667V21.3333333333334H132.48C97.0666666666667 52.6933333333333 74.6666666666667 98.3466666666667 74.6666666666667 149.3333333333334C74.6666666666667 226.7733333333333 127.1466666666667 294.4 201.8133333333333 314.0266666666667M271.7866666666667 403.84L288 376.1066666666667L306.3466666666667 386.7733333333333L381.0133333333333 257.4933333333334L306.9866666666666 214.8266666666667L232.32 344.1066666666667L250.88 354.7733333333333L234.6666666666667 382.5066666666667L271.7866666666667 403.84z" /> + <glyph glyph-name="microsoft" + unicode="&#xF372;" + horiz-adv-x="512" d=" M42.6666666666667 384H234.6666666666667V192H42.6666666666667V384M234.6666666666667 -21.3333333333333H42.6666666666667V170.6666666666667H234.6666666666667V-21.3333333333333M448 384V192H256V384H448M448 -21.3333333333333H256V170.6666666666667H448V-21.3333333333333z" /> + <glyph glyph-name="minecraft" + unicode="&#xF373;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M128 320V234.6666666666667H213.3333333333333V192H170.6666666666667V64H213.3333333333333V106.6666666666667H298.6666666666667V64H341.3333333333333V192H298.6666666666667V234.6666666666667H384V320H298.6666666666667V234.6666666666667H213.3333333333333V320H128z" /> + <glyph glyph-name="minus" + unicode="&#xF374;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H106.6666666666667V213.3333333333334H405.3333333333333V170.6666666666667z" /> + <glyph glyph-name="minus-box" + unicode="&#xF375;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="minus-circle" + unicode="&#xF376;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H149.3333333333333V213.3333333333334H362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="minus-circle-outline" + unicode="&#xF377;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M149.3333333333333 170.6666666666667H362.6666666666667V213.3333333333334H149.3333333333333" /> + <glyph glyph-name="minus-network" + unicode="&#xF378;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334V256H170.6666666666667V213.3333333333334H341.3333333333333M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="mixcloud" + unicode="&#xF62A;" + horiz-adv-x="512" d=" M450.3466666666667 53.3333333333334C447.36 53.3333333333334 444.3733333333333 54.6133333333333 441.8133333333334 56.3200000000001C434.56 61.2266666666667 432.64 70.8266666666667 437.3333333333333 78.08C451.84 99.4133333333334 459.52 124.5866666666667 459.52 150.8266666666667C459.52 176.8533333333334 451.84 202.0266666666667 437.3333333333333 224C432.64 230.8266666666667 434.56 240.4266666666667 441.8133333333334 245.3333333333334C448.8533333333333 250.0266666666667 458.6666666666666 248.1066666666667 463.36 241.0666666666667C481.28 214.4 490.6666666666667 183.2533333333333 490.6666666666667 150.8266666666667C490.6666666666667 118.4 481.28 87.2533333333333 463.36 60.5866666666667C460.3733333333333 56.1066666666667 455.4666666666667 53.3333333333334 450.3466666666667 53.3333333333334M405.3333333333333 79.1466666666667C402.7733333333333 79.1466666666667 399.7866666666667 80 397.0133333333333 81.7066666666667C389.9733333333334 86.6133333333334 388.0533333333333 96.0000000000001 392.9599999999999 103.4666666666667C402.3466666666667 117.3333333333334 407.4666666666666 133.7600000000001 407.4666666666666 150.8266666666667C407.4666666666666 167.6800000000001 402.3466666666667 184.1066666666668 392.9599999999999 198.1866666666667C388.0533333333333 205.4400000000001 389.9733333333333 215.0400000000001 397.0133333333333 219.9466666666667C404.2666666666667 224.6400000000001 413.8666666666666 222.9333333333334 418.7733333333333 215.6800000000001C431.7866666666667 196.4800000000001 438.6133333333333 174.0800000000001 438.6133333333333 150.8266666666668C438.6133333333333 128.0000000000001 431.7866666666667 105.1733333333334 418.7733333333333 85.9733333333335C416 81.4933333333335 410.6666666666667 79.1466666666668 405.3333333333333 79.1466666666668M317.8666666666667 112.4266666666668C338.9866666666667 112.4266666666668 356.2666666666667 129.7066666666668 356.2666666666667 150.8266666666668C356.2666666666667 167.0400000000001 346.0266666666667 181.3333333333335 331.7333333333333 186.6666666666668C330.6666666666667 180.2666666666668 329.1733333333333 173.8666666666668 327.2533333333333 167.6800000000001C324.9066666666667 161.2800000000001 318.9333333333333 157.0133333333334 312.32 157.0133333333334C310.8266666666666 157.0133333333334 309.3333333333333 157.4400000000001 307.4133333333333 157.8666666666668C299.3066666666666 160.6400000000001 294.8266666666666 169.3866666666668 297.5999999999999 177.7066666666668C300.5866666666666 186.8800000000001 302.2933333333333 196.6933333333335 302.2933333333333 206.5066666666668C302.2933333333333 257.4933333333334 260.6933333333334 298.6666666666667 209.4933333333334 298.6666666666667C172.8 298.6666666666667 139.9466666666667 277.3333333333334 125.2266666666667 245.3333333333334C139.52 241.0666666666667 152.7466666666667 233.8133333333334 163.4133333333333 223.1466666666667C169.6 216.96 169.6 207.1466666666667 163.4133333333333 200.96C157.44 194.9866666666667 147.4133333333333 194.9866666666667 141.44 200.96C131.6266666666667 210.7733333333334 118.6133333333333 216.3200000000001 104.5333333333333 216.3200000000001C75.9466666666667 216.3200000000001 52.48 192.8533333333334 52.48 164.2666666666668C52.48 135.6800000000001 75.9466666666667 112.4266666666667 104.5333333333333 112.4266666666667H317.8666666666667M332.8 218.6666666666668C363.9466666666666 211.8400000000001 387.6266666666666 184.1066666666668 387.6266666666666 150.8266666666668C387.6266666666666 112.4266666666667 356.2666666666667 81.2800000000001 317.8666666666666 81.2800000000001H104.5333333333333C58.6666666666666 81.2800000000001 21.3333333333333 118.4000000000001 21.3333333333333 164.2666666666668C21.3333333333333 206.0800000000001 52.2666666666666 240.4266666666668 92.3733333333333 246.4000000000001C109.2266666666666 296.1066666666668 156.3733333333333 330.6666666666668 209.4933333333333 330.6666666666668C273.7066666666666 330.6666666666668 326.6133333333333 281.1733333333334 332.8 218.6666666666668z" /> + <glyph glyph-name="monitor" + unicode="&#xF379;" + horiz-adv-x="512" d=" M448 106.6666666666667H64V362.6666666666667H448M448 405.3333333333333H64C40.32 405.3333333333333 21.3333333333333 386.3466666666667 21.3333333333333 362.6666666666667V106.6666666666667C21.3333333333333 83.2 40.5333333333333 64 64 64H213.3333333333333V21.3333333333334H170.6666666666667V-21.3333333333333H341.3333333333333V21.3333333333334H298.6666666666667V64H448C471.4666666666667 64 490.6666666666666 83.2 490.6666666666666 106.6666666666667V362.6666666666667C490.6666666666666 386.3466666666667 471.4666666666667 405.3333333333333 448 405.3333333333333z" /> + <glyph glyph-name="monitor-multiple" + unicode="&#xF37A;" + horiz-adv-x="512" d=" M469.3333333333333 85.3333333333334V298.6666666666667H128V85.3333333333334H469.3333333333333M469.3333333333333 341.3333333333334C492.8 341.3333333333334 512 322.1333333333334 512 298.6666666666667V85.3333333333334C512 61.6533333333334 492.8 42.6666666666667 469.3333333333333 42.6666666666667H341.3333333333333V0H384V-42.6666666666666H213.3333333333333V0H256V42.6666666666667H128C104.32 42.6666666666667 85.3333333333333 61.6533333333334 85.3333333333333 85.3333333333334V298.6666666666667C85.3333333333333 322.1333333333334 104.5333333333333 341.3333333333334 128 341.3333333333334H469.3333333333333M42.6666666666667 384V128H0V384C0 407.4666666666667 19.2 426.6666666666667 42.6666666666667 426.6666666666667H426.6666666666667V384H42.6666666666667z" /> + <glyph glyph-name="more" + unicode="&#xF37B;" + horiz-adv-x="512" d=" M405.3333333333333 160C387.6266666666667 160 373.3333333333333 174.2933333333334 373.3333333333333 192S387.6266666666667 224 405.3333333333333 224S437.3333333333333 209.7066666666667 437.3333333333333 192S423.04 160 405.3333333333333 160M298.6666666666667 160C280.96 160 266.6666666666667 174.2933333333334 266.6666666666667 192S280.96 224 298.6666666666667 224S330.6666666666667 209.7066666666667 330.6666666666667 192S316.3733333333334 160 298.6666666666667 160M192 160C174.2933333333333 160 160 174.2933333333334 160 192S174.2933333333333 224 192 224S224 209.7066666666667 224 192S209.7066666666667 160 192 160M469.3333333333333 384H149.3333333333333C134.6133333333334 384 123.0933333333333 376.5333333333333 115.4133333333333 365.2266666666667L0 192L115.4133333333333 18.9866666666667C123.0933333333333 7.68 135.8933333333333 0 150.6133333333334 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 365.0133333333333 492.8 384 469.3333333333333 384z" /> + <glyph glyph-name="motorbike" + unicode="&#xF37C;" + horiz-adv-x="512" d=" M349.0133333333333 356.9066666666667H395.7333333333334V402.56H349.0133333333333V425.1733333333334H388.6933333333333C381.6533333333333 438.8266666666667 365.44 448 349.0133333333333 448C323.4133333333333 448 302.5066666666667 427.52 302.5066666666667 402.56C302.5066666666667 377.3866666666667 323.4133333333333 356.9066666666667 349.0133333333333 356.9066666666667M214.1866666666667 247.68L277.3333333333333 300.1600000000001L372.2666666666667 243.2H218.6666666666667M416.64 190.9333333333333L449.0666666666667 222.72C467.84 240.8533333333333 467.84 268.1600000000001 449.0666666666667 286.5066666666667L409.6 247.68L297.8133333333333 356.9066666666667C290.9866666666666 368.4266666666667 277.3333333333333 375.2533333333334 263.04 375.2533333333334C251.3066666666666 375.2533333333334 242.1333333333333 370.56 234.6666666666667 363.7333333333334L149.3333333333333 279.68C141.8666666666667 272.8533333333334 137.3866666666667 263.68 137.3866666666667 252.3733333333334V240.8533333333333H109.44C86.1866666666667 240.8533333333333 67.4133333333333 220.3733333333333 67.4133333333333 195.4133333333334V186.24C74.6666666666667 188.5866666666667 83.84 188.5866666666667 90.6666666666667 188.5866666666667C151.2533333333333 188.5866666666667 202.6666666666667 140.8 202.6666666666667 79.36C202.6666666666667 72.5333333333333 202.6666666666667 63.36 200.1066666666667 56.5333333333333H309.3333333333333C307.2 63.36 307.2 72.5333333333333 307.2 79.36C307.2 143.1466666666667 356.0533333333334 190.9333333333333 416.64 190.9333333333333M93.0133333333333 27.0933333333334C60.5866666666667 27.0933333333334 34.9866666666667 52.0533333333333 34.9866666666667 83.84C34.9866666666667 115.84 60.5866666666667 140.8 93.0133333333333 140.8C125.6533333333333 140.8 151.2533333333333 115.84 151.2533333333333 83.84C151.2533333333333 52.0533333333334 125.6533333333333 27.0933333333334 93.0133333333333 27.0933333333334M93.0133333333333 174.9333333333333C41.8133333333333 174.9333333333333 0 133.9733333333334 0 83.84C0 33.92 41.8133333333333 -7.04 93.0133333333333 -7.04C144.2133333333333 -7.04 186.24 33.9200000000001 186.24 83.84C186.24 133.9733333333334 144.2133333333334 174.9333333333333 93.0133333333333 174.9333333333333M418.9866666666667 27.0933333333334C386.3466666666667 27.0933333333334 360.7466666666667 52.0533333333333 360.7466666666667 83.84C360.7466666666667 115.84 386.3466666666667 140.8 418.9866666666667 140.8C451.4133333333333 140.8 477.0133333333333 115.84 477.0133333333333 83.84C477.0133333333333 52.0533333333334 451.4133333333333 27.0933333333334 418.9866666666667 27.0933333333334M418.9866666666667 174.9333333333333C367.7866666666667 174.9333333333333 325.76 133.9733333333334 325.76 83.84C325.76 33.92 367.7866666666667 -7.04 418.9866666666667 -7.04C470.1866666666666 -7.04 512 33.9200000000001 512 83.84C512 133.9733333333334 470.1866666666666 174.9333333333333 418.9866666666667 174.9333333333333z" /> + <glyph glyph-name="mouse" + unicode="&#xF37D;" + horiz-adv-x="512" d=" M234.6666666666667 425.1733333333334C150.4 414.7200000000001 85.3333333333333 343.04 85.3333333333333 256H234.6666666666667M85.3333333333333 128C85.3333333333333 33.7066666666667 161.7066666666667 -42.6666666666666 256 -42.6666666666666S426.6666666666667 33.7066666666667 426.6666666666667 128V213.3333333333334H85.3333333333333M277.3333333333333 425.1733333333334V256H426.6666666666667C426.6666666666667 343.04 361.3866666666667 414.7200000000001 277.3333333333333 425.1733333333334z" /> + <glyph glyph-name="mouse-off" + unicode="&#xF37E;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L373.3333333333333 4.48C343.04 -24.7466666666667 301.6533333333333 -42.6666666666666 256 -42.6666666666666C161.7066666666667 -42.6666666666666 85.3333333333333 33.7066666666667 85.3333333333333 128V213.3333333333334H164.9066666666667L122.24 256H85.3333333333333C85.3333333333333 267.52 86.4 278.8266666666667 88.5333333333333 289.7066666666667L42.6666666666667 335.5733333333334M234.6666666666667 425.1733333333334V256H230.8266666666667L123.52 363.52C150.4 396.8 189.8666666666667 419.6266666666667 234.6666666666667 425.1733333333334M426.6666666666667 213.3333333333334V128C426.6666666666667 107.7333333333334 423.04 88.3200000000001 416.64 70.1866666666667L273.4933333333334 213.3333333333334H426.6666666666667M277.3333333333333 425.1733333333334C361.3866666666667 414.7200000000001 426.6666666666667 343.04 426.6666666666667 256H277.3333333333333V425.1733333333334z" /> + <glyph glyph-name="mouse-variant" + unicode="&#xF37F;" + horiz-adv-x="512" d=" M298.6666666666667 298.6666666666667H213.3333333333333V403.2C261.9733333333333 393.3866666666667 298.6666666666667 350.2933333333334 298.6666666666667 298.6666666666667M85.3333333333333 298.6666666666667C85.3333333333333 350.2933333333334 122.0266666666667 393.3866666666667 170.6666666666667 403.2V298.6666666666667H85.3333333333333M298.6666666666667 192C298.6666666666667 140.3733333333333 261.9733333333333 97.28 213.3333333333333 87.4666666666667V64C213.3333333333333 28.5866666666667 241.92 0 277.3333333333333 0S341.3333333333333 28.5866666666667 341.3333333333333 64V170.6666666666667C341.3333333333333 217.8133333333334 379.52 256 426.6666666666667 256H469.3333333333333L448 234.6666666666667L469.3333333333333 213.3333333333334H426.6666666666667C403.2 213.3333333333334 384 194.1333333333333 384 170.6666666666667V64C384 5.1200000000001 336.2133333333333 -42.6666666666666 277.3333333333333 -42.6666666666666S170.6666666666667 5.1200000000001 170.6666666666667 64V87.4666666666667C122.0266666666667 97.2800000000001 85.3333333333333 140.3733333333334 85.3333333333333 192.0000000000001V256H298.6666666666667V192z" /> + <glyph glyph-name="mouse-variant-off" + unicode="&#xF380;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L368.8533333333333 9.3866666666667C350.2933333333334 -21.3333333333333 316.16 -42.6666666666666 277.3333333333333 -42.6666666666666C218.4533333333333 -42.6666666666666 170.6666666666667 5.1200000000001 170.6666666666667 64V87.4666666666667C122.0266666666667 97.2800000000001 85.3333333333333 140.3733333333334 85.3333333333333 192.0000000000001V256H122.24L42.6666666666667 335.5733333333334M298.6666666666667 298.6666666666667H213.3333333333333V403.2C261.9733333333333 393.3866666666667 298.6666666666667 350.2933333333334 298.6666666666667 298.6666666666667M170.6666666666667 403.2V316.1600000000001L114.7733333333333 372.2666666666667C129.4933333333334 387.6266666666667 149.3333333333333 398.7200000000001 170.6666666666667 403.2M298.6666666666667 192V188.3733333333333L230.8266666666667 256H298.6666666666667V192M213.3333333333333 87.4666666666667V64C213.3333333333333 28.5866666666667 241.92 0 277.3333333333333 0C304.64 0 327.8933333333333 17.0666666666667 337.0666666666667 41.1733333333333L264.5333333333333 113.7066666666667C250.4533333333333 100.6933333333333 232.96 91.52 213.3333333333333 87.4666666666667M341.3333333333333 170.6666666666668C341.3333333333333 217.8133333333334 379.52 256.0000000000001 426.6666666666667 256.0000000000001H469.3333333333333L448 234.6666666666667L469.3333333333333 213.3333333333334H426.6666666666667C403.2 213.3333333333334 384 194.1333333333334 384 170.6666666666668V102.8266666666667L341.3333333333333 145.4933333333334V170.6666666666667z" /> + <glyph glyph-name="move-resize" + unicode="&#xF655;" + horiz-adv-x="512" d=" M192 426.6666666666667V405.3333333333333H213.3333333333333V341.3333333333334H192V320H256V341.3333333333334H234.6666666666667V405.3333333333333H256V426.6666666666667M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V0C149.3333333333333 -23.6799999999999 168.32 -42.6666666666666 192 -42.6666666666666H448C471.6799999999999 -42.6666666666666 490.6666666666666 -23.6799999999999 490.6666666666666 0V256C490.6666666666666 279.68 471.6799999999999 298.6666666666667 448 298.6666666666667M21.3333333333333 256V192H42.6666666666667V213.3333333333334H106.6666666666667V192H128V256H106.6666666666667V234.6666666666667H42.6666666666667V256M192 256H448V0H192M298.6666666666667 234.6666666666667V213.3333333333334H320V106.6666666666667H234.6666666666667V128H213.3333333333333V64H234.6666666666667V85.3333333333334H320V42.6666666666667H298.6666666666667V21.3333333333334H362.6666666666667V42.6666666666667H341.3333333333333V85.3333333333334H405.3333333333333V64H426.6666666666667V128H405.3333333333333V106.6666666666667H341.3333333333333V213.3333333333334H362.6666666666667V234.6666666666667" /> + <glyph glyph-name="move-resize-variant" + unicode="&#xF656;" + horiz-adv-x="512" d=" M40.1066666666667 438.1866666666667L9.8133333333333 407.8933333333333L119.2533333333333 298.6666666666667H42.6666666666667V256H192V405.3333333333333H149.3333333333333V328.7466666666667M234.6666666666667 298.6666666666667V256H448V128H490.6666666666666V256C490.6666666666666 279.4666666666667 471.4666666666667 298.6666666666667 448 298.6666666666667M149.3333333333333 213.3333333333334V0C149.3333333333333 -23.4666666666667 168.5333333333333 -42.6666666666666 192 -42.6666666666666H320V0H192V213.3333333333334M338.7733333333333 139.52L308.48 109.2266666666667L418.1333333333334 0H362.6666666666667V-42.6666666666666H490.6666666666666V85.3333333333334H448V30.08" /> + <glyph glyph-name="movie" + unicode="&#xF381;" + horiz-adv-x="512" d=" M384 362.6666666666667L426.6666666666667 277.3333333333334H362.6666666666667L320 362.6666666666667H277.3333333333333L320 277.3333333333334H256L213.3333333333333 362.6666666666667H170.6666666666667L213.3333333333333 277.3333333333334H149.3333333333333L106.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V362.6666666666667H384z" /> + <glyph glyph-name="multiplication" + unicode="&#xF382;" + horiz-adv-x="512" d=" M234.6666666666667 384H277.3333333333333V228.9066666666667L411.52 306.3466666666667L432.8533333333333 269.4400000000001L298.6666666666667 192L433.0666666666667 114.3466666666667L411.7333333333334 77.44L277.3333333333333 155.3066666666667V0H234.6666666666667V155.0933333333334L100.0533333333333 77.6533333333334L78.72 114.5600000000001L213.3333333333333 192L79.36 269.6533333333334L100.6933333333333 306.5600000000001L234.6666666666667 229.12V384z" /> + <glyph glyph-name="multiplication-box" + unicode="&#xF383;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333V155.0933333333334L337.7066666666667 120.3200000000001L359.04 157.2266666666667L298.6666666666667 192L359.04 226.9866666666667L337.7066666666666 263.8933333333334L277.3333333333333 228.9066666666667V298.6666666666667H234.6666666666667V228.9066666666667L174.2933333333333 263.8933333333333L152.96 226.9866666666667L213.3333333333333 192L152.96 157.2266666666667L174.2933333333333 120.3200000000001L234.6666666666667 155.0933333333334V85.3333333333334z" /> + <glyph glyph-name="music-box" + unicode="&#xF384;" + horiz-adv-x="512" d=" M341.3333333333333 256H277.3333333333333V138.6666666666667C277.3333333333333 109.2266666666667 253.44 85.3333333333334 224 85.3333333333334S170.6666666666667 109.2266666666667 170.6666666666667 138.6666666666667S194.56 192 224 192C236.16 192 247.04 187.9466666666667 256 181.3333333333334V298.6666666666667H341.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="music-box-outline" + unicode="&#xF385;" + horiz-adv-x="512" d=" M341.3333333333333 256H277.3333333333333V138.6666666666667C277.3333333333333 109.2266666666667 253.44 85.3333333333334 224 85.3333333333334S170.6666666666667 109.2266666666667 170.6666666666667 138.6666666666667S194.56 192 224 192C236.16 192 247.04 187.9466666666667 256 181.3333333333334V298.6666666666667H341.3333333333333V256M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="music-circle" + unicode="&#xF386;" + horiz-adv-x="512" d=" M341.3333333333333 256V298.6666666666667H256V181.3333333333334C247.04 187.9466666666667 236.16 192 224 192C194.56 192 170.6666666666667 168.1066666666667 170.6666666666667 138.6666666666667S194.56 85.3333333333334 224 85.3333333333334S277.3333333333333 109.2266666666667 277.3333333333333 138.6666666666667V256H341.3333333333333M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="music-note" + unicode="&#xF387;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C170.6666666666667 192 128 149.3333333333334 128 96S170.6666666666667 0 224 0S320 42.6666666666667 320 96V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-bluetooth" + unicode="&#xF5FE;" + horiz-adv-x="512" d=" M213.3333333333333 384V186.4533333333334C202.6666666666667 190.0800000000001 192 192 181.3333333333333 192C128 192 85.3333333333333 149.3333333333334 85.3333333333333 96S128 0 181.3333333333333 0S277.3333333333333 42.6666666666667 277.3333333333333 96V320H362.6666666666667V384H213.3333333333333M426.6666666666667 298.6666666666667V217.8133333333334L377.8133333333334 266.6666666666667L362.6666666666667 251.52L422.1866666666666 192L362.6666666666667 132.48L377.8133333333334 117.3333333333334L426.6666666666667 166.1866666666667V85.3333333333334H437.3333333333333L498.1333333333333 146.1333333333333L452.48 192L498.3466666666666 237.8666666666667L437.3333333333333 298.6666666666667H426.6666666666667M448 257.92L468.0533333333333 237.8666666666667L448 217.8133333333334V257.92M448 166.1866666666667L468.0533333333333 146.1333333333333L448 126.0800000000001V166.1866666666667z" /> + <glyph glyph-name="music-note-bluetooth-off" + unicode="&#xF5FF;" + horiz-adv-x="512" d=" M213.3333333333333 384V262.8266666666667L277.3333333333333 198.8266666666667V320H362.6666666666667V384H213.3333333333333M69.9733333333333 352L42.6666666666667 324.9066666666667L176.2133333333333 191.36C125.6533333333333 188.8 85.3333333333333 147.2000000000001 85.3333333333333 96C85.3333333333333 42.6666666666667 128 0 181.3333333333333 0C232.5333333333334 0 274.1333333333334 40.3200000000001 276.6933333333333 90.88L377.1733333333333 -9.6L404.48 17.4933333333333L277.3333333333333 144.64L213.3333333333333 208.64L69.9733333333333 352M426.6666666666667 298.6666666666667V217.8133333333334L377.8133333333334 266.6666666666667L362.6666666666667 251.52L422.1866666666666 192L362.6666666666667 132.48L377.8133333333334 117.3333333333334L426.6666666666667 166.1866666666667V85.3333333333334H437.3333333333333L498.1333333333333 146.1333333333333L452.48 192L498.3466666666666 237.8666666666667L437.3333333333333 298.6666666666667H426.6666666666667M448 257.92L468.0533333333333 237.8666666666667L448 217.8133333333334V257.92M448 166.1866666666667L468.0533333333333 146.1333333333333L448 126.0800000000001V166.1866666666667z" /> + <glyph glyph-name="music-note-eighth" + unicode="&#xF388;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-half" + unicode="&#xF389;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V384H256M224 138.6666666666667C247.4666666666667 138.6666666666667 266.6666666666667 119.4666666666667 266.6666666666667 96S247.4666666666667 53.3333333333334 224 53.3333333333334S181.3333333333333 72.5333333333333 181.3333333333333 96S200.5333333333333 138.6666666666667 224 138.6666666666667z" /> + <glyph glyph-name="music-note-off" + unicode="&#xF38A;" + horiz-adv-x="512" d=" M256 384V262.8266666666667L320 198.8266666666667V320H405.3333333333333V384H256M112.64 352L85.3333333333333 324.9066666666667L218.88 191.36C168.32 188.8 128 147.2000000000001 128 96C128 42.6666666666667 170.6666666666667 0 224 0C275.2 0 316.8 40.3200000000001 319.36 90.88L419.84 -9.6L447.1466666666667 17.4933333333333L320 144.64L256 208.64L112.64 352z" /> + <glyph glyph-name="music-note-quarter" + unicode="&#xF38B;" + horiz-adv-x="512" d=" M256 384H320V128H405.3333333333333V64H314.0266666666667C300.8 26.8800000000001 265.8133333333333 0 224 0S147.2 26.8800000000001 133.9733333333333 64H64V128H133.9733333333333C147.2 165.12 182.1866666666667 192 224 192C234.6666666666667 192 245.3333333333333 190.0800000000001 256 186.4533333333334V384z" /> + <glyph glyph-name="music-note-sixteenth" + unicode="&#xF38C;" + horiz-adv-x="512" d=" M256 384V186.4533333333334C245.3333333333333 190.0800000000001 234.6666666666667 192 224 192C182.1866666666667 192 147.2 165.12 133.9733333333333 128H64V64H133.9733333333333C147.2 26.8800000000001 182.1866666666667 0 224 0S300.8 26.8800000000001 314.0266666666667 64H405.3333333333333V128H320V234.6666666666667H405.3333333333333V298.6666666666667H320V320H405.3333333333333V384H256z" /> + <glyph glyph-name="music-note-whole" + unicode="&#xF38D;" + horiz-adv-x="512" d=" M224 192C183.4666666666667 192 147.2 166.4 133.5466666666667 128H64V64H133.5466666666667C147.2 25.6 183.4666666666667 0 224 0C264.5333333333333 0 300.8 25.6 314.4533333333333 64H405.3333333333333V128H314.4533333333333C300.8 166.4 264.5333333333333 192 224 192M224 138.6666666666667C247.4666666666667 138.6666666666667 266.6666666666667 119.4666666666667 266.6666666666667 96S247.4666666666667 53.3333333333334 224 53.3333333333334S181.3333333333333 72.5333333333333 181.3333333333333 96S200.5333333333333 138.6666666666667 224 138.6666666666667z" /> + <glyph glyph-name="nature" + unicode="&#xF38E;" + horiz-adv-x="512" d=" M277.3333333333333 104.1066666666667C351.36 112.8533333333334 408.9600000000001 175.7866666666666 408.9600000000001 252.3733333333333C408.9600000000001 334.9333333333333 342.1866666666667 401.7066666666667 259.6266666666667 401.7066666666667S110.2933333333334 334.9333333333333 110.2933333333334 252.3733333333333C110.2933333333334 178.3466666666666 164.0533333333334 117.3333333333333 234.6666666666667 105.3866666666667V21.3333333333334H106.6666666666667V-21.3333333333333H405.3333333333333V21.3333333333334H277.3333333333333V104.1066666666667z" /> + <glyph glyph-name="nature-people" + unicode="&#xF38F;" + horiz-adv-x="512" d=" M96 213.3333333333334C113.7066666666667 213.3333333333334 128 227.6266666666667 128 245.3333333333334S113.7066666666667 277.3333333333334 96 277.3333333333334S64 263.04 64 245.3333333333334S78.2933333333333 213.3333333333334 96 213.3333333333334M472.96 252.3733333333334C472.96 334.9333333333334 406.1866666666667 401.7066666666667 323.6266666666667 401.7066666666667S174.2933333333334 334.9333333333334 174.2933333333334 252.3733333333334C174.2933333333334 178.3466666666667 228.0533333333334 117.3333333333334 298.6666666666667 105.3866666666667V21.3333333333334H128V85.3333333333334H149.3333333333333V170.6666666666667C149.3333333333333 182.4 139.7333333333333 192 128 192H64C52.2666666666667 192 42.6666666666667 182.4 42.6666666666667 170.6666666666667V85.3333333333334H64V-21.3333333333333H405.3333333333333V21.3333333333334H341.3333333333333V104.1066666666667C415.36 112.8533333333334 472.96 175.7866666666666 472.96 252.3733333333333z" /> + <glyph glyph-name="navigation" + unicode="&#xF390;" + horiz-adv-x="512" d=" M256 405.3333333333333L96 15.1466666666667L111.1466666666667 0L256 64L400.8533333333333 0L416 15.1466666666667L256 405.3333333333333z" /> + <glyph glyph-name="near-me" + unicode="&#xF5CD;" + horiz-adv-x="512" d=" M448 384L64 223.36V202.6666666666667L209.92 145.92L266.6666666666667 0H287.1466666666667L448 384z" /> + <glyph glyph-name="needle" + unicode="&#xF391;" + horiz-adv-x="512" d=" M237.8666666666667 124.16L207.5733333333333 154.24L237.8666666666667 184.5333333333334L267.9466666666667 154.24L298.0266666666667 184.5333333333334L267.9466666666667 214.6133333333334L298.0266666666667 244.6933333333334L328.32 214.6133333333334L358.4 244.6933333333334L298.0266666666667 305.0666666666667L147.2 154.24L207.5733333333333 93.8666666666667L237.8666666666667 124.16M65.7066666666667 42.6666666666667L132.2666666666667 109.0133333333333L87.04 154.24L298.0266666666667 365.4400000000001L343.4666666666667 320L373.3333333333333 350.2933333333334L343.4666666666667 380.5866666666667L373.3333333333333 410.6666666666667L464 320L433.92 290.1333333333334L403.6266666666667 320L373.3333333333333 290.1333333333334L418.7733333333333 244.6933333333334L207.5733333333333 33.7066666666667L162.3466666666666 78.9333333333333L65.7066666666666 -17.92V42.6666666666667z" /> + <glyph glyph-name="nest-protect" + unicode="&#xF392;" + horiz-adv-x="512" d=" M256 64C326.6133333333334 64 384 121.3866666666667 384 192C384 262.8266666666667 326.6133333333334 320 256 320C185.1733333333333 320 128 262.8266666666667 128 192C128 121.3866666666667 185.3866666666667 64 256 64M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384H405.3333333333333M170.6666666666667 192C170.6666666666667 239.1466666666667 208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192z" /> + <glyph glyph-name="nest-thermostat" + unicode="&#xF393;" + horiz-adv-x="512" d=" M361.6 86.4L316.3733333333333 131.6266666666667C331.7333333333334 147.2000000000001 341.3333333333333 168.5333333333334 341.3333333333333 192C341.3333333333333 207.7866666666667 336.8533333333333 222.5066666666667 329.1733333333333 234.6666666666667L375.4666666666667 281.3866666666667C394.6666666666667 256 405.3333333333333 225.4933333333334 405.3333333333333 192C405.3333333333333 150.8266666666667 388.6933333333333 113.4933333333334 361.6 86.4M256 341.3333333333334C289.4933333333334 341.3333333333334 320 330.6666666666667 345.3866666666667 311.4666666666667L298.6666666666667 265.3866666666667C286.5066666666667 272.8533333333334 271.7866666666667 277.3333333333334 256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666667 239.1466666666667 170.6666666666667 192C170.6666666666667 168.5333333333334 180.2666666666667 147.2000000000001 195.6266666666667 131.6266666666667L150.4 86.4C123.3066666666667 113.4933333333334 106.6666666666667 150.8266666666667 106.6666666666667 192C106.6666666666667 274.5600000000001 173.44 341.3333333333334 256 341.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 309.9733333333334 373.3333333333333 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="new-box" + unicode="&#xF394;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667C450.3466666666667 362.6666666666667 469.3333333333333 343.68 469.3333333333333 320V64C469.3333333333333 40.3200000000001 450.3466666666667 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.6533333333333 21.3333333333334 42.6666666666667 40.3200000000001 42.6666666666667 64V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667M181.3333333333333 128V256H154.6666666666667V181.3333333333334L101.3333333333333 256H74.6666666666667V128H101.3333333333333V202.6666666666667L155.7333333333333 128H181.3333333333333M288 229.12V256H202.6666666666667V128H288V154.6666666666667H234.6666666666667V178.3466666666667H288V205.2266666666667H234.6666666666667V229.12H288M437.3333333333333 149.3333333333333V256H410.6666666666667V160H386.7733333333333V234.6666666666667H360.1066666666667V160H336V256H309.3333333333333V149.3333333333334C309.3333333333333 137.6 318.9333333333333 128 330.6666666666667 128H416C427.7333333333334 128 437.3333333333333 137.6 437.3333333333333 149.3333333333334z" /> + <glyph glyph-name="newspaper" + unicode="&#xF395;" + horiz-adv-x="512" d=" M426.6666666666667 213.3333333333334H85.3333333333333V277.3333333333334H426.6666666666667M426.6666666666667 128H277.3333333333333V170.6666666666667H426.6666666666667M426.6666666666667 42.6666666666667H277.3333333333333V85.3333333333334H426.6666666666667M234.6666666666667 42.6666666666667H85.3333333333333V170.6666666666667H234.6666666666667M433.7066666666666 348.3733333333334L398.2933333333334 384L362.6666666666667 348.3733333333334L327.04 384L291.6266666666667 348.3733333333334L256 384L220.3733333333333 348.3733333333334L184.96 384L149.3333333333333 348.3733333333334L113.7066666666667 384L78.2933333333333 348.3733333333334L42.6666666666667 384V42.6666666666667C42.6666666666667 19.2 61.8666666666667 0 85.3333333333333 0H426.6666666666667C450.1333333333334 0 469.3333333333333 19.2 469.3333333333333 42.6666666666667V384L433.7066666666666 348.3733333333334z" /> + <glyph glyph-name="nfc" + unicode="&#xF396;" + horiz-adv-x="512" d=" M225.92 284.5866666666667S238.72 290.3466666666667 246.8266666666667 281.1733333333334C254.9333333333334 271.7866666666667 275.6266666666667 235.9466666666667 275.6266666666667 200.1066666666667C275.6266666666667 164.2666666666667 266.6666666666667 126.08 257.0666666666667 113.4933333333334C247.8933333333334 100.6933333333333 238.7200000000001 100.6933333333333 231.68 105.3866666666667C224.8533333333334 109.8666666666667 117.3333333333334 192 111.5733333333334 194.3466666666667C105.6 196.6933333333334 103.4666666666667 190.9333333333334 109.2266666666667 160.0000000000001C114.9866666666667 128.0000000000001 105.6 119.2533333333334 97.4933333333334 117.9733333333334C89.6 117.3333333333334 65.28 123.7333333333334 64 188.5866666666667C62.9333333333334 253.2266666666667 80.2133333333333 263.6800000000001 88.32 263.6800000000001C103.4666666666667 263.6800000000001 219.0933333333333 160 226.9866666666667 160.8533333333334C234.0266666666667 161.9200000000001 237.44 205.8666666666667 224 240.6400000000001C208.64 278.1866666666667 225.92 284.5866666666667 225.92 284.5866666666667M411.7333333333334 349.2266666666667C450.56 272.2133333333334 448 199.2533333333333 448 192C448 184.7466666666667 450.56 111.7866666666667 411.7333333333334 34.7733333333333C411.7333333333334 34.7733333333333 401.7066666666667 23.04 386.56 30.08C371.6266666666667 37.12 376.7466666666667 55.4666666666667 376.7466666666667 55.4666666666667S408.32 116.2666666666667 407.4666666666667 190.9333333333334V192C408.32 266.6666666666667 376.7466666666667 328.5333333333334 376.7466666666667 328.5333333333334S371.6266666666667 346.88 386.56 353.92C401.7066666666667 360.9600000000001 411.7333333333334 349.2266666666667 411.7333333333334 349.2266666666667M336.4266666666667 314.6666666666667C368.2133333333334 256.8533333333334 366.08 199.2533333333333 365.6533333333333 192C366.08 184.7466666666667 368.2133333333334 129.7066666666667 336.4266666666666 67.2C336.4266666666666 67.2 326.4 55.4666666666666 311.2533333333334 62.5066666666667C296.32 69.5466666666666 301.44 87.8933333333334 301.44 87.8933333333334S321.92 117.3333333333334 325.12 190.9333333333334V192C322.9866666666666 266.0266666666667 301.44 293.76 301.44 293.76S296.32 312.32 311.2533333333334 319.1466666666667C326.4 326.1866666666667 336.4266666666666 314.6666666666667 336.4266666666666 314.6666666666667z" /> + <glyph glyph-name="nfc-tap" + unicode="&#xF397;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M85.3333333333333 362.6666666666667H234.6666666666667C258.1333333333334 362.6666666666667 277.3333333333333 343.4666666666667 277.3333333333333 320V256H234.6666666666667V320H85.3333333333333V213.3333333333334H128V256L192 192L128 128V170.6666666666667H85.3333333333333C61.8666666666667 170.6666666666667 42.6666666666667 189.8666666666667 42.6666666666667 213.3333333333334V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M426.6666666666667 21.3333333333334H277.3333333333333C253.8666666666667 21.3333333333334 234.6666666666667 40.5333333333333 234.6666666666667 64V128H277.3333333333333V64H426.6666666666667V170.6666666666667H384V128L320 192L384 256V213.3333333333334H426.6666666666667C450.1333333333334 213.3333333333334 469.3333333333333 194.1333333333333 469.3333333333333 170.6666666666667V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334z" /> + <glyph glyph-name="nfc-variant" + unicode="&#xF398;" + horiz-adv-x="512" d=" M384 320H277.3333333333333C253.8666666666667 320 234.6666666666667 300.8 234.6666666666667 277.3333333333334V228.6933333333334C222.08 221.44 213.3333333333333 207.7866666666667 213.3333333333333 192C213.3333333333333 168.5333333333334 232.5333333333334 149.3333333333334 256 149.3333333333334C279.68 149.3333333333334 298.6666666666667 168.5333333333334 298.6666666666667 192C298.6666666666667 207.7866666666667 290.1333333333334 221.44 277.3333333333333 228.6933333333334V277.3333333333334H341.3333333333333V106.6666666666667H170.6666666666667V277.3333333333334H213.3333333333333V320H128V64H384M426.6666666666667 21.3333333333334H85.3333333333333V362.6666666666667H426.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.3466666666667 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="nodejs" + unicode="&#xF399;" + horiz-adv-x="512" d=" M256 408.5333333333333C250.24 408.5333333333333 244.2666666666667 407.04 239.36 404.2666666666667L80.64 312.5333333333334C70.4 306.56 64 295.4666666666667 64 283.52V100.48C64 88.5333333333334 70.4 77.4400000000001 80.64 71.4666666666667L122.24 47.5733333333334C142.5066666666667 37.76 149.3333333333333 37.5466666666667 158.72 37.5466666666667C188.5866666666667 37.5466666666667 205.8666666666667 55.6800000000001 205.8666666666667 87.2533333333335V267.9466666666667C205.8666666666667 270.5066666666667 203.7333333333334 272.6400000000001 201.1733333333333 272.6400000000001H181.3333333333333C178.56 272.6400000000001 176.4266666666667 270.5066666666667 176.4266666666667 267.9466666666667V87.2533333333333C176.4266666666667 73.1733333333334 161.92 59.3066666666667 138.6666666666667 71.04L94.9333333333333 96C93.44 97.0666666666667 92.5866666666667 98.7733333333333 92.5866666666667 100.48V283.52C92.5866666666667 285.44 93.44 287.1466666666667 94.9333333333333 288L253.6533333333334 379.52C254.9333333333334 380.3733333333334 257.0666666666667 380.3733333333334 258.3466666666667 379.52L417.0666666666667 288C418.56 287.1466666666667 419.4133333333333 285.44 419.4133333333333 283.52V100.48C419.4133333333333 98.7733333333334 418.56 97.0666666666667 417.0666666666667 96L258.3466666666667 4.48C257.0666666666666 3.6266666666667 254.9333333333333 3.6266666666667 253.44 4.48L213.3333333333333 28.8000000000001C211.6266666666667 29.4400000000001 209.92 29.6533333333334 208.8533333333333 29.0133333333334C197.5466666666667 22.6133333333334 195.4133333333333 21.3333333333334 184.96 18.1333333333334C182.4 17.2800000000001 178.3466666666666 15.7866666666667 186.4533333333333 11.3066666666667L239.36 -20.0533333333333C244.48 -23.04 250.0266666666667 -24.5333333333333 256 -24.5333333333333S267.52 -23.04 272.64 -20.0533333333333L431.36 71.4666666666667C441.6 77.4400000000001 448 88.5333333333334 448 100.48V283.52C448 295.4666666666667 441.6 306.56 431.36 312.5333333333334L272.64 404.2666666666667C267.7333333333333 407.04 261.9733333333333 408.5333333333334 256 408.5333333333334M298.6666666666667 277.3333333333334C253.44 277.3333333333334 226.3466666666667 258.3466666666667 226.3466666666667 226.3466666666667C226.3466666666667 192 253.2266666666667 181.9733333333334 296.7466666666667 177.7066666666667C348.5866666666667 172.5866666666667 352.64 164.9066666666667 352.64 154.6666666666667C352.64 136.96 338.3466666666667 129.4933333333334 305.0666666666667 129.4933333333334C262.8266666666667 129.4933333333334 253.8666666666667 139.9466666666667 250.6666666666667 160.8533333333334C250.24 162.9866666666667 248.32 164.6933333333334 245.9733333333333 164.6933333333334H225.4933333333334C222.9333333333333 164.6933333333334 221.0133333333333 162.7733333333334 221.0133333333333 160C221.0133333333333 133.5466666666667 235.52 101.5466666666666 305.0666666666666 101.5466666666666C355.2 101.5466666666666 384 121.3866666666667 384 155.9466666666667C384 190.2933333333333 360.9600000000001 199.2533333333333 312.1066666666667 205.8666666666667C262.8266666666666 212.2666666666667 257.92 215.68 257.92 227.2C257.92 236.8 262.1866666666666 249.6 298.6666666666667 249.6C330.6666666666667 249.6 343.2533333333334 242.56 348.16 220.5866666666667C348.5866666666667 218.4533333333334 350.5066666666667 216.96 352.64 216.96H373.3333333333333C374.4 216.96 375.68 217.3866666666667 376.5333333333333 218.4533333333334C377.3866666666666 219.3066666666667 378.0266666666667 220.5866666666667 377.6 221.8666666666667C374.6133333333333 259.8400000000001 349.44 277.3333333333334 298.6666666666667 277.3333333333334z" /> + <glyph glyph-name="note" + unicode="&#xF39A;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667V352L416 234.6666666666667M106.6666666666667 384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V256L320 384H106.6666666666667z" /> + <glyph glyph-name="note-outline" + unicode="&#xF39B;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M106.6666666666667 341.3333333333334V42.6666666666667H405.3333333333333V192H256V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="note-plus" + unicode="&#xF39C;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M192 64H234.6666666666667V128H298.6666666666667V170.6666666666667H234.6666666666667V234.6666666666667H192V170.6666666666667H128V128H192V64z" /> + <glyph glyph-name="note-plus-outline" + unicode="&#xF39D;" + horiz-adv-x="512" d=" M320 234.6666666666667H437.3333333333333L320 352V234.6666666666667M85.3333333333333 384H341.3333333333333L469.3333333333333 256V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.6533333333333 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V341.3333333333334C42.6666666666667 365.0133333333333 61.6533333333333 384 85.3333333333333 384M85.3333333333333 341.3333333333334V42.6666666666667H426.6666666666667V192H277.3333333333333V341.3333333333334H85.3333333333333M170.6666666666667 85.3333333333334V128H128V170.6666666666667H170.6666666666667V213.3333333333334H213.3333333333333V170.6666666666667H256V128H213.3333333333333V85.3333333333334H170.6666666666667z" /> + <glyph glyph-name="note-text" + unicode="&#xF39E;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H416L298.6666666666667 352V234.6666666666667M106.6666666666667 384H320L448 256V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 365.0133333333333 82.9866666666667 384 106.6666666666667 384M106.6666666666667 192V149.3333333333334H405.3333333333333V192H106.6666666666667M106.6666666666667 106.6666666666667V64H298.6666666666667V106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="notification-clear-all" + unicode="&#xF39F;" + horiz-adv-x="512" d=" M106.6666666666667 170.6666666666667H405.3333333333333V213.3333333333334H106.6666666666667M64 85.3333333333334H362.6666666666667V128H64M149.3333333333333 298.6666666666667V256H448V298.6666666666667" /> + <glyph glyph-name="numeric" + unicode="&#xF3A0;" + horiz-adv-x="512" d=" M85.3333333333333 85.3333333333334V256H42.6666666666667V298.6666666666667H128V85.3333333333334H85.3333333333333M469.3333333333333 128C469.3333333333333 104.3200000000001 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H341.3333333333333V128H426.6666666666667V170.6666666666667H384V213.3333333333334H426.6666666666667V256H341.3333333333333V298.6666666666667H426.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256V224C469.3333333333333 206.2933333333334 455.04 192 437.3333333333333 192C455.04 192 469.3333333333333 177.7066666666667 469.3333333333333 160V128M298.6666666666667 128V85.3333333333334H170.6666666666667V170.6666666666667C170.6666666666667 194.3466666666667 189.8666666666667 213.3333333333334 213.3333333333333 213.3333333333334H256V256H170.6666666666667V298.6666666666667H256C279.4666666666667 298.6666666666667 298.6666666666667 279.4666666666667 298.6666666666667 256V213.3333333333334C298.6666666666667 189.6533333333334 279.4666666666667 170.6666666666667 256 170.6666666666667H213.3333333333333V128H298.6666666666667z" /> + <glyph glyph-name="numeric-0-box" + unicode="&#xF3A1;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 298.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V128C192 104.5333333333333 211.2 85.3333333333334 234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.4666666666667 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667M234.6666666666667 256H277.3333333333333V128H234.6666666666667V256z" /> + <glyph glyph-name="numeric-0-box-multiple-outline" + unicode="&#xF3A2;" + horiz-adv-x="512" d=" M448 85.3333333333334V384H149.3333333333333V85.3333333333334H448M448 426.6666666666667C471.4666666666667 426.6666666666667 490.6666666666666 407.4666666666667 490.6666666666666 384V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H149.3333333333333C125.8666666666667 42.6666666666667 106.6666666666667 61.8666666666667 106.6666666666667 85.3333333333334V384C106.6666666666667 407.4666666666667 125.8666666666667 426.6666666666667 149.3333333333333 426.6666666666667H448M64 341.3333333333334V0H405.3333333333333V-42.6666666666666H64C40.5333333333333 -42.6666666666666 21.3333333333333 -23.4666666666667 21.3333333333333 0V341.3333333333334H64M277.3333333333333 341.3333333333334H320C343.4666666666667 341.3333333333334 362.6666666666667 322.1333333333334 362.6666666666667 298.6666666666667V170.6666666666667C362.6666666666667 147.2000000000001 343.4666666666667 128 320 128H277.3333333333333C253.8666666666667 128 234.6666666666667 147.2000000000001 234.6666666666667 170.6666666666667V298.6666666666667C234.6666666666667 322.1333333333334 253.8666666666667 341.3333333333334 277.3333333333333 341.3333333333334M277.3333333333333 298.6666666666667V170.6666666666667H320V298.6666666666667H277.3333333333333z" /> + <glyph glyph-name="numeric-0-box-outline" + unicode="&#xF3A3;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 279.4666666666667 320 256V128C320 104.5333333333333 300.8 85.3333333333334 277.3333333333333 85.3333333333334H234.6666666666667C211.2 85.3333333333334 192 104.5333333333333 192 128V256C192 279.4666666666667 211.2 298.6666666666667 234.6666666666667 298.6666666666667M234.6666666666667 256V128H277.3333333333333V256H234.6666666666667z" /> + <glyph glyph-name="numeric-1-box" + unicode="&#xF3A4;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H256V256H213.3333333333333V298.6666666666667H298.6666666666667M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-1-box-multiple-outline" + unicode="&#xF3A5;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M298.6666666666667 128H341.3333333333333V341.3333333333334H256V298.6666666666667H298.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-1-box-outline" + unicode="&#xF3A6;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M256 85.3333333333334H298.6666666666667V298.6666666666667H213.3333333333333V256H256" /> + <glyph glyph-name="numeric-2-box" + unicode="&#xF3A7;" + horiz-adv-x="512" d=" M320 213.3333333333334C320 189.6533333333334 300.8 170.6666666666667 277.3333333333333 170.6666666666667H234.6666666666667V128H320V85.3333333333334H192V170.6666666666667C192 194.3466666666667 211.2 213.3333333333334 234.6666666666667 213.3333333333334H277.3333333333333V256H192V298.6666666666667H277.3333333333333C300.8 298.6666666666667 320 279.4666666666667 320 256M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-2-box-multiple-outline" + unicode="&#xF3A8;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V213.3333333333334H320C343.4666666666667 213.3333333333334 362.6666666666667 232.5333333333334 362.6666666666667 256V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H234.6666666666667V298.6666666666667H320V256H277.3333333333333C253.8666666666667 256 234.6666666666667 236.8 234.6666666666667 213.3333333333334V128H362.6666666666667M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-2-box-outline" + unicode="&#xF3A9;" + horiz-adv-x="512" d=" M320 128H234.6666666666667V170.6666666666667H277.3333333333333C300.8 170.6666666666667 320 189.8666666666667 320 213.3333333333334V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H192V256H277.3333333333333V213.3333333333334H234.6666666666667C211.2 213.3333333333334 192 194.1333333333333 192 170.6666666666667V85.3333333333334H320M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-3-box" + unicode="&#xF3AA;" + horiz-adv-x="512" d=" M320 224C320 206.2933333333334 305.7066666666667 192 288 192C305.92 192 320 177.7066666666667 320 160V128C320 104.3200000000001 301.0133333333333 85.3333333333334 277.3333333333333 85.3333333333334H192V128H277.3333333333333V170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V256H192V298.6666666666667H277.3333333333333C301.0133333333333 298.6666666666667 320 279.68 320 256M405.3333333333333 384H106.6666666666667C83.4133333333333 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C429.0133333333333 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-3-box-multiple-outline" + unicode="&#xF3AB;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V202.6666666666667C362.6666666666667 220.3733333333333 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667C348.3733333333333 234.6666666666667 362.6666666666667 248.96 362.6666666666667 266.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H234.6666666666667V298.6666666666667H320V256H277.3333333333333V213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667z" /> + <glyph glyph-name="numeric-3-box-outline" + unicode="&#xF3AC;" + horiz-adv-x="512" d=" M320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H192V256H277.3333333333333V213.3333333333334H234.6666666666667V170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-4-box" + unicode="&#xF3AD;" + horiz-adv-x="512" d=" M320 85.3333333333334H277.3333333333333V170.6666666666667H192V298.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-4-box-multiple-outline" + unicode="&#xF3AE;" + horiz-adv-x="512" d=" M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M320 128H362.6666666666667V341.3333333333334H320V256H277.3333333333333V341.3333333333334H234.6666666666667V213.3333333333334H320M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-4-box-outline" + unicode="&#xF3AF;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M277.3333333333333 85.3333333333334H320V298.6666666666667H277.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H192V170.6666666666667H277.3333333333333" /> + <glyph glyph-name="numeric-5-box" + unicode="&#xF3B0;" + horiz-adv-x="512" d=" M320 256H234.6666666666667V213.3333333333334H277.3333333333333C300.8 213.3333333333334 320 194.1333333333333 320 170.6666666666667V128C320 104.3200000000001 300.8 85.3333333333334 277.3333333333333 85.3333333333334H192V128H277.3333333333333V170.6666666666667H192V298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-5-box-multiple-outline" + unicode="&#xF3B1;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667V213.3333333333334C362.6666666666667 237.0133333333333 343.4666666666667 256 320 256H277.3333333333333V298.6666666666667H362.6666666666667V341.3333333333334H234.6666666666667V213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667z" /> + <glyph glyph-name="numeric-5-box-outline" + unicode="&#xF3B2;" + horiz-adv-x="512" d=" M320 128V170.6666666666667C320 194.3466666666667 300.8 213.3333333333334 277.3333333333333 213.3333333333334H234.6666666666667V256H320V298.6666666666667H192V170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-6-box" + unicode="&#xF3B3;" + horiz-adv-x="512" d=" M320 256H234.6666666666667V213.3333333333334H277.3333333333333C300.8 213.3333333333334 320 194.1333333333333 320 170.6666666666667V128C320 104.3200000000001 300.8 85.3333333333334 277.3333333333333 85.3333333333334H234.6666666666667C211.2 85.3333333333334 192 104.5333333333333 192 128V256C192 279.68 211.2 298.6666666666667 234.6666666666667 298.6666666666667H320M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M234.6666666666667 128H277.3333333333333V170.6666666666667H234.6666666666667V128z" /> + <glyph glyph-name="numeric-6-box-multiple-outline" + unicode="&#xF3B4;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333M277.3333333333333 128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V213.3333333333334C362.6666666666667 237.0133333333333 343.4666666666667 256 320 256H277.3333333333333V298.6666666666667H362.6666666666667V341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V170.6666666666667C234.6666666666667 146.9866666666667 253.8666666666667 128 277.3333333333333 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-6-box-outline" + unicode="&#xF3B5;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V170.6666666666667C320 194.3466666666667 300.8 213.3333333333334 277.3333333333333 213.3333333333334H234.6666666666667V256H320V298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-7-box" + unicode="&#xF3B6;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334L320 256V298.6666666666667H192V256H277.3333333333333L192 85.3333333333334H234.6666666666667z" /> + <glyph glyph-name="numeric-7-box-multiple-outline" + unicode="&#xF3B7;" + horiz-adv-x="512" d=" M277.3333333333333 128L362.6666666666667 298.6666666666667V341.3333333333334H234.6666666666667V298.6666666666667H320L234.6666666666667 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-7-box-outline" + unicode="&#xF3B8;" + horiz-adv-x="512" d=" M234.6666666666667 85.3333333333334L320 256V298.6666666666667H192V256H277.3333333333333L192 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-8-box" + unicode="&#xF3B9;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V224C192 206.2933333333334 206.2933333333333 192 224 192C206.2933333333333 192 192 177.7066666666667 192 160V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667V170.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667V256z" /> + <glyph glyph-name="numeric-8-box-multiple-outline" + unicode="&#xF3BA;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H320V170.6666666666667H277.3333333333333M277.3333333333333 298.6666666666667H320V256H277.3333333333333M277.3333333333333 128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V202.6666666666667C362.6666666666667 220.3733333333333 348.3733333333333 234.6666666666667 330.6666666666667 234.6666666666667C348.3733333333333 234.6666666666667 362.6666666666667 248.96 362.6666666666667 266.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V266.6666666666667C234.6666666666667 248.96 248.96 234.6666666666667 266.6666666666667 234.6666666666667C248.96 234.6666666666667 234.6666666666667 220.3733333333333 234.6666666666667 202.6666666666667V170.6666666666667C234.6666666666667 146.9866666666667 253.8666666666667 128 277.3333333333333 128M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-8-box-outline" + unicode="&#xF3BB;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V128H234.6666666666667M234.6666666666667 256H277.3333333333333V213.3333333333334H234.6666666666667M234.6666666666667 85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V160C320 177.7066666666667 305.7066666666667 192 288 192C305.7066666666667 192 320 206.2933333333334 320 224V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V224C192 206.2933333333334 206.2933333333333 192 224 192C206.2933333333333 192 192 177.7066666666667 192 160V128C192 104.3200000000001 211.2 85.3333333333334 234.6666666666667 85.3333333333334M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-9-box" + unicode="&#xF3BC;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333V213.3333333333334M277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.6533333333334 211.2 170.6666666666667 234.6666666666667 170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667z" /> + <glyph glyph-name="numeric-9-box-multiple-outline" + unicode="&#xF3BD;" + horiz-adv-x="512" d=" M320 256H277.3333333333333V298.6666666666667H320M320 341.3333333333334H277.3333333333333C253.8666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667V256C234.6666666666667 232.32 253.8666666666667 213.3333333333334 277.3333333333333 213.3333333333334H320V170.6666666666667H234.6666666666667V128H320C343.4666666666667 128 362.6666666666667 147.2000000000001 362.6666666666667 170.6666666666667V298.6666666666667C362.6666666666667 322.3466666666667 343.4666666666667 341.3333333333334 320 341.3333333333334M448 85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-9-box-outline" + unicode="&#xF3BE;" + horiz-adv-x="512" d=" M277.3333333333333 213.3333333333334H234.6666666666667V256H277.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667C211.2 298.6666666666667 192 279.4666666666667 192 256V213.3333333333334C192 189.6533333333334 211.2 170.6666666666667 234.6666666666667 170.6666666666667H277.3333333333333V128H192V85.3333333333334H277.3333333333333C300.8 85.3333333333334 320 104.5333333333333 320 128V256C320 279.68 300.8 298.6666666666667 277.3333333333333 298.6666666666667M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="numeric-9-plus-box" + unicode="&#xF3BF;" + horiz-adv-x="512" d=" M448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334M405.3333333333333 213.3333333333334H362.6666666666667V256H320V213.3333333333334H277.3333333333333V170.6666666666667H320V128H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334M213.3333333333333 298.6666666666667H170.6666666666667C147.2 298.6666666666667 128 279.4666666666667 128 256V213.3333333333334C128 189.6533333333334 147.2 170.6666666666667 170.6666666666667 170.6666666666667H213.3333333333333V128H128V85.3333333333334H213.3333333333333C236.8 85.3333333333334 256 104.5333333333333 256 128V256C256 279.68 236.8 298.6666666666667 213.3333333333333 298.6666666666667M170.6666666666667 256H213.3333333333333V213.3333333333334H170.6666666666667V256z" /> + <glyph glyph-name="numeric-9-plus-box-multiple-outline" + unicode="&#xF3C0;" + horiz-adv-x="512" d=" M448 256H405.3333333333333V298.6666666666667H362.6666666666667V256H320V213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334H448V85.3333333333334H149.3333333333333V384H448M448 426.6666666666667H149.3333333333333C125.8666666666667 426.6666666666667 106.6666666666667 407.4666666666667 106.6666666666667 384V85.3333333333334C106.6666666666667 61.8666666666667 125.8666666666667 42.6666666666667 149.3333333333333 42.6666666666667H448C471.4666666666667 42.6666666666667 490.6666666666666 61.8666666666667 490.6666666666666 85.3333333333334V384C490.6666666666666 407.4666666666667 471.4666666666667 426.6666666666667 448 426.6666666666667M234.6666666666667 256V277.3333333333334H256V256M298.6666666666667 192V277.3333333333334C298.6666666666667 301.0133333333333 279.4666666666667 320 256 320H234.6666666666667C211.2 320 192 300.8 192 277.3333333333334V256C192 232.32 211.2 213.3333333333334 234.6666666666667 213.3333333333334H256V192H192V149.3333333333334H256C279.4666666666667 149.3333333333334 298.6666666666667 168.5333333333334 298.6666666666667 192M64 341.3333333333334H21.3333333333333V0C21.3333333333333 -23.4666666666667 40.5333333333333 -42.6666666666666 64 -42.6666666666666H405.3333333333333V0H64V341.3333333333334z" /> + <glyph glyph-name="numeric-9-plus-box-outline" + unicode="&#xF3C1;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H362.6666666666667V256H320V213.3333333333334H277.3333333333333V170.6666666666667H320V128H362.6666666666667V170.6666666666667H405.3333333333333V42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M192 213.3333333333334V234.6666666666667H213.3333333333333V213.3333333333334M256 149.3333333333334V234.6666666666667C256 258.3466666666667 236.8 277.3333333333334 213.3333333333333 277.3333333333334H192C168.5333333333333 277.3333333333334 149.3333333333333 258.1333333333334 149.3333333333333 234.6666666666667V213.3333333333334C149.3333333333333 189.6533333333334 168.5333333333333 170.6666666666667 192 170.6666666666667H213.3333333333333V149.3333333333334H149.3333333333333V106.6666666666667H213.3333333333333C236.8 106.6666666666667 256 125.8666666666667 256 149.3333333333334z" /> + <glyph glyph-name="nutrition" + unicode="&#xF3C2;" + horiz-adv-x="512" d=" M469.3333333333333 64C469.3333333333333 16.8533333333334 431.1466666666667 -21.3333333333333 384 -21.3333333333333H298.6666666666667C251.52 -21.3333333333333 213.3333333333333 16.8533333333334 213.3333333333333 64V106.6666666666667H469.3333333333333V64M85.3333333333333 384H298.6666666666667C322.1333333333334 384 341.3333333333333 364.8 341.3333333333333 341.3333333333334V149.3333333333334H170.6666666666667V42.6666666666667H85.3333333333333C61.8666666666667 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384M85.3333333333333 320V277.3333333333334H128V320H85.3333333333333M298.6666666666667 277.3333333333334V320H170.6666666666667V277.3333333333334H298.6666666666667M85.3333333333333 234.6666666666667V192H128V234.6666666666667H85.3333333333333M170.6666666666667 234.6666666666667V192H298.6666666666667V234.6666666666667H170.6666666666667M85.3333333333333 149.3333333333334V106.6666666666667H128V149.3333333333334H85.3333333333333z" /> + <glyph glyph-name="octagon" + unicode="&#xF3C3;" + horiz-adv-x="512" d=" M335.5733333333333 384H176.4266666666667L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333L448 112.4266666666667V271.5733333333334" /> + <glyph glyph-name="octagon-outline" + unicode="&#xF3C4;" + horiz-adv-x="512" d=" M176.4266666666667 384L64 271.5733333333334V112.4266666666667L176.4266666666667 0H335.5733333333333C373.3333333333333 37.5466666666667 448 112.4266666666667 448 112.4266666666667V271.5733333333334L335.5733333333333 384M194.1333333333333 341.3333333333334H317.8666666666666L405.3333333333333 253.8666666666667V130.1333333333334L317.8666666666667 42.6666666666667H194.1333333333333L106.6666666666667 130.1333333333333V253.8666666666667" /> + <glyph glyph-name="odnoklassniki" + unicode="&#xF3C5;" + horiz-adv-x="512" d=" M380.3733333333333 176.2133333333334C374.3999999999999 188.3733333333333 357.5466666666666 198.6133333333334 335.1466666666666 181.3333333333334C304.64 157.0133333333333 255.9999999999999 157.0133333333333 255.9999999999999 157.0133333333333S207.3599999999999 157.0133333333333 176.8533333333333 181.3333333333334C154.4533333333332 198.6133333333334 137.5999999999999 188.3733333333333 131.6266666666666 176.2133333333334C120.9599999999999 154.88 132.9066666666666 144.4266666666667 159.9999999999999 127.1466666666667C183.2533333333333 112.2133333333334 215.0399999999999 106.6666666666667 235.5199999999999 104.5333333333334L218.4533333333332 87.4666666666667C194.1333333333333 63.36 170.6666666666667 40.1066666666667 154.6666666666667 23.8933333333334C145.0666666666667 14.08 145.0666666666667 -1.4933333333333 154.6666666666667 -10.6666666666666L157.6533333333333 -14.08C167.2533333333333 -23.6799999999999 183.04 -23.6799999999999 192.64 -14.08L256 49.4933333333333C280.5333333333333 25.3866666666667 303.7866666666667 2.1333333333334 320 -14.08C329.6 -23.6799999999999 345.1733333333333 -23.6799999999999 354.9866666666667 -14.08L357.76 -10.6666666666666C367.5733333333333 -1.4933333333333 367.5733333333333 14.08 357.76 23.8933333333334L294.1866666666666 87.4666666666667L277.3333333333333 104.7466666666667C297.6 106.6666666666667 328.96 112.4266666666667 352 127.1466666666667C379.0933333333333 144.4266666666667 391.04 154.8800000000001 380.3733333333333 176.2133333333334M256 350.5066666666667C285.44 350.5066666666667 309.3333333333333 326.6133333333334 309.3333333333333 297.3866666666667C309.3333333333333 267.9466666666667 285.44 244.2666666666667 256 244.2666666666667S202.6666666666667 267.9466666666667 202.6666666666667 297.3866666666667C202.6666666666667 326.6133333333334 226.56 350.5066666666667 256 350.5066666666667M256 189.4400000000001C315.7333333333334 189.4400000000001 363.9466666666666 237.6533333333334 363.9466666666666 297.3866666666667C363.9466666666666 356.9066666666667 315.7333333333334 405.3333333333333 256 405.3333333333333S148.0533333333334 356.9066666666667 148.0533333333334 297.3866666666667C148.0533333333334 237.6533333333334 196.2666666666667 189.4400000000001 256 189.4400000000001z" /> + <glyph glyph-name="office" + unicode="&#xF3C6;" + horiz-adv-x="512" d=" M64 64L149.3333333333333 90.6666666666667V298.6666666666667L298.6666666666667 341.3333333333334V32L74.6666666666667 58.6666666666667L298.6666666666667 -21.3333333333333L426.6666666666667 5.3333333333334V373.3333333333334L297.6 405.3333333333333L64 325.3333333333334V64z" /> + <glyph glyph-name="oil" + unicode="&#xF3C7;" + horiz-adv-x="512" d=" M469.3333333333333 181.3333333333334S512 135.04 512 106.6666666666667C512 83.2 492.8 64 469.3333333333333 64S426.6666666666667 83.2 426.6666666666667 106.6666666666667C426.6666666666667 135.04 469.3333333333333 181.3333333333334 469.3333333333333 181.3333333333334M128 320H213.3333333333333C225.0666666666667 320 234.6666666666667 310.4 234.6666666666667 298.6666666666667S225.0666666666667 277.3333333333334 213.3333333333333 277.3333333333334H192V234.6666666666667H234.6666666666667C250.4533333333333 234.6666666666667 264.32 226.1333333333334 271.5733333333333 213.3333333333334L410.4533333333334 293.5466666666667L480 253.2266666666667C490.6666666666666 247.4666666666667 493.6533333333333 234.6666666666667 487.8933333333333 224C481.92 213.9733333333333 469.3333333333333 210.3466666666667 458.6666666666666 216.32L413.8666666666666 242.1333333333334L336 107.3066666666667C328.7466666666666 94.2933333333334 314.6666666666667 85.3333333333334 298.6666666666667 85.3333333333334H106.6666666666667C83.2 85.3333333333334 64 104.5333333333333 64 128V192C64 215.4666666666667 83.2 234.6666666666667 106.6666666666667 234.6666666666667H149.3333333333333V277.3333333333334H128C116.2666666666667 277.3333333333334 106.6666666666667 286.9333333333334 106.6666666666667 298.6666666666667S116.2666666666667 320 128 320M106.6666666666667 192V128H298.6666666666667L342.6133333333333 204.16L268.8 161.4933333333334L249.3866666666666 192H106.6666666666667M8.1066666666667 251.52L44.5866666666667 288C53.3333333333333 296.32 66.3466666666667 296.32 74.6666666666667 288C82.9866666666667 279.68 82.9866666666667 266.6666666666667 74.6666666666667 257.92L38.1866666666667 221.44C29.8666666666667 213.3333333333333 16.4266666666667 213.3333333333333 8.1066666666667 221.44C0 229.76 0 243.2 8.1066666666667 251.52z" /> + <glyph glyph-name="oil-temperature" + unicode="&#xF3C8;" + horiz-adv-x="512" d=" M245.3333333333333 426.6666666666667C227.6266666666667 426.6666666666667 213.3333333333333 412.3733333333334 213.3333333333333 394.6666666666667V138.6666666666667C199.8933333333333 128.64 192 112.8533333333334 192 96C192 66.5600000000001 215.8933333333334 42.6666666666667 245.3333333333333 42.6666666666667S298.6666666666667 66.5600000000001 298.6666666666667 96C298.6666666666667 112.8533333333334 290.7733333333333 128 277.3333333333333 138.6666666666667V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V256H362.6666666666667V298.6666666666667H277.3333333333333V341.3333333333334H362.6666666666667V384H277.3333333333333V394.6666666666667C277.3333333333333 412.3733333333334 263.04 426.6666666666667 245.3333333333333 426.6666666666667M0 128V85.3333333333334C14.2933333333333 85.3333333333334 16.8533333333333 80.8533333333334 27.52 70.1866666666667S56.96 42.6666666666667 85.3333333333333 42.6666666666667S132.48 59.52 143.1466666666667 70.1866666666667C145.4933333333334 72.7466666666667 147.4133333333333 74.6666666666667 149.3333333333333 76.5866666666667V124.5866666666667C132.48 119.04 120.5333333333333 108.16 112.8533333333333 100.48C102.1866666666667 89.8133333333334 99.6266666666667 85.3333333333334 85.3333333333333 85.3333333333334S68.48 89.8133333333334 57.8133333333333 100.48S28.3733333333333 128 0 128M341.3333333333333 128V85.3333333333334C355.6266666666667 85.3333333333334 358.1866666666666 80.8533333333334 368.8533333333333 70.1866666666667S398.2933333333334 42.6666666666667 426.6666666666667 42.6666666666667S473.8133333333333 59.52 484.48 70.1866666666667S497.7066666666666 85.3333333333334 512 85.3333333333334V128C483.6266666666667 128 464.8533333333333 111.1466666666667 454.1866666666666 100.48S440.9600000000001 85.3333333333334 426.6666666666667 85.3333333333334S409.8133333333334 89.8133333333334 399.1466666666667 100.48S369.7066666666666 128 341.3333333333333 128M170.6666666666667 21.3333333333334C142.2933333333333 21.3333333333334 123.52 4.48 112.8533333333333 -6.1866666666666S99.6266666666667 -21.3333333333333 85.3333333333333 -21.3333333333333S68.48 -16.8533333333333 57.8133333333333 -6.1866666666666C50.1333333333333 1.4933333333333 38.1866666666667 12.3733333333334 21.3333333333333 17.92V-30.08C23.2533333333333 -32 25.1733333333333 -33.92 27.52 -36.48C38.1866666666667 -47.1466666666666 56.96 -64 85.3333333333333 -64S132.48 -47.1466666666666 143.1466666666667 -36.48S156.3733333333333 -21.3333333333333 170.6666666666667 -21.3333333333333S187.52 -25.8133333333333 198.1866666666667 -36.48C207.5733333333333 -45.6533333333333 222.72 -59.7333333333333 245.3333333333333 -63.1466666666666C248.7466666666667 -64 252.3733333333334 -64 256 -64C284.3733333333334 -64 303.1466666666667 -47.1466666666666 313.8133333333334 -36.48S327.04 -21.3333333333333 341.3333333333333 -21.3333333333333S358.1866666666666 -25.8133333333333 368.8533333333333 -36.48S398.2933333333334 -64 426.6666666666667 -64S473.8133333333333 -47.1466666666666 484.48 -36.48C486.8266666666667 -33.92 488.7466666666667 -32 490.6666666666666 -30.08V17.92C473.8133333333333 12.3733333333333 461.8666666666666 1.4933333333333 454.1866666666666 -6.1866666666666C443.52 -16.8533333333333 440.9599999999999 -21.3333333333333 426.6666666666667 -21.3333333333333S409.8133333333334 -16.8533333333333 399.1466666666667 -6.1866666666666S369.7066666666666 21.3333333333334 341.3333333333333 21.3333333333334S294.1866666666666 4.48 283.52 -6.1866666666666S270.2933333333333 -21.3333333333333 256 -21.3333333333333C251.3066666666667 -21.3333333333333 248.1066666666667 -20.6933333333333 245.3333333333333 -19.6266666666667C239.36 -17.4933333333333 235.7333333333334 -13.4400000000001 228.48 -6.1866666666667C217.8133333333333 4.48 199.04 21.3333333333334 170.6666666666667 21.3333333333334z" /> + <glyph glyph-name="omega" + unicode="&#xF3C9;" + horiz-adv-x="512" d=" M408.5333333333333 42.6666666666667H285.6533333333333V88.1066666666667C330.6666666666667 122.6666666666667 353.92 165.5466666666666 353.92 216.7466666666667C353.92 248.7466666666667 344.7466666666667 273.92 326.8266666666667 292.48C308.6933333333334 311.04 285.2266666666667 320 256.64 320C227.84 320 204.16 311.04 185.8133333333333 292.2666666666667C167.2533333333333 273.7066666666667 158.08 248.1066666666667 158.08 215.8933333333334C158.08 165.1200000000001 181.3333333333333 122.4533333333334 226.3466666666667 88.1066666666667V42.6666666666667H103.4666666666667V88.1066666666667H179.4133333333333C128.8533333333333 121.1733333333334 103.4666666666667 165.76 103.4666666666667 221.8666666666667C103.4666666666667 266.6666666666667 117.3333333333333 301.6533333333333 145.28 327.2533333333334C173.2266666666666 353.0666666666667 209.92 365.8666666666667 255.36 365.8666666666667C301.8666666666666 365.8666666666667 338.9866666666666 353.0666666666667 366.7199999999999 327.68C394.6666666666666 302.2933333333334 408.5333333333333 266.6666666666667 408.5333333333333 222.2933333333333C408.5333333333333 166.1866666666667 382.9333333333333 121.3866666666667 331.7333333333333 88.1066666666667H408.5333333333333V42.6666666666667z" /> + <glyph glyph-name="onedrive" + unicode="&#xF3CA;" + horiz-adv-x="512" d=" M428.3733333333333 157.0133333333333C451.6266666666666 153.3866666666667 469.3333333333333 133.3333333333334 469.3333333333333 109.0133333333333C469.3333333333333 90.0266666666666 458.6666666666666 73.6 442.6666666666667 65.7066666666667L439.04 64H195.4133333333333C164.48 64 139.52 89.3866666666667 139.52 120.3200000000001C139.52 151.4666666666667 164.6933333333333 176.6400000000001 195.84 176.6400000000001L200.5333333333333 176.4266666666667L200.32 180.6933333333334C200.32 219.5200000000001 231.8933333333334 251.0933333333334 270.7200000000001 251.0933333333334C298.0266666666667 251.0933333333334 321.7066666666667 235.52 333.44 213.3333333333334C343.04 219.0933333333333 354.56 222.9333333333333 367.1466666666667 222.9333333333333C401.0666666666667 222.9333333333333 428.5866666666667 195.4133333333334 428.5866666666667 161.4933333333334L428.3733333333333 157.0133333333333M188.16 188.5866666666667C153.8133333333333 184.7466666666667 127.1466666666667 155.7333333333334 127.1466666666667 120.3200000000001C127.1466666666667 105.8133333333334 131.6266666666667 92.5866666666667 138.6666666666667 81.4933333333333H100.9066666666667C68.6933333333333 81.4933333333333 42.6666666666667 107.52 42.6666666666667 139.7333333333334C42.6666666666667 170.6666666666667 66.56 195.6266666666667 96.64 197.7600000000001L95.1466666666667 212.0533333333334C95.1466666666667 248.32 124.5866666666667 277.3333333333334 160.8533333333333 277.3333333333334C174.2933333333333 277.3333333333334 187.0933333333333 273.4933333333334 197.5466666666667 266.6666666666667C212.2666666666667 296.32 243.2 316.8 278.8266666666667 316.8C325.76 316.8 364.3733333333333 280.9600000000001 369.0666666666667 235.3066666666667H367.1466666666667C356.9066666666667 235.3066666666667 347.0933333333333 233.1733333333334 337.92 229.3333333333334C322.56 250.6666666666667 297.8133333333334 263.68 270.72 263.68C227.6266666666667 263.68 192 230.6133333333333 188.16 188.5866666666667z" /> + <glyph glyph-name="opacity" + unicode="&#xF5CC;" + horiz-adv-x="512" d=" M376.7466666666667 277.3333333333334L256 397.8666666666667L135.2533333333333 277.3333333333334C101.9733333333333 244.0533333333334 85.3333333333333 199.68 85.3333333333333 157.0133333333333C85.3333333333333 114.3466666666667 101.9733333333333 69.3333333333334 135.2533333333333 36.0533333333333C168.5333333333333 2.7733333333333 212.2666666666667 -14.08 256 -14.08C299.7333333333334 -14.08 343.4666666666667 2.7733333333333 376.7466666666667 36.0533333333333C410.0266666666667 69.3333333333333 426.6666666666667 114.3466666666666 426.6666666666667 157.0133333333333S410.0266666666667 244.0533333333334 376.7466666666667 277.3333333333334M128 149.3333333333334C128 192 141.2266666666667 219.0933333333333 165.5466666666667 243.2L256 335.5733333333334L346.4533333333334 242.1333333333334C370.7733333333333 218.24 384 192 384 149.3333333333334H128z" /> + <glyph glyph-name="open-in-app" + unicode="&#xF3CB;" + horiz-adv-x="512" d=" M256 234.6666666666667L170.6666666666667 149.3333333333334H234.6666666666667V21.3333333333334H277.3333333333333V149.3333333333334H341.3333333333333M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.4666666666667 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H192V64H106.6666666666667V277.3333333333334H405.3333333333333V64H320V21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.4666666666667 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="open-in-new" + unicode="&#xF3CC;" + horiz-adv-x="512" d=" M298.6666666666667 384V341.3333333333334H375.2533333333334L165.5466666666667 131.6266666666667L195.6266666666667 101.5466666666667L405.3333333333333 311.2533333333334V234.6666666666667H448V384M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V192H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="openid" + unicode="&#xF3CD;" + horiz-adv-x="512" d=" M298.6666666666667 405.3333333333333L234.6666666666667 373.3333333333334V22.6133333333333C149.3333333333333 32 85.3333333333333 75.52 85.3333333333333 128C85.3333333333333 176 138.6666666666667 216.5333333333334 213.3333333333333 229.9733333333334V273.2800000000001C103.68 258.5600000000001 21.3333333333333 199.2533333333333 21.3333333333333 128C21.3333333333333 52.0533333333334 114.3466666666667 -10.6666666666666 234.6666666666667 -20.0533333333333H236.5866666666667L298.6666666666667 10.6666666666667V405.3333333333333M320 273.28V229.9733333333334C344.5333333333333 225.4933333333333 366.5066666666667 218.24 385.28 208.64L352 192L490.6666666666666 160L480 256L437.3333333333333 234.6666666666667C405.3333333333333 253.4400000000001 365.2266666666667 267.3066666666667 320 273.2800000000001z" /> + <glyph glyph-name="opera" + unicode="&#xF3CE;" + horiz-adv-x="512" d=" M369.7066666666666 371.8400000000001C338.3466666666667 393.3866666666667 299.7333333333334 405.3333333333333 256 405.3333333333333C216.1066666666666 405.3333333333333 180.48 395.3066666666667 150.6133333333333 377.1733333333334C93.44 342.4 58.0266666666667 277.3333333333334 58.0266666666667 194.1333333333333C58.0266666666667 81.28 137.1733333333333 -21.3333333333333 256 -21.3333333333333C374.8266666666667 -21.3333333333333 453.9733333333334 81.28 453.9733333333334 194.1333333333333C453.9733333333334 273.28 421.9733333333334 336 369.7066666666667 371.8400000000001M256 367.5733333333333C320 367.5733333333333 332.8 278.8266666666667 332.8 197.9733333333333C332.8 123.3066666666667 325.5466666666667 23.2533333333333 256.8533333333334 23.2533333333333S179.2 124.3733333333333 179.2 199.04C179.2 279.68 192 367.5733333333334 256 367.5733333333334z" /> + <glyph glyph-name="ornament" + unicode="&#xF3CF;" + horiz-adv-x="512" d=" M256 426.6666666666667C291.4133333333333 426.6666666666667 320 398.08 320 362.6666666666667V341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V297.1733333333334C392.32 267.7333333333334 426.6666666666667 212.48 426.6666666666667 149.3333333333334C426.6666666666667 55.04 350.2933333333334 -21.3333333333333 256 -21.3333333333333S85.3333333333333 55.04 85.3333333333333 149.3333333333334C85.3333333333333 212.48 119.68 267.7333333333334 170.6666666666667 297.1733333333334V320C170.6666666666667 331.7333333333334 180.2666666666667 341.3333333333334 192 341.3333333333334V362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667V341.3333333333334H277.3333333333333V362.6666666666667C277.3333333333333 374.4 267.7333333333334 384 256 384M256 277.3333333333334C218.0266666666667 277.3333333333334 184.1066666666666 260.9066666666667 160.64 234.6666666666667H351.36C327.8933333333333 260.9066666666667 293.9733333333333 277.3333333333334 256 277.3333333333334M135.2533333333333 106.6666666666667H161.92L128 140.16C129.0666666666667 128 131.6266666666667 117.3333333333334 135.2533333333333 106.6666666666667M268.5866666666667 106.6666666666667L183.2533333333333 192H136.7466666666667L222.08 106.6666666666667H268.5866666666667M376.7466666666667 192H350.08L384 158.5066666666667C382.9333333333333 170.6666666666667 380.3733333333333 181.3333333333334 376.7466666666667 192M243.4133333333334 192L328.7466666666667 106.6666666666667H375.2533333333334L289.92 192H243.4133333333334M256 21.3333333333334C293.9733333333333 21.3333333333334 327.8933333333333 37.76 351.36 64H160.64C184.1066666666667 37.76 218.0266666666667 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="ornament-variant" + unicode="&#xF3D0;" + horiz-adv-x="512" d=" M256 426.6666666666667C291.4133333333333 426.6666666666667 320 398.08 320 362.6666666666667V341.3333333333334C331.7333333333334 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V297.1733333333334C392.32 267.7333333333334 426.6666666666667 212.48 426.6666666666667 149.3333333333334C426.6666666666667 55.04 350.2933333333334 -21.3333333333333 256 -21.3333333333333S85.3333333333333 55.04 85.3333333333333 149.3333333333334C85.3333333333333 212.48 119.68 267.7333333333334 170.6666666666667 297.1733333333334V320C170.6666666666667 331.7333333333334 180.2666666666667 341.3333333333334 192 341.3333333333334V362.6666666666667C192 398.08 220.5866666666667 426.6666666666667 256 426.6666666666667M256 384C244.2666666666667 384 234.6666666666667 374.4 234.6666666666667 362.6666666666667V341.3333333333334H277.3333333333333V362.6666666666667C277.3333333333333 374.4 267.7333333333334 384 256 384M256 277.3333333333334C218.0266666666667 277.3333333333334 184.1066666666666 260.9066666666667 160.64 234.6666666666667H351.36C327.8933333333333 260.9066666666667 293.9733333333333 277.3333333333334 256 277.3333333333334M256 21.3333333333334C293.9733333333333 21.3333333333334 327.8933333333333 37.76 351.36 64H160.64C184.1066666666667 37.76 218.0266666666667 21.3333333333334 256 21.3333333333334M256 192C232.5333333333334 192 213.3333333333333 172.8 213.3333333333333 149.3333333333334S232.5333333333334 106.6666666666667 256 106.6666666666667S298.6666666666667 125.8666666666667 298.6666666666667 149.3333333333334S279.4666666666667 192 256 192M384 149.3333333333334C384 164.0533333333334 381.44 178.1333333333333 376.9600000000001 192C356.6933333333334 187.9466666666667 341.3333333333333 170.6666666666667 341.3333333333333 149.3333333333334S356.6933333333333 110.72 376.9600000000001 107.3066666666667C381.4400000000001 120.5333333333333 384 134.6133333333334 384 149.3333333333334M128 149.3333333333334C128 134.6133333333334 130.56 120.5333333333334 135.04 107.3066666666667C155.3066666666667 110.72 170.6666666666667 128 170.6666666666667 149.3333333333334S155.3066666666667 187.9466666666667 135.04 192C130.56 178.1333333333333 128 164.0533333333334 128 149.3333333333334z" /> + <glyph glyph-name="outbox" + unicode="&#xF3D1;" + horiz-adv-x="512" d=" M298.6666666666667 149.3333333333334H213.3333333333333V213.3333333333334H170.6666666666667L256 298.6666666666667L341.3333333333333 213.3333333333334H298.6666666666667V149.3333333333334M106.6666666666667 128V341.3333333333334H405.3333333333333V128H320C320 92.5866666666667 291.4133333333333 64 256 64S192 92.5866666666667 192 128H106.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384" /> + <glyph glyph-name="owl" + unicode="&#xF3D2;" + horiz-adv-x="512" d=" M256 106.6666666666667C267.9466666666667 88.7466666666667 283.9466666666667 74.0266666666666 302.9333333333333 64L256 17.0666666666667L209.0666666666667 64C228.0533333333334 74.0266666666666 244.2666666666667 88.7466666666667 256 106.6666666666667M362.6666666666667 209.0666666666667C339.2 209.0666666666667 320 189.8666666666667 320 166.4S339.2 123.7333333333334 362.6666666666667 123.7333333333334S405.3333333333333 142.9333333333334 405.3333333333333 166.4C405.3333333333333 190.0800000000001 386.1333333333334 209.0666666666667 362.6666666666667 209.0666666666667M149.3333333333333 209.0666666666667C125.8666666666667 209.0666666666667 106.6666666666667 189.8666666666667 106.6666666666667 166.4S125.8666666666667 123.7333333333334 149.3333333333333 123.7333333333334S192 142.9333333333334 192 166.4C192 190.0800000000001 172.8 209.0666666666667 149.3333333333333 209.0666666666667M362.6666666666667 262.4000000000001C409.8133333333334 262.4000000000001 448 224.2133333333334 448 177.0666666666667S409.8133333333334 91.7333333333334 362.6666666666667 91.7333333333334S277.3333333333333 129.92 277.3333333333333 177.0666666666667S315.52 262.4000000000001 362.6666666666667 262.4000000000001M149.3333333333333 262.4000000000001C196.48 262.4000000000001 234.6666666666667 224.2133333333334 234.6666666666667 177.0666666666667S196.48 91.7333333333334 149.3333333333333 91.7333333333334S64 129.92 64 177.0666666666667S102.1866666666667 262.4000000000001 149.3333333333333 262.4000000000001M47.7866666666667 426.6666666666667C85.3333333333333 347.7333333333334 58.24 288.8533333333334 33.0666666666667 230.4000000000001C25.3866666666667 213.3333333333334 21.3333333333333 195.6266666666667 21.3333333333333 177.0666666666667C21.3333333333333 106.4533333333334 78.72 49.0666666666667 149.3333333333333 49.0666666666667C153.8133333333333 49.2800000000001 158.2933333333333 49.4933333333333 162.7733333333333 50.1333333333334L225.92 -13.0133333333333L256 -42.6666666666666L286.08 -13.0133333333333L349.2266666666667 50.1333333333334C353.7066666666667 49.4933333333333 358.1866666666667 49.2800000000001 362.6666666666667 49.0666666666667C433.28 49.0666666666667 490.6666666666666 106.4533333333334 490.6666666666666 177.0666666666667C490.6666666666666 195.6266666666667 486.6133333333333 213.3333333333334 478.9333333333333 230.4000000000001C453.76 288.8533333333334 426.6666666666667 347.7333333333334 464.2133333333334 426.6666666666667C407.8933333333333 382.7200000000001 327.68 347.9466666666667 256 347.7333333333334C184.32 347.9466666666667 104.1066666666667 382.7200000000001 47.7866666666667 426.6666666666667z" /> + <glyph glyph-name="package" + unicode="&#xF3D3;" + horiz-adv-x="512" d=" M109.2266666666667 341.3333333333334H402.56L382.5066666666667 362.6666666666667H126.5066666666667L109.2266666666667 341.3333333333334M438.1866666666666 336.4266666666667C444.3733333333333 329.1733333333334 448 320 448 309.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V309.3333333333334C64 320 67.6266666666667 329.1733333333334 73.8133333333333 336.4266666666667L103.2533333333333 372.2666666666667C109.2266666666667 379.52 117.9733333333333 384 128 384H384C394.0266666666667 384 402.7733333333333 379.52 408.5333333333333 372.2666666666667L438.1866666666666 336.4266666666667M128 64H256V128H128V64z" /> + <glyph glyph-name="package-down" + unicode="&#xF3D4;" + horiz-adv-x="512" d=" M109.2266666666667 341.3333333333334L126.5066666666667 362.6666666666667H382.5066666666667L402.56 341.3333333333334M256 74.6666666666667L138.6666666666667 192H213.3333333333333V234.6666666666667H298.6666666666667V192H373.3333333333333L256 74.6666666666667M438.1866666666666 336.4266666666667L408.5333333333333 372.2666666666667C402.7733333333333 379.52 394.0266666666667 384 384 384H128C117.9733333333333 384 109.2266666666667 379.52 103.2533333333333 372.2666666666667L73.8133333333333 336.4266666666667C67.6266666666667 329.1733333333334 64 320 64 309.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V309.3333333333334C448 320 444.3733333333333 329.1733333333334 438.1866666666666 336.4266666666667z" /> + <glyph glyph-name="package-up" + unicode="&#xF3D5;" + horiz-adv-x="512" d=" M438.1866666666666 336.4266666666667C444.3733333333333 329.1733333333334 448 320 448 309.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V309.3333333333334C64 320 67.6266666666667 329.1733333333334 73.8133333333333 336.4266666666667L103.2533333333333 372.2666666666667C109.2266666666667 379.52 117.9733333333333 384 128 384H384C394.0266666666667 384 402.7733333333333 379.52 408.5333333333333 372.2666666666667L438.1866666666666 336.4266666666667M109.2266666666667 341.3333333333334H402.56L382.5066666666667 362.6666666666667H126.5066666666667L109.2266666666667 341.3333333333334M256 245.3333333333334L138.6666666666667 128H213.3333333333333V85.3333333333334H298.6666666666667V128H373.3333333333333L256 245.3333333333334z" /> + <glyph glyph-name="package-variant" + unicode="&#xF3D6;" + horiz-adv-x="512" d=" M42.6666666666667 214.1866666666667C32 220.16 28.8 233.1733333333334 34.7733333333333 243.4133333333334L66.7733333333333 298.6666666666667C69.12 302.9333333333334 72.7466666666667 305.92 76.8 307.6266666666667L243.84 401.4933333333334C247.2533333333334 404.0533333333334 251.52 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666667 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C440.7466666666667 304.64 444.16 301.2266666666667 446.08 296.9600000000001L477.0133333333333 243.2C482.9866666666667 232.96 479.36 219.9466666666667 469.3333333333333 214.1866666666667L448 201.8133333333334V96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V214.1866666666667C57.6 210.56 49.4933333333333 210.3466666666667 42.6666666666666 214.1866666666667M255.9999999999999 359.4666666666667V216.5333333333333L383.1466666666666 288L256 359.4666666666667M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V177.28L298.6666666666667 115.4133333333334C291.6266666666667 111.5733333333334 283.7333333333334 111.7866666666667 277.3333333333333 115.2000000000001V36.48L405.3333333333333 108.5866666666667M295.4666666666667 162.9866666666667L429.44 240.4266666666667L417.0666666666667 261.9733333333334L283.0933333333333 184.5333333333333L295.4666666666667 162.9866666666667z" /> + <glyph glyph-name="package-variant-closed" + unicode="&#xF3D7;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M256 359.4666666666667L215.68 336.64L341.3333333333333 264.3200000000001L383.1466666666667 288L256 359.4666666666667M128.8533333333333 288L256 216.5333333333334L297.8133333333334 240L172.3733333333334 312.5333333333334L128.8533333333333 288M106.6666666666667 108.5866666666667L234.6666666666667 36.48V179.6266666666667L106.6666666666667 251.52V108.5866666666667M405.3333333333333 108.5866666666667V251.52L277.3333333333333 179.6266666666667V36.48L405.3333333333333 108.5866666666666z" /> + <glyph glyph-name="page-first" + unicode="&#xF600;" + horiz-adv-x="512" d=" M392.7466666666667 94.08L294.8266666666667 192L392.7466666666667 289.92L362.6666666666667 320L234.6666666666667 192L362.6666666666667 64L392.7466666666667 94.08M128 320H170.6666666666667V64H128V320z" /> + <glyph glyph-name="page-last" + unicode="&#xF601;" + horiz-adv-x="512" d=" M119.2533333333333 289.92L217.1733333333333 192L119.2533333333333 94.08L149.3333333333333 64L277.3333333333333 192L149.3333333333333 320L119.2533333333333 289.92M341.3333333333333 320H384V64H341.3333333333333V320z" /> + <glyph glyph-name="palette" + unicode="&#xF3D8;" + horiz-adv-x="512" d=" M373.3333333333333 192C355.6266666666667 192 341.3333333333333 206.2933333333334 341.3333333333333 224S355.6266666666667 256 373.3333333333333 256S405.3333333333333 241.7066666666667 405.3333333333333 224S391.04 192 373.3333333333333 192M309.3333333333333 277.3333333333334C291.6266666666667 277.3333333333334 277.3333333333333 291.6266666666667 277.3333333333333 309.3333333333334S291.6266666666667 341.3333333333334 309.3333333333333 341.3333333333334S341.3333333333333 327.04 341.3333333333333 309.3333333333334S327.04 277.3333333333334 309.3333333333333 277.3333333333334M202.6666666666667 277.3333333333334C184.96 277.3333333333334 170.6666666666667 291.6266666666667 170.6666666666667 309.3333333333334S184.96 341.3333333333334 202.6666666666667 341.3333333333334S234.6666666666667 327.04 234.6666666666667 309.3333333333334S220.3733333333333 277.3333333333334 202.6666666666667 277.3333333333334M138.6666666666667 192C120.96 192 106.6666666666667 206.2933333333334 106.6666666666667 224S120.96 256 138.6666666666667 256S170.6666666666667 241.7066666666667 170.6666666666667 224S156.3733333333333 192 138.6666666666667 192M256 384C149.9733333333333 384 64 298.0266666666667 64 192S149.9733333333333 0 256 0C273.7066666666667 0 288 14.2933333333334 288 32C288 40.3200000000001 284.8 47.7866666666666 279.68 53.3333333333334C274.7733333333333 59.0933333333334 271.5733333333333 66.5600000000001 271.5733333333333 74.6666666666667C271.5733333333333 92.3733333333333 285.8666666666666 106.6666666666667 303.5733333333333 106.6666666666667H341.3333333333333C400.2133333333333 106.6666666666667 448 154.4533333333334 448 213.3333333333334C448 307.6266666666667 362.0266666666667 384 256 384z" /> + <glyph glyph-name="palette-advanced" + unicode="&#xF3D9;" + horiz-adv-x="512" d=" M469.3333333333333 -21.3333333333333H213.3333333333333V21.3333333333334H469.3333333333333V-21.3333333333333M42.6666666666667 -21.3333333333333V21.3333333333334H192V-21.3333333333333H42.6666666666667M384 64V234.6666666666667H469.3333333333333V64H384M384 384H469.3333333333333V256H384V384M42.6666666666667 64V384H341.3333333333333V64H42.6666666666667M192 137.3866666666667C227.4133333333334 137.3866666666667 256 165.9733333333334 256 201.3866666666667C256 244.0533333333334 192 315.9466666666667 192 315.9466666666667S128 244.0533333333334 128 201.3866666666667C128 165.9733333333334 156.5866666666667 137.3866666666667 192 137.3866666666667z" /> + <glyph glyph-name="panda" + unicode="&#xF3DA;" + horiz-adv-x="512" d=" M256 384C293.12 384 327.68 373.3333333333334 357.12 355.2000000000001C370.7733333333333 372.6933333333334 392.1066666666667 384 416 384C457.1733333333333 384 490.6666666666666 350.5066666666667 490.6666666666666 309.3333333333334C490.6666666666666 277.3333333333334 470.4 250.0266666666667 442.0266666666667 239.36C445.8666666666666 224 448 208.4266666666667 448 192C448 85.9733333333334 362.0266666666667 0 256 0S64 85.9733333333334 64 192C64 208.4266666666667 66.1333333333333 224 69.9733333333333 239.36C41.6 250.0266666666667 21.3333333333333 277.3333333333334 21.3333333333333 309.3333333333334C21.3333333333333 350.5066666666667 54.8266666666667 384 96 384C119.8933333333333 384 141.2266666666667 372.6933333333334 154.88 355.2000000000001C184.32 373.3333333333334 218.88 384 256 384M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334M345.3866666666667 228.2666666666667C353.0666666666667 199.8933333333333 343.04 172.5866666666667 323.2000000000001 167.2533333333333C303.1466666666667 161.7066666666667 280.9600000000001 180.48 273.2800000000001 209.0666666666667C265.6 237.4400000000001 275.6266666666667 264.7466666666667 295.4666666666667 270.0800000000001C315.52 275.4133333333334 337.7066666666667 256.8533333333334 345.3866666666667 228.2666666666667M166.6133333333334 228.2666666666667C174.2933333333333 256.8533333333334 196.48 275.4133333333334 216.5333333333333 270.0800000000001C236.3733333333334 264.7466666666667 246.4 237.4400000000001 238.7200000000001 209.0666666666667C231.04 180.48 208.8533333333334 161.7066666666667 188.8 167.2533333333333C168.96 172.5866666666667 158.9333333333333 199.8933333333333 166.6133333333334 228.2666666666667M256 149.3333333333334C268.8 149.3333333333334 280.1066666666667 145.28 288 138.6666666666667L266.6666666666667 117.3333333333334C266.6666666666667 108.3733333333333 273.92 101.3333333333334 282.6666666666667 101.3333333333334S298.6666666666667 108.5866666666667 298.6666666666667 117.3333333333334C298.6666666666667 123.3066666666667 303.36 128 309.3333333333333 128S320 123.3066666666667 320 117.3333333333334C320 96.64 303.36 80 282.6666666666667 80C272.2133333333333 80 262.8266666666667 84.2666666666667 256 91.3066666666667C249.1733333333333 84.2666666666668 239.7866666666667 80 229.3333333333333 80C208.64 80 192 96.64 192 117.3333333333334C192 123.3066666666667 196.6933333333333 128 202.6666666666667 128S213.3333333333333 123.3066666666667 213.3333333333333 117.3333333333334C213.3333333333333 108.5866666666667 220.5866666666667 101.3333333333334 229.3333333333333 101.3333333333334S245.3333333333333 108.5866666666667 245.3333333333333 117.3333333333334L224 138.6666666666667C231.8933333333333 145.28 243.2 149.3333333333334 256 149.3333333333334z" /> + <glyph glyph-name="pandora" + unicode="&#xF3DB;" + horiz-adv-x="512" d=" M359.8933333333333 283.0933333333334C359.8933333333333 236.8 334.2933333333334 198.4 279.2533333333334 198.4H222.9333333333333V369.92H279.2533333333334C334.2933333333334 369.92 359.8933333333333 330.6666666666667 359.8933333333333 283.0933333333334M222.9333333333333 113.7066666666667V161.92H279.2533333333334C380.5866666666667 161.92 437.3333333333333 215.2533333333333 437.3333333333333 283.0933333333333C437.3333333333333 353.0666666666667 380.5866666666667 405.3333333333333 279.2533333333334 405.3333333333333H74.6666666666667V385.7066666666667C141.2266666666667 385.7066666666667 152.96 369.92 152.96 271.36V113.7066666666667C152.96 15.1466666666666 141.2266666666667 -1.7066666666667 74.6666666666667 -1.7066666666667V-21.3333333333333H300.8V-1.7066666666666C234.6666666666667 -1.7066666666666 222.9333333333333 15.1466666666667 222.9333333333333 113.7066666666667z" /> + <glyph glyph-name="panorama" + unicode="&#xF3DC;" + horiz-adv-x="512" d=" M181.3333333333333 181.3333333333334L234.6666666666667 117.3333333333334L309.3333333333333 213.3333333333334L405.3333333333333 85.3333333333334H106.6666666666667M490.6666666666666 64V320C490.6666666666666 343.4666666666667 471.4666666666667 362.6666666666667 448 362.6666666666667H64C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V64C21.3333333333333 40.5333333333333 40.5333333333333 21.3333333333334 64 21.3333333333334H448C471.4666666666667 21.3333333333334 490.6666666666666 40.5333333333333 490.6666666666666 64z" /> + <glyph glyph-name="panorama-fisheye" + unicode="&#xF3DD;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.9733333333334 42.6666666666667 192S138.0266666666667 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.0266666666666 469.3333333333333 192S373.9733333333334 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="panorama-horizontal" + unicode="&#xF3DE;" + horiz-adv-x="512" d=" M457.1733333333333 362.6666666666667C455.04 362.6666666666667 452.9066666666666 362.6666666666667 450.56 361.3866666666667C387.84 337.92 321.92 326.4 256 326.4C190.08 326.4 124.16 338.1333333333334 61.44 361.3866666666667C59.0933333333333 362.6666666666667 56.7466666666667 362.6666666666667 54.8266666666667 362.6666666666667C47.5733333333333 362.6666666666667 42.6666666666667 357.76 42.6666666666667 349.2266666666667V34.5600000000001C42.6666666666667 26.24 47.5733333333333 21.3333333333334 54.8266666666667 21.3333333333334C56.96 21.3333333333334 59.0933333333333 21.3333333333334 61.44 22.6133333333333C124.16 46.08 190.08 57.6 256 57.6C321.92 57.6 387.84 45.8666666666667 450.5599999999999 22.6133333333333C452.9066666666666 21.3333333333334 455.04 21.3333333333334 457.1733333333332 21.3333333333334C464.2133333333332 21.3333333333334 469.3333333333333 26.24 469.3333333333333 34.7733333333333V349.2266666666667C469.3333333333333 357.76 464.2133333333333 362.6666666666667 457.1733333333332 362.6666666666667M426.6666666666667 308.48V75.7333333333334C371.2 92.16 314.0266666666667 100.48 256 100.48C197.9733333333333 100.48 140.8 92.16 85.3333333333333 75.7333333333334V308.48C140.8 292.0533333333334 197.9733333333334 283.7333333333334 256 283.7333333333334C314.0266666666667 283.52 371.2 291.8400000000001 426.6666666666667 308.48z" /> + <glyph glyph-name="panorama-vertical" + unicode="&#xF3DF;" + horiz-adv-x="512" d=" M139.52 21.3333333333334C155.9466666666667 76.8000000000001 164.2666666666667 133.9733333333334 164.2666666666667 192C164.2666666666667 250.0266666666667 155.9466666666667 307.2000000000001 139.52 362.6666666666667H372.2666666666667C355.84 307.2000000000001 347.52 250.0266666666667 347.52 192C347.52 133.9733333333334 355.84 76.8000000000001 372.2666666666667 21.3333333333334M425.3866666666666 -2.56C401.9199999999999 60.16 390.3999999999999 126.0800000000001 390.3999999999999 192C390.3999999999999 257.92 402.1333333333333 323.84 425.3866666666666 386.56C426.6666666666666 388.9066666666667 426.6666666666666 391.2533333333333 426.6666666666666 393.1733333333333C426.6666666666666 400.4266666666666 421.7599999999999 405.3333333333333 413.2266666666666 405.3333333333333H98.7733333333333C90.24 405.3333333333333 85.3333333333333 400.4266666666666 85.3333333333333 393.1733333333333C85.3333333333333 391.04 85.3333333333333 388.9066666666667 86.6133333333333 386.56C110.08 323.8400000000001 121.8133333333333 257.92 121.8133333333333 192C121.8133333333333 126.0800000000001 110.08 60.16 86.8266666666667 -2.5599999999999C85.3333333333333 -4.9066666666666 85.3333333333333 -7.2533333333332 85.3333333333333 -9.1733333333332C85.3333333333333 -16.2133333333332 90.24 -21.3333333333333 98.7733333333333 -21.3333333333333H413.44C421.76 -21.3333333333333 426.6666666666667 -16.2133333333333 426.6666666666667 -9.1733333333332C426.6666666666667 -7.0399999999998 426.6666666666667 -4.9066666666666 425.3866666666667 -2.5599999999999z" /> + <glyph glyph-name="panorama-wide-angle" + unicode="&#xF3E0;" + horiz-adv-x="512" d=" M256 362.6666666666667C197.76 362.6666666666667 144.64 357.5466666666667 86.4 347.3066666666667L66.56 343.8933333333333L61.2266666666667 324.6933333333334C48.8533333333333 280.5333333333334 42.6666666666667 236.1600000000001 42.6666666666667 192C42.6666666666667 147.84 48.8533333333333 103.4666666666667 61.2266666666667 59.3066666666667L66.56 40.3200000000001L86.4 36.9066666666667C144.64 26.4533333333334 197.76 21.3333333333334 256 21.3333333333334C314.24 21.3333333333334 367.36 26.4533333333333 425.6 36.6933333333333L445.44 40.1066666666667L450.7733333333333 59.0933333333334C463.1466666666666 103.4666666666667 469.3333333333333 147.84 469.3333333333333 192C469.3333333333333 236.1600000000001 463.1466666666666 280.5333333333334 450.7733333333333 324.6933333333334L445.44 343.68L425.6 347.0933333333334C367.36 357.5466666666667 314.24 362.6666666666667 256 362.6666666666667M256 320C308.2666666666667 320 356.48 315.7333333333334 411.52 306.3466666666667C421.5466666666666 268.3733333333334 426.6666666666667 229.9733333333334 426.6666666666667 192C426.6666666666667 154.0266666666667 421.5466666666667 115.6266666666667 411.52 77.6533333333334C356.48 68.2666666666667 308.2666666666667 64 256 64S155.52 68.2666666666667 100.48 77.6533333333334C90.4533333333333 115.6266666666667 85.3333333333333 154.0266666666667 85.3333333333333 192C85.3333333333333 229.9733333333334 90.4533333333333 268.3733333333334 100.48 306.3466666666667C155.52 315.7333333333334 203.7333333333334 320 256 320z" /> + <glyph glyph-name="paper-cut-vertical" + unicode="&#xF3E1;" + horiz-adv-x="512" d=" M243.84 379.0933333333334L256 362.6666666666667L268.16 379.0933333333334V378.88C279.8933333333333 394.6666666666667 298.6666666666667 405.3333333333333 320 405.3333333333333C355.4133333333333 405.3333333333333 384 376.7466666666667 384 341.3333333333334C384 333.8666666666667 382.7200000000001 326.6133333333334 380.3733333333333 320H426.6666666666667C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V277.3333333333334C42.6666666666667 300.8 61.8666666666667 320 85.3333333333333 320H131.6266666666667C129.28 326.6133333333334 128 333.8666666666667 128 341.3333333333334C128 376.7466666666667 156.5866666666667 405.3333333333333 192 405.3333333333333C213.3333333333333 405.3333333333333 232.1066666666667 394.6666666666667 243.84 378.88V379.0933333333334M85.3333333333333 277.3333333333334V21.3333333333334H234.6666666666667C234.6666666666667 33.0666666666667 244.2666666666667 42.6666666666667 256 42.6666666666667S277.3333333333333 33.0666666666667 277.3333333333333 21.3333333333334H426.6666666666667V277.3333333333334H317.8666666666667L362.6666666666667 215.04L328.5333333333333 189.8666666666667L264.96 277.3333333333334H247.04L183.4666666666667 189.8666666666667L149.3333333333333 215.04L194.1333333333333 277.3333333333334H85.3333333333333M192 362.6666666666667C180.2666666666667 362.6666666666667 170.6666666666667 353.0666666666667 170.6666666666667 341.3333333333334S180.2666666666667 320 192 320S213.3333333333333 329.6 213.3333333333333 341.3333333333334S203.7333333333334 362.6666666666667 192 362.6666666666667M320 362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334S308.2666666666667 320 320 320S341.3333333333333 329.6 341.3333333333333 341.3333333333334S331.7333333333334 362.6666666666667 320 362.6666666666667M256 106.6666666666667C267.7333333333334 106.6666666666667 277.3333333333333 97.0666666666667 277.3333333333333 85.3333333333334S267.7333333333334 64 256 64S234.6666666666667 73.6 234.6666666666667 85.3333333333334S244.2666666666667 106.6666666666667 256 106.6666666666667M256 170.6666666666667C267.7333333333334 170.6666666666667 277.3333333333333 161.0666666666667 277.3333333333333 149.3333333333334S267.7333333333334 128 256 128S234.6666666666667 137.6 234.6666666666667 149.3333333333334S244.2666666666667 170.6666666666667 256 170.6666666666667M256 234.6666666666667C267.7333333333334 234.6666666666667 277.3333333333333 225.0666666666667 277.3333333333333 213.3333333333334S267.7333333333334 192 256 192S234.6666666666667 201.6 234.6666666666667 213.3333333333334S244.2666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="paperclip" + unicode="&#xF3E2;" + horiz-adv-x="512" d=" M352 320V74.6666666666667C352 27.52 313.8133333333334 -10.6666666666666 266.6666666666667 -10.6666666666666S181.3333333333333 27.52 181.3333333333333 74.6666666666667V341.3333333333334C181.3333333333333 370.7733333333333 205.2266666666667 394.6666666666667 234.6666666666667 394.6666666666667S288 370.7733333333333 288 341.3333333333334V117.3333333333334C288 105.6 278.4 96 266.6666666666667 96S245.3333333333333 105.6 245.3333333333333 117.3333333333334V320H213.3333333333333V117.3333333333334C213.3333333333333 87.8933333333334 237.2266666666667 64 266.6666666666667 64S320 87.8933333333334 320 117.3333333333334V341.3333333333334C320 388.48 281.8133333333334 426.6666666666667 234.6666666666667 426.6666666666667S149.3333333333333 388.48 149.3333333333333 341.3333333333334V74.6666666666667C149.3333333333333 9.8133333333334 201.8133333333333 -42.6666666666666 266.6666666666667 -42.6666666666666S384 9.8133333333334 384 74.6666666666667V320H352z" /> + <glyph glyph-name="parking" + unicode="&#xF3E3;" + horiz-adv-x="512" d=" M281.6 213.3333333333334H213.3333333333333V298.6666666666667H281.6C305.0666666666666 298.6666666666667 324.2666666666667 279.4666666666667 324.2666666666667 256S305.0666666666666 213.3333333333334 281.6 213.3333333333334M277.3333333333333 384H128V0H213.3333333333333V128H277.3333333333333C347.9466666666666 128 405.3333333333333 185.3866666666667 405.3333333333333 256C405.3333333333333 326.8266666666667 347.9466666666666 384 277.3333333333333 384z" /> + <glyph glyph-name="pause" + unicode="&#xF3E4;" + horiz-adv-x="512" d=" M298.6666666666667 42.6666666666667H384V341.3333333333334H298.6666666666667M128 42.6666666666667H213.3333333333333V341.3333333333334H128V42.6666666666667z" /> + <glyph glyph-name="pause-circle" + unicode="&#xF3E5;" + horiz-adv-x="512" d=" M320 106.6666666666667H277.3333333333333V277.3333333333334H320M234.6666666666667 106.6666666666667H192V277.3333333333334H234.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="pause-circle-outline" + unicode="&#xF3E6;" + horiz-adv-x="512" d=" M277.3333333333333 106.6666666666667V277.3333333333334H320V106.6666666666667H277.3333333333333M192 106.6666666666667V277.3333333333334H234.6666666666667V106.6666666666667H192M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="pause-octagon" + unicode="&#xF3E7;" + horiz-adv-x="512" d=" M335.5733333333333 384L448 271.5733333333334V112.4266666666667L335.5733333333333 0H176.4266666666667L64 112.4266666666667V271.5733333333334L176.4266666666667 384H335.5733333333333M320 106.6666666666667V277.3333333333334H277.3333333333333V106.6666666666667H320M234.6666666666667 106.6666666666667V277.3333333333334H192V106.6666666666667H234.6666666666667z" /> + <glyph glyph-name="pause-octagon-outline" + unicode="&#xF3E8;" + horiz-adv-x="512" d=" M320 106.6666666666667H277.3333333333333V277.3333333333334H320V106.6666666666667M234.6666666666667 106.6666666666667H192V277.3333333333334H234.6666666666667V106.6666666666667M335.5733333333333 384L448 271.5733333333334V112.4266666666667L335.5733333333333 0H176.4266666666667L64 112.4266666666667V271.5733333333334L176.4266666666667 384H335.5733333333333M317.8666666666667 341.3333333333334H194.1333333333333L106.6666666666667 253.8666666666667V130.1333333333334L194.1333333333333 42.6666666666667H317.8666666666666L405.3333333333333 130.1333333333333V253.8666666666667L317.8666666666667 341.3333333333334z" /> + <glyph glyph-name="paw" + unicode="&#xF3E9;" + horiz-adv-x="512" d=" M178.1333333333333 384C203.3066666666667 387.6266666666667 229.9733333333333 360.1066666666667 237.6533333333334 322.1333333333334C245.3333333333333 284.3733333333334 231.4666666666667 250.6666666666667 206.2933333333333 246.8266666666667C181.3333333333333 242.9866666666667 154.4533333333333 270.5066666666667 146.56 308.48C138.6666666666667 346.24 152.96 379.9466666666667 178.1333333333333 384M330.6666666666667 384C356.0533333333334 379.9466666666667 370.1333333333334 346.24 362.6666666666667 308.48C354.56 270.5066666666667 327.8933333333333 242.9866666666667 302.72 246.8266666666667C277.3333333333333 250.6666666666667 263.4666666666667 284.3733333333334 271.36 322.1333333333334C279.04 360.1066666666667 305.7066666666666 387.6266666666667 330.6666666666667 384M64 285.8666666666667C88.32 296.3200000000001 121.3866666666667 277.3333333333334 138.6666666666667 244.2666666666667C154.88 210.56 149.3333333333333 175.1466666666667 125.2266666666667 164.6933333333334C101.12 154.24 68.2666666666667 173.0133333333334 51.4133333333333 206.5066666666667C34.56 240 40.5333333333333 275.6266666666667 64 285.8666666666667M448 285.8666666666667C471.4666666666667 275.6266666666667 477.4399999999999 240 460.5866666666666 206.5066666666667C443.7333333333334 173.0133333333333 410.88 154.24 386.7733333333333 164.6933333333333C362.6666666666667 175.1466666666667 357.12 210.56 373.3333333333333 244.2666666666667C390.6133333333333 277.3333333333334 423.68 296.32 448 285.8666666666667M412.3733333333333 55.8933333333334C413.2266666666666 35.84 397.8666666666666 13.6533333333334 379.52 5.3333333333334C341.3333333333333 -12.16 296.1066666666667 24.1066666666667 253.6533333333333 24.1066666666667C211.2 24.1066666666667 165.5466666666666 -13.6533333333333 128 5.3333333333334C106.6666666666666 15.7866666666666 91.9466666666666 43.52 94.72 66.5600000000001C98.56 98.3466666666667 136.7466666666667 115.4133333333334 159.36 138.6666666666667C189.44 168.7466666666667 210.7733333333333 225.28 253.6533333333333 225.28C296.32 225.28 318.9333333333333 169.6 347.7333333333333 138.6666666666667C371.4133333333333 112.64 410.88 90.6666666666667 412.3733333333333 55.8933333333334z" /> + <glyph glyph-name="paw-off" + unicode="&#xF657;" + horiz-adv-x="512" d=" M42.6666666666667 356.9066666666667L69.9733333333333 384L458.6666666666666 -4.6933333333333L431.5733333333333 -32L388.9066666666667 10.6666666666667C385.92 8.5333333333333 382.7200000000001 6.8266666666667 379.52 5.3333333333334C341.3333333333333 -12.16 296.1066666666667 24.1066666666667 253.6533333333333 24.1066666666667C211.2 24.1066666666667 165.5466666666666 -13.6533333333333 128 5.3333333333334C106.6666666666666 15.7866666666666 91.9466666666666 43.52 94.72 66.5600000000001C98.56 98.3466666666667 136.7466666666667 115.4133333333334 159.36 138.6666666666667C175.1466666666667 154.24 188.5866666666667 177.28 203.7333333333333 195.84L42.6666666666667 356.9066666666667M178.1333333333333 384C203.3066666666667 387.6266666666667 229.9733333333333 360.1066666666667 237.6533333333334 322.1333333333334C241.4933333333334 304 240.2133333333333 286.7200000000001 234.6666666666667 273.28L149.9733333333333 358.4C155.52 372.2666666666667 165.3333333333333 381.8666666666667 178.1333333333333 384M330.6666666666667 384C356.0533333333334 379.9466666666667 370.1333333333334 346.24 362.6666666666667 308.48C354.56 270.5066666666667 327.8933333333333 242.9866666666667 302.72 246.8266666666667C277.3333333333333 250.6666666666667 263.4666666666667 284.3733333333334 271.36 322.1333333333334C279.04 360.1066666666667 305.7066666666666 387.6266666666667 330.6666666666667 384M64 285.8666666666667C88.32 296.3200000000001 121.3866666666667 277.3333333333334 138.6666666666667 244.2666666666667C154.88 210.56 149.3333333333333 175.1466666666667 125.2266666666667 164.6933333333334C101.12 154.24 68.2666666666667 173.0133333333334 51.4133333333333 206.5066666666667C34.56 240 40.5333333333333 275.6266666666667 64 285.8666666666667M448 285.8666666666667C471.4666666666667 275.6266666666667 477.4399999999999 240 460.5866666666666 206.5066666666667C443.7333333333334 173.0133333333333 410.88 154.24 386.7733333333333 164.6933333333333C362.6666666666667 175.1466666666667 357.12 210.56 373.3333333333333 244.2666666666667C390.6133333333333 277.3333333333334 423.68 296.32 448 285.8666666666667z" /> + <glyph glyph-name="pen" + unicode="&#xF3EA;" + horiz-adv-x="512" d=" M441.8133333333334 297.8133333333334C434.56 290.56 427.52 283.52 427.3066666666667 276.48C426.6666666666667 269.6533333333334 433.92 262.6133333333334 440.7466666666667 256C450.9866666666667 245.3333333333334 461.0133333333333 235.7333333333334 460.5866666666666 225.2800000000001C460.16 214.8266666666667 449.28 203.9466666666667 438.4 193.28L350.2933333333334 104.96L320 135.2533333333333L410.6666666666667 225.7066666666667L390.1866666666666 246.1866666666667L359.8933333333333 216.1066666666667L279.8933333333333 296.1066666666667L361.8133333333333 377.8133333333334C370.1333333333333 386.1333333333334 383.9999999999999 386.1333333333334 391.8933333333333 377.8133333333334L441.8133333333333 327.8933333333333C450.1333333333333 320 450.1333333333333 306.1333333333334 441.8133333333333 297.8133333333334M64 80L267.9466666666667 284.1600000000001L347.9466666666667 204.16L144 0H64V80z" /> + <glyph glyph-name="pencil" + unicode="&#xF3EB;" + horiz-adv-x="512" d=" M441.8133333333334 297.8133333333334C450.1333333333334 306.1333333333334 450.1333333333334 320 441.8133333333334 327.8933333333333L391.8933333333333 377.8133333333334C384 386.1333333333334 370.1333333333334 386.1333333333334 361.8133333333334 377.8133333333334L322.56 338.7733333333333L402.56 258.7733333333333M64 80V0H144L379.9466666666666 236.1600000000001L299.9466666666666 316.1600000000001L64 80z" /> + <glyph glyph-name="pencil-box" + unicode="&#xF3EC;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M356.2666666666667 248.5333333333334C360.9599999999999 253.0133333333334 360.9599999999999 260.48 356.2666666666667 264.9600000000001L328.96 292.2666666666667C324.48 296.9600000000001 317.0133333333333 296.9600000000001 312.5333333333333 292.2666666666667L291.2 270.9333333333334L334.9333333333333 227.2L356.2666666666667 248.5333333333333M149.3333333333333 129.28V85.3333333333334H193.28L322.56 214.6133333333333L278.6133333333334 258.56L149.3333333333333 129.28z" /> + <glyph glyph-name="pencil-box-outline" + unicode="&#xF3ED;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M356.2666666666667 248.5333333333334L334.9333333333333 227.2L291.2 270.9333333333334L312.5333333333333 292.2666666666667C317.0133333333333 296.96 324.48 296.96 328.9599999999999 292.2666666666667L356.2666666666667 264.9600000000001C360.9599999999999 260.48 360.9599999999999 253.0133333333333 356.2666666666667 248.5333333333334M149.3333333333333 129.28L278.6133333333333 258.5600000000001L322.56 214.6133333333334L193.28 85.3333333333334H149.3333333333333V129.28z" /> + <glyph glyph-name="pencil-lock" + unicode="&#xF3EE;" + horiz-adv-x="512" d=" M117.3333333333333 405.3333333333333C87.8933333333333 405.3333333333333 64 381.44 64 352V341.3333333333334C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V234.6666666666667C42.6666666666667 222.9333333333333 52.2666666666667 213.3333333333334 64 213.3333333333334H170.6666666666667C182.4 213.3333333333334 192 222.9333333333333 192 234.6666666666667V320C192 331.7333333333334 182.4 341.3333333333334 170.6666666666667 341.3333333333334V352C170.6666666666667 381.44 146.7733333333333 405.3333333333333 117.3333333333333 405.3333333333333M117.3333333333333 384C135.04 384 149.3333333333333 369.7066666666667 149.3333333333333 352V341.3333333333334H85.3333333333333V352C85.3333333333333 369.7066666666667 99.6266666666667 384 117.3333333333333 384M419.4133333333333 384C413.8666666666666 384 408.7466666666667 382.0800000000001 404.6933333333333 378.0266666666667L365.44 338.56L445.44 258.56L484.6933333333333 298.0266666666667C493.0133333333333 306.3466666666667 493.0133333333333 320 484.6933333333333 327.8933333333333L434.7733333333333 378.0266666666667C430.5066666666667 382.08 424.7466666666667 384 419.4133333333333 384M342.6133333333333 315.9466666666667L106.6666666666667 80V0H186.6666666666667L422.6133333333333 235.9466666666667L342.6133333333333 315.9466666666667z" /> + <glyph glyph-name="pencil-off" + unicode="&#xF3EF;" + horiz-adv-x="512" d=" M398.08 405.3333333333333C392.5333333333333 405.3333333333333 387.4133333333333 403.4133333333334 383.36 399.36L344.1066666666667 359.8933333333333L424.1066666666667 279.8933333333333L463.36 319.36C471.6799999999999 327.68 471.6799999999999 341.3333333333333 463.36 349.2266666666667L413.44 399.36C409.1733333333333 403.4133333333333 403.4133333333333 405.3333333333333 398.08 405.3333333333333M69.9733333333333 362.6666666666667L42.6666666666667 335.36L181.3333333333333 197.3333333333334L85.3333333333333 101.3333333333334V21.3333333333334H165.3333333333333L261.3333333333333 117.3333333333334L399.36 -21.3333333333333L426.6666666666667 5.9733333333334L288 144L208 224L69.9733333333333 362.6666666666667M321.28 337.2800000000001L235.3066666666666 251.3066666666667L315.3066666666666 171.3066666666667L401.28 257.2800000000001L321.28 337.2800000000001z" /> + <glyph glyph-name="percent" + unicode="&#xF3F0;" + horiz-adv-x="512" d=" M149.3333333333333 362.6666666666667C184.7466666666667 362.6666666666667 213.3333333333333 334.0800000000001 213.3333333333333 298.6666666666667S184.7466666666667 234.6666666666667 149.3333333333333 234.6666666666667S85.3333333333333 263.2533333333334 85.3333333333333 298.6666666666667S113.92 362.6666666666667 149.3333333333333 362.6666666666667M362.6666666666667 149.3333333333334C398.08 149.3333333333334 426.6666666666667 120.7466666666667 426.6666666666667 85.3333333333334S398.08 21.3333333333334 362.6666666666667 21.3333333333334S298.6666666666667 49.92 298.6666666666667 85.3333333333334S327.2533333333334 149.3333333333334 362.6666666666667 149.3333333333334M426.6666666666667 332.5866666666667L115.4133333333333 21.3333333333334L85.3333333333333 51.4133333333334L396.5866666666667 362.6666666666667L426.6666666666667 332.5866666666667z" /> + <glyph glyph-name="pharmacy" + unicode="&#xF3F1;" + horiz-adv-x="512" d=" M341.3333333333333 149.3333333333334H277.3333333333333V85.3333333333334H234.6666666666667V149.3333333333334H170.6666666666667V192H234.6666666666667V256H277.3333333333333V192H341.3333333333333M448 341.3333333333334H391.4666666666667L416 408.5333333333333L365.8666666666666 426.6666666666667L334.7199999999999 341.3333333333334H64V298.6666666666667L106.6666666666667 170.6666666666667L64 42.6666666666667V0H448V42.6666666666667L405.3333333333333 170.6666666666667L448 298.6666666666667V341.3333333333334z" /> + <glyph glyph-name="phone" + unicode="&#xF3F2;" + horiz-adv-x="512" d=" M141.2266666666667 217.8133333333334C171.9466666666667 157.4400000000001 221.44 107.9466666666667 281.8133333333334 77.2266666666667L328.7466666666667 124.16C334.72 130.1333333333333 343.04 131.84 350.5066666666667 129.4933333333334C374.4 121.6 400 117.3333333333334 426.6666666666667 117.3333333333334C438.4 117.3333333333334 448 107.7333333333334 448 96V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0C226.3466666666667 0 64 162.3466666666667 64 362.6666666666667C64 374.4 73.6 384 85.3333333333333 384H160C171.7333333333334 384 181.3333333333333 374.4 181.3333333333333 362.6666666666667C181.3333333333333 336 185.6 310.4 193.4933333333334 286.5066666666667C195.84 279.04 194.1333333333333 270.7200000000001 188.16 264.7466666666667L141.2266666666667 217.8133333333334z" /> + <glyph glyph-name="phone-bluetooth" + unicode="&#xF3F3;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M384 294.1866666666667L404.0533333333334 274.3466666666667L384 254.2933333333334M384 385.92L404.0533333333334 365.8666666666667L384 345.8133333333334M313.8133333333334 245.3333333333334L362.6666666666667 294.1866666666667V213.3333333333334H373.3333333333333L434.1333333333334 274.3466666666667L388.48 320L434.1333333333334 365.8666666666667L373.3333333333333 426.6666666666667H362.6666666666667V345.8133333333334L313.8133333333334 394.6666666666667L298.6666666666667 379.52L358.1866666666666 320L298.6666666666667 260.48L313.8133333333334 245.3333333333334z" /> + <glyph glyph-name="phone-classic" + unicode="&#xF602;" + horiz-adv-x="512" d=" M256 384C159.1466666666667 384 71.2533333333333 346.0266666666667 6.1866666666667 284.3733333333334C2.3466666666667 280.5333333333334 0 275.2000000000001 0 269.2266666666667C0 263.2533333333334 2.3466666666667 257.9200000000001 6.1866666666667 254.08L59.0933333333333 201.1733333333334C62.9333333333333 197.3333333333334 68.2666666666667 194.9866666666667 74.6666666666667 194.9866666666667C80 194.9866666666667 85.3333333333333 197.3333333333334 89.1733333333333 200.96C106.0266666666667 216.7466666666667 125.2266666666667 229.9733333333334 145.92 240.4266666666667C152.96 243.84 157.8666666666667 251.0933333333334 157.8666666666667 259.6266666666667V325.76C188.8 336 221.6533333333333 341.3333333333334 256 341.3333333333334C289.92 341.3333333333334 322.9866666666667 336 353.92 325.9733333333334V259.8400000000001C353.92 251.52 358.8266666666667 244.0533333333334 365.8666666666666 240.64C386.7733333333333 230.1866666666667 405.3333333333333 216.7466666666667 422.8266666666667 201.1733333333334C426.6666666666667 197.3333333333334 432 195.2 437.3333333333333 195.2C443.7333333333334 195.2 449.0666666666667 197.5466666666667 452.9066666666666 201.3866666666667L505.8133333333333 254.2933333333334C509.6533333333333 258.1333333333334 512 263.4666666666667 512 269.44C512 275.4133333333333 509.4399999999999 280.5333333333333 505.6 284.3733333333334C440.5333333333333 346.0266666666667 352.64 384 256 384M192 298.6666666666667V234.6666666666667S64 128 64 64V-21.3333333333333H448V64C448 128 320 234.6666666666667 320 234.6666666666667V298.6666666666667H277.3333333333333V256H234.6666666666667V298.6666666666667H192M256 192C303.1466666666667 192 341.3333333333333 153.8133333333334 341.3333333333333 106.6666666666667S303.1466666666667 21.3333333333334 256 21.3333333333334S170.6666666666667 59.52 170.6666666666667 106.6666666666667S208.8533333333333 192 256 192M256 160C226.56 160 202.6666666666667 136.1066666666667 202.6666666666667 106.6666666666667S226.56 53.3333333333334 256 53.3333333333334S309.3333333333333 77.2266666666667 309.3333333333333 106.6666666666667S285.44 160 256 160z" /> + <glyph glyph-name="phone-forward" + unicode="&#xF3F4;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M384 213.3333333333334L490.6666666666666 320L384 426.6666666666667V362.6666666666667H298.6666666666667V277.3333333333334H384V213.3333333333334z" /> + <glyph glyph-name="phone-hangup" + unicode="&#xF3F5;" + horiz-adv-x="512" d=" M256 256C221.8666666666667 256 188.8 250.6666666666667 157.8666666666667 240.64V174.5066666666667C157.8666666666667 165.9733333333334 152.96 158.72 145.92 155.3066666666667C125.0133333333333 144.8533333333334 106.0266666666667 131.4133333333334 88.96 115.84C85.3333333333333 112 80 109.6533333333334 74.6666666666667 109.6533333333334C68.2666666666667 109.6533333333334 62.9333333333333 112.2133333333334 59.0933333333333 116.0533333333334L6.1866666666667 168.96C2.3466666666667 172.8 0 178.1333333333333 0 183.8933333333333C0 189.8666666666667 2.3466666666667 195.2 6.1866666666667 199.04C71.2533333333333 260.9066666666667 159.1466666666667 298.6666666666667 256 298.6666666666667C352.8533333333333 298.6666666666667 440.7466666666667 260.9066666666667 505.8133333333333 199.04C509.6533333333333 195.2 512 189.8666666666667 512 183.8933333333334C512 178.1333333333334 509.6533333333333 172.8000000000001 505.8133333333333 168.96L452.9066666666666 116.0533333333334C449.0666666666667 112.2133333333334 443.7333333333334 109.6533333333334 437.3333333333333 109.6533333333334C432 109.6533333333334 426.6666666666667 112 422.8266666666667 115.84C405.9733333333334 131.4133333333334 386.9866666666667 144.8533333333334 366.08 155.3066666666667C359.04 158.72 354.1333333333334 165.9733333333334 354.1333333333334 174.5066666666667V240.64C323.2 250.6666666666667 290.1333333333334 256 256 256z" /> + <glyph glyph-name="phone-in-talk" + unicode="&#xF3F6;" + horiz-adv-x="512" d=" M320 192H362.6666666666667C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667V256C291.4133333333333 256 320 227.4133333333334 320 192M405.3333333333333 192H448C448 298.6666666666667 362.0266666666667 384 256 384V341.3333333333334C338.3466666666667 341.3333333333334 405.3333333333333 274.5600000000001 405.3333333333333 192M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334z" /> + <glyph glyph-name="phone-incoming" + unicode="&#xF3F7;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.3733333333333L281.8133333333334 77.44C221.44 108.16 171.9466666666667 157.44 141.2266666666667 218.0266666666667L188.16 265.1733333333334C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333M405.3333333333333 213.3333333333334V245.3333333333334H330.6666666666667L448 362.6666666666667L426.6666666666667 384L309.3333333333333 266.6666666666667V341.3333333333334H277.3333333333333V213.3333333333334H405.3333333333333z" /> + <glyph glyph-name="phone-locked" + unicode="&#xF3F8;" + horiz-adv-x="512" d=" M409.6 362.6666666666667H337.0666666666666V373.3333333333334C337.0666666666666 393.3866666666667 353.28 409.6 373.3333333333333 409.6S409.6 393.3866666666667 409.6 373.3333333333334M426.6666666666667 362.6666666666667V373.3333333333334C426.6666666666667 402.7733333333333 402.7733333333333 426.6666666666667 373.3333333333333 426.6666666666667S320 402.7733333333333 320 373.3333333333334V362.6666666666667C308.2666666666667 362.6666666666667 298.6666666666667 353.0666666666667 298.6666666666667 341.3333333333334V256C298.6666666666667 244.2666666666667 308.2666666666667 234.6666666666667 320 234.6666666666667H426.6666666666667C438.4 234.6666666666667 448 244.2666666666667 448 256V341.3333333333334C448 353.0666666666667 438.4 362.6666666666667 426.6666666666667 362.6666666666667M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334z" /> + <glyph glyph-name="phone-log" + unicode="&#xF3F9;" + horiz-adv-x="512" d=" M426.6666666666667 117.3333333333334C438.4 117.3333333333334 448 107.7333333333334 448 96V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0C226.3466666666667 0 64 162.3466666666667 64 362.6666666666667C64 374.4 73.6 384 85.3333333333333 384H160C171.7333333333334 384 181.3333333333333 374.4 181.3333333333333 362.6666666666667C181.3333333333333 336.2133333333334 185.6 310.4 193.4933333333334 286.5066666666667C195.84 279.04 194.1333333333333 270.7200000000001 188.16 264.9600000000001L141.2266666666667 217.8133333333334C171.9466666666667 157.4400000000001 221.44 107.9466666666667 281.8133333333334 77.2266666666667L328.7466666666667 124.16C334.72 130.1333333333333 343.04 131.84 350.5066666666667 129.4933333333334C374.4 121.6 400 117.3333333333334 426.6666666666667 117.3333333333334M256 384H298.6666666666667V341.3333333333334H256M320 384H448V341.3333333333334H320M256 320H298.6666666666667V277.3333333333334H256M320 320H448V277.3333333333334H320M256 256H298.6666666666667V213.3333333333334H256M320 256H448V213.3333333333334H320" /> + <glyph glyph-name="phone-minus" + unicode="&#xF658;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400.2133333333334 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 172.16 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.9600000000001C194.1333333333333 270.7200000000001 195.84 279.0400000000001 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336.2133333333334 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384M277.3333333333333 320V277.3333333333334H448V320" /> + <glyph glyph-name="phone-missed" + unicode="&#xF3FA;" + horiz-adv-x="512" d=" M505.8133333333333 92.3733333333333C440.7466666666667 154.24 352.8533333333333 192 256 192C159.1466666666667 192 71.2533333333333 154.24 6.1866666666667 92.3733333333333C2.3466666666667 88.5333333333333 0 83.2 0 77.2266666666666C0 71.4666666666666 2.3466666666667 66.1333333333333 6.1866666666667 62.2933333333333L59.0933333333333 9.3866666666667C62.9333333333333 5.5466666666666 68.2666666666667 2.9866666666666 74.6666666666667 2.9866666666666C80 2.9866666666666 85.3333333333333 5.3333333333333 89.1733333333333 9.1733333333333C106.0266666666667 24.9599999999999 125.0133333333333 38.1866666666666 145.92 48.64C152.96 52.0533333333333 157.8666666666667 59.3066666666666 157.8666666666667 67.8399999999999V133.9733333333333C188.8 144 221.6533333333333 149.3333333333333 256 149.3333333333333C290.1333333333334 149.3333333333333 323.2 144 354.1333333333334 133.9733333333333V67.8399999999999C354.1333333333334 59.3066666666666 359.04 52.0533333333333 366.08 48.64C386.9866666666667 38.1866666666667 405.9733333333334 24.96 422.8266666666667 9.1733333333333C426.6666666666667 5.3333333333333 432 2.9866666666666 437.3333333333333 2.9866666666666C443.7333333333334 2.9866666666666 449.0666666666667 5.5466666666666 452.9066666666666 9.3866666666667L505.8133333333333 62.2933333333333C509.6533333333333 66.1333333333333 512 71.4666666666666 512 77.2266666666666C512 83.2 509.6533333333333 88.5333333333333 505.8133333333333 92.3733333333333M138.6666666666667 330.6666666666667L256 213.3333333333334L405.3333333333333 362.6666666666667L384 384L256 256L160 352H234.6666666666667V384H106.6666666666667V256H138.6666666666667V330.6666666666667z" /> + <glyph glyph-name="phone-outgoing" + unicode="&#xF3FB;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.3733333333333L281.8133333333334 77.44C221.44 108.16 171.9466666666667 157.44 141.2266666666667 218.0266666666667L188.16 265.1733333333334C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333M320 384V352H394.6666666666667L277.3333333333333 234.6666666666667L298.6666666666667 213.3333333333334L416 330.6666666666667V256H448V384H320z" /> + <glyph glyph-name="phone-paused" + unicode="&#xF3FC;" + horiz-adv-x="512" d=" M405.3333333333333 234.6666666666667H448V384H405.3333333333333M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M362.6666666666667 384H320V234.6666666666667H362.6666666666667V384z" /> + <glyph glyph-name="phone-plus" + unicode="&#xF659;" + horiz-adv-x="512" d=" M85.3333333333333 384C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334C400.2133333333334 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 172.16 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.9600000000001C194.1333333333333 270.7200000000001 195.84 279.0400000000001 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336.2133333333334 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384M341.3333333333333 384V320H277.3333333333333V277.3333333333334H341.3333333333333V213.3333333333334H384V277.3333333333334H448V320H384V384" /> + <glyph glyph-name="phone-settings" + unicode="&#xF3FD;" + horiz-adv-x="512" d=" M405.3333333333333 213.3333333333334H448V256H405.3333333333333M426.6666666666667 117.3333333333334C400 117.3333333333334 374.4 121.6 350.5066666666667 129.4933333333334C343.04 131.84 334.72 130.1333333333333 328.7466666666667 124.16L281.8133333333334 77.2266666666667C221.44 107.9466666666667 171.9466666666667 157.4400000000001 141.2266666666667 217.8133333333334L188.16 264.7466666666667C194.1333333333333 270.7200000000001 195.84 279.04 193.4933333333334 286.5066666666667C185.6 310.4 181.3333333333333 336 181.3333333333333 362.6666666666667C181.3333333333333 374.4 171.7333333333334 384 160 384H85.3333333333333C73.6 384 64 374.4 64 362.6666666666667C64 162.3466666666667 226.3466666666667 0 426.6666666666667 0C438.4 0 448 9.6 448 21.3333333333334V96C448 107.7333333333334 438.4 117.3333333333334 426.6666666666667 117.3333333333334M362.6666666666667 256H320V213.3333333333334H362.6666666666667M277.3333333333333 256H234.6666666666667V213.3333333333334H277.3333333333333V256z" /> + <glyph glyph-name="phone-voip" + unicode="&#xF3FE;" + horiz-adv-x="512" d=" M277.3333333333333 85.3333333333334V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333M505.6 284.3733333333334C509.4399999999999 280.5333333333334 512 275.4133333333334 512 269.4400000000001C512 263.4666666666667 509.6533333333333 258.1333333333334 505.8133333333333 254.2933333333334L452.9066666666666 201.3866666666667C449.0666666666667 197.5466666666667 443.7333333333334 195.2000000000001 437.3333333333333 195.2000000000001C432 195.2000000000001 426.6666666666667 197.3333333333334 422.8266666666667 201.1733333333334C405.3333333333333 216.7466666666667 386.7733333333333 230.1866666666667 365.8666666666666 240.6400000000001C358.8266666666667 244.0533333333334 353.92 251.5200000000001 353.92 259.8400000000001V325.9733333333334C322.9866666666667 336 289.92 341.3333333333334 256 341.3333333333334C221.8666666666667 341.3333333333334 188.8 336 157.8666666666667 325.76V259.6266666666667C157.8666666666667 251.0933333333334 152.96 243.84 145.92 240.4266666666667C125.2266666666667 229.9733333333334 106.0266666666667 216.7466666666667 89.1733333333333 200.96C85.3333333333333 197.3333333333334 80 194.9866666666667 74.6666666666667 194.9866666666667C68.2666666666667 194.9866666666667 62.9333333333333 197.3333333333334 59.0933333333333 201.1733333333334L6.1866666666667 254.08C2.3466666666667 257.92 0 263.2533333333334 0 269.2266666666667C0 275.2 2.3466666666667 280.5333333333333 6.1866666666667 284.3733333333334C71.2533333333333 346.0266666666667 159.1466666666667 384 256 384C352.64 384 440.5333333333333 346.0266666666667 505.6 284.3733333333334M234.6666666666667 234.6666666666667V128H213.3333333333333V234.6666666666667H234.6666666666667M256 234.6666666666667H320V170.6666666666667H277.3333333333333V128H256V234.6666666666667M298.6666666666667 192V213.3333333333334H277.3333333333333V192H298.6666666666667z" /> + <glyph glyph-name="pi" + unicode="&#xF3FF;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V298.6666666666667H128V42.6666666666667H170.6666666666667V298.6666666666667H298.6666666666667V106.6666666666667C298.6666666666667 71.2533333333333 327.2533333333334 42.6666666666667 362.6666666666667 42.6666666666667S426.6666666666667 71.2533333333333 426.6666666666667 106.6666666666667H384C384 94.9333333333333 374.4 85.3333333333334 362.6666666666667 85.3333333333334S341.3333333333333 94.9333333333333 341.3333333333333 106.6666666666667V298.6666666666667H384V341.3333333333334" /> + <glyph glyph-name="pi-box" + unicode="&#xF400;" + horiz-adv-x="512" d=" M106.6666666666667 384C82.9866666666667 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 364.8 428.8 384 405.3333333333333 384M128 298.6666666666667H362.6666666666667V256H320V149.3333333333334C320 137.6 329.6 128 341.3333333333333 128S362.6666666666667 137.6 362.6666666666667 149.3333333333334H405.3333333333333C405.3333333333333 113.92 376.7466666666667 85.3333333333334 341.3333333333333 85.3333333333334S277.3333333333333 113.92 277.3333333333333 149.3333333333334V256H213.3333333333333V85.3333333333334H170.6666666666667V256H128" /> + <glyph glyph-name="pig" + unicode="&#xF401;" + horiz-adv-x="512" d=" M202.6666666666667 256C184.96 256 170.6666666666667 241.7066666666667 170.6666666666667 224S184.96 192 202.6666666666667 192S234.6666666666667 206.2933333333334 234.6666666666667 224S220.3733333333333 256 202.6666666666667 256M309.3333333333333 256C291.6266666666667 256 277.3333333333333 241.7066666666667 277.3333333333333 224S291.6266666666667 192 309.3333333333333 192S341.3333333333333 206.2933333333334 341.3333333333333 224S327.04 256 309.3333333333333 256M256 362.6666666666667L270.5066666666667 362.0266666666667C290.56 378.88 316.16 392.7466666666667 335.36 397.8666666666667C375.2533333333334 408.5333333333333 445.44 400.4266666666667 454.6133333333333 366.2933333333333C461.2266666666666 341.3333333333334 439.4666666666666 310.4 405.9733333333333 290.56C432.2133333333334 257.7066666666667 448 216.1066666666667 448 170.6666666666667C448 64.64 362.0266666666667 -21.3333333333333 256 -21.3333333333333S64 64.64 64 170.6666666666667C64 216.1066666666667 79.7866666666667 257.7066666666667 106.0266666666667 290.56C72.5333333333333 310.4 50.7733333333333 341.3333333333334 57.3866666666667 366.2933333333334C66.56 400.4266666666667 136.7466666666667 408.5333333333333 176.64 397.8666666666667C195.84 392.7466666666667 221.44 378.88 241.4933333333334 362.0266666666667L256 362.6666666666667M213.3333333333333 106.6666666666667C225.0666666666667 106.6666666666667 234.6666666666667 97.0666666666667 234.6666666666667 85.3333333333334S225.0666666666667 64 213.3333333333333 64S192 73.6 192 85.3333333333334S201.6 106.6666666666667 213.3333333333333 106.6666666666667M298.6666666666667 106.6666666666667C310.4 106.6666666666667 320 97.0666666666667 320 85.3333333333334S310.4 64 298.6666666666667 64S277.3333333333333 73.6 277.3333333333333 85.3333333333334S286.9333333333333 106.6666666666667 298.6666666666667 106.6666666666667M256 170.6666666666667C197.12 170.6666666666667 149.3333333333333 120.7466666666667 149.3333333333333 85.3333333333334C149.3333333333333 49.92 197.12 21.3333333333334 256 21.3333333333334S362.6666666666667 49.92 362.6666666666667 85.3333333333334S314.88 170.6666666666667 256 170.6666666666667M165.5466666666667 356.6933333333334C155.9466666666667 359.2533333333334 97.92 355.2 97.92 355.2S145.0666666666667 317.8666666666667 154.4533333333333 315.3066666666667C164.0533333333334 312.7466666666667 208.4266666666667 310.8266666666667 211.4133333333333 322.1333333333334C214.6133333333334 333.6533333333334 174.9333333333333 354.1333333333334 165.5466666666667 356.6933333333334M346.4533333333334 356.6933333333334C337.0666666666667 354.1333333333334 297.3866666666667 333.6533333333334 300.5866666666667 322.1333333333334C303.5733333333334 310.8266666666667 347.9466666666667 312.7466666666667 357.5466666666667 315.3066666666667C366.9333333333334 317.8666666666667 414.08 355.2000000000001 414.08 355.2000000000001S356.0533333333334 359.2533333333334 346.4533333333334 356.6933333333334z" /> + <glyph glyph-name="pill" + unicode="&#xF402;" + horiz-adv-x="512" d=" M90.0266666666667 207.1466666666667L240.8533333333333 357.9733333333334C290.9866666666666 407.8933333333334 371.84 407.8933333333334 421.9733333333334 357.9733333333334C471.8933333333333 308.0533333333334 471.8933333333333 226.9866666666667 421.9733333333334 176.8533333333334L271.1466666666667 26.0266666666666C221.0133333333334 -23.8933333333333 139.9466666666667 -23.8933333333333 90.0266666666667 26.0266666666666C40.1066666666667 76.16 40.1066666666667 157.0133333333333 90.0266666666667 207.1466666666667M120.32 176.8533333333334C97.92 154.6666666666667 90.4533333333333 122.88 98.1333333333333 94.5066666666667L225.92 222.08L316.3733333333334 131.6266666666667L391.68 207.1466666666667C425.1733333333333 240.4266666666667 425.1733333333333 294.4000000000001 391.68 327.6800000000001C358.4 361.1733333333334 304.4266666666666 361.1733333333334 271.1466666666667 327.6800000000001L120.32 176.8533333333334z" /> + <glyph glyph-name="pin" + unicode="&#xF403;" + horiz-adv-x="512" d=" M341.3333333333333 192V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333V362.6666666666667H170.6666666666667V192L128 149.3333333333334V106.6666666666667H238.9333333333333V-21.3333333333333H273.0666666666666V106.6666666666667H384V149.3333333333334L341.3333333333333 192z" /> + <glyph glyph-name="pin-off" + unicode="&#xF404;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L273.0666666666667 105.1733333333334V-21.3333333333333H238.9333333333334V106.6666666666667H128V149.3333333333334L170.6666666666667 192V207.5733333333334L42.6666666666667 335.5733333333334M341.3333333333333 192L384 149.3333333333334V106.6666666666667H380.16L170.6666666666667 316.1600000000001V362.6666666666667H149.3333333333333V405.3333333333333H362.6666666666667V362.6666666666667H341.3333333333333V192z" /> + <glyph glyph-name="pine-tree" + unicode="&#xF405;" + horiz-adv-x="512" d=" M213.3333333333333 0V64H64L170.6666666666667 170.6666666666667H106.6666666666667L213.3333333333333 277.3333333333334H149.3333333333333L256 384L362.6666666666667 277.3333333333334H298.6666666666667L405.3333333333333 170.6666666666667H341.3333333333333L448 64H298.6666666666667V0H213.3333333333333z" /> + <glyph glyph-name="pine-tree-box" + unicode="&#xF406;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M234.6666666666667 42.6666666666667H277.3333333333333V85.3333333333334H384L298.6666666666667 170.6666666666667H362.6666666666667L277.3333333333333 256H341.3333333333333L256 341.3333333333334L170.6666666666667 256H234.6666666666667L149.3333333333333 170.6666666666667H213.3333333333333L128 85.3333333333334H234.6666666666667V42.6666666666667z" /> + <glyph glyph-name="pinterest" + unicode="&#xF407;" + horiz-adv-x="512" d=" M282.6666666666667 80C261.3333333333333 80 240.8533333333333 89.1733333333334 226.1333333333334 104.5333333333333L200.7466666666667 19.2L199.04 13.6533333333333L198.1866666666667 14.0799999999999C192.8533333333334 5.3333333333333 183.68 -1e-13 173.2266666666667 -1e-13C157.2266666666667 -1e-13 144 13.2266666666666 144 29.4399999999999C144 30.7199999999999 144.2133333333334 31.9999999999999 144.4266666666667 33.2799999999999L144 33.4933333333333L145.28 38.1866666666666L194.56 186.4533333333333S189.2266666666667 202.6666666666666 189.2266666666667 225.7066666666666C189.2266666666667 271.5733333333333 213.9733333333334 285.4399999999999 233.6 285.4399999999999C253.44 285.4399999999999 271.5733333333333 278.3999999999999 271.5733333333333 250.4533333333333C271.5733333333333 214.6133333333332 247.68 196.2666666666666 247.68 170.6666666666666C247.68 150.6133333333332 263.8933333333333 134.6133333333332 283.52 134.6133333333332C345.8133333333334 134.6133333333332 368 181.3333333333333 368 225.2799999999999C368 283.5199999999999 317.6533333333333 330.6666666666666 256 330.6666666666666C194.1333333333333 330.6666666666666 144 283.5199999999999 144 225.2799999999999C144 207.3599999999999 149.3333333333333 189.44 158.5066666666667 173.8666666666666C160.8533333333333 169.5999999999999 162.1333333333333 164.9066666666666 162.1333333333333 159.9999999999999C162.1333333333333 145.2799999999999 150.1866666666667 133.3333333333333 135.4666666666667 133.3333333333333C126.08 133.3333333333333 117.3333333333333 138.6666666666666 112.4266666666667 146.5599999999999C98.1333333333333 170.6666666666665 90.6666666666667 197.7599999999999 90.6666666666667 225.2799999999999C90.6666666666667 312.9600000000001 164.9066666666667 384 256 384S421.3333333333333 312.9600000000001 421.3333333333333 225.28C421.3333333333333 155.3066666666667 377.8133333333334 80 282.6666666666667 80z" /> + <glyph glyph-name="pinterest-box" + unicode="&#xF408;" + horiz-adv-x="512" d=" M277.3333333333333 102.4C260.2666666666667 102.4 243.84 109.6533333333334 232.1066666666667 122.0266666666667L211.84 53.3333333333334L210.3466666666666 49.28L209.7066666666667 49.7066666666667C205.6533333333333 42.6666666666667 198.1866666666667 38.4 189.8666666666667 38.4C176.8533333333334 38.4 166.4 48.8533333333332 166.4 61.8666666666667C166.4 62.9333333333333 166.6133333333334 64 166.6133333333334 65.0666666666666H166.4L167.4666666666667 68.9066666666666L206.9333333333333 187.5199999999999S202.6666666666667 200.7466666666666 202.6666666666667 219.0933333333333C202.6666666666667 256 222.2933333333333 266.6666666666667 238.08 266.6666666666667C254.08 266.6666666666667 268.3733333333334 261.12 268.3733333333334 238.7199999999999C268.3733333333334 210.1333333333333 249.3866666666667 195.4133333333333 249.3866666666667 174.7199999999999C249.3866666666667 158.9333333333333 262.1866666666666 145.92 277.9733333333333 145.92C327.8933333333333 145.92 345.6 183.4666666666666 345.6 218.6666666666666C345.6 265.1733333333333 305.4933333333334 302.9333333333333 256 302.9333333333333C206.5066666666667 302.9333333333333 166.4 265.1733333333333 166.4 218.6666666666666C166.4 204.3733333333333 170.6666666666667 190.0799999999999 177.92 177.4933333333333C179.84 174.0799999999999 181.3333333333333 170.6666666666666 181.3333333333333 166.4C181.3333333333333 154.6666666666666 171.7333333333334 145.0666666666666 160 145.0666666666666C152.1066666666667 145.0666666666666 144.8533333333333 149.3333333333333 141.2266666666667 155.7333333333333C129.7066666666667 174.72 123.7333333333333 196.48 123.7333333333333 218.6666666666666C123.7333333333333 288.64 183.04 345.6 256 345.6C328.96 345.6 388.2666666666667 288.64 388.2666666666667 218.6666666666667C388.2666666666667 162.7733333333333 353.4933333333334 102.4 277.3333333333333 102.4M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="pizza" + unicode="&#xF409;" + horiz-adv-x="512" d=" M256 128C232.5333333333334 128 213.3333333333333 147.2000000000001 213.3333333333333 170.6666666666667C213.3333333333333 194.3466666666667 232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 194.1333333333333 298.6666666666667 170.6666666666667S279.4666666666667 128 256 128M149.3333333333333 298.6666666666667C149.3333333333333 322.3466666666667 168.32 341.3333333333334 192 341.3333333333334C215.4666666666667 341.3333333333334 234.6666666666667 322.1333333333334 234.6666666666667 298.6666666666667S215.4666666666667 256 192 256C168.32 256 149.3333333333333 275.2000000000001 149.3333333333333 298.6666666666667M256 405.3333333333333C179.84 405.3333333333333 111.5733333333333 372.48 64 320L256 -21.3333333333333L448 320C400.64 372.48 332.16 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="play" + unicode="&#xF40A;" + horiz-adv-x="512" d=" M170.6666666666667 338.3466666666667V39.68L405.3333333333333 189.0133333333333L170.6666666666667 338.3466666666667z" /> + <glyph glyph-name="play-box-outline" + unicode="&#xF40B;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M213.3333333333333 277.3333333333334V106.6666666666667L320 192L213.3333333333333 277.3333333333334z" /> + <glyph glyph-name="play-circle" + unicode="&#xF40C;" + horiz-adv-x="512" d=" M213.3333333333333 96V288L341.3333333333333 192M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="play-circle-outline" + unicode="&#xF40D;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M213.3333333333333 96L341.3333333333333 192L213.3333333333333 288V96z" /> + <glyph glyph-name="play-pause" + unicode="&#xF40E;" + horiz-adv-x="512" d=" M64 341.3333333333334V42.6666666666667L234.6666666666667 192M277.3333333333333 42.6666666666667H341.3333333333333V341.3333333333334H277.3333333333333M384 341.3333333333334V42.6666666666667H448V341.3333333333334" /> + <glyph glyph-name="play-protected-content" + unicode="&#xF40F;" + horiz-adv-x="512" d=" M42.6666666666667 341.3333333333334V64H234.6666666666667V106.6666666666667H85.3333333333333V298.6666666666667H362.6666666666667V213.3333333333334H405.3333333333333V341.3333333333334H42.6666666666667M192 256V149.3333333333334L266.6666666666667 202.6666666666667L192 256M448.8533333333333 199.04L343.2533333333334 93.44L297.8133333333334 138.6666666666667L267.7333333333334 108.5866666666667L343.2533333333334 33.0666666666667L478.9333333333333 168.7466666666667L448.8533333333333 199.04z" /> + <glyph glyph-name="playlist-check" + unicode="&#xF5C7;" + horiz-adv-x="512" d=" M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667V320M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667V106.6666666666667M458.6666666666666 202.6666666666667L490.6666666666666 170.6666666666667L341.3333333333333 21.3333333333334L245.3333333333333 117.3333333333334L277.3333333333333 149.3333333333334L341.3333333333333 85.3333333333334L458.6666666666666 202.6666666666667z" /> + <glyph glyph-name="playlist-minus" + unicode="&#xF410;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667M256 149.3333333333334V106.6666666666667H469.3333333333333V149.3333333333334M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="playlist-play" + unicode="&#xF411;" + horiz-adv-x="512" d=" M405.3333333333333 256H42.6666666666667V213.3333333333334H405.3333333333333V256M405.3333333333333 341.3333333333334H42.6666666666667V298.6666666666667H405.3333333333333V341.3333333333334M42.6666666666667 128H320V170.6666666666667H42.6666666666667V128M362.6666666666667 170.6666666666667V42.6666666666667L469.3333333333333 106.6666666666667L362.6666666666667 170.6666666666667z" /> + <glyph glyph-name="playlist-plus" + unicode="&#xF412;" + horiz-adv-x="512" d=" M42.6666666666667 106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667M384 149.3333333333334V234.6666666666667H341.3333333333333V149.3333333333334H256V106.6666666666667H341.3333333333333V21.3333333333334H384V106.6666666666667H469.3333333333333V149.3333333333334M298.6666666666667 320H42.6666666666667V277.3333333333334H298.6666666666667M298.6666666666667 234.6666666666667H42.6666666666667V192H298.6666666666667V234.6666666666667z" /> + <glyph glyph-name="playlist-remove" + unicode="&#xF413;" + horiz-adv-x="512" d=" M42.6666666666667 320V277.3333333333334H298.6666666666667V320H42.6666666666667M42.6666666666667 234.6666666666667V192H213.3333333333333V234.6666666666667H42.6666666666667M302.2933333333333 218.4533333333334L272.2133333333333 188.3733333333333L332.5866666666667 128L272.2133333333333 67.6266666666667L302.2933333333333 37.5466666666667L362.6666666666667 97.92L423.04 37.5466666666666L453.1199999999999 67.6266666666667L392.7466666666667 128L453.12 188.3733333333333L423.04 218.4533333333334L362.6666666666667 158.0800000000001L302.2933333333333 218.4533333333334M42.6666666666667 149.3333333333334V106.6666666666667H213.3333333333333V149.3333333333334H42.6666666666667z" /> + <glyph glyph-name="playstation" + unicode="&#xF414;" + horiz-adv-x="512" d=" M202.6666666666667 356.9066666666667C232.1066666666667 351.36 275.2 338.3466666666667 298.6666666666667 330.6666666666667C357.3333333333333 310.4 377.3866666666667 285.2266666666667 377.3866666666667 228.48C377.3866666666667 173.0133333333334 343.2533333333334 152.1066666666667 299.7333333333334 173.0133333333334V276.2666666666667C299.7333333333334 288 297.6 299.3066666666667 286.08 302.5066666666667C277.3333333333333 305.28 272.2133333333333 297.1733333333334 272.2133333333333 285.2266666666667V27.0933333333334L202.6666666666667 49.28V356.9066666666667M285.2266666666667 72.1066666666667L397.2266666666667 112.0000000000001C410.0266666666667 116.4800000000001 411.9466666666667 122.8800000000001 401.7066666666667 126.2933333333334C391.2533333333334 129.7066666666668 372.6933333333334 128.6400000000001 359.8933333333333 124.1600000000001L285.2266666666667 97.9200000000001V139.7333333333335L289.7066666666667 141.2266666666668S311.2533333333334 149.3333333333335 341.3333333333333 152.1066666666668C371.84 155.5200000000001 408.9600000000001 151.6800000000001 437.9733333333334 140.8000000000001C470.8266666666667 130.3466666666668 474.6666666666666 114.9866666666668 466.3466666666666 104.5333333333335C457.8133333333333 93.8666666666668 437.3333333333333 86.4000000000001 437.3333333333333 86.4000000000001L285.2266666666667 32.0000000000001V72.1066666666667M74.6666666666667 76.3733333333334C41.1733333333333 85.3333333333334 35.4133333333333 105.6 50.7733333333333 117.3333333333334C65.0666666666667 128 89.1733333333333 135.4666666666667 89.1733333333333 135.4666666666667L189.0133333333333 170.6666666666667V130.5600000000001L117.3333333333333 104.7466666666667C104.5333333333333 100.2666666666667 102.6133333333334 93.8666666666667 112.8533333333333 90.4533333333333C123.0933333333333 87.04 141.8666666666667 87.8933333333333 154.4533333333333 92.5866666666667L189.0133333333333 104.96V68.9066666666666L182.1866666666667 67.6266666666667C147.6266666666666 62.0799999999999 110.9333333333333 63.9999999999999 74.6666666666666 76.3733333333333z" /> + <glyph glyph-name="plus" + unicode="&#xF415;" + horiz-adv-x="512" d=" M405.3333333333333 170.6666666666667H277.3333333333333V42.6666666666667H234.6666666666667V170.6666666666667H106.6666666666667V213.3333333333334H234.6666666666667V341.3333333333334H277.3333333333333V213.3333333333334H405.3333333333333V170.6666666666667z" /> + <glyph glyph-name="plus-box" + unicode="&#xF416;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667V170.6666666666667H149.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="plus-circle" + unicode="&#xF417;" + horiz-adv-x="512" d=" M362.6666666666667 170.6666666666667H277.3333333333333V85.3333333333334H234.6666666666667V170.6666666666667H149.3333333333333V213.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333V213.3333333333334H362.6666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="plus-circle-multiple-outline" + unicode="&#xF418;" + horiz-adv-x="512" d=" M341.3333333333333 277.3333333333334H298.6666666666667V213.3333333333334H234.6666666666667V170.6666666666667H298.6666666666667V106.6666666666667H341.3333333333333V170.6666666666667H405.3333333333333V213.3333333333334H341.3333333333333M42.6666666666667 192C42.6666666666667 251.52 77.6533333333333 302.9333333333334 128 326.8266666666667V373.3333333333334C53.3333333333333 346.4533333333334 0 275.4133333333334 0 192S53.3333333333333 37.5466666666666 128 10.6666666666667V57.1733333333334C77.6533333333333 81.0666666666667 42.6666666666667 132.48 42.6666666666667 192M320 384C214.1866666666667 384 128 297.8133333333334 128 192S214.1866666666667 0 320 0S512 86.1866666666667 512 192S425.8133333333334 384 320 384M320 42.6666666666667C237.6533333333334 42.6666666666667 170.6666666666667 109.6533333333334 170.6666666666667 192S237.6533333333334 341.3333333333334 320 341.3333333333334S469.3333333333333 274.3466666666667 469.3333333333333 192S402.3466666666667 42.6666666666667 320 42.6666666666667z" /> + <glyph glyph-name="plus-circle-outline" + unicode="&#xF419;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.92 21.3333333333334 85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667S426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M277.3333333333333 298.6666666666667H234.6666666666667V213.3333333333334H149.3333333333333V170.6666666666667H234.6666666666667V85.3333333333334H277.3333333333333V170.6666666666667H362.6666666666667V213.3333333333334H277.3333333333333V298.6666666666667z" /> + <glyph glyph-name="plus-network" + unicode="&#xF41A;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334V256H277.3333333333333V320H234.6666666666667V256H170.6666666666667V213.3333333333334H234.6666666666667V149.3333333333334H277.3333333333333V213.3333333333334H341.3333333333333M362.6666666666667 384C386.1333333333334 384 405.3333333333333 364.8 405.3333333333333 341.3333333333334V128C405.3333333333333 104.5333333333333 386.1333333333334 85.3333333333334 362.6666666666667 85.3333333333334H277.3333333333333V42.6666666666667H298.6666666666667C310.4 42.6666666666667 320 33.0666666666667 320 21.3333333333334H469.3333333333333V-21.3333333333333H320C320 -33.0666666666667 310.4 -42.6666666666666 298.6666666666667 -42.6666666666666H213.3333333333333C201.6 -42.6666666666666 192 -33.0666666666667 192 -21.3333333333333H42.6666666666667V21.3333333333334H192C192 33.0666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H234.6666666666667V85.3333333333334H149.3333333333333C125.6533333333333 85.3333333333334 106.6666666666667 104.5333333333333 106.6666666666667 128V341.3333333333334C106.6666666666667 364.8 125.8666666666667 384 149.3333333333333 384H362.6666666666667z" /> + <glyph glyph-name="plus-one" + unicode="&#xF41B;" + horiz-adv-x="512" d=" M213.3333333333333 277.3333333333334V192H298.6666666666667V149.3333333333334H213.3333333333333V64H170.6666666666667V149.3333333333334H85.3333333333333V192H170.6666666666667V277.3333333333334H213.3333333333333M309.3333333333333 318.2933333333334L405.3333333333333 341.3333333333334V64H362.6666666666667V290.1333333333334L309.3333333333333 279.4666666666667V318.2933333333334z" /> + <glyph glyph-name="pocket" + unicode="&#xF41C;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192V352C42.6666666666667 381.44 66.56 405.3333333333333 96 405.3333333333333H416C445.44 405.3333333333333 469.3333333333333 381.44 469.3333333333333 352V192M338.7733333333333 272L256 189.2266666666667L173.2266666666666 272.2133333333334C160.64 284.8 140.3733333333333 284.8 128 272.2133333333334C115.4133333333333 259.8400000000001 115.4133333333333 239.5733333333334 128 226.9866666666667L233.1733333333333 121.1733333333334C245.3333333333333 108.8 266.0266666666667 108.8 278.6133333333333 121.1733333333334L384 226.7733333333334C396.5866666666667 239.36 396.5866666666667 259.6266666666667 384 272C371.6266666666667 284.5866666666667 351.36 284.5866666666667 338.7733333333333 272z" /> + <glyph glyph-name="pokeball" + unicode="&#xF41D;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C168.96 362.6666666666667 97.0666666666667 297.6 86.6133333333333 213.3333333333334H173.44C182.8266666666666 250.24 216.32 277.3333333333334 256 277.3333333333334C295.68 277.3333333333334 329.1733333333333 250.24 338.56 213.3333333333334H425.3866666666667C414.9333333333334 297.6 343.04 362.6666666666667 256 362.6666666666667M256 21.3333333333334C343.04 21.3333333333334 414.9333333333333 86.4 425.3866666666667 170.6666666666667H338.56C329.1733333333334 133.76 295.68 106.6666666666667 256 106.6666666666667C216.32 106.6666666666667 182.8266666666667 133.76 173.44 170.6666666666667H86.6133333333333C97.0666666666667 86.4 168.96 21.3333333333334 256 21.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="polaroid" + unicode="&#xF41E;" + horiz-adv-x="512" d=" M128 384H384C407.4666666666667 384 426.6666666666667 364.8 426.6666666666667 341.3333333333334V42.6666666666667C426.6666666666667 19.2 407.4666666666667 0 384 0H128C104.5333333333333 0 85.3333333333333 19.2 85.3333333333333 42.6666666666667V341.3333333333334C85.3333333333333 364.8 104.5333333333333 384 128 384M128 341.3333333333334V85.3333333333334H384V341.3333333333334H128z" /> + <glyph glyph-name="poll" + unicode="&#xF41F;" + horiz-adv-x="512" d=" M64 -21.3333333333333V277.3333333333334H149.3333333333333V-21.3333333333333H64M213.3333333333333 -21.3333333333333V405.3333333333333H298.6666666666667V-21.3333333333333H213.3333333333333M362.6666666666667 -21.3333333333333V149.3333333333334H448V-21.3333333333333H362.6666666666667z" /> + <glyph glyph-name="poll-box" + unicode="&#xF420;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H320V170.6666666666667H362.6666666666667M277.3333333333333 85.3333333333334H234.6666666666667V298.6666666666667H277.3333333333333M192 85.3333333333334H149.3333333333333V234.6666666666667H192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="polymer" + unicode="&#xF421;" + horiz-adv-x="512" d=" M405.3333333333333 362.6666666666667H320L151.4666666666667 93.2266666666667L96 192L192 362.6666666666667H106.6666666666667L10.6666666666667 192L106.6666666666667 21.3333333333334H192L360.32 290.7733333333334L416 192L320 21.3333333333334H405.3333333333333L501.3333333333333 192L405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="pool" + unicode="&#xF606;" + horiz-adv-x="512" d=" M42.6666666666667 128C78.2933333333333 144 113.7066666666667 160 149.3333333333333 167.04V341.3333333333334C149.3333333333333 376.7466666666667 177.92 405.3333333333333 213.3333333333333 405.3333333333333C241.28 405.3333333333333 264.96 387.6266666666667 273.7066666666667 362.6666666666667H213.3333333333333C201.6 362.6666666666667 192 353.0666666666667 192 341.3333333333334V320H298.6666666666667V341.3333333333334C298.6666666666667 376.7466666666667 327.2533333333334 405.3333333333333 362.6666666666667 405.3333333333333C390.6133333333333 405.3333333333333 414.2933333333334 387.6266666666667 423.04 362.6666666666667H362.6666666666667C350.9333333333333 362.6666666666667 341.3333333333333 353.0666666666667 341.3333333333333 341.3333333333334V129.28C384 136.1066666666667 426.6666666666667 170.6666666666667 469.3333333333333 170.6666666666667V128C421.9733333333334 128 374.6133333333333 85.3333333333334 327.04 85.3333333333334C279.68 85.3333333333334 232.32 128 184.96 128C137.3866666666667 128 90.0266666666667 106.6666666666667 42.6666666666667 85.3333333333334V128M298.6666666666667 277.3333333333334H192V234.6666666666667H298.6666666666667V277.3333333333334M298.6666666666667 192H192V170.6666666666667C227.6266666666667 167.2533333333333 263.04 142.72 298.6666666666667 132.48V192M42.6666666666667 42.6666666666667C90.0266666666667 64 137.3866666666667 85.3333333333334 184.96 85.3333333333334C232.32 85.3333333333334 279.68 42.6666666666667 327.04 42.6666666666667C374.6133333333333 42.6666666666667 421.9733333333334 85.3333333333334 469.3333333333333 85.3333333333334V42.6666666666667C421.9733333333334 42.6666666666667 374.6133333333333 0 327.04 0C279.68 0 232.32 42.6666666666667 184.96 42.6666666666667C137.3866666666667 42.6666666666667 90.0266666666667 21.3333333333334 42.6666666666667 0V42.6666666666667z" /> + <glyph glyph-name="popcorn" + unicode="&#xF422;" + horiz-adv-x="512" d=" M149.3333333333333 -21.3333333333333H101.3333333333333S85.3333333333333 -21.3333333333333 81.28 7.4666666666667L43.52 366.7200000000001L42.6666666666667 373.3333333333334C42.6666666666667 391.04 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333S128 391.04 128 373.3333333333334C128 391.04 147.2 405.3333333333333 170.6666666666667 405.3333333333333S213.3333333333333 391.04 213.3333333333333 373.3333333333334C213.3333333333333 391.04 232.5333333333334 405.3333333333333 256 405.3333333333333C279.2533333333334 405.3333333333333 298.6666666666667 391.2533333333334 298.6666666666667 373.3333333333334C298.6666666666667 391.04 317.8666666666667 405.3333333333333 341.3333333333333 405.3333333333333S384 391.04 384 373.3333333333334C384 391.04 403.2 405.3333333333333 426.6666666666667 405.3333333333333S469.3333333333333 391.04 469.3333333333333 373.3333333333334L468.48 366.7200000000001L430.7200000000001 7.4666666666667C426.6666666666667 -21.3333333333333 410.6666666666667 -21.3333333333333 410.6666666666667 -21.3333333333333H149.3333333333333M380.8 342.8266666666667C374.4 354.3466666666667 359.2533333333334 362.6666666666667 341.3333333333333 362.6666666666667C324.0533333333333 362.6666666666667 306.3466666666667 354.9866666666667 298.6666666666667 344.1066666666667L293.9733333333333 21.3333333333334H355.4133333333333L380.8 342.8266666666667M213.3333333333333 344.1066666666667C205.6533333333333 354.9866666666667 187.9466666666667 362.6666666666667 170.6666666666667 362.6666666666667C152.7466666666667 362.6666666666667 137.6 354.3466666666667 131.2 342.8266666666667L156.5866666666667 21.3333333333334H218.0266666666667L213.3333333333333 344.1066666666667z" /> + <glyph glyph-name="pot" + unicode="&#xF65A;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0H149.3333333333333C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V170.6666666666667H64V234.6666666666667H448V170.6666666666667H405.3333333333333V42.6666666666667M128 320H170.6666666666667V277.3333333333334H128V320M234.6666666666667 320H277.3333333333333V277.3333333333334H234.6666666666667V320M341.3333333333333 320H384V277.3333333333334H341.3333333333333V320M384 384H426.6666666666667V341.3333333333334H384V384M277.3333333333333 384H320V341.3333333333334H277.3333333333333V384M170.6666666666667 384H213.3333333333333V341.3333333333334H170.6666666666667V384z" /> + <glyph glyph-name="pot-mix" + unicode="&#xF65B;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667C405.3333333333333 19.2 386.1333333333334 0 362.6666666666667 0H149.3333333333333C125.8666666666667 0 106.6666666666667 19.2 106.6666666666667 42.6666666666667V170.6666666666667H64V234.6666666666667H298.6666666666667L384 382.5066666666667L420.9066666666667 361.1733333333334L347.9466666666666 234.6666666666667H448V170.6666666666667H405.3333333333333V42.6666666666667z" /> + <glyph glyph-name="pound" + unicode="&#xF423;" + horiz-adv-x="512" d=" M115.4133333333333 0L130.56 85.3333333333334H45.2266666666667L52.6933333333333 128H138.0266666666667L160.64 256H75.3066666666667L82.7733333333334 298.6666666666667H168.1066666666667L183.2533333333333 384H225.92L210.7733333333333 298.6666666666667H338.7733333333333L353.92 384H396.5866666666667L381.44 298.6666666666667H466.7733333333333L459.3066666666666 256H373.9733333333333L351.36 128H436.6933333333333L429.2266666666666 85.3333333333334H343.8933333333333L328.7466666666666 0H286.08L301.2266666666666 85.3333333333334H173.2266666666666L158.0799999999999 0H115.4133333333333M203.3066666666667 256L180.6933333333333 128H308.6933333333333L331.3066666666666 256H203.3066666666667z" /> + <glyph glyph-name="pound-box" + unicode="&#xF424;" + horiz-adv-x="512" d=" M64 341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334M149.3333333333333 64H192L199.4666666666667 106.6666666666667H284.8L277.3333333333333 64H320L327.4666666666667 106.6666666666667H370.1333333333334L377.8133333333334 149.3333333333334H335.1466666666667L350.08 234.6666666666667H392.7466666666667L400.2133333333334 277.3333333333334H357.5466666666667L365.2266666666667 320H322.56L314.88 277.3333333333334H229.5466666666667L237.2266666666667 320H194.56L186.88 277.3333333333334H144.2133333333334L136.7466666666667 234.6666666666667H179.4133333333334L164.48 149.3333333333334H121.8133333333334L114.1333333333334 106.6666666666667H156.8L149.3333333333333 64M222.08 234.6666666666667H307.4133333333333L292.48 149.3333333333334H207.1466666666667L222.08 234.6666666666667z" /> + <glyph glyph-name="power" + unicode="&#xF425;" + horiz-adv-x="512" d=" M353.28 331.9466666666667L322.3466666666667 301.0133333333333C359.2533333333334 278.6133333333334 384 238.2933333333334 384 192C384 121.3866666666667 326.6133333333334 64 256 64S128 121.3866666666667 128 192C128 238.2933333333334 152.7466666666667 278.6133333333334 189.44 301.2266666666667L158.72 331.9466666666667C114.3466666666667 301.2266666666667 85.3333333333333 250.0266666666667 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334S426.6666666666667 97.7066666666667 426.6666666666667 192C426.6666666666667 250.0266666666667 397.6533333333333 301.2266666666667 353.28 331.9466666666667M277.3333333333333 384H234.6666666666667V170.6666666666667H277.3333333333333" /> + <glyph glyph-name="power-settings" + unicode="&#xF426;" + horiz-adv-x="512" d=" M320 -64H362.6666666666667V-21.3333333333333H320M353.28 353.28L322.3466666666667 322.3466666666667C359.2533333333334 299.9466666666667 384 259.6266666666667 384 213.3333333333334C384 142.72 326.6133333333334 85.3333333333334 256 85.3333333333334S128 142.72 128 213.3333333333334C128 259.6266666666667 152.7466666666667 299.9466666666667 189.44 322.56L158.72 353.28C114.3466666666667 322.56 85.3333333333333 271.36 85.3333333333333 213.3333333333334C85.3333333333333 119.04 161.7066666666667 42.6666666666667 256 42.6666666666667S426.6666666666667 119.04 426.6666666666667 213.3333333333334C426.6666666666667 271.36 397.6533333333333 322.56 353.28 353.28M277.3333333333333 405.3333333333333H234.6666666666667V192H277.3333333333333M234.6666666666667 -64H277.3333333333333V-21.3333333333333H234.6666666666667M149.3333333333333 -64H192V-21.3333333333333H149.3333333333333V-64z" /> + <glyph glyph-name="power-socket" + unicode="&#xF427;" + horiz-adv-x="512" d=" M320 128H362.6666666666667V213.3333333333334H320M149.3333333333333 128H192V213.3333333333334H149.3333333333333M234.6666666666667 170.6666666666667H277.3333333333333V256H234.6666666666667M188.3733333333333 298.6666666666667H324.2666666666667L405.3333333333333 217.6V85.3333333333334H106.6666666666667V217.6M170.6666666666667 341.3333333333334L64 234.6666666666667V42.6666666666667H448V234.6666666666667L341.3333333333333 341.3333333333334H170.6666666666667z" /> + <glyph glyph-name="presentation" + unicode="&#xF428;" + horiz-adv-x="512" d=" M42.6666666666667 384H213.3333333333333C213.3333333333333 407.4666666666667 232.5333333333334 426.6666666666667 256 426.6666666666667S298.6666666666667 407.4666666666667 298.6666666666667 384H469.3333333333333V341.3333333333334H448V106.6666666666667H325.3333333333333L362.6666666666667 -21.3333333333333H320L282.6666666666667 106.6666666666667H229.3333333333333L192 -21.3333333333333H149.3333333333333L186.6666666666667 106.6666666666667H64V341.3333333333334H42.6666666666667V384M106.6666666666667 341.3333333333334V149.3333333333334H405.3333333333333V341.3333333333334H106.6666666666667z" /> + <glyph glyph-name="presentation-play" + unicode="&#xF429;" + horiz-adv-x="512" d=" M42.6666666666667 384H213.3333333333333C213.3333333333333 407.4666666666667 232.5333333333334 426.6666666666667 256 426.6666666666667S298.6666666666667 407.4666666666667 298.6666666666667 384H469.3333333333333V341.3333333333334H448V106.6666666666667H325.3333333333333L362.6666666666667 -21.3333333333333H320L282.6666666666667 106.6666666666667H229.3333333333333L192 -21.3333333333333H149.3333333333333L186.6666666666667 106.6666666666667H64V341.3333333333334H42.6666666666667V384M106.6666666666667 341.3333333333334V149.3333333333334H405.3333333333333V341.3333333333334H106.6666666666667M252.8 195.2C250.88 193.28 248.32 192 245.3333333333333 192C239.36 192 234.6666666666667 196.6933333333334 234.6666666666667 202.6666666666667V288C234.6666666666667 293.9733333333334 239.36 298.6666666666667 245.3333333333333 298.6666666666667C248.32 298.6666666666667 250.88 297.3866666666667 252.8 295.4666666666667L282.6666666666667 265.8133333333334C289.4933333333334 258.9866666666667 296.32 252.16 296.32 245.3333333333334C296.32 238.5066666666667 289.4933333333334 231.68 282.6666666666667 224.8533333333333L252.8 195.2z" /> + <glyph glyph-name="printer" + unicode="&#xF42A;" + horiz-adv-x="512" d=" M384 384H128V298.6666666666667H384M405.3333333333333 192C393.6 192 384 201.6 384 213.3333333333334S393.6 234.6666666666667 405.3333333333333 234.6666666666667S426.6666666666667 225.0666666666667 426.6666666666667 213.3333333333334S417.0666666666667 192 405.3333333333333 192M341.3333333333333 42.6666666666667H170.6666666666667V149.3333333333334H341.3333333333333M405.3333333333333 277.3333333333334H106.6666666666667C71.2533333333333 277.3333333333334 42.6666666666667 248.7466666666667 42.6666666666667 213.3333333333334V85.3333333333334H128V0H384V85.3333333333334H469.3333333333333V213.3333333333334C469.3333333333333 248.7466666666667 440.7466666666667 277.3333333333334 405.3333333333333 277.3333333333334z" /> + <glyph glyph-name="printer-3d" + unicode="&#xF42B;" + horiz-adv-x="512" d=" M405.3333333333333 320C417.0666666666667 320 426.6666666666667 329.6 426.6666666666667 341.3333333333334S417.0666666666667 362.6666666666667 405.3333333333333 362.6666666666667S384 353.0666666666667 384 341.3333333333334S393.6 320 405.3333333333333 320M405.3333333333333 405.3333333333333C440.7466666666667 405.3333333333333 469.3333333333333 376.7466666666667 469.3333333333333 341.3333333333334V213.3333333333334H384V298.6666666666667H128V213.3333333333334H42.6666666666667V341.3333333333334C42.6666666666667 376.7466666666667 71.2533333333333 405.3333333333333 106.6666666666667 405.3333333333333H405.3333333333333M384 58.6666666666667C384 50.5600000000001 379.52 43.52 372.6933333333333 39.8933333333334L268.16 -17.4933333333333C264.5333333333333 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L139.3066666666666 39.8933333333334C132.4799999999999 43.5200000000001 128 50.5600000000001 128 58.6666666666667V170.6666666666667C128 178.7733333333334 132.4799999999999 185.8133333333334 139.3066666666666 189.4400000000001L243.84 241.4933333333334C247.2533333333333 244.0533333333334 251.5199999999999 245.3333333333334 256 245.3333333333334C260.48 245.3333333333334 264.5333333333333 244.0533333333334 268.16 241.4933333333334L372.6933333333333 189.4400000000001C379.52 185.8133333333334 384 178.7733333333334 384 170.6666666666667V58.6666666666667M256 199.4666666666667L192.8533333333333 170.6666666666667L256 136.5333333333334L319.1466666666667 170.6666666666667L256 199.4666666666667M170.6666666666667 71.2533333333333L234.6666666666667 36.48V99.6266666666667L170.6666666666667 134.1866666666667V71.2533333333335M341.3333333333333 71.2533333333335V134.1866666666667L277.3333333333333 99.6266666666667V36.48L341.3333333333333 71.2533333333333z" /> + <glyph glyph-name="printer-alert" + unicode="&#xF42C;" + horiz-adv-x="512" d=" M298.6666666666667 362.6666666666667V277.3333333333334H128V362.6666666666667H298.6666666666667M320 170.6666666666667C331.7333333333334 170.6666666666667 341.3333333333333 180.2666666666667 341.3333333333333 192S331.7333333333334 213.3333333333334 320 213.3333333333334S298.6666666666667 203.7333333333334 298.6666666666667 192S308.2666666666667 170.6666666666667 320 170.6666666666667M277.3333333333333 42.6666666666667V128H149.3333333333333V42.6666666666667H277.3333333333333M320 256C355.4133333333333 256 384 227.4133333333334 384 192V85.3333333333334H320V0H106.6666666666667V85.3333333333334H42.6666666666667V192C42.6666666666667 227.4133333333334 71.2533333333333 256 106.6666666666667 256H320M469.3333333333333 298.6666666666667V192H426.6666666666667V298.6666666666667H469.3333333333333M469.3333333333333 149.3333333333334V106.6666666666667H426.6666666666667V149.3333333333334H469.3333333333333z" /> + <glyph glyph-name="priority-high" + unicode="&#xF603;" + horiz-adv-x="512" d=" M298.6666666666667 42.6666666666667H469.3333333333333V85.3333333333334H298.6666666666667V42.6666666666667M298.6666666666667 160H469.3333333333333V202.6666666666667H298.6666666666667V160M298.6666666666667 277.3333333333334H469.3333333333333V320H298.6666666666667V277.3333333333334M42.6666666666667 181.3333333333334C42.6666666666667 257.7066666666667 104.96 320 181.3333333333333 320H192V362.6666666666667L256 298.6666666666667L192 234.6666666666667V277.3333333333334H181.3333333333333C128 277.3333333333334 85.3333333333333 234.6666666666667 85.3333333333333 181.3333333333334S128 85.3333333333334 181.3333333333333 85.3333333333334H256V42.6666666666667H181.3333333333333C104.96 42.6666666666667 42.6666666666667 104.96 42.6666666666667 181.3333333333334z" /> + <glyph glyph-name="priority-low" + unicode="&#xF604;" + horiz-adv-x="512" d=" M298.6666666666667 341.3333333333334H469.3333333333333V298.6666666666667H298.6666666666667V341.3333333333334M298.6666666666667 224H469.3333333333333V181.3333333333334H298.6666666666667V224M298.6666666666667 106.6666666666667H469.3333333333333V64H298.6666666666667V106.6666666666667M42.6666666666667 202.6666666666667C42.6666666666667 126.2933333333334 104.96 64 181.3333333333333 64H192V21.3333333333334L256 85.3333333333334L192 149.3333333333334V106.6666666666667H181.3333333333333C128 106.6666666666667 85.3333333333333 149.3333333333334 85.3333333333333 202.6666666666667S128 298.6666666666667 181.3333333333333 298.6666666666667H256V341.3333333333334H181.3333333333333C104.96 341.3333333333334 42.6666666666667 279.04 42.6666666666667 202.6666666666667z" /> + <glyph glyph-name="professional-hexagon" + unicode="&#xF42D;" + horiz-adv-x="512" d=" M448 96C448 87.8933333333334 443.52 80.8533333333334 436.6933333333333 77.2266666666667L268.16 -17.4933333333333C264.7466666666666 -20.0533333333333 260.48 -21.3333333333333 256 -21.3333333333333C251.5199999999999 -21.3333333333333 247.2533333333333 -20.0533333333333 243.84 -17.4933333333333L75.3066666666666 77.2266666666667C68.48 80.8533333333334 63.9999999999999 87.8933333333334 63.9999999999999 96V288C63.9999999999999 296.1066666666667 68.4799999999999 303.1466666666667 75.3066666666666 306.7733333333333L243.84 401.4933333333334C247.2533333333333 404.0533333333334 251.5199999999999 405.3333333333334 256 405.3333333333334C260.48 405.3333333333334 264.7466666666666 404.0533333333334 268.16 401.4933333333334L436.6933333333333 306.7733333333333C443.52 303.1466666666667 448 296.1066666666667 448 288V96M106.6666666666667 256V128H133.3333333333333V170.6666666666667H149.3333333333333C172.8 170.6666666666667 192 189.8666666666667 192 213.3333333333334S172.8 256 149.3333333333333 256H106.6666666666667M133.3333333333333 192V234.6666666666667H144C155.7333333333333 234.6666666666667 165.3333333333333 225.0666666666667 165.3333333333333 213.3333333333334S155.7333333333333 192 144 192H133.3333333333333M208 256V128H234.6666666666667V170.6666666666667H250.6666666666667L264.7466666666667 128H292.9066666666667L276.0533333333334 178.9866666666667C286.5066666666667 186.6666666666667 293.3333333333334 199.2533333333333 293.3333333333334 213.3333333333334C293.3333333333334 236.8 274.1333333333334 256 250.6666666666667 256H208M234.6666666666667 192V234.6666666666667H245.3333333333333C257.0666666666667 234.6666666666667 266.6666666666667 225.0666666666667 266.6666666666667 213.3333333333334S257.0666666666667 192 245.3333333333333 192H234.6666666666667M362.6666666666667 256C333.2266666666667 256 309.3333333333333 227.4133333333334 309.3333333333333 192S333.2266666666667 128 362.6666666666667 128S416 156.5866666666667 416 192S392.1066666666667 256 362.6666666666667 256M362.6666666666667 229.3333333333334C378.88 229.3333333333334 392.1066666666667 212.6933333333334 392.1066666666667 192S378.88 154.6666666666667 362.6666666666667 154.6666666666667C346.4533333333333 154.6666666666667 333.44 171.3066666666667 333.44 192S346.4533333333333 229.3333333333334 362.6666666666667 229.3333333333334z" /> + <glyph glyph-name="projector" + unicode="&#xF42E;" + horiz-adv-x="512" d=" M341.3333333333333 320C317.2266666666667 320 293.76 312.5333333333334 273.92 298.6666666666667H85.3333333333333C61.6533333333333 298.6666666666667 42.6666666666667 279.68 42.6666666666667 256V128C42.6666666666667 104.3200000000001 61.6533333333333 85.3333333333334 85.3333333333333 85.3333333333334H106.6666666666667V64C106.6666666666667 52.2666666666667 116.2666666666667 42.6666666666667 128 42.6666666666667H170.6666666666667C182.4 42.6666666666667 192 52.2666666666667 192 64V85.3333333333334H320V64C320 52.2666666666667 329.6 42.6666666666667 341.3333333333333 42.6666666666667H384C395.7333333333334 42.6666666666667 405.3333333333333 52.2666666666667 405.3333333333333 64V85.3333333333334H426.6666666666667C450.3466666666667 85.3333333333334 469.3333333333333 104.3200000000001 469.3333333333333 128V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H408.5333333333333C388.9066666666666 312.5333333333334 365.44 320 341.3333333333333 320M341.3333333333333 288C382.5066666666667 288 416 254.5066666666667 416 213.3333333333334S382.5066666666667 138.6666666666667 341.3333333333333 138.6666666666667S266.6666666666667 172.16 266.6666666666667 213.3333333333334S300.16 288 341.3333333333333 288M85.3333333333333 256H170.6666666666667V234.6666666666667H85.3333333333333V256M341.3333333333333 256C317.8666666666667 256 298.6666666666667 236.8 298.6666666666667 213.3333333333334S317.8666666666667 170.6666666666667 341.3333333333333 170.6666666666667S384 189.8666666666667 384 213.3333333333334S364.8 256 341.3333333333333 256M85.3333333333333 213.3333333333334H170.6666666666667V192H85.3333333333333V213.3333333333334M85.3333333333333 170.6666666666667H170.6666666666667V149.3333333333334H85.3333333333333V170.6666666666667z" /> + <glyph glyph-name="projector-screen" + unicode="&#xF42F;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C73.6 405.3333333333333 64 395.7333333333334 64 384V362.6666666666667C64 350.9333333333334 73.6 341.3333333333334 85.3333333333333 341.3333333333334H106.6666666666667V149.3333333333334H234.6666666666667V94.08L144.8533333333333 4.48L175.1466666666667 -25.8133333333333L234.6666666666667 33.92V-21.3333333333333H277.3333333333333V33.92L336.8533333333333 -25.8133333333333L367.1466666666667 4.48L277.3333333333333 94.08V149.3333333333334H405.3333333333333V341.3333333333334H426.6666666666667C438.4 341.3333333333334 448 350.9333333333334 448 362.6666666666667V384C448 395.7333333333334 438.4 405.3333333333333 426.6666666666667 405.3333333333333H85.3333333333333z" /> + <glyph glyph-name="pulse" + unicode="&#xF430;" + horiz-adv-x="512" d=" M64 170.6666666666667H123.52L215.4666666666667 345.8133333333334L240.64 154.6666666666667L309.3333333333333 241.92L380.3733333333333 170.6666666666667H448V128H362.6666666666667L312.96 177.7066666666667L211.6266666666667 48.4266666666667L190.72 206.72L149.3333333333333 128H64V170.6666666666667z" /> + <glyph glyph-name="puzzle" + unicode="&#xF431;" + horiz-adv-x="512" d=" M437.3333333333333 213.3333333333334H405.3333333333333V298.6666666666667C405.3333333333333 322.3466666666667 386.1333333333334 341.3333333333334 362.6666666666667 341.3333333333334H277.3333333333333V373.3333333333334C277.3333333333333 402.7733333333333 253.44 426.6666666666667 224 426.6666666666667S170.6666666666667 402.7733333333333 170.6666666666667 373.3333333333334V341.3333333333334H85.3333333333333C61.8666666666667 341.3333333333334 42.6666666666667 322.1333333333334 42.6666666666667 298.6666666666667V217.6H74.6666666666667C106.6666666666667 217.6 132.2666666666667 192 132.2666666666667 160C132.2666666666667 128 106.6666666666667 102.4 74.6666666666667 102.4H42.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H166.4V10.6666666666667C166.4 42.6666666666667 192 68.2666666666667 224 68.2666666666667C256 68.2666666666667 281.6 42.6666666666667 281.6 10.6666666666667V-21.3333333333333H362.6666666666667C386.1333333333334 -21.3333333333333 405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334V106.6666666666667H437.3333333333333C466.7733333333333 106.6666666666667 490.6666666666666 130.5600000000001 490.6666666666666 160S466.7733333333333 213.3333333333334 437.3333333333333 213.3333333333334z" /> + <glyph glyph-name="qqchat" + unicode="&#xF605;" + horiz-adv-x="512" d=" M67.84 159.1466666666667C80.2133333333333 188.5866666666667 97.4933333333333 210.3466666666667 110.2933333333333 215.0400000000001C110.08 232.1066666666668 113.28 242.7733333333334 118.6133333333333 251.3066666666667C118.6133333333333 251.9466666666667 117.3333333333333 258.9866666666667 122.0266666666667 267.7333333333334C125.2266666666667 344.5333333333334 175.1466666666667 405.3333333333333 256 405.3333333333333S386.7733333333333 344.5333333333334 389.9733333333334 267.7333333333334C394.6666666666667 258.9866666666667 393.3866666666667 251.9466666666667 393.3866666666667 251.3066666666667C398.7200000000001 242.7733333333334 401.92 232.1066666666667 401.7066666666667 215.0400000000001C414.5066666666667 210.3466666666667 431.7866666666667 188.5866666666667 444.16 158.9333333333334C460.16 121.3866666666668 462.72 85.3333333333334 449.92 78.9333333333334C441.1733333333333 74.6666666666667 427.3066666666667 85.3333333333334 414.2933333333334 104.1066666666667C409.1733333333334 83.2000000000001 396.3733333333334 64.0000000000001 378.24 48.8533333333334C397.44 41.8133333333334 409.8133333333334 30.2933333333334 409.8133333333334 17.2800000000001C409.8133333333334 -4.0533333333333 376.1066666666667 -21.3333333333333 334.7200000000001 -21.3333333333333C297.1733333333334 -21.3333333333333 266.6666666666667 -7.2533333333332 260.48 10.6666666666667H251.52C245.3333333333334 -7.2533333333332 214.8266666666667 -21.3333333333333 177.28 -21.3333333333333C135.8933333333334 -21.3333333333333 102.1866666666667 -4.0533333333333 102.1866666666667 17.2800000000001C102.1866666666667 30.2933333333334 114.56 41.8133333333334 133.76 48.8533333333334C115.6266666666667 64.0000000000001 102.8266666666667 83.2000000000001 97.7066666666667 104.1066666666667C84.6933333333334 85.3333333333334 70.8266666666667 74.6666666666667 62.08 78.9333333333334C49.28 85.3333333333334 51.84 121.3866666666668 67.84 159.1466666666668z" /> + <glyph glyph-name="qrcode" + unicode="&#xF432;" + horiz-adv-x="512" d=" M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M234.6666666666667 341.3333333333334H277.3333333333333V256H234.6666666666667V341.3333333333334M192 213.3333333333334H277.3333333333333V128H234.6666666666667V170.6666666666667H192V213.3333333333334M320 213.3333333333334H362.6666666666667V170.6666666666667H405.3333333333333V213.3333333333334H448V170.6666666666667H405.3333333333333V128H448V42.6666666666667H405.3333333333333V0H362.6666666666667V42.6666666666667H277.3333333333333V0H234.6666666666667V85.3333333333334H320V128H362.6666666666667V170.6666666666667H320V213.3333333333334M405.3333333333333 42.6666666666667V128H362.6666666666667V42.6666666666667H405.3333333333333M320 384H448V256H320V384M362.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H362.6666666666667M64 384H192V256H64V384M106.6666666666667 341.3333333333334V298.6666666666667H149.3333333333333V341.3333333333334H106.6666666666667M64 128H192V0H64V128M106.6666666666667 85.3333333333334V42.6666666666667H149.3333333333333V85.3333333333334H106.6666666666667z" /> + <glyph glyph-name="qrcode-scan" + unicode="&#xF433;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H213.3333333333333V234.6666666666667H85.3333333333333V362.6666666666667M426.6666666666667 362.6666666666667V234.6666666666667H298.6666666666667V362.6666666666667H426.6666666666667M298.6666666666667 128H341.3333333333333V170.6666666666667H298.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H384V213.3333333333334H426.6666666666667V170.6666666666667H384V128H426.6666666666667V64H384V21.3333333333334H341.3333333333333V64H277.3333333333333V21.3333333333334H234.6666666666667V106.6666666666667H298.6666666666667V128M341.3333333333333 128V64H384V128H341.3333333333333M85.3333333333333 21.3333333333334V149.3333333333334H213.3333333333333V21.3333333333334H85.3333333333333M128 320V277.3333333333334H170.6666666666667V320H128M341.3333333333333 320V277.3333333333334H384V320H341.3333333333333M128 106.6666666666667V64H170.6666666666667V106.6666666666667H128M85.3333333333333 213.3333333333334H128V170.6666666666667H85.3333333333333V213.3333333333334M192 213.3333333333334H277.3333333333333V128H234.6666666666667V170.6666666666667H192V213.3333333333334M234.6666666666667 320H277.3333333333333V234.6666666666667H234.6666666666667V320M42.6666666666667 405.3333333333333V320H0V405.3333333333333C0 428.8 19.2 448 42.6666666666667 448H128V405.3333333333333H42.6666666666667M469.3333333333333 448C492.8 448 512 428.8 512 405.3333333333333V320H469.3333333333333V405.3333333333333H384V448H469.3333333333333M42.6666666666667 64V-21.3333333333333H128V-64H42.6666666666667C19.2 -64 0 -44.8 0 -21.3333333333333V64H42.6666666666667M469.3333333333333 -21.3333333333333V64H512V-21.3333333333333C512 -44.8 492.8 -64 469.3333333333333 -64H384V-21.3333333333333H469.3333333333333z" /> + <glyph glyph-name="quadcopter" + unicode="&#xF434;" + horiz-adv-x="512" d=" M117.3333333333333 426.6666666666667C170.6666666666667 426.6666666666667 213.3333333333333 384 213.3333333333333 330.6666666666667C213.3333333333333 311.8933333333333 208 294.4 198.6133333333334 279.4666666666667L200.7466666666667 277.3333333333334H311.2533333333334L313.3866666666667 279.4666666666667C304 294.4 298.6666666666667 311.8933333333333 298.6666666666667 330.6666666666667C298.6666666666667 384 341.3333333333333 426.6666666666667 394.6666666666667 426.6666666666667S490.6666666666666 384 490.6666666666666 330.6666666666667S448 234.6666666666667 394.6666666666667 234.6666666666667C375.8933333333333 234.6666666666667 358.4 240 343.4666666666667 249.3866666666667L320 225.92V158.0800000000001L343.4666666666667 134.6133333333334C358.4 144 375.8933333333333 149.3333333333334 394.6666666666667 149.3333333333334C448 149.3333333333334 490.6666666666666 106.6666666666667 490.6666666666666 53.3333333333334S448 -42.6666666666666 394.6666666666667 -42.6666666666666S298.6666666666667 0 298.6666666666667 53.3333333333334C298.6666666666667 72.1066666666667 304 89.6 313.3866666666667 104.5333333333333L311.2533333333334 106.6666666666667H200.7466666666667L198.6133333333334 104.5333333333333C208 89.6 213.3333333333333 72.1066666666667 213.3333333333333 53.3333333333334C213.3333333333333 0 170.6666666666667 -42.6666666666666 117.3333333333333 -42.6666666666666S21.3333333333333 0 21.3333333333333 53.3333333333334S64 149.3333333333334 117.3333333333333 149.3333333333334C136.1066666666667 149.3333333333334 153.6 144 168.5333333333333 134.6133333333334L192 158.0800000000001V225.92L168.5333333333333 249.3866666666667C153.6 240 136.1066666666667 234.6666666666667 117.3333333333333 234.6666666666667C64 234.6666666666667 21.3333333333333 277.3333333333334 21.3333333333333 330.6666666666667S64 426.6666666666667 117.3333333333333 426.6666666666667M117.3333333333333 384C87.8933333333333 384 64 360.1066666666667 64 330.6666666666667S87.8933333333333 277.3333333333334 117.3333333333333 277.3333333333334S170.6666666666667 301.2266666666667 170.6666666666667 330.6666666666667S146.7733333333333 384 117.3333333333333 384M117.3333333333333 106.6666666666667C87.8933333333333 106.6666666666667 64 82.7733333333333 64 53.3333333333334S87.8933333333333 0 117.3333333333333 0S170.6666666666667 23.8933333333334 170.6666666666667 53.3333333333334S146.7733333333333 106.6666666666667 117.3333333333333 106.6666666666667M394.6666666666667 384C365.2266666666667 384 341.3333333333333 360.1066666666667 341.3333333333333 330.6666666666667S365.2266666666667 277.3333333333334 394.6666666666667 277.3333333333334S448 301.2266666666667 448 330.6666666666667S424.1066666666667 384 394.6666666666667 384M394.6666666666667 106.6666666666667C365.2266666666667 106.6666666666667 341.3333333333333 82.7733333333333 341.3333333333333 53.3333333333334S365.2266666666667 0 394.6666666666667 0S448 23.8933333333334 448 53.3333333333334S424.1066666666667 106.6666666666667 394.6666666666667 106.6666666666667M83.4133333333333 80L107.52 65.92C110.2933333333333 68.0533333333334 113.7066666666667 69.3333333333334 117.3333333333333 69.3333333333334C126.08 69.3333333333334 133.3333333333333 62.08 133.3333333333333 53.3333333333334L133.12 51.2L157.2266666666667 37.3333333333334L151.2533333333333 26.6666666666667L127.1466666666667 40.7466666666667C124.3733333333333 38.6133333333333 120.96 37.3333333333334 117.3333333333333 37.3333333333334C108.5866666666667 37.3333333333334 101.3333333333333 44.5866666666667 101.3333333333333 53.3333333333334L101.5466666666667 55.4666666666667L77.44 69.3333333333334L83.4133333333333 80M77.44 314.6666666666667L101.5466666666667 328.5333333333334L101.3333333333333 330.6666666666667C101.3333333333333 339.4133333333334 108.5866666666667 346.6666666666667 117.3333333333333 346.6666666666667C120.96 346.6666666666667 124.3733333333333 345.3866666666667 127.1466666666667 343.2533333333334L151.2533333333333 357.3333333333334L157.2266666666667 346.6666666666667L133.12 332.8L133.3333333333333 330.6666666666667C133.3333333333333 321.92 126.08 314.6666666666667 117.3333333333333 314.6666666666667C113.7066666666667 314.6666666666667 110.2933333333333 315.9466666666667 107.52 318.0800000000001L83.4133333333333 304L77.44 314.6666666666667M360.7466666666667 357.3333333333334L384.8533333333333 343.2533333333334C387.6266666666666 345.3866666666667 391.04 346.6666666666667 394.6666666666667 346.6666666666667C403.4133333333333 346.6666666666667 410.6666666666667 339.4133333333334 410.6666666666667 330.6666666666667L410.4533333333333 328.5333333333334L434.56 314.6666666666667L428.5866666666666 304L404.4799999999999 318.0800000000001C401.7066666666666 315.9466666666667 398.2933333333333 314.6666666666667 394.6666666666666 314.6666666666667C385.9199999999999 314.6666666666667 378.6666666666666 321.92 378.6666666666666 330.6666666666667L378.88 332.8L354.7733333333333 346.6666666666667L360.7466666666667 357.3333333333334M354.7733333333333 37.3333333333334L378.6666666666667 53.3333333333334C378.6666666666667 62.08 385.92 69.3333333333334 394.6666666666667 69.3333333333334C398.2933333333334 69.3333333333334 401.7066666666666 68.0533333333334 404.48 65.92L428.5866666666667 80L434.56 69.3333333333334L410.6666666666667 53.3333333333334C410.6666666666667 44.5866666666667 403.4133333333333 37.3333333333334 394.6666666666667 37.3333333333334C391.04 37.3333333333334 387.6266666666667 38.6133333333333 384.8533333333333 40.7466666666667L360.7466666666667 26.6666666666667L354.7733333333333 37.3333333333334z" /> + <glyph glyph-name="quality-high" + unicode="&#xF435;" + horiz-adv-x="512" d=" M309.3333333333333 160H352V224H309.3333333333333M384 149.3333333333334C384 137.6 374.4 128 362.6666666666667 128H346.6666666666667V96H314.6666666666667V128H298.6666666666667C286.9333333333333 128 277.3333333333333 137.6 277.3333333333333 149.3333333333334V234.6666666666667C277.3333333333333 246.4000000000001 286.9333333333333 256 298.6666666666667 256H362.6666666666667C374.4 256 384 246.4000000000001 384 234.6666666666667M234.6666666666667 128H202.6666666666667V170.6666666666667H160V128H128V256H160V202.6666666666667H202.6666666666667V256H234.6666666666667M405.3333333333333 362.6666666666667H106.6666666666667C82.9866666666667 362.6666666666667 64 343.68 64 320V64C64 40.5333333333333 83.2 21.3333333333334 106.6666666666667 21.3333333333334H405.3333333333333C428.8 21.3333333333334 448 40.5333333333333 448 64V320C448 343.68 428.8 362.6666666666667 405.3333333333333 362.6666666666667z" /> + <glyph glyph-name="quicktime" + unicode="&#xF436;" + horiz-adv-x="512" d=" M256 384C362.0266666666667 384 448 298.0266666666667 448 192C448 154.4533333333334 437.3333333333333 119.4666666666667 418.56 89.8133333333334L448 60.3733333333333V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H387.84L358.1866666666666 29.44C328.7466666666667 10.6666666666667 293.5466666666666 0 256 0C149.9733333333333 0 64 85.9733333333334 64 192S149.9733333333333 384 256 384M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334C269.8666666666667 85.3333333333334 282.88 87.8933333333334 295.04 92.8000000000001L233.6 154.24C216.96 170.6666666666667 216.96 197.9733333333334 233.6 214.6133333333334C250.24 231.2533333333334 277.3333333333333 231.2533333333334 293.9733333333333 214.6133333333334L355.4133333333333 153.1733333333334C360.1066666666667 165.12 362.6666666666667 178.3466666666667 362.6666666666667 192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="radar" + unicode="&#xF437;" + horiz-adv-x="512" d=" M406.8266666666667 342.8266666666667L376.7466666666667 312.7466666666667C407.4666666666667 281.8133333333334 426.6666666666667 239.1466666666667 426.6666666666667 192C426.6666666666667 97.7066666666667 350.2933333333334 21.3333333333334 256 21.3333333333334S85.3333333333333 97.7066666666667 85.3333333333333 192C85.3333333333333 279.04 150.4 350.7200000000001 234.6666666666667 361.1733333333334V318.0800000000001C174.08 307.8400000000001 128 255.36 128 192C128 121.3866666666667 185.3866666666667 64 256 64S384 121.3866666666667 384 192C384 227.4133333333334 369.7066666666666 259.4133333333334 346.4533333333333 282.4533333333334L316.3733333333333 252.3733333333334C331.7333333333334 236.8 341.3333333333333 215.4666666666667 341.3333333333333 192C341.3333333333333 144.8533333333334 303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192C170.6666666666667 231.68 197.9733333333333 264.7466666666667 234.6666666666667 274.3466666666667V228.6933333333334C221.8666666666667 221.2266666666667 213.3333333333333 207.7866666666666 213.3333333333333 192C213.3333333333333 168.5333333333333 232.5333333333334 149.3333333333333 256 149.3333333333333S298.6666666666667 168.5333333333333 298.6666666666667 192C298.6666666666667 207.7866666666666 290.1333333333334 221.44 277.3333333333333 228.6933333333334V405.3333333333333H256C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192C469.3333333333333 250.88 445.44 304.2133333333334 406.8266666666667 342.8266666666667z" /> + <glyph glyph-name="radiator" + unicode="&#xF438;" + horiz-adv-x="512" d=" M169.6 384L139.3066666666667 337.28L169.6 290.1333333333334H169.3866666666667L126.9333333333333 224L90.0266666666667 243.2L120.32 290.3466666666667L90.0266666666667 337.2800000000001L132.6933333333333 403.4133333333334L169.6 384M297.6 386.3466666666667L267.3066666666666 339.2000000000001L297.6 292.2666666666667L297.3866666666667 292.0533333333334L254.9333333333333 226.1333333333334L218.0266666666667 245.3333333333334L248.32 292.2666666666667L218.0266666666667 339.2000000000001L260.6933333333333 405.3333333333334L297.6 386.3466666666667M426.6666666666667 386.3466666666667L395.9466666666666 339.2000000000001L426.6666666666667 292.2666666666667V292.0533333333334L384 226.1333333333334L346.6666666666667 245.3333333333334L376.9600000000001 292.2666666666667L346.6666666666667 339.2000000000001L389.3333333333333 405.3333333333334L426.6666666666667 386.3466666666667M42.6666666666667 -21.3333333333333V149.3333333333334C42.6666666666667 172.8 61.8666666666667 192 85.3333333333333 192H426.6666666666667C450.1333333333334 192 469.3333333333333 172.8 469.3333333333333 149.3333333333334V-21.3333333333333H426.6666666666667V21.3333333333334H85.3333333333333V-21.3333333333333H42.6666666666667M128 149.3333333333334C116.2666666666667 149.3333333333334 106.6666666666667 139.7333333333334 106.6666666666667 128V85.3333333333334C106.6666666666667 73.6 116.2666666666667 64 128 64S149.3333333333333 73.6 149.3333333333333 85.3333333333334V128C149.3333333333333 139.7333333333334 139.7333333333333 149.3333333333334 128 149.3333333333334M213.3333333333333 149.3333333333334C201.6 149.3333333333334 192 139.7333333333334 192 128V85.3333333333334C192 73.6 201.6 64 213.3333333333333 64S234.6666666666667 73.6 234.6666666666667 85.3333333333334V128C234.6666666666667 139.7333333333334 225.0666666666667 149.3333333333334 213.3333333333333 149.3333333333334M298.6666666666667 149.3333333333334C286.9333333333333 149.3333333333334 277.3333333333333 139.7333333333334 277.3333333333333 128V85.3333333333334C277.3333333333333 73.6 286.9333333333333 64 298.6666666666667 64S320 73.6 320 85.3333333333334V128C320 139.7333333333334 310.4 149.3333333333334 298.6666666666667 149.3333333333334M384 149.3333333333334C372.2666666666667 149.3333333333334 362.6666666666667 139.7333333333334 362.6666666666667 128V85.3333333333334C362.6666666666667 73.6 372.2666666666667 64 384 64S405.3333333333333 73.6 405.3333333333333 85.3333333333334V128C405.3333333333333 139.7333333333334 395.7333333333334 149.3333333333334 384 149.3333333333334z" /> + <glyph glyph-name="radio" + unicode="&#xF439;" + horiz-adv-x="512" d=" M426.6666666666667 320C450.1333333333334 320 469.3333333333333 300.8 469.3333333333333 277.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V277.3333333333334C42.6666666666667 295.4666666666667 53.9733333333333 311.04 69.9733333333333 317.2266666666667L335.1466666666667 426.6666666666667L351.36 387.6266666666667L188.3733333333333 320H426.6666666666667M426.6666666666667 277.3333333333334H85.3333333333333V192H341.3333333333333V234.6666666666667H384V192H426.6666666666667V277.3333333333334M149.3333333333333 149.3333333333334C113.92 149.3333333333334 85.3333333333333 120.7466666666667 85.3333333333333 85.3333333333334S113.92 21.3333333333334 149.3333333333333 21.3333333333334S213.3333333333333 49.92 213.3333333333333 85.3333333333334S184.7466666666667 149.3333333333334 149.3333333333333 149.3333333333334z" /> + <glyph glyph-name="radio-handheld" + unicode="&#xF43A;" + horiz-adv-x="512" d=" M192 405.3333333333333C180.2666666666667 405.3333333333333 170.6666666666667 395.7333333333334 170.6666666666667 384V21.3333333333334C170.6666666666667 -2.3466666666666 189.6533333333333 -21.3333333333333 213.3333333333333 -21.3333333333333H320C343.68 -21.3333333333333 362.6666666666667 -2.3466666666666 362.6666666666667 21.3333333333334V256C362.6666666666667 279.68 343.68 298.6666666666667 320 298.6666666666667H213.3333333333333V384C213.3333333333333 395.7333333333334 203.7333333333334 405.3333333333333 192 405.3333333333333M213.3333333333333 256H320V170.6666666666667H213.3333333333333V256z" /> + <glyph glyph-name="radio-tower" + unicode="&#xF43B;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192C298.6666666666667 181.3333333333334 294.8266666666667 171.9466666666667 288.64 164.48L356.2666666666667 -21.3333333333333H310.8266666666667L256 129.4933333333334L201.1733333333333 -21.3333333333333H155.7333333333333L223.36 164.48C217.1733333333333 171.9466666666667 213.3333333333333 181.3333333333334 213.3333333333333 192C213.3333333333333 215.4666666666667 232.5333333333333 234.6666666666667 256 234.6666666666667M256 277.3333333333334C208.8533333333333 277.3333333333334 170.6666666666666 239.1466666666667 170.6666666666666 192C170.6666666666666 181.3333333333334 172.8 170.6666666666667 176.6399999999999 160.8533333333334L157.8666666666666 109.6533333333333C139.3066666666667 132.0533333333334 128 160.64 128 192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192C384 160.64 372.6933333333333 132.0533333333334 354.1333333333334 109.6533333333334L335.36 160.8533333333334C339.2 170.6666666666667 341.3333333333333 181.3333333333334 341.3333333333333 192C341.3333333333333 239.1466666666667 303.1466666666667 277.3333333333334 256 277.3333333333334M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 141.6533333333334 106.6666666666667 96 141.6533333333333 65.28L126.2933333333334 22.6133333333333C75.52 61.6533333333334 42.6666666666667 123.0933333333334 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192C469.3333333333333 123.0933333333334 436.48 61.6533333333334 385.7066666666666 22.6133333333333L370.3466666666667 65.28C405.3333333333333 96 426.6666666666667 141.6533333333334 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="radioactive" + unicode="&#xF43C;" + horiz-adv-x="512" d=" M256 234.6666666666667C279.4666666666667 234.6666666666667 298.6666666666667 215.4666666666667 298.6666666666667 192S279.4666666666667 149.3333333333334 256 149.3333333333334S213.3333333333333 168.5333333333334 213.3333333333333 192S232.5333333333334 234.6666666666667 256 234.6666666666667M256 -21.3333333333333C214.4 -21.3333333333333 175.36 -9.3866666666667 142.72 11.3066666666667L213.3333333333333 117.9733333333334C226.1333333333334 110.72 240.64 106.6666666666667 256 106.6666666666667S285.8666666666667 110.72 298.6666666666667 117.9733333333334L369.28 11.3066666666667C336.64 -9.3866666666667 297.6 -21.3333333333333 256 -21.3333333333333M42.6666666666667 192C42.6666666666667 280.32 96 356.2666666666667 173.0133333333333 388.6933333333334L220.5866666666667 269.6533333333334C191.1466666666667 256 170.6666666666667 226.56 170.6666666666667 192H42.6666666666667M341.3333333333333 192C341.3333333333333 226.5600000000001 320.8533333333333 256 291.4133333333333 269.6533333333334L338.9866666666667 388.6933333333334C416 356.2666666666667 469.3333333333333 280.32 469.3333333333333 192H341.3333333333333z" /> + <glyph glyph-name="radiobox-blank" + unicode="&#xF43D;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="radiobox-marked" + unicode="&#xF43E;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 298.6666666666667C197.12 298.6666666666667 149.3333333333333 250.88 149.3333333333333 192S197.12 85.3333333333334 256 85.3333333333334S362.6666666666667 133.12 362.6666666666667 192S314.88 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="raspberrypi" + unicode="&#xF43F;" + horiz-adv-x="512" d=" M426.6666666666667 277.3333333333334H469.3333333333333V234.6666666666667H426.6666666666667V277.3333333333334M85.3333333333333 341.3333333333334H426.6666666666667C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667H405.3333333333333V256H106.6666666666667V170.6666666666667H170.6666666666667V106.6666666666667H405.3333333333333V85.3333333333334H469.3333333333333C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H341.3333333333333V21.3333333333334H298.6666666666667V42.6666666666667H234.6666666666667V21.3333333333334H149.3333333333333V42.6666666666667H85.3333333333333C61.8666666666667 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.1333333333334 61.8666666666667 341.3333333333334 85.3333333333333 341.3333333333334M405.3333333333333 128H192V234.6666666666667H405.3333333333333V213.3333333333334H469.3333333333333V170.6666666666667H405.3333333333333V128M277.3333333333333 192V149.3333333333334H320V192H277.3333333333333M106.6666666666667 320V277.3333333333334H128V320H106.6666666666667M149.3333333333333 320V277.3333333333334H170.6666666666667V320H149.3333333333333M192 320V277.3333333333334H213.3333333333333V320H192M234.6666666666667 320V277.3333333333334H256V320H234.6666666666667M277.3333333333333 320V277.3333333333334H298.6666666666667V320H277.3333333333333M320 320V277.3333333333334H341.3333333333333V320H320M426.6666666666667 149.3333333333334H469.3333333333333V106.6666666666667H426.6666666666667V149.3333333333334z" /> + <glyph glyph-name="ray-end" + unicode="&#xF440;" + horiz-adv-x="512" d=" M426.6666666666667 256C398.7200000000001 256 375.04 238.2933333333334 366.2933333333334 213.3333333333334H42.6666666666667V170.6666666666667H366.2933333333334C375.04 145.7066666666667 398.7200000000001 128 426.6666666666667 128C462.08 128 490.6666666666666 156.5866666666667 490.6666666666666 192S462.08 256 426.6666666666667 256z" /> + <glyph glyph-name="ray-end-arrow" + unicode="&#xF441;" + horiz-adv-x="512" d=" M21.3333333333333 192L106.6666666666667 106.6666666666667V170.6666666666667H366.2933333333334C375.04 145.7066666666667 398.7200000000001 128 426.6666666666667 128C462.08 128 490.6666666666666 156.5866666666667 490.6666666666666 192S462.08 256 426.6666666666667 256C398.7200000000001 256 375.04 238.2933333333334 366.2933333333334 213.3333333333334H106.6666666666667V277.3333333333334L21.3333333333333 192z" /> + <glyph glyph-name="ray-start" + unicode="&#xF442;" + horiz-adv-x="512" d=" M85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H469.3333333333333V170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256z" /> + <glyph glyph-name="ray-start-arrow" + unicode="&#xF443;" + horiz-adv-x="512" d=" M490.6666666666666 192L405.3333333333333 106.6666666666667V170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H405.3333333333333V277.3333333333334L490.6666666666666 192z" /> + <glyph glyph-name="ray-start-end" + unicode="&#xF444;" + horiz-adv-x="512" d=" M85.3333333333333 256C113.28 256 136.96 238.2933333333334 145.7066666666667 213.3333333333334H366.2933333333334C375.04 238.2933333333334 398.7200000000001 256 426.6666666666667 256C462.08 256 490.6666666666666 227.4133333333334 490.6666666666666 192S462.08 128 426.6666666666667 128C398.7200000000001 128 375.04 145.7066666666667 366.2933333333334 170.6666666666667H145.7066666666667C136.96 145.7066666666667 113.28 128 85.3333333333333 128C49.92 128 21.3333333333333 156.5866666666667 21.3333333333333 192S49.92 256 85.3333333333333 256z" /> + <glyph glyph-name="ray-vertex" + unicode="&#xF445;" + horiz-adv-x="512" d=" M42.6666666666667 213.3333333333334H195.6266666666667C204.3733333333333 238.2933333333334 228.0533333333333 256 256 256S307.6266666666667 238.2933333333334 316.3733333333334 213.3333333333334H469.3333333333333V170.6666666666667H316.3733333333334C307.6266666666667 145.7066666666667 283.9466666666667 128 256 128S204.3733333333333 145.7066666666667 195.6266666666667 170.6666666666667H42.6666666666667V213.3333333333334z" /> + <glyph glyph-name="rdio" + unicode="&#xF446;" + horiz-adv-x="512" d=" M411.52 216.7466666666667C412.8 208.64 413.44 200.32 413.44 192C413.44 93.6533333333334 330.6666666666667 13.8666666666667 227.84 13.8666666666667C125.2266666666667 13.8666666666667 42.6666666666667 93.6533333333334 42.6666666666667 192C42.6666666666667 290.3466666666667 125.2266666666667 370.1333333333334 227.84 370.1333333333334C247.8933333333333 370.1333333333334 267.3066666666666 367.1466666666667 285.44 361.3866666666667V253.6533333333334S230.1866666666667 283.9466666666667 180.6933333333333 248.5333333333334C131.2 213.3333333333334 140.5866666666667 175.7866666666667 140.5866666666667 175.7866666666667S142.9333333333333 117.3333333333334 212.6933333333333 117.3333333333334C290.56 117.3333333333334 312.7466666666667 187.9466666666667 312.7466666666667 187.9466666666667V350.2933333333334C327.68 342.8266666666667 341.3333333333333 333.6533333333333 355.2 323.2000000000001C388.2666666666667 302.5066666666667 422.8266666666667 289.2800000000001 462.2933333333333 290.3466666666667C462.2933333333333 290.3466666666667 469.3333333333333 292.0533333333334 469.3333333333333 277.3333333333334C469.3333333333333 268.8 466.7733333333332 259.6266666666667 458.6666666666666 250.6666666666667C458.6666666666666 250.6666666666667 443.3066666666666 227.6266666666667 411.5199999999999 216.7466666666667z" /> + <glyph glyph-name="read" + unicode="&#xF447;" + horiz-adv-x="512" d=" M460.5866666666666 200.7466666666667L490.6666666666666 170.6666666666667L288 -32L179.6266666666667 76.5866666666667L209.7066666666667 106.6666666666667L288 28.16L460.5866666666666 200.7466666666667M85.3333333333333 106.6666666666667V384H192C239.1466666666667 384 277.3333333333333 345.8133333333334 277.3333333333333 298.6666666666667C277.3333333333333 265.8133333333334 258.7733333333333 237.2266666666667 231.4666666666667 222.9333333333333L298.6666666666667 106.6666666666667H256L194.3466666666666 213.3333333333334H128V106.6666666666667H85.3333333333333M128 256H192C215.4666666666667 256 234.6666666666667 275.2000000000001 234.6666666666667 298.6666666666667S215.4666666666667 341.3333333333334 192 341.3333333333334H128V256z" /> + <glyph glyph-name="readability" + unicode="&#xF448;" + horiz-adv-x="512" d=" M256 362.6666666666667C323.2 362.6666666666667 379.9466666666666 311.8933333333333 398.7200000000001 242.1333333333334C384 231.4666666666667 375.04 214.8266666666667 373.3333333333333 196.0533333333334L369.4933333333334 151.2533333333333C331.7333333333334 170.6666666666667 293.9733333333334 188.3733333333333 256 188.3733333333333C218.24 188.3733333333333 180.2666666666667 170.6666666666667 142.5066666666667 151.2533333333333L138.6666666666667 196.9066666666667C136.96 215.68 128 232.1066666666667 113.4933333333334 242.9866666666667C132.48 312.32 189.0133333333333 362.6666666666667 256 362.6666666666667M363.7333333333334 85.3333333333334H148.2666666666667L143.5733333333333 139.3066666666667C181.3333333333333 158.0800000000001 218.4533333333333 176 256 176C293.5466666666666 176 330.6666666666667 158.0800000000001 368.64 139.3066666666667L363.7333333333334 85.3333333333334M106.6666666666667 42.6666666666667V64L79.36 138.6666666666667H74.6666666666667C45.2266666666667 138.6666666666667 21.3333333333333 162.56 21.3333333333333 192S45.2266666666667 245.3333333333334 74.6666666666667 245.3333333333334C102.8266666666667 245.3333333333334 125.6533333333333 224 128 196.0533333333334L138.6666666666667 64V42.6666666666667H106.6666666666667M405.3333333333333 42.6666666666667H373.3333333333333V64L384 196.0533333333334C386.3466666666667 224.0000000000001 409.1733333333333 245.3333333333334 437.3333333333333 245.3333333333334C466.7733333333333 245.3333333333334 490.6666666666666 221.4400000000001 490.6666666666666 192.0000000000001S466.7733333333333 138.6666666666668 437.3333333333333 138.6666666666668H432.64L405.3333333333333 64V42.6666666666667z" /> + <glyph glyph-name="receipt" + unicode="&#xF449;" + horiz-adv-x="512" d=" M64 -21.3333333333333L96 10.6666666666667L128 -21.3333333333333L160 10.6666666666667L192 -21.3333333333333L224 10.6666666666667L256 -21.3333333333333L288 10.6666666666667L320 -21.3333333333333L352 10.6666666666667L384 -21.3333333333333L416 10.6666666666667L448 -21.3333333333333V405.3333333333333L416 373.3333333333334L384 405.3333333333333L352 373.3333333333334L320 405.3333333333333L288 373.3333333333334L256 405.3333333333333L224 373.3333333333334L192 405.3333333333333L160 373.3333333333334L128 405.3333333333333L96 373.3333333333334L64 405.3333333333333M384 256H128V298.6666666666667H384M384 170.6666666666667H128V213.3333333333334H384M384 85.3333333333334H128V128H384V85.3333333333334z" /> + <glyph glyph-name="record" + unicode="&#xF44A;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 109.6533333333334 338.3466666666667 42.6666666666667 256 42.6666666666667S106.6666666666667 109.6533333333334 106.6666666666667 192S173.6533333333333 341.3333333333334 256 341.3333333333334S405.3333333333333 274.3466666666667 405.3333333333333 192z" /> + <glyph glyph-name="record-rec" + unicode="&#xF44B;" + horiz-adv-x="512" d=" M266.6666666666667 341.3333333333334C178.3466666666666 341.3333333333334 106.6666666666667 269.6533333333334 106.6666666666667 181.3333333333334C106.6666666666667 93.0133333333333 178.3466666666666 21.3333333333334 266.6666666666667 21.3333333333334C354.9866666666667 21.3333333333334 426.6666666666667 93.0133333333333 426.6666666666667 181.3333333333334C426.6666666666667 269.6533333333334 354.9866666666667 341.3333333333334 266.6666666666667 341.3333333333334M149.3333333333333 234.6666666666667H192C203.7333333333334 234.6666666666667 213.3333333333333 225.0666666666667 213.3333333333333 213.3333333333334V192C213.3333333333333 181.3333333333334 205.2266666666666 172.8 194.9866666666667 171.3066666666667L219.9466666666667 128H195.2L170.6666666666667 170.6666666666667V128H149.3333333333333M256 234.6666666666667H298.6666666666667V213.3333333333334H256V192H298.6666666666667V170.6666666666667H256V149.3333333333334H298.6666666666667V128H256C244.2666666666667 128 234.6666666666667 137.6 234.6666666666667 149.3333333333334V213.3333333333334C234.6666666666667 225.0666666666667 244.2666666666667 234.6666666666667 256 234.6666666666667M341.3333333333333 234.6666666666667H384V213.3333333333334H341.3333333333333V149.3333333333334H384V128H341.3333333333333C329.6 128 320 137.6 320 149.3333333333334V213.3333333333334C320 225.0666666666667 329.6 234.6666666666667 341.3333333333333 234.6666666666667M170.6666666666667 213.3333333333334V192H192V213.3333333333334" /> + <glyph glyph-name="recycle" + unicode="&#xF44C;" + horiz-adv-x="512" d=" M465.4933333333333 119.04L412.16 26.6666666666667C401.7066666666667 8.3200000000001 382.2933333333334 -1.28 362.6666666666667 0H320V-42.6666666666666L266.6666666666667 53.3333333333334L320 149.3333333333334V106.6666666666667H380.16L332.8 188.8L425.1733333333333 242.1333333333334L463.5733333333333 175.5733333333334C474.6666666666666 159.1466666666667 476.16 137.1733333333334 465.4933333333333 119.04M196.48 382.7200000000001H303.1466666666667C324.0533333333334 382.7200000000001 342.1866666666666 370.56 350.9333333333334 353.0666666666667L372.2666666666667 315.9466666666667L409.1733333333334 337.28L352.8533333333334 243.2L242.9866666666667 241.28L279.8933333333334 262.6133333333334L249.8133333333334 314.88L202.6666666666668 232.7466666666667L110.0800000000001 286.08L148.4800000000001 352.64C157.2266666666668 370.3466666666667 175.3600000000001 382.72 196.4800000000001 382.72M107.7333333333334 26.4533333333333L54.4000000000001 118.8266666666667C43.9466666666668 136.96 45.4400000000001 158.72 56.3200000000001 175.1466666666667L77.6533333333334 212.0533333333334L40.7466666666668 233.3866666666667L150.4000000000001 231.68L206.9333333333334 137.3866666666667L170.0266666666668 158.72L139.9466666666667 106.6666666666667H234.6666666666667V0H157.8666666666667C138.0266666666667 -1.4933333333333 118.4 8.3200000000001 107.7333333333334 26.4533333333333z" /> + <glyph glyph-name="reddit" + unicode="&#xF44D;" + horiz-adv-x="512" d=" M469.3333333333333 202.6666666666667C469.3333333333333 232.5333333333334 445.8666666666666 256 416 256C403.2 256 390.4 251.7333333333334 381.8666666666666 243.2C349.8666666666666 262.4000000000001 311.4666666666666 275.2000000000001 266.6666666666667 277.3333333333334L290.1333333333333 362.6666666666667L362.6666666666667 341.3333333333334C362.6666666666667 317.8666666666667 381.8666666666666 298.6666666666667 405.3333333333333 298.6666666666667S448 317.8666666666667 448 341.3333333333334S428.8 384 405.3333333333333 384C390.4 384 375.4666666666667 375.4666666666667 369.0666666666667 362.6666666666667L283.7333333333334 384C277.3333333333333 386.1333333333334 273.0666666666667 381.8666666666667 270.9333333333334 375.4666666666667L245.3333333333333 277.3333333333334C202.6666666666667 275.2000000000001 162.1333333333333 262.4000000000001 130.1333333333333 243.2C121.6 251.7333333333334 108.8 256 96 256C66.1333333333333 256 42.6666666666667 232.5333333333334 42.6666666666667 202.6666666666667C42.6666666666667 183.4666666666667 51.2 168.5333333333334 66.1333333333333 157.8666666666667L64 138.6666666666667C64 61.8666666666667 149.3333333333333 0 256 0S448 61.8666666666667 448 138.6666666666667L445.8666666666666 157.8666666666667C460.8 168.5333333333334 469.3333333333333 183.4666666666667 469.3333333333333 202.6666666666667M192 196.2666666666667C206.9333333333333 196.2666666666667 217.6 183.4666666666667 217.6 170.6666666666667S206.9333333333333 145.0666666666667 192 145.0666666666667S166.4 155.7333333333334 166.4 170.6666666666667S177.0666666666667 196.2666666666667 192 196.2666666666667M337.0666666666667 81.0666666666666C298.6666666666667 57.5999999999999 213.3333333333333 57.5999999999999 174.9333333333333 81.0666666666666C170.6666666666667 85.3333333333333 168.5333333333334 91.7333333333333 172.8 95.9999999999999C177.0666666666667 100.2666666666666 183.4666666666667 102.4 187.7333333333334 98.1333333333333C213.3333333333333 78.9333333333333 298.6666666666667 78.9333333333333 324.2666666666667 98.1333333333333C328.5333333333333 102.4 334.9333333333334 100.2666666666667 339.2 95.9999999999999C343.4666666666667 91.7333333333333 341.3333333333333 85.3333333333333 337.0666666666667 81.0666666666666M320 145.0666666666666C305.0666666666667 145.0666666666666 294.4 157.8666666666666 294.4 170.6666666666666C294.4 185.5999999999999 307.2 196.2666666666666 320 196.2666666666666C334.9333333333333 196.2666666666666 345.6 183.4666666666666 345.6 170.6666666666666C345.6 155.7333333333333 334.9333333333333 145.0666666666666 320 145.0666666666666z" /> + <glyph glyph-name="redo" + unicode="&#xF44E;" + horiz-adv-x="512" d=" M392.5333333333333 221.8666666666667C353.0666666666667 256 301.8666666666667 277.3333333333334 245.3333333333333 277.3333333333334C146.1333333333333 277.3333333333334 62.2933333333333 212.6933333333334 32.8533333333333 123.3066666666667L83.2 106.6666666666667C105.6 174.72 169.6 224 245.3333333333333 224C286.9333333333333 224 324.9066666666667 208.64 354.56 183.8933333333334L277.3333333333333 106.6666666666667H469.3333333333333V298.6666666666667L392.5333333333333 221.8666666666667z" /> + <glyph glyph-name="redo-variant" + unicode="&#xF44F;" + horiz-adv-x="512" d=" M224 298.6666666666667C147.4133333333333 298.6666666666667 85.3333333333333 236.5866666666667 85.3333333333333 160S147.4133333333333 21.3333333333334 224 21.3333333333334H298.6666666666667V64H224C170.6666666666667 64 128 106.6666666666667 128 160S170.6666666666667 256 224 256H344.9600000000001L279.2533333333334 190.0800000000001L309.3333333333334 160L426.6666666666667 277.3333333333334L309.3333333333333 394.6666666666667L279.04 364.5866666666667L344.9600000000001 298.6666666666667H224M384 64H341.3333333333333V21.3333333333334H384V64z" /> + <glyph glyph-name="refresh" + unicode="&#xF450;" + horiz-adv-x="512" d=" M376.5333333333333 312.5333333333334C345.6 343.4666666666667 303.1466666666667 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192S161.7066666666667 21.3333333333334 256 21.3333333333334C335.5733333333333 21.3333333333334 401.92 75.7333333333334 420.9066666666667 149.3333333333334H376.5333333333333C359.04 99.6266666666667 311.68 64 256 64C185.3866666666666 64 128 121.3866666666667 128 192S185.3866666666666 320 256 320C291.4133333333333 320 322.9866666666666 305.2800000000001 346.0266666666667 282.0266666666667L277.3333333333333 213.3333333333334H426.6666666666667V362.6666666666667L376.5333333333333 312.5333333333334z" /> + <glyph glyph-name="regex" + unicode="&#xF451;" + horiz-adv-x="512" d=" M341.3333333333333 87.04C334.2933333333333 85.9733333333333 327.2533333333334 85.3333333333334 320 85.3333333333334C312.7466666666667 85.3333333333334 305.7066666666667 85.9733333333334 298.6666666666667 87.04V161.92L245.3333333333333 109.0133333333333C234.6666666666667 117.3333333333333 224 128 215.68 138.6666666666666L268.5866666666667 192H193.7066666666667C192.64 199.04 192 206.08 192 213.3333333333333C192 220.5866666666667 192.64 227.6266666666667 193.7066666666667 234.6666666666667H268.5866666666667L215.68 288C219.7333333333333 293.3333333333333 224 298.6666666666667 229.5466666666667 303.7866666666667C234.6666666666667 309.3333333333333 240 313.6 245.3333333333333 317.6533333333333L298.6666666666667 264.7466666666667V339.6266666666667C305.7066666666667 340.6933333333334 312.7466666666667 341.3333333333334 320 341.3333333333334C327.2533333333334 341.3333333333334 334.2933333333333 340.6933333333334 341.3333333333333 339.6266666666667V264.7466666666667L394.6666666666667 317.6533333333334C405.3333333333333 309.3333333333334 416 298.6666666666667 424.32 288L371.4133333333333 234.6666666666667H446.2933333333334C447.36 227.6266666666667 448 220.5866666666667 448 213.3333333333334C448 206.08 447.36 199.04 446.2933333333334 192H371.4133333333334L424.3200000000001 138.6666666666667C420.2666666666667 133.3333333333334 416.0000000000001 128 410.4533333333335 122.88C405.3333333333335 117.3333333333334 400.0000000000001 113.0666666666667 394.6666666666668 109.0133333333333L341.3333333333333 161.92V87.04M106.6666666666667 42.6666666666667C106.6666666666667 66.1333333333334 125.8666666666667 85.3333333333334 149.3333333333333 85.3333333333334S192 66.1333333333334 192 42.6666666666667S172.8 0 149.3333333333333 0S106.6666666666667 19.2 106.6666666666667 42.6666666666667z" /> + <glyph glyph-name="relative-scale" + unicode="&#xF452;" + horiz-adv-x="512" d=" M426.6666666666667 64H85.3333333333333V320H426.6666666666667M426.6666666666667 362.6666666666667H85.3333333333333C61.6533333333333 362.6666666666667 42.6666666666667 343.68 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M256 234.6666666666667H213.3333333333333V192H256M170.6666666666667 234.6666666666667H128V192H170.6666666666667M341.3333333333333 149.3333333333334H298.6666666666667V106.6666666666667H341.3333333333333M341.3333333333333 234.6666666666667H298.6666666666667V192H341.3333333333333V234.6666666666667z" /> + <glyph glyph-name="reload" + unicode="&#xF453;" + horiz-adv-x="512" d=" M405.3333333333333 192H476.16L370.56 86.4L264.96 192H362.0266666666667C362.6666666666667 224.8533333333333 350.2933333333333 257.4933333333334 325.12 282.6666666666667C275.2 332.5866666666667 194.1333333333333 332.5866666666667 144.2133333333333 282.6666666666667C94.2933333333333 232.7466666666667 94.2933333333333 151.4666666666667 144.2133333333333 101.5466666666666C183.4666666666666 62.2933333333333 242.3466666666666 53.9733333333333 289.7066666666666 76.5866666666666L321.0666666666666 45.2266666666666C256 6.6133333333333 170.6666666666667 15.1466666666667 113.92 71.4666666666667C47.36 138.0266666666668 47.5733333333333 245.9733333333334 114.1333333333333 312.5333333333334C181.3333333333333 379.3066666666668 288.64 379.5200000000001 355.4133333333333 312.7466666666668C388.6933333333333 279.4666666666667 405.3333333333333 235.7333333333334 405.3333333333333 192z" /> + <glyph glyph-name="remote" + unicode="&#xF454;" + horiz-adv-x="512" d=" M256 448C191.1466666666667 448 132.48 421.76 90.0266666666667 379.3066666666667L120.1066666666667 349.2266666666667C154.88 384 202.6666666666667 405.3333333333333 256 405.3333333333333S357.12 384 391.68 349.0133333333333L421.76 379.0933333333334C379.52 421.76 320.8533333333333 448 256 448M150.4 318.9333333333334L180.48 288.8533333333334C199.8933333333333 308.0533333333334 226.56 320 256 320S312.1066666666667 308.0533333333334 331.52 288.8533333333334L361.6 318.9333333333334C334.5066666666667 346.0266666666667 297.1733333333333 362.6666666666667 256 362.6666666666667C214.8266666666667 362.6666666666667 177.4933333333334 346.0266666666667 150.4 318.9333333333334M256 128C232.5333333333334 128 213.3333333333333 147.2000000000001 213.3333333333333 170.6666666666667S232.5333333333334 213.3333333333334 256 213.3333333333334S298.6666666666667 194.1333333333333 298.6666666666667 170.6666666666667S279.4666666666667 128 256 128M320 256H192C180.2666666666667 256 170.6666666666667 246.4000000000001 170.6666666666667 234.6666666666667V-21.3333333333333C170.6666666666667 -33.0666666666667 180.2666666666667 -42.6666666666666 192 -42.6666666666666H320C331.7333333333334 -42.6666666666666 341.3333333333333 -33.0666666666667 341.3333333333333 -21.3333333333333V234.6666666666667C341.3333333333333 246.4000000000001 331.7333333333334 256 320 256z" /> + <glyph glyph-name="rename-box" + unicode="&#xF455;" + horiz-adv-x="512" d=" M384 85.3333333333334H224L266.6666666666667 128H384M128 85.3333333333334V138.6666666666667L296.1066666666667 306.1333333333334C300.16 310.4 306.9866666666666 310.4 311.2533333333334 306.1333333333334L348.8 268.5866666666667C353.0666666666667 264.3200000000001 353.0666666666667 257.7066666666667 348.8 253.44L180.6933333333333 85.3333333333334M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="repeat" + unicode="&#xF456;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334H149.3333333333333V149.3333333333334L64 64L149.3333333333333 -21.3333333333333V42.6666666666667H405.3333333333333V170.6666666666667H362.6666666666667M149.3333333333333 298.6666666666667H362.6666666666667V234.6666666666667L448 320L362.6666666666667 405.3333333333333V341.3333333333334H106.6666666666667V213.3333333333334H149.3333333333333V298.6666666666667z" /> + <glyph glyph-name="repeat-off" + unicode="&#xF457;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L335.5733333333333 42.6666666666667H149.3333333333333V-21.3333333333333L64 64L149.3333333333333 149.3333333333334V85.3333333333334H292.9066666666667L149.3333333333333 228.9066666666667V213.3333333333334H106.6666666666667V271.5733333333334L42.6666666666667 335.5733333333334M362.6666666666667 170.6666666666667H405.3333333333333V81.4933333333333L362.6666666666667 124.16V170.6666666666667M362.6666666666667 341.3333333333334V405.3333333333333L448 320L362.6666666666667 234.6666666666667V298.6666666666667H188.16L145.4933333333334 341.3333333333334H362.6666666666667z" /> + <glyph glyph-name="repeat-once" + unicode="&#xF458;" + horiz-adv-x="512" d=" M277.3333333333333 128V256H256L213.3333333333333 234.6666666666667V213.3333333333334H245.3333333333333V128M362.6666666666667 85.3333333333334H149.3333333333333V149.3333333333334L64 64L149.3333333333333 -21.3333333333333V42.6666666666667H405.3333333333333V170.6666666666667H362.6666666666667M149.3333333333333 298.6666666666667H362.6666666666667V234.6666666666667L448 320L362.6666666666667 405.3333333333333V341.3333333333334H106.6666666666667V213.3333333333334H149.3333333333333V298.6666666666667z" /> + <glyph glyph-name="replay" + unicode="&#xF459;" + horiz-adv-x="512" d=" M256 341.3333333333334V426.6666666666667L149.3333333333333 320L256 213.3333333333334V298.6666666666667C326.6133333333334 298.6666666666667 384 241.2800000000001 384 170.6666666666667S326.6133333333334 42.6666666666667 256 42.6666666666667S128 100.0533333333334 128 170.6666666666667H85.3333333333333C85.3333333333333 76.3733333333333 161.7066666666667 0 256 0S426.6666666666667 76.3733333333333 426.6666666666667 170.6666666666667S350.2933333333334 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="reply" + unicode="&#xF45A;" + horiz-adv-x="512" d=" M213.3333333333333 256V341.3333333333334L64 192L213.3333333333333 42.6666666666667V130.1333333333333C320 130.1333333333333 394.6666666666667 96 448 21.3333333333334C426.6666666666667 128 362.6666666666667 234.6666666666667 213.3333333333333 256z" /> + <glyph glyph-name="reply-all" + unicode="&#xF45B;" + horiz-adv-x="512" d=" M277.3333333333333 256V341.3333333333334L128 192L277.3333333333333 42.6666666666667V130.1333333333333C384 130.1333333333333 458.6666666666666 96 512 21.3333333333334C490.6666666666666 128 426.6666666666667 234.6666666666667 277.3333333333333 256M149.3333333333333 277.3333333333334V341.3333333333334L0 192L149.3333333333333 42.6666666666667V106.6666666666667L64 192L149.3333333333333 277.3333333333334z" /> + <glyph glyph-name="reproduction" + unicode="&#xF45C;" + horiz-adv-x="512" d=" M271.36 167.4666666666667L290.56 186.4533333333334C290.1333333333334 213.3333333333334 305.28 246.6133333333334 333.2266666666667 274.3466666666667C374.8266666666667 316.16 429.0133333333333 329.6 453.9733333333334 304.64S465.4933333333333 225.4933333333334 423.68 183.8933333333333C395.9466666666666 155.9466666666667 362.6666666666667 140.8 335.7866666666667 141.2266666666667L316.8 122.0266666666667C309.3333333333333 114.9866666666667 298.6666666666667 113.92 290.1333333333333 119.2533333333333C272.2133333333333 112.8533333333333 256 104.96 246.6133333333333 89.6C235.3066666666667 70.8266666666667 235.3066666666667 40.5333333333333 223.36 22.4C211.4133333333333 4.0533333333334 187.52 -2.1333333333333 162.3466666666666 -2.1333333333333S106.6666666666667 0 84.2666666666667 32L137.1733333333333 23.04C149.3333333333333 21.3333333333334 181.3333333333333 34.3466666666667 193.0666666666667 52.48C205.0133333333334 70.8266666666666 205.0133333333334 100.9066666666666 216.32 119.8933333333333C226.3466666666667 136.5333333333333 245.3333333333333 144.4266666666666 265.1733333333333 151.2533333333333C264.96 157.0133333333333 266.6666666666667 162.9866666666667 271.36 167.4666666666667M149.3333333333333 405.3333333333333C208.2133333333333 405.3333333333333 256 357.5466666666667 256 298.6666666666667S208.2133333333333 192 149.3333333333333 192S42.6666666666667 239.7866666666667 42.6666666666667 298.6666666666667S90.4533333333333 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667C113.92 362.6666666666667 85.3333333333333 334.0800000000001 85.3333333333333 298.6666666666667S113.92 234.6666666666667 149.3333333333333 234.6666666666667S213.3333333333333 263.2533333333334 213.3333333333333 298.6666666666667S184.7466666666667 362.6666666666667 149.3333333333333 362.6666666666667z" /> + <glyph glyph-name="resize-bottom-right" + unicode="&#xF45D;" + horiz-adv-x="512" d=" M469.3333333333333 -21.3333333333333H426.6666666666667V21.3333333333334H469.3333333333333V-21.3333333333333M469.3333333333333 64H426.6666666666667V106.6666666666667H469.3333333333333V64M384 -21.3333333333333H341.3333333333333V21.3333333333334H384V-21.3333333333333M384 64H341.3333333333333V106.6666666666667H384V64M298.6666666666667 -21.3333333333333H256V21.3333333333334H298.6666666666667V-21.3333333333333M469.3333333333333 149.3333333333334H426.6666666666667V192H469.3333333333333V149.3333333333334z" /> + <glyph glyph-name="responsive" + unicode="&#xF45E;" + horiz-adv-x="512" d=" M85.3333333333333 320V106.6666666666667H192V192C192 215.4666666666667 211.2 234.6666666666667 234.6666666666667 234.6666666666667H341.3333333333333C364.8 234.6666666666667 384 215.4666666666667 384 192V106.6666666666667H426.6666666666667V320H85.3333333333333M0 21.3333333333334V64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H512V21.3333333333334H384C384 -2.3466666666666 364.8 -21.3333333333333 341.3333333333333 -21.3333333333333H234.6666666666667C211.2 -21.3333333333333 192 -2.1333333333333 192 21.3333333333334H0M245.3333333333333 21.3333333333334C239.36 21.3333333333334 234.6666666666667 16.64 234.6666666666667 10.6666666666667S239.36 0 245.3333333333333 0S256 4.6933333333333 256 10.6666666666667S251.3066666666667 21.3333333333334 245.3333333333333 21.3333333333334M330.6666666666667 21.3333333333334C324.6933333333334 21.3333333333334 320 16.64 320 10.6666666666667S324.6933333333334 0 330.6666666666667 0S341.3333333333333 4.6933333333333 341.3333333333333 10.6666666666667S336.64 21.3333333333334 330.6666666666667 21.3333333333334M277.3333333333333 21.3333333333334V0H298.6666666666667V21.3333333333334H277.3333333333333M234.6666666666667 192V42.6666666666667H341.3333333333333V192H234.6666666666667z" /> + <glyph glyph-name="rewind" + unicode="&#xF45F;" + horiz-adv-x="512" d=" M245.3333333333333 192L426.6666666666667 64V320M234.6666666666667 64V320L53.3333333333333 192L234.6666666666667 64z" /> + <glyph glyph-name="ribbon" + unicode="&#xF460;" + horiz-adv-x="512" d=" M286.08 36.0533333333334L353.92 -32L384 -1.4933333333333L316.3733333333334 66.1333333333334M331.52 202.0266666666667H331.3066666666666L256 126.5066666666667L180.6933333333333 202.0266666666667H180.48C161.28 221.2266666666667 149.3333333333333 247.8933333333333 149.3333333333333 277.3333333333334C149.3333333333333 336.2133333333334 197.12 384 256 384S362.6666666666667 336.2133333333334 362.6666666666667 277.3333333333334C362.6666666666667 247.8933333333334 350.7200000000001 221.2266666666667 331.52 202.0266666666667M360.5333333333333 170.6666666666667C388.2666666666667 197.76 405.3333333333333 235.52 405.3333333333333 277.3333333333334C405.3333333333333 359.8933333333333 338.56 426.6666666666667 256 426.6666666666667S106.6666666666667 359.8933333333333 106.6666666666667 277.3333333333334C106.6666666666667 235.52 123.9466666666667 197.76 151.4666666666667 170.6666666666667L225.92 96L128 -1.4933333333333L158.08 -32L360.5333333333333 170.6666666666667z" /> + <glyph glyph-name="road" + unicode="&#xF461;" + horiz-adv-x="512" d=" M234.6666666666667 106.6666666666667H277.3333333333333V21.3333333333334H234.6666666666667M234.6666666666667 234.6666666666667H277.3333333333333V149.3333333333334H234.6666666666667M234.6666666666667 362.6666666666667H277.3333333333333V277.3333333333334H234.6666666666667M85.3333333333333 -21.3333333333333H426.6666666666667V405.3333333333333H85.3333333333333V-21.3333333333333z" /> + <glyph glyph-name="road-variant" + unicode="&#xF462;" + horiz-adv-x="512" d=" M386.1333333333334 345.6C384 356.2666666666667 375.4666666666667 362.6666666666667 364.8 362.6666666666667H277.3333333333333L281.6 298.6666666666667H230.4L234.6666666666667 362.6666666666667H145.0666666666667C134.4 362.6666666666667 125.8666666666667 354.1333333333334 123.7333333333333 345.6L66.1333333333333 46.9333333333333C64 34.1333333333333 74.6666666666667 21.3333333333334 87.4666666666667 21.3333333333334H213.3333333333333L219.7333333333334 128H292.2666666666667L298.6666666666667 21.3333333333334H422.4C435.2000000000001 21.3333333333334 445.8666666666667 34.1333333333334 443.7333333333334 46.9333333333333L386.1333333333334 345.6M221.8666666666667 170.6666666666667L226.1333333333334 256H281.6L285.8666666666666 170.6666666666667H221.8666666666666z" /> + <glyph glyph-name="rocket" + unicode="&#xF463;" + horiz-adv-x="512" d=" M59.9466666666667 146.7733333333334L120.32 207.1466666666667L174.2933333333333 217.8133333333334C242.9866666666667 311.2533333333334 374.4 357.9733333333334 421.9733333333334 357.9733333333334C421.9733333333334 310.4000000000001 375.2533333333334 178.9866666666667 281.8133333333334 110.2933333333334L271.1466666666667 56.3200000000001L210.7733333333334 -4.0533333333333L195.6266666666667 71.2533333333335C165.5466666666667 71.2533333333335 165.5466666666667 71.2533333333335 150.4 86.4000000000001C135.2533333333334 101.5466666666668 135.2533333333334 101.5466666666668 135.2533333333334 131.6266666666668L59.9466666666667 146.7733333333335M120.3200000000001 86.4000000000001L150.4 56.3200000000001L93.6533333333334 -0.6399999999999H63.36V29.6533333333335L120.32 86.4000000000002M90.0266666666667 116.4800000000002L116.48 112.8533333333335L64 60.5866666666667V90.88L90.0266666666667 116.48M176.8533333333333 52.48L180.48 26.0266666666666L154.88 0H124.5866666666667L176.8533333333333 52.48M277.3333333333333 245.3333333333334C259.6266666666667 245.3333333333334 245.3333333333333 231.04 245.3333333333333 213.3333333333334S259.6266666666667 181.3333333333334 277.3333333333333 181.3333333333334S309.3333333333333 195.6266666666667 309.3333333333333 213.3333333333334S295.04 245.3333333333334 277.3333333333333 245.3333333333334z" /> + <glyph glyph-name="rotate-3d" + unicode="&#xF464;" + horiz-adv-x="512" d=" M256 341.3333333333334C362.0266666666667 341.3333333333334 448 283.9466666666667 448 213.3333333333334C448 177.4933333333334 425.8133333333334 145.0666666666667 390.1866666666666 121.8133333333334C413.0133333333333 140.3733333333333 426.6666666666667 163.84 426.6666666666667 189.2266666666667C426.6666666666667 249.8133333333334 350.2933333333334 298.6666666666667 256 298.6666666666667V234.6666666666667L170.6666666666667 320L256 405.3333333333333V341.3333333333334M256 42.6666666666667C149.9733333333333 42.6666666666667 64 100.0533333333334 64 170.6666666666667C64 206.5066666666667 86.1866666666667 238.9333333333334 121.8133333333333 262.1866666666667C98.9866666666667 243.6266666666667 85.3333333333333 220.16 85.3333333333333 194.56C85.3333333333333 134.1866666666667 161.7066666666667 85.3333333333334 256 85.3333333333334V149.3333333333334L341.3333333333333 64L256 -21.3333333333333V42.6666666666667z" /> + <glyph glyph-name="rotate-left" + unicode="&#xF465;" + horiz-adv-x="512" d=" M277.3333333333333 361.1733333333334V426.6666666666667L180.2666666666667 329.6L277.3333333333333 234.6666666666667V318.0800000000001C337.92 307.8400000000001 384 255.36 384 192S337.92 76.16 277.3333333333333 65.92V22.8266666666667C361.6 33.28 426.6666666666667 104.96 426.6666666666667 192S361.6 350.7200000000001 277.3333333333333 361.1733333333334M151.4666666666667 57.1733333333334C176.2133333333333 37.9733333333334 205.0133333333333 26.4533333333333 234.6666666666667 22.8266666666667V66.1333333333334C216.1066666666667 69.3333333333334 198.1866666666667 76.5866666666667 182.1866666666667 88.1066666666667L151.4666666666667 57.1733333333334M129.92 170.6666666666667H86.8266666666667C90.4533333333333 141.0133333333333 102.1866666666667 112.4266666666667 121.3866666666667 87.68L151.4666666666667 117.9733333333334C140.3733333333333 133.9733333333334 132.9066666666667 151.8933333333333 129.92 170.6666666666667M151.68 266.0266666666667L121.6 296.32C102.4 271.5733333333334 90.4533333333333 242.9866666666667 86.8266666666667 213.3333333333334H129.92C132.9066666666667 231.8933333333333 140.3733333333333 250.0266666666667 151.68 266.0266666666667z" /> + <glyph glyph-name="rotate-left-variant" + unicode="&#xF466;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H149.3333333333333C172.8 405.3333333333333 192 386.1333333333334 192 362.6666666666667V21.3333333333334C192 -2.1333333333333 172.8 -21.3333333333333 149.3333333333333 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M426.6666666666667 128C450.1333333333334 128 469.3333333333333 108.8 469.3333333333333 85.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H234.6666666666667V128H426.6666666666667M298.6666666666667 362.6666666666667C392.9600000000001 362.6666666666667 469.3333333333333 286.2933333333334 469.3333333333333 192L468.0533333333333 170.6666666666667H424.9600000000001L426.6666666666667 192C426.6666666666667 262.6133333333334 369.28 320 298.6666666666667 320V256L213.3333333333333 341.3333333333334L298.6666666666667 426.6666666666667V362.6666666666667z" /> + <glyph glyph-name="rotate-right" + unicode="&#xF467;" + horiz-adv-x="512" d=" M360.32 117.3333333333334L390.6133333333334 87.68C409.8133333333334 112.4266666666667 421.5466666666667 141.0133333333333 425.1733333333334 170.6666666666667H382.0800000000001C379.0933333333334 152.1066666666667 371.8400000000001 133.9733333333334 360.3200000000001 117.3333333333334M277.3333333333333 66.1333333333334V23.0400000000001C306.9866666666667 26.6666666666667 335.7866666666667 38.1866666666667 360.5333333333333 57.3866666666667L329.8133333333333 88.1066666666667C313.8133333333333 76.5866666666668 295.8933333333333 69.1200000000001 277.3333333333333 66.1333333333334M425.1733333333333 213.3333333333334C421.5466666666666 242.9866666666668 409.8133333333334 271.5733333333334 390.6133333333333 296.3200000000001L360.32 266.0266666666668C371.84 250.0266666666668 379.0933333333333 231.8933333333334 382.08 213.3333333333334M331.7333333333334 329.6L234.6666666666667 426.6666666666667V361.1733333333334C150.6133333333333 350.7200000000001 85.3333333333333 279.04 85.3333333333333 192S150.4 33.28 234.6666666666667 22.8266666666667V65.92C174.08 76.16 128 128.64 128 192S174.08 307.8400000000001 234.6666666666667 318.0800000000001V234.6666666666667L331.7333333333334 329.6z" /> + <glyph glyph-name="rotate-right-variant" + unicode="&#xF468;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667V426.6666666666667L298.6666666666667 341.3333333333334L213.3333333333333 256V320C142.72 320 85.3333333333333 262.6133333333334 85.3333333333333 192L87.04 170.6666666666667H43.9466666666667L42.6666666666667 192C42.6666666666667 286.2933333333334 119.04 362.6666666666667 213.3333333333333 362.6666666666667M362.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667C339.2 -21.3333333333333 320 -2.1333333333333 320 21.3333333333334V362.6666666666667C320 386.1333333333334 339.2 405.3333333333333 362.6666666666667 405.3333333333333M85.3333333333333 128H277.3333333333333V-21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V85.3333333333334C42.6666666666667 108.8 61.8666666666667 128 85.3333333333333 128z" /> + <glyph glyph-name="rounded-corner" + unicode="&#xF607;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H448V0H405.3333333333333V42.6666666666667M405.3333333333333 85.3333333333334H448V128H405.3333333333333V85.3333333333334M64 170.6666666666667H106.6666666666667V213.3333333333334H64V170.6666666666667M64 85.3333333333334H106.6666666666667V128H64V85.3333333333334M64 256H106.6666666666667V298.6666666666667H64V256M64 341.3333333333334H106.6666666666667V384H64V341.3333333333334M149.3333333333333 341.3333333333334H192V384H149.3333333333333V341.3333333333334M320 0H362.6666666666667V42.6666666666667H320V0M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667V0M320 0H362.6666666666667V42.6666666666667H320V0M149.3333333333333 0H192V42.6666666666667H149.3333333333333V0M64 0H106.6666666666667V42.6666666666667H64V0M448 277.3333333333334C448 336.2133333333334 400.2133333333333 384 341.3333333333333 384H234.6666666666667V341.3333333333334H341.3333333333333C376.7466666666667 341.3333333333334 405.3333333333333 312.7466666666667 405.3333333333333 277.3333333333334V170.6666666666667H448V277.3333333333334z" /> + <glyph glyph-name="router-wireless" + unicode="&#xF469;" + horiz-adv-x="512" d=" M85.3333333333333 170.6666666666667H426.6666666666667C438.4 170.6666666666667 448 161.0666666666667 448 149.3333333333334V64C448 52.2666666666667 438.4 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C73.6 42.6666666666667 64 52.2666666666667 64 64V149.3333333333334C64 161.0666666666667 73.6 170.6666666666667 85.3333333333333 170.6666666666667M192 85.3333333333334H213.3333333333333V128H192V85.3333333333334M106.6666666666667 128V85.3333333333334H149.3333333333333V128H106.6666666666667M405.3333333333333 300.1600000000001L375.4666666666667 270.0800000000001C344.5333333333333 301.0133333333333 301.8666666666667 320 254.5066666666667 320C207.36 320 164.6933333333333 301.0133333333333 133.76 270.0800000000001L103.8933333333333 300.1600000000001C142.5066666666667 338.7733333333333 195.84 362.6666666666667 254.5066666666667 362.6666666666667C313.3866666666667 362.6666666666667 366.7199999999999 338.7733333333333 405.3333333333333 300.1600000000001M344.9600000000001 239.7866666666667L315.0933333333334 209.7066666666667C299.52 225.0666666666667 278.1866666666667 234.6666666666667 254.5066666666667 234.6666666666667C230.8266666666667 234.6666666666667 209.4933333333334 225.0666666666667 194.1333333333334 209.7066666666667L164.2666666666667 239.7866666666667C187.3066666666667 263.04 219.3066666666667 277.3333333333334 254.5066666666667 277.3333333333334C289.7066666666667 277.3333333333334 321.7066666666667 263.04 344.9600000000001 239.7866666666667z" /> + <glyph glyph-name="routes" + unicode="&#xF46A;" + horiz-adv-x="512" d=" M234.6666666666667 234.6666666666667H106.6666666666667L64 277.3333333333334L106.6666666666667 320H234.6666666666667V384L256 405.3333333333333L277.3333333333333 384V362.6666666666667H405.3333333333333L448 320L405.3333333333333 277.3333333333334H277.3333333333333V234.6666666666667H405.3333333333333L448 192L405.3333333333333 149.3333333333334H277.3333333333333V21.3333333333334C300.8 21.3333333333334 320 2.1333333333334 320 -21.3333333333333H192C192 2.1333333333334 211.2 21.3333333333334 234.6666666666667 21.3333333333334V234.6666666666667z" /> + <glyph glyph-name="rowing" + unicode="&#xF608;" + horiz-adv-x="512" d=" M181.3333333333333 138.6666666666667L85.3333333333333 42.6666666666667L117.3333333333333 10.6666666666667L192 85.3333333333334H234.6666666666667L181.3333333333333 138.6666666666667M320 426.6666666666667C296.5333333333333 426.6666666666667 277.3333333333333 407.4666666666667 277.3333333333333 384S296.5333333333333 341.3333333333334 320 341.3333333333334S362.6666666666667 360.5333333333334 362.6666666666667 384S343.4666666666667 426.6666666666667 320 426.6666666666667M448 0L384 -64L320 0V32L168.7466666666667 183.2533333333333C162.1333333333333 182.1866666666667 155.7333333333333 181.3333333333334 149.3333333333333 181.3333333333334V227.84C184.7466666666667 227.2 226.3466666666667 246.4 248.96 271.36L278.8266666666667 304.4266666666666C282.88 309.3333333333333 288 312.5333333333333 293.5466666666666 315.0933333333333C299.7333333333333 318.08 306.7733333333333 320 314.0266666666667 320H314.6666666666667C341.3333333333333 320 362.6666666666667 298.6666666666667 362.6666666666667 271.7866666666667V149.3333333333334C362.6666666666667 131.2000000000001 355.2 114.7733333333333 343.04 103.04L266.6666666666667 179.4133333333333V227.84C253.2266666666666 216.7466666666667 236.16 206.08 217.8133333333333 198.1866666666666L352 64H384L448 0z" /> + <glyph glyph-name="rss" + unicode="&#xF46B;" + horiz-adv-x="512" d=" M131.84 114.3466666666667C157.44 114.3466666666667 178.3466666666666 93.44 178.3466666666666 67.84C178.3466666666666 42.6666666666667 157.44 21.3333333333334 131.84 21.3333333333334C106.6666666666667 21.3333333333334 85.3333333333333 42.6666666666667 85.3333333333333 67.84C85.3333333333333 93.44 106.24 114.3466666666667 131.84 114.3466666666667M85.3333333333333 353.28C268.5866666666667 353.28 417.2800000000001 204.5866666666667 417.2800000000001 21.3333333333334H356.9066666666668C356.9066666666668 171.3066666666667 235.3066666666668 292.9066666666667 85.3333333333334 292.9066666666667V353.28M85.3333333333334 232.5333333333333C202.0266666666667 232.5333333333333 296.5333333333334 138.0266666666667 296.5333333333334 21.3333333333334H236.1600000000001C236.1600000000001 104.5333333333333 168.5333333333334 172.16 85.3333333333334 172.16V232.5333333333334z" /> + <glyph glyph-name="rss-box" + unicode="&#xF46C;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M160 128C142.2933333333333 128 128 113.7066666666667 128 96S142.2933333333333 64 160 64S192 78.2933333333334 192 96S177.7066666666667 128 160 128M128 234.6666666666667V192C198.6133333333334 192 256 134.6133333333334 256 64H298.6666666666667C298.6666666666667 158.2933333333334 222.2933333333333 234.6666666666667 128 234.6666666666667M128 320V277.3333333333334C245.76 277.3333333333334 341.3333333333333 181.76 341.3333333333333 64H384C384 205.44 269.44 320 128 320z" /> + <glyph glyph-name="ruler" + unicode="&#xF46D;" + horiz-adv-x="512" d=" M29.6533333333333 56.3200000000001L67.4133333333333 93.8666666666667L97.7066666666667 64L120.32 86.4L90.0266666666667 116.48L120.32 146.7733333333334L173.0133333333334 93.8666666666667L195.6266666666667 116.4800000000001L142.9333333333333 169.3866666666668L173.0133333333334 199.4666666666668L203.3066666666667 169.3866666666668L225.92 192L195.6266666666667 222.08L225.92 252.3733333333334L278.6133333333334 199.4666666666667L301.2266666666667 222.08L248.5333333333334 274.9866666666667L278.6133333333334 305.0666666666667L308.6933333333334 274.9866666666667L331.52 297.6L301.2266666666667 327.6800000000001L331.52 357.9733333333334L384 305.0666666666667L406.8266666666667 327.68L354.1333333333334 380.5866666666667L391.6800000000001 418.3466666666667L482.3466666666667 327.68L120.32 -34.3466666666666L29.6533333333333 56.3200000000001z" /> + <glyph glyph-name="run" + unicode="&#xF46E;" + horiz-adv-x="512" d=" M365.2266666666667 234.6666666666667L342.1866666666666 273.4933333333334L326.6133333333333 212.2666666666667L379.7333333333333 115.4133333333334V-21.3333333333333H341.3333333333333V85.3333333333334L291.6266666666667 151.68L257.4933333333334 55.4666666666667L154.6666666666667 10.6666666666667L132.2666666666667 42.6666666666667L221.6533333333333 95.36L275.4133333333333 305.7066666666667L230.4 291.6266666666667V213.3333333333334H192V324.2666666666667L307.6266666666667 360.3200000000001L318.2933333333333 362.0266666666667C331.52 362.0266666666667 343.04 354.7733333333334 349.44 344.1066666666667L392.1066666666667 273.0666666666667H469.3333333333333V234.6666666666667H365.2266666666667M362.6666666666667 366.9333333333334C341.3333333333333 366.9333333333334 324.2666666666667 384 324.2666666666667 405.3333333333334S341.3333333333333 443.7333333333334 362.6666666666667 443.7333333333334S401.0666666666667 426.6666666666667 401.0666666666667 405.3333333333333S384 366.9333333333334 362.6666666666667 366.9333333333334M149.3333333333333 256V213.3333333333334H85.3333333333333C73.6 213.3333333333334 64 222.9333333333333 64 234.6666666666667S73.6 256 85.3333333333333 256H149.3333333333333M197.3333333333333 170.6666666666667L186.6666666666667 128H106.6666666666667C94.9333333333333 128 85.3333333333333 137.6 85.3333333333333 149.3333333333334S94.9333333333333 170.6666666666667 106.6666666666667 170.6666666666667H197.3333333333333M149.3333333333333 341.3333333333334V298.6666666666667H64C52.2666666666667 298.6666666666667 42.6666666666667 308.2666666666667 42.6666666666667 320S52.2666666666667 341.3333333333334 64 341.3333333333334H149.3333333333333z" /> + <glyph glyph-name="sale" + unicode="&#xF46F;" + horiz-adv-x="512" d=" M397.8666666666666 387.2L410.88 304.8533333333334L485.7599999999999 266.6666666666667L448 192L485.9733333333334 117.3333333333334L410.4533333333334 79.1466666666667L397.4400000000001 -3.1999999999999L314.4533333333334 9.8133333333334L255.3600000000001 -49.0666666666666L196.0533333333334 10.6666666666667L113.7066666666667 -2.9866666666666L100.4800000000001 80.0000000000001L26.0266666666667 117.9733333333334L64 192.64L26.24 266.6666666666667L101.12 305.2800000000001L114.1333333333334 386.9866666666667L196.6933333333333 373.3333333333334L256 433.28L315.0933333333333 374.1866666666667L397.8666666666666 387.2M202.6666666666667 298.6666666666667C184.96 298.6666666666667 170.6666666666667 284.3733333333334 170.6666666666667 266.6666666666667S184.96 234.6666666666667 202.6666666666667 234.6666666666667S234.6666666666667 248.96 234.6666666666667 266.6666666666667S220.3733333333333 298.6666666666667 202.6666666666667 298.6666666666667M309.3333333333333 149.3333333333334C291.6266666666667 149.3333333333334 277.3333333333333 135.04 277.3333333333333 117.3333333333334S291.6266666666667 85.3333333333334 309.3333333333333 85.3333333333334S341.3333333333333 99.6266666666667 341.3333333333333 117.3333333333334S327.04 149.3333333333334 309.3333333333333 149.3333333333334M179.4133333333333 85.3333333333334L362.6666666666667 268.5866666666667L332.5866666666667 298.6666666666667L149.3333333333333 115.4133333333334L179.4133333333333 85.3333333333334z" /> + <glyph glyph-name="satellite" + unicode="&#xF470;" + horiz-adv-x="512" d=" M106.6666666666667 64L181.3333333333333 160L234.6666666666667 96L309.3333333333333 192L405.3333333333333 64M106.6666666666667 192V234.6666666666667C165.5466666666667 234.6666666666667 213.3333333333333 282.4533333333334 213.3333333333333 341.3333333333334H256C256 258.7733333333333 189.2266666666667 192 106.6666666666667 192M106.6666666666667 341.3333333333334H170.6666666666667C170.6666666666667 305.92 142.08 277.3333333333334 106.6666666666667 277.3333333333334M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="satellite-variant" + unicode="&#xF471;" + horiz-adv-x="512" d=" M247.8933333333333 426.6666666666667L368.64 305.7066666666667L323.4133333333333 260.48L278.1866666666666 305.7066666666667L247.8933333333333 275.4133333333334L297.6 225.92L272.8533333333333 200.96L282.4533333333333 191.1466666666667C302.2933333333333 200.32 326.6133333333333 196.9066666666667 342.8266666666667 180.48L267.52 105.1733333333334C251.0933333333334 121.3866666666667 247.68 145.7066666666667 256.8533333333334 165.5466666666667L247.04 175.1466666666667L222.08 150.4L172.5866666666667 200.1066666666667L142.2933333333333 169.8133333333333L187.52 124.5866666666667L142.2933333333333 79.36L21.3333333333333 200.1066666666667L66.9866666666667 245.3333333333334L112.2133333333333 200.1066666666667L142.2933333333333 230.1866666666667L81.92 290.56C65.28 307.2 65.28 334.2933333333333 81.92 350.9333333333334L97.0666666666667 366.08C113.7066666666667 382.7200000000001 140.8 382.7200000000001 157.44 366.08L217.8133333333333 305.7066666666667L247.8933333333334 335.7866666666667L202.6666666666667 381.0133333333333L247.8933333333333 426.6666666666667M384 149.3333333333334C384 102.1866666666667 345.8133333333334 64 298.6666666666667 64V106.6666666666667C322.1333333333334 106.6666666666667 341.3333333333333 125.8666666666667 341.3333333333333 149.3333333333334H384M469.3333333333333 149.3333333333334C469.3333333333333 55.04 392.9600000000001 -21.3333333333333 298.6666666666667 -21.3333333333333V21.3333333333334C369.28 21.3333333333334 426.6666666666667 78.72 426.6666666666667 149.3333333333334H469.3333333333333z" /> + <glyph glyph-name="saxophone" + unicode="&#xF609;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333C73.6 405.3333333333333 64 395.7333333333334 64 384S73.6 362.6666666666667 85.3333333333333 362.6666666666667C120.7466666666667 362.6666666666667 149.3333333333333 334.0800000000001 149.3333333333333 298.6666666666667V117.3333333333334C149.3333333333333 40.5333333333333 211.2 -21.3333333333333 288 -21.3333333333333S426.6666666666667 40.5333333333333 426.6666666666667 117.3333333333334V170.6666666666667C438.4 170.6666666666667 448 180.2666666666667 448 192S438.4 213.3333333333334 426.6666666666667 213.3333333333334H298.6666666666667C286.9333333333333 213.3333333333334 277.3333333333333 203.7333333333334 277.3333333333333 192S286.9333333333333 170.6666666666667 298.6666666666667 170.6666666666667V128C298.6666666666667 116.2666666666667 289.0666666666667 106.6666666666667 277.3333333333333 106.6666666666667S256 116.2666666666667 256 128V213.3333333333334C267.7333333333334 213.3333333333334 277.3333333333333 222.9333333333333 277.3333333333333 234.6666666666667S267.7333333333334 256 256 256V277.3333333333334C267.7333333333334 277.3333333333334 277.3333333333333 286.9333333333334 277.3333333333333 298.6666666666667S267.7333333333334 320 256 320V330.6666666666667C256 371.8400000000001 222.5066666666667 405.3333333333333 181.3333333333333 405.3333333333333H85.3333333333333z" /> + <glyph glyph-name="scale" + unicode="&#xF472;" + horiz-adv-x="512" d=" M180.48 126.72L150.4 96.64L121.1733333333334 125.8666666666667C102.8266666666667 102.1866666666667 90.4533333333333 73.8133333333334 86.6133333333334 42.6666666666667H128V1e-13H42.6666666666667V21.3333333333334C42.6666666666667 124.5866666666668 116.0533333333333 210.5600000000001 213.3333333333333 230.4000000000001V273.0666666666668L42.6666666666667 341.3333333333334V384H469.3333333333333V341.3333333333334L298.6666666666667 273.0666666666667V230.4000000000001C395.9466666666666 210.56 469.3333333333333 124.5866666666667 469.3333333333333 21.3333333333334V0H384V42.6666666666667H425.3866666666667C421.5466666666667 73.8133333333334 409.1733333333333 102.1866666666667 390.8266666666667 125.8666666666667L361.6 96.64L331.52 126.72L360.7466666666667 156.16C337.0666666666667 174.5066666666667 308.48 186.88 277.3333333333333 190.72V149.3333333333334H234.6666666666667V190.72C203.52 186.88 174.9333333333333 174.5066666666667 151.2533333333333 156.16L180.48 126.72M256 64C279.4666666666667 64 298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334S279.4666666666667 -21.3333333333333 256 -21.3333333333333C249.1733333333333 -21.3333333333333 242.7733333333334 -19.84 237.2266666666667 -16.8533333333333L155.0933333333333 21.3333333333334L237.2266666666667 59.52C242.7733333333333 62.5066666666667 249.1733333333333 64 256 64z" /> + <glyph glyph-name="scale-balance" + unicode="&#xF5D1;" + horiz-adv-x="512" d=" M256 384C228.9066666666667 384 204.8 366.9333333333334 195.84 341.3333333333334H64V298.6666666666667H105.6L42.6666666666667 149.3333333333334C32.64 106.6666666666667 64 85.3333333333334 117.3333333333333 85.3333333333334S203.9466666666666 106.6666666666667 192 149.3333333333334L129.0666666666667 298.6666666666667H195.6266666666667C202.6666666666667 280.5333333333334 216.5333333333333 266.6666666666667 234.6666666666667 259.6266666666667V21.3333333333334H42.6666666666667V-21.3333333333333H469.3333333333333V21.3333333333334H277.3333333333333V259.8400000000001C295.4666666666667 266.6666666666667 309.3333333333333 280.5333333333333 316.16 298.6666666666667H382.9333333333333L320 149.3333333333334C309.9733333333333 106.6666666666667 341.3333333333333 85.3333333333334 394.6666666666667 85.3333333333334S481.28 106.6666666666667 469.3333333333333 149.3333333333334L406.4 298.6666666666667H448V341.3333333333334H316.3733333333334C307.2 366.9333333333334 283.0933333333333 384 256 384M256 341.3333333333334C267.7333333333334 341.3333333333334 277.3333333333333 331.7333333333334 277.3333333333333 320S267.7333333333334 298.6666666666667 256 298.6666666666667S234.6666666666667 308.2666666666667 234.6666666666667 320S244.2666666666667 341.3333333333334 256 341.3333333333334M117.3333333333333 229.3333333333334L149.3333333333333 149.3333333333334H85.3333333333333L117.3333333333333 229.3333333333334M394.6666666666667 229.3333333333334L426.6666666666667 149.3333333333334H362.6666666666667L394.6666666666667 229.3333333333334z" /> + <glyph glyph-name="scale-bathroom" + unicode="&#xF473;" + horiz-adv-x="512" d=" M106.6666666666667 405.3333333333333H405.3333333333333C428.8 405.3333333333333 448 386.1333333333334 448 362.6666666666667V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V362.6666666666667C64 386.1333333333334 83.2 405.3333333333333 106.6666666666667 405.3333333333333M256 362.6666666666667C208.8533333333333 362.6666666666667 170.6666666666667 324.48 170.6666666666667 277.3333333333334H240.2133333333333L231.4666666666667 336.4266666666667L275.2 277.3333333333334H341.3333333333333C341.3333333333333 324.48 303.1466666666667 362.6666666666667 256 362.6666666666667M106.6666666666667 234.6666666666667V21.3333333333334H405.3333333333333V234.6666666666667H106.6666666666667z" /> + <glyph glyph-name="school" + unicode="&#xF474;" + horiz-adv-x="512" d=" M256 384L21.3333333333333 256L256 128L448 232.7466666666667V85.3333333333334H490.6666666666666V256M106.6666666666667 166.8266666666667V81.4933333333333L256 0L405.3333333333333 81.4933333333333V166.8266666666667L256 85.3333333333334L106.6666666666667 166.8266666666667z" /> + <glyph glyph-name="screen-rotation" + unicode="&#xF475;" + horiz-adv-x="512" d=" M160 -10.6666666666666C90.6666666666667 22.6133333333333 40.7466666666667 90.4533333333334 33.0666666666667 170.6666666666667H1.0666666666667C11.9466666666667 39.2533333333333 121.8133333333333 -64 256 -64L270.08 -63.36L188.8 17.92M316.3733333333334 -4.0533333333333L59.9466666666667 252.3733333333334L195.6266666666667 388.0533333333334L452.0533333333333 131.6266666666667M218.24 410.6666666666667C205.6533333333333 423.2533333333334 185.3866666666667 423.2533333333334 173.0133333333333 410.6666666666667L37.3333333333333 274.9866666666667C24.7466666666667 262.4000000000001 24.7466666666667 242.1333333333334 37.3333333333333 229.76L293.76 -26.6666666666666C306.3466666666667 -39.2533333333333 326.6133333333333 -39.2533333333333 338.9866666666667 -26.6666666666666L474.6666666666666 109.0133333333333C487.2533333333333 121.6 487.2533333333333 141.8666666666667 474.6666666666666 154.24L218.24 410.6666666666667M352 394.6666666666667C421.3333333333333 361.1733333333334 471.2533333333333 293.5466666666667 478.9333333333333 213.3333333333334H510.9333333333333C500.0533333333333 344.7466666666667 390.1866666666666 448 256 448L241.92 447.36L323.2 366.0800000000001L352 394.6666666666667z" /> + <glyph glyph-name="screen-rotation-lock" + unicode="&#xF476;" + horiz-adv-x="512" d=" M358.4 394.6666666666667C358.4 414.7200000000001 374.6133333333334 430.9333333333334 394.6666666666667 430.9333333333334S430.9333333333333 414.7200000000001 430.9333333333333 394.6666666666667V384H358.4V394.6666666666667M341.3333333333333 256H448C459.7333333333333 256 469.3333333333333 265.6 469.3333333333333 277.3333333333334V362.6666666666667C469.3333333333333 374.4 459.7333333333333 384 448 384V394.6666666666667C448 424.1066666666667 424.1066666666667 448 394.6666666666667 448S341.3333333333333 424.1066666666667 341.3333333333333 394.6666666666667V384C329.6 384 320 374.4 320 362.6666666666667V277.3333333333334C320 265.6 329.6 256 341.3333333333333 256M180.6933333333333 10.6666666666667C110.9333333333333 43.9466666666667 61.0133333333333 111.7866666666667 53.3333333333333 192H21.3333333333333C32 60.5866666666667 142.08 -42.6666666666666 276.2666666666667 -42.6666666666666L290.3466666666667 -42.0266666666666L209.0666666666666 39.4666666666667L180.6933333333333 10.6666666666667M496 175.5733333333334L441.1733333333333 230.4000000000001L411.0933333333333 200.32L458.6666666666666 152.96L337.7066666666667 32L96 273.7066666666667L216.96 394.6666666666667L261.76 349.6533333333334L291.84 379.7333333333334L239.5733333333333 432C226.9866666666667 444.5866666666667 206.72 444.5866666666667 194.3466666666666 432L58.6666666666667 296.32C46.08 283.7333333333334 46.08 263.4666666666667 58.6666666666667 251.0933333333334L315.0933333333333 -5.3333333333333C327.68 -17.92 347.9466666666666 -17.92 360.32 -5.3333333333333L496 130.3466666666667C508.5866666666666 142.9333333333333 508.5866666666666 163.2 496 175.5733333333334z" /> + <glyph glyph-name="screwdriver" + unicode="&#xF477;" + horiz-adv-x="512" d=" M384 408.96C373.3333333333333 408.96 362.6666666666667 405.3333333333333 353.92 396.5866666666667L170.6666666666667 213.3333333333334L202.6666666666667 181.3333333333334L128 106.6666666666667H85.3333333333333L42.6666666666667 21.3333333333334L85.3333333333333 -21.3333333333333L170.6666666666667 21.3333333333334V64L245.3333333333333 138.6666666666667L277.3333333333333 106.6666666666667L460.5866666666666 289.92C473.8133333333333 309.3333333333334 477.2266666666667 333.44 460.5866666666666 350.0800000000001L414.08 396.5866666666667C405.3333333333333 405.3333333333333 394.6666666666667 408.96 384 408.96M384 362.6666666666667L426.6666666666667 320L277.3333333333333 170.6666666666667L234.6666666666667 213.3333333333334L384 362.6666666666667z" /> + <glyph glyph-name="script" + unicode="&#xF478;" + horiz-adv-x="512" d=" M298.6666666666667 21.3333333333334C322.1333333333334 21.3333333333334 341.3333333333333 40.5333333333333 341.3333333333333 64V341.3333333333334H192C180.2666666666667 341.3333333333334 170.6666666666667 331.7333333333334 170.6666666666667 320V106.6666666666667H106.6666666666667V341.3333333333334C106.6666666666667 376.7466666666667 135.2533333333333 405.3333333333333 170.6666666666667 405.3333333333333H405.3333333333333C440.7466666666667 405.3333333333333 469.3333333333333 376.7466666666667 469.3333333333333 341.3333333333334V320H384V42.6666666666667C384 7.2533333333333 355.4133333333333 -21.3333333333333 320 -21.3333333333333H106.6666666666667C71.2533333333333 -21.3333333333333 42.6666666666667 7.2533333333333 42.6666666666667 42.6666666666667V64H256C256 40.5333333333333 275.2 21.3333333333334 298.6666666666667 21.3333333333334z" /> + <glyph glyph-name="sd" + unicode="&#xF479;" + horiz-adv-x="512" d=" M384 277.3333333333334H341.3333333333333V362.6666666666667H384M320 277.3333333333334H277.3333333333333V362.6666666666667H320M256 277.3333333333334H213.3333333333333V362.6666666666667H256M384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="seal" + unicode="&#xF47A;" + horiz-adv-x="512" d=" M434.9866666666667 34.7733333333333L349.44 64L320 -21.3333333333333L254.2933333333333 106.6666666666667L192 -21.3333333333333L162.56 64L77.0133333333333 34.7733333333333L139.3066666666667 162.7733333333333C118.8266666666667 188.3733333333333 106.6666666666667 220.8 106.6666666666667 256C106.6666666666667 338.56 173.44 405.3333333333333 256 405.3333333333333S405.3333333333333 338.56 405.3333333333333 256C405.3333333333333 220.8 393.1733333333333 188.3733333333333 372.6933333333333 162.7733333333333L434.9866666666667 34.7733333333333M149.3333333333333 256L206.72 227.4133333333334L202.6666666666667 163.4133333333334L256 198.8266666666667L309.3333333333333 163.6266666666667L305.7066666666667 227.4133333333334L362.6666666666667 256L305.4933333333334 284.8L309.3333333333333 348.3733333333334L256 313.3866666666667L202.6666666666667 348.8L206.2933333333333 284.5866666666667L149.3333333333333 256z" /> + <glyph glyph-name="seat-flat" + unicode="&#xF47B;" + horiz-adv-x="512" d=" M469.3333333333333 213.3333333333334V170.6666666666667H192V298.6666666666667H384C431.1466666666667 298.6666666666667 469.3333333333333 260.48 469.3333333333333 213.3333333333334M42.6666666666667 149.3333333333334V106.6666666666667H170.6666666666667V64H341.3333333333333V106.6666666666667H469.3333333333333V149.3333333333334M152.32 189.8666666666667C177.0666666666667 215.2533333333333 176.64 256 151.4666666666667 280.32C126.08 305.0666666666667 85.3333333333333 304.64 61.0133333333333 279.4666666666667C36.2666666666667 254.08 36.6933333333333 213.3333333333334 61.8666666666667 189.0133333333333C87.2533333333333 164.2666666666667 128 164.6933333333333 152.32 189.8666666666667z" /> + <glyph glyph-name="seat-flat-angled" + unicode="&#xF47C;" + horiz-adv-x="512" d=" M474.6666666666666 143.1466666666667L459.9466666666666 102.8266666666667L196.2666666666667 198.1866666666667L240.64 318.9333333333334L423.2533333333334 253.0133333333333C468.0533333333333 236.8 490.6666666666666 187.7333333333334 474.6666666666666 143.1466666666667M32 189.0133333333333L170.6666666666667 138.6666666666667V42.6666666666667H341.3333333333333V77.44L437.3333333333333 42.6666666666667L452.48 82.9866666666667L46.72 229.3333333333334M155.7333333333334 230.4000000000001C187.52 245.3333333333334 200.96 283.9466666666667 185.8133333333333 315.7333333333334C170.6666666666667 347.52 132.2666666666667 360.9600000000001 100.2666666666667 345.6C68.48 330.6666666666667 55.04 292.2666666666667 70.4 260.2666666666667C85.3333333333333 228.48 123.7333333333334 215.04 155.7333333333334 230.4z" /> + <glyph glyph-name="seat-individual-suite" + unicode="&#xF47D;" + horiz-adv-x="512" d=" M149.3333333333333 170.6666666666667C184.7466666666667 170.6666666666667 213.3333333333333 199.2533333333333 213.3333333333333 234.6666666666667S184.7466666666667 298.6666666666667 149.3333333333333 298.6666666666667S85.3333333333333 270.0800000000001 85.3333333333333 234.6666666666667S113.92 170.6666666666667 149.3333333333333 170.6666666666667M405.3333333333333 298.6666666666667H234.6666666666667V149.3333333333334H64V298.6666666666667H21.3333333333333V85.3333333333334H490.6666666666666V213.3333333333334C490.6666666666666 260.48 452.48 298.6666666666667 405.3333333333333 298.6666666666667z" /> + <glyph glyph-name="seat-legroom-extra" + unicode="&#xF47E;" + horiz-adv-x="512" d=" M85.3333333333333 192V384H42.6666666666667V192C42.6666666666667 133.12 90.4533333333333 85.3333333333334 149.3333333333333 85.3333333333334H277.3333333333333V128H149.3333333333333C113.92 128 85.3333333333333 156.5866666666667 85.3333333333333 192M487.04 80.2133333333333C478.9333333333333 95.9999999999999 459.52 100.9066666666666 443.7333333333333 93.6533333333333L420.4799999999999 82.9866666666666L347.7333333333333 231.8933333333333C340.48 246.4000000000001 325.76 256 309.3333333333333 256H234.6666666666667V384H106.6666666666667V213.3333333333334C106.6666666666667 177.92 135.2533333333333 149.3333333333334 170.6666666666667 149.3333333333334H320L392.7466666666667 0L472.1066666666666 36.2666666666667C488.5333333333333 43.9466666666667 495.5733333333333 64 487.04 80.2133333333333z" /> + <glyph glyph-name="seat-legroom-normal" + unicode="&#xF47F;" + horiz-adv-x="512" d=" M106.6666666666667 192V384H64V192C64 133.12 111.7866666666667 85.3333333333334 170.6666666666667 85.3333333333334H298.6666666666667V128H170.6666666666667C135.2533333333333 128 106.6666666666667 156.5866666666667 106.6666666666667 192M437.3333333333333 64H405.3333333333333V213.3333333333334C405.3333333333333 236.8 386.1333333333334 256 362.6666666666667 256H256V384H128V213.3333333333334C128 177.92 156.5866666666667 149.3333333333334 192 149.3333333333334H341.3333333333333V0H437.3333333333333C455.04 0 469.3333333333333 14.2933333333334 469.3333333333333 32S455.04 64 437.3333333333333 64z" /> + <glyph glyph-name="seat-legroom-reduced" + unicode="&#xF480;" + horiz-adv-x="512" d=" M426.0266666666667 38.4C429.8666666666666 17.92 414.2933333333333 0 394.6666666666667 0H298.6666666666667V64L320 149.3333333333334H192C156.5866666666667 149.3333333333334 128 177.92 128 213.3333333333334V384H256V256H362.6666666666667C386.1333333333334 256 405.3333333333333 236.8 405.3333333333333 213.3333333333334L362.6666666666667 64H393.3866666666667C408.9600000000001 64 423.04 53.3333333333334 426.0266666666667 38.4M106.6666666666667 192V384H64V192C64 133.12 111.7866666666667 85.3333333333334 170.6666666666667 85.3333333333334H256V128H170.6666666666667C135.2533333333333 128 106.6666666666667 156.5866666666667 106.6666666666667 192z" /> + <glyph glyph-name="seat-recline-extra" + unicode="&#xF481;" + horiz-adv-x="512" d=" M114.1333333333333 327.68C94.9333333333333 341.3333333333334 90.24 367.7866666666667 103.68 387.2C117.3333333333333 406.4 143.7866666666666 411.0933333333334 163.2 397.6533333333334C182.4 384 187.0933333333333 357.5466666666667 173.6533333333333 338.1333333333334C160 318.9333333333334 133.5466666666666 314.24 114.1333333333333 327.68M341.3333333333333 42.6666666666667H190.5066666666667C158.9333333333333 42.6666666666667 132.0533333333333 65.7066666666667 127.36 96.8533333333334L85.3333333333333 298.6666666666667H42.6666666666667L85.3333333333333 90.4533333333334C93.2266666666667 38.4 138.0266666666667 0 190.72 0H341.3333333333333M346.24 128H242.1333333333334L220.16 215.4666666666667C253.8666666666667 196.48 290.1333333333334 182.6133333333334 330.0266666666667 189.44V234.6666666666667C295.2533333333334 228.2666666666667 256.6400000000001 240.64 229.9733333333334 261.5466666666667L194.9866666666667 288.64C190.08 292.48 184.5333333333333 295.04 178.7733333333334 296.7466666666667C171.9466666666667 298.6666666666667 164.6933333333333 299.3066666666667 157.6533333333333 298.0266666666667H157.2266666666667C130.9866666666667 293.3333333333334 113.4933333333334 268.3733333333334 117.9733333333334 242.3466666666667L146.7733333333334 116.0533333333334C152.7466666666667 85.3333333333334 178.9866666666667 64 209.7066666666667 64H355.84L437.3333333333333 0L469.3333333333333 32" /> + <glyph glyph-name="seat-recline-normal" + unicode="&#xF482;" + horiz-adv-x="512" d=" M161.92 332.5866666666667C145.28 349.2266666666667 145.28 376.32 161.92 392.96C178.56 409.6 205.6533333333333 409.6 222.2933333333333 392.96C238.9333333333333 376.32 238.9333333333333 349.2266666666667 222.2933333333333 332.5866666666667C205.44 315.7333333333334 178.56 315.7333333333334 161.92 332.5866666666667M128 106.6666666666667V298.6666666666667H85.3333333333333V106.6666666666667C85.3333333333333 47.7866666666668 133.12 0 192 0H320V42.6666666666667H192C156.5866666666667 42.6666666666667 128 71.2533333333333 128 106.6666666666667M426.6666666666667 19.84L318.5066666666667 128H245.3333333333333V206.5066666666667C275.2 181.9733333333334 322.1333333333334 160 362.6666666666667 160V206.5066666666667C327.2533333333334 206.08 285.6533333333333 225.0666666666667 263.04 250.0266666666667L233.1733333333333 283.0933333333333C229.12 288 224 291.2 218.4533333333333 293.76C212.2666666666667 296.7466666666667 205.2266666666667 298.6666666666667 197.9733333333334 298.6666666666667H197.3333333333334C170.6666666666667 298.6666666666667 149.3333333333333 277.3333333333334 149.3333333333333 250.6666666666667V128C149.3333333333333 92.5866666666667 177.92 64 213.3333333333333 64H321.4933333333334L396.16 -10.6666666666666" /> + <glyph glyph-name="security" + unicode="&#xF483;" + horiz-adv-x="512" d=" M256 192H405.3333333333333C394.0266666666667 104.3200000000001 335.36 26.0266666666666 256 1.7066666666666V192H106.6666666666667V313.6L256 379.9466666666667M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.5733333333333 256 -42.6666666666666C366.08 -15.5733333333333 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="security-network" + unicode="&#xF484;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V99.4133333333334C172.16 125.2266666666667 128 192 128 263.04V348.3733333333334L256 405.3333333333333L384 348.3733333333334V263.04C384 192 339.84 125.2266666666667 277.3333333333333 99.4133333333334V64M256 362.6666666666667L170.6666666666667 326.6133333333334V256H256V362.6666666666667M256 256V128C296.7466666666667 138.0266666666667 341.3333333333333 190.72 341.3333333333333 234.6666666666667V256H256z" /> + <glyph glyph-name="select" + unicode="&#xF485;" + horiz-adv-x="512" d=" M85.3333333333333 384H106.6666666666667V341.3333333333334H64V362.6666666666667C64 374.4 73.6 384 85.3333333333333 384M426.6666666666667 384C438.4 384 448 374.4 448 362.6666666666667V341.3333333333334H405.3333333333333V384H426.6666666666667M320 341.3333333333334V384H362.6666666666667V341.3333333333334H320M234.6666666666667 341.3333333333334V384H277.3333333333333V341.3333333333334H234.6666666666667M149.3333333333333 341.3333333333334V384H192V341.3333333333334H149.3333333333333M448 21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H405.3333333333333V42.6666666666667H448V21.3333333333334M320 0V42.6666666666667H362.6666666666667V0H320M234.6666666666667 0V42.6666666666667H277.3333333333333V0H234.6666666666667M149.3333333333333 0V42.6666666666667H192V0H149.3333333333333M85.3333333333333 0C73.6 0 64 9.6 64 21.3333333333334V42.6666666666667H106.6666666666667V0H85.3333333333333M64 128H106.6666666666667V85.3333333333334H64V128M448 128V85.3333333333334H405.3333333333333V128H448M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H405.3333333333333V213.3333333333334H448M64 298.6666666666667H106.6666666666667V256H64V298.6666666666667M448 298.6666666666667V256H405.3333333333333V298.6666666666667H448z" /> + <glyph glyph-name="select-all" + unicode="&#xF486;" + horiz-adv-x="512" d=" M192 256H320V128H192M149.3333333333333 85.3333333333334H362.6666666666667V298.6666666666667H149.3333333333333M320 341.3333333333334H362.6666666666667V384H320M320 0H362.6666666666667V42.6666666666667H320M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 256H448V298.6666666666667H405.3333333333333M405.3333333333333 0C428.8 0 448 19.2 448 42.6666666666667H405.3333333333333M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M192 384H149.3333333333333V341.3333333333334H192M64 85.3333333333334H106.6666666666667V128H64M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M405.3333333333333 384V341.3333333333334H448C448 364.8 428.8 384 405.3333333333333 384M277.3333333333333 384H234.6666666666667V341.3333333333334H277.3333333333333M64 256H106.6666666666667V298.6666666666667H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 341.3333333333334H106.6666666666667V384C83.2 384 64 364.8 64 341.3333333333334z" /> + <glyph glyph-name="select-inverse" + unicode="&#xF487;" + horiz-adv-x="512" d=" M106.6666666666667 384H149.3333333333333V341.3333333333334H192V384H234.6666666666667V341.3333333333334H277.3333333333333V384H320V341.3333333333334H362.6666666666667V384H405.3333333333333V341.3333333333334H448V298.6666666666667H405.3333333333333V256H448V213.3333333333334H405.3333333333333V170.6666666666667H448V128H405.3333333333333V85.3333333333334H448V42.6666666666667H405.3333333333333V0H362.6666666666667V42.6666666666667H320V0H277.3333333333333V42.6666666666667H234.6666666666667V0H192V42.6666666666667H149.3333333333333V0H106.6666666666667V42.6666666666667H64V85.3333333333334H106.6666666666667V128H64V170.6666666666667H106.6666666666667V213.3333333333334H64V256H106.6666666666667V298.6666666666667H64V341.3333333333334H106.6666666666667V384z" /> + <glyph glyph-name="select-off" + unicode="&#xF488;" + horiz-adv-x="512" d=" M21.3333333333333 356.9066666666667L48.64 384L448 -15.36L420.9066666666667 -42.6666666666666L362.6666666666667 15.5733333333334V0H320V42.6666666666667H335.5733333333333L106.6666666666667 271.5733333333334V256H64V298.6666666666667H79.5733333333333L21.3333333333333 356.9066666666667M426.6666666666667 384C438.4 384 448 374.4 448 362.6666666666667V341.3333333333334H405.3333333333333V384H426.6666666666667M320 341.3333333333334V384H362.6666666666667V341.3333333333334H320M234.6666666666667 341.3333333333334V384H277.3333333333333V341.3333333333334H234.6666666666667M149.3333333333333 341.3333333333334V384H192V341.3333333333334H149.3333333333333M234.6666666666667 0V42.6666666666667H277.3333333333333V0H234.6666666666667M149.3333333333333 0V42.6666666666667H192V0H149.3333333333333M85.3333333333333 0C73.6 0 64 9.6 64 21.3333333333334V42.6666666666667H106.6666666666667V0H85.3333333333333M64 128H106.6666666666667V85.3333333333334H64V128M448 128V85.3333333333334H405.3333333333333V128H448M64 213.3333333333334H106.6666666666667V170.6666666666667H64V213.3333333333334M448 213.3333333333334V170.6666666666667H405.3333333333333V213.3333333333334H448M448 298.6666666666667V256H405.3333333333333V298.6666666666667H448z" /> + <glyph glyph-name="selection" + unicode="&#xF489;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667V298.6666666666667H85.3333333333333V362.6666666666667H42.6666666666667M149.3333333333333 362.6666666666667H42.6666666666667C42.6666666666667 386.3466666666667 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333H149.3333333333333V362.6666666666667M469.3333333333333 362.6666666666667V298.6666666666667H426.6666666666667V362.6666666666667H469.3333333333333M362.6666666666667 362.6666666666667H469.3333333333333C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333H362.6666666666667V362.6666666666667M469.3333333333333 21.3333333333334V85.3333333333334H426.6666666666667V21.3333333333334H469.3333333333333M362.6666666666667 21.3333333333334H469.3333333333333C469.3333333333333 -2.3466666666666 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H362.6666666666667V21.3333333333334M42.6666666666667 21.3333333333334V85.3333333333334H85.3333333333333V21.3333333333334H42.6666666666667M149.3333333333333 21.3333333333334H42.6666666666667C42.6666666666667 -2.3466666666666 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H149.3333333333333V21.3333333333334M213.3333333333333 405.3333333333333H298.6666666666667V362.6666666666667H213.3333333333333V405.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V-21.3333333333333H213.3333333333333V21.3333333333334M426.6666666666667 234.6666666666667H469.3333333333333V149.3333333333334H426.6666666666667V234.6666666666667M42.6666666666667 234.6666666666667H85.3333333333333V149.3333333333334H42.6666666666667V234.6666666666667z" /> + <glyph glyph-name="send" + unicode="&#xF48A;" + horiz-adv-x="512" d=" M42.6666666666667 0L490.6666666666666 192L42.6666666666667 384V234.6666666666667L362.6666666666667 192L42.6666666666667 149.3333333333334V0z" /> + <glyph glyph-name="serial-port" + unicode="&#xF65C;" + horiz-adv-x="512" d=" M149.3333333333333 384H362.6666666666667V341.3333333333334H405.3333333333333V277.3333333333334H341.3333333333333V149.3333333333334H170.6666666666667V277.3333333333334H106.6666666666667V341.3333333333334H149.3333333333333V384M362.6666666666667 256H405.3333333333333V149.3333333333334H362.6666666666667V256M234.6666666666667 128H277.3333333333333V-21.3333333333333H234.6666666666667V128M106.6666666666667 256H149.3333333333333V149.3333333333334H106.6666666666667V256z" /> + <glyph glyph-name="server" + unicode="&#xF48B;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667H426.6666666666667C438.4 426.6666666666667 448 417.0666666666667 448 405.3333333333333V320C448 308.2666666666667 438.4 298.6666666666667 426.6666666666667 298.6666666666667H85.3333333333333C73.6 298.6666666666667 64 308.2666666666667 64 320V405.3333333333333C64 417.0666666666667 73.6 426.6666666666667 85.3333333333333 426.6666666666667M85.3333333333333 256H426.6666666666667C438.4 256 448 246.4000000000001 448 234.6666666666667V149.3333333333334C448 137.6 438.4 128 426.6666666666667 128H85.3333333333333C73.6 128 64 137.6 64 149.3333333333334V234.6666666666667C64 246.4000000000001 73.6 256 85.3333333333333 256M85.3333333333333 85.3333333333334H426.6666666666667C438.4 85.3333333333334 448 75.7333333333334 448 64V-21.3333333333333C448 -33.0666666666667 438.4 -42.6666666666666 426.6666666666667 -42.6666666666666H85.3333333333333C73.6 -42.6666666666666 64 -33.0666666666667 64 -21.3333333333333V64C64 75.7333333333334 73.6 85.3333333333334 85.3333333333333 85.3333333333334M192 341.3333333333334H213.3333333333333V384H192V341.3333333333334M192 170.6666666666667H213.3333333333333V213.3333333333334H192V170.6666666666667M192 0H213.3333333333333V42.6666666666667H192V0M106.6666666666667 384V341.3333333333334H149.3333333333333V384H106.6666666666667M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M106.6666666666667 42.6666666666667V0H149.3333333333333V42.6666666666667H106.6666666666667z" /> + <glyph glyph-name="server-minus" + unicode="&#xF48C;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M170.6666666666667 106.6666666666667H341.3333333333333V64H170.6666666666667V106.6666666666667z" /> + <glyph glyph-name="server-network" + unicode="&#xF48D;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H85.3333333333333C73.6 106.6666666666667 64 116.2666666666667 64 128V213.3333333333334C64 225.0666666666667 73.6 234.6666666666667 85.3333333333333 234.6666666666667H426.6666666666667C438.4 234.6666666666667 448 225.0666666666667 448 213.3333333333334V128C448 116.2666666666667 438.4 106.6666666666667 426.6666666666667 106.6666666666667H277.3333333333333V64M85.3333333333333 405.3333333333333H426.6666666666667C438.4 405.3333333333333 448 395.7333333333334 448 384V298.6666666666667C448 286.9333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334H85.3333333333333C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667V384C64 395.7333333333334 73.6 405.3333333333333 85.3333333333333 405.3333333333333M192 320H213.3333333333333V362.6666666666667H192V320M192 149.3333333333334H213.3333333333333V192H192V149.3333333333334M106.6666666666667 362.6666666666667V320H149.3333333333333V362.6666666666667H106.6666666666667M106.6666666666667 192V149.3333333333334H149.3333333333333V192H106.6666666666667z" /> + <glyph glyph-name="server-network-off" + unicode="&#xF48E;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H335.5733333333333L277.3333333333333 100.9066666666667V64M469.3333333333333 42.6666666666667V17.4933333333333L444.16 42.6666666666667H469.3333333333333M448 -15.36L420.9066666666667 -42.6666666666666L378.24 0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H85.3333333333333C73.6 106.6666666666667 64 116.2666666666667 64 128V213.3333333333334C64 225.0666666666667 73.6 234.6666666666667 85.3333333333333 234.6666666666667H143.5733333333333L100.9066666666667 277.3333333333334H85.3333333333333C73.6 277.3333333333334 64 286.9333333333334 64 298.6666666666667V314.24L21.3333333333333 356.9066666666667L48.64 384L448 -15.36M85.3333333333333 405.3333333333333H426.6666666666667C438.4 405.3333333333333 448 395.7333333333334 448 384V298.6666666666667C448 286.9333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334H209.4933333333334L149.3333333333333 337.4933333333334V362.6666666666667H124.16L81.92 405.3333333333333H85.3333333333333M426.6666666666667 234.6666666666667C438.4 234.6666666666667 448 225.0666666666667 448 213.3333333333334V128C448 116.2666666666667 438.4 106.6666666666667 426.6666666666667 106.6666666666667H380.16L252.16 234.6666666666667H426.6666666666667M192 320H213.3333333333333V362.6666666666667H192V320M192 149.3333333333334H213.3333333333333V164.9066666666667L192 186.24V149.3333333333334M106.6666666666667 192V149.3333333333334H149.3333333333333V192H106.6666666666667z" /> + <glyph glyph-name="server-off" + unicode="&#xF48F;" + horiz-adv-x="512" d=" M85.3333333333333 426.6666666666667H426.6666666666667C438.4 426.6666666666667 448 417.0666666666667 448 405.3333333333333V320C448 308.2666666666667 438.4 298.6666666666667 426.6666666666667 298.6666666666667H188.16L145.4933333333334 341.3333333333334H149.3333333333333V384H106.6666666666667V380.16L68.48 418.3466666666667C72.32 423.4666666666667 78.5066666666667 426.6666666666667 85.3333333333333 426.6666666666667M469.3333333333333 -36.6933333333333L442.24 -64L420.9066666666667 -42.6666666666666H85.3333333333333C73.6 -42.6666666666666 64 -33.0666666666667 64 -21.3333333333333V64C64 75.7333333333334 73.6 85.3333333333334 85.3333333333333 85.3333333333334H292.9066666666667L250.24 128H85.3333333333333C73.6 128 64 137.6 64 149.3333333333334V234.6666666666667C64 246.4000000000001 73.6 256 85.3333333333333 256H122.24L78.5066666666667 299.7333333333334C72.1066666666667 301.8666666666667 67.2 306.7733333333333 65.0666666666667 313.1733333333334L21.3333333333333 356.9066666666667L48.64 384L469.3333333333333 -36.6933333333333M426.6666666666667 256C438.4 256 448 246.4000000000001 448 234.6666666666667V149.3333333333334C448 137.6 438.4 128 426.6666666666667 128H358.8266666666667L230.8266666666667 256H426.6666666666667M426.6666666666667 85.3333333333334C438.4 85.3333333333334 448 75.7333333333334 448 64V38.8266666666667L401.4933333333334 85.3333333333334H426.6666666666667M192 341.3333333333334H213.3333333333333V384H192V341.3333333333334M192 170.6666666666667H207.5733333333333L192 186.24V170.6666666666667M192 0H213.3333333333333V42.6666666666667H192V0M106.6666666666667 213.3333333333334V170.6666666666667H149.3333333333333V213.3333333333334H106.6666666666667M106.6666666666667 42.6666666666667V0H149.3333333333333V42.6666666666667H106.6666666666667z" /> + <glyph glyph-name="server-plus" + unicode="&#xF490;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M170.6666666666667 106.6666666666667H234.6666666666667V170.6666666666667H277.3333333333333V106.6666666666667H341.3333333333333V64H277.3333333333333V0H234.6666666666667V64H170.6666666666667V106.6666666666667z" /> + <glyph glyph-name="server-remove" + unicode="&#xF491;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667C438.4 362.6666666666667 448 353.0666666666667 448 341.3333333333334V256C448 244.2666666666667 438.4 234.6666666666667 426.6666666666667 234.6666666666667H85.3333333333333C73.6 234.6666666666667 64 244.2666666666667 64 256V341.3333333333334C64 353.0666666666667 73.6 362.6666666666667 85.3333333333333 362.6666666666667M192 277.3333333333334H213.3333333333333V320H192V277.3333333333334M106.6666666666667 320V277.3333333333334H149.3333333333333V320H106.6666666666667M225.92 85.3333333333334L170.6666666666667 140.5866666666667L200.7466666666667 170.6666666666667L256 115.4133333333334L311.2533333333334 170.6666666666667L341.3333333333333 140.5866666666667L286.08 85.3333333333334L341.3333333333333 30.08L311.2533333333334 0L256 55.2533333333333L200.7466666666667 0L170.6666666666667 30.08L225.92 85.3333333333334z" /> + <glyph glyph-name="server-security" + unicode="&#xF492;" + horiz-adv-x="512" d=" M64 426.6666666666667H405.3333333333333C417.0666666666667 426.6666666666667 426.6666666666667 417.0666666666667 426.6666666666667 405.3333333333333V320C426.6666666666667 308.2666666666667 417.0666666666667 298.6666666666667 405.3333333333333 298.6666666666667H64C52.2666666666667 298.6666666666667 42.6666666666667 308.2666666666667 42.6666666666667 320V405.3333333333333C42.6666666666667 417.0666666666667 52.2666666666667 426.6666666666667 64 426.6666666666667M64 256H405.3333333333333C417.0666666666667 256 426.6666666666667 246.4000000000001 426.6666666666667 234.6666666666667V220.3733333333333L373.3333333333333 244.0533333333334L234.6666666666667 182.6133333333334V128H64C52.2666666666667 128 42.6666666666667 137.6 42.6666666666667 149.3333333333334V234.6666666666667C42.6666666666667 246.4000000000001 52.2666666666667 256 64 256M64 85.3333333333334H234.6666666666667C235.9466666666667 37.3333333333334 256 -8.5333333333333 287.1466666666667 -42.6666666666666H64C52.2666666666667 -42.6666666666666 42.6666666666667 -33.0666666666667 42.6666666666667 -21.3333333333333V64C42.6666666666667 75.7333333333334 52.2666666666667 85.3333333333334 64 85.3333333333334M170.6666666666667 341.3333333333334H192V384H170.6666666666667V341.3333333333334M170.6666666666667 170.6666666666667H192V213.3333333333334H170.6666666666667V170.6666666666667M170.6666666666667 0H192V42.6666666666667H170.6666666666667V0M85.3333333333333 384V341.3333333333334H128V384H85.3333333333333M85.3333333333333 213.3333333333334V170.6666666666667H128V213.3333333333334H85.3333333333333M85.3333333333333 42.6666666666667V0H128V42.6666666666667H85.3333333333333M373.3333333333333 192L469.3333333333333 149.3333333333334V85.3333333333334C469.3333333333333 26.0266666666666 428.3733333333333 -29.2266666666667 373.3333333333333 -42.6666666666666C318.2933333333333 -29.2266666666667 277.3333333333333 26.0266666666666 277.3333333333333 85.3333333333334V149.3333333333334L373.3333333333333 192M373.3333333333333 150.6133333333334L320 126.72V69.9733333333334C320 37.1200000000001 342.8266666666667 6.4 373.3333333333333 -1.28V150.6133333333334z" /> + <glyph glyph-name="settings" + unicode="&#xF493;" + horiz-adv-x="512" d=" M256 117.3333333333334C214.8266666666667 117.3333333333334 181.3333333333333 150.8266666666667 181.3333333333333 192S214.8266666666667 266.6666666666667 256 266.6666666666667S330.6666666666667 233.1733333333334 330.6666666666667 192S297.1733333333333 117.3333333333334 256 117.3333333333334M414.5066666666667 171.3066666666667C415.36 178.1333333333333 416 184.96 416 192C416 199.04 415.36 206.08 414.5066666666667 213.3333333333334L459.52 248.1066666666667C463.5733333333333 251.3066666666667 464.6399999999999 257.0666666666667 462.08 261.76L419.4133333333333 335.5733333333333C416.8533333333333 340.2666666666667 411.0933333333333 342.1866666666667 406.4 340.2666666666667L353.2800000000001 318.9333333333334C342.1866666666667 327.2533333333334 330.6666666666667 334.5066666666667 317.2266666666667 339.8400000000001L309.3333333333334 396.3733333333334C308.4800000000001 401.4933333333334 304.0000000000001 405.3333333333333 298.6666666666668 405.3333333333333H213.3333333333334C208.0000000000001 405.3333333333333 203.5200000000001 401.4933333333334 202.6666666666668 396.3733333333334L194.7733333333334 339.8400000000001C181.3333333333334 334.5066666666667 169.8133333333334 327.2533333333334 158.7200000000001 318.9333333333334L105.6000000000001 340.2666666666667C100.9066666666668 342.1866666666667 95.1466666666668 340.2666666666667 92.5866666666668 335.5733333333333L49.9200000000001 261.76C47.1466666666668 257.0666666666667 48.4266666666668 251.3066666666667 52.4800000000001 248.1066666666667L97.4933333333333 213.3333333333334C96.64 206.08 96 199.04 96 192C96 184.96 96.64 178.1333333333333 97.4933333333333 171.3066666666667L52.48 135.8933333333333C48.4266666666667 132.6933333333333 47.1466666666667 126.9333333333333 49.92 122.24L92.5866666666667 48.4266666666667C95.1466666666667 43.7333333333334 100.9066666666667 42.0266666666666 105.6 43.7333333333334L158.72 65.2800000000001C169.8133333333333 56.7466666666668 181.3333333333333 49.4933333333335 194.7733333333334 44.1600000000001L202.6666666666667 -12.3733333333332C203.52 -17.4933333333332 208 -21.3333333333333 213.3333333333333 -21.3333333333333H298.6666666666667C304 -21.3333333333333 308.48 -17.4933333333332 309.3333333333333 -12.3733333333332L317.2266666666667 44.1600000000001C330.6666666666667 49.7066666666668 342.1866666666666 56.7466666666668 353.28 65.2800000000001L406.3999999999999 43.7333333333334C411.0933333333333 42.0266666666668 416.8533333333333 43.7333333333334 419.4133333333333 48.4266666666667L462.0799999999999 122.24C464.6399999999999 126.9333333333334 463.5733333333333 132.6933333333334 459.5199999999999 135.8933333333334L414.5066666666666 171.3066666666667z" /> + <glyph glyph-name="settings-box" + unicode="&#xF494;" + horiz-adv-x="512" d=" M368 192C368 187.0933333333334 367.5733333333333 182.1866666666667 366.9333333333333 177.4933333333334L398.5066666666667 152.7466666666667C401.28 150.4 402.1333333333334 146.5600000000001 400.2133333333333 143.1466666666667L370.3466666666667 91.52C368.4266666666666 88.3200000000001 364.5866666666667 87.04 361.1733333333333 88.3200000000001L324.0533333333333 103.2533333333333C316.3733333333334 97.28 307.84 92.3733333333333 298.6666666666667 88.5333333333333L293.3333333333333 49.0666666666666C292.6933333333334 45.4399999999999 289.4933333333334 42.6666666666666 285.8666666666667 42.6666666666666H226.1333333333334C222.5066666666667 42.6666666666666 219.3066666666667 45.4399999999999 218.6666666666667 49.0666666666666L213.3333333333333 88.5333333333333C203.9466666666667 92.3733333333333 195.6266666666667 97.28 187.9466666666667 103.2533333333333L150.8266666666667 88.3200000000001C147.4133333333333 87.0400000000001 143.5733333333333 88.3200000000001 141.6533333333333 91.52L111.7866666666667 143.1466666666667C109.8666666666667 146.56 110.72 150.4 113.4933333333334 152.7466666666667L145.0666666666667 177.4933333333334C144.4266666666667 182.1866666666667 144 187.0933333333333 144 192C144 196.9066666666667 144.4266666666667 201.8133333333333 145.0666666666667 206.5066666666666L113.4933333333334 231.2533333333333C110.72 233.6 109.8666666666667 237.6533333333333 111.7866666666667 240.8533333333333L141.6533333333333 292.48C143.5733333333333 295.8933333333333 147.4133333333333 297.1733333333333 150.8266666666667 295.8933333333333L187.9466666666667 280.7466666666666C195.6266666666667 286.72 203.9466666666667 291.84 213.3333333333333 295.4666666666667L218.6666666666667 335.1466666666667C219.3066666666667 338.56 222.5066666666667 341.3333333333333 226.1333333333334 341.3333333333333H285.8666666666666C289.4933333333333 341.3333333333333 292.6933333333333 338.56 293.3333333333333 335.1466666666667L298.6666666666667 295.4666666666667C307.84 291.8400000000001 316.3733333333334 286.7200000000001 324.0533333333333 280.7466666666667L361.1733333333333 295.8933333333333C364.5866666666667 297.1733333333334 368.4266666666666 295.8933333333333 370.3466666666667 292.48L400.2133333333333 240.8533333333333C402.1333333333333 237.6533333333333 401.28 233.6 398.5066666666667 231.2533333333334L366.9333333333333 206.5066666666667C367.5733333333333 201.8133333333333 368 196.9066666666667 368 192M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M256 234.6666666666667C232.32 234.6666666666667 213.3333333333333 215.68 213.3333333333333 192C213.3333333333333 168.5333333333334 232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192C298.6666666666667 215.68 279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="shape-circle-plus" + unicode="&#xF65D;" + horiz-adv-x="512" d=" M234.6666666666667 42.6666666666667C305.28 42.6666666666667 362.6666666666667 100.0533333333334 362.6666666666667 170.6666666666667H405.3333333333333C405.3333333333333 76.3733333333333 328.96 0 234.6666666666667 0S64 76.3733333333333 64 170.6666666666667S140.3733333333333 341.3333333333334 234.6666666666667 341.3333333333334V298.6666666666667C164.0533333333333 298.6666666666667 106.6666666666667 241.2800000000001 106.6666666666667 170.6666666666667S164.0533333333333 42.6666666666667 234.6666666666667 42.6666666666667M405.3333333333333 341.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334z" /> + <glyph glyph-name="shape-plus" + unicode="&#xF495;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H234.6666666666667V213.3333333333334H42.6666666666667V405.3333333333333M373.3333333333333 405.3333333333333C426.6666666666667 405.3333333333333 469.3333333333333 362.6666666666667 469.3333333333333 309.3333333333334S426.6666666666667 213.3333333333334 373.3333333333333 213.3333333333334S277.3333333333333 256 277.3333333333333 309.3333333333334S320 405.3333333333333 373.3333333333333 405.3333333333333M138.6666666666667 149.3333333333334L234.6666666666667 -21.3333333333333H42.6666666666667L138.6666666666667 149.3333333333334M405.3333333333333 85.3333333333334H469.3333333333333V42.6666666666667H405.3333333333333V-21.3333333333333H362.6666666666667V42.6666666666667H298.6666666666667V85.3333333333334H362.6666666666667V149.3333333333334H405.3333333333333V85.3333333333334z" /> + <glyph glyph-name="shape-polygon-plus" + unicode="&#xF65E;" + horiz-adv-x="512" d=" M362.6666666666667 113.0666666666667V170.6666666666667H405.3333333333333V85.3333333333334L213.3333333333333 0L64 149.3333333333334L149.3333333333333 341.3333333333334H234.6666666666667V298.6666666666667H177.0666666666667L115.2 157.8666666666667L221.8666666666667 51.2L362.6666666666667 113.0666666666667M469.3333333333333 341.3333333333334V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334H469.3333333333333z" /> + <glyph glyph-name="shape-rectangle-plus" + unicode="&#xF65F;" + horiz-adv-x="512" d=" M405.3333333333333 320H469.3333333333333V277.3333333333334H405.3333333333333V213.3333333333334H362.6666666666667V277.3333333333334H298.6666666666667V320H362.6666666666667V384H405.3333333333333V320M362.6666666666667 85.3333333333334V149.3333333333334H405.3333333333333V42.6666666666667H64V320H234.6666666666667V277.3333333333334H106.6666666666667V85.3333333333334H362.6666666666667z" /> + <glyph glyph-name="shape-square-plus" + unicode="&#xF660;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333V234.6666666666667H362.6666666666667V298.6666666666667H298.6666666666667V341.3333333333334H362.6666666666667V405.3333333333333H405.3333333333333V341.3333333333334M362.6666666666667 42.6666666666667V170.6666666666667H405.3333333333333V0H64V341.3333333333334H234.6666666666667V298.6666666666667H106.6666666666667V42.6666666666667H362.6666666666667z" /> + <glyph glyph-name="share" + unicode="&#xF496;" + horiz-adv-x="512" d=" M448 213.3333333333334L298.6666666666667 362.6666666666667V277.3333333333334C149.3333333333333 256 85.3333333333333 149.3333333333334 64 42.6666666666667C117.3333333333333 117.3333333333334 192 151.4666666666667 298.6666666666667 151.4666666666667V64L448 213.3333333333334z" /> + <glyph glyph-name="share-variant" + unicode="&#xF497;" + horiz-adv-x="512" d=" M384 104.96C367.7866666666667 104.96 353.28 98.5600000000001 342.1866666666666 88.5333333333334L190.08 177.0666666666667C191.1466666666667 181.9733333333334 192 186.8800000000001 192 192C192 197.12 191.1466666666667 202.0266666666667 190.08 206.9333333333333L340.48 294.6133333333334C352 283.9466666666667 367.1466666666667 277.3333333333334 384 277.3333333333334C419.4133333333333 277.3333333333334 448 305.92 448 341.3333333333334S419.4133333333333 405.3333333333333 384 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 336.2133333333334 320.8533333333333 331.3066666666667 321.92 326.4L171.52 238.72C160 249.3866666666667 144.8533333333333 256 128 256C92.5866666666667 256 64 227.4133333333334 64 192S92.5866666666667 128 128 128C144.8533333333333 128 160 134.6133333333334 171.52 145.28L323.4133333333333 56.7466666666667C322.3466666666667 52.2666666666667 321.7066666666667 47.5733333333334 321.7066666666667 42.6666666666667C321.7066666666667 8.3200000000001 349.6533333333333 -19.4133333333333 384 -19.4133333333333C418.3466666666667 -19.4133333333333 446.2933333333334 8.3200000000001 446.2933333333334 42.6666666666667S418.3466666666667 104.96 384 104.96z" /> + <glyph glyph-name="shield" + unicode="&#xF498;" + horiz-adv-x="512" d=" M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.7866666666667 256 -42.6666666666666C366.08 -15.7866666666666 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="shield-outline" + unicode="&#xF499;" + horiz-adv-x="512" d=" M448 213.3333333333334C448 94.9333333333333 366.08 -15.7866666666667 256 -42.6666666666666C145.92 -15.7866666666666 64 94.9333333333333 64 213.3333333333334V341.3333333333334L256 426.6666666666667L448 341.3333333333334V213.3333333333334M256 0C336 21.3333333333334 405.3333333333333 116.48 405.3333333333333 208.64V313.6L256 380.1600000000001L106.6666666666667 313.6V208.6400000000001C106.6666666666667 116.48 176 21.3333333333334 256 0z" /> + <glyph glyph-name="shopping" + unicode="&#xF49A;" + horiz-adv-x="512" d=" M256 170.6666666666667C197.12 170.6666666666667 149.3333333333333 218.4533333333334 149.3333333333333 277.3333333333334H192C192 241.92 220.5866666666667 213.3333333333334 256 213.3333333333334S320 241.92 320 277.3333333333334H362.6666666666667C362.6666666666667 218.4533333333334 314.88 170.6666666666667 256 170.6666666666667M256 384C291.4133333333333 384 320 355.4133333333334 320 320H192C192 355.4133333333334 220.5866666666667 384 256 384M405.3333333333333 320H362.6666666666667C362.6666666666667 378.88 314.88 426.6666666666667 256 426.6666666666667S149.3333333333333 378.88 149.3333333333333 320H106.6666666666667C82.9866666666667 320 64 301.0133333333333 64 277.3333333333334V21.3333333333334C64 -2.1333333333333 83.2 -21.3333333333333 106.6666666666667 -21.3333333333333H405.3333333333333C428.8 -21.3333333333333 448 -2.1333333333333 448 21.3333333333334V277.3333333333334C448 301.0133333333333 428.8 320 405.3333333333333 320z" /> + <glyph glyph-name="shopping-music" + unicode="&#xF49B;" + horiz-adv-x="512" d=" M256 384C220.5866666666667 384 192 355.4133333333334 192 320H320C320 355.4133333333334 291.4133333333333 384 256 384M405.3333333333333 320C428.8 320 448 300.8 448 277.3333333333334V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C82.9866666666667 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V277.3333333333334C64 301.0133333333333 82.9866666666667 320 106.6666666666667 320H149.3333333333333C149.3333333333333 378.88 197.12 426.6666666666667 256 426.6666666666667S362.6666666666667 378.88 362.6666666666667 320H405.3333333333333M192 42.6666666666667L352 149.3333333333334L192 234.6666666666667V42.6666666666667z" /> + <glyph glyph-name="shredder" + unicode="&#xF49C;" + horiz-adv-x="512" d=" M128 384V298.6666666666667H170.6666666666667V341.3333333333334H341.3333333333333V298.6666666666667H384V384H128M106.6666666666667 277.3333333333334C71.2533333333333 277.3333333333334 42.6666666666667 248.7466666666667 42.6666666666667 213.3333333333334V85.3333333333334H106.6666666666667V149.3333333333334H405.3333333333333V85.3333333333334H469.3333333333333V213.3333333333334C469.3333333333333 248.7466666666667 440.7466666666667 277.3333333333334 405.3333333333333 277.3333333333334H106.6666666666667M384 234.6666666666667C395.7333333333334 234.6666666666667 405.3333333333333 225.0666666666667 405.3333333333333 213.3333333333334S395.7333333333334 192 384 192S362.6666666666667 201.6 362.6666666666667 213.3333333333334S372.2666666666667 234.6666666666667 384 234.6666666666667M149.3333333333333 106.6666666666667V0H192V106.6666666666667H149.3333333333333M234.6666666666667 106.6666666666667V21.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667M320 106.6666666666667V0H362.6666666666667V106.6666666666667H320z" /> + <glyph glyph-name="shuffle" + unicode="&#xF49D;" + horiz-adv-x="512" d=" M316.3733333333334 161.92L286.2933333333333 131.84L353.0666666666667 65.0666666666667L309.3333333333333 21.3333333333334H426.6666666666667V138.6666666666667L383.1466666666667 95.1466666666667L316.3733333333334 161.92M309.3333333333333 362.6666666666667L352.8533333333333 319.1466666666667L85.3333333333333 51.4133333333334L115.4133333333333 21.3333333333334L383.1466666666667 288.8533333333334L426.6666666666667 245.3333333333334V362.6666666666667M225.92 252.3733333333334L115.4133333333333 362.6666666666667L85.3333333333333 332.5866666666667L195.6266666666667 222.2933333333334L225.92 252.3733333333334z" /> + <glyph glyph-name="shuffle-disabled" + unicode="&#xF49E;" + horiz-adv-x="512" d=" M341.3333333333333 352V298.6666666666667H106.6666666666667V256H341.3333333333333V202.6666666666667L416 277.3333333333334M341.3333333333333 181.3333333333334V128H106.6666666666667V85.3333333333334H341.3333333333333V32L416 106.6666666666667" /> + <glyph glyph-name="shuffle-variant" + unicode="&#xF49F;" + horiz-adv-x="512" d=" M362.6666666666667 384L474.6666666666666 288L362.6666666666667 192L474.6666666666666 96L362.6666666666667 0V64H304.2133333333333L244.0533333333333 124.16L289.28 169.3866666666667L330.6666666666667 128H362.6666666666667V256H330.6666666666667L138.6666666666667 64H42.6666666666667V128H112.2133333333333L304.2133333333333 320H362.6666666666667V384M42.6666666666667 320H138.6666666666667L198.8266666666667 259.8400000000001L153.6 214.6133333333333L112.2133333333333 256H42.6666666666667V320z" /> + <glyph glyph-name="sigma" + unicode="&#xF4A0;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667H384V256H362.6666666666667L341.3333333333333 320H214.6133333333333L291.2 210.56L203.52 85.3333333333334H341.3333333333333L362.6666666666667 128H384V21.3333333333334H106.6666666666667L226.1333333333334 192L106.6666666666667 362.6666666666667z" /> + <glyph glyph-name="sigma-lower" + unicode="&#xF62B;" + horiz-adv-x="512" d=" M405.3333333333333 192C405.3333333333333 97.7066666666667 333.6533333333333 21.3333333333334 245.3333333333333 21.3333333333334C157.0133333333333 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S157.0133333333333 362.6666666666667 245.3333333333333 362.6666666666667H426.6666666666667V320H351.1466666666667C384 288.64 405.3333333333333 242.9866666666667 405.3333333333333 192M245.3333333333333 320C180.48 320 128 262.6133333333334 128 192S180.48 64 245.3333333333333 64S362.6666666666667 121.3866666666667 362.6666666666667 192S310.1866666666666 320 245.3333333333333 320z" /> + <glyph glyph-name="sign-caution" + unicode="&#xF4A1;" + horiz-adv-x="512" d=" M42.6666666666667 384H469.3333333333333V170.6666666666667H384V0H341.3333333333333V170.6666666666667H170.6666666666667V0H128V170.6666666666667H42.6666666666667V384M404.6933333333333 213.3333333333334L426.6666666666667 235.3066666666667V295.4666666666667L344.5333333333333 213.3333333333334H404.6933333333333M284.16 213.3333333333334L412.16 341.3333333333334H352L224 213.3333333333334H284.16M163.4133333333333 213.3333333333334L291.4133333333333 341.3333333333334H231.04L103.04 213.3333333333334H163.4133333333333M110.5066666666667 341.3333333333334L85.3333333333333 316.1600000000001V256L170.6666666666667 341.3333333333334H110.5066666666667z" /> + <glyph glyph-name="signal" + unicode="&#xF4A2;" + horiz-adv-x="512" d=" M64 0H128V64H64M170.6666666666667 0H234.6666666666667V149.3333333333334H170.6666666666667M277.3333333333333 0H341.3333333333333V256H277.3333333333333M384 0H448V384H384V0z" /> + <glyph glyph-name="signal-variant" + unicode="&#xF60A;" + horiz-adv-x="512" d=" M85.3333333333333 320V362.6666666666667H87.4666666666667C275.2 362.6666666666667 426.6666666666667 211.2 426.6666666666667 23.4666666666667V21.3333333333334H384V23.4666666666667C384 187.7333333333334 251.7333333333334 320 85.3333333333333 320M85.3333333333333 234.6666666666667V277.3333333333334C226.7733333333333 277.3333333333334 341.3333333333333 162.7733333333333 341.3333333333333 21.3333333333334H298.6666666666667C298.6666666666667 139.0933333333334 203.0933333333333 234.6666666666667 85.3333333333333 234.6666666666667M85.3333333333333 149.3333333333334V192C179.6266666666667 192 256 115.6266666666667 256 21.3333333333334H213.3333333333333C213.3333333333333 91.9466666666667 155.9466666666667 149.3333333333334 85.3333333333333 149.3333333333334M85.3333333333333 106.6666666666667C132.48 106.6666666666667 170.6666666666667 68.48 170.6666666666667 21.3333333333334H85.3333333333333V106.6666666666667z" /> + <glyph glyph-name="silverware" + unicode="&#xF4A3;" + horiz-adv-x="512" d=" M172.8 163.4133333333334L83.4133333333333 252.5866666666667C50.1333333333333 286.0800000000001 50.1333333333333 340.0533333333334 83.4133333333333 373.3333333333334L233.1733333333333 224L172.8 163.4133333333334M317.44 202.0266666666667L286.08 170.6666666666667L432.8533333333333 23.8933333333334L402.7733333333333 -6.1866666666666L256 140.5866666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L287.36 232.1066666666667C272.2133333333333 264.7466666666667 282.88 310.6133333333334 316.8 344.5333333333334C357.5466666666666 385.4933333333334 416 393.1733333333334 447.1466666666666 362.0266666666667C478.5066666666665 330.6666666666667 470.8266666666666 272.2133333333334 429.8666666666666 231.4666666666667C395.9466666666666 197.5466666666667 350.08 186.8800000000001 317.44 202.0266666666667z" /> + <glyph glyph-name="silverware-fork" + unicode="&#xF4A4;" + horiz-adv-x="512" d=" M109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L285.0133333333333 229.9733333333334L280.7466666666667 234.6666666666667C264.1066666666667 251.0933333333334 264.1066666666667 277.9733333333334 280.7466666666667 294.6133333333334L373.3333333333333 387.8400000000001L393.1733333333333 368.2133333333334L324.0533333333333 298.6666666666667L344.5333333333333 278.6133333333334L413.6533333333333 347.9466666666667L433.2800000000001 328.3200000000001L363.9466666666667 259.2000000000001L384.0000000000001 238.7200000000001L453.5466666666667 308.0533333333334L473.1733333333335 288.0000000000001L379.9466666666668 195.4133333333334C363.3066666666668 178.7733333333334 336.4266666666668 178.7733333333334 320.0000000000001 195.4133333333334L315.3066666666668 199.68L109.2266666666668 -6.1866666666666z" /> + <glyph glyph-name="silverware-spoon" + unicode="&#xF4A5;" + horiz-adv-x="512" d=" M317.44 202.0266666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L287.36 232.1066666666667C272.2133333333334 264.7466666666667 282.88 310.6133333333334 316.8 344.5333333333334C357.5466666666667 385.4933333333334 416 393.1733333333334 447.1466666666667 362.0266666666667C478.5066666666667 330.6666666666667 470.8266666666667 272.2133333333334 429.8666666666667 231.4666666666667C395.9466666666667 197.5466666666667 350.0800000000001 186.8800000000001 317.4400000000001 202.0266666666667z" /> + <glyph glyph-name="silverware-variant" + unicode="&#xF4A6;" + horiz-adv-x="512" d=" M172.8 163.4133333333334L83.4133333333333 252.5866666666667C50.1333333333333 286.0800000000001 50.1333333333333 340.0533333333334 83.4133333333333 373.3333333333334L233.1733333333333 224L172.8 163.4133333333334M286.08 170.6666666666667L432.8533333333333 23.8933333333334L402.7733333333333 -6.1866666666666L256 140.5866666666667L109.2266666666667 -6.1866666666666L79.1466666666667 23.8933333333334L285.0133333333333 229.9733333333334L280.7466666666667 234.6666666666667C264.1066666666667 251.0933333333334 264.1066666666667 277.9733333333334 280.7466666666667 294.6133333333334L373.3333333333333 387.8400000000001L393.1733333333333 368.2133333333334L324.0533333333333 298.6666666666667L344.5333333333333 278.6133333333334L413.6533333333333 347.9466666666667L433.2800000000001 328.3200000000001L363.9466666666667 259.2000000000001L384.0000000000001 238.7200000000001L453.5466666666667 308.0533333333334L473.1733333333335 288.0000000000001L379.9466666666668 195.4133333333334C363.3066666666668 178.7733333333334 336.4266666666668 178.7733333333334 320.0000000000001 195.4133333333334L315.3066666666668 199.68L286.08 170.6666666666667z" /> + <glyph glyph-name="sim" + unicode="&#xF4A7;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.68 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667M192 42.6666666666667H149.3333333333333V85.3333333333334H192V42.6666666666667M362.6666666666667 42.6666666666667H320V85.3333333333334H362.6666666666667V42.6666666666667M192 128H149.3333333333333V213.3333333333334H192V128M277.3333333333333 42.6666666666667H234.6666666666667V128H277.3333333333333V42.6666666666667M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V170.6666666666667M362.6666666666667 128H320V213.3333333333334H362.6666666666667V128z" /> + <glyph glyph-name="sim-alert" + unicode="&#xF4A8;" + horiz-adv-x="512" d=" M277.3333333333333 170.6666666666667H234.6666666666667V277.3333333333334H277.3333333333333M277.3333333333333 85.3333333333334H234.6666666666667V128H277.3333333333333M384 405.3333333333333H213.3333333333333L85.3333333333333 277.3333333333334V21.3333333333334C85.3333333333333 -2.1333333333333 104.5333333333333 -21.3333333333333 128 -21.3333333333333H384C407.4666666666667 -21.3333333333333 426.6666666666667 -2.1333333333333 426.6666666666667 21.3333333333334V362.6666666666667C426.6666666666667 386.1333333333334 407.4666666666667 405.3333333333333 384 405.3333333333333z" /> + <glyph glyph-name="sim-off" + unicode="&#xF4A9;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334C405.3333333333333 364.8 386.1333333333334 384 362.6666666666667 384H213.3333333333333L163.4133333333333 334.0800000000001L405.3333333333333 92.16V341.3333333333334M77.8666666666667 365.2266666666667L50.7733333333333 338.1333333333334L106.6666666666667 282.24V42.6666666666667C106.6666666666667 19.2 125.8666666666667 0 149.3333333333333 0H362.6666666666667C370.3466666666667 0 377.1733333333333 2.1333333333334 383.36 5.5466666666667L423.4666666666666 -34.5599999999999L450.5599999999999 -7.4666666666666L77.8666666666667 365.2266666666667z" /> + <glyph glyph-name="sitemap" + unicode="&#xF4AA;" + horiz-adv-x="512" d=" M192 405.3333333333333V277.3333333333334H234.6666666666667V213.3333333333334H106.6666666666667C82.9866666666667 213.3333333333334 64 194.3466666666667 64 170.6666666666667V106.6666666666667H21.3333333333333V-21.3333333333333H149.3333333333333V106.6666666666667H106.6666666666667V170.6666666666667H234.6666666666667V106.6666666666667H192V-21.3333333333333H320V106.6666666666667H277.3333333333333V170.6666666666667H405.3333333333333V106.6666666666667H362.6666666666667V-21.3333333333333H490.6666666666666V106.6666666666667H448V170.6666666666667C448 194.3466666666667 429.0133333333333 213.3333333333334 405.3333333333333 213.3333333333334H277.3333333333333V277.3333333333334H320V405.3333333333333H192z" /> + <glyph glyph-name="skip-backward" + unicode="&#xF4AB;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334V42.6666666666667L277.3333333333333 192M128 341.3333333333334V42.6666666666667H85.3333333333333V341.3333333333334M277.3333333333333 341.3333333333334V42.6666666666667L128 192" /> + <glyph glyph-name="skip-forward" + unicode="&#xF4AC;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V42.6666666666667L234.6666666666667 192M384 341.3333333333334V42.6666666666667H426.6666666666667V341.3333333333334M234.6666666666667 341.3333333333334V42.6666666666667L384 192" /> + <glyph glyph-name="skip-next" + unicode="&#xF4AD;" + horiz-adv-x="512" d=" M341.3333333333333 64H384V320H341.3333333333333M128 64L309.3333333333333 192L128 320V64z" /> + <glyph glyph-name="skip-next-circle" + unicode="&#xF661;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M170.6666666666667 277.3333333333334L277.3333333333333 192L170.6666666666667 106.6666666666667M298.6666666666667 277.3333333333334H341.3333333333333V106.6666666666667H298.6666666666667" /> + <glyph glyph-name="skip-next-circle-outline" + unicode="&#xF662;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.08 362.6666666666667 426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334S85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667M170.6666666666667 277.3333333333334V106.6666666666667L277.3333333333333 192M298.6666666666667 277.3333333333334V106.6666666666667H341.3333333333333V277.3333333333334" /> + <glyph glyph-name="skip-previous" + unicode="&#xF4AE;" + horiz-adv-x="512" d=" M128 64V320H170.6666666666667V64H128M202.6666666666667 192L384 320V64L202.6666666666667 192z" /> + <glyph glyph-name="skip-previous-circle" + unicode="&#xF663;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M170.6666666666667 277.3333333333334H213.3333333333333V106.6666666666667H170.6666666666667M341.3333333333333 277.3333333333334V106.6666666666667L234.6666666666667 192" /> + <glyph glyph-name="skip-previous-circle-outline" + unicode="&#xF664;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.92 362.6666666666667 85.3333333333333 286.0800000000001 85.3333333333333 192S161.92 21.3333333333334 256 21.3333333333334S426.6666666666667 97.92 426.6666666666667 192S350.08 362.6666666666667 256 362.6666666666667M341.3333333333333 277.3333333333334V106.6666666666667L234.6666666666667 192M213.3333333333333 277.3333333333334V106.6666666666667H170.6666666666667V277.3333333333334" /> + <glyph glyph-name="skype" + unicode="&#xF4AF;" + horiz-adv-x="512" d=" M384 320C428.16 276.48 444.8 215.68 434.3466666666667 158.9333333333333C443.0933333333333 143.5733333333333 448 125.6533333333333 448 106.6666666666667C448 47.7866666666668 400.2133333333333 0 341.3333333333333 0C322.3466666666667 0 304.4266666666666 4.9066666666667 289.0666666666667 13.6533333333334C232.32 3.2 171.52 19.84 128 64C83.84 107.52 67.2 168.3200000000001 77.6533333333334 225.0666666666667C68.9066666666667 240.4266666666667 64 258.3466666666667 64 277.3333333333334C64 336.2133333333334 111.7866666666667 384 170.6666666666667 384C189.6533333333333 384 207.5733333333333 379.0933333333334 222.9333333333333 370.3466666666667C279.68 380.8 340.48 364.16 384 320M256.8533333333333 81.92C318.08 81.92 348.5866666666667 111.36 348.5866666666667 151.04C348.5866666666667 176.4266666666667 336.64 203.52 290.3466666666667 213.9733333333334L247.8933333333333 223.36C231.68 226.9866666666667 213.3333333333333 231.8933333333334 213.3333333333333 247.04C213.3333333333333 262.4000000000001 226.1333333333334 273.0666666666667 249.6 273.0666666666667C297.1733333333333 273.0666666666667 292.6933333333333 240.4266666666667 316.3733333333333 240.4266666666667C328.7466666666666 240.4266666666667 339.4133333333333 247.6800000000001 339.4133333333333 260.2666666666667C339.4133333333333 289.4933333333334 292.6933333333333 311.4666666666667 253.0133333333333 311.4666666666667C210.1333333333333 311.4666666666667 164.2666666666667 293.12 164.2666666666667 244.48C164.2666666666667 221.0133333333334 172.5866666666667 196.0533333333334 218.6666666666667 184.5333333333334L276.0533333333333 170.0266666666667C293.3333333333333 165.7600000000001 297.6 156.16 297.6 147.2000000000001C297.6 132.6933333333334 283.0933333333333 118.4 256.8533333333333 118.4C205.44 118.4 212.48 157.8666666666667 184.96 157.8666666666667C172.5866666666666 157.8666666666667 163.6266666666666 149.3333333333334 163.6266666666666 137.1733333333334C163.6266666666666 113.4933333333334 192 81.92 256.8533333333333 81.92z" /> + <glyph glyph-name="skype-business" + unicode="&#xF4B0;" + horiz-adv-x="512" d=" M256.64 95.36C199.8933333333333 95.36 174.5066666666667 123.3066666666667 174.5066666666667 144.2133333333333C174.5066666666667 154.88 182.4 162.56 193.28 162.56C217.6 162.56 211.4133333333333 128 256.64 128C279.8933333333333 128 292.9066666666667 140.16 292.9066666666667 153.1733333333333C292.9066666666667 160.8533333333333 289.0666666666667 169.3866666666666 273.7066666666667 173.2266666666666L223.1466666666667 185.8133333333333C182.4 196.0533333333333 174.9333333333333 218.0266666666666 174.9333333333333 238.7199999999999C174.9333333333333 281.8133333333333 215.4666666666667 298.0266666666666 253.44 298.0266666666666C288 298.0266666666666 329.8133333333334 278.6133333333333 329.8133333333334 252.7999999999999C329.8133333333334 241.7066666666666 320 235.3066666666666 309.3333333333333 235.3066666666666C288 235.3066666666666 292.2666666666667 264.1066666666666 250.4533333333333 264.1066666666666C229.76 264.1066666666666 218.24 254.7199999999999 218.24 241.2799999999999C218.24 227.8399999999999 234.6666666666667 223.9999999999999 248.7466666666667 220.1599999999999L286.2933333333333 211.8399999999999C327.2533333333334 202.6666666666665 337.7066666666667 178.7733333333332 337.7066666666667 156.3733333333332C337.7066666666667 121.3866666666666 310.8266666666667 95.3599999999998 256.64 95.3599999999998M384 320C428.16 276.48 444.8 215.68 434.3466666666667 158.9333333333333C443.0933333333333 143.5733333333333 448 125.6533333333333 448 106.6666666666667C448 47.7866666666668 400.2133333333333 0 341.3333333333333 0C322.3466666666667 0 304.4266666666666 4.9066666666667 289.0666666666667 13.6533333333334C232.32 3.2 171.52 19.84 128 64C83.84 107.52 67.2 168.3200000000001 77.6533333333334 225.0666666666667C68.9066666666667 240.4266666666667 64 258.3466666666667 64 277.3333333333334C64 336.2133333333334 111.7866666666667 384 170.6666666666667 384C189.6533333333333 384 207.5733333333333 379.0933333333334 222.9333333333333 370.3466666666667C279.68 380.8 340.48 364.16 384 320M170.6666666666667 341.3333333333334C135.2533333333333 341.3333333333334 106.6666666666667 312.7466666666667 106.6666666666667 277.3333333333334C106.6666666666667 260.48 113.0666666666667 245.3333333333334 123.7333333333333 233.8133333333334C108.8 186.0266666666667 120.1066666666667 131.84 157.8666666666667 93.8666666666667C195.84 56.1066666666667 250.0266666666667 44.8000000000001 297.8133333333334 59.7333333333334C309.3333333333333 49.0666666666667 324.48 42.6666666666667 341.3333333333333 42.6666666666667C376.7466666666667 42.6666666666667 405.3333333333333 71.2533333333333 405.3333333333333 106.6666666666667C405.3333333333333 123.52 398.9333333333333 138.6666666666667 388.2666666666667 150.1866666666667C403.2 197.9733333333333 391.8933333333333 252.1600000000001 354.1333333333333 290.1333333333334C316.16 327.8933333333333 261.9733333333333 339.2 214.1866666666667 324.2666666666667C202.6666666666667 334.9333333333334 187.52 341.3333333333334 170.6666666666667 341.3333333333334z" /> + <glyph glyph-name="slack" + unicode="&#xF4B1;" + horiz-adv-x="512" d=" M218.24 209.92L275.4133333333333 228.9066666666667L293.76 174.0800000000001L236.5866666666667 155.0933333333334L218.24 209.92M377.3866666666667 155.52C388.9066666666667 159.36 394.6666666666667 171.9466666666667 391.2533333333334 183.4666666666667C387.4133333333333 194.9866666666667 374.8266666666667 201.3866666666667 363.3066666666667 197.3333333333334L335.5733333333333 188.16L317.2266666666667 242.9866666666667L344.9600000000001 252.3733333333334C356.48 256 362.6666666666667 268.8 358.8266666666667 280.3200000000001C354.9866666666667 291.8400000000001 342.4 298.6666666666667 330.6666666666667 294.1866666666667L303.1466666666667 285.0133333333334L293.5466666666667 313.6C289.7066666666667 325.12 277.3333333333334 331.5200000000001 265.6 327.4666666666667C254.08 323.6266666666667 247.8933333333334 311.0400000000001 251.7333333333334 299.5200000000001L261.3333333333333 270.9333333333334L204.16 251.9466666666667L194.56 280.5333333333334C190.72 292.0533333333334 178.3466666666667 298.6666666666667 166.6133333333334 294.4000000000001C155.0933333333333 290.5600000000001 149.3333333333333 277.9733333333334 152.7466666666667 266.6666666666667L162.3466666666667 237.8666666666667L134.6133333333334 228.48C123.0933333333333 224.6400000000001 117.3333333333333 212.0533333333334 120.7466666666667 200.5333333333334C123.7333333333333 192 132.0533333333334 185.6 141.0133333333333 185.3866666666667L148.6933333333333 186.6666666666668L176.4266666666667 195.84L194.7733333333334 141.0133333333334L167.04 131.6266666666667C155.52 128.0000000000001 149.3333333333334 115.2000000000001 153.1733333333334 103.6800000000001C156.16 94.72 164.48 88.7466666666668 173.44 88.5333333333334L181.3333333333333 89.8133333333334L208.8533333333333 98.9866666666667L218.4533333333333 70.4C221.44 61.2266666666667 229.76 55.4666666666667 238.72 55.2533333333333L246.3999999999999 56.5333333333333C257.9199999999999 60.3733333333333 264.1066666666666 72.7466666666667 260.2666666666666 84.48L250.6666666666667 113.0666666666666L307.8399999999999 132.0533333333333L317.44 103.4666666666666C319.9999999999999 94.5066666666666 328.7466666666666 88.7466666666666 337.7066666666666 88.5333333333333L345.3866666666666 89.6C356.9066666666666 93.44 362.6666666666666 106.0266666666666 359.2533333333332 117.3333333333334L349.6533333333333 146.1333333333333L377.3866666666666 155.52M451.6266666666666 250.6666666666667C495.5733333333333 104.1066666666667 461.2266666666666 40.5333333333333 314.6666666666667 -3.6266666666667C168.1066666666666 -47.5733333333333 104.5333333333333 -13.2266666666667 60.3733333333333 133.3333333333333C16.4266666666667 279.8933333333333 50.7733333333333 343.4666666666667 197.3333333333333 387.6266666666667C343.8933333333333 431.5733333333333 407.4666666666667 397.2266666666667 451.6266666666667 250.6666666666667z" /> + <glyph glyph-name="sleep" + unicode="&#xF4B2;" + horiz-adv-x="512" d=" M490.6666666666666 192H362.6666666666667V234.6666666666667L434.9866666666667 320H362.6666666666667V362.6666666666667H490.6666666666666V320L418.56 234.6666666666667H490.6666666666666V192M320 106.6666666666667H192V149.3333333333334L264.32 234.6666666666667H192V277.3333333333334H320V234.6666666666667L247.8933333333334 149.3333333333334H320V106.6666666666667M149.3333333333333 21.3333333333334H21.3333333333333V64L93.6533333333333 149.3333333333334H21.3333333333333V192H149.3333333333333V149.3333333333334L77.2266666666667 64H149.3333333333333V21.3333333333334z" /> + <glyph glyph-name="sleep-off" + unicode="&#xF4B3;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L271.5733333333333 106.6666666666667H192V149.3333333333334L208.8533333333333 169.3866666666667L42.6666666666667 335.5733333333334M490.6666666666666 192H362.6666666666667V234.6666666666667L434.9866666666667 320H362.6666666666667V362.6666666666667H490.6666666666666V320L418.56 234.6666666666667H490.6666666666666V192M209.4933333333334 277.3333333333334H320V234.6666666666667L288.8533333333333 197.9733333333333L209.4933333333334 277.3333333333334M149.3333333333333 21.3333333333334H21.3333333333333V64L93.6533333333333 149.3333333333334H21.3333333333333V192H149.3333333333333V149.3333333333334L77.2266666666667 64H149.3333333333333V21.3333333333334z" /> + <glyph glyph-name="smoking" + unicode="&#xF4B4;" + horiz-adv-x="512" d=" M149.3333333333333 42.6666666666667H469.3333333333333V128H149.3333333333333M42.6666666666667 42.6666666666667H106.6666666666667V128H42.6666666666667M213.3333333333333 362.6666666666667V341.3333333333334C213.3333333333333 305.92 184.7466666666667 277.3333333333334 149.3333333333333 277.3333333333334C90.4533333333333 277.3333333333334 42.6666666666667 229.5466666666667 42.6666666666667 170.6666666666667H85.3333333333333C85.3333333333333 206.08 113.92 234.6666666666667 149.3333333333333 234.6666666666667C208.2133333333333 234.6666666666667 256 282.4533333333334 256 341.3333333333334V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="smoking-off" + unicode="&#xF4B5;" + horiz-adv-x="512" d=" M337.4933333333334 149.3333333333334L422.8266666666667 64H469.3333333333333V149.3333333333334M42.6666666666667 64H106.6666666666667V149.3333333333334H42.6666666666667M69.9733333333333 362.6666666666667L42.6666666666667 335.5733333333334L94.72 283.5200000000001C62.5066666666667 264.3200000000001 42.6666666666667 229.5466666666667 42.6666666666667 192H85.3333333333333C85.3333333333333 218.4533333333334 101.76 242.3466666666667 126.5066666666667 251.7333333333334L228.9066666666667 149.3333333333334H149.3333333333333V64H314.24L399.5733333333333 -21.3333333333333L426.6666666666667 5.9733333333334M213.3333333333333 384V362.6666666666667C213.3333333333333 339.4133333333334 200.5333333333333 317.8666666666667 180.2666666666667 306.7733333333333L210.9866666666666 275.8400000000001C239.1466666666667 295.8933333333333 256 328.1066666666667 256 362.6666666666667V384H213.3333333333333z" /> + <glyph glyph-name="snapchat" + unicode="&#xF4B6;" + horiz-adv-x="512" d=" M256 11.7333333333333C230.6133333333334 11.7333333333333 215.4666666666667 22.6133333333334 202.0266666666667 32C192 38.8266666666667 183.04 45.44 172.3733333333333 47.1466666666667C147.84 48.4266666666667 140.5866666666667 47.1466666666667 127.36 44.8000000000001C125.0133333333333 44.8000000000001 122.24 45.4400000000001 121.1733333333334 49.2800000000001C117.3333333333334 65.2800000000001 116.2666666666667 69.7600000000001 113.4933333333334 70.1866666666667C85.3333333333333 74.6666666666667 68.0533333333333 81.0666666666668 64.64 88.96C64 93.8666666666667 65.4933333333333 96 67.84 96C90.6666666666667 100.0533333333334 110.9333333333333 112 128 132.0533333333334C141.44 147.4133333333334 147.84 162.3466666666667 148.48 163.84C151.8933333333333 170.6666666666667 152.5333333333333 176.64 150.6133333333333 181.3333333333334C146.9866666666667 190.0800000000001 134.6133333333333 193.92 121.1733333333333 198.4C113.92 201.1733333333334 102.1866666666667 207.1466666666667 103.68 215.4666666666667C104.96 221.44 112.8533333333333 225.7066666666667 123.9466666666667 224.8533333333334C131.4133333333333 221.44 137.8133333333333 219.7333333333334 143.5733333333333 219.7333333333334C150.6133333333333 219.7333333333334 153.8133333333333 222.2933333333334 154.6666666666667 223.1466666666667C152.32 260.6933333333334 150.4 293.3333333333334 158.72 311.8933333333334C183.68 367.7866666666667 236.3733333333334 372.2666666666667 256 372.2666666666667C275.6266666666667 372.2666666666667 328.32 367.7866666666667 353.28 311.8933333333333C361.6 293.3333333333334 359.68 260.6933333333334 357.3333333333333 223.1466666666667C358.1866666666666 222.2933333333334 361.3866666666667 219.7333333333334 368.4266666666666 219.7333333333334C374.1866666666666 219.7333333333334 380.5866666666667 221.44 388.0533333333334 224.8533333333334C399.1466666666667 225.7066666666667 407.04 221.44 408.32 215.4666666666667C409.8133333333334 207.1466666666667 398.08 201.1733333333334 390.8266666666667 198.4C377.3866666666667 193.92 365.0133333333333 190.0800000000001 361.3866666666667 181.3333333333334C359.4666666666667 176.64 360.1066666666667 170.6666666666667 363.5200000000001 163.84C364.1600000000001 162.3466666666667 370.56 147.4133333333334 384.0000000000001 132.0533333333334C401.0666666666667 112 421.3333333333334 100.0533333333333 444.1600000000001 96C446.5066666666667 96 448.0000000000001 93.8666666666667 447.36 88.96C443.9466666666667 81.0666666666667 426.6666666666668 74.6666666666667 398.5066666666667 70.1866666666667C395.7333333333334 69.7600000000001 394.6666666666668 65.2800000000001 390.8266666666667 49.2800000000001C389.7600000000001 45.4400000000001 386.9866666666668 44.8000000000001 384.6400000000001 44.8000000000001C371.4133333333334 47.1466666666667 364.1600000000001 48.4266666666667 339.6266666666668 47.1466666666667C328.9600000000001 45.4400000000001 320.0000000000001 38.8266666666667 309.9733333333334 32C296.5333333333334 22.6133333333333 281.3866666666668 11.7333333333333 256.0000000000001 11.7333333333333z" /> + <glyph glyph-name="snowman" + unicode="&#xF4B7;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 117.3333333333334 163.2 145.7066666666667 185.3866666666667 165.3333333333334C176.2133333333333 178.9866666666667 170.6666666666667 195.6266666666667 170.6666666666667 213.3333333333334V222.08L107.52 258.7733333333334L103.04 262.1866666666667L48.8533333333333 247.6800000000001L43.3066666666667 268.1600000000001L90.4533333333333 280.7466666666667L48.2133333333333 305.2800000000001L58.88 323.8400000000001L101.12 299.3066666666668L88.5333333333333 346.6666666666668L109.0133333333333 352.0000000000001L123.7333333333334 297.8133333333334L128.8533333333334 295.6800000000001L186.24 262.6133333333334C194.3466666666667 274.1333333333334 205.2266666666667 283.5200000000001 218.0266666666667 289.7066666666667C202.6666666666667 301.44 192 320 192 341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334C320 320 309.3333333333333 301.44 293.9733333333333 289.7066666666667C306.7733333333333 283.52 317.6533333333333 274.1333333333334 325.76 262.6133333333334L383.1466666666667 295.68L388.2666666666667 297.8133333333334L402.9866666666667 352L423.4666666666667 346.6666666666667L410.88 299.3066666666667L453.12 323.8400000000001L463.7866666666667 305.28L421.5466666666667 280.7466666666667L468.6933333333334 268.1600000000001L463.1466666666666 247.68L408.9600000000001 262.1866666666667L404.48 258.7733333333333L341.3333333333333 222.08V213.3333333333334C341.3333333333333 195.6266666666667 335.7866666666667 178.9866666666667 326.6133333333334 165.3333333333334C348.8 145.7066666666667 362.6666666666667 117.3333333333334 362.6666666666667 85.3333333333334z" /> + <glyph glyph-name="soccer" + unicode="&#xF4B8;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 384C293.5466666666666 384 328.5333333333333 372.6933333333334 357.9733333333334 353.92L352 341.3333333333334H256L219.3066666666667 359.2533333333334L226.7733333333333 381.2266666666667C236.3733333333333 382.9333333333334 245.9733333333333 384 256 384M203.3066666666667 375.8933333333333L196.0533333333333 353.92L141.44 326.6133333333334L114.7733333333333 321.28C138.6666666666666 347.0933333333334 168.96 366.08 203.3066666666667 375.8933333333333M277.3333333333333 320H341.3333333333333L398.7200000000001 243.4133333333334L372.0533333333334 188.5866666666667L315.9466666666667 175.36L245.9733333333334 257.2800000000001L277.3333333333333 320M131.4133333333333 305.92L149.3333333333333 234.6666666666667L123.3066666666667 169.3866666666667L68.6933333333333 150.6133333333334C65.7066666666667 164.0533333333334 64 177.7066666666667 64 192C64 232.5333333333334 76.5866666666667 269.6533333333334 97.92 300.5866666666667L131.4133333333333 305.92M438.6133333333334 251.3066666666667C444.8 232.7466666666667 448.0000000000001 212.6933333333333 448.0000000000001 192C448.0000000000001 161.28 440.1066666666667 132.48 427.3066666666668 106.6666666666667H405.3333333333333L387.4133333333333 177.92L419.4133333333333 241.92L438.6133333333333 251.3066666666667M170.6666666666667 234.6666666666667H234.6666666666667L294.6133333333334 164.6933333333334L256 106.6666666666667L188.5866666666667 90.0266666666666L139.3066666666667 155.9466666666667L170.6666666666667 234.6666666666667M256 85.3333333333334L320 42.6666666666667L301.44 5.9733333333334C286.7200000000001 2.5600000000001 271.5733333333333 0 256 0C218.6666666666667 0 184.1066666666666 10.6666666666667 154.6666666666667 29.2266666666667L179.4133333333333 65.92L256 85.3333333333334M405.3333333333333 85.3333333333334H416C394.6666666666667 53.3333333333334 362.6666666666667 28.3733333333333 326.6133333333333 14.08L341.3333333333333 42.6666666666667L405.3333333333333 85.3333333333334z" /> + <glyph glyph-name="sofa" + unicode="&#xF4B9;" + horiz-adv-x="512" d=" M149.3333333333333 320H192C215.4666666666667 320 234.6666666666667 300.8 234.6666666666667 277.3333333333334V192H106.6666666666667V277.3333333333334C106.6666666666667 300.8 125.8666666666667 320 149.3333333333333 320M320 320H362.6666666666667C386.1333333333334 320 405.3333333333333 300.8 405.3333333333333 277.3333333333334V192H277.3333333333333V277.3333333333334C277.3333333333333 300.8 296.5333333333333 320 320 320M21.3333333333333 256H42.6666666666667C54.4 256 64 246.4000000000001 64 234.6666666666667V192C64 168.5333333333334 83.2 149.3333333333334 106.6666666666667 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192V234.6666666666667C448 246.4000000000001 457.6 256 469.3333333333333 256H490.6666666666666C502.4 256 512 246.4000000000001 512 234.6666666666667V42.6666666666667H448V85.3333333333334H64V42.6666666666667H0V234.6666666666667C0 246.4000000000001 9.6 256 21.3333333333333 256z" /> + <glyph glyph-name="sort" + unicode="&#xF4BA;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667V213.3333333333334H384V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667V85.3333333333334H298.6666666666667V42.6666666666667H213.3333333333333M213.3333333333333 298.6666666666667V341.3333333333334H469.3333333333333V298.6666666666667H213.3333333333333M128 85.3333333333334H181.3333333333333L106.6666666666667 10.6666666666667L32 85.3333333333334H85.3333333333333V298.6666666666667H32L106.6666666666667 373.3333333333334L181.3333333333333 298.6666666666667H128V85.3333333333334z" /> + <glyph glyph-name="sort-alphabetical" + unicode="&#xF4BB;" + horiz-adv-x="512" d=" M197.3333333333333 341.3333333333334L266.6666666666667 410.6666666666667L336 341.3333333333334H197.3333333333333M336 42.6666666666667L266.6666666666667 -26.6666666666666L197.3333333333333 42.6666666666667H336M189.6533333333333 142.9333333333333H128L112.64 85.3333333333334H62.08L128 298.6666666666667H192L258.7733333333333 85.3333333333334H206.2933333333333L189.6533333333333 142.9333333333333M135.04 177.4933333333334H182.6133333333334L169.1733333333334 222.72L163.6266666666667 243.4133333333334L158.2933333333334 263.8933333333334H157.6533333333333L152.96 243.2L147.84 222.2933333333334L135.04 177.4933333333334M278.4 85.3333333333334V112.2133333333334L379.7333333333334 256.64V257.92H288V298.6666666666667H442.24V270.0800000000001L343.2533333333334 128V126.2933333333334H443.7333333333334V85.3333333333334H278.4z" /> + <glyph glyph-name="sort-ascending" + unicode="&#xF4BC;" + horiz-adv-x="512" d=" M213.3333333333333 213.3333333333334V170.6666666666667H384V213.3333333333334H213.3333333333333M213.3333333333333 341.3333333333334V298.6666666666667H298.6666666666667V341.3333333333334H213.3333333333333M213.3333333333333 85.3333333333334V42.6666666666667H469.3333333333333V85.3333333333334H213.3333333333333M128 298.6666666666667H181.3333333333333L106.6666666666667 373.3333333333334L32 298.6666666666667H85.3333333333333V21.3333333333334H128V298.6666666666667z" /> + <glyph glyph-name="sort-descending" + unicode="&#xF4BD;" + horiz-adv-x="512" d=" M213.3333333333333 170.6666666666667V213.3333333333334H384V170.6666666666667H213.3333333333333M213.3333333333333 42.6666666666667V85.3333333333334H298.6666666666667V42.6666666666667H213.3333333333333M213.3333333333333 298.6666666666667V341.3333333333334H469.3333333333333V298.6666666666667H213.3333333333333M128 85.3333333333334H181.3333333333333L106.6666666666667 10.6666666666667L32 85.3333333333334H85.3333333333333V362.6666666666667H128V85.3333333333334z" /> + <glyph glyph-name="sort-numeric" + unicode="&#xF4BE;" + horiz-adv-x="512" d=" M165.9733333333333 298.6666666666667C193.7066666666667 297.8133333333334 213.3333333333333 287.36 225.4933333333334 267.52C237.44 247.4666666666667 243.4133333333334 222.72 242.9866666666667 193.0666666666667C243.2 160 236.5866666666667 133.76 224 114.7733333333333C210.7733333333334 96 190.9333333333333 85.9733333333333 164.48 85.3333333333334C137.6 86.1866666666667 118.1866666666667 96 105.8133333333333 116.0533333333334C93.44 135.8933333333333 87.2533333333333 161.0666666666667 87.2533333333333 192C87.2533333333333 222.9333333333333 93.6533333333333 248.32 106.6666666666667 267.9466666666667C119.2533333333333 288 138.6666666666667 297.8133333333334 165.9733333333333 298.6666666666667M165.3333333333333 263.8933333333334C155.9466666666666 263.8933333333334 148.48 258.1333333333334 142.9333333333333 246.1866666666667C137.3866666666667 234.6666666666667 134.8266666666667 216.1066666666667 134.8266666666667 192C134.6133333333333 167.4666666666667 137.3866666666667 149.3333333333334 142.72 137.8133333333334C148.2666666666667 125.8666666666667 155.9466666666667 120.1066666666667 165.76 120.1066666666667C185.3866666666667 120.1066666666667 195.4133333333333 144.2133333333334 195.6266666666667 192C195.6266666666667 239.5733333333334 185.6 263.4666666666667 165.3333333333333 263.8933333333334M284.3733333333334 85.3333333333334V123.3066666666667L293.5466666666666 122.88L305.0666666666667 123.3066666666667L327.2533333333334 127.36C334.5066666666667 129.7066666666667 341.3333333333333 132.6933333333333 346.88 136.96C353.92 141.8666666666667 359.6800000000001 147.6266666666667 364.16 154.4533333333333C368.8533333333333 161.0666666666667 372.0533333333334 168.1066666666667 373.9733333333334 175.36L373.3333333333333 175.5733333333333C363.7333333333334 166.6133333333334 349.44 162.1333333333333 330.0266666666667 161.92C311.8933333333333 162.1333333333333 296.7466666666667 167.4666666666667 284.5866666666667 178.1333333333333C272.4266666666666 188.8 266.6666666666667 204.16 265.8133333333333 224C266.0266666666667 245.3333333333333 273.28 262.6133333333334 287.36 276.6933333333334C301.6533333333333 290.7733333333333 320 298.0266666666667 343.8933333333333 298.6666666666667C370.56 297.8133333333334 390.1866666666666 289.0666666666667 402.7733333333332 272.2133333333334C415.3599999999999 256 421.5466666666665 234.6666666666667 421.5466666666665 209.28C421.3333333333332 188.8 418.3466666666666 170.6666666666666 412.1599999999999 154.4533333333333C405.9733333333332 138.6666666666666 397.6533333333332 125.2266666666666 386.5599999999999 114.3466666666667C376.7466666666665 105.3866666666667 365.0133333333332 98.5600000000001 351.3599999999999 93.6533333333334C337.7066666666666 88.96 322.5599999999999 86.1866666666667 305.9199999999999 85.3333333333334H284.3733333333332M342.6133333333333 263.8933333333333C333.8666666666666 263.68 326.8266666666666 260.2666666666667 321.2799999999999 253.6533333333333C315.9466666666666 247.04 313.1733333333332 238.08 313.1733333333332 226.9866666666667C313.1733333333332 217.6 315.7333333333332 209.92 320.6399999999999 203.52C325.7599999999999 196.9066666666667 333.4399999999999 193.7066666666667 343.6799999999999 193.4933333333333C350.5066666666665 193.4933333333333 356.2666666666665 194.9866666666667 360.9599999999998 197.5466666666666C365.6533333333331 200.32 369.0666666666665 203.52 371.4133333333331 207.36C373.3333333333331 209.7066666666667 373.9733333333332 213.9733333333333 373.9733333333332 219.52C374.1866666666665 231.2533333333334 371.8399999999998 241.28 366.9333333333332 250.0266666666667C362.0266666666665 258.7733333333333 353.9199999999999 263.4666666666667 342.6133333333331 263.8933333333333M197.3333333333333 341.3333333333334L266.6666666666667 410.6666666666667L336 341.3333333333334H197.3333333333333M336 42.6666666666667L266.6666666666667 -26.6666666666666L197.3333333333333 42.6666666666667H336z" /> + <glyph glyph-name="sort-variant" + unicode="&#xF4BF;" + horiz-adv-x="512" d=" M64 170.6666666666667H320V213.3333333333334H64M64 320V277.3333333333334H448V320M64 64H192V106.6666666666667H64V64z" /> + <glyph glyph-name="soundcloud" + unicode="&#xF4C0;" + horiz-adv-x="512" d=" M246.6133333333334 258.7733333333334V85.3333333333334H433.4933333333334C472.96 88.1066666666667 490.6666666666666 112.4266666666667 490.6666666666666 142.2933333333334C490.6666666666666 173.8666666666667 466.7733333333333 199.2533333333333 434.7733333333333 199.2533333333333C426.6666666666667 199.2533333333333 419.84 197.5466666666667 412.8 194.56C407.68 244.48 365.2266666666666 283.52 312.9599999999999 283.52C288 283.52 264.32 274.1333333333334 246.6133333333333 258.7733333333333M227.84 237.0133333333333C221.44 240.8533333333333 214.6133333333333 243.84 207.1466666666666 245.3333333333334V85.3333333333334H236.8V248.7466666666667C233.6 245.3333333333334 230.6133333333333 241.0666666666667 227.84 237.0133333333333M177.7066666666666 248.5333333333333V85.3333333333334H197.3333333333333V247.8933333333333C193.28 248.5333333333333 189.2266666666666 248.7466666666667 184.96 248.7466666666667C182.4 248.7466666666667 180.0533333333333 248.7466666666667 177.7066666666666 248.5333333333333M138.6666666666667 234.6666666666667V85.3333333333334H158.08V244.48C151.04 242.1333333333334 144.4266666666667 238.7200000000001 138.6666666666667 234.6666666666667M103.04 181.3333333333334C101.76 181.3333333333334 100.48 182.6133333333334 98.9866666666667 183.2533333333333V85.3333333333334H118.6133333333333V216.32C110.72 206.08 105.3866666666667 193.92 103.04 181.3333333333334M59.52 187.3066666666667V87.2533333333333C64 85.9733333333334 69.12 85.3333333333334 74.6666666666667 85.3333333333334H79.36V189.0133333333333C77.6533333333333 189.2266666666667 75.9466666666667 189.44 74.6666666666667 189.44C69.12 189.44 64 188.5866666666667 59.52 187.3066666666667M21.3333333333333 137.3866666666667C21.3333333333333 121.3866666666667 28.5866666666667 107.3066666666667 39.8933333333333 97.7066666666667V176.8533333333334C28.5866666666667 167.4666666666667 21.3333333333333 153.1733333333334 21.3333333333333 137.3866666666667z" /> + <glyph glyph-name="source-branch" + unicode="&#xF62C;" + horiz-adv-x="512" d=" M277.3333333333333 149.3333333333334C205.6533333333333 149.3333333333334 182.1866666666667 120.5333333333334 174.5066666666667 101.5466666666666C197.3333333333333 91.7333333333334 213.3333333333333 69.12 213.3333333333333 42.6666666666667C213.3333333333333 7.2533333333333 184.7466666666667 -21.3333333333333 149.3333333333333 -21.3333333333333S85.3333333333333 7.2533333333333 85.3333333333333 42.6666666666667C85.3333333333333 70.6133333333334 103.04 94.2933333333334 128 103.04V280.9600000000001C103.04 289.7066666666667 85.3333333333333 313.3866666666667 85.3333333333333 341.3333333333334C85.3333333333333 376.7466666666667 113.92 405.3333333333333 149.3333333333333 405.3333333333333S213.3333333333333 376.7466666666667 213.3333333333333 341.3333333333334C213.3333333333333 313.3866666666667 195.6266666666667 289.7066666666667 170.6666666666667 280.9600000000001V168.1066666666667C189.44 181.9733333333334 216.7466666666667 192 256 192C312.96 192 331.9466666666667 220.5866666666667 338.1333333333334 239.5733333333334C315.0933333333333 249.1733333333334 298.6666666666667 272 298.6666666666667 298.6666666666667C298.6666666666667 334.0800000000001 327.2533333333334 362.6666666666667 362.6666666666667 362.6666666666667S426.6666666666667 334.0800000000001 426.6666666666667 298.6666666666667C426.6666666666667 270.0800000000001 407.8933333333333 245.3333333333334 382.08 237.6533333333334C376.5333333333333 207.1466666666667 355.84 149.3333333333334 277.3333333333333 149.3333333333334M149.3333333333333 64C137.6 64 128 54.4 128 42.6666666666667S137.6 21.3333333333334 149.3333333333333 21.3333333333334S170.6666666666667 30.9333333333333 170.6666666666667 42.6666666666667S161.0666666666667 64 149.3333333333333 64M149.3333333333333 362.6666666666667C137.6 362.6666666666667 128 353.0666666666667 128 341.3333333333334S137.6 320 149.3333333333333 320S170.6666666666667 329.6 170.6666666666667 341.3333333333334S161.0666666666667 362.6666666666667 149.3333333333333 362.6666666666667M362.6666666666667 320C350.9333333333333 320 341.3333333333333 310.4 341.3333333333333 298.6666666666667S350.9333333333333 277.3333333333334 362.6666666666667 277.3333333333334S384 286.9333333333334 384 298.6666666666667S374.4 320 362.6666666666667 320z" /> + <glyph glyph-name="source-fork" + unicode="&#xF4C1;" + horiz-adv-x="512" d=" M128 405.3333333333333C163.4133333333333 405.3333333333333 192 376.7466666666667 192 341.3333333333334C192 314.0266666666667 174.72 290.56 150.6133333333334 281.3866666666667C152.5333333333333 271.5733333333333 157.6533333333333 259.6266666666667 170.6666666666667 242.56C192 215.04 234.6666666666667 174.2933333333333 256 145.7066666666667C277.3333333333333 174.2933333333333 320 215.04 341.3333333333333 242.56C354.3466666666667 259.6266666666667 359.4666666666667 271.5733333333333 361.3866666666667 281.3866666666667C337.28 290.56 320 314.0266666666667 320 341.3333333333334C320 376.7466666666667 348.5866666666667 405.3333333333333 384 405.3333333333333S448 376.7466666666667 448 341.3333333333334C448 313.1733333333334 429.6533333333333 289.0666666666667 404.2666666666667 280.5333333333334C402.56 269.4400000000001 397.6533333333333 256 384 238.2933333333334C362.6666666666667 209.7066666666667 320 168.96 298.6666666666667 141.2266666666667C285.6533333333333 124.3733333333334 280.5333333333333 112.4266666666667 278.6133333333334 102.6133333333334C302.72 93.44 320 69.9733333333334 320 42.6666666666667C320 7.2533333333333 291.4133333333333 -21.3333333333333 256 -21.3333333333333S192 7.2533333333333 192 42.6666666666667C192 69.9733333333334 209.28 93.44 233.3866666666667 102.6133333333334C231.4666666666667 112.4266666666667 226.3466666666667 124.3733333333333 213.3333333333333 141.2266666666667C192 168.96 149.3333333333333 209.7066666666667 128 238.2933333333333C114.3466666666667 256 109.44 269.44 107.7333333333333 280.5333333333333C82.3466666666667 289.0666666666667 64 313.1733333333334 64 341.3333333333334C64 376.7466666666667 92.5866666666667 405.3333333333333 128 405.3333333333333M128 362.6666666666667C116.2666666666667 362.6666666666667 106.6666666666667 353.0666666666667 106.6666666666667 341.3333333333334S116.2666666666667 320 128 320S149.3333333333333 329.6 149.3333333333333 341.3333333333334S139.7333333333333 362.6666666666667 128 362.6666666666667M384 362.6666666666667C372.2666666666667 362.6666666666667 362.6666666666667 353.0666666666667 362.6666666666667 341.3333333333334S372.2666666666667 320 384 320S405.3333333333333 329.6 405.3333333333333 341.3333333333334S395.7333333333334 362.6666666666667 384 362.6666666666667M256 64C244.2666666666667 64 234.6666666666667 54.4 234.6666666666667 42.6666666666667S244.2666666666667 21.3333333333334 256 21.3333333333334S277.3333333333333 30.9333333333333 277.3333333333333 42.6666666666667S267.7333333333334 64 256 64z" /> + <glyph glyph-name="source-merge" + unicode="&#xF62D;" + horiz-adv-x="512" d=" M149.3333333333333 384C184.7466666666667 384 213.3333333333333 355.4133333333334 213.3333333333333 320C213.3333333333333 292.48 196.0533333333333 269.0133333333333 171.52 260.0533333333334C183.04 153.3866666666667 279.04 132.9066666666667 324.0533333333333 128.8533333333334C333.0133333333333 153.3866666666667 356.48 170.6666666666667 384 170.6666666666667C419.4133333333333 170.6666666666667 448 142.0800000000001 448 106.6666666666667S419.4133333333333 42.6666666666667 384 42.6666666666667C356.0533333333334 42.6666666666667 332.16 60.5866666666667 323.4133333333333 85.3333333333334C232.7466666666667 89.6 201.3866666666667 123.9466666666667 170.6666666666667 162.3466666666667V124.3733333333333C195.6266666666667 115.6266666666667 213.3333333333333 91.9466666666667 213.3333333333333 64C213.3333333333333 28.5866666666667 184.7466666666667 0 149.3333333333333 0S85.3333333333333 28.5866666666667 85.3333333333333 64C85.3333333333333 91.9466666666667 103.04 115.6266666666667 128 124.3733333333333V259.6266666666667C103.04 268.3733333333334 85.3333333333333 292.0533333333334 85.3333333333333 320C85.3333333333333 355.4133333333334 113.92 384 149.3333333333333 384M149.3333333333333 341.3333333333334C137.6 341.3333333333334 128 331.7333333333334 128 320S137.6 298.6666666666667 149.3333333333333 298.6666666666667S170.6666666666667 308.2666666666667 170.6666666666667 320S161.0666666666667 341.3333333333334 149.3333333333333 341.3333333333334M149.3333333333333 85.3333333333334C137.6 85.3333333333334 128 75.7333333333334 128 64S137.6 42.6666666666667 149.3333333333333 42.6666666666667S170.6666666666667 52.2666666666667 170.6666666666667 64S161.0666666666667 85.3333333333334 149.3333333333333 85.3333333333334M384 128C372.2666666666667 128 362.6666666666667 118.4 362.6666666666667 106.6666666666667S372.2666666666667 85.3333333333334 384 85.3333333333334S405.3333333333333 94.9333333333333 405.3333333333333 106.6666666666667S395.7333333333334 128 384 128z" /> + <glyph glyph-name="source-pull" + unicode="&#xF4C2;" + horiz-adv-x="512" d=" M128 384C163.4133333333333 384 192 355.4133333333334 192 320C192 292.0533333333334 174.2933333333333 268.3733333333334 149.3333333333333 259.6266666666667V124.3733333333333C174.2933333333333 115.6266666666667 192 91.9466666666667 192 64C192 28.5866666666667 163.4133333333333 0 128 0S64 28.5866666666667 64 64C64 91.9466666666667 81.7066666666667 115.6266666666667 106.6666666666667 124.3733333333333V259.6266666666667C81.7066666666667 268.3733333333334 64 292.0533333333334 64 320C64 355.4133333333334 92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334M128 85.3333333333334C116.2666666666667 85.3333333333334 106.6666666666667 75.7333333333334 106.6666666666667 64S116.2666666666667 42.6666666666667 128 42.6666666666667S149.3333333333333 52.2666666666667 149.3333333333333 64S139.7333333333333 85.3333333333334 128 85.3333333333334M448 64C448 28.5866666666667 419.4133333333333 0 384 0S320 28.5866666666667 320 64C320 91.9466666666667 337.7066666666667 115.6266666666667 362.6666666666667 124.3733333333333V298.6666666666667H320V229.3333333333334L229.3333333333333 320L320 410.6666666666667V341.3333333333334H362.6666666666667C386.1333333333334 341.3333333333334 405.3333333333333 322.1333333333334 405.3333333333333 298.6666666666667V124.3733333333333C430.2933333333334 115.6266666666667 448 91.9466666666667 448 64M384 85.3333333333334C372.2666666666667 85.3333333333334 362.6666666666667 75.7333333333334 362.6666666666667 64S372.2666666666667 42.6666666666667 384 42.6666666666667S405.3333333333333 52.2666666666667 405.3333333333333 64S395.7333333333334 85.3333333333334 384 85.3333333333334z" /> + <glyph glyph-name="speaker" + unicode="&#xF4C3;" + horiz-adv-x="512" d=" M256 192C220.5866666666667 192 192 163.4133333333334 192 128S220.5866666666667 64 256 64S320 92.5866666666667 320 128S291.4133333333333 192 256 192M256 21.3333333333334C197.12 21.3333333333334 149.3333333333333 69.1200000000001 149.3333333333333 128S197.12 234.6666666666667 256 234.6666666666667S362.6666666666667 186.88 362.6666666666667 128S314.88 21.3333333333334 256 21.3333333333334M256 362.6666666666667C279.4666666666667 362.6666666666667 298.6666666666667 343.4666666666667 298.6666666666667 320S279.4666666666667 277.3333333333334 256 277.3333333333334C232.32 277.3333333333334 213.3333333333333 296.5333333333334 213.3333333333333 320C213.3333333333333 343.68 232.32 362.6666666666667 256 362.6666666666667M362.6666666666667 405.3333333333333H149.3333333333333C125.6533333333333 405.3333333333333 106.6666666666667 386.3466666666667 106.6666666666667 362.6666666666667V21.3333333333334C106.6666666666667 -2.1333333333333 125.8666666666667 -21.3333333333333 149.3333333333333 -21.3333333333333H362.6666666666667C386.1333333333334 -21.3333333333333 405.3333333333333 -2.1333333333333 405.3333333333333 21.3333333333334V362.6666666666667C405.3333333333333 386.3466666666667 386.1333333333334 405.3333333333333 362.6666666666667 405.3333333333333z" /> + <glyph glyph-name="speaker-off" + unicode="&#xF4C4;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L448 -15.36L420.9066666666667 -42.6666666666666L389.76 -11.52C382.5066666666667 -17.7066666666666 373.3333333333333 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C125.6533333333333 -21.3333333333333 106.6666666666667 -2.1333333333333 106.6666666666667 21.3333333333334V271.5733333333334L42.6666666666667 335.5733333333334M256 64C220.5866666666667 64 192 92.5866666666667 192 128C192 144.2133333333334 197.9733333333333 159.1466666666667 208 170.6666666666667L177.7066666666667 200.5333333333334C160 181.3333333333334 149.3333333333333 155.9466666666667 149.3333333333333 128C149.3333333333333 69.1200000000001 197.12 21.3333333333334 256 21.3333333333334C283.9466666666667 21.3333333333334 309.3333333333333 32 328.5333333333333 49.7066666666667L298.6666666666667 80C286.9333333333333 69.9733333333334 272.2133333333333 64 256 64M362.6666666666667 128C362.6666666666667 186.88 314.88 234.6666666666667 256 234.6666666666667H252.16L109.2266666666667 377.6C115.4133333333333 393.8133333333334 130.9866666666667 405.3333333333333 149.3333333333333 405.3333333333333H362.6666666666667C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V81.4933333333333L362.6666666666667 124.3733333333333V128M256 362.6666666666667C232.32 362.6666666666667 213.3333333333333 343.68 213.3333333333333 320C213.3333333333333 296.5333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334S298.6666666666667 296.5333333333334 298.6666666666667 320C298.6666666666667 343.68 279.4666666666667 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="speedometer" + unicode="&#xF4C5;" + horiz-adv-x="512" d=" M256 106.6666666666667C220.5866666666667 106.6666666666667 192 135.2533333333333 192 170.6666666666667C192 194.56 205.0133333333333 215.4666666666667 224 226.3466666666667L431.1466666666667 346.24L313.1733333333333 141.8666666666667C302.5066666666667 120.96 280.96 106.6666666666667 256 106.6666666666667M256 384C294.6133333333334 384 330.6666666666667 373.3333333333334 362.0266666666667 355.8400000000001L317.2266666666667 330.0266666666667C298.6666666666667 337.28 277.3333333333333 341.3333333333334 256 341.3333333333334C161.7066666666667 341.3333333333334 85.3333333333333 264.9600000000001 85.3333333333333 170.6666666666667C85.3333333333333 123.52 104.32 80.8533333333334 135.2533333333333 50.1333333333334H135.4666666666667C143.7866666666666 41.8133333333334 143.7866666666666 28.3733333333334 135.4666666666667 20.0533333333334C127.1466666666667 11.7333333333333 113.4933333333333 11.7333333333333 105.1733333333333 19.84C66.56 58.4533333333333 42.6666666666667 111.7866666666667 42.6666666666667 170.6666666666667C42.6666666666667 288.4266666666667 138.24 384 256 384M469.3333333333333 170.6666666666667C469.3333333333333 111.7866666666667 445.44 58.4533333333334 406.8266666666667 19.84C398.5066666666667 11.7333333333333 385.0666666666667 11.7333333333333 376.7466666666667 20.0533333333334C368.4266666666666 28.3733333333334 368.4266666666666 41.8133333333334 376.7466666666667 50.1333333333334C407.68 81.0666666666667 426.6666666666667 123.52 426.6666666666667 170.6666666666667C426.6666666666667 192 422.6133333333333 213.3333333333334 415.1466666666667 232.5333333333334L440.9600000000001 277.3333333333334C458.6666666666666 245.3333333333334 469.3333333333333 209.4933333333334 469.3333333333333 170.6666666666667z" /> + <glyph glyph-name="spellcheck" + unicode="&#xF4C6;" + horiz-adv-x="512" d=" M460.5866666666666 200.7466666666667L288 28.16L209.7066666666667 106.6666666666667L179.6266666666667 76.5866666666667L288 -32L490.6666666666666 170.6666666666667M137.1733333333333 213.3333333333334L181.3333333333333 330.6666666666667L225.4933333333334 213.3333333333334M265.6 106.6666666666667H310.1866666666666L201.1733333333333 384H161.4933333333334L52.48 106.6666666666667H97.0666666666667L120.96 170.6666666666667H241.28L265.6 106.6666666666667z" /> + <glyph glyph-name="spotify" + unicode="&#xF4C7;" + horiz-adv-x="512" d=" M381.8666666666666 215.4666666666667C313.6 256 199.4666666666667 260.2666666666667 134.4 240C123.7333333333333 236.8 113.0666666666667 243.2 109.8666666666667 252.8C106.6666666666667 263.4666666666667 113.0666666666667 274.1333333333334 122.6666666666667 277.3333333333334C198.4 299.7333333333334 323.2 295.4666666666667 402.1333333333334 248.5333333333334C411.7333333333334 243.2 414.9333333333334 230.4000000000001 409.6 220.8C404.2666666666667 213.3333333333334 391.4666666666667 210.1333333333333 381.8666666666667 215.4666666666667M379.7333333333334 155.7333333333334C374.4 148.2666666666667 364.8 145.0666666666667 357.3333333333333 150.4C299.7333333333334 185.6 212.2666666666667 196.2666666666667 145.0666666666667 174.9333333333334C136.5333333333333 172.8000000000001 126.9333333333334 177.0666666666667 124.8 185.6C122.6666666666667 194.1333333333334 126.9333333333333 203.7333333333334 135.4666666666667 205.8666666666667C213.3333333333333 229.3333333333334 309.3333333333333 217.6 375.4666666666667 177.0666666666667C381.8666666666667 173.8666666666667 385.0666666666667 163.2000000000001 379.7333333333334 155.7333333333334M354.1333333333334 97.0666666666667C349.8666666666667 90.6666666666667 342.4 88.5333333333334 336 92.8000000000001C285.8666666666667 123.7333333333334 222.9333333333334 130.1333333333334 148.2666666666667 113.0666666666667C140.8 110.9333333333334 134.4 116.2666666666667 132.2666666666667 122.6666666666667C130.1333333333334 130.1333333333333 135.4666666666667 136.5333333333334 141.8666666666667 138.6666666666667C222.9333333333333 156.8 293.3333333333333 149.3333333333334 348.8 115.2000000000001C356.2666666666667 112 357.3333333333333 103.4666666666667 354.1333333333334 97.0666666666667M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="spotlight" + unicode="&#xF4C8;" + horiz-adv-x="512" d=" M42.6666666666667 320L151.2533333333333 265.6C136.5333333333333 245.3333333333334 128 219.52 128 192S136.5333333333333 138.6666666666667 151.2533333333333 118.4L42.6666666666667 64V320M128 384H384L329.6 296.7466666666667C309.3333333333333 311.4666666666667 283.52 320 256 320S202.6666666666667 311.4666666666667 182.4 296.7466666666667L128 384M469.3333333333333 320V64L360.7466666666667 118.4C375.4666666666667 138.6666666666667 384 164.48 384 192S375.4666666666667 245.3333333333334 360.7466666666667 265.6L469.3333333333333 320M384 0H128L182.4 87.2533333333333C202.6666666666667 72.5333333333333 228.48 64 256 64S309.3333333333333 72.5333333333333 329.6 87.2533333333333L384 0M256 277.3333333333334C303.1466666666667 277.3333333333334 341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667S170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="spotlight-beam" + unicode="&#xF4C9;" + horiz-adv-x="512" d=" M192 96L211.4133333333333 115.4133333333334L322.7733333333333 4.2666666666667L303.1466666666667 -15.1466666666666L192 96M330.6666666666667 234.6666666666667L350.08 254.08L461.4399999999999 142.9333333333333L441.8133333333333 123.52L330.6666666666667 234.6666666666667M143.36 389.9733333333334L216.5333333333333 316.8L131.2 231.4666666666667L58.0266666666667 304.64C41.3866666666667 321.28 41.3866666666667 348.3733333333334 58.0266666666667 365.0133333333333L82.9866666666667 389.9733333333333C99.6266666666667 406.6133333333334 126.72 406.6133333333334 143.36 389.9733333333333M310.8266666666667 288L325.9733333333334 272.8533333333334L175.1466666666667 122.0266666666667L160 137.1733333333334L141.6533333333333 211.84L236.16 306.3466666666667L310.8266666666667 288z" /> + <glyph glyph-name="spray" + unicode="&#xF665;" + horiz-adv-x="512" d=" M213.3333333333333 362.6666666666667H256V320H213.3333333333333V362.6666666666667M149.3333333333333 384H192V341.3333333333334H149.3333333333333V384M149.3333333333333 320H192V277.3333333333334H149.3333333333333V320M128 277.3333333333334V234.6666666666667H85.3333333333333V277.3333333333334H128M128 341.3333333333334V298.6666666666667H85.3333333333333V341.3333333333334H128M128 405.3333333333333V362.6666666666667H85.3333333333333V405.3333333333333H128M277.3333333333333 -21.3333333333333C253.8666666666667 -21.3333333333333 234.6666666666667 -2.1333333333333 234.6666666666667 21.3333333333334V234.6666666666667C234.6666666666667 258.1333333333334 253.8666666666667 277.3333333333334 277.3333333333333 277.3333333333334V298.6666666666667H298.6666666666667V362.6666666666667H362.6666666666667V298.6666666666667H384V277.3333333333334C407.4666666666667 277.3333333333334 426.6666666666667 258.1333333333334 426.6666666666667 234.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H277.3333333333333M277.3333333333333 234.6666666666667V21.3333333333334H384V234.6666666666667H277.3333333333333z" /> + <glyph glyph-name="square-inc" + unicode="&#xF4CA;" + horiz-adv-x="512" d=" M128 384H384C419.4133333333333 384 448 355.4133333333334 448 320V64C448 28.5866666666667 419.4133333333333 0 384 0H128C92.5866666666667 0 64 28.5866666666667 64 64V320C64 355.4133333333334 92.5866666666667 384 128 384M149.3333333333333 320C137.6 320 128 310.4 128 298.6666666666667V85.3333333333334C128 73.6 137.6 64 149.3333333333333 64H362.6666666666667C374.4 64 384 73.6 384 85.3333333333334V298.6666666666667C384 310.4 374.4 320 362.6666666666667 320H149.3333333333333M202.6666666666667 256H309.3333333333333C315.3066666666666 256 320 251.3066666666667 320 245.3333333333334V138.6666666666667C320 132.6933333333334 315.3066666666666 128 309.3333333333333 128H202.6666666666667C196.6933333333333 128 192 132.6933333333334 192 138.6666666666667V245.3333333333334C192 251.3066666666667 196.6933333333333 256 202.6666666666667 256z" /> + <glyph glyph-name="square-inc-cash" + unicode="&#xF4CB;" + horiz-adv-x="512" d=" M117.3333333333333 448H394.6666666666667C459.52 448 512 395.52 512 330.6666666666667V53.3333333333334C512 -11.52 459.52 -64 394.6666666666667 -64H117.3333333333333C52.48 -64 0 -11.52 0 53.3333333333334V330.6666666666667C0 395.52 52.48 448 117.3333333333333 448M328.32 124.16C328.32 90.4533333333334 309.3333333333333 68.0533333333334 274.1333333333334 65.0666666666667V178.9866666666667C310.4 167.8933333333334 328.32 156.5866666666667 328.32 124.16M248.5333333333334 320V215.8933333333334C220.5866666666667 224.0000000000001 192.64 236.1600000000001 192.64 268.1600000000001C192.64 299.9466666666667 217.1733333333334 317.4400000000001 248.5333333333334 320M330.6666666666667 285.8666666666667L352 302.9333333333334C333.2266666666667 327.2533333333334 307.2 343.04 274.1333333333334 346.24V366.9333333333334H248.5333333333334V346.6666666666667C202.6666666666667 343.68 163.84 316.3733333333334 163.84 266.6666666666667C163.84 213.3333333333334 207.7866666666667 196.6933333333334 248.5333333333334 185.8133333333334V64.8533333333334C224.8533333333334 67.4133333333334 198.1866666666667 78.72 179.84 106.0266666666666L155.7333333333333 90.0266666666666C174.9333333333333 61.44 208.2133333333333 42.6666666666667 248.5333333333333 39.68V17.0666666666667H274.1333333333333V39.2533333333333C327.4666666666666 42.6666666666667 356.2666666666667 78.08 356.2666666666667 125.0133333333333C356.2666666666667 179.6266666666667 315.9466666666666 197.12 274.1333333333334 209.28V318.9333333333334C298.6666666666667 315.3066666666667 316.8 303.7866666666667 330.6666666666667 285.8666666666667z" /> + <glyph glyph-name="stackexchange" + unicode="&#xF60B;" + horiz-adv-x="512" d=" M85.3333333333333 148.48V213.3333333333334H426.6666666666667V148.48H85.3333333333333M85.3333333333333 234.6666666666667V298.6666666666667H426.6666666666667V234.6666666666667H85.3333333333333M372.48 405.3333333333333C402.3466666666667 405.3333333333333 426.6666666666667 380.16 426.6666666666667 349.2266666666667V320H85.3333333333333V349.2266666666667C85.3333333333333 380.16 109.6533333333333 405.3333333333333 139.52 405.3333333333333H372.48M85.3333333333333 128H426.6666666666667V99.2C426.6666666666667 68.0533333333333 402.3466666666667 42.6666666666667 372.48 42.6666666666667H352L277.3333333333333 -21.3333333333333V42.6666666666667H139.52C109.6533333333333 42.6666666666667 85.3333333333333 68.0533333333334 85.3333333333333 99.2V128z" /> + <glyph glyph-name="stackoverflow" + unicode="&#xF4CC;" + horiz-adv-x="512" d=" M370.3466666666667 17.0666666666667V131.84H408.5333333333333V-21.3333333333333H64V131.84H102.4V17.0666666666667H370.3466666666667M144.4266666666667 142.5066666666667L152.32 180.0533333333334L339.84 140.5866666666667L331.9466666666667 103.04L144.4266666666667 142.5066666666667M169.1733333333334 232.32L185.3866666666667 266.6666666666667L359.04 186.0266666666667L342.8266666666667 151.4666666666667L169.1733333333333 232.32M217.3866666666667 317.44L241.92 346.88L389.12 224L364.5866666666667 194.7733333333333L217.3866666666667 317.44M312.3200000000001 408.1066666666666L426.6666666666667 254.2933333333334L395.9466666666666 231.4666666666667L281.6 385.28L312.32 408.1066666666667M140.5866666666667 55.2533333333333V93.6533333333334H332.16V55.2533333333333H140.5866666666667z" /> + <glyph glyph-name="stairs" + unicode="&#xF4CD;" + horiz-adv-x="512" d=" M320 341.3333333333334V256H234.6666666666667V170.6666666666667H149.3333333333333V85.3333333333334H64V21.3333333333334H213.3333333333333V106.6666666666667H298.6666666666667V192H384V277.3333333333334H469.3333333333333V341.3333333333334H320z" /> + <glyph glyph-name="star" + unicode="&#xF4CE;" + horiz-adv-x="512" d=" M256 79.5733333333334L387.84 0L352.8533333333333 149.9733333333334L469.3333333333333 250.88L315.9466666666666 264.1066666666667L256 405.3333333333333L196.0533333333333 264.1066666666667L42.6666666666667 250.88L158.9333333333333 149.9733333333334L124.16 0L256 79.5733333333334z" /> + <glyph glyph-name="star-circle" + unicode="&#xF4CF;" + horiz-adv-x="512" d=" M346.24 64L256 118.4L165.76 64L189.6533333333333 166.6133333333334L110.08 235.52L215.04 244.48L256 341.3333333333334L296.96 244.6933333333334L401.92 235.7333333333333L322.3466666666667 166.8266666666667L346.24 64M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="star-half" + unicode="&#xF4D0;" + horiz-adv-x="512" d=" M256 109.0133333333333V307.4133333333334L292.48 221.2266666666667L385.92 213.3333333333334L315.0933333333333 151.8933333333334L336.2133333333333 60.5866666666667M469.3333333333333 240.2133333333334L315.9466666666666 253.2266666666667L256 394.6666666666667L196.0533333333333 253.2266666666667L42.6666666666667 240.2133333333334L158.9333333333333 139.3066666666667L124.16 -10.6666666666666L256 68.9066666666667L387.84 -10.6666666666666L352.8533333333333 139.3066666666667L469.3333333333333 240.2133333333334z" /> + <glyph glyph-name="star-off" + unicode="&#xF4D1;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L363.7333333333334 14.72L256 79.5733333333334L124.16 0L158.9333333333333 149.9733333333334L42.6666666666667 250.88L120.7466666666667 257.4933333333334L42.6666666666667 335.5733333333334M256 405.3333333333333L315.9466666666667 264.1066666666667L469.3333333333333 250.88L352.8533333333333 149.9733333333334L357.76 129.0666666666667L203.9466666666666 282.88L256 405.3333333333333z" /> + <glyph glyph-name="star-outline" + unicode="&#xF4D2;" + horiz-adv-x="512" d=" M256 119.68L175.7866666666667 71.2533333333333L196.9066666666667 162.5600000000001L126.08 224L219.52 231.8933333333333L256 318.0800000000001L292.48 231.8933333333334L385.92 224.0000000000001L315.0933333333333 162.5600000000001L336.2133333333333 71.2533333333333M469.3333333333333 250.88L315.9466666666666 263.8933333333333L256 405.3333333333333L196.0533333333333 263.8933333333333L42.6666666666667 250.88L158.9333333333333 149.9733333333334L124.16 0L256 79.5733333333334L387.84 0L352.8533333333333 149.9733333333334L469.3333333333333 250.88z" /> + <glyph glyph-name="steam" + unicode="&#xF4D3;" + horiz-adv-x="512" d=" M429.6533333333333 281.8133333333334C455.04 281.8133333333334 475.52 261.3333333333334 475.52 236.1600000000001C475.52 210.9866666666667 455.04 190.5066666666667 429.6533333333333 190.5066666666667C404.48 190.5066666666667 384 210.9866666666667 384 236.1600000000001C384 261.3333333333334 404.48 281.8133333333334 429.6533333333333 281.8133333333334M64 300.1600000000001C99.4133333333333 300.1600000000001 128 271.5733333333334 128 236.1600000000001V229.5466666666667L263.04 159.1466666666667C273.92 167.4666666666667 287.1466666666667 172.16 301.6533333333333 172.16L347.52 236.1600000000001C347.52 281.6 384 318.5066666666667 429.6533333333333 318.5066666666667C475.0933333333333 318.5066666666667 512 281.6 512 236.1600000000001S475.0933333333333 153.8133333333334 429.6533333333333 153.8133333333334L365.6533333333333 108.16C365.6533333333333 72.7466666666667 337.0666666666667 44.16 301.6533333333333 44.16C266.6666666666667 44.16 237.6533333333334 72.7466666666667 237.6533333333334 108.16V110.5066666666667L98.9866666666667 182.6133333333334C88.96 176 76.8 172.16 64 172.16C28.5866666666667 172.16 0 200.7466666666667 0 236.16S28.5866666666667 300.16 64 300.16M320.64 129.28C334.2933333333334 122.4533333333333 339.6266666666667 106.0266666666666 332.5866666666667 92.3733333333333C325.76 78.9333333333333 309.3333333333334 73.6 295.8933333333333 80.4266666666667L256.64 100.9066666666667C260.0533333333334 79.1466666666667 279.04 62.5066666666667 301.6533333333333 62.5066666666667C327.04 62.5066666666667 347.52 82.9866666666667 347.52 108.16C347.52 133.3333333333334 327.04 153.8133333333334 301.6533333333333 153.8133333333334C294.6133333333333 153.8133333333334 288 152.3200000000001 282.0266666666667 149.3333333333334L320.64 129.28M64 281.8133333333334C38.8266666666667 281.8133333333334 18.3466666666667 261.3333333333334 18.3466666666667 236.1600000000001C18.3466666666667 210.9866666666667 38.8266666666667 190.5066666666667 64 190.5066666666667C69.12 190.5066666666667 74.6666666666667 191.36 78.9333333333333 193.0666666666667L48.64 208.64C34.9866666666667 215.68 29.6533333333333 232.1066666666667 36.48 245.3333333333334C43.52 258.9866666666667 59.9466666666667 264.5333333333334 73.3866666666667 257.4933333333334L109.6533333333333 238.72C108.3733333333334 262.8266666666667 88.32 281.8133333333334 64 281.8133333333334M429.6533333333333 300.16C394.6666666666667 300.16 365.6533333333333 271.5733333333333 365.6533333333333 236.1600000000001S394.24 172.16 429.6533333333333 172.16S493.6533333333333 200.7466666666667 493.6533333333333 236.1600000000001S465.0666666666667 300.1600000000001 429.6533333333333 300.1600000000001z" /> + <glyph glyph-name="steering" + unicode="&#xF4D4;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C343.4666666666667 362.6666666666667 416 296.5333333333334 426.6666666666667 213.3333333333334H362.6666666666667C352 236.8 307.2 256 256 256S160 236.8 149.3333333333333 213.3333333333334H85.3333333333333C96 296.5333333333334 168.5333333333333 362.6666666666667 256 362.6666666666667M85.3333333333333 170.6666666666667H149.3333333333333C153.6 142.9333333333333 174.9333333333333 93.8666666666667 234.6666666666667 85.3333333333334V21.3333333333334C157.8666666666667 29.8666666666667 93.8666666666667 93.8666666666667 85.3333333333333 170.6666666666667M277.3333333333333 21.3333333333334V85.3333333333334C337.0666666666667 93.8666666666667 356.2666666666667 142.9333333333333 362.6666666666667 170.6666666666667H426.6666666666667C418.1333333333334 93.8666666666667 354.1333333333334 29.8666666666667 277.3333333333333 21.3333333333334z" /> + <glyph glyph-name="step-backward" + unicode="&#xF4D5;" + horiz-adv-x="512" d=" M405.3333333333333 341.3333333333334V42.6666666666667H341.3333333333333V341.3333333333334M298.6666666666667 341.3333333333334V42.6666666666667L64 192" /> + <glyph glyph-name="step-backward-2" + unicode="&#xF4D6;" + horiz-adv-x="512" d=" M362.6666666666667 341.3333333333334H298.6666666666667V42.6666666666667H362.6666666666667V341.3333333333334M256 341.3333333333334L21.3333333333333 192L256 42.6666666666667V341.3333333333334M469.3333333333333 341.3333333333334H405.3333333333333V42.6666666666667H469.3333333333333V341.3333333333334z" /> + <glyph glyph-name="step-forward" + unicode="&#xF4D7;" + horiz-adv-x="512" d=" M106.6666666666667 341.3333333333334V42.6666666666667H170.6666666666667V341.3333333333334M213.3333333333333 341.3333333333334V42.6666666666667L448 192" /> + <glyph glyph-name="step-forward-2" + unicode="&#xF4D8;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H213.3333333333333V42.6666666666667H149.3333333333333V341.3333333333334M256 341.3333333333334L490.6666666666666 192L256 42.6666666666667V341.3333333333334M42.6666666666667 341.3333333333334H106.6666666666667V42.6666666666667H42.6666666666667V341.3333333333334z" /> + <glyph glyph-name="stethoscope" + unicode="&#xF4D9;" + horiz-adv-x="512" d=" M405.3333333333333 277.3333333333334C417.28 277.3333333333334 426.6666666666667 268.1600000000001 426.6666666666667 256C426.6666666666667 244.2666666666667 417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667C393.1733333333333 234.6666666666667 384 244.2666666666667 384 256C384 268.1600000000001 393.1733333333333 277.3333333333334 405.3333333333333 277.3333333333334M42.6666666666667 405.3333333333333V213.3333333333334C42.6666666666667 150.1866666666667 89.3866666666667 96 152.32 87.2533333333333C165.5466666666667 23.04 222.2933333333333 -21.3333333333333 288 -21.3333333333333C364.5866666666667 -21.3333333333333 426.6666666666667 40.7466666666667 426.6666666666667 117.3333333333334V196.0533333333334C451.4133333333333 205.0133333333333 469.3333333333333 228.48 469.3333333333333 256C469.3333333333333 291.4133333333334 440.7466666666667 320 405.3333333333333 320S341.3333333333333 291.4133333333334 341.3333333333333 256C341.3333333333333 228.48 359.2533333333334 204.8 384 196.0533333333334V119.2533333333333C384 65.92 341.3333333333333 23.2533333333333 288 23.2533333333333C245.3333333333333 23.2533333333333 209.4933333333334 49.0666666666667 196.6933333333333 87.4666666666667C256 100.2666666666667 298.6666666666667 153.6 298.6666666666667 213.3333333333334V405.3333333333333H213.3333333333333V341.3333333333334H256V213.3333333333334C256 166.1866666666667 217.8133333333333 128 170.6666666666667 128S85.3333333333333 166.1866666666667 85.3333333333333 213.3333333333334V341.3333333333334H128V405.3333333333333H42.6666666666667z" /> + <glyph glyph-name="sticker" + unicode="&#xF5D0;" + horiz-adv-x="512" d=" M258.56 54.1866666666667L390.3999999999999 186.0266666666667C361.3866666666666 179.4133333333333 326.6133333333333 166.4 300.1599999999999 139.52C278.1866666666666 117.3333333333334 264.32 88.96 258.56 54.1866666666667M442.6666666666667 234.6666666666667H449.0666666666667C457.3866666666667 234.6666666666667 464.8533333333333 228.9066666666667 467.84 221.0133333333333C470.8266666666667 213.3333333333334 469.3333333333333 204.16 462.9333333333333 198.1866666666667L249.6 -15.1466666666666C245.3333333333333 -19.2 240.2133333333333 -21.3333333333333 234.6666666666667 -21.3333333333333L226.9866666666667 -19.84C219.0933333333334 -16.8533333333333 213.3333333333333 -9.3866666666667 213.3333333333333 -1.0666666666667C209.92 71.2533333333333 228.9066666666667 128.8533333333334 270.08 170.0266666666667C330.6666666666667 230.4000000000001 418.56 234.6666666666667 442.6666666666667 234.6666666666667M256 405.3333333333333C352 405.3333333333333 433.92 341.3333333333334 460.3733333333333 253.6533333333334L426.6666666666667 256H414.2933333333334C389.12 318.5066666666667 327.68 362.6666666666667 256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 120.3200000000001 129.4933333333334 58.88 192 33.7066666666667C191.36 18.5599999999999 192 3.2 194.3466666666666 -12.16C106.6666666666667 14.2933333333334 42.6666666666667 96 42.6666666666667 192C42.6666666666667 309.9733333333334 138.6666666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="stocking" + unicode="&#xF4DA;" + horiz-adv-x="512" d=" M362.6666666666667 405.3333333333333C386.1333333333334 405.3333333333333 405.3333333333333 386.1333333333334 405.3333333333333 362.6666666666667V298.6666666666667C405.3333333333333 275.2000000000001 386.1333333333334 256 362.6666666666667 256V85.3333333333334C362.6666666666667 67.2 352 51.84 335.7866666666667 45.6533333333334L202.6666666666667 -16.4266666666666C181.3333333333333 -26.4533333333333 155.52 -17.28 145.7066666666667 4.0533333333334L128 42.6666666666667C117.3333333333333 64 126.9333333333333 89.6 148.2666666666667 99.4133333333334L213.3333333333333 129.92V256C189.8666666666667 256 170.6666666666667 275.2000000000001 170.6666666666667 298.6666666666667V362.6666666666667C170.6666666666667 386.1333333333334 189.8666666666667 405.3333333333333 213.3333333333333 405.3333333333333H362.6666666666667M213.3333333333333 362.6666666666667V298.6666666666667H362.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="stop" + unicode="&#xF4DB;" + horiz-adv-x="512" d=" M384 64H128V320H384V64z" /> + <glyph glyph-name="stop-circle" + unicode="&#xF666;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M192 256H320V128H192" /> + <glyph glyph-name="stop-circle-outline" + unicode="&#xF667;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M256 362.6666666666667C350.08 362.6666666666667 426.6666666666667 286.0800000000001 426.6666666666667 192S350.08 21.3333333333334 256 21.3333333333334S85.3333333333333 97.92 85.3333333333333 192S161.92 362.6666666666667 256 362.6666666666667M192 256V128H320V256" /> + <glyph glyph-name="store" + unicode="&#xF4DC;" + horiz-adv-x="512" d=" M256 64H128V149.3333333333334H256M448 149.3333333333334V192L426.6666666666667 298.6666666666667H85.3333333333333L64 192V149.3333333333334H85.3333333333333V21.3333333333334H298.6666666666667V149.3333333333334H384V21.3333333333334H426.6666666666667V149.3333333333334M426.6666666666667 362.6666666666667H85.3333333333333V320H426.6666666666667V362.6666666666667z" /> + <glyph glyph-name="store-24-hour" + unicode="&#xF4DD;" + horiz-adv-x="512" d=" M341.3333333333333 192H320V234.6666666666667H277.3333333333333V298.6666666666667H298.6666666666667V256H320V298.6666666666667H341.3333333333333M234.6666666666667 234.6666666666667H192V213.3333333333334H234.6666666666667V192H170.6666666666667V256H213.3333333333333V277.3333333333334H170.6666666666667V298.6666666666667H234.6666666666667M405.3333333333333 298.6666666666667V362.6666666666667H106.6666666666667V298.6666666666667H42.6666666666667V21.3333333333334H213.3333333333333V106.6666666666667H298.6666666666667V21.3333333333334H469.3333333333333V298.6666666666667H405.3333333333333z" /> + <glyph glyph-name="stove" + unicode="&#xF4DE;" + horiz-adv-x="512" d=" M128 149.3333333333334H170.6666666666667L234.6666666666667 85.3333333333334H192L128 149.3333333333334M85.3333333333333 362.6666666666667H106.6666666666667V384C106.6666666666667 395.7333333333334 116.2666666666667 405.3333333333333 128 405.3333333333333H213.3333333333333C225.0666666666667 405.3333333333333 234.6666666666667 395.7333333333334 234.6666666666667 384V362.6666666666667H277.3333333333333V384C277.3333333333333 395.7333333333334 286.9333333333333 405.3333333333333 298.6666666666667 405.3333333333333H384C395.7333333333334 405.3333333333333 405.3333333333333 395.7333333333334 405.3333333333333 384V362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0V-21.3333333333333H362.6666666666667V0H149.3333333333333V-21.3333333333333H85.3333333333333V0C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667M384 298.6666666666667C395.7333333333334 298.6666666666667 405.3333333333333 289.0666666666667 405.3333333333333 277.3333333333334S395.7333333333334 256 384 256S362.6666666666667 265.6 362.6666666666667 277.3333333333334S372.2666666666667 298.6666666666667 384 298.6666666666667M298.6666666666667 298.6666666666667C310.4 298.6666666666667 320 289.0666666666667 320 277.3333333333334S310.4 256 298.6666666666667 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S286.9333333333333 298.6666666666667 298.6666666666667 298.6666666666667M426.6666666666667 320H85.3333333333333V234.6666666666667H426.6666666666667V320M85.3333333333333 42.6666666666667H426.6666666666667V192H85.3333333333333V42.6666666666667M128 298.6666666666667C139.7333333333333 298.6666666666667 149.3333333333333 289.0666666666667 149.3333333333333 277.3333333333334S139.7333333333333 256 128 256S106.6666666666667 265.6 106.6666666666667 277.3333333333334S116.2666666666667 298.6666666666667 128 298.6666666666667M277.3333333333333 149.3333333333334H320L384 85.3333333333334H341.3333333333333L277.3333333333333 149.3333333333334z" /> + <glyph glyph-name="subdirectory-arrow-left" + unicode="&#xF60C;" + horiz-adv-x="512" d=" M234.6666666666667 256L264.96 225.7066666666667L188.3733333333333 149.3333333333334H384V362.6666666666667H426.6666666666667V106.6666666666667H188.3733333333333L264.96 30.2933333333334L234.6666666666667 0L106.6666666666667 128L234.6666666666667 256z" /> + <glyph glyph-name="subdirectory-arrow-right" + unicode="&#xF60D;" + horiz-adv-x="512" d=" M405.3333333333333 128L277.3333333333333 0L247.04 30.2933333333334L323.6266666666667 106.6666666666667H85.3333333333333V362.6666666666667H128V149.3333333333334H323.6266666666667L247.04 225.7066666666667L277.3333333333333 256L405.3333333333333 128z" /> + <glyph glyph-name="subway" + unicode="&#xF4DF;" + horiz-adv-x="512" d=" M384 213.3333333333334H277.3333333333333V320H384M352 85.3333333333334C334.2933333333333 85.3333333333334 320 99.6266666666667 320 117.3333333333334S334.2933333333333 149.3333333333334 352 149.3333333333334S384 135.04 384 117.3333333333334S369.7066666666666 85.3333333333334 352 85.3333333333334M234.6666666666667 213.3333333333334H128V320H234.6666666666667M160 85.3333333333334C142.2933333333333 85.3333333333334 128 99.6266666666667 128 117.3333333333334S142.2933333333333 149.3333333333334 160 149.3333333333334S192 135.04 192 117.3333333333334S177.7066666666667 85.3333333333334 160 85.3333333333334M256 405.3333333333333C161.7066666666667 405.3333333333333 85.3333333333333 394.6666666666667 85.3333333333333 320V117.3333333333334C85.3333333333333 76.16 118.8266666666667 42.6666666666667 160 42.6666666666667L128 10.6666666666667V0H384V10.6666666666667L352 42.6666666666667C393.1733333333333 42.6666666666667 426.6666666666667 76.16 426.6666666666667 117.3333333333334V320C426.6666666666667 394.6666666666667 350.2933333333334 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="sunglasses" + unicode="&#xF4E0;" + horiz-adv-x="512" d=" M149.3333333333333 85.3333333333334H85.3333333333333C50.7733333333333 85.3333333333334 20.48 112.2133333333334 16.2133333333333 146.3466666666667L5.5466666666667 210.1333333333333C3.2 228.2666666666667 8.32 245.3333333333334 19.4133333333333 257.7066666666667C30.5066666666667 270.0800000000001 46.72 277.3333333333334 64 277.3333333333334H192C209.7066666666667 277.3333333333334 225.7066666666667 269.8666666666667 235.9466666666667 256.8533333333334C238.2933333333333 253.6533333333333 240.4266666666667 250.24 242.1333333333334 246.4C251.3066666666667 248.32 260.6933333333333 248.32 269.6533333333333 246.4C271.36 250.24 273.4933333333334 253.6533333333333 276.0533333333334 256.8533333333334C286.08 269.8666666666667 302.08 277.3333333333334 320 277.3333333333334H448C465.28 277.3333333333334 481.4933333333333 270.0800000000001 492.5866666666666 257.7066666666667C503.4666666666667 245.3333333333334 508.5866666666666 228.2666666666667 506.4533333333333 210.9866666666667L495.5733333333333 145.4933333333334C491.52 112.2133333333334 461.0133333333333 85.3333333333334 426.6666666666667 85.3333333333334H362.6666666666667C329.3866666666667 85.3333333333334 296.96 110.72 288.8533333333333 142.9333333333333L269.6533333333333 200.7466666666667C261.5466666666666 206.72 250.24 206.72 242.1333333333333 200.7466666666667L222.5066666666666 141.4400000000001C214.8266666666667 110.5066666666667 182.6133333333334 85.3333333333334 149.3333333333333 85.3333333333334z" /> + <glyph glyph-name="surround-sound" + unicode="&#xF5C5;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V320C469.3333333333333 343.4666666666667 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667M165.5466666666667 101.5466666666667L135.4666666666667 71.4666666666667C101.9733333333333 104.5333333333333 85.3333333333333 148.2666666666667 85.3333333333333 192C85.3333333333333 235.7333333333334 101.9733333333333 279.4666666666667 135.2533333333333 312.7466666666667L165.3333333333333 282.6666666666667C140.5866666666667 257.4933333333334 128 224.8533333333333 128 192S140.5866666666667 126.5066666666667 165.5466666666667 101.5466666666666M256 106.6666666666667C208.8533333333333 106.6666666666667 170.6666666666667 144.8533333333334 170.6666666666667 192S208.8533333333333 277.3333333333334 256 277.3333333333334S341.3333333333333 239.1466666666667 341.3333333333333 192S303.1466666666667 106.6666666666667 256 106.6666666666667M376.7466666666667 71.2533333333333L346.6666666666667 101.3333333333334C371.4133333333333 126.5066666666667 384 159.1466666666667 384 192S371.4133333333333 257.4933333333334 346.4533333333333 282.4533333333334L376.5333333333333 312.5333333333334C410.0266666666667 279.4666666666667 426.6666666666667 235.7333333333334 426.6666666666667 192C426.6666666666667 148.2666666666667 410.0266666666667 104.5333333333333 376.7466666666667 71.2533333333333M256 234.6666666666667C232.5333333333334 234.6666666666667 213.3333333333333 215.4666666666667 213.3333333333333 192S232.5333333333334 149.3333333333334 256 149.3333333333334S298.6666666666667 168.5333333333334 298.6666666666667 192S279.4666666666667 234.6666666666667 256 234.6666666666667z" /> + <glyph glyph-name="swap-horizontal" + unicode="&#xF4E1;" + horiz-adv-x="512" d=" M448 256L362.6666666666667 341.3333333333334V277.3333333333334H213.3333333333333V234.6666666666667H362.6666666666667V170.6666666666667M149.3333333333333 213.3333333333334L64 128L149.3333333333333 42.6666666666667V106.6666666666667H298.6666666666667V149.3333333333334H149.3333333333333V213.3333333333334z" /> + <glyph glyph-name="swap-vertical" + unicode="&#xF4E2;" + horiz-adv-x="512" d=" M192 384L106.6666666666667 298.6666666666667H170.6666666666667V149.3333333333334H213.3333333333333V298.6666666666667H277.3333333333333M341.3333333333333 85.3333333333334V234.6666666666667H298.6666666666667V85.3333333333334H234.6666666666667L320 0L405.3333333333333 85.3333333333334H341.3333333333333z" /> + <glyph glyph-name="swim" + unicode="&#xF4E3;" + horiz-adv-x="512" d=" M42.6666666666667 64C90.0266666666667 85.3333333333334 137.3866666666667 106.6666666666667 184.96 106.6666666666667C232.32 106.6666666666667 279.68 64 327.04 64C374.6133333333333 64 421.9733333333334 106.6666666666667 469.3333333333333 106.6666666666667V42.6666666666667C421.9733333333334 42.6666666666667 374.6133333333333 0 327.04 0C279.68 0 232.32 42.6666666666667 184.96 42.6666666666667C137.3866666666667 42.6666666666667 90.0266666666667 21.3333333333334 42.6666666666667 0V64M184.96 170.6666666666667C168.32 170.6666666666667 151.8933333333333 168.1066666666667 135.4666666666667 163.84L240.4266666666667 237.2266666666667L218.24 263.68C215.2533333333333 267.3066666666667 213.3333333333333 272.2133333333334 213.3333333333333 277.3333333333334C213.3333333333333 284.5866666666667 216.96 291.2000000000001 222.72 295.04L344.7466666666667 380.3733333333334L369.28 345.6L266.0266666666667 273.2800000000001L377.6 140.3733333333333C360.7466666666667 133.3333333333334 343.8933333333333 128 327.04 128C279.68 128 232.32 170.6666666666667 184.96 170.6666666666667M384 298.6666666666667C407.4666666666667 298.6666666666667 426.6666666666667 279.4666666666667 426.6666666666667 256S407.4666666666667 213.3333333333334 384 213.3333333333334S341.3333333333333 232.5333333333334 341.3333333333333 256S360.5333333333333 298.6666666666667 384 298.6666666666667z" /> + <glyph glyph-name="switch" + unicode="&#xF4E4;" + horiz-adv-x="512" d=" M277.3333333333333 64H298.6666666666667C310.4 64 320 54.4 320 42.6666666666667H469.3333333333333V0H320C320 -11.7333333333333 310.4 -21.3333333333333 298.6666666666667 -21.3333333333333H213.3333333333333C201.6 -21.3333333333333 192 -11.7333333333333 192 0H42.6666666666667V42.6666666666667H192C192 54.4 201.6 64 213.3333333333333 64H234.6666666666667V106.6666666666667H170.6666666666667C158.9333333333333 106.6666666666667 149.3333333333333 116.2666666666667 149.3333333333333 128V384C149.3333333333333 395.7333333333334 158.9333333333333 405.3333333333333 170.6666666666667 405.3333333333333H341.3333333333333C353.0666666666667 405.3333333333333 362.6666666666667 395.7333333333334 362.6666666666667 384V128C362.6666666666667 116.2666666666667 353.0666666666667 106.6666666666667 341.3333333333333 106.6666666666667H277.3333333333333V64M277.3333333333333 320H298.6666666666667V362.6666666666667H277.3333333333333V320M192 362.6666666666667V320H234.6666666666667V362.6666666666667H192M192 277.3333333333334V234.6666666666667H234.6666666666667V277.3333333333334H192M192 192V149.3333333333334H234.6666666666667V192H192z" /> + <glyph glyph-name="sword" + unicode="&#xF4E5;" + horiz-adv-x="512" d=" M147.6266666666667 341.3333333333334H106.6666666666667L298.6666666666667 149.3333333333334L320 169.3866666666667M425.8133333333334 40.1066666666667L407.8933333333333 22.1866666666667C399.5733333333333 13.8666666666667 386.1333333333334 13.8666666666667 377.8133333333334 22.1866666666667L311.2533333333334 88.7466666666667L254.08 32L224 62.08L254.2933333333333 92.3733333333333L64 282.6666666666667V384H165.3333333333333L355.6266666666667 193.7066666666667L385.9200000000001 224L416.0000000000001 193.92L359.0400000000001 136.96L425.6000000000002 70.4C434.1333333333335 61.8666666666667 434.1333333333335 48.4266666666667 425.8133333333335 40.1066666666667z" /> + <glyph glyph-name="sync" + unicode="&#xF4E6;" + horiz-adv-x="512" d=" M256 64C185.3866666666667 64 128 121.3866666666667 128 192C128 213.3333333333334 133.3333333333333 234.0266666666667 142.9333333333333 251.7333333333334L111.7866666666667 282.88C95.1466666666667 256.64 85.3333333333333 225.4933333333334 85.3333333333333 192C85.3333333333333 97.7066666666667 161.7066666666667 21.3333333333334 256 21.3333333333334V-42.6666666666666L341.3333333333333 42.6666666666667L256 128M256 362.6666666666667V426.6666666666667L170.6666666666667 341.3333333333334L256 256V320C326.6133333333334 320 384 262.6133333333334 384 192C384 170.6666666666667 378.6666666666667 149.9733333333334 369.0666666666667 132.2666666666667L400.2133333333334 101.12C416.8533333333333 127.36 426.6666666666667 158.5066666666667 426.6666666666667 192C426.6666666666667 286.2933333333334 350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="sync-alert" + unicode="&#xF4E7;" + horiz-adv-x="512" d=" M234.6666666666667 170.6666666666667H277.3333333333333V298.6666666666667H234.6666666666667M448 362.6666666666667H320V234.6666666666667L367.7866666666667 282.4533333333334C390.8266666666667 259.2000000000001 405.3333333333333 227.4133333333334 405.3333333333333 192C405.3333333333333 136.3200000000001 369.7066666666666 88.96 320 71.4666666666667V26.8800000000001C393.6 45.8666666666667 448 112.4266666666667 448 192.0000000000001C448 239.1466666666667 428.5866666666667 281.6 397.6533333333333 312.3200000000001M234.6666666666667 85.3333333333334H277.3333333333333V128H234.6666666666667M64 192C64 144.8533333333334 83.4133333333333 102.4 114.3466666666667 71.68L64 21.3333333333334H192V149.3333333333334L144.2133333333333 101.5466666666666C121.1733333333333 124.8 106.6666666666667 156.5866666666667 106.6666666666667 192C106.6666666666667 247.68 142.2933333333333 295.04 192 312.5333333333334V357.12C118.4 338.1333333333334 64 271.5733333333334 64 192z" /> + <glyph glyph-name="sync-off" + unicode="&#xF4E8;" + horiz-adv-x="512" d=" M426.6666666666667 362.6666666666667H298.6666666666667V234.6666666666667L346.4533333333334 282.4533333333334C369.4933333333334 259.2000000000001 384 227.4133333333334 384 192C384 170.6666666666667 378.6666666666667 150.6133333333334 369.4933333333334 132.9066666666667L400.64 101.76C417.0666666666667 128 426.6666666666667 158.72 426.6666666666667 192C426.6666666666667 239.1466666666667 407.2533333333334 281.6 376.32 312.32L426.6666666666667 362.6666666666667M61.0133333333333 332.5866666666667L111.36 282.24C94.9333333333333 256 85.3333333333333 225.2800000000001 85.3333333333333 192C85.3333333333333 144.8533333333334 104.7466666666667 102.4 135.68 71.68L85.3333333333333 21.3333333333334H213.3333333333333V149.3333333333334L165.5466666666667 101.5466666666666C142.5066666666667 124.8 128 156.5866666666667 128 192C128 213.3333333333334 133.3333333333333 233.3866666666667 142.5066666666667 251.0933333333334L314.88 78.72C309.3333333333333 75.9466666666667 304.2133333333333 73.3866666666667 298.6666666666667 71.4666666666666V26.88C315.52 31.36 331.52 38.4 346.0266666666667 47.36L396.3733333333333 -2.9866666666667L423.4666666666666 24.1066666666667L88.32 359.68L61.0133333333333 332.5866666666667M213.3333333333333 312.5333333333334V357.12C196.2666666666667 352.64 180.2666666666667 345.6 165.76 336.64L196.9066666666667 305.4933333333334C202.6666666666667 308.0533333333334 207.5733333333333 310.6133333333334 213.3333333333333 312.5333333333334z" /> + <glyph glyph-name="tab" + unicode="&#xF4E9;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H106.6666666666667V341.3333333333334H256V256H405.3333333333333M405.3333333333333 384H106.6666666666667C83.2 384 64 364.8 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + <glyph glyph-name="tab-unselected" + unicode="&#xF4EA;" + horiz-adv-x="512" d=" M320 0H362.6666666666667V42.6666666666667H320M234.6666666666667 0H277.3333333333333V42.6666666666667H234.6666666666667M405.3333333333333 170.6666666666667H448V213.3333333333334H405.3333333333333M405.3333333333333 0C428.8 0 448 19.2 448 42.6666666666667H405.3333333333333M149.3333333333333 341.3333333333334H192V384H149.3333333333333M405.3333333333333 85.3333333333334H448V128H405.3333333333333M405.3333333333333 384H234.6666666666667V256H448V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384M106.6666666666667 0V42.6666666666667H64C64 19.2 83.2 0 106.6666666666667 0M64 85.3333333333334H106.6666666666667V128H64M149.3333333333333 0H192V42.6666666666667H149.3333333333333M64 341.3333333333334H106.6666666666667V384C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334M64 170.6666666666667H106.6666666666667V213.3333333333334H64M64 256H106.6666666666667V298.6666666666667H64V256z" /> + <glyph glyph-name="table" + unicode="&#xF4EB;" + horiz-adv-x="512" d=" M106.6666666666667 362.6666666666667H405.3333333333333C428.8 362.6666666666667 448 343.4666666666667 448 320V64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334H106.6666666666667C83.2 21.3333333333334 64 40.5333333333333 64 64V320C64 343.4666666666667 83.2 362.6666666666667 106.6666666666667 362.6666666666667M106.6666666666667 277.3333333333334V192H234.6666666666667V277.3333333333334H106.6666666666667M277.3333333333333 277.3333333333334V192H405.3333333333333V277.3333333333334H277.3333333333333M106.6666666666667 149.3333333333334V64H234.6666666666667V149.3333333333334H106.6666666666667M277.3333333333333 149.3333333333334V64H405.3333333333333V149.3333333333334H277.3333333333333z" /> + <glyph glyph-name="table-column-plus-after" + unicode="&#xF4EC;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333C258.1333333333334 405.3333333333333 277.3333333333333 386.1333333333334 277.3333333333333 362.6666666666667V21.3333333333334C277.3333333333333 -2.1333333333333 258.1333333333334 -21.3333333333333 234.6666666666667 -21.3333333333333H42.6666666666667V405.3333333333333H234.6666666666667M85.3333333333333 234.6666666666667V149.3333333333334H234.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 106.6666666666667V21.3333333333334H234.6666666666667V106.6666666666667H85.3333333333333M85.3333333333333 362.6666666666667V277.3333333333334H234.6666666666667V362.6666666666667H85.3333333333333M320 213.3333333333334H384V277.3333333333334H426.6666666666667V213.3333333333334H490.6666666666666V170.6666666666667H426.6666666666667V106.6666666666667H384V170.6666666666667H320V213.3333333333334z" /> + <glyph glyph-name="table-column-plus-before" + unicode="&#xF4ED;" + horiz-adv-x="512" d=" M277.3333333333333 405.3333333333333C253.8666666666667 405.3333333333333 234.6666666666667 386.1333333333334 234.6666666666667 362.6666666666667V21.3333333333334C234.6666666666667 -2.1333333333333 253.8666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333H469.3333333333333V405.3333333333333H277.3333333333333M426.6666666666667 234.6666666666667V149.3333333333334H277.3333333333333V234.6666666666667H426.6666666666667M426.6666666666667 106.6666666666667V21.3333333333334H277.3333333333333V106.6666666666667H426.6666666666667M426.6666666666667 362.6666666666667V277.3333333333334H277.3333333333333V362.6666666666667H426.6666666666667M192 213.3333333333334H128V277.3333333333334H85.3333333333333V213.3333333333334H21.3333333333333V170.6666666666667H85.3333333333333V106.6666666666667H128V170.6666666666667H192V213.3333333333334z" /> + <glyph glyph-name="table-column-remove" + unicode="&#xF4EE;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H234.6666666666667C258.1333333333334 405.3333333333333 277.3333333333333 386.1333333333334 277.3333333333333 362.6666666666667V21.3333333333334C277.3333333333333 -2.1333333333333 258.1333333333334 -21.3333333333333 234.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 234.6666666666667V149.3333333333334H234.6666666666667V234.6666666666667H85.3333333333333M85.3333333333333 106.6666666666667V21.3333333333334H234.6666666666667V106.6666666666667H85.3333333333333M85.3333333333333 362.6666666666667V277.3333333333334H234.6666666666667V362.6666666666667H85.3333333333333M375.2533333333334 192L320 247.2533333333334L350.08 277.3333333333334L405.3333333333333 222.08L460.5866666666666 277.3333333333334L490.6666666666666 247.2533333333334L435.4133333333333 192L490.6666666666666 136.7466666666667L460.5866666666666 106.6666666666667L405.3333333333333 161.92L350.08 106.6666666666667L320 136.7466666666667L375.2533333333334 192z" /> + <glyph glyph-name="table-column-width" + unicode="&#xF4EF;" + horiz-adv-x="512" d=" M106.6666666666667 277.3333333333334H405.3333333333333C428.8 277.3333333333334 448 258.1333333333334 448 234.6666666666667V21.3333333333334C448 -2.1333333333333 428.8 -21.3333333333333 405.3333333333333 -21.3333333333333H106.6666666666667C83.2 -21.3333333333333 64 -2.1333333333333 64 21.3333333333334V234.6666666666667C64 258.1333333333334 83.2 277.3333333333334 106.6666666666667 277.3333333333334M106.6666666666667 192V128H234.6666666666667V192H106.6666666666667M277.3333333333333 192V128H405.3333333333333V192H277.3333333333333M106.6666666666667 85.3333333333334V21.3333333333334H234.6666666666667V85.3333333333334H106.6666666666667M277.3333333333333 85.3333333333334V21.3333333333334H405.3333333333333V85.3333333333334H277.3333333333333M234.6666666666667 405.3333333333333H448V320H405.3333333333333V362.6666666666667H277.3333333333333V320H234.6666666666667V405.3333333333333z" /> + <glyph glyph-name="table-edit" + unicode="&#xF4F0;" + horiz-adv-x="512" d=" M462.9333333333333 163.2000000000001L441.6 141.8666666666667L397.8666666666666 185.6L419.2 206.9333333333333C423.68 211.6266666666667 431.1466666666666 211.6266666666667 435.6266666666666 206.9333333333333L462.9333333333333 179.6266666666667C467.6266666666666 175.1466666666667 467.6266666666666 167.68 462.9333333333333 163.2000000000001M256 43.9466666666667L385.4933333333334 173.2266666666666L429.2266666666667 129.4933333333333L299.9466666666667 0H256V43.9466666666667M85.3333333333333 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V273.7066666666667L344.9600000000001 192H256V103.04L216.96 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 320V234.6666666666667H213.3333333333333V320H85.3333333333333M256 320V234.6666666666667H384V320H256M85.3333333333333 192V106.6666666666667H213.3333333333333V192H85.3333333333333z" /> + <glyph glyph-name="table-large" + unicode="&#xF4F1;" + horiz-adv-x="512" d=" M85.3333333333333 384H426.6666666666667C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H85.3333333333333C61.8666666666667 -21.3333333333333 42.6666666666667 -2.1333333333333 42.6666666666667 21.3333333333334V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384M85.3333333333333 298.6666666666667V234.6666666666667H170.6666666666667V298.6666666666667H85.3333333333333M213.3333333333333 298.6666666666667V234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333M426.6666666666667 234.6666666666667V298.6666666666667H341.3333333333333V234.6666666666667H426.6666666666667M85.3333333333333 192V128H170.6666666666667V192H85.3333333333333M85.3333333333333 21.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V21.3333333333334M213.3333333333333 192V128H298.6666666666667V192H213.3333333333333M213.3333333333333 21.3333333333334H298.6666666666667V85.3333333333334H213.3333333333333V21.3333333333334M426.6666666666667 21.3333333333334V85.3333333333334H341.3333333333333V21.3333333333334H426.6666666666667M426.6666666666667 192H341.3333333333333V128H426.6666666666667V192z" /> + <glyph glyph-name="table-row-height" + unicode="&#xF4F2;" + horiz-adv-x="512" d=" M64 341.3333333333334H320C343.4666666666667 341.3333333333334 362.6666666666667 322.1333333333334 362.6666666666667 298.6666666666667V85.3333333333334C362.6666666666667 61.8666666666667 343.4666666666667 42.6666666666667 320 42.6666666666667H64C40.5333333333333 42.6666666666667 21.3333333333333 61.8666666666667 21.3333333333333 85.3333333333334V298.6666666666667C21.3333333333333 322.1333333333334 40.5333333333333 341.3333333333334 64 341.3333333333334M64 256V192H170.6666666666667V256H64M213.3333333333333 256V192H320V256H213.3333333333333M64 149.3333333333334V85.3333333333334H170.6666666666667V149.3333333333334H64M213.3333333333333 149.3333333333334V85.3333333333334H320V149.3333333333334H213.3333333333333M490.6666666666666 149.3333333333334V298.6666666666667H405.3333333333333V256H448V192H405.3333333333333V149.3333333333334H490.6666666666666z" /> + <glyph glyph-name="table-row-plus-after" + unicode="&#xF4F3;" + horiz-adv-x="512" d=" M469.3333333333333 234.6666666666667C469.3333333333333 211.2 450.1333333333334 192 426.6666666666667 192H85.3333333333333C61.8666666666667 192 42.6666666666667 211.2 42.6666666666667 234.6666666666667V384H85.3333333333333V341.3333333333334H170.6666666666667V384H213.3333333333333V341.3333333333334H298.6666666666667V384H341.3333333333333V341.3333333333334H426.6666666666667V384H469.3333333333333V234.6666666666667M85.3333333333333 234.6666666666667H170.6666666666667V298.6666666666667H85.3333333333333V234.6666666666667M213.3333333333333 234.6666666666667H298.6666666666667V298.6666666666667H213.3333333333333V234.6666666666667M426.6666666666667 234.6666666666667V298.6666666666667H341.3333333333333V234.6666666666667H426.6666666666667M234.6666666666667 149.3333333333334H277.3333333333333V85.3333333333334H341.3333333333333V42.6666666666667H277.3333333333333V-21.3333333333333H234.6666666666667V42.6666666666667H170.6666666666667V85.3333333333334H234.6666666666667V149.3333333333334z" /> + <glyph glyph-name="table-row-plus-before" + unicode="&#xF4F4;" + horiz-adv-x="512" d=" M469.3333333333333 149.3333333333334C469.3333333333333 172.8 450.1333333333334 192 426.6666666666667 192H85.3333333333333C61.8666666666667 192 42.6666666666667 172.8 42.6666666666667 149.3333333333334V0H85.3333333333333V42.6666666666667H170.6666666666667V0H213.3333333333333V42.6666666666667H298.6666666666667V0H341.3333333333333V42.6666666666667H426.6666666666667V0H469.3333333333333V149.3333333333334M85.3333333333333 149.3333333333334H170.6666666666667V85.3333333333334H85.3333333333333V149.3333333333334M213.3333333333333 149.3333333333334H298.6666666666667V85.3333333333334H213.3333333333333V149.3333333333334M426.6666666666667 149.3333333333334V85.3333333333334H341.3333333333333V149.3333333333334H426.6666666666667M234.6666666666667 234.6666666666667H277.3333333333333V298.6666666666667H341.3333333333333V341.3333333333334H277.3333333333333V405.3333333333333H234.6666666666667V341.3333333333334H170.6666666666667V298.6666666666667H234.6666666666667V234.6666666666667z" /> + <glyph glyph-name="table-row-remove" + unicode="&#xF4F5;" + horiz-adv-x="512" d=" M200.7466666666667 170.6666666666667L256 115.4133333333334L311.2533333333334 170.6666666666667L341.3333333333333 140.5866666666667L286.08 85.3333333333334L341.3333333333333 30.08L311.2533333333334 0L256 55.2533333333333L200.7466666666667 0L170.6666666666667 30.08L225.92 85.3333333333334L170.6666666666667 140.5866666666667L200.7466666666667 170.6666666666667M469.3333333333333 256C469.3333333333333 232.5333333333334 450.1333333333334 213.3333333333334 426.6666666666667 213.3333333333334H85.3333333333333C61.8666666666667 213.3333333333334 42.6666666666667 232.5333333333334 42.6666666666667 256V320C42.6666666666667 343.4666666666667 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V256M85.3333333333333 256H170.6666666666667V320H85.3333333333333V256M213.3333333333333 256H298.6666666666667V320H213.3333333333333V256M341.3333333333333 256H426.6666666666667V320H341.3333333333333V256z" /> + <glyph glyph-name="tablet" + unicode="&#xF4F6;" + horiz-adv-x="512" d=" M405.3333333333333 64H106.6666666666667V320H405.3333333333333M448 362.6666666666667H64C40.32 362.6666666666667 21.3333333333333 343.68 21.3333333333333 320V64C21.3333333333333 40.5333333333333 40.5333333333333 21.3333333333334 64 21.3333333333334H448C471.4666666666667 21.3333333333334 490.6666666666666 40.5333333333333 490.6666666666666 64V320C490.6666666666666 343.68 471.4666666666667 362.6666666666667 448 362.6666666666667z" /> + <glyph glyph-name="tablet-android" + unicode="&#xF4F7;" + horiz-adv-x="512" d=" M410.6666666666667 42.6666666666667H101.3333333333333V384H410.6666666666667M298.6666666666667 -21.3333333333333H213.3333333333333V0H298.6666666666667M384 448H128C92.5866666666667 448 64 419.4133333333334 64 384V0C64 -35.4133333333333 92.5866666666667 -64 128 -64H384C419.4133333333333 -64 448 -35.4133333333333 448 0V384C448 419.4133333333334 419.4133333333333 448 384 448z" /> + <glyph glyph-name="tablet-ipad" + unicode="&#xF4F8;" + horiz-adv-x="512" d=" M405.3333333333333 42.6666666666667H85.3333333333333V384H405.3333333333333M245.3333333333333 -42.6666666666666C227.6266666666667 -42.6666666666666 213.3333333333333 -28.3733333333333 213.3333333333333 -10.6666666666666S227.6266666666667 21.3333333333334 245.3333333333333 21.3333333333334S277.3333333333333 7.04 277.3333333333333 -10.6666666666666S263.04 -42.6666666666666 245.3333333333333 -42.6666666666666M394.6666666666667 448H96C66.56 448 42.6666666666667 424.1066666666667 42.6666666666667 394.6666666666667V-10.6666666666666C42.6666666666667 -40.1066666666666 66.56 -64 96 -64H394.6666666666667C424.1066666666667 -64 448 -40.1066666666666 448 -10.6666666666666V394.6666666666667C448 424.1066666666667 424.1066666666667 448 394.6666666666667 448z" /> + <glyph glyph-name="tag" + unicode="&#xF4F9;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C99.6266666666667 298.6666666666667 85.3333333333333 312.9600000000001 85.3333333333333 330.6666666666667S99.6266666666667 362.6666666666667 117.3333333333333 362.6666666666667S149.3333333333333 348.3733333333334 149.3333333333333 330.6666666666667S135.04 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96L264.7466666666667 392.96C257.0666666666667 400.64 246.4 405.3333333333333 234.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V213.3333333333334C42.6666666666667 201.6 47.36 190.9333333333333 55.2533333333333 183.2533333333333L247.04 -8.7466666666667C254.9333333333333 -16.4266666666666 265.6 -21.3333333333333 277.3333333333333 -21.3333333333333C289.0666666666667 -21.3333333333333 299.7333333333334 -16.4266666666666 307.4133333333333 -8.7466666666667L456.7466666666667 140.5866666666667C464.64 148.2666666666667 469.3333333333333 158.9333333333333 469.3333333333333 170.6666666666667C469.3333333333333 182.6133333333334 464.4266666666666 193.28 456.7466666666667 200.96z" /> + <glyph glyph-name="tag-faces" + unicode="&#xF4FA;" + horiz-adv-x="512" d=" M320 64C249.1733333333333 64 192 121.3866666666667 192 192C192 262.8266666666667 249.1733333333333 320 320 320C390.6133333333333 320 448 262.6133333333334 448 192S390.6133333333333 64 320 64M85.3333333333333 170.6666666666667C73.6 170.6666666666667 64 180.2666666666667 64 192S73.6 213.3333333333334 85.3333333333333 213.3333333333334S106.6666666666667 203.7333333333334 106.6666666666667 192S97.0666666666667 170.6666666666667 85.3333333333333 170.6666666666667M469.3333333333333 384H162.7733333333333C148.6933333333333 384 136.1066666666667 377.1733333333334 128 366.7200000000001L0 192L128 17.4933333333333C136.1066666666667 6.8266666666667 148.6933333333333 0 162.7733333333333 0H469.3333333333333C492.8 0 512 19.2 512 42.6666666666667V341.3333333333334C512 365.0133333333333 492.8 384 469.3333333333333 384M277.3333333333333 213.3333333333334C289.0666666666667 213.3333333333334 298.6666666666667 222.9333333333333 298.6666666666667 234.6666666666667S289.0666666666667 256 277.3333333333333 256S256 246.4000000000001 256 234.6666666666667S265.6 213.3333333333334 277.3333333333333 213.3333333333334M320 106.6666666666667C359.68 106.6666666666667 391.4666666666667 133.9733333333334 401.0666666666667 170.6666666666667H238.9333333333334C248.5333333333334 133.9733333333334 280.32 106.6666666666667 320 106.6666666666667M362.6666666666667 213.3333333333334C374.4 213.3333333333334 384 222.9333333333333 384 234.6666666666667S374.4 256 362.6666666666667 256S341.3333333333333 246.4000000000001 341.3333333333333 234.6666666666667S350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334z" /> + <glyph glyph-name="tag-multiple" + unicode="&#xF4FB;" + horiz-adv-x="512" d=" M117.3333333333333 256C135.04 256 149.3333333333333 270.2933333333334 149.3333333333333 288S135.04 320 117.3333333333333 320S85.3333333333333 305.7066666666667 85.3333333333333 288S99.6266666666667 256 117.3333333333333 256M371.4133333333333 200.96C379.0933333333333 193.28 384 182.6133333333334 384 170.6666666666667C384 158.9333333333333 379.3066666666667 148.2666666666667 371.4133333333333 140.5866666666667L264.7466666666667 33.92C257.0666666666667 26.24 246.4 21.3333333333334 234.6666666666667 21.3333333333334C222.9333333333333 21.3333333333334 212.2666666666667 26.0266666666666 204.3733333333333 33.92L55.2533333333333 183.04C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V320C42.6666666666667 343.68 61.6533333333333 362.6666666666667 85.3333333333333 362.6666666666667H192C203.7333333333334 362.6666666666667 214.4 357.9733333333334 222.08 350.2933333333334L371.4133333333333 200.96M288.8533333333333 326.1866666666667L310.1866666666666 347.52L456.7466666666667 200.96C464.64 193.28 469.3333333333333 182.4 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.96 140.5866666666667L342.1866666666667 25.8133333333334L320.8533333333334 47.1466666666667L442.6666666666667 170.6666666666667L288.8533333333333 326.1866666666667z" /> + <glyph glyph-name="tag-outline" + unicode="&#xF4FC;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C135.04 298.6666666666667 149.3333333333333 312.9600000000001 149.3333333333333 330.6666666666667S135.04 362.6666666666667 117.3333333333333 362.6666666666667S85.3333333333333 348.3733333333334 85.3333333333333 330.6666666666667S99.6266666666667 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96C464.4266666666666 193.28 469.3333333333333 182.6133333333334 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.7466666666667 140.5866666666667L307.4133333333333 -8.7466666666667C299.7333333333334 -16.4266666666666 289.0666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333C265.6 -21.3333333333333 254.9333333333333 -16.4266666666666 247.04 -8.7466666666667L55.2533333333333 183.2533333333333C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.6533333333333 405.3333333333333 85.3333333333333 405.3333333333333H234.6666666666667C246.4 405.3333333333333 257.0666666666667 400.64 264.7466666666667 392.96L456.7466666666667 200.96M277.3333333333333 21.3333333333334L426.6666666666667 170.6666666666667L245.3333333333333 352L96 202.6666666666667L277.3333333333333 21.3333333333334z" /> + <glyph glyph-name="tag-text-outline" + unicode="&#xF4FD;" + horiz-adv-x="512" d=" M117.3333333333333 298.6666666666667C135.04 298.6666666666667 149.3333333333333 312.9600000000001 149.3333333333333 330.6666666666667S135.04 362.6666666666667 117.3333333333333 362.6666666666667S85.3333333333333 348.3733333333334 85.3333333333333 330.6666666666667S99.6266666666667 298.6666666666667 117.3333333333333 298.6666666666667M456.7466666666667 200.96C464.4266666666666 193.28 469.3333333333333 182.6133333333334 469.3333333333333 170.6666666666667C469.3333333333333 158.9333333333333 464.64 148.2666666666667 456.7466666666667 140.5866666666667L307.4133333333333 -8.7466666666667C299.7333333333334 -16.4266666666666 289.0666666666667 -21.3333333333333 277.3333333333333 -21.3333333333333C265.6 -21.3333333333333 254.9333333333333 -16.4266666666666 247.04 -8.7466666666667L55.2533333333333 183.2533333333333C47.36 190.9333333333333 42.6666666666667 201.6 42.6666666666667 213.3333333333334V362.6666666666667C42.6666666666667 386.3466666666667 61.6533333333333 405.3333333333333 85.3333333333333 405.3333333333333H234.6666666666667C246.4 405.3333333333333 257.0666666666667 400.64 264.7466666666667 392.96L456.7466666666667 200.96M277.3333333333333 21.3333333333334L426.6666666666667 170.6666666666667L245.3333333333333 352L96 202.6666666666667L277.3333333333333 21.3333333333334M215.2533333333333 257.92L245.3333333333333 288L362.6666666666667 170.6666666666667L332.5866666666667 140.5866666666667L215.2533333333333 257.92M161.92 204.5866666666667L192 234.6666666666667L277.3333333333333 149.3333333333334L247.2533333333334 119.2533333333333L161.92 204.5866666666667z" /> + <glyph glyph-name="target" + unicode="&#xF4FE;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333V361.1733333333334C157.44 351.36 96.64 290.56 86.8266666666667 213.3333333333334H42.6666666666667V170.6666666666667H86.8266666666667C96.64 93.44 157.44 32.64 234.6666666666667 22.8266666666667V-21.3333333333333H277.3333333333333V22.8266666666667C354.56 32.64 415.36 93.44 425.1733333333333 170.6666666666667H469.3333333333333V213.3333333333334H425.1733333333333C415.36 290.56 354.56 351.36 277.3333333333333 361.1733333333334V405.3333333333333M234.6666666666667 318.2933333333334V277.3333333333334H277.3333333333333V318.0800000000001C330.6666666666667 309.3333333333334 373.3333333333333 266.6666666666667 382.2933333333334 213.3333333333334H341.3333333333333V170.6666666666667H382.08C373.3333333333333 117.3333333333334 330.6666666666667 74.6666666666667 277.3333333333333 65.7066666666667V106.6666666666667H234.6666666666667V65.92C181.3333333333333 74.6666666666667 138.6666666666667 117.3333333333334 129.7066666666667 170.6666666666667H170.6666666666667V213.3333333333334H129.92C138.6666666666667 266.6666666666667 181.3333333333333 309.3333333333334 234.6666666666667 318.2933333333334M256 213.3333333333334C244.2666666666667 213.3333333333334 234.6666666666667 203.7333333333334 234.6666666666667 192S244.2666666666667 170.6666666666667 256 170.6666666666667S277.3333333333333 180.2666666666667 277.3333333333333 192S267.7333333333334 213.3333333333334 256 213.3333333333334z" /> + <glyph glyph-name="taxi" + unicode="&#xF4FF;" + horiz-adv-x="512" d=" M106.6666666666667 213.3333333333334L138.6666666666667 309.3333333333334H373.3333333333333L405.3333333333333 213.3333333333334M373.3333333333333 106.6666666666667C355.6266666666667 106.6666666666667 341.3333333333333 120.96 341.3333333333333 138.6666666666667S355.6266666666667 170.6666666666667 373.3333333333333 170.6666666666667S405.3333333333333 156.3733333333333 405.3333333333333 138.6666666666667S391.04 106.6666666666667 373.3333333333333 106.6666666666667M138.6666666666667 106.6666666666667C120.96 106.6666666666667 106.6666666666667 120.96 106.6666666666667 138.6666666666667S120.96 170.6666666666667 138.6666666666667 170.6666666666667S170.6666666666667 156.3733333333333 170.6666666666667 138.6666666666667S156.3733333333333 106.6666666666667 138.6666666666667 106.6666666666667M403.6266666666667 320C399.36 332.3733333333334 387.4133333333333 341.3333333333334 373.3333333333333 341.3333333333334H320V384H192V341.3333333333334H138.6666666666667C124.5866666666667 341.3333333333334 112.64 332.3733333333334 108.3733333333333 320L64 192V21.3333333333334C64 9.6 73.6 0 85.3333333333333 0H106.6666666666667C118.4 0 128 9.6 128 21.3333333333334V42.6666666666667H384V21.3333333333334C384 9.6 393.6 0 405.3333333333333 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V192L403.6266666666667 320z" /> + <glyph glyph-name="teamviewer" + unicode="&#xF500;" + horiz-adv-x="512" d=" M405.3333333333333 384C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 18.9866666666667 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333M256 341.3333333333334C173.44 341.3333333333334 106.6666666666667 274.5600000000001 106.6666666666667 192S173.44 42.6666666666667 256 42.6666666666667S405.3333333333333 109.44 405.3333333333333 192S338.56 341.3333333333334 256 341.3333333333334M149.3333333333333 192L213.3333333333333 256V213.3333333333334H298.6666666666667V256L362.6666666666667 192L298.6666666666667 128V170.6666666666667H213.3333333333333V128L149.3333333333333 192z" /> + <glyph glyph-name="telegram" + unicode="&#xF501;" + horiz-adv-x="512" d=" M208.64 50.1333333333334L214.6133333333333 140.3733333333334L378.4533333333333 288.0000000000001C385.7066666666666 294.6133333333334 376.9599999999999 297.8133333333334 367.36 292.0533333333334L165.12 164.2666666666667L77.6533333333333 192C58.88 197.3333333333334 58.6666666666667 210.3466666666667 81.92 219.7333333333334L422.6133333333334 351.1466666666667C438.1866666666667 358.1866666666667 453.12 347.3066666666668 447.1466666666667 323.4133333333334L389.12 50.1333333333334C385.0666666666667 30.72 373.3333333333334 26.0266666666668 357.12 34.9866666666667L268.8 100.2666666666667L226.3466666666667 59.0933333333334C221.44 54.1866666666667 217.3866666666667 50.1333333333333 208.64 50.1333333333333z" /> + <glyph glyph-name="television" + unicode="&#xF502;" + horiz-adv-x="512" d=" M426.6666666666667 85.3333333333334H85.3333333333333V341.3333333333334H426.6666666666667M426.6666666666667 384H85.3333333333333C61.6533333333333 384 42.6666666666667 365.0133333333333 42.6666666666667 341.3333333333334V85.3333333333334C42.6666666666667 61.8666666666667 61.8666666666667 42.6666666666667 85.3333333333333 42.6666666666667H170.6666666666667V0H341.3333333333333V42.6666666666667H426.6666666666667C450.1333333333334 42.6666666666667 469.3333333333333 61.8666666666667 469.3333333333333 85.3333333333334V341.3333333333334C469.3333333333333 365.0133333333333 450.1333333333334 384 426.6666666666667 384z" /> + <glyph glyph-name="television-guide" + unicode="&#xF503;" + horiz-adv-x="512" d=" M448 85.3333333333334V341.3333333333334H64V85.3333333333334H448M448 384C471.4666666666667 384 490.6666666666666 364.8 490.6666666666666 341.3333333333334V85.3333333333334C490.6666666666666 61.8666666666667 471.4666666666667 42.6666666666667 448 42.6666666666667H341.3333333333333V0H170.6666666666667V42.6666666666667H64C40.5333333333333 42.6666666666667 21.3333333333333 61.8666666666667 21.3333333333333 85.3333333333334V341.3333333333334C21.3333333333333 364.8 40.5333333333333 384 64 384H448M106.6666666666667 298.6666666666667H234.6666666666667V213.3333333333334H106.6666666666667V298.6666666666667M106.6666666666667 170.6666666666667H234.6666666666667V128H106.6666666666667V170.6666666666667M277.3333333333333 298.6666666666667H405.3333333333333V256H277.3333333333333V298.6666666666667M277.3333333333333 213.3333333333334H405.3333333333333V128H277.3333333333333V213.3333333333334z" /> + <glyph glyph-name="temperature-celsius" + unicode="&#xF504;" + horiz-adv-x="512" d=" M352 341.3333333333334C385.0666666666667 341.3333333333334 416 331.3066666666667 441.3866666666667 314.0266666666667L416.64 252.3733333333334C399.5733333333333 267.9466666666667 376.9600000000001 277.3333333333334 352 277.3333333333334C298.6666666666667 277.3333333333334 256 234.6666666666667 256 181.3333333333334S298.6666666666667 85.3333333333334 352 85.3333333333334C373.9733333333334 85.3333333333334 394.0266666666667 92.5866666666667 410.24 104.96L434.56 44.16C410.4533333333334 29.6533333333334 382.2933333333334 21.3333333333334 352 21.3333333333334C263.68 21.3333333333334 192 93.0133333333333 192 181.3333333333334C192 269.6533333333334 263.68 341.3333333333334 352 341.3333333333334M128 384C163.4133333333333 384 192 355.4133333333334 192 320S163.4133333333333 256 128 256S64 284.5866666666667 64 320S92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="temperature-fahrenheit" + unicode="&#xF505;" + horiz-adv-x="512" d=" M234.6666666666667 21.3333333333334V341.3333333333334H426.6666666666667V277.3333333333334H298.6666666666667V213.3333333333334H405.3333333333333V149.3333333333334H298.6666666666667V21.3333333333334H234.6666666666667M128 384C163.4133333333333 384 192 355.4133333333334 192 320S163.4133333333333 256 128 256S64 284.5866666666667 64 320S92.5866666666667 384 128 384M128 341.3333333333334C116.2666666666667 341.3333333333334 106.6666666666667 331.7333333333334 106.6666666666667 320S116.2666666666667 298.6666666666667 128 298.6666666666667S149.3333333333333 308.2666666666667 149.3333333333333 320S139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="temperature-kelvin" + unicode="&#xF506;" + horiz-adv-x="512" d=" M149.3333333333333 341.3333333333334H213.3333333333333V213.3333333333334L320 341.3333333333334H405.3333333333333L296.1066666666667 218.0266666666667L405.3333333333333 21.3333333333334H328.1066666666667L250.88 167.04L213.3333333333333 124.8V21.3333333333334H149.3333333333333V341.3333333333334z" /> + <glyph glyph-name="tennis" + unicode="&#xF507;" + horiz-adv-x="512" d=" M256 405.3333333333333C309.3333333333333 405.3333333333333 357.3333333333333 386.1333333333334 394.6666666666667 354.1333333333334C349.0133333333333 315.0933333333334 320 256.8533333333334 320 192S349.0133333333333 68.9066666666667 394.6666666666667 29.8666666666667C357.3333333333333 -2.1333333333333 309.3333333333333 -21.3333333333333 256 -21.3333333333333S154.6666666666667 -2.1333333333333 117.3333333333333 29.8666666666667C162.9866666666667 68.9066666666667 192 127.1466666666667 192 192S162.9866666666667 315.0933333333334 117.3333333333333 354.1333333333334C154.6666666666667 386.1333333333334 202.6666666666667 405.3333333333333 256 405.3333333333333M469.3333333333333 192C469.3333333333333 142.5066666666667 452.48 97.0666666666667 424.1066666666667 60.8000000000001C386.56 92.16 362.6666666666667 139.3066666666667 362.6666666666667 192S386.56 291.8400000000001 424.1066666666667 323.2000000000001C452.48 286.9333333333334 469.3333333333333 241.4933333333334 469.3333333333333 192M42.6666666666667 192C42.6666666666667 241.4933333333334 59.52 286.9333333333334 87.8933333333333 323.2000000000001C125.44 291.8400000000001 149.3333333333333 244.6933333333334 149.3333333333333 192S125.44 92.16 87.8933333333333 60.8000000000001C59.52 97.0666666666667 42.6666666666667 142.5066666666667 42.6666666666667 192z" /> + <glyph glyph-name="tent" + unicode="&#xF508;" + horiz-adv-x="512" d=" M85.3333333333333 320C85.3333333333333 294.6133333333334 93.6533333333333 271.5733333333334 106.6666666666667 256C71.2533333333333 256 42.6666666666667 284.5866666666667 42.6666666666667 320S71.2533333333333 384 106.6666666666667 384C93.6533333333333 368.4266666666667 85.3333333333333 345.3866666666667 85.3333333333333 320M42.6666666666667 0V42.6666666666667H101.5466666666667L256 346.0266666666667L410.4533333333333 42.6666666666667H469.3333333333333V0H42.6666666666667M256 251.9466666666667L149.3333333333333 42.6666666666667H362.6666666666667L256 251.9466666666667z" /> + <glyph glyph-name="terrain" + unicode="&#xF509;" + horiz-adv-x="512" d=" M298.6666666666667 320L218.6666666666667 213.3333333333334L279.4666666666667 132.2666666666667L245.3333333333333 106.6666666666667C209.28 154.6666666666667 149.3333333333333 234.6666666666667 149.3333333333333 234.6666666666667L21.3333333333333 64H490.6666666666666L298.6666666666667 320z" /> + <glyph glyph-name="test-tube" + unicode="&#xF668;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V362.6666666666667H170.6666666666667V64C170.6666666666667 16.8533333333334 208.8533333333333 -21.3333333333333 256 -21.3333333333333S341.3333333333333 16.8533333333334 341.3333333333333 64V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333M234.6666666666667 106.6666666666667C221.8666666666667 106.6666666666667 213.3333333333333 115.2000000000001 213.3333333333333 128S221.8666666666667 149.3333333333334 234.6666666666667 149.3333333333334S256 140.8 256 128S247.4666666666667 106.6666666666667 234.6666666666667 106.6666666666667M277.3333333333333 192C264.5333333333333 192 256 200.5333333333334 256 213.3333333333334S264.5333333333333 234.6666666666667 277.3333333333333 234.6666666666667S298.6666666666667 226.1333333333334 298.6666666666667 213.3333333333334S290.1333333333334 192 277.3333333333333 192M298.6666666666667 298.6666666666667H213.3333333333333V362.6666666666667H298.6666666666667V298.6666666666667z" /> + <glyph glyph-name="text-shadow" + unicode="&#xF669;" + horiz-adv-x="512" d=" M64 384H341.3333333333333V320H234.6666666666667V64H170.6666666666667V320H64V384M256 298.6666666666667H298.6666666666667V256H256V298.6666666666667M320 298.6666666666667H362.6666666666667V256H320V298.6666666666667M384 298.6666666666667H426.6666666666667V256H384V298.6666666666667M256 234.6666666666667H298.6666666666667V192H256V234.6666666666667M256 170.6666666666667H298.6666666666667V128H256V170.6666666666667M256 106.6666666666667H298.6666666666667V64H256V106.6666666666667M256 42.6666666666667H298.6666666666667V0H256V42.6666666666667z" /> + <glyph glyph-name="text-to-speech" + unicode="&#xF50A;" + horiz-adv-x="512" d=" M170.6666666666667 298.6666666666667C194.1333333333333 298.6666666666667 213.3333333333333 279.4666666666667 213.3333333333333 256V149.3333333333334C213.3333333333333 125.8666666666667 194.1333333333333 106.6666666666667 170.6666666666667 106.6666666666667S128 125.8666666666667 128 149.3333333333334V256C128 279.4666666666667 147.2 298.6666666666667 170.6666666666667 298.6666666666667M298.6666666666667 149.3333333333334C298.6666666666667 85.9733333333334 252.5866666666667 33.28 192 23.04V-21.3333333333333H149.3333333333333V23.04C88.7466666666667 33.28 42.6666666666667 85.9733333333333 42.6666666666667 149.3333333333333H85.3333333333333C85.3333333333333 102.1866666666667 123.52 64 170.6666666666667 64S256 102.1866666666667 256 149.3333333333334H298.6666666666667M456.7466666666667 247.2533333333334L366.2933333333334 156.5866666666667L387.84 234.6666666666667H298.6666666666667C275.2 234.6666666666667 256 253.8666666666667 256 277.3333333333334V362.6666666666667C256 386.1333333333334 275.2 405.3333333333333 298.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V277.3333333333334C469.3333333333333 265.6 464.64 254.9333333333334 456.7466666666667 247.2533333333334z" /> + <glyph glyph-name="text-to-speech-off" + unicode="&#xF50B;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L285.44 92.8000000000001C267.7333333333334 56.5333333333334 233.1733333333333 30.08 192 23.0400000000001V-21.3333333333333H149.3333333333333V23.04C88.7466666666667 33.28 42.6666666666667 85.9733333333333 42.6666666666667 149.3333333333333H85.3333333333333C85.3333333333333 102.1866666666667 123.52 64 170.6666666666667 64C209.4933333333334 64 242.3466666666667 90.0266666666666 252.5866666666667 125.6533333333334L213.3333333333333 164.9066666666667V149.3333333333334C213.3333333333333 125.8666666666667 194.1333333333333 106.6666666666667 170.6666666666667 106.6666666666667S128 125.8666666666667 128 149.3333333333334V250.24L42.6666666666667 335.5733333333334M456.7466666666667 247.2533333333334L366.2933333333334 156.5866666666667L387.84 234.6666666666667H298.6666666666667C275.2 234.6666666666667 256 253.8666666666667 256 277.3333333333334V362.6666666666667C256 386.1333333333334 275.2 405.3333333333333 298.6666666666667 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V277.3333333333334C469.3333333333333 265.6 464.64 254.9333333333334 456.7466666666667 247.2533333333334z" /> + <glyph glyph-name="textbox" + unicode="&#xF60E;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667H469.3333333333333V85.3333333333334H362.6666666666667V42.6666666666667C362.6666666666667 30.9333333333333 372.2666666666667 21.3333333333334 384 21.3333333333334H426.6666666666667V-21.3333333333333H373.3333333333333C361.6 -21.3333333333333 341.3333333333333 -11.7333333333333 341.3333333333333 0C341.3333333333333 -11.7333333333333 321.0666666666667 -21.3333333333333 309.3333333333333 -21.3333333333333H256V21.3333333333334H298.6666666666667C310.4 21.3333333333334 320 30.9333333333333 320 42.6666666666667V341.3333333333334C320 353.0666666666667 310.4 362.6666666666667 298.6666666666667 362.6666666666667H256V405.3333333333333H309.3333333333333C321.0666666666667 405.3333333333333 341.3333333333333 395.7333333333334 341.3333333333333 384C341.3333333333333 395.7333333333334 361.6 405.3333333333333 373.3333333333333 405.3333333333333H426.6666666666667V362.6666666666667H384C372.2666666666667 362.6666666666667 362.6666666666667 353.0666666666667 362.6666666666667 341.3333333333334V298.6666666666667M42.6666666666667 298.6666666666667H277.3333333333333V256H85.3333333333333V128H277.3333333333333V85.3333333333334H42.6666666666667V298.6666666666667M426.6666666666667 128V256H362.6666666666667V128H426.6666666666667z" /> + <glyph glyph-name="texture" + unicode="&#xF50C;" + horiz-adv-x="512" d=" M198.1866666666667 0H258.56L448 189.4400000000001V249.8133333333334M405.3333333333333 0C417.0666666666667 0 427.7333333333334 4.6933333333333 435.4133333333333 12.5866666666667C443.3066666666667 20.2666666666667 448 30.9333333333333 448 42.6666666666667V85.3333333333334L362.6666666666667 0M106.6666666666667 384C83.2 384 64 364.8 64 341.3333333333334V298.6666666666667L149.3333333333333 384M253.44 384L64 194.56V134.1866666666667L313.8133333333334 384M416 382.2933333333334L65.7066666666667 32C67.6266666666667 24.5333333333333 71.4666666666667 17.92 76.5866666666667 12.5866666666667C81.92 7.4666666666667 88.5333333333333 3.6266666666667 96 1.7066666666666L446.5066666666667 352C442.4533333333333 366.9333333333334 430.9333333333333 378.4533333333334 416 382.2933333333334z" /> + <glyph glyph-name="theater" + unicode="&#xF50D;" + horiz-adv-x="512" d=" M85.3333333333333 128H128C151.4666666666667 128 170.6666666666667 108.8 170.6666666666667 85.3333333333334V42.6666666666667H192V85.3333333333334C192 108.8 211.2 128 234.6666666666667 128H277.3333333333333C300.8 128 320 108.8 320 85.3333333333334V42.6666666666667H341.3333333333333V85.3333333333334C341.3333333333333 108.8 360.5333333333333 128 384 128H426.6666666666667C450.1333333333334 128 469.3333333333333 108.8 469.3333333333333 85.3333333333334V42.6666666666667H490.6666666666666V-21.3333333333333H21.3333333333333V42.6666666666667H42.6666666666667V85.3333333333334C42.6666666666667 108.8 61.8666666666667 128 85.3333333333333 128M234.6666666666667 298.6666666666667L320 234.6666666666667L234.6666666666667 170.6666666666667V298.6666666666667M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V159.1466666666667C456.7466666666667 166.6133333333334 442.24 170.6666666666667 426.6666666666667 170.6666666666667V362.6666666666667H85.3333333333333V170.6666666666667C69.76 170.6666666666667 55.2533333333333 166.6133333333334 42.6666666666667 159.1466666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="theme-light-dark" + unicode="&#xF50E;" + horiz-adv-x="512" d=" M160 405.3333333333333C121.8133333333333 380.8 96 337.4933333333334 96 288S121.8133333333333 195.2 160.64 170.6666666666667C95.1466666666667 170.6666666666667 42.6666666666667 223.1466666666667 42.6666666666667 288S95.1466666666667 405.3333333333333 160 405.3333333333333M406.8266666666667 373.3333333333334L437.3333333333333 342.8266666666667L105.1733333333333 10.6666666666667L74.6666666666667 41.1733333333333L406.8266666666667 373.3333333333334M274.9866666666667 321.4933333333334L243.4133333333334 341.3333333333334L212.6933333333333 320L221.6533333333333 356.2666666666667L192 378.88L229.3333333333333 381.44L241.7066666666667 416.64L256 381.8666666666667L292.9066666666667 381.2266666666667L264.1066666666667 357.12L274.9866666666667 321.4933333333334M204.5866666666667 244.48L179.84 260.0533333333334L155.9466666666667 243.4133333333334L163.2 271.5733333333334L139.9466666666667 289.2800000000001L168.96 291.2000000000001L178.56 318.7200000000001L189.44 291.6266666666667L218.4533333333333 290.9866666666667L196.0533333333333 272.4266666666668L204.5866666666666 244.48M405.3333333333333 160C405.3333333333333 95.1466666666667 352.8533333333333 42.6666666666667 288 42.6666666666667C261.9733333333333 42.6666666666667 237.8666666666667 51.2 218.4533333333333 65.4933333333333L382.5066666666667 229.5466666666667C396.8 210.1333333333334 405.3333333333333 186.0266666666668 405.3333333333333 160.0000000000001M311.4666666666667 19.6266666666667L370.56 44.16L365.4400000000001 -27.3066666666667L311.4666666666667 19.6266666666667M403.8400000000001 77.2266666666666L428.3733333333334 136.3199999999999L475.3066666666667 82.1333333333333L403.84 77.2266666666666M428.3733333333333 183.04L404.0533333333333 242.3466666666667L475.3066666666666 237.2266666666667L428.3733333333333 183.04M205.44 44.16L264.5333333333333 19.6266666666667L210.56 -27.0933333333333L205.44 44.16z" /> + <glyph glyph-name="thermometer" + unicode="&#xF50F;" + horiz-adv-x="512" d=" M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 120.3200000000001 166.1866666666667 151.2533333333333 192 170.6666666666667V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V170.6666666666667C345.8133333333334 151.2533333333333 362.6666666666667 120.3200000000001 362.6666666666667 85.3333333333334M234.6666666666667 277.3333333333334V145.7066666666667C209.7066666666667 136.96 192 113.28 192 85.3333333333334C192 49.92 220.5866666666667 21.3333333333334 256 21.3333333333334S320 49.92 320 85.3333333333334C320 113.28 302.2933333333333 136.96 277.3333333333333 145.7066666666667V277.3333333333334H234.6666666666667z" /> + <glyph glyph-name="thermometer-lines" + unicode="&#xF510;" + horiz-adv-x="512" d=" M362.6666666666667 384H448V341.3333333333334H362.6666666666667V384M362.6666666666667 298.6666666666667H448V256H362.6666666666667V298.6666666666667M362.6666666666667 213.3333333333334H448V170.6666666666667H378.6666666666667L362.6666666666667 189.8666666666667V213.3333333333334M448 128V85.3333333333334H405.3333333333333C405.3333333333333 100.0533333333334 403.2 114.5600000000001 399.1466666666667 128H448M362.6666666666667 85.3333333333334C362.6666666666667 26.4533333333334 314.88 -21.3333333333333 256 -21.3333333333333S149.3333333333333 26.4533333333334 149.3333333333333 85.3333333333334C149.3333333333333 120.3200000000001 166.1866666666667 151.2533333333333 192 170.6666666666667V341.3333333333334C192 376.7466666666667 220.5866666666667 405.3333333333333 256 405.3333333333333S320 376.7466666666667 320 341.3333333333334V170.6666666666667C345.8133333333334 151.2533333333333 362.6666666666667 120.3200000000001 362.6666666666667 85.3333333333334M234.6666666666667 277.3333333333334V145.7066666666667C209.7066666666667 136.96 192 113.28 192 85.3333333333334C192 49.92 220.5866666666667 21.3333333333334 256 21.3333333333334S320 49.92 320 85.3333333333334C320 113.28 302.2933333333333 136.96 277.3333333333333 145.7066666666667V277.3333333333334H234.6666666666667M149.3333333333333 384V341.3333333333334H64V384H149.3333333333333M149.3333333333333 298.6666666666667V256H64V298.6666666666667H149.3333333333333M149.3333333333333 213.3333333333334V189.8666666666667L133.3333333333333 170.6666666666667H64V213.3333333333334H149.3333333333333M64 128H112.8533333333333C108.8 114.56 106.6666666666667 100.0533333333334 106.6666666666667 85.3333333333334H64V128z" /> + <glyph glyph-name="thumb-down" + unicode="&#xF511;" + horiz-adv-x="512" d=" M405.3333333333333 128H490.6666666666666V384H405.3333333333333M320 384H128C110.2933333333333 384 95.1466666666667 373.3333333333334 88.7466666666667 357.9733333333334L24.32 207.5733333333334C22.4 202.6666666666667 21.3333333333333 197.5466666666667 21.3333333333333 192V149.3333333333334C21.3333333333333 125.8666666666667 40.5333333333333 106.6666666666667 64 106.6666666666667H198.6133333333333L178.3466666666666 9.1733333333333C177.92 7.04 177.7066666666667 4.9066666666667 177.7066666666667 2.5600000000001C177.7066666666667 -6.4 181.3333333333333 -14.2933333333333 187.0933333333333 -20.0533333333333L209.7066666666667 -42.6666666666666L350.08 97.92C357.9733333333334 105.6 362.6666666666667 116.2666666666667 362.6666666666667 128V341.3333333333334C362.6666666666667 365.0133333333333 343.4666666666667 384 320 384z" /> + <glyph glyph-name="thumb-down-outline" + unicode="&#xF512;" + horiz-adv-x="512" d=" M405.3333333333333 128V384H490.6666666666666V128H405.3333333333333M320 384C343.4666666666667 384 362.6666666666667 364.8 362.6666666666667 341.3333333333334V128C362.6666666666667 116.2666666666667 357.9733333333334 105.6 350.08 97.92L209.7066666666667 -42.6666666666666L187.0933333333333 -20.0533333333333C181.3333333333333 -14.2933333333333 177.7066666666667 -6.4 177.7066666666667 2.5599999999999L178.3466666666666 9.1733333333333L198.6133333333333 106.6666666666666H64C40.32 106.6666666666666 21.3333333333333 125.8666666666666 21.3333333333333 149.3333333333333V192C21.3333333333333 197.5466666666666 22.4 202.6666666666666 24.32 207.5733333333333L88.7466666666667 357.9733333333333C95.1466666666667 373.3333333333334 110.2933333333333 384 128 384H320M320 341.3333333333334H127.36L64 192V149.3333333333334H251.3066666666667L227.2 35.84L320 128.64V341.3333333333334z" /> + <glyph glyph-name="thumb-up" + unicode="&#xF513;" + horiz-adv-x="512" d=" M490.6666666666666 234.6666666666667C490.6666666666666 258.3466666666667 471.4666666666667 277.3333333333334 448 277.3333333333334H313.1733333333333L333.6533333333333 374.8266666666667C334.08 376.9600000000001 334.2933333333333 379.3066666666667 334.2933333333333 381.6533333333333C334.2933333333333 390.4 330.6666666666667 398.5066666666667 324.9066666666667 404.2666666666667L302.2933333333333 426.6666666666667L161.92 286.2933333333334C154.0266666666667 278.4 149.3333333333333 267.7333333333334 149.3333333333333 256V42.6666666666667C149.3333333333333 19.2 168.5333333333333 0 192 0H384C401.7066666666666 0 416.8533333333333 10.6666666666667 423.2533333333334 26.0266666666666L487.6799999999999 176.4266666666667C489.6 181.3333333333334 490.6666666666666 186.4533333333334 490.6666666666666 192V234.6666666666667M21.3333333333333 0H106.6666666666667V256H21.3333333333333V0z" /> + <glyph glyph-name="thumb-up-outline" + unicode="&#xF514;" + horiz-adv-x="512" d=" M106.6666666666667 256V0H21.3333333333333V256H106.6666666666667M192 0C168.5333333333333 0 149.3333333333333 19.2 149.3333333333333 42.6666666666667V256C149.3333333333333 267.7333333333334 154.0266666666667 278.4 161.92 286.0800000000001L302.2933333333333 426.6666666666667L324.9066666666667 404.0533333333334C330.6666666666667 398.2933333333334 334.2933333333333 390.4 334.2933333333333 381.6533333333333L333.6533333333333 374.8266666666667L313.3866666666667 277.3333333333334H448C471.6799999999999 277.3333333333334 490.6666666666666 258.1333333333334 490.6666666666666 234.6666666666667V192C490.6666666666666 186.4533333333334 489.6 181.3333333333334 487.6799999999999 176.4266666666667L423.2533333333334 26.0266666666666C416.8533333333333 10.6666666666667 401.7066666666666 0 384 0H192M192 42.6666666666667H384.64L448 192V234.6666666666667H260.48L284.5866666666667 348.1600000000001L192 255.36V42.6666666666667z" /> + <glyph glyph-name="thumbs-up-down" + unicode="&#xF515;" + horiz-adv-x="512" d=" M480 224H336C322.7733333333333 224 311.4666666666667 215.8933333333333 306.56 204.5866666666667L258.3466666666667 91.7333333333334C256.8533333333334 88.1066666666667 256 84.0533333333334 256 80V53.3333333333334C256 41.6 265.6 32 277.3333333333334 32H387.84L373.3333333333333 -35.84V-40.9599999999999C373.3333333333333 -47.5733333333333 376.1066666666667 -53.3333333333333 380.3733333333333 -58.0266666666666L397.2266666666666 -74.6666666666666L502.6133333333333 30.72C508.3733333333333 36.48 512 44.5866666666667 512 53.3333333333334V192C512 209.7066666666667 497.7066666666666 224 480 224M256 309.3333333333334C256 321.0666666666667 246.4 330.6666666666667 234.6666666666667 330.6666666666667H124.16L138.6666666666667 398.5066666666667V403.4133333333334C138.6666666666667 410.0266666666667 135.8933333333333 416 131.6266666666667 420.48L114.7733333333333 437.3333333333333L9.3866666666667 331.9466666666667C3.6266666666667 326.1866666666667 0 318.0800000000001 0 309.3333333333334V170.6666666666667C0 152.96 14.2933333333333 138.6666666666667 32 138.6666666666667H176C189.2266666666666 138.6666666666667 200.5333333333333 146.7733333333334 205.44 158.0800000000001L253.6533333333333 270.9333333333334C255.1466666666667 274.56 256 278.6133333333334 256 282.6666666666667V309.3333333333334z" /> + <glyph glyph-name="ticket" + unicode="&#xF516;" + horiz-adv-x="512" d=" M332.3733333333334 89.6L256 138.6666666666667L179.6266666666667 89.6L202.6666666666667 177.4933333333334L132.48 234.6666666666667L223.1466666666667 240.2133333333334L256 324.2666666666667L288.8533333333333 240.2133333333334L379.52 234.6666666666667L309.3333333333333 177.4933333333334M426.6666666666667 192C426.6666666666667 215.68 445.8666666666666 234.6666666666667 469.3333333333333 234.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V234.6666666666667C66.3466666666667 234.6666666666667 85.3333333333333 215.4666666666667 85.3333333333333 192S66.1333333333333 149.3333333333334 42.6666666666667 149.3333333333334V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V149.3333333333334C445.8666666666666 149.3333333333334 426.6666666666667 168.5333333333334 426.6666666666667 192z" /> + <glyph glyph-name="ticket-account" + unicode="&#xF517;" + horiz-adv-x="512" d=" M426.6666666666667 192C426.6666666666667 168.5333333333334 445.8666666666666 149.3333333333334 469.3333333333333 149.3333333333334V64C469.3333333333333 40.5333333333333 450.1333333333334 21.3333333333334 426.6666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V149.3333333333334C66.3466666666667 149.3333333333334 85.3333333333333 168.5333333333334 85.3333333333333 192S66.1333333333333 234.6666666666667 42.6666666666667 234.6666666666667V320C42.6666666666667 343.68 61.8666666666667 362.6666666666667 85.3333333333333 362.6666666666667H426.6666666666667C450.1333333333334 362.6666666666667 469.3333333333333 343.4666666666667 469.3333333333333 320V234.6666666666667C445.8666666666666 234.6666666666667 426.6666666666667 215.4666666666667 426.6666666666667 192M352 101.3333333333334C352 133.3333333333334 288 149.3333333333334 256 149.3333333333334S160 133.3333333333334 160 101.3333333333334V85.3333333333334H352V101.3333333333334M256 186.6666666666667C282.4533333333333 186.6666666666667 304 208.2133333333334 304 234.6666666666667S282.4533333333333 282.6666666666667 256 282.6666666666667S208 261.12 208 234.6666666666667S229.5466666666667 186.6666666666667 256 186.6666666666667z" /> + <glyph glyph-name="ticket-confirmation" + unicode="&#xF518;" + horiz-adv-x="512" d=" M277.3333333333333 266.6666666666667H234.6666666666667V309.3333333333334H277.3333333333333V266.6666666666667M277.3333333333333 170.6666666666667H234.6666666666667V213.3333333333334H277.3333333333333V170.6666666666667M277.3333333333333 74.6666666666667H234.6666666666667V117.3333333333334H277.3333333333333V74.6666666666667M469.3333333333333 234.6666666666667V320C469.3333333333333 343.68 450.1333333333334 362.6666666666667 426.6666666666667 362.6666666666667H85.3333333333333C61.8666666666667 362.6666666666667 42.6666666666667 343.4666666666667 42.6666666666667 320V234.6666666666667C66.3466666666667 234.6666666666667 85.3333333333333 215.4666666666667 85.3333333333333 192S66.1333333333333 149.3333333333334 42.6666666666667 149.3333333333334V64C42.6666666666667 40.5333333333333 61.8666666666667 21.3333333333334 85.3333333333333 21.3333333333334H426.6666666666667C450.1333333333334 21.3333333333334 469.3333333333333 40.5333333333333 469.3333333333333 64V149.3333333333334C445.8666666666666 149.3333333333334 426.6666666666667 168.5333333333334 426.6666666666667 192S445.8666666666666 234.6666666666667 469.3333333333333 234.6666666666667z" /> + <glyph glyph-name="tie" + unicode="&#xF519;" + horiz-adv-x="512" d=" M128 405.3333333333333L213.3333333333333 320L149.3333333333333 85.3333333333334L256 -21.3333333333333L362.6666666666667 85.3333333333334L298.6666666666667 320L384 405.3333333333333z" /> + <glyph glyph-name="timelapse" + unicode="&#xF51A;" + horiz-adv-x="512" d=" M256 21.3333333333334C161.7066666666667 21.3333333333334 85.3333333333333 97.7066666666667 85.3333333333333 192S161.7066666666667 362.6666666666667 256 362.6666666666667S426.6666666666667 286.2933333333334 426.6666666666667 192S350.2933333333334 21.3333333333334 256 21.3333333333334M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M346.4533333333334 282.4533333333334C321.4933333333334 307.6266666666667 288.64 320 256 320V192L165.5466666666667 101.5466666666666C215.4666666666667 51.6266666666667 296.5333333333333 51.6266666666667 346.4533333333334 101.5466666666666C396.5866666666667 151.4666666666667 396.5866666666667 232.5333333333333 346.4533333333334 282.4533333333333z" /> + <glyph glyph-name="timer" + unicode="&#xF51B;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667S173.44 320 256 320S405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667S338.56 21.3333333333334 256 21.3333333333334M405.9733333333334 290.3466666666667L436.2666666666667 320.64C426.6666666666668 331.52 417.0666666666667 341.3333333333333 406.1866666666667 350.7200000000001L375.8933333333333 320C342.8266666666667 346.88 301.2266666666667 362.6666666666667 256 362.6666666666667C149.9733333333333 362.6666666666667 64 276.6933333333334 64 170.6666666666667S149.9733333333333 -21.3333333333333 256 -21.3333333333333C362.6666666666667 -21.3333333333333 448 64.64 448 170.6666666666667C448 215.8933333333334 432.2133333333334 257.4933333333334 405.9733333333334 290.3466666666667M234.6666666666667 149.3333333333334H277.3333333333333V277.3333333333334H234.6666666666667M320 426.6666666666667H192V384H320V426.6666666666667z" /> + <glyph glyph-name="timer-10" + unicode="&#xF51C;" + horiz-adv-x="512" d=" M275.2 165.9733333333334C275.2 153.1733333333334 274.3466666666667 142.2933333333334 272.64 133.3333333333334C270.9333333333334 124.3733333333333 268.3733333333334 117.3333333333334 264.9600000000001 111.5733333333334C261.5466666666667 106.0266666666666 257.2800000000001 101.9733333333334 252.3733333333334 99.4133333333334C247.4666666666667 96.8533333333334 241.4933333333334 96 234.6666666666667 96C228.4800000000001 96 222.5066666666667 96.8533333333334 217.3866666666667 99.4133333333334C212.2666666666667 101.9733333333334 208 106.0266666666666 204.5866666666667 111.5733333333334C201.1733333333334 117.3333333333334 198.4 124.3733333333333 196.48 133.3333333333334C194.56 142.2933333333334 193.7066666666667 153.1733333333334 193.7066666666667 165.9733333333334V219.3066666666667C193.7066666666667 232.1066666666667 194.56 242.9866666666667 196.48 251.7333333333333C198.4 260.48 200.96 267.52 204.5866666666667 273.0666666666667C208 278.4 212.2666666666667 282.24 217.3866666666667 284.8C222.5066666666667 287.1466666666667 228.2666666666667 288 234.6666666666667 288C241.2800000000001 288 247.04 287.1466666666667 251.9466666666667 284.8C257.0666666666667 282.4533333333333 261.3333333333334 278.6133333333334 264.7466666666667 273.0666666666667C268.1600000000001 267.7333333333334 270.9333333333334 260.6933333333334 272.64 251.9466666666667C274.3466666666667 243.2 275.4133333333334 232.32 275.4133333333334 219.52V165.9733333333334M294.8266666666667 297.6C288 306.1333333333334 278.8266666666667 312.5333333333333 268.5866666666667 316.3733333333334C258.56 320 247.04 322.1333333333334 234.6666666666667 322.1333333333334C222.2933333333333 322.1333333333334 210.9866666666667 320 200.7466666666667 316.3733333333334C190.5066666666667 312.5333333333334 181.3333333333333 306.3466666666667 174.5066666666667 297.6C167.2533333333333 288.8533333333334 161.7066666666667 277.3333333333334 157.6533333333333 263.68C153.8133333333333 249.8133333333334 151.68 232.7466666666667 151.68 212.6933333333333V171.7333333333334C151.68 151.68 153.6 134.6133333333334 157.6533333333333 120.7466666666667C161.7066666666667 106.6666666666667 167.2533333333333 95.36 174.72 86.6133333333334C181.9733333333333 77.8666666666667 190.72 71.4666666666666 200.96 67.6266666666667C211.2 63.9999999999999 222.5066666666667 61.6533333333333 234.6666666666667 61.6533333333333C247.4666666666667 61.6533333333333 258.7733333333333 63.9999999999999 268.8 67.6266666666667C279.04 71.4666666666666 288 77.8666666666667 294.8266666666667 86.6133333333334C302.08 95.36 307.6266666666667 106.6666666666667 311.4666666666667 120.7466666666667C315.3066666666666 134.6133333333334 317.44 151.68 317.44 171.7333333333334V212.6933333333333C317.44 232.7466666666667 315.52 249.8133333333334 311.4666666666667 263.68C307.6266666666667 277.3333333333334 302.08 289.0666666666667 294.8266666666667 297.6M507.3066666666667 141.44C504.32 147.4133333333333 499.84 152.7466666666667 493.8666666666667 157.2266666666667C487.8933333333333 161.7066666666667 480.8533333333334 165.5466666666667 472.32 168.5333333333333S454.1866666666666 174.2933333333333 443.52 176.64C436.0533333333333 178.1333333333333 429.8666666666666 179.84 424.9599999999999 181.3333333333334C420.0533333333333 183.2533333333333 415.9999999999999 184.96 413.2266666666666 186.88C410.2399999999999 188.8 408.32 190.9333333333333 407.2533333333332 193.28C406.1866666666666 195.6266666666667 405.3333333333333 198.4 405.3333333333333 201.6C405.3333333333333 204.5866666666667 406.1866666666666 207.5733333333334 407.4666666666666 210.3466666666667C408.7466666666666 213.3333333333334 410.6666666666666 215.68 413.2266666666666 217.6C415.9999999999999 219.7333333333334 418.9866666666666 221.44 422.8266666666666 222.72S431.3599999999999 224.6400000000001 436.4799999999999 224.6400000000001C441.8133333333333 224.6400000000001 446.5066666666666 224.0000000000001 450.5599999999999 222.2933333333334C454.6133333333333 220.8000000000001 458.0266666666666 218.6666666666667 460.8 216.1066666666668C463.5733333333333 213.3333333333334 465.4933333333332 210.5600000000001 466.9866666666666 207.1466666666667C468.2666666666665 203.7333333333334 469.3333333333333 200.3200000000001 469.3333333333333 196.6933333333334H510.7199999999999C510.7199999999999 205.0133333333334 509.0133333333333 212.6933333333334 505.6 219.9466666666667C502.1866666666666 227.2000000000001 497.28 233.3866666666668 490.6666666666666 238.7200000000001C484.48 244.0533333333334 476.8 248.1066666666668 467.6266666666667 251.3066666666668C458.6666666666666 254.5066666666667 448 256 436.48 256C425.6 256 416 254.5066666666667 406.8266666666667 251.52C398.08 248.5333333333333 390.4 244.48 384 239.36C378.0266666666667 234.6666666666667 373.3333333333333 228.2666666666667 369.92 221.44C366.5066666666667 214.6133333333333 365.0133333333333 207.5733333333333 365.0133333333333 199.8933333333333C365.0133333333333 192 366.7199999999999 185.1733333333334 369.92 179.4133333333334C373.3333333333333 173.4400000000001 377.6 168.3200000000001 384 163.84C389.3333333333333 159.36 396.3733333333333 155.7333333333334 404.48 152.5333333333334C412.5866666666667 149.3333333333334 421.76 146.9866666666667 431.5733333333333 144.8533333333334C439.8933333333333 143.1466666666667 446.7200000000001 141.2266666666667 451.84 139.3066666666667S461.0133333333333 135.2533333333334 464 133.1200000000001C466.7733333333333 130.9866666666667 468.6933333333333 128.0000000000001 469.3333333333333 125.8666666666667C470.8266666666667 123.3066666666667 471.2533333333333 120.5333333333334 471.2533333333333 117.3333333333334C471.2533333333333 110.72 468.48 105.3866666666667 462.72 101.1200000000001C456.96 96.8533333333334 448.64 94.9333333333334 437.3333333333333 94.9333333333334C433.0666666666667 94.9333333333334 428.5866666666667 95.3600000000001 424.1066666666667 96.64C419.6266666666666 97.7066666666667 416 99.4133333333334 412.16 101.76C408.5333333333333 104.1066666666667 405.3333333333333 107.3066666666667 403.4133333333333 111.1466666666667C401.0666666666667 114.9866666666667 399.7866666666667 119.8933333333333 399.5733333333333 125.44H359.2533333333334C359.2533333333334 117.3333333333333 360.9599999999999 110.2933333333333 364.3733333333333 103.04C367.7866666666667 96 372.6933333333333 89.1733333333334 379.3066666666666 83.2C385.9199999999999 77.44 394.0266666666667 72.7466666666667 403.8399999999999 69.12C413.6533333333333 65.4933333333333 424.7466666666666 64 437.3333333333333 64C448.8533333333333 64 458.6666666666666 65.0666666666667 468.2666666666665 67.84C477.4399999999999 70.6133333333334 485.3333333333333 74.6666666666667 491.9466666666665 79.36C498.5599999999998 84.2666666666667 503.4666666666665 90.24 507.0933333333332 97.0666666666666C510.7199999999999 103.8933333333333 511.9999999999999 111.36 511.9999999999999 119.68S510.5066666666665 135.4666666666667 507.3066666666666 141.44M0 283.3066666666667V247.4666666666667L64 268.8V64H106.6666666666667V320H101.3333333333333L0 283.3066666666667z" /> + <glyph glyph-name="timer-3" + unicode="&#xF51D;" + horiz-adv-x="512" d=" M445.2266666666667 141.4400000000001C442.24 147.4133333333334 437.3333333333333 152.7466666666667 431.7866666666667 157.2266666666667C425.8133333333334 161.7066666666667 418.7733333333334 165.5466666666668 410.24 168.5333333333334S392.1066666666667 174.2933333333334 381.44 176.6400000000001C373.9733333333333 178.1333333333334 367.7866666666667 179.84 362.6666666666667 181.3333333333334C357.9733333333334 183.2533333333334 354.1333333333334 184.96 351.1466666666667 186.8800000000001S346.24 190.9333333333334 345.1733333333333 193.2800000000001C344.1066666666667 195.6266666666667 343.4666666666667 198.4000000000001 343.4666666666667 201.6000000000001C343.4666666666667 204.8000000000001 344.1066666666667 207.5733333333334 345.3866666666667 210.3466666666668C346.6666666666667 213.3333333333334 348.5866666666667 215.6800000000001 351.1466666666667 217.6000000000001C353.7066666666667 219.7333333333334 356.9066666666667 221.4400000000001 360.7466666666667 222.7200000000001S369.28 224.6400000000001 374.4 224.6400000000001C379.7333333333334 224.6400000000001 384 224.0000000000001 388.48 222.2933333333334C392.5333333333334 220.8000000000001 395.9466666666667 218.6666666666668 398.7200000000001 216.1066666666668C401.4933333333334 213.3333333333334 403.4133333333333 210.5600000000001 405.3333333333333 207.1466666666668C406.1866666666666 203.7333333333334 407.04 200.3200000000001 407.04 196.6933333333335H448.64C448.64 205.0133333333334 446.9333333333333 212.6933333333335 443.52 219.9466666666668C440.1066666666667 227.2000000000001 435.2 233.3866666666668 428.8 238.7200000000001C422.3999999999999 244.0533333333335 414.7199999999999 248.1066666666668 405.3333333333333 251.3066666666668C396.3733333333332 254.5066666666668 385.9199999999999 256.0000000000001 374.3999999999999 256.0000000000001C363.5199999999999 256.0000000000001 353.4933333333333 254.5066666666668 344.7466666666666 251.5200000000001C335.9999999999999 248.5333333333334 328.32 244.4800000000001 322.1333333333332 239.3600000000001C315.9466666666666 234.6666666666668 311.2533333333332 228.2666666666668 307.8399999999999 221.4400000000001C304.4266666666666 214.6133333333334 302.9333333333332 207.5733333333334 302.9333333333332 199.8933333333334C302.9333333333332 192.0000000000001 304.6399999999999 185.3866666666668 307.8399999999999 179.4133333333334C311.0399999999999 173.4400000000001 315.7333333333333 168.3200000000001 321.4933333333333 163.8400000000001C327.2533333333332 159.3600000000001 334.2933333333333 155.7333333333334 342.3999999999999 152.5333333333334C350.5066666666666 149.3333333333334 359.6799999999999 146.9866666666668 369.4933333333333 144.8533333333335C377.8133333333333 143.1466666666668 384.64 141.2266666666668 389.7599999999999 139.3066666666668C394.6666666666666 137.3866666666668 398.9333333333332 135.2533333333335 401.9199999999999 133.1200000000001C404.6933333333332 130.9866666666668 406.6133333333333 128.0000000000001 407.6799999999999 125.8666666666668C408.7466666666666 123.3066666666669 409.1733333333333 120.5333333333335 409.1733333333333 117.3333333333335C409.1733333333333 110.7200000000001 406.3999999999999 105.3866666666668 400.64 101.1200000000001C394.6666666666666 96.8533333333335 386.56 94.9333333333335 375.68 94.9333333333335C370.9866666666667 94.9333333333335 366.5066666666667 95.3600000000001 362.0266666666667 96.6400000000001C357.5466666666666 97.7066666666668 353.4933333333334 99.4133333333334 350.08 101.7600000000001C346.4533333333333 104.1066666666667 343.68 107.3066666666667 341.3333333333333 111.1466666666668C338.9866666666667 114.9866666666667 337.7066666666667 119.8933333333334 337.4933333333334 125.4400000000001H297.1733333333333C297.1733333333333 117.3333333333334 298.6666666666667 110.2933333333334 302.2933333333333 103.0400000000001C305.7066666666667 96.0000000000001 310.6133333333334 89.1733333333334 317.2266666666667 83.2000000000001C323.84 77.4400000000001 331.9466666666666 72.7466666666668 341.3333333333333 69.1200000000001C352 65.4933333333333 362.6666666666667 64.0000000000001 375.4666666666667 64.0000000000001C386.7733333333334 64.0000000000001 397.0133333333334 65.0666666666668 406.1866666666667 67.8400000000001C415.36 70.6133333333334 423.2533333333334 74.6666666666667 429.8666666666667 79.3600000000001C436.48 84.2666666666668 441.3866666666667 90.2400000000001 445.0133333333334 97.0666666666667C448.6400000000001 103.8933333333334 450.3466666666667 111.36 450.3466666666667 119.6800000000001C449.9200000000001 128.0000000000001 448.0000000000001 135.4666666666667 445.2266666666668 141.4400000000001M247.6800000000001 171.3066666666667C244.2666666666668 176.4266666666667 240.0000000000001 181.3333333333334 234.6666666666668 185.1733333333334C229.1200000000001 189.2266666666667 222.5066666666668 192.6400000000001 214.6133333333335 195.4133333333334C221.0133333333335 198.4000000000001 226.7733333333335 201.8133333333334 231.6800000000001 206.0800000000001C236.5866666666668 210.3466666666667 240.6400000000002 214.8266666666667 243.8400000000002 219.7333333333334C247.0400000000002 224.6400000000001 249.6000000000002 229.5466666666668 251.0933333333335 234.6666666666667C252.8000000000002 240.0000000000001 253.4400000000001 245.3333333333334 253.4400000000001 250.4533333333334C253.4400000000001 262.1866666666667 251.5200000000001 272.6400000000001 247.4666666666668 281.6C243.6266666666668 290.5600000000001 238.0800000000002 298.0266666666668 230.8266666666668 304.2133333333334C224.0000000000002 310.1866666666667 215.2533333333335 314.8800000000001 205.2266666666668 317.8666666666667C195.6266666666668 320.6400000000001 184.5333333333335 322.1333333333334 172.5866666666669 322.1333333333334C160.8533333333335 322.1333333333334 149.9733333333335 320.0000000000001 140.1600000000002 317.0133333333334C130.1333333333335 313.3866666666667 121.6000000000002 308.48 114.5600000000002 302.2933333333334C107.5200000000002 296.1066666666667 101.7600000000002 288.8533333333334 97.9200000000002 280.3200000000001C93.6533333333335 272.0000000000001 91.7333333333335 262.6133333333334 91.7333333333335 252.8000000000001H133.9733333333335C133.9733333333335 258.3466666666667 135.0400000000002 263.2533333333334 136.9600000000002 267.5200000000001C138.6666666666668 271.7866666666667 141.6533333333335 275.6266666666667 145.0666666666668 278.6133333333334C148.6933333333335 281.6 152.7466666666669 283.9466666666667 157.4400000000002 285.6533333333334C162.1333333333335 287.36 167.2533333333335 288 173.0133333333335 288C186.0266666666668 288 195.6266666666668 284.8 202.0266666666668 278.1866666666667C208.4266666666669 271.5733333333334 211.4133333333335 262.1866666666667 211.4133333333335 250.0266666666667C211.4133333333335 244.2666666666667 210.5600000000002 238.9333333333334 208.8533333333335 234.6666666666667C207.1466666666668 229.5466666666667 204.3733333333335 225.4933333333334 200.7466666666668 222.08C197.1200000000002 218.6666666666667 192.6400000000001 216.1066666666667 187.3066666666668 214.1866666666667C181.9733333333335 212.2666666666667 175.5733333333334 211.4133333333334 168.3200000000001 211.4133333333334H143.36V177.92H168.5333333333333C175.7866666666667 177.92 182.1866666666667 177.0666666666667 187.9466666666667 175.5733333333334C193.7066666666667 173.8666666666667 198.6133333333334 171.5200000000001 202.6666666666667 168.1066666666667C206.72 164.6933333333334 209.92 160 212.0533333333333 155.0933333333334C214.1866666666667 149.9733333333334 215.4666666666667 143.5733333333334 215.4666666666667 136.5333333333334C215.4666666666667 123.3066666666667 211.6266666666667 113.2800000000001 204.16 106.6666666666667C196.6933333333333 99.2000000000001 186.24 96 173.2266666666667 96C167.04 96 161.28 96.64 156.16 98.5600000000001C151.04 100.2666666666667 146.7733333333334 102.8266666666667 143.1466666666667 106.6666666666667C139.52 109.6533333333334 136.7466666666667 113.4933333333334 134.8266666666667 118.1866666666667C132.9066666666667 122.8800000000001 131.84 128.0000000000001 131.84 133.5466666666668H89.3866666666667C89.3866666666667 121.8133333333334 91.7333333333334 111.5733333333334 96 102.6133333333334C100.6933333333333 93.6533333333334 106.6666666666667 86.1866666666667 114.56 80.2133333333334C122.24 74.6666666666667 130.9866666666667 69.7600000000001 141.0133333333333 66.7733333333334C151.04 64.0000000000001 161.4933333333334 62.2933333333334 172.5866666666667 62.2933333333334C184.7466666666667 62.2933333333334 195.84 64 206.2933333333333 67.2000000000001C216.7466666666667 70.4 225.7066666666667 75.3066666666667 233.1733333333333 81.7066666666667C240.8533333333333 88.1066666666667 246.8266666666667 96.0000000000001 251.0933333333333 105.1733333333334C255.36 114.3466666666668 257.4933333333334 125.0133333333334 257.4933333333334 136.7466666666668C257.4933333333334 142.9333333333334 256.64 149.3333333333334 255.1466666666667 155.0933333333334C253.44 160.0000000000001 251.0933333333334 165.9733333333334 247.68 171.3066666666667z" /> + <glyph glyph-name="timer-off" + unicode="&#xF51E;" + horiz-adv-x="512" d=" M256 21.3333333333334C173.44 21.3333333333334 106.6666666666667 88.1066666666667 106.6666666666667 170.6666666666667C106.6666666666667 197.9733333333333 114.1333333333333 224 126.9333333333333 245.3333333333334L330.6666666666667 41.8133333333334C309.3333333333333 28.8000000000001 283.3066666666666 21.3333333333334 256 21.3333333333334M64 362.6666666666667L37.3333333333333 335.5733333333334L96 276.6933333333334C75.7333333333333 246.4000000000001 64 209.92 64 170.6666666666667C64 64.64 149.9733333333333 -21.3333333333333 256 -21.3333333333333C295.2533333333334 -21.3333333333333 331.7333333333334 -9.6 362.6666666666667 10.6666666666667L416 -42.6666666666666L442.6666666666667 -15.5733333333333L278.1866666666666 149.3333333333334L64 362.6666666666667M234.6666666666667 246.6133333333333L277.3333333333333 203.9466666666667V277.3333333333334H234.6666666666667M320 426.6666666666667H192V384H320M406.1866666666666 350.9333333333334L375.8933333333333 320.64C342.8266666666667 346.88 301.2266666666667 362.6666666666667 256 362.6666666666667C216.96 362.6666666666667 180.6933333333333 350.9333333333334 150.4 330.6666666666667L181.3333333333333 299.9466666666667C203.3066666666667 312.5333333333334 228.9066666666667 320 256 320C338.56 320 405.3333333333333 253.2266666666667 405.3333333333333 170.6666666666667C405.3333333333333 143.5733333333334 397.8666666666666 117.9733333333334 385.28 96L416 65.28C436.2666666666667 95.36 448 131.6266666666667 448 170.6666666666667C448 215.8933333333334 432.2133333333334 257.4933333333334 405.9733333333334 290.3466666666667L436.2666666666667 320.64L406.1866666666667 350.9333333333334z" /> + <glyph glyph-name="timer-sand" + unicode="&#xF51F;" + horiz-adv-x="512" d=" M426.6666666666667 405.3333333333333V362.6666666666667H384V268.5866666666667L307.4133333333333 192L384 115.4133333333334V21.3333333333334H426.6666666666667V-21.3333333333333H85.3333333333333V21.3333333333334H128V115.4133333333334L204.5866666666667 192L128 268.5866666666667V362.6666666666667H85.3333333333333V405.3333333333333H426.6666666666667M341.3333333333333 97.92L277.3333333333333 161.92V222.08L341.3333333333333 286.0800000000001V362.6666666666667H170.6666666666667V286.0800000000001L234.6666666666667 222.08V161.92L170.6666666666667 97.92V85.3333333333334H213.3333333333333L256 128L298.6666666666667 85.3333333333334H341.3333333333333V97.92M256 256L213.3333333333333 298.6666666666667H298.6666666666667L256 256z" /> + <glyph glyph-name="timetable" + unicode="&#xF520;" + horiz-adv-x="512" d=" M298.6666666666667 192H330.6666666666667V131.84L382.7200000000001 101.76L366.7200000000001 74.0266666666666L298.6666666666667 113.28V192M85.3333333333333 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V232.5333333333334C453.1199999999999 205.6533333333334 469.3333333333333 168.7466666666667 469.3333333333333 128C469.3333333333333 45.44 402.56 -21.3333333333333 320 -21.3333333333333C279.2533333333334 -21.3333333333333 242.3466666666667 -5.1199999999999 215.4666666666667 21.3333333333334H85.3333333333333C61.8666666666667 21.3333333333334 42.6666666666667 40.5333333333333 42.6666666666667 64V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 128V64H184.96C175.7866666666667 83.4133333333334 170.6666666666667 105.1733333333334 170.6666666666667 128H85.3333333333333M85.3333333333333 277.3333333333334H213.3333333333333V341.3333333333334H85.3333333333333V277.3333333333334M384 277.3333333333334V341.3333333333334H256V277.3333333333334H384M85.3333333333333 170.6666666666667H176.8533333333333C184.1066666666666 195.2 197.5466666666667 217.1733333333334 215.4666666666667 234.6666666666667H85.3333333333333V170.6666666666667M320 231.4666666666667C262.8266666666667 231.4666666666667 216.5333333333333 185.1733333333334 216.5333333333333 128C216.5333333333333 70.8266666666667 262.8266666666667 24.5333333333333 320 24.5333333333333C377.1733333333333 24.5333333333333 423.4666666666667 70.8266666666667 423.4666666666667 128C423.4666666666667 185.1733333333333 377.1733333333333 231.4666666666667 320 231.4666666666667z" /> + <glyph glyph-name="toggle-switch" + unicode="&#xF521;" + horiz-adv-x="512" d=" M362.6666666666667 298.6666666666667C421.5466666666666 298.6666666666667 469.3333333333333 250.88 469.3333333333333 192S421.5466666666666 85.3333333333334 362.6666666666667 85.3333333333334S256 133.12 256 192S303.7866666666667 298.6666666666667 362.6666666666667 298.6666666666667M85.3333333333333 149.3333333333334C61.8666666666667 149.3333333333334 42.6666666666667 168.5333333333334 42.6666666666667 192S61.8666666666667 234.6666666666667 85.3333333333333 234.6666666666667H213.3333333333333V149.3333333333334H85.3333333333333z" /> + <glyph glyph-name="toggle-switch-off" + unicode="&#xF522;" + horiz-adv-x="512" d=" M149.3333333333333 298.6666666666667C208.2133333333333 298.6666666666667 256 250.88 256 192S208.2133333333333 85.3333333333334 149.3333333333333 85.3333333333334S42.6666666666667 133.12 42.6666666666667 192S90.4533333333333 298.6666666666667 149.3333333333333 298.6666666666667M426.6666666666667 149.3333333333334H298.6666666666667V234.6666666666667H426.6666666666667C450.1333333333334 234.6666666666667 469.3333333333333 215.4666666666667 469.3333333333333 192S450.1333333333334 149.3333333333334 426.6666666666667 149.3333333333334M149.3333333333333 256C113.92 256 85.3333333333333 227.4133333333334 85.3333333333333 192S113.92 128 149.3333333333333 128S213.3333333333333 156.5866666666667 213.3333333333333 192S184.7466666666667 256 149.3333333333333 256z" /> + <glyph glyph-name="tooltip" + unicode="&#xF523;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333z" /> + <glyph glyph-name="tooltip-edit" + unicode="&#xF524;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M384 149.3333333333334V192H266.6666666666667L224 149.3333333333334H384M128 149.3333333333334H181.3333333333333L327.4666666666667 296.1066666666667C331.7333333333333 300.1600000000001 331.7333333333333 306.9866666666667 327.4666666666667 311.2533333333334L289.92 348.8C285.6533333333333 353.0666666666667 278.8266666666667 353.0666666666667 274.7733333333333 348.8L128 202.0266666666667V149.3333333333334z" /> + <glyph glyph-name="tooltip-image" + unicode="&#xF525;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M405.3333333333333 128V298.6666666666667L320 213.3333333333334L277.3333333333333 256L149.3333333333333 128H405.3333333333333M149.3333333333333 341.3333333333334C125.8666666666667 341.3333333333334 106.6666666666667 322.1333333333334 106.6666666666667 298.6666666666667S125.8666666666667 256 149.3333333333333 256S192 275.2000000000001 192 298.6666666666667S172.8 341.3333333333334 149.3333333333333 341.3333333333334z" /> + <glyph glyph-name="tooltip-outline" + unicode="&#xF526;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 362.6666666666667V106.6666666666667H188.3733333333333L256 39.04L323.6266666666667 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333z" /> + <glyph glyph-name="tooltip-outline-plus" + unicode="&#xF527;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M85.3333333333333 362.6666666666667V106.6666666666667H188.3733333333333L256 39.04L323.6266666666667 106.6666666666667H426.6666666666667V362.6666666666667H85.3333333333333M234.6666666666667 320H277.3333333333333V256H341.3333333333333V213.3333333333334H277.3333333333333V149.3333333333334H234.6666666666667V213.3333333333334H170.6666666666667V256H234.6666666666667V320z" /> + <glyph glyph-name="tooltip-text" + unicode="&#xF528;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H426.6666666666667C450.1333333333334 405.3333333333333 469.3333333333333 386.1333333333334 469.3333333333333 362.6666666666667V106.6666666666667C469.3333333333333 83.2 450.1333333333334 64 426.6666666666667 64H341.3333333333333L256 -21.3333333333333L170.6666666666667 64H85.3333333333333C61.8666666666667 64 42.6666666666667 83.2 42.6666666666667 106.6666666666667V362.6666666666667C42.6666666666667 386.1333333333334 61.8666666666667 405.3333333333333 85.3333333333333 405.3333333333333M106.6666666666667 341.3333333333334V298.6666666666667H405.3333333333333V341.3333333333334H106.6666666666667M106.6666666666667 256V213.3333333333334H320V256H106.6666666666667M106.6666666666667 170.6666666666667V128H362.6666666666667V170.6666666666667H106.6666666666667z" /> + <glyph glyph-name="tooth" + unicode="&#xF529;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333C85.3333333333333 405.3333333333333 42.6666666666667 341.3333333333334 42.6666666666667 277.3333333333334C42.6666666666667 232.32 64 170.6666666666667 85.3333333333333 149.3333333333334S128 -21.3333333333333 170.6666666666667 -21.3333333333333C267.52 -21.3333333333333 213.3333333333333 128 256 128S244.48 -21.3333333333333 341.3333333333333 -21.3333333333333C384 -21.3333333333333 405.3333333333333 128 426.6666666666667 149.3333333333334S469.3333333333333 232.32 469.3333333333333 277.3333333333334C469.3333333333333 341.3333333333334 426.6666666666667 405.3333333333333 362.6666666666667 405.3333333333333S298.6666666666667 384 256 384S213.3333333333333 405.3333333333333 149.3333333333333 405.3333333333333M149.3333333333333 362.6666666666667C192 362.6666666666667 213.3333333333333 341.3333333333334 256 341.3333333333334S320 362.6666666666667 362.6666666666667 362.6666666666667C398.2933333333334 362.6666666666667 426.6666666666667 320 426.6666666666667 277.3333333333334C426.6666666666667 240 408.32 189.6533333333334 388.0533333333334 169.3866666666667C369.7066666666667 151.0400000000001 342.6133333333334 22.6133333333334 330.6666666666667 22.6133333333334C326.1866666666667 22.6133333333334 320 45.2266666666667 320 72.7466666666668C320 116.2666666666668 307.8400000000001 170.6666666666668 256 170.6666666666668S192 116.2666666666668 192 72.7466666666668C192 45.2266666666668 185.8133333333334 22.6133333333334 181.3333333333334 22.6133333333334C169.3866666666667 22.6133333333334 142.2933333333334 151.0400000000001 123.9466666666667 169.3866666666667C103.68 189.6533333333334 85.3333333333333 240 85.3333333333333 277.3333333333334C85.3333333333333 320 113.7066666666667 362.6666666666667 149.3333333333333 362.6666666666667z" /> + <glyph glyph-name="tor" + unicode="&#xF52A;" + horiz-adv-x="512" d=" M256 149.3333333333334C234.6666666666667 149.3333333333334 192 128 192 106.6666666666667C192 64 256 64 256 64V85.3333333333334C244.2666666666667 85.3333333333334 234.6666666666667 94.9333333333333 234.6666666666667 106.6666666666667S244.2666666666667 128 256 128V149.3333333333334M256 42.6666666666667S170.6666666666667 53.3333333333334 170.6666666666667 96C170.6666666666667 160 234.6666666666667 176 256 176V202.6666666666667C234.6666666666667 202.6666666666667 149.3333333333333 170.6666666666667 149.3333333333333 106.6666666666667C149.3333333333333 21.3333333333334 256 21.3333333333334 256 21.3333333333334V42.6666666666667M214.8266666666667 298.0266666666667L240.2133333333333 286.7200000000001C249.3866666666667 338.7733333333333 273.92 373.3333333333333 273.92 373.3333333333333C264.7466666666667 351.36 258.7733333333333 333.2266666666667 254.9333333333333 318.9333333333334C280.7466666666667 372.2666666666667 333.0133333333333 405.3333333333333 333.0133333333333 405.3333333333333C307.84 380.1600000000001 289.28 352.8533333333334 276.6933333333333 330.0266666666667C310.4 365.8666666666667 357.12 389.3333333333334 357.12 389.3333333333334C299.7333333333333 352.64 273.92 294.4000000000001 267.52 278.1866666666667L279.2533333333334 276.48C279.2533333333334 265.3866666666667 279.2533333333334 255.1466666666667 284.5866666666667 247.0400000000001C300.8 206.72 384 203.3066666666667 384 106.6666666666667S298.0266666666667 -21.3333333333333 252.3733333333334 -21.3333333333333C206.72 -21.3333333333333 106.6666666666667 -0.64 106.6666666666667 106.6666666666667S212.2666666666667 214.8266666666667 231.04 257.7066666666667C233.6 265.8133333333334 214.8266666666667 298.0266666666667 214.8266666666667 298.0266666666667z" /> + <glyph glyph-name="traffic-light" + unicode="&#xF52B;" + horiz-adv-x="512" d=" M256 256C232.5333333333334 256 213.3333333333333 275.2000000000001 213.3333333333333 298.6666666666667C213.3333333333333 322.3466666666667 232.5333333333334 341.3333333333334 256 341.3333333333334C279.68 341.3333333333334 298.6666666666667 322.3466666666667 298.6666666666667 298.6666666666667C298.6666666666667 275.2000000000001 279.4666666666667 256 256 256M256 149.3333333333334C232.5333333333334 149.3333333333334 213.3333333333333 168.5333333333334 213.3333333333333 192C213.3333333333333 215.68 232.5333333333334 234.6666666666667 256 234.6666666666667C279.68 234.6666666666667 298.6666666666667 215.68 298.6666666666667 192C298.6666666666667 168.5333333333334 279.4666666666667 149.3333333333334 256 149.3333333333334M256 42.6666666666667C232.5333333333334 42.6666666666667 213.3333333333333 61.8666666666667 213.3333333333333 85.3333333333334C213.3333333333333 109.0133333333333 232.5333333333334 128 256 128C279.68 128 298.6666666666667 109.0133333333333 298.6666666666667 85.3333333333334C298.6666666666667 61.8666666666667 279.4666666666667 42.6666666666667 256 42.6666666666667M426.6666666666667 234.6666666666667H362.6666666666667V258.9866666666667C399.36 268.5866666666667 426.6666666666667 301.6533333333334 426.6666666666667 341.3333333333334H362.6666666666667V362.6666666666667C362.6666666666667 374.4 353.0666666666667 384 341.3333333333333 384H170.6666666666667C158.9333333333333 384 149.3333333333333 374.4 149.3333333333333 362.6666666666667V341.3333333333334H85.3333333333333C85.3333333333333 301.6533333333333 112.64 268.5866666666667 149.3333333333333 258.9866666666667V234.6666666666667H85.3333333333333C85.3333333333333 194.9866666666667 112.64 161.92 149.3333333333333 152.3200000000001V128H85.3333333333333C85.3333333333333 88.3200000000001 112.64 55.2533333333333 149.3333333333333 45.6533333333334V21.3333333333334C149.3333333333333 9.6 158.9333333333333 0 170.6666666666667 0H341.3333333333333C353.0666666666667 0 362.6666666666667 9.6 362.6666666666667 21.3333333333334V45.6533333333334C399.36 55.2533333333333 426.6666666666667 88.3200000000001 426.6666666666667 128H362.6666666666667V152.3200000000001C399.36 161.92 426.6666666666667 194.9866666666667 426.6666666666667 234.6666666666667z" /> + <glyph glyph-name="train" + unicode="&#xF52C;" + horiz-adv-x="512" d=" M384 234.6666666666667H128V341.3333333333334H384M256 85.3333333333334C232.32 85.3333333333334 213.3333333333333 104.5333333333333 213.3333333333333 128C213.3333333333333 151.68 232.32 170.6666666666667 256 170.6666666666667C279.4666666666667 170.6666666666667 298.6666666666667 151.4666666666667 298.6666666666667 128S279.4666666666667 85.3333333333334 256 85.3333333333334M85.3333333333333 117.3333333333334C85.3333333333333 76.16 118.8266666666667 42.6666666666667 160 42.6666666666667L128 10.6666666666667V0H384V10.6666666666667L352 42.6666666666667C393.1733333333333 42.6666666666667 426.6666666666667 76.16 426.6666666666667 117.3333333333334V341.3333333333334C426.6666666666667 416 350.2933333333334 426.6666666666667 256 426.6666666666667S85.3333333333333 416 85.3333333333333 341.3333333333334V117.3333333333334z" /> + <glyph glyph-name="tram" + unicode="&#xF52D;" + horiz-adv-x="512" d=" M362.6666666666667 64C349.8666666666666 64 341.3333333333333 72.5333333333333 341.3333333333333 85.3333333333334S349.8666666666666 106.6666666666667 362.6666666666667 106.6666666666667S384 98.1333333333334 384 85.3333333333334S375.4666666666667 64 362.6666666666667 64M142.9333333333333 219.7333333333334L149.3333333333333 292.2666666666667C149.3333333333333 307.2000000000001 162.1333333333333 320 177.0666666666667 320H332.8C349.8666666666667 320 362.6666666666667 307.2000000000001 362.6666666666667 292.2666666666667L369.0666666666667 221.8666666666667C369.0666666666667 206.9333333333334 356.2666666666667 194.1333333333333 341.3333333333333 194.1333333333333H170.6666666666667C155.7333333333333 192 142.9333333333333 204.8 142.9333333333333 219.7333333333333M149.3333333333333 64C136.5333333333333 64 128 72.5333333333333 128 85.3333333333334S136.5333333333333 106.6666666666667 149.3333333333333 106.6666666666667S170.6666666666667 98.1333333333334 170.6666666666667 85.3333333333334S162.1333333333333 64 149.3333333333333 64M405.3333333333333 320C405.3333333333333 343.4666666666667 386.1333333333334 362.6666666666667 362.6666666666667 362.6666666666667H320C320 386.1333333333334 300.8 405.3333333333333 277.3333333333333 405.3333333333333H234.6666666666667C211.2 405.3333333333333 192 386.1333333333334 192 362.6666666666667H149.3333333333333C125.8666666666667 362.6666666666667 106.6666666666667 343.4666666666667 106.6666666666667 320L85.3333333333333 64C85.3333333333333 40.5333333333333 104.5333333333333 21.3333333333334 128 21.3333333333334H170.6666666666667L149.3333333333333 -21.3333333333333H364.8L343.4666666666667 21.3333333333334H384C407.4666666666667 21.3333333333334 426.6666666666667 40.5333333333333 426.6666666666667 64L405.3333333333333 320z" /> + <glyph glyph-name="transcribe" + unicode="&#xF52E;" + horiz-adv-x="512" d=" M426.6666666666667 341.3333333333334C450.1333333333334 341.3333333333334 469.3333333333333 322.1333333333334 469.3333333333333 298.6666666666667V85.3333333333334C469.3333333333333 61.8666666666667 450.1333333333334 42.6666666666667 426.6666666666667 42.6666666666667H85.3333333333333C61.6533333333333 42.6666666666667 42.6666666666667 61.8666666666667 42.6666666666667 85.3333333333334V298.6666666666667C42.6666666666667 322.3466666666667 61.6533333333333 341.3333333333334 85.3333333333333 341.3333333333334H426.6666666666667M384 85.3333333333334V128H266.6666666666667L224 85.3333333333334H384M128 85.3333333333334H181.3333333333333L327.4666666666667 232.1066666666667C331.7333333333333 236.16 331.7333333333333 242.9866666666667 327.4666666666667 247.2533333333334L289.92 284.8C285.6533333333333 289.0666666666667 278.8266666666667 289.0666666666667 274.7733333333333 284.8L128 138.0266666666667V85.3333333333334z" /> + <glyph glyph-name="transcribe-close" + unicode="&#xF52F;" + horiz-adv-x="512" d=" M256 -42.6666666666666L170.6666666666667 42.6666666666667H341.3333333333333L256 -42.6666666666666M426.6666666666667 384C450.1333333333334 384 469.3333333333333 364.8 469.3333333333333 341.3333333333334V128C469.3333333333333 104.5333333333333 450.1333333333334 85.3333333333334 426.6666666666667 85.3333333333334H85.3333333333333C61.8666666666667 85.3333333333334 42.6666666666667 104.5333333333333 42.6666666666667 128V341.3333333333334C42.6666666666667 364.8 61.8666666666667 384 85.3333333333333 384H426.6666666666667M384 128V170.6666666666667H266.6666666666667L224 128H384M128 128H181.3333333333333L327.4666666666667 274.7733333333333C331.7333333333333 278.8266666666667 331.7333333333333 285.6533333333333 327.4666666666667 289.7066666666667L289.92 327.4666666666667C285.6533333333333 331.7333333333334 278.8266666666667 331.7333333333334 274.7733333333333 327.4666666666667L128 180.6933333333334V128z" /> + <glyph glyph-name="transfer" + unicode="&#xF530;" + horiz-adv-x="512" d=" M64 277.3333333333334H106.6666666666667V106.6666666666667H64V277.3333333333334M149.3333333333333 277.3333333333334H192V106.6666666666667H149.3333333333333V277.3333333333334M234.6666666666667 277.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667V277.3333333333334M320 37.3333333333334V346.6666666666667L474.6666666666666 192L320 37.3333333333334z" /> + <glyph glyph-name="translate" + unicode="&#xF5CA;" + horiz-adv-x="512" d=" M274.56 126.5066666666667L220.3733333333333 180.0533333333334L221.0133333333333 180.6933333333333C258.1333333333333 222.08 284.5866666666666 269.6533333333333 300.1599999999999 320H362.6666666666667V362.6666666666667H213.3333333333333V405.3333333333333H170.6666666666667V362.6666666666667H21.3333333333333V320H259.6266666666667C245.3333333333333 279.04 222.72 240 192 205.8666666666667C172.16 227.84 155.7333333333333 251.9466666666667 142.72 277.3333333333334H100.0533333333333C115.6266666666667 242.5600000000001 136.96 209.7066666666667 163.6266666666667 180.0533333333334L55.04 72.96L85.3333333333333 42.6666666666667L192 149.3333333333334L258.3466666666667 82.9866666666667L274.56 126.5066666666667M394.6666666666667 234.6666666666667H352L256 -21.3333333333333H298.6666666666667L322.56 42.6666666666667H423.8933333333333L448 -21.3333333333333H490.6666666666666L394.6666666666667 234.6666666666667M338.7733333333333 85.3333333333334L373.3333333333333 177.7066666666667L407.8933333333333 85.3333333333334H338.7733333333333z" /> + <glyph glyph-name="tree" + unicode="&#xF531;" + horiz-adv-x="512" d=" M234.6666666666667 0V90.88C224.64 87.2533333333333 213.9733333333333 85.3333333333333 202.6666666666667 85.3333333333333C149.3333333333333 85.3333333333334 106.6666666666667 128 106.6666666666667 181.3333333333334C106.6666666666667 208.4266666666667 117.3333333333333 232.7466666666667 135.68 250.24C130.7733333333333 261.76 128 274.56 128 288C128 341.3333333333334 170.6666666666667 384 224 384C257.28 384 286.72 366.9333333333334 304 341.3333333333334H309.3333333333333C374.1866666666666 341.3333333333334 426.6666666666667 288.8533333333334 426.6666666666667 224S374.1866666666666 106.6666666666667 309.3333333333333 106.6666666666667C298.6666666666667 106.6666666666667 288 108.16 277.3333333333333 111.1466666666667V0H234.6666666666667z" /> + <glyph glyph-name="trello" + unicode="&#xF532;" + horiz-adv-x="512" d=" M85.3333333333333 384H426.6666666666667C438.4 384 448 374.4 448 362.6666666666667V21.3333333333334C448 9.6 438.4 0 426.6666666666667 0H85.3333333333333C73.6 0 64 9.6 64 21.3333333333334V362.6666666666667C64 374.4 73.6 384 85.3333333333333 384M117.3333333333333 341.3333333333334C111.36 341.3333333333334 106.6666666666667 336.64 106.6666666666667 330.6666666666667V74.6666666666667C106.6666666666667 68.6933333333333 111.36 64 117.3333333333333 64H224C229.9733333333333 64 234.6666666666667 68.6933333333333 234.6666666666667 74.6666666666667V330.6666666666667C234.6666666666667 336.64 229.9733333333333 341.3333333333334 224 341.3333333333334H117.3333333333333M288 341.3333333333334C282.0266666666667 341.3333333333334 277.3333333333333 336.64 277.3333333333333 330.6666666666667V202.6666666666667C277.3333333333333 196.6933333333334 282.0266666666667 192 288 192H394.6666666666667C400.64 192 405.3333333333333 196.6933333333334 405.3333333333333 202.6666666666667V330.6666666666667C405.3333333333333 336.64 400.64 341.3333333333334 394.6666666666667 341.3333333333334H288z" /> + <glyph glyph-name="trending-down" + unicode="&#xF533;" + horiz-adv-x="512" d=" M341.3333333333333 64L390.1866666666666 112.8533333333334L286.08 216.96L200.7466666666667 131.6266666666667L42.6666666666667 289.92L72.7466666666667 320L200.7466666666667 192L286.08 277.3333333333334L420.48 143.1466666666667L469.3333333333333 192V64H341.3333333333333z" /> + <glyph glyph-name="trending-neutral" + unicode="&#xF534;" + horiz-adv-x="512" d=" M469.3333333333333 192L384 277.3333333333334V213.3333333333334H64V170.6666666666667H384V106.6666666666667L469.3333333333333 192z" /> + <glyph glyph-name="trending-up" + unicode="&#xF535;" + horiz-adv-x="512" d=" M341.3333333333333 320L390.1866666666666 271.1466666666667L286.08 167.0400000000001L200.7466666666667 252.3733333333334L42.6666666666667 94.08L72.7466666666667 64L200.7466666666667 192L286.08 106.6666666666667L420.48 240.8533333333333L469.3333333333333 192V320H341.3333333333333z" /> + <glyph glyph-name="triangle" + unicode="&#xF536;" + horiz-adv-x="512" d=" M21.3333333333333 0H490.6666666666666L256 405.3333333333333" /> + <glyph glyph-name="triangle-outline" + unicode="&#xF537;" + horiz-adv-x="512" d=" M256 405.3333333333333L21.3333333333333 0H490.6666666666666M256 320L416.64 42.6666666666667H95.36" /> + <glyph glyph-name="trophy" + unicode="&#xF538;" + horiz-adv-x="512" d=" M430.9333333333333 405.3333333333333H384C364.8 405.3333333333333 341.3333333333333 384 341.3333333333333 362.6666666666667H170.6666666666667C170.6666666666667 384 147.2 405.3333333333333 128 405.3333333333333H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H132.2666666666667C140.8 128 168.5333333333333 91.7333333333334 234.6666666666667 85.3333333333334V40.5333333333333C187.7333333333334 36.2666666666667 170.6666666666667 12.8 170.6666666666667 -14.9333333333334V-21.3333333333334H341.3333333333333V-14.9333333333334C341.3333333333333 12.8 324.2666666666667 36.2666666666666 277.3333333333333 40.5333333333333V85.3333333333334C343.4666666666667 91.7333333333334 371.2 128 379.7333333333334 170.6666666666667H426.6666666666667C448 170.6666666666667 469.3333333333333 192 469.3333333333333 213.3333333333334V405.3333333333333H430.9333333333333M85.3333333333333 213.3333333333334V362.6666666666667H128V213.3333333333334H85.3333333333333M426.6666666666667 213.3333333333334H384V362.6666666666667H426.6666666666667V213.3333333333334z" /> + <glyph glyph-name="trophy-award" + unicode="&#xF539;" + horiz-adv-x="512" d=" M324.2666666666667 219.7333333333334L354.1333333333333 106.6666666666667L256 187.7333333333334L157.8666666666667 106.6666666666667L187.7333333333334 217.6L98.1333333333333 292.2666666666667L213.3333333333333 298.6666666666667L256 405.3333333333333L298.6666666666667 298.6666666666667L413.8666666666666 292.2666666666667L324.2666666666667 219.7333333333334M298.6666666666667 40.5333333333333H277.3333333333333V106.6666666666667L256 128L234.6666666666667 106.6666666666667V40.5333333333333H213.3333333333333C189.8666666666667 40.5333333333333 170.6666666666667 21.3333333333334 170.6666666666667 -2.1333333333333V-23.4666666666667H341.3333333333333V-2.1333333333333C341.3333333333333 21.3333333333334 322.1333333333334 40.5333333333333 298.6666666666667 40.5333333333333z" /> + <glyph glyph-name="trophy-outline" + unicode="&#xF53A;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H132.2666666666667C140.8 128 168.5333333333333 91.7333333333334 234.6666666666667 85.3333333333334V40.5333333333333C187.7333333333334 36.2666666666667 170.6666666666667 12.8 170.6666666666667 -14.9333333333334V-21.3333333333334H341.3333333333333V-14.9333333333334C341.3333333333333 12.8 324.2666666666667 36.2666666666666 277.3333333333333 40.5333333333333V85.3333333333334C343.4666666666667 91.7333333333334 371.2 128 379.7333333333334 170.6666666666667H426.6666666666667C448 170.6666666666667 469.3333333333333 192 469.3333333333333 213.3333333333334V405.3333333333333H384C364.8 405.3333333333333 341.3333333333333 384 341.3333333333333 362.6666666666667H170.6666666666667C170.6666666666667 384 147.2 405.3333333333333 128 405.3333333333333H42.6666666666667M85.3333333333333 362.6666666666667H128V213.3333333333334H85.3333333333333V362.6666666666667M384 362.6666666666667H426.6666666666667V213.3333333333334H384V362.6666666666667M170.6666666666667 320H341.3333333333333V202.6666666666667C341.3333333333333 161.4933333333334 328.96 128 256 128C183.2533333333333 128 170.6666666666667 161.4933333333334 170.6666666666667 202.6666666666667V320z" /> + <glyph glyph-name="trophy-variant" + unicode="&#xF53B;" + horiz-adv-x="512" d=" M430.9333333333333 362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333V362.6666666666667H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H153.6C162.1333333333333 130.1333333333333 183.4666666666667 93.8666666666667 234.6666666666667 87.4666666666667V42.6666666666667C170.6666666666667 38.4 170.6666666666667 14.9333333333333 170.6666666666667 -12.8V-21.3333333333333H341.3333333333333V-14.9333333333333C341.3333333333333 12.8000000000001 341.3333333333333 36.2666666666667 277.3333333333333 40.5333333333334V85.3333333333334C330.6666666666667 91.7333333333334 352 128 358.4 168.5333333333334H426.6666666666667C448 168.5333333333334 469.3333333333333 189.8666666666667 469.3333333333333 211.2V362.6666666666667H430.9333333333333M85.3333333333333 213.3333333333334V320H149.3333333333333V213.3333333333334H85.3333333333333M426.6666666666667 213.3333333333334H362.6666666666667V320H426.6666666666667V213.3333333333334z" /> + <glyph glyph-name="trophy-variant-outline" + unicode="&#xF53C;" + horiz-adv-x="512" d=" M149.3333333333333 405.3333333333333V362.6666666666667H42.6666666666667V213.3333333333334C42.6666666666667 192 64 170.6666666666667 85.3333333333333 170.6666666666667H153.6C162.1333333333333 130.1333333333333 183.4666666666667 93.8666666666667 234.6666666666667 87.4666666666667V42.6666666666667C170.6666666666667 38.4 170.6666666666667 14.9333333333333 170.6666666666667 -12.8V-21.3333333333333H341.3333333333333V-14.9333333333333C341.3333333333333 12.8000000000001 341.3333333333333 36.2666666666667 277.3333333333333 40.5333333333334V85.3333333333334C330.6666666666667 91.7333333333334 352 128 358.4 168.5333333333334H426.6666666666667C448 168.5333333333334 469.3333333333333 189.8666666666667 469.3333333333333 211.2V362.6666666666667H362.6666666666667V405.3333333333333H149.3333333333333M192 362.6666666666667H320V192C320 156.5866666666667 291.4133333333333 128 256 128C213.3333333333333 128 192 156.5866666666667 192 192V362.6666666666667M85.3333333333333 320H149.3333333333333V213.3333333333334H85.3333333333333V320M362.6666666666667 320H426.6666666666667V213.3333333333334H362.6666666666667V320z" /> + <glyph glyph-name="truck" + unicode="&#xF53D;" + horiz-adv-x="512" d=" M384 53.3333333333334C366.2933333333334 53.3333333333334 352 67.6266666666667 352 85.3333333333334S366.2933333333334 117.3333333333334 384 117.3333333333334S416 103.04 416 85.3333333333334S401.7066666666666 53.3333333333334 384 53.3333333333334M416 245.3333333333334L457.8133333333333 192H362.6666666666667V245.3333333333334M128 53.3333333333334C110.2933333333333 53.3333333333334 96 67.6266666666667 96 85.3333333333334S110.2933333333333 117.3333333333334 128 117.3333333333334S160 103.04 160 85.3333333333334S145.7066666666667 53.3333333333334 128 53.3333333333334M426.6666666666667 277.3333333333334H362.6666666666667V362.6666666666667H64C40.32 362.6666666666667 21.3333333333333 343.68 21.3333333333333 320V85.3333333333334H64C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334S192 49.92 192 85.3333333333334H320C320 49.92 348.5866666666667 21.3333333333334 384 21.3333333333334S448 49.92 448 85.3333333333334H490.6666666666666V192L426.6666666666667 277.3333333333334z" /> + <glyph glyph-name="truck-delivery" + unicode="&#xF53E;" + horiz-adv-x="512" d=" M64 362.6666666666667C40.5333333333333 362.6666666666667 21.3333333333333 343.4666666666667 21.3333333333333 320V85.3333333333334H64C64 49.92 92.5866666666667 21.3333333333334 128 21.3333333333334S192 49.92 192 85.3333333333334H320C320 49.92 348.5866666666667 21.3333333333334 384 21.3333333333334S448 49.92 448 85.3333333333334H490.6666666666666V192L426.6666666666667 277.3333333333334H362.6666666666667V362.6666666666667M213.3333333333333 320L298.6666666666667 234.6666666666667L213.3333333333333 149.3333333333334V213.3333333333334H85.3333333333333V256H213.3333333333333M362.6666666666667 245.3333333333334H416L458.0266666666666 192H362.6666666666667M128 117.3333333333334C145.7066666666667 117.3333333333334 160 103.04 160 85.3333333333334S145.7066666666667 53.3333333333334 128 53.3333333333334S96 67.6266666666667 96 85.3333333333334S110.2933333333333 117.3333333333334 128 117.3333333333334M384 117.3333333333334C401.7066666666666 117.3333333333334 416 103.04 416 85.3333333333334S401.7066666666666 53.3333333333334 384 53.3333333333334S352 67.6266666666667 352 85.3333333333334S366.2933333333334 117.3333333333334 384 117.3333333333334z" /> + <glyph glyph-name="tshirt-crew" + unicode="&#xF53F;" + horiz-adv-x="512" d=" M341.3333333333333 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334V190.5066666666667L121.6 168.1066666666667C113.28 160 99.84 160 91.52 168.1066666666667L31.1466666666667 228.48C22.8266666666667 236.8 22.8266666666667 250.24 31.1466666666667 258.56L156.5866666666667 384H192C192 360.5333333333334 220.5866666666667 341.3333333333334 256 341.3333333333334S320 360.5333333333334 320 384H355.4133333333333L480.8533333333333 258.5600000000001C489.1733333333333 250.24 489.1733333333333 236.8000000000001 480.8533333333333 228.48L420.48 168.1066666666667C412.16 160 398.7200000000001 160 390.4 168.1066666666667L362.6666666666667 190.5066666666667V21.3333333333334C362.6666666666667 9.6 353.0666666666667 0 341.3333333333333 0M435.6266666666667 243.6266666666667L343.6800000000001 335.36C337.0666666666667 327.8933333333333 329.1733333333334 321.28 320.0000000000001 315.7333333333334C302.0800000000001 305.0666666666667 280.1066666666667 298.6666666666667 256.0000000000001 298.6666666666667C219.7333333333334 298.6666666666667 187.5200000000001 313.1733333333334 168.3200000000001 335.36L76.3733333333334 243.6266666666667L106.6666666666667 213.3333333333334L170.6666666666667 256H192V42.6666666666667H320V256H341.3333333333333L405.3333333333333 213.3333333333334L435.6266666666667 243.6266666666667z" /> + <glyph glyph-name="tshirt-v" + unicode="&#xF540;" + horiz-adv-x="512" d=" M341.3333333333333 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334V190.5066666666667L121.6 168.1066666666667C113.28 160 99.84 160 91.52 168.1066666666667L31.1466666666667 228.48C22.8266666666667 236.8 22.8266666666667 250.24 31.1466666666667 258.56L156.5866666666667 384H192C192 360.5333333333334 213.3333333333333 320 256 293.3333333333334C298.6666666666667 320 320 360.5333333333334 320 384H355.4133333333333L480.8533333333333 258.5600000000001C489.1733333333333 250.24 489.1733333333333 236.8000000000001 480.8533333333333 228.48L420.48 168.1066666666667C412.16 160 398.7200000000001 160 390.4 168.1066666666667L362.6666666666667 190.5066666666667V21.3333333333334C362.6666666666667 9.6 353.0666666666667 0 341.3333333333333 0M435.6266666666667 243.6266666666667L343.6800000000001 335.36C320 298.6666666666667 298.6666666666667 272 256 250.6666666666667C213.3333333333333 272 192 298.6666666666667 168.32 335.36L76.3733333333333 243.6266666666667L106.6666666666667 213.3333333333334L170.6666666666667 256H192V42.6666666666667H320V256H341.3333333333333L405.3333333333333 213.3333333333334L435.6266666666667 243.6266666666667z" /> + <glyph glyph-name="tumblr" + unicode="&#xF541;" + horiz-adv-x="512" d=" M341.3333333333333 213.3333333333334H277.3333333333333V130.1333333333333C277.3333333333333 114.56 280.32 106.6666666666667 300.8 106.6666666666667H341.3333333333333V42.6666666666667S319.36 40.5333333333333 296.5333333333333 40.5333333333333C240 40.5333333333333 213.3333333333333 74.6666666666667 213.3333333333333 113.0666666666667V213.3333333333334H170.6666666666667V273.0666666666667C222.08 277.3333333333334 226.56 316.5866666666667 230.4 341.3333333333334H277.3333333333333V277.3333333333334H341.3333333333333M426.6666666666667 405.3333333333334H85.3333333333333C61.6533333333333 405.3333333333334 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="tumblr-reblog" + unicode="&#xF542;" + horiz-adv-x="512" d=" M80 85.3333333333334L170.6666666666667 176V106.6666666666667H384V202.6666666666667L426.6666666666667 245.3333333333334V106.6666666666667C426.6666666666667 83.2 407.4666666666667 64 384 64H170.6666666666667V-5.3333333333333L80 85.3333333333334M432 298.6666666666667L341.3333333333333 208V277.3333333333334H128V181.3333333333334L85.3333333333333 138.6666666666667V277.3333333333334C85.3333333333333 300.8 104.5333333333333 320 128 320H341.3333333333333V389.3333333333333L432 298.6666666666667z" /> + <glyph glyph-name="tune" + unicode="&#xF62E;" + horiz-adv-x="512" d=" M64 85.3333333333334V42.6666666666667H192V85.3333333333334H64M64 341.3333333333334V298.6666666666667H277.3333333333333V341.3333333333334H64M277.3333333333333 0V42.6666666666667H448V85.3333333333334H277.3333333333333V128H234.6666666666667V0H277.3333333333333M149.3333333333333 256V213.3333333333334H64V170.6666666666667H149.3333333333333V128H192V256H149.3333333333333M448 170.6666666666667V213.3333333333334H234.6666666666667V170.6666666666667H448M320 256H362.6666666666667V298.6666666666667H448V341.3333333333334H362.6666666666667V384H320V256z" /> + <glyph glyph-name="tune-vertical" + unicode="&#xF66A;" + horiz-adv-x="512" d=" M106.6666666666667 384V192H64V149.3333333333334H106.6666666666667V0H149.3333333333333V149.3333333333334H192V192H149.3333333333333V384M234.6666666666667 384V277.3333333333334H192V234.6666666666667H234.6666666666667V0H277.3333333333333V234.6666666666667H320V277.3333333333334H277.3333333333333V384M362.6666666666667 384V149.3333333333334H320V106.6666666666667H362.6666666666667V0H405.3333333333333V106.6666666666667H448V149.3333333333334H405.3333333333333V384" /> + <glyph glyph-name="twitch" + unicode="&#xF543;" + horiz-adv-x="512" d=" M85.3333333333333 405.3333333333333H469.3333333333333V149.3333333333334L362.6666666666667 42.6666666666667H277.3333333333333L213.3333333333333 -21.3333333333333H149.3333333333333V42.6666666666667H42.6666666666667V320L85.3333333333333 405.3333333333333M426.6666666666667 170.6666666666667V362.6666666666667H128V106.6666666666667H192V42.6666666666667L256 106.6666666666667H362.6666666666667L426.6666666666667 170.6666666666667M320 298.6666666666667H362.6666666666667V192H320V298.6666666666667M256 298.6666666666667V192H213.3333333333333V298.6666666666667H256z" /> + <glyph glyph-name="twitter" + unicode="&#xF544;" + horiz-adv-x="512" d=" M479.1466666666666 320C462.72 312.5333333333334 445.0133333333333 307.6266666666667 426.6666666666667 305.2800000000001C445.44 316.5866666666667 459.9466666666666 334.5066666666667 466.7733333333333 356.0533333333334C449.0666666666667 345.3866666666667 429.44 337.92 408.7466666666667 333.6533333333334C391.8933333333333 352 368.2133333333334 362.6666666666667 341.3333333333333 362.6666666666667C291.2 362.6666666666667 250.24 321.7066666666667 250.24 271.1466666666667C250.24 263.8933333333334 251.0933333333333 256.8533333333334 252.5866666666667 250.24C176.64 254.08 109.0133333333333 290.56 64 345.8133333333334C56.1066666666667 332.3733333333334 51.6266666666667 316.5866666666667 51.6266666666667 299.9466666666667C51.6266666666667 268.1600000000001 67.6266666666667 240 92.3733333333333 224C77.2266666666667 224 63.1466666666667 228.2666666666667 50.7733333333333 234.6666666666667V234.0266666666667C50.7733333333333 189.6533333333334 82.3466666666667 152.5333333333334 124.16 144.2133333333334C116.48 142.0800000000001 108.3733333333333 141.0133333333334 100.0533333333333 141.0133333333334C94.2933333333333 141.0133333333334 88.5333333333333 141.6533333333334 82.9866666666667 142.72C94.5066666666667 106.6666666666667 128 79.7866666666668 168.32 79.1466666666667C137.1733333333334 54.4 97.7066666666667 39.8933333333334 54.6133333333333 39.8933333333334C47.36 39.8933333333334 40.1066666666667 40.3200000000001 32.8533333333333 41.1733333333333C73.3866666666667 15.1466666666667 121.6 0 173.2266666666666 0C341.3333333333333 0 433.7066666666666 139.52 433.7066666666666 260.48C433.7066666666666 264.5333333333334 433.7066666666666 268.3733333333334 433.4933333333333 272.4266666666668C451.4133333333332 285.2266666666667 466.7733333333332 301.4400000000001 479.1466666666666 320.0000000000001z" /> + <glyph glyph-name="twitter-box" + unicode="&#xF545;" + horiz-adv-x="512" d=" M377.8133333333334 248.96C376.32 150.4 313.3866666666667 82.9866666666667 219.3066666666667 78.72C180.48 77.0133333333333 152.5333333333334 89.3866666666667 128 104.96C156.5866666666667 100.48 192 111.7866666666666 211.2 128C183.04 130.9866666666667 166.6133333333334 145.28 158.72 168.1066666666667C166.8266666666667 166.8266666666667 175.36 167.2533333333333 183.04 168.7466666666667C157.6533333333333 177.28 139.52 193.0666666666667 138.6666666666667 225.92C145.7066666666667 222.5066666666666 153.1733333333333 219.52 162.9866666666667 218.88C144 229.76 130.1333333333333 269.2266666666667 146.1333333333333 295.2533333333334C174.2933333333333 264.32 208.2133333333333 239.1466666666666 263.8933333333333 235.7333333333333C249.8133333333333 295.4666666666666 328.9599999999999 327.8933333333333 362.0266666666667 288C376.1066666666667 290.56 387.4133333333333 295.68 398.5066666666667 301.6533333333333C394.0266666666667 288 385.28 277.9733333333333 374.6133333333333 270.2933333333333C386.1333333333333 271.7866666666667 396.5866666666667 274.56 405.3333333333333 279.04C400 267.7333333333333 388.0533333333334 257.4933333333333 377.8133333333334 248.9599999999999M426.6666666666667 405.3333333333333H85.3333333333333C61.8666666666667 405.3333333333333 42.6666666666667 386.1333333333334 42.6666666666667 362.6666666666667V21.3333333333334C42.6666666666667 -2.1333333333333 61.8666666666667 -21.3333333333333 85.3333333333333 -21.3333333333333H426.6666666666667C450.1333333333334 -21.3333333333333 469.3333333333333 -2.1333333333333 469.3333333333333 21.3333333333334V362.6666666666667C469.3333333333333 386.3466666666667 450.1333333333334 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="twitter-circle" + unicode="&#xF546;" + horiz-adv-x="512" d=" M377.8133333333334 248.96C388.0533333333334 257.4933333333334 400 267.7333333333334 405.3333333333333 279.04C396.5866666666667 274.56 386.1333333333334 271.7866666666667 374.6133333333333 270.2933333333334C385.28 277.9733333333334 394.0266666666667 288 398.5066666666667 301.6533333333333C387.4133333333333 295.68 376.1066666666667 290.56 362.0266666666667 288C328.9599999999999 327.8933333333333 249.8133333333333 295.4666666666667 263.8933333333333 235.7333333333334C208.2133333333333 239.1466666666667 174.2933333333333 264.3200000000001 146.1333333333333 295.2533333333334C130.1333333333333 269.2266666666667 144 229.7600000000001 162.9866666666667 218.8800000000001C153.1733333333333 219.5200000000001 145.7066666666667 222.5066666666667 138.6666666666667 225.9200000000001C139.52 193.0666666666667 157.6533333333333 177.2800000000001 183.04 168.7466666666667C175.36 167.2533333333334 166.8266666666667 166.8266666666667 158.72 168.1066666666668C166.6133333333334 145.2800000000001 183.04 130.9866666666667 211.2 128.0000000000001C192 111.7866666666668 156.5866666666667 100.4800000000001 128 104.96C152.5333333333333 89.3866666666667 180.48 77.0133333333334 219.3066666666667 78.72C313.3866666666667 82.9866666666667 376.32 150.4 377.8133333333334 248.9600000000001M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="twitter-retweet" + unicode="&#xF547;" + horiz-adv-x="512" d=" M128 325.3333333333334L218.6666666666667 234.6666666666667H149.3333333333333V106.6666666666667H288L330.6666666666667 64H149.3333333333333C125.8666666666667 64 106.6666666666667 83.2 106.6666666666667 106.6666666666667V234.6666666666667H37.3333333333333L128 325.3333333333334M384 58.6666666666667L293.3333333333333 149.3333333333334H362.6666666666667V277.3333333333334H224L181.3333333333333 320H362.6666666666667C386.1333333333334 320 405.3333333333333 300.8 405.3333333333333 277.3333333333334V149.3333333333334H474.6666666666666L384 58.6666666666667z" /> + <glyph glyph-name="ubuntu" + unicode="&#xF548;" + horiz-adv-x="512" d=" M469.3333333333333 192C469.3333333333333 74.24 373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333S469.3333333333333 309.76 469.3333333333333 192M305.92 282.88C318.2933333333333 275.8400000000001 333.8666666666667 280.1066666666667 341.3333333333333 292.2666666666667C347.9466666666666 304.4266666666667 343.8933333333333 320 331.52 327.2533333333334C319.36 334.2933333333334 303.5733333333333 330.6666666666667 296.5333333333333 317.8666666666667C289.4933333333333 305.7066666666667 293.76 289.92 305.92 282.88M253.44 117.3333333333334C242.1333333333334 117.3333333333334 231.4666666666667 119.68 222.08 124.16L204.16 92.16C219.0933333333333 85.3333333333334 235.7333333333333 80.64 253.44 80.64C263.8933333333333 80.64 273.7066666666666 82.1333333333334 283.3066666666666 84.6933333333334C285.0133333333333 95.1466666666667 290.9866666666666 104.5333333333334 300.8 110.08C310.6133333333334 115.84 321.7066666666667 116.2666666666667 331.52 112.6400000000001C350.5066666666667 131.2000000000001 362.6666666666667 156.5866666666667 364.5866666666667 184.96L328.1066666666667 185.3866666666667C324.6933333333333 147.2000000000001 292.6933333333333 117.3333333333334 253.44 117.3333333333334M253.44 266.6666666666668C292.6933333333333 266.6666666666668 324.6933333333333 237.0133333333334 328.1066666666667 198.6133333333334L364.5866666666667 199.2533333333334C362.6666666666667 227.4133333333334 350.5066666666667 252.8000000000001 331.52 271.3600000000001C321.7066666666666 267.7333333333334 310.4 268.3733333333334 300.8 273.9200000000001C290.9866666666666 279.4666666666667 285.0133333333333 289.0666666666667 283.3066666666666 299.3066666666668C273.7066666666667 301.8666666666667 263.8933333333333 303.36 253.44 303.36C235.7333333333333 303.36 219.0933333333333 299.3066666666668 204.16 291.8400000000001L222.08 259.8400000000001C231.4666666666666 264.3200000000001 242.1333333333333 266.6666666666668 253.44 266.6666666666668M178.56 192C178.56 217.3866666666667 191.1466666666667 239.7866666666667 210.3466666666666 253.2266666666667L192 284.8C169.3866666666667 269.6533333333334 152.5333333333333 246.8266666666667 145.7066666666667 219.9466666666667C153.8133333333333 213.3333333333333 158.9333333333333 203.3066666666667 158.9333333333333 192S153.8133333333333 170.6666666666666 145.7066666666667 164.0533333333333C152.5333333333333 137.3866666666667 169.3866666666667 114.3466666666666 192 99.4133333333333L210.3466666666666 130.7733333333333C191.1466666666667 144.2133333333333 178.56 166.6133333333333 178.56 192M305.92 101.1199999999999C293.76 94.0799999999999 289.4933333333334 78.5066666666666 296.5333333333333 66.1333333333332C303.5733333333333 53.9733333333332 319.36 49.7066666666666 331.52 56.7466666666666C343.8933333333333 63.9999999999999 347.9466666666667 79.5733333333332 341.3333333333333 91.7333333333332C333.8666666666667 104.1066666666665 318.2933333333333 108.1599999999999 305.92 101.1199999999999M122.88 217.6C108.8 217.6 97.28 206.08 97.28 192C97.28 177.92 108.8 166.4 122.88 166.4C137.1733333333333 166.4 148.48 177.92 148.48 192C148.48 206.08 137.1733333333333 217.6 122.88 217.6z" /> + <glyph glyph-name="umbraco" + unicode="&#xF549;" + horiz-adv-x="512" d=" M183.4666666666667 264.5333333333334L152.96 269.2266666666667C138.6666666666667 199.0400000000001 137.8133333333333 144.2133333333334 162.3466666666667 117.3333333333334C183.4666666666667 93.6533333333334 253.6533333333334 93.6533333333334 253.6533333333334 93.6533333333334S326.1866666666667 93.6533333333334 347.3066666666667 117.3333333333334C371.84 144.2133333333334 370.7733333333334 199.04 356.6933333333334 269.2266666666667L326.1866666666667 264.5333333333334S352.8533333333334 151.8933333333334 313.3866666666667 134.6133333333334C294.6133333333334 126.5066666666667 253.6533333333334 126.5066666666667 253.6533333333334 126.5066666666667S215.0400000000001 126.5066666666667 196.2666666666668 134.6133333333334C156.8000000000001 151.8933333333334 183.4666666666668 264.5333333333334 183.4666666666668 264.5333333333334M256 384C362.0266666666667 384 448 298.0266666666667 448 192S362.0266666666667 0 256 0S64 85.9733333333334 64 192S149.9733333333333 384 256 384z" /> + <glyph glyph-name="umbrella" + unicode="&#xF54A;" + horiz-adv-x="512" d=" M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334H234.6666666666667V42.6666666666667C234.6666666666667 30.9333333333333 225.0666666666667 21.3333333333334 213.3333333333333 21.3333333333334S192 30.9333333333333 192 42.6666666666667H149.3333333333333C149.3333333333333 7.2533333333333 177.92 -21.3333333333333 213.3333333333333 -21.3333333333333S277.3333333333333 7.2533333333333 277.3333333333333 42.6666666666667V213.3333333333334H448C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="umbrella-outline" + unicode="&#xF54B;" + horiz-adv-x="512" d=" M256 362.6666666666667C321.92 362.6666666666667 380.16 319.1466666666667 398.9333333333333 256H113.0666666666667C131.84 319.36 189.8666666666667 362.6666666666667 256 362.6666666666667M256 405.3333333333333C149.9733333333333 405.3333333333333 64 319.36 64 213.3333333333334H234.6666666666667V42.6666666666667C234.6666666666667 30.9333333333333 225.0666666666667 21.3333333333334 213.3333333333333 21.3333333333334S192 30.9333333333333 192 42.6666666666667H149.3333333333333C149.3333333333333 7.2533333333333 177.92 -21.3333333333333 213.3333333333333 -21.3333333333333S277.3333333333333 7.2533333333333 277.3333333333333 42.6666666666667V213.3333333333334H448C448 319.36 362.0266666666667 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="undo" + unicode="&#xF54C;" + horiz-adv-x="512" d=" M266.6666666666667 277.3333333333334C210.1333333333333 277.3333333333334 158.9333333333333 256 119.4666666666667 221.8666666666667L42.6666666666667 298.6666666666667V106.6666666666667H234.6666666666667L157.44 183.8933333333334C187.0933333333333 208.6400000000001 224.8533333333333 224 266.6666666666667 224C342.1866666666666 224 406.4 174.72 428.8 106.6666666666667L479.36 123.3066666666667C449.7066666666666 212.6933333333334 365.8666666666666 277.3333333333334 266.6666666666667 277.3333333333334z" /> + <glyph glyph-name="undo-variant" + unicode="&#xF54D;" + horiz-adv-x="512" d=" M288 298.6666666666667C364.5866666666667 298.6666666666667 426.6666666666667 236.5866666666667 426.6666666666667 160S364.5866666666667 21.3333333333334 288 21.3333333333334H213.3333333333333V64H288C341.3333333333333 64 384 106.6666666666667 384 160S341.3333333333333 256 288 256H167.04L232.7466666666667 190.0800000000001L202.6666666666667 160L85.3333333333333 277.3333333333334L202.6666666666667 394.6666666666667L232.96 364.5866666666667L167.04 298.6666666666667H288M128 64H170.6666666666667V21.3333333333334H128V64z" /> + <glyph glyph-name="unfold-less" + unicode="&#xF54E;" + horiz-adv-x="512" d=" M353.92 332.5866666666667L323.6266666666667 362.6666666666667L256 295.04L188.3733333333333 362.6666666666667L158.08 332.5866666666667L256 234.6666666666667M158.08 51.4133333333334L188.3733333333333 21.3333333333334L256 88.96L323.6266666666667 21.3333333333334L353.7066666666666 51.4133333333334L256 149.3333333333334L158.08 51.4133333333334z" /> + <glyph glyph-name="unfold-more" + unicode="&#xF54F;" + horiz-adv-x="512" d=" M256 60.3733333333333L188.3733333333333 128L158.2933333333333 97.92L256 0L353.92 97.92L323.6266666666667 128M256 323.6266666666667L323.6266666666667 256L353.7066666666666 286.0800000000001L256 384L158.08 286.0800000000001L188.3733333333333 256L256 323.6266666666667z" /> + <glyph glyph-name="ungroup" + unicode="&#xF550;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H128V384H277.3333333333333V405.3333333333333H362.6666666666667V320H341.3333333333333V256H384V277.3333333333334H469.3333333333333V192H448V64H469.3333333333333V-21.3333333333333H384V0H256V-21.3333333333333H170.6666666666667V64H192V106.6666666666667H128V85.3333333333334H42.6666666666667V170.6666666666667H64V320H42.6666666666667V405.3333333333333M384 192V213.3333333333334H341.3333333333333V170.6666666666667H362.6666666666667V85.3333333333334H277.3333333333333V106.6666666666667H234.6666666666667V64H256V42.6666666666667H384V64H405.3333333333333V192H384M277.3333333333333 320V341.3333333333334H128V320H106.6666666666667V170.6666666666667H128V149.3333333333334H192V192H170.6666666666667V277.3333333333334H256V256H298.6666666666667V320H277.3333333333333M256 192H234.6666666666667V149.3333333333334H277.3333333333333V170.6666666666667H298.6666666666667V213.3333333333334H256V192z" /> + <glyph glyph-name="untappd" + unicode="&#xF551;" + horiz-adv-x="512" d=" M307.4133333333333 362.6666666666667S318.72 354.3466666666667 319.36 347.52C319.36 345.3866666666667 314.24 344.5333333333334 313.1733333333334 342.8266666666667C311.8933333333333 341.3333333333334 313.6 338.1333333333334 312.5333333333334 336.8533333333334C311.2533333333334 335.7866666666667 309.3333333333334 335.7866666666667 307.4133333333334 332.5866666666667C305.7066666666667 329.3866666666667 257.4933333333334 232.7466666666667 250.2400000000001 221.2266666666667C247.2533333333334 212.6933333333334 244.6933333333334 182.1866666666667 242.5600000000001 177.9200000000001C240.2133333333334 173.8666666666667 135.2533333333334 24.7466666666668 131.4133333333334 20.2666666666668C120.9600000000001 7.8933333333334 91.9466666666667 14.9333333333334 69.9733333333334 30.72C49.0666666666667 45.6533333333334 37.1200000000001 70.4 45.0133333333334 81.92C48.4266666666667 86.8266666666667 152.5333333333334 236.3733333333334 155.5200000000001 240C158.7200000000001 243.6266666666667 186.6666666666668 256 193.4933333333334 262.1866666666667C202.0266666666667 272.64 276.48 351.1466666666667 278.8266666666667 353.7066666666667C281.1733333333334 356.2666666666667 280.5333333333334 358.4 281.1733333333334 359.8933333333333C282.0266666666667 361.3866666666667 285.44 360.96 286.5066666666667 362.6666666666667C288 364.16 285.6533333333334 368.8533333333334 288 369.4933333333334C289.92 370.3466666666667 297.8133333333334 369.7066666666667 307.4133333333334 362.6666666666667M231.4666666666667 353.28L250.4533333333334 333.44L218.88 299.9466666666667L201.8133333333333 333.44C200.1066666666667 336.64 197.9733333333334 336.64 196.6933333333333 337.7066666666667C195.6266666666667 338.9866666666667 197.12 341.9733333333334 196.0533333333334 343.68C194.7733333333334 345.3866666666667 189.8666666666667 344.96 189.8666666666667 347.0933333333334C189.8666666666667 349.44 193.0666666666667 356.6933333333334 202.6666666666667 363.52C202.6666666666667 363.52 214.6133333333334 371.2 221.2266666666667 369.4933333333334C223.36 368.8533333333334 222.5066666666667 363.7333333333334 224 362.6666666666667C224.8533333333334 360.5333333333333 228.2666666666667 360.96 228.9066666666667 359.4666666666667C229.76 358.1866666666667 228.9066666666667 355.84 231.4666666666667 353.28M467.6266666666667 82.1333333333333C475.52 68.0533333333333 459.3066666666667 42.6666666666666 437.3333333333333 27.7333333333333C416 13.0133333333333 388.48 9.8133333333333 380.3733333333333 21.3333333333333C376.7466666666666 26.0266666666666 270.2933333333333 174.5066666666666 267.9466666666666 178.7733333333333C265.6 182.8266666666666 262.8266666666666 213.3333333333333 259.8399999999999 222.0799999999999L259.2 222.9333333333332C265.6 234.6666666666666 278.8266666666666 260.9066666666665 292.9066666666667 288.6399999999999C305.0666666666666 276.0533333333333 314.6666666666667 265.3866666666666 317.44 261.9733333333333C324.48 255.9999999999999 352.64 243.6266666666666 355.84 239.9999999999999C358.8266666666667 236.3733333333332 464.64 87.2533333333333 467.6266666666667 82.1333333333332z" /> + <glyph glyph-name="upload" + unicode="&#xF552;" + horiz-adv-x="512" d=" M192 106.6666666666667V234.6666666666667H106.6666666666667L256 384L405.3333333333333 234.6666666666667H320V106.6666666666667H192M106.6666666666667 21.3333333333334V64H405.3333333333333V21.3333333333334H106.6666666666667z" /> + <glyph glyph-name="usb" + unicode="&#xF553;" + horiz-adv-x="512" d=" M320 298.6666666666667V213.3333333333334H341.3333333333333V170.6666666666667H277.3333333333333V341.3333333333334H320L256 426.6666666666667L192 341.3333333333334H234.6666666666667V170.6666666666667H170.6666666666667V214.8266666666667C185.6 222.72 196.2666666666667 237.8666666666667 196.2666666666667 256C196.2666666666667 282.0266666666667 175.1466666666667 302.9333333333334 149.3333333333333 302.9333333333334C123.3066666666667 302.9333333333334 102.4 282.0266666666667 102.4 256C102.4 237.8666666666667 113.0666666666666 222.72 128 214.8266666666667V170.6666666666667C128 147.2000000000001 147.2 128 170.6666666666666 128H234.6666666666667V62.9333333333333C219.52 55.2533333333333 209.0666666666667 39.4666666666666 209.0666666666667 21.3333333333334C209.0666666666667 -4.6933333333333 229.9733333333334 -25.6 256 -25.6C282.0266666666667 -25.6 302.9333333333333 -4.6933333333333 302.9333333333333 21.3333333333334C302.9333333333333 39.4666666666667 292.48 55.2533333333333 277.3333333333333 62.9333333333333V128H341.3333333333333C364.8 128 384 147.2000000000001 384 170.6666666666667V213.3333333333334H405.3333333333333V298.6666666666667H320z" /> + <glyph glyph-name="vector-arrange-above" + unicode="&#xF554;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V149.3333333333334H64V384M384 298.6666666666667V256H426.6666666666667V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384z" /> + <glyph glyph-name="vector-arrange-below" + unicode="&#xF555;" + horiz-adv-x="512" d=" M426.6666666666667 -21.3333333333333C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667M426.6666666666667 21.3333333333334H192V256H426.6666666666667V21.3333333333334M106.6666666666667 106.6666666666667V149.3333333333334H64V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667z" /> + <glyph glyph-name="vector-circle" + unicode="&#xF556;" + horiz-adv-x="512" d=" M192 405.3333333333333V361.3866666666667C143.36 343.04 104.96 304.64 86.4 256H42.6666666666667V128H86.6133333333334C104.96 79.36 143.36 40.7466666666667 192 22.4V-21.3333333333333H320V22.6133333333333C368.64 40.96 407.2533333333334 79.36 425.6 128H469.3333333333333V256H425.3866666666667C407.04 304.64 368.64 343.04 320 361.6V405.3333333333333M234.6666666666667 362.6666666666667H277.3333333333333V320H234.6666666666667M192 314.6666666666667V277.3333333333334H320V314.6666666666667C345.1733333333333 301.6533333333333 365.6533333333333 281.1733333333334 378.6666666666667 256H341.3333333333333V128H378.6666666666667C365.6533333333333 102.8266666666667 345.1733333333333 82.3466666666667 320 69.3333333333334V106.6666666666667H192V69.3333333333334C166.8266666666667 82.3466666666667 146.3466666666666 102.8266666666667 133.3333333333333 128H170.6666666666667V256H133.3333333333333C146.3466666666667 281.1733333333334 166.8266666666667 301.6533333333333 192 314.6666666666667M85.3333333333333 213.3333333333334H128V170.6666666666667H85.3333333333333M384 213.3333333333334H426.6666666666667V170.6666666666667H384M234.6666666666667 64H277.3333333333333V21.3333333333334H234.6666666666667" /> + <glyph glyph-name="vector-circle-variant" + unicode="&#xF557;" + horiz-adv-x="512" d=" M469.3333333333333 256H426.0266666666667C398.9333333333333 332.5866666666667 326.6133333333333 384 245.3333333333333 384C139.3066666666666 384 53.3333333333333 298.0266666666667 53.3333333333333 192C53.3333333333333 85.3333333333334 139.3066666666666 0 245.3333333333333 0C326.6133333333333 0 398.9333333333333 51.2 426.6666666666667 128H469.3333333333333M426.6666666666667 213.3333333333334V170.6666666666667H384V213.3333333333334M380.16 128C355.4133333333333 75.9466666666667 302.9333333333333 42.6666666666667 245.3333333333333 42.6666666666667C162.9866666666667 42.6666666666667 96 109.44 96 192C96 274.3466666666667 162.9866666666667 341.3333333333334 245.3333333333333 341.3333333333334C302.9333333333333 341.3333333333334 355.4133333333333 307.8400000000001 379.9466666666666 256H341.3333333333333V128" /> + <glyph glyph-name="vector-combine" + unicode="&#xF558;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V149.3333333333334H64V384M192 256H298.6666666666667V149.3333333333334H192V256M341.3333333333333 256H426.6666666666667V21.3333333333334H192V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V256z" /> + <glyph glyph-name="vector-curve" + unicode="&#xF559;" + horiz-adv-x="512" d=" M394.6666666666667 405.3333333333333C412.3733333333333 405.3333333333333 426.6666666666667 391.04 426.6666666666667 373.3333333333334S412.3733333333333 341.3333333333334 394.6666666666667 341.3333333333334C389.76 341.3333333333334 385.0666666666667 342.4 380.8 344.5333333333334L302.0800000000001 265.6L309.3333333333334 256C356.0533333333334 282.88 410.88 298.6666666666667 469.3333333333333 298.6666666666667L490.6666666666666 298.0266666666667V255.1466666666667L469.3333333333333 256C414.2933333333334 256 362.6666666666667 240 320 212.48C320 165.7600000000001 282.24 128 235.52 128C208 85.3333333333334 192 33.7066666666667 192 -21.3333333333333L192.8533333333333 -42.6666666666666H149.9733333333333L149.3333333333333 -21.3333333333333C149.3333333333333 37.1200000000001 165.12 91.9466666666667 192 138.6666666666667L182.4 145.92L103.4666666666667 67.2C105.6 62.9333333333333 106.6666666666667 58.24 106.6666666666667 53.3333333333334C106.6666666666667 35.6266666666667 92.3733333333334 21.3333333333334 74.6666666666667 21.3333333333334S42.6666666666667 35.6266666666667 42.6666666666667 53.3333333333334S56.96 85.3333333333334 74.6666666666667 85.3333333333334C79.5733333333333 85.3333333333334 84.2666666666667 84.2666666666667 88.5333333333333 82.1333333333334L167.2533333333333 161.0666666666667C155.9466666666667 175.36 149.3333333333333 193.7066666666667 149.3333333333333 213.3333333333334C149.3333333333333 260.48 187.52 298.6666666666667 234.6666666666667 298.6666666666667C254.2933333333333 298.6666666666667 272.64 292.0533333333334 286.9333333333333 280.7466666666667L365.8666666666666 359.4666666666667C363.7333333333333 363.7333333333334 362.6666666666667 368.4266666666667 362.6666666666667 373.3333333333333C362.6666666666667 391.04 376.9600000000001 405.3333333333333 394.6666666666667 405.3333333333333M234.6666666666667 256C211.2 256 192 236.8 192 213.3333333333334S211.2 170.6666666666667 234.6666666666667 170.6666666666667S277.3333333333333 189.8666666666667 277.3333333333333 213.3333333333334S258.1333333333334 256 234.6666666666667 256z" /> + <glyph glyph-name="vector-difference" + unicode="&#xF55A;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667V149.3333333333334H64V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V213.3333333333334H192V256H234.6666666666667V298.6666666666667H192M277.3333333333333 298.6666666666667V256H298.6666666666667V234.6666666666667H341.3333333333333V298.6666666666667H277.3333333333333M384 298.6666666666667V256H426.6666666666667V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384M298.6666666666667 192V149.3333333333334H256V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V192H298.6666666666667M149.3333333333333 170.6666666666667V106.6666666666667H213.3333333333333V149.3333333333334H192V170.6666666666667H149.3333333333333z" /> + <glyph glyph-name="vector-difference-ab" + unicode="&#xF55B;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V341.3333333333334H64V384H106.6666666666667V426.6666666666667H64M149.3333333333333 426.6666666666667V384H213.3333333333333V426.6666666666667H149.3333333333333M256 426.6666666666667V384H298.6666666666667V341.3333333333334H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H256M21.3333333333333 298.6666666666667V234.6666666666667H64V298.6666666666667H21.3333333333333M298.6666666666667 298.6666666666667V149.3333333333334H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H298.6666666666667M341.3333333333333 256H426.6666666666667V21.3333333333334H192V106.6666666666667H298.6666666666667C322.3466666666667 106.6666666666667 341.3333333333333 125.6533333333334 341.3333333333333 149.3333333333334V256M21.3333333333333 192V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H106.6666666666667V149.3333333333334H64V192H21.3333333333333z" /> + <glyph glyph-name="vector-difference-ba" + unicode="&#xF55C;" + horiz-adv-x="512" d=" M426.6666666666667 -21.3333333333333C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V64H426.6666666666667V21.3333333333334H384V-21.3333333333333H426.6666666666667M341.3333333333333 -21.3333333333333V21.3333333333334H277.3333333333333V-21.3333333333333H341.3333333333333M234.6666666666667 -21.3333333333333V21.3333333333334H192V64H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H234.6666666666667M469.3333333333333 106.6666666666667V170.6666666666667H426.6666666666667V106.6666666666667H469.3333333333333M192 106.6666666666667V256H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H192M149.3333333333333 149.3333333333334H64V384H298.6666666666667V298.6666666666667H192C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V149.3333333333334M469.3333333333333 213.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384V256H426.6666666666667V213.3333333333334H469.3333333333333z" /> + <glyph glyph-name="vector-intersection" + unicode="&#xF55D;" + horiz-adv-x="512" d=" M66.9866666666667 426.6666666666667C41.8133333333333 426.6666666666667 21.3333333333333 406.1866666666667 21.3333333333333 381.0133333333333V341.3333333333334H64V384H106.6666666666667V426.6666666666667H66.9866666666667M149.3333333333333 426.6666666666667V384H213.3333333333333V426.6666666666667H149.3333333333333M256 426.6666666666667V384H298.6666666666667V341.3333333333334H341.3333333333333V381.0133333333333C341.3333333333333 406.1866666666667 320.8533333333333 426.6666666666667 295.68 426.6666666666667H256M21.3333333333333 298.6666666666667V234.6666666666667H64V298.6666666666667H21.3333333333333M192 298.6666666666667C168.32 298.6666666666667 149.3333333333333 279.68 149.3333333333333 256V106.6666666666667H295.68C320.8533333333333 106.6666666666667 341.3333333333333 127.1466666666667 341.3333333333333 152.3200000000001V298.6666666666667H192M384 298.6666666666667V256H426.6666666666667V213.3333333333334H469.3333333333333V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H384M192 256H298.6666666666667V149.3333333333334H192V256M21.3333333333333 192V152.3200000000001C21.3333333333333 127.1466666666667 41.8133333333333 106.6666666666667 66.9866666666667 106.6666666666667H106.6666666666667V149.3333333333334H64V192H21.3333333333333M426.6666666666667 170.6666666666667V106.6666666666667H469.3333333333333V170.6666666666667H426.6666666666667M149.3333333333333 64V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H234.6666666666667V21.3333333333334H192V64H149.3333333333333M426.6666666666667 64V21.3333333333334H384V-21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V64H426.6666666666667M277.3333333333333 21.3333333333334V-21.3333333333333H341.3333333333333V21.3333333333334H277.3333333333333z" /> + <glyph glyph-name="vector-line" + unicode="&#xF55E;" + horiz-adv-x="512" d=" M320 384V286.0800000000001L161.92 128H64V0H192V97.7066666666667L350.2933333333334 256H448V384M362.6666666666667 341.3333333333334H405.3333333333333V298.6666666666667H362.6666666666667M106.6666666666667 85.3333333333334H149.3333333333333V42.6666666666667H106.6666666666667" /> + <glyph glyph-name="vector-point" + unicode="&#xF55F;" + horiz-adv-x="512" d=" M256 21.3333333333334L149.3333333333333 -21.3333333333333L256 213.3333333333334L362.6666666666667 -21.3333333333333L256 21.3333333333334M170.6666666666667 405.3333333333333H341.3333333333333V341.3333333333334H469.3333333333333V298.6666666666667H341.3333333333333V234.6666666666667H170.6666666666667V298.6666666666667H42.6666666666667V341.3333333333334H170.6666666666667V405.3333333333333M213.3333333333333 362.6666666666667V277.3333333333334H298.6666666666667V362.6666666666667H213.3333333333333z" /> + <glyph glyph-name="vector-polygon" + unicode="&#xF560;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333V277.3333333333334H91.3066666666666L118.8266666666667 106.6666666666667H85.3333333333333V-21.3333333333333H213.3333333333333V20.0533333333334L320 20.2666666666668V-21.3333333333333H448V106.6666666666667H408.9600000000001L426.6666666666667 256H469.3333333333333V384H341.3333333333333V308.6933333333334L315.7333333333334 277.3333333333334H204.5866666666667L170.6666666666667 323.8400000000001V405.3333333333333M85.3333333333333 362.6666666666667H128V320H85.3333333333333M384 341.3333333333334H426.6666666666667V298.6666666666667H384M134.6133333333333 277.3333333333334H151.68L192 222.08V149.3333333333334H320V215.2533333333333L353.4933333333334 256H384L366.08 106.6666666666667H320V62.72H213.3333333333333V106.6666666666667H162.1333333333333M234.6666666666667 234.6666666666667H277.3333333333333V192H234.6666666666667M128 64H170.6666666666667V21.3333333333334H128M362.6666666666667 64H405.3333333333333V21.3333333333334H362.6666666666667" /> + <glyph glyph-name="vector-polyline" + unicode="&#xF561;" + horiz-adv-x="512" d=" M341.3333333333333 405.3333333333333V277.3333333333334H364.3733333333333L318.9333333333333 170.6666666666667H304.2133333333333L256 235.3066666666667V341.3333333333334H128V213.3333333333334H147.4133333333333L104.1066666666667 106.6666666666667H42.6666666666667V-21.3333333333333H170.6666666666667V106.6666666666667H150.1866666666667L193.4933333333334 213.3333333333334H219.0933333333333L256 163.84V42.6666666666667H384V170.6666666666667H365.2266666666667L410.6666666666667 277.3333333333334H469.3333333333333V405.3333333333333M384 362.6666666666667H426.6666666666667V320H384M170.6666666666667 298.6666666666667H213.3333333333333V256H170.6666666666667M298.6666666666667 128H341.3333333333333V85.3333333333334H298.6666666666667M85.3333333333333 64H128V21.3333333333334H85.3333333333333" /> + <glyph glyph-name="vector-rectangle" + unicode="&#xF5C6;" + horiz-adv-x="512" d=" M42.6666666666667 362.6666666666667H170.6666666666667V320H341.3333333333333V362.6666666666667H469.3333333333333V234.6666666666667H426.6666666666667V149.3333333333334H469.3333333333333V21.3333333333334H341.3333333333333V64H170.6666666666667V21.3333333333334H42.6666666666667V149.3333333333334H85.3333333333333V234.6666666666667H42.6666666666667V362.6666666666667M341.3333333333333 234.6666666666667V277.3333333333334H170.6666666666667V234.6666666666667H128V149.3333333333334H170.6666666666667V106.6666666666667H341.3333333333333V149.3333333333334H384V234.6666666666667H341.3333333333333M85.3333333333333 320V277.3333333333334H128V320H85.3333333333333M384 320V277.3333333333334H426.6666666666667V320H384M85.3333333333333 106.6666666666667V64H128V106.6666666666667H85.3333333333333M384 106.6666666666667V64H426.6666666666667V106.6666666666667H384z" /> + <glyph glyph-name="vector-selection" + unicode="&#xF562;" + horiz-adv-x="512" d=" M64 426.6666666666667H106.6666666666667V384H64V341.3333333333334H21.3333333333333V384C21.3333333333333 407.4666666666667 40.5333333333333 426.6666666666667 64 426.6666666666667M298.6666666666667 426.6666666666667C322.1333333333334 426.6666666666667 341.3333333333333 407.4666666666667 341.3333333333333 384V341.3333333333334H298.6666666666667V384H256V426.6666666666667H298.6666666666667M426.6666666666667 298.6666666666667C450.1333333333334 298.6666666666667 469.3333333333333 279.4666666666667 469.3333333333333 256V213.3333333333334H426.6666666666667V256H384V298.6666666666667H426.6666666666667M469.3333333333333 21.3333333333334C469.3333333333333 -2.1333333333333 450.1333333333334 -21.3333333333333 426.6666666666667 -21.3333333333333H384V21.3333333333334H426.6666666666667V64H469.3333333333333V21.3333333333334M426.6666666666667 170.6666666666667H469.3333333333333V106.6666666666667H426.6666666666667V170.6666666666667M277.3333333333333 256V298.6666666666667H341.3333333333333V234.6666666666667H298.6666666666667V256H277.3333333333333M277.3333333333333 -21.3333333333333V21.3333333333334H341.3333333333333V-21.3333333333333H277.3333333333333M192 -21.3333333333333C168.5333333333333 -21.3333333333333 149.3333333333333 -2.1333333333333 149.3333333333333 21.3333333333334V64H192V21.3333333333334H234.6666666666667V-21.3333333333333H192M149.3333333333333 106.6666666666667V170.6666666666667H192V149.3333333333334H213.3333333333333V106.6666666666667H149.3333333333333M149.3333333333333 384V426.6666666666667H213.3333333333333V384H149.3333333333333M64 106.6666666666667C40.5333333333333 106.6666666666667 21.3333333333333 125.8666666666667 21.3333333333333 149.3333333333334V192H64V149.3333333333334H106.6666666666667V106.6666666666667H64M21.3333333333333 298.6666666666667H64V234.6666666666667H21.3333333333333V298.6666666666667M192 298.6666666666667H234.6666666666667V256H192V213.3333333333334H149.3333333333333V256C149.3333333333333 279.4666666666667 168.5333333333333 298.6666666666667 192 298.6666666666667M341.3333333333333 149.3333333333334C341.3333333333333 125.8666666666667 322.1333333333334 106.6666666666667 298.6666666666667 106.6666666666667H256V149.3333333333334H298.6666666666667V192H341.3333333333333V149.3333333333334z" /> + <glyph glyph-name="vector-square" + unicode="&#xF001;" + horiz-adv-x="512" d=" M42.6666666666667 405.3333333333333H170.6666666666667V362.6666666666667H341.3333333333333V405.3333333333333H469.3333333333333V277.3333333333334H426.6666666666667V106.6666666666667H469.3333333333333V-21.3333333333333H341.3333333333333V21.3333333333334H170.6666666666667V-21.3333333333333H42.6666666666667V106.6666666666667H85.3333333333333V277.3333333333334H42.6666666666667V405.3333333333333M341.3333333333333 277.3333333333334V320H170.6666666666667V277.3333333333334H128V106.6666666666667H170.6666666666667V64H341.3333333333333V106.6666666666667H384V277.3333333333334H341.3333333333333M85.3333333333333 362.6666666666667V320H128V362.6666666666667H85.3333333333333M384 362.6666666666667V320H426.6666666666667V362.6666666666667H384M85.3333333333333 64V21.3333333333334H128V64H85.3333333333333M384 64V21.3333333333334H426.6666666666667V64H384z" /> + <glyph glyph-name="vector-triangle" + unicode="&#xF563;" + horiz-adv-x="512" d=" M192 384V256H207.5733333333333L123.52 106.6666666666667H42.6666666666667V-21.3333333333333H170.6666666666667V21.3333333333334H341.3333333333333V-21.3333333333333H469.3333333333333V106.6666666666667H388.48L304.4266666666667 256H320V384M234.6666666666667 341.3333333333334H277.3333333333333V298.6666666666667H234.6666666666667M256 255.1466666666667L341.3333333333333 103.4666666666667V64H170.6666666666667V103.4666666666667M85.3333333333333 64H128V21.3333333333334H85.3333333333333M384 64H426.6666666666667V21.3333333333334H384" /> + <glyph glyph-name="vector-union" + unicode="&#xF564;" + horiz-adv-x="512" d=" M64 426.6666666666667C40.32 426.6666666666667 21.3333333333333 407.68 21.3333333333333 384V149.3333333333334C21.3333333333333 125.6533333333334 40.32 106.6666666666667 64 106.6666666666667H149.3333333333333V21.3333333333334C149.3333333333333 -2.3466666666666 168.32 -21.3333333333333 192 -21.3333333333333H426.6666666666667C450.3466666666667 -21.3333333333333 469.3333333333333 -2.3466666666666 469.3333333333333 21.3333333333334V256C469.3333333333333 279.68 450.3466666666667 298.6666666666667 426.6666666666667 298.6666666666667H341.3333333333333V384C341.3333333333333 407.68 322.3466666666667 426.6666666666667 298.6666666666667 426.6666666666667H64M64 384H298.6666666666667V256H426.6666666666667V21.3333333333334H192V149.3333333333334H64V384z" /> + <glyph glyph-name="verified" + unicode="&#xF565;" + horiz-adv-x="512" d=" M213.3333333333333 85.3333333333334L128 170.6666666666667L158.08 200.7466666666667L213.3333333333333 145.7066666666667L353.92 286.2933333333334L384 256M256 426.6666666666667L64 341.3333333333334V213.3333333333334C64 94.9333333333333 145.92 -15.7866666666667 256 -42.6666666666666C366.08 -15.7866666666666 448 94.9333333333333 448 213.3333333333334V341.3333333333334L256 426.6666666666667z" /> + <glyph glyph-name="vibrate" + unicode="&#xF566;" + horiz-adv-x="512" d=" M341.3333333333333 42.6666666666667H170.6666666666667V341.3333333333334H341.3333333333333M352 384H160C142.2933333333333 384 128 369.7066666666667 128 352V32C128 14.2933333333334 142.2933333333333 0 160 0H352C369.7066666666666 0 384 14.2933333333334 384 32V352C384 369.7066666666667 369.7066666666666 384 352 384M405.3333333333333 85.3333333333334H448V298.6666666666667H405.3333333333333M469.3333333333333 256V128H512V256M64 85.3333333333334H106.6666666666667V298.6666666666667H64M0 128H42.6666666666667V256H0V128z" /> + <glyph glyph-name="video" + unicode="&#xF567;" + horiz-adv-x="512" d=" M362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C353.0666666666667 64 362.6666666666667 73.6 362.6666666666667 85.3333333333334V160L448 74.6666666666667V309.3333333333334L362.6666666666667 224z" /> + <glyph glyph-name="video-off" + unicode="&#xF568;" + horiz-adv-x="512" d=" M69.76 405.3333333333333L42.6666666666667 378.24L100.9066666666667 320H85.3333333333333C73.6 320 64 310.4 64 298.6666666666667V85.3333333333334C64 73.6 73.6 64 85.3333333333333 64H341.3333333333333C345.6 64 349.6533333333333 65.7066666666667 352.8533333333333 67.84L420.9066666666667 0L448 27.0933333333334M448 309.3333333333334L362.6666666666667 224V298.6666666666667C362.6666666666667 310.4 353.0666666666667 320 341.3333333333333 320H209.4933333333334L448 81.4933333333333V309.3333333333334z" /> + <glyph glyph-name="video-switch" + unicode="&#xF569;" + horiz-adv-x="512" d=" M277.3333333333333 117.3333333333334V170.6666666666667H149.3333333333333V117.3333333333334L74.6666666666667 192L149.3333333333333 266.6666666666667V213.3333333333334H277.3333333333333V266.6666666666667L352 192M384 245.3333333333334V320C384 331.7333333333334 374.4 341.3333333333334 362.6666666666667 341.3333333333334H64C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V64C42.6666666666667 52.2666666666667 52.2666666666667 42.6666666666667 64 42.6666666666667H362.6666666666667C374.4 42.6666666666667 384 52.2666666666667 384 64V138.6666666666667L469.3333333333333 53.3333333333334V330.6666666666667L384 245.3333333333334z" /> + <glyph glyph-name="view-agenda" + unicode="&#xF56A;" + horiz-adv-x="512" d=" M426.6666666666667 384H64C52.2666666666667 384 42.6666666666667 374.4 42.6666666666667 362.6666666666667V234.6666666666667C42.6666666666667 222.9333333333333 52.2666666666667 213.3333333333334 64 213.3333333333334H426.6666666666667C438.4 213.3333333333334 448 222.9333333333333 448 234.6666666666667V362.6666666666667C448 374.4 438.4 384 426.6666666666667 384M426.6666666666667 170.6666666666667H64C52.2666666666667 170.6666666666667 42.6666666666667 161.0666666666667 42.6666666666667 149.3333333333334V21.3333333333334C42.6666666666667 9.6 52.2666666666667 0 64 0H426.6666666666667C438.4 0 448 9.6 448 21.3333333333334V149.3333333333334C448 161.0666666666667 438.4 170.6666666666667 426.6666666666667 170.6666666666667z" /> + <glyph glyph-name="view-array" + unicode="&#xF56B;" + horiz-adv-x="512" d=" M170.6666666666667 64H362.6666666666667V341.3333333333334H170.6666666666667M384 341.3333333333334V64H448V341.3333333333334M85.3333333333333 64H149.3333333333333V341.3333333333334H85.3333333333333V64z" /> + <glyph glyph-name="view-carousel" + unicode="&#xF56C;" + horiz-adv-x="512" d=" M384 320V85.3333333333334H469.3333333333333V320M42.6666666666667 85.3333333333334H128V320H42.6666666666667M149.3333333333333 42.6666666666667H362.6666666666667V362.6666666666667H149.3333333333333V42.6666666666667z" /> + <glyph glyph-name="view-column" + unicode="&#xF56D;" + horiz-adv-x="512" d=" M341.3333333333333 341.3333333333334V64H448V341.3333333333334M85.3333333333333 64H192V341.3333333333334H85.3333333333333M213.3333333333333 64H320V341.3333333333334H213.3333333333333V64z" /> + <glyph glyph-name="view-dashboard" + unicode="&#xF56E;" + horiz-adv-x="512" d=" M277.3333333333333 384V256H448V384M277.3333333333333 0H448V213.3333333333334H277.3333333333333M64 0H234.6666666666667V128H64M64 170.6666666666667H234.6666666666667V384H64V170.6666666666667z" /> + <glyph glyph-name="view-day" + unicode="&#xF56F;" + horiz-adv-x="512" d=" M42.6666666666667 384V320H448V384M426.6666666666667 277.3333333333334H64C52.2666666666667 277.3333333333334 42.6666666666667 267.7333333333334 42.6666666666667 256V128C42.6666666666667 116.2666666666667 52.2666666666667 106.6666666666667 64 106.6666666666667H426.6666666666667C438.4 106.6666666666667 448 116.2666666666667 448 128V256C448 267.7333333333334 438.4 277.3333333333334 426.6666666666667 277.3333333333334M42.6666666666667 0H448V64H42.6666666666667V0z" /> + <glyph glyph-name="view-grid" + unicode="&#xF570;" + horiz-adv-x="512" d=" M64 213.3333333333334H234.6666666666667V384H64M64 0H234.6666666666667V170.6666666666667H64M277.3333333333333 0H448V170.6666666666667H277.3333333333333M277.3333333333333 384V213.3333333333334H448V384" /> + <glyph glyph-name="view-headline" + unicode="&#xF571;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V298.6666666666667H448V341.3333333333334M85.3333333333333 213.3333333333334H448V256H85.3333333333333M85.3333333333333 42.6666666666667H448V85.3333333333334H85.3333333333333M85.3333333333333 128H448V170.6666666666667H85.3333333333333V128z" /> + <glyph glyph-name="view-list" + unicode="&#xF572;" + horiz-adv-x="512" d=" M192 341.3333333333334V256H448V341.3333333333334M192 42.6666666666667H448V128H192M192 149.3333333333334H448V234.6666666666667H192M85.3333333333333 256H170.6666666666667V341.3333333333334H85.3333333333333M85.3333333333333 42.6666666666667H170.6666666666667V128H85.3333333333333M85.3333333333333 149.3333333333334H170.6666666666667V234.6666666666667H85.3333333333333V149.3333333333334z" /> + <glyph glyph-name="view-module" + unicode="&#xF573;" + horiz-adv-x="512" d=" M341.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M213.3333333333333 213.3333333333334H320V341.3333333333334H213.3333333333333M341.3333333333333 64H448V192H341.3333333333333M213.3333333333333 64H320V192H213.3333333333333M85.3333333333333 64H192V192H85.3333333333333M85.3333333333333 213.3333333333334H192V341.3333333333334H85.3333333333333V213.3333333333334z" /> + <glyph glyph-name="view-quilt" + unicode="&#xF574;" + horiz-adv-x="512" d=" M213.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M341.3333333333333 64H448V192H341.3333333333333M85.3333333333333 64H192V341.3333333333334H85.3333333333333M213.3333333333333 64H320V192H213.3333333333333V64z" /> + <glyph glyph-name="view-stream" + unicode="&#xF575;" + horiz-adv-x="512" d=" M85.3333333333333 341.3333333333334V213.3333333333334H448V341.3333333333334M85.3333333333333 64H448V192H85.3333333333333V64z" /> + <glyph glyph-name="view-week" + unicode="&#xF576;" + horiz-adv-x="512" d=" M277.3333333333333 341.3333333333334H213.3333333333333C201.6 341.3333333333334 192 331.7333333333334 192 320V64C192 52.2666666666667 201.6 42.6666666666667 213.3333333333333 42.6666666666667H277.3333333333333C289.0666666666667 42.6666666666667 298.6666666666667 52.2666666666667 298.6666666666667 64V320C298.6666666666667 331.7333333333334 289.0666666666667 341.3333333333334 277.3333333333333 341.3333333333334M426.6666666666667 341.3333333333334H362.6666666666667C350.9333333333333 341.3333333333334 341.3333333333333 331.7333333333334 341.3333333333333 320V64C341.3333333333333 52.2666666666667 350.9333333333333 42.6666666666667 362.6666666666667 42.6666666666667H426.6666666666667C438.4 42.6666666666667 448 52.2666666666667 448 64V320C448 331.7333333333334 438.4 341.3333333333334 426.6666666666667 341.3333333333334M128 341.3333333333334H64C52.2666666666667 341.3333333333334 42.6666666666667 331.7333333333334 42.6666666666667 320V64C42.6666666666667 52.2666666666667 52.2666666666667 42.6666666666667 64 42.6666666666667H128C139.7333333333333 42.6666666666667 149.3333333333333 52.2666666666667 149.3333333333333 64V320C149.3333333333333 331.7333333333334 139.7333333333333 341.3333333333334 128 341.3333333333334z" /> + <glyph glyph-name="vimeo" + unicode="&#xF577;" + horiz-adv-x="512" d=" M469.3333333333333 289.7066666666667C467.4133333333333 248.1066666666667 438.4 191.1466666666667 382.2933333333334 118.6133333333334C324.2666666666667 42.6666666666667 275.2 5.3333333333334 234.6666666666667 5.3333333333334C210.1333333333333 5.3333333333334 189.0133333333333 28.3733333333333 171.7333333333334 74.6666666666667C160 116.48 149.3333333333334 158.72 137.3866666666667 200.96C124.5866666666667 247.04 110.9333333333333 270.0800000000001 96 270.0800000000001C93.0133333333333 270.0800000000001 81.92 263.2533333333334 62.72 249.8133333333334L42.6666666666667 275.8400000000001C64 294.4 84.48 312.9600000000001 104.96 331.52C133.12 355.84 154.24 368.64 168.1066666666667 369.92C201.3866666666667 373.3333333333333 221.8666666666667 350.2933333333333 229.5466666666667 301.6533333333333C237.8666666666667 248.96 243.6266666666667 216.32 246.8266666666667 203.52C256 160 266.6666666666667 138.6666666666667 278.4 138.6666666666667C287.36 138.6666666666667 300.8 152.3200000000001 318.7200000000001 180.6933333333334C336.64 208.8533333333334 346.24 230.4000000000001 347.5200000000001 245.3333333333334C350.0800000000001 269.6533333333334 340.48 281.8133333333334 318.7200000000001 281.8133333333334C308.48 281.8133333333334 298.0266666666667 279.4666666666667 287.1466666666667 274.7733333333334C308.0533333333334 343.6800000000001 348.1600000000001 377.1733333333334 407.2533333333334 375.2533333333334C451.2 373.9733333333334 471.8933333333334 345.3866666666667 469.3333333333334 289.7066666666667z" /> + <glyph glyph-name="vine" + unicode="&#xF578;" + horiz-adv-x="512" d=" M424.32 193.0666666666667C414.5066666666667 190.72 405.3333333333333 189.8666666666667 396.16 189.8666666666667C347.7333333333334 189.8666666666667 310.4 224 310.4 282.4533333333334C310.4 311.2533333333334 321.7066666666667 326.4000000000001 337.4933333333334 326.4000000000001C352 326.4000000000001 362.6666666666667 312.9600000000001 362.6666666666667 285.6533333333334C362.6666666666667 270.0800000000001 358.1866666666666 253.0133333333334 355.2 242.9866666666667C355.2 242.9866666666667 370.1333333333333 216.96 410.88 224.8533333333334C419.6266666666666 244.0533333333334 424.32 269.0133333333334 424.32 290.9866666666667C424.32 349.8666666666667 394.6666666666667 384 339.4133333333333 384C282.88 384 249.8133333333334 340.48 249.8133333333334 283.3066666666667C249.8133333333334 226.5600000000001 276.2666666666667 177.7066666666667 320 155.52C301.6533333333333 118.8266666666667 278.1866666666666 86.4 253.8666666666667 61.8666666666667C209.4933333333334 115.4133333333333 169.3866666666667 186.88 152.96 326.4H87.68C117.9733333333333 94.0799999999999 207.7866666666667 20.2666666666667 231.68 5.9733333333334C245.3333333333333 -2.1333333333333 256.64 -1.7066666666666 269.0133333333333 5.3333333333334C288 16.2133333333334 346.24 74.6666666666667 378.4533333333333 142.0800000000001C391.8933333333333 142.2933333333334 408.1066666666667 143.7866666666667 424.32 147.4133333333334V193.0666666666667z" /> + <glyph glyph-name="violin" + unicode="&#xF60F;" + horiz-adv-x="512" d=" M234.6666666666667 405.3333333333333C222.9333333333333 405.3333333333333 213.3333333333333 395.7333333333334 213.3333333333333 384V256C213.3333333333333 250.0266666666667 218.0266666666667 245.3333333333334 224 245.3333333333334H256C261.9733333333333 245.3333333333334 266.6666666666667 240.64 266.6666666666667 234.6666666666667S261.9733333333333 224 256 224H224C207.5733333333333 224 192 239.5733333333334 192 256V337.92C155.0933333333333 328.5333333333334 128 295.8933333333333 128 256V224C157.44 224 181.3333333333333 200.1066666666667 181.3333333333333 170.6666666666667S157.44 117.3333333333334 128 117.3333333333334V85.3333333333334C128 26.24 175.5733333333333 -21.3333333333333 234.6666666666667 -21.3333333333333H277.3333333333333C336.4266666666666 -21.3333333333333 384 26.24 384 85.3333333333334V117.3333333333334C354.56 117.3333333333334 330.6666666666667 141.2266666666667 330.6666666666667 170.6666666666667S354.56 224 384 224V256C384 303.36 346.0266666666667 341.3333333333334 298.6666666666667 341.3333333333334V384C298.6666666666667 395.7333333333334 289.0666666666667 405.3333333333333 277.3333333333333 405.3333333333333H234.6666666666667M229.3333333333333 96H282.6666666666667L272 21.3333333333334H240L229.3333333333333 96z" /> + <glyph glyph-name="visualstudio" + unicode="&#xF610;" + horiz-adv-x="512" d=" M362.6666666666667 266.6666666666667L261.3333333333333 185.1733333333334L362.6666666666667 106.6666666666667V266.6666666666667M100.2666666666667 55.4666666666667L42.6666666666667 91.7333333333334V283.7333333333334L106.6666666666667 305.0666666666667L198.4 234.0266666666667L384 405.3333333333333L469.3333333333333 352V21.3333333333334L362.6666666666667 -21.3333333333333L199.2533333333333 135.2533333333333L100.2666666666667 55.4666666666667M106.6666666666667 149.3333333333334L146.3466666666667 186.0266666666667L106.6666666666667 224V149.3333333333334z" /> + <glyph glyph-name="vk" + unicode="&#xF579;" + horiz-adv-x="512" d=" M416.8533333333333 136.5333333333334C449.92 105.8133333333334 456.7466666666667 91.0933333333334 457.8133333333333 89.1733333333334C471.4666666666667 66.5600000000001 442.88 64.8533333333334 442.88 64.8533333333334L387.84 64S375.8933333333333 61.6533333333334 360.5333333333333 72.3200000000001C339.8399999999999 86.4 320 123.3066666666667 305.28 118.4C290.1333333333333 113.4933333333334 290.56 80.4266666666667 290.56 80.4266666666667S290.56 75.7333333333334 287.1466666666667 72.1066666666667C283.3066666666666 68.0533333333333 275.84 69.5466666666666 275.84 69.5466666666666H251.3066666666667S196.9066666666667 64 149.3333333333333 113.7066666666667C97.0666666666667 167.8933333333334 50.9866666666667 274.5600000000001 50.9866666666667 274.5600000000001S48.4266666666667 280.9600000000001 51.2 284.5866666666667C54.4 288 63.36 288 63.36 288H122.24S128 288 131.6266666666666 284.5866666666667C134.8266666666667 282.24 136.7466666666667 277.3333333333334 136.7466666666667 277.3333333333334S146.1333333333333 253.6533333333334 158.9333333333333 231.8933333333334C183.4666666666667 189.4400000000001 194.7733333333333 180.2666666666667 202.6666666666667 184.7466666666667C215.4666666666667 191.36 211.84 244.6933333333334 211.84 244.6933333333334S212.0533333333333 264.1066666666667 205.6533333333333 272.6400000000001C200.7466666666667 279.2533333333334 191.36 281.3866666666667 187.3066666666667 281.8133333333334C183.8933333333334 282.24 189.44 289.92 196.48 293.5466666666667C207.1466666666667 298.6666666666667 225.7066666666667 298.6666666666667 247.8933333333333 298.6666666666667C265.1733333333333 298.6666666666667 270.08 297.3866666666667 276.6933333333333 295.8933333333333C297.1733333333333 290.9866666666667 290.1333333333334 272 290.1333333333334 226.7733333333333C290.1333333333334 212.0533333333334 288 192 298.0266666666667 184.96C302.5066666666667 181.9733333333333 313.6 184.5333333333333 341.3333333333333 231.2533333333333C354.1333333333333 253.44 363.9466666666666 279.68 363.9466666666666 279.68S366.08 284.16 369.28 286.2933333333333C372.6933333333333 288 377.3866666666666 288 377.3866666666666 288H439.2533333333332S458.0266666666665 290.1333333333333 461.0133333333332 281.8133333333333C464.2133333333332 273.0666666666666 453.9733333333332 252.3733333333333 428.5866666666666 218.88C387.1999999999999 163.4133333333333 382.5066666666666 168.5333333333333 416.8533333333333 136.5333333333333z" /> + <glyph glyph-name="vk-box" + unicode="&#xF57A;" + horiz-adv-x="512" d=" M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384M367.7866666666667 148.6933333333334C342.6133333333334 171.9466666666667 346.0266666666667 168.3200000000001 376.32 208.6400000000001C394.6666666666667 233.1733333333334 402.1333333333334 248.1066666666667 399.7866666666667 254.5066666666667C397.4400000000001 260.48 384.0000000000001 258.9866666666668 384.0000000000001 258.9866666666668L338.9866666666668 258.5600000000001S335.5733333333334 259.2000000000001 333.2266666666668 257.7066666666668C330.6666666666668 256.0000000000001 329.1733333333334 252.8000000000001 329.1733333333334 252.8000000000001S321.9200000000001 233.8133333333334 312.5333333333334 217.6000000000001C292.4800000000002 183.6800000000001 284.3733333333335 181.9733333333334 281.1733333333334 183.8933333333334C273.7066666666668 188.8000000000001 275.4133333333334 203.7333333333334 275.4133333333334 214.4000000000001C275.4133333333334 247.2533333333334 280.5333333333334 261.1200000000001 265.8133333333335 264.5333333333334C260.9066666666668 265.8133333333334 257.2800000000001 266.6666666666668 244.6933333333335 266.6666666666668C228.6933333333335 266.6666666666668 215.0400000000001 266.6666666666668 207.3600000000001 262.8266666666667C202.6666666666668 260.2666666666668 198.1866666666668 254.7200000000001 200.7466666666668 254.5066666666667C203.7333333333335 254.0800000000001 210.3466666666668 252.5866666666667 213.9733333333334 247.6800000000001C218.6666666666668 241.4933333333334 218.4533333333334 227.4133333333334 218.4533333333334 227.4133333333334S221.0133333333334 188.5866666666667 212.2666666666668 183.6800000000001C206.0800000000002 180.4800000000001 197.7600000000001 187.3066666666667 180.0533333333335 218.0266666666667C170.6666666666668 233.8133333333334 163.8400000000002 251.3066666666668 163.8400000000002 251.3066666666668L160 256L153.3866666666667 259.2000000000001H110.5066666666667S104.1066666666667 259.2000000000001 101.76 256C99.6266666666667 253.8666666666667 101.5466666666667 249.1733333333334 101.5466666666667 249.1733333333334S135.04 171.52 173.0133333333333 132.2666666666667C207.7866666666666 96 247.2533333333334 100.0533333333333 247.2533333333334 100.0533333333333H265.1733333333333S270.5066666666667 98.9866666666666 273.28 101.7599999999999C275.84 104.5333333333333 275.84 107.9466666666666 275.84 107.9466666666666S275.4133333333333 132.0533333333332 286.5066666666667 135.4666666666666C297.6 138.6666666666666 311.68 112.4266666666666 326.6133333333333 101.9733333333333C337.92 94.2933333333332 346.4533333333333 95.9999999999999 346.4533333333333 95.9999999999999L386.56 96.6399999999999S407.4666666666666 97.9199999999999 397.44 114.3466666666666C396.8 115.6266666666666 391.68 126.5066666666666 367.7866666666667 148.6933333333332z" /> + <glyph glyph-name="vk-circle" + unicode="&#xF57B;" + horiz-adv-x="512" d=" M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333S42.6666666666667 74.24 42.6666666666667 192S138.24 405.3333333333333 256 405.3333333333333M367.7866666666667 148.6933333333334C342.6133333333334 171.9466666666667 346.0266666666667 168.3200000000001 376.32 208.6400000000001C394.6666666666667 233.1733333333334 402.1333333333334 248.1066666666667 399.7866666666667 254.5066666666667C397.4400000000001 260.48 384.0000000000001 258.9866666666668 384.0000000000001 258.9866666666668L338.9866666666668 258.5600000000001S335.5733333333334 259.2000000000001 333.2266666666668 257.7066666666668C330.6666666666668 256.0000000000001 329.1733333333334 252.8000000000001 329.1733333333334 252.8000000000001S321.9200000000001 233.8133333333334 312.5333333333334 217.6000000000001C292.4800000000002 183.6800000000001 284.3733333333335 181.9733333333334 281.1733333333334 183.8933333333334C273.7066666666668 188.8000000000001 275.4133333333334 203.7333333333334 275.4133333333334 214.4000000000001C275.4133333333334 247.2533333333334 280.5333333333334 261.1200000000001 265.8133333333335 264.5333333333334C260.9066666666668 265.8133333333334 257.2800000000001 266.6666666666668 244.6933333333335 266.6666666666668C228.6933333333335 266.6666666666668 215.0400000000001 266.6666666666668 207.3600000000001 262.8266666666667C202.6666666666668 260.2666666666668 198.1866666666668 254.7200000000001 200.7466666666668 254.5066666666667C203.7333333333335 254.0800000000001 210.3466666666668 252.5866666666667 213.9733333333334 247.6800000000001C218.6666666666668 241.4933333333334 218.4533333333334 227.4133333333334 218.4533333333334 227.4133333333334S221.0133333333334 188.5866666666667 212.2666666666668 183.6800000000001C206.0800000000002 180.4800000000001 197.7600000000001 187.3066666666667 180.0533333333335 218.0266666666667C170.6666666666668 233.8133333333334 163.8400000000002 251.3066666666668 163.8400000000002 251.3066666666668L160 256L153.3866666666667 259.2000000000001H110.5066666666667S104.1066666666667 259.2000000000001 101.76 256C99.6266666666667 253.8666666666667 101.5466666666667 249.1733333333334 101.5466666666667 249.1733333333334S135.04 171.52 173.0133333333333 132.2666666666667C207.7866666666666 96 247.2533333333334 100.0533333333333 247.2533333333334 100.0533333333333H265.1733333333333S270.5066666666667 98.9866666666666 273.28 101.7599999999999C275.84 104.5333333333333 275.84 107.9466666666666 275.84 107.9466666666666S275.4133333333333 132.0533333333332 286.5066666666667 135.4666666666666C297.6 138.6666666666666 311.68 112.4266666666666 326.6133333333333 101.9733333333333C337.92 94.2933333333332 346.4533333333333 95.9999999999999 346.4533333333333 95.9999999999999L386.56 96.6399999999999S407.4666666666666 97.9199999999999 397.44 114.3466666666666C396.8 115.6266666666666 391.68 126.5066666666666 367.7866666666667 148.6933333333332z" /> + <glyph glyph-name="vlc" + unicode="&#xF57C;" + horiz-adv-x="512" d=" M256 426.6666666666667C247.04 426.6666666666667 238.72 421.76 234.6666666666667 410.6666666666667L210.7733333333334 343.8933333333333C221.0133333333334 332.8 240.64 330.6666666666667 256 330.6666666666667C271.36 330.6666666666667 290.9866666666667 332.8 301.44 343.8933333333333L277.3333333333333 410.6666666666667C273.4933333333334 421.3333333333333 264.96 426.6666666666667 256 426.6666666666667M180.0533333333333 257.92L149.3333333333333 172.5866666666667C172.16 143.5733333333334 218.88 138.6666666666667 256 138.6666666666667C293.12 138.6666666666667 339.84 143.5733333333334 362.6666666666667 172.5866666666667L331.9466666666667 257.92C314.88 238.2933333333334 282.4533333333333 234.6666666666667 256 234.6666666666667C229.5466666666667 234.6666666666667 197.12 238.2933333333334 180.0533333333333 257.92M116.0533333333333 128C98.56 128 80.2133333333333 114.1333333333333 75.3066666666666 97.28L43.9466666666667 -11.9466666666667C39.2533333333333 -28.8 49.0666666666667 -42.6666666666667 66.7733333333333 -42.6666666666667H445.44C462.9333333333333 -42.6666666666667 472.7466666666667 -28.8000000000001 468.0533333333333 -11.9466666666667L436.6933333333333 97.28C431.7866666666667 114.1333333333333 413.44 128 395.9466666666666 128H378.6666666666667L385.92 107.3066666666666C388.48 100.48 390.1866666666666 91.9466666666667 385.92 85.9733333333333C359.2533333333334 49.0666666666667 301.6533333333333 42.6666666666667 256 42.6666666666667C210.3466666666666 42.6666666666667 152.7466666666667 49.0666666666667 126.08 85.9733333333334C121.8133333333333 91.9466666666667 123.52 100.48 126.08 107.3066666666667L133.3333333333333 128.0000000000001H116.0533333333333z" /> + <glyph glyph-name="voice" + unicode="&#xF5CB;" + horiz-adv-x="512" d=" M192 341.3333333333334C239.1466666666667 341.3333333333334 277.3333333333333 303.1466666666667 277.3333333333333 256S239.1466666666667 170.6666666666667 192 170.6666666666667S106.6666666666667 208.8533333333333 106.6666666666667 256S144.8533333333333 341.3333333333334 192 341.3333333333334M192 128C248.96 128 362.6666666666667 99.4133333333334 362.6666666666667 42.6666666666667V0H21.3333333333333V42.6666666666667C21.3333333333333 99.4133333333334 135.04 128 192 128M357.5466666666666 333.6533333333334C400.64 286.7200000000001 400.64 221.6533333333334 357.5466666666666 178.5600000000001L321.7066666666666 214.6133333333334C339.6266666666666 239.7866666666667 339.6266666666666 272.4266666666667 321.7066666666666 297.6L357.5466666666666 333.6533333333334M428.16 405.3333333333333C512 318.9333333333334 511.36 189.6533333333334 428.16 106.6666666666667L393.3866666666667 141.44C452.48 209.28 452.48 306.1333333333334 393.3866666666667 370.56L428.16 405.3333333333333z" /> + <glyph glyph-name="voicemail" + unicode="&#xF57D;" + horiz-adv-x="512" d=" M394.6666666666667 128C353.4933333333334 128 320 161.4933333333334 320 202.6666666666667S353.4933333333334 277.3333333333334 394.6666666666667 277.3333333333334S469.3333333333333 243.84 469.3333333333333 202.6666666666667S435.84 128 394.6666666666667 128M117.3333333333333 128C76.16 128 42.6666666666667 161.4933333333334 42.6666666666667 202.6666666666667S76.16 277.3333333333334 117.3333333333333 277.3333333333334S192 243.84 192 202.6666666666667S158.5066666666667 128 117.3333333333333 128M394.6666666666667 320C329.8133333333334 320 277.3333333333333 267.52 277.3333333333333 202.6666666666667C277.3333333333333 174.2933333333334 287.36 148.2666666666667 304.2133333333333 128H207.7866666666667C224.64 148.2666666666667 234.6666666666667 174.2933333333334 234.6666666666667 202.6666666666667C234.6666666666667 267.52 182.1866666666667 320 117.3333333333333 320S0 267.52 0 202.6666666666667S52.48 85.3333333333334 117.3333333333333 85.3333333333334H394.6666666666667C459.52 85.3333333333334 512 137.8133333333334 512 202.6666666666667S459.52 320 394.6666666666667 320z" /> + <glyph glyph-name="volume-high" + unicode="&#xF57E;" + horiz-adv-x="512" d=" M298.6666666666667 379.0933333333334V335.1466666666667C360.32 316.8 405.3333333333333 259.6266666666667 405.3333333333333 192S360.32 67.4133333333334 298.6666666666667 49.0666666666667V4.9066666666667C384 24.3200000000001 448 100.6933333333333 448 192C448 283.3066666666667 384 359.68 298.6666666666667 379.0933333333334M352 192C352 229.76 330.6666666666667 262.1866666666667 298.6666666666667 277.9733333333334V106.6666666666667C330.6666666666667 121.8133333333334 352 154.4533333333334 352 192M64 256V128H149.3333333333333L256 21.3333333333334V362.6666666666667L149.3333333333333 256H64z" /> + <glyph glyph-name="volume-low" + unicode="&#xF57F;" + horiz-adv-x="512" d=" M149.3333333333333 256V128H234.6666666666667L341.3333333333333 21.3333333333334V362.6666666666667L234.6666666666667 256H149.3333333333333z" /> + <glyph glyph-name="volume-medium" + unicode="&#xF580;" + horiz-adv-x="512" d=" M106.6666666666667 256V128H192L298.6666666666667 21.3333333333334V362.6666666666667L192 256M394.6666666666667 192C394.6666666666667 229.76 373.3333333333333 262.1866666666667 341.3333333333333 277.9733333333334V106.6666666666667C373.3333333333333 121.8133333333334 394.6666666666667 154.4533333333334 394.6666666666667 192z" /> + <glyph glyph-name="volume-off" + unicode="&#xF581;" + horiz-adv-x="512" d=" M256 362.6666666666667L211.4133333333333 318.0800000000001L256 273.4933333333334M91.0933333333333 384L64 356.9066666666667L164.9066666666667 256H64V128H149.3333333333333L256 21.3333333333334V164.9066666666667L346.6666666666667 74.0266666666666C332.3733333333334 63.1466666666667 316.3733333333334 54.1866666666667 298.6666666666667 49.0666666666666V4.9066666666666C328.1066666666667 11.7333333333333 354.7733333333333 25.1733333333333 377.1733333333333 43.5199999999999L420.9066666666667 0L448 27.0933333333334L256 219.0933333333333M405.3333333333333 192C405.3333333333333 171.9466666666667 401.0666666666667 153.1733333333334 393.8133333333334 135.68L426.0266666666667 103.4666666666666C439.8933333333333 129.92 448 160 448 192C448 283.3066666666667 384 359.68 298.6666666666667 379.0933333333334V335.1466666666667C360.32 316.8 405.3333333333333 259.6266666666667 405.3333333333333 192M352 192C352 229.76 330.6666666666667 262.1866666666667 298.6666666666667 277.9733333333334V230.8266666666667L350.9333333333333 178.5600000000001C352 182.8266666666667 352 187.5200000000001 352 192.0000000000001z" /> + <glyph glyph-name="vpn" + unicode="&#xF582;" + horiz-adv-x="512" d=" M192 341.3333333333334H320L256 277.3333333333334L192 341.3333333333334M224 135.2533333333333C217.6 128 213.3333333333333 117.3333333333334 213.3333333333333 106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64S298.6666666666667 83.2 298.6666666666667 106.6666666666667C298.6666666666667 118.4 293.9733333333333 129.0666666666667 286.08 136.7466666666667L316.3733333333334 167.04C331.7333333333334 151.4666666666667 341.3333333333333 130.1333333333333 341.3333333333333 106.6666666666667C341.3333333333333 59.52 303.1466666666667 21.3333333333334 256 21.3333333333334S170.6666666666667 59.52 170.6666666666667 106.6666666666667C170.6666666666667 129.4933333333334 179.6266666666667 150.1866666666667 194.1333333333333 165.3333333333334L193.92 165.5466666666667L344.9600000000001 316.3733333333334C360.32 331.7333333333334 381.6533333333333 341.3333333333334 405.3333333333333 341.3333333333334C452.48 341.3333333333334 490.6666666666666 303.1466666666667 490.6666666666666 256S452.48 170.6666666666667 405.3333333333333 170.6666666666667C381.8666666666666 170.6666666666667 360.5333333333333 180.2666666666667 344.9600000000001 195.6266666666667L375.2533333333334 225.92C382.9333333333334 218.0266666666667 393.6 213.3333333333334 405.3333333333334 213.3333333333334C428.8000000000001 213.3333333333334 448.0000000000001 232.5333333333334 448.0000000000001 256S428.8000000000001 298.6666666666667 405.3333333333334 298.6666666666667C393.6 298.6666666666667 382.9333333333334 293.9733333333334 375.2533333333334 286.0800000000001L224.0000000000001 135.2533333333333M136.7466666666667 286.0800000000001C129.0666666666667 293.9733333333334 118.4 298.6666666666667 106.6666666666667 298.6666666666667C83.2 298.6666666666667 64 279.4666666666667 64 256S83.2 213.3333333333334 106.6666666666667 213.3333333333334C118.4 213.3333333333334 129.0666666666667 218.0266666666667 136.7466666666667 225.92L167.04 195.6266666666667C151.4666666666667 180.2666666666667 130.1333333333333 170.6666666666667 106.6666666666667 170.6666666666667C59.52 170.6666666666667 21.3333333333333 208.8533333333333 21.3333333333333 256S59.52 341.3333333333334 106.6666666666667 341.3333333333334C130.3466666666667 341.3333333333334 151.68 331.7333333333334 167.04 316.3733333333334L225.92 257.4933333333334L195.6266666666667 227.2L136.7466666666667 286.0800000000001z" /> + <glyph glyph-name="walk" + unicode="&#xF583;" + horiz-adv-x="512" d=" M301.2266666666667 234.6666666666667H405.3333333333333V273.0666666666667H328.1066666666667L285.44 344.1066666666667C279.04 354.7733333333334 267.52 362.0266666666667 254.2933333333333 362.0266666666667C250.4533333333333 362.0266666666667 247.04 361.3866666666667 243.6266666666666 360.3200000000001L128 324.2666666666667V213.3333333333334H166.4V291.6266666666667L211.4133333333333 305.7066666666667L128 -21.3333333333333H166.4L227.6266666666667 151.68L277.3333333333333 85.3333333333334V-21.3333333333333H315.7333333333334V115.4133333333334L262.6133333333334 212.2666666666667L278.1866666666667 273.4933333333334M298.6666666666667 366.9333333333334C320 366.9333333333334 337.0666666666667 384 337.0666666666667 405.3333333333334S320 443.7333333333334 298.6666666666667 443.7333333333334S260.2666666666667 426.6666666666667 260.2666666666667 405.3333333333333S277.3333333333333 366.9333333333334 298.6666666666667 366.9333333333334z" /> + <glyph glyph-name="wallet" + unicode="&#xF584;" + horiz-adv-x="512" d=" M448 64V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C82.9866666666667 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V320H256C232.32 320 213.3333333333333 300.8 213.3333333333333 277.3333333333334V106.6666666666667C213.3333333333333 83.2 232.5333333333334 64 256 64M256 106.6666666666667H469.3333333333333V277.3333333333334H256M341.3333333333333 160C323.6266666666667 160 309.3333333333333 174.2933333333334 309.3333333333333 192S323.6266666666667 224 341.3333333333333 224S373.3333333333333 209.7066666666667 373.3333333333333 192S359.04 160 341.3333333333333 160z" /> + <glyph glyph-name="wallet-giftcard" + unicode="&#xF585;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V277.3333333333334H193.7066666666667L149.3333333333333 216.96L183.8933333333333 192L234.6666666666667 261.12L256 290.1333333333334L277.3333333333333 261.12L328.1066666666667 192L362.6666666666667 216.96L318.2933333333333 277.3333333333334H426.6666666666667M426.6666666666667 42.6666666666667H85.3333333333333V85.3333333333334H426.6666666666667M192 362.6666666666667C203.7333333333334 362.6666666666667 213.3333333333333 353.0666666666667 213.3333333333333 341.3333333333334S203.7333333333334 320 192 320S170.6666666666667 329.6 170.6666666666667 341.3333333333334S180.2666666666667 362.6666666666667 192 362.6666666666667M320 362.6666666666667C331.7333333333334 362.6666666666667 341.3333333333333 353.0666666666667 341.3333333333333 341.3333333333334S331.7333333333334 320 320 320S298.6666666666667 329.6 298.6666666666667 341.3333333333334S308.2666666666667 362.6666666666667 320 362.6666666666667M426.6666666666667 320H380.16C382.5066666666667 326.6133333333334 384 333.8666666666667 384 341.3333333333334C384 376.7466666666667 355.4133333333333 405.3333333333333 320 405.3333333333333C297.6 405.3333333333333 278.1866666666666 393.8133333333334 266.6666666666667 376.5333333333333L256 362.6666666666667L245.3333333333333 376.7466666666667C233.8133333333334 393.8133333333334 214.4 405.3333333333333 192 405.3333333333333C156.5866666666667 405.3333333333333 128 376.7466666666667 128 341.3333333333334C128 333.8666666666667 129.4933333333334 326.6133333333334 131.84 320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="wallet-membership" + unicode="&#xF586;" + horiz-adv-x="512" d=" M426.6666666666667 234.6666666666667H85.3333333333333V362.6666666666667H426.6666666666667M426.6666666666667 128H85.3333333333333V170.6666666666667H426.6666666666667M426.6666666666667 405.3333333333333H85.3333333333333C61.6533333333333 405.3333333333333 42.6666666666667 386.3466666666667 42.6666666666667 362.6666666666667V128C42.6666666666667 104.3200000000001 61.6533333333333 85.3333333333334 85.3333333333333 85.3333333333334H170.6666666666667V-21.3333333333333L256 21.3333333333334L341.3333333333333 -21.3333333333333V85.3333333333334H426.6666666666667C450.3466666666667 85.3333333333334 469.3333333333333 104.3200000000001 469.3333333333333 128V362.6666666666667C469.3333333333333 386.3466666666667 450.3466666666667 405.3333333333333 426.6666666666667 405.3333333333333z" /> + <glyph glyph-name="wallet-travel" + unicode="&#xF587;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V277.3333333333334H149.3333333333333V234.6666666666667H192V277.3333333333334H320V234.6666666666667H362.6666666666667V277.3333333333334H426.6666666666667M426.6666666666667 42.6666666666667H85.3333333333333V85.3333333333334H426.6666666666667M192 362.6666666666667H320V320H192M426.6666666666667 320H362.6666666666667V362.6666666666667C362.6666666666667 386.3466666666667 343.68 405.3333333333333 320 405.3333333333333H192C168.32 405.3333333333333 149.3333333333333 386.3466666666667 149.3333333333333 362.6666666666667V320H85.3333333333333C61.6533333333333 320 42.6666666666667 301.0133333333333 42.6666666666667 277.3333333333334V42.6666666666667C42.6666666666667 18.9866666666667 61.6533333333333 0 85.3333333333333 0H426.6666666666667C450.3466666666667 0 469.3333333333333 18.9866666666667 469.3333333333333 42.6666666666667V277.3333333333334C469.3333333333333 301.0133333333333 450.3466666666667 320 426.6666666666667 320z" /> + <glyph glyph-name="wan" + unicode="&#xF588;" + horiz-adv-x="512" d=" M256 405.3333333333333C161.7066666666667 405.3333333333333 85.3333333333333 328.9600000000001 85.3333333333333 234.6666666666667C85.3333333333333 148.6933333333333 149.3333333333333 76.3733333333333 234.6666666666667 65.4933333333333V42.6666666666667H213.3333333333333C201.6 42.6666666666667 192 33.0666666666667 192 21.3333333333334H42.6666666666667V-21.3333333333333H192C192 -33.0666666666667 201.6 -42.6666666666666 213.3333333333333 -42.6666666666666H298.6666666666667C310.4 -42.6666666666666 320 -33.0666666666667 320 -21.3333333333333H469.3333333333333V21.3333333333334H320C320 33.0666666666667 310.4 42.6666666666667 298.6666666666667 42.6666666666667H277.3333333333333V65.4933333333333C362.6666666666667 76.16 426.6666666666667 148.6933333333334 426.6666666666667 234.6666666666667C426.6666666666667 328.9600000000001 350.2933333333334 405.3333333333333 256 405.3333333333333M256 362.6666666666667S271.7866666666667 335.36 282.88 298.6666666666667H229.12C240.2133333333333 335.36 256 362.6666666666667 256 362.6666666666667M208.4266666666667 353.4933333333334C202.6666666666667 342.8266666666667 193.92 323.4133333333334 186.4533333333333 298.6666666666667H145.28C160 323.4133333333334 181.3333333333333 342.8266666666667 208.4266666666667 353.4933333333334M303.5733333333333 353.2800000000001C330.6666666666667 342.6133333333334 352 323.4133333333334 366.7200000000001 298.6666666666667H325.5466666666667C318.0800000000001 323.4133333333334 309.3333333333334 342.8266666666667 303.5733333333334 353.2800000000001M129.92 256H177.4933333333334C176.64 248.96 176 241.92 176 234.6666666666667C176 227.4133333333334 176.64 220.3733333333333 177.4933333333334 213.3333333333334H129.92C128.64 220.3733333333333 128 227.4133333333334 128 234.6666666666667C128 241.92 128.64 248.96 129.92 256M220.16 256H291.84C292.6933333333333 248.96 293.3333333333333 241.92 293.3333333333333 234.6666666666667C293.3333333333333 227.4133333333334 292.6933333333334 220.3733333333333 291.84 213.3333333333334H220.16C219.3066666666667 220.3733333333333 218.6666666666667 227.4133333333334 218.6666666666667 234.6666666666667C218.6666666666667 241.92 219.3066666666667 248.96 220.16 256M334.5066666666667 256H382.08C383.36 248.96 384 241.92 384 234.6666666666667C384 227.4133333333334 383.36 220.3733333333333 382.08 213.3333333333334H334.5066666666667C335.36 220.3733333333333 336 227.4133333333334 336 234.6666666666667C336 241.92 335.36 248.96 334.5066666666667 256M145.28 170.6666666666667H186.4533333333333C193.92 145.92 202.6666666666667 126.5066666666667 208.4266666666667 116.0533333333334C181.3333333333333 126.72 160 145.92 145.28 170.6666666666667M229.12 170.6666666666667H282.88C271.7866666666667 133.9733333333334 256 106.6666666666667 256 106.6666666666667S240.2133333333333 133.9733333333334 229.12 170.6666666666667M325.5466666666666 170.6666666666667H366.7200000000001C352 145.92 330.6666666666667 126.5066666666667 303.5733333333333 115.84C309.3333333333333 126.5066666666667 318.08 145.92 325.5466666666666 170.6666666666667z" /> + <glyph glyph-name="watch" + unicode="&#xF589;" + horiz-adv-x="512" d=" M128 192C128 262.6133333333334 185.3866666666667 320 256 320S384 262.6133333333334 384 192S326.6133333333334 64 256 64S128 121.3866666666667 128 192M426.6666666666667 192C426.6666666666667 246.4000000000001 401.28 294.6133333333334 361.6 325.76L341.3333333333333 448H170.6666666666667L150.4 325.76C110.72 294.6133333333334 85.3333333333333 246.4000000000001 85.3333333333333 192C85.3333333333333 137.8133333333334 110.72 89.3866666666667 150.4 58.24L170.6666666666667 -64H341.3333333333333L361.6 58.24C401.28 89.3866666666667 426.6666666666667 137.8133333333334 426.6666666666667 192z" /> + <glyph glyph-name="watch-export" + unicode="&#xF58A;" + horiz-adv-x="512" d=" M298.6666666666667 213.3333333333334H405.3333333333333L352 266.6666666666667L382.2933333333334 296.9600000000001L487.2533333333333 192L382.2933333333334 87.04L352 117.3333333333333L405.3333333333333 170.6666666666667H298.6666666666667V213.3333333333334M256 64C185.3866666666667 64 128 121.3866666666667 128 192S185.3866666666667 320 256 320C285.8666666666667 320 313.3866666666667 309.3333333333334 335.1466666666667 292.48L365.4400000000001 322.7733333333333L361.6 325.76L341.3333333333333 448H170.6666666666667L150.4 325.76C110.72 294.6133333333334 85.3333333333333 246.1866666666667 85.3333333333333 192C85.3333333333333 137.6 110.72 89.3866666666667 150.4 58.24L170.6666666666667 -64H341.3333333333333L361.6 58.24L365.44 61.2266666666667L335.1466666666667 91.52C313.3866666666667 74.6666666666667 285.8666666666667 64 256 64z" /> + <glyph glyph-name="watch-import" + unicode="&#xF58B;" + horiz-adv-x="512" d=" M42.6666666666667 213.3333333333334H149.3333333333333L96 266.6666666666667L126.2933333333333 296.9600000000001L231.2533333333334 192L126.2933333333333 87.04L96 117.3333333333334L149.3333333333333 170.6666666666667H42.6666666666667V213.3333333333334M256 64C326.6133333333334 64 384 121.3866666666667 384 192S326.6133333333334 320 256 320C226.1333333333334 320 198.6133333333334 309.3333333333334 176.8533333333333 292.48L146.56 322.7733333333333L150.4 325.76L170.6666666666667 448H341.3333333333333L361.6 325.76C401.28 294.6133333333334 426.6666666666667 246.4000000000001 426.6666666666667 192C426.6666666666667 137.8133333333334 401.28 89.3866666666667 361.6 58.24L341.3333333333333 -64H170.6666666666667L150.4 58.24L146.56 61.2266666666667L176.8533333333333 91.52C198.6133333333334 74.6666666666667 226.1333333333334 64 256 64z" /> + <glyph glyph-name="water" + unicode="&#xF58C;" + horiz-adv-x="512" d=" M256 21.3333333333334C185.3866666666667 21.3333333333334 128 78.72 128 149.3333333333334C128 234.6666666666667 256 378.6666666666667 256 378.6666666666667S384 234.6666666666667 384 149.3333333333334C384 78.72 326.6133333333334 21.3333333333334 256 21.3333333333334z" /> + <glyph glyph-name="water-off" + unicode="&#xF58D;" + horiz-adv-x="512" d=" M365.2266666666667 82.7733333333333L266.6666666666667 181.3333333333334L112.4266666666667 335.5733333333334L85.3333333333333 308.2666666666667L156.16 237.4400000000001C139.7333333333333 206.5066666666667 128 175.1466666666667 128 149.3333333333334C128 78.72 185.3866666666667 21.3333333333334 256 21.3333333333334C288 21.3333333333334 317.8666666666667 33.4933333333333 340.48 53.3333333333334L396.5866666666667 -2.7733333333333L423.68 24.3200000000001L365.2266666666666 82.7733333333334M384 149.3333333333334C384 234.6666666666667 256 379.7333333333334 256 379.7333333333334S227.6266666666667 347.5200000000001 197.76 304.6400000000001L381.0133333333333 121.3866666666667C382.9333333333333 130.3466666666667 384 139.7333333333334 384 149.3333333333334z" /> + <glyph glyph-name="water-percent" + unicode="&#xF58E;" + horiz-adv-x="512" d=" M256 378.6666666666667S128 234.6666666666667 128 149.3333333333334C128 78.5066666666667 185.3866666666667 21.3333333333334 256 21.3333333333334S384 78.72 384 149.3333333333334C384 234.6666666666667 256 378.6666666666667 256 378.6666666666667M308.6933333333334 235.3066666666667L331.3066666666667 212.6933333333334L203.3066666666667 84.6933333333333L180.6933333333333 107.3066666666667M208 234.6666666666667C222.72 234.6666666666667 234.6666666666667 222.72 234.6666666666667 208S222.72 181.3333333333334 208 181.3333333333334S181.3333333333333 193.28 181.3333333333333 208S193.28 234.6666666666667 208 234.6666666666667M304 138.6666666666667C318.72 138.6666666666667 330.6666666666667 126.72 330.6666666666667 112S318.72 85.3333333333334 304 85.3333333333334S277.3333333333333 97.28 277.3333333333333 112S289.28 138.6666666666667 304 138.6666666666667z" /> + <glyph glyph-name="water-pump" + unicode="&#xF58F;" + horiz-adv-x="512" d=" M405.3333333333333 138.6666666666667S448 92.3733333333333 448 64C448 40.5333333333333 428.8 21.3333333333334 405.3333333333333 21.3333333333334S362.6666666666667 40.5333333333333 362.6666666666667 64C362.6666666666667 92.3733333333333 405.3333333333333 138.6666666666667 405.3333333333333 138.6666666666667M106.6666666666667 64V256C83.2 256 64 275.2000000000001 64 298.6666666666667S83.2 341.3333333333334 106.6666666666667 341.3333333333334V362.6666666666667C106.6666666666667 386.1333333333334 125.8666666666667 405.3333333333333 149.3333333333333 405.3333333333333H192C215.4666666666667 405.3333333333333 234.6666666666667 386.1333333333334 234.6666666666667 362.6666666666667V341.3333333333334H405.3333333333333C428.8 341.3333333333334 448 322.1333333333334 448 298.6666666666667V213.3333333333334C459.7333333333333 213.3333333333334 469.3333333333333 203.7333333333334 469.3333333333333 192S459.7333333333333 170.6666666666667 448 170.6666666666667H362.6666666666667C350.9333333333333 170.6666666666667 341.3333333333333 180.2666666666667 341.3333333333333 192S350.9333333333333 213.3333333333334 362.6666666666667 213.3333333333334V256H234.6666666666667V64H256C279.4666666666667 64 298.6666666666667 44.8000000000001 298.6666666666667 21.3333333333334V-21.3333333333333H42.6666666666667V21.3333333333334C42.6666666666667 44.8000000000001 61.8666666666667 64 85.3333333333333 64H106.6666666666667z" /> + <glyph glyph-name="watermark" + unicode="&#xF612;" + horiz-adv-x="512" d=" M448 384H64C40.5333333333333 384 21.3333333333333 364.8 21.3333333333333 341.3333333333334V42.6666666666667C21.3333333333333 19.2 40.5333333333333 0 64 0H448C471.4666666666667 0 490.6666666666666 19.2 490.6666666666666 42.6666666666667V341.3333333333334C490.6666666666666 364.8 471.4666666666667 384 448 384M448 42.6666666666667H256V170.6666666666667H448V42.6666666666667z" /> + <glyph glyph-name="weather-cloudy" + unicode="&#xF590;" + horiz-adv-x="512" d=" M128 42.6666666666667C69.12 42.6666666666667 21.3333333333333 90.4533333333334 21.3333333333333 149.3333333333334S69.12 256 128 256C149.3333333333333 306.1333333333334 198.4 341.3333333333334 256 341.3333333333334C329.1733333333333 341.3333333333334 389.12 284.5866666666667 394.6666666666667 212.6933333333333L405.3333333333333 213.3333333333334C452.48 213.3333333333334 490.6666666666666 175.1466666666667 490.6666666666666 128S452.48 42.6666666666667 405.3333333333333 42.6666666666667H128M405.3333333333333 170.6666666666667H362.6666666666667V192C362.6666666666667 250.88 314.88 298.6666666666667 256 298.6666666666667C202.6666666666667 298.6666666666667 158.9333333333333 259.8400000000001 150.6133333333333 209.28C143.5733333333333 211.84 135.8933333333333 213.3333333333334 128 213.3333333333334C92.5866666666667 213.3333333333334 64 184.7466666666667 64 149.3333333333334S92.5866666666667 85.3333333333334 128 85.3333333333334H405.3333333333333C428.8 85.3333333333334 448 104.5333333333333 448 128S428.8 170.6666666666667 405.3333333333333 170.6666666666667z" /> + <glyph glyph-name="weather-fog" + unicode="&#xF591;" + horiz-adv-x="512" d=" M64 128H277.3333333333333C289.0666666666667 128 298.6666666666667 118.4 298.6666666666667 106.6666666666667S289.0666666666667 85.3333333333334 277.3333333333333 85.3333333333334H64C52.2666666666667 85.3333333333334 42.6666666666667 94.9333333333333 42.6666666666667 106.6666666666667S52.2666666666667 128 64 128M341.3333333333333 128H448C459.7333333333333 128 469.3333333333333 118.4 469.3333333333333 106.6666666666667S459.7333333333333 85.3333333333334 448 85.3333333333334H341.3333333333333C329.6 85.3333333333334 320 94.9333333333333 320 106.6666666666667S329.6 128 341.3333333333333 128M21.3333333333333 192C21.3333333333333 250.88 69.12 298.6666666666667 128 298.6666666666667C149.3333333333333 348.8 198.4 384 256 384C329.1733333333333 384 389.12 327.2533333333334 394.6666666666667 255.36L405.3333333333333 256C452.0533333333333 256 490.0266666666666 218.4533333333334 490.6666666666666 170.6666666666667H448C448 194.1333333333333 428.8 213.3333333333334 405.3333333333333 213.3333333333334H362.6666666666667V234.6666666666667C362.6666666666667 293.5466666666667 314.88 341.3333333333334 256 341.3333333333334C202.6666666666667 341.3333333333334 158.9333333333333 302.5066666666667 150.6133333333333 251.9466666666667C143.5733333333333 254.5066666666667 135.8933333333333 256 128 256C92.5866666666667 256 64 227.4133333333334 64 192C64 184.5333333333334 65.28 177.28 67.6266666666667 170.6666666666667H23.4666666666667L21.3333333333333 192M64 42.6666666666667H106.6666666666667C118.4 42.6666666666667 128 33.0666666666667 128 21.3333333333334S118.4 0 106.6666666666667 0H64C52.2666666666667 0 42.6666666666667 9.6 42.6666666666667 21.3333333333334S52.2666666666667 42.6666666666667 64 42.6666666666667M170.6666666666667 42.6666666666667H448C459.7333333333333 42.6666666666667 469.3333333333333 33.0666666666667 469.3333333333333 21.3333333333334S459.7333333333333 0 448 0H170.6666666666667C158.9333333333333 0 149.3333333333333 9.6 149.3333333333333 21.3333333333334S158.9333333333333 42.6666666666667 170.6666666666667 42.6666666666667z" /> + <glyph glyph-name="weather-hail" + unicode="&#xF592;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M213.3333333333333 64C236.8 64 256 44.8000000000001 256 21.3333333333334S236.8 -21.3333333333333 213.3333333333333 -21.3333333333333S170.6666666666667 -2.1333333333333 170.6666666666667 21.3333333333334S189.8666666666667 64 213.3333333333333 64M309.3333333333333 106.6666666666667C327.04 106.6666666666667 341.3333333333333 92.3733333333333 341.3333333333333 74.6666666666667S327.04 42.6666666666667 309.3333333333333 42.6666666666667S277.3333333333333 56.96 277.3333333333333 74.6666666666667S291.6266666666667 106.6666666666667 309.3333333333333 106.6666666666667M224 192C241.7066666666667 192 256 177.7066666666667 256 160S241.7066666666667 128 224 128S192 142.2933333333334 192 160S206.2933333333333 192 224 192z" /> + <glyph glyph-name="weather-lightning" + unicode="&#xF593;" + horiz-adv-x="512" d=" M128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334H149.3333333333333C161.0666666666667 149.3333333333334 170.6666666666667 139.7333333333334 170.6666666666667 128S161.0666666666667 106.6666666666667 149.3333333333333 106.6666666666667H128M256 213.3333333333334H320L277.3333333333333 128H320L240 -21.3333333333333L256 85.3333333333334H202.6666666666667L256 213.3333333333334z" /> + <glyph glyph-name="weather-night" + unicode="&#xF594;" + horiz-adv-x="512" d=" M378.6666666666667 360.7466666666667L324.6933333333334 319.36L344.1066666666667 254.08L288 292.6933333333334L231.8933333333334 254.08L251.3066666666667 319.36L197.3333333333334 360.7466666666667L265.3866666666667 362.6666666666667L288 426.6666666666667L310.6133333333334 362.6666666666667L378.6666666666667 360.7466666666667M453.3333333333333 213.3333333333334L418.3466666666667 186.6666666666667L430.9333333333333 144.4266666666667L394.6666666666667 169.3866666666667L358.4 144.4266666666667L370.9866666666667 186.6666666666667L336 213.3333333333334L379.9466666666666 214.4L394.6666666666667 256L409.3866666666667 214.4L453.3333333333333 213.3333333333334M404.6933333333333 107.7333333333334C422.3999999999999 109.4400000000001 441.3866666666666 84.2666666666667 430.08 68.2666666666667C423.2533333333334 58.6666666666667 416 49.7066666666667 407.04 41.1733333333333C323.6266666666667 -42.6666666666666 188.5866666666667 -42.6666666666666 105.3866666666667 41.1733333333333C21.9733333333333 124.3733333333333 21.9733333333333 259.6266666666667 105.3866666666667 342.8266666666667C113.92 351.36 122.88 359.04 132.48 365.8666666666667C148.48 377.1733333333334 173.6533333333333 358.1866666666667 171.9466666666667 340.48C166.1866666666667 279.4666666666667 186.6666666666667 216.1066666666667 233.6 169.3866666666667C280.32 122.4533333333334 343.4666666666667 101.9733333333334 404.6933333333333 107.7333333333334M369.7066666666666 64.64C309.3333333333333 68.0533333333334 249.6 93.0133333333333 203.3066666666666 138.6666666666668C157.0133333333333 185.3866666666667 132.2666666666666 245.3333333333334 128.8533333333333 305.4933333333334C68.9066666666666 238.5066666666667 71.2533333333333 135.6800000000001 135.4666666666666 71.2533333333335C199.8933333333333 7.0400000000001 302.7199999999999 4.6933333333334 369.7066666666666 64.6400000000001z" /> + <glyph glyph-name="weather-partlycloudy" + unicode="&#xF595;" + horiz-adv-x="512" d=" M271.7866666666667 331.3066666666667C322.1333333333334 309.3333333333334 348.8 255.36 339.6266666666667 203.52C366.7200000000001 180.0533333333334 384 145.28 384 106.6666666666667V103.04C390.6133333333333 105.3866666666667 397.8666666666666 106.6666666666667 405.3333333333333 106.6666666666667C440.7466666666667 106.6666666666667 469.3333333333333 78.08 469.3333333333333 42.6666666666667S440.7466666666667 -21.3333333333333 405.3333333333333 -21.3333333333333H128C80.8533333333333 -21.3333333333333 42.6666666666667 16.8533333333334 42.6666666666667 64S80.8533333333333 149.3333333333334 128 149.3333333333334H133.76C106.6666666666667 182.4 98.1333333333333 229.5466666666667 117.3333333333333 271.7866666666667C143.36 330.6666666666667 212.6933333333333 357.5466666666667 271.7866666666667 331.3066666666667M254.5066666666667 292.2666666666667C216.7466666666667 309.3333333333334 172.5866666666667 292.0533333333334 155.9466666666667 254.5066666666667C146.1333333333333 232.7466666666667 147.84 208.64 158.08 189.2266666666667C181.3333333333333 216.96 216.7466666666667 234.6666666666667 256 234.6666666666667C270.9333333333333 234.6666666666667 285.44 232.1066666666667 298.6666666666667 227.4133333333334C297.3866666666667 254.72 281.1733333333333 280.3200000000001 254.5066666666667 292.2666666666667M289.0666666666667 370.3466666666667C277.3333333333333 375.4666666666667 265.6 379.0933333333334 253.44 381.44L306.56 409.1733333333334L325.76 347.52C314.88 356.48 302.7200000000001 364.1600000000001 289.0666666666667 370.3466666666667M129.92 353.2800000000001C119.4666666666667 345.8133333333334 110.2933333333334 337.2800000000001 102.4 327.8933333333334L104.7466666666667 387.8400000000001L167.8933333333334 373.3333333333334C154.6666666666667 368.8533333333334 141.8666666666667 362.0266666666667 129.92 353.2800000000001M384 240.8533333333333C382.08 253.44 379.3066666666667 265.6 375.2533333333334 277.3333333333334L426.0266666666667 245.3333333333334L382.2933333333333 197.76C384.64 211.6266666666667 385.0666666666666 226.1333333333334 383.9999999999999 240.8533333333333M64.8533333333333 206.9333333333333C66.3466666666667 194.1333333333333 69.12 181.9733333333334 73.1733333333333 170.6666666666667L22.6133333333333 202.6666666666667L66.1333333333333 250.0266666666667C64 236.1600000000001 63.36 221.6533333333334 64.8533333333333 206.9333333333334M405.3333333333333 64H341.3333333333333V106.6666666666667C341.3333333333333 153.8133333333334 303.1466666666667 192 256 192S170.6666666666667 153.8133333333334 170.6666666666667 106.6666666666667H128C104.5333333333333 106.6666666666667 85.3333333333333 87.4666666666667 85.3333333333333 64S104.5333333333333 21.3333333333334 128 21.3333333333334H405.3333333333333C417.0666666666667 21.3333333333334 426.6666666666667 30.9333333333333 426.6666666666667 42.6666666666667S417.0666666666667 64 405.3333333333333 64z" /> + <glyph glyph-name="weather-pouring" + unicode="&#xF596;" + horiz-adv-x="512" d=" M192 192C203.3066666666667 189.0133333333333 210.1333333333333 177.28 207.1466666666667 165.9733333333334L179.4133333333333 62.9333333333333C176.4266666666667 51.4133333333334 164.6933333333333 44.8 153.3866666666667 47.7866666666666C141.8666666666667 50.7733333333333 135.2533333333333 62.5066666666667 138.6666666666667 73.8133333333333L165.9733333333333 176.8533333333333C168.96 188.3733333333333 180.6933333333333 194.9866666666666 192 192M277.3333333333333 192C288.64 189.0133333333333 295.4666666666667 177.28 292.48 165.9733333333333L248.32 1.0666666666666C245.3333333333333 -10.6666666666667 233.6 -17.0666666666667 222.08 -14.08C210.7733333333334 -10.6666666666667 203.9466666666667 0.64 206.9333333333333 12.16L251.3066666666667 176.8533333333333C254.2933333333333 188.3733333333332 266.0266666666667 194.9866666666666 277.3333333333333 192M362.6666666666667 192C373.9733333333334 189.0133333333333 380.8 177.28 377.8133333333334 165.9733333333333L350.08 62.9333333333333C347.0933333333333 51.4133333333333 335.36 44.7999999999999 324.0533333333333 47.7866666666666C312.5333333333333 50.7733333333333 305.92 62.5066666666666 309.3333333333333 73.8133333333332L336.64 176.8533333333333C339.6266666666667 188.3733333333332 351.36 194.9866666666665 362.6666666666667 191.9999999999999M362.6666666666667 234.6666666666665V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334C64 189.6533333333334 76.8 168.96 96 157.8666666666667V158.0800000000001C106.6666666666667 152.1066666666667 109.6533333333333 138.6666666666667 103.8933333333333 128.8533333333334C97.92 118.8266666666667 85.3333333333333 115.2 74.6666666666667 121.1733333333334V120.96C42.6666666666667 139.3066666666667 21.3333333333333 173.8666666666667 21.3333333333333 213.3333333333334C21.3333333333333 272.2133333333334 69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192C490.6666666666666 160 473.6 132.9066666666667 448 118.1866666666667C437.3333333333333 112.4266666666667 424.7466666666667 115.84 418.7733333333333 126.08C413.0133333333333 136.32 416 149.3333333333333 426.6666666666667 155.3066666666666V155.0933333333333C439.4666666666667 162.3466666666666 448 176.2133333333333 448 192C448 215.4666666666667 428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667z" /> + <glyph glyph-name="weather-rainy" + unicode="&#xF597;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M316.3733333333334 113.7066666666667C349.6533333333333 80.4266666666667 349.6533333333333 32 316.3733333333334 -1.7066666666666C299.7333333333334 -18.3466666666666 277.3333333333333 -21.3333333333333 256 -21.3333333333333S212.2666666666667 -18.3466666666666 195.6266666666667 -1.7066666666666C162.3466666666666 32 162.3466666666666 80.4266666666667 195.6266666666667 113.7066666666667L256 213.3333333333334L316.3733333333334 113.7066666666667M286.08 91.9466666666667L256 144L225.92 91.9466666666667C209.0666666666667 74.6666666666667 209.0666666666667 49.0666666666666 225.92 32C234.6666666666667 22.8266666666667 245.3333333333333 21.3333333333334 256 21.3333333333334C266.6666666666667 21.3333333333334 277.3333333333333 22.8266666666667 286.08 32C302.9333333333333 49.0666666666667 302.9333333333333 74.6666666666667 286.08 91.9466666666667z" /> + <glyph glyph-name="weather-snowy" + unicode="&#xF598;" + horiz-adv-x="512" d=" M128 149.3333333333334C139.7333333333333 149.3333333333334 149.3333333333333 139.7333333333334 149.3333333333333 128S139.7333333333333 106.6666666666667 128 106.6666666666667C69.12 106.6666666666667 21.3333333333333 154.4533333333334 21.3333333333333 213.3333333333334S69.12 320 128 320C149.3333333333333 370.1333333333334 198.4 405.3333333333333 256 405.3333333333333C329.1733333333333 405.3333333333333 389.12 348.5866666666667 394.6666666666667 276.6933333333334L405.3333333333333 277.3333333333334C452.48 277.3333333333334 490.6666666666666 239.1466666666667 490.6666666666666 192S452.48 106.6666666666667 405.3333333333333 106.6666666666667H384C372.2666666666667 106.6666666666667 362.6666666666667 116.2666666666667 362.6666666666667 128S372.2666666666667 149.3333333333334 384 149.3333333333334H405.3333333333333C428.8 149.3333333333334 448 168.5333333333334 448 192S428.8 234.6666666666667 405.3333333333333 234.6666666666667H362.6666666666667V256C362.6666666666667 314.88 314.88 362.6666666666667 256 362.6666666666667C202.6666666666667 362.6666666666667 158.9333333333333 323.8400000000001 150.6133333333333 273.28C143.5733333333333 275.8400000000001 135.8933333333333 277.3333333333334 128 277.3333333333334C92.5866666666667 277.3333333333334 64 248.7466666666667 64 213.3333333333334S92.5866666666667 149.3333333333334 128 149.3333333333334M168.1066666666667 62.5066666666667L214.8266666666667 74.6666666666667L180.48 109.2266666666667C172.16 117.3333333333334 172.16 130.9866666666667 180.48 139.5200000000001C188.8 147.84 202.6666666666667 147.84 210.7733333333334 139.5200000000001L245.3333333333333 105.1733333333334L257.4933333333334 151.8933333333333C260.48 163.4133333333334 272.2133333333333 170.0266666666667 283.52 167.04C295.04 164.0533333333333 301.6533333333333 152.32 298.6666666666667 140.8L286.08 94.0799999999999L332.8 106.6666666666667C344.32 109.6533333333334 356.0533333333334 103.04 359.04 91.52C362.0266666666667 80.2133333333333 355.4133333333333 68.48 343.8933333333333 65.4933333333333L297.1733333333333 53.3333333333334L331.5199999999999 18.7733333333333C339.8399999999999 10.6666666666667 339.8399999999999 -3.2 331.5199999999999 -11.52C323.2 -19.84 309.3333333333333 -19.84 301.2266666666666 -11.52L266.6666666666666 22.8266666666667L254.5066666666666 -23.8933333333333C251.5199999999999 -35.4133333333333 239.7866666666666 -42.0266666666667 228.4799999999999 -39.04C216.9599999999999 -36.0533333333333 210.3466666666666 -24.32 213.3333333333333 -12.8L225.9199999999999 33.92L179.2 21.3333333333334C167.68 18.3466666666667 155.9466666666667 24.96 152.96 36.48C149.9733333333333 47.7866666666668 156.5866666666667 59.52 168.1066666666667 62.5066666666667z" /> + <glyph glyph-name="weather-sunny" + unicode="&#xF599;" + horiz-adv-x="512" d=" M256 298.6666666666667C314.88 298.6666666666667 362.6666666666667 250.88 362.6666666666667 192S314.88 85.3333333333334 256 85.3333333333334S149.3333333333333 133.12 149.3333333333333 192S197.12 298.6666666666667 256 298.6666666666667M256 256C220.5866666666667 256 192 227.4133333333334 192 192S220.5866666666667 128 256 128S320 156.5866666666667 320 192S291.4133333333333 256 256 256M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M71.68 85.3333333333334L109.2266666666667 165.76C112.2133333333333 149.3333333333334 117.9733333333333 132.6933333333333 126.9333333333333 117.3333333333334C135.8933333333333 101.5466666666667 147.4133333333333 88.3200000000001 160 77.44L71.68 85.3333333333334M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M440.32 85.3333333333334L351.9999999999999 77.6533333333334C364.5866666666666 88.5333333333334 375.8933333333333 101.9733333333334 384.8533333333333 117.3333333333334C393.8133333333333 132.9066666666667 399.5733333333333 149.3333333333334 402.5599999999999 166.1866666666667L440.32 85.3333333333334M256 -21.3333333333333L204.5866666666667 52.0533333333334C220.3733333333333 46.2933333333334 237.6533333333334 42.6666666666667 256 42.6666666666667C273.4933333333334 42.6666666666667 290.7733333333333 46.2933333333334 306.56 52.0533333333334L256 -21.3333333333333z" /> + <glyph glyph-name="weather-sunset" + unicode="&#xF59A;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M106.6666666666667 106.6666666666667H405.3333333333333C417.0666666666667 106.6666666666667 426.6666666666667 97.0666666666667 426.6666666666667 85.3333333333334S417.0666666666667 64 405.3333333333333 64H106.6666666666667C94.9333333333333 64 85.3333333333333 73.6 85.3333333333333 85.3333333333334S94.9333333333333 106.6666666666667 106.6666666666667 106.6666666666667M362.6666666666667 21.3333333333334C374.4 21.3333333333334 384 11.7333333333333 384 0S374.4 -21.3333333333333 362.6666666666667 -21.3333333333333H149.3333333333333C137.6 -21.3333333333333 128 -11.7333333333333 128 0S137.6 21.3333333333334 149.3333333333333 21.3333333333334H362.6666666666667M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667z" /> + <glyph glyph-name="weather-sunset-down" + unicode="&#xF59B;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M271.1466666666666 6.1866666666667L337.4933333333333 72.5333333333333C345.8133333333333 80.8533333333334 345.8133333333333 94.5066666666667 337.4933333333333 102.8266666666667C329.1733333333333 111.1466666666667 315.7333333333333 111.1466666666667 307.4133333333333 102.8266666666667L256 51.4133333333334L204.5866666666667 102.8266666666667C196.2666666666667 111.1466666666667 182.8266666666667 111.1466666666667 174.5066666666667 102.8266666666667C166.1866666666667 94.5066666666667 166.1866666666667 80.8533333333334 174.5066666666667 72.5333333333333L240.8533333333333 6.1866666666667C245.3333333333333 2.1333333333333 250.4533333333333 0 256 0C261.5466666666666 0 266.6666666666667 2.1333333333334 271.1466666666667 6.1866666666667z" /> + <glyph glyph-name="weather-sunset-up" + unicode="&#xF59C;" + horiz-adv-x="512" d=" M64 192H149.3333333333333C149.3333333333333 250.88 197.12 298.6666666666667 256 298.6666666666667S362.6666666666667 250.88 362.6666666666667 192H448C459.7333333333333 192 469.3333333333333 182.4 469.3333333333333 170.6666666666667S459.7333333333333 149.3333333333334 448 149.3333333333334H64C52.2666666666667 149.3333333333334 42.6666666666667 158.9333333333333 42.6666666666667 170.6666666666667S52.2666666666667 192 64 192M320 192C320 227.4133333333334 291.4133333333333 256 256 256S192 227.4133333333334 192 192H320M256 405.3333333333333L306.9866666666667 332.3733333333334C291.2 338.1333333333334 273.92 341.3333333333334 256 341.3333333333334C238.08 341.3333333333334 220.8 338.1333333333334 205.0133333333333 332.3733333333334L256 405.3333333333333M71.2533333333333 298.6666666666667L160 306.1333333333334C147.2 295.2533333333334 135.68 282.0266666666667 126.72 266.6666666666667C117.3333333333333 250.88 112 234.6666666666667 109.0133333333333 217.8133333333334L71.2533333333333 298.6666666666667M440.5333333333333 298.6666666666667L402.7733333333333 217.8133333333334C399.7866666666667 234.6666666666667 394.0266666666667 251.0933333333334 385.0666666666667 266.6666666666667C376.1066666666667 282.0266666666667 364.8 295.4666666666667 352 306.3466666666667L440.5333333333333 298.6666666666667M271.1466666666666 100.2666666666667L337.4933333333333 33.92C345.8133333333333 25.6 345.8133333333333 12.16 337.4933333333333 3.84C329.1733333333333 -4.48 315.7333333333333 -4.48 307.4133333333333 3.84L256 55.2533333333333L204.5866666666667 3.84C196.2666666666667 -4.48 182.8266666666667 -4.48 174.5066666666667 3.84C166.1866666666667 12.16 166.1866666666667 25.6 174.5066666666667 33.92L240.8533333333333 100.2666666666667C245.3333333333333 104.5333333333333 250.4533333333333 106.6666666666667 256 106.6666666666667C261.5466666666666 106.6666666666667 266.6666666666667 104.5333333333333 271.1466666666667 100.2666666666667z" /> + <glyph glyph-name="weather-windy" + unicode="&#xF59D;" + horiz-adv-x="512" d=" M85.3333333333333 234.6666666666667C73.6 234.6666666666667 64 244.2666666666667 64 256S73.6 277.3333333333334 85.3333333333333 277.3333333333334H256C279.4666666666667 277.3333333333334 298.6666666666667 296.5333333333334 298.6666666666667 320S279.4666666666667 362.6666666666667 256 362.6666666666667C244.2666666666667 362.6666666666667 233.6 357.9733333333334 225.92 350.0800000000001C217.6 341.3333333333334 203.9466666666667 341.3333333333334 195.6266666666667 350.0800000000001C187.3066666666667 358.4 187.3066666666667 372.0533333333334 195.6266666666667 380.3733333333334C211.2 395.7333333333334 232.5333333333334 405.3333333333333 256 405.3333333333333C303.1466666666667 405.3333333333333 341.3333333333333 367.1466666666667 341.3333333333333 320S303.1466666666667 234.6666666666667 256 234.6666666666667H85.3333333333333M405.3333333333333 192C417.0666666666667 192 426.6666666666667 201.6 426.6666666666667 213.3333333333334S417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667C399.36 234.6666666666667 394.0266666666667 232.32 390.1866666666666 228.48C381.8666666666666 220.16 368.4266666666666 220.16 360.1066666666667 228.48C352 236.8000000000001 352 250.24 360.1066666666667 258.5600000000001C371.6266666666667 270.0800000000001 387.6266666666667 277.3333333333334 405.3333333333333 277.3333333333334C440.7466666666667 277.3333333333334 469.3333333333333 248.7466666666667 469.3333333333333 213.3333333333334S440.7466666666667 149.3333333333334 405.3333333333333 149.3333333333334H106.6666666666667C94.9333333333333 149.3333333333334 85.3333333333333 158.9333333333333 85.3333333333333 170.6666666666667S94.9333333333333 192 106.6666666666667 192H405.3333333333333M384 64H85.3333333333333C73.6 64 64 73.6 64 85.3333333333334S73.6 106.6666666666667 85.3333333333333 106.6666666666667H384C419.4133333333333 106.6666666666667 448 78.08 448 42.6666666666667S419.4133333333333 -21.3333333333333 384 -21.3333333333333C366.2933333333334 -21.3333333333333 350.2933333333334 -14.08 338.7733333333333 -2.56C330.6666666666667 5.76 330.6666666666667 19.2 338.7733333333333 27.52C347.0933333333333 35.84 360.5333333333333 35.84 368.8533333333333 27.52C372.6933333333333 23.68 378.0266666666667 21.3333333333334 384 21.3333333333334C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667S395.7333333333334 64 384 64z" /> + <glyph glyph-name="weather-windy-variant" + unicode="&#xF59E;" + horiz-adv-x="512" d=" M128 320L142.72 318.7200000000001C156.16 368.64 201.8133333333333 405.3333333333333 256 405.3333333333333C320.8533333333333 405.3333333333333 373.3333333333333 352.8533333333334 373.3333333333333 288L371.6266666666667 267.7333333333334C381.4400000000001 273.92 392.9600000000001 277.3333333333334 405.3333333333333 277.3333333333334C440.7466666666667 277.3333333333334 469.3333333333333 248.7466666666667 469.3333333333333 213.3333333333334S440.7466666666667 149.3333333333334 405.3333333333333 149.3333333333334H128C80.8533333333333 149.3333333333334 42.6666666666667 187.52 42.6666666666667 234.6666666666667S80.8533333333333 320 128 320M128 277.3333333333334C104.5333333333333 277.3333333333334 85.3333333333333 258.1333333333334 85.3333333333333 234.6666666666667S104.5333333333333 192 128 192H405.3333333333333C417.0666666666667 192 426.6666666666667 201.6 426.6666666666667 213.3333333333334S417.0666666666667 234.6666666666667 405.3333333333333 234.6666666666667H330.6666666666667V288C330.6666666666667 329.1733333333334 297.1733333333333 362.6666666666667 256 362.6666666666667S181.3333333333333 329.1733333333334 181.3333333333333 288V277.3333333333334H128M384 64H85.3333333333333C73.6 64 64 73.6 64 85.3333333333334S73.6 106.6666666666667 85.3333333333333 106.6666666666667H384C419.4133333333333 106.6666666666667 448 78.08 448 42.6666666666667S419.4133333333333 -21.3333333333333 384 -21.3333333333333C366.2933333333334 -21.3333333333333 350.2933333333334 -14.08 338.7733333333333 -2.56C330.6666666666667 5.76 330.6666666666667 19.2 338.7733333333333 27.52C347.0933333333333 35.84 360.5333333333333 35.84 368.8533333333333 27.52C372.6933333333333 23.68 378.0266666666667 21.3333333333334 384 21.3333333333334C395.7333333333334 21.3333333333334 405.3333333333333 30.9333333333333 405.3333333333333 42.6666666666667S395.7333333333334 64 384 64z" /> + <glyph glyph-name="web" + unicode="&#xF59F;" + horiz-adv-x="512" d=" M349.0133333333333 149.3333333333334C350.7199999999999 163.4133333333334 352 177.4933333333334 352 192C352 206.5066666666667 350.7200000000001 220.5866666666667 349.0133333333333 234.6666666666667H421.12C424.5333333333333 221.0133333333333 426.6666666666667 206.72 426.6666666666667 192S424.5333333333333 162.9866666666667 421.12 149.3333333333334M311.2533333333333 30.72C324.0533333333333 54.4 333.8666666666666 80 340.6933333333333 106.6666666666667H403.6266666666666C383.1466666666666 71.4666666666667 350.5066666666667 44.16 311.2533333333333 30.72M305.92 149.3333333333334H206.08C203.9466666666667 163.4133333333334 202.6666666666667 177.4933333333334 202.6666666666667 192C202.6666666666667 206.5066666666667 203.9466666666667 220.8 206.08 234.6666666666667H305.92C307.84 220.8 309.3333333333333 206.5066666666667 309.3333333333333 192C309.3333333333333 177.4933333333334 307.84 163.4133333333334 305.92 149.3333333333334M256 22.1866666666667C238.2933333333333 47.7866666666666 224 76.16 215.2533333333333 106.6666666666667H296.7466666666667C288 76.16 273.7066666666667 47.7866666666668 256 22.1866666666667M170.6666666666667 277.3333333333334H108.3733333333333C128.64 312.7466666666667 161.4933333333334 340.0533333333334 200.5333333333333 353.2800000000001C187.7333333333334 329.6 178.1333333333333 304 170.6666666666667 277.3333333333334M108.3733333333333 106.6666666666667H170.6666666666667C178.1333333333333 80 187.7333333333334 54.4 200.5333333333333 30.72C161.4933333333334 44.16 128.64 71.4666666666667 108.3733333333333 106.6666666666667M90.88 149.3333333333334C87.4666666666667 162.9866666666667 85.3333333333333 177.28 85.3333333333333 192S87.4666666666667 221.0133333333333 90.88 234.6666666666667H162.9866666666667C161.28 220.5866666666667 160 206.5066666666667 160 192C160 177.4933333333334 161.28 163.4133333333334 162.9866666666667 149.3333333333334M256 362.0266666666667C273.7066666666667 336.4266666666667 288 307.8400000000001 296.7466666666667 277.3333333333334H215.2533333333333C224 307.8400000000001 238.2933333333333 336.4266666666667 256 362.0266666666667M403.6266666666667 277.3333333333334H340.6933333333334C333.8666666666667 304 324.0533333333334 329.6 311.2533333333334 353.2800000000001C350.5066666666667 339.8400000000001 383.1466666666668 312.7466666666667 403.6266666666667 277.3333333333334M256 405.3333333333333C138.0266666666667 405.3333333333333 42.6666666666667 309.3333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333z" /> + <glyph glyph-name="webcam" + unicode="&#xF5A0;" + horiz-adv-x="512" d=" M256 405.3333333333333C338.56 405.3333333333333 405.3333333333333 338.56 405.3333333333333 256S338.56 106.6666666666667 256 106.6666666666667S106.6666666666667 173.44 106.6666666666667 256S173.44 405.3333333333333 256 405.3333333333333M256 362.6666666666667C197.12 362.6666666666667 149.3333333333333 314.88 149.3333333333333 256S197.12 149.3333333333334 256 149.3333333333334S362.6666666666667 197.12 362.6666666666667 256S314.88 362.6666666666667 256 362.6666666666667M256 320C291.4133333333333 320 320 291.4133333333334 320 256S291.4133333333333 192 256 192S192 220.5866666666667 192 256S220.5866666666667 320 256 320M128 -21.3333333333333C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334C85.3333333333333 29.44 87.4666666666667 36.9066666666667 91.52 43.3066666666667L130.3466666666667 110.72C164.0533333333334 81.7066666666667 208 64 256 64C304 64 347.9466666666666 81.7066666666667 381.6533333333333 110.72L420.48 43.3066666666667C424.5333333333334 36.9066666666667 426.6666666666667 29.4400000000001 426.6666666666667 21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128z" /> + <glyph glyph-name="webhook" + unicode="&#xF62F;" + horiz-adv-x="512" d=" M223.1466666666667 42.6666666666667C192 -1.4933333333333 131.2 -12.5866666666666 87.2533333333333 18.1333333333334C43.52 48.8533333333334 33.28 110.08 64 154.6666666666668C82.56 181.3333333333334 111.1466666666667 195.6266666666667 140.3733333333333 196.9066666666667L141.44 166.4000000000001C122.0266666666667 164.9066666666668 103.2533333333333 154.8800000000001 91.0933333333333 137.3866666666668C69.76 106.6666666666667 76.3733333333333 65.2800000000001 105.6 44.5866666666668C135.04 24.1066666666667 176.2133333333333 32.0000000000001 197.5466666666666 62.5066666666668C204.16 72.1066666666667 208 82.5600000000001 209.4933333333333 93.2266666666668V114.7733333333334L328.5333333333333 115.6266666666668L330.0266666666667 117.9733333333334C341.3333333333333 137.6000000000001 365.8666666666666 144.4266666666667 385.0666666666666 133.3333333333334C404.2666666666666 122.2400000000001 410.88 97.4933333333335 399.5733333333333 77.8666666666667C388.2666666666666 58.4533333333334 363.5199999999999 51.6266666666667 344.32 62.72C335.5733333333333 67.6266666666667 329.3866666666666 75.5200000000001 326.6133333333333 84.48L239.7866666666666 84.0533333333334C237.44 69.76 231.8933333333333 55.8933333333334 223.1466666666666 42.6666666666667M378.4533333333333 194.9866666666667C432.4266666666666 188.3733333333333 470.8266666666667 139.9466666666667 464.2133333333333 86.8266666666667C457.6 33.4933333333333 408.5333333333333 -4.2666666666667 354.56 2.3466666666667C322.7733333333333 6.1866666666667 296.5333333333333 24.3200000000001 281.3866666666666 49.4933333333333L307.8399999999999 64.8533333333334C318.2933333333333 48.4266666666667 336 36.6933333333333 357.3333333333333 33.92C394.6666666666666 29.44 427.7333333333333 54.8266666666667 432.2133333333333 90.4533333333333C436.6933333333333 126.08 410.2399999999999 158.72 373.3333333333333 163.2C361.8133333333334 164.48 350.7200000000001 162.9866666666667 340.6933333333334 159.36L322.56 149.9733333333334L267.52 251.7333333333333H262.8266666666667C240.2133333333333 252.5866666666667 222.72 271.1466666666667 223.36 293.3333333333333C224 315.52 243.2 332.8 265.6 331.9466666666667C288 330.6666666666667 305.7066666666667 312.5333333333333 305.0666666666667 290.3466666666667C304.64 280.96 301.0133333333333 272.4266666666666 295.2533333333334 265.8133333333334L335.7866666666667 190.9333333333333C349.0133333333333 195.2 363.52 196.6933333333333 378.4533333333334 194.9866666666667M176 253.0133333333333C154.6666666666667 303.1466666666667 177.28 360.5333333333333 226.56 381.44C276.0533333333334 402.3466666666667 333.2266666666667 378.6666666666667 354.56 328.5333333333333C367.1466666666667 299.3066666666666 364.5866666666667 267.3066666666666 350.2933333333334 241.7066666666667L323.8400000000001 257.0666666666667C332.8 274.3466666666667 334.2933333333334 295.4666666666667 325.76 315.3066666666667C311.2533333333334 349.44 272.64 365.8666666666667 239.5733333333333 352C206.2933333333333 337.92 191.36 298.6666666666667 205.8666666666667 264.5333333333333C211.84 250.4533333333333 221.8666666666667 239.5733333333333 234.0266666666667 232.32L242.3466666666667 227.84L176.8533333333334 121.3866666666667C177.4933333333334 120.3199999999999 178.3466666666667 119.04 178.9866666666667 117.3333333333333C189.44 97.92 182.1866666666667 73.3866666666667 162.56 62.9333333333333C143.1466666666667 52.48 118.6133333333334 60.16 107.9466666666667 80.2133333333333C97.4933333333333 100.0533333333333 104.7466666666667 124.5866666666667 124.3733333333333 135.04C132.6933333333333 139.52 141.8666666666667 140.5866666666667 150.6133333333334 138.6666666666666L199.8933333333334 219.0933333333333C189.8666666666667 228.2666666666666 181.3333333333334 239.7866666666667 176 253.0133333333333z" /> + <glyph glyph-name="wechat" + unicode="&#xF611;" + horiz-adv-x="512" d=" M202.6666666666667 362.6666666666667C114.3466666666667 362.6666666666667 42.6666666666667 305.28 42.6666666666667 234.6666666666667C42.6666666666667 194.3466666666667 65.7066666666667 158.72 101.9733333333333 135.2533333333333L85.3333333333333 85.3333333333334L138.6666666666667 117.3333333333334C157.6533333333333 110.72 178.56 106.6666666666667 200.7466666666667 106.6666666666667C195.2 120.1066666666667 192 134.4 192 149.3333333333334C192 219.9466666666667 258.7733333333333 277.3333333333334 341.3333333333333 277.3333333333334C345.3866666666667 277.3333333333334 349.44 277.3333333333334 353.28 276.6933333333334C331.52 326.6133333333334 272.64 362.6666666666667 202.6666666666667 362.6666666666667M138.6666666666667 309.3333333333334C150.4 309.3333333333334 160 299.7333333333334 160 288S150.4 266.6666666666667 138.6666666666667 266.6666666666667S117.3333333333333 276.2666666666667 117.3333333333333 288S126.9333333333333 309.3333333333334 138.6666666666667 309.3333333333334M245.3333333333333 309.3333333333334C257.0666666666667 309.3333333333334 266.6666666666667 299.7333333333334 266.6666666666667 288S257.0666666666667 266.6666666666667 245.3333333333333 266.6666666666667S224 276.2666666666667 224 288S233.6 309.3333333333334 245.3333333333333 309.3333333333334M341.3333333333333 256C270.72 256 213.3333333333333 208.2133333333334 213.3333333333333 149.3333333333334S270.72 42.6666666666667 341.3333333333333 42.6666666666667C355.6266666666667 42.6666666666667 369.28 44.3733333333333 382.08 48L426.6666666666667 21.3333333333334L413.44 61.2266666666667C446.9333333333333 80.64 469.3333333333333 112.8533333333334 469.3333333333333 149.3333333333334C469.3333333333333 208.2133333333334 411.9466666666666 256 341.3333333333333 256M298.6666666666667 202.6666666666667C310.4 202.6666666666667 320 193.0666666666667 320 181.3333333333334S310.4 160 298.6666666666667 160S277.3333333333333 169.6 277.3333333333333 181.3333333333334S286.9333333333333 202.6666666666667 298.6666666666667 202.6666666666667M384 202.6666666666667C395.7333333333334 202.6666666666667 405.3333333333333 193.0666666666667 405.3333333333333 181.3333333333334S395.7333333333334 160 384 160S362.6666666666667 169.6 362.6666666666667 181.3333333333334S372.2666666666667 202.6666666666667 384 202.6666666666667z" /> + <glyph glyph-name="weight" + unicode="&#xF5A1;" + horiz-adv-x="512" d=" M256 384C303.1466666666667 384 341.3333333333333 345.8133333333334 341.3333333333333 298.6666666666667C341.3333333333333 283.0933333333334 337.28 268.5866666666667 329.8133333333334 256H384C404.2666666666667 256 421.3333333333333 241.7066666666667 425.6 222.72C468.48 51.84 469.3333333333333 47.36 469.3333333333333 42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667C42.6666666666667 47.36 43.52 51.84 86.4 222.72C90.6666666666667 241.7066666666667 107.7333333333333 256 128 256H182.1866666666667C174.72 268.5866666666667 170.6666666666667 283.0933333333334 170.6666666666667 298.6666666666667C170.6666666666667 345.8133333333334 208.8533333333333 384 256 384M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334z" /> + <glyph glyph-name="weight-kilogram" + unicode="&#xF5A2;" + horiz-adv-x="512" d=" M256 384C303.1466666666667 384 341.3333333333333 345.8133333333334 341.3333333333333 298.6666666666667C341.3333333333333 283.0933333333334 337.28 268.5866666666667 329.8133333333334 256H384C404.2666666666667 256 421.3333333333333 241.7066666666667 425.6 222.72C468.48 51.84 469.3333333333333 47.36 469.3333333333333 42.6666666666667C469.3333333333333 19.2 450.1333333333334 0 426.6666666666667 0H85.3333333333333C61.8666666666667 0 42.6666666666667 19.2 42.6666666666667 42.6666666666667C42.6666666666667 47.36 43.52 51.84 86.4 222.72C90.6666666666667 241.7066666666667 107.7333333333333 256 128 256H182.1866666666667C174.72 268.5866666666667 170.6666666666667 283.0933333333334 170.6666666666667 298.6666666666667C170.6666666666667 345.8133333333334 208.8533333333333 384 256 384M256 341.3333333333334C232.5333333333334 341.3333333333334 213.3333333333333 322.1333333333334 213.3333333333333 298.6666666666667S232.5333333333334 256 256 256S298.6666666666667 275.2000000000001 298.6666666666667 298.6666666666667S279.4666666666667 341.3333333333334 256 341.3333333333334M192.8533333333333 118.6133333333334L221.8666666666667 64H258.3466666666667L214.8266666666667 135.2533333333333L254.9333333333333 193.28H217.6L189.2266666666666 142.2933333333334H178.9866666666666V193.28H148.6933333333333V64H178.9866666666667V118.6133333333334H192.8533333333334M369.2800000000001 81.92V129.4933333333334H318.9333333333334V105.8133333333334H339.2000000000001V89.8133333333334L331.7333333333334 86.8266666666667L318.7200000000001 85.3333333333334C311.2533333333334 85.3333333333334 305.2800000000001 88.5333333333333 301.0133333333334 93.8666666666667C296.9600000000001 99.4133333333334 294.8266666666667 106.6666666666667 294.8266666666667 115.4133333333333V142.08C294.8266666666667 150.8266666666667 296.9600000000001 157.8666666666667 301.2266666666668 163.2C305.4933333333334 168.7466666666667 311.0400000000001 171.3066666666667 318.0800000000001 171.3066666666667S330.6666666666668 169.6 333.6533333333334 166.1866666666667C337.0666666666667 162.7733333333333 339.2000000000001 157.6533333333333 340.2666666666668 150.8266666666667H368.4266666666668L368.6400000000001 151.4666666666667C367.5733333333334 164.9066666666667 362.6666666666668 175.5733333333333 354.5600000000001 183.4666666666667C346.2400000000001 191.1466666666667 333.6533333333334 194.9866666666666 317.0133333333335 194.9866666666666C301.6533333333334 194.9866666666666 289.2800000000001 190.0799999999999 279.4666666666668 180.2666666666667C269.6533333333334 170.6666666666666 264.7466666666668 157.6533333333333 264.7466666666668 142.0799999999999V115.1999999999999C264.7466666666668 99.4133333333333 269.8666666666668 86.6133333333332 279.8933333333335 76.8C289.7066666666668 66.9866666666666 302.7200000000001 62.0799999999999 318.7200000000001 62.0799999999999C331.3066666666668 62.0799999999999 341.9733333333334 63.9999999999999 350.2933333333334 68.0533333333333C358.6133333333335 72.1066666666667 365.0133333333335 76.5866666666666 369.2800000000001 81.92z" /> + <glyph glyph-name="whatsapp" + unicode="&#xF5A3;" + horiz-adv-x="512" d=" M357.3333333333333 150.1866666666667C362.6666666666667 147.4133333333333 366.08 145.92 367.1466666666667 143.7866666666666C368.4266666666666 141.44 368 130.7733333333333 362.6666666666667 118.6133333333334C358.4 106.6666666666667 336.2133333333333 95.1466666666667 326.4 94.72C316.5866666666667 94.2933333333333 316.3733333333334 87.04 263.2533333333334 110.2933333333333C210.1333333333333 133.5466666666666 178.1333333333333 190.2933333333333 175.5733333333333 193.92C173.0133333333334 197.5466666666666 155.0933333333333 223.36 155.9466666666667 249.6C157.0133333333333 275.6266666666667 170.6666666666667 288 176.2133333333333 293.12C181.3333333333333 298.6666666666667 187.0933333333333 299.3066666666666 190.72 298.6666666666667H200.7466666666667C203.9466666666667 298.6666666666667 208.4266666666667 299.9466666666666 212.48 289.0666666666666L227.2 249.1733333333333C228.48 246.3999999999999 229.3333333333333 243.2 227.4133333333334 239.7866666666666L221.6533333333333 231.04L213.3333333333333 222.0799999999999C210.7733333333334 219.52 207.7866666666667 216.7466666666666 210.7733333333334 211.4133333333333C213.3333333333333 205.8666666666666 224 188.16 238.9333333333334 173.44C258.3466666666667 154.6666666666666 275.4133333333333 148.48 280.5333333333333 145.7066666666666C285.6533333333333 142.7199999999999 288.8533333333334 143.1466666666667 292.0533333333334 146.56L309.3333333333334 166.6133333333332C313.3866666666667 171.9466666666666 316.8 170.6666666666666 321.7066666666667 168.9599999999999L357.3333333333333 150.1866666666666M256 405.3333333333333C373.76 405.3333333333333 469.3333333333333 309.76 469.3333333333333 192S373.76 -21.3333333333333 256 -21.3333333333333C213.9733333333333 -21.3333333333333 174.9333333333333 -9.1733333333333 141.8666666666667 11.7333333333333L42.6666666666667 -21.3333333333333L75.7333333333333 77.8666666666667C54.8266666666667 110.9333333333333 42.6666666666667 149.9733333333334 42.6666666666667 192C42.6666666666667 309.76 138.24 405.3333333333333 256 405.3333333333333M256 362.6666666666667C161.7066666666667 362.6666666666667 85.3333333333333 286.2933333333334 85.3333333333333 192C85.3333333333333 155.3066666666667 96.8533333333333 121.3866666666667 116.48 93.6533333333334L96 32L157.6533333333333 52.48C185.3866666666667 32.8533333333334 219.3066666666667 21.3333333333334 256 21.3333333333334C350.2933333333334 21.3333333333334 426.6666666666667 97.7066666666667 426.6666666666667 192S350.2933333333334 362.6666666666667 256 362.6666666666667z" /> + <glyph glyph-name="wheelchair-accessibility" + unicode="&#xF5A4;" + horiz-adv-x="512" d=" M392.5333333333333 209.0666666666667L305.0666666666666 204.8000000000001L354.1333333333333 260.2666666666667C358.3999999999999 266.6666666666668 360.5333333333333 277.3333333333334 358.3999999999999 288C356.2666666666666 294.4000000000001 354.1333333333333 300.8 347.7333333333333 305.0666666666667L232.5333333333333 373.3333333333334C223.9999999999999 379.7333333333334 211.1999999999999 377.6 202.6666666666666 371.2000000000001L145.0666666666667 317.8666666666667C134.4 307.2000000000001 132.2666666666667 292.2666666666667 142.9333333333333 281.6C151.4666666666667 270.9333333333334 168.5333333333333 270.9333333333334 179.2 279.4666666666667L221.8666666666667 317.8666666666667L262.4 294.4000000000001L172.8 202.6666666666667C170.6666666666667 200.5333333333334 170.6666666666667 198.4 168.5333333333334 198.4C157.8666666666667 194.1333333333334 147.2 189.8666666666667 138.6666666666667 183.4666666666667L170.6666666666667 151.4666666666667C181.3333333333333 155.7333333333334 192 160 202.6666666666667 160C243.2 160 277.3333333333333 125.8666666666667 277.3333333333333 85.3333333333334C277.3333333333333 72.5333333333333 275.2 61.8666666666667 268.8 53.3333333333334L300.8 21.3333333333334C313.6 40.5333333333333 320 61.8666666666667 320 85.3333333333334C320 110.9333333333333 311.4666666666667 136.5333333333334 296.5333333333333 155.7333333333334L366.9333333333333 162.1333333333334L362.6666666666667 59.7333333333334C360.5333333333333 44.8000000000001 371.2 34.1333333333334 386.1333333333334 32H388.2666666666667C401.0666666666667 32 411.7333333333334 42.6666666666667 413.8666666666667 55.4666666666667L418.1333333333334 181.3333333333334C418.1333333333334 187.7333333333334 416 196.2666666666667 411.7333333333334 200.5333333333334C405.3333333333333 206.9333333333334 398.9333333333333 209.0666666666667 392.5333333333334 209.0666666666667M384 330.6666666666667C407.4666666666667 330.6666666666667 426.6666666666667 349.8666666666667 426.6666666666667 373.3333333333334S407.4666666666667 416 384 416S341.3333333333333 396.8 341.3333333333333 373.3333333333334S360.5333333333333 330.6666666666667 384 330.6666666666667M266.6666666666667 -12.8C247.4666666666667 -25.6 226.1333333333334 -32 202.6666666666667 -32C138.6666666666667 -32 85.3333333333333 21.3333333333334 85.3333333333333 85.3333333333334C85.3333333333333 108.8 91.7333333333333 130.1333333333333 104.5333333333333 149.3333333333334L136.5333333333333 117.3333333333334C132.2666666666667 106.6666666666667 128 96 128 85.3333333333334C128 44.8000000000001 162.1333333333333 10.6666666666667 202.6666666666667 10.6666666666667C215.4666666666667 10.6666666666667 226.1333333333334 12.8000000000001 234.6666666666667 19.2L266.6666666666667 -12.8z" /> + <glyph glyph-name="white-balance-auto" + unicode="&#xF5A5;" + horiz-adv-x="512" d=" M219.7333333333334 106.6666666666667L204.8 149.3333333333334H136.5333333333333L121.6 106.6666666666667H81.0666666666667L149.3333333333333 298.6666666666667H192L260.2666666666667 106.6666666666667M469.3333333333333 298.6666666666667L443.7333333333334 164.48L411.7333333333334 298.6666666666667H377.6L345.8133333333334 164.48L320 298.6666666666667H303.7866666666667C272.4266666666666 337.7066666666667 224 362.6666666666667 170.6666666666667 362.6666666666667C76.3733333333333 362.6666666666667 0 286.2933333333334 0 192S76.3733333333333 21.3333333333334 170.6666666666667 21.3333333333334C237.44 21.3333333333334 295.2533333333334 59.9466666666667 323.2 115.84L325.3333333333333 106.6666666666667H362.6666666666667L394.6666666666667 236.8L426.6666666666667 106.6666666666667H464L507.7333333333333 298.6666666666667M146.1333333333333 178.1333333333333H195.2L170.6666666666667 256L146.1333333333333 178.1333333333333z" /> + <glyph glyph-name="white-balance-incandescent" + unicode="&#xF5A6;" + horiz-adv-x="512" d=" M367.7866666666667 60.8000000000001L406.1866666666666 22.4L436.2666666666667 52.6933333333333L398.08 90.88M426.6666666666667 181.3333333333334H490.6666666666666V224H426.6666666666667M320 313.3866666666667V416H192V313.3866666666667C153.8133333333333 291.2000000000001 128 250.0266666666667 128 202.6666666666667C128 132.0533333333334 185.3866666666667 74.6666666666667 256 74.6666666666667S384 132.0533333333334 384 202.6666666666667C384 250.0266666666667 358.1866666666666 291.2000000000001 320 313.3866666666667M85.3333333333333 224H21.3333333333333V181.3333333333334H85.3333333333333M234.6666666666667 -30.9333333333333H277.3333333333333V32H234.6666666666667M75.7333333333333 52.6933333333333L105.8133333333333 22.4L144.2133333333333 60.8L113.92 90.88L75.7333333333333 52.6933333333333z" /> + <glyph glyph-name="white-balance-iridescent" + unicode="&#xF5A7;" + horiz-adv-x="512" d=" M105.8133333333333 22.4L144.2133333333333 60.8000000000001L113.92 90.8800000000001L75.7333333333333 52.6933333333334M75.7333333333333 352.8533333333334L113.92 314.4533333333334L144.2133333333333 344.7466666666668L105.8133333333333 382.9333333333334M436.2666666666667 52.6933333333334L398.08 90.8800000000001L367.7866666666667 60.8000000000001L406.1866666666667 22.4M277.3333333333333 -30.9333333333333V32H234.6666666666667V-30.9333333333333H277.3333333333333M406.1866666666666 382.9333333333334L367.7866666666667 344.7466666666667L398.08 314.4533333333333L436.2666666666666 352.8533333333334M234.6666666666667 373.3333333333334H277.3333333333333V436.2666666666667H234.6666666666667M106.6666666666667 138.6666666666667H405.3333333333333V266.6666666666667H106.6666666666667V138.6666666666667z" /> + <glyph glyph-name="white-balance-sunny" + unicode="&#xF5A8;" + horiz-adv-x="512" d=" M75.7333333333333 52.48L105.8133333333333 22.4L144.2133333333333 60.5866666666667L113.92 90.88M234.6666666666667 -30.9333333333333H277.3333333333333V32H234.6666666666667M256 330.6666666666667C185.3866666666667 330.6666666666667 128 273.2800000000001 128 202.6666666666667S185.3866666666667 74.6666666666667 256 74.6666666666667S384 132.0533333333334 384 202.6666666666667C384 273.4933333333334 326.6133333333334 330.6666666666667 256 330.6666666666667M426.6666666666667 181.3333333333334H490.6666666666666V224H426.6666666666667M367.7866666666667 60.5866666666667L406.1866666666667 22.4L436.2666666666667 52.48L398.0800000000001 90.8800000000001M436.2666666666667 352.8533333333334L406.1866666666667 382.9333333333334L367.7866666666667 344.7466666666667L398.0800000000001 314.4533333333334M277.3333333333333 436.2666666666667H234.6666666666667V373.3333333333334H277.3333333333333M85.3333333333333 224H21.3333333333333V181.3333333333334H85.3333333333333M144.2133333333333 344.7466666666667L105.8133333333333 382.9333333333334L75.7333333333333 352.8533333333334L113.92 314.4533333333334L144.2133333333333 344.7466666666667z" /> + <glyph glyph-name="wifi" + unicode="&#xF5A9;" + horiz-adv-x="512" d=" M256 0L332.8 102.4C311.4666666666667 118.4 284.8 128 256 128S200.5333333333333 118.4 179.2 102.4L256 0M256 384C169.6 384 89.8133333333333 355.4133333333334 25.6 307.2000000000001L64 256C117.3333333333333 296.1066666666667 183.8933333333334 320 256 320S394.6666666666667 296.1066666666667 448 256L486.4 307.2000000000001C422.1866666666666 355.4133333333334 342.4 384 256 384M256 256C198.4 256 145.28 237.0133333333333 102.4 204.8L140.8 153.6C172.8 177.7066666666667 212.6933333333333 192 256 192C299.3066666666666 192 339.2 177.7066666666667 371.2 153.6L409.6 204.8C366.7200000000001 237.0133333333333 313.6 256 256 256z" /> + <glyph glyph-name="wifi-off" + unicode="&#xF5AA;" + horiz-adv-x="512" d=" M48.64 384L21.3333333333333 356.9066666666667L52.6933333333333 325.5466666666667C43.52 320 34.3466666666667 313.8133333333334 25.6 307.2000000000001L64 256C75.3066666666667 264.5333333333334 87.04 272 99.4133333333333 278.8266666666667L146.9866666666667 231.2533333333334C131.2 224 116.0533333333334 215.2533333333333 102.4 204.8L140.8 153.6C157.44 165.9733333333334 176.2133333333333 175.5733333333333 196.2666666666667 181.9733333333334L250.6666666666667 128C224 126.5066666666667 199.2533333333333 117.3333333333334 179.2 102.4L256 0L308.48 69.76L378.4533333333333 0L405.3333333333333 27.3066666666667M256 384C210.1333333333333 384 166.4 375.8933333333333 125.8666666666667 361.1733333333334L176.8533333333334 309.9733333333334C202.6666666666667 316.5866666666667 228.6933333333334 320 256 320C328.1066666666667 320 394.6666666666667 296.32 448 256L486.4 307.2000000000001C422.1866666666666 355.4133333333334 342.6133333333333 384 256 384M256 256C247.8933333333333 256 240 256 232.1066666666667 254.9333333333334L300.16 186.6666666666667C326.1866666666666 180.6933333333334 350.5066666666667 169.1733333333334 371.2 153.6L409.6 204.8C366.9333333333333 237.0133333333333 313.6 256 256 256z" /> + <glyph glyph-name="wii" + unicode="&#xF5AB;" + horiz-adv-x="512" d=" M380.5866666666667 86.6133333333334H340.6933333333333V217.8133333333333H380.5866666666667V86.6133333333334M384 264.9600000000001C384 251.9466666666667 373.3333333333333 241.2800000000001 360.5333333333333 241.2800000000001C347.52 241.2800000000001 336.8533333333333 251.9466666666667 336.8533333333333 264.9600000000001C336.8533333333333 278.1866666666667 347.52 288.8533333333334 360.5333333333333 288.8533333333334C373.3333333333333 288.8533333333334 384 278.1866666666667 384 264.9600000000001M465.4933333333333 86.6133333333334H425.3866666666667V217.8133333333334H465.4933333333333V86.6133333333334M469.3333333333333 264.9600000000001C469.3333333333333 251.9466666666667 458.6666666666666 241.2800000000001 445.44 241.2800000000001C432.4266666666666 241.2800000000001 421.76 251.9466666666667 421.76 264.9600000000001C421.76 278.1866666666667 432.4266666666666 288.8533333333334 445.44 288.8533333333334C458.6666666666666 288.8533333333334 469.3333333333333 278.1866666666667 469.3333333333333 264.9600000000001M275.2 276.2666666666667H317.8666666666667L272.64 117.3333333333334S266.6666666666667 84.48 240.64 84.48C214.8266666666667 84.48 208.8533333333334 117.3333333333334 208.8533333333334 117.3333333333334L180.2666666666667 221.0133333333333L151.68 117.3333333333334S145.4933333333334 84.48 119.68 84.48S87.8933333333334 117.3333333333334 87.8933333333334 117.3333333333334L42.6666666666667 276.2666666666667H85.3333333333333L122.0266666666667 135.04L151.68 249.6C158.5066666666667 278.4 180.2666666666667 277.9733333333334 180.2666666666667 277.9733333333334S202.0266666666667 278.4 208.8533333333334 249.6L238.2933333333334 135.04L275.2000000000001 276.2666666666667z" /> + <glyph glyph-name="wikipedia" + unicode="&#xF5AC;" + horiz-adv-x="512" d=" M319.36 43.7333333333334L264.7466666666667 172.3733333333334C242.9866666666667 129.9200000000001 219.0933333333333 85.3333333333334 198.6133333333334 43.7333333333334C198.4 43.52 188.5866666666667 43.7333333333334 188.5866666666667 43.7333333333334C157.2266666666667 117.3333333333334 124.8 189.8666666666667 93.2266666666667 262.8266666666667C85.9733333333333 280.7466666666667 60.3733333333333 309.3333333333334 42.6666666666667 309.3333333333334V318.9333333333334H150.6133333333333V309.3333333333334C137.8133333333333 309.3333333333334 116.0533333333333 300.8 121.6 286.9333333333334C136.96 254.08 190.72 126.72 205.44 94.2933333333334C215.4666666666667 114.3466666666667 243.84 167.2533333333334 256 189.6533333333334C246.4 208.4266666666667 216.1066666666666 278.8266666666667 207.1466666666667 296.3200000000001C200.32 307.8400000000001 183.04 309.3333333333334 169.8133333333333 309.3333333333334C169.8133333333333 312.5333333333334 170.0266666666667 314.6666666666667 169.8133333333333 318.7200000000001L264.9600000000001 318.5066666666667V309.9733333333334C251.9466666666667 309.3333333333334 239.7866666666667 304.8533333333334 245.3333333333334 292.48C258.1333333333334 266.0266666666667 265.6 247.0400000000001 277.3333333333334 222.5066666666667C280.9600000000001 229.7600000000001 300.1600000000001 269.2266666666667 309.3333333333334 289.9200000000001C314.88 303.7866666666668 306.56 309.3333333333334 283.5200000000001 309.3333333333334C283.7333333333334 311.8933333333334 283.7333333333334 316.3733333333334 283.7333333333334 318.5066666666667C313.3866666666667 318.7200000000001 357.9733333333334 318.7200000000001 365.8666666666667 318.9333333333334V309.9733333333334C350.7200000000001 309.3333333333334 335.1466666666667 301.2266666666667 327.04 288.8533333333334L288 206.9333333333333C291.84 196.0533333333334 329.8133333333334 111.7866666666666 333.8666666666667 102.4L416 290.7733333333333C409.6 306.1333333333333 391.2533333333334 309.3333333333333 384 309.3333333333333V318.9333333333333L469.3333333333333 318.2933333333333V309.3333333333334C450.56 309.3333333333334 438.8266666666667 298.6666666666667 432 282.6666666666667C414.9333333333333 244.48 362.6666666666667 122.88 328.5333333333333 43.7333333333334H319.36z" /> + <glyph glyph-name="window-close" + unicode="&#xF5AD;" + horiz-adv-x="512" d=" M287.1466666666667 192L405.3333333333333 73.8133333333334V42.6666666666667H374.1866666666666L256 160.8533333333334L137.8133333333333 42.6666666666667H106.6666666666667V73.8133333333334L224.8533333333333 192L106.6666666666667 310.1866666666667V341.3333333333334H137.8133333333333L256 223.1466666666667L374.1866666666666 341.3333333333334H405.3333333333333V310.1866666666667L287.1466666666667 192z" /> + <glyph glyph-name="window-closed" + unicode="&#xF5AE;" + horiz-adv-x="512" d=" M128 213.3333333333334H213.3333333333333V256H298.6666666666667V213.3333333333334H384V362.6666666666667H128V213.3333333333334M384 170.6666666666667H128V21.3333333333334H384V170.6666666666667M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333z" /> + <glyph glyph-name="window-maximize" + unicode="&#xF5AF;" + horiz-adv-x="512" d=" M85.3333333333333 362.6666666666667H426.6666666666667V21.3333333333334H85.3333333333333V362.6666666666667M128 277.3333333333334V64H384V277.3333333333334H128z" /> + <glyph glyph-name="window-minimize" + unicode="&#xF5B0;" + horiz-adv-x="512" d=" M426.6666666666667 149.3333333333334H85.3333333333333V234.6666666666667H426.6666666666667" /> + <glyph glyph-name="window-open" + unicode="&#xF5B1;" + horiz-adv-x="512" d=" M128 277.3333333333334H213.3333333333333V320H298.6666666666667V277.3333333333334H384V362.6666666666667H128V277.3333333333334M384 234.6666666666667H128V128H384V234.6666666666667M128 21.3333333333334H384V85.3333333333334H128V21.3333333333334M128 405.3333333333333H384C407.4666666666667 405.3333333333333 426.6666666666667 386.1333333333334 426.6666666666667 362.6666666666667V21.3333333333334C426.6666666666667 -2.1333333333333 407.4666666666667 -21.3333333333333 384 -21.3333333333333H128C104.5333333333333 -21.3333333333333 85.3333333333333 -2.1333333333333 85.3333333333333 21.3333333333334V362.6666666666667C85.3333333333333 386.1333333333334 104.5333333333333 405.3333333333333 128 405.3333333333333z" /> + <glyph glyph-name="window-restore" + unicode="&#xF5B2;" + horiz-adv-x="512" d=" M85.3333333333333 277.3333333333334H170.6666666666667V362.6666666666667H426.6666666666667V106.6666666666667H341.3333333333333V21.3333333333334H85.3333333333333V277.3333333333334M341.3333333333333 277.3333333333334V149.3333333333334H384V320H213.3333333333333V277.3333333333334H341.3333333333333M128 192V64H298.6666666666667V192H128z" /> + <glyph glyph-name="windows" + unicode="&#xF5B3;" + horiz-adv-x="512" d=" M64 192V304L192 332.1600000000001V193.92L64 192M426.6666666666667 384V197.3333333333334L213.3333333333333 194.1333333333333V336.8533333333334L426.6666666666667 384M64 170.6666666666667L192 168.7466666666667V23.4666666666667L64 48V170.6666666666667M426.6666666666667 165.3333333333334V-21.3333333333333L213.3333333333333 19.4133333333334V168.5333333333334L426.6666666666667 165.3333333333334z" /> + <glyph glyph-name="wordpress" + unicode="&#xF5B4;" + horiz-adv-x="512" d=" M260.2666666666667 117.3333333333334L205.8666666666666 -15.36C221.8666666666666 -19.1999999999999 238.72 -21.3333333333333 256 -21.3333333333333C273.92 -21.3333333333333 291.4133333333333 -19.1999999999999 308.0533333333333 -14.9333333333333M439.68 297.3866666666667C443.7333333333334 278.1866666666667 442.88 254.9333333333334 434.9866666666667 229.3333333333334C414.2933333333334 162.7733333333334 362.6666666666667 42.6666666666667 343.4666666666667 -2.7733333333333C417.7066666666667 30.2933333333334 469.3333333333333 104.1066666666667 469.3333333333333 189.8666666666667C469.3333333333333 229.12 458.6666666666666 266.0266666666667 439.68 297.3866666666667M91.9466666666667 263.68S81.4933333333333 277.3333333333334 70.6133333333333 277.3333333333334H59.3066666666667C48.64 253.2266666666667 42.6666666666667 221.44 42.6666666666667 192C42.6666666666667 104.7466666666667 96 29.6533333333334 173.2266666666667 -2.3466666666666M66.7733333333333 295.68C102.4 362.0266666666667 173.6533333333333 405.3333333333333 256 405.3333333333333C309.3333333333333 405.3333333333333 357.9733333333334 382.7200000000001 395.3066666666667 350.7200000000001C384.64 352.8533333333334 373.3333333333333 350.5066666666667 361.1733333333333 343.68C333.6533333333333 327.8933333333333 324.6933333333333 283.52 360.32 261.12C382.7200000000001 247.2533333333333 390.6133333333334 212.48 389.76 191.1466666666667C389.12 170.0266666666667 338.1333333333334 72.3200000000001 338.1333333333334 72.3200000000001L288 242.56S286.72 254.5066666666667 286.72 257.92C286.72 262.1866666666667 288 267.52 290.7733333333333 270.7200000000001C292.6933333333333 272.64 295.4666666666667 277.3333333333334 298.6666666666667 277.3333333333334H322.3466666666666V295.68H194.3466666666666V277.3333333333334H198.3999999999999C202.6666666666666 277.3333333333334 206.72 271.1466666666667 210.56 267.3066666666667C215.2533333333333 262.4 221.2266666666666 244.2666666666667 228.2666666666666 225.4933333333334L246.8266666666666 164.2666666666667L206.72 71.8933333333333L162.7733333333333 256.64S164.0533333333333 269.44 166.8266666666666 271.5733333333333C168.5333333333333 273.0666666666667 170.6666666666667 277.3333333333334 174.2933333333333 277.3333333333334H175.36V295.68H66.7733333333333z" /> + <glyph glyph-name="worker" + unicode="&#xF5B5;" + horiz-adv-x="512" d=" M256 128C161.7066666666667 128 85.3333333333333 89.8133333333334 85.3333333333333 42.6666666666667V0H426.6666666666667V42.6666666666667C426.6666666666667 89.8133333333334 350.2933333333334 128 256 128M170.6666666666667 256C170.6666666666667 208.8533333333333 208.8533333333333 170.6666666666667 256 170.6666666666667S341.3333333333333 208.8533333333333 341.3333333333333 256M245.3333333333333 405.3333333333333C238.9333333333333 405.3333333333333 234.6666666666667 400.8533333333334 234.6666666666667 394.6666666666667V330.6666666666667H213.3333333333333V384S165.3333333333333 365.6533333333333 165.3333333333333 304C165.3333333333333 304 149.3333333333333 301.0133333333333 149.3333333333333 277.3333333333334H362.6666666666667C361.6 301.0133333333333 346.6666666666667 304 346.6666666666667 304C346.6666666666667 365.6533333333333 298.6666666666667 384 298.6666666666667 384V330.6666666666667H277.3333333333333V394.6666666666667C277.3333333333333 400.8533333333334 273.28 405.3333333333333 266.6666666666667 405.3333333333333H245.3333333333333z" /> + <glyph glyph-name="wrap" + unicode="&#xF5B6;" + horiz-adv-x="512" d=" M448 341.3333333333334H64V298.6666666666667H448V341.3333333333334M64 42.6666666666667H213.3333333333333V85.3333333333334H64V42.6666666666667M64 170.6666666666667H384C405.3333333333333 170.6666666666667 426.6666666666667 161.4933333333334 426.6666666666667 128S405.3333333333333 85.3333333333334 384 85.3333333333334H341.3333333333333V128L256 64L341.3333333333333 0V42.6666666666667H384C446.9333333333333 42.6666666666667 469.3333333333333 69.76 469.3333333333333 128C469.3333333333333 186.0266666666667 448 213.3333333333334 384 213.3333333333334H64V170.6666666666667z" /> + <glyph glyph-name="wrench" + unicode="&#xF5B7;" + horiz-adv-x="512" d=" M484.2666666666667 42.6666666666667L290.1333333333334 236.8C309.3333333333333 285.8666666666667 298.6666666666667 343.4666666666667 258.1333333333334 384C215.4666666666667 426.6666666666667 151.4666666666667 435.2 100.2666666666667 411.7333333333334L192 320L128 256L34.1333333333333 347.7333333333334C8.5333333333333 296.5333333333334 19.2 232.5333333333334 61.8666666666667 189.8666666666667C102.4 149.3333333333334 160 138.6666666666667 209.0666666666667 157.8666666666667L403.2 -36.2666666666666C411.7333333333333 -44.8 424.5333333333333 -44.8 433.0666666666666 -36.2666666666666L482.1333333333333 12.8000000000001C492.8 21.3333333333334 492.8 36.2666666666668 484.2666666666667 42.6666666666667z" /> + <glyph glyph-name="wunderlist" + unicode="&#xF5B8;" + horiz-adv-x="512" d=" M362.6666666666667 74.6666666666667L256 128L149.3333333333333 74.6666666666667V341.3333333333334H106.6666666666667V42.6666666666667H405.3333333333333V341.3333333333334H362.6666666666667V74.6666666666667M256 183.04L304 154.24L291.2 208.6400000000001L333.6533333333333 245.3333333333334L277.3333333333333 250.24L256 301.6533333333334L234.6666666666667 250.24L178.3466666666666 245.3333333333334L220.8 208.64L208 154.24L256 183.04M106.6666666666667 384H405.3333333333333C428.8 384 448 364.8 448 341.3333333333334V42.6666666666667C448 19.2 428.8 0 405.3333333333333 0H106.6666666666667C83.2 0 64 19.2 64 42.6666666666667V341.3333333333334C64 364.8 83.2 384 106.6666666666667 384z" /> + <glyph glyph-name="xaml" + unicode="&#xF673;" + horiz-adv-x="512" d=" M403.84 192L329.8133333333333 64H182.1866666666667L108.16 192L182.1866666666667 320H329.8133333333333L403.84 192M507.0933333333333 192L420.9066666666667 42.6666666666667L384 64L457.8133333333333 192L384 320L420.9066666666667 341.3333333333334L507.0933333333333 192M4.9066666666667 192L91.0933333333333 341.3333333333334L128 320L54.1866666666667 192L128 64L91.0933333333333 42.6666666666667L4.9066666666667 192z" /> + <glyph glyph-name="xbox" + unicode="&#xF5B9;" + horiz-adv-x="512" d=" M137.1733333333333 368.64C138.6666666666667 369.92 140.16 371.2 141.2266666666667 372.0533333333334C174.5066666666667 393.6 213.3333333333333 405.3333333333333 256 405.3333333333333C296.1066666666667 405.3333333333333 333.6533333333333 394.6666666666667 365.6533333333333 375.04C368 373.3333333333334 374.1866666666666 369.28 377.6 365.2266666666667C346.6666666666667 399.36 256 326.4 256 326.4C224 350.5066666666667 195.6266666666667 366.9333333333334 174.08 373.3333333333334C155.9466666666667 377.8133333333334 143.5733333333333 373.3333333333334 137.8133333333333 369.0666666666667M412.5866666666667 336.8533333333334C411.52 337.92 410.4533333333333 338.9866666666667 409.6 340.0533333333334C401.92 348.5866666666667 392.1066666666667 350.7200000000001 384 350.0800000000001C375.68 347.52 339.2 334.5066666666667 294.4 292.0533333333334C294.4 292.0533333333334 344.9600000000001 242.9866666666667 375.8933333333333 192.8533333333333C406.8266666666667 142.72 425.1733333333333 103.2533333333333 413.8666666666667 48.4266666666667C448 86.4 469.3333333333333 136.7466666666667 469.3333333333333 192C469.3333333333333 247.8933333333334 448 298.6666666666667 412.5866666666667 336.8533333333334M335.5733333333333 171.52C321.7066666666667 186.88 301.44 208.8533333333333 274.3466666666667 235.7333333333333C268.5866666666667 241.4933333333333 262.4 247.4666666666667 256 253.8666666666667C256 253.8666666666667 245.9733333333333 244.0533333333333 233.1733333333333 231.04C216.7466666666667 214.6133333333333 195.6266666666667 193.0666666666667 183.68 180.48C162.7733333333333 158.0799999999999 102.6133333333333 87.68 99.2 48.2133333333333C99.2 48.2133333333333 85.3333333333333 79.36 115.2 151.68C134.4 198.8266666666666 192 269.6533333333333 216.5333333333333 292.6933333333333C216.5333333333333 292.6933333333333 194.56 317.0133333333333 166.8266666666666 333.8666666666666L165.76 334.5066666666667C152.32 342.4 137.8133333333333 348.5866666666667 123.7333333333333 349.44C109.44 348.3733333333334 100.48 337.92 100.48 337.92C64.64 299.7333333333334 42.6666666666667 248.5333333333334 42.6666666666667 192C42.6666666666667 74.24 138.24 -21.3333333333333 256 -21.3333333333333C318.5066666666667 -21.3333333333333 374.8266666666667 5.5466666666667 413.8666666666666 48.4266666666667C413.8666666666666 48.4266666666667 409.3866666666666 76.8000000000001 380.5866666666667 117.3333333333334C373.9733333333334 126.5066666666667 349.2266666666667 155.9466666666667 335.5733333333333 171.52z" /> + <glyph glyph-name="xbox-controller" + unicode="&#xF5BA;" + horiz-adv-x="512" d=" M186.6666666666667 112C144 112 128 64 85.3333333333333 42.6666666666667C42.6666666666667 42.6666666666667 10.6666666666667 106.6666666666667 96 288H101.3333333333333L110.72 305.7066666666667S170.6666666666667 341.3333333333334 199.04 315.0933333333334H312.96C341.3333333333333 341.3333333333334 401.28 305.7066666666667 401.28 305.7066666666667L410.6666666666667 288H416C501.3333333333333 106.6666666666667 469.3333333333333 42.6666666666667 426.6666666666667 42.6666666666667C384 64 368 112 325.3333333333333 112H186.6666666666667M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="xbox-controller-off" + unicode="&#xF5BB;" + horiz-adv-x="512" d=" M42.6666666666667 335.5733333333334L69.9733333333333 362.6666666666667L426.6666666666667 5.9733333333334L399.5733333333333 -21.3333333333333L266.6666666666667 112H186.6666666666667C144 112 128 64 85.3333333333333 42.6666666666667C42.6666666666667 42.6666666666667 10.6666666666667 105.8133333333334 94.2933333333333 283.9466666666667L42.6666666666667 335.5733333333334M199.04 315.0933333333334H312.96C341.3333333333333 341.3333333333334 401.28 305.7066666666667 401.28 305.7066666666667L410.6666666666667 288H416C490.6666666666666 128 475.3066666666667 59.7333333333334 441.3866666666667 45.4400000000001L162.56 324.2666666666667C176 325.76 189.2266666666667 324.0533333333334 199.04 315.0933333333334M256 298.6666666666667C244.2666666666667 298.6666666666667 234.6666666666667 289.0666666666667 234.6666666666667 277.3333333333334S244.2666666666667 256 256 256S277.3333333333333 265.6 277.3333333333333 277.3333333333334S267.7333333333334 298.6666666666667 256 298.6666666666667z" /> + <glyph glyph-name="xda" + unicode="&#xF5BC;" + horiz-adv-x="512" d=" M-1.0666666666667 89.8133333333334L68.0533333333333 171.3066666666667L-1.0666666666667 252.8000000000001L32 280.32L96 204.5866666666667L160 280.32L193.0666666666667 252.8L123.9466666666667 171.3066666666667L193.0666666666667 89.8133333333334L160 62.5066666666667L96 138.6666666666667L32 62.5066666666667L-1.0666666666666 89.8133333333334M512 85.3333333333334C512 73.6 502.4 64 490.6666666666666 64H426.6666666666667C403.2 64 384 83.2 384 106.6666666666667V149.3333333333334C384 172.8 403.2 192 426.6666666666667 192H469.3333333333333V234.6666666666667H384V277.3333333333334H490.6666666666666C502.4 277.3333333333334 512 267.7333333333334 512 256M469.3333333333333 149.3333333333334H426.6666666666667V106.6666666666667H469.3333333333333V149.3333333333334M341.3333333333333 85.3333333333334C341.3333333333333 73.6 331.7333333333334 64 320 64H256C232.5333333333334 64 213.3333333333333 83.2 213.3333333333333 106.6666666666667V234.6666666666667C213.3333333333333 258.1333333333334 232.5333333333334 277.3333333333334 256 277.3333333333334H298.6666666666667V341.3333333333334H341.3333333333333V85.3333333333334M298.6666666666667 106.6666666666667V234.6666666666667H256V106.6666666666667H298.6666666666667z" /> + <glyph glyph-name="xing" + unicode="&#xF5BD;" + horiz-adv-x="512" d=" M376.9600000000001 405.3333333333333C367.7866666666667 405.3333333333333 363.7333333333334 399.5733333333333 360.5333333333334 393.6C360.5333333333334 393.6 227.8400000000001 158.5066666666667 224 150.8266666666667L311.04 -9.6C314.0266666666667 -15.1466666666666 318.7200000000001 -21.3333333333333 328.1066666666667 -21.3333333333333H389.5466666666667C393.3866666666667 -21.3333333333333 396.16 -19.84 397.6533333333333 -17.4933333333333C399.36 -14.72 399.36 -11.3066666666667 397.6533333333333 -7.8933333333333L310.8266666666667 151.04L447.1466666666667 391.8933333333333C448.8533333333333 395.3066666666666 448.8533333333333 398.7199999999999 447.36 401.4933333333333C445.6533333333334 403.8399999999999 442.88 405.3333333333333 439.04 405.3333333333333M118.4 321.0666666666667C114.7733333333333 321.0666666666667 111.5733333333333 320 110.08 317.2266666666667C108.3733333333333 314.4533333333334 108.5866666666667 311.2533333333334 110.5066666666667 307.8400000000001L151.8933333333333 235.3066666666667L86.6133333333333 120.1066666666667C85.3333333333333 116.6933333333333 85.3333333333333 113.28 86.6133333333333 110.5066666666667C88.1066666666666 107.9466666666667 90.88 106.6666666666667 94.5066666666666 106.6666666666667H156.16C165.3333333333333 106.6666666666667 169.8133333333333 112.64 173.0133333333333 118.4C173.0133333333333 118.4 236.8 231.2533333333334 239.36 235.7333333333334L197.12 309.3333333333334C194.1333333333333 314.88 189.44 321.0666666666667 179.84 321.0666666666667" /> + <glyph glyph-name="xing-box" + unicode="&#xF5BE;" + horiz-adv-x="512" d=" M102.4 384C81.0666666666667 384 64 366.9333333333334 64 345.6V38.4C64 17.0666666666667 81.0666666666667 0 102.4 0H409.6C430.9333333333333 0 448 17.0666666666667 448 38.4V345.6C448 366.9333333333334 430.9333333333333 384 409.6 384M342.8266666666667 341.3333333333334H386.3466666666667C388.9066666666667 341.3333333333334 391.04 340.48 391.8933333333333 338.56C393.1733333333333 336.64 393.1733333333333 334.2933333333334 391.8933333333333 331.9466666666667L296.5333333333334 162.9866666666667L357.3333333333334 52.0533333333334C358.6133333333334 49.7066666666667 358.6133333333334 47.3600000000001 357.3333333333334 45.4400000000001C356.2666666666667 43.7333333333335 354.3466666666667 42.6666666666667 352.0000000000001 42.6666666666667H308.6933333333334C302.0800000000001 42.6666666666667 298.6666666666668 47.1466666666668 296.7466666666668 50.9866666666668L235.5200000000001 163.2000000000001L331.3066666666668 333.0133333333335C333.6533333333334 337.2800000000001 336.4266666666668 341.3333333333335 342.8266666666667 341.3333333333335M151.2533333333333 282.4533333333334H194.1333333333333C200.7466666666667 282.4533333333334 204.16 278.1866666666667 206.2933333333333 274.1333333333334L235.9466666666667 222.5066666666667C234.0266666666667 219.52 189.44 140.3733333333333 189.44 140.3733333333333C187.0933333333334 136.3200000000001 184.1066666666667 132.0533333333334 177.4933333333334 132.0533333333334H134.4C131.84 132.0533333333334 129.92 133.12 128.8533333333333 135.04C128 136.7466666666667 128 139.3066666666667 128.8533333333333 141.6533333333334L174.5066666666667 222.5066666666667L145.4933333333334 273.0666666666667C144.4266666666667 275.4133333333334 144 277.3333333333334 145.28 279.68C146.3466666666667 281.3866666666667 148.48 282.4533333333334 151.2533333333333 282.4533333333334z" /> + <glyph glyph-name="xing-circle" + unicode="&#xF5BF;" + horiz-adv-x="512" d=" M256 405.3333333333333C138.24 405.3333333333333 42.6666666666667 309.76 42.6666666666667 192S138.24 -21.3333333333333 256 -21.3333333333333S469.3333333333333 74.24 469.3333333333333 192S373.76 405.3333333333333 256 405.3333333333333M338.1333333333334 320H378.4533333333333C381.0133333333333 320 382.7199999999999 319.1466666666667 384 317.44C384.8533333333333 315.7333333333334 384.8533333333333 313.6 384 311.2533333333334L295.2533333333334 154.4533333333334L352 51.4133333333334C352.64 49.28 352.64 46.9333333333333 352 45.2266666666667C350.5066666666667 43.5200000000001 348.8 42.6666666666667 346.4533333333333 42.6666666666667H306.3466666666667C300.16 42.6666666666667 297.1733333333333 46.72 295.2533333333334 50.3466666666667L238.2933333333333 154.4533333333333C241.28 160 327.4666666666667 312.32 327.4666666666667 312.32C329.6 316.16 332.16 320 338.1333333333334 320M160 265.1733333333334H200.32C206.2933333333333 265.1733333333334 209.28 261.3333333333334 211.2 257.7066666666667L238.7200000000001 209.7066666666667C237.2266666666667 206.9333333333333 195.6266666666667 133.3333333333334 195.6266666666667 133.3333333333334C193.4933333333334 129.7066666666667 190.72 125.6533333333334 184.7466666666667 125.6533333333334H144.64C142.2933333333333 125.6533333333334 140.5866666666667 126.72 139.52 128C138.6666666666667 130.1333333333333 138.6666666666667 132.2666666666667 139.52 134.6133333333334L181.9733333333333 209.7066666666667L155.0933333333333 256C153.8133333333333 258.7733333333334 153.6 260.9066666666667 154.6666666666667 262.6133333333334C155.7333333333333 264.3200000000001 157.6533333333333 265.1733333333334 160 265.1733333333334z" /> + <glyph glyph-name="xml" + unicode="&#xF5C0;" + horiz-adv-x="512" d=" M274.9866666666667 384L316.8 375.4666666666667L237.0133333333333 0L195.2 8.5333333333333L274.9866666666667 384M417.92 192L341.3333333333333 268.5866666666667V328.9600000000001L478.2933333333334 192L341.3333333333333 55.2533333333333V115.6266666666667L417.92 192M33.7066666666667 192L170.6666666666667 328.9600000000001V268.5866666666667L94.08 192L170.6666666666667 115.6266666666667V55.2533333333333L33.7066666666667 192z" /> + <glyph glyph-name="yeast" + unicode="&#xF5C1;" + horiz-adv-x="512" d=" M384 149.3333333333334C431.1466666666667 149.3333333333334 469.3333333333333 111.1466666666667 469.3333333333333 64S431.1466666666667 -21.3333333333333 384 -21.3333333333333S298.6666666666667 16.8533333333334 298.6666666666667 64L300.5866666666667 82.1333333333334C299.7333333333334 97.0666666666667 296.96 110.08 289.0666666666667 117.3333333333334C284.8 121.6 278.8266666666667 123.9466666666667 272 125.2266666666667C251.52 113.4933333333334 227.84 106.6666666666667 202.6666666666667 106.6666666666667C126.08 106.6666666666667 64 168.7466666666667 64 245.3333333333334S126.08 384 202.6666666666667 384S341.3333333333333 321.92 341.3333333333333 245.3333333333334C341.3333333333333 220.16 334.5066666666667 196.48 322.7733333333333 176C324.0533333333334 169.1733333333334 326.4 163.2000000000001 330.6666666666667 158.9333333333333C337.92 151.04 350.9333333333333 148.2666666666667 365.8666666666666 147.4133333333334L384 149.3333333333334M160 234.6666666666667C177.7066666666667 234.6666666666667 192 220.3733333333333 192 202.6666666666667S177.7066666666667 170.6666666666667 160 170.6666666666667S128 184.96 128 202.6666666666667S142.2933333333333 234.6666666666667 160 234.6666666666667M202.6666666666667 341.3333333333334C149.3333333333333 341.3333333333334 106.6666666666667 298.6666666666667 106.6666666666667 245.3333333333334S149.3333333333333 149.3333333333334 202.6666666666667 149.3333333333334S298.6666666666667 192 298.6666666666667 245.3333333333334S256 341.3333333333334 202.6666666666667 341.3333333333334z" /> + <glyph glyph-name="yelp" + unicode="&#xF5C2;" + horiz-adv-x="512" d=" M225.92 405.3333333333333C239.5733333333333 405.3333333333333 245.3333333333333 399.5733333333333 247.04 384.64L251.52 317.0133333333333L256.64 228.48C257.0666666666667 221.0133333333334 256 213.3333333333334 253.0133333333334 206.5066666666667C248.32 196.9066666666667 237.6533333333334 194.3466666666667 228.9066666666667 200.96C224 205.0133333333334 219.9466666666667 210.3466666666667 216.5333333333333 216.1066666666668L136.96 350.9333333333334C129.28 363.9466666666667 131.6266666666667 372.48 144.4266666666667 380.5866666666667C160 390.8266666666667 207.5733333333333 405.3333333333333 225.92 405.3333333333333M316.3733333333334 131.2000000000001L321.92 129.92L404.2666666666667 100.0533333333334C418.3466666666667 94.9333333333334 422.1866666666666 87.0400000000001 416 73.1733333333334C406.6133333333333 49.0666666666667 391.2533333333334 28.5866666666667 371.6266666666667 11.7333333333333C361.8133333333334 3.2 352 4.6933333333334 345.8133333333334 15.3600000000001L297.3866666666667 99.8400000000001C289.0666666666667 114.9866666666668 299.3066666666667 132.2666666666668 316.3733333333334 131.2000000000001M96 149.3333333333334C96 165.12 96 180.2666666666667 101.3333333333333 194.7733333333333C106.0266666666667 209.0666666666667 113.7066666666667 213.3333333333333 128 207.5733333333333L205.44 174.72C215.2533333333333 170.6666666666666 220.8 163.84 220.3733333333333 152.7466666666667C219.7333333333333 141.6533333333333 212.6933333333333 136.96 203.3066666666666 133.76L124.8 107.9466666666667C109.8666666666666 103.04 102.1866666666666 107.52 98.9866666666666 122.6666666666666C97.0666666666666 131.6266666666667 95.36 140.8 96 149.3333333333333M255.36 0C254.9333333333333 -17.28 247.4666666666667 -23.8933333333333 230.6133333333333 -21.3333333333333C208.4266666666667 -17.0666666666667 187.9466666666666 -8.5333333333333 169.8133333333333 5.12C160.8533333333333 11.9466666666667 158.9333333333333 22.4 165.5466666666666 31.36L223.36 107.3066666666667C228.2666666666667 113.7066666666667 235.3066666666667 115.2 242.9866666666666 112.2133333333334C251.0933333333333 109.2266666666667 255.36 102.8266666666667 255.36 94.08V0M308.2666666666667 163.84C292.9066666666667 163.6266666666667 282.24 181.3333333333334 290.9866666666666 193.92C308.6933333333333 220.3733333333333 327.4666666666666 246.1866666666667 346.2399999999999 271.7866666666667C351.9999999999999 280.5333333333334 361.3866666666666 281.1733333333334 369.2799999999999 273.92C389.1199999999999 256 403.4133333333333 234.6666666666667 411.5199999999999 208.64C414.5066666666666 199.04 410.6666666666666 190.2933333333334 401.7066666666666 187.7333333333334L321.9199999999999 167.04L308.2666666666666 163.84z" /> + <glyph glyph-name="youtube-play" + unicode="&#xF5C3;" + horiz-adv-x="512" d=" M213.3333333333333 96V288L341.3333333333333 192M426.6666666666667 354.1333333333334C413.8666666666666 358.4 334.9333333333333 362.6666666666667 256 362.6666666666667S98.1333333333333 358.6133333333334 85.3333333333333 354.56C52.0533333333333 343.4666666666667 42.6666666666667 268.8 42.6666666666667 192C42.6666666666667 115.4133333333334 52.0533333333333 40.5333333333333 85.3333333333333 29.6533333333334C98.1333333333333 25.3866666666667 177.0666666666667 21.3333333333334 256 21.3333333333334S413.8666666666666 25.3866666666667 426.6666666666667 29.6533333333334C459.9466666666666 40.5333333333334 469.3333333333333 115.4133333333334 469.3333333333333 192C469.3333333333333 268.8 459.9466666666666 343.2533333333334 426.6666666666667 354.1333333333334z" /> + <glyph glyph-name="zip-box" + unicode="&#xF5C4;" + horiz-adv-x="512" d=" M298.6666666666667 85.3333333333334H256V128H213.3333333333333V170.6666666666667H256V128H298.6666666666667M298.6666666666667 256H256V213.3333333333334H298.6666666666667V170.6666666666667H256V213.3333333333334H213.3333333333333V256H256V298.6666666666667H213.3333333333333V341.3333333333334H256V298.6666666666667H298.6666666666667M405.3333333333333 384H106.6666666666667C82.9866666666667 384 64 365.0133333333333 64 341.3333333333334V42.6666666666667C64 19.2 83.2 0 106.6666666666667 0H405.3333333333333C428.8 0 448 19.2 448 42.6666666666667V341.3333333333334C448 365.0133333333333 428.8 384 405.3333333333333 384z" /> + </font> +</defs> +</svg> diff --git a/assets/less/icons/material-design/fonts/materialdesignicons-webfont.ttf b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.ttf new file mode 100644 index 0000000..7fab06c Binary files /dev/null and b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.ttf differ diff --git a/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff new file mode 100644 index 0000000..e467721 Binary files /dev/null and b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff differ diff --git a/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff2 b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff2 new file mode 100644 index 0000000..2c39f49 Binary files /dev/null and b/assets/less/icons/material-design/fonts/materialdesignicons-webfont.woff2 differ diff --git a/assets/less/icons/material-design/materialdesignicons.less b/assets/less/icons/material-design/materialdesignicons.less new file mode 100644 index 0000000..79b8bd6 --- /dev/null +++ b/assets/less/icons/material-design/materialdesignicons.less @@ -0,0 +1,6707 @@ +/* MaterialDesignIcons.com */ +@font-face { + font-family: "Material Design Icons"; + src: url("../fonts/materialdesignicons-webfont.eot?v=1.6.50"); + src: url("../fonts/materialdesignicons-webfont.eot?#iefix&v=1.6.50") format("embedded-opentype"), url("../fonts/materialdesignicons-webfont.woff2?v=1.6.50") format("woff2"), url("../fonts/materialdesignicons-webfont.woff?v=1.6.50") format("woff"), url("../fonts/materialdesignicons-webfont.ttf?v=1.6.50") format("truetype"), url("../fonts/materialdesignicons-webfont.svg?v=1.6.50#materialdesigniconsregular") format("svg"); + font-weight: normal; + font-style: normal; +} +.mdi { + display: inline-block; + font: normal normal normal 24px/1 "Material Design Icons"; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); +} + +.mdi-access-point:before { + content: "\F002"; +} + +.mdi-access-point-network:before { + content: "\F003"; +} + +.mdi-account:before { + content: "\F004"; +} + +.mdi-account-alert:before { + content: "\F005"; +} + +.mdi-account-box:before { + content: "\F006"; +} + +.mdi-account-box-outline:before { + content: "\F007"; +} + +.mdi-account-card-details:before { + content: "\F5D2"; +} + +.mdi-account-check:before { + content: "\F008"; +} + +.mdi-account-circle:before { + content: "\F009"; +} + +.mdi-account-convert:before { + content: "\F00A"; +} + +.mdi-account-key:before { + content: "\F00B"; +} + +.mdi-account-location:before { + content: "\F00C"; +} + +.mdi-account-minus:before { + content: "\F00D"; +} + +.mdi-account-multiple:before { + content: "\F00E"; +} + +.mdi-account-multiple-minus:before { + content: "\F5D3"; +} + +.mdi-account-multiple-outline:before { + content: "\F00F"; +} + +.mdi-account-multiple-plus:before { + content: "\F010"; +} + +.mdi-account-network:before { + content: "\F011"; +} + +.mdi-account-off:before { + content: "\F012"; +} + +.mdi-account-outline:before { + content: "\F013"; +} + +.mdi-account-plus:before { + content: "\F014"; +} + +.mdi-account-remove:before { + content: "\F015"; +} + +.mdi-account-search:before { + content: "\F016"; +} + +.mdi-account-settings:before { + content: "\F630"; +} + +.mdi-account-settings-variant:before { + content: "\F631"; +} + +.mdi-account-star:before { + content: "\F017"; +} + +.mdi-account-star-variant:before { + content: "\F018"; +} + +.mdi-account-switch:before { + content: "\F019"; +} + +.mdi-adjust:before { + content: "\F01A"; +} + +.mdi-air-conditioner:before { + content: "\F01B"; +} + +.mdi-airballoon:before { + content: "\F01C"; +} + +.mdi-airplane:before { + content: "\F01D"; +} + +.mdi-airplane-landing:before { + content: "\F5D4"; +} + +.mdi-airplane-off:before { + content: "\F01E"; +} + +.mdi-airplane-takeoff:before { + content: "\F5D5"; +} + +.mdi-airplay:before { + content: "\F01F"; +} + +.mdi-alarm:before { + content: "\F020"; +} + +.mdi-alarm-check:before { + content: "\F021"; +} + +.mdi-alarm-multiple:before { + content: "\F022"; +} + +.mdi-alarm-off:before { + content: "\F023"; +} + +.mdi-alarm-plus:before { + content: "\F024"; +} + +.mdi-album:before { + content: "\F025"; +} + +.mdi-alert:before { + content: "\F026"; +} + +.mdi-alert-box:before { + content: "\F027"; +} + +.mdi-alert-circle:before { + content: "\F028"; +} + +.mdi-alert-circle-outline:before { + content: "\F5D6"; +} + +.mdi-alert-octagon:before { + content: "\F029"; +} + +.mdi-alert-outline:before { + content: "\F02A"; +} + +.mdi-alpha:before { + content: "\F02B"; +} + +.mdi-alphabetical:before { + content: "\F02C"; +} + +.mdi-altimeter:before { + content: "\F5D7"; +} + +.mdi-amazon:before { + content: "\F02D"; +} + +.mdi-amazon-clouddrive:before { + content: "\F02E"; +} + +.mdi-ambulance:before { + content: "\F02F"; +} + +.mdi-amplifier:before { + content: "\F030"; +} + +.mdi-anchor:before { + content: "\F031"; +} + +.mdi-android:before { + content: "\F032"; +} + +.mdi-android-debug-bridge:before { + content: "\F033"; +} + +.mdi-android-studio:before { + content: "\F034"; +} + +.mdi-animation:before { + content: "\F5D8"; +} + +.mdi-apple:before { + content: "\F035"; +} + +.mdi-apple-finder:before { + content: "\F036"; +} + +.mdi-apple-ios:before { + content: "\F037"; +} + +.mdi-apple-keyboard-caps:before { + content: "\F632"; +} + +.mdi-apple-keyboard-command:before { + content: "\F633"; +} + +.mdi-apple-keyboard-control:before { + content: "\F634"; +} + +.mdi-apple-keyboard-option:before { + content: "\F635"; +} + +.mdi-apple-keyboard-shift:before { + content: "\F636"; +} + +.mdi-apple-mobileme:before { + content: "\F038"; +} + +.mdi-apple-safari:before { + content: "\F039"; +} + +.mdi-application:before { + content: "\F614"; +} + +.mdi-appnet:before { + content: "\F03A"; +} + +.mdi-apps:before { + content: "\F03B"; +} + +.mdi-archive:before { + content: "\F03C"; +} + +.mdi-arrange-bring-forward:before { + content: "\F03D"; +} + +.mdi-arrange-bring-to-front:before { + content: "\F03E"; +} + +.mdi-arrange-send-backward:before { + content: "\F03F"; +} + +.mdi-arrange-send-to-back:before { + content: "\F040"; +} + +.mdi-arrow-all:before { + content: "\F041"; +} + +.mdi-arrow-bottom-left:before { + content: "\F042"; +} + +.mdi-arrow-bottom-right:before { + content: "\F043"; +} + +.mdi-arrow-compress:before { + content: "\F615"; +} + +.mdi-arrow-compress-all:before { + content: "\F044"; +} + +.mdi-arrow-down:before { + content: "\F045"; +} + +.mdi-arrow-down-bold:before { + content: "\F046"; +} + +.mdi-arrow-down-bold-circle:before { + content: "\F047"; +} + +.mdi-arrow-down-bold-circle-outline:before { + content: "\F048"; +} + +.mdi-arrow-down-bold-hexagon-outline:before { + content: "\F049"; +} + +.mdi-arrow-down-drop-circle:before { + content: "\F04A"; +} + +.mdi-arrow-down-drop-circle-outline:before { + content: "\F04B"; +} + +.mdi-arrow-expand:before { + content: "\F616"; +} + +.mdi-arrow-expand-all:before { + content: "\F04C"; +} + +.mdi-arrow-left:before { + content: "\F04D"; +} + +.mdi-arrow-left-bold:before { + content: "\F04E"; +} + +.mdi-arrow-left-bold-circle:before { + content: "\F04F"; +} + +.mdi-arrow-left-bold-circle-outline:before { + content: "\F050"; +} + +.mdi-arrow-left-bold-hexagon-outline:before { + content: "\F051"; +} + +.mdi-arrow-left-drop-circle:before { + content: "\F052"; +} + +.mdi-arrow-left-drop-circle-outline:before { + content: "\F053"; +} + +.mdi-arrow-right:before { + content: "\F054"; +} + +.mdi-arrow-right-bold:before { + content: "\F055"; +} + +.mdi-arrow-right-bold-circle:before { + content: "\F056"; +} + +.mdi-arrow-right-bold-circle-outline:before { + content: "\F057"; +} + +.mdi-arrow-right-bold-hexagon-outline:before { + content: "\F058"; +} + +.mdi-arrow-right-drop-circle:before { + content: "\F059"; +} + +.mdi-arrow-right-drop-circle-outline:before { + content: "\F05A"; +} + +.mdi-arrow-top-left:before { + content: "\F05B"; +} + +.mdi-arrow-top-right:before { + content: "\F05C"; +} + +.mdi-arrow-up:before { + content: "\F05D"; +} + +.mdi-arrow-up-bold:before { + content: "\F05E"; +} + +.mdi-arrow-up-bold-circle:before { + content: "\F05F"; +} + +.mdi-arrow-up-bold-circle-outline:before { + content: "\F060"; +} + +.mdi-arrow-up-bold-hexagon-outline:before { + content: "\F061"; +} + +.mdi-arrow-up-drop-circle:before { + content: "\F062"; +} + +.mdi-arrow-up-drop-circle-outline:before { + content: "\F063"; +} + +.mdi-assistant:before { + content: "\F064"; +} + +.mdi-at:before { + content: "\F065"; +} + +.mdi-attachment:before { + content: "\F066"; +} + +.mdi-audiobook:before { + content: "\F067"; +} + +.mdi-auto-fix:before { + content: "\F068"; +} + +.mdi-auto-upload:before { + content: "\F069"; +} + +.mdi-autorenew:before { + content: "\F06A"; +} + +.mdi-av-timer:before { + content: "\F06B"; +} + +.mdi-baby:before { + content: "\F06C"; +} + +.mdi-backburger:before { + content: "\F06D"; +} + +.mdi-backspace:before { + content: "\F06E"; +} + +.mdi-backup-restore:before { + content: "\F06F"; +} + +.mdi-bank:before { + content: "\F070"; +} + +.mdi-barcode:before { + content: "\F071"; +} + +.mdi-barcode-scan:before { + content: "\F072"; +} + +.mdi-barley:before { + content: "\F073"; +} + +.mdi-barrel:before { + content: "\F074"; +} + +.mdi-basecamp:before { + content: "\F075"; +} + +.mdi-basket:before { + content: "\F076"; +} + +.mdi-basket-fill:before { + content: "\F077"; +} + +.mdi-basket-unfill:before { + content: "\F078"; +} + +.mdi-battery:before { + content: "\F079"; +} + +.mdi-battery-10:before { + content: "\F07A"; +} + +.mdi-battery-20:before { + content: "\F07B"; +} + +.mdi-battery-30:before { + content: "\F07C"; +} + +.mdi-battery-40:before { + content: "\F07D"; +} + +.mdi-battery-50:before { + content: "\F07E"; +} + +.mdi-battery-60:before { + content: "\F07F"; +} + +.mdi-battery-70:before { + content: "\F080"; +} + +.mdi-battery-80:before { + content: "\F081"; +} + +.mdi-battery-90:before { + content: "\F082"; +} + +.mdi-battery-alert:before { + content: "\F083"; +} + +.mdi-battery-charging:before { + content: "\F084"; +} + +.mdi-battery-charging-100:before { + content: "\F085"; +} + +.mdi-battery-charging-20:before { + content: "\F086"; +} + +.mdi-battery-charging-30:before { + content: "\F087"; +} + +.mdi-battery-charging-40:before { + content: "\F088"; +} + +.mdi-battery-charging-60:before { + content: "\F089"; +} + +.mdi-battery-charging-80:before { + content: "\F08A"; +} + +.mdi-battery-charging-90:before { + content: "\F08B"; +} + +.mdi-battery-minus:before { + content: "\F08C"; +} + +.mdi-battery-negative:before { + content: "\F08D"; +} + +.mdi-battery-outline:before { + content: "\F08E"; +} + +.mdi-battery-plus:before { + content: "\F08F"; +} + +.mdi-battery-positive:before { + content: "\F090"; +} + +.mdi-battery-unknown:before { + content: "\F091"; +} + +.mdi-beach:before { + content: "\F092"; +} + +.mdi-beats:before { + content: "\F097"; +} + +.mdi-beer:before { + content: "\F098"; +} + +.mdi-behance:before { + content: "\F099"; +} + +.mdi-bell:before { + content: "\F09A"; +} + +.mdi-bell-off:before { + content: "\F09B"; +} + +.mdi-bell-outline:before { + content: "\F09C"; +} + +.mdi-bell-plus:before { + content: "\F09D"; +} + +.mdi-bell-ring:before { + content: "\F09E"; +} + +.mdi-bell-ring-outline:before { + content: "\F09F"; +} + +.mdi-bell-sleep:before { + content: "\F0A0"; +} + +.mdi-beta:before { + content: "\F0A1"; +} + +.mdi-bible:before { + content: "\F0A2"; +} + +.mdi-bike:before { + content: "\F0A3"; +} + +.mdi-bing:before { + content: "\F0A4"; +} + +.mdi-binoculars:before { + content: "\F0A5"; +} + +.mdi-bio:before { + content: "\F0A6"; +} + +.mdi-biohazard:before { + content: "\F0A7"; +} + +.mdi-bitbucket:before { + content: "\F0A8"; +} + +.mdi-black-mesa:before { + content: "\F0A9"; +} + +.mdi-blackberry:before { + content: "\F0AA"; +} + +.mdi-blender:before { + content: "\F0AB"; +} + +.mdi-blinds:before { + content: "\F0AC"; +} + +.mdi-block-helper:before { + content: "\F0AD"; +} + +.mdi-blogger:before { + content: "\F0AE"; +} + +.mdi-bluetooth:before { + content: "\F0AF"; +} + +.mdi-bluetooth-audio:before { + content: "\F0B0"; +} + +.mdi-bluetooth-connect:before { + content: "\F0B1"; +} + +.mdi-bluetooth-off:before { + content: "\F0B2"; +} + +.mdi-bluetooth-settings:before { + content: "\F0B3"; +} + +.mdi-bluetooth-transfer:before { + content: "\F0B4"; +} + +.mdi-blur:before { + content: "\F0B5"; +} + +.mdi-blur-linear:before { + content: "\F0B6"; +} + +.mdi-blur-off:before { + content: "\F0B7"; +} + +.mdi-blur-radial:before { + content: "\F0B8"; +} + +.mdi-bone:before { + content: "\F0B9"; +} + +.mdi-book:before { + content: "\F0BA"; +} + +.mdi-book-minus:before { + content: "\F5D9"; +} + +.mdi-book-multiple:before { + content: "\F0BB"; +} + +.mdi-book-multiple-variant:before { + content: "\F0BC"; +} + +.mdi-book-open:before { + content: "\F0BD"; +} + +.mdi-book-open-page-variant:before { + content: "\F5DA"; +} + +.mdi-book-open-variant:before { + content: "\F0BE"; +} + +.mdi-book-plus:before { + content: "\F5DB"; +} + +.mdi-book-variant:before { + content: "\F0BF"; +} + +.mdi-bookmark:before { + content: "\F0C0"; +} + +.mdi-bookmark-check:before { + content: "\F0C1"; +} + +.mdi-bookmark-music:before { + content: "\F0C2"; +} + +.mdi-bookmark-outline:before { + content: "\F0C3"; +} + +.mdi-bookmark-plus:before { + content: "\F0C5"; +} + +.mdi-bookmark-plus-outline:before { + content: "\F0C4"; +} + +.mdi-bookmark-remove:before { + content: "\F0C6"; +} + +.mdi-boombox:before { + content: "\F5DC"; +} + +.mdi-border-all:before { + content: "\F0C7"; +} + +.mdi-border-bottom:before { + content: "\F0C8"; +} + +.mdi-border-color:before { + content: "\F0C9"; +} + +.mdi-border-horizontal:before { + content: "\F0CA"; +} + +.mdi-border-inside:before { + content: "\F0CB"; +} + +.mdi-border-left:before { + content: "\F0CC"; +} + +.mdi-border-none:before { + content: "\F0CD"; +} + +.mdi-border-outside:before { + content: "\F0CE"; +} + +.mdi-border-right:before { + content: "\F0CF"; +} + +.mdi-border-style:before { + content: "\F0D0"; +} + +.mdi-border-top:before { + content: "\F0D1"; +} + +.mdi-border-vertical:before { + content: "\F0D2"; +} + +.mdi-bowl:before { + content: "\F617"; +} + +.mdi-bowling:before { + content: "\F0D3"; +} + +.mdi-box:before { + content: "\F0D4"; +} + +.mdi-box-cutter:before { + content: "\F0D5"; +} + +.mdi-box-shadow:before { + content: "\F637"; +} + +.mdi-bridge:before { + content: "\F618"; +} + +.mdi-briefcase:before { + content: "\F0D6"; +} + +.mdi-briefcase-check:before { + content: "\F0D7"; +} + +.mdi-briefcase-download:before { + content: "\F0D8"; +} + +.mdi-briefcase-upload:before { + content: "\F0D9"; +} + +.mdi-brightness-1:before { + content: "\F0DA"; +} + +.mdi-brightness-2:before { + content: "\F0DB"; +} + +.mdi-brightness-3:before { + content: "\F0DC"; +} + +.mdi-brightness-4:before { + content: "\F0DD"; +} + +.mdi-brightness-5:before { + content: "\F0DE"; +} + +.mdi-brightness-6:before { + content: "\F0DF"; +} + +.mdi-brightness-7:before { + content: "\F0E0"; +} + +.mdi-brightness-auto:before { + content: "\F0E1"; +} + +.mdi-broom:before { + content: "\F0E2"; +} + +.mdi-brush:before { + content: "\F0E3"; +} + +.mdi-buffer:before { + content: "\F619"; +} + +.mdi-bug:before { + content: "\F0E4"; +} + +.mdi-bulletin-board:before { + content: "\F0E5"; +} + +.mdi-bullhorn:before { + content: "\F0E6"; +} + +.mdi-bullseye:before { + content: "\F5DD"; +} + +.mdi-burst-mode:before { + content: "\F5DE"; +} + +.mdi-bus:before { + content: "\F0E7"; +} + +.mdi-cached:before { + content: "\F0E8"; +} + +.mdi-cake:before { + content: "\F0E9"; +} + +.mdi-cake-layered:before { + content: "\F0EA"; +} + +.mdi-cake-variant:before { + content: "\F0EB"; +} + +.mdi-calculator:before { + content: "\F0EC"; +} + +.mdi-calendar:before { + content: "\F0ED"; +} + +.mdi-calendar-blank:before { + content: "\F0EE"; +} + +.mdi-calendar-check:before { + content: "\F0EF"; +} + +.mdi-calendar-clock:before { + content: "\F0F0"; +} + +.mdi-calendar-multiple:before { + content: "\F0F1"; +} + +.mdi-calendar-multiple-check:before { + content: "\F0F2"; +} + +.mdi-calendar-plus:before { + content: "\F0F3"; +} + +.mdi-calendar-remove:before { + content: "\F0F4"; +} + +.mdi-calendar-text:before { + content: "\F0F5"; +} + +.mdi-calendar-today:before { + content: "\F0F6"; +} + +.mdi-call-made:before { + content: "\F0F7"; +} + +.mdi-call-merge:before { + content: "\F0F8"; +} + +.mdi-call-missed:before { + content: "\F0F9"; +} + +.mdi-call-received:before { + content: "\F0FA"; +} + +.mdi-call-split:before { + content: "\F0FB"; +} + +.mdi-camcorder:before { + content: "\F0FC"; +} + +.mdi-camcorder-box:before { + content: "\F0FD"; +} + +.mdi-camcorder-box-off:before { + content: "\F0FE"; +} + +.mdi-camcorder-off:before { + content: "\F0FF"; +} + +.mdi-camera:before { + content: "\F100"; +} + +.mdi-camera-enhance:before { + content: "\F101"; +} + +.mdi-camera-front:before { + content: "\F102"; +} + +.mdi-camera-front-variant:before { + content: "\F103"; +} + +.mdi-camera-iris:before { + content: "\F104"; +} + +.mdi-camera-off:before { + content: "\F5DF"; +} + +.mdi-camera-party-mode:before { + content: "\F105"; +} + +.mdi-camera-rear:before { + content: "\F106"; +} + +.mdi-camera-rear-variant:before { + content: "\F107"; +} + +.mdi-camera-switch:before { + content: "\F108"; +} + +.mdi-camera-timer:before { + content: "\F109"; +} + +.mdi-candle:before { + content: "\F5E2"; +} + +.mdi-candycane:before { + content: "\F10A"; +} + +.mdi-car:before { + content: "\F10B"; +} + +.mdi-car-battery:before { + content: "\F10C"; +} + +.mdi-car-connected:before { + content: "\F10D"; +} + +.mdi-car-wash:before { + content: "\F10E"; +} + +.mdi-cards:before { + content: "\F638"; +} + +.mdi-cards-outline:before { + content: "\F639"; +} + +.mdi-cards-playing-outline:before { + content: "\F63A"; +} + +.mdi-carrot:before { + content: "\F10F"; +} + +.mdi-cart:before { + content: "\F110"; +} + +.mdi-cart-off:before { + content: "\F66B"; +} + +.mdi-cart-outline:before { + content: "\F111"; +} + +.mdi-cart-plus:before { + content: "\F112"; +} + +.mdi-case-sensitive-alt:before { + content: "\F113"; +} + +.mdi-cash:before { + content: "\F114"; +} + +.mdi-cash-100:before { + content: "\F115"; +} + +.mdi-cash-multiple:before { + content: "\F116"; +} + +.mdi-cash-usd:before { + content: "\F117"; +} + +.mdi-cast:before { + content: "\F118"; +} + +.mdi-cast-connected:before { + content: "\F119"; +} + +.mdi-castle:before { + content: "\F11A"; +} + +.mdi-cat:before { + content: "\F11B"; +} + +.mdi-cellphone:before { + content: "\F11C"; +} + +.mdi-cellphone-android:before { + content: "\F11D"; +} + +.mdi-cellphone-basic:before { + content: "\F11E"; +} + +.mdi-cellphone-dock:before { + content: "\F11F"; +} + +.mdi-cellphone-iphone:before { + content: "\F120"; +} + +.mdi-cellphone-link:before { + content: "\F121"; +} + +.mdi-cellphone-link-off:before { + content: "\F122"; +} + +.mdi-cellphone-settings:before { + content: "\F123"; +} + +.mdi-certificate:before { + content: "\F124"; +} + +.mdi-chair-school:before { + content: "\F125"; +} + +.mdi-chart-arc:before { + content: "\F126"; +} + +.mdi-chart-areaspline:before { + content: "\F127"; +} + +.mdi-chart-bar:before { + content: "\F128"; +} + +.mdi-chart-bubble:before { + content: "\F5E3"; +} + +.mdi-chart-gantt:before { + content: "\F66C"; +} + +.mdi-chart-histogram:before { + content: "\F129"; +} + +.mdi-chart-line:before { + content: "\F12A"; +} + +.mdi-chart-pie:before { + content: "\F12B"; +} + +.mdi-chart-scatterplot-hexbin:before { + content: "\F66D"; +} + +.mdi-chart-timeline:before { + content: "\F66E"; +} + +.mdi-check:before { + content: "\F12C"; +} + +.mdi-check-all:before { + content: "\F12D"; +} + +.mdi-check-circle:before { + content: "\F5E0"; +} + +.mdi-check-circle-outline:before { + content: "\F5E1"; +} + +.mdi-checkbox-blank:before { + content: "\F12E"; +} + +.mdi-checkbox-blank-circle:before { + content: "\F12F"; +} + +.mdi-checkbox-blank-circle-outline:before { + content: "\F130"; +} + +.mdi-checkbox-blank-outline:before { + content: "\F131"; +} + +.mdi-checkbox-marked:before { + content: "\F132"; +} + +.mdi-checkbox-marked-circle:before { + content: "\F133"; +} + +.mdi-checkbox-marked-circle-outline:before { + content: "\F134"; +} + +.mdi-checkbox-marked-outline:before { + content: "\F135"; +} + +.mdi-checkbox-multiple-blank:before { + content: "\F136"; +} + +.mdi-checkbox-multiple-blank-circle:before { + content: "\F63B"; +} + +.mdi-checkbox-multiple-blank-circle-outline:before { + content: "\F63C"; +} + +.mdi-checkbox-multiple-blank-outline:before { + content: "\F137"; +} + +.mdi-checkbox-multiple-marked:before { + content: "\F138"; +} + +.mdi-checkbox-multiple-marked-circle:before { + content: "\F63D"; +} + +.mdi-checkbox-multiple-marked-circle-outline:before { + content: "\F63E"; +} + +.mdi-checkbox-multiple-marked-outline:before { + content: "\F139"; +} + +.mdi-checkerboard:before { + content: "\F13A"; +} + +.mdi-chemical-weapon:before { + content: "\F13B"; +} + +.mdi-chevron-double-down:before { + content: "\F13C"; +} + +.mdi-chevron-double-left:before { + content: "\F13D"; +} + +.mdi-chevron-double-right:before { + content: "\F13E"; +} + +.mdi-chevron-double-up:before { + content: "\F13F"; +} + +.mdi-chevron-down:before { + content: "\F140"; +} + +.mdi-chevron-left:before { + content: "\F141"; +} + +.mdi-chevron-right:before { + content: "\F142"; +} + +.mdi-chevron-up:before { + content: "\F143"; +} + +.mdi-chip:before { + content: "\F61A"; +} + +.mdi-church:before { + content: "\F144"; +} + +.mdi-cisco-webex:before { + content: "\F145"; +} + +.mdi-city:before { + content: "\F146"; +} + +.mdi-clipboard:before { + content: "\F147"; +} + +.mdi-clipboard-account:before { + content: "\F148"; +} + +.mdi-clipboard-alert:before { + content: "\F149"; +} + +.mdi-clipboard-arrow-down:before { + content: "\F14A"; +} + +.mdi-clipboard-arrow-left:before { + content: "\F14B"; +} + +.mdi-clipboard-check:before { + content: "\F14C"; +} + +.mdi-clipboard-outline:before { + content: "\F14D"; +} + +.mdi-clipboard-text:before { + content: "\F14E"; +} + +.mdi-clippy:before { + content: "\F14F"; +} + +.mdi-clock:before { + content: "\F150"; +} + +.mdi-clock-alert:before { + content: "\F5CE"; +} + +.mdi-clock-end:before { + content: "\F151"; +} + +.mdi-clock-fast:before { + content: "\F152"; +} + +.mdi-clock-in:before { + content: "\F153"; +} + +.mdi-clock-out:before { + content: "\F154"; +} + +.mdi-clock-start:before { + content: "\F155"; +} + +.mdi-close:before { + content: "\F156"; +} + +.mdi-close-box:before { + content: "\F157"; +} + +.mdi-close-box-outline:before { + content: "\F158"; +} + +.mdi-close-circle:before { + content: "\F159"; +} + +.mdi-close-circle-outline:before { + content: "\F15A"; +} + +.mdi-close-network:before { + content: "\F15B"; +} + +.mdi-close-octagon:before { + content: "\F15C"; +} + +.mdi-close-octagon-outline:before { + content: "\F15D"; +} + +.mdi-closed-caption:before { + content: "\F15E"; +} + +.mdi-cloud:before { + content: "\F15F"; +} + +.mdi-cloud-check:before { + content: "\F160"; +} + +.mdi-cloud-circle:before { + content: "\F161"; +} + +.mdi-cloud-download:before { + content: "\F162"; +} + +.mdi-cloud-outline:before { + content: "\F163"; +} + +.mdi-cloud-outline-off:before { + content: "\F164"; +} + +.mdi-cloud-print:before { + content: "\F165"; +} + +.mdi-cloud-print-outline:before { + content: "\F166"; +} + +.mdi-cloud-sync:before { + content: "\F63F"; +} + +.mdi-cloud-upload:before { + content: "\F167"; +} + +.mdi-code-array:before { + content: "\F168"; +} + +.mdi-code-braces:before { + content: "\F169"; +} + +.mdi-code-brackets:before { + content: "\F16A"; +} + +.mdi-code-equal:before { + content: "\F16B"; +} + +.mdi-code-greater-than:before { + content: "\F16C"; +} + +.mdi-code-greater-than-or-equal:before { + content: "\F16D"; +} + +.mdi-code-less-than:before { + content: "\F16E"; +} + +.mdi-code-less-than-or-equal:before { + content: "\F16F"; +} + +.mdi-code-not-equal:before { + content: "\F170"; +} + +.mdi-code-not-equal-variant:before { + content: "\F171"; +} + +.mdi-code-parentheses:before { + content: "\F172"; +} + +.mdi-code-string:before { + content: "\F173"; +} + +.mdi-code-tags:before { + content: "\F174"; +} + +.mdi-codepen:before { + content: "\F175"; +} + +.mdi-coffee:before { + content: "\F176"; +} + +.mdi-coffee-to-go:before { + content: "\F177"; +} + +.mdi-coin:before { + content: "\F178"; +} + +.mdi-collage:before { + content: "\F640"; +} + +.mdi-color-helper:before { + content: "\F179"; +} + +.mdi-comment:before { + content: "\F17A"; +} + +.mdi-comment-account:before { + content: "\F17B"; +} + +.mdi-comment-account-outline:before { + content: "\F17C"; +} + +.mdi-comment-alert:before { + content: "\F17D"; +} + +.mdi-comment-alert-outline:before { + content: "\F17E"; +} + +.mdi-comment-check:before { + content: "\F17F"; +} + +.mdi-comment-check-outline:before { + content: "\F180"; +} + +.mdi-comment-multiple-outline:before { + content: "\F181"; +} + +.mdi-comment-outline:before { + content: "\F182"; +} + +.mdi-comment-plus-outline:before { + content: "\F183"; +} + +.mdi-comment-processing:before { + content: "\F184"; +} + +.mdi-comment-processing-outline:before { + content: "\F185"; +} + +.mdi-comment-question-outline:before { + content: "\F186"; +} + +.mdi-comment-remove-outline:before { + content: "\F187"; +} + +.mdi-comment-text:before { + content: "\F188"; +} + +.mdi-comment-text-outline:before { + content: "\F189"; +} + +.mdi-compare:before { + content: "\F18A"; +} + +.mdi-compass:before { + content: "\F18B"; +} + +.mdi-compass-outline:before { + content: "\F18C"; +} + +.mdi-console:before { + content: "\F18D"; +} + +.mdi-contact-mail:before { + content: "\F18E"; +} + +.mdi-content-copy:before { + content: "\F18F"; +} + +.mdi-content-cut:before { + content: "\F190"; +} + +.mdi-content-duplicate:before { + content: "\F191"; +} + +.mdi-content-paste:before { + content: "\F192"; +} + +.mdi-content-save:before { + content: "\F193"; +} + +.mdi-content-save-all:before { + content: "\F194"; +} + +.mdi-content-save-settings:before { + content: "\F61B"; +} + +.mdi-contrast:before { + content: "\F195"; +} + +.mdi-contrast-box:before { + content: "\F196"; +} + +.mdi-contrast-circle:before { + content: "\F197"; +} + +.mdi-cookie:before { + content: "\F198"; +} + +.mdi-copyright:before { + content: "\F5E6"; +} + +.mdi-counter:before { + content: "\F199"; +} + +.mdi-cow:before { + content: "\F19A"; +} + +.mdi-credit-card:before { + content: "\F19B"; +} + +.mdi-credit-card-multiple:before { + content: "\F19C"; +} + +.mdi-credit-card-off:before { + content: "\F5E4"; +} + +.mdi-credit-card-scan:before { + content: "\F19D"; +} + +.mdi-crop:before { + content: "\F19E"; +} + +.mdi-crop-free:before { + content: "\F19F"; +} + +.mdi-crop-landscape:before { + content: "\F1A0"; +} + +.mdi-crop-portrait:before { + content: "\F1A1"; +} + +.mdi-crop-square:before { + content: "\F1A2"; +} + +.mdi-crosshairs:before { + content: "\F1A3"; +} + +.mdi-crosshairs-gps:before { + content: "\F1A4"; +} + +.mdi-crown:before { + content: "\F1A5"; +} + +.mdi-cube:before { + content: "\F1A6"; +} + +.mdi-cube-outline:before { + content: "\F1A7"; +} + +.mdi-cube-send:before { + content: "\F1A8"; +} + +.mdi-cube-unfolded:before { + content: "\F1A9"; +} + +.mdi-cup:before { + content: "\F1AA"; +} + +.mdi-cup-off:before { + content: "\F5E5"; +} + +.mdi-cup-water:before { + content: "\F1AB"; +} + +.mdi-currency-btc:before { + content: "\F1AC"; +} + +.mdi-currency-eur:before { + content: "\F1AD"; +} + +.mdi-currency-gbp:before { + content: "\F1AE"; +} + +.mdi-currency-inr:before { + content: "\F1AF"; +} + +.mdi-currency-ngn:before { + content: "\F1B0"; +} + +.mdi-currency-rub:before { + content: "\F1B1"; +} + +.mdi-currency-try:before { + content: "\F1B2"; +} + +.mdi-currency-usd:before { + content: "\F1B3"; +} + +.mdi-cursor-default:before { + content: "\F1B4"; +} + +.mdi-cursor-default-outline:before { + content: "\F1B5"; +} + +.mdi-cursor-move:before { + content: "\F1B6"; +} + +.mdi-cursor-pointer:before { + content: "\F1B7"; +} + +.mdi-cursor-text:before { + content: "\F5E7"; +} + +.mdi-database:before { + content: "\F1B8"; +} + +.mdi-database-minus:before { + content: "\F1B9"; +} + +.mdi-database-plus:before { + content: "\F1BA"; +} + +.mdi-debug-step-into:before { + content: "\F1BB"; +} + +.mdi-debug-step-out:before { + content: "\F1BC"; +} + +.mdi-debug-step-over:before { + content: "\F1BD"; +} + +.mdi-decimal-decrease:before { + content: "\F1BE"; +} + +.mdi-decimal-increase:before { + content: "\F1BF"; +} + +.mdi-delete:before { + content: "\F1C0"; +} + +.mdi-delete-forever:before { + content: "\F5E8"; +} + +.mdi-delete-sweep:before { + content: "\F5E9"; +} + +.mdi-delete-variant:before { + content: "\F1C1"; +} + +.mdi-delta:before { + content: "\F1C2"; +} + +.mdi-deskphone:before { + content: "\F1C3"; +} + +.mdi-desktop-mac:before { + content: "\F1C4"; +} + +.mdi-desktop-tower:before { + content: "\F1C5"; +} + +.mdi-details:before { + content: "\F1C6"; +} + +.mdi-deviantart:before { + content: "\F1C7"; +} + +.mdi-dialpad:before { + content: "\F61C"; +} + +.mdi-diamond:before { + content: "\F1C8"; +} + +.mdi-dice-1:before { + content: "\F1CA"; +} + +.mdi-dice-2:before { + content: "\F1CB"; +} + +.mdi-dice-3:before { + content: "\F1CC"; +} + +.mdi-dice-4:before { + content: "\F1CD"; +} + +.mdi-dice-5:before { + content: "\F1CE"; +} + +.mdi-dice-6:before { + content: "\F1CF"; +} + +.mdi-dice-d20:before { + content: "\F5EA"; +} + +.mdi-dice-d4:before { + content: "\F5EB"; +} + +.mdi-dice-d6:before { + content: "\F5EC"; +} + +.mdi-dice-d8:before { + content: "\F5ED"; +} + +.mdi-dictionary:before { + content: "\F61D"; +} + +.mdi-directions:before { + content: "\F1D0"; +} + +.mdi-directions-fork:before { + content: "\F641"; +} + +.mdi-discord:before { + content: "\F66F"; +} + +.mdi-disk:before { + content: "\F5EE"; +} + +.mdi-disk-alert:before { + content: "\F1D1"; +} + +.mdi-disqus:before { + content: "\F1D2"; +} + +.mdi-disqus-outline:before { + content: "\F1D3"; +} + +.mdi-division:before { + content: "\F1D4"; +} + +.mdi-division-box:before { + content: "\F1D5"; +} + +.mdi-dns:before { + content: "\F1D6"; +} + +.mdi-domain:before { + content: "\F1D7"; +} + +.mdi-dots-horizontal:before { + content: "\F1D8"; +} + +.mdi-dots-vertical:before { + content: "\F1D9"; +} + +.mdi-download:before { + content: "\F1DA"; +} + +.mdi-drag:before { + content: "\F1DB"; +} + +.mdi-drag-horizontal:before { + content: "\F1DC"; +} + +.mdi-drag-vertical:before { + content: "\F1DD"; +} + +.mdi-drawing:before { + content: "\F1DE"; +} + +.mdi-drawing-box:before { + content: "\F1DF"; +} + +.mdi-dribbble:before { + content: "\F1E0"; +} + +.mdi-dribbble-box:before { + content: "\F1E1"; +} + +.mdi-drone:before { + content: "\F1E2"; +} + +.mdi-dropbox:before { + content: "\F1E3"; +} + +.mdi-drupal:before { + content: "\F1E4"; +} + +.mdi-duck:before { + content: "\F1E5"; +} + +.mdi-dumbbell:before { + content: "\F1E6"; +} + +.mdi-earth:before { + content: "\F1E7"; +} + +.mdi-earth-off:before { + content: "\F1E8"; +} + +.mdi-edge:before { + content: "\F1E9"; +} + +.mdi-eject:before { + content: "\F1EA"; +} + +.mdi-elevation-decline:before { + content: "\F1EB"; +} + +.mdi-elevation-rise:before { + content: "\F1EC"; +} + +.mdi-elevator:before { + content: "\F1ED"; +} + +.mdi-email:before { + content: "\F1EE"; +} + +.mdi-email-open:before { + content: "\F1EF"; +} + +.mdi-email-open-outline:before { + content: "\F5EF"; +} + +.mdi-email-outline:before { + content: "\F1F0"; +} + +.mdi-email-secure:before { + content: "\F1F1"; +} + +.mdi-email-variant:before { + content: "\F5F0"; +} + +.mdi-emoticon:before { + content: "\F1F2"; +} + +.mdi-emoticon-cool:before { + content: "\F1F3"; +} + +.mdi-emoticon-devil:before { + content: "\F1F4"; +} + +.mdi-emoticon-happy:before { + content: "\F1F5"; +} + +.mdi-emoticon-neutral:before { + content: "\F1F6"; +} + +.mdi-emoticon-poop:before { + content: "\F1F7"; +} + +.mdi-emoticon-sad:before { + content: "\F1F8"; +} + +.mdi-emoticon-tongue:before { + content: "\F1F9"; +} + +.mdi-engine:before { + content: "\F1FA"; +} + +.mdi-engine-outline:before { + content: "\F1FB"; +} + +.mdi-equal:before { + content: "\F1FC"; +} + +.mdi-equal-box:before { + content: "\F1FD"; +} + +.mdi-eraser:before { + content: "\F1FE"; +} + +.mdi-eraser-variant:before { + content: "\F642"; +} + +.mdi-escalator:before { + content: "\F1FF"; +} + +.mdi-ethernet:before { + content: "\F200"; +} + +.mdi-ethernet-cable:before { + content: "\F201"; +} + +.mdi-ethernet-cable-off:before { + content: "\F202"; +} + +.mdi-etsy:before { + content: "\F203"; +} + +.mdi-ev-station:before { + content: "\F5F1"; +} + +.mdi-evernote:before { + content: "\F204"; +} + +.mdi-exclamation:before { + content: "\F205"; +} + +.mdi-exit-to-app:before { + content: "\F206"; +} + +.mdi-export:before { + content: "\F207"; +} + +.mdi-eye:before { + content: "\F208"; +} + +.mdi-eye-off:before { + content: "\F209"; +} + +.mdi-eyedropper:before { + content: "\F20A"; +} + +.mdi-eyedropper-variant:before { + content: "\F20B"; +} + +.mdi-face:before { + content: "\F643"; +} + +.mdi-face-profile:before { + content: "\F644"; +} + +.mdi-facebook:before { + content: "\F20C"; +} + +.mdi-facebook-box:before { + content: "\F20D"; +} + +.mdi-facebook-messenger:before { + content: "\F20E"; +} + +.mdi-factory:before { + content: "\F20F"; +} + +.mdi-fan:before { + content: "\F210"; +} + +.mdi-fast-forward:before { + content: "\F211"; +} + +.mdi-fax:before { + content: "\F212"; +} + +.mdi-ferry:before { + content: "\F213"; +} + +.mdi-file:before { + content: "\F214"; +} + +.mdi-file-chart:before { + content: "\F215"; +} + +.mdi-file-check:before { + content: "\F216"; +} + +.mdi-file-cloud:before { + content: "\F217"; +} + +.mdi-file-delimited:before { + content: "\F218"; +} + +.mdi-file-document:before { + content: "\F219"; +} + +.mdi-file-document-box:before { + content: "\F21A"; +} + +.mdi-file-excel:before { + content: "\F21B"; +} + +.mdi-file-excel-box:before { + content: "\F21C"; +} + +.mdi-file-export:before { + content: "\F21D"; +} + +.mdi-file-find:before { + content: "\F21E"; +} + +.mdi-file-hidden:before { + content: "\F613"; +} + +.mdi-file-image:before { + content: "\F21F"; +} + +.mdi-file-import:before { + content: "\F220"; +} + +.mdi-file-lock:before { + content: "\F221"; +} + +.mdi-file-multiple:before { + content: "\F222"; +} + +.mdi-file-music:before { + content: "\F223"; +} + +.mdi-file-outline:before { + content: "\F224"; +} + +.mdi-file-pdf:before { + content: "\F225"; +} + +.mdi-file-pdf-box:before { + content: "\F226"; +} + +.mdi-file-powerpoint:before { + content: "\F227"; +} + +.mdi-file-powerpoint-box:before { + content: "\F228"; +} + +.mdi-file-presentation-box:before { + content: "\F229"; +} + +.mdi-file-restore:before { + content: "\F670"; +} + +.mdi-file-send:before { + content: "\F22A"; +} + +.mdi-file-tree:before { + content: "\F645"; +} + +.mdi-file-video:before { + content: "\F22B"; +} + +.mdi-file-word:before { + content: "\F22C"; +} + +.mdi-file-word-box:before { + content: "\F22D"; +} + +.mdi-file-xml:before { + content: "\F22E"; +} + +.mdi-film:before { + content: "\F22F"; +} + +.mdi-filmstrip:before { + content: "\F230"; +} + +.mdi-filmstrip-off:before { + content: "\F231"; +} + +.mdi-filter:before { + content: "\F232"; +} + +.mdi-filter-outline:before { + content: "\F233"; +} + +.mdi-filter-remove:before { + content: "\F234"; +} + +.mdi-filter-remove-outline:before { + content: "\F235"; +} + +.mdi-filter-variant:before { + content: "\F236"; +} + +.mdi-fingerprint:before { + content: "\F237"; +} + +.mdi-fire:before { + content: "\F238"; +} + +.mdi-firefox:before { + content: "\F239"; +} + +.mdi-fish:before { + content: "\F23A"; +} + +.mdi-flag:before { + content: "\F23B"; +} + +.mdi-flag-checkered:before { + content: "\F23C"; +} + +.mdi-flag-outline:before { + content: "\F23D"; +} + +.mdi-flag-outline-variant:before { + content: "\F23E"; +} + +.mdi-flag-triangle:before { + content: "\F23F"; +} + +.mdi-flag-variant:before { + content: "\F240"; +} + +.mdi-flash:before { + content: "\F241"; +} + +.mdi-flash-auto:before { + content: "\F242"; +} + +.mdi-flash-off:before { + content: "\F243"; +} + +.mdi-flashlight:before { + content: "\F244"; +} + +.mdi-flashlight-off:before { + content: "\F245"; +} + +.mdi-flask:before { + content: "\F093"; +} + +.mdi-flask-empty:before { + content: "\F094"; +} + +.mdi-flask-empty-outline:before { + content: "\F095"; +} + +.mdi-flask-outline:before { + content: "\F096"; +} + +.mdi-flattr:before { + content: "\F246"; +} + +.mdi-flip-to-back:before { + content: "\F247"; +} + +.mdi-flip-to-front:before { + content: "\F248"; +} + +.mdi-floppy:before { + content: "\F249"; +} + +.mdi-flower:before { + content: "\F24A"; +} + +.mdi-folder:before { + content: "\F24B"; +} + +.mdi-folder-account:before { + content: "\F24C"; +} + +.mdi-folder-download:before { + content: "\F24D"; +} + +.mdi-folder-google-drive:before { + content: "\F24E"; +} + +.mdi-folder-image:before { + content: "\F24F"; +} + +.mdi-folder-lock:before { + content: "\F250"; +} + +.mdi-folder-lock-open:before { + content: "\F251"; +} + +.mdi-folder-move:before { + content: "\F252"; +} + +.mdi-folder-multiple:before { + content: "\F253"; +} + +.mdi-folder-multiple-image:before { + content: "\F254"; +} + +.mdi-folder-multiple-outline:before { + content: "\F255"; +} + +.mdi-folder-outline:before { + content: "\F256"; +} + +.mdi-folder-plus:before { + content: "\F257"; +} + +.mdi-folder-remove:before { + content: "\F258"; +} + +.mdi-folder-upload:before { + content: "\F259"; +} + +.mdi-food:before { + content: "\F25A"; +} + +.mdi-food-apple:before { + content: "\F25B"; +} + +.mdi-food-fork-drink:before { + content: "\F5F2"; +} + +.mdi-food-off:before { + content: "\F5F3"; +} + +.mdi-food-variant:before { + content: "\F25C"; +} + +.mdi-football:before { + content: "\F25D"; +} + +.mdi-football-australian:before { + content: "\F25E"; +} + +.mdi-football-helmet:before { + content: "\F25F"; +} + +.mdi-format-align-center:before { + content: "\F260"; +} + +.mdi-format-align-justify:before { + content: "\F261"; +} + +.mdi-format-align-left:before { + content: "\F262"; +} + +.mdi-format-align-right:before { + content: "\F263"; +} + +.mdi-format-annotation-plus:before { + content: "\F646"; +} + +.mdi-format-bold:before { + content: "\F264"; +} + +.mdi-format-clear:before { + content: "\F265"; +} + +.mdi-format-color-fill:before { + content: "\F266"; +} + +.mdi-format-float-center:before { + content: "\F267"; +} + +.mdi-format-float-left:before { + content: "\F268"; +} + +.mdi-format-float-none:before { + content: "\F269"; +} + +.mdi-format-float-right:before { + content: "\F26A"; +} + +.mdi-format-header-1:before { + content: "\F26B"; +} + +.mdi-format-header-2:before { + content: "\F26C"; +} + +.mdi-format-header-3:before { + content: "\F26D"; +} + +.mdi-format-header-4:before { + content: "\F26E"; +} + +.mdi-format-header-5:before { + content: "\F26F"; +} + +.mdi-format-header-6:before { + content: "\F270"; +} + +.mdi-format-header-decrease:before { + content: "\F271"; +} + +.mdi-format-header-equal:before { + content: "\F272"; +} + +.mdi-format-header-increase:before { + content: "\F273"; +} + +.mdi-format-header-pound:before { + content: "\F274"; +} + +.mdi-format-horizontal-align-center:before { + content: "\F61E"; +} + +.mdi-format-horizontal-align-left:before { + content: "\F61F"; +} + +.mdi-format-horizontal-align-right:before { + content: "\F620"; +} + +.mdi-format-indent-decrease:before { + content: "\F275"; +} + +.mdi-format-indent-increase:before { + content: "\F276"; +} + +.mdi-format-italic:before { + content: "\F277"; +} + +.mdi-format-line-spacing:before { + content: "\F278"; +} + +.mdi-format-line-style:before { + content: "\F5C8"; +} + +.mdi-format-line-weight:before { + content: "\F5C9"; +} + +.mdi-format-list-bulleted:before { + content: "\F279"; +} + +.mdi-format-list-bulleted-type:before { + content: "\F27A"; +} + +.mdi-format-list-numbers:before { + content: "\F27B"; +} + +.mdi-format-paint:before { + content: "\F27C"; +} + +.mdi-format-paragraph:before { + content: "\F27D"; +} + +.mdi-format-quote:before { + content: "\F27E"; +} + +.mdi-format-size:before { + content: "\F27F"; +} + +.mdi-format-strikethrough:before { + content: "\F280"; +} + +.mdi-format-strikethrough-variant:before { + content: "\F281"; +} + +.mdi-format-subscript:before { + content: "\F282"; +} + +.mdi-format-superscript:before { + content: "\F283"; +} + +.mdi-format-text:before { + content: "\F284"; +} + +.mdi-format-textdirection-l-to-r:before { + content: "\F285"; +} + +.mdi-format-textdirection-r-to-l:before { + content: "\F286"; +} + +.mdi-format-title:before { + content: "\F5F4"; +} + +.mdi-format-underline:before { + content: "\F287"; +} + +.mdi-format-vertical-align-bottom:before { + content: "\F621"; +} + +.mdi-format-vertical-align-center:before { + content: "\F622"; +} + +.mdi-format-vertical-align-top:before { + content: "\F623"; +} + +.mdi-format-wrap-inline:before { + content: "\F288"; +} + +.mdi-format-wrap-square:before { + content: "\F289"; +} + +.mdi-format-wrap-tight:before { + content: "\F28A"; +} + +.mdi-format-wrap-top-bottom:before { + content: "\F28B"; +} + +.mdi-forum:before { + content: "\F28C"; +} + +.mdi-forward:before { + content: "\F28D"; +} + +.mdi-foursquare:before { + content: "\F28E"; +} + +.mdi-fridge:before { + content: "\F28F"; +} + +.mdi-fridge-filled:before { + content: "\F290"; +} + +.mdi-fridge-filled-bottom:before { + content: "\F291"; +} + +.mdi-fridge-filled-top:before { + content: "\F292"; +} + +.mdi-fullscreen:before { + content: "\F293"; +} + +.mdi-fullscreen-exit:before { + content: "\F294"; +} + +.mdi-function:before { + content: "\F295"; +} + +.mdi-gamepad:before { + content: "\F296"; +} + +.mdi-gamepad-variant:before { + content: "\F297"; +} + +.mdi-gas-cylinder:before { + content: "\F647"; +} + +.mdi-gas-station:before { + content: "\F298"; +} + +.mdi-gate:before { + content: "\F299"; +} + +.mdi-gauge:before { + content: "\F29A"; +} + +.mdi-gavel:before { + content: "\F29B"; +} + +.mdi-gender-female:before { + content: "\F29C"; +} + +.mdi-gender-male:before { + content: "\F29D"; +} + +.mdi-gender-male-female:before { + content: "\F29E"; +} + +.mdi-gender-transgender:before { + content: "\F29F"; +} + +.mdi-ghost:before { + content: "\F2A0"; +} + +.mdi-gift:before { + content: "\F2A1"; +} + +.mdi-git:before { + content: "\F2A2"; +} + +.mdi-github-box:before { + content: "\F2A3"; +} + +.mdi-github-circle:before { + content: "\F2A4"; +} + +.mdi-glass-flute:before { + content: "\F2A5"; +} + +.mdi-glass-mug:before { + content: "\F2A6"; +} + +.mdi-glass-stange:before { + content: "\F2A7"; +} + +.mdi-glass-tulip:before { + content: "\F2A8"; +} + +.mdi-glassdoor:before { + content: "\F2A9"; +} + +.mdi-glasses:before { + content: "\F2AA"; +} + +.mdi-gmail:before { + content: "\F2AB"; +} + +.mdi-gnome:before { + content: "\F2AC"; +} + +.mdi-google:before { + content: "\F2AD"; +} + +.mdi-google-cardboard:before { + content: "\F2AE"; +} + +.mdi-google-chrome:before { + content: "\F2AF"; +} + +.mdi-google-circles:before { + content: "\F2B0"; +} + +.mdi-google-circles-communities:before { + content: "\F2B1"; +} + +.mdi-google-circles-extended:before { + content: "\F2B2"; +} + +.mdi-google-circles-group:before { + content: "\F2B3"; +} + +.mdi-google-controller:before { + content: "\F2B4"; +} + +.mdi-google-controller-off:before { + content: "\F2B5"; +} + +.mdi-google-drive:before { + content: "\F2B6"; +} + +.mdi-google-earth:before { + content: "\F2B7"; +} + +.mdi-google-glass:before { + content: "\F2B8"; +} + +.mdi-google-maps:before { + content: "\F5F5"; +} + +.mdi-google-nearby:before { + content: "\F2B9"; +} + +.mdi-google-pages:before { + content: "\F2BA"; +} + +.mdi-google-physical-web:before { + content: "\F2BB"; +} + +.mdi-google-play:before { + content: "\F2BC"; +} + +.mdi-google-plus:before { + content: "\F2BD"; +} + +.mdi-google-plus-box:before { + content: "\F2BE"; +} + +.mdi-google-translate:before { + content: "\F2BF"; +} + +.mdi-google-wallet:before { + content: "\F2C0"; +} + +.mdi-grease-pencil:before { + content: "\F648"; +} + +.mdi-grid:before { + content: "\F2C1"; +} + +.mdi-grid-off:before { + content: "\F2C2"; +} + +.mdi-group:before { + content: "\F2C3"; +} + +.mdi-guitar-electric:before { + content: "\F2C4"; +} + +.mdi-guitar-pick:before { + content: "\F2C5"; +} + +.mdi-guitar-pick-outline:before { + content: "\F2C6"; +} + +.mdi-hackernews:before { + content: "\F624"; +} + +.mdi-hand-pointing-right:before { + content: "\F2C7"; +} + +.mdi-hanger:before { + content: "\F2C8"; +} + +.mdi-hangouts:before { + content: "\F2C9"; +} + +.mdi-harddisk:before { + content: "\F2CA"; +} + +.mdi-headphones:before { + content: "\F2CB"; +} + +.mdi-headphones-box:before { + content: "\F2CC"; +} + +.mdi-headphones-settings:before { + content: "\F2CD"; +} + +.mdi-headset:before { + content: "\F2CE"; +} + +.mdi-headset-dock:before { + content: "\F2CF"; +} + +.mdi-headset-off:before { + content: "\F2D0"; +} + +.mdi-heart:before { + content: "\F2D1"; +} + +.mdi-heart-box:before { + content: "\F2D2"; +} + +.mdi-heart-box-outline:before { + content: "\F2D3"; +} + +.mdi-heart-broken:before { + content: "\F2D4"; +} + +.mdi-heart-outline:before { + content: "\F2D5"; +} + +.mdi-heart-pulse:before { + content: "\F5F6"; +} + +.mdi-help:before { + content: "\F2D6"; +} + +.mdi-help-circle:before { + content: "\F2D7"; +} + +.mdi-help-circle-outline:before { + content: "\F625"; +} + +.mdi-hexagon:before { + content: "\F2D8"; +} + +.mdi-hexagon-outline:before { + content: "\F2D9"; +} + +.mdi-highway:before { + content: "\F5F7"; +} + +.mdi-history:before { + content: "\F2DA"; +} + +.mdi-hololens:before { + content: "\F2DB"; +} + +.mdi-home:before { + content: "\F2DC"; +} + +.mdi-home-map-marker:before { + content: "\F5F8"; +} + +.mdi-home-modern:before { + content: "\F2DD"; +} + +.mdi-home-variant:before { + content: "\F2DE"; +} + +.mdi-hops:before { + content: "\F2DF"; +} + +.mdi-hospital:before { + content: "\F2E0"; +} + +.mdi-hospital-building:before { + content: "\F2E1"; +} + +.mdi-hospital-marker:before { + content: "\F2E2"; +} + +.mdi-hotel:before { + content: "\F2E3"; +} + +.mdi-houzz:before { + content: "\F2E4"; +} + +.mdi-houzz-box:before { + content: "\F2E5"; +} + +.mdi-human:before { + content: "\F2E6"; +} + +.mdi-human-child:before { + content: "\F2E7"; +} + +.mdi-human-female:before { + content: "\F649"; +} + +.mdi-human-greeting:before { + content: "\F64A"; +} + +.mdi-human-handsdown:before { + content: "\F64B"; +} + +.mdi-human-handsup:before { + content: "\F64C"; +} + +.mdi-human-male:before { + content: "\F64D"; +} + +.mdi-human-male-female:before { + content: "\F2E8"; +} + +.mdi-human-pregnant:before { + content: "\F5CF"; +} + +.mdi-image:before { + content: "\F2E9"; +} + +.mdi-image-album:before { + content: "\F2EA"; +} + +.mdi-image-area:before { + content: "\F2EB"; +} + +.mdi-image-area-close:before { + content: "\F2EC"; +} + +.mdi-image-broken:before { + content: "\F2ED"; +} + +.mdi-image-broken-variant:before { + content: "\F2EE"; +} + +.mdi-image-filter:before { + content: "\F2EF"; +} + +.mdi-image-filter-black-white:before { + content: "\F2F0"; +} + +.mdi-image-filter-center-focus:before { + content: "\F2F1"; +} + +.mdi-image-filter-center-focus-weak:before { + content: "\F2F2"; +} + +.mdi-image-filter-drama:before { + content: "\F2F3"; +} + +.mdi-image-filter-frames:before { + content: "\F2F4"; +} + +.mdi-image-filter-hdr:before { + content: "\F2F5"; +} + +.mdi-image-filter-none:before { + content: "\F2F6"; +} + +.mdi-image-filter-tilt-shift:before { + content: "\F2F7"; +} + +.mdi-image-filter-vintage:before { + content: "\F2F8"; +} + +.mdi-image-multiple:before { + content: "\F2F9"; +} + +.mdi-import:before { + content: "\F2FA"; +} + +.mdi-inbox:before { + content: "\F2FB"; +} + +.mdi-incognito:before { + content: "\F5F9"; +} + +.mdi-information:before { + content: "\F2FC"; +} + +.mdi-information-outline:before { + content: "\F2FD"; +} + +.mdi-information-variant:before { + content: "\F64E"; +} + +.mdi-instagram:before { + content: "\F2FE"; +} + +.mdi-instapaper:before { + content: "\F2FF"; +} + +.mdi-internet-explorer:before { + content: "\F300"; +} + +.mdi-invert-colors:before { + content: "\F301"; +} + +.mdi-jeepney:before { + content: "\F302"; +} + +.mdi-jira:before { + content: "\F303"; +} + +.mdi-jsfiddle:before { + content: "\F304"; +} + +.mdi-json:before { + content: "\F626"; +} + +.mdi-keg:before { + content: "\F305"; +} + +.mdi-kettle:before { + content: "\F5FA"; +} + +.mdi-key:before { + content: "\F306"; +} + +.mdi-key-change:before { + content: "\F307"; +} + +.mdi-key-minus:before { + content: "\F308"; +} + +.mdi-key-plus:before { + content: "\F309"; +} + +.mdi-key-remove:before { + content: "\F30A"; +} + +.mdi-key-variant:before { + content: "\F30B"; +} + +.mdi-keyboard:before { + content: "\F30C"; +} + +.mdi-keyboard-backspace:before { + content: "\F30D"; +} + +.mdi-keyboard-caps:before { + content: "\F30E"; +} + +.mdi-keyboard-close:before { + content: "\F30F"; +} + +.mdi-keyboard-off:before { + content: "\F310"; +} + +.mdi-keyboard-return:before { + content: "\F311"; +} + +.mdi-keyboard-tab:before { + content: "\F312"; +} + +.mdi-keyboard-variant:before { + content: "\F313"; +} + +.mdi-kodi:before { + content: "\F314"; +} + +.mdi-label:before { + content: "\F315"; +} + +.mdi-label-outline:before { + content: "\F316"; +} + +.mdi-lambda:before { + content: "\F627"; +} + +.mdi-lan:before { + content: "\F317"; +} + +.mdi-lan-connect:before { + content: "\F318"; +} + +.mdi-lan-disconnect:before { + content: "\F319"; +} + +.mdi-lan-pending:before { + content: "\F31A"; +} + +.mdi-language-c:before { + content: "\F671"; +} + +.mdi-language-cpp:before { + content: "\F672"; +} + +.mdi-language-csharp:before { + content: "\F31B"; +} + +.mdi-language-css3:before { + content: "\F31C"; +} + +.mdi-language-html5:before { + content: "\F31D"; +} + +.mdi-language-javascript:before { + content: "\F31E"; +} + +.mdi-language-php:before { + content: "\F31F"; +} + +.mdi-language-python:before { + content: "\F320"; +} + +.mdi-language-python-text:before { + content: "\F321"; +} + +.mdi-laptop:before { + content: "\F322"; +} + +.mdi-laptop-chromebook:before { + content: "\F323"; +} + +.mdi-laptop-mac:before { + content: "\F324"; +} + +.mdi-laptop-windows:before { + content: "\F325"; +} + +.mdi-lastfm:before { + content: "\F326"; +} + +.mdi-launch:before { + content: "\F327"; +} + +.mdi-layers:before { + content: "\F328"; +} + +.mdi-layers-off:before { + content: "\F329"; +} + +.mdi-lead-pencil:before { + content: "\F64F"; +} + +.mdi-leaf:before { + content: "\F32A"; +} + +.mdi-led-off:before { + content: "\F32B"; +} + +.mdi-led-on:before { + content: "\F32C"; +} + +.mdi-led-outline:before { + content: "\F32D"; +} + +.mdi-led-variant-off:before { + content: "\F32E"; +} + +.mdi-led-variant-on:before { + content: "\F32F"; +} + +.mdi-led-variant-outline:before { + content: "\F330"; +} + +.mdi-library:before { + content: "\F331"; +} + +.mdi-library-books:before { + content: "\F332"; +} + +.mdi-library-music:before { + content: "\F333"; +} + +.mdi-library-plus:before { + content: "\F334"; +} + +.mdi-lightbulb:before { + content: "\F335"; +} + +.mdi-lightbulb-outline:before { + content: "\F336"; +} + +.mdi-link:before { + content: "\F337"; +} + +.mdi-link-off:before { + content: "\F338"; +} + +.mdi-link-variant:before { + content: "\F339"; +} + +.mdi-link-variant-off:before { + content: "\F33A"; +} + +.mdi-linkedin:before { + content: "\F33B"; +} + +.mdi-linkedin-box:before { + content: "\F33C"; +} + +.mdi-linux:before { + content: "\F33D"; +} + +.mdi-lock:before { + content: "\F33E"; +} + +.mdi-lock-open:before { + content: "\F33F"; +} + +.mdi-lock-open-outline:before { + content: "\F340"; +} + +.mdi-lock-outline:before { + content: "\F341"; +} + +.mdi-lock-plus:before { + content: "\F5FB"; +} + +.mdi-login:before { + content: "\F342"; +} + +.mdi-login-variant:before { + content: "\F5FC"; +} + +.mdi-logout:before { + content: "\F343"; +} + +.mdi-logout-variant:before { + content: "\F5FD"; +} + +.mdi-looks:before { + content: "\F344"; +} + +.mdi-loupe:before { + content: "\F345"; +} + +.mdi-lumx:before { + content: "\F346"; +} + +.mdi-magnet:before { + content: "\F347"; +} + +.mdi-magnet-on:before { + content: "\F348"; +} + +.mdi-magnify:before { + content: "\F349"; +} + +.mdi-magnify-minus:before { + content: "\F34A"; +} + +.mdi-magnify-plus:before { + content: "\F34B"; +} + +.mdi-mail-ru:before { + content: "\F34C"; +} + +.mdi-map:before { + content: "\F34D"; +} + +.mdi-map-marker:before { + content: "\F34E"; +} + +.mdi-map-marker-circle:before { + content: "\F34F"; +} + +.mdi-map-marker-minus:before { + content: "\F650"; +} + +.mdi-map-marker-multiple:before { + content: "\F350"; +} + +.mdi-map-marker-off:before { + content: "\F351"; +} + +.mdi-map-marker-plus:before { + content: "\F651"; +} + +.mdi-map-marker-radius:before { + content: "\F352"; +} + +.mdi-margin:before { + content: "\F353"; +} + +.mdi-markdown:before { + content: "\F354"; +} + +.mdi-marker:before { + content: "\F652"; +} + +.mdi-marker-check:before { + content: "\F355"; +} + +.mdi-martini:before { + content: "\F356"; +} + +.mdi-material-ui:before { + content: "\F357"; +} + +.mdi-math-compass:before { + content: "\F358"; +} + +.mdi-matrix:before { + content: "\F628"; +} + +.mdi-maxcdn:before { + content: "\F359"; +} + +.mdi-medium:before { + content: "\F35A"; +} + +.mdi-memory:before { + content: "\F35B"; +} + +.mdi-menu:before { + content: "\F35C"; +} + +.mdi-menu-down:before { + content: "\F35D"; +} + +.mdi-menu-left:before { + content: "\F35E"; +} + +.mdi-menu-right:before { + content: "\F35F"; +} + +.mdi-menu-up:before { + content: "\F360"; +} + +.mdi-message:before { + content: "\F361"; +} + +.mdi-message-alert:before { + content: "\F362"; +} + +.mdi-message-draw:before { + content: "\F363"; +} + +.mdi-message-image:before { + content: "\F364"; +} + +.mdi-message-outline:before { + content: "\F365"; +} + +.mdi-message-plus:before { + content: "\F653"; +} + +.mdi-message-processing:before { + content: "\F366"; +} + +.mdi-message-reply:before { + content: "\F367"; +} + +.mdi-message-reply-text:before { + content: "\F368"; +} + +.mdi-message-text:before { + content: "\F369"; +} + +.mdi-message-text-outline:before { + content: "\F36A"; +} + +.mdi-message-video:before { + content: "\F36B"; +} + +.mdi-meteor:before { + content: "\F629"; +} + +.mdi-microphone:before { + content: "\F36C"; +} + +.mdi-microphone-off:before { + content: "\F36D"; +} + +.mdi-microphone-outline:before { + content: "\F36E"; +} + +.mdi-microphone-settings:before { + content: "\F36F"; +} + +.mdi-microphone-variant:before { + content: "\F370"; +} + +.mdi-microphone-variant-off:before { + content: "\F371"; +} + +.mdi-microscope:before { + content: "\F654"; +} + +.mdi-microsoft:before { + content: "\F372"; +} + +.mdi-minecraft:before { + content: "\F373"; +} + +.mdi-minus:before { + content: "\F374"; +} + +.mdi-minus-box:before { + content: "\F375"; +} + +.mdi-minus-circle:before { + content: "\F376"; +} + +.mdi-minus-circle-outline:before { + content: "\F377"; +} + +.mdi-minus-network:before { + content: "\F378"; +} + +.mdi-mixcloud:before { + content: "\F62A"; +} + +.mdi-monitor:before { + content: "\F379"; +} + +.mdi-monitor-multiple:before { + content: "\F37A"; +} + +.mdi-more:before { + content: "\F37B"; +} + +.mdi-motorbike:before { + content: "\F37C"; +} + +.mdi-mouse:before { + content: "\F37D"; +} + +.mdi-mouse-off:before { + content: "\F37E"; +} + +.mdi-mouse-variant:before { + content: "\F37F"; +} + +.mdi-mouse-variant-off:before { + content: "\F380"; +} + +.mdi-move-resize:before { + content: "\F655"; +} + +.mdi-move-resize-variant:before { + content: "\F656"; +} + +.mdi-movie:before { + content: "\F381"; +} + +.mdi-multiplication:before { + content: "\F382"; +} + +.mdi-multiplication-box:before { + content: "\F383"; +} + +.mdi-music-box:before { + content: "\F384"; +} + +.mdi-music-box-outline:before { + content: "\F385"; +} + +.mdi-music-circle:before { + content: "\F386"; +} + +.mdi-music-note:before { + content: "\F387"; +} + +.mdi-music-note-bluetooth:before { + content: "\F5FE"; +} + +.mdi-music-note-bluetooth-off:before { + content: "\F5FF"; +} + +.mdi-music-note-eighth:before { + content: "\F388"; +} + +.mdi-music-note-half:before { + content: "\F389"; +} + +.mdi-music-note-off:before { + content: "\F38A"; +} + +.mdi-music-note-quarter:before { + content: "\F38B"; +} + +.mdi-music-note-sixteenth:before { + content: "\F38C"; +} + +.mdi-music-note-whole:before { + content: "\F38D"; +} + +.mdi-nature:before { + content: "\F38E"; +} + +.mdi-nature-people:before { + content: "\F38F"; +} + +.mdi-navigation:before { + content: "\F390"; +} + +.mdi-near-me:before { + content: "\F5CD"; +} + +.mdi-needle:before { + content: "\F391"; +} + +.mdi-nest-protect:before { + content: "\F392"; +} + +.mdi-nest-thermostat:before { + content: "\F393"; +} + +.mdi-new-box:before { + content: "\F394"; +} + +.mdi-newspaper:before { + content: "\F395"; +} + +.mdi-nfc:before { + content: "\F396"; +} + +.mdi-nfc-tap:before { + content: "\F397"; +} + +.mdi-nfc-variant:before { + content: "\F398"; +} + +.mdi-nodejs:before { + content: "\F399"; +} + +.mdi-note:before { + content: "\F39A"; +} + +.mdi-note-outline:before { + content: "\F39B"; +} + +.mdi-note-plus:before { + content: "\F39C"; +} + +.mdi-note-plus-outline:before { + content: "\F39D"; +} + +.mdi-note-text:before { + content: "\F39E"; +} + +.mdi-notification-clear-all:before { + content: "\F39F"; +} + +.mdi-numeric:before { + content: "\F3A0"; +} + +.mdi-numeric-0-box:before { + content: "\F3A1"; +} + +.mdi-numeric-0-box-multiple-outline:before { + content: "\F3A2"; +} + +.mdi-numeric-0-box-outline:before { + content: "\F3A3"; +} + +.mdi-numeric-1-box:before { + content: "\F3A4"; +} + +.mdi-numeric-1-box-multiple-outline:before { + content: "\F3A5"; +} + +.mdi-numeric-1-box-outline:before { + content: "\F3A6"; +} + +.mdi-numeric-2-box:before { + content: "\F3A7"; +} + +.mdi-numeric-2-box-multiple-outline:before { + content: "\F3A8"; +} + +.mdi-numeric-2-box-outline:before { + content: "\F3A9"; +} + +.mdi-numeric-3-box:before { + content: "\F3AA"; +} + +.mdi-numeric-3-box-multiple-outline:before { + content: "\F3AB"; +} + +.mdi-numeric-3-box-outline:before { + content: "\F3AC"; +} + +.mdi-numeric-4-box:before { + content: "\F3AD"; +} + +.mdi-numeric-4-box-multiple-outline:before { + content: "\F3AE"; +} + +.mdi-numeric-4-box-outline:before { + content: "\F3AF"; +} + +.mdi-numeric-5-box:before { + content: "\F3B0"; +} + +.mdi-numeric-5-box-multiple-outline:before { + content: "\F3B1"; +} + +.mdi-numeric-5-box-outline:before { + content: "\F3B2"; +} + +.mdi-numeric-6-box:before { + content: "\F3B3"; +} + +.mdi-numeric-6-box-multiple-outline:before { + content: "\F3B4"; +} + +.mdi-numeric-6-box-outline:before { + content: "\F3B5"; +} + +.mdi-numeric-7-box:before { + content: "\F3B6"; +} + +.mdi-numeric-7-box-multiple-outline:before { + content: "\F3B7"; +} + +.mdi-numeric-7-box-outline:before { + content: "\F3B8"; +} + +.mdi-numeric-8-box:before { + content: "\F3B9"; +} + +.mdi-numeric-8-box-multiple-outline:before { + content: "\F3BA"; +} + +.mdi-numeric-8-box-outline:before { + content: "\F3BB"; +} + +.mdi-numeric-9-box:before { + content: "\F3BC"; +} + +.mdi-numeric-9-box-multiple-outline:before { + content: "\F3BD"; +} + +.mdi-numeric-9-box-outline:before { + content: "\F3BE"; +} + +.mdi-numeric-9-plus-box:before { + content: "\F3BF"; +} + +.mdi-numeric-9-plus-box-multiple-outline:before { + content: "\F3C0"; +} + +.mdi-numeric-9-plus-box-outline:before { + content: "\F3C1"; +} + +.mdi-nutrition:before { + content: "\F3C2"; +} + +.mdi-octagon:before { + content: "\F3C3"; +} + +.mdi-octagon-outline:before { + content: "\F3C4"; +} + +.mdi-odnoklassniki:before { + content: "\F3C5"; +} + +.mdi-office:before { + content: "\F3C6"; +} + +.mdi-oil:before { + content: "\F3C7"; +} + +.mdi-oil-temperature:before { + content: "\F3C8"; +} + +.mdi-omega:before { + content: "\F3C9"; +} + +.mdi-onedrive:before { + content: "\F3CA"; +} + +.mdi-opacity:before { + content: "\F5CC"; +} + +.mdi-open-in-app:before { + content: "\F3CB"; +} + +.mdi-open-in-new:before { + content: "\F3CC"; +} + +.mdi-openid:before { + content: "\F3CD"; +} + +.mdi-opera:before { + content: "\F3CE"; +} + +.mdi-ornament:before { + content: "\F3CF"; +} + +.mdi-ornament-variant:before { + content: "\F3D0"; +} + +.mdi-outbox:before { + content: "\F3D1"; +} + +.mdi-owl:before { + content: "\F3D2"; +} + +.mdi-package:before { + content: "\F3D3"; +} + +.mdi-package-down:before { + content: "\F3D4"; +} + +.mdi-package-up:before { + content: "\F3D5"; +} + +.mdi-package-variant:before { + content: "\F3D6"; +} + +.mdi-package-variant-closed:before { + content: "\F3D7"; +} + +.mdi-page-first:before { + content: "\F600"; +} + +.mdi-page-last:before { + content: "\F601"; +} + +.mdi-palette:before { + content: "\F3D8"; +} + +.mdi-palette-advanced:before { + content: "\F3D9"; +} + +.mdi-panda:before { + content: "\F3DA"; +} + +.mdi-pandora:before { + content: "\F3DB"; +} + +.mdi-panorama:before { + content: "\F3DC"; +} + +.mdi-panorama-fisheye:before { + content: "\F3DD"; +} + +.mdi-panorama-horizontal:before { + content: "\F3DE"; +} + +.mdi-panorama-vertical:before { + content: "\F3DF"; +} + +.mdi-panorama-wide-angle:before { + content: "\F3E0"; +} + +.mdi-paper-cut-vertical:before { + content: "\F3E1"; +} + +.mdi-paperclip:before { + content: "\F3E2"; +} + +.mdi-parking:before { + content: "\F3E3"; +} + +.mdi-pause:before { + content: "\F3E4"; +} + +.mdi-pause-circle:before { + content: "\F3E5"; +} + +.mdi-pause-circle-outline:before { + content: "\F3E6"; +} + +.mdi-pause-octagon:before { + content: "\F3E7"; +} + +.mdi-pause-octagon-outline:before { + content: "\F3E8"; +} + +.mdi-paw:before { + content: "\F3E9"; +} + +.mdi-paw-off:before { + content: "\F657"; +} + +.mdi-pen:before { + content: "\F3EA"; +} + +.mdi-pencil:before { + content: "\F3EB"; +} + +.mdi-pencil-box:before { + content: "\F3EC"; +} + +.mdi-pencil-box-outline:before { + content: "\F3ED"; +} + +.mdi-pencil-lock:before { + content: "\F3EE"; +} + +.mdi-pencil-off:before { + content: "\F3EF"; +} + +.mdi-percent:before { + content: "\F3F0"; +} + +.mdi-pharmacy:before { + content: "\F3F1"; +} + +.mdi-phone:before { + content: "\F3F2"; +} + +.mdi-phone-bluetooth:before { + content: "\F3F3"; +} + +.mdi-phone-classic:before { + content: "\F602"; +} + +.mdi-phone-forward:before { + content: "\F3F4"; +} + +.mdi-phone-hangup:before { + content: "\F3F5"; +} + +.mdi-phone-in-talk:before { + content: "\F3F6"; +} + +.mdi-phone-incoming:before { + content: "\F3F7"; +} + +.mdi-phone-locked:before { + content: "\F3F8"; +} + +.mdi-phone-log:before { + content: "\F3F9"; +} + +.mdi-phone-minus:before { + content: "\F658"; +} + +.mdi-phone-missed:before { + content: "\F3FA"; +} + +.mdi-phone-outgoing:before { + content: "\F3FB"; +} + +.mdi-phone-paused:before { + content: "\F3FC"; +} + +.mdi-phone-plus:before { + content: "\F659"; +} + +.mdi-phone-settings:before { + content: "\F3FD"; +} + +.mdi-phone-voip:before { + content: "\F3FE"; +} + +.mdi-pi:before { + content: "\F3FF"; +} + +.mdi-pi-box:before { + content: "\F400"; +} + +.mdi-pig:before { + content: "\F401"; +} + +.mdi-pill:before { + content: "\F402"; +} + +.mdi-pin:before { + content: "\F403"; +} + +.mdi-pin-off:before { + content: "\F404"; +} + +.mdi-pine-tree:before { + content: "\F405"; +} + +.mdi-pine-tree-box:before { + content: "\F406"; +} + +.mdi-pinterest:before { + content: "\F407"; +} + +.mdi-pinterest-box:before { + content: "\F408"; +} + +.mdi-pizza:before { + content: "\F409"; +} + +.mdi-play:before { + content: "\F40A"; +} + +.mdi-play-box-outline:before { + content: "\F40B"; +} + +.mdi-play-circle:before { + content: "\F40C"; +} + +.mdi-play-circle-outline:before { + content: "\F40D"; +} + +.mdi-play-pause:before { + content: "\F40E"; +} + +.mdi-play-protected-content:before { + content: "\F40F"; +} + +.mdi-playlist-check:before { + content: "\F5C7"; +} + +.mdi-playlist-minus:before { + content: "\F410"; +} + +.mdi-playlist-play:before { + content: "\F411"; +} + +.mdi-playlist-plus:before { + content: "\F412"; +} + +.mdi-playlist-remove:before { + content: "\F413"; +} + +.mdi-playstation:before { + content: "\F414"; +} + +.mdi-plus:before { + content: "\F415"; +} + +.mdi-plus-box:before { + content: "\F416"; +} + +.mdi-plus-circle:before { + content: "\F417"; +} + +.mdi-plus-circle-multiple-outline:before { + content: "\F418"; +} + +.mdi-plus-circle-outline:before { + content: "\F419"; +} + +.mdi-plus-network:before { + content: "\F41A"; +} + +.mdi-plus-one:before { + content: "\F41B"; +} + +.mdi-pocket:before { + content: "\F41C"; +} + +.mdi-pokeball:before { + content: "\F41D"; +} + +.mdi-polaroid:before { + content: "\F41E"; +} + +.mdi-poll:before { + content: "\F41F"; +} + +.mdi-poll-box:before { + content: "\F420"; +} + +.mdi-polymer:before { + content: "\F421"; +} + +.mdi-pool:before { + content: "\F606"; +} + +.mdi-popcorn:before { + content: "\F422"; +} + +.mdi-pot:before { + content: "\F65A"; +} + +.mdi-pot-mix:before { + content: "\F65B"; +} + +.mdi-pound:before { + content: "\F423"; +} + +.mdi-pound-box:before { + content: "\F424"; +} + +.mdi-power:before { + content: "\F425"; +} + +.mdi-power-settings:before { + content: "\F426"; +} + +.mdi-power-socket:before { + content: "\F427"; +} + +.mdi-presentation:before { + content: "\F428"; +} + +.mdi-presentation-play:before { + content: "\F429"; +} + +.mdi-printer:before { + content: "\F42A"; +} + +.mdi-printer-3d:before { + content: "\F42B"; +} + +.mdi-printer-alert:before { + content: "\F42C"; +} + +.mdi-priority-high:before { + content: "\F603"; +} + +.mdi-priority-low:before { + content: "\F604"; +} + +.mdi-professional-hexagon:before { + content: "\F42D"; +} + +.mdi-projector:before { + content: "\F42E"; +} + +.mdi-projector-screen:before { + content: "\F42F"; +} + +.mdi-pulse:before { + content: "\F430"; +} + +.mdi-puzzle:before { + content: "\F431"; +} + +.mdi-qqchat:before { + content: "\F605"; +} + +.mdi-qrcode:before { + content: "\F432"; +} + +.mdi-qrcode-scan:before { + content: "\F433"; +} + +.mdi-quadcopter:before { + content: "\F434"; +} + +.mdi-quality-high:before { + content: "\F435"; +} + +.mdi-quicktime:before { + content: "\F436"; +} + +.mdi-radar:before { + content: "\F437"; +} + +.mdi-radiator:before { + content: "\F438"; +} + +.mdi-radio:before { + content: "\F439"; +} + +.mdi-radio-handheld:before { + content: "\F43A"; +} + +.mdi-radio-tower:before { + content: "\F43B"; +} + +.mdi-radioactive:before { + content: "\F43C"; +} + +.mdi-radiobox-blank:before { + content: "\F43D"; +} + +.mdi-radiobox-marked:before { + content: "\F43E"; +} + +.mdi-raspberrypi:before { + content: "\F43F"; +} + +.mdi-ray-end:before { + content: "\F440"; +} + +.mdi-ray-end-arrow:before { + content: "\F441"; +} + +.mdi-ray-start:before { + content: "\F442"; +} + +.mdi-ray-start-arrow:before { + content: "\F443"; +} + +.mdi-ray-start-end:before { + content: "\F444"; +} + +.mdi-ray-vertex:before { + content: "\F445"; +} + +.mdi-rdio:before { + content: "\F446"; +} + +.mdi-read:before { + content: "\F447"; +} + +.mdi-readability:before { + content: "\F448"; +} + +.mdi-receipt:before { + content: "\F449"; +} + +.mdi-record:before { + content: "\F44A"; +} + +.mdi-record-rec:before { + content: "\F44B"; +} + +.mdi-recycle:before { + content: "\F44C"; +} + +.mdi-reddit:before { + content: "\F44D"; +} + +.mdi-redo:before { + content: "\F44E"; +} + +.mdi-redo-variant:before { + content: "\F44F"; +} + +.mdi-refresh:before { + content: "\F450"; +} + +.mdi-regex:before { + content: "\F451"; +} + +.mdi-relative-scale:before { + content: "\F452"; +} + +.mdi-reload:before { + content: "\F453"; +} + +.mdi-remote:before { + content: "\F454"; +} + +.mdi-rename-box:before { + content: "\F455"; +} + +.mdi-repeat:before { + content: "\F456"; +} + +.mdi-repeat-off:before { + content: "\F457"; +} + +.mdi-repeat-once:before { + content: "\F458"; +} + +.mdi-replay:before { + content: "\F459"; +} + +.mdi-reply:before { + content: "\F45A"; +} + +.mdi-reply-all:before { + content: "\F45B"; +} + +.mdi-reproduction:before { + content: "\F45C"; +} + +.mdi-resize-bottom-right:before { + content: "\F45D"; +} + +.mdi-responsive:before { + content: "\F45E"; +} + +.mdi-rewind:before { + content: "\F45F"; +} + +.mdi-ribbon:before { + content: "\F460"; +} + +.mdi-road:before { + content: "\F461"; +} + +.mdi-road-variant:before { + content: "\F462"; +} + +.mdi-rocket:before { + content: "\F463"; +} + +.mdi-rotate-3d:before { + content: "\F464"; +} + +.mdi-rotate-left:before { + content: "\F465"; +} + +.mdi-rotate-left-variant:before { + content: "\F466"; +} + +.mdi-rotate-right:before { + content: "\F467"; +} + +.mdi-rotate-right-variant:before { + content: "\F468"; +} + +.mdi-rounded-corner:before { + content: "\F607"; +} + +.mdi-router-wireless:before { + content: "\F469"; +} + +.mdi-routes:before { + content: "\F46A"; +} + +.mdi-rowing:before { + content: "\F608"; +} + +.mdi-rss:before { + content: "\F46B"; +} + +.mdi-rss-box:before { + content: "\F46C"; +} + +.mdi-ruler:before { + content: "\F46D"; +} + +.mdi-run:before { + content: "\F46E"; +} + +.mdi-sale:before { + content: "\F46F"; +} + +.mdi-satellite:before { + content: "\F470"; +} + +.mdi-satellite-variant:before { + content: "\F471"; +} + +.mdi-saxophone:before { + content: "\F609"; +} + +.mdi-scale:before { + content: "\F472"; +} + +.mdi-scale-balance:before { + content: "\F5D1"; +} + +.mdi-scale-bathroom:before { + content: "\F473"; +} + +.mdi-school:before { + content: "\F474"; +} + +.mdi-screen-rotation:before { + content: "\F475"; +} + +.mdi-screen-rotation-lock:before { + content: "\F476"; +} + +.mdi-screwdriver:before { + content: "\F477"; +} + +.mdi-script:before { + content: "\F478"; +} + +.mdi-sd:before { + content: "\F479"; +} + +.mdi-seal:before { + content: "\F47A"; +} + +.mdi-seat-flat:before { + content: "\F47B"; +} + +.mdi-seat-flat-angled:before { + content: "\F47C"; +} + +.mdi-seat-individual-suite:before { + content: "\F47D"; +} + +.mdi-seat-legroom-extra:before { + content: "\F47E"; +} + +.mdi-seat-legroom-normal:before { + content: "\F47F"; +} + +.mdi-seat-legroom-reduced:before { + content: "\F480"; +} + +.mdi-seat-recline-extra:before { + content: "\F481"; +} + +.mdi-seat-recline-normal:before { + content: "\F482"; +} + +.mdi-security:before { + content: "\F483"; +} + +.mdi-security-network:before { + content: "\F484"; +} + +.mdi-select:before { + content: "\F485"; +} + +.mdi-select-all:before { + content: "\F486"; +} + +.mdi-select-inverse:before { + content: "\F487"; +} + +.mdi-select-off:before { + content: "\F488"; +} + +.mdi-selection:before { + content: "\F489"; +} + +.mdi-send:before { + content: "\F48A"; +} + +.mdi-serial-port:before { + content: "\F65C"; +} + +.mdi-server:before { + content: "\F48B"; +} + +.mdi-server-minus:before { + content: "\F48C"; +} + +.mdi-server-network:before { + content: "\F48D"; +} + +.mdi-server-network-off:before { + content: "\F48E"; +} + +.mdi-server-off:before { + content: "\F48F"; +} + +.mdi-server-plus:before { + content: "\F490"; +} + +.mdi-server-remove:before { + content: "\F491"; +} + +.mdi-server-security:before { + content: "\F492"; +} + +.mdi-settings:before { + content: "\F493"; +} + +.mdi-settings-box:before { + content: "\F494"; +} + +.mdi-shape-circle-plus:before { + content: "\F65D"; +} + +.mdi-shape-plus:before { + content: "\F495"; +} + +.mdi-shape-polygon-plus:before { + content: "\F65E"; +} + +.mdi-shape-rectangle-plus:before { + content: "\F65F"; +} + +.mdi-shape-square-plus:before { + content: "\F660"; +} + +.mdi-share:before { + content: "\F496"; +} + +.mdi-share-variant:before { + content: "\F497"; +} + +.mdi-shield:before { + content: "\F498"; +} + +.mdi-shield-outline:before { + content: "\F499"; +} + +.mdi-shopping:before { + content: "\F49A"; +} + +.mdi-shopping-music:before { + content: "\F49B"; +} + +.mdi-shredder:before { + content: "\F49C"; +} + +.mdi-shuffle:before { + content: "\F49D"; +} + +.mdi-shuffle-disabled:before { + content: "\F49E"; +} + +.mdi-shuffle-variant:before { + content: "\F49F"; +} + +.mdi-sigma:before { + content: "\F4A0"; +} + +.mdi-sigma-lower:before { + content: "\F62B"; +} + +.mdi-sign-caution:before { + content: "\F4A1"; +} + +.mdi-signal:before { + content: "\F4A2"; +} + +.mdi-signal-variant:before { + content: "\F60A"; +} + +.mdi-silverware:before { + content: "\F4A3"; +} + +.mdi-silverware-fork:before { + content: "\F4A4"; +} + +.mdi-silverware-spoon:before { + content: "\F4A5"; +} + +.mdi-silverware-variant:before { + content: "\F4A6"; +} + +.mdi-sim:before { + content: "\F4A7"; +} + +.mdi-sim-alert:before { + content: "\F4A8"; +} + +.mdi-sim-off:before { + content: "\F4A9"; +} + +.mdi-sitemap:before { + content: "\F4AA"; +} + +.mdi-skip-backward:before { + content: "\F4AB"; +} + +.mdi-skip-forward:before { + content: "\F4AC"; +} + +.mdi-skip-next:before { + content: "\F4AD"; +} + +.mdi-skip-next-circle:before { + content: "\F661"; +} + +.mdi-skip-next-circle-outline:before { + content: "\F662"; +} + +.mdi-skip-previous:before { + content: "\F4AE"; +} + +.mdi-skip-previous-circle:before { + content: "\F663"; +} + +.mdi-skip-previous-circle-outline:before { + content: "\F664"; +} + +.mdi-skype:before { + content: "\F4AF"; +} + +.mdi-skype-business:before { + content: "\F4B0"; +} + +.mdi-slack:before { + content: "\F4B1"; +} + +.mdi-sleep:before { + content: "\F4B2"; +} + +.mdi-sleep-off:before { + content: "\F4B3"; +} + +.mdi-smoking:before { + content: "\F4B4"; +} + +.mdi-smoking-off:before { + content: "\F4B5"; +} + +.mdi-snapchat:before { + content: "\F4B6"; +} + +.mdi-snowman:before { + content: "\F4B7"; +} + +.mdi-soccer:before { + content: "\F4B8"; +} + +.mdi-sofa:before { + content: "\F4B9"; +} + +.mdi-sort:before { + content: "\F4BA"; +} + +.mdi-sort-alphabetical:before { + content: "\F4BB"; +} + +.mdi-sort-ascending:before { + content: "\F4BC"; +} + +.mdi-sort-descending:before { + content: "\F4BD"; +} + +.mdi-sort-numeric:before { + content: "\F4BE"; +} + +.mdi-sort-variant:before { + content: "\F4BF"; +} + +.mdi-soundcloud:before { + content: "\F4C0"; +} + +.mdi-source-branch:before { + content: "\F62C"; +} + +.mdi-source-fork:before { + content: "\F4C1"; +} + +.mdi-source-merge:before { + content: "\F62D"; +} + +.mdi-source-pull:before { + content: "\F4C2"; +} + +.mdi-speaker:before { + content: "\F4C3"; +} + +.mdi-speaker-off:before { + content: "\F4C4"; +} + +.mdi-speedometer:before { + content: "\F4C5"; +} + +.mdi-spellcheck:before { + content: "\F4C6"; +} + +.mdi-spotify:before { + content: "\F4C7"; +} + +.mdi-spotlight:before { + content: "\F4C8"; +} + +.mdi-spotlight-beam:before { + content: "\F4C9"; +} + +.mdi-spray:before { + content: "\F665"; +} + +.mdi-square-inc:before { + content: "\F4CA"; +} + +.mdi-square-inc-cash:before { + content: "\F4CB"; +} + +.mdi-stackexchange:before { + content: "\F60B"; +} + +.mdi-stackoverflow:before { + content: "\F4CC"; +} + +.mdi-stairs:before { + content: "\F4CD"; +} + +.mdi-star:before { + content: "\F4CE"; +} + +.mdi-star-circle:before { + content: "\F4CF"; +} + +.mdi-star-half:before { + content: "\F4D0"; +} + +.mdi-star-off:before { + content: "\F4D1"; +} + +.mdi-star-outline:before { + content: "\F4D2"; +} + +.mdi-steam:before { + content: "\F4D3"; +} + +.mdi-steering:before { + content: "\F4D4"; +} + +.mdi-step-backward:before { + content: "\F4D5"; +} + +.mdi-step-backward-2:before { + content: "\F4D6"; +} + +.mdi-step-forward:before { + content: "\F4D7"; +} + +.mdi-step-forward-2:before { + content: "\F4D8"; +} + +.mdi-stethoscope:before { + content: "\F4D9"; +} + +.mdi-sticker:before { + content: "\F5D0"; +} + +.mdi-stocking:before { + content: "\F4DA"; +} + +.mdi-stop:before { + content: "\F4DB"; +} + +.mdi-stop-circle:before { + content: "\F666"; +} + +.mdi-stop-circle-outline:before { + content: "\F667"; +} + +.mdi-store:before { + content: "\F4DC"; +} + +.mdi-store-24-hour:before { + content: "\F4DD"; +} + +.mdi-stove:before { + content: "\F4DE"; +} + +.mdi-subdirectory-arrow-left:before { + content: "\F60C"; +} + +.mdi-subdirectory-arrow-right:before { + content: "\F60D"; +} + +.mdi-subway:before { + content: "\F4DF"; +} + +.mdi-sunglasses:before { + content: "\F4E0"; +} + +.mdi-surround-sound:before { + content: "\F5C5"; +} + +.mdi-swap-horizontal:before { + content: "\F4E1"; +} + +.mdi-swap-vertical:before { + content: "\F4E2"; +} + +.mdi-swim:before { + content: "\F4E3"; +} + +.mdi-switch:before { + content: "\F4E4"; +} + +.mdi-sword:before { + content: "\F4E5"; +} + +.mdi-sync:before { + content: "\F4E6"; +} + +.mdi-sync-alert:before { + content: "\F4E7"; +} + +.mdi-sync-off:before { + content: "\F4E8"; +} + +.mdi-tab:before { + content: "\F4E9"; +} + +.mdi-tab-unselected:before { + content: "\F4EA"; +} + +.mdi-table:before { + content: "\F4EB"; +} + +.mdi-table-column-plus-after:before { + content: "\F4EC"; +} + +.mdi-table-column-plus-before:before { + content: "\F4ED"; +} + +.mdi-table-column-remove:before { + content: "\F4EE"; +} + +.mdi-table-column-width:before { + content: "\F4EF"; +} + +.mdi-table-edit:before { + content: "\F4F0"; +} + +.mdi-table-large:before { + content: "\F4F1"; +} + +.mdi-table-row-height:before { + content: "\F4F2"; +} + +.mdi-table-row-plus-after:before { + content: "\F4F3"; +} + +.mdi-table-row-plus-before:before { + content: "\F4F4"; +} + +.mdi-table-row-remove:before { + content: "\F4F5"; +} + +.mdi-tablet:before { + content: "\F4F6"; +} + +.mdi-tablet-android:before { + content: "\F4F7"; +} + +.mdi-tablet-ipad:before { + content: "\F4F8"; +} + +.mdi-tag:before { + content: "\F4F9"; +} + +.mdi-tag-faces:before { + content: "\F4FA"; +} + +.mdi-tag-multiple:before { + content: "\F4FB"; +} + +.mdi-tag-outline:before { + content: "\F4FC"; +} + +.mdi-tag-text-outline:before { + content: "\F4FD"; +} + +.mdi-target:before { + content: "\F4FE"; +} + +.mdi-taxi:before { + content: "\F4FF"; +} + +.mdi-teamviewer:before { + content: "\F500"; +} + +.mdi-telegram:before { + content: "\F501"; +} + +.mdi-television:before { + content: "\F502"; +} + +.mdi-television-guide:before { + content: "\F503"; +} + +.mdi-temperature-celsius:before { + content: "\F504"; +} + +.mdi-temperature-fahrenheit:before { + content: "\F505"; +} + +.mdi-temperature-kelvin:before { + content: "\F506"; +} + +.mdi-tennis:before { + content: "\F507"; +} + +.mdi-tent:before { + content: "\F508"; +} + +.mdi-terrain:before { + content: "\F509"; +} + +.mdi-test-tube:before { + content: "\F668"; +} + +.mdi-text-shadow:before { + content: "\F669"; +} + +.mdi-text-to-speech:before { + content: "\F50A"; +} + +.mdi-text-to-speech-off:before { + content: "\F50B"; +} + +.mdi-textbox:before { + content: "\F60E"; +} + +.mdi-texture:before { + content: "\F50C"; +} + +.mdi-theater:before { + content: "\F50D"; +} + +.mdi-theme-light-dark:before { + content: "\F50E"; +} + +.mdi-thermometer:before { + content: "\F50F"; +} + +.mdi-thermometer-lines:before { + content: "\F510"; +} + +.mdi-thumb-down:before { + content: "\F511"; +} + +.mdi-thumb-down-outline:before { + content: "\F512"; +} + +.mdi-thumb-up:before { + content: "\F513"; +} + +.mdi-thumb-up-outline:before { + content: "\F514"; +} + +.mdi-thumbs-up-down:before { + content: "\F515"; +} + +.mdi-ticket:before { + content: "\F516"; +} + +.mdi-ticket-account:before { + content: "\F517"; +} + +.mdi-ticket-confirmation:before { + content: "\F518"; +} + +.mdi-tie:before { + content: "\F519"; +} + +.mdi-timelapse:before { + content: "\F51A"; +} + +.mdi-timer:before { + content: "\F51B"; +} + +.mdi-timer-10:before { + content: "\F51C"; +} + +.mdi-timer-3:before { + content: "\F51D"; +} + +.mdi-timer-off:before { + content: "\F51E"; +} + +.mdi-timer-sand:before { + content: "\F51F"; +} + +.mdi-timetable:before { + content: "\F520"; +} + +.mdi-toggle-switch:before { + content: "\F521"; +} + +.mdi-toggle-switch-off:before { + content: "\F522"; +} + +.mdi-tooltip:before { + content: "\F523"; +} + +.mdi-tooltip-edit:before { + content: "\F524"; +} + +.mdi-tooltip-image:before { + content: "\F525"; +} + +.mdi-tooltip-outline:before { + content: "\F526"; +} + +.mdi-tooltip-outline-plus:before { + content: "\F527"; +} + +.mdi-tooltip-text:before { + content: "\F528"; +} + +.mdi-tooth:before { + content: "\F529"; +} + +.mdi-tor:before { + content: "\F52A"; +} + +.mdi-traffic-light:before { + content: "\F52B"; +} + +.mdi-train:before { + content: "\F52C"; +} + +.mdi-tram:before { + content: "\F52D"; +} + +.mdi-transcribe:before { + content: "\F52E"; +} + +.mdi-transcribe-close:before { + content: "\F52F"; +} + +.mdi-transfer:before { + content: "\F530"; +} + +.mdi-translate:before { + content: "\F5CA"; +} + +.mdi-tree:before { + content: "\F531"; +} + +.mdi-trello:before { + content: "\F532"; +} + +.mdi-trending-down:before { + content: "\F533"; +} + +.mdi-trending-neutral:before { + content: "\F534"; +} + +.mdi-trending-up:before { + content: "\F535"; +} + +.mdi-triangle:before { + content: "\F536"; +} + +.mdi-triangle-outline:before { + content: "\F537"; +} + +.mdi-trophy:before { + content: "\F538"; +} + +.mdi-trophy-award:before { + content: "\F539"; +} + +.mdi-trophy-outline:before { + content: "\F53A"; +} + +.mdi-trophy-variant:before { + content: "\F53B"; +} + +.mdi-trophy-variant-outline:before { + content: "\F53C"; +} + +.mdi-truck:before { + content: "\F53D"; +} + +.mdi-truck-delivery:before { + content: "\F53E"; +} + +.mdi-tshirt-crew:before { + content: "\F53F"; +} + +.mdi-tshirt-v:before { + content: "\F540"; +} + +.mdi-tumblr:before { + content: "\F541"; +} + +.mdi-tumblr-reblog:before { + content: "\F542"; +} + +.mdi-tune:before { + content: "\F62E"; +} + +.mdi-tune-vertical:before { + content: "\F66A"; +} + +.mdi-twitch:before { + content: "\F543"; +} + +.mdi-twitter:before { + content: "\F544"; +} + +.mdi-twitter-box:before { + content: "\F545"; +} + +.mdi-twitter-circle:before { + content: "\F546"; +} + +.mdi-twitter-retweet:before { + content: "\F547"; +} + +.mdi-ubuntu:before { + content: "\F548"; +} + +.mdi-umbraco:before { + content: "\F549"; +} + +.mdi-umbrella:before { + content: "\F54A"; +} + +.mdi-umbrella-outline:before { + content: "\F54B"; +} + +.mdi-undo:before { + content: "\F54C"; +} + +.mdi-undo-variant:before { + content: "\F54D"; +} + +.mdi-unfold-less:before { + content: "\F54E"; +} + +.mdi-unfold-more:before { + content: "\F54F"; +} + +.mdi-ungroup:before { + content: "\F550"; +} + +.mdi-untappd:before { + content: "\F551"; +} + +.mdi-upload:before { + content: "\F552"; +} + +.mdi-usb:before { + content: "\F553"; +} + +.mdi-vector-arrange-above:before { + content: "\F554"; +} + +.mdi-vector-arrange-below:before { + content: "\F555"; +} + +.mdi-vector-circle:before { + content: "\F556"; +} + +.mdi-vector-circle-variant:before { + content: "\F557"; +} + +.mdi-vector-combine:before { + content: "\F558"; +} + +.mdi-vector-curve:before { + content: "\F559"; +} + +.mdi-vector-difference:before { + content: "\F55A"; +} + +.mdi-vector-difference-ab:before { + content: "\F55B"; +} + +.mdi-vector-difference-ba:before { + content: "\F55C"; +} + +.mdi-vector-intersection:before { + content: "\F55D"; +} + +.mdi-vector-line:before { + content: "\F55E"; +} + +.mdi-vector-point:before { + content: "\F55F"; +} + +.mdi-vector-polygon:before { + content: "\F560"; +} + +.mdi-vector-polyline:before { + content: "\F561"; +} + +.mdi-vector-rectangle:before { + content: "\F5C6"; +} + +.mdi-vector-selection:before { + content: "\F562"; +} + +.mdi-vector-square:before { + content: "\F001"; +} + +.mdi-vector-triangle:before { + content: "\F563"; +} + +.mdi-vector-union:before { + content: "\F564"; +} + +.mdi-verified:before { + content: "\F565"; +} + +.mdi-vibrate:before { + content: "\F566"; +} + +.mdi-video:before { + content: "\F567"; +} + +.mdi-video-off:before { + content: "\F568"; +} + +.mdi-video-switch:before { + content: "\F569"; +} + +.mdi-view-agenda:before { + content: "\F56A"; +} + +.mdi-view-array:before { + content: "\F56B"; +} + +.mdi-view-carousel:before { + content: "\F56C"; +} + +.mdi-view-column:before { + content: "\F56D"; +} + +.mdi-view-dashboard:before { + content: "\F56E"; +} + +.mdi-view-day:before { + content: "\F56F"; +} + +.mdi-view-grid:before { + content: "\F570"; +} + +.mdi-view-headline:before { + content: "\F571"; +} + +.mdi-view-list:before { + content: "\F572"; +} + +.mdi-view-module:before { + content: "\F573"; +} + +.mdi-view-quilt:before { + content: "\F574"; +} + +.mdi-view-stream:before { + content: "\F575"; +} + +.mdi-view-week:before { + content: "\F576"; +} + +.mdi-vimeo:before { + content: "\F577"; +} + +.mdi-vine:before { + content: "\F578"; +} + +.mdi-violin:before { + content: "\F60F"; +} + +.mdi-visualstudio:before { + content: "\F610"; +} + +.mdi-vk:before { + content: "\F579"; +} + +.mdi-vk-box:before { + content: "\F57A"; +} + +.mdi-vk-circle:before { + content: "\F57B"; +} + +.mdi-vlc:before { + content: "\F57C"; +} + +.mdi-voice:before { + content: "\F5CB"; +} + +.mdi-voicemail:before { + content: "\F57D"; +} + +.mdi-volume-high:before { + content: "\F57E"; +} + +.mdi-volume-low:before { + content: "\F57F"; +} + +.mdi-volume-medium:before { + content: "\F580"; +} + +.mdi-volume-off:before { + content: "\F581"; +} + +.mdi-vpn:before { + content: "\F582"; +} + +.mdi-walk:before { + content: "\F583"; +} + +.mdi-wallet:before { + content: "\F584"; +} + +.mdi-wallet-giftcard:before { + content: "\F585"; +} + +.mdi-wallet-membership:before { + content: "\F586"; +} + +.mdi-wallet-travel:before { + content: "\F587"; +} + +.mdi-wan:before { + content: "\F588"; +} + +.mdi-watch:before { + content: "\F589"; +} + +.mdi-watch-export:before { + content: "\F58A"; +} + +.mdi-watch-import:before { + content: "\F58B"; +} + +.mdi-water:before { + content: "\F58C"; +} + +.mdi-water-off:before { + content: "\F58D"; +} + +.mdi-water-percent:before { + content: "\F58E"; +} + +.mdi-water-pump:before { + content: "\F58F"; +} + +.mdi-watermark:before { + content: "\F612"; +} + +.mdi-weather-cloudy:before { + content: "\F590"; +} + +.mdi-weather-fog:before { + content: "\F591"; +} + +.mdi-weather-hail:before { + content: "\F592"; +} + +.mdi-weather-lightning:before { + content: "\F593"; +} + +.mdi-weather-night:before { + content: "\F594"; +} + +.mdi-weather-partlycloudy:before { + content: "\F595"; +} + +.mdi-weather-pouring:before { + content: "\F596"; +} + +.mdi-weather-rainy:before { + content: "\F597"; +} + +.mdi-weather-snowy:before { + content: "\F598"; +} + +.mdi-weather-sunny:before { + content: "\F599"; +} + +.mdi-weather-sunset:before { + content: "\F59A"; +} + +.mdi-weather-sunset-down:before { + content: "\F59B"; +} + +.mdi-weather-sunset-up:before { + content: "\F59C"; +} + +.mdi-weather-windy:before { + content: "\F59D"; +} + +.mdi-weather-windy-variant:before { + content: "\F59E"; +} + +.mdi-web:before { + content: "\F59F"; +} + +.mdi-webcam:before { + content: "\F5A0"; +} + +.mdi-webhook:before { + content: "\F62F"; +} + +.mdi-wechat:before { + content: "\F611"; +} + +.mdi-weight:before { + content: "\F5A1"; +} + +.mdi-weight-kilogram:before { + content: "\F5A2"; +} + +.mdi-whatsapp:before { + content: "\F5A3"; +} + +.mdi-wheelchair-accessibility:before { + content: "\F5A4"; +} + +.mdi-white-balance-auto:before { + content: "\F5A5"; +} + +.mdi-white-balance-incandescent:before { + content: "\F5A6"; +} + +.mdi-white-balance-iridescent:before { + content: "\F5A7"; +} + +.mdi-white-balance-sunny:before { + content: "\F5A8"; +} + +.mdi-wifi:before { + content: "\F5A9"; +} + +.mdi-wifi-off:before { + content: "\F5AA"; +} + +.mdi-wii:before { + content: "\F5AB"; +} + +.mdi-wikipedia:before { + content: "\F5AC"; +} + +.mdi-window-close:before { + content: "\F5AD"; +} + +.mdi-window-closed:before { + content: "\F5AE"; +} + +.mdi-window-maximize:before { + content: "\F5AF"; +} + +.mdi-window-minimize:before { + content: "\F5B0"; +} + +.mdi-window-open:before { + content: "\F5B1"; +} + +.mdi-window-restore:before { + content: "\F5B2"; +} + +.mdi-windows:before { + content: "\F5B3"; +} + +.mdi-wordpress:before { + content: "\F5B4"; +} + +.mdi-worker:before { + content: "\F5B5"; +} + +.mdi-wrap:before { + content: "\F5B6"; +} + +.mdi-wrench:before { + content: "\F5B7"; +} + +.mdi-wunderlist:before { + content: "\F5B8"; +} + +.mdi-xaml:before { + content: "\F673"; +} + +.mdi-xbox:before { + content: "\F5B9"; +} + +.mdi-xbox-controller:before { + content: "\F5BA"; +} + +.mdi-xbox-controller-off:before { + content: "\F5BB"; +} + +.mdi-xda:before { + content: "\F5BC"; +} + +.mdi-xing:before { + content: "\F5BD"; +} + +.mdi-xing-box:before { + content: "\F5BE"; +} + +.mdi-xing-circle:before { + content: "\F5BF"; +} + +.mdi-xml:before { + content: "\F5C0"; +} + +.mdi-yeast:before { + content: "\F5C1"; +} + +.mdi-yelp:before { + content: "\F5C2"; +} + +.mdi-youtube-play:before { + content: "\F5C3"; +} + +.mdi-zip-box:before { + content: "\F5C4"; +} + +.mdi-18px { + font-size: 18px; +} + +.mdi-24px { + font-size: 24px; +} + +.mdi-36px { + font-size: 36px; +} + +.mdi-48px { + font-size: 48px; +} + +.mdi-dark { + color: rgba(0, 0, 0, 0.54); +} + +.mdi-dark.mdi-inactive { + color: rgba(0, 0, 0, 0.26); +} + +.mdi-light { + color: white; +} + +.mdi-light.mdi-inactive { + color: rgba(255, 255, 255, 0.3); +} + +.mdi-rotate-45 { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.mdi-rotate-90 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.mdi-rotate-135 { + -webkit-transform: rotate(135deg); + -ms-transform: rotate(135deg); + transform: rotate(135deg); +} + +.mdi-rotate-180 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.mdi-rotate-225 { + -webkit-transform: rotate(225deg); + -ms-transform: rotate(225deg); + transform: rotate(225deg); +} + +.mdi-rotate-270 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.mdi-rotate-315 { + -webkit-transform: rotate(315deg); + -ms-transform: rotate(315deg); + transform: rotate(315deg); +} + +.mdi-flip-horizontal { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + +.mdi-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); + filter: FlipV; + -ms-filter: "FlipV"; +} + +/*# sourceMappingURL=materialdesignicons.css.map */ diff --git a/assets/less/icons/themify-icons/fonts/themify.eot b/assets/less/icons/themify-icons/fonts/themify.eot new file mode 100644 index 0000000..9ec298b Binary files /dev/null and b/assets/less/icons/themify-icons/fonts/themify.eot differ diff --git a/assets/less/icons/themify-icons/fonts/themify.svg b/assets/less/icons/themify-icons/fonts/themify.svg new file mode 100644 index 0000000..3d53854 --- /dev/null +++ b/assets/less/icons/themify-icons/fonts/themify.svg @@ -0,0 +1,362 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="themify" horiz-adv-x="512"> +<font-face units-per-em="512" ascent="480" descent="-32" /> +<missing-glyph horiz-adv-x="512" /> +<glyph unicode="&#x20;" d="" horiz-adv-x="256" /> +<glyph unicode="&#xe600;" d="M512 329.412h-99.178l70.114-70.114-21.293-21.293-70.114 70.114v-99.178h-30.118v98.966l-320.632-321.204-21.293 21.293 320.844 321.416h-99.388v30.118h99.177l-70.114 70.114 21.293 21.293 70.114-70.114v99.178h30.118v-99.298l68.879 68.999 21.293-21.293-68.758-68.879h99.057v-30.118z" /> +<glyph unicode="&#xe601;" d="M108.032 301.312c-28.793 0-46.682-15.059-46.682-39.334v-65.084c0-12.499 4.849-24.214 13.643-33.069 8.794-8.825 20.54-13.704 33.039-13.704h52.495l171.249-171.309v494.803l-169.563-172.303h-54.181zM301.659 400.068v-348.522l-128.662 128.692h-64.994c-9.126 0-16.535 7.469-16.535 16.655v65.084c0 2.74 0 9.216 16.564 9.216h66.771l126.856 128.873zM361.563 149.098v30.118c16.745 0 30.358 13.613 30.358 30.358s-13.613 30.358-30.358 30.358v30.118c33.34 0 60.476-27.136 60.476-60.476s-27.136-60.476-60.476-60.476zM482.756 209.332c0-66.44-54.031-120.471-120.471-120.471v30.118c49.815 0 90.353 40.538 90.353 90.353s-40.538 90.353-90.353 90.353v30.118c66.409 0 120.471-54.061 120.471-120.471z" /> +<glyph unicode="&#xe602;" d="M512-16.58c-1.897 80.926-83.667 150.558-196.397 168.93v41.382c14.818 14.245 25.359 36.352 32.256 55.206 9.999 5 18.793 16.143 23.913 31.112 7.168 20.721 4.397 39.846-6.204 49.061 0.844 7.168 1.385 14.487 0.452 21.775-2.38 19.968 1.957 31.262 5.843 41.201 3.192 8.343 6.897 17.8 3.192 28.461-13.312 38.34-52.013 59.452-108.966 59.452l-7.951-0.15c-39.544-1.416-51.411-18.071-59.362-33.581-0.994-1.868-2.319-4.397-2.319-4.548-51.561-4.608-51.109-47.255-50.718-81.529l0.090-11.113c0-6.174 0.271-12.619 0.783-19.245-12.8-9.036-15.179-30.268-5.391-52.315 5.572-12.499 13.613-21.956 22.558-26.865 7.319-20.299 18.823-44.273 35.508-59.181v-38.641c-114.387-17.74-197.391-87.552-199.288-169.412l-0.361-15.42h512.692l-0.332 15.42zM31.744-1.882c11.806 63.067 86.106 115.079 184.38 126.615l13.282 1.566v80.293l-6.506 4.517c-11.836 8.192-23.823 28.522-32.828 55.748l-2.5 8.463-8.855 1.536c-1.596 0.572-6.264 4.608-9.939 12.89-2.259 5.060-3.132 9.397-3.373 12.499l15.36-4.307-2.892 22.558c-1.265 9.939-1.928 19.606-1.928 28.612l-0.090 11.445c-0.452 40.388 1.536 49.212 23.281 51.17 16.414 1.446 22.648 13.523 26.383 20.751 4.518 8.794 8.433 16.354 33.732 17.287l6.837 0.12c24.967 0 68.638-5.090 80.384-38.611 0-1.295-1.566-5.331-2.711-8.282-4.367-11.264-10.963-28.281-7.65-55.808 0.723-5.662-0.211-12.77-1.204-20.329l-2.68-24.245 13.282 1.446c0.241-3.132-0.12-8.101-2.259-14.216-2.921-8.704-7.288-13.191-7.138-13.673h-10.842l-3.433-10.3c-8.524-25.691-19.577-45.086-30.389-53.248l-5.964-4.517v-82.101l13.192-1.656c96.708-12.077 169.893-63.94 181.609-126.253h-448.542z" /> +<glyph unicode="&#xe603;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM451.584 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.815c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h270.878v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471h-30.118c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.874c24.817-0.12 44.996-20.33 44.996-45.177zM421.466 225.204c0 8.313-6.776 15.059-15.059 15.059h-300.815c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.815c8.283 0 15.059 6.747 15.059 15.059v213.233z" /> +<glyph unicode="&#xe604;" d="M64.271 325.226l42.225 77.914c32.708 49.634 98.244 63.097 146.703 30.991l-16.595-25.088c-34.605 22.86-81.408 13.252-104.328-21.353l-42.225-77.915c-23.522-35.78-13.975-82.582 20.691-105.442 34.424-22.649 72.584-16.474 99.78 16.204l23.131-19.305c-22.347-26.865-51.019-40.719-80.655-40.719-19.727 0-39.846 6.144-58.85 18.673-48.489 32.045-61.922 97.551-29.876 146.041zM121.706 238.035l-3.915-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.132 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.076c-29.364-29.365-77.132-29.365-106.466 0s-29.364 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.925c-41.081-41.080-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.171 41.171-108.032 41.081-149.052 0.060zM330.18 269.177h122.7v30.117h-122.7v-30.117zM316.084 228.608l58.76-33.942 15.059 26.052-58.76 33.942-15.059-26.052zM323.764 445.184l-47.586-82.432 26.052-15.059 47.586 82.402-26.052 15.089zM477.877 397.93l-15.059 26.052-150.347-86.799 15.059-26.052 150.348 86.799z" /> +<glyph unicode="&#xe605;" d="M329.337 419.283c-6.565 26.172-30.087 45.659-58.278 45.659-28.070 0-51.501-19.365-58.157-45.659h-107.49v-30.118h331.294v30.118h-107.37zM271.059 434.824c11.505 0 21.233-6.656 26.353-15.541h-52.194c5.18 9.125 14.607 15.541 25.841 15.541zM391.529 359.529h30.118v-316.717c0-24.908-20.269-45.176-45.176-45.176h-210.823c-24.907 0-45.177 20.269-45.177 45.176v316.717h30.118v-316.717c0-8.283 6.746-15.059 15.059-15.059h210.823c8.313 0 15.059 6.776 15.059 15.059v316.717zM240.941 329.412v-240.941h-30.118v240.941h30.118zM331.294 329.412v-240.941h-30.118v240.941h30.118z" /> +<glyph unicode="&#xe606;" d="M346.353 175.33c91.347 0 165.647 68.337 165.647 152.335s-74.3 152.335-165.647 152.335c-57.585 0-111.225-28.25-141.071-73.216-21.233 12.017-45.056 18.312-69.752 18.312-74.722 0-135.53-56.019-135.53-124.898 0-68.849 60.807-124.868 135.53-124.868 5.602 0 11.294 0.392 17.257 1.115 19.637-17.709 45.839-27.738 73.095-27.738 30.178 0 58.097 11.656 78.065 32.226 14.697-3.764 28.642-5.602 42.406-5.602zM293.497 215.416l-6.385-8.072c-14.185-17.86-37.075-28.522-61.229-28.522-21.805 0-42.587 8.734-57.073 24.004l-5.542 5.813-7.951-1.385c-6.445-1.115-12.981-1.807-19.787-1.807-58.127 0-105.412 42.496-105.412 94.72 0 52.254 47.285 94.78 105.412 94.78 23.853 0 46.652-7.409 65.928-21.474l14.215-10.331 8.042 15.661c22.227 43.159 70.355 71.077 122.639 71.077 74.722 0 135.529-54.814 135.529-122.247 0-67.373-60.808-122.218-135.529-122.218-13.644 0-27.738 2.259-43.038 6.957l-9.818 3.042zM346.353 163.764c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 73.412c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM459.294 58.353c-20.751 0-37.647-16.896-37.647-37.647s16.896-37.647 37.647-37.647 37.647 16.896 37.647 37.647-16.896 37.647-37.647 37.647zM451.764 20.706c0 4.156 3.373 7.529 7.529 7.529s7.529-3.373 7.529-7.529c0-8.283-15.059-8.283-15.059 0z" /> +<glyph unicode="&#xe607;" d="M512.602 239.059h-61.591c-7.379 96.196-84.51 173.026-180.827 180.013v62.103h-30.118v-62.193c-95.533-7.77-171.731-84.299-179.079-179.923h-61.59v-30.117h61.59c7.349-95.624 83.546-172.153 179.049-179.923v-61.019h30.117v60.928c96.316 6.957 173.447 83.788 180.827 180.013h61.59v30.118zM270.185 59.046v59.543h-30.118v-59.452c-78.939 7.589-141.794 70.776-148.962 149.805h58.88v30.118h-58.88c7.168 79.029 70.024 142.215 148.962 149.805v-58.278h30.118v58.368c79.721-6.837 143.481-70.264 150.709-149.896h-58.88v-30.118h58.88c-7.228-79.631-70.988-143.059-150.708-149.895z" /> +<glyph unicode="&#xe608;" d="M269.644 449.642l-119.476-86.799v-365.628l120.049 84.149 121.706-83.877v365.478l-122.278 86.678zM361.834 54.829l-91.708 63.247-89.811-62.976v292.412l89.6 65.084 91.949-65.204v-292.563zM218.474 299.264c0-29.063 23.642-52.706 52.706-52.706s52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706-52.706-23.642-52.706-52.706zM271.18 321.852c12.438 0 22.588-10.149 22.588-22.588s-10.149-22.588-22.588-22.588-22.588 10.149-22.588 22.588 10.15 22.588 22.588 22.588z" /> +<glyph unicode="&#xe609;" d="M278.588 43.294c0-12.499-10.089-22.588-22.588-22.588s-22.588 10.089-22.588 22.588 10.089 22.588 22.588 22.588 22.588-10.089 22.588-22.588zM481.882 434.824v-421.647c0-24.908-18.824-45.176-41.924-45.176h-367.917c-23.1 0-41.924 20.269-41.924 45.176v421.647c0 24.907 18.824 45.176 41.924 45.176h367.947c23.070 0 41.894-20.269 41.894-45.176zM451.764 434.824c0 8.162-5.391 15.059-11.806 15.059h-367.917c-6.415 0-11.806-6.897-11.806-15.059v-421.647c0-8.162 5.391-15.059 11.806-15.059h367.947c6.385 0 11.776 6.897 11.776 15.059v421.647zM90.353 419.764h331.294v-331.294h-331.294v331.294zM120.471 118.588h271.059v271.059h-271.059v-271.059z" /> +<glyph unicode="&#xe60a;" d="M501.368 268.664h-187.483l-57.886 178.297-57.916-178.297h-187.452l151.643-110.17-57.886-178.297 151.612 110.201 151.643-110.201-57.886 178.297 151.612 110.171zM350.358 59.046l-94.358 68.608-94.358-68.578 36.051 110.983-94.359 68.488h116.645l36.020 110.954 36.020-110.954h116.645l-94.358-68.517 36.051-110.983z" /> +<glyph unicode="&#xe60b;" d="M195.764 389.647c-42.948 0-82.582-23.431-103.996-60.236h-31.533v-316.236c0-24.907 20.269-45.176 45.177-45.176h180.706c24.907 0 45.176 20.269 45.176 45.176v316.236h-31.533c-21.413 36.774-61.108 60.236-103.996 60.236zM195.764 359.529c25.871 0 50.356-11.324 67.283-30.117h-134.536c16.896 18.793 41.351 30.117 67.252 30.117zM301.176 13.176c0-8.283-6.747-15.059-15.059-15.059h-180.706c-8.313 0-15.059 6.776-15.059 15.059v286.118h210.823v-286.118zM240.941 480h-90.353v-90.353h90.353v90.353zM210.823 419.764h-30.118v30.118h30.118v-30.118zM359.755 434.492l94.449-15.601-4.909-29.696-180.706 29.817 2.56 15.481-2.56 15.48 180.706 29.817 4.909-29.696-94.449-15.601z" /> +<glyph unicode="&#xe60c;" d="M346.353 359.529c0 49.815-40.538 90.353-90.353 90.353s-90.353-40.538-90.353-90.353c0-44.664 32.648-81.619 75.294-88.817v-242.477h-60.236v-30.118h150.588v30.118h-60.236v242.477c42.647 7.198 75.294 44.153 75.294 88.817zM195.764 359.529c0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236-60.236 27.015-60.236 60.236zM135.65 413.982c-11.385-13.854-17.378-30.238-17.378-47.405s5.993-33.551 17.378-47.405l-23.311-19.155c-15.812 19.305-24.184 42.315-24.184 66.53s8.373 47.255 24.184 66.53l23.311-19.094zM60.236 366.547c0-32.497 11.656-63.127 33.702-88.486l-22.709-19.757c-26.534 30.479-41.111 68.97-41.111 108.243s14.577 77.764 41.111 108.273l22.709-19.757c-22.046-25.389-33.702-56.019-33.702-88.516zM423.846 366.547c0-24.245-8.373-47.225-24.214-66.53l-23.281 19.125c11.385 13.854 17.378 30.238 17.378 47.405s-5.993 33.551-17.378 47.405l23.281 19.125c15.842-19.276 24.214-42.285 24.214-66.53zM481.882 366.547c0-39.304-14.577-77.764-41.111-108.273l-22.709 19.757c22.046 25.42 33.702 56.019 33.702 88.516s-11.656 63.126-33.702 88.486l22.709 19.757c26.534-30.479 41.111-68.94 41.111-108.243z" /> +<glyph unicode="&#xe60d;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.119 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.469 0-22.588 10.149-22.588 22.588s10.12 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.12-22.588-22.588-22.588zM402.703 419.764l-9.096-60.236h-395.836l33.672-242.025h358.791l31.262 224.768 7.108 47.375h83.396v30.117h-109.297zM389.3 329.412l-4.187-30.118h-348.582l-4.187 30.118h356.954zM57.645 147.622l-16.896 121.555h340.179l-16.896-121.555h-306.387z" /> +<glyph unicode="&#xe60e;" d="M82.823 103.529c-29.064 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM82.823 28.236c-12.439 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.15-22.588-22.588-22.588zM338.824 103.529c-29.063 0-52.706-23.642-52.706-52.706s23.642-52.706 52.706-52.706 52.706 23.642 52.706 52.706-23.642 52.706-52.706 52.706zM338.824 28.236c-12.438 0-22.588 10.149-22.588 22.588s10.149 22.588 22.588 22.588 22.588-10.149 22.588-22.588-10.149-22.588-22.588-22.588zM402.673 419.764l-9.065-60.236h-395.836l33.642-242.025h358.822l31.413 225.882 6.957 46.261h83.396v30.117h-109.327zM364.002 147.622h-306.356l-25.299 181.79h356.954l-25.299-181.79zM331.294 178.824h-240.941v119.537h30.118v-89.419h180.706v89.45h30.118v-119.567zM120.471 390.581h-30.117v59.301h240.941v-57.404h-30.118v27.286h-180.706v-29.184z" /> +<glyph unicode="&#xe60f;" d="M256 300.137c-41.502 0-75.294-33.792-75.294-75.294s33.792-75.294 75.294-75.294 75.294 33.792 75.294 75.294-33.792 75.294-75.294 75.294zM256 179.667c-24.907 0-45.177 20.269-45.177 45.177s20.269 45.177 45.177 45.177 45.176-20.269 45.176-45.177-20.269-45.177-45.177-45.177zM510.193 195.509c1.115 9.668 1.807 19.426 1.807 29.334s-0.692 19.667-1.807 29.334l-77.945 23.432c-3.584 12.107-8.373 23.702-14.276 34.605l38.52 71.589c-12.228 15.36-26.172 29.305-41.563 41.563l-71.589-38.55c-10.933 5.903-22.528 10.661-34.635 14.276l-23.372 77.945c-9.637 1.115-19.396 1.807-29.334 1.807s-19.697-0.692-29.334-1.807l-23.371-77.945c-12.137-3.584-23.763-8.373-34.636-14.306l-71.59 38.55c-15.39-12.228-29.335-26.172-41.532-41.563l38.52-71.529c-5.903-10.903-10.662-22.528-14.276-34.636l-77.975-23.431c-1.115-9.637-1.807-19.396-1.807-29.334s0.693-19.697 1.807-29.335l77.945-23.372c3.614-12.137 8.373-23.763 14.276-34.666l-38.52-71.56c12.228-15.39 26.172-29.334 41.563-41.563l71.589 38.52c10.903-5.903 22.528-10.661 34.636-14.276l23.371-77.945c9.668-1.115 19.426-1.807 29.334-1.807s19.697 0.692 29.334 1.807l23.372 77.945c12.108 3.614 23.733 8.373 34.635 14.276l71.56-38.52c15.39 12.258 29.334 26.202 41.563 41.592l-38.49 71.56c5.903 10.902 10.661 22.528 14.276 34.635l77.945 23.372zM408.034 196.322l-4.638-15.601c-3.012-10.149-7.017-19.877-11.926-28.883l-7.71-14.306 7.68-14.306 28.672-53.308c-2.981-3.163-6.053-6.235-9.216-9.216l-67.554 36.412-14.306-7.71c-9.065-4.909-18.793-8.885-28.913-11.926l-15.601-4.638-4.668-15.601-17.438-58.188c-2.168-0.060-4.307-0.091-6.415-0.091s-4.246 0.030-6.415 0.091l-17.438 58.188-4.668 15.601-15.601 4.638c-10.119 3.012-19.847 7.017-28.883 11.926l-14.306 7.71-67.614-36.352c-3.132 2.981-6.234 6.053-9.216 9.216l36.382 67.584-7.71 14.306c-4.879 9.036-8.885 18.764-11.927 28.913l-4.608 15.571-73.758 22.106c-0.090 2.168-0.12 4.307-0.12 6.385 0 2.108 0.030 4.246 0.12 6.415l73.728 22.107 4.638 15.601c3.012 10.149 7.017 19.877 11.927 28.883l7.71 14.306-36.382 67.614c2.981 3.132 6.053 6.234 9.186 9.216l67.674-36.442 14.336 7.8c8.945 4.879 18.643 8.885 28.792 11.897l15.601 4.638 4.668 15.601 17.438 58.188c2.198 0.030 4.337 0.060 6.445 0.060s4.247-0.030 6.415-0.090l17.438-58.188 4.668-15.601 15.601-4.638c10.089-3.012 19.848-7.017 28.913-11.926l14.306-7.68 67.584 36.382c3.132-2.981 6.235-6.053 9.216-9.216l-28.702-53.308-7.68-14.306 7.74-14.306c4.909-9.036 8.885-18.733 11.897-28.822l4.638-15.601 15.601-4.668 58.188-17.499c0.030-2.168 0.060-4.307 0.060-6.415s-0.030-4.247-0.12-6.415l-73.728-22.106z" /> +<glyph unicode="&#xe610;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647z" /> +<glyph unicode="&#xe611;" d="M500.074 1.25l-155.798 155.798c29.365 34.244 47.255 78.607 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.315 0-101.466-20.36-138.451-57.344-36.984-36.954-57.314-86.137-57.314-138.421 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.943 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 118.588c-91.347 0-165.647 74.3-165.647 165.647 0 44.273 17.197 85.865 48.489 117.158 31.292 31.262 72.885 48.489 117.157 48.489 91.347 0 165.647-74.3 165.647-165.647 0-91.347-74.3-165.647-165.647-165.647zM210.823 299.294h60.235v-30.117h-60.236v-60.236h-30.118v60.236h-60.236v30.118h60.236v60.236h30.118v-60.236z" /> +<glyph unicode="&#xe612;" d="M500.074 2.093l-155.798 155.798c29.365 34.244 47.255 78.637 47.255 127.187 0 107.942-87.823 195.764-195.764 195.764-52.284 0-101.466-20.36-138.481-57.314-36.955-36.984-57.314-86.166-57.284-138.451 0-107.942 87.823-195.764 195.764-195.764 48.549 0 92.973 17.89 127.217 47.255l155.798-155.798 21.293 21.324zM195.764 119.432c-91.317 0-165.647 74.3-165.647 165.647-0.030 44.273 17.197 85.865 48.489 117.127 31.262 31.292 72.885 48.519 117.157 48.519 91.317 0 165.647-74.3 165.647-165.647 0-91.317-74.33-165.647-165.647-165.647zM120.471 300.137h150.588v-30.118h-150.588v30.118z" /> +<glyph unicode="&#xe613;" d="M391.529 148.706c-16.414 0-31.594-4.728-44.875-12.409l-69.933 73.909 188.536 199.198-21.896 20.721-187.362-197.993-187.422 197.993-21.865-20.721 188.536-199.198-69.933-73.879c-13.252 7.65-28.461 12.378-44.845 12.378-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 22.498-8.584 42.887-22.227 58.7l67.403 71.228 67.404-71.228c-13.673-15.842-22.227-36.202-22.227-58.7 0-49.815 40.538-90.353 90.353-90.353s90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM120.471-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236zM391.529-1.882c-33.22 0-60.236 27.015-60.236 60.236s27.015 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.015-60.236-60.236-60.236z" /> +<glyph unicode="&#xe614;" d="M150.588 480v-512h210.823v512h-210.823zM331.294-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" /> +<glyph unicode="&#xe615;" d="M135.288 480h-59.754c-24.907 0-45.176-20.269-45.176-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.299 45.176-45.207 45.176zM75.535 449.882h59.754c8.282 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM60.476 342.964v31.051h89.871v-31.051h-89.871zM118.904 57.721h-26.203l-32.226 63.368v191.759h30.118v-195.192h30.118v195.192h29.636v-191.85l-31.443-63.277zM240.941 480v-512h210.823v512h-210.823zM421.647-1.882h-150.588v29.636h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v29.636h30.118v30.118h-30.118v30.118h60.236v30.118h-60.236v30.599h30.118v30.118h-30.118v30.117h60.236v30.118h-60.236v30.118h150.588v-451.764z" /> +<glyph unicode="&#xe616;" d="M362.496 479.548l-362.044-362.044 149.083-149.052 362.014 362.014-149.052 149.082zM43.038 117.504l20.962 20.962 42.587-42.587 21.293 21.293-42.587 42.587 21.654 21.654 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 20.962 20.962 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.587-42.587 21.293 21.293-42.587 42.587 21.625 21.625 21.293-21.293 21.293 21.293-21.293 21.293 21.293 21.293 42.616-42.587 21.293 21.293-42.616 42.587 21.324 21.323 106.466-106.496-319.428-319.428-106.496 106.466z" /> +<glyph unicode="&#xe617;" d="M107.279 449.882v-465.589l141.131 98.485 143.119-98.183v465.288h-284.25zM361.412 41.758l-113.122 77.644-110.863-77.342v377.705h223.985v-378.007z" /> +<glyph unicode="&#xe618;" d="M301.99 176.595v303.405h-182.332v-303.495l90.986 61.832 91.347-61.741zM149.775 233.397v216.486h122.127v-216.576l-61.35 41.442-60.778-41.352zM481.882 449.671v-451.554h-451.764v451.554h59.452v-30.118h-29.334v-391.318h391.529v391.318h-120.621v30.118h150.739z" /> +<glyph unicode="&#xe619;" d="M180.706 239.059h-180.706v180.706h30.117v-123.754c30.509 96.166 121.555 165.165 225.882 165.165 105.592 0 199.409-71.077 228.111-172.845l-29.003-8.162c-25.058 88.847-106.948 150.919-199.108 150.919-97.159-0.030-181.188-68.548-202.029-161.912h126.735v-30.118zM331.294 208.941v-30.118h126.735c-20.872-93.395-104.779-161.882-202.029-161.882-92.22 0-174.080 62.072-199.108 150.92l-29.003-8.162c28.672-101.767 122.489-172.845 228.111-172.845 104.177 0 195.012 68.668 225.882 165.105v-123.724h30.118v180.706h-180.706z" /> +<glyph unicode="&#xe61a;" d="M481.882 208.941h-210.824v-210.824h-30.118v210.823h-210.823v30.118h210.823v210.824h30.118v-210.824h210.823v-30.118z" /> +<glyph unicode="&#xe61b;" d="M361.412 344.471c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.285-105.412-105.412c0-52.556 38.791-95.925 89.209-103.756v-242.598h30.118v242.357c51.501 6.867 91.498 50.658 91.498 103.996zM256 269.177c-41.532 0-75.294 33.762-75.294 75.294s33.762 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.762-75.294-75.294-75.294zM301.176 329.412h-30.118c0 16.625-13.493 30.117-30.118 30.117v30.118c33.22 0 60.236-27.016 60.236-60.236z" /> +<glyph unicode="&#xe61c;" d="M467.697 393.954l-42.255 42.285c-17.017 17.047-46.833 17.047-63.909 0l-272.776-272.805-51.862-159.262 158.058 53.157 272.716 272.745c17.649 17.589 17.649 46.26 0.030 63.88zM93.184 79.616l19.426 59.603 58.248-58.277-59.121-19.877-18.552 18.553zM131.162 163.223l165.436 165.436 63.579-63.548-165.466-165.466-63.548 63.579zM317.892 349.982l21.956 21.956 63.579-63.548-21.956-21.956-63.579 63.548zM446.404 351.368l-21.685-21.685-63.579 63.548 21.685 21.715c5.692 5.692 15.601 5.692 21.293 0l42.255-42.285c5.903-5.903 5.903-15.42 0.030-21.293z" /> +<glyph unicode="&#xe61d;" d="M496.911 424.493l-42.255 42.255c-17.046 17.047-46.833 17.047-63.909 0l-226.966-226.966-51.862-159.232 158.088 53.158 226.906 226.906c8.524 8.524 13.221 19.877 13.221 31.955s-4.699 23.401-13.221 31.925zM168.177 155.995l19.215 58.94 57.826-57.796-58.489-19.667-18.553 18.522zM205.764 239.179l120.049 120.049 63.548-63.548-120.049-120.049-63.548 63.548zM347.106 380.522l21.956 21.956 63.548-63.548-21.956-21.956-63.548 63.548zM475.618 381.907l-21.685-21.715-63.548 63.548 21.685 21.715c5.723 5.692 15.631 5.692 21.293 0l42.255-42.255c2.831-2.861 4.397-6.626 4.397-10.661s-1.566-7.771-4.397-10.632zM451.764 254.118h30.118v-286.118h-481.882v451.764h225.882v-30.118h-195.764v-391.529h421.647v256z" /> +<glyph unicode="&#xe61e;" d="M451.764 419.764v60.236h-391.529v-60.236h-15.541c-24.636 0-44.694-20.329-44.694-45.327v-90.052c0-24.998 20.058-45.327 44.694-45.327h181.429c8.282 0 15.059-6.776 15.059-15.059v-45.176h-30.358v-210.823h90.353v210.823h-29.877v45.176c0 24.907-20.269 45.176-45.177 45.176h-181.429c-8.011 0-14.577 6.837-14.577 15.21v90.052c0 8.373 6.566 15.209 14.577 15.209h15.541v-90.353h391.529v90.353h30.118v30.118h-30.118zM271.059-1.882h-30.118v150.588h30.118v-150.588zM421.647 329.412h-331.294v120.47h331.294v-120.47z" /> +<glyph unicode="&#xe61f;" d="M502.995 184.305l-267.084 268.77-4.036-4.005c-20.119 19.908-46.743 30.9-75.084 30.931 0 0 0 0-0.030 0-28.552 0-55.447-11.144-75.656-31.353-20.239-20.209-31.383-47.074-31.383-75.716 0-28.341 11.023-54.965 30.931-75.084l-66.5-66.53c-9.126-9.156-14.155-21.263-14.155-34.124 0-12.921 5-24.998 14.065-34.033l144.896-146.341c9.095-9.096 21.203-14.125 34.063-14.125 12.921 0 25.028 5.060 34.124 14.185l167.394 167.394 108.454 0.030zM79.842 372.962c0 20.54 8.011 39.846 22.558 54.393 14.547 14.516 33.822 22.528 54.362 22.528 0.030 0 0.030 0 0.030 0 20.299 0 39.333-7.891 53.79-22.106l-108.604-108.635c-14.246 14.487-22.136 33.521-22.136 53.82zM205.794 38.144c-3.404-3.404-7.981-5.331-12.8-5.331s-9.367 1.868-12.709 5.24l-109.508 110.652h245.579l-110.562-110.562zM346.474 178.824h-305.543l-5.511 5.602c-3.433 3.404-5.3 7.921-5.3 12.74 0 4.849 1.898 9.397 5.331 12.86l200.403 200.403 194.801-196.036-48.61-0.030-35.569-35.539zM472.486 119.823l-12.258 18.191-12.589-18.010c-9.608-13.764-41.050-60.567-41.050-84.269 0-29.063 23.642-52.706 52.706-52.706s52.706 23.673 52.706 52.736c0 23.552-30.238 70.295-39.514 84.058zM459.294 13.176c-12.438 0-22.588 10.149-22.588 22.588 0 7.228 10.511 27.708 23.070 47.917 12.047-20.179 22.106-40.629 22.106-47.917 0-12.438-10.149-22.588-22.588-22.588z" /> +<glyph unicode="&#xe620;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941s108.092-240.941 240.941-240.941 240.941 108.092 240.941 240.941-108.092 240.941-240.941 240.941zM256 434.824c52.706 0 100.834-19.577 137.849-51.682l-296.96-296.99c-32.136 36.984-51.712 85.142-51.712 137.849 0 116.224 94.57 210.823 210.823 210.823zM256 13.176c-52.706 0-100.834 19.577-137.849 51.682l296.96 296.99c32.135-36.984 51.712-85.142 51.712-137.849 0-116.224-94.57-210.823-210.823-210.823z" /> +<glyph unicode="&#xe621;" d="M376.471 480h-240.941c-24.907 0-45.177-20.269-45.177-45.176v-421.647c0-24.908 20.269-45.176 45.177-45.176h240.941c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM135.53 449.882h240.941c8.313 0 15.059-6.746 15.059-15.059v-45.177h-271.059v45.177c0 8.313 6.746 15.059 15.059 15.059zM391.529 359.529v-240.941h-271.059v240.941h271.059zM376.471-1.882h-240.941c-8.313 0-15.059 6.747-15.059 15.059v75.294h271.059v-75.294c0-8.313-6.747-15.059-15.059-15.059zM271.059 43.294c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059 6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059z" /> +<glyph unicode="&#xe622;" d="M451.764 239.059v-30.117h-391.529v30.118h391.529z" /> +<glyph unicode="&#xe623;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM329.788 374.166l5.541-29.575-54.904-10.27 34.515-58.338-25.931-15.36-32.738 55.296-32.828-55.266-25.871 15.36 34.696 58.428-53.489 10.149 5.602 29.575 56.561-10.692v56.29h30.118v-56.561l58.729 10.963z" /> +<glyph unicode="&#xe624;" d="M256 480c-83.034 0-150.588-67.554-150.588-150.588 0-41.412 16.715-80.083 47.044-108.906 2.56-2.469 5.421-4.638 8.313-6.806l3.102-2.349c5.391-4.247 11.113-7.74 16.836-11.173v-217.118l74.661 57.254 75.926-57.254v217.118c5.723 3.433 11.475 6.957 16.866 11.204l3.102 2.319c2.892 2.168 5.723 4.337 8.313 6.806 30.298 28.822 47.014 67.493 47.014 108.906 0 83.034-67.554 150.588-150.588 150.588zM301.176 43.505l-45.959 34.666-44.394-34.063v127.247c14.517-5.029 29.696-7.589 45.177-7.589s30.66 2.56 45.177 7.589v-127.85zM338.793 242.311c-1.716-1.656-3.644-3.042-5.572-4.428l-3.704-2.831c-43.52-34.183-103.544-34.154-147.004-0.030l-3.734 2.861c-1.928 1.416-3.855 2.801-5.572 4.428-24.305 23.1-37.677 54.001-37.677 87.1 0 66.44 54.031 120.471 120.47 120.471s120.471-54.031 120.471-120.471c0-33.099-13.372-64-37.677-87.1zM308.706 329.412c0-29.094-23.612-52.706-52.706-52.706s-52.706 23.612-52.706 52.706 23.612 52.706 52.706 52.706 52.706-23.612 52.706-52.706z" /> +<glyph unicode="&#xe625;" d="M320.632 449.882h-23.13c-6.988 17.709-23.161 30.118-41.954 30.118h-74.3c-8.794 0-15.963-2.711-21.263-8.072-9.517-9.548-9.457-23.221-9.397-37.737v-354.756l55.748-70.024h4.488v-41.412l30.118 20.721v20.721h4.428l55.808 70.024v340.3h19.456c10.149 0 10.661-16.263 10.661-19.516v-128.482h30.118v128.482c0.030 29.214-16.745 49.634-40.779 49.634zM181.248 449.882h74.3c8.584 0 15.541-8.764 15.541-19.516v-100.954h-90.383v104.93c0 5.843-0.060 14.668 0.542 15.541zM230.912 39.529h-10.029l-40.147 50.447-0.030 209.317h90.353v-209.317l-40.147-50.447z" /> +<glyph unicode="&#xe626;" d="M471.763 308.812l-16.384 16.384c2.349 5.391 3.825 11.084 4.187 16.926 0.783 13.101-3.644 25.148-12.529 34.033l-52.555 52.555c-6.204 6.204-13.161 9.337-20.691 9.337-13.523 0-23.161-9.728-33.37-20.059l-272.143-272.143-10.090-88.998 3.163-3.132-29.274-29.274 35.931-6.686 14.668 14.637 3.132-3.132 88.968 10.029 261.933 261.964 13.733-13.733c2.168-2.168 2.831-4.337 2.289-7.379-0.783-4.247-3.885-9.337-8.524-13.975l-90.835-90.865 21.293-21.293 90.835 90.865c9.125 9.095 14.969 19.426 16.866 29.817 2.349 12.83-1.416 24.967-10.601 34.123zM160.918 68.081l-64.091-7.259-7.078 7.077 7.288 64.030 169.322 169.322 63.88-63.88-169.321-169.292zM351.533 258.666l-63.88 63.88 74.21 74.21c4.096 4.187 10.3 10.451 11.324 10.662l52.555-52.556c3.614-3.614 3.885-8.372 3.764-10.872-0.301-5.060-2.651-9.969-6.565-13.915l-71.409-71.409z" /> +<glyph unicode="&#xe627;" d="M456.162 213.339l-185.103 185.133v-400.354h-30.118v400.354l-185.103-185.133-21.323 21.323 221.485 221.455 221.485-221.485-21.324-21.293z" /> +<glyph unicode="&#xe628;" d="M473.058 224.844l-221.485-221.485-21.293 21.293 185.103 185.103h-385.265v30.118h385.295l-185.133 185.163 21.293 21.293 221.485-221.485z" /> +<glyph unicode="&#xe629;" d="M481.882 209.784h-385.295l185.103-185.103-21.293-21.293-221.455 221.455 221.485 221.485 21.293-21.293-185.133-185.133h385.295v-30.118z" /> +<glyph unicode="&#xe62a;" d="M477.485 213.339l-221.485-221.455-221.485 221.455 21.293 21.293 185.133-185.103v400.354h30.117v-400.354l185.103 185.103 21.324-21.293z" /> +<glyph unicode="&#xe62b;" d="M286.118 149.549c0-11.023-6.235-20.239-15.059-25.48v-64.874h-30.118v64.844c-8.855 5.24-15.059 14.457-15.059 25.51 0 16.625 13.463 30.118 30.118 30.118 16.595 0 30.117-13.462 30.117-30.118zM450.711 225.204v-213.233c0-24.908-20.269-45.177-45.176-45.177h-300.845c-24.907 0-45.176 20.269-45.176 45.176v213.233c0 24.907 20.269 45.177 45.176 45.177h0.723v59.874c0 83.034 67.554 150.588 150.588 150.588s150.588-67.554 150.588-150.588v-59.995c24.425-0.542 44.123-20.51 44.123-45.056zM135.53 270.381h240.941v59.874c0 66.44-54.031 120.471-120.471 120.471s-120.471-54.031-120.471-120.471v-59.874zM420.593 225.204c0 7.951-6.235 14.276-14.005 14.848v-0.12h-301.176v0.332h-0.723c-8.282 0-15.059-6.746-15.059-15.059v-213.233c0-8.313 6.776-15.059 15.059-15.059h300.845c8.283 0 15.059 6.747 15.059 15.059v213.233z" /> +<glyph unicode="&#xe62c;" d="M59.362 420.788l159.262-424.689 36.502 228.924 228.924 36.502-424.689 159.262zM228.834 251.347l-22.016-137.999-95.985 255.97 255.97-95.985-137.969-21.986z" /> +<glyph unicode="&#xe62d;" d="M391.017 270.983l-28.25-28.25-21.293 21.293 28.25 28.25c29.365 29.364 29.365 77.132 0 106.466s-77.132 29.364-106.466 0l-89.962-89.992c-29.364-29.365-29.364-77.132 0-106.466s77.132-29.365 106.466 0l21.293-21.293c-20.57-20.57-47.525-30.81-74.541-30.81s-53.971 10.27-74.511 30.81c-41.081 41.081-41.081 107.972 0 149.052l89.962 89.962c41.111 41.111 107.941 41.111 149.052 0 41.111-41.051 41.111-107.942 0-149.022zM181.971 238.035l-3.916-3.885 21.233-21.354 3.946 3.916c29.364 29.364 77.131 29.364 106.466 0s29.365-77.132 0-106.466l-91.046-91.106c-29.364-29.365-77.132-29.365-106.466 0s-29.365 77.132 0 106.466l31.865 31.894-21.293 21.293-31.864-31.894c-41.081-41.081-41.081-107.972 0-149.052 20.57-20.57 47.525-30.811 74.541-30.811s53.971 10.27 74.541 30.81l91.046 91.076c41.081 41.081 41.081 107.972 0 149.052-41.14 41.171-108.002 41.081-149.052 0.060z" /> +<glyph unicode="&#xe62e;" d="M0 480v-512h512v512h-512zM30.117 299.294h271.059v-301.176h-271.059v301.176zM481.882-1.882h-150.588v301.176h150.588v-301.176zM30.117 329.412v120.47h451.764v-120.47h-451.764z" /> +<glyph unicode="&#xe62f;" d="M391.529 449.882h-391.529v-331.294h391.529v331.294zM361.412 148.706h-331.294v271.059h331.294v-271.059zM512 329.412v-331.294h-391.529v91.286h30.118v-61.169h331.294v271.059h-60.717v30.118h90.835z" /> +<glyph unicode="&#xe630;" d="M331.294 449.882h-331.294v-271.059h331.294v271.059zM301.176 208.941h-271.059v210.824h271.059v-210.824zM421.647 88.471h-331.294v59.663h30.118v-29.546h271.059v210.824h-29.937v30.117h60.055v-271.059zM512 269.177v-271.059h-331.294v59.663h30.118v-29.546h271.059v210.823h-29.937v30.117h60.054z" /> +<glyph unicode="&#xe631;" d="M446.072 290.289l21.293 21.293-52.194 52.194 22.799 22.678-21.233 21.353-245.339-244.164c-14.577 10.12-32.226 16.113-51.291 16.113-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353c0 19.908-6.686 38.189-17.619 53.127l158.54 157.756 52.344-52.345 21.293 21.293-52.315 52.284 21.113 21.022 52.254-52.254zM120.079 29.169c-33.22 0-60.236 27.015-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.015 60.236-60.236-27.016-60.236-60.236-60.236z" /> +<glyph unicode="&#xe632;" d="M256 68.081l-146.161 145.468 21.233 21.353 109.869-109.357v325.18h30.117v-325.18l109.839 109.327 21.233-21.353-146.131-145.438zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe633;" d="M30.117 449.882v-451.764h451.764v451.764h-451.764zM451.764 28.236h-391.529v60.236h391.529v-60.236zM60.236 118.588v301.176h391.529v-301.176h-391.529zM427.761 173.854l-20.992-21.594-72.794 70.746-46.803-50.477-74.873 132.97-102.43-149.836-24.877 16.986 129.807 189.832 78.426-139.204 39.665 42.827 94.87-92.25z" /> +<glyph unicode="&#xe634;" d="M376.471 460.183c-52.375 0-97.913-29.877-120.471-73.457-22.558 43.58-68.096 73.457-120.471 73.457-74.722 0-135.53-60.808-135.53-135.529 0-10.331 1.446-21.052 4.638-33.672l3.283-10.572c43.129-131.132 230.671-282.895 238.652-289.25l9.427-7.589 9.427 7.589c8.493 6.837 208.595 168.599 238.743 289.551l3.373 11.084c3.042 12.107 4.457 22.558 4.457 32.858 0 74.722-60.808 135.53-135.53 135.53zM478.539 299.897l-3.404-11.143c-24.365-97.762-179.079-232.719-219.136-266.331-38.611 32.618-184.38 160.738-219.407 267.204l-3.012 9.517c-2.319 9.366-3.463 17.709-3.463 25.51 0 58.127 47.284 105.412 105.412 105.412s105.412-47.315 105.412-105.412v-7.589h30.118v7.589c0 58.127 47.284 105.412 105.412 105.412s105.412-47.285 105.412-105.412c0-7.77-1.144-15.872-3.343-24.756z" /> +<glyph unicode="&#xe635;" d="M4.608 290.981c-3.163 12.62-4.608 23.341-4.608 33.672 0 74.722 60.807 135.529 135.53 135.529 52.374 0 97.912-29.876 120.47-73.457 22.558 43.58 68.096 73.457 120.471 73.457 74.722 0 135.529-60.808 135.529-135.529 0-10.3-1.416-20.721-4.428-32.858l-3.404-11.084c-2.44-9.969-6.867-21.715-13.644-36.111l-27.226 12.83c5.903 12.589 9.698 22.558 11.897 31.352l3.373 11.113c2.199 8.885 3.313 16.987 3.313 24.757 0 58.127-47.284 105.412-105.412 105.412s-105.412-47.315-105.412-105.412h-30.118c0 58.127-47.285 105.412-105.412 105.412s-105.412-47.315-105.412-105.412c0-7.801 1.145-16.143 3.493-25.51l3.012-9.517c2.831-8.644 7.078-18.612 13.282-31.111l-26.985-13.433c-6.867 13.854-11.626 25.088-14.998 35.328l-3.313 10.572zM255.97 21.88c-24.275 19.065-93.425 76.288-149.865 150.98l-24.004-18.191c72.102-95.382 161.25-161.19 164.984-163.93l8.975-6.565 8.915 6.626c3.885 2.861 95.985 71.5 166.731 163.78l-23.884 18.341c-55.658-72.553-127.067-131.494-151.853-151.040zM426.827 256.678l-85.293-60.236-85.293 60.236-85.323-60.236-85.444 60.205-94.148-66.319 17.348-24.636 76.8 54.151 85.444-60.265 85.323 60.236 85.293-60.236 85.293 60.236 76.469-54.091 17.408 24.576-93.876 66.38z" /> +<glyph unicode="&#xe636;" d="M421.647 347.392v-218.594c0-25.781-10.149-56.23-19.125-83.065-5.391-16.204-10.993-32.918-10.993-40.087v-22.588c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v22.588c0 12.047 5.541 28.612 12.559 49.604 7.8 23.492 17.558 52.676 17.558 73.548v218.594c0 8.283-6.204 14.547-14.396 14.547-8.373 0-15.42-6.325-15.692-14.095 0-0.091-0.060-0.18-0.060-0.271l0.030-116.254c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059l-0.030 123.061c0 0.15 0.091 0.271 0.091 0.452v42.345c0 6.988-4.216 14.547-13.433 14.547-8.252 0-15.902-6.325-16.384-13.553-0.030-0.392-0.301-0.753-0.361-1.174v-134.927c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.716-15.059 15.059v147.456c0 0.662 0.301 1.265 0.392 1.897v23.943c0 7.861-7.259 14.517-15.812 14.517-8.403 0-14.969-6.355-14.969-14.517v-26.082c0.060-0.452 0.271-0.844 0.271-1.325v0-147.456c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 138.3c0 0.12-0.090 0.211-0.12 0.332-0.994 7.168-7.469 12.589-15.059 12.589-8.403 0-15.209-6.536-15.209-14.547v-171.821c0-6.264-3.855-11.866-9.698-14.065-5.752-2.199-12.439-0.603-16.595 4.066l-33.642 37.767c-11.836 13.824-19.757 9.366-22.678 7.68-3.493-1.958-5.993-5.15-6.987-8.945-0.964-3.644-0.421-7.469 1.506-10.752l99.148-211.094c1.386-2.199 4.758-4.668 8.855-5.662 6.776-1.627 11.505-7.68 11.505-14.637v-26.654c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v16.444c-6.957 3.855-12.74 9.457-16.866 16.414l-99.117 211.125c-5.421 9.005-7.078 21.022-4.036 32.557 3.102 11.656 10.662 21.383 21.263 27.407 20.359 11.475 42.828 6.204 60.236-14.095l7.138-8.012v132.276c0 24.636 20.329 44.664 45.327 44.664 5.24 0 10.331-0.903 15.059-2.56 2.018 22.799 21.383 40.719 44.906 40.719 24.124 0 43.942-18.191 45.809-41.171 5.15 1.928 10.722 3.012 16.505 3.012 24.425 0 43.55-19.606 43.55-44.664v-7.891c4.909 1.777 10.18 2.74 15.661 2.74 24.938 0.030 44.484-19.577 44.484-44.635z" /> +<glyph unicode="&#xe637;" d="M459.053 316.762l-35.78-242.868c-3.554-18.432-11.716-26.503-17.649-32.406-5.752-5.723-9.577-9.517-9.577-28.1v-30.329c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v30.329c0 28.762 8.373 39.424 18.492 49.453 4.668 4.638 7.469 7.439 9.156 16.083l35.69 242.116c0.542 3.705 1.536 16.264-8.222 17.619-3.373 0.482-6.114-0.060-8.283-1.716-2.892-2.139-4.94-6.294-5.662-11.385l-14.969-99.87c-0.753-5.15-4.156-9.517-8.915-11.596s-10.27-1.506-14.577 1.476c-1.506-0.241-4.036 0.692-6.565 2.349-4.578 2.921-7.198 8.072-6.897 13.493l8.584 159.202c0.692 8.373-5.12 15.33-13.011 16.023-3.825 0.361-7.5-0.844-10.421-3.283-2.952-2.47-4.699-5.903-5.029-9.668l-13.945-144.023c-0.783-8.101-7.198-13.975-15.993-13.583-2.44 0.15-4.909 0.301-7.409 0.332-8.101 0.18-14.607 6.716-14.757 14.788l-3.464 184.29c0 8.072-6.325 14.396-14.095 14.396s-14.095-6.325-14.095-14.095l-3.554-198.355c-0.12-5.722-3.434-10.903-8.613-13.342-1.868-0.903-3.674-1.807-5.391-2.771-4.428-2.53-9.819-2.62-14.336-0.241-4.518 2.349-7.559 6.837-8.071 11.897l-15.511 160.497c-0.332 3.945-2.108 7.379-5 9.819-2.922 2.439-6.867 3.554-10.391 3.283-3.795-0.332-7.198-2.108-9.637-5.029-2.41-2.892-3.584-6.565-3.252-10.33l15.149-213.745c0.482-6.565-3.404-12.709-9.548-15.089-6.204-2.409-13.191-0.512-17.257 4.668l-46.713 58.82c-6.114 10.24-16.926 13.101-25.299 8.252-4.096-2.38-7.017-6.174-8.222-10.722-1.204-4.517-0.603-9.276 1.807-13.342l106.285-183.326c2.41-4.187 6.355-7.108 11.053-8.252 6.746-1.627 11.505-7.68 11.505-14.637v-20.781c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v10.541c-7.65 4.126-14.005 10.27-18.492 18.010l-106.316 183.326c-6.415 11.023-8.132 23.884-4.819 36.202 3.252 12.348 11.174 22.649 22.257 29.063 22.829 13.162 52.043 5.331 65.174-17.438l15.239-19.095-11.716 165.135c-1.024 11.505 2.59 23.010 10.18 32.106 7.589 9.036 18.311 14.607 30.088 15.661 11.957 1.084 23.341-2.62 32.436-10.24 4.397-3.704 7.921-8.101 10.541-12.981l0.422 22.678c0 24.154 19.847 43.972 44.212 43.972s44.212-19.848 44.212-44.243l0.421-22.468c2.651 4.909 6.204 9.337 10.632 13.071 9.125 7.65 20.721 11.324 32.467 10.24 24.425-2.139 42.526-23.732 40.388-48.128l-1.596-29.455c0.783 0.692 1.627 1.356 2.44 1.988 8.674 6.505 19.185 9.036 30.66 7.469 23.642-3.283 37.587-24.576 33.792-51.712z" /> +<glyph unicode="&#xe638;" d="M420.533 311.341v-176.007c0-23.401-11.535-37.376-19.968-47.556-7.048-8.553-10.722-13.342-10.722-20.901v-53.7c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v53.7c0 18.764 9.788 30.599 17.649 40.087 7.288 8.825 13.071 15.781 13.071 28.341v176.037c0 9.397-8.072 18.252-16.595 18.252-9.909 0-12.017-1.536-12.108-1.596-1.988-2.68-1.928-17.137-1.897-28.792 0.030-5.692 0.060-12.047-0.060-19.035-0.12-8.252-6.415-14.396-15.18-14.848-8.252 0.060-14.938 6.776-14.938 15.059v63.85c0 9.246-6.686 16.203-15.541 16.203-8.132 0-14.095-6.053-14.818-14.697v-60.325c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v0 60.566c0 0.091-0.060 0.181-0.060 0.301v23.281c0 1.988-0.421 19.336-14.276 19.336-13.553 0-15.601-12.108-15.601-19.336v-21.172c0-0.844-0.332-1.627-0.482-2.44v-78.125c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.746-15.059 15.059v0 80.836c-1.446 5.843-5.662 11.746-14.035 11.746-8.613 0-15.872-7.861-15.872-17.167v-100.894c0-0.211-0.18-0.392-0.18-0.602v-33.16c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.118c-5.3 1.928-12.981 3.494-17.378 2.5-3.554-0.692-7.138-3.825-9.367-8.162-1.777-3.404-4.156-10.451-0.271-19.185l51.14-111.947c0.482-1.054 0.813-2.139 1.054-3.252 1.686-8.283 9.397-13.733 17.709-12.981 4.186 0.542 8.463-0.904 11.655-3.764 3.162-2.861 5-6.927 5-11.204v-52.525c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v38.731c-16.143 4.187-29.184 16.896-33.34 33.882l-50.567 110.683c-6.626 14.938-6.234 31.412 0.964 45.387 6.445 12.439 17.709 21.353 30.148 23.883 6.325 1.295 14.878 0.934 23.341-0.783v21.685c0 0.301 0.15 0.572 0.18 0.874v55.717c0 26.082 20.661 47.284 45.989 47.284 6.024 0 11.806-1.204 17.047-3.373 5.994 19.396 22.076 31.834 43.159 31.834 20.118 0 35.9-12.709 41.834-31.955 5.361 2.259 11.234 3.493 17.438 3.493 20.751 0 37.888-13.372 43.58-32.286 5.512 1.204 11.113 1.476 16.143 1.476 25.359 0 46.743-22.137 46.743-48.369z" /> +<glyph unicode="&#xe639;" d="M240.941 359.529l-58.97 60.236h-181.971v-451.764h512v391.529h-271.059zM169.321 389.647l58.97-60.236h253.59v-61.048l-451.764 0.783v120.501h139.204zM30.117-1.882v240.911l451.764-0.783v-240.128h-451.764z" /> +<glyph unicode="&#xe63a;" d="M391.529 178.582v278.227l-357.767-139.113 357.767-139.113zM361.412 222.584l-244.585 95.112 244.585 95.141v-190.253zM451.764 480v-512h-30.118v512h30.118z" /> +<glyph unicode="&#xe63b;" d="M451.764 480v-512h-30.118v512h30.118zM45.989 450.605h345.54v-240.941h-346.052l87.673 119.025-87.16 121.916zM361.412 420.488h-256.844l65.807-92.040-65.295-88.666h256.332v180.706z" /> +<glyph unicode="&#xe63c;" d="M451.764 480v-512h-30.118v512h30.118zM150.107 449.882h240.941v-240.941h-150.107v-60.236h-210.823v240.941h119.988v60.236zM210.823 208.941h-60.236v150.588h-90.353v-180.706h150.588v30.118zM180.224 419.764v-30.118h0.482v-150.588h180.224v180.706h-180.706z" /> +<glyph unicode="&#xe63d;" d="M510.946 214.452c-38.671 98.394-141.161 164.533-254.946 164.533s-216.275-66.139-254.946-164.533c-1.385-3.524-1.385-7.469 0-10.993 38.701-98.425 141.161-164.563 254.946-164.563s216.245 66.108 254.946 164.532c1.415 3.554 1.415 7.469 0 11.023zM256 69.014c-99.328 0-188.808 55.988-224.648 139.927 35.81 83.938 125.29 139.927 224.648 139.927s188.837-55.989 224.648-139.927c-35.84-83.908-125.32-139.927-224.648-139.927zM256 318.66c-60.507 0-109.719-49.212-109.719-109.718s49.212-109.719 109.748-109.719c60.476 0 109.719 49.212 109.719 109.719s-49.243 109.719-109.749 109.719zM256 129.34c-43.911 0-79.631 35.719-79.631 79.601s35.749 79.601 79.631 79.601c43.882 0 79.601-35.719 79.601-79.601s-35.69-79.601-79.601-79.601zM256 249.811c-22.528 0-40.87-18.341-40.87-40.869s18.341-40.87 40.87-40.87 40.87 18.341 40.87 40.87-18.341 40.87-40.87 40.87zM256 198.189c-5.933 0-10.752 4.819-10.752 10.752s4.819 10.752 10.752 10.752 10.752-4.819 10.752-10.752-4.819-10.752-10.752-10.752z" /> +<glyph unicode="&#xe63e;" d="M131.283 300.62l-21.624 20.992 146.341 150.739 146.341-150.739-21.625-20.962-109.659 112.941v-324.277h-30.118v324.276l-109.659-112.971zM481.882 208.038v-194.861c0-8.313-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.747-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe63f;" d="M180.706 26.94v212.119h-30.118v-212.119l-109.809 109.809-21.293-21.293 146.161-146.161 146.191 146.191-21.293 21.293-109.839-109.839zM165.286 12.243h0.692l-0.332-0.361-0.362 0.361zM471.221 311.221l-109.809 109.839v-213.715h-30.118v213.715l-109.809-109.839-21.323 21.323 146.191 146.161 146.191-146.191-21.324-21.293z" /> +<glyph unicode="&#xe640;" d="M60.236 148.706h391.529v240.941h-391.529v-240.941zM90.353 359.529h331.294v-180.706h-331.294v180.706zM466.824 449.882h-421.647c-24.907 0-45.176-19.215-45.176-42.858v-305.814c0-23.642 20.269-42.858 45.176-42.858h421.647c24.907 0 45.176 19.215 45.176 42.858v305.815c0 23.642-20.269 42.858-45.176 42.858zM481.882 101.211c0-7.048-6.776-12.74-15.059-12.74h-421.647c-8.282 0-15.059 5.692-15.059 12.74v305.815c0 7.048 6.776 12.74 15.059 12.74h421.647c8.283 0 15.059-5.692 15.059-12.74v-305.815zM150.588 28.236h210.823v-30.118h-210.823v30.118z" /> +<glyph unicode="&#xe641;" d="M511.97 449.882h-67.976c0.030 5.060 0.241 9.879 0.241 15.059v15.059h-376.471v-15.059c0-4.819 0.121-10.029 0.15-15.059h-67.885l-0.030-15.029c-0.090-32.708 1.867-66.228 5.873-99.69 10.601-88.455 38.279-190.976 84.179-213.444 5.843-2.892 11.897-4.337 17.95-4.337 7.168 0 14.427 2.048 21.293 6.204l6.294 4.216c25.088-38.46 59.332-64.421 105.351-69.21v-60.476h-88.938v-30.118h210.824v30.118h-91.769v60.145c42.616 4.488 77.854 28.16 105.201 69.632l7.048-4.668c6.505-3.916 13.462-5.843 20.51-5.843 6.053 0 12.168 1.445 18.131 4.367 45.899 22.468 73.577 124.988 84.179 213.444 4.005 33.43 5.963 66.981 5.873 99.689l-0.030 14.999zM120.109 153.705l-6.897-4.638c-3.373-1.988-6.144-2.108-9.879-0.301-23.642 11.596-54.453 80.565-67.554 190.012-3.252 27.106-5.090 54.272-5.541 80.986h38.34c2.921-88.064 15.451-194.801 53.971-269.733l-2.439 3.675zM256 87.236c-136.734 0-156.582 242.447-158.028 362.647h316.055c-1.476-142.185-25.238-362.647-158.028-362.647zM476.22 338.779c-13.132-109.447-43.911-178.417-67.554-190.012-3.704-1.837-6.505-1.747-9.276-0.091l-7.529 5.029-3.493-5.24c32.497 61.38 51.411 152.576 55.145 271.3h38.279c-0.482-26.714-2.319-53.88-5.572-80.986z" /> +<glyph unicode="&#xe642;" d="M380.265 276.917l-122.971 200.975-126.826-201.036-135.5 115.441 52.374-394.18h417.28l52.345 393.788-136.704-114.989zM73.698 28.236l-4.005 30.118h372.586l-4.005-30.118h-364.574zM446.284 88.471h-380.567l-30.57 230.009 102.279-87.1 119.476 189.44 115.983-189.5 104.026 87.522-30.63-230.37z" /> +<glyph unicode="&#xe643;" d="M512 434.824v-240.007c0-24.908-20.269-45.176-45.176-45.176h-15.3v30.118h15.3c8.313 0 15.059 6.776 15.059 15.059v240.007c0 8.283-6.747 15.059-15.059 15.059h-421.647c-8.313 0-15.059-6.776-15.059-15.059v-240.007c0-8.283 6.746-15.059 15.059-15.059h45.177v-87.1l53.579 47.255 19.908-22.588-103.605-91.407v123.724h-15.059c-24.907 0-45.176 20.269-45.176 45.176v240.007c0 24.907 20.269 45.176 45.176 45.176h421.647c24.907 0 45.176-20.269 45.176-45.176zM422.25 192.678v-91.648c0-24.908-20.269-45.176-45.176-45.176h-15.059v-92.281l-110.442 92.281h-25.69c-24.907 0-45.177 20.269-45.177 45.176v91.648c0 24.908 20.269 45.177 45.177 45.177h151.19c24.908 0 45.176-20.269 45.176-45.177zM392.132 192.678c0 8.283-6.747 15.059-15.059 15.059h-151.19c-8.313 0-15.059-6.776-15.059-15.059v-91.648c0-8.283 6.746-15.059 15.059-15.059h36.653l69.361-58.007v58.007h45.176c8.313 0 15.059 6.776 15.059 15.059v91.648z" /> +<glyph unicode="&#xe644;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176z" /> +<glyph unicode="&#xe645;" d="M466.824 480h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-301.176c0-24.908 20.269-45.176 45.176-45.176h15.059v-123.542l141.191 123.543h265.397c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.908-20.269 45.176-45.176 45.176zM481.882 133.647c0-8.283-6.747-15.059-15.059-15.059h-276.721l-99.749-87.281v87.281h-45.176c-8.313 0-15.059 6.776-15.059 15.059v301.176c0 8.283 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.776 15.059-15.059v-301.176zM90.353 389.647h331.294v-30.118h-331.294v30.118zM90.353 329.412h331.294v-30.118h-331.294v30.118zM90.353 269.177h180.706v-30.118h-180.706v30.118z" /> +<glyph unicode="&#xe646;" d="M277.293 224l200.162-200.162-21.293-21.293-200.162 200.162-200.162-200.162-21.293 21.293 200.162 200.162-200.192 200.162 21.293 21.293 200.192-200.162 200.162 200.162 21.293-21.293-200.162-200.162z" /> +<glyph unicode="&#xe647;" d="M362.044 352.482v-255.94h-30.118v255.94c0 32.858-24.064 68.247-76.921 68.247-58.459 0-74.060-42.888-74.060-68.247v-244.585h0.211v-43.882c0-18.673 20.871-36.322 42.948-36.322 25.419 0 47.194 20.57 47.194 37.376v8.132h-0.091l0.241 229.406c0 26.323-7.439 26.323-14.035 26.323-11.113 0-16.475-1.054-16.475-24.787v-154.986h-30.118v154.986c0 13.583 0 54.904 46.592 54.904 20.149 0 44.152-9.788 44.152-56.471l-0.211-193.656h0.060v-43.882c0-35.328-36.864-67.493-77.312-67.493-38.912 0-73.065 31.051-73.065 66.44v2.228h-0.211v286.268c0 47.375 32.588 98.364 104.177 98.364 70.264-0.030 107.038-49.483 107.038-98.364z" /> +<glyph unicode="&#xe648;" d="M492.544 121.721l-21.293-21.293-215.251 215.221-215.22-215.221-21.293 21.293 236.514 236.514 236.544-236.514z" /> +<glyph unicode="&#xe649;" d="M397.764 224.844l-236.544-236.544-21.293 21.293 215.22 215.22-215.22 215.281 21.293 21.293 236.544-236.544z" /> +<glyph unicode="&#xe64a;" d="M156.822 224.874l215.221-215.251-21.293-21.293-236.514 236.544 236.544 236.514 21.293-21.293-215.251-215.221z" /> +<glyph unicode="&#xe64b;" d="M492.544 327.153l-236.574-236.544-236.514 236.544 21.293 21.293 215.19-215.221 215.281 215.251 21.324-21.323z" /> +<glyph unicode="&#xe64c;" d="M464.354 426.572l-266.029-406.137-148.119 132.096 20.058 22.468 122.007-108.845 246.905 376.923 25.178-16.505z" /> +<glyph unicode="&#xe64d;" d="M421.647 306.492h30.118v-308.375h-421.647v421.647h252.777v-30.118h-222.66v-361.412h361.412v278.257zM146.191 234.661l-21.323-21.324 103.424-103.424 228.502 346.714-25.148 16.595-208.173-315.874-77.282 77.312z" /> +<glyph unicode="&#xe64e;" d="M179.441 389.647v30.118h-87.823v-30.118h-91.618v-361.412h512v361.412h-332.559zM481.882 58.353h-451.764v210.824h197.482c-10.391-17.8-16.775-38.22-16.775-60.236 0-66.44 54.031-120.471 120.471-120.471s120.471 54.031 120.471 120.471c0 22.016-6.385 42.436-16.776 60.236h46.893v-210.823zM421.647 208.941c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353 40.538 90.353 90.353 90.353 90.353-40.538 90.353-90.353zM410.142 299.294c-21.203 18.492-48.55 30.118-78.848 30.118s-57.645-11.625-78.848-30.118h-222.328v60.236h451.764v-60.236h-71.74z" /> +<glyph unicode="&#xe64f;" d="M496.007 413.079h-58.036c-8.794 0-15.993-7.048-15.993-15.692v-20.089l-331.144-121.374v8.132c0 12.951-10.782 23.522-24.004 23.522h-42.828c-13.222 0-24.004-10.572-24.004-23.522v-141.192c0-12.921 10.782-23.522 24.004-23.522h42.828c13.192 0 24.004 10.601 24.004 23.522v9.969l31.142-5.692c-0.692-4.909-1.144-9.819-1.144-14.788 0-57.133 47.013-103.635 104.779-103.635 49.905 0 91.257 33.973 101.798 80.776l94.57-17.348v-19.848c0-8.644 7.198-15.692 15.993-15.692h58.036c8.795 0 15.993 7.048 15.993 15.692v345.088c0 8.644-7.198 15.692-15.993 15.692zM225.612 38.837c-41.171 0-74.662 32.979-74.662 73.517 0 3.132 0.813 6.174 1.204 9.276l145.769-26.745c-7.951-32.587-37.195-56.049-72.313-56.049zM481.882 66.726h-29.786v30.509l-391.379 71.77v-39.514h-30.599v128h30.599v-44.695l391.379 143.45v26.715h29.786v-316.236z" /> +<glyph unicode="&#xe650;" d="M479.262 426.331l-195.764-286.118-24.847 16.986 195.764 286.118 24.847-16.986zM271.059 58.594c0-33.22-27.016-60.236-60.236-60.236-6.114 0-16.203-0.452-16.293-0.452h-164.262l137.125 103.334c4.518 3.132 25.871 17.589 43.429 17.589 33.22 0 60.235-27.015 60.235-60.236zM240.941 58.594c0 16.595-13.523 30.118-30.118 30.118-5.27 0-17.529-6.114-25.691-11.836l-64.844-48.881h73.276c1.898 0.091 11.324 0.482 17.257 0.482 16.595 0 30.118 13.523 30.118 30.118z" /> +<glyph unicode="&#xe651;" d="M210.823 88.471v45.176h30.118v-15.059h30.117v15.059h30.118v-45.176h-90.353zM512 148.706h-30.118v-180.706h-451.764v180.706h-30.117v240.941h108.906c28.25 55.115 84.48 90.353 147.094 90.353s118.875-35.268 147.095-90.353h108.905v-240.941zM143.631 389.647h224.798c-24.847 37.135-66.56 60.236-112.399 60.236s-87.552-23.13-112.399-60.236zM451.764 148.706h-391.529v-150.588h391.529v150.588zM481.882 359.529h-451.764v-180.706h451.764v180.706z" /> +<glyph unicode="&#xe652;" d="M431.074 419.404h-215.401l-70.204-211.245h50.176l-60.536-182.272 285.606 242.477h-87.462l97.822 151.040zM338.733 238.245l-141.161-119.838 39.815 119.838h-50.146l50.146 151.040h138.3l-97.822-151.040h60.868z" /> +<glyph unicode="&#xe653;" d="M356.292 239.059l-115.23-217.841-26.624 14.065 91.859 173.659h-153.871l147.576 219.226 24.967-16.836-115.983-172.273h147.305z" /> +<glyph unicode="&#xe654;" d="M271.059 419.764v60.236h-30.118v-60.236h-210.823v-301.176h451.764v301.176h-210.823zM451.764 148.706h-391.529v240.941h391.529v-240.941zM105.412 88.471h301.176v-30.118h-77.824l45.297-70.053-25.299-16.354-55.868 86.408h-21.836v-90.353h-30.118v90.353h-21.444l-56.29-86.438-25.238 16.414 45.598 70.024h-78.156v30.118z" /> +<glyph unicode="&#xe655;" d="M391.529 359.529v72.101c0 26.654-22.197 48.369-49.483 48.369h-171.641c-27.256 0-49.453-21.715-49.453-48.369v-72.101h-90.835v-391.529h451.764v391.529h-90.353zM151.070 431.631c0 10.060 8.674 18.252 19.335 18.252h171.641c10.692 0 19.365-8.192 19.365-18.252v-72.101h-210.341v72.101zM451.764-1.882h-391.529v240.941h391.529v-240.941zM451.764 269.177h-391.529v60.236h60.717v-19.365h30.117v19.365h210.341v-19.365h30.118v19.365h60.236v-60.236z" /> +<glyph unicode="&#xe656;" d="M409.69 138.195l-21.263 21.324 49.514 49.423h-166.882v-166.882l49.423 49.514 21.324-21.263-85.805-85.986-85.805 85.986 21.323 21.263 49.423-49.514v166.882h-166.882l49.513-49.423-21.263-21.324-85.986 85.805 85.986 85.805 21.263-21.324-49.513-49.423h166.882v166.882l-49.423-49.514-21.323 21.263 85.805 85.986 85.805-85.986-21.324-21.263-49.423 49.514v-166.882h166.882l-49.514 49.423 21.263 21.324 85.986-85.805-85.986-85.805z" /> +<glyph unicode="&#xe657;" d="M350.63 116.691l21.564-21.022-116.194-119.115-116.194 119.085 21.564 21.022 79.571-81.529v377.736l-79.571-81.558-21.564 21.052 116.194 119.085 116.194-119.085-21.564-21.022-79.571 81.529v-377.765l79.571 81.589z" /> +<glyph unicode="&#xe658;" d="M503.447 224l-119.085-116.194-21.022 21.564 81.529 79.571h-377.736l81.558-79.571-21.022-21.564-119.115 116.194 119.085 116.194 21.022-21.564-81.528-79.571h377.765l-81.558 79.571 21.022 21.564 119.085-116.194z" /> +<glyph unicode="&#xe659;" d="M481.762 138.104l0.12-139.987-140.017 0.12 0.030 30.118 88.546-0.091-174.441 174.411-174.441-174.442 88.546 0.091 0.030-30.118-140.017-0.091 0.12 140.017 30.117-0.030-0.090-88.516 174.441 174.411-174.441 174.442 0.090-88.516-30.117-0.030-0.12 139.987 140.017-0.12-0.030-30.118-88.546 0.091 174.441-174.442 174.441 174.442-88.546-0.091-0.030 30.118 140.017 0.12-0.12-140.017-30.118 0.030 0.091 88.516-174.441-174.411 174.442-174.442-0.091 88.516 30.118 0.030z" /> +<glyph unicode="&#xe65a;" d="M481.882 449.973v-271.149h-30.118v219.768l-310.724-310.121-21.293 21.324 310.663 310.061h-220.34v30.118h271.812z" /> +<glyph unicode="&#xe65b;" d="M370.206 88.471l-310.724 310.122v-219.768h-30.117v271.149h271.812v-30.118h-220.34l310.663-310.061-21.293-21.324z" /> +<glyph unicode="&#xe65c;" d="M256 305.529l131.132-131.132-21.293-21.293-109.839 109.839-109.809-109.809-21.293 21.293 131.102 131.102zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65d;" d="M206.427 355.132l131.102-131.132-131.132-131.132-21.293 21.293 109.839 109.839-109.839 109.809 21.323 21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65e;" d="M326.897 333.809l-109.839-109.809 109.809-109.809-21.293-21.293-131.102 131.102 131.132 131.132 21.293-21.324zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe65f;" d="M365.809 294.897l21.293-21.293-131.102-131.132-131.132 131.102 21.293 21.293 109.839-109.809 109.809 109.839zM512 224c0-141.161-114.839-256-256-256s-256 114.839-256 256 114.838 256 256 256 256-114.839 256-256zM481.882 224c0 124.567-101.316 225.882-225.882 225.882s-225.882-101.316-225.882-225.882 101.316-225.882 225.882-225.882 225.882 101.316 225.882 225.882z" /> +<glyph unicode="&#xe660;" d="M256 297.096l206.427-206.427-21.293-21.293-185.133 185.133-185.103-185.103-21.293 21.293 206.396 206.396zM256 400.369l185.103-185.103 21.293 21.293-206.396 206.427-206.427-206.427 21.323-21.293 185.103 185.103z" /> +<glyph unicode="&#xe661;" d="M290.454 224l-206.427-206.427-21.293 21.293 185.103 185.133-185.103 185.103 21.293 21.324 206.427-206.427zM229.918 430.426l-21.293-21.323 185.103-185.103-185.103-185.103 21.293-21.293 206.396 206.396-206.396 206.427z" /> +<glyph unicode="&#xe662;" d="M240.549 224l185.103-185.103-21.293-21.293-206.396 206.396 206.427 206.427 21.293-21.293-185.133-185.133zM279.793 409.133l-21.293 21.293-206.427-206.426 206.427-206.427 21.293 21.293-185.103 185.133 185.103 185.133z" /> +<glyph unicode="&#xe663;" d="M256 159.428l-206.427 206.427 21.293 21.293 185.133-185.103 185.103 185.103 21.293-21.293-206.396-206.426zM256 56.124l-185.103 185.133-21.323-21.293 206.427-206.427 206.427 206.427-21.293 21.293-185.133-185.133z" /> +<glyph unicode="&#xe664;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h90.353v-30.118h30.118v30.118h60.235v-150.588h150.588v-301.176h-331.294zM150.588 239.059h30.118v-30.117h-30.118v30.118zM180.706 239.059v30.118h30.118v-30.118h-30.118zM180.706 299.294v30.118h30.118v-30.118h-30.118zM150.588 299.294h30.118v-30.117h-30.118v30.117zM150.588 359.529h30.118v-30.117h-30.118v30.117zM180.706 359.529v30.118h30.118v-30.118h-30.118zM150.588 419.764h30.118v-30.118h-30.118v30.118zM180.706 197.226c-33.22 0-60.236-27.015-60.236-60.236s27.016-60.236 60.236-60.236c1.868 0 3.644 0.211 6.596 0.603 19.456 2.139 36.684 13.704 46.11 30.901 5 9.125 7.53 18.793 7.53 28.732 0 33.22-27.016 60.236-60.236 60.236zM206.999 122.684c-4.698-8.584-13.282-14.366-22.95-15.42l-3.373-0.421c-16.595 0-30.088 13.523-30.088 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118c0-4.788-1.295-9.608-3.825-14.276z" /> +<glyph unicode="&#xe665;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM31.352 208.941h88.456c1.325-30.841 6.355-61.169 15.451-90.353h-78.396c-14.486 27.286-23.371 57.916-25.509 90.353zM119.808 239.059h-88.456c2.139 32.436 11.023 63.066 25.51 90.353h78.306c-9.066-29.184-14.065-59.512-15.36-90.353zM167.063 329.412h177.573c9.939-29.064 15.721-59.392 17.137-90.353h-211.847c1.386 30.961 7.198 61.29 17.137 90.353zM149.925 208.941h211.877c-1.476-30.961-7.259-61.289-17.228-90.353h-177.423c-9.969 29.063-15.781 59.392-17.227 90.353zM391.921 208.941h89.69c-2.139-32.437-11.023-63.067-25.51-90.353h-79.631c9.096 29.184 14.125 59.512 15.45 90.353zM391.921 239.059c-1.295 30.84-6.295 61.169-15.36 90.353h79.541c14.457-27.286 23.341-57.916 25.51-90.353h-89.69zM436.766 359.529h-70.897c-11.806 28.763-27.588 55.959-46.683 81.317 47.526-13.764 88.486-42.767 117.579-81.317zM273.288 449.039c24.817-27.015 44.695-57.224 59.392-89.51h-153.66c14.667 32.256 34.515 62.434 59.332 89.45 5.994 0.452 11.987 0.904 18.131 0.904 5.662 0 11.234-0.452 16.805-0.844zM192.241 440.456c-18.944-25.239-34.666-52.315-46.381-80.926h-69.692c28.763 38.159 69.18 66.981 116.074 80.926zM76.168 88.471h69.782c11.776-28.642 27.558-55.748 46.592-80.986-47.013 13.884-87.552 42.737-116.374 80.986zM238.713-0.979c-24.877 27.015-44.815 57.194-59.572 89.45h153.419c-14.757-32.286-34.695-62.494-59.603-89.51-5.452-0.392-10.933-0.844-16.474-0.844-6.024 0-11.897 0.452-17.769 0.904zM318.856 7.063c19.155 25.359 35.057 52.615 46.893 81.408h71.017c-29.154-38.641-70.234-67.674-117.911-81.408z" /> +<glyph unicode="&#xe666;" d="M328.313 92.988l29.425-6.415c-15.209-69.813-75.625-118.573-146.914-118.573-83.034 0-150.588 67.554-150.588 150.588 0 68.367 46.11 128.271 112.188 145.649l7.65-29.124c-52.827-13.915-89.721-61.831-89.721-116.525 0-66.44 54.031-120.471 120.471-120.471 57.013 0 105.321 39.002 117.489 94.87zM481.882 24.591v-30.118h-56.26l-28.762 124.024h-185.464l-16.384 243.411c-25.51 7.017-44.423 30.148-44.423 57.856 0 33.22 27.016 60.236 60.236 60.236s60.236-27.015 60.236-60.236c0-28.25-19.577-51.803-45.809-58.308l8.132-120.802 109.388 27.136 7.228-29.244-114.597-28.401 4.156-61.5h181.248l28.762-124.024h32.316zM210.823 389.647c16.625 0 30.118 13.523 30.118 30.118s-13.493 30.118-30.118 30.118-30.118-13.523-30.118-30.118 13.493-30.118 30.118-30.118z" /> +<glyph unicode="&#xe667;" d="M0 480v-120.471h512v120.471h-512zM481.882 389.647h-451.764v60.236h451.764v-60.236zM0 178.824h512v120.471h-512v-120.471zM30.117 269.177h451.764v-60.236h-451.764v60.236zM0-1.882h512v120.471h-512v-120.471zM30.117 88.471h451.764v-60.236h-451.764v60.236z" /> +<glyph unicode="&#xe668;" d="M150.588 480v-120.471h361.412v120.471h-361.412zM481.882 389.647h-301.176v60.236h301.176v-60.236zM150.588 178.824h361.412v120.471h-361.412v-120.471zM180.706 269.177h301.176v-60.236h-301.176v60.236zM150.588-1.882h361.412v120.471h-361.412v-120.471zM180.706 88.471h301.176v-60.236h-301.176v60.236zM0 359.529h120.471v120.471h-120.471v-120.471zM30.117 449.882h60.236v-60.236h-60.236v60.236zM0 178.824h120.471v120.471h-120.471v-120.471zM30.117 269.177h60.236v-60.236h-60.236v60.236zM0-1.882h120.471v120.471h-120.471v-120.471zM30.117 88.471h60.236v-60.236h-60.236v60.236z" /> +<glyph unicode="&#xe669;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM301.176 480v-210.823h210.824v210.823h-210.823zM481.882 299.294h-150.588v150.588h150.588v-150.588zM0-32h210.823v210.823h-210.823v-210.823zM30.117 148.706h150.588v-150.588h-150.588v150.588zM301.176-32h210.824v210.823h-210.823v-210.823zM331.294 148.706h150.588v-150.588h-150.588v150.588z" /> +<glyph unicode="&#xe66a;" d="M210.823 359.529h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.236h180.706zM451.764 359.529h-180.706v-60.236h30.118v30.118h60.236v-240.941h-30.118v-30.118h90.353v30.118h-30.118v240.941h60.236v-30.118h30.118v60.236h-30.118z" /> +<glyph unicode="&#xe66b;" d="M512-1.882v-30.118h-512v30.118h512zM240.911 428.559v-340.088h30.118v340.149l109.839-109.839 21.293 21.293-146.161 146.161-146.191-146.161 21.293-21.293 109.809 109.779z" /> +<glyph unicode="&#xe66c;" d="M451.764 449.882v-30.118h-30.118v-194.53c0-91.317-74.3-165.647-165.647-165.647s-165.647 74.33-165.647 165.647v194.53h-30.117v30.118h90.353v-30.118h-30.118v-194.53c0-74.722 60.808-135.529 135.529-135.529s135.529 60.808 135.529 135.53v194.53h-30.118v30.118h90.353zM60.236-1.882h391.529v30.118h-391.529v-30.118z" /> +<glyph unicode="&#xe66d;" d="M512 389.647h-331.294v-90.353h-86.528l-35.84-120.47h-58.338v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.016-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v360.719zM116.645 269.177h64.060v-90.353h-90.956l26.895 90.353zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66h180.706v210.823h271.059v-300.484z" /> +<glyph unicode="&#xe66e;" d="M271.059 419.012v30.87h45.176v30.118h-120.471v-30.118h45.177v-30.87c-117.519-7.83-210.823-105.652-210.823-225.13 0-124.567 101.316-225.882 225.882-225.882s225.882 101.316 225.882 225.882c0 119.476-93.305 217.299-210.824 225.13zM256-1.882c-107.942 0-195.764 87.823-195.764 195.764s87.823 195.764 195.764 195.764 195.764-87.823 195.764-195.764-87.823-195.764-195.764-195.764zM271.059 208.941h120.471v-30.118h-150.588v120.471h30.117v-90.353z" /> +<glyph unicode="&#xe66f;" d="M286.118 449.882v-15.059c0-16.625-13.523-30.118-30.118-30.118s-30.118 13.493-30.118 30.118v15.059h-105.412v-451.764h105.412v15.059c0 16.625 13.523 30.118 30.118 30.118s30.118-13.493 30.118-30.118v-15.059h105.412v451.764h-105.412zM197.662 419.764c6.716-25.932 30.328-45.177 58.338-45.177s51.621 19.245 58.338 45.177h47.074v-180.706h-210.823v180.706h47.074zM314.338 28.236c-6.686 25.932-30.298 45.176-58.338 45.176s-51.621-19.245-58.338-45.176h-47.074v180.706h210.824v-180.706h-47.074z" /> +<glyph unicode="&#xe670;" d="M462.848 187.106c2.5-6.114 3.976-14.035 3.976-24.305 0-15.842-7.228-29.244-18.703-37.135 4.156-7.048 6.144-15.089 6.144-23.13 0-16.926-9.427-31.353-23.642-38.791 2.409-5.662 3.825-12.649 3.885-21.233 0.060-13.523-3.885-24.396-11.776-32.316-8.313-8.342-20.089-12.589-34.966-12.589h-169.412c-22.708 0-38.34 12.168-49.785 21.082-6.596 5.12-12.83 9.999-17.167 9.999h-63.308c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h63.308c14.667 0 25.811-8.674 35.66-16.324 9.728-7.56 18.914-14.728 31.292-14.728h169.412c6.385 0 11.234 1.295 13.613 3.704 2.048 2.048 3.072 5.723 3.042 10.902-0.091 13.161-2.771 15.993-30.931 15.993h-3.192c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h37.888c9.246 0 15.962 5.933 15.962 14.095 0 13.553-13.523 15.571-21.594 15.571h-22.588c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h43.279c9.969 0 13.493 7.529 13.493 14.577 0 14.818 0 14.818-13.221 15.209-1.536 0.030-3.132 0.151-4.699 0.211h-32.406c-8.313 0-15.059 6.747-15.059 15.059s6.747 15.059 15.059 15.059h29.575c0.211 0 0.392 0.12 0.603 0.12h19.004c8.885 0 16.143 6.837 16.143 15.209s-7.228 15.209-16.143 15.209h-134.114c-4.488 0-8.734 1.988-11.596 5.452-2.861 3.464-4.036 8.012-3.192 12.409l15.661 82.341c1.868 8.222 7.168 31.533 0.994 41.863-1.596 2.68-5.481 5.542-10.24 5.542 0 0 0 0 0 0-5.903 0-11.957-4.729-17.046-13.252l-97.612-157.636c-2.74-4.428-7.589-7.138-12.8-7.138h-77.372c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h68.999l93.004 150.287c14.336 24.094 32.979 27.738 42.767 27.738 0 0 0 0 0.030 0 14.607 0 28.762-7.951 36.081-20.209 10.963-18.341 7.168-43.52 2.62-63.428l-12.137-63.97h115.923c25.51 0 46.26-20.329 46.26-45.327 0.030-14.998-7.469-28.341-18.974-36.593z" /> +<glyph unicode="&#xe671;" d="M438.754 193.852c0-8.313-6.747-15.059-15.059-15.059h-69l-93.003-150.287c-14.366-24.094-32.979-27.738-42.767-27.738 0 0-0.030 0-0.030 0-14.607 0-28.762 7.951-36.111 20.209-10.963 18.372-7.168 43.55-2.62 63.428l12.137 63.97h-115.923c-25.51 0-46.23 20.329-46.23 45.327 0 16.505 9.035 30.991 22.528 38.912-4.608 6.294-7.529 13.703-7.529 21.956 0 15.842 7.228 29.244 18.703 37.135-4.156 7.077-6.144 15.119-6.144 23.161 0 17.317 9.878 31.985 24.606 39.303-4.005 7.71-4.879 15.541-4.879 20.781 0 28.070 17.499 44.815 46.773 44.815h169.412c22.709 0 38.37-12.168 49.784-21.082 6.596-5.12 12.83-9.999 17.137-9.999h63.337c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059h-63.337c-14.668 0-25.811 8.674-35.659 16.324-9.698 7.62-18.884 14.757-31.262 14.757h-169.412c-14.065 0-16.655-4.969-16.655-14.697 0-4.759 0-15.872 30.931-15.872h3.162c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-37.888c-9.246 0-15.932-5.933-15.932-14.095 0-13.553 13.523-15.571 21.594-15.571h22.588c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-43.249c-9.939 0-13.493-7.53-13.493-14.577 0-5.060 11.023-13.764 21.233-15.451h29.094c8.313 0 15.059-6.746 15.059-15.059s-6.746-15.059-15.059-15.059h-29.606c-0.211 0-0.391-0.12-0.603-0.12h-19.004c-8.885 0-16.113-6.837-16.113-15.209s7.228-15.209 16.113-15.209h134.114c4.488 0 8.734-1.988 11.595-5.452 2.861-3.464 4.036-8.012 3.192-12.409l-15.661-82.341c-1.868-8.222-7.168-31.503-0.994-41.863 1.596-2.651 5.482-5.541 10.24-5.541 5.903 0 11.957 4.728 17.047 13.252l97.551 157.636c2.74 4.428 7.589 7.138 12.8 7.138h77.372c8.403 0 15.119-6.747 15.119-15.059z" /> +<glyph unicode="&#xe672;" d="M421.647 419.764v-90.353h-30.118v60.236h-120.471v-361.412h49.483v-30.118h-129.084v30.118h49.483v361.412h-120.471v-60.236h-30.117v90.353h331.294z" /> +<glyph unicode="&#xe673;" d="M512-1.882v-30.118h-512v30.118h512zM156.702 239.781l126.615-91.136 168.448 188.265v-68.788h30.118v121.525h-121.555v-30.118h71.259l-152.697-170.616-124.356 89.57-131.674-119.146 20.209-22.317 113.634 102.762z" /> +<glyph unicode="&#xe674;" d="M155.588 214.875l-131.644 119.145 20.179 22.317 113.634-102.791 126.615 91.136 168.448-188.236v68.819h30.118v-121.555h-121.555v30.118h71.259l-152.667 170.617-124.386-89.57zM0-1.882v-30.118h512v30.118h-512z" /> +<glyph unicode="&#xe675;" d="M320.632 84.074l21.293-21.293-85.925-85.956-85.956 85.956 21.293 21.293 49.604-49.604v113.604h30.118v-113.604l49.574 49.604zM240.941 413.531v-113.604h30.117v113.604l49.574-49.574 21.293 21.293-85.925 85.925-85.956-85.925 21.293-21.293 49.604 49.573zM0 239.059v-30.117h512v30.118h-512z" /> +<glyph unicode="&#xe676;" d="M66.469 239.059h113.604v-30.117h-113.604l49.574-49.574-21.293-21.293-85.925 85.925 85.956 85.956 21.293-21.293-49.604-49.604zM417.25 309.956l-21.293-21.293 49.574-49.604h-113.604v-30.118h113.604l-49.574-49.574 21.293-21.293 85.925 85.925-85.925 85.956zM240.941-32h30.117v512h-30.118v-512z" /> +<glyph unicode="&#xe677;" d="M180.706 301.553h30.118v-60.236h-30.118v30.118h-60.236v-240.941h30.118v-30.118h-90.353v30.118h30.117v240.941h-60.236v-30.118h-30.117v60.235h180.706zM481.882 419.764h-301.176v-77.613h30.118v47.495h120.471v-361.412h-30.118v-30.118h90.353v30.118h-30.118v361.412h120.471v-47.495h30.117v77.613h-30.118z" /> +<glyph unicode="&#xe678;" d="M256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.792-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.792 75.294-75.294-33.792-75.294-75.294-75.294zM271.059 359.529h-30.118v90.353h30.118v-90.353zM240.941 88.471h30.117v-90.353h-30.118v90.353zM481.882 239.059v-30.117h-90.353v30.118h90.353zM120.471 208.941h-90.353v30.118h90.353v-30.118zM362.496 309.203l-21.293 21.293 63.88 63.88 21.293-21.293-63.88-63.88zM149.504 138.797l21.293-21.293-63.88-63.88-21.293 21.293 63.88 63.88zM362.496 138.797l63.88-63.88-21.293-21.293-63.88 63.88 21.293 21.293zM149.504 309.203l-63.88 63.88 21.293 21.293 63.88-63.88-21.293-21.293z" /> +<glyph unicode="&#xe679;" d="M251.603 370.191l146.161-146.191-146.191-146.191-21.293 21.293 109.839 109.839h-340.118v30.118h340.089l-109.809 109.809 21.323 21.324zM481.882 480v-512h30.118v512h-30.118z" /> +<glyph unicode="&#xe67a;" d="M512 208.911h-340.089l109.809-109.809-21.293-21.293-146.191 146.191 146.191 146.191 21.293-21.293-109.869-109.869h340.149v-30.118zM0-32h30.117v512h-30.117v-512z" /> +<glyph unicode="&#xe67b;" d="M451.764 449.401c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.118c0-49.815-40.538-90.353-90.353-90.353s-90.353 40.538-90.353 90.353h-30.117v-206.216c0-162.786 210.884-240.941 219.889-244.164l5-1.837 5.030 1.747c9.036 3.102 221.846 77.914 221.846 245.097v205.372h-30.118zM60.236 243.215v126.614c22.076-25.058 54.422-40.9 90.353-40.9 36.020 0 68.246 16.053 90.353 41.231v-334.728c-49.965 22.498-180.706 92.371-180.706 207.781zM451.764 244.028c0-117.308-129.295-185.615-180.706-208.173v334.336c22.106-25.178 54.332-41.231 90.353-41.231 35.93 0 68.276 15.812 90.353 40.87v-125.802z" /> +<glyph unicode="&#xe67c;" d="M30.117 480v-512h451.764v512h-451.764zM451.764-1.882h-391.529v451.764h60.236v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.177-45.176s45.177 20.269 45.177 45.176c0 19.607-12.619 36.172-30.118 42.406v32.889h90.353v-32.889c-17.499-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h90.353v-32.889c-17.498-6.234-30.118-22.799-30.118-42.406 0-24.907 20.269-45.176 45.176-45.176s45.176 20.269 45.176 45.176c0 19.607-12.62 36.172-30.118 42.406v32.889h60.236v-451.764zM150.588 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM271.059 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059zM391.529 374.588c0-8.282-6.776-15.059-15.059-15.059s-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059z" /> +<glyph unicode="&#xe67d;" d="M512 374.588c0 68.458-131.916 105.412-256 105.412s-256-36.954-256-105.412c0-4.487 0.723-9.577 2.409-15.059h-2.409v-286.118c0-68.457 131.916-105.412 256-105.412s256 36.954 256 105.412v286.118h-2.409c1.687 5.481 2.409 10.572 2.409 15.059zM256 449.882c129.295 0 225.882-39.755 225.882-75.294 0-11.987-11.685-25.148-32.918-37.014-42.737-23.974-114.868-38.279-192.964-38.279s-150.227 14.306-192.964 38.279c-21.233 11.867-32.919 25.028-32.919 37.014 0 35.539 96.588 75.294 225.882 75.294zM256-1.882c-129.295 0-225.882 39.755-225.882 75.294v49.182c5.27-4.066 11.053-8.162 18.191-12.137 47.044-26.323 124.687-42.044 207.691-42.044 10.39 0 20.691 0.241 30.81 0.723 71.108 3.343 135.68 18.281 176.851 41.322v0c0 0.030 0.030 0.030 0.030 0.030 7.108 4.005 12.95 8.072 18.191 12.137v-49.212c0-35.539-96.587-75.294-225.882-75.294zM448.964 136.749c-42.767-23.943-114.868-38.25-192.964-38.25-9.758 0-19.456 0.241-28.973 0.663-66.68 3.072-126.585 16.625-163.99 37.557v0c-21.203 11.926-32.919 25.088-32.919 37.075v49.212c5.27-4.066 11.084-8.162 18.221-12.137 47.014-26.323 124.657-42.044 207.661-42.044s160.648 15.721 207.661 42.044c7.138 3.976 12.95 8.072 18.221 12.137v-49.212c0-11.987-11.716-25.148-32.918-37.045zM448.933 237.161c-42.737-23.944-114.839-38.25-192.934-38.25s-150.196 14.306-192.934 38.25c-21.233 11.867-32.949 25.058-32.949 37.045v49.212c5.27-4.096 11.053-8.162 18.191-12.168 47.044-26.353 124.657-42.074 207.691-42.074s160.647 15.721 207.691 42.074c7.138 4.006 12.921 8.072 18.191 12.168v-49.212c0-11.987-11.716-25.178-32.949-37.044z" /> +<glyph unicode="&#xe67e;" d="M220.070 273.332c0 58.609-47.676 106.285-106.285 106.285-58.579 0-106.255-47.676-106.255-106.285 0-58.579 47.676-106.255 106.255-106.255 22.107 0 42.647 6.837 59.663 18.402-37.075-104.508-120.169-116.766-124.476-117.339l3.705-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.392 0.030c0.030 0.813 0.241 1.566 0.241 2.41zM113.784 197.165c-41.984 0-76.138 34.154-76.138 76.137s34.154 76.168 76.138 76.168c42.014 0 76.168-34.183 76.168-76.168s-34.154-76.137-76.168-76.137zM503.988 270.923c0.030 0.813 0.241 1.596 0.241 2.409 0 58.609-47.676 106.285-106.255 106.285s-106.255-47.676-106.255-106.285c0-58.579 47.676-106.255 106.255-106.255 22.106 0 42.647 6.837 59.663 18.402-37.045-104.508-120.17-116.766-124.476-117.339l3.704-29.877c1.536 0.18 154.353 21.173 167.544 232.628l-0.421 0.030zM397.974 197.165c-41.984 0-76.137 34.154-76.137 76.137s34.154 76.168 76.137 76.168 76.137-34.183 76.137-76.168-34.154-76.137-76.137-76.137z" /> +<glyph unicode="&#xe67f;" d="M396.62 250.684c-22.106 0-42.676-6.837-59.693-18.432 37.044 104.569 120.2 116.856 124.507 117.399l-3.704 29.877c-1.536-0.181-154.383-21.203-167.544-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.707 106.285-106.285 106.285zM396.62 68.262c-42.014 0-76.137 34.154-76.137 76.137s34.154 76.137 76.137 76.137 76.137-34.154 76.137-76.137-34.154-76.137-76.137-76.137zM112.429 250.684c-22.106 0-42.647-6.837-59.663-18.432 37.044 104.569 120.169 116.856 124.476 117.399l-3.704 29.877c-1.536-0.181-154.353-21.203-167.575-232.659l0.452-0.030c0-0.813-0.241-1.627-0.241-2.44 0-58.579 47.676-106.255 106.255-106.255s106.255 47.676 106.255 106.255-47.646 106.285-106.255 106.285zM112.429 68.262c-42.014 0-76.138 34.154-76.138 76.137s34.153 76.137 76.138 76.137 76.138-34.154 76.138-76.137-34.124-76.137-76.138-76.137z" /> +<glyph unicode="&#xe680;" d="M431.586 239.059l-56.5 131.825-103.544-294.641-120.923 394.842-71.379-232.026h-79.24v-30.118h101.466l49.092 159.503 118.964-388.608 108.333 308.103 33.852-78.998h100.292v30.118z" /> +<glyph unicode="&#xe681;" d="M512 299.294h-90.594v54.754l-135.62 125.952h-195.674v-180.706h-90.112v-240.941h90.353v-93.364h331.294v93.365h90.353v240.941zM300.935 424.825l70.325-65.295h-70.325v65.295zM120.23 449.882h150.588v-120.47h120.471v-30.118h-271.059v150.588zM391.529-4.894h-271.059v150.588h271.059v-150.588zM481.882 88.471h-60.236v87.341h-331.294v-87.341h-60.236v180.706h451.764v-180.706zM331.475 88.471h-180.887v30.118h180.887v-30.118zM271.059 28.236h-120.471v30.118h120.471v-30.118zM90.353 208.941h-30.117v30.118h30.117v-30.118zM150.588 208.941h-30.118v30.118h30.118v-30.118z" /> +<glyph unicode="&#xe682;" d="M481.882 193.882c0-124.567-101.316-225.882-225.882-225.882s-225.882 101.316-225.882 225.882c0 105.351 74.572 198.144 177.333 220.642l6.445-29.425c-89.028-19.486-153.66-99.9-153.66-191.217 0-107.942 87.823-195.764 195.764-195.764s195.764 87.823 195.764 195.764c0 91.196-64.542 171.611-153.48 191.187l6.476 29.425c102.641-22.619 177.122-115.38 177.122-220.612zM271.059 480h-30.118v-301.176h30.118v301.176z" /> +<glyph unicode="&#xe683;" d="M90.353 359.529v-151.010c0-82.793 74.33-150.167 165.647-150.167s165.647 67.373 165.647 150.167v151.010h-331.294zM391.529 208.519c0-66.198-60.808-120.049-135.53-120.049s-135.53 53.851-135.53 120.049v120.892h271.059v-120.892zM211.305 389.647h-30.118v90.353h30.118v-90.353zM330.812 389.647h-30.118v90.353h30.118v-90.353zM240.941 58.353h30.117v-90.353h-30.118v90.353zM331.294 239.059h-150.588v30.118h150.588v-30.118zM331.294 178.824h-150.588v30.118h150.588v-30.118z" /> +<glyph unicode="&#xe684;" d="M451.313 210.658l30.058-2.018c-7.921-118.061-106.918-210.522-225.37-210.522-124.567 0-225.882 101.316-225.882 225.882 0 117.609 91.769 216.546 208.956 225.25l2.228-30.027c-101.526-7.53-181.067-93.275-181.067-195.223 0-107.942 87.823-195.764 195.764-195.764 102.671 0 188.446 80.113 195.313 182.423zM512 254.148v-15.059l-15.089-0.512h-225.34v241.453l15.089-0.030c124.266-0.271 225.34-101.617 225.34-225.852zM481.461 268.695c-6.716 95.473-83.606 172.965-179.772 180.555v-180.555h179.772z" /> +<glyph unicode="&#xe685;" d="M481.882 449.099h-331.535c-65.686 0-119.115-53.428-119.115-119.115s53.428-119.085 119.115-119.085h90.594v-212.781h30.118v420.864h60.687v-420.864h30.118v420.864h120.019v30.118zM240.941 240.987h-90.594c-49.092 0-88.998 39.906-88.998 88.968 0 49.092 39.906 88.998 88.998 88.998h90.594v-177.965z" /> +<glyph unicode="&#xe686;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM120.471 171.836v-83.365h30.117v83.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v85.233h-30.118v-85.233c-22.227-6.566-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM135.53 246.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.522-23.522-23.522-23.522 10.541-23.522 23.522 10.541 23.522 23.522 23.522zM240.941 235.836v-147.365h30.117v147.365c22.227 6.565 38.581 26.925 38.581 51.23s-16.354 44.664-38.581 51.23v21.233h-30.118v-21.233c-22.227-6.565-38.581-26.925-38.581-51.23s16.354-44.695 38.581-51.23zM256 310.588c12.981 0 23.522-10.571 23.522-23.522s-10.541-23.552-23.522-23.552-23.522 10.572-23.522 23.552 10.541 23.522 23.522 23.522zM376.471 75.911c29.575 0 53.639 24.064 53.639 53.639 0 24.335-16.354 44.664-38.581 51.23v178.748h-30.118v-178.748c-22.227-6.565-38.58-26.925-38.58-51.23 0-29.575 24.064-53.639 53.639-53.639zM376.471 153.103c12.981 0 23.522-10.572 23.522-23.522s-10.572-23.522-23.522-23.522-23.522 10.572-23.522 23.522 10.541 23.522 23.522 23.522z" /> +<glyph unicode="&#xe687;" d="M256.512 481.054l-256.512-97.009v-322.048l256-96.015 256 96.015v322.018l-255.488 97.039zM454.295 373.745l-77.884-29.214-197.482 74.963 77.553 29.334 197.813-75.084zM256 299.385l-198.204 74.331 78.577 29.696 197.3-74.902-77.673-29.124zM30.117 351.909l210.823-79.059v-269.011l-210.823 79.059v269.011zM271.059 3.84v269.011l210.824 79.059v-269.011l-210.823-79.059z" /> +<glyph unicode="&#xe688;" d="M444.687 345.706l12.68 27.286-216.425 100.472v-297.502c-15.39 13.372-35.238 21.745-57.163 21.745-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763 87.763 39.394 87.763 87.763c0 1.596-0.392 3.102-0.482 4.638v311.717l173.628-80.595zM183.778 52.3c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.871-57.645-57.645-57.645z" /> +<glyph unicode="&#xe689;" d="M180.706 472.019v-277.745c-15.42 13.433-35.328 21.865-57.344 21.865-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.285 0 85.684 37.677 87.431 84.54v0 0.18c0.030 1.024 0.301 1.988 0.301 3.072s-0.241 2.018-0.271 3.042v183.537l271.059-53.037v-140.529c-15.45 13.583-35.478 22.106-57.645 22.106-48.399 0-87.763-39.394-87.763-87.763s39.364-87.763 87.763-87.763c47.736 0 86.498 38.34 87.552 85.805l0.211-0.060v353.461l-331.294 64.813zM123.362 70.731c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645c30.75 0 55.718-24.245 57.344-54.573v-6.114c-1.626-30.358-26.594-54.603-57.344-54.603zM210.823 345.645v89.811l271.059-53.067v-89.75l-271.059 53.007zM424.237-1.882c-31.804 0-57.645 25.841-57.645 57.645s25.841 57.645 57.645 57.645 57.645-25.841 57.645-57.645-25.841-57.645-57.645-57.645z" /> +<glyph unicode="&#xe68a;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 133.647c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529v180.706c0 74.722 60.808 135.529 135.53 135.529s135.53-60.808 135.53-135.529v-180.706zM256 374.588c-24.907 0-45.177-20.269-45.177-45.176v-60.236c0-24.907 20.269-45.176 45.177-45.176s45.176 20.269 45.176 45.177v60.236c0 24.907-20.269 45.176-45.177 45.176zM271.059 269.177c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v60.236c0 8.313 6.746 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-60.236z" /> +<glyph unicode="&#xe68b;" d="M256 480c-91.347 0-165.647-74.3-165.647-165.647v-180.706c0-91.347 74.3-165.647 165.647-165.647s165.647 74.3 165.647 165.647v180.706c0 91.347-74.3 165.647-165.647 165.647zM391.529 314.353v-15.059h-120.471v149.052c67.584-7.589 120.471-64.421 120.471-133.994zM240.941 448.346v-149.052h-120.471v15.059c0 69.572 52.886 126.404 120.471 133.993zM256-1.882c-74.722 0-135.53 60.808-135.53 135.53v135.529h271.059v-135.529c0-74.722-60.808-135.529-135.53-135.529z" /> +<glyph unicode="&#xe68c;" d="M322.831 191.563v0l-0.301 0.301c-0.392 0.332-0.663 0.723-1.084 1.024l-0.091-0.12-50.296 38.611v171.882c34.334-6.566 60.236-35.057 60.236-69.15l15.029-1.807 15.089 1.807c0 50.598-39.424 92.22-90.353 99.268v46.622h-30.118v-46.622c-50.929-7.047-90.353-48.67-90.353-99.268 0-28.371 12.679-55.356 34.666-74.481l-0.15-0.151 1.204-0.933c0 0 0 0 0 0v0l54.633-41.984v-171.821c-34.334 6.565-60.236 35.057-60.236 69.15h-30.118c0-50.597 39.424-92.22 90.353-99.268v-46.652h30.118v46.652c50.929 7.048 90.353 48.67 90.353 99.268 0 30.298-14.125 58.398-38.581 77.673zM205.463 281.796c-15.721 13.433-24.756 32.436-24.756 52.315 0 34.093 25.901 62.584 60.236 69.15v-148.721l-35.478 27.256zM271.059 44.74v148.661l33.25-25.57c17.077-13.462 26.986-33.009 26.986-53.94 0-34.093-25.901-62.584-60.236-69.15z" /> +<glyph unicode="&#xe68d;" d="M256 118.588c74.722 0 135.529 60.808 135.529 135.53v90.353c0 69.602-52.887 126.404-120.471 133.994v1.536h-30.118v-1.536c-67.584-7.59-120.471-64.392-120.471-133.994v-90.353c0-74.722 60.807-135.53 135.53-135.53zM180.706 417.988v-58.459h30.118v79.752c9.397 4.488 19.456 7.529 30.118 9.065v-88.817h30.117v88.817c10.661-1.536 20.721-4.548 30.118-9.065v-79.752h30.118v58.459c18.582-19.004 30.118-44.906 30.118-73.517v-15.059h-210.823v15.059c0 28.612 11.535 54.543 30.118 73.517zM150.588 299.294h210.823v-45.176c0-58.127-47.284-105.412-105.412-105.412s-105.412 47.284-105.412 105.412v45.177zM451.764 269.177v-97.883c0-62.253-60.808-112.941-135.529-112.941h-45.176v-90.353h-30.118v90.353h-45.177c-74.722 0-135.53 50.688-135.53 112.941v97.882h30.118v-97.882c0-45.688 47.285-82.823 105.412-82.823h120.47c58.127 0 105.412 37.135 105.412 82.823v97.882h30.118z" /> +<glyph unicode="&#xe68e;" d="M481.882 389.647v-60.236h-451.764v60.236h451.764zM30.117 178.824h451.764v60.236h-451.764v-60.236zM30.117 28.236h451.764v60.236h-451.764v-60.236z" /> +<glyph unicode="&#xe68f;" d="M481.882 419.764v-60.236h-331.294v60.236h331.294zM150.588 208.941h331.294v60.236h-331.294v-60.236zM150.588 58.353h331.294v60.236h-331.294v-60.236zM60.236 419.764c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 269.177c-16.625 0-30.117-13.463-30.117-30.118s13.492-30.117 30.117-30.117 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118zM60.236 118.588c-16.625 0-30.117-13.462-30.117-30.118s13.492-30.118 30.117-30.118 30.118 13.462 30.118 30.118-13.493 30.118-30.117 30.118z" /> +<glyph unicode="&#xe690;" d="M316.205 346.338l-147.637 42.707-168.569 0.603v-331.294h161.069l156.491-44.544 164.322 48.339v332.529l-165.677-48.339zM180.706 354.198l120.47-34.846v-269.553l-120.471 34.304v270.095zM30.117 359.529h120.47v-271.571l-120.471 0.512v271.059zM451.764 84.676l-120.471-35.449v270.125l120.471 35.148v-269.824z" /> +<glyph unicode="&#xe691;" d="M451.764 359.529v-2.078l-0.392 1.747-30.57-6.656c-4.187 54.302-49.212 97.34-104.568 97.34-55.447 0-100.563-43.219-104.629-97.642l-30.9 6.716v0.572h-180.706v-331.294h161.069l156.492-44.544 164.322 48.339v327.5h-30.118zM316.236 419.764c41.532 0 75.294-33.792 75.294-75.294 0-54.392-51.772-126.765-75.294-156.822-23.522 30.058-75.294 102.43-75.294 156.822 0 41.502 33.762 75.294 75.294 75.294zM180.706 328.147l32.557-7.077c12.409-68.337 72.463-144.204 87.913-162.816v-138.601l-120.471 34.304v274.191zM30.117 329.412h120.47v-271.571l-120.471 0.512v271.059zM331.294 19.11v139.173c15.481 18.643 75.685 94.72 87.974 163.117l32.497 7.048v-273.89l-120.471-35.449zM357.135 341.971c0 22.558-18.341 40.9-40.9 40.9s-40.9-18.341-40.9-40.9 18.341-40.93 40.9-40.93 40.9 18.341 40.9 40.93zM305.453 341.971c0 5.964 4.849 10.782 10.782 10.782s10.782-4.849 10.782-10.782-4.849-10.812-10.782-10.812-10.782 4.849-10.782 10.812z" /> +<glyph unicode="&#xe692;" d="M30.117 208.941c0-66.44 51.532-120.471 114.838-120.471v-30.118c-79.932 0-144.956 67.554-144.956 150.588s65.024 150.588 144.956 150.588h127.367l-49.573 49.574 21.293 21.293 85.956-85.925-85.925-85.956-21.323 21.323 49.604 49.574h-127.397c-63.308 0-114.838-54.031-114.838-120.471zM367.044 359.529v-30.117c63.308 0 114.839-54.031 114.839-120.471s-51.531-120.471-114.839-120.471h-127.397l49.574 49.574-21.293 21.293-85.925-85.925 85.956-85.956 21.293 21.293-49.604 49.604h127.368c79.963 0 144.987 67.554 144.987 150.588s-65.024 150.588-144.956 150.588z" /> +<glyph unicode="&#xe693;" d="M256 464.941c-91.317 0-165.647-74.3-165.647-165.647 0-131.704 147.968-303.766 154.262-311.055l11.385-13.101 11.385 13.132c6.295 7.259 154.262 179.32 154.262 311.025 0 91.347-74.33 165.647-165.647 165.647zM256 21.76c-34.515 42.887-135.53 177.062-135.53 277.534 0 74.722 60.808 135.529 135.53 135.529s135.529-60.808 135.529-135.529c0-100.382-101.014-234.647-135.53-277.534zM256 385.461c-49.815 0-90.353-40.538-90.353-90.353s40.538-90.353 90.353-90.353 90.353 40.538 90.353 90.353-40.538 90.353-90.353 90.353zM256 234.873c-33.22 0-60.236 27.016-60.236 60.236s27.016 60.236 60.236 60.236 60.236-27.016 60.236-60.236-27.015-60.236-60.236-60.236z" /> +<glyph unicode="&#xe694;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM90.353 344.471c0-24.908-20.269-45.177-45.176-45.177s-45.176 20.269-45.176 45.177 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 344.471c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 208.941h361.412v30.118h-361.412v-30.118zM90.353 224c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.177 20.269 45.177 45.176 45.177 45.176-20.269 45.176-45.177zM60.236 224c0 8.282-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059zM150.588 88.471h361.412v30.118h-361.412v-30.118zM90.353 103.529c0-24.908-20.269-45.176-45.176-45.176s-45.176 20.269-45.176 45.176 20.269 45.176 45.176 45.176 45.176-20.269 45.176-45.176zM60.236 103.529c0 8.283-6.746 15.059-15.059 15.059s-15.059-6.776-15.059-15.059 6.746-15.059 15.059-15.059 15.059 6.776 15.059 15.059z" /> +<glyph unicode="&#xe695;" d="M256 480c-91.317 0-165.647-78.818-165.647-175.676 0-70.897 29.034-110.532 54.633-145.498 19.185-26.142 35.72-48.731 35.72-80.505v-63.127c0-26.022 20.269-47.195 45.177-47.195h60.236c24.908 0 45.176 21.173 45.176 47.195v64.030c0 31.473 15.571 52.254 35.238 78.577 24.546 32.858 55.115 73.698 55.115 146.523 0 96.858-74.331 175.676-165.647 175.676zM286.118-1.882h-60.236c-8.282 0-15.059 7.65-15.059 17.077v49.182h90.353v-49.182c0-9.427-6.776-17.077-15.059-17.077zM342.408 175.842c-17.679-23.642-35.84-47.978-40.237-81.348h-92.522c-4.578 33.19-22.709 58.036-40.358 82.131-24.004 32.768-48.821 66.65-48.821 127.699 0 80.263 60.808 145.559 135.53 145.559s135.529-65.295 135.529-145.559c0-62.796-24.967-96.196-49.122-128.482z" /> +<glyph unicode="&#xe696;" d="M358.25 419.343l-171.399-391.108h23.974v-30.118h-90.353v30.118h33.461l171.399 391.108h-24.154v30.118h90.353v-30.118h-33.28z" /> +<glyph unicode="&#xe697;" d="M325.271 50.041v-30.118h-138.541v30.118h54.212v223.804h-52.706v30.117h82.823v-253.922h54.212zM240.58 358.174c25.54 0 46.14 20.661 46.14 46.14 0 25.51-20.63 46.2-46.14 46.2-25.57 0-46.201-20.691-46.201-46.2 0-25.48 20.66-46.14 46.201-46.14z" /> +<glyph unicode="&#xe698;" d="M512 239.059c0-66.439-54.031-120.47-120.471-120.47-36.051 0-69.572 16.022-92.582 43.731l-0.060-0.030-0.421 0.542c-0.332 0.421-0.783 0.692-1.144 1.144l0.12 0.091-109.447 134.988c-17.137 19.276-41.743 30.358-67.524 30.358-49.815 0-90.353-40.538-90.353-90.353 0-49.815 40.538-90.353 90.353-90.353 27.558 0 53.278 12.348 70.536 33.882l0.271-0.211 24.606 30.479 23.431-18.914-24.787-30.69-0.301 0.241c-22.98-28.522-57.133-44.906-93.756-44.906-66.439 0-120.471 54.031-120.471 120.471 0 66.44 54.031 120.471 120.471 120.471 33.732 0 65.837-14.366 88.636-39.183l0.241 0.18 1.265-1.566 111.375-137.337c17.257-20.872 42.436-32.918 69.541-32.918 49.815 0 90.353 40.538 90.353 90.353 0 49.815-40.538 90.353-90.353 90.353-25.48 0-49.694-10.902-66.861-29.786l-28.551-35.388-23.431 18.914 28.551 35.388-0.12 0.091c22.889 25.991 55.868 40.9 90.413 40.9 66.44 0 120.47-54.031 120.47-120.47z" /> +<glyph unicode="&#xe699;" d="M0 389.647v-361.412h512v361.412h-512zM481.882 58.353h-451.764v301.176h451.764v-301.176zM77.162 73.080l-30.117 0.663c0.994 43.068 42.105 79.872 99.659 90.865v9.819c-7.469 7.8-12.8 18.372-16.414 27.798-4.879 3.493-9.096 8.854-12.017 15.541-5.572 12.348-4.608 24.726 1.897 32.166-0.121 2.228-0.18 4.428-0.18 6.536l-0.060 5.541c-0.18 16.173-0.482 42.767 27.98 47.707 5.843 10.21 14.547 18.884 35.508 19.607 33.822 1.054 57.706-11.385 65.807-34.666 2.74-7.981 0.18-14.607-1.686-19.426-1.777-4.578-3.464-8.885-2.47-16.987 0.392-3.222 0.332-6.385 0.090-9.396 5.27-7.138 6.355-17.98 2.47-29.364-2.861-8.222-7.5-14.577-13.071-18.312-3.343-8.644-8.132-18.191-14.667-25.45v-11.354c57.495-11.294 97.22-47.315 98.214-90.594l-30.118-0.692c-0.692 30.75-36.442 57.464-85.022 63.518l-13.191 1.656v51.471l6.024 4.517c3.192 2.409 8.162 9.668 12.499 22.919l4.066 10.361 2.228 19.004c0.422 3.192 0.813 6.234 0.572 8.071-1.868 15.661 1.988 25.6 4.276 31.503 0.15 0.422 0.271 0.692 0.362 0.933-6.325 11.927-26.474 12.439-35.268 12.228-8.343-0.332-8.945-1.506-10.571-4.608-2.048-3.976-6.897-13.312-19.185-14.396-2.771-0.241-3.644-0.813-3.644-0.813-1.235-1.928-1.144-11.053-1.084-17.107l0.030-5.873c0-4.246 0.301-8.794 0.874-13.432l2.108-17.257 3.614-0.632 0.090-7.469c4.638-14.035 10.21-21.715 13.583-24.034l6.476-4.488v-50.808l-13.312-1.566c-48.549-5.692-85.654-33.069-86.347-63.699zM451.764 239.059h-150.588v30.118h150.588v-30.118zM421.647 178.824h-120.471v30.118h120.471v-30.118z" /> +<glyph unicode="&#xe69a;" d="M271.059 359.529h169.412l-108.695 120.471h-211.305v-120.471h120.471v-112.128h-33.882v-279.401h97.882v279.401h-33.882v112.128zM150.588 449.882h167.786l54.363-60.236h-222.148v60.236zM274.824-1.882h-37.647v219.166h37.647v-219.166z" /> +<glyph unicode="&#xe69b;" d="M421.647-1.882h-90.353v180.706h-150.588v-180.706h-90.353v271.059h-30.117v-301.176h391.529v301.176h-30.118v-271.059zM210.823-1.882v150.588h90.353v-150.588h-90.353zM505.856 285.048l-17.829-24.305-232.026 170.466-232.026-170.406-17.829 24.275 249.856 183.476 249.856-183.507z" /> +<glyph unicode="&#xe69c;" d="M310.543 33.325c0-27.046-21.986-49.031-49.062-49.031-27.166 0-49.122 21.986-49.122 49.031 0 27.106 21.956 49.092 49.122 49.092 27.046 0 49.062-21.986 49.062-49.092zM351.413 408.531c-15.42 19.426-43.49 42.587-89.841 42.587-123.422 0-127.85-113.182-127.88-114.327l30.118-0.783c0.090 3.463 3.313 84.992 97.762 84.992 34.334 0 54.964-16.956 66.228-31.172 16.716-21.083 21.082-45.418 18.793-55.206-8.764-37.014-30.449-56.531-53.399-77.192-28.16-25.329-57.224-51.501-57.224-107.159h30.118c0 42.225 20.841 61.019 47.255 84.781 24.214 21.805 51.652 46.501 62.555 92.702 4.488 19.095-2.5 53.007-24.486 80.775z" /> +<glyph unicode="&#xe69d;" d="M481.31 236.499c-5.783 135.319-104.478 243.501-225.31 243.501s-219.528-108.183-225.31-243.501c-17.77-6.054-30.69-22.769-30.69-42.617v-120.471c0-24.907 20.179-45.176 44.996-45.176h45.357v30.118h30.117v150.588h-30.118v30.118h-29.455c6.776 117.519 91.557 210.824 195.102 210.824s188.326-93.305 195.102-210.824h-29.455v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 19.848-12.921 36.563-30.69 42.617zM60.236 58.353h-15.239c-8.192 0-14.878 6.776-14.878 15.059v120.471c0 8.283 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 73.412c0-8.283-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.776 14.878-15.059v-120.471z" /> +<glyph unicode="&#xe69e;" d="M406.588 103.529c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 43.294c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059zM512 385.13l-88.034 94.87h-335.842l-88.124-92.973v-193.747h28.19l-28.19-35.298v-189.982h512v188.536l-31.503 36.743h31.503v191.85zM101.044 449.882h309.79l55.838-60.236h-422.701l57.073 60.236zM30.117-1.882v120.471h451.764v-120.471h-451.764zM479.051 148.706h-447.94l35.569 44.574h374.182l38.189-44.574zM30.117 223.397v136.132h451.764v-136.132h-451.764zM406.588 329.412c-24.907 0-45.176-20.269-45.176-45.177 0-24.877 20.269-45.147 45.176-45.147s45.176 20.269 45.176 45.147c0 24.908-20.269 45.177-45.176 45.177zM406.588 269.207c-8.283 0-15.059 6.746-15.059 15.029s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.029-15.059-15.029z" /> +<glyph unicode="&#xe69f;" d="M425.683 389.767h-339.305l-86.377-131.734v-199.8h512v197.843l-86.317 133.692zM102.671 359.65h306.598l58.488-90.594h-424.478l59.392 90.594zM30.117 88.35v150.588h451.764v-150.588h-451.764zM406.588 208.82c-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176-20.269 45.176-45.176 45.176zM406.588 148.586c-8.283 0-15.059 6.776-15.059 15.059s6.776 15.059 15.059 15.059 15.059-6.776 15.059-15.059-6.776-15.059-15.059-15.059z" /> +<glyph unicode="&#xe6a0;" d="M236.092 311.010l-1.024-5.964 20.269 2.59c0.12 0 0.632 0.091 0.934 0.12l19.185-2.439-0.933 5.452c32.828 6.084 99.629 21.835 137.788 54.513 14.878 12.709 23.070 29.817 23.070 48.188s-8.192 35.478-23.070 48.219c-28.371 24.335-77.132 24.305-105.502 0-24.516-20.992-40.93-51.983-51.531-79.149-10.601 27.106-27.016 58.007-51.531 78.938-28.34 24.275-77.041 24.245-105.382 0-14.878-12.709-23.070-29.786-23.070-48.098 0-18.312 8.192-35.358 23.070-48.038 38.159-32.587 104.96-48.279 137.728-54.332zM326.385 438.799c8.764 7.5 20.51 11.626 33.159 11.626 12.62 0 24.425-4.126 33.159-11.626 8.101-6.897 12.529-15.902 12.529-25.329 0-9.397-4.428-18.372-12.529-25.299-31.082-26.594-88.214-40.81-119.447-46.923 7.379 26.745 23.582 72.252 53.127 97.551zM117.91 438.588c8.764 7.469 20.51 11.595 33.159 11.595 12.619 0 24.395-4.126 33.13-11.595 29.395-25.088 45.598-70.385 53.007-97.069-31.202 6.053-88.185 20.179-119.296 46.743-8.072 6.867-12.499 15.781-12.499 25.118 0 9.366 4.427 18.312 12.499 25.209zM512 299.294h-512v-120.47h30.117v-210.824h451.764v210.823h30.118v120.471zM210.101 269.177h90.534l32.106-175.978-49.634 20.63-39.183-36.292-33.822 191.639zM30.117 269.177h149.383l10.631-60.236h-160.015v60.236zM451.764-1.882h-391.529v180.706h135.228l28.371-160.918 65.536 60.687 82.884-34.485-24.546 134.716h104.056v-180.706zM481.882 208.941h-139.685l-10.993 60.236h150.679v-60.236z" /> +<glyph unicode="&#xe6a1;" d="M271.059 359.891v89.991h-30.118v-89.991c-107.339-3.163-240.941-38.611-240.941-74.903v-212.059c0-24.908 20.269-45.176 45.176-45.176h53.91l60.115 118.392c17.077-3.132 51.591-8.252 95.564-8.252 44.544 0 81.137 5.24 99.027 8.342l57.464-118.483h55.567c24.907 0 45.176 20.269 45.176 45.176v212.059c0 36.292-133.632 71.77-240.941 74.902zM481.882 72.93c0-8.283-6.776-15.059-15.059-15.059h-36.683l-59.512 122.579-11.625-2.56c-0.452-0.091-45.628-9.909-104.267-9.909-58.459 0-99.84 9.728-100.262 9.849l-11.565 2.801-62.284-122.73h-35.449c-8.282 0-15.059 6.776-15.059 15.059v208.263c15.119 13.162 101.797 45.719 210.823 48.519v-0.332h30.117v0.392c108.996-2.831 195.704-35.388 210.823-48.55v-208.324zM150.588 268.574h30.058v-30.118h-30.058v-30.72h-30.118v30.72h-30.118v30.117h30.118v30.72h30.118v-30.72zM376.471 208.339c24.908 0 45.176 20.269 45.176 45.177s-20.269 45.177-45.176 45.177-45.176-20.239-45.176-45.177 20.269-45.177 45.176-45.177zM376.471 268.574c8.283 0 15.059-6.776 15.059-15.059s-6.776-15.059-15.059-15.059-15.059 6.776-15.059 15.059 6.776 15.059 15.059 15.059z" /> +<glyph unicode="&#xe6a2;" d="M16.264 480l194.56-277.956v-234.044h90.353v234.044l194.56 277.956h-479.473zM271.059 211.531v-213.413h-30.118v213.413l-166.852 238.351h363.821l-166.852-238.351z" /> +<glyph unicode="&#xe6a3;" d="M376.38 480h-195.674v-60.536h30.118v30.419h150.588v-120.47h120.471v-240.941h-120.983v-30.118h151.1v295.695l-135.62 125.952zM391.529 424.825l70.325-65.295h-70.325v65.295zM0 389.647v-421.647h331.294v295.695l-135.62 125.952h-195.674zM210.823 334.471l70.325-65.295h-70.325v65.295zM30.117-1.882v361.412h150.588v-120.471h120.47v-240.941h-271.059z" /> +<glyph unicode="&#xe6a4;" d="M291.147 480h-230.912v-512h391.529v352.135l-160.618 159.865zM301.176 427.535l98.575-98.123h-98.575v98.123zM90.353-1.882v451.764h180.706v-150.588h150.588v-301.176h-331.294z" /> +<glyph unicode="&#xe6a5;" d="M404.962 353.476l-156.492 90.383c-20.781 11.957-49.694 4.247-61.681-16.565l-180.706-313.012c-12.469-21.564-5.029-49.243 16.564-61.741l95.744-54.935 131.222 0.542 171.911 293.617c12.438 21.564 5.029 49.243-16.565 61.711zM232.298 28.205l-105.954-0.421-88.697 50.868c-7.198 4.187-9.668 13.372-5.511 20.601l82.823 143.481 181.519-104.81-64.18-109.719zM395.445 306.914l-83.757-143.059-181.669 104.9 82.823 143.481c2.68 4.638 7.71 7.53 13.071 7.53 2.65 0 5.18-0.663 7.5-1.988l156.492-90.353c7.198-4.186 9.668-13.402 5.541-20.51zM512 28.236v-30.118h-210.823v30.118h210.823z" /> +<glyph unicode="&#xe6a6;" d="M60.236 480v-512h391.529v512h-391.529zM141.403 359.529l-42.406 90.353h314.007l-42.466-90.353h-229.135zM122.308 329.412h118.634v-271.059h-120.531l-30.058-34.786v373.88l31.955-68.036zM134.174 28.236h243.712l25.962-30.118h-295.635l25.962 30.118zM391.71 58.353h-120.651v271.059h118.603l31.985 68.096v-373.911l-29.937 34.756z" /> +<glyph unicode="&#xe6a7;" d="M512-1.882v-30.118h-512v30.118h512zM402.191 213.339l-21.293 21.293-109.809-109.809v355.178h-30.118v-355.207l-109.839 109.869-21.323-21.323 146.191-146.161 146.191 146.161z" /> +<glyph unicode="&#xe6a8;" d="M501.188 317.094l-84.661 102.671h-145.468v60.236h-30.118v-60.236h-210.823v-210.823h210.823v-240.941h30.118v240.941h145.709l84.42 108.153zM271.059 239.059h-210.823v150.588h342.076l60.265-73.065-60.507-77.523h-131.012z" /> +<glyph unicode="&#xe6a9;" d="M271.059 299.294h141.402l58.368 77.192-58.609 73.397h-141.161v30.118h-30.118v-30.118h-180.706v-150.588h180.706v-60.236h-141.161l-58.609-73.397 58.368-77.192h141.402v-120.471h30.118v120.471h180.706v150.588h-180.706v60.235zM90.353 419.764h307.38l34.966-43.791-35.207-46.562h-307.14v90.353zM421.647 118.588h-307.14l-35.208 46.562 34.966 43.791h307.38v-90.353z" /> +<glyph unicode="&#xe6aa;" d="M512 133.647v-15.059h-185.765v30.118h155.166c-3.373 50.959-23.763 97.31-55.476 133.541l-24.275-24.275-21.293 21.293 24.154 24.154c-36.202 31.714-82.522 51.983-133.452 55.387v-89.63h-30.118v89.63c-50.929-3.404-97.25-23.673-133.421-55.387l23.974-23.974-21.293-21.293-24.094 24.094c-31.714-36.231-52.133-82.582-55.477-133.542h155.738v-30.118h-186.368v15.059c0 141.161 114.838 256 256 256s256-114.839 256-256zM316.236 133.647c0-33.22-27.015-60.236-60.236-60.236s-60.236 27.015-60.236 60.236c0 19.396 9.367 36.442 23.612 47.495l-62.705 109.327 26.112 14.969 64.482-112.429c2.861 0.421 5.722 0.873 8.734 0.873 33.22 0 60.236-27.015 60.236-60.236zM286.118 133.647c0 16.595-13.523 30.118-30.118 30.118s-30.118-13.523-30.118-30.118 13.523-30.118 30.118-30.118 30.118 13.523 30.118 30.118z" /> +<glyph unicode="&#xe6ab;" d="M90.353 389.647v-331.294h331.294v331.294h-331.294zM391.529 88.471h-271.059v271.059h271.059v-271.059z" /> +<glyph unicode="&#xe6ac;" d="M269.252 273.062l32.557 40.357-0.12 0.091c25.75 29.244 62.856 46.020 101.738 46.020h57.163l-49.574 49.573 21.293 21.293 85.925-85.925-85.956-85.956-21.293 21.293 49.604 49.604h-57.163c-29.786 0-58.157-12.8-78.156-34.906l-32.527-40.327-23.492 18.884zM176.219 157.861l-0.332 0.241c-20.089-25.088-50.085-39.514-82.311-39.514h-93.576v-30.118h93.576c41.231 0 79.661 18.402 105.502 50.477l0.332-0.271 28.34 35.117-23.401 18.944-28.13-34.876zM410.986 168.162l49.604-49.574h-57.163c-31.684 0-61.169 14.125-81.317 38.581l-128.572 158.57-0.301-0.241c-25.6 27.889-61.681 44.032-99.659 44.032h-93.576v-30.118h93.576c30.058 0 58.669-12.891 78.637-35.238l125.32-154.564-0.151-0.12c25.901-32.406 64.542-51.019 106.014-51.019h57.163l-49.574-49.574 21.293-21.293 85.956 85.956-85.956 85.956-21.293-21.353z" /> +<glyph unicode="&#xe6ad;" d="M90.353 398.923v-349.907l349.907 175.797-349.907 174.11zM120.471 350.253l252.446-125.591-252.446-126.825v252.416z" /> +<glyph unicode="&#xe6ae;" d="M90.353 28.236h120.471v391.529h-120.471v-391.529zM120.471 389.647h60.236v-331.294h-60.236v331.294zM301.176 419.764v-391.529h120.471v391.529h-120.471zM391.529 58.353h-60.236v331.294h60.236v-331.294z" /> +<glyph unicode="&#xe6af;" d="M90.353 406.634v-365.508l219.286 183.657-219.286 181.851zM120.471 342.543l142.125-117.851-142.125-119.025v236.875zM460.228 224.783l-194.56-162.936-19.365 23.13 166.852 139.716-166.762 138.3 19.245 23.19 194.59-161.4z" /> +<glyph unicode="&#xe6b0;" d="M202.361 224.783l219.286-183.628v365.478l-219.286-181.851zM391.529 105.668l-142.125 118.995 142.125 117.88v-236.875zM98.816 224.662l166.852-139.716-19.365-23.13-194.56 162.936 194.62 161.371 19.245-23.191-166.792-138.27z" /> +<glyph unicode="&#xe6b1;" d="M384 344.471c-17.408 0-34.515-3.705-50.929-11.053-26.774 26.292-62.494 41.171-99.659 41.171-59.212 0-110.954-35.84-132.428-90.413-54.302 2.228-100.984-42.797-100.984-97.822 0-53.971 43.911-97.882 97.882-97.882h286.117c70.565 0 128 57.435 128 128s-57.435 128-128 128zM384 118.588h-286.118c-37.376 0-67.764 30.389-67.764 67.764s30.389 67.764 67.764 67.764c3.764 0 7.349-0.572 10.933-1.144l13.101-2.168 3.795 12.709c14.396 48.429 57.676 80.956 107.7 80.956 32.316 0 63.308-14.366 84.962-39.364l7.981-9.216 10.661 5.873c15.149 8.342 30.931 12.589 46.983 12.589 53.971 0 97.882-43.911 97.882-97.882s-43.911-97.882-97.882-97.882z" /> +<glyph unicode="&#xe6b2;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 46.050 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM320.632 213.339l21.293 21.293-85.925 85.956-85.956-85.925 21.293-21.293 49.604 49.573v-234.707h30.118v234.707l49.574-49.604z" /> +<glyph unicode="&#xe6b3;" d="M512 276.706c0-70.566-57.404-128-128-128h-83.034v30.118h83.034c53.971 0 97.882 43.911 97.882 97.882s-43.911 97.882-97.882 97.882c-16.022 0-31.834-4.247-46.983-12.559l-10.661-5.873-7.981 9.216c-21.654 24.968-52.645 39.334-84.962 39.334-50.025 0-93.334-32.527-107.701-80.956l-3.795-12.709-13.101 2.168c-3.584 0.572-7.168 1.144-10.933 1.144-37.346 0-67.764-30.388-67.764-67.764s30.419-67.764 67.764-67.764h111.405v-30.118h-111.405c-53.971 0-97.882 43.911-97.882 97.882 0 54.995 45.508 100.442 100.984 97.822 21.474 54.573 73.216 90.413 132.428 90.413 37.165 0 72.885-14.878 99.659-41.171 16.444 7.348 33.521 11.053 50.929 11.053 70.596 0 128-57.435 128-128zM271.059 66.485v232.81h-30.118v-232.81l-49.573 49.574-21.293-21.293 85.925-85.925 85.956 85.956-21.293 21.293-49.604-49.604z" /> +<glyph unicode="&#xe6b4;" d="M481.882 419.764v-451.764h-451.764v451.764h67.584v-30.118h-37.467v-391.529h391.529v391.529h-38.49v30.118h68.608zM391.529 329.412h-271.059v120.47h92.913c6.234 17.529 22.98 30.118 42.617 30.118s36.382-12.589 42.617-30.118h92.913v-120.47zM361.412 419.764h-90.353v15.059c0 8.313-6.747 15.059-15.059 15.059s-15.059-6.747-15.059-15.059v-15.059h-90.353v-60.236h210.823v60.236z" /> +<glyph unicode="&#xe6b5;" d="M512 179.305l-58.971-0.060-61.772 120.049h-239.405l-89.389-120.44-62.464-0.030v-149.896h60.295c0-0.241-0.060-0.452-0.060-0.692 0-33.22 27.015-60.236 60.235-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h150.739c-0.030-0.241-0.091-0.452-0.091-0.692 0-33.22 27.015-60.236 60.236-60.236s60.236 27.015 60.236 60.236c0 0.241-0.060 0.452-0.060 0.692h60.296v150.377zM419.178 179.215l-117.368-0.12v90.082h71.077l46.291-89.962zM166.972 269.177h104.719v-90.112l-171.701-0.151 66.982 90.262zM120.471-1.882c-16.595 0-30.117 13.523-30.117 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM391.529-1.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM481.882 59.046h-38.882c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-168.117c-10.541 17.529-29.546 29.425-51.471 29.425s-40.93-11.897-51.471-29.425h-38.882v89.66l451.764 0.452v-90.112z" /> +<glyph unicode="&#xe6b6;" d="M421.647 419.764v30.118h-90.353v-30.118h-150.588v30.118h-90.353v-30.118h-90.353v-451.764h512v451.764h-90.353zM361.412 419.764h30.118v-60.236h-30.118v60.236zM120.471 419.764h30.117v-60.236h-30.118v60.236zM481.882-1.882h-451.764v268.68h451.764v-268.68zM30.117 296.915v92.732h60.236v-60.236h90.353v60.236h150.588v-60.236h90.353v60.236h60.236v-92.732h-451.764z" /> +<glyph unicode="&#xe6b7;" d="M499.712 445.305c-1.596 0.301-39.786 7.349-89.781 7.349-63.397 0-115.291-11.023-154.353-32.768-45.719 23.040-98.304 34.696-156.492 34.696-50.628 0-86.317-9.096-87.793-9.487l-11.294-2.952 0.030-418.816 18.794 4.849c0.331 0.060 33.732 8.524 80.263 8.524 43.58 0 83.456-7.228 119.266-21.173v-24.938h75.294v25.781c38.581 14.697 82.733 18.402 116.254 18.402 47.044 0 83.908-6.776 84.269-6.837l17.829-3.313v418.364l-12.288 2.319zM30.117 61.154v357.135c13.583 2.53 38.46 6.174 68.969 6.174 53.037 0 100.563-10.842 141.854-31.443v-354.666c-42.255 18.582-89.66 28.461-141.854 28.461-29.184 0-53.398-3.042-68.969-5.662zM481.882 60.22c-16.143 2.108-41.954 4.638-71.981 4.638-55.657 0-101.828-8.975-138.843-25.75v354.575c42.827 23.492 98.515 28.853 138.842 28.853 30.81 0 57.284-2.922 71.981-4.94v-357.376z" /> +<glyph unicode="&#xe6b8;" d="M461.161 54.588c-0.421 0.392-39.514 38.972-39.514 96.678v99.147c0 93.395-74.33 169.351-165.647 169.351s-165.647-75.957-165.647-169.351v-99.147c0-56.049-39.334-96.467-39.695-96.858l-25.389-25.69h462.517l-26.624 25.871zM91.919 58.835c13.372 20.841 28.552 53.127 28.552 92.431v99.147c0 76.77 60.807 139.234 135.529 139.234s135.529-62.464 135.529-139.234v-99.147c0-39.755 14.908-71.77 28.25-92.431h-327.861zM271.059 419.764h-30.118v30.118h30.118v-30.118zM271.059 28.236h30.118c0-24.908-20.269-45.176-45.176-45.176s-45.177 20.269-45.177 45.176h30.118c0-8.313 6.776-15.059 15.059-15.059s15.059 6.747 15.059 15.059z" /> +<glyph unicode="&#xe6b9;" d="M256.482 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.868 256-256 256zM391.198 239.059c2.952 43.972 18.522 85.986 45.086 121.073 25.901-34.123 42.285-75.746 45.297-121.073h-90.383zM481.581 208.941c-3.012-45.327-19.396-86.98-45.327-121.103-26.534 35.117-42.105 77.132-45.026 121.103h90.353zM416.406 383.353c-32.949-41.291-52.194-91.558-55.326-144.293h-90.022v210.101c56.591-3.675 107.64-27.979 145.348-65.807zM240.941 449.099v-210.040h-89.148c-3.072 52.766-22.317 103.003-55.236 144.293 37.466 37.617 88.154 61.892 144.384 65.747zM31.352 239.059c3.012 45.327 19.396 86.98 45.327 121.103 26.534-35.087 42.075-77.101 45.026-121.103h-90.353zM121.675 208.941c-2.921-44.032-18.432-86.016-44.996-121.103-25.931 34.123-42.316 75.776-45.327 121.103h90.323zM96.527 64.647c32.979 41.291 52.194 91.527 55.266 144.293h89.148v-210.041c-56.23 3.855-106.917 28.13-144.414 65.747zM271.059-1.159v210.101h90.052c3.102-52.736 22.348-103.002 55.266-144.324-37.707-37.798-88.726-62.103-145.317-65.777z" /> +<glyph unicode="&#xe6ba;" d="M512-1.882v-30.118h-512v30.118h512zM60.236 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.117v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM361.412 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.118v361.412z" /> +<glyph unicode="&#xe6bb;" d="M512-1.882v-30.118h-512v30.118h512zM361.412 178.824h60.236v-150.588h30.118v180.706h-120.471v-180.706h30.118v150.588zM210.823 269.177h60.235v-240.941h30.118v271.059h-120.471v-271.059h30.118v240.941zM60.236 389.647h60.236v-361.412h30.118v391.529h-120.471v-391.529h30.117v361.412z" /> +<glyph unicode="&#xe6bc;" d="M439.205 28.236v-30.118h-213.323c-91.316 0-165.647 74.3-165.647 165.647s74.331 165.647 165.647 165.647h87.703l-79.692 79.692 21.293 21.293 116.043-116.044-116.043-116.073-21.293 21.324 79.692 79.692h-87.702c-74.722 0-135.53-60.808-135.53-135.53s60.808-135.529 135.53-135.529h213.324z" /> +<glyph unicode="&#xe6bd;" d="M451.764 254.118c0-91.347-74.3-165.647-165.647-165.647h-87.702l79.692-79.692-21.293-21.293-116.043 116.043 116.074 116.073 21.293-21.293-79.721-79.721h87.702c74.722 0 135.529 60.808 135.529 135.53s-60.808 135.53-135.529 135.53h-213.323v30.118h213.323c91.347 0 165.647-74.3 165.647-165.647z" /> +<glyph unicode="&#xe6be;" d="M451.764 193.882v-165.647h-165.647v30.118h114.537l-310.302 310.302v-114.537h-30.117v165.647h165.647v-30.117h-113.935l309.7-309.7v113.935h30.118z" /> +<glyph unicode="&#xe6bf;" d="M512 419.764h-512v-120.471h30.117v-331.294h451.764v331.294h30.118v120.471zM451.764-1.882h-391.529v301.176h391.529v-301.176zM481.882 329.412h-451.764v60.236h451.764v-60.236zM180.706 148.706h151.070c33.22 0 60.236 27.015 60.236 60.236s-27.015 60.236-60.236 60.236h-151.070c-33.22 0-60.236-27.016-60.236-60.236s27.016-60.236 60.236-60.236zM180.706 239.059h151.070c16.625 0 30.118-13.493 30.118-30.117s-13.493-30.118-30.118-30.118h-151.070c-16.625 0-30.118 13.493-30.118 30.118s13.493 30.118 30.118 30.118z" /> +<glyph unicode="&#xe6c0;" d="M460.529 100.759l-47.284 94.178-94.178-47.224 13.493-26.955 56.35 28.281c-11.234-57.435-58.91-101.346-117.851-107.972v228.111h45.176v30.118h-45.176v31.654c34.334 6.988 60.236 37.376 60.236 73.758 0 41.532-33.792 75.294-75.294 75.294s-75.294-33.762-75.294-75.294c0-36.382 25.901-66.771 60.236-73.758v-31.654h-45.177v-30.118h45.177v-228.111c-58.88 6.626-106.556 50.477-117.82 107.821l56.019-28.13 13.493 26.956-94.178 47.224-47.285-94.178 26.925-13.523 19.606 39.093c20.871-67.614 83.938-116.916 158.298-116.916 74.21 0 137.216 49.092 158.178 116.465l19.426-38.641 26.925 13.523zM210.823 404.706c0 24.907 20.269 45.176 45.177 45.176s45.176-20.269 45.176-45.176-20.269-45.177-45.177-45.177-45.177 20.269-45.177 45.177z" /> +<glyph unicode="&#xe6c1;" d="M512 419.764v-30.118h-512v30.118h512zM90.353 269.177h421.647v30.117h-421.647v-30.117zM0 148.706h512v30.118h-512v-30.118zM210.823 28.236h301.177v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c2;" d="M512 419.764v-30.118h-512v30.118h512zM421.647 299.294h-421.647v-30.117h421.647v30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h301.176v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c3;" d="M512 419.764v-30.118h-512v30.118h512zM0 269.177h512v30.117h-512v-30.117zM0 148.706h512v30.118h-512v-30.118zM0 28.236h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe6c4;" d="M512 419.764v-30.118h-512v30.118h512zM45.176 299.294v-30.117h421.647v30.117h-421.647zM0 148.706h512v30.118h-512v-30.118zM105.412 28.236h301.176v30.118h-301.176v-30.118z" /> +<glyph unicode="&#xe6c5;" d="M254.614 435.065l-248.23-436.947h499.38l-251.151 436.947zM254.765 374.347l198.927-346.112h-395.565l196.638 346.112zM271.059 150.573h-30.118v118.603h30.118v-118.603zM286.118 87.537c0-16.625-13.462-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.463 30.118 30.118 30.118 30.118-13.493 30.118-30.118z" /> +<glyph unicode="&#xe6c6;" d="M443.151 275.471c15.18 15.42 23.673 35.569 23.673 57.314 0 45.267-36.834 82.101-82.070 82.101-26.684 0-51.050-13.071-66.469-34.635-15.089 4.668-30.901 7.5-47.224 8.644v30.87h30.118v30.118h-90.353v-30.118h30.118v-30.87c-16.324-1.144-32.136-3.976-47.225-8.644-15.42 21.594-39.756 34.635-66.469 34.635-45.236 0-82.070-36.834-82.070-82.1 0-21.775 8.493-41.924 23.672-57.314-15.029-28.973-23.672-61.801-23.672-96.647 0-51.411 18.552-98.515 49.243-135.138l-38.701-51.591 24.094-18.070 35.9 47.887c37.316-33.401 86.377-53.911 140.288-53.911s102.972 20.51 140.288 53.911l35.9-47.887 24.094 18.070-38.701 51.591c30.69 36.623 49.243 83.727 49.243 135.138 0 34.846-8.644 67.674-23.673 96.647zM384.753 384.768c28.642 0 51.953-23.311 51.953-51.983 0-11.234-3.614-21.805-10.089-30.63-20.42 28.19-47.616 51.019-79.209 66.319 9.698 10.21 22.95 16.294 37.346 16.294zM75.294 332.785c0 28.642 23.311 51.983 51.953 51.983 14.396 0 27.648-6.084 37.346-16.264-31.594-15.3-58.76-38.159-79.21-66.319-6.475 8.825-10.090 19.365-10.090 30.599zM256-1.882c-99.659 0-180.706 81.046-180.706 180.706s81.047 180.706 180.706 180.706 180.706-81.047 180.706-180.706-81.046-180.706-180.706-180.706zM271.059 178.824h120.471v-30.118h-150.588v120.471h30.117v-90.353z" /> +<glyph unicode="&#xe6c7;" d="M421.647 419.764v60.236h-391.529v-512h391.529v60.236h60.236v391.529h-60.236zM60.236-1.882v451.764h60.236v-451.764h-60.236zM391.529-1.882h-240.941v451.764h240.941v-451.764zM451.764 58.353h-30.118v90.353h30.118v-90.353zM451.764 178.824h-30.118v90.353h30.118v-90.353zM421.647 299.294v90.353h30.118v-90.353h-30.118zM180.706 359.529h150.588v-30.117h-150.588v30.117zM180.706 299.294h120.47v-30.117h-120.471v30.117z" /> +<glyph unicode="&#xe6c8;" d="M351.382 480h-260.548v-59.754h-15.54c-24.907 0-45.176-20.269-45.176-45.176v-258.651l75.927-149.263 74.21 149.353v258.56c0 24.908-20.269 45.176-45.177 45.176h-14.125v29.636h210.341v-150.588h150.588v-301.177h-346.353v-30.118h376.471v352.135l-160.618 159.864zM117.7 58.293h-24.215l-33.25 65.356v176.128h30.118v-181.519h30.118v181.519h29.636v-176.219l-32.406-65.265zM150.107 375.070v-45.176h-89.871v45.176c0 8.282 6.776 15.059 15.059 15.059h59.753c8.313 0 15.059-6.777 15.059-15.059zM361.412 427.535l98.575-98.123h-98.575v98.123z" /> +<glyph unicode="&#xe6c9;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 419.764v-90.353h-451.764v90.353h451.764zM30.117 28.236v271.059h451.764v-271.059h-451.764zM210.823 359.529h-30.118v30.118h30.118v-30.118zM150.588 359.529h-30.118v30.118h30.118v-30.118zM90.353 359.529h-30.117v30.118h30.117v-30.118z" /> +<glyph unicode="&#xe6ca;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236 208.941h30.118v30.118h-30.117v-30.118zM120.471 208.941h30.117v30.118h-30.118v-30.118zM180.706 208.941h30.118v30.118h-30.118v-30.118zM301.176 208.941h30.118v30.118h-30.118v-30.118zM361.412 208.941h30.118v30.118h-30.118v-30.118zM421.647 208.941h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM240.941 389.647h30.117v30.118h-30.118v-30.118zM240.941 329.412h30.117v30.117h-30.118v-30.117zM240.941 269.177h30.117v30.117h-30.118v-30.117zM240.941 208.941h30.117v30.118h-30.118v-30.118zM240.941 148.706h30.117v30.118h-30.118v-30.118zM240.941 88.471h30.117v30.118h-30.118v-30.118zM240.941 28.236h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118z" /> +<glyph unicode="&#xe6cb;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM405.534 241.197c0.632-5.632 1.054-11.355 1.054-17.197s-0.421-11.565-1.054-17.197l-1.115-9.878-43.339-13.011c-0.753-1.957-1.536-3.885-2.409-5.813l21.413-39.815-6.174-7.771c-7.168-9.005-15.39-17.228-24.425-24.425l-7.771-6.204-39.815 21.444c-1.897-0.844-3.855-1.656-5.813-2.409l-12.981-43.309-9.849-1.144c-5.662-0.663-11.414-1.054-17.257-1.054s-11.595 0.392-17.257 1.054l-9.849 1.144-13.011 43.309c-1.958 0.753-3.885 1.536-5.813 2.409l-39.845-21.413-7.77 6.174c-9.005 7.168-17.227 15.39-24.395 24.425l-6.144 7.74 21.413 39.815c-0.874 1.957-1.656 3.885-2.41 5.843l-43.34 13.011-1.115 9.878c-0.632 5.632-1.054 11.354-1.054 17.197s0.421 11.565 1.054 17.197l1.115 9.879 43.34 13.011c0.753 1.958 1.536 3.885 2.41 5.813l-21.413 39.815 6.144 7.77c7.138 8.975 15.36 17.197 24.425 24.426l7.77 6.204 39.816-21.444c1.898 0.874 3.855 1.656 5.813 2.409l13.011 43.309 9.849 1.144c11.324 1.325 23.191 1.325 34.515 0l9.849-1.144 13.011-43.309c1.957-0.723 3.885-1.536 5.813-2.409l39.815 21.444 7.771-6.204c9.005-7.168 17.228-15.39 24.395-24.396l6.174-7.771-21.413-39.845c0.844-1.897 1.656-3.855 2.409-5.782l43.339-13.041 1.115-9.879zM376.471 224c0 1.356-0.030 2.71-0.091 4.066l-39.243 11.776-2.289 7.831c-1.566 5.27-3.704 10.481-6.355 15.42l-3.825 7.138 19.336 35.93c-1.868 1.988-3.795 3.945-5.813 5.813l-35.9-19.335-7.198 3.855c-4.94 2.651-10.149 4.819-15.45 6.385l-7.83 2.319-11.746 39.183c-2.68 0.12-5.452 0.12-8.132 0l-11.746-39.213-7.831-2.319c-5.361-1.596-10.541-3.734-15.42-6.355l-7.138-3.885-35.96 19.365c-2.018-1.897-3.946-3.825-5.813-5.813l19.335-35.93-3.855-7.138c-2.65-4.939-4.819-10.119-6.385-15.48l-2.319-7.8-39.183-11.746c-0.060-1.356-0.090-2.71-0.090-4.066s0.030-2.711 0.090-4.036l39.213-11.776 2.319-7.83c1.566-5.331 3.734-10.541 6.385-15.481l3.825-7.138-19.335-35.93c1.868-1.988 3.795-3.945 5.813-5.813l35.93 19.336 7.138-3.825c4.94-2.651 10.149-4.819 15.451-6.385l7.831-2.319 11.776-39.213c2.68-0.12 5.452-0.12 8.132 0l11.776 39.183 7.8 2.319c5.331 1.566 10.541 3.735 15.481 6.385l7.138 3.825 35.9-19.336c2.018 1.868 3.945 3.825 5.813 5.813l-19.336 35.93 3.825 7.138c2.651 4.94 4.819 10.12 6.385 15.481l2.319 7.8 39.183 11.776c0.060 1.385 0.091 2.74 0.091 4.096z" /> +<glyph unicode="&#xe6cc;" d="M60.236 480h30.118v-30.118h-30.117v30.118zM150.588 480h-30.118v-30.118h30.118v30.118zM210.823 480h-30.118v-30.118h30.118v30.118zM271.059 480h-30.118v-30.118h30.118v30.118zM331.294 480h-30.118v-30.118h30.118v30.118zM391.529 480h-30.118v-30.118h30.118v30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 269.177h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM255.94 177.529l-124.808 124.898-21.323-21.324 146.131-146.191 146.221 146.191-21.293 21.293-124.928-124.868z" /> +<glyph unicode="&#xe6cd;" d="M47.104 419.764c-25.721 0-46.682-20.781-46.682-46.321h-0.421v-329.457c0-25.54 20.932-46.321 46.682-46.321h406.348v49.844h58.97v372.254h-464.896zM46.682 27.813c-9.126 0-16.564 7.259-16.564 16.204v288.618c0.723-0.211 1.627-0.15 2.349-0.361 4.307-1.265 8.825-2.048 13.644-2.139 0.211 0 0.361-0.091 0.572-0.091h376.26v-91.407h-86.106c-25.962 0-47.074-20.269-47.074-45.176v-30.118c0-24.907 21.113-45.176 47.074-45.176h86.106v-90.353h-376.26zM336.805 148.284c-9.366 0-16.956 6.747-16.956 15.059v30.118c0 8.313 7.62 15.059 16.956 15.059h145.077v-60.236h-145.077zM481.882 77.659h-28.853v40.508h28.853v-40.508zM453.029 238.637v121.524h-405.925c-8.222 0-16.564 4.126-16.564 13.282 0.030 8.945 7.469 16.204 16.564 16.204h434.779v-151.010h-28.853z" /> +<glyph unicode="&#xe6ce;" d="M0 449.882v-451.764h512v451.764h-512zM481.882 359.529h-8.072l-70.957 60.236h79.029v-60.236zM263.318 269.177l70.988 60.236h87.913l-70.988-60.236h-87.913zM204.891 359.529l-70.987 60.236h87.883l70.987-60.236h-87.883zM287.744 329.412l-70.988-60.236h-87.913l70.957 60.236h87.944zM339.365 359.529l-70.988 60.236h87.883l70.988-60.236h-87.883zM30.117 419.764h57.224l70.988-60.236h-128.211v60.236zM30.117 329.412h123.151l-70.987-60.236h-52.164v60.236zM481.882 28.236h-451.764v210.823h451.764v-210.823zM481.882 269.177h-84.089l70.957 60.236h13.132v-60.236z" /> +<glyph unicode="&#xe6cf;" d="M391.259 276.706v67.764c0 24.907-20.42 45.176-45.538 45.176h-225.25v15.059c0 8.313 6.776 15.059 15.059 15.059h166.882v30.118h-166.882c-24.907 0-45.177-20.269-45.177-45.176v-15.059h-44.815c-25.118 0-45.538-20.269-45.538-45.176v-60.266c0-24.907 20.42-45.177 45.538-45.177h15.18v-165.617c0-24.907 20.269-45.176 45.176-45.176h239.857c25.118 0 45.538 20.269 45.538 45.176v67.795l120.712-83.817v303.134l-120.741-83.817zM481.882 114.944l-120.742 83.817v-125.349c0-8.313-6.897-15.059-15.42-15.059h-239.827c-8.282 0-15.059 6.747-15.059 15.059v195.735h-45.297c-8.523 0-15.42 6.746-15.42 15.059v60.265c0 8.313 6.897 15.059 15.42 15.059h300.212c8.493 0 15.42-6.747 15.42-15.059v-125.38l120.712 83.847v-187.994z" /> +<glyph unicode="&#xe6d0;" d="M449.957 299.294c-31.082 19.486-66.68 30.118-103.605 30.118-23.432 0-46.050-4.337-67.433-12.168l77.372 77.372c6.114-3.072 12.89-4.969 20.179-4.969 24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176-45.176-20.269-45.176-45.176c0-6.626 1.506-12.891 4.096-18.553l-117.76-117.73c-2.44 0.421-4.94 0.753-7.53 0.753-24.907 0-45.177-20.269-45.177-45.177 0-2.56 0.332-5.060 0.753-7.53l-101.978-101.978c-5.662 2.59-11.897 4.096-18.523 4.096-24.907 0-45.176-20.269-45.176-45.176s20.269-45.176 45.176-45.176 45.176 20.269 45.176 45.176c0 7.288-1.897 14.065-4.969 20.149l77.402 77.403c-7.891-21.534-12.197-44.363-12.197-67.433 0-44.243 18.432-82.372 30.118-102.129v-63.518h90.353v90.353h-70.355c-12.589 24.877-19.998 51.591-19.998 75.294 0 26.714 6.626 53.127 18.914 76.649 3.404-0.813 6.867-1.356 10.481-1.356 24.907 0 45.177 20.269 45.177 45.177 0 5.421-1.114 10.541-2.861 15.36 49.513 34.063 115.862 38.189 169.231 11.234v-71.771h90.353v90.353h-62.043zM376.471 449.882c8.313 0 15.059-6.746 15.059-15.059s-6.747-15.059-15.059-15.059-15.059 6.747-15.059 15.059 6.747 15.059 15.059 15.059zM45.176 88.471c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM210.823 28.236h30.118v-30.118h-30.118v30.118zM210.101 239.059c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059 15.059-6.747 15.059-15.059-6.746-15.059-15.059-15.059zM481.882 239.059h-30.118v30.118h30.118v-30.118z" /> +<glyph unicode="&#xe6d1;" d="M79.149 274.779c-2.771 0-6.596-0.091-9.005-0.512l-0.723-0.12-0.362-0.632c-12.288-22.528-36.743-88.365-40.629-98.063-8.433 0.603-19.667 0.572-19.667 11.264 0 7.771 27.227 71.379 30.991 81.829l0.723 1.988h-2.108c-2.53 0-4.999-0.15-7.409-0.332-2.259-0.15-4.397-0.301-6.476-0.301-5.482 0-22.317-0.662-24.335 12.86-0.813 5.602 1.506 11.716 4.186 14.697 0.512-7.349 11.957-7.017 15.059-7.017 6.837 0 21.293 2.861 30.449 4.036 10.632 1.356 22.558 4.458 33.521 4.458 10.993 0 18.974-6.686 18.974-15.842 0-3.192-1.024-6.716-2.981-10.149-5.813 1.325-14.366 1.837-20.209 1.837zM196.488 191.232c-6.234-1.476-14.065-0.783-14.065 12.047 0.060 15.661 17.257 33.822 25.841 33.822 1.536 0 6.053-1.114 5.060-6.114-5.27-26.594-29.516-22.468-27.678-25.509 8.734-14.517 51.531 7.048 47.375 37.587-1.386 10.421-7.68 17.438-19.697 17.438-22.287 0-47.797-33.1-52.315-57.464-9.125-9.276-19.486-8.613-20.269-8.524-0.632 0.873-0.662 2.62 0.392 6.114 1.868 6.144 6.174 15.51 11.113 23.793 4.638 7.74 9.487 15.812 9.487 21.775 0 7.198-4.246 10.843-12.559 10.843-10.873 0-30.87-13.312-30.87-13.312 0.783 6.355 20.992 47.224 20.992 52.736 0 6.445-2.922 10.873-10.933 10.873-2.078 0-8.162-2.078-11.656-3.343-3.343-25.721-16.655-46.954-21.925-58.73-9.849-21.956-20.751-44.935-20.751-54.513 0-9.036 8.704-17.679 18.1-18.070 8.433 31.865 29.034 66.44 43.159 66.44 0 0-16.293-33.942-16.293-49.483 0-7.65 1.626-15.51 13.643-15.51 0.060 0 0.12 0 0.18 0 10.873-1.115 22.648 13.583 27.558 20.54 0.662-16.534 15.089-18.372 21.383-18.372 18.341 0 34.575 11.173 46.893 30.991-6.837-5.662-23.643-14.035-32.166-16.053zM322.59 201.382c0.632 2.469 2.409 7.379 6.686 15.661 5.361 10.421 12.68 24.636 12.68 33.25 0 5.030-2.38 7.259-7.771 7.259-6.897 0-16.776-6.295-25.811-16.414l-2.53-2.801v3.825c0 9.999-2.952 15.059-8.674 15.059-7.349 0-19.365-8.313-30.539-21.203 0 0 2.289 11.505 2.289 15.209 0 7.831-6.867 8.975-10.933 8.975-2.168 0-4.428-0.271-6.776-0.783-0.753-8.764-9.036-27.98-16.354-45.026-4.728-11.053-9.607-22.407-9.607-24.907 0-8.012 5.452-13.192 13.824-13.192 0.422 0 0.844 0 1.295 0.030 6.174 20.751 22.709 51.2 34.425 51.2h2.018l-0.692-1.958c-1.656-5.030-4.276-9.969-6.837-14.758-4.307-8.072-8.313-15.692-8.313-23.823 0-6.626 6.174-10.21 11.987-10.21 1.476 0 2.68 0.151 3.735 0.452 4.247 19.245 26.413 51.591 35.599 51.591h2.711l-1.506-2.319c-2.711-4.277-13.673-24.606-13.673-39.032 0-8.975 4.397-13.312 13.372-13.312 12.469 0 21.384 11.505 24.877 24.004-4.066-2.801-7.62-3.373-11.414-3.373-3.042-0.030-5.572 0.603-4.066 6.596zM377.495 191.744c-6.656-5.512-15.721-0.542-15.872 4.517-0.12 5.541 4.759 15.39 10.812 27.196 4.759 9.367 10.933 15.751 10.361 20.48-0.783 6.686-9.969 11.927-15.692 11.927-0.512 0-0.994-0.030-1.506-0.090-0.271 0-0.482-0.030-0.692-0.030-3.132-8.072-7.168-16.805-11.084-25.299-6.988-15.149-13.613-29.485-13.613-36.984 0-9.397 6.355-19.577 16.625-19.577 10.722 0.542 16.324 5.211 20.661 17.86zM380.596 266.135c2.771 0 6.084 0.301 9.728 0.844 4.728 5.752 7.108 10.601 7.108 14.366 0 3.885-6.084 6.024-23.612 6.174-5.541-5.602-5.24-9.638-5.24-14.125 0.030-4.849 3.976-7.259 12.017-7.259zM493.598 263.183l-0.904-0.030-0.12-0.844c-1.897-14.456-31.594-63.367-37.105-49.483-1.235 3.132 2.289 11.505 5.271 18.462 3.404 7.951 7.228 16.956 6.837 22.016-0.091 1.144-0.482 2.108-1.054 2.952-0.332 0.723-0.964 1.536-2.108 2.259-0.933 0.603-2.168 1.054-3.704 1.445-3.524 1.024-7.83 1.205-11.324 1.084-3.976 0.060-8.342-0.091-12.8-0.362l0.271 0.813c4.247 13.854 15.541 26.774 18.733 28.732 7.861 4.849 18.372 6.024 20.721-4.699 1.988 4.517 2.56 5.813 1.988 9.216-1.687 10.391-9.397 16.022-21.534 16.685-22.046 1.144-37.798-31.111-45.357-49.573l-0.18-0.422-0.361-0.271c-2.139-1.506-6.114-2.5-8.493-3.132-0.512-0.12-0.904-0.241-1.175-0.332-4.608-1.656-5.572-6.144-5.662-8.162-0.12-3.343 3.885-5.813 5.662-8.855 0 0-7.771-19.306-13.402-31.021-8.825-18.281-22.86-49.243-23.1-56.139-0.332-8.403 11.926-16.173 18.613-17.046 2.048 14.035 41.652 103.484 41.652 103.484 1.416 2.168 3.825 5.18 7.62 7.469 3.554 1.446 6.264 1.928 8.342 1.868 0.512-0.12 0.904-0.271 1.265-0.482 1.084-0.602 1.777-1.536 2.168-2.47-1.356-4.819-3.132-9.909-4.909-14.908-3.855-10.903-8.915-27.708-8.252-35.569 0.421-5.029 0.873-7.409 3.554-10.18 8.041-8.252 28.19 5.903 34.183 13.974l0.994-0.421c-7.168-20.42-18.191-34.244-29.967-34.605-15.692-0.542-22.227 9.608-22.227 9.608s-2.651-9.758 7.921-20.57c4.728-4.819 11.746-6.807 18.914-6.264 0.482 0.030 0.964 0.091 1.445 0.12 28.913 3.132 41.502 35.93 51.652 66.771 1.416 4.337 6.295 15.812 7.74 19.938 0.813 2.228 1.837 4.638 2.801 6.957l0.12 0.271c2.289 5.572 3.795 9.337 3.675 11.234-0.632 7.138-9.728 10.692-18.402 10.481z" /> +<glyph unicode="&#xe6d2;" d="M283.136 440.726c-29.997 0-63.156-5.090-99.539-16.444-288.738-90.233-160.106-289.672-122.278-309.369 64.18-33.28-34.666-107.64-34.666-107.64s84.841 24.817 192.874 35.9c129.868 13.252 275.727 32.166 288.889 104.418 20.601 113.272-46.954 293.135-225.28 293.135zM478.78 152.983c-9.849-54.061-180.375-71.469-262.325-79.812-40.749-4.187-78.095-10.24-109.147-16.204 4.246 10.572 6.505 21.654 5.572 32.918-1.054 12.589-7.349 36.020-37.466 51.682-11.204 6.686-51.441 58.73-44.544 116.796 8.855 74.361 92.823 115.652 161.702 137.186 32.045 9.999 62.524 15.059 90.564 15.059 59.362 0 107.851-22.046 144.173-65.566 49.002-58.73 61.169-138.782 51.471-192.060zM120.471 284.236c0 16.595 13.492 30.118 30.117 30.118s30.118-13.523 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118zM271.059 299.294c0 16.655 13.462 30.118 30.118 30.118 16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117zM400.565 224c-166.912-184.982-289.13-28.612-289.13-28.612 96.376-86.257 289.13 28.612 289.13 28.612z" /> +<glyph unicode="&#xe6d3;" d="M183.597 424.283c-288.708-90.233-160.106-289.672-122.248-309.369 64.18-33.28-34.696-107.64-34.696-107.64s84.841 24.817 192.874 35.9c129.867 13.252 275.757 32.166 288.889 104.418 24.064 132.307-72.192 355.599-324.819 276.691zM301.176 329.412c16.625 0 30.118-13.463 30.118-30.118 0-16.595-13.493-30.117-30.118-30.117-16.655 0-30.118 13.523-30.118 30.117 0 16.655 13.462 30.118 30.118 30.118zM150.588 314.353c16.625 0 30.118-13.523 30.118-30.118s-13.493-30.118-30.118-30.118-30.118 13.523-30.118 30.118 13.493 30.118 30.118 30.118zM111.436 195.388c96.377-86.257 289.13 28.612 289.13 28.612-166.912-184.982-289.13-28.612-289.13-28.612z" /> +<glyph unicode="&#xe6d4;" d="M403.094 389.647c-28.22 55.085-84.48 90.353-147.095 90.353s-118.844-35.238-147.095-90.353h-108.906v-391.529h512v391.529h-108.906zM256 449.882c45.839 0 87.552-23.1 112.399-60.236h-224.798c24.877 37.105 66.56 60.236 112.399 60.236zM481.882 28.236h-451.764v331.294h451.764v-331.294zM240.941 178.824h-60.236v30.118h60.236v60.236h30.117v-60.236h60.236v-30.118h-60.236v-60.236h-30.118v60.236z" /> +<glyph unicode="&#xe6d5;" d="M512 121.058c0 31.503-25.66 57.163-57.133 57.163h-132.397l37.948 136.042 0.572 106.014c-0.060 32.377-27.558 59.724-60.115 59.724h-90.082c-32.618 0-60.145-27.347-60.145-59.724v-101.225l38.49-140.83h-132.006c-31.473 0-57.133-25.66-57.133-57.163v-122.94h30.117v-30.118h451.764v30.118h30.118v122.94zM481.882 28.236h-451.764v92.822c0 14.908 12.108 27.046 27.016 27.046h171.58l-47.947 172.996v99.177c0 15.781 14.035 29.606 30.028 29.606h90.082c15.932 0 29.937-13.824 29.937-29.606v-99.9l-48.007-172.273h172.062c14.908 0 27.015-12.137 27.015-27.046v-92.822z" /> +<glyph unicode="&#xe6d6;" d="M161.25 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM372.074 325.014l-21.293-21.293 79.692-79.721-79.692-79.692 21.293-21.293 100.984 100.985-100.985 101.014zM240.941-32h30.117v512h-30.118v-512z" /> +<glyph unicode="&#xe6d7;" d="M498.779 364.228l-42.255 42.285c-16.956 17.017-46.803 17.077-63.88 0l-379.121-379.241 163.66 0.091 65.747 65.295 24.817-23.341 231.032 231.063c8.524 8.493 13.221 19.847 13.221 31.924s-4.699 23.402-13.221 31.925zM204.077 175.33l24.817 24.817 63.518-63.518-24.787-24.847-63.548 63.548zM164.774 57.479l-78.547-0.030 96.557 96.588 39.484-39.484-57.494-57.073zM477.485 321.642l-163.75-163.75-63.548 63.548 163.75 163.78c2.831 2.861 6.596 4.427 10.632 4.427s7.8-1.566 10.661-4.397l42.255-42.285c5.873-5.903 5.873-15.42 0-21.324z" /> +<glyph unicode="&#xe6d8;" d="M0.783 449.882h90.353v-30.118h-60.236v-391.529h60.236v-30.118h-90.353v451.764zM422.43 449.882v-30.118h60.236v-391.529h-60.236v-30.118h90.353v451.764h-90.353zM268.348 240.053c-33.581 13.041-48.399 24.214-48.399 46.983 0 16.625 12.649 36.473 45.869 36.473 22.016 0 38.279-7.198 46.231-11.565l8.674 25.66c-10.812 6.144-28.913 11.926-53.82 11.926-47.315 0-78.728-28.19-78.728-66.108 0-34.334 24.546-54.905 64.301-69 32.858-12.62 45.869-25.63 45.869-48.369 0-24.546-18.793-41.563-50.929-41.563-21.684 0-42.255 7.228-56.35 15.902l-7.951-26.383c13.011-8.644 38.641-15.541 62.102-15.541 57.435 0 85.263 32.497 85.263 70.084 0.030 35.78-20.962 55.627-62.132 71.5z" /> +<glyph unicode="&#xe6d9;" d="M457.999 224l-101.014-101.014-21.293 21.293 79.721 79.721-79.692 79.692 21.293 21.293 100.985-100.984zM210.823-32h30.118v512h-30.118v-512z" /> +<glyph unicode="&#xe6da;" d="M176.309 303.692l-79.722-79.692 79.692-79.692-21.293-21.293-100.984 100.985 101.014 101.014 21.293-21.323zM271.059 480v-512h30.118v512h-30.118z" /> +<glyph unicode="&#xe6db;" d="M0 471.175v-503.175h503.175l-503.175 503.175zM30.117 398.471l89.058-89.058-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.757 21.293-21.293 19.727 19.727 21.383-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.383-21.384-19.727-19.727 21.293-21.293 19.727 19.727 21.353-21.353-19.727-19.727 21.293-21.293 19.727 19.727 21.384-21.384-19.727-19.727 21.293-21.293 19.727 19.727 76.68-76.68h-400.354v400.354zM60.236 28.236h232.116l-232.117 232.116v-232.116zM90.353 187.648l129.295-129.295h-129.295v129.295z" /> +<glyph unicode="&#xe6dc;" d="M60.236 480v-509.048l61.078 74.722 45.267-56.621 45.207 56.471 45.146-56.471 45.176 56.471 45.176-56.471 45.147 56.471 59.332-74.089v508.567h-391.529zM421.647 57.269l-29.214 36.472-45.147-56.471-45.176 56.471-45.176-56.471-45.147 56.471-45.207-56.471-45.026 56.32-31.202-38.189v394.481h331.294v-392.613zM331.204 359.529h-180.706v30.118h180.706v-30.118zM270.969 239.059h-120.471v30.118h120.471v-30.118zM360.749 299.294h-210.823v30.118h210.823v-30.118zM150.588 178.824h210.823v-30.118h-210.823v30.118z" /> +<glyph unicode="&#xe6dd;" d="M240.941 133.647h30.117v-165.647h-30.118v165.647zM421.647 214.964v-66.259h-331.294v66.259l32.948 14.667 33.31 190.133-12.921 23.462-20.209 36.773h265.036l-20.239-36.773-12.89-23.462 33.31-190.103 32.949-14.697zM391.529 195.418l-29.696 13.252-2.771 15.781-35.178 200.553 5.12 9.307 8.584 15.571h-163.178l13.703-24.908-1.807-10.421-36.141-205.884-29.696-13.252v-16.595h271.059v16.595z" /> +<glyph unicode="&#xe6de;" d="M162.756 152.049l21.293-21.293-158.358-158.328-21.293 21.293 158.358 158.328zM512 292.608l-66.018-19.185-110.893-157.997 12.921-33.671-46.833-46.833-234.255 234.255 46.863 46.863 33.672-12.921 157.967 110.893 7.469 25.72 11.685 40.267 187.422-187.392zM454.716 307.305l-115.411 115.38-4.94-17.076-2.952-10.18-179.803-126.193-30.388 11.655-11.716-11.716 191.668-191.668 11.716 11.746-5.873 15.42-5.752 14.969 9.246 13.132 116.947 166.671 10.18 2.952 17.077 4.909z" /> +<glyph unicode="&#xe6df;" d="M285.877 480h-59.754c-24.907 0-45.177-20.269-45.177-45.176v-320.964l75.927-149.263 74.21 149.353v320.873c-0.030 24.908-20.3 45.176-45.207 45.176zM226.124 449.882h59.754c8.283 0 15.059-6.776 15.059-15.059v-30.69h-89.871v30.69c0 8.283 6.746 15.059 15.059 15.059zM243.291 57.721l-28.13 55.266h81.769l-27.437-55.266h-26.202zM211.065 143.074v169.773h89.871v-169.773h-89.871zM211.065 342.964v31.051h89.871v-31.051h-89.871z" /> +<glyph unicode="&#xe6e0;" d="M256 464.941c-132.849 0-240.941-108.092-240.941-240.941 0-128.933 100.954-234.526 229.828-240.399l38.791-1.777-82.010 82.010c-8.524 8.524-13.221 19.877-13.221 31.955s4.698 23.401 13.221 31.955c17.047 17.046 46.833 17.046 63.88 0l112.007-112.007 10.24 6.716c68.367 44.755 109.147 120.109 109.147 201.548 0 132.849-108.092 240.941-240.941 240.941zM381.289 54.588l-94.419 94.419c-28.401 28.431-78.065 28.431-106.466 0-14.215-14.216-22.046-33.13-22.046-53.248s7.831-39.033 22.046-53.248l22.317-22.317c-91.136 23.582-157.546 106.014-157.546 203.806 0 116.254 94.57 210.823 210.823 210.823s210.823-94.57 210.823-210.823c0-67.162-31.744-129.656-85.534-169.412zM346.353 284.236c-33.22 0-60.236-27.015-60.236-60.236s27.015-60.236 60.236-60.236 60.236 27.015 60.236 60.236-27.015 60.236-60.236 60.236zM346.353 193.882c-16.595 0-30.118 13.523-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.523 30.118-30.118-13.523-30.118-30.118-30.118zM256 299.294c-24.938 0-45.177 20.209-45.177 45.177s20.239 45.177 45.177 45.177c24.967 0 45.176-20.209 45.176-45.177s-20.209-45.177-45.177-45.177zM173.177 302.577c0-16.625-13.493-30.118-30.118-30.118s-30.118 13.493-30.118 30.118 13.493 30.118 30.118 30.118 30.118-13.463 30.118-30.118z" /> +<glyph unicode="&#xe6e1;" d="M60.236 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.985-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM60.236 208.941c-16.595 0-30.117 13.493-30.117 30.118s13.523 30.118 30.117 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.117-30.118zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM256 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 208.941c-16.595 0-30.118 13.493-30.118 30.118s13.523 30.118 30.118 30.118 30.118-13.493 30.118-30.118-13.523-30.118-30.118-30.118z" /> +<glyph unicode="&#xe6e2;" d="M120.471 239.059c0-33.25-26.986-60.236-60.236-60.236s-60.236 26.986-60.236 60.236 26.985 60.236 60.236 60.236 60.236-26.986 60.236-60.236zM256 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236zM451.764 299.294c-33.25 0-60.236-26.986-60.236-60.235s26.986-60.236 60.236-60.236 60.236 26.986 60.236 60.236-26.986 60.236-60.236 60.236z" /> +<glyph unicode="&#xe6e3;" d="M349.786 268.544c20.721 22.709 33.732 52.615 33.732 85.745 0 70.325-57.193 127.518-127.518 127.518s-127.518-57.193-127.518-127.518c0-33.13 13.011-63.036 33.732-85.745l34.244-240.308h44.484v-59.754h30.118v59.754h44.484l34.244 240.308zM180.706 415.337v-55.808h30.118v80.535c9.306 4.94 19.365 8.433 30.118 10.119v-120.772h30.117v120.772c10.752-1.686 20.812-5.18 30.118-10.12v-80.534h30.118v55.808c13.613-16.775 22.106-37.828 22.106-61.018 0-53.73-43.7-97.43-97.4-97.43s-97.4 43.671-97.4 97.4c0 23.221 8.493 44.273 22.107 61.048zM222.6 58.353l-26.203 183.838c17.86-9.517 37.948-15.451 59.603-15.451s41.743 5.933 59.603 15.481l-26.202-183.868h-66.801z" /> +<glyph unicode="&#xe6e4;" d="M331.294 480v-304.851c0-40.026-33.792-72.553-75.294-72.553s-75.294 32.527-75.294 72.553v304.851h-150.588v-314.188c0-128.482 116.374-197.813 225.882-197.813s225.882 69.331 225.882 197.813v314.188h-150.588zM451.764 449.882v-90.353h-90.353v90.353h90.353zM150.588 449.882v-90.353h-90.353v90.353h90.353zM256-1.882c-78.697 0-195.764 44.664-195.764 167.695v163.599h90.353v-154.262c0-56.621 47.285-102.671 105.412-102.671s105.412 46.050 105.412 102.671v154.262h90.353v-163.599c0-123.031-117.067-167.695-195.764-167.695z" /> +<glyph unicode="&#xe6e5;" d="M512 299.294v-30.117h-512v30.117h512zM0 178.824h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe6e6;" d="M0 239.119h15.059v-30.117h-15.059v30.118zM71.77 208.971h28.34v30.118h-28.34v-30.118zM156.792 208.971h28.34v30.118h-28.34v-30.118zM326.897 208.941h28.341v30.118h-28.341v-30.118zM241.845 208.971h28.311v30.088h-28.31v-30.088zM411.919 208.941h28.341v30.118h-28.341v-30.118zM496.941 239.059v-30.117h15.059v30.118h-15.059z" /> +<glyph unicode="&#xe6e7;" d="M0 239.059h120.471v-30.117h-120.471v30.118zM195.764 208.941h120.471v30.118h-120.471v-30.118zM391.529 239.059v-30.117h120.471v30.118h-120.471z" /> +<glyph unicode="&#xe6e8;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764z" /> +<glyph unicode="&#xe6e9;" d="M0 480v-512h512v512h-512zM481.882-1.882h-451.764v451.764h451.764v-451.764zM90.353 239.059h30.117v-30.117h-30.118v30.118zM90.353 359.529h30.117v-30.117h-30.118v30.117zM90.353 178.824h30.117v-30.118h-30.118v30.118zM90.353 299.294h30.117v-30.117h-30.118v30.117zM90.353 419.764h30.117v-30.118h-30.118v30.118zM90.353 58.353h30.117v-30.118h-30.118v30.118zM90.353 118.588h30.117v-30.118h-30.118v30.118zM391.529 419.764h30.118v-30.118h-30.118v30.118zM391.529 299.294h30.118v-30.117h-30.118v30.117zM391.529 359.529h30.118v-30.117h-30.118v30.117zM391.529 239.059h30.118v-30.117h-30.118v30.118zM391.529 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h30.118v-30.118h-30.118v30.118zM391.529 58.353h30.118v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe6ea;" d="M60.236-1.882h30.118v-30.118h-30.117v30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM421.647 389.647h30.118v30.118h-30.118v-30.118zM421.647 329.412h30.118v30.117h-30.118v-30.117zM421.647 88.471h30.118v30.118h-30.118v-30.118zM421.647 269.177h30.118v30.117h-30.118v-30.117zM421.647 208.941h30.118v30.118h-30.118v-30.118zM421.647 28.236h30.118v30.118h-30.118v-30.118zM421.647 148.706h30.118v30.118h-30.118v-30.118zM421.647 480v-30.118h30.118v30.118h-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM60.236 88.471h30.118v30.118h-30.117v-30.118zM60.236 28.236h30.118v30.118h-30.117v-30.118zM60.236 148.706h30.118v30.118h-30.117v-30.118zM60.236 389.647h30.118v30.118h-30.117v-30.118zM60.236 329.412h30.118v30.117h-30.117v-30.117zM60.236 269.177h30.118v30.117h-30.117v-30.117zM60.236 208.941h30.118v30.118h-30.117v-30.118z" /> +<glyph unicode="&#xe6eb;" d="M210.823 389.647v30.118h-210.823v-421.647h512v391.529h-301.176zM331.294 359.529v-30.117h-120.471v30.117h120.471zM481.882 28.236h-451.764v361.412h150.588v-90.353h301.176v-271.059zM361.412 329.412v30.117h120.471v-30.117h-120.471z" /> +<glyph unicode="&#xe6ec;" d="M361.412 419.764h-361.412v-421.647h512v421.647h-150.588zM481.882 389.647v-60.236h-120.471v60.236h120.471zM331.294 389.647v-60.236h-150.588v60.236h150.588zM30.117 389.647h120.47v-60.236h-120.471v60.236zM481.882 28.236h-451.764v271.059h451.764v-271.059z" /> +<glyph unicode="&#xe6ed;" d="M180.706 449.882v-30.118h-180.706v-120.471h30.117v-120.47h150.588v-181.248h331.294v452.307h-331.294zM60.236 299.294h120.471v-30.117h-120.471v30.117zM60.236 208.941v30.118h120.471v-30.118h-120.471zM481.882 27.693h-271.059v301.719h-180.706v60.236h180.706v30.118h271.059v-392.072z" /> +<glyph unicode="&#xe6ee;" d="M210.823 419.764v30.118h-210.823v-120.38h30.117v90.262h150.588v-90.353h331.294v90.353h-301.176zM210.823 389.647h120.47v-30.118h-120.471v30.118zM361.412 359.529v30.118h120.471v-30.118h-120.471z" /> +<glyph unicode="&#xe6ef;" d="M0 449.882v-421.647h512v421.647h-512zM481.882 58.353h-451.764v361.412h451.764v-361.412zM139.927 168.162l-70.867 70.897 70.897 70.897 21.293-21.293-49.604-49.604 49.574-49.574-21.293-21.324zM350.75 189.485l49.604 49.573-49.574 49.573 21.293 21.293 70.867-70.867-70.897-70.897-21.293 21.324z" /> +<glyph unicode="&#xe6f0;" d="M60.236 58.353h391.529v331.294h-391.529v-331.294zM90.353 359.529h331.294v-271.059h-331.294v271.059zM481.882 343.537h30.118v-239.074h-30.118v239.074zM0 343.537h30.117v-239.074h-30.117v239.074z" /> +<glyph unicode="&#xe6f1;" d="M512 480v-512h-150.588v512h150.588zM271.059-32h30.118v30.118h-30.118v-30.118zM217.54-32h26.774v30.118h-26.774v-30.118zM56.892-32h26.774v30.118h-26.775v-30.118zM110.442-32h26.775v30.118h-26.775v-30.118zM163.99-32h26.774v30.118h-26.774v-30.118zM0-32h30.117v30.118h-30.117v-30.118zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 449.882h30.117v30.118h-30.117v-30.118zM244.284 480h-26.774v-30.118h26.774v30.118zM190.735 480h-26.774v-30.118h26.774v30.118zM83.636 480h-26.745v-30.118h26.775v30.118zM137.186 480h-26.745v-30.118h26.775v30.118zM271.059 449.882h30.118v30.118h-30.118v-30.118zM271.059 28.236h30.118v30.118h-30.118v-30.118zM271.059 88.471h30.118v30.118h-30.118v-30.118zM271.059 208.941h30.118v30.118h-30.118v-30.118zM271.059 148.706h30.118v30.118h-30.118v-30.118zM271.059 329.412h30.118v30.117h-30.118v-30.117zM271.059 269.177h30.118v30.117h-30.118v-30.117zM271.059 389.647h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe6f2;" d="M0-1.882h30.117v-30.118h-30.117v30.118zM421.647-32h30.118v30.118h-30.118v-30.118zM361.412-32h30.118v30.118h-30.118v-30.118zM301.176-32h30.118v30.118h-30.118v-30.118zM240.941-32h30.117v30.118h-30.118v-30.118zM180.706-32h30.118v30.118h-30.118v-30.118zM60.236-32h30.118v30.118h-30.117v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM60.236 449.882h30.118v30.118h-30.117v-30.118zM361.412 449.882h30.118v30.118h-30.118v-30.118zM301.176 449.882h30.118v30.118h-30.118v-30.118zM180.706 449.882h30.118v30.118h-30.118v-30.118zM421.647 449.882h30.118v30.118h-30.118v-30.118zM240.941 449.882h30.117v30.118h-30.118v-30.118zM0 449.882h30.117v30.118h-30.117v-30.118zM0 88.471h30.117v30.118h-30.117v-30.118zM0 28.236h30.117v30.118h-30.117v-30.118zM0 148.706h30.117v30.118h-30.117v-30.118zM0 329.412h30.117v30.117h-30.117v-30.117zM0 208.941h30.117v30.118h-30.117v-30.118zM0 389.647h30.117v30.118h-30.117v-30.118zM0 269.177h30.117v30.117h-30.117v-30.117z" /> +<glyph unicode="&#xe6f3;" d="M0 480h150.588v-512h-150.588v512zM210.823-32h30.118v30.118h-30.118v-30.118zM428.333-32h26.774v30.118h-26.774v-30.118zM374.784-32h26.774v30.118h-26.774v-30.118zM267.716-32h26.774v30.118h-26.774v-30.118zM321.265-32h26.774v30.118h-26.774v-30.118zM481.882-32h30.118v30.118h-30.118v-30.118zM481.882 389.647h30.118v30.118h-30.118v-30.118zM481.882 28.236h30.118v30.118h-30.118v-30.118zM481.882 269.177h30.118v30.117h-30.118v-30.117zM481.882 329.412h30.118v30.117h-30.118v-30.117zM481.882 208.941h30.118v30.118h-30.118v-30.118zM481.882 148.706h30.118v30.118h-30.118v-30.118zM481.882 88.471h30.118v30.118h-30.118v-30.118zM481.882 480v-30.118h30.118v30.118h-30.118zM428.363 449.882h26.774v30.118h-26.774v-30.118zM374.814 449.882h26.774v30.118h-26.774v-30.118zM321.265 449.882h26.774v30.118h-26.774v-30.118zM267.716 449.882h26.774v30.118h-26.774v-30.118zM210.823 449.882h30.118v30.118h-30.118v-30.118zM210.823 28.236h30.118v30.118h-30.118v-30.118zM210.823 88.471h30.118v30.118h-30.118v-30.118zM210.823 269.177h30.118v30.117h-30.118v-30.117zM210.823 148.706h30.118v30.118h-30.118v-30.118zM210.823 329.412h30.118v30.117h-30.118v-30.117zM210.823 389.647h30.118v30.118h-30.118v-30.118zM210.823 208.941h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe6f4;" d="M0.632 449.521v-451.764h512v451.764h-512zM245.067 223.729l-214.317-186.639v373.82l214.317-187.181zM43.941 419.404h425.803l-213.203-185.675-212.601 185.675zM256.512 213.73l212.811-185.856h-426.225l213.413 185.856zM267.987 223.729l214.528 186.85v-374.212l-214.528 187.362z" /> +<glyph unicode="&#xe6f5;" d="M0 269.177v-90.353h391.529v90.353h-391.529zM240.941 239.059v-30.117h-90.353v30.118h90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM361.412 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f6;" d="M90.353 449.882v-90.353h331.294v90.353h-331.294zM391.529 389.647h-271.059v30.118h271.059v-30.118zM90.353 239.059h331.294v90.353h-331.294v-90.353zM120.471 299.294h271.059v-30.117h-271.059v30.117zM90.353 118.678h331.294v90.353h-331.294v-90.353zM120.471 178.914h271.059v-30.118h-271.059v30.118zM90.353-1.792h331.294v90.353h-331.294v-90.353zM120.471 58.443h271.059v-30.118h-271.059v30.118z" /> +<glyph unicode="&#xe6f7;" d="M0 178.824h150.588v90.353h-150.588v-90.353zM30.117 239.059h90.353v-30.117h-90.353v30.118zM180.706 178.824h150.588v90.353h-150.588v-90.353zM210.823 239.059h90.353v-30.117h-90.353v30.118zM361.412 269.177v-90.353h150.588v90.353h-150.588zM481.882 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f8;" d="M0 269.177v-90.353h512v90.353h-512zM271.059 239.059h90.353v-30.117h-90.353v30.118zM240.941 208.941h-90.353v30.118h90.353v-30.118zM30.117 239.059h90.353v-30.117h-90.353v30.118zM481.882 208.941h-90.353v30.118h90.353v-30.118z" /> +<glyph unicode="&#xe6f9;" d="M60.236 88.471h451.764v-30.118h-451.764v30.118zM210.823-1.671h301.177v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe6fa;" d="M240.941 359.529v-271.059h271.059v271.059h-271.059zM481.882 118.588h-210.824v210.824h210.823v-210.824zM35.358 359.529h175.465v-30.117h-175.465v30.117zM105.502 239.179h105.322v-30.117h-105.322v30.118zM210.553 269.236h-210.553v30.118h210.553v-30.118zM0.271 179.034h210.553v-30.118h-210.553v30.118zM35.358 118.588h175.465v-30.118h-175.465v30.118z" /> +<glyph unicode="&#xe6fb;" d="M451.764 118.588h-391.529v30.118h391.529v-30.118zM361.412 88.682h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" /> +<glyph unicode="&#xe6fc;" d="M0 419.764v-361.412h512v361.412h-512zM30.117 178.522v211.125h451.764v-211.125h-451.764z" /> +<glyph unicode="&#xe6fd;" d="M361.412 208.941h-301.176v30.118h301.176v-30.118zM361.412 178.824h-301.176v-30.118h301.176v30.118zM512 449.882v-451.764h-512v451.764h512zM481.882 419.764h-451.764v-391.529h451.764v391.529z" /> +<glyph unicode="&#xe6fe;" d="M0 88.471h451.764v-30.118h-451.764v30.118zM0-1.671h301.176v30.118h-301.176v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe6ff;" d="M301.176 359.529h175.465v-30.117h-175.466v30.117zM301.176 239.179h105.322v-30.117h-105.322v30.118zM301.447 299.355h210.553v-30.118h-210.553v30.118zM301.176 179.034h210.553v-30.118h-210.553v30.118zM301.176 118.588h175.465v-30.118h-175.466v30.118zM0 88.471h271.059v271.059h-271.059v-271.059zM30.117 329.412h210.823v-210.824h-210.823v210.824z" /> +<glyph unicode="&#xe700;" d="M30.117 88.471h451.764v-30.118h-451.764v30.118zM120.471-1.671h271.059v30.118h-271.059v-30.118zM512 449.882v-331.294h-512v331.294h512zM481.882 419.764h-451.764v-271.059h451.764v271.059z" /> +<glyph unicode="&#xe701;" d="M30.117 359.529v-180.706h451.764v180.706h-451.764zM451.764 208.941h-391.529v120.471h391.529v-120.471zM421.647 148.706v-30.118h-331.294v30.118h331.294zM60.236 88.471h391.529v-30.118h-391.529v30.118z" /> +<glyph unicode="&#xe702;" d="M451.764 359.529h-271.059v30.118h271.059v-30.118zM180.706 329.412v-30.118h331.294v30.118h-331.294zM0 419.764h150.588v-150.588h-150.588v150.588zM30.117 299.294h90.353v90.353h-90.353v-90.353zM451.764 178.824h-271.059v-30.118h271.059v30.118zM180.706 88.471h331.294v30.118h-331.294v-30.118zM0 208.941h150.588v-150.588h-150.588v150.588zM30.117 88.471h90.353v90.353h-90.353v-90.353z" /> +<glyph unicode="&#xe703;" d="M451.764 329.412h-271.059v30.117h271.059v-30.117zM180.706 299.294v-30.117h331.294v30.117h-331.294zM0 239.059h150.588v150.588h-150.588v-150.588zM451.764 148.706h-271.059v-30.118h271.059v30.118zM180.706 58.353h331.294v30.118h-331.294v-30.118zM0 28.236h150.588v150.588h-150.588v-150.588z" /> +<glyph unicode="&#xe704;" d="M421.647 329.412h-421.647v60.236h421.647v-60.236zM0 299.294v-30.117h512v30.117h-512zM421.647 178.824h-421.647v-60.236h421.647v60.236zM0 58.353h512v30.118h-512v-30.118z" /> +<glyph unicode="&#xe705;" d="M496.851 329.412h-75.204v30.117h75.204v-30.117zM466.793 239.179h-45.147v-30.117h45.147v30.118zM421.767 299.355v-30.118h90.233v30.118h-90.233zM421.647 148.916h90.233v30.118h-90.233v-30.118zM421.647 88.471h75.204v30.118h-75.204v-30.118zM0 359.529h391.529v-271.059h-391.529v271.059zM30.117 118.588h331.294v210.824h-331.294v-210.824z" /> +<glyph unicode="&#xe706;" d="M512 239.059v-30.117h-512v30.118h512z" /> +<glyph unicode="&#xe707;" d="M30.117 359.529h90.353v90.353h-90.353v-90.353zM60.236 419.764h30.118v-30.118h-30.117v30.118zM150.588 359.529h90.353v90.353h-90.353v-90.353zM180.706 419.764h30.118v-30.118h-30.118v30.118zM271.059 359.529h90.353v90.353h-90.353v-90.353zM301.176 419.764h30.118v-30.118h-30.118v30.118zM391.529 449.882v-90.353h90.353v90.353h-90.353zM451.764 389.647h-30.118v30.118h30.118v-30.118zM30.117 239.059h90.353v90.353h-90.353v-90.353zM60.236 299.294h30.118v-30.117h-30.117v30.117zM150.588 239.059h90.353v90.353h-90.353v-90.353zM180.706 299.294h30.118v-30.117h-30.118v30.117zM271.059 239.059h90.353v90.353h-90.353v-90.353zM301.176 299.294h30.118v-30.117h-30.118v30.117zM391.529 239.059h90.353v90.353h-90.353v-90.353zM421.647 299.294h30.118v-30.117h-30.118v30.117zM30.117 118.588h90.353v90.353h-90.353v-90.353zM60.236 178.824h30.118v-30.118h-30.117v30.118zM150.588 118.588h90.353v90.353h-90.353v-90.353zM180.706 178.824h30.118v-30.118h-30.118v30.118zM271.059 118.588h90.353v90.353h-90.353v-90.353zM301.176 178.824h30.118v-30.118h-30.118v30.118zM391.529 118.588h90.353v90.353h-90.353v-90.353zM421.647 178.824h30.118v-30.118h-30.118v30.118zM30.117-1.882h90.353v90.353h-90.353v-90.353zM60.236 58.353h30.118v-30.118h-30.117v30.118zM150.588-1.882h90.353v90.353h-90.353v-90.353zM180.706 58.353h30.118v-30.118h-30.118v30.118zM271.059-1.882h90.353v90.353h-90.353v-90.353zM301.176 58.353h30.118v-30.118h-30.118v30.118zM391.529-1.882h90.353v90.353h-90.353v-90.353zM421.647 58.353h30.118v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe708;" d="M0 329.412h150.588v150.588h-150.588v-150.588zM30.117 449.882h90.353v-90.353h-90.353v90.353zM180.706 329.412h150.588v150.588h-150.588v-150.588zM210.823 449.882h90.353v-90.353h-90.353v90.353zM361.412 480v-150.588h150.588v150.588h-150.588zM481.882 359.529h-90.353v90.353h90.353v-90.353zM0 148.706h150.588v150.588h-150.588v-150.588zM30.117 269.177h90.353v-90.353h-90.353v90.353zM180.706 148.706h150.588v150.588h-150.588v-150.588zM210.823 269.177h90.353v-90.353h-90.353v90.353zM361.412 148.706h150.588v150.588h-150.588v-150.588zM391.529 269.177h90.353v-90.353h-90.353v90.353zM0-32h150.588v150.588h-150.588v-150.588zM30.117 88.471h90.353v-90.353h-90.353v90.353zM180.706-32h150.588v150.588h-150.588v-150.588zM210.823 88.471h90.353v-90.353h-90.353v90.353zM361.412-32h150.588v150.588h-150.588v-150.588zM391.529 88.471h90.353v-90.353h-90.353v90.353z" /> +<glyph unicode="&#xe709;" d="M0 269.177h210.823v210.823h-210.823v-210.823zM30.117 449.882h150.588v-150.588h-150.588v150.588zM271.059 480v-210.823h210.824v210.823h-210.823zM451.764 299.294h-150.588v150.588h150.588v-150.588zM0-1.882h210.823v210.824h-210.823v-210.823zM30.117 178.824h150.588v-150.588h-150.588v150.588zM271.059-1.882h210.824v210.824h-210.823v-210.823zM301.176 178.824h150.588v-150.588h-150.588v150.588z" /> +<glyph unicode="&#xe70a;" d="M0 419.764h90.353v-90.353h-90.353v90.353zM271.059 329.412h90.353v90.353h-90.353v-90.353zM0 88.471h90.353v90.353h-90.353v-90.353zM271.059 88.471h90.353v90.353h-90.353v-90.353zM120.471 389.647h120.471v30.118h-120.471v-30.118zM120.471 329.412h120.471v30.117h-120.471v-30.117zM391.529 419.764v-30.118h120.471v30.118h-120.471zM391.529 329.412h120.471v30.117h-120.471v-30.117zM210.823 299.324h-90.353v-30.118h90.353v30.118zM481.882 299.324h-90.353v-30.118h90.353v30.118zM120.471 148.706h120.471v30.118h-120.471v-30.118zM120.471 88.471h120.471v30.118h-120.471v-30.118zM391.529 148.706h120.471v30.118h-120.471v-30.118zM391.529 88.471h120.471v30.118h-120.471v-30.118zM120.471 28.265h90.353v30.118h-90.353v-30.118zM391.529 28.265h90.353v30.118h-90.353v-30.118z" /> +<glyph unicode="&#xe70b;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM421.647 239.059h-301.176v30.118h301.176v-30.118zM271.059 208.941h150.588v-60.236h-150.588v60.236z" /> +<glyph unicode="&#xe70c;" d="M0 389.647v-331.294h512v331.294h-512zM481.882 88.471h-451.764v271.059h451.764v-271.059zM391.529 239.059h-301.176v30.118h301.176v-30.118zM240.941 148.706h-150.588v60.236h150.588v-60.236z" /> +<glyph unicode="&#xe70d;" d="M421.647 239.059h-331.294v30.118h331.294v-30.118zM512 389.647v-331.294h-512v331.294h512zM481.882 359.529h-451.764v-271.059h451.764v271.059zM191.458 148.706h129.084v60.236h-129.084v-60.236z" /> +<glyph unicode="&#xe70e;" d="M271.059 269.177h-210.823v30.117h210.823v-30.117zM120.26 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM451.764 299.294h-150.588v-60.235h150.588v60.235z" /> +<glyph unicode="&#xe70f;" d="M451.764 269.177h-210.823v30.117h210.823v-30.117zM241.152 208.941h150.588v30.118h-150.588v-30.118zM512 389.647v-301.176h-512v301.176h512zM481.882 359.529h-451.764v-240.941h451.764v240.941zM210.823 299.294h-150.588v-60.235h150.588v60.235z" /> +<glyph unicode="&#xe710;" d="M30.117-32h90.353v512h-90.353v-512zM60.236 449.882h30.118v-451.764h-30.117v451.764zM150.588-32h90.353v512h-90.353v-512zM180.706 449.882h30.118v-451.764h-30.118v451.764zM271.059-32h90.353v512h-90.353v-512zM301.176 449.882h30.118v-451.764h-30.118v451.764zM391.529 480v-512h90.353v512h-90.353zM451.764-1.882h-30.118v451.764h30.118v-451.764z" /> +<glyph unicode="&#xe711;" d="M0-32h150.588v512h-150.588v-512zM30.117 449.882h90.353v-451.764h-90.353v451.764zM180.706-32h150.588v512h-150.588v-512zM210.823 449.882h90.353v-451.764h-90.353v451.764zM361.412 480v-512h150.588v512h-150.588zM481.882-1.882h-90.353v451.764h90.353v-451.764z" /> +<glyph unicode="&#xe712;" d="M0-32h240.941v512h-240.941v-512zM30.117 449.882h180.706v-451.764h-180.706v451.764zM271.059 480v-512h240.941v512h-240.941zM481.882-1.882h-180.706v451.764h180.706v-451.764z" /> +<glyph unicode="&#xe713;" d="M0 480v-90.353h512v90.353h-512zM481.882 419.764h-451.764v30.118h451.764v-30.118zM0 88.471h512v271.059h-512v-271.059zM30.117 329.412h451.764v-210.824h-451.764v210.824zM0-32h512v90.353h-512v-90.353zM30.117 28.236h451.764v-30.118h-451.764v30.118z" /> +<glyph unicode="&#xe714;" d="M0 480v-512h512v512h-512zM481.882 449.882v-271.059h-451.764v271.059h451.764zM481.882 148.706v-60.236h-451.764v60.236h451.764zM30.117-1.882v60.236h451.764v-60.236h-451.764z" /> +<glyph unicode="&#xe715;" d="M120.471 480v-271.059h391.529v271.059h-391.529zM481.882 239.059h-331.294v210.823h331.294v-210.823zM0 389.647h90.353v90.353h-90.353v-90.353zM30.117 449.882h30.117v-30.118h-30.117v30.118zM120.471 88.471h391.529v90.353h-391.529v-90.353zM150.588 148.706h331.294v-30.118h-331.294v30.118zM0 88.471h90.353v90.353h-90.353v-90.353zM30.117 148.706h30.117v-30.118h-30.117v30.118zM120.471-32h391.529v90.353h-391.529v-90.353zM150.588 28.236h331.294v-30.118h-331.294v30.118zM0-32h90.353v90.353h-90.353v-90.353zM30.117 28.236h30.117v-30.118h-30.117v30.118z" /> +<glyph unicode="&#xe716;" d="M90.353 480v-195.735l164.623-286.087 166.671 286.058v195.764h-331.294zM255.126 58.353h0.060l-0.030-0.060-0.030 0.060zM256 299.294c-16.625 0-30.118 13.523-30.118 30.118s13.493 30.117 30.118 30.117 30.118-13.523 30.118-30.117-13.493-30.118-30.118-30.118zM391.529 292.367l-120.471-206.788v185.736c25.901 6.716 45.176 30.118 45.176 58.097 0 33.22-27.015 60.236-60.236 60.236s-60.236-27.015-60.236-60.236c0-27.979 19.275-51.38 45.177-58.097v-188.356l-120.471 209.378v157.546h271.059v-157.515z" /> +<glyph unicode="&#xe717;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM271.059 107.475h29.485v-30.118h-89.088v30.118h29.485v133.12h-28.492v30.118h58.609v-163.238zM216.395 329.833c0 16.414 13.282 29.696 29.696 29.696s29.666-13.282 29.666-29.696c0-16.354-13.252-29.636-29.666-29.636s-29.696 13.282-29.696 29.636z" /> +<glyph unicode="&#xe718;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM290.876 111.993c0-17.107-13.914-31.051-31.051-31.051-17.197 0-31.112 13.945-31.112 31.051 0 17.167 13.915 31.082 31.112 31.082 17.137 0 31.051-13.884 31.051-31.082zM321.115 353.054c13.493-17.016 20.3-39.996 16.565-55.868-7.319-30.931-25.359-47.195-41.291-61.531-16.354-14.728-28.13-25.299-28.13-49.604h-30.118c0 37.677 20.209 55.899 38.069 71.981 13.884 12.499 26.986 24.305 32.106 46.050 1.024 4.307-1.175 18.070-10.842 30.268-9.246 11.716-21.925 17.649-37.587 17.649-53.579 0-56.29-43.49-56.411-48.459l-30.118 0.813c0.723 26.895 19.727 77.764 86.528 77.764 24.636 0 46.351-10.33 61.229-29.063z" /> +<glyph unicode="&#xe719;" d="M471.884 298.782c-28.822 107.128-116.344 181.218-215.884 181.218-99.238 0-187.091-74.21-215.883-181.218-22.498-2.47-40.117-21.444-40.117-44.665v-120.471c0-18.824 11.505-34.937 27.828-41.713 5.843-52.615 50.086-93.817 104.237-93.817h81.529c6.234-17.498 22.799-30.117 42.406-30.117h90.353c24.907 0 45.176 20.269 45.176 45.176s-20.269 45.176-45.176 45.176h-90.353c-19.607 0-36.172-12.62-42.406-30.118h-81.529c-36.382 0-66.771 25.901-73.758 60.236h32.045v30.118h30.118v150.588h-30.118v30.118h-18.251c27.498 89.178 100.954 150.588 183.899 150.588 83.185 0 156.401-61.35 183.899-150.588h-18.252v-30.118h-30.118v-150.588h30.118v-30.118h45.357c24.817 0 44.996 20.269 44.996 45.176v120.471c0 23.221-17.619 42.195-40.116 44.664zM256 28.236h90.353c8.283 0 15.059-6.747 15.059-15.059s-6.776-15.059-15.059-15.059h-90.353c-8.282 0-15.059 6.747-15.059 15.059s6.776 15.059 15.059 15.059zM60.236 118.588h-15.239c-8.192 0-14.878 6.747-14.878 15.059v120.471c0 8.313 6.686 15.059 14.878 15.059h15.239v-150.588zM481.882 133.647c0-8.313-6.686-15.059-14.878-15.059h-15.24v150.588h15.24c8.192 0 14.878-6.746 14.878-15.059v-120.471z" /> +<glyph unicode="&#xe71a;" d="M436.706 231.951v-95.955c0-20.179-9.698-46.833-18.252-70.325-5.572-15.269-11.866-32.587-11.866-39.454v-25.75c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v25.75c0 12.168 6.053 28.762 13.673 49.755 7.71 21.142 16.444 45.116 16.444 59.995v95.985c0 8.734-7.108 16.113-15.541 16.113-8.795 0-13.673-7.891-13.945-15.661-0.271-8.192-6.295-15.269-15.3-14.517-8.192 0.151-14.788 6.867-14.788 15.059v47.044c0 8.915-6.837 16.173-15.209 16.173-7.951 0-14.577-6.626-15.119-15.059-0.512-8.132-6.867-14.607-15.51-14.095-8.132 0.271-14.577 6.927-14.577 15.059v38.159c0 8.885-6.747 16.113-15.059 16.113-7.8 0-14.668-6.084-15.691-13.884-1.024-7.831-7.891-13.884-15.902-13.071-7.921 0.512-14.095 7.077-14.095 15.029v109.357c0 8.885-6.837 16.113-15.209 16.113s-15.209-7.228-15.209-16.113v-186.127c0-6.204-3.795-11.776-9.577-14.035-5.752-2.259-12.348-0.723-16.565 3.825l-33.551 36.472c-13.824 13.915-18.281 11.264-22.528 8.644-7.409-4.397-9.969-14.577-5.662-22.287l99.027-213.775c1.596-2.74 4.97-5.361 8.945-6.355 6.716-1.716 11.385-7.71 11.385-14.607v-25.058c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059v15.029c-7.018 4.036-12.86 9.939-17.017 17.288l-98.996 213.775c-11.836 20.902-4.427 49.122 17.017 61.862 28.913 17.317 51.291-5.21 59.693-13.673l7.831-8.493v147.516c0 25.51 20.359 46.231 45.327 46.231s45.327-20.721 45.327-46.231v-70.023c4.879 1.747 10.119 2.71 15.571 2.71 23.823 0 43.37-18.944 45.056-42.887 4.759 1.777 9.878 2.71 15.209 2.71 24.998 0 45.327-20.751 45.327-46.291v-4.096c4.367 1.476 9.036 2.259 13.945 2.259 25.148 0.030 45.628-20.721 45.628-46.201z" /> +<glyph unicode="&#xe71b;" d="M509.651 254.298c0-24.968-20.721-45.297-46.231-45.297h-70.024c1.777-4.879 2.74-10.149 2.74-15.601 0-23.823-18.944-43.37-42.887-45.056 1.747-4.759 2.68-9.849 2.68-15.18 0-24.998-20.751-45.357-46.26-45.357h-4.096c1.476-4.367 2.259-9.036 2.259-13.945 0-25.148-20.781-45.628-46.26-45.628h-95.924c-20.179 0-46.833 9.698-70.355 18.252-15.27 5.572-32.557 11.866-39.424 11.866h-25.75c-8.313 0-15.059 6.747-15.059 15.059s6.746 15.059 15.059 15.059h25.75c12.137 0 28.732-6.024 49.694-13.673 21.203-7.71 45.207-16.444 60.084-16.444h95.924c8.764 0 16.143 7.108 16.143 15.541 0 8.795-7.891 13.673-15.661 13.945-8.192 0.301-14.667 7.108-14.517 15.33s6.867 14.788 15.059 14.788h47.044c8.915 0 16.143 6.837 16.143 15.24 0 7.951-6.596 14.547-14.998 15.089-8.162 0.512-14.396 7.349-14.156 15.51 0.271 8.132 6.897 14.577 15.059 14.577h38.189c8.885 0 16.113 6.776 16.113 15.059 0 7.8-6.114 14.697-13.914 15.692-7.861 1.024-13.583 8.012-13.071 15.902 0.542 7.951 7.077 14.095 15.029 14.095h109.357c8.885 0 16.113 6.806 16.113 15.179 0 8.403-7.228 15.24-16.113 15.24h-186.127c-6.204 0-11.776 3.795-14.035 9.577s-0.692 12.348 3.855 16.565l36.472 33.521c13.854 13.824 11.204 18.221 8.644 22.528-4.457 7.499-14.457 10.089-22.348 5.662l-213.745-98.997c-2.68-1.566-5.3-4.939-6.355-8.945-1.656-6.716-7.65-11.385-14.577-11.385h-25.058c-8.313 0-15.059 6.746-15.059 15.059s6.746 15.059 15.059 15.059h15.029c4.036 7.018 9.909 12.891 17.258 16.987l213.775 99.027c20.872 11.746 49.152 4.397 61.892-17.016 17.288-28.822-5.211-51.26-13.644-59.693l-8.493-7.83h147.486c25.479 0 46.231-20.36 46.231-45.357z" /> +<glyph unicode="&#xe71c;" d="M494.592 73.412c0-8.313-6.747-15.059-15.059-15.059h-25.75c-6.837 0-24.154-6.295-39.424-11.866-23.522-8.553-50.176-18.252-70.355-18.252h-95.924c-25.51 0-46.261 20.48-46.261 45.659 0 4.909 0.783 9.577 2.259 13.945h-4.066c-25.51 0-46.261 20.36-46.261 45.357 0 5.331 0.934 10.421 2.68 15.18-23.944 1.656-42.888 21.203-42.888 45.026 0 5.452 0.964 10.692 2.74 15.601h-70.053c-25.509 0-46.23 20.329-46.23 45.297 0 24.997 20.721 45.357 46.23 45.357h147.486l-8.012 7.379c-8.915 8.885-31.412 31.322-14.095 60.175 12.74 21.384 40.96 28.763 62.886 16.475l211.667-97.942c8.072-4.488 14.185-10.481 18.281-17.559h15.059c8.313 0 15.059-6.747 15.059-15.059s-6.747-15.059-15.059-15.059h-25.028c-6.897 0-12.921 4.668-14.607 11.385-1.024 4.006-3.644 7.379-7.379 9.487l-211.667 97.913c-8.855 4.94-18.884 2.409-23.341-5.090-2.59-4.337-5.24-8.734 9.036-23.010l36.020-33.069c4.578-4.216 6.084-10.752 3.825-16.565s-7.831-9.577-14.035-9.577h-186.127c-8.855 0-16.083-6.837-16.083-15.239 0-8.373 7.228-15.179 16.113-15.179h109.357c7.951 0 14.517-6.144 15.029-14.095 0.512-7.921-5.21-14.878-13.071-15.902-7.8-0.994-13.884-7.921-13.884-15.721 0-8.283 7.228-15.059 16.113-15.059h38.189c8.132 0 14.818-6.476 15.059-14.577 0.241-8.162-6.024-14.998-14.125-15.51-8.433-0.542-15.029-7.138-15.029-15.089 0-8.403 7.258-15.24 16.143-15.24h47.044c8.222 0 14.908-6.596 15.059-14.788s-6.325-15.029-14.517-15.33c-7.77-0.271-15.661-5.15-15.661-13.945 0-8.403 7.409-15.51 16.143-15.51h95.924c14.878 0 38.882 8.734 60.055 16.444 20.962 7.65 37.556 13.673 49.694 13.673h25.75c8.342 0 15.089-6.747 15.089-15.059z" /> +<glyph unicode="&#xe71d;" d="M414.208 139.58c-28.793-17.378-51.26 5.211-59.693 13.673l-7.83 8.493v-147.516c0-25.51-20.329-46.231-45.327-46.231s-45.327 20.721-45.327 46.231v70.024c-4.879-1.777-10.119-2.74-15.571-2.74-23.793 0-43.369 18.944-45.056 42.887-4.758-1.777-9.879-2.711-15.209-2.711-24.998 0-45.327 20.751-45.327 46.291v4.096c-4.367-1.476-9.035-2.259-13.945-2.259-25.148 0-45.628 20.751-45.628 46.231v95.955c0 20.179 9.698 46.833 18.252 70.325 5.572 15.269 11.867 32.587 11.867 39.424v25.781c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059v-25.75c0-12.168-6.024-28.762-13.674-49.755-7.71-21.173-16.444-45.147-16.444-60.024v-95.955c0-8.734 7.108-16.113 15.54-16.113 8.794 0 13.674 7.891 13.944 15.661 0.301 8.132 6.957 14.517 15.059 14.517 0.090 0 0.18 0 0.271 0 8.192-0.15 14.788-6.867 14.788-15.059v-47.044c0-8.915 6.837-16.173 15.209-16.173 7.951 0 14.577 6.626 15.119 15.059 0.482 8.101 7.077 14.156 15.481 14.095 8.132-0.271 14.577-6.927 14.577-15.059v-38.189c0-8.885 6.776-16.113 15.059-16.113 7.8 0 14.667 6.084 15.691 13.884 1.024 7.861 8.041 13.974 15.902 13.101 7.921-0.512 14.095-7.077 14.095-15.029v-109.357c0-8.885 6.837-16.113 15.209-16.113s15.209 7.228 15.209 16.113v186.127c0 6.204 3.795 11.776 9.577 14.035 5.692 2.259 12.318 0.723 16.565-3.825l33.551-36.473c13.824-13.914 18.281-11.234 22.528-8.644 7.409 4.397 9.969 14.577 5.662 22.287l-99.027 213.775c-1.596 2.74-4.94 5.361-8.945 6.355-6.686 1.687-11.385 7.68-11.385 14.607v25.058c0 8.313 6.747 15.059 15.059 15.059s15.059-6.746 15.059-15.059v-15.029c7.017-4.036 12.89-9.939 16.986-17.288l99.027-213.775c11.836-20.901 4.457-49.122-17.017-61.861z" /> +<glyph unicode="&#xe71e;" d="M391.529 178.824v301.176h-391.529v-391.529h391.529v90.353zM30.117 449.882h331.294v-240.941h-22.739l-77.221 99.961-34.906-36.563-67.704 116.887-107.701-180.284h-21.022v240.941zM300.635 208.941h-214.407l72.222 120.892 62.163-107.339 38.4 40.267 41.623-53.82zM30.117 118.588v60.236h331.294v-60.236h-331.294zM512 389.647v-391.529h-391.529v59.753h30.118v-29.636h331.294v331.294h-60.236v30.118h90.353z" /> +<glyph unicode="&#xe71f;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 208.941c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.529c0 8.313 6.746 15.059 15.059 15.059s15.059-6.747 15.059-15.059c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412c0 8.313 6.747 15.059 15.059 15.059s15.059-6.747 15.059-15.059zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" /> +<glyph unicode="&#xe720;" d="M256 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256-114.839 256-256 256zM256-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM391.529 88.471c0-8.313-6.747-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 58.127-47.284 105.412-105.412 105.412s-105.412-47.284-105.412-105.412c0-8.313-6.746-15.059-15.059-15.059s-15.059 6.747-15.059 15.059c0 74.722 60.808 135.53 135.53 135.53s135.53-60.807 135.53-135.53zM135.53 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118zM316.236 314.353c0 16.625 13.493 30.118 30.118 30.118s30.118-13.493 30.118-30.118-13.493-30.118-30.118-30.118-30.118 13.493-30.118 30.118z" /> +<glyph unicode="&#xe721;" d="M466.824 419.764h-421.647c-24.907 0-45.176-20.269-45.176-45.177v-301.176c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v301.176c0 24.907-20.269 45.176-45.176 45.176zM481.882 73.412c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v165.647h451.764v-165.647zM30.117 329.412v45.176c0 8.282 6.746 15.059 15.059 15.059h421.647c8.313 0 15.059-6.777 15.059-15.059v-45.176h-451.764z" /> +<glyph unicode="&#xe722;" d="M90.353 41.156l219.286 183.627-219.286 181.851v-365.478zM120.471 342.543l142.125-117.88-142.125-118.995v236.875zM421.647 419.764v-391.529h-30.118v391.529h30.118z" /> +<glyph unicode="&#xe723;" d="M202.361 223.217l219.286-181.851v365.478l-219.286-183.627zM391.529 105.457l-142.125 117.88 142.125 118.995v-236.875zM90.353 419.764h30.117v-391.529h-30.118v391.529z" /> +<glyph unicode="&#xe724;" d="M256 404.706c-99.659 0-180.706-81.047-180.706-180.706s81.047-180.706 180.706-180.706 180.706 81.046 180.706 180.706-81.046 180.706-180.706 180.706zM256 73.412c-83.034 0-150.588 67.554-150.588 150.588s67.554 150.588 150.588 150.588 150.588-67.554 150.588-150.588-67.554-150.588-150.588-150.588z" /> +<glyph unicode="&#xe725;" d="M255.217 398.11l-181.851-219.286h365.478l-183.627 219.286zM255.338 351.067l118.995-142.125h-236.875l117.88 142.125zM451.764 88.471v-30.118h-391.529v30.118h391.529z" /> +<glyph unicode="&#xe726;" d="M391.529 239.059h30.118c0-74.722-60.808-135.53-135.53-135.53s-135.53 60.808-135.53 135.53h30.118c0-58.127 47.285-105.412 105.412-105.412s105.412 47.284 105.412 105.412zM225.882 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.463 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.463-30.118 30.118-30.118zM346.353 284.236c16.655 0 30.118 13.462 30.118 30.118s-13.462 30.118-30.118 30.118-30.118-13.462-30.118-30.118 13.462-30.118 30.118-30.118zM512 254.118c0-124.567-101.316-225.882-225.882-225.882-40.358 0-79.751 10.812-114.537 31.353l-165.647-85.625 85.624 165.617c-20.51 34.786-31.323 74.18-31.323 114.537 0 124.566 101.316 225.882 225.882 225.882s225.882-101.316 225.882-225.882zM481.882 254.118c0 107.942-87.823 195.764-195.764 195.764s-195.764-87.823-195.764-195.764c0-37.466 10.782-74.060 31.202-105.743l4.728-7.318-50.116-96.918 96.888 50.116 7.319-4.728c31.714-20.389 68.246-31.172 105.743-31.172 107.942 0 195.764 87.823 195.764 195.764z" /> +<glyph unicode="&#xe727;" d="M512 253.184c0 24.907-20.269 45.177-45.176 45.177h-144.805l8.584 27.528 0.692 108.935c0 24.907-20.269 45.176-45.176 45.176h-60.236c-24.907 0-45.177-20.269-45.177-45.176v-103.966l9.337-32.527h-144.866c-24.907 0-45.176-20.269-45.176-45.177v-104.99h28.070l-23.070-180.164h502.001l-23.070 180.164h28.070v105.020zM472.787-1.882h-51.14v60.236h-30.118v-60.236h-30.118v90.353h-30.118v-90.353h-30.118v120.471h-30.118v-120.471h-150.588v60.236h-30.118v-60.236h-51.14l19.215 150.046h395.144l19.215-150.046zM31.924 178.281h-1.807v74.903c0 8.312 6.746 15.059 15.059 15.059h185.675l-20.028 64.904v101.677c0 8.313 6.746 15.059 15.059 15.059h60.236c8.313 0 15.059-6.746 15.059-15.059v-102.189l-20.089-64.392h185.736c8.313 0 15.059-6.747 15.059-15.059v-74.872h-449.957zM240.941 419.764h30.117v-30.118h-30.118v30.118z" /> +<glyph unicode="&#xe728;" d="M250.006 286.584c13.162 0 23.16 4.849 30.299 14.577 5.452 7.138 7.981 18.583 7.981 33.732v49.995c0 15.149-2.53 26.292-7.981 33.43-7.168 9.668-17.167 14.547-30.298 14.547-12.891 0-22.889-4.849-29.967-14.547-5.452-7.168-8.012-18.312-8.012-33.461v-49.995c0-15.149 2.56-26.292 8.012-33.732 7.077-9.698 17.077-14.547 29.967-14.547zM237.719 390.009c0 13.131 4.006 19.697 12.288 19.697 8.584 0 12.288-6.566 12.288-19.697v-59.995c0-13.161-3.704-19.998-12.288-19.998-8.282 0-12.288 6.867-12.288 19.998v59.995zM311.717 297.156c-1.445 4.307-2.259 11.143-2.259 21.413v112.58h25.991v-104.839c0-6.024 0-9.427 0.301-10.029 0.572-4.006 2.56-6.264 5.993-6.264 5.12 0 10.541 4.006 16.264 12.288v108.845h25.991v-142.577h-25.991v15.721c-10.27-11.987-19.968-17.709-29.455-17.709-8.283 0-14.276 3.404-16.836 10.571zM410.594 124.281v-13.132h-25.721v13.132c0 12.86 4.307 19.456 12.86 19.456 8.553-0.030 12.86-6.596 12.86-19.456zM131.132 426.572c-6.264 17.709-12.529 35.719-18.582 53.428h30.329l20.269-75.144 19.426 75.144h29.154l-34.575-113.995v-77.433h-28.552v77.433c-2.59 14.005-8.313 34.003-17.468 60.567zM460.288 215.416c-5.15 22.588-23.733 39.153-45.719 41.713-52.586 5.722-105.743 5.722-158.6 5.722s-106.014 0-158.298-5.722c-22.227-2.56-40.538-19.125-45.959-41.713-7.138-31.985-7.439-66.861-7.439-99.99 0-32.858 0-67.976 7.439-99.99 5.15-22.588 23.732-39.153 45.718-41.442 52.556-5.993 105.713-5.993 158.57-5.993s106.014 0 158.6 5.993c21.956 2.289 40.267 18.853 45.719 41.442 7.138 31.985 7.439 67.132 7.439 99.99-0.030 33.13-0.030 68.005-7.469 99.99zM165.135 186.564h-30.54v-162.575h-28.582v162.575h-30.028v26.865h89.148v-26.865zM242.297 23.988h-25.45v15.42c-10.3-11.716-19.998-17.438-29.154-17.438-8.252 0-14.276 3.433-16.565 10.572-1.446 4.276-2.289 10.873-2.289 20.841v111.707h25.45v-103.996c0-6.024 0-9.156 0.271-10.029 0.602-3.976 2.59-5.993 5.994-5.993 5.18 0 10.601 3.976 16.293 11.987v108.002h25.45v-141.071zM339.456 66.274c0-13.161-0.603-22.558-2.59-28.551-3.132-10.3-10.3-15.721-20.3-15.721-9.125 0-18.010 5.15-26.594 15.721v-13.733h-25.389v189.44h25.389v-62.012c8.283 10.3 17.167 15.42 26.594 15.42 9.999 0 17.167-5.421 20.3-15.993 1.988-5.723 2.59-15.119 2.59-28.281v-56.29zM436.013 89.705h-51.14v-24.847c0-13.161 4.307-19.697 13.161-19.697 6.295 0 9.999 3.404 11.445 10.27 0.271 1.416 0.572 7.138 0.572 17.438h25.991v-3.735c0-8.283 0-14.005-0.572-16.565-0.603-5.692-2.892-10.842-5.993-15.42-6.897-9.999-17.438-15.149-30.841-15.149-13.433 0-23.462 4.849-30.87 14.577-5.421 6.867-8.283 18.010-8.283 33.159v49.423c0 15.149 2.59 25.991 8.012 33.159 7.439 9.728 17.438 14.577 30.599 14.577 12.89 0 22.86-4.849 30.268-14.577 5.18-7.138 7.74-17.98 7.74-33.159v-29.455zM314.007 124.582v-60.296c0-12.86-3.735-19.125-11.144-19.125-4.307 0-8.584 1.988-12.89 6.264v85.986c4.307 4.307 8.584 6.295 12.89 6.295 7.409 0 11.144-6.565 11.144-19.125z" /> +<glyph unicode="&#xe729;" d="M471.763 398.983c-12.529 15.902-34.033 24.335-62.132 24.335-7.951 0-15.692-0.693-22.829-1.777-26.172-4.397-90.925-37.105-112.82-105.954-1.536-4.758-0.572-9.999 2.56-13.944 3.132-3.916 8.101-6.054 13.041-5.632 16.926 1.356 29.575 0.362 33.491-4.005 3.132-3.404 4.276-11.625 3.192-23.13-1.385-15.36-10.029-33.1-19.094-50.447-4.367-7.951-17.709-32.377-25.962-32.377-1.957 0-5.090 2.078-8.313 5.541-15.481 16.716-18.673 48.58-21.413 76.74-0.964 9.276-1.837 18.131-3.132 26.504l-2.078 11.776c-2.861 16.565-6.114 35.328-11.264 52.074-6.204 19.396-21.052 44.394-42.797 51.14-4.698 1.325-9.819 1.988-15.149 1.988-20.721 0-39.334-9.909-44.604-12.981-22.076-13.101-39.936-29.154-57.224-44.694-13.041-11.686-26.504-23.823-41.743-34.575-3.976-2.831-6.355-10.089-6.355-14.969 0-5.692 3.192-10.902 8.313-13.463 1.687-0.873 1.928-1.265 3.283-3.915 2.169-4.216 6.656-12.921 19.276-14.939 11.173-1.656 21.655 1.627 30.358 4.367 4.728 1.506 9.216 2.891 12.138 2.891 1.054 0 2.289 0 4.788-4.186 5.21-8.704 8.072-18.643 11.084-29.184 1.566-5.361 3.102-10.722 4.999-16.263 6.686-18.402 11.806-38.49 17.197-59.753l4.728-18.884c10.782-44.423 25.57-105.201 66.831-122.519 6.234-2.651 13.342-4.005 21.173-4.005 20.149 0 41.472 8.854 53.308 16.264 35.117 20.691 67.493 51.26 98.906 93.485 57.555 77.041 93.004 169.863 99.178 202.451 4.909 26.082 1.356 46.381-10.933 62.042zM453.12 342.543c-4.397-23.13-34.726-111.074-93.726-190.012-29.003-39.002-58.428-66.981-90.383-85.805-11.866-7.409-35.75-15.089-47.104-10.27-27.316 11.475-40.026 63.729-49.303 101.918l-4.849 19.245c-5.572 21.956-10.873 42.737-17.95 62.344-1.686 4.819-3.072 9.698-4.488 14.517-3.404 11.897-6.957 24.214-14.185 36.262-7.409 12.529-17.709 18.884-30.63 18.884-7.559 0-14.457-2.168-21.142-4.276-4.788-1.506-9.337-2.922-14.427-3.222-0.391 0.692-0.813 1.506-1.325 2.349 11.385 8.975 21.684 18.221 31.744 27.287 16.926 15.239 32.918 29.606 52.345 41.111 6.988 4.066 18.853 8.824 29.364 8.824 2.59 0 4.94-0.301 6.626-0.753 7.71-2.379 17.86-16.474 22.588-31.262 4.548-14.757 7.62-32.527 10.3-48.219l2.078-11.656c1.174-7.439 1.958-15.751 2.861-24.455 3.222-32.888 6.927-70.114 29.364-94.298 9.396-10.029 19.607-15.119 30.359-15.119 26.142 0 41.954 28.973 53.73 50.597 9.366 17.98 19.456 38.882 21.324 59.633 1.928 21.203-1.536 35.84-10.933 46.17-9.457 10.391-22.92 13.372-34.274 14.186 24.335 46.351 71.168 63.699 80.444 65.265 5.541 0.813 11.746 1.385 18.131 1.385 10.632 0 29.696-1.687 38.46-12.83 6.565-8.403 8.192-20.751 5-37.798z" /> +<glyph unicode="&#xe72a;" d="M512 382.539c-18.853-8.132-39.303-13.974-60.446-16.233 21.775 12.981 38.34 33.43 46.14 57.796-20.149-12.017-42.887-20.781-66.59-25.329-19.155 20.48-46.442 33.13-76.649 33.13-58.157 0-104.93-47.104-104.93-104.9 0-8.132 0.994-16.263 2.59-24.064-87.070 4.518-164.714 46.11-216.365 109.809-9.096-15.571-14.306-33.46-14.306-52.977 0-36.382 18.523-68.517 46.772-87.371-17.197 0.663-33.461 5.542-47.435 13.312 0-0.301 0-0.964 0-1.295 0-50.959 36.051-93.214 84.148-102.972-8.764-2.259-18.191-3.554-27.618-3.554-6.806 0-13.312 0.632-19.788 1.627 13.312-41.592 51.983-71.8 98.093-72.794-36.081-28.25-81.228-44.815-130.289-44.815-8.764 0-16.896 0.301-25.329 1.265 46.471-29.877 101.677-47.104 161.16-47.104 192.964 0 298.556 159.834 298.556 298.526 0 4.578 0 9.095-0.301 13.673 20.42 14.939 38.279 33.491 52.586 54.272zM429.568 314.624c0-111.466-83.275-268.409-268.438-268.409-14.818 0-29.485 1.204-43.911 3.554 20.179 8.313 39.303 19.456 56.952 33.25 10.029 7.83 14.035 21.142 9.999 33.22-4.036 12.077-15.209 20.329-27.949 20.601-16.414 0.332-31.774 5.933-44.183 15.33 0.121 0.030 0.241 0.060 0.362 0.091 13.613 3.493 22.98 15.902 22.619 29.937-0.332 14.065-10.331 25.962-24.094 28.762-19.636 3.976-36.231 15.541-46.953 31.503 1.054-0.060 2.078-0.12 3.132-0.15 0.391 0 0.753 0 1.144 0 13.011 0 24.606 8.373 28.642 20.841 4.156 12.83-0.723 26.835-11.957 34.334-18.974 12.649-31.021 33.009-33.069 55.446 54.934-47.646 124.868-76.228 198.686-80.052 0.512-0.030 1.054-0.030 1.566-0.030 8.764 0 17.107 3.825 22.86 10.511 6.084 7.077 8.524 16.595 6.626 25.72-1.325 6.295-1.988 12.348-1.988 17.92 0 41.231 33.551 74.782 74.812 74.782 21.022 0 40.418-8.373 54.663-23.612 3.493-3.735 7.861-6.476 12.559-8.012-0.572-4.397-0.18-8.945 1.295-13.372 1.897-5.752 5.421-10.601 9.939-14.156-2.68-4.939-3.976-10.631-3.584-16.384 0.301-3.885 0.271-7.74 0.271-11.625z" /> +<glyph unicode="&#xe72b;" d="M261 480c-141.161 0-256-114.839-256-256s114.838-256 256-256 256 114.839 256 256c0 141.161-114.839 256-256 256zM261-1.882c-124.567 0-225.882 101.316-225.882 225.882s101.316 225.882 225.882 225.882 225.882-101.316 225.882-225.882-101.316-225.882-225.882-225.882zM421.647 208.941v-30.118h-180.706v150.588h30.117v-120.47h150.588z" /> +<glyph unicode="&#xe72c;" d="M396.047 97.897c-21.685-14.396-42.767-21.384-64.482-21.384-11.173 0-20.601 2.469-28.913 7.56-5.12 3.102-8.342 6.716-10.029 11.354-1.566 4.036-3.404 15.721-3.404 48.55v108.574h114.236v105.713h-114.206v121.736h-97.009l-1.686-13.192c-2.892-22.829-8.132-41.894-15.42-56.561-7.379-14.486-16.775-26.503-28.552-36.653-11.987-9.999-26.715-17.95-43.701-23.582l-10.331-3.434v-94.027h53.339v-154.052c0-24.456 2.62-42.858 7.891-55.838 5.15-13.644 14.908-26.774 29.184-39.123 13.975-11.806 30.268-20.691 48.219-26.323 18.402-6.084 39.635-9.216 63.097-9.216 21.052 0 40.538 2.139 57.645 6.325 17.288 3.945 36.563 10.963 58.88 21.474l8.644 4.066v113.574l-23.401-15.541zM389.331 19.079c-16.655-7.379-31.172-12.438-44.333-15.481-31.232-7.62-74.572-7.71-104.599 2.259-14.336 4.517-27.136 11.475-37.918 20.57-10.27 8.915-17.197 17.95-20.691 27.196-3.885 9.517-5.813 24.606-5.813 44.845v184.2h-53.308v42.496c16.354 6.505 30.87 14.998 43.369 25.449 14.757 12.71 26.865 28.19 35.96 46.080 7.5 14.998 12.951 32.467 16.475 53.188h40.659v-121.736h114.236v-45.477h-114.236v-138.662c0-32.166 1.566-49.393 5.3-59.060 3.945-10.933 11.565-19.877 22.588-26.564 27.98-17.197 67.012-15.119 102.31 1.265v-40.568z" /> +<glyph unicode="&#xe72d;" d="M487.876 180.54c2.68 14.757 4.036 29.365 4.036 43.46 0 144.203-128.572 259.253-279.401 231.876-22.769 15.812-49.243 24.124-76.981 24.124-74.722 0-135.53-60.808-135.53-135.53 0-27.738 8.313-54.212 24.124-77.011-2.68-14.758-4.036-29.335-4.036-43.46 0-144.203 128.602-259.252 279.401-231.876 22.769-15.812 49.243-24.124 76.981-24.124 74.722 0 135.53 60.808 135.53 135.529 0 27.738-8.313 54.212-24.124 77.011zM376.471-1.882c-23.341 0-45.538 7.589-64.241 21.956l-5.481 4.216-6.776-1.416c-15.029-3.102-29.817-4.668-44.002-4.668-113.483 0-205.794 92.31-205.794 205.794 0 14.185 1.566 28.973 4.699 44.002l1.386 6.776-4.216 5.482c-14.336 18.643-21.925 40.9-21.925 64.211 0 58.127 47.285 105.412 105.412 105.412 23.341 0 45.538-7.589 64.241-21.956l5.482-4.216 6.776 1.416c14.999 3.072 29.786 4.668 43.972 4.668 113.483 0 205.794-92.311 205.794-205.794 0-14.185-1.566-28.973-4.699-44.002l-1.385-6.776 4.216-5.481c14.366-18.643 21.956-40.9 21.956-64.211 0-58.127-47.284-105.412-105.412-105.412zM383.067 171.625c0-63.699-61.5-93.184-120.471-93.184-70.596 0-129.596 31.382-129.596 69.964 0 17.228 9.728 32.918 31.714 32.918 33.581 0 36.714-48.308 94.75-48.308 27.588 0 45.478 12.197 45.478 28.22 0 20.089-17.257 23.221-45.176 30.118l-45.809 11.294c-45.779 10.993-80.956 29.816-80.956 82.522 0 63.668 63.066 87.221 117.339 87.221 59.301 0 119.206-23.522 119.206-59.603 0-18.191-12.228-34.214-32.618-34.214-30.449 0-31.382 36.051-80.655 36.051-27.588 0-45.177-7.5-45.177-24.124 0-18.221 17.89-22.287 41.773-27.949l32.587-7.529c44.574-10.029 97.611-28.822 97.611-83.396z" /> +<glyph unicode="&#xe72e;" d="M204.649 76.544c-33.43 31.232-52.615 75.355-52.615 121.103 0 91.347 74.331 165.647 165.647 165.647h87.702l-79.692 79.692 21.293 21.293 116.074-116.074-116.073-116.073-21.293 21.293 79.692 79.691h-87.702c-74.722 0-135.53-60.808-135.53-135.529 0-37.978 15.3-73.156 43.038-99.087l-20.54-21.956zM483.328 208.038v-194.861c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v195.012h-30.117v-195.012c0-24.908 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176v194.861h-30.118z" /> +<glyph unicode="&#xe72f;" d="M166.46 232.162l-116.043 116.073 116.073 116.073 21.293-21.293-79.722-79.722h87.703c91.317 0 165.647-74.3 165.647-165.647 0-45.748-19.185-89.841-52.615-121.103l-20.54 21.986c27.738 25.962 43.038 61.139 43.038 99.117 0 74.722-60.808 135.529-135.53 135.529h-87.703l79.692-79.691-21.293-21.323zM481.882 208.188v-195.012c0-8.283-6.776-15.059-15.059-15.059h-421.647c-8.282 0-15.059 6.776-15.059 15.059v194.861h-30.117v-194.861c0-24.907 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v195.012h-30.118z" /> +<glyph unicode="&#xe730;" d="M361.412 148.706c0 30.118 0 150.588 0 180.706 0 150.588-90.353 150.588-90.353 150.588s-90.353 0-90.353-150.588 0-60.236 0-180.706c0 0-60.236 0-60.236-180.706 0 0 71.65 71.529 129.868 87.19 0.12-17.529 9.337-31.654 20.721-31.654s20.601 14.156 20.721 31.654c58.217-15.661 129.868-87.19 129.868-87.19 0 180.706-60.236 180.706-60.236 180.706zM271.059 449.852c7.83-0.632 50.206-8.132 58.639-90.323h-117.278c8.433 82.191 50.808 89.691 58.639 90.323zM271.059 88.471c-38.279 0-82.582-26.142-116.766-51.712 7.921 63.88 25.871 79.18 29.907 81.829h26.624v210.824h120.471v-210.824h26.624c4.036-2.651 21.986-17.95 29.907-81.829-34.183 25.57-78.486 51.712-116.766 51.712z" /> +<glyph unicode="&#xe731;" d="M452.517 292.518c0-115.019-63.94-200.644-157.997-200.644-31.594 0-61.29 17.107-71.228 36.533-17.107-67.404-20.54-80.324-20.54-80.324-6.114-22.468-18.643-44.966-29.666-62.464-31.412-22.197-34.334 12.168-34.334 12.168-0.723 20.601-0.362 45.327 5 67.373 0 0 5.692 23.642 37.647 159.172-9.487 18.673-9.487 46.471-9.487 46.471 0 43.4 25.148 75.776 56.38 75.776 26.654 0 39.575-20.179 39.575-44.183 0-26.654-17.167-66.65-25.871-103.575-7.228-31.232 15.601-56.35 46.050-56.35 55.627 0 92.883 71.168 92.883 155.347 0 64.362-43.37 112.309-121.826 112.309-88.697 0-143.902-66.259-143.902-140.108 0-25.54 7.59-43.429 19.396-57.524 5.361-6.476 6.114-8.734 4.186-16.354-1.476-5.331-4.518-18.281-6.054-23.221-1.898-7.62-8.011-10.27-14.457-7.62-40.749 16.805-59.813 61.711-59.813 111.978 0 83.004 70.024 182.754 208.655 182.754 111.947 0 185.404-81.077 185.404-167.514z" /> +<glyph unicode="&#xe732;" d="M451.764 419.764v-225.882h-30.118v170.707l-281.118-281.118-21.293 21.293 284.883 284.883h-178.236v30.118h225.882zM331.294-1.882h-301.176v301.176h197.994v30.118h-228.111v-361.412h361.412v232.327h-30.118v-202.21z" /> +<glyph unicode="&#xe733;" d="M232.93 6.46l279.070-38.46v241.845h-279.070v-203.385zM263.048 179.727h218.835v-177.182l-218.835 30.178v147.004zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM30.117 179.727h149.595v-135.62l-149.595 20.601v115.019zM0 235.685h209.829v202.752l-209.829-28.883v-173.869zM30.117 383.322l149.595 20.601v-138.089h-149.595v117.489zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM481.882 265.803h-218.835v149.474l218.835 30.178v-179.652z" /> +<glyph unicode="&#xe734;" d="M512 359.529v-30.117h-361.412v30.117h361.412zM150.588 208.941h361.412v30.118h-361.412v-30.118zM150.588 88.471h361.412v30.118h-361.412v-30.118zM62.735 375.19h0.271v-71.77h10.722v82.131h-9.457l-17.95-9.608 2.139-8.463 14.276 7.71zM49.363 191.714l6.596 6.053c17.287 16.685 28.281 28.943 28.281 44.123 0 11.746-7.469 23.884-25.178 23.884-9.457 0-17.529-3.524-23.221-8.343l3.524-7.831c3.825 3.162 9.999 6.957 17.468 6.957 12.228 0 16.293-7.71 16.293-16.053-0.121-12.379-9.638-23.010-30.599-42.978l-8.704-8.463v-6.837h52.404v9.246h-36.864v0.241zM67.343 106.812v0.271c10.12 3.644 15.18 10.842 15.18 19.336 0 9.969-7.319 19.577-23.492 19.577-8.855 0-17.197-3.132-21.504-6.325l2.922-8.101c3.524 2.53 9.849 5.452 16.444 5.452 10.24 0 14.396-5.813 14.396-12.378 0-9.728-10.24-13.914-18.311-13.914h-6.204v-8.313h6.174c10.752 0 21.112-4.94 21.233-16.444 0.15-6.837-4.307-15.902-18.552-15.902-7.74 0-15.059 3.132-18.191 5.18l-3.042-8.584c4.036-2.68 12.108-5.602 21.353-5.602 19.697 0 29.937 11.505 29.937 24.636 0 11.505-8.222 19.094-18.341 21.113z" /> +<glyph unicode="&#xe735;" d="M21.022 304.625h103.544v-310.904h-103.544v310.904zM73.427 454.279c-35.148 0-58.368-23.221-58.368-53.669 0-29.787 22.287-53.639 57.103-53.639h0.632c36.081 0 58.669 23.853 58.368 53.639-0.332 30.449-22.287 53.669-57.736 53.669zM378.036 311.853c-55.085 0-79.601-30.178-93.184-51.471v44.243h-103.213c0 0 1.265-29.184 0-310.904h103.213v173.508c0 9.397 0.964 18.522 3.433 25.389 7.56 18.522 24.456 37.647 53.067 37.647 37.286 0 52.344-28.551 52.344-70.264v-166.28h103.243v178.206c0 95.382-50.839 139.927-118.904 139.927z" /> +<glyph unicode="&#xe736;" d="M512 480v-512h-120.471v512h120.471zM0-32h90.353v512h-90.353v-512zM331.294-32h30.118v30.118h-30.118v-30.118zM228.020-32h25.811v30.118h-25.811v-30.118zM279.673-32h25.811v30.118h-25.811v-30.118zM176.399-32h25.811v30.118h-25.811v-30.118zM120.471-32h30.117v30.118h-30.118v-30.118zM120.471 389.647h30.117v30.118h-30.118v-30.118zM120.471 88.471h30.117v30.118h-30.118v-30.118zM120.471 28.236h30.117v30.118h-30.118v-30.118zM120.471 148.706h30.117v30.118h-30.118v-30.118zM120.471 269.177h30.117v30.117h-30.118v-30.117zM120.471 329.412h30.117v30.117h-30.118v-30.117zM120.471 208.941h30.117v30.118h-30.118v-30.118zM120.471 449.882h30.117v30.118h-30.118v-30.118zM176.399 449.882h25.811v30.118h-25.811v-30.118zM279.673 449.882h25.811v30.118h-25.811v-30.118zM228.020 449.882h25.811v30.118h-25.811v-30.118zM331.294 449.882h30.118v30.118h-30.118v-30.118zM331.294 329.412h30.118v30.117h-30.118v-30.117zM331.294 389.647h30.118v30.118h-30.118v-30.118zM331.294 269.177h30.118v30.117h-30.118v-30.117zM331.294 208.941h30.118v30.118h-30.118v-30.118zM331.294 28.236h30.118v30.118h-30.118v-30.118zM331.294 88.471h30.118v30.118h-30.118v-30.118zM331.294 148.706h30.118v30.118h-30.118v-30.118z" /> +<glyph unicode="&#xe737;" d="M30.117 449.882h90.353v-90.353h-90.353v90.353zM150.588 359.529h90.353v90.353h-90.353v-90.353zM271.059 359.529h90.353v90.353h-90.353v-90.353zM391.529 449.882v-90.353h90.353v90.353h-90.353zM30.117 239.059h90.353v90.353h-90.353v-90.353zM150.588 239.059h90.353v90.353h-90.353v-90.353zM271.059 239.059h90.353v90.353h-90.353v-90.353zM391.529 239.059h90.353v90.353h-90.353v-90.353zM30.117 118.588h90.353v90.353h-90.353v-90.353zM150.588 118.588h90.353v90.353h-90.353v-90.353zM271.059 118.588h90.353v90.353h-90.353v-90.353zM391.529 118.588h90.353v90.353h-90.353v-90.353zM30.117-1.882h90.353v90.353h-90.353v-90.353zM150.588-1.882h90.353v90.353h-90.353v-90.353zM271.059-1.882h90.353v90.353h-90.353v-90.353zM391.529-1.882h90.353v90.353h-90.353v-90.353z" /> +<glyph unicode="&#xe738;" d="M0 480h150.588v-150.588h-150.588v150.588zM180.706 329.412h150.588v150.588h-150.588v-150.588zM361.412 480v-150.588h150.588v150.588h-150.588zM0 148.706h150.588v150.588h-150.588v-150.588zM180.706 148.706h150.588v150.588h-150.588v-150.588zM361.412 148.706h150.588v150.588h-150.588v-150.588zM0-32h150.588v150.588h-150.588v-150.588zM180.706-32h150.588v150.588h-150.588v-150.588zM361.412-32h150.588v150.588h-150.588v-150.588z" /> +<glyph unicode="&#xe739;" d="M0 480h210.823v-210.823h-210.823v210.823zM271.059 480v-210.823h210.824v210.823h-210.823zM0-1.882h210.823v210.824h-210.823v-210.823zM271.059-1.882h210.824v210.824h-210.823v-210.823z" /> +<glyph unicode="&#xe73a;" d="M30.117 480h90.353v-512h-90.353v512zM150.588-32h90.353v512h-90.353v-512zM271.059-32h90.353v512h-90.353v-512zM391.529 480v-512h90.353v512h-90.353z" /> +<glyph unicode="&#xe73b;" d="M0 480h150.588v-512h-150.588v512zM180.706-32h150.588v512h-150.588v-512zM361.412 480v-512h150.588v512h-150.588z" /> +<glyph unicode="&#xe73c;" d="M0 480h240.941v-512h-240.941v512zM271.059 480v-512h240.941v512h-240.941z" /> +<glyph unicode="&#xe73d;" d="M391.529 480h-271.059c-66.259 0-120.471-54.212-120.471-120.471v-271.059c0-66.259 54.212-120.47 120.471-120.47h271.059c66.259 0 120.471 54.212 120.471 120.471v271.059c0 66.259-54.212 120.471-120.471 120.471zM481.882 88.471c0-49.815-40.538-90.353-90.353-90.353h-271.059c-49.815 0-90.353 40.538-90.353 90.353v180.706h96.588c-8.614-18.372-13.764-38.641-13.764-60.236 0-78.878 64.18-143.059 143.059-143.059s143.059 64.18 143.059 143.059c0 21.595-5.15 41.863-13.764 60.236h96.587v-180.706zM368.941 208.941c0-62.284-50.658-112.941-112.941-112.941s-112.941 50.658-112.941 112.941 50.658 112.941 112.941 112.941 112.941-50.658 112.941-112.941zM365.99 299.294c-26.262 31.894-65.536 52.706-109.99 52.706s-83.727-20.812-109.99-52.706h-115.892v60.236c0 49.815 40.538 90.353 90.353 90.353h271.059c49.815 0 90.353-40.538 90.353-90.353v-60.236h-115.892zM435.32 398.020v-39.092c0-9.005-7.349-16.354-16.324-16.354h-41.201c-9.036 0.030-16.384 7.379-16.384 16.354v39.092c0 9.005 7.349 16.354 16.384 16.354h41.201c8.975 0 16.324-7.349 16.324-16.354z" /> +<glyph unicode="&#xe73e;" d="M512 401.243v-39.394h-78.757v-78.788h-39.394v78.788h-78.757v39.394h78.757v78.758h39.394v-78.758h78.757zM312.923 95.096c0-35.388-16.896-64-43.068-86.769-35.388-30.479-83.697-40.327-129.235-40.327-57.525 0-140.619 24.606-140.619 95.985 0 14.457 4.939 28.642 11.415 41.563 27.347 55.356 112.881 69.541 167.966 71.077-10.119 13.221-19.667 28.582-19.667 45.839 0 10.149 3.644 16.926 6.776 26.444-7.409-0.904-14.457-1.536-21.534-1.536-59.693 0-111.375 44.002-111.375 105.864 0 58.458 45.207 108.303 101.196 120.591 18.793 4.036 38.129 6.174 57.524 6.174h134.505l-41.532-24.305h-41.593c30.509-19.065 45.869-56.32 45.869-90.774 0-81.529-68.94-87.673-68.94-128.301 0-39.695 92.31-55.387 92.31-141.523zM232.659 333.839c0 46.772-25.268 123.995-82.191 123.995-40.267 0-59.964-35.69-59.964-72.012 0-46.743 30.75-119.988 85.534-119.988 42.105 0.030 56.621 30.479 56.621 68.005zM269.553 68.623c0 43.068-40.358 67.072-71.71 88.938-5.24 0.603-10.18 0.603-15.42 0.603-50.417 0-125.531-15.993-125.531-79.993 0-59.060 66.469-81.86 115.712-81.86 45.839 0 96.948 18.462 96.948 72.313z" /> +<glyph unicode="&#xe73f;" d="M393.849 145.243c0-22.468-11.716-59.091-39.394-59.091-27.708 0-39.424 36.623-39.424 59.091 0 22.438 11.716 59.091 39.424 59.091 27.678 0 39.394-36.653 39.394-59.091zM157.546 204.333c-27.678 0-39.394-36.653-39.394-59.091 0-22.468 11.716-59.091 39.394-59.091 27.678 0 39.394 36.623 39.394 59.091 0 22.438-11.716 59.091-39.394 59.091zM512 199.394c0-34.183-3.373-70.476-18.764-101.858-40.629-82.161-152.305-90.142-232.298-90.142-81.228 0-199.68 7.048-241.845 90.142-15.722 31.082-19.095 67.675-19.095 101.858 0 44.935 12.318 87.371 41.864 121.826-5.541 16.926-8.313 34.786-8.313 52.344 0 23.070 5.21 46.11 15.691 67.072 48.61 0 79.692-21.233 116.615-50.146 31.082 7.379 63.066 10.752 95.082 10.752 28.913 0 58.157-3.102 86.166-9.849 36.623 28.612 67.675 49.243 115.682 49.243 10.481-20.932 15.692-44.002 15.692-67.072 0-17.558-2.771-35.087-8.313-51.712 29.546-34.756 41.834-77.523 41.834-122.459zM443.060 145.243c0 47.074-28.582 88.606-78.757 88.606-20.3 0-39.665-3.704-59.995-6.476-15.993-2.47-31.985-3.373-48.309-3.373s-32.316 0.904-48.309 3.373c-19.998 2.771-39.695 6.476-59.995 6.476-50.146 0-78.757-41.532-78.757-88.606 0-94.148 86.137-108.604 161.22-108.604h51.712c75.084-0.030 161.19 14.457 161.19 108.604z" /> +<glyph unicode="&#xe740;" d="M219.708 224c0-60.657-49.212-109.839-109.809-109.839-60.687 0-109.9 49.182-109.9 109.839s49.212 109.839 109.9 109.839c60.596 0 109.809-49.182 109.809-109.839zM512 224c0-60.657-49.212-109.839-109.899-109.839-60.596 0-109.809 49.212-109.809 109.839s49.212 109.839 109.809 109.839c60.687 0 109.899-49.182 109.899-109.839zM481.882 224c0 43.972-35.78 79.721-79.781 79.721-43.942 0-79.692-35.78-79.692-79.721s35.75-79.721 79.692-79.721c44.002 0 79.781 35.75 79.781 79.721z" /> +<glyph unicode="&#xe741;" d="M375.296 312.245l-9.306-88.245h-70.536v-256h-105.954v256h-52.796v88.245h52.796v53.127c0 71.771 29.846 114.628 114.688 114.628h70.505v-88.245h-44.123c-32.918 0-35.117-12.438-35.117-35.418v-44.092h79.842z" /> +<glyph unicode="&#xe742;" d="M507.572 348.356l-159.503 104.026-92.070-76.439-91.738 76.439-159.834-104.026 93.365-74.572-93.335-74.752 103.725-67.554v-46.171l148.089-88.516 148.359 88.486v46.622l102.912 67.162-93.305 74.722 93.334 74.572zM350.178 415.036l106.014-69.15-67.222-53.669-107.219 65.957 68.428 56.862zM361.412 273.784l-105.412-65.024-105.412 65.024 105.412 64.874 105.412-64.874zM55.808 345.886l106.225 69.15 68.216-56.832-107.249-65.988-67.192 53.669zM55.778 201.563l67.222 53.88 107.279-66.198-68.246-56.923-106.255 69.24zM374.513 102.385l-118.212-70.565-117.971 70.536v9.487l25.962-16.896 91.769 76.499 92.040-76.499 26.443 17.257v-9.819zM456.222 201.532l-106.044-69.21-68.457 56.923 107.249 66.198 67.252-53.91z" /> +<glyph unicode="&#xe743;" d="M256 480c-141.372 0-256-114.628-256-256s114.628-256 256-256 256 114.628 256 256-114.628 256-256 256zM481.702 220.356c-62.494 13.733-117.339 12.74-164.714 2.771-7.56 18.884-16.143 38.34-25.57 58.127 50.628 19.516 99.147 47.767 136.975 88.365 33.31-39.394 53.489-90.172 53.489-145.619 0-1.235-0.18-2.409-0.18-3.644zM407.281 391.243c-34.937-37.858-80.956-64.301-129.416-82.522-22.889 44.212-50.899 89.148-84.751 132.066 19.998 5.813 41.050 9.095 62.886 9.095 58.248 0 111.195-22.347 151.281-58.639zM163.539 429.854c34.124-42.075 62.102-86.859 85.173-131.102-89.57-27.708-179.682-30.961-214.257-31.021 14.276 72.493 63.368 132.518 129.084 162.124zM30.117 224c0 4.548 0.422 9.036 0.663 13.523 1.958-0.030 4.036-0.030 6.385-0.030 39.334 0 132.578 3.764 225.34 33.551 9.036-18.823 17.408-37.496 24.697-55.537-108.574-33.159-172.755-111.586-196.156-145.348-37.677 40.358-60.928 94.358-60.928 153.841zM113.182 49.197c17.95 27.136 78.336 105.954 185.073 137.637 28.943-78.245 42.315-142.878 47.164-170.195-27.437-11.866-57.645-18.522-89.419-18.522-54.151 0-103.876 19.185-142.818 51.079zM373.459 31.428c-5.964 32.015-19.155 91.618-45.267 162.786 43.49 8.433 93.636 8.674 150.829-4.367-10.27-67.042-49.935-124.356-105.563-158.419z" /> +<glyph unicode="&#xe744;" d="M421.677 144.941c-14.125 20.3-21.203 43.37-21.203 68.608 0 23.371 6.776 44.635 19.998 63.699 7.379 10.752 19.065 22.769 35.087 36.292-10.451 12.951-21.263 23.402-32.015 30.78-19.094 13.221-40.9 19.998-65.536 19.998-15.089 0-32.918-3.704-53.218-10.451-20.329-7.077-35.087-10.481-44.002-10.481-7.108 0-21.263 3.072-42.496 9.246-21.534 6.144-39.394 9.216-54.453 9.216-35.418 0-64.332-14.788-87.371-44.303-23.070-29.846-34.756-68.005-34.756-115.079 0-50.447 15.39-101.828 45.207-154.774 30.449-52.916 60.928-79.692 92.612-79.692 10.149 0 23.703 3.373 40.629 10.481 16.655 6.747 31.382 10.149 43.7 10.149 12.62 0 28.281-3.072 46.442-9.849 18.492-6.445 32.618-9.849 43.099-9.849 26.142 0 52.615 20.028 79.089 60.325 17.829 26.774 30.148 52.615 37.828 76.921-18.131 5.512-34.454 18.432-48.64 38.762zM407.281 45.764c-19.788-30.118-38.942-46.743-53.911-46.743-4.428 0-13.824 1.416-32.557 7.951-20.872 7.8-40.057 11.746-56.983 11.746-16.293 0-34.786-4.156-55.356-12.499-17.468-7.319-26.052-8.101-28.943-8.101-18.914 0-42.526 22.95-66.379 64.362-27.799 49.363-41.322 95.142-41.322 139.987 0 40.237 9.337 71.891 28.371 96.557 17.438 22.317 37.677 32.708 63.639 32.708 12.077 0 27.166-2.65 46.050-8.041 31.654-9.186 43.49-10.421 50.868-10.421 12.8 0 30.419 3.976 53.519 12.017 17.74 5.903 32.437 8.915 43.671 8.915 18.341 0 34.183-4.788 48.49-14.728 1.988-1.386 4.066-2.952 6.144-4.668-6.867-7.108-12.469-13.884-16.926-20.389-16.866-24.275-25.389-51.471-25.389-80.896 0-31.563 8.945-60.416 26.624-85.836 10.661-15.209 22.528-27.347 35.599-36.322-6.536-15.029-14.998-30.298-25.209-45.598zM283.829 360.613c-7.077-2.168-17.529-4.005-31.985-5.24 0.632 30.449 8.613 56.923 24.004 79.059 15.39 22.197 41.201 37.255 76.95 45.568 0.603-2.771 1.204-4.94 1.506-6.776 0-2.139 0.332-3.976 0.332-6.144 0-12.62-3.072-26.774-8.915-41.863-6.144-15.39-15.692-29.546-28.642-42.466-11.084-11.053-22.166-18.432-33.25-22.137z" /> +<glyph unicode="&#xe745;" d="M114.718 308.45h282.594v-205.011c0-18.764-15.119-33.882-33.521-33.882h-23.161v-69.873c0-17.558-14.125-31.684-31.654-31.684-17.558 0-31.774 14.156-31.774 31.684v69.873h-42.406v-69.873c0-17.529-14.215-31.684-31.774-31.684-17.197 0-31.382 14.156-31.382 31.684l-0.271 69.873h-22.799c-18.733 0-33.852 15.089-33.852 33.882v205.011zM70.987 314.293c-17.529 0-31.714-14.186-31.714-31.383v-132.397c0-17.558 14.185-31.684 31.714-31.684s31.383 14.156 31.383 31.684v132.397c0 17.197-14.095 31.382-31.382 31.382zM398.216 319.533h-284.732c0 48.941 29.274 91.437 72.674 113.573l-21.895 40.298c-1.235 2.168-0.632 4.94 1.536 6.174 2.138 0.933 4.94 0.332 6.174-1.868l22.137-40.628c18.823 8.342 39.756 12.95 61.892 12.95s43.068-4.608 61.892-12.921l22.137 40.629c1.235 2.168 4.036 2.771 6.174 1.868 2.168-1.235 2.771-4.006 1.536-6.174l-21.895-40.298c43.129-22.166 72.373-64.662 72.373-113.604zM203.023 382.931c0 6.476-5.21 12.017-11.957 12.017-6.506 0-11.716-5.541-11.716-12.017 0-6.445 5.21-11.987 11.716-11.987 6.746-0.030 11.957 5.512 11.957 11.987zM332.649 382.931c0 6.476-5.211 12.017-11.716 12.017-6.776 0-11.957-5.541-11.957-12.017 0-6.445 5.211-11.987 11.957-11.987 6.505-0.030 11.716 5.512 11.716 11.987zM441.012 314.293c-17.257 0-31.382-13.854-31.382-31.383v-132.397c0-17.558 14.125-31.684 31.382-31.684 17.529 0 31.714 14.156 31.714 31.684v132.397c-0.030 17.529-14.185 31.382-31.714 31.382z" /> +<glyph unicode="&#xe746;" d="M426.587 480h-381.41c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v383.217l-85.413 83.606zM240.941 449.882v-120.47h90.353v120.47h30.118v-150.588h-240.941v150.588h120.47zM90.353-1.882v180.706h331.294v-180.706h-331.294zM481.882 13.176c0-8.283-6.776-15.059-15.059-15.059h-15.059v210.823h-391.529v-210.823h-15.059c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.283 6.746 15.059 15.059 15.059h45.177v-180.706h301.176v180.706h22.769l67.584-66.138v-370.567z" /> +<glyph unicode="&#xe747;" d="M466.824 480h-381.41l-85.413-83.606v-383.217c0-24.908 20.269-45.176 45.176-45.176h421.647c24.908 0 45.176 20.269 45.176 45.176v421.647c0 24.907-20.269 45.176-45.176 45.176zM391.529 449.882v-60.236h-240.941v60.236h240.941zM90.353-1.882v30.118h331.294v-30.118h-331.294zM481.882 13.176c0-8.283-6.747-15.059-15.059-15.059h-15.059v60.236h-391.529v-60.236h-15.059c-8.313 0-15.059 6.776-15.059 15.059v370.567l67.584 66.138h22.769v-90.353h301.176v90.353h45.176c8.313 0 15.059-6.776 15.059-15.059v-421.647zM256 329.412c-58.127 0-105.412-47.285-105.412-105.412s47.285-105.412 105.412-105.412 105.412 47.284 105.412 105.412-47.284 105.412-105.412 105.412zM256 148.706c-41.502 0-75.294 33.762-75.294 75.294s33.792 75.294 75.294 75.294 75.294-33.762 75.294-75.294-33.792-75.294-75.294-75.294z" /> +<glyph unicode="&#xe748;" d="M286.118-16.941c-9.849 1.747-19.998 3.163-30.419 3.163-10.119 0-20.269-1.445-30.388-3.163l3.764 204.77c-53.88 92.943-104.569 187.603-163.9 277.113 10.12-2.62 20.54-4.337 31.262-4.337s21.715 2.048 32.136 4.337c40.538-71.861 84.57-141.613 127.126-212.269 42.857 70.084 88.335 139.867 127.157 212.269 10.12-2.62 20.57-4.066 30.961-4.066 11.023 0 22.317 1.445 33.009 4.066-23.19-31.865-42.285-66.59-62.253-100.473-34.484-58.789-68.367-117.609-102.25-176.64l3.795-204.77z" /> +<glyph unicode="&#xe749;" d="M496.941 224c0-132.819-108.092-240.941-240.941-240.941s-240.941 108.123-240.941 240.941 108.092 240.941 240.941 240.941 240.941-108.123 240.941-240.941zM485.918 224c0 126.644-103.243 229.918-229.918 229.918s-229.918-103.274-229.918-229.918 103.243-229.918 229.918-229.918 229.918 103.274 229.918 229.918zM67.222 308.179l98.696-270.276c-69.12 33.642-116.706 104.358-116.706 186.097 0 29.816 6.475 58.368 18.010 84.179zM379.693 167.529l-20.45-68.849-74.752 222.088c0 0 12.378 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.611-2.409-55.145-2.68-55.145-2.68s-20.148 0.301-54.302 2.71c-11.294 0.813-12.649-16.113-1.356-16.926 10.481-1.084 21.504-2.198 21.504-2.198l32.256-88.185-45.177-135.53-75.294 223.714c0 0 12.379 0.813 23.673 2.168 11.023 1.356 9.698 17.769-1.325 16.926-33.37-2.409-55.145-2.68-55.145-2.68-3.764 0-8.313 0.271-13.162 0.271 36.834 56.229 100.292 93.334 172.635 93.334 53.79 0 102.731-20.721 139.565-54.332-0.813 0-1.868 0-2.68 0-20.179 0-34.695-17.498-34.695-36.593 0-16.926 9.939-31.202 20.42-48.369 8.101-13.733 16.926-31.473 16.926-57.043 0.030-17.679-7.198-38.159-15.842-66.922zM323.192 31.97c0.271-1.054 0.813-2.108 1.356-2.952-21.504-7.529-44.363-11.836-68.578-11.836-20.148 0-39.785 3.012-58.368 8.613l61.862 180.133 63.729-173.959zM462.788 224c0-76.348-41.412-142.788-103.002-178.567l63.187 182.332c10.481 30.148 15.872 53.218 15.872 74.24 0 7.5-0.542 14.517-1.627 21.233 16.173-29.575 25.57-63.217 25.57-99.238z" /> +<glyph unicode="&#xe74a;" d="M485.858 410.7c-17.468 22.166-54.091 23.010-79.661 19.185-20.48-3.404-90.293-34.063-113.755-107.791 41.773 3.404 63.849-3.042 59.633-49.002-1.747-19.576-11.535-40.478-22.166-60.958-12.83-23.372-36.171-69.421-67.313-36.171-27.678 29.817-25.992 86.889-31.924 124.808-3.885 21.324-7.68 47.737-14.517 69.873-5.994 18.764-20.059 41.292-36.623 46.442-18.311 5.15-40.93-2.981-54.121-10.632-41.834-24.757-69.451-59.693-110.351-88.636v-3.012c13.613-6.837 9.396-17.89 20.028-19.606 25.148-3.373 48.941 23.492 65.626-4.638 10.21-17.017 13.192-35.78 19.547-54.151 8.915-24.666 15.39-51.531 22.588-79.661 11.927-48.188 26.444-119.717 68.156-137.246 20.932-8.945 52.887 3.012 68.638 12.83 43.399 25.6 78.005 62.644 106.496 100.954 66.892 89.54 103.123 191.759 108.664 221.154 3.825 20.058 3.404 40.508-8.945 56.26z" /> +<glyph unicode="&#xe74b;" d="M459.385 328.268c0.332-4.548 0.332-9.096 0.332-13.673 0-138.692-105.592-298.526-298.556-298.526-59.452 0-114.688 17.228-161.16 47.104 8.463-0.964 16.595-1.265 25.359-1.265 49.062 0 94.178 16.565 130.259 44.815-46.14 0.964-84.781 31.202-98.093 72.794 6.475-0.964 12.98-1.627 19.757-1.627 9.457 0 18.884 1.295 27.648 3.554-48.068 9.758-84.148 51.983-84.148 102.972 0 0.332 0 0.994 0 1.295 13.974-7.771 30.208-12.649 47.435-13.312-28.251 18.853-46.773 51.019-46.773 87.371 0 19.486 5.21 37.376 14.306 52.977 51.652-63.699 129.295-105.291 216.365-109.809-1.656 7.8-2.62 15.932-2.62 24.064 0 57.796 46.803 104.9 104.93 104.9 30.208 0 57.495-12.649 76.68-33.13 23.702 4.548 46.411 13.312 66.59 25.329-7.8-24.365-24.365-44.845-46.14-57.796 21.142 2.259 41.592 8.101 60.446 16.233-14.306-20.781-32.166-39.334-52.615-54.272z" /> +<glyph unicode="&#xe74c;" d="M274.191 464.941v-121.735h114.236v-75.596h-114.236v-123.603c0-27.919 1.265-45.809 4.397-53.971 2.831-7.861 8.463-14.095 16.293-18.824 10.661-6.565 22.919-9.728 36.714-9.728 24.486 0 48.64 7.861 72.795 23.884v-75.926c-20.721-9.728-39.213-16.625-55.838-20.42-16.655-4.066-34.816-5.933-54.302-5.933-21.956 0-41.382 2.831-58.368 8.463-16.926 5.331-31.382 13.493-43.279 23.522-11.897 10.33-20.359 21.324-24.756 32.918-4.698 11.625-6.897 28.522-6.897 50.507v169.111h-53.339v68.096c18.793 6.235 35.117 15.059 48.61 26.323 13.523 11.626 24.185 25.42 32.346 41.412 8.132 16.324 13.794 36.714 16.926 61.5h68.698z" /> +<glyph unicode="&#xe74d;" d="M496.941 3.147c0-10.993-9.096-20.089-20.089-20.089h-441.705c-10.963 0-20.088 9.096-20.088 20.089v441.705c0 10.993 9.095 20.089 20.088 20.089h441.736c10.963 0 20.089-9.096 20.089-20.089v-441.705zM235.911 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-321.265c0-5.632 4.397-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v321.265zM446.735 404.706c0 5.662-4.397 10.029-10.029 10.029h-150.588c-5.662 0-10.029-4.397-10.029-10.029v-200.795c0-5.632 4.367-10.029 10.029-10.029h150.588c5.662 0 10.029 4.397 10.029 10.029v200.795z" /> +<glyph unicode="&#xe74e;" d="M381.289-7.274c0-9.397-0.271-9.397-0.271-9.397v-0.271h-304.369c-9.427 0-9.427 0.271-9.427 0.271h-0.271v197.933h32.557v-166.219h249.555v166.22h32.226v-188.536zM316.507 47.631l-190.102-0.271v40.599l190.102 0.271v-40.599zM321.084 140.092l-3.493-40.327-189.59 17.468 3.764 40.327 189.32-17.468zM333.733 193.34l-10.511-39.303-183.657 49.243 10.481 39.274 183.687-49.212zM357.647 239.601l-20.721-34.937-163.75 96.768 20.691 34.966 163.78-96.798zM397.704 268.092l-33.31-22.859-107.339 157.034 33.611 23.161 107.038-157.334zM445.048 277.489l-40.087-6.988-32.527 187.452 40.056 6.988 32.557-187.452z" /> +<glyph unicode="&#xe74f;" d="M26.564 174.848l-4.186-26.353c-0.211-1.054-0.813-1.868-1.867-1.868s-1.686 0.813-1.867 1.868l-3.584 26.353 3.554 26.774c0.211 1.054 0.843 1.868 1.867 1.868s1.657-0.813 1.867-1.868l4.216-26.774zM45.809 174.848l-5.421-42.436c-0.211-1.054-1.054-1.868-2.078-1.868-1.054 0-1.867 0.813-1.867 2.048l-4.819 42.255c4.819 43.309 4.819 43.309 4.819 43.309 0 1.024 0.813 1.868 1.867 1.868 1.024 0 1.867-0.844 2.078-1.868l5.421-43.309zM64.844 174.848l-5.21-49.574c0-1.235-1.054-2.289-2.319-2.289s-2.289 1.054-2.5 2.289l-4.397 49.574 4.397 51.23c0.211 1.476 1.265 2.5 2.5 2.5 1.265 0 2.319-1.024 2.319-2.5l5.21-51.23zM84.088 174.848l-4.819-51.019c-0.211-1.687-1.445-2.74-2.921-2.74-1.445 0-2.71 1.054-2.71 2.74l-4.397 51.019 4.397 52.706c0 1.686 1.265 2.71 2.71 2.71 1.476 0 2.71-1.024 2.921-2.71l4.819-52.706zM103.334 174.848l-4.397-51.471c-0.211-1.868-1.686-3.343-3.343-3.343s-3.132 1.476-3.132 3.343l-4.186 51.471 4.186 48.911c0 1.716 1.476 3.162 3.132 3.162 1.686 0 3.132-1.476 3.343-3.162l4.397-48.911zM122.971 174.848l-4.397-51.471c0-2.048-1.686-3.764-3.554-3.764-2.078 0-3.554 1.716-3.764 3.764l-3.764 51.471c3.764 79.51 3.764 79.51 3.764 79.51 0.241 2.048 1.686 3.734 3.764 3.734 1.868 0 3.554-1.686 3.554-3.734l4.397-79.51zM142.215 174.426l-3.976-51.050c0-2.289-1.898-3.945-3.976-3.945-2.289 0-3.946 1.656-4.186 3.945l-3.343 51.050c3.343 97.882 3.343 97.882 3.343 97.882 0.211 2.289 1.868 3.976 4.186 3.976 2.078 0 3.976-1.687 3.976-3.976l3.976-97.882zM162.515 174.848l-3.764-50.628c-0.211-2.5-2.078-4.397-4.608-4.397-2.289 0-4.186 1.868-4.397 4.397l-3.343 50.628 3.343 105.834c0 2.5 2.108 4.608 4.397 4.608 2.5 0 4.397-2.108 4.608-4.608l3.764-105.834zM182.393 174.848l-3.373 109.387c-0.18 2.711-2.289 5.029-5 5.029-2.5 0-4.819-2.319-4.819-5.029l-2.952-109.387 2.952-50.417c0.211-2.711 2.319-4.819 4.819-4.819 2.71 0 4.819 2.108 5.030 4.819l3.343 50.417zM202.451 174.848l-3.132-49.995c0-2.921-2.289-5.24-5.24-5.24-2.922 0-5.030 2.319-5.21 5.24l-2.952 49.995 2.952 106.676c0 2.952 2.289 5.24 5.21 5.24 2.952 0 5.24-2.289 5.24-5.24l3.132-106.676zM222.961 174.637l-2.952-49.393c0-3.132-2.5-5.662-5.632-5.662s-5.662 2.53-5.843 5.662l-2.5 49.393 2.5 102.882c0.211 3.343 2.71 5.873 5.843 5.873 3.132 0 5.421-2.53 5.632-5.873l2.952-102.882zM243.23 174.637l-2.5 122.579c0 2.078-1.054 3.976-2.71 5-1.054 0.632-2.108 1.054-3.343 1.054-1.265 0-2.289-0.421-3.343-1.054-1.686-1.054-2.74-2.922-2.74-5l-0.211-1.235-2.108-121.103c0 0 0-0.211 2.319-49.363 0 0 0 0 0-0.241 0-1.235 0.422-2.5 1.265-3.524 1.265-1.476 2.922-2.289 4.819-2.289 1.686 0 3.132 0.813 4.186 1.868 1.265 1.024 1.868 2.5 1.868 4.187l0.211 5 2.289 44.123zM261.452 126.329c0-3.554-2.921-6.476-6.476-6.476s-6.476 2.921-6.716 6.476l-1.235 23.823-1.265 24.486 2.5 133v0.662c0.211 1.868 1.054 3.764 2.53 5 1.024 0.813 2.5 1.476 4.156 1.476 1.054 0 2.319-0.421 3.132-1.054 1.868-1.024 3.132-3.132 3.343-5.421l2.921-133.662-2.892-48.308zM437.76 119.612c-164.202 0-164.382 0-164.382 0-3.554 0.421-6.476 3.132-6.476 6.897v188.084c0 3.524 1.265 5.21 5.873 6.897 11.505 4.578 24.456 7.077 37.858 7.077 54.573 0 99.358-41.803 104.147-95.142 7.108 2.922 14.848 4.608 23.010 4.608 32.618 0 59.181-26.594 59.181-59.422-0.030-32.647-26.594-59-59.212-59z" /> +<glyph unicode="&#xe750;" d="M496.941 83.411c0-55.507-44.875-100.352-100.382-100.352-55.537 0-100.382 44.845-100.382 100.352 0 3.493 0.301 7.228 0.603 10.661l-112.941 56.5c-17.86-16.625-42.044-26.986-68.397-26.986-55.537 0-100.382 44.845-100.382 100.412 0 55.507 44.845 100.352 100.382 100.352 26.353 0 50.508-10.33 68.397-26.955l112.941 56.44c-0.301 3.494-0.603 7.228-0.603 10.662 0 55.567 44.845 100.412 100.382 100.412 55.507 0 100.382-44.845 100.382-100.412 0-55.537-44.875-100.382-100.382-100.382-26.353 0-50.507 10.361-68.397 26.986l-112.941-56.47c0.301-3.464 0.632-7.228 0.632-10.661 0-3.464-0.332-7.228-0.632-10.661l112.941-56.531c17.89 16.655 42.075 27.015 68.397 27.015 55.507 0.060 100.382-44.785 100.382-100.382z" /> +<glyph unicode="&#xe751;" d="M496.941 73.412c0-49.875-40.478-90.353-90.353-90.353h-301.176c-49.875 0-90.353 40.478-90.353 90.353v301.176c0 49.875 40.478 90.353 90.353 90.353h301.176c49.875 0 90.353-40.478 90.353-90.353v-301.176zM349.786 197.316c-17.558 0-33.551-6.897-45.478-18.191l-75.596 37.647c0.301 2.53 0.602 4.699 0.602 7.228s-0.301 4.698-0.632 7.228l75.595 37.617c11.926-11.294 27.919-18.191 45.478-18.191 36.714 0 66.831 30.087 66.831 67.132 0 36.714-30.118 66.831-66.831 66.831-37.014 0-67.132-30.118-67.132-66.831 0-2.5 0.301-4.699 0.632-7.198l-75.596-37.647c-11.897 10.993-27.889 17.89-45.447 17.89-36.714 0-66.831-29.786-66.831-66.831s30.117-66.831 66.831-66.831c17.559 0 33.551 6.897 45.477 17.89l75.595-37.647c-0.332-2.5-0.632-4.699-0.632-7.198 0-36.714 30.118-66.831 67.132-66.831 36.714 0 66.831 30.118 66.831 66.831 0 37.014-30.118 67.102-66.831 67.102z" /> +<glyph unicode="&#xe752;" d="M469.263 180.751c0.723-4.849 1.204-9.939 1.204-14.788 0-39.394-23.070-75.806-64.603-103.002-40.569-26.474-93.997-41.050-150.829-41.050s-110.501 14.577-150.829 41.050c-41.803 27.196-64.603 63.608-64.603 103.002 0 5.331 0.482 10.661 1.205 16.022-15.3 9.698-25.75 26.955-25.75 46.411 0 30.328 24.546 54.875 54.874 54.875 13.613 0 26.263-5.12 35.96-13.372 38.882 24.787 89.63 38.882 143.781 39.876l32.557 102.701c1.445 4.608 6.325 7.288 11.173 6.325l84.3-19.908c7.017 16.023 23.070 27.196 41.532 27.196 25.028 0 45.176-20.42 45.176-45.207 0-24.998-20.149-45.418-45.176-45.418-24.787 0-44.935 20.179-45.176 44.936l-76.529 17.98-28.16-88.877c51.23-2.168 99.087-16.293 136.012-40.327 9.698 8.734 22.588 14.095 36.683 14.095 30.329 0 54.875-24.546 54.875-54.875 0-20.42-11.173-38.159-27.678-47.646zM46.14 201.412c7.77 20.872 22.588 40.327 43.7 57.103-5.541 3.855-12.62 6.053-19.908 6.053-19.908 0-36.172-16.263-36.172-36.172 0-10.722 4.849-20.42 12.379-26.985zM451.764 165.964c0 32.527-19.938 63.608-56.109 87.221-37.406 24.275-87.431 37.858-140.619 37.858s-103.244-13.613-140.649-37.858c-36.202-23.582-56.109-54.663-56.109-87.221 0-32.798 19.908-63.88 56.109-87.462 37.406-24.275 87.431-37.888 140.619-37.888s103.243 13.613 140.619 37.888c36.202 23.582 56.139 54.663 56.139 87.462zM183.627 158.916c-18.221 0-33.762 14.818-33.762 33.039 0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762c0-18.221-15.059-33.039-33.28-33.039zM333.733 110.547c3.644-3.614 3.644-9.698 0-13.342-16.264-16.264-41.532-24.034-77.493-24.034h-0.482c-35.96 0-61.229 7.771-77.493 24.034-3.644 3.644-3.644 9.728 0 13.342 3.644 3.675 9.457 3.675 13.131 0 12.619-12.62 33.521-18.673 64.362-18.673h0.482c30.63 0 51.742 6.053 64.361 18.673 3.644 3.675 9.457 3.675 13.132 0zM362.135 191.955c0-18.191-15.059-33.039-33.28-33.039s-33.762 14.818-33.762 33.039c0 18.432 15.541 33.762 33.762 33.762s33.28-15.33 33.28-33.762zM392.734 380.883c0-14.517 11.897-26.443 26.474-26.443s26.474 11.926 26.474 26.443c0 14.577-11.926 26.504-26.474 26.504-14.577 0-26.474-11.927-26.474-26.504zM478.238 228.397c0 19.908-16.264 36.171-36.171 36.171-7.771 0-15.059-2.439-20.901-6.806 20.901-16.775 35.69-36.442 43.249-57.826 8.493 6.837 13.824 17.046 13.824 28.461z" /> +<glyph unicode="&#xe753;" d="M256 464.941c-133.060 0-240.941-107.851-240.941-240.941 0-98.635 59.332-183.417 144.233-220.672-0.662 16.836-0.15 37.014 4.186 55.326 4.608 19.546 30.991 131.283 30.991 131.283s-7.71 15.39-7.71 38.129c0 35.72 20.721 62.343 46.501 62.343 21.925 0 32.497-16.444 32.497-36.141 0-22.016-14.065-54.995-21.293-85.504-6.024-25.57 12.83-46.411 38.038-46.411 45.659 0 76.409 58.609 76.409 128.090 0 52.796-35.599 92.34-100.262 92.34-73.096 0-118.603-54.543-118.603-115.38 0-21.022 6.174-35.81 15.872-47.255 4.428-5.271 5.060-7.409 3.464-13.433-1.144-4.428-3.825-15.119-4.909-19.336-1.626-6.114-6.565-8.283-12.047-6.053-33.702 13.764-49.363 50.628-49.363 92.070 0 68.428 57.706 150.528 172.213 150.528 91.979 0 152.516-66.59 152.516-138.029 0-94.54-52.555-165.135-129.988-165.135-26.022 0-50.507 14.095-58.88 30.058 0 0-13.975-55.537-16.926-66.228-5.12-18.582-15.119-37.135-24.275-51.622 21.655-6.445 44.544-9.909 68.276-9.909 133.060 0 240.941 107.851 240.941 240.941s-107.882 240.941-240.941 240.941z" /> +<glyph unicode="&#xe754;" d="M0 409.555l209.829 28.883v-202.752h-209.829v173.869zM0 38.445l209.829-28.883v200.283h-209.829v-171.399zM232.93 441.54v-205.854h279.070v244.315l-279.070-38.46zM232.93 6.46l279.070-38.46v241.845h-279.070v-203.385z" /> +<glyph unicode="&#xe755;" d="M417.099 20.706c-15.33-7.83-35.78-25.058-43.309-32.286-5.662-5.391-29.034-8.101-42.225-1.356-15.33 7.83-7.259 20.209-30.931 20.962-11.836 0.301-23.401 0.301-34.966 0.301-10.21-0.301-20.42-0.813-30.931-1.054-35.478-0.813-38.972-23.702-61.862-22.889-15.601 0.542-35.208 12.921-69.12 19.877-23.672 4.879-46.502 6.174-51.38 16.685-4.819 10.511 5.933 22.317 6.716 32.527 0.813 13.733-10.21 32.286-2.139 39.303 6.987 6.174 21.775 1.627 31.443 6.957 10.21 5.903 14.516 10.511 14.516 23.13 3.764-12.86-0.271-23.341-8.614-28.461-5.12-3.223-14.516-4.849-22.347-4.066-6.174 0.572-9.939-0.241-11.565-2.68-2.41-2.952-1.627-8.342 1.355-15.33 2.952-6.988 6.445-11.565 5.903-20.149-0.271-8.613-9.939-18.853-8.313-26.112 0.542-2.711 3.222-5.12 9.939-6.988 10.752-2.952 30.388-5.903 49.483-10.511 21.263-5.361 43.309-15.029 57.043-13.161 40.869 5.662 17.468 49.483 11.023 59.934-34.696 54.363-57.555 89.841-75.836 75.866-4.578-3.764-4.849 9.156-4.578 14.276 0.813 17.769 9.698 24.185 15.059 37.918 10.21 26.112 18.010 55.928 33.611 71.258 11.655 15.089 29.937 39.544 33.46 52.435-2.982 27.979-3.795 57.555-4.307 83.335-0.542 27.708 3.764 51.953 34.966 68.849 7.5 4.066 17.438 5.662 27.949 5.662 18.552 0.301 39.244-5.12 52.435-14.788 20.992-15.601 34.154-48.67 32.557-72.313-1.084-18.553 2.139-37.647 8.072-57.555 6.988-23.401 18.041-39.786 35.78-58.609 21.263-22.588 37.918-66.952 42.767-95.172 4.307-26.413-1.627-42.797-7.259-43.611-8.613-1.295-13.974-28.461-40.87-27.407-17.197 0.813-18.824 11.023-23.673 19.908-7.8 13.704-15.601 9.397-18.553-5.12-1.627-7.259-0.572-18.041 1.868-26.052 4.849-16.956 3.223-32.828 0.271-52.465-5.662-37.105 26.082-44.092 47.345-26.323 20.962 17.438 25.54 20.149 51.892 29.305 40.056 13.733 26.624 25.811 5.090 33.069-19.365 6.476-20.149 39.033-13.192 45.207 1.627-34.966 19.908-40.087 27.437-44.906 33.069-20.51-12.378-37.466-32.015-47.405zM371.923 150.573c7.259 24.245 4.036 33.882-0.783 56.772-3.764 17.197-19.637 40.629-32.015 47.857 3.223-2.68 9.156-10.481 15.33-22.287 10.752-20.209 21.504-50.026 14.517-74.782-2.68-9.637-9.125-10.993-13.433-11.264-18.824-2.168-7.8 22.588-15.601 56.17-8.885 37.677-18.010 40.358-20.149 43.309-11.084 48.911-23.161 44.062-26.684 62.344-2.952 16.414 14.276 29.846-9.125 34.424-7.259 1.356-17.468 8.613-21.504 9.156-4.036 0.512-6.204 27.166 8.854 27.979 14.788 1.084 17.498-16.685 14.788-23.702-4.276-6.957 0.271-9.668 7.56-7.228 5.903 1.867 2.139 17.468 3.493 19.606-3.764 22.588-13.192 25.811-22.86 27.708-37.135-2.952-20.45-43.851-24.214-40.087-5.391 5.662-20.962 0.542-20.962 4.066 0.271 20.962-6.746 33.069-16.414 33.34-10.752 0.271-15.059-14.788-15.601-23.371-0.813-8.072 4.578-25.058 8.613-23.703 2.68 0.813 7.258 6.204 2.41 5.903-2.41 0-6.174 5.933-6.716 12.921-0.271 7.017 2.44 14.005 11.565 13.733 10.481-0.271 10.481-21.233 9.397-22.046-3.464-2.41-7.8-7.018-8.343-7.801-3.464-5.662-10.18-7.228-12.891-9.698-4.578-4.819-5.632-10.21-2.138-12.077 12.348-6.988 8.313-15.029 25.54-15.631 11.294-0.542 19.607 1.626 27.437 4.036 5.903 1.868 25.028 5.903 29.033 12.921 1.868 2.952 4.036 2.952 5.361 2.138 2.68-1.325 3.223-6.445-3.493-8.072-9.397-2.71-18.824-7.83-27.407-11.053-8.343-3.464-11.023-4.819-18.823-6.144-17.739-3.223-30.9 6.445-19.095-5.12 4.036-3.764 7.8-6.174 18.011-5.933 22.588 0.813 47.616 28.010 50.026 15.902 0.512-2.68-7.017-5.903-12.921-8.885-20.962-10.21-35.75-30.66-49.212-23.642-12.107 6.445-24.185 36.322-23.944 22.829 0.271-20.691-27.166-38.972-14.517-62.644-8.343-2.108-26.895-41.683-29.576-62.103-1.626-11.836 1.084-26.353-1.898-34.425-4.036-11.836-22.317 11.294-16.384 39.514 1.054 4.819 0 5.933-1.356 3.464-7.258-13.161-3.222-31.714 2.68-44.604 2.44-5.662 8.613-8.072 13.191-12.921 9.397-10.722 46.501-38.189 52.977-44.906 8.343-7.8 5.933-26.052-11.294-27.949 8.885-16.685 17.468-18.312 17.227-45.447 10.21 5.361 6.204 17.197 1.868 24.697-2.982 5.421-6.716 7.83-5.933 9.156 0.542 0.813 5.933 5.421 8.885 1.868 9.125-10.21 26.353-12.077 44.635-9.668 18.553 2.168 38.46 8.613 47.586 23.401 4.307 6.988 7.259 9.397 9.156 8.072 2.139-1.054 2.981-5.903 2.68-13.974-0.271-8.613-3.764-17.498-6.174-24.757-2.44-8.342-3.223-13.974 4.849-14.276 2.139 15.089 6.445 29.877 7.529 44.935 1.356 17.197-11.023 48.911 2.44 64.813 3.493 4.307 7.771 4.819 13.704 4.819 0.783 21.534 33.882 19.877 44.906 11.023 0 4.879-10.481 9.427-14.788 11.324zM152.486 228.006c-1.898-3.464-6.716-6.144-2.982-6.716 1.356-0.271 5.12 3.012 6.746 6.716 1.325 4.578 2.68 7.018 0.542 7.831-2.44 0.783-1.898-4.036-4.307-7.831zM214.046 373.775c-3.222 0.813-2.68-4.005-1.054-3.493 1.084 0 2.44-1.627 1.868-4.036-0.542-3.222-0.271-5.421 2.168-5.421 0.271 0 0.783 0 0.783 0.813 1.114 6.776-2.138 11.596-3.764 12.137zM221.334 349.048c-2.68-0.271-2.168 5.933 6.445 5.391-5.391-0.542-3.494-5.391-6.445-5.391zM243.381 353.626c7.8 3.464 10.481-1.897 7.8-2.981-2.71-0.783-2.982 4.337-7.8 2.981zM275.908 375.401c-3.493-0.301-2.409-1.868-0.783-2.409 2.139-0.603 4.307-4.337 4.849-8.343 0-0.542 2.68 0.542 2.68 1.356 0.241 6.415-5.391 9.638-6.747 9.397zM291.509 433.468c-2.139 2.168-4.307 4.066-6.445 4.066-5.391-0.542-2.711-6.174-3.493-8.885-1.084-2.952-5.090-5.391-2.409-7.529 2.44-1.868 4.036 2.952 9.156 4.819 1.325 0.572 7.529-0.241 8.854 2.71 0.241 1.356-3.223 2.952-5.662 4.819zM321.356 314.654c-5.090 3.192-6.174 8.584-8.041 6.716-5.662-6.174 6.988-19.095 12.348-20.209 3.223-0.542 5.662 3.795 4.849 7.56-1.084 5.090-4.849 3.222-9.156 5.933z" /> +<glyph unicode="&#xe756;" d="M496.941 152.712c0-51.531-42.587-93.425-94.81-93.425-1.868 0-3.524 0.241-5.18 0.241h-286.358c-52.706 3.072-95.533 43.309-95.533 95.533 0 35.057 19.064 65.656 47.526 82.341-1.867 6.114-2.831 12.469-2.831 19.305 0 35.99 29.425 65.174 66.108 65.174 15.059 0 29.184-5.18 40.478-13.643 23.070 47.526 72.012 80.474 129.175 80.474 79.3 0 143.3-63.308 143.3-141.191 0-2.831-0.241-5.662-0.241-8.463 34.123-14.125 58.368-47.525 58.368-86.347zM193.898 114.341c23.070 0 39.756 7.288 56.47 23.281-6.837 8.463-14.366 16.716-21.413 25.178-9.637-9.397-20.239-15.3-33.882-15.3-16.715 0-31.052 11.053-31.052 28.461 0 17.167 14.366 28.461 30.6 28.461 51.772 0 62.825-90.353 138.12-90.353 36.714 0 67.764 23.070 67.764 61.651 0 39.063-31.292 61.892-68.457 61.892-23.070 0-40.237-6.596-56.712-22.829 7.529-8.222 14.577-16.926 21.895-25.419 9.397 9.186 19.998 15.059 33.401 15.059 15.541 0 31.051-11.053 31.051-27.527 0-18.131-13.192-29.636-30.81-29.636-50.116 0-63.518 90.353-136.945 90.353-36.472 0-68.698-22.348-68.698-61.169-0.060-39.725 31.232-62.103 68.668-62.103z" /> +<glyph unicode="&#xe757;" d="M300.544 118.257l-47.375-47.676-9.397-9.397c-27.618-27.286-66.198-36.714-101.316-27.919-6.626-28.883-32.346-50.206-63.066-50.206-35.449 0-64.332 28.883-64.332 64.632 0 30.389 21.022 56.139 49.573 62.705-9.096 35.478 0.301 74.391 27.919 101.978l3.764 3.764 47.375-47.707-3.434-3.433c-15.692-15.36-15.36-40.448 0-56.109 15.36-15.39 40.478-15.39 55.838 0l9.427 9.397 47.375 47.707 50.508 50.176 47.375-47.707-50.236-50.206zM247.537 378.654l-47.676-47.646-3.795 3.764c-15.36 15.36-40.478 15.36-55.838 0-15.36-15.39-15.36-40.81 0-56.17l106.978-106.978-47.345-47.676-50.507 50.206-47.375 47.646-9.427 9.397c-28.883 28.551-37.647 69.662-26.684 106.375-28.852 6.264-50.176 31.985-50.176 62.735 0 35.78 28.883 64.632 64.332 64.632 32.316 0 58.669-23.522 63.669-53.971 34.816 8.162 72.794-1.596 100.081-28.522l3.764-3.795zM440.471 336.308c10.361-36.051 1.235-76.529-27.286-105.080l-3.764-3.764-47.375 47.707 3.764 3.734c15.36 15.39 15.36 40.508 0 55.868-15.36 15.36-40.478 15.36-55.838 0l-107.309-107.34-47.676 47.707 50.507 50.206 47.676 47.646 9.096 9.427c28.551 28.522 69.331 37.647 105.743 26.956 4.367 31.413 31.353 55.567 64 55.567 35.449 0 64.332-28.883 64.332-64.632-0.030-32.618-24.486-59.603-55.868-64zM432.61-16.941c-31.353 0-57.404 22.257-63.368 51.772-36.382-11.264-78.125-2.53-106.978 26.353l-3.433 3.764 47.375 47.676 3.764-3.735c15.36-15.39 40.478-15.39 55.838 0 15.36 15.36 15.36 40.448 0 55.838l-9.397 9.427-97.913 97.852 47.676 47.707 97.882-97.913 9.125-9.397c27.286-27.286 37.014-65.897 28.22-101.014 31.382-4.397 55.537-31.082 55.537-63.668 0-35.78-28.853-64.662-64.332-64.662z" /> +<glyph unicode="&#xe758;" d="M468.028 464.941l-38.55-433.062-174.080-48.82-172.875 48.82-38.55 433.062h424.057zM389.12 376.425h-266.24l14.155-160.828h184.35l-6.686-68.638-59.302-16.022-59.030 15.993-3.916 42.135h-52.676l6.626-83.697 109.026-30.118h1.175v0.301l108.152 29.817 15.059 163.84h-193.988l-4.518 54.513h202.993l4.819 52.706z" /> +<glyph unicode="&#xe759;" d="M256 464.941c-133.060 0-240.941-107.911-240.941-240.941 0-133.060 107.882-240.941 240.941-240.941s240.941 107.882 240.941 240.941c0 133.029-107.882 240.941-240.941 240.941zM163.629 149.339c-41.894 0-75.867 33.913-75.867 75.836 0 41.894 33.972 75.836 75.867 75.836s75.806-33.942 75.806-75.836c0-41.924-33.942-75.836-75.806-75.836zM353.882 149.339c-41.894 0-75.836 33.913-75.836 75.836 0 41.894 33.942 75.836 75.836 75.836s75.836-33.942 75.836-75.836c0-41.924-33.942-75.836-75.836-75.836z" /> +<glyph unicode="&#xe75a;" d="M0 419.764v-391.529h512v391.529h-512zM255.82 184.335l-207.691 205.312h416.226l-208.535-205.312zM173.327 223.518l-143.209-141.011v282.594l143.209-141.583zM194.74 202.346l61.019-60.325 60.115 59.212 144.565-142.878h-411.919l146.221 143.993zM337.348 222.344l144.535 142.306v-285.124l-144.534 142.818z" /> +<glyph unicode="&#xe75b;" d="M257.897-16.941c-111.978 0-212.691 88.124-212.691 207.993 0 119.688 93.304 175.074 110.592 184.139 20.601 10.963 35.418 16.745 58.73 35.388 11.535 9.065 21.143 22.257 24.184 54.362 16.715-20.028 36.774-43.339 51.019-52.977 23.341-15.36 46.683-21.413 71.077-36.774 14.818-9.065 105.954-64.753 105.954-187.964 0-122.94-97.159-204.167-208.866-204.167zM422.55 181.745c-21.956 0-66.409-45.568-89.721-45.839-27.136-0.542-64.723 53.82-119.085 53.308-42.827-0.301-76.559-34.334-77.132-70.565-0.271-20.329 6.325-35.418 20.329-44.996 9.337-6.295 17.829-10.149 45.538-10.149 46.11 0 104.568 57.103 131.464 56.23 21.384-0.783 54.573-53.248 71.349-54.332 13.161-1.084 20.028 4.94 31.262 21.113 10.963 16.474 15.661 42.285 15.661 56.832 0 14.245-6.325 38.4-29.666 38.4zM358.912 36.036c-9.337-6.867-30.208-15.39-59.844-15.39s-43.611 6.325-52.947 13.462c-1.356 1.084-0.813 1.084-3.584 1.084-3.012 0-4.638-1.385-7.108-3.283-2.198-1.928-3.283-6.596 0-9.878 20.299-18.643 54.332-17.017 79.3-14.788 25.269 2.469 46.683 17.257 48.851 19.456 3.283 3.252 2.469 6.024 1.897 7.951-0.542 1.928-2.199 4.638-6.565 1.385zM344.064 82.929c-5.481 3.554-13.402 4.126-20.812 4.126-7.439 0-11.535 0.542-19.456-2.74-8.012-3.283-16.233-10.692-21.413-15.39-5.24-4.638-6.053-8.222-3.313-12.077 2.771-3.524 5.783-1.325 13.462 5.24 7.951 6.325 13.192 12.077 29.365 12.077s18.944-6.053 22.197-12.077c3.313-6.024 3.584-6.867 6.867-5.24 3.855 1.928 5.783 4.699 3.855 9.397-1.957 4.638-5.24 12.86-10.752 16.685z" /> +<glyph unicode="&#xe75c;" d="M15.059 198.58l141.764-92.461 99.177 82.703-142.908 88.245zM156.822 448.015l-141.764-92.491 98.033-78.457 142.908 88.154zM496.941 355.524l-141.733 92.491-99.207-82.793 142.938-88.154zM256 188.822l99.207-82.703 141.733 92.461-98.003 78.486zM256.301 171.023l-99.478-82.492-42.556 27.829v-31.172l142.035-85.203 142.065 85.203v31.172l-42.587-27.829z" /> +<glyph unicode="&#xe75d;" d="M496.941 442.052l-72.493-363.339-219.166-72.764-190.223 72.764 19.365 97.069h80.956l-7.921-40.057 114.989-43.882 132.457 43.882 18.492 92.401h-329.156l15.782 80.896h329.487l10.39 52.103h-329.216l16.052 80.926h410.202z" /> +<glyph unicode="&#xe75e;" d="M300.243 58.353h-30.118c0 97.37-80.655 176.58-179.772 176.58v30.118c115.742 0 209.89-92.732 209.89-206.697zM90.353 374.588v-30.117c160.436 0 286.118-125.681 286.118-286.118h30.118c0 177.333-138.902 316.236-316.236 316.236zM180.706 103.5c0 24.908-20.209 45.207-45.086 45.207-24.968 0-45.267-20.3-45.267-45.207s20.299-45.176 45.267-45.176c24.877 0 45.086 20.269 45.086 45.176zM150.588 103.5c0-8.283-6.716-15.059-14.969-15.059-8.343 0-15.149 6.776-15.149 15.059 0 8.313 6.806 15.089 15.149 15.089 8.252 0 14.969-6.776 14.969-15.089zM512 13.176v421.647c0 24.908-20.269 45.176-45.176 45.176h-421.647c-24.907 0-45.176-20.269-45.176-45.176v-421.647c0-24.907 20.269-45.176 45.176-45.176h421.647c24.907 0 45.176 20.269 45.176 45.176zM466.824 449.882c8.313 0 15.059-6.776 15.059-15.059v-421.647c0-8.283-6.747-15.059-15.059-15.059h-421.647c-8.313 0-15.059 6.776-15.059 15.059v421.647c0 8.282 6.746 15.059 15.059 15.059h421.647z" /> +<glyph unicode="&#xe75f;" d="M336.505-32h-30.118c0 166.068-137.457 301.176-306.387 301.176v30.118c185.555 0 336.505-148.63 336.505-331.294zM0 480v-30.118c270.216 0 481.882-211.667 481.882-481.882h30.118c0 287.082-224.918 512-512 512zM120.471 28.205c0 33.25-26.986 60.266-60.115 60.266-33.28 0-60.356-27.015-60.356-60.265 0-33.22 27.076-60.205 60.356-60.205 33.13 0 60.115 26.986 60.115 60.205zM90.353 28.205c0-16.595-13.463-30.087-29.997-30.087-16.685 0-30.238 13.493-30.238 30.087 0 16.625 13.553 30.148 30.238 30.148 16.535 0 29.997-13.523 29.997-30.148z" /> +</font></defs></svg> \ No newline at end of file diff --git a/assets/less/icons/themify-icons/fonts/themify.ttf b/assets/less/icons/themify-icons/fonts/themify.ttf new file mode 100644 index 0000000..5d627e7 Binary files /dev/null and b/assets/less/icons/themify-icons/fonts/themify.ttf differ diff --git a/assets/less/icons/themify-icons/fonts/themify.woff b/assets/less/icons/themify-icons/fonts/themify.woff new file mode 100644 index 0000000..847ebd1 Binary files /dev/null and b/assets/less/icons/themify-icons/fonts/themify.woff differ diff --git a/assets/less/icons/themify-icons/ie7/ie7.css b/assets/less/icons/themify-icons/ie7/ie7.css new file mode 100644 index 0000000..b1f6a1f --- /dev/null +++ b/assets/less/icons/themify-icons/ie7/ie7.css @@ -0,0 +1,1056 @@ +.ti-wand { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;'); +} +.ti-volume { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe601;'); +} +.ti-user { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe602;'); +} +.ti-unlock { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe603;'); +} +.ti-unlink { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe604;'); +} +.ti-trash { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe605;'); +} +.ti-thought { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe606;'); +} +.ti-target { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe607;'); +} +.ti-tag { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe608;'); +} +.ti-tablet { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe609;'); +} +.ti-star { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60a;'); +} +.ti-spray { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60b;'); +} +.ti-signal { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60c;'); +} +.ti-shopping-cart { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60d;'); +} +.ti-shopping-cart-full { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60e;'); +} +.ti-settings { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60f;'); +} +.ti-search { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe610;'); +} +.ti-zoom-in { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe611;'); +} +.ti-zoom-out { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe612;'); +} +.ti-cut { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe613;'); +} +.ti-ruler { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe614;'); +} +.ti-ruler-pencil { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe615;'); +} +.ti-ruler-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe616;'); +} +.ti-bookmark { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe617;'); +} +.ti-bookmark-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe618;'); +} +.ti-reload { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe619;'); +} +.ti-plus { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61a;'); +} +.ti-pin { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61b;'); +} +.ti-pencil { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61c;'); +} +.ti-pencil-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61d;'); +} +.ti-paint-roller { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61e;'); +} +.ti-paint-bucket { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe61f;'); +} +.ti-na { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe620;'); +} +.ti-mobile { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe621;'); +} +.ti-minus { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe622;'); +} +.ti-medall { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe623;'); +} +.ti-medall-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe624;'); +} +.ti-marker { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe625;'); +} +.ti-marker-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe626;'); +} +.ti-arrow-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe627;'); +} +.ti-arrow-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe628;'); +} +.ti-arrow-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe629;'); +} +.ti-arrow-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62a;'); +} +.ti-lock { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62b;'); +} +.ti-location-arrow { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62c;'); +} +.ti-link { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62d;'); +} +.ti-layout { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62e;'); +} +.ti-layers { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe62f;'); +} +.ti-layers-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe630;'); +} +.ti-key { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe631;'); +} +.ti-import { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe632;'); +} +.ti-image { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe633;'); +} +.ti-heart { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe634;'); +} +.ti-heart-broken { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe635;'); +} +.ti-hand-stop { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe636;'); +} +.ti-hand-open { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe637;'); +} +.ti-hand-drag { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe638;'); +} +.ti-folder { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe639;'); +} +.ti-flag { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63a;'); +} +.ti-flag-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63b;'); +} +.ti-flag-alt-2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63c;'); +} +.ti-eye { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63d;'); +} +.ti-export { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63e;'); +} +.ti-exchange-vertical { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe63f;'); +} +.ti-desktop { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe640;'); +} +.ti-cup { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe641;'); +} +.ti-crown { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe642;'); +} +.ti-comments { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe643;'); +} +.ti-comment { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe644;'); +} +.ti-comment-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe645;'); +} +.ti-close { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe646;'); +} +.ti-clip { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe647;'); +} +.ti-angle-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe648;'); +} +.ti-angle-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe649;'); +} +.ti-angle-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64a;'); +} +.ti-angle-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64b;'); +} +.ti-check { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64c;'); +} +.ti-check-box { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64d;'); +} +.ti-camera { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64e;'); +} +.ti-announcement { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe64f;'); +} +.ti-brush { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe650;'); +} +.ti-briefcase { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe651;'); +} +.ti-bolt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe652;'); +} +.ti-bolt-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe653;'); +} +.ti-blackboard { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe654;'); +} +.ti-bag { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe655;'); +} +.ti-move { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe656;'); +} +.ti-arrows-vertical { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe657;'); +} +.ti-arrows-horizontal { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe658;'); +} +.ti-fullscreen { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe659;'); +} +.ti-arrow-top-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65a;'); +} +.ti-arrow-top-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65b;'); +} +.ti-arrow-circle-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65c;'); +} +.ti-arrow-circle-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65d;'); +} +.ti-arrow-circle-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65e;'); +} +.ti-arrow-circle-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe65f;'); +} +.ti-angle-double-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe660;'); +} +.ti-angle-double-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe661;'); +} +.ti-angle-double-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe662;'); +} +.ti-angle-double-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe663;'); +} +.ti-zip { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe664;'); +} +.ti-world { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe665;'); +} +.ti-wheelchair { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe666;'); +} +.ti-view-list { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe667;'); +} +.ti-view-list-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe668;'); +} +.ti-view-grid { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe669;'); +} +.ti-uppercase { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66a;'); +} +.ti-upload { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66b;'); +} +.ti-underline { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66c;'); +} +.ti-truck { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66d;'); +} +.ti-timer { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66e;'); +} +.ti-ticket { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe66f;'); +} +.ti-thumb-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe670;'); +} +.ti-thumb-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe671;'); +} +.ti-text { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe672;'); +} +.ti-stats-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe673;'); +} +.ti-stats-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe674;'); +} +.ti-split-v { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe675;'); +} +.ti-split-h { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe676;'); +} +.ti-smallcap { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe677;'); +} +.ti-shine { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe678;'); +} +.ti-shift-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe679;'); +} +.ti-shift-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67a;'); +} +.ti-shield { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67b;'); +} +.ti-notepad { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67c;'); +} +.ti-server { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67d;'); +} +.ti-quote-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67e;'); +} +.ti-quote-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe67f;'); +} +.ti-pulse { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe680;'); +} +.ti-printer { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe681;'); +} +.ti-power-off { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe682;'); +} +.ti-plug { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe683;'); +} +.ti-pie-chart { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe684;'); +} +.ti-paragraph { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe685;'); +} +.ti-panel { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe686;'); +} +.ti-package { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe687;'); +} +.ti-music { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe688;'); +} +.ti-music-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe689;'); +} +.ti-mouse { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68a;'); +} +.ti-mouse-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68b;'); +} +.ti-money { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68c;'); +} +.ti-microphone { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68d;'); +} +.ti-menu { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68e;'); +} +.ti-menu-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe68f;'); +} +.ti-map { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe690;'); +} +.ti-map-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe691;'); +} +.ti-loop { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe692;'); +} +.ti-location-pin { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe693;'); +} +.ti-list { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe694;'); +} +.ti-light-bulb { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe695;'); +} +.ti-Italic { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe696;'); +} +.ti-info { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe697;'); +} +.ti-infinite { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe698;'); +} +.ti-id-badge { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe699;'); +} +.ti-hummer { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69a;'); +} +.ti-home { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69b;'); +} +.ti-help { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69c;'); +} +.ti-headphone { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69d;'); +} +.ti-harddrives { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69e;'); +} +.ti-harddrive { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe69f;'); +} +.ti-gift { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a0;'); +} +.ti-game { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a1;'); +} +.ti-filter { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a2;'); +} +.ti-files { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a3;'); +} +.ti-file { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a4;'); +} +.ti-eraser { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a5;'); +} +.ti-envelope { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a6;'); +} +.ti-download { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a7;'); +} +.ti-direction { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a8;'); +} +.ti-direction-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6a9;'); +} +.ti-dashboard { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6aa;'); +} +.ti-control-stop { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ab;'); +} +.ti-control-shuffle { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ac;'); +} +.ti-control-play { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ad;'); +} +.ti-control-pause { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ae;'); +} +.ti-control-forward { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6af;'); +} +.ti-control-backward { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b0;'); +} +.ti-cloud { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b1;'); +} +.ti-cloud-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b2;'); +} +.ti-cloud-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b3;'); +} +.ti-clipboard { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b4;'); +} +.ti-car { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b5;'); +} +.ti-calendar { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b6;'); +} +.ti-book { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b7;'); +} +.ti-bell { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b8;'); +} +.ti-basketball { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6b9;'); +} +.ti-bar-chart { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ba;'); +} +.ti-bar-chart-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bb;'); +} +.ti-back-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bc;'); +} +.ti-back-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bd;'); +} +.ti-arrows-corner { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6be;'); +} +.ti-archive { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6bf;'); +} +.ti-anchor { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c0;'); +} +.ti-align-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c1;'); +} +.ti-align-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c2;'); +} +.ti-align-justify { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c3;'); +} +.ti-align-center { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c4;'); +} +.ti-alert { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c5;'); +} +.ti-alarm-clock { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c6;'); +} +.ti-agenda { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c7;'); +} +.ti-write { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c8;'); +} +.ti-window { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6c9;'); +} +.ti-widgetized { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ca;'); +} +.ti-widget { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cb;'); +} +.ti-widget-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cc;'); +} +.ti-wallet { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cd;'); +} +.ti-video-clapper { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ce;'); +} +.ti-video-camera { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6cf;'); +} +.ti-vector { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d0;'); +} +.ti-themify-logo { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d1;'); +} +.ti-themify-favicon { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d2;'); +} +.ti-themify-favicon-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d3;'); +} +.ti-support { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d4;'); +} +.ti-stamp { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d5;'); +} +.ti-split-v-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d6;'); +} +.ti-slice { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d7;'); +} +.ti-shortcode { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d8;'); +} +.ti-shift-right-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6d9;'); +} +.ti-shift-left-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6da;'); +} +.ti-ruler-alt-2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6db;'); +} +.ti-receipt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6dc;'); +} +.ti-pin2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6dd;'); +} +.ti-pin-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6de;'); +} +.ti-pencil-alt2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6df;'); +} +.ti-palette { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e0;'); +} +.ti-more { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e1;'); +} +.ti-more-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e2;'); +} +.ti-microphone-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e3;'); +} +.ti-magnet { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e4;'); +} +.ti-line-double { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e5;'); +} +.ti-line-dotted { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e6;'); +} +.ti-line-dashed { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e7;'); +} +.ti-layout-width-full { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e8;'); +} +.ti-layout-width-default { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6e9;'); +} +.ti-layout-width-default-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ea;'); +} +.ti-layout-tab { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6eb;'); +} +.ti-layout-tab-window { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ec;'); +} +.ti-layout-tab-v { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ed;'); +} +.ti-layout-tab-min { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ee;'); +} +.ti-layout-slider { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ef;'); +} +.ti-layout-slider-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f0;'); +} +.ti-layout-sidebar-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f1;'); +} +.ti-layout-sidebar-none { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f2;'); +} +.ti-layout-sidebar-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f3;'); +} +.ti-layout-placeholder { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f4;'); +} +.ti-layout-menu { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f5;'); +} +.ti-layout-menu-v { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f6;'); +} +.ti-layout-menu-separated { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f7;'); +} +.ti-layout-menu-full { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f8;'); +} +.ti-layout-media-right-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6f9;'); +} +.ti-layout-media-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fa;'); +} +.ti-layout-media-overlay { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fb;'); +} +.ti-layout-media-overlay-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fc;'); +} +.ti-layout-media-overlay-alt-2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fd;'); +} +.ti-layout-media-left-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6fe;'); +} +.ti-layout-media-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe6ff;'); +} +.ti-layout-media-center-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe700;'); +} +.ti-layout-media-center { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe701;'); +} +.ti-layout-list-thumb { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe702;'); +} +.ti-layout-list-thumb-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe703;'); +} +.ti-layout-list-post { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe704;'); +} +.ti-layout-list-large-image { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe705;'); +} +.ti-layout-line-solid { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe706;'); +} +.ti-layout-grid4 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe707;'); +} +.ti-layout-grid3 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe708;'); +} +.ti-layout-grid2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe709;'); +} +.ti-layout-grid2-thumb { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70a;'); +} +.ti-layout-cta-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70b;'); +} +.ti-layout-cta-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70c;'); +} +.ti-layout-cta-center { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70d;'); +} +.ti-layout-cta-btn-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70e;'); +} +.ti-layout-cta-btn-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe70f;'); +} +.ti-layout-column4 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe710;'); +} +.ti-layout-column3 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe711;'); +} +.ti-layout-column2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe712;'); +} +.ti-layout-accordion-separated { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe713;'); +} +.ti-layout-accordion-merged { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe714;'); +} +.ti-layout-accordion-list { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe715;'); +} +.ti-ink-pen { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe716;'); +} +.ti-info-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe717;'); +} +.ti-help-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe718;'); +} +.ti-headphone-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe719;'); +} +.ti-hand-point-up { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71a;'); +} +.ti-hand-point-right { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71b;'); +} +.ti-hand-point-left { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71c;'); +} +.ti-hand-point-down { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71d;'); +} +.ti-gallery { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71e;'); +} +.ti-face-smile { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe71f;'); +} +.ti-face-sad { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe720;'); +} +.ti-credit-card { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe721;'); +} +.ti-control-skip-forward { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe722;'); +} +.ti-control-skip-backward { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe723;'); +} +.ti-control-record { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe724;'); +} +.ti-control-eject { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe725;'); +} +.ti-comments-smiley { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe726;'); +} +.ti-brush-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe727;'); +} +.ti-youtube { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe728;'); +} +.ti-vimeo { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe729;'); +} +.ti-twitter { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72a;'); +} +.ti-time { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72b;'); +} +.ti-tumblr { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72c;'); +} +.ti-skype { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72d;'); +} +.ti-share { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72e;'); +} +.ti-share-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe72f;'); +} +.ti-rocket { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe730;'); +} +.ti-pinterest { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe731;'); +} +.ti-new-window { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe732;'); +} +.ti-microsoft { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe733;'); +} +.ti-list-ol { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe734;'); +} +.ti-linkedin { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe735;'); +} +.ti-layout-sidebar-2 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe736;'); +} +.ti-layout-grid4-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe737;'); +} +.ti-layout-grid3-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe738;'); +} +.ti-layout-grid2-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe739;'); +} +.ti-layout-column4-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73a;'); +} +.ti-layout-column3-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73b;'); +} +.ti-layout-column2-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73c;'); +} +.ti-instagram { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73d;'); +} +.ti-google { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73e;'); +} +.ti-github { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe73f;'); +} +.ti-flickr { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe740;'); +} +.ti-facebook { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe741;'); +} +.ti-dropbox { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe742;'); +} +.ti-dribbble { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe743;'); +} +.ti-apple { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe744;'); +} +.ti-android { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe745;'); +} +.ti-save { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe746;'); +} +.ti-save-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe747;'); +} +.ti-yahoo { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe748;'); +} +.ti-wordpress { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe749;'); +} +.ti-vimeo-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74a;'); +} +.ti-twitter-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74b;'); +} +.ti-tumblr-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74c;'); +} +.ti-trello { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74d;'); +} +.ti-stack-overflow { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74e;'); +} +.ti-soundcloud { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe74f;'); +} +.ti-sharethis { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe750;'); +} +.ti-sharethis-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe751;'); +} +.ti-reddit { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe752;'); +} +.ti-pinterest-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe753;'); +} +.ti-microsoft-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe754;'); +} +.ti-linux { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe755;'); +} +.ti-jsfiddle { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe756;'); +} +.ti-joomla { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe757;'); +} +.ti-html5 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe758;'); +} +.ti-flickr-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe759;'); +} +.ti-email { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75a;'); +} +.ti-drupal { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75b;'); +} +.ti-dropbox-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75c;'); +} +.ti-css3 { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75d;'); +} +.ti-rss { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75e;'); +} +.ti-rss-alt { + *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe75f;'); +} diff --git a/assets/less/icons/themify-icons/ie7/ie7.js b/assets/less/icons/themify-icons/ie7/ie7.js new file mode 100644 index 0000000..dec643e --- /dev/null +++ b/assets/less/icons/themify-icons/ie7/ie7.js @@ -0,0 +1,383 @@ +/* To avoid CSS expressions while still supporting IE 7 and IE 6, use this script */ +/* The script tag referring to this file must be placed before the ending body tag. */ + +/* Use conditional comments in order to target IE 7 and older: + <!--[if lt IE 8]><!--> + <script src="ie7/ie7.js"></script> + <!--<![endif]--> +*/ + +(function() { + function addIcon(el, entity) { + var html = el.innerHTML; + el.innerHTML = '<span style="font-family: \'themify\'">' + entity + '</span>' + html; + } + var icons = { + 'ti-wand': '&#xe600;', + 'ti-volume': '&#xe601;', + 'ti-user': '&#xe602;', + 'ti-unlock': '&#xe603;', + 'ti-unlink': '&#xe604;', + 'ti-trash': '&#xe605;', + 'ti-thought': '&#xe606;', + 'ti-target': '&#xe607;', + 'ti-tag': '&#xe608;', + 'ti-tablet': '&#xe609;', + 'ti-star': '&#xe60a;', + 'ti-spray': '&#xe60b;', + 'ti-signal': '&#xe60c;', + 'ti-shopping-cart': '&#xe60d;', + 'ti-shopping-cart-full': '&#xe60e;', + 'ti-settings': '&#xe60f;', + 'ti-search': '&#xe610;', + 'ti-zoom-in': '&#xe611;', + 'ti-zoom-out': '&#xe612;', + 'ti-cut': '&#xe613;', + 'ti-ruler': '&#xe614;', + 'ti-ruler-pencil': '&#xe615;', + 'ti-ruler-alt': '&#xe616;', + 'ti-bookmark': '&#xe617;', + 'ti-bookmark-alt': '&#xe618;', + 'ti-reload': '&#xe619;', + 'ti-plus': '&#xe61a;', + 'ti-pin': '&#xe61b;', + 'ti-pencil': '&#xe61c;', + 'ti-pencil-alt': '&#xe61d;', + 'ti-paint-roller': '&#xe61e;', + 'ti-paint-bucket': '&#xe61f;', + 'ti-na': '&#xe620;', + 'ti-mobile': '&#xe621;', + 'ti-minus': '&#xe622;', + 'ti-medall': '&#xe623;', + 'ti-medall-alt': '&#xe624;', + 'ti-marker': '&#xe625;', + 'ti-marker-alt': '&#xe626;', + 'ti-arrow-up': '&#xe627;', + 'ti-arrow-right': '&#xe628;', + 'ti-arrow-left': '&#xe629;', + 'ti-arrow-down': '&#xe62a;', + 'ti-lock': '&#xe62b;', + 'ti-location-arrow': '&#xe62c;', + 'ti-link': '&#xe62d;', + 'ti-layout': '&#xe62e;', + 'ti-layers': '&#xe62f;', + 'ti-layers-alt': '&#xe630;', + 'ti-key': '&#xe631;', + 'ti-import': '&#xe632;', + 'ti-image': '&#xe633;', + 'ti-heart': '&#xe634;', + 'ti-heart-broken': '&#xe635;', + 'ti-hand-stop': '&#xe636;', + 'ti-hand-open': '&#xe637;', + 'ti-hand-drag': '&#xe638;', + 'ti-folder': '&#xe639;', + 'ti-flag': '&#xe63a;', + 'ti-flag-alt': '&#xe63b;', + 'ti-flag-alt-2': '&#xe63c;', + 'ti-eye': '&#xe63d;', + 'ti-export': '&#xe63e;', + 'ti-exchange-vertical': '&#xe63f;', + 'ti-desktop': '&#xe640;', + 'ti-cup': '&#xe641;', + 'ti-crown': '&#xe642;', + 'ti-comments': '&#xe643;', + 'ti-comment': '&#xe644;', + 'ti-comment-alt': '&#xe645;', + 'ti-close': '&#xe646;', + 'ti-clip': '&#xe647;', + 'ti-angle-up': '&#xe648;', + 'ti-angle-right': '&#xe649;', + 'ti-angle-left': '&#xe64a;', + 'ti-angle-down': '&#xe64b;', + 'ti-check': '&#xe64c;', + 'ti-check-box': '&#xe64d;', + 'ti-camera': '&#xe64e;', + 'ti-announcement': '&#xe64f;', + 'ti-brush': '&#xe650;', + 'ti-briefcase': '&#xe651;', + 'ti-bolt': '&#xe652;', + 'ti-bolt-alt': '&#xe653;', + 'ti-blackboard': '&#xe654;', + 'ti-bag': '&#xe655;', + 'ti-move': '&#xe656;', + 'ti-arrows-vertical': '&#xe657;', + 'ti-arrows-horizontal': '&#xe658;', + 'ti-fullscreen': '&#xe659;', + 'ti-arrow-top-right': '&#xe65a;', + 'ti-arrow-top-left': '&#xe65b;', + 'ti-arrow-circle-up': '&#xe65c;', + 'ti-arrow-circle-right': '&#xe65d;', + 'ti-arrow-circle-left': '&#xe65e;', + 'ti-arrow-circle-down': '&#xe65f;', + 'ti-angle-double-up': '&#xe660;', + 'ti-angle-double-right': '&#xe661;', + 'ti-angle-double-left': '&#xe662;', + 'ti-angle-double-down': '&#xe663;', + 'ti-zip': '&#xe664;', + 'ti-world': '&#xe665;', + 'ti-wheelchair': '&#xe666;', + 'ti-view-list': '&#xe667;', + 'ti-view-list-alt': '&#xe668;', + 'ti-view-grid': '&#xe669;', + 'ti-uppercase': '&#xe66a;', + 'ti-upload': '&#xe66b;', + 'ti-underline': '&#xe66c;', + 'ti-truck': '&#xe66d;', + 'ti-timer': '&#xe66e;', + 'ti-ticket': '&#xe66f;', + 'ti-thumb-up': '&#xe670;', + 'ti-thumb-down': '&#xe671;', + 'ti-text': '&#xe672;', + 'ti-stats-up': '&#xe673;', + 'ti-stats-down': '&#xe674;', + 'ti-split-v': '&#xe675;', + 'ti-split-h': '&#xe676;', + 'ti-smallcap': '&#xe677;', + 'ti-shine': '&#xe678;', + 'ti-shift-right': '&#xe679;', + 'ti-shift-left': '&#xe67a;', + 'ti-shield': '&#xe67b;', + 'ti-notepad': '&#xe67c;', + 'ti-server': '&#xe67d;', + 'ti-quote-right': '&#xe67e;', + 'ti-quote-left': '&#xe67f;', + 'ti-pulse': '&#xe680;', + 'ti-printer': '&#xe681;', + 'ti-power-off': '&#xe682;', + 'ti-plug': '&#xe683;', + 'ti-pie-chart': '&#xe684;', + 'ti-paragraph': '&#xe685;', + 'ti-panel': '&#xe686;', + 'ti-package': '&#xe687;', + 'ti-music': '&#xe688;', + 'ti-music-alt': '&#xe689;', + 'ti-mouse': '&#xe68a;', + 'ti-mouse-alt': '&#xe68b;', + 'ti-money': '&#xe68c;', + 'ti-microphone': '&#xe68d;', + 'ti-menu': '&#xe68e;', + 'ti-menu-alt': '&#xe68f;', + 'ti-map': '&#xe690;', + 'ti-map-alt': '&#xe691;', + 'ti-loop': '&#xe692;', + 'ti-location-pin': '&#xe693;', + 'ti-list': '&#xe694;', + 'ti-light-bulb': '&#xe695;', + 'ti-Italic': '&#xe696;', + 'ti-info': '&#xe697;', + 'ti-infinite': '&#xe698;', + 'ti-id-badge': '&#xe699;', + 'ti-hummer': '&#xe69a;', + 'ti-home': '&#xe69b;', + 'ti-help': '&#xe69c;', + 'ti-headphone': '&#xe69d;', + 'ti-harddrives': '&#xe69e;', + 'ti-harddrive': '&#xe69f;', + 'ti-gift': '&#xe6a0;', + 'ti-game': '&#xe6a1;', + 'ti-filter': '&#xe6a2;', + 'ti-files': '&#xe6a3;', + 'ti-file': '&#xe6a4;', + 'ti-eraser': '&#xe6a5;', + 'ti-envelope': '&#xe6a6;', + 'ti-download': '&#xe6a7;', + 'ti-direction': '&#xe6a8;', + 'ti-direction-alt': '&#xe6a9;', + 'ti-dashboard': '&#xe6aa;', + 'ti-control-stop': '&#xe6ab;', + 'ti-control-shuffle': '&#xe6ac;', + 'ti-control-play': '&#xe6ad;', + 'ti-control-pause': '&#xe6ae;', + 'ti-control-forward': '&#xe6af;', + 'ti-control-backward': '&#xe6b0;', + 'ti-cloud': '&#xe6b1;', + 'ti-cloud-up': '&#xe6b2;', + 'ti-cloud-down': '&#xe6b3;', + 'ti-clipboard': '&#xe6b4;', + 'ti-car': '&#xe6b5;', + 'ti-calendar': '&#xe6b6;', + 'ti-book': '&#xe6b7;', + 'ti-bell': '&#xe6b8;', + 'ti-basketball': '&#xe6b9;', + 'ti-bar-chart': '&#xe6ba;', + 'ti-bar-chart-alt': '&#xe6bb;', + 'ti-back-right': '&#xe6bc;', + 'ti-back-left': '&#xe6bd;', + 'ti-arrows-corner': '&#xe6be;', + 'ti-archive': '&#xe6bf;', + 'ti-anchor': '&#xe6c0;', + 'ti-align-right': '&#xe6c1;', + 'ti-align-left': '&#xe6c2;', + 'ti-align-justify': '&#xe6c3;', + 'ti-align-center': '&#xe6c4;', + 'ti-alert': '&#xe6c5;', + 'ti-alarm-clock': '&#xe6c6;', + 'ti-agenda': '&#xe6c7;', + 'ti-write': '&#xe6c8;', + 'ti-window': '&#xe6c9;', + 'ti-widgetized': '&#xe6ca;', + 'ti-widget': '&#xe6cb;', + 'ti-widget-alt': '&#xe6cc;', + 'ti-wallet': '&#xe6cd;', + 'ti-video-clapper': '&#xe6ce;', + 'ti-video-camera': '&#xe6cf;', + 'ti-vector': '&#xe6d0;', + 'ti-themify-logo': '&#xe6d1;', + 'ti-themify-favicon': '&#xe6d2;', + 'ti-themify-favicon-alt': '&#xe6d3;', + 'ti-support': '&#xe6d4;', + 'ti-stamp': '&#xe6d5;', + 'ti-split-v-alt': '&#xe6d6;', + 'ti-slice': '&#xe6d7;', + 'ti-shortcode': '&#xe6d8;', + 'ti-shift-right-alt': '&#xe6d9;', + 'ti-shift-left-alt': '&#xe6da;', + 'ti-ruler-alt-2': '&#xe6db;', + 'ti-receipt': '&#xe6dc;', + 'ti-pin2': '&#xe6dd;', + 'ti-pin-alt': '&#xe6de;', + 'ti-pencil-alt2': '&#xe6df;', + 'ti-palette': '&#xe6e0;', + 'ti-more': '&#xe6e1;', + 'ti-more-alt': '&#xe6e2;', + 'ti-microphone-alt': '&#xe6e3;', + 'ti-magnet': '&#xe6e4;', + 'ti-line-double': '&#xe6e5;', + 'ti-line-dotted': '&#xe6e6;', + 'ti-line-dashed': '&#xe6e7;', + 'ti-layout-width-full': '&#xe6e8;', + 'ti-layout-width-default': '&#xe6e9;', + 'ti-layout-width-default-alt': '&#xe6ea;', + 'ti-layout-tab': '&#xe6eb;', + 'ti-layout-tab-window': '&#xe6ec;', + 'ti-layout-tab-v': '&#xe6ed;', + 'ti-layout-tab-min': '&#xe6ee;', + 'ti-layout-slider': '&#xe6ef;', + 'ti-layout-slider-alt': '&#xe6f0;', + 'ti-layout-sidebar-right': '&#xe6f1;', + 'ti-layout-sidebar-none': '&#xe6f2;', + 'ti-layout-sidebar-left': '&#xe6f3;', + 'ti-layout-placeholder': '&#xe6f4;', + 'ti-layout-menu': '&#xe6f5;', + 'ti-layout-menu-v': '&#xe6f6;', + 'ti-layout-menu-separated': '&#xe6f7;', + 'ti-layout-menu-full': '&#xe6f8;', + 'ti-layout-media-right-alt': '&#xe6f9;', + 'ti-layout-media-right': '&#xe6fa;', + 'ti-layout-media-overlay': '&#xe6fb;', + 'ti-layout-media-overlay-alt': '&#xe6fc;', + 'ti-layout-media-overlay-alt-2': '&#xe6fd;', + 'ti-layout-media-left-alt': '&#xe6fe;', + 'ti-layout-media-left': '&#xe6ff;', + 'ti-layout-media-center-alt': '&#xe700;', + 'ti-layout-media-center': '&#xe701;', + 'ti-layout-list-thumb': '&#xe702;', + 'ti-layout-list-thumb-alt': '&#xe703;', + 'ti-layout-list-post': '&#xe704;', + 'ti-layout-list-large-image': '&#xe705;', + 'ti-layout-line-solid': '&#xe706;', + 'ti-layout-grid4': '&#xe707;', + 'ti-layout-grid3': '&#xe708;', + 'ti-layout-grid2': '&#xe709;', + 'ti-layout-grid2-thumb': '&#xe70a;', + 'ti-layout-cta-right': '&#xe70b;', + 'ti-layout-cta-left': '&#xe70c;', + 'ti-layout-cta-center': '&#xe70d;', + 'ti-layout-cta-btn-right': '&#xe70e;', + 'ti-layout-cta-btn-left': '&#xe70f;', + 'ti-layout-column4': '&#xe710;', + 'ti-layout-column3': '&#xe711;', + 'ti-layout-column2': '&#xe712;', + 'ti-layout-accordion-separated': '&#xe713;', + 'ti-layout-accordion-merged': '&#xe714;', + 'ti-layout-accordion-list': '&#xe715;', + 'ti-ink-pen': '&#xe716;', + 'ti-info-alt': '&#xe717;', + 'ti-help-alt': '&#xe718;', + 'ti-headphone-alt': '&#xe719;', + 'ti-hand-point-up': '&#xe71a;', + 'ti-hand-point-right': '&#xe71b;', + 'ti-hand-point-left': '&#xe71c;', + 'ti-hand-point-down': '&#xe71d;', + 'ti-gallery': '&#xe71e;', + 'ti-face-smile': '&#xe71f;', + 'ti-face-sad': '&#xe720;', + 'ti-credit-card': '&#xe721;', + 'ti-control-skip-forward': '&#xe722;', + 'ti-control-skip-backward': '&#xe723;', + 'ti-control-record': '&#xe724;', + 'ti-control-eject': '&#xe725;', + 'ti-comments-smiley': '&#xe726;', + 'ti-brush-alt': '&#xe727;', + 'ti-youtube': '&#xe728;', + 'ti-vimeo': '&#xe729;', + 'ti-twitter': '&#xe72a;', + 'ti-time': '&#xe72b;', + 'ti-tumblr': '&#xe72c;', + 'ti-skype': '&#xe72d;', + 'ti-share': '&#xe72e;', + 'ti-share-alt': '&#xe72f;', + 'ti-rocket': '&#xe730;', + 'ti-pinterest': '&#xe731;', + 'ti-new-window': '&#xe732;', + 'ti-microsoft': '&#xe733;', + 'ti-list-ol': '&#xe734;', + 'ti-linkedin': '&#xe735;', + 'ti-layout-sidebar-2': '&#xe736;', + 'ti-layout-grid4-alt': '&#xe737;', + 'ti-layout-grid3-alt': '&#xe738;', + 'ti-layout-grid2-alt': '&#xe739;', + 'ti-layout-column4-alt': '&#xe73a;', + 'ti-layout-column3-alt': '&#xe73b;', + 'ti-layout-column2-alt': '&#xe73c;', + 'ti-instagram': '&#xe73d;', + 'ti-google': '&#xe73e;', + 'ti-github': '&#xe73f;', + 'ti-flickr': '&#xe740;', + 'ti-facebook': '&#xe741;', + 'ti-dropbox': '&#xe742;', + 'ti-dribbble': '&#xe743;', + 'ti-apple': '&#xe744;', + 'ti-android': '&#xe745;', + 'ti-save': '&#xe746;', + 'ti-save-alt': '&#xe747;', + 'ti-yahoo': '&#xe748;', + 'ti-wordpress': '&#xe749;', + 'ti-vimeo-alt': '&#xe74a;', + 'ti-twitter-alt': '&#xe74b;', + 'ti-tumblr-alt': '&#xe74c;', + 'ti-trello': '&#xe74d;', + 'ti-stack-overflow': '&#xe74e;', + 'ti-soundcloud': '&#xe74f;', + 'ti-sharethis': '&#xe750;', + 'ti-sharethis-alt': '&#xe751;', + 'ti-reddit': '&#xe752;', + 'ti-pinterest-alt': '&#xe753;', + 'ti-microsoft-alt': '&#xe754;', + 'ti-linux': '&#xe755;', + 'ti-jsfiddle': '&#xe756;', + 'ti-joomla': '&#xe757;', + 'ti-html5': '&#xe758;', + 'ti-flickr-alt': '&#xe759;', + 'ti-email': '&#xe75a;', + 'ti-drupal': '&#xe75b;', + 'ti-dropbox-alt': '&#xe75c;', + 'ti-css3': '&#xe75d;', + 'ti-rss': '&#xe75e;', + 'ti-rss-alt': '&#xe75f;', + '0': 0 + }, + els = document.getElementsByTagName('*'), + i, c, el; + for (i = 0; ; i += 1) { + el = els[i]; + if(!el) { + break; + } + c = el.className; + c = c.match(/ti-[^\s'"]+/); + if (c && icons[c[0]]) { + addIcon(el, icons[c[0]]); + } + } +}()); diff --git a/assets/less/icons/themify-icons/themify-icons.css b/assets/less/icons/themify-icons/themify-icons.css new file mode 100644 index 0000000..f1e04e9 --- /dev/null +++ b/assets/less/icons/themify-icons/themify-icons.css @@ -0,0 +1,1081 @@ +@font-face { + font-family: 'themify'; + src:url('fonts/themify.eot?-fvbane'); + src:url('fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), + url('fonts/themify.woff?-fvbane') format('woff'), + url('fonts/themify.ttf?-fvbane') format('truetype'), + url('fonts/themify.svg?-fvbane#themify') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="ti-"], [class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} diff --git a/assets/less/icons/themify-icons/themify-icons.less b/assets/less/icons/themify-icons/themify-icons.less new file mode 100644 index 0000000..bbd8477 --- /dev/null +++ b/assets/less/icons/themify-icons/themify-icons.less @@ -0,0 +1,1081 @@ +@font-face { + font-family: 'themify'; + src:url('../fonts/themify.eot?-fvbane'); + src:url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'), + url('../fonts/themify.woff?-fvbane') format('woff'), + url('../fonts/themify.ttf?-fvbane') format('truetype'), + url('../fonts/themify.svg?-fvbane#themify') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="ti-"], [class*=" ti-"] { + font-family: 'themify'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ti-wand:before { + content: "\e600"; +} +.ti-volume:before { + content: "\e601"; +} +.ti-user:before { + content: "\e602"; +} +.ti-unlock:before { + content: "\e603"; +} +.ti-unlink:before { + content: "\e604"; +} +.ti-trash:before { + content: "\e605"; +} +.ti-thought:before { + content: "\e606"; +} +.ti-target:before { + content: "\e607"; +} +.ti-tag:before { + content: "\e608"; +} +.ti-tablet:before { + content: "\e609"; +} +.ti-star:before { + content: "\e60a"; +} +.ti-spray:before { + content: "\e60b"; +} +.ti-signal:before { + content: "\e60c"; +} +.ti-shopping-cart:before { + content: "\e60d"; +} +.ti-shopping-cart-full:before { + content: "\e60e"; +} +.ti-settings:before { + content: "\e60f"; +} +.ti-search:before { + content: "\e610"; +} +.ti-zoom-in:before { + content: "\e611"; +} +.ti-zoom-out:before { + content: "\e612"; +} +.ti-cut:before { + content: "\e613"; +} +.ti-ruler:before { + content: "\e614"; +} +.ti-ruler-pencil:before { + content: "\e615"; +} +.ti-ruler-alt:before { + content: "\e616"; +} +.ti-bookmark:before { + content: "\e617"; +} +.ti-bookmark-alt:before { + content: "\e618"; +} +.ti-reload:before { + content: "\e619"; +} +.ti-plus:before { + content: "\e61a"; +} +.ti-pin:before { + content: "\e61b"; +} +.ti-pencil:before { + content: "\e61c"; +} +.ti-pencil-alt:before { + content: "\e61d"; +} +.ti-paint-roller:before { + content: "\e61e"; +} +.ti-paint-bucket:before { + content: "\e61f"; +} +.ti-na:before { + content: "\e620"; +} +.ti-mobile:before { + content: "\e621"; +} +.ti-minus:before { + content: "\e622"; +} +.ti-medall:before { + content: "\e623"; +} +.ti-medall-alt:before { + content: "\e624"; +} +.ti-marker:before { + content: "\e625"; +} +.ti-marker-alt:before { + content: "\e626"; +} +.ti-arrow-up:before { + content: "\e627"; +} +.ti-arrow-right:before { + content: "\e628"; +} +.ti-arrow-left:before { + content: "\e629"; +} +.ti-arrow-down:before { + content: "\e62a"; +} +.ti-lock:before { + content: "\e62b"; +} +.ti-location-arrow:before { + content: "\e62c"; +} +.ti-link:before { + content: "\e62d"; +} +.ti-layout:before { + content: "\e62e"; +} +.ti-layers:before { + content: "\e62f"; +} +.ti-layers-alt:before { + content: "\e630"; +} +.ti-key:before { + content: "\e631"; +} +.ti-import:before { + content: "\e632"; +} +.ti-image:before { + content: "\e633"; +} +.ti-heart:before { + content: "\e634"; +} +.ti-heart-broken:before { + content: "\e635"; +} +.ti-hand-stop:before { + content: "\e636"; +} +.ti-hand-open:before { + content: "\e637"; +} +.ti-hand-drag:before { + content: "\e638"; +} +.ti-folder:before { + content: "\e639"; +} +.ti-flag:before { + content: "\e63a"; +} +.ti-flag-alt:before { + content: "\e63b"; +} +.ti-flag-alt-2:before { + content: "\e63c"; +} +.ti-eye:before { + content: "\e63d"; +} +.ti-export:before { + content: "\e63e"; +} +.ti-exchange-vertical:before { + content: "\e63f"; +} +.ti-desktop:before { + content: "\e640"; +} +.ti-cup:before { + content: "\e641"; +} +.ti-crown:before { + content: "\e642"; +} +.ti-comments:before { + content: "\e643"; +} +.ti-comment:before { + content: "\e644"; +} +.ti-comment-alt:before { + content: "\e645"; +} +.ti-close:before { + content: "\e646"; +} +.ti-clip:before { + content: "\e647"; +} +.ti-angle-up:before { + content: "\e648"; +} +.ti-angle-right:before { + content: "\e649"; +} +.ti-angle-left:before { + content: "\e64a"; +} +.ti-angle-down:before { + content: "\e64b"; +} +.ti-check:before { + content: "\e64c"; +} +.ti-check-box:before { + content: "\e64d"; +} +.ti-camera:before { + content: "\e64e"; +} +.ti-announcement:before { + content: "\e64f"; +} +.ti-brush:before { + content: "\e650"; +} +.ti-briefcase:before { + content: "\e651"; +} +.ti-bolt:before { + content: "\e652"; +} +.ti-bolt-alt:before { + content: "\e653"; +} +.ti-blackboard:before { + content: "\e654"; +} +.ti-bag:before { + content: "\e655"; +} +.ti-move:before { + content: "\e656"; +} +.ti-arrows-vertical:before { + content: "\e657"; +} +.ti-arrows-horizontal:before { + content: "\e658"; +} +.ti-fullscreen:before { + content: "\e659"; +} +.ti-arrow-top-right:before { + content: "\e65a"; +} +.ti-arrow-top-left:before { + content: "\e65b"; +} +.ti-arrow-circle-up:before { + content: "\e65c"; +} +.ti-arrow-circle-right:before { + content: "\e65d"; +} +.ti-arrow-circle-left:before { + content: "\e65e"; +} +.ti-arrow-circle-down:before { + content: "\e65f"; +} +.ti-angle-double-up:before { + content: "\e660"; +} +.ti-angle-double-right:before { + content: "\e661"; +} +.ti-angle-double-left:before { + content: "\e662"; +} +.ti-angle-double-down:before { + content: "\e663"; +} +.ti-zip:before { + content: "\e664"; +} +.ti-world:before { + content: "\e665"; +} +.ti-wheelchair:before { + content: "\e666"; +} +.ti-view-list:before { + content: "\e667"; +} +.ti-view-list-alt:before { + content: "\e668"; +} +.ti-view-grid:before { + content: "\e669"; +} +.ti-uppercase:before { + content: "\e66a"; +} +.ti-upload:before { + content: "\e66b"; +} +.ti-underline:before { + content: "\e66c"; +} +.ti-truck:before { + content: "\e66d"; +} +.ti-timer:before { + content: "\e66e"; +} +.ti-ticket:before { + content: "\e66f"; +} +.ti-thumb-up:before { + content: "\e670"; +} +.ti-thumb-down:before { + content: "\e671"; +} +.ti-text:before { + content: "\e672"; +} +.ti-stats-up:before { + content: "\e673"; +} +.ti-stats-down:before { + content: "\e674"; +} +.ti-split-v:before { + content: "\e675"; +} +.ti-split-h:before { + content: "\e676"; +} +.ti-smallcap:before { + content: "\e677"; +} +.ti-shine:before { + content: "\e678"; +} +.ti-shift-right:before { + content: "\e679"; +} +.ti-shift-left:before { + content: "\e67a"; +} +.ti-shield:before { + content: "\e67b"; +} +.ti-notepad:before { + content: "\e67c"; +} +.ti-server:before { + content: "\e67d"; +} +.ti-quote-right:before { + content: "\e67e"; +} +.ti-quote-left:before { + content: "\e67f"; +} +.ti-pulse:before { + content: "\e680"; +} +.ti-printer:before { + content: "\e681"; +} +.ti-power-off:before { + content: "\e682"; +} +.ti-plug:before { + content: "\e683"; +} +.ti-pie-chart:before { + content: "\e684"; +} +.ti-paragraph:before { + content: "\e685"; +} +.ti-panel:before { + content: "\e686"; +} +.ti-package:before { + content: "\e687"; +} +.ti-music:before { + content: "\e688"; +} +.ti-music-alt:before { + content: "\e689"; +} +.ti-mouse:before { + content: "\e68a"; +} +.ti-mouse-alt:before { + content: "\e68b"; +} +.ti-money:before { + content: "\e68c"; +} +.ti-microphone:before { + content: "\e68d"; +} +.ti-menu:before { + content: "\e68e"; +} +.ti-menu-alt:before { + content: "\e68f"; +} +.ti-map:before { + content: "\e690"; +} +.ti-map-alt:before { + content: "\e691"; +} +.ti-loop:before { + content: "\e692"; +} +.ti-location-pin:before { + content: "\e693"; +} +.ti-list:before { + content: "\e694"; +} +.ti-light-bulb:before { + content: "\e695"; +} +.ti-Italic:before { + content: "\e696"; +} +.ti-info:before { + content: "\e697"; +} +.ti-infinite:before { + content: "\e698"; +} +.ti-id-badge:before { + content: "\e699"; +} +.ti-hummer:before { + content: "\e69a"; +} +.ti-home:before { + content: "\e69b"; +} +.ti-help:before { + content: "\e69c"; +} +.ti-headphone:before { + content: "\e69d"; +} +.ti-harddrives:before { + content: "\e69e"; +} +.ti-harddrive:before { + content: "\e69f"; +} +.ti-gift:before { + content: "\e6a0"; +} +.ti-game:before { + content: "\e6a1"; +} +.ti-filter:before { + content: "\e6a2"; +} +.ti-files:before { + content: "\e6a3"; +} +.ti-file:before { + content: "\e6a4"; +} +.ti-eraser:before { + content: "\e6a5"; +} +.ti-envelope:before { + content: "\e6a6"; +} +.ti-download:before { + content: "\e6a7"; +} +.ti-direction:before { + content: "\e6a8"; +} +.ti-direction-alt:before { + content: "\e6a9"; +} +.ti-dashboard:before { + content: "\e6aa"; +} +.ti-control-stop:before { + content: "\e6ab"; +} +.ti-control-shuffle:before { + content: "\e6ac"; +} +.ti-control-play:before { + content: "\e6ad"; +} +.ti-control-pause:before { + content: "\e6ae"; +} +.ti-control-forward:before { + content: "\e6af"; +} +.ti-control-backward:before { + content: "\e6b0"; +} +.ti-cloud:before { + content: "\e6b1"; +} +.ti-cloud-up:before { + content: "\e6b2"; +} +.ti-cloud-down:before { + content: "\e6b3"; +} +.ti-clipboard:before { + content: "\e6b4"; +} +.ti-car:before { + content: "\e6b5"; +} +.ti-calendar:before { + content: "\e6b6"; +} +.ti-book:before { + content: "\e6b7"; +} +.ti-bell:before { + content: "\e6b8"; +} +.ti-basketball:before { + content: "\e6b9"; +} +.ti-bar-chart:before { + content: "\e6ba"; +} +.ti-bar-chart-alt:before { + content: "\e6bb"; +} +.ti-back-right:before { + content: "\e6bc"; +} +.ti-back-left:before { + content: "\e6bd"; +} +.ti-arrows-corner:before { + content: "\e6be"; +} +.ti-archive:before { + content: "\e6bf"; +} +.ti-anchor:before { + content: "\e6c0"; +} +.ti-align-right:before { + content: "\e6c1"; +} +.ti-align-left:before { + content: "\e6c2"; +} +.ti-align-justify:before { + content: "\e6c3"; +} +.ti-align-center:before { + content: "\e6c4"; +} +.ti-alert:before { + content: "\e6c5"; +} +.ti-alarm-clock:before { + content: "\e6c6"; +} +.ti-agenda:before { + content: "\e6c7"; +} +.ti-write:before { + content: "\e6c8"; +} +.ti-window:before { + content: "\e6c9"; +} +.ti-widgetized:before { + content: "\e6ca"; +} +.ti-widget:before { + content: "\e6cb"; +} +.ti-widget-alt:before { + content: "\e6cc"; +} +.ti-wallet:before { + content: "\e6cd"; +} +.ti-video-clapper:before { + content: "\e6ce"; +} +.ti-video-camera:before { + content: "\e6cf"; +} +.ti-vector:before { + content: "\e6d0"; +} +.ti-themify-logo:before { + content: "\e6d1"; +} +.ti-themify-favicon:before { + content: "\e6d2"; +} +.ti-themify-favicon-alt:before { + content: "\e6d3"; +} +.ti-support:before { + content: "\e6d4"; +} +.ti-stamp:before { + content: "\e6d5"; +} +.ti-split-v-alt:before { + content: "\e6d6"; +} +.ti-slice:before { + content: "\e6d7"; +} +.ti-shortcode:before { + content: "\e6d8"; +} +.ti-shift-right-alt:before { + content: "\e6d9"; +} +.ti-shift-left-alt:before { + content: "\e6da"; +} +.ti-ruler-alt-2:before { + content: "\e6db"; +} +.ti-receipt:before { + content: "\e6dc"; +} +.ti-pin2:before { + content: "\e6dd"; +} +.ti-pin-alt:before { + content: "\e6de"; +} +.ti-pencil-alt2:before { + content: "\e6df"; +} +.ti-palette:before { + content: "\e6e0"; +} +.ti-more:before { + content: "\e6e1"; +} +.ti-more-alt:before { + content: "\e6e2"; +} +.ti-microphone-alt:before { + content: "\e6e3"; +} +.ti-magnet:before { + content: "\e6e4"; +} +.ti-line-double:before { + content: "\e6e5"; +} +.ti-line-dotted:before { + content: "\e6e6"; +} +.ti-line-dashed:before { + content: "\e6e7"; +} +.ti-layout-width-full:before { + content: "\e6e8"; +} +.ti-layout-width-default:before { + content: "\e6e9"; +} +.ti-layout-width-default-alt:before { + content: "\e6ea"; +} +.ti-layout-tab:before { + content: "\e6eb"; +} +.ti-layout-tab-window:before { + content: "\e6ec"; +} +.ti-layout-tab-v:before { + content: "\e6ed"; +} +.ti-layout-tab-min:before { + content: "\e6ee"; +} +.ti-layout-slider:before { + content: "\e6ef"; +} +.ti-layout-slider-alt:before { + content: "\e6f0"; +} +.ti-layout-sidebar-right:before { + content: "\e6f1"; +} +.ti-layout-sidebar-none:before { + content: "\e6f2"; +} +.ti-layout-sidebar-left:before { + content: "\e6f3"; +} +.ti-layout-placeholder:before { + content: "\e6f4"; +} +.ti-layout-menu:before { + content: "\e6f5"; +} +.ti-layout-menu-v:before { + content: "\e6f6"; +} +.ti-layout-menu-separated:before { + content: "\e6f7"; +} +.ti-layout-menu-full:before { + content: "\e6f8"; +} +.ti-layout-media-right-alt:before { + content: "\e6f9"; +} +.ti-layout-media-right:before { + content: "\e6fa"; +} +.ti-layout-media-overlay:before { + content: "\e6fb"; +} +.ti-layout-media-overlay-alt:before { + content: "\e6fc"; +} +.ti-layout-media-overlay-alt-2:before { + content: "\e6fd"; +} +.ti-layout-media-left-alt:before { + content: "\e6fe"; +} +.ti-layout-media-left:before { + content: "\e6ff"; +} +.ti-layout-media-center-alt:before { + content: "\e700"; +} +.ti-layout-media-center:before { + content: "\e701"; +} +.ti-layout-list-thumb:before { + content: "\e702"; +} +.ti-layout-list-thumb-alt:before { + content: "\e703"; +} +.ti-layout-list-post:before { + content: "\e704"; +} +.ti-layout-list-large-image:before { + content: "\e705"; +} +.ti-layout-line-solid:before { + content: "\e706"; +} +.ti-layout-grid4:before { + content: "\e707"; +} +.ti-layout-grid3:before { + content: "\e708"; +} +.ti-layout-grid2:before { + content: "\e709"; +} +.ti-layout-grid2-thumb:before { + content: "\e70a"; +} +.ti-layout-cta-right:before { + content: "\e70b"; +} +.ti-layout-cta-left:before { + content: "\e70c"; +} +.ti-layout-cta-center:before { + content: "\e70d"; +} +.ti-layout-cta-btn-right:before { + content: "\e70e"; +} +.ti-layout-cta-btn-left:before { + content: "\e70f"; +} +.ti-layout-column4:before { + content: "\e710"; +} +.ti-layout-column3:before { + content: "\e711"; +} +.ti-layout-column2:before { + content: "\e712"; +} +.ti-layout-accordion-separated:before { + content: "\e713"; +} +.ti-layout-accordion-merged:before { + content: "\e714"; +} +.ti-layout-accordion-list:before { + content: "\e715"; +} +.ti-ink-pen:before { + content: "\e716"; +} +.ti-info-alt:before { + content: "\e717"; +} +.ti-help-alt:before { + content: "\e718"; +} +.ti-headphone-alt:before { + content: "\e719"; +} +.ti-hand-point-up:before { + content: "\e71a"; +} +.ti-hand-point-right:before { + content: "\e71b"; +} +.ti-hand-point-left:before { + content: "\e71c"; +} +.ti-hand-point-down:before { + content: "\e71d"; +} +.ti-gallery:before { + content: "\e71e"; +} +.ti-face-smile:before { + content: "\e71f"; +} +.ti-face-sad:before { + content: "\e720"; +} +.ti-credit-card:before { + content: "\e721"; +} +.ti-control-skip-forward:before { + content: "\e722"; +} +.ti-control-skip-backward:before { + content: "\e723"; +} +.ti-control-record:before { + content: "\e724"; +} +.ti-control-eject:before { + content: "\e725"; +} +.ti-comments-smiley:before { + content: "\e726"; +} +.ti-brush-alt:before { + content: "\e727"; +} +.ti-youtube:before { + content: "\e728"; +} +.ti-vimeo:before { + content: "\e729"; +} +.ti-twitter:before { + content: "\e72a"; +} +.ti-time:before { + content: "\e72b"; +} +.ti-tumblr:before { + content: "\e72c"; +} +.ti-skype:before { + content: "\e72d"; +} +.ti-share:before { + content: "\e72e"; +} +.ti-share-alt:before { + content: "\e72f"; +} +.ti-rocket:before { + content: "\e730"; +} +.ti-pinterest:before { + content: "\e731"; +} +.ti-new-window:before { + content: "\e732"; +} +.ti-microsoft:before { + content: "\e733"; +} +.ti-list-ol:before { + content: "\e734"; +} +.ti-linkedin:before { + content: "\e735"; +} +.ti-layout-sidebar-2:before { + content: "\e736"; +} +.ti-layout-grid4-alt:before { + content: "\e737"; +} +.ti-layout-grid3-alt:before { + content: "\e738"; +} +.ti-layout-grid2-alt:before { + content: "\e739"; +} +.ti-layout-column4-alt:before { + content: "\e73a"; +} +.ti-layout-column3-alt:before { + content: "\e73b"; +} +.ti-layout-column2-alt:before { + content: "\e73c"; +} +.ti-instagram:before { + content: "\e73d"; +} +.ti-google:before { + content: "\e73e"; +} +.ti-github:before { + content: "\e73f"; +} +.ti-flickr:before { + content: "\e740"; +} +.ti-facebook:before { + content: "\e741"; +} +.ti-dropbox:before { + content: "\e742"; +} +.ti-dribbble:before { + content: "\e743"; +} +.ti-apple:before { + content: "\e744"; +} +.ti-android:before { + content: "\e745"; +} +.ti-save:before { + content: "\e746"; +} +.ti-save-alt:before { + content: "\e747"; +} +.ti-yahoo:before { + content: "\e748"; +} +.ti-wordpress:before { + content: "\e749"; +} +.ti-vimeo-alt:before { + content: "\e74a"; +} +.ti-twitter-alt:before { + content: "\e74b"; +} +.ti-tumblr-alt:before { + content: "\e74c"; +} +.ti-trello:before { + content: "\e74d"; +} +.ti-stack-overflow:before { + content: "\e74e"; +} +.ti-soundcloud:before { + content: "\e74f"; +} +.ti-sharethis:before { + content: "\e750"; +} +.ti-sharethis-alt:before { + content: "\e751"; +} +.ti-reddit:before { + content: "\e752"; +} +.ti-pinterest-alt:before { + content: "\e753"; +} +.ti-microsoft-alt:before { + content: "\e754"; +} +.ti-linux:before { + content: "\e755"; +} +.ti-jsfiddle:before { + content: "\e756"; +} +.ti-joomla:before { + content: "\e757"; +} +.ti-html5:before { + content: "\e758"; +} +.ti-flickr-alt:before { + content: "\e759"; +} +.ti-email:before { + content: "\e75a"; +} +.ti-drupal:before { + content: "\e75b"; +} +.ti-dropbox-alt:before { + content: "\e75c"; +} +.ti-css3:before { + content: "\e75d"; +} +.ti-rss:before { + content: "\e75e"; +} +.ti-rss-alt:before { + content: "\e75f"; +} \ No newline at end of file diff --git a/assets/less/icons/typicons/typicons.eot b/assets/less/icons/typicons/typicons.eot new file mode 100644 index 0000000..0873b12 Binary files /dev/null and b/assets/less/icons/typicons/typicons.eot differ diff --git a/assets/less/icons/typicons/typicons.less b/assets/less/icons/typicons/typicons.less new file mode 100644 index 0000000..643aea7 --- /dev/null +++ b/assets/less/icons/typicons/typicons.less @@ -0,0 +1,1040 @@ +@charset 'UTF-8'; + +/* @FONT-FACE loads font into browser */ +@font-face { + font-family: 'typicons'; + font-weight: normal; + font-style: normal; + src: url('../fonts/typicons.eot'); + src: url('../fonts/typicons.eot?#iefix') format('embedded-opentype'), + url('../fonts/typicons.woff') format('woff'), + url('../fonts/typicons.ttf') format('truetype'), + url('../fonts/typicons.svg#typicons') format('svg'); +} + +/* :before psuedo-selector inserts and styles icon */ +.typcn:before { + font-family: 'typicons'; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + height: 1em; + font-size: 1em; + text-align: center; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +/* Code for individual icons */ +.typcn-adjust-brightness:before { + content: '\e000'; /* '' */ +} +.typcn-adjust-contrast:before { + content: '\e001'; /* '' */ +} +.typcn-anchor-outline:before { + content: '\e002'; /* '' */ +} +.typcn-anchor:before { + content: '\e003'; /* '' */ +} +.typcn-archive:before { + content: '\e004'; /* '' */ +} +.typcn-arrow-back-outline:before { + content: '\e005'; /* '' */ +} +.typcn-arrow-back:before { + content: '\e006'; /* '' */ +} +.typcn-arrow-down-outline:before { + content: '\e007'; /* '' */ +} +.typcn-arrow-down-thick:before { + content: '\e008'; /* '' */ +} +.typcn-arrow-down:before { + content: '\e009'; /* '' */ +} +.typcn-arrow-forward-outline:before { + content: '\e00a'; /* '' */ +} +.typcn-arrow-forward:before { + content: '\e00b'; /* '' */ +} +.typcn-arrow-left-outline:before { + content: '\e00c'; /* '' */ +} +.typcn-arrow-left-thick:before { + content: '\e00d'; /* '' */ +} +.typcn-arrow-left:before { + content: '\e00e'; /* '' */ +} +.typcn-arrow-loop-outline:before { + content: '\e00f'; /* '' */ +} +.typcn-arrow-loop:before { + content: '\e010'; /* '' */ +} +.typcn-arrow-maximise-outline:before { + content: '\e011'; /* '' */ +} +.typcn-arrow-maximise:before { + content: '\e012'; /* '' */ +} +.typcn-arrow-minimise-outline:before { + content: '\e013'; /* '' */ +} +.typcn-arrow-minimise:before { + content: '\e014'; /* '' */ +} +.typcn-arrow-move-outline:before { + content: '\e015'; /* '' */ +} +.typcn-arrow-move:before { + content: '\e016'; /* '' */ +} +.typcn-arrow-repeat-outline:before { + content: '\e017'; /* '' */ +} +.typcn-arrow-repeat:before { + content: '\e018'; /* '' */ +} +.typcn-arrow-right-outline:before { + content: '\e019'; /* '' */ +} +.typcn-arrow-right-thick:before { + content: '\e01a'; /* '' */ +} +.typcn-arrow-right:before { + content: '\e01b'; /* '' */ +} +.typcn-arrow-shuffle:before { + content: '\e01c'; /* '' */ +} +.typcn-arrow-sorted-down:before { + content: '\e01d'; /* '' */ +} +.typcn-arrow-sorted-up:before { + content: '\e01e'; /* '' */ +} +.typcn-arrow-sync-outline:before { + content: '\e01f'; /* '' */ +} +.typcn-arrow-sync:before { + content: '\e020'; /* '' */ +} +.typcn-arrow-unsorted:before { + content: '\e021'; /* '' */ +} +.typcn-arrow-up-outline:before { + content: '\e022'; /* '' */ +} +.typcn-arrow-up-thick:before { + content: '\e023'; /* '' */ +} +.typcn-arrow-up:before { + content: '\e024'; /* '' */ +} +.typcn-at:before { + content: '\e025'; /* '' */ +} +.typcn-attachment-outline:before { + content: '\e026'; /* '' */ +} +.typcn-attachment:before { + content: '\e027'; /* '' */ +} +.typcn-backspace-outline:before { + content: '\e028'; /* '' */ +} +.typcn-backspace:before { + content: '\e029'; /* '' */ +} +.typcn-battery-charge:before { + content: '\e02a'; /* '' */ +} +.typcn-battery-full:before { + content: '\e02b'; /* '' */ +} +.typcn-battery-high:before { + content: '\e02c'; /* '' */ +} +.typcn-battery-low:before { + content: '\e02d'; /* '' */ +} +.typcn-battery-mid:before { + content: '\e02e'; /* '' */ +} +.typcn-beaker:before { + content: '\e02f'; /* '' */ +} +.typcn-beer:before { + content: '\e030'; /* '' */ +} +.typcn-bell:before { + content: '\e031'; /* '' */ +} +.typcn-book:before { + content: '\e032'; /* '' */ +} +.typcn-bookmark:before { + content: '\e033'; /* '' */ +} +.typcn-briefcase:before { + content: '\e034'; /* '' */ +} +.typcn-brush:before { + content: '\e035'; /* '' */ +} +.typcn-business-card:before { + content: '\e036'; /* '' */ +} +.typcn-calculator:before { + content: '\e037'; /* '' */ +} +.typcn-calendar-outline:before { + content: '\e038'; /* '' */ +} +.typcn-calendar:before { + content: '\e039'; /* '' */ +} +.typcn-camera-outline:before { + content: '\e03a'; /* '' */ +} +.typcn-camera:before { + content: '\e03b'; /* '' */ +} +.typcn-cancel-outline:before { + content: '\e03c'; /* '' */ +} +.typcn-cancel:before { + content: '\e03d'; /* '' */ +} +.typcn-chart-area-outline:before { + content: '\e03e'; /* '' */ +} +.typcn-chart-area:before { + content: '\e03f'; /* '' */ +} +.typcn-chart-bar-outline:before { + content: '\e040'; /* '' */ +} +.typcn-chart-bar:before { + content: '\e041'; /* '' */ +} +.typcn-chart-line-outline:before { + content: '\e042'; /* '' */ +} +.typcn-chart-line:before { + content: '\e043'; /* '' */ +} +.typcn-chart-pie-outline:before { + content: '\e044'; /* '' */ +} +.typcn-chart-pie:before { + content: '\e045'; /* '' */ +} +.typcn-chevron-left-outline:before { + content: '\e046'; /* '' */ +} +.typcn-chevron-left:before { + content: '\e047'; /* '' */ +} +.typcn-chevron-right-outline:before { + content: '\e048'; /* '' */ +} +.typcn-chevron-right:before { + content: '\e049'; /* '' */ +} +.typcn-clipboard:before { + content: '\e04a'; /* '' */ +} +.typcn-cloud-storage:before { + content: '\e04b'; /* '' */ +} +.typcn-cloud-storage-outline:before { + content: '\e054'; /* '' */ +} +.typcn-code-outline:before { + content: '\e04c'; /* '' */ +} +.typcn-code:before { + content: '\e04d'; /* '' */ +} +.typcn-coffee:before { + content: '\e04e'; /* '' */ +} +.typcn-cog-outline:before { + content: '\e04f'; /* '' */ +} +.typcn-cog:before { + content: '\e050'; /* '' */ +} +.typcn-compass:before { + content: '\e051'; /* '' */ +} +.typcn-contacts:before { + content: '\e052'; /* '' */ +} +.typcn-credit-card:before { + content: '\e053'; /* '' */ +} +.typcn-css3:before { + content: '\e055'; /* '' */ +} +.typcn-database:before { + content: '\e056'; /* '' */ +} +.typcn-delete-outline:before { + content: '\e057'; /* '' */ +} +.typcn-delete:before { + content: '\e058'; /* '' */ +} +.typcn-device-desktop:before { + content: '\e059'; /* '' */ +} +.typcn-device-laptop:before { + content: '\e05a'; /* '' */ +} +.typcn-device-phone:before { + content: '\e05b'; /* '' */ +} +.typcn-device-tablet:before { + content: '\e05c'; /* '' */ +} +.typcn-directions:before { + content: '\e05d'; /* '' */ +} +.typcn-divide-outline:before { + content: '\e05e'; /* '' */ +} +.typcn-divide:before { + content: '\e05f'; /* '' */ +} +.typcn-document-add:before { + content: '\e060'; /* '' */ +} +.typcn-document-delete:before { + content: '\e061'; /* '' */ +} +.typcn-document-text:before { + content: '\e062'; /* '' */ +} +.typcn-document:before { + content: '\e063'; /* '' */ +} +.typcn-download-outline:before { + content: '\e064'; /* '' */ +} +.typcn-download:before { + content: '\e065'; /* '' */ +} +.typcn-dropbox:before { + content: '\e066'; /* '' */ +} +.typcn-edit:before { + content: '\e067'; /* '' */ +} +.typcn-eject-outline:before { + content: '\e068'; /* '' */ +} +.typcn-eject:before { + content: '\e069'; /* '' */ +} +.typcn-equals-outline:before { + content: '\e06a'; /* '' */ +} +.typcn-equals:before { + content: '\e06b'; /* '' */ +} +.typcn-export-outline:before { + content: '\e06c'; /* '' */ +} +.typcn-export:before { + content: '\e06d'; /* '' */ +} +.typcn-eye-outline:before { + content: '\e06e'; /* '' */ +} +.typcn-eye:before { + content: '\e06f'; /* '' */ +} +.typcn-feather:before { + content: '\e070'; /* '' */ +} +.typcn-film:before { + content: '\e071'; /* '' */ +} +.typcn-filter:before { + content: '\e072'; /* '' */ +} +.typcn-flag-outline:before { + content: '\e073'; /* '' */ +} +.typcn-flag:before { + content: '\e074'; /* '' */ +} +.typcn-flash-outline:before { + content: '\e075'; /* '' */ +} +.typcn-flash:before { + content: '\e076'; /* '' */ +} +.typcn-flow-children:before { + content: '\e077'; /* '' */ +} +.typcn-flow-merge:before { + content: '\e078'; /* '' */ +} +.typcn-flow-parallel:before { + content: '\e079'; /* '' */ +} +.typcn-flow-switch:before { + content: '\e07a'; /* '' */ +} +.typcn-folder-add:before { + content: '\e07b'; /* '' */ +} +.typcn-folder-delete:before { + content: '\e07c'; /* '' */ +} +.typcn-folder-open:before { + content: '\e07d'; /* '' */ +} +.typcn-folder:before { + content: '\e07e'; /* '' */ +} +.typcn-gift:before { + content: '\e07f'; /* '' */ +} +.typcn-globe-outline:before { + content: '\e080'; /* '' */ +} +.typcn-globe:before { + content: '\e081'; /* '' */ +} +.typcn-group-outline:before { + content: '\e082'; /* '' */ +} +.typcn-group:before { + content: '\e083'; /* '' */ +} +.typcn-headphones:before { + content: '\e084'; /* '' */ +} +.typcn-heart-full-outline:before { + content: '\e085'; /* '' */ +} +.typcn-heart-half-outline:before { + content: '\e086'; /* '' */ +} +.typcn-heart-outline:before { + content: '\e087'; /* '' */ +} +.typcn-heart:before { + content: '\e088'; /* '' */ +} +.typcn-home-outline:before { + content: '\e089'; /* '' */ +} +.typcn-home:before { + content: '\e08a'; /* '' */ +} +.typcn-html5:before { + content: '\e08b'; /* '' */ +} +.typcn-image-outline:before { + content: '\e08c'; /* '' */ +} +.typcn-image:before { + content: '\e08d'; /* '' */ +} +.typcn-infinity-outline:before { + content: '\e08e'; /* '' */ +} +.typcn-infinity:before { + content: '\e08f'; /* '' */ +} +.typcn-info-large-outline:before { + content: '\e090'; /* '' */ +} +.typcn-info-large:before { + content: '\e091'; /* '' */ +} +.typcn-info-outline:before { + content: '\e092'; /* '' */ +} +.typcn-info:before { + content: '\e093'; /* '' */ +} +.typcn-input-checked-outline:before { + content: '\e094'; /* '' */ +} +.typcn-input-checked:before { + content: '\e095'; /* '' */ +} +.typcn-key-outline:before { + content: '\e096'; /* '' */ +} +.typcn-key:before { + content: '\e097'; /* '' */ +} +.typcn-keyboard:before { + content: '\e098'; /* '' */ +} +.typcn-leaf:before { + content: '\e099'; /* '' */ +} +.typcn-lightbulb:before { + content: '\e09a'; /* '' */ +} +.typcn-link-outline:before { + content: '\e09b'; /* '' */ +} +.typcn-link:before { + content: '\e09c'; /* '' */ +} +.typcn-location-arrow-outline:before { + content: '\e09d'; /* '' */ +} +.typcn-location-arrow:before { + content: '\e09e'; /* '' */ +} +.typcn-location-outline:before { + content: '\e09f'; /* '' */ +} +.typcn-location:before { + content: '\e0a0'; /* '' */ +} +.typcn-lock-closed-outline:before { + content: '\e0a1'; /* '' */ +} +.typcn-lock-closed:before { + content: '\e0a2'; /* '' */ +} +.typcn-lock-open-outline:before { + content: '\e0a3'; /* '' */ +} +.typcn-lock-open:before { + content: '\e0a4'; /* '' */ +} +.typcn-mail:before { + content: '\e0a5'; /* '' */ +} +.typcn-map:before { + content: '\e0a6'; /* '' */ +} +.typcn-media-eject-outline:before { + content: '\e0a7'; /* '' */ +} +.typcn-media-eject:before { + content: '\e0a8'; /* '' */ +} +.typcn-media-fast-forward-outline:before { + content: '\e0a9'; /* '' */ +} +.typcn-media-fast-forward:before { + content: '\e0aa'; /* '' */ +} +.typcn-media-pause-outline:before { + content: '\e0ab'; /* '' */ +} +.typcn-media-pause:before { + content: '\e0ac'; /* '' */ +} +.typcn-media-play-outline:before { + content: '\e0ad'; /* '' */ +} +.typcn-media-play-reverse-outline:before { + content: '\e0ae'; /* '' */ +} +.typcn-media-play-reverse:before { + content: '\e0af'; /* '' */ +} +.typcn-media-play:before { + content: '\e0b0'; /* '' */ +} +.typcn-media-record-outline:before { + content: '\e0b1'; /* '' */ +} +.typcn-media-record:before { + content: '\e0b2'; /* '' */ +} +.typcn-media-rewind-outline:before { + content: '\e0b3'; /* '' */ +} +.typcn-media-rewind:before { + content: '\e0b4'; /* '' */ +} +.typcn-media-stop-outline:before { + content: '\e0b5'; /* '' */ +} +.typcn-media-stop:before { + content: '\e0b6'; /* '' */ +} +.typcn-message-typing:before { + content: '\e0b7'; /* '' */ +} +.typcn-message:before { + content: '\e0b8'; /* '' */ +} +.typcn-messages:before { + content: '\e0b9'; /* '' */ +} +.typcn-microphone-outline:before { + content: '\e0ba'; /* '' */ +} +.typcn-microphone:before { + content: '\e0bb'; /* '' */ +} +.typcn-minus-outline:before { + content: '\e0bc'; /* '' */ +} +.typcn-minus:before { + content: '\e0bd'; /* '' */ +} +.typcn-mortar-board:before { + content: '\e0be'; /* '' */ +} +.typcn-news:before { + content: '\e0bf'; /* '' */ +} +.typcn-notes-outline:before { + content: '\e0c0'; /* '' */ +} +.typcn-notes:before { + content: '\e0c1'; /* '' */ +} +.typcn-pen:before { + content: '\e0c2'; /* '' */ +} +.typcn-pencil:before { + content: '\e0c3'; /* '' */ +} +.typcn-phone-outline:before { + content: '\e0c4'; /* '' */ +} +.typcn-phone:before { + content: '\e0c5'; /* '' */ +} +.typcn-pi-outline:before { + content: '\e0c6'; /* '' */ +} +.typcn-pi:before { + content: '\e0c7'; /* '' */ +} +.typcn-pin-outline:before { + content: '\e0c8'; /* '' */ +} +.typcn-pin:before { + content: '\e0c9'; /* '' */ +} +.typcn-pipette:before { + content: '\e0ca'; /* '' */ +} +.typcn-plane-outline:before { + content: '\e0cb'; /* '' */ +} +.typcn-plane:before { + content: '\e0cc'; /* '' */ +} +.typcn-plug:before { + content: '\e0cd'; /* '' */ +} +.typcn-plus-outline:before { + content: '\e0ce'; /* '' */ +} +.typcn-plus:before { + content: '\e0cf'; /* '' */ +} +.typcn-point-of-interest-outline:before { + content: '\e0d0'; /* '' */ +} +.typcn-point-of-interest:before { + content: '\e0d1'; /* '' */ +} +.typcn-power-outline:before { + content: '\e0d2'; /* '' */ +} +.typcn-power:before { + content: '\e0d3'; /* '' */ +} +.typcn-printer:before { + content: '\e0d4'; /* '' */ +} +.typcn-puzzle-outline:before { + content: '\e0d5'; /* '' */ +} +.typcn-puzzle:before { + content: '\e0d6'; /* '' */ +} +.typcn-radar-outline:before { + content: '\e0d7'; /* '' */ +} +.typcn-radar:before { + content: '\e0d8'; /* '' */ +} +.typcn-refresh-outline:before { + content: '\e0d9'; /* '' */ +} +.typcn-refresh:before { + content: '\e0da'; /* '' */ +} +.typcn-rss-outline:before { + content: '\e0db'; /* '' */ +} +.typcn-rss:before { + content: '\e0dc'; /* '' */ +} +.typcn-scissors-outline:before { + content: '\e0dd'; /* '' */ +} +.typcn-scissors:before { + content: '\e0de'; /* '' */ +} +.typcn-shopping-bag:before { + content: '\e0df'; /* '' */ +} +.typcn-shopping-cart:before { + content: '\e0e0'; /* '' */ +} +.typcn-social-at-circular:before { + content: '\e0e1'; /* '' */ +} +.typcn-social-dribbble-circular:before { + content: '\e0e2'; /* '' */ +} +.typcn-social-dribbble:before { + content: '\e0e3'; /* '' */ +} +.typcn-social-facebook-circular:before { + content: '\e0e4'; /* '' */ +} +.typcn-social-facebook:before { + content: '\e0e5'; /* '' */ +} +.typcn-social-flickr-circular:before { + content: '\e0e6'; /* '' */ +} +.typcn-social-flickr:before { + content: '\e0e7'; /* '' */ +} +.typcn-social-github-circular:before { + content: '\e0e8'; /* '' */ +} +.typcn-social-github:before { + content: '\e0e9'; /* '' */ +} +.typcn-social-google-plus-circular:before { + content: '\e0ea'; /* '' */ +} +.typcn-social-google-plus:before { + content: '\e0eb'; /* '' */ +} +.typcn-social-instagram-circular:before { + content: '\e0ec'; /* '' */ +} +.typcn-social-instagram:before { + content: '\e0ed'; /* '' */ +} +.typcn-social-last-fm-circular:before { + content: '\e0ee'; /* '' */ +} +.typcn-social-last-fm:before { + content: '\e0ef'; /* '' */ +} +.typcn-social-linkedin-circular:before { + content: '\e0f0'; /* '' */ +} +.typcn-social-linkedin:before { + content: '\e0f1'; /* '' */ +} +.typcn-social-pinterest-circular:before { + content: '\e0f2'; /* '' */ +} +.typcn-social-pinterest:before { + content: '\e0f3'; /* '' */ +} +.typcn-social-skype-outline:before { + content: '\e0f4'; /* '' */ +} +.typcn-social-skype:before { + content: '\e0f5'; /* '' */ +} +.typcn-social-tumbler-circular:before { + content: '\e0f6'; /* '' */ +} +.typcn-social-tumbler:before { + content: '\e0f7'; /* '' */ +} +.typcn-social-twitter-circular:before { + content: '\e0f8'; /* '' */ +} +.typcn-social-twitter:before { + content: '\e0f9'; /* '' */ +} +.typcn-social-vimeo-circular:before { + content: '\e0fa'; /* '' */ +} +.typcn-social-vimeo:before { + content: '\e0fb'; /* '' */ +} +.typcn-social-youtube-circular:before { + content: '\e0fc'; /* '' */ +} +.typcn-social-youtube:before { + content: '\e0fd'; /* '' */ +} +.typcn-sort-alphabetically-outline:before { + content: '\e0fe'; /* '' */ +} +.typcn-sort-alphabetically:before { + content: '\e0ff'; /* '' */ +} +.typcn-sort-numerically-outline:before { + content: '\e100'; /* '' */ +} +.typcn-sort-numerically:before { + content: '\e101'; /* '' */ +} +.typcn-spanner-outline:before { + content: '\e102'; /* '' */ +} +.typcn-spanner:before { + content: '\e103'; /* '' */ +} +.typcn-spiral:before { + content: '\e104'; /* '' */ +} +.typcn-star-full-outline:before { + content: '\e105'; /* '' */ +} +.typcn-star-half-outline:before { + content: '\e106'; /* '' */ +} +.typcn-star-half:before { + content: '\e107'; /* '' */ +} +.typcn-star-outline:before { + content: '\e108'; /* '' */ +} +.typcn-star:before { + content: '\e109'; /* '' */ +} +.typcn-starburst-outline:before { + content: '\e10a'; /* '' */ +} +.typcn-starburst:before { + content: '\e10b'; /* '' */ +} +.typcn-stopwatch:before { + content: '\e10c'; /* '' */ +} +.typcn-support:before { + content: '\e10d'; /* '' */ +} +.typcn-tabs-outline:before { + content: '\e10e'; /* '' */ +} +.typcn-tag:before { + content: '\e10f'; /* '' */ +} +.typcn-tags:before { + content: '\e110'; /* '' */ +} +.typcn-th-large-outline:before { + content: '\e111'; /* '' */ +} +.typcn-th-large:before { + content: '\e112'; /* '' */ +} +.typcn-th-list-outline:before { + content: '\e113'; /* '' */ +} +.typcn-th-list:before { + content: '\e114'; /* '' */ +} +.typcn-th-menu-outline:before { + content: '\e115'; /* '' */ +} +.typcn-th-menu:before { + content: '\e116'; /* '' */ +} +.typcn-th-small-outline:before { + content: '\e117'; /* '' */ +} +.typcn-th-small:before { + content: '\e118'; /* '' */ +} +.typcn-thermometer:before { + content: '\e119'; /* '' */ +} +.typcn-thumbs-down:before { + content: '\e11a'; /* '' */ +} +.typcn-thumbs-ok:before { + content: '\e11b'; /* '' */ +} +.typcn-thumbs-up:before { + content: '\e11c'; /* '' */ +} +.typcn-tick-outline:before { + content: '\e11d'; /* '' */ +} +.typcn-tick:before { + content: '\e11e'; /* '' */ +} +.typcn-ticket:before { + content: '\e11f'; /* '' */ +} +.typcn-time:before { + content: '\e120'; /* '' */ +} +.typcn-times-outline:before { + content: '\e121'; /* '' */ +} +.typcn-times:before { + content: '\e122'; /* '' */ +} +.typcn-trash:before { + content: '\e123'; /* '' */ +} +.typcn-tree:before { + content: '\e124'; /* '' */ +} +.typcn-upload-outline:before { + content: '\e125'; /* '' */ +} +.typcn-upload:before { + content: '\e126'; /* '' */ +} +.typcn-user-add-outline:before { + content: '\e127'; /* '' */ +} +.typcn-user-add:before { + content: '\e128'; /* '' */ +} +.typcn-user-delete-outline:before { + content: '\e129'; /* '' */ +} +.typcn-user-delete:before { + content: '\e12a'; /* '' */ +} +.typcn-user-outline:before { + content: '\e12b'; /* '' */ +} +.typcn-user:before { + content: '\e12c'; /* '' */ +} +.typcn-vendor-android:before { + content: '\e12d'; /* '' */ +} +.typcn-vendor-apple:before { + content: '\e12e'; /* '' */ +} +.typcn-vendor-microsoft:before { + content: '\e12f'; /* '' */ +} +.typcn-video-outline:before { + content: '\e130'; /* '' */ +} +.typcn-video:before { + content: '\e131'; /* '' */ +} +.typcn-volume-down:before { + content: '\e132'; /* '' */ +} +.typcn-volume-mute:before { + content: '\e133'; /* '' */ +} +.typcn-volume-up:before { + content: '\e134'; /* '' */ +} +.typcn-volume:before { + content: '\e135'; /* '' */ +} +.typcn-warning-outline:before { + content: '\e136'; /* '' */ +} +.typcn-warning:before { + content: '\e137'; /* '' */ +} +.typcn-watch:before { + content: '\e138'; /* '' */ +} +.typcn-waves-outline:before { + content: '\e139'; /* '' */ +} +.typcn-waves:before { + content: '\e13a'; /* '' */ +} +.typcn-weather-cloudy:before { + content: '\e13b'; /* '' */ +} +.typcn-weather-downpour:before { + content: '\e13c'; /* '' */ +} +.typcn-weather-night:before { + content: '\e13d'; /* '' */ +} +.typcn-weather-partly-sunny:before { + content: '\e13e'; /* '' */ +} +.typcn-weather-shower:before { + content: '\e13f'; /* '' */ +} +.typcn-weather-snow:before { + content: '\e140'; /* '' */ +} +.typcn-weather-stormy:before { + content: '\e141'; /* '' */ +} +.typcn-weather-sunny:before { + content: '\e142'; /* '' */ +} +.typcn-weather-windy-cloudy:before { + content: '\e143'; /* '' */ +} +.typcn-weather-windy:before { + content: '\e144'; /* '' */ +} +.typcn-wi-fi-outline:before { + content: '\e145'; /* '' */ +} +.typcn-wi-fi:before { + content: '\e146'; /* '' */ +} +.typcn-wine:before { + content: '\e147'; /* '' */ +} +.typcn-world-outline:before { + content: '\e148'; /* '' */ +} +.typcn-world:before { + content: '\e149'; /* '' */ +} +.typcn-zoom-in-outline:before { + content: '\e14a'; /* '' */ +} +.typcn-zoom-in:before { + content: '\e14b'; /* '' */ +} +.typcn-zoom-out-outline:before { + content: '\e14c'; /* '' */ +} +.typcn-zoom-out:before { + content: '\e14d'; /* '' */ +} +.typcn-zoom-outline:before { + content: '\e14e'; /* '' */ +} +.typcn-zoom:before { + content: '\e14f'; /* '' */ +} \ No newline at end of file diff --git a/assets/less/icons/typicons/typicons.min.css b/assets/less/icons/typicons/typicons.min.css new file mode 100644 index 0000000..6204e50 --- /dev/null +++ b/assets/less/icons/typicons/typicons.min.css @@ -0,0 +1 @@ +@charset 'UTF-8';@font-face{font-family:'typicons';font-weight:normal;font-style:normal;src:url('typicons.eot');src:url('typicons.eot?#iefix') format('embedded-opentype'),url('typicons.woff') format('woff'),url('typicons.ttf') format('truetype'),url('typicons.svg#typicons') format('svg')}.typcn:before{font-family:'typicons';font-style:normal;font-weight:normal;speak:none;display:inline-block;text-decoration:inherit;width:1em;height:1em;font-size:1em;text-align:center;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;text-rendering:optimizeLegibility}.typcn-adjust-brightness:before{content:'\e000'}.typcn-adjust-contrast:before{content:'\e001'}.typcn-anchor-outline:before{content:'\e002'}.typcn-anchor:before{content:'\e003'}.typcn-archive:before{content:'\e004'}.typcn-arrow-back-outline:before{content:'\e005'}.typcn-arrow-back:before{content:'\e006'}.typcn-arrow-down-outline:before{content:'\e007'}.typcn-arrow-down-thick:before{content:'\e008'}.typcn-arrow-down:before{content:'\e009'}.typcn-arrow-forward-outline:before{content:'\e00a'}.typcn-arrow-forward:before{content:'\e00b'}.typcn-arrow-left-outline:before{content:'\e00c'}.typcn-arrow-left-thick:before{content:'\e00d'}.typcn-arrow-left:before{content:'\e00e'}.typcn-arrow-loop-outline:before{content:'\e00f'}.typcn-arrow-loop:before{content:'\e010'}.typcn-arrow-maximise-outline:before{content:'\e011'}.typcn-arrow-maximise:before{content:'\e012'}.typcn-arrow-minimise-outline:before{content:'\e013'}.typcn-arrow-minimise:before{content:'\e014'}.typcn-arrow-move-outline:before{content:'\e015'}.typcn-arrow-move:before{content:'\e016'}.typcn-arrow-repeat-outline:before{content:'\e017'}.typcn-arrow-repeat:before{content:'\e018'}.typcn-arrow-right-outline:before{content:'\e019'}.typcn-arrow-right-thick:before{content:'\e01a'}.typcn-arrow-right:before{content:'\e01b'}.typcn-arrow-shuffle:before{content:'\e01c'}.typcn-arrow-sorted-down:before{content:'\e01d'}.typcn-arrow-sorted-up:before{content:'\e01e'}.typcn-arrow-sync-outline:before{content:'\e01f'}.typcn-arrow-sync:before{content:'\e020'}.typcn-arrow-unsorted:before{content:'\e021'}.typcn-arrow-up-outline:before{content:'\e022'}.typcn-arrow-up-thick:before{content:'\e023'}.typcn-arrow-up:before{content:'\e024'}.typcn-at:before{content:'\e025'}.typcn-attachment-outline:before{content:'\e026'}.typcn-attachment:before{content:'\e027'}.typcn-backspace-outline:before{content:'\e028'}.typcn-backspace:before{content:'\e029'}.typcn-battery-charge:before{content:'\e02a'}.typcn-battery-full:before{content:'\e02b'}.typcn-battery-high:before{content:'\e02c'}.typcn-battery-low:before{content:'\e02d'}.typcn-battery-mid:before{content:'\e02e'}.typcn-beaker:before{content:'\e02f'}.typcn-beer:before{content:'\e030'}.typcn-bell:before{content:'\e031'}.typcn-book:before{content:'\e032'}.typcn-bookmark:before{content:'\e033'}.typcn-briefcase:before{content:'\e034'}.typcn-brush:before{content:'\e035'}.typcn-business-card:before{content:'\e036'}.typcn-calculator:before{content:'\e037'}.typcn-calendar-outline:before{content:'\e038'}.typcn-calendar:before{content:'\e039'}.typcn-camera-outline:before{content:'\e03a'}.typcn-camera:before{content:'\e03b'}.typcn-cancel-outline:before{content:'\e03c'}.typcn-cancel:before{content:'\e03d'}.typcn-chart-area-outline:before{content:'\e03e'}.typcn-chart-area:before{content:'\e03f'}.typcn-chart-bar-outline:before{content:'\e040'}.typcn-chart-bar:before{content:'\e041'}.typcn-chart-line-outline:before{content:'\e042'}.typcn-chart-line:before{content:'\e043'}.typcn-chart-pie-outline:before{content:'\e044'}.typcn-chart-pie:before{content:'\e045'}.typcn-chevron-left-outline:before{content:'\e046'}.typcn-chevron-left:before{content:'\e047'}.typcn-chevron-right-outline:before{content:'\e048'}.typcn-chevron-right:before{content:'\e049'}.typcn-clipboard:before{content:'\e04a'}.typcn-cloud-storage:before{content:'\e04b'}.typcn-cloud-storage-outline:before{content:'\e054'}.typcn-code-outline:before{content:'\e04c'}.typcn-code:before{content:'\e04d'}.typcn-coffee:before{content:'\e04e'}.typcn-cog-outline:before{content:'\e04f'}.typcn-cog:before{content:'\e050'}.typcn-compass:before{content:'\e051'}.typcn-contacts:before{content:'\e052'}.typcn-credit-card:before{content:'\e053'}.typcn-css3:before{content:'\e055'}.typcn-database:before{content:'\e056'}.typcn-delete-outline:before{content:'\e057'}.typcn-delete:before{content:'\e058'}.typcn-device-desktop:before{content:'\e059'}.typcn-device-laptop:before{content:'\e05a'}.typcn-device-phone:before{content:'\e05b'}.typcn-device-tablet:before{content:'\e05c'}.typcn-directions:before{content:'\e05d'}.typcn-divide-outline:before{content:'\e05e'}.typcn-divide:before{content:'\e05f'}.typcn-document-add:before{content:'\e060'}.typcn-document-delete:before{content:'\e061'}.typcn-document-text:before{content:'\e062'}.typcn-document:before{content:'\e063'}.typcn-download-outline:before{content:'\e064'}.typcn-download:before{content:'\e065'}.typcn-dropbox:before{content:'\e066'}.typcn-edit:before{content:'\e067'}.typcn-eject-outline:before{content:'\e068'}.typcn-eject:before{content:'\e069'}.typcn-equals-outline:before{content:'\e06a'}.typcn-equals:before{content:'\e06b'}.typcn-export-outline:before{content:'\e06c'}.typcn-export:before{content:'\e06d'}.typcn-eye-outline:before{content:'\e06e'}.typcn-eye:before{content:'\e06f'}.typcn-feather:before{content:'\e070'}.typcn-film:before{content:'\e071'}.typcn-filter:before{content:'\e072'}.typcn-flag-outline:before{content:'\e073'}.typcn-flag:before{content:'\e074'}.typcn-flash-outline:before{content:'\e075'}.typcn-flash:before{content:'\e076'}.typcn-flow-children:before{content:'\e077'}.typcn-flow-merge:before{content:'\e078'}.typcn-flow-parallel:before{content:'\e079'}.typcn-flow-switch:before{content:'\e07a'}.typcn-folder-add:before{content:'\e07b'}.typcn-folder-delete:before{content:'\e07c'}.typcn-folder-open:before{content:'\e07d'}.typcn-folder:before{content:'\e07e'}.typcn-gift:before{content:'\e07f'}.typcn-globe-outline:before{content:'\e080'}.typcn-globe:before{content:'\e081'}.typcn-group-outline:before{content:'\e082'}.typcn-group:before{content:'\e083'}.typcn-headphones:before{content:'\e084'}.typcn-heart-full-outline:before{content:'\e085'}.typcn-heart-half-outline:before{content:'\e086'}.typcn-heart-outline:before{content:'\e087'}.typcn-heart:before{content:'\e088'}.typcn-home-outline:before{content:'\e089'}.typcn-home:before{content:'\e08a'}.typcn-html5:before{content:'\e08b'}.typcn-image-outline:before{content:'\e08c'}.typcn-image:before{content:'\e08d'}.typcn-infinity-outline:before{content:'\e08e'}.typcn-infinity:before{content:'\e08f'}.typcn-info-large-outline:before{content:'\e090'}.typcn-info-large:before{content:'\e091'}.typcn-info-outline:before{content:'\e092'}.typcn-info:before{content:'\e093'}.typcn-input-checked-outline:before{content:'\e094'}.typcn-input-checked:before{content:'\e095'}.typcn-key-outline:before{content:'\e096'}.typcn-key:before{content:'\e097'}.typcn-keyboard:before{content:'\e098'}.typcn-leaf:before{content:'\e099'}.typcn-lightbulb:before{content:'\e09a'}.typcn-link-outline:before{content:'\e09b'}.typcn-link:before{content:'\e09c'}.typcn-location-arrow-outline:before{content:'\e09d'}.typcn-location-arrow:before{content:'\e09e'}.typcn-location-outline:before{content:'\e09f'}.typcn-location:before{content:'\e0a0'}.typcn-lock-closed-outline:before{content:'\e0a1'}.typcn-lock-closed:before{content:'\e0a2'}.typcn-lock-open-outline:before{content:'\e0a3'}.typcn-lock-open:before{content:'\e0a4'}.typcn-mail:before{content:'\e0a5'}.typcn-map:before{content:'\e0a6'}.typcn-media-eject-outline:before{content:'\e0a7'}.typcn-media-eject:before{content:'\e0a8'}.typcn-media-fast-forward-outline:before{content:'\e0a9'}.typcn-media-fast-forward:before{content:'\e0aa'}.typcn-media-pause-outline:before{content:'\e0ab'}.typcn-media-pause:before{content:'\e0ac'}.typcn-media-play-outline:before{content:'\e0ad'}.typcn-media-play-reverse-outline:before{content:'\e0ae'}.typcn-media-play-reverse:before{content:'\e0af'}.typcn-media-play:before{content:'\e0b0'}.typcn-media-record-outline:before{content:'\e0b1'}.typcn-media-record:before{content:'\e0b2'}.typcn-media-rewind-outline:before{content:'\e0b3'}.typcn-media-rewind:before{content:'\e0b4'}.typcn-media-stop-outline:before{content:'\e0b5'}.typcn-media-stop:before{content:'\e0b6'}.typcn-message-typing:before{content:'\e0b7'}.typcn-message:before{content:'\e0b8'}.typcn-messages:before{content:'\e0b9'}.typcn-microphone-outline:before{content:'\e0ba'}.typcn-microphone:before{content:'\e0bb'}.typcn-minus-outline:before{content:'\e0bc'}.typcn-minus:before{content:'\e0bd'}.typcn-mortar-board:before{content:'\e0be'}.typcn-news:before{content:'\e0bf'}.typcn-notes-outline:before{content:'\e0c0'}.typcn-notes:before{content:'\e0c1'}.typcn-pen:before{content:'\e0c2'}.typcn-pencil:before{content:'\e0c3'}.typcn-phone-outline:before{content:'\e0c4'}.typcn-phone:before{content:'\e0c5'}.typcn-pi-outline:before{content:'\e0c6'}.typcn-pi:before{content:'\e0c7'}.typcn-pin-outline:before{content:'\e0c8'}.typcn-pin:before{content:'\e0c9'}.typcn-pipette:before{content:'\e0ca'}.typcn-plane-outline:before{content:'\e0cb'}.typcn-plane:before{content:'\e0cc'}.typcn-plug:before{content:'\e0cd'}.typcn-plus-outline:before{content:'\e0ce'}.typcn-plus:before{content:'\e0cf'}.typcn-point-of-interest-outline:before{content:'\e0d0'}.typcn-point-of-interest:before{content:'\e0d1'}.typcn-power-outline:before{content:'\e0d2'}.typcn-power:before{content:'\e0d3'}.typcn-printer:before{content:'\e0d4'}.typcn-puzzle-outline:before{content:'\e0d5'}.typcn-puzzle:before{content:'\e0d6'}.typcn-radar-outline:before{content:'\e0d7'}.typcn-radar:before{content:'\e0d8'}.typcn-refresh-outline:before{content:'\e0d9'}.typcn-refresh:before{content:'\e0da'}.typcn-rss-outline:before{content:'\e0db'}.typcn-rss:before{content:'\e0dc'}.typcn-scissors-outline:before{content:'\e0dd'}.typcn-scissors:before{content:'\e0de'}.typcn-shopping-bag:before{content:'\e0df'}.typcn-shopping-cart:before{content:'\e0e0'}.typcn-social-at-circular:before{content:'\e0e1'}.typcn-social-dribbble-circular:before{content:'\e0e2'}.typcn-social-dribbble:before{content:'\e0e3'}.typcn-social-facebook-circular:before{content:'\e0e4'}.typcn-social-facebook:before{content:'\e0e5'}.typcn-social-flickr-circular:before{content:'\e0e6'}.typcn-social-flickr:before{content:'\e0e7'}.typcn-social-github-circular:before{content:'\e0e8'}.typcn-social-github:before{content:'\e0e9'}.typcn-social-google-plus-circular:before{content:'\e0ea'}.typcn-social-google-plus:before{content:'\e0eb'}.typcn-social-instagram-circular:before{content:'\e0ec'}.typcn-social-instagram:before{content:'\e0ed'}.typcn-social-last-fm-circular:before{content:'\e0ee'}.typcn-social-last-fm:before{content:'\e0ef'}.typcn-social-linkedin-circular:before{content:'\e0f0'}.typcn-social-linkedin:before{content:'\e0f1'}.typcn-social-pinterest-circular:before{content:'\e0f2'}.typcn-social-pinterest:before{content:'\e0f3'}.typcn-social-skype-outline:before{content:'\e0f4'}.typcn-social-skype:before{content:'\e0f5'}.typcn-social-tumbler-circular:before{content:'\e0f6'}.typcn-social-tumbler:before{content:'\e0f7'}.typcn-social-twitter-circular:before{content:'\e0f8'}.typcn-social-twitter:before{content:'\e0f9'}.typcn-social-vimeo-circular:before{content:'\e0fa'}.typcn-social-vimeo:before{content:'\e0fb'}.typcn-social-youtube-circular:before{content:'\e0fc'}.typcn-social-youtube:before{content:'\e0fd'}.typcn-sort-alphabetically-outline:before{content:'\e0fe'}.typcn-sort-alphabetically:before{content:'\e0ff'}.typcn-sort-numerically-outline:before{content:'\e100'}.typcn-sort-numerically:before{content:'\e101'}.typcn-spanner-outline:before{content:'\e102'}.typcn-spanner:before{content:'\e103'}.typcn-spiral:before{content:'\e104'}.typcn-star-full-outline:before{content:'\e105'}.typcn-star-half-outline:before{content:'\e106'}.typcn-star-half:before{content:'\e107'}.typcn-star-outline:before{content:'\e108'}.typcn-star:before{content:'\e109'}.typcn-starburst-outline:before{content:'\e10a'}.typcn-starburst:before{content:'\e10b'}.typcn-stopwatch:before{content:'\e10c'}.typcn-support:before{content:'\e10d'}.typcn-tabs-outline:before{content:'\e10e'}.typcn-tag:before{content:'\e10f'}.typcn-tags:before{content:'\e110'}.typcn-th-large-outline:before{content:'\e111'}.typcn-th-large:before{content:'\e112'}.typcn-th-list-outline:before{content:'\e113'}.typcn-th-list:before{content:'\e114'}.typcn-th-menu-outline:before{content:'\e115'}.typcn-th-menu:before{content:'\e116'}.typcn-th-small-outline:before{content:'\e117'}.typcn-th-small:before{content:'\e118'}.typcn-thermometer:before{content:'\e119'}.typcn-thumbs-down:before{content:'\e11a'}.typcn-thumbs-ok:before{content:'\e11b'}.typcn-thumbs-up:before{content:'\e11c'}.typcn-tick-outline:before{content:'\e11d'}.typcn-tick:before{content:'\e11e'}.typcn-ticket:before{content:'\e11f'}.typcn-time:before{content:'\e120'}.typcn-times-outline:before{content:'\e121'}.typcn-times:before{content:'\e122'}.typcn-trash:before{content:'\e123'}.typcn-tree:before{content:'\e124'}.typcn-upload-outline:before{content:'\e125'}.typcn-upload:before{content:'\e126'}.typcn-user-add-outline:before{content:'\e127'}.typcn-user-add:before{content:'\e128'}.typcn-user-delete-outline:before{content:'\e129'}.typcn-user-delete:before{content:'\e12a'}.typcn-user-outline:before{content:'\e12b'}.typcn-user:before{content:'\e12c'}.typcn-vendor-android:before{content:'\e12d'}.typcn-vendor-apple:before{content:'\e12e'}.typcn-vendor-microsoft:before{content:'\e12f'}.typcn-video-outline:before{content:'\e130'}.typcn-video:before{content:'\e131'}.typcn-volume-down:before{content:'\e132'}.typcn-volume-mute:before{content:'\e133'}.typcn-volume-up:before{content:'\e134'}.typcn-volume:before{content:'\e135'}.typcn-warning-outline:before{content:'\e136'}.typcn-warning:before{content:'\e137'}.typcn-watch:before{content:'\e138'}.typcn-waves-outline:before{content:'\e139'}.typcn-waves:before{content:'\e13a'}.typcn-weather-cloudy:before{content:'\e13b'}.typcn-weather-downpour:before{content:'\e13c'}.typcn-weather-night:before{content:'\e13d'}.typcn-weather-partly-sunny:before{content:'\e13e'}.typcn-weather-shower:before{content:'\e13f'}.typcn-weather-snow:before{content:'\e140'}.typcn-weather-stormy:before{content:'\e141'}.typcn-weather-sunny:before{content:'\e142'}.typcn-weather-windy-cloudy:before{content:'\e143'}.typcn-weather-windy:before{content:'\e144'}.typcn-wi-fi-outline:before{content:'\e145'}.typcn-wi-fi:before{content:'\e146'}.typcn-wine:before{content:'\e147'}.typcn-world-outline:before{content:'\e148'}.typcn-world:before{content:'\e149'}.typcn-zoom-in-outline:before{content:'\e14a'}.typcn-zoom-in:before{content:'\e14b'}.typcn-zoom-out-outline:before{content:'\e14c'}.typcn-zoom-out:before{content:'\e14d'}.typcn-zoom-outline:before{content:'\e14e'}.typcn-zoom:before{content:'\e14f'} \ No newline at end of file diff --git a/assets/less/icons/typicons/typicons.svg b/assets/less/icons/typicons/typicons.svg new file mode 100644 index 0000000..63929fe --- /dev/null +++ b/assets/less/icons/typicons/typicons.svg @@ -0,0 +1,1180 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +Created by FontForge 20120731 at Sun Jul 27 14:53:18 2014 + By Stephen Hutchings +(c) Stephen Hutchings 2012 +</metadata> +<defs> +<font id="typicons" horiz-adv-x="750" > + <font-face + font-family="Typicons" + font-weight="400" + font-stretch="normal" + units-per-em="1000" + panose-1="2 0 5 3 0 0 0 0 0 0" + ascent="800" + descent="-200" + bbox="-1.5 -242 1001.45 800" + underline-thickness="50" + underline-position="-100" + unicode-range="U+E000-E14F" + /> +<missing-glyph horiz-adv-x="364" +d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" /> + <glyph glyph-name=".notdef" horiz-adv-x="364" +d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" /> + <glyph glyph-name="glyph1" unicode="&#xe001;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM333 50q103 0 176.5 73t73.5 177t-73.5 177t-176.5 73t-176.5 -73t-73.5 -177t73.5 -177t176.5 -73zM333 508q86 0 147.5 -61t61.5 -147t-61.5 -147 +t-147.5 -61v416z" /> + <glyph glyph-name="glyph2" unicode="&#xe002;" +d="M333 550q0 42 42 42t42 -42t-42 -42t-42 42zM42 342q0 51 37 88t88 37h17q-17 38 -17 83q0 86 61 147t147 61t147 -61t61 -147q0 -45 -17 -83h17q36 0 64.5 -18t44.5 -45q16 -28 16 -62q0 -26 -8 -46q50 -37 50 -100q0 -107 -53 -192t-134 -133q-88 -50 -188 -50 +q-79 0 -148 31t-117 79t-79 117t-31 148q0 63 50 100q-8 20 -8 46zM125 238q-17 0 -29.5 -12.5t-12.5 -29.5q0 -120 86 -206t206 -86t206 86t86 206q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5q0 -76 -48.5 -133t-117.5 -71v308h166q17 0 29.5 12.5t12.5 29.5 +t-12.5 29t-29.5 12h-166v50q36 13 59.5 44t23.5 73q0 52 -36.5 88.5t-88.5 36.5t-88.5 -36.5t-36.5 -88.5q0 -41 24 -72.5t59 -44.5v-50h-166q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5h166v-308q-69 14 -117.5 71t-48.5 133q0 17 -12.5 29.5t-29.5 12.5zM180 258 +q28 -25 28 -62q0 -95 84 -144v206h-112zM458 52q36 21 60 58.5t24 85.5q0 37 28 62h-112v-206zM333 550q0 42 42 42t42 -42t-42 -42t-42 42z" /> + <glyph glyph-name="glyph0" unicode="&#xe000;" horiz-adv-x="783" +d="M392 511l-42 122q-6 17 2 33.5t25 22.5q24 8 45 -9.5t11 -46.5zM58 342l123 -42l-123 -42q-17 -6 -33.5 2.5t-22.5 25.5q-8 24 9.5 45t46.5 11zM392 89l41 -122q6 -17 -2 -33.5t-25 -22.5q-24 -8 -45 9.5t-11 46.5zM781 314q8 -24 -9.5 -45t-46.5 -11l-122 42l122 42 +q17 6 33.5 -2.5t22.5 -25.5zM126 506q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24l57 -116zM126 15q-25 13 -24 40t24 39l116 57l-57 -116q-8 -17 -25 -22.5t-34 2.5zM657 94q17 -8 22.5 -25t-2.5 -34q-13 -25 -40 -24t-39 24l-57 116zM657 585q25 -13 24 -40t-24 -39 +l-116 -57l57 116q8 17 25 22.5t34 -2.5zM392 488q77 0 132 -55.5t55 -132.5t-55 -132.5t-132 -55.5t-132.5 55.5t-55.5 132.5t55.5 132.5t132.5 55.5z" /> + <glyph glyph-name="glyph3" unicode="&#xe003;" horiz-adv-x="583" +d="M542 238q17 0 29 -12.5t12 -29.5q0 -121 -85 -206.5t-206 -85.5t-206.5 85.5t-85.5 206.5q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5q0 -75 47.5 -132.5t119.5 -71.5v308h-167q-17 0 -29 12.5t-12 29.5t12 29t29 12h167v50q-37 13 -60 45t-23 72q0 52 36.5 88.5 +t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72t-60.5 -45v-50h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-167v-308q72 14 119.5 71.5t47.5 132.5q0 17 12.5 29.5t29.5 12.5zM292 592q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5 +t-12 29.5t-29 12.5z" /> + <glyph glyph-name="glyph4" unicode="&#xe004;" horiz-adv-x="792" +d="M458 300q9 0 15 -6t6 -15t-6 -15t-15 -6h-125q-9 0 -15 6t-6 15t6 15t15 6h125zM750 592q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-708q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h708zM667 467q17 0 29 -12.5t12 -29.5v-333q0 -52 -36.5 -88.5 +t-88.5 -36.5h-375q-52 0 -88.5 36.5t-36.5 88.5v333q0 17 12.5 29.5t29.5 12.5h542zM583 50q17 0 29.5 12.5t12.5 29.5v291h-458v-291q0 -17 12 -29.5t29 -12.5h375z" /> + <glyph glyph-name="glyph5" unicode="&#xe005;" +d="M750 8q0 -17 -12 -29t-30 -12q-21 0 -34 19q-48 74 -110.5 106.5t-146.5 38.5v-60q0 -34 -25 -59q-24 -24 -59 -23.5t-58 23.5l-263 258q-12 12 -12 30t12 30l262 258q23 23 58.5 23.5t59.5 -23.5q25 -25 25 -59v-71q145 -29 239 -144t94 -264v-42zM376 216 +q179 -4 282 -88q-24 101 -103 171t-185 82l-37 2v146l-232 -229l232 -229v146z" /> + <glyph glyph-name="glyph6" unicode="&#xe006;" horiz-adv-x="667" +d="M292 571q16 0 28.5 -12.5t12.5 -29.5v-106q142 -16 238 -122.5t96 -250.5v-42q-64 97 -146 130.5t-188 36.5v-104q0 -17 -12.5 -29.5t-28.5 -12.5q-18 0 -30 12l-262 259l262 259q12 12 30 12z" /> + <glyph glyph-name="glyph7" unicode="&#xe007;" horiz-adv-x="667" +d="M333 -88l-296 297q-37 37 -37 88t37 88q34 34 84.5 35.5t86.5 -30.5v202q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-202q36 32 87 30.5t85 -35.5q37 -37 37 -88t-37 -88zM125 339q-18 0 -30 -12t-12 -29.5t12 -29.5l238 -238l238 238q12 12 12 29.5t-12 29.5 +t-29.5 12t-29.5 -12l-137 -138v403q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-403l-138 138q-12 12 -29 12z" /> + <glyph glyph-name="glyph8" unicode="&#xe008;" horiz-adv-x="583" +d="M559 356q25 -25 25 -59t-25 -59l-267 -267l-268 267q-25 25 -25 59t25 59t59 25t59 -25l66 -66v302q0 34 24.5 58.5t59.5 24.5q34 0 58.5 -24.5t24.5 -58.5v-302l66 66q25 25 59 25t59 -25z" /> + <glyph glyph-name="glyph9" unicode="&#xe009;" horiz-adv-x="417" +d="M404 246q12 -12 12 -29.5t-12 -29.5l-196 -196l-196 196q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l96 -95v316q0 17 12 29t29 12t29.5 -12t12.5 -29v-316l96 95q12 12 29 12t29 -12z" /> + <glyph glyph-name="glyph10" unicode="&#xe00a;" +d="M42 -33q-18 0 -30 12.5t-12 28.5v42q0 149 94 264t239 144v71q0 34 25 59q24 24 59.5 23.5t58.5 -23.5l262 -258q12 -12 12 -30t-12 -30l-263 -258q-23 -23 -58 -23.5t-59 23.5q-25 25 -25 59v60q-84 -6 -146.5 -38.5t-110.5 -106.5q-13 -19 -34 -19zM375 216l42 1v-146 +l232 229l-232 229v-146q-16 0 -37 -2q-106 -12 -185 -82t-103 -171q103 84 283 88z" /> + <glyph glyph-name="glyph11" unicode="&#xe00b;" horiz-adv-x="667" +d="M333 529q0 17 12.5 29.5t29.5 12.5t29 -12l263 -259l-263 -259q-12 -12 -29 -12t-29.5 12.5t-12.5 29.5v104q-106 -3 -187.5 -36.5t-145.5 -130.5v42q0 144 95.5 250.5t237.5 122.5v106z" /> + <glyph glyph-name="glyph12" unicode="&#xe00c;" horiz-adv-x="805" +d="M510 50q0 -51 -37 -88t-88 -37t-88 37l-297 296l297 297q35 35 88 35t88 -35q37 -37 37 -88q0 -49 -32 -84h202q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-202q32 -35 32 -83zM118 258l238 -237q12 -12 29.5 -12t29.5 12t12 29t-12 29l-138 138h403 +q17 0 29 12t12 29t-12 29.5t-29 12.5h-403l138 137q12 12 12 30q0 17 -12 29t-29.5 12t-29.5 -12z" /> + <glyph glyph-name="glyph13" unicode="&#xe00d;" horiz-adv-x="704" +d="M621 342q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24 -58.5t-59 -24.5h-302l66 -66q25 -24 25 -58.5t-25 -59.5q-24 -24 -59 -24t-59 24l-267 267l267 268q25 25 59 25t59 -25q25 -24 25 -58.5t-25 -59.5l-66 -66h302z" /> + <glyph glyph-name="glyph14" unicode="&#xe00e;" horiz-adv-x="517" +d="M476 342q17 0 29 -12.5t12 -29.5t-12 -29.5t-29 -12.5h-316l95 -95q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12l-196 196l196 196q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-95 -95h316z" /> + <glyph glyph-name="glyph15" unicode="&#xe00f;" horiz-adv-x="958" +d="M625 633q51 0 88 -37t37 -88v-7q90 -23 149 -102t59 -182q0 -121 -85 -206.5t-206 -85.5h-375q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85h41q49 0 83 -31l121 120q36 36 88 36zM667 8q86 0 147 61.5t61 147.5t-55 147t-132 61h-87l53 54q12 12 12 29.5t-12 29.5 +t-29 12t-29 -12l-155 -155l155 -154q12 -12 29 -12t29 12t12 29.5t-12 29.5l-53 54h87q43 0 73.5 -36.5t30.5 -88.5t-36.5 -88.5t-88.5 -36.5h-375q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h41q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-41q-86 0 -147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5h375zM708 258q0 -34 -24.5 -58.5t-58.5 -24.5q-35 0 -59 24l-155 155q-9 -24 -30 -39t-48 -15h-41q-35 0 -59.5 -24.5t-24.5 -58.5q0 -35 25 -59.5t59 -24.5h375q34 0 58.5 24.5t24.5 59.5q0 30 -15 53.5t-37 28.5q10 -17 10 -41z" /> + <glyph glyph-name="glyph16" unicode="&#xe010;" +d="M562 467q77 0 132.5 -61.5t55.5 -147.5t-61 -147t-147 -61h-334q-86 0 -147 61t-61 147t61 147.5t147 61.5q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5h334q52 0 88.5 36.5t36.5 88.5t-31 88.5t-74 36.5 +h-86l53 -54q12 -12 12 -29t-12 -29q-13 -13 -29 -13t-29 13l-155 154l155 154q12 12 29 12t29 -12t12 -29t-12 -29l-53 -54h86z" /> + <glyph glyph-name="glyph17" unicode="&#xe011;" horiz-adv-x="792" +d="M490 675h302v-292q0 -40 -23.5 -72t-60.5 -45v-5v-294h-291q-13 -37 -48.5 -60.5t-76.5 -23.5h-292v292q0 40 23.5 72t60.5 45l-1 5v295h290q13 37 45 60t72 23zM625 50v211q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5v-128h-125q-17 0 -29.5 -12t-12.5 -29 +t12.5 -29.5t29.5 -12.5h208zM167 508v-211q0 -17 12 -29t29 -12t29.5 12t12.5 29v128h128q17 0 29 12.5t12 29.5t-12 29t-29 12h-211zM708 383v209h-208q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h66l-137 -137q-12 -12 -12 -29.5t12 -29.5t29 -12q18 0 30 12 +l137 137v-66q0 -17 12.5 -29t29.5 -12t29 12t12 29zM292 -33q17 0 29 12t12 29t-12 29.5t-29 12.5h-66l137 137q12 12 12 29.5t-12 29.5t-30 12q-17 0 -29 -12l-137 -137v66q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-208h209zM333 300q34 0 59 -24.5t25 -58.5 +q0 -22 -13 -43q5 1 15 1h81v86l1 9q-19 -12 -43 -12q-34 0 -58.5 25t-24.5 59q0 22 12 42l-9 -1h-86v-86l-1 -9q19 12 42 12z" /> + <glyph glyph-name="glyph18" unicode="&#xe012;" horiz-adv-x="667" +d="M458 633h209v-208q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5v66l-137 -137q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l137 137h-66q-17 0 -29 12.5t-12 29.5t12 29t29 12zM221 246q12 12 29 12t29 -12t12 -29.5t-12 -29.5l-137 -137h66 +q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-166h-42v208q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-66zM125 300q-17 0 -29.5 12.5t-12.5 29.5v208h209q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-125v-125q0 -17 -12.5 -29.5t-29.5 -12.5zM542 300q17 0 29 -12.5 +t12 -29.5v-208h-208q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h125v125q0 17 12.5 29.5t29.5 12.5z" /> + <glyph glyph-name="glyph19" unicode="&#xe013;" horiz-adv-x="792" +d="M667 675q51 0 88 -37t37 -88t-37 -88l-37 -37q32 -35 32 -83q0 -57 -45 -95q3 -13 3 -28v-252h-247q-18 0 -31 4q-38 -46 -97 -46q-50 0 -85 33l-37 -38q-37 -37 -86 -37q-51 0 -88 37t-37 88q0 52 37 89l39 39q-29 35 -29 81q0 53 41 91q-5 25 -5 31v253h253q9 0 27 -4 +q38 45 95 45q50 0 84 -31l36 36q37 37 89 37zM167 508v-166q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83h83q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-166zM696 521q12 12 12 29t-12 29q-13 13 -29 13q-17 0 -30 -13l-137 -137v66q0 17 -12.5 29.5t-29.5 12.5 +t-29 -12.5t-12 -29.5v-208h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-66zM375 50v208h-203q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5h61l-137 -137q-12 -12 -12 -29.5t12 -29.5t29 -12q15 0 27 12l140 142v-71q0 -17 12 -29.5t29 -12.5t29.5 12.5 +t12.5 29.5zM375 300v94q-22 -11 -39 -11h-44v-41q0 -21 -12 -42h95zM417 258v-96q21 13 44 13h39v44q0 32 30 39h-113zM419 92q0 -17 12.5 -29.5t29.5 -12.5h164v167q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-84h-81q-17 0 -29.5 -12t-12.5 -29z" /> + <glyph glyph-name="glyph20" unicode="&#xe014;" horiz-adv-x="667" +d="M88 258h204v-208q0 -18 -10 -30t-27 -12t-29.5 12.5t-12.5 29.5v71l-142 -142q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l137 137h-61q-17 0 -29 12.5t-12 29.5t12 29t29 12zM125 342q-17 0 -29.5 12t-12.5 29v167h167q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12zM542 258q17 0 29 -12t12 -29v-167h-166q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h83v84q0 17 12.5 29t29.5 12zM596 621q12 12 29 12t29 -12t12 -29.5t-12 -29.5l-137 -137h66q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-208v208q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-66z" /> + <glyph glyph-name="glyph21" unicode="&#xe015;" horiz-adv-x="951" +d="M927 359q25 -24 25 -58.5t-25 -59.5l-393 -392q-25 -25 -58 -25q-34 0 -59 25l-393 392q-25 25 -25 59.5t25 58.5l393 392q25 25 59 25q33 0 58 -25zM684 133q16 0 29 13l155 154l-155 154q-13 13 -29 13q-17 0 -30 -13q-12 -12 -12 -29t12 -29l54 -54h-191v191l54 -54 +q12 -12 30 -12q17 0 29 12t12 29.5t-12 29.5l-154 154l-155 -154q-12 -12 -12 -29.5t12 -29.5t30 -12q17 0 29 12l54 54v-191h-191l54 54q12 12 12 29t-12 29q-13 13 -30 13q-16 0 -29 -13l-155 -154l155 -154q13 -13 29 -13q17 0 30 13q12 12 12 29t-12 29l-54 54h191v-191 +l-54 54q-12 12 -29 12q-18 0 -30 -12t-12 -29.5t12 -29.5l155 -154l154 154q12 12 12 29.5t-12 29.5t-29 12q-18 0 -30 -12l-54 -54v191h191l-54 -54q-12 -12 -12 -29t12 -29q13 -13 30 -13zM612 217h-53v-53q20 11 42 11q0 22 11 42zM339 217q12 -22 12 -42q21 0 41 -11v53 +h-53zM339 383h53v53q-20 -11 -41 -11q0 -20 -12 -42zM612 383q-11 20 -11 42q-22 0 -42 11v-53h53z" /> + <glyph glyph-name="glyph22" unicode="&#xe016;" horiz-adv-x="784" +d="M630 454l154 -154l-154 -154q-13 -13 -29 -13q-17 0 -30 13q-12 12 -12 29t12 29l54 54h-191v-191l54 54q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-155 -154l-154 154q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l54 -54v191h-191l53 -54q12 -12 12 -29t-12 -29 +q-13 -13 -29 -13q-17 0 -30 13l-154 154l154 154q12 12 29.5 12t29.5 -12t12 -29t-12 -29l-53 -54h191v191l-54 -54q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5l154 154l155 -154q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-54 54v-191h191l-54 54q-12 12 -12 29 +t12 29t29.5 12t29.5 -12z" /> + <glyph glyph-name="glyph23" unicode="&#xe017;" horiz-adv-x="958" +d="M625 633q51 0 88 -37t37 -88v-7q90 -23 149 -102t59 -182q0 -121 -85 -206.5t-206 -85.5h-42q-48 0 -83 32l-120 -120q-37 -37 -89 -37q-51 0 -88 37t-37 88l1 8q-90 23 -149.5 102.5t-59.5 181.5q0 121 85.5 206t206.5 85h41q48 0 83 -32l121 121q36 36 88 36zM667 8 +q86 0 147 61.5t61 147.5t-55 147t-132 61h-87l53 54q12 12 12 29.5t-12 29.5t-29 12t-29 -12l-155 -155l155 -154q12 -12 29 -12t29 12t12 29.5t-12 29.5l-53 54h87q43 0 73.5 -36.5t30.5 -88.5t-36.5 -88.5t-88.5 -36.5h-42q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5 +t29.5 -12.5h42zM250 175q0 34 24.5 58.5t58.5 24.5q35 0 59 -24l155 -155q9 24 30 39t48 15h42q34 0 58.5 24.5t24.5 59.5q0 30 -15 53.5t-37 28.5q10 -17 10 -41q0 -34 -24.5 -58.5t-58.5 -24.5q-35 0 -59 24l-155 155q-9 -24 -30 -39t-48 -15h-41q-35 0 -59.5 -24.5 +t-24.5 -58.5q0 -30 15 -53.5t37 -28.5q-10 17 -10 40zM375 383q0 17 -12.5 29.5t-29.5 12.5h-41q-86 0 -147.5 -61t-61.5 -147t55.5 -147.5t132.5 -61.5h87l-54 -54q-12 -12 -12 -29t12 -29q13 -13 29 -13q17 0 30 13l154 154l-154 154q-13 13 -30 13q-16 0 -29 -13 +q-12 -12 -12 -29t12 -29l54 -54h-87q-43 0 -73.5 36.5t-30.5 88.5t36.5 88.5t88.5 36.5h41q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph24" unicode="&#xe018;" +d="M562 508q77 0 132.5 -61t55.5 -147t-61 -147t-147 -61q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5q52 0 88.5 36.5t36.5 88.5t-31 88.5t-74 36.5h-86l53 -54q12 -12 12 -29.5t-12 -29.5t-29 -12t-29 12l-155 155l155 154q12 12 29 12t29 -12t12 -29.5t-12 -29.5 +l-53 -54h86zM221 288q12 12 29 12t29 -12l155 -155l-155 -154q-12 -12 -29 -12t-29 12t-12 29.5t12 29.5l53 54h-86q-77 0 -132.5 61t-55.5 147t61 147t147 61q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 -36.5t-36.5 -88.5t31 -88.5t74 -36.5h86l-53 54 +q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph25" unicode="&#xe019;" horiz-adv-x="805" +d="M420 -75q-51 0 -88 37t-37 88q0 9 1 16t4 15t5.5 13t9 17.5t11.5 21.5h-201q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h201q-4 9 -11 21.5t-9.5 17.5t-5.5 13.5t-4 15.5t-1 16q0 52 36 88q35 35 88.5 35t88.5 -35l297 -297l-297 -296q-37 -37 -88 -37zM125 300 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h402l-137 -138q-12 -12 -12 -29t12 -29t29.5 -12t29.5 12l238 237l-238 238q-12 12 -29.5 12t-29.5 -12t-12 -29q0 -18 12 -30l137 -137h-402z" /> + <glyph glyph-name="glyph26" unicode="&#xe01a;" horiz-adv-x="704" +d="M319 526q25 25 59 25t59 -25l267 -268l-267 -267q-24 -24 -59 -24t-59 24q-25 25 -25 59.5t25 58.5l66 66h-302q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h302l-66 66q-25 25 -25 59.5t25 58.5z" /> + <glyph glyph-name="glyph27" unicode="&#xe01b;" horiz-adv-x="517" +d="M262 496q12 12 29.5 12t29.5 -12l196 -196l-196 -196q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l96 95h-316q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h316l-96 95q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph28" unicode="&#xe01c;" +d="M42 425q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h146q73 0 126 -55q-26 -28 -49 -70q-32 42 -77 42h-146zM362 295l-20 -58q-26 -80 -82 -133.5t-114 -53.5h-104q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h104q26 0 62 37t55 93l20 59q26 79 93 132.5t138 53.5 +h76l-53 54q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l154 -154l-154 -155q-12 -12 -30 -12q-17 0 -29 12t-12 29.5t12 29.5l53 54h-76q-43 0 -89 -39t-63 -91zM537 246q12 12 29.5 12t29.5 -12l154 -154l-154 -155q-12 -12 -30 -12q-17 0 -29 12t-12 29.5t12 29.5l53 54 +h-97q-95 0 -157 80q28 42 45 91q11 -39 42 -63.5t70 -24.5h97l-53 54q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph29" unicode="&#xe01d;" horiz-adv-x="542" +d="M500 467q17 0 29.5 -13t12.5 -29t-13 -29l-258 -263l-259 263q-12 12 -12 29t12.5 29.5t29.5 12.5h458z" /> + <glyph glyph-name="glyph30" unicode="&#xe01e;" horiz-adv-x="542" +d="M42 175q-17 0 -29.5 13t-12.5 29q0 17 12 29l259 262l258 -262q13 -13 13 -29t-12.5 -29t-29.5 -13h-458z" /> + <glyph glyph-name="glyph31" unicode="&#xe01f;" horiz-adv-x="792" +d="M229 675q0 51 37 88t88 37q52 0 89 -37l193 -193q25 -9 45 -29q111 -111 111 -261q0 -164 -116 -280q-54 -53 -118 -82q4 -15 4 -35q0 -51 -36.5 -88t-87.5 -37q-52 0 -89 37l-195 195q-24 9 -43 28q-111 111 -111 261q0 164 116 280q54 54 118 82q-5 18 -5 34zM411 -32 +q119 4 206 91q91 91 91 221q0 116 -86 202q-12 12 -29 12q-18 0 -30 -12t-12 -29.5t12 -29.5q34 -34 48 -66.5t14 -76.5q0 -95 -67 -162q-60 -60 -143 -66l52 52q12 12 12 29.5t-12 29.5t-29 12q-18 0 -30 -12l-154 -155l154 -154q12 -12 30 -12q17 0 29 12t12 29.5 +t-12 29.5zM379 591q-119 -6 -204 -91q-92 -92 -92 -221q0 -116 86 -202q12 -12 30 -12q17 0 29 12t12 29.5t-12 29.5q-34 34 -47.5 66t-13.5 77q0 95 67 162q61 61 144 67l-53 -54q-12 -12 -12 -29t12 -29q13 -13 29 -13q17 0 30 13l154 154l-154 154q-13 13 -30 13 +q-16 0 -29 -13q-12 -12 -12 -29t12 -29zM354 342q-33 0 -57 22.5t-26 54.5l-8 -7q-55 -55 -55 -133q0 -36 11 -60.5t39 -52.5q30 -30 23 -71l98 97q25 25 59 25q33 0 57 -22.5t26 -54.5l7 8q55 55 55 132q0 36 -10.5 61t-38.5 53t-23 70l-98 -98q-24 -24 -59 -24z" /> + <glyph glyph-name="glyph32" unicode="&#xe020;" horiz-adv-x="625" +d="M625 280q0 -129 -92 -221q-87 -87 -205 -91l56 -55q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-155 154l155 155q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-52 -52q83 6 143 66q67 67 67 162q0 44 -14 76.5t-48 66.5q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12 +q86 -86 86 -202zM83 279q0 -44 14 -76.5t48 -66.5q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12q-86 86 -86 202q0 129 92 221q85 85 204 91l-55 55q-12 12 -12 29t12 29t29.5 12t29.5 -12l155 -154l-155 -154q-13 -13 -29 -13q-17 0 -30 13q-12 12 -12 29t12 29l53 54 +q-83 -6 -144 -67q-67 -67 -67 -162z" /> + <glyph glyph-name="glyph33" unicode="&#xe021;" horiz-adv-x="542" +d="M42 342q-17 0 -29.5 12t-12.5 29t12 29l259 263l258 -263q13 -13 13 -29t-12.5 -28.5t-29.5 -12.5h-458zM500 258q17 0 29.5 -12.5t12.5 -28.5t-13 -29l-258 -263l-259 263q-12 12 -12 29q0 16 12.5 28.5t29.5 12.5h458z" /> + <glyph glyph-name="glyph34" unicode="&#xe022;" horiz-adv-x="667" +d="M333 -75q-52 0 -88.5 36.5t-36.5 88.5v198q-36 -32 -86.5 -30.5t-84.5 35.5q-37 37 -37 88.5t37 88.5l296 297l297 -297q37 -37 37 -88.5t-37 -88.5q-34 -34 -85 -35.5t-87 30.5v-198q0 -52 -36.5 -88.5t-88.5 -36.5zM292 449v-399q0 -17 12 -29.5t29 -12.5t29.5 12.5 +t12.5 29.5v399l137 -137q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-238 238l-238 -238q-12 -12 -12 -29.5t12 -29.5t29.5 -12t29.5 12z" /> + <glyph glyph-name="glyph35" unicode="&#xe023;" horiz-adv-x="583" +d="M292 668l267 -267q25 -25 25 -59t-25 -59t-59 -25t-59 25l-66 66v-302q0 -35 -24.5 -59t-58.5 -24q-35 0 -59.5 24.5t-24.5 58.5v302l-66 -66q-25 -25 -59 -25t-59 25t-25 59t25 59z" /> + <glyph glyph-name="glyph36" unicode="&#xe024;" horiz-adv-x="417" +d="M208 567l196 -196q12 -12 12 -29.5t-12 -29.5t-29 -12t-29 12l-96 96v-316q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5v316l-96 -96q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5z" /> + <glyph glyph-name="glyph37" unicode="&#xe025;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5v-21q0 -52 -36.5 -88.5t-88.5 -36.5q-62 0 -100 50q-45 -50 -109 -50q-60 0 -102.5 43t-42.5 103t42.5 103t102.5 43q47 0 86 -29q10 29 39 29q17 0 29.5 -12.5t12.5 -29.5v-125q0 -17 12.5 -29t29.5 -12t29 12t12 29v21 +q0 104 -73.5 177t-176.5 73t-176.5 -73t-73.5 -177t73.5 -177t176.5 -73q78 0 141 43q14 10 31 6.5t27 -17.5t6.5 -31t-17.5 -27q-83 -57 -188 -57q-138 0 -235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM333 238q26 0 44.5 18.5t18.5 43.5t-18.5 43.5t-44.5 18.5 +q-25 0 -43.5 -18t-18.5 -44t18.5 -44t43.5 -18z" /> + <glyph glyph-name="glyph38" unicode="&#xe026;" horiz-adv-x="794" +d="M311 282q-9 0 -14.5 6.5t-5.5 13.5q0 9 6 15l189 189q25 25 58 25q35 0 60 -25q24 -24 24 -59t-24 -59q-49 -49 -147.5 -147t-147.5 -147q-25 -25 -59 -25t-59 25q-24 24 -24 59t24 59l4 4q-29 38 -29 88l-34 -33q-49 -49 -49 -118t49 -118t118 -49t118 49l294 295 +q49 49 49 117.5t-49 117.5t-118 49q-68 0 -117 -49l-189 -189q-31 -31 -31 -73q0 -43 31 -74t73 -31q43 0 74 31l89 88q24 24 24 59q0 34 -25 59l-147 -147q-6 -6 -15 -6zM544 697q104 0 177 -73t73 -177q0 -103 -73 -176l-294 -295q-73 -73 -177 -73t-177 73t-73 177 +q0 103 73 176l295 295q73 73 176 73z" /> + <glyph glyph-name="glyph39" unicode="&#xe027;" horiz-adv-x="628" +d="M228 157q-42 0 -73 30.5t-31 73.5q0 44 30 74l189 189q49 49 118 49t118 -49t49 -118t-49 -118l-295 -295q-49 -49 -117 -49q-69 0 -118 49t-49 118t49 118l33 33q0 -49 30 -88l-4 -4q-24 -24 -24 -59t24 -59t59 -24t59 24q49 49 147 147.5t147 147.5q24 24 24 59t-24 59 +q-25 24 -59.5 24t-58.5 -24l-189 -189q-6 -6 -6 -15t6 -15t15 -6t15 6l147 147q25 -25 25 -59q0 -33 -25 -58l-88 -89q-30 -30 -74 -30z" /> + <glyph glyph-name="glyph40" unicode="&#xe028;" horiz-adv-x="874" +d="M749 -75h-417q-45 0 -92.5 24t-73.5 61q-27 37 -79.5 111t-78.5 111q-8 11 -8 26t7 26l159 222q26 37 73.5 61.5t92.5 24.5h417q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -36.5 -88.5t-88.5 -36.5zM92 258q28 -38 77.5 -108t64.5 -91q14 -20 44 -35.5t54 -15.5h417 +q17 0 29 12.5t12 29.5v417q0 17 -12 29t-29 12h-417q-24 0 -54 -15t-44 -35q-24 -34 -71 -100t-71 -100zM528 258l111 -110q10 -10 4 -23t-19 -13q-8 0 -15 7l-110 110l-110 -110q-7 -7 -15 -7q-13 0 -19 13t4 23l110 110l-110 111q-9 9 -5 20t14.5 14t20.5 -5l110 -110 +l110 110q14 14 28.5 -0.5t0.5 -28.5z" /> + <glyph glyph-name="glyph41" unicode="&#xe029;" horiz-adv-x="832" +d="M728 592q43 0 73.5 -30.5t30.5 -73.5v-417q0 -43 -30.5 -73.5t-73.5 -30.5h-417q-40 0 -82.5 22t-65.5 54l-159 222q-10 14 0 28q27 37 79.5 111t78.5 111q23 32 66 54.5t83 22.5h417zM632 184l-95 95l95 96q12 12 12 29.5t-12 29.5t-29.5 12t-29.5 -12l-95 -96l-96 96 +q-12 12 -29.5 12t-29.5 -12t-12 -29.5t12 -29.5l96 -96l-96 -95q-12 -12 -12 -29.5t12 -29.5q13 -13 30 -13q16 0 29 13l96 95l95 -95q13 -13 30 -13q16 0 29 13q12 12 12 29.5t-12 29.5z" /> + <glyph glyph-name="glyph42" unicode="&#xe02a;" horiz-adv-x="792" +d="M125 383h458v-250h-458v250zM368 179l132 97l-108 -18l-49 79l-135 -97l110 18zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458 +q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph43" unicode="&#xe02b;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM542 133q-17 0 -29.5 12.5t-12.5 29.5 +v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM417 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5 +q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z +" /> + <glyph glyph-name="glyph44" unicode="&#xe02c;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM417 133q-17 0 -29.5 12.5t-12.5 29.5 +v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5 +t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph45" unicode="&#xe02d;" horiz-adv-x="792" +d="M167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250 +q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph46" unicode="&#xe02e;" horiz-adv-x="792" +d="M292 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM167 133q-17 0 -29.5 12.5t-12.5 29.5v167q0 17 12.5 29t29.5 12t29 -12t12 -29v-167q0 -17 -12 -29.5t-29 -12.5zM708 383q35 0 59.5 -24.5t24.5 -58.5 +v-83q0 -35 -25 -59.5t-59 -24.5q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5zM625 133v250q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29 +t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph47" unicode="&#xe02f;" horiz-adv-x="629" +d="M625 100q15 -54 -17 -93.5t-85 -39.5h-417q-53 0 -85 39.5t-17 93.5l103 380q2 8 5 28h-48q-17 0 -29 12.5t-12 29.5t12 29.5t29 12.5h500q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-49zM428 508h-233q-1 -28 -8 -49l-43 -160l4 1h333l4 -1zM523 50 +q28 0 21 28l-50 185q-7 -5 -13 -5h-333q-7 0 -14 5l-49 -185q-7 -28 21 -28h417z" /> + <glyph glyph-name="glyph48" unicode="&#xe030;" horiz-adv-x="708" +d="M208 112q0 -8 -6 -14t-14 -6t-14.5 6t-6.5 14v250q0 8 6.5 14.5t14.5 6.5t14 -6.5t6 -14.5v-250zM292 112q0 -8 -6.5 -14t-14.5 -6t-14.5 6t-6.5 14v250q0 8 6.5 14.5t14.5 6.5t14.5 -6.5t6.5 -14.5v-250zM375 112q0 -8 -6.5 -14t-14.5 -6t-14.5 6t-6.5 14v250 +q0 8 6.5 14.5t14.5 6.5t14.5 -6.5t6.5 -14.5v-250zM562 550q60 0 103 -43t43 -103v-208q0 -60 -43 -103t-103 -43h-20q0 -52 -36.5 -88.5t-88.5 -36.5h-292q-52 0 -88.5 36.5t-36.5 88.5v542q0 34 24 58.5t59 24.5h375q35 0 59.5 -24.5t24.5 -58.5v-42h20zM83 592v-63 +q0 -25 18.5 -43.5t44.5 -18.5q36 0 54 32l7 13l15 -3q14 -2 27.5 5.5t18.5 21.5l5 14h185v42h-375zM458 50v458h-157q-25 -41 -72 -41q-32 -42 -83 -42q-36 0 -63 21v-396q0 -17 12.5 -29.5t29.5 -12.5h292q17 0 29 12.5t12 29.5zM625 196v208q0 26 -18.5 44.5t-44.5 18.5 +h-62v-334h62q26 0 44.5 18.5t18.5 44.5z" /> + <glyph glyph-name="glyph49" unicode="&#xe031;" horiz-adv-x="666" +d="M655 79q19 -21 7.5 -46t-37.5 -25h-131q-14 -55 -59 -90t-102 -35t-101.5 35t-58.5 90h-131q-26 0 -38 26t8 46q3 3 8 9.5t17 29.5t21.5 50.5t17.5 74t8 98.5q0 81 46.5 145.5t120.5 90.5l-1 14q0 34 24 58.5t59 24.5t59.5 -24.5t24.5 -58.5l-2 -14q74 -26 121 -90.5 +t47 -145.5q0 -52 8 -98.5t17.5 -74.5t21.5 -50.5t17 -29.5t8 -10zM333 508q-69 0 -117.5 -48.5t-48.5 -117.5q0 -49 -4 -84h341q-5 43 -5 84q0 69 -49 117.5t-117 48.5zM333 -33q49 0 72 41h-143q23 -41 71 -41zM117 92h433q-25 52 -39 125h-355q-14 -73 -39 -125z" /> + <glyph glyph-name="glyph50" unicode="&#xe032;" +d="M625 675q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -30 -88.5t-74 -36.5h-28q-13 -36 -45.5 -59.5t-72.5 -23.5h-375q-52 0 -88.5 36.5t-36.5 88.5v458q0 16 12 30l125 125q12 12 30 12h458zM125 8h42v459h-84v-417q0 -17 12.5 -29.5t29.5 -12.5zM542 50v375 +q0 17 -12.5 29.5t-29.5 12.5h-292v-459h292q17 0 29.5 12.5t12.5 29.5zM667 133v417q0 17 -12.5 29.5t-29.5 12.5h-441l-42 -42h358q52 0 88.5 -36.5t36.5 -88.5v-333h21q6 0 13.5 11.5t7.5 29.5z" /> + <glyph glyph-name="glyph51" unicode="&#xe033;" horiz-adv-x="583" +d="M458 717q52 0 88.5 -36.5t36.5 -88.5v-584q0 -41 -19.5 -62.5t-46.5 -21.5q-34 0 -64 30l-132 133q-12 12 -29.5 12t-29.5 -12l-132 -133q-32 -31 -65.5 -30t-51.5 31q-13 23 -13 53v584q0 52 36.5 88.5t88.5 36.5h333zM125 633q-17 0 -29.5 -12t-12.5 -29v-413l102 94 +q44 41 106.5 41t106.5 -41l102 -94v413q0 17 -12.5 29t-29.5 12h-333zM380 146l120 -120v96l-130 120q-32 29 -78 29t-78 -29l-131 -120v-96l120 120q36 36 89 36q52 0 88 -36z" /> + <glyph glyph-name="glyph52" unicode="&#xe034;" +d="M625 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5q0 52 36.5 88.5t88.5 36.5h250q52 0 88.5 -36.5t36.5 -88.5zM250 550q-17 0 -29.5 -12.5t-12.5 -29.5h334q0 17 -12.5 29.5 +t-29.5 12.5h-250zM667 92v41h-584v-41q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5zM83 175h584v208q0 17 -12.5 29.5t-29.5 12.5h-500q-17 0 -29.5 -12.5t-12.5 -29.5v-208zM417 300q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-84q-17 0 -29 12t-12 29 +t12 29.5t29 12.5h84z" /> + <glyph glyph-name="glyph53" unicode="&#xe035;" horiz-adv-x="752" +d="M727 641q39 -39 19 -90q-108 -271 -390 -438q-13 -8 -23 -10q-13 -83 -75.5 -136.5t-147.5 -53.5q-19 0 -37 3l-61 9l-9 61q-16 101 44 178q54 69 144 83q4 14 8 22q167 282 438 390q15 6 31 6q35 0 59 -24zM110 -3q57 0 97 35.5t46 90.5l-43 43q-62 -7 -98.5 -55 +t-26.5 -113q8 -1 25 -1zM314 184q30 17 74 49q-67 67 -68 69q-28 -39 -49 -75zM422 258q170 132 247 324q-194 -77 -325 -248z" /> + <glyph glyph-name="glyph54" unicode="&#xe036;" horiz-adv-x="917" +d="M792 -33h-667q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h667q52 0 88.5 -36.5t36.5 -88.5v-416q0 -52 -36.5 -88.5t-88.5 -36.5zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-416q0 -17 12.5 -29.5t29.5 -12.5h667q17 0 29 12.5t12 29.5v416q0 17 -12 29.5 +t-29 12.5h-667zM375 175h-167q-17 0 -29 12.5t-12 29.5t12 29t29 12h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM375 342h-167q-17 0 -29 12t-12 29t12 29.5t29 12.5h167q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM542 362q0 84 83 84t83 -84 +q0 -83 -83 -83t-83 83zM625 244q45 0 74.5 -18t29.5 -42q0 -12 -30 -21t-74 -9q-47 0 -75.5 9t-28.5 21q0 24 28.5 42t75.5 18z" /> + <glyph glyph-name="glyph55" unicode="&#xe037;" horiz-adv-x="583" +d="M458 -75h-333q-53 0 -89 36t-36 89v500q0 53 36 89t89 36h333q53 0 89 -36t36 -89v-500q0 -53 -36 -89t-89 -36zM125 592q-19 0 -30.5 -11.5t-11.5 -30.5v-500q0 -19 11.5 -30.5t30.5 -11.5h333q19 0 30.5 11.5t11.5 30.5v500q0 19 -11.5 30.5t-30.5 11.5h-333zM125 342 +q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 342q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 342q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM125 217q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 217q0 41 42 41 +q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 217q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM125 92q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM250 92q0 41 42 41q41 0 41 -41q0 -42 -41 -42q-42 0 -42 42zM375 92q0 41 42 41q41 0 41 -41 +q0 -42 -41 -42q-42 0 -42 42zM417 508h-250v-41h250v41zM458 550v-125h-333v125h333z" /> + <glyph glyph-name="glyph56" unicode="&#xe038;" +d="M667 542q37 -13 60 -45t23 -72v-375q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v375q0 40 23 72t60 45v8q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5h84q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-8zM500 550v-83q0 -17 12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5v83q0 17 -12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5zM167 550v-83q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5zM667 50v250h-584v-250q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5zM667 342v83q0 17 -12.5 29.5t-29.5 12.5q0 -35 -24.5 -59.5t-58.5 -24.5t-59 24.5t-25 59.5h-166q0 -35 -25 -59.5t-59 -24.5t-58.5 24.5t-24.5 59.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584z" /> + <glyph glyph-name="glyph57" unicode="&#xe039;" +d="M667 542q37 -13 60 -45t23 -72v-375q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v375q0 40 23 72t60 45v8q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5h84q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-8zM500 550v-83q0 -17 12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5v83q0 17 -12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5zM167 550v-83q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v83q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5zM667 50v250h-584v-250q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5z" /> + <glyph glyph-name="glyph58" unicode="&#xe03a;" horiz-adv-x="833" +d="M708 -33h-583q-52 0 -88.5 36.5t-36.5 88.5v333q0 52 36.5 88.5t88.5 36.5h66l42 42q18 18 46 29.5t54 11.5h167q26 0 54.5 -11.5t46.5 -29.5l41 -42h66q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5zM125 467q-17 0 -29.5 -12.5t-12.5 -29.5v-333 +q0 -17 12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5v333q0 17 -12.5 29.5t-29.5 12.5h-83q-17 0 -29 12l-54 54q-17 17 -42 17h-167q-24 0 -41 -17l-54 -54q-12 -12 -30 -12h-83zM417 383q-43 0 -74 -30.5t-31 -73.5t31 -73.5t74 -30.5t73.5 30.5t30.5 73.5 +t-30.5 73.5t-73.5 30.5zM417 425q61 0 103 -42.5t42 -103.5q0 -60 -42.5 -103t-102.5 -43q-61 0 -103.5 43t-42.5 103q0 61 42.5 103.5t103.5 42.5zM667 438q22 0 38 -16t16 -39t-15.5 -38.5t-38.5 -15.5t-39 16t-16 38q0 23 16 39t39 16z" /> + <glyph glyph-name="glyph59" unicode="&#xe03b;" horiz-adv-x="833" +d="M708 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5v333q0 52 36.5 88.5t88.5 36.5h66l42 42q18 18 46 29.5t54 11.5h167q26 0 54.5 -11.5t46.5 -29.5l41 -42h66zM417 133q60 0 102.5 43t42.5 103q0 61 -42 103.5 +t-103 42.5t-103.5 -42.5t-42.5 -103.5q0 -60 42.5 -103t103.5 -43zM667 329q23 0 38.5 15.5t15.5 38.5t-16 39t-38 16q-23 0 -39 -16t-16 -39q0 -22 16 -38t39 -16z" /> + <glyph glyph-name="glyph60" unicode="&#xe03c;" horiz-adv-x="708" +d="M354 -54q-146 0 -250 104t-104 250t104 250t250 104t250 -104t104 -250t-104 -250t-250 -104zM354 571q-112 0 -191.5 -79.5t-79.5 -191.5t79.5 -191.5t191.5 -79.5t191.5 79.5t79.5 191.5t-79.5 191.5t-191.5 79.5zM354 446q-17 0 -25 -2l169 -170q2 8 2 26 +q0 60 -43 103t-103 43zM354 488q77 0 132.5 -55.5t55.5 -132.5q0 -52 -29 -99l-258 257q48 30 99 30zM211 326q-3 -12 -3 -26q0 -60 43 -103t103 -43q18 0 26 2zM196 400l258 -258q-48 -30 -100 -30q-78 0 -132.5 55t-54.5 133q0 53 29 100z" /> + <glyph glyph-name="glyph61" unicode="&#xe03d;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM125 300q0 -86 61 -147t147 -61q50 0 96 24l-280 280q-24 -46 -24 -96zM517 204q25 48 25 96q0 86 -61.5 147t-147.5 61q-49 0 -95 -24z" /> + <glyph glyph-name="glyph62" unicode="&#xe03e;" +d="M625 675q52 0 88.5 -37.5t36.5 -87.5v-417q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29v125q0 45 27 78l167 209q31 38 82.5 44.5t90.5 -22.5l69 -53l92 114q38 47 97 47zM667 550q0 16 -13 29t-29 13q-20 0 -33 -16l-116 -145q-11 -14 -27 -16t-30 8 +l-102 77q-13 10 -30.5 8t-27.5 -15l-167 -209q-9 -11 -9 -26v-83h584v375zM708 -75h-666q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h666q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5z" /> + <glyph glyph-name="glyph63" unicode="&#xe03f;" +d="M708 550v-417h-666v125q0 30 18 52l167 209q21 26 54.5 30t60.5 -16l102 -76l116 145q22 27 56 31t61 -18q31 -24 31 -65zM708 8q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-666q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h666z" /> + <glyph glyph-name="glyph64" unicode="&#xe040;" horiz-adv-x="667" +d="M542 592q52 0 88.5 -36.5t36.5 -88.5v-375h-667v250q0 52 36.5 88.5t88.5 36.5q47 0 83 -33v199q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-74q36 33 84 33zM333 675q-17 0 -29 -12.5t-12 -29.5v-458h83v458q0 17 -12.5 29.5t-29.5 12.5zM167 175v167 +q0 17 -12.5 29t-29.5 12t-29.5 -12t-12.5 -29v-167h84zM583 175v292q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29v-292h83zM625 -75h-583q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h583q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5z" /> + <glyph glyph-name="glyph65" unicode="&#xe041;" horiz-adv-x="667" +d="M417 633v-500h-167v500q0 35 24.5 59.5t58.5 24.5q35 0 59.5 -24.5t24.5 -59.5zM625 467v-334h-167v334q0 34 24.5 58.5t59.5 24.5q34 0 58.5 -24t24.5 -59zM208 342v-209h-166v209q0 34 24 58.5t59 24.5t59 -24.5t24 -58.5zM625 8q17 0 29.5 -12t12.5 -29t-12.5 -29.5 +t-29.5 -12.5h-583q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h583z" /> + <glyph glyph-name="glyph66" unicode="&#xe042;" +d="M125 92q-37 0 -67.5 20.5t-45 50t-12 66t26.5 66.5l167 208q31 38 82.5 45t90.5 -23l69 -52l91 113q38 47 98 47q50 0 86 -34.5t39 -79.5t-27 -89l-167 -208q-31 -38 -82 -44.5t-91 22.5l-70 52l-91 -113q-38 -47 -97 -47zM292 467q-20 0 -33 -16l-167 -208 +q-16 -22 -3.5 -45t36.5 -23q20 0 33 16l141 177l134 -101q13 -10 30.5 -8t27.5 15l167 208q16 22 3.5 45t-36.5 23q-20 0 -33 -16l-141 -176l-134 100q-10 9 -25 9zM667 -75h-584q-17 0 -29 12.5t-12 29.5t12 29t29 12h584q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5z" /> + <glyph glyph-name="glyph67" unicode="&#xe043;" horiz-adv-x="667" +d="M31 152q-27 22 -31 56t18 61l167 208q21 26 54.5 30.5t60.5 -15.5l102 -77l116 145q22 27 56 31t61 -18t31 -56t-18 -61l-166 -208q-21 -26 -54.5 -30.5t-60.5 15.5l-102 77l-117 -145q-24 -32 -65 -32q-28 0 -52 19zM42 -75q-17 0 -29.5 12.5t-12.5 29.5t12.5 29 +t29.5 12h583q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-583z" /> + <glyph glyph-name="glyph68" unicode="&#xe044;" horiz-adv-x="722" +d="M264 675q0 34 24.5 58.5t58.5 24.5h8q174 -15 311 -129q27 -23 29.5 -59.5t-23.5 -63.5l-24 -23q74 -108 74 -238q0 -147 -92 -262q-24 -29 -65 -31q-19 0 -37 9q-86 -56 -185 -56q-142 0 -242.5 101t-100.5 243q0 119 74.5 212.5t189.5 120.5v93zM343 -12q85 0 155 52 +l-192 198v267q-95 -14 -159 -86.5t-64 -169.5q0 -108 76.5 -184.5t183.5 -76.5zM347 299l265 266q-116 97 -265 110v-376zM356 246l209 -211q74 93 74 210q0 118 -74 211z" /> + <glyph glyph-name="glyph69" unicode="&#xe045;" horiz-adv-x="675" +d="M359 218l234 234q82 -103 82 -235q0 -109 -58 -200q-9 -14 -25.5 -15.5t-28.5 10.5zM250 200l216 -217q-77 -58 -174 -58q-121 0 -206.5 86t-85.5 207q0 110 72 192t178 97v-307zM555 541l-222 -223v315q0 17 12.5 28t29.5 8q98 -18 177 -73q14 -10 14.5 -26.5 +t-11.5 -28.5z" /> + <glyph glyph-name="glyph70" unicode="&#xe046;" horiz-adv-x="510" +d="M510 92q0 -51 -37 -88t-88 -37q-52 0 -88 36l-297 297l297 297q35 35 88.5 35t88.5 -35q36 -36 36 -89q0 -52 -36 -88l-120 -120l120 -120q36 -36 36 -88zM118 300l238 -238q12 -12 29.5 -12t29.5 12t12 30q0 17 -12 29l-179 179l179 179q12 12 12 29q0 18 -12 30 +t-29.5 12t-29.5 -12z" /> + <glyph glyph-name="glyph71" unicode="&#xe047;" horiz-adv-x="410" +d="M385 567q25 -25 25 -59t-25 -59l-149 -149l149 -149q25 -25 25 -59t-25 -59t-59 -25t-59 25l-267 267l267 267q24 25 59 25t59 -25z" /> + <glyph glyph-name="glyph72" unicode="&#xe048;" horiz-adv-x="510" +d="M125 -33q-51 0 -88 37t-37 88t37 88l120 120l-120 120q-37 37 -37 88q0 52 37 89q35 35 88 35t88 -35l297 -297l-297 -297q-36 -36 -88 -36zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5q0 -16 13 -29l178 -179l-178 -179q-13 -13 -13 -29q0 -17 13 -30q12 -12 29 -12t29 12 +l238 238l-238 238q-12 12 -29 12z" /> + <glyph glyph-name="glyph73" unicode="&#xe049;" horiz-adv-x="410" +d="M24 567q24 25 59 25t59 -25l268 -267l-268 -267q-25 -25 -59 -25t-59 25t-25 59t25 59l150 149l-150 149q-25 25 -25 59t25 59z" /> + <glyph glyph-name="glyph74" unicode="&#xe04a;" horiz-adv-x="667" +d="M542 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h417zM208 592v-42q0 -17 12.5 -29.5t29.5 -12.5h167q17 0 29 12.5t12 29.5v42h-250zM583 50v500q0 17 -12 29.5t-29 12.5h-42 +v-42q0 -34 -24 -58.5t-59 -24.5h-167q-34 0 -58.5 24.5t-24.5 58.5v42h-42q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5zM500 92h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20zM500 217h-333 +q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 342h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20z" /> + <glyph glyph-name="glyph75" unicode="&#xe04b;" horiz-adv-x="833" +d="M625 425q86 0 147 -61t61 -147t-61 -147.5t-147 -61.5h-167v191l54 -53q13 -13 30 -13q16 0 29 13q12 12 12 29t-12 29l-125 125q-11 11 -29 11.5t-30 -11.5l-125 -125q-12 -12 -12 -29t12 -29q13 -13 30 -13q16 0 29 13l54 53v-191h-208q-69 0 -118 49t-49 118 +q0 58 35 102.5t90 58.5v6q0 104 73.5 177t176.5 73q80 0 144.5 -46.5t90.5 -121.5z" /> + <glyph glyph-name="glyph76" unicode="&#xe054;" horiz-adv-x="844" +d="M635 425q86 0 147.5 -61t61.5 -147t-61.5 -147.5t-147.5 -61.5h-458q-70 0 -123.5 49.5t-53.5 117.5q0 53 38 98t77 63v6q0 103 78 176.5t182 73.5q82 0 151.5 -47t94.5 -121zM635 92q52 0 88.5 36.5t36.5 88.5t-36 88.5t-88 36.5q-14 0 -34 -6l-45 -12l-8 45 +q-11 60 -57 99.5t-107 39.5q-69 0 -117.5 -48.5t-48.5 -117.5q0 -18 3 -34l10 -50l-59 1q-32 0 -55.5 -25t-23.5 -59q0 -35 24 -59t59 -24h229v158l-89 -90q-6 -6 -15 -6q-13 0 -19 13t4 23l125 125q15 9 30 0l125 -125q10 -10 4 -23t-19 -13q-9 0 -15 6l-89 90v-158h187z +" /> + <glyph glyph-name="glyph77" unicode="&#xe04c;" horiz-adv-x="951" +d="M302 8q-52 0 -89 37l-213 213l213 214q35 35 88.5 35t88.5 -35q37 -37 37 -88.5t-37 -88.5l-36 -37l36 -36q37 -37 37 -88.5t-37 -88.5t-88 -37zM118 258l154 -154q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-95 95l95 96q12 12 12 29.5t-12 29.5t-29.5 12t-29.5 -12z +M649 8q-51 0 -88 37t-37 88.5t37 88.5l37 36l-37 37q-37 37 -37 88.5t37 88.5q35 35 88.5 35t88.5 -35l213 -214l-213 -213q-37 -37 -89 -37zM649 425q-17 0 -29 -12t-12 -29.5t12 -29.5l95 -96l-95 -95q-12 -12 -12 -29.5t12 -29.5t29.5 -12t29.5 12l154 154l-154 155 +q-12 12 -30 12z" /> + <glyph glyph-name="glyph78" unicode="&#xe04d;" horiz-adv-x="805" +d="M243 50q-35 0 -59 24l-184 184l184 184q25 25 59.5 25t58.5 -25q25 -25 25 -59t-25 -59l-66 -66l66 -66q25 -25 25 -59t-25 -59q-24 -24 -59 -24zM562 50q-35 0 -59 24q-25 25 -25 59t25 59l66 66l-66 66q-25 25 -25 59t25 59q24 25 58.5 25t59.5 -25l184 -184l-184 -184 +q-24 -24 -59 -24z" /> + <glyph glyph-name="glyph79" unicode="&#xe04e;" horiz-adv-x="708" +d="M542 8h-500q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h500q17 0 29 -12.5t12 -29.5t-12 -29.5t-29 -12.5zM562 592q60 0 103 -43t43 -103t-43 -103t-103 -43h-20v-83q0 -35 -25 -59.5t-59 -24.5h-333q-34 0 -58.5 24.5t-24.5 59.5v375h520zM458 217v291h-333 +v-291h333zM562 383q26 0 44.5 18.5t18.5 44.5q0 25 -18.5 43.5t-44.5 18.5h-62v-125h62z" /> + <glyph glyph-name="glyph80" unicode="&#xe04f;" horiz-adv-x="770" +d="M448 592h-125l-36 -143l-141 41l-63 -109l106 -102l-106 -102l63 -108l141 40l36 -142h125l35 142l142 -40l62 108l-106 102l106 102l-62 109l-142 -41zM448 675q28 0 50.5 -17.5t29.5 -45.5l15 -59l59 17q12 3 23 3q48 0 72 -42l62 -108q14 -25 10.5 -53t-24.5 -48 +l-44 -43l44 -42q20 -20 24 -48t-10 -53l-62 -109q-24 -41 -72 -41q-11 0 -23 3l-59 16l-14 -59q-7 -28 -29.5 -45.5t-51.5 -17.5h-125q-29 0 -51.5 17.5t-29.5 45.5l-15 59l-58 -17q-12 -3 -23 -3q-48 0 -72 42l-63 108q-14 25 -10.5 53.5t24.5 48.5l44 42l-44 42 +q-20 20 -24 48.5t10 53.5l63 108q24 42 72 42q11 0 23 -3l58 -17l15 59q7 28 29.5 45.5t51.5 17.5h125zM385 362q-35 0 -59 -24t-24 -59t24 -59t59 -24t59.5 24.5t24.5 58.5t-24.5 58.5t-59.5 24.5zM385 404q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5t-88.5 36.5 +t-36.5 88.5t36.5 88.5t88.5 36.5z" /> + <glyph glyph-name="glyph81" unicode="&#xe050;" horiz-adv-x="575" +d="M200 69q-4 16 -19 25t-32 4l-61 -18q-17 -5 -35 2.5t-26 22.5l-21 36q-8 15 -5 34t15 31l45 44q12 12 12 29t-12 29l-45 44q-13 12 -15 31t6 34l20 37q8 15 26 22t35 2l61 -17q17 -5 32 4t19 25l15 61q5 17 20 29t32 12h41q17 0 32 -12t20 -29l16 -61q5 -17 19.5 -25 +t30.5 -4l61 17q17 5 35 -2t26 -22l21 -37q8 -15 5 -34t-15 -31l-45 -44q-13 -12 -12.5 -29t12.5 -29l45 -44q12 -12 15 -31t-5 -34l-21 -36q-8 -15 -26 -22.5t-35 -2.5l-61 18q-16 4 -30.5 -4t-19.5 -25l-16 -62q-5 -17 -20 -28.5t-32 -11.5h-41q-17 0 -32 11.5t-20 28.5z +M288 362q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5q34 0 58.5 24t24.5 59t-24.5 59t-58.5 24z" /> + <glyph glyph-name="glyph82" unicode="&#xe051;" +d="M375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM529 480q11 3 20 -6t6 -20l-72 -248q-3 -11 -14 -14 +l-248 -72h-5q-10 0 -17 8t-4 18l72 248q3 11 14 14zM246 171l201 57l-144 144z" /> + <glyph glyph-name="glyph83" unicode="&#xe052;" horiz-adv-x="792" +d="M667 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-459q-52 0 -88.5 36.5t-36.5 88.5v42h-41q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h41v83h-41q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h41v83h-41q-17 0 -29.5 12.5t-12.5 29.5 +t12.5 29t29.5 12h41v42q0 52 36.5 88.5t88.5 36.5h459zM167 550v-42h41v84q-17 0 -29 -12.5t-12 -29.5zM167 425v-83h41v83h-41zM167 258v-83h41v83h-41zM167 50q0 -17 12 -29.5t29 -12.5v84h-41v-42zM708 50v500q0 17 -12 29.5t-29 12.5h-417v-584h417q17 0 29 12.5 +t12 29.5zM375 362q0 84 83 84q84 0 84 -84q0 -83 -84 -83q-83 0 -83 83zM458 244q45 0 74.5 -18t29.5 -42q0 -12 -30 -21t-74 -9q-47 0 -75.5 9t-28.5 21q0 24 28.5 42t75.5 18z" /> + <glyph glyph-name="glyph84" unicode="&#xe053;" horiz-adv-x="708" +d="M583 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5h458zM625 92v166h-542v-166q0 -17 12.5 -29.5t29.5 -12.5h458q17 0 29.5 12.5t12.5 29.5zM625 342v41q0 17 -12.5 29.5 +t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-41h542zM458 133q-20 0 -20 21t20 21h84q20 0 20 -21t-20 -21h-84z" /> + <glyph glyph-name="glyph85" unicode="&#xe055;" +d="M112 658h638l-58 -304q-1 -8 -54 -292l-342 -120l-296 120l29 159h125l-12 -67l179 -71l208 71l29 150h-512l25 134h512l17 87h-512z" /> + <glyph glyph-name="glyph86" unicode="&#xe056;" horiz-adv-x="583" +d="M583 434v-4v-260q0 -121 -85 -206.5t-206 -85.5t-206.5 85.5t-85.5 206.5v260l1 4q5 116 89.5 196.5t201.5 80.5t201.5 -80.5t89.5 -196.5zM292 66q68 0 124.5 37t83.5 97v16q-86 -88 -208 -88q-123 0 -209 88v-16q27 -60 84 -97t125 -37zM292 628q-86 0 -147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61zM292 -39q70 0 125 42.5t74 108.5q-81 -88 -199 -88t-199 88q19 -66 74 -108.5t125 -42.5z" /> + <glyph glyph-name="glyph87" unicode="&#xe057;" +d="M375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM375 8q121 0 206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5t-206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5zM404 300l111 -110q10 -10 4 -23t-19 -13q-9 0 -15 6 +l-110 111l-110 -111q-6 -6 -15 -6q-13 0 -19 13t4 23l111 110l-111 110q-14 14 1 29t29 1l110 -111l110 111q14 14 29 -1t1 -29z" /> + <glyph glyph-name="glyph88" unicode="&#xe058;" horiz-adv-x="667" +d="M333 633q138 0 236 -97.5t98 -235.5t-98 -235.5t-236 -97.5t-235.5 97.5t-97.5 235.5t97.5 235.5t235.5 97.5zM488 204l-96 96l96 96q12 12 12 29t-12 29t-29.5 12t-29.5 -12l-96 -95l-95 95q-12 12 -29.5 12t-29.5 -12t-12 -29t12 -29l95 -96l-95 -96q-12 -12 -12 -29 +t12 -29q13 -13 29 -13q17 0 30 13l95 95l96 -95q13 -13 29 -13q17 0 30 13q12 12 12 29t-12 29z" /> + <glyph glyph-name="glyph89" unicode="&#xe059;" horiz-adv-x="1000" +d="M875 758q52 0 88.5 -36.5t36.5 -88.5v-458q0 -52 -36.5 -88.5t-88.5 -36.5h-250v-83h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-500q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h125v83h-250q-52 0 -88.5 36.5t-36.5 88.5v458q0 52 36.5 88.5 +t88.5 36.5h750zM583 -33v83h-166v-83h166zM917 175v458q0 17 -12.5 29.5t-29.5 12.5h-750q-17 0 -29.5 -12.5t-12.5 -29.5v-458q0 -17 12.5 -29.5t29.5 -12.5h750q17 0 29.5 12.5t12.5 29.5zM833 633q17 0 29.5 -12t12.5 -29v-334q0 -17 -12.5 -29t-29.5 -12h-666 +q-17 0 -29.5 12t-12.5 29v334q0 17 12.5 29t29.5 12h666zM833 258v334h-666v-334h666z" /> + <glyph glyph-name="glyph90" unicode="&#xe05a;" horiz-adv-x="1000" +d="M916 131q36 -8 60 -36.5t24 -65.5q0 -43 -30.5 -73.5t-73.5 -30.5h-792q-43 0 -73.5 30.5t-30.5 73.5q0 37 24 65.5t60 36.5q0 6 -0.5 21t-0.5 23v375q0 52 36.5 88.5t88.5 36.5h584q52 0 88.5 -36.5t36.5 -88.5v-375q0 -8 -0.5 -23t-0.5 -21zM167 550v-375q0 -9 0.5 -23 +t0.5 -19h40v375q0 17 12.5 29.5t29.5 12.5h500q17 0 29.5 -12.5t12.5 -29.5v-375h41v42v375q0 17 -12 29.5t-29 12.5h-584q-17 0 -29 -12.5t-12 -29.5zM750 133v375h-500v-375h500zM896 8q8 0 14.5 6.5t6.5 14.5t-6.5 14.5t-14.5 6.5h-792q-8 0 -14.5 -6.5t-6.5 -14.5 +t6.5 -14.5t14.5 -6.5h792z" /> + <glyph glyph-name="glyph91" unicode="&#xe05b;" horiz-adv-x="542" +d="M417 675q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5h-292q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h292zM458 50v500q0 17 -12 29.5t-29 12.5h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h292 +q17 0 29 12.5t12 29.5zM375 550q17 0 29.5 -12.5t12.5 -29.5v-375q0 -17 -12.5 -29t-29.5 -12h-63q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5h-62q-17 0 -29.5 12t-12.5 29v375q0 17 12.5 29.5t29.5 12.5h208zM375 133v375h-208v-375h208z" /> + <glyph glyph-name="glyph92" unicode="&#xe05c;" horiz-adv-x="708" +d="M542 633q17 0 29 -12t12 -29v-500q0 -17 -12 -29.5t-29 -12.5h-146q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5h-145q-17 0 -29.5 12.5t-12.5 29.5v500q0 17 12.5 29t29.5 12h375zM542 92v500h-375v-500h375zM583 758q52 0 88.5 -36.5t36.5 -88.5v-625 +q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v625q0 52 36.5 88.5t88.5 36.5h458zM625 8v625q0 17 -12.5 29.5t-29.5 12.5h-458q-17 0 -29.5 -12.5t-12.5 -29.5v-625q0 -17 12.5 -29t29.5 -12h458q17 0 29.5 12t12.5 29z" /> + <glyph glyph-name="glyph93" unicode="&#xe05d;" horiz-adv-x="746" +d="M746 404l-114 -108l-3 -3q38 -43 38 -97q0 -60 -43 -103t-103 -43h-113l-33 -167h-42l-33 167h-92q-55 0 -94 39l-107 107l77 77q-38 17 -61 52.5t-23 78.5q0 60 43 103t103 43h146v21q0 25 18 43.5t44 18.5t44.5 -18.5t18.5 -43.5v-21h121q54 0 93 -37zM521 133 +q25 0 43.5 18.5t18.5 44.5t-18.5 44t-43.5 18h-313q-21 0 -35 -14l-48 -48l48 -48q15 -15 35 -15h313zM574 356l51 48l-51 48q-15 15 -36 15h-392q-26 0 -44.5 -18.5t-18.5 -44.5q0 -25 18.5 -43.5t44.5 -18.5h392q22 0 36 14z" /> + <glyph glyph-name="glyph94" unicode="&#xe05e;" +d="M375 446q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 612q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM375 -96q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5 +t88.5 36.5t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 71q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM625 175h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5 +t-36.5 -88.5t-88.5 -36.5zM125 342q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph95" unicode="&#xe05f;" horiz-adv-x="667" +d="M240 550q0 94 93 94q94 0 94 -94t-94 -94q-93 0 -93 94zM240 50q0 94 93 94q94 0 94 -94t-94 -94q-93 0 -93 94zM0 300q0 34 24 58.5t59 24.5h500q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24.5t-24 58.5z" /> + <glyph glyph-name="glyph96" unicode="&#xe060;" horiz-adv-x="667" +d="M458 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12t-29 12t-12 29v84h-84q-17 0 -29 12t-12 29t12 29.5t29 12.5h84v83q0 17 12 29.5t29 12.5t29.5 -12.5t12.5 -29.5v-83h83zM654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5 +t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500 +q0 -17 12.5 -29.5t29.5 -12.5h417z" /> + <glyph glyph-name="glyph97" unicode="&#xe061;" horiz-adv-x="667" +d="M654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5 +t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417zM458 217h-250q-17 0 -29 12t-12 29t12 29.5t29 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12z" /> + <glyph glyph-name="glyph98" unicode="&#xe062;" horiz-adv-x="667" +d="M542 -75h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h417q52 0 88.5 -36.5t36.5 -88.5v-500q0 -52 -36.5 -88.5t-88.5 -36.5zM125 592q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5v500q0 17 -12 29.5 +t-29 12.5h-417zM500 342h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20zM500 467h-333q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 217h-333q-9 0 -15 6t-6 15q0 20 21 20h333q21 0 21 -20q0 -9 -6 -15t-15 -6zM500 92 +h-333q-21 0 -21 20q0 9 6 15t15 6h333q9 0 15 -6t6 -15q0 -20 -21 -20z" /> + <glyph glyph-name="glyph99" unicode="&#xe063;" horiz-adv-x="667" +d="M654 496q13 -13 13 -29v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v500q0 52 36.5 88.5t88.5 36.5h333q18 0 30 -12zM566 467l-108 107v-45q0 -25 18.5 -43.5t44.5 -18.5h45zM542 8q17 0 29 12.5t12 29.5v375h-62q-43 0 -73.5 30.5 +t-30.5 73.5v63h-292q-17 0 -29.5 -12.5t-12.5 -29.5v-500q0 -17 12.5 -29.5t29.5 -12.5h417z" /> + <glyph glyph-name="glyph100" unicode="&#xe064;" +d="M749 92l1 -209q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29q0 209 1 209q0 9 1 13l84 250q10 28 39 28h23l-28 29q-37 37 -37 88t37 88q25 25 61 33t69 -3v57q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-57q33 11 69 3t61 -33q37 -37 37 -88t-37 -88 +l-28 -29h23q29 0 39 -28l84 -250q1 -4 1 -13zM179 529q-12 -12 -12 -29.5t12 -29.5l196 -195l196 196q12 12 12 29t-12 29t-29.5 12t-29.5 -12l-95 -95v241q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-241l-95 95q-13 13 -30 13q-16 0 -29 -13zM155 300l-69 -208 +h579l-70 208h-77l-143 -142l-143 142h-77zM667 -75v125h-584v-125h584z" /> + <glyph glyph-name="glyph101" unicode="&#xe065;" +d="M571 492q12 -12 12 -29.5t-12 -29.5l-196 -195l-196 195q-12 12 -12 29.5t12 29.5t29 12q18 0 30 -12l95 -96v279q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-279l95 96q11 11 30 11q18 0 29 -11zM749 133l1 -208q0 -17 -12.5 -29.5t-29.5 -12.5h-666 +q-17 0 -29.5 12.5t-12.5 29.5q0 208 1 208q0 9 1 13l84 250q10 29 39 29h9q7 -14 15 -22l62 -61h-56l-69 -209h578l-69 209h-56l62 61q8 8 15 22h9q29 0 39 -29l84 -250q1 -4 1 -13z" /> + <glyph glyph-name="glyph102" unicode="&#xe066;" +d="M0 262l154 121l221 -137l-154 -129zM221 650l154 -129l-221 -138l-154 121zM750 504l-154 -121l-221 138l154 129zM375 246l221 137l154 -121l-221 -145zM375 196l154 -129l67 45v-50l-221 -133l-221 133v50l67 -45z" /> + <glyph glyph-name="glyph103" unicode="&#xe067;" horiz-adv-x="792" +d="M773 578q19 -19 19 -44t-19 -44l-148 -148v-375q0 -17 -12.5 -29.5t-29.5 -12.5h-541q-17 0 -29.5 12.5t-12.5 29.5v541q0 17 12.5 29.5t29.5 12.5h375l148 148q19 19 44 19t44 -19zM354 189l262 262l-90 90l-262 -262zM247 244l3 -69l71 -3zM542 8v250l-133 -128 +q-16 -16 -50.5 -27t-64.5 -11h-127v127q0 33 9 66t25 49l132 133h-250v-459h459zM646 480l54 54l-91 91l-54 -54z" /> + <glyph glyph-name="glyph104" unicode="&#xe068;" horiz-adv-x="706" +d="M500 444q91 -27 148.5 -101.5t57.5 -172.5q0 -120 -86.5 -203.5t-208.5 -83.5q-98 0 -176.5 59t-106.5 150h-45q-35 0 -59 24t-24 59v417h417q34 0 58.5 -24.5t24.5 -59.5v-64zM167 366l200 -200q12 -12 29 -12q18 0 30 12t12 29.5t-12 29.5l-200 200h135q17 0 29 12.5 +t12 29.5t-12 29t-29 12h-278v-277q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v135zM417 -35q86 0 147 60.5t61 146.5t-61 146t-147 60q-30 0 -69 -16l107 -107q25 -25 25 -59.5t-25 -58.5q-25 -25 -59 -25t-59 25l-120 120q-9 -25 -9 -83q0 -86 61.5 -147.5 +t147.5 -61.5z" /> + <glyph glyph-name="glyph105" unicode="&#xe069;" horiz-adv-x="646" +d="M375 71q77 0 132 55t55 132t-55 132.5t-132 55.5q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q112 0 191.5 -79.5t79.5 -191.5t-79.5 -191t-191.5 -79t-191.5 79t-79.5 191q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5q0 -77 55 -132t132 -55zM277 633 +q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-135l242 -242q12 -12 12 -29.5t-12 -29.5t-30 -12q-17 0 -29 12l-242 242v-135q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v277h277v0z" /> + <glyph glyph-name="glyph106" unicode="&#xe06a;" +d="M625 300h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 467q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-500zM625 8h-500 +q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 175q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h500q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph107" unicode="&#xe06b;" horiz-adv-x="667" +d="M583 508q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24t-24 59t24 59t59 24h500zM583 217q35 0 59.5 -24.5t24.5 -59.5q0 -34 -24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24t-24 59t24.5 59.5t58.5 24.5h500z" /> + <glyph glyph-name="glyph108" unicode="&#xe06c;" horiz-adv-x="792" +d="M780 392q12 -12 12 -29.5t-12 -29.5q-53 -53 -113 -114v-252q0 -17 -12.5 -29.5t-29.5 -12.5h-583q-17 0 -29.5 12.5t-12.5 29.5v583q0 17 12.5 29.5t29.5 12.5h333q0 34 26 58.5t63 24.5t66 -27q96 -102 250 -256zM470 136q205 210 221 226q-141 143 -220 228l-7 2 +l-6 -2v-165h-41q-38 0 -69 -13t-52 -33t-37 -48.5t-25 -55.5t-15 -57q90 81 198 82h41v-165l6 -2zM83 8h500v185q-49 -49 -82 -85q-14 -16 -37 -16q-20 0 -33.5 12t-13.5 29v125q-143 -3 -250 -166v20q0 48 7 95t25.5 95t45.5 84t71.5 58.5t100.5 22.5v41h-334v-500z" /> + <glyph glyph-name="glyph109" unicode="&#xe06d;" +d="M167 112q0 48 7 95t25.5 95t45.5 84t71.5 58.5t100.5 22.5v125q0 17 13.5 29t33.5 12q22 0 37 -15l249 -256q-168 -169 -249 -254q-14 -16 -37 -16q-20 0 -33.5 12t-13.5 29v125q-143 -3 -250 -166v20zM42 -75q-17 0 -29.5 12.5t-12.5 29.5v583q0 17 12.5 29.5t29.5 12.5 +h333v-84h-292v-500h500v125q52 54 84 86v-252q0 -17 -12.5 -29.5t-29.5 -12.5h-583z" /> + <glyph glyph-name="glyph110" unicode="&#xe06e;" +d="M375 425q-78 0 -137 -42q-62 -44 -132 -125q68 -79 132 -124q59 -42 137 -42t137 42q64 45 132 124q-70 81 -132 125q-59 42 -137 42zM375 508q106 0 185 -57q48 -34 95.5 -82.5t70.5 -79.5l24 -31q-9 -13 -25.5 -34.5t-66.5 -73t-98 -85.5q-79 -57 -185 -57 +q-107 0 -186 57q-48 34 -95.5 82.5t-70.5 79.5l-23 31q9 13 25.5 34.5t66 73t97.5 85.5q79 57 186 57zM375 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12t-29.5 12t-12.5 29t12.5 29.5t29.5 12.5zM375 133q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5 +t88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM375 342q-34 0 -58.5 -24.5t-24.5 -59.5q0 -34 24 -58.5t59 -24.5t59 24.5t24 58.5q0 35 -24.5 59.5t-58.5 24.5z" /> + <glyph glyph-name="glyph111" unicode="&#xe06f;" horiz-adv-x="833" +d="M826 282q17 -23 0 -47q-6 -9 -27.5 -37t-71.5 -79.5t-101 -87.5q-90 -64 -209 -64q-120 0 -210 64q-51 36 -101 87.5t-71.5 79.5t-27.5 37q-17 23 0 47q5 9 27 37t72 79t101 87q91 65 210 65q118 0 209 -65q51 -36 101 -87t72 -79t27 -37zM417 112q60 0 102.5 43 +t42.5 103q0 61 -42.5 103.5t-102.5 42.5q-61 0 -103.5 -42.5t-42.5 -103.5q0 -60 42.5 -103t103.5 -43zM500 258q0 -34 -24 -58.5t-59 -24.5t-59.5 24.5t-24.5 58.5t24.5 59t59.5 25q34 0 58.5 -24.5t24.5 -59.5z" /> + <glyph glyph-name="glyph112" unicode="&#xe070;" horiz-adv-x="708" +d="M362 758q151 -28 248.5 -145.5t97.5 -270.5q0 -144 -87 -257.5t-225 -150.5v-51q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v51q-138 37 -225 150.5t-87 257.5q0 153 98 270.5t249 145.5l7 1zM396 21q100 35 163 120t66 192l-131 -131q-6 -6 -15 -6q-13 0 -19 12t4 23 +l157 157q-9 61 -36 113l-91 -91q-6 -6 -15 -6q-13 0 -19 13t4 23l98 98q-77 109 -208 136q-131 -27 -208 -136l98 -98q10 -10 4 -23t-19 -13q-9 0 -15 6l-91 91q-27 -52 -36 -113l157 -157q10 -11 4 -23t-19 -12q-9 0 -15 6l-130 131q3 -107 65.5 -192t162.5 -120v487 +q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-487z" /> + <glyph glyph-name="glyph113" unicode="&#xe071;" horiz-adv-x="667" +d="M167 467h333v-292h-333v292zM458 217v208h-250v-208h250zM542 717q52 0 88.5 -36.5t36.5 -88.5v-542q0 -52 -36.5 -88.5t-88.5 -36.5h-125v83h-167v-83h-125q-52 0 -88.5 36.5t-36.5 88.5v542q0 52 36.5 88.5t88.5 36.5h125v-84h167v84h125zM583 550v42q0 17 -12 29 +t-29 12h-42v-83h-333v83h-42q-17 0 -29.5 -12t-12.5 -29v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12v-42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12v-42q0 -17 12.5 -29.5t29.5 -12.5h42v84h333v-84h42q17 0 29 12.5t12 29.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5v42q-17 0 -29 12t-12 29t12 29.5t29 12.5z" /> + <glyph glyph-name="glyph114" unicode="&#xe072;" horiz-adv-x="671" +d="M627 550q35 0 42.5 -16.5t-17.5 -41.5l-175 -175q-24 -24 -41 -60t-17 -61v-146l-167 -83v208q0 35 -16.5 76t-41.5 66l-175 175q-25 25 -17.5 41.5t42.5 16.5h583z" /> + <glyph glyph-name="glyph115" unicode="&#xe073;" horiz-adv-x="583" +d="M512 611q20 20 45.5 8.5t25.5 -37.5v-334q0 -17 -12 -29q-64 -64 -154.5 -64t-154.5 64q-37 37 -88 40t-91 -29v-190q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v542q0 17 12 29q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40zM262 552q-37 37 -88 40 +t-91 -29v-95q54 26 116.5 16t106.5 -54q39 -39 94 -45t100 23v97q-58 -25 -124.5 -12.5t-113.5 59.5zM321 278q37 -37 88 -40t91 29v95q-43 -20 -83 -20q-80 0 -140 58q-39 39 -94 44.5t-100 -23.5v-96q42 17 84 17q90 0 154 -64z" /> + <glyph glyph-name="glyph116" unicode="&#xe074;" horiz-adv-x="583" +d="M512 611q20 20 45.5 8.5t25.5 -37.5v-334q0 -17 -12 -29q-64 -64 -154.5 -64t-154.5 64q-37 37 -88 40t-91 -29v-190q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v542q0 17 12 29q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40z" /> + <glyph glyph-name="glyph117" unicode="&#xe075;" horiz-adv-x="583" +d="M396 633zM396 633l-313 -295l209 -121l-104 -250l312 296l-208 120zM396 717q34 0 58.5 -24.5t24.5 -59.5q0 -17 -8 -35l-74 -179l145 -84q35 -20 40.5 -61.5t-25.5 -71.5l-312 -296q-25 -23 -58 -23q-45 0 -69 38t-7 78l76 182l-145 84q-35 20 -41 61t25 72l312 296 +q25 23 58 23z" /> + <glyph glyph-name="glyph118" unicode="&#xe076;" horiz-adv-x="500" +d="M479 299q18 -10 20.5 -31t-12.5 -36l-313 -296q-11 -11 -28 -11q-22 0 -34.5 19t-4.5 39l90 216l-176 102q-17 10 -20 31t12 36l313 296q13 11 28 11q17 0 29.5 -12.5t12.5 -29.5q0 -10 -4 -18l-89 -214z" /> + <glyph glyph-name="glyph119" unicode="&#xe077;" horiz-adv-x="667" +d="M542 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5q-40 0 -72.5 23.5t-45.5 60.5h-132q-86 0 -147.5 61t-61.5 147v299q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-59.5 -45.5v-7q0 -52 36.5 -88.5 +t88.5 -36.5h132q13 36 45.5 59.5t72.5 23.5q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5q-40 0 -72.5 23.5t-45.5 59.5h-132q-67 0 -125 43v-126q0 -52 36.5 -88.5t88.5 -36.5h132q13 36 45.5 59.5t72.5 23.5zM542 342q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5 +t29.5 -12.5t29 12.5t12 29.5t-12 29.5t-29 12.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph120" unicode="&#xe078;" horiz-adv-x="667" +d="M583 126q37 -13 60.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v77q0 25 -18 43.5t-44 18.5q-63 0 -105 44q-42 -44 -104 -44q-25 0 -43.5 -18.5t-18.5 -43.5v-77q36 -13 59.5 -45.5t23.5 -72.5 +q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v77q0 60 43 103t103 43q26 0 44.5 18.5t18.5 43.5v63q-37 13 -60.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-59.5 -45.5v-63q0 -25 18.5 -43.5 +t44.5 -18.5q60 0 102.5 -43t42.5 -103v-77zM125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM333 633q-17 0 -29 -12t-12 -29t12 -29.5t29 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29 +t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph121" unicode="&#xe079;" horiz-adv-x="667" +d="M583 126q37 -13 60.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v348q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-60.5 -45.5v-348zM542 633 +q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5t-12 29t-29 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM250 592q0 -40 -23.5 -72.5t-59.5 -45.5v-348q36 -13 59.5 -45.5t23.5 -72.5 +q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v348q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12z +M125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph122" unicode="&#xe07a;" horiz-adv-x="667" +d="M167 126q36 -13 59.5 -45.5t23.5 -72.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 40 23.5 72.5t59.5 45.5v28q0 78 61 133q39 -32 76 -48q-53 -31 -53 -85v-28zM125 -33q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29 +t29.5 -12zM500 474q-36 13 -59.5 45.5t-23.5 72.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -40 -23.5 -72.5t-60.5 -45.5v-14q0 -84 -63 -144q-35 29 -76 45q56 35 56 99v14zM542 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29 12.5t12 29.5t-12 29 +t-29 12zM581 126q38 -12 62 -44.5t24 -73.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 39 22 71t58 46q-11 57 -57.5 95t-106.5 38q-94 0 -164 62t-83 154q-38 12 -62 44.5t-24 73.5q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5q0 -39 -22 -71t-58 -46 +q11 -57 57 -95t106 -38q94 0 164.5 -62.5t83.5 -153.5zM125 633q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM542 -33q17 0 29 12t12 29t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph123" unicode="&#xe07b;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM625 50q17 0 29.5 12.5t12.5 29.5v291h-167q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5 +t14.5 6.5h167q0 17 -12.5 29.5t-29.5 12.5h-250q-35 0 -59 24.5t-24 58.5h-167q-17 0 -29.5 -12.5t-12.5 -29.5v-83h167q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-167v-291q0 -17 12.5 -29.5t29.5 -12.5h500zM500 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29 +t-29.5 -12h-83v-84q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v84h-83q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h83v83q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-83h83z" /> + <glyph glyph-name="glyph124" unicode="&#xe07c;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584q0 17 -12.5 29.5t-29.5 12.5h-250 +q-35 0 -59 24.5t-24 58.5h-167zM625 50q17 0 29.5 12.5t12.5 29.5v291h-584v-291q0 -17 12.5 -29.5t29.5 -12.5h500zM500 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12z" /> + <glyph glyph-name="glyph125" unicode="&#xe07d;" horiz-adv-x="876" +d="M846 467q16 0 24 -11.5t5 -30.5l-92 -333q-13 -53 -58.5 -89t-99.5 -36h-500q-53 0 -89 36t-36 89v416q0 53 36 89t89 36h171q34 0 58.5 -24.5t24.5 -58.5h250q40 0 72 -22.5t45 -60.5h100zM83 508v-387l67 262q6 19 20.5 30.5t33.5 11.5h463q0 19 -11.5 30.5t-30.5 11.5 +h-250q-35 0 -59 24.5t-24 58.5h-167q-19 0 -30.5 -11.5t-11.5 -30.5zM704 112l75 271h-571q-3 0 -7.5 -2.5t-4.5 -5.5l-79 -292q-3 -12 -1.5 -19.5t5.5 -10.5l4 -3h500q25 0 49 18.5t30 43.5z" /> + <glyph glyph-name="glyph126" unicode="&#xe07e;" +d="M625 550q52 0 88.5 -36.5t36.5 -88.5v-333q0 -52 -36.5 -88.5t-88.5 -36.5h-500q-52 0 -88.5 36.5t-36.5 88.5v416q0 52 36.5 88.5t88.5 36.5h167q34 0 58.5 -24.5t24.5 -58.5h250zM125 550q-17 0 -29.5 -12.5t-12.5 -29.5v-83h584q0 17 -12.5 29.5t-29.5 12.5h-250 +q-35 0 -59 24.5t-24 58.5h-167zM625 50q17 0 29.5 12.5t12.5 29.5v291h-584v-291q0 -17 12.5 -29.5t29.5 -12.5h500z" /> + <glyph glyph-name="glyph127" unicode="&#xe07f;" +d="M708 467q17 0 29.5 -12.5t12.5 -29.5v-167q0 -17 -12.5 -29t-29.5 -12v-209q0 -52 -36.5 -88.5t-88.5 -36.5h-416q-52 0 -88.5 36.5t-36.5 88.5v209q-17 0 -29.5 12t-12.5 29v167q0 17 12.5 29.5t29.5 12.5h98q-15 32 -15 62q0 60 43 103t103 43q62 0 104 -44 +q42 44 104 44q60 0 103 -43t43 -103q0 -30 -15 -62h98zM667 300v83h-209v-83h209zM333 508v-41h84v41h-84zM417 383h-84v-83h84v83zM479 592q-20 0 -36.5 -12t-22.5 -31q16 -2 27 -13.5t11 -27.5v-37q12 -4 21 -4q26 0 44.5 18.5t18.5 43.5t-19 44t-44 19zM208 529 +q0 -25 18.5 -43.5t44.5 -18.5q9 0 21 4v37q0 16 11 27.5t27 13.5q-6 19 -22.5 31t-36.5 12q-25 0 -44 -19t-19 -44zM292 383h-209v-83h209v83zM167 -33h125v291h-167v-250q0 -17 12.5 -29t29.5 -12zM333 -33h84v291h-84v-291zM583 -33q17 0 29.5 12t12.5 29v250h-167v-291 +h125z" /> + <glyph glyph-name="glyph128" unicode="&#xe080;" horiz-adv-x="652" +d="M277 550q-69 0 -117.5 -49t-48.5 -118t48.5 -117.5t117.5 -48.5t118 48.5t49 117.5t-49 118t-118 49zM277 633q103 0 176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5t73.5 176.5t176.5 73.5zM527 -33q17 0 29.5 -12.5t12.5 -29.5 +t-12.5 -29.5t-29.5 -12.5h-416q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166v41q-155 0 -265 110q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12q85 -85 206 -85q122 0 207 85t85 206q0 122 -85 207l-30 29l86 85q12 12 29.5 12t29.5 -12t11.5 -29.5t-12.5 -29.5 +l-28 -28q82 -102 82 -234q0 -155 -110 -265q-77 -77 -181 -100v-51h166z" /> + <glyph glyph-name="glyph129" unicode="&#xe081;" horiz-adv-x="652" +d="M277 -33v41q-155 0 -265 110q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12q85 -85 206 -85q122 0 207 85t85 206q0 122 -85 207l-30 29l86 85q12 12 29.5 12t29.5 -12t11.5 -29t-12.5 -29l-28 -29q82 -102 82 -234q0 -155 -110 -265q-77 -77 -181 -100v-51h166 +q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-416q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166zM27 383q0 103 73.5 176.5t176.5 73.5t176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5z" /> + <glyph glyph-name="glyph130" unicode="&#xe082;" horiz-adv-x="958" +d="M479 217q-86 0 -147 61t-61 147t61 147t147 61t147.5 -61t61.5 -147t-61.5 -147t-147.5 -61zM479 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM812 175q-44 0 -74 30.5t-30 73.5t30 73.5t74 30.5t74.5 -30.5 +t30.5 -73.5t-30.5 -73.5t-74.5 -30.5zM812 342q-25 0 -43.5 -18.5t-18.5 -44.5q0 -25 18 -43.5t44 -18.5t44.5 18.5t18.5 43.5t-18.5 44t-44.5 19zM812 150q64 0 105 -27t41 -63q0 -18 -42 -32t-104 -14q-34 0 -66 5l1 -11q0 -33 -77 -58t-191 -25q-120 0 -193.5 25 +t-73.5 58l1 12q-40 -6 -67 -6q-65 0 -105.5 14t-40.5 32q0 36 40 63t106 27q79 0 121 -40q79 65 212 65t212 -65q42 40 121 40zM146 56q48 0 82 9l10 14q-30 30 -92 30q-78 0 -101 -39q35 -14 101 -14zM479 8q105 0 173 24q-20 24 -65.5 42t-107.5 18q-65 0 -110 -18 +t-64 -42q67 -24 174 -24zM812 56q67 0 101 15q-10 15 -36.5 26.5t-64.5 11.5q-61 0 -92 -29q4 -5 10 -15q32 -9 82 -9zM146 175q-44 0 -74 30.5t-30 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30 -73.5t-74 -30.5zM146 342q-26 0 -44.5 -19t-18.5 -44t18.5 -43.5 +t44.5 -18.5t44 18.5t18 43.5q0 26 -18.5 44.5t-43.5 18.5z" /> + <glyph glyph-name="glyph131" unicode="&#xe083;" horiz-adv-x="958" +d="M688 425q0 -86 -61.5 -147t-147.5 -61t-147 61t-61 147t61 147t147 61t147.5 -61t61.5 -147zM917 279q0 -43 -30.5 -73.5t-74.5 -30.5t-74 30.5t-30 73.5t30 73.5t74 30.5t74.5 -30.5t30.5 -73.5zM812 150q64 0 105 -27t41 -63q0 -18 -42 -32t-104 -14q-34 0 -66 5l1 -11 +q0 -33 -77 -58t-191 -25q-120 0 -193.5 25t-73.5 58l1 12q-40 -6 -67 -6q-65 0 -105.5 14t-40.5 32q0 36 40 63t106 27q79 0 121 -40q79 65 212 65t212 -65q42 40 121 40zM250 279q0 -43 -30 -73.5t-74 -30.5t-74 30.5t-30 73.5t30 73.5t74 30.5q43 0 73.5 -30.5t30.5 -73.5 +z" /> + <glyph glyph-name="glyph132" unicode="&#xe084;" +d="M750 258v-108l-1 -5q1 -10 1 -33v-83q0 -60 -43 -103t-103 -43t-103 43t-43 103v83q0 47 23 84.5t60 52.5q-3 66 -51 112.5t-115 46.5t-115 -46.5t-51 -112.5q37 -15 60 -52.5t23 -84.5v-83q0 -60 -43 -103t-103 -43t-103 43t-43 103v83q0 23 1 33l-1 5v108 +q0 155 110 265t265 110t265 -110t110 -265zM83 258v-41h42q0 41 1 41q6 79 54 139l-37 37q-60 -79 -60 -176zM208 29v83q0 27 -12.5 45t-28.5 18h-79q-5 -35 -5 -63v-83q0 -25 18.5 -43.5t44.5 -18.5t44 18.5t18 43.5zM517 404q11 11 32 31.5t31 30.5l26 26q-96 96 -231 96 +t-231 -96l74 -74l15 -14q58 58 142 58t142 -58zM667 29v83q0 28 -5 63h-79q-16 0 -28.5 -18t-12.5 -45v-83q0 -25 18 -43.5t44 -18.5t44.5 18.5t18.5 43.5zM667 217v41q0 97 -60 176l-37 -37q49 -62 55 -139v-41h42z" /> + <glyph glyph-name="glyph133" unicode="&#xe085;" horiz-adv-x="808" +d="M0 408q0 93 67 159t158 66q114 0 183 -95q32 44 78.5 69.5t96.5 25.5q94 0 159.5 -65.5t65.5 -159.5q0 -129 -83 -212q-30 -31 -101.5 -85t-132.5 -96.5t-62 -43.5q-18 -9 -25 -9t-25 9q-2 2 -62.5 44.5t-132 96.5t-101.5 84q-83 83 -83 212z" /> + <glyph glyph-name="glyph134" unicode="&#xe086;" horiz-adv-x="808" +d="M0 408q0 93 67 159t158 66q114 0 183 -95q32 44 78.5 69.5t96.5 25.5q94 0 159.5 -65.5t65.5 -159.5q0 -129 -83 -212q-30 -31 -101.5 -85t-132.5 -96.5t-62 -43.5q-18 -9 -25 -9t-25 9q-2 2 -62.5 44.5t-132 96.5t-101.5 84q-83 83 -83 212zM408 367v-309q60 39 145 101 +t118 95q62 62 62 154q0 59 -41 100.5t-100 41.5t-100.5 -41.5t-41.5 -100.5q0 -19 -11.5 -30t-30.5 -11z" /> + <glyph glyph-name="glyph135" unicode="&#xe087;" horiz-adv-x="812" +d="M406 -33q-13 0 -23 7q-21 14 -67.5 46.5t-123.5 90t-107 87.5q-85 85 -85 211q0 93 65.5 158.5t158.5 65.5q114 0 182 -94q31 44 79.5 69t103.5 25q93 0 158 -65.5t65 -158.5q0 -126 -85 -211q-30 -30 -106 -87.5t-124 -90.5t-67 -46q-10 -7 -24 -7zM224 550 +q-58 0 -99.5 -41t-41.5 -100q0 -91 61 -152q63 -63 262 -198q199 135 262 198q61 61 61 152q0 59 -41 100t-99 41q-59 0 -100 -41t-41 -100q0 -17 -12.5 -29t-29.5 -12t-29 12t-12 29q0 59 -41.5 100t-99.5 41z" /> + <glyph glyph-name="glyph136" unicode="&#xe088;" horiz-adv-x="729" +d="M365 368q0 76 -53.5 129t-129.5 53t-129 -53t-53 -129q0 -110 73 -183l292 -218q225 152 291 218q73 73 73 183q0 76 -53 129t-129 53t-129 -53t-53 -129v0z" /> + <glyph glyph-name="glyph137" unicode="&#xe089;" horiz-adv-x="917" +d="M886 364q31 -24 31 -64q0 -34 -24.5 -58.5t-59.5 -24.5h-41v-250q0 -35 -25 -59.5t-59 -24.5h-500q-34 0 -58.5 24.5t-24.5 59.5v250h-42q-35 0 -59 24.5t-24 58.5q0 37 29 63q63 53 163 139t169 145t70 60l27 23l28 -23q1 -1 69.5 -60t168.5 -145t162 -138zM542 -33v208 +h-167v-208h167zM708 300h125q-185 155 -375 320q-190 -165 -375 -320h125v-333h125v250h250v-250h125v333z" /> + <glyph glyph-name="glyph138" unicode="&#xe08a;" horiz-adv-x="833" +d="M417 675q257 -223 400 -343q16 -13 16 -32q0 -17 -12 -29.5t-29 -12.5h-84v-291q0 -17 -12 -29.5t-29 -12.5h-125q-17 0 -29.5 12.5t-12.5 29.5v166h-167v-166q0 -17 -12 -29.5t-29 -12.5h-125q-17 0 -29.5 12.5t-12.5 29.5v291h-83q-17 0 -29.5 12.5t-12.5 29.5t15 32z +" /> + <glyph glyph-name="glyph139" unicode="&#xe08b;" horiz-adv-x="583" +d="M338 654v-62h-42v125h46l25 -46l29 46h42v-125h-42v62l-29 -46zM558 592h-100v125h42v-84h58v-41zM200 592v83h-38v42h117v-42h-37v-83h-42zM67 633v-41h-42v125h42v-42h37v42h42v-125h-42v41h-37zM0 550h583l-50 -600l-241 -67l-242 67zM471 358l8 71h-375l21 -221h258 +l-8 -96l-83 -20l-84 20l-4 63h-75l13 -121l150 -42l150 42l20 229h-266l-8 75h283z" /> + <glyph glyph-name="glyph140" unicode="&#xe08c;" horiz-adv-x="833" +d="M271 467q-25 0 -44 -18.5t-19 -44.5q0 -25 18.5 -43.5t44.5 -18.5q25 0 43.5 18t18.5 44t-18.5 44.5t-43.5 18.5zM271 508q43 0 73.5 -30t30.5 -74t-30.5 -74t-73.5 -30t-73.5 30t-30.5 74t30.5 74t73.5 30zM396 175q-39 0 -75 21t-71 21q-32 0 -67 -84h474 +q-15 68 -37 116.5t-37 50.5q-27 0 -77 -56q-20 -22 -32.5 -33.5t-34 -23.5t-43.5 -12zM583 342q37 0 68 -62.5t44 -125.5l13 -62h-583q2 7 5 18t15 39.5t25 50.5t35 40t45 18q44 0 81 -20.5t65 -20.5q20 0 43.5 19.5t42 43t46 43t55.5 19.5zM833 550v-500q0 -34 -24.5 -58.5 +t-58.5 -24.5h-667q-35 0 -59 24.5t-24 58.5v500q0 34 24 58.5t59 24.5h667q34 0 58.5 -24.5t24.5 -58.5zM750 50v500h-667v-500h667z" /> + <glyph glyph-name="glyph141" unicode="&#xe08d;" horiz-adv-x="833" +d="M167 446q0 104 104 104t104 -104t-104 -104t-104 104zM583 383q33 0 62 -49q41 -74 63 -201h-583l13 42q14 43 44.5 84t67.5 41q43 0 101 -31q20 -11 45 -11q30 0 69 44q46 52 73 68q22 13 45 13zM0 592q0 34 24 58.5t59 24.5h667q34 0 58.5 -24.5t24.5 -58.5v-500 +q0 -35 -24.5 -59.5t-58.5 -24.5h-667q-34 0 -58.5 24.5t-24.5 59.5v500zM750 92v500h-667v-500h667z" /> + <glyph glyph-name="glyph142" unicode="&#xe08e;" horiz-adv-x="896" +d="M813 262q0 74 -53.5 127t-126.5 53q-75 0 -127 -52l-58 -56l-57 55q-53 53 -128 53q-73 0 -126.5 -53t-53.5 -127t53.5 -127t126.5 -53q75 0 127 52l58 56l57 -56q52 -52 127 -52q74 0 127.5 53.5t53.5 126.5zM633 525q109 0 186 -77t77 -186t-77 -186q-78 -78 -186 -78 +q-109 0 -185 76q-76 -76 -185 -76q-108 0 -186 78q-77 77 -77 186t77 186t186 77q110 0 185 -75q75 75 185 75zM229 262q0 -14 10 -24t24 -10t24 10l26 24l-24 23q-11 11 -26 11q-14 0 -24 -10t-10 -24zM187 262q0 31 22.5 53.5t53.5 22.5q32 0 55 -23l55 -53l-56 -54 +q-21 -21 -54 -21q-31 0 -53.5 22t-22.5 53zM667 262q0 14 -9.5 23.5t-24.5 9.5q-16 0 -25 -9l-25 -24l24 -23q11 -11 26 -11q14 0 24 10t10 24zM708 262q0 -31 -22 -53t-53 -22q-33 0 -55 22l-55 53l56 53q22 22 54 22q31 0 53 -22t22 -53z" /> + <glyph glyph-name="glyph143" unicode="&#xe08f;" horiz-adv-x="729" +d="M0 262q0 74 53 127t127 53t127 -53l58 -55l58 56q52 52 126 52q73 0 126.5 -53t53.5 -127t-53.5 -127t-126.5 -53q-74 0 -127 53l-57 55l-59 -56q-52 -52 -126 -52t-127 53t-53 127zM180 338q-31 0 -53.5 -22.5t-22.5 -53.5q0 -32 22 -54t54 -22t54 22l55 54l-55 53 +q-23 23 -54 23zM603 208q22 22 22 54t-22 54t-53.5 22t-53.5 -22l-56 -54l55 -53q22 -22 54 -22.5t54 21.5z" /> + <glyph glyph-name="glyph144" unicode="&#xe090;" horiz-adv-x="458" +d="M343 133q40 -5 62 -41q15 -25 10 -55t-27 -49q-74 -63 -172 -63q-128 0 -176 98q-42 87 10 190l24 46q-41 5 -63 41q-15 25 -10 55t27 49q51 43 123 57q-26 42 -26 89q0 69 49 118t118 49t117.5 -49t48.5 -118q0 -50 -27.5 -91.5t-72.5 -61.5q32 -42 35 -98.5t-27 -119.5 +zM292 633q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5q34 0 58.5 24.5t24.5 58.5t-24.5 58.5t-58.5 24.5zM216 8q31 0 60.5 10.5t43.5 21.5l13 10q-26 -9 -50 -9q-37 0 -45 26.5t12 65.5l42 83q35 73 8 120t-99 47q-31 0 -60.5 -10.5t-43.5 -20.5l-14 -10 +q27 9 51 9q37 0 45 -27t-12 -65l-42 -83q-35 -73 -8 -120.5t99 -47.5z" /> + <glyph glyph-name="glyph145" unicode="&#xe091;" horiz-adv-x="333" +d="M264 70q15 5 24.5 -9.5t-3.5 -26.5q-4 -4 -17.5 -13t-47 -21t-67.5 -12q-87 0 -119 63q-28 59 10 134l42 83q22 44 2 58q-4 4 -17 4q-9 0 -19.5 -2t-17.5 -4l-6 -2q-15 -5 -24.5 9t3.5 26q5 5 17.5 13.5t46 21t67.5 12.5q89 0 120 -63q28 -59 -10 -134l-42 -83 +q-22 -45 -2 -59q3 -3 17 -3q9 0 19.5 2t17.5 4zM125 550q0 104 104 104t104 -104t-104 -104t-104 104z" /> + <glyph glyph-name="glyph146" unicode="&#xe092;" horiz-adv-x="819" +d="M410 570q-39 0 -65 -44l-246 -411q-26 -44 -8.5 -75.5t69.5 -31.5h500q52 0 69.5 32t-9.5 76l-246 410q-26 44 -64 44zM160 -75q-67 0 -113.5 38t-46.5 102q0 45 28 93l246 411q50 85 136 85q85 0 135 -85l247 -411q51 -85 10 -159q-43 -74 -142 -74h-500zM472 102 +q-4 -4 -10.5 -10t-28.5 -15.5t-45 -8.5q-31 2 -44 26.5t-1 61.5l17 51q12 36 -10 48q-8 3 -18 1.5t-18 -4.5l-8 -4q4 4 10.5 10t28.5 15.5t45 8.5q31 -2 44 -27t1 -62l-17 -51q-11 -36 10 -47q8 -3 18 -1.5t18 4.5zM355 383q0 55 55 55q54 0 54 -55q0 -54 -54 -54 +q-55 0 -55 54z" /> + <glyph glyph-name="glyph147" unicode="&#xe093;" horiz-adv-x="819" +d="M160 -75q-67 0 -113.5 38t-46.5 103q0 45 28 92l246 411q50 85 136 85q85 0 135 -85l247 -411q27 -44 27 -93q0 -38 -17 -66q-43 -74 -142 -74h-500zM410 448q-27 0 -46 -19t-19 -46q0 -26 19.5 -45t45.5 -19q27 0 45.5 19t18.5 45t-19 45.5t-45 19.5zM480 95q6 7 0 12.5 +t-12 2.5q-20 -8 -30 -8l-6 1q-14 6 -4 35l17 51q13 41 -3 71t-52 32q-25 1 -48 -8.5t-32.5 -18t-11.5 -11.5q-6 -7 -0.5 -13t12.5 -3q20 8 30 8l6 -1q14 -6 4 -35l-17 -51q-14 -41 2.5 -70.5t52.5 -31.5h6q24 0 45.5 9.5t30.5 17.5t10 11z" /> + <glyph glyph-name="glyph148" unicode="&#xe094;" horiz-adv-x="625" +d="M500 633q69 0 107 -60t2 -125l-26 -46v-269q0 -52 -36.5 -88.5t-88.5 -36.5h-333q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h283q36 41 92 41zM464 529l-141 -243l-85 85q-12 12 -30 12q-17 0 -29 -12t-12 -29.5t12 -29.5l125 -125q12 -12 29 -12 +q27 2 37 21l167 292q6 20 3 32q-5 17 -21 25.5t-36 0.5q-14 -7 -19 -17zM458 92q17 0 29.5 12t12.5 29v207l-94 -164q-20 -36 -61 -42l-12 -1q-34 0 -59 25l-125 125q-25 25 -25 59t25 59q24 24 59 24t59 -24l47 -47l90 154h-279q-17 0 -29.5 -12t-12.5 -29v-334 +q0 -17 12.5 -29t29.5 -12h333z" /> + <glyph glyph-name="glyph149" unicode="&#xe095;" horiz-adv-x="583" +d="M458 8h-333q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h208q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-208q-17 0 -29.5 -12t-12.5 -29v-334q0 -17 12.5 -29t29.5 -12h333q17 0 29.5 12t12.5 29v125q0 17 12.5 29.5t29.5 12.5t29 -12.5 +t12 -29.5v-125q0 -52 -36.5 -88.5t-88.5 -36.5zM340 182q-23 0 -39 16l-111 111q-16 17 -16 40t16 39t39 16t39 -16l60 -59l144 227q11 20 33.5 26.5t42.5 -4.5t26 -33.5t-5 -42.5l-180 -291q-14 -26 -49 -29z" /> + <glyph glyph-name="glyph150" unicode="&#xe096;" horiz-adv-x="646" +d="M250 -75h-250v184l158 158q-12 36 -12 75q0 104 73 177t177 73t177 -73t73 -177t-73 -177t-177 -73h-63v-84h-83v-83zM83 8h84v84h83v83h146q69 0 117.5 49t48.5 118t-48.5 117.5t-117.5 48.5t-118 -48.5t-49 -117.5q0 -36 15 -69l12 -26l-173 -173v-66zM396 383 +q-17 0 -29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM396 425q34 0 58.5 -24.5t24.5 -58.5q0 -35 -24.5 -59.5t-58.5 -24.5t-59 25t-25 59t24.5 58.5t59.5 24.5z" /> + <glyph glyph-name="glyph151" unicode="&#xe097;" horiz-adv-x="562" +d="M146 342q0 86 61 147t147 61t147 -61t61 -147t-61 -147.5t-147 -61.5h-104v-83h-83v-83h-84q-20 0 -41 15.5t-32 31.5l-10 15v63l165 164q-19 41 -19 86zM354 258q34 0 59 25t25 59t-24.5 58.5t-59.5 24.5q-34 0 -58.5 -24.5t-24.5 -58.5q0 -35 24.5 -59.5t58.5 -24.5z +" /> + <glyph glyph-name="glyph152" unicode="&#xe098;" horiz-adv-x="833" +d="M250 258h292v-83h-292v83zM125 258h83v-83h-83v83zM125 425h83v-42h-83v42zM250 300h-125v42h125v-42zM250 425h42v-42h-42v42zM292 342h41v-42h-41v42zM333 425h42v-42h-42v42zM375 342h42v-42h-42v42zM417 425h41v-42h-41v42zM458 342h42v-42h-42v42zM500 425h42v-42 +h-42v42zM542 342h41v-42h-41v42zM583 425h42v-42h-42v42zM625 300v42h42v83h41v-125h-83zM667 258v-41h41v-42h-125v42h42v41h42zM750 550q34 0 58.5 -24t24.5 -59v-334q0 -35 -24.5 -59t-58.5 -24h-667q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h667zM750 133v334h-667 +v-334h667z" /> + <glyph glyph-name="glyph153" unicode="&#xe099;" horiz-adv-x="708" +d="M708 342q0 -144 -87 -257.5t-225 -150.5v-51q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v51q-138 37 -225 150.5t-87 257.5q0 153 98 270.5t249 145.5l7 1l8 -1q151 -28 248.5 -145.5t97.5 -270.5zM396 21q102 35 165.5 123t63.5 198q0 121 -76.5 214.5t-194.5 117.5 +q-118 -24 -194.5 -117.5t-76.5 -214.5q0 -109 64 -197.5t166 -123.5v125l-182 181q-9 9 -5 20t14.5 14t20.5 -5l152 -152v150l-99 98q-9 9 -5 20t14.5 14t20.5 -5l68 -68v137q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-137l68 68q9 9 20.5 5t14.5 -14t-5 -20 +l-98 -98v-150l152 152q14 14 28.5 -0.5t0.5 -28.5l-181 -181v-125z" /> + <glyph glyph-name="glyph154" unicode="&#xe09a;" horiz-adv-x="625" +d="M312 571q51 0 87.5 -36.5t36.5 -87.5q0 -9 -6 -15t-15 -6t-15 6t-6 15q0 34 -24 58t-58 24q-20 0 -20 21t20 21zM312 -117q-17 0 -29 12.5t-12 29.5h-83q-17 0 -29.5 12.5t-12.5 29.5v125q0 25 -18 61t-72 114l-3 5q-53 79 -53 174q0 129 91.5 220.5t220.5 91.5 +t221 -91.5t92 -220.5q0 -97 -57 -179q-54 -77 -71.5 -112.5t-17.5 -62.5v-125q0 -17 -12 -29.5t-29 -12.5h-84q0 -17 -12.5 -29.5t-29.5 -12.5zM396 8v42h-167v-42h167zM500 314q42 61 42 132q0 94 -67.5 161.5t-162.5 67.5q-94 0 -161.5 -67.5t-67.5 -161.5q0 -70 42 -131 +l3 -6q82 -117 96 -176h47v84q0 17 12 29t29 12t29.5 -12t12.5 -29v-84h46q13 57 100 181z" /> + <glyph glyph-name="glyph155" unicode="&#xe09b;" horiz-adv-x="758" +d="M629 550q-19 0 -32 -13l-72 -72l-13 13q-36 36 -91 36t-91 -36l-174 -174q-38 -38 -38 -92q0 -53 38 -91l12 -13l-71 -71q-13 -13 -13 -32t13 -33q14 -14 32 -14q19 0 33 14l71 72l13 -13q38 -38 92 -38q53 0 91 38l174 174q37 37 37 91t-37 91l-13 13l72 72q14 14 14 33 +t-14 32q-13 13 -33 13zM129 -125q-53 0 -91 38.5t-38 90.5q0 54 38 92l20 20q-23 46 -23 96q0 89 62 151l174 174q61 61 150 61q52 0 96 -23l21 21q37 37 91 37q53 0 91 -38.5t38 -90.5q0 -55 -38 -91l-20 -20q24 -48 24 -97q0 -87 -63 -150l-173 -174q-62 -62 -151 -62 +q-51 0 -97 23l-20 -20q-38 -38 -91 -38zM460 250q-34 1 -59 26t-26 59l-76 -77q34 -1 58.5 -25.5t25.5 -58.5zM421 424q15 0 26 -11l13 -13l-30 -30q-14 -14 -14 -33t14 -32q13 -13 32 -13q20 0 33 13l30 30l13 -13q11 -11 11 -26q0 -16 -11 -27l-174 -173q-11 -11 -26 -11 +q-16 0 -27 11l-13 12l30 30q14 14 14 33t-14 32q-14 14 -32 14q-19 0 -33 -14l-30 -30l-13 13q-10 10 -10 26q0 17 10 27l174 174q11 11 27 11z" /> + <glyph glyph-name="glyph156" unicode="&#xe09c;" horiz-adv-x="592" +d="M578 537q14 -13 14 -32t-14 -33l-71 -72l12 -13q38 -38 38 -91t-38 -91l-173 -174q-38 -38 -92 -38q-53 0 -91 38l-13 13l-72 -72q-14 -14 -32 -14q-19 0 -33 14q-13 14 -13 33t13 32l72 71l-13 13q-37 37 -37 92q0 54 37 91l174 174q37 37 91.5 37t91.5 -37l13 -13 +l71 72q13 13 32 13t33 -13zM455 269q10 10 10 27q0 16 -10 26l-13 13l-30 -30q-13 -13 -33 -13q-19 0 -32 13t-13 32t13 33l30 30l-13 13q-11 11 -26 11q-16 0 -27 -11l-174 -174q-11 -11 -11 -26q0 -16 11 -27l13 -13l30 30q14 14 33 14q18 0 32 -14q13 -13 13 -32t-13 -33 +l-30 -30l13 -12q11 -11 26 -11q16 0 27 11z" /> + <glyph glyph-name="glyph157" unicode="&#xe09d;" horiz-adv-x="636" +d="M333 -71q-48 0 -69 62l-51 151l-151 50q-59 19 -62 67q-3 46 54 72l474 222q33 15 58.5 10t39.5 -26q20 -33 -2 -80l-221 -474q-25 -54 -70 -54zM109 265l170 -57l57 -171l199 427z" /> + <glyph glyph-name="glyph158" unicode="&#xe09e;" horiz-adv-x="552" +d="M262 4l-57 171l-171 57q-22 7 -30 18t-1.5 23t27.5 21l474 221q32 14 43.5 2.5t-2.5 -43.5l-222 -474q-9 -21 -20.5 -27.5t-22.5 1.5t-18 30z" /> + <glyph glyph-name="glyph159" unicode="&#xe09f;" horiz-adv-x="667" +d="M333 592q-103 0 -177 -72q-73 -71 -73 -173q0 -101 73 -172l177 -175l178 175q72 70 72 172q0 103 -72 173q-74 72 -178 72zM333 675q139 0 236 -96t97 -232t-97 -232l-236 -232l-235 232q-98 96 -98 232t98 232t235 96zM333 446q-42 0 -73 -31t-31 -73.5t31 -73.5 +q30 -30 73 -30q44 0 74 30q31 31 31 73.5t-31 73.5t-74 31zM333 488q60 0 103 -43t43 -103t-43 -103t-103 -43t-103 43t-43 103t43 103t103 43z" /> + <glyph glyph-name="glyph160" unicode="&#xe0a0;" horiz-adv-x="667" +d="M569 579q97 -96 97 -232t-97 -232l-236 -232l-235 232q-98 96 -98 232t98 232t236 96t235 -96zM333 238q44 0 74 30q31 31 31 73.5t-31 73.5t-74 31q-42 0 -73 -31t-31 -73.5t31 -73.5q30 -30 73 -30z" /> + <glyph glyph-name="glyph161" unicode="&#xe0a1;" horiz-adv-x="583" +d="M238 92q0 54 54 54t54 -54t-54 -54t-54 54zM292 633q68 0 117 -49t49 -117v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292q0 34 24 58.5t59 24.5h42v84q0 48 23.5 85.5t59.5 58.5q38 22 84 22zM292 550 +q-35 0 -59.5 -24.5t-24.5 -58.5v-125h167v125q0 35 -24.5 59t-58.5 24zM500 8v292h-417v-292h417z" /> + <glyph glyph-name="glyph162" unicode="&#xe0a2;" horiz-adv-x="583" +d="M500 383q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292q0 34 24 58.5t59 24.5h42v84q0 69 49 117.5t118 48.5t117.5 -48.5t48.5 -117.5v-84h42zM292 38q22 0 38 16t16 38t-16 38t-38 16t-38 -16t-16 -38t16 -38 +t38 -16zM375 342v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5t-24.5 -58.5v-125h167z" /> + <glyph glyph-name="glyph163" unicode="&#xe0a3;" horiz-adv-x="708" +d="M238 92q0 54 54 54t54 -54t-54 -54t-54 54zM0 300q0 34 24 58.5t59 24.5h125v-41h167v125q0 55 28.5 94.5t73.5 58.5q30 13 65 13q68 0 117 -49t49 -117v-125q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5 +t-24.5 -58.5v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292zM500 8v292h-417v-292h417z" /> + <glyph glyph-name="glyph164" unicode="&#xe0a4;" horiz-adv-x="708" +d="M542 633q69 0 117.5 -48.5t48.5 -117.5v-125q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v125q0 35 -24.5 59t-58.5 24q-35 0 -59.5 -24.5t-24.5 -58.5v-84h42q34 0 58.5 -24.5t24.5 -58.5v-292q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5v292 +q0 34 24 58.5t59 24.5h125v-41h167v125q0 69 49 117.5t118 48.5zM292 38q22 0 38 16t16 38t-16 38t-38 16t-38 -16t-16 -38t16 -38t38 -16z" /> + <glyph glyph-name="glyph165" unicode="&#xe0a5;" +d="M667 508q35 0 59 -24t24 -59v-375q0 -34 -24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5v375q0 35 24 59t59 24h584zM330 145l-65 57l-152 -152h524l-152 152l-65 -57q-19 -16 -45 -16t-45 16zM83 79l150 151l-150 131v-282zM517 230l150 -150v281zM667 425h-584v-9 +l274 -240q7 -6 18 -6t18 6l274 240v9z" /> + <glyph glyph-name="glyph166" unicode="&#xe0a6;" horiz-adv-x="667" +d="M42 -33q-18 0 -30 12.5t-12 28.5v417q0 17 12 29l188 188q11 11 27 12t28 -9l179 -143l162 161q20 20 45.5 8t25.5 -38v-416q0 -17 -13 -30l-187 -187q-11 -11 -27.5 -12t-28.5 9l-179 143l-161 -161q-12 -12 -29 -12zM83 109q122 120 125 122v302l-125 -125v-299z +M255 228l162 -129v311l-167 132v-311zM583 234v299q-122 -121 -125 -123v-301z" /> + <glyph glyph-name="glyph167" unicode="&#xe0a7;" horiz-adv-x="583" +d="M458 -75h-333q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h333q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 92q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h333q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5h-333zM292 514l-205 -211 +l-4 -3h417q-34 36 -104 107t-104 107zM292 633q161 -165 268 -275q23 -23 23 -58q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58z" /> + <glyph glyph-name="glyph168" unicode="&#xe0a8;" horiz-adv-x="583" +d="M500 133q34 0 58.5 -24.5t24.5 -58.5t-24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h417zM560 358q23 -23 23 -58q0 -34 -24.5 -58.5t-58.5 -24.5h-417q-35 0 -59 24.5t-24 58.5t24 58l268 275q161 -165 268 -275z" /> + <glyph glyph-name="glyph169" unicode="&#xe0a9;" +d="M458 438v-335l173 168zM450 533q29 0 52 -21l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22zM83 438v-335l173 168zM75 533q29 0 52 -21l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53 +t53 22z" /> + <glyph glyph-name="glyph170" unicode="&#xe0aa;" +d="M502 512l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22q29 0 52 -21zM127 512l248 -241q-149 -145 -248 -241q-22 -22 -52 -22q-31 0 -53 22t-22 53v375q0 31 22 53t53 22q29 0 52 -21z" /> + <glyph glyph-name="glyph171" unicode="&#xe0ab;" horiz-adv-x="542" +d="M125 -33q-52 0 -88.5 36.5t-36.5 88.5v375q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-375q0 -52 -36.5 -88.5t-88.5 -36.5zM125 508q-17 0 -29.5 -12t-12.5 -29v-375q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v375q0 17 -12.5 29t-29.5 12zM417 -33 +q-52 0 -88.5 36.5t-36.5 88.5v375q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-375q0 -52 -36.5 -88.5t-88.5 -36.5zM417 508q-17 0 -29.5 -12t-12.5 -29v-375q0 -17 12.5 -29.5t29.5 -12.5t29 12.5t12 29.5v375q0 17 -12 29t-29 12z" /> + <glyph glyph-name="glyph172" unicode="&#xe0ac;" horiz-adv-x="458" +d="M83 550q35 0 59.5 -24.5t24.5 -58.5v-334q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24t-24 59v334q0 35 24 59t59 24zM375 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24t-59 24t-24 59v334q0 35 24 59t59 24z" /> + <glyph glyph-name="glyph173" unicode="&#xe0ad;" horiz-adv-x="417" +d="M83 508v-416q35 35 106.5 104t107.5 104l-210 205zM83 592q35 0 59 -24l275 -268q-166 -161 -276 -268q-24 -24 -58 -24t-58.5 24.5t-24.5 59.5v416q0 35 24.5 59.5t58.5 24.5z" /> + <glyph glyph-name="glyph174" unicode="&#xe0ae;" horiz-adv-x="417" +d="M333 508l-212 -208l212 -208v416zM275 567q25 25 58 25q35 0 59.5 -25t24.5 -59v-416q0 -34 -24.5 -59t-59.5 -25q-33 0 -58 25l-275 267q167 163 275 267z" /> + <glyph glyph-name="glyph175" unicode="&#xe0af;" horiz-adv-x="417" +d="M333 8q-33 0 -58 25l-275 267q167 163 275 267q25 25 58 25q35 0 59.5 -25t24.5 -59v-416q0 -34 -24.5 -59t-59.5 -25z" /> + <glyph glyph-name="glyph176" unicode="&#xe0b0;" horiz-adv-x="417" +d="M142 32q-24 -24 -59 -24q-34 0 -58.5 24.5t-24.5 59.5v416q0 35 24.5 59.5t58.5 24.5q35 0 59 -24l275 -268q-165 -161 -275 -268z" /> + <glyph glyph-name="glyph177" unicode="&#xe0b1;" horiz-adv-x="500" +d="M250 467q-69 0 -118 -49t-49 -118t49 -118t118 -49t118 49t49 118t-49 118t-118 49zM250 550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z" /> + <glyph glyph-name="glyph178" unicode="&#xe0b2;" horiz-adv-x="500" +d="M250 550q104 0 177 -73t73 -177t-73 -177t-177 -73t-177 73t-73 177t73 177t177 73z" /> + <glyph glyph-name="glyph179" unicode="&#xe0b3;" +d="M292 438l-173 -167l173 -168v335zM300 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21zM667 438l-173 -167l173 -168v335zM675 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241 +q149 145 248 241q21 21 52 21z" /> + <glyph glyph-name="glyph180" unicode="&#xe0b4;" +d="M300 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21zM675 533q31 0 53 -22t22 -53v-375q0 -31 -22 -53t-53 -22q-28 0 -52 22l-248 241q149 145 248 241q21 21 52 21z" /> + <glyph glyph-name="glyph181" unicode="&#xe0b5;" horiz-adv-x="500" +d="M417 467h-334v-334h334v334zM417 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24h-334q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h334z" /> + <glyph glyph-name="glyph182" unicode="&#xe0b6;" horiz-adv-x="500" +d="M417 550q35 0 59 -24t24 -59v-334q0 -35 -24 -59t-59 -24h-334q-35 0 -59 24t-24 59v334q0 35 24 59t59 24h334z" /> + <glyph glyph-name="glyph183" unicode="&#xe0b7;" horiz-adv-x="792" +d="M667 550q52 0 88.5 -36.5t36.5 -88.5v-292q0 -52 -36.5 -88.5t-88.5 -36.5h-375l-125 -125v125h-42q-52 0 -88.5 36.5t-36.5 88.5v292q0 52 36.5 88.5t88.5 36.5h542zM708 133v292q0 17 -12 29.5t-29 12.5h-542q-17 0 -29.5 -12.5t-12.5 -29.5v-292q0 -17 12.5 -29 +t29.5 -12h542q17 0 29 12t12 29zM208 196q-34 0 -58.5 24t-24.5 59t24.5 59t58.5 24q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5zM208 321q-17 0 -29 -12.5t-12 -29.5t12 -29t29 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM396 196q-35 0 -59.5 24.5t-24.5 58.5 +t24.5 58.5t59.5 24.5q34 0 58.5 -24t24.5 -59t-24.5 -59t-58.5 -24zM396 321q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM583 196q-35 0 -59 24t-24 59t24 59t59 24t59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5zM583 321 +q-17 0 -29 -12.5t-12 -29.5t12 -29t29 -12t29.5 12t12.5 29t-12.5 29.5t-29.5 12.5z" /> + <glyph glyph-name="glyph184" unicode="&#xe0b8;" +d="M625 508h-500q-17 0 -29.5 -12t-12.5 -29v-292q0 -17 12.5 -29.5t29.5 -12.5h125v-7l7 7h368q17 0 29.5 12.5t12.5 29.5v292q0 17 -12.5 29t-29.5 12zM625 592q52 0 88.5 -36.5t36.5 -88.5v-292q0 -52 -36.5 -88.5t-88.5 -36.5h-333l-125 -125v125h-42q-52 0 -88.5 36.5 +t-36.5 88.5v292q0 52 36.5 88.5t88.5 36.5h500z" /> + <glyph glyph-name="glyph185" unicode="&#xe0b9;" horiz-adv-x="1000" +d="M875 508q52 0 88.5 -36.5t36.5 -88.5v-291q0 -52 -36.5 -88.5t-88.5 -36.5h-42v-125l-125 125h-333q-52 0 -88.5 36.5t-36.5 88.5l-125 -125v125q-52 0 -88.5 36.5t-36.5 88.5v291q0 52 36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5h125zM125 175h167v187 +q0 43 30.5 74t73.5 31h271v41q0 17 -12.5 29.5t-29.5 12.5h-500q-17 0 -29.5 -12.5t-12.5 -29.5v-291q0 -17 12.5 -29.5t29.5 -12.5zM917 92v291q0 17 -12.5 29.5t-29.5 12.5h-479q-26 0 -44.5 -18.5t-18.5 -44.5v-270q0 -17 12.5 -29.5t29.5 -12.5h500q17 0 29.5 12.5 +t12.5 29.5z" /> + <glyph glyph-name="glyph186" unicode="&#xe0ba;" horiz-adv-x="583" +d="M292 133q-69 0 -118 49t-49 118v250q0 69 49 118t118 49t117.5 -49t48.5 -118v-250q0 -69 -48.5 -118t-117.5 -49zM292 633q-35 0 -59.5 -24.5t-24.5 -58.5v-250q0 -34 24.5 -58.5t59.5 -24.5q34 0 58.5 24.5t24.5 58.5v250q0 34 -24.5 58.5t-58.5 24.5zM583 300 +q0 -109 -71.5 -191t-178.5 -97v-45h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h125v45q-107 15 -178.5 97t-71.5 191v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83q0 -86 61.5 -147t147.5 -61 +t147 61t61 147v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83z" /> + <glyph glyph-name="glyph187" unicode="&#xe0bb;" horiz-adv-x="583" +d="M292 133q-69 0 -118 49t-49 118v250q0 69 49 118t118 49t117.5 -49t48.5 -118v-250q0 -69 -48.5 -118t-117.5 -49zM583 300q0 -109 -71.5 -191t-178.5 -97v-45h125q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5 +t29.5 12.5h125v45q-107 15 -178.5 97t-71.5 191v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83q0 -86 61.5 -147t147.5 -61t147 61t61 147v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-83z" /> + <glyph glyph-name="glyph188" unicode="&#xe0bc;" +d="M625 133h-500q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h500q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5zM125 300q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h500q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5h-500z" /> + <glyph glyph-name="glyph189" unicode="&#xe0bd;" horiz-adv-x="667" +d="M583 342q35 0 59.5 -25t24.5 -59t-24.5 -58.5t-59.5 -24.5h-500q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h500z" /> + <glyph glyph-name="glyph190" unicode="&#xe0be;" horiz-adv-x="833" +d="M771 471q55 -25 62 -79q0 -66 -54 -96l-46 -25q17 -67 17 -113q0 -88 -94 -148t-231 -60q-172 0 -267 88q-3 -1 -8.5 -2t-23.5 -3.5t-34 0.5q-32 3 -62 36.5t-30 76.5q0 87 12 137l13 63q-8 17 -8 50q0 24 18 47t44 36q225 113 279 138q42 21 65.5 20.5t59.5 -20.5z +M429 38q102 0 172 36.5t70 87.5l-17 117l-179 -87q-49 -20 -92 0l-175 87l-20 -117q0 -53 70 -88.5t171 -35.5zM733 375q13 6 13 14.5t-13 14.5q-262 134 -279 142q-27 13 -54 0l-279 -142q-13 -6 -13 -14.5t13 -14.5l8 -4q-13 -33 -25 -92q-12 -62 -12 -129q0 -15 10 -24 +t23 -9h4q29 0 29 33q0 6 -4 46.5t-4 74.5q0 52 12 83l238 -121q29 -14 58 0z" /> + <glyph glyph-name="glyph191" unicode="&#xe0bf;" horiz-adv-x="917" +d="M833 633q35 0 59.5 -24.5t24.5 -58.5v-500q0 -34 -24.5 -58.5t-59.5 -24.5h-750q-35 0 -59 24.5t-24 58.5v500q0 34 24 58.5t59 24.5h750zM83 550v-500h334v500h-334zM833 50v500h-375v-500h375zM792 238v-126q0 -8 -6.5 -14t-14.5 -6h-42q-8 0 -14.5 6t-6.5 14v126 +q0 8 6.5 14t14.5 6h42q8 0 14.5 -6t6.5 -14zM667 488v-209q0 -8 -6.5 -14.5t-14.5 -6.5h-125q-8 0 -14.5 6.5t-6.5 14.5v209q0 8 6.5 14t14.5 6h125q8 0 14.5 -6t6.5 -14zM729 383q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h42q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5 +t-14.5 -6.5h-42zM729 300q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h42q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-42zM521 175q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h125q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-125zM646 133q8 0 14.5 -6.5 +t6.5 -14.5t-6.5 -14t-14.5 -6h-125q-8 0 -14.5 6t-6.5 14t6.5 14.5t14.5 6.5h125zM729 467q-8 0 -14.5 6.5t-6.5 14.5t6.5 14t14.5 6h42q8 0 14.5 -6t6.5 -14t-6.5 -14.5t-14.5 -6.5h-42zM375 488v-126q0 -8 -6.5 -14t-14.5 -6h-208q-8 0 -14.5 6t-6.5 14v126q0 8 6.5 14 +t14.5 6h208q8 0 14.5 -6t6.5 -14zM354 217q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208zM354 300q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208zM354 133 +q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14t-14.5 -6h-208q-8 0 -14.5 6t-6.5 14t6.5 14.5t14.5 6.5h208z" /> + <glyph glyph-name="glyph192" unicode="&#xe0c0;" horiz-adv-x="667" +d="M583 639q34 0 59 -24.5t25 -58.5v-423q0 -69 -55.5 -117.5t-132.5 -48.5q-74 0 -127 45q-24 -40 -68 -63.5t-96 -23.5q-77 0 -132.5 49t-55.5 118q0 53 35 96.5t90 60.5v254q0 32 21 55.5t52 27.5l375 52zM333 133q0 47 35.5 82t89.5 42v72l-125 -18v-178zM583 133v423 +l-375 -53v-330q-14 2 -20 2q-44 0 -74.5 -24.5t-30.5 -58.5q0 -35 31 -59.5t74 -24.5t73.5 24.5t30.5 59.5v255l208 31v-163q-14 2 -21 2q-43 0 -73.5 -24.5t-30.5 -59.5t30.5 -59t73.5 -24t73.5 24t30.5 59z" /> + <glyph glyph-name="glyph193" unicode="&#xe0c1;" horiz-adv-x="625" +d="M602 636q9 1 16 -5.5t7 -15.5v-503q0 -43 -36.5 -73.5t-88.5 -30.5t-88.5 30.5t-36.5 73.5t36.5 74t88.5 31v155l-250 -26v-317q0 -43 -36.5 -73.5t-88.5 -30.5t-88.5 30.5t-36.5 73.5t36.5 73.5t88.5 30.5v430q0 8 5.5 14t12.5 7z" /> + <glyph glyph-name="glyph194" unicode="&#xe0c2;" horiz-adv-x="793" +d="M604 689q77 0 133 -56t56 -133q0 -22 -7 -50q20 -62 -25 -107l-187 -188q-30 -30 -74 -30h-3l-90 -90q-25 -25 -63 -40q-10 -4 -289 -97q-8 -2 -13 -2q-21 0 -34 17t-6 37q93 279 97 289q15 38 41 64q331 330 332 331q57 55 132 55zM299 67l-127 127q-2 -6 -12 -35 +t-17 -50l71 -71q35 11 85 29zM128 65l-21 -62l63 21zM449 195q-12 18 -10.5 40t17.5 38l154 154l-114 114l-297 -298l-8 -9l147 -147l10 7zM702 402q14 14 -0.5 28.5t-28.5 0.5l-188 -187q-10 -10 -4 -23t19 -13q9 0 15 6zM639 456q31 31 68 19q3 12 3 25q0 43 -31 74 +q-33 31 -77.5 29.5t-76.5 -33.5z" /> + <glyph glyph-name="glyph195" unicode="&#xe0c3;" horiz-adv-x="768" +d="M750 513q18 -18 18 -44t-18 -44l-456 -456q-17 -17 -47.5 -30.5t-58.5 -13.5h-188v187q0 28 13.5 59t30.5 48l456 456q18 18 44 18t44 -18zM115 172l52 -51l345 346l-51 51zM188 8q11 0 26 7q-8 8 -21 20.5t-40 40t-45 44.5l-18 18q-7 -17 -7 -26v-62l42 -42h63zM247 40 +l346 346l-51 51l-346 -345zM622 415l54 54l-132 132l-54 -53z" /> + <glyph glyph-name="glyph196" unicode="&#xe0c4;" horiz-adv-x="836" +d="M771 647q25 -25 42 -59.5t21.5 -87t-9.5 -109.5t-59.5 -131t-119.5 -148q-189 -189 -363 -189q-107 0 -172 65l-74 74q-37 37 -37 88.5t37 88.5l66 66q37 37 88 37t88 -37l58 -57l174 173l-58 58q-37 37 -37 88.5t37 88.5l66 66q36 36 89 36q52 0 88 -36zM512 597 +q-12 -12 -12 -29.5t12 -29.5l45 -45l125 125l-45 45q-12 12 -29 12q-18 0 -30 -12zM95 121l46 -45l125 125l-46 45q-12 12 -29 12t-29 -12l-67 -66q-12 -12 -12 -29.5t12 -29.5zM587 171q65 65 104 127t51 106.5t9 84t-13.5 62t-25.5 37.5l-125 -125l12 -12q12 -12 12 -29.5 +t-12 -29.5l-233 -233q-12 -12 -29 -12q-18 0 -30 12l-12 13l-125 -126q40 -40 113 -40q139 0 304 165z" /> + <glyph glyph-name="glyph197" unicode="&#xe0c5;" horiz-adv-x="710" +d="M453 505l-18 18q-18 18 -18 44t18 44l66 67q18 18 44 18t44 -18l19 -19zM173 261l18 -18l-154 -155l-19 18q-18 18 -18 45q0 26 18 44l66 66q18 18 44.5 18t44.5 -18zM664 603q8 -8 18 -22t21 -56.5t5 -90.5t-48 -123t-121 -154q-171 -171 -319 -171q-81 0 -127 46 +l-15 14l155 155l27 -27q14 -14 29 0l233 233q6 6 6 14q0 9 -6 15l-27 27l154 155z" /> + <glyph glyph-name="glyph198" unicode="&#xe0c6;" +d="M625 540q51 0 88 -37t37 -88q0 -52 -37 -89q-38 -39 -88 -61v-173q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5v198q-51 0 -88 37t-37 88t37 88q89 89 213 89t213 -89q15 -15 37 -15t37 15q37 37 88 37z +M654 385q12 12 12 29.5t-12 29.5q-13 13 -29 13t-29 -13q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q24 24 54 33v-326q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v326q30 -9 54 -33q46 -46 112 -59v-234 +q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v234q66 13 112 59z" /> + <glyph glyph-name="glyph199" unicode="&#xe0c7;" horiz-adv-x="583" +d="M571 444q12 -12 12 -29.5t-12 -29.5q-46 -46 -113 -59v-234q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v234q-67 13 -113 59q-24 24 -54 33v-326q0 -17 -12 -29.5t-29 -12.5t-29.5 12.5t-12.5 29.5v326q-30 -9 -54 -33q-12 -12 -29.5 -12t-29.5 12t-12 29.5 +t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12z" /> + <glyph glyph-name="glyph200" unicode="&#xe0c8;" horiz-adv-x="709" +d="M685 484q24 -24 24 -58.5t-24 -59.5q-13 -13 -29 -19q-85 -41 -115 -100q-41 -82 -41 -197q0 -36 -23.5 -59.5t-59.5 -23.5q-38 0 -60 24l-134 135l-223 -159l159 223l-135 134q-16 15 -21.5 39.5t3.5 51.5q22 52 77 52q117 0 197 40l9 5q55 30 94 113q6 16 17 27 +q24 24 59.5 23.5t58.5 -24.5zM466 284q43 86 157 140l-164 169q-55 -117 -141 -160l-10 -5q-96 -45 -225 -45l333 -333q0 134 50 234z" /> + <glyph glyph-name="glyph201" unicode="&#xe0c9;" horiz-adv-x="668" +d="M458 50q0 -18 -11.5 -30t-29.5 -12q-17 0 -30 13l-135 135l-252 -189l189 252l-135 135q-19 19 -9 45q11 26 38 26q126 0 216 45q72 36 121 137q7 19 29 25.5t40 -10.5l166 -167q17 -18 11 -40t-25 -29q-102 -50 -138 -121q-45 -88 -45 -215z" /> + <glyph glyph-name="glyph202" unicode="&#xe0ca;" horiz-adv-x="766" +d="M718 627q47 -47 47.5 -122.5t-50.5 -116.5q-42 -33 -152 -74l67 -67q12 -12 12 -29.5t-12 -29.5t-29 -12q-18 0 -30 12l-12 12l-218 -218q-25 -25 -63 -40q-1 -1 -23.5 -8.5t-62 -16t-72.5 -8.5q-62 0 -91 29q-19 19 -25.5 51.5t-3 64.5t11.5 63.5t13.5 48.5t7.5 20 +q15 38 41 64l218 218l-13 12q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12l68 -68q42 112 73 152q41 52 118 52q73 0 121 -48zM88 -3q19 -16 108 6l-101 101q-22 -89 -7 -107zM241 17q27 10 41 24l218 218l-149 149l-218 -218q-14 -14 -24 -40z" /> + <glyph glyph-name="glyph203" unicode="&#xe0cb;" horiz-adv-x="833" +d="M770 284q41 -23 57 -68.5t-3 -89.5q-19 -43 -61.5 -63.5t-88.5 -7.5l-112 32v-35l37 -29q37 -30 45 -77.5t-18 -87.5q-26 -41 -72 -54t-89 9l-48 8q-12 0 -24.5 -2t-18.5 -4l-6 -2q-43 -22 -89 -9t-72 54q-26 40 -18 87.5t45 77.5l37 29v35l-112 -32q-46 -13 -88 7.5 +t-61 63.5t-3.5 89t56.5 69l208 118v200q0 60 43 103t103 43t102.5 -43t42.5 -103v-200zM747 159q6 14 1 29t-19 23l-250 143v248q0 26 -18.5 44.5t-43.5 18.5t-44 -18.5t-19 -44.5v-248l-250 -143q-13 -7 -18 -22.5t1 -29.5t20 -21t29 -3l218 62v-185l-68 -54 +q-13 -10 -15 -26.5t6 -29.5t24 -17t30 3q35 16 86 16q23 0 44 -4t31 -8l10 -4q14 -8 30 -3.5t24 17.5t6 29.5t-15 26.5l-68 54v185l218 -62q15 -4 29.5 3t20.5 21zM396 612q0 21 21 21q20 0 20 -21q0 -20 -20 -20q-21 0 -21 20z" /> + <glyph glyph-name="glyph204" unicode="&#xe0cc;" horiz-adv-x="667" +d="M646 237q28 -16 19 -47t-40 -31l-11 2l-218 62v-185l68 -54q23 -20 12.5 -47.5t-38.5 -27.5q-8 0 -16 3l-89 36l-88 -36q-14 -6 -29 -1t-23 19q-8 13 -5 28.5t15 25.5l68 54v185l-218 -62q-15 -4 -29.5 3t-20.5 21t-1 29t19 23l250 143v248q0 26 18.5 44.5t43.5 18.5 +t44 -18.5t19 -44.5v-248zM333 618q9 0 15 6t6 15q0 20 -21 20q-20 0 -20 -20q0 -21 20 -21z" /> + <glyph glyph-name="glyph205" unicode="&#xe0cd;" horiz-adv-x="583" +d="M542 550q19 0 30 -11.5t11 -30.5v-175q-9 -78 -53 -139.5t-113 -93.5v-133q0 -35 -24.5 -59.5t-59.5 -24.5h-83q-34 0 -58.5 24.5t-24.5 59.5v133q-70 32 -115.5 94t-51.5 139v175q0 19 11.5 30.5t30.5 11.5h41v125q0 19 11.5 30.5t30.5 11.5h83q19 0 30.5 -11.5 +t11.5 -30.5v-125h83v125q0 19 11.5 30.5t30.5 11.5h83q19 0 30.5 -11.5t11.5 -30.5v-125h42zM375 675v-125h83v125h-83zM125 675v-125h83v125h-83zM333 -33v83h-83v-83h83zM292 154q68 0 123 41t77 105h-396q19 -63 73.5 -104.5t122.5 -41.5zM500 362v105h-417v-105 +q0 -10 5 -20h408q4 8 4 20z" /> + <glyph glyph-name="glyph206" unicode="&#xe0ce;" +d="M375 -75q-52 0 -88.5 36.5t-36.5 88.5l2 127l-126 -2q-52 0 -89 36.5t-37 88.5t36.5 88.5t88.5 36.5l127 2l-2 122q0 52 36.5 89t88.5 37t88.5 -36.5t36.5 -88.5l2 -123l124 -2q51 0 87.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5l-123 2l-2 -128q0 -51 -36.5 -87.5 +t-88.5 -36.5zM333 258v-209q0 -17 12.5 -29t29.5 -12t29.5 12.5t12.5 29.5v208h209q17 0 29 12.5t12 29.5t-12.5 29.5t-29.5 12.5h-208v208q0 18 -12.5 30t-29.5 12t-29.5 -12.5t-12.5 -29.5v-208h-208q-18 0 -30 -12.5t-12 -29.5t12.5 -29.5t29.5 -12.5h208z" /> + <glyph glyph-name="glyph207" unicode="&#xe0cf;" horiz-adv-x="667" +d="M583 383q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5l-166 3v-170q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5l3 170l-170 -3q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h170l-3 167q0 34 24 58.5t59 24.5t59.5 -24.5t24.5 -58.5v-167h166z" /> + <glyph glyph-name="glyph208" unicode="&#xe0d0;" horiz-adv-x="833" +d="M604 633q-60 0 -103 -42.5t-43 -102.5v-63h-83v63q0 60 -43 102.5t-103 42.5t-103 -42.5t-43 -102.5t43 -103t103 -43h63v-84h-63q-60 0 -103 -43t-43 -103t43 -102.5t103 -42.5t103 42.5t43 102.5v63h83v-63q0 -60 43 -102.5t103 -42.5t103 42.5t43 102.5t-43 103 +t-103 43h-62v84h62q60 0 103 43t43 103t-43 102.5t-103 42.5zM542 425v63q0 26 18 44t44 18t44.5 -18.5t18.5 -43.5q0 -26 -18.5 -44.5t-44.5 -18.5h-62zM229 425q-25 0 -43.5 18.5t-18.5 44.5t18.5 44t43.5 18q26 0 44.5 -18.5t18.5 -43.5v-63h-63zM604 50q-26 0 -44 18 +t-18 44v63h62q26 0 44.5 -18.5t18.5 -44.5q0 -25 -18.5 -43.5t-44.5 -18.5zM229 50q-25 0 -43.5 18t-18.5 44t18.5 44.5t43.5 18.5h63v-63q0 -25 -18.5 -43.5t-44.5 -18.5zM604 717q94 0 161.5 -67.5t67.5 -161.5q0 -57 -26 -106.5t-71 -81.5q45 -32 71 -81.5t26 -106.5 +q0 -94 -67.5 -161.5t-161.5 -67.5q-57 0 -106 26.5t-81 71.5q-32 -45 -81.5 -71.5t-106.5 -26.5q-95 0 -162 67.5t-67 161.5q0 57 26.5 106.5t71.5 81.5q-45 32 -71.5 81.5t-26.5 106.5q0 94 67 161.5t162 67.5q57 0 106.5 -26.5t81.5 -71.5q32 45 81 71.5t106 26.5z +M458 342v-84h-83v84h83z" /> + <glyph glyph-name="glyph209" unicode="&#xe0d1;" horiz-adv-x="667" +d="M521 342h-63v-84h63q60 0 103 -43t43 -103t-43 -102.5t-103 -42.5t-103 42.5t-43 102.5v63h-83v-63q0 -60 -43 -102.5t-103 -42.5t-103 42.5t-43 102.5t43 103t103 43h62v84h-62q-60 0 -103 43t-43 103t43 102.5t103 42.5t103 -42.5t43 -102.5v-63h83v63q0 60 43 102.5 +t103 42.5t103 -42.5t43 -102.5t-43 -103t-103 -43zM458 488v-63h63q25 0 43.5 18.5t18.5 44.5t-18.5 44t-43.5 18q-26 0 -44.5 -18.5t-18.5 -43.5zM208 112v63h-62q-26 0 -44.5 -18.5t-18.5 -44.5q0 -25 18.5 -43.5t44.5 -18.5t44 18t18 44zM208 425v63q0 26 -18 44t-44 18 +t-44.5 -18.5t-18.5 -43.5q0 -26 18.5 -44.5t44.5 -18.5h62zM375 258v84h-83v-84h83zM521 175h-63v-63q0 -25 18.5 -43.5t44.5 -18.5q25 0 43.5 18t18.5 44t-18.5 44.5t-43.5 18.5z" /> + <glyph glyph-name="glyph210" unicode="&#xe0d2;" horiz-adv-x="708" +d="M605 547q103 -103 103 -250q0 -148 -103 -251t-251 -103q-147 0 -250 103q-104 104 -104 251q0 146 104 250q53 53 125 31v14q0 52 36.5 88.5t88.5 36.5t88.5 -36.5t36.5 -88.5v-14q32 10 66.5 2t59.5 -33zM312 592v-209q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v209 +q0 17 -12.5 29t-29.5 12t-29.5 -12t-12.5 -29zM271 433q-7 -19 -20 -33q-43 -43 -43 -103t43 -103q41 -41 103 -41t103 41q43 43 43 103t-43 103q-12 12 -19 33v-50q0 -34 -24.5 -58.5t-59.5 -24.5q-34 0 -58.5 24t-24.5 59v50zM354 109q-76 0 -131.5 55.5t-55.5 132.5 +q0 78 55 133q12 12 12 29t-12 29t-29.5 12t-29.5 -12q-80 -80 -80 -191q0 -112 80 -192q79 -79 191 -79q113 0 192 79t79 192q0 112 -79 191q-12 12 -29.5 12t-29.5 -12t-12 -29t12 -29q55 -55 55 -133q0 -77 -56 -132.5t-132 -55.5z" /> + <glyph glyph-name="glyph211" unicode="&#xe0d3;" horiz-adv-x="542" +d="M271 109q76 0 131.5 55.5t55.5 132.5q0 78 -55 133q-12 12 -12 29t12 29t29.5 12t29.5 -12q80 -80 80 -191q0 -112 -80 -192q-79 -79 -191 -79q-113 0 -192 79t-79 192q0 112 79 191q12 12 29.5 12t29.5 -12t12 -29t-12 -29q-55 -55 -55 -133q0 -77 55.5 -132.5 +t132.5 -55.5zM271 342q-17 0 -29.5 12t-12.5 29v209q0 17 12.5 29t29.5 12t29 -12t12 -29v-209q0 -17 -12 -29t-29 -12z" /> + <glyph glyph-name="glyph212" unicode="&#xe0d4;" horiz-adv-x="708" +d="M583 592q52 0 88.5 -36.5t36.5 -88.5v-417q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v417q0 52 36.5 88.5t88.5 36.5v83q0 17 12.5 29.5t29.5 12.5h375q17 0 29 -12.5t12 -29.5v-83zM208 633v-208h292v208h-292zM125 508q-17 0 -29.5 -12 +t-12.5 -29v-105q0 -25 18.5 -43.5t44.5 -18.5h416q26 0 44.5 18.5t18.5 43.5v105q0 17 -12.5 29t-29.5 12v-125q0 -17 -12 -29t-29 -12h-375q-17 0 -29.5 12t-12.5 29v125zM583 8q17 0 29.5 12.5t12.5 29.5v230q-29 -22 -63 -22h-416q-34 0 -63 22v-230q0 -17 12.5 -29.5 +t29.5 -12.5h458zM438 508q20 0 20 -20q0 -21 -20 -21h-167q-9 0 -15 6t-6 15q0 20 21 20h167zM500 133q9 0 15 -6t6 -15q0 -20 -21 -20h-292q-20 0 -20 20q0 21 20 21h292zM438 592q20 0 20 -21t-20 -21h-167q-9 0 -15 6t-6 15t6 15t15 6h167z" /> + <glyph glyph-name="glyph213" unicode="&#xe0d5;" horiz-adv-x="708" +d="M0 144q0 65 54 94q-54 28 -54 93v73q0 60 43 103t103 43h31q5 62 55.5 104t121.5 42t121.5 -42t55.5 -104h31q60 0 103 -43t43 -103v-73q0 -65 -54 -94q54 -28 54 -93v-115q0 -60 -43 -103t-103 -43h-114q-65 0 -94 54q-28 -54 -94 -54h-114q-60 0 -103 43t-43 103v115z +M625 29v115q0 20 -15 20q-10 0 -24 -10t-34 -10q-30 0 -51.5 27.5t-21.5 66.5t21.5 66t51.5 27q22 0 41 -16q7 -5 16 -5q16 0 16 21v73q0 26 -18.5 44.5t-44.5 18.5h-114q-13 0 -18.5 7.5t2.5 24.5q16 19 16 41q0 30 -27.5 51t-66.5 21t-66.5 -21t-27.5 -51q0 -17 11 -35 +q14 -21 9 -29.5t-20 -8.5h-114q-26 0 -44.5 -18.5t-18.5 -44.5v-73q0 -21 16 -21q7 0 23 11q14 10 34 10q30 0 51.5 -27t21.5 -66t-21.5 -66.5t-51.5 -27.5q-22 0 -41 16q-8 5 -16 5q-16 0 -16 -21v-115q0 -25 18.5 -43.5t44.5 -18.5h114q15 0 19.5 8.5t-8.5 29.5 +q-11 16 -11 35q0 30 27.5 51t66.5 21t66.5 -21t27.5 -51q0 -22 -16 -41q-8 -17 -2.5 -24.5t18.5 -7.5h114q26 0 44.5 18.5t18.5 43.5zM83 271v-66q5 2 16 2q23 0 44 -16q6 -6 13 -6q12 0 21.5 15.5t9.5 37.5t-9.5 37t-21.5 15q-6 0 -14 -6q-23 -15 -44 -15q-5 0 -15 2z +M610 206q5 0 15 -2v66q-5 -2 -16 -2q-22 0 -43 16q-6 6 -14 6q-12 0 -21.5 -15t-9.5 -37t9.5 -37.5t21.5 -15.5q6 0 14 6q22 15 44 15zM320 -33h67q-8 31 13 59q6 6 6 14q0 12 -15 21.5t-37 9.5t-37 -9.5t-15 -21.5q0 -7 6 -15q20 -29 12 -58z" /> + <glyph glyph-name="glyph214" unicode="&#xe0d6;" horiz-adv-x="542" +d="M469 331q-30 0 -51.5 -27t-21.5 -66t21.5 -66.5t51.5 -27.5q17 0 34 10q21 14 30 9.5t9 -19.5v-115q0 -25 -18.5 -43.5t-44.5 -18.5h-114q-13 0 -19 7.5t2 24.5q17 20 17 41q0 30 -27.5 51t-66.5 21t-66.5 -21t-27.5 -51q0 -18 10 -35q14 -21 9.5 -29.5t-19.5 -8.5h-115 +q-26 0 -44 18.5t-18 43.5v115q0 13 7.5 18.5t24.5 -2.5q19 -16 41 -16q30 0 51.5 27.5t21.5 66.5t-21.5 66t-51.5 27q-17 0 -34 -10q-21 -14 -30 -9.5t-9 19.5v73q0 26 18.5 44.5t43.5 18.5h115q15 0 19.5 8.5t-8.5 29.5q-11 16 -11 35q0 30 27.5 51t66.5 21t66.5 -21 +t27.5 -51q0 -21 -17 -41q-8 -17 -2 -24.5t19 -7.5h114q25 0 44 -18.5t19 -44.5v-73q0 -13 -7.5 -18.5t-24.5 2.5q-19 16 -41 16z" /> + <glyph glyph-name="glyph215" unicode="&#xe0d7;" horiz-adv-x="708" +d="M354 612q146 0 250 -104t104 -250t-104 -250t-250 -104t-250 104t-104 250t104 250t250 104zM354 -12q112 0 191.5 79t79.5 191t-79.5 191.5t-191.5 79.5t-191.5 -79.5t-79.5 -191.5t79.5 -191t191.5 -79zM500 300q-42 -9 -42 -42q0 -32 42 -41h37q-12 -53 -50.5 -91 +t-90.5 -50v36q-9 42 -42 42t-42 -42v-36q-52 12 -90 50t-50 91h36q42 9 42 41q0 33 -42 42h-36q12 53 50 91t90 50v-37q9 -42 42 -42q17 0 29.5 12.5t12.5 29.5v37q52 -12 90.5 -50.5t50.5 -90.5h-37zM475 179q-26 8 -42 30t-16 49t16 49t42 30q-17 25 -42 42 +q-8 -26 -30 -42t-49 -16t-49 16t-30 42q-25 -17 -42 -42q26 -8 42.5 -30t16.5 -49t-16.5 -49t-42.5 -30q15 -24 42 -41q8 26 30 42t49 16t49 -16t30 -42q27 17 42 41z" /> + <glyph glyph-name="glyph216" unicode="&#xe0d8;" horiz-adv-x="583" +d="M292 -33q-121 0 -206.5 85t-85.5 206t85.5 206.5t206.5 85.5t206 -85.5t85 -206.5t-85 -206t-206 -85zM250 462q-62 -13 -105.5 -56.5t-56.5 -105.5h79q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12h-79q13 -62 57 -106t105 -57v79q0 17 12.5 29.5t29.5 12.5t29 -12.5 +t12 -29.5v-79q61 13 105.5 57t57.5 106h-79q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h79q-13 61 -57 105t-106 57v-79q0 -17 -12 -29t-29 -12t-29.5 12t-12.5 29v79z" /> + <glyph glyph-name="glyph217" unicode="&#xe0d9;" horiz-adv-x="667" +d="M557 592q43 0 76 -33t34 -95v-206q0 -144 -98 -238.5t-236 -94.5t-235.5 97.5t-97.5 235.5t97.5 236t235.5 98q74 0 143 -32q39 32 81 32zM180 251q0 59 43 102t102 43q46 0 80 -22l-61 -59q-25 -25 -17 -41t43 -16h213v206q0 44 -26 44q-16 0 -35 -19l-48 -48 +q-65 51 -149 51q-100 0 -171 -71q-70 -70 -70 -171t70 -171q71 -71 171 -71t171 71q20 20 33 40q15 23 1.5 49t-42.5 26q-26 0 -40 -22q-19 -29 -52.5 -48t-70.5 -19q-59 0 -102 43.5t-43 102.5zM222 251q0 -43 30 -73t73 -30q42 0 73 31q8 8 14.5 17.5t9.5 15.5l2 5h-54 +q-65 0 -82 39q-16 38 27 81l10 5q-48 0 -73 -25q-30 -29 -30 -66z" /> + <glyph glyph-name="glyph218" unicode="&#xe0da;" horiz-adv-x="500" +d="M97 250q0 -59 43 -102t102 -43q37 0 70 18.5t52 48.5q10 16 30.5 20.5t36.5 -6.5q17 -11 21 -30t-6 -36q-14 -22 -33 -41q-71 -71 -171 -71t-171 71t-71 171t71 171t171 71q84 0 149 -51l48 48q25 25 43 17.5t18 -42.5v-214h-214q-35 0 -42.5 18t17.5 43l61 61 +q-35 23 -80 23q-59 0 -102 -43t-43 -102z" /> + <glyph glyph-name="glyph219" unicode="&#xe0db;" horiz-adv-x="667" +d="M125 592q110 0 210.5 -43t173 -115.5t115.5 -173t43 -210.5q0 -52 -36.5 -88.5t-88.5 -36.5h-375q-69 0 -118 49t-49 118v375q0 52 36.5 88.5t88.5 36.5zM167 8q34 0 58.5 24.5t24.5 59.5q0 34 -24 58.5t-59 24.5t-59 -24.5t-24 -58.5q0 -35 24.5 -59.5t58.5 -24.5z +M355 8q26 0 44 18.5t18 44.5q0 112 -79.5 191.5t-191.5 79.5q-26 0 -44 -18.5t-18 -44.5t18 -44t44 -18q60 0 103 -43t43 -103q0 -26 18.5 -44.5t44.5 -18.5zM521 8q26 0 44.5 18.5t18.5 44.5q0 118 -59 219t-159.5 159.5t-219.5 58.5q-26 0 -44 -18t-18 -44t18 -44.5 +t44 -18.5q129 0 221 -91.5t92 -220.5q0 -26 18 -44.5t44 -18.5z" /> + <glyph glyph-name="glyph220" unicode="&#xe0dc;" horiz-adv-x="667" +d="M83 133q35 0 59.5 -24.5t24.5 -58.5t-24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5t24 58.5t59 24.5zM83 633q158 0 292.5 -78t213 -212.5t78.5 -292.5q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5q0 172 -122 294.5t-295 122.5q-35 0 -59 24.5t-24 58.5t24 58.5 +t59 24.5zM83 383q138 0 236 -97.5t98 -235.5q0 -34 -24.5 -58.5t-59.5 -24.5t-59 24.5t-24 58.5q0 69 -49 118t-118 49q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5z" /> + <glyph glyph-name="glyph221" unicode="&#xe0dd;" horiz-adv-x="869" +d="M694 580q-29 0 -48 -11q-20 -10 -30 -16l-8 1q-59 0 -92 -50q-12 -18 -51 -85.5t-63 -95.5q-24 28 -64 96t-51 85q-33 50 -92 50q-46 0 -79 -33t-33 -79t33 -78.5t79 -32.5q58 0 91 48l69 -109q-32 -36 -65.5 -81t-51.5 -73l-17 -27q-18 -32 -11 -69t25 -66l18 -30 +l148 272l148 -272q3 4 8 11.5t15.5 29t16.5 41t5.5 43t-12.5 40.5q-63 101 -134 181l69 109q33 -48 91 -48q46 0 78.5 32.5t32.5 78.5q0 44 -30 76q11 13 22 18q2 0 6 2.5t6 2.5l13 2h6q15 0 44 -12q-14 19 -18 22q-20 20 -63 27h-11zM608 398q-23 0 -36 19t-5 41l10 16 +q13 13 31 13q19 0 32 -13t13 -31.5t-13 -31.5t-32 -13zM194 398q-18 0 -31 13t-13 31.5t13 31.5t31 13q19 0 32 -13l10 -16q8 -22 -5.5 -41t-36.5 -19zM401 241q-7 0 -11.5 5t-4.5 12q0 16 16 16q7 0 12 -4.5t5 -11.5t-5 -12t-12 -5zM694 664l19 -1q88 -10 138 -80 +q18 -23 18.5 -50.5t-16.5 -50.5q-20 -26 -50 -32v-7q0 -80 -57.5 -137.5t-137.5 -57.5q-14 0 -38 4q50 -66 82 -117q25 -36 27.5 -79t-12.5 -82t-26.5 -60.5t-23.5 -38.5q-25 -34 -68 -34q-50 2 -73 43l-75 138l-74 -138q-23 -41 -74 -43q-42 0 -67 34q-12 17 -23.5 38.5 +t-26.5 60.5t-12.5 82t27.5 79q38 59 81 117q-24 -4 -38 -4q-80 0 -137 57.5t-57 137.5t57 137t137 57q47 0 89 -21.5t70 -60.5q12 -17 48 -79q32 55 49 79q53 75 144 81l12 7q39 21 88 21z" /> + <glyph glyph-name="glyph222" unicode="&#xe0de;" horiz-adv-x="703" +d="M698 570q10 -12 0 -25t-24 -7q-37 17 -61 4q23 -34 23 -74q0 -55 -38.5 -93.5t-93.5 -38.5q-49 0 -87 33l-27 -49q45 -51 61 -72.5t52 -79.5l14 -22q48 -66 -33 -185l-1 -2q-7 -9 -18.5 -8.5t-16.5 10.5l-130 238l-130 -238q-6 -11 -18 -11q-10 0 -17 9q-3 4 -10 15 +t-18 33.5t-17.5 45t-4.5 49t17 46.5q75 112 126 171l-27 50q-38 -33 -87 -33q-55 0 -93.5 38.5t-38.5 93.5t38.5 93.5t93.5 38.5q66 0 110 -59q16 -24 38 -69t38 -68q16 23 38 68t38 69l2 2q40 57 108 57h3l8 5q45 28 99 19.5t84 -54.5zM131 425q17 0 29 12.5t12 29.5 +t-12 29t-29 12t-29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5zM318 284q9 0 15 6t6 14q0 9 -6 15t-15 6t-15 -6t-6 -15q0 -8 6 -14t15 -6zM506 425q17 0 29 12.5t12 29.5t-12 29t-29 12t-29.5 -12t-12.5 -29t12.5 -29.5t29.5 -12.5z" /> + <glyph glyph-name="glyph223" unicode="&#xe0df;" horiz-adv-x="667" +d="M542 633q52 0 88.5 -36.5t36.5 -88.5v-458q0 -52 -36.5 -88.5t-88.5 -36.5h-417q-52 0 -88.5 36.5t-36.5 88.5v458q0 52 36.5 88.5t88.5 36.5h417zM583 50v303q-19 -11 -41 -11h-63q0 -60 -43 -103t-103 -43t-102.5 43t-42.5 103h-63q-23 0 -42 11v-303q0 -17 12.5 -29.5 +t29.5 -12.5h417q17 0 29 12.5t12 29.5zM229 342q0 -43 30.5 -73.5t73.5 -30.5t74 30.5t31 73.5h-209zM583 425v83q0 17 -12 29.5t-29 12.5h-417q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5h417q17 0 29 12.5t12 29.5z" /> + <glyph glyph-name="glyph224" unicode="&#xe0e0;" horiz-adv-x="802" +d="M760 592q18 0 31.5 -15t10.5 -33l-42 -292q-2 -15 -13.5 -25t-27.5 -10h-472l7 -42h423q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-458q-20 0 -37 23q0 2 -1.5 5.5t-2.5 5.5l-78 466h-58q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h93q15 0 27 -10t14 -25 +l9 -48h575zM712 508h-160v-83h148zM510 508h-125v-83h125v83zM510 383h-125v-83h125v83zM344 508h-146l15 -84l6 1h125v83zM219 383l14 -83h111v83h-125zM552 300h131l11 83h-142v-83zM219 -12q0 62 62 62q63 0 63 -62q0 -63 -63 -63q-62 0 -62 63zM594 -12q0 62 62 62 +q63 0 63 -62q0 -63 -63 -63q-62 0 -62 63z" /> + <glyph glyph-name="glyph225" unicode="&#xe0e1;" +d="M368 488q77 0 130 -55t53 -133v-10q0 -31 -19 -52t-49 -21q-28 0 -50 25q-23 -25 -60 -25q-35 0 -59 24.5t-24 58.5q0 35 24 59t58 24q22 0 42 -12q5 12 17 12q16 0 16 -21v-72q0 -13 9 -22.5t22 -9.5t22 9.5t9 22.5v10q0 60 -40.5 103t-100.5 43q-59 0 -99.5 -42.5 +t-40.5 -103.5q0 -60 43 -103t103 -43q44 0 82 25q10 7 20 1t11 -16.5t-9 -18.5q-49 -33 -106 -33q-77 0 -132.5 55.5t-55.5 132.5q0 78 53.5 133t130.5 55zM374 258q17 0 29 12.5t12 29.5t-12 29.5t-29 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5zM375 -75 +q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph226" unicode="&#xe0e2;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM375 529q95 0 162 -67.5t67 -161.5t-67 -161.5 +t-162 -67.5t-162 67.5t-67 161.5t67 161.5t162 67.5zM562 304q-2 72 -51 125q-37 -50 -96 -86q15 -32 18 -41q64 14 129 2zM479 456q-48 32 -104 32q-17 0 -49 -8q40 -46 70 -100q48 28 83 76zM285 464q-73 -40 -92 -122q83 -16 166 19q-32 57 -74 103zM188 300 +q0 -73 50 -126q59 81 155 116q-2 5 -4.5 10.5t-5.5 12t-5 10.5q-65 -28 -132 -28q-25 0 -58 5zM269 146q49 -34 106 -34q27 0 57 10q-4 62 -25 129q-87 -31 -138 -105zM472 140q70 43 87 122q-60 11 -112 1q19 -65 25 -123z" /> + <glyph glyph-name="glyph227" unicode="&#xe0e3;" +d="M375 675q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM665 330q-11 106 -87 179q-65 -85 -154 -136l24 -54q107 29 217 11zM547 535q-78 57 -172 57q-43 0 -87 -13q66 -76 117 -169q85 49 142 125zM248 562q-62 -30 -104.5 -85.5 +t-55.5 -123.5q148 -24 280 37q-51 94 -120 172zM83 300q0 -108 71 -190q95 140 254 197q-11 24 -22 47q-106 -50 -218 -50q-39 0 -84 8zM183 81q83 -73 192 -73q51 0 102 19q-10 120 -54 241q-150 -53 -240 -187zM517 45q65 36 105.5 101t43.5 142q-104 18 -203 -8 +q42 -112 54 -235z" /> + <glyph glyph-name="glyph228" unicode="&#xe0e4;" +d="M640 566q110 -110 110 -266q0 -155 -110 -265t-265 -110q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109zM333 349q0 49 31 83.5t78 34.5h58v-84h-58q-10 0 -17.5 -7.5t-7.5 -17.5v-58h83v-83h-83v-206q93 12 164 83q86 86 86 206 +q0 122 -86 207t-206 85q-122 0 -207 -85t-85 -207q0 -120 85 -206q71 -71 165 -83v206h-83v83h83v49z" /> + <glyph glyph-name="glyph229" unicode="&#xe0e5;" horiz-adv-x="375" +d="M250 383h125v-125h-125v-291h-125v291h-125v125h125v53q0 40 12.5 81t34.5 65q46 51 116 51h87v-125h-87q-16 0 -27 -10.5t-11 -26.5v-88z" /> + <glyph glyph-name="glyph230" unicode="&#xe0e6;" +d="M375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86t86 206q0 122 -86 207t-206 85zM250 196 +q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30.5 -73.5t-73.5 -30.5zM250 362q-26 0 -44 -18t-18 -44t18 -44t44 -18t44 18t18 44t-18 44t-44 18zM500 196q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5 +t-30.5 -73.5t-73.5 -30.5z" /> + <glyph glyph-name="glyph231" unicode="&#xe0e7;" horiz-adv-x="708" +d="M167 133q-69 0 -118 49t-49 118t49 118t118 49t117.5 -49t48.5 -118t-48.5 -118t-117.5 -49zM167 383q-35 0 -59.5 -24.5t-24.5 -58.5t24.5 -58.5t59.5 -24.5t59 24.5t24 58.5t-24 58.5t-59 24.5zM542 467q69 0 117.5 -49t48.5 -118t-48.5 -118t-117.5 -49t-118 49 +t-49 118t49 118t118 49z" /> + <glyph glyph-name="glyph232" unicode="&#xe0e8;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM413 237q0 14 7.5 25.5t19.5 11.5q11 0 18.5 -11.5 +t7.5 -25.5t-7 -25t-19 -11t-19.5 11t-7.5 25zM532 369q30 -33 30 -79q0 -69 -34.5 -107t-99.5 -41h-18l-15 -1h-20h-20l-15 1h-18q-65 3 -99.5 41.5t-34.5 106.5q0 46 30 79q-4 2 -1 33q3 30 14 57q40 -5 93 -42q20 5 51 5q33 0 51 -5q50 35 83 40l10 2q11 -27 14 -57 +q3 -31 -1 -33zM376 160q69 0 102 16q35 17 35 67q0 22 -14 40t-35 22q-9 1 -47.5 -1t-40.5 -2q-8 0 -36 2l-32 2q-32 1 -51 -16.5t-19 -46.5q0 -51 34 -67q33 -16 102 -16h2zM311 274q11 0 18.5 -11.5t7.5 -25.5t-7.5 -25t-18.5 -11q-12 0 -19.5 11t-7.5 25t7.5 25.5 +t19.5 11.5v0z" /> + <glyph glyph-name="glyph233" unicode="&#xe0e9;" horiz-adv-x="583" +d="M351 202q0 22 11.5 39.5t30.5 17.5q18 0 29.5 -17.5t11.5 -39.5t-11.5 -39.5t-29.5 -17.5q-19 0 -30.5 17.5t-11.5 39.5zM536 408q47 -52 47 -123q0 -129 -78 -187q-52 -39 -130 -43l-29 -1l-23 -1h-31h-32l-23 1l-28 1q-100 5 -154.5 64.5t-54.5 165.5q0 71 47 123 +q-4 3 0 50q5 52 20 89q58 -6 145 -66q30 8 80 8q51 0 80 -8q37 26 75 43q37 17 53 20l16 3q16 -40 21 -89q4 -46 -1 -50zM293 82q106 0 159 25q54 25 54 104q0 34 -22 63t-54 34q-14 2 -75 -1t-62 -3q-17 0 -49.5 2t-52 2.5t-42.5 -4.5t-37 -17q-33 -30 -33 -76 +q0 -79 53 -104q51 -25 158 -25h3zM192 259q18 0 29 -17.5t11 -39.5t-11 -39.5t-29 -17.5q-19 0 -31 17.5t-12 39.5t12 39.5t31 17.5v0z" /> + <glyph glyph-name="glyph234" unicode="&#xe0ea;" +d="M408 254q3 -3 9 -8.5t8.5 -8.5t7.5 -8.5t7.5 -9t5 -9t3.5 -11t1 -11.5q0 -37 -35 -64.5t-94 -27.5q-51 0 -77.5 20.5t-26.5 50.5q0 36 37 58q41 21 96 21q-17 17 -17 33q0 12 5 17h-17q-38 0 -60.5 24t-22.5 55q0 40 33 67q35 25 87 25h100l-29 -17h-29q33 -33 33 -67 +q0 -18 -6.5 -32t-13.5 -21t-21 -18l-13 -24q0 -8 13 -21zM342 308q20 0 33 13t13 37q0 33 -17 62.5t-46 29.5q-16 0 -33 -17q-6 -6 -13 -37q0 -30 17 -59t46 -29zM346 112q34 0 52.5 14t18.5 36q0 18 -12.5 32.5t-42.5 34.5h-12q-29 0 -50 -8l-4 -2l-6 -3t-6.5 -4t-7.5 -5.5 +t-6.5 -6.5t-6 -8t-4 -9.5t-1.5 -11.5q0 -25 24 -42t64 -17zM500 300h-42v42h42v41h42v-41h41v-42h-41v-42h-42v42zM375 -75q-156 0 -265.5 109.5t-109.5 265.5t109.5 265.5t265.5 109.5t265.5 -109.5t109.5 -265.5t-109.5 -265.5t-265.5 -109.5zM375 592q-121 0 -206.5 -85 +t-85.5 -207t85.5 -207t206.5 -85t206.5 85t85.5 207t-85.5 207t-206.5 85z" /> + <glyph glyph-name="glyph235" unicode="&#xe0eb;" horiz-adv-x="617" +d="M321 238q21 -18 28 -25t20.5 -22.5t18 -31t4.5 -34.5q0 -61 -58.5 -107.5t-158.5 -46.5q-84 0 -129.5 33.5t-45.5 83.5q0 64 62 100q47 25 159 37q-25 25 -25 54q0 13 8 29h-25q-62 0 -99.5 40t-37.5 90q0 64 50 108q56 46 146 46h170l-50 -30h-50q59 -48 59 -112 +q0 -29 -12 -53t-24.5 -35.5t-34.5 -28.5q-25 -25 -25 -41q0 -13 21 -34zM217 329q13 0 29 8.5t25 20.5q21 17 21 59q0 51 -29 100.5t-75 49.5q-16 0 -33 -8t-26 -21q-17 -30 -17 -63q0 -49 28.5 -97.5t76.5 -48.5zM217 0q57 0 89 24.5t32 63.5q0 29 -17.5 49t-70.5 59h-21 +q-51 0 -87 -13q-23 -5 -47 -25t-24 -58q0 -44 40.5 -72t105.5 -28zM492 300h-84v42h84v79l41 4v-83h84v-42h-84v-83h-41v83z" /> + <glyph glyph-name="glyph236" unicode="&#xe0ec;" +d="M375 675q156 0 265.5 -109.5t109.5 -265.5t-109.5 -265.5t-265.5 -109.5t-265.5 109.5t-109.5 265.5t109.5 265.5t265.5 109.5zM375 383q-35 0 -59 -24.5t-24 -58.5t24 -58.5t59 -24.5t59 24.5t24 58.5t-24 58.5t-59 24.5zM492 467q0 -22 14 -36t36 -14q21 0 35.5 15.5 +t14.5 34.5t-15.5 34.5t-34.5 15.5t-34.5 -14.5t-15.5 -35.5zM375 8q121 0 206.5 85t85.5 207h-125q0 -69 -49 -118t-118 -49t-118 49t-49 118h-125q0 -122 85.5 -207t206.5 -85z" /> + <glyph glyph-name="glyph237" unicode="&#xe0ed;" +d="M625 675q53 0 89 -36t36 -89v-500q0 -53 -36 -89t-89 -36h-500q-53 0 -89 36t-36 89v500q0 53 36 89t89 36h500zM375 425q-53 0 -89 -36t-36 -89t36 -89t89 -36t89 36t36 89t-36 89t-89 36zM533 508q0 -22 14 -36t36 -14q21 0 35.5 15.5t14.5 34.5t-15.5 34.5t-34.5 15.5 +t-34.5 -14.5t-15.5 -35.5zM625 8q19 0 30.5 11.5t11.5 30.5v250h-84q0 -88 -60 -148t-148 -60t-148 60t-60 148h-84v-250q0 -19 11.5 -30.5t30.5 -11.5h500z" /> + <glyph glyph-name="glyph238" unicode="&#xe0ee;" +d="M375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86t86 206q0 122 -86 207t-206 85zM467 203q83 0 83 55 +q0 47 -53 59l-26 5q-22 6 -22 24q0 21 27 21q30 0 32 -24l41 4q-5 52 -70 52q-71 0 -71 -59q0 -43 46 -53l28 -5q28 -8 28 -25q0 -22 -43 -22q-53 0 -70 51l-14 40q-12 40 -30 56.5t-60 16.5q-40 0 -67 -30t-27 -72q0 -40 26 -67t65 -27q38 0 60 18l-12 35q-20 -20 -46 -20 +q-24 0 -39.5 18.5t-15.5 44.5q0 30 15 48t42 18q17 0 27.5 -7.5t15 -16t10.5 -27.5l13 -40q23 -71 107 -71v0z" /> + <glyph glyph-name="glyph239" unicode="&#xe0ef;" horiz-adv-x="625" +d="M477 126q148 0 148 99q0 81 -94 103l-47 10q-39 10 -39 42q0 37 49 37q54 0 57 -42l72 8q-7 91 -124 91q-126 0 -126 -104q0 -74 82 -94l49 -9q50 -12 50 -45q0 -39 -77 -39q-94 0 -124 91l-24 72q-22 71 -56 100q-32 28 -105 28q-67 0 -117 -49q-51 -49 -51 -131 +q0 -77 48 -122q47 -46 115 -46q66 0 106 32l-22 62q-35 -35 -81 -35q-42 0 -69.5 32.5t-27.5 78.5q0 62 31 90q32 29 70 29q42 0 61 -22q17 -22 33 -70l23 -71q39 -126 190 -126v0z" /> + <glyph glyph-name="glyph240" unicode="&#xe0f0;" +d="M293 162h-67v217h67v-217zM224 440q0 14 10.5 24t25.5 10q36 0 36 -34q0 -33 -36 -33t-36 33zM462 385q38 0 58 -26t20 -69v-128h-68v121q0 48 -33 48q-17 0 -27.5 -11.5t-10.5 -31.5v-126h-68v148q0 56 -1 69h58l4 -29q23 35 68 35zM375 -75q-155 0 -265 110t-110 265 +t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph241" unicode="&#xe0f1;" horiz-adv-x="585" +d="M127 8h-125v417h125v-417zM442 412q70 0 106.5 -45t36.5 -123v-236h-125v223q0 87 -61 87q-49 0 -64 -49v-261h-125q2 375 0 417h99l8 -83h2q43 70 123 70zM0 529q0 63 65 63q64 0 64 -63q0 -62 -64 -62q-65 0 -65 62z" /> + <glyph glyph-name="glyph242" unicode="&#xe0f2;" +d="M375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5zM389 467q60 0 98.5 -37t38.5 -87q0 -64 -32.5 -106.5 +t-84.5 -42.5q-17 0 -32 8t-21 19q-1 1 -1.5 -2t-1.5 -9.5t-3 -15.5t-5.5 -21.5t-9 -25t-14 -27.5t-19.5 -29q-2 -2 -3.5 -1.5t-1.5 2.5q-9 38 1 83l27 117q-7 15 -7 35q0 24 12.5 40t29.5 16q29 0 29 -33q0 -12 -8.5 -41t-10.5 -36q-4 -17 6.5 -29t27.5 -12q30 0 49.5 33.5 +t19.5 81.5q0 36 -24 59.5t-66 23.5q-48 0 -77.5 -30.5t-29.5 -73.5q0 -25 15 -42q4 -5 3 -12l-5 -18q-2 -8 -10 -5q-45 18 -45 83q0 51 41.5 93t113.5 42z" /> + <glyph glyph-name="glyph243" unicode="&#xe0f3;" horiz-adv-x="500" +d="M265 601q103 0 169 -63t66 -149q0 -111 -56 -183t-144 -72q-29 0 -55 14t-36 33q-21 -86 -26 -102q-16 -58 -67 -122q-6 -6 -8 2q-12 85 1 141l47 203q-12 23 -12 58q0 41 21 68.5t51 27.5q24 0 37 -15.5t13 -39.5q0 -15 -5.5 -36.5t-14.5 -50t-13 -45.5q-7 -29 11 -50.5 +t48 -21.5q51 0 84 58t33 140q0 63 -40.5 102.5t-113.5 39.5q-82 0 -132.5 -52.5t-50.5 -125.5q0 -43 25 -73q8 -10 5 -20l-7 -30q-4 -16 -19 -9q-76 31 -76 141q0 88 71 160t194 72z" /> + <glyph glyph-name="glyph244" unicode="&#xe0f4;" +d="M506 -17q66 0 113.5 49.5t47.5 116.5q0 36 -17 75q6 31 6 61q0 119 -81 203q-80 83 -196 83q-25 0 -48 -5q-40 26 -87 26q-67 0 -114 -48.5t-47 -116.5q0 -47 23 -85q-6 -30 -6 -57q0 -118 82 -203q81 -84 197 -84q14 0 51 5q34 -20 76 -20zM214 204q0 16 11.5 27 +t28.5 11q29 0 41 -35q4 -4 17 -29q18 -25 63 -25q31 0 54 13t23 38q0 29 -40 44l-14 3l-19 5q-16 5 -18 5q-42 9 -74 23q-27 11 -46 34.5t-19 57.5q0 55 44 82.5t110 27.5q70 0 112 -33q35 -33 35 -63q0 -16 -12 -28.5t-28 -12.5q-11 0 -19 5t-11.5 9.5t-10.5 16.5 +q-18 43 -71 43q-26 0 -46 -10.5t-20 -28.5q0 -16 12 -24.5t33 -15.5l17 -4q78 -19 83 -21q60 -21 80 -57q10 -21 10 -51q0 -60 -45.5 -91.5t-116.5 -31.5q-104 0 -146 64q-18 28 -18 52zM244 675q54 0 101 -22q22 2 34 2q150 0 256 -109q105 -110 105 -261q0 -16 -4 -52 +q14 -42 14 -84q0 -102 -71 -175q-72 -74 -173 -74q-49 0 -90 17q-15 -2 -37 -2q-150 0 -257 109q-106 109 -106 261q0 21 3 44q-19 44 -19 98q0 102 70 174q72 74 174 74z" /> + <glyph glyph-name="glyph245" unicode="&#xe0f5;" +d="M736 245q14 -42 14 -83q0 -103 -71 -176q-72 -74 -173 -74q-46 0 -90 18q-15 -2 -37 -2q-150 0 -257 108q-106 109 -106 261q0 23 3 45q-19 44 -19 98q0 102 70 174q72 74 174 74q54 0 101 -22q11 1 34 1q150 0 256 -109q105 -110 105 -261q0 -16 -4 -52zM378 101 +q71 0 116.5 31.5t45.5 91.5q0 55 -42 85q-25 15 -48 23q-5 1 -83 21l-17 4q-28 9 -38 23q-7 7 -7 16q0 18 20.5 29t45.5 11q53 0 71 -43q8 -13 10.5 -17t11 -9t19.5 -5q16 0 28 12.5t12 28.5q0 32 -35 63q-42 33 -112 33q-66 0 -110 -27.5t-44 -82.5q0 -34 18.5 -58 +t46.5 -35q32 -14 74 -23q13 -3 18 -4l19 -5l14 -3q40 -15 40 -45q0 -24 -23 -37t-54 -13q-45 0 -63 25q-13 25 -17 29q-11 34 -41 34q-17 0 -28.5 -11t-11.5 -27q0 -28 19 -53.5t44 -39.5q42 -22 101 -22z" /> + <glyph glyph-name="glyph246" unicode="&#xe0f6;" +d="M474 150v52q-26 -17 -49 -17q-10 0 -21.5 6t-12.5 14q-4 8 -4 36v82h76v51h-76v82h-45q-6 -31 -11.5 -43.5t-21.5 -25.5q-17 -13 -32 -19v-45h35v-113q0 -53 50 -72q22 -6 38 -6q40 0 74 18v0zM375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265 +t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph247" unicode="&#xe0f7;" horiz-adv-x="330" +d="M330 53v86q-41 -28 -81 -28q-17 0 -36 9.5t-22 23.5q-8 14 -8 61v137h125v83h-125v140h-74q-10 -52 -19 -73t-36 -43q-27 -23 -54 -31v-76h58v-189q0 -60 37 -93q15 -15 47 -28q38 -9 65 -9q68 0 123 30v0z" /> + <glyph glyph-name="glyph248" unicode="&#xe0f8;" +d="M380 346q0 28 20 48t49 20t49 -21q22 5 43 16q-8 -24 -29 -37q24 3 39 11q-13 -19 -35 -36v-9q0 -106 -89 -164q-45 -30 -105 -30q-57 0 -105 31q3 -1 17 -1q47 0 85 29q-23 1 -40.5 14.5t-23.5 33.5q4 -2 12 -2q12 0 18 2q-23 5 -38.5 23.5t-15.5 44.5q11 -6 31 -8 +q-31 22 -31 57q0 16 10 34q55 -68 141 -71q-2 8 -2 15zM375 -75q-156 0 -266 110q-109 109 -109 265q0 157 109 266q108 109 266 109q156 0 265 -109q110 -110 110 -266q0 -155 -110 -265t-265 -110zM375 592q-122 0 -207 -85t-85 -207q0 -120 85 -206t207 -86q120 0 206 86 +t86 206q0 122 -86 207t-206 85z" /> + <glyph glyph-name="glyph249" unicode="&#xe0f9;" +d="M365 451q0 64 45.5 108.5t109.5 44.5q68 0 111 -47q48 10 98 36q-16 -54 -67 -85q43 6 88 25q-31 -47 -77 -81v-19q0 -109 -48 -204q-48 -97 -152 -165t-237 -68q-130 0 -236 69q16 -2 38 -2q107 0 190 65q-52 1 -90.5 32t-52.5 76q10 -4 28 -4t40 5q-52 11 -87 53 +t-35 100q29 -16 69 -19q-69 48 -69 129q0 38 21 76q126 -153 318 -159q-5 17 -5 34z" /> + <glyph glyph-name="glyph250" unicode="&#xe0fa;" +d="M394 343q5 29 30.5 52.5t53.5 23.5q62 0 50 -67q-10 -63 -60 -124q-46 -55 -86 -83q-12 -6 -23 -6q-27 0 -44 35q-4 8 -26.5 83t-25.5 79q-2 4 -6 4q-20 -4 -31 -15l-12 17l14 17q47 52 88 57q14 0 23 -13.5t12 -29.5t6 -37.5t5 -29.5q15 -65 26 -65q14 0 44 58 +q10 17 6 35t-21 18q-7 0 -23 -9zM375 -75q-155 0 -265 110t-110 265t110 265t265 110t265 -110t110 -265t-110 -265t-265 -110zM375 592q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5t-85.5 206.5t-206.5 85.5z" /> + <glyph glyph-name="glyph251" unicode="&#xe0fb;" horiz-adv-x="583" +d="M580 434q-21 -122 -110 -228q-88 -105 -160 -154q-42 -21 -74 -1q-31 19 -49 55q-10 19 -49.5 154.5t-47.5 145.5q-7 13 -32.5 1t-34.5 -21l-23 30l26 31q31 33 73 65.5t75 39.5q44 9 65 -43q13 -30 25 -108q2 -15 11 -51q29 -121 46 -121q25 0 82 108q26 49 3 81t-72 1 +q8 50 43 85q65 69 141 51q80 -15 62 -121z" /> + <glyph glyph-name="glyph252" unicode="&#xe0fc;" +d="M188 252v26h90v-26h-30v-150h-30v150h-30zM342 133v99h26v-130h-26v14q-8 -9 -19 -13.5t-20 0.5t-9 20v109h26v-100q2 -11 9 -8.5t13 9.5zM438 233q24 0 24 -32v-72q0 -13 -6.5 -21t-17.5 -8q-7 0 -13.5 3t-8.5 6l-3 3v-10h-26v176h26v-56q10 11 25 11zM435 132v68 +q0 11 -8 13t-14 -5v-81q4 -4 9 -5.5t9 1t4 9.5zM519 235q16 0 26.5 -10.5t10.5 -27.5v-33h-50v-25q0 -11 6 -15.5t12.5 0.5t6.5 15v6h25v-6q0 -25 -19 -35t-38 0t-19 35v58q0 17 11 27.5t28 10.5zM506 197v-13h25v13q0 15 -13 15q-12 0 -12 -15zM375 675q155 0 265 -110 +t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM463 386q16 0 32 14v-12h33v147h-33v-110q-9 -9 -16 -9q-5 0 -5 7v112h-33v-122q0 -27 22 -27zM335 496v-71q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5v71q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5 +t-12 -29.5zM248 585h-38l40 -115v-82h37v82l39 115h-38l-20 -73zM577 63q10 9 15.5 40.5t5.5 58.5l1 26q0 104 -22 126q-10 9 -60 14.5t-95 5.5l-46 1q-180 0 -201 -21q-9 -9 -14.5 -40.5t-6.5 -58.5l-1 -27q0 -103 22 -125q10 -9 60 -14.5t95 -6.5h46q180 0 201 21z +M375 410q-10 0 -10 11v79q0 10 11 10q10 0 10 -10v-79q0 -11 -11 -11z" /> + <glyph glyph-name="glyph253" unicode="&#xe0fd;" horiz-adv-x="917" +d="M908 442q9 -70 9 -142t-9 -142q-7 -55 -15.5 -84t-25.5 -41q-30 -25 -409 -25q-378 0 -408 25q-28 19 -42 125q-8 62 -8 142t8 142q14 106 42 125q30 25 408 25q379 0 409 -25q17 -12 25.5 -41t15.5 -84zM375 150l250 150l-250 150v-300z" /> + <glyph glyph-name="glyph254" unicode="&#xe0fe;" horiz-adv-x="1000" +d="M234 217l58 115l57 -115h-115zM542 -1q-36 -32 -84 -32q-36 0 -65.5 18.5t-45.5 50.5l-8 14h-95l-7 -14q-16 -32 -46 -50.5t-66 -18.5q-44 0 -75.5 24t-43.5 61q-17 49 7 96l167 333q16 31 46 49t66 18t66 -18t46 -49l75 -151q21 12 42 12h11q-32 35 -32 83 +q0 52 36.5 88.5t88.5 36.5h250q36 0 66 -18.5t46 -50.5q34 -70 -12 -131l-100 -133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-250q-48 0 -83 32zM458 50q24 0 36 20t2 40l-167 334q-11 21 -37 21t-37 -21l-167 -334q-10 -20 1.5 -40t35.5 -20q26 0 37 23l31 60 +h198l30 -60q11 -23 37 -23zM521 217h42q17 0 29 12t12 29t-12 29.5t-29 12.5h-42q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12zM875 50q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-167l200 267q16 22 3.5 44.5t-36.5 22.5h-250q-17 0 -29.5 -12.5t-12.5 -29.5 +t12.5 -29.5t29.5 -12.5h167l-200 -266q-16 -23 -3.5 -45t36.5 -22h250z" /> + <glyph glyph-name="glyph255" unicode="&#xe0ff;" horiz-adv-x="917" +d="M412 110q10 -20 -1.5 -40t-35.5 -20q-26 0 -37 23l-30 60h-199l-30 -60q-7 -16 -23.5 -21.5t-32.5 2.5q-16 7 -21.5 23.5t2.5 32.5l167 334q11 21 38 21t37 -21zM151 217h115l-58 115zM875 50h-250q-24 0 -36.5 22t3.5 45l200 266h-167q-17 0 -29.5 12.5t-12.5 29.5 +t12.5 29.5t29.5 12.5h250q24 0 36.5 -22.5t-3.5 -44.5l-200 -267h167q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM542 217h-84q-17 0 -29 12t-12 29t12 29.5t29 12.5h84q17 0 29 -12.5t12 -29.5t-12 -29t-29 -12z" /> + <glyph glyph-name="glyph256" unicode="&#xe100;" horiz-adv-x="982" +d="M183 550q37 0 67.5 -19t46.5 -46q66 64 157 64q94 0 158 -64l2 -3q59 68 149 68q82 0 140 -58t58 -140q0 -30 -9 -58q30 -52 30 -109q0 -91 -64 -154.5t-155 -63.5q-62 0 -114 33q-36 -33 -84 -33h-208q-49 0 -84 32q-35 -32 -83 -32q-52 0 -88.5 36.5t-36.5 88.5v194 +q-36 20 -52 53q-23 47 -6.5 95.5t61.5 71.5l58 31q25 13 57 13zM232 425q0 16 -15.5 29t-33.5 13q-9 0 -19 -5l-57 -30q-16 -7 -21.5 -23.5t2.5 -32.5q11 -23 41 -23q9 0 19 5v-266q0 -17 12.5 -29.5t29.5 -12.5t29.5 12.5t12.5 29.5v333zM454 383q23 0 39.5 -16.5 +t16.5 -39.5t-16 -39l-167 -167q-20 -20 -8 -45.5t38 -25.5h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-108l96 96q41 41 41 98q0 58 -41 99q-39 39 -99 39q-59 0 -98 -39q-41 -41 -41 -99q0 -17 12.5 -29t29.5 -12t29 12t12 29q0 23 16.5 39.5t39.5 16.5zM763 50 +q56 0 95.5 39.5t39.5 95.5q0 59 -43 99q23 31 23 68q0 47 -34 81t-81 34q-69 0 -102 -62q-10 -20 1.5 -40.5t35.5 -20.5q26 0 37 22q9 17 28 17q13 0 22 -9t9 -22t-9 -22t-22 -9q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12q22 0 37 -15.5t15 -37.5t-15 -37t-37 -15 +t-37 15t-15 37q0 17 -12.5 29.5t-29.5 12.5t-29 -12.5t-12 -29.5q0 -56 39.5 -95.5t95.5 -39.5z" /> + <glyph glyph-name="glyph257" unicode="&#xe101;" horiz-adv-x="875" +d="M125 50q-17 0 -29.5 12.5t-12.5 29.5v266l-23 -12q-16 -8 -32.5 -2.5t-23.5 21.5q-8 16 -2.5 32.5t21.5 23.5l83 41q22 11 41.5 -2.5t19.5 -34.5v-333q0 -17 -12.5 -29.5t-29.5 -12.5zM500 50h-208q-26 0 -38 25.5t8 45.5l167 167q16 16 16 39q0 24 -16 40t-39.5 16 +t-39.5 -16q-17 -15 -17 -40q0 -17 -12 -29t-29 -12t-29.5 12t-12.5 29q0 58 41 99q40 40 98.5 40t98.5 -40q41 -41 41 -99q0 -57 -41 -98l-96 -96h108q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5zM831 284q44 -41 44 -99q0 -56 -39.5 -95.5t-95.5 -39.5t-96 39.5 +t-40 95.5q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5q0 -22 15 -37t37 -15t37 15t15 37t-15 37.5t-37 15.5q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5q13 0 22 9t9 22t-9 22t-22 9q-20 0 -28 -17q-8 -15 -24.5 -20t-31.5 3t-20.5 24.5t2.5 31.5q33 62 102 62 +q47 0 80.5 -34t33.5 -81q0 -37 -23 -68z" /> + <glyph glyph-name="glyph258" unicode="&#xe102;" horiz-adv-x="792" +d="M167 133q0 42 41 42q42 0 42 -42q0 -41 -42 -41q-41 0 -41 41zM739 606q53 -73 53 -160q0 -112 -80 -192q-79 -79 -191 -79l-16 1q-110 -144 -138 -177q-61 -74 -159 -74q-86 0 -147 61t-61 147q0 94 74 159q86 73 177 138l-1 16q0 112 79 191q80 80 192 80q87 0 160 -53 +q12 -12 12 -29t-12 -29q12 12 29 12t29 -12zM83 133q0 -51 37 -88t88 -37q58 0 95 45q41 47 96 121q52 69 72 92q29 -8 50 -8q77 0 132 55.5t55 132.5q0 22 -8 52l-117 -115l-104 21l-21 104l119 116q-30 9 -56 9q-77 0 -132.5 -55t-55.5 -132q0 -21 8 -50q-27 -22 -93 -72 +q-60 -45 -120 -95q-45 -39 -45 -96zM683 539q-23 40 -66 66l-113 -111l11 -54l55 -12z" /> + <glyph glyph-name="glyph259" unicode="&#xe103;" horiz-adv-x="667" +d="M643 518q24 -7 24 -72q0 -86 -61.5 -147t-147.5 -61q-22 0 -42 4q-25 -31 -72 -93t-87 -109q-44 -52 -111 -52q-60 0 -103 42.5t-43 102.5q0 67 51 112q47 40 110 86.5t94 72.5q-5 25 -5 42q0 86 61 147t147 61q31 0 62 -10q11 -3 14.5 -14.5t-5.5 -20.5l-111 -108 +l16 -79l80 -16l109 106q9 9 20 6zM146 92q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12z" /> + <glyph glyph-name="glyph260" unicode="&#xe104;" horiz-adv-x="751" +d="M379 308q29 15 26.5 47t-26.5 53q-35 27 -77.5 16.5t-64.5 -49.5q-28 -52 -14 -98t59 -77t97 -29q82 6 127.5 75.5t26.5 149.5q-21 92 -105.5 135.5t-173.5 14.5q-80 -24 -126.5 -98t-40.5 -160q9 -93 73.5 -161.5t155.5 -84.5q88 -16 170.5 21t129.5 112q50 79 50 158 +q0 16 14 28.5t32 9.5q23 0 32 -18.5t6 -40.5q-13 -148 -126 -253t-262 -105q-72 0 -139 29t-114.5 77.5t-78 112t-30.5 133t29 140.5q38 82 113 133t156 60t160.5 -27t124.5 -116q47 -77 37.5 -170.5t-74.5 -158.5q-63 -63 -154 -72t-167 43q-71 51 -86 139t40 161 +q35 47 92.5 64.5t113.5 -2t86 -71.5q17 -29 17.5 -66.5t-13 -69.5t-43 -52t-66.5 -16q-52 0 -83.5 44t-3.5 89q20 27 51 23.5t45 -27.5q4 -15 5 -26.5t0 -15.5z" /> + <glyph glyph-name="glyph261" unicode="&#xe105;" horiz-adv-x="772" +d="M18 329q-23 23 -16 67q6 16 20 27.5t30 14.5h4l196 20l79 180l4 4q19 33 54 33q17 0 30 -10.5t16 -31.5l4 -4l79 -179l196 -21h4q34 -6 49.5 -40t-11.5 -64q-12 -11 -26 -23.5t-31.5 -28t-26.5 -23.5q-52 -52 -66 -62l41 -192q7 -45 -25 -63q-25 -18 -62 -4l-4 4l-171 96 +l-171 -96l-4 -4q-8 -4 -25 -4q-20 0 -33 13q-32 18 -25 62l41 192z" /> + <glyph glyph-name="glyph262" unicode="&#xe106;" horiz-adv-x="772" +d="M18 329q-23 23 -16 67q6 16 20 27.5t30 14.5h4l196 20l79 180l4 4q19 33 54 33q17 0 30 -10.5t16 -31.5l4 -4l79 -179l196 -21h4q34 -6 49.5 -40t-11.5 -64q-12 -11 -26 -23.5t-31.5 -28t-26.5 -23.5q-52 -52 -66 -62l41 -192q7 -45 -25 -63q-25 -18 -62 -4l-4 4l-171 96 +l-171 -96l-4 -4q-8 -4 -25 -4q-20 0 -33 13q-32 18 -25 62l41 192zM389 121q12 0 21 -9l150 -87q-5 34 -13.5 75.5t-14 67t-5.5 28.5q-7 29 12 42l129 116l-175 21q-28 9 -33 25l-71 158v-437z" /> + <glyph glyph-name="glyph263" unicode="&#xe107;" horiz-adv-x="348" +d="M327 621q12 12 21 12v-554q-117 -66 -192 -108q-14 -7 -25 4q-8 4 -8 21l45 216q-95 92 -162 150q-10 10 -4 21q0 3 5 8t11 5l217 25q54 121 92 200z" /> + <glyph glyph-name="glyph264" unicode="&#xe108;" horiz-adv-x="779" +d="M592 -74q-11 0 -31 9l-171 97l-172 -97q-38 -18 -67 3q-33 23 -25 63l40 194q-24 22 -73 66t-73 66q-28 30 -17 66q12 36 53 43l195 21l82 180q21 37 57 37q37 0 57 -37l81 -180l196 -22q40 -6 52 -42q12 -37 -17 -66l-146 -133l40 -193q5 -28 -13 -51.5t-48 -23.5z +M252 200q-1 -3 -6 -28.5t-13.5 -67.5t-15.5 -74l152 86q21 11 41 0l152 -86l-35 171q-5 23 13 39l129 118l-174 19q-24 3 -33 24l-72 159l-72 -159q-10 -21 -34 -24l-173 -19l129 -118q17 -15 12 -40z" /> + <glyph glyph-name="glyph265" unicode="&#xe109;" horiz-adv-x="696" +d="M238 418l91 202q5 12 19 12t19 -12l91 -202q131 -14 219 -24q12 -2 17 -14t-5 -22l-163 -149l44 -216q2 -12 -8 -20.5t-22 -1.5l-192 109q-115 -65 -192 -109q-12 -7 -22.5 1.5t-8.5 20.5l45 216q-98 89 -163 149q-10 9 -5 21.5t17 14.5z" /> + <glyph glyph-name="glyph266" unicode="&#xe10a;" horiz-adv-x="833" +d="M815 335q18 -12 18 -35t-18 -35l-77 -51l41 -83q11 -21 -2 -39.5t-33 -20.5l-92 -6l-6 -93q-2 -20 -20 -32.5t-40 -1.5l-83 41l-52 -77q-13 -19 -34 -19q-22 0 -35 19l-51 77l-83 -41q-21 -11 -39.5 1.5t-20.5 32.5l-6 93l-93 6q-20 2 -32.5 20t-1.5 40l41 83l-77 51 +q-19 13 -19 35t19 35l77 51l-41 83q-11 22 1.5 40t32.5 20l93 6l6 92q2 20 20.5 33t39.5 2l83 -41l51 77q11 17 34.5 17t34.5 -17l52 -77l83 41q21 11 40 -2t20 -33l6 -92l92 -6q20 -2 33 -20t2 -40l-41 -83zM647 210q-7 14 -3 29t17 24l56 37l-56 37q-29 21 -14 53l30 60 +l-67 4q-16 1 -27 12t-12 27l-4 67l-60 -30q-32 -15 -53 14l-37 56l-37 -56q-21 -29 -53 -14l-60 30l-4 -67q-1 -16 -12 -27t-27 -12l-67 -4l30 -60q7 -14 2.5 -29t-17.5 -24l-55 -37l55 -37q13 -9 17.5 -24t-2.5 -29l-30 -60l67 -4q16 -1 26.5 -12t11.5 -27l5 -67l60 30 +q8 4 18 4q23 0 35 -18l37 -56l37 55q9 13 24 17.5t29 -2.5l60 -30l4 67q1 16 12 27t27 12l66 4z" /> + <glyph glyph-name="glyph267" unicode="&#xe10b;" horiz-adv-x="792" +d="M690 379l92 -62q10 -7 10 -17t-10 -17l-92 -62l49 -99q6 -11 -0.5 -20t-16.5 -10l-111 -8l-7 -110q-1 -10 -10 -16.5t-20 -1.5l-99 50l-62 -93q-6 -9 -17 -9t-17 9l-62 93l-99 -50q-11 -5 -20 1.5t-10 16.5l-8 111l-110 7q-10 1 -17 10.5t-1 19.5l50 99l-93 62 +q-9 6 -9 17t9 17l93 62l-50 99q-6 10 1 19.5t17 10.5l110 7l8 111q1 10 10 16.5t20 0.5l99 -49l62 93q6 9 17 9t17 -9l62 -93l99 49q11 6 20 -0.5t10 -16.5l7 -111l111 -7q10 -1 16.5 -10t0.5 -20z" /> + <glyph glyph-name="glyph268" unicode="&#xe10c;" +d="M684 429q66 -94 66 -212q0 -155 -110 -265t-265 -110t-265 110t-110 265q0 144 96 250.5t238 121.5l-1 3v41h-41q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5h166q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-41v-41l-1 -3q125 -14 216 -100l5 7l21 21 +q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5l-21 -21q-4 -4 -12 -8zM375 -75q121 0 206.5 85.5t85.5 206.5t-85.5 206t-206.5 85t-206.5 -85t-85.5 -206t85.5 -206.5t206.5 -85.5zM417 258h83q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-125q-17 0 -29.5 12.5 +t-12.5 29.5v125q0 17 12.5 29t29.5 12t29.5 -12t12.5 -29v-84zM375 467q103 0 176.5 -73.5t73.5 -176.5t-73.5 -176.5t-176.5 -73.5t-176.5 73.5t-73.5 176.5t73.5 176.5t176.5 73.5zM375 8q86 0 147 61.5t61 147.5t-61 147t-147 61t-147 -61t-61 -147t61 -147.5t147 -61.5z +" /> + <glyph glyph-name="glyph269" unicode="&#xe10d;" horiz-adv-x="708" +d="M354 654q146 0 250 -104t104 -250t-104 -250t-250 -104t-250 104t-104 250t104 250t250 104zM625 300q0 65 -30 123l-80 -80q6 -21 6 -43t-6 -43l80 -80q30 58 30 123zM83 300q0 -65 30 -123l81 81q-6 21 -6 42q0 22 6 43l-81 80q-30 -58 -30 -123zM211 384q22 37 59 59 +l-74 74l-59 -59zM270 157q-36 20 -59 59l-74 -74l59 -59zM295 241q24 -24 59.5 -24t58.5 24q25 25 25 59t-24.5 58.5t-59.5 24.5q-34 0 -58.5 -24.5t-24.5 -58.5q0 -35 24 -59zM571 458l-59 59l-74 -74q37 -22 59 -59zM497 216q-23 -39 -59 -59l74 -74l59 59zM477 541 +q-58 30 -123 30t-123 -30l81 -81q24 7 42 7t43 -7zM231 59q58 -30 123 -30t123 30l-80 81q-25 -7 -43 -7t-42 7z" /> + <glyph glyph-name="glyph270" unicode="&#xe10e;" horiz-adv-x="708" +d="M625 633q35 0 59 -24.5t24 -58.5v-417q0 -35 -24 -59t-59 -24h-83v-42q0 -34 -24.5 -58.5t-59.5 -24.5h-375q-35 0 -59 24.5t-24 58.5v375q0 35 24.5 59.5t58.5 24.5h42v83q0 34 24.5 58.5t58.5 24.5h417zM83 8h375v354q0 8 -6 14.5t-14 6.5h-355v-375zM625 133v417h-417 +v-125h230q25 0 43.5 -18.5t18.5 -44.5v-229h125z" /> + <glyph glyph-name="glyph271" unicode="&#xe10f;" horiz-adv-x="875" +d="M292 633q-87 0 -148 -61t-61 -147t61 -147l127 -124l229 -229l292 292q-295 295 -353 355q-61 61 -147 61zM292 717q121 0 207 -86q87 -90 352 -355q24 -25 24 -59t-24 -59l-292 -292q-24 -24 -59 -24t-59 24l-216 216q-7 5 -15 12l-125 125q-85 85 -85 206t85 206 +q86 86 207 86zM292 488q-26 0 -44.5 -18.5t-18.5 -44.5t18.5 -44t44.5 -18t44 18t18 44t-18 44.5t-44 18.5zM292 529q43 0 73.5 -30.5t30.5 -73.5t-30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5z" /> + <glyph glyph-name="glyph272" unicode="&#xe110;" horiz-adv-x="833" +d="M809 400q24 -25 24 -59t-24 -58l-45 -45l4 -4q24 -25 23.5 -59.5t-24.5 -58.5l-291 -292q-24 -24 -59 -24t-59 24q-181 181 -273 270q-85 85 -85 206q0 82 43 151q-6 132 84 222q85 85 206 85q122 0 207 -85zM417 -117l291 292l-269 272q-61 61 -147 61q-87 0 -148 -61 +t-61 -147t61 -147q92 -89 273 -270zM498 506l207 -209l45 45l-269 272q-61 61 -148 61q-86 0 -147 -61q-28 -28 -43 -63q69 41 149 41q120 0 206 -86zM292 363q-26 0 -44.5 -18.5t-18.5 -44.5t18.5 -44t44.5 -18t44 18t18 44t-18 44.5t-44 18.5zM292 404q43 0 73.5 -30.5 +t30.5 -73.5t-30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5z" /> + <glyph glyph-name="glyph273" unicode="&#xe111;" horiz-adv-x="833" +d="M292 717q34 0 58.5 -24.5t24.5 -59.5v-208q0 -35 -24.5 -59t-58.5 -24h-209q-35 0 -59 24t-24 59v208q0 35 24.5 59.5t58.5 24.5h209zM292 425v208h-209v-208h209zM750 717q34 0 58.5 -24.5t24.5 -59.5v-208q0 -35 -24.5 -59t-58.5 -24h-208q-35 0 -59.5 24.5t-24.5 58.5 +v208q0 35 25 59.5t59 24.5h208zM750 425v208h-208v-208h208zM292 258q34 0 58.5 -24t24.5 -59v-208q0 -35 -24.5 -59.5t-58.5 -24.5h-209q-34 0 -58.5 24.5t-24.5 59.5v208q0 35 24 59t59 24h209zM292 -33v208h-209v-208h209zM750 258q34 0 58.5 -24t24.5 -59v-208 +q0 -35 -24.5 -59.5t-58.5 -24.5h-208q-34 0 -59 24.5t-25 59.5v208q0 34 24.5 58.5t59.5 24.5h208zM750 -33v208h-208v-208h208z" /> + <glyph glyph-name="glyph274" unicode="&#xe112;" +d="M0 550q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5t-36.5 88.5v83zM417 550q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5 +t-36.5 88.5v83zM0 133q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83q-52 0 -88.5 36.5t-36.5 88.5v83zM417 133q0 52 36.5 88.5t88.5 36.5h83q52 0 88.5 -36.5t36.5 -88.5v-83q0 -52 -36.5 -88.5t-88.5 -36.5h-83 +q-52 0 -88.5 36.5t-36.5 88.5v83z" /> + <glyph glyph-name="glyph275" unicode="&#xe113;" horiz-adv-x="833" +d="M708 50h-291q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h291q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM708 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM708 342h-291 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h291q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5zM708 425q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM708 633h-291q-17 0 -29.5 -12 +t-12.5 -29t12.5 -29.5t29.5 -12.5h291q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM708 717q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-291q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h291zM167 133q35 0 59 -24.5t24 -58.5v-83q0 -35 -24.5 -59.5 +t-58.5 -24.5h-84q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h84zM167 -33v83h-84v-83h84zM167 425q35 0 59 -24.5t24 -58.5v-84q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v84q0 34 24 58.5t59 24.5h84zM167 258v84h-84v-84h84zM167 717 +q34 0 58.5 -24.5t24.5 -59.5v-83q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h84zM167 550v83h-84v-83h84z" /> + <glyph glyph-name="glyph276" unicode="&#xe114;" horiz-adv-x="771" +d="M688 92q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24.5 -58.5t-58.5 -24.5h-292q-35 0 -59.5 24.5t-24.5 58.5t25 59t59 25h292zM688 383q34 0 58.5 -24.5t24.5 -58.5t-24.5 -58.5t-58.5 -24.5h-292q-35 0 -59.5 24.5t-24.5 58.5t24.5 58.5t59.5 24.5h292zM688 675 +q34 0 58.5 -24.5t24.5 -58.5q0 -35 -24.5 -59.5t-58.5 -24.5h-292q-34 0 -59 25t-25 59t24.5 58.5t59.5 24.5h292zM0 8q0 104 104 104t104 -104t-104 -104t-104 104zM0 300q0 104 104 104t104 -104t-104 -104t-104 104zM0 592q0 104 104 104t104 -104t-104 -104t-104 104z +" /> + <glyph glyph-name="glyph277" unicode="&#xe115;" horiz-adv-x="833" +d="M708 50h-583q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12h583q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5zM708 133q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583zM708 342h-583 +q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5t-12.5 29.5t-29.5 12.5zM708 425q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583zM708 633h-583q-17 0 -29.5 -12 +t-12.5 -29t12.5 -29.5t29.5 -12.5h583q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12zM708 717q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-583q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h583z" /> + <glyph glyph-name="glyph278" unicode="&#xe116;" +d="M667 92q34 0 58.5 -24.5t24.5 -59.5q0 -34 -24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5q0 35 24.5 59.5t58.5 24.5h584zM667 383q35 0 59 -24.5t24 -58.5t-24 -58.5t-59 -24.5h-584q-35 0 -59 24.5t-24 58.5t24 58.5t59 24.5h584zM667 675q35 0 59 -24.5t24 -58.5 +q0 -35 -24.5 -59.5t-58.5 -24.5h-584q-34 0 -58.5 24.5t-24.5 59.5q0 34 24 58.5t59 24.5h584z" /> + <glyph glyph-name="glyph279" unicode="&#xe117;" horiz-adv-x="833" +d="M167 133q35 0 59 -24.5t24 -58.5v-83q0 -35 -24.5 -59.5t-58.5 -24.5h-84q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h84zM167 -33v83h-84v-83h84zM167 425q35 0 59 -24.5t24 -58.5v-84q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v84 +q0 34 24 58.5t59 24.5h84zM167 258v84h-84v-84h84zM167 717q34 0 58.5 -24.5t24.5 -59.5v-83q0 -34 -24 -58.5t-59 -24.5h-84q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h84zM167 550v83h-84v-83h84zM458 133q35 0 59.5 -24.5t24.5 -58.5v-83q0 -35 -25 -59.5 +t-59 -24.5h-83q-34 0 -58.5 24.5t-24.5 59.5v83q0 34 24 58.5t59 24.5h83zM458 -33v83h-83v-83h83zM458 425q35 0 59.5 -24.5t24.5 -58.5v-84q0 -34 -24.5 -58.5t-59.5 -24.5h-83q-35 0 -59 24.5t-24 58.5v84q0 34 24 58.5t59 24.5h83zM458 258v84h-83v-84h83zM458 717 +q34 0 59 -24.5t25 -59.5v-83q0 -34 -24.5 -58.5t-59.5 -24.5h-83q-35 0 -59 24.5t-24 58.5v83q0 35 24.5 59.5t58.5 24.5h83zM458 550v83h-83v-83h83zM750 133q34 0 58.5 -24.5t24.5 -58.5v-83q0 -35 -24.5 -59.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 59.5v83 +q0 34 24.5 58.5t59.5 24.5h83zM750 -33v83h-83v-83h83zM750 425q34 0 58.5 -24.5t24.5 -58.5v-84q0 -34 -24.5 -58.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 58.5v84q0 34 24.5 58.5t59.5 24.5h83zM750 258v84h-83v-84h83zM750 717q34 0 58.5 -24.5t24.5 -59.5v-83 +q0 -34 -24.5 -58.5t-58.5 -24.5h-83q-35 0 -59.5 24.5t-24.5 58.5v83q0 35 24.5 59.5t59.5 24.5h83zM750 550v83h-83v-83h83z" /> + <glyph glyph-name="glyph280" unicode="&#xe118;" horiz-adv-x="792" +d="M0 8q0 104 104 104t104 -104t-104 -104t-104 104zM0 300q0 104 104 104t104 -104t-104 -104t-104 104zM0 592q0 104 104 104t104 -104t-104 -104t-104 104zM292 8q0 104 104 104t104 -104t-104 -104t-104 104zM292 300q0 104 104 104t104 -104t-104 -104t-104 104z +M292 592q0 104 104 104t104 -104t-104 -104t-104 104zM583 8q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104zM583 300q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104zM583 592q0 104 105 104q104 0 104 -104t-104 -104q-105 0 -105 104z" /> + <glyph glyph-name="glyph281" unicode="&#xe119;" horiz-adv-x="417" +d="M229 172q27 -7 45 -29t18 -51q0 -34 -25 -59t-59 -25t-58.5 24.5t-24.5 59.5q0 29 18 51t45 29v232q0 8 6 14.5t14 6.5t14.5 -6.5t6.5 -14.5v-232zM354 239q63 -63 63 -147q0 -86 -61.5 -147.5t-147.5 -61.5t-147 61.5t-61 147.5q0 85 62 147v332q0 60 43 103t103 43 +t103 -43t43 -103v-332zM208 -33q52 0 88.5 36.5t36.5 88.5q0 70 -62 107v372q0 25 -18.5 43.5t-44.5 18.5t-44 -18.5t-18 -43.5v-372q-63 -37 -63 -107q0 -52 36.5 -88.5t88.5 -36.5z" /> + <glyph glyph-name="glyph282" unicode="&#xe11a;" horiz-adv-x="708" +d="M583 592q52 0 88.5 -36.5t36.5 -88.5v-250q0 -52 -36.5 -88.5t-88.5 -36.5q-61 0 -99 50q-34 -34 -50.5 -67.5t-16.5 -87.5q0 -43 -30.5 -73.5t-73.5 -30.5t-74 30.5t-31 73.5q0 76 13 151q-139 15 -161 23q-30 11 -47 41.5t-12 62.5l28 249q5 30 25.5 55.5t46.5 35.5 +l13 5q56 23 136 23q66 0 139.5 -20.5t104.5 -44.5l7 -8q37 32 82 32zM333 -12q0 43 8.5 78t26 62.5t29 41t32.5 34.5q29 29 29 55v208q0 9 -5 20t-10 15q-19 14 -79 31t-114 17q-61 0 -104 -17l-16 -6q-5 -2 -11.5 -10t-7.5 -15l-27 -249q-2 -10 4 -13q12 -3 86 -12t95 -11 +l55 8l-12 -59q-20 -98 -20 -178q0 -8 6 -14.5t14 -6.5t14.5 6.5t6.5 14.5zM625 217v250q0 17 -12.5 29t-29.5 12t-29 -12t-12 -29v-250q0 -17 12 -29.5t29 -12.5t29.5 12.5t12.5 29.5z" /> + <glyph glyph-name="glyph283" unicode="&#xe11b;" horiz-adv-x="731" +d="M712 312q45 -68 -25 -154q-44 -58 -154 -87q-16 -4 -34.5 -13.5t-29.5 -17t-27 -19.5t-17 -13q4 -9 8.5 -23.5t0.5 -51t-30 -62.5q-25 -27 -59 -36t-62.5 -1.5t-45.5 24.5l-208 209q-58 67 -4 133q122 142 154 196q8 13 13 40.5t10.5 68.5t9.5 62q5 28 26 48.5t40 27.5 +l18 7l54 50q19 5 37.5 6t28.5 0l9 -2q35 63 96 63q55 0 92.5 -50t7.5 -109l-34 -75l71 -37q55 -55 67 -104q8 -37 -13 -80zM283 -71q21 -20 46 -8t25 37q0 17 -13 30l-204 204l-29 -30q-12 -12 -12 -29t12 -29zM616 342q16 0 26 11t4 26q-21 36 -46 54q-43 29 -88 25 +q-28 0 -71 -29q-10 -5 -10 1q1 2 2 3q100 163 117 200q6 16 -3.5 31t-25.5 15q-21 0 -38 -25q-5 -9 -38.5 -69t-48.5 -89l20 100q3 15 -6 24t-23 9q-6 0 -14 -6t-11 -15l-16 -54q-3 6 -12 11.5t-18 5.5q-20 0 -25 -21l-29 -162q-6 -37 -75 -121l192 -192q24 24 75 54 +q29 18 74.5 25.5t71.5 24.5q50 34 50 71q0 33 -29 33q-8 0 -14 -4t-16.5 -13.5t-19.5 -15.5q-25 -12 -55 -12q-31 0 -50.5 23.5t-19.5 55.5q0 54 41 71q22 9 46.5 6.5t37.5 -15.5q5 -5 13.5 -16t15.5 -16t16 -5zM608 312q-28 0 -37 13q-19 29 -46 29q-21 0 -33.5 -11.5 +t-12.5 -30.5t12.5 -32t33.5 -13q27 0 46 29q11 16 37 16z" /> + <glyph glyph-name="glyph284" unicode="&#xe11c;" horiz-adv-x="708" +d="M649 438q30 -11 46.5 -41t11.5 -62l-28 -249q-5 -31 -25.5 -56t-46.5 -35l-13 -5q-56 -23 -136 -23q-66 0 -139 20.5t-104 44.5l-8 8q-37 -32 -82 -32q-52 0 -88.5 36.5t-36.5 88.5v250q0 52 36.5 88.5t88.5 36.5q61 0 99 -50q35 35 51.5 67.5t16.5 86.5q0 43 30.5 74 +t73.5 31t73.5 -31t30.5 -74q0 -75 -13 -150q136 -14 162 -24zM125 92q17 0 29.5 12t12.5 29v250q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-250q0 -17 12.5 -29t29.5 -12zM597 98l28 249q2 10 -5 13q-12 3 -86 12t-95 11l-55 -8l13 59q20 93 20 178 +q0 8 -6.5 14.5t-14.5 6.5t-14.5 -6.5t-6.5 -14.5q0 -43 -8.5 -78t-26 -62.5t-29 -41t-32.5 -34.5q-29 -29 -29 -55v-208q0 -24 15 -35q19 -14 79 -31t114 -17q62 0 105 17l15 6q5 2 11.5 10t7.5 15z" /> + <glyph glyph-name="glyph285" unicode="&#xe11d;" horiz-adv-x="625" +d="M292 -33q-53 0 -89 36l-166 167q-37 37 -37 88q0 52 37 89q35 35 88 35t88 -35l50 -50l128 230q16 30 45.5 47.5t63.5 17.5q70 0 107.5 -60.5t1.5 -125.5l-208 -375q-35 -64 -109 -64zM125 300q-17 0 -29.5 -12.5t-12.5 -29.5q0 -16 13 -29l166 -167q15 -15 35.5 -12 +t30.5 21l208 375q9 18 3.5 34t-19.5 23q-15 8 -31.5 3t-24.5 -19l-182 -327l-128 128q-12 12 -29 12z" /> + <glyph glyph-name="glyph286" unicode="&#xe11e;" horiz-adv-x="542" +d="M499 540q30 -16 39.5 -50t-7.5 -64l-208 -375q-20 -36 -61 -42l-12 -1q-34 0 -59 25l-167 166q-25 25 -25 59t25 59t59 25t59 -25l89 -88l154 278q16 30 50 40t64 -7z" /> + <glyph glyph-name="glyph287" unicode="&#xe11f;" horiz-adv-x="855" +d="M819 464q36 -36 35.5 -88.5t-36.5 -88.5l-381 -375q-38 -36 -88 -36q-52 0 -89 37l-224 223q-36 36 -35.5 88.5t36.5 88.5l381 375q35 35 88.5 34.5t88.5 -35.5zM760 347q12 12 12 29t-12 29l-53 53q-25 -23 -58 -22.5t-57 24.5t-24.5 57t22.5 58l-54 53q-12 12 -30 12 +q-17 0 -29 -12l-381 -375q-12 -12 -12.5 -29t11.5 -29l53 -53q25 23 58 22.5t57 -24.5q23 -24 24 -57t-21 -58l53 -53q12 -12 30 -12.5t30 11.5zM407 90l-194 194l235 226l194 -194zM272 283l136 -135l175 169l-135 135z" /> + <glyph glyph-name="glyph288" unicode="&#xe120;" +d="M542 258q0 -17 -12.5 -29t-29.5 -12h-125q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h125q17 0 29.5 -12.5t12.5 -29.5zM375 550q-121 0 -206.5 -85.5t-85.5 -206.5t85.5 -206t206.5 -85t206.5 85t85.5 206t-85.5 206.5t-206.5 85.5zM375 633q155 0 265 -110t110 -265 +t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM417 383q0 17 -12.5 29.5t-29.5 12.5t-29.5 -12.5t-12.5 -29.5v-125q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v125zM375 467q-86 0 -147 -61.5t-61 -147.5t61 -147t147 -61t147 61t61 147t-61 147.5t-147 61.5z +M375 508q103 0 176.5 -73t73.5 -177t-73.5 -177t-176.5 -73t-176.5 73t-73.5 177t73.5 177t176.5 73z" /> + <glyph glyph-name="glyph289" unicode="&#xe121;" horiz-adv-x="583" +d="M583 133q0 -51 -37 -88t-88 -37t-88 37l-78 78l-79 -78q-35 -35 -88 -35t-88 35q-37 37 -37 88q0 52 37 89l78 78l-78 78q-37 37 -37 89q0 51 37 88q35 35 88 35t88 -35l79 -78l78 78q35 35 88.5 35t88.5 -35q36 -36 36 -88q0 -53 -36 -89l-79 -78l79 -78q36 -36 36 -89z +M292 241l137 -137q12 -12 29.5 -12t29.5 12t12 29q0 18 -12 30l-137 137l137 137q12 12 12 30q0 17 -12 29t-29.5 12t-29.5 -12l-137 -137l-138 137q-12 12 -29 12t-29 -12q-13 -13 -13 -29q0 -17 13 -30l137 -137l-137 -137q-13 -13 -13 -30q0 -16 13 -29q12 -12 29 -12 +t29 12z" /> + <glyph glyph-name="glyph290" unicode="&#xe122;" horiz-adv-x="500" +d="M476 526q25 -25 25 -59t-25 -59l-108 -108l108 -108q25 -25 25 -59t-25 -59q-24 -24 -59 -24t-59 24l-108 108l-108 -108q-24 -24 -59 -24t-59 24q-25 25 -25 59t25 59l108 108l-108 108q-25 25 -25 59t25 59q24 25 59 25t59 -25l108 -108l108 108q24 25 59 25t59 -25z +" /> + <glyph glyph-name="glyph291" unicode="&#xe123;" horiz-adv-x="625" +d="M583 508q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5v-333q0 -69 -48.5 -118t-117.5 -49h-209q-69 0 -117.5 49t-48.5 118v333q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h41v42q0 34 24.5 58.5t59.5 24.5h291q35 0 59.5 -24.5t24.5 -58.5v-42h41zM167 550v-42 +h291v42h-291zM500 92v333h-375v-333q0 -35 24.5 -59.5t58.5 -24.5h209q34 0 58.5 24.5t24.5 59.5zM188 362q8 0 14 -6t6 -14v-250q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM271 362q8 0 14.5 -6t6.5 -14v-250q0 -8 -6.5 -14.5t-14.5 -6.5 +t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM354 362q8 0 14.5 -6t6.5 -14v-250q0 -8 -6.5 -14.5t-14.5 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6zM438 362q8 0 14 -6t6 -14v-250q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v250q0 8 6.5 14t14.5 6z" /> + <glyph glyph-name="glyph292" unicode="&#xe124;" +d="M741 76q17 -22 4 -45t-37 -23h-291v-125q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v125h-291q-24 0 -37 23t4 45l113 141h-39q-23 0 -36 21t2 44q292 417 293 418q12 16 33 16.5t34 -17.5l292 -417q14 -23 1.5 -44t-35.5 -21h-39zM417 92h205l-113 140q-17 22 -4 45 +t37 23h45l-212 302l-212 -302h45q24 0 37 -23t-4 -45l-113 -140h205v208q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-208z" /> + <glyph glyph-name="glyph293" unicode="&#xe125;" +d="M749 92l1 -209q0 -17 -12.5 -29t-29.5 -12h-666q-17 0 -29.5 12t-12.5 29v209q0 5 2 13l83 250q6 17 24 25q-28 37 -25 83.5t36 79.5l255 255l255 -255q33 -33 36 -79.5t-25 -83.5q17 -8 23 -25l84 -250q1 -4 1 -13zM179 484q-12 -12 -12 -29.5t12 -29.5t29.5 -12 +t29.5 12l95 95v-241q0 -17 12.5 -29t29.5 -12t29.5 12t12.5 29v241l95 -95q12 -12 29.5 -12t29.5 12t12 29.5t-12 29.5l-196 196zM155 300l-69 -208h578l-69 208h-95v-21q0 -52 -36.5 -88.5t-88.5 -36.5t-88.5 36.5t-36.5 88.5v21h-95zM83 -75h584v125h-584v-125z" /> + <glyph glyph-name="glyph294" unicode="&#xe126;" +d="M749 133l1 -208q0 -17 -12.5 -29.5t-29.5 -12.5h-666q-17 0 -29.5 12.5t-12.5 29.5q0 208 1 208q0 9 1 13l84 250q10 29 39 29h167v-83h-137l-69 -209h578l-69 209h-137v83h167q29 0 39 -29l84 -250q1 -4 1 -13zM542 471q-19 0 -30 11l-95 96v-278q0 -17 -12.5 -29.5 +t-29.5 -12.5t-29.5 12.5t-12.5 29.5v278l-95 -96q-11 -11 -30 -11q-18 0 -29 11q-12 12 -12 29.5t12 29.5l196 197l196 -197q12 -12 12 -29.5t-12 -29.5q-11 -11 -29 -11z" /> + <glyph glyph-name="glyph295" unicode="&#xe127;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM625 92q-17 0 -29.5 12t-12.5 29v250q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-250q0 -17 -12.5 -29t-29.5 -12zM250 550q-52 0 -88.5 -36.5 +t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5t-99.5 18.5zM250 175 +q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph296" unicode="&#xe128;" horiz-adv-x="792" +d="M458 425q0 -86 -61 -147t-147 -61t-147 61t-61 147t61 147t147 61t147 -61t61 -147zM250 -75q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25zM750 300q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12h-83 +v-84q0 -17 -12.5 -29t-29.5 -12t-29.5 12t-12.5 29v84h-83q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h83v83q0 17 12.5 29.5t29.5 12.5t29.5 -12.5t12.5 -29.5v-83h83z" /> + <glyph glyph-name="glyph297" unicode="&#xe129;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM250 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147 +t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5t-99.5 18.5zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph298" unicode="&#xe12a;" horiz-adv-x="792" +d="M750 217h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h250q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29t-29.5 -12zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58 +t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph299" unicode="&#xe12b;" horiz-adv-x="500" +d="M250 550q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM250 92q-59 0 -101 -18t-58 -43q60 -23 159 -23t158 23q-17 24 -58.5 42.5 +t-99.5 18.5zM250 175q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58q0 66 69 116.5t181 50.5z" /> + <glyph glyph-name="glyph300" unicode="&#xe12c;" horiz-adv-x="500" +d="M250 633q86 0 147 -61t61 -147t-61 -147t-147 -61t-147 61t-61 147t61 147t147 61zM0 8q0 66 69 116.5t181 50.5q109 0 179.5 -50.5t70.5 -116.5q0 -33 -71.5 -58t-178.5 -25q-112 0 -181 25t-69 58z" /> + <glyph glyph-name="glyph301" unicode="&#xe12d;" horiz-adv-x="667" +d="M238 617q-20 20 -38 54l-4 4q-8 8 0 8q0 8 8 0l4 -4l38 -50h4q45 17 67 17q53 0 100 -17q0 -3 2 -1l2 1l37 54q9 9 13 5q7 -6 0 -13q-1 -1 -38 -54l-4 -4l17 -9q59 -37 79 -83q11 -24 17 -54q0 -4 -4 -4h-409q-4 0 -4 4q6 56 46 96q27 33 62 50h5zM425 583 +q-13 0 -22.5 -10.5t-6.5 -22.5q0 -15 10 -24t23 -9q12 0 20.5 10t8.5 23q0 15 -10 24t-23 9zM246 583q-13 0 -23.5 -10t-10.5 -23t11 -23t27 -10q12 0 20.5 10t8.5 23q0 15 -10 24t-23 9zM42 425q16 0 28.5 -13t12.5 -29v-208q0 -16 -12.5 -29t-28.5 -13t-29 13t-13 29v208 +q0 16 13 29t29 13zM625 425q16 0 29 -13t13 -29v-208q0 -16 -13 -29t-29 -13t-29 13t-13 29v208q0 16 13 29t29 13zM125 92v333h417v-333q0 -16 -13 -29t-29 -13h-42v-125q0 -16 -12.5 -29t-28.5 -13t-29 13t-13 29v125h-83v-125q0 -16 -13 -29t-29 -13t-29 13t-13 29v125 +h-41q-16 0 -29 13t-13 29z" /> + <glyph glyph-name="glyph302" unicode="&#xe12e;" horiz-adv-x="661" +d="M323 525q-4 67 38 125l116 67q5 -67 -37 -125zM548 292q0 -56 31 -100t82 -63q-7 -30 -46 -96q-29 -41 -42 -54q-46 -62 -112 -50q-17 2 -47.5 21t-44.5 21q-30 6 -54 0q-17 -4 -52.5 -24t-47.5 -22q-7 0 -18 2t-15 2q-55 27 -88 71q-20 30 -42 75q-31 60 -41 108 +q-15 58 -9 134q3 36 19 72.5t36 56.5q29 36 66 50q29 12 88 12q15 -2 57 -19.5t72 -17.5q26 0 75.5 18.5t78.5 18.5q49 0 100 -29l38 -37q-38 -25 -61 -65t-23 -85z" /> + <glyph glyph-name="glyph303" unicode="&#xe12f;" +d="M292 279v-246q0 -6 -6 -11t-15 -5l-250 29q-21 7 -21 25v208q0 9 6 15t15 6h250q9 0 15 -6t6 -15zM354 300l375 -4q9 0 15 -6t6 -15v-292q0 -6 -6 -11t-15 -5l-375 41q-21 7 -21 25v246q0 9 6 15t15 6zM292 604v-242q0 -20 -21 -20h-250q-21 0 -21 20v209q0 9 6 15t15 6 +l250 29q9 3 15 -2.5t6 -14.5zM354 629l375 38q9 3 15 -2.5t6 -14.5v-292q0 -20 -21 -20h-375q-21 0 -21 20v246q0 9 6 17t15 8z" /> + <glyph glyph-name="glyph304" unicode="&#xe130;" horiz-adv-x="833" +d="M167 342q0 41 41 41q42 0 42 -41q0 -42 -42 -42q-41 0 -41 42zM583 592q48 0 83.5 -32t40.5 -77l71 23q20 7 37.5 -6t17.5 -33v-250q0 -20 -17 -33.5t-38 -6.5l-71 24q-6 -45 -41 -77t-83 -32h-83v-43q0 -50 -37 -87t-88 -37t-85.5 34.5t-39.5 85.5v47h-125q-51 0 -88 37 +t-37 88v250q0 51 37 88t88 37h458zM375 8q16 0 29 12.5t13 28.5v84h-84v-84q2 -17 13.5 -29t28.5 -12zM583 175q18 0 30 12t12 30v250q0 17 -12.5 29t-29.5 12h-458q-17 0 -29.5 -12t-12.5 -29v-250q0 -17 12.5 -29.5t29.5 -12.5h458zM750 275v134l-83 -25v-84q5 0 83 -25z +" /> + <glyph glyph-name="glyph305" unicode="&#xe131;" horiz-adv-x="875" +d="M833 508q18 0 30 -12t12 -29v-334q0 -17 -12 -29t-30 -12q-10 0 -18 4l-107 53v-16q0 -52 -36.5 -88.5t-88.5 -36.5h-458q-52 0 -88.5 36.5t-36.5 88.5v334q0 52 36.5 88.5t88.5 36.5h458q52 0 88.5 -36.5t36.5 -88.5v-16l107 53q8 4 18 4zM208 238q26 0 44.5 18t18.5 44 +t-18.5 44t-44.5 18t-44 -18t-18 -44t18 -44t44 -18z" /> + <glyph glyph-name="glyph306" unicode="&#xe132;" horiz-adv-x="660" +d="M422 557q31 0 54.5 -23.5t23.5 -66.5v-417q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM125 175q37 0 84.5 -14t82.5 -34v262 +q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3zM554 371q12 12 29.5 12t29.5 -12q47 -47 47 -113q0 -65 -47 -112q-13 -13 -30 -13q-16 0 -29 13 +q-12 12 -12 29t12 29q22 22 22 54t-22 54q-12 12 -12 29.5t12 29.5z" /> + <glyph glyph-name="glyph307" unicode="&#xe133;" horiz-adv-x="625" +d="M613 579q12 -12 12 -29t-12 -29l-113 -113v-358q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-29 20 -79 32l-105 -105q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5l64 64q-34 14 -55 45.5t-21 69.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74 +q28 19 56 19q47 0 67 -42l65 64q12 12 29.5 12t29.5 -12zM416 472q-14 -9 -41.5 -27.5t-41.5 -27.5v-88l84 84v54zM83 300v-83q0 -17 12.5 -29.5t29.5 -12.5q21 0 49 -5l118 118v101q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5zM221 158q40 -12 71 -31 +v102zM416 45l1 5v304l-84 -83v-171l79 -52z" /> + <glyph glyph-name="glyph308" unicode="&#xe134;" horiz-adv-x="895" +d="M613 371q47 -47 47 -113q0 -65 -47 -112q-13 -13 -30 -13q-16 0 -29 13q-12 12 -12 29t12 29q22 22 22 54t-22 54q-12 12 -12 29.5t12 29.5t29.5 12t29.5 -12zM696 454q81 -81 81 -195q0 -116 -81 -197q-12 -12 -29 -12q-18 0 -30 12t-12 29.5t12 29.5q56 56 56 137.5 +t-56 137.5q-12 12 -12 29t12 29t29.5 12t29.5 -12zM779 538q116 -114 116 -279q0 -164 -116 -280q-12 -12 -29 -12t-29 12t-12 29.5t12 29.5q91 91 91 221q0 129 -91 220q-12 12 -12.5 29.5t11.5 29.5t29.5 12t29.5 -12zM422 557q31 0 54.5 -23.5t23.5 -66.5v-417 +q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM125 175q37 0 84.5 -14t82.5 -34v262q-35 -20 -82.5 -33.5t-84.5 -13.5q-17 0 -29.5 -12.5 +t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3z" /> + <glyph glyph-name="glyph309" unicode="&#xe135;" horiz-adv-x="500" +d="M422 557q31 0 54.5 -23.5t23.5 -66.5v-417q0 -43 -23.5 -67t-54.5 -24q-28 0 -56 19l-111 74q-23 16 -62.5 28t-67.5 12q-52 0 -88.5 36.5t-36.5 88.5v83q0 52 36.5 88.5t88.5 36.5q29 0 68 11.5t62 27.5l111 74q28 19 56 19zM292 127v262q-35 -20 -82.5 -33.5 +t-84.5 -13.5q-17 0 -29.5 -12.5t-12.5 -29.5v-83q0 -17 12.5 -29.5t29.5 -12.5q37 0 84.5 -14t82.5 -34zM417 50v417l-1 5q-14 -9 -41.5 -27.5t-41.5 -27.5v-317l79 -52l4 -3z" /> + <glyph glyph-name="glyph310" unicode="&#xe136;" horiz-adv-x="819" +d="M410 570q-39 0 -65 -44l-246 -410q-26 -44 -8.5 -76t69.5 -32h500q52 0 69 32t-9 76l-246 410q-26 44 -64 44zM410 654q85 0 135 -85l247 -411q50 -84 9 -159q-41 -74 -141 -74h-500q-99 0 -142 74q-42 74 9 159l247 411q50 85 136 85zM355 133q0 55 55 55q54 0 54 -55 +q0 -54 -54 -54q-55 0 -55 54zM472 383q0 -11 -5 -23l-57 -143q-35 86 -58 143q-5 12 -5 23q0 26 18.5 44.5t44.5 18.5t44 -18.5t18 -44.5z" /> + <glyph glyph-name="glyph311" unicode="&#xe137;" horiz-adv-x="819" +d="M792 158q51 -85 9 -159q-41 -74 -141 -74h-500q-101 0 -142 74q-42 74 9 159l247 411q50 85 136 85q85 0 135 -85zM410 69q27 0 45.5 18.5t18.5 45.5t-18.5 46t-45.5 19t-46 -19t-19 -46t19 -45.5t46 -18.5zM478 378q4 11 4 26q0 30 -21 51.5t-51 21.5t-51.5 -21.5 +t-21.5 -51.5q0 -14 5 -27l58 -143q4 -7 10 -7t9 7q59 143 59 144z" /> + <glyph glyph-name="glyph312" unicode="&#xe138;" horiz-adv-x="583" +d="M292 258q-17 0 -29.5 12.5t-12.5 29.5v83q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-41h42q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5h-83zM500 504q83 -85 83 -204t-83 -204v-88q0 -52 -36.5 -88.5t-88.5 -36.5h-167q-52 0 -88.5 36.5t-36.5 88.5v88 +q-83 85 -83 204t83 204v88q0 52 36.5 88.5t88.5 36.5h167q52 0 88.5 -36.5t36.5 -88.5v-88zM167 592v-76q60 34 125 34t125 -34v76q0 17 -12.5 29t-29.5 12h-167q-17 0 -29 -12t-12 -29zM417 8v76q-60 -34 -125 -34t-125 34v-76q0 -17 12 -29t29 -12h167q17 0 29.5 12 +t12.5 29zM292 92q86 0 147 61t61 147t-61 147t-147 61t-147.5 -61t-61.5 -147t61.5 -147t147.5 -61z" /> + <glyph glyph-name="glyph313" unicode="&#xe139;" +d="M625 560q51 0 88 -37t37 -88q0 -48 -32 -83q32 -35 32 -84q0 -48 -32 -83q32 -35 32 -83q0 -52 -37 -89q-88 -88 -213 -88t-213 88q-15 15 -37 15t-37 -15q-36 -36 -88 -36q-51 0 -88 37t-37 88q0 48 32 83q-32 35 -32 83q0 49 32 84q-32 35 -32 83q0 51 37 88 +q89 89 213 89t213 -89q15 -15 37 -15t37 15q37 37 88 37zM654 72q12 12 12 29.5t-12 29.5t-29 12t-29 -12q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q40 40 96 40t96 -40q64 -64 154 -64t154 64zM96 464q-12 -12 -12 -29 +t12 -29q13 -13 29 -13t29 13q39 39 96 39t96 -39q64 -64 154 -64t154 64q12 12 12 29t-12 29q-13 13 -29 13t-29 -13q-39 -39 -96 -39t-96 39q-64 64 -154 64t-154 -64zM654 239q12 12 12 29.5t-12 29.5t-29 12t-29 -12q-40 -40 -96 -40t-96 40q-64 64 -154 64t-154 -64 +q-12 -12 -12 -29.5t12 -29.5t29 -12t29 12q39 39 96 39t96 -39q64 -64 154 -64t154 64z" /> + <glyph glyph-name="glyph314" unicode="&#xe13a;" horiz-adv-x="583" +d="M417 8q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5q-64 -64 -154 -64zM417 175q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40 +q-12 -12 -29.5 -12t-29.5 12t-12 29.5t12 29.5q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29.5t-12 -29.5q-64 -64 -154 -64zM417 342q-91 0 -155 64q-40 40 -95.5 40t-95.5 -40q-12 -12 -29.5 -12t-29.5 12t-12 29t12 29 +q64 64 154.5 64t154.5 -64q40 -40 95.5 -40t95.5 40q12 12 29.5 12t29.5 -12t12 -29t-12 -29q-64 -64 -154 -64z" /> + <glyph glyph-name="glyph315" unicode="&#xe13b;" horiz-adv-x="833" +d="M625 8h-458q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v6q0 104 73.5 177t176.5 73q80 0 144.5 -46.5t90.5 -121.5q92 7 157.5 -54.5t65.5 -152.5q0 -86 -61 -147.5t-147 -61.5zM163 259q-32 0 -56 -25t-24 -59t24.5 -58.5t59.5 -24.5h458q52 0 88.5 36.5t36.5 88.5 +t-36.5 88.5t-88.5 36.5q-15 0 -34 -6l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -50z" /> + <glyph glyph-name="glyph316" unicode="&#xe13c;" horiz-adv-x="833" +d="M542 -117q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-250q0 -17 -12 -29.5t-29 -12.5zM292 -117q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29.5t29.5 12.5t29 -12.5t12 -29.5v-250q0 -17 -12 -29.5t-29 -12.5zM417 -200 +q-17 0 -29.5 12.5t-12.5 29.5v250q0 17 12.5 29t29.5 12t29 -12t12 -29v-250q0 -17 -12 -29.5t-29 -12.5zM167 50q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -70 -42.5 -125.5t-109.5 -74.5 +q-17 -5 -32.5 4t-19.5 25q-5 17 4 32t25 19q41 11 66.5 44.5t25.5 75.5q0 52 -36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l10 -50h-59q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5t59.5 -24.5 +q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5z" /> + <glyph glyph-name="glyph317" unicode="&#xe13d;" horiz-adv-x="473" +d="M160 -33q-54 0 -105 18l-55 21l37 45q81 99 81 228t-81 228l-37 46l55 20q54 19 105 19q129 0 221 -92t92 -221t-92 -220.5t-221 -91.5zM139 51q7 -1 21 -1q94 0 161.5 67t67.5 162t-67.5 162t-161.5 67q-14 0 -21 -1q63 -106 63 -228t-63 -228z" /> + <glyph glyph-name="glyph318" unicode="&#xe13e;" horiz-adv-x="912" +d="M562 675l-41 -125l-42 125q-6 17 2.5 33.5t25.5 22.5q23 8 43.5 -10t11.5 -46zM786 548l-118 -59l59 118q8 16 25.5 21.5t33.5 -2.5q25 -13 24 -39.5t-24 -38.5zM854 300l-125 42l125 41q17 6 33.5 -2t22.5 -25q8 -23 -10 -44t-46 -12zM315 607l59 -118l-118 59 +q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24zM699 286q60 -23 97 -75.5t37 -118.5q0 -86 -61 -147.5t-147 -61.5h-458q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v6q0 50 18 94q-24 22 -7 53t53 19q76 84 186 84l6 -1q55 63 140 63q77 0 132 -55t55 -132q0 -29 -9 -56z +M521 446q-44 0 -76 -34q88 -31 123 -121q21 6 47 8q10 22 10 43q0 43 -30.5 73.5t-73.5 30.5zM625 -33q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-15 0 -34 -6l-12 -1q-33 0 -41 38q-11 58 -56 96t-104 40l-3 -1q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -50 +l-59 1q-32 0 -56 -25t-24 -59t24.5 -58.5t59.5 -24.5h458z" /> + <glyph glyph-name="glyph319" unicode="&#xe13f;" horiz-adv-x="833" +d="M625 50q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l10 -50h-59q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5 +t59.5 -24.5q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -86 -61 -147t-147 -61zM354 50l42 125l42 -125q6 -17 -2.5 -33.5t-25.5 -22.5 +q-23 -8 -44 10t-12 46zM479 -33l42 125l41 -125q6 -17 -2 -33.5t-25 -22.5q-23 -8 -44 10t-12 46zM229 -33l42 125l41 -125q6 -17 -2 -33.5t-25 -22.5q-23 -8 -44 10t-12 46z" /> + <glyph glyph-name="glyph320" unicode="&#xe140;" horiz-adv-x="689" +d="M654 169q18 -4 28 -18.5t6 -32.5q-5 -26 -32 -33.5t-44 12.5l-69 78l17 -61q4 -16 -4.5 -31t-25.5 -20l-11 -2q-14 0 -25 8.5t-15 22.5l-17 63q-26 -21 -51 -30l46 -46q12 -12 12 -29t-12 -29q-13 -13 -29 -13q-17 0 -30 13l-29 29h-10l27 -83q6 -17 -2.5 -33.5 +t-25.5 -22.5q-23 -8 -43.5 10t-11.5 46l28 83h-11l-29 -29q-12 -12 -29.5 -12t-29.5 12t-12 29t12 29l46 46q-25 9 -51 30l-17 -63q-4 -14 -15 -22.5t-25 -8.5l-11 2q-16 4 -25 19t-4 32l16 62l-69 -79q-12 -13 -30.5 -14t-31.5 11q-14 12 -15 30t11 32q10 10 24 13l102 21 +l-61 17q-17 5 -25.5 20t-4.5 31t19 25t32 4l63 -16q-3 15 -3 29t3 29l-63 -16l-11 -2q-14 0 -25 8.5t-15 22.5q-4 16 4.5 31t25.5 20l61 17l-102 21q-18 4 -28 18.5t-6 32.5q5 26 32 33.5t44 -12.5l69 -79l-16 62q-5 17 4 32t25 19q17 5 32 -4t19 -25l17 -63q26 21 51 30 +l-46 46q-12 12 -12 29t12 29t29.5 12t29.5 -12l45 -45l-33 99q-6 17 2.5 33.5t25.5 22.5q23 8 43.5 -10t11.5 -46l-33 -99l45 45q12 12 29.5 12t29.5 -12t12 -29t-12 -29l-46 -46q25 -9 51 -30l17 63q4 16 19 25t32 4t25.5 -20t4.5 -31l-17 -61l69 78q12 13 30.5 14 +t31.5 -11q14 -12 15 -30t-11 -32q-10 -10 -24 -13l-102 -21l62 -17q16 -4 25 -19t4 -32q-4 -14 -15 -22.5t-25 -8.5l-11 2l-63 16q3 -15 3 -29t-3 -29l63 16q17 5 32 -4t19 -25q5 -17 -4 -32t-25 -19l-62 -17zM345 196q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 +t-74 -30.5t-31 -73.5t31 -73.5t74 -30.5z" /> + <glyph glyph-name="glyph321" unicode="&#xe141;" horiz-adv-x="833" +d="M625 50q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5q-18 0 -34 -5l-45 -13l-7 46q-11 60 -57 99.5t-107 39.5q-69 0 -118 -49t-49 -118q0 -11 4 -33l11 -52l-60 2q-32 0 -56 -24.5t-24 -58.5q0 -35 24.5 -59.5 +t59.5 -24.5q17 0 29 -12t12 -29t-12 -29.5t-29 -12.5q-69 0 -118 49t-49 118q0 58 35 102.5t90 58.5v5q0 103 73.5 176.5t176.5 73.5q81 0 145 -46t90 -121q91 7 157 -55t66 -153q0 -86 -61 -147t-147 -61zM443 217l-62 -146l125 -61l-188 -168l63 146l-125 60z" /> + <glyph glyph-name="glyph322" unicode="&#xe142;" horiz-adv-x="783" +d="M433 633l-41 -122l-42 122q-6 17 2 33.5t25 22.5q24 8 45 -9.5t11 -46.5zM58 342l122 -42l-122 -42q-17 -6 -33.5 2.5t-22.5 25.5q-8 24 9.5 45t46.5 11zM350 -33l42 122l41 -122q6 -17 -2 -33.5t-25 -22.5q-24 -8 -45 9.5t-11 46.5zM725 258l-122 42l122 42 +q17 6 33.5 -2.5t22.5 -25.5q8 -24 -9.5 -45t-46.5 -11zM185 565l57 -116l-116 57q-17 8 -22.5 25t2.5 34q13 25 40 24t39 -24zM126 94l116 57l-57 -116q-8 -17 -25 -22.5t-34 2.5q-25 13 -24 40t24 39zM598 35l-57 116l116 -57q17 -8 22.5 -25t-2.5 -34q-13 -25 -40 -24 +t-39 24zM657 506l-116 -57l57 116q8 17 25 22.5t34 -2.5q25 -13 24 -40t-24 -39zM392 112q-77 0 -132.5 55.5t-55.5 132.5t55.5 132.5t132.5 55.5t132 -55.5t55 -132.5t-55 -132.5t-132 -55.5zM392 404q-43 0 -74 -30.5t-31 -73.5t31 -73.5t74 -30.5t73.5 30.5t30.5 73.5 +t-30.5 73.5t-73.5 30.5z" /> + <glyph glyph-name="glyph323" unicode="&#xe143;" horiz-adv-x="833" +d="M117 144q-9 0 -17 3q-46 20 -73 61.5t-27 91.5q0 58 35 102.5t90 58.5v6q0 103 73.5 176.5t176.5 73.5q92 0 161.5 -59t84.5 -150q3 -17 -7 -31t-27 -17q-17 -2 -31 7.5t-17 26.5q-11 60 -57 99.5t-107 39.5q-69 0 -118 -48.5t-49 -117.5q0 -12 4 -34l10 -53l-59 4 +q-32 0 -56 -25t-24 -59q0 -25 13.5 -45.5t36.5 -30.5q20 -9 24 -28.5t-7.5 -35.5t-32.5 -16zM708 508q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-91q8 -21 8 -41q0 -52 -36.5 -88.5t-88.5 -36.5h-208q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29.5t29.5 -12.5 +t29 -12t12 -29t-12 -29.5t-29 -12.5q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5t88.5 36.5h208q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12h-192q-17 0 -29 12.5t-12 29.5t12 29.5t29 12.5h400q17 0 29.5 12t12.5 29t-12.5 29.5t-29.5 12.5t-29 12.5t-12 29.5t12 29t29 12z +" /> + <glyph glyph-name="glyph324" unicode="&#xe144;" horiz-adv-x="725" +d="M600 592q52 0 88.5 -36.5t36.5 -88.5t-36.5 -88.5t-88.5 -36.5h-91q8 -21 8 -42q0 -52 -36.5 -88.5t-88.5 -36.5h-267q-17 0 -29.5 -12.5t-12.5 -29.5t12.5 -29t29.5 -12t29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5q-52 0 -88.5 36.5t-36.5 88.5t36.5 88.5 +t88.5 36.5h267q17 0 29 12.5t12 29.5t-12 29.5t-29 12.5h-250q-17 0 -29.5 12t-12.5 29t12.5 29.5t29.5 12.5h458q17 0 29.5 12.5t12.5 29.5t-12.5 29t-29.5 12t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" /> + <glyph glyph-name="glyph325" unicode="&#xe145;" horiz-adv-x="763" +d="M763 352q0 -64 -44 -108l-232 -236q-24 -25 -47.5 -33t-57.5 -8q-65 0 -110 50l-240 241q-13 13 -22.5 39t-9.5 51q0 48 29 87q23 25 31 31q139 117 321.5 117t321.5 -117q13 -10 22 -20q38 -36 38 -94zM382 50q26 0 44 18t18 44t-18 44.5t-44 18.5t-44.5 -18.5 +t-18.5 -44.5t18.5 -44t44.5 -18zM544 186q18 18 18 44.5t-18 44.5q-67 67 -162.5 67t-162.5 -67q-18 -18 -18 -44.5t18 -44.5t44.5 -18t44.5 18q31 31 73.5 31t73.5 -31q18 -18 44 -18q27 0 45 18zM661 304q18 18 18 44.5t-18 44.5q-115 115 -279 115t-280 -115 +q-18 -18 -18 -44.5t18 -44.5t44 -18t44 18q80 80 192 80t191 -80q18 -18 44 -18t44 18z" /> + <glyph glyph-name="glyph326" unicode="&#xe146;" horiz-adv-x="874" +d="M496 -9q-24 -25 -58.5 -24.5t-59.5 24.5t-25 58.5t25 59.5q24 25 58.5 25t59.5 -25q25 -24 25 -59t-25 -59zM790 320q-33 0 -58 25q-122 121 -295 121t-295 -121q-25 -25 -59 -24.5t-59 24.5q-25 25 -25 58.5t25 58.5q112 112 262 151.5t300.5 0t262.5 -151.5 +q25 -25 25 -58.5t-25 -58.5t-59 -25zM260 143q-34 0 -59 25t-25 59t25 59q64 64 150 86.5t172 0t150 -86.5q25 -25 25 -59t-25 -59t-59 -25t-59 25q-49 49 -118 49t-118 -49q-25 -25 -59 -25z" /> + <glyph glyph-name="glyph327" unicode="&#xe147;" horiz-adv-x="464" +d="M464 407q0 -85 -54.5 -149.5t-136.5 -78.5l1 -4v-167h41q17 0 29.5 -12t12.5 -29t-12.5 -29.5t-29.5 -12.5h-166q-17 0 -29.5 12.5t-12.5 29.5t12.5 29t29.5 12h41v167l1 4q-82 14 -136.5 78.5t-54.5 149.5q0 47 10 106.5t18 92t11 39.5q4 13 15 21.5t25 8.5h306 +q14 0 25 -8.5t15 -21.5q3 -7 11 -39.5t18 -92t10 -106.5zM232 258q55 0 96.5 35.5t49.5 89.5h-292q8 -54 49.5 -89.5t96.5 -35.5zM84 425h296q-4 79 -27 167h-242q-23 -88 -27 -167z" /> + <glyph glyph-name="glyph328" unicode="&#xe148;" +d="M375 717q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM375 467q0 -35 -4.5 -60.5t-10.5 -37.5t-12 -18.5t-10 -7.5l-5 -1v125q0 34 16.5 58.5t46.5 24.5q27 0 43 20.5t19 50.5q-39 12 -83 12q-84 0 -153 -42.5t-106 -114.5 +q16 -15 46.5 -46t45.5 -47q0 5 1 12t11.5 18.5t29.5 11.5v-83l83 -84v-83q39 0 56 -0.5t36.5 -4.5t26 -13t6.5 -24q26 13 35.5 18t22.5 16.5t15.5 17.5t6.5 26t4 36v53l41 42l-41 41v-83h-42q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5t12 29.5t29 12.5v125 +q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29zM500 383q0 16 12 29t30 13q17 0 29 -12l42 -42q12 -12 12 -29.5t-12 -29.5l-30 -29q-1 -90 -17.5 -120.5t-88.5 -66.5q-8 -4 -18 -4q-17 0 -28.5 11t-13.5 27q-11 3 -84 3q-17 0 -29 12.5t-12 29.5v66l-193 193q-16 -46 -16 -92 +q0 -121 85.5 -206.5t206.5 -85.5t206.5 85.5t85.5 206.5q0 87 -46.5 158t-122.5 106q-8 -44 -35 -70q37 -25 37 -69v-84z" /> + <glyph glyph-name="glyph329" unicode="&#xe149;" +d="M375 717q155 0 265 -110t110 -265t-110 -265t-265 -110t-265 110t-110 265t110 265t265 110zM458 633v31q-42 11 -83 11q-75 0 -140.5 -31t-112.5 -86l-22 -28l-15 -24l123 -123q0 5 1 12t11.5 18.5t29.5 11.5v-83l83 -84v-83q39 0 56 -0.5t36.5 -4.5t26 -13t6.5 -24 +q26 13 35.5 18t22.5 16.5t15.5 17.5t6.5 26t4 36v53l41 42l-41 41v-83h-42q0 -17 -12.5 -29.5t-29.5 -12.5t-29 12.5t-12 29.5t12 29.5t29 12.5v125q0 17 -12 29t-29 12t-29.5 -12t-12.5 -29q0 -35 -4.5 -60.5t-10.5 -37.5t-12 -18.5t-10 -7.5l-5 -1v125q0 34 16.5 58.5 +t46.5 24.5t46 24.5t16 58.5z" /> + <glyph glyph-name="glyph330" unicode="&#xe14a;" horiz-adv-x="700" +d="M396 342q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5h-84v-83q0 -8 -6 -14.5t-14 -6.5t-14.5 6.5t-6.5 14.5v83h-83q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h83v83q0 8 6.5 14.5t14.5 6.5t14 -6.5t6 -14.5v-83h84zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5 +q-49 0 -88 33l-100 99q-48 -15 -90 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -43 -15 -91zM499 181q-27 -41 -68 -68l105 -104q15 -13 34 -13q20 0 33.5 14t13.5 33q0 21 -14 33zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5 +t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph331" unicode="&#xe14b;" horiz-adv-x="700" +d="M396 342q9 0 15 -6t6 -15t-6 -15t-15 -6h-84v-83q0 -21 -20 -21q-9 0 -15 6t-6 15v83h-84q-20 0 -20 21t20 21h84v83q0 9 6 15t15 6q20 0 20 -21v-83h84zM600 199q10 -10 30.5 -31.5t31.5 -32.5q38 -38 38 -92t-38 -92.5t-92 -38.5q-55 0 -93 38l-94 94q-48 -15 -91 -15 +q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -46 -14 -91zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph332" unicode="&#xe14c;" horiz-adv-x="700" +d="M396 300h-208q-8 0 -14.5 6.5t-6.5 14.5t6.5 14.5t14.5 6.5h208q8 0 14.5 -6.5t6.5 -14.5t-6.5 -14.5t-14.5 -6.5zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5q-49 0 -88 33l-100 99q-48 -15 -90 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206 +q0 -47 -15 -91zM499 181q-27 -41 -68 -68l105 -104q15 -13 34 -13q20 0 33.5 14t13.5 33q0 21 -14 33zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph333" unicode="&#xe14d;" horiz-adv-x="700" +d="M396 342q9 0 15 -6t6 -15t-6 -15t-15 -6h-208q-9 0 -15 6t-6 15t6 15t15 6h208zM662 135q38 -38 38 -92t-38 -92.5t-92 -38.5q-57 0 -93 38l-94 94q-48 -15 -91 -15q-121 0 -206.5 85.5t-85.5 206.5t85.5 206t206.5 85t206 -85t85 -206q0 -46 -14 -91q9 -9 26.5 -27 +t26.5 -27zM83 321q0 -86 61.5 -147.5t147.5 -61.5t147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147z" /> + <glyph glyph-name="glyph334" unicode="&#xe14e;" horiz-adv-x="700" +d="M409 467q-52 0 -88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5t88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5zM409 508q69 0 117.5 -48.5t48.5 -117.5t-48.5 -118t-117.5 -49t-118 49t-49 118t49 117.5t118 48.5zM0 64q0 54 38 92l94 95q-15 43 -15 91q0 121 85.5 206 +t206.5 85t206 -85t85 -206t-85 -206.5t-206 -85.5q-43 0 -91 15l-100 -99q-39 -33 -88 -33q-54 0 -92 38.5t-38 92.5zM269 134q-41 27 -68 68l-104 -105q-14 -12 -14 -33q0 -20 14 -34t33 -14q18 0 34 14zM409 133q86 0 147 61.5t61 147.5t-61 147t-147 61t-147.5 -61 +t-61.5 -147t61.5 -147.5t147.5 -61.5z" /> + <glyph glyph-name="glyph335" unicode="&#xe14f;" horiz-adv-x="700" +d="M409 633q121 0 206 -85t85 -206t-85 -206.5t-206 -85.5q-43 0 -91 15l-97 -97q-40 -35 -91 -35q-54 0 -92 38.5t-38 92.5t37 91q42 43 63 64l32 32q-15 48 -15 91q0 121 85.5 206t206.5 85zM409 133q86 0 147 61.5t61 147.5t-61 147t-147 61t-147.5 -61t-61.5 -147 +t61.5 -147.5t147.5 -61.5zM409 508q69 0 117.5 -48.5t48.5 -117.5t-48.5 -118t-117.5 -49t-118 49t-49 118t49 117.5t118 48.5zM409 217q52 0 88.5 36.5t36.5 88.5t-36.5 88.5t-88.5 36.5t-88.5 -36.5t-36.5 -88.5t36.5 -88.5t88.5 -36.5z" /> + </font> +</defs></svg> diff --git a/assets/less/icons/typicons/typicons.ttf b/assets/less/icons/typicons/typicons.ttf new file mode 100644 index 0000000..f7df94b Binary files /dev/null and b/assets/less/icons/typicons/typicons.ttf differ diff --git a/assets/less/icons/typicons/typicons.woff b/assets/less/icons/typicons/typicons.woff new file mode 100644 index 0000000..14dc020 Binary files /dev/null and b/assets/less/icons/typicons/typicons.woff differ diff --git a/assets/less/menu.less b/assets/less/menu.less new file mode 100644 index 0000000..b64ce6b --- /dev/null +++ b/assets/less/menu.less @@ -0,0 +1,702 @@ + +@import "variables.less"; +@import "elements.less"; + + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ + + +.topbar { + + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; + + .topbar-left { + background: @bg-leftbar; + float: left; + text-align: center; + height: 70px; + position: relative; + width: 225px; + z-index: 1; + } +} + +.navbar-default { + background-color: #f3f3f3; + border-radius: 0; + border: none; + margin-bottom: 0; + padding: 0 20px; + + .navbar-left { + li { + a.menu-item{ + padding: 0 15px; + line-height: 68px; + } + } + } + +} + +.logo { + color: @white !important; + font-size: 24px; + text-transform: uppercase; + font-family: @font-secondary; + font-weight: 600; + letter-spacing: 1px; + line-height: 70px; + + i { + display: none; + } + + span { + span { + color: @custom; + } + } +} + +.user-box { + a.user-link{ + padding-top: 17px !important; + padding-bottom: 17px !important; + } + .user-img { + position: relative; + height: 36px; + width: 36px; + margin: 0px auto; + } +} + +.navbar-default { + .right-menu-item { + height: 36px; + width: 36px; + padding: 0; + font-size: 18px; + border: 2px solid #ccc !important; + line-height: 35px; + text-align: center; + border-radius: 50%; + margin: 17px 5px; + + .badge { + position: absolute; + top: -8px; + right: 0px; + } + } +} + +/* Notification */ +.notify-list { + h5 { + margin: 0 0 5px 0; + padding: 10px; + background-color: rgb(243, 243, 243); + text-align: center; + } + + .all-msgs { + a{ + color: @dark; + padding: 6px 10px; + display: block; + } + } +} + +.side-menu { + width: 225px; + padding-top: 10px; + z-index: 10; + background: @bg-leftbar; + bottom: 50px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; + top: 0; + box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + + .waves-effect { + .waves-ripple { + background-color: fade(@custom, 40%); + } + } +} + +.side-menu.left { + position: absolute; + top: 60px; + bottom: 0; +} + +body.fixed-left .side-menu.left { + bottom: 50px; + margin-bottom: -70px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; +} + +.content-page { + margin-left: 225px; + overflow: hidden; + + .content { + padding: 0 5px 10px 5px; + margin-top: 70px; + } +} + +.button-menu-mobile { + background: transparent; + border: none; + color: @dark; + padding: 0 20px; + display: inline-block; + + i { + font-size: 24px; + line-height: 70px; + } + + &:hover { + color: @custom; + } +} + +.sidebar-inner { + height: @height; +} + +#sidebar-menu, #sidebar-menu ul, #sidebar-menu li, #sidebar-menu a { + border: 0; + font-weight: normal; + line-height: 1; + list-style: none; + margin: 0; + padding: 0; + position: relative; + text-decoration: none; +} + +#sidebar-menu { + padding-bottom: 30px; + width: 100%; + + a { + line-height: 1.3; + } + + ul { + li { + .menu-arrow { + -webkit-transition: -webkit-transform .15s; + -o-transition: -o-transform .15s; + transition: transform .15s; + position: absolute; + right: 20px; + display: inline-block; + font-family: 'Material Design Icons'; + text-rendering: auto; + line-height: 18px; + font-size: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + + &:before { + content: "\F142"; + } + } + a.subdrop .menu-arrow { + -ms-transform: rotate(90deg); + -webkit-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } + } + ul { + display: none; + li { + border-top: 0; + } + li.active { + a { + color: @custom; + } + } + a { + color: @muted; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + border-left: 3px solid transparent; + display: block; + padding: 10px 20px 10px 59px; + font-size: 13px; + &:hover { + color: @white; + } + i { + margin-right: 5px; + } + } + ul { + a { + padding-left: 80px; + } + } + } + } + .label { + margin-top: 2px; + } + .subdrop { + color: @white !important; + background-color: darken(@bg-leftbar,2.5%); + } +} + + +#sidebar-menu > ul > li > a { + color: @muted; + display: block; + padding: 12px 20px; + margin: 2px 0; + + &:hover { + color: @white; + text-decoration: none; + background-color: darken(@bg-leftbar,2.5%); + } +} + +#sidebar-menu > ul > li > a > span { + vertical-align: middle; +} + +#sidebar-menu { + ul { + li { + a{ + i{ + display: inline-block; + font-size: 18px; + line-height: 17px; + margin-left: 3px; + margin-right: 15px; + text-align: center; + vertical-align: middle; + width: 20px; + } + + .drop-arrow { + float: right; + + i{ + margin-right: 0px; + } + } + } + } + } +} + + +#sidebar-menu > ul > li > a.active { + color: @white !important; + background-color: darken(@bg-leftbar,2.5%); +} + + +.menu-title { + padding: 12px 20px !important; + letter-spacing: .05em; + pointer-events: none; + cursor: default; + font-size: 11px; + text-transform: uppercase; + color: @muted; + font-family: @font-secondary; +} + +/* Help Box */ +.help-box { + color: fade(@white,50%); + padding: 20px; + margin: 20px; + border: 2px solid fade(@white,20%); + border-radius: 5px; + font-size: 12px; +} + + +#wrapper.enlarged { + .menu-title ,.menu-arrow,.help-box{ + display: none !important; + } + + #sidebar-menu { + ul { + ul { + margin-top: -2px; + padding-bottom: 5px; + padding-top: 5px; + z-index: 9999; + background-color: @bg-leftbar; + } + } + } + .left.side-menu { + width: 70px; + z-index: 5; + + #sidebar-menu > ul > li > a { + padding: 15px 20px; + &:hover { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:active { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:focus { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + + i { + margin-right: 20px !important; + font-size: 20px; + } + } + .label { + position: absolute; + top: 5px; + left: 35px; + text-indent: 0; + display: block !important; + padding: .2em .6em .3em !important; + } + #sidebar-menu { + ul > li { + position: relative; + white-space: nowrap; + &:hover > a { + position: relative; + width: 260px; + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:hover > ul { + display: block; + left: 70px; + position: absolute; + width: 190px; + a { + box-shadow: none; + padding-left: 15px; + position: relative; + width: 186px; + z-index: 6; + + &:hover { + color: @white; + } + } + } + &:hover { + a { + span { + display: inline; + } + } + } + } + + a.subdrop { + color: @white !important; + } + ul > li > ul { + display: none; + } + ul { + ul { + li { + &:hover > ul { + display: block; + left: 190px; + margin-top: -36px; + position: absolute; + width: 190px; + } + } + li > a { + span.pull-right { + -ms-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + position: absolute; + right: 20px; + top: 12px; + transform: rotate(270deg); + } + } + li.active { + a{ + color: @white; + } + } + } + } + ul > li > a { + span { + display: none; + padding-left: 10px; + } + } + } + .user-details { + display: none; + } + } + .content-page { + margin-left: 70px; + } + .footer { + left: 70px; + } + .topbar { + .topbar-left { + width: 70px !important; + .logo { + span { + display: none; + opacity: 0; + } + i { + display: block; + line-height: 70px; + color: @custom !important; + } + } + } + + } + #sidebar-menu > ul > li { + &:hover > a.open { + :after { + display: none; + } + } + &:hover > a.active { + :after { + display: none; + } + } + } +} + +#wrapper.right-bar-enabled { + .right-bar { + right: 0; + } + .left-layout { + left: 0; + } +} + +/* Right sidebar */ +.side-bar.right-bar { + float: right !important; + right: -266px; + top: 0px; +} + +.side-bar { + -moz-transition: all 200ms ease-out; + -webkit-transition: all 200ms ease-out; + background-color: @white; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + display: block; + float: left; + height: @height; + position: fixed; + transition: all 200ms ease-out; + width: 240px; +} + +.right-bar { + background: @white !important; + z-index: 999 !important; + h4 { + border-bottom: 1px solid fade(@muted,50%); + padding: 4px 10px 10px 18px; + text-transform: uppercase; + font-size: 14px; + letter-spacing: 0.03em; + } + .right-bar-toggle { + float: right; + line-height: 46px; + font-size: 20px; + color: #333; + padding: 0 10px; + } + .setting-list { + padding: 0 20px 20px 20px; + } +} + +.user-list { + .user-list-item { + padding: 10px 12px !important; + border-bottom: 1px solid #EEEEEE !important; + + .avatar { + float: left; + margin-right: 5px; + width: 30px; + height: 30px; + + img { + border-radius: 50%; + width: @width; + } + } + + .icon { + float: left; + margin-right: 5px; + height: 30px; + width: 30px; + border-radius: 50%; + text-align: center; + + i { + color: @white; + line-height: 30px; + font-size: 16px; + } + } + + .user-desc { + margin-left: 40px; + + span.name { + color: @dark; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 13px; + } + + + span.desc { + color: @muted; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 12px; + } + span.time { + font-size: 11px; + } + } + } +} + +/* Seach */ +.app-search { + position: relative; + + a { + position: absolute; + top: 7px; + right: 26px; + color: fade(@muted, 70%); + + &:hover { + color: @muted; + } + } + + .form-control, + .form-control:focus { + border: 1px solid fade(@muted, 15%); + font-size: 13px; + height: 34px; + color: @dark; + padding: 7px 40px 7px 20px; + margin: 19px 12px 0 5px; + background: fade(@muted, 10%); + box-shadow: none; + border-radius: 30px; + width: 190px; + } +} + + + +/* Page titles */ +.page-title { + font-size: 20px; + margin-bottom: 0; + margin-top: 0; + font-weight: 600; +} + +.page-header { + border-bottom: 1px solid #DBDDDE; +} +.header-title { + font-size: 16px; + line-height: 16px; + margin-bottom: 8px; + font-weight: 600; +} + +.page-title-box { + padding: 20px; + border-bottom: 1px solid #eee; + margin: 0 -20px 20px -20px; + .page-title { + margin-bottom: 0; + float: left; + } + .breadcrumb { + float: right; + background-color: transparent !important; + } +} + + + +/* Body min-height set */ +body.fixed-left-void { + min-height: 1250px; +} \ No newline at end of file diff --git a/assets/less/menu_sm.less b/assets/less/menu_sm.less new file mode 100644 index 0000000..b4d3f79 --- /dev/null +++ b/assets/less/menu_sm.less @@ -0,0 +1,717 @@ + +@import "variables.less"; +@import "elements.less"; + + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ + + +.topbar { + + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; + + .topbar-left { + background: @bg-leftbar; + float: left; + text-align: center; + height: 70px; + position: relative; + width: 160px; + z-index: 1; + } +} + +.navbar-default { + background-color: @light3; + border-radius: 0; + border: none; + margin-bottom: 0; + padding: 0 20px; + + .navbar-left { + li { + a.menu-item{ + padding: 0 15px; + line-height: 68px; + } + } + } + +} + +.logo { + color: @white !important; + font-size: 24px; + text-transform: uppercase; + font-family: @font-secondary; + font-weight: 600; + letter-spacing: 1px; + line-height: 70px; + + i { + display: none; + } + + span { + span { + color: @custom; + } + } +} + +.user-box { + a.user-link{ + padding-top: 17px !important; + padding-bottom: 17px !important; + } + .user-img { + position: relative; + height: 36px; + width: 36px; + margin: 0px auto; + } +} + +.navbar-default { + .right-menu-item { + height: 36px; + width: 36px; + padding: 0; + font-size: 18px; + border: 2px solid #ccc !important; + line-height: 35px; + text-align: center; + border-radius: 50%; + margin: 17px 5px; + + .badge { + position: absolute; + top: -8px; + right: 0px; + } + } +} + +/* Notification */ +.notify-list { + h5 { + margin: 0 0 5px 0; + padding: 10px; + background-color: rgb(243, 243, 243); + text-align: center; + } + + .all-msgs { + a{ + color: @dark; + padding: 6px 10px; + display: block; + } + } +} + +.side-menu { + width: 160px; + padding-top: 10px; + z-index: 10; + background: @bg-leftbar; + bottom: 50px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; + top: 0; + box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + + .waves-effect { + .waves-ripple { + background-color: fade(@custom, 40%); + } + } +} + +.side-menu.left { + position: absolute; + top: 60px; + bottom: 0; +} + +body.fixed-left .side-menu.left { + bottom: 50px; + margin-bottom: -70px; + margin-top: 0; + padding-bottom: 70px; + position: fixed; +} + +.content-page { + margin-left: 160px; + overflow: hidden; + + .content { + padding: 0 5px 10px 5px; + margin-top: 70px; + } +} + +.button-menu-mobile { + background: transparent; + border: none; + color: @dark; + padding: 0 20px; + display: inline-block; + + i { + font-size: 24px; + line-height: 70px; + } + + &:hover { + color: @custom; + } +} + +.sidebar-inner { + height: @height; +} + +#sidebar-menu, #sidebar-menu ul, #sidebar-menu li, #sidebar-menu a { + border: 0; + font-weight: normal; + line-height: 1; + list-style: none; + margin: 0; + padding: 0; + position: relative; + text-decoration: none; +} + +#sidebar-menu > ul > li { + margin: 15px 0; +} + +#sidebar-menu { + padding-bottom: 30px; + width: 100%; + text-align: center; + + a { + line-height: 1.3; + } + + ul { + li { + //.menu-arrow { + // -webkit-transition: -webkit-transform .15s; + // -o-transition: -o-transform .15s; + // transition: transform .15s; + // position: absolute; + // right: 20px; + // display: inline-block; + // font-family: 'Material Design Icons'; + // text-rendering: auto; + // line-height: 18px; + // font-size: 16px; + // -webkit-font-smoothing: antialiased; + // -moz-osx-font-smoothing: grayscale; + // -webkit-transform: translate(0, 0); + // -ms-transform: translate(0, 0); + // -o-transform: translate(0, 0); + // transform: translate(0, 0); + // + // &:before { + // content: "\F142"; + // } + //} + //a.subdrop .menu-arrow { + // -ms-transform: rotate(90deg); + // -webkit-transform: rotate(90deg); + // -o-transform: rotate(90deg); + // transform: rotate(90deg); + //} + } + ul { + display: none; + li { + border-top: 0; + } + li.active { + a { + color: @custom; + } + } + a { + color: @muted; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + border-left: 3px solid transparent; + display: block; + padding: 10px 20px; + font-size: 13px; + &:hover { + color: @white; + } + i { + margin-right: 5px; + } + } + ul { + a { + padding-left: 80px; + } + } + } + } + .label { + display: none; + } + .subdrop { + color: @white !important; + background-color: darken(@bg-leftbar,2.5%); + } +} + + +#sidebar-menu > ul > li > a { + color: @muted; + display: block; + padding: 12px 20px; + margin: 2px 0; + + &:hover { + color: @white; + text-decoration: none; + background-color: darken(@bg-leftbar,2.5%); + } +} + +#sidebar-menu > ul > li > a > span { + vertical-align: middle; +} + +#sidebar-menu { + ul { + li { + a{ + i{ + display: block; + font-size: 22px; + line-height: 18px; + text-align: center; + margin-bottom: 10px; + vertical-align: middle; + } + + .drop-arrow { + float: right; + + i{ + margin-right: 0; + } + } + } + } + } +} + + +#sidebar-menu > ul > li > a.active { + color: @white !important; + background-color: darken(@bg-leftbar,2.5%); + + i { + color: @custom; + } +} + + +.menu-title { + //padding: 12px 20px !important; + //letter-spacing: .05em; + //pointer-events: none; + //cursor: default; + //font-size: 11px; + //text-transform: uppercase; + //color: @muted; + //font-family: @font-secondary; + display: none; +} + +/* Help Box */ +.help-box { + //color: fade(@white,50%); + //padding: 20px; + //margin: 20px; + //border: 2px solid fade(@white,20%); + //border-radius: 5px; + //font-size: 12px; + display: none; +} + + +#wrapper.enlarged { + .menu-title ,.menu-arrow,.help-box{ + display: none !important; + } + + #sidebar-menu { + text-align: left; + ul { + ul { + margin-top: -2px; + padding-bottom: 5px; + padding-top: 5px; + z-index: 9999; + background-color: @bg-leftbar; + } + } + } + #sidebar-menu > ul > li { + margin: 4px 0; + } + .left.side-menu { + width: 70px; + z-index: 5; + + #sidebar-menu > ul > li > a { + padding: 15px 20px; + &:hover { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:active { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:focus { + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + + i { + font-size: 20px; + float: left; + margin: 0 25px 0 5px; + } + } + .label { + //position: absolute; + //top: 5px; + //left: 35px; + //text-indent: 0; + //display: block !important; + //padding: .2em .6em .3em !important; + display: none !important; + } + #sidebar-menu { + ul > li { + position: relative; + white-space: nowrap; + &:hover > a { + position: relative; + width: 260px; + color: @white !important; + background-color: darken(@bg-leftbar, 2.5%); + } + &:hover > ul { + display: block; + left: 70px; + position: absolute; + width: 190px; + a { + box-shadow: none; + padding-left: 15px; + position: relative; + width: 186px; + z-index: 6; + + &:hover { + color: @white; + } + } + } + &:hover { + a { + span { + display: inline; + } + } + } + } + + a.subdrop { + color: @white !important; + } + ul > li > ul { + display: none; + } + ul { + ul { + li { + &:hover > ul { + display: block; + left: 190px; + margin-top: -36px; + position: absolute; + width: 190px; + } + } + li > a { + span.pull-right { + -ms-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + position: absolute; + right: 20px; + top: 12px; + transform: rotate(270deg); + } + } + li.active { + a{ + color: @white; + } + } + } + } + ul > li > a { + span { + display: none; + padding-left: 10px; + } + } + } + .user-details { + display: none; + } + } + .content-page { + margin-left: 70px; + } + .footer { + left: 70px; + } + .topbar { + .topbar-left { + width: 70px !important; + .logo { + span { + display: none; + opacity: 0; + } + i { + display: block; + line-height: 70px; + color: @custom !important; + } + } + } + + } + #sidebar-menu > ul > li { + &:hover > a.open { + :after { + display: none; + } + } + &:hover > a.active { + :after { + display: none; + } + } + } +} + +#wrapper.right-bar-enabled { + .right-bar { + right: 0; + } + .left-layout { + left: 0; + } +} + +/* Right sidebar */ +.side-bar.right-bar { + float: right !important; + right: -266px; + top: 0px; +} + +.side-bar { + -moz-transition: all 200ms ease-out; + -webkit-transition: all 200ms ease-out; + background-color: @white; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + display: block; + float: left; + height: @height; + position: fixed; + transition: all 200ms ease-out; + width: 240px; +} + +.right-bar { + background: @white !important; + z-index: 999 !important; + h4 { + border-bottom: 1px solid fade(@muted,50%); + padding: 4px 10px 10px 18px; + text-transform: uppercase; + font-size: 14px; + letter-spacing: 0.03em; + } + .right-bar-toggle { + float: right; + line-height: 46px; + font-size: 20px; + color: #333; + padding: 0 10px; + } + .setting-list { + padding: 0 20px 20px 20px; + } +} + +.user-list { + .user-list-item { + padding: 10px 12px !important; + border-bottom: 1px solid #EEEEEE !important; + + .avatar { + float: left; + margin-right: 5px; + width: 30px; + height: 30px; + + img { + border-radius: 50%; + width: @width; + } + } + + .icon { + float: left; + margin-right: 5px; + height: 30px; + width: 30px; + border-radius: 50%; + text-align: center; + + i { + color: @white; + line-height: 30px; + font-size: 16px; + } + } + + .user-desc { + margin-left: 40px; + + span.name { + color: @dark; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 13px; + } + + + span.desc { + color: @muted; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + width: 100%; + overflow: hidden; + font-size: 12px; + } + span.time { + font-size: 11px; + } + } + } +} + +/* Seach */ +.app-search { + position: relative; + + a { + position: absolute; + top: 7px; + right: 26px; + color: fade(@muted, 70%); + + &:hover { + color: @muted; + } + } + + .form-control, + .form-control:focus { + border: 1px solid fade(@muted, 15%); + font-size: 13px; + height: 34px; + color: @dark; + padding: 7px 40px 7px 20px; + margin: 19px 12px 0 5px; + background: fade(@muted, 10%); + box-shadow: none; + border-radius: 30px; + width: 190px; + } +} + + + +/* Page titles */ +.page-title { + font-size: 20px; + margin-bottom: 0; + margin-top: 0; + font-weight: 600; +} + +.page-header { + border-bottom: 1px solid #DBDDDE; +} +.header-title { + font-size: 16px; + line-height: 16px; + margin-bottom: 8px; + font-weight: 600; +} + +.page-title-box { + padding: 20px; + border-bottom: 1px solid #eee; + margin: 0 -20px 20px -20px; + .page-title { + margin-bottom: 0; + float: left; + } + .breadcrumb { + float: right; + background-color: transparent !important; + } +} + + + +/* Body min-height set */ +body.fixed-left-void { + min-height: 1250px; +} \ No newline at end of file diff --git a/assets/less/pages.less b/assets/less/pages.less new file mode 100644 index 0000000..6e35aef --- /dev/null +++ b/assets/less/pages.less @@ -0,0 +1,1203 @@ +@import "variables.less"; +@import "elements.less"; + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Menu +*/ + +/* ============= + == Components List== + + - Email + - Maps + - About Us + - Contact Us + - Member List + - Timeline + - Pages (Common) + - Countdown + - FAQ + - Gallery + - Pricing + - Account Pages + - Sitemaps (v1.1) + - Search Results (v1.1) + - Blog (v1.2) + - Real Estate (v1.5) + +============= */ + +/* ============= + Email +============= */ +.mails { + a { + color: #797979; + } + td { + vertical-align: middle !important; + position: relative; + border: 0 !important; + } + td:last-of-type { + width: 100px; + padding-right: 20px; + } + tr:hover .text-white { + display: none; + } + .mail-select { + padding: 15px 20px; + min-width: 134px; + } + .checkbox { + margin-bottom: 0; + margin-top: -4px; + vertical-align: middle; + display: inline-block; + height: 17px; + } + .checkbox label { + min-height: 16px; + } + .mail-list .list-group-item { + background-color: transparent !important; + } + .mail-list .list-group-item.active { + background-color: @primary; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-border-radius: 3px; + background-clip: padding-box; + } + .unread a { + font-family: @font-secondary; + color: @dark; + } + + .table-detail { + vertical-align: top; + } + + + /* chat-widget */ + .chat-right-text { + overflow: hidden; + } + .chat-widget .chat-item { + overflow: hidden; + padding: 10px 0; + position: relative; + } + .chat-widget .chat-item .chat-item-img { + display: block; + float: left; + margin-right: 15px; + width: 40px; + } + .chat-widget .chat-item img { + width: 40px; + } + .chat-widget .chat-item .chat-item-author { + color: @dark; + display: block; + margin: 0; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + overflow: hidden; + } + .chat-widget .chat-item .chat-item-text { + color: #a0a0a0; + display: block; + font-size: 12px; + margin: 0; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; + overflow: hidden; + } +} + + +/* ============= + Maps +============= */ +.gmaps, +.gmaps-panaroma { + height: 300px; + background: #eeeeee; + border-radius: 3px; +} +.gmaps-overlay { + display: block; + text-align: center; + color: #ffffff; + font-size: 16px; + line-height: 40px; + background: #5d9cec; + border-radius: 4px; + padding: 10px 20px; +} +.gmaps-overlay_arrow { + left: 50%; + margin-left: -16px; + width: 0; + height: 0; + position: absolute; +} +.gmaps-overlay_arrow.above { + bottom: -15px; + border-left: 16px solid transparent; + border-right: 16px solid transparent; + border-top: 16px solid #5d9cec; +} +.gmaps-overlay_arrow.below { + top: -15px; + border-left: 16px solid transparent; + border-right: 16px solid transparent; + border-bottom: 16px solid #5d9cec; +} + +/* Vector Map */ + +.jvectormap-zoomin, +.jvectormap-zoomout { + width: 10px; + height: 10px; + line-height: 10px; +} +.jvectormap-zoomout { + top: 40px; +} + +/* Mapael Map */ + +.mapael .map { + position: relative; +} + +.mapael .mapTooltip { + position: absolute; + background-color: @custom; + opacity: 0.95; + border-radius: 3px; + padding: 2px 10px; + z-index: 1000; + max-width: 200px; + display: none; + color: @white; + font-family: @font-secondary; +} + +.mapael .zoomIn, .mapael .zoomOut, .mapael .zoomReset { + display: inline-block; + text-align: center; + vertical-align: middle; + border-radius: 2px; + font-weight: 500; + cursor: pointer; + background-color: @teal; + text-decoration: none; + color: @white; + font-size: 14px; + position: absolute; + top: 0; + left: 10px; + width: 24px; + height: 24px; + line-height: 24px; +} + +.map .zoomIn { + top: 25px; +} + +.map .zoomOut { + top: 50px; +} + + +/* ============= + About Us +============= */ + +.border { + height: 4px; + width: 48px; + border-radius: 5px; + background-color: @primary; +} +.about-features-box { + margin: 20px 0; +} + +.about-features-box p{ + line-height: 24px; + width: 90%; + margin: 0 auto; +} + +.feature-icon { + height: 80px; + width: 80px; + border: 2px solid #767D8E; + margin: 0px auto; + border-radius: 50%; + font-size: 42px; + line-height: 80px; +} + +.about-team img { + max-width: 150px; + margin: 0 auto; +} +.about-team .about-team-member { + margin: 30px 0px; +} +.about-team .about-team-member h4 { + padding-top: 10px; + font-weight: 600; +} +.about-team .about-team-member p { + color: @muted; +} + +/* ============= + Contact Us +============= */ +.contact-map { + background-color: @light3; +} +.contact-box { + padding: 30px; +} + +.contact-detail { + margin-bottom: 40px; +} +.contact-detail i{ + float: left; + width: 32px; + font-size: 20px; +} + +.contact-detail p,.contact-detail address{ + overflow: hidden; +} + +.contact-detail a { + color: #496174; +} + + + +/* ============= + Members list +============= */ + +.member-card { + .member-thumb { + position: relative; + } + .member-star { + position: absolute; + top: 12px; + right: 10px; + font-size: 16px; + background-color: @white; + height: 20px; + width: 20px; + border-radius: 50%; + line-height: 20px; + text-align: center; + } +} + +.social-links li a { + border-radius: 50%; + color: fade(@light7,50%); + display: inline-block; + height: 30px; + line-height: 30px; + border: 2px solid fade(@light7,50%); + text-align: center; + width: 30px; + + &:hover { + color: @light7; + border: 2px solid @light7; + } +} + + + +/* ============= + Timeline +============= */ +.timeline { + border-collapse: collapse; + border-spacing: 0; + display: table; + margin-bottom: 50px; + position: relative; + table-layout: fixed; + width: 100%; + + .time-show { + margin-bottom: 30px; + margin-right: -75px; + margin-top: 30px; + position: relative; + a { + color: @white; + } + } + &:before { + background-color: fade(@light7, 30%); + bottom: 0; + content: ""; + left: 50%; + position: absolute; + top: 30px; + width: 2px; + z-index: 0; + } + .timeline-icon { + -webkit-border-radius: 50%; + background: @light7; + border-radius: 50%; + color: @white; + display: block; + height: 20px; + left: -54px; + margin-top: -10px; + position: absolute; + text-align: center; + top: 50%; + width: 20px; + i { + color: @white; + font-size: 13px; + margin-top: 4px; + position: absolute; + left: 4px; + } + } + .time-icon { + &:before { + font-size: 16px; + margin-top: 5px; + } + } + +} + +h3.timeline-title { + color: @light7; + font-size: 20px; + font-weight: 400; + margin: 0 0 5px; + text-transform: uppercase; +} + +.timeline-item { + display: table-row; + &:before { + content: ""; + display: block; + width: 50%; + } + .timeline-desk { + .arrow { + border-bottom: 12px solid transparent; + border-right: 12px solid fade(@light,30%) !important; + border-top: 12px solid transparent; + display: block; + height: 0; + left: -12px; + margin-top: -12px; + position: absolute; + top: 50%; + width: 0; + } + .timeline-box { + padding: 20px; + } + } + .timeline-date { + margin-bottom: 10px; + } +} + +.timeline-item.alt { + &:after { + content: ""; + display: block; + width: 50%; + } + .timeline-desk { + .arrow-alt { + border-bottom: 12px solid transparent; + border-left: 12px solid fade(@light,30%) !important; + border-top: 12px solid transparent; + display: block; + height: 0; + left: auto; + margin-top: -12px; + position: absolute; + right: -12px; + top: 50%; + width: 0; + } + .album { + float: right; + margin-top: 20px; + a { + float: right; + margin-left: 5px; + } + } + } + .timeline-icon { + left: auto; + right: -56px; + } + &:before { + display: none; + } + .panel { + margin-left: 0; + margin-right: 45px; + } + h4 { + text-align: right; + } + p { + text-align: right; + } + .timeline-date { + text-align: right; + } +} + + +.timeline-desk { + display: table-cell; + vertical-align: top; + width: 50%; + h4 { + font-size: 16px; + font-weight: 300; + margin: 0; + } + .panel { + background: fade(@light,25%); + display: block; + margin-bottom: 5px; + margin-left: 45px; + position: relative; + text-align: left; + border: 0; + } + h5 { + span { + color: @light7; + display: block; + font-size: 12px; + margin-bottom: 4px; + } + } + p { + color: #999999; + font-size: 14px; + margin-bottom: 0; + } + .album { + margin-top: 12px; + a { + float: left; + margin-right: 5px; + } + + img { + height: 36px; + width: auto; + border-radius: 3px; + } + } + .notification { + background: none repeat scroll 0 0 @white; + margin-top: 20px; + padding: 8px; + } +} + + +.timeline-left { + margin-left: 20px; + width: auto; + display: block; + + &:before { + left: 0 !important; + } + .timeline-item { + display: block; + } + .timeline-desk { + display: block; + width: 100%; + } + .panel { + margin-bottom: 20px; + } +} + + + +/* ============= + Pages - Common +============= */ + +/* Pages */ +.account-pages-bg { + background: url("../images/dust.png"); +} +.home-wrapper { + margin: 10% 0; +} + + +/* ============= + Count Down +============= */ +#count-down { + margin-top: 50px; + + .clock-presenter { + height: 140px; + line-height: 30px; + padding: 0px 30px; + text-align: center; + } + .clock-presenter .digit { + margin-top: 20px; + font-size: 60px; + font-family: @font-secondary; + line-height: 60px; + height: 60px; + display: inline-block; + overflow: hidden; + text-align: center; + position: relative; + cursor: default; + } + + .clock-presenter .note { + position: relative; + bottom: 0px; + padding-top: 5px; + cursor: default; + font-size: 16px; + color: @success; + font-family: @font-secondary; + text-transform: uppercase; + } +} + +@media (max-width: 992px) { + #count-down { + .clock-presenter .digit { + font-size: 42px; + } + } + +} + +@media (max-width: 767px) { + #count-down { + .clock-presenter { + width: 50%; + float: left; + } + + .clock-presenter .digit { + font-size: 36px; + } + + .hours_dash { + border-right: none; + } + } +} + + +/* ============= + FAQ +============= */ + +.question-q-box { + height: 30px; + width: 30px; + color: @white; + background-color: @danger; + text-align: center; + border-radius: 3px; + float: left; + line-height: 30px; +} + +.question { + margin-top: 0; + margin-left: 50px; + font-weight: 400; + font-size: 16px; +} + +.answer { + margin-left: 50px; + color: @muted; + margin-bottom: 40px; +} + + +/* ============= + Gallery +============= */ +.portfolioFilter a { + transition: all 0.3s ease-out; + color: @dark; + font-weight: 600; + font-family: @font-secondary; + padding: 5px 10px; + display: inline-block; + margin-bottom: 5px; +} +.portfolioFilter a:hover,.portfolioFilter a.current { + color: @success; +} +.thumb { + border-radius: 3px; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + margin-top: 20px; + width: 100%; + overflow: hidden; + + &:hover { + .thumb-img { + overflow: hidden; + position: relative; + -webkit-transform: scale(1.05); + -moz-transform: scale(1.05); + -o-transform: scale(1.05); + -ms-transform: scale(1.05); + transform: scale(1.05); + } + } +} + +.thumb-img { + border-radius: 2px; + overflow: hidden; + width: 100%; + transition: all 0.2s ease-out; +} + +.gal-detail { + padding: 10px; + position: relative; + background-color: @white; + + h4 { + font-weight: 600; + font-size: 16px; + padding: 0 5px; + } + p { + padding: 0 5px; + font-size: 13px; + } +} + + + +/* ============= + Pricing +============= */ +.pricing-column{ + position: relative; + margin-bottom: 40px; + + .inner-box { + position: relative; + padding: 0 0 50px; + } + + .plan-header { + position: relative; + padding: 30px 20px 25px; + } + .plan-title { + font-size: 16px; + font-family: @font-secondary; + margin-bottom: 10px; + color: @success; + text-transform: uppercase; + letter-spacing: 1px; + font-weight: 400; + } + .plan-price { + font-size: 48px; + font-family: @font-secondary; + margin-bottom: 10px; + color: @dark; + } + .plan-duration { + font-size: 13px; + color: @muted; + } + + .plan-stats { + position: relative; + padding: 30px 20px 15px; + + li { + margin-bottom: 15px; + line-height: 24px; + } + } +} + +.ribbon { + position: absolute; + left: 5px; + top: -5px; + z-index: 1; + overflow: hidden; + width: 75px; + height: 75px; + text-align: right; + font-family: @font-secondary; + + span { + font-size: 10px; + font-weight: bold; + color: @white; + text-transform: uppercase; + text-align: center; + line-height: 20px; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + width: 100px; + display: block; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0 0 rgba(0, 0, 0, 0.02); + background: @custom; + background: linear-gradient(@primary 0%, @primary 100%); + position: absolute; + top: 19px; + letter-spacing: 1px; + left: -21px; + + &:before { + content: ""; + position: absolute; + left: 0; + top: 100%; + z-index: -1; + border-left: 3px solid darken(@primary,10%); + border-right: 3px solid transparent; + border-bottom: 3px solid transparent; + border-top: 3px solid darken(@primary,10%); + } + &:after { + content: ""; + position: absolute; + right: 0; + top: 100%; + z-index: -1; + border-left: 3px solid transparent; + border-right: 3px solid darken(@primary,10%); + border-bottom: 3px solid transparent; + border-top: 3px solid darken(@primary,10%); + } + } +} + + +/* ============= + Account Pages +============= */ + +.wrapper-page { + margin: 5% auto; + position: relative; + max-width: 420px; +} + +.account-pages { + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + border-radius: 5px; + + .account-content { + padding: 30px; + } + + .account-btn { + position: absolute; + left: 0; + right: 0; + } +} + +.account-logo-box { + background-color: #505458; + padding: 10px; + border-radius: 5px 5px 0 0; +} + + +.checkmark { + width: 120px; + margin: 0 auto; + padding: 20px 0; +} + +.path { + stroke-dasharray: 1000; + stroke-dashoffset: 0; + animation: dash 2s ease-in-out; + -webkit-animation: dash 2s ease-in-out; +} + +.spin { + animation: spin 2s; + -webkit-animation: spin 2s; + transform-origin: 50% 50%; + -webkit-transform-origin: 50% 50%; +} + +@-webkit-keyframes dash { + 0% { + stroke-dashoffset: 1000; + } + 100% { + stroke-dashoffset: 0; + } +} + +@keyframes dash { + 0% { + stroke-dashoffset: 1000; + } + 100% { + stroke-dashoffset: 0; + } +} + +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} + +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} + +@-webkit-keyframes text { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + + @keyframes text { + 0% { + opacity: 0; } + 100% { + opacity: 1; + } +} + +/* ============= + Sitemaps +============= */ + +.sitemap > li > ul { + margin-top: 1.5rem; + padding-left: 0; +} + +ul.sitemap { + list-style: none; + padding-left: 0; + + li { + line-height: 2.5rem ; + vertical-align: top ; + list-style: none; + position: relative ; + + a { + text-decoration: none ; + color: darken(@muted,10%); + display: inline-block ; + + &:hover { + color: @custom; + } + } + } + + + ul { + margin-left: 1.5rem ; + margin-bottom: 1.5rem ; + padding-top: 10px; + + li { + position: relative ; + &::before { + content: "" ; + display: inline-block ; + width: 1.5rem * 2 ; + height: 100% ; + border-left: 1px solid fade(@muted,50%) ; + position: absolute ; + top: -2.5 / 2 ; + } + + + &::before { + content: "" ; + display: inline-block ; + width: 1.5rem * 2 ; + height: 2.5rem ; + border-bottom: 1px #ccc solid ; + position: absolute ; + top: -2.5rem / 2 ; + } + a { + margin-left: 1.5rem * 2.5 ; + } + } + } +} + +/* ============= + Search Results +============= */ + +.search-result-box .search-item { + padding-bottom: 20px; + border-bottom: 1px solid fade(@muted,20%); + margin-bottom: 25px; +} + + +/* ============= + Blogs +============= */ +.blog-list-wrapper { + max-width: 1170px; + margin: 0 auto; +} + +.blog-post { + + .post-image { + position: relative; + margin-bottom: 20px; + + .label { + position: absolute; + bottom: 8px; + left: 10px; + text-transform: uppercase; + } + } + .post-title { + a { + color: @primary; + line-height: 28px; + + &:hover { + color: darken(@primary,10%); + } + } + } +} + +.blog-categories-list { + li { + display: block; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #ededed; + + a{ + display: block; + color: fade(@dark,70%); + + &:hover { + color: @danger; + } + } + } +} + +.latest-post-item { + h5 { + a { + color: fade(@dark,60%); + line-height: 20px; + } + } +} + +.blog-post-column { + box-shadow: 0 8px 42px 0 rgba(0, 0, 0, 0.08); + + .post-image { + margin-bottom: 0; + } +} +.blog-post-comment { + .media { + margin-bottom: 20px; + padding-bottom: 20px; + + img { + height: 52px; + width: 52px; + } + + .media { + margin-bottom: 0; + border-bottom: 0; + padding-top: 20px; + padding-bottom: 0; + } + } +} + +/* ========== +Real Estate +============ */ +.property-card { + box-sizing: border-box; + margin-bottom: 30px; + background-clip: padding-box; + box-shadow: 0 0 11px 0 fade(@dark,15%); + + .property-content { + position: relative; + box-sizing: border-box; + padding: 15px; + border-radius: 0 0 2px 2px; + background-clip: padding-box; + } + + .property-image { + display: block; + height: 230px; + position: relative; + overflow: hidden; + } + + .property-action { + padding: 12px 15px; + border-top: 1px solid rgba(160, 160, 160, .2); + } + .property-label { + position: absolute; + top: 10px; + right: 10px; + text-transform: uppercase; + } + +} + +.property-card.property-horizontal { + .property-content { + width: 100%; + height: 230px; + + .listingInfo { + display: table-cell; + height: 155px; + vertical-align: middle; + } + .property-action { + position: absolute; + right: 0; + bottom: 0; + left: 0; + + a { + margin-right: 7px; + color: #313a46; + -webkit-transition: color .3s ease; + transition: color .3s ease; + display: inline-block; + border: 1px solid #dcdee0; + padding: 1px 6px; + border-radius: 3px; + + i { + font-size: 16px; + margin-right: 5px; + vertical-align: middle; + } + } + } + + } +} + +/* Property detail page */ +.property-detail-wrapper { + max-width: 1170px; + margin: 0 auto; + + .bx-wrapper { + margin-bottom: 0; + + .bx-next { + right: 20px; + } + .bx-controls-direction a { + z-index: 9; + } + } + #bx-pager a.active img { + border: 1px solid @custom; + } + #bx-pager a img { + padding: 3px; + border: solid #ccc 1px; + } + .proprerty-features { + li { + line-height: 30px; + } + } + #map-property { + height: 300px; + background: #69c; + } +} \ No newline at end of file diff --git a/assets/less/responsive.less b/assets/less/responsive.less new file mode 100644 index 0000000..cc565e4 --- /dev/null +++ b/assets/less/responsive.less @@ -0,0 +1,281 @@ + +@import "variables.less"; +@import "elements.less"; + + +/* +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Responsive +*/ + +@media only screen and (max-width: 6000px) and (min-width: 700px) { + .wrapper.right-bar-enabled { + .right-bar { + right: 0; + z-index: 99; + } + } +} + +@media (max-width: 1023px) { + .button-menu-mobile { + display: block !important; + } + .email-msg { + display: none; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + body { + overflow-x: hidden; + } +} + +@media (max-width: 768px) { + body { + overflow-x: hidden; + } + .side-menu { + position: absolute !important; + } + .enlarged { + .left.side-menu { + margin-left: -75px; + } + } + .topbar-left { + width: 70px !important; + + span { + display: none !important; + } + i { + display: block !important; + line-height: 70px !important; + } + } + .content-page .content { + margin-top: 75px; + } + .topbar .topbar-left { + height: 70px; + } + + .navbar-default { + background-color: @white; + box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + } + .navbar-nav { + margin: 0px; + display: inline-block; + + li { + display: inline-block; + line-height: 1px; + } + } + .navbar-nav.navbar-right { + float: right; + } + .content-page { + margin-left: 0px !important; + } + .footer { + left: 0px !important; + } + + .mobile-sidebar { + left: 0px; + } + + .mobile-content { + left: 250px; + right: -250px; + } + + .wrapper-page { + width: 90%; + } + + .dataTables_wrapper { + .col-xs-6 { + width: 100%; + text-align: left; + } + } + + div#datatable-buttons_info { + float: none; + } + .ms-container { + width: 100%; + } + .m-t-sm-50 { + margin-top: 50px !important; + } +} + +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + background-color: @white; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + left: auto; + position: absolute; + right: 0; + + li { + display: block; + } + } + .dropdown-lg { + width: 200px !important; + } + .user-box { + float: right; + } + .dataTables_length { + float: none; + margin-bottom: 10px; + } +} + +@media (max-width: 480px) { + .side-menu { + z-index: 10 !important; + } + + .button-menu-mobile { + display: block; + } + + .search-bar { + display: none !important; + } +} + +@media (max-width: 420px) { + .hide-phone { + display: none !important; + } +} + + +/* Container-alt */ +@media (min-width: 768px) { + .container-alt { + width: 750px; + } + + .nav-tabs.nav-justified > li > a { + border-bottom: 2px solid @light; + } +} + +@media (min-width: 992px) { + .container-alt { + width: 970px; + } +} + +@media (min-width: 1200px) { + .container-alt { + width: 1170px; + } +} +@media (max-width: 419px) { + .hidden-xxs { + display: none; + } + .topbar-left { + width: 70px !important; + } + .logo { + .icon-c-logo { + display: inline-block !important; + line-height: 58px !important; + } + span { + display: none !important; + } + } + .wrapper-page .logo { + span { + display: inline-block !important; + } + } + .content-page { + margin-left: 70px; + } + .forced { + .side-menu.left { + box-shadow: 0 12px 12px rgba(0, 0, 0, 0.1); + //position: absolute; + } + } + .enlarged { + .side-menu.left { + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) !important; + } + } + .page-title { + font-size: 15px; + max-width: 250px; + white-space: nowrap; + } + .navbar-default { + padding: 0px; + .navbar-left { + padding-left: 0px !important; + + li { + padding: 0px 5px; + } + } + } + .topbar-left { + display: none; + } + + .editable-responsive { + overflow-x: auto; + } + + .profile-info-name img { + float: none; + margin: 0px auto; + margin-bottom: 20px; + } + div.hopscotch-bubble .hopscotch-bubble-container { + max-width: 180px; + } + .page-title-box .breadcrumb { + display: none; + } + + .navbar-nav .open .dropdown-menu { + margin-right: -20px; + } + .user-box .dropdown-menu { + margin-right: 0 !important; + } + + .dropdown-lg { + width: 160px !important; + } + .user-list .user-list-item .icon,.user-list .user-list-item .avatar { + display: none; + } + .user-list .user-list-item .user-desc { + margin-left: 0; + } + + .mails { + .table-detail { + display: block; + } + } + +} diff --git a/assets/less/variables.less b/assets/less/variables.less new file mode 100644 index 0000000..c05c7bf --- /dev/null +++ b/assets/less/variables.less @@ -0,0 +1,40 @@ + +@custom: #7fc1fc; + + +// Color variables + +@white: #ffffff; + +@default: #dae6ec; +@primary: #188ae2; +@success: #4bd396; +@info: #3ac9d6; +@warning: #f9c851; +@danger: #f5707a; +@purple: #6b5fb5; +@pink: #F06292; +@inverse: #3b3e47; +@orange: #ff9800; +@brown: #8d6e63; +@teal: #26a69a; +@muted: #98a6ad; +@light: #eeeeee; +@light3: #f3f3f3; +@light7: #797979; +@dark: #313a46; + + + +//Background left-sidebar +@bg-leftbar: #36404e; + +// Width variables +@width: 100%; + +// Height variables +@height: 100%; + +//Font variables +@font-primary: 'Varela Round', sans-serif; +@font-secondary: 'Hind Madurai', sans-serif; diff --git a/assets/pages/jquery.autocomplete.init.js b/assets/pages/jquery.autocomplete.init.js new file mode 100644 index 0000000..d686494 --- /dev/null +++ b/assets/pages/jquery.autocomplete.init.js @@ -0,0 +1,84 @@ +/** +* Theme: Zircos Dashboard +* Author: Coderthemes +* Auto Complete +*/ + + +/*jslint browser: true, white: true, plusplus: true */ +/*global $, countries */ + +$(function () { + 'use strict'; + + var countriesArray = $.map(countries, function (value, key) { return { value: value, data: key }; }); + + // Setup jQuery ajax mock: + $.mockjax({ + url: '*', + responseTime: 2000, + response: function (settings) { + var query = settings.data.query, + queryLowerCase = query.toLowerCase(), + re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi'), + suggestions = $.grep(countriesArray, function (country) { + // return country.value.toLowerCase().indexOf(queryLowerCase) === 0; + return re.test(country.value); + }), + response = { + query: query, + suggestions: suggestions + }; + + this.responseText = JSON.stringify(response); + } + }); + + // Initialize ajax autocomplete: + $('#autocomplete-ajax').autocomplete({ + // serviceUrl: '/autosuggest/service/url', + lookup: countriesArray, + lookupFilter: function(suggestion, originalQuery, queryLowerCase) { + var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi'); + return re.test(suggestion.value); + }, + onSelect: function(suggestion) { + $('#selction-ajax').html('You selected: ' + suggestion.value + ', ' + suggestion.data); + }, + onHint: function (hint) { + $('#autocomplete-ajax-x').val(hint); + }, + onInvalidateSelection: function() { + $('#selction-ajax').html('You selected: none'); + } + }); + + var nhlTeams = ['Anaheim Ducks', 'Atlanta Thrashers', 'Boston Bruins', 'Buffalo Sabres', 'Calgary Flames', 'Carolina Hurricanes', 'Chicago Blackhawks', 'Colorado Avalanche', 'Columbus Blue Jackets', 'Dallas Stars', 'Detroit Red Wings', 'Edmonton OIlers', 'Florida Panthers', 'Los Angeles Kings', 'Minnesota Wild', 'Montreal Canadiens', 'Nashville Predators', 'New Jersey Devils', 'New Rork Islanders', 'New York Rangers', 'Ottawa Senators', 'Philadelphia Flyers', 'Phoenix Coyotes', 'Pittsburgh Penguins', 'Saint Louis Blues', 'San Jose Sharks', 'Tampa Bay Lightning', 'Toronto Maple Leafs', 'Vancouver Canucks', 'Washington Capitals']; + var nbaTeams = ['Atlanta Hawks', 'Boston Celtics', 'Charlotte Bobcats', 'Chicago Bulls', 'Cleveland Cavaliers', 'Dallas Mavericks', 'Denver Nuggets', 'Detroit Pistons', 'Golden State Warriors', 'Houston Rockets', 'Indiana Pacers', 'LA Clippers', 'LA Lakers', 'Memphis Grizzlies', 'Miami Heat', 'Milwaukee Bucks', 'Minnesota Timberwolves', 'New Jersey Nets', 'New Orleans Hornets', 'New York Knicks', 'Oklahoma City Thunder', 'Orlando Magic', 'Philadelphia Sixers', 'Phoenix Suns', 'Portland Trail Blazers', 'Sacramento Kings', 'San Antonio Spurs', 'Toronto Raptors', 'Utah Jazz', 'Washington Wizards']; + var nhl = $.map(nhlTeams, function (team) { return { value: team, data: { category: 'NHL' }}; }); + var nba = $.map(nbaTeams, function (team) { return { value: team, data: { category: 'NBA' } }; }); + var teams = nhl.concat(nba); + + // Initialize autocomplete with local lookup: + $('#autocomplete').devbridgeAutocomplete({ + lookup: teams, + minChars: 1, + onSelect: function (suggestion) { + $('#selection').html('You selected: ' + suggestion.value + ', ' + suggestion.data.category); + }, + showNoSuggestionNotice: true, + noSuggestionNotice: 'Sorry, no matching results', + groupBy: 'category' + }); + + // Initialize autocomplete with custom appendTo: + $('#autocomplete-custom-append').autocomplete({ + lookup: countriesArray, + appendTo: '#suggestions-container' + }); + + // Initialize autocomplete with custom appendTo: + $('#autocomplete-dynamic').autocomplete({ + lookup: countriesArray + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.blog-add.init.js b/assets/pages/jquery.blog-add.init.js new file mode 100644 index 0000000..e78175a --- /dev/null +++ b/assets/pages/jquery.blog-add.init.js @@ -0,0 +1,133 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes + * Email: coderthemes@gmail.com +* Blog Add +*/ + +$(document).ready(function(){ + + 'use-strict'; + + //Example 1 + $("#filer_input1").filer({ + limit: null, + maxSize: null, + extensions: null, + changeInput: '<div class="jFiler-input-dragDrop"><div class="jFiler-input-inner"><div class="jFiler-input-icon"><i class="icon-jfi-cloud-up-o"></i></div><div class="jFiler-input-text"><h3>Drag & Drop files here</h3> <span style="display:inline-block; margin: 15px 0">or</span></div><a class="jFiler-input-choose-btn btn btn-custom waves-effect waves-light">Browse Files</a></div></div>', + showThumbs: true, + theme: "dragdropbox", + templates: { + box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>', + item: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li>{{fi-progressBar}}</li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + itemAppend: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li><span class="jFiler-item-others">{{fi-icon}}</span></li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + progressBar: '<div class="bar"></div>', + itemAppendToEnd: false, + removeConfirmation: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + dragDrop: { + dragEnter: null, + dragLeave: null, + drop: null, + }, + uploadFile: { + url: "../plugins/jquery.filer/php/upload.php", + data: null, + type: 'POST', + enctype: 'multipart/form-data', + beforeSend: function(){}, + success: function(data, el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + error: function(el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + statusCode: null, + onProgress: null, + onComplete: null + }, + addMore: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + afterShow: null, + onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){ + var file = file.name; + $.post('../plugins/jquery.filer/php/remove_file.php', {file: file}); + }, + onEmpty: null, + options: null, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB." + } + } + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.blog-dashboard.js b/assets/pages/jquery.blog-dashboard.js new file mode 100644 index 0000000..73364e9 --- /dev/null +++ b/assets/pages/jquery.blog-dashboard.js @@ -0,0 +1,127 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Blog Dashboard +*/ + +!function($) { + "use strict"; + + var BlogDashboard = function() {}; + + + //creates Stacked chart + BlogDashboard.prototype.createStackedChart = function(element, data, xkey, ykeys, labels, lineColors) { + Morris.Bar({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + stacked: true, + labels: labels, + hideHover: 'auto', + barSizeRatio: 0.5, + resize: true, //defaulted to true + gridLineColor: '#eeeeee', + barColors: lineColors + }); + }, + BlogDashboard.prototype.init = function() { + + //creating Stacked chart + var $stckedData = [ + { y: 'Jan', a: 45, b: 140 }, + { y: 'Feb', a: 75, b: 65 }, + { y: 'Mar', a: 100, b: 90 }, + { y: 'Apr', a: 75, b: 65 }, + { y: 'May', a: 100, b: 90 }, + { y: 'Jun', a: 75, b: 65 }, + { y: 'Jul', a: 50, b: 40 }, + { y: 'Aug', a: 75, b: 65 }, + { y: 'Sep', a: 50, b: 40 }, + { y: 'Oct', a: 75, b: 65 }, + { y: 'Nov', a: 100, b: 90}, + { y: 'Dec', a: 70, b: 52 } + ]; + this.createStackedChart('morris-bar-stacked', $stckedData, 'y', ['a', 'b'], ['Page Views', 'Visitors'], ['#26a69a', '#ebeff2']); + + }, + //init + $.BlogDashboard = new BlogDashboard, $.BlogDashboard.Constructor = BlogDashboard +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.BlogDashboard.init(); +}(window.jQuery); + + +! function($) { + "use strict"; + + var VectorMap = function() { + }; + + VectorMap.prototype.init = function() { + //various examples + $('#world-map-markers').vectorMap({ + map : 'world_mill_en', + scaleColors : ['#4bd396', '#4bd396'], + normalizeFunction : 'polynomial', + hoverOpacity : 0.7, + hoverColor : false, + regionStyle : { + initial : { + fill : '#3ac9d6' + } + }, + markerStyle: { + initial: { + r: 9, + 'fill': '#f5707a', + 'fill-opacity': 0.9, + 'stroke': '#fff', + 'stroke-width' : 7, + 'stroke-opacity': 0.4 + }, + + hover: { + 'stroke': '#fff', + 'fill-opacity': 1, + 'stroke-width': 1.5 + } + }, + backgroundColor : 'transparent', + markers : [{ + latLng : [41.90, 12.45], + name : 'Vatican City' + }, { + latLng : [43.73, 7.41], + name : 'Monaco' + }, { + latLng : [15.3, -61.38], + name : 'Dominica' + }, { + latLng : [-20.2, 57.5], + name : 'Mauritius' + }, { + latLng : [26.02, 50.55], + name : 'Bahrain' + }, { + latLng : [0.33, 6.73], + name : 'São Tomé and Príncipe' + }] + }); + }, + //init + $.VectorMap = new VectorMap, $.VectorMap.Constructor = + VectorMap +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.VectorMap.init() +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.c3-chart.init.js b/assets/pages/jquery.c3-chart.init.js new file mode 100644 index 0000000..7b091e6 --- /dev/null +++ b/assets/pages/jquery.c3-chart.init.js @@ -0,0 +1,224 @@ +/** +* Theme: Zircos Dashboard +* Author: Coderthemes +* Chart c3 page +*/ + +!function($) { + "use strict"; + + var ChartC3 = function() {}; + + ChartC3.prototype.init = function () { + //generating chart + c3.generate({ + bindto: '#chart', + data: { + columns: [ + ['data1', 30, 20, 50, 40, 60, 50], + ['data2', 200, 130, 90, 240, 130, 220], + ['data3', 300, 200, 160, 400, 250, 250] + ], + type: 'bar', + colors: { + data1: '#ebeff2', + data2: '#4bd396', + data3: '#f5707a' + } + + } + }); + + //combined chart + c3.generate({ + bindto: '#combine-chart', + data: { + columns: [ + ['data1', 30, 20, 50, 40, 60, 50], + ['data2', 200, 130, 90, 240, 130, 220], + ['data3', 300, 200, 160, 400, 250, 250], + ['data4', 200, 130, 90, 240, 130, 220], + ['data5', 130, 120, 150, 140, 160, 150] + ], + types: { + data1: 'bar', + data2: 'bar', + data3: 'spline', + data4: 'line', + data5: 'bar' + }, + colors: { + data1: '#7fc1fc', + data2: '#ebeff2', + data3: '#36404a', + data4: '#fb6d9d', + data5: '#5fbeaa' + }, + groups: [ + ['data1','data2'] + ] + }, + axis: { + x: { + type: 'categorized' + } + } + }); + + //roated chart + c3.generate({ + bindto: '#roated-chart', + data: { + columns: [ + ['data1', 30, 200, 100, 400, 150, 250], + ['data2', 50, 20, 10, 40, 15, 25] + ], + types: { + data1: 'bar' + }, + colors: { + data1: '#3ac9d6', + data2: '#f06292' + }, + }, + axis: { + rotated: true, + x: { + type: 'categorized' + } + } + }); + + //stacked chart + c3.generate({ + bindto: '#chart-stacked', + data: { + columns: [ + ['data1', 30, 20, 50, 40, 60, 50], + ['data2', 200, 130, 90, 240, 130, 220] + ], + types: { + data1: 'area-spline', + data2: 'area-spline' + // 'line', 'spline', 'step', 'area', 'area-step' are also available to stack + }, + colors: { + data1: '#ff9800', + data2: '#8d6e63' + } + } + }); + + //Donut Chart + c3.generate({ + bindto: '#donut-chart', + data: { + columns: [ + ['data1', 46], + ['data2', 24] + ], + type : 'donut' + }, + donut: { + title: "Candidates", + width: 30, + label: { + show:false + } + }, + color: { + pattern: ["#26a69a", "#ebeff2"] + } + }); + + //Pie Chart + c3.generate({ + bindto: '#pie-chart', + data: { + columns: [ + ['Lulu', 46], + ['Olaf', 24], + ['Item 3', 30] + ], + type : 'pie' + }, + color: { + pattern: ["#ebeff2", "#4bd396", "#f5707a"] + }, + pie: { + label: { + show: false + } + } + }); + + //Line regions + c3.generate({ + bindto: '#line-regions', + data: { + columns: [ + ['data1', 30, 200, 100, 400, 150, 250], + ['data2', 50, 20, 10, 40, 15, 25] + ], + regions: { + 'data1': [{'start':1, 'end':2, 'style':'dashed'},{'start':3}], // currently 'dashed' style only + 'data2': [{'end':3}] + }, + colors: { + data1: '#ff9800', + data2: '#6b5fb5' + }, + }, + + }); + + + //Scatter Plot + c3.generate({ + bindto: '#scatter-plot', + data: { + xs: { + setosa: 'setosa_x', + versicolor: 'versicolor_x', + }, + // iris data from R + columns: [ + ["setosa_x", 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.0, 4.0, 4.4, 3.9, 3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3.0, 3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.6, 3.0, 3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3.0, 3.8, 3.2, 3.7, 3.3], + ["versicolor_x", 3.2, 3.2, 3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2.0, 3.0, 2.2, 2.9, 2.9, 3.1, 3.0, 2.7, 2.2, 2.5, 3.2, 2.8, 2.5, 2.8, 2.9, 3.0, 2.8, 3.0, 2.9, 2.6, 2.4, 2.4, 2.7, 2.7, 3.0, 3.4, 3.1, 2.3, 3.0, 2.5, 2.6, 3.0, 2.6, 2.3, 2.7, 3.0, 2.9, 2.9, 2.5, 2.8], + ["setosa", 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.2, 0.1, 0.1, 0.2, 0.4, 0.4, 0.3, 0.3, 0.3, 0.2, 0.4, 0.2, 0.5, 0.2, 0.2, 0.4, 0.2, 0.2, 0.2, 0.2, 0.4, 0.1, 0.2, 0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.3, 0.3, 0.2, 0.6, 0.4, 0.3, 0.2, 0.2, 0.2, 0.2], + ["versicolor", 1.4, 1.5, 1.5, 1.3, 1.5, 1.3, 1.6, 1.0, 1.3, 1.4, 1.0, 1.5, 1.0, 1.4, 1.3, 1.4, 1.5, 1.0, 1.5, 1.1, 1.8, 1.3, 1.5, 1.2, 1.3, 1.4, 1.4, 1.7, 1.5, 1.0, 1.1, 1.0, 1.2, 1.6, 1.5, 1.6, 1.5, 1.3, 1.3, 1.3, 1.2, 1.4, 1.2, 1.0, 1.3, 1.2, 1.3, 1.3, 1.1, 1.3], + ], + + type: 'scatter' + }, + color: { + pattern: ["#188ae2", "#f5707a", "#3b3e47", "#6b5fb5"] + }, + axis: { + x: { + label: 'Sepal.Width', + tick: { + fit: false + } + + }, + y: { + label: 'Petal.Width' + } + } + + }); + + }, + $.ChartC3 = new ChartC3, $.ChartC3.Constructor = ChartC3 + +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.ChartC3.init() +}(window.jQuery); + + + diff --git a/assets/pages/jquery.chartist.init.js b/assets/pages/jquery.chartist.init.js new file mode 100644 index 0000000..2635073 --- /dev/null +++ b/assets/pages/jquery.chartist.init.js @@ -0,0 +1,857 @@ +/** +* Theme: Zircos Dashboard +* Author: Coderthemes +* Chartist chart +*/ + +//smil-animations Chart + + + var chart = new Chartist.Line('#smil-animations', { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + series: [ + [12, 9, 7, 8, 5, 4, 6, 2, 3, 3, 4, 6], + [4, 5, 3, 7, 3, 5, 5, 3, 4, 4, 5, 5], + [5, 3, 4, 5, 6, 3, 3, 4, 5, 6, 3, 4], + [3, 4, 5, 6, 7, 6, 4, 5, 6, 7, 6, 3] + ] +}, { + low: 0, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + +// Let's put a sequence number aside so we can use it in the event callbacks +var seq = 0, + delays = 80, + durations = 500; + +// Once the chart is fully created we reset the sequence +chart.on('created', function() { + seq = 0; +}); + +// On each drawn element by Chartist we use the Chartist.Svg API to trigger SMIL animations +chart.on('draw', function(data) { + seq++; + + if(data.type === 'line') { + // If the drawn element is a line we do a simple opacity fade in. This could also be achieved using CSS3 animations. + data.element.animate({ + opacity: { + // The delay when we like to start the animation + begin: seq * delays + 1000, + // Duration of the animation + dur: durations, + // The value where the animation should start + from: 0, + // The value where it should end + to: 1 + } + }); + } else if(data.type === 'label' && data.axis === 'x') { + data.element.animate({ + y: { + begin: seq * delays, + dur: durations, + from: data.y + 100, + to: data.y, + // We can specify an easing function from Chartist.Svg.Easing + easing: 'easeOutQuart' + } + }); + } else if(data.type === 'label' && data.axis === 'y') { + data.element.animate({ + x: { + begin: seq * delays, + dur: durations, + from: data.x - 100, + to: data.x, + easing: 'easeOutQuart' + } + }); + } else if(data.type === 'point') { + data.element.animate({ + x1: { + begin: seq * delays, + dur: durations, + from: data.x - 10, + to: data.x, + easing: 'easeOutQuart' + }, + x2: { + begin: seq * delays, + dur: durations, + from: data.x - 10, + to: data.x, + easing: 'easeOutQuart' + }, + opacity: { + begin: seq * delays, + dur: durations, + from: 0, + to: 1, + easing: 'easeOutQuart' + } + }); + } else if(data.type === 'grid') { + // Using data.axis we get x or y which we can use to construct our animation definition objects + var pos1Animation = { + begin: seq * delays, + dur: durations, + from: data[data.axis.units.pos + '1'] - 30, + to: data[data.axis.units.pos + '1'], + easing: 'easeOutQuart' + }; + + var pos2Animation = { + begin: seq * delays, + dur: durations, + from: data[data.axis.units.pos + '2'] - 100, + to: data[data.axis.units.pos + '2'], + easing: 'easeOutQuart' + }; + + var animations = {}; + animations[data.axis.units.pos + '1'] = pos1Animation; + animations[data.axis.units.pos + '2'] = pos2Animation; + animations['opacity'] = { + begin: seq * delays, + dur: durations, + from: 0, + to: 1, + easing: 'easeOutQuart' + }; + + data.element.animate(animations); + } +}); + +// For the sake of the example we update the chart every time it's created with a delay of 10 seconds +chart.on('created', function() { + if(window.__exampleAnimateTimeout) { + clearTimeout(window.__exampleAnimateTimeout); + window.__exampleAnimateTimeout = null; + } + window.__exampleAnimateTimeout = setTimeout(chart.update.bind(chart), 12000); +}); + + + +//Simple line chart +new Chartist.Line('#simple-line-chart', { + labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], + series: [ + [12, 9, 7, 8, 5], + [2, 1, 3.5, 7, 3], + [1, 3, 4, 5, 6] + ] +}, { + fullWidth: true, + chartPadding: { + right: 40 + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + +//Line Scatter Diagram +var times = function(n) { + return Array.apply(null, new Array(n)); +}; + +var data = times(52).map(Math.random).reduce(function(data, rnd, index) { + data.labels.push(index + 1); + data.series.forEach(function(series) { + series.push(Math.random() * 100) + }); + + return data; +}, { + labels: [], + series: times(4).map(function() { return new Array() }) +}); + +var options = { + showLine: false, + axisX: { + labelInterpolationFnc: function(value, index) { + return index % 13 === 0 ? 'W' + value : null; + } + } +}; + +var responsiveOptions = [ + ['screen and (min-width: 640px)', { + axisX: { + labelInterpolationFnc: function(value, index) { + return index % 4 === 0 ? 'W' + value : null; + } + } + }] +]; + +new Chartist.Line('#scatter-diagram', data, options, responsiveOptions); + + + + + +//Line chart with tooltips + +new Chartist.Line('#line-chart-tooltips', { + labels: ['1', '2', '3', '4', '5', '6'], + series: [ + { + name: 'Fibonacci sequence', + data: [1, 2, 3, 5, 8, 13] + }, + { + name: 'Golden section', + data: [1, 1.618, 2.618, 4.236, 6.854, 11.09] + } + ] +}, + { + plugins: [ + Chartist.plugins.tooltip() + ] +} +); + +var $chart = $('#line-chart-tooltips'); + +var $toolTip = $chart + .append('<div class="tooltip"></div>') + .find('.tooltip') + .hide(); + +$chart.on('mouseenter', '.ct-point', function() { + var $point = $(this), + value = $point.attr('ct:value'), + seriesName = $point.parent().attr('ct:series-name'); + $toolTip.html(seriesName + '<br>' + value).show(); +}); + +$chart.on('mouseleave', '.ct-point', function() { + $toolTip.hide(); +}); + +$chart.on('mousemove', function(event) { + $toolTip.css({ + left: (event.offsetX || event.originalEvent.layerX) - $toolTip.width() / 2 - 10, + top: (event.offsetY || event.originalEvent.layerY) - $toolTip.height() - 40 + }); +}); + + + + +//Line chart with area + +new Chartist.Line('#chart-with-area', { + labels: [1, 2, 3, 4, 5, 6, 7, 8], + series: [ + [5, 9, 7, 8, 5, 3, 5, 4] + ] +}, { + low: 0, + showArea: true, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + +//Bi-polar Line chart with area only + +new Chartist.Line('#bi-polar-line', { + labels: [1, 2, 3, 4, 5, 6, 7, 8], + series: [ + [1, 2, 3, 1, -2, 0, 1, 0], + [-2, -1, -2, -1, -2.5, -1, -2, -1], + [0, 0, 0, 1, 2, 2.5, 2, 1], + [2.5, 2, 1, 0.5, 1, 0.5, -1, -2.5] + ] +}, { + high: 3, + low: -3, + showArea: true, + showLine: false, + showPoint: false, + fullWidth: true, + axisX: { + showLabel: false, + showGrid: false + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + + +//SVG Path animation + +var chart = new Chartist.Line('#svg-animation', { + labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + series: [ + [1, 5, 2, 5, 4, 3], + [2, 3, 4, 8, 1, 2], + [5, 4, 3, 2, 1, 0.5] + ] +}, { + low: 0, + showArea: true, + showPoint: false, + fullWidth: true +}); + +chart.on('draw', function(data) { + if(data.type === 'line' || data.type === 'area') { + data.element.animate({ + d: { + begin: 2000 * data.index, + dur: 2000, + from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(), + to: data.path.clone().stringify(), + easing: Chartist.Svg.Easing.easeOutQuint + } + }); + } +}); + + + + + +//Line Interpolation / Smoothing + +var chart = new Chartist.Line('#line-smoothing', { + labels: [1, 2, 3, 4, 5], + series: [ + [1, 5, 10, 0, 1], + [10, 15, 0, 1, 2] + ] +}, { + // Remove this configuration to see that chart rendered with cardinal spline interpolation + // Sometimes, on large jumps in data values, it's better to use simple smoothing. + lineSmooth: Chartist.Interpolation.simple({ + divisor: 2 + }), + fullWidth: true, + chartPadding: { + right: 20 + }, + low: 0, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + + +//Bi-polar bar chart + +var data = { + labels: ['W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10'], + series: [ + [1, 2, 4, 8, 6, -2, -1, -4, -6, -2] + ] +}; + +var options = { + high: 10, + low: -10, + axisX: { + labelInterpolationFnc: function(value, index) { + return index % 2 === 0 ? value : null; + } + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}; + +new Chartist.Bar('#bi-polar-bar', data, options); + + + + +//Overlapping bars on mobile + +var data = { + labels: ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + series: [ + [5, 4, 3, 7, 5, 10, 3, 4, 8, 10, 6, 8], + [3, 2, 9, 5, 4, 6, 4, 6, 7, 8, 7, 4] + ] +}; + +var options = { + seriesBarDistance: 10 +}; + +var responsiveOptions = [ + ['screen and (max-width: 640px)', { + seriesBarDistance: 5, + axisX: { + labelInterpolationFnc: function (value) { + return value[0]; + } + } + }] +]; + +new Chartist.Bar('#overlapping-bars', data, options, responsiveOptions); + + + + + +//Multi-line labels + +new Chartist.Bar('#multi-line-chart', { + labels: ['First quarter of the year', 'Second quarter of the year', 'Third quarter of the year', 'Fourth quarter of the year'], + series: [ + [60000, 40000, 80000, 70000], + [40000, 30000, 70000, 65000], + [8000, 3000, 10000, 6000] + ] +}, { + seriesBarDistance: 10, + axisX: { + offset: 60 + }, + axisY: { + offset: 80, + labelInterpolationFnc: function(value) { + return value + ' CHF' + }, + scaleMinSpace: 15 + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + +//Stacked bar chart + +new Chartist.Bar('#stacked-bar-chart', { + labels: ['Q1', 'Q2', 'Q3', 'Q4'], + series: [ + [800000, 1200000, 1400000, 1300000], + [200000, 400000, 500000, 300000], + [160000, 290000, 410000, 600000] + ] +}, { + stackBars: true, + axisY: { + labelInterpolationFnc: function(value) { + return (value / 1000) + 'k'; + } + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}).on('draw', function(data) { + if(data.type === 'bar') { + data.element.attr({ + style: 'stroke-width: 30px' + }); + } +}); + + + + + + +//Horizontal bar chart + +new Chartist.Bar('#horizontal-bar-chart', { + labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], + series: [ + [5, 4, 3, 7, 5, 10, 3], + [3, 2, 9, 5, 4, 6, 4] + ] +}, { + seriesBarDistance: 10, + reverseData: true, + horizontalBars: true, + axisY: { + offset: 70 + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + + +// Extreme responsive configuration + +new Chartist.Bar('#extreme-chart', { + labels: ['Quarter 1', 'Quarter 2', 'Quarter 3', 'Quarter 4'], + series: [ + [5, 4, 3, 7], + [3, 2, 9, 5], + [1, 5, 8, 4], + [2, 3, 4, 6], + [4, 1, 2, 1] + ] +}, { + // Default mobile configuration + stackBars: true, + axisX: { + labelInterpolationFnc: function(value) { + return value.split(/\s+/).map(function(word) { + return word[0]; + }).join(''); + } + }, + axisY: { + offset: 20 + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}, [ + // Options override for media > 400px + ['screen and (min-width: 400px)', { + reverseData: true, + horizontalBars: true, + axisX: { + labelInterpolationFnc: Chartist.noop + }, + axisY: { + offset: 60 + } + }], + // Options override for media > 800px + ['screen and (min-width: 800px)', { + stackBars: false, + seriesBarDistance: 10 + }], + // Options override for media > 1000px + ['screen and (min-width: 1000px)', { + reverseData: false, + horizontalBars: false, + seriesBarDistance: 15 + }] +]); + + + + +//Distributed series + +new Chartist.Bar('#distributed-series', { + labels: ['XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'], + series: [20, 60, 120, 200, 180, 20, 10] +}, { + distributeSeries: true, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + +//Label placement + +new Chartist.Bar('#label-placement-chart', { + labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + series: [ + [5, 4, 3, 7, 5, 10, 3], + [3, 2, 9, 5, 4, 6, 4] + ] +}, { + axisX: { + // On the x-axis start means top and end means bottom + position: 'start' + }, + axisY: { + // On the y-axis start means left and end means right + position: 'end' + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + +//Animating a Donut with Svg.animate + +var chart = new Chartist.Pie('#animating-donut', { + series: [10, 20, 50, 20, 5, 50, 15], + labels: [1, 2, 3, 4, 5, 6, 7] +}, { + donut: true, + showLabel: false, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + +chart.on('draw', function(data) { + if(data.type === 'slice') { + // Get the total path length in order to use for dash array animation + var pathLength = data.element._node.getTotalLength(); + + // Set a dasharray that matches the path length as prerequisite to animate dashoffset + data.element.attr({ + 'stroke-dasharray': pathLength + 'px ' + pathLength + 'px' + }); + + // Create animation definition while also assigning an ID to the animation for later sync usage + var animationDefinition = { + 'stroke-dashoffset': { + id: 'anim' + data.index, + dur: 1000, + from: -pathLength + 'px', + to: '0px', + easing: Chartist.Svg.Easing.easeOutQuint, + // We need to use `fill: 'freeze'` otherwise our animation will fall back to initial (not visible) + fill: 'freeze' + } + }; + + // If this was not the first slice, we need to time the animation so that it uses the end sync event of the previous animation + if(data.index !== 0) { + animationDefinition['stroke-dashoffset'].begin = 'anim' + (data.index - 1) + '.end'; + } + + // We need to set an initial value before the animation starts as we are not in guided mode which would do that for us + data.element.attr({ + 'stroke-dashoffset': -pathLength + 'px' + }); + + // We can't use guided mode as the animations need to rely on setting begin manually + // See http://gionkunz.github.io/chartist-js/api-documentation.html#chartistsvg-function-animate + data.element.animate(animationDefinition, false); + } +}); + +// For the sake of the example we update the chart every time it's created with a delay of 8 seconds +chart.on('created', function() { + if(window.__anim21278907124) { + clearTimeout(window.__anim21278907124); + window.__anim21278907124 = null; + } + window.__anim21278907124 = setTimeout(chart.update.bind(chart), 10000); +}); + + + + +//Simple pie chart + +var data = { + series: [5, 3, 4] +}; + +var sum = function(a, b) { return a + b }; + +new Chartist.Pie('#simple-pie', data, { + labelInterpolationFnc: function(value) { + return Math.round(value / data.series.reduce(sum) * 100) + '%'; + } +}); + + + + +//Pie chart with custom labels + +var data = { + labels: ['Bananas', 'Apples', 'Grapes'], + series: [20, 15, 40] +}; + +var options = { + labelInterpolationFnc: function(value) { + return value[0] + } +}; + +var responsiveOptions = [ + ['screen and (min-width: 640px)', { + chartPadding: 30, + labelOffset: 100, + labelDirection: 'explode', + labelInterpolationFnc: function(value) { + return value; + } + }], + ['screen and (min-width: 1024px)', { + labelOffset: 80, + chartPadding: 20 + }] +]; + +new Chartist.Pie('#pie-chart', data, options, responsiveOptions); + + + +//Gauge chart + +new Chartist.Pie('#gauge-chart', { + series: [20, 10, 30, 40] +}, { + donut: true, + donutWidth: 60, + startAngle: 270, + total: 200, + showLabel: false, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + + + + + +// Different configuration for different series + +var chart = new Chartist.Line('#different-series', { + labels: ['1', '2', '3', '4', '5', '6', '7', '8'], + // Naming the series with the series object array notation + series: [{ + name: 'series-1', + data: [5, 2, -4, 2, 0, -2, 5, -3] + }, { + name: 'series-2', + data: [4, 3, 5, 3, 1, 3, 6, 4] + }, { + name: 'series-3', + data: [2, 4, 3, 1, 4, 5, 3, 2] + }] +}, { + fullWidth: true, + // Within the series options you can use the series names + // to specify configuration that will only be used for the + // specific series. + series: { + 'series-1': { + lineSmooth: Chartist.Interpolation.step() + }, + 'series-2': { + lineSmooth: Chartist.Interpolation.simple(), + showArea: true + }, + 'series-3': { + showPoint: false + } + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}, [ + // You can even use responsive configuration overrides to + // customize your series configuration even further! + ['screen and (max-width: 320px)', { + series: { + 'series-1': { + lineSmooth: Chartist.Interpolation.none() + }, + 'series-2': { + lineSmooth: Chartist.Interpolation.none(), + showArea: false + }, + 'series-3': { + lineSmooth: Chartist.Interpolation.none(), + showPoint: true + } + } + }] +]); + + + + +//SVG Animations chart + +var chart = new Chartist.Line('#svg-dot-animation', { + labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + series: [ + [12, 4, 2, 8, 5, 4, 6, 2, 3, 3, 4, 6], + [4, 8, 9, 3, 7, 2, 10, 5, 8, 1, 7, 10] + ] +}, { + low: 0, + showLine: false, + axisX: { + showLabel: false, + offset: 0 + }, + axisY: { + showLabel: false, + offset: 0 + }, + plugins: [ + Chartist.plugins.tooltip() + ] +}); + +// Let's put a sequence number aside so we can use it in the event callbacks +var seq = 0; + +// Once the chart is fully created we reset the sequence +chart.on('created', function() { + seq = 0; +}); + +// On each drawn element by Chartist we use the Chartist.Svg API to trigger SMIL animations +chart.on('draw', function(data) { + if(data.type === 'point') { + // If the drawn element is a line we do a simple opacity fade in. This could also be achieved using CSS3 animations. + data.element.animate({ + opacity: { + // The delay when we like to start the animation + begin: seq++ * 80, + // Duration of the animation + dur: 500, + // The value where the animation should start + from: 0, + // The value where it should end + to: 1 + }, + x1: { + begin: seq++ * 80, + dur: 500, + from: data.x - 100, + to: data.x, + // You can specify an easing function name or use easing functions from Chartist.Svg.Easing directly + easing: Chartist.Svg.Easing.easeOutQuart + } + }); + } +}); + +// For the sake of the example we update the chart every time it's created with a delay of 8 seconds +chart.on('created', function() { + if(window.__anim0987432598723) { + clearTimeout(window.__anim0987432598723); + window.__anim0987432598723 = null; + } + window.__anim0987432598723 = setTimeout(chart.update.bind(chart), 8000); +}); + diff --git a/assets/pages/jquery.chartjs.init.js b/assets/pages/jquery.chartjs.init.js new file mode 100644 index 0000000..ebdaba4 --- /dev/null +++ b/assets/pages/jquery.chartjs.init.js @@ -0,0 +1,231 @@ +/** +Template Name: Zircos Dashboard +Author: CoderThemes +Email: coderthemes@gmail.com +File: Chartjs +*/ + + +!function($) { + "use strict"; + + var ChartJs = function() {}; + + ChartJs.prototype.respChart = function(selector,type,data, options) { + // get selector by context + var ctx = selector.get(0).getContext("2d"); + // pointing parent container to make chart js inherit its width + var container = $(selector).parent(); + + // enable resizing matter + $(window).resize( generateChart ); + + // this function produce the responsive Chart JS + function generateChart(){ + // make chart width fit with its container + var ww = selector.attr('width', $(container).width() ); + switch(type){ + case 'Line': + new Chart(ctx, {type: 'line', data: data, options: options}); + break; + case 'Doughnut': + new Chart(ctx, {type: 'doughnut', data: data, options: options}); + break; + case 'Pie': + new Chart(ctx, {type: 'pie', data: data, options: options}); + break; + case 'Bar': + new Chart(ctx, {type: 'bar', data: data, options: options}); + break; + case 'Radar': + new Chart(ctx, {type: 'radar', data: data, options: options}); + break; + case 'PolarArea': + new Chart(ctx, {data: data, type: 'polarArea', options: options}); + break; + } + // Initiate new chart or Redraw + + }; + // run function - render chart at first load + generateChart(); + }, + //init + ChartJs.prototype.init = function() { + //creating lineChart + var lineChart = { + labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September"], + datasets: [ + { + label: "Sales Analytics", + fill: false, + lineTension: 0.1, + backgroundColor: "#f5707a", + borderColor: "#f5707a", + borderCapStyle: 'butt', + borderDash: [], + borderDashOffset: 0.0, + borderJoinStyle: 'miter', + pointBorderColor: "#f5707a", + pointBackgroundColor: "#fff", + pointBorderWidth: 1, + pointHoverRadius: 5, + pointHoverBackgroundColor: "#f5707a", + pointHoverBorderColor: "#eef0f2", + pointHoverBorderWidth: 2, + pointRadius: 1, + pointHitRadius: 10, + data: [65, 59, 80, 81, 56, 55, 40, 35, 30] + } + ] + }; + + var lineOpts = { + scales: { + yAxes: [{ + ticks: { + max: 100, + min: 20, + stepSize: 10 + } + }] + } + }; + + this.respChart($("#lineChart"),'Line',lineChart, lineOpts); + + //donut chart + var donutChart = { + labels: [ + "Desktops", + "Tablets", + "Mobiles" + ], + datasets: [ + { + data: [300, 50, 100], + backgroundColor: [ + "#f9c851", + "#3ac9d6", + "#ebeff2" + ], + hoverBackgroundColor: [ + "#f9c851", + "#3ac9d6", + "#ebeff2" + ], + hoverBorderColor: "#fff" + }] + }; + this.respChart($("#doughnut"),'Doughnut',donutChart); + + + //Pie chart + var pieChart = { + labels: [ + "Desktops", + "Tablets", + "Mobiles" + ], + datasets: [ + { + data: [300, 50, 100], + backgroundColor: [ + "#f9c851", + "#3ac9d6", + "#ebeff2" + ], + hoverBackgroundColor: [ + "#f9c851", + "#3ac9d6", + "#ebeff2" + ], + hoverBorderColor: "#fff" + }] + }; + this.respChart($("#pie"),'Pie',pieChart); + + + //barchart + var barChart = { + labels: ["January", "February", "March", "April", "May", "June", "July"], + datasets: [ + { + label: "Sales Analytics", + backgroundColor: "rgba(127, 193, 252, 0.3)", + borderColor: "#7fc1fc", + borderWidth: 1, + hoverBackgroundColor: "rgba(127, 193, 252, 0.6)", + hoverBorderColor: "#7fc1fc", + data: [65, 59, 80, 81, 56, 55, 40,20] + } + ] + }; + this.respChart($("#bar"),'Bar',barChart); + + + //radar chart + var radarChart = { + labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], + datasets: [ + { + label: "Desktops", + backgroundColor: "rgba(179,181,198,0.2)", + borderColor: "rgba(179,181,198,1)", + pointBackgroundColor: "rgba(179,181,198,1)", + pointBorderColor: "#fff", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(179,181,198,1)", + data: [65, 59, 90, 81, 56, 55, 40] + }, + { + label: "Tablets", + backgroundColor: "rgba(255,99,132,0.2)", + borderColor: "rgba(255,99,132,1)", + pointBackgroundColor: "rgba(255,99,132,1)", + pointBorderColor: "#fff", + pointHoverBackgroundColor: "#fff", + pointHoverBorderColor: "rgba(255,99,132,1)", + data: [28, 48, 40, 19, 96, 27, 100] + } + ] + }; + this.respChart($("#radar"),'Radar',radarChart); + + //Polar area chart + var polarChart = { + datasets: [{ + data: [ + 11, + 16, + 7, + 18 + ], + backgroundColor: [ + "#f5707a", + "#188ae2", + "#4bd396", + "#8d6e63" + ], + label: 'My dataset', // for legend + hoverBorderColor: "#fff" + }], + labels: [ + "Series 1", + "Series 2", + "Series 3", + "Series 4" + ] + }; + this.respChart($("#polarArea"),'PolarArea',polarChart); + }, + $.ChartJs = new ChartJs, $.ChartJs.Constructor = ChartJs + +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.ChartJs.init() +}(window.jQuery); + diff --git a/assets/pages/jquery.charts-sparkline.js b/assets/pages/jquery.charts-sparkline.js new file mode 100644 index 0000000..eb16a24 --- /dev/null +++ b/assets/pages/jquery.charts-sparkline.js @@ -0,0 +1,151 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Component: Sparkline Chart +* +*/ +$( document ).ready(function() { + + var DrawSparkline = function() { + $('#sparkline1').sparkline([0, 23, 43, 35, 44, 45, 56, 37, 40], { + type: 'line', + width: $('#sparkline1').width(), + height: '165', + chartRangeMax: 50, + lineColor: '#4bd396', + fillColor: 'rgba(75, 211, 150, 0.3)', + highlightLineColor: 'rgba(0,0,0,.1)', + highlightSpotColor: 'rgba(0,0,0,.2)', + }); + + $('#sparkline1').sparkline([25, 23, 26, 24, 25, 32, 30, 24, 19], { + type: 'line', + width: $('#sparkline1').width(), + height: '165', + chartRangeMax: 40, + lineColor: '#f5707a', + fillColor: 'rgba(245, 112, 122, 0.3)', + composite: true, + highlightLineColor: 'rgba(0,0,0,.1)', + highlightSpotColor: 'rgba(0,0,0,.2)', + }); + + $('#sparkline2').sparkline([3, 6, 7, 8, 6, 4, 7, 10, 12, 7, 4, 9, 12, 13, 11, 12], { + type: 'bar', + height: '165', + barWidth: '10', + barSpacing: '3', + barColor: '#26a69a' + }); + + $('#sparkline3').sparkline([20, 40, 30, 10], { + type: 'pie', + width: '165', + height: '165', + sliceColors: ['#dcdcdc', '#3ac9d6', '#f9c851', '#8d6e63'] + }); + + $('#sparkline4').sparkline([0, 23, 43, 35, 44, 45, 56, 37, 40], { + type: 'line', + width: $('#sparkline1').width(), + height: '165', + chartRangeMax: 50, + lineColor: '#188ae2', + fillColor: 'transparent', + highlightLineColor: 'rgba(0,0,0,.1)', + highlightSpotColor: 'rgba(0,0,0,.2)' + }); + + $('#sparkline4').sparkline([25, 23, 26, 24, 25, 32, 30, 24, 19], { + type: 'line', + width: $('#sparkline1').width(), + height: '165', + chartRangeMax: 40, + lineColor: '#26a69a', + fillColor: 'transparent', + composite: true, + highlightLineColor: 'rgba(0,0,0,1)', + highlightSpotColor: 'rgba(0,0,0,1)' + }); + + $('#sparkline6').sparkline([3, 6, 7, 8, 6, 4, 7, 10, 12, 7, 4, 9, 12, 13, 11, 12], { + type: 'line', + width: $('#sparkline1').width(), + height: '165', + lineColor: '#7fc1fc', + fillColor: 'rgba(127,193,292,0.5)', + highlightLineColor: 'rgba(0,0,0,.1)', + highlightSpotColor: 'rgba(0,0,0,.2)' + }); + + $('#sparkline6').sparkline([3, 6, 7, 8, 6, 4, 7, 10, 12, 7, 4, 9, 12, 13, 11, 12], { + type: 'bar', + height: '165', + barWidth: '10', + barSpacing: '5', + composite: true, + barColor: '#36404e' + }); + + + + + }, + DrawMouseSpeed = function () { + var mrefreshinterval = 500; // update display every 500ms + var lastmousex=-1; + var lastmousey=-1; + var lastmousetime; + var mousetravel = 0; + var mpoints = []; + var mpoints_max = 30; + $('html').mousemove(function(e) { + var mousex = e.pageX; + var mousey = e.pageY; + if (lastmousex > -1) { + mousetravel += Math.max( Math.abs(mousex-lastmousex), Math.abs(mousey-lastmousey) ); + } + lastmousex = mousex; + lastmousey = mousey; + }); + var mdraw = function() { + var md = new Date(); + var timenow = md.getTime(); + if (lastmousetime && lastmousetime!=timenow) { + var pps = Math.round(mousetravel / (timenow - lastmousetime) * 1000); + mpoints.push(pps); + if (mpoints.length > mpoints_max) + mpoints.splice(0,1); + mousetravel = 0; + $('#sparkline5').sparkline(mpoints, { + tooltipSuffix: ' pixels per second', + type: 'line', + width: $('#sparkline1').width(), + height: '165', + chartRangeMax: 50, + lineColor: '#f5707a', + fillColor: 'rgba(245, 112, 122, 0.3)', + highlightLineColor: 'rgba(24,147,126,.1)', + highlightSpotColor: 'rgba(24,147,126,.2)', + }); + } + lastmousetime = timenow; + setTimeout(mdraw, mrefreshinterval); + } + // We could use setInterval instead, but I prefer to do it this way + setTimeout(mdraw, mrefreshinterval); + }; + + DrawSparkline(); + DrawMouseSpeed(); + + var resizeChart; + + $(window).resize(function(e) { + clearTimeout(resizeChart); + resizeChart = setTimeout(function() { + DrawSparkline(); + DrawMouseSpeed(); + }, 300); + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.chat.js b/assets/pages/jquery.chat.js new file mode 100644 index 0000000..cb561f1 --- /dev/null +++ b/assets/pages/jquery.chat.js @@ -0,0 +1,60 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Chat application +*/ + +!function($) { + "use strict"; + + var ChatApp = function() { + this.$body = $("body"), + this.$chatInput = $('.chat-input'), + this.$chatList = $('.conversation-list'), + this.$chatSendBtn = $('.chat-send .btn') + }; + + //saves chat entry - You should send ajax call to server in order to save chat enrty + ChatApp.prototype.save = function() { + var chatText = this.$chatInput.val(); + var chatTime = moment().format("h:mm"); + if (chatText == "") { + sweetAlert("Oops...", "You forgot to enter your chat message", "error"); + this.$chatInput.focus(); + } else { + $('<li class="clearfix"><div class="chat-avatar"><img src="assets/images/users/avatar-1.jpg" alt="male"><i>' + chatTime + '</i></div><div class="conversation-text"><div class="ctext-wrap"><i>John Deo</i><p>' + chatText + '</p></div></div></li>').appendTo('.conversation-list'); + this.$chatInput.val(''); + this.$chatInput.focus(); + this.$chatList.scrollTo('100%', '100%', { + easing: 'swing' + }); + } + }, + ChatApp.prototype.init = function () { + var $this = this; + //binding keypress event on chat input box - on enter we are adding the chat into chat list - + $this.$chatInput.keypress(function (ev) { + var p = ev.which; + if (p == 13) { + $this.save(); + return false; + } + }); + + + //binding send button click + $this.$chatSendBtn.click(function (ev) { + $this.save(); + return false; + }); + }, + //init ChatApp + $.ChatApp = new ChatApp, $.ChatApp.Constructor = ChatApp + +}(window.jQuery), + +//initializing main application module +function($) { + "use strict"; + $.ChatApp.init(); +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.dashboard.js b/assets/pages/jquery.dashboard.js new file mode 100644 index 0000000..b622337 --- /dev/null +++ b/assets/pages/jquery.dashboard.js @@ -0,0 +1,105 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Dashboard +*/ + +!function($) { + "use strict"; + + var Dashboard1 = function() { + this.$realData = [] + }; + + //creates Bar chart + Dashboard1.prototype.createBarChart = function(element, data, xkey, ykeys, labels, lineColors) { + Morris.Bar({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + hideHover: 'auto', + resize: true, //defaulted to true + gridLineColor: '#eeeeee', + barSizeRatio: 0.2, + barColors: lineColors, + postUnits: 'k' + }); + }, + + //creates line chart + Dashboard1.prototype.createLineChart = function(element, data, xkey, ykeys, labels, opacity, Pfillcolor, Pstockcolor, lineColors) { + Morris.Line({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + fillOpacity: opacity, + pointFillColors: Pfillcolor, + pointStrokeColors: Pstockcolor, + behaveLikeLine: true, + gridLineColor: '#eef0f2', + hideHover: 'auto', + resize: true, //defaulted to true + pointSize: 0, + lineColors: lineColors, + postUnits: 'k' + }); + }, + + //creates Donut chart + Dashboard1.prototype.createDonutChart = function(element, data, colors) { + Morris.Donut({ + element: element, + data: data, + resize: true, //defaulted to true + colors: colors + }); + }, + + + Dashboard1.prototype.init = function() { + + //creating bar chart + var $barData = [ + { y: '01/16', a: 42 }, + { y: '02/16', a: 75 }, + { y: '03/16', a: 38 }, + { y: '04/16', a: 19 }, + { y: '05/16', a: 93 } + ]; + this.createBarChart('morris-bar-example', $barData, 'y', ['a'], ['Statistics'], ['#3bafda']); + + //create line chart + var $data = [ + { y: '2008', a: 50, b: 0 }, + { y: '2009', a: 75, b: 50 }, + { y: '2010', a: 30, b: 80 }, + { y: '2011', a: 50, b: 50 }, + { y: '2012', a: 75, b: 10 }, + { y: '2013', a: 50, b: 40 }, + { y: '2014', a: 75, b: 50 }, + { y: '2015', a: 100, b: 70 } + ]; + this.createLineChart('morris-line-example', $data, 'y', ['a','b'], ['Series A','Series B'],['0.9'],['#ffffff'],['#999999'], ['#10c469','#188ae2']); + + //creating donut chart + var $donutData = [ + {label: "Download Sales", value: 12}, + {label: "In-Store Sales", value: 30}, + {label: "Mail-Order Sales", value: 20} + ]; + this.createDonutChart('morris-donut-example', $donutData, ['#3ac9d6', '#f5707a', "#4bd396"]); + }, + //init + $.Dashboard1 = new Dashboard1, $.Dashboard1.Constructor = Dashboard1 +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.Dashboard1.init(); +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.dashboard_2.js b/assets/pages/jquery.dashboard_2.js new file mode 100644 index 0000000..4eeee7d --- /dev/null +++ b/assets/pages/jquery.dashboard_2.js @@ -0,0 +1,190 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Dashboard 2 +*/ + +! function($) { + "use strict"; + + var FlotChart = function() { + this.$body = $("body") + this.$realData = [] + }; + + //creates plot graph + FlotChart.prototype.createPlotGraph = function(selector, data1, data2, data3, labels, colors, borderColor, bgColor) { + //shows tooltip + function showTooltip(x, y, contents) { + $('<div id="tooltip" class="tooltipflot">' + contents + '</div>').css({ + position : 'absolute', + top : y + 5, + left : x + 5 + }).appendTo("body").fadeIn(200); + } + + + $.plot($(selector), [{ + data : data1, + label : labels[0], + color : colors[0] + }, { + data : data2, + label : labels[1], + color : colors[1] + },{ + data : data3, + label : labels[2], + color : colors[2] + }], { + series : { + lines : { + show : true, + fill : true, + lineWidth : 2, + fillColor : { + colors : [{ + opacity : 0 + }, { + opacity : 0.5 + },{ + opacity : 0.6 + }] + } + }, + points : { + show : false + }, + shadowSize : 0 + }, + + grid : { + hoverable : true, + clickable : true, + borderColor : borderColor, + tickColor : "#f9f9f9", + borderWidth : 1, + labelMargin : 10, + backgroundColor : bgColor + }, + legend : { + position : "ne", + margin : [0, -24], + noColumns : 0, + labelBoxBorderColor : null, + labelFormatter : function(label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width : 30, + height : 2 + }, + yaxis : { + axisLabel: "Daily Visits", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + xaxis : { + axisLabel: "Last Days", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + tooltip : true, + tooltipOpts : { + content : '%s: Value of %x is %y', + shifts : { + x : -60, + y : 25 + }, + defaultTheme : false + } + }); + }, + //end plot graph + + + + + //creates Donut Chart + FlotChart.prototype.createDonutGraph = function(selector, labels, datas, colors) { + var data = [{ + label : labels[0], + data : datas[0] + }, { + label : labels[1], + data : datas[1] + }, { + label : labels[2], + data : datas[2] + }, { + label : labels[3], + data : datas[3] + }]; + var options = { + series : { + pie : { + show : true, + innerRadius : 0.7 + } + }, + legend : { + show : true, + labelFormatter : function(label, series) { + return '<div style="font-size:14px;">&nbsp;' + label + '</div>' + }, + labelBoxBorderColor : null, + margin : 50, + width : 20, + padding : 1 + }, + grid : { + hoverable : true, + clickable : true + }, + colors : colors, + tooltip : true, + tooltipOpts : { + content : "%s, %p.0%" + } + }; + + $.plot($(selector), data, options); + }, + + //initializing various charts and components + FlotChart.prototype.init = function() { + //plot graph data + var uploads = [[0, 5], [1, 8], [2, 10], [3, 12], [4, 9], [5, 5], [6, 7],[7, 9], [8, 8], [9, 16], [10, 14], [11, 12], [12, 10]]; + var downloads = [[0, 2], [1, 4], [2, 7], [3, 9], [4, 6], [5, 3], [6, 10],[7, 8], [8, 5], [9, 14], [10, 10], [11, 10], [12, 8]]; + var downloads1 = [[0, 1], [1, 3], [2, 6], [3, 7], [4, 4], [5, 2], [6, 8],[7, 6], [8, 4], [9, 10], [10, 8], [11, 14], [12, 5]]; + var plabels = ["Google", "Yahoo","Facebbok"]; + var pcolors = ['#4bd396', '#f5707a','#188ae2']; + var borderColor = '#f5f5f5'; + var bgColor = '#fff'; + this.createPlotGraph("#website-stats", uploads, downloads, downloads1, plabels, pcolors, borderColor, bgColor); + + + //Donut pie graph data + var donutlabels = ["Series 1", "Series 2", "Series 3", "Series 4"]; + var donutdatas = [35, 20, 10, 20]; + var donutcolors = ['#ff9800', '#8d6e63', "#26a69a", "#7fc1fc"]; + this.createDonutGraph("#donut-chart #donut-chart-container", donutlabels, donutdatas, donutcolors); + }, + + //init flotchart + $.FlotChart = new FlotChart, $.FlotChart.Constructor = + FlotChart + +}(window.jQuery), + +//initializing flotchart +function($) { + "use strict"; + $.FlotChart.init() +}(window.jQuery); + diff --git a/assets/pages/jquery.datatables.editable.init.js b/assets/pages/jquery.datatables.editable.init.js new file mode 100644 index 0000000..72b3077 --- /dev/null +++ b/assets/pages/jquery.datatables.editable.init.js @@ -0,0 +1,244 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Component: Editable +* +*/ + +(function( $ ) { + + 'use strict'; + + var EditableTable = { + + options: { + addButton: '#addToTable', + table: '#datatable-editable', + dialog: { + wrapper: '#dialog', + cancelButton: '#dialogCancel', + confirmButton: '#dialogConfirm', + } + }, + + initialize: function() { + this + .setVars() + .build() + .events(); + }, + + setVars: function() { + this.$table = $( this.options.table ); + this.$addButton = $( this.options.addButton ); + + // dialog + this.dialog = {}; + this.dialog.$wrapper = $( this.options.dialog.wrapper ); + this.dialog.$cancel = $( this.options.dialog.cancelButton ); + this.dialog.$confirm = $( this.options.dialog.confirmButton ); + + return this; + }, + + build: function() { + this.datatable = this.$table.DataTable({ + aoColumns: [ + null, + null, + null, + { "bSortable": false } + ] + }); + + window.dt = this.datatable; + + return this; + }, + + events: function() { + var _self = this; + + this.$table + .on('click', 'a.save-row', function( e ) { + e.preventDefault(); + + _self.rowSave( $(this).closest( 'tr' ) ); + }) + .on('click', 'a.cancel-row', function( e ) { + e.preventDefault(); + + _self.rowCancel( $(this).closest( 'tr' ) ); + }) + .on('click', 'a.edit-row', function( e ) { + e.preventDefault(); + + _self.rowEdit( $(this).closest( 'tr' ) ); + }) + .on( 'click', 'a.remove-row', function( e ) { + e.preventDefault(); + + var $row = $(this).closest( 'tr' ); + + $.magnificPopup.open({ + items: { + src: _self.options.dialog.wrapper, + type: 'inline' + }, + preloader: false, + modal: true, + callbacks: { + change: function() { + _self.dialog.$confirm.on( 'click', function( e ) { + e.preventDefault(); + + _self.rowRemove( $row ); + $.magnificPopup.close(); + }); + }, + close: function() { + _self.dialog.$confirm.off( 'click' ); + } + } + }); + }); + + this.$addButton.on( 'click', function(e) { + e.preventDefault(); + + _self.rowAdd(); + }); + + this.dialog.$cancel.on( 'click', function( e ) { + e.preventDefault(); + $.magnificPopup.close(); + }); + + return this; + }, + + // ========================================================================================== + // ROW FUNCTIONS + // ========================================================================================== + rowAdd: function() { + this.$addButton.attr({ 'disabled': 'disabled' }); + + var actions, + data, + $row; + + actions = [ + '<a href="#" class="hidden on-editing save-row"><i class="fa fa-save"></i></a>', + '<a href="#" class="hidden on-editing cancel-row"><i class="fa fa-times"></i></a>', + '<a href="#" class="on-default edit-row"><i class="fa fa-pencil"></i></a>', + '<a href="#" class="on-default remove-row"><i class="fa fa-trash-o"></i></a>' + ].join(' '); + + data = this.datatable.row.add([ '', '', '', actions ]); + $row = this.datatable.row( data[0] ).nodes().to$(); + + $row + .addClass( 'adding' ) + .find( 'td:last' ) + .addClass( 'actions' ); + + this.rowEdit( $row ); + + this.datatable.order([0,'asc']).draw(); // always show fields + }, + + rowCancel: function( $row ) { + var _self = this, + $actions, + i, + data; + + if ( $row.hasClass('adding') ) { + this.rowRemove( $row ); + } else { + + data = this.datatable.row( $row.get(0) ).data(); + this.datatable.row( $row.get(0) ).data( data ); + + $actions = $row.find('td.actions'); + if ( $actions.get(0) ) { + this.rowSetActionsDefault( $row ); + } + + this.datatable.draw(); + } + }, + + rowEdit: function( $row ) { + var _self = this, + data; + + data = this.datatable.row( $row.get(0) ).data(); + + $row.children( 'td' ).each(function( i ) { + var $this = $( this ); + + if ( $this.hasClass('actions') ) { + _self.rowSetActionsEditing( $row ); + } else { + $this.html( '<input type="text" class="form-control input-block" value="' + data[i] + '"/>' ); + } + }); + }, + + rowSave: function( $row ) { + var _self = this, + $actions, + values = []; + + if ( $row.hasClass( 'adding' ) ) { + this.$addButton.removeAttr( 'disabled' ); + $row.removeClass( 'adding' ); + } + + values = $row.find('td').map(function() { + var $this = $(this); + + if ( $this.hasClass('actions') ) { + _self.rowSetActionsDefault( $row ); + return _self.datatable.cell( this ).data(); + } else { + return $.trim( $this.find('input').val() ); + } + }); + + this.datatable.row( $row.get(0) ).data( values ); + + $actions = $row.find('td.actions'); + if ( $actions.get(0) ) { + this.rowSetActionsDefault( $row ); + } + + this.datatable.draw(); + }, + + rowRemove: function( $row ) { + if ( $row.hasClass('adding') ) { + this.$addButton.removeAttr( 'disabled' ); + } + + this.datatable.row( $row.get(0) ).remove().draw(); + }, + + rowSetActionsEditing: function( $row ) { + $row.find( '.on-editing' ).removeClass( 'hidden' ); + $row.find( '.on-default' ).addClass( 'hidden' ); + }, + + rowSetActionsDefault: function( $row ) { + $row.find( '.on-editing' ).addClass( 'hidden' ); + $row.find( '.on-default' ).removeClass( 'hidden' ); + } + + }; + + $(function() { + EditableTable.initialize(); + }); + +}).apply( this, [ jQuery ]); \ No newline at end of file diff --git a/assets/pages/jquery.datatables.init.js b/assets/pages/jquery.datatables.init.js new file mode 100644 index 0000000..d49f0e4 --- /dev/null +++ b/assets/pages/jquery.datatables.init.js @@ -0,0 +1,37 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Component: Datatable + * + */ +var handleDataTableButtons = function() { + "use strict"; + 0 !== $("#datatable-buttons").length && $("#datatable-buttons").DataTable({ + dom: "Bfrtip", + buttons: [{ + extend: "copy", + className: "btn-sm" + }, { + extend: "csv", + className: "btn-sm" + }, { + extend: "excel", + className: "btn-sm" + }, { + extend: "pdf", + className: "btn-sm" + }, { + extend: "print", + className: "btn-sm" + }], + responsive: !0 + }) + }, + TableManageButtons = function() { + "use strict"; + return { + init: function() { + handleDataTableButtons() + } + } + }(); \ No newline at end of file diff --git a/assets/pages/jquery.fileuploads.init.js b/assets/pages/jquery.fileuploads.init.js new file mode 100644 index 0000000..4c2a4d7 --- /dev/null +++ b/assets/pages/jquery.fileuploads.init.js @@ -0,0 +1,157 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes + * Email: coderthemes@gmail.com +* File Uploads +*/ + +$(document).ready(function(){ + + 'use-strict'; + + //Example 2 + $('#filer_input2').filer({ + limit: 3, + maxSize: 3, + extensions: ['jpg', 'jpeg', 'png', 'gif', 'psd'], + changeInput: true, + showThumbs: true, + addMore: true + }); + + //Example 1 + $("#filer_input1").filer({ + limit: null, + maxSize: null, + extensions: null, + changeInput: '<div class="jFiler-input-dragDrop"><div class="jFiler-input-inner"><div class="jFiler-input-icon"><i class="icon-jfi-cloud-up-o"></i></div><div class="jFiler-input-text"><h3>Drag & Drop files here</h3> <span style="display:inline-block; margin: 15px 0">or</span></div><a class="jFiler-input-choose-btn btn btn-custom waves-effect waves-light">Browse Files</a></div></div>', + showThumbs: true, + theme: "dragdropbox", + templates: { + box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>', + item: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li>{{fi-progressBar}}</li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + itemAppend: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li><span class="jFiler-item-others">{{fi-icon}}</span></li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + progressBar: '<div class="bar"></div>', + itemAppendToEnd: false, + removeConfirmation: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + dragDrop: { + dragEnter: null, + dragLeave: null, + drop: null, + }, + uploadFile: { + url: "../plugins/jquery.filer/php/upload.php", + data: null, + type: 'POST', + enctype: 'multipart/form-data', + beforeSend: function(){}, + success: function(data, el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + error: function(el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + statusCode: null, + onProgress: null, + onComplete: null + }, + files: [ + { + name: "1.jpg", + size: 145, + type: "image/jpg", + file: "assets/images/small/img-1.jpg" + }, + { + name: "2.jpg", + size: 145, + type: "image/jpg", + file: "assets/images/small/img-2.jpg" + } + ], + addMore: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + afterShow: null, + onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){ + var file = file.name; + $.post('../plugins/jquery.filer/php/remove_file.php', {file: file}); + }, + onEmpty: null, + options: null, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB." + } + } + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.flot.init.js b/assets/pages/jquery.flot.init.js new file mode 100644 index 0000000..e4dc888 --- /dev/null +++ b/assets/pages/jquery.flot.init.js @@ -0,0 +1,693 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Module/App: Flot-Chart + */ + +! function($) { + "use strict"; + + var FlotChart = function() { + this.$body = $("body") + this.$realData = [] + }; + + //creates plot graph + FlotChart.prototype.createPlotGraph = function(selector, data1, data2, data3, labels, colors, borderColor, bgColor) { + //shows tooltip + function showTooltip(x, y, contents) { + $('<div id="tooltip" class="tooltipflot">' + contents + '</div>').css({ + position : 'absolute', + top : y + 5, + left : x + 5 + }).appendTo("body").fadeIn(200); + } + + + $.plot($(selector), [{ + data : data1, + label : labels[0], + color : colors[0] + }, { + data : data2, + label : labels[1], + color : colors[1] + },{ + data : data3, + label : labels[2], + color : colors[2] + }], { + series : { + lines : { + show : true, + fill : true, + lineWidth : 2, + fillColor : { + colors : [{ + opacity : 0 + }, { + opacity : 0.5 + },{ + opacity : 0.6 + }] + } + }, + points : { + show : false + }, + shadowSize : 0 + }, + + grid : { + hoverable : true, + clickable : true, + borderColor : borderColor, + tickColor : "#f9f9f9", + borderWidth : 1, + labelMargin : 10, + backgroundColor : bgColor + }, + legend : { + position : "ne", + margin : [0, -24], + noColumns : 0, + labelBoxBorderColor : null, + labelFormatter : function(label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width : 30, + height : 2 + }, + yaxis : { + axisLabel: "Daily Visits", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + xaxis : { + axisLabel: "Last Days", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + tooltip : true, + tooltipOpts : { + content : '%s: Value of %x is %y', + shifts : { + x : -60, + y : 25 + }, + defaultTheme : false + } + }); + }, + //end plot graph + + //creates plot Dot graph + FlotChart.prototype.createPlotDotGraph = function(selector, data1, data2, labelsDot, colorsDot, borderColorDot, bgColorDot) { + //shows tooltip + function showTooltip(x, y, contents) { + $('<div id="tooltip" class="tooltipflot">' + contents + '</div>').css({ + position : 'absolute', + top : y + 5, + left : x + 5 + }).appendTo("body").fadeIn(200); + } + + + $.plot($(selector), [{ + data : data1, + label : labelsDot[0], + color : colorsDot[0] + }, { + data : data2, + label : labelsDot[1], + color : colorsDot[1] + }], { + series : { + lines : { + show : true, + fill : true, + lineWidth : 3, + fillColor : { + colors : [{ + opacity : 0 + }, { + opacity : 0 + }] + } + }, + points : { + show : true + }, + shadowSize : 0 + }, + + grid : { + hoverable : true, + clickable : true, + borderColor : borderColorDot, + tickColor : "#f9f9f9", + borderWidth : 1, + labelMargin : 10, + backgroundColor : bgColorDot + }, + legend : { + position : "ne", + margin : [0, -24], + noColumns : 0, + labelBoxBorderColor : null, + labelFormatter : function(label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width : 30, + height : 2 + }, + yaxis : { + axisLabel: "Gold Price(USD)", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + xaxis : { + axisLabel: "Numbers", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + tooltip : true, + tooltipOpts : { + content : '%s: Value of %x is %y', + shifts : { + x : -60, + y : 25 + }, + defaultTheme : false + } + }); + }, + //end plot Dot graph + + //creates Pie Chart + FlotChart.prototype.createPieGraph = function(selector, labels, datas, colors) { + var data = [{ + label : labels[0], + data : datas[0] + }, { + label : labels[1], + data : datas[1] + }, { + label : labels[2], + data : datas[2] + },{ + label : labels[3], + data : datas[3] + }]; + var options = { + series : { + pie : { + show : true + } + }, + legend : { + show : true + }, + grid : { + hoverable : true, + clickable : true + }, + colors : colors, + tooltip : true, + tooltipOpts : { + content : "%s, %p.0%" + } + }; + + $.plot($(selector), data, options); + }, + + //returns some random data + FlotChart.prototype.randomData = function() { + var totalPoints = 300; + if (this.$realData.length > 0) + this.$realData = this.$realData.slice(1); + + // Do a random walk + while (this.$realData.length < totalPoints) { + + var prev = this.$realData.length > 0 ? this.$realData[this.$realData.length - 1] : 50, + y = prev + Math.random() * 10 - 5; + + if (y < 0) { + y = 0; + } else if (y > 100) { + y = 100; + } + + this.$realData.push(y); + } + + // Zip the generated y values with the x values + var res = []; + for (var i = 0; i < this.$realData.length; ++i) { + res.push([i, this.$realData[i]]) + } + + return res; + }, FlotChart.prototype.createRealTimeGraph = function(selector, data, colors) { + var plot = $.plot(selector, [data], { + colors : colors, + series : { + grow : { + active : false + }, //disable auto grow + shadowSize : 0, // drawing is faster without shadows + lines : { + show : true, + fill : false, + lineWidth : 2, + steps : false + } + }, + grid : { + show : true, + aboveData : false, + color : '#dcdcdc', + labelMargin : 15, + axisMargin : 0, + borderWidth : 0, + borderColor : null, + minBorderMargin : 5, + clickable : true, + hoverable : true, + autoHighlight : false, + mouseActiveRadius : 20 + }, + tooltip : true, //activate tooltip + tooltipOpts : { + content : "Value is : %y.0" + "%", + shifts : { + x : -30, + y : -50 + } + }, + yaxis : { + axisLabel: "Response Time (ms)", + min : 0, + max : 100, + tickColor : '#f5f5f5', + color : 'rgba(0,0,0,0.1)' + }, + xaxis : { + axisLabel: "Point Value (1000)", + show : true, + tickColor : '#f5f5f5' + } + }); + + return plot; + }, + //creates Donut Chart + FlotChart.prototype.createDonutGraph = function(selector, labels, datas, colors) { + var data = [{ + label : labels[0], + data : datas[0] + }, { + label : labels[1], + data : datas[1] + }, { + label : labels[2], + data : datas[2] + }, { + label : labels[3], + data : datas[3] + }]; + var options = { + series : { + pie : { + show : true, + innerRadius : 0.7 + } + }, + legend : { + show : true, + labelFormatter : function(label, series) { + return '<div style="font-size:14px;">&nbsp;' + label + '</div>' + }, + labelBoxBorderColor : null, + margin : 50, + width : 20, + padding : 1 + }, + grid : { + hoverable : true, + clickable : true + }, + colors : colors, + tooltip : true, + tooltipOpts : { + content : "%s, %p.0%" + } + }; + + $.plot($(selector), data, options); + }, + //creates Combine Chart + FlotChart.prototype.createStackBarGraph = function(selector, ticks, colors, data) { + var options = { + bars: { + show: true, + barWidth: 0.2, + fill: 1 + }, + grid: { + show: true, + aboveData: false, + labelMargin: 5, + axisMargin: 0, + borderWidth: 1, + minBorderMargin: 5, + clickable: true, + hoverable: true, + autoHighlight: false, + mouseActiveRadius: 20, + borderColor: '#f5f5f5' + }, + series: { + stack: 0 + }, + legend: { + position: "ne", + margin: [0, -24], + noColumns: 0, + labelBoxBorderColor: null, + labelFormatter: function (label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width: 30, + height: 2 + }, + yaxis: ticks.y, + xaxis: ticks.x, + colors: colors, + tooltip: true, //activate tooltip + tooltipOpts: { + content: "%s : %y.0", + shifts: { + x: -30, + y: -50 + } + } + }; + $.plot($(selector), data, options); + }, + //creates Combine Chart + FlotChart.prototype.createLineGraph = function(selector, ticks, colors, data) { + var options = { + series: { + lines: { + show: true + }, + points: { + show: true + } + }, + legend : { + position : "ne", + margin : [0, -24], + noColumns : 0, + labelBoxBorderColor : null, + labelFormatter : function(label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width : 30, + height : 2 + }, + yaxis: ticks.y, + xaxis: ticks.x, + colors: colors, + grid: { + hoverable: true, + borderColor: '#f5f5f5', + borderWidth: 1, + backgroundColor: '#fff' + }, + tooltip: true, //activate tooltip + tooltipOpts: { + content: "%s : %y.0", + shifts: { + x: -30, + y: -50 + } + } + }; + return $.plot($(selector), data, options); + }, + //creates Combine Chart + FlotChart.prototype.createCombineGraph = function(selector, ticks, labels, datas) { + + var data = [{ + label : labels[0], + data : datas[0], + lines : { + show : true, + fill : true + }, + points : { + show : true + } + }, { + label : labels[1], + data : datas[1], + lines : { + show : true + }, + points : { + show : true + } + }, { + label : labels[2], + data : datas[2], + bars : { + show : true + } + }]; + var options = { + series : { + shadowSize : 0 + }, + grid : { + hoverable : true, + clickable : true, + tickColor : "#f9f9f9", + borderWidth : 1, + borderColor : "#eeeeee" + }, + colors : ['#4bd396', '#f9c851', "#f5707a"], + tooltip : true, + tooltipOpts : { + defaultTheme : false + }, + legend : { + position : "ne", + margin : [0, -24], + noColumns : 0, + labelBoxBorderColor : null, + labelFormatter : function(label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width : 30, + height : 2 + }, + yaxis : { + axisLabel: "Point Value (1000)", + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + xaxis : { + axisLabel: "Daily Hours", + ticks: ticks, + tickColor : '#f5f5f5', + font : { + color : '#bdbdbd' + } + } + }; + + $.plot($(selector), data, options); + }, + + //initializing various charts and components + FlotChart.prototype.init = function() { + //plot graph data + var uploads = [[0, 5], [1, 8], [2, 10], [3, 12], [4, 9], [5, 5], [6, 7],[7, 9], [8, 8], [9, 16], [10, 14], [11, 12], [12, 10]]; + var downloads = [[0, 2], [1, 4], [2, 7], [3, 9], [4, 6], [5, 3], [6, 10],[7, 8], [8, 5], [9, 14], [10, 10], [11, 10], [12, 8]]; + var downloads1 = [[0, 1], [1, 3], [2, 6], [3, 7], [4, 4], [5, 2], [6, 8],[7, 6], [8, 4], [9, 10], [10, 8], [11, 14], [12, 5]]; + var plabels = ["Google", "Yahoo","Facebbok"]; + var pcolors = ['#4bd396', '#f5707a','#188ae2']; + var borderColor = '#f5f5f5'; + var bgColor = '#fff'; + this.createPlotGraph("#website-stats", uploads, downloads, downloads1, plabels, pcolors, borderColor, bgColor); + + //plot graph Dot data + var uploadsDot = [[0, 2], [1, 4], [2, 7], [3, 9], [4, 6], [5, 3], [6, 10],[7, 8], [8, 5], [9, 14], [10, 10], [11, 10], [12, 8]]; + var downloadsDot = [[0, 1], [1, 3], [2, 6], [3, 7], [4, 4], [5, 2], [6, 8],[7, 6], [8, 4], [9, 10], [10, 8], [11, 14], [12, 5]]; + var plabelsDot = ["Visits", "Page views"]; + var pcolorsDot = ['#4bd396','#f5707a']; + var borderColorDot = '#f5f5f5'; + var bgColorDot = '#fff'; + this.createPlotDotGraph("#website-stats1", uploadsDot, downloadsDot, plabelsDot, pcolorsDot, borderColorDot, bgColorDot); + + //Pie graph data + var pielabels = ["Series 1", "Series 2", "Series 3", "Series 4"]; + var datas = [20, 30, 15, 32]; + var colors = ['#188ae2', '#4bd396', "#f5707a", "#f9c851"]; + this.createPieGraph("#pie-chart #pie-chart-container", pielabels, datas, colors); + + //real time data representation + var plot = this.createRealTimeGraph('#flotRealTime', this.randomData(), ['#3ac9d6']); + plot.draw(); + var $this = this; + function updatePlot() { + plot.setData([$this.randomData()]); + // Since the axes don't change, we don't need to call plot.setupGrid() + plot.draw(); + setTimeout(updatePlot, $('html').hasClass('mobile-device') ? 500 : 500); + } + + updatePlot(); + + //Donut pie graph data + var donutlabels = ["Series 1", "Series 2", "Series 3", "Series 4"]; + var donutdatas = [35, 20, 10, 20]; + var donutcolors = ['#ff9800', '#8d6e63', "#26a69a", "#7fc1fc"]; + this.createDonutGraph("#donut-chart #donut-chart-container", donutlabels, donutdatas, donutcolors); + + //Combine graph data + var data24Hours = [[0, 201], [1, 520], [2, 337], [3, 261], [4, 157], [5, 95], [6, 200], [7, 250], [8, 320], [9, 500], [10, 152], [11, 214], [12, 364], [13, 449], [14, 558], [15, 282], [16, 379], [17, 429], [18, 518], [19, 470], [20, 330], [21, 245], [22, 358], [23, 74]]; + var data48Hours = [[0, 311], [1, 630], [2, 447], [3, 371], [4, 267], [5, 205], [6, 310], [7, 360], [8, 430], [9, 610], [10, 262], [11, 324], [12, 474], [13, 559], [14, 668], [15, 392], [16, 489], [17, 539], [18, 628], [19, 580], [20, 440], [21, 355], [22, 468], [23, 184]]; + var dataDifference = [[23, 727], [22, 128], [21, 110], [20, 92], [19, 172], [18, 63], [17, 150], [16, 592], [15, 12], [14, 246], [13, 52], [12, 149], [11, 123], [10, 2], [9, 325], [8, 10], [7, 15], [6, 89], [5, 65], [4, 77], [3, 600], [2, 200], [1, 385], [0, 200]]; + var ticks = [[0, "22h"], [1, ""], [2, "00h"], [3, ""], [4, "02h"], [5, ""], [6, "04h"], [7, ""], [8, "06h"], [9, ""], [10, "08h"], [11, ""], [12, "10h"], [13, ""], [14, "12h"], [15, ""], [16, "14h"], [17, ""], [18, "16h"], [19, ""], [20, "18h"], [21, ""], [22, "20h"], [23, ""]]; + var combinelabels = ["Last 24 Hours", "Last 48 Hours", "Difference"]; + var combinedatas = [data24Hours, data48Hours, dataDifference]; + + this.createCombineGraph("#combine-chart #combine-chart-container", ticks, combinelabels, combinedatas); + + //bar chart = stacked + var stack_ticks = { + y: { + axisLabel: "Sales Value (USD)", + tickColor: '#f5f5f5', + font: { + color: '#bdbdbd' + } + }, + x: { + axisLabel: "Last 10 Days", + tickColor: '#f5f5f5', + font: { + color: '#bdbdbd' + } + } + }; + + //random data + var d1 = []; + for (var i = 0; i <= 10; i += 1) + d1.push([i, parseInt(Math.random() * 30)]); + + var d2 = []; + for (var i = 0; i <= 10; i += 1) + d2.push([i, parseInt(Math.random() * 30)]); + + var d3 = []; + for (var i = 0; i <= 10; i += 1) + d3.push([i, parseInt(Math.random() * 30)]); + + var ds = new Array(); + + ds.push({ + label: "Series One", + data: d1, + bars: { + order: 3 + } + }); + ds.push({ + label: "Series Two", + data: d2, + bars: { + order: 2 + } + }); + ds.push({ + label: "Series Three", + data: d3, + bars: { + order: 1 + } + }); + this.createStackBarGraph("#ordered-bars-chart", stack_ticks, ['#26a69a', '#f5707a', "#ebeff2"], ds); + + + //creating line chart + var line_ticks = { + y: { + min: -1.2, + max: 1.2, + tickColor: '#f5f5f5', + font : { + color : '#bdbdbd' + } + }, + x: { + tickColor: '#f5f5f5', + font : { + color : '#bdbdbd' + } + } + }; + + //sample data + var sin = [], + cos = []; + var offset = 0; + for (var i = 0; i < 12; i += 0.2) { + sin.push([i, Math.sin(i + offset)]); + cos.push([i, Math.cos(i + offset)]); + } + var line_data = [ + { + data: sin, + label: "Google", + }, + { + data: cos, + label: "Yahoo" + } + ]; + this.createLineGraph("#line-chart-alt", line_ticks, ["#f5707a", "#188ae2"], line_data); + }, + + //init flotchart + $.FlotChart = new FlotChart, $.FlotChart.Constructor = + FlotChart + +}(window.jQuery), + +//initializing flotchart +function($) { + "use strict"; + $.FlotChart.init() +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.form-advanced.init.js b/assets/pages/jquery.form-advanced.init.js new file mode 100644 index 0000000..8d91c01 --- /dev/null +++ b/assets/pages/jquery.form-advanced.init.js @@ -0,0 +1,126 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Form Advanced + */ + + +jQuery(document).ready(function () { + + //advance multiselect start + $('#my_multi_select3').multiSelect({ + selectableHeader: "<input type='text' class='form-control search-input' autocomplete='off' placeholder='search...'>", + selectionHeader: "<input type='text' class='form-control search-input' autocomplete='off' placeholder='search...'>", + afterInit: function (ms) { + var that = this, + $selectableSearch = that.$selectableUl.prev(), + $selectionSearch = that.$selectionUl.prev(), + selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)', + selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected'; + + that.qs1 = $selectableSearch.quicksearch(selectableSearchString) + .on('keydown', function (e) { + if (e.which === 40) { + that.$selectableUl.focus(); + return false; + } + }); + + that.qs2 = $selectionSearch.quicksearch(selectionSearchString) + .on('keydown', function (e) { + if (e.which == 40) { + that.$selectionUl.focus(); + return false; + } + }); + }, + afterSelect: function () { + this.qs1.cache(); + this.qs2.cache(); + }, + afterDeselect: function () { + this.qs1.cache(); + this.qs2.cache(); + } + }); + + // Select2 + $(".select2").select2(); + + $(".select2-limiting").select2({ + maximumSelectionLength: 2 + }); + + $('.selectpicker').selectpicker(); + $(":file").filestyle({input: false}); +}); + +//Bootstrap-TouchSpin +$(".vertical-spin").TouchSpin({ + verticalbuttons: true, + verticalupclass: 'ion-plus-round', + verticaldownclass: 'ion-minus-round' +}); + +$("input[name='demo1']").TouchSpin({ + min: 0, + max: 100, + step: 0.1, + decimals: 2, + boostat: 5, + maxboostedstep: 10, + postfix: '%' +}); +$("input[name='demo2']").TouchSpin({ + min: -1000000000, + max: 1000000000, + stepinterval: 50, + maxboostedstep: 10000000, + prefix: '$' +}); +$("input[name='demo3']").TouchSpin(); +$("input[name='demo3_21']").TouchSpin({ + initval: 40 +}); +$("input[name='demo3_22']").TouchSpin({ + initval: 40 +}); + +$("input[name='demo5']").TouchSpin({ + prefix: "pre", + postfix: "post" +}); +$("input[name='demo0']").TouchSpin({}); + + +//Bootstrap-MaxLength +$('input#defaultconfig').maxlength() + +$('input#thresholdconfig').maxlength({ + threshold: 20 +}); + +$('input#moreoptions').maxlength({ + alwaysShow: true, + warningClass: "label label-success", + limitReachedClass: "label label-danger" +}); + +$('input#alloptions').maxlength({ + alwaysShow: true, + warningClass: "label label-success", + limitReachedClass: "label label-danger", + separator: ' out of ', + preText: 'You typed ', + postText: ' chars available.', + validate: true +}); + +$('textarea#textarea').maxlength({ + alwaysShow: true +}); + +$('input#placement').maxlength({ + alwaysShow: true, + placement: 'top-left' +}); \ No newline at end of file diff --git a/assets/pages/jquery.form-pickers.init.js b/assets/pages/jquery.form-pickers.init.js new file mode 100644 index 0000000..bbbb1fb --- /dev/null +++ b/assets/pages/jquery.form-pickers.init.js @@ -0,0 +1,135 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Form Pickers + */ +jQuery(document).ready(function () { + + // Time Picker + jQuery('#timepicker').timepicker({ + defaultTIme: false + }); + jQuery('#timepicker2').timepicker({ + showMeridian: false + }); + jQuery('#timepicker3').timepicker({ + minuteStep: 15 + }); + + //colorpicker start + + $('.colorpicker-default').colorpicker({ + format: 'hex' + }); + $('.colorpicker-rgba').colorpicker(); + + // Date Picker + jQuery('#datepicker').datepicker(); + jQuery('#datepicker-autoclose').datepicker({ + autoclose: true, + todayHighlight: true + }); + jQuery('#datepicker-inline').datepicker(); + jQuery('#datepicker-multiple-date').datepicker({ + format: "mm/dd/yyyy", + clearBtn: true, + multidate: true, + multidateSeparator: "," + }); + jQuery('#date-range').datepicker({ + toggleActive: true + }); + + //Clock Picker + $('.clockpicker').clockpicker({ + donetext: 'Done' + }); + + $('#single-input').clockpicker({ + placement: 'bottom', + align: 'left', + autoclose: true, + 'default': 'now' + }); + $('#check-minutes').click(function (e) { + // Have to stop propagation here + e.stopPropagation(); + $("#single-input").clockpicker('show') + .clockpicker('toggleView', 'minutes'); + }); + + + //Date range picker + $('.input-daterange-datepicker').daterangepicker({ + buttonClasses: ['btn', 'btn-sm'], + applyClass: 'btn-success', + cancelClass: 'btn-default' + }); + $('.input-daterange-timepicker').daterangepicker({ + timePicker: true, + timePickerIncrement: 30, + locale: { + format: 'MM/DD/YYYY h:mm A' + }, + buttonClasses: ['btn', 'btn-sm'], + applyClass: 'btn-success', + cancelClass: 'btn-default' + }); + $('.input-limit-datepicker').daterangepicker({ + format: 'MM/DD/YYYY', + minDate: '06/01/2015', + maxDate: '06/30/2015', + buttonClasses: ['btn', 'btn-sm'], + applyClass: 'btn-success', + cancelClass: 'btn-default', + dateLimit: { + days: 6 + } + }); + + $('#reportrange span').html(moment().subtract(29, 'days').format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY')); + + $('#reportrange').daterangepicker({ + format: 'MM/DD/YYYY', + startDate: moment().subtract(29, 'days'), + endDate: moment(), + minDate: '01/01/2012', + maxDate: '12/31/2015', + dateLimit: { + days: 60 + }, + showDropdowns: true, + showWeekNumbers: true, + timePicker: false, + timePickerIncrement: 1, + timePicker12Hour: true, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + }, + opens: 'left', + drops: 'down', + buttonClasses: ['btn', 'btn-sm'], + applyClass: 'btn-success', + cancelClass: 'btn-default', + separator: ' to ', + locale: { + applyLabel: 'Submit', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + customRangeLabel: 'Custom', + daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + firstDay: 1 + } + }, function (start, end, label) { + console.log(start.toISOString(), end.toISOString(), label); + $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); + }); + +}); \ No newline at end of file diff --git a/assets/pages/jquery.fullcalendar.js b/assets/pages/jquery.fullcalendar.js new file mode 100644 index 0000000..98e9592 --- /dev/null +++ b/assets/pages/jquery.fullcalendar.js @@ -0,0 +1,213 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Component: Full-Calendar +* +*/ + + + + +!function($) { + "use strict"; + + var CalendarApp = function() { + this.$body = $("body") + this.$modal = $('#event-modal'), + this.$event = ('#external-events div.external-event'), + this.$calendar = $('#calendar'), + this.$saveCategoryBtn = $('.save-category'), + this.$categoryForm = $('#add-category form'), + this.$extEvents = $('#external-events'), + this.$calendarObj = null + }; + + + /* on drop */ + CalendarApp.prototype.onDrop = function (eventObj, date) { + var $this = this; + // retrieve the dropped element's stored Event Object + var originalEventObject = eventObj.data('eventObject'); + var $categoryClass = eventObj.attr('data-class'); + // we need to copy it, so that multiple events don't have a reference to the same object + var copiedEventObject = $.extend({}, originalEventObject); + // assign it the date that was reported + copiedEventObject.start = date; + if ($categoryClass) + copiedEventObject['className'] = [$categoryClass]; + // render the event on the calendar + $this.$calendar.fullCalendar('renderEvent', copiedEventObject, true); + // is the "remove after drop" checkbox checked? + if ($('#drop-remove').is(':checked')) { + // if so, remove the element from the "Draggable Events" list + eventObj.remove(); + } + }, + /* on click on event */ + CalendarApp.prototype.onEventClick = function (calEvent, jsEvent, view) { + var $this = this; + var form = $("<form></form>"); + form.append("<label>Change event name</label>"); + form.append("<div class='input-group'><input class='form-control' type=text value='" + calEvent.title + "' /><span class='input-group-btn'><button type='submit' class='btn btn-success waves-effect waves-light'><i class='fa fa-check'></i> Save</button></span></div>"); + $this.$modal.modal({ + backdrop: 'static' + }); + $this.$modal.find('.delete-event').show().end().find('.save-event').hide().end().find('.modal-body').empty().prepend(form).end().find('.delete-event').unbind('click').click(function () { + $this.$calendarObj.fullCalendar('removeEvents', function (ev) { + return (ev._id == calEvent._id); + }); + $this.$modal.modal('hide'); + }); + $this.$modal.find('form').on('submit', function () { + calEvent.title = form.find("input[type=text]").val(); + $this.$calendarObj.fullCalendar('updateEvent', calEvent); + $this.$modal.modal('hide'); + return false; + }); + }, + /* on select */ + CalendarApp.prototype.onSelect = function (start, end, allDay) { + var $this = this; + $this.$modal.modal({ + backdrop: 'static' + }); + var form = $("<form></form>"); + form.append("<div class='row'></div>"); + form.find(".row") + .append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Event Name</label><input class='form-control' placeholder='Insert Event Name' type='text' name='title'/></div></div>") + .append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Category</label><select class='form-control' name='category'></select></div></div>") + .find("select[name='category']") + .append("<option value='bg-danger'>Danger</option>") + .append("<option value='bg-success'>Success</option>") + .append("<option value='bg-purple'>Purple</option>") + .append("<option value='bg-primary'>Primary</option>") + .append("<option value='bg-pink'>Pink</option>") + .append("<option value='bg-info'>Info</option>") + .append("<option value='bg-inverse'>Inverse</option>") + .append("<option value='bg-orange'>Orange</option>") + .append("<option value='bg-brown'>Brown</option>") + .append("<option value='bg-teal'>Teal</option>") + .append("<option value='bg-warning'>Warning</option></div></div>"); + $this.$modal.find('.delete-event').hide().end().find('.save-event').show().end().find('.modal-body').empty().prepend(form).end().find('.save-event').unbind('click').click(function () { + form.submit(); + }); + $this.$modal.find('form').on('submit', function () { + var title = form.find("input[name='title']").val(); + var beginning = form.find("input[name='beginning']").val(); + var ending = form.find("input[name='ending']").val(); + var categoryClass = form.find("select[name='category'] option:checked").val(); + if (title !== null && title.length != 0) { + $this.$calendarObj.fullCalendar('renderEvent', { + title: title, + start:start, + end: end, + allDay: false, + className: categoryClass + }, true); + $this.$modal.modal('hide'); + } + else{ + alert('You have to give a title to your event'); + } + return false; + + }); + $this.$calendarObj.fullCalendar('unselect'); + }, + CalendarApp.prototype.enableDrag = function() { + //init events + $(this.$event).each(function () { + // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/) + // it doesn't need to have a start or end + var eventObject = { + title: $.trim($(this).text()) // use the element's text as the event title + }; + // store the Event Object in the DOM element so we can get to it later + $(this).data('eventObject', eventObject); + // make the event draggable using jQuery UI + $(this).draggable({ + zIndex: 999, + revert: true, // will cause the event to go back to its + revertDuration: 0 // original position after the drag + }); + }); + } + /* Initializing */ + CalendarApp.prototype.init = function() { + this.enableDrag(); + /* Initialize the calendar */ + var date = new Date(); + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + var form = ''; + var today = new Date($.now()); + + var defaultEvents = [{ + title: 'Hey!', + start: new Date($.now() + 158000000), + className: 'bg-purple' + }, + { + title: 'See John Deo', + start: today, + end: today, + className: 'bg-success' + }, + { + title: 'Meet John Deo', + start: new Date($.now() + 168000000), + className: 'bg-info' + }, + { + title: 'Buy a Theme', + start: new Date($.now() + 338000000), + className: 'bg-primary' + }]; + + var $this = this; + $this.$calendarObj = $this.$calendar.fullCalendar({ + slotDuration: '00:15:00', /* If we want to split day time each 15minutes */ + minTime: '08:00:00', + maxTime: '19:00:00', + defaultView: 'month', + handleWindowResize: true, + height: $(window).height() - 200, + header: { + left: 'prev,next today', + center: 'title', + right: 'month,agendaWeek,agendaDay' + }, + events: defaultEvents, + editable: true, + droppable: true, // this allows things to be dropped onto the calendar !!! + eventLimit: true, // allow "more" link when too many events + selectable: true, + drop: function(date) { $this.onDrop($(this), date); }, + select: function (start, end, allDay) { $this.onSelect(start, end, allDay); }, + eventClick: function(calEvent, jsEvent, view) { $this.onEventClick(calEvent, jsEvent, view); } + + }); + + //on new event + this.$saveCategoryBtn.on('click', function(){ + var categoryName = $this.$categoryForm.find("input[name='category-name']").val(); + var categoryColor = $this.$categoryForm.find("select[name='category-color']").val(); + if (categoryName !== null && categoryName.length != 0) { + $this.$extEvents.append('<div class="external-event bg-' + categoryColor + '" data-class="bg-' + categoryColor + '" style="position: relative;"><i class="mdi mdi-checkbox-blank-circle m-r-10 vertical-middle"></i>' + categoryName + '</div>') + $this.enableDrag(); + } + + }); + }, + + //init CalendarApp + $.CalendarApp = new CalendarApp, $.CalendarApp.Constructor = CalendarApp + +}(window.jQuery), + +//initializing CalendarApp +function($) { + "use strict"; + $.CalendarApp.init() +}(window.jQuery); diff --git a/assets/pages/jquery.gmaps.js b/assets/pages/jquery.gmaps.js new file mode 100644 index 0000000..d66e785 --- /dev/null +++ b/assets/pages/jquery.gmaps.js @@ -0,0 +1,226 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Google Maps +*/ + +!function($) { + "use strict"; + + var GoogleMap = function() {}; + + //creates basic map + GoogleMap.prototype.createBasic = function($container) { + return new GMaps({ + div: $container, + lat: -12.043333, + lng: -77.028333 + }); + }, + //creates map with markers + GoogleMap.prototype.createMarkers = function($container) { + var map = new GMaps({ + div: $container, + lat: -12.043333, + lng: -77.028333 + }); + + //sample markers, but you can pass actual marker data as function parameter + map.addMarker({ + lat: -12.043333, + lng: -77.03, + title: 'Lima', + details: { + database_id: 42, + author: 'HPNeo' + }, + click: function(e){ + if(console.log) + console.log(e); + alert('You clicked in this marker'); + } + }); + map.addMarker({ + lat: -12.042, + lng: -77.028333, + title: 'Marker with InfoWindow', + infoWindow: { + content: '<p>HTML Content</p>' + } + }); + + return map; + }, + //creates map with polygone + GoogleMap.prototype.createWithPolygon = function ($container, $path) { + var map = new GMaps({ + div: $container, + lat: -12.043333, + lng: -77.028333 + }); + + var polygon = map.drawPolygon({ + paths: $path, + strokeColor: '#BBD8E9', + strokeOpacity: 1, + strokeWeight: 3, + fillColor: '#BBD8E9', + fillOpacity: 0.6 + }); + + return map; + }, + + //creates map with overlay + GoogleMap.prototype.createWithOverlay = function ($container) { + var map = new GMaps({ + div: $container, + lat: -12.043333, + lng: -77.028333 + }); + map.drawOverlay({ + lat: map.getCenter().lat(), + lng: map.getCenter().lng(), + content: '<div class="gmaps-overlay">Our Office!<div class="gmaps-overlay_arrow above"></div></div>', + verticalAlign: 'top', + horizontalAlign: 'center' + }); + + return map; + }, + + //creates map with street view + GoogleMap.prototype.createWithStreetview = function ($container, $lat, $lng) { + return GMaps.createPanorama({ + el: $container, + lat : $lat, + lng : $lng + }); + }, + //Routes + GoogleMap.prototype.createWithRoutes = function ($container, $lat, $lng) { + var map = new GMaps({ + div: $container, + lat: $lat, + lng: $lng + }); + $('#start_travel').click(function(e){ + e.preventDefault(); + map.travelRoute({ + origin: [-12.044012922866312, -77.02470665341184], + destination: [-12.090814532191756, -77.02271108990476], + travelMode: 'driving', + step: function(e){ + $('#instructions').append('<li>'+e.instructions+'</li>'); + $('#instructions li:eq('+e.step_number+')').delay(450*e.step_number).fadeIn(200, function(){ + map.setCenter(e.end_location.lat(), e.end_location.lng()); + map.drawPolyline({ + path: e.path, + strokeColor: '#131540', + strokeOpacity: 0.6, + strokeWeight: 6 + }); + }); + } + }); + }); + return map; + }, + //Type + GoogleMap.prototype.createMapByType = function ($container, $lat, $lng) { + var map = new GMaps({ + div: $container, + lat: $lat, + lng: $lng, + mapTypeControlOptions: { + mapTypeIds : ["hybrid", "roadmap", "satellite", "terrain", "osm", "cloudmade"] + } + }); + map.addMapType("osm", { + getTileUrl: function(coord, zoom) { + return "http://tile.openstreetmap.org/" + zoom + "/" + coord.x + "/" + coord.y + ".png"; + }, + tileSize: new google.maps.Size(256, 256), + name: "OpenStreetMap", + maxZoom: 18 + }); + map.addMapType("cloudmade", { + getTileUrl: function(coord, zoom) { + return "http://b.tile.cloudmade.com/8ee2a50541944fb9bcedded5165f09d9/1/256/" + zoom + "/" + coord.x + "/" + coord.y + ".png"; + }, + tileSize: new google.maps.Size(256, 256), + name: "CloudMade", + maxZoom: 18 + }); + map.setMapTypeId("osm"); + return map; + }, + GoogleMap.prototype.createWithMenu = function ($container, $lat, $lng) { + var map = new GMaps({ + div: $container, + lat: $lat, + lng: $lng + }); + map.setContextMenu({ + control: 'map', + options: [{ + title: 'Add marker', + name: 'add_marker', + action: function(e){ + this.addMarker({ + lat: e.latLng.lat(), + lng: e.latLng.lng(), + title: 'New marker' + }); + this.hideContextMenu(); + } + }, { + title: 'Center here', + name: 'center_here', + action: function(e){ + this.setCenter(e.latLng.lat(), e.latLng.lng()); + } + }] + }); + }, + //init + GoogleMap.prototype.init = function() { + var $this = this; + $(document).ready(function(){ + //creating basic map + $this.createBasic('#gmaps-basic'), + //with sample markers + $this.createMarkers('#gmaps-markers'); + + //polygon + var path = [[-12.040397656836609,-77.03373871559225], + [-12.040248585302038,-77.03993927003302], + [-12.050047116528843,-77.02448169303511], + [-12.044804866577001,-77.02154422636042]]; + $this.createWithPolygon('#gmaps-polygons', path); + + //overlay + $this.createWithOverlay('#gmaps-overlay'); + + //street view + $this.createWithStreetview('#panorama', 42.3455, -71.0983); + + //routes + $this.createWithRoutes('#gmaps-route',-12.043333, -77.028333); + + //types + $this.createMapByType('#gmaps-types', -12.043333, -77.028333); + + //statu + $this.createWithMenu('#gmaps-menu', -12.043333, -77.028333); + }); + }, + //init + $.GoogleMap = new GoogleMap, $.GoogleMap.Constructor = GoogleMap +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.GoogleMap.init() +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.google-charts.init.js b/assets/pages/jquery.google-charts.init.js new file mode 100644 index 0000000..565671c --- /dev/null +++ b/assets/pages/jquery.google-charts.init.js @@ -0,0 +1,465 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Module/App: Flot-Chart + */ + +! function($) { + "use strict"; + + var GoogleChart = function() { + this.$body = $("body") + }; + + //creates line graph + GoogleChart.prototype.createLineChart = function(selector, data, axislabel, colors) { + var options = { + fontName: 'Hind Madurai', + height: 340, + curveType: 'function', + fontSize: 14, + chartArea: { + left: '5%', + width: '90%', + height: 300 + }, + pointSize: 4, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + vAxis: { + title: axislabel, + titleTextStyle: { + fontSize: 14, + italic: false + }, + gridlines:{ + color: '#f5f5f5', + count: 10 + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'center', + textStyle: { + fontSize: 14 + } + }, + lineWidth: 3, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var line_chart = new google.visualization.LineChart(selector); + line_chart.draw(google_chart_data, options); + return line_chart; + }, + //creates area graph + GoogleChart.prototype.createAreaChart = function(selector, data, axislabel, colors) { + var options = { + fontName: 'Hind Madurai', + height: 340, + curveType: 'function', + fontSize: 14, + chartArea: { + left: '5%', + width: '90%', + height: 300 + }, + pointSize: 4, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + vAxis: { + title: axislabel, + titleTextStyle: { + fontSize: 14, + italic: false + }, + gridarea: { + color: '#f5f5f5', + count: 10 + }, + gridlines: { + color: '#f5f5f5' + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'end', + textStyle: { + fontSize: 14 + } + }, + lineWidth: 2, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var area_chart = new google.visualization.AreaChart(selector); + area_chart.draw(google_chart_data, options); + return area_chart; + }, + //creates Column graph + GoogleChart.prototype.createColumnChart = function(selector, data, axislabel, colors) { + var options = { + fontName: 'Hind Madurai', + height: 400, + fontSize: 13, + chartArea: { + left: '5%', + width: '90%', + height: 350 + }, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + vAxis: { + title: axislabel, + titleTextStyle: { + fontSize: 14, + italic: false + }, + gridlines:{ + color: '#f5f5f5', + count: 10 + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'center', + textStyle: { + fontSize: 13 + } + }, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var column_chart = new google.visualization.ColumnChart(selector); + column_chart.draw(google_chart_data, options); + return column_chart; + }, + //creates bar graph + GoogleChart.prototype.createBarChart = function(selector, data, colors) { + var options = { + fontName: 'Hind Madurai', + height: 400, + fontSize: 14, + chartArea: { + left: '5%', + width: '90%', + height: 350 + }, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + vAxis: { + gridlines:{ + color: '#f5f5f5', + count: 10 + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'center', + textStyle: { + fontSize: 13 + } + }, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var bar_chart = new google.visualization.BarChart(selector); + bar_chart.draw(google_chart_data, options); + return bar_chart; + }, + //creates Column Stacked + GoogleChart.prototype.createColumnStackChart = function(selector, data, axislabel, colors) { + var options = { + fontName: 'Hind Madurai', + height: 400, + fontSize: 13, + chartArea: { + left: '5%', + width: '90%', + height: 350 + }, + isStacked: true, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + vAxis: { + title: axislabel, + titleTextStyle: { + fontSize: 14, + italic: false + }, + gridlines:{ + color: '#f5f5f5', + count: 10 + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'center', + textStyle: { + fontSize: 13 + } + }, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var stackedcolumn_chart = new google.visualization.ColumnChart(selector); + stackedcolumn_chart.draw(google_chart_data, options); + return stackedcolumn_chart; + }, + //creates Bar Stacked + GoogleChart.prototype.createBarStackChart = function(selector, data, colors) { + var options = { + fontName: 'Hind Madurai', + height: 400, + fontSize: 13, + chartArea: { + left: '5%', + width: '90%', + height: 350 + }, + isStacked: true, + tooltip: { + textStyle: { + fontName: 'Hind Madurai', + fontSize: 14 + } + }, + hAxis: { + gridlines: { + color: '#f5f5f5', + count: 10 + }, + minValue: 0 + }, + legend: { + position: 'top', + alignment: 'center', + textStyle: { + fontSize: 13 + } + }, + colors: colors + }; + + + var google_chart_data = google.visualization.arrayToDataTable(data); + var stackedbar_chart = new google.visualization.BarChart(selector); + stackedbar_chart.draw(google_chart_data, options); + return stackedbar_chart; + }, + //creates pie chart + GoogleChart.prototype.createPieChart = function(selector, data, colors, is3D, issliced) { + var options = { + fontName: 'Hind Madurai', + fontSize: 13, + height: 300, + width: 500, + chartArea: { + left: 50, + width: '90%', + height: '90%' + }, + colors: colors + }; + + if(is3D) { + options['is3D'] = true; + } + + if(issliced) { + options['is3D'] = true; + options['pieSliceText'] = 'label'; + options['slices'] = { + 2: {offset: 0.15}, + 5: {offset: 0.1} + }; + } + + var google_chart_data = google.visualization.arrayToDataTable(data); + var pie_chart = new google.visualization.PieChart(selector); + pie_chart.draw(google_chart_data, options); + return pie_chart; + }, + + //creates donut chart + GoogleChart.prototype.createDonutChart = function(selector, data, colors) { + var options = { + fontName: 'Hind Madurai', + fontSize: 13, + height: 300, + pieHole: 0.55, + width: 500, + chartArea: { + left: 50, + width: '90%', + height: '90%' + }, + colors: colors + }; + + var google_chart_data = google.visualization.arrayToDataTable(data); + var pie_chart = new google.visualization.PieChart(selector); + pie_chart.draw(google_chart_data, options); + return pie_chart; + }, + //init + GoogleChart.prototype.init = function () { + var $this = this; + + //creating line chart + var common_data = [ + ['Year', 'Sales', 'Expenses'], + ['2010', 850, 120], + ['2011', 745, 200], + ['2012', 852, 180], + ['2013', 1000, 400], + ['2014', 1170, 460], + ['2015', 660, 1120], + ['2016', 1030, 540] + ]; + $this.createLineChart($('#line-chart')[0], common_data, 'Sales and Expenses', ['#4bd396', '#f5707a']); + + + //creating area chart using same data + $this.createAreaChart($('#area-chart')[0], common_data, 'Sales and Expenses', ['#4bd396', '#f5707a']); + + + //creating column chart + var column_data = [ + ['Year', 'Desktop', 'Tablets', 'Mobiles'], + ['2010', 850, 120, 200], + ['2011', 745, 200, 562], + ['2012', 852, 180, 521], + ['2013', 1000, 400, 652], + ['2014', 1170, 460, 200], + ['2015', 660, 1120, 562], + ['2016', 1030, 540, 852] + ]; + $this.createColumnChart($('#column-chart')[0], column_data, 'Sales and Expenses', ['#4bd396', '#f5707a', '#3ac9d6']); + + + //creating bar chart + var bar_data = [ + ['Year', 'Sales', 'Expenses'], + ['2004', 1000, 400], + ['2005', 1170, 460], + ['2006', 660, 1120], + ['2007', 1030, 540] + ]; + $this.createBarChart($('#bar-chart')[0], bar_data, ['#4bd396', '#f5707a']); + + + //creating columns tacked chart + var column_stacked_data = [ + ['Genre', 'Fantasy & Sci Fi', 'Romance', 'Mystery/Crime', 'General', 'Western', 'Literature', { role: 'annotation' } ], + ['2000', 20, 30, 35, 40, 45, 30, ''], + ['2005', 14, 20, 25, 30, 48, 30, ''], + ['2010', 10, 24, 20, 32, 18, 5, ''], + ['2015', 15, 25, 30, 35, 20, 15, ''], + ['2020', 16, 22, 23, 30, 16, 9, ''], + ['2025', 12, 26, 20, 40, 20, 30, ''], + ['2030', 28, 19, 29, 30, 12, 13, ''] + ]; + $this.createColumnStackChart($('#column-stacked-chart')[0], column_stacked_data, 'Sales and Expenses', ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5', '#3ac9d6']); + + + //creating bar tacked chart + var bar_stacked_data = [ + ['Genre', 'Fantasy & Sci Fi', 'Romance', 'Mystery/Crime', 'General', 'Western', 'Literature', { role: 'annotation' } ], + ['2000', 20, 30, 35, 40, 45, 30, ''], + ['2005', 14, 20, 25, 30, 48, 30, ''], + ['2010', 10, 24, 20, 32, 18, 5, ''], + ['2015', 15, 25, 30, 35, 20, 15, ''], + ['2020', 16, 22, 23, 30, 16, 9, ''], + ['2025', 12, 26, 20, 40, 20, 30, ''], + ['2030', 28, 19, 29, 30, 12, 13, ''] + ]; + $this.createBarStackChart($('#bar-stacked-chart')[0], bar_stacked_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5', '#3ac9d6']); + + + //creating pie chart + var pie_data = [ + ['Task', 'Hours per Day'], + ['Work', 11], + ['Eat', 2], + ['Commute', 2], + ['Watch TV', 2], + ['Sleep', 7] + ]; + $this.createPieChart($('#pie-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], false, false); + + + //creating donut chart + $this.createDonutChart($('#donut-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5']); + + //creating 3d pie chart + $this.createPieChart($('#pie-3d-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], true, false); + + //creating Sliced pie chart + var sliced_Data = [ + ['Language', 'Speakers (in millions)'], + ['Assamese', 13], + ['Bengali', 83], + ['Gujarati', 46], + ['Hindi', 90], + ['Kannada', 38], + ['Malayalam', 33] + ]; + $this.createPieChart($('#3d-exploded-chart')[0], sliced_Data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], true, true); + + //on window resize - redrawing all charts + $(window).on('resize', function() { + $this.createLineChart($('#line-chart')[0], common_data, 'Sales and Expenses', ['#4bd396', '#f5707a']); + $this.createAreaChart($('#area-chart')[0], common_data, 'Sales and Expenses', ['#4bd396', '#f5707a']); + $this.createColumnChart($('#column-chart')[0], column_data, 'Sales and Expenses', ['#4bd396', '#f5707a', '#3ac9d6']); + $this.createBarChart($('#bar-chart')[0], bar_data, ['#4bd396', '#f5707a']); + $this.createColumnStackChart($('#column-stacked-chart')[0], column_stacked_data, 'Sales and Expenses', ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5', '#3ac9d6']); + $this.createBarStackChart($('#bar-stacked-chart')[0], bar_stacked_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5', '#3ac9d6']); + $this.createPieChart($('#pie-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], false, false); + $this.createDonutChart($('#donut-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5']); + $this.createPieChart($('#pie-3d-chart')[0], pie_data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], true, false); + $this.createPieChart($('#3d-exploded-chart')[0], sliced_Data, ['#188ae2', '#4bd396', '#f9c851', '#f5707a', '#6b5fb5'], true, true); + }); + }, + //init GoogleChart + $.GoogleChart = new GoogleChart, $.GoogleChart.Constructor = GoogleChart +}(window.jQuery), + +//initializing GoogleChart +function($) { + "use strict"; + //loading visualization lib - don't forget to include this + google.load("visualization", "1", {packages:["corechart"]}); + //after finished load, calling init method + google.setOnLoadCallback(function() {$.GoogleChart.init();}); +}(window.jQuery); diff --git a/assets/pages/jquery.icons.js b/assets/pages/jquery.icons.js new file mode 100644 index 0000000..5da8090 --- /dev/null +++ b/assets/pages/jquery.icons.js @@ -0,0 +1,52 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Icon search +*/ + +!function($) { + "use strict"; + + var Icons = function() { + this.$body = $("body"), + this.$searchInput = $("#search-input"), + this.$iconsContainer = $(".icon-list-demo"), + this.noMatchEl = $("#no-matching-result") + }; + + //searches the icons matching with given name + Icons.prototype.search = function(query_string) { + if(query_string && query_string.length > 0) { + this.$iconsContainer.find(".col-sm-6").hide(); + var matching_icons = this.$iconsContainer.find('div:contains("' + query_string + '")'); + if(matching_icons.length > 0) { + matching_icons.show(); + this.noMatchEl.hide(); + } else { //no match + this.noMatchEl.show(); + } + } else { + this.$iconsContainer.find(".col-sm-6").show(); + this.noMatchEl.hide(); + } + }, + Icons.prototype.init = function () { + var $this = this; + + $this.noMatchEl.hide(); + //binding key press event on chat input box - on enter we are adding the chat into chat list - + $this.$searchInput.keyup(function (ev) { + ev.preventDefault(); + $this.search($(this).val()); + }); + }, + //init ChatApp + $.Icons = new Icons, $.Icons.Constructor = Icons + +}(window.jQuery), + +//initializing main application module +function($) { + "use strict"; + $.Icons.init(); +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.jvectormap.init.js b/assets/pages/jquery.jvectormap.init.js new file mode 100644 index 0000000..37a3b5d --- /dev/null +++ b/assets/pages/jquery.jvectormap.init.js @@ -0,0 +1,215 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * VectorMap + */ + +! function($) { + "use strict"; + + var VectorMap = function() { + }; + + VectorMap.prototype.init = function() { + //various examples + $('#world-map-markers').vectorMap({ + map : 'world_mill_en', + scaleColors : ['#4bd396', '#4bd396'], + normalizeFunction : 'polynomial', + hoverOpacity : 0.7, + hoverColor : false, + regionStyle : { + initial : { + fill : '#f5707a' + } + }, + markerStyle: { + initial: { + r: 9, + 'fill': '#4bd396', + 'fill-opacity': 0.9, + 'stroke': '#fff', + 'stroke-width' : 7, + 'stroke-opacity': 0.4 + }, + + hover: { + 'stroke': '#fff', + 'fill-opacity': 1, + 'stroke-width': 1.5 + } + }, + backgroundColor : 'transparent', + markers : [{ + latLng : [41.90, 12.45], + name : 'Vatican City' + }, { + latLng : [43.73, 7.41], + name : 'Monaco' + }, { + latLng : [-0.52, 166.93], + name : 'Nauru' + }, { + latLng : [-8.51, 179.21], + name : 'Tuvalu' + }, { + latLng : [43.93, 12.46], + name : 'San Marino' + }, { + latLng : [47.14, 9.52], + name : 'Liechtenstein' + }, { + latLng : [7.11, 171.06], + name : 'Marshall Islands' + }, { + latLng : [17.3, -62.73], + name : 'Saint Kitts and Nevis' + }, { + latLng : [3.2, 73.22], + name : 'Maldives' + }, { + latLng : [35.88, 14.5], + name : 'Malta' + }, { + latLng : [12.05, -61.75], + name : 'Grenada' + }, { + latLng : [13.16, -61.23], + name : 'Saint Vincent and the Grenadines' + }, { + latLng : [13.16, -59.55], + name : 'Barbados' + }, { + latLng : [17.11, -61.85], + name : 'Antigua and Barbuda' + }, { + latLng : [-4.61, 55.45], + name : 'Seychelles' + }, { + latLng : [7.35, 134.46], + name : 'Palau' + }, { + latLng : [42.5, 1.51], + name : 'Andorra' + }, { + latLng : [14.01, -60.98], + name : 'Saint Lucia' + }, { + latLng : [6.91, 158.18], + name : 'Federated States of Micronesia' + }, { + latLng : [1.3, 103.8], + name : 'Singapore' + }, { + latLng : [1.46, 173.03], + name : 'Kiribati' + }, { + latLng : [-21.13, -175.2], + name : 'Tonga' + }, { + latLng : [15.3, -61.38], + name : 'Dominica' + }, { + latLng : [-20.2, 57.5], + name : 'Mauritius' + }, { + latLng : [26.02, 50.55], + name : 'Bahrain' + }, { + latLng : [0.33, 6.73], + name : 'São Tomé and Príncipe' + }] + }); + + $('#usa').vectorMap({ + map : 'us_aea_en', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#3ac9d6' + } + } + }); + + $('#india').vectorMap({ + map : 'in_mill', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#4bd396' + } + } + }); + + $('#uk').vectorMap({ + map : 'uk_mill_en', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#f9c851' + } + } + }); + + $('#chicago').vectorMap({ + map : 'us-il-chicago_mill_en', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#188ae2' + } + } + }); + + + $('#australia').vectorMap({ + map : 'au_mill', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#6b5fb5' + } + } + }); + + + $('#canada').vectorMap({ + map : 'ca_lcc', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#8d6e63' + } + } + }); + + $('#germany').vectorMap({ + map : 'de_mill', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#26a69a' + } + } + }); + + $('#asia').vectorMap({ + map : 'asia_mill', + backgroundColor : 'transparent', + regionStyle : { + initial : { + fill : '#ff9800' + } + } + }); + }, + //init + $.VectorMap = new VectorMap, $.VectorMap.Constructor = + VectorMap +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.VectorMap.init() +}(window.jQuery); diff --git a/assets/pages/jquery.mapael-map.init.js b/assets/pages/jquery.mapael-map.init.js new file mode 100644 index 0000000..c5511fb --- /dev/null +++ b/assets/pages/jquery.mapael-map.init.js @@ -0,0 +1,315 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Module/App: Mapael Maps + */ + + +$(function(){ + + //USA Map + + $mapusa = $(".map-usa"); + + $mapusa.mapael({ + map : { + name : "usa_states", + defaultArea: { + attrs: { + fill: "#36404e", + stroke: "#aaa" + }, + attrsHover: { + fill: "#4bd396" + } + }, + zoom: { + enabled: true, + maxLevel : 10 + } + }, + legend: { + plot: { + title: "American cities", + slices: [{ + size: 24, + attrs: { + fill: "#188ae2" + }, + label: "Product One", + sliceValue: "Value 1" + }, { + size: 24, + attrs: { + fill: "#3ac9d6" + }, + label: "Product Two", + sliceValue: "Value 2" + }, { + size: 24, + attrs: { + fill: "#f5707a" + }, + label: "Product Three", + sliceValue: "Value 3" + }] + } + }, + plots: { + 'ny': { + latitude: 40.717079, + longitude: -74.00116, + tooltip: {content: "New York"}, + value: "Value 3" + }, + 'an': { + latitude: 61.2108398, + longitude: -149.9019557, + tooltip: {content: "Anchorage"}, + value: "Value 3" + }, + 'sf': { + latitude: 37.792032, + longitude: -122.394613, + tooltip: {content: "San Francisco"}, + value: "Value 1" + }, + 'pa': { + latitude: 19.493204, + longitude: -154.8199569, + tooltip: {content: "Pahoa"}, + value: "Value 2" + }, + 'la': { + latitude: 34.025052, + longitude: -118.192006, + tooltip: {content: "Los Angeles"}, + value: "Value 3" + }, + 'dallas': { + latitude: 32.784881, + longitude: -96.808244, + tooltip: {content: "Dallas"}, + value: "Value 2" + }, + 'miami': { + latitude: 25.789125, + longitude: -80.205674, + tooltip: {content: "Miami"}, + value: "Value 3" + }, + 'washington': { + latitude: 38.905761, + longitude: -77.020746, + tooltip: {content: "Washington"}, + value: "Value 2" + }, + 'seattle': { + latitude: 47.599571, + longitude: -122.319426, + tooltip: {content: "Seattle"}, + value: "Value 1" + } + } + }); + + // Zoom on mousewheel with mousewheel jQuery plugin + $mapusa.on("mousewheel", function(e) { + if (e.deltaY > 0) { + $mapusa.trigger("zoom", $mapusa.data("zoomLevel") + 1); + console.log("zoom"); + } else { + $mapusa.trigger("zoom", $mapusa.data("zoomLevel") - 1); + } + + return false; + }); + + + $(".mapcontainer").mapael({ + map: { + name: "world_countries", + defaultArea: { + attrs: { + fill: "#36404e" + , stroke: "#aaa" + }, + attrsHover: { + fill: "#ff9800" + } + } + // Default attributes can be set for all links + , defaultLink: { + factor: 0.4 + , attrsHover: { + stroke: "#f06292" + } + } + , defaultPlot: { + text: { + attrs: { + fill: "#ddd" + }, + attrsHover: { + fill: "#ddd" + } + } + } + }, + plots: { + 'paris': { + latitude: 48.86, + longitude: 2.3444, + tooltip: {content: "Paris<br />Population: 500000000"} + }, + 'newyork': { + latitude: 40.667, + longitude: -73.833, + tooltip: {content: "New york<br />Population: 200001"} + }, + 'sanfrancisco': { + latitude: 37.792032, + longitude: -122.394613, + tooltip: {content: "San Francisco"} + }, + 'brasilia': { + latitude: -15.781682, + longitude: -47.924195, + tooltip: {content: "Brasilia<br />Population: 200000001"} + }, + 'roma': { + latitude: 41.827637, + longitude: 12.462732, + tooltip: {content: "Roma"} + }, + 'miami': { + latitude: 25.789125, + longitude: -80.205674, + tooltip: {content: "Miami"} + }, + + // Size=0 in order to make plots invisible + 'tokyo': { + latitude: 35.687418, + longitude: 139.692306, + size: 0, + text: {content: 'Tokyo'} + }, + 'sydney': { + latitude: -33.917, + longitude: 151.167, + size: 0, + text: {content: 'Sydney'} + }, + 'plot1': { + latitude: 22.906561, + longitude: 86.840170, + size: 0, + text: {content: 'Plot1', position: 'left', margin: 5} + }, + 'plot2': { + latitude: -0.390553, + longitude: 115.586762, + size: 0, + text: {content: 'Plot2'} + }, + 'plot3': { + latitude: 44.065626, + longitude: 94.576079, + size: 0, + text: {content: 'Plot3'} + } + }, + // Links allow you to connect plots between them + links: { + 'link1': { + factor: -0.3 + // The source and the destination of the link can be set with a latitude and a longitude or a x and a y ... + , between: [{latitude: 24.708785, longitude: -5.402427}, {x: 560, y: 280}] + , attrs: { + "stroke-width": 2 + } + , tooltip: {content: "Link"} + } + , 'parisnewyork': { + // ... Or with IDs of plotted points + factor: -0.3 + , between: ['paris', 'newyork'] + , attrs: { + "stroke-width": 2 + } + , tooltip: {content: "Paris - New-York"} + } + , 'parissanfrancisco': { + // The curve can be inverted by setting a negative factor + factor: -0.5 + , between: ['paris', 'sanfrancisco'] + , attrs: { + "stroke-width": 4 + } + , tooltip: {content: "Paris - San - Francisco"} + } + , 'parisbrasilia': { + factor: -0.8 + , between: ['paris', 'brasilia'] + , attrs: { + "stroke-width": 1 + } + , tooltip: {content: "Paris - Brasilia"} + } + , 'romamiami': { + factor: 0.2 + , between: ['roma', 'miami'] + , attrs: { + "stroke-width": 4 + } + , tooltip: {content: "Roma - Miami"} + } + , 'sydneyplot1': { + factor: -0.2 + , between: ['sydney', 'plot1'] + , attrs: { + stroke: "#4bd396", + "stroke-width": 3, + "stroke-linecap": "round", + opacity: 0.6 + } + , tooltip: {content: "Sydney - Plot1"} + } + , 'sydneyplot2': { + factor: -0.1 + , between: ['sydney', 'plot2'] + , attrs: { + stroke: "#4bd396", + "stroke-width": 8, + "stroke-linecap": "round", + opacity: 0.6 + } + , tooltip: {content: "Sydney - Plot2"} + } + , 'sydneyplot3': { + factor: 0.2 + , between: ['sydney', 'plot3'] + , attrs: { + stroke: "#4bd396", + "stroke-width": 4, + "stroke-linecap": "round", + opacity: 0.6 + } + , tooltip: {content: "Sydney - Plot3"} + } + , 'sydneytokyo': { + factor: 0.2 + , between: ['sydney', 'tokyo'] + , attrs: { + stroke: "#4bd396", + "stroke-width": 6, + "stroke-linecap": "round", + opacity: 0.6 + } + , tooltip: {content: "Sydney - Plot2"} + } + } + }); + +}); \ No newline at end of file diff --git a/assets/pages/jquery.morris.init.js b/assets/pages/jquery.morris.init.js new file mode 100644 index 0000000..89cd6b7 --- /dev/null +++ b/assets/pages/jquery.morris.init.js @@ -0,0 +1,192 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Morris Chart +*/ + +!function($) { + "use strict"; + + var MorrisCharts = function() {}; + + //creates line chart + MorrisCharts.prototype.createLineChart = function(element, data, xkey, ykeys, labels, opacity, Pfillcolor, Pstockcolor, lineColors) { + Morris.Line({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + fillOpacity: opacity, + pointFillColors: Pfillcolor, + pointStrokeColors: Pstockcolor, + behaveLikeLine: true, + gridLineColor: '#eef0f2', + hideHover: 'auto', + lineWidth: '3px', + pointSize: 0, + preUnits: '$', + resize: true, //defaulted to true + lineColors: lineColors + }); + }, + //creates area chart + MorrisCharts.prototype.createAreaChart = function(element, pointSize, lineWidth, data, xkey, ykeys, labels, lineColors) { + Morris.Area({ + element: element, + pointSize: 0, + lineWidth: 0, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + hideHover: 'auto', + resize: true, + gridLineColor: '#eef0f2', + lineColors: lineColors + }); + }, + //creates area chart with dotted + MorrisCharts.prototype.createAreaChartDotted = function(element, pointSize, lineWidth, data, xkey, ykeys, labels, Pfillcolor, Pstockcolor, lineColors) { + Morris.Area({ + element: element, + pointSize: 3, + lineWidth: 1, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + hideHover: 'auto', + pointFillColors: Pfillcolor, + pointStrokeColors: Pstockcolor, + resize: true, + smooth: false, + gridLineColor: '#eef0f2', + lineColors: lineColors + }); + }, + //creates Bar chart + MorrisCharts.prototype.createBarChart = function(element, data, xkey, ykeys, labels, lineColors) { + Morris.Bar({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + labels: labels, + hideHover: 'auto', + resize: true, //defaulted to true + gridLineColor: '#eeeeee', + barSizeRatio: 0.4, + xLabelAngle: 35, + barColors: lineColors + }); + }, + //creates Stacked chart + MorrisCharts.prototype.createStackedChart = function(element, data, xkey, ykeys, labels, lineColors) { + Morris.Bar({ + element: element, + data: data, + xkey: xkey, + ykeys: ykeys, + stacked: true, + labels: labels, + hideHover: 'auto', + resize: true, //defaulted to true + gridLineColor: '#eeeeee', + barColors: lineColors + }); + }, + //creates Donut chart + MorrisCharts.prototype.createDonutChart = function(element, data, colors) { + Morris.Donut({ + element: element, + data: data, + resize: true, //defaulted to true + colors: colors + }); + }, + MorrisCharts.prototype.init = function() { + + //create line chart + var $data = [ + { y: '2008', a: 50, b: 0 }, + { y: '2009', a: 75, b: 50 }, + { y: '2010', a: 30, b: 80 }, + { y: '2011', a: 50, b: 50 }, + { y: '2012', a: 75, b: 10 }, + { y: '2013', a: 50, b: 40 }, + { y: '2014', a: 75, b: 50 }, + { y: '2015', a: 100, b: 70 } + ]; + this.createLineChart('morris-line-example', $data, 'y', ['a', 'b'], ['Series A', 'Series B'],['0.1'],['#ffffff'],['#999999'], ['#188ae2', '#4bd396']); + + //creating area chart + var $areaData = [ + { y: '2009', a: 10, b: 20 }, + { y: '2010', a: 75, b: 65 }, + { y: '2011', a: 50, b: 40 }, + { y: '2012', a: 75, b: 65 }, + { y: '2013', a: 50, b: 40 }, + { y: '2014', a: 75, b: 65 }, + { y: '2015', a: 90, b: 60 } + ]; + this.createAreaChart('morris-area-example', 0, 0, $areaData, 'y', ['a', 'b'], ['Series A', 'Series B'], ['#8d6e63', "#bdbdbd"]); + + //creating area chart with dotted + var $areaDotData = [ + { y: '2009', a: 10, b: 20 }, + { y: '2010', a: 75, b: 65 }, + { y: '2011', a: 50, b: 40 }, + { y: '2012', a: 75, b: 65 }, + { y: '2013', a: 50, b: 40 }, + { y: '2014', a: 75, b: 65 }, + { y: '2015', a: 90, b: 60 } + ]; + this.createAreaChartDotted('morris-area-with-dotted', 0, 0, $areaDotData, 'y', ['a', 'b'], ['Series A', 'Series B'],['#ffffff'],['#999999'], ['#6b5fb5', "#bdbdbd"]); + + //creating bar chart + var $barData = [ + { y: '2009', a: 100, b: 90 , c: 40 }, + { y: '2010', a: 75, b: 65 , c: 20 }, + { y: '2011', a: 50, b: 40 , c: 50 }, + { y: '2012', a: 75, b: 65 , c: 95 }, + { y: '2013', a: 50, b: 40 , c: 22 }, + { y: '2014', a: 75, b: 65 , c: 56 }, + { y: '2015', a: 100, b: 90 , c: 60 } + ]; + this.createBarChart('morris-bar-example', $barData, 'y', ['a', 'b', 'c'], ['Series A', 'Series B', 'Series C'], ['#3ac9d6', '#ff9800', "#f5707a"]); + + //creating Stacked chart + var $stckedData = [ + { y: '2005', a: 45, b: 180 }, + { y: '2006', a: 75, b: 65 }, + { y: '2007', a: 100, b: 90 }, + { y: '2008', a: 75, b: 65 }, + { y: '2009', a: 100, b: 90 }, + { y: '2010', a: 75, b: 65 }, + { y: '2011', a: 50, b: 40 }, + { y: '2012', a: 75, b: 65 }, + { y: '2013', a: 50, b: 40 }, + { y: '2014', a: 75, b: 65 }, + { y: '2015', a: 100, b: 90 } + ]; + this.createStackedChart('morris-bar-stacked', $stckedData, 'y', ['a', 'b'], ['Series A', 'Series B'], ['#26a69a', '#ebeff2']); + + //creating donut chart + var $donutData = [ + {label: "Electricity", value: 12}, + {label: "Financial", value: 30}, + {label: "Markets", value: 20} + ]; + this.createDonutChart('morris-donut-example', $donutData, ['#4bd396', '#ebeff2', "#3ac9d6"]); + }, + //init + $.MorrisCharts = new MorrisCharts, $.MorrisCharts.Constructor = MorrisCharts +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.MorrisCharts.init(); +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.nestable.init.js b/assets/pages/jquery.nestable.init.js new file mode 100644 index 0000000..62b1205 --- /dev/null +++ b/assets/pages/jquery.nestable.init.js @@ -0,0 +1,59 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Nestable Component +*/ + +!function($) { + "use strict"; + + var Nestable = function() {}; + + Nestable.prototype.updateOutput = function (e) { + var list = e.length ? e : $(e.target), + output = list.data('output'); + if (window.JSON) { + output.val(window.JSON.stringify(list.nestable('serialize'))); //, null, 2)); + } else { + output.val('JSON browser support required for this demo.'); + } + }, + //init + Nestable.prototype.init = function() { + // activate Nestable for list 1 + $('#nestable_list_1').nestable({ + group: 1 + }).on('change', this.updateOutput); + + // activate Nestable for list 2 + $('#nestable_list_2').nestable({ + group: 1 + }).on('change', this.updateOutput); + + // output initial serialised data + this.updateOutput($('#nestable_list_1').data('output', $('#nestable_list_1_output'))); + this.updateOutput($('#nestable_list_2').data('output', $('#nestable_list_2_output'))); + + $('#nestable_list_menu').on('click', function (e) { + var target = $(e.target), + action = target.data('action'); + if (action === 'expand-all') { + $('.dd').nestable('expandAll'); + } + if (action === 'collapse-all') { + $('.dd').nestable('collapseAll'); + } + }); + + $('#nestable_list_3').nestable(); + }, + //init + $.Nestable = new Nestable, $.Nestable.Constructor = Nestable +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.Nestable.init() +}(window.jQuery); diff --git a/assets/pages/jquery.property-add.init.js b/assets/pages/jquery.property-add.init.js new file mode 100644 index 0000000..245874e --- /dev/null +++ b/assets/pages/jquery.property-add.init.js @@ -0,0 +1,133 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes + * Email: coderthemes@gmail.com +* Property Add +*/ + +$(document).ready(function(){ + + 'use-strict'; + + //Example 1 + $("#filer_input1").filer({ + limit: null, + maxSize: null, + extensions: null, + changeInput: '<div class="jFiler-input-dragDrop"><div class="jFiler-input-inner"><div class="jFiler-input-icon"><i class="icon-jfi-cloud-up-o"></i></div><div class="jFiler-input-text"><h3>Drag & Drop files here</h3> <span style="display:inline-block; margin: 15px 0">or</span></div><a class="jFiler-input-choose-btn btn btn-custom waves-effect waves-light">Browse Files</a></div></div>', + showThumbs: true, + theme: "dragdropbox", + templates: { + box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>', + item: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li>{{fi-progressBar}}</li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + itemAppend: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li><span class="jFiler-item-others">{{fi-icon}}</span></li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + progressBar: '<div class="bar"></div>', + itemAppendToEnd: false, + removeConfirmation: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + dragDrop: { + dragEnter: null, + dragLeave: null, + drop: null, + }, + uploadFile: { + url: "../plugins/jquery.filer/php/upload.php", + data: null, + type: 'POST', + enctype: 'multipart/form-data', + beforeSend: function(){}, + success: function(data, el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + error: function(el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + statusCode: null, + onProgress: null, + onComplete: null + }, + addMore: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + afterShow: null, + onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){ + var file = file.name; + $.post('../plugins/jquery.filer/php/remove_file.php', {file: file}); + }, + onEmpty: null, + options: null, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB." + } + } + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.range-sliders.js b/assets/pages/jquery.range-sliders.js new file mode 100644 index 0000000..e608b86 --- /dev/null +++ b/assets/pages/jquery.range-sliders.js @@ -0,0 +1,66 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Component: Ion Slider +* +*/ +$(document).ready(function () { + $("#range_01").ionRangeSlider(); + + $("#range_02").ionRangeSlider({ + min: 100, + max: 1000, + from: 550 + }); + + $("#range_03").ionRangeSlider({ + type: "double", + grid: true, + min: 0, + max: 1000, + from: 200, + to: 800, + prefix: "$" + }); + + $("#range_04").ionRangeSlider({ + type: "double", + grid: true, + min: -1000, + max: 1000, + from: -500, + to: 500 + }); + + $("#range_05").ionRangeSlider({ + type: "double", + grid: true, + min: -1000, + max: 1000, + from: -500, + to: 500, + step: 250 + }); + + $("#range_06").ionRangeSlider({ + grid: true, + from: 3, + values: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + }); + + $("#range_07").ionRangeSlider({ + grid: true, + min: 1000, + max: 1000000, + from: 200000, + step: 1000, + prettify_enabled: true + }); + + $("#range_08").ionRangeSlider({ + min: 100, + max: 1000, + from: 550, + disable: true + }); +}); \ No newline at end of file diff --git a/assets/pages/jquery.rating.js b/assets/pages/jquery.rating.js new file mode 100644 index 0000000..ba55f19 --- /dev/null +++ b/assets/pages/jquery.rating.js @@ -0,0 +1,195 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Ratings +*/ + +;(function ($) { + $(function () { + $('#default').raty({ + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-warning' + }); + + $('#score').raty({ + score: 3, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#score-callback').raty({ + score: function () { + return $(this).attr('data-score'); + } + }); + + $('#scoreName').raty({ + scoreName: 'entity[score]', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-warning' + }); + + $('#number').raty({ + number: 10, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#number-callback').raty({ + number: function () { + return $(this).attr('data-number'); + } + }); + + $('#numberMax').raty({ + numberMax: 5, + number: 100, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-purple' + }); + + $('#readOnly').raty({ + readOnly: true, + score: 3, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-success' + }); + + $('#readOnly-callback').raty({ + readOnly: function () { + return 'true becomes readOnly' == 'true becomes readOnly'; + } + }); + + $('#noRatedMsg').raty({ + readOnly: true, + noRatedMsg: "I'am readOnly and I haven't rated yet!", + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#halfShow-true').raty({ + score: 3.26 + }); + + $('#halfShow-false').raty({ + halfShow: false, + score: 3.26, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#round').raty({ + round: {down: .26, full: .6, up: .76}, + score: 3.26, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-pink' + }); + + $('#half').raty({ + half: true + }); + + $('#starHalf').raty({ + half: true, + starHalf: 'fa fa-star-half text-danger', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#click').raty({ + click: function (score, evt) { + alert('ID: ' + $(this).attr('id') + "\nscore: " + score + "\nevent: " + evt.type); + } + }); + + $('#hints').raty({hints: ['a', null, '', undefined, '*_*']}); + + $('#star-off-and-star-on').raty({ + starOff: 'fa fa-bell-o text-muted', + starOn: 'fa fa-bell text-custom' + }); + + $('#cancel').raty({ + cancel: true, + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#cancelHint').raty({ + cancel: true, + cancelHint: 'My cancel hint!', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-success' + }); + + $('#cancelPlace').raty({ + cancel: true, + cancelPlace: 'right', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-purple' + }); + + $('#cancel-off-and-cancel-on').raty({ + cancel: true, + cancelOff: 'fa fa-minus-square-o text-muted', + cancelOn: 'fa fa-minus-square text-danger' + }); + + $('#iconRange').raty({ + iconRange: [ + {range: 1, on: 'fa fa-cloud', off: 'fa fa-circle-o'}, + {range: 2, on: 'fa fa-cloud-download', off: 'fa fa-circle-o'}, + {range: 3, on: 'fa fa-cloud-upload', off: 'fa fa-circle-o'}, + {range: 4, on: 'fa fa-circle', off: 'fa fa-circle-o'}, + {range: 5, on: 'fa fa-cogs', off: 'fa fa-circle-o'} + ] + }); + + $('#size-md').raty({ + cancel: true, + half: true + }); + + $('#size-lg').raty({ + cancel: true, + half: true + }); + + $('#target-div').raty({ + cancel: true, + target: '#target-div-hint', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-custom' + }); + + $('#targetType').raty({ + cancel: true, + target: '#targetType-hint', + targetType: 'score', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-warning' + }); + + $('#targetFormat').raty({ + target: '#targetFormat-hint', + targetFormat: 'Rating: {score}', + starOff: 'fa fa-star-o text-muted', + starOn: 'fa fa-star text-danger' + }); + + $('#mouseover').raty({ + mouseover: function (score, evt) { + alert('ID: ' + $(this).attr('id') + "\nscore: " + score + "\nevent: " + evt.type); + } + }); + + $('#mouseout').raty({ + width: 150, + mouseout: function (score, evt) { + alert('ID: ' + $(this).attr('id') + "\nscore: " + score + "\nevent: " + evt.type); + } + }); + }); +})(jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.real-estate-dashboard.js b/assets/pages/jquery.real-estate-dashboard.js new file mode 100644 index 0000000..fa00797 --- /dev/null +++ b/assets/pages/jquery.real-estate-dashboard.js @@ -0,0 +1,137 @@ +/** + * Theme: Zircos Admin Template + * Author: Coderthemes + * Real Estate Dashboard + */ + +! function($) { + "use strict"; + + var RealEstateDashboard = function() { + this.$body = $("body") + this.$realData = [] + }; + + //creates StackedBar Chart + RealEstateDashboard.prototype.createStackBarGraph = function(selector, ticks, colors, data) { + + var options = { + bars: { + show: true, + barWidth: 0.2, + fill: 1 + }, + grid: { + show: true, + aboveData: false, + labelMargin: 5, + axisMargin: 0, + borderWidth: 1, + minBorderMargin: 5, + clickable: true, + hoverable: true, + autoHighlight: false, + mouseActiveRadius: 20, + borderColor: '#f5f5f5' + }, + series: { + stack: 0 + }, + legend: { + position: "ne", + margin: [0, -24], + noColumns: 0, + labelBoxBorderColor: null, + labelFormatter: function (label, series) { + // just add some space to labes + return '' + label + '&nbsp;&nbsp;'; + }, + width: 30, + height: 2 + }, + yaxis: ticks.y, + xaxis: ticks.x, + colors: colors, + tooltip: true, //activate tooltip + tooltipOpts: { + content: "%s : %y.0", + shifts: { + x: -30, + y: -50 + } + } + }; + $.plot($(selector), data, options); + }, + + //initializing various charts and components + RealEstateDashboard.prototype.init = function() { + + //bar chart = stacked + var stack_ticks = { + y: { + axisLabel: "Sales Value (USD)", + tickColor: '#f5f5f5', + font: { + color: '#bdbdbd' + } + }, + x: { + axisLabel: "Last 10 Days", + tickColor: '#f5f5f5', + font: { + color: '#bdbdbd' + } + } + }; + + //random data + var d1 = []; + for (var i = 0; i <= 10; i += 1) + d1.push([i, parseInt(Math.random() * 30)]); + + var d2 = []; + for (var i = 0; i <= 10; i += 1) + d2.push([i, parseInt(Math.random() * 30)]); + + var d3 = []; + for (var i = 0; i <= 10; i += 1) + d3.push([i, parseInt(Math.random() * 30)]); + + var ds = new Array(); + + ds.push({ + label: "Revenue", + data: d1, + bars: { + order: 3 + } + }); + ds.push({ + label: "Listed Properties", + data: d2, + bars: { + order: 2 + } + }); + ds.push({ + label: "User Registered", + data: d3, + bars: { + order: 1 + } + }); + this.createStackBarGraph("#ordered-bars-chart", stack_ticks, ['#26a69a', '#2abfcc', "#ebeff2"], ds); + }, + + //init RealEstateDashboard + $.RealEstateDashboard = new RealEstateDashboard, $.RealEstateDashboard.Constructor = + RealEstateDashboard + +}(window.jQuery), + +//initializing RealEstateDashboard +function($) { + "use strict"; + $.RealEstateDashboard.init() +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.sweet-alert.init.js b/assets/pages/jquery.sweet-alert.init.js new file mode 100644 index 0000000..cf8e0ac --- /dev/null +++ b/assets/pages/jquery.sweet-alert.init.js @@ -0,0 +1,162 @@ + +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* SweetAlert +*/ + +!function ($) { + "use strict"; + + var SweetAlert = function () { + }; + + //examples + SweetAlert.prototype.init = function () { + + //Basic + $('#sa-basic').click(function () { + swal("Here's a message!"); + }); + + //A title with a text under + $('#sa-title').click(function () { + swal("Here's a message!", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lorem erat, tincidunt vitae ipsum et, pellentesque maximus enim. Mauris eleifend ex semper, lobortis purus sed, pharetra felis") + }); + + //Success Message + $('#sa-success').click(function () { + swal("Good job!", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed lorem erat, tincidunt vitae ipsum et, pellentesque maximus enim. Mauris eleifend ex semper, lobortis purus sed, pharetra felis", "success") + }); + + //Warning Message + $('#sa-warning').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "warning", + showCancelButton: true, + confirmButtonClass: 'btn-warning', + confirmButtonText: "Yes, delete it!", + closeOnConfirm: false + }, function () { + swal("Deleted!", "Your imaginary file has been deleted.", "success"); + }); + }); + + //Parameter + $('#sa-params').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, cancel plx!", + closeOnConfirm: false, + closeOnCancel: false + }, function (isConfirm) { + if (isConfirm) { + swal("Deleted!", "Your imaginary file has been deleted.", "success"); + } else { + swal("Cancelled", "Your imaginary file is safe :)", "error"); + } + }); + }); + + //Custom Image + $('#sa-image').click(function () { + swal({ + title: "Sweet!", + text: "Here's a custom image.", + imageUrl: "../plugins/bootstrap-sweetalert/thumbs-up.jpg" + }); + }); + + //Auto Close Timer + $('#sa-close').click(function () { + swal({ + title: "Auto close alert!", + text: "I will close in 2 seconds.", + timer: 2000, + showConfirmButton: false + }); + }); + + //Primary + $('#primary-alert').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "info", + showCancelButton: true, + cancelButtonClass: 'btn-default btn-md waves-effect', + confirmButtonClass: 'btn-primary btn-md waves-effect waves-light', + confirmButtonText: 'Primary!' + }); + }); + + //Info + $('#info-alert').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "info", + showCancelButton: true, + cancelButtonClass: 'btn-default btn-md waves-effect', + confirmButtonClass: 'btn-info btn-md waves-effect waves-light', + confirmButtonText: 'Info!' + }); + }); + + //Success + $('#success-alert').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "success", + showCancelButton: true, + cancelButtonClass: 'btn-default btn-md waves-effect', + confirmButtonClass: 'btn-success btn-md waves-effect waves-light', + confirmButtonText: 'Success!' + }); + }); + + //Warning + $('#warning-alert').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "warning", + showCancelButton: true, + cancelButtonClass: 'btn-default btn-md waves-effect', + confirmButtonClass: 'btn-warning btn-md waves-effect waves-light', + confirmButtonText: 'Warning!' + }); + }); + + //Danger + $('#danger-alert').click(function () { + swal({ + title: "Are you sure?", + text: "You will not be able to recover this imaginary file!", + type: "error", + showCancelButton: true, + cancelButtonClass: 'btn-default btn-md waves-effect', + confirmButtonClass: 'btn-danger btn-md waves-effect waves-light', + confirmButtonText: 'Danger!' + }); + }); + + + }, + //init + $.SweetAlert = new SweetAlert, $.SweetAlert.Constructor = SweetAlert +}(window.jQuery), + +//initializing + function ($) { + "use strict"; + $.SweetAlert.init() + }(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.toastr.js b/assets/pages/jquery.toastr.js new file mode 100644 index 0000000..1a64289 --- /dev/null +++ b/assets/pages/jquery.toastr.js @@ -0,0 +1,148 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Toastr js +*/ + +$(function () { + var i = -1; + var toastCount = 0; + var $toastlast; + + var getMessage = function () { + var msgs = ['My name is Inigo Montoya. You killed my father. Prepare to die!', + 'Are you the six fingered man?', + 'Inconceivable!', + 'I do not think that means what you think it means.', + 'Have fun storming the castle!' + ]; + i++; + if (i === msgs.length) { + i = 0; + } + + return msgs[i]; + }; + + var getMessageWithClearButton = function (msg) { + msg = msg ? msg : 'Clear itself?'; + msg += '<br /><br /><button type="button" class="btn btn-default clear">Yes</button>'; + return msg; + }; + + $('#showtoast').click(function () { + var shortCutFunction = $("#toastTypeGroup input:radio:checked").val(); + var msg = $('#message1').val(); + var title = $('#title').val() || ''; + var $showDuration = $('#showDuration'); + var $hideDuration = $('#hideDuration'); + var $timeOut = $('#timeOut'); + var $extendedTimeOut = $('#extendedTimeOut'); + var $showEasing = $('#showEasing'); + var $hideEasing = $('#hideEasing'); + var $showMethod = $('#showMethod'); + var $hideMethod = $('#hideMethod'); + var toastIndex = toastCount++; + var addClear = $('#addClear').prop('checked'); + + toastr.options = { + closeButton: $('#closeButton').prop('checked'), + debug: $('#debugInfo').prop('checked'), + newestOnTop: $('#newestOnTop').prop('checked'), + progressBar: $('#progressBar').prop('checked'), + positionClass: $('#positionGroup input:radio:checked').val() || 'toast-top-right', + preventDuplicates: $('#preventDuplicates').prop('checked'), + onclick: null + }; + + if ($('#addBehaviorOnToastClick').prop('checked')) { + toastr.options.onclick = function () { + alert('You can perform some custom action after a toast goes away'); + }; + } + + if ($showDuration.val().length) { + toastr.options.showDuration = $showDuration.val(); + } + + if ($hideDuration.val().length) { + toastr.options.hideDuration = $hideDuration.val(); + } + + if ($timeOut.val().length) { + toastr.options.timeOut = addClear ? 0 : $timeOut.val(); + } + + if ($extendedTimeOut.val().length) { + toastr.options.extendedTimeOut = addClear ? 0 : $extendedTimeOut.val(); + } + + if ($showEasing.val().length) { + toastr.options.showEasing = $showEasing.val(); + } + + if ($hideEasing.val().length) { + toastr.options.hideEasing = $hideEasing.val(); + } + + if ($showMethod.val().length) { + toastr.options.showMethod = $showMethod.val(); + } + + if ($hideMethod.val().length) { + toastr.options.hideMethod = $hideMethod.val(); + } + + if (addClear) { + msg = getMessageWithClearButton(msg); + toastr.options.tapToDismiss = false; + } + if (!msg) { + msg = getMessage(); + } + + $('#toastrOptions').text('Command: toastr["' + + shortCutFunction + + '"]("' + + msg + + (title ? '", "' + title : '') + + '")\n\ntoastr.options = ' + + JSON.stringify(toastr.options, null, 2) + ); + + var $toast = toastr[shortCutFunction](msg, title); // Wire up an event handler to a button in the toast, if it exists + $toastlast = $toast; + + if (typeof $toast === 'undefined') { + return; + } + + if ($toast.find('#okBtn').length) { + $toast.delegate('#okBtn', 'click', function () { + alert('you clicked me. i was toast #' + toastIndex + '. goodbye!'); + $toast.remove(); + }); + } + if ($toast.find('#surpriseBtn').length) { + $toast.delegate('#surpriseBtn', 'click', function () { + alert('Surprise! you clicked me. i was toast #' + toastIndex + '. You could perform an action here.'); + }); + } + if ($toast.find('.clear').length) { + $toast.delegate('.clear', 'click', function () { + toastr.clear($toast, {force: true}); + }); + } + }); + + function getLastToast() { + return $toastlast; + } + + $('#clearlasttoast').click(function () { + toastr.clear(getLastToast()); + }); + $('#cleartoasts').click(function () { + toastr.clear(); + }); +}) \ No newline at end of file diff --git a/assets/pages/jquery.todo.js b/assets/pages/jquery.todo.js new file mode 100644 index 0000000..3660634 --- /dev/null +++ b/assets/pages/jquery.todo.js @@ -0,0 +1,153 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Todos-widget +*/ + +!function($) { + "use strict"; + + var TodoApp = function() { + this.$body = $("body"), + this.$todoContainer = $('#todo-container'), + this.$todoMessage = $("#todo-message"), + this.$todoRemaining = $("#todo-remaining"), + this.$todoTotal = $("#todo-total"), + this.$archiveBtn = $("#btn-archive"), + this.$todoList = $("#todo-list"), + this.$todoDonechk = ".todo-done", + this.$todoForm = $("#todo-form"), + this.$todoInput = $("#todo-input-text"), + this.$todoBtn = $("#todo-btn-submit"), + + this.$todoData = [ + { + 'id': '1', + 'text': 'Design One page theme', + 'done': false + }, + { + 'id': '2', + 'text': 'Build a js based app', + 'done': true + }, + { + 'id': '3', + 'text': 'Creating component page', + 'done': true + }, + { + 'id': '4', + 'text': 'Testing??', + 'done': true + }, + { + 'id': '5', + 'text': 'Hehe!! This is looks cool!', + 'done': false + }, + { + 'id': '6', + 'text': 'Build an angular app', + 'done': true + }]; + + this.$todoCompletedData = []; + this.$todoUnCompletedData = []; + }; + + //mark/unmark - you can use ajax to save data on server side + TodoApp.prototype.markTodo = function(todoId, complete) { + for(var count=0; count<this.$todoData.length;count++) { + if(this.$todoData[count].id == todoId) { + this.$todoData[count].done = complete; + } + } + }, + //adds new todo + TodoApp.prototype.addTodo = function(todoText) { + this.$todoData.push({'id': this.$todoData.length, 'text': todoText, 'done': false}); + //regenerate list + this.generate(); + }, + //Archives the completed todos + TodoApp.prototype.archives = function() { + this.$todoUnCompletedData = []; + for(var count=0; count<this.$todoData.length;count++) { + //geretaing html + var todoItem = this.$todoData[count]; + if(todoItem.done == true) { + this.$todoCompletedData.push(todoItem); + } else { + this.$todoUnCompletedData.push(todoItem); + } + } + this.$todoData = []; + this.$todoData = [].concat(this.$todoUnCompletedData); + //regenerate todo list + this.generate(); + }, + //Generates todos + TodoApp.prototype.generate = function() { + //clear list + this.$todoList.html(""); + var remaining = 0; + for(var count=0; count<this.$todoData.length;count++) { + //geretaing html + var todoItem = this.$todoData[count]; + if(todoItem.done == true) + this.$todoList.prepend('<li class="list-group-item"><div class="checkbox checkbox-primary"><input class="todo-done" id="' + todoItem.id + '" type="checkbox" checked><label for="' + todoItem.id + '">' + todoItem.text + '</label></div></li>'); + else { + remaining = remaining + 1; + this.$todoList.prepend('<li class="list-group-item"><div class="checkbox checkbox-primary"><input class="todo-done" id="' + todoItem.id + '" type="checkbox"><label for="' + todoItem.id + '">' + todoItem.text + '</label></div></li>'); + } + } + + //set total in ui + this.$todoTotal.text(this.$todoData.length); + //set remaining + this.$todoRemaining.text(remaining); + }, + //init todo app + TodoApp.prototype.init = function () { + var $this = this; + //generating todo list + this.generate(); + + //binding archive + this.$archiveBtn.on("click", function(e) { + e.preventDefault(); + $this.archives(); + return false; + }); + + //binding todo done chk + $(document).on("change", this.$todoDonechk, function() { + if(this.checked) + $this.markTodo($(this).attr('id'), true); + else + $this.markTodo($(this).attr('id'), false); + //regenerate list + $this.generate(); + }); + + //binding the new todo button + this.$todoBtn.on("click", function() { + if ($this.$todoInput.val() == "" || typeof($this.$todoInput.val()) == 'undefined' || $this.$todoInput.val() == null) { + sweetAlert("Oops...", "You forgot to enter todo text", "error"); + $this.$todoInput.focus(); + } else { + $this.addTodo($this.$todoInput.val()); + } + }); + }, + //init TodoApp + $.TodoApp = new TodoApp, $.TodoApp.Constructor = TodoApp + +}(window.jQuery), + +//initializing todo app +function($) { + "use strict"; + $.TodoApp.init() +}(window.jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.tooltipster.js b/assets/pages/jquery.tooltipster.js new file mode 100644 index 0000000..f68ada0 --- /dev/null +++ b/assets/pages/jquery.tooltipster.js @@ -0,0 +1,68 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Tooltips +*/ + +(function ($) { + + "use strict"; + + + $('#tooltip-hover').tooltipster(); + + $('#tooltip-events').tooltipster({ + trigger: 'click' + }); + + $('#tooltip-html').tooltipster({ + content: $('<img src="assets/images/users/avatar-2.jpg" width="50" height="50" /><p style="text-align:left;"><strong>Soufflé chocolate cake powder.</strong> Applicake lollipop oat cake gingerbread.</p>'), + // setting a same value to minWidth and maxWidth will result in a fixed width + minWidth: 300, + maxWidth: 300, + position: 'right' + }); + + $('#tooltip-touch').tooltipster({ + touchDevices: false + }); + + $('#tooltip-animation').tooltipster({ + animation: 'grow' + }); + + $('#tooltip-interaction').tooltipster({ + contentAsHTML: true, + interactive: true + }); + + // Multiple tooltips + $('#tooltip-multiple').tooltipster({ + animation: 'swing', + content: 'North', + multiple: true, + position: 'top' + }); + + $('#tooltip-multiple').tooltipster({ + content: 'East', + multiple: true, + position: 'right' + }); + + $('#tooltip-multiple').tooltipster({ + animation: 'grow', + content: 'South', + delay: 200, + multiple: true, + position: 'bottom' + }); + + $('#tooltip-multiple').tooltipster({ + animation: 'fall', + content: 'West', + multiple: true, + position: 'left' + }); + +})(jQuery); \ No newline at end of file diff --git a/assets/pages/jquery.wizard-init.js b/assets/pages/jquery.wizard-init.js new file mode 100644 index 0000000..c3754a7 --- /dev/null +++ b/assets/pages/jquery.wizard-init.js @@ -0,0 +1,87 @@ +/** +* Theme: Zircos Admin Template +* Author: Coderthemes +* Form wizard page +*/ + +!function($) { + "use strict"; + + var FormWizard = function() {}; + + FormWizard.prototype.createBasic = function($form_container) { + $form_container.children("div").steps({ + headerTag: "h3", + bodyTag: "section", + transitionEffect: "slideLeft", + onFinishing: function (event, currentIndex) { + //NOTE: Here you can do form validation and return true or false based on your validation logic + console.log("Form has been validated!"); + return true; + }, + onFinished: function (event, currentIndex) { + //NOTE: Submit the form, if all validation passed. + console.log("Form can be submitted using submit method. E.g. $('#basic-form').submit()"); + $("#basic-form").submit(); + + } + }); + return $form_container; + }, + //creates form with validation + FormWizard.prototype.createValidatorForm = function($form_container) { + $form_container.validate({ + errorPlacement: function errorPlacement(error, element) { + element.after(error); + } + }); + $form_container.children("div").steps({ + headerTag: "h3", + bodyTag: "section", + transitionEffect: "slideLeft", + onStepChanging: function (event, currentIndex, newIndex) { + $form_container.validate().settings.ignore = ":disabled,:hidden"; + return $form_container.valid(); + }, + onFinishing: function (event, currentIndex) { + $form_container.validate().settings.ignore = ":disabled"; + return $form_container.valid(); + }, + onFinished: function (event, currentIndex) { + alert("Submitted!"); + } + }); + + return $form_container; + }, + //creates vertical form + FormWizard.prototype.createVertical = function($form_container) { + $form_container.steps({ + headerTag: "h3", + bodyTag: "section", + transitionEffect: "fade", + stepsOrientation: "vertical" + }); + return $form_container; + }, + FormWizard.prototype.init = function() { + //initialzing various forms + + //basic form + this.createBasic($("#basic-form")); + + //form with validation + this.createValidatorForm($("#wizard-validation-form")); + + //vertical form + this.createVertical($("#wizard-vertical")); + }, + //init + $.FormWizard = new FormWizard, $.FormWizard.Constructor = FormWizard +}(window.jQuery), + +//initializing +function($) { + "use strict"; + $.FormWizard.init() +}(window.jQuery); \ No newline at end of file diff --git a/email-templates/action.html b/email-templates/action.html new file mode 100644 index 0000000..83883d1 --- /dev/null +++ b/email-templates/action.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"> +<head> +<meta name="viewport" content="width=device-width" /> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Your Title Goes Here</title> + + +<style type="text/css"> +img { +max-width: 100%; +} +body { +-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; +} +body { +background-color: #f6f6f6; +} +@media only screen and (max-width: 640px) { + body { + padding: 0 !important; + } + h1 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h2 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h3 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h4 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h1 { + font-size: 22px !important; + } + h2 { + font-size: 18px !important; + } + h3 { + font-size: 16px !important; + } + .container { + padding: 0 !important; width: 100% !important; + } + .content { + padding: 0 !important; + } + .content-wrap { + padding: 10px !important; + } + .invoice { + width: 100% !important; + } +} +</style> +</head> + +<body style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"> + +<table class="body-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + <td class="container" width="600" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;" valign="top"> + <div class="content" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;"> + <table class="main" width="100%" cellpadding="0" cellspacing="0" itemprop="action" itemscope itemtype="http://schema.org/ConfirmAction" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 20px;" valign="top"> + <meta itemprop="name" content="Confirm Email" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" /><table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + Please confirm your email address by clicking the link below. + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + We may need to send you critical information about our service and it is important that we have an accurate email address. + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" itemprop="handler" itemscope itemtype="http://schema.org/HttpActionHandler" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + <a href="#" class="btn-primary" itemprop="url" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #FFF; text-decoration: none; line-height: 2em; font-weight: bold; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; text-transform: capitalize; background-color: #f5707a; margin: 0; border-color: #f5707a; border-style: solid; border-width: 10px 20px;">Confirm email address</a> + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + &mdash; Coderthemes Design + </td> + </tr></table></td> + </tr></table><div class="footer" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;"> + <table width="100%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top"> <a href="#" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;">Unsubscribe</a></td> + </tr></table></div></div> + </td> + <td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + </tr></table></body> +</html> diff --git a/email-templates/alert.html b/email-templates/alert.html new file mode 100644 index 0000000..77c8350 --- /dev/null +++ b/email-templates/alert.html @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"> +<head> +<meta name="viewport" content="width=device-width" /> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Your Title Goes Here</title> + + +<style type="text/css"> +img { +max-width: 100%; +} +body { +-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; +} +body { +background-color: #f6f6f6; +} +@media only screen and (max-width: 640px) { + body { + padding: 0 !important; + } + h1 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h2 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h3 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h4 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h1 { + font-size: 22px !important; + } + h2 { + font-size: 18px !important; + } + h3 { + font-size: 16px !important; + } + .container { + padding: 0 !important; width: 100% !important; + } + .content { + padding: 0 !important; + } + .content-wrap { + padding: 10px !important; + } + .invoice { + width: 100% !important; + } +} +</style> +</head> + +<body itemscope itemtype="http://schema.org/EmailMessage" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"> + +<table class="body-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + <td class="container" width="600" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;" valign="top"> + <div class="content" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;"> + <table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="alert alert-warning" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 16px; vertical-align: top; color: #fff; font-weight: 500; text-align: center; border-radius: 3px 3px 0 0; background-color: #36404e; margin: 0; padding: 20px;" align="center" bgcolor="#2f353f" valign="top"> + Warning: You're approaching your limit. Please upgrade. + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 20px;" valign="top"> + <table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + You have <strong style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;">1 free report</strong> remaining. + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + Add your credit card now to upgrade your account to a premium plan to ensure you don't miss out on any reports. + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + <a href="#" class="btn-primary" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #FFF; text-decoration: none; line-height: 2em; font-weight: bold; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; text-transform: capitalize; background-color: #f5707a; margin: 0; border-color: #f5707a; border-style: solid; border-width: 10px 20px;">Upgrade my account</a> + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + Thanks for choosing Admin. + </td> + </tr></table></td> + </tr></table><div class="footer" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;"> + <table width="100%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top"><a href="#" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;">Unsubscribe</a> from these alerts.</td> + </tr></table></div></div> + </td> + <td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + </tr></table></body> +</html> diff --git a/email-templates/billing.html b/email-templates/billing.html new file mode 100644 index 0000000..d04335b --- /dev/null +++ b/email-templates/billing.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"> +<head> +<meta name="viewport" content="width=device-width" /> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Your Title Goes Here</title> + + +<style type="text/css"> +img { +max-width: 100%; +} +body { +-webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; +} +body { +background-color: #f6f6f6; +} +@media only screen and (max-width: 640px) { + body { + padding: 0 !important; + } + h1 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h2 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h3 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h4 { + font-weight: 800 !important; margin: 20px 0 5px !important; + } + h1 { + font-size: 22px !important; + } + h2 { + font-size: 18px !important; + } + h3 { + font-size: 16px !important; + } + .container { + padding: 0 !important; width: 100% !important; + } + .content { + padding: 0 !important; + } + .content-wrap { + padding: 10px !important; + } + .invoice { + width: 100% !important; + } +} +</style> +</head> + +<body itemscope itemtype="http://schema.org/EmailMessage" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; line-height: 1.6em; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"> + +<table class="body-wrap" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; background-color: #f6f6f6; margin: 0;" bgcolor="#f6f6f6"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + <td class="container" width="600" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; display: block !important; max-width: 600px !important; clear: both !important; margin: 0 auto;" valign="top"> + <div class="content" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; max-width: 600px; display: block; margin: 0 auto; padding: 20px;"> + <table class="main" width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; border-radius: 3px; background-color: #fff; margin: 0; border: 1px solid #e9e9e9;" bgcolor="#fff"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-wrap aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 20px;" align="center" valign="top"> + <table width="100%" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 0 0 20px;" valign="top"> + <h2 class="aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif; box-sizing: border-box; font-size: 24px; color: #000; line-height: 1.2em; font-weight: 400; text-align: center; margin: 40px 0 0;" align="center">Thanks for using <b>Admin</b>.</h2> + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top"> + <table class="invoice" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; text-align: left; width: 80%; margin: 40px auto;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;" valign="top">Coderthemes<br style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" />Invoice #12345<br style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;" />October 01 2016</td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0; padding: 5px 0;" valign="top"> + <table class="invoice-items" cellpadding="0" cellspacing="0" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">Regular Licence</td> + <td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$ 12.00</td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">6 months Support</td> + <td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$ 7.20</td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" valign="top">6 months Extended Support</td> + <td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 1px; border-top-color: #eee; border-top-style: solid; margin: 0; padding: 5px 0;" align="right" valign="top">$ 7.20</td> + </tr><tr class="total" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="alignright" width="80%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;" align="right" valign="top">Total</td> + <td class="alignright" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: right; border-top-width: 2px; border-top-color: #333; border-top-style: solid; border-bottom-color: #333; border-bottom-width: 2px; border-bottom-style: solid; font-weight: 700; margin: 0; padding: 5px 0;" align="right" valign="top">$ 26.40</td> + </tr></table></td> + </tr></table></td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top"> + <a href="#" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;">View in browser</a> + </td> + </tr><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="content-block aligncenter" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top"> + Company Inc. 123 my street, And my Country + </td> + </tr></table></td> + </tr></table><div class="footer" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; width: 100%; clear: both; color: #999; margin: 0; padding: 20px;"> + <table width="100%" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><tr style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; margin: 0;"><td class="aligncenter content-block" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; vertical-align: top; color: #999; text-align: center; margin: 0; padding: 0 0 20px;" align="center" valign="top">Questions? Email <a href="mailto:" style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 12px; color: #999; text-decoration: underline; margin: 0;">coderthemes@gmail.com</a></td> + </tr></table></div></div> + </td> + <td style="font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; box-sizing: border-box; font-size: 14px; vertical-align: top; margin: 0;" valign="top"></td> + </tr></table></body> +</html> diff --git a/index.php b/index.php new file mode 100644 index 0000000..487ac4e --- /dev/null +++ b/index.php @@ -0,0 +1,218 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content="A fully featured admin theme which can be used to build CRM, CMS, etc."> + <meta name="author" content="Coderthemes"> + + <!-- App favicon --> + <link rel="shortcut icon" href="assets/images/logo_rssa.png"> + <!-- App title --> + <title>SIMPRO RSSA</title> + + <!-- App css --> + <link href="assets/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/core.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/components.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/icons.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/pages.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/menu.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/responsive.css" rel="stylesheet" type="text/css" /> + + <!-- HTML5 Shiv and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> + <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> + <![endif]--> + + <script src="assets/js/modernizr.min.js"></script> + + </head> + + + <body class="bg-transparent"> + <div class="err" id="add_err"></div> + <!-- HOME --> + <section> + <div class="container-alt"> + <div class="row"> + <div class="col-sm-12"> + + <div class="wrapper-page"> + + <div class="m-t-40 account-pages"> + <div class="text-center account-logo-box" style="background-color:white"> + <span><center><img src="assets/images/logo_rssa.jpg" alt="image" class="img-responsive" width="200"></center></span> + <br> + <h2 class="text-uppercase"> + <a href="index.html" class="text-success"> + <span><img src="assets/images/logo.png" alt="" height="36"></span> + </a> + </h2> + <!--<h4 class="text-uppercase font-bold m-b-0">Sign In</h4>--> + </div> + <div class="account-content"> + <form class="form-horizontal" action="#"> + + <!-- <div class="form-group "> + <div class="col-xs-12"> + <select class="form-control" name="nama_satker" id="nama_satker" autofocus> + <option></option> + <?php + include('app/koneksi.php'); + $ukerja=pg_query("SELECT id,nama FROM satuan_kerja ORDER BY nama ASC"); + while($rows=pg_fetch_assoc($ukerja)) { + ?> + <option <?php if ($satker==$rows["id"]) {echo "selected";} ?> value="<?php echo $rows['id']; ?>"><?php echo $rows['nama']?></option> + <?php + } + ?> + </select> + </div> + </div> --> + + <div class="form-group"> + <div class="col-xs-12"> + <input class="form-control" type="text" required="" placeholder="Username" id="username"> + </div> + </div> + + <div class="form-group"> + <div class="col-xs-12"> + <input class="form-control" type="password" required="" placeholder="Password" id="password" onkeydown="tekan1(event)"> + </div> + </div> + + <!-- <div class="form-group "> + <div class="col-xs-12"> + <div class="checkbox checkbox-success"> + <input id="checkbox-signup" type="checkbox" checked> + <label for="checkbox-signup"> + Remember me + </label> + </div> + + </div> + </div> --> + + <!-- <div class="form-group text-center m-t-30"> + <div class="col-sm-12"> + <a href="page-recoverpw.html" class="text-muted"><i class="fa fa-lock m-r-5"></i> Forgot your password?</a> + </div> + </div> --> + + <div class="form-group account-btn text-center m-t-10"> + <div class="col-xs-12"> + <button class="btn w-md btn-bordered btn-danger waves-effect waves-light" type="button" name="login">Login</button> + </div> + </div> + + </form> + + <div class="clearfix"></div> + + </div> + </div> + <!-- end card-box--> + + + <div class="row m-t-50"> + <div class="col-sm-12 text-center"> + <!-- <p class="text-muted">Belum punya akun ? <a href="#" class="text-primary m-l-5" id="register"><b>Daftar</b></a></p> --> + <p class="text-muted">&copy; 2020 dynandsoftware</p> + </div> + </div> + + </div> + <!-- end wrapper --> + + </div> + </div> + </div> + </section> + <!-- END HOME --> + + <script> + var resizefunc = []; + $('#username').first().focus().selected(); + </script> + + <!-- jQuery --> + <script src="assets/js/jquery.min.js"></script> + <script src="assets/js/bootstrap.min.js"></script> + <script src="assets/js/detect.js"></script> + <script src="assets/js/fastclick.js"></script> + <script src="assets/js/jquery.blockUI.js"></script> + <script src="assets/js/waves.js"></script> + <script src="assets/js/jquery.slimscroll.js"></script> + <script src="assets/js/jquery.scrollTo.min.js"></script> + + <!-- App js --> + <script src="assets/js/jquery.core.js"></script> + <script src="assets/js/jquery.app.js"></script> + + <script> + /* $('button[name="login"]').click(function(){ + $(location).attr('href', 'menu.php') + }); */ + + $("#add_err").css('display', 'none', 'important'); + $('button[name="login"]').click(function(){ + var password = $('#password').val(); + var username = $('#username').val(); + $.ajax({ + type: "POST", + url: "login.php", + data: "username="+username+"&password="+password, + success: function(html){ + // if(html=='true') { + if(html!='false') { + var chars = html.split('$%^'); + var sess_nama=chars[0]; + var sess_jenis=chars[1]; + var sess_satker=chars[2]; + var data_pegawai_id=chars[3]; + var nampeg=chars[4]; + var nipb=chars[5]; + var nama_satker=chars[6]; + var password=chars[7]; + var namsat=chars[8]; + var idsat=chars[9]; + if (sess_jenis=='Staf') { + window.location="menu.php?nama="+sess_nama+"&jenis="+sess_jenis+"&satker="+sess_satker+"&data_pegawai_id="+data_pegawai_id+"&nampeg="+nampeg+"&nipb="+nipb+"&password="+password; + } else + if (sess_jenis=='Admin') { + window.location="menu.php?nama="+sess_nama+"&jenis="+sess_jenis+"&satker="+sess_satker+"&nama_satker="+nama_satker+"&password="+password; + } else + if (sess_jenis=='Kordik') { + window.location="menu.php?nama="+sess_nama+"&jenis="+sess_jenis+"&satker="+idsat+"&data_pegawai_id="+data_pegawai_id+"&nampeg="+nampeg+"&nipb="+nipb+"&password="+password+"&nama_satker="+namsat; + } + } + else { + $("#add_err").css('display', 'inline', 'important'); + <!--$("#add_err").html("<center>Nama satker atau Password SALAH</center></br>");--> + alert("Username atau Password SALAH.."); + } + }, + beforeSend:function() + { + $("#add_err").css('display', 'inline', 'important'); + <!--$("#add_err").html("Loading...");--> + } + }); + return false; + }); + + +function tekan1(event) { + var x = event.keyCode; + if (x==13) {$('button[name="login"]').trigger('click');} +} + + + </script> + <script src="assets/js/enter.js"></script> + </body> +</html> \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..d42206c --- /dev/null +++ b/login.php @@ -0,0 +1,38 @@ +<?php +include("app/koneksi.php"); +$password=$_POST['password']; +$username=$_POST['username']; +$res=pg_query("SELECT u.jenis_user,u.nama,u.satuan_kerja_id,u.data_pegawai_id,p.nama,p.nipb,s.nama,u.password,s2.nama,s2.id + FROM data_user u + LEFT OUTER JOIN data_pegawai p ON (p.id=u.data_pegawai_id) + LEFT OUTER JOIN satuan_kerja s ON (s.id=u.satuan_kerja_id) + LEFT OUTER JOIN satuan_kerja s2 ON (s2.id=p.satuan_kerja) + WHERE u.password='$password' AND u.nama='$username' AND u.aktif='t'"); +$num_row=pg_num_rows($res); +$row=pg_fetch_array($res); +if ($num_row==1) { + $jns_user_id=$row['jenis_user']; + $sess_nama=$row[1]; + $sess_satker=$row['satuan_kerja_id']; + $data_pegawai_id=$row['data_pegawai_id']; + $nampeg=$row[4]; + $nipb=$row['nipb']; + $nama_satker=$row[6]; + $password=$row[7]; +$namsat=$row[8]; +$idsat=$row[9]; + $bb=pg_query("SELECT id,jenis FROM jenis_user WHERE id='$jns_user_id'"); + while($rj=pg_fetch_array($bb)) { + $sess_jenis=$rj['jenis']; + } + + /*$id_peg=$row['data_pegawai_id']; + $cc=pg_query("SELECT nama,satuan_kerja FROM data_pegawai WHERE id='$id_peg'"); + while($rs=pg_fetch_array($cc)) { + $sess_satker=$rs['satuan_kerja']; + } */ +echo $sess_nama.'$%^'.$sess_jenis.'$%^'.$sess_satker.'$%^'.$data_pegawai_id.'$%^'.$nampeg.'$%^'.$nipb.'$%^'.$nama_satker.'$%^'.$password.'$%^'.$namsat.'$%^'.$idsat; +} else { + echo "false"; +} +?> \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..55b707b --- /dev/null +++ b/logout.php @@ -0,0 +1,6 @@ +<?php +session_start(); +$_SESSION=array(); +session_unset(); +session_destroy(); +?> \ No newline at end of file diff --git a/menu.php b/menu.php new file mode 100644 index 0000000..6ad53ec --- /dev/null +++ b/menu.php @@ -0,0 +1,1072 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta name="description" content="A fully featured admin theme which can be used to build CRM, CMS, etc."> + <meta name="author" content="Coderthemes"> + + <!-- App favicon --> + <link rel="shortcut icon" href="assets/images/logo_rssa.png"> + <!-- App title --> + <title>SIMPRO RSSA</title> + + + + <!-- App css --> + <link href="assets/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/core.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/components.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/icons.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/pages.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/menu.css" rel="stylesheet" type="text/css" /> + <link href="assets/css/responsive.css" rel="stylesheet" type="text/css" /> + <link rel="stylesheet" href="../plugins/switchery/switchery.min.css"> + + <!-- DataTables --> + <link href="plugins/datatables/jquery.dataTables.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/buttons.bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/fixedHeader.bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/responsive.bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/scroller.bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/dataTables.colVis.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css"/> + <link href="plugins/datatables/fixedColumns.dataTables.min.css" rel="stylesheet" type="text/css"/> + + <!-- HTML5 Shiv and Respond.js IE8 support of HTML5 elements and media queries --> + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> + <!--[if lt IE 9]> + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> + <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> + <![endif]--> + + <script src="assets/js/modernizr.min.js"></script> + + </head> + + + <body class="fixed-left"> + +<style type="text/css"> + + +.btn-circle.btn-md { + width: 40px; + height: 40px; + padding: 7px 10px; + border-radius: 25px; + font-size: 15px; + text-align: center; + border: 3px solid #66b5fb; + } + +#sidebar-menu ul li a:hover { + background:#f1f3f4 !important; + font-color:white; +} + +#sidebar-menu ul li a:focus { + background:#fce8e6 !important; + color:#d93025 !important; + font-weight: bold; +} + +.no-border{ + border:none; +} + +.popover {background-color: black;} +.popover.top .arrow::after {border-top-color: black; } +.popover-content {background-color: black;color:white;font-size: 14px;text-align: center;} +</style> + +<style type="text/css"> +table.dataTable tbody tr td{ + border-bottom: 1px solid transparent; +} + +table.dataTable tbody tr:hover td { + border-top: #aaaaaa 1px solid; + border-bottom: #aaaaaa 3px solid; +} + +table.dataTable tbody tr:hover .kiri { + border-left: #aaaaaa 1px solid; +} + +table.dataTable tbody tr:hover .kanan { + border-right: #aaaaaa 1px solid; +} + +thead { + color:black; +} + +h4 { + font-family: "GSans"; +} + +@font-face { + font-family: "GSans"; + src: url('assets/fonts/googlesans-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: "GSans_Med"; + src: url('assets/fonts/googlesans-medium-webfont.woff') format('woff'); +} + +@font-face { + font-family: "RobReg"; + src: url('assets/fonts/roboto-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: "OSansReg"; + src: url('assets/fonts/opensans-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: "SSansReg"; + src: url('assets/fonts/sourcesanspro-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: "RubReg"; + src: url('assets/fonts/rubik-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: "Inter"; + src: url('assets/fonts/Inter-Regular.woff') format('woff'); +} + +@font-face { + font-family: "InterSB"; + src: url('assets/fonts/Inter-SemiBold.woff') format('woff'); +} + +@font-face { + font-family: "RubMed"; + src: url('assets/fonts/Rubik-Medium.woff') format('woff'); +} + +@font-face { + font-family: "RubSB"; + src: url('assets/fonts/Rubik-SemiBold.woff') format('woff'); +} + +/* +.judul_page { +font-family: "GSans_Med"; +font-size:30px; +color:#cccccc; +} +*/ + +.judul_page { +font-family:RubMed; +color:#54B435; +display: block; +line-height: 50px; +padding-left: 12px; +letter-spacing: 2px; +z-index: 15; +font-size:25px; +border-color:#A8E890; +text-transform: uppercase; +} + +.judul_view { +font-family: "GSans_Med"; +font-size:20px; +color:#cccccc; +} + +.judul_verif { +font-family: "GSans_Med"; +font-size:20px; +color:#cccccc; +} + +.judul_modal { +font-family: "GSans_Med"; +font-size:18px; +color:#cccccc; +} + +.modal-title, .total{ + font-family: "GSans_Med"; + font-size: 20px; + color: #449d44; +} + +.carvit { + font-family: "Arial"; + font-weight: bold; + color:black; +} + +.awalan { +font-family: "GSans_Med"; +font-size:40px; +color:#cccccc; +display: flex; +align-items: center; +justify-content: center; + vertical-align: middle; +} + +label { +font-family:'InterSB';font-weight: normal;color:black; +} + + +thead{ + font-family: "InterSB"; + text-transform: uppercase; + font-size:13px; +} + +tbody{ + font-family: "Inter"; + font-size:13px; + color:black +} +/* +table.dataTable thead tr td { + font-family: "Inter"; + color: gray; +} + +table thead tr td { + font-family: "Inter"; + color: gray; + text-transform: uppercase; +} + +table.dataTable tbody tr td { + font-family: "Inter"; + color: black; +} + +table tbody tr td { + font-family: "Inter"; + color: black; +} + +label { + font-family: "Inter"; + color:gray; +} +*/ +.tabpro { + font-family: "InterSB";font-weight: normal; + color:black; +} + +.tabmenu { +font-family:'InterSB';font-weight: normal; +} + +/* webkit-font-smoothing: antialiased; */ + +.menu-title { +color:black;font-family:"InterSB"; +} +</style> + + <!-- Begin page --> + <div id="wrapper"> + + + + + + <!-- Top Bar Start --> + <div class="topbar"> + + + + +<div class="navbar-custom" style="background: rgba(161,219,0,1); +background: -moz-linear-gradient(left, rgba(161,219,0,1) 0%, rgba(255,242,0,1) 12%, rgba(255,255,255,1) 24%, rgba(255,255,255,1) 77%, rgba(255,242,0,1) 88%, rgba(161,219,0,1) 100%); +background: -webkit-gradient(left top, right top, color-stop(0%, rgba(161,219,0,1)), color-stop(12%, rgba(255,242,0,1)), color-stop(24%, rgba(255,255,255,1)), color-stop(77%, rgba(255,255,255,1)), color-stop(88%, rgba(255,242,0,1)), color-stop(100%, rgba(161,219,0,1))); +background: -webkit-linear-gradient(left, rgba(161,219,0,1) 0%, rgba(255,242,0,1) 12%, rgba(255,255,255,1) 24%, rgba(255,255,255,1) 77%, rgba(255,242,0,1) 88%, rgba(161,219,0,1) 100%); +background: -o-linear-gradient(left, rgba(161,219,0,1) 0%, rgba(255,242,0,1) 12%, rgba(255,255,255,1) 24%, rgba(255,255,255,1) 77%, rgba(255,242,0,1) 88%, rgba(161,219,0,1) 100%); +background: -ms-linear-gradient(left, rgba(161,219,0,1) 0%, rgba(255,242,0,1) 12%, rgba(255,255,255,1) 24%, rgba(255,255,255,1) 77%, rgba(255,242,0,1) 88%, rgba(161,219,0,1) 100%); +background: linear-gradient(to right, rgba(161,219,0,1) 0%, rgba(255,242,0,1) 12%, rgba(255,255,255,1) 24%, rgba(255,255,255,1) 77%, rgba(255,242,0,1) 88%, rgba(161,219,0,1) 100%); +filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a1db00', endColorstr='#a1db00', GradientType=1 );"> + <div class="container"> + <div class="row"> + <div class="col-lg-12"><center><img style="padding:5px 5px 5px 5px"src="assets/images/logo-rssa-black-1.png"></center> + </div> + </div> + </div> <!-- end container --> + </div> <!-- end navbar-custom --> + + +<input type="hidden" id="cek_nama" value="<?php echo $_GET['nama']; ?>"> +<input type="hidden" id="cek_satker" value="<?php echo $_GET['satker']; ?>"> +<input type="hidden" id="cek_jenis" value="<?php echo $_GET['jenis']; ?>"> +<input type="hidden" id="cek_data_pegawai_id" value="<?php echo $_GET['data_pegawai_id']; ?>"> +<input type="hidden" id="cek_nampeg" value="<?php echo $_GET['nampeg']; ?>"> +<input type="hidden" id="cek_nipb" value="<?php echo $_GET['nipb']; ?>"> +<input type="hidden" id="cek_nama_satker" value="<?php echo $_GET['nama_satker']; ?>"> +<input type="hidden" id="cek_password" value="<?php echo $_GET['password']; ?>"> + + <!-- LOGO --> + <div class="topbar-left" style="background-color:#f3f3f3" id="compose"> + <a href="#" class="logo" style="font-size:16px"><span style="color:black">BERANDA</span></a> + <!-- Image logo --> + <!--<a href="index.html" class="logo">--> + <!--<span>--> + <!--<img src="assets/images/logo.png" alt="" height="30">--> + <!--</span>--> + <!--<i>--> + <!--<img src="assets/images/logo_sm.png" alt="" height="28">--> + <!--</i>--> + <!--</a>--> + </div> + + <!-- Button mobile view to collapse sidebar menu --> + <div class="navbar navbar-default" role="navigation"> + <div class="container"> + + <!-- Navbar-left --> + <ul class="nav navbar-nav navbar-left"> + <li> + <button class="button-menu-mobile open-left waves-effect"> + <i class="mdi mdi-menu"></i> + </button> + </li> + <li class="hidden-xs"> + <form role="search" class="app-search"> + <input type="text" style="font-size:14px;width:800px;" class="form-control" value="<?php + if ($_GET['jenis']=='Staf') { + echo $_GET['nampeg'].' / '.$_GET['nipb']; + } else + if ($_GET['jenis']=='Admin') { + echo $_GET['jenis'].' / '.$_GET['nama_satker']; + } else + if ($_GET['jenis']=='Kordik') { + echo $_GET['nampeg'].' / '.$_GET['jenis'].' / '.$_GET['nama_satker']; + } + ?>" disabled> + </form> + </li> + </ul> + + <!-- Right(Notification) --> + <ul class="nav navbar-nav navbar-right"> + <!-- <li> + <a href="#" class="right-menu-item dropdown-toggle" data-toggle="dropdown"> + <i class="mdi mdi-bell"></i> + <span class="badge up bg-success">4</span> + </a> + + <ul class="dropdown-menu dropdown-menu-right arrow-dropdown-menu arrow-menu-right dropdown-lg user-list notify-list"> + <li> + <h5>Notifications</h5> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="icon bg-info"> + <i class="mdi mdi-account"></i> + </div> + <div class="user-desc"> + <span class="name">New Signup</span> + <span class="time">5 hours ago</span> + </div> + </a> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="icon bg-danger"> + <i class="mdi mdi-comment"></i> + </div> + <div class="user-desc"> + <span class="name">New Message received</span> + <span class="time">1 day ago</span> + </div> + </a> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="icon bg-warning"> + <i class="mdi mdi-settings"></i> + </div> + <div class="user-desc"> + <span class="name">Settings</span> + <span class="time">1 day ago</span> + </div> + </a> + </li> + <li class="all-msgs text-center"> + <p class="m-0"><a href="#">See all Notification</a></p> + </li> + </ul> + </li> + + <li> + <a href="#" class="right-menu-item dropdown-toggle" data-toggle="dropdown"> + <i class="mdi mdi-email"></i> + <span class="badge up bg-danger">8</span> + </a> + + <ul class="dropdown-menu dropdown-menu-right arrow-dropdown-menu arrow-menu-right dropdown-lg user-list notify-list"> + <li> + <h5>Messages</h5> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="avatar"> + <img src="assets/images/users/avatar-2.jpg" alt=""> + </div> + <div class="user-desc"> + <span class="name">Patricia Beach</span> + <span class="desc">There are new settings available</span> + <span class="time">2 hours ago</span> + </div> + </a> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="avatar"> + <img src="assets/images/users/avatar-3.jpg" alt=""> + </div> + <div class="user-desc"> + <span class="name">Connie Lucas</span> + <span class="desc">There are new settings available</span> + <span class="time">2 hours ago</span> + </div> + </a> + </li> + <li> + <a href="#" class="user-list-item"> + <div class="avatar"> + <img src="assets/images/users/avatar-4.jpg" alt=""> + </div> + <div class="user-desc"> + <span class="name">Margaret Becker</span> + <span class="desc">There are new settings available</span> + <span class="time">2 hours ago</span> + </div> + </a> + </li> + <li class="all-msgs text-center"> + <p class="m-0"><a href="#">See all Messages</a></p> + </li> + </ul> + </li> + + <!-- <li> + <a href="javascript:void(0);" class="right-bar-toggle right-menu-item"> + <i class="mdi mdi-settings"></i> + </a> + </li> --> + + <li class="dropdown user-box"> + <a href="#" class="right-menu-item dropdown-toggle" data-toggle="dropdown"> + <i class="mdi mdi-account"></i> + </a> + + <ul class="dropdown-menu dropdown-menu-right arrow-dropdown-menu arrow-menu-right user-list notify-list"> + <li> + <h5>Hi, <?php echo $_GET['nama']; ?></h5> + </li> + <li><a href="#" id="ganti_password"><i class="ti-user m-r-5"></i> Ubah Userlogin dan Password</a></li> + <!-- <li><a href="javascript:void(0)"><i class="ti-user m-r-5"></i> Profile</a></li> + <li><a href="javascript:void(0)"><i class="ti-settings m-r-5"></i> Settings</a></li> + <li><a href="javascript:void(0)"><i class="ti-lock m-r-5"></i> Lock screen</a></li> --> + <li><a href="#" id="logout"><i class="ti-power-off m-r-5"></i> Logout</a></li> + </ul> + </li> + + </ul> <!-- end navbar-right --> + + </div><!-- end container --> + </div><!-- end navbar --> + </div> + <!-- Top Bar End --> + + + <!-- ========== Left Sidebar Start ========== --> + <div class="left side-menu" style="background-color:white;"> + <div class="sidebar-inner slimscrollleft"> + + <!--- Sidemenu --> + <div id="sidebar-menu"><br><br><br><br><br><br> + <ul> + <?php if ($_GET['jenis']!='Staf') {?> + <!-- + <li class="menu-title">Pelatihan</li> + --> + <?php if ($_GET['jenis']!='Bidang') {?> + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_info"><i class="mdi mdi-information-outline"></i> <span>Info Kegiatan </span> </a> + </li> + --> + <?php } + if($_GET['jenis']=='Bidang') { + ?> + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="cekpeserta"><i class="mdi mdi-account-check"></i> <span>Cek Peserta </span> </a> + </li> + --> + <?php } else + if($_GET['jenis']=='Admin') { + ?> + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_persiapan"><i class=" mdi mdi-cast"></i><span class="label label-danger pull-right">2</span> <span>Persiapan</span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_kehadiran"><i class="mdi mdi-check-circle-outline"></i> <span>Kegiatan </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_evaluasipp"><i class="mdi mdi-file-outline"></i> <span>Evaluasi Hasil</span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_nilaipp"><i class="mdi mdi-tag-outline"></i> <span>Evaluasi Acara</span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071"><i class="mdi mdi-buffer"></i> <span>Laporan </span> </a> + </li> + --> + <?php } else + if($_GET['jenis']=='Kordik') { + ?> + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="cekmentor"><i class="mdi mdi-school "></i> <span>Permintaan Mentor </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_inbox"><i class="mdi mdi-email-outline"></i> <span>Inbox </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_kegiatan"><i class="mdi mdi-check-circle-outline"></i> <span>Kegiatan </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_evaluasikordik"><i class="mdi mdi-account-check"></i> <span>Evaluasi Hasil</span> </a> + </li> + --> + <?php } ?> + + + + <?php + if (($_GET['jenis']=='Admin') || ($_GET['jenis']=='Kordik')){ + ?> + <li class="menu-title">PELATIHAN</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <!--<li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_laporan"><i class="mdi mdi-table"></i> <span>Laporan </span> </a> + </li>--> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="pel_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">SPONSORSHIP</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="spo_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <!--<li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="spo_laporan"><i class="mdi mdi-table"></i> <span>Laporan </span> </a> + </li>--> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="spo_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">FELLOWSHIP</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="ship_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <!--<li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="spo_laporan"><i class="mdi mdi-table"></i> <span>Laporan </span> </a> + </li>--> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="ship_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">IJIN BELAJAR</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="bel_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="bel_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">TUGAS BELAJAR</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="tbel_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="tbel_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">KETERANGAN IJIN BELAJAR</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="kbel_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="kbel_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <li class="menu-title">PENCANTUMAN GELAR</li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="jbel_inbox"><i class="mdi mdi-inbox"></i><span> Inbox</span> </a> + </li> + <li class="has_sub hiddik"> + <a href="#" class="waves-effect" style="color:#707071" id="jbel_setting"><i class="mdi mdi-settings"></i> <span>Setting </span> </a> + </li> + + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="belajar"><i class="mdi mdi-school"></i><span> Belajar</span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="bel_lap"><i class="mdi mdi-library"></i> <span>Laporan </span> </a> + </li> + --> + <?php } + if ($_GET['jenis']=='Admin') { + ?> + <li class="menu-title">Master</li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="master"><i class="mdi mdi-settings"></i> <span>Master Data </span> </a> + </li> + + <?php } + } else ?> + <?php + if($_GET['jenis']=='Staf') { + ?> + <!-- + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="api"><i class="mdi mdi-settings"></i> <span>API </span> </a> + </li> + --> + <li class="menu-title">SDM</li> + <!--<li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_informasi"><i class="mdi mdi-newspaper"></i> <span>Informasi </span> </a> + </li>--> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_biodata"><i class="mdi mdi-account-circle"></i> <span>Biodata </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_pel"><i class="mdi mdi-check-circle-outline"></i> <span>Pelatihan </span> </a> + </li> + + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_spo"><i class="mdi mdi-lightbulb-outline"></i> <span>Sponsorship</span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_ship"><i class="mdi mdi-google-circles-group"></i> <span>Fellowship </span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_ibel"><i class="mdi mdi-library"></i> <span>Ijin Belajar </span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_tbel"><i class="mdi mdi-cast"></i> <span>Tugas Belajar </span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_kbel"><i class="mdi mdi-school"></i> <span>Keterangan Belajar </span> </a> + </li> + <li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_jbel"><i class="mdi mdi-file-outline"></i> <span>Usulan Gelar </span> </a> + </li> + <!--<li class="has_sub"> + <a href="#" class="waves-effect" style="color:#707071" id="st_tubel"><i class="mdi mdi-lightbulb-outline"></i> <span>Riwayat Pelatihan </span> </a> + </li>--> + <?php } ?> + </ul> + </div> + <!-- Sidebar --> + <div class="clearfix"></div> + + </div> + <!-- Sidebar -left --> + + </div> + <!-- Left Sidebar End --> + + + + <!-- ============================================================== --> + <!-- Start right Content here --> + <!-- ============================================================== --> + <div class="content-page"> + <div class="content"> + <div class="container" id="main_tag"></div> <!-- container --> + </div> <!-- content --> +<!-- + <footer class="footer text-right"> + © 2019 dynandsoftware + </footer> --> + + <footer class="main-footer navbar-fixed-bottom" style="background-color:#36404e;color:white;px;padding:10px;" align="center"> + &copy; 2020 dynandsoftware + </footer> + </div> + + + <!-- ============================================================== --> + <!-- End Right content here --> + <!-- ============================================================== --> + + + <!-- Right Sidebar --> + <div class="side-bar right-bar"> + <a href="javascript:void(0);" class="right-bar-toggle"> + <i class="mdi mdi-close-circle-outline"></i> + </a> + <h4 class="">Settings</h4> + <div class="setting-list nicescroll"> + <div class="row m-t-20"> + <div class="col-xs-8"> + <h5 class="m-0">Notifications</h5> + <p class="text-muted m-b-0"><small>Do you need them?</small></p> + </div> + <div class="col-xs-4 text-right"> + <input type="checkbox" checked data-plugin="switchery" data-color="#7fc1fc" data-size="small"/> + </div> + </div> + + <div class="row m-t-20"> + <div class="col-xs-8"> + <h5 class="m-0">API Access</h5> + <p class="m-b-0 text-muted"><small>Enable/Disable access</small></p> + </div> + <div class="col-xs-4 text-right"> + <input type="checkbox" checked data-plugin="switchery" data-color="#7fc1fc" data-size="small"/> + </div> + </div> + + <div class="row m-t-20"> + <div class="col-xs-8"> + <h5 class="m-0">Auto Updates</h5> + <p class="m-b-0 text-muted"><small>Keep up to date</small></p> + </div> + <div class="col-xs-4 text-right"> + <input type="checkbox" checked data-plugin="switchery" data-color="#7fc1fc" data-size="small"/> + </div> + </div> + + <div class="row m-t-20"> + <div class="col-xs-8"> + <h5 class="m-0">Online Status</h5> + <p class="m-b-0 text-muted"><small>Show your status to all</small></p> + </div> + <div class="col-xs-4 text-right"> + <input type="checkbox" checked data-plugin="switchery" data-color="#7fc1fc" data-size="small"/> + </div> + </div> + </div> + </div> + <!-- /Right-bar --> + + </div> + <!-- END wrapper --> + + + + <script> + var resizefunc = []; + </script> + + <!-- jQuery --> + <script src="assets/js/jquery.min.js"></script> + <script src="assets/js/bootstrap.min.js"></script> + <script src="assets/js/detect.js"></script> + <script src="assets/js/fastclick.js"></script> + <script src="assets/js/jquery.blockUI.js"></script> + <script src="assets/js/waves.js"></script> + <script src="assets/js/jquery.slimscroll.js"></script> + <script src="assets/js/jquery.scrollTo.min.js"></script> + <script src="plugins/switchery/switchery.min.js"></script> + + <!-- Counter js --> + <script src="plugins/waypoints/jquery.waypoints.min.js"></script> + <script src="plugins/counterup/jquery.counterup.min.js"></script> + + <!--Morris Chart--> + <script src="plugins/morris/morris.min.js"></script> + <script src="plugins/raphael/raphael-min.js"></script> + + <!-- Dashboard init --> + <script src="assets/pages/jquery.dashboard.js"></script> + + <!-- App js --> + <script src="assets/js/jquery.core.js"></script> + <script src="assets/js/jquery.app.js"></script> + + <script src="plugins/datatables/jquery.dataTables.min.js"></script> + <script src="plugins/datatables/dataTables.bootstrap.js"></script> + + <script src="plugins/datatables/dataTables.buttons.min.js"></script> + <script src="plugins/datatables/buttons.bootstrap.min.js"></script> + <script src="plugins/datatables/jszip.min.js"></script> + <script src="plugins/datatables/pdfmake.min.js"></script> + <script src="plugins/datatables/vfs_fonts.js"></script> + <script src="plugins/datatables/buttons.html5.min.js"></script> + <script src="plugins/datatables/buttons.print.min.js"></script> + <script src="plugins/datatables/dataTables.fixedHeader.min.js"></script> + <script src="plugins/datatables/dataTables.keyTable.min.js"></script> + <script src="plugins/datatables/dataTables.responsive.min.js"></script> + <script src="plugins/datatables/responsive.bootstrap.min.js"></script> + <script src="plugins/datatables/dataTables.scroller.min.js"></script> + <script src="plugins/datatables/dataTables.colVis.js"></script> + <script src="plugins/datatables/dataTables.fixedColumns.min.js"></script> + <script src="plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script> + + <!-- init --> + <script src="assets/pages/jquery.datatables.init.js"></script> + <script src="assets/pages/jquery.form-pickers.init.js"></script> + + <!-- Chart --> + <script src="plugins/highcharts/highcharts.js"></script> + <script src="plugins/highcharts/jquery.highchartTable.js"></script> + <script src="plugins/highcharts/exporting.js"></script> + + <script src="assets/js/select2.js"></script> + <script src="assets/js/enter.js"></script> + <script src="assets/js/jspdf.min.js"></script> + + <script type="text/javascript"> + + var sess_satker = $('#cek_satker').val(); + var sess_jenis = $('#cek_jenis').val(); + + if (sess_jenis=='Kordik') {$('.hiddik').hide();} else {$('.hiddik').show();} + + $('#compose').click(function(){ + alert('a'); + }); + + + $('#pel_info').click(function(){ + $.post('app/info/main.php',{jenis:sess_jenis},function(html){$("#main_tag").html(html)}); + }); + + $('#cekpeserta').click(function(){ + $.post('app/cekpeserta/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#cekmentor').click(function(){ + $.post('app/cekmentor/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_persiapan').click(function(){ + $.post('app/persiapan/main.php',{jenis:sess_jenis},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_kehadiran').click(function(){ + $.post('app/kehadiran/main.php',{jenis:sess_jenis},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_kegiatan').click(function(){ + $.post('app/kegiatan/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); +/* + $('#pel_inbox').click(function(){ + $.post('app/inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); +*/ + $('#pel_evaluasipp').click(function(){ + $.post('app/evaluasipp/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_evaluasikordik').click(function(){ + $.post('app/evaluasikd/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#belajar').click(function(){ + $.post('app/belajar/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#master').click(function(){ + $.post('app/master/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#api').click(function(){ + $.post('app/API/main.php',function(html){$("#main_tag").html(html)}); + }); + + $('#st_spo').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_spo/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_pel').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_pel/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_sp').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_sp/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_ibel').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_ibel/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_tbel').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_tbel/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_kbel').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_kbel/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#st_jbel').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_jbel/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + $('#bel_inbox').click(function(){ + $.post('app/bel_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#bel_setting').click(function(){ + $.post('app/bel_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#tbel_inbox').click(function(){ + $.post('app/tbel_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#tbel_setting').click(function(){ + $.post('app/tbel_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#kbel_inbox').click(function(){ + $.post('app/kbel_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#kbel_setting').click(function(){ + $.post('app/kbel_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#jbel_inbox').click(function(){ + $.post('app/jbel_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#jbel_setting').click(function(){ + $.post('app/jbel_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_inbox').click(function(){ + $.post('app/pel_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_laporan').click(function(){ + $.post('app/pel_laporan/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#pel_setting').click(function(){ + $.post('app/pel_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#spo_inbox').click(function(){ + $.post('app/spo_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#spo_laporan').click(function(){ + $.post('app/spo_laporan/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#spo_setting').click(function(){ + $.post('app/spo_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#ship_inbox').click(function(){ + $.post('app/ship_inbox/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#ship_setting').click(function(){ + $.post('app/ship_setting/main.php',{jenis:sess_jenis, satker:sess_satker},function(html){$("#main_tag").html(html)}); + }); + + $('#st_ship').click(function(){ + var data_pegawai_id=$('#cek_data_pegawai_id').val(); + $.post('app/st_ship/main.php',{data_pegawai_id:data_pegawai_id},function(html){$("#main_tag").html(html)}); + }); + + + window.history.pushState(null, null, window.location.pathname); + + $('#logout').click(function(){ + var d = 'Logout'; + $.ajax({ + type: "POST", + url: "logout.php", + data: 'd='+d, + success: function(data){ + window.location.href='index.php'; + } + }); + }); + + var cek_nama = $('#cek_nama').val(); + if(cek_nama=='') {alert('Silakan login dulu..');$('#logout').trigger('click');} else {} + + $('#ganti_password').click(function(){ + var nm_lama = $('#cek_nama').val(); + var pwd_lama = $('#cek_password').val(); + var nm_baru = prompt("Userlogin:",nm_lama) + var pwd_baru = prompt("Password:",pwd_lama) + if (!nm_baru) {} else { + if (nm_baru==nm_lama) {} else { + var nampeg = $('#cek_nampeg').val(); + var key = 'ganti_userlogin'; + $.ajax({ + type: "POST", + url: "app/master/user/crud.php", + data: 'nampeg='+nampeg + +'&baru='+nm_baru + +'&key='+key, + success: function(data){ + alert('Userlogin terupdate..'); + } + }); + } + } + if (!pwd_baru) {} else { + if (pwd_baru==pwd_lama) {} else { + var nampeg = $('#cek_nampeg').val(); + var key = 'ganti_password'; + $.ajax({ + type: "POST", + url: "app/master/user/crud.php", + data: 'nampeg='+nampeg + +'&baru='+pwd_baru + +'&key='+key, + success: function(data){ + alert('Password terupdate..'); + } + }); + } + } + }); + </script> + + </body> +</html> \ No newline at end of file diff --git a/plugins/animate/animate.min.css b/plugins/animate/animate.min.css new file mode 100644 index 0000000..b6f6129 --- /dev/null +++ b/plugins/animate/animate.min.css @@ -0,0 +1,11 @@ +@charset "UTF-8"; + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.5.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2016 Daniel Eden + */ + +.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} \ No newline at end of file diff --git a/plugins/autoNumeric/autoNumeric.js b/plugins/autoNumeric/autoNumeric.js new file mode 100644 index 0000000..08dc23e --- /dev/null +++ b/plugins/autoNumeric/autoNumeric.js @@ -0,0 +1,1465 @@ +/** + * autoNumeric.js + * @author: Bob Knothe + * @author: Sokolov Yura + * @version: 1.9.39 - 2015-07-17 GMT 5:00 PM / 19:00 + * + * Created by Robert J. Knothe on 2010-10-25. Please report any bugs to https://github.com/BobKnothe/autoNumeric + * Contributor by Sokolov Yura on 2010-11-07 + * + * Copyright (c) 2011 Robert J. Knothe http://www.decorplanit.com/plugin/ + * + * The MIT License (http://www.opensource.org/licenses/mit-license.php) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ +(function ($) { + "use strict"; + /*jslint browser: true*/ + /*global jQuery: false*/ + /*Cross browser routine for getting selected range/cursor position + */ + + /** + * Cross browser routine for getting selected range/cursor position + */ + function getElementSelection(that) { + var position = {}; + if (that.selectionStart === undefined) { + that.focus(); + var select = document.selection.createRange(); + position.length = select.text.length; + select.moveStart('character', -that.value.length); + position.end = select.text.length; + position.start = position.end - position.length; + } else { + position.start = that.selectionStart; + position.end = that.selectionEnd; + position.length = position.end - position.start; + } + return position; + } + + /** + * Cross browser routine for setting selected range/cursor position + */ + function setElementSelection(that, start, end) { + if (that.selectionStart === undefined) { + that.focus(); + var r = that.createTextRange(); + r.collapse(true); + r.moveEnd('character', end); + r.moveStart('character', start); + r.select(); + } else { + that.selectionStart = start; + that.selectionEnd = end; + } + } + + /** + * run callbacks in parameters if any + * any parameter could be a callback: + * - a function, which invoked with jQuery element, parameters and this parameter name and returns parameter value + * - a name of function, attached to $(selector).autoNumeric.functionName(){} - which was called previously + */ + function runCallbacks($this, settings) { + /** + * loops through the settings object (option array) to find the following + * k = option name example k=aNum + * val = option value example val=0123456789 + */ + $.each(settings, function (k, val) { + if (typeof val === 'function') { + settings[k] = val($this, settings, k); + } else if (typeof $this.autoNumeric[val] === 'function') { + /** + * calls the attached function from the html5 data example: data-a-sign="functionName" + */ + settings[k] = $this.autoNumeric[val]($this, settings, k); + } + }); + } + + /** + * Converts the vMin, vMax & mDec string to numeric value + */ + function convertKeyToNumber(settings, key) { + if (typeof (settings[key]) === 'string') { + settings[key] *= 1; + } + } + + /** + * Preparing user defined options for further usage + * merge them with defaults appropriately + */ + function autoCode($this, settings) { + runCallbacks($this, settings); + settings.tagList = ['b', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ins', 'kdb', 'label', 'li', 'output', 'p', 'q', 's', 'sample', 'span', 'strong', 'td', 'th', 'u', 'var']; + var vmax = settings.vMax.toString().split('.'), + vmin = (!settings.vMin && settings.vMin !== 0) ? [] : settings.vMin.toString().split('.'); + convertKeyToNumber(settings, 'vMax'); + convertKeyToNumber(settings, 'vMin'); + convertKeyToNumber(settings, 'mDec'); /** set mDec if not defined by user */ + settings.mDec = (settings.mRound === 'CHF') ? '2' : settings.mDec; + settings.allowLeading = true; + settings.aNeg = settings.vMin < 0 ? '-' : ''; + vmax[0] = vmax[0].replace('-', ''); + vmin[0] = vmin[0].replace('-', ''); + settings.mInt = Math.max(vmax[0].length, vmin[0].length, 1); + if (settings.mDec === null) { + var vmaxLength = 0, + vminLength = 0; + if (vmax[1]) { + vmaxLength = vmax[1].length; + } + if (vmin[1]) { + vminLength = vmin[1].length; + } + settings.mDec = Math.max(vmaxLength, vminLength); + } /** set alternative decimal separator key */ + if (settings.altDec === null && settings.mDec > 0) { + if (settings.aDec === '.' && settings.aSep !== ',') { + settings.altDec = ','; + } else if (settings.aDec === ',' && settings.aSep !== '.') { + settings.altDec = '.'; + } + } + /** cache regexps for autoStrip */ + var aNegReg = settings.aNeg ? '([-\\' + settings.aNeg + ']?)' : '(-?)'; + settings.aNegRegAutoStrip = aNegReg; + settings.skipFirstAutoStrip = new RegExp(aNegReg + '[^-' + (settings.aNeg ? '\\' + settings.aNeg : '') + '\\' + settings.aDec + '\\d]' + '.*?(\\d|\\' + settings.aDec + '\\d)'); + settings.skipLastAutoStrip = new RegExp('(\\d\\' + settings.aDec + '?)[^\\' + settings.aDec + '\\d]\\D*$'); + var allowed = '-' + settings.aNum + '\\' + settings.aDec; + settings.allowedAutoStrip = new RegExp('[^' + allowed + ']', 'gi'); + settings.numRegAutoStrip = new RegExp(aNegReg + '(?:\\' + settings.aDec + '?(\\d+\\' + settings.aDec + '\\d+)|(\\d*(?:\\' + settings.aDec + '\\d*)?))'); + return settings; + } + + /** + * strips all unwanted characters and leave only a number alert + */ + function autoStrip(s, settings, strip_zero) { + if (settings.aSign) { /** remove currency sign */ + while (s.indexOf(settings.aSign) > -1) { + s = s.replace(settings.aSign, ''); + } + } + s = s.replace(settings.skipFirstAutoStrip, '$1$2'); /** first replace anything before digits */ + s = s.replace(settings.skipLastAutoStrip, '$1'); /** then replace anything after digits */ + s = s.replace(settings.allowedAutoStrip, ''); /** then remove any uninterested characters */ + if (settings.altDec) { + s = s.replace(settings.altDec, settings.aDec); + } /** get only number string */ + var m = s.match(settings.numRegAutoStrip); + s = m ? [m[1], m[2], m[3]].join('') : ''; + if ((settings.lZero === 'allow' || settings.lZero === 'keep') && strip_zero !== 'strip') { + var parts = [], + nSign = ''; + parts = s.split(settings.aDec); + if (parts[0].indexOf('-') !== -1) { + nSign = '-'; + parts[0] = parts[0].replace('-', ''); + } + if (parts[0].length > settings.mInt && parts[0].charAt(0) === '0') { /** strip leading zero if need */ + parts[0] = parts[0].slice(1); + } + s = nSign + parts.join(settings.aDec); + } + if ((strip_zero && settings.lZero === 'deny') || (strip_zero && settings.lZero === 'allow' && settings.allowLeading === false)) { + var strip_reg = '^' + settings.aNegRegAutoStrip + '0*(\\d' + (strip_zero === 'leading' ? ')' : '|$)'); + strip_reg = new RegExp(strip_reg); + s = s.replace(strip_reg, '$1$2'); + } + return s; + } + + /** + * places or removes brackets on negative values + * works only when with pSign: 'p' + */ + function negativeBracket(s, settings) { + if (settings.pSign === 'p') { + var brackets = settings.nBracket.split(','); + if (!settings.hasFocus && !settings.removeBrackets) { + s = s.replace(settings.aNeg, ''); + s = brackets[0] + s + brackets[1]; + } else if ((settings.hasFocus && s.charAt(0) === brackets[0]) || (settings.removeBrackets && s.charAt(0) === brackets[0])) { + s = s.replace(brackets[0], settings.aNeg); + s = s.replace(brackets[1], ''); + } + } + return s; + } + + /** + * function to handle numbers less than 0 that are stored in Exponential notation ex: .0000001 stored as 1e-7 + */ + function checkValue(value, settings) { + if (value) { + var checkSmall = +value; + if (checkSmall < 0.000001 && checkSmall > -1) { + value = +value; + if (value < 0.000001 && value > 0) { + value = (value + 10).toString(); + value = value.substring(1); + } + if (value < 0 && value > -1) { + value = (value - 10).toString(); + value = '-' + value.substring(2); + } + value = value.toString(); + } else { + var parts = value.split('.'); + if (parts[1] !== undefined) { + if (+parts[1] === 0) { + value = parts[0]; + } else { + parts[1] = parts[1].replace(/0*$/, ''); + value = parts.join('.'); + } + } + } + } + return (settings.lZero === 'keep') ? value : value.replace(/^0*(\d)/, '$1'); + } + + /** + * prepare number string to be converted to real number + */ + function fixNumber(s, aDec, aNeg) { + if (aDec && aDec !== '.') { + s = s.replace(aDec, '.'); + } + if (aNeg && aNeg !== '-') { + s = s.replace(aNeg, '-'); + } + if (!s.match(/\d/)) { + s += '0'; + } + return s; + } + + /** + * prepare real number to be converted to our format + */ + function presentNumber(s, aDec, aNeg) { + if (aNeg && aNeg !== '-') { + s = s.replace('-', aNeg); + } + if (aDec && aDec !== '.') { + s = s.replace('.', aDec); + } + return s; + } + + /** + * private function to check for empty value + */ + function checkEmpty(iv, settings, signOnEmpty) { + if (iv === '' || iv === settings.aNeg) { + if (settings.wEmpty === 'zero') { + return iv + '0'; + } + if (settings.wEmpty === 'sign' || signOnEmpty) { + return iv + settings.aSign; + } + return iv; + } + return null; + } + + /** + * private function that formats our number + */ + function autoGroup(iv, settings) { + iv = autoStrip(iv, settings); + var testNeg = iv.replace(',', '.'), + empty = checkEmpty(iv, settings, true); + if (empty !== null) { + return empty; + } + var digitalGroup = ''; + if (settings.dGroup === 2) { + digitalGroup = /(\d)((\d)(\d{2}?)+)$/; + } else if (settings.dGroup === 4) { + digitalGroup = /(\d)((\d{4}?)+)$/; + } else { + digitalGroup = /(\d)((\d{3}?)+)$/; + } /** splits the string at the decimal string */ + var ivSplit = iv.split(settings.aDec); + if (settings.altDec && ivSplit.length === 1) { + ivSplit = iv.split(settings.altDec); + } /** assigns the whole number to the a variable (s) */ + var s = ivSplit[0]; + if (settings.aSep) { + while (digitalGroup.test(s)) { /** re-inserts the thousand separator via a regular expression */ + s = s.replace(digitalGroup, '$1' + settings.aSep + '$2'); + } + } + if (settings.mDec !== 0 && ivSplit.length > 1) { + if (ivSplit[1].length > settings.mDec) { + ivSplit[1] = ivSplit[1].substring(0, settings.mDec); + } /** joins the whole number with the decimal value */ + iv = s + settings.aDec + ivSplit[1]; + } else { /** if whole numbers only */ + iv = s; + } + if (settings.aSign) { + var has_aNeg = iv.indexOf(settings.aNeg) !== -1; + iv = iv.replace(settings.aNeg, ''); + iv = settings.pSign === 'p' ? settings.aSign + iv : iv + settings.aSign; + if (has_aNeg) { + iv = settings.aNeg + iv; + } + } + if (testNeg < 0 && settings.nBracket !== null) { /** removes the negative sign and places brackets */ + iv = negativeBracket(iv, settings); + } + return iv; + } + + /** + * round number after setting by pasting or $().autoNumericSet() + * private function for round the number + * please note this handled as text - JavaScript math function can return inaccurate values + * also this offers multiple rounding methods that are not easily accomplished in JavaScript + */ + function autoRound(iv, settings) { /** value to string */ + iv = (iv === '') ? '0' : iv.toString(); + convertKeyToNumber(settings, 'mDec'); /** set mDec to number needed when mDec set by 'update method */ + if (settings.mRound === 'CHF') { + iv = (Math.round(iv * 20) / 20).toString(); + } + var ivRounded = '', + i = 0, + nSign = '', + rDec = (typeof (settings.aPad) === 'boolean' || settings.aPad === null) ? (settings.aPad ? settings.mDec : 0) : +settings.aPad; + var truncateZeros = function (ivRounded) { /** truncate not needed zeros */ + var regex = (rDec === 0) ? (/(\.(?:\d*[1-9])?)0*$/) : rDec === 1 ? (/(\.\d(?:\d*[1-9])?)0*$/) : new RegExp('(\\.\\d{' + rDec + '}(?:\\d*[1-9])?)0*$'); + ivRounded = ivRounded.replace(regex, '$1'); /** If there are no decimal places, we don't need a decimal point at the end */ + if (rDec === 0) { + ivRounded = ivRounded.replace(/\.$/, ''); + } + return ivRounded; + }; + if (iv.charAt(0) === '-') { /** Checks if the iv (input Value)is a negative value */ + nSign = '-'; + iv = iv.replace('-', ''); /** removes the negative sign will be added back later if required */ + } + if (!iv.match(/^\d/)) { /** append a zero if first character is not a digit (then it is likely to be a dot)*/ + iv = '0' + iv; + } + if (nSign === '-' && +iv === 0) { /** determines if the value is zero - if zero no negative sign */ + nSign = ''; + } + if ((+iv > 0 && settings.lZero !== 'keep') || (iv.length > 0 && settings.lZero === 'allow')) { /** trims leading zero's if needed */ + iv = iv.replace(/^0*(\d)/, '$1'); + } + var dPos = iv.lastIndexOf('.'), + /** virtual decimal position */ + vdPos = (dPos === -1) ? iv.length - 1 : dPos, + /** checks decimal places to determine if rounding is required */ + cDec = (iv.length - 1) - vdPos; /** check if no rounding is required */ + if (cDec <= settings.mDec) { + ivRounded = iv; /** check if we need to pad with zeros */ + if (cDec < rDec) { + if (dPos === -1) { + ivRounded += '.'; + } + var zeros = '000000'; + while (cDec < rDec) { + zeros = zeros.substring(0, rDec - cDec); + ivRounded += zeros; + cDec += zeros.length; + } + } else if (cDec > rDec) { + ivRounded = truncateZeros(ivRounded); + } else if (cDec === 0 && rDec === 0) { + ivRounded = ivRounded.replace(/\.$/, ''); + } + if (settings.mRound !== 'CHF') { + return (+ivRounded === 0) ? ivRounded : nSign + ivRounded; + } + if (settings.mRound === 'CHF') { + dPos = ivRounded.lastIndexOf('.'); + iv = ivRounded; + } + + } /** rounded length of the string after rounding */ + var rLength = dPos + settings.mDec, + tRound = +iv.charAt(rLength + 1), + ivArray = iv.substring(0, rLength + 1).split(''), + odd = (iv.charAt(rLength) === '.') ? (iv.charAt(rLength - 1) % 2) : (iv.charAt(rLength) % 2), + onePass = true; + if (odd !== 1) { + odd = (odd === 0 && (iv.substring(rLength + 2, iv.length) > 0)) ? 1 : 0; + } + /*jslint white: true*/ + if ((tRound > 4 && settings.mRound === 'S') || /** Round half up symmetric */ + (tRound > 4 && settings.mRound === 'A' && nSign === '') || /** Round half up asymmetric positive values */ + (tRound > 5 && settings.mRound === 'A' && nSign === '-') || /** Round half up asymmetric negative values */ + (tRound > 5 && settings.mRound === 's') || /** Round half down symmetric */ + (tRound > 5 && settings.mRound === 'a' && nSign === '') || /** Round half down asymmetric positive values */ + (tRound > 4 && settings.mRound === 'a' && nSign === '-') || /** Round half down asymmetric negative values */ + (tRound > 5 && settings.mRound === 'B') || /** Round half even "Banker's Rounding" */ + (tRound === 5 && settings.mRound === 'B' && odd === 1) || /** Round half even "Banker's Rounding" */ + (tRound > 0 && settings.mRound === 'C' && nSign === '') || /** Round to ceiling toward positive infinite */ + (tRound > 0 && settings.mRound === 'F' && nSign === '-') || /** Round to floor toward negative infinite */ + (tRound > 0 && settings.mRound === 'U') || /** round up away from zero */ + (settings.mRound === 'CHF')) { /** Round Swiss FRanc */ + /*jslint white: false*/ + for (i = (ivArray.length - 1); i >= 0; i -= 1) { /** Round up the last digit if required, and continue until no more 9's are found */ + if (ivArray[i] !== '.') { + if (settings.mRound === 'CHF' && ivArray[i] <= 2 && onePass) { + ivArray[i] = 0; + onePass = false; + break; + } + if (settings.mRound === 'CHF' && ivArray[i] <= 7 && onePass) { + ivArray[i] = 5; + onePass = false; + break; + } + if (settings.mRound === 'CHF' && onePass) { + ivArray[i] = 10; + onePass = false; + } else { + ivArray[i] = +ivArray[i] + 1; + } + if (ivArray[i] < 10) { + break; + } + if (i > 0) { + ivArray[i] = '0'; + } + } + } + } + ivArray = ivArray.slice(0, rLength + 1); /** Reconstruct the string, converting any 10's to 0's */ + ivRounded = truncateZeros(ivArray.join('')); /** return rounded value */ + return (+ivRounded === 0) ? ivRounded : nSign + ivRounded; + } + + /** + * truncate decimal part of a number + */ + function truncateDecimal(s, settings, paste) { + var aDec = settings.aDec, + mDec = settings.mDec; + s = (paste === 'paste') ? autoRound(s, settings) : s; + if (aDec && mDec) { + var parts = s.split(aDec); + /** truncate decimal part to satisfying length + * cause we would round it anyway */ + if (parts[1] && parts[1].length > mDec) { + if (mDec > 0) { + parts[1] = parts[1].substring(0, mDec); + s = parts.join(aDec); + } else { + s = parts[0]; + } + } + } + return s; + } + + /** + * checking that number satisfy format conditions + * and lays between settings.vMin and settings.vMax + * and the string length does not exceed the digits in settings.vMin and settings.vMax + */ + function autoCheck(s, settings) { + s = autoStrip(s, settings); + s = truncateDecimal(s, settings); + s = fixNumber(s, settings.aDec, settings.aNeg); + var value = +s; + return value >= settings.vMin && value <= settings.vMax; + } + + /** + * Holder object for field properties + */ + function AutoNumericHolder(that, settings) { + this.settings = settings; + this.that = that; + this.$that = $(that); + this.formatted = false; + this.settingsClone = autoCode(this.$that, this.settings); + this.value = that.value; + } + AutoNumericHolder.prototype = { + init: function (e) { + this.value = this.that.value; + this.settingsClone = autoCode(this.$that, this.settings); + this.ctrlKey = e.ctrlKey; + this.cmdKey = e.metaKey; + this.shiftKey = e.shiftKey; + this.selection = getElementSelection(this.that); /** keypress event overwrites meaningful value of e.keyCode */ + if (e.type === 'keydown' || e.type === 'keyup') { + this.kdCode = e.keyCode; + } + this.which = e.which; + this.processed = false; + this.formatted = false; + }, + setSelection: function (start, end, setReal) { + start = Math.max(start, 0); + end = Math.min(end, this.that.value.length); + this.selection = { + start: start, + end: end, + length: end - start + }; + if (setReal === undefined || setReal) { + setElementSelection(this.that, start, end); + } + }, + setPosition: function (pos, setReal) { + this.setSelection(pos, pos, setReal); + }, + getBeforeAfter: function () { + var value = this.value, + left = value.substring(0, this.selection.start), + right = value.substring(this.selection.end, value.length); + return [left, right]; + }, + getBeforeAfterStriped: function () { + var parts = this.getBeforeAfter(); + parts[0] = autoStrip(parts[0], this.settingsClone); + parts[1] = autoStrip(parts[1], this.settingsClone); + return parts; + }, + + /** + * strip parts from excess characters and leading zeroes + */ + normalizeParts: function (left, right) { + var settingsClone = this.settingsClone; + right = autoStrip(right, settingsClone); /** if right is not empty and first character is not aDec, */ + /** we could strip all zeros, otherwise only leading */ + var strip = right.match(/^\d/) ? true : 'leading'; + left = autoStrip(left, settingsClone, strip); /** prevents multiple leading zeros from being entered */ + if ((left === '' || left === settingsClone.aNeg) && settingsClone.lZero === 'deny') { + if (right > '') { + right = right.replace(/^0*(\d)/, '$1'); + } + } + var new_value = left + right; /** insert zero if has leading dot */ + if (settingsClone.aDec) { + var m = new_value.match(new RegExp('^' + settingsClone.aNegRegAutoStrip + '\\' + settingsClone.aDec)); + if (m) { + left = left.replace(m[1], m[1] + '0'); + new_value = left + right; + } + } /** insert zero if number is empty and io.wEmpty == 'zero' */ + if (settingsClone.wEmpty === 'zero' && (new_value === settingsClone.aNeg || new_value === '')) { + left += '0'; + } + return [left, right]; + }, + + /** + * set part of number to value keeping position of cursor + */ + setValueParts: function (left, right, paste) { + var settingsClone = this.settingsClone, + parts = this.normalizeParts(left, right), + new_value = parts.join(''), + position = parts[0].length; + if (autoCheck(new_value, settingsClone)) { + new_value = truncateDecimal(new_value, settingsClone, paste); + if (position > new_value.length) { + position = new_value.length; + } + this.value = new_value; + this.setPosition(position, false); + return true; + } + return false; + }, + + /** + * helper function for expandSelectionOnSign + * returns sign position of a formatted value + */ + signPosition: function () { + var settingsClone = this.settingsClone, + aSign = settingsClone.aSign, + that = this.that; + if (aSign) { + var aSignLen = aSign.length; + if (settingsClone.pSign === 'p') { + var hasNeg = settingsClone.aNeg && that.value && that.value.charAt(0) === settingsClone.aNeg; + return hasNeg ? [1, aSignLen + 1] : [0, aSignLen]; + } + var valueLen = that.value.length; + return [valueLen - aSignLen, valueLen]; + } + return [1000, -1]; + }, + + /** + * expands selection to cover whole sign + * prevents partial deletion/copying/overwriting of a sign + */ + expandSelectionOnSign: function (setReal) { + var sign_position = this.signPosition(), + selection = this.selection; + if (selection.start < sign_position[1] && selection.end > sign_position[0]) { /** if selection catches something except sign and catches only space from sign */ + if ((selection.start < sign_position[0] || selection.end > sign_position[1]) && this.value.substring(Math.max(selection.start, sign_position[0]), Math.min(selection.end, sign_position[1])).match(/^\s*$/)) { /** then select without empty space */ + if (selection.start < sign_position[0]) { + this.setSelection(selection.start, sign_position[0], setReal); + } else { + this.setSelection(sign_position[1], selection.end, setReal); + } + } else { /** else select with whole sign */ + this.setSelection(Math.min(selection.start, sign_position[0]), Math.max(selection.end, sign_position[1]), setReal); + } + } + }, + + /** + * try to strip pasted value to digits + */ + checkPaste: function () { + if (this.valuePartsBeforePaste !== undefined) { + var parts = this.getBeforeAfter(), + + oldParts = this.valuePartsBeforePaste; + delete this.valuePartsBeforePaste; /** try to strip pasted value first */ + parts[0] = parts[0].substr(0, oldParts[0].length) + autoStrip(parts[0].substr(oldParts[0].length), this.settingsClone); + if (!this.setValueParts(parts[0], parts[1], 'paste')) { + this.value = oldParts.join(''); + this.setPosition(oldParts[0].length, false); + } + } + }, + + /** + * process pasting, cursor moving and skipping of not interesting keys + * if returns true, further processing is not performed + */ + skipAllways: function (e) { + var kdCode = this.kdCode, + which = this.which, + ctrlKey = this.ctrlKey, + cmdKey = this.cmdKey, + shiftKey = this.shiftKey; /** catch the ctrl up on ctrl-v */ + if (((ctrlKey || cmdKey) && e.type === 'keyup' && this.valuePartsBeforePaste !== undefined) || (shiftKey && kdCode === 45)) { + this.checkPaste(); + return false; + } + /** codes are taken from http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx + * skip Fx keys, windows keys, other special keys + * Thanks Ney Estrabelli for the FF for Mac meta key support "keycode 224" + */ + if ((kdCode >= 112 && kdCode <= 123) || (kdCode >= 91 && kdCode <= 93) || (kdCode >= 9 && kdCode <= 31) || (kdCode < 8 && (which === 0 || which === kdCode)) || kdCode === 144 || kdCode === 145 || kdCode === 45 || kdCode === 224) { + return true; + } + if ((ctrlKey || cmdKey) && kdCode === 65) { /** if select all (a=65)*/ + return true; + } + if ((ctrlKey || cmdKey) && (kdCode === 67 || kdCode === 86 || kdCode === 88)) { /** if copy (c=67) paste (v=86) or cut (x=88) */ + if (e.type === 'keydown') { + this.expandSelectionOnSign(); + } + if (kdCode === 86 || kdCode === 45) { /** try to prevent wrong paste */ + if (e.type === 'keydown' || e.type === 'keypress') { + if (this.valuePartsBeforePaste === undefined) { + this.valuePartsBeforePaste = this.getBeforeAfter(); + } + } else { + this.checkPaste(); + } + } + return e.type === 'keydown' || e.type === 'keypress' || kdCode === 67; + } + if (ctrlKey || cmdKey) { + return true; + } + if (kdCode === 37 || kdCode === 39) { /** jump over thousand separator */ + var aSep = this.settingsClone.aSep, + start = this.selection.start, + value = this.that.value; + if (e.type === 'keydown' && aSep && !this.shiftKey) { + if (kdCode === 37 && value.charAt(start - 2) === aSep) { + this.setPosition(start - 1); + } else if (kdCode === 39 && value.charAt(start + 1) === aSep) { + this.setPosition(start + 1); + } + } + return true; + } + if (kdCode >= 34 && kdCode <= 40) { + return true; + } + return false; + }, + + /** + * process deletion of characters + * returns true if processing performed + */ + processAllways: function () { + var parts; /** process backspace or delete */ + if (this.kdCode === 8 || this.kdCode === 46) { + if (!this.selection.length) { + parts = this.getBeforeAfterStriped(); + if (this.kdCode === 8) { + parts[0] = parts[0].substring(0, parts[0].length - 1); + } else { + parts[1] = parts[1].substring(1, parts[1].length); + } + this.setValueParts(parts[0], parts[1]); + } else { + this.expandSelectionOnSign(false); + parts = this.getBeforeAfterStriped(); + this.setValueParts(parts[0], parts[1]); + } + return true; + } + return false; + }, + + /** + * process insertion of characters + * returns true if processing performed + */ + processKeypress: function () { + var settingsClone = this.settingsClone, + cCode = String.fromCharCode(this.which), + parts = this.getBeforeAfterStriped(), + left = parts[0], + right = parts[1]; /** start rules when the decimal character key is pressed */ + /** always use numeric pad dot to insert decimal separator */ + if (cCode === settingsClone.aDec || (settingsClone.altDec && cCode === settingsClone.altDec) || ((cCode === '.' || cCode === ',') && this.kdCode === 110)) { /** do not allow decimal character if no decimal part allowed */ + if (!settingsClone.mDec || !settingsClone.aDec) { + return true; + } /** do not allow decimal character before aNeg character */ + if (settingsClone.aNeg && right.indexOf(settingsClone.aNeg) > -1) { + return true; + } /** do not allow decimal character if other decimal character present */ + if (left.indexOf(settingsClone.aDec) > -1) { + return true; + } + if (right.indexOf(settingsClone.aDec) > 0) { + return true; + } + if (right.indexOf(settingsClone.aDec) === 0) { + right = right.substr(1); + } + this.setValueParts(left + settingsClone.aDec, right); + return true; + } + /** + * start rule on negative sign & prevent minus if not allowed + */ + if (cCode === '-' || cCode === '+') { + if (!settingsClone.aNeg) { + return true; + } /** caret is always after minus */ + if (left === '' && right.indexOf(settingsClone.aNeg) > -1) { + left = settingsClone.aNeg; + right = right.substring(1, right.length); + } /** change sign of number, remove part if should */ + if (left.charAt(0) === settingsClone.aNeg) { + left = left.substring(1, left.length); + } else { + left = (cCode === '-') ? settingsClone.aNeg + left : left; + } + this.setValueParts(left, right); + return true; + } /** digits */ + if (cCode >= '0' && cCode <= '9') { /** if try to insert digit before minus */ + if (settingsClone.aNeg && left === '' && right.indexOf(settingsClone.aNeg) > -1) { + left = settingsClone.aNeg; + right = right.substring(1, right.length); + } + if (settingsClone.vMax <= 0 && settingsClone.vMin < settingsClone.vMax && this.value.indexOf(settingsClone.aNeg) === -1 && cCode !== '0') { + left = settingsClone.aNeg + left; + } + this.setValueParts(left + cCode, right); + return true; + } /** prevent any other character */ + return true; + }, + + /** + * formatting of just processed value with keeping of cursor position + */ + formatQuick: function () { + var settingsClone = this.settingsClone, + parts = this.getBeforeAfterStriped(), + leftLength = this.value; + if ((settingsClone.aSep === '' || (settingsClone.aSep !== '' && leftLength.indexOf(settingsClone.aSep) === -1)) && (settingsClone.aSign === '' || (settingsClone.aSign !== '' && leftLength.indexOf(settingsClone.aSign) === -1))) { + var subParts = [], + nSign = ''; + subParts = leftLength.split(settingsClone.aDec); + if (subParts[0].indexOf('-') > -1) { + nSign = '-'; + subParts[0] = subParts[0].replace('-', ''); + parts[0] = parts[0].replace('-', ''); + } + if (subParts[0].length > settingsClone.mInt && parts[0].charAt(0) === '0') { /** strip leading zero if need */ + parts[0] = parts[0].slice(1); + } + parts[0] = nSign + parts[0]; + } + var value = autoGroup(this.value, this.settingsClone), + position = value.length; + if (value) { + /** prepare regexp which searches for cursor position from unformatted left part */ + var left_ar = parts[0].split(''), + i = 0; + for (i; i < left_ar.length; i += 1) { /** thanks Peter Kovari */ + if (!left_ar[i].match('\\d')) { + left_ar[i] = '\\' + left_ar[i]; + } + } + var leftReg = new RegExp('^.*?' + left_ar.join('.*?')); + /** search cursor position in formatted value */ + var newLeft = value.match(leftReg); + if (newLeft) { + position = newLeft[0].length; + /** if we are just before sign which is in prefix position */ + if (((position === 0 && value.charAt(0) !== settingsClone.aNeg) || (position === 1 && value.charAt(0) === settingsClone.aNeg)) && settingsClone.aSign && settingsClone.pSign === 'p') { + /** place caret after prefix sign */ + position = this.settingsClone.aSign.length + (value.charAt(0) === '-' ? 1 : 0); + } + } else if (settingsClone.aSign && settingsClone.pSign === 's') { + /** if we could not find a place for cursor and have a sign as a suffix */ + /** place carret before suffix currency sign */ + position -= settingsClone.aSign.length; + } + } + this.that.value = value; + this.setPosition(position); + this.formatted = true; + } + }; + + /** + * thanks to Anthony & Evan C + */ + function autoGet(obj) { + if (typeof obj === 'string') { + obj = obj.replace(/\[/g, "\\[").replace(/\]/g, "\\]"); + obj = '#' + obj.replace(/(:|\.)/g, '\\$1'); + /** obj = '#' + obj.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); */ + /** possible modification to replace the above 2 lines */ + } + return $(obj); + } + + /** + * function to attach data to the element + * and imitate the holder + */ + function getHolder($that, settings, update) { + var data = $that.data('autoNumeric'); + if (!data) { + data = {}; + $that.data('autoNumeric', data); + } + var holder = data.holder; + if ((holder === undefined && settings) || update) { + holder = new AutoNumericHolder($that.get(0), settings); + data.holder = holder; + } + return holder; + } + + var methods = { + + /** + * Method to initiate autoNumeric and attached the settings (default and options passed as a parameter + * $(someSelector).autoNumeric('init'); // initiate autoNumeric with defaults + * $(someSelector).autoNumeric('init', {option}); // initiate autoNumeric with options + * $(someSelector).autoNumeric(); // initiate autoNumeric with defaults + * $(someSelector).autoNumeric({option}); // initiate autoNumeric with options + * options passes as a parameter example '{aSep: '.', aDec: ',', aSign: '€ '} + */ + init: function (options) { + return this.each(function () { + var $this = $(this), + settings = $this.data('autoNumeric'), /** attempt to grab 'autoNumeric' settings, if they don't exist returns "undefined". */ + tagData = $this.data(), /** attempt to grab HTML5 data, if they don't exist we'll get "undefined".*/ + $input = $this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])'); + if (typeof settings !== 'object') { /** If we couldn't grab settings, create them from defaults and passed options. */ + settings = $.extend({}, $.fn.autoNumeric.defaults, tagData, options, { + aNum: '0123456789', + hasFocus: false, + removeBrackets: false, + runOnce: false, + tagList: ['b', 'caption', 'cite', 'code', 'dd', 'del', 'div', 'dfn', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ins', 'kdb', 'label', 'li', 'output', 'p', 'q', 's', 'sample', 'span', 'strong', 'td', 'th', 'u', 'var'] + }); /** Merge defaults, tagData and options */ + if (settings.aDec === settings.aSep) { + $.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand separator aSep: '" + settings.aSep + "' are the same character"); + } + $this.data('autoNumeric', settings); /** Save our new settings */ + } else { + return this; + } + var holder = getHolder($this, settings); + if (!$input && $this.prop('tagName').toLowerCase() === 'input') { /** checks for non-supported input types */ + $.error('The input type "' + $this.prop('type') + '" is not supported by autoNumeric()'); + + } + if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) === -1 && $this.prop('tagName').toLowerCase() !== 'input') { + $.error("The <" + $this.prop('tagName').toLowerCase() + "> is not supported by autoNumeric()"); + + } + if (settings.runOnce === false && settings.aForm) { /** routine to format default value on page load */ + if ($input) { + var setValue = true; + if ($this[0].value === '' && settings.wEmpty === 'empty') { + $this[0].value = ''; + setValue = false; + } + if ($this[0].value === '' && settings.wEmpty === 'sign') { + $this[0].value = settings.aSign; + setValue = false; + } + /** checks for page reload from back button + * also checks for ASP.net form post back + * the following HTML data attribute is REQUIRED (data-an-default="same value as the value attribute") + * example: <asp:TextBox runat="server" id="someID" value="1234.56" data-an-default="1234.56"> + */ + if (setValue && $this.val() !== '' && ((settings.anDefault === null && $this[0].value === $this.prop('defaultValue')) || (settings.anDefault !== null && settings.anDefault.toString() === $this.val()))) { + $this.autoNumeric('set', $this.val()); + } + } + if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1 && $this.text() !== '') { + $this.autoNumeric('set', $this.text()); + } + } + settings.runOnce = true; + if ($this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])')) { /**added hidden type */ + $this.on('keydown.autoNumeric', function (e) { + holder = getHolder($this); + if (holder.settings.aDec === holder.settings.aSep) { + $.error("autoNumeric will not function properly when the decimal character aDec: '" + holder.settings.aDec + "' and thousand separator aSep: '" + holder.settings.aSep + "' are the same character"); + } + if (holder.that.readOnly) { + holder.processed = true; + return true; + } + /** The below streamed code / comment allows the "enter" keydown to throw a change() event */ + /** if (e.keyCode === 13 && holder.inVal !== $this.val()){ + $this.change(); + holder.inVal = $this.val(); + }*/ + holder.init(e); + if (holder.skipAllways(e)) { + holder.processed = true; + return true; + } + if (holder.processAllways()) { + holder.processed = true; + holder.formatQuick(); + e.preventDefault(); + return false; + } + holder.formatted = false; + return true; + }); + $this.on('keypress.autoNumeric', function (e) { + holder = getHolder($this); + var processed = holder.processed; + holder.init(e); + if (holder.skipAllways(e)) { + return true; + } + if (processed) { + e.preventDefault(); + return false; + } + if (holder.processAllways() || holder.processKeypress()) { + holder.formatQuick(); + e.preventDefault(); + return false; + } + holder.formatted = false; + }); + $this.on('keyup.autoNumeric', function (e) { + holder = getHolder($this); + holder.init(e); + var skip = holder.skipAllways(e); + holder.kdCode = 0; + delete holder.valuePartsBeforePaste; + if ($this[0].value === holder.settings.aSign) { /** added to properly place the caret when only the currency is present */ + if (holder.settings.pSign === 's') { + setElementSelection(this, 0, 0); + } else { + setElementSelection(this, holder.settings.aSign.length, holder.settings.aSign.length); + } + } + if (skip) { + return true; + } + if (this.value === '') { + return true; + } + if (!holder.formatted) { + holder.formatQuick(); + } + }); + $this.on('focusin.autoNumeric', function () { + holder = getHolder($this); + var $settings = holder.settingsClone; + $settings.hasFocus = true; + if ($settings.nBracket !== null) { + var checkVal = $this.val(); + $this.val(negativeBracket(checkVal, $settings)); + } + holder.inVal = $this.val(); + var onEmpty = checkEmpty(holder.inVal, $settings, true); + if (onEmpty !== null && onEmpty !== '') { + $this.val(onEmpty); + } + }); + $this.on('focusout.autoNumeric', function () { + holder = getHolder($this); + var $settings = holder.settingsClone, + value = $this.val(), + origValue = value; + $settings.hasFocus = false; + var strip_zero = ''; /** added to control leading zero */ + if ($settings.lZero === 'allow') { /** added to control leading zero */ + $settings.allowLeading = false; + strip_zero = 'leading'; + } + if (value !== '') { + value = autoStrip(value, $settings, strip_zero); + if (checkEmpty(value, $settings) === null && autoCheck(value, $settings, $this[0])) { + value = fixNumber(value, $settings.aDec, $settings.aNeg); + value = autoRound(value, $settings); + value = presentNumber(value, $settings.aDec, $settings.aNeg); + } else { + value = ''; + } + } + var groupedValue = checkEmpty(value, $settings, false); + if (groupedValue === null) { + groupedValue = autoGroup(value, $settings); + } + if (groupedValue !== holder.inVal || groupedValue !== origValue) { + $this.val(groupedValue); + $this.change(); + delete holder.inVal; + } + }); + } + }); + }, + + /** + * method to remove settings and stop autoNumeric() - does not remove the formatting + * $(someSelector).autoNumeric('destroy'); // destroy autoNumeric + * no parameters accepted + */ + destroy: function () { + return $(this).each(function () { + var $this = $(this); + $this.off('.autoNumeric'); + $this.removeData('autoNumeric'); + }); + }, + + /** + * method to update settings - can be call as many times + * $(someSelector).autoNumeric('update', {options}); // updates the settings + * options passes as a parameter example '{aSep: '.', aDec: ',', aSign: '€ '} + */ + update: function (options) { + return $(this).each(function () { + var $this = autoGet($(this)), + settings = $this.data('autoNumeric'); + if (typeof settings !== 'object') { + $.error("You must initialize autoNumeric('init', {options}) prior to calling the 'update' method"); + } + var strip = $this.autoNumeric('get'); + settings = $.extend(settings, options); + getHolder($this, settings, true); + if (settings.aDec === settings.aSep) { + $.error("autoNumeric will not function properly when the decimal character aDec: '" + settings.aDec + "' and thousand separator aSep: '" + settings.aSep + "' are the same character"); + } + $this.data('autoNumeric', settings); + if ($this.val() !== '' || $this.text() !== '') { + return $this.autoNumeric('set', strip); + } + return; + }); + }, + + /** + * method to format value sent as a parameter "" + * $(someSelector).autoNumeric('set', 'value'}); // formats the value being passed + * value passed as a string - can be a integer '1234' or double '1234.56789' + * must contain only numbers and one decimal (period) character + */ + set: function (valueIn) { + if (valueIn === null) { + return; + } + return $(this).each(function () { + var $this = autoGet($(this)), + settings = $this.data('autoNumeric'), + value = valueIn.toString(), + testValue = valueIn.toString(), + $input = $this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])'); + if (typeof settings !== 'object') { + $.error("You must initialize autoNumeric('init', {options}) prior to calling the 'set' method"); + } + /** allows locale decimal separator to be a comma */ + if ((testValue === $this.attr('value') || testValue === $this.text()) && settings.runOnce === false) { + value = value.replace(',', '.'); + } + if (!$.isNumeric(+value)) { + $.error("The value (" + value + ") being 'set' is not numeric and has caused a error to be thrown"); + } + value = checkValue(value, settings); + settings.setEvent = true; + value.toString(); + if (value !== '') { + value = autoRound(value, settings); + } + value = presentNumber(value, settings.aDec, settings.aNeg); + if (!autoCheck(value, settings)) { + value = autoRound('', settings); + } + value = autoGroup(value, settings); + if ($input) { + return $this.val(value); + } + if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1) { + return $this.text(value); + } + return false; + }); + }, + + /** + * method to get the unformatted that accepts up to one parameter + * $(someSelector).autoNumeric('get'); no parameters accepted + * values returned as ISO numeric string "1234.56" where the decimal character is a period + * only the first element in the selector is returned + */ + get: function () { + var $this = autoGet($(this)), + settings = $this.data('autoNumeric'); + if (typeof settings !== 'object') { + $.error("You must initialize autoNumeric('init', {options}) prior to calling the 'get' method"); + } + var getValue = ''; + /** determine the element type then use .eq(0) selector to grab the value of the first element in selector */ + if ($this.is('input[type=text], input[type=hidden], input[type=tel], input:not([type])')) { /**added hidden type */ + getValue = $this.eq(0).val(); + } else if ($.inArray($this.prop('tagName').toLowerCase(), settings.tagList) !== -1) { + getValue = $this.eq(0).text(); + } else { + $.error("The <" + $this.prop('tagName').toLowerCase() + "> is not supported by autoNumeric()"); + } + if ((getValue === '' && settings.wEmpty === 'empty') || (getValue === settings.aSign && (settings.wEmpty === 'sign' || settings.wEmpty === 'empty'))) { + return ''; + } + if (getValue !== '' && settings.nBracket !== null) { + settings.removeBrackets = true; + getValue = negativeBracket(getValue, settings); + settings.removeBrackets = false; + } + if (settings.runOnce || settings.aForm === false) { + getValue = autoStrip(getValue, settings); + } + getValue = fixNumber(getValue, settings.aDec, settings.aNeg); + if (+getValue === 0 && settings.lZero !== 'keep') { + getValue = '0'; + } + if (settings.lZero === 'keep') { + return getValue; + } + getValue = checkValue(getValue, settings); + return getValue; /** returned Numeric String */ + }, + + /** + * The 'getString' method used jQuerys .serialize() method that creates a text string in standard URL-encoded notation + * it then loops through the string and un-formats the inputs with autoNumeric + * $(someSelector).autoNumeric('getString'); no parameter accepted + * values returned as ISO numeric string "1234.56" where the decimal character is a period + */ + getString: function () { + var isAutoNumeric = false, + $this = autoGet($(this)), + formFields = $this.serialize(), + formParts = formFields.split('&'), + formIndex = $('form').index($this), + allFormElements = $('form:eq(' + formIndex + ')'), + aiIndex = [], /* all input index */ + scIndex = [], /* successful control index */ + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, /* from jQuery serialize method */ + rsubmittable = /^(?:input|select|textarea|keygen)/i, /* from jQuery serialize method */ + rcheckableType = /^(?:checkbox|radio)$/i, + rnonAutoNumericTypes = /^(?:button|checkbox|color|date|datetime|datetime-local|email|file|image|month|number|password|radio|range|reset|search|submit|time|url|week)/i, + count = 0; + /*jslint unparam: true*/ + /* index of successful elements */ + $.each(allFormElements[0], function (i, field) { + if (field.name !== '' && rsubmittable.test(field.localName) && !rsubmitterTypes.test(field.type) && !field.disabled && (field.checked || !rcheckableType.test(field.type))) { + scIndex.push(count); + count = count + 1; + } else { + scIndex.push(-1); + } + }); + /* index of all inputs tags except checkbox */ + count = 0; + $.each(allFormElements[0], function (i, field) { + if (field.localName === 'input' && (field.type === '' || field.type === 'text' || field.type === 'hidden' || field.type === 'tel')) { + aiIndex.push(count); + count = count + 1; + } else { + aiIndex.push(-1); + if (field.localName === 'input' && rnonAutoNumericTypes.test(field.type)) { + count = count + 1; + } + } + }); + $.each(formParts, function (i, miniParts) { + miniParts = formParts[i].split('='); + var scElement = $.inArray(i, scIndex); + if (scElement > -1 && aiIndex[scElement] > -1) { + var testInput = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')'), + settings = testInput.data('autoNumeric'); + if (typeof settings === 'object') { + if (miniParts[1] !== null) { + miniParts[1] = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')').autoNumeric('get').toString(); + formParts[i] = miniParts.join('='); + isAutoNumeric = true; + } + } + } + }); + /*jslint unparam: false*/ + if (!isAutoNumeric) { + $.error("You must initialize autoNumeric('init', {options}) prior to calling the 'getString' method"); + } + return formParts.join('&'); + }, + + /** + * The 'getString' method used jQuerys .serializeArray() method that creates array or objects that can be encoded as a JSON string + * it then loops through the string and un-formats the inputs with autoNumeric + * $(someSelector).autoNumeric('getArray'); no parameter accepted + * values returned as ISO numeric string "1234.56" where the decimal character is a period + */ + getArray: function () { + var isAutoNumeric = false, + $this = autoGet($(this)), + formFields = $this.serializeArray(), + formIndex = $('form').index($this), + allFormElements = $('form:eq(' + formIndex + ')'), + aiIndex = [], /* all input index */ + scIndex = [], /* successful control index */ + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, /* from jQuery serialize method */ + rsubmittable = /^(?:input|select|textarea|keygen)/i, /* from jQuery serialize method */ + rcheckableType = /^(?:checkbox|radio)$/i, + rnonAutoNumericTypes = /^(?:button|checkbox|color|date|datetime|datetime-local|email|file|image|month|number|password|radio|range|reset|search|submit|time|url|week)/i, + count = 0; + /*jslint unparam: true*/ + /* index of successful elements */ + $.each(allFormElements[0], function (i, field) { + if (field.name !== '' && rsubmittable.test(field.localName) && !rsubmitterTypes.test(field.type) && !field.disabled && (field.checked || !rcheckableType.test(field.type))) { + scIndex.push(count); + count = count + 1; + } else { + scIndex.push(-1); + } + }); + /* index of all inputs tags */ + count = 0; + $.each(allFormElements[0], function (i, field) { + if (field.localName === 'input' && (field.type === '' || field.type === 'text' || field.type === 'hidden' || field.type === 'tel')) { + aiIndex.push(count); + count = count + 1; + } else { + aiIndex.push(-1); + if (field.localName === 'input' && rnonAutoNumericTypes.test(field.type)) { + count = count + 1; + } + } + }); + $.each(formFields, function (i, field) { + var scElement = $.inArray(i, scIndex); + if (scElement > -1 && aiIndex[scElement] > -1) { + var testInput = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')'), + settings = testInput.data('autoNumeric'); + if (typeof settings === 'object') { + field.value = $('form:eq(' + formIndex + ') input:eq(' + aiIndex[scElement] + ')').autoNumeric('get').toString(); + isAutoNumeric = true; + } + } + }); + /*jslint unparam: false*/ + if (!isAutoNumeric) { + $.error("None of the successful form inputs are initialized by autoNumeric."); + } + return formFields; + }, + + /** + * The 'getSteetings returns the object with autoNumeric settings for those who need to look under the hood + * $(someSelector).autoNumeric('getSettings'); // no parameters accepted + * $(someSelector).autoNumeric('getSettings').aDec; // return the aDec setting as a string - ant valid setting can be used + */ + getSettings: function () { + var $this = autoGet($(this)); + return $this.eq(0).data('autoNumeric'); + } + }; + + /** + * autoNumeric function + */ + $.fn.autoNumeric = function (method) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } + if (typeof method === 'object' || !method) { + return methods.init.apply(this, arguments); + } + $.error('Method "' + method + '" is not supported by autoNumeric()'); + }; + + /** + * Defaults are public - these can be overridden by the following: + * HTML5 data attributes + * Options passed by the 'init' or 'update' methods + * Use jQuery's $.extend method - great way to pass ASP.NET current culture settings + */ + $.fn.autoNumeric.defaults = { + /** allowed thousand separator characters + * comma = ',' + * period "full stop" = '.' + * apostrophe is escaped = '\'' + * space = ' ' + * none = '' + * NOTE: do not use numeric characters + */ + aSep: ',', + /** digital grouping for the thousand separator used in Format + * dGroup: '2', results in 99,99,99,999 common in India for values less than 1 billion and greater than -1 billion + * dGroup: '3', results in 999,999,999 default + * dGroup: '4', results in 9999,9999,9999 used in some Asian countries + */ + dGroup: '3', + /** allowed decimal separator characters + * period "full stop" = '.' + * comma = ',' + */ + aDec: '.', + /** allow to declare alternative decimal separator which is automatically replaced by aDec + * developed for countries the use a comma ',' as the decimal character + * and have keyboards\numeric pads that have a period 'full stop' as the decimal characters (Spain is an example) + */ + altDec: null, + /** allowed currency symbol + * Must be in quotes aSign: '$', a space is allowed aSign: '$ ' + */ + aSign: '', + /** placement of currency sign + * for prefix pSign: 'p', + * for suffix pSign: 's', + */ + pSign: 'p', + /** maximum possible value + * value must be enclosed in quotes and use the period for the decimal point + * value must be larger than vMin + */ + vMax: '9999999999999.99', + /** minimum possible value + * value must be enclosed in quotes and use the period for the decimal point + * value must be smaller than vMax + */ + vMin: '-9999999999999.99', + /** max number of decimal places = used to override decimal places set by the vMin & vMax values + * value must be enclosed in quotes example mDec: '3', + * This can also set the value via a call back function mDec: 'css:# + */ + mDec: null, + /** method used for rounding + * mRound: 'S', Round-Half-Up Symmetric (default) + * mRound: 'A', Round-Half-Up Asymmetric + * mRound: 's', Round-Half-Down Symmetric (lower case s) + * mRound: 'a', Round-Half-Down Asymmetric (lower case a) + * mRound: 'B', Round-Half-Even "Bankers Rounding" + * mRound: 'U', Round Up "Round-Away-From-Zero" + * mRound: 'D', Round Down "Round-Toward-Zero" - same as truncate + * mRound: 'C', Round to Ceiling "Toward Positive Infinity" + * mRound: 'F', Round to Floor "Toward Negative Infinity" + */ + mRound: 'S', + /** controls decimal padding + * aPad: true - always Pad decimals with zeros + * aPad: false - does not pad with zeros. + * aPad: `some number` - pad decimals with zero to number different from mDec + * thanks to Jonas Johansson for the suggestion + */ + aPad: true, + /** places brackets on negative value -$ 999.99 to (999.99) + * visible only when the field does NOT have focus the left and right symbols should be enclosed in quotes and seperated by a comma + * nBracket: null, nBracket: '(,)', nBracket: '[,]', nBracket: '<,>' or nBracket: '{,}' + */ + nBracket: null, + /** Displayed on empty string + * wEmpty: 'empty', - input can be blank + * wEmpty: 'zero', - displays zero + * wEmpty: 'sign', - displays the currency sign + */ + wEmpty: 'empty', + /** controls leading zero behavior + * lZero: 'allow', - allows leading zeros to be entered. Zeros will be truncated when entering additional digits. On focusout zeros will be deleted. + * lZero: 'deny', - allows only one leading zero on values less than one + * lZero: 'keep', - allows leading zeros to be entered. on fousout zeros will be retained. + */ + lZero: 'allow', + /** determine if the select all keyboard command will select + * the complete input text or only the input numeric value + * if the currency symbol is between the numeric value and the negative sign only the numeric value will sellected + */ + sNumber: true, + /** determine if the default value will be formatted on page ready. + * true = automatically formats the default value on page ready + * false = will not format the default value + */ + aForm: true, + /** helper option for ASP.NET postback + * should be the value of the unformatted default value + * examples: + * no default value='' {anDefault: ''} + * value=1234.56 {anDefault: '1234.56'} + */ + anDefault: null + }; +}(jQuery)); \ No newline at end of file diff --git a/plugins/autocomplete/autocomplete.zip b/plugins/autocomplete/autocomplete.zip new file mode 100644 index 0000000..f1b12a0 Binary files /dev/null and b/plugins/autocomplete/autocomplete.zip differ diff --git a/plugins/autocomplete/countries.js b/plugins/autocomplete/countries.js new file mode 100644 index 0000000..7d41ee4 --- /dev/null +++ b/plugins/autocomplete/countries.js @@ -0,0 +1,267 @@ +var countries = { + "AD": "Andorra", + "A2": "Andorra Test", + "AE": "United Arab Emirates", + "AF": "Afghanistan", + "AG": "Antigua and Barbuda", + "AI": "Anguilla", + "AL": "Albania", + "AM": "Armenia", + "AN": "Netherlands Antilles", + "AO": "Angola", + "AQ": "Antarctica", + "AR": "Argentina", + "AS": "American Samoa", + "AT": "Austria", + "AU": "Australia", + "AW": "Aruba", + "AX": "\u00c5land Islands", + "AZ": "Azerbaijan", + "BA": "Bosnia and Herzegovina", + "BB": "Barbados", + "BD": "Bangladesh", + "BE": "Belgium", + "BF": "Burkina Faso", + "BG": "Bulgaria", + "BH": "Bahrain", + "BI": "Burundi", + "BJ": "Benin", + "BL": "Saint Barth\u00e9lemy", + "BM": "Bermuda", + "BN": "Brunei", + "BO": "Bolivia", + "BQ": "British Antarctic Territory", + "BR": "Brazil", + "BS": "Bahamas", + "BT": "Bhutan", + "BV": "Bouvet Island", + "BW": "Botswana", + "BY": "Belarus", + "BZ": "Belize", + "CA": "Canada", + "CC": "Cocos [Keeling] Islands", + "CD": "Congo - Kinshasa", + "CF": "Central African Republic", + "CG": "Congo - Brazzaville", + "CH": "Switzerland", + "CI": "C\u00f4te d\u2019Ivoire", + "CK": "Cook Islands", + "CL": "Chile", + "CM": "Cameroon", + "CN": "China", + "CO": "Colombia", + "CR": "Costa Rica", + "CS": "Serbia and Montenegro", + "CT": "Canton and Enderbury Islands", + "CU": "Cuba", + "CV": "Cape Verde", + "CX": "Christmas Island", + "CY": "Cyprus", + "CZ": "Czech Republic", + "DD": "East Germany", + "DE": "Germany", + "DJ": "Djibouti", + "DK": "Denmark", + "DM": "Dominica", + "DO": "Dominican Republic", + "DZ": "Algeria", + "EC": "Ecuador", + "EE": "Estonia", + "EG": "Egypt", + "EH": "Western Sahara", + "ER": "Eritrea", + "ES": "Spain", + "ET": "Ethiopia", + "FI": "Finland", + "FJ": "Fiji", + "FK": "Falkland Islands", + "FM": "Micronesia", + "FO": "Faroe Islands", + "FQ": "French Southern and Antarctic Territories", + "FR": "France", + "FX": "Metropolitan France", + "GA": "Gabon", + "GB": "United Kingdom", + "GD": "Grenada", + "GE": "Georgia", + "GF": "French Guiana", + "GG": "Guernsey", + "GH": "Ghana", + "GI": "Gibraltar", + "GL": "Greenland", + "GM": "Gambia", + "GN": "Guinea", + "GP": "Guadeloupe", + "GQ": "Equatorial Guinea", + "GR": "Greece", + "GS": "South Georgia and the South Sandwich Islands", + "GT": "Guatemala", + "GU": "Guam", + "GW": "Guinea-Bissau", + "GY": "Guyana", + "HK": "Hong Kong SAR China", + "HM": "Heard Island and McDonald Islands", + "HN": "Honduras", + "HR": "Croatia", + "HT": "Haiti", + "HU": "Hungary", + "ID": "Indonesia", + "IE": "Ireland", + "IL": "Israel", + "IM": "Isle of Man", + "IN": "India", + "IO": "British Indian Ocean Territory", + "IQ": "Iraq", + "IR": "Iran", + "IS": "Iceland", + "IT": "Italy", + "JE": "Jersey", + "JM": "Jamaica", + "JO": "Jordan", + "JP": "Japan", + "JT": "Johnston Island", + "KE": "Kenya", + "KG": "Kyrgyzstan", + "KH": "Cambodia", + "KI": "Kiribati", + "KM": "Comoros", + "KN": "Saint Kitts and Nevis", + "KP": "North Korea", + "KR": "South Korea", + "KW": "Kuwait", + "KY": "Cayman Islands", + "KZ": "Kazakhstan", + "LA": "Laos", + "LB": "Lebanon", + "LC": "Saint Lucia", + "LI": "Liechtenstein", + "LK": "Sri Lanka", + "LR": "Liberia", + "LS": "Lesotho", + "LT": "Lithuania", + "LU": "Luxembourg", + "LV": "Latvia", + "LY": "Libya", + "MA": "Morocco", + "MC": "Monaco", + "MD": "Moldova", + "ME": "Montenegro", + "MF": "Saint Martin", + "MG": "Madagascar", + "MH": "Marshall Islands", + "MI": "Midway Islands", + "MK": "Macedonia", + "ML": "Mali", + "MM": "Myanmar [Burma]", + "MN": "Mongolia", + "MO": "Macau SAR China", + "MP": "Northern Mariana Islands", + "MQ": "Martinique", + "MR": "Mauritania", + "MS": "Montserrat", + "MT": "Malta", + "MU": "Mauritius", + "MV": "Maldives", + "MW": "Malawi", + "MX": "Mexico", + "MY": "Malaysia", + "MZ": "Mozambique", + "NA": "Namibia", + "NC": "New Caledonia", + "NE": "Niger", + "NF": "Norfolk Island", + "NG": "Nigeria", + "NI": "Nicaragua", + "NL": "Netherlands", + "NO": "Norway", + "NP": "Nepal", + "NQ": "Dronning Maud Land", + "NR": "Nauru", + "NT": "Neutral Zone", + "NU": "Niue", + "NZ": "New Zealand", + "OM": "Oman", + "PA": "Panama", + "PC": "Pacific Islands Trust Territory", + "PE": "Peru", + "PF": "French Polynesia", + "PG": "Papua New Guinea", + "PH": "Philippines", + "PK": "Pakistan", + "PL": "Poland", + "PM": "Saint Pierre and Miquelon", + "PN": "Pitcairn Islands", + "PR": "Puerto Rico", + "PS": "Palestinian Territories", + "PT": "Portugal", + "PU": "U.S. Miscellaneous Pacific Islands", + "PW": "Palau", + "PY": "Paraguay", + "PZ": "Panama Canal Zone", + "QA": "Qatar", + "RE": "R\u00e9union", + "RO": "Romania", + "RS": "Serbia", + "RU": "Russia", + "RW": "Rwanda", + "SA": "Saudi Arabia", + "SB": "Solomon Islands", + "SC": "Seychelles", + "SD": "Sudan", + "SE": "Sweden", + "SG": "Singapore", + "SH": "Saint Helena", + "SI": "Slovenia", + "SJ": "Svalbard and Jan Mayen", + "SK": "Slovakia", + "SL": "Sierra Leone", + "SM": "San Marino", + "SN": "Senegal", + "SO": "Somalia", + "SR": "Suriname", + "ST": "S\u00e3o Tom\u00e9 and Pr\u00edncipe", + "SU": "Union of Soviet Socialist Republics", + "SV": "El Salvador", + "SY": "Syria", + "SZ": "Swaziland", + "TC": "Turks and Caicos Islands", + "TD": "Chad", + "TF": "French Southern Territories", + "TG": "Togo", + "TH": "Thailand", + "TJ": "Tajikistan", + "TK": "Tokelau", + "TL": "Timor-Leste", + "TM": "Turkmenistan", + "TN": "Tunisia", + "TO": "Tonga", + "TR": "Turkey", + "TT": "Trinidad and Tobago", + "TV": "Tuvalu", + "TW": "Taiwan", + "TZ": "Tanzania", + "UA": "Ukraine", + "UG": "Uganda", + "UM": "U.S. Minor Outlying Islands", + "US": "United States", + "UY": "Uruguay", + "UZ": "Uzbekistan", + "VA": "Vatican City", + "VC": "Saint Vincent and the Grenadines", + "VD": "North Vietnam", + "VE": "Venezuela", + "VG": "British Virgin Islands", + "VI": "U.S. Virgin Islands", + "VN": "Vietnam", + "VU": "Vanuatu", + "WF": "Wallis and Futuna", + "WK": "Wake Island", + "WS": "Samoa", + "YD": "People's Democratic Republic of Yemen", + "YE": "Yemen", + "YT": "Mayotte", + "ZA": "South Africa", + "ZM": "Zambia", + "ZW": "Zimbabwe", + "ZZ": "Unknown or Invalid Region" +} \ No newline at end of file diff --git a/plugins/autocomplete/demo.js b/plugins/autocomplete/demo.js new file mode 100644 index 0000000..dab8edb --- /dev/null +++ b/plugins/autocomplete/demo.js @@ -0,0 +1,77 @@ +/*jslint browser: true, white: true, plusplus: true */ +/*global $, countries */ + +$(function () { + 'use strict'; + + var countriesArray = $.map(countries, function (value, key) { return { value: value, data: key }; }); + + // Setup jQuery ajax mock: + $.mockjax({ + url: '*', + responseTime: 2000, + response: function (settings) { + var query = settings.data.query, + queryLowerCase = query.toLowerCase(), + re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi'), + suggestions = $.grep(countriesArray, function (country) { + // return country.value.toLowerCase().indexOf(queryLowerCase) === 0; + return re.test(country.value); + }), + response = { + query: query, + suggestions: suggestions + }; + + this.responseText = JSON.stringify(response); + } + }); + + // Initialize ajax autocomplete: + $('#autocomplete-ajax').autocomplete({ + // serviceUrl: '/autosuggest/service/url', + lookup: countriesArray, + lookupFilter: function(suggestion, originalQuery, queryLowerCase) { + var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi'); + return re.test(suggestion.value); + }, + onSelect: function(suggestion) { + $('#selction-ajax').html('You selected: ' + suggestion.value + ', ' + suggestion.data); + }, + onHint: function (hint) { + $('#autocomplete-ajax-x').val(hint); + }, + onInvalidateSelection: function() { + $('#selction-ajax').html('You selected: none'); + } + }); + + var nhlTeams = ['Anaheim Ducks', 'Atlanta Thrashers', 'Boston Bruins', 'Buffalo Sabres', 'Calgary Flames', 'Carolina Hurricanes', 'Chicago Blackhawks', 'Colorado Avalanche', 'Columbus Blue Jackets', 'Dallas Stars', 'Detroit Red Wings', 'Edmonton OIlers', 'Florida Panthers', 'Los Angeles Kings', 'Minnesota Wild', 'Montreal Canadiens', 'Nashville Predators', 'New Jersey Devils', 'New Rork Islanders', 'New York Rangers', 'Ottawa Senators', 'Philadelphia Flyers', 'Phoenix Coyotes', 'Pittsburgh Penguins', 'Saint Louis Blues', 'San Jose Sharks', 'Tampa Bay Lightning', 'Toronto Maple Leafs', 'Vancouver Canucks', 'Washington Capitals']; + var nbaTeams = ['Atlanta Hawks', 'Boston Celtics', 'Charlotte Bobcats', 'Chicago Bulls', 'Cleveland Cavaliers', 'Dallas Mavericks', 'Denver Nuggets', 'Detroit Pistons', 'Golden State Warriors', 'Houston Rockets', 'Indiana Pacers', 'LA Clippers', 'LA Lakers', 'Memphis Grizzlies', 'Miami Heat', 'Milwaukee Bucks', 'Minnesota Timberwolves', 'New Jersey Nets', 'New Orleans Hornets', 'New York Knicks', 'Oklahoma City Thunder', 'Orlando Magic', 'Philadelphia Sixers', 'Phoenix Suns', 'Portland Trail Blazers', 'Sacramento Kings', 'San Antonio Spurs', 'Toronto Raptors', 'Utah Jazz', 'Washington Wizards']; + var nhl = $.map(nhlTeams, function (team) { return { value: team, data: { category: 'NHL' }}; }); + var nba = $.map(nbaTeams, function (team) { return { value: team, data: { category: 'NBA' } }; }); + var teams = nhl.concat(nba); + + // Initialize autocomplete with local lookup: + $('#autocomplete').devbridgeAutocomplete({ + lookup: teams, + minChars: 1, + onSelect: function (suggestion) { + $('#selection').html('You selected: ' + suggestion.value + ', ' + suggestion.data.category); + }, + showNoSuggestionNotice: true, + noSuggestionNotice: 'Sorry, no matching results', + groupBy: 'category' + }); + + // Initialize autocomplete with custom appendTo: + $('#autocomplete-custom-append').autocomplete({ + lookup: countriesArray, + appendTo: '#suggestions-container' + }); + + // Initialize autocomplete with custom appendTo: + $('#autocomplete-dynamic').autocomplete({ + lookup: countriesArray + }); +}); \ No newline at end of file diff --git a/plugins/autocomplete/jquery.autocomplete.min.js b/plugins/autocomplete/jquery.autocomplete.min.js new file mode 100644 index 0000000..21dc41b --- /dev/null +++ b/plugins/autocomplete/jquery.autocomplete.min.js @@ -0,0 +1,8 @@ +/** +* Ajax Autocomplete for jQuery, version 1.2.24 +* (c) 2014 Tomas Kirda +* +* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. +* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete +*/ +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=function(){},f=this,g={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:b.formatResult,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:e,onSearchComplete:e,onSearchError:e,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(a,b,c){return-1!==a.value.toLowerCase().indexOf(c)},paramName:"query",transformResult:function(b){return"string"==typeof b?a.parseJSON(b):b},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1};f.element=c,f.el=a(c),f.suggestions=[],f.badQueries=[],f.selectedIndex=-1,f.currentValue=f.element.value,f.intervalId=0,f.cachedResponse={},f.onChangeInterval=null,f.onChange=null,f.isLocal=!1,f.suggestionsContainer=null,f.noSuggestionsContainer=null,f.options=a.extend({},g,d),f.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},f.hint=null,f.hintValue="",f.selection=null,f.initialize(),f.setOptions(d)}var c=function(){return{escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),d={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40};b.utils=c,a.Autocomplete=b,b.formatResult=function(a,b){var d="("+c.escapeRegExChars(b)+")";return a.value.replace(new RegExp(d,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")},b.prototype={killerFn:null,initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.killerFn=function(b){0===a(b.target).closest("."+d.options.containerClass).length&&(d.killSuggestions(),d.disableKillerFn())},d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo),"auto"!==g.width&&c.width(g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.fixPosition(),0===a.options.minChars&&0===a.el.val().length&&a.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=c.options;a.extend(d,b),c.isLocal=a.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearInterval(a.onChangeInterval),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()-2+"px"),c.css(i)}},enableKillerFn:function(){var b=this;a(document).on("click.autocomplete",b.killerFn)},disableKillerFn:function(){var b=this;a(document).off("click.autocomplete",b.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.visible&&(a.el.val(a.currentValue),a.hide()),a.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:document.selection?(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length):!0},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===d.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case d.ESC:b.el.val(b.currentValue),b.hide();break;case d.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case d.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(-1===b.selectedIndex)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case d.RETURN:if(-1===b.selectedIndex)return void b.hide();b.select(b.selectedIndex);break;case d.UP:b.moveUp();break;case d.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case d.UP:case d.DOWN:return}clearInterval(b.onChangeInterval),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeInterval=setInterval(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearInterval(b.onChangeInterval),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,d=h.ignoreParams?null:h.params,h.onSearchStart.call(g.element,h.params)!==!1){if(a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&a.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearInterval(b.onChangeInterval),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(0===this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var d=a.data[e];return b===d?"":(b=d,'<div class="autocomplete-group"><strong>'+b+"</strong></div>")};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=a(b.suggestionsContainer),d=a(b.noSuggestionsContainer);this.adjustContainerWidth(),d.detach(),c.empty(),c.append(d),b.fixPosition(),c.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width&&(b=c.el.outerWidth()-2,e.width(b>0?b:300))},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),-1===a.inArray(b,["auto","bottom","top"])&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&0===a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,-1!==d.selectedIndex&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(-1!==b.selectedIndex)return 0===b.selectedIndex?(a(b.suggestionsContainer).children().first().removeClass(b.classes.selected),b.selectedIndex=-1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,f>e?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||c.el.val(c.getValue(c.suggestions[b].value)),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),b.disableKillerFn(),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.autocomplete=a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return 0===arguments.length?this.first().data(e):this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))})}}); \ No newline at end of file diff --git a/plugins/autocomplete/jquery.mockjax.js b/plugins/autocomplete/jquery.mockjax.js new file mode 100644 index 0000000..d8be9bf --- /dev/null +++ b/plugins/autocomplete/jquery.mockjax.js @@ -0,0 +1,601 @@ +/*! + * MockJax - jQuery Plugin to Mock Ajax requests + * + * Version: 1.5.3 + * Released: + * Home: http://github.com/appendto/jquery-mockjax + * Author: Jonathan Sharp (http://jdsharp.com) + * License: MIT,GPL + * + * Copyright (c) 2011 appendTo LLC. + * Dual licensed under the MIT or GPL licenses. + * http://appendto.com/open-source-licenses + */ +(function($) { + var _ajax = $.ajax, + mockHandlers = [], + mockedAjaxCalls = [], + CALLBACK_REGEX = /=\?(&|$)/, + jsc = (new Date()).getTime(); + + + // Parse the given XML string. + function parseXML(xml) { + if ( window.DOMParser == undefined && window.ActiveXObject ) { + DOMParser = function() { }; + DOMParser.prototype.parseFromString = function( xmlString ) { + var doc = new ActiveXObject('Microsoft.XMLDOM'); + doc.async = 'false'; + doc.loadXML( xmlString ); + return doc; + }; + } + + try { + var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' ); + if ( $.isXMLDoc( xmlDoc ) ) { + var err = $('parsererror', xmlDoc); + if ( err.length == 1 ) { + throw('Error: ' + $(xmlDoc).text() ); + } + } else { + throw('Unable to parse XML'); + } + return xmlDoc; + } catch( e ) { + var msg = ( e.name == undefined ? e : e.name + ': ' + e.message ); + $(document).trigger('xmlParseError', [ msg ]); + return undefined; + } + } + + // Trigger a jQuery event + function trigger(s, type, args) { + (s.context ? $(s.context) : $.event).trigger(type, args); + } + + // Check if the data field on the mock handler and the request match. This + // can be used to restrict a mock handler to being used only when a certain + // set of data is passed to it. + function isMockDataEqual( mock, live ) { + var identical = true; + // Test for situations where the data is a querystring (not an object) + if (typeof live === 'string') { + // Querystring may be a regex + return $.isFunction( mock.test ) ? mock.test(live) : mock == live; + } + $.each(mock, function(k) { + if ( live[k] === undefined ) { + identical = false; + return identical; + } else { + if ( typeof live[k] === 'object' && live[k] !== null ) { + if ( identical && $.isArray( live[k] ) ) { + identical = $.isArray( mock[k] ) && live[k].length === mock[k].length; + } + identical = identical && isMockDataEqual(mock[k], live[k]); + } else { + if ( mock[k] && $.isFunction( mock[k].test ) ) { + identical = identical && mock[k].test(live[k]); + } else { + identical = identical && ( mock[k] == live[k] ); + } + } + } + }); + + return identical; + } + + // See if a mock handler property matches the default settings + function isDefaultSetting(handler, property) { + return handler[property] === $.mockjaxSettings[property]; + } + + // Check the given handler should mock the given request + function getMockForRequest( handler, requestSettings ) { + // If the mock was registered with a function, let the function decide if we + // want to mock this request + if ( $.isFunction(handler) ) { + return handler( requestSettings ); + } + + // Inspect the URL of the request and check if the mock handler's url + // matches the url for this ajax request + if ( $.isFunction(handler.url.test) ) { + // The user provided a regex for the url, test it + if ( !handler.url.test( requestSettings.url ) ) { + return null; + } + } else { + // Look for a simple wildcard '*' or a direct URL match + var star = handler.url.indexOf('*'); + if (handler.url !== requestSettings.url && star === -1 || + !new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g, "\\$&").replace(/\*/g, '.+')).test(requestSettings.url)) { + return null; + } + } + + // Inspect the data submitted in the request (either POST body or GET query string) + if ( handler.data ) { + if ( ! requestSettings.data || !isMockDataEqual(handler.data, requestSettings.data) ) { + // They're not identical, do not mock this request + return null; + } + } + // Inspect the request type + if ( handler && handler.type && + handler.type.toLowerCase() != requestSettings.type.toLowerCase() ) { + // The request type doesn't match (GET vs. POST) + return null; + } + + return handler; + } + + // Process the xhr objects send operation + function _xhrSend(mockHandler, requestSettings, origSettings) { + + // This is a substitute for < 1.4 which lacks $.proxy + var process = (function(that) { + return function() { + return (function() { + var onReady; + + // The request has returned + this.status = mockHandler.status; + this.statusText = mockHandler.statusText; + this.readyState = 4; + + // We have an executable function, call it to give + // the mock handler a chance to update it's data + if ( $.isFunction(mockHandler.response) ) { + mockHandler.response(origSettings); + } + // Copy over our mock to our xhr object before passing control back to + // jQuery's onreadystatechange callback + if ( requestSettings.dataType == 'json' && ( typeof mockHandler.responseText == 'object' ) ) { + this.responseText = JSON.stringify(mockHandler.responseText); + } else if ( requestSettings.dataType == 'xml' ) { + if ( typeof mockHandler.responseXML == 'string' ) { + this.responseXML = parseXML(mockHandler.responseXML); + //in jQuery 1.9.1+, responseXML is processed differently and relies on responseText + this.responseText = mockHandler.responseXML; + } else { + this.responseXML = mockHandler.responseXML; + } + } else { + this.responseText = mockHandler.responseText; + } + if( typeof mockHandler.status == 'number' || typeof mockHandler.status == 'string' ) { + this.status = mockHandler.status; + } + if( typeof mockHandler.statusText === "string") { + this.statusText = mockHandler.statusText; + } + // jQuery 2.0 renamed onreadystatechange to onload + onReady = this.onreadystatechange || this.onload; + + // jQuery < 1.4 doesn't have onreadystate change for xhr + if ( $.isFunction( onReady ) ) { + if( mockHandler.isTimeout) { + this.status = -1; + } + onReady.call( this, mockHandler.isTimeout ? 'timeout' : undefined ); + } else if ( mockHandler.isTimeout ) { + // Fix for 1.3.2 timeout to keep success from firing. + this.status = -1; + } + }).apply(that); + }; + })(this); + + if ( mockHandler.proxy ) { + // We're proxying this request and loading in an external file instead + _ajax({ + global: false, + url: mockHandler.proxy, + type: mockHandler.proxyType, + data: mockHandler.data, + dataType: requestSettings.dataType === "script" ? "text/plain" : requestSettings.dataType, + complete: function(xhr) { + mockHandler.responseXML = xhr.responseXML; + mockHandler.responseText = xhr.responseText; + // Don't override the handler status/statusText if it's specified by the config + if (isDefaultSetting(mockHandler, 'status')) { + mockHandler.status = xhr.status; + } + if (isDefaultSetting(mockHandler, 'statusText')) { + mockHandler.statusText = xhr.statusText; + } + + this.responseTimer = setTimeout(process, mockHandler.responseTime || 0); + } + }); + } else { + // type == 'POST' || 'GET' || 'DELETE' + if ( requestSettings.async === false ) { + // TODO: Blocking delay + process(); + } else { + this.responseTimer = setTimeout(process, mockHandler.responseTime || 50); + } + } + } + + // Construct a mocked XHR Object + function xhr(mockHandler, requestSettings, origSettings, origHandler) { + // Extend with our default mockjax settings + mockHandler = $.extend(true, {}, $.mockjaxSettings, mockHandler); + + if (typeof mockHandler.headers === 'undefined') { + mockHandler.headers = {}; + } + if ( mockHandler.contentType ) { + mockHandler.headers['content-type'] = mockHandler.contentType; + } + + return { + status: mockHandler.status, + statusText: mockHandler.statusText, + readyState: 1, + open: function() { }, + send: function() { + origHandler.fired = true; + _xhrSend.call(this, mockHandler, requestSettings, origSettings); + }, + abort: function() { + clearTimeout(this.responseTimer); + }, + setRequestHeader: function(header, value) { + mockHandler.headers[header] = value; + }, + getResponseHeader: function(header) { + // 'Last-modified', 'Etag', 'content-type' are all checked by jQuery + if ( mockHandler.headers && mockHandler.headers[header] ) { + // Return arbitrary headers + return mockHandler.headers[header]; + } else if ( header.toLowerCase() == 'last-modified' ) { + return mockHandler.lastModified || (new Date()).toString(); + } else if ( header.toLowerCase() == 'etag' ) { + return mockHandler.etag || ''; + } else if ( header.toLowerCase() == 'content-type' ) { + return mockHandler.contentType || 'text/plain'; + } + }, + getAllResponseHeaders: function() { + var headers = ''; + $.each(mockHandler.headers, function(k, v) { + headers += k + ': ' + v + "\n"; + }); + return headers; + } + }; + } + + // Process a JSONP mock request. + function processJsonpMock( requestSettings, mockHandler, origSettings ) { + // Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here + // because there isn't an easy hook for the cross domain script tag of jsonp + + processJsonpUrl( requestSettings ); + + requestSettings.dataType = "json"; + if(requestSettings.data && CALLBACK_REGEX.test(requestSettings.data) || CALLBACK_REGEX.test(requestSettings.url)) { + createJsonpCallback(requestSettings, mockHandler, origSettings); + + // We need to make sure + // that a JSONP style response is executed properly + + var rurl = /^(\w+:)?\/\/([^\/?#]+)/, + parts = rurl.exec( requestSettings.url ), + remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host); + + requestSettings.dataType = "script"; + if(requestSettings.type.toUpperCase() === "GET" && remote ) { + var newMockReturn = processJsonpRequest( requestSettings, mockHandler, origSettings ); + + // Check if we are supposed to return a Deferred back to the mock call, or just + // signal success + if(newMockReturn) { + return newMockReturn; + } else { + return true; + } + } + } + return null; + } + + // Append the required callback parameter to the end of the request URL, for a JSONP request + function processJsonpUrl( requestSettings ) { + if ( requestSettings.type.toUpperCase() === "GET" ) { + if ( !CALLBACK_REGEX.test( requestSettings.url ) ) { + requestSettings.url += (/\?/.test( requestSettings.url ) ? "&" : "?") + + (requestSettings.jsonp || "callback") + "=?"; + } + } else if ( !requestSettings.data || !CALLBACK_REGEX.test(requestSettings.data) ) { + requestSettings.data = (requestSettings.data ? requestSettings.data + "&" : "") + (requestSettings.jsonp || "callback") + "=?"; + } + } + + // Process a JSONP request by evaluating the mocked response text + function processJsonpRequest( requestSettings, mockHandler, origSettings ) { + // Synthesize the mock request for adding a script tag + var callbackContext = origSettings && origSettings.context || requestSettings, + newMock = null; + + + // If the response handler on the moock is a function, call it + if ( mockHandler.response && $.isFunction(mockHandler.response) ) { + mockHandler.response(origSettings); + } else { + + // Evaluate the responseText javascript in a global context + if( typeof mockHandler.responseText === 'object' ) { + $.globalEval( '(' + JSON.stringify( mockHandler.responseText ) + ')'); + } else { + $.globalEval( '(' + mockHandler.responseText + ')'); + } + } + + // Successful response + jsonpSuccess( requestSettings, callbackContext, mockHandler ); + jsonpComplete( requestSettings, callbackContext, mockHandler ); + + // If we are running under jQuery 1.5+, return a deferred object + if($.Deferred){ + newMock = new $.Deferred(); + if(typeof mockHandler.responseText == "object"){ + newMock.resolveWith( callbackContext, [mockHandler.responseText] ); + } + else{ + newMock.resolveWith( callbackContext, [$.parseJSON( mockHandler.responseText )] ); + } + } + return newMock; + } + + + // Create the required JSONP callback function for the request + function createJsonpCallback( requestSettings, mockHandler, origSettings ) { + var callbackContext = origSettings && origSettings.context || requestSettings; + var jsonp = requestSettings.jsonpCallback || ("jsonp" + jsc++); + + // Replace the =? sequence both in the query string and the data + if ( requestSettings.data ) { + requestSettings.data = (requestSettings.data + "").replace(CALLBACK_REGEX, "=" + jsonp + "$1"); + } + + requestSettings.url = requestSettings.url.replace(CALLBACK_REGEX, "=" + jsonp + "$1"); + + + // Handle JSONP-style loading + window[ jsonp ] = window[ jsonp ] || function( tmp ) { + data = tmp; + jsonpSuccess( requestSettings, callbackContext, mockHandler ); + jsonpComplete( requestSettings, callbackContext, mockHandler ); + // Garbage collect + window[ jsonp ] = undefined; + + try { + delete window[ jsonp ]; + } catch(e) {} + + if ( head ) { + head.removeChild( script ); + } + }; + } + + // The JSONP request was successful + function jsonpSuccess(requestSettings, callbackContext, mockHandler) { + // If a local callback was specified, fire it and pass it the data + if ( requestSettings.success ) { + requestSettings.success.call( callbackContext, mockHandler.responseText || "", status, {} ); + } + + // Fire the global callback + if ( requestSettings.global ) { + trigger(requestSettings, "ajaxSuccess", [{}, requestSettings] ); + } + } + + // The JSONP request was completed + function jsonpComplete(requestSettings, callbackContext) { + // Process result + if ( requestSettings.complete ) { + requestSettings.complete.call( callbackContext, {} , status ); + } + + // The request was completed + if ( requestSettings.global ) { + trigger( "ajaxComplete", [{}, requestSettings] ); + } + + // Handle the global AJAX counter + if ( requestSettings.global && ! --$.active ) { + $.event.trigger( "ajaxStop" ); + } + } + + + // The core $.ajax replacement. + function handleAjax( url, origSettings ) { + var mockRequest, requestSettings, mockHandler; + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + origSettings = url; + url = undefined; + } else { + // work around to support 1.5 signature + origSettings = origSettings || {}; + origSettings.url = url; + } + + // Extend the original settings for the request + requestSettings = $.extend(true, {}, $.ajaxSettings, origSettings); + + // Iterate over our mock handlers (in registration order) until we find + // one that is willing to intercept the request + for(var k = 0; k < mockHandlers.length; k++) { + if ( !mockHandlers[k] ) { + continue; + } + + mockHandler = getMockForRequest( mockHandlers[k], requestSettings ); + if(!mockHandler) { + // No valid mock found for this request + continue; + } + + mockedAjaxCalls.push(requestSettings); + + // If logging is enabled, log the mock to the console + $.mockjaxSettings.log( mockHandler, requestSettings ); + + + if ( requestSettings.dataType && requestSettings.dataType.toUpperCase() === 'JSONP' ) { + if ((mockRequest = processJsonpMock( requestSettings, mockHandler, origSettings ))) { + // This mock will handle the JSONP request + return mockRequest; + } + } + + + // Removed to fix #54 - keep the mocking data object intact + //mockHandler.data = requestSettings.data; + + mockHandler.cache = requestSettings.cache; + mockHandler.timeout = requestSettings.timeout; + mockHandler.global = requestSettings.global; + + copyUrlParameters(mockHandler, origSettings); + + (function(mockHandler, requestSettings, origSettings, origHandler) { + mockRequest = _ajax.call($, $.extend(true, {}, origSettings, { + // Mock the XHR object + xhr: function() { return xhr( mockHandler, requestSettings, origSettings, origHandler ); } + })); + })(mockHandler, requestSettings, origSettings, mockHandlers[k]); + + return mockRequest; + } + + // We don't have a mock request + if($.mockjaxSettings.throwUnmocked === true) { + throw('AJAX not mocked: ' + origSettings.url); + } + else { // trigger a normal request + return _ajax.apply($, [origSettings]); + } + } + + /** + * Copies URL parameter values if they were captured by a regular expression + * @param {Object} mockHandler + * @param {Object} origSettings + */ + function copyUrlParameters(mockHandler, origSettings) { + //parameters aren't captured if the URL isn't a RegExp + if (!(mockHandler.url instanceof RegExp)) { + return; + } + //if no URL params were defined on the handler, don't attempt a capture + if (!mockHandler.hasOwnProperty('urlParams')) { + return; + } + var captures = mockHandler.url.exec(origSettings.url); + //the whole RegExp match is always the first value in the capture results + if (captures.length === 1) { + return; + } + captures.shift(); + //use handler params as keys and capture resuts as values + var i = 0, + capturesLength = captures.length, + paramsLength = mockHandler.urlParams.length, + //in case the number of params specified is less than actual captures + maxIterations = Math.min(capturesLength, paramsLength), + paramValues = {}; + for (i; i < maxIterations; i++) { + var key = mockHandler.urlParams[i]; + paramValues[key] = captures[i]; + } + origSettings.urlParams = paramValues; + } + + + // Public + + $.extend({ + ajax: handleAjax + }); + + $.mockjaxSettings = { + //url: null, + //type: 'GET', + log: function( mockHandler, requestSettings ) { + if ( mockHandler.logging === false || + ( typeof mockHandler.logging === 'undefined' && $.mockjaxSettings.logging === false ) ) { + return; + } + if ( window.console && console.log ) { + var message = 'MOCK ' + requestSettings.type.toUpperCase() + ': ' + requestSettings.url; + var request = $.extend({}, requestSettings); + + if (typeof console.log === 'function') { + console.log(message, request); + } else { + try { + console.log( message + ' ' + JSON.stringify(request) ); + } catch (e) { + console.log(message); + } + } + } + }, + logging: true, + status: 200, + statusText: "OK", + responseTime: 500, + isTimeout: false, + throwUnmocked: false, + contentType: 'text/plain', + response: '', + responseText: '', + responseXML: '', + proxy: '', + proxyType: 'GET', + + lastModified: null, + etag: '', + headers: { + etag: 'IJF@H#@923uf8023hFO@I#H#', + 'content-type' : 'text/plain' + } + }; + + $.mockjax = function(settings) { + var i = mockHandlers.length; + mockHandlers[i] = settings; + return i; + }; + $.mockjaxClear = function(i) { + if ( arguments.length == 1 ) { + mockHandlers[i] = null; + } else { + mockHandlers = []; + } + mockedAjaxCalls = []; + }; + $.mockjax.handler = function(i) { + if ( arguments.length == 1 ) { + return mockHandlers[i]; + } + }; + $.mockjax.mockedAjaxCalls = function() { + return mockedAjaxCalls; + }; +})(jQuery); \ No newline at end of file diff --git a/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css new file mode 100644 index 0000000..74ed897 --- /dev/null +++ b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css @@ -0,0 +1,222 @@ +/*! + * Bootstrap Colorpicker v2.3.3 + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */ +.colorpicker-saturation { + width: 100px; + height: 100px; + background-image: url("../img/bootstrap-colorpicker/saturation.png"); + cursor: crosshair; + float: left; +} +.colorpicker-saturation i { + display: block; + height: 5px; + width: 5px; + border: 1px solid #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + position: absolute; + top: 0; + left: 0; + margin: -4px 0 0 -4px; +} +.colorpicker-saturation i b { + display: block; + height: 5px; + width: 5px; + border: 1px solid #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.colorpicker-hue, +.colorpicker-alpha { + width: 15px; + height: 100px; + float: left; + cursor: row-resize; + margin-left: 4px; + margin-bottom: 4px; +} +.colorpicker-hue i, +.colorpicker-alpha i { + display: block; + height: 1px; + background: #000; + border-top: 1px solid #fff; + position: absolute; + top: 0; + left: 0; + width: 100%; + margin-top: -1px; +} +.colorpicker-hue { + background-image: url("../img/bootstrap-colorpicker/hue.png"); +} +.colorpicker-alpha { + background-image: url("../img/bootstrap-colorpicker/alpha.png"); + display: none; +} +.colorpicker-saturation, +.colorpicker-hue, +.colorpicker-alpha { + background-size: contain; +} +.colorpicker { + padding: 4px; + min-width: 130px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + z-index: 2500; +} +.colorpicker:before, +.colorpicker:after { + display: table; + content: ""; + line-height: 0; +} +.colorpicker:after { + clear: both; +} +.colorpicker:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} +.colorpicker:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} +.colorpicker div { + position: relative; +} +.colorpicker.colorpicker-with-alpha { + min-width: 140px; +} +.colorpicker.colorpicker-with-alpha .colorpicker-alpha { + display: block; +} +.colorpicker-color { + height: 10px; + margin-top: 5px; + clear: both; + background-image: url("../img/bootstrap-colorpicker/alpha.png"); + background-position: 0 100%; +} +.colorpicker-color div { + height: 10px; +} +.colorpicker-selectors { + display: none; + height: 10px; + margin-top: 5px; + clear: both; +} +.colorpicker-selectors i { + cursor: pointer; + float: left; + height: 10px; + width: 10px; +} +.colorpicker-selectors i + i { + margin-left: 3px; +} +.colorpicker-element .input-group-addon i, +.colorpicker-element .add-on i { + display: inline-block; + cursor: pointer; + height: 16px; + vertical-align: text-top; + width: 16px; +} +.colorpicker.colorpicker-inline { + position: relative; + display: inline-block; + float: none; + z-index: auto; +} +.colorpicker.colorpicker-horizontal { + width: 110px; + min-width: 110px; + height: auto; +} +.colorpicker.colorpicker-horizontal .colorpicker-saturation { + margin-bottom: 4px; +} +.colorpicker.colorpicker-horizontal .colorpicker-color { + width: 100px; +} +.colorpicker.colorpicker-horizontal .colorpicker-hue, +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + width: 100px; + height: 15px; + float: left; + cursor: col-resize; + margin-left: 0px; + margin-bottom: 4px; +} +.colorpicker.colorpicker-horizontal .colorpicker-hue i, +.colorpicker.colorpicker-horizontal .colorpicker-alpha i { + display: block; + height: 15px; + background: #ffffff; + position: absolute; + top: 0; + left: 0; + width: 1px; + border: none; + margin-top: 0px; +} +.colorpicker.colorpicker-horizontal .colorpicker-hue { + background-image: url("../img/bootstrap-colorpicker/hue-horizontal.png"); +} +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + background-image: url("../img/bootstrap-colorpicker/alpha-horizontal.png"); +} +.colorpicker.colorpicker-hidden { + display: none; +} +.colorpicker.colorpicker-visible { + display: block; +} +.colorpicker-inline.colorpicker-visible { + display: inline-block; +} +.colorpicker-right:before { + left: auto; + right: 6px; +} +.colorpicker-right:after { + left: auto; + right: 7px; +} +.colorpicker-no-arrow:before { + border-right: 0; + border-left: 0; +} +.colorpicker-no-arrow:after { + border-right: 0; + border-left: 0; +} +/*# sourceMappingURL=bootstrap-colorpicker.css.map */ \ No newline at end of file diff --git a/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map new file mode 100644 index 0000000..e61413a --- /dev/null +++ b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/less/colorpicker.less"],"names":[],"mappings":";;;;;;;;;AAqBA;EACE,YAAA;EACA,aAAA;EAXA,sBAAsB,8CAAtB;EAaA,iBAAA;EACA,WAAA;;AALF,uBAME;EACE,cAAA;EACA,WAAA;EACA,UAAA;EACA,sBAAA;EAfF,0BAAA;EACA,uBAAA;EACA,kBAAA;EAeE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,qBAAA;;AAfJ,uBAME,EAUE;EACE,cAAA;EACA,WAAA;EACA,UAAA;EACA,sBAAA;EAzBJ,0BAAA;EACA,uBAAA;EACA,kBAAA;;AA6BF;AACA;EACE,WAAA;EACA,aAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;;AAGF,gBAAiB;AACjB,kBAAmB;EACjB,cAAA;EACA,WAAA;EACA,gBAAA;EACA,0BAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,gBAAA;;AAGF;EA1DE,sBAAsB,uCAAtB;;AA8DF;EA9DE,sBAAsB,yCAAtB;EAgEA,aAAA;;AAGF;AACA;AACA;EACE,wBAAA;;AAGF;EACE,YAAA;EACA,gBAAA;EACA,eAAA;EAxEA,0BAAA;EACA,uBAAA;EACA,kBAAA;EAwEA,aAAA;;AAGF,YAAY;AACZ,YAAY;EACV,cAAA;EACA,SAAS,EAAT;EACA,cAAA;;AAGF,YAAY;EACV,WAAA;;AAGF,YAAY;EACV,SAAS,EAAT;EACA,qBAAA;EACA,kCAAA;EACA,mCAAA;EACA,6BAAA;EACA,uCAAA;EACA,kBAAA;EACA,SAAA;EACA,SAAA;;AAGF,YAAY;EACV,SAAS,EAAT;EACA,qBAAA;EACA,kCAAA;EACA,mCAAA;EACA,gCAAA;EACA,kBAAA;EACA,SAAA;EACA,SAAA;;AAGF,YAAa;EACX,kBAAA;;AAGF,YAAY;EACV,gBAAA;;AAGF,YAAY,uBAAwB;EAClC,cAAA;;AAGF;EACE,YAAA;EACA,eAAA;EACA,WAAA;EAlIA,sBAAsB,yCAAtB;EAoIA,2BAAA;;AAGF,kBAAmB;EACjB,YAAA;;AAGF;EACE,aAAA;EACA,YAAA;EACA,eAAA;EACA,WAAA;;AAGF,sBAAuB;EACrB,eAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;;AAGF,sBAAuB,EAAE;EACvB,gBAAA;;AAGF,oBAAqB,mBAAmB;AACxC,oBAAqB,QAAQ;EAC3B,qBAAA;EACA,eAAA;EACA,YAAA;EACA,wBAAA;EACA,WAAA;;AAGF,YAAY;EACV,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,aAAA;;AAGF,YAAY;EACV,YAAA;EACA,gBAAA;EACA,YAAA;;AAGF,YAAY,uBAAwB;EAClC,kBAAA;;AAGF,YAAY,uBAAwB;EAClC,YAAA;;AAGF,YAAY,uBAAwB;AACpC,YAAY,uBAAwB;EAClC,YAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;;AAGF,YAAY,uBAAwB,iBAAiB;AACrD,YAAY,uBAAwB,mBAAmB;EACrD,cAAA;EACA,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,YAAA;EACA,eAAA;;AAGF,YAAY,uBAAwB;EAlNlC,sBAAsB,kDAAtB;;AAsNF,YAAY,uBAAwB;EAtNlC,sBAAsB,oDAAtB;;AA0NF,YAAY;EACV,aAAA;;AAGF,YAAY;EACV,cAAA;;AAGF,mBAAmB;EACjB,qBAAA;;AAGF,kBAAkB;EAChB,UAAA;EACA,UAAA;;AAGF,kBAAkB;EAChB,UAAA;EACA,UAAA;;AAGF,qBAAqB;EACnB,eAAA;EACA,cAAA;;AAGF,qBAAqB;EACnB,eAAA;EACA,cAAA","sourcesContent":["/*!\n * Bootstrap Colorpicker v2.3.3\n * http://mjolnic.github.io/bootstrap-colorpicker/\n *\n * Originally written by (c) 2012 Stefan Petre\n * Licensed under the Apache License v2.0\n * http://www.apache.org/licenses/LICENSE-2.0.txt\n *\n */\n@imgPath: \"../img/bootstrap-colorpicker/\";\n\n.bgImg(@imgFilename) {\n background-image: url(\"@{imgPath}@{imgFilename}\");\n}\n\n.borderRadius(@size) {\n -webkit-border-radius: @size;\n -moz-border-radius: @size;\n border-radius: @size;\n}\n\n.colorpicker-saturation {\n width: 100px;\n height: 100px;\n .bgImg('saturation.png');\n cursor: crosshair;\n float: left;\n i {\n display: block;\n height: 5px;\n width: 5px;\n border: 1px solid #000;\n .borderRadius(5px);\n position: absolute;\n top: 0;\n left: 0;\n margin: -4px 0 0 -4px;\n b {\n display: block;\n height: 5px;\n width: 5px;\n border: 1px solid #fff;\n .borderRadius(5px);\n }\n }\n}\n\n.colorpicker-hue,\n.colorpicker-alpha {\n width: 15px;\n height: 100px;\n float: left;\n cursor: row-resize;\n margin-left: 4px;\n margin-bottom: 4px;\n}\n\n.colorpicker-hue i,\n.colorpicker-alpha i {\n display: block;\n height: 1px;\n background: #000;\n border-top: 1px solid #fff;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n margin-top: -1px;\n}\n\n.colorpicker-hue {\n .bgImg('hue.png');\n}\n\n.colorpicker-alpha {\n .bgImg('alpha.png');\n display: none;\n}\n\n.colorpicker-saturation,\n.colorpicker-hue,\n.colorpicker-alpha {\n background-size: contain;\n}\n\n.colorpicker {\n padding: 4px;\n min-width: 130px;\n margin-top: 1px;\n .borderRadius(4px);\n z-index: 2500;\n}\n\n.colorpicker:before,\n.colorpicker:after {\n display: table;\n content: \"\";\n line-height: 0;\n}\n\n.colorpicker:after {\n clear: both;\n}\n\n.colorpicker:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-right: 7px solid transparent;\n border-bottom: 7px solid #ccc;\n border-bottom-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n top: -7px;\n left: 6px;\n}\n\n.colorpicker:after {\n content: '';\n display: inline-block;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #ffffff;\n position: absolute;\n top: -6px;\n left: 7px;\n}\n\n.colorpicker div {\n position: relative;\n}\n\n.colorpicker.colorpicker-with-alpha {\n min-width: 140px;\n}\n\n.colorpicker.colorpicker-with-alpha .colorpicker-alpha {\n display: block;\n}\n\n.colorpicker-color {\n height: 10px;\n margin-top: 5px;\n clear: both;\n .bgImg('alpha.png');\n background-position: 0 100%;\n}\n\n.colorpicker-color div {\n height: 10px;\n}\n\n.colorpicker-selectors {\n display: none;\n height: 10px;\n margin-top: 5px;\n clear: both;\n}\n\n.colorpicker-selectors i {\n cursor: pointer;\n float: left;\n height: 10px;\n width: 10px;\n}\n\n.colorpicker-selectors i + i {\n margin-left: 3px;\n}\n\n.colorpicker-element .input-group-addon i,\n.colorpicker-element .add-on i {\n display: inline-block;\n cursor: pointer;\n height: 16px;\n vertical-align: text-top;\n width: 16px;\n}\n\n.colorpicker.colorpicker-inline {\n position: relative;\n display: inline-block;\n float: none;\n z-index: auto;\n}\n\n.colorpicker.colorpicker-horizontal {\n width: 110px;\n min-width: 110px;\n height: auto;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-saturation {\n margin-bottom: 4px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-color {\n width: 100px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n width: 100px;\n height: 15px;\n float: left;\n cursor: col-resize;\n margin-left: 0px;\n margin-bottom: 4px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue i,\n.colorpicker.colorpicker-horizontal .colorpicker-alpha i {\n display: block;\n height: 15px;\n background: #ffffff;\n position: absolute;\n top: 0;\n left: 0;\n width: 1px;\n border: none;\n margin-top: 0px;\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-hue {\n .bgImg('hue-horizontal.png');\n}\n\n.colorpicker.colorpicker-horizontal .colorpicker-alpha {\n .bgImg('alpha-horizontal.png');\n}\n\n.colorpicker.colorpicker-hidden {\n display: none;\n}\n\n.colorpicker.colorpicker-visible {\n display: block;\n}\n\n.colorpicker-inline.colorpicker-visible {\n display: inline-block;\n}\n\n.colorpicker-right:before {\n left: auto;\n right: 6px;\n}\n\n.colorpicker-right:after {\n left: auto;\n right: 7px;\n}\n\n.colorpicker-no-arrow:before {\n border-right: 0;\n border-left: 0;\n}\n\n.colorpicker-no-arrow:after {\n border-right: 0;\n border-left: 0;\n}\n"]} \ No newline at end of file diff --git a/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css new file mode 100644 index 0000000..22e5c37 --- /dev/null +++ b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap Colorpicker v2.3.3 + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */.colorpicker-saturation{width:100px;height:100px;background-image:url(../img/bootstrap-colorpicker/saturation.png);cursor:crosshair;float:left}.colorpicker-saturation i{display:block;height:5px;width:5px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;position:absolute;top:0;left:0;margin:-4px 0 0 -4px}.colorpicker-saturation i b{display:block;height:5px;width:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-alpha,.colorpicker-hue{width:15px;height:100px;float:left;cursor:row-resize;margin-left:4px;margin-bottom:4px}.colorpicker-alpha i,.colorpicker-hue i{display:block;height:1px;background:#000;border-top:1px solid #fff;position:absolute;top:0;left:0;width:100%;margin-top:-1px}.colorpicker-hue{background-image:url(../img/bootstrap-colorpicker/hue.png)}.colorpicker-alpha{background-image:url(../img/bootstrap-colorpicker/alpha.png);display:none}.colorpicker-alpha,.colorpicker-hue,.colorpicker-saturation{background-size:contain}.colorpicker{padding:4px;min-width:130px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;z-index:2500}.colorpicker:after,.colorpicker:before{display:table;content:"";line-height:0}.colorpicker:after{clear:both}.colorpicker:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:6px}.colorpicker:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url(../img/bootstrap-colorpicker/alpha.png);background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-selectors{display:none;height:10px;margin-top:5px;clear:both}.colorpicker-selectors i{cursor:pointer;float:left;height:10px;width:10px}.colorpicker-selectors i+i{margin-left:3px}.colorpicker-element .add-on i,.colorpicker-element .input-group-addon i{display:inline-block;cursor:pointer;height:16px;vertical-align:text-top;width:16px}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none;z-index:auto}.colorpicker.colorpicker-horizontal{width:110px;min-width:110px;height:auto}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-alpha,.colorpicker.colorpicker-horizontal .colorpicker-hue{width:100px;height:15px;float:left;cursor:col-resize;margin-left:0;margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-alpha i,.colorpicker.colorpicker-horizontal .colorpicker-hue i{display:block;height:15px;background:#fff;position:absolute;top:0;left:0;width:1px;border:none;margin-top:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url(../img/bootstrap-colorpicker/hue-horizontal.png)}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url(../img/bootstrap-colorpicker/alpha-horizontal.png)}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block}.colorpicker-right:before{left:auto;right:6px}.colorpicker-right:after{left:auto;right:7px}.colorpicker-no-arrow:before{border-right:0;border-left:0}.colorpicker-no-arrow:after{border-right:0;border-left:0} +/*# sourceMappingURL=bootstrap-colorpicker.min.css.map */ \ No newline at end of file diff --git a/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map new file mode 100644 index 0000000..f61ccb3 --- /dev/null +++ b/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/less/colorpicker.less"],"names":[],"mappings":";;;;;;;;AAqBA,wBACE,MAAA,MACA,OAAA,MAXA,iBAAsB,iDAatB,OAAA,UACA,MAAA,KACA,0BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAfF,sBAAA,IACA,mBAAA,IACA,cAAA,IAeE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KAAA,EAAA,EAAA,KACA,4BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAzBJ,sBAAA,IACA,mBAAA,IACA,cAAA,IA8BF,mBADA,iBAEE,MAAA,KACA,OAAA,MACA,MAAA,KACA,OAAA,WACA,YAAA,IACA,cAAA,IAIiB,qBADF,mBAEf,QAAA,MACA,OAAA,IACA,WAAA,KACA,WAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,WAAA,KAGF,iBA1DE,iBAAsB,0CA8DxB,mBA9DE,iBAAsB,4CAgEtB,QAAA,KAKF,mBADA,iBADA,wBAGE,gBAAA,QAGF,aACE,QAAA,IACA,UAAA,MACA,WAAA,IAxEA,sBAAA,IACA,mBAAA,IACA,cAAA,IAwEA,QAAA,KAIU,mBADA,oBAEV,QAAA,MACA,QAAA,GACA,YAAA,EAGU,mBACV,MAAA,KAGU,oBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,oBAAA,eACA,SAAA,SACA,IAAA,KACA,KAAA,IAGU,mBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,KACA,KAAA,IAGW,iBACX,SAAA,SAGU,oCACV,UAAA,MAGkC,uDAClC,QAAA,MAGF,mBACE,OAAA,KACA,WAAA,IACA,MAAA,KAlIA,iBAAsB,4CAoItB,oBAAA,EAAA,KAGiB,uBACjB,OAAA,KAGF,uBACE,QAAA,KACA,OAAA,KACA,WAAA,IACA,MAAA,KAGqB,yBACrB,OAAA,QACA,MAAA,KACA,OAAA,KACA,MAAA,KAGuB,2BACvB,YAAA,IAI2B,+BADW,0CAEtC,QAAA,aACA,OAAA,QACA,OAAA,KACA,eAAA,SACA,MAAA,KAGU,gCACV,SAAA,SACA,QAAA,aACA,MAAA,KACA,QAAA,KAGU,oCACV,MAAA,MACA,UAAA,MACA,OAAA,KAGkC,4DAClC,cAAA,IAGkC,uDAClC,MAAA,MAIkC,uDADA,qDAElC,MAAA,MACA,OAAA,KACA,MAAA,KACA,OAAA,WACA,YAAA,EACA,cAAA,IAIqD,yDADF,uDAEnD,QAAA,MACA,OAAA,KACA,WAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,IACA,OAAA,KACA,WAAA,EAGkC,qDAlNlC,iBAAsB,qDAsNY,uDAtNlC,iBAAsB,uDA0NZ,gCACV,QAAA,KAGU,iCACV,QAAA,MAGiB,wCACjB,QAAA,aAGgB,0BAChB,KAAA,KACA,MAAA,IAGgB,yBAChB,KAAA,KACA,MAAA,IAGmB,6BACnB,aAAA,EACA,YAAA,EAGmB,4BACnB,aAAA,EACA,YAAA"} \ No newline at end of file diff --git a/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png new file mode 100644 index 0000000..f831889 Binary files /dev/null and b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png differ diff --git a/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png new file mode 100644 index 0000000..2e53a30 Binary files /dev/null and b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png differ diff --git a/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png new file mode 100644 index 0000000..3dcd594 Binary files /dev/null and b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png differ diff --git a/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png new file mode 100644 index 0000000..6f5ec2e Binary files /dev/null and b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png differ diff --git a/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png new file mode 100644 index 0000000..170841c Binary files /dev/null and b/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png differ diff --git a/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js b/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js new file mode 100644 index 0000000..758ebc3 --- /dev/null +++ b/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js @@ -0,0 +1,1106 @@ +/*! + * Bootstrap Colorpicker v2.3.3 + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */ + +(function(factory) { + "use strict"; + if (typeof exports === 'object') { + module.exports = factory(window.jQuery); + } else if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (window.jQuery && !window.jQuery.fn.colorpicker) { + factory(window.jQuery); + } +}(function($) { + 'use strict'; + + /** + * Color manipulation helper class + * + * @param {Object|String} val + * @param {Object} predefinedColors + * @constructor + */ + var Color = function(val, predefinedColors) { + this.value = { + h: 0, + s: 0, + b: 0, + a: 1 + }; + this.origFormat = null; // original string format + if (predefinedColors) { + $.extend(this.colors, predefinedColors); + } + if (val) { + if (val.toLowerCase !== undefined) { + // cast to string + val = val + ''; + this.setColor(val); + } else if (val.h !== undefined) { + this.value = val; + } + } + }; + + Color.prototype = { + constructor: Color, + // 140 predefined colors from the HTML Colors spec + colors: { + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgrey": "#d3d3d3", + "lightgreen": "#90ee90", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370d8", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#d87093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", + "transparent": "transparent" + }, + _sanitizeNumber: function(val) { + if (typeof val === 'number') { + return val; + } + if (isNaN(val) || (val === null) || (val === '') || (val === undefined)) { + return 1; + } + if (val === '') { + return 0; + } + if (val.toLowerCase !== undefined) { + if (val.match(/^\./)) { + val = "0" + val; + } + return Math.ceil(parseFloat(val) * 100) / 100; + } + return 1; + }, + isTransparent: function(strVal) { + if (!strVal) { + return false; + } + strVal = strVal.toLowerCase().trim(); + return (strVal === 'transparent') || (strVal.match(/#?00000000/)) || (strVal.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/)); + }, + rgbaIsTransparent: function(rgba) { + return ((rgba.r === 0) && (rgba.g === 0) && (rgba.b === 0) && (rgba.a === 0)); + }, + //parse a string to HSB + setColor: function(strVal) { + strVal = strVal.toLowerCase().trim(); + if (strVal) { + if (this.isTransparent(strVal)) { + this.value = { + h: 0, + s: 0, + b: 0, + a: 0 + }; + } else { + this.value = this.stringToHSB(strVal) || { + h: 0, + s: 0, + b: 0, + a: 1 + }; // if parser fails, defaults to black + } + } + }, + stringToHSB: function(strVal) { + strVal = strVal.toLowerCase(); + var alias; + if (typeof this.colors[strVal] !== 'undefined') { + strVal = this.colors[strVal]; + alias = 'alias'; + } + var that = this, + result = false; + $.each(this.stringParsers, function(i, parser) { + var match = parser.re.exec(strVal), + values = match && parser.parse.apply(that, [match]), + format = alias || parser.format || 'rgba'; + if (values) { + if (format.match(/hsla?/)) { + result = that.RGBtoHSB.apply(that, that.HSLtoRGB.apply(that, values)); + } else { + result = that.RGBtoHSB.apply(that, values); + } + that.origFormat = format; + return false; + } + return true; + }); + return result; + }, + setHue: function(h) { + this.value.h = 1 - h; + }, + setSaturation: function(s) { + this.value.s = s; + }, + setBrightness: function(b) { + this.value.b = 1 - b; + }, + setAlpha: function(a) { + this.value.a = Math.round((parseInt((1 - a) * 100, 10) / 100) * 100) / 100; + }, + toRGB: function(h, s, b, a) { + if (!h) { + h = this.value.h; + s = this.value.s; + b = this.value.b; + } + h *= 360; + var R, G, B, X, C; + h = (h % 360) / 60; + C = b * s; + X = C * (1 - Math.abs(h % 2 - 1)); + R = G = B = b - C; + + h = ~~h; + R += [C, X, 0, 0, X, C][h]; + G += [X, C, C, X, 0, 0][h]; + B += [0, 0, X, C, C, X][h]; + return { + r: Math.round(R * 255), + g: Math.round(G * 255), + b: Math.round(B * 255), + a: a || this.value.a + }; + }, + toHex: function(h, s, b, a) { + var rgb = this.toRGB(h, s, b, a); + if (this.rgbaIsTransparent(rgb)) { + return 'transparent'; + } + return '#' + ((1 << 24) | (parseInt(rgb.r) << 16) | (parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1); + }, + toHSL: function(h, s, b, a) { + h = h || this.value.h; + s = s || this.value.s; + b = b || this.value.b; + a = a || this.value.a; + + var H = h, + L = (2 - s) * b, + S = s * b; + if (L > 0 && L <= 1) { + S /= L; + } else { + S /= 2 - L; + } + L /= 2; + if (S > 1) { + S = 1; + } + return { + h: isNaN(H) ? 0 : H, + s: isNaN(S) ? 0 : S, + l: isNaN(L) ? 0 : L, + a: isNaN(a) ? 0 : a + }; + }, + toAlias: function(r, g, b, a) { + var rgb = this.toHex(r, g, b, a); + for (var alias in this.colors) { + if (this.colors[alias] === rgb) { + return alias; + } + } + return false; + }, + RGBtoHSB: function(r, g, b, a) { + r /= 255; + g /= 255; + b /= 255; + + var H, S, V, C; + V = Math.max(r, g, b); + C = V - Math.min(r, g, b); + H = (C === 0 ? null : + V === r ? (g - b) / C : + V === g ? (b - r) / C + 2 : + (r - g) / C + 4 + ); + H = ((H + 360) % 6) * 60 / 360; + S = C === 0 ? 0 : C / V; + return { + h: this._sanitizeNumber(H), + s: S, + b: V, + a: this._sanitizeNumber(a) + }; + }, + HueToRGB: function(p, q, h) { + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + if ((h * 6) < 1) { + return p + (q - p) * h * 6; + } else if ((h * 2) < 1) { + return q; + } else if ((h * 3) < 2) { + return p + (q - p) * ((2 / 3) - h) * 6; + } else { + return p; + } + }, + HSLtoRGB: function(h, s, l, a) { + if (s < 0) { + s = 0; + } + var q; + if (l <= 0.5) { + q = l * (1 + s); + } else { + q = l + s - (l * s); + } + + var p = 2 * l - q; + + var tr = h + (1 / 3); + var tg = h; + var tb = h - (1 / 3); + + var r = Math.round(this.HueToRGB(p, q, tr) * 255); + var g = Math.round(this.HueToRGB(p, q, tg) * 255); + var b = Math.round(this.HueToRGB(p, q, tb) * 255); + return [r, g, b, this._sanitizeNumber(a)]; + }, + toString: function(format) { + format = format || 'rgba'; + var c = false; + switch (format) { + case 'rgb': + { + c = this.toRGB(); + if (this.rgbaIsTransparent(c)) { + return 'transparent'; + } + return 'rgb(' + c.r + ',' + c.g + ',' + c.b + ')'; + } + break; + case 'rgba': + { + c = this.toRGB(); + return 'rgba(' + c.r + ',' + c.g + ',' + c.b + ',' + c.a + ')'; + } + break; + case 'hsl': + { + c = this.toHSL(); + return 'hsl(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%)'; + } + break; + case 'hsla': + { + c = this.toHSL(); + return 'hsla(' + Math.round(c.h * 360) + ',' + Math.round(c.s * 100) + '%,' + Math.round(c.l * 100) + '%,' + c.a + ')'; + } + break; + case 'hex': + { + return this.toHex(); + } + break; + case 'alias': + return this.toAlias() || this.toHex(); + default: + { + return c; + } + break; + } + }, + // a set of RE's that can match strings and generate color tuples. + // from John Resig color plugin + // https://github.com/jquery/jquery-color/ + stringParsers: [{ + re: /rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/, + format: 'rgb', + parse: function(execResult) { + return [ + execResult[1], + execResult[2], + execResult[3], + 1 + ]; + } + }, { + re: /rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/, + format: 'rgb', + parse: function(execResult) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + 1 + ]; + } + }, { + re: /rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/, + format: 'rgba', + parse: function(execResult) { + return [ + execResult[1], + execResult[2], + execResult[3], + execResult[4] + ]; + } + }, { + re: /rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/, + format: 'rgba', + parse: function(execResult) { + return [ + 2.55 * execResult[1], + 2.55 * execResult[2], + 2.55 * execResult[3], + execResult[4] + ]; + } + }, { + re: /hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/, + format: 'hsl', + parse: function(execResult) { + return [ + execResult[1] / 360, + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }, { + re: /hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/, + format: 'hsla', + parse: function(execResult) { + return [ + execResult[1] / 360, + execResult[2] / 100, + execResult[3] / 100, + execResult[4] + ]; + } + }, { + re: /#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, + format: 'hex', + parse: function(execResult) { + return [ + parseInt(execResult[1], 16), + parseInt(execResult[2], 16), + parseInt(execResult[3], 16), + 1 + ]; + } + }, { + re: /#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, + format: 'hex', + parse: function(execResult) { + return [ + parseInt(execResult[1] + execResult[1], 16), + parseInt(execResult[2] + execResult[2], 16), + parseInt(execResult[3] + execResult[3], 16), + 1 + ]; + } + }], + colorNameToHex: function(name) { + if (typeof this.colors[name.toLowerCase()] !== 'undefined') { + return this.colors[name.toLowerCase()]; + } + return false; + } + }; + + /* + * Default plugin options + */ + var defaults = { + horizontal: false, // horizontal mode layout ? + inline: false, //forces to show the colorpicker as an inline element + color: false, //forces a color + format: false, //forces a format + input: 'input', // children input selector + container: false, // container selector + component: '.add-on, .input-group-addon', // children component selector + sliders: { + saturation: { + maxLeft: 100, + maxTop: 100, + callLeft: 'setSaturation', + callTop: 'setBrightness' + }, + hue: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setHue' + }, + alpha: { + maxLeft: 0, + maxTop: 100, + callLeft: false, + callTop: 'setAlpha' + } + }, + slidersHorz: { + saturation: { + maxLeft: 100, + maxTop: 100, + callLeft: 'setSaturation', + callTop: 'setBrightness' + }, + hue: { + maxLeft: 100, + maxTop: 0, + callLeft: 'setHue', + callTop: false + }, + alpha: { + maxLeft: 100, + maxTop: 0, + callLeft: 'setAlpha', + callTop: false + } + }, + template: '<div class="colorpicker dropdown-menu">' + + '<div class="colorpicker-saturation"><i><b></b></i></div>' + + '<div class="colorpicker-hue"><i></i></div>' + + '<div class="colorpicker-alpha"><i></i></div>' + + '<div class="colorpicker-color"><div /></div>' + + '<div class="colorpicker-selectors"></div>' + + '</div>', + align: 'right', + customClass: null, + colorSelectors: null + }; + + /** + * Colorpicker component class + * + * @param {Object|String} element + * @param {Object} options + * @constructor + */ + var Colorpicker = function(element, options) { + this.element = $(element).addClass('colorpicker-element'); + this.options = $.extend(true, {}, defaults, this.element.data(), options); + this.component = this.options.component; + this.component = (this.component !== false) ? this.element.find(this.component) : false; + if (this.component && (this.component.length === 0)) { + this.component = false; + } + this.container = (this.options.container === true) ? this.element : this.options.container; + this.container = (this.container !== false) ? $(this.container) : false; + + // Is the element an input? Should we search inside for any input? + this.input = this.element.is('input') ? this.element : (this.options.input ? + this.element.find(this.options.input) : false); + if (this.input && (this.input.length === 0)) { + this.input = false; + } + // Set HSB color + this.color = new Color(this.options.color !== false ? this.options.color : this.getValue(), this.options.colorSelectors); + this.format = this.options.format !== false ? this.options.format : this.color.origFormat; + + if (this.options.color !== false) { + this.updateInput(this.color); + this.updateData(this.color); + } + + // Setup picker + this.picker = $(this.options.template); + if (this.options.customClass) { + this.picker.addClass(this.options.customClass); + } + if (this.options.inline) { + this.picker.addClass('colorpicker-inline colorpicker-visible'); + } else { + this.picker.addClass('colorpicker-hidden'); + } + if (this.options.horizontal) { + this.picker.addClass('colorpicker-horizontal'); + } + if (this.format === 'rgba' || this.format === 'hsla' || this.options.format === false) { + this.picker.addClass('colorpicker-with-alpha'); + } + if (this.options.align === 'right') { + this.picker.addClass('colorpicker-right'); + } + if (this.options.inline === true) { + this.picker.addClass('colorpicker-no-arrow'); + } + if (this.options.colorSelectors) { + var colorpicker = this; + $.each(this.options.colorSelectors, function(name, color) { + var $btn = $('<i />').css('background-color', color).data('class', name); + $btn.click(function() { + colorpicker.setValue($(this).css('background-color')); + }); + colorpicker.picker.find('.colorpicker-selectors').append($btn); + }); + this.picker.find('.colorpicker-selectors').show(); + } + this.picker.on('mousedown.colorpicker touchstart.colorpicker', $.proxy(this.mousedown, this)); + this.picker.appendTo(this.container ? this.container : $('body')); + + // Bind events + if (this.input !== false) { + this.input.on({ + 'keyup.colorpicker': $.proxy(this.keyup, this) + }); + this.input.on({ + 'change.colorpicker': $.proxy(this.change, this) + }); + if (this.component === false) { + this.element.on({ + 'focus.colorpicker': $.proxy(this.show, this) + }); + } + if (this.options.inline === false) { + this.element.on({ + 'focusout.colorpicker': $.proxy(this.hide, this) + }); + } + } + + if (this.component !== false) { + this.component.on({ + 'click.colorpicker': $.proxy(this.show, this) + }); + } + + if ((this.input === false) && (this.component === false)) { + this.element.on({ + 'click.colorpicker': $.proxy(this.show, this) + }); + } + + // for HTML5 input[type='color'] + if ((this.input !== false) && (this.component !== false) && (this.input.attr('type') === 'color')) { + + this.input.on({ + 'click.colorpicker': $.proxy(this.show, this), + 'focus.colorpicker': $.proxy(this.show, this) + }); + } + this.update(); + + $($.proxy(function() { + this.element.trigger('create'); + }, this)); + }; + + Colorpicker.Color = Color; + + Colorpicker.prototype = { + constructor: Colorpicker, + destroy: function() { + this.picker.remove(); + this.element.removeData('colorpicker', 'color').off('.colorpicker'); + if (this.input !== false) { + this.input.off('.colorpicker'); + } + if (this.component !== false) { + this.component.off('.colorpicker'); + } + this.element.removeClass('colorpicker-element'); + this.element.trigger({ + type: 'destroy' + }); + }, + reposition: function() { + if (this.options.inline !== false || this.options.container) { + return false; + } + var type = this.container && this.container[0] !== document.body ? 'position' : 'offset'; + var element = this.component || this.element; + var offset = element[type](); + if (this.options.align === 'right') { + offset.left -= this.picker.outerWidth() - element.outerWidth(); + } + this.picker.css({ + top: offset.top + element.outerHeight(), + left: offset.left + }); + }, + show: function(e) { + if (this.isDisabled()) { + return false; + } + this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden'); + this.reposition(); + $(window).on('resize.colorpicker', $.proxy(this.reposition, this)); + if (e && (!this.hasInput() || this.input.attr('type') === 'color')) { + if (e.stopPropagation && e.preventDefault) { + e.stopPropagation(); + e.preventDefault(); + } + } + if ((this.component || !this.input) && (this.options.inline === false)) { + $(window.document).on({ + 'mousedown.colorpicker': $.proxy(this.hide, this) + }); + } + this.element.trigger({ + type: 'showPicker', + color: this.color + }); + }, + hide: function() { + this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible'); + $(window).off('resize.colorpicker', this.reposition); + $(document).off({ + 'mousedown.colorpicker': this.hide + }); + this.update(); + this.element.trigger({ + type: 'hidePicker', + color: this.color + }); + }, + updateData: function(val) { + val = val || this.color.toString(this.format); + this.element.data('color', val); + return val; + }, + updateInput: function(val) { + val = val || this.color.toString(this.format); + if (this.input !== false) { + if (this.options.colorSelectors) { + var color = new Color(val, this.options.colorSelectors); + var alias = color.toAlias(); + if (typeof this.options.colorSelectors[alias] !== 'undefined') { + val = alias; + } + } + this.input.prop('value', val); + } + return val; + }, + updatePicker: function(val) { + if (val !== undefined) { + this.color = new Color(val, this.options.colorSelectors); + } + var sl = (this.options.horizontal === false) ? this.options.sliders : this.options.slidersHorz; + var icns = this.picker.find('i'); + if (icns.length === 0) { + return; + } + if (this.options.horizontal === false) { + sl = this.options.sliders; + icns.eq(1).css('top', sl.hue.maxTop * (1 - this.color.value.h)).end() + .eq(2).css('top', sl.alpha.maxTop * (1 - this.color.value.a)); + } else { + sl = this.options.slidersHorz; + icns.eq(1).css('left', sl.hue.maxLeft * (1 - this.color.value.h)).end() + .eq(2).css('left', sl.alpha.maxLeft * (1 - this.color.value.a)); + } + icns.eq(0).css({ + 'top': sl.saturation.maxTop - this.color.value.b * sl.saturation.maxTop, + 'left': this.color.value.s * sl.saturation.maxLeft + }); + this.picker.find('.colorpicker-saturation').css('backgroundColor', this.color.toHex(this.color.value.h, 1, 1, 1)); + this.picker.find('.colorpicker-alpha').css('backgroundColor', this.color.toHex()); + this.picker.find('.colorpicker-color, .colorpicker-color div').css('backgroundColor', this.color.toString(this.format)); + return val; + }, + updateComponent: function(val) { + val = val || this.color.toString(this.format); + if (this.component !== false) { + var icn = this.component.find('i').eq(0); + if (icn.length > 0) { + icn.css({ + 'backgroundColor': val + }); + } else { + this.component.css({ + 'backgroundColor': val + }); + } + } + return val; + }, + update: function(force) { + var val; + if ((this.getValue(false) !== false) || (force === true)) { + // Update input/data only if the current value is not empty + val = this.updateComponent(); + this.updateInput(val); + this.updateData(val); + this.updatePicker(); // only update picker if value is not empty + } + return val; + + }, + setValue: function(val) { // set color manually + this.color = new Color(val, this.options.colorSelectors); + this.update(true); + this.element.trigger({ + type: 'changeColor', + color: this.color, + value: val + }); + }, + getValue: function(defaultValue) { + defaultValue = (defaultValue === undefined) ? '#000000' : defaultValue; + var val; + if (this.hasInput()) { + val = this.input.val(); + } else { + val = this.element.data('color'); + } + if ((val === undefined) || (val === '') || (val === null)) { + // if not defined or empty, return default + val = defaultValue; + } + return val; + }, + hasInput: function() { + return (this.input !== false); + }, + isDisabled: function() { + if (this.hasInput()) { + return (this.input.prop('disabled') === true); + } + return false; + }, + disable: function() { + if (this.hasInput()) { + this.input.prop('disabled', true); + this.element.trigger({ + type: 'disable', + color: this.color, + value: this.getValue() + }); + return true; + } + return false; + }, + enable: function() { + if (this.hasInput()) { + this.input.prop('disabled', false); + this.element.trigger({ + type: 'enable', + color: this.color, + value: this.getValue() + }); + return true; + } + return false; + }, + currentSlider: null, + mousePointer: { + left: 0, + top: 0 + }, + mousedown: function(e) { + if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) { + e.pageX = e.originalEvent.touches[0].pageX; + e.pageY = e.originalEvent.touches[0].pageY; + } + e.stopPropagation(); + e.preventDefault(); + + var target = $(e.target); + + //detect the slider and set the limits and callbacks + var zone = target.closest('div'); + var sl = this.options.horizontal ? this.options.slidersHorz : this.options.sliders; + if (!zone.is('.colorpicker')) { + if (zone.is('.colorpicker-saturation')) { + this.currentSlider = $.extend({}, sl.saturation); + } else if (zone.is('.colorpicker-hue')) { + this.currentSlider = $.extend({}, sl.hue); + } else if (zone.is('.colorpicker-alpha')) { + this.currentSlider = $.extend({}, sl.alpha); + } else { + return false; + } + var offset = zone.offset(); + //reference to guide's style + this.currentSlider.guide = zone.find('i')[0].style; + this.currentSlider.left = e.pageX - offset.left; + this.currentSlider.top = e.pageY - offset.top; + this.mousePointer = { + left: e.pageX, + top: e.pageY + }; + //trigger mousemove to move the guide to the current position + $(document).on({ + 'mousemove.colorpicker': $.proxy(this.mousemove, this), + 'touchmove.colorpicker': $.proxy(this.mousemove, this), + 'mouseup.colorpicker': $.proxy(this.mouseup, this), + 'touchend.colorpicker': $.proxy(this.mouseup, this) + }).trigger('mousemove'); + } + return false; + }, + mousemove: function(e) { + if (!e.pageX && !e.pageY && e.originalEvent && e.originalEvent.touches) { + e.pageX = e.originalEvent.touches[0].pageX; + e.pageY = e.originalEvent.touches[0].pageY; + } + e.stopPropagation(); + e.preventDefault(); + var left = Math.max( + 0, + Math.min( + this.currentSlider.maxLeft, + this.currentSlider.left + ((e.pageX || this.mousePointer.left) - this.mousePointer.left) + ) + ); + var top = Math.max( + 0, + Math.min( + this.currentSlider.maxTop, + this.currentSlider.top + ((e.pageY || this.mousePointer.top) - this.mousePointer.top) + ) + ); + this.currentSlider.guide.left = left + 'px'; + this.currentSlider.guide.top = top + 'px'; + if (this.currentSlider.callLeft) { + this.color[this.currentSlider.callLeft].call(this.color, left / this.currentSlider.maxLeft); + } + if (this.currentSlider.callTop) { + this.color[this.currentSlider.callTop].call(this.color, top / this.currentSlider.maxTop); + } + // Change format dynamically + // Only occurs if user choose the dynamic format by + // setting option format to false + if (this.currentSlider.callTop === 'setAlpha' && this.options.format === false) { + + // Converting from hex / rgb to rgba + if (this.color.value.a !== 1) { + this.format = 'rgba'; + this.color.origFormat = 'rgba'; + } + + // Converting from rgba to hex + else { + this.format = 'hex'; + this.color.origFormat = 'hex'; + } + } + this.update(true); + + this.element.trigger({ + type: 'changeColor', + color: this.color + }); + return false; + }, + mouseup: function(e) { + e.stopPropagation(); + e.preventDefault(); + $(document).off({ + 'mousemove.colorpicker': this.mousemove, + 'touchmove.colorpicker': this.mousemove, + 'mouseup.colorpicker': this.mouseup, + 'touchend.colorpicker': this.mouseup + }); + return false; + }, + change: function(e) { + this.keyup(e); + }, + keyup: function(e) { + if ((e.keyCode === 38)) { + if (this.color.value.a < 1) { + this.color.value.a = Math.round((this.color.value.a + 0.01) * 100) / 100; + } + this.update(true); + } else if ((e.keyCode === 40)) { + if (this.color.value.a > 0) { + this.color.value.a = Math.round((this.color.value.a - 0.01) * 100) / 100; + } + this.update(true); + } else { + this.color = new Color(this.input.val(), this.options.colorSelectors); + // Change format dynamically + // Only occurs if user choose the dynamic format by + // setting option format to false + if (this.color.origFormat && this.options.format === false) { + this.format = this.color.origFormat; + } + if (this.getValue(false) !== false) { + this.updateData(); + this.updateComponent(); + this.updatePicker(); + } + } + this.element.trigger({ + type: 'changeColor', + color: this.color, + value: this.input.val() + }); + } + }; + + $.colorpicker = Colorpicker; + + $.fn.colorpicker = function(option) { + var pickerArgs = arguments, + rv = null; + + var $returnValue = this.each(function() { + var $this = $(this), + inst = $this.data('colorpicker'), + options = ((typeof option === 'object') ? option : {}); + if ((!inst) && (typeof option !== 'string')) { + $this.data('colorpicker', new Colorpicker(this, options)); + } else { + if (typeof option === 'string') { + rv = inst[option].apply(inst, Array.prototype.slice.call(pickerArgs, 1)); + } + } + }); + if (option === 'getValue') { + return rv; + } + return $returnValue; + }; + + $.fn.colorpicker.constructor = Colorpicker; + +})); diff --git a/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js b/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js new file mode 100644 index 0000000..932dd58 --- /dev/null +++ b/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js @@ -0,0 +1,5 @@ +/*! + * Bootstrap Colorpicker v2.3.3 + * http://mjolnic.github.io/bootstrap-colorpicker/ + */ +!function(a){"use strict";"object"==typeof exports?module.exports=a(window.jQuery):"function"==typeof define&&define.amd?define(["jquery"],a):window.jQuery&&!window.jQuery.fn.colorpicker&&a(window.jQuery)}(function(a){"use strict";var b=function(b,c){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,c&&a.extend(this.colors,c),b&&(void 0!==b.toLowerCase?(b+="",this.setColor(b)):void 0!==b.h&&(this.value=b))};b.prototype={constructor:b,colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",transparent:"transparent"},_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:""===a?0:void 0!==a.toLowerCase?(a.match(/^\./)&&(a="0"+a),Math.ceil(100*parseFloat(a))/100):1},isTransparent:function(a){return a?(a=a.toLowerCase().trim(),"transparent"===a||a.match(/#?00000000/)||a.match(/(rgba|hsla)\(0,0,0,0?\.?0\)/)):!1},rgbaIsTransparent:function(a){return 0===a.r&&0===a.g&&0===a.b&&0===a.a},setColor:function(a){a=a.toLowerCase().trim(),a&&(this.isTransparent(a)?this.value={h:0,s:0,b:0,a:0}:this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1})},stringToHSB:function(b){b=b.toLowerCase();var c;"undefined"!=typeof this.colors[b]&&(b=this.colors[b],c="alias");var d=this,e=!1;return a.each(this.stringParsers,function(a,f){var g=f.re.exec(b),h=g&&f.parse.apply(d,[g]),i=c||f.format||"rgba";return h?(e=i.match(/hsla?/)?d.RGBtoHSB.apply(d,d.HSLtoRGB.apply(d,h)):d.RGBtoHSB.apply(d,h),d.origFormat=i,!1):!0}),e},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=Math.round(parseInt(100*(1-a),10)/100*100)/100},toRGB:function(a,b,c,d){a||(a=this.value.h,b=this.value.s,c=this.value.b),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Math.abs(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],{r:Math.round(255*e),g:Math.round(255*f),b:Math.round(255*g),a:d||this.value.a}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return this.rgbaIsTransparent(e)?"transparent":"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&1>=f?f:2-f,f/=2,g>1&&(g=1),{h:isNaN(e)?0:e,s:isNaN(g)?0:g,l:isNaN(f)?0:f,a:isNaN(d)?0:d}},toAlias:function(a,b,c,d){var e=this.toHex(a,b,c,d);for(var f in this.colors)if(this.colors[f]===e)return f;return!1},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return 0>c?c+=1:c>1&&(c-=1),1>6*c?a+(b-a)*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){0>b&&(b=0);var e;e=.5>=c?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){a=a||"rgba";var b=!1;switch(a){case"rgb":return b=this.toRGB(),this.rgbaIsTransparent(b)?"transparent":"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":return b=this.toRGB(),"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":return b=this.toHSL(),"hsl("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%)";case"hsla":return b=this.toHSL(),"hsla("+Math.round(360*b.h)+","+Math.round(100*b.s)+"%,"+Math.round(100*b.l)+"%,"+b.a+")";case"hex":return this.toHex();case"alias":return this.toAlias()||this.toHex();default:return b}},stringParsers:[{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d*(?:\.\d+)?)\s*,\s*(\d*(?:\.\d+)?)\%\s*,\s*(\d*(?:\.\d+)?)\%\s*(?:,\s*(\d*(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}}],colorNameToHex:function(a){return"undefined"!=typeof this.colors[a.toLowerCase()]?this.colors[a.toLowerCase()]:!1}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div><div class="colorpicker-selectors"></div></div>',align:"right",customClass:null,colorSelectors:null},d=function(d,e){if(this.element=a(d).addClass("colorpicker-element"),this.options=a.extend(!0,{},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1?this.element.find(this.component):!1,this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1?a(this.container):!1,this.input=this.element.is("input")?this.element:this.options.input?this.element.find(this.options.input):!1,this.input&&0===this.input.length&&(this.input=!1),this.color=new b(this.options.color!==!1?this.options.color:this.getValue(),this.options.colorSelectors),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.options.color!==!1&&(this.updateInput(this.color),this.updateData(this.color)),this.picker=a(this.options.template),this.options.customClass&&this.picker.addClass(this.options.customClass),this.options.inline?this.picker.addClass("colorpicker-inline colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),"rgba"!==this.format&&"hsla"!==this.format&&this.options.format!==!1||this.picker.addClass("colorpicker-with-alpha"),"right"===this.options.align&&this.picker.addClass("colorpicker-right"),this.options.inline===!0&&this.picker.addClass("colorpicker-no-arrow"),this.options.colorSelectors){var f=this;a.each(this.options.colorSelectors,function(b,c){var d=a("<i />").css("background-color",c).data("class",b);d.click(function(){f.setValue(a(this).css("background-color"))}),f.picker.find(".colorpicker-selectors").append(d)}),this.picker.find(".colorpicker-selectors").show()}this.picker.on("mousedown.colorpicker touchstart.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.input.on({"change.colorpicker":a.proxy(this.change,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.input!==!1&&this.component!==!1&&"color"===this.input.attr("type")&&this.input.on({"click.colorpicker":a.proxy(this.show,this),"focus.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker","color").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.trigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1||this.options.container)return!1;var a=this.container&&this.container[0]!==document.body?"position":"offset",b=this.component||this.element,c=b[a]();"right"===this.options.align&&(c.left-=this.picker.outerWidth()-b.outerWidth()),this.picker.css({top:c.top+b.outerHeight(),left:c.left})},show:function(b){return this.isDisabled()?!1:(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!b||this.hasInput()&&"color"!==this.input.attr("type")||b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),!this.component&&this.input||this.options.inline!==!1||a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),void this.element.trigger({type:"showPicker",color:this.color}))},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",color:this.color})},updateData:function(a){return a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){if(a=a||this.color.toString(this.format),this.input!==!1){if(this.options.colorSelectors){var c=new b(a,this.options.colorSelectors),d=c.toAlias();"undefined"!=typeof this.options.colorSelectors[d]&&(a=d)}this.input.prop("value",a)}return a},updatePicker:function(a){void 0!==a&&(this.color=new b(a,this.options.colorSelectors));var c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");return 0!==d.length?(this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpicker-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor",this.color.toString(this.format)),a):void 0},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return a},update:function(a){var b;return this.getValue(!1)===!1&&a!==!0||(b=this.updateComponent(),this.updateInput(b),this.updateData(b),this.updatePicker()),b},setValue:function(a){this.color=new b(a,this.options.colorSelectors),this.update(!0),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void 0===a?"#000000":a;var b;return b=this.hasInput()?this.input.val():this.element.data("color"),void 0!==b&&""!==b&&null!==b||(b=a),b},hasInput:function(){return this.input!==!1},isDisabled:function(){return this.hasInput()?this.input.prop("disabled")===!0:!1},disable:function(){return this.hasInput()?(this.input.prop("disabled",!0),this.element.trigger({type:"disable",color:this.color,value:this.getValue()}),!0):!1},enable:function(){return this.hasInput()?(this.input.prop("disabled",!1),this.element.trigger({type:"enable",color:this.color,value:this.getValue()}),!0):!1},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){!b.pageX&&!b.pageY&&b.originalEvent&&b.originalEvent.touches&&(b.pageX=b.originalEvent.touches[0].pageX,b.pageY=b.originalEvent.touches[0].pageY),b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"touchmove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this),"touchend.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){!a.pageX&&!a.pageY&&a.originalEvent&&a.originalEvent.touches&&(a.pageX=a.originalEvent.touches[0].pageX,a.pageY=a.originalEvent.touches[0].pageY),a.stopPropagation(),a.preventDefault();var b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/this.currentSlider.maxLeft),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/this.currentSlider.maxTop),"setAlpha"===this.currentSlider.callTop&&this.options.format===!1&&(1!==this.color.value.a?(this.format="rgba",this.color.origFormat="rgba"):(this.format="hex",this.color.origFormat="hex")),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"touchmove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup,"touchend.colorpicker":this.mouseup}),!1},change:function(a){this.keyup(a)},keyup:function(a){38===a.keyCode?(this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0)):40===a.keyCode?(this.color.value.a>0&&(this.color.value.a=Math.round(100*(this.color.value.a-.01))/100),this.update(!0)):(this.color=new b(this.input.val(),this.options.colorSelectors),this.color.origFormat&&this.options.format===!1&&(this.format=this.color.origFormat),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())),this.element.trigger({type:"changeColor",color:this.color,value:this.input.val()})}},a.colorpicker=d,a.fn.colorpicker=function(b){var c=arguments,e=null,f=this.each(function(){var f=a(this),g=f.data("colorpicker"),h="object"==typeof b?b:{};g||"string"==typeof b?"string"==typeof b&&(e=g[b].apply(g,Array.prototype.slice.call(c,1))):f.data("colorpicker",new d(this,h))});return"getValue"===b?e:f},a.fn.colorpicker.constructor=d}); \ No newline at end of file diff --git a/plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css b/plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css new file mode 100644 index 0000000..71a7421 --- /dev/null +++ b/plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css @@ -0,0 +1,9 @@ +/*! + * Datepicker for Bootstrap v1.7.0-dev (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + +.datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{background:#d9edf7;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{background-color:#fde19a;background-image:-moz-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-o-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today[disabled]{background-color:#fdf59a}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active{background-color:#fbf069\9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-o-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:linear-gradient(to bottom,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active{background-color:#efe24b\9}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(to bottom,#b3b3b3,grey);background-image:-ms-linear-gradient(to bottom,#b3b3b3,grey);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(grey));background-image:-webkit-linear-gradient(to bottom,#b3b3b3,grey);background-image:-o-linear-gradient(to bottom,#b3b3b3,grey);background-image:linear-gradient(to bottom,#b3b3b3,grey);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:grey grey #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected[disabled]{background-color:grey}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active{background-color:#666\9}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active[disabled]{background-color:#04c}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active{background-color:#039\9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active[disabled]{background-color:#04c}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{background-color:#039\9}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .next.disabled,.datepicker .prev.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:400;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px} \ No newline at end of file diff --git a/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js b/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js new file mode 100644 index 0000000..4ba060f --- /dev/null +++ b/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js @@ -0,0 +1,10 @@ +/*! + * Datepicker for Bootstrap v1.7.0-dev (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(0<=this[c].valueOf()-b&&this[c].valueOf()-b<864e5)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a.data(b,"datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.o.calendarWeeks&&this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return Number(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted),this.setDatesDisabled(this.o.datesDisabled),this.setViewMode(this.o.startView),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(b){return a.each(r.viewModes,function(c,d){return b===c||-1!==a.inArray(b,d.names)?(b=c,!1):void 0}),b},_resolveDaysOfWeek:function(b){return a.isArray(b)||(b=b.split(/[,\s]*/)),a.map(b,Number)},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(e){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=[e.datesDisabled]),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){-1===a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};this.o.showOnFocus===!0&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.inputField.length?this._events=[[this.inputField,b],[this.component,{click:a.proxy(this.show,this)}]]:this._events=[[this.element,{click:a.proxy(this.show,this),keydown:a.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[this.picker,".prev, .next",{click:a.proxy(this.navArrowsClick,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{"mousedown touchstart":a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return r.formatDate(c,b,this.o.language)},this)})},show:function(){return this.inputField.prop("disabled")||this.inputField.prop("readonly")&&this.o.enableOnReadonly===!1?void 0:(this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this)},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.setViewMode(this.o.startView),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&-1!==a.inArray("text/plain",b.originalEvent.clipboardData.types))c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){return a&&new Date(a.getTime()+6e4*a.getTimezoneOffset())},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&c(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate())},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return a!==b?new Date(a):null},clearDates:function(){this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.setDates.apply(this,a.map(b,this._utc_to_local)),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),remove:f("destroy"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return r.formatDate(a,c,d)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){return this._process_options({datesDisabled:a}),this.update(),this},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=10,e=a(this.o.container),f=e.width(),g="body"===this.o.container?a(document).scrollTop():e.scrollTop(),h=e.offset(),i=[];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==b&&i.push(parseInt(b))});var j=Math.max.apply(Math,i)+this.o.zIndexOffset,k=this.component?this.component.parent().offset():this.element.offset(),l=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),m=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),n=k.left-h.left,o=k.top-h.top;"body"!==this.o.container&&(o+=g),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(n-=b-m)):k.left<0?(this.picker.addClass("datepicker-orient-left"),n-=k.left-d):n+b>f?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=0>p?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate,d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){var b=this.o.weekStart,c="<tr>";for(this.o.calendarWeeks&&(c+='<th class="cw">&#160;</th>');b<this.o.weekStart+7;)c+='<th class="dow',-1!==a.inArray(b,this.o.daysOfWeekDisabled)&&(c+=" disabled"),c+='">'+q[this.o.language].daysMin[b++%7]+"</th>";c+="</tr>",this.picker.find(".datepicker-days thead").append(c)},fillMonths:function(){for(var a=this._utc_to_local(this.viewDate),b="",c=0;12>c;){var d=a&&a.getMonth()===c?" focused":"";b+='<span class="month'+d+'">'+q[this.o.language].monthsShort[c++]+"</span>"}this.picker.find(".datepicker-months td").html(b)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()<f||b.getUTCFullYear()===f&&b.getUTCMonth()<g?c.push("old"):(b.getUTCFullYear()>f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!==a.inArray(b.valueOf(),this.range)&&c.push("selected"),b.valueOf()===this.range[0]&&c.push("range-start"),b.valueOf()===this.range[this.range.length-1]&&c.push("range-end")),c},_fill_yearsView:function(c,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r,s,t,u;for(k="",l=this.picker.find(c),m=parseInt(g/e,10)*e,o=parseInt(h/f,10)*f,p=parseInt(i/f,10)*f,n=a.map(this.dates,function(a){return parseInt(a.getUTCFullYear()/f,10)*f}),l.find(".datepicker-switch").text(m+"-"+(m+9*f)),q=m-f,r=-1;11>r;r+=1)s=[d],t=null,-1===r?s.push("old"):10===r&&s.push("new"),-1!==a.inArray(q,n)&&s.push("active"),(o>q||q>p)&&s.push("disabled"),q===this.viewDate.getFullYear()&&s.push("focused"),j!==a.noop&&(u=j(new Date(q,0,1)),u===b?u={}:"boolean"==typeof u?u={enabled:u}:"string"==typeof u&&(u={classes:u}),u.enabled===!1&&s.push("disabled"),u.classes&&(s=s.concat(u.classes.split(/\s+/))),u.tooltip&&(t=u.tooltip)),k+='<span class="'+s.join(" ")+'"'+(t?' title="'+t+'"':"")+">"+q+"</span>",q+=f;l.find("td").html(k)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(n).toggle(this.o.clearBtn!==!1),this.picker.find("thead .datepicker-title").text(this.o.title).toggle(""!==this.o.title),this.updateNavArrows(),this.fillMonths();var p=c(g,h,0),s=p.getUTCDate();p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v,w=[];p.valueOf()<t;){if(u=p.getUTCDay(),u===this.o.weekStart&&(w.push("<tr>"),this.o.calendarWeeks)){var x=new Date(+p+(this.o.weekStart-u-7)%7*864e5),y=new Date(Number(x)+(11-x.getUTCDay())%7*864e5),z=new Date(Number(z=c(y.getUTCFullYear(),0,1))+(11-z.getUTCDay())%7*864e5),A=(y-z)/864e5/7+1;w.push('<td class="cw">'+A+"</td>")}v=this.getClassNames(p),v.push("day"),this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&v.push("disabled"),e.classes&&(v=v.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip)),v=a.unique(v),w.push('<td class="'+v.join(" ")+'"'+(d?' title="'+d+'"':"")+(this.o.dateCells?' data-date="'+p.getTime().toString()+'"':"")+">"+p.getUTCDate()+"</td>"),d=null,u===this.o.weekEnd&&w.push("</tr>"),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(w.join(""));var B=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",C=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?B:g).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&C.eq(b.getUTCMonth()).addClass("active")}),(i>g||g>k)&&C.addClass("disabled"),g===i&&C.slice(0,j).addClass("disabled"),g===k&&C.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var D=this;a.each(C,function(c,d){var e=new Date(g,c,1),f=D.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,1,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,10,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,100,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth();switch(this.viewMode){case 0:a=this.o.startDate!==-(1/0)&&d<=this.o.startDate.getUTCFullYear()&&e<=this.o.startDate.getUTCMonth(),b=this.o.endDate!==1/0&&d>=this.o.endDate.getUTCFullYear()&&e>=this.o.endDate.getUTCMonth();break;case 1:case 2:case 3:case 4:a=this.o.startDate!==-(1/0)&&d<=this.o.startDate.getUTCFullYear(),b=this.o.endDate!==1/0&&d>=this.o.endDate.getUTCFullYear()}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h,i;e=a(b.target),e.hasClass("datepicker-switch")&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("day")&&(g=Number(e.text()),h=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),(e.hasClass("old")||e.hasClass("new"))&&(f=e.hasClass("old")?-1:1,i=(i+f+12)%12,(-1===f&&11===i||1===f&&0===i)&&(h+=f,this._trigger("changeYear",this.viewDate)),this._trigger("changeMonth",this.viewDate)),this._setDate(c(h,i,g))),(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),g=1,1===this.viewMode?(i=e.parent().find("span").index(e),h=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(i)):(i=0,h=Number(e.text()),this.viewDate.setUTCFullYear(h)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(h,i,g)):(this.setViewMode(this.viewMode-1),this.fill()))),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},navArrowsClick:function(b){var c=a(b.target),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;i>j;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void((40===a.keyCode||27===a.keyCode)&&(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&((38===a.keyCode||40===a.keyCode)&&(b=4*b),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows()}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(-1!==g){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e<this.dates[h])for(;h>=0&&e<this.dates[h];)this.pickers[h--].setUTCDate(e);else if(e>this.dates[i])for(;j>i&&e>this.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),delete this.element.data().datepicker},remove:f("destroy")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,dateCells:!1,title:"",templates:{leftArrow:"&laquo;",rightArrow:"&raquo;"}},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(e,f,g,h){function i(a,b){return b===!0&&(b=10),100>a&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function j(){var a=this.slice(0,s[n].length),b=s[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!e)return b;if(e instanceof Date)return e;if("string"==typeof f&&(f=r.parseFormat(f)),f.toValue)return f.toValue(e,f,g);var l,m,n,o,p=/([\-+]\d+)([dmwy])/,s=e.match(/([\-+]\d+)([dmwy])/g),t={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},u={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)){for(e=new Date,n=0;n<s.length;n++)l=p.exec(s[n]),m=parseInt(l[1]),o=t[l[2]],e=k.prototype[o](e,m);return c(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}if(e in u&&(e=u[e],s=e.match(/([\-+]\d+)([dmwy])/g),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e))){for(e=new Date,n=0;n<s.length;n++)l=p.exec(s[n]),m=parseInt(l[1]),o=t[l[2]],e=k.prototype[o](e,m);return c(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())}s=e&&e.match(this.nonpunctuation)||[],e=new Date;var v,w,x={},y=["yyyy","yy","M","MM","m","mm","d","dd"],z={yyyy:function(a,b){return a.setUTCFullYear(h?i(b,h):b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;0>b;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};z.yy=z.yyyy,z.M=z.MM=z.mm=z.m,z.dd=z.d,e=d();var A=f.parts.slice();if(s.length!==A.length&&(A=a(A).filter(function(b,c){return-1!==a.inArray(c,y)}).toArray()),s.length===A.length){var B;for(n=0,B=A.length;B>n;n++){if(v=parseInt(s[n],10),l=A[n],isNaN(v))switch(l){case"MM":w=a(q[g].months).filter(j),v=a.inArray(w[0],q[g].months)+1;break;case"M":w=a(q[g].monthsShort).filter(j),v=a.inArray(w[0],q[g].monthsShort)+1}x[l]=v}var C,D;for(n=0;n<y.length;n++)D=y[n],D in x&&!isNaN(x[D])&&(C=new Date(e),z[D](C,x[D]),isNaN(C)||(e=C))}return e},formatDate:function(b,c,d){if(!b)return"";if("string"==typeof c&&(c=r.parseFormat(c)),c.toDisplay)return c.toDisplay(b,c,d);var e={d:b.getUTCDate(),D:q[d].daysShort[b.getUTCDay()],DD:q[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:q[d].monthsShort[b.getUTCMonth()],MM:q[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;h>=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">&laquo;</th><th colspan="5" class="datepicker-switch"></th><th class="next">&raquo;</th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};r.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+r.headTemplate+"<tbody></tbody>"+r.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+"</table></div></div>", +a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.7.0-dev",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/plugins/bootstrap-daterangepicker/Thumbs.db b/plugins/bootstrap-daterangepicker/Thumbs.db new file mode 100644 index 0000000..836321d Binary files /dev/null and b/plugins/bootstrap-daterangepicker/Thumbs.db differ diff --git a/plugins/bootstrap-daterangepicker/daterangepicker.css b/plugins/bootstrap-daterangepicker/daterangepicker.css new file mode 100644 index 0000000..a03ff44 --- /dev/null +++ b/plugins/bootstrap-daterangepicker/daterangepicker.css @@ -0,0 +1,269 @@ +.daterangepicker { + position: absolute; + color: inherit; + background: #fff; + border-radius: 4px; + width: 278px; + padding: 4px; + margin-top: 1px; + top: 100px; + left: 20px; + /* Calendars */ } + .daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; } + .daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; } + .daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; } + .daterangepicker.opensleft:before { + right: 9px; } + .daterangepicker.opensleft:after { + right: 10px; } + .daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; } + .daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; } + .daterangepicker.opensright:before { + left: 9px; } + .daterangepicker.opensright:after { + left: 10px; } + .daterangepicker.dropup { + margin-top: -5px; } + .daterangepicker.dropup:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; } + .daterangepicker.dropup:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; } + .daterangepicker.dropdown-menu { + max-width: none; + z-index: 3001; } + .daterangepicker.single .ranges, .daterangepicker.single .calendar { + float: none; } + .daterangepicker.show-calendar .calendar { + display: block; } + .daterangepicker .calendar { + display: none; + max-width: 270px; + margin: 4px; } + .daterangepicker .calendar.single .calendar-table { + border: none; } + .daterangepicker .calendar th, .daterangepicker .calendar td { + white-space: nowrap; + text-align: center; + min-width: 32px; } + .daterangepicker .calendar-table { + border: 1px solid #fff; + padding: 4px; + border-radius: 4px; + background: #fff; } + .daterangepicker table { + width: 100%; + margin: 0; } + .daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; } + .daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; } + .daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; } + .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; } + .daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; } + .daterangepicker td.start-date { + border-radius: 4px 0 0 4px; } + .daterangepicker td.end-date { + border-radius: 0 4px 4px 0; } + .daterangepicker td.start-date.end-date { + border-radius: 4px; } + .daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; } + .daterangepicker th.month { + width: auto; } + .daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; } + .daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; } + .daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; } + .daterangepicker select.yearselect { + width: 40%; } + .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; } + .daterangepicker .input-mini { + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + height: 30px; + line-height: 30px; + display: block; + vertical-align: middle; + margin: 0 0 5px 0; + padding: 0 6px 0 28px; + width: 100%; } + .daterangepicker .input-mini.active { + border: 1px solid #08c; + border-radius: 4px; } + .daterangepicker .daterangepicker_input { + position: relative; } + .daterangepicker .daterangepicker_input i { + position: absolute; + left: 8px; + top: 8px; } + .daterangepicker.rtl .input-mini { + padding-right: 28px; + padding-left: 6px; } + .daterangepicker.rtl .daterangepicker_input i { + left: auto; + right: 8px; } + .daterangepicker .calendar-time { + text-align: center; + margin: 5px auto; + line-height: 30px; + position: relative; + padding-left: 28px; } + .daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; } + +.ranges { + font-size: 11px; + float: none; + margin: 4px; + text-align: left; } + .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; } + .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + border-radius: 4px; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + cursor: pointer; } + .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; } + .ranges li.active { + background: #08c; + border: 1px solid #08c; + color: #fff; } + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; } + .daterangepicker .ranges ul { + width: 160px; } + .daterangepicker.single .ranges ul { + width: 100%; } + .daterangepicker.single .calendar.left { + clear: none; } + .daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .calendar { + float: left; } + .daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .calendar { + float: right; } + .daterangepicker.ltr { + direction: ltr; + text-align: left; } + .daterangepicker.ltr .calendar.left { + clear: left; + margin-right: 0; } + .daterangepicker.ltr .calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.ltr .calendar.right { + margin-left: 0; } + .daterangepicker.ltr .calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.ltr .left .daterangepicker_input { + padding-right: 12px; } + .daterangepicker.ltr .calendar.left .calendar-table { + padding-right: 12px; } + .daterangepicker.ltr .ranges, .daterangepicker.ltr .calendar { + float: left; } + .daterangepicker.rtl { + direction: rtl; + text-align: right; } + .daterangepicker.rtl .calendar.left { + clear: right; + margin-left: 0; } + .daterangepicker.rtl .calendar.left .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .daterangepicker.rtl .calendar.right { + margin-right: 0; } + .daterangepicker.rtl .calendar.right .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .daterangepicker.rtl .left .daterangepicker_input { + padding-left: 12px; } + .daterangepicker.rtl .calendar.left .calendar-table { + padding-left: 12px; } + .daterangepicker.rtl .ranges, .daterangepicker.rtl .calendar { + text-align: right; + float: right; } } +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; } + .daterangepicker.ltr .ranges { + float: left; } + .daterangepicker.rtl .ranges { + float: right; } + .daterangepicker .calendar.left { + clear: none !important; } } diff --git a/plugins/bootstrap-daterangepicker/daterangepicker.js b/plugins/bootstrap-daterangepicker/daterangepicker.js new file mode 100644 index 0000000..04798c6 --- /dev/null +++ b/plugins/bootstrap-daterangepicker/daterangepicker.js @@ -0,0 +1,1618 @@ +/** +* @version: 2.1.24 +* @author: Dan Grossman http://www.dangrossman.info/ +* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved. +* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php +* @website: https://www.improvely.com/ +*/ +// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Make globaly available as well + define(['moment', 'jquery'], function (moment, jquery) { + return (root.daterangepicker = factory(moment, jquery)); + }); + } else if (typeof module === 'object' && module.exports) { + // Node / Browserify + //isomorphic issue + var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; + if (!jQuery) { + jQuery = require('jquery'); + if (!jQuery.fn) jQuery.fn = {}; + } + module.exports = factory(require('moment'), jQuery); + } else { + // Browser globals + root.daterangepicker = factory(root.moment, root.jQuery); + } +}(this, function(moment, $) { + var DateRangePicker = function(element, options, cb) { + + //default settings for options + this.parentEl = 'body'; + this.element = $(element); + this.startDate = moment().startOf('day'); + this.endDate = moment().endOf('day'); + this.minDate = false; + this.maxDate = false; + this.dateLimit = false; + this.autoApply = false; + this.singleDatePicker = false; + this.showDropdowns = false; + this.showWeekNumbers = false; + this.showISOWeekNumbers = false; + this.showCustomRangeLabel = true; + this.timePicker = false; + this.timePicker24Hour = false; + this.timePickerIncrement = 1; + this.timePickerSeconds = false; + this.linkedCalendars = true; + this.autoUpdateInput = true; + this.alwaysShowCalendars = false; + this.ranges = {}; + + this.opens = 'right'; + if (this.element.hasClass('pull-right')) + this.opens = 'left'; + + this.drops = 'down'; + if (this.element.hasClass('dropup')) + this.drops = 'up'; + + this.buttonClasses = 'btn btn-sm'; + this.applyClass = 'btn-success'; + this.cancelClass = 'btn-default'; + + this.locale = { + direction: 'ltr', + format: 'MM/DD/YYYY', + separator: ' - ', + applyLabel: 'Apply', + cancelLabel: 'Cancel', + weekLabel: 'W', + customRangeLabel: 'Custom Range', + daysOfWeek: moment.weekdaysMin(), + monthNames: moment.monthsShort(), + firstDay: moment.localeData().firstDayOfWeek() + }; + + this.callback = function() { }; + + //some state information + this.isShowing = false; + this.leftCalendar = {}; + this.rightCalendar = {}; + + //custom options from user + if (typeof options !== 'object' || options === null) + options = {}; + + //allow setting options with data attributes + //data-api options will be overwritten with custom javascript options + options = $.extend(this.element.data(), options); + + //html template for the picker UI + if (typeof options.template !== 'string' && !(options.template instanceof $)) + options.template = '<div class="daterangepicker dropdown-menu">' + + '<div class="calendar left">' + + '<div class="daterangepicker_input">' + + '<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' + + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + + '<div class="calendar-time">' + + '<div></div>' + + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + + '</div>' + + '</div>' + + '<div class="calendar-table"></div>' + + '</div>' + + '<div class="calendar right">' + + '<div class="daterangepicker_input">' + + '<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' + + '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + + '<div class="calendar-time">' + + '<div></div>' + + '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + + '</div>' + + '</div>' + + '<div class="calendar-table"></div>' + + '</div>' + + '<div class="ranges">' + + '<div class="range_inputs">' + + '<button class="applyBtn" disabled="disabled" type="button"></button> ' + + '<button class="cancelBtn" type="button"></button>' + + '</div>' + + '</div>' + + '</div>'; + + this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); + this.container = $(options.template).appendTo(this.parentEl); + + // + // handle all the possible options overriding defaults + // + + if (typeof options.locale === 'object') { + + if (typeof options.locale.direction === 'string') + this.locale.direction = options.locale.direction; + + if (typeof options.locale.format === 'string') + this.locale.format = options.locale.format; + + if (typeof options.locale.separator === 'string') + this.locale.separator = options.locale.separator; + + if (typeof options.locale.daysOfWeek === 'object') + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + + if (typeof options.locale.monthNames === 'object') + this.locale.monthNames = options.locale.monthNames.slice(); + + if (typeof options.locale.firstDay === 'number') + this.locale.firstDay = options.locale.firstDay; + + if (typeof options.locale.applyLabel === 'string') + this.locale.applyLabel = options.locale.applyLabel; + + if (typeof options.locale.cancelLabel === 'string') + this.locale.cancelLabel = options.locale.cancelLabel; + + if (typeof options.locale.weekLabel === 'string') + this.locale.weekLabel = options.locale.weekLabel; + + if (typeof options.locale.customRangeLabel === 'string') + this.locale.customRangeLabel = options.locale.customRangeLabel; + + } + this.container.addClass(this.locale.direction); + + if (typeof options.startDate === 'string') + this.startDate = moment(options.startDate, this.locale.format); + + if (typeof options.endDate === 'string') + this.endDate = moment(options.endDate, this.locale.format); + + if (typeof options.minDate === 'string') + this.minDate = moment(options.minDate, this.locale.format); + + if (typeof options.maxDate === 'string') + this.maxDate = moment(options.maxDate, this.locale.format); + + if (typeof options.startDate === 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate === 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate === 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate === 'object') + this.maxDate = moment(options.maxDate); + + // sanity check for bad options + if (this.minDate && this.startDate.isBefore(this.minDate)) + this.startDate = this.minDate.clone(); + + // sanity check for bad options + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate.clone(); + + if (typeof options.applyClass === 'string') + this.applyClass = options.applyClass; + + if (typeof options.cancelClass === 'string') + this.cancelClass = options.cancelClass; + + if (typeof options.dateLimit === 'object') + this.dateLimit = options.dateLimit; + + if (typeof options.opens === 'string') + this.opens = options.opens; + + if (typeof options.drops === 'string') + this.drops = options.drops; + + if (typeof options.showWeekNumbers === 'boolean') + this.showWeekNumbers = options.showWeekNumbers; + + if (typeof options.showISOWeekNumbers === 'boolean') + this.showISOWeekNumbers = options.showISOWeekNumbers; + + if (typeof options.buttonClasses === 'string') + this.buttonClasses = options.buttonClasses; + + if (typeof options.buttonClasses === 'object') + this.buttonClasses = options.buttonClasses.join(' '); + + if (typeof options.showDropdowns === 'boolean') + this.showDropdowns = options.showDropdowns; + + if (typeof options.showCustomRangeLabel === 'boolean') + this.showCustomRangeLabel = options.showCustomRangeLabel; + + if (typeof options.singleDatePicker === 'boolean') { + this.singleDatePicker = options.singleDatePicker; + if (this.singleDatePicker) + this.endDate = this.startDate.clone(); + } + + if (typeof options.timePicker === 'boolean') + this.timePicker = options.timePicker; + + if (typeof options.timePickerSeconds === 'boolean') + this.timePickerSeconds = options.timePickerSeconds; + + if (typeof options.timePickerIncrement === 'number') + this.timePickerIncrement = options.timePickerIncrement; + + if (typeof options.timePicker24Hour === 'boolean') + this.timePicker24Hour = options.timePicker24Hour; + + if (typeof options.autoApply === 'boolean') + this.autoApply = options.autoApply; + + if (typeof options.autoUpdateInput === 'boolean') + this.autoUpdateInput = options.autoUpdateInput; + + if (typeof options.linkedCalendars === 'boolean') + this.linkedCalendars = options.linkedCalendars; + + if (typeof options.isInvalidDate === 'function') + this.isInvalidDate = options.isInvalidDate; + + if (typeof options.isCustomDate === 'function') + this.isCustomDate = options.isCustomDate; + + if (typeof options.alwaysShowCalendars === 'boolean') + this.alwaysShowCalendars = options.alwaysShowCalendars; + + // update day names order to firstDay + if (this.locale.firstDay != 0) { + var iterator = this.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + + var start, end, range; + + //if no start/end dates set, check if an input element contains initial values + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { + if ($(this.element).is('input[type=text]')) { + var val = $(this.element).val(), + split = val.split(this.locale.separator); + + start = end = null; + + if (split.length == 2) { + start = moment(split[0], this.locale.format); + end = moment(split[1], this.locale.format); + } else if (this.singleDatePicker && val !== "") { + start = moment(val, this.locale.format); + end = moment(val, this.locale.format); + } + if (start !== null && end !== null) { + this.setStartDate(start); + this.setEndDate(end); + } + } + } + + if (typeof options.ranges === 'object') { + for (range in options.ranges) { + + if (typeof options.ranges[range][0] === 'string') + start = moment(options.ranges[range][0], this.locale.format); + else + start = moment(options.ranges[range][0]); + + if (typeof options.ranges[range][1] === 'string') + end = moment(options.ranges[range][1], this.locale.format); + else + end = moment(options.ranges[range][1]); + + // If the start or end date exceed those allowed by the minDate or dateLimit + // options, shorten the range to the allowable period. + if (this.minDate && start.isBefore(this.minDate)) + start = this.minDate.clone(); + + var maxDate = this.maxDate; + if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate)) + maxDate = start.clone().add(this.dateLimit); + if (maxDate && end.isAfter(maxDate)) + end = maxDate.clone(); + + // If the end of the range is before the minimum or the start of the range is + // after the maximum, don't display this range option at all. + if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) + || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day'))) + continue; + + //Support unicode chars in the range names. + var elem = document.createElement('textarea'); + elem.innerHTML = range; + var rangeHtml = elem.value; + + this.ranges[rangeHtml] = [start, end]; + } + + var list = '<ul>'; + for (range in this.ranges) { + list += '<li data-range-key="' + range + '">' + range + '</li>'; + } + if (this.showCustomRangeLabel) { + list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>'; + } + list += '</ul>'; + this.container.find('.ranges').prepend(list); + } + + if (typeof cb === 'function') { + this.callback = cb; + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.endOf('day'); + this.container.find('.calendar-time').hide(); + } + + //can't be used together for now + if (this.timePicker && this.autoApply) + this.autoApply = false; + + if (this.autoApply && typeof options.ranges !== 'object') { + this.container.find('.ranges').hide(); + } else if (this.autoApply) { + this.container.find('.applyBtn, .cancelBtn').addClass('hide'); + } + + if (this.singleDatePicker) { + this.container.addClass('single'); + this.container.find('.calendar.left').addClass('single'); + this.container.find('.calendar.left').show(); + this.container.find('.calendar.right').hide(); + this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide(); + if (this.timePicker) { + this.container.find('.ranges ul').hide(); + } else { + this.container.find('.ranges').hide(); + } + } + + if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { + this.container.addClass('show-calendar'); + } + + this.container.addClass('opens' + this.opens); + + //swap the position of the predefined ranges if opens right + if (typeof options.ranges !== 'undefined' && this.opens == 'right') { + this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() ); + } + + //apply CSS classes and labels to buttons + this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); + if (this.applyClass.length) + this.container.find('.applyBtn').addClass(this.applyClass); + if (this.cancelClass.length) + this.container.find('.cancelBtn').addClass(this.cancelClass); + this.container.find('.applyBtn').html(this.locale.applyLabel); + this.container.find('.cancelBtn').html(this.locale.cancelLabel); + + // + // event listeners + // + + this.container.find('.calendar') + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) + .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) + .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this)) + .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this)) + .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this)) + .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)); + + this.container.find('.ranges') + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) + .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this)) + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); + + if (this.element.is('input') || this.element.is('button')) { + this.element.on({ + 'click.daterangepicker': $.proxy(this.show, this), + 'focus.daterangepicker': $.proxy(this.show, this), + 'keyup.daterangepicker': $.proxy(this.elementChanged, this), + 'keydown.daterangepicker': $.proxy(this.keydown, this) + }); + } else { + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); + } + + // + // if attached to a text input, set the initial value + // + + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + this.element.trigger('change'); + } else if (this.element.is('input') && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format)); + this.element.trigger('change'); + } + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + setStartDate: function(startDate) { + if (typeof startDate === 'string') + this.startDate = moment(startDate, this.locale.format); + + if (typeof startDate === 'object') + this.startDate = moment(startDate); + + if (!this.timePicker) + this.startDate = this.startDate.startOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.minDate && this.startDate.isBefore(this.minDate)) { + this.startDate = this.minDate; + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (this.maxDate && this.startDate.isAfter(this.maxDate)) { + this.startDate = this.maxDate; + if (this.timePicker && this.timePickerIncrement) + this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + } + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + setEndDate: function(endDate) { + if (typeof endDate === 'string') + this.endDate = moment(endDate, this.locale.format); + + if (typeof endDate === 'object') + this.endDate = moment(endDate); + + if (!this.timePicker) + this.endDate = this.endDate.endOf('day'); + + if (this.timePicker && this.timePickerIncrement) + this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); + + if (this.endDate.isBefore(this.startDate)) + this.endDate = this.startDate.clone(); + + if (this.maxDate && this.endDate.isAfter(this.maxDate)) + this.endDate = this.maxDate; + + if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate)) + this.endDate = this.startDate.clone().add(this.dateLimit); + + this.previousRightTime = this.endDate.clone(); + + if (!this.isShowing) + this.updateElement(); + + this.updateMonthsInView(); + }, + + isInvalidDate: function() { + return false; + }, + + isCustomDate: function() { + return false; + }, + + updateView: function() { + if (this.timePicker) { + this.renderTimePicker('left'); + this.renderTimePicker('right'); + if (!this.endDate) { + this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled'); + } else { + this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled'); + } + } + if (this.endDate) { + this.container.find('input[name="daterangepicker_end"]').removeClass('active'); + this.container.find('input[name="daterangepicker_start"]').addClass('active'); + } else { + this.container.find('input[name="daterangepicker_end"]').addClass('active'); + this.container.find('input[name="daterangepicker_start"]').removeClass('active'); + } + this.updateMonthsInView(); + this.updateCalendars(); + this.updateFormInputs(); + }, + + updateMonthsInView: function() { + if (this.endDate) { + + //if both dates are visible already, do nothing + if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && + (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + && + (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) + ) { + return; + } + + this.leftCalendar.month = this.startDate.clone().date(2); + if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { + this.rightCalendar.month = this.endDate.clone().date(2); + } else { + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + + } else { + if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { + this.leftCalendar.month = this.startDate.clone().date(2); + this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + } + } + if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) { + this.rightCalendar.month = this.maxDate.clone().date(2); + this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month'); + } + }, + + updateCalendars: function() { + + if (this.timePicker) { + var hour, minute, second; + if (this.endDate) { + hour = parseInt(this.container.find('.left .hourselect').val(), 10); + minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } else { + hour = parseInt(this.container.find('.right .hourselect').val(), 10); + minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + } + this.leftCalendar.month.hour(hour).minute(minute).second(second); + this.rightCalendar.month.hour(hour).minute(minute).second(second); + } + + this.renderCalendar('left'); + this.renderCalendar('right'); + + //highlight any predefined range matching the current start and end dates + this.container.find('.ranges li').removeClass('active'); + if (this.endDate == null) return; + + this.calculateChosenLabel(); + }, + + renderCalendar: function(side) { + + // + // Build the matrix of dates that will populate the calendar + // + + var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; + var month = calendar.month.month(); + var year = calendar.month.year(); + var hour = calendar.month.hour(); + var minute = calendar.month.minute(); + var second = calendar.month.second(); + var daysInMonth = moment([year, month]).daysInMonth(); + var firstDay = moment([year, month, 1]); + var lastDay = moment([year, month, daysInMonth]); + var lastMonth = moment(firstDay).subtract(1, 'month').month(); + var lastYear = moment(firstDay).subtract(1, 'month').year(); + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + var dayOfWeek = firstDay.day(); + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + calendar.firstDay = firstDay; + calendar.lastDay = lastDay; + + for (var i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); + + var col, row; + for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { + if (i > 0 && col % 7 === 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); + curDate.hour(12); + + if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { + calendar[row][col] = this.minDate.clone(); + } + + if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { + calendar[row][col] = this.maxDate.clone(); + } + + } + + //make the calendar object available to hoverDate/clickDate + if (side == 'left') { + this.leftCalendar.calendar = calendar; + } else { + this.rightCalendar.calendar = calendar; + } + + // + // Display the calendar + // + + var minDate = side == 'left' ? this.minDate : this.startDate; + var maxDate = this.maxDate; + var selected = side == 'left' ? this.startDate : this.endDate; + var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'}; + + var html = '<table class="table-condensed">'; + html += '<thead>'; + html += '<tr>'; + + // add empty cell for week number + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += '<th></th>'; + + if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { + html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>'; + } else { + html += '<th></th>'; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + var currentMonth = calendar[1][1].month(); + var currentYear = calendar[1][1].year(); + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); + var minYear = (minDate && minDate.year()) || (currentYear - 50); + var inMinYear = currentYear == minYear; + var inMaxYear = currentYear == maxYear; + + var monthHtml = '<select class="monthselect">'; + for (var m = 0; m < 12; m++) { + if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) { + monthHtml += "<option value='" + m + "'" + + (m === currentMonth ? " selected='selected'" : "") + + ">" + this.locale.monthNames[m] + "</option>"; + } else { + monthHtml += "<option value='" + m + "'" + + (m === currentMonth ? " selected='selected'" : "") + + " disabled='disabled'>" + this.locale.monthNames[m] + "</option>"; + } + } + monthHtml += "</select>"; + + var yearHtml = '<select class="yearselect">'; + for (var y = minYear; y <= maxYear; y++) { + yearHtml += '<option value="' + y + '"' + + (y === currentYear ? ' selected="selected"' : '') + + '>' + y + '</option>'; + } + yearHtml += '</select>'; + + dateHtml = monthHtml + yearHtml; + } + + html += '<th colspan="5" class="month">' + dateHtml + '</th>'; + if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { + html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>'; + } else { + html += '<th></th>'; + } + + html += '</tr>'; + html += '<tr>'; + + // add week number label + if (this.showWeekNumbers || this.showISOWeekNumbers) + html += '<th class="week">' + this.locale.weekLabel + '</th>'; + + $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { + html += '<th>' + dayOfWeek + '</th>'; + }); + + html += '</tr>'; + html += '</thead>'; + html += '<tbody>'; + + //adjust maxDate to reflect the dateLimit setting in order to + //grey out end dates beyond the dateLimit + if (this.endDate == null && this.dateLimit) { + var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day'); + if (!maxDate || maxLimit.isBefore(maxDate)) { + maxDate = maxLimit; + } + } + + for (var row = 0; row < 6; row++) { + html += '<tr>'; + + // add week number + if (this.showWeekNumbers) + html += '<td class="week">' + calendar[row][0].week() + '</td>'; + else if (this.showISOWeekNumbers) + html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>'; + + for (var col = 0; col < 7; col++) { + + var classes = []; + + //highlight today's date + if (calendar[row][col].isSame(new Date(), "day")) + classes.push('today'); + + //highlight weekends + if (calendar[row][col].isoWeekday() > 5) + classes.push('weekend'); + + //grey out the dates in other months displayed at beginning and end of this calendar + if (calendar[row][col].month() != calendar[1][1].month()) + classes.push('off'); + + //don't allow selection of dates before the minimum date + if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of dates after the maximum date + if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) + classes.push('off', 'disabled'); + + //don't allow selection of date if a custom function decides it's invalid + if (this.isInvalidDate(calendar[row][col])) + classes.push('off', 'disabled'); + + //highlight the currently selected start date + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) + classes.push('active', 'start-date'); + + //highlight the currently selected end date + if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) + classes.push('active', 'end-date'); + + //highlight dates in-between the selected dates + if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) + classes.push('in-range'); + + //apply custom classes for this date + var isCustom = this.isCustomDate(calendar[row][col]); + if (isCustom !== false) { + if (typeof isCustom === 'string') + classes.push(isCustom); + else + Array.prototype.push.apply(classes, isCustom); + } + + var cname = '', disabled = false; + for (var i = 0; i < classes.length; i++) { + cname += classes[i] + ' '; + if (classes[i] == 'disabled') + disabled = true; + } + if (!disabled) + cname += 'available'; + + html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>'; + + } + html += '</tr>'; + } + + html += '</tbody>'; + html += '</table>'; + + this.container.find('.calendar.' + side + ' .calendar-table').html(html); + + }, + + renderTimePicker: function(side) { + + // Don't bother updating the time picker if it's currently disabled + // because an end date hasn't been clicked yet + if (side == 'right' && !this.endDate) return; + + var html, selected, minDate, maxDate = this.maxDate; + + if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate))) + maxDate = this.startDate.clone().add(this.dateLimit); + + if (side == 'left') { + selected = this.startDate.clone(); + minDate = this.minDate; + } else if (side == 'right') { + selected = this.endDate.clone(); + minDate = this.startDate; + + //Preserve the time already selected + var timeSelector = this.container.find('.calendar.right .calendar-time div'); + if (!this.endDate && timeSelector.html() != '') { + + selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour()); + selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute()); + selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second()); + + if (!this.timePicker24Hour) { + var ampm = timeSelector.find('.ampmselect option:selected').val(); + if (ampm === 'PM' && selected.hour() < 12) + selected.hour(selected.hour() + 12); + if (ampm === 'AM' && selected.hour() === 12) + selected.hour(0); + } + + } + + if (selected.isBefore(this.startDate)) + selected = this.startDate.clone(); + + if (maxDate && selected.isAfter(maxDate)) + selected = maxDate.clone(); + + } + + // + // hours + // + + html = '<select class="hourselect">'; + + var start = this.timePicker24Hour ? 0 : 1; + var end = this.timePicker24Hour ? 23 : 12; + + for (var i = start; i <= end; i++) { + var i_in_24 = i; + if (!this.timePicker24Hour) + i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i); + + var time = selected.clone().hour(i_in_24); + var disabled = false; + if (minDate && time.minute(59).isBefore(minDate)) + disabled = true; + if (maxDate && time.minute(0).isAfter(maxDate)) + disabled = true; + + if (i_in_24 == selected.hour() && !disabled) { + html += '<option value="' + i + '" selected="selected">' + i + '</option>'; + } else if (disabled) { + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>'; + } else { + html += '<option value="' + i + '">' + i + '</option>'; + } + } + + html += '</select> '; + + // + // minutes + // + + html += ': <select class="minuteselect">'; + + for (var i = 0; i < 60; i += this.timePickerIncrement) { + var padded = i < 10 ? '0' + i : i; + var time = selected.clone().minute(i); + + var disabled = false; + if (minDate && time.second(59).isBefore(minDate)) + disabled = true; + if (maxDate && time.second(0).isAfter(maxDate)) + disabled = true; + + if (selected.minute() == i && !disabled) { + html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; + } else if (disabled) { + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; + } else { + html += '<option value="' + i + '">' + padded + '</option>'; + } + } + + html += '</select> '; + + // + // seconds + // + + if (this.timePickerSeconds) { + html += ': <select class="secondselect">'; + + for (var i = 0; i < 60; i++) { + var padded = i < 10 ? '0' + i : i; + var time = selected.clone().second(i); + + var disabled = false; + if (minDate && time.isBefore(minDate)) + disabled = true; + if (maxDate && time.isAfter(maxDate)) + disabled = true; + + if (selected.second() == i && !disabled) { + html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; + } else if (disabled) { + html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; + } else { + html += '<option value="' + i + '">' + padded + '</option>'; + } + } + + html += '</select> '; + } + + // + // AM/PM + // + + if (!this.timePicker24Hour) { + html += '<select class="ampmselect">'; + + var am_html = ''; + var pm_html = ''; + + if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) + am_html = ' disabled="disabled" class="disabled"'; + + if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) + pm_html = ' disabled="disabled" class="disabled"'; + + if (selected.hour() >= 12) { + html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>'; + } else { + html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>'; + } + + html += '</select>'; + } + + this.container.find('.calendar.' + side + ' .calendar-time div').html(html); + + }, + + updateFormInputs: function() { + + //ignore mouse movements while an above-calendar text input has focus + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + return; + + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format)); + if (this.endDate) + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format)); + + if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { + this.container.find('button.applyBtn').removeAttr('disabled'); + } else { + this.container.find('button.applyBtn').attr('disabled', 'disabled'); + } + + }, + + move: function() { + var parentOffset = { top: 0, left: 0 }, + containerTop; + var parentRightEdge = $(window).width(); + if (!this.parentEl.is('body')) { + parentOffset = { + top: this.parentEl.offset().top - this.parentEl.scrollTop(), + left: this.parentEl.offset().left - this.parentEl.scrollLeft() + }; + parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; + } + + if (this.drops == 'up') + containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; + else + containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; + this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup'); + + if (this.opens == 'left') { + this.container.css({ + top: containerTop, + right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), + left: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else if (this.opens == 'center') { + this.container.css({ + top: containerTop, + left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 + - this.container.outerWidth() / 2, + right: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else { + this.container.css({ + top: containerTop, + left: this.element.offset().left - parentOffset.left, + right: 'auto' + }); + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { + this.container.css({ + left: 'auto', + right: 0 + }); + } + } + }, + + show: function(e) { + if (this.isShowing) return; + + // Create a click proxy that is private to this instance of datepicker, for unbinding + this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); + + // Bind global datepicker mousedown for hiding and + $(document) + .on('mousedown.daterangepicker', this._outsideClickProxy) + // also support mobile devices + .on('touchend.daterangepicker', this._outsideClickProxy) + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) + // and also close when focus changes to outside the picker (eg. tabbing between controls) + .on('focusin.daterangepicker', this._outsideClickProxy); + + // Reposition the picker if the window is resized while it's open + $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + this.previousRightTime = this.endDate.clone(); + + this.updateView(); + this.container.show(); + this.move(); + this.element.trigger('show.daterangepicker', this); + this.isShowing = true; + }, + + hide: function(e) { + if (!this.isShowing) return; + + //incomplete date selection, revert to last values + if (!this.endDate) { + this.startDate = this.oldStartDate.clone(); + this.endDate = this.oldEndDate.clone(); + } + + //if a new date range was selected, invoke the user callback function + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.callback(this.startDate, this.endDate, this.chosenLabel); + + //if picker is attached to a text input, update it + this.updateElement(); + + $(document).off('.daterangepicker'); + $(window).off('.daterangepicker'); + this.container.hide(); + this.element.trigger('hide.daterangepicker', this); + this.isShowing = false; + }, + + toggle: function(e) { + if (this.isShowing) { + this.hide(); + } else { + this.show(); + } + }, + + outsideClick: function(e) { + var target = $(e.target); + // if the page is clicked anywhere except within the daterangerpicker/button + // itself then call this.hide() + if ( + // ie modal dialog fix + e.type == "focusin" || + target.closest(this.element).length || + target.closest(this.container).length || + target.closest('.calendar-table').length + ) return; + this.hide(); + this.element.trigger('outsideClick.daterangepicker', this); + }, + + showCalendars: function() { + this.container.addClass('show-calendar'); + this.move(); + this.element.trigger('showCalendar.daterangepicker', this); + }, + + hideCalendars: function() { + this.container.removeClass('show-calendar'); + this.element.trigger('hideCalendar.daterangepicker', this); + }, + + hoverRange: function(e) { + + //ignore mouse movements while an above-calendar text input has focus + if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + return; + + var label = e.target.getAttribute('data-range-key'); + + if (label == this.locale.customRangeLabel) { + this.updateView(); + } else { + var dates = this.ranges[label]; + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format)); + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format)); + } + + }, + + clickRange: function(e) { + var label = e.target.getAttribute('data-range-key'); + this.chosenLabel = label; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.endOf('day'); + } + + if (!this.alwaysShowCalendars) + this.hideCalendars(); + this.clickApply(); + } + }, + + clickPrev: function(e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract(1, 'month'); + if (this.linkedCalendars) + this.rightCalendar.month.subtract(1, 'month'); + } else { + this.rightCalendar.month.subtract(1, 'month'); + } + this.updateCalendars(); + }, + + clickNext: function(e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add(1, 'month'); + } else { + this.rightCalendar.month.add(1, 'month'); + if (this.linkedCalendars) + this.leftCalendar.month.add(1, 'month'); + } + this.updateCalendars(); + }, + + hoverDate: function(e) { + + //ignore mouse movements while an above-calendar text input has focus + //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) + // return; + + //ignore dates that can't be selected + if (!$(e.target).hasClass('available')) return; + + //have the text inputs above calendars reflect the date being hovered over + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) { + this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format)); + } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) { + this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format)); + } + + //highlight the dates between the start date and the date being hovered as a potential end date + var leftCalendar = this.leftCalendar; + var rightCalendar = this.rightCalendar; + var startDate = this.startDate; + if (!this.endDate) { + this.container.find('.calendar td').each(function(index, el) { + + //skip week numbers, only look at dates + if ($(el).hasClass('week')) return; + + var title = $(el).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(el).parents('.calendar'); + var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; + + if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) { + $(el).addClass('in-range'); + } else { + $(el).removeClass('in-range'); + } + + }); + } + + }, + + clickDate: function(e) { + + if (!$(e.target).hasClass('available')) return; + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + + // + // this function needs to do a few things: + // * alternate between selecting a start and end date for the range, + // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date + // * if autoapply is enabled, and an end date was chosen, apply the selection + // * if single date picker mode, and time picker isn't enabled, apply the selection immediately + // * if one of the inputs above the calendars was focused, cancel that manual input + // + + if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start + if (this.timePicker) { + var hour = parseInt(this.container.find('.left .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.left .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.endDate = null; + this.setStartDate(date.clone()); + } else if (!this.endDate && date.isBefore(this.startDate)) { + //special case: clicking the same date for start/end, + //but the time of the end date is before the start date + this.setEndDate(this.startDate.clone()); + } else { // picking end + if (this.timePicker) { + var hour = parseInt(this.container.find('.right .hourselect').val(), 10); + if (!this.timePicker24Hour) { + var ampm = this.container.find('.right .ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; + date = date.clone().hour(hour).minute(minute).second(second); + } + this.setEndDate(date.clone()); + if (this.autoApply) { + this.calculateChosenLabel(); + this.clickApply(); + } + } + + if (this.singleDatePicker) { + this.setEndDate(this.startDate); + if (!this.timePicker) + this.clickApply(); + } + + this.updateView(); + + //This is to cancel the blur event handler if the mouse was in one of the inputs + e.stopPropagation(); + + }, + + calculateChosenLabel: function() { + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); + break; + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); + break; + } + } + i++; + } + if (customRange && this.showCustomRangeLabel) { + this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); + this.showCalendars(); + } + }, + + clickApply: function(e) { + this.hide(); + this.element.trigger('apply.daterangepicker', this); + }, + + clickCancel: function(e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.hide(); + this.element.trigger('cancel.daterangepicker', this); + }, + + monthOrYearChanged: function(e) { + var isLeft = $(e.target).closest('.calendar').hasClass('left'), + leftOrRight = isLeft ? 'left' : 'right', + cal = this.container.find('.calendar.'+leftOrRight); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + if (!isLeft) { + if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { + month = this.startDate.month(); + year = this.startDate.year(); + } + } + + if (this.minDate) { + if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { + month = this.minDate.month(); + year = this.minDate.year(); + } + } + + if (this.maxDate) { + if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { + month = this.maxDate.month(); + year = this.maxDate.year(); + } + } + + if (isLeft) { + this.leftCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); + } else { + this.rightCalendar.month.month(month).year(year); + if (this.linkedCalendars) + this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); + } + this.updateCalendars(); + }, + + timeChanged: function(e) { + + var cal = $(e.target).closest('.calendar'), + isLeft = cal.hasClass('left'); + + var hour = parseInt(cal.find('.hourselect').val(), 10); + var minute = parseInt(cal.find('.minuteselect').val(), 10); + var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; + + if (!this.timePicker24Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + start.second(second); + this.setStartDate(start); + if (this.singleDatePicker) { + this.endDate = this.startDate.clone(); + } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { + this.setEndDate(start.clone()); + } + } else if (this.endDate) { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + end.second(second); + this.setEndDate(end); + } + + //update the calendars so all clickable dates reflect the new time component + this.updateCalendars(); + + //update the form inputs above the calendars with the new time + this.updateFormInputs(); + + //re-render the time pickers because changing one selection can affect what's enabled in another + this.renderTimePicker('left'); + this.renderTimePicker('right'); + + }, + + formInputsChanged: function(e) { + var isRight = $(e.target).closest('.calendar').hasClass('right'); + var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format); + var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format); + + if (start.isValid() && end.isValid()) { + + if (isRight && end.isBefore(start)) + start = end.clone(); + + this.setStartDate(start); + this.setEndDate(end); + + if (isRight) { + this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format)); + } else { + this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format)); + } + + } + + this.updateView(); + }, + + formInputsFocused: function(e) { + + // Highlight the focused input + this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active'); + $(e.target).addClass('active'); + + // Set the state such that if the user goes back to using a mouse, + // the calendars are aware we're selecting the end of the range, not + // the start. This allows someone to edit the end of a date range without + // re-selecting the beginning, by clicking on the end date input then + // using the calendar. + var isRight = $(e.target).closest('.calendar').hasClass('right'); + if (isRight) { + this.endDate = null; + this.setStartDate(this.startDate.clone()); + this.updateView(); + } + + }, + + formInputsBlurred: function(e) { + + // this function has one purpose right now: if you tab from the first + // text input to the second in the UI, the endDate is nulled so that + // you can click another, but if you tab out without clicking anything + // or changing the input value, the old endDate should be retained + + if (!this.endDate) { + var val = this.container.find('input[name="daterangepicker_end"]').val(); + var end = moment(val, this.locale.format); + if (end.isValid()) { + this.setEndDate(end); + this.updateView(); + } + } + + }, + + elementChanged: function() { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + if (this.element.val().length < this.locale.format.length) return; + + var dateString = this.element.val().split(this.locale.separator), + start = null, + end = null; + + if (dateString.length === 2) { + start = moment(dateString[0], this.locale.format); + end = moment(dateString[1], this.locale.format); + } + + if (this.singleDatePicker || start === null || end === null) { + start = moment(this.element.val(), this.locale.format); + end = start; + } + + if (!start.isValid() || !end.isValid()) return; + + this.setStartDate(start); + this.setEndDate(end); + this.updateView(); + }, + + keydown: function(e) { + //hide on tab or enter + if ((e.keyCode === 9) || (e.keyCode === 13)) { + this.hide(); + } + }, + + updateElement: function() { + if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); + this.element.trigger('change'); + } else if (this.element.is('input') && this.autoUpdateInput) { + this.element.val(this.startDate.format(this.locale.format)); + this.element.trigger('change'); + } + }, + + remove: function() { + this.container.remove(); + this.element.off('.daterangepicker'); + this.element.removeData(); + } + + }; + + $.fn.daterangepicker = function(options, callback) { + this.each(function() { + var el = $(this); + if (el.data('daterangepicker')) + el.data('daterangepicker').remove(); + el.data('daterangepicker', new DateRangePicker(el, options, callback)); + }); + return this; + }; + + return DateRangePicker; + +})); diff --git a/plugins/bootstrap-daterangepicker/drp.png b/plugins/bootstrap-daterangepicker/drp.png new file mode 100644 index 0000000..f29eacd Binary files /dev/null and b/plugins/bootstrap-daterangepicker/drp.png differ diff --git a/plugins/bootstrap-filestyle/js/bootstrap-filestyle.js b/plugins/bootstrap-filestyle/js/bootstrap-filestyle.js new file mode 100644 index 0000000..e5719b1 --- /dev/null +++ b/plugins/bootstrap-filestyle/js/bootstrap-filestyle.js @@ -0,0 +1,351 @@ +/* + * bootstrap-filestyle + * doc: http://markusslima.github.io/bootstrap-filestyle/ + * github: https://github.com/markusslima/bootstrap-filestyle + * + * Copyright (c) 2014 Markus Vinicius da Silva Lima + * Version 1.2.1 + * Licensed under the MIT license. + */ +(function($) {"use strict"; + + var nextId = 0; + + var Filestyle = function(element, options) { + this.options = options; + this.$elementFilestyle = []; + this.$element = $(element); + }; + + Filestyle.prototype = { + clear : function() { + this.$element.val(''); + this.$elementFilestyle.find(':text').val(''); + this.$elementFilestyle.find('.badge').remove(); + }, + + destroy : function() { + this.$element.removeAttr('style').removeData('filestyle'); + this.$elementFilestyle.remove(); + }, + + disabled : function(value) { + if (value === true) { + if (!this.options.disabled) { + this.$element.attr('disabled', 'true'); + this.$elementFilestyle.find('label').attr('disabled', 'true'); + this.options.disabled = true; + } + } else if (value === false) { + if (this.options.disabled) { + this.$element.removeAttr('disabled'); + this.$elementFilestyle.find('label').removeAttr('disabled'); + this.options.disabled = false; + } + } else { + return this.options.disabled; + } + }, + + buttonBefore : function(value) { + if (value === true) { + if (!this.options.buttonBefore) { + this.options.buttonBefore = true; + if (this.options.input) { + this.$elementFilestyle.remove(); + this.constructor(); + this.pushNameFiles(); + } + } + } else if (value === false) { + if (this.options.buttonBefore) { + this.options.buttonBefore = false; + if (this.options.input) { + this.$elementFilestyle.remove(); + this.constructor(); + this.pushNameFiles(); + } + } + } else { + return this.options.buttonBefore; + } + }, + + icon : function(value) { + if (value === true) { + if (!this.options.icon) { + this.options.icon = true; + this.$elementFilestyle.find('label').prepend(this.htmlIcon()); + } + } else if (value === false) { + if (this.options.icon) { + this.options.icon = false; + this.$elementFilestyle.find('.icon-span-filestyle').remove(); + } + } else { + return this.options.icon; + } + }, + + input : function(value) { + if (value === true) { + if (!this.options.input) { + this.options.input = true; + + if (this.options.buttonBefore) { + this.$elementFilestyle.append(this.htmlInput()); + } else { + this.$elementFilestyle.prepend(this.htmlInput()); + } + + this.$elementFilestyle.find('.badge').remove(); + + this.pushNameFiles(); + + this.$elementFilestyle.find('.group-span-filestyle').addClass('input-group-btn'); + } + } else if (value === false) { + if (this.options.input) { + this.options.input = false; + this.$elementFilestyle.find(':text').remove(); + var files = this.pushNameFiles(); + if (files.length > 0 && this.options.badge) { + this.$elementFilestyle.find('label').append(' <span class="badge">' + files.length + '</span>'); + } + this.$elementFilestyle.find('.group-span-filestyle').removeClass('input-group-btn'); + } + } else { + return this.options.input; + } + }, + + size : function(value) { + if (value !== undefined) { + var btn = this.$elementFilestyle.find('label'), input = this.$elementFilestyle.find('input'); + + btn.removeClass('btn-lg btn-sm'); + input.removeClass('input-lg input-sm'); + if (value != 'nr') { + btn.addClass('btn-' + value); + input.addClass('input-' + value); + } + } else { + return this.options.size; + } + }, + + placeholder : function(value) { + if (value !== undefined) { + this.options.placeholder = value; + this.$elementFilestyle.find('input').attr('placeholder', value); + } else { + return this.options.placeholder; + } + }, + + buttonText : function(value) { + if (value !== undefined) { + this.options.buttonText = value; + this.$elementFilestyle.find('label .buttonText').html(this.options.buttonText); + } else { + return this.options.buttonText; + } + }, + + buttonName : function(value) { + if (value !== undefined) { + this.options.buttonName = value; + this.$elementFilestyle.find('label').attr({ + 'class' : 'btn ' + this.options.buttonName + }); + } else { + return this.options.buttonName; + } + }, + + iconName : function(value) { + if (value !== undefined) { + this.$elementFilestyle.find('.icon-span-filestyle').attr({ + 'class' : 'icon-span-filestyle ' + this.options.iconName + }); + } else { + return this.options.iconName; + } + }, + + htmlIcon : function() { + if (this.options.icon) { + return '<span class="icon-span-filestyle ' + this.options.iconName + '"></span> '; + } else { + return ''; + } + }, + + htmlInput : function() { + if (this.options.input) { + return '<input type="text" class="form-control ' + (this.options.size == 'nr' ? '' : 'input-' + this.options.size) + '" placeholder="'+ this.options.placeholder +'" disabled> '; + } else { + return ''; + } + }, + + // puts the name of the input files + // return files + pushNameFiles : function() { + var content = '', files = []; + if (this.$element[0].files === undefined) { + files[0] = { + 'name' : this.$element[0] && this.$element[0].value + }; + } else { + files = this.$element[0].files; + } + + for (var i = 0; i < files.length; i++) { + content += files[i].name.split("\\").pop() + ', '; + } + + if (content !== '') { + this.$elementFilestyle.find(':text').val(content.replace(/\, $/g, '')); + } else { + this.$elementFilestyle.find(':text').val(''); + } + + return files; + }, + + constructor : function() { + var _self = this, + html = '', + id = _self.$element.attr('id'), + files = [], + btn = '', + $label; + + if (id === '' || !id) { + id = 'filestyle-' + nextId; + _self.$element.attr({ + 'id' : id + }); + nextId++; + } + + btn = '<span class="group-span-filestyle ' + (_self.options.input ? 'input-group-btn' : '') + '">' + + '<label for="' + id + '" class="btn ' + _self.options.buttonName + ' ' + + (_self.options.size == 'nr' ? '' : 'btn-' + _self.options.size) + '" ' + + (_self.options.disabled ? 'disabled="true"' : '') + '>' + + _self.htmlIcon() + '<span class="buttonText">' + _self.options.buttonText + '</span>' + + '</label>' + + '</span>'; + + html = _self.options.buttonBefore ? btn + _self.htmlInput() : _self.htmlInput() + btn; + + _self.$elementFilestyle = $('<div class="bootstrap-filestyle input-group">' + html + '</div>'); + _self.$elementFilestyle.find('.group-span-filestyle').attr('tabindex', "0").keypress(function(e) { + if (e.keyCode === 13 || e.charCode === 32) { + _self.$elementFilestyle.find('label').click(); + return false; + } + }); + + // hidding input file and add filestyle + _self.$element.css({ + 'position' : 'absolute', + 'clip' : 'rect(0px 0px 0px 0px)' // using 0px for work in IE8 + }).attr('tabindex', "-1").after(_self.$elementFilestyle); + + if (_self.options.disabled) { + _self.$element.attr('disabled', 'true'); + } + + // Getting input file value + _self.$element.change(function() { + var files = _self.pushNameFiles(); + + if (_self.options.input == false && _self.options.badge) { + if (_self.$elementFilestyle.find('.badge').length == 0) { + _self.$elementFilestyle.find('label').append(' <span class="badge">' + files.length + '</span>'); + } else if (files.length == 0) { + _self.$elementFilestyle.find('.badge').remove(); + } else { + _self.$elementFilestyle.find('.badge').html(files.length); + } + } else { + _self.$elementFilestyle.find('.badge').remove(); + } + }); + + // Check if browser is Firefox + if (window.navigator.userAgent.search(/firefox/i) > -1) { + // Simulating choose file for firefox + _self.$elementFilestyle.find('label').click(function() { + _self.$element.click(); + return false; + }); + } + } + }; + + var old = $.fn.filestyle; + + $.fn.filestyle = function(option, value) { + var get = '', element = this.each(function() { + if ($(this).attr('type') === 'file') { + var $this = $(this), data = $this.data('filestyle'), options = $.extend({}, $.fn.filestyle.defaults, option, typeof option === 'object' && option); + + if (!data) { + $this.data('filestyle', ( data = new Filestyle(this, options))); + data.constructor(); + } + + if ( typeof option === 'string') { + get = data[option](value); + } + } + }); + + if ( typeof get !== undefined) { + return get; + } else { + return element; + } + }; + + $.fn.filestyle.defaults = { + 'buttonText' : 'Choose file', + 'iconName' : 'glyphicon glyphicon-folder-open', + 'buttonName' : 'btn-default', + 'size' : 'nr', + 'input' : true, + 'badge' : true, + 'icon' : true, + 'buttonBefore' : false, + 'disabled' : false, + 'placeholder': '' + }; + + $.fn.filestyle.noConflict = function() { + $.fn.filestyle = old; + return this; + }; + + $(function() { + $('.filestyle').each(function() { + var $this = $(this), options = { + + 'input' : $this.attr('data-input') === 'false' ? false : true, + 'icon' : $this.attr('data-icon') === 'false' ? false : true, + 'buttonBefore' : $this.attr('data-buttonBefore') === 'true' ? true : false, + 'disabled' : $this.attr('data-disabled') === 'true' ? true : false, + 'size' : $this.attr('data-size'), + 'buttonText' : $this.attr('data-buttonText'), + 'buttonName' : $this.attr('data-buttonName'), + 'iconName' : $this.attr('data-iconName'), + 'badge' : $this.attr('data-badge') === 'false' ? false : true, + 'placeholder': $this.attr('data-placeholder') + }; + + $this.filestyle(options); + }); + }); +})(window.jQuery); diff --git a/plugins/bootstrap-filestyle/js/bootstrap-filestyle.min.js b/plugins/bootstrap-filestyle/js/bootstrap-filestyle.min.js new file mode 100644 index 0000000..9885a1d --- /dev/null +++ b/plugins/bootstrap-filestyle/js/bootstrap-filestyle.min.js @@ -0,0 +1 @@ +(function($){var nextId=0;var Filestyle=function(element,options){this.options=options;this.$elementFilestyle=[];this.$element=$(element)};Filestyle.prototype={clear:function(){this.$element.val("");this.$elementFilestyle.find(":text").val("");this.$elementFilestyle.find(".badge").remove()},destroy:function(){this.$element.removeAttr("style").removeData("filestyle");this.$elementFilestyle.remove()},disabled:function(value){if(value===true){if(!this.options.disabled){this.$element.attr("disabled","true");this.$elementFilestyle.find("label").attr("disabled","true");this.options.disabled=true}}else{if(value===false){if(this.options.disabled){this.$element.removeAttr("disabled");this.$elementFilestyle.find("label").removeAttr("disabled");this.options.disabled=false}}else{return this.options.disabled}}},buttonBefore:function(value){if(value===true){if(!this.options.buttonBefore){this.options.buttonBefore=true;if(this.options.input){this.$elementFilestyle.remove();this.constructor();this.pushNameFiles()}}}else{if(value===false){if(this.options.buttonBefore){this.options.buttonBefore=false;if(this.options.input){this.$elementFilestyle.remove();this.constructor();this.pushNameFiles()}}}else{return this.options.buttonBefore}}},icon:function(value){if(value===true){if(!this.options.icon){this.options.icon=true;this.$elementFilestyle.find("label").prepend(this.htmlIcon())}}else{if(value===false){if(this.options.icon){this.options.icon=false;this.$elementFilestyle.find(".icon-span-filestyle").remove()}}else{return this.options.icon}}},input:function(value){if(value===true){if(!this.options.input){this.options.input=true;if(this.options.buttonBefore){this.$elementFilestyle.append(this.htmlInput())}else{this.$elementFilestyle.prepend(this.htmlInput())}this.$elementFilestyle.find(".badge").remove();this.pushNameFiles();this.$elementFilestyle.find(".group-span-filestyle").addClass("input-group-btn")}}else{if(value===false){if(this.options.input){this.options.input=false;this.$elementFilestyle.find(":text").remove();var files=this.pushNameFiles();if(files.length>0&&this.options.badge){this.$elementFilestyle.find("label").append(' <span class="badge">'+files.length+"</span>")}this.$elementFilestyle.find(".group-span-filestyle").removeClass("input-group-btn")}}else{return this.options.input}}},size:function(value){if(value!==undefined){var btn=this.$elementFilestyle.find("label"),input=this.$elementFilestyle.find("input");btn.removeClass("btn-lg btn-sm");input.removeClass("input-lg input-sm");if(value!="nr"){btn.addClass("btn-"+value);input.addClass("input-"+value)}}else{return this.options.size}},placeholder:function(value){if(value!==undefined){this.options.placeholder=value;this.$elementFilestyle.find("input").attr("placeholder",value)}else{return this.options.placeholder}},buttonText:function(value){if(value!==undefined){this.options.buttonText=value;this.$elementFilestyle.find("label .buttonText").html(this.options.buttonText)}else{return this.options.buttonText}},buttonName:function(value){if(value!==undefined){this.options.buttonName=value;this.$elementFilestyle.find("label").attr({"class":"btn "+this.options.buttonName})}else{return this.options.buttonName}},iconName:function(value){if(value!==undefined){this.$elementFilestyle.find(".icon-span-filestyle").attr({"class":"icon-span-filestyle "+this.options.iconName})}else{return this.options.iconName}},htmlIcon:function(){if(this.options.icon){return'<span class="icon-span-filestyle '+this.options.iconName+'"></span> '}else{return""}},htmlInput:function(){if(this.options.input){return'<input type="text" class="form-control '+(this.options.size=="nr"?"":"input-"+this.options.size)+'" placeholder="'+this.options.placeholder+'" disabled> '}else{return""}},pushNameFiles:function(){var content="",files=[];if(this.$element[0].files===undefined){files[0]={name:this.$element[0]&&this.$element[0].value}}else{files=this.$element[0].files}for(var i=0;i<files.length;i++){content+=files[i].name.split("\\").pop()+", "}if(content!==""){this.$elementFilestyle.find(":text").val(content.replace(/\, $/g,""))}else{this.$elementFilestyle.find(":text").val("")}return files},constructor:function(){var _self=this,html="",id=_self.$element.attr("id"),files=[],btn="",$label;if(id===""||!id){id="filestyle-"+nextId;_self.$element.attr({id:id});nextId++}btn='<span class="group-span-filestyle '+(_self.options.input?"input-group-btn":"")+'"><label for="'+id+'" class="btn '+_self.options.buttonName+" "+(_self.options.size=="nr"?"":"btn-"+_self.options.size)+'" '+(_self.options.disabled?'disabled="true"':"")+">"+_self.htmlIcon()+'<span class="buttonText">'+_self.options.buttonText+"</span></label></span>";html=_self.options.buttonBefore?btn+_self.htmlInput():_self.htmlInput()+btn;_self.$elementFilestyle=$('<div class="bootstrap-filestyle input-group">'+html+"</div>");_self.$elementFilestyle.find(".group-span-filestyle").attr("tabindex","0").keypress(function(e){if(e.keyCode===13||e.charCode===32){_self.$elementFilestyle.find("label").click();return false}});_self.$element.css({position:"absolute",clip:"rect(0px 0px 0px 0px)"}).attr("tabindex","-1").after(_self.$elementFilestyle);if(_self.options.disabled){_self.$element.attr("disabled","true")}_self.$element.change(function(){var files=_self.pushNameFiles();if(_self.options.input==false&&_self.options.badge){if(_self.$elementFilestyle.find(".badge").length==0){_self.$elementFilestyle.find("label").append(' <span class="badge">'+files.length+"</span>")}else{if(files.length==0){_self.$elementFilestyle.find(".badge").remove()}else{_self.$elementFilestyle.find(".badge").html(files.length)}}}else{_self.$elementFilestyle.find(".badge").remove()}});if(window.navigator.userAgent.search(/firefox/i)>-1){_self.$elementFilestyle.find("label").click(function(){_self.$element.click();return false})}}};var old=$.fn.filestyle;$.fn.filestyle=function(option,value){var get="",element=this.each(function(){if($(this).attr("type")==="file"){var $this=$(this),data=$this.data("filestyle"),options=$.extend({},$.fn.filestyle.defaults,option,typeof option==="object"&&option);if(!data){$this.data("filestyle",(data=new Filestyle(this,options)));data.constructor()}if(typeof option==="string"){get=data[option](value)}}});if(typeof get!==undefined){return get}else{return element}};$.fn.filestyle.defaults={buttonText:"Choose file",iconName:"glyphicon glyphicon-folder-open",buttonName:"btn-default",size:"nr",input:true,badge:true,icon:true,buttonBefore:false,disabled:false,placeholder:""};$.fn.filestyle.noConflict=function(){$.fn.filestyle=old;return this};$(function(){$(".filestyle").each(function(){var $this=$(this),options={input:$this.attr("data-input")==="false"?false:true,icon:$this.attr("data-icon")==="false"?false:true,buttonBefore:$this.attr("data-buttonBefore")==="true"?true:false,disabled:$this.attr("data-disabled")==="true"?true:false,size:$this.attr("data-size"),buttonText:$this.attr("data-buttonText"),buttonName:$this.attr("data-buttonName"),iconName:$this.attr("data-iconName"),badge:$this.attr("data-badge")==="false"?false:true,placeholder:$this.attr("data-placeholder")};$this.filestyle(options)})})})(window.jQuery); \ No newline at end of file diff --git a/plugins/bootstrap-inputmask/bootstrap-inputmask.min.js b/plugins/bootstrap-inputmask/bootstrap-inputmask.min.js new file mode 100644 index 0000000..5882046 --- /dev/null +++ b/plugins/bootstrap-inputmask/bootstrap-inputmask.min.js @@ -0,0 +1,7 @@ +/** +* Bootstrap.js by @mdo and @fat, extended by @ArnoldDaniels. +* plugins: bootstrap-inputmask.js +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(e){var t=window.orientation!==undefined,n=navigator.userAgent.toLowerCase().indexOf("android")>-1,r=function(t,r){if(n)return;this.$element=e(t),this.options=e.extend({},e.fn.inputmask.defaults,r),this.mask=String(r.mask),this.init(),this.listen(),this.checkVal()};r.prototype={init:function(){var t=this.options.definitions,n=this.mask.length;this.tests=[],this.partialPosition=this.mask.length,this.firstNonMaskPos=null,e.each(this.mask.split(""),e.proxy(function(e,r){r=="?"?(n--,this.partialPosition=e):t[r]?(this.tests.push(new RegExp(t[r])),this.firstNonMaskPos===null&&(this.firstNonMaskPos=this.tests.length-1)):this.tests.push(null)},this)),this.buffer=e.map(this.mask.split(""),e.proxy(function(e,n){if(e!="?")return t[e]?this.options.placeholder:e},this)),this.focusText=this.$element.val(),this.$element.data("rawMaskFn",e.proxy(function(){return e.map(this.buffer,function(e,t){return this.tests[t]&&e!=this.options.placeholder?e:null}).join("")},this))},listen:function(){if(this.$element.attr("readonly"))return;var t=(navigator.userAgent.match(/msie/i)?"paste":"input")+".mask";this.$element.on("unmask",e.proxy(this.unmask,this)).on("focus.mask",e.proxy(this.focusEvent,this)).on("blur.mask",e.proxy(this.blurEvent,this)).on("keydown.mask",e.proxy(this.keydownEvent,this)).on("keypress.mask",e.proxy(this.keypressEvent,this)).on(t,e.proxy(this.pasteEvent,this))},caret:function(e,t){if(this.$element.length===0)return;if(typeof e=="number")return t=typeof t=="number"?t:e,this.$element.each(function(){if(this.setSelectionRange)this.setSelectionRange(e,t);else if(this.createTextRange){var n=this.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",e),n.select()}});if(this.$element[0].setSelectionRange)e=this.$element[0].selectionStart,t=this.$element[0].selectionEnd;else if(document.selection&&document.selection.createRange){var n=document.selection.createRange();e=0-n.duplicate().moveStart("character",-1e5),t=e+n.text.length}return{begin:e,end:t}},seekNext:function(e){var t=this.mask.length;while(++e<=t&&!this.tests[e]);return e},seekPrev:function(e){while(--e>=0&&!this.tests[e]);return e},shiftL:function(e,t){var n=this.mask.length;if(e<0)return;for(var r=e,i=this.seekNext(t);r<n;r++)if(this.tests[r]){if(!(i<n&&this.tests[r].test(this.buffer[i])))break;this.buffer[r]=this.buffer[i],this.buffer[i]=this.options.placeholder,i=this.seekNext(i)}this.writeBuffer(),this.caret(Math.max(this.firstNonMaskPos,e))},shiftR:function(e){var t=this.mask.length;for(var n=e,r=this.options.placeholder;n<t;n++)if(this.tests[n]){var i=this.seekNext(n),s=this.buffer[n];this.buffer[n]=r;if(!(i<t&&this.tests[i].test(s)))break;r=s}},unmask:function(){this.$element.unbind(".mask").removeData("inputmask")},focusEvent:function(){this.focusText=this.$element.val();var t=this.mask.length,n=this.checkVal();this.writeBuffer();var r=this,i=function(){n==t?r.caret(0,n):r.caret(n)};e.browser.msie?i():setTimeout(i,0)},blurEvent:function(){this.checkVal(),this.$element.val()!=this.focusText&&this.$element.trigger("change")},keydownEvent:function(e){var n=e.which;if(n==8||n==46||t&&n==127){var r=this.caret(),i=r.begin,s=r.end;return s-i===0&&(i=n!=46?this.seekPrev(i):s=this.seekNext(i-1),s=n==46?this.seekNext(s):s),this.clearBuffer(i,s),this.shiftL(i,s-1),!1}if(n==27)return this.$element.val(this.focusText),this.caret(0,this.checkVal()),!1},keypressEvent:function(e){var t=this.mask.length,n=e.which,r=this.caret();if(e.ctrlKey||e.altKey||e.metaKey||n<32)return!0;if(n){r.end-r.begin!==0&&(this.clearBuffer(r.begin,r.end),this.shiftL(r.begin,r.end-1));var i=this.seekNext(r.begin-1);if(i<t){var s=String.fromCharCode(n);if(this.tests[i].test(s)){this.shiftR(i),this.buffer[i]=s,this.writeBuffer();var o=this.seekNext(i);this.caret(o)}}return!1}},pasteEvent:function(){var e=this;setTimeout(function(){e.caret(e.checkVal(!0))},0)},clearBuffer:function(e,t){var n=this.mask.length;for(var r=e;r<t&&r<n;r++)this.tests[r]&&(this.buffer[r]=this.options.placeholder)},writeBuffer:function(){return this.$element.val(this.buffer.join("")).val()},checkVal:function(e){var t=this.mask.length,n=this.$element.val(),r=-1;for(var i=0,s=0;i<t;i++)if(this.tests[i]){this.buffer[i]=this.options.placeholder;while(s++<n.length){var o=n.charAt(s-1);if(this.tests[i].test(o)){this.buffer[i]=o,r=i;break}}if(s>n.length)break}else this.buffer[i]==n.charAt(s)&&i!=this.partialPosition&&(s++,r=i);if(!e&&r+1<this.partialPosition)this.$element.val(""),this.clearBuffer(0,t);else if(e||r+1>=this.partialPosition)this.writeBuffer(),e||this.$element.val(this.$element.val().substring(0,r+1));return this.partialPosition?i:this.firstNonMaskPos}},e.fn.inputmask=function(t){return this.each(function(){var n=e(this),i=n.data("inputmask");i||n.data("inputmask",i=new r(this,t))})},e.fn.inputmask.defaults={mask:"",placeholder:"_",definitions:{9:"[0-9]",a:"[A-Za-z]","?":"[A-Za-z0-9]","*":"."}},e.fn.inputmask.Constructor=r,e(document).on("focus.inputmask.data-api","[data-mask]",function(t){var n=e(this);if(n.data("inputmask"))return;t.preventDefault(),n.inputmask(n.data())})}(window.jQuery) \ No newline at end of file diff --git a/plugins/bootstrap-maxlength/bootstrap-maxlength.js b/plugins/bootstrap-maxlength/bootstrap-maxlength.js new file mode 100644 index 0000000..aa8d062 --- /dev/null +++ b/plugins/bootstrap-maxlength/bootstrap-maxlength.js @@ -0,0 +1,501 @@ +(function ($) { + 'use strict'; + /** + * We need an event when the elements are destroyed + * because if an input is removed, we have to remove the + * maxlength object associated (if any). + * From: + * http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom + */ + if (!$.event.special.destroyed) { + $.event.special.destroyed = { + remove: function (o) { + if (o.handler) { + o.handler(); + } + } + }; + } + + + $.fn.extend({ + maxlength: function (options, callback) { + var documentBody = $('body'), + defaults = { + showOnReady: false, // true to always show when indicator is ready + alwaysShow: false, // if true the indicator it's always shown. + threshold: 10, // Represents how many chars left are needed to show up the counter + warningClass: 'label label-success', + limitReachedClass: 'label label-important label-danger', + separator: ' / ', + preText: '', + postText: '', + showMaxLength: true, + placement: 'bottom', + message: null, // an alternative way to provide the message text + showCharsTyped: true, // show the number of characters typed and not the number of characters remaining + validate: false, // if the browser doesn't support the maxlength attribute, attempt to type more than + // the indicated chars, will be prevented. + utf8: false, // counts using bytesize rather than length. eg: '£' is counted as 2 characters. + appendToParent: false, // append the indicator to the input field's parent instead of body + twoCharLinebreak: true, // count linebreak as 2 characters to match IE/Chrome textarea validation. As well as DB storage. + allowOverMax: false // false = use maxlength attribute and browswer functionality. + // true = removes maxlength attribute and replaces with 'data-bs-mxl'. + // Form submit validation is handled on your own. when maxlength has been exceeded 'overmax' class added to element + }; + + if ($.isFunction(options) && !callback) { + callback = options; + options = {}; + } + options = $.extend(defaults, options); + + /** + * Return the length of the specified input. + * + * @param input + * @return {number} + */ + function inputLength(input) { + var text = input.val(); + + if (options.twoCharLinebreak) { + // Count all line breaks as 2 characters + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + } else { + // Remove all double-character (\r\n) linebreaks, so they're counted only once. + text = text.replace(new RegExp('\r?\n', 'g'), '\n'); + } + + var currentLength = 0; + + if (options.utf8) { + currentLength = utf8Length(text); + } else { + currentLength = text.length; + } + return currentLength; + } + + /** + * Truncate the text of the specified input. + * + * @param input + * @param limit + */ + function truncateChars(input, maxlength) { + var text = input.val(); + var newlines = 0; + + if (options.twoCharLinebreak) { + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + + if (text.substr(text.length - 1) === '\n' && text.length % 2 === 1) { + newlines = 1; + } + } + + input.val(text.substr(0, maxlength - newlines)); + } + + /** + * Return the length of the specified input in UTF8 encoding. + * + * @param input + * @return {number} + */ + function utf8Length(string) { + var utf8length = 0; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utf8length++; + } + else if ((c > 127) && (c < 2048)) { + utf8length = utf8length + 2; + } + else { + utf8length = utf8length + 3; + } + } + return utf8length; + } + + /** + * Return true if the indicator should be showing up. + * + * @param input + * @param thereshold + * @param maxlength + * @return {number} + */ + function charsLeftThreshold(input, thereshold, maxlength) { + var output = true; + if (!options.alwaysShow && (maxlength - inputLength(input) > thereshold)) { + output = false; + } + return output; + } + + /** + * Returns how many chars are left to complete the fill up of the form. + * + * @param input + * @param maxlength + * @return {number} + */ + function remainingChars(input, maxlength) { + var length = maxlength - inputLength(input); + return length; + } + + /** + * When called displays the indicator. + * + * @param indicator + */ + function showRemaining(currentInput, indicator) { + indicator.css({ + display: 'block' + }); + currentInput.trigger('maxlength.shown'); + } + + /** + * When called shows the indicator. + * + * @param indicator + */ + function hideRemaining(currentInput, indicator) { + indicator.css({ + display: 'none' + }); + currentInput.trigger('maxlength.hidden'); + } + + /** + * This function updates the value in the indicator + * + * @param maxLengthThisInput + * @param typedChars + * @return String + */ + function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typedChars) { + var output = ''; + if (options.message) { + if (typeof options.message === 'function') { + output = options.message(currentInputText, maxLengthThisInput); + } else { + output = options.message.replace('%charsTyped%', typedChars) + .replace('%charsRemaining%', maxLengthThisInput - typedChars) + .replace('%charsTotal%', maxLengthThisInput); + } + } else { + if (options.preText) { + output += options.preText; + } + if (!options.showCharsTyped) { + output += maxLengthThisInput - typedChars; + } + else { + output += typedChars; + } + if (options.showMaxLength) { + output += options.separator + maxLengthThisInput; + } + if (options.postText) { + output += options.postText; + } + } + return output; + } + + /** + * This function updates the value of the counter in the indicator. + * Wants as parameters: the number of remaining chars, the element currently managed, + * the maxLength for the current input and the indicator generated for it. + * + * @param remaining + * @param currentInput + * @param maxLengthCurrentInput + * @param maxLengthIndicator + */ + function manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator) { + if (maxLengthIndicator) { + maxLengthIndicator.html(updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, (maxLengthCurrentInput - remaining))); + + if (remaining > 0) { + if (charsLeftThreshold(currentInput, options.threshold, maxLengthCurrentInput)) { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.limitReachedClass).addClass(options.warningClass)); + } else { + hideRemaining(currentInput, maxLengthIndicator); + } + } else { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass).addClass(options.limitReachedClass)); + } + } + + if (options.allowOverMax) { + // class to use for form validation on custom maxlength attribute + if (remaining < 0) { + currentInput.addClass('overmax'); + } else { + currentInput.removeClass('overmax'); + } + } + } + + /** + * This function returns an object containing all the + * informations about the position of the current input + * + * @param currentInput + * @return object {bottom height left right top width} + * + */ + function getPosition(currentInput) { + var el = currentInput[0]; + return $.extend({}, (typeof el.getBoundingClientRect === 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth, + height: el.offsetHeight + }, currentInput.offset()); + } + + /** + * This function places the maxLengthIndicator at the + * top / bottom / left / right of the currentInput + * + * @param currentInput + * @param maxLengthIndicator + * @return null + * + */ + function place(currentInput, maxLengthIndicator) { + var pos = getPosition(currentInput); + + // Supports custom placement handler + if ($.type(options.placement) === 'function'){ + options.placement(currentInput, maxLengthIndicator, pos); + return; + } + + // Supports custom placement via css positional properties + if ($.isPlainObject(options.placement)){ + placeWithCSS(options.placement, maxLengthIndicator); + return; + } + + var inputOuter = currentInput.outerWidth(), + outerWidth = maxLengthIndicator.outerWidth(), + actualWidth = maxLengthIndicator.width(), + actualHeight = maxLengthIndicator.height(); + + // get the right position if the indicator is appended to the input's parent + if (options.appendToParent) { + pos.top -= currentInput.parent().offset().top; + pos.left -= currentInput.parent().offset().left; + } + + switch (options.placement) { + case 'bottom': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'top': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'left': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth }); + break; + case 'right': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }); + break; + case 'bottom-right': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width }); + break; + case 'top-right': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter }); + break; + case 'top-left': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left - outerWidth }); + break; + case 'bottom-left': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left - outerWidth }); + break; + case 'centered-right': + maxLengthIndicator.css({ top: pos.top + (actualHeight / 2), left: pos.left + inputOuter - outerWidth - 3 }); + break; + + // Some more options for placements + case 'bottom-right-inside': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width - outerWidth }); + break; + case 'top-right-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter - outerWidth }); + break; + case 'top-left-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left }); + break; + case 'bottom-left-inside': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left }); + break; + } + } + + /** + * This function places the maxLengthIndicator based on placement config object. + * + * @param {object} placement + * @param {$} maxLengthIndicator + * @return null + * + */ + function placeWithCSS(placement, maxLengthIndicator) { + if (!placement || !maxLengthIndicator){ + return; + } + + var POSITION_KEYS = [ + 'top', + 'bottom', + 'left', + 'right', + 'position' + ]; + + var cssPos = {}; + + // filter css properties to position + $.each(POSITION_KEYS, function (i, key) { + var val = options.placement[key]; + if (typeof val !== 'undefined'){ + cssPos[key] = val; + } + }); + + maxLengthIndicator.css(cssPos); + + return; + } + + /** + * This function retrieves the maximum length of currentInput + * + * @param currentInput + * @return {number} + * + */ + function getMaxLength(currentInput) { + var attr = 'maxlength'; + if (options.allowOverMax) { + attr = 'data-bs-mxl'; + } + return currentInput.attr(attr) || currentInput.attr('size'); + } + + return this.each(function () { + + var currentInput = $(this), + maxLengthCurrentInput, + maxLengthIndicator; + + $(window).resize(function () { + if (maxLengthIndicator) { + place(currentInput, maxLengthIndicator); + } + }); + + if (options.allowOverMax) { + $(this).attr('data-bs-mxl', $(this).attr('maxlength')); + $(this).removeAttr('maxlength'); + } + + function firstInit() { + var maxlengthContent = updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, '0'); + maxLengthCurrentInput = getMaxLength(currentInput); + + if (!maxLengthIndicator) { + maxLengthIndicator = $('<span class="bootstrap-maxlength"></span>').css({ + display: 'none', + position: 'absolute', + whiteSpace: 'nowrap', + zIndex: 1099 + }).html(maxlengthContent); + } + + // We need to detect resizes if we are dealing with a textarea: + if (currentInput.is('textarea')) { + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + + currentInput.mouseup(function () { + if (currentInput.outerWidth() !== currentInput.data('maxlenghtsizex') || currentInput.outerHeight() !== currentInput.data('maxlenghtsizey')) { + place(currentInput, maxLengthIndicator); + } + + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + }); + } + + if (options.appendToParent) { + currentInput.parent().append(maxLengthIndicator); + currentInput.parent().css('position', 'relative'); + } else { + documentBody.append(maxLengthIndicator); + } + + var remaining = remainingChars(currentInput, getMaxLength(currentInput)); + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + place(currentInput, maxLengthIndicator); + } + + if (options.showOnReady) { + currentInput.ready(function () { + firstInit(); + }); + } else { + currentInput.focus(function () { + firstInit(); + }); + } + + currentInput.on('maxlength.reposition', function () { + place(currentInput, maxLengthIndicator); + }); + + + currentInput.on('destroyed', function () { + if (maxLengthIndicator) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('blur', function () { + if (maxLengthIndicator && !options.showOnReady) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('input', function () { + var maxlength = getMaxLength(currentInput), + remaining = remainingChars(currentInput, maxlength), + output = true; + + if (options.validate && remaining < 0) { + truncateChars(currentInput, maxlength); + output = false; + } else { + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + } + + //reposition the indicator if placement "bottom-right-inside" & "top-right-inside" is used + if (options.placement === 'bottom-right-inside' || options.placement === 'top-right-inside') { + place(currentInput, maxLengthIndicator); + } + + return output; + }); + }); + } + }); +}(jQuery)); diff --git a/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js b/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js new file mode 100644 index 0000000..4bb29c2 --- /dev/null +++ b/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js @@ -0,0 +1,10 @@ +/* ========================================================== + * + * bootstrap-maxlength.js v 1.6.0 + * Copyright 2015 Maurizio Napoleoni @mimonap + * Licensed under MIT License + * URL: https://github.com/mimo84/bootstrap-maxlength/blob/master/LICENSE + * + * ========================================================== */ + +!function(a){"use strict";a.event.special.destroyed||(a.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}),a.fn.extend({maxlength:function(b,c){function d(a){var c=a.val();c=b.twoCharLinebreak?c.replace(/\r(?!\n)|\n(?!\r)/g,"\r\n"):c.replace(new RegExp("\r?\n","g"),"\n");var d=0;return d=b.utf8?f(c):c.length}function e(a,c){var d=a.val(),e=0;b.twoCharLinebreak&&(d=d.replace(/\r(?!\n)|\n(?!\r)/g,"\r\n"),"\n"===d.substr(d.length-1)&&d.length%2===1&&(e=1)),a.val(d.substr(0,c-e))}function f(a){for(var b=0,c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b++:b+=d>127&&2048>d?2:3}return b}function g(a,c,e){var f=!0;return!b.alwaysShow&&e-d(a)>c&&(f=!1),f}function h(a,b){var c=b-d(a);return c}function i(a,b){b.css({display:"block"}),a.trigger("maxlength.shown")}function j(a,b){b.css({display:"none"}),a.trigger("maxlength.hidden")}function k(a,c,d){var e="";return b.message?e="function"==typeof b.message?b.message(a,c):b.message.replace("%charsTyped%",d).replace("%charsRemaining%",c-d).replace("%charsTotal%",c):(b.preText&&(e+=b.preText),e+=b.showCharsTyped?d:c-d,b.showMaxLength&&(e+=b.separator+c),b.postText&&(e+=b.postText)),e}function l(a,c,d,e){e&&(e.html(k(c.val(),d,d-a)),a>0?g(c,b.threshold,d)?i(c,e.removeClass(b.limitReachedClass).addClass(b.warningClass)):j(c,e):i(c,e.removeClass(b.warningClass).addClass(b.limitReachedClass))),b.allowOverMax&&(0>a?c.addClass("overmax"):c.removeClass("overmax"))}function m(b){var c=b[0];return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():{width:c.offsetWidth,height:c.offsetHeight},b.offset())}function n(c,d){var e=m(c);if("function"===a.type(b.placement))return void b.placement(c,d,e);if(a.isPlainObject(b.placement))return void o(b.placement,d);var f=c.outerWidth(),g=d.outerWidth(),h=d.width(),i=d.height();switch(b.appendToParent&&(e.top-=c.parent().offset().top,e.left-=c.parent().offset().left),b.placement){case"bottom":d.css({top:e.top+e.height,left:e.left+e.width/2-h/2});break;case"top":d.css({top:e.top-i,left:e.left+e.width/2-h/2});break;case"left":d.css({top:e.top+e.height/2-i/2,left:e.left-h});break;case"right":d.css({top:e.top+e.height/2-i/2,left:e.left+e.width});break;case"bottom-right":d.css({top:e.top+e.height,left:e.left+e.width});break;case"top-right":d.css({top:e.top-i,left:e.left+f});break;case"top-left":d.css({top:e.top-i,left:e.left-g});break;case"bottom-left":d.css({top:e.top+c.outerHeight(),left:e.left-g});break;case"centered-right":d.css({top:e.top+i/2,left:e.left+f-g-3});break;case"bottom-right-inside":d.css({top:e.top+e.height,left:e.left+e.width-g});break;case"top-right-inside":d.css({top:e.top-i,left:e.left+f-g});break;case"top-left-inside":d.css({top:e.top-i,left:e.left});break;case"bottom-left-inside":d.css({top:e.top+c.outerHeight(),left:e.left})}}function o(c,d){if(c&&d){var e=["top","bottom","left","right","position"],f={};a.each(e,function(a,c){var d=b.placement[c];"undefined"!=typeof d&&(f[c]=d)}),d.css(f)}}function p(a){var c="maxlength";return b.allowOverMax&&(c="data-bs-mxl"),a.attr(c)||a.attr("size")}var q=a("body"),r={showOnReady:!1,alwaysShow:!1,threshold:10,warningClass:"label label-success",limitReachedClass:"label label-important label-danger",separator:" / ",preText:"",postText:"",showMaxLength:!0,placement:"bottom",message:null,showCharsTyped:!0,validate:!1,utf8:!1,appendToParent:!1,twoCharLinebreak:!0,allowOverMax:!1};return a.isFunction(b)&&!c&&(c=b,b={}),b=a.extend(r,b),this.each(function(){function c(){var c=k(g.val(),d,"0");d=p(g),f||(f=a('<span class="bootstrap-maxlength"></span>').css({display:"none",position:"absolute",whiteSpace:"nowrap",zIndex:1099}).html(c)),g.is("textarea")&&(g.data("maxlenghtsizex",g.outerWidth()),g.data("maxlenghtsizey",g.outerHeight()),g.mouseup(function(){(g.outerWidth()!==g.data("maxlenghtsizex")||g.outerHeight()!==g.data("maxlenghtsizey"))&&n(g,f),g.data("maxlenghtsizex",g.outerWidth()),g.data("maxlenghtsizey",g.outerHeight())})),b.appendToParent?(g.parent().append(f),g.parent().css("position","relative")):q.append(f);var e=h(g,p(g));l(e,g,d,f),n(g,f)}var d,f,g=a(this);a(window).resize(function(){f&&n(g,f)}),b.allowOverMax&&(a(this).attr("data-bs-mxl",a(this).attr("maxlength")),a(this).removeAttr("maxlength")),b.showOnReady?g.ready(function(){c()}):g.focus(function(){c()}),g.on("maxlength.reposition",function(){n(g,f)}),g.on("destroyed",function(){f&&f.remove()}),g.on("blur",function(){f&&!b.showOnReady&&f.remove()}),g.on("input",function(){var a=p(g),c=h(g,a),i=!0;return b.validate&&0>c?(e(g,a),i=!1):l(c,g,d,f),("bottom-right-inside"===b.placement||"top-right-inside"===b.placement)&&n(g,f),i})})}})}(jQuery); \ No newline at end of file diff --git a/plugins/bootstrap-maxlength/src/bootstrap-maxlength.js b/plugins/bootstrap-maxlength/src/bootstrap-maxlength.js new file mode 100644 index 0000000..aa8d062 --- /dev/null +++ b/plugins/bootstrap-maxlength/src/bootstrap-maxlength.js @@ -0,0 +1,501 @@ +(function ($) { + 'use strict'; + /** + * We need an event when the elements are destroyed + * because if an input is removed, we have to remove the + * maxlength object associated (if any). + * From: + * http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom + */ + if (!$.event.special.destroyed) { + $.event.special.destroyed = { + remove: function (o) { + if (o.handler) { + o.handler(); + } + } + }; + } + + + $.fn.extend({ + maxlength: function (options, callback) { + var documentBody = $('body'), + defaults = { + showOnReady: false, // true to always show when indicator is ready + alwaysShow: false, // if true the indicator it's always shown. + threshold: 10, // Represents how many chars left are needed to show up the counter + warningClass: 'label label-success', + limitReachedClass: 'label label-important label-danger', + separator: ' / ', + preText: '', + postText: '', + showMaxLength: true, + placement: 'bottom', + message: null, // an alternative way to provide the message text + showCharsTyped: true, // show the number of characters typed and not the number of characters remaining + validate: false, // if the browser doesn't support the maxlength attribute, attempt to type more than + // the indicated chars, will be prevented. + utf8: false, // counts using bytesize rather than length. eg: '£' is counted as 2 characters. + appendToParent: false, // append the indicator to the input field's parent instead of body + twoCharLinebreak: true, // count linebreak as 2 characters to match IE/Chrome textarea validation. As well as DB storage. + allowOverMax: false // false = use maxlength attribute and browswer functionality. + // true = removes maxlength attribute and replaces with 'data-bs-mxl'. + // Form submit validation is handled on your own. when maxlength has been exceeded 'overmax' class added to element + }; + + if ($.isFunction(options) && !callback) { + callback = options; + options = {}; + } + options = $.extend(defaults, options); + + /** + * Return the length of the specified input. + * + * @param input + * @return {number} + */ + function inputLength(input) { + var text = input.val(); + + if (options.twoCharLinebreak) { + // Count all line breaks as 2 characters + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + } else { + // Remove all double-character (\r\n) linebreaks, so they're counted only once. + text = text.replace(new RegExp('\r?\n', 'g'), '\n'); + } + + var currentLength = 0; + + if (options.utf8) { + currentLength = utf8Length(text); + } else { + currentLength = text.length; + } + return currentLength; + } + + /** + * Truncate the text of the specified input. + * + * @param input + * @param limit + */ + function truncateChars(input, maxlength) { + var text = input.val(); + var newlines = 0; + + if (options.twoCharLinebreak) { + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + + if (text.substr(text.length - 1) === '\n' && text.length % 2 === 1) { + newlines = 1; + } + } + + input.val(text.substr(0, maxlength - newlines)); + } + + /** + * Return the length of the specified input in UTF8 encoding. + * + * @param input + * @return {number} + */ + function utf8Length(string) { + var utf8length = 0; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utf8length++; + } + else if ((c > 127) && (c < 2048)) { + utf8length = utf8length + 2; + } + else { + utf8length = utf8length + 3; + } + } + return utf8length; + } + + /** + * Return true if the indicator should be showing up. + * + * @param input + * @param thereshold + * @param maxlength + * @return {number} + */ + function charsLeftThreshold(input, thereshold, maxlength) { + var output = true; + if (!options.alwaysShow && (maxlength - inputLength(input) > thereshold)) { + output = false; + } + return output; + } + + /** + * Returns how many chars are left to complete the fill up of the form. + * + * @param input + * @param maxlength + * @return {number} + */ + function remainingChars(input, maxlength) { + var length = maxlength - inputLength(input); + return length; + } + + /** + * When called displays the indicator. + * + * @param indicator + */ + function showRemaining(currentInput, indicator) { + indicator.css({ + display: 'block' + }); + currentInput.trigger('maxlength.shown'); + } + + /** + * When called shows the indicator. + * + * @param indicator + */ + function hideRemaining(currentInput, indicator) { + indicator.css({ + display: 'none' + }); + currentInput.trigger('maxlength.hidden'); + } + + /** + * This function updates the value in the indicator + * + * @param maxLengthThisInput + * @param typedChars + * @return String + */ + function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typedChars) { + var output = ''; + if (options.message) { + if (typeof options.message === 'function') { + output = options.message(currentInputText, maxLengthThisInput); + } else { + output = options.message.replace('%charsTyped%', typedChars) + .replace('%charsRemaining%', maxLengthThisInput - typedChars) + .replace('%charsTotal%', maxLengthThisInput); + } + } else { + if (options.preText) { + output += options.preText; + } + if (!options.showCharsTyped) { + output += maxLengthThisInput - typedChars; + } + else { + output += typedChars; + } + if (options.showMaxLength) { + output += options.separator + maxLengthThisInput; + } + if (options.postText) { + output += options.postText; + } + } + return output; + } + + /** + * This function updates the value of the counter in the indicator. + * Wants as parameters: the number of remaining chars, the element currently managed, + * the maxLength for the current input and the indicator generated for it. + * + * @param remaining + * @param currentInput + * @param maxLengthCurrentInput + * @param maxLengthIndicator + */ + function manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator) { + if (maxLengthIndicator) { + maxLengthIndicator.html(updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, (maxLengthCurrentInput - remaining))); + + if (remaining > 0) { + if (charsLeftThreshold(currentInput, options.threshold, maxLengthCurrentInput)) { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.limitReachedClass).addClass(options.warningClass)); + } else { + hideRemaining(currentInput, maxLengthIndicator); + } + } else { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass).addClass(options.limitReachedClass)); + } + } + + if (options.allowOverMax) { + // class to use for form validation on custom maxlength attribute + if (remaining < 0) { + currentInput.addClass('overmax'); + } else { + currentInput.removeClass('overmax'); + } + } + } + + /** + * This function returns an object containing all the + * informations about the position of the current input + * + * @param currentInput + * @return object {bottom height left right top width} + * + */ + function getPosition(currentInput) { + var el = currentInput[0]; + return $.extend({}, (typeof el.getBoundingClientRect === 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth, + height: el.offsetHeight + }, currentInput.offset()); + } + + /** + * This function places the maxLengthIndicator at the + * top / bottom / left / right of the currentInput + * + * @param currentInput + * @param maxLengthIndicator + * @return null + * + */ + function place(currentInput, maxLengthIndicator) { + var pos = getPosition(currentInput); + + // Supports custom placement handler + if ($.type(options.placement) === 'function'){ + options.placement(currentInput, maxLengthIndicator, pos); + return; + } + + // Supports custom placement via css positional properties + if ($.isPlainObject(options.placement)){ + placeWithCSS(options.placement, maxLengthIndicator); + return; + } + + var inputOuter = currentInput.outerWidth(), + outerWidth = maxLengthIndicator.outerWidth(), + actualWidth = maxLengthIndicator.width(), + actualHeight = maxLengthIndicator.height(); + + // get the right position if the indicator is appended to the input's parent + if (options.appendToParent) { + pos.top -= currentInput.parent().offset().top; + pos.left -= currentInput.parent().offset().left; + } + + switch (options.placement) { + case 'bottom': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'top': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'left': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth }); + break; + case 'right': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }); + break; + case 'bottom-right': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width }); + break; + case 'top-right': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter }); + break; + case 'top-left': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left - outerWidth }); + break; + case 'bottom-left': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left - outerWidth }); + break; + case 'centered-right': + maxLengthIndicator.css({ top: pos.top + (actualHeight / 2), left: pos.left + inputOuter - outerWidth - 3 }); + break; + + // Some more options for placements + case 'bottom-right-inside': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width - outerWidth }); + break; + case 'top-right-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter - outerWidth }); + break; + case 'top-left-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left }); + break; + case 'bottom-left-inside': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left }); + break; + } + } + + /** + * This function places the maxLengthIndicator based on placement config object. + * + * @param {object} placement + * @param {$} maxLengthIndicator + * @return null + * + */ + function placeWithCSS(placement, maxLengthIndicator) { + if (!placement || !maxLengthIndicator){ + return; + } + + var POSITION_KEYS = [ + 'top', + 'bottom', + 'left', + 'right', + 'position' + ]; + + var cssPos = {}; + + // filter css properties to position + $.each(POSITION_KEYS, function (i, key) { + var val = options.placement[key]; + if (typeof val !== 'undefined'){ + cssPos[key] = val; + } + }); + + maxLengthIndicator.css(cssPos); + + return; + } + + /** + * This function retrieves the maximum length of currentInput + * + * @param currentInput + * @return {number} + * + */ + function getMaxLength(currentInput) { + var attr = 'maxlength'; + if (options.allowOverMax) { + attr = 'data-bs-mxl'; + } + return currentInput.attr(attr) || currentInput.attr('size'); + } + + return this.each(function () { + + var currentInput = $(this), + maxLengthCurrentInput, + maxLengthIndicator; + + $(window).resize(function () { + if (maxLengthIndicator) { + place(currentInput, maxLengthIndicator); + } + }); + + if (options.allowOverMax) { + $(this).attr('data-bs-mxl', $(this).attr('maxlength')); + $(this).removeAttr('maxlength'); + } + + function firstInit() { + var maxlengthContent = updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, '0'); + maxLengthCurrentInput = getMaxLength(currentInput); + + if (!maxLengthIndicator) { + maxLengthIndicator = $('<span class="bootstrap-maxlength"></span>').css({ + display: 'none', + position: 'absolute', + whiteSpace: 'nowrap', + zIndex: 1099 + }).html(maxlengthContent); + } + + // We need to detect resizes if we are dealing with a textarea: + if (currentInput.is('textarea')) { + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + + currentInput.mouseup(function () { + if (currentInput.outerWidth() !== currentInput.data('maxlenghtsizex') || currentInput.outerHeight() !== currentInput.data('maxlenghtsizey')) { + place(currentInput, maxLengthIndicator); + } + + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + }); + } + + if (options.appendToParent) { + currentInput.parent().append(maxLengthIndicator); + currentInput.parent().css('position', 'relative'); + } else { + documentBody.append(maxLengthIndicator); + } + + var remaining = remainingChars(currentInput, getMaxLength(currentInput)); + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + place(currentInput, maxLengthIndicator); + } + + if (options.showOnReady) { + currentInput.ready(function () { + firstInit(); + }); + } else { + currentInput.focus(function () { + firstInit(); + }); + } + + currentInput.on('maxlength.reposition', function () { + place(currentInput, maxLengthIndicator); + }); + + + currentInput.on('destroyed', function () { + if (maxLengthIndicator) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('blur', function () { + if (maxLengthIndicator && !options.showOnReady) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('input', function () { + var maxlength = getMaxLength(currentInput), + remaining = remainingChars(currentInput, maxlength), + output = true; + + if (options.validate && remaining < 0) { + truncateChars(currentInput, maxlength); + output = false; + } else { + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + } + + //reposition the indicator if placement "bottom-right-inside" & "top-right-inside" is used + if (options.placement === 'bottom-right-inside' || options.placement === 'top-right-inside') { + place(currentInput, maxLengthIndicator); + } + + return output; + }); + }); + } + }); +}(jQuery)); diff --git a/plugins/bootstrap-select/css/bootstrap-select.min.css b/plugins/bootstrap-select/css/bootstrap-select.min.css new file mode 100644 index 0000000..c168431 --- /dev/null +++ b/plugins/bootstrap-select/css/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/plugins/bootstrap-select/js/bootstrap-select.js b/plugins/bootstrap-select/js/bootstrap-select.js new file mode 100644 index 0000000..c88d9cf --- /dev/null +++ b/plugins/bootstrap-select/js/bootstrap-select.js @@ -0,0 +1,1735 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + 'use strict'; + + //<editor-fold desc="Shims"> + if (!String.prototype.includes) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var toString = {}.toString; + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var indexOf = ''.indexOf; + var includes = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + return indexOf.call(string, searchString, pos) != -1; + }; + if (defineProperty) { + defineProperty(String.prototype, 'includes', { + 'value': includes, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.includes = includes; + } + }()); + } + + if (!String.prototype.startsWith) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var toString = {}.toString; + var startsWith = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + var index = -1; + while (++index < searchLength) { + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { + return false; + } + } + return true; + }; + if (defineProperty) { + defineProperty(String.prototype, 'startsWith', { + 'value': startsWith, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.startsWith = startsWith; + } + }()); + } + + if (!Object.keys) { + Object.keys = function ( + o, // object + k, // key + r // result array + ){ + // initialize object and result + r=[]; + // iterate over object keys + for (k in o) + // fill result array with non-prototypical keys + r.hasOwnProperty.call(o, k) && r.push(k); + // return result + return r; + }; + } + + $.fn.triggerNative = function (eventName) { + var el = this[0], + event; + + if (el.dispatchEvent) { + if (typeof Event === 'function') { + // For modern browsers + event = new Event(eventName, { + bubbles: true + }); + } else { + // For IE since it doesn't support Event constructor + event = document.createEvent('Event'); + event.initEvent(eventName, true, false); + } + + el.dispatchEvent(event); + } else { + if (el.fireEvent) { + event = document.createEventObject(); + event.eventType = eventName; + el.fireEvent('on' + eventName, event); + } + + this.trigger(eventName); + } + }; + //</editor-fold> + + // Case insensitive contains search + $.expr[':'].icontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case insensitive begins search + $.expr[':'].ibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + // Case and accent insensitive contains search + $.expr[':'].aicontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case and accent insensitive begins search + $.expr[':'].aibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + /** + * Remove all diatrics from the given text. + * @access private + * @param {String} text + * @returns {String} + */ + function normalizeToBase(text) { + var rExps = [ + {re: /[\xC0-\xC6]/g, ch: "A"}, + {re: /[\xE0-\xE6]/g, ch: "a"}, + {re: /[\xC8-\xCB]/g, ch: "E"}, + {re: /[\xE8-\xEB]/g, ch: "e"}, + {re: /[\xCC-\xCF]/g, ch: "I"}, + {re: /[\xEC-\xEF]/g, ch: "i"}, + {re: /[\xD2-\xD6]/g, ch: "O"}, + {re: /[\xF2-\xF6]/g, ch: "o"}, + {re: /[\xD9-\xDC]/g, ch: "U"}, + {re: /[\xF9-\xFC]/g, ch: "u"}, + {re: /[\xC7-\xE7]/g, ch: "c"}, + {re: /[\xD1]/g, ch: "N"}, + {re: /[\xF1]/g, ch: "n"} + ]; + $.each(rExps, function () { + text = text.replace(this.re, this.ch); + }); + return text; + } + + + function htmlEscape(html) { + var escapeMap = { + '&': '&amp;', + '<': '&lt;', + '>': '&gt;', + '"': '&quot;', + "'": '&#x27;', + '`': '&#x60;' + }; + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', + testRegexp = new RegExp(source), + replaceRegexp = new RegExp(source, 'g'), + string = html == null ? '' : '' + html; + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { + return escapeMap[match]; + }) : string; + } + + var Selectpicker = function (element, options, e) { + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.$lis = null; + this.options = options; + + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + //Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.destroy; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.10.0'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results matched {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + doneButton: false, + doneButtonText: 'Close', + multipleSeparator: ', ', + styleBase: 'btn', + style: 'btn-default', + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + liveSearchPlaceholder: null, + liveSearchNormalize: false, + liveSearchStyle: 'contains', + actionsBox: false, + iconBase: 'glyphicon', + tickIcon: 'glyphicon-ok', + showTick: false, + template: { + caret: '<span class="caret"></span>' + }, + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + this.$element.addClass('bs-select-hidden'); + + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]') + this.liObj = {}; + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createView(); + this.$element + .after(this.$newElement) + .appendTo(this.$newElement); + this.$button = this.$newElement.children('button'); + this.$menu = this.$newElement.children('.dropdown-menu'); + this.$menuInner = this.$menu.children('.inner'); + this.$searchbox = this.$menu.find('input'); + + this.$element.removeClass('bs-select-hidden'); + + if (this.options.dropdownAlignRight) + this.$menu.addClass('dropdown-menu-right'); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + $('label[for="' + id + '"]').click(function (e) { + e.preventDefault(); + that.$button.focus(); + }); + } + + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.setStyle(); + this.setWidth(); + if (this.options.container) this.selectPosition(); + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + + this.$newElement.on({ + 'hide.bs.dropdown': function (e) { + that.$element.trigger('hide.bs.select', e); + }, + 'hidden.bs.dropdown': function (e) { + that.$element.trigger('hidden.bs.select', e); + }, + 'show.bs.dropdown': function (e) { + that.$element.trigger('show.bs.select', e); + }, + 'shown.bs.dropdown': function (e) { + that.$element.trigger('shown.bs.select', e); + } + }); + + if (that.$element[0].hasAttribute('required')) { + this.$element.on('invalid', function () { + that.$button + .addClass('bs-invalid') + .focus(); + + that.$element.on({ + 'focus.bs.select': function () { + that.$button.focus(); + that.$element.off('focus.bs.select'); + }, + 'shown.bs.select': function () { + that.$element + .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened + .off('shown.bs.select'); + }, + 'rendered.bs.select': function () { + // if select is no longer invalid, remove the bs-invalid class + if (this.validity.valid) that.$button.removeClass('bs-invalid'); + that.$element.off('rendered.bs.select'); + } + }); + + }); + } + + setTimeout(function () { + that.$element.trigger('loaded.bs.select'); + }); + }, + + createDropdown: function () { + // Options + // If we are multiple or showTick option is set, then add the show-tick class + var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', + autofocus = this.autofocus ? ' autofocus' : ''; + // Elements + var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + '</div>' : ''; + var searchbox = this.options.liveSearch ? + '<div class="bs-searchbox">' + + '<input type="text" class="form-control" autocomplete="off"' + + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder="' + htmlEscape(this.options.liveSearchPlaceholder) + '"') + '>' + + '</div>' + : ''; + var actionsbox = this.multiple && this.options.actionsBox ? + '<div class="bs-actionsbox">' + + '<div class="btn-group btn-group-sm btn-block">' + + '<button type="button" class="actions-btn bs-select-all btn btn-default">' + + this.options.selectAllText + + '</button>' + + '<button type="button" class="actions-btn bs-deselect-all btn btn-default">' + + this.options.deselectAllText + + '</button>' + + '</div>' + + '</div>' + : ''; + var donebutton = this.multiple && this.options.doneButton ? + '<div class="bs-donebutton">' + + '<div class="btn-group btn-block">' + + '<button type="button" class="btn btn-sm btn-default">' + + this.options.doneButtonText + + '</button>' + + '</div>' + + '</div>' + : ''; + var drop = + '<div class="btn-group bootstrap-select' + showTick + inputGroup + '">' + + '<button type="button" class="' + this.options.styleBase + ' dropdown-toggle" data-toggle="dropdown"' + autofocus + '>' + + '<span class="filter-option pull-left"></span>&nbsp;' + + '<span class="bs-caret">' + + this.options.template.caret + + '</span>' + + '</button>' + + '<div class="dropdown-menu open">' + + header + + searchbox + + actionsbox + + '<ul class="dropdown-menu inner" role="menu">' + + '</ul>' + + donebutton + + '</div>' + + '</div>'; + + return $(drop); + }, + + createView: function () { + var $drop = this.createDropdown(), + li = this.createLi(); + + $drop.find('ul')[0].innerHTML = li; + return $drop; + }, + + reloadLi: function () { + //Remove all children. + this.destroyLi(); + //Re build + var li = this.createLi(); + this.$menuInner[0].innerHTML = li; + }, + + destroyLi: function () { + this.$menu.find('li').remove(); + }, + + createLi: function () { + var that = this, + _li = [], + optID = 0, + titleOption = document.createElement('option'), + liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @param [optgroup] + * @returns {string} + */ + var generateLI = function (content, index, classes, optgroup) { + return '<li' + + ((typeof classes !== 'undefined' & '' !== classes) ? ' class="' + classes + '"' : '') + + ((typeof index !== 'undefined' & null !== index) ? ' data-original-index="' + index + '"' : '') + + ((typeof optgroup !== 'undefined' & null !== optgroup) ? 'data-optgroup="' + optgroup + '"' : '') + + '>' + content + '</li>'; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @param [tokens] + * @returns {string} + */ + var generateA = function (text, classes, inline, tokens) { + return '<a tabindex="0"' + + (typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') + + (typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') + + (that.options.liveSearchNormalize ? ' data-normalized-text="' + normalizeToBase(htmlEscape(text)) + '"' : '') + + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens="' + tokens + '"' : '') + + '>' + text + + '<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' + + '</a>'; + }; + + if (this.options.title && !this.multiple) { + // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended + liIndex--; + + if (!this.$element.find('.bs-title-option').length) { + // Use native JS to prepend option (faster) + var element = this.$element[0]; + titleOption.className = 'bs-title-option'; + titleOption.appendChild(document.createTextNode(this.options.title)); + titleOption.value = ''; + element.insertBefore(titleOption, element.firstChild); + // Check if selected attribute is already set on an option. If not, select the titleOption option. + if ($(element.options[element.selectedIndex]).attr('selected') === undefined) titleOption.selected = true; + } + } + + this.$element.find('option').each(function (index) { + var $this = $(this); + + liIndex++; + + if ($this.hasClass('bs-title-option')) return; + + // Get the class and text for the option + var optionClass = this.className || '', + inline = this.style.cssText, + text = $this.data('content') ? $this.data('content') : $this.html(), + tokens = $this.data('tokens') ? $this.data('tokens') : null, + subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.data('subtext') + '</small>' : '', + icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '', + isOptgroup = this.parentNode.tagName === 'OPTGROUP', + isDisabled = this.disabled || (isOptgroup && this.parentNode.disabled); + + if (icon !== '' && isDisabled) { + icon = '<span>' + icon + '</span>'; + } + + if (that.options.hideDisabled && isDisabled && !isOptgroup) { + liIndex--; + return; + } + + if (!$this.data('content')) { + // Prepend any icon and append any subtext to the main text. + text = icon + '<span class="text">' + text + subtext + '</span>'; + } + + if (isOptgroup && $this.data('divider') !== true) { + var optGroupClass = ' ' + this.parentNode.className || ''; + + if ($this.index() === 0) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = this.parentNode.label, + labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="text-muted">' + $this.parent().data('subtext') + '</small>' : '', + labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : ''; + + label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>'; + + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + liIndex++; + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID)); + } + + if (that.options.hideDisabled && isDisabled) { + liIndex--; + return; + } + + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID)); + } else if ($this.data('divider') === true) { + _li.push(generateLI('', index, 'divider')); + } else if ($this.data('hidden') === true) { + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden')); + } else { + if (this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP') { + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index)); + } + + that.liObj[index] = liIndex; + }); + + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); + } + + return _li.join(''); + }, + + findLis: function () { + if (this.$lis == null) this.$lis = this.$menu.find('li'); + return this.$lis; + }, + + /** + * @param [updateLi] defaults to true + */ + render: function (updateLi) { + var that = this, + notDisabled; + + //Update the LI to match the SELECT + if (updateLi !== false) { + this.$element.find('option').each(function (index) { + var $lis = that.findLis().eq(that.liObj[index]); + + that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis); + that.setSelected(index, this.selected, $lis); + }); + } + + this.tabIndex(); + + var selectedItems = this.$element.find('option').map(function () { + if (this.selected) { + if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return; + + var $this = $(this), + icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '', + subtext; + + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) { + subtext = ' <small class="text-muted">' + $this.data('subtext') + '</small>'; + } else { + subtext = ''; + } + if (typeof $this.attr('title') !== 'undefined') { + return $this.attr('title'); + } else if ($this.data('content') && that.options.showContent) { + return $this.data('content'); + } else { + return icon + $this.html() + subtext; + } + } + }).toArray(); + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); + + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { + var max = this.options.selectedTextFormat.split('>'); + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + if (this.options.title == undefined) { + this.options.title = this.$element.attr('title'); + } + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + //strip all html-tags and trim the result + this.$button.attr('title', $.trim(title.replace(/<[^>]*>?/g, ''))); + this.$button.children('.filter-option').html(title); + + this.$element.trigger('rendered.bs.select'); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; + + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('ul'), + divider = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; + + text.className = 'text'; + newElement.className = this.$menu[0].parentNode.className + ' open'; + menu.className = 'dropdown-menu open'; + menuInner.className = 'dropdown-menu inner'; + divider.className = 'divider'; + + text.appendChild(document.createTextNode('Inner text')); + a.appendChild(text); + li.appendChild(a); + menuInner.appendChild(li); + menuInner.appendChild(divider); + if (header) menu.appendChild(header); + if (search) { + // create a span instead of input as creating an input element is slower + var input = document.createElement('span'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); + + document.body.appendChild(newElement); + + var liHeight = a.offsetHeight, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false, + $menu = menuStyle ? null : $(menu), + menuPadding = parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + menuExtras = menuPadding + + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2; + + document.body.removeChild(newElement); + + this.sizeInfo = { + liHeight: liHeight, + headerHeight: headerHeight, + searchHeight: searchHeight, + actionsHeight: actionsHeight, + doneButtonHeight: doneButtonHeight, + dividerHeight: dividerHeight, + menuPadding: menuPadding, + menuExtras: menuExtras + }; + }, + + setSize: function () { + this.findLis(); + this.liHeight(); + + if (this.options.header) this.$menu.css('padding-top', 0); + if (this.options.size === false) return; + + var that = this, + $menu = this.$menu, + $menuInner = this.$menuInner, + $window = $(window), + selectHeight = this.$newElement[0].offsetHeight, + liHeight = this.sizeInfo['liHeight'], + headerHeight = this.sizeInfo['headerHeight'], + searchHeight = this.sizeInfo['searchHeight'], + actionsHeight = this.sizeInfo['actionsHeight'], + doneButtonHeight = this.sizeInfo['doneButtonHeight'], + divHeight = this.sizeInfo['dividerHeight'], + menuPadding = this.sizeInfo['menuPadding'], + menuExtras = this.sizeInfo['menuExtras'], + notDisabled = this.options.hideDisabled ? '.disabled' : '', + menuHeight, + getHeight, + selectOffsetTop, + selectOffsetBot, + posVert = function () { + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; + }; + + posVert(); + + if (this.options.size === 'auto') { + var getSize = function () { + var minHeight, + hasClass = function (className, include) { + return function (element) { + if (include) { + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } else { + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } + }; + }, + lis = that.$menuInner[0].getElementsByTagName('li'), + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'), + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header'); + + posVert(); + menuHeight = selectOffsetBot - menuExtras; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + } else { + getHeight = $menu.height(); + } + + if (that.options.dropupAuto) { + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); + } + if (that.$newElement.hasClass('dropup')) { + menuHeight = selectOffsetTop - menuExtras; + } + + if ((lisVisible.length + optGroup.length) > 3) { + minHeight = liHeight * 3 + menuExtras - 2; + } else { + minHeight = 0; + } + + $menu.css({ + 'max-height': menuHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px' + }); + $menuInner.css({ + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' + }); + }; + getSize(); + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize); + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) { + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(), + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + } else { + getHeight = $menu.height(); + } + + if (that.options.dropupAuto) { + //noinspection JSUnusedAssignment + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras) < getHeight); + } + $menu.css({ + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px', + 'overflow': 'hidden', + 'min-height': '' + }); + $menuInner.css({ + 'max-height': menuHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': '' + }); + } + }, + + setWidth: function () { + if (this.options.width === 'auto') { + this.$menu.css('min-width', '0'); + + // Get correct width if element is hidden + var $selectClone = this.$menu.parent().clone().appendTo('body'), + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone, + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(), + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth(); + + $selectClone.remove(); + $selectClone2.remove(); + + // Set width to whatever's larger, button title or longest option + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px'); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + this.$bsContainer = $('<div class="bs-container" />'); + + var that = this, + pos, + actualHeight, + getPlacement = function ($element) { + that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); + pos = $element.offset(); + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; + that.$bsContainer.css({ + 'top': pos.top + actualHeight, + 'left': pos.left, + 'width': $element[0].offsetWidth + }); + }; + + this.$button.on('click', function () { + var $this = $(this); + + if (that.isDisabled()) { + return; + } + + getPlacement(that.$newElement); + + that.$bsContainer + .appendTo(that.options.container) + .toggleClass('open', !$this.hasClass('open')) + .append(that.$menu); + }); + + $(window).on('resize scroll', function () { + getPlacement(that.$newElement); + }); + + this.$element.on('hide.bs.select', function () { + that.$menu.data('height', that.$menu.height()); + that.$bsContainer.detach(); + }); + }, + + setSelected: function (index, selected, $lis) { + if (!$lis) { + $lis = this.findLis().eq(this.liObj[index]); + } + + $lis.toggleClass('selected', selected); + }, + + setDisabled: function (index, disabled, $lis) { + if (!$lis) { + $lis = this.findLis().eq(this.liObj[index]); + } + + if (disabled) { + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1); + } else { + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0); + } + }, + + isDisabled: function () { + return this.$element[0].disabled; + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$newElement.addClass('disabled'); + this.$button.addClass('disabled').attr('tabindex', -1); + } else { + if (this.$button.hasClass('disabled')) { + this.$newElement.removeClass('disabled'); + this.$button.removeClass('disabled'); + } + + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + tabIndex: function () { + if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && + (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + + this.$element.attr('tabindex', -98); + }, + + clickListener: function () { + var that = this, + $document = $(document); + + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { + e.stopPropagation(); + }); + + $document.data('spaceSelect', false); + + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + + this.$button.on('click', function () { + that.setSize(); + }); + + this.$element.on('shown.bs.select', function () { + if (!that.options.liveSearch && !that.multiple) { + that.$menuInner.find('.selected a').focus(); + } else if (!that.multiple) { + var selectedIndex = that.liObj[that.$element[0].selectedIndex]; + + if (typeof selectedIndex !== 'number' || that.options.size === false) return; + + // scroll to selected option + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop; + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2; + that.$menuInner[0].scrollTop = offset; + } + }); + + this.$menuInner.on('click', 'li a', function (e) { + var $this = $(this), + clickedIndex = $this.parent().data('originalIndex'), + prevValue = that.$element.val(), + prevIndex = that.$element.prop('selectedIndex'); + + // Don't close on multi choice menu + if (that.multiple) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.$menuInner.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + that.setSelected(clickedIndex, !state); + $this.blur(); + + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + that.$menuInner.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + var optgroupID = $this.parent().data('optgroup'); + that.$menuInner.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('<div class="notify"></div>'); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('<div>' + maxTxt + '</div>')); + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('<div>' + maxTxtGrp + '</div>')); + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + // $option.prop('selected') is current option state (selected/unselected). state is previous option state. + that.$element + .trigger('changed.bs.select', [clickedIndex, $option.prop('selected'), state]) + .triggerNative('change'); + } + } + }); + + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + } + }); + + this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + }); + + this.$menu.on('click', '.popover-title .close', function () { + that.$button.click(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + }); + + this.$element.change(function () { + that.render(false); + }); + }, + + liveSearchListener: function () { + var that = this, + $no_results = $('<li class="no-results"></li>'); + + this.$button.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { + that.$menuInner.find('.active').removeClass('active'); + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + that.$lis.not('.is-hidden').removeClass('hidden'); + if (!!$no_results.parent().length) $no_results.remove(); + } + if (!that.multiple) that.$menuInner.find('.selected').addClass('active'); + setTimeout(function () { + that.$searchbox.focus(); + }, 10); + }); + + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + if (that.$searchbox.val()) { + var $searchBase = that.$lis.not('.is-hidden').removeClass('hidden').children('a'); + if (that.options.liveSearchNormalize) { + $searchBase = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")'); + } else { + $searchBase = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")'); + } + $searchBase.parent().addClass('hidden'); + + that.$lis.filter('.dropdown-header').each(function () { + var $this = $(this), + optgroup = $this.data('optgroup'); + + if (that.$lis.filter('[data-optgroup=' + optgroup + ']').not($this).not('.hidden').length === 0) { + $this.addClass('hidden'); + that.$lis.filter('[data-optgroup=' + optgroup + 'div]').addClass('hidden'); + } + }); + + var $lisVisible = that.$lis.not('.hidden'); + + // hide divider if first or last visible, or if followed by another divider + $lisVisible.each(function (index) { + var $this = $(this); + + if ($this.hasClass('divider') && ( + $this.index() === $lisVisible.first().index() || + $this.index() === $lisVisible.last().index() || + $lisVisible.eq(index + 1).hasClass('divider'))) { + $this.addClass('hidden'); + } + }); + + if (!that.$lis.not('.hidden, .no-results').length) { + if (!!$no_results.parent().length) { + $no_results.remove(); + } + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')).show(); + that.$menuInner.append($no_results); + } else if (!!$no_results.parent().length) { + $no_results.remove(); + } + } else { + that.$lis.not('.is-hidden').removeClass('hidden'); + if (!!$no_results.parent().length) { + $no_results.remove(); + } + } + + that.$lis.filter('.active').removeClass('active'); + if (that.$searchbox.val()) that.$lis.not('.hidden, .divider, .dropdown-header').eq(0).addClass('active').children('a').focus(); + $(this).focus(); + }); + }, + + _searchStyle: function () { + var styles = { + begins: 'ibegins', + startsWith: 'ibegins' + }; + + return styles[this.options.liveSearchStyle] || 'icontains'; + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element.val(value); + this.render(); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + changeAll: function (status) { + if (typeof status === 'undefined') status = true; + + this.findLis(); + + var $options = this.$element.find('option'), + $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden').toggleClass('selected', status), + lisVisLen = $lisVisible.length, + selectedOptions = []; + + for (var i = 0; i < lisVisLen; i++) { + var origIndex = $lisVisible[i].getAttribute('data-original-index'); + selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0]; + } + + $(selectedOptions).prop('selected', status); + + this.render(false); + + this.$element + .trigger('changed.bs.select') + .triggerNative('change'); + }, + + selectAll: function () { + return this.changeAll(true); + }, + + deselectAll: function () { + return this.changeAll(false); + }, + + toggle: function (e) { + e = e || window.event; + + if (e) e.stopPropagation(); + + this.$button.trigger('click'); + }, + + keydown: function (e) { + var $this = $(this), + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(), + $items, + that = $parent.data('this'), + index, + next, + first, + last, + prev, + nextPrev, + prevIndex, + isActive, + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)', + keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + if (that.options.liveSearch) $parent = $this.parent().parent(); + + if (that.options.container) $parent = that.$menu; + + $items = $('[role=menu] li', $parent); + + isActive = that.$newElement.hasClass('open'); + + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) { + if (!that.options.container) { + that.setSize(); + that.$menu.parent().addClass('open'); + isActive = true; + } else { + that.$button.trigger('click'); + } + that.$searchbox.focus(); + } + + if (that.options.liveSearch) { + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { + e.preventDefault(); + that.$menu.parent().removeClass('open'); + if (that.options.container) that.$newElement.removeClass('open'); + that.$button.focus(); + } + // $items contains li elements when liveSearch is enabled + $items = $('[role=menu] li' + selector, $parent); + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { + if ($items.filter('.active').length === 0) { + $items = that.$menuInner.find('li'); + if (that.options.liveSearchNormalize) { + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); + } else { + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')'); + } + } + } + } + + if (!$items.length) return; + + if (/(38|40)/.test(e.keyCode.toString(10))) { + index = $items.index($items.find('a').filter(':focus').parent()); + first = $items.filter(selector).first().index(); + last = $items.filter(selector).last().index(); + next = $items.eq(index).nextAll(selector).eq(0).index(); + prev = $items.eq(index).prevAll(selector).eq(0).index(); + nextPrev = $items.eq(next).prevAll(selector).eq(0).index(); + + if (that.options.liveSearch) { + $items.each(function (i) { + if (!$(this).hasClass('disabled')) { + $(this).data('index', i); + } + }); + index = $items.index($items.filter('.active')); + first = $items.first().data('index'); + last = $items.last().data('index'); + next = $items.eq(index).nextAll().eq(0).data('index'); + prev = $items.eq(index).prevAll().eq(0).data('index'); + nextPrev = $items.eq(next).prevAll().eq(0).data('index'); + } + + prevIndex = $this.data('prevIndex'); + + if (e.keyCode == 38) { + if (that.options.liveSearch) index--; + if (index != nextPrev && index > prev) index = prev; + if (index < first) index = first; + if (index == prevIndex) index = last; + } else if (e.keyCode == 40) { + if (that.options.liveSearch) index++; + if (index == -1) index = 0; + if (index != nextPrev && index < next) index = next; + if (index > last) index = last; + if (index == prevIndex) index = first; + } + + $this.data('prevIndex', index); + + if (!that.options.liveSearch) { + $items.eq(index).children('a').focus(); + } else { + e.preventDefault(); + if (!$this.hasClass('dropdown-toggle')) { + $items.removeClass('active').eq(index).addClass('active').children('a').focus(); + $this.focus(); + } + } + + } else if (!$this.is('input')) { + var keyIndex = [], + count, + prevKey; + + $items.each(function () { + if (!$(this).hasClass('disabled')) { + if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { + keyIndex.push($(this).index()); + } + } + }); + + count = $(document).data('keycount'); + count++; + $(document).data('keycount', count); + + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); + + if (prevKey != keyCodeMap[e.keyCode]) { + count = 1; + $(document).data('keycount', count); + } else if (count >= keyIndex.length) { + $(document).data('keycount', 0); + if (count > keyIndex.length) count = 1; + } + + $items.eq(keyIndex[count - 1]).children('a').focus(); + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); + if (!that.options.liveSearch) { + var elem = $(':focus'); + elem.click(); + // Bring back focus for multiselects + elem.focus(); + // Prevent screen from scrolling if the user hit the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } else if (!/(32)/.test(e.keyCode.toString(10))) { + that.$menuInner.find('.active a').click(); + $this.focus(); + } + $(document).data('keycount', 0); + } + + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { + that.$menu.parent().removeClass('open'); + if (that.options.container) that.$newElement.removeClass('open'); + that.$button.focus(); + } + }, + + mobile: function () { + this.$element.addClass('mobile-device'); + }, + + refresh: function () { + this.$lis = null; + this.liObj = {}; + this.reloadLi(); + this.render(); + this.checkDisabled(); + this.liHeight(true); + this.setStyle(); + this.setWidth(); + if (this.$lis) this.$searchbox.trigger('propertychange'); + + this.$element.trigger('refreshed.bs.select'); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + }, + + destroy: function () { + this.$newElement.before(this.$element).remove(); + + if (this.$bsContainer) { + this.$bsContainer.remove(); + } else { + this.$menu.remove(); + } + + this.$element + .off('.bs.select') + .removeData('selectpicker') + .removeClass('bs-select-hidden selectpicker'); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option, event) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option, + _event = event; + [].shift.apply(args); + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template); + $this.data('selectpicker', (data = new Selectpicker(this, config, _event))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .data('keycount', 0) + .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/bootstrap-select.js.map b/plugins/bootstrap-select/js/bootstrap-select.js.map new file mode 100644 index 0000000..9c76a94 --- /dev/null +++ b/plugins/bootstrap-select/js/bootstrap-select.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-select.js"],"names":["root","factory","define","amd","a0","exports","module","require","jQuery","this","$","normalizeToBase","text","rExps","re","ch","each","replace","htmlEscape","html","escapeMap","&","<",">","\"","'","`","source","Object","keys","join","testRegexp","RegExp","replaceRegexp","string","test","match","Plugin","option","event","args","arguments","_option","_event","shift","apply","value","chain","$this","is","data","options","i","hasOwnProperty","config","extend","Selectpicker","DEFAULTS","fn","selectpicker","defaults","template","Function","String","prototype","includes","toString","defineProperty","object","$defineProperty","result","error","indexOf","search","TypeError","call","stringLength","length","searchString","searchLength","position","undefined","pos","Number","start","Math","min","max","configurable","writable","startsWith","index","charCodeAt","o","k","r","push","triggerNative","eventName","el","dispatchEvent","Event","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","icontains","obj","meta","$obj","haystack","toUpperCase","ibegins","aicontains","aibegins","element","e","stopPropagation","preventDefault","$element","$newElement","$button","$menu","$lis","title","attr","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","showTick","caret","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","appendTo","children","$menuInner","$searchbox","find","removeClass","click","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","hide.bs.dropdown","hidden.bs.dropdown","show.bs.dropdown","shown.bs.dropdown","hasAttribute","focus.bs.select","off","shown.bs.select","rendered.bs.select","validity","valid","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","destroyLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","className","appendChild","createTextNode","insertBefore","firstChild","selectedIndex","selected","optionClass","cssText","subtext","icon","isOptgroup","parentNode","tagName","isDisabled","disabled","optGroupClass","label","labelSubtext","labelIcon","previousElementSibling","eq","findLis","updateLi","notDisabled","setDisabled","setSelected","tabIndex","selectedItems","map","toArray","split","totalCount","not","tr8nText","trim","status","buttonClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","menuExtras","marginTop","marginBottom","removeChild","setSize","menuHeight","getHeight","selectOffsetTop","selectOffsetBot","$window","window","selectHeight","divHeight","posVert","offset","top","scrollTop","height","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","filter","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","optIndex","slice","last","divLength","$selectClone","clone","$selectClone2","ulWidth","outerWidth","btnWidth","$bsContainer","actualHeight","getPlacement","left","offsetWidth","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","$options","$option","state","$optgroup","maxOptionsGrp","blur","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$searchBase","_searchStyle","$lisVisible","first","styles","begins","changeAll","lisVisLen","selectedOptions","origIndex","getAttribute","toggle","keydown","$items","next","prev","nextPrev","isActive","$parent","selector","keyCodeMap",32,48,49,50,51,52,53,54,55,56,57,59,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,96,97,98,99,100,101,102,103,104,105,"nextAll","prevAll","count","prevKey","keyIndex","toLowerCase","substring","elem","before","removeData","old","Constructor","noConflict","$selectpicker"],"mappings":";;;;;;CAOC,SAAUA,EAAMC,GACO,kBAAXC,SAAyBA,OAAOC,IAEzCD,QAAQ,UAAW,SAAUE,GAC3B,MAAQH,GAAQG,KAEU,gBAAZC,SAIhBC,OAAOD,QAAUJ,EAAQM,QAAQ,WAEjCN,EAAQO,SAEVC,KAAM,SAAUD,IAElB,SAAWE,GACT,YA8LA,SAASC,GAAgBC,GACvB,GAAIC,KACDC,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,eAAgBC,GAAI,MACxBD,GAAI,UAAWC,GAAI,MACnBD,GAAI,UAAWC,GAAI,KAKtB,OAHAL,GAAEM,KAAKH,EAAO,WACZD,EAAOA,EAAKK,QAAQR,KAAKK,GAAIL,KAAKM,MAE7BH,EAIT,QAASM,GAAWC,GAClB,GAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAS,MAAQC,OAAOC,KAAKT,GAAWU,KAAK,KAAO,IACpDC,EAAa,GAAIC,QAAOL,GACxBM,EAAgB,GAAID,QAAOL,EAAQ,KACnCO,EAAiB,MAARf,EAAe,GAAK,GAAKA,CACtC,OAAOY,GAAWI,KAAKD,GAAUA,EAAOjB,QAAQgB,EAAe,SAAUG,GACvE,MAAOhB,GAAUgB,KACdF,EA+3CP,QAASG,GAAOC,EAAQC,GAEtB,GAAIC,GAAOC,UAGPC,EAAUJ,EACVK,EAASJ,KACVK,MAAMC,MAAML,EAEf,IAAIM,GACAC,EAAQtC,KAAKO,KAAK,WACpB,GAAIgC,GAAQtC,EAAED,KACd,IAAIuC,EAAMC,GAAG,UAAW,CACtB,GAAIC,GAAOF,EAAME,KAAK,gBAClBC,EAA4B,gBAAXT,IAAuBA,CAE5C,IAAKQ,GAIE,GAAIC,EACT,IAAK,GAAIC,KAAKD,GACRA,EAAQE,eAAeD,KACzBF,EAAKC,QAAQC,GAAKD,EAAQC,QAPrB,CACT,GAAIE,GAAS5C,EAAE6C,UAAWC,EAAaC,SAAU/C,EAAEgD,GAAGC,aAAaC,aAAgBZ,EAAME,OAAQC,EACjGG,GAAOO,SAAWnD,EAAE6C,UAAWC,EAAaC,SAASI,SAAWnD,EAAEgD,GAAGC,aAAaC,SAAWlD,EAAEgD,GAAGC,aAAaC,SAASC,YAAgBb,EAAME,OAAOW,SAAUV,EAAQU,UACvKb,EAAME,KAAK,eAAiBA,EAAO,GAAIM,GAAa/C,KAAM6C,EAAQX,IAS9C,gBAAXD,KAEPI,EADEI,EAAKR,YAAoBoB,UACnBZ,EAAKR,GAASG,MAAMK,EAAMV,GAE1BU,EAAKC,QAAQT,MAM7B,OAAqB,mBAAVI,GAEFA,EAEAC,EA1oDNgB,OAAOC,UAAUC,WACnB,WAEC,GAAIC,MAAcA,SACdC,EAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBzC,OAAOuC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELE,EAAU,GAAGA,QACbP,EAAW,SAAUQ,GACvB,GAAY,MAARhE,KACF,KAAM,IAAIiE,UAEZ,IAAIxC,GAAS6B,OAAOtD,KACpB,IAAIgE,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAM,IAAIC,UAEZ,IAAIE,GAAe1C,EAAO2C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWvC,UAAUoC,OAAS,EAAIpC,UAAU,GAAKwC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,OAAIG,GAAeK,EAAQR,GAClB,EAEyC,IAA3CJ,EAAQG,KAAKzC,EAAQ4C,EAAcI,GAExCf,GACFA,EAAeJ,OAAOC,UAAW,YAC/BlB,MAASmB,EACTuB,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAUC,SAAWA,KAK7BF,OAAOC,UAAU0B,aACnB,WAEC,GAAIvB,GAAkB,WAEpB,IACE,GAAIC,MACAC,EAAkBzC,OAAOuC,eACzBG,EAASD,EAAgBD,EAAQA,EAAQA,IAAWC,EACxD,MAAOE,IAET,MAAOD,MAELJ,KAAcA,SACdwB,EAAa,SAAUjB,GACzB,GAAY,MAARhE,KACF,KAAM,IAAIiE,UAEZ,IAAIxC,GAAS6B,OAAOtD,KACpB,IAAIgE,GAAmC,mBAAzBP,EAASS,KAAKF,GAC1B,KAAM,IAAIC,UAEZ,IAAIE,GAAe1C,EAAO2C,OACtBC,EAAef,OAAOU,GACtBM,EAAeD,EAAaD,OAC5BG,EAAWvC,UAAUoC,OAAS,EAAIpC,UAAU,GAAKwC,OAEjDC,EAAMF,EAAWG,OAAOH,GAAY,CACpCE,IAAOA,IACTA,EAAM,EAER,IAAIE,GAAQC,KAAKC,IAAID,KAAKE,IAAIL,EAAK,GAAIN,EAEvC,IAAIG,EAAeK,EAAQR,EACzB,OAAO,CAGT,KADA,GAAIe,GAAQ,KACHA,EAAQZ,GACf,GAAI7C,EAAO0D,WAAWR,EAAQO,IAAUb,EAAac,WAAWD,GAC9D,OAAO,CAGX,QAAO,EAELxB,GACFA,EAAeJ,OAAOC,UAAW,cAC/BlB,MAAS4C,EACTF,cAAgB,EAChBC,UAAY,IAGd1B,OAAOC,UAAU0B,WAAaA,KAK/B9D,OAAOC,OACVD,OAAOC,KAAO,SACZgE,EACAC,EACAC,GAGAA,IAEA,KAAKD,IAAKD,GAERE,EAAE1C,eAAesB,KAAKkB,EAAGC,IAAMC,EAAEC,KAAKF,EAExC,OAAOC,KAIXrF,EAAEgD,GAAGuC,cAAgB,SAAUC,GAC7B,GACI3D,GADA4D,EAAK1F,KAAK,EAGV0F,GAAGC,eACgB,kBAAVC,OAET9D,EAAQ,GAAI8D,OAAMH,GAChBI,SAAS,KAIX/D,EAAQgE,SAASC,YAAY,SAC7BjE,EAAMkE,UAAUP,GAAW,GAAM,IAGnCC,EAAGC,cAAc7D,KAEb4D,EAAGO,YACLnE,EAAQgE,SAASI,oBACjBpE,EAAMqE,UAAYV,EAClBC,EAAGO,UAAU,KAAOR,EAAW3D,IAGjC9B,KAAKoG,QAAQX,KAMjBxF,EAAEoG,KAAK,KAAKC,UAAY,SAAUC,EAAKrB,EAAOsB,GAC5C,GAAIC,GAAOxG,EAAEsG,GACTG,GAAYD,EAAKhE,KAAK,WAAagE,EAAKtG,QAAQwG,aACpD,OAAOD,GAASlD,SAASgD,EAAK,GAAGG,gBAInC1G,EAAEoG,KAAK,KAAKO,QAAU,SAAUL,EAAKrB,EAAOsB,GAC1C,GAAIC,GAAOxG,EAAEsG,GACTG,GAAYD,EAAKhE,KAAK,WAAagE,EAAKtG,QAAQwG,aACpD,OAAOD,GAASzB,WAAWuB,EAAK,GAAGG,gBAIrC1G,EAAEoG,KAAK,KAAKQ,WAAa,SAAUN,EAAKrB,EAAOsB,GAC7C,GAAIC,GAAOxG,EAAEsG,GACTG,GAAYD,EAAKhE,KAAK,WAAagE,EAAKhE,KAAK,mBAAqBgE,EAAKtG,QAAQwG,aACnF,OAAOD,GAASlD,SAASgD,EAAK,GAAGG,gBAInC1G,EAAEoG,KAAK,KAAKS,SAAW,SAAUP,EAAKrB,EAAOsB,GAC3C,GAAIC,GAAOxG,EAAEsG,GACTG,GAAYD,EAAKhE,KAAK,WAAagE,EAAKhE,KAAK,mBAAqBgE,EAAKtG,QAAQwG,aACnF,OAAOD,GAASzB,WAAWuB,EAAK,GAAGG,eAkDrC,IAAI5D,GAAe,SAAUgE,EAASrE,EAASsE,GACzCA,IACFA,EAAEC,kBACFD,EAAEE,kBAGJlH,KAAKmH,SAAWlH,EAAE8G,GAClB/G,KAAKoH,YAAc,KACnBpH,KAAKqH,QAAU,KACfrH,KAAKsH,MAAQ,KACbtH,KAAKuH,KAAO,KACZvH,KAAK0C,QAAUA,EAIY,OAAvB1C,KAAK0C,QAAQ8E,QACfxH,KAAK0C,QAAQ8E,MAAQxH,KAAKmH,SAASM,KAAK,UAI1CzH,KAAK0H,IAAM3E,EAAaQ,UAAUmE,IAClC1H,KAAK2H,OAAS5E,EAAaQ,UAAUoE,OACrC3H,KAAK4H,QAAU7E,EAAaQ,UAAUqE,QACtC5H,KAAK6H,SAAW9E,EAAaQ,UAAUsE,SACvC7H,KAAK8H,UAAY/E,EAAaQ,UAAUuE,UACxC9H,KAAK+H,YAAchF,EAAaQ,UAAUwE,YAC1C/H,KAAKgI,QAAUjF,EAAaQ,UAAUyE,QACtChI,KAAKiI,OAASlF,EAAaQ,UAAU0E,OACrCjI,KAAKkI,KAAOnF,EAAaQ,UAAU2E,KACnClI,KAAKmI,KAAOpF,EAAaQ,UAAU4E,KAEnCnI,KAAKoI,OAGPrF,GAAasF,QAAU,SAGvBtF,EAAaC,UACXsF,iBAAkB,mBAClBC,gBAAiB,yBACjBC,kBAAmB,SAAUC,EAAaC,GACxC,MAAuB,IAAfD,EAAoB,oBAAsB,sBAEpDE,eAAgB,SAAUC,EAAQC,GAChC,OACa,GAAVD,EAAe,+BAAiC,gCACpC,GAAZC,EAAiB,qCAAuC,wCAG7DC,cAAe,aACfC,gBAAiB,eACjBC,YAAY,EACZC,eAAgB,QAChBC,kBAAmB,KACnBC,UAAW,MACXC,MAAO,cACPC,KAAM,OACN7B,MAAO,KACP8B,mBAAoB,SACpBC,OAAO,EACPC,WAAW,EACXC,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,QAAQ,EACRC,YAAY,EACZC,sBAAuB,KACvBC,qBAAqB,EACrBC,gBAAiB,WACjBC,YAAY,EACZC,SAAU,YACVC,SAAU,eACVC,UAAU,EACVlH,UACEmH,MAAO,+BAETC,YAAY,EACZC,QAAQ,EACRC,aAAa,EACbC,oBAAoB,GAGtB5H,EAAaQ,WAEXqH,YAAa7H,EAEbqF,KAAM,WACJ,GAAIyC,GAAO7K,KACP8K,EAAK9K,KAAKmH,SAASM,KAAK,KAE5BzH,MAAKmH,SAAS4D,SAAS,oBAIvB/K,KAAKgL,SACLhL,KAAKiL,SAAWjL,KAAKmH,SAAS+D,KAAK,YACnClL,KAAKmL,UAAYnL,KAAKmH,SAAS+D,KAAK,aACpClL,KAAKoH,YAAcpH,KAAKoL,aACxBpL,KAAKmH,SACFkE,MAAMrL,KAAKoH,aACXkE,SAAStL,KAAKoH,aACjBpH,KAAKqH,QAAUrH,KAAKoH,YAAYmE,SAAS,UACzCvL,KAAKsH,MAAQtH,KAAKoH,YAAYmE,SAAS,kBACvCvL,KAAKwL,WAAaxL,KAAKsH,MAAMiE,SAAS,UACtCvL,KAAKyL,WAAazL,KAAKsH,MAAMoE,KAAK,SAElC1L,KAAKmH,SAASwE,YAAY,oBAEtB3L,KAAK0C,QAAQiI,oBACf3K,KAAKsH,MAAMyD,SAAS,uBAEJ,mBAAPD,KACT9K,KAAKqH,QAAQI,KAAK,UAAWqD,GAC7B7K,EAAE,cAAgB6K,EAAK,MAAMc,MAAM,SAAU5E,GAC3CA,EAAEE,iBACF2D,EAAKxD,QAAQwE,WAIjB7L,KAAK8L,gBACL9L,KAAK+L,gBACD/L,KAAK0C,QAAQqH,YAAY/J,KAAKgM,qBAClChM,KAAK2H,SACL3H,KAAK6H,WACL7H,KAAKiM,WACDjM,KAAK0C,QAAQ8G,WAAWxJ,KAAKkM,iBACjClM,KAAKsH,MAAM7E,KAAK,OAAQzC,MACxBA,KAAKoH,YAAY3E,KAAK,OAAQzC,MAC1BA,KAAK0C,QAAQ+H,QAAQzK,KAAKyK,SAE9BzK,KAAKoH,YAAY+E,IACfC,mBAAoB,SAAUpF,GAC5B6D,EAAK1D,SAASf,QAAQ,iBAAkBY,IAE1CqF,qBAAsB,SAAUrF,GAC9B6D,EAAK1D,SAASf,QAAQ,mBAAoBY,IAE5CsF,mBAAoB,SAAUtF,GAC5B6D,EAAK1D,SAASf,QAAQ,iBAAkBY,IAE1CuF,oBAAqB,SAAUvF,GAC7B6D,EAAK1D,SAASf,QAAQ,kBAAmBY,MAIzC6D,EAAK1D,SAAS,GAAGqF,aAAa,aAChCxM,KAAKmH,SAASgF,GAAG,UAAW,WAC1BtB,EAAKxD,QACF0D,SAAS,cACTc,QAEHhB,EAAK1D,SAASgF,IACZM,kBAAmB,WACjB5B,EAAKxD,QAAQwE,QACbhB,EAAK1D,SAASuF,IAAI,oBAEpBC,kBAAmB,WACjB9B,EAAK1D,SACFO,IAAImD,EAAK1D,SAASO,OAClBgF,IAAI,oBAETE,qBAAsB,WAEhB5M,KAAK6M,SAASC,OAAOjC,EAAKxD,QAAQsE,YAAY,cAClDd,EAAK1D,SAASuF,IAAI,2BAO1BK,WAAW,WACTlC,EAAK1D,SAASf,QAAQ,uBAI1B4G,eAAgB,WAGd,GAAI1C,GAAYtK,KAAKiL,UAAYjL,KAAK0C,QAAQ4H,SAAY,aAAe,GACrE2C,EAAajN,KAAKmH,SAAS+F,SAASC,SAAS,eAAiB,mBAAqB,GACnFhC,EAAYnL,KAAKmL,UAAY,aAAe,GAE5CrB,EAAS9J,KAAK0C,QAAQoH,OAAS,qGAAuG9J,KAAK0C,QAAQoH,OAAS,SAAW,GACvKsD,EAAYpN,KAAK0C,QAAQqH,WAC7B,wFAEC,OAAS/J,KAAK0C,QAAQsH,sBAAwB,GAAK,iBAAmBvJ,EAAWT,KAAK0C,QAAQsH,uBAAyB,KAAO,UAEzH,GACFqD,EAAarN,KAAKiL,UAAYjL,KAAK0C,QAAQyH,WAC/C,oJAGAnK,KAAK0C,QAAQoG,cACb,sFAEA9I,KAAK0C,QAAQqG,gBACb,wBAGM,GACFuE,EAAatN,KAAKiL,UAAYjL,KAAK0C,QAAQsG,WAC/C,oHAGAhJ,KAAK0C,QAAQuG,eACb,wBAGM,GACFsE,EACA,yCAA2CjD,EAAW2C,EAAa,kCACjCjN,KAAK0C,QAAQyG,UAAY,2CAA6CgC,EAAY,8EAGpHnL,KAAK0C,QAAQU,SAASmH,MACtB,mDAGAT,EACAsD,EACAC,EACA,oDAEAC,EACA,cAGJ,OAAOrN,GAAEsN,IAGXnC,WAAY,WACV,GAAIoC,GAAQxN,KAAKgN,iBACbS,EAAKzN,KAAK0N,UAGd,OADAF,GAAM9B,KAAK,MAAM,GAAGiC,UAAYF,EACzBD,GAGTI,SAAU,WAER5N,KAAK6N,WAEL,IAAIJ,GAAKzN,KAAK0N,UACd1N,MAAKwL,WAAW,GAAGmC,UAAYF,GAGjCI,UAAW,WACT7N,KAAKsH,MAAMoE,KAAK,MAAMzD,UAGxByF,SAAU,WACR,GAAI7C,GAAO7K,KACP8N,KACAC,EAAQ,EACRC,EAAclI,SAASmI,cAAc,UACrCC,EAAU,GAUVC,EAAa,SAAUC,EAASlJ,EAAOmJ,EAASC,GAClD,MAAO,OACkB,mBAAZD,GAA0B,KAAOA,EAAW,WAAaA,EAAU,IAAM,KAC/D,mBAAVnJ,GAAwB,OAASA,EAAS,yBAA2BA,EAAQ,IAAM,KACtE,mBAAboJ,GAA2B,OAASA,EAAY,kBAAoBA,EAAW,IAAM,IAC9F,IAAMF,EAAU,SAUlBG,EAAY,SAAUpO,EAAMkO,EAASG,EAAQC,GAC/C,MAAO,mBACiB,mBAAZJ,GAA0B,WAAaA,EAAU,IAAM,KAC5C,mBAAXG,GAAyB,WAAaA,EAAS,IAAM,KAC5D3D,EAAKnI,QAAQuH,oBAAsB,0BAA4B/J,EAAgBO,EAAWN,IAAS,IAAM,KACvF,mBAAXsO,IAAqC,OAAXA,EAAkB,iBAAmBA,EAAS,IAAM,IACtF,IAAMtO,EACN,gBAAkB0K,EAAKnI,QAAQ0H,SAAW,IAAMS,EAAKnI,QAAQ2H,SAAW,2BAI9E,IAAIrK,KAAK0C,QAAQ8E,QAAUxH,KAAKiL,WAG9BiD,KAEKlO,KAAKmH,SAASuE,KAAK,oBAAoBtH,QAAQ,CAElD,GAAI2C,GAAU/G,KAAKmH,SAAS,EAC5B6G,GAAYU,UAAY,kBACxBV,EAAYW,YAAY7I,SAAS8I,eAAe5O,KAAK0C,QAAQ8E,QAC7DwG,EAAY3L,MAAQ,GACpB0E,EAAQ8H,aAAab,EAAajH,EAAQ+H,YAEyBtK,SAA/DvE,EAAE8G,EAAQrE,QAAQqE,EAAQgI,gBAAgBtH,KAAK,cAA2BuG,EAAYgB,UAAW,GAkFzG,MA9EAhP,MAAKmH,SAASuE,KAAK,UAAUnL,KAAK,SAAU2E,GAC1C,GAAI3C,GAAQtC,EAAED,KAId,IAFAkO,KAEI3L,EAAM4K,SAAS,mBAAnB,CAGA,GAAI8B,GAAcjP,KAAK0O,WAAa,GAChCF,EAASxO,KAAKoJ,MAAM8F,QACpB/O,EAAOoC,EAAME,KAAK,WAAaF,EAAME,KAAK,WAAaF,EAAM7B,OAC7D+N,EAASlM,EAAME,KAAK,UAAYF,EAAME,KAAK,UAAY,KACvD0M,EAA2C,mBAA1B5M,GAAME,KAAK,WAA6B,6BAA+BF,EAAME,KAAK,WAAa,WAAa,GAC7H2M,EAAqC,mBAAvB7M,GAAME,KAAK,QAA0B,gBAAkBoI,EAAKnI,QAAQ0H,SAAW,IAAM7H,EAAME,KAAK,QAAU,aAAe,GACvI4M,EAAyC,aAA5BrP,KAAKsP,WAAWC,QAC7BC,EAAaxP,KAAKyP,UAAaJ,GAAcrP,KAAKsP,WAAWG,QAMjE,IAJa,KAATL,GAAeI,IACjBJ,EAAO,SAAWA,EAAO,WAGvBvE,EAAKnI,QAAQ+G,cAAgB+F,IAAeH,EAE9C,WADAnB,IASF,IALK3L,EAAME,KAAK,aAEdtC,EAAOiP,EAAO,sBAAwBjP,EAAOgP,EAAU,WAGrDE,GAAc9M,EAAME,KAAK,cAAe,EAAM,CAChD,GAAIiN,GAAgB,IAAM1P,KAAKsP,WAAWZ,WAAa,EAEvD,IAAsB,IAAlBnM,EAAM2C,QAAe,CACvB6I,GAAS,CAGT,IAAI4B,GAAQ3P,KAAKsP,WAAWK,MACxBC,EAAyD,mBAAnCrN,GAAM2K,SAASzK,KAAK,WAA6B,6BAA+BF,EAAM2K,SAASzK,KAAK,WAAa,WAAa,GACpJoN,EAAYtN,EAAM2K,SAASzK,KAAK,QAAU,gBAAkBoI,EAAKnI,QAAQ0H,SAAW,IAAM7H,EAAM2K,SAASzK,KAAK,QAAU,aAAe,EAE3IkN,GAAQE,EAAY,sBAAwBF,EAAQC,EAAe,UAErD,IAAV1K,GAAe4I,EAAI1J,OAAS,IAC9B8J,IACAJ,EAAIvI,KAAK4I,EAAW,GAAI,KAAM,UAAWJ,EAAQ,SAEnDG,IACAJ,EAAIvI,KAAK4I,EAAWwB,EAAO,KAAM,kBAAoBD,EAAe3B,IAGtE,GAAIlD,EAAKnI,QAAQ+G,cAAgB+F,EAE/B,WADAtB,IAIFJ,GAAIvI,KAAK4I,EAAWI,EAAUpO,EAAM,OAAS8O,EAAcS,EAAelB,EAAQC,GAASvJ,EAAO,GAAI6I,QAC7FxL,GAAME,KAAK,cAAe,EACnCqL,EAAIvI,KAAK4I,EAAW,GAAIjJ,EAAO,YACtB3C,EAAME,KAAK,aAAc,EAClCqL,EAAIvI,KAAK4I,EAAWI,EAAUpO,EAAM8O,EAAaT,EAAQC,GAASvJ,EAAO,sBAErElF,KAAK8P,wBAAkE,aAAxC9P,KAAK8P,uBAAuBP,UAC7DrB,IACAJ,EAAIvI,KAAK4I,EAAW,GAAI,KAAM,UAAWJ,EAAQ,SAEnDD,EAAIvI,KAAK4I,EAAWI,EAAUpO,EAAM8O,EAAaT,EAAQC,GAASvJ,IAGpE2F,GAAKG,MAAM9F,GAASgJ,KAIjBlO,KAAKiL,UAA6D,IAAjDjL,KAAKmH,SAASuE,KAAK,mBAAmBtH,QAAiBpE,KAAK0C,QAAQ8E,OACxFxH,KAAKmH,SAASuE,KAAK,UAAUqE,GAAG,GAAG7E,KAAK,YAAY,GAAMzD,KAAK,WAAY,YAGtEqG,EAAIzM,KAAK,KAGlB2O,QAAS,WAEP,MADiB,OAAbhQ,KAAKuH,OAAcvH,KAAKuH,KAAOvH,KAAKsH,MAAMoE,KAAK,OAC5C1L,KAAKuH,MAMdI,OAAQ,SAAUsI,GAChB,GACIC,GADArF,EAAO7K,IAIPiQ,MAAa,GACfjQ,KAAKmH,SAASuE,KAAK,UAAUnL,KAAK,SAAU2E,GAC1C,GAAIqC,GAAOsD,EAAKmF,UAAUD,GAAGlF,EAAKG,MAAM9F,GAExC2F,GAAKsF,YAAYjL,EAAOlF,KAAKyP,UAAwC,aAA5BzP,KAAKsP,WAAWC,SAA0BvP,KAAKsP,WAAWG,SAAUlI,GAC7GsD,EAAKuF,YAAYlL,EAAOlF,KAAKgP,SAAUzH,KAI3CvH,KAAKqQ,UAEL,IAAIC,GAAgBtQ,KAAKmH,SAASuE,KAAK,UAAU6E,IAAI,WACnD,GAAIvQ,KAAKgP,SAAU,CACjB,GAAInE,EAAKnI,QAAQ+G,eAAiBzJ,KAAKyP,UAAwC,aAA5BzP,KAAKsP,WAAWC,SAA0BvP,KAAKsP,WAAWG,UAAW,MAExH,IAEIN,GAFA5M,EAAQtC,EAAED,MACVoP,EAAO7M,EAAME,KAAK,SAAWoI,EAAKnI,QAAQiH,SAAW,aAAekB,EAAKnI,QAAQ0H,SAAW,IAAM7H,EAAME,KAAK,QAAU,UAAY,EAQvI,OAJE0M,GADEtE,EAAKnI,QAAQgH,aAAenH,EAAME,KAAK,aAAeoI,EAAKI,SACnD,8BAAgC1I,EAAME,KAAK,WAAa,WAExD,GAEuB,mBAAxBF,GAAMkF,KAAK,SACblF,EAAMkF,KAAK,SACTlF,EAAME,KAAK,YAAcoI,EAAKnI,QAAQkH,YACxCrH,EAAME,KAAK,WAEX2M,EAAO7M,EAAM7B,OAASyO,KAGhCqB,UAIChJ,EAASxH,KAAKiL,SAA8BqF,EAAcjP,KAAKrB,KAAK0C,QAAQwG,mBAAnDoH,EAAc,EAG3C,IAAItQ,KAAKiL,UAAYjL,KAAK0C,QAAQ4G,mBAAmBvF,QAAQ,SAAW,GAAI,CAC1E,GAAIe,GAAM9E,KAAK0C,QAAQ4G,mBAAmBmH,MAAM,IAChD,IAAK3L,EAAIV,OAAS,GAAKkM,EAAclM,OAASU,EAAI,IAAsB,GAAdA,EAAIV,QAAekM,EAAclM,QAAU,EAAI,CACvG8L,EAAclQ,KAAK0C,QAAQ+G,aAAe,eAAiB,EAC3D,IAAIiH,GAAa1Q,KAAKmH,SAASuE,KAAK,UAAUiF,IAAI,8CAAgDT,GAAa9L,OAC3GwM,EAAsD,kBAAnC5Q,MAAK0C,QAAQ8F,kBAAoCxI,KAAK0C,QAAQ8F,kBAAkB8H,EAAclM,OAAQsM,GAAc1Q,KAAK0C,QAAQ8F,iBACxJhB,GAAQoJ,EAASpQ,QAAQ,MAAO8P,EAAclM,OAAOX,YAAYjD,QAAQ,MAAOkQ,EAAWjN,aAIrEe,QAAtBxE,KAAK0C,QAAQ8E,QACfxH,KAAK0C,QAAQ8E,MAAQxH,KAAKmH,SAASM,KAAK,UAGH,UAAnCzH,KAAK0C,QAAQ4G,qBACf9B,EAAQxH,KAAK0C,QAAQ8E,OAIlBA,IACHA,EAAsC,mBAAvBxH,MAAK0C,QAAQ8E,MAAwBxH,KAAK0C,QAAQ8E,MAAQxH,KAAK0C,QAAQ4F,kBAIxFtI,KAAKqH,QAAQI,KAAK,QAASxH,EAAE4Q,KAAKrJ,EAAMhH,QAAQ,YAAa,MAC7DR,KAAKqH,QAAQkE,SAAS,kBAAkB7K,KAAK8G,GAE7CxH,KAAKmH,SAASf,QAAQ,uBAOxByB,SAAU,SAAUuB,EAAO0H,GACrB9Q,KAAKmH,SAASM,KAAK,UACrBzH,KAAKoH,YAAY2D,SAAS/K,KAAKmH,SAASM,KAAK,SAASjH,QAAQ,+DAAgE,IAGhI,IAAIuQ,GAAc3H,EAAQA,EAAQpJ,KAAK0C,QAAQ0G,KAEjC,QAAV0H,EACF9Q,KAAKqH,QAAQ0D,SAASgG,GACH,UAAVD,EACT9Q,KAAKqH,QAAQsE,YAAYoF,IAEzB/Q,KAAKqH,QAAQsE,YAAY3L,KAAK0C,QAAQ0G,OACtCpJ,KAAKqH,QAAQ0D,SAASgG,KAI1BC,SAAU,SAAUpJ,GAClB,GAAKA,GAAY5H,KAAK0C,QAAQ2G,QAAS,IAASrJ,KAAKiR,SAArD,CAEA,GAAIC,GAAapL,SAASmI,cAAc,OACpCkD,EAAOrL,SAASmI,cAAc,OAC9BmD,EAAYtL,SAASmI,cAAc,MACnCoD,EAAUvL,SAASmI,cAAc,MACjCR,EAAK3H,SAASmI,cAAc,MAC5BqD,EAAIxL,SAASmI,cAAc,KAC3B9N,EAAO2F,SAASmI,cAAc,QAC9BnE,EAAS9J,KAAK0C,QAAQoH,QAAU9J,KAAKsH,MAAMoE,KAAK,kBAAkBtH,OAAS,EAAIpE,KAAKsH,MAAMoE,KAAK,kBAAkB,GAAG6F,WAAU,GAAQ,KACtIvN,EAAShE,KAAK0C,QAAQqH,WAAajE,SAASmI,cAAc,OAAS,KACnEuD,EAAUxR,KAAK0C,QAAQyH,YAAcnK,KAAKiL,UAAYjL,KAAKsH,MAAMoE,KAAK,kBAAkBtH,OAAS,EAAIpE,KAAKsH,MAAMoE,KAAK,kBAAkB,GAAG6F,WAAU,GAAQ,KAC5JvI,EAAahJ,KAAK0C,QAAQsG,YAAchJ,KAAKiL,UAAYjL,KAAKsH,MAAMoE,KAAK,kBAAkBtH,OAAS,EAAIpE,KAAKsH,MAAMoE,KAAK,kBAAkB,GAAG6F,WAAU,GAAQ,IAcnK,IAZApR,EAAKuO,UAAY,OACjBwC,EAAWxC,UAAY1O,KAAKsH,MAAM,GAAGgI,WAAWZ,UAAY,QAC5DyC,EAAKzC,UAAY,qBACjB0C,EAAU1C,UAAY,sBACtB2C,EAAQ3C,UAAY,UAEpBvO,EAAKwO,YAAY7I,SAAS8I,eAAe,eACzC0C,EAAE3C,YAAYxO,GACdsN,EAAGkB,YAAY2C,GACfF,EAAUzC,YAAYlB,GACtB2D,EAAUzC,YAAY0C,GAClBvH,GAAQqH,EAAKxC,YAAY7E,GACzB9F,EAAQ,CAEV,GAAIyN,GAAQ3L,SAASmI,cAAc,OACnCjK,GAAO0K,UAAY,eACnB+C,EAAM/C,UAAY,eAClB1K,EAAO2K,YAAY8C,GACnBN,EAAKxC,YAAY3K,GAEfwN,GAASL,EAAKxC,YAAY6C,GAC9BL,EAAKxC,YAAYyC,GACbpI,GAAYmI,EAAKxC,YAAY3F,GACjCkI,EAAWvC,YAAYwC,GAEvBrL,SAAS4L,KAAK/C,YAAYuC,EAE1B,IAAIF,GAAWM,EAAEK,aACbC,EAAe9H,EAASA,EAAO6H,aAAe,EAC9CE,EAAe7N,EAASA,EAAO2N,aAAe,EAC9CG,EAAgBN,EAAUA,EAAQG,aAAe,EACjDI,EAAmB/I,EAAaA,EAAW2I,aAAe,EAC1DK,EAAgB/R,EAAEoR,GAASY,aAAY,GAEvCC,EAAwC,kBAArBC,kBAAkCA,iBAAiBhB,IAAQ,EAC9E7J,EAAQ4K,EAAY,KAAOjS,EAAEkR,GAC7BiB,EAAcC,SAASH,EAAYA,EAAUI,WAAahL,EAAMiL,IAAI,eACtDF,SAASH,EAAYA,EAAUM,cAAgBlL,EAAMiL,IAAI,kBACzDF,SAASH,EAAYA,EAAUO,eAAiBnL,EAAMiL,IAAI,mBAC1DF,SAASH,EAAYA,EAAUQ,kBAAoBpL,EAAMiL,IAAI,sBAC3EI,EAAcP,EACAC,SAASH,EAAYA,EAAUU,UAAYtL,EAAMiL,IAAI,cACrDF,SAASH,EAAYA,EAAUW,aAAevL,EAAMiL,IAAI,iBAAmB,CAE7FzM,UAAS4L,KAAKoB,YAAY5B,GAE1BlR,KAAKiR,UACHD,SAAUA,EACVY,aAAcA,EACdC,aAAcA,EACdC,cAAeA,EACfC,iBAAkBA,EAClBC,cAAeA,EACfI,YAAaA,EACbO,WAAYA,KAIhBI,QAAS,WAKP,GAJA/S,KAAKgQ,UACLhQ,KAAKgR,WAEDhR,KAAK0C,QAAQoH,QAAQ9J,KAAKsH,MAAMiL,IAAI,cAAe,GACnDvS,KAAK0C,QAAQ2G,QAAS,EAA1B,CAEA,GAcI2J,GACAC,EACAC,EACAC,EAjBAtI,EAAO7K,KACPsH,EAAQtH,KAAKsH,MACbkE,EAAaxL,KAAKwL,WAClB4H,EAAUnT,EAAEoT,QACZC,EAAetT,KAAKoH,YAAY,GAAGuK,aACnCX,EAAWhR,KAAKiR,SAAmB,SACnCW,EAAe5R,KAAKiR,SAAuB,aAC3CY,EAAe7R,KAAKiR,SAAuB,aAC3Ca,EAAgB9R,KAAKiR,SAAwB,cAC7Cc,EAAmB/R,KAAKiR,SAA2B,iBACnDsC,EAAYvT,KAAKiR,SAAwB,cACzCmB,EAAcpS,KAAKiR,SAAsB,YACzC0B,EAAa3S,KAAKiR,SAAqB,WACvCf,EAAclQ,KAAK0C,QAAQ+G,aAAe,YAAc,GAKxD+J,EAAU,WACRN,EAAkBrI,EAAKzD,YAAYqM,SAASC,IAAMN,EAAQO,YAC1DR,EAAkBC,EAAQQ,SAAWV,EAAkBI,EAK7D,IAFAE,IAE0B,SAAtBxT,KAAK0C,QAAQ2G,KAAiB,CAChC,GAAIwK,GAAU,WACZ,GAAIC,GACA3G,EAAW,SAAUuB,EAAWqF,GAC9B,MAAO,UAAUhN,GACb,MAAIgN,GACQhN,EAAQiN,UAAYjN,EAAQiN,UAAUC,SAASvF,GAAazO,EAAE8G,GAASoG,SAASuB,KAE/E3H,EAAQiN,UAAYjN,EAAQiN,UAAUC,SAASvF,GAAazO,EAAE8G,GAASoG,SAASuB,MAInGwF,EAAMrJ,EAAKW,WAAW,GAAG2I,qBAAqB,MAC9CC,EAAaC,MAAM9Q,UAAU+Q,OAASD,MAAM9Q,UAAU+Q,OAAOpQ,KAAKgQ,EAAK/G,EAAS,UAAU,IAAUtC,EAAKtD,KAAKoJ,IAAI,WAClH4D,EAAWF,MAAM9Q,UAAU+Q,OAASD,MAAM9Q,UAAU+Q,OAAOpQ,KAAKkQ,EAAYjH,EAAS,mBAAmB,IAASiH,EAAWE,OAAO,mBAEvId,KACAR,EAAaG,EAAkBR,EAE3B9H,EAAKnI,QAAQ8G,WACVlC,EAAM7E,KAAK,WAAW6E,EAAM7E,KAAK,SAAU6E,EAAMsM,UACtDX,EAAY3L,EAAM7E,KAAK,WAEvBwQ,EAAY3L,EAAMsM,SAGhB/I,EAAKnI,QAAQmH,YACfgB,EAAKzD,YAAYoN,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAExF9H,EAAKzD,YAAY+F,SAAS,YAC5B6F,EAAaE,EAAkBP,GAI/BmB,EADGM,EAAWhQ,OAASmQ,EAASnQ,OAAU,EACnB,EAAX4M,EAAe2B,EAAa,EAE5B,EAGdrL,EAAMiL,KACJkC,aAAczB,EAAa,KAC3B0B,SAAY,SACZC,aAAcb,EAAYlC,EAAeC,EAAeC,EAAgBC,EAAmB,OAE7FvG,EAAW+G,KACTkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmBK,EAAc,KAC1GwC,aAAc,OACdD,aAAc/P,KAAKE,IAAIgP,EAAY1B,EAAa,GAAK,OAGzDyB,KACA7T,KAAKyL,WAAWiB,IAAI,wCAAwCP,GAAG,uCAAwC0H,GACvGT,EAAQ1G,IAAI,iCAAiCP,GAAG,gCAAiC0H,OAC5E,IAAI7T,KAAK0C,QAAQ2G,MAA6B,QAArBrJ,KAAK0C,QAAQ2G,MAAkBrJ,KAAKuH,KAAKoJ,IAAIT,GAAa9L,OAASpE,KAAK0C,QAAQ2G,KAAM,CACpH,GAAIwL,GAAW7U,KAAKuH,KAAKoJ,IAAI,YAAYA,IAAIT,GAAa3E,WAAWuJ,MAAM,EAAG9U,KAAK0C,QAAQ2G,MAAM0L,OAAO7H,SAAShI,QAC7G8P,EAAYhV,KAAKuH,KAAKuN,MAAM,EAAGD,EAAW,GAAGP,OAAO,YAAYlQ,MACpE4O,GAAahC,EAAWhR,KAAK0C,QAAQ2G,KAAO2L,EAAYzB,EAAYnB,EAEhEvH,EAAKnI,QAAQ8G,WACVlC,EAAM7E,KAAK,WAAW6E,EAAM7E,KAAK,SAAU6E,EAAMsM,UACtDX,EAAY3L,EAAM7E,KAAK,WAEvBwQ,EAAY3L,EAAMsM,SAGhB/I,EAAKnI,QAAQmH,YAEf7J,KAAKoH,YAAYoN,YAAY,SAAUtB,EAAkBC,GAA+CF,EAA3BD,EAAaL,GAE5FrL,EAAMiL,KACJkC,aAAczB,EAAapB,EAAeC,EAAeC,EAAgBC,EAAmB,KAC5F2C,SAAY,SACZC,aAAc,KAEhBnJ,EAAW+G,KACTkC,aAAczB,EAAaZ,EAAc,KACzCwC,aAAc,OACdD,aAAc,QAKpB1I,SAAU,WACR,GAA2B,SAAvBjM,KAAK0C,QAAQ6G,MAAkB,CACjCvJ,KAAKsH,MAAMiL,IAAI,YAAa,IAG5B,IAAI0C,GAAejV,KAAKsH,MAAM4F,SAASgI,QAAQ5J,SAAS,QACpD6J,EAAgBnV,KAAK0C,QAAQ8G,UAAYxJ,KAAKoH,YAAY8N,QAAQ5J,SAAS,QAAU2J,EACrFG,EAAUH,EAAa1J,SAAS,kBAAkB8J,aAClDC,EAAWH,EAAc5C,IAAI,QAAS,QAAQhH,SAAS,UAAU8J,YAErEJ,GAAahN,SACbkN,EAAclN,SAGdjI,KAAKoH,YAAYmL,IAAI,QAAS3N,KAAKE,IAAIsQ,EAASE,GAAY,UAC5B,QAAvBtV,KAAK0C,QAAQ6G,OAEtBvJ,KAAKsH,MAAMiL,IAAI,YAAa,IAC5BvS,KAAKoH,YAAYmL,IAAI,QAAS,IAAIxH,SAAS,cAClC/K,KAAK0C,QAAQ6G,OAEtBvJ,KAAKsH,MAAMiL,IAAI,YAAa,IAC5BvS,KAAKoH,YAAYmL,IAAI,QAASvS,KAAK0C,QAAQ6G,SAG3CvJ,KAAKsH,MAAMiL,IAAI,YAAa,IAC5BvS,KAAKoH,YAAYmL,IAAI,QAAS,IAG5BvS,MAAKoH,YAAY+F,SAAS,cAAuC,QAAvBnN,KAAK0C,QAAQ6G,OACzDvJ,KAAKoH,YAAYuE,YAAY,cAIjCO,eAAgB,WACdlM,KAAKuV,aAAetV,EAAE,+BAEtB,IACIwE,GACA+Q,EAFA3K,EAAO7K,KAGPyV,EAAe,SAAUtO,GACvB0D,EAAK0K,aAAaxK,SAAS5D,EAASM,KAAK,SAASjH,QAAQ,2BAA4B,KAAKgU,YAAY,SAAUrN,EAASgG,SAAS,WACnI1I,EAAM0C,EAASsM,SACf+B,EAAerO,EAASgG,SAAS,UAAY,EAAIhG,EAAS,GAAGwK,aAC7D9G,EAAK0K,aAAahD,KAChBmB,IAAOjP,EAAIiP,IAAM8B,EACjBE,KAAQjR,EAAIiR,KACZnM,MAASpC,EAAS,GAAGwO,cAI7B3V,MAAKqH,QAAQ8E,GAAG,QAAS,WACvB,GAAI5J,GAAQtC,EAAED,KAEV6K,GAAK2E,eAITiG,EAAa5K,EAAKzD,aAElByD,EAAK0K,aACFjK,SAAST,EAAKnI,QAAQ8G,WACtBgL,YAAY,QAASjS,EAAM4K,SAAS,SACpCyI,OAAO/K,EAAKvD,UAGjBrH,EAAEoT,QAAQlH,GAAG,gBAAiB,WAC5BsJ,EAAa5K,EAAKzD,eAGpBpH,KAAKmH,SAASgF,GAAG,iBAAkB,WACjCtB,EAAKvD,MAAM7E,KAAK,SAAUoI,EAAKvD,MAAMsM,UACrC/I,EAAK0K,aAAaM,YAItBzF,YAAa,SAAUlL,EAAO8J,EAAUzH,GACjCA,IACHA,EAAOvH,KAAKgQ,UAAUD,GAAG/P,KAAKgL,MAAM9F,KAGtCqC,EAAKiN,YAAY,WAAYxF,IAG/BmB,YAAa,SAAUjL,EAAOuK,EAAUlI,GACjCA,IACHA,EAAOvH,KAAKgQ,UAAUD,GAAG/P,KAAKgL,MAAM9F,KAGlCuK,EACFlI,EAAKwD,SAAS,YAAYQ,SAAS,KAAK9D,KAAK,OAAQ,KAAKA,KAAK,WAAY,IAE3EF,EAAKoE,YAAY,YAAYJ,SAAS,KAAKuK,WAAW,QAAQrO,KAAK,WAAY,IAInF+H,WAAY,WACV,MAAOxP,MAAKmH,SAAS,GAAGsI,UAG1B3D,cAAe,WACb,GAAIjB,GAAO7K,IAEPA,MAAKwP,cACPxP,KAAKoH,YAAY2D,SAAS,YAC1B/K,KAAKqH,QAAQ0D,SAAS,YAAYtD,KAAK,WAAY,MAE/CzH,KAAKqH,QAAQ8F,SAAS,cACxBnN,KAAKoH,YAAYuE,YAAY,YAC7B3L,KAAKqH,QAAQsE,YAAY,aAGU,IAAjC3L,KAAKqH,QAAQI,KAAK,aAAsBzH,KAAKmH,SAAS1E,KAAK,aAC7DzC,KAAKqH,QAAQyO,WAAW,aAI5B9V,KAAKqH,QAAQuE,MAAM,WACjB,OAAQf,EAAK2E,gBAIjBa,SAAU,WACJrQ,KAAKmH,SAAS1E,KAAK,cAAgBzC,KAAKmH,SAASM,KAAK,aACpB,MAAnCzH,KAAKmH,SAASM,KAAK,aAA0D,QAAnCzH,KAAKmH,SAASM,KAAK,cAC9DzH,KAAKmH,SAAS1E,KAAK,WAAYzC,KAAKmH,SAASM,KAAK,aAClDzH,KAAKqH,QAAQI,KAAK,WAAYzH,KAAKmH,SAAS1E,KAAK,cAGnDzC,KAAKmH,SAASM,KAAK,WAAY,MAGjCsE,cAAe,WACb,GAAIlB,GAAO7K,KACP+V,EAAY9V,EAAE6F,SAElB9F,MAAKoH,YAAY+E,GAAG,sBAAuB,iBAAkB,SAAUnF,GACrEA,EAAEC,oBAGJ8O,EAAUtT,KAAK,eAAe,GAE9BzC,KAAKqH,QAAQ8E,GAAG,QAAS,SAAUnF,GAC7B,OAAOtF,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAQsS,EAAUtT,KAAK,iBACtDuE,EAAEE,iBACF6O,EAAUtT,KAAK,eAAe,MAIpCzC,KAAKqH,QAAQ8E,GAAG,QAAS,WACvBtB,EAAKkI,YAGP/S,KAAKmH,SAASgF,GAAG,kBAAmB,WAClC,GAAKtB,EAAKnI,QAAQqH,YAAec,EAAKI,UAE/B,IAAKJ,EAAKI,SAAU,CACzB,GAAI8D,GAAgBlE,EAAKG,MAAMH,EAAK1D,SAAS,GAAG4H,cAEhD,IAA6B,gBAAlBA,IAA8BlE,EAAKnI,QAAQ2G,QAAS,EAAO,MAGtE,IAAIoK,GAAS5I,EAAKtD,KAAKwI,GAAGhB,GAAe,GAAGkH,UAAYpL,EAAKW,WAAW,GAAGyK,SAC3ExC,GAASA,EAAS5I,EAAKW,WAAW,GAAGmG,aAAa,EAAI9G,EAAKoG,SAASD,SAAS,EAC7EnG,EAAKW,WAAW,GAAGmI,UAAYF,OAT/B5I,GAAKW,WAAWE,KAAK,eAAeG,UAaxC7L,KAAKwL,WAAWW,GAAG,QAAS,OAAQ,SAAUnF,GAC5C,GAAIzE,GAAQtC,EAAED,MACVkW,EAAe3T,EAAM2K,SAASzK,KAAK,iBACnC0T,EAAYtL,EAAK1D,SAASO,MAC1B0O,EAAYvL,EAAK1D,SAAS+D,KAAK,gBAUnC,IAPIL,EAAKI,UACPjE,EAAEC,kBAGJD,EAAEE,kBAGG2D,EAAK2E,eAAiBjN,EAAM2K,SAASC,SAAS,YAAa,CAC9D,GAAIkJ,GAAWxL,EAAK1D,SAASuE,KAAK,UAC9B4K,EAAUD,EAAStG,GAAGmG,GACtBK,EAAQD,EAAQpL,KAAK,YACrBsL,EAAYF,EAAQpJ,OAAO,YAC3B1C,EAAaK,EAAKnI,QAAQ8H,WAC1BiM,EAAgBD,EAAU/T,KAAK,gBAAiB,CAEpD,IAAKoI,EAAKI,UAUR,GAJAqL,EAAQpL,KAAK,YAAaqL,GAC1B1L,EAAKuF,YAAY8F,GAAeK,GAChChU,EAAMmU,OAEFlM,KAAe,GAASiM,KAAkB,EAAO,CACnD,GAAIE,GAAanM,EAAa6L,EAAS/B,OAAO,aAAalQ,OACvDwS,EAAgBH,EAAgBD,EAAU9K,KAAK,mBAAmBtH,MAEtE,IAAKoG,GAAcmM,GAAgBF,GAAiBG,EAClD,GAAIpM,GAA4B,GAAdA,EAChB6L,EAASnL,KAAK,YAAY,GAC1BoL,EAAQpL,KAAK,YAAY,GACzBL,EAAKW,WAAWE,KAAK,aAAaC,YAAY,YAC9Cd,EAAKuF,YAAY8F,GAAc,OAC1B,IAAIO,GAAkC,GAAjBA,EAAoB,CAC9CD,EAAU9K,KAAK,mBAAmBR,KAAK,YAAY,GACnDoL,EAAQpL,KAAK,YAAY,EACzB,IAAI2L,GAAatU,EAAM2K,SAASzK,KAAK,WACrCoI,GAAKW,WAAWE,KAAK,mBAAqBmL,EAAa,MAAMlL,YAAY,YACzEd,EAAKuF,YAAY8F,GAAc,OAC1B,CACL,GAAIY,GAAwD,kBAAhCjM,GAAKnI,QAAQiG,eACjCkC,EAAKnI,QAAQiG,eAAe6B,EAAYiM,GAAiB5L,EAAKnI,QAAQiG,eAC1EoO,EAASD,EAAc,GAAGtW,QAAQ,MAAOgK,GACzCwM,EAAYF,EAAc,GAAGtW,QAAQ,MAAOiW,GAC5CQ,EAAUhX,EAAE,6BAGZ6W,GAAc,KAChBC,EAASA,EAAOvW,QAAQ,QAASsW,EAAc,GAAGtM,EAAa,EAAI,EAAI,IACvEwM,EAAYA,EAAUxW,QAAQ,QAASsW,EAAc,GAAGL,EAAgB,EAAI,EAAI,KAGlFH,EAAQpL,KAAK,YAAY,GAEzBL,EAAKvD,MAAMsO,OAAOqB,GAEdzM,GAAcmM,IAChBM,EAAQrB,OAAO3V,EAAE,QAAU8W,EAAS,WACpClM,EAAK1D,SAASf,QAAQ,yBAGpBqQ,GAAiBG,IACnBK,EAAQrB,OAAO3V,EAAE,QAAU+W,EAAY,WACvCnM,EAAK1D,SAASf,QAAQ,4BAGxB2G,WAAW,WACTlC,EAAKuF,YAAY8F,GAAc,IAC9B,IAEHe,EAAQC,MAAM,KAAKC,QAAQ,IAAK,WAC9BlX,EAAED,MAAMiI,iBAzDhBoO,GAASnL,KAAK,YAAY,GAC1BoL,EAAQpL,KAAK,YAAY,GACzBL,EAAKW,WAAWE,KAAK,aAAaC,YAAY,YAC9Cd,EAAKuF,YAAY8F,GAAc,EA6D5BrL,GAAKI,SAECJ,EAAKnI,QAAQqH,YACtBc,EAAKY,WAAWI,QAFhBhB,EAAKxD,QAAQwE,SAMVsK,GAAatL,EAAK1D,SAASO,OAASmD,EAAKI,UAAcmL,GAAavL,EAAK1D,SAAS+D,KAAK,mBAAqBL,EAAKI,WAEpHJ,EAAK1D,SACFf,QAAQ,qBAAsB8P,EAAcI,EAAQpL,KAAK,YAAaqL,IACtE/Q,cAAc,aAKvBxF,KAAKsH,MAAM6E,GAAG,QAAS,6DAA8D,SAAUnF,GACzFA,EAAEoQ,eAAiBpX,OACrBgH,EAAEE,iBACFF,EAAEC,kBACE4D,EAAKnI,QAAQqH,aAAe9J,EAAE+G,EAAEqQ,QAAQlK,SAAS,SACnDtC,EAAKY,WAAWI,QAEhBhB,EAAKxD,QAAQwE,WAKnB7L,KAAKwL,WAAWW,GAAG,QAAS,6BAA8B,SAAUnF,GAClEA,EAAEE,iBACFF,EAAEC,kBACE4D,EAAKnI,QAAQqH,WACfc,EAAKY,WAAWI,QAEhBhB,EAAKxD,QAAQwE,UAIjB7L,KAAKsH,MAAM6E,GAAG,QAAS,wBAAyB,WAC9CtB,EAAKxD,QAAQuE,UAGf5L,KAAKyL,WAAWU,GAAG,QAAS,SAAUnF,GACpCA,EAAEC,oBAGJjH,KAAKsH,MAAM6E,GAAG,QAAS,eAAgB,SAAUnF,GAC3C6D,EAAKnI,QAAQqH,WACfc,EAAKY,WAAWI,QAEhBhB,EAAKxD,QAAQwE,QAGf7E,EAAEE,iBACFF,EAAEC,kBAEEhH,EAAED,MAAMmN,SAAS,iBACnBtC,EAAK/C,YAEL+C,EAAK9C,gBAIT/H,KAAKmH,SAASmQ,OAAO,WACnBzM,EAAKlD,QAAO,MAIhBqE,mBAAoB,WAClB,GAAInB,GAAO7K,KACPuX,EAActX,EAAE,+BAEpBD,MAAKqH,QAAQ8E,GAAG,uDAAwD,WACtEtB,EAAKW,WAAWE,KAAK,WAAWC,YAAY,UACtCd,EAAKY,WAAW/D,QACpBmD,EAAKY,WAAW/D,IAAI,IACpBmD,EAAKtD,KAAKoJ,IAAI,cAAchF,YAAY,UAClC4L,EAAYrK,SAAS9I,QAAQmT,EAAYtP,UAE5C4C,EAAKI,UAAUJ,EAAKW,WAAWE,KAAK,aAAaX,SAAS,UAC/DgC,WAAW,WACTlC,EAAKY,WAAWI,SACf,MAGL7L,KAAKyL,WAAWU,GAAG,6EAA8E,SAAUnF,GACzGA,EAAEC,oBAGJjH,KAAKyL,WAAWU,GAAG,uBAAwB,WACzC,GAAItB,EAAKY,WAAW/D,MAAO,CACzB,GAAI8P,GAAc3M,EAAKtD,KAAKoJ,IAAI,cAAchF,YAAY,UAAUJ,SAAS,IAE3EiM,GADE3M,EAAKnI,QAAQuH,oBACDuN,EAAY7G,IAAI,KAAO9F,EAAK4M,eAAiB,KAAOvX,EAAgB2K,EAAKY,WAAW/D,OAAS,MAE7F8P,EAAY7G,IAAI,IAAM9F,EAAK4M,eAAiB,KAAO5M,EAAKY,WAAW/D,MAAQ,MAE3F8P,EAAYtK,SAASnC,SAAS,UAE9BF,EAAKtD,KAAK+M,OAAO,oBAAoB/T,KAAK,WACxC,GAAIgC,GAAQtC,EAAED,MACVsO,EAAW/L,EAAME,KAAK,WAEoE,KAA1FoI,EAAKtD,KAAK+M,OAAO,kBAAoBhG,EAAW,KAAKqC,IAAIpO,GAAOoO,IAAI,WAAWvM,SACjF7B,EAAMwI,SAAS,UACfF,EAAKtD,KAAK+M,OAAO,kBAAoBhG,EAAW,QAAQvD,SAAS,YAIrE,IAAI2M,GAAc7M,EAAKtD,KAAKoJ,IAAI,UAGhC+G,GAAYnX,KAAK,SAAU2E,GACzB,GAAI3C,GAAQtC,EAAED,KAEVuC,GAAM4K,SAAS,aACjB5K,EAAM2C,UAAYwS,EAAYC,QAAQzS,SACtC3C,EAAM2C,UAAYwS,EAAY3C,OAAO7P,SACrCwS,EAAY3H,GAAG7K,EAAQ,GAAGiI,SAAS,aACnC5K,EAAMwI,SAAS,YAIdF,EAAKtD,KAAKoJ,IAAI,wBAAwBvM,OAM9BmT,EAAYrK,SAAS9I,QAChCmT,EAAYtP,UANNsP,EAAYrK,SAAS9I,QACzBmT,EAAYtP,SAEdsP,EAAY7W,KAAKmK,EAAKnI,QAAQ6F,gBAAgB/H,QAAQ,MAAO,IAAMC,EAAWoK,EAAKY,WAAW/D,OAAS,MAAMQ,OAC7G2C,EAAKW,WAAWoK,OAAO2B,QAKzB1M,GAAKtD,KAAKoJ,IAAI,cAAchF,YAAY,UAClC4L,EAAYrK,SAAS9I,QACzBmT,EAAYtP,QAIhB4C,GAAKtD,KAAK+M,OAAO,WAAW3I,YAAY,UACpCd,EAAKY,WAAW/D,OAAOmD,EAAKtD,KAAKoJ,IAAI,uCAAuCZ,GAAG,GAAGhF,SAAS,UAAUQ,SAAS,KAAKM,QACvH5L,EAAED,MAAM6L,WAIZ4L,aAAc,WACZ,GAAIG,IACFC,OAAQ,UACR5S,WAAY,UAGd,OAAO2S,GAAO5X,KAAK0C,QAAQwH,kBAAoB,aAGjDxC,IAAK,SAAUrF,GACb,MAAqB,mBAAVA,IACTrC,KAAKmH,SAASO,IAAIrF,GAClBrC,KAAK2H,SAEE3H,KAAKmH,UAELnH,KAAKmH,SAASO,OAIzBoQ,UAAW,SAAUhH,GACG,mBAAXA,KAAwBA,GAAS,GAE5C9Q,KAAKgQ,SAOL,KAAK,GALDqG,GAAWrW,KAAKmH,SAASuE,KAAK,UAC9BgM,EAAc1X,KAAKuH,KAAKoJ,IAAI,kDAAkD6D,YAAY,WAAY1D,GACtGiH,EAAYL,EAAYtT,OACxB4T,KAEKrV,EAAI,EAAOoV,EAAJpV,EAAeA,IAAK,CAClC,GAAIsV,GAAYP,EAAY/U,GAAGuV,aAAa,sBAC5CF,GAAgBA,EAAgB5T,QAAUiS,EAAStG,GAAGkI,GAAW,GAGnEhY,EAAE+X,GAAiB9M,KAAK,WAAY4F,GAEpC9Q,KAAK2H,QAAO,GAEZ3H,KAAKmH,SACFf,QAAQ,qBACRZ,cAAc,WAGnBsC,UAAW,WACT,MAAO9H,MAAK8X,WAAU,IAGxB/P,YAAa,WACX,MAAO/H,MAAK8X,WAAU,IAGxBK,OAAQ,SAAUnR,GAChBA,EAAIA,GAAKqM,OAAOvR,MAEZkF,GAAGA,EAAEC,kBAETjH,KAAKqH,QAAQjB,QAAQ,UAGvBgS,QAAS,SAAUpR,GACjB,GAEIqR,GAEAnT,EACAoT,EACAX,EACA5C,EACAwD,EACAC,EACApC,EACAqC,EAXAlW,EAAQtC,EAAED,MACV0Y,EAAUnW,EAAMC,GAAG,SAAWD,EAAM2K,SAASA,SAAW3K,EAAM2K,SAE9DrC,EAAO6N,EAAQjW,KAAK,QASpBkW,EAAW,uDACXC,GACEC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IA2CX,IAxCI/Q,EAAKnI,QAAQqH,aAAY2O,EAAUnW,EAAM2K,SAASA,UAElDrC,EAAKnI,QAAQ8G,YAAWkP,EAAU7N,EAAKvD,OAE3C+Q,EAASpY,EAAE,iBAAkByY,GAE7BD,EAAW5N,EAAKzD,YAAY+F,SAAS,SAEhCsL,IAAazR,EAAEgP,SAAW,IAAMhP,EAAEgP,SAAW,IAAMhP,EAAEgP,SAAW,IAAMhP,EAAEgP,SAAW,KAAOhP,EAAEgP,SAAW,IAAMhP,EAAEgP,SAAW,MACxHnL,EAAKnI,QAAQ8G,UAKhBqB,EAAKxD,QAAQjB,QAAQ,UAJrByE,EAAKkI,UACLlI,EAAKvD,MAAM4F,SAASnC,SAAS,QAC7B0N,GAAW,GAIb5N,EAAKY,WAAWI,SAGdhB,EAAKnI,QAAQqH,aACX,WAAWrI,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAQgV,GAAkD,IAAtC5N,EAAKvD,MAAMoE,KAAK,WAAWtH,SACpF4C,EAAEE,iBACF2D,EAAKvD,MAAM4F,SAASvB,YAAY,QAC5Bd,EAAKnI,QAAQ8G,WAAWqB,EAAKzD,YAAYuE,YAAY,QACzDd,EAAKxD,QAAQwE,SAGfwM,EAASpY,EAAE,iBAAmB0Y,EAAUD,GACnCnW,EAAMmF,OAAU,UAAUhG,KAAKsF,EAAEgP,QAAQvS,SAAS,MACb,IAApC4U,EAAO/D,OAAO,WAAWlQ,SAC3BiU,EAASxN,EAAKW,WAAWE,KAAK,MAE5B2M,EADExN,EAAKnI,QAAQuH,oBACNoO,EAAO/D,OAAO,KAAOzJ,EAAK4M,eAAiB,IAAMvX,EAAgB0Y,EAAW5R,EAAEgP,UAAY,KAE1FqC,EAAO/D,OAAO,IAAMzJ,EAAK4M,eAAiB,IAAMmB,EAAW5R,EAAEgP,SAAW,OAMpFqC,EAAOjU,OAAZ,CAEA,GAAI,UAAU1C,KAAKsF,EAAEgP,QAAQvS,SAAS,KACpCyB,EAAQmT,EAAOnT,MAAMmT,EAAO3M,KAAK,KAAK4I,OAAO,UAAUpH,UACvDyK,EAAQU,EAAO/D,OAAOqE,GAAUhB,QAAQzS,QACxC6P,EAAOsD,EAAO/D,OAAOqE,GAAU5D,OAAO7P,QACtCoT,EAAOD,EAAOtI,GAAG7K,GAAO2W,QAAQlD,GAAU5I,GAAG,GAAG7K,QAChDqT,EAAOF,EAAOtI,GAAG7K,GAAO4W,QAAQnD,GAAU5I,GAAG,GAAG7K,QAChDsT,EAAWH,EAAOtI,GAAGuI,GAAMwD,QAAQnD,GAAU5I,GAAG,GAAG7K,QAE/C2F,EAAKnI,QAAQqH,aACfsO,EAAO9X,KAAK,SAAUoC,GACf1C,EAAED,MAAMmN,SAAS,aACpBlN,EAAED,MAAMyC,KAAK,QAASE,KAG1BuC,EAAQmT,EAAOnT,MAAMmT,EAAO/D,OAAO,YACnCqD,EAAQU,EAAOV,QAAQlV,KAAK,SAC5BsS,EAAOsD,EAAOtD,OAAOtS,KAAK,SAC1B6V,EAAOD,EAAOtI,GAAG7K,GAAO2W,UAAU9L,GAAG,GAAGtN,KAAK,SAC7C8V,EAAOF,EAAOtI,GAAG7K,GAAO4W,UAAU/L,GAAG,GAAGtN,KAAK,SAC7C+V,EAAWH,EAAOtI,GAAGuI,GAAMwD,UAAU/L,GAAG,GAAGtN,KAAK,UAGlD2T,EAAY7T,EAAME,KAAK,aAEN,IAAbuE,EAAEgP,SACAnL,EAAKnI,QAAQqH,YAAY7E,IACzBA,GAASsT,GAAYtT,EAAQqT,IAAMrT,EAAQqT,GACnCZ,EAARzS,IAAeA,EAAQyS,GACvBzS,GAASkR,IAAWlR,EAAQ6P,IACV,IAAb/N,EAAEgP,UACPnL,EAAKnI,QAAQqH,YAAY7E,IAChB,IAATA,IAAaA,EAAQ,GACrBA,GAASsT,GAAoBF,EAARpT,IAAcA,EAAQoT,GAC3CpT,EAAQ6P,IAAM7P,EAAQ6P,GACtB7P,GAASkR,IAAWlR,EAAQyS,IAGlCpV,EAAME,KAAK,YAAayC,GAEnB2F,EAAKnI,QAAQqH,YAGhB/C,EAAEE,iBACG3E,EAAM4K,SAAS,qBAClBkL,EAAO1M,YAAY,UAAUoE,GAAG7K,GAAO6F,SAAS,UAAUQ,SAAS,KAAKM,QACxEtJ,EAAMsJ,UALRwM,EAAOtI,GAAG7K,GAAOqG,SAAS,KAAKM,YAS5B,KAAKtJ,EAAMC,GAAG,SAAU,CAC7B,GACIuZ,GACAC,EAFAC,IAIJ5D,GAAO9X,KAAK,WACLN,EAAED,MAAMmN,SAAS,aAChBlN,EAAE4Q,KAAK5Q,EAAED,MAAMuL,SAAS,KAAKpL,OAAO+b,eAAeC,UAAU,EAAG,IAAMvD,EAAW5R,EAAEgP,UACrFiG,EAAS1W,KAAKtF,EAAED,MAAMkF,WAK5B6W,EAAQ9b,EAAE6F,UAAUrD,KAAK,YACzBsZ,IACA9b,EAAE6F,UAAUrD,KAAK,WAAYsZ,GAE7BC,EAAU/b,EAAE4Q,KAAK5Q,EAAE,UAAUE,OAAO+b,eAAeC,UAAU,EAAG,GAE5DH,GAAWpD,EAAW5R,EAAEgP,UAC1B+F,EAAQ,EACR9b,EAAE6F,UAAUrD,KAAK,WAAYsZ,IACpBA,GAASE,EAAS7X,SAC3BnE,EAAE6F,UAAUrD,KAAK,WAAY,GACzBsZ,EAAQE,EAAS7X,SAAQ2X,EAAQ,IAGvC1D,EAAOtI,GAAGkM,EAASF,EAAQ,IAAIxQ,SAAS,KAAKM,QAI/C,IAAK,UAAUnK,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAS,QAAQ/B,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAQoH,EAAKnI,QAAQgI,cAAiB+N,EAAU,CAE9H,GADK,OAAO/W,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAMuD,EAAEE,iBACvC2D,EAAKnI,QAAQqH,WASN,OAAOrI,KAAKsF,EAAEgP,QAAQvS,SAAS,OACzCoH,EAAKW,WAAWE,KAAK,aAAaE,QAClCrJ,EAAMsJ,aAXsB,CAC5B,GAAIuQ,GAAOnc,EAAE,SACbmc,GAAKxQ,QAELwQ,EAAKvQ,QAEL7E,EAAEE,iBAEFjH,EAAE6F,UAAUrD,KAAK,eAAe,GAKlCxC,EAAE6F,UAAUrD,KAAK,WAAY,IAG1B,WAAWf,KAAKsF,EAAEgP,QAAQvS,SAAS,MAAQgV,IAAa5N,EAAKI,UAAYJ,EAAKnI,QAAQqH,aAAiB,OAAOrI,KAAKsF,EAAEgP,QAAQvS,SAAS,OAASgV,KAClJ5N,EAAKvD,MAAM4F,SAASvB,YAAY,QAC5Bd,EAAKnI,QAAQ8G,WAAWqB,EAAKzD,YAAYuE,YAAY,QACzDd,EAAKxD,QAAQwE,WAIjBpB,OAAQ,WACNzK,KAAKmH,SAAS4D,SAAS,kBAGzBnD,QAAS,WACP5H,KAAKuH,KAAO,KACZvH,KAAKgL,SACLhL,KAAK4N,WACL5N,KAAK2H,SACL3H,KAAK8L,gBACL9L,KAAKgR,UAAS,GACdhR,KAAK6H,WACL7H,KAAKiM,WACDjM,KAAKuH,MAAMvH,KAAKyL,WAAWrF,QAAQ,kBAEvCpG,KAAKmH,SAASf,QAAQ,wBAGxB+B,KAAM,WACJnI,KAAKoH,YAAYe,QAGnBD,KAAM,WACJlI,KAAKoH,YAAYc,QAGnBD,OAAQ,WACNjI,KAAKoH,YAAYa,SACjBjI,KAAKmH,SAASc,UAGhBD,QAAS,WACLhI,KAAKoH,YAAYiV,OAAOrc,KAAKmH,UAAUc,SAEnCjI,KAAKuV,aACLvV,KAAKuV,aAAatN,SAElBjI,KAAKsH,MAAMW,SAGfjI,KAAKmH,SACFuF,IAAI,cACJ4P,WAAW,gBACX3Q,YAAY,kCAoDrB,IAAI4Q,GAAMtc,EAAEgD,GAAGC,YACfjD,GAAEgD,GAAGC,aAAetB,EACpB3B,EAAEgD,GAAGC,aAAasZ,YAAczZ,EAIhC9C,EAAEgD,GAAGC,aAAauZ,WAAa,WAE7B,MADAxc,GAAEgD,GAAGC,aAAeqZ,EACbvc,MAGTC,EAAE6F,UACGrD,KAAK,WAAY,GACjB0J,GAAG,oBAAqB,iGAAkGpJ,EAAaQ,UAAU6U,SACjJjM,GAAG,gBAAiB,iGAAkG,SAAUnF,GAC/HA,EAAEC,oBAKRhH,EAAEoT,QAAQlH,GAAG,0BAA2B,WACtClM,EAAE,iBAAiBM,KAAK,WACtB,GAAImc,GAAgBzc,EAAED,KACtB4B,GAAOsC,KAAKwY,EAAeA,EAAcja,aAG5C1C","file":"bootstrap-select.min.js"} \ No newline at end of file diff --git a/plugins/bootstrap-select/js/bootstrap-select.min.js b/plugins/bootstrap-select/js/bootstrap-select.min.js new file mode 100644 index 0000000..0e66f52 --- /dev/null +++ b/plugins/bootstrap-select/js/bootstrap-select.min.js @@ -0,0 +1,8 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,"startsWith",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c}),a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?("function"==typeof Event?b=new Event(a,{bubbles:!0}):(b=document.createEvent("Event"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):(c.fireEvent&&(b=document.createEventObject(),b.eventType=a,c.fireEvent("on"+a,b)),this.trigger(a))},a.expr[":"].icontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].ibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr[":"].aicontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].aibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())};var e=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=e.prototype.val,this.render=e.prototype.render,this.refresh=e.prototype.refresh,this.setStyle=e.prototype.setStyle,this.selectAll=e.prototype.selectAll,this.deselectAll=e.prototype.deselectAll,this.destroy=e.prototype.destroy,this.remove=e.prototype.remove,this.show=e.prototype.show,this.hide=e.prototype.hide,this.init()};e.VERSION="1.10.0",e.DEFAULTS={noneSelectedText:"Nothing selected",noneResultsText:"No results matched {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",doneButton:!1,doneButtonText:"Close",multipleSeparator:", ",styleBase:"btn",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:"contains",actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",showTick:!1,template:{caret:'<span class="caret"></span>'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element.removeClass("bs-select-hidden"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple||this.options.showTick?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>'+this.options.header+"</div>":"",g=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+c(this.options.liveSearchPlaceholder)+'"')+"></div>":"",h=this.multiple&&this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">'+this.options.selectAllText+'</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">'+this.options.deselectAllText+"</button></div></div>":"",i=this.multiple&&this.options.doneButton?'<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm btn-default">'+this.options.doneButtonText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+d+'"><button type="button" class="'+this.options.styleBase+' dropdown-toggle" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span>&nbsp;<span class="bs-caret">'+this.options.template.caret+'</span></button><div class="dropdown-menu open">'+f+g+h+'<ul class="dropdown-menu inner" role="menu"></ul>'+i+"</div></div>";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return"<li"+("undefined"!=typeof c&""!==c?' class="'+c+'"':"")+("undefined"!=typeof b&null!==b?' data-original-index="'+b+'"':"")+("undefined"!=typeof d&null!==d?'data-optgroup="'+d+'"':"")+">"+a+"</li>"},j=function(a,e,f,g){return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+(d.options.liveSearchNormalize?' data-normalized-text="'+b(c(a))+'"':"")+("undefined"!=typeof g||null!==g?' data-tokens="'+g+'"':"")+">"+a+'<span class="'+d.options.iconBase+" "+d.options.tickIcon+' check-mark"></span></a>'};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?'<small class="text-muted">'+c.data("subtext")+"</small>":"",o="undefined"!=typeof c.data("icon")?'<span class="'+d.options.iconBase+" "+c.data("icon")+'"></span> ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o="<span>"+o+"</span>"),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+'<span class="text">'+l+n+"</span>"),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?'<small class="text-muted">'+c.parent().data("subtext")+"</small>":"",u=c.parent().data("icon")?'<span class="'+d.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";s=u+'<span class="text">'+s+t+"</span>",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?'<i class="'+d.options.iconBase+" "+c.data("icon")+'"></i> ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' <small class="text-muted">'+c.data("subtext")+"</small>":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('<div class="bs-container" />');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize()}),this.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.parent().data("optgroup");b.$menuInner.find('[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]).triggerNative("change")}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('<li class="no-results"></li>');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1),this.$element.trigger("changed.bs.select").triggerNative("change")},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger("click")},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)}); +//# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-ar_AR.js b/plugins/bootstrap-select/js/i18n/defaults-ar_AR.js new file mode 100644 index 0000000..4b82e50 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ar_AR.js @@ -0,0 +1,49 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +/*! + * Translated default messages for bootstrap-select. + * Locale: AR (Arabic) + * Author: Yasser Lotfy <y_l@alive.com> + */ +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'لم يتم إختيار شئ', + noneResultsText: 'لا توجد نتائج مطابقة لـ {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} خيار تم إختياره" : "{0} خيارات تمت إختيارها"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'تخطى الحد المسموح ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح ({n} خيارات بحد أقصى)', + (numGroup == 1) ? 'تخطى الحد المسموح للمجموعة ({n} خيار بحد أقصى)' : 'تخطى الحد المسموح للمجموعة ({n} خيارات بحد أقصى)' + ]; + }, + selectAllText: 'إختيار الجميع', + deselectAllText: 'إلغاء إختيار الجميع', + multipleSeparator: '، ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-ar_AR.min.js b/plugins/bootstrap-select/js/i18n/defaults-ar_AR.min.js new file mode 100644 index 0000000..0b3a158 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ar_AR.min.js @@ -0,0 +1,12 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){/*! + * Translated default messages for bootstrap-select. + * Locale: AR (Arabic) + * Author: Yasser Lotfy <y_l@alive.com> + */ +!function(a){a.fn.selectpicker.defaults={noneSelectedText:"لم يتم إختيار شئ",noneResultsText:"لا توجد نتائج مطابقة لـ {0}",countSelectedText:function(a,b){return 1==a?"{0} خيار تم إختياره":"{0} خيارات تمت إختيارها"},maxOptionsText:function(a,b){return[1==a?"تخطى الحد المسموح ({n} خيار بحد أقصى)":"تخطى الحد المسموح ({n} خيارات بحد أقصى)",1==b?"تخطى الحد المسموح للمجموعة ({n} خيار بحد أقصى)":"تخطى الحد المسموح للمجموعة ({n} خيارات بحد أقصى)"]},selectAllText:"إختيار الجميع",deselectAllText:"إلغاء إختيار الجميع",multipleSeparator:"، "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-bg_BG.js b/plugins/bootstrap-select/js/i18n/defaults-bg_BG.js new file mode 100644 index 0000000..a768049 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-bg_BG.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Нищо избрано', + noneResultsText: 'Няма резултат за {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} избран елемент" : "{0} избрани елемента"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Лимита е достигнат ({n} елемент максимум)' : 'Лимита е достигнат ({n} елемента максимум)', + (numGroup == 1) ? 'Груповия лимит е достигнат ({n} елемент максимум)' : 'Груповия лимит е достигнат ({n} елемента максимум)' + ]; + }, + selectAllText: 'Избери всички', + deselectAllText: 'Размаркирай всички', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-bg_BG.min.js b/plugins/bootstrap-select/js/i18n/defaults-bg_BG.min.js new file mode 100644 index 0000000..fc8a4ce --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-bg_BG.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нищо избрано",noneResultsText:"Няма резултат за {0}",countSelectedText:function(a,b){return 1==a?"{0} избран елемент":"{0} избрани елемента"},maxOptionsText:function(a,b){return[1==a?"Лимита е достигнат ({n} елемент максимум)":"Лимита е достигнат ({n} елемента максимум)",1==b?"Груповия лимит е достигнат ({n} елемент максимум)":"Груповия лимит е достигнат ({n} елемента максимум)"]},selectAllText:"Избери всички",deselectAllText:"Размаркирай всички",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.js b/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.js new file mode 100644 index 0000000..c785c9d --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Odaberite stavku', + noneResultsText: 'Nema rezultata pretrage {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} stavka selektirana" : "{0} stavke selektirane"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit je postignut ({n} stvar maximalno)' : 'Limit je postignut ({n} stavke maksimalno)', + (numGroup == 1) ? 'Grupni limit je postignut ({n} stvar maksimalno)' : 'Grupni limit je postignut ({n} stavke maksimalno)' + ]; + }, + selectAllText: 'Selektiraj sve', + deselectAllText: 'Deselektiraj sve', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.min.js b/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.min.js new file mode 100644 index 0000000..c5e8247 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-cro_CRO.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Odaberite stavku",noneResultsText:"Nema rezultata pretrage {0}",countSelectedText:function(a,b){return 1==a?"{0} stavka selektirana":"{0} stavke selektirane"},maxOptionsText:function(a,b){return[1==a?"Limit je postignut ({n} stvar maximalno)":"Limit je postignut ({n} stavke maksimalno)",1==b?"Grupni limit je postignut ({n} stvar maksimalno)":"Grupni limit je postignut ({n} stavke maksimalno)"]},selectAllText:"Selektiraj sve",deselectAllText:"Deselektiraj sve",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.js b/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.js new file mode 100644 index 0000000..fef2fa2 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nic není vybráno', + noneResultsText: 'Žádné výsledky {0}', + countSelectedText: 'Označeno {0} z {1}', + maxOptionsText: ['Limit překročen ({n} {var} max)', 'Limit skupiny překročen ({n} {var} max)', ['položek', 'položka']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.min.js b/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.min.js new file mode 100644 index 0000000..3cdc7c9 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-cs_CZ.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic není vybráno",noneResultsText:"Žádné výsledky {0}",countSelectedText:"Označeno {0} z {1}",maxOptionsText:["Limit překročen ({n} {var} max)","Limit skupiny překročen ({n} {var} max)",["položek","položka"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-da_DK.js b/plugins/bootstrap-select/js/i18n/defaults-da_DK.js new file mode 100644 index 0000000..5979cfd --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-da_DK.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Intet valgt', + noneResultsText: 'Ingen resultater fundet {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} valgt" : "{0} valgt"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Begrænsning nået (max {n} valgt)' : 'Begrænsning nået (max {n} valgte)', + (numGroup == 1) ? 'Gruppe-begrænsning nået (max {n} valgt)' : 'Gruppe-begrænsning nået (max {n} valgte)' + ]; + }, + selectAllText: 'Markér alle', + deselectAllText: 'Afmarkér alle', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-da_DK.min.js b/plugins/bootstrap-select/js/i18n/defaults-da_DK.min.js new file mode 100644 index 0000000..7b05afd --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-da_DK.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Intet valgt",noneResultsText:"Ingen resultater fundet {0}",countSelectedText:function(a,b){return"{0} valgt"},maxOptionsText:function(a,b){return[1==a?"Begrænsning nået (max {n} valgt)":"Begrænsning nået (max {n} valgte)",1==b?"Gruppe-begrænsning nået (max {n} valgt)":"Gruppe-begrænsning nået (max {n} valgte)"]},selectAllText:"Markér alle",deselectAllText:"Afmarkér alle",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-de_DE.js b/plugins/bootstrap-select/js/i18n/defaults-de_DE.js new file mode 100644 index 0000000..444b419 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-de_DE.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Bitte wählen...', + noneResultsText: 'Keine Ergebnisse für {0}', + countSelectedText: '{0} von {1} ausgewählt', + maxOptionsText: ['Limit erreicht ({n} {var} max.)', 'Gruppen-Limit erreicht ({n} {var} max.)', ['Eintrag', 'Einträge']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-de_DE.min.js b/plugins/bootstrap-select/js/i18n/defaults-de_DE.min.js new file mode 100644 index 0000000..e34d684 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-de_DE.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Bitte wählen...",noneResultsText:"Keine Ergebnisse für {0}",countSelectedText:"{0} von {1} ausgewählt",maxOptionsText:["Limit erreicht ({n} {var} max.)","Gruppen-Limit erreicht ({n} {var} max.)",["Eintrag","Einträge"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-en_US.js b/plugins/bootstrap-select/js/i18n/defaults-en_US.js new file mode 100644 index 0000000..28e7652 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-en_US.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results match {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-en_US.min.js b/plugins/bootstrap-select/js/i18n/defaults-en_US.min.js new file mode 100644 index 0000000..7470d19 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-en_US.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nothing selected",noneResultsText:"No results match {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-es_CL.js b/plugins/bootstrap-select/js/i18n/defaults-es_CL.js new file mode 100644 index 0000000..4190993 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-es_CL.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'No hay selección', + noneResultsText: 'No hay resultados {0}', + countSelectedText: 'Seleccionados {0} de {1}', + maxOptionsText: ['Límite alcanzado ({n} {var} max)', 'Límite del grupo alcanzado({n} {var} max)', ['elementos', 'element']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-es_CL.min.js b/plugins/bootstrap-select/js/i18n/defaults-es_CL.min.js new file mode 100644 index 0000000..fd74992 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-es_CL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-eu.js b/plugins/bootstrap-select/js/i18n/defaults-eu.js new file mode 100644 index 0000000..14494e1 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-eu.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Hautapenik ez', + noneResultsText: 'Emaitzarik ez {0}', + countSelectedText: '{1}(e)tik {0} hautatuta', + maxOptionsText: ['Mugara iritsita ({n} {var} gehienez)', 'Taldearen mugara iritsita ({n} {var} gehienez)', ['elementu', 'elementu']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-eu.min.js b/plugins/bootstrap-select/js/i18n/defaults-eu.min.js new file mode 100644 index 0000000..ff03b02 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-eu.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hautapenik ez",noneResultsText:"Emaitzarik ez {0}",countSelectedText:"{1}(e)tik {0} hautatuta",maxOptionsText:["Mugara iritsita ({n} {var} gehienez)","Taldearen mugara iritsita ({n} {var} gehienez)",["elementu","elementu"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-fa_IR.js b/plugins/bootstrap-select/js/i18n/defaults-fa_IR.js new file mode 100644 index 0000000..480c6bb --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fa_IR.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'چیزی انتخاب نشده است', + noneResultsText: 'هیج مشابهی برای {0} پیدا نشد', + countSelectedText: "{0} از {1} مورد انتخاب شده", + maxOptionsText: ['بیشتر ممکن نیست {حداکثر {n} عدد}', 'بیشتر ممکن نیست {حداکثر {n} عدد}'], + selectAllText: 'انتخاب همه', + deselectAllText: 'انتخاب هیچ کدام', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-fa_IR.min.js b/plugins/bootstrap-select/js/i18n/defaults-fa_IR.min.js new file mode 100644 index 0000000..036799d --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fa_IR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"چیزی انتخاب نشده است",noneResultsText:"هیج مشابهی برای {0} پیدا نشد",countSelectedText:"{0} از {1} مورد انتخاب شده",maxOptionsText:["بیشتر ممکن نیست {حداکثر {n} عدد}","بیشتر ممکن نیست {حداکثر {n} عدد}"],selectAllText:"انتخاب همه",deselectAllText:"انتخاب هیچ کدام",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-fi_FI.js b/plugins/bootstrap-select/js/i18n/defaults-fi_FI.js new file mode 100644 index 0000000..02c1a30 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fi_FI.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Ei valintoja', + noneResultsText: 'Ei hakutuloksia {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} valittu" : "{0} valitut"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Valintojen maksimimäärä ({n} saavutettu)' : 'Valintojen maksimimäärä ({n} saavutettu)', + (numGroup == 1) ? 'Ryhmän maksimimäärä ({n} saavutettu)' : 'Ryhmän maksimimäärä ({n} saavutettu)' + ]; + }, + selectAllText: 'Valitse kaikki', + deselectAllText: 'Poista kaikki', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-fi_FI.min.js b/plugins/bootstrap-select/js/i18n/defaults-fi_FI.min.js new file mode 100644 index 0000000..4f467a9 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fi_FI.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ei valintoja",noneResultsText:"Ei hakutuloksia {0}",countSelectedText:function(a,b){return 1==a?"{0} valittu":"{0} valitut"},maxOptionsText:function(a,b){return["Valintojen maksimimäärä ({n} saavutettu)","Ryhmän maksimimäärä ({n} saavutettu)"]},selectAllText:"Valitse kaikki",deselectAllText:"Poista kaikki",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-fr_FR.js b/plugins/bootstrap-select/js/i18n/defaults-fr_FR.js new file mode 100644 index 0000000..32bd693 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fr_FR.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Aucune sélection', + noneResultsText: 'Aucun résultat pour {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected > 1) ? "{0} éléments sélectionnés" : "{0} élément sélectionné"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll > 1) ? 'Limite atteinte ({n} éléments max)' : 'Limite atteinte ({n} élément max)', + (numGroup > 1) ? 'Limite du groupe atteinte ({n} éléments max)' : 'Limite du groupe atteinte ({n} élément max)' + ]; + }, + multipleSeparator: ', ', + selectAllText: 'Tout Sélectionner', + deselectAllText: 'Tout Dé-selectionner', + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-fr_FR.min.js b/plugins/bootstrap-select/js/i18n/defaults-fr_FR.min.js new file mode 100644 index 0000000..4212329 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-fr_FR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Aucune sélection",noneResultsText:"Aucun résultat pour {0}",countSelectedText:function(a,b){return a>1?"{0} éléments sélectionnés":"{0} élément sélectionné"},maxOptionsText:function(a,b){return[a>1?"Limite atteinte ({n} éléments max)":"Limite atteinte ({n} élément max)",b>1?"Limite du groupe atteinte ({n} éléments max)":"Limite du groupe atteinte ({n} élément max)"]},multipleSeparator:", ",selectAllText:"Tout Sélectionner",deselectAllText:"Tout Dé-selectionner"}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-hu_HU.js b/plugins/bootstrap-select/js/i18n/defaults-hu_HU.js new file mode 100644 index 0000000..3941b69 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-hu_HU.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Válasszon!', + noneResultsText: 'Nincs találat {0}', + countSelectedText: function (numSelected, numTotal) { + return '{0} elem kiválasztva'; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Legfeljebb {n} elem választható', + 'A csoportban legfeljebb {n} elem választható' + ]; + }, + selectAllText: 'Mind', + deselectAllText: 'Egyik sem', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-hu_HU.min.js b/plugins/bootstrap-select/js/i18n/defaults-hu_HU.min.js new file mode 100644 index 0000000..9e425a2 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-hu_HU.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Válasszon!",noneResultsText:"Nincs találat {0}",countSelectedText:function(a,b){return"{0} elem kiválasztva"},maxOptionsText:function(a,b){return["Legfeljebb {n} elem választható","A csoportban legfeljebb {n} elem választható"]},selectAllText:"Mind",deselectAllText:"Egyik sem",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-id_ID.js b/plugins/bootstrap-select/js/i18n/defaults-id_ID.js new file mode 100644 index 0000000..217c946 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-id_ID.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Tidak ada yang dipilih', + noneResultsText: 'Tidak ada yang cocok {0}', + countSelectedText: '{0} terpilih', + maxOptionsText: ['Mencapai batas (maksimum {n})', 'Mencapai batas grup (maksimum {n})'], + selectAllText: 'Pilih Semua', + deselectAllText: 'Hapus Semua', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-id_ID.min.js b/plugins/bootstrap-select/js/i18n/defaults-id_ID.min.js new file mode 100644 index 0000000..930e248 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-id_ID.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Tidak ada yang dipilih",noneResultsText:"Tidak ada yang cocok {0}",countSelectedText:"{0} terpilih",maxOptionsText:["Mencapai batas (maksimum {n})","Mencapai batas grup (maksimum {n})"],selectAllText:"Pilih Semua",deselectAllText:"Hapus Semua",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-it_IT.js b/plugins/bootstrap-select/js/i18n/defaults-it_IT.js new file mode 100644 index 0000000..bba8e94 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-it_IT.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nessuna selezione', + noneResultsText: 'Nessun risultato per {0}', + countSelectedText: 'Selezionati {0} di {1}', + maxOptionsText: ['Limite raggiunto ({n} {var} max)', 'Limite del gruppo raggiunto ({n} {var} max)', ['elementi', 'elemento']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-it_IT.min.js b/plugins/bootstrap-select/js/i18n/defaults-it_IT.min.js new file mode 100644 index 0000000..3f0905a --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-it_IT.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nessuna selezione",noneResultsText:"Nessun risultato per {0}",countSelectedText:"Selezionati {0} di {1}",maxOptionsText:["Limite raggiunto ({n} {var} max)","Limite del gruppo raggiunto ({n} {var} max)",["elementi","elemento"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-ko_KR.js b/plugins/bootstrap-select/js/i18n/defaults-ko_KR.js new file mode 100644 index 0000000..42c42da --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ko_KR.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '항목을 선택해주세요', + noneResultsText: '{0} 검색 결과가 없습니다', + countSelectedText: function (numSelected, numTotal) { + return "{0}개를 선택하였습니다"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + '{n}개까지 선택 가능합니다', + '해당 그룹은 {n}개까지 선택 가능합니다' + ]; + }, + selectAllText: '전체선택', + deselectAllText: '전체해제', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-ko_KR.min.js b/plugins/bootstrap-select/js/i18n/defaults-ko_KR.min.js new file mode 100644 index 0000000..4eac5d1 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ko_KR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"항목을 선택해주세요",noneResultsText:"{0} 검색 결과가 없습니다",countSelectedText:function(a,b){return"{0}개를 선택하였습니다"},maxOptionsText:function(a,b){return["{n}개까지 선택 가능합니다","해당 그룹은 {n}개까지 선택 가능합니다"]},selectAllText:"전체선택",deselectAllText:"전체해제",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-lt_LT.js b/plugins/bootstrap-select/js/i18n/defaults-lt_LT.js new file mode 100644 index 0000000..6c4dbab --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-lt_LT.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Niekas nepasirinkta', + noneResultsText: 'Niekas nesutapo su {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} elementas pasirinktas" : "{0} elementai(-ų) pasirinkta"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Pasiekta riba ({n} elementas daugiausiai)' : 'Riba pasiekta ({n} elementai(-ų) daugiausiai)', + (numGroup == 1) ? 'Grupės riba pasiekta ({n} elementas daugiausiai)' : 'Grupės riba pasiekta ({n} elementai(-ų) daugiausiai)' + ]; + }, + selectAllText: 'Pasirinkti visus', + deselectAllText: 'Atmesti visus', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-lt_LT.min.js b/plugins/bootstrap-select/js/i18n/defaults-lt_LT.min.js new file mode 100644 index 0000000..ff0cdcb --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-lt_LT.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niekas nepasirinkta",noneResultsText:"Niekas nesutapo su {0}",countSelectedText:function(a,b){return 1==a?"{0} elementas pasirinktas":"{0} elementai(-ų) pasirinkta"},maxOptionsText:function(a,b){return[1==a?"Pasiekta riba ({n} elementas daugiausiai)":"Riba pasiekta ({n} elementai(-ų) daugiausiai)",1==b?"Grupės riba pasiekta ({n} elementas daugiausiai)":"Grupės riba pasiekta ({n} elementai(-ų) daugiausiai)"]},selectAllText:"Pasirinkti visus",deselectAllText:"Atmesti visus",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-nb_NO.js b/plugins/bootstrap-select/js/i18n/defaults-nb_NO.js new file mode 100644 index 0000000..f1531ed --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-nb_NO.js @@ -0,0 +1,70 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +/*! + * Bootstrap-select v1.8.1 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Ingen valgt', + noneResultsText: 'Søket gir ingen treff {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} alternativ valgt" : "{0} alternativer valgt"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Grense nådd (maks {n} valg)' : 'Grense nådd (maks {n} valg)', + (numGroup == 1) ? 'Grense for grupper nådd (maks {n} grupper)' : 'Grense for grupper nådd (maks {n} grupper)' + ]; + }, + selectAllText: 'Merk alle', + deselectAllText: 'Fjern alle', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-nb_NO.min.js b/plugins/bootstrap-select/js/i18n/defaults-nb_NO.min.js new file mode 100644 index 0000000..74686c3 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-nb_NO.min.js @@ -0,0 +1,13 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){/*! + * Bootstrap-select v1.8.1 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2015 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(b,c){"function"==typeof define&&define.amd?define(["jquery"],function(a){return c(a)}):"object"==typeof exports?module.exports=c(require("jquery")):c(a)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ingen valgt",noneResultsText:"Søket gir ingen treff {0}",countSelectedText:function(a,b){return 1==a?"{0} alternativ valgt":"{0} alternativer valgt"},maxOptionsText:function(a,b){return["Grense nådd (maks {n} valg)","Grense for grupper nådd (maks {n} grupper)"]},selectAllText:"Merk alle",deselectAllText:"Fjern alle",multipleSeparator:", "}}(a)})}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-nl_NL.js b/plugins/bootstrap-select/js/i18n/defaults-nl_NL.js new file mode 100644 index 0000000..8585323 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-nl_NL.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Niets geselecteerd', + noneResultsText: 'Geen resultaten gevonden voor {0}', + countSelectedText: '{0} van {1} geselecteerd', + maxOptionsText: ['Limiet bereikt ({n} {var} max)', 'Groep limiet bereikt ({n} {var} max)', ['items', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-nl_NL.min.js b/plugins/bootstrap-select/js/i18n/defaults-nl_NL.min.js new file mode 100644 index 0000000..ac4ffc2 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-nl_NL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Niets geselecteerd",noneResultsText:"Geen resultaten gevonden voor {0}",countSelectedText:"{0} van {1} geselecteerd",maxOptionsText:["Limiet bereikt ({n} {var} max)","Groep limiet bereikt ({n} {var} max)",["items","item"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-pl_PL.js b/plugins/bootstrap-select/js/i18n/defaults-pl_PL.js new file mode 100644 index 0000000..1765273 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pl_PL.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nic nie zaznaczono', + noneResultsText: 'Brak wyników wyszukiwania {0}', + countSelectedText: 'Zaznaczono {0} z {1}', + maxOptionsText: ['Osiągnięto limit ({n} {var} max)', 'Limit grupy osiągnięty ({n} {var} max)', ['elementy', 'element']], + selectAll: 'Zaznacz wszystkie', + deselectAll: 'Odznacz wszystkie', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-pl_PL.min.js b/plugins/bootstrap-select/js/i18n/defaults-pl_PL.min.js new file mode 100644 index 0000000..dadf819 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pl_PL.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nic nie zaznaczono",noneResultsText:"Brak wyników wyszukiwania {0}",countSelectedText:"Zaznaczono {0} z {1}",maxOptionsText:["Osiągnięto limit ({n} {var} max)","Limit grupy osiągnięty ({n} {var} max)",["elementy","element"]],selectAll:"Zaznacz wszystkie",deselectAll:"Odznacz wszystkie",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-pt_BR.js b/plugins/bootstrap-select/js/i18n/defaults-pt_BR.js new file mode 100644 index 0000000..5809295 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pt_BR.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nada selecionado', + noneResultsText: 'Nada encontrado contendo {0}', + countSelectedText: 'Selecionado {0} de {1}', + maxOptionsText: ['Limite excedido (máx. {n} {var})', 'Limite do grupo excedido (máx. {n} {var})', ['itens', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-pt_BR.min.js b/plugins/bootstrap-select/js/i18n/defaults-pt_BR.min.js new file mode 100644 index 0000000..2e548a7 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pt_BR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nada selecionado",noneResultsText:"Nada encontrado contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite excedido (máx. {n} {var})","Limite do grupo excedido (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-pt_PT.js b/plugins/bootstrap-select/js/i18n/defaults-pt_PT.js new file mode 100644 index 0000000..170cfb5 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pt_PT.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { +$.fn.selectpicker.defaults = { +noneSelectedText: 'Nenhum seleccionado', +noneResultsText: 'Sem resultados contendo {0}', +countSelectedText: 'Selecionado {0} de {1}', +maxOptionsText: ['Limite ultrapassado (máx. {n} {var})', 'Limite de seleções ultrapassado (máx. {n} {var})', ['itens', 'item']], +multipleSeparator: ', ' +}; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-pt_PT.min.js b/plugins/bootstrap-select/js/i18n/defaults-pt_PT.min.js new file mode 100644 index 0000000..47f1295 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-pt_PT.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nenhum seleccionado",noneResultsText:"Sem resultados contendo {0}",countSelectedText:"Selecionado {0} de {1}",maxOptionsText:["Limite ultrapassado (máx. {n} {var})","Limite de seleções ultrapassado (máx. {n} {var})",["itens","item"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-ro_RO.js b/plugins/bootstrap-select/js/i18n/defaults-ro_RO.js new file mode 100644 index 0000000..dc675c9 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ro_RO.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nu a fost selectat nimic', + noneResultsText: 'Nu exista niciun rezultat {0}', + countSelectedText: '{0} din {1} selectat(e)', + maxOptionsText: ['Limita a fost atinsa ({n} {var} max)', 'Limita de grup a fost atinsa ({n} {var} max)', ['iteme', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-ro_RO.min.js b/plugins/bootstrap-select/js/i18n/defaults-ro_RO.min.js new file mode 100644 index 0000000..903e33f --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ro_RO.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nu a fost selectat nimic",noneResultsText:"Nu exista niciun rezultat {0}",countSelectedText:"{0} din {1} selectat(e)",maxOptionsText:["Limita a fost atinsa ({n} {var} max)","Limita de grup a fost atinsa ({n} {var} max)",["iteme","item"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-ru_RU.js b/plugins/bootstrap-select/js/i18n/defaults-ru_RU.js new file mode 100644 index 0000000..da6c93b --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ru_RU.js @@ -0,0 +1,36 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Ничего не выбрано', + noneResultsText: 'Совпадений не найдено {0}', + countSelectedText: 'Выбрано {0} из {1}', + maxOptionsText: ['Достигнут предел ({n} {var} максимум)', 'Достигнут предел в группе ({n} {var} максимум)', ['items', 'item']], + doneButtonText: 'Закрыть', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-ru_RU.min.js b/plugins/bootstrap-select/js/i18n/defaults-ru_RU.min.js new file mode 100644 index 0000000..66ef5e0 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ru_RU.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Ничего не выбрано",noneResultsText:"Совпадений не найдено {0}",countSelectedText:"Выбрано {0} из {1}",maxOptionsText:["Достигнут предел ({n} {var} максимум)","Достигнут предел в группе ({n} {var} максимум)",["items","item"]],doneButtonText:"Закрыть",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-sk_SK.js b/plugins/bootstrap-select/js/i18n/defaults-sk_SK.js new file mode 100644 index 0000000..12acc45 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sk_SK.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Vyberte zo zoznamu', + noneResultsText: 'Pre výraz {0} neboli nájdené žiadne výsledky', + countSelectedText: 'Vybrané {0} z {1}', + maxOptionsText: ['Limit prekročený ({n} {var} max)', 'Limit skupiny prekročený ({n} {var} max)', ['položiek', 'položka']], + selectAllText: 'Vybrať všetky', + deselectAllText: 'Zrušiť výber', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-sk_SK.min.js b/plugins/bootstrap-select/js/i18n/defaults-sk_SK.min.js new file mode 100644 index 0000000..f6a38ab --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sk_SK.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Vyberte zo zoznamu",noneResultsText:"Pre výraz {0} neboli nájdené žiadne výsledky",countSelectedText:"Vybrané {0} z {1}",maxOptionsText:["Limit prekročený ({n} {var} max)","Limit skupiny prekročený ({n} {var} max)",["položiek","položka"]],selectAllText:"Vybrať všetky",deselectAllText:"Zrušiť výber",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-sl_SI.js b/plugins/bootstrap-select/js/i18n/defaults-sl_SI.js new file mode 100644 index 0000000..201ad74 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sl_SI.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Nič izbranega', + noneResultsText: 'Ni zadetkov za {0}', + countSelectedText: function (numSelected, numTotal) { + "Število izbranih: {0}"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Omejitev dosežena (max. izbranih: {n})', + 'Omejitev skupine dosežena (max. izbranih: {n})' + ]; + }, + selectAllText: 'Izberi vse', + deselectAllText: 'Počisti izbor', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-sl_SI.min.js b/plugins/bootstrap-select/js/i18n/defaults-sl_SI.min.js new file mode 100644 index 0000000..125838b --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sl_SI.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Nič izbranega",noneResultsText:"Ni zadetkov za {0}",countSelectedText:function(a,b){"Število izbranih: {0}"},maxOptionsText:function(a,b){return["Omejitev dosežena (max. izbranih: {n})","Omejitev skupine dosežena (max. izbranih: {n})"]},selectAllText:"Izberi vse",deselectAllText:"Počisti izbor",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-sv_SE.js b/plugins/bootstrap-select/js/i18n/defaults-sv_SE.js new file mode 100644 index 0000000..e25349b --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sv_SE.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Inget valt', + noneResultsText: 'Inget sökresultat matchar {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected === 1) ? "{0} alternativ valt" : "{0} alternativ valda"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + 'Gräns uppnåd (max {n} alternativ)', + 'Gräns uppnåd (max {n} gruppalternativ)' + ]; + }, + selectAllText: 'Markera alla', + deselectAllText: 'Avmarkera alla', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-sv_SE.min.js b/plugins/bootstrap-select/js/i18n/defaults-sv_SE.min.js new file mode 100644 index 0000000..6bf8fdb --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-sv_SE.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Inget valt",noneResultsText:"Inget sökresultat matchar {0}",countSelectedText:function(a,b){return 1===a?"{0} alternativ valt":"{0} alternativ valda"},maxOptionsText:function(a,b){return["Gräns uppnåd (max {n} alternativ)","Gräns uppnåd (max {n} gruppalternativ)"]},selectAllText:"Markera alla",deselectAllText:"Avmarkera alla",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-tr_TR.js b/plugins/bootstrap-select/js/i18n/defaults-tr_TR.js new file mode 100644 index 0000000..4eb11b5 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-tr_TR.js @@ -0,0 +1,44 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Hiçbiri seçilmedi', + noneResultsText: 'Hiçbir sonuç bulunamadı {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} öğe seçildi" : "{0} öğe seçildi"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit aşıldı (maksimum {n} sayıda öğe )' : 'Limit aşıldı (maksimum {n} sayıda öğe)', + (numGroup == 1) ? 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' : 'Grup limiti aşıldı (maksimum {n} sayıda öğe)' + ]; + }, + selectAllText: 'Tümünü Seç', + deselectAllText: 'Seçiniz', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-tr_TR.min.js b/plugins/bootstrap-select/js/i18n/defaults-tr_TR.min.js new file mode 100644 index 0000000..95433ee --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-tr_TR.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Hiçbiri seçilmedi",noneResultsText:"Hiçbir sonuç bulunamadı {0}",countSelectedText:function(a,b){return"{0} öğe seçildi"},maxOptionsText:function(a,b){return[1==a?"Limit aşıldı (maksimum {n} sayıda öğe )":"Limit aşıldı (maksimum {n} sayıda öğe)","Grup limiti aşıldı (maksimum {n} sayıda öğe)"]},selectAllText:"Tümünü Seç",deselectAllText:"Seçiniz",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-ua_UA.js b/plugins/bootstrap-select/js/i18n/defaults-ua_UA.js new file mode 100644 index 0000000..13d59cc --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ua_UA.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: 'Нічого не вибрано', + noneResultsText: 'Збігів не знайдено {0}', + countSelectedText: 'Вибрано {0} із {1}', + maxOptionsText: ['Досягнута межа ({n} {var} максимум)', 'Досягнута межа в групі ({n} {var} максимум)', ['items', 'item']], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-ua_UA.min.js b/plugins/bootstrap-select/js/i18n/defaults-ua_UA.min.js new file mode 100644 index 0000000..63ecc4d --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-ua_UA.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"Нічого не вибрано",noneResultsText:"Збігів не знайдено {0}",countSelectedText:"Вибрано {0} із {1}",maxOptionsText:["Досягнута межа ({n} {var} максимум)","Досягнута межа в групі ({n} {var} максимум)",["items","item"]],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-zh_CN.js b/plugins/bootstrap-select/js/i18n/defaults-zh_CN.js new file mode 100644 index 0000000..2d1d034 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-zh_CN.js @@ -0,0 +1,35 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '没有选中任何项', + noneResultsText: '没有找到匹配项', + countSelectedText: '选中{1}中的{0}项', + maxOptionsText: ['超出限制 (最多选择{n}项)', '组选择超出限制(最多选择{n}组)'], + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-zh_CN.min.js b/plugins/bootstrap-select/js/i18n/defaults-zh_CN.min.js new file mode 100644 index 0000000..e6b1a81 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-zh_CN.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"没有选中任何项",noneResultsText:"没有找到匹配项",countSelectedText:"选中{1}中的{0}项",maxOptionsText:["超出限制 (最多选择{n}项)","组选择超出限制(最多选择{n}组)"],multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-select/js/i18n/defaults-zh_TW.js b/plugins/bootstrap-select/js/i18n/defaults-zh_TW.js new file mode 100644 index 0000000..6f61a20 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-zh_TW.js @@ -0,0 +1,37 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + +(function ($) { + $.fn.selectpicker.defaults = { + noneSelectedText: '沒有選取任何項目', + noneResultsText: '沒有找到符合的結果', + countSelectedText: '已經選取{0}個項目', + maxOptionsText: ['超過限制 (最多選擇{n}項)', '超過限制(最多選擇{n}組)'], + selectAllText: '選取全部', + deselectAllText: '全部取消', + multipleSeparator: ', ' + }; +})(jQuery); + + +})); diff --git a/plugins/bootstrap-select/js/i18n/defaults-zh_TW.min.js b/plugins/bootstrap-select/js/i18n/defaults-zh_TW.min.js new file mode 100644 index 0000000..1eb4f67 --- /dev/null +++ b/plugins/bootstrap-select/js/i18n/defaults-zh_TW.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"沒有選取任何項目",noneResultsText:"沒有找到符合的結果",countSelectedText:"已經選取{0}個項目",maxOptionsText:["超過限制 (最多選擇{n}項)","超過限制(最多選擇{n}組)"],selectAllText:"選取全部",deselectAllText:"全部取消",multipleSeparator:", "}}(a)}); \ No newline at end of file diff --git a/plugins/bootstrap-sweetalert/Thumbs.db b/plugins/bootstrap-sweetalert/Thumbs.db new file mode 100644 index 0000000..ee65beb Binary files /dev/null and b/plugins/bootstrap-sweetalert/Thumbs.db differ diff --git a/plugins/bootstrap-sweetalert/sweet-alert.css b/plugins/bootstrap-sweetalert/sweet-alert.css new file mode 100644 index 0000000..7075866 --- /dev/null +++ b/plugins/bootstrap-sweetalert/sweet-alert.css @@ -0,0 +1,564 @@ +@-webkit-keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); + } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); + } + 80% { + transform: scale(0.95); + -webkit-tranform: scale(0.95); + } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + } +} +@keyframes showSweetAlert { + 0% { + transform: scale(0.7); + -webkit-transform: scale(0.7); + } + 45% { + transform: scale(1.05); + -webkit-transform: scale(1.05); + } + 80% { + transform: scale(0.95); + -webkit-tranform: scale(0.95); + } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + } +} +@-webkit-keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); + } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); + } +} +@keyframes hideSweetAlert { + 0% { + transform: scale(1); + -webkit-transform: scale(1); + } + 100% { + transform: scale(0.5); + -webkit-transform: scale(0.5); + } +} +.showSweetAlert { + -webkit-animation: showSweetAlert 0.3s; + animation: showSweetAlert 0.3s; +} +.hideSweetAlert { + -webkit-animation: hideSweetAlert 0.2s; + animation: hideSweetAlert 0.2s; +} +@-webkit-keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + 100% { + width: 25px; + left: 14px; + top: 45px; + } +} +@keyframes animateSuccessTip { + 0% { + width: 0; + left: 1px; + top: 19px; + } + 54% { + width: 0; + left: 1px; + top: 19px; + } + 70% { + width: 50px; + left: -8px; + top: 37px; + } + 84% { + width: 17px; + left: 21px; + top: 48px; + } + 100% { + width: 25px; + left: 14px; + top: 45px; + } +} +@-webkit-keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0px; + top: 35px; + } + 100% { + width: 47px; + right: 8px; + top: 38px; + } +} +@keyframes animateSuccessLong { + 0% { + width: 0; + right: 46px; + top: 54px; + } + 65% { + width: 0; + right: 46px; + top: 54px; + } + 84% { + width: 55px; + right: 0px; + top: 35px; + } + 100% { + width: 47px; + right: 8px; + top: 38px; + } +} +@-webkit-keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } +} +@keyframes rotatePlaceholder { + 0% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + -webkit-transform: rotate(-405deg); + } +} +.animateSuccessTip { + -webkit-animation: animateSuccessTip 0.75s; + animation: animateSuccessTip 0.75s; +} +.animateSuccessLong { + -webkit-animation: animateSuccessLong 0.75s; + animation: animateSuccessLong 0.75s; +} +.icon.success.animate::after { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in; +} +@-webkit-keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes animateErrorIcon { + 0% { + transform: rotateX(100deg); + -webkit-transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + -webkit-transform: rotateX(0deg); + opacity: 1; + } +} +.animateErrorIcon { + -webkit-animation: animateErrorIcon 0.5s; + animation: animateErrorIcon 0.5s; +} +@-webkit-keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; + } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +@keyframes animateXMark { + 0% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 50% { + transform: scale(0.4); + -webkit-transform: scale(0.4); + margin-top: 26px; + opacity: 0; + } + 80% { + transform: scale(1.15); + -webkit-transform: scale(1.15); + margin-top: -6px; + } + 100% { + transform: scale(1); + -webkit-transform: scale(1); + margin-top: 0; + opacity: 1; + } +} +.animateXMark { + -webkit-animation: animateXMark 0.5s; + animation: animateXMark 0.5s; +} +@-webkit-keyframes pulseWarning { + 0% { + border-color: #F8D486; + } + 100% { + border-color: #F8BB86; + } +} +@keyframes pulseWarning { + 0% { + border-color: #F8D486; + } + 100% { + border-color: #F8BB86; + } +} +.pulseWarning { + -webkit-animation: pulseWarning 0.75s infinite alternate; + animation: pulseWarning 0.75s infinite alternate; +} +@-webkit-keyframes pulseWarningIns { + 0% { + background-color: #F8D486; + } + 100% { + background-color: #F8BB86; + } +} +@keyframes pulseWarningIns { + 0% { + background-color: #F8D486; + } + 100% { + background-color: #F8BB86; + } +} +.pulseWarningIns { + -webkit-animation: pulseWarningIns 0.75s infinite alternate; + animation: pulseWarningIns 0.75s infinite alternate; +} +.sweet-overlay { + background-color: rgba(0, 0, 0, 0.4); + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + display: none; + z-index: 1040; +} +.sweet-alert { + background-color: #ffffff; + width: 478px; + padding: 17px; + border-radius: 5px; + text-align: center; + position: fixed; + left: 50%; + top: 50%; + margin-left: -256px; + margin-top: -200px; + overflow: hidden; + display: none; + z-index: 2000; +} +@media all and (max-width: 767px) { + .sweet-alert { + width: auto; + margin-left: 0; + margin-right: 0; + left: 15px; + right: 15px; + } +} +.sweet-alert .icon { + width: 80px; + height: 80px; + border: 4px solid gray; + border-radius: 50%; + margin: 20px auto; + position: relative; + box-sizing: content-box; +} +.sweet-alert .icon.error { + border-color: #d43f3a; +} +.sweet-alert .icon.error .x-mark { + position: relative; + display: block; +} +.sweet-alert .icon.error .line { + position: absolute; + height: 5px; + width: 47px; + background-color: #d9534f; + display: block; + top: 37px; + border-radius: 2px; +} +.sweet-alert .icon.error .line.left { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px; +} +.sweet-alert .icon.error .line.right { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px; +} +.sweet-alert .icon.warning { + border-color: #eea236; +} +.sweet-alert .icon.warning .body { + position: absolute; + width: 5px; + height: 47px; + left: 50%; + top: 10px; + border-radius: 2px; + margin-left: -2px; + background-color: #f0ad4e; +} +.sweet-alert .icon.warning .dot { + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + left: 50%; + bottom: 10px; + background-color: #f0ad4e; +} +.sweet-alert .icon.info { + border-color: #46b8da; +} +.sweet-alert .icon.info::before { + content: ""; + position: absolute; + width: 5px; + height: 29px; + left: 50%; + bottom: 17px; + border-radius: 2px; + margin-left: -2px; + background-color: #5bc0de; +} +.sweet-alert .icon.info::after { + content: ""; + position: absolute; + width: 7px; + height: 7px; + border-radius: 50%; + margin-left: -3px; + top: 19px; + background-color: #5bc0de; +} +.sweet-alert .icon.success { + border-color: #4cae4c; +} +.sweet-alert .icon.success::before, +.sweet-alert .icon.success::after { + content: ''; + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + background: white; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.sweet-alert .icon.success::before { + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px; +} +.sweet-alert .icon.success::after { + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0px 60px; + transform-origin: 0px 60px; +} +.sweet-alert .icon.success .placeholder { + width: 80px; + height: 80px; + border: 4px solid rgba(92, 184, 92, 0.2); + border-radius: 50%; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2; +} +.sweet-alert .icon.success .fix { + width: 5px; + height: 90px; + background-color: #ffffff; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.sweet-alert .icon.success .line { + height: 5px; + background-color: #5cb85c; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2; +} +.sweet-alert .icon.success .line.tip { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.sweet-alert .icon.success .line.long { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); +} +.sweet-alert .icon.custom { + background-size: contain; + border-radius: 0; + border: none; + background-position: center center; + background-repeat: no-repeat; +} +.sweet-alert .btn-default:focus { + border-color: #cccccc; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(204, 204, 204, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(204, 204, 204, 0.6); +} +.sweet-alert .btn-success:focus { + border-color: #4cae4c; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(76, 174, 76, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(76, 174, 76, 0.6); +} +.sweet-alert .btn-info:focus { + border-color: #46b8da; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(70, 184, 218, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(70, 184, 218, 0.6); +} +.sweet-alert .btn-danger:focus { + border-color: #d43f3a; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(212, 63, 58, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(212, 63, 58, 0.6); +} +.sweet-alert .btn-warning:focus { + border-color: #eea236; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(238, 162, 54, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(238, 162, 54, 0.6); +} +.sweet-alert button::-moz-focus-inner { + border: 0; +} diff --git a/plugins/bootstrap-sweetalert/sweet-alert.min.js b/plugins/bootstrap-sweetalert/sweet-alert.min.js new file mode 100644 index 0000000..e5605e0 --- /dev/null +++ b/plugins/bootstrap-sweetalert/sweet-alert.min.js @@ -0,0 +1 @@ +!function(a,b){function c(b){var c=p(),d=c.querySelector("h2"),e=c.querySelector("p"),f=c.querySelector("button.cancel"),g=c.querySelector("button.confirm");if(d.innerHTML=u(b.title).split("\n").join("<br>"),e.innerHTML=u(b.text||"").split("\n").join("<br>"),b.text&&w(e),y(c.querySelectorAll(".icon")),b.type){for(var h=!1,i=0;i<n.length;i++)if(b.type===n[i]){h=!0;break}if(!h)return a.console.error("Unknown alert type: "+b.type),!1;var j=c.querySelector(".icon."+b.type);switch(w(j),b.type){case"success":s(j,"animate"),s(j.querySelector(".tip"),"animateSuccessTip"),s(j.querySelector(".long"),"animateSuccessLong");break;case"error":s(j,"animateErrorIcon"),s(j.querySelector(".x-mark"),"animateXMark");break;case"warning":s(j,"pulseWarning"),s(j.querySelector(".body"),"pulseWarningIns"),s(j.querySelector(".dot"),"pulseWarningIns")}}if(b.imageUrl){var k=c.querySelector(".icon.custom");k.style.backgroundImage="url("+b.imageUrl+")",w(k);var l=80,m=80;if(b.imageSize){var o=b.imageSize.split("x")[0],q=b.imageSize.split("x")[1];o&&q?(l=o,m=q,k.css({width:o+"px",height:q+"px"})):a.console.error("Parameter imageSize expects value with format WIDTHxHEIGHT, got "+b.imageSize)}k.setAttribute("style",k.getAttribute("style")+"width:"+l+"px; height:"+m+"px")}c.setAttribute("data-has-cancel-button",b.showCancelButton),b.showCancelButton?f.style.display="inline-block":y(f),c.setAttribute("data-has-confirm-button",b.showConfirmButton),b.showConfirmButton?g.style.display="inline-block":y(g),b.cancelButtonText&&(f.innerHTML=u(b.cancelButtonText)),b.confirmButtonText&&(g.innerHTML=u(b.confirmButtonText)),g.className="confirm btn btn-lg",s(c,b.containerClass),s(g,b.confirmButtonClass),s(f,b.cancelButtonClass),s(d,b.titleClass),s(e,b.textClass),c.setAttribute("data-allow-ouside-click",b.allowOutsideClick);var r=b.doneFunction?!0:!1;c.setAttribute("data-has-done-function",r),c.setAttribute("data-timer",b.timer)}function d(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function e(){var a=p();B(q(),10),w(a),s(a,"showSweetAlert"),t(a,"hideSweetAlert"),h=b.activeElement;var c=a.querySelector("button.confirm");c.focus(),setTimeout(function(){s(a,"visible")},500);var d=a.getAttribute("data-timer");"null"!==d&&""!==d&&setTimeout(function(){f()},d)}function f(){var c=p();C(q(),5),C(c,5),t(c,"showSweetAlert"),s(c,"hideSweetAlert"),t(c,"visible");var d=c.querySelector(".icon.success");t(d,"animate"),t(d.querySelector(".tip"),"animateSuccessTip"),t(d.querySelector(".long"),"animateSuccessLong");var e=c.querySelector(".icon.error");t(e,"animateErrorIcon"),t(e.querySelector(".x-mark"),"animateXMark");var f=c.querySelector(".icon.warning");t(f,"pulseWarning"),t(f.querySelector(".body"),"pulseWarningIns"),t(f.querySelector(".dot"),"pulseWarningIns"),a.onkeydown=j,b.onclick=i,h&&h.focus(),k=void 0}function g(){var a=p();a.style.marginTop=A(p())}var h,i,j,k,l=".sweet-alert",m=".sweet-overlay",n=["error","warning","info","success"],o={title:"",text:"",type:null,allowOutsideClick:!1,showCancelButton:!1,showConfirmButton:!0,closeOnConfirm:!0,closeOnCancel:!0,confirmButtonText:"OK",confirmButtonClass:"btn-primary",cancelButtonText:"Cancel",cancelButtonClass:"btn-default",containerClass:"",titleClass:"",textClass:"",imageUrl:null,imageSize:null,timer:null},p=function(){return b.querySelector(l)},q=function(){return b.querySelector(m)},r=function(a,b){return new RegExp(" "+b+" ").test(" "+a.className+" ")},s=function(a,b){b&&!r(a,b)&&(a.className+=" "+b)},t=function(a,b){var c=" "+a.className.replace(/[\t\r\n]/g," ")+" ";if(r(a,b)){for(;c.indexOf(" "+b+" ")>=0;)c=c.replace(" "+b+" "," ");a.className=c.replace(/^\s+|\s+$/g,"")}},u=function(a){var c=b.createElement("div");return c.appendChild(b.createTextNode(a)),c.innerHTML},v=function(a){a.style.opacity="",a.style.display="block"},w=function(a){if(a&&!a.length)return v(a);for(var b=0;b<a.length;++b)v(a[b])},x=function(a){a.style.opacity="",a.style.display="none"},y=function(a){if(a&&!a.length)return x(a);for(var b=0;b<a.length;++b)x(a[b])},z=function(a,b){for(var c=b.parentNode;null!==c;){if(c===a)return!0;c=c.parentNode}return!1},A=function(a){a.style.left="-9999px",a.style.display="block";var b=a.clientHeight,c=parseInt(getComputedStyle(a).getPropertyValue("padding"),10);return a.style.left="",a.style.display="none","-"+parseInt(b/2+c)+"px"},B=function(a,b){if(+a.style.opacity<1){b=b||16,a.style.opacity=0,a.style.display="block";var c=+new Date,d=function(){a.style.opacity=+a.style.opacity+(new Date-c)/100,c=+new Date,+a.style.opacity<1&&setTimeout(d,b)};d()}},C=function(a,b){b=b||16,a.style.opacity=1;var c=+new Date,d=function(){a.style.opacity=+a.style.opacity-(new Date-c)/100,c=+new Date,+a.style.opacity>0?setTimeout(d,b):a.style.display="none"};d()},D=function(c){if(MouseEvent){var d=new MouseEvent("click",{view:a,bubbles:!1,cancelable:!0});c.dispatchEvent(d)}else if(b.createEvent){var e=b.createEvent("MouseEvents");e.initEvent("click",!1,!1),c.dispatchEvent(e)}else b.createEventObject?c.fireEvent("onclick"):"function"==typeof c.onclick&&c.onclick()},E=function(b){"function"==typeof b.stopPropagation?(b.stopPropagation(),b.preventDefault()):a.event&&a.event.hasOwnProperty("cancelBubble")&&(a.event.cancelBubble=!0)};a.sweetAlertInitialize=function(){var a='<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert" tabIndex="-1"><div class="icon error"><span class="x-mark"><span class="line left"></span><span class="line right"></span></span></div><div class="icon warning"> <span class="body"></span> <span class="dot"></span> </div> <div class="icon info"></div> <div class="icon success"> <span class="line tip"></span> <span class="line long"></span> <div class="placeholder"></div> <div class="fix"></div> </div> <div class="icon custom"></div> <h2>Title</h2><p class="lead text-muted">Text</p><p><button class="cancel btn btn-lg" tabIndex="2">Cancel</button> <button class="confirm btn btn-lg" tabIndex="1">OK</button></p></div>',c=b.createElement("div");c.innerHTML=a,b.body.appendChild(c)},a.sweetAlert=a.swal=function(){function h(a){var b=a.keyCode||a.which;if(-1!==[9,13,32,27].indexOf(b)){for(var c=a.target||a.srcElement,d=-1,e=0;e<w.length;e++)if(c===w[e]){d=e;break}9===b?(c=-1===d?u:d===w.length-1?w[0]:w[d+1],E(a),c.focus()):(c=13===b||32===b?-1===d?u:void 0:27!==b||v.hidden||"none"===v.style.display?void 0:v,void 0!==c&&D(c,a))}}function l(a){var b=a.target||a.srcElement,c=a.relatedTarget,d=r(n,"visible");if(d){var e=-1;if(null!==c){for(var f=0;f<w.length;f++)if(c===w[f]){e=f;break}-1===e&&b.focus()}else k=b}}if(void 0===arguments[0])return a.console.error("sweetAlert expects at least 1 attribute!"),!1;var m=d({},o);switch(typeof arguments[0]){case"string":m.title=arguments[0],m.text=arguments[1]||"",m.type=arguments[2]||"";break;case"object":if(void 0===arguments[0].title)return a.console.error('Missing "title" argument!'),!1;m.title=arguments[0].title,m.text=arguments[0].text||o.text,m.type=arguments[0].type||o.type,m.allowOutsideClick=arguments[0].allowOutsideClick||o.allowOutsideClick,m.showCancelButton=void 0!==arguments[0].showCancelButton?arguments[0].showCancelButton:o.showCancelButton,m.showConfirmButton=void 0!==arguments[0].showConfirmButton?arguments[0].showConfirmButton:o.showConfirmButton,m.closeOnConfirm=void 0!==arguments[0].closeOnConfirm?arguments[0].closeOnConfirm:o.closeOnConfirm,m.closeOnCancel=void 0!==arguments[0].closeOnCancel?arguments[0].closeOnCancel:o.closeOnCancel,m.timer=arguments[0].timer||o.timer,m.confirmButtonText=o.showCancelButton?"Confirm":o.confirmButtonText,m.confirmButtonText=arguments[0].confirmButtonText||o.confirmButtonText,m.confirmButtonClass=arguments[0].confirmButtonClass||(arguments[0].type?"btn-"+arguments[0].type:null)||o.confirmButtonClass,m.cancelButtonText=arguments[0].cancelButtonText||o.cancelButtonText,m.cancelButtonClass=arguments[0].cancelButtonClass||o.cancelButtonClass,m.containerClass=arguments[0].containerClass||o.containerClass,m.titleClass=arguments[0].titleClass||o.titleClass,m.textClass=arguments[0].textClass||o.textClass,m.imageUrl=arguments[0].imageUrl||o.imageUrl,m.imageSize=arguments[0].imageSize||o.imageSize,m.doneFunction=arguments[1]||null;break;default:return a.console.error('Unexpected type of argument! Expected "string" or "object", got '+typeof arguments[0]),!1}c(m),g(),e();for(var n=p(),q=function(a){var b=a.target||a.srcElement,c=b.className.indexOf("confirm")>-1,d=r(n,"visible"),e=m.doneFunction&&"true"===n.getAttribute("data-has-done-function");switch(a.type){case"click":if(c&&e&&d)m.doneFunction(!0),m.closeOnConfirm&&f();else if(e&&d){var g=String(m.doneFunction).replace(/\s/g,""),h="function("===g.substring(0,9)&&")"!==g.substring(9,10);h&&m.doneFunction(!1),m.closeOnCancel&&f()}else f()}},s=n.querySelectorAll("button"),t=0;t<s.length;t++)s[t].onclick=q;i=b.onclick,b.onclick=function(a){var b=a.target||a.srcElement,c=n===b,d=z(n,a.target),e=r(n,"visible"),g="true"===n.getAttribute("data-allow-ouside-click");!c&&!d&&e&&g&&f()};var u=n.querySelector("button.confirm"),v=n.querySelector("button.cancel"),w=n.querySelectorAll("button:not([type=hidden])");j=a.onkeydown,a.onkeydown=h,u.onblur=l,v.onblur=l,a.onfocus=function(){a.setTimeout(function(){void 0!==k&&(k.focus(),k=void 0)},0)}},a.swal.setDefaults=function(a){if(!a)throw new Error("userParams is required");if("object"!=typeof a)throw new Error("userParams has to be a object");d(o,a)},a.swal.close=function(){f()},function(){"complete"===b.readyState||"interactive"===b.readyState&&b.body?sweetAlertInitialize():b.addEventListener?b.addEventListener("DOMContentLoaded",function a(){b.removeEventListener("DOMContentLoaded",a,!1),sweetAlertInitialize()},!1):b.attachEvent&&b.attachEvent("onreadystatechange",function c(){"complete"===b.readyState&&(b.detachEvent("onreadystatechange",c),sweetAlertInitialize())})}()}(window,document); \ No newline at end of file diff --git a/plugins/bootstrap-sweetalert/thumbs-up.jpg b/plugins/bootstrap-sweetalert/thumbs-up.jpg new file mode 100644 index 0000000..3e7c747 Binary files /dev/null and b/plugins/bootstrap-sweetalert/thumbs-up.jpg differ diff --git a/plugins/bootstrap-tagsinput/css/bootstrap-tagsinput.css b/plugins/bootstrap-tagsinput/css/bootstrap-tagsinput.css new file mode 100644 index 0000000..7fced30 --- /dev/null +++ b/plugins/bootstrap-tagsinput/css/bootstrap-tagsinput.css @@ -0,0 +1,60 @@ +/* + * bootstrap-tagsinput v0.8.0 + * + */ + +.bootstrap-tagsinput { + background-color: #fff; + border: 1px solid #ccc; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + display: inline-block; + padding: 4px 6px; + color: #555; + vertical-align: middle; + border-radius: 4px; + max-width: 100%; + line-height: 22px; + cursor: text; +} +.bootstrap-tagsinput input { + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0 6px; + margin: 0; + width: auto; + max-width: inherit; +} +.bootstrap-tagsinput.form-control input::-moz-placeholder { + color: #777; + opacity: 1; +} +.bootstrap-tagsinput.form-control input:-ms-input-placeholder { + color: #777; +} +.bootstrap-tagsinput.form-control input::-webkit-input-placeholder { + color: #777; +} +.bootstrap-tagsinput input:focus { + border: none; + box-shadow: none; +} +.bootstrap-tagsinput .tag { + margin-right: 2px; + color: white; +} +.bootstrap-tagsinput .tag [data-role="remove"] { + margin-left: 8px; + cursor: pointer; +} +.bootstrap-tagsinput .tag [data-role="remove"]:after { + content: "x"; + padding: 0px 2px; +} +.bootstrap-tagsinput .tag [data-role="remove"]:hover { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.bootstrap-tagsinput .tag [data-role="remove"]:hover:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} diff --git a/plugins/bootstrap-tagsinput/js/bootstrap-tagsinput.min.js b/plugins/bootstrap-tagsinput/js/bootstrap-tagsinput.min.js new file mode 100644 index 0000000..044f447 --- /dev/null +++ b/plugins/bootstrap-tagsinput/js/bootstrap-tagsinput.min.js @@ -0,0 +1,7 @@ +/* + * bootstrap-tagsinput v0.8.0 + * + */ + +!function(a){"use strict";function b(b,c){this.isInit=!0,this.itemsArray=[],this.$element=a(b),this.$element.hide(),this.isSelect="SELECT"===b.tagName,this.multiple=this.isSelect&&b.hasAttribute("multiple"),this.objectItems=c&&c.itemValue,this.placeholderText=b.hasAttribute("placeholder")?this.$element.attr("placeholder"):"",this.inputSize=Math.max(1,this.placeholderText.length),this.$container=a('<div class="bootstrap-tagsinput"></div>'),this.$input=a('<input type="text" placeholder="'+this.placeholderText+'"/>').appendTo(this.$container),this.$element.before(this.$container),this.build(c),this.isInit=!1}function c(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(a){return a[c]}}}function d(a,b){if("function"!=typeof a[b]){var c=a[b];a[b]=function(){return c}}}function e(a){return a?i.text(a).html():""}function f(a){var b=0;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-a.value.length),b=c.text.length}else(a.selectionStart||"0"==a.selectionStart)&&(b=a.selectionStart);return b}function g(b,c){var d=!1;return a.each(c,function(a,c){if("number"==typeof c&&b.which===c)return d=!0,!1;if(b.which===c.which){var e=!c.hasOwnProperty("altKey")||b.altKey===c.altKey,f=!c.hasOwnProperty("shiftKey")||b.shiftKey===c.shiftKey,g=!c.hasOwnProperty("ctrlKey")||b.ctrlKey===c.ctrlKey;if(e&&f&&g)return d=!0,!1}}),d}var h={tagClass:function(a){return"label label-info"},focusClass:"focus",itemValue:function(a){return a?a.toString():a},itemText:function(a){return this.itemValue(a)},itemTitle:function(a){return null},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],delimiter:",",delimiterRegex:null,cancelConfirmKeysOnEmpty:!1,onTagExists:function(a,b){b.hide().fadeIn()},trimValue:!1,allowDuplicates:!1,triggerChange:!0};b.prototype={constructor:b,add:function(b,c,d){var f=this;if(!(f.options.maxTags&&f.itemsArray.length>=f.options.maxTags)&&(b===!1||b)){if("string"==typeof b&&f.options.trimValue&&(b=a.trim(b)),"object"==typeof b&&!f.objectItems)throw"Can't add objects when itemValue option is not set";if(!b.toString().match(/^\s*$/)){if(f.isSelect&&!f.multiple&&f.itemsArray.length>0&&f.remove(f.itemsArray[0]),"string"==typeof b&&"INPUT"===this.$element[0].tagName){var g=f.options.delimiterRegex?f.options.delimiterRegex:f.options.delimiter,h=b.split(g);if(h.length>1){for(var i=0;i<h.length;i++)this.add(h[i],!0);return void(c||f.pushVal(f.options.triggerChange))}}var j=f.options.itemValue(b),k=f.options.itemText(b),l=f.options.tagClass(b),m=f.options.itemTitle(b),n=a.grep(f.itemsArray,function(a){return f.options.itemValue(a)===j})[0];if(!n||f.options.allowDuplicates){if(!(f.items().toString().length+b.length+1>f.options.maxInputLength)){var o=a.Event("beforeItemAdd",{item:b,cancel:!1,options:d});if(f.$element.trigger(o),!o.cancel){f.itemsArray.push(b);var p=a('<span class="tag '+e(l)+(null!==m?'" title="'+m:"")+'">'+e(k)+'<span data-role="remove"></span></span>');p.data("item",b),f.findInputWrapper().before(p),p.after(" ");var q=a('option[value="'+encodeURIComponent(j)+'"]',f.$element).length||a('option[value="'+e(j)+'"]',f.$element).length;if(f.isSelect&&!q){var r=a("<option selected>"+e(k)+"</option>");r.data("item",b),r.attr("value",j),f.$element.append(r)}c||f.pushVal(f.options.triggerChange),(f.options.maxTags===f.itemsArray.length||f.items().toString().length===f.options.maxInputLength)&&f.$container.addClass("bootstrap-tagsinput-max"),a(".typeahead, .twitter-typeahead",f.$container).length&&f.$input.typeahead("val",""),this.isInit?f.$element.trigger(a.Event("itemAddedOnInit",{item:b,options:d})):f.$element.trigger(a.Event("itemAdded",{item:b,options:d}))}}}else if(f.options.onTagExists){var s=a(".tag",f.$container).filter(function(){return a(this).data("item")===n});f.options.onTagExists(b,s)}}}},remove:function(b,c,d){var e=this;if(e.objectItems&&(b="object"==typeof b?a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==e.options.itemValue(b)}):a.grep(e.itemsArray,function(a){return e.options.itemValue(a)==b}),b=b[b.length-1]),b){var f=a.Event("beforeItemRemove",{item:b,cancel:!1,options:d});if(e.$element.trigger(f),f.cancel)return;a(".tag",e.$container).filter(function(){return a(this).data("item")===b}).remove(),a("option",e.$element).filter(function(){return a(this).data("item")===b}).remove(),-1!==a.inArray(b,e.itemsArray)&&e.itemsArray.splice(a.inArray(b,e.itemsArray),1)}c||e.pushVal(e.options.triggerChange),e.options.maxTags>e.itemsArray.length&&e.$container.removeClass("bootstrap-tagsinput-max"),e.$element.trigger(a.Event("itemRemoved",{item:b,options:d}))},removeAll:function(){var b=this;for(a(".tag",b.$container).remove(),a("option",b.$element).remove();b.itemsArray.length>0;)b.itemsArray.pop();b.pushVal(b.options.triggerChange)},refresh:function(){var b=this;a(".tag",b.$container).each(function(){var c=a(this),d=c.data("item"),f=b.options.itemValue(d),g=b.options.itemText(d),h=b.options.tagClass(d);if(c.attr("class",null),c.addClass("tag "+e(h)),c.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=e(g),b.isSelect){var i=a("option",b.$element).filter(function(){return a(this).data("item")===d});i.attr("value",f)}})},items:function(){return this.itemsArray},pushVal:function(){var b=this,c=a.map(b.items(),function(a){return b.options.itemValue(a).toString()});b.$element.val(c,!0),b.options.triggerChange&&b.$element.trigger("change")},build:function(b){var e=this;if(e.options=a.extend({},h,b),e.objectItems&&(e.options.freeInput=!1),c(e.options,"itemValue"),c(e.options,"itemText"),d(e.options,"tagClass"),e.options.typeahead){var i=e.options.typeahead||{};d(i,"source"),e.$input.typeahead(a.extend({},i,{source:function(b,c){function d(a){for(var b=[],d=0;d<a.length;d++){var g=e.options.itemText(a[d]);f[g]=a[d],b.push(g)}c(b)}this.map={};var f=this.map,g=i.source(b);a.isFunction(g.success)?g.success(d):a.isFunction(g.then)?g.then(d):a.when(g).then(d)},updater:function(a){return e.add(this.map[a]),this.map[a]},matcher:function(a){return-1!==a.toLowerCase().indexOf(this.query.trim().toLowerCase())},sorter:function(a){return a.sort()},highlighter:function(a){var b=new RegExp("("+this.query+")","gi");return a.replace(b,"<strong>$1</strong>")}}))}if(e.options.typeaheadjs){var j=null,k={},l=e.options.typeaheadjs;a.isArray(l)?(j=l[0],k=l[1]):k=l,e.$input.typeahead(j,k).on("typeahead:selected",a.proxy(function(a,b){k.valueKey?e.add(b[k.valueKey]):e.add(b),e.$input.typeahead("val","")},e))}e.$container.on("click",a.proxy(function(a){e.$element.attr("disabled")||e.$input.removeAttr("disabled"),e.$input.focus()},e)),e.options.addOnBlur&&e.options.freeInput&&e.$input.on("focusout",a.proxy(function(b){0===a(".typeahead, .twitter-typeahead",e.$container).length&&(e.add(e.$input.val()),e.$input.val(""))},e)),e.$container.on({focusin:function(){e.$container.addClass(e.options.focusClass)},focusout:function(){e.$container.removeClass(e.options.focusClass)}}),e.$container.on("keydown","input",a.proxy(function(b){var c=a(b.target),d=e.findInputWrapper();if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");switch(b.which){case 8:if(0===f(c[0])){var g=d.prev();g.length&&e.remove(g.data("item"))}break;case 46:if(0===f(c[0])){var h=d.next();h.length&&e.remove(h.data("item"))}break;case 37:var i=d.prev();0===c.val().length&&i[0]&&(i.before(d),c.focus());break;case 39:var j=d.next();0===c.val().length&&j[0]&&(j.after(d),c.focus())}var k=c.val().length;Math.ceil(k/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("keypress","input",a.proxy(function(b){var c=a(b.target);if(e.$element.attr("disabled"))return void e.$input.attr("disabled","disabled");var d=c.val(),f=e.options.maxChars&&d.length>=e.options.maxChars;e.options.freeInput&&(g(b,e.options.confirmKeys)||f)&&(0!==d.length&&(e.add(f?d.substr(0,e.options.maxChars):d),c.val("")),e.options.cancelConfirmKeysOnEmpty===!1&&b.preventDefault());var h=c.val().length;Math.ceil(h/5);c.attr("size",Math.max(this.inputSize,c.val().length))},e)),e.$container.on("click","[data-role=remove]",a.proxy(function(b){e.$element.attr("disabled")||e.remove(a(b.target).closest(".tag").data("item"))},e)),e.options.itemValue===h.itemValue&&("INPUT"===e.$element[0].tagName?e.add(e.$element.val()):a("option",e.$element).each(function(){e.add(a(this).attr("value"),!0)}))},destroy:function(){var a=this;a.$container.off("keypress","input"),a.$container.off("click","[role=remove]"),a.$container.remove(),a.$element.removeData("tagsinput"),a.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var b=this.$input[0],c=this.$container[0];b&&b.parentNode!==c;)b=b.parentNode;return a(b)}},a.fn.tagsinput=function(c,d,e){var f=[];return this.each(function(){var g=a(this).data("tagsinput");if(g)if(c||d){if(void 0!==g[c]){if(3===g[c].length&&void 0!==e)var h=g[c](d,null,e);else var h=g[c](d);void 0!==h&&f.push(h)}}else f.push(g);else g=new b(this,c),a(this).data("tagsinput",g),f.push(g),"SELECT"===this.tagName&&a("option",a(this)).attr("selected","selected"),a(this).val(a(this).val())}),"string"==typeof c?f.length>1?f:f[0]:f},a.fn.tagsinput.Constructor=b;var i=a("<div />");a(function(){a("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput()})}(window.jQuery); +//# sourceMappingURL=bootstrap-tagsinput.min.js.map \ No newline at end of file diff --git a/plugins/bootstrap-touchspin/css/jquery.bootstrap-touchspin.min.css b/plugins/bootstrap-touchspin/css/jquery.bootstrap-touchspin.min.css new file mode 100644 index 0000000..a376fb6 --- /dev/null +++ b/plugins/bootstrap-touchspin/css/jquery.bootstrap-touchspin.min.css @@ -0,0 +1,10 @@ +/* + * Bootstrap TouchSpin - v3.0.1 + * A mobile and touch friendly input spinner component for Bootstrap 3. + * http://www.virtuosoft.eu/code/bootstrap-touchspin/ + * + * Made by István Ujj-Mészáros + * Under Apache License v2.0 License + */ + +.bootstrap-touchspin .input-group-btn-vertical{position:relative;white-space:nowrap;width:1%;vertical-align:middle;display:table-cell}.bootstrap-touchspin .input-group-btn-vertical>.btn{display:block;float:none;width:100%;max-width:100%;padding:8px 10px;margin-left:-1px;position:relative}.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-up{border-radius:0;border-top-right-radius:4px}.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-down{margin-top:-2px;border-radius:0;border-bottom-right-radius:4px}.bootstrap-touchspin .input-group-btn-vertical i{position:absolute;top:3px;left:5px;font-size:9px;font-weight:400} \ No newline at end of file diff --git a/plugins/bootstrap-touchspin/js/jquery.bootstrap-touchspin.min.js b/plugins/bootstrap-touchspin/js/jquery.bootstrap-touchspin.min.js new file mode 100644 index 0000000..d49c56c --- /dev/null +++ b/plugins/bootstrap-touchspin/js/jquery.bootstrap-touchspin.min.js @@ -0,0 +1,9 @@ +/* + * Bootstrap TouchSpin - v3.0.1 + * A mobile and touch friendly input spinner component for Bootstrap 3. + * http://www.virtuosoft.eu/code/bootstrap-touchspin/ + * + * Made by István Ujj-Mészáros + * Under Apache License v2.0 License + */ +!function(a){"use strict";function b(a,b){return a+".touchspin_"+b}function c(c,d){return a.map(c,function(a){return b(a,d)})}var d=0;a.fn.TouchSpin=function(b){if("destroy"===b)return void this.each(function(){var b=a(this),d=b.data();a(document).off(c(["mouseup","touchend","touchcancel","mousemove","touchmove","scroll","scrollstart"],d.spinnerid).join(" "))});var e={min:0,max:100,initval:"",step:1,decimals:0,stepinterval:100,forcestepdivisibility:"round",stepintervaldelay:500,verticalbuttons:!1,verticalupclass:"glyphicon glyphicon-chevron-up",verticaldownclass:"glyphicon glyphicon-chevron-down",prefix:"",postfix:"",prefix_extraclass:"",postfix_extraclass:"",booster:!0,boostat:10,maxboostedstep:!1,mousewheel:!0,buttondown_class:"btn btn-default",buttonup_class:"btn btn-default"},f={min:"min",max:"max",initval:"init-val",step:"step",decimals:"decimals",stepinterval:"step-interval",verticalbuttons:"vertical-buttons",verticalupclass:"vertical-up-class",verticaldownclass:"vertical-down-class",forcestepdivisibility:"force-step-divisibility",stepintervaldelay:"step-interval-delay",prefix:"prefix",postfix:"postfix",prefix_extraclass:"prefix-extra-class",postfix_extraclass:"postfix-extra-class",booster:"booster",boostat:"boostat",maxboostedstep:"max-boosted-step",mousewheel:"mouse-wheel",buttondown_class:"button-down-class",buttonup_class:"button-up-class"};return this.each(function(){function g(){if(!J.data("alreadyinitialized")){if(J.data("alreadyinitialized",!0),d+=1,J.data("spinnerid",d),!J.is("input"))return void console.log("Must be an input.");j(),h(),u(),m(),p(),q(),r(),s(),D.input.css("display","block")}}function h(){""!==B.initval&&""===J.val()&&J.val(B.initval)}function i(a){l(a),u();var b=D.input.val();""!==b&&(b=Number(D.input.val()),D.input.val(b.toFixed(B.decimals)))}function j(){B=a.extend({},e,K,k(),b)}function k(){var b={};return a.each(f,function(a,c){var d="bts-"+c;J.is("[data-"+d+"]")&&(b[a]=J.data(d))}),b}function l(b){B=a.extend({},B,b)}function m(){var a=J.val(),b=J.parent();""!==a&&(a=Number(a).toFixed(B.decimals)),J.data("initvalue",a).val(a),J.addClass("form-control"),b.hasClass("input-group")?n(b):o()}function n(b){b.addClass("bootstrap-touchspin");var c,d,e=J.prev(),f=J.next(),g='<span class="input-group-addon bootstrap-touchspin-prefix">'+B.prefix+"</span>",h='<span class="input-group-addon bootstrap-touchspin-postfix">'+B.postfix+"</span>";e.hasClass("input-group-btn")?(c='<button class="'+B.buttondown_class+' bootstrap-touchspin-down" type="button">-</button>',e.append(c)):(c='<span class="input-group-btn"><button class="'+B.buttondown_class+' bootstrap-touchspin-down" type="button">-</button></span>',a(c).insertBefore(J)),f.hasClass("input-group-btn")?(d='<button class="'+B.buttonup_class+' bootstrap-touchspin-up" type="button">+</button>',f.prepend(d)):(d='<span class="input-group-btn"><button class="'+B.buttonup_class+' bootstrap-touchspin-up" type="button">+</button></span>',a(d).insertAfter(J)),a(g).insertBefore(J),a(h).insertAfter(J),C=b}function o(){var b;b=B.verticalbuttons?'<div class="input-group bootstrap-touchspin"><span class="input-group-addon bootstrap-touchspin-prefix">'+B.prefix+'</span><span class="input-group-addon bootstrap-touchspin-postfix">'+B.postfix+'</span><span class="input-group-btn-vertical"><button class="'+B.buttondown_class+' bootstrap-touchspin-up" type="button"><i class="'+B.verticalupclass+'"></i></button><button class="'+B.buttonup_class+' bootstrap-touchspin-down" type="button"><i class="'+B.verticaldownclass+'"></i></button></span></div>':'<div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="'+B.buttondown_class+' bootstrap-touchspin-down" type="button">-</button></span><span class="input-group-addon bootstrap-touchspin-prefix">'+B.prefix+'</span><span class="input-group-addon bootstrap-touchspin-postfix">'+B.postfix+'</span><span class="input-group-btn"><button class="'+B.buttonup_class+' bootstrap-touchspin-up" type="button">+</button></span></div>',C=a(b).insertBefore(J),a(".bootstrap-touchspin-prefix",C).after(J),J.hasClass("input-sm")?C.addClass("input-group-sm"):J.hasClass("input-lg")&&C.addClass("input-group-lg")}function p(){D={down:a(".bootstrap-touchspin-down",C),up:a(".bootstrap-touchspin-up",C),input:a("input",C),prefix:a(".bootstrap-touchspin-prefix",C).addClass(B.prefix_extraclass),postfix:a(".bootstrap-touchspin-postfix",C).addClass(B.postfix_extraclass)}}function q(){""===B.prefix&&D.prefix.hide(),""===B.postfix&&D.postfix.hide()}function r(){J.on("keydown",function(a){var b=a.keyCode||a.which;38===b?("up"!==M&&(w(),z()),a.preventDefault()):40===b&&("down"!==M&&(x(),y()),a.preventDefault())}),J.on("keyup",function(a){var b=a.keyCode||a.which;38===b?A():40===b&&A()}),J.on("blur",function(){u()}),D.down.on("keydown",function(a){var b=a.keyCode||a.which;(32===b||13===b)&&("down"!==M&&(x(),y()),a.preventDefault())}),D.down.on("keyup",function(a){var b=a.keyCode||a.which;(32===b||13===b)&&A()}),D.up.on("keydown",function(a){var b=a.keyCode||a.which;(32===b||13===b)&&("up"!==M&&(w(),z()),a.preventDefault())}),D.up.on("keyup",function(a){var b=a.keyCode||a.which;(32===b||13===b)&&A()}),D.down.on("mousedown.touchspin",function(a){D.down.off("touchstart.touchspin"),J.is(":disabled")||(x(),y(),a.preventDefault(),a.stopPropagation())}),D.down.on("touchstart.touchspin",function(a){D.down.off("mousedown.touchspin"),J.is(":disabled")||(x(),y(),a.preventDefault(),a.stopPropagation())}),D.up.on("mousedown.touchspin",function(a){D.up.off("touchstart.touchspin"),J.is(":disabled")||(w(),z(),a.preventDefault(),a.stopPropagation())}),D.up.on("touchstart.touchspin",function(a){D.up.off("mousedown.touchspin"),J.is(":disabled")||(w(),z(),a.preventDefault(),a.stopPropagation())}),D.up.on("mouseout touchleave touchend touchcancel",function(a){M&&(a.stopPropagation(),A())}),D.down.on("mouseout touchleave touchend touchcancel",function(a){M&&(a.stopPropagation(),A())}),D.down.on("mousemove touchmove",function(a){M&&(a.stopPropagation(),a.preventDefault())}),D.up.on("mousemove touchmove",function(a){M&&(a.stopPropagation(),a.preventDefault())}),a(document).on(c(["mouseup","touchend","touchcancel"],d).join(" "),function(a){M&&(a.preventDefault(),A())}),a(document).on(c(["mousemove","touchmove","scroll","scrollstart"],d).join(" "),function(a){M&&(a.preventDefault(),A())}),J.on("mousewheel DOMMouseScroll",function(a){if(B.mousewheel&&J.is(":focus")){var b=a.originalEvent.wheelDelta||-a.originalEvent.deltaY||-a.originalEvent.detail;a.stopPropagation(),a.preventDefault(),0>b?x():w()}})}function s(){J.on("touchspin.uponce",function(){A(),w()}),J.on("touchspin.downonce",function(){A(),x()}),J.on("touchspin.startupspin",function(){z()}),J.on("touchspin.startdownspin",function(){y()}),J.on("touchspin.stopspin",function(){A()}),J.on("touchspin.updatesettings",function(a,b){i(b)})}function t(a){switch(B.forcestepdivisibility){case"round":return(Math.round(a/B.step)*B.step).toFixed(B.decimals);case"floor":return(Math.floor(a/B.step)*B.step).toFixed(B.decimals);case"ceil":return(Math.ceil(a/B.step)*B.step).toFixed(B.decimals);default:return a}}function u(){var a,b,c;a=J.val(),""!==a&&(B.decimals>0&&"."===a||(b=parseFloat(a),isNaN(b)&&(b=0),c=b,b.toString()!==a&&(c=b),b<B.min&&(c=B.min),b>B.max&&(c=B.max),c=t(c),Number(a).toString()!==c.toString()&&(J.val(c),J.trigger("change"))))}function v(){if(B.booster){var a=Math.pow(2,Math.floor(L/B.boostat))*B.step;return B.maxboostedstep&&a>B.maxboostedstep&&(a=B.maxboostedstep,E=Math.round(E/a)*a),Math.max(B.step,a)}return B.step}function w(){u(),E=parseFloat(D.input.val()),isNaN(E)&&(E=0);var a=E,b=v();E+=b,E>B.max&&(E=B.max,J.trigger("touchspin.on.max"),A()),D.input.val(Number(E).toFixed(B.decimals)),a!==E&&J.trigger("change")}function x(){u(),E=parseFloat(D.input.val()),isNaN(E)&&(E=0);var a=E,b=v();E-=b,E<B.min&&(E=B.min,J.trigger("touchspin.on.min"),A()),D.input.val(E.toFixed(B.decimals)),a!==E&&J.trigger("change")}function y(){A(),L=0,M="down",J.trigger("touchspin.on.startspin"),J.trigger("touchspin.on.startdownspin"),H=setTimeout(function(){F=setInterval(function(){L++,x()},B.stepinterval)},B.stepintervaldelay)}function z(){A(),L=0,M="up",J.trigger("touchspin.on.startspin"),J.trigger("touchspin.on.startupspin"),I=setTimeout(function(){G=setInterval(function(){L++,w()},B.stepinterval)},B.stepintervaldelay)}function A(){switch(clearTimeout(H),clearTimeout(I),clearInterval(F),clearInterval(G),M){case"up":J.trigger("touchspin.on.stopupspin"),J.trigger("touchspin.on.stopspin");break;case"down":J.trigger("touchspin.on.stopdownspin"),J.trigger("touchspin.on.stopspin")}L=0,M=!1}var B,C,D,E,F,G,H,I,J=a(this),K=J.data(),L=0,M=!1;g()})}}(jQuery); \ No newline at end of file diff --git a/plugins/bx-slider/images/bx_loader.gif b/plugins/bx-slider/images/bx_loader.gif new file mode 100644 index 0000000..f4ff40e Binary files /dev/null and b/plugins/bx-slider/images/bx_loader.gif differ diff --git a/plugins/bx-slider/images/controls.png b/plugins/bx-slider/images/controls.png new file mode 100644 index 0000000..28918dd Binary files /dev/null and b/plugins/bx-slider/images/controls.png differ diff --git a/plugins/bx-slider/jquery.bxslider.css b/plugins/bx-slider/jquery.bxslider.css new file mode 100644 index 0000000..e5fa4d0 --- /dev/null +++ b/plugins/bx-slider/jquery.bxslider.css @@ -0,0 +1,204 @@ +/** + * BxSlider v4.1.2 - Fully loaded, responsive content slider + * http://bxslider.com + * + * Written by: Steven Wanderski, 2014 + * http://stevenwanderski.com + * (while drinking Belgian ales and listening to jazz) + * + * CEO and founder of bxCreative, LTD + * http://bxcreative.com + */ + + +/** RESET AND LAYOUT +===================================*/ + +.bx-wrapper { + position: relative; + margin: 0 auto 60px; + padding: 0; + *zoom: 1; +} + +.bx-wrapper img { + max-width: 100%; + display: block; +} + +/** THEME +===================================*/ + +.bx-wrapper .bx-viewport { + -moz-box-shadow: 0 0 5px #ccc; + -webkit-box-shadow: 0 0 5px #ccc; + box-shadow: 0 0 5px #ccc; + border: 5px solid #fff; + left: -5px; + background: #fff; + + /*fix other elements on the page moving (on Chrome)*/ + -webkit-transform: translatez(0); + -moz-transform: translatez(0); + -ms-transform: translatez(0); + -o-transform: translatez(0); + transform: translatez(0); +} + +.bx-wrapper .bx-pager, +.bx-wrapper .bx-controls-auto { + position: absolute; + bottom: -30px; + width: 100%; +} + +/* LOADER */ + +.bx-wrapper .bx-loading { + min-height: 50px; + background: url(images/bx_loader.gif) center center no-repeat #fff; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 2000; +} + +/* PAGER */ + +.bx-wrapper .bx-pager { + text-align: center; + font-size: .85em; + font-family: Arial; + font-weight: bold; + color: #666; + padding-top: 20px; +} + +.bx-wrapper .bx-pager .bx-pager-item, +.bx-wrapper .bx-controls-auto .bx-controls-auto-item { + display: inline-block; + *zoom: 1; + *display: inline; +} + +.bx-wrapper .bx-pager.bx-default-pager a { + background: #666; + text-indent: -9999px; + display: block; + width: 10px; + height: 10px; + margin: 0 5px; + outline: 0; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.bx-wrapper .bx-pager.bx-default-pager a:hover, +.bx-wrapper .bx-pager.bx-default-pager a.active { + background: #000; +} + +/* DIRECTION CONTROLS (NEXT / PREV) */ + +.bx-wrapper .bx-prev { + left: 10px; + background: url(images/controls.png) no-repeat 0 -32px; +} + +.bx-wrapper .bx-next { + right: 10px; + background: url(images/controls.png) no-repeat -43px -32px; +} + +.bx-wrapper .bx-prev:hover { + background-position: 0 0; +} + +.bx-wrapper .bx-next:hover { + background-position: -43px 0; +} + +.bx-wrapper .bx-controls-direction a { + position: absolute; + top: 50%; + margin-top: -16px; + outline: 0; + width: 32px; + height: 32px; + text-indent: -9999px; + z-index: 9999; +} + +.bx-wrapper .bx-controls-direction a.disabled { + display: none; +} + +/* AUTO CONTROLS (START / STOP) */ + +.bx-wrapper .bx-controls-auto { + text-align: center; +} + +.bx-wrapper .bx-controls-auto .bx-start { + display: block; + text-indent: -9999px; + width: 10px; + height: 11px; + outline: 0; + background: url(images/controls.png) -86px -11px no-repeat; + margin: 0 3px; +} + +.bx-wrapper .bx-controls-auto .bx-start:hover, +.bx-wrapper .bx-controls-auto .bx-start.active { + background-position: -86px 0; +} + +.bx-wrapper .bx-controls-auto .bx-stop { + display: block; + text-indent: -9999px; + width: 9px; + height: 11px; + outline: 0; + background: url(images/controls.png) -86px -44px no-repeat; + margin: 0 3px; +} + +.bx-wrapper .bx-controls-auto .bx-stop:hover, +.bx-wrapper .bx-controls-auto .bx-stop.active { + background-position: -86px -33px; +} + +/* PAGER WITH AUTO-CONTROLS HYBRID LAYOUT */ + +.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-pager { + text-align: left; + width: 80%; +} + +.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-controls-auto { + right: 0; + width: 35px; +} + +/* IMAGE CAPTIONS */ + +.bx-wrapper .bx-caption { + position: absolute; + bottom: 0; + left: 0; + background: #666\9; + background: rgba(80, 80, 80, 0.75); + width: 100%; +} + +.bx-wrapper .bx-caption span { + color: #fff; + font-family: Arial; + display: block; + font-size: .85em; + padding: 10px; +} diff --git a/plugins/bx-slider/jquery.bxslider.min.js b/plugins/bx-slider/jquery.bxslider.min.js new file mode 100644 index 0000000..dc338f7 --- /dev/null +++ b/plugins/bx-slider/jquery.bxslider.min.js @@ -0,0 +1,10 @@ +/** + * BxSlider v4.1.2 - Fully loaded, responsive content slider + * http://bxslider.com + * + * Copyright 2014, Steven Wanderski - http://stevenwanderski.com - http://bxcreative.com + * Written while drinking Belgian ales and listening to jazz + * + * Released under the MIT license - http://opensource.org/licenses/MIT + */ +!function(t){var e={},s={mode:"horizontal",slideSelector:"",infiniteLoop:!0,hideControlOnEnd:!1,speed:500,easing:null,slideMargin:0,startSlide:0,randomStart:!1,captions:!1,ticker:!1,tickerHover:!1,adaptiveHeight:!1,adaptiveHeightSpeed:500,video:!1,useCSS:!0,preloadImages:"visible",responsive:!0,slideZIndex:50,touchEnabled:!0,swipeThreshold:50,oneToOneTouch:!0,preventDefaultSwipeX:!0,preventDefaultSwipeY:!1,pager:!0,pagerType:"full",pagerShortSeparator:" / ",pagerSelector:null,buildPager:null,pagerCustom:null,controls:!0,nextText:"Next",prevText:"Prev",nextSelector:null,prevSelector:null,autoControls:!1,startText:"Start",stopText:"Stop",autoControlsCombine:!1,autoControlsSelector:null,auto:!1,pause:4e3,autoStart:!0,autoDirection:"next",autoHover:!1,autoDelay:0,minSlides:1,maxSlides:1,moveSlides:0,slideWidth:0,onSliderLoad:function(){},onSlideBefore:function(){},onSlideAfter:function(){},onSlideNext:function(){},onSlidePrev:function(){},onSliderResize:function(){}};t.fn.bxSlider=function(n){if(0==this.length)return this;if(this.length>1)return this.each(function(){t(this).bxSlider(n)}),this;var o={},r=this;e.el=this;var a=t(window).width(),l=t(window).height(),d=function(){o.settings=t.extend({},s,n),o.settings.slideWidth=parseInt(o.settings.slideWidth),o.children=r.children(o.settings.slideSelector),o.children.length<o.settings.minSlides&&(o.settings.minSlides=o.children.length),o.children.length<o.settings.maxSlides&&(o.settings.maxSlides=o.children.length),o.settings.randomStart&&(o.settings.startSlide=Math.floor(Math.random()*o.children.length)),o.active={index:o.settings.startSlide},o.carousel=o.settings.minSlides>1||o.settings.maxSlides>1,o.carousel&&(o.settings.preloadImages="all"),o.minThreshold=o.settings.minSlides*o.settings.slideWidth+(o.settings.minSlides-1)*o.settings.slideMargin,o.maxThreshold=o.settings.maxSlides*o.settings.slideWidth+(o.settings.maxSlides-1)*o.settings.slideMargin,o.working=!1,o.controls={},o.interval=null,o.animProp="vertical"==o.settings.mode?"top":"left",o.usingCSS=o.settings.useCSS&&"fade"!=o.settings.mode&&function(){var t=document.createElement("div"),e=["WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var i in e)if(void 0!==t.style[e[i]])return o.cssPrefix=e[i].replace("Perspective","").toLowerCase(),o.animProp="-"+o.cssPrefix+"-transform",!0;return!1}(),"vertical"==o.settings.mode&&(o.settings.maxSlides=o.settings.minSlides),r.data("origStyle",r.attr("style")),r.children(o.settings.slideSelector).each(function(){t(this).data("origStyle",t(this).attr("style"))}),c()},c=function(){r.wrap('<div class="bx-wrapper"><div class="bx-viewport"></div></div>'),o.viewport=r.parent(),o.loader=t('<div class="bx-loading" />'),o.viewport.prepend(o.loader),r.css({width:"horizontal"==o.settings.mode?100*o.children.length+215+"%":"auto",position:"relative"}),o.usingCSS&&o.settings.easing?r.css("-"+o.cssPrefix+"-transition-timing-function",o.settings.easing):o.settings.easing||(o.settings.easing="swing"),f(),o.viewport.css({width:"100%",overflow:"hidden",position:"relative"}),o.viewport.parent().css({maxWidth:p()}),o.settings.pager||o.viewport.parent().css({margin:"0 auto 0px"}),o.children.css({"float":"horizontal"==o.settings.mode?"left":"none",listStyle:"none",position:"relative"}),o.children.css("width",u()),"horizontal"==o.settings.mode&&o.settings.slideMargin>0&&o.children.css("marginRight",o.settings.slideMargin),"vertical"==o.settings.mode&&o.settings.slideMargin>0&&o.children.css("marginBottom",o.settings.slideMargin),"fade"==o.settings.mode&&(o.children.css({position:"absolute",zIndex:0,display:"none"}),o.children.eq(o.settings.startSlide).css({zIndex:o.settings.slideZIndex,display:"block"})),o.controls.el=t('<div class="bx-controls" />'),o.settings.captions&&P(),o.active.last=o.settings.startSlide==x()-1,o.settings.video&&r.fitVids();var e=o.children.eq(o.settings.startSlide);"all"==o.settings.preloadImages&&(e=o.children),o.settings.ticker?o.settings.pager=!1:(o.settings.pager&&T(),o.settings.controls&&C(),o.settings.auto&&o.settings.autoControls&&E(),(o.settings.controls||o.settings.autoControls||o.settings.pager)&&o.viewport.after(o.controls.el)),g(e,h)},g=function(e,i){var s=e.find("img, iframe").length;if(0==s)return i(),void 0;var n=0;e.find("img, iframe").each(function(){t(this).one("load",function(){++n==s&&i()}).each(function(){this.complete&&t(this).load()})})},h=function(){if(o.settings.infiniteLoop&&"fade"!=o.settings.mode&&!o.settings.ticker){var e="vertical"==o.settings.mode?o.settings.minSlides:o.settings.maxSlides,i=o.children.slice(0,e).clone().addClass("bx-clone"),s=o.children.slice(-e).clone().addClass("bx-clone");r.append(i).prepend(s)}o.loader.remove(),S(),"vertical"==o.settings.mode&&(o.settings.adaptiveHeight=!0),o.viewport.height(v()),r.redrawSlider(),o.settings.onSliderLoad(o.active.index),o.initialized=!0,o.settings.responsive&&t(window).bind("resize",Z),o.settings.auto&&o.settings.autoStart&&H(),o.settings.ticker&&L(),o.settings.pager&&q(o.settings.startSlide),o.settings.controls&&W(),o.settings.touchEnabled&&!o.settings.ticker&&O()},v=function(){var e=0,s=t();if("vertical"==o.settings.mode||o.settings.adaptiveHeight)if(o.carousel){var n=1==o.settings.moveSlides?o.active.index:o.active.index*m();for(s=o.children.eq(n),i=1;i<=o.settings.maxSlides-1;i++)s=n+i>=o.children.length?s.add(o.children.eq(i-1)):s.add(o.children.eq(n+i))}else s=o.children.eq(o.active.index);else s=o.children;return"vertical"==o.settings.mode?(s.each(function(){e+=t(this).outerHeight()}),o.settings.slideMargin>0&&(e+=o.settings.slideMargin*(o.settings.minSlides-1))):e=Math.max.apply(Math,s.map(function(){return t(this).outerHeight(!1)}).get()),e},p=function(){var t="100%";return o.settings.slideWidth>0&&(t="horizontal"==o.settings.mode?o.settings.maxSlides*o.settings.slideWidth+(o.settings.maxSlides-1)*o.settings.slideMargin:o.settings.slideWidth),t},u=function(){var t=o.settings.slideWidth,e=o.viewport.width();return 0==o.settings.slideWidth||o.settings.slideWidth>e&&!o.carousel||"vertical"==o.settings.mode?t=e:o.settings.maxSlides>1&&"horizontal"==o.settings.mode&&(e>o.maxThreshold||e<o.minThreshold&&(t=(e-o.settings.slideMargin*(o.settings.minSlides-1))/o.settings.minSlides)),t},f=function(){var t=1;if("horizontal"==o.settings.mode&&o.settings.slideWidth>0)if(o.viewport.width()<o.minThreshold)t=o.settings.minSlides;else if(o.viewport.width()>o.maxThreshold)t=o.settings.maxSlides;else{var e=o.children.first().width();t=Math.floor(o.viewport.width()/e)}else"vertical"==o.settings.mode&&(t=o.settings.minSlides);return t},x=function(){var t=0;if(o.settings.moveSlides>0)if(o.settings.infiniteLoop)t=o.children.length/m();else for(var e=0,i=0;e<o.children.length;)++t,e=i+f(),i+=o.settings.moveSlides<=f()?o.settings.moveSlides:f();else t=Math.ceil(o.children.length/f());return t},m=function(){return o.settings.moveSlides>0&&o.settings.moveSlides<=f()?o.settings.moveSlides:f()},S=function(){if(o.children.length>o.settings.maxSlides&&o.active.last&&!o.settings.infiniteLoop){if("horizontal"==o.settings.mode){var t=o.children.last(),e=t.position();b(-(e.left-(o.viewport.width()-t.width())),"reset",0)}else if("vertical"==o.settings.mode){var i=o.children.length-o.settings.minSlides,e=o.children.eq(i).position();b(-e.top,"reset",0)}}else{var e=o.children.eq(o.active.index*m()).position();o.active.index==x()-1&&(o.active.last=!0),void 0!=e&&("horizontal"==o.settings.mode?b(-e.left,"reset",0):"vertical"==o.settings.mode&&b(-e.top,"reset",0))}},b=function(t,e,i,s){if(o.usingCSS){var n="vertical"==o.settings.mode?"translate3d(0, "+t+"px, 0)":"translate3d("+t+"px, 0, 0)";r.css("-"+o.cssPrefix+"-transition-duration",i/1e3+"s"),"slide"==e?(r.css(o.animProp,n),r.bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){r.unbind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd"),D()})):"reset"==e?r.css(o.animProp,n):"ticker"==e&&(r.css("-"+o.cssPrefix+"-transition-timing-function","linear"),r.css(o.animProp,n),r.bind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){r.unbind("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd"),b(s.resetValue,"reset",0),N()}))}else{var a={};a[o.animProp]=t,"slide"==e?r.animate(a,i,o.settings.easing,function(){D()}):"reset"==e?r.css(o.animProp,t):"ticker"==e&&r.animate(a,speed,"linear",function(){b(s.resetValue,"reset",0),N()})}},w=function(){for(var e="",i=x(),s=0;i>s;s++){var n="";o.settings.buildPager&&t.isFunction(o.settings.buildPager)?(n=o.settings.buildPager(s),o.pagerEl.addClass("bx-custom-pager")):(n=s+1,o.pagerEl.addClass("bx-default-pager")),e+='<div class="bx-pager-item"><a href="" data-slide-index="'+s+'" class="bx-pager-link">'+n+"</a></div>"}o.pagerEl.html(e)},T=function(){o.settings.pagerCustom?o.pagerEl=t(o.settings.pagerCustom):(o.pagerEl=t('<div class="bx-pager" />'),o.settings.pagerSelector?t(o.settings.pagerSelector).html(o.pagerEl):o.controls.el.addClass("bx-has-pager").append(o.pagerEl),w()),o.pagerEl.on("click","a",I)},C=function(){o.controls.next=t('<a class="bx-next" href="">'+o.settings.nextText+"</a>"),o.controls.prev=t('<a class="bx-prev" href="">'+o.settings.prevText+"</a>"),o.controls.next.bind("click",y),o.controls.prev.bind("click",z),o.settings.nextSelector&&t(o.settings.nextSelector).append(o.controls.next),o.settings.prevSelector&&t(o.settings.prevSelector).append(o.controls.prev),o.settings.nextSelector||o.settings.prevSelector||(o.controls.directionEl=t('<div class="bx-controls-direction" />'),o.controls.directionEl.append(o.controls.prev).append(o.controls.next),o.controls.el.addClass("bx-has-controls-direction").append(o.controls.directionEl))},E=function(){o.controls.start=t('<div class="bx-controls-auto-item"><a class="bx-start" href="">'+o.settings.startText+"</a></div>"),o.controls.stop=t('<div class="bx-controls-auto-item"><a class="bx-stop" href="">'+o.settings.stopText+"</a></div>"),o.controls.autoEl=t('<div class="bx-controls-auto" />'),o.controls.autoEl.on("click",".bx-start",k),o.controls.autoEl.on("click",".bx-stop",M),o.settings.autoControlsCombine?o.controls.autoEl.append(o.controls.start):o.controls.autoEl.append(o.controls.start).append(o.controls.stop),o.settings.autoControlsSelector?t(o.settings.autoControlsSelector).html(o.controls.autoEl):o.controls.el.addClass("bx-has-controls-auto").append(o.controls.autoEl),A(o.settings.autoStart?"stop":"start")},P=function(){o.children.each(function(){var e=t(this).find("img:first").attr("title");void 0!=e&&(""+e).length&&t(this).append('<div class="bx-caption"><span>'+e+"</span></div>")})},y=function(t){o.settings.auto&&r.stopAuto(),r.goToNextSlide(),t.preventDefault()},z=function(t){o.settings.auto&&r.stopAuto(),r.goToPrevSlide(),t.preventDefault()},k=function(t){r.startAuto(),t.preventDefault()},M=function(t){r.stopAuto(),t.preventDefault()},I=function(e){o.settings.auto&&r.stopAuto();var i=t(e.currentTarget),s=parseInt(i.attr("data-slide-index"));s!=o.active.index&&r.goToSlide(s),e.preventDefault()},q=function(e){var i=o.children.length;return"short"==o.settings.pagerType?(o.settings.maxSlides>1&&(i=Math.ceil(o.children.length/o.settings.maxSlides)),o.pagerEl.html(e+1+o.settings.pagerShortSeparator+i),void 0):(o.pagerEl.find("a").removeClass("active"),o.pagerEl.each(function(i,s){t(s).find("a").eq(e).addClass("active")}),void 0)},D=function(){if(o.settings.infiniteLoop){var t="";0==o.active.index?t=o.children.eq(0).position():o.active.index==x()-1&&o.carousel?t=o.children.eq((x()-1)*m()).position():o.active.index==o.children.length-1&&(t=o.children.eq(o.children.length-1).position()),t&&("horizontal"==o.settings.mode?b(-t.left,"reset",0):"vertical"==o.settings.mode&&b(-t.top,"reset",0))}o.working=!1,o.settings.onSlideAfter(o.children.eq(o.active.index),o.oldIndex,o.active.index)},A=function(t){o.settings.autoControlsCombine?o.controls.autoEl.html(o.controls[t]):(o.controls.autoEl.find("a").removeClass("active"),o.controls.autoEl.find("a:not(.bx-"+t+")").addClass("active"))},W=function(){1==x()?(o.controls.prev.addClass("disabled"),o.controls.next.addClass("disabled")):!o.settings.infiniteLoop&&o.settings.hideControlOnEnd&&(0==o.active.index?(o.controls.prev.addClass("disabled"),o.controls.next.removeClass("disabled")):o.active.index==x()-1?(o.controls.next.addClass("disabled"),o.controls.prev.removeClass("disabled")):(o.controls.prev.removeClass("disabled"),o.controls.next.removeClass("disabled")))},H=function(){o.settings.autoDelay>0?setTimeout(r.startAuto,o.settings.autoDelay):r.startAuto(),o.settings.autoHover&&r.hover(function(){o.interval&&(r.stopAuto(!0),o.autoPaused=!0)},function(){o.autoPaused&&(r.startAuto(!0),o.autoPaused=null)})},L=function(){var e=0;if("next"==o.settings.autoDirection)r.append(o.children.clone().addClass("bx-clone"));else{r.prepend(o.children.clone().addClass("bx-clone"));var i=o.children.first().position();e="horizontal"==o.settings.mode?-i.left:-i.top}b(e,"reset",0),o.settings.pager=!1,o.settings.controls=!1,o.settings.autoControls=!1,o.settings.tickerHover&&!o.usingCSS&&o.viewport.hover(function(){r.stop()},function(){var e=0;o.children.each(function(){e+="horizontal"==o.settings.mode?t(this).outerWidth(!0):t(this).outerHeight(!0)});var i=o.settings.speed/e,s="horizontal"==o.settings.mode?"left":"top",n=i*(e-Math.abs(parseInt(r.css(s))));N(n)}),N()},N=function(t){speed=t?t:o.settings.speed;var e={left:0,top:0},i={left:0,top:0};"next"==o.settings.autoDirection?e=r.find(".bx-clone").first().position():i=o.children.first().position();var s="horizontal"==o.settings.mode?-e.left:-e.top,n="horizontal"==o.settings.mode?-i.left:-i.top,a={resetValue:n};b(s,"ticker",speed,a)},O=function(){o.touch={start:{x:0,y:0},end:{x:0,y:0}},o.viewport.bind("touchstart",X)},X=function(t){if(o.working)t.preventDefault();else{o.touch.originalPos=r.position();var e=t.originalEvent;o.touch.start.x=e.changedTouches[0].pageX,o.touch.start.y=e.changedTouches[0].pageY,o.viewport.bind("touchmove",Y),o.viewport.bind("touchend",V)}},Y=function(t){var e=t.originalEvent,i=Math.abs(e.changedTouches[0].pageX-o.touch.start.x),s=Math.abs(e.changedTouches[0].pageY-o.touch.start.y);if(3*i>s&&o.settings.preventDefaultSwipeX?t.preventDefault():3*s>i&&o.settings.preventDefaultSwipeY&&t.preventDefault(),"fade"!=o.settings.mode&&o.settings.oneToOneTouch){var n=0;if("horizontal"==o.settings.mode){var r=e.changedTouches[0].pageX-o.touch.start.x;n=o.touch.originalPos.left+r}else{var r=e.changedTouches[0].pageY-o.touch.start.y;n=o.touch.originalPos.top+r}b(n,"reset",0)}},V=function(t){o.viewport.unbind("touchmove",Y);var e=t.originalEvent,i=0;if(o.touch.end.x=e.changedTouches[0].pageX,o.touch.end.y=e.changedTouches[0].pageY,"fade"==o.settings.mode){var s=Math.abs(o.touch.start.x-o.touch.end.x);s>=o.settings.swipeThreshold&&(o.touch.start.x>o.touch.end.x?r.goToNextSlide():r.goToPrevSlide(),r.stopAuto())}else{var s=0;"horizontal"==o.settings.mode?(s=o.touch.end.x-o.touch.start.x,i=o.touch.originalPos.left):(s=o.touch.end.y-o.touch.start.y,i=o.touch.originalPos.top),!o.settings.infiniteLoop&&(0==o.active.index&&s>0||o.active.last&&0>s)?b(i,"reset",200):Math.abs(s)>=o.settings.swipeThreshold?(0>s?r.goToNextSlide():r.goToPrevSlide(),r.stopAuto()):b(i,"reset",200)}o.viewport.unbind("touchend",V)},Z=function(){var e=t(window).width(),i=t(window).height();(a!=e||l!=i)&&(a=e,l=i,r.redrawSlider(),o.settings.onSliderResize.call(r,o.active.index))};return r.goToSlide=function(e,i){if(!o.working&&o.active.index!=e)if(o.working=!0,o.oldIndex=o.active.index,o.active.index=0>e?x()-1:e>=x()?0:e,o.settings.onSlideBefore(o.children.eq(o.active.index),o.oldIndex,o.active.index),"next"==i?o.settings.onSlideNext(o.children.eq(o.active.index),o.oldIndex,o.active.index):"prev"==i&&o.settings.onSlidePrev(o.children.eq(o.active.index),o.oldIndex,o.active.index),o.active.last=o.active.index>=x()-1,o.settings.pager&&q(o.active.index),o.settings.controls&&W(),"fade"==o.settings.mode)o.settings.adaptiveHeight&&o.viewport.height()!=v()&&o.viewport.animate({height:v()},o.settings.adaptiveHeightSpeed),o.children.filter(":visible").fadeOut(o.settings.speed).css({zIndex:0}),o.children.eq(o.active.index).css("zIndex",o.settings.slideZIndex+1).fadeIn(o.settings.speed,function(){t(this).css("zIndex",o.settings.slideZIndex),D()});else{o.settings.adaptiveHeight&&o.viewport.height()!=v()&&o.viewport.animate({height:v()},o.settings.adaptiveHeightSpeed);var s=0,n={left:0,top:0};if(!o.settings.infiniteLoop&&o.carousel&&o.active.last)if("horizontal"==o.settings.mode){var a=o.children.eq(o.children.length-1);n=a.position(),s=o.viewport.width()-a.outerWidth()}else{var l=o.children.length-o.settings.minSlides;n=o.children.eq(l).position()}else if(o.carousel&&o.active.last&&"prev"==i){var d=1==o.settings.moveSlides?o.settings.maxSlides-m():(x()-1)*m()-(o.children.length-o.settings.maxSlides),a=r.children(".bx-clone").eq(d);n=a.position()}else if("next"==i&&0==o.active.index)n=r.find("> .bx-clone").eq(o.settings.maxSlides).position(),o.active.last=!1;else if(e>=0){var c=e*m();n=o.children.eq(c).position()}if("undefined"!=typeof n){var g="horizontal"==o.settings.mode?-(n.left-s):-n.top;b(g,"slide",o.settings.speed)}}},r.goToNextSlide=function(){if(o.settings.infiniteLoop||!o.active.last){var t=parseInt(o.active.index)+1;r.goToSlide(t,"next")}},r.goToPrevSlide=function(){if(o.settings.infiniteLoop||0!=o.active.index){var t=parseInt(o.active.index)-1;r.goToSlide(t,"prev")}},r.startAuto=function(t){o.interval||(o.interval=setInterval(function(){"next"==o.settings.autoDirection?r.goToNextSlide():r.goToPrevSlide()},o.settings.pause),o.settings.autoControls&&1!=t&&A("stop"))},r.stopAuto=function(t){o.interval&&(clearInterval(o.interval),o.interval=null,o.settings.autoControls&&1!=t&&A("start"))},r.getCurrentSlide=function(){return o.active.index},r.getCurrentSlideElement=function(){return o.children.eq(o.active.index)},r.getSlideCount=function(){return o.children.length},r.redrawSlider=function(){o.children.add(r.find(".bx-clone")).outerWidth(u()),o.viewport.css("height",v()),o.settings.ticker||S(),o.active.last&&(o.active.index=x()-1),o.active.index>=x()&&(o.active.last=!0),o.settings.pager&&!o.settings.pagerCustom&&(w(),q(o.active.index))},r.destroySlider=function(){o.initialized&&(o.initialized=!1,t(".bx-clone",this).remove(),o.children.each(function(){void 0!=t(this).data("origStyle")?t(this).attr("style",t(this).data("origStyle")):t(this).removeAttr("style")}),void 0!=t(this).data("origStyle")?this.attr("style",t(this).data("origStyle")):t(this).removeAttr("style"),t(this).unwrap().unwrap(),o.controls.el&&o.controls.el.remove(),o.controls.next&&o.controls.next.remove(),o.controls.prev&&o.controls.prev.remove(),o.pagerEl&&o.settings.controls&&o.pagerEl.remove(),t(".bx-caption",this).remove(),o.controls.autoEl&&o.controls.autoEl.remove(),clearInterval(o.interval),o.settings.responsive&&t(window).unbind("resize",Z))},r.reloadSlider=function(t){void 0!=t&&(n=t),r.destroySlider(),d()},d(),this}}(jQuery); \ No newline at end of file diff --git a/plugins/c3/c3.css b/plugins/c3/c3.css new file mode 100644 index 0000000..ab0b70a --- /dev/null +++ b/plugins/c3/c3.css @@ -0,0 +1,158 @@ +/*-- Chart --*/ +.c3 svg { + font: 10px sans-serif; } + +.c3 path, .c3 line { + fill: none; + stroke: #000; } + +.c3 text { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; } + +.c3-legend-item-tile, .c3-xgrid-focus, .c3-ygrid, .c3-event-rect, .c3-bars path { + shape-rendering: crispEdges; } + +.c3-chart-arc path { + stroke: #fff; } + +.c3-chart-arc text { + fill: #fff; + font-size: 13px; } + +/*-- Axis --*/ +/*-- Grid --*/ +.c3-grid line { + stroke: #aaa; } + +.c3-grid text { + fill: #aaa; } + +.c3-xgrid, .c3-ygrid { + stroke-dasharray: 3 3; } + +/*-- Text on Chart --*/ +.c3-text.c3-empty { + fill: #808080; + font-size: 2em; } + +/*-- Line --*/ +.c3-line { + stroke-width: 1px; } + +/*-- Point --*/ +.c3-circle._expanded_ { + stroke-width: 1px; + stroke: white; } + +.c3-selected-circle { + fill: white; + stroke-width: 2px; } + +/*-- Bar --*/ +.c3-bar { + stroke-width: 0; } + +.c3-bar._expanded_ { + fill-opacity: 0.75; } + +/*-- Focus --*/ +.c3-target.c3-focused { + opacity: 1; } + +.c3-target.c3-focused path.c3-line, .c3-target.c3-focused path.c3-step { + stroke-width: 2px; } + +.c3-target.c3-defocused { + opacity: 0.3 !important; } + +/*-- Region --*/ +.c3-region { + fill: steelblue; + fill-opacity: 0.1; } + +/*-- Brush --*/ +.c3-brush .extent { + fill-opacity: 0.1; } + +/*-- Select - Drag --*/ +/*-- Legend --*/ +.c3-legend-item { + font-size: 12px; } + +.c3-legend-item-hidden { + opacity: 0.15; } + +.c3-legend-background { + opacity: 0.75; + fill: white; + stroke: lightgray; + stroke-width: 1; } + +/*-- Tooltip --*/ +.c3-tooltip-container { + z-index: 10; } + +.c3-tooltip { + border-collapse: collapse; + border-spacing: 0; + background-color: #fff; + empty-cells: show; + -webkit-box-shadow: 7px 7px 12px -9px #777777; + -moz-box-shadow: 7px 7px 12px -9px #777777; + box-shadow: 7px 7px 12px -9px #777777; + opacity: 0.9; } + +.c3-tooltip tr { + border: 1px solid #CCC; } + +.c3-tooltip th { + background-color: #aaa; + font-size: 14px; + padding: 2px 5px; + text-align: left; + color: #FFF; } + +.c3-tooltip td { + font-size: 13px; + padding: 3px 6px; + background-color: #fff; + border-left: 1px dotted #999; } + +.c3-tooltip td > span { + display: inline-block; + width: 10px; + height: 10px; + margin-right: 6px; } + +.c3-tooltip td.value { + text-align: right; } + +/*-- Area --*/ +.c3-area { + stroke-width: 0; + opacity: 0.2; } + +/*-- Arc --*/ +.c3-chart-arcs-title { + dominant-baseline: middle; + font-size: 1.3em; } + +.c3-chart-arcs .c3-chart-arcs-background { + fill: #e0e0e0; + stroke: none; } + +.c3-chart-arcs .c3-chart-arcs-gauge-unit { + fill: #000; + font-size: 16px; } + +.c3-chart-arcs .c3-chart-arcs-gauge-max { + fill: #777; } + +.c3-chart-arcs .c3-chart-arcs-gauge-min { + fill: #777; } + +.c3-chart-arc .c3-gauge-value { + fill: #000; + /* font-size: 28px !important;*/ } diff --git a/plugins/c3/c3.js b/plugins/c3/c3.js new file mode 100644 index 0000000..233d1b5 --- /dev/null +++ b/plugins/c3/c3.js @@ -0,0 +1,7049 @@ +(function (window) { + 'use strict'; + + /*global define, module, exports, require */ + + var c3 = { version: "0.4.10" }; + + var c3_chart_fn, + c3_chart_internal_fn, + c3_chart_internal_axis_fn; + + function API(owner) { + this.owner = owner; + } + + function inherit(base, derived) { + + if (Object.create) { + derived.prototype = Object.create(base.prototype); + } else { + var f = function f() {}; + f.prototype = base.prototype; + derived.prototype = new f(); + } + + derived.prototype.constructor = derived; + + return derived; + } + + function Chart(config) { + var $$ = this.internal = new ChartInternal(this); + $$.loadConfig(config); + $$.init(); + + // bind "this" to nested API + (function bindThis(fn, target, argThis) { + Object.keys(fn).forEach(function (key) { + target[key] = fn[key].bind(argThis); + if (Object.keys(fn[key]).length > 0) { + bindThis(fn[key], target[key], argThis); + } + }); + })(c3_chart_fn, this, this); + } + + function ChartInternal(api) { + var $$ = this; + $$.d3 = window.d3 ? window.d3 : typeof require !== 'undefined' ? require("d3") : undefined; + $$.api = api; + $$.config = $$.getDefaultConfig(); + $$.data = {}; + $$.cache = {}; + $$.axes = {}; + } + + c3.generate = function (config) { + return new Chart(config); + }; + + c3.chart = { + fn: Chart.prototype, + internal: { + fn: ChartInternal.prototype, + axis: { + fn: Axis.prototype + } + } + }; + c3_chart_fn = c3.chart.fn; + c3_chart_internal_fn = c3.chart.internal.fn; + c3_chart_internal_axis_fn = c3.chart.internal.axis.fn; + + c3_chart_internal_fn.init = function () { + var $$ = this, config = $$.config; + + $$.initParams(); + + if (config.data_url) { + $$.convertUrlToData(config.data_url, config.data_mimeType, config.data_keys, $$.initWithData); + } + else if (config.data_json) { + $$.initWithData($$.convertJsonToData(config.data_json, config.data_keys)); + } + else if (config.data_rows) { + $$.initWithData($$.convertRowsToData(config.data_rows)); + } + else if (config.data_columns) { + $$.initWithData($$.convertColumnsToData(config.data_columns)); + } + else { + throw Error('url or json or rows or columns is required.'); + } + }; + + c3_chart_internal_fn.initParams = function () { + var $$ = this, d3 = $$.d3, config = $$.config; + + // MEMO: clipId needs to be unique because it conflicts when multiple charts exist + $$.clipId = "c3-" + (+new Date()) + '-clip', + $$.clipIdForXAxis = $$.clipId + '-xaxis', + $$.clipIdForYAxis = $$.clipId + '-yaxis', + $$.clipIdForGrid = $$.clipId + '-grid', + $$.clipIdForSubchart = $$.clipId + '-subchart', + $$.clipPath = $$.getClipPath($$.clipId), + $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), + $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis); + $$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid), + $$.clipPathForSubchart = $$.getClipPath($$.clipIdForSubchart), + + $$.dragStart = null; + $$.dragging = false; + $$.flowing = false; + $$.cancelClick = false; + $$.mouseover = false; + $$.transiting = false; + + $$.color = $$.generateColor(); + $$.levelColor = $$.generateLevelColor(); + + $$.dataTimeFormat = config.data_xLocaltime ? d3.time.format : d3.time.format.utc; + $$.axisTimeFormat = config.axis_x_localtime ? d3.time.format : d3.time.format.utc; + $$.defaultAxisTimeFormat = $$.axisTimeFormat.multi([ + [".%L", function (d) { return d.getMilliseconds(); }], + [":%S", function (d) { return d.getSeconds(); }], + ["%I:%M", function (d) { return d.getMinutes(); }], + ["%I %p", function (d) { return d.getHours(); }], + ["%-m/%-d", function (d) { return d.getDay() && d.getDate() !== 1; }], + ["%-m/%-d", function (d) { return d.getDate() !== 1; }], + ["%-m/%-d", function (d) { return d.getMonth(); }], + ["%Y/%-m/%-d", function () { return true; }] + ]); + + $$.hiddenTargetIds = []; + $$.hiddenLegendIds = []; + $$.focusedTargetIds = []; + $$.defocusedTargetIds = []; + + $$.xOrient = config.axis_rotated ? "left" : "bottom"; + $$.yOrient = config.axis_rotated ? (config.axis_y_inner ? "top" : "bottom") : (config.axis_y_inner ? "right" : "left"); + $$.y2Orient = config.axis_rotated ? (config.axis_y2_inner ? "bottom" : "top") : (config.axis_y2_inner ? "left" : "right"); + $$.subXOrient = config.axis_rotated ? "left" : "bottom"; + + $$.isLegendRight = config.legend_position === 'right'; + $$.isLegendInset = config.legend_position === 'inset'; + $$.isLegendTop = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'top-right'; + $$.isLegendLeft = config.legend_inset_anchor === 'top-left' || config.legend_inset_anchor === 'bottom-left'; + $$.legendStep = 0; + $$.legendItemWidth = 0; + $$.legendItemHeight = 0; + + $$.currentMaxTickWidths = { + x: 0, + y: 0, + y2: 0 + }; + + $$.rotated_padding_left = 30; + $$.rotated_padding_right = config.axis_rotated && !config.axis_x_show ? 0 : 30; + $$.rotated_padding_top = 5; + + $$.withoutFadeIn = {}; + + $$.intervalForObserveInserted = undefined; + + $$.axes.subx = d3.selectAll([]); // needs when excluding subchart.js + }; + + c3_chart_internal_fn.initChartElements = function () { + if (this.initBar) { this.initBar(); } + if (this.initLine) { this.initLine(); } + if (this.initArc) { this.initArc(); } + if (this.initGauge) { this.initGauge(); } + if (this.initText) { this.initText(); } + }; + + c3_chart_internal_fn.initWithData = function (data) { + var $$ = this, d3 = $$.d3, config = $$.config; + var defs, main, binding = true; + + $$.axis = new Axis($$); + + if ($$.initPie) { $$.initPie(); } + if ($$.initBrush) { $$.initBrush(); } + if ($$.initZoom) { $$.initZoom(); } + + if (!config.bindto) { + $$.selectChart = d3.selectAll([]); + } + else if (typeof config.bindto.node === 'function') { + $$.selectChart = config.bindto; + } + else { + $$.selectChart = d3.select(config.bindto); + } + if ($$.selectChart.empty()) { + $$.selectChart = d3.select(document.createElement('div')).style('opacity', 0); + $$.observeInserted($$.selectChart); + binding = false; + } + $$.selectChart.html("").classed("c3", true); + + // Init data as targets + $$.data.xs = {}; + $$.data.targets = $$.convertDataToTargets(data); + + if (config.data_filter) { + $$.data.targets = $$.data.targets.filter(config.data_filter); + } + + // Set targets to hide if needed + if (config.data_hide) { + $$.addHiddenTargetIds(config.data_hide === true ? $$.mapToIds($$.data.targets) : config.data_hide); + } + if (config.legend_hide) { + $$.addHiddenLegendIds(config.legend_hide === true ? $$.mapToIds($$.data.targets) : config.legend_hide); + } + + // when gauge, hide legend // TODO: fix + if ($$.hasType('gauge')) { + config.legend_show = false; + } + + // Init sizes and scales + $$.updateSizes(); + $$.updateScales(); + + // Set domains for each scale + $$.x.domain(d3.extent($$.getXDomain($$.data.targets))); + $$.y.domain($$.getYDomain($$.data.targets, 'y')); + $$.y2.domain($$.getYDomain($$.data.targets, 'y2')); + $$.subX.domain($$.x.domain()); + $$.subY.domain($$.y.domain()); + $$.subY2.domain($$.y2.domain()); + + // Save original x domain for zoom update + $$.orgXDomain = $$.x.domain(); + + // Set initialized scales to brush and zoom + if ($$.brush) { $$.brush.scale($$.subX); } + if (config.zoom_enabled) { $$.zoom.scale($$.x); } + + /*-- Basic Elements --*/ + + // Define svgs + $$.svg = $$.selectChart.append("svg") + .style("overflow", "hidden") + .on('mouseenter', function () { return config.onmouseover.call($$); }) + .on('mouseleave', function () { return config.onmouseout.call($$); }); + + // Define defs + defs = $$.svg.append("defs"); + $$.clipChart = $$.appendClip(defs, $$.clipId); + $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis); + $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis); + $$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid); + $$.clipSubchart = $$.appendClip(defs, $$.clipIdForSubchart); + $$.updateSvgSize(); + + // Define regions + main = $$.main = $$.svg.append("g").attr("transform", $$.getTranslate('main')); + + if ($$.initSubchart) { $$.initSubchart(); } + if ($$.initTooltip) { $$.initTooltip(); } + if ($$.initLegend) { $$.initLegend(); } + + /*-- Main Region --*/ + + // text when empty + main.append("text") + .attr("class", CLASS.text + ' ' + CLASS.empty) + .attr("text-anchor", "middle") // horizontal centering of text at x position in all browsers. + .attr("dominant-baseline", "middle"); // vertical centering of text at y position in all browsers, except IE. + + // Regions + $$.initRegion(); + + // Grids + $$.initGrid(); + + // Define g for chart area + main.append('g') + .attr("clip-path", $$.clipPath) + .attr('class', CLASS.chart); + + // Grid lines + if (config.grid_lines_front) { $$.initGridLines(); } + + // Cover whole with rects for events + $$.initEventRect(); + + // Define g for chart + $$.initChartElements(); + + // if zoom privileged, insert rect to forefront + // TODO: is this needed? + main.insert('rect', config.zoom_privileged ? null : 'g.' + CLASS.regions) + .attr('class', CLASS.zoomRect) + .attr('width', $$.width) + .attr('height', $$.height) + .style('opacity', 0) + .on("dblclick.zoom", null); + + // Set default extent if defined + if (config.axis_x_extent) { $$.brush.extent($$.getDefaultExtent()); } + + // Add Axis + $$.axis.init(); + + // Set targets + $$.updateTargets($$.data.targets); + + // Draw with targets + if (binding) { + $$.updateDimension(); + $$.config.oninit.call($$); + $$.redraw({ + withTransition: false, + withTransform: true, + withUpdateXDomain: true, + withUpdateOrgXDomain: true, + withTransitionForAxis: false + }); + } + + // Bind resize event + if (window.onresize == null) { + window.onresize = $$.generateResize(); + } + if (window.onresize.add) { + window.onresize.add(function () { + config.onresize.call($$); + }); + window.onresize.add(function () { + $$.api.flush(); + }); + window.onresize.add(function () { + config.onresized.call($$); + }); + } + + // export element of the chart + $$.api.element = $$.selectChart.node(); + }; + + c3_chart_internal_fn.smoothLines = function (el, type) { + var $$ = this; + if (type === 'grid') { + el.each(function () { + var g = $$.d3.select(this), + x1 = g.attr('x1'), + x2 = g.attr('x2'), + y1 = g.attr('y1'), + y2 = g.attr('y2'); + g.attr({ + 'x1': Math.ceil(x1), + 'x2': Math.ceil(x2), + 'y1': Math.ceil(y1), + 'y2': Math.ceil(y2) + }); + }); + } + }; + + + c3_chart_internal_fn.updateSizes = function () { + var $$ = this, config = $$.config; + var legendHeight = $$.legend ? $$.getLegendHeight() : 0, + legendWidth = $$.legend ? $$.getLegendWidth() : 0, + legendHeightForBottom = $$.isLegendRight || $$.isLegendInset ? 0 : legendHeight, + hasArc = $$.hasArcType(), + xAxisHeight = config.axis_rotated || hasArc ? 0 : $$.getHorizontalAxisHeight('x'), + subchartHeight = config.subchart_show && !hasArc ? (config.subchart_size_height + xAxisHeight) : 0; + + $$.currentWidth = $$.getCurrentWidth(); + $$.currentHeight = $$.getCurrentHeight(); + + // for main + $$.margin = config.axis_rotated ? { + top: $$.getHorizontalAxisHeight('y2') + $$.getCurrentPaddingTop(), + right: hasArc ? 0 : $$.getCurrentPaddingRight(), + bottom: $$.getHorizontalAxisHeight('y') + legendHeightForBottom + $$.getCurrentPaddingBottom(), + left: subchartHeight + (hasArc ? 0 : $$.getCurrentPaddingLeft()) + } : { + top: 4 + $$.getCurrentPaddingTop(), // for top tick text + right: hasArc ? 0 : $$.getCurrentPaddingRight(), + bottom: xAxisHeight + subchartHeight + legendHeightForBottom + $$.getCurrentPaddingBottom(), + left: hasArc ? 0 : $$.getCurrentPaddingLeft() + }; + + // for subchart + $$.margin2 = config.axis_rotated ? { + top: $$.margin.top, + right: NaN, + bottom: 20 + legendHeightForBottom, + left: $$.rotated_padding_left + } : { + top: $$.currentHeight - subchartHeight - legendHeightForBottom, + right: NaN, + bottom: xAxisHeight + legendHeightForBottom, + left: $$.margin.left + }; + + // for legend + $$.margin3 = { + top: 0, + right: NaN, + bottom: 0, + left: 0 + }; + if ($$.updateSizeForLegend) { $$.updateSizeForLegend(legendHeight, legendWidth); } + + $$.width = $$.currentWidth - $$.margin.left - $$.margin.right; + $$.height = $$.currentHeight - $$.margin.top - $$.margin.bottom; + if ($$.width < 0) { $$.width = 0; } + if ($$.height < 0) { $$.height = 0; } + + $$.width2 = config.axis_rotated ? $$.margin.left - $$.rotated_padding_left - $$.rotated_padding_right : $$.width; + $$.height2 = config.axis_rotated ? $$.height : $$.currentHeight - $$.margin2.top - $$.margin2.bottom; + if ($$.width2 < 0) { $$.width2 = 0; } + if ($$.height2 < 0) { $$.height2 = 0; } + + // for arc + $$.arcWidth = $$.width - ($$.isLegendRight ? legendWidth + 10 : 0); + $$.arcHeight = $$.height - ($$.isLegendRight ? 0 : 10); + if ($$.hasType('gauge')) { + $$.arcHeight += $$.height - $$.getGaugeLabelHeight(); + } + if ($$.updateRadius) { $$.updateRadius(); } + + if ($$.isLegendRight && hasArc) { + $$.margin3.left = $$.arcWidth / 2 + $$.radiusExpanded * 1.1; + } + }; + + c3_chart_internal_fn.updateTargets = function (targets) { + var $$ = this; + + /*-- Main --*/ + + //-- Text --// + $$.updateTargetsForText(targets); + + //-- Bar --// + $$.updateTargetsForBar(targets); + + //-- Line --// + $$.updateTargetsForLine(targets); + + //-- Arc --// + if ($$.hasArcType() && $$.updateTargetsForArc) { $$.updateTargetsForArc(targets); } + + /*-- Sub --*/ + + if ($$.updateTargetsForSubchart) { $$.updateTargetsForSubchart(targets); } + + // Fade-in each chart + $$.showTargets(); + }; + c3_chart_internal_fn.showTargets = function () { + var $$ = this; + $$.svg.selectAll('.' + CLASS.target).filter(function (d) { return $$.isTargetToShow(d.id); }) + .transition().duration($$.config.transition_duration) + .style("opacity", 1); + }; + + c3_chart_internal_fn.redraw = function (options, transitions) { + var $$ = this, main = $$.main, d3 = $$.d3, config = $$.config; + var areaIndices = $$.getShapeIndices($$.isAreaType), barIndices = $$.getShapeIndices($$.isBarType), lineIndices = $$.getShapeIndices($$.isLineType); + var withY, withSubchart, withTransition, withTransitionForExit, withTransitionForAxis, + withTransform, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain, withLegend, + withEventRect, withDimension, withUpdateXAxis; + var hideAxis = $$.hasArcType(); + var drawArea, drawBar, drawLine, xForText, yForText; + var duration, durationForExit, durationForAxis; + var waitForDraw, flow; + var targetsToShow = $$.filterTargetsToShow($$.data.targets), tickValues, i, intervalForCulling, xDomainForZoom; + var xv = $$.xv.bind($$), cx, cy; + + options = options || {}; + withY = getOption(options, "withY", true); + withSubchart = getOption(options, "withSubchart", true); + withTransition = getOption(options, "withTransition", true); + withTransform = getOption(options, "withTransform", false); + withUpdateXDomain = getOption(options, "withUpdateXDomain", false); + withUpdateOrgXDomain = getOption(options, "withUpdateOrgXDomain", false); + withTrimXDomain = getOption(options, "withTrimXDomain", true); + withUpdateXAxis = getOption(options, "withUpdateXAxis", withUpdateXDomain); + withLegend = getOption(options, "withLegend", false); + withEventRect = getOption(options, "withEventRect", true); + withDimension = getOption(options, "withDimension", true); + withTransitionForExit = getOption(options, "withTransitionForExit", withTransition); + withTransitionForAxis = getOption(options, "withTransitionForAxis", withTransition); + + duration = withTransition ? config.transition_duration : 0; + durationForExit = withTransitionForExit ? duration : 0; + durationForAxis = withTransitionForAxis ? duration : 0; + + transitions = transitions || $$.axis.generateTransitions(durationForAxis); + + // update legend and transform each g + if (withLegend && config.legend_show) { + $$.updateLegend($$.mapToIds($$.data.targets), options, transitions); + } else if (withDimension) { + // need to update dimension (e.g. axis.y.tick.values) because y tick values should change + // no need to update axis in it because they will be updated in redraw() + $$.updateDimension(true); + } + + // MEMO: needed for grids calculation + if ($$.isCategorized() && targetsToShow.length === 0) { + $$.x.domain([0, $$.axes.x.selectAll('.tick').size()]); + } + + if (targetsToShow.length) { + $$.updateXDomain(targetsToShow, withUpdateXDomain, withUpdateOrgXDomain, withTrimXDomain); + if (!config.axis_x_tick_values) { + tickValues = $$.axis.updateXAxisTickValues(targetsToShow); + } + } else { + $$.xAxis.tickValues([]); + $$.subXAxis.tickValues([]); + } + + if (config.zoom_rescale && !options.flow) { + xDomainForZoom = $$.x.orgDomain(); + } + + $$.y.domain($$.getYDomain(targetsToShow, 'y', xDomainForZoom)); + $$.y2.domain($$.getYDomain(targetsToShow, 'y2', xDomainForZoom)); + + if (!config.axis_y_tick_values && config.axis_y_tick_count) { + $$.yAxis.tickValues($$.axis.generateTickValues($$.y.domain(), config.axis_y_tick_count)); + } + if (!config.axis_y2_tick_values && config.axis_y2_tick_count) { + $$.y2Axis.tickValues($$.axis.generateTickValues($$.y2.domain(), config.axis_y2_tick_count)); + } + + // axes + $$.axis.redraw(transitions, hideAxis); + + // Update axis label + $$.axis.updateLabels(withTransition); + + // show/hide if manual culling needed + if ((withUpdateXDomain || withUpdateXAxis) && targetsToShow.length) { + if (config.axis_x_tick_culling && tickValues) { + for (i = 1; i < tickValues.length; i++) { + if (tickValues.length / i < config.axis_x_tick_culling_max) { + intervalForCulling = i; + break; + } + } + $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').each(function (e) { + var index = tickValues.indexOf(e); + if (index >= 0) { + d3.select(this).style('display', index % intervalForCulling ? 'none' : 'block'); + } + }); + } else { + $$.svg.selectAll('.' + CLASS.axisX + ' .tick text').style('display', 'block'); + } + } + + // setup drawer - MEMO: these must be called after axis updated + drawArea = $$.generateDrawArea ? $$.generateDrawArea(areaIndices, false) : undefined; + drawBar = $$.generateDrawBar ? $$.generateDrawBar(barIndices) : undefined; + drawLine = $$.generateDrawLine ? $$.generateDrawLine(lineIndices, false) : undefined; + xForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, true); + yForText = $$.generateXYForText(areaIndices, barIndices, lineIndices, false); + + // Update sub domain + if (withY) { + $$.subY.domain($$.getYDomain(targetsToShow, 'y')); + $$.subY2.domain($$.getYDomain(targetsToShow, 'y2')); + } + + // tooltip + $$.tooltip.style("display", "none"); + + // xgrid focus + $$.updateXgridFocus(); + + // Data empty label positioning and text. + main.select("text." + CLASS.text + '.' + CLASS.empty) + .attr("x", $$.width / 2) + .attr("y", $$.height / 2) + .text(config.data_empty_label_text) + .transition() + .style('opacity', targetsToShow.length ? 0 : 1); + + // grid + $$.updateGrid(duration); + + // rect for regions + $$.updateRegion(duration); + + // bars + $$.updateBar(durationForExit); + + // lines, areas and cricles + $$.updateLine(durationForExit); + $$.updateArea(durationForExit); + $$.updateCircle(); + + // text + if ($$.hasDataLabel()) { + $$.updateText(durationForExit); + } + + // arc + if ($$.redrawArc) { $$.redrawArc(duration, durationForExit, withTransform); } + + // subchart + if ($$.redrawSubchart) { + $$.redrawSubchart(withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices); + } + + // circles for select + main.selectAll('.' + CLASS.selectedCircles) + .filter($$.isBarType.bind($$)) + .selectAll('circle') + .remove(); + + // event rects will redrawn when flow called + if (config.interaction_enabled && !options.flow && withEventRect) { + $$.redrawEventRect(); + if ($$.updateZoom) { $$.updateZoom(); } + } + + // update circleY based on updated parameters + $$.updateCircleY(); + + // generate circle x/y functions depending on updated params + cx = ($$.config.axis_rotated ? $$.circleY : $$.circleX).bind($$); + cy = ($$.config.axis_rotated ? $$.circleX : $$.circleY).bind($$); + + if (options.flow) { + flow = $$.generateFlow({ + targets: targetsToShow, + flow: options.flow, + duration: options.flow.duration, + drawBar: drawBar, + drawLine: drawLine, + drawArea: drawArea, + cx: cx, + cy: cy, + xv: xv, + xForText: xForText, + yForText: yForText + }); + } + + if ((duration || flow) && $$.isTabVisible()) { // Only use transition if tab visible. See #938. + // transition should be derived from one transition + d3.transition().duration(duration).each(function () { + var transitionsToWait = []; + + // redraw and gather transitions + [ + $$.redrawBar(drawBar, true), + $$.redrawLine(drawLine, true), + $$.redrawArea(drawArea, true), + $$.redrawCircle(cx, cy, true), + $$.redrawText(xForText, yForText, options.flow, true), + $$.redrawRegion(true), + $$.redrawGrid(true), + ].forEach(function (transitions) { + transitions.forEach(function (transition) { + transitionsToWait.push(transition); + }); + }); + + // Wait for end of transitions to call flow and onrendered callback + waitForDraw = $$.generateWait(); + transitionsToWait.forEach(function (t) { + waitForDraw.add(t); + }); + }) + .call(waitForDraw, function () { + if (flow) { + flow(); + } + if (config.onrendered) { + config.onrendered.call($$); + } + }); + } + else { + $$.redrawBar(drawBar); + $$.redrawLine(drawLine); + $$.redrawArea(drawArea); + $$.redrawCircle(cx, cy); + $$.redrawText(xForText, yForText, options.flow); + $$.redrawRegion(); + $$.redrawGrid(); + if (config.onrendered) { + config.onrendered.call($$); + } + } + + // update fadein condition + $$.mapToIds($$.data.targets).forEach(function (id) { + $$.withoutFadeIn[id] = true; + }); + }; + + c3_chart_internal_fn.updateAndRedraw = function (options) { + var $$ = this, config = $$.config, transitions; + options = options || {}; + // same with redraw + options.withTransition = getOption(options, "withTransition", true); + options.withTransform = getOption(options, "withTransform", false); + options.withLegend = getOption(options, "withLegend", false); + // NOT same with redraw + options.withUpdateXDomain = true; + options.withUpdateOrgXDomain = true; + options.withTransitionForExit = false; + options.withTransitionForTransform = getOption(options, "withTransitionForTransform", options.withTransition); + // MEMO: this needs to be called before updateLegend and it means this ALWAYS needs to be called) + $$.updateSizes(); + // MEMO: called in updateLegend in redraw if withLegend + if (!(options.withLegend && config.legend_show)) { + transitions = $$.axis.generateTransitions(options.withTransitionForAxis ? config.transition_duration : 0); + // Update scales + $$.updateScales(); + $$.updateSvgSize(); + // Update g positions + $$.transformAll(options.withTransitionForTransform, transitions); + } + // Draw with new sizes & scales + $$.redraw(options, transitions); + }; + c3_chart_internal_fn.redrawWithoutRescale = function () { + this.redraw({ + withY: false, + withSubchart: false, + withEventRect: false, + withTransitionForAxis: false + }); + }; + + c3_chart_internal_fn.isTimeSeries = function () { + return this.config.axis_x_type === 'timeseries'; + }; + c3_chart_internal_fn.isCategorized = function () { + return this.config.axis_x_type.indexOf('categor') >= 0; + }; + c3_chart_internal_fn.isCustomX = function () { + var $$ = this, config = $$.config; + return !$$.isTimeSeries() && (config.data_x || notEmpty(config.data_xs)); + }; + + c3_chart_internal_fn.isTimeSeriesY = function () { + return this.config.axis_y_type === 'timeseries'; + }; + + c3_chart_internal_fn.getTranslate = function (target) { + var $$ = this, config = $$.config, x, y; + if (target === 'main') { + x = asHalfPixel($$.margin.left); + y = asHalfPixel($$.margin.top); + } else if (target === 'context') { + x = asHalfPixel($$.margin2.left); + y = asHalfPixel($$.margin2.top); + } else if (target === 'legend') { + x = $$.margin3.left; + y = $$.margin3.top; + } else if (target === 'x') { + x = 0; + y = config.axis_rotated ? 0 : $$.height; + } else if (target === 'y') { + x = 0; + y = config.axis_rotated ? $$.height : 0; + } else if (target === 'y2') { + x = config.axis_rotated ? 0 : $$.width; + y = config.axis_rotated ? 1 : 0; + } else if (target === 'subx') { + x = 0; + y = config.axis_rotated ? 0 : $$.height2; + } else if (target === 'arc') { + x = $$.arcWidth / 2; + y = $$.arcHeight / 2; + } + return "translate(" + x + "," + y + ")"; + }; + c3_chart_internal_fn.initialOpacity = function (d) { + return d.value !== null && this.withoutFadeIn[d.id] ? 1 : 0; + }; + c3_chart_internal_fn.initialOpacityForCircle = function (d) { + return d.value !== null && this.withoutFadeIn[d.id] ? this.opacityForCircle(d) : 0; + }; + c3_chart_internal_fn.opacityForCircle = function (d) { + var opacity = this.config.point_show ? 1 : 0; + return isValue(d.value) ? (this.isScatterType(d) ? 0.5 : opacity) : 0; + }; + c3_chart_internal_fn.opacityForText = function () { + return this.hasDataLabel() ? 1 : 0; + }; + c3_chart_internal_fn.xx = function (d) { + return d ? this.x(d.x) : null; + }; + c3_chart_internal_fn.xv = function (d) { + var $$ = this, value = d.value; + if ($$.isTimeSeries()) { + value = $$.parseDate(d.value); + } + else if ($$.isCategorized() && typeof d.value === 'string') { + value = $$.config.axis_x_categories.indexOf(d.value); + } + return Math.ceil($$.x(value)); + }; + c3_chart_internal_fn.yv = function (d) { + var $$ = this, + yScale = d.axis && d.axis === 'y2' ? $$.y2 : $$.y; + return Math.ceil(yScale(d.value)); + }; + c3_chart_internal_fn.subxx = function (d) { + return d ? this.subX(d.x) : null; + }; + + c3_chart_internal_fn.transformMain = function (withTransition, transitions) { + var $$ = this, + xAxis, yAxis, y2Axis; + if (transitions && transitions.axisX) { + xAxis = transitions.axisX; + } else { + xAxis = $$.main.select('.' + CLASS.axisX); + if (withTransition) { xAxis = xAxis.transition(); } + } + if (transitions && transitions.axisY) { + yAxis = transitions.axisY; + } else { + yAxis = $$.main.select('.' + CLASS.axisY); + if (withTransition) { yAxis = yAxis.transition(); } + } + if (transitions && transitions.axisY2) { + y2Axis = transitions.axisY2; + } else { + y2Axis = $$.main.select('.' + CLASS.axisY2); + if (withTransition) { y2Axis = y2Axis.transition(); } + } + (withTransition ? $$.main.transition() : $$.main).attr("transform", $$.getTranslate('main')); + xAxis.attr("transform", $$.getTranslate('x')); + yAxis.attr("transform", $$.getTranslate('y')); + y2Axis.attr("transform", $$.getTranslate('y2')); + $$.main.select('.' + CLASS.chartArcs).attr("transform", $$.getTranslate('arc')); + }; + c3_chart_internal_fn.transformAll = function (withTransition, transitions) { + var $$ = this; + $$.transformMain(withTransition, transitions); + if ($$.config.subchart_show) { $$.transformContext(withTransition, transitions); } + if ($$.legend) { $$.transformLegend(withTransition); } + }; + + c3_chart_internal_fn.updateSvgSize = function () { + var $$ = this, + brush = $$.svg.select(".c3-brush .background"); + $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight); + $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect') + .attr('width', $$.width) + .attr('height', $$.height); + $$.svg.select('#' + $$.clipIdForXAxis).select('rect') + .attr('x', $$.getXAxisClipX.bind($$)) + .attr('y', $$.getXAxisClipY.bind($$)) + .attr('width', $$.getXAxisClipWidth.bind($$)) + .attr('height', $$.getXAxisClipHeight.bind($$)); + $$.svg.select('#' + $$.clipIdForYAxis).select('rect') + .attr('x', $$.getYAxisClipX.bind($$)) + .attr('y', $$.getYAxisClipY.bind($$)) + .attr('width', $$.getYAxisClipWidth.bind($$)) + .attr('height', $$.getYAxisClipHeight.bind($$)); + $$.svg.select('#' + $$.clipIdForSubchart).select('rect') + .attr('width', $$.width) + .attr('height', brush.size() ? brush.attr('height') : 0); + $$.svg.select('.' + CLASS.zoomRect) + .attr('width', $$.width) + .attr('height', $$.height); + // MEMO: parent div's height will be bigger than svg when <!DOCTYPE html> + $$.selectChart.style('max-height', $$.currentHeight + "px"); + }; + + + c3_chart_internal_fn.updateDimension = function (withoutAxis) { + var $$ = this; + if (!withoutAxis) { + if ($$.config.axis_rotated) { + $$.axes.x.call($$.xAxis); + $$.axes.subx.call($$.subXAxis); + } else { + $$.axes.y.call($$.yAxis); + $$.axes.y2.call($$.y2Axis); + } + } + $$.updateSizes(); + $$.updateScales(); + $$.updateSvgSize(); + $$.transformAll(false); + }; + + c3_chart_internal_fn.observeInserted = function (selection) { + var $$ = this, observer; + if (typeof MutationObserver === 'undefined') { + window.console.error("MutationObserver not defined."); + return; + } + observer= new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + if (mutation.type === 'childList' && mutation.previousSibling) { + observer.disconnect(); + // need to wait for completion of load because size calculation requires the actual sizes determined after that completion + $$.intervalForObserveInserted = window.setInterval(function () { + // parentNode will NOT be null when completed + if (selection.node().parentNode) { + window.clearInterval($$.intervalForObserveInserted); + $$.updateDimension(); + $$.config.oninit.call($$); + $$.redraw({ + withTransform: true, + withUpdateXDomain: true, + withUpdateOrgXDomain: true, + withTransition: false, + withTransitionForTransform: false, + withLegend: true + }); + selection.transition().style('opacity', 1); + } + }, 10); + } + }); + }); + observer.observe(selection.node(), {attributes: true, childList: true, characterData: true}); + }; + + + c3_chart_internal_fn.generateResize = function () { + var resizeFunctions = []; + function callResizeFunctions() { + resizeFunctions.forEach(function (f) { + f(); + }); + } + callResizeFunctions.add = function (f) { + resizeFunctions.push(f); + }; + return callResizeFunctions; + }; + + c3_chart_internal_fn.endall = function (transition, callback) { + var n = 0; + transition + .each(function () { ++n; }) + .each("end", function () { + if (!--n) { callback.apply(this, arguments); } + }); + }; + c3_chart_internal_fn.generateWait = function () { + var transitionsToWait = [], + f = function (transition, callback) { + var timer = setInterval(function () { + var done = 0; + transitionsToWait.forEach(function (t) { + if (t.empty()) { + done += 1; + return; + } + try { + t.transition(); + } catch (e) { + done += 1; + } + }); + if (done === transitionsToWait.length) { + clearInterval(timer); + if (callback) { callback(); } + } + }, 10); + }; + f.add = function (transition) { + transitionsToWait.push(transition); + }; + return f; + }; + + c3_chart_internal_fn.parseDate = function (date) { + var $$ = this, parsedDate; + if (date instanceof Date) { + parsedDate = date; + } else if (typeof date === 'string') { + parsedDate = $$.dataTimeFormat($$.config.data_xFormat).parse(date); + } else if (typeof date === 'number' || !isNaN(date)) { + parsedDate = new Date(+date); + } + if (!parsedDate || isNaN(+parsedDate)) { + window.console.error("Failed to parse x '" + date + "' to Date object"); + } + return parsedDate; + }; + + c3_chart_internal_fn.isTabVisible = function () { + var hidden; + if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support + hidden = "hidden"; + } else if (typeof document.mozHidden !== "undefined") { + hidden = "mozHidden"; + } else if (typeof document.msHidden !== "undefined") { + hidden = "msHidden"; + } else if (typeof document.webkitHidden !== "undefined") { + hidden = "webkitHidden"; + } + + return document[hidden] ? false : true; + }; + + c3_chart_internal_fn.getDefaultConfig = function () { + var config = { + bindto: '#chart', + size_width: undefined, + size_height: undefined, + padding_left: undefined, + padding_right: undefined, + padding_top: undefined, + padding_bottom: undefined, + zoom_enabled: false, + zoom_extent: undefined, + zoom_privileged: false, + zoom_rescale: false, + zoom_onzoom: function () {}, + zoom_onzoomstart: function () {}, + zoom_onzoomend: function () {}, + interaction_enabled: true, + onmouseover: function () {}, + onmouseout: function () {}, + onresize: function () {}, + onresized: function () {}, + oninit: function () {}, + onrendered: function () {}, + transition_duration: 350, + data_x: undefined, + data_xs: {}, + data_xFormat: '%Y-%m-%d', + data_xLocaltime: true, + data_xSort: true, + data_idConverter: function (id) { return id; }, + data_names: {}, + data_classes: {}, + data_groups: [], + data_axes: {}, + data_type: undefined, + data_types: {}, + data_labels: {}, + data_order: 'desc', + data_regions: {}, + data_color: undefined, + data_colors: {}, + data_hide: false, + data_filter: undefined, + data_selection_enabled: false, + data_selection_grouped: false, + data_selection_isselectable: function () { return true; }, + data_selection_multiple: true, + data_selection_draggable: false, + data_onclick: function () {}, + data_onmouseover: function () {}, + data_onmouseout: function () {}, + data_onselected: function () {}, + data_onunselected: function () {}, + data_url: undefined, + data_json: undefined, + data_rows: undefined, + data_columns: undefined, + data_mimeType: undefined, + data_keys: undefined, + // configuration for no plot-able data supplied. + data_empty_label_text: "", + // subchart + subchart_show: false, + subchart_size_height: 60, + subchart_onbrush: function () {}, + // color + color_pattern: [], + color_threshold: {}, + // legend + legend_show: true, + legend_hide: false, + legend_position: 'bottom', + legend_inset_anchor: 'top-left', + legend_inset_x: 10, + legend_inset_y: 0, + legend_inset_step: undefined, + legend_item_onclick: undefined, + legend_item_onmouseover: undefined, + legend_item_onmouseout: undefined, + legend_equally: false, + // axis + axis_rotated: false, + axis_x_show: true, + axis_x_type: 'indexed', + axis_x_localtime: true, + axis_x_categories: [], + axis_x_tick_centered: false, + axis_x_tick_format: undefined, + axis_x_tick_culling: {}, + axis_x_tick_culling_max: 10, + axis_x_tick_count: undefined, + axis_x_tick_fit: true, + axis_x_tick_values: null, + axis_x_tick_rotate: 0, + axis_x_tick_outer: true, + axis_x_tick_multiline: true, + axis_x_tick_width: null, + axis_x_max: undefined, + axis_x_min: undefined, + axis_x_padding: {}, + axis_x_height: undefined, + axis_x_extent: undefined, + axis_x_label: {}, + axis_y_show: true, + axis_y_type: undefined, + axis_y_max: undefined, + axis_y_min: undefined, + axis_y_inverted: false, + axis_y_center: undefined, + axis_y_inner: undefined, + axis_y_label: {}, + axis_y_tick_format: undefined, + axis_y_tick_outer: true, + axis_y_tick_values: null, + axis_y_tick_count: undefined, + axis_y_tick_time_value: undefined, + axis_y_tick_time_interval: undefined, + axis_y_padding: {}, + axis_y_default: undefined, + axis_y2_show: false, + axis_y2_max: undefined, + axis_y2_min: undefined, + axis_y2_inverted: false, + axis_y2_center: undefined, + axis_y2_inner: undefined, + axis_y2_label: {}, + axis_y2_tick_format: undefined, + axis_y2_tick_outer: true, + axis_y2_tick_values: null, + axis_y2_tick_count: undefined, + axis_y2_padding: {}, + axis_y2_default: undefined, + // grid + grid_x_show: false, + grid_x_type: 'tick', + grid_x_lines: [], + grid_y_show: false, + // not used + // grid_y_type: 'tick', + grid_y_lines: [], + grid_y_ticks: 10, + grid_focus_show: true, + grid_lines_front: true, + // point - point of each data + point_show: true, + point_r: 2.5, + point_focus_expand_enabled: true, + point_focus_expand_r: undefined, + point_select_r: undefined, + // line + line_connectNull: false, + line_step_type: 'step', + // bar + bar_width: undefined, + bar_width_ratio: 0.6, + bar_width_max: undefined, + bar_zerobased: true, + // area + area_zerobased: true, + // pie + pie_label_show: true, + pie_label_format: undefined, + pie_label_threshold: 0.05, + pie_expand: true, + // gauge + gauge_label_show: true, + gauge_label_format: undefined, + gauge_expand: true, + gauge_min: 0, + gauge_max: 100, + gauge_units: undefined, + gauge_width: undefined, + // donut + donut_label_show: true, + donut_label_format: undefined, + donut_label_threshold: 0.05, + donut_width: undefined, + donut_expand: true, + donut_title: "", + // region - region to change style + regions: [], + // tooltip - show when mouseover on each data + tooltip_show: true, + tooltip_grouped: true, + tooltip_format_title: undefined, + tooltip_format_name: undefined, + tooltip_format_value: undefined, + tooltip_position: undefined, + tooltip_contents: function (d, defaultTitleFormat, defaultValueFormat, color) { + return this.getTooltipContent ? this.getTooltipContent(d, defaultTitleFormat, defaultValueFormat, color) : ''; + }, + tooltip_init_show: false, + tooltip_init_x: 0, + tooltip_init_position: {top: '0px', left: '50px'} + }; + + Object.keys(this.additionalConfig).forEach(function (key) { + config[key] = this.additionalConfig[key]; + }, this); + + return config; + }; + c3_chart_internal_fn.additionalConfig = {}; + + c3_chart_internal_fn.loadConfig = function (config) { + var this_config = this.config, target, keys, read; + function find() { + var key = keys.shift(); + // console.log("key =>", key, ", target =>", target); + if (key && target && typeof target === 'object' && key in target) { + target = target[key]; + return find(); + } + else if (!key) { + return target; + } + else { + return undefined; + } + } + Object.keys(this_config).forEach(function (key) { + target = config; + keys = key.split('_'); + read = find(); + // console.log("CONFIG : ", key, read); + if (isDefined(read)) { + this_config[key] = read; + } + }); + }; + + c3_chart_internal_fn.getScale = function (min, max, forTimeseries) { + return (forTimeseries ? this.d3.time.scale() : this.d3.scale.linear()).range([min, max]); + }; + c3_chart_internal_fn.getX = function (min, max, domain, offset) { + var $$ = this, + scale = $$.getScale(min, max, $$.isTimeSeries()), + _scale = domain ? scale.domain(domain) : scale, key; + // Define customized scale if categorized axis + if ($$.isCategorized()) { + offset = offset || function () { return 0; }; + scale = function (d, raw) { + var v = _scale(d) + offset(d); + return raw ? v : Math.ceil(v); + }; + } else { + scale = function (d, raw) { + var v = _scale(d); + return raw ? v : Math.ceil(v); + }; + } + // define functions + for (key in _scale) { + scale[key] = _scale[key]; + } + scale.orgDomain = function () { + return _scale.domain(); + }; + // define custom domain() for categorized axis + if ($$.isCategorized()) { + scale.domain = function (domain) { + if (!arguments.length) { + domain = this.orgDomain(); + return [domain[0], domain[1] + 1]; + } + _scale.domain(domain); + return scale; + }; + } + return scale; + }; + c3_chart_internal_fn.getY = function (min, max, domain) { + var scale = this.getScale(min, max, this.isTimeSeriesY()); + if (domain) { scale.domain(domain); } + return scale; + }; + c3_chart_internal_fn.getYScale = function (id) { + return this.axis.getId(id) === 'y2' ? this.y2 : this.y; + }; + c3_chart_internal_fn.getSubYScale = function (id) { + return this.axis.getId(id) === 'y2' ? this.subY2 : this.subY; + }; + c3_chart_internal_fn.updateScales = function () { + var $$ = this, config = $$.config, + forInit = !$$.x; + // update edges + $$.xMin = config.axis_rotated ? 1 : 0; + $$.xMax = config.axis_rotated ? $$.height : $$.width; + $$.yMin = config.axis_rotated ? 0 : $$.height; + $$.yMax = config.axis_rotated ? $$.width : 1; + $$.subXMin = $$.xMin; + $$.subXMax = $$.xMax; + $$.subYMin = config.axis_rotated ? 0 : $$.height2; + $$.subYMax = config.axis_rotated ? $$.width2 : 1; + // update scales + $$.x = $$.getX($$.xMin, $$.xMax, forInit ? undefined : $$.x.orgDomain(), function () { return $$.xAxis.tickOffset(); }); + $$.y = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y_default : $$.y.domain()); + $$.y2 = $$.getY($$.yMin, $$.yMax, forInit ? config.axis_y2_default : $$.y2.domain()); + $$.subX = $$.getX($$.xMin, $$.xMax, $$.orgXDomain, function (d) { return d % 1 ? 0 : $$.subXAxis.tickOffset(); }); + $$.subY = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y_default : $$.subY.domain()); + $$.subY2 = $$.getY($$.subYMin, $$.subYMax, forInit ? config.axis_y2_default : $$.subY2.domain()); + // update axes + $$.xAxisTickFormat = $$.axis.getXAxisTickFormat(); + $$.xAxisTickValues = $$.axis.getXAxisTickValues(); + $$.yAxisTickValues = $$.axis.getYAxisTickValues(); + $$.y2AxisTickValues = $$.axis.getY2AxisTickValues(); + + $$.xAxis = $$.axis.getXAxis($$.x, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer); + $$.subXAxis = $$.axis.getXAxis($$.subX, $$.subXOrient, $$.xAxisTickFormat, $$.xAxisTickValues, config.axis_x_tick_outer); + $$.yAxis = $$.axis.getYAxis($$.y, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, config.axis_y_tick_outer); + $$.y2Axis = $$.axis.getYAxis($$.y2, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, config.axis_y2_tick_outer); + + // Set initialized scales to brush and zoom + if (!forInit) { + if ($$.brush) { $$.brush.scale($$.subX); } + if (config.zoom_enabled) { $$.zoom.scale($$.x); } + } + // update for arc + if ($$.updateArc) { $$.updateArc(); } + }; + + c3_chart_internal_fn.getYDomainMin = function (targets) { + var $$ = this, config = $$.config, + ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets), + j, k, baseId, idsInGroup, id, hasNegativeValue; + if (config.data_groups.length > 0) { + hasNegativeValue = $$.hasNegativeValueInTargets(targets); + for (j = 0; j < config.data_groups.length; j++) { + // Determine baseId + idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; }); + if (idsInGroup.length === 0) { continue; } + baseId = idsInGroup[0]; + // Consider negative values + if (hasNegativeValue && ys[baseId]) { + ys[baseId].forEach(function (v, i) { + ys[baseId][i] = v < 0 ? v : 0; + }); + } + // Compute min + for (k = 1; k < idsInGroup.length; k++) { + id = idsInGroup[k]; + if (! ys[id]) { continue; } + ys[id].forEach(function (v, i) { + if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasNegativeValue && +v > 0)) { + ys[baseId][i] += +v; + } + }); + } + } + } + return $$.d3.min(Object.keys(ys).map(function (key) { return $$.d3.min(ys[key]); })); + }; + c3_chart_internal_fn.getYDomainMax = function (targets) { + var $$ = this, config = $$.config, + ids = $$.mapToIds(targets), ys = $$.getValuesAsIdKeyed(targets), + j, k, baseId, idsInGroup, id, hasPositiveValue; + if (config.data_groups.length > 0) { + hasPositiveValue = $$.hasPositiveValueInTargets(targets); + for (j = 0; j < config.data_groups.length; j++) { + // Determine baseId + idsInGroup = config.data_groups[j].filter(function (id) { return ids.indexOf(id) >= 0; }); + if (idsInGroup.length === 0) { continue; } + baseId = idsInGroup[0]; + // Consider positive values + if (hasPositiveValue && ys[baseId]) { + ys[baseId].forEach(function (v, i) { + ys[baseId][i] = v > 0 ? v : 0; + }); + } + // Compute max + for (k = 1; k < idsInGroup.length; k++) { + id = idsInGroup[k]; + if (! ys[id]) { continue; } + ys[id].forEach(function (v, i) { + if ($$.axis.getId(id) === $$.axis.getId(baseId) && ys[baseId] && !(hasPositiveValue && +v < 0)) { + ys[baseId][i] += +v; + } + }); + } + } + } + return $$.d3.max(Object.keys(ys).map(function (key) { return $$.d3.max(ys[key]); })); + }; + c3_chart_internal_fn.getYDomain = function (targets, axisId, xDomain) { + var $$ = this, config = $$.config, + targetsByAxisId = targets.filter(function (t) { return $$.axis.getId(t.id) === axisId; }), + yTargets = xDomain ? $$.filterByXDomain(targetsByAxisId, xDomain) : targetsByAxisId, + yMin = axisId === 'y2' ? config.axis_y2_min : config.axis_y_min, + yMax = axisId === 'y2' ? config.axis_y2_max : config.axis_y_max, + yDomainMin = $$.getYDomainMin(yTargets), + yDomainMax = $$.getYDomainMax(yTargets), + domain, domainLength, padding, padding_top, padding_bottom, + center = axisId === 'y2' ? config.axis_y2_center : config.axis_y_center, + yDomainAbs, lengths, diff, ratio, isAllPositive, isAllNegative, + isZeroBased = ($$.hasType('bar', yTargets) && config.bar_zerobased) || ($$.hasType('area', yTargets) && config.area_zerobased), + isInverted = axisId === 'y2' ? config.axis_y2_inverted : config.axis_y_inverted, + showHorizontalDataLabel = $$.hasDataLabel() && config.axis_rotated, + showVerticalDataLabel = $$.hasDataLabel() && !config.axis_rotated; + + // MEMO: avoid inverting domain unexpectedly + yDomainMin = isValue(yMin) ? yMin : isValue(yMax) ? (yDomainMin < yMax ? yDomainMin : yMax - 10) : yDomainMin; + yDomainMax = isValue(yMax) ? yMax : isValue(yMin) ? (yMin < yDomainMax ? yDomainMax : yMin + 10) : yDomainMax; + + if (yTargets.length === 0) { // use current domain if target of axisId is none + return axisId === 'y2' ? $$.y2.domain() : $$.y.domain(); + } + if (isNaN(yDomainMin)) { // set minimum to zero when not number + yDomainMin = 0; + } + if (isNaN(yDomainMax)) { // set maximum to have same value as yDomainMin + yDomainMax = yDomainMin; + } + if (yDomainMin === yDomainMax) { + yDomainMin < 0 ? yDomainMax = 0 : yDomainMin = 0; + } + isAllPositive = yDomainMin >= 0 && yDomainMax >= 0; + isAllNegative = yDomainMin <= 0 && yDomainMax <= 0; + + // Cancel zerobased if axis_*_min / axis_*_max specified + if ((isValue(yMin) && isAllPositive) || (isValue(yMax) && isAllNegative)) { + isZeroBased = false; + } + + // Bar/Area chart should be 0-based if all positive|negative + if (isZeroBased) { + if (isAllPositive) { yDomainMin = 0; } + if (isAllNegative) { yDomainMax = 0; } + } + + domainLength = Math.abs(yDomainMax - yDomainMin); + padding = padding_top = padding_bottom = domainLength * 0.1; + + if (typeof center !== 'undefined') { + yDomainAbs = Math.max(Math.abs(yDomainMin), Math.abs(yDomainMax)); + yDomainMax = center + yDomainAbs; + yDomainMin = center - yDomainAbs; + } + // add padding for data label + if (showHorizontalDataLabel) { + lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'width'); + diff = diffDomain($$.y.range()); + ratio = [lengths[0] / diff, lengths[1] / diff]; + padding_top += domainLength * (ratio[1] / (1 - ratio[0] - ratio[1])); + padding_bottom += domainLength * (ratio[0] / (1 - ratio[0] - ratio[1])); + } else if (showVerticalDataLabel) { + lengths = $$.getDataLabelLength(yDomainMin, yDomainMax, 'height'); + padding_top += $$.axis.convertPixelsToAxisPadding(lengths[1], domainLength); + padding_bottom += $$.axis.convertPixelsToAxisPadding(lengths[0], domainLength); + } + if (axisId === 'y' && notEmpty(config.axis_y_padding)) { + padding_top = $$.axis.getPadding(config.axis_y_padding, 'top', padding_top, domainLength); + padding_bottom = $$.axis.getPadding(config.axis_y_padding, 'bottom', padding_bottom, domainLength); + } + if (axisId === 'y2' && notEmpty(config.axis_y2_padding)) { + padding_top = $$.axis.getPadding(config.axis_y2_padding, 'top', padding_top, domainLength); + padding_bottom = $$.axis.getPadding(config.axis_y2_padding, 'bottom', padding_bottom, domainLength); + } + // Bar/Area chart should be 0-based if all positive|negative + if (isZeroBased) { + if (isAllPositive) { padding_bottom = yDomainMin; } + if (isAllNegative) { padding_top = -yDomainMax; } + } + domain = [yDomainMin - padding_bottom, yDomainMax + padding_top]; + return isInverted ? domain.reverse() : domain; + }; + c3_chart_internal_fn.getXDomainMin = function (targets) { + var $$ = this, config = $$.config; + return isDefined(config.axis_x_min) ? + ($$.isTimeSeries() ? this.parseDate(config.axis_x_min) : config.axis_x_min) : + $$.d3.min(targets, function (t) { return $$.d3.min(t.values, function (v) { return v.x; }); }); + }; + c3_chart_internal_fn.getXDomainMax = function (targets) { + var $$ = this, config = $$.config; + return isDefined(config.axis_x_max) ? + ($$.isTimeSeries() ? this.parseDate(config.axis_x_max) : config.axis_x_max) : + $$.d3.max(targets, function (t) { return $$.d3.max(t.values, function (v) { return v.x; }); }); + }; + c3_chart_internal_fn.getXDomainPadding = function (domain) { + var $$ = this, config = $$.config, + diff = domain[1] - domain[0], + maxDataCount, padding, paddingLeft, paddingRight; + if ($$.isCategorized()) { + padding = 0; + } else if ($$.hasType('bar')) { + maxDataCount = $$.getMaxDataCount(); + padding = maxDataCount > 1 ? (diff / (maxDataCount - 1)) / 2 : 0.5; + } else { + padding = diff * 0.01; + } + if (typeof config.axis_x_padding === 'object' && notEmpty(config.axis_x_padding)) { + paddingLeft = isValue(config.axis_x_padding.left) ? config.axis_x_padding.left : padding; + paddingRight = isValue(config.axis_x_padding.right) ? config.axis_x_padding.right : padding; + } else if (typeof config.axis_x_padding === 'number') { + paddingLeft = paddingRight = config.axis_x_padding; + } else { + paddingLeft = paddingRight = padding; + } + return {left: paddingLeft, right: paddingRight}; + }; + c3_chart_internal_fn.getXDomain = function (targets) { + var $$ = this, + xDomain = [$$.getXDomainMin(targets), $$.getXDomainMax(targets)], + firstX = xDomain[0], lastX = xDomain[1], + padding = $$.getXDomainPadding(xDomain), + min = 0, max = 0; + // show center of x domain if min and max are the same + if ((firstX - lastX) === 0 && !$$.isCategorized()) { + if ($$.isTimeSeries()) { + firstX = new Date(firstX.getTime() * 0.5); + lastX = new Date(lastX.getTime() * 1.5); + } else { + firstX = firstX === 0 ? 1 : (firstX * 0.5); + lastX = lastX === 0 ? -1 : (lastX * 1.5); + } + } + if (firstX || firstX === 0) { + min = $$.isTimeSeries() ? new Date(firstX.getTime() - padding.left) : firstX - padding.left; + } + if (lastX || lastX === 0) { + max = $$.isTimeSeries() ? new Date(lastX.getTime() + padding.right) : lastX + padding.right; + } + return [min, max]; + }; + c3_chart_internal_fn.updateXDomain = function (targets, withUpdateXDomain, withUpdateOrgXDomain, withTrim, domain) { + var $$ = this, config = $$.config; + + if (withUpdateOrgXDomain) { + $$.x.domain(domain ? domain : $$.d3.extent($$.getXDomain(targets))); + $$.orgXDomain = $$.x.domain(); + if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); } + $$.subX.domain($$.x.domain()); + if ($$.brush) { $$.brush.scale($$.subX); } + } + if (withUpdateXDomain) { + $$.x.domain(domain ? domain : (!$$.brush || $$.brush.empty()) ? $$.orgXDomain : $$.brush.extent()); + if (config.zoom_enabled) { $$.zoom.scale($$.x).updateScaleExtent(); } + } + + // Trim domain when too big by zoom mousemove event + if (withTrim) { $$.x.domain($$.trimXDomain($$.x.orgDomain())); } + + return $$.x.domain(); + }; + c3_chart_internal_fn.trimXDomain = function (domain) { + var $$ = this; + if (domain[0] <= $$.orgXDomain[0]) { + domain[1] = +domain[1] + ($$.orgXDomain[0] - domain[0]); + domain[0] = $$.orgXDomain[0]; + } + if ($$.orgXDomain[1] <= domain[1]) { + domain[0] = +domain[0] - (domain[1] - $$.orgXDomain[1]); + domain[1] = $$.orgXDomain[1]; + } + return domain; + }; + + c3_chart_internal_fn.isX = function (key) { + var $$ = this, config = $$.config; + return (config.data_x && key === config.data_x) || (notEmpty(config.data_xs) && hasValue(config.data_xs, key)); + }; + c3_chart_internal_fn.isNotX = function (key) { + return !this.isX(key); + }; + c3_chart_internal_fn.getXKey = function (id) { + var $$ = this, config = $$.config; + return config.data_x ? config.data_x : notEmpty(config.data_xs) ? config.data_xs[id] : null; + }; + c3_chart_internal_fn.getXValuesOfXKey = function (key, targets) { + var $$ = this, + xValues, ids = targets && notEmpty(targets) ? $$.mapToIds(targets) : []; + ids.forEach(function (id) { + if ($$.getXKey(id) === key) { + xValues = $$.data.xs[id]; + } + }); + return xValues; + }; + c3_chart_internal_fn.getIndexByX = function (x) { + var $$ = this, + data = $$.filterByX($$.data.targets, x); + return data.length ? data[0].index : null; + }; + c3_chart_internal_fn.getXValue = function (id, i) { + var $$ = this; + return id in $$.data.xs && $$.data.xs[id] && isValue($$.data.xs[id][i]) ? $$.data.xs[id][i] : i; + }; + c3_chart_internal_fn.getOtherTargetXs = function () { + var $$ = this, + idsForX = Object.keys($$.data.xs); + return idsForX.length ? $$.data.xs[idsForX[0]] : null; + }; + c3_chart_internal_fn.getOtherTargetX = function (index) { + var xs = this.getOtherTargetXs(); + return xs && index < xs.length ? xs[index] : null; + }; + c3_chart_internal_fn.addXs = function (xs) { + var $$ = this; + Object.keys(xs).forEach(function (id) { + $$.config.data_xs[id] = xs[id]; + }); + }; + c3_chart_internal_fn.hasMultipleX = function (xs) { + return this.d3.set(Object.keys(xs).map(function (id) { return xs[id]; })).size() > 1; + }; + c3_chart_internal_fn.isMultipleX = function () { + return notEmpty(this.config.data_xs) || !this.config.data_xSort || this.hasType('scatter'); + }; + c3_chart_internal_fn.addName = function (data) { + var $$ = this, name; + if (data) { + name = $$.config.data_names[data.id]; + data.name = name ? name : data.id; + } + return data; + }; + c3_chart_internal_fn.getValueOnIndex = function (values, index) { + var valueOnIndex = values.filter(function (v) { return v.index === index; }); + return valueOnIndex.length ? valueOnIndex[0] : null; + }; + c3_chart_internal_fn.updateTargetX = function (targets, x) { + var $$ = this; + targets.forEach(function (t) { + t.values.forEach(function (v, i) { + v.x = $$.generateTargetX(x[i], t.id, i); + }); + $$.data.xs[t.id] = x; + }); + }; + c3_chart_internal_fn.updateTargetXs = function (targets, xs) { + var $$ = this; + targets.forEach(function (t) { + if (xs[t.id]) { + $$.updateTargetX([t], xs[t.id]); + } + }); + }; + c3_chart_internal_fn.generateTargetX = function (rawX, id, index) { + var $$ = this, x; + if ($$.isTimeSeries()) { + x = rawX ? $$.parseDate(rawX) : $$.parseDate($$.getXValue(id, index)); + } + else if ($$.isCustomX() && !$$.isCategorized()) { + x = isValue(rawX) ? +rawX : $$.getXValue(id, index); + } + else { + x = index; + } + return x; + }; + c3_chart_internal_fn.cloneTarget = function (target) { + return { + id : target.id, + id_org : target.id_org, + values : target.values.map(function (d) { + return {x: d.x, value: d.value, id: d.id}; + }) + }; + }; + c3_chart_internal_fn.updateXs = function () { + var $$ = this; + if ($$.data.targets.length) { + $$.xs = []; + $$.data.targets[0].values.forEach(function (v) { + $$.xs[v.index] = v.x; + }); + } + }; + c3_chart_internal_fn.getPrevX = function (i) { + var x = this.xs[i - 1]; + return typeof x !== 'undefined' ? x : null; + }; + c3_chart_internal_fn.getNextX = function (i) { + var x = this.xs[i + 1]; + return typeof x !== 'undefined' ? x : null; + }; + c3_chart_internal_fn.getMaxDataCount = function () { + var $$ = this; + return $$.d3.max($$.data.targets, function (t) { return t.values.length; }); + }; + c3_chart_internal_fn.getMaxDataCountTarget = function (targets) { + var length = targets.length, max = 0, maxTarget; + if (length > 1) { + targets.forEach(function (t) { + if (t.values.length > max) { + maxTarget = t; + max = t.values.length; + } + }); + } else { + maxTarget = length ? targets[0] : null; + } + return maxTarget; + }; + c3_chart_internal_fn.getEdgeX = function (targets) { + var $$ = this; + return !targets.length ? [0, 0] : [ + $$.d3.min(targets, function (t) { return t.values[0].x; }), + $$.d3.max(targets, function (t) { return t.values[t.values.length - 1].x; }) + ]; + }; + c3_chart_internal_fn.mapToIds = function (targets) { + return targets.map(function (d) { return d.id; }); + }; + c3_chart_internal_fn.mapToTargetIds = function (ids) { + var $$ = this; + return ids ? (isString(ids) ? [ids] : ids) : $$.mapToIds($$.data.targets); + }; + c3_chart_internal_fn.hasTarget = function (targets, id) { + var ids = this.mapToIds(targets), i; + for (i = 0; i < ids.length; i++) { + if (ids[i] === id) { + return true; + } + } + return false; + }; + c3_chart_internal_fn.isTargetToShow = function (targetId) { + return this.hiddenTargetIds.indexOf(targetId) < 0; + }; + c3_chart_internal_fn.isLegendToShow = function (targetId) { + return this.hiddenLegendIds.indexOf(targetId) < 0; + }; + c3_chart_internal_fn.filterTargetsToShow = function (targets) { + var $$ = this; + return targets.filter(function (t) { return $$.isTargetToShow(t.id); }); + }; + c3_chart_internal_fn.mapTargetsToUniqueXs = function (targets) { + var $$ = this; + var xs = $$.d3.set($$.d3.merge(targets.map(function (t) { return t.values.map(function (v) { return +v.x; }); }))).values(); + return $$.isTimeSeries() ? xs.map(function (x) { return new Date(+x); }) : xs.map(function (x) { return +x; }); + }; + c3_chart_internal_fn.addHiddenTargetIds = function (targetIds) { + this.hiddenTargetIds = this.hiddenTargetIds.concat(targetIds); + }; + c3_chart_internal_fn.removeHiddenTargetIds = function (targetIds) { + this.hiddenTargetIds = this.hiddenTargetIds.filter(function (id) { return targetIds.indexOf(id) < 0; }); + }; + c3_chart_internal_fn.addHiddenLegendIds = function (targetIds) { + this.hiddenLegendIds = this.hiddenLegendIds.concat(targetIds); + }; + c3_chart_internal_fn.removeHiddenLegendIds = function (targetIds) { + this.hiddenLegendIds = this.hiddenLegendIds.filter(function (id) { return targetIds.indexOf(id) < 0; }); + }; + c3_chart_internal_fn.getValuesAsIdKeyed = function (targets) { + var ys = {}; + targets.forEach(function (t) { + ys[t.id] = []; + t.values.forEach(function (v) { + ys[t.id].push(v.value); + }); + }); + return ys; + }; + c3_chart_internal_fn.checkValueInTargets = function (targets, checker) { + var ids = Object.keys(targets), i, j, values; + for (i = 0; i < ids.length; i++) { + values = targets[ids[i]].values; + for (j = 0; j < values.length; j++) { + if (checker(values[j].value)) { + return true; + } + } + } + return false; + }; + c3_chart_internal_fn.hasNegativeValueInTargets = function (targets) { + return this.checkValueInTargets(targets, function (v) { return v < 0; }); + }; + c3_chart_internal_fn.hasPositiveValueInTargets = function (targets) { + return this.checkValueInTargets(targets, function (v) { return v > 0; }); + }; + c3_chart_internal_fn.isOrderDesc = function () { + var config = this.config; + return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'desc'; + }; + c3_chart_internal_fn.isOrderAsc = function () { + var config = this.config; + return typeof(config.data_order) === 'string' && config.data_order.toLowerCase() === 'asc'; + }; + c3_chart_internal_fn.orderTargets = function (targets) { + var $$ = this, config = $$.config, orderAsc = $$.isOrderAsc(), orderDesc = $$.isOrderDesc(); + if (orderAsc || orderDesc) { + targets.sort(function (t1, t2) { + var reducer = function (p, c) { return p + Math.abs(c.value); }; + var t1Sum = t1.values.reduce(reducer, 0), + t2Sum = t2.values.reduce(reducer, 0); + return orderAsc ? t2Sum - t1Sum : t1Sum - t2Sum; + }); + } else if (isFunction(config.data_order)) { + targets.sort(config.data_order); + } // TODO: accept name array for order + return targets; + }; + c3_chart_internal_fn.filterByX = function (targets, x) { + return this.d3.merge(targets.map(function (t) { return t.values; })).filter(function (v) { return v.x - x === 0; }); + }; + c3_chart_internal_fn.filterRemoveNull = function (data) { + return data.filter(function (d) { return isValue(d.value); }); + }; + c3_chart_internal_fn.filterByXDomain = function (targets, xDomain) { + return targets.map(function (t) { + return { + id: t.id, + id_org: t.id_org, + values: t.values.filter(function (v) { + return xDomain[0] <= v.x && v.x <= xDomain[1]; + }) + }; + }); + }; + c3_chart_internal_fn.hasDataLabel = function () { + var config = this.config; + if (typeof config.data_labels === 'boolean' && config.data_labels) { + return true; + } else if (typeof config.data_labels === 'object' && notEmpty(config.data_labels)) { + return true; + } + return false; + }; + c3_chart_internal_fn.getDataLabelLength = function (min, max, key) { + var $$ = this, + lengths = [0, 0], paddingCoef = 1.3; + $$.selectChart.select('svg').selectAll('.dummy') + .data([min, max]) + .enter().append('text') + .text(function (d) { return $$.dataLabelFormat(d.id)(d); }) + .each(function (d, i) { + lengths[i] = this.getBoundingClientRect()[key] * paddingCoef; + }) + .remove(); + return lengths; + }; + c3_chart_internal_fn.isNoneArc = function (d) { + return this.hasTarget(this.data.targets, d.id); + }, + c3_chart_internal_fn.isArc = function (d) { + return 'data' in d && this.hasTarget(this.data.targets, d.data.id); + }; + c3_chart_internal_fn.findSameXOfValues = function (values, index) { + var i, targetX = values[index].x, sames = []; + for (i = index - 1; i >= 0; i--) { + if (targetX !== values[i].x) { break; } + sames.push(values[i]); + } + for (i = index; i < values.length; i++) { + if (targetX !== values[i].x) { break; } + sames.push(values[i]); + } + return sames; + }; + + c3_chart_internal_fn.findClosestFromTargets = function (targets, pos) { + var $$ = this, candidates; + + // map to array of closest points of each target + candidates = targets.map(function (target) { + return $$.findClosest(target.values, pos); + }); + + // decide closest point and return + return $$.findClosest(candidates, pos); + }; + c3_chart_internal_fn.findClosest = function (values, pos) { + var $$ = this, minDist = 100, closest; + + // find mouseovering bar + values.filter(function (v) { return v && $$.isBarType(v.id); }).forEach(function (v) { + var shape = $$.main.select('.' + CLASS.bars + $$.getTargetSelectorSuffix(v.id) + ' .' + CLASS.bar + '-' + v.index).node(); + if (!closest && $$.isWithinBar(shape)) { + closest = v; + } + }); + + // find closest point from non-bar + values.filter(function (v) { return v && !$$.isBarType(v.id); }).forEach(function (v) { + var d = $$.dist(v, pos); + if (d < minDist) { + minDist = d; + closest = v; + } + }); + + return closest; + }; + c3_chart_internal_fn.dist = function (data, pos) { + var $$ = this, config = $$.config, + xIndex = config.axis_rotated ? 1 : 0, + yIndex = config.axis_rotated ? 0 : 1, + y = $$.circleY(data, data.index), + x = $$.x(data.x); + return Math.pow(x - pos[xIndex], 2) + Math.pow(y - pos[yIndex], 2); + }; + c3_chart_internal_fn.convertValuesToStep = function (values) { + var converted = [].concat(values), i; + + if (!this.isCategorized()) { + return values; + } + + for (i = values.length + 1; 0 < i; i--) { + converted[i] = converted[i - 1]; + } + + converted[0] = { + x: converted[0].x - 1, + value: converted[0].value, + id: converted[0].id + }; + converted[values.length + 1] = { + x: converted[values.length].x + 1, + value: converted[values.length].value, + id: converted[values.length].id + }; + + return converted; + }; + c3_chart_internal_fn.updateDataAttributes = function (name, attrs) { + var $$ = this, config = $$.config, current = config['data_' + name]; + if (typeof attrs === 'undefined') { return current; } + Object.keys(attrs).forEach(function (id) { + current[id] = attrs[id]; + }); + $$.redraw({withLegend: true}); + return current; + }; + + c3_chart_internal_fn.convertUrlToData = function (url, mimeType, keys, done) { + var $$ = this, type = mimeType ? mimeType : 'csv'; + $$.d3.xhr(url, function (error, data) { + var d; + if (!data) { + throw new Error(error.responseURL + ' ' + error.status + ' (' + error.statusText + ')'); + } + if (type === 'json') { + d = $$.convertJsonToData(JSON.parse(data.response), keys); + } else if (type === 'tsv') { + d = $$.convertTsvToData(data.response); + } else { + d = $$.convertCsvToData(data.response); + } + done.call($$, d); + }); + }; + c3_chart_internal_fn.convertXsvToData = function (xsv, parser) { + var rows = parser.parseRows(xsv), d; + if (rows.length === 1) { + d = [{}]; + rows[0].forEach(function (id) { + d[0][id] = null; + }); + } else { + d = parser.parse(xsv); + } + return d; + }; + c3_chart_internal_fn.convertCsvToData = function (csv) { + return this.convertXsvToData(csv, this.d3.csv); + }; + c3_chart_internal_fn.convertTsvToData = function (tsv) { + return this.convertXsvToData(tsv, this.d3.tsv); + }; + c3_chart_internal_fn.convertJsonToData = function (json, keys) { + var $$ = this, + new_rows = [], targetKeys, data; + if (keys) { // when keys specified, json would be an array that includes objects + if (keys.x) { + targetKeys = keys.value.concat(keys.x); + $$.config.data_x = keys.x; + } else { + targetKeys = keys.value; + } + new_rows.push(targetKeys); + json.forEach(function (o) { + var new_row = []; + targetKeys.forEach(function (key) { + // convert undefined to null because undefined data will be removed in convertDataToTargets() + var v = isUndefined(o[key]) ? null : o[key]; + new_row.push(v); + }); + new_rows.push(new_row); + }); + data = $$.convertRowsToData(new_rows); + } else { + Object.keys(json).forEach(function (key) { + new_rows.push([key].concat(json[key])); + }); + data = $$.convertColumnsToData(new_rows); + } + return data; + }; + c3_chart_internal_fn.convertRowsToData = function (rows) { + var keys = rows[0], new_row = {}, new_rows = [], i, j; + for (i = 1; i < rows.length; i++) { + new_row = {}; + for (j = 0; j < rows[i].length; j++) { + if (isUndefined(rows[i][j])) { + throw new Error("Source data is missing a component at (" + i + "," + j + ")!"); + } + new_row[keys[j]] = rows[i][j]; + } + new_rows.push(new_row); + } + return new_rows; + }; + c3_chart_internal_fn.convertColumnsToData = function (columns) { + var new_rows = [], i, j, key; + for (i = 0; i < columns.length; i++) { + key = columns[i][0]; + for (j = 1; j < columns[i].length; j++) { + if (isUndefined(new_rows[j - 1])) { + new_rows[j - 1] = {}; + } + if (isUndefined(columns[i][j])) { + throw new Error("Source data is missing a component at (" + i + "," + j + ")!"); + } + new_rows[j - 1][key] = columns[i][j]; + } + } + return new_rows; + }; + c3_chart_internal_fn.convertDataToTargets = function (data, appendXs) { + var $$ = this, config = $$.config, + ids = $$.d3.keys(data[0]).filter($$.isNotX, $$), + xs = $$.d3.keys(data[0]).filter($$.isX, $$), + targets; + + // save x for update data by load when custom x and c3.x API + ids.forEach(function (id) { + var xKey = $$.getXKey(id); + + if ($$.isCustomX() || $$.isTimeSeries()) { + // if included in input data + if (xs.indexOf(xKey) >= 0) { + $$.data.xs[id] = (appendXs && $$.data.xs[id] ? $$.data.xs[id] : []).concat( + data.map(function (d) { return d[xKey]; }) + .filter(isValue) + .map(function (rawX, i) { return $$.generateTargetX(rawX, id, i); }) + ); + } + // if not included in input data, find from preloaded data of other id's x + else if (config.data_x) { + $$.data.xs[id] = $$.getOtherTargetXs(); + } + // if not included in input data, find from preloaded data + else if (notEmpty(config.data_xs)) { + $$.data.xs[id] = $$.getXValuesOfXKey(xKey, $$.data.targets); + } + // MEMO: if no x included, use same x of current will be used + } else { + $$.data.xs[id] = data.map(function (d, i) { return i; }); + } + }); + + + // check x is defined + ids.forEach(function (id) { + if (!$$.data.xs[id]) { + throw new Error('x is not defined for id = "' + id + '".'); + } + }); + + // convert to target + targets = ids.map(function (id, index) { + var convertedId = config.data_idConverter(id); + return { + id: convertedId, + id_org: id, + values: data.map(function (d, i) { + var xKey = $$.getXKey(id), rawX = d[xKey], x = $$.generateTargetX(rawX, id, i); + // use x as categories if custom x and categorized + if ($$.isCustomX() && $$.isCategorized() && index === 0 && rawX) { + if (i === 0) { config.axis_x_categories = []; } + config.axis_x_categories.push(rawX); + } + // mark as x = undefined if value is undefined and filter to remove after mapped + if (isUndefined(d[id]) || $$.data.xs[id].length <= i) { + x = undefined; + } + return {x: x, value: d[id] !== null && !isNaN(d[id]) ? +d[id] : null, id: convertedId}; + }).filter(function (v) { return isDefined(v.x); }) + }; + }); + + // finish targets + targets.forEach(function (t) { + var i; + // sort values by its x + if (config.data_xSort) { + t.values = t.values.sort(function (v1, v2) { + var x1 = v1.x || v1.x === 0 ? v1.x : Infinity, + x2 = v2.x || v2.x === 0 ? v2.x : Infinity; + return x1 - x2; + }); + } + // indexing each value + i = 0; + t.values.forEach(function (v) { + v.index = i++; + }); + // this needs to be sorted because its index and value.index is identical + $$.data.xs[t.id].sort(function (v1, v2) { + return v1 - v2; + }); + }); + + // set target types + if (config.data_type) { + $$.setTargetType($$.mapToIds(targets).filter(function (id) { return ! (id in config.data_types); }), config.data_type); + } + + // cache as original id keyed + targets.forEach(function (d) { + $$.addCache(d.id_org, d); + }); + + return targets; + }; + + c3_chart_internal_fn.load = function (targets, args) { + var $$ = this; + if (targets) { + // filter loading targets if needed + if (args.filter) { + targets = targets.filter(args.filter); + } + // set type if args.types || args.type specified + if (args.type || args.types) { + targets.forEach(function (t) { + var type = args.types && args.types[t.id] ? args.types[t.id] : args.type; + $$.setTargetType(t.id, type); + }); + } + // Update/Add data + $$.data.targets.forEach(function (d) { + for (var i = 0; i < targets.length; i++) { + if (d.id === targets[i].id) { + d.values = targets[i].values; + targets.splice(i, 1); + break; + } + } + }); + $$.data.targets = $$.data.targets.concat(targets); // add remained + } + + // Set targets + $$.updateTargets($$.data.targets); + + // Redraw with new targets + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); + + if (args.done) { args.done(); } + }; + c3_chart_internal_fn.loadFromArgs = function (args) { + var $$ = this; + if (args.data) { + $$.load($$.convertDataToTargets(args.data), args); + } + else if (args.url) { + $$.convertUrlToData(args.url, args.mimeType, args.keys, function (data) { + $$.load($$.convertDataToTargets(data), args); + }); + } + else if (args.json) { + $$.load($$.convertDataToTargets($$.convertJsonToData(args.json, args.keys)), args); + } + else if (args.rows) { + $$.load($$.convertDataToTargets($$.convertRowsToData(args.rows)), args); + } + else if (args.columns) { + $$.load($$.convertDataToTargets($$.convertColumnsToData(args.columns)), args); + } + else { + $$.load(null, args); + } + }; + c3_chart_internal_fn.unload = function (targetIds, done) { + var $$ = this; + if (!done) { + done = function () {}; + } + // filter existing target + targetIds = targetIds.filter(function (id) { return $$.hasTarget($$.data.targets, id); }); + // If no target, call done and return + if (!targetIds || targetIds.length === 0) { + done(); + return; + } + $$.svg.selectAll(targetIds.map(function (id) { return $$.selectorTarget(id); })) + .transition() + .style('opacity', 0) + .remove() + .call($$.endall, done); + targetIds.forEach(function (id) { + // Reset fadein for future load + $$.withoutFadeIn[id] = false; + // Remove target's elements + if ($$.legend) { + $$.legend.selectAll('.' + CLASS.legendItem + $$.getTargetSelectorSuffix(id)).remove(); + } + // Remove target + $$.data.targets = $$.data.targets.filter(function (t) { + return t.id !== id; + }); + }); + }; + + c3_chart_internal_fn.categoryName = function (i) { + var config = this.config; + return i < config.axis_x_categories.length ? config.axis_x_categories[i] : i; + }; + + c3_chart_internal_fn.initEventRect = function () { + var $$ = this; + $$.main.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.eventRects) + .style('fill-opacity', 0); + }; + c3_chart_internal_fn.redrawEventRect = function () { + var $$ = this, config = $$.config, + eventRectUpdate, maxDataCountTarget, + isMultipleX = $$.isMultipleX(); + + // rects for mouseover + var eventRects = $$.main.select('.' + CLASS.eventRects) + .style('cursor', config.zoom_enabled ? config.axis_rotated ? 'ns-resize' : 'ew-resize' : null) + .classed(CLASS.eventRectsMultiple, isMultipleX) + .classed(CLASS.eventRectsSingle, !isMultipleX); + + // clear old rects + eventRects.selectAll('.' + CLASS.eventRect).remove(); + + // open as public variable + $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect); + + if (isMultipleX) { + eventRectUpdate = $$.eventRect.data([0]); + // enter : only one rect will be added + $$.generateEventRectsForMultipleXs(eventRectUpdate.enter()); + // update + $$.updateEventRect(eventRectUpdate); + // exit : not needed because always only one rect exists + } + else { + // Set data and update $$.eventRect + maxDataCountTarget = $$.getMaxDataCountTarget($$.data.targets); + eventRects.datum(maxDataCountTarget ? maxDataCountTarget.values : []); + $$.eventRect = eventRects.selectAll('.' + CLASS.eventRect); + eventRectUpdate = $$.eventRect.data(function (d) { return d; }); + // enter + $$.generateEventRectsForSingleX(eventRectUpdate.enter()); + // update + $$.updateEventRect(eventRectUpdate); + // exit + eventRectUpdate.exit().remove(); + } + }; + c3_chart_internal_fn.updateEventRect = function (eventRectUpdate) { + var $$ = this, config = $$.config, + x, y, w, h, rectW, rectX; + + // set update selection if null + eventRectUpdate = eventRectUpdate || $$.eventRect.data(function (d) { return d; }); + + if ($$.isMultipleX()) { + // TODO: rotated not supported yet + x = 0; + y = 0; + w = $$.width; + h = $$.height; + } + else { + if (($$.isCustomX() || $$.isTimeSeries()) && !$$.isCategorized()) { + + // update index for x that is used by prevX and nextX + $$.updateXs(); + + rectW = function (d) { + var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index); + + // if there this is a single data point make the eventRect full width (or height) + if (prevX === null && nextX === null) { + return config.axis_rotated ? $$.height : $$.width; + } + + if (prevX === null) { prevX = $$.x.domain()[0]; } + if (nextX === null) { nextX = $$.x.domain()[1]; } + + return Math.max(0, ($$.x(nextX) - $$.x(prevX)) / 2); + }; + rectX = function (d) { + var prevX = $$.getPrevX(d.index), nextX = $$.getNextX(d.index), + thisX = $$.data.xs[d.id][d.index]; + + // if there this is a single data point position the eventRect at 0 + if (prevX === null && nextX === null) { + return 0; + } + + if (prevX === null) { prevX = $$.x.domain()[0]; } + + return ($$.x(thisX) + $$.x(prevX)) / 2; + }; + } else { + rectW = $$.getEventRectWidth(); + rectX = function (d) { + return $$.x(d.x) - (rectW / 2); + }; + } + x = config.axis_rotated ? 0 : rectX; + y = config.axis_rotated ? rectX : 0; + w = config.axis_rotated ? $$.width : rectW; + h = config.axis_rotated ? rectW : $$.height; + } + + eventRectUpdate + .attr('class', $$.classEvent.bind($$)) + .attr("x", x) + .attr("y", y) + .attr("width", w) + .attr("height", h); + }; + c3_chart_internal_fn.generateEventRectsForSingleX = function (eventRectEnter) { + var $$ = this, d3 = $$.d3, config = $$.config; + eventRectEnter.append("rect") + .attr("class", $$.classEvent.bind($$)) + .style("cursor", config.data_selection_enabled && config.data_selection_grouped ? "pointer" : null) + .on('mouseover', function (d) { + var index = d.index; + + if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing + if ($$.hasArcType()) { return; } + + // Expand shapes for selection + if (config.point_focus_expand_enabled) { $$.expandCircles(index, null, true); } + $$.expandBars(index, null, true); + + // Call event handler + $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) { + config.data_onmouseover.call($$.api, d); + }); + }) + .on('mouseout', function (d) { + var index = d.index; + if (!$$.config) { return; } // chart is destroyed + if ($$.hasArcType()) { return; } + $$.hideXGridFocus(); + $$.hideTooltip(); + // Undo expanded shapes + $$.unexpandCircles(); + $$.unexpandBars(); + // Call event handler + $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) { + config.data_onmouseout.call($$.api, d); + }); + }) + .on('mousemove', function (d) { + var selectedData, index = d.index, + eventRect = $$.svg.select('.' + CLASS.eventRect + '-' + index); + + if ($$.dragging || $$.flowing) { return; } // do nothing while dragging/flowing + if ($$.hasArcType()) { return; } + + if ($$.isStepType(d) && $$.config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) { + index -= 1; + } + + // Show tooltip + selectedData = $$.filterTargetsToShow($$.data.targets).map(function (t) { + return $$.addName($$.getValueOnIndex(t.values, index)); + }); + + if (config.tooltip_grouped) { + $$.showTooltip(selectedData, this); + $$.showXGridFocus(selectedData); + } + + if (config.tooltip_grouped && (!config.data_selection_enabled || config.data_selection_grouped)) { + return; + } + + $$.main.selectAll('.' + CLASS.shape + '-' + index) + .each(function () { + d3.select(this).classed(CLASS.EXPANDED, true); + if (config.data_selection_enabled) { + eventRect.style('cursor', config.data_selection_grouped ? 'pointer' : null); + } + if (!config.tooltip_grouped) { + $$.hideXGridFocus(); + $$.hideTooltip(); + if (!config.data_selection_grouped) { + $$.unexpandCircles(index); + $$.unexpandBars(index); + } + } + }) + .filter(function (d) { + return $$.isWithinShape(this, d); + }) + .each(function (d) { + if (config.data_selection_enabled && (config.data_selection_grouped || config.data_selection_isselectable(d))) { + eventRect.style('cursor', 'pointer'); + } + if (!config.tooltip_grouped) { + $$.showTooltip([d], this); + $$.showXGridFocus([d]); + if (config.point_focus_expand_enabled) { $$.expandCircles(index, d.id, true); } + $$.expandBars(index, d.id, true); + } + }); + }) + .on('click', function (d) { + var index = d.index; + if ($$.hasArcType() || !$$.toggleShape) { return; } + if ($$.cancelClick) { + $$.cancelClick = false; + return; + } + if ($$.isStepType(d) && config.line_step_type === 'step-after' && d3.mouse(this)[0] < $$.x($$.getXValue(d.id, index))) { + index -= 1; + } + $$.main.selectAll('.' + CLASS.shape + '-' + index).each(function (d) { + if (config.data_selection_grouped || $$.isWithinShape(this, d)) { + $$.toggleShape(this, d, index); + $$.config.data_onclick.call($$.api, d, this); + } + }); + }) + .call( + config.data_selection_draggable && $$.drag ? ( + d3.behavior.drag().origin(Object) + .on('drag', function () { $$.drag(d3.mouse(this)); }) + .on('dragstart', function () { $$.dragstart(d3.mouse(this)); }) + .on('dragend', function () { $$.dragend(); }) + ) : function () {} + ); + }; + + c3_chart_internal_fn.generateEventRectsForMultipleXs = function (eventRectEnter) { + var $$ = this, d3 = $$.d3, config = $$.config; + + function mouseout() { + $$.svg.select('.' + CLASS.eventRect).style('cursor', null); + $$.hideXGridFocus(); + $$.hideTooltip(); + $$.unexpandCircles(); + $$.unexpandBars(); + } + + eventRectEnter.append('rect') + .attr('x', 0) + .attr('y', 0) + .attr('width', $$.width) + .attr('height', $$.height) + .attr('class', CLASS.eventRect) + .on('mouseout', function () { + if (!$$.config) { return; } // chart is destroyed + if ($$.hasArcType()) { return; } + mouseout(); + }) + .on('mousemove', function () { + var targetsToShow = $$.filterTargetsToShow($$.data.targets); + var mouse, closest, sameXData, selectedData; + + if ($$.dragging) { return; } // do nothing when dragging + if ($$.hasArcType(targetsToShow)) { return; } + + mouse = d3.mouse(this); + closest = $$.findClosestFromTargets(targetsToShow, mouse); + + if ($$.mouseover && (!closest || closest.id !== $$.mouseover.id)) { + config.data_onmouseout.call($$.api, $$.mouseover); + $$.mouseover = undefined; + } + + if (! closest) { + mouseout(); + return; + } + + if ($$.isScatterType(closest) || !config.tooltip_grouped) { + sameXData = [closest]; + } else { + sameXData = $$.filterByX(targetsToShow, closest.x); + } + + // show tooltip when cursor is close to some point + selectedData = sameXData.map(function (d) { + return $$.addName(d); + }); + $$.showTooltip(selectedData, this); + + // expand points + if (config.point_focus_expand_enabled) { + $$.expandCircles(closest.index, closest.id, true); + } + $$.expandBars(closest.index, closest.id, true); + + // Show xgrid focus line + $$.showXGridFocus(selectedData); + + // Show cursor as pointer if point is close to mouse position + if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) { + $$.svg.select('.' + CLASS.eventRect).style('cursor', 'pointer'); + if (!$$.mouseover) { + config.data_onmouseover.call($$.api, closest); + $$.mouseover = closest; + } + } + }) + .on('click', function () { + var targetsToShow = $$.filterTargetsToShow($$.data.targets); + var mouse, closest; + + if ($$.hasArcType(targetsToShow)) { return; } + + mouse = d3.mouse(this); + closest = $$.findClosestFromTargets(targetsToShow, mouse); + + if (! closest) { return; } + + // select if selection enabled + if ($$.isBarType(closest.id) || $$.dist(closest, mouse) < 100) { + $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(closest.id)).selectAll('.' + CLASS.shape + '-' + closest.index).each(function () { + if (config.data_selection_grouped || $$.isWithinShape(this, closest)) { + $$.toggleShape(this, closest, closest.index); + $$.config.data_onclick.call($$.api, closest, this); + } + }); + } + }) + .call( + config.data_selection_draggable && $$.drag ? ( + d3.behavior.drag().origin(Object) + .on('drag', function () { $$.drag(d3.mouse(this)); }) + .on('dragstart', function () { $$.dragstart(d3.mouse(this)); }) + .on('dragend', function () { $$.dragend(); }) + ) : function () {} + ); + }; + c3_chart_internal_fn.dispatchEvent = function (type, index, mouse) { + var $$ = this, + selector = '.' + CLASS.eventRect + (!$$.isMultipleX() ? '-' + index : ''), + eventRect = $$.main.select(selector).node(), + box = eventRect.getBoundingClientRect(), + x = box.left + (mouse ? mouse[0] : 0), + y = box.top + (mouse ? mouse[1] : 0), + event = document.createEvent("MouseEvents"); + + event.initMouseEvent(type, true, true, window, 0, x, y, x, y, + false, false, false, false, 0, null); + eventRect.dispatchEvent(event); + }; + + c3_chart_internal_fn.getCurrentWidth = function () { + var $$ = this, config = $$.config; + return config.size_width ? config.size_width : $$.getParentWidth(); + }; + c3_chart_internal_fn.getCurrentHeight = function () { + var $$ = this, config = $$.config, + h = config.size_height ? config.size_height : $$.getParentHeight(); + return h > 0 ? h : 320 / ($$.hasType('gauge') ? 2 : 1); + }; + c3_chart_internal_fn.getCurrentPaddingTop = function () { + var config = this.config; + return isValue(config.padding_top) ? config.padding_top : 0; + }; + c3_chart_internal_fn.getCurrentPaddingBottom = function () { + var config = this.config; + return isValue(config.padding_bottom) ? config.padding_bottom : 0; + }; + c3_chart_internal_fn.getCurrentPaddingLeft = function (withoutRecompute) { + var $$ = this, config = $$.config; + if (isValue(config.padding_left)) { + return config.padding_left; + } else if (config.axis_rotated) { + return !config.axis_x_show ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40); + } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated + return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1; + } else { + return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute)); + } + }; + c3_chart_internal_fn.getCurrentPaddingRight = function () { + var $$ = this, config = $$.config, + defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0; + if (isValue(config.padding_right)) { + return config.padding_right + 1; // 1 is needed not to hide tick line + } else if (config.axis_rotated) { + return defaultPadding + legendWidthOnRight; + } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated + return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0); + } else { + return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight; + } + }; + + c3_chart_internal_fn.getParentRectValue = function (key) { + var parent = this.selectChart.node(), v; + while (parent && parent.tagName !== 'BODY') { + try { + v = parent.getBoundingClientRect()[key]; + } catch(e) { + if (key === 'width') { + // In IE in certain cases getBoundingClientRect + // will cause an "unspecified error" + v = parent.offsetWidth; + } + } + if (v) { + break; + } + parent = parent.parentNode; + } + return v; + }; + c3_chart_internal_fn.getParentWidth = function () { + return this.getParentRectValue('width'); + }; + c3_chart_internal_fn.getParentHeight = function () { + var h = this.selectChart.style('height'); + return h.indexOf('px') > 0 ? +h.replace('px', '') : 0; + }; + + + c3_chart_internal_fn.getSvgLeft = function (withoutRecompute) { + var $$ = this, config = $$.config, + hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner), + leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY, + leftAxis = $$.main.select('.' + leftAxisClass).node(), + svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0}, + chartRect = $$.selectChart.node().getBoundingClientRect(), + hasArc = $$.hasArcType(), + svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute)); + return svgLeft > 0 ? svgLeft : 0; + }; + + + c3_chart_internal_fn.getAxisWidthByAxisId = function (id, withoutRecompute) { + var $$ = this, position = $$.axis.getLabelPositionById(id); + return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40); + }; + c3_chart_internal_fn.getHorizontalAxisHeight = function (axisId) { + var $$ = this, config = $$.config, h = 30; + if (axisId === 'x' && !config.axis_x_show) { return 8; } + if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; } + if (axisId === 'y' && !config.axis_y_show) { return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; } + if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; } + // Calculate x axis height when tick rotated + if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) { + h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - config.axis_x_tick_rotate) / 180); + } + return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0); + }; + + c3_chart_internal_fn.getEventRectWidth = function () { + return Math.max(0, this.xAxis.tickInterval()); + }; + + c3_chart_internal_fn.getShapeIndices = function (typeFilter) { + var $$ = this, config = $$.config, + indices = {}, i = 0, j, k; + $$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$)).forEach(function (d) { + for (j = 0; j < config.data_groups.length; j++) { + if (config.data_groups[j].indexOf(d.id) < 0) { continue; } + for (k = 0; k < config.data_groups[j].length; k++) { + if (config.data_groups[j][k] in indices) { + indices[d.id] = indices[config.data_groups[j][k]]; + break; + } + } + } + if (isUndefined(indices[d.id])) { indices[d.id] = i++; } + }); + indices.__max__ = i - 1; + return indices; + }; + c3_chart_internal_fn.getShapeX = function (offset, targetsNum, indices, isSub) { + var $$ = this, scale = isSub ? $$.subX : $$.x; + return function (d) { + var index = d.id in indices ? indices[d.id] : 0; + return d.x || d.x === 0 ? scale(d.x) - offset * (targetsNum / 2 - index) : 0; + }; + }; + c3_chart_internal_fn.getShapeY = function (isSub) { + var $$ = this; + return function (d) { + var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id); + return scale(d.value); + }; + }; + c3_chart_internal_fn.getShapeOffset = function (typeFilter, indices, isSub) { + var $$ = this, + targets = $$.orderTargets($$.filterTargetsToShow($$.data.targets.filter(typeFilter, $$))), + targetIds = targets.map(function (t) { return t.id; }); + return function (d, i) { + var scale = isSub ? $$.getSubYScale(d.id) : $$.getYScale(d.id), + y0 = scale(0), offset = y0; + targets.forEach(function (t) { + var values = $$.isStepType(d) ? $$.convertValuesToStep(t.values) : t.values; + if (t.id === d.id || indices[t.id] !== indices[d.id]) { return; } + if (targetIds.indexOf(t.id) < targetIds.indexOf(d.id)) { + if (values[i].value * d.value >= 0) { + offset += scale(values[i].value) - y0; + } + } + }); + return offset; + }; + }; + c3_chart_internal_fn.isWithinShape = function (that, d) { + var $$ = this, + shape = $$.d3.select(that), isWithin; + if (!$$.isTargetToShow(d.id)) { + isWithin = false; + } + else if (that.nodeName === 'circle') { + isWithin = $$.isStepType(d) ? $$.isWithinStep(that, $$.getYScale(d.id)(d.value)) : $$.isWithinCircle(that, $$.pointSelectR(d) * 1.5); + } + else if (that.nodeName === 'path') { + isWithin = shape.classed(CLASS.bar) ? $$.isWithinBar(that) : true; + } + return isWithin; + }; + + + c3_chart_internal_fn.getInterpolate = function (d) { + var $$ = this; + return $$.isSplineType(d) ? "cardinal" : $$.isStepType(d) ? $$.config.line_step_type : "linear"; + }; + + c3_chart_internal_fn.initLine = function () { + var $$ = this; + $$.main.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartLines); + }; + c3_chart_internal_fn.updateTargetsForLine = function (targets) { + var $$ = this, config = $$.config, + mainLineUpdate, mainLineEnter, + classChartLine = $$.classChartLine.bind($$), + classLines = $$.classLines.bind($$), + classAreas = $$.classAreas.bind($$), + classCircles = $$.classCircles.bind($$), + classFocus = $$.classFocus.bind($$); + mainLineUpdate = $$.main.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine) + .data(targets) + .attr('class', function (d) { return classChartLine(d) + classFocus(d); }); + mainLineEnter = mainLineUpdate.enter().append('g') + .attr('class', classChartLine) + .style('opacity', 0) + .style("pointer-events", "none"); + // Lines for each data + mainLineEnter.append('g') + .attr("class", classLines); + // Areas + mainLineEnter.append('g') + .attr('class', classAreas); + // Circles for each data point on lines + mainLineEnter.append('g') + .attr("class", function (d) { return $$.generateClass(CLASS.selectedCircles, d.id); }); + mainLineEnter.append('g') + .attr("class", classCircles) + .style("cursor", function (d) { return config.data_selection_isselectable(d) ? "pointer" : null; }); + // Update date for selected circles + targets.forEach(function (t) { + $$.main.selectAll('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(t.id)).selectAll('.' + CLASS.selectedCircle).each(function (d) { + d.value = t.values[d.index].value; + }); + }); + // MEMO: can not keep same color... + //mainLineUpdate.exit().remove(); + }; + c3_chart_internal_fn.updateLine = function (durationForExit) { + var $$ = this; + $$.mainLine = $$.main.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line) + .data($$.lineData.bind($$)); + $$.mainLine.enter().append('path') + .attr('class', $$.classLine.bind($$)) + .style("stroke", $$.color); + $$.mainLine + .style("opacity", $$.initialOpacity.bind($$)) + .style('shape-rendering', function (d) { return $$.isStepType(d) ? 'crispEdges' : ''; }) + .attr('transform', null); + $$.mainLine.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawLine = function (drawLine, withTransition) { + return [ + (withTransition ? this.mainLine.transition() : this.mainLine) + .attr("d", drawLine) + .style("stroke", this.color) + .style("opacity", 1) + ]; + }; + c3_chart_internal_fn.generateDrawLine = function (lineIndices, isSub) { + var $$ = this, config = $$.config, + line = $$.d3.svg.line(), + getPoints = $$.generateGetLinePoints(lineIndices, isSub), + yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale, + xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); }, + yValue = function (d, i) { + return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)(d.value); + }; + + line = config.axis_rotated ? line.x(yValue).y(xValue) : line.x(xValue).y(yValue); + if (!config.line_connectNull) { line = line.defined(function (d) { return d.value != null; }); } + return function (d) { + var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values, + x = isSub ? $$.x : $$.subX, y = yScaleGetter.call($$, d.id), x0 = 0, y0 = 0, path; + if ($$.isLineType(d)) { + if (config.data_regions[d.id]) { + path = $$.lineWithRegions(values, x, y, config.data_regions[d.id]); + } else { + if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); } + path = line.interpolate($$.getInterpolate(d))(values); + } + } else { + if (values[0]) { + x0 = x(values[0].x); + y0 = y(values[0].value); + } + path = config.axis_rotated ? "M " + y0 + " " + x0 : "M " + x0 + " " + y0; + } + return path ? path : "M 0 0"; + }; + }; + c3_chart_internal_fn.generateGetLinePoints = function (lineIndices, isSub) { // partial duplication of generateGetBarPoints + var $$ = this, config = $$.config, + lineTargetsNum = lineIndices.__max__ + 1, + x = $$.getShapeX(0, lineTargetsNum, lineIndices, !!isSub), + y = $$.getShapeY(!!isSub), + lineOffset = $$.getShapeOffset($$.isLineType, lineIndices, !!isSub), + yScale = isSub ? $$.getSubYScale : $$.getYScale; + return function (d, i) { + var y0 = yScale.call($$, d.id)(0), + offset = lineOffset(d, i) || y0, // offset is for stacked area chart + posX = x(d), posY = y(d); + // fix posY not to overflow opposite quadrant + if (config.axis_rotated) { + if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; } + } + // 1 point that marks the line position + return [ + [posX, posY - (y0 - offset)], + [posX, posY - (y0 - offset)], // needed for compatibility + [posX, posY - (y0 - offset)], // needed for compatibility + [posX, posY - (y0 - offset)] // needed for compatibility + ]; + }; + }; + + + c3_chart_internal_fn.lineWithRegions = function (d, x, y, _regions) { + var $$ = this, config = $$.config, + prev = -1, i, j, + s = "M", sWithRegion, + xp, yp, dx, dy, dd, diff, diffx2, + xOffset = $$.isCategorized() ? 0.5 : 0, + xValue, yValue, + regions = []; + + function isWithinRegions(x, regions) { + var i; + for (i = 0; i < regions.length; i++) { + if (regions[i].start < x && x <= regions[i].end) { return true; } + } + return false; + } + + // Check start/end of regions + if (isDefined(_regions)) { + for (i = 0; i < _regions.length; i++) { + regions[i] = {}; + if (isUndefined(_regions[i].start)) { + regions[i].start = d[0].x; + } else { + regions[i].start = $$.isTimeSeries() ? $$.parseDate(_regions[i].start) : _regions[i].start; + } + if (isUndefined(_regions[i].end)) { + regions[i].end = d[d.length - 1].x; + } else { + regions[i].end = $$.isTimeSeries() ? $$.parseDate(_regions[i].end) : _regions[i].end; + } + } + } + + // Set scales + xValue = config.axis_rotated ? function (d) { return y(d.value); } : function (d) { return x(d.x); }; + yValue = config.axis_rotated ? function (d) { return x(d.x); } : function (d) { return y(d.value); }; + + // Define svg generator function for region + function generateM(points) { + return 'M' + points[0][0] + ' ' + points[0][1] + ' ' + points[1][0] + ' ' + points[1][1]; + } + if ($$.isTimeSeries()) { + sWithRegion = function (d0, d1, j, diff) { + var x0 = d0.x.getTime(), x_diff = d1.x - d0.x, + xv0 = new Date(x0 + x_diff * j), + xv1 = new Date(x0 + x_diff * (j + diff)), + points; + if (config.axis_rotated) { + points = [[y(yp(j)), x(xv0)], [y(yp(j + diff)), x(xv1)]]; + } else { + points = [[x(xv0), y(yp(j))], [x(xv1), y(yp(j + diff))]]; + } + return generateM(points); + }; + } else { + sWithRegion = function (d0, d1, j, diff) { + var points; + if (config.axis_rotated) { + points = [[y(yp(j), true), x(xp(j))], [y(yp(j + diff), true), x(xp(j + diff))]]; + } else { + points = [[x(xp(j), true), y(yp(j))], [x(xp(j + diff), true), y(yp(j + diff))]]; + } + return generateM(points); + }; + } + + // Generate + for (i = 0; i < d.length; i++) { + + // Draw as normal + if (isUndefined(regions) || ! isWithinRegions(d[i].x, regions)) { + s += " " + xValue(d[i]) + " " + yValue(d[i]); + } + // Draw with region // TODO: Fix for horizotal charts + else { + xp = $$.getScale(d[i - 1].x + xOffset, d[i].x + xOffset, $$.isTimeSeries()); + yp = $$.getScale(d[i - 1].value, d[i].value); + + dx = x(d[i].x) - x(d[i - 1].x); + dy = y(d[i].value) - y(d[i - 1].value); + dd = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)); + diff = 2 / dd; + diffx2 = diff * 2; + + for (j = diff; j <= 1; j += diffx2) { + s += sWithRegion(d[i - 1], d[i], j, diff); + } + } + prev = d[i].x; + } + + return s; + }; + + + c3_chart_internal_fn.updateArea = function (durationForExit) { + var $$ = this, d3 = $$.d3; + $$.mainArea = $$.main.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area) + .data($$.lineData.bind($$)); + $$.mainArea.enter().append('path') + .attr("class", $$.classArea.bind($$)) + .style("fill", $$.color) + .style("opacity", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; }); + $$.mainArea + .style("opacity", $$.orgAreaOpacity); + $$.mainArea.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawArea = function (drawArea, withTransition) { + return [ + (withTransition ? this.mainArea.transition() : this.mainArea) + .attr("d", drawArea) + .style("fill", this.color) + .style("opacity", this.orgAreaOpacity) + ]; + }; + c3_chart_internal_fn.generateDrawArea = function (areaIndices, isSub) { + var $$ = this, config = $$.config, area = $$.d3.svg.area(), + getPoints = $$.generateGetAreaPoints(areaIndices, isSub), + yScaleGetter = isSub ? $$.getSubYScale : $$.getYScale, + xValue = function (d) { return (isSub ? $$.subxx : $$.xx).call($$, d); }, + value0 = function (d, i) { + return config.data_groups.length > 0 ? getPoints(d, i)[0][1] : yScaleGetter.call($$, d.id)($$.getAreaBaseValue(d.id)); + }, + value1 = function (d, i) { + return config.data_groups.length > 0 ? getPoints(d, i)[1][1] : yScaleGetter.call($$, d.id)(d.value); + }; + + area = config.axis_rotated ? area.x0(value0).x1(value1).y(xValue) : area.x(xValue).y0(value0).y1(value1); + if (!config.line_connectNull) { + area = area.defined(function (d) { return d.value !== null; }); + } + + return function (d) { + var values = config.line_connectNull ? $$.filterRemoveNull(d.values) : d.values, + x0 = 0, y0 = 0, path; + if ($$.isAreaType(d)) { + if ($$.isStepType(d)) { values = $$.convertValuesToStep(values); } + path = area.interpolate($$.getInterpolate(d))(values); + } else { + if (values[0]) { + x0 = $$.x(values[0].x); + y0 = $$.getYScale(d.id)(values[0].value); + } + path = config.axis_rotated ? "M " + y0 + " " + x0 : "M " + x0 + " " + y0; + } + return path ? path : "M 0 0"; + }; + }; + c3_chart_internal_fn.getAreaBaseValue = function () { + return 0; + }; + c3_chart_internal_fn.generateGetAreaPoints = function (areaIndices, isSub) { // partial duplication of generateGetBarPoints + var $$ = this, config = $$.config, + areaTargetsNum = areaIndices.__max__ + 1, + x = $$.getShapeX(0, areaTargetsNum, areaIndices, !!isSub), + y = $$.getShapeY(!!isSub), + areaOffset = $$.getShapeOffset($$.isAreaType, areaIndices, !!isSub), + yScale = isSub ? $$.getSubYScale : $$.getYScale; + return function (d, i) { + var y0 = yScale.call($$, d.id)(0), + offset = areaOffset(d, i) || y0, // offset is for stacked area chart + posX = x(d), posY = y(d); + // fix posY not to overflow opposite quadrant + if (config.axis_rotated) { + if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; } + } + // 1 point that marks the area position + return [ + [posX, offset], + [posX, posY - (y0 - offset)], + [posX, posY - (y0 - offset)], // needed for compatibility + [posX, offset] // needed for compatibility + ]; + }; + }; + + + c3_chart_internal_fn.updateCircle = function () { + var $$ = this; + $$.mainCircle = $$.main.selectAll('.' + CLASS.circles).selectAll('.' + CLASS.circle) + .data($$.lineOrScatterData.bind($$)); + $$.mainCircle.enter().append("circle") + .attr("class", $$.classCircle.bind($$)) + .attr("r", $$.pointR.bind($$)) + .style("fill", $$.color); + $$.mainCircle + .style("opacity", $$.initialOpacityForCircle.bind($$)); + $$.mainCircle.exit().remove(); + }; + c3_chart_internal_fn.redrawCircle = function (cx, cy, withTransition) { + var selectedCircles = this.main.selectAll('.' + CLASS.selectedCircle); + return [ + (withTransition ? this.mainCircle.transition() : this.mainCircle) + .style('opacity', this.opacityForCircle.bind(this)) + .style("fill", this.color) + .attr("cx", cx) + .attr("cy", cy), + (withTransition ? selectedCircles.transition() : selectedCircles) + .attr("cx", cx) + .attr("cy", cy) + ]; + }; + c3_chart_internal_fn.circleX = function (d) { + return d.x || d.x === 0 ? this.x(d.x) : null; + }; + c3_chart_internal_fn.updateCircleY = function () { + var $$ = this, lineIndices, getPoints; + if ($$.config.data_groups.length > 0) { + lineIndices = $$.getShapeIndices($$.isLineType), + getPoints = $$.generateGetLinePoints(lineIndices); + $$.circleY = function (d, i) { + return getPoints(d, i)[0][1]; + }; + } else { + $$.circleY = function (d) { + return $$.getYScale(d.id)(d.value); + }; + } + }; + c3_chart_internal_fn.getCircles = function (i, id) { + var $$ = this; + return (id ? $$.main.selectAll('.' + CLASS.circles + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.circle + (isValue(i) ? '-' + i : '')); + }; + c3_chart_internal_fn.expandCircles = function (i, id, reset) { + var $$ = this, + r = $$.pointExpandedR.bind($$); + if (reset) { $$.unexpandCircles(); } + $$.getCircles(i, id) + .classed(CLASS.EXPANDED, true) + .attr('r', r); + }; + c3_chart_internal_fn.unexpandCircles = function (i) { + var $$ = this, + r = $$.pointR.bind($$); + $$.getCircles(i) + .filter(function () { return $$.d3.select(this).classed(CLASS.EXPANDED); }) + .classed(CLASS.EXPANDED, false) + .attr('r', r); + }; + c3_chart_internal_fn.pointR = function (d) { + var $$ = this, config = $$.config; + return $$.isStepType(d) ? 0 : (isFunction(config.point_r) ? config.point_r(d) : config.point_r); + }; + c3_chart_internal_fn.pointExpandedR = function (d) { + var $$ = this, config = $$.config; + return config.point_focus_expand_enabled ? (config.point_focus_expand_r ? config.point_focus_expand_r : $$.pointR(d) * 1.75) : $$.pointR(d); + }; + c3_chart_internal_fn.pointSelectR = function (d) { + var $$ = this, config = $$.config; + return config.point_select_r ? config.point_select_r : $$.pointR(d) * 4; + }; + c3_chart_internal_fn.isWithinCircle = function (that, r) { + var d3 = this.d3, + mouse = d3.mouse(that), d3_this = d3.select(that), + cx = +d3_this.attr("cx"), cy = +d3_this.attr("cy"); + return Math.sqrt(Math.pow(cx - mouse[0], 2) + Math.pow(cy - mouse[1], 2)) < r; + }; + c3_chart_internal_fn.isWithinStep = function (that, y) { + return Math.abs(y - this.d3.mouse(that)[1]) < 30; + }; + + c3_chart_internal_fn.initBar = function () { + var $$ = this; + $$.main.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartBars); + }; + c3_chart_internal_fn.updateTargetsForBar = function (targets) { + var $$ = this, config = $$.config, + mainBarUpdate, mainBarEnter, + classChartBar = $$.classChartBar.bind($$), + classBars = $$.classBars.bind($$), + classFocus = $$.classFocus.bind($$); + mainBarUpdate = $$.main.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar) + .data(targets) + .attr('class', function (d) { return classChartBar(d) + classFocus(d); }); + mainBarEnter = mainBarUpdate.enter().append('g') + .attr('class', classChartBar) + .style('opacity', 0) + .style("pointer-events", "none"); + // Bars for each data + mainBarEnter.append('g') + .attr("class", classBars) + .style("cursor", function (d) { return config.data_selection_isselectable(d) ? "pointer" : null; }); + + }; + c3_chart_internal_fn.updateBar = function (durationForExit) { + var $$ = this, + barData = $$.barData.bind($$), + classBar = $$.classBar.bind($$), + initialOpacity = $$.initialOpacity.bind($$), + color = function (d) { return $$.color(d.id); }; + $$.mainBar = $$.main.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar) + .data(barData); + $$.mainBar.enter().append('path') + .attr("class", classBar) + .style("stroke", color) + .style("fill", color); + $$.mainBar + .style("opacity", initialOpacity); + $$.mainBar.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawBar = function (drawBar, withTransition) { + return [ + (withTransition ? this.mainBar.transition() : this.mainBar) + .attr('d', drawBar) + .style("fill", this.color) + .style("opacity", 1) + ]; + }; + c3_chart_internal_fn.getBarW = function (axis, barTargetsNum) { + var $$ = this, config = $$.config, + w = typeof config.bar_width === 'number' ? config.bar_width : barTargetsNum ? (axis.tickInterval() * config.bar_width_ratio) / barTargetsNum : 0; + return config.bar_width_max && w > config.bar_width_max ? config.bar_width_max : w; + }; + c3_chart_internal_fn.getBars = function (i, id) { + var $$ = this; + return (id ? $$.main.selectAll('.' + CLASS.bars + $$.getTargetSelectorSuffix(id)) : $$.main).selectAll('.' + CLASS.bar + (isValue(i) ? '-' + i : '')); + }; + c3_chart_internal_fn.expandBars = function (i, id, reset) { + var $$ = this; + if (reset) { $$.unexpandBars(); } + $$.getBars(i, id).classed(CLASS.EXPANDED, true); + }; + c3_chart_internal_fn.unexpandBars = function (i) { + var $$ = this; + $$.getBars(i).classed(CLASS.EXPANDED, false); + }; + c3_chart_internal_fn.generateDrawBar = function (barIndices, isSub) { + var $$ = this, config = $$.config, + getPoints = $$.generateGetBarPoints(barIndices, isSub); + return function (d, i) { + // 4 points that make a bar + var points = getPoints(d, i); + + // switch points if axis is rotated, not applicable for sub chart + var indexX = config.axis_rotated ? 1 : 0; + var indexY = config.axis_rotated ? 0 : 1; + + var path = 'M ' + points[0][indexX] + ',' + points[0][indexY] + ' ' + + 'L' + points[1][indexX] + ',' + points[1][indexY] + ' ' + + 'L' + points[2][indexX] + ',' + points[2][indexY] + ' ' + + 'L' + points[3][indexX] + ',' + points[3][indexY] + ' ' + + 'z'; + + return path; + }; + }; + c3_chart_internal_fn.generateGetBarPoints = function (barIndices, isSub) { + var $$ = this, + axis = isSub ? $$.subXAxis : $$.xAxis, + barTargetsNum = barIndices.__max__ + 1, + barW = $$.getBarW(axis, barTargetsNum), + barX = $$.getShapeX(barW, barTargetsNum, barIndices, !!isSub), + barY = $$.getShapeY(!!isSub), + barOffset = $$.getShapeOffset($$.isBarType, barIndices, !!isSub), + yScale = isSub ? $$.getSubYScale : $$.getYScale; + return function (d, i) { + var y0 = yScale.call($$, d.id)(0), + offset = barOffset(d, i) || y0, // offset is for stacked bar chart + posX = barX(d), posY = barY(d); + // fix posY not to overflow opposite quadrant + if ($$.config.axis_rotated) { + if ((0 < d.value && posY < y0) || (d.value < 0 && y0 < posY)) { posY = y0; } + } + // 4 points that make a bar + return [ + [posX, offset], + [posX, posY - (y0 - offset)], + [posX + barW, posY - (y0 - offset)], + [posX + barW, offset] + ]; + }; + }; + c3_chart_internal_fn.isWithinBar = function (that) { + var mouse = this.d3.mouse(that), box = that.getBoundingClientRect(), + seg0 = that.pathSegList.getItem(0), seg1 = that.pathSegList.getItem(1), + x = Math.min(seg0.x, seg1.x), y = Math.min(seg0.y, seg1.y), + w = box.width, h = box.height, offset = 2, + sx = x - offset, ex = x + w + offset, sy = y + h + offset, ey = y - offset; + return sx < mouse[0] && mouse[0] < ex && ey < mouse[1] && mouse[1] < sy; + }; + + c3_chart_internal_fn.initText = function () { + var $$ = this; + $$.main.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartTexts); + $$.mainText = $$.d3.selectAll([]); + }; + c3_chart_internal_fn.updateTargetsForText = function (targets) { + var $$ = this, mainTextUpdate, mainTextEnter, + classChartText = $$.classChartText.bind($$), + classTexts = $$.classTexts.bind($$), + classFocus = $$.classFocus.bind($$); + mainTextUpdate = $$.main.select('.' + CLASS.chartTexts).selectAll('.' + CLASS.chartText) + .data(targets) + .attr('class', function (d) { return classChartText(d) + classFocus(d); }); + mainTextEnter = mainTextUpdate.enter().append('g') + .attr('class', classChartText) + .style('opacity', 0) + .style("pointer-events", "none"); + mainTextEnter.append('g') + .attr('class', classTexts); + }; + c3_chart_internal_fn.updateText = function (durationForExit) { + var $$ = this, config = $$.config, + barOrLineData = $$.barOrLineData.bind($$), + classText = $$.classText.bind($$); + $$.mainText = $$.main.selectAll('.' + CLASS.texts).selectAll('.' + CLASS.text) + .data(barOrLineData); + $$.mainText.enter().append('text') + .attr("class", classText) + .attr('text-anchor', function (d) { return config.axis_rotated ? (d.value < 0 ? 'end' : 'start') : 'middle'; }) + .style("stroke", 'none') + .style("fill", function (d) { return $$.color(d); }) + .style("fill-opacity", 0); + $$.mainText + .text(function (d, i, j) { return $$.dataLabelFormat(d.id)(d.value, d.id, i, j); }); + $$.mainText.exit() + .transition().duration(durationForExit) + .style('fill-opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawText = function (xForText, yForText, forFlow, withTransition) { + return [ + (withTransition ? this.mainText.transition() : this.mainText) + .attr('x', xForText) + .attr('y', yForText) + .style("fill", this.color) + .style("fill-opacity", forFlow ? 0 : this.opacityForText.bind(this)) + ]; + }; + c3_chart_internal_fn.getTextRect = function (text, cls) { + var dummy = this.d3.select('body').append('div').classed('c3', true), + svg = dummy.append("svg").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), + rect; + svg.selectAll('.dummy') + .data([text]) + .enter().append('text') + .classed(cls ? cls : "", true) + .text(text) + .each(function () { rect = this.getBoundingClientRect(); }); + dummy.remove(); + return rect; + }; + c3_chart_internal_fn.generateXYForText = function (areaIndices, barIndices, lineIndices, forX) { + var $$ = this, + getAreaPoints = $$.generateGetAreaPoints(areaIndices, false), + getBarPoints = $$.generateGetBarPoints(barIndices, false), + getLinePoints = $$.generateGetLinePoints(lineIndices, false), + getter = forX ? $$.getXForText : $$.getYForText; + return function (d, i) { + var getPoints = $$.isAreaType(d) ? getAreaPoints : $$.isBarType(d) ? getBarPoints : getLinePoints; + return getter.call($$, getPoints(d, i), d, this); + }; + }; + c3_chart_internal_fn.getXForText = function (points, d, textElement) { + var $$ = this, + box = textElement.getBoundingClientRect(), xPos, padding; + if ($$.config.axis_rotated) { + padding = $$.isBarType(d) ? 4 : 6; + xPos = points[2][1] + padding * (d.value < 0 ? -1 : 1); + } else { + xPos = $$.hasType('bar') ? (points[2][0] + points[0][0]) / 2 : points[0][0]; + } + // show labels regardless of the domain if value is null + if (d.value === null) { + if (xPos > $$.width) { + xPos = $$.width - box.width; + } else if (xPos < 0) { + xPos = 4; + } + } + return xPos; + }; + c3_chart_internal_fn.getYForText = function (points, d, textElement) { + var $$ = this, + box = textElement.getBoundingClientRect(), + yPos; + if ($$.config.axis_rotated) { + yPos = (points[0][0] + points[2][0] + box.height * 0.6) / 2; + } else { + yPos = points[2][1]; + if (d.value < 0) { + yPos += box.height; + if ($$.isBarType(d) && $$.isSafari()) { + yPos -= 3; + } + else if (!$$.isBarType(d) && $$.isChrome()) { + yPos += 3; + } + } else { + yPos += $$.isBarType(d) ? -3 : -6; + } + } + // show labels regardless of the domain if value is null + if (d.value === null && !$$.config.axis_rotated) { + if (yPos < box.height) { + yPos = box.height; + } else if (yPos > this.height) { + yPos = this.height - 4; + } + } + return yPos; + }; + + c3_chart_internal_fn.setTargetType = function (targetIds, type) { + var $$ = this, config = $$.config; + $$.mapToTargetIds(targetIds).forEach(function (id) { + $$.withoutFadeIn[id] = (type === config.data_types[id]); + config.data_types[id] = type; + }); + if (!targetIds) { + config.data_type = type; + } + }; + c3_chart_internal_fn.hasType = function (type, targets) { + var $$ = this, types = $$.config.data_types, has = false; + targets = targets || $$.data.targets; + if (targets && targets.length) { + targets.forEach(function (target) { + var t = types[target.id]; + if ((t && t.indexOf(type) >= 0) || (!t && type === 'line')) { + has = true; + } + }); + } else if (Object.keys(types).length) { + Object.keys(types).forEach(function (id) { + if (types[id] === type) { has = true; } + }); + } else { + has = $$.config.data_type === type; + } + return has; + }; + c3_chart_internal_fn.hasArcType = function (targets) { + return this.hasType('pie', targets) || this.hasType('donut', targets) || this.hasType('gauge', targets); + }; + c3_chart_internal_fn.isLineType = function (d) { + var config = this.config, id = isString(d) ? d : d.id; + return !config.data_types[id] || ['line', 'spline', 'area', 'area-spline', 'step', 'area-step'].indexOf(config.data_types[id]) >= 0; + }; + c3_chart_internal_fn.isStepType = function (d) { + var id = isString(d) ? d : d.id; + return ['step', 'area-step'].indexOf(this.config.data_types[id]) >= 0; + }; + c3_chart_internal_fn.isSplineType = function (d) { + var id = isString(d) ? d : d.id; + return ['spline', 'area-spline'].indexOf(this.config.data_types[id]) >= 0; + }; + c3_chart_internal_fn.isAreaType = function (d) { + var id = isString(d) ? d : d.id; + return ['area', 'area-spline', 'area-step'].indexOf(this.config.data_types[id]) >= 0; + }; + c3_chart_internal_fn.isBarType = function (d) { + var id = isString(d) ? d : d.id; + return this.config.data_types[id] === 'bar'; + }; + c3_chart_internal_fn.isScatterType = function (d) { + var id = isString(d) ? d : d.id; + return this.config.data_types[id] === 'scatter'; + }; + c3_chart_internal_fn.isPieType = function (d) { + var id = isString(d) ? d : d.id; + return this.config.data_types[id] === 'pie'; + }; + c3_chart_internal_fn.isGaugeType = function (d) { + var id = isString(d) ? d : d.id; + return this.config.data_types[id] === 'gauge'; + }; + c3_chart_internal_fn.isDonutType = function (d) { + var id = isString(d) ? d : d.id; + return this.config.data_types[id] === 'donut'; + }; + c3_chart_internal_fn.isArcType = function (d) { + return this.isPieType(d) || this.isDonutType(d) || this.isGaugeType(d); + }; + c3_chart_internal_fn.lineData = function (d) { + return this.isLineType(d) ? [d] : []; + }; + c3_chart_internal_fn.arcData = function (d) { + return this.isArcType(d.data) ? [d] : []; + }; + /* not used + function scatterData(d) { + return isScatterType(d) ? d.values : []; + } + */ + c3_chart_internal_fn.barData = function (d) { + return this.isBarType(d) ? d.values : []; + }; + c3_chart_internal_fn.lineOrScatterData = function (d) { + return this.isLineType(d) || this.isScatterType(d) ? d.values : []; + }; + c3_chart_internal_fn.barOrLineData = function (d) { + return this.isBarType(d) || this.isLineType(d) ? d.values : []; + }; + + c3_chart_internal_fn.initGrid = function () { + var $$ = this, config = $$.config, d3 = $$.d3; + $$.grid = $$.main.append('g') + .attr("clip-path", $$.clipPathForGrid) + .attr('class', CLASS.grid); + if (config.grid_x_show) { + $$.grid.append("g").attr("class", CLASS.xgrids); + } + if (config.grid_y_show) { + $$.grid.append('g').attr('class', CLASS.ygrids); + } + if (config.grid_focus_show) { + $$.grid.append('g') + .attr("class", CLASS.xgridFocus) + .append('line') + .attr('class', CLASS.xgridFocus); + } + $$.xgrid = d3.selectAll([]); + if (!config.grid_lines_front) { $$.initGridLines(); } + }; + c3_chart_internal_fn.initGridLines = function () { + var $$ = this, d3 = $$.d3; + $$.gridLines = $$.main.append('g') + .attr("clip-path", $$.clipPathForGrid) + .attr('class', CLASS.grid + ' ' + CLASS.gridLines); + $$.gridLines.append('g').attr("class", CLASS.xgridLines); + $$.gridLines.append('g').attr('class', CLASS.ygridLines); + $$.xgridLines = d3.selectAll([]); + }; + c3_chart_internal_fn.updateXGrid = function (withoutUpdate) { + var $$ = this, config = $$.config, d3 = $$.d3, + xgridData = $$.generateGridData(config.grid_x_type, $$.x), + tickOffset = $$.isCategorized() ? $$.xAxis.tickOffset() : 0; + + $$.xgridAttr = config.axis_rotated ? { + 'x1': 0, + 'x2': $$.width, + 'y1': function (d) { return $$.x(d) - tickOffset; }, + 'y2': function (d) { return $$.x(d) - tickOffset; } + } : { + 'x1': function (d) { return $$.x(d) + tickOffset; }, + 'x2': function (d) { return $$.x(d) + tickOffset; }, + 'y1': 0, + 'y2': $$.height + }; + + $$.xgrid = $$.main.select('.' + CLASS.xgrids).selectAll('.' + CLASS.xgrid) + .data(xgridData); + $$.xgrid.enter().append('line').attr("class", CLASS.xgrid); + if (!withoutUpdate) { + $$.xgrid.attr($$.xgridAttr) + .style("opacity", function () { return +d3.select(this).attr(config.axis_rotated ? 'y1' : 'x1') === (config.axis_rotated ? $$.height : 0) ? 0 : 1; }); + } + $$.xgrid.exit().remove(); + }; + + c3_chart_internal_fn.updateYGrid = function () { + var $$ = this, config = $$.config, + gridValues = $$.yAxis.tickValues() || $$.y.ticks(config.grid_y_ticks); + $$.ygrid = $$.main.select('.' + CLASS.ygrids).selectAll('.' + CLASS.ygrid) + .data(gridValues); + $$.ygrid.enter().append('line') + .attr('class', CLASS.ygrid); + $$.ygrid.attr("x1", config.axis_rotated ? $$.y : 0) + .attr("x2", config.axis_rotated ? $$.y : $$.width) + .attr("y1", config.axis_rotated ? 0 : $$.y) + .attr("y2", config.axis_rotated ? $$.height : $$.y); + $$.ygrid.exit().remove(); + $$.smoothLines($$.ygrid, 'grid'); + }; + + c3_chart_internal_fn.gridTextAnchor = function (d) { + return d.position ? d.position : "end"; + }; + c3_chart_internal_fn.gridTextDx = function (d) { + return d.position === 'start' ? 4 : d.position === 'middle' ? 0 : -4; + }; + c3_chart_internal_fn.xGridTextX = function (d) { + return d.position === 'start' ? -this.height : d.position === 'middle' ? -this.height / 2 : 0; + }; + c3_chart_internal_fn.yGridTextX = function (d) { + return d.position === 'start' ? 0 : d.position === 'middle' ? this.width / 2 : this.width; + }; + c3_chart_internal_fn.updateGrid = function (duration) { + var $$ = this, main = $$.main, config = $$.config, + xgridLine, ygridLine, yv; + + // hide if arc type + $$.grid.style('visibility', $$.hasArcType() ? 'hidden' : 'visible'); + + main.select('line.' + CLASS.xgridFocus).style("visibility", "hidden"); + if (config.grid_x_show) { + $$.updateXGrid(); + } + $$.xgridLines = main.select('.' + CLASS.xgridLines).selectAll('.' + CLASS.xgridLine) + .data(config.grid_x_lines); + // enter + xgridLine = $$.xgridLines.enter().append('g') + .attr("class", function (d) { return CLASS.xgridLine + (d['class'] ? ' ' + d['class'] : ''); }); + xgridLine.append('line') + .style("opacity", 0); + xgridLine.append('text') + .attr("text-anchor", $$.gridTextAnchor) + .attr("transform", config.axis_rotated ? "" : "rotate(-90)") + .attr('dx', $$.gridTextDx) + .attr('dy', -5) + .style("opacity", 0); + // udpate + // done in d3.transition() of the end of this function + // exit + $$.xgridLines.exit().transition().duration(duration) + .style("opacity", 0) + .remove(); + + // Y-Grid + if (config.grid_y_show) { + $$.updateYGrid(); + } + $$.ygridLines = main.select('.' + CLASS.ygridLines).selectAll('.' + CLASS.ygridLine) + .data(config.grid_y_lines); + // enter + ygridLine = $$.ygridLines.enter().append('g') + .attr("class", function (d) { return CLASS.ygridLine + (d['class'] ? ' ' + d['class'] : ''); }); + ygridLine.append('line') + .style("opacity", 0); + ygridLine.append('text') + .attr("text-anchor", $$.gridTextAnchor) + .attr("transform", config.axis_rotated ? "rotate(-90)" : "") + .attr('dx', $$.gridTextDx) + .attr('dy', -5) + .style("opacity", 0); + // update + yv = $$.yv.bind($$); + $$.ygridLines.select('line') + .transition().duration(duration) + .attr("x1", config.axis_rotated ? yv : 0) + .attr("x2", config.axis_rotated ? yv : $$.width) + .attr("y1", config.axis_rotated ? 0 : yv) + .attr("y2", config.axis_rotated ? $$.height : yv) + .style("opacity", 1); + $$.ygridLines.select('text') + .transition().duration(duration) + .attr("x", config.axis_rotated ? $$.xGridTextX.bind($$) : $$.yGridTextX.bind($$)) + .attr("y", yv) + .text(function (d) { return d.text; }) + .style("opacity", 1); + // exit + $$.ygridLines.exit().transition().duration(duration) + .style("opacity", 0) + .remove(); + }; + c3_chart_internal_fn.redrawGrid = function (withTransition) { + var $$ = this, config = $$.config, xv = $$.xv.bind($$), + lines = $$.xgridLines.select('line'), + texts = $$.xgridLines.select('text'); + return [ + (withTransition ? lines.transition() : lines) + .attr("x1", config.axis_rotated ? 0 : xv) + .attr("x2", config.axis_rotated ? $$.width : xv) + .attr("y1", config.axis_rotated ? xv : 0) + .attr("y2", config.axis_rotated ? xv : $$.height) + .style("opacity", 1), + (withTransition ? texts.transition() : texts) + .attr("x", config.axis_rotated ? $$.yGridTextX.bind($$) : $$.xGridTextX.bind($$)) + .attr("y", xv) + .text(function (d) { return d.text; }) + .style("opacity", 1) + ]; + }; + c3_chart_internal_fn.showXGridFocus = function (selectedData) { + var $$ = this, config = $$.config, + dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }), + focusEl = $$.main.selectAll('line.' + CLASS.xgridFocus), + xx = $$.xx.bind($$); + if (! config.tooltip_show) { return; } + // Hide when scatter plot exists + if ($$.hasType('scatter') || $$.hasArcType()) { return; } + focusEl + .style("visibility", "visible") + .data([dataToShow[0]]) + .attr(config.axis_rotated ? 'y1' : 'x1', xx) + .attr(config.axis_rotated ? 'y2' : 'x2', xx); + $$.smoothLines(focusEl, 'grid'); + }; + c3_chart_internal_fn.hideXGridFocus = function () { + this.main.select('line.' + CLASS.xgridFocus).style("visibility", "hidden"); + }; + c3_chart_internal_fn.updateXgridFocus = function () { + var $$ = this, config = $$.config; + $$.main.select('line.' + CLASS.xgridFocus) + .attr("x1", config.axis_rotated ? 0 : -10) + .attr("x2", config.axis_rotated ? $$.width : -10) + .attr("y1", config.axis_rotated ? -10 : 0) + .attr("y2", config.axis_rotated ? -10 : $$.height); + }; + c3_chart_internal_fn.generateGridData = function (type, scale) { + var $$ = this, + gridData = [], xDomain, firstYear, lastYear, i, + tickNum = $$.main.select("." + CLASS.axisX).selectAll('.tick').size(); + if (type === 'year') { + xDomain = $$.getXDomain(); + firstYear = xDomain[0].getFullYear(); + lastYear = xDomain[1].getFullYear(); + for (i = firstYear; i <= lastYear; i++) { + gridData.push(new Date(i + '-01-01 00:00:00')); + } + } else { + gridData = scale.ticks(10); + if (gridData.length > tickNum) { // use only int + gridData = gridData.filter(function (d) { return ("" + d).indexOf('.') < 0; }); + } + } + return gridData; + }; + c3_chart_internal_fn.getGridFilterToRemove = function (params) { + return params ? function (line) { + var found = false; + [].concat(params).forEach(function (param) { + if ((('value' in param && line.value === param.value) || ('class' in param && line['class'] === param['class']))) { + found = true; + } + }); + return found; + } : function () { return true; }; + }; + c3_chart_internal_fn.removeGridLines = function (params, forX) { + var $$ = this, config = $$.config, + toRemove = $$.getGridFilterToRemove(params), + toShow = function (line) { return !toRemove(line); }, + classLines = forX ? CLASS.xgridLines : CLASS.ygridLines, + classLine = forX ? CLASS.xgridLine : CLASS.ygridLine; + $$.main.select('.' + classLines).selectAll('.' + classLine).filter(toRemove) + .transition().duration(config.transition_duration) + .style('opacity', 0).remove(); + if (forX) { + config.grid_x_lines = config.grid_x_lines.filter(toShow); + } else { + config.grid_y_lines = config.grid_y_lines.filter(toShow); + } + }; + + c3_chart_internal_fn.initTooltip = function () { + var $$ = this, config = $$.config, i; + $$.tooltip = $$.selectChart + .style("position", "relative") + .append("div") + .attr('class', CLASS.tooltipContainer) + .style("position", "absolute") + .style("pointer-events", "none") + .style("display", "none"); + // Show tooltip if needed + if (config.tooltip_init_show) { + if ($$.isTimeSeries() && isString(config.tooltip_init_x)) { + config.tooltip_init_x = $$.parseDate(config.tooltip_init_x); + for (i = 0; i < $$.data.targets[0].values.length; i++) { + if (($$.data.targets[0].values[i].x - config.tooltip_init_x) === 0) { break; } + } + config.tooltip_init_x = i; + } + $$.tooltip.html(config.tooltip_contents.call($$, $$.data.targets.map(function (d) { + return $$.addName(d.values[config.tooltip_init_x]); + }), $$.axis.getXAxisTickFormat(), $$.getYFormat($$.hasArcType()), $$.color)); + $$.tooltip.style("top", config.tooltip_init_position.top) + .style("left", config.tooltip_init_position.left) + .style("display", "block"); + } + }; + c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaultValueFormat, color) { + var $$ = this, config = $$.config, + titleFormat = config.tooltip_format_title || defaultTitleFormat, + nameFormat = config.tooltip_format_name || function (name) { return name; }, + valueFormat = config.tooltip_format_value || defaultValueFormat, + text, i, title, value, name, bgcolor; + for (i = 0; i < d.length; i++) { + if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; } + + if (! text) { + title = titleFormat ? titleFormat(d[i].x) : d[i].x; + text = "<table class='" + CLASS.tooltip + "'>" + (title || title === 0 ? "<tr><th colspan='2'>" + title + "</th></tr>" : ""); + } + + value = valueFormat(d[i].value, d[i].ratio, d[i].id, d[i].index); + if (value !== undefined) { + name = nameFormat(d[i].name, d[i].ratio, d[i].id, d[i].index); + bgcolor = $$.levelColor ? $$.levelColor(d[i].value) : color(d[i].id); + + text += "<tr class='" + CLASS.tooltipName + "-" + d[i].id + "'>"; + text += "<td class='name'><span style='background-color:" + bgcolor + "'></span>" + name + "</td>"; + text += "<td class='value'>" + value + "</td>"; + text += "</tr>"; + } + } + return text + "</table>"; + }; + c3_chart_internal_fn.tooltipPosition = function (dataToShow, tWidth, tHeight, element) { + var $$ = this, config = $$.config, d3 = $$.d3; + var svgLeft, tooltipLeft, tooltipRight, tooltipTop, chartRight; + var forArc = $$.hasArcType(), + mouse = d3.mouse(element); + // Determin tooltip position + if (forArc) { + tooltipLeft = (($$.width - ($$.isLegendRight ? $$.getLegendWidth() : 0)) / 2) + mouse[0]; + tooltipTop = ($$.height / 2) + mouse[1] + 20; + } else { + svgLeft = $$.getSvgLeft(true); + if (config.axis_rotated) { + tooltipLeft = svgLeft + mouse[0] + 100; + tooltipRight = tooltipLeft + tWidth; + chartRight = $$.currentWidth - $$.getCurrentPaddingRight(); + tooltipTop = $$.x(dataToShow[0].x) + 20; + } else { + tooltipLeft = svgLeft + $$.getCurrentPaddingLeft(true) + $$.x(dataToShow[0].x) + 20; + tooltipRight = tooltipLeft + tWidth; + chartRight = svgLeft + $$.currentWidth - $$.getCurrentPaddingRight(); + tooltipTop = mouse[1] + 15; + } + + if (tooltipRight > chartRight) { + // 20 is needed for Firefox to keep tooletip width + tooltipLeft -= tooltipRight - chartRight + 20; + } + if (tooltipTop + tHeight > $$.currentHeight) { + tooltipTop -= tHeight + 30; + } + } + if (tooltipTop < 0) { + tooltipTop = 0; + } + return {top: tooltipTop, left: tooltipLeft}; + }; + c3_chart_internal_fn.showTooltip = function (selectedData, element) { + var $$ = this, config = $$.config; + var tWidth, tHeight, position; + var forArc = $$.hasArcType(), + dataToShow = selectedData.filter(function (d) { return d && isValue(d.value); }), + positionFunction = config.tooltip_position || c3_chart_internal_fn.tooltipPosition; + if (dataToShow.length === 0 || !config.tooltip_show) { + return; + } + $$.tooltip.html(config.tooltip_contents.call($$, selectedData, $$.axis.getXAxisTickFormat(), $$.getYFormat(forArc), $$.color)).style("display", "block"); + + // Get tooltip dimensions + tWidth = $$.tooltip.property('offsetWidth'); + tHeight = $$.tooltip.property('offsetHeight'); + + position = positionFunction.call(this, dataToShow, tWidth, tHeight, element); + // Set tooltip + $$.tooltip + .style("top", position.top + "px") + .style("left", position.left + 'px'); + }; + c3_chart_internal_fn.hideTooltip = function () { + this.tooltip.style("display", "none"); + }; + + c3_chart_internal_fn.initLegend = function () { + var $$ = this; + $$.legendItemTextBox = {}; + $$.legendHasRendered = false; + $$.legend = $$.svg.append("g").attr("transform", $$.getTranslate('legend')); + if (!$$.config.legend_show) { + $$.legend.style('visibility', 'hidden'); + $$.hiddenLegendIds = $$.mapToIds($$.data.targets); + return; + } + // MEMO: call here to update legend box and tranlate for all + // MEMO: translate will be upated by this, so transform not needed in updateLegend() + $$.updateLegendWithDefaults(); + }; + c3_chart_internal_fn.updateLegendWithDefaults = function () { + var $$ = this; + $$.updateLegend($$.mapToIds($$.data.targets), {withTransform: false, withTransitionForTransform: false, withTransition: false}); + }; + c3_chart_internal_fn.updateSizeForLegend = function (legendHeight, legendWidth) { + var $$ = this, config = $$.config, insetLegendPosition = { + top: $$.isLegendTop ? $$.getCurrentPaddingTop() + config.legend_inset_y + 5.5 : $$.currentHeight - legendHeight - $$.getCurrentPaddingBottom() - config.legend_inset_y, + left: $$.isLegendLeft ? $$.getCurrentPaddingLeft() + config.legend_inset_x + 0.5 : $$.currentWidth - legendWidth - $$.getCurrentPaddingRight() - config.legend_inset_x + 0.5 + }; + + $$.margin3 = { + top: $$.isLegendRight ? 0 : $$.isLegendInset ? insetLegendPosition.top : $$.currentHeight - legendHeight, + right: NaN, + bottom: 0, + left: $$.isLegendRight ? $$.currentWidth - legendWidth : $$.isLegendInset ? insetLegendPosition.left : 0 + }; + }; + c3_chart_internal_fn.transformLegend = function (withTransition) { + var $$ = this; + (withTransition ? $$.legend.transition() : $$.legend).attr("transform", $$.getTranslate('legend')); + }; + c3_chart_internal_fn.updateLegendStep = function (step) { + this.legendStep = step; + }; + c3_chart_internal_fn.updateLegendItemWidth = function (w) { + this.legendItemWidth = w; + }; + c3_chart_internal_fn.updateLegendItemHeight = function (h) { + this.legendItemHeight = h; + }; + c3_chart_internal_fn.getLegendWidth = function () { + var $$ = this; + return $$.config.legend_show ? $$.isLegendRight || $$.isLegendInset ? $$.legendItemWidth * ($$.legendStep + 1) : $$.currentWidth : 0; + }; + c3_chart_internal_fn.getLegendHeight = function () { + var $$ = this, h = 0; + if ($$.config.legend_show) { + if ($$.isLegendRight) { + h = $$.currentHeight; + } else { + h = Math.max(20, $$.legendItemHeight) * ($$.legendStep + 1); + } + } + return h; + }; + c3_chart_internal_fn.opacityForLegend = function (legendItem) { + return legendItem.classed(CLASS.legendItemHidden) ? null : 1; + }; + c3_chart_internal_fn.opacityForUnfocusedLegend = function (legendItem) { + return legendItem.classed(CLASS.legendItemHidden) ? null : 0.3; + }; + c3_chart_internal_fn.toggleFocusLegend = function (targetIds, focus) { + var $$ = this; + targetIds = $$.mapToTargetIds(targetIds); + $$.legend.selectAll('.' + CLASS.legendItem) + .filter(function (id) { return targetIds.indexOf(id) >= 0; }) + .classed(CLASS.legendItemFocused, focus) + .transition().duration(100) + .style('opacity', function () { + var opacity = focus ? $$.opacityForLegend : $$.opacityForUnfocusedLegend; + return opacity.call($$, $$.d3.select(this)); + }); + }; + c3_chart_internal_fn.revertLegend = function () { + var $$ = this, d3 = $$.d3; + $$.legend.selectAll('.' + CLASS.legendItem) + .classed(CLASS.legendItemFocused, false) + .transition().duration(100) + .style('opacity', function () { return $$.opacityForLegend(d3.select(this)); }); + }; + c3_chart_internal_fn.showLegend = function (targetIds) { + var $$ = this, config = $$.config; + if (!config.legend_show) { + config.legend_show = true; + $$.legend.style('visibility', 'visible'); + if (!$$.legendHasRendered) { + $$.updateLegendWithDefaults(); + } + } + $$.removeHiddenLegendIds(targetIds); + $$.legend.selectAll($$.selectorLegends(targetIds)) + .style('visibility', 'visible') + .transition() + .style('opacity', function () { return $$.opacityForLegend($$.d3.select(this)); }); + }; + c3_chart_internal_fn.hideLegend = function (targetIds) { + var $$ = this, config = $$.config; + if (config.legend_show && isEmpty(targetIds)) { + config.legend_show = false; + $$.legend.style('visibility', 'hidden'); + } + $$.addHiddenLegendIds(targetIds); + $$.legend.selectAll($$.selectorLegends(targetIds)) + .style('opacity', 0) + .style('visibility', 'hidden'); + }; + c3_chart_internal_fn.clearLegendItemTextBoxCache = function () { + this.legendItemTextBox = {}; + }; + c3_chart_internal_fn.updateLegend = function (targetIds, options, transitions) { + var $$ = this, config = $$.config; + var xForLegend, xForLegendText, xForLegendRect, yForLegend, yForLegendText, yForLegendRect; + var paddingTop = 4, paddingRight = 10, maxWidth = 0, maxHeight = 0, posMin = 10, tileWidth = 15; + var l, totalLength = 0, offsets = {}, widths = {}, heights = {}, margins = [0], steps = {}, step = 0; + var withTransition, withTransitionForTransform; + var texts, rects, tiles, background; + + options = options || {}; + withTransition = getOption(options, "withTransition", true); + withTransitionForTransform = getOption(options, "withTransitionForTransform", true); + + function getTextBox(textElement, id) { + if (!$$.legendItemTextBox[id]) { + $$.legendItemTextBox[id] = $$.getTextRect(textElement.textContent, CLASS.legendItem); + } + return $$.legendItemTextBox[id]; + } + + function updatePositions(textElement, id, index) { + var reset = index === 0, isLast = index === targetIds.length - 1, + box = getTextBox(textElement, id), + itemWidth = box.width + tileWidth + (isLast && !($$.isLegendRight || $$.isLegendInset) ? 0 : paddingRight), + itemHeight = box.height + paddingTop, + itemLength = $$.isLegendRight || $$.isLegendInset ? itemHeight : itemWidth, + areaLength = $$.isLegendRight || $$.isLegendInset ? $$.getLegendHeight() : $$.getLegendWidth(), + margin, maxLength; + + // MEMO: care about condifion of step, totalLength + function updateValues(id, withoutStep) { + if (!withoutStep) { + margin = (areaLength - totalLength - itemLength) / 2; + if (margin < posMin) { + margin = (areaLength - itemLength) / 2; + totalLength = 0; + step++; + } + } + steps[id] = step; + margins[step] = $$.isLegendInset ? 10 : margin; + offsets[id] = totalLength; + totalLength += itemLength; + } + + if (reset) { + totalLength = 0; + step = 0; + maxWidth = 0; + maxHeight = 0; + } + + if (config.legend_show && !$$.isLegendToShow(id)) { + widths[id] = heights[id] = steps[id] = offsets[id] = 0; + return; + } + + widths[id] = itemWidth; + heights[id] = itemHeight; + + if (!maxWidth || itemWidth >= maxWidth) { maxWidth = itemWidth; } + if (!maxHeight || itemHeight >= maxHeight) { maxHeight = itemHeight; } + maxLength = $$.isLegendRight || $$.isLegendInset ? maxHeight : maxWidth; + + if (config.legend_equally) { + Object.keys(widths).forEach(function (id) { widths[id] = maxWidth; }); + Object.keys(heights).forEach(function (id) { heights[id] = maxHeight; }); + margin = (areaLength - maxLength * targetIds.length) / 2; + if (margin < posMin) { + totalLength = 0; + step = 0; + targetIds.forEach(function (id) { updateValues(id); }); + } + else { + updateValues(id, true); + } + } else { + updateValues(id); + } + } + + if ($$.isLegendInset) { + step = config.legend_inset_step ? config.legend_inset_step : targetIds.length; + $$.updateLegendStep(step); + } + + if ($$.isLegendRight) { + xForLegend = function (id) { return maxWidth * steps[id]; }; + yForLegend = function (id) { return margins[steps[id]] + offsets[id]; }; + } else if ($$.isLegendInset) { + xForLegend = function (id) { return maxWidth * steps[id] + 10; }; + yForLegend = function (id) { return margins[steps[id]] + offsets[id]; }; + } else { + xForLegend = function (id) { return margins[steps[id]] + offsets[id]; }; + yForLegend = function (id) { return maxHeight * steps[id]; }; + } + xForLegendText = function (id, i) { return xForLegend(id, i) + 14; }; + yForLegendText = function (id, i) { return yForLegend(id, i) + 9; }; + xForLegendRect = function (id, i) { return xForLegend(id, i); }; + yForLegendRect = function (id, i) { return yForLegend(id, i) - 5; }; + + // Define g for legend area + l = $$.legend.selectAll('.' + CLASS.legendItem) + .data(targetIds) + .enter().append('g') + .attr('class', function (id) { return $$.generateClass(CLASS.legendItem, id); }) + .style('visibility', function (id) { return $$.isLegendToShow(id) ? 'visible' : 'hidden'; }) + .style('cursor', 'pointer') + .on('click', function (id) { + if (config.legend_item_onclick) { + config.legend_item_onclick.call($$, id); + } else { + if ($$.d3.event.altKey) { + $$.api.hide(); + $$.api.show(id); + } else { + $$.api.toggle(id); + $$.isTargetToShow(id) ? $$.api.focus(id) : $$.api.revert(); + } + } + }) + .on('mouseover', function (id) { + $$.d3.select(this).classed(CLASS.legendItemFocused, true); + if (!$$.transiting && $$.isTargetToShow(id)) { + $$.api.focus(id); + } + if (config.legend_item_onmouseover) { + config.legend_item_onmouseover.call($$, id); + } + }) + .on('mouseout', function (id) { + $$.d3.select(this).classed(CLASS.legendItemFocused, false); + $$.api.revert(); + if (config.legend_item_onmouseout) { + config.legend_item_onmouseout.call($$, id); + } + }); + l.append('text') + .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) + .each(function (id, i) { updatePositions(this, id, i); }) + .style("pointer-events", "none") + .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200) + .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendText); + l.append('rect') + .attr("class", CLASS.legendItemEvent) + .style('fill-opacity', 0) + .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendRect : -200) + .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegendRect); + l.append('rect') + .attr("class", CLASS.legendItemTile) + .style("pointer-events", "none") + .style('fill', $$.color) + .attr('x', $$.isLegendRight || $$.isLegendInset ? xForLegendText : -200) + .attr('y', $$.isLegendRight || $$.isLegendInset ? -200 : yForLegend) + .attr('width', 10) + .attr('height', 10); + + // Set background for inset legend + background = $$.legend.select('.' + CLASS.legendBackground + ' rect'); + if ($$.isLegendInset && maxWidth > 0 && background.size() === 0) { + background = $$.legend.insert('g', '.' + CLASS.legendItem) + .attr("class", CLASS.legendBackground) + .append('rect'); + } + + texts = $$.legend.selectAll('text') + .data(targetIds) + .text(function (id) { return isDefined(config.data_names[id]) ? config.data_names[id] : id; }) // MEMO: needed for update + .each(function (id, i) { updatePositions(this, id, i); }); + (withTransition ? texts.transition() : texts) + .attr('x', xForLegendText) + .attr('y', yForLegendText); + + rects = $$.legend.selectAll('rect.' + CLASS.legendItemEvent) + .data(targetIds); + (withTransition ? rects.transition() : rects) + .attr('width', function (id) { return widths[id]; }) + .attr('height', function (id) { return heights[id]; }) + .attr('x', xForLegendRect) + .attr('y', yForLegendRect); + + tiles = $$.legend.selectAll('rect.' + CLASS.legendItemTile) + .data(targetIds); + (withTransition ? tiles.transition() : tiles) + .style('fill', $$.color) + .attr('x', xForLegend) + .attr('y', yForLegend); + + if (background) { + (withTransition ? background.transition() : background) + .attr('height', $$.getLegendHeight() - 12) + .attr('width', maxWidth * (step + 1) + 10); + } + + // toggle legend state + $$.legend.selectAll('.' + CLASS.legendItem) + .classed(CLASS.legendItemHidden, function (id) { return !$$.isTargetToShow(id); }); + + // Update all to reflect change of legend + $$.updateLegendItemWidth(maxWidth); + $$.updateLegendItemHeight(maxHeight); + $$.updateLegendStep(step); + // Update size and scale + $$.updateSizes(); + $$.updateScales(); + $$.updateSvgSize(); + // Update g positions + $$.transformAll(withTransitionForTransform, transitions); + $$.legendHasRendered = true; + }; + + function Axis(owner) { + API.call(this, owner); + } + + inherit(API, Axis); + + Axis.prototype.init = function init() { + + var $$ = this.owner, config = $$.config, main = $$.main; + $$.axes.x = main.append("g") + .attr("class", CLASS.axis + ' ' + CLASS.axisX) + .attr("clip-path", $$.clipPathForXAxis) + .attr("transform", $$.getTranslate('x')) + .style("visibility", config.axis_x_show ? 'visible' : 'hidden'); + $$.axes.x.append("text") + .attr("class", CLASS.axisXLabel) + .attr("transform", config.axis_rotated ? "rotate(-90)" : "") + .style("text-anchor", this.textAnchorForXAxisLabel.bind(this)); + $$.axes.y = main.append("g") + .attr("class", CLASS.axis + ' ' + CLASS.axisY) + .attr("clip-path", config.axis_y_inner ? "" : $$.clipPathForYAxis) + .attr("transform", $$.getTranslate('y')) + .style("visibility", config.axis_y_show ? 'visible' : 'hidden'); + $$.axes.y.append("text") + .attr("class", CLASS.axisYLabel) + .attr("transform", config.axis_rotated ? "" : "rotate(-90)") + .style("text-anchor", this.textAnchorForYAxisLabel.bind(this)); + + $$.axes.y2 = main.append("g") + .attr("class", CLASS.axis + ' ' + CLASS.axisY2) + // clip-path? + .attr("transform", $$.getTranslate('y2')) + .style("visibility", config.axis_y2_show ? 'visible' : 'hidden'); + $$.axes.y2.append("text") + .attr("class", CLASS.axisY2Label) + .attr("transform", config.axis_rotated ? "" : "rotate(-90)") + .style("text-anchor", this.textAnchorForY2AxisLabel.bind(this)); + }; + Axis.prototype.getXAxis = function getXAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition, withoutRotateTickText) { + var $$ = this.owner, config = $$.config, + axisParams = { + isCategory: $$.isCategorized(), + withOuterTick: withOuterTick, + tickMultiline: config.axis_x_tick_multiline, + tickWidth: config.axis_x_tick_width, + tickTextRotate: withoutRotateTickText ? 0 : config.axis_x_tick_rotate, + withoutTransition: withoutTransition, + }, + axis = c3_axis($$.d3, axisParams).scale(scale).orient(orient); + + if ($$.isTimeSeries() && tickValues) { + tickValues = tickValues.map(function (v) { return $$.parseDate(v); }); + } + + // Set tick + axis.tickFormat(tickFormat).tickValues(tickValues); + if ($$.isCategorized()) { + axis.tickCentered(config.axis_x_tick_centered); + if (isEmpty(config.axis_x_tick_culling)) { + config.axis_x_tick_culling = false; + } + } + + return axis; + }; + Axis.prototype.updateXAxisTickValues = function updateXAxisTickValues(targets, axis) { + var $$ = this.owner, config = $$.config, tickValues; + if (config.axis_x_tick_fit || config.axis_x_tick_count) { + tickValues = this.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries()); + } + if (axis) { + axis.tickValues(tickValues); + } else { + $$.xAxis.tickValues(tickValues); + $$.subXAxis.tickValues(tickValues); + } + return tickValues; + }; + Axis.prototype.getYAxis = function getYAxis(scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) { + var axisParams = { + withOuterTick: withOuterTick, + withoutTransition: withoutTransition, + }, + $$ = this.owner, + d3 = $$.d3, + config = $$.config, + axis = c3_axis(d3, axisParams).scale(scale).orient(orient).tickFormat(tickFormat); + if ($$.isTimeSeriesY()) { + axis.ticks(d3.time[config.axis_y_tick_time_value], config.axis_y_tick_time_interval); + } else { + axis.tickValues(tickValues); + } + return axis; + }; + Axis.prototype.getId = function getId(id) { + var config = this.owner.config; + return id in config.data_axes ? config.data_axes[id] : 'y'; + }; + Axis.prototype.getXAxisTickFormat = function getXAxisTickFormat() { + var $$ = this.owner, config = $$.config, + format = $$.isTimeSeries() ? $$.defaultAxisTimeFormat : $$.isCategorized() ? $$.categoryName : function (v) { return v < 0 ? v.toFixed(0) : v; }; + if (config.axis_x_tick_format) { + if (isFunction(config.axis_x_tick_format)) { + format = config.axis_x_tick_format; + } else if ($$.isTimeSeries()) { + format = function (date) { + return date ? $$.axisTimeFormat(config.axis_x_tick_format)(date) : ""; + }; + } + } + return isFunction(format) ? function (v) { return format.call($$, v); } : format; + }; + Axis.prototype.getTickValues = function getTickValues(tickValues, axis) { + return tickValues ? tickValues : axis ? axis.tickValues() : undefined; + }; + Axis.prototype.getXAxisTickValues = function getXAxisTickValues() { + return this.getTickValues(this.owner.config.axis_x_tick_values, this.owner.xAxis); + }; + Axis.prototype.getYAxisTickValues = function getYAxisTickValues() { + return this.getTickValues(this.owner.config.axis_y_tick_values, this.owner.yAxis); + }; + Axis.prototype.getY2AxisTickValues = function getY2AxisTickValues() { + return this.getTickValues(this.owner.config.axis_y2_tick_values, this.owner.y2Axis); + }; + Axis.prototype.getLabelOptionByAxisId = function getLabelOptionByAxisId(axisId) { + var $$ = this.owner, config = $$.config, option; + if (axisId === 'y') { + option = config.axis_y_label; + } else if (axisId === 'y2') { + option = config.axis_y2_label; + } else if (axisId === 'x') { + option = config.axis_x_label; + } + return option; + }; + Axis.prototype.getLabelText = function getLabelText(axisId) { + var option = this.getLabelOptionByAxisId(axisId); + return isString(option) ? option : option ? option.text : null; + }; + Axis.prototype.setLabelText = function setLabelText(axisId, text) { + var $$ = this.owner, config = $$.config, + option = this.getLabelOptionByAxisId(axisId); + if (isString(option)) { + if (axisId === 'y') { + config.axis_y_label = text; + } else if (axisId === 'y2') { + config.axis_y2_label = text; + } else if (axisId === 'x') { + config.axis_x_label = text; + } + } else if (option) { + option.text = text; + } + }; + Axis.prototype.getLabelPosition = function getLabelPosition(axisId, defaultPosition) { + var option = this.getLabelOptionByAxisId(axisId), + position = (option && typeof option === 'object' && option.position) ? option.position : defaultPosition; + return { + isInner: position.indexOf('inner') >= 0, + isOuter: position.indexOf('outer') >= 0, + isLeft: position.indexOf('left') >= 0, + isCenter: position.indexOf('center') >= 0, + isRight: position.indexOf('right') >= 0, + isTop: position.indexOf('top') >= 0, + isMiddle: position.indexOf('middle') >= 0, + isBottom: position.indexOf('bottom') >= 0 + }; + }; + Axis.prototype.getXAxisLabelPosition = function getXAxisLabelPosition() { + return this.getLabelPosition('x', this.owner.config.axis_rotated ? 'inner-top' : 'inner-right'); + }; + Axis.prototype.getYAxisLabelPosition = function getYAxisLabelPosition() { + return this.getLabelPosition('y', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top'); + }; + Axis.prototype.getY2AxisLabelPosition = function getY2AxisLabelPosition() { + return this.getLabelPosition('y2', this.owner.config.axis_rotated ? 'inner-right' : 'inner-top'); + }; + Axis.prototype.getLabelPositionById = function getLabelPositionById(id) { + return id === 'y2' ? this.getY2AxisLabelPosition() : id === 'y' ? this.getYAxisLabelPosition() : this.getXAxisLabelPosition(); + }; + Axis.prototype.textForXAxisLabel = function textForXAxisLabel() { + return this.getLabelText('x'); + }; + Axis.prototype.textForYAxisLabel = function textForYAxisLabel() { + return this.getLabelText('y'); + }; + Axis.prototype.textForY2AxisLabel = function textForY2AxisLabel() { + return this.getLabelText('y2'); + }; + Axis.prototype.xForAxisLabel = function xForAxisLabel(forHorizontal, position) { + var $$ = this.owner; + if (forHorizontal) { + return position.isLeft ? 0 : position.isCenter ? $$.width / 2 : $$.width; + } else { + return position.isBottom ? -$$.height : position.isMiddle ? -$$.height / 2 : 0; + } + }; + Axis.prototype.dxForAxisLabel = function dxForAxisLabel(forHorizontal, position) { + if (forHorizontal) { + return position.isLeft ? "0.5em" : position.isRight ? "-0.5em" : "0"; + } else { + return position.isTop ? "-0.5em" : position.isBottom ? "0.5em" : "0"; + } + }; + Axis.prototype.textAnchorForAxisLabel = function textAnchorForAxisLabel(forHorizontal, position) { + if (forHorizontal) { + return position.isLeft ? 'start' : position.isCenter ? 'middle' : 'end'; + } else { + return position.isBottom ? 'start' : position.isMiddle ? 'middle' : 'end'; + } + }; + Axis.prototype.xForXAxisLabel = function xForXAxisLabel() { + return this.xForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition()); + }; + Axis.prototype.xForYAxisLabel = function xForYAxisLabel() { + return this.xForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition()); + }; + Axis.prototype.xForY2AxisLabel = function xForY2AxisLabel() { + return this.xForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition()); + }; + Axis.prototype.dxForXAxisLabel = function dxForXAxisLabel() { + return this.dxForAxisLabel(!this.owner.config.axis_rotated, this.getXAxisLabelPosition()); + }; + Axis.prototype.dxForYAxisLabel = function dxForYAxisLabel() { + return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getYAxisLabelPosition()); + }; + Axis.prototype.dxForY2AxisLabel = function dxForY2AxisLabel() { + return this.dxForAxisLabel(this.owner.config.axis_rotated, this.getY2AxisLabelPosition()); + }; + Axis.prototype.dyForXAxisLabel = function dyForXAxisLabel() { + var $$ = this.owner, config = $$.config, + position = this.getXAxisLabelPosition(); + if (config.axis_rotated) { + return position.isInner ? "1.2em" : -25 - this.getMaxTickWidth('x'); + } else { + return position.isInner ? "-0.5em" : config.axis_x_height ? config.axis_x_height - 10 : "3em"; + } + }; + Axis.prototype.dyForYAxisLabel = function dyForYAxisLabel() { + var $$ = this.owner, + position = this.getYAxisLabelPosition(); + if ($$.config.axis_rotated) { + return position.isInner ? "-0.5em" : "3em"; + } else { + return position.isInner ? "1.2em" : -10 - ($$.config.axis_y_inner ? 0 : (this.getMaxTickWidth('y') + 10)); + } + }; + Axis.prototype.dyForY2AxisLabel = function dyForY2AxisLabel() { + var $$ = this.owner, + position = this.getY2AxisLabelPosition(); + if ($$.config.axis_rotated) { + return position.isInner ? "1.2em" : "-2.2em"; + } else { + return position.isInner ? "-0.5em" : 15 + ($$.config.axis_y2_inner ? 0 : (this.getMaxTickWidth('y2') + 15)); + } + }; + Axis.prototype.textAnchorForXAxisLabel = function textAnchorForXAxisLabel() { + var $$ = this.owner; + return this.textAnchorForAxisLabel(!$$.config.axis_rotated, this.getXAxisLabelPosition()); + }; + Axis.prototype.textAnchorForYAxisLabel = function textAnchorForYAxisLabel() { + var $$ = this.owner; + return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getYAxisLabelPosition()); + }; + Axis.prototype.textAnchorForY2AxisLabel = function textAnchorForY2AxisLabel() { + var $$ = this.owner; + return this.textAnchorForAxisLabel($$.config.axis_rotated, this.getY2AxisLabelPosition()); + }; + Axis.prototype.getMaxTickWidth = function getMaxTickWidth(id, withoutRecompute) { + var $$ = this.owner, config = $$.config, + maxWidth = 0, targetsToShow, scale, axis, dummy, svg; + if (withoutRecompute && $$.currentMaxTickWidths[id]) { + return $$.currentMaxTickWidths[id]; + } + if ($$.svg) { + targetsToShow = $$.filterTargetsToShow($$.data.targets); + if (id === 'y') { + scale = $$.y.copy().domain($$.getYDomain(targetsToShow, 'y')); + axis = this.getYAxis(scale, $$.yOrient, config.axis_y_tick_format, $$.yAxisTickValues, false, true); + } else if (id === 'y2') { + scale = $$.y2.copy().domain($$.getYDomain(targetsToShow, 'y2')); + axis = this.getYAxis(scale, $$.y2Orient, config.axis_y2_tick_format, $$.y2AxisTickValues, false, true); + } else { + scale = $$.x.copy().domain($$.getXDomain(targetsToShow)); + axis = this.getXAxis(scale, $$.xOrient, $$.xAxisTickFormat, $$.xAxisTickValues, false, true, true); + this.updateXAxisTickValues(targetsToShow, axis); + } + dummy = $$.d3.select('body').append('div').classed('c3', true); + svg = dummy.append("svg").style('visibility', 'hidden').style('position', 'fixed').style('top', 0).style('left', 0), + svg.append('g').call(axis).each(function () { + $$.d3.select(this).selectAll('text').each(function () { + var box = this.getBoundingClientRect(); + if (maxWidth < box.width) { maxWidth = box.width; } + }); + dummy.remove(); + }); + } + $$.currentMaxTickWidths[id] = maxWidth <= 0 ? $$.currentMaxTickWidths[id] : maxWidth; + return $$.currentMaxTickWidths[id]; + }; + + Axis.prototype.updateLabels = function updateLabels(withTransition) { + var $$ = this.owner; + var axisXLabel = $$.main.select('.' + CLASS.axisX + ' .' + CLASS.axisXLabel), + axisYLabel = $$.main.select('.' + CLASS.axisY + ' .' + CLASS.axisYLabel), + axisY2Label = $$.main.select('.' + CLASS.axisY2 + ' .' + CLASS.axisY2Label); + (withTransition ? axisXLabel.transition() : axisXLabel) + .attr("x", this.xForXAxisLabel.bind(this)) + .attr("dx", this.dxForXAxisLabel.bind(this)) + .attr("dy", this.dyForXAxisLabel.bind(this)) + .text(this.textForXAxisLabel.bind(this)); + (withTransition ? axisYLabel.transition() : axisYLabel) + .attr("x", this.xForYAxisLabel.bind(this)) + .attr("dx", this.dxForYAxisLabel.bind(this)) + .attr("dy", this.dyForYAxisLabel.bind(this)) + .text(this.textForYAxisLabel.bind(this)); + (withTransition ? axisY2Label.transition() : axisY2Label) + .attr("x", this.xForY2AxisLabel.bind(this)) + .attr("dx", this.dxForY2AxisLabel.bind(this)) + .attr("dy", this.dyForY2AxisLabel.bind(this)) + .text(this.textForY2AxisLabel.bind(this)); + }; + Axis.prototype.getPadding = function getPadding(padding, key, defaultValue, domainLength) { + if (!isValue(padding[key])) { + return defaultValue; + } + if (padding.unit === 'ratio') { + return padding[key] * domainLength; + } + // assume padding is pixels if unit is not specified + return this.convertPixelsToAxisPadding(padding[key], domainLength); + }; + Axis.prototype.convertPixelsToAxisPadding = function convertPixelsToAxisPadding(pixels, domainLength) { + var $$ = this.owner, + length = $$.config.axis_rotated ? $$.width : $$.height; + return domainLength * (pixels / length); + }; + Axis.prototype.generateTickValues = function generateTickValues(values, tickCount, forTimeSeries) { + var tickValues = values, targetCount, start, end, count, interval, i, tickValue; + if (tickCount) { + targetCount = isFunction(tickCount) ? tickCount() : tickCount; + // compute ticks according to tickCount + if (targetCount === 1) { + tickValues = [values[0]]; + } else if (targetCount === 2) { + tickValues = [values[0], values[values.length - 1]]; + } else if (targetCount > 2) { + count = targetCount - 2; + start = values[0]; + end = values[values.length - 1]; + interval = (end - start) / (count + 1); + // re-construct unique values + tickValues = [start]; + for (i = 0; i < count; i++) { + tickValue = +start + interval * (i + 1); + tickValues.push(forTimeSeries ? new Date(tickValue) : tickValue); + } + tickValues.push(end); + } + } + if (!forTimeSeries) { tickValues = tickValues.sort(function (a, b) { return a - b; }); } + return tickValues; + }; + Axis.prototype.generateTransitions = function generateTransitions(duration) { + var $$ = this.owner, axes = $$.axes; + return { + axisX: duration ? axes.x.transition().duration(duration) : axes.x, + axisY: duration ? axes.y.transition().duration(duration) : axes.y, + axisY2: duration ? axes.y2.transition().duration(duration) : axes.y2, + axisSubX: duration ? axes.subx.transition().duration(duration) : axes.subx + }; + }; + Axis.prototype.redraw = function redraw(transitions, isHidden) { + var $$ = this.owner; + $$.axes.x.style("opacity", isHidden ? 0 : 1); + $$.axes.y.style("opacity", isHidden ? 0 : 1); + $$.axes.y2.style("opacity", isHidden ? 0 : 1); + $$.axes.subx.style("opacity", isHidden ? 0 : 1); + transitions.axisX.call($$.xAxis); + transitions.axisY.call($$.yAxis); + transitions.axisY2.call($$.y2Axis); + transitions.axisSubX.call($$.subXAxis); + }; + + c3_chart_internal_fn.getClipPath = function (id) { + var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0; + return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")"; + }; + c3_chart_internal_fn.appendClip = function (parent, id) { + return parent.append("clipPath").attr("id", id).append("rect"); + }; + c3_chart_internal_fn.getAxisClipX = function (forHorizontal) { + // axis line width + padding for left + var left = Math.max(30, this.margin.left); + return forHorizontal ? -(1 + left) : -(left - 1); + }; + c3_chart_internal_fn.getAxisClipY = function (forHorizontal) { + return forHorizontal ? -20 : -this.margin.top; + }; + c3_chart_internal_fn.getXAxisClipX = function () { + var $$ = this; + return $$.getAxisClipX(!$$.config.axis_rotated); + }; + c3_chart_internal_fn.getXAxisClipY = function () { + var $$ = this; + return $$.getAxisClipY(!$$.config.axis_rotated); + }; + c3_chart_internal_fn.getYAxisClipX = function () { + var $$ = this; + return $$.config.axis_y_inner ? -1 : $$.getAxisClipX($$.config.axis_rotated); + }; + c3_chart_internal_fn.getYAxisClipY = function () { + var $$ = this; + return $$.getAxisClipY($$.config.axis_rotated); + }; + c3_chart_internal_fn.getAxisClipWidth = function (forHorizontal) { + var $$ = this, + left = Math.max(30, $$.margin.left), + right = Math.max(30, $$.margin.right); + // width + axis line width + padding for left/right + return forHorizontal ? $$.width + 2 + left + right : $$.margin.left + 20; + }; + c3_chart_internal_fn.getAxisClipHeight = function (forHorizontal) { + // less than 20 is not enough to show the axis label 'outer' without legend + return (forHorizontal ? this.margin.bottom : (this.margin.top + this.height)) + 20; + }; + c3_chart_internal_fn.getXAxisClipWidth = function () { + var $$ = this; + return $$.getAxisClipWidth(!$$.config.axis_rotated); + }; + c3_chart_internal_fn.getXAxisClipHeight = function () { + var $$ = this; + return $$.getAxisClipHeight(!$$.config.axis_rotated); + }; + c3_chart_internal_fn.getYAxisClipWidth = function () { + var $$ = this; + return $$.getAxisClipWidth($$.config.axis_rotated) + ($$.config.axis_y_inner ? 20 : 0); + }; + c3_chart_internal_fn.getYAxisClipHeight = function () { + var $$ = this; + return $$.getAxisClipHeight($$.config.axis_rotated); + }; + + c3_chart_internal_fn.initPie = function () { + var $$ = this, d3 = $$.d3, config = $$.config; + $$.pie = d3.layout.pie().value(function (d) { + return d.values.reduce(function (a, b) { return a + b.value; }, 0); + }); + if (!config.data_order) { + $$.pie.sort(null); + } + }; + + c3_chart_internal_fn.updateRadius = function () { + var $$ = this, config = $$.config, + w = config.gauge_width || config.donut_width; + $$.radiusExpanded = Math.min($$.arcWidth, $$.arcHeight) / 2; + $$.radius = $$.radiusExpanded * 0.95; + $$.innerRadiusRatio = w ? ($$.radius - w) / $$.radius : 0.6; + $$.innerRadius = $$.hasType('donut') || $$.hasType('gauge') ? $$.radius * $$.innerRadiusRatio : 0; + }; + + c3_chart_internal_fn.updateArc = function () { + var $$ = this; + $$.svgArc = $$.getSvgArc(); + $$.svgArcExpanded = $$.getSvgArcExpanded(); + $$.svgArcExpandedSub = $$.getSvgArcExpanded(0.98); + }; + + c3_chart_internal_fn.updateAngle = function (d) { + var $$ = this, config = $$.config, + found = false, index = 0, + gMin = config.gauge_min, gMax = config.gauge_max, gTic, gValue; + $$.pie($$.filterTargetsToShow($$.data.targets)).forEach(function (t) { + if (! found && t.data.id === d.data.id) { + found = true; + d = t; + d.index = index; + } + index++; + }); + if (isNaN(d.startAngle)) { + d.startAngle = 0; + } + if (isNaN(d.endAngle)) { + d.endAngle = d.startAngle; + } + if ($$.isGaugeType(d.data)) { + gTic = (Math.PI) / (gMax - gMin); + gValue = d.value < gMin ? 0 : d.value < gMax ? d.value - gMin : (gMax - gMin); + d.startAngle = -1 * (Math.PI / 2); + d.endAngle = d.startAngle + gTic * gValue; + } + return found ? d : null; + }; + + c3_chart_internal_fn.getSvgArc = function () { + var $$ = this, + arc = $$.d3.svg.arc().outerRadius($$.radius).innerRadius($$.innerRadius), + newArc = function (d, withoutUpdate) { + var updated; + if (withoutUpdate) { return arc(d); } // for interpolate + updated = $$.updateAngle(d); + return updated ? arc(updated) : "M 0 0"; + }; + // TODO: extends all function + newArc.centroid = arc.centroid; + return newArc; + }; + + c3_chart_internal_fn.getSvgArcExpanded = function (rate) { + var $$ = this, + arc = $$.d3.svg.arc().outerRadius($$.radiusExpanded * (rate ? rate : 1)).innerRadius($$.innerRadius); + return function (d) { + var updated = $$.updateAngle(d); + return updated ? arc(updated) : "M 0 0"; + }; + }; + + c3_chart_internal_fn.getArc = function (d, withoutUpdate, force) { + return force || this.isArcType(d.data) ? this.svgArc(d, withoutUpdate) : "M 0 0"; + }; + + + c3_chart_internal_fn.transformForArcLabel = function (d) { + var $$ = this, + updated = $$.updateAngle(d), c, x, y, h, ratio, translate = ""; + if (updated && !$$.hasType('gauge')) { + c = this.svgArc.centroid(updated); + x = isNaN(c[0]) ? 0 : c[0]; + y = isNaN(c[1]) ? 0 : c[1]; + h = Math.sqrt(x * x + y * y); + // TODO: ratio should be an option? + ratio = $$.radius && h ? (36 / $$.radius > 0.375 ? 1.175 - 36 / $$.radius : 0.8) * $$.radius / h : 0; + translate = "translate(" + (x * ratio) + ',' + (y * ratio) + ")"; + } + return translate; + }; + + c3_chart_internal_fn.getArcRatio = function (d) { + var $$ = this, + whole = $$.hasType('gauge') ? Math.PI : (Math.PI * 2); + return d ? (d.endAngle - d.startAngle) / whole : null; + }; + + c3_chart_internal_fn.convertToArcData = function (d) { + return this.addName({ + id: d.data.id, + value: d.value, + ratio: this.getArcRatio(d), + index: d.index + }); + }; + + c3_chart_internal_fn.textForArcLabel = function (d) { + var $$ = this, + updated, value, ratio, id, format; + if (! $$.shouldShowArcLabel()) { return ""; } + updated = $$.updateAngle(d); + value = updated ? updated.value : null; + ratio = $$.getArcRatio(updated); + id = d.data.id; + if (! $$.hasType('gauge') && ! $$.meetsArcLabelThreshold(ratio)) { return ""; } + format = $$.getArcLabelFormat(); + return format ? format(value, ratio, id) : $$.defaultArcValueFormat(value, ratio); + }; + + c3_chart_internal_fn.expandArc = function (targetIds) { + var $$ = this, interval; + + // MEMO: avoid to cancel transition + if ($$.transiting) { + interval = window.setInterval(function () { + if (!$$.transiting) { + window.clearInterval(interval); + if ($$.legend.selectAll('.c3-legend-item-focused').size() > 0) { + $$.expandArc(targetIds); + } + } + }, 10); + return; + } + + targetIds = $$.mapToTargetIds(targetIds); + + $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).each(function (d) { + if (! $$.shouldExpand(d.data.id)) { return; } + $$.d3.select(this).selectAll('path') + .transition().duration(50) + .attr("d", $$.svgArcExpanded) + .transition().duration(100) + .attr("d", $$.svgArcExpandedSub) + .each(function (d) { + if ($$.isDonutType(d.data)) { + // callback here + } + }); + }); + }; + + c3_chart_internal_fn.unexpandArc = function (targetIds) { + var $$ = this; + + if ($$.transiting) { return; } + + targetIds = $$.mapToTargetIds(targetIds); + + $$.svg.selectAll($$.selectorTargets(targetIds, '.' + CLASS.chartArc)).selectAll('path') + .transition().duration(50) + .attr("d", $$.svgArc); + $$.svg.selectAll('.' + CLASS.arc) + .style("opacity", 1); + }; + + c3_chart_internal_fn.shouldExpand = function (id) { + var $$ = this, config = $$.config; + return ($$.isDonutType(id) && config.donut_expand) || ($$.isGaugeType(id) && config.gauge_expand) || ($$.isPieType(id) && config.pie_expand); + }; + + c3_chart_internal_fn.shouldShowArcLabel = function () { + var $$ = this, config = $$.config, shouldShow = true; + if ($$.hasType('donut')) { + shouldShow = config.donut_label_show; + } else if ($$.hasType('pie')) { + shouldShow = config.pie_label_show; + } + // when gauge, always true + return shouldShow; + }; + + c3_chart_internal_fn.meetsArcLabelThreshold = function (ratio) { + var $$ = this, config = $$.config, + threshold = $$.hasType('donut') ? config.donut_label_threshold : config.pie_label_threshold; + return ratio >= threshold; + }; + + c3_chart_internal_fn.getArcLabelFormat = function () { + var $$ = this, config = $$.config, + format = config.pie_label_format; + if ($$.hasType('gauge')) { + format = config.gauge_label_format; + } else if ($$.hasType('donut')) { + format = config.donut_label_format; + } + return format; + }; + + c3_chart_internal_fn.getArcTitle = function () { + var $$ = this; + return $$.hasType('donut') ? $$.config.donut_title : ""; + }; + + c3_chart_internal_fn.updateTargetsForArc = function (targets) { + var $$ = this, main = $$.main, + mainPieUpdate, mainPieEnter, + classChartArc = $$.classChartArc.bind($$), + classArcs = $$.classArcs.bind($$), + classFocus = $$.classFocus.bind($$); + mainPieUpdate = main.select('.' + CLASS.chartArcs).selectAll('.' + CLASS.chartArc) + .data($$.pie(targets)) + .attr("class", function (d) { return classChartArc(d) + classFocus(d.data); }); + mainPieEnter = mainPieUpdate.enter().append("g") + .attr("class", classChartArc); + mainPieEnter.append('g') + .attr('class', classArcs); + mainPieEnter.append("text") + .attr("dy", $$.hasType('gauge') ? "-.1em" : ".35em") + .style("opacity", 0) + .style("text-anchor", "middle") + .style("pointer-events", "none"); + // MEMO: can not keep same color..., but not bad to update color in redraw + //mainPieUpdate.exit().remove(); + }; + + c3_chart_internal_fn.initArc = function () { + var $$ = this; + $$.arcs = $$.main.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartArcs) + .attr("transform", $$.getTranslate('arc')); + $$.arcs.append('text') + .attr('class', CLASS.chartArcsTitle) + .style("text-anchor", "middle") + .text($$.getArcTitle()); + }; + + c3_chart_internal_fn.redrawArc = function (duration, durationForExit, withTransform) { + var $$ = this, d3 = $$.d3, config = $$.config, main = $$.main, + mainArc; + mainArc = main.selectAll('.' + CLASS.arcs).selectAll('.' + CLASS.arc) + .data($$.arcData.bind($$)); + mainArc.enter().append('path') + .attr("class", $$.classArc.bind($$)) + .style("fill", function (d) { return $$.color(d.data); }) + .style("cursor", function (d) { return config.interaction_enabled && config.data_selection_isselectable(d) ? "pointer" : null; }) + .style("opacity", 0) + .each(function (d) { + if ($$.isGaugeType(d.data)) { + d.startAngle = d.endAngle = -1 * (Math.PI / 2); + } + this._current = d; + }); + mainArc + .attr("transform", function (d) { return !$$.isGaugeType(d.data) && withTransform ? "scale(0)" : ""; }) + .style("opacity", function (d) { return d === this._current ? 0 : 1; }) + .on('mouseover', config.interaction_enabled ? function (d) { + var updated, arcData; + if ($$.transiting) { // skip while transiting + return; + } + updated = $$.updateAngle(d); + arcData = $$.convertToArcData(updated); + // transitions + $$.expandArc(updated.data.id); + $$.api.focus(updated.data.id); + $$.toggleFocusLegend(updated.data.id, true); + $$.config.data_onmouseover(arcData, this); + } : null) + .on('mousemove', config.interaction_enabled ? function (d) { + var updated = $$.updateAngle(d), + arcData = $$.convertToArcData(updated), + selectedData = [arcData]; + $$.showTooltip(selectedData, this); + } : null) + .on('mouseout', config.interaction_enabled ? function (d) { + var updated, arcData; + if ($$.transiting) { // skip while transiting + return; + } + updated = $$.updateAngle(d); + arcData = $$.convertToArcData(updated); + // transitions + $$.unexpandArc(updated.data.id); + $$.api.revert(); + $$.revertLegend(); + $$.hideTooltip(); + $$.config.data_onmouseout(arcData, this); + } : null) + .on('click', config.interaction_enabled ? function (d, i) { + var updated = $$.updateAngle(d), + arcData = $$.convertToArcData(updated); + if ($$.toggleShape) { $$.toggleShape(this, arcData, i); } + $$.config.data_onclick.call($$.api, arcData, this); + } : null) + .each(function () { $$.transiting = true; }) + .transition().duration(duration) + .attrTween("d", function (d) { + var updated = $$.updateAngle(d), interpolate; + if (! updated) { + return function () { return "M 0 0"; }; + } + // if (this._current === d) { + // this._current = { + // startAngle: Math.PI*2, + // endAngle: Math.PI*2, + // }; + // } + if (isNaN(this._current.startAngle)) { + this._current.startAngle = 0; + } + if (isNaN(this._current.endAngle)) { + this._current.endAngle = this._current.startAngle; + } + interpolate = d3.interpolate(this._current, updated); + this._current = interpolate(0); + return function (t) { + var interpolated = interpolate(t); + interpolated.data = d.data; // data.id will be updated by interporator + return $$.getArc(interpolated, true); + }; + }) + .attr("transform", withTransform ? "scale(1)" : "") + .style("fill", function (d) { + return $$.levelColor ? $$.levelColor(d.data.values[0].value) : $$.color(d.data.id); + }) // Where gauge reading color would receive customization. + .style("opacity", 1) + .call($$.endall, function () { + $$.transiting = false; + }); + mainArc.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + main.selectAll('.' + CLASS.chartArc).select('text') + .style("opacity", 0) + .attr('class', function (d) { return $$.isGaugeType(d.data) ? CLASS.gaugeValue : ''; }) + .text($$.textForArcLabel.bind($$)) + .attr("transform", $$.transformForArcLabel.bind($$)) + .style('font-size', function (d) { return $$.isGaugeType(d.data) ? Math.round($$.radius / 5) + 'px' : ''; }) + .transition().duration(duration) + .style("opacity", function (d) { return $$.isTargetToShow(d.data.id) && $$.isArcType(d.data) ? 1 : 0; }); + main.select('.' + CLASS.chartArcsTitle) + .style("opacity", $$.hasType('donut') || $$.hasType('gauge') ? 1 : 0); + + if ($$.hasType('gauge')) { + $$.arcs.select('.' + CLASS.chartArcsBackground) + .attr("d", function () { + var d = { + data: [{value: config.gauge_max}], + startAngle: -1 * (Math.PI / 2), + endAngle: Math.PI / 2 + }; + return $$.getArc(d, true, true); + }); + $$.arcs.select('.' + CLASS.chartArcsGaugeUnit) + .attr("dy", ".75em") + .text(config.gauge_label_show ? config.gauge_units : ''); + $$.arcs.select('.' + CLASS.chartArcsGaugeMin) + .attr("dx", -1 * ($$.innerRadius + (($$.radius - $$.innerRadius) / 2)) + "px") + .attr("dy", "1.2em") + .text(config.gauge_label_show ? config.gauge_min : ''); + $$.arcs.select('.' + CLASS.chartArcsGaugeMax) + .attr("dx", $$.innerRadius + (($$.radius - $$.innerRadius) / 2) + "px") + .attr("dy", "1.2em") + .text(config.gauge_label_show ? config.gauge_max : ''); + } + }; + c3_chart_internal_fn.initGauge = function () { + var arcs = this.arcs; + if (this.hasType('gauge')) { + arcs.append('path') + .attr("class", CLASS.chartArcsBackground); + arcs.append("text") + .attr("class", CLASS.chartArcsGaugeUnit) + .style("text-anchor", "middle") + .style("pointer-events", "none"); + arcs.append("text") + .attr("class", CLASS.chartArcsGaugeMin) + .style("text-anchor", "middle") + .style("pointer-events", "none"); + arcs.append("text") + .attr("class", CLASS.chartArcsGaugeMax) + .style("text-anchor", "middle") + .style("pointer-events", "none"); + } + }; + c3_chart_internal_fn.getGaugeLabelHeight = function () { + return this.config.gauge_label_show ? 20 : 0; + }; + + c3_chart_internal_fn.initRegion = function () { + var $$ = this; + $$.region = $$.main.append('g') + .attr("clip-path", $$.clipPath) + .attr("class", CLASS.regions); + }; + c3_chart_internal_fn.updateRegion = function (duration) { + var $$ = this, config = $$.config; + + // hide if arc type + $$.region.style('visibility', $$.hasArcType() ? 'hidden' : 'visible'); + + $$.mainRegion = $$.main.select('.' + CLASS.regions).selectAll('.' + CLASS.region) + .data(config.regions); + $$.mainRegion.enter().append('g') + .attr('class', $$.classRegion.bind($$)) + .append('rect') + .style("fill-opacity", 0); + $$.mainRegion.exit().transition().duration(duration) + .style("opacity", 0) + .remove(); + }; + c3_chart_internal_fn.redrawRegion = function (withTransition) { + var $$ = this, + regions = $$.mainRegion.selectAll('rect'), + x = $$.regionX.bind($$), + y = $$.regionY.bind($$), + w = $$.regionWidth.bind($$), + h = $$.regionHeight.bind($$); + return [ + (withTransition ? regions.transition() : regions) + .attr("x", x) + .attr("y", y) + .attr("width", w) + .attr("height", h) + .style("fill-opacity", function (d) { return isValue(d.opacity) ? d.opacity : 0.1; }) + ]; + }; + c3_chart_internal_fn.regionX = function (d) { + var $$ = this, config = $$.config, + xPos, yScale = d.axis === 'y' ? $$.y : $$.y2; + if (d.axis === 'y' || d.axis === 'y2') { + xPos = config.axis_rotated ? ('start' in d ? yScale(d.start) : 0) : 0; + } else { + xPos = config.axis_rotated ? 0 : ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0); + } + return xPos; + }; + c3_chart_internal_fn.regionY = function (d) { + var $$ = this, config = $$.config, + yPos, yScale = d.axis === 'y' ? $$.y : $$.y2; + if (d.axis === 'y' || d.axis === 'y2') { + yPos = config.axis_rotated ? 0 : ('end' in d ? yScale(d.end) : 0); + } else { + yPos = config.axis_rotated ? ('start' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.start) : d.start) : 0) : 0; + } + return yPos; + }; + c3_chart_internal_fn.regionWidth = function (d) { + var $$ = this, config = $$.config, + start = $$.regionX(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2; + if (d.axis === 'y' || d.axis === 'y2') { + end = config.axis_rotated ? ('end' in d ? yScale(d.end) : $$.width) : $$.width; + } else { + end = config.axis_rotated ? $$.width : ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.width); + } + return end < start ? 0 : end - start; + }; + c3_chart_internal_fn.regionHeight = function (d) { + var $$ = this, config = $$.config, + start = this.regionY(d), end, yScale = d.axis === 'y' ? $$.y : $$.y2; + if (d.axis === 'y' || d.axis === 'y2') { + end = config.axis_rotated ? $$.height : ('start' in d ? yScale(d.start) : $$.height); + } else { + end = config.axis_rotated ? ('end' in d ? $$.x($$.isTimeSeries() ? $$.parseDate(d.end) : d.end) : $$.height) : $$.height; + } + return end < start ? 0 : end - start; + }; + c3_chart_internal_fn.isRegionOnX = function (d) { + return !d.axis || d.axis === 'x'; + }; + + c3_chart_internal_fn.drag = function (mouse) { + var $$ = this, config = $$.config, main = $$.main, d3 = $$.d3; + var sx, sy, mx, my, minX, maxX, minY, maxY; + + if ($$.hasArcType()) { return; } + if (! config.data_selection_enabled) { return; } // do nothing if not selectable + if (config.zoom_enabled && ! $$.zoom.altDomain) { return; } // skip if zoomable because of conflict drag dehavior + if (!config.data_selection_multiple) { return; } // skip when single selection because drag is used for multiple selection + + sx = $$.dragStart[0]; + sy = $$.dragStart[1]; + mx = mouse[0]; + my = mouse[1]; + minX = Math.min(sx, mx); + maxX = Math.max(sx, mx); + minY = (config.data_selection_grouped) ? $$.margin.top : Math.min(sy, my); + maxY = (config.data_selection_grouped) ? $$.height : Math.max(sy, my); + + main.select('.' + CLASS.dragarea) + .attr('x', minX) + .attr('y', minY) + .attr('width', maxX - minX) + .attr('height', maxY - minY); + // TODO: binary search when multiple xs + main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape) + .filter(function (d) { return config.data_selection_isselectable(d); }) + .each(function (d, i) { + var shape = d3.select(this), + isSelected = shape.classed(CLASS.SELECTED), + isIncluded = shape.classed(CLASS.INCLUDED), + _x, _y, _w, _h, toggle, isWithin = false, box; + if (shape.classed(CLASS.circle)) { + _x = shape.attr("cx") * 1; + _y = shape.attr("cy") * 1; + toggle = $$.togglePoint; + isWithin = minX < _x && _x < maxX && minY < _y && _y < maxY; + } + else if (shape.classed(CLASS.bar)) { + box = getPathBox(this); + _x = box.x; + _y = box.y; + _w = box.width; + _h = box.height; + toggle = $$.togglePath; + isWithin = !(maxX < _x || _x + _w < minX) && !(maxY < _y || _y + _h < minY); + } else { + // line/area selection not supported yet + return; + } + if (isWithin ^ isIncluded) { + shape.classed(CLASS.INCLUDED, !isIncluded); + // TODO: included/unincluded callback here + shape.classed(CLASS.SELECTED, !isSelected); + toggle.call($$, !isSelected, shape, d, i); + } + }); + }; + + c3_chart_internal_fn.dragstart = function (mouse) { + var $$ = this, config = $$.config; + if ($$.hasArcType()) { return; } + if (! config.data_selection_enabled) { return; } // do nothing if not selectable + $$.dragStart = mouse; + $$.main.select('.' + CLASS.chart).append('rect') + .attr('class', CLASS.dragarea) + .style('opacity', 0.1); + $$.dragging = true; + }; + + c3_chart_internal_fn.dragend = function () { + var $$ = this, config = $$.config; + if ($$.hasArcType()) { return; } + if (! config.data_selection_enabled) { return; } // do nothing if not selectable + $$.main.select('.' + CLASS.dragarea) + .transition().duration(100) + .style('opacity', 0) + .remove(); + $$.main.selectAll('.' + CLASS.shape) + .classed(CLASS.INCLUDED, false); + $$.dragging = false; + }; + + c3_chart_internal_fn.selectPoint = function (target, d, i) { + var $$ = this, config = $$.config, + cx = (config.axis_rotated ? $$.circleY : $$.circleX).bind($$), + cy = (config.axis_rotated ? $$.circleX : $$.circleY).bind($$), + r = $$.pointSelectR.bind($$); + config.data_onselected.call($$.api, d, target.node()); + // add selected-circle on low layer g + $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i) + .data([d]) + .enter().append('circle') + .attr("class", function () { return $$.generateClass(CLASS.selectedCircle, i); }) + .attr("cx", cx) + .attr("cy", cy) + .attr("stroke", function () { return $$.color(d); }) + .attr("r", function (d) { return $$.pointSelectR(d) * 1.4; }) + .transition().duration(100) + .attr("r", r); + }; + c3_chart_internal_fn.unselectPoint = function (target, d, i) { + var $$ = this; + $$.config.data_onunselected(d, target.node()); + // remove selected-circle from low layer g + $$.main.select('.' + CLASS.selectedCircles + $$.getTargetSelectorSuffix(d.id)).selectAll('.' + CLASS.selectedCircle + '-' + i) + .transition().duration(100).attr('r', 0) + .remove(); + }; + c3_chart_internal_fn.togglePoint = function (selected, target, d, i) { + selected ? this.selectPoint(target, d, i) : this.unselectPoint(target, d, i); + }; + c3_chart_internal_fn.selectPath = function (target, d) { + var $$ = this; + $$.config.data_onselected.call($$, d, target.node()); + target.transition().duration(100) + .style("fill", function () { return $$.d3.rgb($$.color(d)).brighter(0.75); }); + }; + c3_chart_internal_fn.unselectPath = function (target, d) { + var $$ = this; + $$.config.data_onunselected.call($$, d, target.node()); + target.transition().duration(100) + .style("fill", function () { return $$.color(d); }); + }; + c3_chart_internal_fn.togglePath = function (selected, target, d, i) { + selected ? this.selectPath(target, d, i) : this.unselectPath(target, d, i); + }; + c3_chart_internal_fn.getToggle = function (that, d) { + var $$ = this, toggle; + if (that.nodeName === 'circle') { + if ($$.isStepType(d)) { + // circle is hidden in step chart, so treat as within the click area + toggle = function () {}; // TODO: how to select step chart? + } else { + toggle = $$.togglePoint; + } + } + else if (that.nodeName === 'path') { + toggle = $$.togglePath; + } + return toggle; + }; + c3_chart_internal_fn.toggleShape = function (that, d, i) { + var $$ = this, d3 = $$.d3, config = $$.config, + shape = d3.select(that), isSelected = shape.classed(CLASS.SELECTED), + toggle = $$.getToggle(that, d).bind($$); + + if (config.data_selection_enabled && config.data_selection_isselectable(d)) { + if (!config.data_selection_multiple) { + $$.main.selectAll('.' + CLASS.shapes + (config.data_selection_grouped ? $$.getTargetSelectorSuffix(d.id) : "")).selectAll('.' + CLASS.shape).each(function (d, i) { + var shape = d3.select(this); + if (shape.classed(CLASS.SELECTED)) { toggle(false, shape.classed(CLASS.SELECTED, false), d, i); } + }); + } + shape.classed(CLASS.SELECTED, !isSelected); + toggle(!isSelected, shape, d, i); + } + }; + + c3_chart_internal_fn.initBrush = function () { + var $$ = this, d3 = $$.d3; + $$.brush = d3.svg.brush().on("brush", function () { $$.redrawForBrush(); }); + $$.brush.update = function () { + if ($$.context) { $$.context.select('.' + CLASS.brush).call(this); } + return this; + }; + $$.brush.scale = function (scale) { + return $$.config.axis_rotated ? this.y(scale) : this.x(scale); + }; + }; + c3_chart_internal_fn.initSubchart = function () { + var $$ = this, config = $$.config, + context = $$.context = $$.svg.append("g").attr("transform", $$.getTranslate('context')); + + context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); + + // Define g for chart area + context.append('g') + .attr("clip-path", $$.clipPathForSubchart) + .attr('class', CLASS.chart); + + // Define g for bar chart area + context.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartBars); + + // Define g for line chart area + context.select('.' + CLASS.chart).append("g") + .attr("class", CLASS.chartLines); + + // Add extent rect for Brush + context.append("g") + .attr("clip-path", $$.clipPath) + .attr("class", CLASS.brush) + .call($$.brush); + + // ATTENTION: This must be called AFTER chart added + // Add Axis + $$.axes.subx = context.append("g") + .attr("class", CLASS.axisX) + .attr("transform", $$.getTranslate('subx')) + .attr("clip-path", config.axis_rotated ? "" : $$.clipPathForXAxis); + }; + c3_chart_internal_fn.updateTargetsForSubchart = function (targets) { + var $$ = this, context = $$.context, config = $$.config, + contextLineEnter, contextLineUpdate, contextBarEnter, contextBarUpdate, + classChartBar = $$.classChartBar.bind($$), + classBars = $$.classBars.bind($$), + classChartLine = $$.classChartLine.bind($$), + classLines = $$.classLines.bind($$), + classAreas = $$.classAreas.bind($$); + + if (config.subchart_show) { + //-- Bar --// + contextBarUpdate = context.select('.' + CLASS.chartBars).selectAll('.' + CLASS.chartBar) + .data(targets) + .attr('class', classChartBar); + contextBarEnter = contextBarUpdate.enter().append('g') + .style('opacity', 0) + .attr('class', classChartBar); + // Bars for each data + contextBarEnter.append('g') + .attr("class", classBars); + + //-- Line --// + contextLineUpdate = context.select('.' + CLASS.chartLines).selectAll('.' + CLASS.chartLine) + .data(targets) + .attr('class', classChartLine); + contextLineEnter = contextLineUpdate.enter().append('g') + .style('opacity', 0) + .attr('class', classChartLine); + // Lines for each data + contextLineEnter.append("g") + .attr("class", classLines); + // Area + contextLineEnter.append("g") + .attr("class", classAreas); + + //-- Brush --// + context.selectAll('.' + CLASS.brush + ' rect') + .attr(config.axis_rotated ? "width" : "height", config.axis_rotated ? $$.width2 : $$.height2); + } + }; + c3_chart_internal_fn.updateBarForSubchart = function (durationForExit) { + var $$ = this; + $$.contextBar = $$.context.selectAll('.' + CLASS.bars).selectAll('.' + CLASS.bar) + .data($$.barData.bind($$)); + $$.contextBar.enter().append('path') + .attr("class", $$.classBar.bind($$)) + .style("stroke", 'none') + .style("fill", $$.color); + $$.contextBar + .style("opacity", $$.initialOpacity.bind($$)); + $$.contextBar.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawBarForSubchart = function (drawBarOnSub, withTransition, duration) { + (withTransition ? this.contextBar.transition().duration(duration) : this.contextBar) + .attr('d', drawBarOnSub) + .style('opacity', 1); + }; + c3_chart_internal_fn.updateLineForSubchart = function (durationForExit) { + var $$ = this; + $$.contextLine = $$.context.selectAll('.' + CLASS.lines).selectAll('.' + CLASS.line) + .data($$.lineData.bind($$)); + $$.contextLine.enter().append('path') + .attr('class', $$.classLine.bind($$)) + .style('stroke', $$.color); + $$.contextLine + .style("opacity", $$.initialOpacity.bind($$)); + $$.contextLine.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawLineForSubchart = function (drawLineOnSub, withTransition, duration) { + (withTransition ? this.contextLine.transition().duration(duration) : this.contextLine) + .attr("d", drawLineOnSub) + .style('opacity', 1); + }; + c3_chart_internal_fn.updateAreaForSubchart = function (durationForExit) { + var $$ = this, d3 = $$.d3; + $$.contextArea = $$.context.selectAll('.' + CLASS.areas).selectAll('.' + CLASS.area) + .data($$.lineData.bind($$)); + $$.contextArea.enter().append('path') + .attr("class", $$.classArea.bind($$)) + .style("fill", $$.color) + .style("opacity", function () { $$.orgAreaOpacity = +d3.select(this).style('opacity'); return 0; }); + $$.contextArea + .style("opacity", 0); + $$.contextArea.exit().transition().duration(durationForExit) + .style('opacity', 0) + .remove(); + }; + c3_chart_internal_fn.redrawAreaForSubchart = function (drawAreaOnSub, withTransition, duration) { + (withTransition ? this.contextArea.transition().duration(duration) : this.contextArea) + .attr("d", drawAreaOnSub) + .style("fill", this.color) + .style("opacity", this.orgAreaOpacity); + }; + c3_chart_internal_fn.redrawSubchart = function (withSubchart, transitions, duration, durationForExit, areaIndices, barIndices, lineIndices) { + var $$ = this, d3 = $$.d3, config = $$.config, + drawAreaOnSub, drawBarOnSub, drawLineOnSub; + + $$.context.style('visibility', config.subchart_show ? 'visible' : 'hidden'); + + // subchart + if (config.subchart_show) { + // reflect main chart to extent on subchart if zoomed + if (d3.event && d3.event.type === 'zoom') { + $$.brush.extent($$.x.orgDomain()).update(); + } + // update subchart elements if needed + if (withSubchart) { + + // extent rect + if (!$$.brush.empty()) { + $$.brush.extent($$.x.orgDomain()).update(); + } + // setup drawer - MEMO: this must be called after axis updated + drawAreaOnSub = $$.generateDrawArea(areaIndices, true); + drawBarOnSub = $$.generateDrawBar(barIndices, true); + drawLineOnSub = $$.generateDrawLine(lineIndices, true); + + $$.updateBarForSubchart(duration); + $$.updateLineForSubchart(duration); + $$.updateAreaForSubchart(duration); + + $$.redrawBarForSubchart(drawBarOnSub, duration, duration); + $$.redrawLineForSubchart(drawLineOnSub, duration, duration); + $$.redrawAreaForSubchart(drawAreaOnSub, duration, duration); + } + } + }; + c3_chart_internal_fn.redrawForBrush = function () { + var $$ = this, x = $$.x; + $$.redraw({ + withTransition: false, + withY: $$.config.zoom_rescale, + withSubchart: false, + withUpdateXDomain: true, + withDimension: false + }); + $$.config.subchart_onbrush.call($$.api, x.orgDomain()); + }; + c3_chart_internal_fn.transformContext = function (withTransition, transitions) { + var $$ = this, subXAxis; + if (transitions && transitions.axisSubX) { + subXAxis = transitions.axisSubX; + } else { + subXAxis = $$.context.select('.' + CLASS.axisX); + if (withTransition) { subXAxis = subXAxis.transition(); } + } + $$.context.attr("transform", $$.getTranslate('context')); + subXAxis.attr("transform", $$.getTranslate('subx')); + }; + c3_chart_internal_fn.getDefaultExtent = function () { + var $$ = this, config = $$.config, + extent = isFunction(config.axis_x_extent) ? config.axis_x_extent($$.getXDomain($$.data.targets)) : config.axis_x_extent; + if ($$.isTimeSeries()) { + extent = [$$.parseDate(extent[0]), $$.parseDate(extent[1])]; + } + return extent; + }; + + c3_chart_internal_fn.initZoom = function () { + var $$ = this, d3 = $$.d3, config = $$.config, startEvent; + + $$.zoom = d3.behavior.zoom() + .on("zoomstart", function () { + startEvent = d3.event.sourceEvent; + $$.zoom.altDomain = d3.event.sourceEvent.altKey ? $$.x.orgDomain() : null; + config.zoom_onzoomstart.call($$.api, d3.event.sourceEvent); + }) + .on("zoom", function () { + $$.redrawForZoom.call($$); + }) + .on('zoomend', function () { + var event = d3.event.sourceEvent; + // if click, do nothing. otherwise, click interaction will be canceled. + if (event && startEvent.clientX === event.clientX && startEvent.clientY === event.clientY) { + return; + } + $$.redrawEventRect(); + $$.updateZoom(); + config.zoom_onzoomend.call($$.api, $$.x.orgDomain()); + }); + $$.zoom.scale = function (scale) { + return config.axis_rotated ? this.y(scale) : this.x(scale); + }; + $$.zoom.orgScaleExtent = function () { + var extent = config.zoom_extent ? config.zoom_extent : [1, 10]; + return [extent[0], Math.max($$.getMaxDataCount() / extent[1], extent[1])]; + }; + $$.zoom.updateScaleExtent = function () { + var ratio = diffDomain($$.x.orgDomain()) / diffDomain($$.orgXDomain), + extent = this.orgScaleExtent(); + this.scaleExtent([extent[0] * ratio, extent[1] * ratio]); + return this; + }; + }; + c3_chart_internal_fn.updateZoom = function () { + var $$ = this, z = $$.config.zoom_enabled ? $$.zoom : function () {}; + $$.main.select('.' + CLASS.zoomRect).call(z).on("dblclick.zoom", null); + $$.main.selectAll('.' + CLASS.eventRect).call(z).on("dblclick.zoom", null); + }; + c3_chart_internal_fn.redrawForZoom = function () { + var $$ = this, d3 = $$.d3, config = $$.config, zoom = $$.zoom, x = $$.x; + if (!config.zoom_enabled) { + return; + } + if ($$.filterTargetsToShow($$.data.targets).length === 0) { + return; + } + if (d3.event.sourceEvent.type === 'mousemove' && zoom.altDomain) { + x.domain(zoom.altDomain); + zoom.scale(x).updateScaleExtent(); + return; + } + if ($$.isCategorized() && x.orgDomain()[0] === $$.orgXDomain[0]) { + x.domain([$$.orgXDomain[0] - 1e-10, x.orgDomain()[1]]); + } + $$.redraw({ + withTransition: false, + withY: config.zoom_rescale, + withSubchart: false, + withEventRect: false, + withDimension: false + }); + if (d3.event.sourceEvent.type === 'mousemove') { + $$.cancelClick = true; + } + config.zoom_onzoom.call($$.api, x.orgDomain()); + }; + + c3_chart_internal_fn.generateColor = function () { + var $$ = this, config = $$.config, d3 = $$.d3, + colors = config.data_colors, + pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.scale.category10().range(), + callback = config.data_color, + ids = []; + + return function (d) { + var id = d.id || (d.data && d.data.id) || d, color; + + // if callback function is provided + if (colors[id] instanceof Function) { + color = colors[id](d); + } + // if specified, choose that color + else if (colors[id]) { + color = colors[id]; + } + // if not specified, choose from pattern + else { + if (ids.indexOf(id) < 0) { ids.push(id); } + color = pattern[ids.indexOf(id) % pattern.length]; + colors[id] = color; + } + return callback instanceof Function ? callback(color, d) : color; + }; + }; + c3_chart_internal_fn.generateLevelColor = function () { + var $$ = this, config = $$.config, + colors = config.color_pattern, + threshold = config.color_threshold, + asValue = threshold.unit === 'value', + values = threshold.values && threshold.values.length ? threshold.values : [], + max = threshold.max || 100; + return notEmpty(config.color_threshold) ? function (value) { + var i, v, color = colors[colors.length - 1]; + for (i = 0; i < values.length; i++) { + v = asValue ? value : (value * 100 / max); + if (v < values[i]) { + color = colors[i]; + break; + } + } + return color; + } : null; + }; + + c3_chart_internal_fn.getYFormat = function (forArc) { + var $$ = this, + formatForY = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.yFormat, + formatForY2 = forArc && !$$.hasType('gauge') ? $$.defaultArcValueFormat : $$.y2Format; + return function (v, ratio, id) { + var format = $$.axis.getId(id) === 'y2' ? formatForY2 : formatForY; + return format.call($$, v, ratio); + }; + }; + c3_chart_internal_fn.yFormat = function (v) { + var $$ = this, config = $$.config, + format = config.axis_y_tick_format ? config.axis_y_tick_format : $$.defaultValueFormat; + return format(v); + }; + c3_chart_internal_fn.y2Format = function (v) { + var $$ = this, config = $$.config, + format = config.axis_y2_tick_format ? config.axis_y2_tick_format : $$.defaultValueFormat; + return format(v); + }; + c3_chart_internal_fn.defaultValueFormat = function (v) { + return isValue(v) ? +v : ""; + }; + c3_chart_internal_fn.defaultArcValueFormat = function (v, ratio) { + return (ratio * 100).toFixed(1) + '%'; + }; + c3_chart_internal_fn.dataLabelFormat = function (targetId) { + var $$ = this, data_labels = $$.config.data_labels, + format, defaultFormat = function (v) { return isValue(v) ? +v : ""; }; + // find format according to axis id + if (typeof data_labels.format === 'function') { + format = data_labels.format; + } else if (typeof data_labels.format === 'object') { + if (data_labels.format[targetId]) { + format = data_labels.format[targetId] === true ? defaultFormat : data_labels.format[targetId]; + } else { + format = function () { return ''; }; + } + } else { + format = defaultFormat; + } + return format; + }; + + c3_chart_internal_fn.hasCaches = function (ids) { + for (var i = 0; i < ids.length; i++) { + if (! (ids[i] in this.cache)) { return false; } + } + return true; + }; + c3_chart_internal_fn.addCache = function (id, target) { + this.cache[id] = this.cloneTarget(target); + }; + c3_chart_internal_fn.getCaches = function (ids) { + var targets = [], i; + for (i = 0; i < ids.length; i++) { + if (ids[i] in this.cache) { targets.push(this.cloneTarget(this.cache[ids[i]])); } + } + return targets; + }; + + var CLASS = c3_chart_internal_fn.CLASS = { + target: 'c3-target', + chart: 'c3-chart', + chartLine: 'c3-chart-line', + chartLines: 'c3-chart-lines', + chartBar: 'c3-chart-bar', + chartBars: 'c3-chart-bars', + chartText: 'c3-chart-text', + chartTexts: 'c3-chart-texts', + chartArc: 'c3-chart-arc', + chartArcs: 'c3-chart-arcs', + chartArcsTitle: 'c3-chart-arcs-title', + chartArcsBackground: 'c3-chart-arcs-background', + chartArcsGaugeUnit: 'c3-chart-arcs-gauge-unit', + chartArcsGaugeMax: 'c3-chart-arcs-gauge-max', + chartArcsGaugeMin: 'c3-chart-arcs-gauge-min', + selectedCircle: 'c3-selected-circle', + selectedCircles: 'c3-selected-circles', + eventRect: 'c3-event-rect', + eventRects: 'c3-event-rects', + eventRectsSingle: 'c3-event-rects-single', + eventRectsMultiple: 'c3-event-rects-multiple', + zoomRect: 'c3-zoom-rect', + brush: 'c3-brush', + focused: 'c3-focused', + defocused: 'c3-defocused', + region: 'c3-region', + regions: 'c3-regions', + tooltipContainer: 'c3-tooltip-container', + tooltip: 'c3-tooltip', + tooltipName: 'c3-tooltip-name', + shape: 'c3-shape', + shapes: 'c3-shapes', + line: 'c3-line', + lines: 'c3-lines', + bar: 'c3-bar', + bars: 'c3-bars', + circle: 'c3-circle', + circles: 'c3-circles', + arc: 'c3-arc', + arcs: 'c3-arcs', + area: 'c3-area', + areas: 'c3-areas', + empty: 'c3-empty', + text: 'c3-text', + texts: 'c3-texts', + gaugeValue: 'c3-gauge-value', + grid: 'c3-grid', + gridLines: 'c3-grid-lines', + xgrid: 'c3-xgrid', + xgrids: 'c3-xgrids', + xgridLine: 'c3-xgrid-line', + xgridLines: 'c3-xgrid-lines', + xgridFocus: 'c3-xgrid-focus', + ygrid: 'c3-ygrid', + ygrids: 'c3-ygrids', + ygridLine: 'c3-ygrid-line', + ygridLines: 'c3-ygrid-lines', + axis: 'c3-axis', + axisX: 'c3-axis-x', + axisXLabel: 'c3-axis-x-label', + axisY: 'c3-axis-y', + axisYLabel: 'c3-axis-y-label', + axisY2: 'c3-axis-y2', + axisY2Label: 'c3-axis-y2-label', + legendBackground: 'c3-legend-background', + legendItem: 'c3-legend-item', + legendItemEvent: 'c3-legend-item-event', + legendItemTile: 'c3-legend-item-tile', + legendItemHidden: 'c3-legend-item-hidden', + legendItemFocused: 'c3-legend-item-focused', + dragarea: 'c3-dragarea', + EXPANDED: '_expanded_', + SELECTED: '_selected_', + INCLUDED: '_included_' + }; + c3_chart_internal_fn.generateClass = function (prefix, targetId) { + return " " + prefix + " " + prefix + this.getTargetSelectorSuffix(targetId); + }; + c3_chart_internal_fn.classText = function (d) { + return this.generateClass(CLASS.text, d.index); + }; + c3_chart_internal_fn.classTexts = function (d) { + return this.generateClass(CLASS.texts, d.id); + }; + c3_chart_internal_fn.classShape = function (d) { + return this.generateClass(CLASS.shape, d.index); + }; + c3_chart_internal_fn.classShapes = function (d) { + return this.generateClass(CLASS.shapes, d.id); + }; + c3_chart_internal_fn.classLine = function (d) { + return this.classShape(d) + this.generateClass(CLASS.line, d.id); + }; + c3_chart_internal_fn.classLines = function (d) { + return this.classShapes(d) + this.generateClass(CLASS.lines, d.id); + }; + c3_chart_internal_fn.classCircle = function (d) { + return this.classShape(d) + this.generateClass(CLASS.circle, d.index); + }; + c3_chart_internal_fn.classCircles = function (d) { + return this.classShapes(d) + this.generateClass(CLASS.circles, d.id); + }; + c3_chart_internal_fn.classBar = function (d) { + return this.classShape(d) + this.generateClass(CLASS.bar, d.index); + }; + c3_chart_internal_fn.classBars = function (d) { + return this.classShapes(d) + this.generateClass(CLASS.bars, d.id); + }; + c3_chart_internal_fn.classArc = function (d) { + return this.classShape(d.data) + this.generateClass(CLASS.arc, d.data.id); + }; + c3_chart_internal_fn.classArcs = function (d) { + return this.classShapes(d.data) + this.generateClass(CLASS.arcs, d.data.id); + }; + c3_chart_internal_fn.classArea = function (d) { + return this.classShape(d) + this.generateClass(CLASS.area, d.id); + }; + c3_chart_internal_fn.classAreas = function (d) { + return this.classShapes(d) + this.generateClass(CLASS.areas, d.id); + }; + c3_chart_internal_fn.classRegion = function (d, i) { + return this.generateClass(CLASS.region, i) + ' ' + ('class' in d ? d['class'] : ''); + }; + c3_chart_internal_fn.classEvent = function (d) { + return this.generateClass(CLASS.eventRect, d.index); + }; + c3_chart_internal_fn.classTarget = function (id) { + var $$ = this; + var additionalClassSuffix = $$.config.data_classes[id], additionalClass = ''; + if (additionalClassSuffix) { + additionalClass = ' ' + CLASS.target + '-' + additionalClassSuffix; + } + return $$.generateClass(CLASS.target, id) + additionalClass; + }; + c3_chart_internal_fn.classFocus = function (d) { + return this.classFocused(d) + this.classDefocused(d); + }; + c3_chart_internal_fn.classFocused = function (d) { + return ' ' + (this.focusedTargetIds.indexOf(d.id) >= 0 ? CLASS.focused : ''); + }; + c3_chart_internal_fn.classDefocused = function (d) { + return ' ' + (this.defocusedTargetIds.indexOf(d.id) >= 0 ? CLASS.defocused : ''); + }; + c3_chart_internal_fn.classChartText = function (d) { + return CLASS.chartText + this.classTarget(d.id); + }; + c3_chart_internal_fn.classChartLine = function (d) { + return CLASS.chartLine + this.classTarget(d.id); + }; + c3_chart_internal_fn.classChartBar = function (d) { + return CLASS.chartBar + this.classTarget(d.id); + }; + c3_chart_internal_fn.classChartArc = function (d) { + return CLASS.chartArc + this.classTarget(d.data.id); + }; + c3_chart_internal_fn.getTargetSelectorSuffix = function (targetId) { + return targetId || targetId === 0 ? ('-' + targetId).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g, '-') : ''; + }; + c3_chart_internal_fn.selectorTarget = function (id, prefix) { + return (prefix || '') + '.' + CLASS.target + this.getTargetSelectorSuffix(id); + }; + c3_chart_internal_fn.selectorTargets = function (ids, prefix) { + var $$ = this; + ids = ids || []; + return ids.length ? ids.map(function (id) { return $$.selectorTarget(id, prefix); }) : null; + }; + c3_chart_internal_fn.selectorLegend = function (id) { + return '.' + CLASS.legendItem + this.getTargetSelectorSuffix(id); + }; + c3_chart_internal_fn.selectorLegends = function (ids) { + var $$ = this; + return ids && ids.length ? ids.map(function (id) { return $$.selectorLegend(id); }) : null; + }; + + var isValue = c3_chart_internal_fn.isValue = function (v) { + return v || v === 0; + }, + isFunction = c3_chart_internal_fn.isFunction = function (o) { + return typeof o === 'function'; + }, + isString = c3_chart_internal_fn.isString = function (o) { + return typeof o === 'string'; + }, + isUndefined = c3_chart_internal_fn.isUndefined = function (v) { + return typeof v === 'undefined'; + }, + isDefined = c3_chart_internal_fn.isDefined = function (v) { + return typeof v !== 'undefined'; + }, + ceil10 = c3_chart_internal_fn.ceil10 = function (v) { + return Math.ceil(v / 10) * 10; + }, + asHalfPixel = c3_chart_internal_fn.asHalfPixel = function (n) { + return Math.ceil(n) + 0.5; + }, + diffDomain = c3_chart_internal_fn.diffDomain = function (d) { + return d[1] - d[0]; + }, + isEmpty = c3_chart_internal_fn.isEmpty = function (o) { + return !o || (isString(o) && o.length === 0) || (typeof o === 'object' && Object.keys(o).length === 0); + }, + notEmpty = c3_chart_internal_fn.notEmpty = function (o) { + return Object.keys(o).length > 0; + }, + getOption = c3_chart_internal_fn.getOption = function (options, key, defaultValue) { + return isDefined(options[key]) ? options[key] : defaultValue; + }, + hasValue = c3_chart_internal_fn.hasValue = function (dict, value) { + var found = false; + Object.keys(dict).forEach(function (key) { + if (dict[key] === value) { found = true; } + }); + return found; + }, + getPathBox = c3_chart_internal_fn.getPathBox = function (path) { + var box = path.getBoundingClientRect(), + items = [path.pathSegList.getItem(0), path.pathSegList.getItem(1)], + minX = items[0].x, minY = Math.min(items[0].y, items[1].y); + return {x: minX, y: minY, width: box.width, height: box.height}; + }; + + c3_chart_fn.focus = function (targetIds) { + var $$ = this.internal, candidates; + + targetIds = $$.mapToTargetIds(targetIds); + candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), + + this.revert(); + this.defocus(); + candidates.classed(CLASS.focused, true).classed(CLASS.defocused, false); + if ($$.hasArcType()) { + $$.expandArc(targetIds); + } + $$.toggleFocusLegend(targetIds, true); + + $$.focusedTargetIds = targetIds; + $$.defocusedTargetIds = $$.defocusedTargetIds.filter(function (id) { + return targetIds.indexOf(id) < 0; + }); + }; + + c3_chart_fn.defocus = function (targetIds) { + var $$ = this.internal, candidates; + + targetIds = $$.mapToTargetIds(targetIds); + candidates = $$.svg.selectAll($$.selectorTargets(targetIds.filter($$.isTargetToShow, $$))), + + candidates.classed(CLASS.focused, false).classed(CLASS.defocused, true); + if ($$.hasArcType()) { + $$.unexpandArc(targetIds); + } + $$.toggleFocusLegend(targetIds, false); + + $$.focusedTargetIds = $$.focusedTargetIds.filter(function (id) { + return targetIds.indexOf(id) < 0; + }); + $$.defocusedTargetIds = targetIds; + }; + + c3_chart_fn.revert = function (targetIds) { + var $$ = this.internal, candidates; + + targetIds = $$.mapToTargetIds(targetIds); + candidates = $$.svg.selectAll($$.selectorTargets(targetIds)); // should be for all targets + + candidates.classed(CLASS.focused, false).classed(CLASS.defocused, false); + if ($$.hasArcType()) { + $$.unexpandArc(targetIds); + } + if ($$.config.legend_show) { + $$.showLegend(targetIds.filter($$.isLegendToShow.bind($$))); + $$.legend.selectAll($$.selectorLegends(targetIds)) + .filter(function () { + return $$.d3.select(this).classed(CLASS.legendItemFocused); + }) + .classed(CLASS.legendItemFocused, false); + } + + $$.focusedTargetIds = []; + $$.defocusedTargetIds = []; + }; + + c3_chart_fn.show = function (targetIds, options) { + var $$ = this.internal, targets; + + targetIds = $$.mapToTargetIds(targetIds); + options = options || {}; + + $$.removeHiddenTargetIds(targetIds); + targets = $$.svg.selectAll($$.selectorTargets(targetIds)); + + targets.transition() + .style('opacity', 1, 'important') + .call($$.endall, function () { + targets.style('opacity', null).style('opacity', 1); + }); + + if (options.withLegend) { + $$.showLegend(targetIds); + } + + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); + }; + + c3_chart_fn.hide = function (targetIds, options) { + var $$ = this.internal, targets; + + targetIds = $$.mapToTargetIds(targetIds); + options = options || {}; + + $$.addHiddenTargetIds(targetIds); + targets = $$.svg.selectAll($$.selectorTargets(targetIds)); + + targets.transition() + .style('opacity', 0, 'important') + .call($$.endall, function () { + targets.style('opacity', null).style('opacity', 0); + }); + + if (options.withLegend) { + $$.hideLegend(targetIds); + } + + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); + }; + + c3_chart_fn.toggle = function (targetIds, options) { + var that = this, $$ = this.internal; + $$.mapToTargetIds(targetIds).forEach(function (targetId) { + $$.isTargetToShow(targetId) ? that.hide(targetId, options) : that.show(targetId, options); + }); + }; + + c3_chart_fn.zoom = function (domain) { + var $$ = this.internal; + if (domain) { + if ($$.isTimeSeries()) { + domain = domain.map(function (x) { return $$.parseDate(x); }); + } + $$.brush.extent(domain); + $$.redraw({withUpdateXDomain: true, withY: $$.config.zoom_rescale}); + $$.config.zoom_onzoom.call(this, $$.x.orgDomain()); + } + return $$.brush.extent(); + }; + c3_chart_fn.zoom.enable = function (enabled) { + var $$ = this.internal; + $$.config.zoom_enabled = enabled; + $$.updateAndRedraw(); + }; + c3_chart_fn.unzoom = function () { + var $$ = this.internal; + $$.brush.clear().update(); + $$.redraw({withUpdateXDomain: true}); + }; + + c3_chart_fn.load = function (args) { + var $$ = this.internal, config = $$.config; + // update xs if specified + if (args.xs) { + $$.addXs(args.xs); + } + // update classes if exists + if ('classes' in args) { + Object.keys(args.classes).forEach(function (id) { + config.data_classes[id] = args.classes[id]; + }); + } + // update categories if exists + if ('categories' in args && $$.isCategorized()) { + config.axis_x_categories = args.categories; + } + // update axes if exists + if ('axes' in args) { + Object.keys(args.axes).forEach(function (id) { + config.data_axes[id] = args.axes[id]; + }); + } + // update colors if exists + if ('colors' in args) { + Object.keys(args.colors).forEach(function (id) { + config.data_colors[id] = args.colors[id]; + }); + } + // use cache if exists + if ('cacheIds' in args && $$.hasCaches(args.cacheIds)) { + $$.load($$.getCaches(args.cacheIds), args.done); + return; + } + // unload if needed + if ('unload' in args) { + // TODO: do not unload if target will load (included in url/rows/columns) + $$.unload($$.mapToTargetIds((typeof args.unload === 'boolean' && args.unload) ? null : args.unload), function () { + $$.loadFromArgs(args); + }); + } else { + $$.loadFromArgs(args); + } + }; + + c3_chart_fn.unload = function (args) { + var $$ = this.internal; + args = args || {}; + if (args instanceof Array) { + args = {ids: args}; + } else if (typeof args === 'string') { + args = {ids: [args]}; + } + $$.unload($$.mapToTargetIds(args.ids), function () { + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true, withLegend: true}); + if (args.done) { args.done(); } + }); + }; + + c3_chart_fn.flow = function (args) { + var $$ = this.internal, + targets, data, notfoundIds = [], orgDataCount = $$.getMaxDataCount(), + dataCount, domain, baseTarget, baseValue, length = 0, tail = 0, diff, to; + + if (args.json) { + data = $$.convertJsonToData(args.json, args.keys); + } + else if (args.rows) { + data = $$.convertRowsToData(args.rows); + } + else if (args.columns) { + data = $$.convertColumnsToData(args.columns); + } + else { + return; + } + targets = $$.convertDataToTargets(data, true); + + // Update/Add data + $$.data.targets.forEach(function (t) { + var found = false, i, j; + for (i = 0; i < targets.length; i++) { + if (t.id === targets[i].id) { + found = true; + + if (t.values[t.values.length - 1]) { + tail = t.values[t.values.length - 1].index + 1; + } + length = targets[i].values.length; + + for (j = 0; j < length; j++) { + targets[i].values[j].index = tail + j; + if (!$$.isTimeSeries()) { + targets[i].values[j].x = tail + j; + } + } + t.values = t.values.concat(targets[i].values); + + targets.splice(i, 1); + break; + } + } + if (!found) { notfoundIds.push(t.id); } + }); + + // Append null for not found targets + $$.data.targets.forEach(function (t) { + var i, j; + for (i = 0; i < notfoundIds.length; i++) { + if (t.id === notfoundIds[i]) { + tail = t.values[t.values.length - 1].index + 1; + for (j = 0; j < length; j++) { + t.values.push({ + id: t.id, + index: tail + j, + x: $$.isTimeSeries() ? $$.getOtherTargetX(tail + j) : tail + j, + value: null + }); + } + } + } + }); + + // Generate null values for new target + if ($$.data.targets.length) { + targets.forEach(function (t) { + var i, missing = []; + for (i = $$.data.targets[0].values[0].index; i < tail; i++) { + missing.push({ + id: t.id, + index: i, + x: $$.isTimeSeries() ? $$.getOtherTargetX(i) : i, + value: null + }); + } + t.values.forEach(function (v) { + v.index += tail; + if (!$$.isTimeSeries()) { + v.x += tail; + } + }); + t.values = missing.concat(t.values); + }); + } + $$.data.targets = $$.data.targets.concat(targets); // add remained + + // check data count because behavior needs to change when it's only one + dataCount = $$.getMaxDataCount(); + baseTarget = $$.data.targets[0]; + baseValue = baseTarget.values[0]; + + // Update length to flow if needed + if (isDefined(args.to)) { + length = 0; + to = $$.isTimeSeries() ? $$.parseDate(args.to) : args.to; + baseTarget.values.forEach(function (v) { + if (v.x < to) { length++; } + }); + } else if (isDefined(args.length)) { + length = args.length; + } + + // If only one data, update the domain to flow from left edge of the chart + if (!orgDataCount) { + if ($$.isTimeSeries()) { + if (baseTarget.values.length > 1) { + diff = baseTarget.values[baseTarget.values.length - 1].x - baseValue.x; + } else { + diff = baseValue.x - $$.getXDomain($$.data.targets)[0]; + } + } else { + diff = 1; + } + domain = [baseValue.x - diff, baseValue.x]; + $$.updateXDomain(null, true, true, false, domain); + } else if (orgDataCount === 1) { + if ($$.isTimeSeries()) { + diff = (baseTarget.values[baseTarget.values.length - 1].x - baseValue.x) / 2; + domain = [new Date(+baseValue.x - diff), new Date(+baseValue.x + diff)]; + $$.updateXDomain(null, true, true, false, domain); + } + } + + // Set targets + $$.updateTargets($$.data.targets); + + // Redraw with new targets + $$.redraw({ + flow: { + index: baseValue.index, + length: length, + duration: isValue(args.duration) ? args.duration : $$.config.transition_duration, + done: args.done, + orgDataCount: orgDataCount, + }, + withLegend: true, + withTransition: orgDataCount > 1, + withTrimXDomain: false, + withUpdateXAxis: true, + }); + }; + + c3_chart_internal_fn.generateFlow = function (args) { + var $$ = this, config = $$.config, d3 = $$.d3; + + return function () { + var targets = args.targets, + flow = args.flow, + drawBar = args.drawBar, + drawLine = args.drawLine, + drawArea = args.drawArea, + cx = args.cx, + cy = args.cy, + xv = args.xv, + xForText = args.xForText, + yForText = args.yForText, + duration = args.duration; + + var translateX, scaleX = 1, transform, + flowIndex = flow.index, + flowLength = flow.length, + flowStart = $$.getValueOnIndex($$.data.targets[0].values, flowIndex), + flowEnd = $$.getValueOnIndex($$.data.targets[0].values, flowIndex + flowLength), + orgDomain = $$.x.domain(), domain, + durationForFlow = flow.duration || duration, + done = flow.done || function () {}, + wait = $$.generateWait(); + + var xgrid = $$.xgrid || d3.selectAll([]), + xgridLines = $$.xgridLines || d3.selectAll([]), + mainRegion = $$.mainRegion || d3.selectAll([]), + mainText = $$.mainText || d3.selectAll([]), + mainBar = $$.mainBar || d3.selectAll([]), + mainLine = $$.mainLine || d3.selectAll([]), + mainArea = $$.mainArea || d3.selectAll([]), + mainCircle = $$.mainCircle || d3.selectAll([]); + + // set flag + $$.flowing = true; + + // remove head data after rendered + $$.data.targets.forEach(function (d) { + d.values.splice(0, flowLength); + }); + + // update x domain to generate axis elements for flow + domain = $$.updateXDomain(targets, true, true); + // update elements related to x scale + if ($$.updateXGrid) { $$.updateXGrid(true); } + + // generate transform to flow + if (!flow.orgDataCount) { // if empty + if ($$.data.targets[0].values.length !== 1) { + translateX = $$.x(orgDomain[0]) - $$.x(domain[0]); + } else { + if ($$.isTimeSeries()) { + flowStart = $$.getValueOnIndex($$.data.targets[0].values, 0); + flowEnd = $$.getValueOnIndex($$.data.targets[0].values, $$.data.targets[0].values.length - 1); + translateX = $$.x(flowStart.x) - $$.x(flowEnd.x); + } else { + translateX = diffDomain(domain) / 2; + } + } + } else if (flow.orgDataCount === 1 || flowStart.x === flowEnd.x) { + translateX = $$.x(orgDomain[0]) - $$.x(domain[0]); + } else { + if ($$.isTimeSeries()) { + translateX = ($$.x(orgDomain[0]) - $$.x(domain[0])); + } else { + translateX = ($$.x(flowStart.x) - $$.x(flowEnd.x)); + } + } + scaleX = (diffDomain(orgDomain) / diffDomain(domain)); + transform = 'translate(' + translateX + ',0) scale(' + scaleX + ',1)'; + + // hide tooltip + $$.hideXGridFocus(); + $$.hideTooltip(); + + d3.transition().ease('linear').duration(durationForFlow).each(function () { + wait.add($$.axes.x.transition().call($$.xAxis)); + wait.add(mainBar.transition().attr('transform', transform)); + wait.add(mainLine.transition().attr('transform', transform)); + wait.add(mainArea.transition().attr('transform', transform)); + wait.add(mainCircle.transition().attr('transform', transform)); + wait.add(mainText.transition().attr('transform', transform)); + wait.add(mainRegion.filter($$.isRegionOnX).transition().attr('transform', transform)); + wait.add(xgrid.transition().attr('transform', transform)); + wait.add(xgridLines.transition().attr('transform', transform)); + }) + .call(wait, function () { + var i, shapes = [], texts = [], eventRects = []; + + // remove flowed elements + if (flowLength) { + for (i = 0; i < flowLength; i++) { + shapes.push('.' + CLASS.shape + '-' + (flowIndex + i)); + texts.push('.' + CLASS.text + '-' + (flowIndex + i)); + eventRects.push('.' + CLASS.eventRect + '-' + (flowIndex + i)); + } + $$.svg.selectAll('.' + CLASS.shapes).selectAll(shapes).remove(); + $$.svg.selectAll('.' + CLASS.texts).selectAll(texts).remove(); + $$.svg.selectAll('.' + CLASS.eventRects).selectAll(eventRects).remove(); + $$.svg.select('.' + CLASS.xgrid).remove(); + } + + // draw again for removing flowed elements and reverting attr + xgrid + .attr('transform', null) + .attr($$.xgridAttr); + xgridLines + .attr('transform', null); + xgridLines.select('line') + .attr("x1", config.axis_rotated ? 0 : xv) + .attr("x2", config.axis_rotated ? $$.width : xv); + xgridLines.select('text') + .attr("x", config.axis_rotated ? $$.width : 0) + .attr("y", xv); + mainBar + .attr('transform', null) + .attr("d", drawBar); + mainLine + .attr('transform', null) + .attr("d", drawLine); + mainArea + .attr('transform', null) + .attr("d", drawArea); + mainCircle + .attr('transform', null) + .attr("cx", cx) + .attr("cy", cy); + mainText + .attr('transform', null) + .attr('x', xForText) + .attr('y', yForText) + .style('fill-opacity', $$.opacityForText.bind($$)); + mainRegion + .attr('transform', null); + mainRegion.select('rect').filter($$.isRegionOnX) + .attr("x", $$.regionX.bind($$)) + .attr("width", $$.regionWidth.bind($$)); + + if (config.interaction_enabled) { + $$.redrawEventRect(); + } + + // callback for end of flow + done(); + + $$.flowing = false; + }); + }; + }; + + c3_chart_fn.selected = function (targetId) { + var $$ = this.internal, d3 = $$.d3; + return d3.merge( + $$.main.selectAll('.' + CLASS.shapes + $$.getTargetSelectorSuffix(targetId)).selectAll('.' + CLASS.shape) + .filter(function () { return d3.select(this).classed(CLASS.SELECTED); }) + .map(function (d) { return d.map(function (d) { var data = d.__data__; return data.data ? data.data : data; }); }) + ); + }; + c3_chart_fn.select = function (ids, indices, resetOther) { + var $$ = this.internal, d3 = $$.d3, config = $$.config; + if (! config.data_selection_enabled) { return; } + $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) { + var shape = d3.select(this), id = d.data ? d.data.id : d.id, + toggle = $$.getToggle(this, d).bind($$), + isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0, + isTargetIndex = !indices || indices.indexOf(i) >= 0, + isSelected = shape.classed(CLASS.SELECTED); + // line/area selection not supported yet + if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) { + return; + } + if (isTargetId && isTargetIndex) { + if (config.data_selection_isselectable(d) && !isSelected) { + toggle(true, shape.classed(CLASS.SELECTED, true), d, i); + } + } else if (isDefined(resetOther) && resetOther) { + if (isSelected) { + toggle(false, shape.classed(CLASS.SELECTED, false), d, i); + } + } + }); + }; + c3_chart_fn.unselect = function (ids, indices) { + var $$ = this.internal, d3 = $$.d3, config = $$.config; + if (! config.data_selection_enabled) { return; } + $$.main.selectAll('.' + CLASS.shapes).selectAll('.' + CLASS.shape).each(function (d, i) { + var shape = d3.select(this), id = d.data ? d.data.id : d.id, + toggle = $$.getToggle(this, d).bind($$), + isTargetId = config.data_selection_grouped || !ids || ids.indexOf(id) >= 0, + isTargetIndex = !indices || indices.indexOf(i) >= 0, + isSelected = shape.classed(CLASS.SELECTED); + // line/area selection not supported yet + if (shape.classed(CLASS.line) || shape.classed(CLASS.area)) { + return; + } + if (isTargetId && isTargetIndex) { + if (config.data_selection_isselectable(d)) { + if (isSelected) { + toggle(false, shape.classed(CLASS.SELECTED, false), d, i); + } + } + } + }); + }; + + c3_chart_fn.transform = function (type, targetIds) { + var $$ = this.internal, + options = ['pie', 'donut'].indexOf(type) >= 0 ? {withTransform: true} : null; + $$.transformTo(targetIds, type, options); + }; + + c3_chart_internal_fn.transformTo = function (targetIds, type, optionsForRedraw) { + var $$ = this, + withTransitionForAxis = !$$.hasArcType(), + options = optionsForRedraw || {withTransitionForAxis: withTransitionForAxis}; + options.withTransitionForTransform = false; + $$.transiting = false; + $$.setTargetType(targetIds, type); + $$.updateTargets($$.data.targets); // this is needed when transforming to arc + $$.updateAndRedraw(options); + }; + + c3_chart_fn.groups = function (groups) { + var $$ = this.internal, config = $$.config; + if (isUndefined(groups)) { return config.data_groups; } + config.data_groups = groups; + $$.redraw(); + return config.data_groups; + }; + + c3_chart_fn.xgrids = function (grids) { + var $$ = this.internal, config = $$.config; + if (! grids) { return config.grid_x_lines; } + config.grid_x_lines = grids; + $$.redrawWithoutRescale(); + return config.grid_x_lines; + }; + c3_chart_fn.xgrids.add = function (grids) { + var $$ = this.internal; + return this.xgrids($$.config.grid_x_lines.concat(grids ? grids : [])); + }; + c3_chart_fn.xgrids.remove = function (params) { // TODO: multiple + var $$ = this.internal; + $$.removeGridLines(params, true); + }; + + c3_chart_fn.ygrids = function (grids) { + var $$ = this.internal, config = $$.config; + if (! grids) { return config.grid_y_lines; } + config.grid_y_lines = grids; + $$.redrawWithoutRescale(); + return config.grid_y_lines; + }; + c3_chart_fn.ygrids.add = function (grids) { + var $$ = this.internal; + return this.ygrids($$.config.grid_y_lines.concat(grids ? grids : [])); + }; + c3_chart_fn.ygrids.remove = function (params) { // TODO: multiple + var $$ = this.internal; + $$.removeGridLines(params, false); + }; + + c3_chart_fn.regions = function (regions) { + var $$ = this.internal, config = $$.config; + if (!regions) { return config.regions; } + config.regions = regions; + $$.redrawWithoutRescale(); + return config.regions; + }; + c3_chart_fn.regions.add = function (regions) { + var $$ = this.internal, config = $$.config; + if (!regions) { return config.regions; } + config.regions = config.regions.concat(regions); + $$.redrawWithoutRescale(); + return config.regions; + }; + c3_chart_fn.regions.remove = function (options) { + var $$ = this.internal, config = $$.config, + duration, classes, regions; + + options = options || {}; + duration = $$.getOption(options, "duration", config.transition_duration); + classes = $$.getOption(options, "classes", [CLASS.region]); + + regions = $$.main.select('.' + CLASS.regions).selectAll(classes.map(function (c) { return '.' + c; })); + (duration ? regions.transition().duration(duration) : regions) + .style('opacity', 0) + .remove(); + + config.regions = config.regions.filter(function (region) { + var found = false; + if (!region['class']) { + return true; + } + region['class'].split(' ').forEach(function (c) { + if (classes.indexOf(c) >= 0) { found = true; } + }); + return !found; + }); + + return config.regions; + }; + + c3_chart_fn.data = function (targetIds) { + var targets = this.internal.data.targets; + return typeof targetIds === 'undefined' ? targets : targets.filter(function (t) { + return [].concat(targetIds).indexOf(t.id) >= 0; + }); + }; + c3_chart_fn.data.shown = function (targetIds) { + return this.internal.filterTargetsToShow(this.data(targetIds)); + }; + c3_chart_fn.data.values = function (targetId) { + var targets, values = null; + if (targetId) { + targets = this.data(targetId); + values = targets[0] ? targets[0].values.map(function (d) { return d.value; }) : null; + } + return values; + }; + c3_chart_fn.data.names = function (names) { + this.internal.clearLegendItemTextBoxCache(); + return this.internal.updateDataAttributes('names', names); + }; + c3_chart_fn.data.colors = function (colors) { + return this.internal.updateDataAttributes('colors', colors); + }; + c3_chart_fn.data.axes = function (axes) { + return this.internal.updateDataAttributes('axes', axes); + }; + + c3_chart_fn.category = function (i, category) { + var $$ = this.internal, config = $$.config; + if (arguments.length > 1) { + config.axis_x_categories[i] = category; + $$.redraw(); + } + return config.axis_x_categories[i]; + }; + c3_chart_fn.categories = function (categories) { + var $$ = this.internal, config = $$.config; + if (!arguments.length) { return config.axis_x_categories; } + config.axis_x_categories = categories; + $$.redraw(); + return config.axis_x_categories; + }; + + // TODO: fix + c3_chart_fn.color = function (id) { + var $$ = this.internal; + return $$.color(id); // more patterns + }; + + c3_chart_fn.x = function (x) { + var $$ = this.internal; + if (arguments.length) { + $$.updateTargetX($$.data.targets, x); + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true}); + } + return $$.data.xs; + }; + c3_chart_fn.xs = function (xs) { + var $$ = this.internal; + if (arguments.length) { + $$.updateTargetXs($$.data.targets, xs); + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true}); + } + return $$.data.xs; + }; + + c3_chart_fn.axis = function () {}; + c3_chart_fn.axis.labels = function (labels) { + var $$ = this.internal; + if (arguments.length) { + Object.keys(labels).forEach(function (axisId) { + $$.axis.setLabelText(axisId, labels[axisId]); + }); + $$.axis.updateLabels(); + } + // TODO: return some values? + }; + c3_chart_fn.axis.max = function (max) { + var $$ = this.internal, config = $$.config; + if (arguments.length) { + if (typeof max === 'object') { + if (isValue(max.x)) { config.axis_x_max = max.x; } + if (isValue(max.y)) { config.axis_y_max = max.y; } + if (isValue(max.y2)) { config.axis_y2_max = max.y2; } + } else { + config.axis_y_max = config.axis_y2_max = max; + } + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true}); + } else { + return { + x: config.axis_x_max, + y: config.axis_y_max, + y2: config.axis_y2_max + }; + } + }; + c3_chart_fn.axis.min = function (min) { + var $$ = this.internal, config = $$.config; + if (arguments.length) { + if (typeof min === 'object') { + if (isValue(min.x)) { config.axis_x_min = min.x; } + if (isValue(min.y)) { config.axis_y_min = min.y; } + if (isValue(min.y2)) { config.axis_y2_min = min.y2; } + } else { + config.axis_y_min = config.axis_y2_min = min; + } + $$.redraw({withUpdateOrgXDomain: true, withUpdateXDomain: true}); + } else { + return { + x: config.axis_x_min, + y: config.axis_y_min, + y2: config.axis_y2_min + }; + } + }; + c3_chart_fn.axis.range = function (range) { + if (arguments.length) { + if (isDefined(range.max)) { this.axis.max(range.max); } + if (isDefined(range.min)) { this.axis.min(range.min); } + } else { + return { + max: this.axis.max(), + min: this.axis.min() + }; + } + }; + + c3_chart_fn.legend = function () {}; + c3_chart_fn.legend.show = function (targetIds) { + var $$ = this.internal; + $$.showLegend($$.mapToTargetIds(targetIds)); + $$.updateAndRedraw({withLegend: true}); + }; + c3_chart_fn.legend.hide = function (targetIds) { + var $$ = this.internal; + $$.hideLegend($$.mapToTargetIds(targetIds)); + $$.updateAndRedraw({withLegend: true}); + }; + + c3_chart_fn.resize = function (size) { + var $$ = this.internal, config = $$.config; + config.size_width = size ? size.width : null; + config.size_height = size ? size.height : null; + this.flush(); + }; + + c3_chart_fn.flush = function () { + var $$ = this.internal; + $$.updateAndRedraw({withLegend: true, withTransition: false, withTransitionForTransform: false}); + }; + + c3_chart_fn.destroy = function () { + var $$ = this.internal; + + window.clearInterval($$.intervalForObserveInserted); + window.onresize = null; + + $$.selectChart.classed('c3', false).html(""); + + // MEMO: this is needed because the reference of some elements will not be released, then memory leak will happen. + Object.keys($$).forEach(function (key) { + $$[key] = null; + }); + + return null; + }; + + c3_chart_fn.tooltip = function () {}; + c3_chart_fn.tooltip.show = function (args) { + var $$ = this.internal, index, mouse; + + // determine mouse position on the chart + if (args.mouse) { + mouse = args.mouse; + } + + // determine focus data + if (args.data) { + if ($$.isMultipleX()) { + // if multiple xs, target point will be determined by mouse + mouse = [$$.x(args.data.x), $$.getYScale(args.data.id)(args.data.value)]; + index = null; + } else { + // TODO: when tooltip_grouped = false + index = isValue(args.data.index) ? args.data.index : $$.getIndexByX(args.data.x); + } + } + else if (typeof args.x !== 'undefined') { + index = $$.getIndexByX(args.x); + } + else if (typeof args.index !== 'undefined') { + index = args.index; + } + + // emulate mouse events to show + $$.dispatchEvent('mouseover', index, mouse); + $$.dispatchEvent('mousemove', index, mouse); + }; + c3_chart_fn.tooltip.hide = function () { + // TODO: get target data by checking the state of focus + this.internal.dispatchEvent('mouseout', 0); + }; + + // Features: + // 1. category axis + // 2. ceil values of translate/x/y to int for half pixel antialiasing + // 3. multiline tick text + var tickTextCharSize; + function c3_axis(d3, params) { + var scale = d3.scale.linear(), orient = "bottom", innerTickSize = 6, outerTickSize, tickPadding = 3, tickValues = null, tickFormat, tickArguments; + + var tickOffset = 0, tickCulling = true, tickCentered; + + params = params || {}; + outerTickSize = params.withOuterTick ? 6 : 0; + + function axisX(selection, x) { + selection.attr("transform", function (d) { + return "translate(" + Math.ceil(x(d) + tickOffset) + ", 0)"; + }); + } + function axisY(selection, y) { + selection.attr("transform", function (d) { + return "translate(0," + Math.ceil(y(d)) + ")"; + }); + } + function scaleExtent(domain) { + var start = domain[0], stop = domain[domain.length - 1]; + return start < stop ? [ start, stop ] : [ stop, start ]; + } + function generateTicks(scale) { + var i, domain, ticks = []; + if (scale.ticks) { + return scale.ticks.apply(scale, tickArguments); + } + domain = scale.domain(); + for (i = Math.ceil(domain[0]); i < domain[1]; i++) { + ticks.push(i); + } + if (ticks.length > 0 && ticks[0] > 0) { + ticks.unshift(ticks[0] - (ticks[1] - ticks[0])); + } + return ticks; + } + function copyScale() { + var newScale = scale.copy(), domain; + if (params.isCategory) { + domain = scale.domain(); + newScale.domain([domain[0], domain[1] - 1]); + } + return newScale; + } + function textFormatted(v) { + var formatted = tickFormat ? tickFormat(v) : v; + return typeof formatted !== 'undefined' ? formatted : ''; + } + function getSizeFor1Char(tick) { + if (tickTextCharSize) { + return tickTextCharSize; + } + var size = { + h: 11.5, + w: 5.5 + }; + tick.select('text').text(textFormatted).each(function (d) { + var box = this.getBoundingClientRect(), + text = textFormatted(d), + h = box.height, + w = text ? (box.width / text.length) : undefined; + if (h && w) { + size.h = h; + size.w = w; + } + }).text(''); + tickTextCharSize = size; + return size; + } + function transitionise(selection) { + return params.withoutTransition ? selection : d3.transition(selection); + } + function axis(g) { + g.each(function () { + var g = axis.g = d3.select(this); + + var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = copyScale(); + + var ticks = tickValues ? tickValues : generateTicks(scale1), + tick = g.selectAll(".tick").data(ticks, scale1), + tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", 1e-6), + // MEMO: No exit transition. The reason is this transition affects max tick width calculation because old tick will be included in the ticks. + tickExit = tick.exit().remove(), + tickUpdate = transitionise(tick).style("opacity", 1), + tickTransform, tickX, tickY; + + var range = scale.rangeExtent ? scale.rangeExtent() : scaleExtent(scale.range()), + path = g.selectAll(".domain").data([ 0 ]), + pathUpdate = (path.enter().append("path").attr("class", "domain"), transitionise(path)); + tickEnter.append("line"); + tickEnter.append("text"); + + var lineEnter = tickEnter.select("line"), + lineUpdate = tickUpdate.select("line"), + textEnter = tickEnter.select("text"), + textUpdate = tickUpdate.select("text"); + + if (params.isCategory) { + tickOffset = Math.ceil((scale1(1) - scale1(0)) / 2); + tickX = tickCentered ? 0 : tickOffset; + tickY = tickCentered ? tickOffset : 0; + } else { + tickOffset = tickX = 0; + } + + var text, tspan, sizeFor1Char = getSizeFor1Char(g.select('.tick')), counts = []; + var tickLength = Math.max(innerTickSize, 0) + tickPadding, + isVertical = orient === 'left' || orient === 'right'; + + // this should be called only when category axis + function splitTickText(d, maxWidth) { + var tickText = textFormatted(d), + subtext, spaceIndex, textWidth, splitted = []; + + if (Object.prototype.toString.call(tickText) === "[object Array]") { + return tickText; + } + + if (!maxWidth || maxWidth <= 0) { + maxWidth = isVertical ? 95 : params.isCategory ? (Math.ceil(scale1(ticks[1]) - scale1(ticks[0])) - 12) : 110; + } + + function split(splitted, text) { + spaceIndex = undefined; + for (var i = 1; i < text.length; i++) { + if (text.charAt(i) === ' ') { + spaceIndex = i; + } + subtext = text.substr(0, i + 1); + textWidth = sizeFor1Char.w * subtext.length; + // if text width gets over tick width, split by space index or crrent index + if (maxWidth < textWidth) { + return split( + splitted.concat(text.substr(0, spaceIndex ? spaceIndex : i)), + text.slice(spaceIndex ? spaceIndex + 1 : i) + ); + } + } + return splitted.concat(text); + } + + return split(splitted, tickText + ""); + } + + function tspanDy(d, i) { + var dy = sizeFor1Char.h; + if (i === 0) { + if (orient === 'left' || orient === 'right') { + dy = -((counts[d.index] - 1) * (sizeFor1Char.h / 2) - 3); + } else { + dy = ".71em"; + } + } + return dy; + } + + function tickSize(d) { + var tickPosition = scale(d) + (tickCentered ? 0 : tickOffset); + return range[0] < tickPosition && tickPosition < range[1] ? innerTickSize : 0; + } + + text = tick.select("text"); + tspan = text.selectAll('tspan') + .data(function (d, i) { + var splitted = params.tickMultiline ? splitTickText(d, params.tickWidth) : [].concat(textFormatted(d)); + counts[i] = splitted.length; + return splitted.map(function (s) { + return { index: i, splitted: s }; + }); + }); + tspan.enter().append('tspan'); + tspan.exit().remove(); + tspan.text(function (d) { return d.splitted; }); + + var rotate = params.tickTextRotate; + + function textAnchorForText(rotate) { + if (!rotate) { + return 'middle'; + } + return rotate > 0 ? "start" : "end"; + } + function textTransform(rotate) { + if (!rotate) { + return ''; + } + return "rotate(" + rotate + ")"; + } + function dxForText(rotate) { + if (!rotate) { + return 0; + } + return 8 * Math.sin(Math.PI * (rotate / 180)); + } + function yForText(rotate) { + if (!rotate) { + return tickLength; + } + return 11.5 - 2.5 * (rotate / 15) * (rotate > 0 ? 1 : -1); + } + + switch (orient) { + case "bottom": + { + tickTransform = axisX; + lineEnter.attr("y2", innerTickSize); + textEnter.attr("y", tickLength); + lineUpdate.attr("x1", tickX).attr("x2", tickX).attr("y2", tickSize); + textUpdate.attr("x", 0).attr("y", yForText(rotate)) + .style("text-anchor", textAnchorForText(rotate)) + .attr("transform", textTransform(rotate)); + tspan.attr('x', 0).attr("dy", tspanDy).attr('dx', dxForText(rotate)); + pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize); + break; + } + case "top": + { + // TODO: rotated tick text + tickTransform = axisX; + lineEnter.attr("y2", -innerTickSize); + textEnter.attr("y", -tickLength); + lineUpdate.attr("x2", 0).attr("y2", -innerTickSize); + textUpdate.attr("x", 0).attr("y", -tickLength); + text.style("text-anchor", "middle"); + tspan.attr('x', 0).attr("dy", "0em"); + pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize); + break; + } + case "left": + { + tickTransform = axisY; + lineEnter.attr("x2", -innerTickSize); + textEnter.attr("x", -tickLength); + lineUpdate.attr("x2", -innerTickSize).attr("y1", tickY).attr("y2", tickY); + textUpdate.attr("x", -tickLength).attr("y", tickOffset); + text.style("text-anchor", "end"); + tspan.attr('x', -tickLength).attr("dy", tspanDy); + pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize); + break; + } + case "right": + { + tickTransform = axisY; + lineEnter.attr("x2", innerTickSize); + textEnter.attr("x", tickLength); + lineUpdate.attr("x2", innerTickSize).attr("y2", 0); + textUpdate.attr("x", tickLength).attr("y", 0); + text.style("text-anchor", "start"); + tspan.attr('x', tickLength).attr("dy", tspanDy); + pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize); + break; + } + } + if (scale1.rangeBand) { + var x = scale1, dx = x.rangeBand() / 2; + scale0 = scale1 = function (d) { + return x(d) + dx; + }; + } else if (scale0.rangeBand) { + scale0 = scale1; + } else { + tickExit.call(tickTransform, scale1); + } + tickEnter.call(tickTransform, scale0); + tickUpdate.call(tickTransform, scale1); + }); + } + axis.scale = function (x) { + if (!arguments.length) { return scale; } + scale = x; + return axis; + }; + axis.orient = function (x) { + if (!arguments.length) { return orient; } + orient = x in {top: 1, right: 1, bottom: 1, left: 1} ? x + "" : "bottom"; + return axis; + }; + axis.tickFormat = function (format) { + if (!arguments.length) { return tickFormat; } + tickFormat = format; + return axis; + }; + axis.tickCentered = function (isCentered) { + if (!arguments.length) { return tickCentered; } + tickCentered = isCentered; + return axis; + }; + axis.tickOffset = function () { + return tickOffset; + }; + axis.tickInterval = function () { + var interval, length; + if (params.isCategory) { + interval = tickOffset * 2; + } + else { + length = axis.g.select('path.domain').node().getTotalLength() - outerTickSize * 2; + interval = length / axis.g.selectAll('line').size(); + } + return interval === Infinity ? 0 : interval; + }; + axis.ticks = function () { + if (!arguments.length) { return tickArguments; } + tickArguments = arguments; + return axis; + }; + axis.tickCulling = function (culling) { + if (!arguments.length) { return tickCulling; } + tickCulling = culling; + return axis; + }; + axis.tickValues = function (x) { + if (typeof x === 'function') { + tickValues = function () { + return x(scale.domain()); + }; + } + else { + if (!arguments.length) { return tickValues; } + tickValues = x; + } + return axis; + }; + return axis; + } + + c3_chart_internal_fn.isSafari = function () { + var ua = window.navigator.userAgent; + return ua.indexOf('Safari') >= 0 && ua.indexOf('Chrome') < 0; + }; + c3_chart_internal_fn.isChrome = function () { + var ua = window.navigator.userAgent; + return ua.indexOf('Chrome') >= 0; + }; + + // PhantomJS doesn't have support for Function.prototype.bind, which has caused confusion. Use + // this polyfill to avoid the confusion. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill + + if (!Function.prototype.bind) { + Function.prototype.bind = function(oThis) { + if (typeof this !== 'function') { + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function() {}, + fBound = function() { + return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + fNOP.prototype = this.prototype; + fBound.prototype = new fNOP(); + + return fBound; + }; + } + + if (typeof define === 'function' && define.amd) { + define("c3", ["d3"], c3); + } else if ('undefined' !== typeof exports && 'undefined' !== typeof module) { + module.exports = c3; + } else { + window.c3 = c3; + } + +})(window); diff --git a/plugins/c3/c3.min.css b/plugins/c3/c3.min.css new file mode 100644 index 0000000..08e5084 --- /dev/null +++ b/plugins/c3/c3.min.css @@ -0,0 +1 @@ +.c3 svg{font:10px sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000} \ No newline at end of file diff --git a/plugins/c3/c3.min.js b/plugins/c3/c3.min.js new file mode 100644 index 0000000..d99c28b --- /dev/null +++ b/plugins/c3/c3.min.js @@ -0,0 +1,5 @@ +!function(a){"use strict";function b(a){this.owner=a}function c(a,b){if(Object.create)b.prototype=Object.create(a.prototype);else{var c=function(){};c.prototype=a.prototype,b.prototype=new c}return b.prototype.constructor=b,b}function d(a){var b=this.internal=new e(this);b.loadConfig(a),b.init(),function c(a,b,d){Object.keys(a).forEach(function(e){b[e]=a[e].bind(d),Object.keys(a[e]).length>0&&c(a[e],b[e],d)})}(h,this,this)}function e(b){var c=this;c.d3=a.d3?a.d3:"undefined"!=typeof require?require("d3"):void 0,c.api=b,c.config=c.getDefaultConfig(),c.data={},c.cache={},c.axes={}}function f(a){b.call(this,a)}function g(a,b){function c(a,b){a.attr("transform",function(a){return"translate("+Math.ceil(b(a)+u)+", 0)"})}function d(a,b){a.attr("transform",function(a){return"translate(0,"+Math.ceil(b(a))+")"})}function e(a){var b=a[0],c=a[a.length-1];return c>b?[b,c]:[c,b]}function f(a){var b,c,d=[];if(a.ticks)return a.ticks.apply(a,n);for(c=a.domain(),b=Math.ceil(c[0]);b<c[1];b++)d.push(b);return d.length>0&&d[0]>0&&d.unshift(d[0]-(d[1]-d[0])),d}function g(){var a,c=p.copy();return b.isCategory&&(a=p.domain(),c.domain([a[0],a[1]-1])),c}function h(a){var b=m?m(a):a;return"undefined"!=typeof b?b:""}function i(a){if(z)return z;var b={h:11.5,w:5.5};return a.select("text").text(h).each(function(a){var c=this.getBoundingClientRect(),d=h(a),e=c.height,f=d?c.width/d.length:void 0;e&&f&&(b.h=e,b.w=f)}).text(""),z=b,b}function j(c){return b.withoutTransition?c:a.transition(c)}function k(m){m.each(function(){function m(a,c){function d(a,b){f=void 0;for(var h=1;h<b.length;h++)if(" "===b.charAt(h)&&(f=h),e=b.substr(0,h+1),g=U.w*e.length,g>c)return d(a.concat(b.substr(0,f?f:h)),b.slice(f?f+1:h));return a.concat(b)}var e,f,g,i=h(a),j=[];return"[object Array]"===Object.prototype.toString.call(i)?i:((!c||0>=c)&&(c=X?95:b.isCategory?Math.ceil(F(G[1])-F(G[0]))-12:110),d(j,i+""))}function n(a,b){var c=U.h;return 0===b&&(c="left"===q||"right"===q?-((V[a.index]-1)*(U.h/2)-3):".71em"),c}function v(a){var b=p(a)+(o?0:u);return L[0]<b&&b<L[1]?r:0}function w(a){return a?a>0?"start":"end":"middle"}function x(a){return a?"rotate("+a+")":""}function y(a){return a?8*Math.sin(Math.PI*(a/180)):0}function z(a){return a?11.5-2.5*(a/15)*(a>0?1:-1):W}var A,B,C,D=k.g=a.select(this),E=this.__chart__||p,F=this.__chart__=g(),G=t?t:f(F),H=D.selectAll(".tick").data(G,F),I=H.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),J=H.exit().remove(),K=j(H).style("opacity",1),L=p.rangeExtent?p.rangeExtent():e(p.range()),M=D.selectAll(".domain").data([0]),N=(M.enter().append("path").attr("class","domain"),j(M));I.append("line"),I.append("text");var O=I.select("line"),P=K.select("line"),Q=I.select("text"),R=K.select("text");b.isCategory?(u=Math.ceil((F(1)-F(0))/2),B=o?0:u,C=o?u:0):u=B=0;var S,T,U=i(D.select(".tick")),V=[],W=Math.max(r,0)+s,X="left"===q||"right"===q;S=H.select("text"),T=S.selectAll("tspan").data(function(a,c){var d=b.tickMultiline?m(a,b.tickWidth):[].concat(h(a));return V[c]=d.length,d.map(function(a){return{index:c,splitted:a}})}),T.enter().append("tspan"),T.exit().remove(),T.text(function(a){return a.splitted});var Y=b.tickTextRotate;switch(q){case"bottom":A=c,O.attr("y2",r),Q.attr("y",W),P.attr("x1",B).attr("x2",B).attr("y2",v),R.attr("x",0).attr("y",z(Y)).style("text-anchor",w(Y)).attr("transform",x(Y)),T.attr("x",0).attr("dy",n).attr("dx",y(Y)),N.attr("d","M"+L[0]+","+l+"V0H"+L[1]+"V"+l);break;case"top":A=c,O.attr("y2",-r),Q.attr("y",-W),P.attr("x2",0).attr("y2",-r),R.attr("x",0).attr("y",-W),S.style("text-anchor","middle"),T.attr("x",0).attr("dy","0em"),N.attr("d","M"+L[0]+","+-l+"V0H"+L[1]+"V"+-l);break;case"left":A=d,O.attr("x2",-r),Q.attr("x",-W),P.attr("x2",-r).attr("y1",C).attr("y2",C),R.attr("x",-W).attr("y",u),S.style("text-anchor","end"),T.attr("x",-W).attr("dy",n),N.attr("d","M"+-l+","+L[0]+"H0V"+L[1]+"H"+-l);break;case"right":A=d,O.attr("x2",r),Q.attr("x",W),P.attr("x2",r).attr("y2",0),R.attr("x",W).attr("y",0),S.style("text-anchor","start"),T.attr("x",W).attr("dy",n),N.attr("d","M"+l+","+L[0]+"H0V"+L[1]+"H"+l)}if(F.rangeBand){var Z=F,$=Z.rangeBand()/2;E=F=function(a){return Z(a)+$}}else E.rangeBand?E=F:J.call(A,F);I.call(A,E),K.call(A,F)})}var l,m,n,o,p=a.scale.linear(),q="bottom",r=6,s=3,t=null,u=0,v=!0;return b=b||{},l=b.withOuterTick?6:0,k.scale=function(a){return arguments.length?(p=a,k):p},k.orient=function(a){return arguments.length?(q=a in{top:1,right:1,bottom:1,left:1}?a+"":"bottom",k):q},k.tickFormat=function(a){return arguments.length?(m=a,k):m},k.tickCentered=function(a){return arguments.length?(o=a,k):o},k.tickOffset=function(){return u},k.tickInterval=function(){var a,c;return b.isCategory?a=2*u:(c=k.g.select("path.domain").node().getTotalLength()-2*l,a=c/k.g.selectAll("line").size()),1/0===a?0:a},k.ticks=function(){return arguments.length?(n=arguments,k):n},k.tickCulling=function(a){return arguments.length?(v=a,k):v},k.tickValues=function(a){if("function"==typeof a)t=function(){return a(p.domain())};else{if(!arguments.length)return t;t=a}return k},k}var h,i,j,k={version:"0.4.10"};k.generate=function(a){return new d(a)},k.chart={fn:d.prototype,internal:{fn:e.prototype,axis:{fn:f.prototype}}},h=k.chart.fn,i=k.chart.internal.fn,j=k.chart.internal.axis.fn,i.init=function(){var a=this,b=a.config;if(a.initParams(),b.data_url)a.convertUrlToData(b.data_url,b.data_mimeType,b.data_keys,a.initWithData);else if(b.data_json)a.initWithData(a.convertJsonToData(b.data_json,b.data_keys));else if(b.data_rows)a.initWithData(a.convertRowsToData(b.data_rows));else{if(!b.data_columns)throw Error("url or json or rows or columns is required.");a.initWithData(a.convertColumnsToData(b.data_columns))}},i.initParams=function(){var a=this,b=a.d3,c=a.config;a.clipId="c3-"+ +new Date+"-clip",a.clipIdForXAxis=a.clipId+"-xaxis",a.clipIdForYAxis=a.clipId+"-yaxis",a.clipIdForGrid=a.clipId+"-grid",a.clipIdForSubchart=a.clipId+"-subchart",a.clipPath=a.getClipPath(a.clipId),a.clipPathForXAxis=a.getClipPath(a.clipIdForXAxis),a.clipPathForYAxis=a.getClipPath(a.clipIdForYAxis),a.clipPathForGrid=a.getClipPath(a.clipIdForGrid),a.clipPathForSubchart=a.getClipPath(a.clipIdForSubchart),a.dragStart=null,a.dragging=!1,a.flowing=!1,a.cancelClick=!1,a.mouseover=!1,a.transiting=!1,a.color=a.generateColor(),a.levelColor=a.generateLevelColor(),a.dataTimeFormat=c.data_xLocaltime?b.time.format:b.time.format.utc,a.axisTimeFormat=c.axis_x_localtime?b.time.format:b.time.format.utc,a.defaultAxisTimeFormat=a.axisTimeFormat.multi([[".%L",function(a){return a.getMilliseconds()}],[":%S",function(a){return a.getSeconds()}],["%I:%M",function(a){return a.getMinutes()}],["%I %p",function(a){return a.getHours()}],["%-m/%-d",function(a){return a.getDay()&&1!==a.getDate()}],["%-m/%-d",function(a){return 1!==a.getDate()}],["%-m/%-d",function(a){return a.getMonth()}],["%Y/%-m/%-d",function(){return!0}]]),a.hiddenTargetIds=[],a.hiddenLegendIds=[],a.focusedTargetIds=[],a.defocusedTargetIds=[],a.xOrient=c.axis_rotated?"left":"bottom",a.yOrient=c.axis_rotated?c.axis_y_inner?"top":"bottom":c.axis_y_inner?"right":"left",a.y2Orient=c.axis_rotated?c.axis_y2_inner?"bottom":"top":c.axis_y2_inner?"left":"right",a.subXOrient=c.axis_rotated?"left":"bottom",a.isLegendRight="right"===c.legend_position,a.isLegendInset="inset"===c.legend_position,a.isLegendTop="top-left"===c.legend_inset_anchor||"top-right"===c.legend_inset_anchor,a.isLegendLeft="top-left"===c.legend_inset_anchor||"bottom-left"===c.legend_inset_anchor,a.legendStep=0,a.legendItemWidth=0,a.legendItemHeight=0,a.currentMaxTickWidths={x:0,y:0,y2:0},a.rotated_padding_left=30,a.rotated_padding_right=c.axis_rotated&&!c.axis_x_show?0:30,a.rotated_padding_top=5,a.withoutFadeIn={},a.intervalForObserveInserted=void 0,a.axes.subx=b.selectAll([])},i.initChartElements=function(){this.initBar&&this.initBar(),this.initLine&&this.initLine(),this.initArc&&this.initArc(),this.initGauge&&this.initGauge(),this.initText&&this.initText()},i.initWithData=function(b){var c,d,e=this,g=e.d3,h=e.config,i=!0;e.axis=new f(e),e.initPie&&e.initPie(),e.initBrush&&e.initBrush(),e.initZoom&&e.initZoom(),e.selectChart=h.bindto?"function"==typeof h.bindto.node?h.bindto:g.select(h.bindto):g.selectAll([]),e.selectChart.empty()&&(e.selectChart=g.select(document.createElement("div")).style("opacity",0),e.observeInserted(e.selectChart),i=!1),e.selectChart.html("").classed("c3",!0),e.data.xs={},e.data.targets=e.convertDataToTargets(b),h.data_filter&&(e.data.targets=e.data.targets.filter(h.data_filter)),h.data_hide&&e.addHiddenTargetIds(h.data_hide===!0?e.mapToIds(e.data.targets):h.data_hide),h.legend_hide&&e.addHiddenLegendIds(h.legend_hide===!0?e.mapToIds(e.data.targets):h.legend_hide),e.hasType("gauge")&&(h.legend_show=!1),e.updateSizes(),e.updateScales(),e.x.domain(g.extent(e.getXDomain(e.data.targets))),e.y.domain(e.getYDomain(e.data.targets,"y")),e.y2.domain(e.getYDomain(e.data.targets,"y2")),e.subX.domain(e.x.domain()),e.subY.domain(e.y.domain()),e.subY2.domain(e.y2.domain()),e.orgXDomain=e.x.domain(),e.brush&&e.brush.scale(e.subX),h.zoom_enabled&&e.zoom.scale(e.x),e.svg=e.selectChart.append("svg").style("overflow","hidden").on("mouseenter",function(){return h.onmouseover.call(e)}).on("mouseleave",function(){return h.onmouseout.call(e)}),c=e.svg.append("defs"),e.clipChart=e.appendClip(c,e.clipId),e.clipXAxis=e.appendClip(c,e.clipIdForXAxis),e.clipYAxis=e.appendClip(c,e.clipIdForYAxis),e.clipGrid=e.appendClip(c,e.clipIdForGrid),e.clipSubchart=e.appendClip(c,e.clipIdForSubchart),e.updateSvgSize(),d=e.main=e.svg.append("g").attr("transform",e.getTranslate("main")),e.initSubchart&&e.initSubchart(),e.initTooltip&&e.initTooltip(),e.initLegend&&e.initLegend(),d.append("text").attr("class",l.text+" "+l.empty).attr("text-anchor","middle").attr("dominant-baseline","middle"),e.initRegion(),e.initGrid(),d.append("g").attr("clip-path",e.clipPath).attr("class",l.chart),h.grid_lines_front&&e.initGridLines(),e.initEventRect(),e.initChartElements(),d.insert("rect",h.zoom_privileged?null:"g."+l.regions).attr("class",l.zoomRect).attr("width",e.width).attr("height",e.height).style("opacity",0).on("dblclick.zoom",null),h.axis_x_extent&&e.brush.extent(e.getDefaultExtent()),e.axis.init(),e.updateTargets(e.data.targets),i&&(e.updateDimension(),e.config.oninit.call(e),e.redraw({withTransition:!1,withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransitionForAxis:!1})),null==a.onresize&&(a.onresize=e.generateResize()),a.onresize.add&&(a.onresize.add(function(){h.onresize.call(e)}),a.onresize.add(function(){e.api.flush()}),a.onresize.add(function(){h.onresized.call(e)})),e.api.element=e.selectChart.node()},i.smoothLines=function(a,b){var c=this;"grid"===b&&a.each(function(){var a=c.d3.select(this),b=a.attr("x1"),d=a.attr("x2"),e=a.attr("y1"),f=a.attr("y2");a.attr({x1:Math.ceil(b),x2:Math.ceil(d),y1:Math.ceil(e),y2:Math.ceil(f)})})},i.updateSizes=function(){var a=this,b=a.config,c=a.legend?a.getLegendHeight():0,d=a.legend?a.getLegendWidth():0,e=a.isLegendRight||a.isLegendInset?0:c,f=a.hasArcType(),g=b.axis_rotated||f?0:a.getHorizontalAxisHeight("x"),h=b.subchart_show&&!f?b.subchart_size_height+g:0;a.currentWidth=a.getCurrentWidth(),a.currentHeight=a.getCurrentHeight(),a.margin=b.axis_rotated?{top:a.getHorizontalAxisHeight("y2")+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:a.getHorizontalAxisHeight("y")+e+a.getCurrentPaddingBottom(),left:h+(f?0:a.getCurrentPaddingLeft())}:{top:4+a.getCurrentPaddingTop(),right:f?0:a.getCurrentPaddingRight(),bottom:g+h+e+a.getCurrentPaddingBottom(),left:f?0:a.getCurrentPaddingLeft()},a.margin2=b.axis_rotated?{top:a.margin.top,right:0/0,bottom:20+e,left:a.rotated_padding_left}:{top:a.currentHeight-h-e,right:0/0,bottom:g+e,left:a.margin.left},a.margin3={top:0,right:0/0,bottom:0,left:0},a.updateSizeForLegend&&a.updateSizeForLegend(c,d),a.width=a.currentWidth-a.margin.left-a.margin.right,a.height=a.currentHeight-a.margin.top-a.margin.bottom,a.width<0&&(a.width=0),a.height<0&&(a.height=0),a.width2=b.axis_rotated?a.margin.left-a.rotated_padding_left-a.rotated_padding_right:a.width,a.height2=b.axis_rotated?a.height:a.currentHeight-a.margin2.top-a.margin2.bottom,a.width2<0&&(a.width2=0),a.height2<0&&(a.height2=0),a.arcWidth=a.width-(a.isLegendRight?d+10:0),a.arcHeight=a.height-(a.isLegendRight?0:10),a.hasType("gauge")&&(a.arcHeight+=a.height-a.getGaugeLabelHeight()),a.updateRadius&&a.updateRadius(),a.isLegendRight&&f&&(a.margin3.left=a.arcWidth/2+1.1*a.radiusExpanded)},i.updateTargets=function(a){var b=this;b.updateTargetsForText(a),b.updateTargetsForBar(a),b.updateTargetsForLine(a),b.hasArcType()&&b.updateTargetsForArc&&b.updateTargetsForArc(a),b.updateTargetsForSubchart&&b.updateTargetsForSubchart(a),b.showTargets()},i.showTargets=function(){var a=this;a.svg.selectAll("."+l.target).filter(function(b){return a.isTargetToShow(b.id)}).transition().duration(a.config.transition_duration).style("opacity",1)},i.redraw=function(a,b){var c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,x,y,z,A,B,C,D,E,F,G,H=this,I=H.main,J=H.d3,K=H.config,L=H.getShapeIndices(H.isAreaType),M=H.getShapeIndices(H.isBarType),N=H.getShapeIndices(H.isLineType),O=H.hasArcType(),P=H.filterTargetsToShow(H.data.targets),Q=H.xv.bind(H);if(a=a||{},c=w(a,"withY",!0),d=w(a,"withSubchart",!0),e=w(a,"withTransition",!0),h=w(a,"withTransform",!1),i=w(a,"withUpdateXDomain",!1),j=w(a,"withUpdateOrgXDomain",!1),k=w(a,"withTrimXDomain",!0),p=w(a,"withUpdateXAxis",i),m=w(a,"withLegend",!1),n=w(a,"withEventRect",!0),o=w(a,"withDimension",!0),f=w(a,"withTransitionForExit",e),g=w(a,"withTransitionForAxis",e),v=e?K.transition_duration:0,x=f?v:0,y=g?v:0,b=b||H.axis.generateTransitions(y),m&&K.legend_show?H.updateLegend(H.mapToIds(H.data.targets),a,b):o&&H.updateDimension(!0),H.isCategorized()&&0===P.length&&H.x.domain([0,H.axes.x.selectAll(".tick").size()]),P.length?(H.updateXDomain(P,i,j,k),K.axis_x_tick_values||(B=H.axis.updateXAxisTickValues(P))):(H.xAxis.tickValues([]),H.subXAxis.tickValues([])),K.zoom_rescale&&!a.flow&&(E=H.x.orgDomain()),H.y.domain(H.getYDomain(P,"y",E)),H.y2.domain(H.getYDomain(P,"y2",E)),!K.axis_y_tick_values&&K.axis_y_tick_count&&H.yAxis.tickValues(H.axis.generateTickValues(H.y.domain(),K.axis_y_tick_count)),!K.axis_y2_tick_values&&K.axis_y2_tick_count&&H.y2Axis.tickValues(H.axis.generateTickValues(H.y2.domain(),K.axis_y2_tick_count)),H.axis.redraw(b,O),H.axis.updateLabels(e),(i||p)&&P.length)if(K.axis_x_tick_culling&&B){for(C=1;C<B.length;C++)if(B.length/C<K.axis_x_tick_culling_max){D=C;break}H.svg.selectAll("."+l.axisX+" .tick text").each(function(a){var b=B.indexOf(a);b>=0&&J.select(this).style("display",b%D?"none":"block")})}else H.svg.selectAll("."+l.axisX+" .tick text").style("display","block");q=H.generateDrawArea?H.generateDrawArea(L,!1):void 0,r=H.generateDrawBar?H.generateDrawBar(M):void 0,s=H.generateDrawLine?H.generateDrawLine(N,!1):void 0,t=H.generateXYForText(L,M,N,!0),u=H.generateXYForText(L,M,N,!1),c&&(H.subY.domain(H.getYDomain(P,"y")),H.subY2.domain(H.getYDomain(P,"y2"))),H.tooltip.style("display","none"),H.updateXgridFocus(),I.select("text."+l.text+"."+l.empty).attr("x",H.width/2).attr("y",H.height/2).text(K.data_empty_label_text).transition().style("opacity",P.length?0:1),H.updateGrid(v),H.updateRegion(v),H.updateBar(x),H.updateLine(x),H.updateArea(x),H.updateCircle(),H.hasDataLabel()&&H.updateText(x),H.redrawArc&&H.redrawArc(v,x,h),H.redrawSubchart&&H.redrawSubchart(d,b,v,x,L,M,N),I.selectAll("."+l.selectedCircles).filter(H.isBarType.bind(H)).selectAll("circle").remove(),K.interaction_enabled&&!a.flow&&n&&(H.redrawEventRect(),H.updateZoom&&H.updateZoom()),H.updateCircleY(),F=(H.config.axis_rotated?H.circleY:H.circleX).bind(H),G=(H.config.axis_rotated?H.circleX:H.circleY).bind(H),a.flow&&(A=H.generateFlow({targets:P,flow:a.flow,duration:a.flow.duration,drawBar:r,drawLine:s,drawArea:q,cx:F,cy:G,xv:Q,xForText:t,yForText:u})),(v||A)&&H.isTabVisible()?J.transition().duration(v).each(function(){var b=[];[H.redrawBar(r,!0),H.redrawLine(s,!0),H.redrawArea(q,!0),H.redrawCircle(F,G,!0),H.redrawText(t,u,a.flow,!0),H.redrawRegion(!0),H.redrawGrid(!0)].forEach(function(a){a.forEach(function(a){b.push(a)})}),z=H.generateWait(),b.forEach(function(a){z.add(a)})}).call(z,function(){A&&A(),K.onrendered&&K.onrendered.call(H)}):(H.redrawBar(r),H.redrawLine(s),H.redrawArea(q),H.redrawCircle(F,G),H.redrawText(t,u,a.flow),H.redrawRegion(),H.redrawGrid(),K.onrendered&&K.onrendered.call(H)),H.mapToIds(H.data.targets).forEach(function(a){H.withoutFadeIn[a]=!0})},i.updateAndRedraw=function(a){var b,c=this,d=c.config;a=a||{},a.withTransition=w(a,"withTransition",!0),a.withTransform=w(a,"withTransform",!1),a.withLegend=w(a,"withLegend",!1),a.withUpdateXDomain=!0,a.withUpdateOrgXDomain=!0,a.withTransitionForExit=!1,a.withTransitionForTransform=w(a,"withTransitionForTransform",a.withTransition),c.updateSizes(),a.withLegend&&d.legend_show||(b=c.axis.generateTransitions(a.withTransitionForAxis?d.transition_duration:0),c.updateScales(),c.updateSvgSize(),c.transformAll(a.withTransitionForTransform,b)),c.redraw(a,b)},i.redrawWithoutRescale=function(){this.redraw({withY:!1,withSubchart:!1,withEventRect:!1,withTransitionForAxis:!1})},i.isTimeSeries=function(){return"timeseries"===this.config.axis_x_type},i.isCategorized=function(){return this.config.axis_x_type.indexOf("categor")>=0},i.isCustomX=function(){var a=this,b=a.config;return!a.isTimeSeries()&&(b.data_x||v(b.data_xs))},i.isTimeSeriesY=function(){return"timeseries"===this.config.axis_y_type},i.getTranslate=function(a){var b,c,d=this,e=d.config;return"main"===a?(b=s(d.margin.left),c=s(d.margin.top)):"context"===a?(b=s(d.margin2.left),c=s(d.margin2.top)):"legend"===a?(b=d.margin3.left,c=d.margin3.top):"x"===a?(b=0,c=e.axis_rotated?0:d.height):"y"===a?(b=0,c=e.axis_rotated?d.height:0):"y2"===a?(b=e.axis_rotated?0:d.width,c=e.axis_rotated?1:0):"subx"===a?(b=0,c=e.axis_rotated?0:d.height2):"arc"===a&&(b=d.arcWidth/2,c=d.arcHeight/2),"translate("+b+","+c+")"},i.initialOpacity=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?1:0},i.initialOpacityForCircle=function(a){return null!==a.value&&this.withoutFadeIn[a.id]?this.opacityForCircle(a):0},i.opacityForCircle=function(a){var b=this.config.point_show?1:0;return m(a.value)?this.isScatterType(a)?.5:b:0},i.opacityForText=function(){return this.hasDataLabel()?1:0},i.xx=function(a){return a?this.x(a.x):null},i.xv=function(a){var b=this,c=a.value;return b.isTimeSeries()?c=b.parseDate(a.value):b.isCategorized()&&"string"==typeof a.value&&(c=b.config.axis_x_categories.indexOf(a.value)),Math.ceil(b.x(c))},i.yv=function(a){var b=this,c=a.axis&&"y2"===a.axis?b.y2:b.y;return Math.ceil(c(a.value))},i.subxx=function(a){return a?this.subX(a.x):null},i.transformMain=function(a,b){var c,d,e,f=this;b&&b.axisX?c=b.axisX:(c=f.main.select("."+l.axisX),a&&(c=c.transition())),b&&b.axisY?d=b.axisY:(d=f.main.select("."+l.axisY),a&&(d=d.transition())),b&&b.axisY2?e=b.axisY2:(e=f.main.select("."+l.axisY2),a&&(e=e.transition())),(a?f.main.transition():f.main).attr("transform",f.getTranslate("main")),c.attr("transform",f.getTranslate("x")),d.attr("transform",f.getTranslate("y")),e.attr("transform",f.getTranslate("y2")),f.main.select("."+l.chartArcs).attr("transform",f.getTranslate("arc"))},i.transformAll=function(a,b){var c=this;c.transformMain(a,b),c.config.subchart_show&&c.transformContext(a,b),c.legend&&c.transformLegend(a)},i.updateSvgSize=function(){var a=this,b=a.svg.select(".c3-brush .background");a.svg.attr("width",a.currentWidth).attr("height",a.currentHeight),a.svg.selectAll(["#"+a.clipId,"#"+a.clipIdForGrid]).select("rect").attr("width",a.width).attr("height",a.height),a.svg.select("#"+a.clipIdForXAxis).select("rect").attr("x",a.getXAxisClipX.bind(a)).attr("y",a.getXAxisClipY.bind(a)).attr("width",a.getXAxisClipWidth.bind(a)).attr("height",a.getXAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForYAxis).select("rect").attr("x",a.getYAxisClipX.bind(a)).attr("y",a.getYAxisClipY.bind(a)).attr("width",a.getYAxisClipWidth.bind(a)).attr("height",a.getYAxisClipHeight.bind(a)),a.svg.select("#"+a.clipIdForSubchart).select("rect").attr("width",a.width).attr("height",b.size()?b.attr("height"):0),a.svg.select("."+l.zoomRect).attr("width",a.width).attr("height",a.height),a.selectChart.style("max-height",a.currentHeight+"px")},i.updateDimension=function(a){var b=this;a||(b.config.axis_rotated?(b.axes.x.call(b.xAxis),b.axes.subx.call(b.subXAxis)):(b.axes.y.call(b.yAxis),b.axes.y2.call(b.y2Axis))),b.updateSizes(),b.updateScales(),b.updateSvgSize(),b.transformAll(!1)},i.observeInserted=function(b){var c,d=this;return"undefined"==typeof MutationObserver?void a.console.error("MutationObserver not defined."):(c=new MutationObserver(function(e){e.forEach(function(e){"childList"===e.type&&e.previousSibling&&(c.disconnect(),d.intervalForObserveInserted=a.setInterval(function(){b.node().parentNode&&(a.clearInterval(d.intervalForObserveInserted),d.updateDimension(),d.config.oninit.call(d),d.redraw({withTransform:!0,withUpdateXDomain:!0,withUpdateOrgXDomain:!0,withTransition:!1,withTransitionForTransform:!1,withLegend:!0}),b.transition().style("opacity",1))},10))})}),void c.observe(b.node(),{attributes:!0,childList:!0,characterData:!0}))},i.generateResize=function(){function a(){b.forEach(function(a){a()})}var b=[];return a.add=function(a){b.push(a)},a},i.endall=function(a,b){var c=0;a.each(function(){++c}).each("end",function(){--c||b.apply(this,arguments)})},i.generateWait=function(){var a=[],b=function(b,c){var d=setInterval(function(){var b=0;a.forEach(function(a){if(a.empty())return void(b+=1);try{a.transition()}catch(c){b+=1}}),b===a.length&&(clearInterval(d),c&&c())},10)};return b.add=function(b){a.push(b)},b},i.parseDate=function(b){var c,d=this;return b instanceof Date?c=b:"string"==typeof b?c=d.dataTimeFormat(d.config.data_xFormat).parse(b):"number"!=typeof b&&isNaN(b)||(c=new Date(+b)),(!c||isNaN(+c))&&a.console.error("Failed to parse x '"+b+"' to Date object"),c},i.isTabVisible=function(){var a;return"undefined"!=typeof document.hidden?a="hidden":"undefined"!=typeof document.mozHidden?a="mozHidden":"undefined"!=typeof document.msHidden?a="msHidden":"undefined"!=typeof document.webkitHidden&&(a="webkitHidden"),document[a]?!1:!0},i.getDefaultConfig=function(){var a={bindto:"#chart",size_width:void 0,size_height:void 0,padding_left:void 0,padding_right:void 0,padding_top:void 0,padding_bottom:void 0,zoom_enabled:!1,zoom_extent:void 0,zoom_privileged:!1,zoom_rescale:!1,zoom_onzoom:function(){},zoom_onzoomstart:function(){},zoom_onzoomend:function(){},interaction_enabled:!0,onmouseover:function(){},onmouseout:function(){},onresize:function(){},onresized:function(){},oninit:function(){},onrendered:function(){},transition_duration:350,data_x:void 0,data_xs:{},data_xFormat:"%Y-%m-%d",data_xLocaltime:!0,data_xSort:!0,data_idConverter:function(a){return a},data_names:{},data_classes:{},data_groups:[],data_axes:{},data_type:void 0,data_types:{},data_labels:{},data_order:"desc",data_regions:{},data_color:void 0,data_colors:{},data_hide:!1,data_filter:void 0,data_selection_enabled:!1,data_selection_grouped:!1,data_selection_isselectable:function(){return!0},data_selection_multiple:!0,data_selection_draggable:!1,data_onclick:function(){},data_onmouseover:function(){},data_onmouseout:function(){},data_onselected:function(){},data_onunselected:function(){},data_url:void 0,data_json:void 0,data_rows:void 0,data_columns:void 0,data_mimeType:void 0,data_keys:void 0,data_empty_label_text:"",subchart_show:!1,subchart_size_height:60,subchart_onbrush:function(){},color_pattern:[],color_threshold:{},legend_show:!0,legend_hide:!1,legend_position:"bottom",legend_inset_anchor:"top-left",legend_inset_x:10,legend_inset_y:0,legend_inset_step:void 0,legend_item_onclick:void 0,legend_item_onmouseover:void 0,legend_item_onmouseout:void 0,legend_equally:!1,axis_rotated:!1,axis_x_show:!0,axis_x_type:"indexed",axis_x_localtime:!0,axis_x_categories:[],axis_x_tick_centered:!1,axis_x_tick_format:void 0,axis_x_tick_culling:{},axis_x_tick_culling_max:10,axis_x_tick_count:void 0,axis_x_tick_fit:!0,axis_x_tick_values:null,axis_x_tick_rotate:0,axis_x_tick_outer:!0,axis_x_tick_multiline:!0,axis_x_tick_width:null,axis_x_max:void 0,axis_x_min:void 0,axis_x_padding:{},axis_x_height:void 0,axis_x_extent:void 0,axis_x_label:{},axis_y_show:!0,axis_y_type:void 0,axis_y_max:void 0,axis_y_min:void 0,axis_y_inverted:!1,axis_y_center:void 0,axis_y_inner:void 0,axis_y_label:{},axis_y_tick_format:void 0,axis_y_tick_outer:!0,axis_y_tick_values:null,axis_y_tick_count:void 0,axis_y_tick_time_value:void 0,axis_y_tick_time_interval:void 0,axis_y_padding:{},axis_y_default:void 0,axis_y2_show:!1,axis_y2_max:void 0,axis_y2_min:void 0,axis_y2_inverted:!1,axis_y2_center:void 0,axis_y2_inner:void 0,axis_y2_label:{},axis_y2_tick_format:void 0,axis_y2_tick_outer:!0,axis_y2_tick_values:null,axis_y2_tick_count:void 0,axis_y2_padding:{},axis_y2_default:void 0,grid_x_show:!1,grid_x_type:"tick",grid_x_lines:[],grid_y_show:!1,grid_y_lines:[],grid_y_ticks:10,grid_focus_show:!0,grid_lines_front:!0,point_show:!0,point_r:2.5,point_focus_expand_enabled:!0,point_focus_expand_r:void 0,point_select_r:void 0,line_connectNull:!1,line_step_type:"step",bar_width:void 0,bar_width_ratio:.6,bar_width_max:void 0,bar_zerobased:!0,area_zerobased:!0,pie_label_show:!0,pie_label_format:void 0,pie_label_threshold:.05,pie_expand:!0,gauge_label_show:!0,gauge_label_format:void 0,gauge_expand:!0,gauge_min:0,gauge_max:100,gauge_units:void 0,gauge_width:void 0,donut_label_show:!0,donut_label_format:void 0,donut_label_threshold:.05,donut_width:void 0,donut_expand:!0,donut_title:"",regions:[],tooltip_show:!0,tooltip_grouped:!0,tooltip_format_title:void 0,tooltip_format_name:void 0,tooltip_format_value:void 0,tooltip_position:void 0,tooltip_contents:function(a,b,c,d){return this.getTooltipContent?this.getTooltipContent(a,b,c,d):""},tooltip_init_show:!1,tooltip_init_x:0,tooltip_init_position:{top:"0px",left:"50px"}};return Object.keys(this.additionalConfig).forEach(function(b){a[b]=this.additionalConfig[b]},this),a},i.additionalConfig={},i.loadConfig=function(a){function b(){var a=d.shift();return a&&c&&"object"==typeof c&&a in c?(c=c[a],b()):a?void 0:c}var c,d,e,f=this.config;Object.keys(f).forEach(function(g){c=a,d=g.split("_"),e=b(),q(e)&&(f[g]=e)})},i.getScale=function(a,b,c){return(c?this.d3.time.scale():this.d3.scale.linear()).range([a,b])},i.getX=function(a,b,c,d){var e,f=this,g=f.getScale(a,b,f.isTimeSeries()),h=c?g.domain(c):g;f.isCategorized()?(d=d||function(){return 0},g=function(a,b){var c=h(a)+d(a);return b?c:Math.ceil(c)}):g=function(a,b){var c=h(a);return b?c:Math.ceil(c)};for(e in h)g[e]=h[e];return g.orgDomain=function(){return h.domain()},f.isCategorized()&&(g.domain=function(a){return arguments.length?(h.domain(a),g):(a=this.orgDomain(),[a[0],a[1]+1])}),g},i.getY=function(a,b,c){var d=this.getScale(a,b,this.isTimeSeriesY());return c&&d.domain(c),d},i.getYScale=function(a){return"y2"===this.axis.getId(a)?this.y2:this.y},i.getSubYScale=function(a){return"y2"===this.axis.getId(a)?this.subY2:this.subY},i.updateScales=function(){var a=this,b=a.config,c=!a.x;a.xMin=b.axis_rotated?1:0,a.xMax=b.axis_rotated?a.height:a.width,a.yMin=b.axis_rotated?0:a.height,a.yMax=b.axis_rotated?a.width:1,a.subXMin=a.xMin,a.subXMax=a.xMax,a.subYMin=b.axis_rotated?0:a.height2,a.subYMax=b.axis_rotated?a.width2:1,a.x=a.getX(a.xMin,a.xMax,c?void 0:a.x.orgDomain(),function(){return a.xAxis.tickOffset()}),a.y=a.getY(a.yMin,a.yMax,c?b.axis_y_default:a.y.domain()),a.y2=a.getY(a.yMin,a.yMax,c?b.axis_y2_default:a.y2.domain()),a.subX=a.getX(a.xMin,a.xMax,a.orgXDomain,function(b){return b%1?0:a.subXAxis.tickOffset()}),a.subY=a.getY(a.subYMin,a.subYMax,c?b.axis_y_default:a.subY.domain()),a.subY2=a.getY(a.subYMin,a.subYMax,c?b.axis_y2_default:a.subY2.domain()),a.xAxisTickFormat=a.axis.getXAxisTickFormat(),a.xAxisTickValues=a.axis.getXAxisTickValues(),a.yAxisTickValues=a.axis.getYAxisTickValues(),a.y2AxisTickValues=a.axis.getY2AxisTickValues(),a.xAxis=a.axis.getXAxis(a.x,a.xOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.subXAxis=a.axis.getXAxis(a.subX,a.subXOrient,a.xAxisTickFormat,a.xAxisTickValues,b.axis_x_tick_outer),a.yAxis=a.axis.getYAxis(a.y,a.yOrient,b.axis_y_tick_format,a.yAxisTickValues,b.axis_y_tick_outer),a.y2Axis=a.axis.getYAxis(a.y2,a.y2Orient,b.axis_y2_tick_format,a.y2AxisTickValues,b.axis_y2_tick_outer),c||(a.brush&&a.brush.scale(a.subX),b.zoom_enabled&&a.zoom.scale(a.x)),a.updateArc&&a.updateArc()},i.getYDomainMin=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasNegativeValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=0>a?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&+a>0||(k[d][b]+=+a)});return h.d3.min(Object.keys(k).map(function(a){return h.d3.min(k[a])}))},i.getYDomainMax=function(a){var b,c,d,e,f,g,h=this,i=h.config,j=h.mapToIds(a),k=h.getValuesAsIdKeyed(a);if(i.data_groups.length>0)for(g=h.hasPositiveValueInTargets(a),b=0;b<i.data_groups.length;b++)if(e=i.data_groups[b].filter(function(a){return j.indexOf(a)>=0}),0!==e.length)for(d=e[0],g&&k[d]&&k[d].forEach(function(a,b){k[d][b]=a>0?a:0}),c=1;c<e.length;c++)f=e[c],k[f]&&k[f].forEach(function(a,b){h.axis.getId(f)!==h.axis.getId(d)||!k[d]||g&&0>+a||(k[d][b]+=+a)});return h.d3.max(Object.keys(k).map(function(a){return h.d3.max(k[a])}))},i.getYDomain=function(a,b,c){var d,e,f,g,h,i,j,k,l,n,o,p=this,q=p.config,r=a.filter(function(a){return p.axis.getId(a.id)===b}),s=c?p.filterByXDomain(r,c):r,u="y2"===b?q.axis_y2_min:q.axis_y_min,w="y2"===b?q.axis_y2_max:q.axis_y_max,x=p.getYDomainMin(s),y=p.getYDomainMax(s),z="y2"===b?q.axis_y2_center:q.axis_y_center,A=p.hasType("bar",s)&&q.bar_zerobased||p.hasType("area",s)&&q.area_zerobased,B="y2"===b?q.axis_y2_inverted:q.axis_y_inverted,C=p.hasDataLabel()&&q.axis_rotated,D=p.hasDataLabel()&&!q.axis_rotated;return x=m(u)?u:m(w)?w>x?x:w-10:x,y=m(w)?w:m(u)?y>u?y:u+10:y,0===s.length?"y2"===b?p.y2.domain():p.y.domain():(isNaN(x)&&(x=0),isNaN(y)&&(y=x),x===y&&(0>x?y=0:x=0),n=x>=0&&y>=0,o=0>=x&&0>=y,(m(u)&&n||m(w)&&o)&&(A=!1),A&&(n&&(x=0),o&&(y=0)),e=Math.abs(y-x),f=g=h=.1*e,"undefined"!=typeof z&&(i=Math.max(Math.abs(x),Math.abs(y)),y=z+i,x=z-i),C?(j=p.getDataLabelLength(x,y,"width"),k=t(p.y.range()),l=[j[0]/k,j[1]/k],g+=e*(l[1]/(1-l[0]-l[1])),h+=e*(l[0]/(1-l[0]-l[1]))):D&&(j=p.getDataLabelLength(x,y,"height"),g+=p.axis.convertPixelsToAxisPadding(j[1],e),h+=p.axis.convertPixelsToAxisPadding(j[0],e)),"y"===b&&v(q.axis_y_padding)&&(g=p.axis.getPadding(q.axis_y_padding,"top",g,e),h=p.axis.getPadding(q.axis_y_padding,"bottom",h,e)),"y2"===b&&v(q.axis_y2_padding)&&(g=p.axis.getPadding(q.axis_y2_padding,"top",g,e),h=p.axis.getPadding(q.axis_y2_padding,"bottom",h,e)),A&&(n&&(h=x),o&&(g=-y)),d=[x-h,y+g],B?d.reverse():d)},i.getXDomainMin=function(a){var b=this,c=b.config;return q(c.axis_x_min)?b.isTimeSeries()?this.parseDate(c.axis_x_min):c.axis_x_min:b.d3.min(a,function(a){return b.d3.min(a.values,function(a){return a.x})})},i.getXDomainMax=function(a){var b=this,c=b.config;return q(c.axis_x_max)?b.isTimeSeries()?this.parseDate(c.axis_x_max):c.axis_x_max:b.d3.max(a,function(a){return b.d3.max(a.values,function(a){return a.x})})},i.getXDomainPadding=function(a){var b,c,d,e,f=this,g=f.config,h=a[1]-a[0];return f.isCategorized()?c=0:f.hasType("bar")?(b=f.getMaxDataCount(),c=b>1?h/(b-1)/2:.5):c=.01*h,"object"==typeof g.axis_x_padding&&v(g.axis_x_padding)?(d=m(g.axis_x_padding.left)?g.axis_x_padding.left:c,e=m(g.axis_x_padding.right)?g.axis_x_padding.right:c):d=e="number"==typeof g.axis_x_padding?g.axis_x_padding:c,{left:d,right:e}},i.getXDomain=function(a){var b=this,c=[b.getXDomainMin(a),b.getXDomainMax(a)],d=c[0],e=c[1],f=b.getXDomainPadding(c),g=0,h=0; +return d-e!==0||b.isCategorized()||(b.isTimeSeries()?(d=new Date(.5*d.getTime()),e=new Date(1.5*e.getTime())):(d=0===d?1:.5*d,e=0===e?-1:1.5*e)),(d||0===d)&&(g=b.isTimeSeries()?new Date(d.getTime()-f.left):d-f.left),(e||0===e)&&(h=b.isTimeSeries()?new Date(e.getTime()+f.right):e+f.right),[g,h]},i.updateXDomain=function(a,b,c,d,e){var f=this,g=f.config;return c&&(f.x.domain(e?e:f.d3.extent(f.getXDomain(a))),f.orgXDomain=f.x.domain(),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent(),f.subX.domain(f.x.domain()),f.brush&&f.brush.scale(f.subX)),b&&(f.x.domain(e?e:!f.brush||f.brush.empty()?f.orgXDomain:f.brush.extent()),g.zoom_enabled&&f.zoom.scale(f.x).updateScaleExtent()),d&&f.x.domain(f.trimXDomain(f.x.orgDomain())),f.x.domain()},i.trimXDomain=function(a){var b=this;return a[0]<=b.orgXDomain[0]&&(a[1]=+a[1]+(b.orgXDomain[0]-a[0]),a[0]=b.orgXDomain[0]),b.orgXDomain[1]<=a[1]&&(a[0]=+a[0]-(a[1]-b.orgXDomain[1]),a[1]=b.orgXDomain[1]),a},i.isX=function(a){var b=this,c=b.config;return c.data_x&&a===c.data_x||v(c.data_xs)&&x(c.data_xs,a)},i.isNotX=function(a){return!this.isX(a)},i.getXKey=function(a){var b=this,c=b.config;return c.data_x?c.data_x:v(c.data_xs)?c.data_xs[a]:null},i.getXValuesOfXKey=function(a,b){var c,d=this,e=b&&v(b)?d.mapToIds(b):[];return e.forEach(function(b){d.getXKey(b)===a&&(c=d.data.xs[b])}),c},i.getIndexByX=function(a){var b=this,c=b.filterByX(b.data.targets,a);return c.length?c[0].index:null},i.getXValue=function(a,b){var c=this;return a in c.data.xs&&c.data.xs[a]&&m(c.data.xs[a][b])?c.data.xs[a][b]:b},i.getOtherTargetXs=function(){var a=this,b=Object.keys(a.data.xs);return b.length?a.data.xs[b[0]]:null},i.getOtherTargetX=function(a){var b=this.getOtherTargetXs();return b&&a<b.length?b[a]:null},i.addXs=function(a){var b=this;Object.keys(a).forEach(function(c){b.config.data_xs[c]=a[c]})},i.hasMultipleX=function(a){return this.d3.set(Object.keys(a).map(function(b){return a[b]})).size()>1},i.isMultipleX=function(){return v(this.config.data_xs)||!this.config.data_xSort||this.hasType("scatter")},i.addName=function(a){var b,c=this;return a&&(b=c.config.data_names[a.id],a.name=b?b:a.id),a},i.getValueOnIndex=function(a,b){var c=a.filter(function(a){return a.index===b});return c.length?c[0]:null},i.updateTargetX=function(a,b){var c=this;a.forEach(function(a){a.values.forEach(function(d,e){d.x=c.generateTargetX(b[e],a.id,e)}),c.data.xs[a.id]=b})},i.updateTargetXs=function(a,b){var c=this;a.forEach(function(a){b[a.id]&&c.updateTargetX([a],b[a.id])})},i.generateTargetX=function(a,b,c){var d,e=this;return d=e.isTimeSeries()?e.parseDate(a?a:e.getXValue(b,c)):e.isCustomX()&&!e.isCategorized()?m(a)?+a:e.getXValue(b,c):c},i.cloneTarget=function(a){return{id:a.id,id_org:a.id_org,values:a.values.map(function(a){return{x:a.x,value:a.value,id:a.id}})}},i.updateXs=function(){var a=this;a.data.targets.length&&(a.xs=[],a.data.targets[0].values.forEach(function(b){a.xs[b.index]=b.x}))},i.getPrevX=function(a){var b=this.xs[a-1];return"undefined"!=typeof b?b:null},i.getNextX=function(a){var b=this.xs[a+1];return"undefined"!=typeof b?b:null},i.getMaxDataCount=function(){var a=this;return a.d3.max(a.data.targets,function(a){return a.values.length})},i.getMaxDataCountTarget=function(a){var b,c=a.length,d=0;return c>1?a.forEach(function(a){a.values.length>d&&(b=a,d=a.values.length)}):b=c?a[0]:null,b},i.getEdgeX=function(a){var b=this;return a.length?[b.d3.min(a,function(a){return a.values[0].x}),b.d3.max(a,function(a){return a.values[a.values.length-1].x})]:[0,0]},i.mapToIds=function(a){return a.map(function(a){return a.id})},i.mapToTargetIds=function(a){var b=this;return a?o(a)?[a]:a:b.mapToIds(b.data.targets)},i.hasTarget=function(a,b){var c,d=this.mapToIds(a);for(c=0;c<d.length;c++)if(d[c]===b)return!0;return!1},i.isTargetToShow=function(a){return this.hiddenTargetIds.indexOf(a)<0},i.isLegendToShow=function(a){return this.hiddenLegendIds.indexOf(a)<0},i.filterTargetsToShow=function(a){var b=this;return a.filter(function(a){return b.isTargetToShow(a.id)})},i.mapTargetsToUniqueXs=function(a){var b=this,c=b.d3.set(b.d3.merge(a.map(function(a){return a.values.map(function(a){return+a.x})}))).values();return c.map(b.isTimeSeries()?function(a){return new Date(+a)}:function(a){return+a})},i.addHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.concat(a)},i.removeHiddenTargetIds=function(a){this.hiddenTargetIds=this.hiddenTargetIds.filter(function(b){return a.indexOf(b)<0})},i.addHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.concat(a)},i.removeHiddenLegendIds=function(a){this.hiddenLegendIds=this.hiddenLegendIds.filter(function(b){return a.indexOf(b)<0})},i.getValuesAsIdKeyed=function(a){var b={};return a.forEach(function(a){b[a.id]=[],a.values.forEach(function(c){b[a.id].push(c.value)})}),b},i.checkValueInTargets=function(a,b){var c,d,e,f=Object.keys(a);for(c=0;c<f.length;c++)for(e=a[f[c]].values,d=0;d<e.length;d++)if(b(e[d].value))return!0;return!1},i.hasNegativeValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return 0>a})},i.hasPositiveValueInTargets=function(a){return this.checkValueInTargets(a,function(a){return a>0})},i.isOrderDesc=function(){var a=this.config;return"string"==typeof a.data_order&&"desc"===a.data_order.toLowerCase()},i.isOrderAsc=function(){var a=this.config;return"string"==typeof a.data_order&&"asc"===a.data_order.toLowerCase()},i.orderTargets=function(a){var b=this,c=b.config,d=b.isOrderAsc(),e=b.isOrderDesc();return d||e?a.sort(function(a,b){var c=function(a,b){return a+Math.abs(b.value)},e=a.values.reduce(c,0),f=b.values.reduce(c,0);return d?f-e:e-f}):n(c.data_order)&&a.sort(c.data_order),a},i.filterByX=function(a,b){return this.d3.merge(a.map(function(a){return a.values})).filter(function(a){return a.x-b===0})},i.filterRemoveNull=function(a){return a.filter(function(a){return m(a.value)})},i.filterByXDomain=function(a,b){return a.map(function(a){return{id:a.id,id_org:a.id_org,values:a.values.filter(function(a){return b[0]<=a.x&&a.x<=b[1]})}})},i.hasDataLabel=function(){var a=this.config;return"boolean"==typeof a.data_labels&&a.data_labels?!0:"object"==typeof a.data_labels&&v(a.data_labels)?!0:!1},i.getDataLabelLength=function(a,b,c){var d=this,e=[0,0],f=1.3;return d.selectChart.select("svg").selectAll(".dummy").data([a,b]).enter().append("text").text(function(a){return d.dataLabelFormat(a.id)(a)}).each(function(a,b){e[b]=this.getBoundingClientRect()[c]*f}).remove(),e},i.isNoneArc=function(a){return this.hasTarget(this.data.targets,a.id)},i.isArc=function(a){return"data"in a&&this.hasTarget(this.data.targets,a.data.id)},i.findSameXOfValues=function(a,b){var c,d=a[b].x,e=[];for(c=b-1;c>=0&&d===a[c].x;c--)e.push(a[c]);for(c=b;c<a.length&&d===a[c].x;c++)e.push(a[c]);return e},i.findClosestFromTargets=function(a,b){var c,d=this;return c=a.map(function(a){return d.findClosest(a.values,b)}),d.findClosest(c,b)},i.findClosest=function(a,b){var c,d=this,e=100;return a.filter(function(a){return a&&d.isBarType(a.id)}).forEach(function(a){var b=d.main.select("."+l.bars+d.getTargetSelectorSuffix(a.id)+" ."+l.bar+"-"+a.index).node();!c&&d.isWithinBar(b)&&(c=a)}),a.filter(function(a){return a&&!d.isBarType(a.id)}).forEach(function(a){var f=d.dist(a,b);e>f&&(e=f,c=a)}),c},i.dist=function(a,b){var c=this,d=c.config,e=d.axis_rotated?1:0,f=d.axis_rotated?0:1,g=c.circleY(a,a.index),h=c.x(a.x);return Math.pow(h-b[e],2)+Math.pow(g-b[f],2)},i.convertValuesToStep=function(a){var b,c=[].concat(a);if(!this.isCategorized())return a;for(b=a.length+1;b>0;b--)c[b]=c[b-1];return c[0]={x:c[0].x-1,value:c[0].value,id:c[0].id},c[a.length+1]={x:c[a.length].x+1,value:c[a.length].value,id:c[a.length].id},c},i.updateDataAttributes=function(a,b){var c=this,d=c.config,e=d["data_"+a];return"undefined"==typeof b?e:(Object.keys(b).forEach(function(a){e[a]=b[a]}),c.redraw({withLegend:!0}),e)},i.convertUrlToData=function(a,b,c,d){var e=this,f=b?b:"csv";e.d3.xhr(a,function(a,b){var g;if(!b)throw new Error(a.responseURL+" "+a.status+" ("+a.statusText+")");g="json"===f?e.convertJsonToData(JSON.parse(b.response),c):"tsv"===f?e.convertTsvToData(b.response):e.convertCsvToData(b.response),d.call(e,g)})},i.convertXsvToData=function(a,b){var c,d=b.parseRows(a);return 1===d.length?(c=[{}],d[0].forEach(function(a){c[0][a]=null})):c=b.parse(a),c},i.convertCsvToData=function(a){return this.convertXsvToData(a,this.d3.csv)},i.convertTsvToData=function(a){return this.convertXsvToData(a,this.d3.tsv)},i.convertJsonToData=function(a,b){var c,d,e=this,f=[];return b?(b.x?(c=b.value.concat(b.x),e.config.data_x=b.x):c=b.value,f.push(c),a.forEach(function(a){var b=[];c.forEach(function(c){var d=p(a[c])?null:a[c];b.push(d)}),f.push(b)}),d=e.convertRowsToData(f)):(Object.keys(a).forEach(function(b){f.push([b].concat(a[b]))}),d=e.convertColumnsToData(f)),d},i.convertRowsToData=function(a){var b,c,d=a[0],e={},f=[];for(b=1;b<a.length;b++){for(e={},c=0;c<a[b].length;c++){if(p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[d[c]]=a[b][c]}f.push(e)}return f},i.convertColumnsToData=function(a){var b,c,d,e=[];for(b=0;b<a.length;b++)for(d=a[b][0],c=1;c<a[b].length;c++){if(p(e[c-1])&&(e[c-1]={}),p(a[b][c]))throw new Error("Source data is missing a component at ("+b+","+c+")!");e[c-1][d]=a[b][c]}return e},i.convertDataToTargets=function(a,b){var c,d=this,e=d.config,f=d.d3.keys(a[0]).filter(d.isNotX,d),g=d.d3.keys(a[0]).filter(d.isX,d);return f.forEach(function(c){var f=d.getXKey(c);d.isCustomX()||d.isTimeSeries()?g.indexOf(f)>=0?d.data.xs[c]=(b&&d.data.xs[c]?d.data.xs[c]:[]).concat(a.map(function(a){return a[f]}).filter(m).map(function(a,b){return d.generateTargetX(a,c,b)})):e.data_x?d.data.xs[c]=d.getOtherTargetXs():v(e.data_xs)&&(d.data.xs[c]=d.getXValuesOfXKey(f,d.data.targets)):d.data.xs[c]=a.map(function(a,b){return b})}),f.forEach(function(a){if(!d.data.xs[a])throw new Error('x is not defined for id = "'+a+'".')}),c=f.map(function(b,c){var f=e.data_idConverter(b);return{id:f,id_org:b,values:a.map(function(a,g){var h=d.getXKey(b),i=a[h],j=d.generateTargetX(i,b,g);return d.isCustomX()&&d.isCategorized()&&0===c&&i&&(0===g&&(e.axis_x_categories=[]),e.axis_x_categories.push(i)),(p(a[b])||d.data.xs[b].length<=g)&&(j=void 0),{x:j,value:null===a[b]||isNaN(a[b])?null:+a[b],id:f}}).filter(function(a){return q(a.x)})}}),c.forEach(function(a){var b;e.data_xSort&&(a.values=a.values.sort(function(a,b){var c=a.x||0===a.x?a.x:1/0,d=b.x||0===b.x?b.x:1/0;return c-d})),b=0,a.values.forEach(function(a){a.index=b++}),d.data.xs[a.id].sort(function(a,b){return a-b})}),e.data_type&&d.setTargetType(d.mapToIds(c).filter(function(a){return!(a in e.data_types)}),e.data_type),c.forEach(function(a){d.addCache(a.id_org,a)}),c},i.load=function(a,b){var c=this;a&&(b.filter&&(a=a.filter(b.filter)),(b.type||b.types)&&a.forEach(function(a){var d=b.types&&b.types[a.id]?b.types[a.id]:b.type;c.setTargetType(a.id,d)}),c.data.targets.forEach(function(b){for(var c=0;c<a.length;c++)if(b.id===a[c].id){b.values=a[c].values,a.splice(c,1);break}}),c.data.targets=c.data.targets.concat(a)),c.updateTargets(c.data.targets),c.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),b.done&&b.done()},i.loadFromArgs=function(a){var b=this;a.data?b.load(b.convertDataToTargets(a.data),a):a.url?b.convertUrlToData(a.url,a.mimeType,a.keys,function(c){b.load(b.convertDataToTargets(c),a)}):a.json?b.load(b.convertDataToTargets(b.convertJsonToData(a.json,a.keys)),a):a.rows?b.load(b.convertDataToTargets(b.convertRowsToData(a.rows)),a):a.columns?b.load(b.convertDataToTargets(b.convertColumnsToData(a.columns)),a):b.load(null,a)},i.unload=function(a,b){var c=this;return b||(b=function(){}),a=a.filter(function(a){return c.hasTarget(c.data.targets,a)}),a&&0!==a.length?(c.svg.selectAll(a.map(function(a){return c.selectorTarget(a)})).transition().style("opacity",0).remove().call(c.endall,b),void a.forEach(function(a){c.withoutFadeIn[a]=!1,c.legend&&c.legend.selectAll("."+l.legendItem+c.getTargetSelectorSuffix(a)).remove(),c.data.targets=c.data.targets.filter(function(b){return b.id!==a})})):void b()},i.categoryName=function(a){var b=this.config;return a<b.axis_x_categories.length?b.axis_x_categories[a]:a},i.initEventRect=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.eventRects).style("fill-opacity",0)},i.redrawEventRect=function(){var a,b,c=this,d=c.config,e=c.isMultipleX(),f=c.main.select("."+l.eventRects).style("cursor",d.zoom_enabled?d.axis_rotated?"ns-resize":"ew-resize":null).classed(l.eventRectsMultiple,e).classed(l.eventRectsSingle,!e);f.selectAll("."+l.eventRect).remove(),c.eventRect=f.selectAll("."+l.eventRect),e?(a=c.eventRect.data([0]),c.generateEventRectsForMultipleXs(a.enter()),c.updateEventRect(a)):(b=c.getMaxDataCountTarget(c.data.targets),f.datum(b?b.values:[]),c.eventRect=f.selectAll("."+l.eventRect),a=c.eventRect.data(function(a){return a}),c.generateEventRectsForSingleX(a.enter()),c.updateEventRect(a),a.exit().remove())},i.updateEventRect=function(a){var b,c,d,e,f,g,h=this,i=h.config;a=a||h.eventRect.data(function(a){return a}),h.isMultipleX()?(b=0,c=0,d=h.width,e=h.height):(!h.isCustomX()&&!h.isTimeSeries()||h.isCategorized()?(f=h.getEventRectWidth(),g=function(a){return h.x(a.x)-f/2}):(h.updateXs(),f=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index);return null===b&&null===c?i.axis_rotated?h.height:h.width:(null===b&&(b=h.x.domain()[0]),null===c&&(c=h.x.domain()[1]),Math.max(0,(h.x(c)-h.x(b))/2))},g=function(a){var b=h.getPrevX(a.index),c=h.getNextX(a.index),d=h.data.xs[a.id][a.index];return null===b&&null===c?0:(null===b&&(b=h.x.domain()[0]),(h.x(d)+h.x(b))/2)}),b=i.axis_rotated?0:g,c=i.axis_rotated?g:0,d=i.axis_rotated?h.width:f,e=i.axis_rotated?f:h.height),a.attr("class",h.classEvent.bind(h)).attr("x",b).attr("y",c).attr("width",d).attr("height",e)},i.generateEventRectsForSingleX=function(a){var b=this,c=b.d3,d=b.config;a.append("rect").attr("class",b.classEvent.bind(b)).style("cursor",d.data_selection_enabled&&d.data_selection_grouped?"pointer":null).on("mouseover",function(a){var c=a.index;b.dragging||b.flowing||b.hasArcType()||(d.point_focus_expand_enabled&&b.expandCircles(c,null,!0),b.expandBars(c,null,!0),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseover.call(b.api,a)}))}).on("mouseout",function(a){var c=a.index;b.config&&(b.hasArcType()||(b.hideXGridFocus(),b.hideTooltip(),b.unexpandCircles(),b.unexpandBars(),b.main.selectAll("."+l.shape+"-"+c).each(function(a){d.data_onmouseout.call(b.api,a)})))}).on("mousemove",function(a){var e,f=a.index,g=b.svg.select("."+l.eventRect+"-"+f);b.dragging||b.flowing||b.hasArcType()||(b.isStepType(a)&&"step-after"===b.config.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,f))&&(f-=1),e=b.filterTargetsToShow(b.data.targets).map(function(a){return b.addName(b.getValueOnIndex(a.values,f))}),d.tooltip_grouped&&(b.showTooltip(e,this),b.showXGridFocus(e)),(!d.tooltip_grouped||d.data_selection_enabled&&!d.data_selection_grouped)&&b.main.selectAll("."+l.shape+"-"+f).each(function(){c.select(this).classed(l.EXPANDED,!0),d.data_selection_enabled&&g.style("cursor",d.data_selection_grouped?"pointer":null),d.tooltip_grouped||(b.hideXGridFocus(),b.hideTooltip(),d.data_selection_grouped||(b.unexpandCircles(f),b.unexpandBars(f)))}).filter(function(a){return b.isWithinShape(this,a)}).each(function(a){d.data_selection_enabled&&(d.data_selection_grouped||d.data_selection_isselectable(a))&&g.style("cursor","pointer"),d.tooltip_grouped||(b.showTooltip([a],this),b.showXGridFocus([a]),d.point_focus_expand_enabled&&b.expandCircles(f,a.id,!0),b.expandBars(f,a.id,!0))}))}).on("click",function(a){var e=a.index;if(!b.hasArcType()&&b.toggleShape){if(b.cancelClick)return void(b.cancelClick=!1);b.isStepType(a)&&"step-after"===d.line_step_type&&c.mouse(this)[0]<b.x(b.getXValue(a.id,e))&&(e-=1),b.main.selectAll("."+l.shape+"-"+e).each(function(a){(d.data_selection_grouped||b.isWithinShape(this,a))&&(b.toggleShape(this,a,e),b.config.data_onclick.call(b.api,a,this))})}}).call(d.data_selection_draggable&&b.drag?c.behavior.drag().origin(Object).on("drag",function(){b.drag(c.mouse(this))}).on("dragstart",function(){b.dragstart(c.mouse(this))}).on("dragend",function(){b.dragend()}):function(){})},i.generateEventRectsForMultipleXs=function(a){function b(){c.svg.select("."+l.eventRect).style("cursor",null),c.hideXGridFocus(),c.hideTooltip(),c.unexpandCircles(),c.unexpandBars()}var c=this,d=c.d3,e=c.config;a.append("rect").attr("x",0).attr("y",0).attr("width",c.width).attr("height",c.height).attr("class",l.eventRect).on("mouseout",function(){c.config&&(c.hasArcType()||b())}).on("mousemove",function(){var a,f,g,h,i=c.filterTargetsToShow(c.data.targets);if(!c.dragging&&!c.hasArcType(i)){if(a=d.mouse(this),f=c.findClosestFromTargets(i,a),!c.mouseover||f&&f.id===c.mouseover.id||(e.data_onmouseout.call(c.api,c.mouseover),c.mouseover=void 0),!f)return void b();g=c.isScatterType(f)||!e.tooltip_grouped?[f]:c.filterByX(i,f.x),h=g.map(function(a){return c.addName(a)}),c.showTooltip(h,this),e.point_focus_expand_enabled&&c.expandCircles(f.index,f.id,!0),c.expandBars(f.index,f.id,!0),c.showXGridFocus(h),(c.isBarType(f.id)||c.dist(f,a)<100)&&(c.svg.select("."+l.eventRect).style("cursor","pointer"),c.mouseover||(e.data_onmouseover.call(c.api,f),c.mouseover=f))}}).on("click",function(){var a,b,f=c.filterTargetsToShow(c.data.targets);c.hasArcType(f)||(a=d.mouse(this),b=c.findClosestFromTargets(f,a),b&&(c.isBarType(b.id)||c.dist(b,a)<100)&&c.main.selectAll("."+l.shapes+c.getTargetSelectorSuffix(b.id)).selectAll("."+l.shape+"-"+b.index).each(function(){(e.data_selection_grouped||c.isWithinShape(this,b))&&(c.toggleShape(this,b,b.index),c.config.data_onclick.call(c.api,b,this))}))}).call(e.data_selection_draggable&&c.drag?d.behavior.drag().origin(Object).on("drag",function(){c.drag(d.mouse(this))}).on("dragstart",function(){c.dragstart(d.mouse(this))}).on("dragend",function(){c.dragend()}):function(){})},i.dispatchEvent=function(b,c,d){var e=this,f="."+l.eventRect+(e.isMultipleX()?"":"-"+c),g=e.main.select(f).node(),h=g.getBoundingClientRect(),i=h.left+(d?d[0]:0),j=h.top+(d?d[1]:0),k=document.createEvent("MouseEvents");k.initMouseEvent(b,!0,!0,a,0,i,j,i,j,!1,!1,!1,!1,0,null),g.dispatchEvent(k)},i.getCurrentWidth=function(){var a=this,b=a.config;return b.size_width?b.size_width:a.getParentWidth()},i.getCurrentHeight=function(){var a=this,b=a.config,c=b.size_height?b.size_height:a.getParentHeight();return c>0?c:320/(a.hasType("gauge")?2:1)},i.getCurrentPaddingTop=function(){var a=this.config;return m(a.padding_top)?a.padding_top:0},i.getCurrentPaddingBottom=function(){var a=this.config;return m(a.padding_bottom)?a.padding_bottom:0},i.getCurrentPaddingLeft=function(a){var b=this,c=b.config;return m(c.padding_left)?c.padding_left:c.axis_rotated?c.axis_x_show?Math.max(r(b.getAxisWidthByAxisId("x",a)),40):1:!c.axis_y_show||c.axis_y_inner?b.axis.getYAxisLabelPosition().isOuter?30:1:r(b.getAxisWidthByAxisId("y",a))},i.getCurrentPaddingRight=function(){var a=this,b=a.config,c=10,d=a.isLegendRight?a.getLegendWidth()+20:0;return m(b.padding_right)?b.padding_right+1:b.axis_rotated?c+d:!b.axis_y2_show||b.axis_y2_inner?2+d+(a.axis.getY2AxisLabelPosition().isOuter?20:0):r(a.getAxisWidthByAxisId("y2"))+d},i.getParentRectValue=function(a){for(var b,c=this.selectChart.node();c&&"BODY"!==c.tagName;){try{b=c.getBoundingClientRect()[a]}catch(d){"width"===a&&(b=c.offsetWidth)}if(b)break;c=c.parentNode}return b},i.getParentWidth=function(){return this.getParentRectValue("width")},i.getParentHeight=function(){var a=this.selectChart.style("height");return a.indexOf("px")>0?+a.replace("px",""):0},i.getSvgLeft=function(a){var b=this,c=b.config,d=c.axis_rotated||!c.axis_rotated&&!c.axis_y_inner,e=c.axis_rotated?l.axisX:l.axisY,f=b.main.select("."+e).node(),g=f&&d?f.getBoundingClientRect():{right:0},h=b.selectChart.node().getBoundingClientRect(),i=b.hasArcType(),j=g.right-h.left-(i?0:b.getCurrentPaddingLeft(a));return j>0?j:0},i.getAxisWidthByAxisId=function(a,b){var c=this,d=c.axis.getLabelPositionById(a);return c.axis.getMaxTickWidth(a,b)+(d.isInner?20:40)},i.getHorizontalAxisHeight=function(a){var b=this,c=b.config,d=30;return"x"!==a||c.axis_x_show?"x"===a&&c.axis_x_height?c.axis_x_height:"y"!==a||c.axis_y_show?"y2"!==a||c.axis_y2_show?("x"===a&&!c.axis_rotated&&c.axis_x_tick_rotate&&(d=30+b.axis.getMaxTickWidth(a)*Math.cos(Math.PI*(90-c.axis_x_tick_rotate)/180)),d+(b.axis.getLabelPositionById(a).isInner?0:10)+("y2"===a?-10:0)):b.rotated_padding_top:!c.legend_show||b.isLegendRight||b.isLegendInset?1:10:8},i.getEventRectWidth=function(){return Math.max(0,this.xAxis.tickInterval())},i.getShapeIndices=function(a){var b,c,d=this,e=d.config,f={},g=0;return d.filterTargetsToShow(d.data.targets.filter(a,d)).forEach(function(a){for(b=0;b<e.data_groups.length;b++)if(!(e.data_groups[b].indexOf(a.id)<0))for(c=0;c<e.data_groups[b].length;c++)if(e.data_groups[b][c]in f){f[a.id]=f[e.data_groups[b][c]];break}p(f[a.id])&&(f[a.id]=g++)}),f.__max__=g-1,f},i.getShapeX=function(a,b,c,d){var e=this,f=d?e.subX:e.x;return function(d){var e=d.id in c?c[d.id]:0;return d.x||0===d.x?f(d.x)-a*(b/2-e):0}},i.getShapeY=function(a){var b=this;return function(c){var d=a?b.getSubYScale(c.id):b.getYScale(c.id);return d(c.value)}},i.getShapeOffset=function(a,b,c){var d=this,e=d.orderTargets(d.filterTargetsToShow(d.data.targets.filter(a,d))),f=e.map(function(a){return a.id});return function(a,g){var h=c?d.getSubYScale(a.id):d.getYScale(a.id),i=h(0),j=i;return e.forEach(function(c){var e=d.isStepType(a)?d.convertValuesToStep(c.values):c.values;c.id!==a.id&&b[c.id]===b[a.id]&&f.indexOf(c.id)<f.indexOf(a.id)&&e[g].value*a.value>=0&&(j+=h(e[g].value)-i)}),j}},i.isWithinShape=function(a,b){var c,d=this,e=d.d3.select(a);return d.isTargetToShow(b.id)?"circle"===a.nodeName?c=d.isStepType(b)?d.isWithinStep(a,d.getYScale(b.id)(b.value)):d.isWithinCircle(a,1.5*d.pointSelectR(b)):"path"===a.nodeName&&(c=e.classed(l.bar)?d.isWithinBar(a):!0):c=!1,c},i.getInterpolate=function(a){var b=this;return b.isSplineType(a)?"cardinal":b.isStepType(a)?b.config.line_step_type:"linear"},i.initLine=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartLines)},i.updateTargetsForLine=function(a){var b,c,d=this,e=d.config,f=d.classChartLine.bind(d),g=d.classLines.bind(d),h=d.classAreas.bind(d),i=d.classCircles.bind(d),j=d.classFocus.bind(d);b=d.main.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",function(a){return f(a)+j(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g),c.append("g").attr("class",h),c.append("g").attr("class",function(a){return d.generateClass(l.selectedCircles,a.id)}),c.append("g").attr("class",i).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null}),a.forEach(function(a){d.main.selectAll("."+l.selectedCircles+d.getTargetSelectorSuffix(a.id)).selectAll("."+l.selectedCircle).each(function(b){b.value=a.values[b.index].value})})},i.updateLine=function(a){var b=this;b.mainLine=b.main.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.mainLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.mainLine.style("opacity",b.initialOpacity.bind(b)).style("shape-rendering",function(a){return b.isStepType(a)?"crispEdges":""}).attr("transform",null),b.mainLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLine=function(a,b){return[(b?this.mainLine.transition():this.mainLine).attr("d",a).style("stroke",this.color).style("opacity",1)]},i.generateDrawLine=function(a,b){var c=this,d=c.config,e=c.d3.svg.line(),f=c.generateGetLinePoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x(i).y(h):e.x(h).y(i),d.line_connectNull||(e=e.defined(function(a){return null!=a.value})),function(a){var f,h=d.line_connectNull?c.filterRemoveNull(a.values):a.values,i=b?c.x:c.subX,j=g.call(c,a.id),k=0,l=0;return c.isLineType(a)?d.data_regions[a.id]?f=c.lineWithRegions(h,i,j,d.data_regions[a.id]):(c.isStepType(a)&&(h=c.convertValuesToStep(h)),f=e.interpolate(c.getInterpolate(a))(h)):(h[0]&&(k=i(h[0].x),l=j(h[0].value)),f=d.axis_rotated?"M "+l+" "+k:"M "+k+" "+l),f?f:"M 0 0"}},i.generateGetLinePoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isLineType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)],[k,l-(e-j)]]}},i.lineWithRegions=function(a,b,c,d){function e(a,b){var c;for(c=0;c<b.length;c++)if(b[c].start<a&&a<=b[c].end)return!0;return!1}function f(a){return"M"+a[0][0]+" "+a[0][1]+" "+a[1][0]+" "+a[1][1]}var g,h,i,j,k,l,m,n,o,r,s,t,u=this,v=u.config,w=-1,x="M",y=u.isCategorized()?.5:0,z=[];if(q(d))for(g=0;g<d.length;g++)z[g]={},z[g].start=p(d[g].start)?a[0].x:u.isTimeSeries()?u.parseDate(d[g].start):d[g].start,z[g].end=p(d[g].end)?a[a.length-1].x:u.isTimeSeries()?u.parseDate(d[g].end):d[g].end;for(s=v.axis_rotated?function(a){return c(a.value)}:function(a){return b(a.x)},t=v.axis_rotated?function(a){return b(a.x)}:function(a){return c(a.value)},i=u.isTimeSeries()?function(a,d,e,g){var h,i=a.x.getTime(),j=d.x-a.x,l=new Date(i+j*e),m=new Date(i+j*(e+g));return h=v.axis_rotated?[[c(k(e)),b(l)],[c(k(e+g)),b(m)]]:[[b(l),c(k(e))],[b(m),c(k(e+g))]],f(h)}:function(a,d,e,g){var h;return h=v.axis_rotated?[[c(k(e),!0),b(j(e))],[c(k(e+g),!0),b(j(e+g))]]:[[b(j(e),!0),c(k(e))],[b(j(e+g),!0),c(k(e+g))]],f(h)},g=0;g<a.length;g++){if(p(z)||!e(a[g].x,z))x+=" "+s(a[g])+" "+t(a[g]);else for(j=u.getScale(a[g-1].x+y,a[g].x+y,u.isTimeSeries()),k=u.getScale(a[g-1].value,a[g].value),l=b(a[g].x)-b(a[g-1].x),m=c(a[g].value)-c(a[g-1].value),n=Math.sqrt(Math.pow(l,2)+Math.pow(m,2)),o=2/n,r=2*o,h=o;1>=h;h+=r)x+=i(a[g-1],a[g],h,o);w=a[g].x}return x},i.updateArea=function(a){var b=this,c=b.d3;b.mainArea=b.main.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.mainArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.mainArea.style("opacity",b.orgAreaOpacity),b.mainArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawArea=function(a,b){return[(b?this.mainArea.transition():this.mainArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)]},i.generateDrawArea=function(a,b){var c=this,d=c.config,e=c.d3.svg.area(),f=c.generateGetAreaPoints(a,b),g=b?c.getSubYScale:c.getYScale,h=function(a){return(b?c.subxx:c.xx).call(c,a)},i=function(a,b){return d.data_groups.length>0?f(a,b)[0][1]:g.call(c,a.id)(c.getAreaBaseValue(a.id))},j=function(a,b){return d.data_groups.length>0?f(a,b)[1][1]:g.call(c,a.id)(a.value)};return e=d.axis_rotated?e.x0(i).x1(j).y(h):e.x(h).y0(i).y1(j),d.line_connectNull||(e=e.defined(function(a){return null!==a.value})),function(a){var b,f=d.line_connectNull?c.filterRemoveNull(a.values):a.values,g=0,h=0;return c.isAreaType(a)?(c.isStepType(a)&&(f=c.convertValuesToStep(f)),b=e.interpolate(c.getInterpolate(a))(f)):(f[0]&&(g=c.x(f[0].x),h=c.getYScale(a.id)(f[0].value)),b=d.axis_rotated?"M "+h+" "+g:"M "+g+" "+h),b?b:"M 0 0"}},i.getAreaBaseValue=function(){return 0},i.generateGetAreaPoints=function(a,b){var c=this,d=c.config,e=a.__max__+1,f=c.getShapeX(0,e,a,!!b),g=c.getShapeY(!!b),h=c.getShapeOffset(c.isAreaType,a,!!b),i=b?c.getSubYScale:c.getYScale;return function(a,b){var e=i.call(c,a.id)(0),j=h(a,b)||e,k=f(a),l=g(a);return d.axis_rotated&&(0<a.value&&e>l||a.value<0&&l>e)&&(l=e),[[k,j],[k,l-(e-j)],[k,l-(e-j)],[k,j]]}},i.updateCircle=function(){var a=this;a.mainCircle=a.main.selectAll("."+l.circles).selectAll("."+l.circle).data(a.lineOrScatterData.bind(a)),a.mainCircle.enter().append("circle").attr("class",a.classCircle.bind(a)).attr("r",a.pointR.bind(a)).style("fill",a.color),a.mainCircle.style("opacity",a.initialOpacityForCircle.bind(a)),a.mainCircle.exit().remove()},i.redrawCircle=function(a,b,c){var d=this.main.selectAll("."+l.selectedCircle);return[(c?this.mainCircle.transition():this.mainCircle).style("opacity",this.opacityForCircle.bind(this)).style("fill",this.color).attr("cx",a).attr("cy",b),(c?d.transition():d).attr("cx",a).attr("cy",b)]},i.circleX=function(a){return a.x||0===a.x?this.x(a.x):null},i.updateCircleY=function(){var a,b,c=this;c.config.data_groups.length>0?(a=c.getShapeIndices(c.isLineType),b=c.generateGetLinePoints(a),c.circleY=function(a,c){return b(a,c)[0][1]}):c.circleY=function(a){return c.getYScale(a.id)(a.value)}},i.getCircles=function(a,b){var c=this;return(b?c.main.selectAll("."+l.circles+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.circle+(m(a)?"-"+a:""))},i.expandCircles=function(a,b,c){var d=this,e=d.pointExpandedR.bind(d);c&&d.unexpandCircles(),d.getCircles(a,b).classed(l.EXPANDED,!0).attr("r",e)},i.unexpandCircles=function(a){var b=this,c=b.pointR.bind(b);b.getCircles(a).filter(function(){return b.d3.select(this).classed(l.EXPANDED)}).classed(l.EXPANDED,!1).attr("r",c)},i.pointR=function(a){var b=this,c=b.config;return b.isStepType(a)?0:n(c.point_r)?c.point_r(a):c.point_r},i.pointExpandedR=function(a){var b=this,c=b.config;return c.point_focus_expand_enabled?c.point_focus_expand_r?c.point_focus_expand_r:1.75*b.pointR(a):b.pointR(a)},i.pointSelectR=function(a){var b=this,c=b.config;return c.point_select_r?c.point_select_r:4*b.pointR(a)},i.isWithinCircle=function(a,b){var c=this.d3,d=c.mouse(a),e=c.select(a),f=+e.attr("cx"),g=+e.attr("cy");return Math.sqrt(Math.pow(f-d[0],2)+Math.pow(g-d[1],2))<b},i.isWithinStep=function(a,b){return Math.abs(b-this.d3.mouse(a)[1])<30},i.initBar=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartBars)},i.updateTargetsForBar=function(a){var b,c,d=this,e=d.config,f=d.classChartBar.bind(d),g=d.classBars.bind(d),h=d.classFocus.bind(d);b=d.main.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",function(a){return f(a)+h(a)}),c=b.enter().append("g").attr("class",f).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",g).style("cursor",function(a){return e.data_selection_isselectable(a)?"pointer":null})},i.updateBar=function(a){var b=this,c=b.barData.bind(b),d=b.classBar.bind(b),e=b.initialOpacity.bind(b),f=function(a){return b.color(a.id)};b.mainBar=b.main.selectAll("."+l.bars).selectAll("."+l.bar).data(c),b.mainBar.enter().append("path").attr("class",d).style("stroke",f).style("fill",f),b.mainBar.style("opacity",e),b.mainBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBar=function(a,b){return[(b?this.mainBar.transition():this.mainBar).attr("d",a).style("fill",this.color).style("opacity",1)]},i.getBarW=function(a,b){var c=this,d=c.config,e="number"==typeof d.bar_width?d.bar_width:b?a.tickInterval()*d.bar_width_ratio/b:0;return d.bar_width_max&&e>d.bar_width_max?d.bar_width_max:e},i.getBars=function(a,b){var c=this;return(b?c.main.selectAll("."+l.bars+c.getTargetSelectorSuffix(b)):c.main).selectAll("."+l.bar+(m(a)?"-"+a:""))},i.expandBars=function(a,b,c){var d=this;c&&d.unexpandBars(),d.getBars(a,b).classed(l.EXPANDED,!0)},i.unexpandBars=function(a){var b=this;b.getBars(a).classed(l.EXPANDED,!1)},i.generateDrawBar=function(a,b){var c=this,d=c.config,e=c.generateGetBarPoints(a,b);return function(a,b){var c=e(a,b),f=d.axis_rotated?1:0,g=d.axis_rotated?0:1,h="M "+c[0][f]+","+c[0][g]+" L"+c[1][f]+","+c[1][g]+" L"+c[2][f]+","+c[2][g]+" L"+c[3][f]+","+c[3][g]+" z";return h}},i.generateGetBarPoints=function(a,b){var c=this,d=b?c.subXAxis:c.xAxis,e=a.__max__+1,f=c.getBarW(d,e),g=c.getShapeX(f,e,a,!!b),h=c.getShapeY(!!b),i=c.getShapeOffset(c.isBarType,a,!!b),j=b?c.getSubYScale:c.getYScale; +return function(a,b){var d=j.call(c,a.id)(0),e=i(a,b)||d,k=g(a),l=h(a);return c.config.axis_rotated&&(0<a.value&&d>l||a.value<0&&l>d)&&(l=d),[[k,e],[k,l-(d-e)],[k+f,l-(d-e)],[k+f,e]]}},i.isWithinBar=function(a){var b=this.d3.mouse(a),c=a.getBoundingClientRect(),d=a.pathSegList.getItem(0),e=a.pathSegList.getItem(1),f=Math.min(d.x,e.x),g=Math.min(d.y,e.y),h=c.width,i=c.height,j=2,k=f-j,l=f+h+j,m=g+i+j,n=g-j;return k<b[0]&&b[0]<l&&n<b[1]&&b[1]<m},i.initText=function(){var a=this;a.main.select("."+l.chart).append("g").attr("class",l.chartTexts),a.mainText=a.d3.selectAll([])},i.updateTargetsForText=function(a){var b,c,d=this,e=d.classChartText.bind(d),f=d.classTexts.bind(d),g=d.classFocus.bind(d);b=d.main.select("."+l.chartTexts).selectAll("."+l.chartText).data(a).attr("class",function(a){return e(a)+g(a)}),c=b.enter().append("g").attr("class",e).style("opacity",0).style("pointer-events","none"),c.append("g").attr("class",f)},i.updateText=function(a){var b=this,c=b.config,d=b.barOrLineData.bind(b),e=b.classText.bind(b);b.mainText=b.main.selectAll("."+l.texts).selectAll("."+l.text).data(d),b.mainText.enter().append("text").attr("class",e).attr("text-anchor",function(a){return c.axis_rotated?a.value<0?"end":"start":"middle"}).style("stroke","none").style("fill",function(a){return b.color(a)}).style("fill-opacity",0),b.mainText.text(function(a,c,d){return b.dataLabelFormat(a.id)(a.value,a.id,c,d)}),b.mainText.exit().transition().duration(a).style("fill-opacity",0).remove()},i.redrawText=function(a,b,c,d){return[(d?this.mainText.transition():this.mainText).attr("x",a).attr("y",b).style("fill",this.color).style("fill-opacity",c?0:this.opacityForText.bind(this))]},i.getTextRect=function(a,b){var c,d=this.d3.select("body").append("div").classed("c3",!0),e=d.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0);return e.selectAll(".dummy").data([a]).enter().append("text").classed(b?b:"",!0).text(a).each(function(){c=this.getBoundingClientRect()}),d.remove(),c},i.generateXYForText=function(a,b,c,d){var e=this,f=e.generateGetAreaPoints(a,!1),g=e.generateGetBarPoints(b,!1),h=e.generateGetLinePoints(c,!1),i=d?e.getXForText:e.getYForText;return function(a,b){var c=e.isAreaType(a)?f:e.isBarType(a)?g:h;return i.call(e,c(a,b),a,this)}},i.getXForText=function(a,b,c){var d,e,f=this,g=c.getBoundingClientRect();return f.config.axis_rotated?(e=f.isBarType(b)?4:6,d=a[2][1]+e*(b.value<0?-1:1)):d=f.hasType("bar")?(a[2][0]+a[0][0])/2:a[0][0],null===b.value&&(d>f.width?d=f.width-g.width:0>d&&(d=4)),d},i.getYForText=function(a,b,c){var d,e=this,f=c.getBoundingClientRect();return e.config.axis_rotated?d=(a[0][0]+a[2][0]+.6*f.height)/2:(d=a[2][1],b.value<0?(d+=f.height,e.isBarType(b)&&e.isSafari()?d-=3:!e.isBarType(b)&&e.isChrome()&&(d+=3)):d+=e.isBarType(b)?-3:-6),null!==b.value||e.config.axis_rotated||(d<f.height?d=f.height:d>this.height&&(d=this.height-4)),d},i.setTargetType=function(a,b){var c=this,d=c.config;c.mapToTargetIds(a).forEach(function(a){c.withoutFadeIn[a]=b===d.data_types[a],d.data_types[a]=b}),a||(d.data_type=b)},i.hasType=function(a,b){var c=this,d=c.config.data_types,e=!1;return b=b||c.data.targets,b&&b.length?b.forEach(function(b){var c=d[b.id];(c&&c.indexOf(a)>=0||!c&&"line"===a)&&(e=!0)}):Object.keys(d).length?Object.keys(d).forEach(function(b){d[b]===a&&(e=!0)}):e=c.config.data_type===a,e},i.hasArcType=function(a){return this.hasType("pie",a)||this.hasType("donut",a)||this.hasType("gauge",a)},i.isLineType=function(a){var b=this.config,c=o(a)?a:a.id;return!b.data_types[c]||["line","spline","area","area-spline","step","area-step"].indexOf(b.data_types[c])>=0},i.isStepType=function(a){var b=o(a)?a:a.id;return["step","area-step"].indexOf(this.config.data_types[b])>=0},i.isSplineType=function(a){var b=o(a)?a:a.id;return["spline","area-spline"].indexOf(this.config.data_types[b])>=0},i.isAreaType=function(a){var b=o(a)?a:a.id;return["area","area-spline","area-step"].indexOf(this.config.data_types[b])>=0},i.isBarType=function(a){var b=o(a)?a:a.id;return"bar"===this.config.data_types[b]},i.isScatterType=function(a){var b=o(a)?a:a.id;return"scatter"===this.config.data_types[b]},i.isPieType=function(a){var b=o(a)?a:a.id;return"pie"===this.config.data_types[b]},i.isGaugeType=function(a){var b=o(a)?a:a.id;return"gauge"===this.config.data_types[b]},i.isDonutType=function(a){var b=o(a)?a:a.id;return"donut"===this.config.data_types[b]},i.isArcType=function(a){return this.isPieType(a)||this.isDonutType(a)||this.isGaugeType(a)},i.lineData=function(a){return this.isLineType(a)?[a]:[]},i.arcData=function(a){return this.isArcType(a.data)?[a]:[]},i.barData=function(a){return this.isBarType(a)?a.values:[]},i.lineOrScatterData=function(a){return this.isLineType(a)||this.isScatterType(a)?a.values:[]},i.barOrLineData=function(a){return this.isBarType(a)||this.isLineType(a)?a.values:[]},i.initGrid=function(){var a=this,b=a.config,c=a.d3;a.grid=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid),b.grid_x_show&&a.grid.append("g").attr("class",l.xgrids),b.grid_y_show&&a.grid.append("g").attr("class",l.ygrids),b.grid_focus_show&&a.grid.append("g").attr("class",l.xgridFocus).append("line").attr("class",l.xgridFocus),a.xgrid=c.selectAll([]),b.grid_lines_front||a.initGridLines()},i.initGridLines=function(){var a=this,b=a.d3;a.gridLines=a.main.append("g").attr("clip-path",a.clipPathForGrid).attr("class",l.grid+" "+l.gridLines),a.gridLines.append("g").attr("class",l.xgridLines),a.gridLines.append("g").attr("class",l.ygridLines),a.xgridLines=b.selectAll([])},i.updateXGrid=function(a){var b=this,c=b.config,d=b.d3,e=b.generateGridData(c.grid_x_type,b.x),f=b.isCategorized()?b.xAxis.tickOffset():0;b.xgridAttr=c.axis_rotated?{x1:0,x2:b.width,y1:function(a){return b.x(a)-f},y2:function(a){return b.x(a)-f}}:{x1:function(a){return b.x(a)+f},x2:function(a){return b.x(a)+f},y1:0,y2:b.height},b.xgrid=b.main.select("."+l.xgrids).selectAll("."+l.xgrid).data(e),b.xgrid.enter().append("line").attr("class",l.xgrid),a||b.xgrid.attr(b.xgridAttr).style("opacity",function(){return+d.select(this).attr(c.axis_rotated?"y1":"x1")===(c.axis_rotated?b.height:0)?0:1}),b.xgrid.exit().remove()},i.updateYGrid=function(){var a=this,b=a.config,c=a.yAxis.tickValues()||a.y.ticks(b.grid_y_ticks);a.ygrid=a.main.select("."+l.ygrids).selectAll("."+l.ygrid).data(c),a.ygrid.enter().append("line").attr("class",l.ygrid),a.ygrid.attr("x1",b.axis_rotated?a.y:0).attr("x2",b.axis_rotated?a.y:a.width).attr("y1",b.axis_rotated?0:a.y).attr("y2",b.axis_rotated?a.height:a.y),a.ygrid.exit().remove(),a.smoothLines(a.ygrid,"grid")},i.gridTextAnchor=function(a){return a.position?a.position:"end"},i.gridTextDx=function(a){return"start"===a.position?4:"middle"===a.position?0:-4},i.xGridTextX=function(a){return"start"===a.position?-this.height:"middle"===a.position?-this.height/2:0},i.yGridTextX=function(a){return"start"===a.position?0:"middle"===a.position?this.width/2:this.width},i.updateGrid=function(a){var b,c,d,e=this,f=e.main,g=e.config;e.grid.style("visibility",e.hasArcType()?"hidden":"visible"),f.select("line."+l.xgridFocus).style("visibility","hidden"),g.grid_x_show&&e.updateXGrid(),e.xgridLines=f.select("."+l.xgridLines).selectAll("."+l.xgridLine).data(g.grid_x_lines),b=e.xgridLines.enter().append("g").attr("class",function(a){return l.xgridLine+(a["class"]?" "+a["class"]:"")}),b.append("line").style("opacity",0),b.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"":"rotate(-90)").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),e.xgridLines.exit().transition().duration(a).style("opacity",0).remove(),g.grid_y_show&&e.updateYGrid(),e.ygridLines=f.select("."+l.ygridLines).selectAll("."+l.ygridLine).data(g.grid_y_lines),c=e.ygridLines.enter().append("g").attr("class",function(a){return l.ygridLine+(a["class"]?" "+a["class"]:"")}),c.append("line").style("opacity",0),c.append("text").attr("text-anchor",e.gridTextAnchor).attr("transform",g.axis_rotated?"rotate(-90)":"").attr("dx",e.gridTextDx).attr("dy",-5).style("opacity",0),d=e.yv.bind(e),e.ygridLines.select("line").transition().duration(a).attr("x1",g.axis_rotated?d:0).attr("x2",g.axis_rotated?d:e.width).attr("y1",g.axis_rotated?0:d).attr("y2",g.axis_rotated?e.height:d).style("opacity",1),e.ygridLines.select("text").transition().duration(a).attr("x",g.axis_rotated?e.xGridTextX.bind(e):e.yGridTextX.bind(e)).attr("y",d).text(function(a){return a.text}).style("opacity",1),e.ygridLines.exit().transition().duration(a).style("opacity",0).remove()},i.redrawGrid=function(a){var b=this,c=b.config,d=b.xv.bind(b),e=b.xgridLines.select("line"),f=b.xgridLines.select("text");return[(a?e.transition():e).attr("x1",c.axis_rotated?0:d).attr("x2",c.axis_rotated?b.width:d).attr("y1",c.axis_rotated?d:0).attr("y2",c.axis_rotated?d:b.height).style("opacity",1),(a?f.transition():f).attr("x",c.axis_rotated?b.yGridTextX.bind(b):b.xGridTextX.bind(b)).attr("y",d).text(function(a){return a.text}).style("opacity",1)]},i.showXGridFocus=function(a){var b=this,c=b.config,d=a.filter(function(a){return a&&m(a.value)}),e=b.main.selectAll("line."+l.xgridFocus),f=b.xx.bind(b);c.tooltip_show&&(b.hasType("scatter")||b.hasArcType()||(e.style("visibility","visible").data([d[0]]).attr(c.axis_rotated?"y1":"x1",f).attr(c.axis_rotated?"y2":"x2",f),b.smoothLines(e,"grid")))},i.hideXGridFocus=function(){this.main.select("line."+l.xgridFocus).style("visibility","hidden")},i.updateXgridFocus=function(){var a=this,b=a.config;a.main.select("line."+l.xgridFocus).attr("x1",b.axis_rotated?0:-10).attr("x2",b.axis_rotated?a.width:-10).attr("y1",b.axis_rotated?-10:0).attr("y2",b.axis_rotated?-10:a.height)},i.generateGridData=function(a,b){var c,d,e,f,g=this,h=[],i=g.main.select("."+l.axisX).selectAll(".tick").size();if("year"===a)for(c=g.getXDomain(),d=c[0].getFullYear(),e=c[1].getFullYear(),f=d;e>=f;f++)h.push(new Date(f+"-01-01 00:00:00"));else h=b.ticks(10),h.length>i&&(h=h.filter(function(a){return(""+a).indexOf(".")<0}));return h},i.getGridFilterToRemove=function(a){return a?function(b){var c=!1;return[].concat(a).forEach(function(a){("value"in a&&b.value===a.value||"class"in a&&b["class"]===a["class"])&&(c=!0)}),c}:function(){return!0}},i.removeGridLines=function(a,b){var c=this,d=c.config,e=c.getGridFilterToRemove(a),f=function(a){return!e(a)},g=b?l.xgridLines:l.ygridLines,h=b?l.xgridLine:l.ygridLine;c.main.select("."+g).selectAll("."+h).filter(e).transition().duration(d.transition_duration).style("opacity",0).remove(),b?d.grid_x_lines=d.grid_x_lines.filter(f):d.grid_y_lines=d.grid_y_lines.filter(f)},i.initTooltip=function(){var a,b=this,c=b.config;if(b.tooltip=b.selectChart.style("position","relative").append("div").attr("class",l.tooltipContainer).style("position","absolute").style("pointer-events","none").style("display","none"),c.tooltip_init_show){if(b.isTimeSeries()&&o(c.tooltip_init_x)){for(c.tooltip_init_x=b.parseDate(c.tooltip_init_x),a=0;a<b.data.targets[0].values.length&&b.data.targets[0].values[a].x-c.tooltip_init_x!==0;a++);c.tooltip_init_x=a}b.tooltip.html(c.tooltip_contents.call(b,b.data.targets.map(function(a){return b.addName(a.values[c.tooltip_init_x])}),b.axis.getXAxisTickFormat(),b.getYFormat(b.hasArcType()),b.color)),b.tooltip.style("top",c.tooltip_init_position.top).style("left",c.tooltip_init_position.left).style("display","block")}},i.getTooltipContent=function(a,b,c,d){var e,f,g,h,i,j,k=this,m=k.config,n=m.tooltip_format_title||b,o=m.tooltip_format_name||function(a){return a},p=m.tooltip_format_value||c;for(f=0;f<a.length;f++)a[f]&&(a[f].value||0===a[f].value)&&(e||(g=n?n(a[f].x):a[f].x,e="<table class='"+l.tooltip+"'>"+(g||0===g?"<tr><th colspan='2'>"+g+"</th></tr>":"")),h=p(a[f].value,a[f].ratio,a[f].id,a[f].index),void 0!==h&&(i=o(a[f].name,a[f].ratio,a[f].id,a[f].index),j=k.levelColor?k.levelColor(a[f].value):d(a[f].id),e+="<tr class='"+l.tooltipName+"-"+a[f].id+"'>",e+="<td class='name'><span style='background-color:"+j+"'></span>"+i+"</td>",e+="<td class='value'>"+h+"</td>",e+="</tr>"));return e+"</table>"},i.tooltipPosition=function(a,b,c,d){var e,f,g,h,i,j=this,k=j.config,l=j.d3,m=j.hasArcType(),n=l.mouse(d);return m?(f=(j.width-(j.isLegendRight?j.getLegendWidth():0))/2+n[0],h=j.height/2+n[1]+20):(e=j.getSvgLeft(!0),k.axis_rotated?(f=e+n[0]+100,g=f+b,i=j.currentWidth-j.getCurrentPaddingRight(),h=j.x(a[0].x)+20):(f=e+j.getCurrentPaddingLeft(!0)+j.x(a[0].x)+20,g=f+b,i=e+j.currentWidth-j.getCurrentPaddingRight(),h=n[1]+15),g>i&&(f-=g-i+20),h+c>j.currentHeight&&(h-=c+30)),0>h&&(h=0),{top:h,left:f}},i.showTooltip=function(a,b){var c,d,e,f=this,g=f.config,h=f.hasArcType(),j=a.filter(function(a){return a&&m(a.value)}),k=g.tooltip_position||i.tooltipPosition;0!==j.length&&g.tooltip_show&&(f.tooltip.html(g.tooltip_contents.call(f,a,f.axis.getXAxisTickFormat(),f.getYFormat(h),f.color)).style("display","block"),c=f.tooltip.property("offsetWidth"),d=f.tooltip.property("offsetHeight"),e=k.call(this,j,c,d,b),f.tooltip.style("top",e.top+"px").style("left",e.left+"px"))},i.hideTooltip=function(){this.tooltip.style("display","none")},i.initLegend=function(){var a=this;return a.legendItemTextBox={},a.legendHasRendered=!1,a.legend=a.svg.append("g").attr("transform",a.getTranslate("legend")),a.config.legend_show?void a.updateLegendWithDefaults():(a.legend.style("visibility","hidden"),void(a.hiddenLegendIds=a.mapToIds(a.data.targets)))},i.updateLegendWithDefaults=function(){var a=this;a.updateLegend(a.mapToIds(a.data.targets),{withTransform:!1,withTransitionForTransform:!1,withTransition:!1})},i.updateSizeForLegend=function(a,b){var c=this,d=c.config,e={top:c.isLegendTop?c.getCurrentPaddingTop()+d.legend_inset_y+5.5:c.currentHeight-a-c.getCurrentPaddingBottom()-d.legend_inset_y,left:c.isLegendLeft?c.getCurrentPaddingLeft()+d.legend_inset_x+.5:c.currentWidth-b-c.getCurrentPaddingRight()-d.legend_inset_x+.5};c.margin3={top:c.isLegendRight?0:c.isLegendInset?e.top:c.currentHeight-a,right:0/0,bottom:0,left:c.isLegendRight?c.currentWidth-b:c.isLegendInset?e.left:0}},i.transformLegend=function(a){var b=this;(a?b.legend.transition():b.legend).attr("transform",b.getTranslate("legend"))},i.updateLegendStep=function(a){this.legendStep=a},i.updateLegendItemWidth=function(a){this.legendItemWidth=a},i.updateLegendItemHeight=function(a){this.legendItemHeight=a},i.getLegendWidth=function(){var a=this;return a.config.legend_show?a.isLegendRight||a.isLegendInset?a.legendItemWidth*(a.legendStep+1):a.currentWidth:0},i.getLegendHeight=function(){var a=this,b=0;return a.config.legend_show&&(b=a.isLegendRight?a.currentHeight:Math.max(20,a.legendItemHeight)*(a.legendStep+1)),b},i.opacityForLegend=function(a){return a.classed(l.legendItemHidden)?null:1},i.opacityForUnfocusedLegend=function(a){return a.classed(l.legendItemHidden)?null:.3},i.toggleFocusLegend=function(a,b){var c=this;a=c.mapToTargetIds(a),c.legend.selectAll("."+l.legendItem).filter(function(b){return a.indexOf(b)>=0}).classed(l.legendItemFocused,b).transition().duration(100).style("opacity",function(){var a=b?c.opacityForLegend:c.opacityForUnfocusedLegend;return a.call(c,c.d3.select(this))})},i.revertLegend=function(){var a=this,b=a.d3;a.legend.selectAll("."+l.legendItem).classed(l.legendItemFocused,!1).transition().duration(100).style("opacity",function(){return a.opacityForLegend(b.select(this))})},i.showLegend=function(a){var b=this,c=b.config;c.legend_show||(c.legend_show=!0,b.legend.style("visibility","visible"),b.legendHasRendered||b.updateLegendWithDefaults()),b.removeHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("visibility","visible").transition().style("opacity",function(){return b.opacityForLegend(b.d3.select(this))})},i.hideLegend=function(a){var b=this,c=b.config;c.legend_show&&u(a)&&(c.legend_show=!1,b.legend.style("visibility","hidden")),b.addHiddenLegendIds(a),b.legend.selectAll(b.selectorLegends(a)).style("opacity",0).style("visibility","hidden")},i.clearLegendItemTextBoxCache=function(){this.legendItemTextBox={}},i.updateLegend=function(a,b,c){function d(a,b){return u.legendItemTextBox[b]||(u.legendItemTextBox[b]=u.getTextRect(a.textContent,l.legendItem)),u.legendItemTextBox[b]}function e(b,c,e){function f(a,b){b||(g=(o-D-n)/2,B>g&&(g=(o-n)/2,D=0,J++)),I[a]=J,H[J]=u.isLegendInset?10:g,E[a]=D,D+=n}var g,h,i=0===e,j=e===a.length-1,k=d(b,c),l=k.width+C+(!j||u.isLegendRight||u.isLegendInset?y:0),m=k.height+x,n=u.isLegendRight||u.isLegendInset?m:l,o=u.isLegendRight||u.isLegendInset?u.getLegendHeight():u.getLegendWidth();return i&&(D=0,J=0,z=0,A=0),v.legend_show&&!u.isLegendToShow(c)?void(F[c]=G[c]=I[c]=E[c]=0):(F[c]=l,G[c]=m,(!z||l>=z)&&(z=l),(!A||m>=A)&&(A=m),h=u.isLegendRight||u.isLegendInset?A:z,void(v.legend_equally?(Object.keys(F).forEach(function(a){F[a]=z}),Object.keys(G).forEach(function(a){G[a]=A}),g=(o-h*a.length)/2,B>g?(D=0,J=0,a.forEach(function(a){f(a)})):f(c,!0)):f(c)))}var f,g,h,i,j,k,m,n,o,p,r,s,t,u=this,v=u.config,x=4,y=10,z=0,A=0,B=10,C=15,D=0,E={},F={},G={},H=[0],I={},J=0;b=b||{},n=w(b,"withTransition",!0),o=w(b,"withTransitionForTransform",!0),u.isLegendInset&&(J=v.legend_inset_step?v.legend_inset_step:a.length,u.updateLegendStep(J)),u.isLegendRight?(f=function(a){return z*I[a]},i=function(a){return H[I[a]]+E[a]}):u.isLegendInset?(f=function(a){return z*I[a]+10},i=function(a){return H[I[a]]+E[a]}):(f=function(a){return H[I[a]]+E[a]},i=function(a){return A*I[a]}),g=function(a,b){return f(a,b)+14},j=function(a,b){return i(a,b)+9},h=function(a,b){return f(a,b)},k=function(a,b){return i(a,b)-5},m=u.legend.selectAll("."+l.legendItem).data(a).enter().append("g").attr("class",function(a){return u.generateClass(l.legendItem,a)}).style("visibility",function(a){return u.isLegendToShow(a)?"visible":"hidden"}).style("cursor","pointer").on("click",function(a){v.legend_item_onclick?v.legend_item_onclick.call(u,a):u.d3.event.altKey?(u.api.hide(),u.api.show(a)):(u.api.toggle(a),u.isTargetToShow(a)?u.api.focus(a):u.api.revert())}).on("mouseover",function(a){u.d3.select(this).classed(l.legendItemFocused,!0),!u.transiting&&u.isTargetToShow(a)&&u.api.focus(a),v.legend_item_onmouseover&&v.legend_item_onmouseover.call(u,a)}).on("mouseout",function(a){u.d3.select(this).classed(l.legendItemFocused,!1),u.api.revert(),v.legend_item_onmouseout&&v.legend_item_onmouseout.call(u,a)}),m.append("text").text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}).style("pointer-events","none").attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:j),m.append("rect").attr("class",l.legendItemEvent).style("fill-opacity",0).attr("x",u.isLegendRight||u.isLegendInset?h:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:k),m.append("rect").attr("class",l.legendItemTile).style("pointer-events","none").style("fill",u.color).attr("x",u.isLegendRight||u.isLegendInset?g:-200).attr("y",u.isLegendRight||u.isLegendInset?-200:i).attr("width",10).attr("height",10),t=u.legend.select("."+l.legendBackground+" rect"),u.isLegendInset&&z>0&&0===t.size()&&(t=u.legend.insert("g","."+l.legendItem).attr("class",l.legendBackground).append("rect")),p=u.legend.selectAll("text").data(a).text(function(a){return q(v.data_names[a])?v.data_names[a]:a}).each(function(a,b){e(this,a,b)}),(n?p.transition():p).attr("x",g).attr("y",j),r=u.legend.selectAll("rect."+l.legendItemEvent).data(a),(n?r.transition():r).attr("width",function(a){return F[a]}).attr("height",function(a){return G[a]}).attr("x",h).attr("y",k),s=u.legend.selectAll("rect."+l.legendItemTile).data(a),(n?s.transition():s).style("fill",u.color).attr("x",f).attr("y",i),t&&(n?t.transition():t).attr("height",u.getLegendHeight()-12).attr("width",z*(J+1)+10),u.legend.selectAll("."+l.legendItem).classed(l.legendItemHidden,function(a){return!u.isTargetToShow(a)}),u.updateLegendItemWidth(z),u.updateLegendItemHeight(A),u.updateLegendStep(J),u.updateSizes(),u.updateScales(),u.updateSvgSize(),u.transformAll(o,c),u.legendHasRendered=!0},c(b,f),f.prototype.init=function(){var a=this.owner,b=a.config,c=a.main;a.axes.x=c.append("g").attr("class",l.axis+" "+l.axisX).attr("clip-path",a.clipPathForXAxis).attr("transform",a.getTranslate("x")).style("visibility",b.axis_x_show?"visible":"hidden"),a.axes.x.append("text").attr("class",l.axisXLabel).attr("transform",b.axis_rotated?"rotate(-90)":"").style("text-anchor",this.textAnchorForXAxisLabel.bind(this)),a.axes.y=c.append("g").attr("class",l.axis+" "+l.axisY).attr("clip-path",b.axis_y_inner?"":a.clipPathForYAxis).attr("transform",a.getTranslate("y")).style("visibility",b.axis_y_show?"visible":"hidden"),a.axes.y.append("text").attr("class",l.axisYLabel).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForYAxisLabel.bind(this)),a.axes.y2=c.append("g").attr("class",l.axis+" "+l.axisY2).attr("transform",a.getTranslate("y2")).style("visibility",b.axis_y2_show?"visible":"hidden"),a.axes.y2.append("text").attr("class",l.axisY2Label).attr("transform",b.axis_rotated?"":"rotate(-90)").style("text-anchor",this.textAnchorForY2AxisLabel.bind(this))},f.prototype.getXAxis=function(a,b,c,d,e,f,h){var i=this.owner,j=i.config,k={isCategory:i.isCategorized(),withOuterTick:e,tickMultiline:j.axis_x_tick_multiline,tickWidth:j.axis_x_tick_width,tickTextRotate:h?0:j.axis_x_tick_rotate,withoutTransition:f},l=g(i.d3,k).scale(a).orient(b);return i.isTimeSeries()&&d&&(d=d.map(function(a){return i.parseDate(a)})),l.tickFormat(c).tickValues(d),i.isCategorized()&&(l.tickCentered(j.axis_x_tick_centered),u(j.axis_x_tick_culling)&&(j.axis_x_tick_culling=!1)),l},f.prototype.updateXAxisTickValues=function(a,b){var c,d=this.owner,e=d.config;return(e.axis_x_tick_fit||e.axis_x_tick_count)&&(c=this.generateTickValues(d.mapTargetsToUniqueXs(a),e.axis_x_tick_count,d.isTimeSeries())),b?b.tickValues(c):(d.xAxis.tickValues(c),d.subXAxis.tickValues(c)),c},f.prototype.getYAxis=function(a,b,c,d,e,f){var h={withOuterTick:e,withoutTransition:f},i=this.owner,j=i.d3,k=i.config,l=g(j,h).scale(a).orient(b).tickFormat(c);return i.isTimeSeriesY()?l.ticks(j.time[k.axis_y_tick_time_value],k.axis_y_tick_time_interval):l.tickValues(d),l},f.prototype.getId=function(a){var b=this.owner.config;return a in b.data_axes?b.data_axes[a]:"y"},f.prototype.getXAxisTickFormat=function(){var a=this.owner,b=a.config,c=a.isTimeSeries()?a.defaultAxisTimeFormat:a.isCategorized()?a.categoryName:function(a){return 0>a?a.toFixed(0):a};return b.axis_x_tick_format&&(n(b.axis_x_tick_format)?c=b.axis_x_tick_format:a.isTimeSeries()&&(c=function(c){return c?a.axisTimeFormat(b.axis_x_tick_format)(c):""})),n(c)?function(b){return c.call(a,b)}:c},f.prototype.getTickValues=function(a,b){return a?a:b?b.tickValues():void 0},f.prototype.getXAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_x_tick_values,this.owner.xAxis)},f.prototype.getYAxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y_tick_values,this.owner.yAxis)},f.prototype.getY2AxisTickValues=function(){return this.getTickValues(this.owner.config.axis_y2_tick_values,this.owner.y2Axis)},f.prototype.getLabelOptionByAxisId=function(a){var b,c=this.owner,d=c.config;return"y"===a?b=d.axis_y_label:"y2"===a?b=d.axis_y2_label:"x"===a&&(b=d.axis_x_label),b},f.prototype.getLabelText=function(a){var b=this.getLabelOptionByAxisId(a);return o(b)?b:b?b.text:null},f.prototype.setLabelText=function(a,b){var c=this.owner,d=c.config,e=this.getLabelOptionByAxisId(a);o(e)?"y"===a?d.axis_y_label=b:"y2"===a?d.axis_y2_label=b:"x"===a&&(d.axis_x_label=b):e&&(e.text=b)},f.prototype.getLabelPosition=function(a,b){var c=this.getLabelOptionByAxisId(a),d=c&&"object"==typeof c&&c.position?c.position:b;return{isInner:d.indexOf("inner")>=0,isOuter:d.indexOf("outer")>=0,isLeft:d.indexOf("left")>=0,isCenter:d.indexOf("center")>=0,isRight:d.indexOf("right")>=0,isTop:d.indexOf("top")>=0,isMiddle:d.indexOf("middle")>=0,isBottom:d.indexOf("bottom")>=0}},f.prototype.getXAxisLabelPosition=function(){return this.getLabelPosition("x",this.owner.config.axis_rotated?"inner-top":"inner-right")},f.prototype.getYAxisLabelPosition=function(){return this.getLabelPosition("y",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getY2AxisLabelPosition=function(){return this.getLabelPosition("y2",this.owner.config.axis_rotated?"inner-right":"inner-top")},f.prototype.getLabelPositionById=function(a){return"y2"===a?this.getY2AxisLabelPosition():"y"===a?this.getYAxisLabelPosition():this.getXAxisLabelPosition()},f.prototype.textForXAxisLabel=function(){return this.getLabelText("x")},f.prototype.textForYAxisLabel=function(){return this.getLabelText("y")},f.prototype.textForY2AxisLabel=function(){return this.getLabelText("y2")},f.prototype.xForAxisLabel=function(a,b){var c=this.owner;return a?b.isLeft?0:b.isCenter?c.width/2:c.width:b.isBottom?-c.height:b.isMiddle?-c.height/2:0},f.prototype.dxForAxisLabel=function(a,b){return a?b.isLeft?"0.5em":b.isRight?"-0.5em":"0":b.isTop?"-0.5em":b.isBottom?"0.5em":"0"},f.prototype.textAnchorForAxisLabel=function(a,b){return a?b.isLeft?"start":b.isCenter?"middle":"end":b.isBottom?"start":b.isMiddle?"middle":"end"},f.prototype.xForXAxisLabel=function(){return this.xForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.xForYAxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.xForY2AxisLabel=function(){return this.xForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dxForXAxisLabel=function(){return this.dxForAxisLabel(!this.owner.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.dxForYAxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.dxForY2AxisLabel=function(){return this.dxForAxisLabel(this.owner.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.dyForXAxisLabel=function(){var a=this.owner,b=a.config,c=this.getXAxisLabelPosition();return b.axis_rotated?c.isInner?"1.2em":-25-this.getMaxTickWidth("x"):c.isInner?"-0.5em":b.axis_x_height?b.axis_x_height-10:"3em"},f.prototype.dyForYAxisLabel=function(){var a=this.owner,b=this.getYAxisLabelPosition();return a.config.axis_rotated?b.isInner?"-0.5em":"3em":b.isInner?"1.2em":-10-(a.config.axis_y_inner?0:this.getMaxTickWidth("y")+10)},f.prototype.dyForY2AxisLabel=function(){var a=this.owner,b=this.getY2AxisLabelPosition();return a.config.axis_rotated?b.isInner?"1.2em":"-2.2em":b.isInner?"-0.5em":15+(a.config.axis_y2_inner?0:this.getMaxTickWidth("y2")+15)},f.prototype.textAnchorForXAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(!a.config.axis_rotated,this.getXAxisLabelPosition())},f.prototype.textAnchorForYAxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getYAxisLabelPosition())},f.prototype.textAnchorForY2AxisLabel=function(){var a=this.owner;return this.textAnchorForAxisLabel(a.config.axis_rotated,this.getY2AxisLabelPosition())},f.prototype.getMaxTickWidth=function(a,b){var c,d,e,f,g,h=this.owner,i=h.config,j=0;return b&&h.currentMaxTickWidths[a]?h.currentMaxTickWidths[a]:(h.svg&&(c=h.filterTargetsToShow(h.data.targets),"y"===a?(d=h.y.copy().domain(h.getYDomain(c,"y")),e=this.getYAxis(d,h.yOrient,i.axis_y_tick_format,h.yAxisTickValues,!1,!0)):"y2"===a?(d=h.y2.copy().domain(h.getYDomain(c,"y2")),e=this.getYAxis(d,h.y2Orient,i.axis_y2_tick_format,h.y2AxisTickValues,!1,!0)):(d=h.x.copy().domain(h.getXDomain(c)),e=this.getXAxis(d,h.xOrient,h.xAxisTickFormat,h.xAxisTickValues,!1,!0,!0),this.updateXAxisTickValues(c,e)),f=h.d3.select("body").append("div").classed("c3",!0),g=f.append("svg").style("visibility","hidden").style("position","fixed").style("top",0).style("left",0),g.append("g").call(e).each(function(){h.d3.select(this).selectAll("text").each(function(){var a=this.getBoundingClientRect();j<a.width&&(j=a.width)}),f.remove()})),h.currentMaxTickWidths[a]=0>=j?h.currentMaxTickWidths[a]:j,h.currentMaxTickWidths[a])},f.prototype.updateLabels=function(a){var b=this.owner,c=b.main.select("."+l.axisX+" ."+l.axisXLabel),d=b.main.select("."+l.axisY+" ."+l.axisYLabel),e=b.main.select("."+l.axisY2+" ."+l.axisY2Label);(a?c.transition():c).attr("x",this.xForXAxisLabel.bind(this)).attr("dx",this.dxForXAxisLabel.bind(this)).attr("dy",this.dyForXAxisLabel.bind(this)).text(this.textForXAxisLabel.bind(this)),(a?d.transition():d).attr("x",this.xForYAxisLabel.bind(this)).attr("dx",this.dxForYAxisLabel.bind(this)).attr("dy",this.dyForYAxisLabel.bind(this)).text(this.textForYAxisLabel.bind(this)),(a?e.transition():e).attr("x",this.xForY2AxisLabel.bind(this)).attr("dx",this.dxForY2AxisLabel.bind(this)).attr("dy",this.dyForY2AxisLabel.bind(this)).text(this.textForY2AxisLabel.bind(this))},f.prototype.getPadding=function(a,b,c,d){return m(a[b])?"ratio"===a.unit?a[b]*d:this.convertPixelsToAxisPadding(a[b],d):c},f.prototype.convertPixelsToAxisPadding=function(a,b){var c=this.owner,d=c.config.axis_rotated?c.width:c.height;return b*(a/d)},f.prototype.generateTickValues=function(a,b,c){var d,e,f,g,h,i,j,k=a;if(b)if(d=n(b)?b():b,1===d)k=[a[0]];else if(2===d)k=[a[0],a[a.length-1]];else if(d>2){for(g=d-2,e=a[0],f=a[a.length-1],h=(f-e)/(g+1),k=[e],i=0;g>i;i++)j=+e+h*(i+1),k.push(c?new Date(j):j);k.push(f)}return c||(k=k.sort(function(a,b){return a-b})),k},f.prototype.generateTransitions=function(a){var b=this.owner,c=b.axes;return{axisX:a?c.x.transition().duration(a):c.x,axisY:a?c.y.transition().duration(a):c.y,axisY2:a?c.y2.transition().duration(a):c.y2,axisSubX:a?c.subx.transition().duration(a):c.subx}},f.prototype.redraw=function(a,b){var c=this.owner;c.axes.x.style("opacity",b?0:1),c.axes.y.style("opacity",b?0:1),c.axes.y2.style("opacity",b?0:1),c.axes.subx.style("opacity",b?0:1),a.axisX.call(c.xAxis),a.axisY.call(c.yAxis),a.axisY2.call(c.y2Axis),a.axisSubX.call(c.subXAxis)},i.getClipPath=function(b){var c=a.navigator.appVersion.toLowerCase().indexOf("msie 9.")>=0;return"url("+(c?"":document.URL.split("#")[0])+"#"+b+")"},i.appendClip=function(a,b){return a.append("clipPath").attr("id",b).append("rect")},i.getAxisClipX=function(a){var b=Math.max(30,this.margin.left);return a?-(1+b):-(b-1)},i.getAxisClipY=function(a){return a?-20:-this.margin.top},i.getXAxisClipX=function(){var a=this;return a.getAxisClipX(!a.config.axis_rotated)},i.getXAxisClipY=function(){var a=this;return a.getAxisClipY(!a.config.axis_rotated)},i.getYAxisClipX=function(){var a=this;return a.config.axis_y_inner?-1:a.getAxisClipX(a.config.axis_rotated)},i.getYAxisClipY=function(){var a=this;return a.getAxisClipY(a.config.axis_rotated)},i.getAxisClipWidth=function(a){var b=this,c=Math.max(30,b.margin.left),d=Math.max(30,b.margin.right);return a?b.width+2+c+d:b.margin.left+20},i.getAxisClipHeight=function(a){return(a?this.margin.bottom:this.margin.top+this.height)+20},i.getXAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(!a.config.axis_rotated)},i.getXAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(!a.config.axis_rotated)},i.getYAxisClipWidth=function(){var a=this;return a.getAxisClipWidth(a.config.axis_rotated)+(a.config.axis_y_inner?20:0)},i.getYAxisClipHeight=function(){var a=this;return a.getAxisClipHeight(a.config.axis_rotated)},i.initPie=function(){var a=this,b=a.d3,c=a.config;a.pie=b.layout.pie().value(function(a){return a.values.reduce(function(a,b){return a+b.value},0)}),c.data_order||a.pie.sort(null)},i.updateRadius=function(){var a=this,b=a.config,c=b.gauge_width||b.donut_width;a.radiusExpanded=Math.min(a.arcWidth,a.arcHeight)/2,a.radius=.95*a.radiusExpanded,a.innerRadiusRatio=c?(a.radius-c)/a.radius:.6,a.innerRadius=a.hasType("donut")||a.hasType("gauge")?a.radius*a.innerRadiusRatio:0},i.updateArc=function(){var a=this;a.svgArc=a.getSvgArc(),a.svgArcExpanded=a.getSvgArcExpanded(),a.svgArcExpandedSub=a.getSvgArcExpanded(.98)},i.updateAngle=function(a){var b,c,d=this,e=d.config,f=!1,g=0,h=e.gauge_min,i=e.gauge_max; +return d.pie(d.filterTargetsToShow(d.data.targets)).forEach(function(b){f||b.data.id!==a.data.id||(f=!0,a=b,a.index=g),g++}),isNaN(a.startAngle)&&(a.startAngle=0),isNaN(a.endAngle)&&(a.endAngle=a.startAngle),d.isGaugeType(a.data)&&(b=Math.PI/(i-h),c=a.value<h?0:a.value<i?a.value-h:i-h,a.startAngle=-1*(Math.PI/2),a.endAngle=a.startAngle+b*c),f?a:null},i.getSvgArc=function(){var a=this,b=a.d3.svg.arc().outerRadius(a.radius).innerRadius(a.innerRadius),c=function(c,d){var e;return d?b(c):(e=a.updateAngle(c),e?b(e):"M 0 0")};return c.centroid=b.centroid,c},i.getSvgArcExpanded=function(a){var b=this,c=b.d3.svg.arc().outerRadius(b.radiusExpanded*(a?a:1)).innerRadius(b.innerRadius);return function(a){var d=b.updateAngle(a);return d?c(d):"M 0 0"}},i.getArc=function(a,b,c){return c||this.isArcType(a.data)?this.svgArc(a,b):"M 0 0"},i.transformForArcLabel=function(a){var b,c,d,e,f,g=this,h=g.updateAngle(a),i="";return h&&!g.hasType("gauge")&&(b=this.svgArc.centroid(h),c=isNaN(b[0])?0:b[0],d=isNaN(b[1])?0:b[1],e=Math.sqrt(c*c+d*d),f=g.radius&&e?(36/g.radius>.375?1.175-36/g.radius:.8)*g.radius/e:0,i="translate("+c*f+","+d*f+")"),i},i.getArcRatio=function(a){var b=this,c=b.hasType("gauge")?Math.PI:2*Math.PI;return a?(a.endAngle-a.startAngle)/c:null},i.convertToArcData=function(a){return this.addName({id:a.data.id,value:a.value,ratio:this.getArcRatio(a),index:a.index})},i.textForArcLabel=function(a){var b,c,d,e,f,g=this;return g.shouldShowArcLabel()?(b=g.updateAngle(a),c=b?b.value:null,d=g.getArcRatio(b),e=a.data.id,g.hasType("gauge")||g.meetsArcLabelThreshold(d)?(f=g.getArcLabelFormat(),f?f(c,d,e):g.defaultArcValueFormat(c,d)):""):""},i.expandArc=function(b){var c,d=this;return d.transiting?void(c=a.setInterval(function(){d.transiting||(a.clearInterval(c),d.legend.selectAll(".c3-legend-item-focused").size()>0&&d.expandArc(b))},10)):(b=d.mapToTargetIds(b),void d.svg.selectAll(d.selectorTargets(b,"."+l.chartArc)).each(function(a){d.shouldExpand(a.data.id)&&d.d3.select(this).selectAll("path").transition().duration(50).attr("d",d.svgArcExpanded).transition().duration(100).attr("d",d.svgArcExpandedSub).each(function(a){d.isDonutType(a.data)})}))},i.unexpandArc=function(a){var b=this;b.transiting||(a=b.mapToTargetIds(a),b.svg.selectAll(b.selectorTargets(a,"."+l.chartArc)).selectAll("path").transition().duration(50).attr("d",b.svgArc),b.svg.selectAll("."+l.arc).style("opacity",1))},i.shouldExpand=function(a){var b=this,c=b.config;return b.isDonutType(a)&&c.donut_expand||b.isGaugeType(a)&&c.gauge_expand||b.isPieType(a)&&c.pie_expand},i.shouldShowArcLabel=function(){var a=this,b=a.config,c=!0;return a.hasType("donut")?c=b.donut_label_show:a.hasType("pie")&&(c=b.pie_label_show),c},i.meetsArcLabelThreshold=function(a){var b=this,c=b.config,d=b.hasType("donut")?c.donut_label_threshold:c.pie_label_threshold;return a>=d},i.getArcLabelFormat=function(){var a=this,b=a.config,c=b.pie_label_format;return a.hasType("gauge")?c=b.gauge_label_format:a.hasType("donut")&&(c=b.donut_label_format),c},i.getArcTitle=function(){var a=this;return a.hasType("donut")?a.config.donut_title:""},i.updateTargetsForArc=function(a){var b,c,d=this,e=d.main,f=d.classChartArc.bind(d),g=d.classArcs.bind(d),h=d.classFocus.bind(d);b=e.select("."+l.chartArcs).selectAll("."+l.chartArc).data(d.pie(a)).attr("class",function(a){return f(a)+h(a.data)}),c=b.enter().append("g").attr("class",f),c.append("g").attr("class",g),c.append("text").attr("dy",d.hasType("gauge")?"-.1em":".35em").style("opacity",0).style("text-anchor","middle").style("pointer-events","none")},i.initArc=function(){var a=this;a.arcs=a.main.select("."+l.chart).append("g").attr("class",l.chartArcs).attr("transform",a.getTranslate("arc")),a.arcs.append("text").attr("class",l.chartArcsTitle).style("text-anchor","middle").text(a.getArcTitle())},i.redrawArc=function(a,b,c){var d,e=this,f=e.d3,g=e.config,h=e.main;d=h.selectAll("."+l.arcs).selectAll("."+l.arc).data(e.arcData.bind(e)),d.enter().append("path").attr("class",e.classArc.bind(e)).style("fill",function(a){return e.color(a.data)}).style("cursor",function(a){return g.interaction_enabled&&g.data_selection_isselectable(a)?"pointer":null}).style("opacity",0).each(function(a){e.isGaugeType(a.data)&&(a.startAngle=a.endAngle=-1*(Math.PI/2)),this._current=a}),d.attr("transform",function(a){return!e.isGaugeType(a.data)&&c?"scale(0)":""}).style("opacity",function(a){return a===this._current?0:1}).on("mouseover",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.expandArc(b.data.id),e.api.focus(b.data.id),e.toggleFocusLegend(b.data.id,!0),e.config.data_onmouseover(c,this))}:null).on("mousemove",g.interaction_enabled?function(a){var b=e.updateAngle(a),c=e.convertToArcData(b),d=[c];e.showTooltip(d,this)}:null).on("mouseout",g.interaction_enabled?function(a){var b,c;e.transiting||(b=e.updateAngle(a),c=e.convertToArcData(b),e.unexpandArc(b.data.id),e.api.revert(),e.revertLegend(),e.hideTooltip(),e.config.data_onmouseout(c,this))}:null).on("click",g.interaction_enabled?function(a,b){var c=e.updateAngle(a),d=e.convertToArcData(c);e.toggleShape&&e.toggleShape(this,d,b),e.config.data_onclick.call(e.api,d,this)}:null).each(function(){e.transiting=!0}).transition().duration(a).attrTween("d",function(a){var b,c=e.updateAngle(a);return c?(isNaN(this._current.startAngle)&&(this._current.startAngle=0),isNaN(this._current.endAngle)&&(this._current.endAngle=this._current.startAngle),b=f.interpolate(this._current,c),this._current=b(0),function(c){var d=b(c);return d.data=a.data,e.getArc(d,!0)}):function(){return"M 0 0"}}).attr("transform",c?"scale(1)":"").style("fill",function(a){return e.levelColor?e.levelColor(a.data.values[0].value):e.color(a.data.id)}).style("opacity",1).call(e.endall,function(){e.transiting=!1}),d.exit().transition().duration(b).style("opacity",0).remove(),h.selectAll("."+l.chartArc).select("text").style("opacity",0).attr("class",function(a){return e.isGaugeType(a.data)?l.gaugeValue:""}).text(e.textForArcLabel.bind(e)).attr("transform",e.transformForArcLabel.bind(e)).style("font-size",function(a){return e.isGaugeType(a.data)?Math.round(e.radius/5)+"px":""}).transition().duration(a).style("opacity",function(a){return e.isTargetToShow(a.data.id)&&e.isArcType(a.data)?1:0}),h.select("."+l.chartArcsTitle).style("opacity",e.hasType("donut")||e.hasType("gauge")?1:0),e.hasType("gauge")&&(e.arcs.select("."+l.chartArcsBackground).attr("d",function(){var a={data:[{value:g.gauge_max}],startAngle:-1*(Math.PI/2),endAngle:Math.PI/2};return e.getArc(a,!0,!0)}),e.arcs.select("."+l.chartArcsGaugeUnit).attr("dy",".75em").text(g.gauge_label_show?g.gauge_units:""),e.arcs.select("."+l.chartArcsGaugeMin).attr("dx",-1*(e.innerRadius+(e.radius-e.innerRadius)/2)+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_min:""),e.arcs.select("."+l.chartArcsGaugeMax).attr("dx",e.innerRadius+(e.radius-e.innerRadius)/2+"px").attr("dy","1.2em").text(g.gauge_label_show?g.gauge_max:""))},i.initGauge=function(){var a=this.arcs;this.hasType("gauge")&&(a.append("path").attr("class",l.chartArcsBackground),a.append("text").attr("class",l.chartArcsGaugeUnit).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMin).style("text-anchor","middle").style("pointer-events","none"),a.append("text").attr("class",l.chartArcsGaugeMax).style("text-anchor","middle").style("pointer-events","none"))},i.getGaugeLabelHeight=function(){return this.config.gauge_label_show?20:0},i.initRegion=function(){var a=this;a.region=a.main.append("g").attr("clip-path",a.clipPath).attr("class",l.regions)},i.updateRegion=function(a){var b=this,c=b.config;b.region.style("visibility",b.hasArcType()?"hidden":"visible"),b.mainRegion=b.main.select("."+l.regions).selectAll("."+l.region).data(c.regions),b.mainRegion.enter().append("g").attr("class",b.classRegion.bind(b)).append("rect").style("fill-opacity",0),b.mainRegion.exit().transition().duration(a).style("opacity",0).remove()},i.redrawRegion=function(a){var b=this,c=b.mainRegion.selectAll("rect"),d=b.regionX.bind(b),e=b.regionY.bind(b),f=b.regionWidth.bind(b),g=b.regionHeight.bind(b);return[(a?c.transition():c).attr("x",d).attr("y",e).attr("width",f).attr("height",g).style("fill-opacity",function(a){return m(a.opacity)?a.opacity:.1})]},i.regionX=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"start"in a?e(a.start):0:d.axis_rotated?0:"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionY=function(a){var b,c=this,d=c.config,e="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?0:"end"in a?e(a.end):0:d.axis_rotated&&"start"in a?c.x(c.isTimeSeries()?c.parseDate(a.start):a.start):0},i.regionWidth=function(a){var b,c=this,d=c.config,e=c.regionX(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated&&"end"in a?f(a.end):c.width:d.axis_rotated?c.width:"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.width,e>b?0:b-e},i.regionHeight=function(a){var b,c=this,d=c.config,e=this.regionY(a),f="y"===a.axis?c.y:c.y2;return b="y"===a.axis||"y2"===a.axis?d.axis_rotated?c.height:"start"in a?f(a.start):c.height:d.axis_rotated&&"end"in a?c.x(c.isTimeSeries()?c.parseDate(a.end):a.end):c.height,e>b?0:b-e},i.isRegionOnX=function(a){return!a.axis||"x"===a.axis},i.drag=function(a){var b,c,d,e,f,g,h,i,j=this,k=j.config,m=j.main,n=j.d3;j.hasArcType()||k.data_selection_enabled&&(!k.zoom_enabled||j.zoom.altDomain)&&k.data_selection_multiple&&(b=j.dragStart[0],c=j.dragStart[1],d=a[0],e=a[1],f=Math.min(b,d),g=Math.max(b,d),h=k.data_selection_grouped?j.margin.top:Math.min(c,e),i=k.data_selection_grouped?j.height:Math.max(c,e),m.select("."+l.dragarea).attr("x",f).attr("y",h).attr("width",g-f).attr("height",i-h),m.selectAll("."+l.shapes).selectAll("."+l.shape).filter(function(a){return k.data_selection_isselectable(a)}).each(function(a,b){var c,d,e,k,m,o,p=n.select(this),q=p.classed(l.SELECTED),r=p.classed(l.INCLUDED),s=!1;if(p.classed(l.circle))c=1*p.attr("cx"),d=1*p.attr("cy"),m=j.togglePoint,s=c>f&&g>c&&d>h&&i>d;else{if(!p.classed(l.bar))return;o=y(this),c=o.x,d=o.y,e=o.width,k=o.height,m=j.togglePath,s=!(c>g||f>c+e||d>i||h>d+k)}s^r&&(p.classed(l.INCLUDED,!r),p.classed(l.SELECTED,!q),m.call(j,!q,p,a,b))}))},i.dragstart=function(a){var b=this,c=b.config;b.hasArcType()||c.data_selection_enabled&&(b.dragStart=a,b.main.select("."+l.chart).append("rect").attr("class",l.dragarea).style("opacity",.1),b.dragging=!0)},i.dragend=function(){var a=this,b=a.config;a.hasArcType()||b.data_selection_enabled&&(a.main.select("."+l.dragarea).transition().duration(100).style("opacity",0).remove(),a.main.selectAll("."+l.shape).classed(l.INCLUDED,!1),a.dragging=!1)},i.selectPoint=function(a,b,c){var d=this,e=d.config,f=(e.axis_rotated?d.circleY:d.circleX).bind(d),g=(e.axis_rotated?d.circleX:d.circleY).bind(d),h=d.pointSelectR.bind(d);e.data_onselected.call(d.api,b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).data([b]).enter().append("circle").attr("class",function(){return d.generateClass(l.selectedCircle,c)}).attr("cx",f).attr("cy",g).attr("stroke",function(){return d.color(b)}).attr("r",function(a){return 1.4*d.pointSelectR(a)}).transition().duration(100).attr("r",h)},i.unselectPoint=function(a,b,c){var d=this;d.config.data_onunselected(b,a.node()),d.main.select("."+l.selectedCircles+d.getTargetSelectorSuffix(b.id)).selectAll("."+l.selectedCircle+"-"+c).transition().duration(100).attr("r",0).remove()},i.togglePoint=function(a,b,c,d){a?this.selectPoint(b,c,d):this.unselectPoint(b,c,d)},i.selectPath=function(a,b){var c=this;c.config.data_onselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.d3.rgb(c.color(b)).brighter(.75)})},i.unselectPath=function(a,b){var c=this;c.config.data_onunselected.call(c,b,a.node()),a.transition().duration(100).style("fill",function(){return c.color(b)})},i.togglePath=function(a,b,c,d){a?this.selectPath(b,c,d):this.unselectPath(b,c,d)},i.getToggle=function(a,b){var c,d=this;return"circle"===a.nodeName?c=d.isStepType(b)?function(){}:d.togglePoint:"path"===a.nodeName&&(c=d.togglePath),c},i.toggleShape=function(a,b,c){var d=this,e=d.d3,f=d.config,g=e.select(a),h=g.classed(l.SELECTED),i=d.getToggle(a,b).bind(d);f.data_selection_enabled&&f.data_selection_isselectable(b)&&(f.data_selection_multiple||d.main.selectAll("."+l.shapes+(f.data_selection_grouped?d.getTargetSelectorSuffix(b.id):"")).selectAll("."+l.shape).each(function(a,b){var c=e.select(this);c.classed(l.SELECTED)&&i(!1,c.classed(l.SELECTED,!1),a,b)}),g.classed(l.SELECTED,!h),i(!h,g,b,c))},i.initBrush=function(){var a=this,b=a.d3;a.brush=b.svg.brush().on("brush",function(){a.redrawForBrush()}),a.brush.update=function(){return a.context&&a.context.select("."+l.brush).call(this),this},a.brush.scale=function(b){return a.config.axis_rotated?this.y(b):this.x(b)}},i.initSubchart=function(){var a=this,b=a.config,c=a.context=a.svg.append("g").attr("transform",a.getTranslate("context"));c.style("visibility",b.subchart_show?"visible":"hidden"),c.append("g").attr("clip-path",a.clipPathForSubchart).attr("class",l.chart),c.select("."+l.chart).append("g").attr("class",l.chartBars),c.select("."+l.chart).append("g").attr("class",l.chartLines),c.append("g").attr("clip-path",a.clipPath).attr("class",l.brush).call(a.brush),a.axes.subx=c.append("g").attr("class",l.axisX).attr("transform",a.getTranslate("subx")).attr("clip-path",b.axis_rotated?"":a.clipPathForXAxis)},i.updateTargetsForSubchart=function(a){var b,c,d,e,f=this,g=f.context,h=f.config,i=f.classChartBar.bind(f),j=f.classBars.bind(f),k=f.classChartLine.bind(f),m=f.classLines.bind(f),n=f.classAreas.bind(f);h.subchart_show&&(e=g.select("."+l.chartBars).selectAll("."+l.chartBar).data(a).attr("class",i),d=e.enter().append("g").style("opacity",0).attr("class",i),d.append("g").attr("class",j),c=g.select("."+l.chartLines).selectAll("."+l.chartLine).data(a).attr("class",k),b=c.enter().append("g").style("opacity",0).attr("class",k),b.append("g").attr("class",m),b.append("g").attr("class",n),g.selectAll("."+l.brush+" rect").attr(h.axis_rotated?"width":"height",h.axis_rotated?f.width2:f.height2))},i.updateBarForSubchart=function(a){var b=this;b.contextBar=b.context.selectAll("."+l.bars).selectAll("."+l.bar).data(b.barData.bind(b)),b.contextBar.enter().append("path").attr("class",b.classBar.bind(b)).style("stroke","none").style("fill",b.color),b.contextBar.style("opacity",b.initialOpacity.bind(b)),b.contextBar.exit().transition().duration(a).style("opacity",0).remove()},i.redrawBarForSubchart=function(a,b,c){(b?this.contextBar.transition().duration(c):this.contextBar).attr("d",a).style("opacity",1)},i.updateLineForSubchart=function(a){var b=this;b.contextLine=b.context.selectAll("."+l.lines).selectAll("."+l.line).data(b.lineData.bind(b)),b.contextLine.enter().append("path").attr("class",b.classLine.bind(b)).style("stroke",b.color),b.contextLine.style("opacity",b.initialOpacity.bind(b)),b.contextLine.exit().transition().duration(a).style("opacity",0).remove()},i.redrawLineForSubchart=function(a,b,c){(b?this.contextLine.transition().duration(c):this.contextLine).attr("d",a).style("opacity",1)},i.updateAreaForSubchart=function(a){var b=this,c=b.d3;b.contextArea=b.context.selectAll("."+l.areas).selectAll("."+l.area).data(b.lineData.bind(b)),b.contextArea.enter().append("path").attr("class",b.classArea.bind(b)).style("fill",b.color).style("opacity",function(){return b.orgAreaOpacity=+c.select(this).style("opacity"),0}),b.contextArea.style("opacity",0),b.contextArea.exit().transition().duration(a).style("opacity",0).remove()},i.redrawAreaForSubchart=function(a,b,c){(b?this.contextArea.transition().duration(c):this.contextArea).attr("d",a).style("fill",this.color).style("opacity",this.orgAreaOpacity)},i.redrawSubchart=function(a,b,c,d,e,f,g){var h,i,j,k=this,l=k.d3,m=k.config;k.context.style("visibility",m.subchart_show?"visible":"hidden"),m.subchart_show&&(l.event&&"zoom"===l.event.type&&k.brush.extent(k.x.orgDomain()).update(),a&&(k.brush.empty()||k.brush.extent(k.x.orgDomain()).update(),h=k.generateDrawArea(e,!0),i=k.generateDrawBar(f,!0),j=k.generateDrawLine(g,!0),k.updateBarForSubchart(c),k.updateLineForSubchart(c),k.updateAreaForSubchart(c),k.redrawBarForSubchart(i,c,c),k.redrawLineForSubchart(j,c,c),k.redrawAreaForSubchart(h,c,c)))},i.redrawForBrush=function(){var a=this,b=a.x;a.redraw({withTransition:!1,withY:a.config.zoom_rescale,withSubchart:!1,withUpdateXDomain:!0,withDimension:!1}),a.config.subchart_onbrush.call(a.api,b.orgDomain())},i.transformContext=function(a,b){var c,d=this;b&&b.axisSubX?c=b.axisSubX:(c=d.context.select("."+l.axisX),a&&(c=c.transition())),d.context.attr("transform",d.getTranslate("context")),c.attr("transform",d.getTranslate("subx"))},i.getDefaultExtent=function(){var a=this,b=a.config,c=n(b.axis_x_extent)?b.axis_x_extent(a.getXDomain(a.data.targets)):b.axis_x_extent;return a.isTimeSeries()&&(c=[a.parseDate(c[0]),a.parseDate(c[1])]),c},i.initZoom=function(){var a,b=this,c=b.d3,d=b.config;b.zoom=c.behavior.zoom().on("zoomstart",function(){a=c.event.sourceEvent,b.zoom.altDomain=c.event.sourceEvent.altKey?b.x.orgDomain():null,d.zoom_onzoomstart.call(b.api,c.event.sourceEvent)}).on("zoom",function(){b.redrawForZoom.call(b)}).on("zoomend",function(){var e=c.event.sourceEvent;e&&a.clientX===e.clientX&&a.clientY===e.clientY||(b.redrawEventRect(),b.updateZoom(),d.zoom_onzoomend.call(b.api,b.x.orgDomain()))}),b.zoom.scale=function(a){return d.axis_rotated?this.y(a):this.x(a)},b.zoom.orgScaleExtent=function(){var a=d.zoom_extent?d.zoom_extent:[1,10];return[a[0],Math.max(b.getMaxDataCount()/a[1],a[1])]},b.zoom.updateScaleExtent=function(){var a=t(b.x.orgDomain())/t(b.orgXDomain),c=this.orgScaleExtent();return this.scaleExtent([c[0]*a,c[1]*a]),this}},i.updateZoom=function(){var a=this,b=a.config.zoom_enabled?a.zoom:function(){};a.main.select("."+l.zoomRect).call(b).on("dblclick.zoom",null),a.main.selectAll("."+l.eventRect).call(b).on("dblclick.zoom",null)},i.redrawForZoom=function(){var a=this,b=a.d3,c=a.config,d=a.zoom,e=a.x;if(c.zoom_enabled&&0!==a.filterTargetsToShow(a.data.targets).length){if("mousemove"===b.event.sourceEvent.type&&d.altDomain)return e.domain(d.altDomain),void d.scale(e).updateScaleExtent();a.isCategorized()&&e.orgDomain()[0]===a.orgXDomain[0]&&e.domain([a.orgXDomain[0]-1e-10,e.orgDomain()[1]]),a.redraw({withTransition:!1,withY:c.zoom_rescale,withSubchart:!1,withEventRect:!1,withDimension:!1}),"mousemove"===b.event.sourceEvent.type&&(a.cancelClick=!0),c.zoom_onzoom.call(a.api,e.orgDomain())}},i.generateColor=function(){var a=this,b=a.config,c=a.d3,d=b.data_colors,e=v(b.color_pattern)?b.color_pattern:c.scale.category10().range(),f=b.data_color,g=[];return function(a){var b,c=a.id||a.data&&a.data.id||a;return d[c]instanceof Function?b=d[c](a):d[c]?b=d[c]:(g.indexOf(c)<0&&g.push(c),b=e[g.indexOf(c)%e.length],d[c]=b),f instanceof Function?f(b,a):b}},i.generateLevelColor=function(){var a=this,b=a.config,c=b.color_pattern,d=b.color_threshold,e="value"===d.unit,f=d.values&&d.values.length?d.values:[],g=d.max||100;return v(b.color_threshold)?function(a){var b,d,h=c[c.length-1];for(b=0;b<f.length;b++)if(d=e?a:100*a/g,d<f[b]){h=c[b];break}return h}:null},i.getYFormat=function(a){var b=this,c=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.yFormat,d=a&&!b.hasType("gauge")?b.defaultArcValueFormat:b.y2Format;return function(a,e,f){var g="y2"===b.axis.getId(f)?d:c;return g.call(b,a,e)}},i.yFormat=function(a){var b=this,c=b.config,d=c.axis_y_tick_format?c.axis_y_tick_format:b.defaultValueFormat;return d(a)},i.y2Format=function(a){var b=this,c=b.config,d=c.axis_y2_tick_format?c.axis_y2_tick_format:b.defaultValueFormat;return d(a)},i.defaultValueFormat=function(a){return m(a)?+a:""},i.defaultArcValueFormat=function(a,b){return(100*b).toFixed(1)+"%"},i.dataLabelFormat=function(a){var b,c=this,d=c.config.data_labels,e=function(a){return m(a)?+a:""};return b="function"==typeof d.format?d.format:"object"==typeof d.format?d.format[a]?d.format[a]===!0?e:d.format[a]:function(){return""}:e},i.hasCaches=function(a){for(var b=0;b<a.length;b++)if(!(a[b]in this.cache))return!1;return!0},i.addCache=function(a,b){this.cache[a]=this.cloneTarget(b)},i.getCaches=function(a){var b,c=[];for(b=0;b<a.length;b++)a[b]in this.cache&&c.push(this.cloneTarget(this.cache[a[b]]));return c};var l=i.CLASS={target:"c3-target",chart:"c3-chart",chartLine:"c3-chart-line",chartLines:"c3-chart-lines",chartBar:"c3-chart-bar",chartBars:"c3-chart-bars",chartText:"c3-chart-text",chartTexts:"c3-chart-texts",chartArc:"c3-chart-arc",chartArcs:"c3-chart-arcs",chartArcsTitle:"c3-chart-arcs-title",chartArcsBackground:"c3-chart-arcs-background",chartArcsGaugeUnit:"c3-chart-arcs-gauge-unit",chartArcsGaugeMax:"c3-chart-arcs-gauge-max",chartArcsGaugeMin:"c3-chart-arcs-gauge-min",selectedCircle:"c3-selected-circle",selectedCircles:"c3-selected-circles",eventRect:"c3-event-rect",eventRects:"c3-event-rects",eventRectsSingle:"c3-event-rects-single",eventRectsMultiple:"c3-event-rects-multiple",zoomRect:"c3-zoom-rect",brush:"c3-brush",focused:"c3-focused",defocused:"c3-defocused",region:"c3-region",regions:"c3-regions",tooltipContainer:"c3-tooltip-container",tooltip:"c3-tooltip",tooltipName:"c3-tooltip-name",shape:"c3-shape",shapes:"c3-shapes",line:"c3-line",lines:"c3-lines",bar:"c3-bar",bars:"c3-bars",circle:"c3-circle",circles:"c3-circles",arc:"c3-arc",arcs:"c3-arcs",area:"c3-area",areas:"c3-areas",empty:"c3-empty",text:"c3-text",texts:"c3-texts",gaugeValue:"c3-gauge-value",grid:"c3-grid",gridLines:"c3-grid-lines",xgrid:"c3-xgrid",xgrids:"c3-xgrids",xgridLine:"c3-xgrid-line",xgridLines:"c3-xgrid-lines",xgridFocus:"c3-xgrid-focus",ygrid:"c3-ygrid",ygrids:"c3-ygrids",ygridLine:"c3-ygrid-line",ygridLines:"c3-ygrid-lines",axis:"c3-axis",axisX:"c3-axis-x",axisXLabel:"c3-axis-x-label",axisY:"c3-axis-y",axisYLabel:"c3-axis-y-label",axisY2:"c3-axis-y2",axisY2Label:"c3-axis-y2-label",legendBackground:"c3-legend-background",legendItem:"c3-legend-item",legendItemEvent:"c3-legend-item-event",legendItemTile:"c3-legend-item-tile",legendItemHidden:"c3-legend-item-hidden",legendItemFocused:"c3-legend-item-focused",dragarea:"c3-dragarea",EXPANDED:"_expanded_",SELECTED:"_selected_",INCLUDED:"_included_"};i.generateClass=function(a,b){return" "+a+" "+a+this.getTargetSelectorSuffix(b)},i.classText=function(a){return this.generateClass(l.text,a.index)},i.classTexts=function(a){return this.generateClass(l.texts,a.id)},i.classShape=function(a){return this.generateClass(l.shape,a.index)},i.classShapes=function(a){return this.generateClass(l.shapes,a.id)},i.classLine=function(a){return this.classShape(a)+this.generateClass(l.line,a.id)},i.classLines=function(a){return this.classShapes(a)+this.generateClass(l.lines,a.id)},i.classCircle=function(a){return this.classShape(a)+this.generateClass(l.circle,a.index)},i.classCircles=function(a){return this.classShapes(a)+this.generateClass(l.circles,a.id)},i.classBar=function(a){return this.classShape(a)+this.generateClass(l.bar,a.index)},i.classBars=function(a){return this.classShapes(a)+this.generateClass(l.bars,a.id)},i.classArc=function(a){return this.classShape(a.data)+this.generateClass(l.arc,a.data.id)},i.classArcs=function(a){return this.classShapes(a.data)+this.generateClass(l.arcs,a.data.id)},i.classArea=function(a){return this.classShape(a)+this.generateClass(l.area,a.id)},i.classAreas=function(a){return this.classShapes(a)+this.generateClass(l.areas,a.id)},i.classRegion=function(a,b){return this.generateClass(l.region,b)+" "+("class"in a?a["class"]:"")},i.classEvent=function(a){return this.generateClass(l.eventRect,a.index)},i.classTarget=function(a){var b=this,c=b.config.data_classes[a],d="";return c&&(d=" "+l.target+"-"+c),b.generateClass(l.target,a)+d},i.classFocus=function(a){return this.classFocused(a)+this.classDefocused(a)},i.classFocused=function(a){return" "+(this.focusedTargetIds.indexOf(a.id)>=0?l.focused:"")},i.classDefocused=function(a){return" "+(this.defocusedTargetIds.indexOf(a.id)>=0?l.defocused:"")},i.classChartText=function(a){return l.chartText+this.classTarget(a.id)},i.classChartLine=function(a){return l.chartLine+this.classTarget(a.id)},i.classChartBar=function(a){return l.chartBar+this.classTarget(a.id)},i.classChartArc=function(a){return l.chartArc+this.classTarget(a.data.id)},i.getTargetSelectorSuffix=function(a){return a||0===a?("-"+a).replace(/[\s?!@#$%^&*()_=+,.<>'":;\[\]\/|~`{}\\]/g,"-"):""},i.selectorTarget=function(a,b){return(b||"")+"."+l.target+this.getTargetSelectorSuffix(a)},i.selectorTargets=function(a,b){var c=this;return a=a||[],a.length?a.map(function(a){return c.selectorTarget(a,b)}):null},i.selectorLegend=function(a){return"."+l.legendItem+this.getTargetSelectorSuffix(a)},i.selectorLegends=function(a){var b=this;return a&&a.length?a.map(function(a){return b.selectorLegend(a)}):null};var m=i.isValue=function(a){return a||0===a},n=i.isFunction=function(a){return"function"==typeof a},o=i.isString=function(a){return"string"==typeof a},p=i.isUndefined=function(a){return"undefined"==typeof a},q=i.isDefined=function(a){return"undefined"!=typeof a},r=i.ceil10=function(a){return 10*Math.ceil(a/10)},s=i.asHalfPixel=function(a){return Math.ceil(a)+.5},t=i.diffDomain=function(a){return a[1]-a[0]},u=i.isEmpty=function(a){return!a||o(a)&&0===a.length||"object"==typeof a&&0===Object.keys(a).length},v=i.notEmpty=function(a){return Object.keys(a).length>0},w=i.getOption=function(a,b,c){return q(a[b])?a[b]:c},x=i.hasValue=function(a,b){var c=!1;return Object.keys(a).forEach(function(d){a[d]===b&&(c=!0)}),c},y=i.getPathBox=function(a){var b=a.getBoundingClientRect(),c=[a.pathSegList.getItem(0),a.pathSegList.getItem(1)],d=c[0].x,e=Math.min(c[0].y,c[1].y);return{x:d,y:e,width:b.width,height:b.height}};h.focus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),this.revert(),this.defocus(),b.classed(l.focused,!0).classed(l.defocused,!1),c.hasArcType()&&c.expandArc(a),c.toggleFocusLegend(a,!0),c.focusedTargetIds=a,c.defocusedTargetIds=c.defocusedTargetIds.filter(function(b){return a.indexOf(b)<0})},h.defocus=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a.filter(c.isTargetToShow,c))),b.classed(l.focused,!1).classed(l.defocused,!0),c.hasArcType()&&c.unexpandArc(a),c.toggleFocusLegend(a,!1),c.focusedTargetIds=c.focusedTargetIds.filter(function(b){return a.indexOf(b)<0}),c.defocusedTargetIds=a},h.revert=function(a){var b,c=this.internal;a=c.mapToTargetIds(a),b=c.svg.selectAll(c.selectorTargets(a)),b.classed(l.focused,!1).classed(l.defocused,!1),c.hasArcType()&&c.unexpandArc(a),c.config.legend_show&&(c.showLegend(a.filter(c.isLegendToShow.bind(c))),c.legend.selectAll(c.selectorLegends(a)).filter(function(){return c.d3.select(this).classed(l.legendItemFocused)}).classed(l.legendItemFocused,!1)),c.focusedTargetIds=[],c.defocusedTargetIds=[]},h.show=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.removeHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",1,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",1)}),b.withLegend&&d.showLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.hide=function(a,b){var c,d=this.internal;a=d.mapToTargetIds(a),b=b||{},d.addHiddenTargetIds(a),c=d.svg.selectAll(d.selectorTargets(a)),c.transition().style("opacity",0,"important").call(d.endall,function(){c.style("opacity",null).style("opacity",0)}),b.withLegend&&d.hideLegend(a),d.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0})},h.toggle=function(a,b){var c=this,d=this.internal;d.mapToTargetIds(a).forEach(function(a){d.isTargetToShow(a)?c.hide(a,b):c.show(a,b)})},h.zoom=function(a){var b=this.internal;return a&&(b.isTimeSeries()&&(a=a.map(function(a){return b.parseDate(a)})),b.brush.extent(a),b.redraw({withUpdateXDomain:!0,withY:b.config.zoom_rescale}),b.config.zoom_onzoom.call(this,b.x.orgDomain())),b.brush.extent()},h.zoom.enable=function(a){var b=this.internal;b.config.zoom_enabled=a,b.updateAndRedraw()},h.unzoom=function(){var a=this.internal;a.brush.clear().update(),a.redraw({withUpdateXDomain:!0})},h.load=function(a){var b=this.internal,c=b.config;return a.xs&&b.addXs(a.xs),"classes"in a&&Object.keys(a.classes).forEach(function(b){c.data_classes[b]=a.classes[b]}),"categories"in a&&b.isCategorized()&&(c.axis_x_categories=a.categories),"axes"in a&&Object.keys(a.axes).forEach(function(b){c.data_axes[b]=a.axes[b]}),"colors"in a&&Object.keys(a.colors).forEach(function(b){c.data_colors[b]=a.colors[b]}),"cacheIds"in a&&b.hasCaches(a.cacheIds)?void b.load(b.getCaches(a.cacheIds),a.done):void("unload"in a?b.unload(b.mapToTargetIds("boolean"==typeof a.unload&&a.unload?null:a.unload),function(){b.loadFromArgs(a)}):b.loadFromArgs(a))},h.unload=function(a){var b=this.internal;a=a||{},a instanceof Array?a={ids:a}:"string"==typeof a&&(a={ids:[a]}),b.unload(b.mapToTargetIds(a.ids),function(){b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0,withLegend:!0}),a.done&&a.done()})},h.flow=function(a){var b,c,d,e,f,g,h,i,j=this.internal,k=[],l=j.getMaxDataCount(),n=0,o=0;if(a.json)c=j.convertJsonToData(a.json,a.keys);else if(a.rows)c=j.convertRowsToData(a.rows);else{if(!a.columns)return;c=j.convertColumnsToData(a.columns)}b=j.convertDataToTargets(c,!0),j.data.targets.forEach(function(a){var c,d,e=!1;for(c=0;c<b.length;c++)if(a.id===b[c].id){for(e=!0,a.values[a.values.length-1]&&(o=a.values[a.values.length-1].index+1),n=b[c].values.length,d=0;n>d;d++)b[c].values[d].index=o+d,j.isTimeSeries()||(b[c].values[d].x=o+d);a.values=a.values.concat(b[c].values),b.splice(c,1);break}e||k.push(a.id)}),j.data.targets.forEach(function(a){var b,c;for(b=0;b<k.length;b++)if(a.id===k[b])for(o=a.values[a.values.length-1].index+1,c=0;n>c;c++)a.values.push({id:a.id,index:o+c,x:j.isTimeSeries()?j.getOtherTargetX(o+c):o+c,value:null})}),j.data.targets.length&&b.forEach(function(a){var b,c=[];for(b=j.data.targets[0].values[0].index;o>b;b++)c.push({id:a.id,index:b,x:j.isTimeSeries()?j.getOtherTargetX(b):b,value:null});a.values.forEach(function(a){a.index+=o,j.isTimeSeries()||(a.x+=o)}),a.values=c.concat(a.values)}),j.data.targets=j.data.targets.concat(b),d=j.getMaxDataCount(),f=j.data.targets[0],g=f.values[0],q(a.to)?(n=0,i=j.isTimeSeries()?j.parseDate(a.to):a.to,f.values.forEach(function(a){a.x<i&&n++})):q(a.length)&&(n=a.length),l?1===l&&j.isTimeSeries()&&(h=(f.values[f.values.length-1].x-g.x)/2,e=[new Date(+g.x-h),new Date(+g.x+h)],j.updateXDomain(null,!0,!0,!1,e)):(h=j.isTimeSeries()?f.values.length>1?f.values[f.values.length-1].x-g.x:g.x-j.getXDomain(j.data.targets)[0]:1,e=[g.x-h,g.x],j.updateXDomain(null,!0,!0,!1,e)),j.updateTargets(j.data.targets),j.redraw({flow:{index:g.index,length:n,duration:m(a.duration)?a.duration:j.config.transition_duration,done:a.done,orgDataCount:l},withLegend:!0,withTransition:l>1,withTrimXDomain:!1,withUpdateXAxis:!0})},i.generateFlow=function(a){var b=this,c=b.config,d=b.d3;return function(){var e,f,g,h=a.targets,i=a.flow,j=a.drawBar,k=a.drawLine,m=a.drawArea,n=a.cx,o=a.cy,p=a.xv,q=a.xForText,r=a.yForText,s=a.duration,u=1,v=i.index,w=i.length,x=b.getValueOnIndex(b.data.targets[0].values,v),y=b.getValueOnIndex(b.data.targets[0].values,v+w),z=b.x.domain(),A=i.duration||s,B=i.done||function(){},C=b.generateWait(),D=b.xgrid||d.selectAll([]),E=b.xgridLines||d.selectAll([]),F=b.mainRegion||d.selectAll([]),G=b.mainText||d.selectAll([]),H=b.mainBar||d.selectAll([]),I=b.mainLine||d.selectAll([]),J=b.mainArea||d.selectAll([]),K=b.mainCircle||d.selectAll([]);b.flowing=!0,b.data.targets.forEach(function(a){a.values.splice(0,w)}),g=b.updateXDomain(h,!0,!0),b.updateXGrid&&b.updateXGrid(!0),i.orgDataCount?e=1===i.orgDataCount||x.x===y.x?b.x(z[0])-b.x(g[0]):b.isTimeSeries()?b.x(z[0])-b.x(g[0]):b.x(x.x)-b.x(y.x):1!==b.data.targets[0].values.length?e=b.x(z[0])-b.x(g[0]):b.isTimeSeries()?(x=b.getValueOnIndex(b.data.targets[0].values,0),y=b.getValueOnIndex(b.data.targets[0].values,b.data.targets[0].values.length-1),e=b.x(x.x)-b.x(y.x)):e=t(g)/2,u=t(z)/t(g),f="translate("+e+",0) scale("+u+",1)",b.hideXGridFocus(),b.hideTooltip(),d.transition().ease("linear").duration(A).each(function(){C.add(b.axes.x.transition().call(b.xAxis)),C.add(H.transition().attr("transform",f)),C.add(I.transition().attr("transform",f)),C.add(J.transition().attr("transform",f)),C.add(K.transition().attr("transform",f)),C.add(G.transition().attr("transform",f)),C.add(F.filter(b.isRegionOnX).transition().attr("transform",f)),C.add(D.transition().attr("transform",f)),C.add(E.transition().attr("transform",f)) +}).call(C,function(){var a,d=[],e=[],f=[];if(w){for(a=0;w>a;a++)d.push("."+l.shape+"-"+(v+a)),e.push("."+l.text+"-"+(v+a)),f.push("."+l.eventRect+"-"+(v+a));b.svg.selectAll("."+l.shapes).selectAll(d).remove(),b.svg.selectAll("."+l.texts).selectAll(e).remove(),b.svg.selectAll("."+l.eventRects).selectAll(f).remove(),b.svg.select("."+l.xgrid).remove()}D.attr("transform",null).attr(b.xgridAttr),E.attr("transform",null),E.select("line").attr("x1",c.axis_rotated?0:p).attr("x2",c.axis_rotated?b.width:p),E.select("text").attr("x",c.axis_rotated?b.width:0).attr("y",p),H.attr("transform",null).attr("d",j),I.attr("transform",null).attr("d",k),J.attr("transform",null).attr("d",m),K.attr("transform",null).attr("cx",n).attr("cy",o),G.attr("transform",null).attr("x",q).attr("y",r).style("fill-opacity",b.opacityForText.bind(b)),F.attr("transform",null),F.select("rect").filter(b.isRegionOnX).attr("x",b.regionX.bind(b)).attr("width",b.regionWidth.bind(b)),c.interaction_enabled&&b.redrawEventRect(),B(),b.flowing=!1})}},h.selected=function(a){var b=this.internal,c=b.d3;return c.merge(b.main.selectAll("."+l.shapes+b.getTargetSelectorSuffix(a)).selectAll("."+l.shape).filter(function(){return c.select(this).classed(l.SELECTED)}).map(function(a){return a.map(function(a){var b=a.__data__;return b.data?b.data:b})}))},h.select=function(a,b,c){var d=this.internal,e=d.d3,f=d.config;f.data_selection_enabled&&d.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(g,h){var i=e.select(this),j=g.data?g.data.id:g.id,k=d.getToggle(this,g).bind(d),m=f.data_selection_grouped||!a||a.indexOf(j)>=0,n=!b||b.indexOf(h)>=0,o=i.classed(l.SELECTED);i.classed(l.line)||i.classed(l.area)||(m&&n?f.data_selection_isselectable(g)&&!o&&k(!0,i.classed(l.SELECTED,!0),g,h):q(c)&&c&&o&&k(!1,i.classed(l.SELECTED,!1),g,h))})},h.unselect=function(a,b){var c=this.internal,d=c.d3,e=c.config;e.data_selection_enabled&&c.main.selectAll("."+l.shapes).selectAll("."+l.shape).each(function(f,g){var h=d.select(this),i=f.data?f.data.id:f.id,j=c.getToggle(this,f).bind(c),k=e.data_selection_grouped||!a||a.indexOf(i)>=0,m=!b||b.indexOf(g)>=0,n=h.classed(l.SELECTED);h.classed(l.line)||h.classed(l.area)||k&&m&&e.data_selection_isselectable(f)&&n&&j(!1,h.classed(l.SELECTED,!1),f,g)})},h.transform=function(a,b){var c=this.internal,d=["pie","donut"].indexOf(a)>=0?{withTransform:!0}:null;c.transformTo(b,a,d)},i.transformTo=function(a,b,c){var d=this,e=!d.hasArcType(),f=c||{withTransitionForAxis:e};f.withTransitionForTransform=!1,d.transiting=!1,d.setTargetType(a,b),d.updateTargets(d.data.targets),d.updateAndRedraw(f)},h.groups=function(a){var b=this.internal,c=b.config;return p(a)?c.data_groups:(c.data_groups=a,b.redraw(),c.data_groups)},h.xgrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_x_lines=a,b.redrawWithoutRescale(),c.grid_x_lines):c.grid_x_lines},h.xgrids.add=function(a){var b=this.internal;return this.xgrids(b.config.grid_x_lines.concat(a?a:[]))},h.xgrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!0)},h.ygrids=function(a){var b=this.internal,c=b.config;return a?(c.grid_y_lines=a,b.redrawWithoutRescale(),c.grid_y_lines):c.grid_y_lines},h.ygrids.add=function(a){var b=this.internal;return this.ygrids(b.config.grid_y_lines.concat(a?a:[]))},h.ygrids.remove=function(a){var b=this.internal;b.removeGridLines(a,!1)},h.regions=function(a){var b=this.internal,c=b.config;return a?(c.regions=a,b.redrawWithoutRescale(),c.regions):c.regions},h.regions.add=function(a){var b=this.internal,c=b.config;return a?(c.regions=c.regions.concat(a),b.redrawWithoutRescale(),c.regions):c.regions},h.regions.remove=function(a){var b,c,d,e=this.internal,f=e.config;return a=a||{},b=e.getOption(a,"duration",f.transition_duration),c=e.getOption(a,"classes",[l.region]),d=e.main.select("."+l.regions).selectAll(c.map(function(a){return"."+a})),(b?d.transition().duration(b):d).style("opacity",0).remove(),f.regions=f.regions.filter(function(a){var b=!1;return a["class"]?(a["class"].split(" ").forEach(function(a){c.indexOf(a)>=0&&(b=!0)}),!b):!0}),f.regions},h.data=function(a){var b=this.internal.data.targets;return"undefined"==typeof a?b:b.filter(function(b){return[].concat(a).indexOf(b.id)>=0})},h.data.shown=function(a){return this.internal.filterTargetsToShow(this.data(a))},h.data.values=function(a){var b,c=null;return a&&(b=this.data(a),c=b[0]?b[0].values.map(function(a){return a.value}):null),c},h.data.names=function(a){return this.internal.clearLegendItemTextBoxCache(),this.internal.updateDataAttributes("names",a)},h.data.colors=function(a){return this.internal.updateDataAttributes("colors",a)},h.data.axes=function(a){return this.internal.updateDataAttributes("axes",a)},h.category=function(a,b){var c=this.internal,d=c.config;return arguments.length>1&&(d.axis_x_categories[a]=b,c.redraw()),d.axis_x_categories[a]},h.categories=function(a){var b=this.internal,c=b.config;return arguments.length?(c.axis_x_categories=a,b.redraw(),c.axis_x_categories):c.axis_x_categories},h.color=function(a){var b=this.internal;return b.color(a)},h.x=function(a){var b=this.internal;return arguments.length&&(b.updateTargetX(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.xs=function(a){var b=this.internal;return arguments.length&&(b.updateTargetXs(b.data.targets,a),b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})),b.data.xs},h.axis=function(){},h.axis.labels=function(a){var b=this.internal;arguments.length&&(Object.keys(a).forEach(function(c){b.axis.setLabelText(c,a[c])}),b.axis.updateLabels())},h.axis.max=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_max=a.x),m(a.y)&&(c.axis_y_max=a.y),m(a.y2)&&(c.axis_y2_max=a.y2)):c.axis_y_max=c.axis_y2_max=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_max,y:c.axis_y_max,y2:c.axis_y2_max}},h.axis.min=function(a){var b=this.internal,c=b.config;return arguments.length?("object"==typeof a?(m(a.x)&&(c.axis_x_min=a.x),m(a.y)&&(c.axis_y_min=a.y),m(a.y2)&&(c.axis_y2_min=a.y2)):c.axis_y_min=c.axis_y2_min=a,void b.redraw({withUpdateOrgXDomain:!0,withUpdateXDomain:!0})):{x:c.axis_x_min,y:c.axis_y_min,y2:c.axis_y2_min}},h.axis.range=function(a){return arguments.length?(q(a.max)&&this.axis.max(a.max),void(q(a.min)&&this.axis.min(a.min))):{max:this.axis.max(),min:this.axis.min()}},h.legend=function(){},h.legend.show=function(a){var b=this.internal;b.showLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.legend.hide=function(a){var b=this.internal;b.hideLegend(b.mapToTargetIds(a)),b.updateAndRedraw({withLegend:!0})},h.resize=function(a){var b=this.internal,c=b.config;c.size_width=a?a.width:null,c.size_height=a?a.height:null,this.flush()},h.flush=function(){var a=this.internal;a.updateAndRedraw({withLegend:!0,withTransition:!1,withTransitionForTransform:!1})},h.destroy=function(){var b=this.internal;return a.clearInterval(b.intervalForObserveInserted),a.onresize=null,b.selectChart.classed("c3",!1).html(""),Object.keys(b).forEach(function(a){b[a]=null}),null},h.tooltip=function(){},h.tooltip.show=function(a){var b,c,d=this.internal;a.mouse&&(c=a.mouse),a.data?d.isMultipleX()?(c=[d.x(a.data.x),d.getYScale(a.data.id)(a.data.value)],b=null):b=m(a.data.index)?a.data.index:d.getIndexByX(a.data.x):"undefined"!=typeof a.x?b=d.getIndexByX(a.x):"undefined"!=typeof a.index&&(b=a.index),d.dispatchEvent("mouseover",b,c),d.dispatchEvent("mousemove",b,c)},h.tooltip.hide=function(){this.internal.dispatchEvent("mouseout",0)};var z;i.isSafari=function(){var b=a.navigator.userAgent;return b.indexOf("Safari")>=0&&b.indexOf("Chrome")<0},i.isChrome=function(){var b=a.navigator.userAgent;return b.indexOf("Chrome")>=0},Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),"function"==typeof define&&define.amd?define("c3",["d3"],k):"undefined"!=typeof exports&&"undefined"!=typeof module?module.exports=k:a.c3=k}(window); \ No newline at end of file diff --git a/plugins/chart.js/chart.min.js b/plugins/chart.js/chart.min.js new file mode 100644 index 0000000..149a880 --- /dev/null +++ b/plugins/chart.js/chart.min.js @@ -0,0 +1,14 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.1.4 + * + * Copyright 2016 Nick Downie + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function t(e,i,a){function o(r,s){if(!i[r]){if(!e[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(n)return n(r,!0);var h=new Error("Cannot find module '"+r+"'");throw h.code="MODULE_NOT_FOUND",h}var d=i[r]={exports:{}};e[r][0].call(d.exports,function(t){var i=e[r][1][t];return o(i?i:t)},d,d.exports,t,e,i,a)}return i[r].exports}for(var n="function"==typeof require&&require,r=0;r<a.length;r++)o(a[r]);return o}({1:[function(t,e,i){},{}],2:[function(t,e,i){function a(t){if(t){var e=/^#([a-fA-F0-9]{3})$/,i=/^#([a-fA-F0-9]{6})$/,a=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,o=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,n=/(\w+)/,r=[0,0,0],s=1,l=t.match(e);if(l){l=l[1];for(var h=0;h<r.length;h++)r[h]=parseInt(l[h]+l[h],16)}else if(l=t.match(i)){l=l[1];for(var h=0;h<r.length;h++)r[h]=parseInt(l.slice(2*h,2*h+2),16)}else if(l=t.match(a)){for(var h=0;h<r.length;h++)r[h]=parseInt(l[h+1]);s=parseFloat(l[4])}else if(l=t.match(o)){for(var h=0;h<r.length;h++)r[h]=Math.round(2.55*parseFloat(l[h+1]));s=parseFloat(l[4])}else if(l=t.match(n)){if("transparent"==l[1])return[0,0,0,0];if(r=y[l[1]],!r)return}for(var h=0;h<r.length;h++)r[h]=v(r[h],0,255);return s=s||0==s?v(s,0,1):1,r[3]=s,r}}function o(t){if(t){var e=/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,i=t.match(e);if(i){var a=parseFloat(i[4]),o=v(parseInt(i[1]),0,360),n=v(parseFloat(i[2]),0,100),r=v(parseFloat(i[3]),0,100),s=v(isNaN(a)?1:a,0,1);return[o,n,r,s]}}}function n(t){if(t){var e=/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,i=t.match(e);if(i){var a=parseFloat(i[4]),o=v(parseInt(i[1]),0,360),n=v(parseFloat(i[2]),0,100),r=v(parseFloat(i[3]),0,100),s=v(isNaN(a)?1:a,0,1);return[o,n,r,s]}}}function r(t){var e=a(t);return e&&e.slice(0,3)}function s(t){var e=o(t);return e&&e.slice(0,3)}function l(t){var e=a(t);return e?e[3]:(e=o(t))?e[3]:(e=n(t))?e[3]:void 0}function h(t){return"#"+x(t[0])+x(t[1])+x(t[2])}function d(t,e){return 1>e||t[3]&&t[3]<1?c(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function c(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function u(t,e){if(1>e||t[3]&&t[3]<1)return f(t,e);var i=Math.round(t[0]/255*100),a=Math.round(t[1]/255*100),o=Math.round(t[2]/255*100);return"rgb("+i+"%, "+a+"%, "+o+"%)"}function f(t,e){var i=Math.round(t[0]/255*100),a=Math.round(t[1]/255*100),o=Math.round(t[2]/255*100);return"rgba("+i+"%, "+a+"%, "+o+"%, "+(e||t[3]||1)+")"}function g(t,e){return 1>e||t[3]&&t[3]<1?p(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function p(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function m(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"}function b(t){return k[t.slice(0,3)]}function v(t,e,i){return Math.min(Math.max(e,t),i)}function x(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y=t("color-name");e.exports={getRgba:a,getHsla:o,getRgb:r,getHsl:s,getHwb:n,getAlpha:l,hexString:h,rgbString:d,rgbaString:c,percentString:u,percentaString:f,hslString:g,hslaString:p,hwbString:m,keyword:b};var k={};for(var S in y)k[y[S]]=S},{"color-name":6}],3:[function(t,e,i){var a=t("color-convert"),o=t("chartjs-color-string"),n=function(t){if(t instanceof n)return t;if(!(this instanceof n))return new n(t);this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;if("string"==typeof t)if(e=o.getRgba(t))this.setValues("rgb",e);else if(e=o.getHsla(t))this.setValues("hsl",e);else{if(!(e=o.getHwb(t)))throw new Error('Unable to parse color from string "'+t+'"');this.setValues("hwb",e)}else if("object"==typeof t)if(e=t,void 0!==e.r||void 0!==e.red)this.setValues("rgb",e);else if(void 0!==e.l||void 0!==e.lightness)this.setValues("hsl",e);else if(void 0!==e.v||void 0!==e.value)this.setValues("hsv",e);else if(void 0!==e.w||void 0!==e.whiteness)this.setValues("hwb",e);else{if(void 0===e.c&&void 0===e.cyan)throw new Error("Unable to parse color from object "+JSON.stringify(t));this.setValues("cmyk",e)}};n.prototype={rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t%=360,t=0>t?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return o.hexString(this.values.rgb)},rgbString:function(){return o.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return o.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return o.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return o.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return o.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return o.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return o.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],i=0;i<t.length;i++){var a=t[i]/255;e[i]=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),i=t.luminosity();return e>i?(e+.05)/(i+.05):(i+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb,e=(299*t[0]+587*t[1]+114*t[2])/1e3;return 128>e},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;3>e;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,i=(e[0]+t)%360;return e[0]=0>i?360+i:i,this.setValues("hsl",e),this},mix:function(t,e){var i=this,a=t,o=void 0===e?.5:e,n=2*o-1,r=i.alpha()-a.alpha(),s=((n*r===-1?n:(n+r)/(1+n*r))+1)/2,l=1-s;return this.rgb(s*i.red()+l*a.red(),s*i.green()+l*a.green(),s*i.blue()+l*a.blue()).alpha(i.alpha()*o+a.alpha()*(1-o))},toJSON:function(){return this.rgb()},clone:function(){var t,e,i=new n,a=this.values,o=i.values;for(var r in a)a.hasOwnProperty(r)&&(t=a[r],e={}.toString.call(t),"[object Array]"===e?o[r]=t.slice(0):"[object Number]"===e?o[r]=t:console.error("unexpected color value:",t));return i}},n.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},n.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},n.prototype.getValues=function(t){for(var e=this.values,i={},a=0;a<t.length;a++)i[t.charAt(a)]=e[t][a];return 1!==e.alpha&&(i.a=e.alpha),i},n.prototype.setValues=function(t,e){var i,o=this.values,n=this.spaces,r=this.maxes,s=1;if("alpha"===t)s=e;else if(e.length)o[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(i=0;i<t.length;i++)o[t][i]=e[t.charAt(i)];s=e.a}else if(void 0!==e[n[t][0]]){var l=n[t];for(i=0;i<t.length;i++)o[t][i]=e[l[i]];s=e.alpha}if(o.alpha=Math.max(0,Math.min(1,void 0===s?o.alpha:s)),"alpha"===t)return!1;var h;for(i=0;i<t.length;i++)h=Math.max(0,Math.min(r[t][i],o[t][i])),o[t][i]=Math.round(h);for(var d in n)d!==t&&(o[d]=a[t][d](o[t]));return!0},n.prototype.setSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i),this)},n.prototype.setChannel=function(t,e,i){var a=this.values[t];return void 0===i?a[e]:i===a[e]?this:(a[e]=i,this.setValues(t,a),this)},"undefined"!=typeof window&&(window.Color=n),e.exports=n},{"chartjs-color-string":2,"color-convert":5}],4:[function(t,e,i){function a(t){var e,i,a,o=t[0]/255,n=t[1]/255,r=t[2]/255,s=Math.min(o,n,r),l=Math.max(o,n,r),h=l-s;return l==s?e=0:o==l?e=(n-r)/h:n==l?e=2+(r-o)/h:r==l&&(e=4+(o-n)/h),e=Math.min(60*e,360),0>e&&(e+=360),a=(s+l)/2,i=l==s?0:.5>=a?h/(l+s):h/(2-l-s),[e,100*i,100*a]}function o(t){var e,i,a,o=t[0],n=t[1],r=t[2],s=Math.min(o,n,r),l=Math.max(o,n,r),h=l-s;return i=0==l?0:h/l*1e3/10,l==s?e=0:o==l?e=(n-r)/h:n==l?e=2+(r-o)/h:r==l&&(e=4+(o-n)/h),e=Math.min(60*e,360),0>e&&(e+=360),a=l/255*1e3/10,[e,i,a]}function n(t){var e=t[0],i=t[1],o=t[2],n=a(t)[0],r=1/255*Math.min(e,Math.min(i,o)),o=1-1/255*Math.max(e,Math.max(i,o));return[n,100*r,100*o]}function s(t){var e,i,a,o,n=t[0]/255,r=t[1]/255,s=t[2]/255;return o=Math.min(1-n,1-r,1-s),e=(1-n-o)/(1-o)||0,i=(1-r-o)/(1-o)||0,a=(1-s-o)/(1-o)||0,[100*e,100*i,100*a,100*o]}function l(t){return G[JSON.stringify(t)]}function h(t){var e=t[0]/255,i=t[1]/255,a=t[2]/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92;var o=.4124*e+.3576*i+.1805*a,n=.2126*e+.7152*i+.0722*a,r=.0193*e+.1192*i+.9505*a;return[100*o,100*n,100*r]}function d(t){var e,i,a,o=h(t),n=o[0],r=o[1],s=o[2];return n/=95.047,r/=100,s/=108.883,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,e=116*r-16,i=500*(n-r),a=200*(r-s),[e,i,a]}function c(t){return B(d(t))}function u(t){var e,i,a,o,n,r=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return n=255*l,[n,n,n];i=.5>l?l*(1+s):l+s-l*s,e=2*l-i,o=[0,0,0];for(var h=0;3>h;h++)a=r+1/3*-(h-1),0>a&&a++,a>1&&a--,n=1>6*a?e+6*(i-e)*a:1>2*a?i:2>3*a?e+(i-e)*(2/3-a)*6:e,o[h]=255*n;return o}function f(t){var e,i,a=t[0],o=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:(n*=2,o*=1>=n?n:2-n,i=(n+o)/2,e=2*o/(n+o),[a,100*e,100*i])}function p(t){return n(u(t))}function m(t){return s(u(t))}function v(t){return l(u(t))}function x(t){var e=t[0]/60,i=t[1]/100,a=t[2]/100,o=Math.floor(e)%6,n=e-Math.floor(e),r=255*a*(1-i),s=255*a*(1-i*n),l=255*a*(1-i*(1-n)),a=255*a;switch(o){case 0:return[a,l,r];case 1:return[s,a,r];case 2:return[r,a,l];case 3:return[r,s,a];case 4:return[l,r,a];case 5:return[a,r,s]}}function y(t){var e,i,a=t[0],o=t[1]/100,n=t[2]/100;return i=(2-o)*n,e=o*n,e/=1>=i?i:2-i,e=e||0,i/=2,[a,100*e,100*i]}function k(t){return n(x(t))}function S(t){return s(x(t))}function C(t){return l(x(t))}function w(t){var e,i,a,o,n=t[0]/360,s=t[1]/100,l=t[2]/100,h=s+l;switch(h>1&&(s/=h,l/=h),e=Math.floor(6*n),i=1-l,a=6*n-e,0!=(1&e)&&(a=1-a),o=s+a*(i-s),e){default:case 6:case 0:r=i,g=o,b=s;break;case 1:r=o,g=i,b=s;break;case 2:r=s,g=i,b=o;break;case 3:r=s,g=o,b=i;break;case 4:r=o,g=s,b=i;break;case 5:r=i,g=s,b=o}return[255*r,255*g,255*b]}function M(t){return a(w(t))}function D(t){return o(w(t))}function A(t){return s(w(t))}function I(t){return l(w(t))}function F(t){var e,i,a,o=t[0]/100,n=t[1]/100,r=t[2]/100,s=t[3]/100;return e=1-Math.min(1,o*(1-s)+s),i=1-Math.min(1,n*(1-s)+s),a=1-Math.min(1,r*(1-s)+s),[255*e,255*i,255*a]}function _(t){return a(F(t))}function P(t){return o(F(t))}function T(t){return n(F(t))}function V(t){return l(F(t))}function R(t){var e,i,a,o=t[0]/100,n=t[1]/100,r=t[2]/100;return e=3.2406*o+-1.5372*n+r*-.4986,i=o*-.9689+1.8758*n+.0415*r,a=.0557*o+n*-.204+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e=12.92*e,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i=12.92*i,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a=12.92*a,e=Math.min(Math.max(0,e),1),i=Math.min(Math.max(0,i),1),a=Math.min(Math.max(0,a),1),[255*e,255*i,255*a]}function O(t){var e,i,a,o=t[0],n=t[1],r=t[2];return o/=95.047,n/=100,r/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*n-16,i=500*(o-n),a=200*(n-r),[e,i,a]}function W(t){return B(O(t))}function L(t){var e,i,a,o,n=t[0],r=t[1],s=t[2];return 8>=n?(i=100*n/903.3,o=7.787*(i/100)+16/116):(i=100*Math.pow((n+16)/116,3),o=Math.pow(i/100,1/3)),e=.008856>=e/95.047?e=95.047*(r/500+o-16/116)/7.787:95.047*Math.pow(r/500+o,3),a=.008859>=a/108.883?a=108.883*(o-s/200-16/116)/7.787:108.883*Math.pow(o-s/200,3),[e,i,a]}function B(t){var e,i,a,o=t[0],n=t[1],r=t[2];return e=Math.atan2(r,n),i=360*e/2/Math.PI,0>i&&(i+=360),a=Math.sqrt(n*n+r*r),[o,a,i]}function z(t){return R(L(t))}function H(t){var e,i,a,o=t[0],n=t[1],r=t[2];return a=r/360*2*Math.PI,e=n*Math.cos(a),i=n*Math.sin(a),[o,e,i]}function N(t){return L(H(t))}function E(t){return z(H(t))}function U(t){return Q[t]}function j(t){return a(U(t))}function q(t){return o(U(t))}function Y(t){return n(U(t))}function J(t){return s(U(t))}function Z(t){return d(U(t))}function X(t){return h(U(t))}e.exports={rgb2hsl:a,rgb2hsv:o,rgb2hwb:n,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:h,rgb2lab:d,rgb2lch:c,hsl2rgb:u,hsl2hsv:f,hsl2hwb:p,hsl2cmyk:m,hsl2keyword:v,hsv2rgb:x,hsv2hsl:y,hsv2hwb:k,hsv2cmyk:S,hsv2keyword:C,hwb2rgb:w,hwb2hsl:M,hwb2hsv:D,hwb2cmyk:A,hwb2keyword:I,cmyk2rgb:F,cmyk2hsl:_,cmyk2hsv:P,cmyk2hwb:T,cmyk2keyword:V,keyword2rgb:U,keyword2hsl:j,keyword2hsv:q,keyword2hwb:Y,keyword2cmyk:J,keyword2lab:Z,keyword2xyz:X,xyz2rgb:R,xyz2lab:O,xyz2lch:W,lab2xyz:L,lab2rgb:z,lab2lch:B,lch2lab:H,lch2xyz:N,lch2rgb:E};var Q={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},G={};for(var $ in Q)G[JSON.stringify(Q[$])]=$},{}],5:[function(t,e,i){var a=t("./conversions"),o=function(){return new h};for(var n in a){o[n+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),a[t](e)}}(n);var r=/(\w+)2(\w+)/.exec(n),s=r[1],l=r[2];o[s]=o[s]||{},o[s][l]=o[n]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var i=a[t](e);if("string"==typeof i||void 0===i)return i;for(var o=0;o<i.length;o++)i[o]=Math.round(i[o]);return i}}(n)}var h=function(){this.convs={}};h.prototype.routeSpace=function(t,e){var i=e[0];return void 0===i?this.getValues(t):("number"==typeof i&&(i=Array.prototype.slice.call(e)),this.setValues(t,i))},h.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},h.prototype.getValues=function(t){var e=this.convs[t];if(!e){var i=this.space,a=this.convs[i];e=o[i][t](a),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){h.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=o},{"./conversions":4}],6:[function(t,e,i){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,i){var a=t("./core/core.js")();t("./core/core.helpers")(a),t("./core/core.element")(a),t("./core/core.animation")(a),t("./core/core.controller")(a),t("./core/core.datasetController")(a),t("./core/core.layoutService")(a),t("./core/core.legend")(a),t("./core/core.plugin.js")(a),t("./core/core.scale")(a),t("./core/core.scaleService")(a),t("./core/core.title")(a),t("./core/core.tooltip")(a),t("./elements/element.arc")(a),t("./elements/element.line")(a),t("./elements/element.point")(a),t("./elements/element.rectangle")(a),t("./scales/scale.category")(a),t("./scales/scale.linear")(a),t("./scales/scale.logarithmic")(a),t("./scales/scale.radialLinear")(a),t("./scales/scale.time")(a),t("./controllers/controller.bar")(a),t("./controllers/controller.bubble")(a),t("./controllers/controller.doughnut")(a),t("./controllers/controller.line")(a),t("./controllers/controller.polarArea")(a),t("./controllers/controller.radar")(a),t("./charts/Chart.Bar")(a),t("./charts/Chart.Bubble")(a),t("./charts/Chart.Doughnut")(a),t("./charts/Chart.Line")(a),t("./charts/Chart.PolarArea")(a),t("./charts/Chart.Radar")(a),t("./charts/Chart.Scatter")(a),window.Chart=e.exports=a},{"./charts/Chart.Bar":8,"./charts/Chart.Bubble":9,"./charts/Chart.Doughnut":10,"./charts/Chart.Line":11,"./charts/Chart.PolarArea":12,"./charts/Chart.Radar":13,"./charts/Chart.Scatter":14,"./controllers/controller.bar":15,"./controllers/controller.bubble":16,"./controllers/controller.doughnut":17,"./controllers/controller.line":18,"./controllers/controller.polarArea":19,"./controllers/controller.radar":20,"./core/core.animation":21,"./core/core.controller":22,"./core/core.datasetController":23,"./core/core.element":24,"./core/core.helpers":25,"./core/core.js":26,"./core/core.layoutService":27,"./core/core.legend":28,"./core/core.plugin.js":29,"./core/core.scale":30,"./core/core.scaleService":31,"./core/core.title":32,"./core/core.tooltip":33,"./elements/element.arc":34,"./elements/element.line":35,"./elements/element.point":36,"./elements/element.rectangle":37,"./scales/scale.category":38,"./scales/scale.linear":39,"./scales/scale.logarithmic":40,"./scales/scale.radialLinear":41,"./scales/scale.time":42}],8:[function(t,e,i){"use strict";e.exports=function(t){t.Bar=function(e,i){return i.type="bar",new t(e,i)}}},{}],9:[function(t,e,i){"use strict";e.exports=function(t){t.Bubble=function(e,i){return i.type="bubble",new t(e,i)}}},{}],10:[function(t,e,i){"use strict";e.exports=function(t){t.Doughnut=function(e,i){return i.type="doughnut",new t(e,i)}}},{}],11:[function(t,e,i){"use strict";e.exports=function(t){t.Line=function(e,i){return i.type="line",new t(e,i)}}},{}],12:[function(t,e,i){"use strict";e.exports=function(t){t.PolarArea=function(e,i){return i.type="polarArea",new t(e,i)}}},{}],13:[function(t,e,i){"use strict";e.exports=function(t){t.Radar=function(e,i){return i.options=t.helpers.configMerge({aspectRatio:1},i.options),i.type="radar",new t(e,i)}}},{}],14:[function(t,e,i){"use strict";e.exports=function(t){var e={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-1"}],yAxes:[{type:"linear",position:"left",id:"y-axis-1"}]},tooltips:{callbacks:{title:function(t,e){return""},label:function(t,e){return"("+t.xLabel+", "+t.yLabel+")"}}}};t.defaults.scatter=e,t.controllers.scatter=t.controllers.line,t.Scatter=function(e,i){return i.type="scatter",new t(e,i)}}},{}],15:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bar={hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}},t.controllers.bar=t.DatasetController.extend({dataElementType:t.elements.Rectangle,initialize:function(e,i){t.DatasetController.prototype.initialize.call(this,e,i),this.getMeta().bar=!0},getBarCount:function(){var t=0;return e.each(this.chart.data.datasets,function(e,i){var a=this.chart.getDatasetMeta(i);a.bar&&this.chart.isDatasetVisible(i)&&++t},this),t},update:function(t){e.each(this.getMeta().data,function(e,i){this.updateElement(e,i,t)},this)},updateElement:function(t,i,a){var o=this.getMeta(),n=this.getScaleForId(o.xAxisID),r=this.getScaleForId(o.yAxisID),s=r.getBasePixel(),l=this.chart.options.elements.rectangle,h=t.custom||{},d=this.getDataset();e.extend(t,{_xScale:n,_yScale:r,_datasetIndex:this.index,_index:i,_model:{x:this.calculateBarX(i,this.index),y:a?s:this.calculateBarY(i,this.index),label:this.chart.data.labels[i],datasetLabel:d.label,base:a?s:this.calculateBarBase(this.index,i),width:this.calculateBarWidth(i),backgroundColor:h.backgroundColor?h.backgroundColor:e.getValueAtIndexOrDefault(d.backgroundColor,i,l.backgroundColor),borderSkipped:h.borderSkipped?h.borderSkipped:l.borderSkipped,borderColor:h.borderColor?h.borderColor:e.getValueAtIndexOrDefault(d.borderColor,i,l.borderColor),borderWidth:h.borderWidth?h.borderWidth:e.getValueAtIndexOrDefault(d.borderWidth,i,l.borderWidth)}}),t.pivot()},calculateBarBase:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.yAxisID),o=0;if(a.options.stacked){var n=this.chart,r=n.data.datasets,s=r[t].data[e];if(0>s)for(var l=0;t>l;l++){var h=r[l],d=n.getDatasetMeta(l);d.bar&&d.yAxisID===a.id&&n.isDatasetVisible(l)&&(o+=h.data[e]<0?h.data[e]:0)}else for(var c=0;t>c;c++){var u=r[c],f=n.getDatasetMeta(c);f.bar&&f.yAxisID===a.id&&n.isDatasetVisible(c)&&(o+=u.data[e]>0?u.data[e]:0)}return a.getPixelForValue(o)}return a.getBasePixel()},getRuler:function(t){var e,i=this.getMeta(),a=this.getScaleForId(i.xAxisID),o=this.getBarCount();e="category"===a.options.type?a.getPixelForTick(t+1)-a.getPixelForTick(t):a.width/a.ticks.length;var n=e*a.options.categoryPercentage,r=(e-e*a.options.categoryPercentage)/2,s=n/o;if(a.ticks.length!==this.chart.data.labels.length){var l=a.ticks.length/this.chart.data.labels.length;s*=l}var h=s*a.options.barPercentage,d=s-s*a.options.barPercentage;return{datasetCount:o,tickWidth:e,categoryWidth:n,categorySpacing:r,fullBarWidth:s,barWidth:h,barSpacing:d}},calculateBarWidth:function(t){var e=this.getScaleForId(this.getMeta().xAxisID),i=this.getRuler(t);return e.options.stacked?i.categoryWidth:i.barWidth},getBarIndex:function(t){var e,i,a=0;for(i=0;t>i;++i)e=this.chart.getDatasetMeta(i),e.bar&&this.chart.isDatasetVisible(i)&&++a;return a},calculateBarX:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.xAxisID),o=this.getBarIndex(e),n=this.getRuler(t),r=a.getPixelForValue(null,t,e,this.chart.isCombo);return r-=this.chart.isCombo?n.tickWidth/2:0,a.options.stacked?r+n.categoryWidth/2+n.categorySpacing:r+n.barWidth/2+n.categorySpacing+n.barWidth*o+n.barSpacing/2+n.barSpacing*o},calculateBarY:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.yAxisID),o=this.getDataset().data[t];if(a.options.stacked){for(var n=0,r=0,s=0;e>s;s++){var l=this.chart.data.datasets[s],h=this.chart.getDatasetMeta(s);h.bar&&h.yAxisID===a.id&&this.chart.isDatasetVisible(s)&&(l.data[t]<0?r+=l.data[t]||0:n+=l.data[t]||0)}return 0>o?a.getPixelForValue(r+o):a.getPixelForValue(n+o)}return a.getPixelForValue(o)},draw:function(t){var i=t||1;e.each(this.getMeta().data,function(t,e){var a=this.getDataset().data[e];null===a||void 0===a||isNaN(a)||t.transition(i).draw()},this)},setHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=t._model;n.backgroundColor=o.hoverBackgroundColor?o.hoverBackgroundColor:e.getValueAtIndexOrDefault(i.hoverBackgroundColor,a,e.getHoverColor(n.backgroundColor)),n.borderColor=o.hoverBorderColor?o.hoverBorderColor:e.getValueAtIndexOrDefault(i.hoverBorderColor,a,e.getHoverColor(n.borderColor)),n.borderWidth=o.hoverBorderWidth?o.hoverBorderWidth:e.getValueAtIndexOrDefault(i.hoverBorderWidth,a,n.borderWidth)},removeHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=t._model,r=this.chart.options.elements.rectangle;n.backgroundColor=o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(i.backgroundColor,a,r.backgroundColor),n.borderColor=o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(i.borderColor,a,r.borderColor),n.borderWidth=o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(i.borderWidth,a,r.borderWidth)}}),t.defaults.horizontalBar={hover:{mode:"label"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var i="";return t.length>0&&(t[0].yLabel?i=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i+": "+t.xLabel}}}},t.controllers.horizontalBar=t.controllers.bar.extend({updateElement:function(t,i,a,o){var n=this.getMeta(),r=this.getScaleForId(n.xAxisID),s=this.getScaleForId(n.yAxisID),l=r.getBasePixel(),h=t.custom||{},d=this.getDataset(),c=this.chart.options.elements.rectangle; +e.extend(t,{_xScale:r,_yScale:s,_datasetIndex:this.index,_index:i,_model:{x:a?l:this.calculateBarX(i,this.index),y:this.calculateBarY(i,this.index),label:this.chart.data.labels[i],datasetLabel:d.label,base:a?l:this.calculateBarBase(this.index,i),height:this.calculateBarHeight(i),backgroundColor:h.backgroundColor?h.backgroundColor:e.getValueAtIndexOrDefault(d.backgroundColor,i,c.backgroundColor),borderSkipped:h.borderSkipped?h.borderSkipped:c.borderSkipped,borderColor:h.borderColor?h.borderColor:e.getValueAtIndexOrDefault(d.borderColor,i,c.borderColor),borderWidth:h.borderWidth?h.borderWidth:e.getValueAtIndexOrDefault(d.borderWidth,i,c.borderWidth)},draw:function(){function t(t){return l[(d+t)%4]}var e=this._chart.ctx,i=this._view,a=i.height/2,o=i.y-a,n=i.y+a,r=i.base-(i.base-i.x),s=i.borderWidth/2;i.borderWidth&&(o+=s,n-=s,r+=s),e.beginPath(),e.fillStyle=i.backgroundColor,e.strokeStyle=i.borderColor,e.lineWidth=i.borderWidth;var l=[[i.base,n],[i.base,o],[r,o],[r,n]],h=["bottom","left","top","right"],d=h.indexOf(i.borderSkipped,0);-1===d&&(d=0),e.moveTo.apply(e,t(0));for(var c=1;4>c;c++)e.lineTo.apply(e,t(c));e.fill(),i.borderWidth&&e.stroke()},inRange:function(t,e){var i=this._view,a=!1;return i&&(a=i.x<i.base?e>=i.y-i.height/2&&e<=i.y+i.height/2&&t>=i.x&&t<=i.base:e>=i.y-i.height/2&&e<=i.y+i.height/2&&t>=i.base&&t<=i.x),a}}),t.pivot()},calculateBarBase:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.xAxisID),o=0;if(a.options.stacked){var n=this.chart.data.datasets[t].data[e];if(0>n)for(var r=0;t>r;r++){var s=this.chart.data.datasets[r],l=this.chart.getDatasetMeta(r);l.bar&&l.xAxisID===a.id&&this.chart.isDatasetVisible(r)&&(o+=s.data[e]<0?s.data[e]:0)}else for(var h=0;t>h;h++){var d=this.chart.data.datasets[h],c=this.chart.getDatasetMeta(h);c.bar&&c.xAxisID===a.id&&this.chart.isDatasetVisible(h)&&(o+=d.data[e]>0?d.data[e]:0)}return a.getPixelForValue(o)}return a.getBasePixel()},getRuler:function(t){var e,i=this.getMeta(),a=this.getScaleForId(i.yAxisID),o=this.getBarCount();e="category"===a.options.type?a.getPixelForTick(t+1)-a.getPixelForTick(t):a.width/a.ticks.length;var n=e*a.options.categoryPercentage,r=(e-e*a.options.categoryPercentage)/2,s=n/o;if(a.ticks.length!==this.chart.data.labels.length){var l=a.ticks.length/this.chart.data.labels.length;s*=l}var h=s*a.options.barPercentage,d=s-s*a.options.barPercentage;return{datasetCount:o,tickHeight:e,categoryHeight:n,categorySpacing:r,fullBarHeight:s,barHeight:h,barSpacing:d}},calculateBarHeight:function(t){var e=this.getScaleForId(this.getMeta().yAxisID),i=this.getRuler(t);return e.options.stacked?i.categoryHeight:i.barHeight},calculateBarX:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.xAxisID),o=this.getDataset().data[t];if(a.options.stacked){for(var n=0,r=0,s=0;e>s;s++){var l=this.chart.data.datasets[s],h=this.chart.getDatasetMeta(s);h.bar&&h.xAxisID===a.id&&this.chart.isDatasetVisible(s)&&(l.data[t]<0?r+=l.data[t]||0:n+=l.data[t]||0)}return 0>o?a.getPixelForValue(r+o):a.getPixelForValue(n+o)}return a.getPixelForValue(o)},calculateBarY:function(t,e){var i=this.getMeta(),a=this.getScaleForId(i.yAxisID),o=this.getBarIndex(e),n=this.getRuler(t),r=a.getPixelForValue(null,t,e,this.chart.isCombo);return r-=this.chart.isCombo?n.tickHeight/2:0,a.options.stacked?r+n.categoryHeight/2+n.categorySpacing:r+n.barHeight/2+n.categorySpacing+n.barHeight*o+n.barSpacing/2+n.barSpacing*o}})}},{}],16:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bubble={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(t,e){return""},label:function(t,e){var i=e.datasets[t.datasetIndex].label||"",a=e.datasets[t.datasetIndex].data[t.index];return i+": ("+a.x+", "+a.y+", "+a.r+")"}}}},t.controllers.bubble=t.DatasetController.extend({dataElementType:t.elements.Point,update:function(t){var i=this.getMeta(),a=i.data;e.each(a,function(e,i){this.updateElement(e,i,t)},this)},updateElement:function(t,i,a){var o=this.getMeta(),n=this.getScaleForId(o.xAxisID),r=this.getScaleForId(o.yAxisID),s=t.custom||{},l=this.getDataset(),h=l.data[i],d=this.chart.options.elements.point;e.extend(t,{_xScale:n,_yScale:r,_datasetIndex:this.index,_index:i,_model:{x:a?n.getPixelForDecimal(.5):n.getPixelForValue(h,i,this.index,this.chart.isCombo),y:a?r.getBasePixel():r.getPixelForValue(h,i,this.index),radius:a?0:s.radius?s.radius:this.getRadius(h),backgroundColor:s.backgroundColor?s.backgroundColor:e.getValueAtIndexOrDefault(l.backgroundColor,i,d.backgroundColor),borderColor:s.borderColor?s.borderColor:e.getValueAtIndexOrDefault(l.borderColor,i,d.borderColor),borderWidth:s.borderWidth?s.borderWidth:e.getValueAtIndexOrDefault(l.borderWidth,i,d.borderWidth),hitRadius:s.hitRadius?s.hitRadius:e.getValueAtIndexOrDefault(l.hitRadius,i,d.hitRadius)}});var c=t._model;c.skip=s.skip?s.skip:isNaN(c.x)||isNaN(c.y),t.pivot()},getRadius:function(t){return t.r||this.chart.options.elements.point.radius},setHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=t._model;n.radius=o.hoverRadius?o.hoverRadius:e.getValueAtIndexOrDefault(i.hoverRadius,a,this.chart.options.elements.point.hoverRadius)+this.getRadius(this.getDataset().data[t._index]),n.backgroundColor=o.hoverBackgroundColor?o.hoverBackgroundColor:e.getValueAtIndexOrDefault(i.hoverBackgroundColor,a,e.getHoverColor(n.backgroundColor)),n.borderColor=o.hoverBorderColor?o.hoverBorderColor:e.getValueAtIndexOrDefault(i.hoverBorderColor,a,e.getHoverColor(n.borderColor)),n.borderWidth=o.hoverBorderWidth?o.hoverBorderWidth:e.getValueAtIndexOrDefault(i.hoverBorderWidth,a,n.borderWidth)},removeHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=t._model,r=this.chart.options.elements.point;n.radius=o.radius?o.radius:this.getRadius(i.data[t._index]),n.backgroundColor=o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(i.backgroundColor,a,r.backgroundColor),n.borderColor=o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(i.borderColor,a,r.borderColor),n.borderWidth=o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(i.borderWidth,a,r.borderWidth)}})}},{}],17:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=t.defaults;i.doughnut={animation:{animateRotate:!0,animateScale:!1},aspectRatio:1,hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,a=i.datasets,o=i.labels;if(a.length)for(var n=0;n<a[0].data.length;++n)e.push('<li><span style="background-color:'+a[0].backgroundColor[n]+'"></span>'),o[n]&&e.push(o[n]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var i=t.data;return i.labels.length&&i.datasets.length?i.labels.map(function(a,o){var n=t.getDatasetMeta(0),r=i.datasets[0],s=n.data[o],l=s.custom||{},h=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:h(r.backgroundColor,o,d.backgroundColor),u=l.borderColor?l.borderColor:h(r.borderColor,o,d.borderColor),f=l.borderWidth?l.borderWidth:h(r.borderWidth,o,d.borderWidth);return{text:a,fillStyle:c,strokeStyle:u,lineWidth:f,hidden:isNaN(r.data[o])||n.data[o].hidden,index:o}}):[]}},onClick:function(t,e){var i,a,o,n=e.index,r=this.chart;for(i=0,a=(r.data.datasets||[]).length;a>i;++i)o=r.getDatasetMeta(i),o.data[n].hidden=!o.data[n].hidden;r.update()}},cutoutPercentage:50,rotation:Math.PI*-.5,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+e.datasets[t.datasetIndex].data[t.index]}}}},i.pie=e.clone(i.doughnut),e.extend(i.pie,{cutoutPercentage:0}),t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,getRingIndex:function(t){for(var e=0,i=0;t>i;++i)this.chart.isDatasetVisible(i)&&++e;return e},update:function(t){var i=this,a=i.chart,o=a.chartArea,n=a.options,r=n.elements.arc,s=o.right-o.left-r.borderWidth,l=o.bottom-o.top-r.borderWidth,h=Math.min(s,l),d={x:0,y:0},c=i.getMeta(),u=n.cutoutPercentage,f=n.circumference;if(f<2*Math.PI){var g=n.rotation%(2*Math.PI);g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0);var p=g+f,m={x:Math.cos(g),y:Math.sin(g)},b={x:Math.cos(p),y:Math.sin(p)},v=0>=g&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,S=u/100,C={x:y?-1:Math.min(m.x*(m.x<0?1:S),b.x*(b.x<0?1:S)),y:k?-1:Math.min(m.y*(m.y<0?1:S),b.y*(b.y<0?1:S))},w={x:v?1:Math.max(m.x*(m.x>0?1:S),b.x*(b.x>0?1:S)),y:x?1:Math.max(m.y*(m.y>0?1:S),b.y*(b.y>0?1:S))},M={width:.5*(w.x-C.x),height:.5*(w.y-C.y)};h=Math.min(s/M.width,l/M.height),d={x:(w.x+C.x)*-.5,y:(w.y+C.y)*-.5}}a.outerRadius=Math.max(h/2,0),a.innerRadius=Math.max(u?a.outerRadius/100*u:1,0),a.radiusLength=(a.outerRadius-a.innerRadius)/a.getVisibleDatasetCount(),a.offsetX=d.x*a.outerRadius,a.offsetY=d.y*a.outerRadius,c.total=i.calculateTotal(),i.outerRadius=a.outerRadius-a.radiusLength*i.getRingIndex(i.index),i.innerRadius=i.outerRadius-a.radiusLength,e.each(c.data,function(e,a){i.updateElement(e,a,t)})},updateElement:function(t,i,a){var o=this,n=o.chart,r=n.chartArea,s=n.options,l=s.animation,h=s.elements.arc,d=(r.left+r.right)/2,c=(r.top+r.bottom)/2,u=s.rotation,f=s.rotation,g=o.getDataset(),p=a&&l.animateRotate?0:t.hidden?0:o.calculateCircumference(g.data[i])*(s.circumference/(2*Math.PI)),m=a&&l.animateScale?0:o.innerRadius,b=a&&l.animateScale?0:o.outerRadius,v=t.custom||{},x=e.getValueAtIndexOrDefault;e.extend(t,{_datasetIndex:o.index,_index:i,_model:{x:d+n.offsetX,y:c+n.offsetY,startAngle:u,endAngle:f,circumference:p,outerRadius:b,innerRadius:m,label:x(g.label,i,n.data.labels[i])}});var y=t._model;y.backgroundColor=v.backgroundColor?v.backgroundColor:x(g.backgroundColor,i,h.backgroundColor),y.hoverBackgroundColor=v.hoverBackgroundColor?v.hoverBackgroundColor:x(g.hoverBackgroundColor,i,h.hoverBackgroundColor),y.borderWidth=v.borderWidth?v.borderWidth:x(g.borderWidth,i,h.borderWidth),y.borderColor=v.borderColor?v.borderColor:x(g.borderColor,i,h.borderColor),a&&l.animateRotate||(0===i?y.startAngle=s.rotation:y.startAngle=o.getMeta().data[i-1]._model.endAngle,y.endAngle=y.startAngle+y.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,i=this.getDataset(),a=this.getMeta(),o=0;return e.each(a.data,function(e,a){t=i.data[a],isNaN(t)||e.hidden||(o+=Math.abs(t))}),o},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0}})}},{}],18:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.line={showLines:!0,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},t.controllers.line=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,addElementAndReset:function(e){var i=this,a=i.chart.options;t.DatasetController.prototype.addElementAndReset.call(i,e),a.showLines&&0!==a.elements.line.tension&&i.updateBezierControlPoints()},update:function(t){var i,a,o,n,r=this,s=r.getMeta(),l=s.dataset,h=s.data||[],d=r.chart.options,c=d.elements.line,u=r.getScaleForId(s.yAxisID);for(d.showLines&&(o=r.getDataset(),n=l.custom||{},void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),l._scale=u,l._datasetIndex=r.index,l._children=h,l._model={tension:n.tension?n.tension:e.getValueOrDefault(o.lineTension,c.tension),backgroundColor:n.backgroundColor?n.backgroundColor:o.backgroundColor||c.backgroundColor,borderWidth:n.borderWidth?n.borderWidth:o.borderWidth||c.borderWidth,borderColor:n.borderColor?n.borderColor:o.borderColor||c.borderColor,borderCapStyle:n.borderCapStyle?n.borderCapStyle:o.borderCapStyle||c.borderCapStyle,borderDash:n.borderDash?n.borderDash:o.borderDash||c.borderDash,borderDashOffset:n.borderDashOffset?n.borderDashOffset:o.borderDashOffset||c.borderDashOffset,borderJoinStyle:n.borderJoinStyle?n.borderJoinStyle:o.borderJoinStyle||c.borderJoinStyle,fill:n.fill?n.fill:void 0!==o.fill?o.fill:c.fill,scaleTop:u.top,scaleBottom:u.bottom,scaleZero:u.getBasePixel()},l.pivot()),i=0,a=h.length;a>i;++i)r.updateElement(h[i],i,t);d.showLines&&0!==c.tension&&r.updateBezierControlPoints()},getPointBackgroundColor:function(t,i){var a=this.chart.options.elements.point.backgroundColor,o=this.getDataset(),n=t.custom||{};return n.backgroundColor?a=n.backgroundColor:o.pointBackgroundColor?a=e.getValueAtIndexOrDefault(o.pointBackgroundColor,i,a):o.backgroundColor&&(a=o.backgroundColor),a},getPointBorderColor:function(t,i){var a=this.chart.options.elements.point.borderColor,o=this.getDataset(),n=t.custom||{};return n.borderColor?a=n.borderColor:o.pointBorderColor?a=e.getValueAtIndexOrDefault(o.pointBorderColor,i,a):o.borderColor&&(a=o.borderColor),a},getPointBorderWidth:function(t,i){var a=this.chart.options.elements.point.borderWidth,o=this.getDataset(),n=t.custom||{};return n.borderWidth?a=n.borderWidth:o.pointBorderWidth?a=e.getValueAtIndexOrDefault(o.pointBorderWidth,i,a):o.borderWidth&&(a=o.borderWidth),a},updateElement:function(t,i,a){var o,n,r=this,s=r.getMeta(),l=t.custom||{},h=r.getDataset(),d=r.index,c=h.data[i],u=r.getScaleForId(s.yAxisID),f=r.getScaleForId(s.xAxisID),g=r.chart.options.elements.point;void 0!==h.radius&&void 0===h.pointRadius&&(h.pointRadius=h.radius),void 0!==h.hitRadius&&void 0===h.pointHitRadius&&(h.pointHitRadius=h.hitRadius),o=f.getPixelForValue(c,i,d,r.chart.isCombo),n=a?u.getBasePixel():r.calculatePointY(c,i,d,r.chart.isCombo),t._xScale=f,t._yScale=u,t._datasetIndex=d,t._index=i,t._model={x:o,y:n,skip:l.skip||isNaN(o)||isNaN(n),radius:l.radius||e.getValueAtIndexOrDefault(h.pointRadius,i,g.radius),pointStyle:l.pointStyle||e.getValueAtIndexOrDefault(h.pointStyle,i,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,i),borderColor:r.getPointBorderColor(t,i),borderWidth:r.getPointBorderWidth(t,i),tension:s.dataset._model?s.dataset._model.tension:0,hitRadius:l.hitRadius||e.getValueAtIndexOrDefault(h.pointHitRadius,i,g.hitRadius)}},calculatePointY:function(t,e,i,a){var o,n,r,s=this,l=s.chart,h=s.getMeta(),d=s.getScaleForId(h.yAxisID),c=0,u=0;if(d.options.stacked){for(o=0;i>o;o++)n=l.data.datasets[o],r=l.getDatasetMeta(o),"line"===r.type&&l.isDatasetVisible(o)&&(n.data[e]<0?u+=n.data[e]||0:c+=n.data[e]||0);return 0>t?d.getPixelForValue(u+t):d.getPixelForValue(c+t)}return d.getPixelForValue(t)},updateBezierControlPoints:function(){var t,i,a,o,n,r=this.getMeta(),s=this.chart.chartArea,l=r.data||[];for(t=0,i=l.length;i>t;++t)a=l[t],o=a._model,n=e.splineCurve(e.previousItem(l,t)._model,o,e.nextItem(l,t)._model,r.dataset._model.tension),o.controlPointPreviousX=Math.max(Math.min(n.previous.x,s.right),s.left),o.controlPointPreviousY=Math.max(Math.min(n.previous.y,s.bottom),s.top),o.controlPointNextX=Math.max(Math.min(n.next.x,s.right),s.left),o.controlPointNextY=Math.max(Math.min(n.next.y,s.bottom),s.top),a.pivot()},draw:function(t){var e,i,a=this.getMeta(),o=a.data||[],n=t||1;for(e=0,i=o.length;i>e;++e)o[e].transition(n);for(this.chart.options.showLines&&a.dataset.transition(n).draw(),e=0,i=o.length;i>e;++e)o[e].draw()},setHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=t._model;n.radius=o.hoverRadius||e.getValueAtIndexOrDefault(i.pointHoverRadius,a,this.chart.options.elements.point.hoverRadius),n.backgroundColor=o.hoverBackgroundColor||e.getValueAtIndexOrDefault(i.pointHoverBackgroundColor,a,e.getHoverColor(n.backgroundColor)),n.borderColor=o.hoverBorderColor||e.getValueAtIndexOrDefault(i.pointHoverBorderColor,a,e.getHoverColor(n.borderColor)),n.borderWidth=o.hoverBorderWidth||e.getValueAtIndexOrDefault(i.pointHoverBorderWidth,a,n.borderWidth)},removeHoverStyle:function(t){var i=this,a=i.chart.data.datasets[t._datasetIndex],o=t._index,n=t.custom||{},r=t._model;void 0!==a.radius&&void 0===a.pointRadius&&(a.pointRadius=a.radius),r.radius=n.radius||e.getValueAtIndexOrDefault(a.pointRadius,o,i.chart.options.elements.point.radius),r.backgroundColor=i.getPointBackgroundColor(t,o),r.borderColor=i.getPointBorderColor(t,o),r.borderWidth=i.getPointBorderWidth(t,o)}})}},{}],19:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.polarArea={scale:{type:"radialLinear",lineArc:!0},animation:{animateRotate:!0,animateScale:!0},aspectRatio:1,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var i=t.data,a=i.datasets,o=i.labels;if(a.length)for(var n=0;n<a[0].data.length;++n)e.push('<li><span style="background-color:'+a[0].backgroundColor[n]+'">'),o[n]&&e.push(o[n]),e.push("</span></li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var i=t.data;return i.labels.length&&i.datasets.length?i.labels.map(function(a,o){var n=t.getDatasetMeta(0),r=i.datasets[0],s=n.data[o],l=s.custom||{},h=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:h(r.backgroundColor,o,d.backgroundColor),u=l.borderColor?l.borderColor:h(r.borderColor,o,d.borderColor),f=l.borderWidth?l.borderWidth:h(r.borderWidth,o,d.borderWidth);return{text:a,fillStyle:c,strokeStyle:u,lineWidth:f,hidden:isNaN(r.data[o])||n.data[o].hidden,index:o}}):[]}},onClick:function(t,e){var i,a,o,n=e.index,r=this.chart;for(i=0,a=(r.data.datasets||[]).length;a>i;++i)o=r.getDatasetMeta(i),o.data[n].hidden=!o.data[n].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}},t.controllers.polarArea=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,update:function(t){var i=this,a=i.chart,o=a.chartArea,n=this.getMeta(),r=a.options,s=r.elements.arc,l=Math.min(o.right-o.left,o.bottom-o.top);a.outerRadius=Math.max((l-s.borderWidth/2)/2,0),a.innerRadius=Math.max(r.cutoutPercentage?a.outerRadius/100*r.cutoutPercentage:1,0),a.radiusLength=(a.outerRadius-a.innerRadius)/a.getVisibleDatasetCount(),i.outerRadius=a.outerRadius-a.radiusLength*i.index,i.innerRadius=i.outerRadius-a.radiusLength,n.count=i.countVisibleElements(),e.each(n.data,function(e,a){i.updateElement(e,a,t)})},updateElement:function(t,i,a){for(var o=this,n=o.chart,r=n.chartArea,s=o.getDataset(),l=n.options,h=l.animation,d=l.elements.arc,c=t.custom||{},u=n.scale,f=e.getValueAtIndexOrDefault,g=n.data.labels,p=o.calculateCircumference(s.data[i]),m=(r.left+r.right)/2,b=(r.top+r.bottom)/2,v=0,x=o.getMeta(),y=0;i>y;++y)isNaN(s.data[y])||x.data[y].hidden||++v;var k=t.hidden?0:u.getDistanceFromCenterForValue(s.data[i]),S=-.5*Math.PI+p*v,C=S+(t.hidden?0:p),w={x:m,y:b,innerRadius:0,outerRadius:h.animateScale?0:u.getDistanceFromCenterForValue(s.data[i]),startAngle:h.animateRotate?Math.PI*-.5:S,endAngle:h.animateRotate?Math.PI*-.5:C,backgroundColor:c.backgroundColor?c.backgroundColor:f(s.backgroundColor,i,d.backgroundColor),borderWidth:c.borderWidth?c.borderWidth:f(s.borderWidth,i,d.borderWidth),borderColor:c.borderColor?c.borderColor:f(s.borderColor,i,d.borderColor),label:f(g,i,g[i])};e.extend(t,{_datasetIndex:o.index,_index:i,_scale:u,_model:a?w:{x:m,y:b,innerRadius:0,outerRadius:k,startAngle:S,endAngle:C,backgroundColor:c.backgroundColor?c.backgroundColor:f(s.backgroundColor,i,d.backgroundColor),borderWidth:c.borderWidth?c.borderWidth:f(s.borderWidth,i,d.borderWidth),borderColor:c.borderColor?c.borderColor:f(s.borderColor,i,d.borderColor),label:f(g,i,g[i])}}),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),i=this.getMeta(),a=0;return e.each(i.data,function(e,i){isNaN(t.data[i])||e.hidden||a++}),a},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{}],20:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.radar={scale:{type:"radialLinear"},elements:{line:{tension:0}}},t.controllers.radar=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,linkScales:e.noop,addElementAndReset:function(e){t.DatasetController.prototype.addElementAndReset.call(this,e),this.updateBezierControlPoints()},update:function(t){var i=this.getMeta(),a=i.dataset,o=i.data,n=a.custom||{},r=this.getDataset(),s=this.chart.options.elements.line,l=this.chart.scale;void 0!==r.tension&&void 0===r.lineTension&&(r.lineTension=r.tension),e.extend(i.dataset,{_datasetIndex:this.index,_children:o,_loop:!0,_model:{tension:n.tension?n.tension:e.getValueOrDefault(r.lineTension,s.tension),backgroundColor:n.backgroundColor?n.backgroundColor:r.backgroundColor||s.backgroundColor,borderWidth:n.borderWidth?n.borderWidth:r.borderWidth||s.borderWidth,borderColor:n.borderColor?n.borderColor:r.borderColor||s.borderColor,fill:n.fill?n.fill:void 0!==r.fill?r.fill:s.fill,borderCapStyle:n.borderCapStyle?n.borderCapStyle:r.borderCapStyle||s.borderCapStyle,borderDash:n.borderDash?n.borderDash:r.borderDash||s.borderDash,borderDashOffset:n.borderDashOffset?n.borderDashOffset:r.borderDashOffset||s.borderDashOffset,borderJoinStyle:n.borderJoinStyle?n.borderJoinStyle:r.borderJoinStyle||s.borderJoinStyle,scaleTop:l.top,scaleBottom:l.bottom,scaleZero:l.getBasePosition()}}),i.dataset.pivot(),e.each(o,function(e,i){this.updateElement(e,i,t)},this),this.updateBezierControlPoints()},updateElement:function(t,i,a){var o=t.custom||{},n=this.getDataset(),r=this.chart.scale,s=this.chart.options.elements.point,l=r.getPointPositionForValue(i,n.data[i]);e.extend(t,{_datasetIndex:this.index,_index:i,_scale:r,_model:{x:a?r.xCenter:l.x,y:a?r.yCenter:l.y,tension:o.tension?o.tension:e.getValueOrDefault(n.tension,this.chart.options.elements.line.tension),radius:o.radius?o.radius:e.getValueAtIndexOrDefault(n.pointRadius,i,s.radius),backgroundColor:o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(n.pointBackgroundColor,i,s.backgroundColor),borderColor:o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(n.pointBorderColor,i,s.borderColor),borderWidth:o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(n.pointBorderWidth,i,s.borderWidth),pointStyle:o.pointStyle?o.pointStyle:e.getValueAtIndexOrDefault(n.pointStyle,i,s.pointStyle),hitRadius:o.hitRadius?o.hitRadius:e.getValueAtIndexOrDefault(n.hitRadius,i,s.hitRadius)}}),t._model.skip=o.skip?o.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,i=this.getMeta();e.each(i.data,function(a,o){var n=a._model,r=e.splineCurve(e.previousItem(i.data,o,!0)._model,n,e.nextItem(i.data,o,!0)._model,n.tension);n.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),n.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),n.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),n.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),a.pivot()},this)},draw:function(t){var i=this.getMeta(),a=t||1;e.each(i.data,function(t,e){t.transition(a)}),i.dataset.transition(a).draw(),e.each(i.data,function(t){t.draw()})},setHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t.custom||{},o=t._index,n=t._model;n.radius=a.hoverRadius?a.hoverRadius:e.getValueAtIndexOrDefault(i.pointHoverRadius,o,this.chart.options.elements.point.hoverRadius),n.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:e.getValueAtIndexOrDefault(i.pointHoverBackgroundColor,o,e.getHoverColor(n.backgroundColor)),n.borderColor=a.hoverBorderColor?a.hoverBorderColor:e.getValueAtIndexOrDefault(i.pointHoverBorderColor,o,e.getHoverColor(n.borderColor)),n.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:e.getValueAtIndexOrDefault(i.pointHoverBorderWidth,o,n.borderWidth)},removeHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t.custom||{},o=t._index,n=t._model,r=this.chart.options.elements.point;n.radius=a.radius?a.radius:e.getValueAtIndexOrDefault(i.radius,o,r.radius),n.backgroundColor=a.backgroundColor?a.backgroundColor:e.getValueAtIndexOrDefault(i.pointBackgroundColor,o,r.backgroundColor),n.borderColor=a.borderColor?a.borderColor:e.getValueAtIndexOrDefault(i.pointBorderColor,o,r.borderColor),n.borderWidth=a.borderWidth?a.borderWidth:e.getValueAtIndexOrDefault(i.pointBorderWidth,o,r.borderWidth)}})}},{}],21:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:e.noop,onComplete:e.noop},t.Animation=t.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,i,a){a||(t.animating=!0);for(var o=0;o<this.animations.length;++o)if(this.animations[o].chartInstance===t)return void(this.animations[o].animationObject=e);this.animations.push({chartInstance:t,animationObject:e}),1===this.animations.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var i=e.findIndex(this.animations,function(e){return e.chartInstance===t});-1!==i&&(this.animations.splice(i,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=e.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=Date.now(),e=0;this.dropFrames>1&&(e=Math.floor(this.dropFrames),this.dropFrames=this.dropFrames%1);for(var i=0;i<this.animations.length;)null===this.animations[i].animationObject.currentStep&&(this.animations[i].animationObject.currentStep=0),this.animations[i].animationObject.currentStep+=1+e,this.animations[i].animationObject.currentStep>this.animations[i].animationObject.numSteps&&(this.animations[i].animationObject.currentStep=this.animations[i].animationObject.numSteps),this.animations[i].animationObject.render(this.animations[i].chartInstance,this.animations[i].animationObject),this.animations[i].animationObject.onAnimationProgress&&this.animations[i].animationObject.onAnimationProgress.call&&this.animations[i].animationObject.onAnimationProgress.call(this.animations[i].chartInstance,this.animations[i]),this.animations[i].animationObject.currentStep===this.animations[i].animationObject.numSteps?(this.animations[i].animationObject.onAnimationComplete&&this.animations[i].animationObject.onAnimationComplete.call&&this.animations[i].animationObject.onAnimationComplete.call(this.animations[i].chartInstance,this.animations[i]),this.animations[i].chartInstance.animating=!1,this.animations.splice(i,1)):++i;var a=Date.now(),o=(a-t)/this.frameDuration;this.dropFrames+=o,this.animations.length>0&&this.requestAnimationFrame()}}}},{}],22:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.types={},t.instances={},t.controllers={},t.Controller=function(i){return this.chart=i,this.config=i.config,this.options=this.config.options=e.configMerge(t.defaults.global,t.defaults[this.config.type],this.config.options||{}),this.id=e.uid(),Object.defineProperty(this,"data",{get:function(){return this.config.data}}),t.instances[this.id]=this,this.options.responsive&&this.resize(!0),this.initialize(),this},e.extend(t.Controller.prototype,{initialize:function(){return t.pluginService.notifyPlugins("beforeInit",[this]),this.bindEvents(),this.ensureScalesHaveIDs(),this.buildOrUpdateControllers(),this.buildScales(),this.buildSurroundingItems(),this.updateLayout(),this.resetElements(),this.initToolTip(),this.update(),t.pluginService.notifyPlugins("afterInit",[this]),this},clear:function(){return e.clear(this.chart),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var i=this.chart.canvas,a=e.getMaximumWidth(this.chart.canvas),o=this.options.maintainAspectRatio&&isNaN(this.chart.aspectRatio)===!1&&isFinite(this.chart.aspectRatio)&&0!==this.chart.aspectRatio?a/this.chart.aspectRatio:e.getMaximumHeight(this.chart.canvas),n=this.chart.width!==a||this.chart.height!==o;return n?(i.width=this.chart.width=a,i.height=this.chart.height=o,e.retinaScale(this.chart),t||(this.stop(),this.update(this.options.responsiveAnimationDuration)),this):this},ensureScalesHaveIDs:function(){var t=this.options,i=t.scales||{},a=t.scale;e.each(i.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),e.each(i.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),a&&(a.id=a.id||"scale")},buildScales:function(){var i=this,a=i.options,o=i.scales={},n=[];a.scales&&(n=n.concat((a.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category"}}),(a.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear"}}))),a.scale&&n.push({options:a.scale,dtype:"radialLinear",isDefault:!0}),e.each(n,function(a,n){var r=a.options,s=e.getValueOrDefault(r.type,a.dtype),l=t.scaleService.getScaleConstructor(s);if(l){var h=new l({id:r.id,options:r,ctx:i.chart.ctx,chart:i});o[h.id]=h,a.isDefault&&(i.scale=h)}}),t.scaleService.addScalesToLayout(this)},buildSurroundingItems:function(){this.options.title&&(this.titleBlock=new t.Title({ctx:this.chart.ctx,options:this.options.title,chart:this}),t.layoutService.addBox(this,this.titleBlock)),this.options.legend&&(this.legend=new t.Legend({ctx:this.chart.ctx,options:this.options.legend,chart:this}),t.layoutService.addBox(this,this.legend))},updateLayout:function(){t.layoutService.update(this,this.chart.width,this.chart.height)},buildOrUpdateControllers:function(){var i=[],a=[];if(e.each(this.data.datasets,function(e,o){var n=this.getDatasetMeta(o);n.type||(n.type=e.type||this.config.type),i.push(n.type),n.controller?n.controller.updateIndex(o):(n.controller=new t.controllers[n.type](this,o),a.push(n.controller))},this),i.length>1)for(var o=1;o<i.length;o++)if(i[o]!==i[o-1]){this.isCombo=!0;break}return a},resetElements:function(){e.each(this.data.datasets,function(t,e){this.getDatasetMeta(e).controller.reset()},this)},update:function(i,a){t.pluginService.notifyPlugins("beforeUpdate",[this]),this.tooltip._data=this.data;var o=this.buildOrUpdateControllers();e.each(this.data.datasets,function(t,e){this.getDatasetMeta(e).controller.buildOrUpdateElements()},this),t.layoutService.update(this,this.chart.width,this.chart.height),t.pluginService.notifyPlugins("afterScaleUpdate",[this]),e.each(o,function(t){t.reset()}),e.each(this.data.datasets,function(t,e){this.getDatasetMeta(e).controller.update()},this),t.pluginService.notifyPlugins("afterUpdate",[this]),this.render(i,a)},render:function(i,a){t.pluginService.notifyPlugins("beforeRender",[this]);var o=this.options.animation;if(o&&("undefined"!=typeof i&&0!==i||"undefined"==typeof i&&0!==o.duration)){var n=new t.Animation;n.numSteps=(i||o.duration)/16.66,n.easing=o.easing,n.render=function(t,i){var a=e.easingEffects[i.easing],o=i.currentStep/i.numSteps,n=a(o);t.draw(n,o,i.currentStep)},n.onAnimationProgress=o.onProgress,n.onAnimationComplete=o.onComplete,t.animationService.addAnimation(this,n,i,a)}else this.draw(),o&&o.onComplete&&o.onComplete.call&&o.onComplete.call(this);return this},draw:function(i){var a=i||1;this.clear(),t.pluginService.notifyPlugins("beforeDraw",[this,a]),e.each(this.boxes,function(t){t.draw(this.chartArea)},this),this.scale&&this.scale.draw();var o=this.chart.ctx;o.save(),o.beginPath(),o.rect(this.chartArea.left,this.chartArea.top,this.chartArea.right-this.chartArea.left,this.chartArea.bottom-this.chartArea.top),o.clip(),e.each(this.data.datasets,function(t,e){this.isDatasetVisible(e)&&this.getDatasetMeta(e).controller.draw(i)},this,!0),o.restore(),this.tooltip.transition(a).draw(),t.pluginService.notifyPlugins("afterDraw",[this,a])},getElementAtEvent:function(t){var i=e.getRelativePosition(t,this.chart),a=[];return e.each(this.data.datasets,function(t,o){if(this.isDatasetVisible(o)){var n=this.getDatasetMeta(o);e.each(n.data,function(t,e){ +return t.inRange(i.x,i.y)?(a.push(t),a):void 0})}},this),a},getElementsAtEvent:function(t){var i=e.getRelativePosition(t,this.chart),a=[],o=function(){if(this.data.datasets)for(var t=0;t<this.data.datasets.length;t++){var e=this.getDatasetMeta(t);if(this.isDatasetVisible(t))for(var a=0;a<e.data.length;a++)if(e.data[a].inRange(i.x,i.y))return e.data[a]}}.call(this);return o?(e.each(this.data.datasets,function(t,e){if(this.isDatasetVisible(e)){var i=this.getDatasetMeta(e);a.push(i.data[o._index])}},this),a):a},getElementsAtEventForMode:function(t,e){var i=this;switch(e){case"single":return i.getElementAtEvent(t);case"label":return i.getElementsAtEvent(t);case"dataset":return i.getDatasetAtEvent(t);default:return t}},getDatasetAtEvent:function(t){var e=this.getElementAtEvent(t);return e.length>0&&(e=this.getDatasetMeta(e[0]._datasetIndex).data),e},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var i=e._meta[this.id];return i||(i=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,i=this.data.datasets.length;i>e;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroy:function(){this.clear(),e.unbindEvents(this,this.events),e.removeResizeListener(this.chart.canvas.parentNode);var i=this.chart.canvas;i.width=this.chart.width,i.height=this.chart.height,void 0!==this.chart.originalDevicePixelRatio&&this.chart.ctx.scale(1/this.chart.originalDevicePixelRatio,1/this.chart.originalDevicePixelRatio),i.style.width=this.chart.originalCanvasStyleWidth,i.style.height=this.chart.originalCanvasStyleHeight,t.pluginService.notifyPlugins("destroy",[this]),delete t.instances[this.id]},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)},initToolTip:function(){this.tooltip=new t.Tooltip({_chart:this.chart,_chartInstance:this,_data:this.data,_options:this.options},this)},bindEvents:function(){e.bindEvents(this,this.options.events,function(t){this.eventHandler(t)})},updateHoverStyle:function(t,e,i){var a,o,n,r=i?"setHoverStyle":"removeHoverStyle";switch(e){case"single":t=[t[0]];break;case"label":case"dataset":break;default:return}for(o=0,n=t.length;n>o;++o)a=t[o],a&&this.getDatasetMeta(a._datasetIndex).controller[r](a)},eventHandler:function(t){var i=this,a=i.tooltip,o=i.options||{},n=o.hover,r=o.tooltips;return i.lastActive=i.lastActive||[],i.lastTooltipActive=i.lastTooltipActive||[],"mouseout"===t.type?(i.active=[],i.tooltipActive=[]):(i.active=i.getElementsAtEventForMode(t,n.mode),i.tooltipActive=i.getElementsAtEventForMode(t,r.mode)),n.onHover&&n.onHover.call(i,i.active),("mouseup"===t.type||"click"===t.type)&&(o.onClick&&o.onClick.call(i,t,i.active),i.legend&&i.legend.handleEvent&&i.legend.handleEvent(t)),i.lastActive.length&&i.updateHoverStyle(i.lastActive,n.mode,!1),i.active.length&&n.mode&&i.updateHoverStyle(i.active,n.mode,!0),(r.enabled||r.custom)&&(a.initialize(),a._active=i.tooltipActive,a.update(!0)),a.pivot(),i.animating||e.arrayEquals(i.active,i.lastActive)&&e.arrayEquals(i.tooltipActive,i.lastTooltipActive)||(i.stop(),(r.enabled||r.custom)&&a.update(!0),i.render(n.animationDuration,!0)),i.lastActive=i.active,i.lastTooltipActive=i.tooltipActive,i}})}},{}],23:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=e.noop;t.DatasetController=function(t,e){this.initialize.call(this,t,e)},e.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.getDataset();null===t.xAxisID&&(t.xAxisID=e.xAxisID||this.chart.options.scales.xAxes[0].id),null===t.yAxisID&&(t.yAxisID=e.yAxisID||this.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,i=e.dataElementType;return i&&new i({_chart:e.chart.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,i=this,a=i.getMeta(),o=i.getDataset().data||[],n=a.data;for(t=0,e=o.length;e>t;++t)n[t]=n[t]||i.createMetaData(a,t);a.dataset=a.dataset||i.createMetaDataset()},addElementAndReset:function(t){var e=this,i=e.createMetaData(t);e.getMeta().data.splice(t,0,i),e.updateElement(i,t,!0)},buildOrUpdateElements:function(){var t=this.getMeta(),e=t.data,i=this.getDataset().data.length,a=e.length;if(a>i)e.splice(i,a-i);else if(i>a)for(var o=a;i>o;++o)this.addElementAndReset(o)},update:i,draw:function(t){var i=t||1;e.each(this.getMeta().data,function(t,e){t.transition(i).draw()})},removeHoverStyle:function(t,i){var a=this.chart.data.datasets[t._datasetIndex],o=t._index,n=t.custom||{},r=e.getValueAtIndexOrDefault,s=(e.color,t._model);s.backgroundColor=n.backgroundColor?n.backgroundColor:r(a.backgroundColor,o,i.backgroundColor),s.borderColor=n.borderColor?n.borderColor:r(a.borderColor,o,i.borderColor),s.borderWidth=n.borderWidth?n.borderWidth:r(a.borderWidth,o,i.borderWidth)},setHoverStyle:function(t){var i=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},n=e.getValueAtIndexOrDefault,r=(e.color,e.getHoverColor),s=t._model;s.backgroundColor=o.hoverBackgroundColor?o.hoverBackgroundColor:n(i.hoverBackgroundColor,a,r(s.backgroundColor)),s.borderColor=o.hoverBorderColor?o.hoverBorderColor:n(i.hoverBorderColor,a,r(s.borderColor)),s.borderWidth=o.hoverBorderWidth?o.hoverBorderWidth:n(i.hoverBorderWidth,a,s.borderWidth)}}),t.DatasetController.extend=e.inherits}},{}],24:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.elements={},t.Element=function(t){e.extend(this,t),this.initialize.apply(this,arguments)},e.extend(t.Element.prototype,{initialize:function(){this.hidden=!1},pivot:function(){return this._view||(this._view=e.clone(this._model)),this._start=e.clone(this._view),this},transition:function(t){return this._view||(this._view=e.clone(this._model)),1===t?(this._view=this._model,this._start=null,this):(this._start||this.pivot(),e.each(this._model,function(i,a){if("_"===a[0]);else if(this._view.hasOwnProperty(a))if(i===this._view[a]);else if("string"==typeof i)try{var o=e.color(this._model[a]).mix(e.color(this._start[a]),t);this._view[a]=o.rgbString()}catch(n){this._view[a]=i}else if("number"==typeof i){var r=void 0!==this._start[a]&&isNaN(this._start[a])===!1?this._start[a]:0;this._view[a]=(this._model[a]-r)*t+r}else this._view[a]=i;else"number"!=typeof i||isNaN(this._view[a])?this._view[a]=i:this._view[a]=i*t},this),this)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return e.isNumber(this._model.x)&&e.isNumber(this._model.y)}}),t.Element.extend=e.inherits}},{}],25:[function(t,e,i){"use strict";var a=t("chartjs-color");e.exports=function(t){function e(t,e,i){var a;return"string"==typeof t?(a=parseInt(t,10),-1!=t.indexOf("%")&&(a=a/100*e.parentNode[i])):a=t,a}function i(t){return void 0!==t&&null!==t&&"none"!==t}function o(t,a,o){var n=document.defaultView,r=t.parentNode,s=n.getComputedStyle(t)[a],l=n.getComputedStyle(r)[a],h=i(s),d=i(l),c=Number.POSITIVE_INFINITY;return h||d?Math.min(h?e(s,t,o):c,d?e(l,r,o):c):"none"}var n=t.helpers={};n.each=function(t,e,i,a){var o,r;if(n.isArray(t))if(r=t.length,a)for(o=r-1;o>=0;o--)e.call(i,t[o],o);else for(o=0;r>o;o++)e.call(i,t[o],o);else if("object"==typeof t){var s=Object.keys(t);for(r=s.length,o=0;r>o;o++)e.call(i,t[s[o]],s[o])}},n.clone=function(t){var e={};return n.each(t,function(t,i){n.isArray(t)?e[i]=t.slice(0):"object"==typeof t&&null!==t?e[i]=n.clone(t):e[i]=t}),e},n.extend=function(t){for(var e=arguments.length,i=[],a=1;e>a;a++)i.push(arguments[a]);return n.each(i,function(e){n.each(e,function(e,i){t[i]=e})}),t},n.configMerge=function(e){var i=n.clone(e);return n.each(Array.prototype.slice.call(arguments,1),function(e){n.each(e,function(e,a){if("scales"===a)i[a]=n.scaleMerge(i.hasOwnProperty(a)?i[a]:{},e);else if("scale"===a)i[a]=n.configMerge(i.hasOwnProperty(a)?i[a]:{},t.scaleService.getScaleDefaults(e.type),e);else if(i.hasOwnProperty(a)&&n.isArray(i[a])&&n.isArray(e)){var o=i[a];n.each(e,function(t,e){e<o.length?"object"==typeof o[e]&&null!==o[e]&&"object"==typeof t&&null!==t?o[e]=n.configMerge(o[e],t):o[e]=t:o.push(t)})}else i.hasOwnProperty(a)&&"object"==typeof i[a]&&null!==i[a]&&"object"==typeof e?i[a]=n.configMerge(i[a],e):i[a]=e})}),i},n.extendDeep=function(t){function e(t){return n.each(arguments,function(i){i!==t&&n.each(i,function(i,a){t[a]&&t[a].constructor&&t[a].constructor===Object?e(t[a],i):t[a]=i})}),t}return e.apply(this,arguments)},n.scaleMerge=function(e,i){var a=n.clone(e);return n.each(i,function(e,i){"xAxes"===i||"yAxes"===i?a.hasOwnProperty(i)?n.each(e,function(e,o){var r=n.getValueOrDefault(e.type,"xAxes"===i?"category":"linear"),s=t.scaleService.getScaleDefaults(r);o>=a[i].length||!a[i][o].type?a[i].push(n.configMerge(s,e)):e.type&&e.type!==a[i][o].type?a[i][o]=n.configMerge(a[i][o],s,e):a[i][o]=n.configMerge(a[i][o],e)}):(a[i]=[],n.each(e,function(e){var o=n.getValueOrDefault(e.type,"xAxes"===i?"category":"linear");a[i].push(n.configMerge(t.scaleService.getScaleDefaults(o),e))})):a.hasOwnProperty(i)&&"object"==typeof a[i]&&null!==a[i]&&"object"==typeof e?a[i]=n.configMerge(a[i],e):a[i]=e}),a},n.getValueAtIndexOrDefault=function(t,e,i){return void 0===t||null===t?i:n.isArray(t)?e<t.length?t[e]:i:t},n.getValueOrDefault=function(t,e){return void 0===t?e:t},n.indexOf=function(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1},n.where=function(t,e){if(n.isArray(t)&&Array.prototype.filter)return t.filter(e);var i=[];return n.each(t,function(t){e(t)&&i.push(t)}),i},n.findIndex=function(t,e,i){var a=-1;if(Array.prototype.findIndex)a=t.findIndex(e,i);else for(var o=0;o<t.length;++o)if(i=void 0!==i?i:t,e.call(i,t[o],o,t)){a=o;break}return a},n.findNextWhere=function(t,e,i){(void 0===i||null===i)&&(i=-1);for(var a=i+1;a<t.length;a++){var o=t[a];if(e(o))return o}},n.findPreviousWhere=function(t,e,i){(void 0===i||null===i)&&(i=t.length);for(var a=i-1;a>=0;a--){var o=t[a];if(e(o))return o}},n.inherits=function(t){var e=this,i=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=i};return a.prototype=e.prototype,i.prototype=new a,i.extend=n.inherits,t&&n.extend(i.prototype,t),i.__super__=e.prototype,i},n.noop=function(){},n.uid=function(){var t=0;return function(){return t++}}(),n.warn=function(t){console&&"function"==typeof console.warn&&console.warn(t)},n.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},n.almostEquals=function(t,e,i){return Math.abs(t-e)<i},n.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},n.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},n.sign=function(t){return Math.sign?Math.sign(t):(t=+t,0===t||isNaN(t)?t:t>0?1:-1)},n.log10=function(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10},n.toRadians=function(t){return t*(Math.PI/180)},n.toDegrees=function(t){return t*(180/Math.PI)},n.getAngleFromPoint=function(t,e){var i=e.x-t.x,a=e.y-t.y,o=Math.sqrt(i*i+a*a),n=Math.atan2(a,i);return n<-.5*Math.PI&&(n+=2*Math.PI),{angle:n,distance:o}},n.aliasPixel=function(t){return t%2===0?0:.5},n.splineCurve=function(t,e,i,a){var o=t.skip?e:t,n=e,r=i.skip?e:i,s=Math.sqrt(Math.pow(n.x-o.x,2)+Math.pow(n.y-o.y,2)),l=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),h=s/(s+l),d=l/(s+l);h=isNaN(h)?0:h,d=isNaN(d)?0:d;var c=a*h,u=a*d;return{previous:{x:n.x-c*(r.x-o.x),y:n.y-c*(r.y-o.y)},next:{x:n.x+u*(r.x-o.x),y:n.y+u*(r.y-o.y)}}},n.nextItem=function(t,e,i){return i?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},n.previousItem=function(t,e,i){return i?0>=e?t[t.length-1]:t[e-1]:0>=e?t[0]:t[e-1]},n.niceNum=function(t,e){var i,a=Math.floor(n.log10(t)),o=t/Math.pow(10,a);return i=e?1.5>o?1:3>o?2:7>o?5:10:1>=o?1:2>=o?2:5>=o?5:10,i*Math.pow(10,a)};var r=n.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,i=0,a=1;return 0===t?0:1===(t/=1)?1:(i||(i=.3),a<Math.abs(1)?(a=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/a),-(a*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)))},easeOutElastic:function(t){var e=1.70158,i=0,a=1;return 0===t?0:1===(t/=1)?1:(i||(i=.3),a<Math.abs(1)?(a=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/a),a*Math.pow(2,-10*t)*Math.sin((1*t-e)*(2*Math.PI)/i)+1)},easeInOutElastic:function(t){var e=1.70158,i=0,a=1;return 0===t?0:2===(t/=.5)?1:(i||(i=1*(.3*1.5)),a<Math.abs(1)?(a=1,e=i/4):e=i/(2*Math.PI)*Math.asin(1/a),1>t?-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)):a*Math.pow(2,-10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/i)*.5+1)},easeInBack:function(t){var e=1.70158;return 1*(t/=1)*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return 1*((t=t/1-1)*t*((e+1)*t+e)+1)},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:function(t){return 1-r.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};n.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),n.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),n.getRelativePosition=function(t,e){var i,a,o=t.originalEvent||t,r=t.currentTarget||t.srcElement,s=r.getBoundingClientRect(),l=o.touches;l&&l.length>0?(i=l[0].clientX,a=l[0].clientY):(i=o.clientX,a=o.clientY);var h=parseFloat(n.getStyle(r,"padding-left")),d=parseFloat(n.getStyle(r,"padding-top")),c=parseFloat(n.getStyle(r,"padding-right")),u=parseFloat(n.getStyle(r,"padding-bottom")),f=s.right-s.left-h-c,g=s.bottom-s.top-d-u;return i=Math.round((i-s.left-h)/f*r.width/e.currentDevicePixelRatio),a=Math.round((a-s.top-d)/g*r.height/e.currentDevicePixelRatio),{x:i,y:a}},n.addEvent=function(t,e,i){t.addEventListener?t.addEventListener(e,i):t.attachEvent?t.attachEvent("on"+e,i):t["on"+e]=i},n.removeEvent=function(t,e,i){t.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent?t.detachEvent("on"+e,i):t["on"+e]=n.noop},n.bindEvents=function(t,e,i){var a=t.events=t.events||{};n.each(e,function(e){a[e]=function(){i.apply(t,arguments)},n.addEvent(t.chart.canvas,e,a[e])})},n.unbindEvents=function(t,e){var i=t.chart.canvas;n.each(e,function(t,e){n.removeEvent(i,e,t)})},n.getConstraintWidth=function(t){return o(t,"max-width","clientWidth")},n.getConstraintHeight=function(t){return o(t,"max-height","clientHeight")},n.getMaximumWidth=function(t){var e=t.parentNode,i=parseInt(n.getStyle(e,"padding-left"))+parseInt(n.getStyle(e,"padding-right")),a=e.clientWidth-i,o=n.getConstraintWidth(t);return isNaN(o)?a:Math.min(a,o)},n.getMaximumHeight=function(t){var e=t.parentNode,i=parseInt(n.getStyle(e,"padding-top"))+parseInt(n.getStyle(e,"padding-bottom")),a=e.clientHeight-i,o=n.getConstraintHeight(t);return isNaN(o)?a:Math.min(a,o)},n.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},n.retinaScale=function(t){var e=t.ctx,i=t.canvas,a=i.width,o=i.height,n=t.currentDevicePixelRatio=window.devicePixelRatio||1;1!==n&&(i.height=o*n,i.width=a*n,e.scale(n,n),t.originalDevicePixelRatio=t.originalDevicePixelRatio||n),i.style.width=a+"px",i.style.height=o+"px"},n.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},n.fontString=function(t,e,i){return e+" "+t+"px "+i},n.longestText=function(t,e,i,a){a=a||{};var o=a.data=a.data||{},r=a.garbageCollect=a.garbageCollect||[];a.font!==e&&(o=a.data={},r=a.garbageCollect=[],a.font=e),t.font=e;var s=0;n.each(i,function(e){if(void 0!==e&&null!==e){var i=o[e];i||(i=o[e]=t.measureText(e).width,r.push(e)),i>s&&(s=i)}});var l=r.length/2;if(l>i.length){for(var h=0;l>h;h++)delete o[r[h]];r.splice(0,l)}return s},n.drawRoundedRectangle=function(t,e,i,a,o,n){t.beginPath(),t.moveTo(e+n,i),t.lineTo(e+a-n,i),t.quadraticCurveTo(e+a,i,e+a,i+n),t.lineTo(e+a,i+o-n),t.quadraticCurveTo(e+a,i+o,e+a-n,i+o),t.lineTo(e+n,i+o),t.quadraticCurveTo(e,i+o,e,i+o-n),t.lineTo(e,i+n),t.quadraticCurveTo(e,i,e+n,i),t.closePath()},n.color=function(e){return a?a(e instanceof CanvasGradient?t.defaults.global.defaultColor:e):(console.log("Color.js not found!"),e)},n.addResizeListener=function(t,e){var i=document.createElement("iframe"),a="chartjs-hidden-iframe";i.classlist?i.classlist.add(a):i.setAttribute("class",a);var o=i.style;o.width="100%",o.display="block",o.border=0,o.height=0,o.margin=0,o.position="absolute",o.left=0,o.right=0,o.top=0,o.bottom=0,t.insertBefore(i,t.firstChild),(i.contentWindow||i).onresize=function(){e&&e()}},n.removeResizeListener=function(t){var e=t.querySelector(".chartjs-hidden-iframe");e&&e.parentNode.removeChild(e)},n.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===Object.prototype.toString.call(t)},n.arrayEquals=function(t,e){var i,a,o,r;if(!t||!e||t.length!=e.length)return!1;for(i=0,a=t.length;a>i;++i)if(o=t[i],r=e[i],o instanceof Array&&r instanceof Array){if(!n.arrayEquals(o,r))return!1}else if(o!=r)return!1;return!0},n.pushAllIfDefined=function(t,e){"undefined"!=typeof t&&(n.isArray(t)?e.push.apply(e,t):e.push(t))},n.callCallback=function(t,e,i){t&&"function"==typeof t.call&&t.apply(i,e)},n.getHoverColor=function(t){return t instanceof CanvasPattern?t:n.color(t).saturate(.5).darken(.1).rgbString()}}},{"chartjs-color":3}],26:[function(t,e,i){"use strict";e.exports=function(){var t=function(e,i){this.config=i,e.length&&e[0].getContext&&(e=e[0]),e.getContext&&(e=e.getContext("2d")),this.ctx=e,this.canvas=e.canvas,this.width=e.canvas.width||parseInt(t.helpers.getStyle(e.canvas,"width"))||t.helpers.getMaximumWidth(e.canvas),this.height=e.canvas.height||parseInt(t.helpers.getStyle(e.canvas,"height"))||t.helpers.getMaximumHeight(e.canvas),this.aspectRatio=this.width/this.height,(isNaN(this.aspectRatio)||isFinite(this.aspectRatio)===!1)&&(this.aspectRatio=void 0!==i.aspectRatio?i.aspectRatio:2),this.originalCanvasStyleWidth=e.canvas.style.width,this.originalCanvasStyleHeight=e.canvas.style.height,t.helpers.retinaScale(this),i&&(this.controller=new t.Controller(this));var a=this;return t.helpers.addResizeListener(e.canvas.parentNode,function(){a.controller&&a.controller.config.options.responsive&&a.controller.resize()}),this.controller?this.controller:this};return t.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"single",animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var i=0;i<t.data.datasets.length;i++)e.push('<li><span style="background-color:'+t.data.datasets[i].backgroundColor+'"></span>'),t.data.datasets[i].label&&e.push(t.data.datasets[i].label),e.push("</li>");return e.push("</ul>"),e.join("")}}},t}},{}],27:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),t.boxes.push(e)},removeBox:function(t,e){t.boxes&&t.boxes.splice(t.boxes.indexOf(e),1)},update:function(t,i,a){function o(t){var e,i=t.isHorizontal();i?(e=t.update(t.options.fullWidth?p:k,y),S-=e.height):(e=t.update(x,v),k-=e.width),C.push({horizontal:i,minSize:e,box:t})}function n(t){var i=e.findNextWhere(C,function(e){return e.box===t});if(i)if(t.isHorizontal()){var a={left:w,right:M,top:0,bottom:0};t.update(t.options.fullWidth?p:k,m/2,a)}else t.update(i.minSize.width,S)}function r(t){var i=e.findNextWhere(C,function(e){return e.box===t}),a={left:0,right:0,top:D,bottom:A};i&&t.update(i.minSize.width,S,a)}function s(t){t.isHorizontal()?(t.left=t.options.fullWidth?l:w,t.right=t.options.fullWidth?i-l:w+k,t.top=P,t.bottom=P+t.height,P=t.bottom):(t.left=_,t.right=_+t.width,t.top=D,t.bottom=D+S,_=t.right)}if(t){var l=0,h=0,d=e.where(t.boxes,function(t){return"left"===t.options.position}),c=e.where(t.boxes,function(t){return"right"===t.options.position}),u=e.where(t.boxes,function(t){return"top"===t.options.position}),f=e.where(t.boxes,function(t){return"bottom"===t.options.position}),g=e.where(t.boxes,function(t){return"chartArea"===t.options.position});u.sort(function(t,e){return(e.options.fullWidth?1:0)-(t.options.fullWidth?1:0)}),f.sort(function(t,e){return(t.options.fullWidth?1:0)-(e.options.fullWidth?1:0)});var p=i-2*l,m=a-2*h,b=p/2,v=m/2,x=(i-b)/(d.length+c.length),y=(a-v)/(u.length+f.length),k=p,S=m,C=[];e.each(d.concat(c,u,f),o);var w=l,M=l,D=h,A=h;e.each(d.concat(c),n),e.each(d,function(t){w+=t.width}),e.each(c,function(t){M+=t.width}),e.each(u.concat(f),n),e.each(u,function(t){D+=t.height}),e.each(f,function(t){A+=t.height}),e.each(d.concat(c),r),w=l,M=l,D=h,A=h,e.each(d,function(t){w+=t.width}),e.each(c,function(t){M+=t.width}),e.each(u,function(t){D+=t.height}),e.each(f,function(t){A+=t.height});var I=a-D-A,F=i-w-M;(F!==k||I!==S)&&(e.each(d,function(t){t.height=I}),e.each(c,function(t){t.height=I}),e.each(u,function(t){t.options.fullWidth||(t.width=F)}),e.each(f,function(t){t.options.fullWidth||(t.width=F)}),S=I,k=F);var _=l,P=h;e.each(d.concat(u),s),_+=k,P+=S,e.each(c,s),e.each(f,s),t.chartArea={left:w,top:D,right:w+k,bottom:D+S},e.each(g,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,S)})}}}}},{}],28:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=e.noop;t.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,onClick:function(t,e){var i=e.datasetIndex,a=this.chart,o=a.getDatasetMeta(i);o.hidden=null===o.hidden?!a.data.datasets[i].hidden:null,a.update()},labels:{boxWidth:40,padding:10,generateLabels:function(t){var i=t.data;return e.isArray(i.datasets)?i.datasets.map(function(e,i){return{text:e.label,fillStyle:e.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,datasetIndex:i}},this):[]}}},t.Legend=t.Element.extend({initialize:function(t){e.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:i,update:function(t,e,i){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this.margins=i,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeBuildLabels(),this.buildLabels(),this.afterBuildLabels(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:i,beforeSetDimensions:i,setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0,this.minSize={width:0,height:0}},afterSetDimensions:i,beforeBuildLabels:i,buildLabels:function(){this.legendItems=this.options.labels.generateLabels.call(this,this.chart),this.options.reverse&&this.legendItems.reverse()},afterBuildLabels:i,beforeFit:i,fit:function(){var i=this.options,a=i.labels,o=i.display,n=this.ctx,r=t.defaults.global,s=e.getValueOrDefault,l=s(a.fontSize,r.defaultFontSize),h=s(a.fontStyle,r.defaultFontStyle),d=s(a.fontFamily,r.defaultFontFamily),c=e.fontString(l,h,d),u=this.legendHitBoxes=[],f=this.minSize,g=this.isHorizontal();if(g?(f.width=this.maxWidth,f.height=o?10:0):(f.width=o?10:0,f.height=this.maxHeight),o&&g){var p=this.lineWidths=[0],m=this.legendItems.length?l+a.padding:0;n.textAlign="left",n.textBaseline="top",n.font=c,e.each(this.legendItems,function(t,e){var i=a.boxWidth+l/2+n.measureText(t.text).width;p[p.length-1]+i+a.padding>=this.width&&(m+=l+a.padding,p[p.length]=this.left),u[e]={left:0,top:0,width:i,height:l},p[p.length-1]+=i+a.padding},this),f.height+=m}this.width=f.width,this.height=f.height},afterFit:i,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var i=this.options,a=i.labels,o=t.defaults.global,n=o.elements.line,r=this.width,s=this.lineWidths;if(i.display){var l=this.ctx,h={x:this.left+(r-s[0])/2,y:this.top+a.padding,line:0},d=e.getValueOrDefault,c=d(a.fontColor,o.defaultFontColor),u=d(a.fontSize,o.defaultFontSize),f=d(a.fontStyle,o.defaultFontStyle),g=d(a.fontFamily,o.defaultFontFamily),p=e.fontString(u,f,g);if(this.isHorizontal()){l.textAlign="left",l.textBaseline="top",l.lineWidth=.5,l.strokeStyle=c,l.fillStyle=c,l.font=p;var m=a.boxWidth,b=this.legendHitBoxes;e.each(this.legendItems,function(t,e){var i=l.measureText(t.text).width,c=m+u/2+i,f=h.x,g=h.y;f+c>=r&&(g=h.y+=u+a.padding,h.line++,f=h.x=this.left+(r-s[h.line])/2),l.save(),l.fillStyle=d(t.fillStyle,o.defaultColor),l.lineCap=d(t.lineCap,n.borderCapStyle),l.lineDashOffset=d(t.lineDashOffset,n.borderDashOffset),l.lineJoin=d(t.lineJoin,n.borderJoinStyle),l.lineWidth=d(t.lineWidth,n.borderWidth),l.strokeStyle=d(t.strokeStyle,o.defaultColor),l.setLineDash&&l.setLineDash(d(t.lineDash,n.borderDash)),l.strokeRect(f,g,m,u),l.fillRect(f,g,m,u),l.restore(),b[e].left=f,b[e].top=g,l.fillText(t.text,m+u/2+f,g),t.hidden&&(l.beginPath(),l.lineWidth=2,l.moveTo(m+u/2+f,g+u/2),l.lineTo(m+u/2+f+i,g+u/2),l.stroke()),h.x+=c+a.padding},this)}}},handleEvent:function(t){var i=e.getRelativePosition(t,this.chart.chart),a=i.x,o=i.y,n=this.options;if(a>=this.left&&a<=this.right&&o>=this.top&&o<=this.bottom)for(var r=this.legendHitBoxes,s=0;s<r.length;++s){var l=r[s];if(a>=l.left&&a<=l.left+l.width&&o>=l.top&&o<=l.top+l.height){n.onClick&&n.onClick.call(this,t,this.legendItems[s]);break}}}})}},{}],29:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.plugins=[],t.pluginService={register:function(e){var i=t.plugins;-1===i.indexOf(e)&&i.push(e)},remove:function(e){var i=t.plugins,a=i.indexOf(e);-1!==a&&i.splice(a,1)},notifyPlugins:function(i,a,o){e.each(t.plugins,function(t){t[i]&&"function"==typeof t[i]&&t[i].apply(o,a)},o)}};var i=e.noop;t.PluginBase=t.Element.extend({beforeInit:i,afterInit:i,beforeUpdate:i,afterUpdate:i,beforeDraw:i,afterDraw:i,destroy:i})}},{}],30:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.scale={display:!0,position:"left",gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",offsetGridLines:!1},scaleLabel:{labelString:"",display:!1},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:10,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:function(t){return""+t}}},t.Scale=t.Element.extend({beforeUpdate:function(){e.callCallback(this.options.beforeUpdate,[this])},update:function(t,i,a){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=i,this.margins=e.extend({left:0,right:0,top:0,bottom:0},a),this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this.beforeBuildTicks(),this.buildTicks(),this.afterBuildTicks(),this.beforeTickToLabelConversion(),this.convertTicksToLabels(),this.afterTickToLabelConversion(),this.beforeCalculateTickRotation(),this.calculateTickRotation(),this.afterCalculateTickRotation(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:function(){e.callCallback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){e.callCallback(this.options.beforeSetDimensions,[this])},setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0},afterSetDimensions:function(){e.callCallback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){e.callCallback(this.options.beforeDataLimits,[this])},determineDataLimits:e.noop,afterDataLimits:function(){e.callCallback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){e.callCallback(this.options.beforeBuildTicks,[this])},buildTicks:e.noop,afterBuildTicks:function(){e.callCallback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){e.callCallback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){this.ticks=this.ticks.map(function(t,e,i){return this.options.ticks.userCallback?this.options.ticks.userCallback(t,e,i):this.options.ticks.callback(t,e,i)},this)},afterTickToLabelConversion:function(){e.callCallback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){e.callCallback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var i=this.ctx,a=t.defaults.global,o=this.options.ticks,n=e.getValueOrDefault(o.fontSize,a.defaultFontSize),r=e.getValueOrDefault(o.fontStyle,a.defaultFontStyle),s=e.getValueOrDefault(o.fontFamily,a.defaultFontFamily),l=e.fontString(n,r,s);i.font=l;var h,d=i.measureText(this.ticks[0]).width,c=i.measureText(this.ticks[this.ticks.length-1]).width;if(this.labelRotation=o.minRotation||0,this.paddingRight=0,this.paddingLeft=0,this.options.display&&this.isHorizontal()){this.paddingRight=c/2+3,this.paddingLeft=d/2+3,this.longestTextCache||(this.longestTextCache={});for(var u,f,g=e.longestText(i,l,this.ticks,this.longestTextCache),p=g,m=this.getPixelForTick(1)-this.getPixelForTick(0)-6;p>m&&this.labelRotation<o.maxRotation;){ +if(u=Math.cos(e.toRadians(this.labelRotation)),f=Math.sin(e.toRadians(this.labelRotation)),h=u*d,h+n/2>this.yLabelWidth&&(this.paddingLeft=h+n/2),this.paddingRight=n/2,f*g>this.maxHeight){this.labelRotation--;break}this.labelRotation++,p=u*g}}this.margins&&(this.paddingLeft=Math.max(this.paddingLeft-this.margins.left,0),this.paddingRight=Math.max(this.paddingRight-this.margins.right,0))},afterCalculateTickRotation:function(){e.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){e.callCallback(this.options.beforeFit,[this])},fit:function(){var i=this.minSize={width:0,height:0},a=this.options,o=t.defaults.global,n=a.ticks,r=a.scaleLabel,s=a.display,l=this.isHorizontal(),h=e.getValueOrDefault(n.fontSize,o.defaultFontSize),d=e.getValueOrDefault(n.fontStyle,o.defaultFontStyle),c=e.getValueOrDefault(n.fontFamily,o.defaultFontFamily),u=e.fontString(h,d,c),f=e.getValueOrDefault(r.fontSize,o.defaultFontSize),g=e.getValueOrDefault(r.fontStyle,o.defaultFontStyle),p=e.getValueOrDefault(r.fontFamily,o.defaultFontFamily),m=(e.fontString(f,g,p),a.gridLines.tickMarkLength);if(l?i.width=this.isFullWidth()?this.maxWidth-this.margins.left-this.margins.right:this.maxWidth:i.width=s?m:0,l?i.height=s?m:0:i.height=this.maxHeight,r.display&&s&&(l?i.height+=1.5*f:i.width+=1.5*f),n.display&&s){this.longestTextCache||(this.longestTextCache={});var b=e.longestText(this.ctx,u,this.ticks,this.longestTextCache);if(l){this.longestLabelWidth=b;var v=Math.sin(e.toRadians(this.labelRotation))*this.longestLabelWidth+1.5*h;i.height=Math.min(this.maxHeight,i.height+v),this.ctx.font=u;var x=this.ctx.measureText(this.ticks[0]).width,y=this.ctx.measureText(this.ticks[this.ticks.length-1]).width,k=Math.cos(e.toRadians(this.labelRotation)),S=Math.sin(e.toRadians(this.labelRotation));this.paddingLeft=0!==this.labelRotation?k*x+3:x/2+3,this.paddingRight=0!==this.labelRotation?S*(h/2)+3:y/2+3}else{var C=this.maxWidth-i.width,w=n.mirror;w?b=0:b+=this.options.ticks.padding,C>b?i.width+=b:i.width=this.maxWidth,this.paddingTop=h/2,this.paddingBottom=h/2}}this.margins&&(this.paddingLeft=Math.max(this.paddingLeft-this.margins.left,0),this.paddingTop=Math.max(this.paddingTop-this.margins.top,0),this.paddingRight=Math.max(this.paddingRight-this.margins.right,0),this.paddingBottom=Math.max(this.paddingBottom-this.margins.bottom,0)),this.width=i.width,this.height=i.height},afterFit:function(){e.callCallback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function i(t){return null===t||"undefined"==typeof t?NaN:"number"==typeof t&&isNaN(t)?NaN:"object"==typeof t?t instanceof Date||t.isValid?t:i(this.isHorizontal()?t.x:t.y):t},getLabelForIndex:e.noop,getPixelForValue:e.noop,getValueForPixel:e.noop,getPixelForTick:function(t,e){if(this.isHorizontal()){var i=this.width-(this.paddingLeft+this.paddingRight),a=i/Math.max(this.ticks.length-(this.options.gridLines.offsetGridLines?0:1),1),o=a*t+this.paddingLeft;e&&(o+=a/2);var n=this.left+Math.round(o);return n+=this.isFullWidth()?this.margins.left:0}var r=this.height-(this.paddingTop+this.paddingBottom);return this.top+t*(r/(this.ticks.length-1))},getPixelForDecimal:function(t){if(this.isHorizontal()){var e=this.width-(this.paddingLeft+this.paddingRight),i=e*t+this.paddingLeft,a=this.left+Math.round(i);return a+=this.isFullWidth()?this.margins.left:0}return this.top+t*this.height},getBasePixel:function(){var t=this,e=t.min,i=t.max;return t.getPixelForValue(t.beginAtZero?0:0>e&&0>i?i:e>0&&i>0?e:0)},draw:function(i){var a=this.options;if(a.display){var o,n,r,s,l,h=this.ctx,d=t.defaults.global,c=a.ticks,u=a.gridLines,f=a.scaleLabel,g=0!==this.labelRotation,p=c.autoSkip;c.maxTicksLimit&&(l=c.maxTicksLimit);var m=e.getValueOrDefault(c.fontColor,d.defaultFontColor),b=e.getValueOrDefault(c.fontSize,d.defaultFontSize),v=e.getValueOrDefault(c.fontStyle,d.defaultFontStyle),x=e.getValueOrDefault(c.fontFamily,d.defaultFontFamily),y=e.fontString(b,v,x),k=u.tickMarkLength,S=e.getValueOrDefault(f.fontColor,d.defaultFontColor),C=e.getValueOrDefault(f.fontSize,d.defaultFontSize),w=e.getValueOrDefault(f.fontStyle,d.defaultFontStyle),M=e.getValueOrDefault(f.fontFamily,d.defaultFontFamily),D=e.fontString(C,w,M),A=e.toRadians(this.labelRotation),I=Math.cos(A),F=(Math.sin(A),this.longestLabelWidth*I);if(h.fillStyle=m,this.isHorizontal()){o=!0;var _="bottom"===a.position?this.top:this.bottom-k,P="bottom"===a.position?this.top+k:this.bottom;if(n=!1,g&&(F/=2),(F+c.autoSkipPadding)*this.ticks.length>this.width-(this.paddingLeft+this.paddingRight)&&(n=1+Math.floor((F+c.autoSkipPadding)*this.ticks.length/(this.width-(this.paddingLeft+this.paddingRight)))),l&&this.ticks.length>l)for(;!n||this.ticks.length/(n||1)>l;)n||(n=1),n+=1;p||(n=!1),e.each(this.ticks,function(t,r){var s=this.ticks.length===r+1,l=n>1&&r%n>0||r%n===0&&r+n>=this.ticks.length;if((!l||s)&&void 0!==t&&null!==t){var d=this.getPixelForTick(r),f=this.getPixelForTick(r,u.offsetGridLines);u.display&&(r===("undefined"!=typeof this.zeroLineIndex?this.zeroLineIndex:0)?(h.lineWidth=u.zeroLineWidth,h.strokeStyle=u.zeroLineColor,o=!0):o&&(h.lineWidth=u.lineWidth,h.strokeStyle=u.color,o=!1),d+=e.aliasPixel(h.lineWidth),h.beginPath(),u.drawTicks&&(h.moveTo(d,_),h.lineTo(d,P)),u.drawOnChartArea&&(h.moveTo(d,i.top),h.lineTo(d,i.bottom)),h.stroke()),c.display&&(h.save(),h.translate(f+c.labelOffset,g?this.top+12:"top"===a.position?this.bottom-k:this.top+k),h.rotate(-1*A),h.font=y,h.textAlign=g?"right":"center",h.textBaseline=g?"middle":"top"===a.position?"bottom":"top",h.fillText(t,0,0),h.restore())}},this),f.display&&(h.textAlign="center",h.textBaseline="middle",h.fillStyle=S,h.font=D,r=this.left+(this.right-this.left)/2,s="bottom"===a.position?this.bottom-C/2:this.top+C/2,h.fillText(f.labelString,r,s))}else{o=!0;var T="right"===a.position?this.left:this.right-5,V="right"===a.position?this.left+5:this.right;if(e.each(this.ticks,function(t,n){if(void 0!==t&&null!==t){var r=this.getPixelForTick(n);if(u.display&&(n===("undefined"!=typeof this.zeroLineIndex?this.zeroLineIndex:0)?(h.lineWidth=u.zeroLineWidth,h.strokeStyle=u.zeroLineColor,o=!0):o&&(h.lineWidth=u.lineWidth,h.strokeStyle=u.color,o=!1),r+=e.aliasPixel(h.lineWidth),h.beginPath(),u.drawTicks&&(h.moveTo(T,r),h.lineTo(V,r)),u.drawOnChartArea&&(h.moveTo(i.left,r),h.lineTo(i.right,r)),h.stroke()),c.display){var s,l=this.getPixelForTick(n,u.offsetGridLines);h.save(),"left"===a.position?c.mirror?(s=this.right+c.padding,h.textAlign="left"):(s=this.right-c.padding,h.textAlign="right"):c.mirror?(s=this.left-c.padding,h.textAlign="right"):(s=this.left+c.padding,h.textAlign="left"),h.translate(s,l+c.labelOffset),h.rotate(-1*A),h.font=y,h.textBaseline="middle",h.fillText(t,0,0),h.restore()}}},this),f.display){r="left"===a.position?this.left+C/2:this.right-C/2,s=this.top+(this.bottom-this.top)/2;var R="left"===a.position?-.5*Math.PI:.5*Math.PI;h.save(),h.translate(r,s),h.rotate(R),h.textAlign="center",h.fillStyle=S,h.font=D,h.textBaseline="middle",h.fillText(f.labelString,0,0),h.restore()}}if(u.drawBorder){h.lineWidth=u.lineWidth,h.strokeStyle=u.color;var O=this.left,W=this.right,L=this.top,B=this.bottom,z=e.aliasPixel(h.lineWidth);this.isHorizontal()?(L=B="top"===a.position?this.bottom:this.top,L+=z,B+=z):(O=W="left"===a.position?this.right:this.left,O+=z,W+=z),h.beginPath(),h.moveTo(O,L),h.lineTo(W,B),h.stroke()}}}})}},{}],31:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,i,a){this.constructors[t]=i,this.defaults[t]=e.clone(a)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(i){return this.defaults.hasOwnProperty(i)?e.scaleMerge(t.defaults.scale,this.defaults[i]):{}},updateScaleDefaults:function(t,i){var a=this.defaults;a.hasOwnProperty(t)&&(a[t]=e.extend(a[t],i))},addScalesToLayout:function(i){e.each(i.scales,function(e){t.layoutService.addBox(i,e)})}}}},{}],32:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.title={display:!1,position:"top",fullWidth:!0,fontStyle:"bold",padding:10,text:""};var i=e.noop;t.Title=t.Element.extend({initialize:function(i){e.extend(this,i),this.options=e.configMerge(t.defaults.global.title,i.options),this.legendHitBoxes=[]},beforeUpdate:i,update:function(t,e,i){return this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this.margins=i,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this.beforeBuildLabels(),this.buildLabels(),this.afterBuildLabels(),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate(),this.minSize},afterUpdate:i,beforeSetDimensions:i,setDimensions:function(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0,this.minSize={width:0,height:0}},afterSetDimensions:i,beforeBuildLabels:i,buildLabels:i,afterBuildLabels:i,beforeFit:i,fit:function(){var i=this,a=(i.ctx,e.getValueOrDefault),o=i.options,n=t.defaults.global,r=o.display,s=a(o.fontSize,n.defaultFontSize),l=i.minSize;i.isHorizontal()?(l.width=i.maxWidth,l.height=r?s+2*o.padding:0):(l.width=r?s+2*o.padding:0,l.height=i.maxHeight),i.width=l.width,i.height=l.height},afterFit:i,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var i=this,a=i.ctx,o=e.getValueOrDefault,n=i.options,r=t.defaults.global;if(n.display){var s,l,h=o(n.fontSize,r.defaultFontSize),d=o(n.fontStyle,r.defaultFontStyle),c=o(n.fontFamily,r.defaultFontFamily),u=e.fontString(h,d,c),f=0,g=i.top,p=i.left,m=i.bottom,b=i.right;a.fillStyle=o(n.fontColor,r.defaultFontColor),a.font=u,i.isHorizontal()?(s=p+(b-p)/2,l=g+(m-g)/2):(s="left"===n.position?p+h/2:b-h/2,l=g+(m-g)/2,f=Math.PI*("left"===n.position?-.5:.5)),a.save(),a.translate(s,l),a.rotate(f),a.textAlign="center",a.textBaseline="middle",a.fillText(n.text,0,0),a.restore()}}})}},{}],33:[function(t,e,i){"use strict";e.exports=function(t){function e(t,e){return e&&(i.isArray(e)?t=t.concat(e):t.push(e)),t}var i=t.helpers;t.defaults.global.tooltips={enabled:!0,custom:null,mode:"single",backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleColor:"#fff",titleAlign:"left",bodySpacing:2,bodyColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,yAlign:"center",xAlign:"center",caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",callbacks:{beforeTitle:i.noop,title:function(t,e){var i="";return t.length>0&&(t[0].xLabel?i=t[0].xLabel:e.labels.length>0&&t[0].index<e.labels.length&&(i=e.labels[t[0].index])),i},afterTitle:i.noop,beforeBody:i.noop,beforeLabel:i.noop,label:function(t,e){var i=e.datasets[t.datasetIndex].label||"";return i+": "+t.yLabel},afterLabel:i.noop,afterBody:i.noop,beforeFooter:i.noop,footer:i.noop,afterFooter:i.noop}},t.Tooltip=t.Element.extend({initialize:function(){var e=t.defaults.global,a=this._options,o=a.tooltips;i.extend(this,{_model:{xPadding:o.xPadding,yPadding:o.yPadding,xAlign:o.yAlign,yAlign:o.xAlign,bodyColor:o.bodyColor,_bodyFontFamily:i.getValueOrDefault(o.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:i.getValueOrDefault(o.bodyFontStyle,e.defaultFontStyle),_bodyAlign:o.bodyAlign,bodyFontSize:i.getValueOrDefault(o.bodyFontSize,e.defaultFontSize),bodySpacing:o.bodySpacing,titleColor:o.titleColor,_titleFontFamily:i.getValueOrDefault(o.titleFontFamily,e.defaultFontFamily),_titleFontStyle:i.getValueOrDefault(o.titleFontStyle,e.defaultFontStyle),titleFontSize:i.getValueOrDefault(o.titleFontSize,e.defaultFontSize),_titleAlign:o.titleAlign,titleSpacing:o.titleSpacing,titleMarginBottom:o.titleMarginBottom,footerColor:o.footerColor,_footerFontFamily:i.getValueOrDefault(o.footerFontFamily,e.defaultFontFamily),_footerFontStyle:i.getValueOrDefault(o.footerFontStyle,e.defaultFontStyle),footerFontSize:i.getValueOrDefault(o.footerFontSize,e.defaultFontSize),_footerAlign:o.footerAlign,footerSpacing:o.footerSpacing,footerMarginTop:o.footerMarginTop,caretSize:o.caretSize,cornerRadius:o.cornerRadius,backgroundColor:o.backgroundColor,opacity:0,legendColorBackground:o.multiKeyBackground}})},getTitle:function(){var t=this._options.tooltips.callbacks.beforeTitle.apply(this,arguments),i=this._options.tooltips.callbacks.title.apply(this,arguments),a=this._options.tooltips.callbacks.afterTitle.apply(this,arguments),o=[];return o=e(o,t),o=e(o,i),o=e(o,a)},getBeforeBody:function(){var t=this._options.tooltips.callbacks.beforeBody.apply(this,arguments);return i.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var a=[];return i.each(t,function(t){i.pushAllIfDefined(this._options.tooltips.callbacks.beforeLabel.call(this,t,e),a),i.pushAllIfDefined(this._options.tooltips.callbacks.label.call(this,t,e),a),i.pushAllIfDefined(this._options.tooltips.callbacks.afterLabel.call(this,t,e),a)},this),a},getAfterBody:function(){var t=this._options.tooltips.callbacks.afterBody.apply(this,arguments);return i.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this._options.tooltips.callbacks.beforeFooter.apply(this,arguments),i=this._options.tooltips.callbacks.footer.apply(this,arguments),a=this._options.tooltips.callbacks.afterFooter.apply(this,arguments),o=[];return o=e(o,t),o=e(o,i),o=e(o,a)},getAveragePosition:function(t){if(!t.length)return!1;var e=[],a=[];i.each(t,function(t){if(t&&t.hasValue()){var i=t.tooltipPosition();e.push(i.x),a.push(i.y)}});for(var o=0,n=0,r=0;r<e.length;r++)o+=e[r],n+=a[r];return{x:Math.round(o/e.length),y:Math.round(n/e.length)}},update:function(t){if(this._active.length){this._model.opacity=1;var e,a=this._active[0],o=[],n=[];if("single"===this._options.tooltips.mode){var r=a._yScale||a._scale;n.push({xLabel:a._xScale?a._xScale.getLabelForIndex(a._index,a._datasetIndex):"",yLabel:r?r.getLabelForIndex(a._index,a._datasetIndex):"",index:a._index,datasetIndex:a._datasetIndex}),e=this.getAveragePosition(this._active)}else i.each(this._data.datasets,function(t,e){if(this._chartInstance.isDatasetVisible(e)){var i=this._chartInstance.getDatasetMeta(e),o=i.data[a._index];if(o){var r=a._yScale||a._scale;n.push({xLabel:o._xScale?o._xScale.getLabelForIndex(o._index,o._datasetIndex):"",yLabel:r?r.getLabelForIndex(o._index,o._datasetIndex):"",index:a._index,datasetIndex:e})}}},this),i.each(this._active,function(t){t&&o.push({borderColor:t._view.borderColor,backgroundColor:t._view.backgroundColor})},null),e=this.getAveragePosition(this._active);i.extend(this._model,{title:this.getTitle(n,this._data),beforeBody:this.getBeforeBody(n,this._data),body:this.getBody(n,this._data),afterBody:this.getAfterBody(n,this._data),footer:this.getFooter(n,this._data)}),i.extend(this._model,{x:Math.round(e.x),y:Math.round(e.y),caretPadding:i.getValueOrDefault(e.padding,2),labelColors:o});var s=this.getTooltipSize(this._model);this.determineAlignment(s),i.extend(this._model,this.getBackgroundPoint(this._model,s))}else this._model.opacity=0;return t&&this._options.tooltips.custom&&this._options.tooltips.custom.call(this,this._model),this},getTooltipSize:function(t){var e=this._chart.ctx,a={height:2*t.yPadding,width:0},o=t.body.length+t.beforeBody.length+t.afterBody.length;return a.height+=t.title.length*t.titleFontSize,a.height+=(t.title.length-1)*t.titleSpacing,a.height+=t.title.length?t.titleMarginBottom:0,a.height+=o*t.bodyFontSize,a.height+=o?(o-1)*t.bodySpacing:0,a.height+=t.footer.length?t.footerMarginTop:0,a.height+=t.footer.length*t.footerFontSize,a.height+=t.footer.length?(t.footer.length-1)*t.footerSpacing:0,e.font=i.fontString(t.titleFontSize,t._titleFontStyle,t._titleFontFamily),i.each(t.title,function(t){a.width=Math.max(a.width,e.measureText(t).width)}),e.font=i.fontString(t.bodyFontSize,t._bodyFontStyle,t._bodyFontFamily),i.each(t.beforeBody.concat(t.afterBody),function(t){a.width=Math.max(a.width,e.measureText(t).width)}),i.each(t.body,function(i){a.width=Math.max(a.width,e.measureText(i).width+("single"!==this._options.tooltips.mode?t.bodyFontSize+2:0))},this),e.font=i.fontString(t.footerFontSize,t._footerFontStyle,t._footerFontFamily),i.each(t.footer,function(t){a.width=Math.max(a.width,e.measureText(t).width)}),a.width+=2*t.xPadding,a},determineAlignment:function(t){this._model.y<t.height?this._model.yAlign="top":this._model.y>this._chart.height-t.height&&(this._model.yAlign="bottom");var e,i,a,o,n,r=this,s=(this._chartInstance.chartArea.left+this._chartInstance.chartArea.right)/2,l=(this._chartInstance.chartArea.top+this._chartInstance.chartArea.bottom)/2;"center"===this._model.yAlign?(e=function(t){return s>=t},i=function(t){return t>s}):(e=function(e){return e<=t.width/2},i=function(e){return e>=r._chart.width-t.width/2}),a=function(e){return e+t.width>r._chart.width},o=function(e){return e-t.width<0},n=function(t){return l>=t?"top":"bottom"},e(this._model.x)?(this._model.xAlign="left",a(this._model.x)&&(this._model.xAlign="center",this._model.yAlign=n(this._model.y))):i(this._model.x)&&(this._model.xAlign="right",o(this._model.x)&&(this._model.xAlign="center",this._model.yAlign=n(this._model.y)))},getBackgroundPoint:function(t,e){var i={x:t.x,y:t.y};return"right"===t.xAlign?i.x-=e.width:"center"===t.xAlign&&(i.x-=e.width/2),"top"===t.yAlign?i.y+=t.caretPadding+t.caretSize:"bottom"===t.yAlign?i.y-=e.height+t.caretPadding+t.caretSize:i.y-=e.height/2,"center"===t.yAlign?"left"===t.xAlign?i.x+=t.caretPadding+t.caretSize:"right"===t.xAlign&&(i.x-=t.caretPadding+t.caretSize):"left"===t.xAlign?i.x-=t.cornerRadius+t.caretPadding:"right"===t.xAlign&&(i.x+=t.cornerRadius+t.caretPadding),i},drawCaret:function(t,e,a,o){var n,r,s,l,h,d,c=this._view,u=this._chart.ctx;"center"===c.yAlign?("left"===c.xAlign?(n=t.x,r=n-c.caretSize,s=n):(n=t.x+e.width,r=n+c.caretSize,s=n),h=t.y+e.height/2,l=h-c.caretSize,d=h+c.caretSize):("left"===c.xAlign?(n=t.x+c.cornerRadius,r=n+c.caretSize,s=r+c.caretSize):"right"===c.xAlign?(n=t.x+e.width-c.cornerRadius,r=n-c.caretSize,s=r-c.caretSize):(r=t.x+e.width/2,n=r-c.caretSize,s=r+c.caretSize),"top"===c.yAlign?(l=t.y,h=l-c.caretSize,d=l):(l=t.y+e.height,h=l+c.caretSize,d=l));var f=i.color(c.backgroundColor);u.fillStyle=f.alpha(a*f.alpha()).rgbString(),u.beginPath(),u.moveTo(n,l),u.lineTo(r,h),u.lineTo(s,d),u.closePath(),u.fill()},drawTitle:function(t,e,a,o){if(e.title.length){a.textAlign=e._titleAlign,a.textBaseline="top";var n=i.color(e.titleColor);a.fillStyle=n.alpha(o*n.alpha()).rgbString(),a.font=i.fontString(e.titleFontSize,e._titleFontStyle,e._titleFontFamily),i.each(e.title,function(i,o){a.fillText(i,t.x,t.y),t.y+=e.titleFontSize+e.titleSpacing,o+1===e.title.length&&(t.y+=e.titleMarginBottom-e.titleSpacing)})}},drawBody:function(t,e,a,o){a.textAlign=e._bodyAlign,a.textBaseline="top";var n=i.color(e.bodyColor);a.fillStyle=n.alpha(o*n.alpha()).rgbString(),a.font=i.fontString(e.bodyFontSize,e._bodyFontStyle,e._bodyFontFamily),i.each(e.beforeBody,function(i){a.fillText(i,t.x,t.y),t.y+=e.bodyFontSize+e.bodySpacing}),i.each(e.body,function(n,r){"single"!==this._options.tooltips.mode&&(a.fillStyle=i.color(e.legendColorBackground).alpha(o).rgbaString(),a.fillRect(t.x,t.y,e.bodyFontSize,e.bodyFontSize),a.strokeStyle=i.color(e.labelColors[r].borderColor).alpha(o).rgbaString(),a.strokeRect(t.x,t.y,e.bodyFontSize,e.bodyFontSize),a.fillStyle=i.color(e.labelColors[r].backgroundColor).alpha(o).rgbaString(),a.fillRect(t.x+1,t.y+1,e.bodyFontSize-2,e.bodyFontSize-2),a.fillStyle=i.color(e.bodyColor).alpha(o).rgbaString()),a.fillText(n,t.x+("single"!==this._options.tooltips.mode?e.bodyFontSize+2:0),t.y),t.y+=e.bodyFontSize+e.bodySpacing},this),i.each(e.afterBody,function(i){a.fillText(i,t.x,t.y),t.y+=e.bodyFontSize}),t.y-=e.bodySpacing},drawFooter:function(t,e,a,o){if(e.footer.length){t.y+=e.footerMarginTop,a.textAlign=e._footerAlign,a.textBaseline="top";var n=i.color(e.footerColor);a.fillStyle=n.alpha(o*n.alpha()).rgbString(),a.font=i.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),i.each(e.footer,function(i){a.fillText(i,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})}},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var a=e.caretPadding,o=this.getTooltipSize(e),n={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;if(this._options.tooltips.enabled){var s=i.color(e.backgroundColor);t.fillStyle=s.alpha(r*s.alpha()).rgbString(),i.drawRoundedRectangle(t,n.x,n.y,o.width,o.height,e.cornerRadius),t.fill(),this.drawCaret(n,o,r,a),n.x+=e.xPadding,n.y+=e.yPadding,this.drawTitle(n,e,t,r),this.drawBody(n,e,t,r),this.drawFooter(n,e,t,r)}}}})}},{}],34:[function(t,e,i){"use strict";e.exports=function(t,e){var i=t.helpers,a=t.defaults.global;a.elements.arc={backgroundColor:a.defaultColor,borderColor:"#fff",borderWidth:2},t.elements.Arc=t.Element.extend({inLabelRange:function(t){var e=this._view;return e?Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2):!1},inRange:function(t,e){var a=this._view;if(a){for(var o=i.getAngleFromPoint(a,{x:t,y:e}),n=o.angle,r=o.distance,s=a.startAngle,l=a.endAngle;s>l;)l+=2*Math.PI;for(;n>l;)n-=2*Math.PI;for(;s>n;)n+=2*Math.PI;var h=n>=s&&l>=n,d=r>=a.innerRadius&&r<=a.outerRadius;return h&&d}return!1},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,i=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*i,y:t.y+Math.sin(e)*i}},draw:function(){var t=this._chart.ctx,e=this._view,i=e.startAngle,a=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,i,a),t.arc(e.x,e.y,e.innerRadius,a,i,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}},{}],35:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=t.defaults.global;t.defaults.global.elements.line={tension:.4,backgroundColor:i.defaultColor,borderWidth:3,borderColor:i.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",fill:!0},t.elements.Line=t.Element.extend({lineToNextPoint:function(t,e,i,a,o){var n=this._chart.ctx;e._view.skip?a.call(this,t,e,i):t._view.skip?o.call(this,t,e,i):0===e._view.tension?n.lineTo(e._view.x,e._view.y):n.bezierCurveTo(t._view.controlPointNextX,t._view.controlPointNextY,e._view.controlPointPreviousX,e._view.controlPointPreviousY,e._view.x,e._view.y)},draw:function(){function t(t){r._view.skip||s._view.skip?t&&n.lineTo(a._view.scaleZero.x,a._view.scaleZero.y):n.bezierCurveTo(s._view.controlPointNextX,s._view.controlPointNextY,r._view.controlPointPreviousX,r._view.controlPointPreviousY,r._view.x,r._view.y)}var a=this,o=this._view,n=this._chart.ctx,r=this._children[0],s=this._children[this._children.length-1];n.save(),this._children.length>0&&o.fill&&(n.beginPath(),e.each(this._children,function(t,i){var a=e.previousItem(this._children,i),r=e.nextItem(this._children,i);0===i?(this._loop?n.moveTo(o.scaleZero.x,o.scaleZero.y):n.moveTo(t._view.x,o.scaleZero),t._view.skip?this._loop||n.moveTo(r._view.x,this._view.scaleZero):n.lineTo(t._view.x,t._view.y)):this.lineToNextPoint(a,t,r,function(t,e,i){this._loop?n.lineTo(this._view.scaleZero.x,this._view.scaleZero.y):(n.lineTo(t._view.x,this._view.scaleZero),n.moveTo(i._view.x,this._view.scaleZero))},function(t,e){n.lineTo(e._view.x,e._view.y)})},this),this._loop?t(!0):(n.lineTo(this._children[this._children.length-1]._view.x,o.scaleZero),n.lineTo(this._children[0]._view.x,o.scaleZero)),n.fillStyle=o.backgroundColor||i.defaultColor,n.closePath(),n.fill());var l=i.elements.line;n.lineCap=o.borderCapStyle||l.borderCapStyle,n.setLineDash&&n.setLineDash(o.borderDash||l.borderDash),n.lineDashOffset=o.borderDashOffset||l.borderDashOffset,n.lineJoin=o.borderJoinStyle||l.borderJoinStyle,n.lineWidth=o.borderWidth||l.borderWidth,n.strokeStyle=o.borderColor||i.defaultColor,n.beginPath(),e.each(this._children,function(t,i){var a=e.previousItem(this._children,i),o=e.nextItem(this._children,i);0===i?n.moveTo(t._view.x,t._view.y):this.lineToNextPoint(a,t,o,function(t,e,i){n.moveTo(i._view.x,i._view.y)},function(t,e){n.moveTo(e._view.x,e._view.y)})},this),this._loop&&this._children.length>0&&t(),n.stroke(),n.restore()}})}},{}],36:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=t.defaults.global,a=i.defaultColor;i.elements.point={radius:3,pointStyle:"circle",backgroundColor:a,borderWidth:1,borderColor:a,hitRadius:1,hoverRadius:4,hoverBorderWidth:1},t.elements.Point=t.Element.extend({inRange:function(t,e){var i=this._view;return i?Math.pow(t-i.x,2)+Math.pow(e-i.y,2)<Math.pow(i.hitRadius+i.radius,2):!1},inLabelRange:function(t){var e=this._view;return e?Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2):!1},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(){var t,o,n,r,s,l,h=this._view,d=this._chart.ctx,c=h.pointStyle,u=h.radius,f=h.x,g=h.y;if(!h.skip){if("object"==typeof c&&(t=c.toString(),"[object HTMLImageElement]"===t||"[object HTMLCanvasElement]"===t))return void d.drawImage(c,f-c.width/2,g-c.height/2);if(!(isNaN(u)||0>=u)){switch(d.strokeStyle=h.borderColor||a,d.lineWidth=e.getValueOrDefault(h.borderWidth,i.elements.point.borderWidth),d.fillStyle=h.backgroundColor||a,c){default:d.beginPath(),d.arc(f,g,u,0,2*Math.PI),d.closePath(),d.fill();break;case"triangle":d.beginPath(),o=3*u/Math.sqrt(3),s=o*Math.sqrt(3)/2,d.moveTo(f-o/2,g+s/3),d.lineTo(f+o/2,g+s/3),d.lineTo(f,g-2*s/3),d.closePath(),d.fill();break;case"rect":l=1/Math.SQRT2*u,d.fillRect(f-l,g-l,2*l,2*l),d.strokeRect(f-l,g-l,2*l,2*l);break;case"rectRot":d.translate(f,g),d.rotate(Math.PI/4),l=1/Math.SQRT2*u,d.fillRect(-l,-l,2*l,2*l),d.strokeRect(-l,-l,2*l,2*l),d.setTransform(1,0,0,1,0,0);break;case"cross":d.beginPath(),d.moveTo(f,g+u),d.lineTo(f,g-u),d.moveTo(f-u,g),d.lineTo(f+u,g),d.closePath();break;case"crossRot":d.beginPath(),n=Math.cos(Math.PI/4)*u,r=Math.sin(Math.PI/4)*u,d.moveTo(f-n,g-r),d.lineTo(f+n,g+r),d.moveTo(f-n,g+r),d.lineTo(f+n,g-r),d.closePath();break;case"star":d.beginPath(),d.moveTo(f,g+u),d.lineTo(f,g-u),d.moveTo(f-u,g),d.lineTo(f+u,g),n=Math.cos(Math.PI/4)*u,r=Math.sin(Math.PI/4)*u,d.moveTo(f-n,g-r),d.lineTo(f+n,g+r),d.moveTo(f-n,g+r),d.lineTo(f+n,g-r),d.closePath();break;case"line":d.beginPath(),d.moveTo(f-u,g),d.lineTo(f+u,g),d.closePath();break;case"dash":d.beginPath(),d.moveTo(f,g),d.lineTo(f+u,g),d.closePath()}d.stroke()}}}})}},{}],37:[function(t,e,i){"use strict";e.exports=function(t){var e=(t.helpers,t.defaults.global);e.elements.rectangle={backgroundColor:e.defaultColor,borderWidth:0,borderColor:e.defaultColor,borderSkipped:"bottom"},t.elements.Rectangle=t.Element.extend({draw:function(){function t(t){return l[(d+t)%4]}var e=this._chart.ctx,i=this._view,a=i.width/2,o=i.x-a,n=i.x+a,r=i.base-(i.base-i.y),s=i.borderWidth/2;i.borderWidth&&(o+=s,n-=s,r+=s),e.beginPath(),e.fillStyle=i.backgroundColor,e.strokeStyle=i.borderColor,e.lineWidth=i.borderWidth;var l=[[o,i.base],[o,r],[n,r],[n,i.base]],h=["bottom","left","top","right"],d=h.indexOf(i.borderSkipped,0);-1===d&&(d=0),e.moveTo.apply(e,t(0));for(var c=1;4>c;c++)e.lineTo.apply(e,t(c));e.fill(),i.borderWidth&&e.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=this._view;return i?i.y<i.base?t>=i.x-i.width/2&&t<=i.x+i.width/2&&e>=i.y&&e<=i.base:t>=i.x-i.width/2&&t<=i.x+i.width/2&&e>=i.base&&e<=i.y:!1},inLabelRange:function(t){var e=this._view;return e?t>=e.x-e.width/2&&t<=e.x+e.width/2:!1},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}},{}],38:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i={position:"bottom"},a=t.Scale.extend({determineDataLimits:function(){this.minIndex=0,this.maxIndex=this.chart.data.labels.length-1;var t;void 0!==this.options.ticks.min&&(t=e.indexOf(this.chart.data.labels,this.options.ticks.min),this.minIndex=-1!==t?t:this.minIndex),void 0!==this.options.ticks.max&&(t=e.indexOf(this.chart.data.labels,this.options.ticks.max),this.maxIndex=-1!==t?t:this.maxIndex),this.min=this.chart.data.labels[this.minIndex],this.max=this.chart.data.labels[this.maxIndex]},buildTicks:function(t){this.ticks=0===this.minIndex&&this.maxIndex===this.chart.data.labels.length-1?this.chart.data.labels:this.chart.data.labels.slice(this.minIndex,this.maxIndex+1)},getLabelForIndex:function(t,e){return this.ticks[t]},getPixelForValue:function(t,e,i,a){var o=Math.max(this.maxIndex+1-this.minIndex-(this.options.gridLines.offsetGridLines?0:1),1);if(this.isHorizontal()){var n=this.width-(this.paddingLeft+this.paddingRight),r=n/o,s=r*(e-this.minIndex)+this.paddingLeft;return this.options.gridLines.offsetGridLines&&a&&(s+=r/2),this.left+Math.round(s)}var l=this.height-(this.paddingTop+this.paddingBottom),h=l/o,d=h*(e-this.minIndex)+this.paddingTop;return this.options.gridLines.offsetGridLines&&a&&(d+=h/2),this.top+Math.round(d)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null,e)},getValueForPixel:function(t){var e,i=Math.max(this.ticks.length-(this.options.gridLines.offsetGridLines?0:1),1),a=this.isHorizontal(),o=a?this.width-(this.paddingLeft+this.paddingRight):this.height-(this.paddingTop+this.paddingBottom),n=o/i;return this.options.gridLines.offsetGridLines&&(t-=n/2),t-=a?this.paddingLeft:this.paddingTop,e=0>=t?0:Math.round(t/n)}});t.scaleService.registerScaleType("category",a,i)}},{}],39:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i={position:"left",ticks:{callback:function(t,i,a){var o=a.length>3?a[2]-a[1]:a[1]-a[0];Math.abs(o)>1&&t!==Math.floor(t)&&(o=t-Math.floor(t));var n=e.log10(Math.abs(o)),r="";if(0!==t){var s=-1*Math.floor(n);s=Math.max(Math.min(s,20),0),r=t.toFixed(s)}else r="0";return r}}},a=t.Scale.extend({determineDataLimits:function(){function t(t){return l?t.xAxisID===i.id:t.yAxisID===i.id}var i=this,a=i.options,o=a.ticks,n=i.chart,r=n.data,s=r.datasets,l=i.isHorizontal();if(i.min=null,i.max=null,a.stacked){var h={},d=!1,c=!1;e.each(s,function(o,r){var s=n.getDatasetMeta(r);void 0===h[s.type]&&(h[s.type]={positiveValues:[],negativeValues:[]});var l=h[s.type].positiveValues,u=h[s.type].negativeValues;n.isDatasetVisible(r)&&t(s)&&e.each(o.data,function(t,e){var o=+i.getRightValue(t);isNaN(o)||s.data[e].hidden||(l[e]=l[e]||0,u[e]=u[e]||0,a.relativePoints?l[e]=100:0>o?(c=!0,u[e]+=o):(d=!0,l[e]+=o))})}),e.each(h,function(t){var a=t.positiveValues.concat(t.negativeValues),o=e.min(a),n=e.max(a);i.min=null===i.min?o:Math.min(i.min,o),i.max=null===i.max?n:Math.max(i.max,n)})}else e.each(s,function(a,o){var r=n.getDatasetMeta(o);n.isDatasetVisible(o)&&t(r)&&e.each(a.data,function(t,e){var a=+i.getRightValue(t);isNaN(a)||r.data[e].hidden||(null===i.min?i.min=a:a<i.min&&(i.min=a),null===i.max?i.max=a:a>i.max&&(i.max=a))})});if(o.beginAtZero){var u=e.sign(i.min),f=e.sign(i.max);0>u&&0>f?i.max=0:u>0&&f>0&&(i.min=0)}void 0!==o.min?i.min=o.min:void 0!==o.suggestedMin&&(i.min=Math.min(i.min,o.suggestedMin)),void 0!==o.max?i.max=o.max:void 0!==o.suggestedMax&&(i.max=Math.max(i.max,o.suggestedMax)),i.min===i.max&&(i.max++,o.beginAtZero||i.min--)},buildTicks:function(){var i,a=this,o=a.options,n=o.ticks,r=e.getValueOrDefault,s=a.isHorizontal(),l=a.ticks=[];if(s)i=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(a.width/50));else{var h=r(n.fontSize,t.defaults.global.defaultFontSize);i=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(a.height/(2*h)))}i=Math.max(2,i);var d,c=n.fixedStepSize&&n.fixedStepSize>0||n.stepSize&&n.stepSize>0;if(c)d=r(n.fixedStepSize,n.stepSize);else{var u=e.niceNum(a.max-a.min,!1);d=e.niceNum(u/(i-1),!0)}var f=Math.floor(a.min/d)*d,g=Math.ceil(a.max/d)*d,p=(g-f)/d;p=e.almostEquals(p,Math.round(p),d/1e3)?Math.round(p):Math.ceil(p),l.push(void 0!==n.min?n.min:f);for(var m=1;p>m;++m)l.push(f+m*d);l.push(void 0!==n.max?n.max:g), +s||l.reverse(),a.max=e.max(l),a.min=e.min(l),n.reverse?(l.reverse(),a.start=a.max,a.end=a.min):(a.start=a.min,a.end=a.max)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)},getPixelForValue:function(t,e,i,a){var o,n,r=this,s=r.paddingLeft,l=r.paddingBottom,h=r.start,d=+r.getRightValue(t),c=r.end-h;return r.isHorizontal()?(n=r.width-(s+r.paddingRight),o=r.left+n/c*(d-h),Math.round(o+s)):(n=r.height-(r.paddingTop+l),o=r.bottom-l-n/c*(d-h),Math.round(o))},getValueForPixel:function(t){var e=this,i=e.isHorizontal(),a=e.paddingLeft,o=e.paddingBottom,n=i?e.width-(a+e.paddingRight):e.height-(e.paddingTop+o),r=(i?t-e.left-a:e.bottom-o-t)/n;return e.start+(e.end-e.start)*r},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticksAsNumbers[t],null,null,e)}});t.scaleService.registerScaleType("linear",a,i)}},{}],40:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i={position:"left",ticks:{callback:function(t,i,a){var o=t/Math.pow(10,Math.floor(e.log10(t)));return 1===o||2===o||5===o||0===i||i===a.length-1?t.toExponential():""}}},a=t.Scale.extend({determineDataLimits:function(){function t(t){return h?t.xAxisID===i.id:t.yAxisID===i.id}var i=this,a=i.options,o=a.ticks,n=i.chart,r=n.data,s=r.datasets,l=e.getValueOrDefault,h=i.isHorizontal();if(i.min=null,i.max=null,a.stacked){var d={};e.each(s,function(o,r){var s=n.getDatasetMeta(r);n.isDatasetVisible(r)&&t(s)&&(void 0===d[s.type]&&(d[s.type]=[]),e.each(o.data,function(t,e){var o=d[s.type],n=+i.getRightValue(t);isNaN(n)||s.data[e].hidden||(o[e]=o[e]||0,a.relativePoints?o[e]=100:o[e]+=n)}))}),e.each(d,function(t){var a=e.min(t),o=e.max(t);i.min=null===i.min?a:Math.min(i.min,a),i.max=null===i.max?o:Math.max(i.max,o)})}else e.each(s,function(a,o){var r=n.getDatasetMeta(o);n.isDatasetVisible(o)&&t(r)&&e.each(a.data,function(t,e){var a=+i.getRightValue(t);isNaN(a)||r.data[e].hidden||(null===i.min?i.min=a:a<i.min&&(i.min=a),null===i.max?i.max=a:a>i.max&&(i.max=a))})});i.min=l(o.min,i.min),i.max=l(o.max,i.max),i.min===i.max&&(0!==i.min&&null!==i.min?(i.min=Math.pow(10,Math.floor(e.log10(i.min))-1),i.max=Math.pow(10,Math.floor(e.log10(i.max))+1)):(i.min=1,i.max=10))},buildTicks:function(){for(var t=this,i=t.options,a=i.ticks,o=e.getValueOrDefault,n=t.ticks=[],r=o(a.min,Math.pow(10,Math.floor(e.log10(t.min))));r<t.max;){n.push(r);var s=Math.floor(e.log10(r)),l=Math.floor(r/Math.pow(10,s))+1;10===l&&(l=1,++s),r=l*Math.pow(10,s)}var h=o(a.max,r);n.push(h),t.isHorizontal()||n.reverse(),t.max=e.max(n),t.min=e.min(n),a.reverse?(n.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t,e){return this.getPixelForValue(this.tickValues[t],null,null,e)},getPixelForValue:function(t,i,a,o){var n,r,s=this,l=s.start,h=+s.getRightValue(t),d=e.log10(s.end)-e.log10(l),c=s.paddingTop,u=s.paddingBottom,f=s.paddingLeft;return s.isHorizontal()?0===h?r=s.left+f:(n=s.width-(f+s.paddingRight),r=s.left+n/d*(e.log10(h)-e.log10(l)),r+=f):0===h?r=s.top+c:(n=s.height-(c+u),r=s.bottom-u-n/d*(e.log10(h)-e.log10(l))),r},getValueForPixel:function(t){var i,a,o=this,n=e.log10(o.end)-e.log10(o.start);return o.isHorizontal()?(a=o.width-(o.paddingLeft+o.paddingRight),i=o.start*Math.pow(10,(t-o.left-o.paddingLeft)*n/a)):(a=o.height-(o.paddingTop+o.paddingBottom),i=Math.pow(10,(o.bottom-o.paddingBottom-t)*n/a)/o.start),i}});t.scaleService.registerScaleType("logarithmic",a,i)}},{}],41:[function(t,e,i){"use strict";e.exports=function(t){var e=t.helpers,i=t.defaults.global,a={display:!0,animate:!0,lineArc:!1,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2},pointLabels:{fontSize:10,callback:function(t){return t}}},o=t.Scale.extend({getValueCount:function(){return this.chart.data.labels.length},setDimensions:function(){var t=this.options;this.width=this.maxWidth,this.height=this.maxHeight,this.xCenter=Math.round(this.width/2),this.yCenter=Math.round(this.height/2);var a=e.min([this.height,this.width]),o=e.getValueOrDefault(t.ticks.fontSize,i.defaultFontSize);this.drawingArea=t.display?a/2-(o/2+t.ticks.backdropPaddingY):a/2},determineDataLimits:function(){if(this.min=null,this.max=null,e.each(this.chart.data.datasets,function(t,i){if(this.chart.isDatasetVisible(i)){var a=this.chart.getDatasetMeta(i);e.each(t.data,function(t,e){var i=+this.getRightValue(t);isNaN(i)||a.data[e].hidden||(null===this.min?this.min=i:i<this.min&&(this.min=i),null===this.max?this.max=i:i>this.max&&(this.max=i))},this)}},this),this.options.ticks.beginAtZero){var t=e.sign(this.min),i=e.sign(this.max);0>t&&0>i?this.max=0:t>0&&i>0&&(this.min=0)}void 0!==this.options.ticks.min?this.min=this.options.ticks.min:void 0!==this.options.ticks.suggestedMin&&(this.min=Math.min(this.min,this.options.ticks.suggestedMin)),void 0!==this.options.ticks.max?this.max=this.options.ticks.max:void 0!==this.options.ticks.suggestedMax&&(this.max=Math.max(this.max,this.options.ticks.suggestedMax)),this.min===this.max&&(this.min--,this.max++)},buildTicks:function(){this.ticks=[];var t=e.getValueOrDefault(this.options.ticks.fontSize,i.defaultFontSize),a=Math.min(this.options.ticks.maxTicksLimit?this.options.ticks.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*t)));a=Math.max(2,a);var o=e.niceNum(this.max-this.min,!1),n=e.niceNum(o/(a-1),!0),r=Math.floor(this.min/n)*n,s=Math.ceil(this.max/n)*n,l=Math.ceil((s-r)/n);this.ticks.push(void 0!==this.options.ticks.min?this.options.ticks.min:r);for(var h=1;l>h;++h)this.ticks.push(r+h*n);this.ticks.push(void 0!==this.options.ticks.max?this.options.ticks.max:s),this.max=e.max(this.ticks),this.min=e.min(this.ticks),this.options.ticks.reverse?(this.ticks.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),this.zeroLineIndex=this.ticks.indexOf(0)},convertTicksToLabels:function(){t.Scale.prototype.convertTicksToLabels.call(this),this.pointLabels=this.chart.data.labels.map(this.options.pointLabels.callback,this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,a,o,n,r,s,l,h,d,c,u,f,g=this.options.pointLabels,p=e.getValueOrDefault(g.fontSize,i.defaultFontSize),m=e.getValueOrDefault(g.fontStyle,i.defaultFontStyle),b=e.getValueOrDefault(g.fontFamily,i.defaultFontFamily),v=e.fontString(p,m,b),x=e.min([this.height/2-p-5,this.width/2]),y=this.width,k=0;for(this.ctx.font=v,a=0;a<this.getValueCount();a++)t=this.getPointPosition(a,x),o=this.ctx.measureText(this.pointLabels[a]?this.pointLabels[a]:"").width+5,0===a||a===this.getValueCount()/2?(n=o/2,t.x+n>y&&(y=t.x+n,r=a),t.x-n<k&&(k=t.x-n,l=a)):a<this.getValueCount()/2?t.x+o>y&&(y=t.x+o,r=a):a>this.getValueCount()/2&&t.x-o<k&&(k=t.x-o,l=a);d=k,c=Math.ceil(y-this.width),s=this.getIndexAngle(r),h=this.getIndexAngle(l),u=c/Math.sin(s+Math.PI/2),f=d/Math.sin(h+Math.PI/2),u=e.isNumber(u)?u:0,f=e.isNumber(f)?f:0,this.drawingArea=Math.round(x-(f+u)/2),this.setCenterPoint(f,u)},setCenterPoint:function(t,e){var i=this.width-e-this.drawingArea,a=t+this.drawingArea;this.xCenter=Math.round((a+i)/2+this.left),this.yCenter=Math.round(this.height/2+this.top)},getIndexAngle:function(t){var e=2*Math.PI/this.getValueCount();return t*e-Math.PI/2},getDistanceFromCenterForValue:function(t){if(null===t)return 0;var e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e},getPointPosition:function(t,e){var i=this.getIndexAngle(t);return{x:Math.round(Math.cos(i)*e)+this.xCenter,y:Math.round(Math.sin(i)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,i=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:0>e&&0>i?i:e>0&&i>0?e:0)},draw:function(){if(this.options.display){var t=this.ctx;if(e.each(this.ticks,function(a,o){if(o>0||this.options.reverse){var n=this.getDistanceFromCenterForValue(this.ticks[o]),r=this.yCenter-n;if(this.options.gridLines.display)if(t.strokeStyle=this.options.gridLines.color,t.lineWidth=this.options.gridLines.lineWidth,this.options.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var s=0;s<this.getValueCount();s++){var l=this.getPointPosition(s,this.getDistanceFromCenterForValue(this.ticks[o]));0===s?t.moveTo(l.x,l.y):t.lineTo(l.x,l.y)}t.closePath(),t.stroke()}if(this.options.ticks.display){var h=e.getValueOrDefault(this.options.ticks.fontColor,i.defaultFontColor),d=e.getValueOrDefault(this.options.ticks.fontSize,i.defaultFontSize),c=e.getValueOrDefault(this.options.ticks.fontStyle,i.defaultFontStyle),u=e.getValueOrDefault(this.options.ticks.fontFamily,i.defaultFontFamily),f=e.fontString(d,c,u);if(t.font=f,this.options.ticks.showLabelBackdrop){var g=t.measureText(a).width;t.fillStyle=this.options.ticks.backdropColor,t.fillRect(this.xCenter-g/2-this.options.ticks.backdropPaddingX,r-d/2-this.options.ticks.backdropPaddingY,g+2*this.options.ticks.backdropPaddingX,d+2*this.options.ticks.backdropPaddingY)}t.textAlign="center",t.textBaseline="middle",t.fillStyle=h,t.fillText(a,this.xCenter,r)}}},this),!this.options.lineArc){t.lineWidth=this.options.angleLines.lineWidth,t.strokeStyle=this.options.angleLines.color;for(var a=this.getValueCount()-1;a>=0;a--){if(this.options.angleLines.display){var o=this.getPointPosition(a,this.getDistanceFromCenterForValue(this.options.reverse?this.min:this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(o.x,o.y),t.stroke(),t.closePath()}var n=this.getPointPosition(a,this.getDistanceFromCenterForValue(this.options.reverse?this.min:this.max)+5),r=e.getValueOrDefault(this.options.pointLabels.fontColor,i.defaultFontColor),s=e.getValueOrDefault(this.options.pointLabels.fontSize,i.defaultFontSize),l=e.getValueOrDefault(this.options.pointLabels.fontStyle,i.defaultFontStyle),h=e.getValueOrDefault(this.options.pointLabels.fontFamily,i.defaultFontFamily),d=e.fontString(s,l,h);t.font=d,t.fillStyle=r;var c=this.pointLabels.length,u=this.pointLabels.length/2,f=u/2,g=f>a||a>c-f,p=a===f||a===c-f;0===a?t.textAlign="center":a===u?t.textAlign="center":u>a?t.textAlign="left":t.textAlign="right",p?t.textBaseline="middle":g?t.textBaseline="bottom":t.textBaseline="top",t.fillText(this.pointLabels[a]?this.pointLabels[a]:"",n.x,n.y)}}}}});t.scaleService.registerScaleType("radialLinear",o,a)}},{}],42:[function(t,e,i){"use strict";var a=t("moment");a="function"==typeof a?a:window.moment,e.exports=function(t){var e=t.helpers,i={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},o={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}},n=t.Scale.extend({initialize:function(){if(!a)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");t.Scale.prototype.initialize.call(this)},getLabelMoment:function(t,e){return this.labelMoments[t][e]},getMomentStartOf:function(t){return"week"===this.options.time.unit&&this.options.time.isoWeekday!==!1?t.clone().startOf("isoWeek").isoWeekday(this.options.time.isoWeekday):t.clone().startOf(this.tickUnit)},determineDataLimits:function(){this.labelMoments=[];var t=[];this.chart.data.labels&&this.chart.data.labels.length>0?(e.each(this.chart.data.labels,function(e,i){var a=this.parseTime(e);a.isValid()&&(this.options.time.round&&a.startOf(this.options.time.round),t.push(a))},this),this.firstTick=a.min.call(this,t),this.lastTick=a.max.call(this,t)):(this.firstTick=null,this.lastTick=null),e.each(this.chart.data.datasets,function(i,o){var n=[],r=this.chart.isDatasetVisible(o);"object"==typeof i.data[0]&&null!==i.data[0]?e.each(i.data,function(t,e){var i=this.parseTime(this.getRightValue(t));i.isValid()&&(this.options.time.round&&i.startOf(this.options.time.round),n.push(i),r&&(this.firstTick=null!==this.firstTick?a.min(this.firstTick,i):i,this.lastTick=null!==this.lastTick?a.max(this.lastTick,i):i))},this):n=t,this.labelMoments.push(n)},this),this.options.time.min&&(this.firstTick=this.parseTime(this.options.time.min)),this.options.time.max&&(this.lastTick=this.parseTime(this.options.time.max)),this.firstTick=(this.firstTick||a()).clone(),this.lastTick=(this.lastTick||a()).clone()},buildTicks:function(a){this.ctx.save();var o=e.getValueOrDefault(this.options.ticks.fontSize,t.defaults.global.defaultFontSize),n=e.getValueOrDefault(this.options.ticks.fontStyle,t.defaults.global.defaultFontStyle),r=e.getValueOrDefault(this.options.ticks.fontFamily,t.defaults.global.defaultFontFamily),s=e.fontString(o,n,r);if(this.ctx.font=s,this.ticks=[],this.unitScale=1,this.scaleSizeInUnits=0,this.options.time.unit)this.tickUnit=this.options.time.unit||"day",this.displayFormat=this.options.time.displayFormats[this.tickUnit],this.scaleSizeInUnits=this.lastTick.diff(this.firstTick,this.tickUnit,!0),this.unitScale=e.getValueOrDefault(this.options.time.unitStepSize,1);else{var l=this.isHorizontal()?this.width-(this.paddingLeft+this.paddingRight):this.height-(this.paddingTop+this.paddingBottom),h=this.tickFormatFunction(this.firstTick,0,[]),d=this.ctx.measureText(h).width,c=Math.cos(e.toRadians(this.options.ticks.maxRotation)),u=Math.sin(e.toRadians(this.options.ticks.maxRotation));d=d*c+o*u;var f=l/d;this.tickUnit="millisecond",this.scaleSizeInUnits=this.lastTick.diff(this.firstTick,this.tickUnit,!0),this.displayFormat=this.options.time.displayFormats[this.tickUnit];for(var g=0,p=i.units[g];g<i.units.length;){if(this.unitScale=1,e.isArray(p.steps)&&Math.ceil(this.scaleSizeInUnits/f)<e.max(p.steps)){for(var m=0;m<p.steps.length;++m)if(p.steps[m]>=Math.ceil(this.scaleSizeInUnits/f)){this.unitScale=e.getValueOrDefault(this.options.time.unitStepSize,p.steps[m]);break}break}if(p.maxStep===!1||Math.ceil(this.scaleSizeInUnits/f)<p.maxStep){this.unitScale=e.getValueOrDefault(this.options.time.unitStepSize,Math.ceil(this.scaleSizeInUnits/f));break}++g,p=i.units[g],this.tickUnit=p.name;var b=this.firstTick.diff(this.getMomentStartOf(this.firstTick),this.tickUnit,!0),v=this.getMomentStartOf(this.lastTick.clone().add(1,this.tickUnit)).diff(this.lastTick,this.tickUnit,!0);this.scaleSizeInUnits=this.lastTick.diff(this.firstTick,this.tickUnit,!0)+b+v,this.displayFormat=this.options.time.displayFormats[p.name]}}var x;if(this.options.time.min?x=this.getMomentStartOf(this.firstTick):(this.firstTick=this.getMomentStartOf(this.firstTick),x=this.firstTick),!this.options.time.max){var y=this.getMomentStartOf(this.lastTick);0!==y.diff(this.lastTick,this.tickUnit,!0)&&(this.lastTick=this.getMomentStartOf(this.lastTick.add(1,this.tickUnit)))}this.smallestLabelSeparation=this.width,e.each(this.chart.data.datasets,function(t,e){for(var i=1;i<this.labelMoments[e].length;i++)this.smallestLabelSeparation=Math.min(this.smallestLabelSeparation,this.labelMoments[e][i].diff(this.labelMoments[e][i-1],this.tickUnit,!0))},this),this.options.time.displayFormat&&(this.displayFormat=this.options.time.displayFormat),this.ticks.push(this.firstTick.clone());for(var k=1;k<=this.scaleSizeInUnits;++k){var S=x.clone().add(k,this.tickUnit);if(this.options.time.max&&S.diff(this.lastTick,this.tickUnit,!0)>=0)break;k%this.unitScale===0&&this.ticks.push(S)}var C=this.ticks[this.ticks.length-1].diff(this.lastTick,this.tickUnit);(0!==C||0===this.scaleSizeInUnits)&&(this.options.time.max?(this.ticks.push(this.lastTick.clone()),this.scaleSizeInUnits=this.lastTick.diff(this.ticks[0],this.tickUnit,!0)):(this.ticks.push(this.lastTick.clone()),this.scaleSizeInUnits=this.lastTick.diff(this.firstTick,this.tickUnit,!0))),this.ctx.restore()},getLabelForIndex:function(t,e){var i=this.chart.data.labels&&t<this.chart.data.labels.length?this.chart.data.labels[t]:"";return"object"==typeof this.chart.data.datasets[e].data[0]&&(i=this.getRightValue(this.chart.data.datasets[e].data[t])),this.options.time.tooltipFormat&&(i=this.parseTime(i).format(this.options.time.tooltipFormat)),i},tickFormatFunction:function(t,i,a){var o=t.format(this.displayFormat),n=this.options.ticks,r=e.getValueOrDefault(n.callback,n.userCallback);return r?r(o,i,a):o},convertTicksToLabels:function(){this.tickMoments=this.ticks,this.ticks=this.ticks.map(this.tickFormatFunction,this)},getPixelForValue:function(t,e,i,a){var o=t&&t.isValid&&t.isValid()?t:this.getLabelMoment(i,e);if(o){var n=o.diff(this.firstTick,this.tickUnit,!0),r=n/this.scaleSizeInUnits;if(this.isHorizontal()){var s=this.width-(this.paddingLeft+this.paddingRight),l=(s/Math.max(this.ticks.length-1,1),s*r+this.paddingLeft);return this.left+Math.round(l)}var h=this.height-(this.paddingTop+this.paddingBottom),d=(h/Math.max(this.ticks.length-1,1),h*r+this.paddingTop);return this.top+Math.round(d)}},getPixelForTick:function(t,e){return this.getPixelForValue(this.tickMoments[t],null,null,e)},getValueForPixel:function(t){var e=this.isHorizontal()?this.width-(this.paddingLeft+this.paddingRight):this.height-(this.paddingTop+this.paddingBottom),i=(t-(this.isHorizontal()?this.left+this.paddingLeft:this.top+this.paddingTop))/e;return i*=this.scaleSizeInUnits,this.firstTick.clone().add(a.duration(i,this.tickUnit).asSeconds(),"seconds")},parseTime:function(t){return"string"==typeof this.options.time.parser?a(t,this.options.time.parser):"function"==typeof this.options.time.parser?this.options.time.parser(t):"function"==typeof t.getMonth||"number"==typeof t?a(t):t.isValid&&t.isValid()?t:"string"!=typeof this.options.time.format&&this.options.time.format.call?(console.warn("options.time.format is deprecated and replaced by options.time.parser. See http://nnnick.github.io/Chart.js/docs-v2/#scales-time-scale"),this.options.time.format(t)):a(t,this.options.time.format)}});t.scaleService.registerScaleType("time",n,o)}},{moment:1}]},{},[7]); \ No newline at end of file diff --git a/plugins/chartist/css/chartist.min.css b/plugins/chartist/css/chartist.min.css new file mode 100644 index 0000000..e1c280e --- /dev/null +++ b/plugins/chartist/css/chartist.min.css @@ -0,0 +1 @@ +.ct-double-octave:after,.ct-major-eleventh:after,.ct-major-second:after,.ct-major-seventh:after,.ct-major-sixth:after,.ct-major-tenth:after,.ct-major-third:after,.ct-major-twelfth:after,.ct-minor-second:after,.ct-minor-seventh:after,.ct-minor-sixth:after,.ct-minor-third:after,.ct-octave:after,.ct-perfect-fifth:after,.ct-perfect-fourth:after,.ct-square:after{content:"";clear:both}.ct-label{fill:rgba(0,0,0,.4);color:rgba(0,0,0,.4);font-size:.75rem;line-height:1}.ct-chart-bar .ct-label,.ct-chart-line .ct-label{display:block;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-label.ct-vertical.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-label.ct-vertical.ct-end{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start{-webkit-box-align:flex-end;-webkit-align-items:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end{-webkit-box-align:flex-start;-webkit-align-items:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:start}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-end;-webkit-justify-content:flex-end;-ms-flex-pack:flex-end;justify-content:flex-end;text-align:right;text-anchor:end}.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:flex-start;-webkit-justify-content:flex-start;-ms-flex-pack:flex-start;justify-content:flex-start;text-align:left;text-anchor:end}.ct-grid{stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:2px}.ct-point{stroke-width:10px;stroke-linecap:round}.ct-line{fill:none;stroke-width:4px}.ct-area{stroke:none;fill-opacity:.1}.ct-bar{fill:none;stroke-width:10px}.ct-slice-donut{fill:none;stroke-width:60px}.ct-series-a .ct-bar,.ct-series-a .ct-line,.ct-series-a .ct-point,.ct-series-a .ct-slice-donut{stroke:#d70206}.ct-series-a .ct-area,.ct-series-a .ct-slice-pie{fill:#d70206}.ct-series-b .ct-bar,.ct-series-b .ct-line,.ct-series-b .ct-point,.ct-series-b .ct-slice-donut{stroke:#f05b4f}.ct-series-b .ct-area,.ct-series-b .ct-slice-pie{fill:#f05b4f}.ct-series-c .ct-bar,.ct-series-c .ct-line,.ct-series-c .ct-point,.ct-series-c .ct-slice-donut{stroke:#f4c63d}.ct-series-c .ct-area,.ct-series-c .ct-slice-pie{fill:#f4c63d}.ct-series-d .ct-bar,.ct-series-d .ct-line,.ct-series-d .ct-point,.ct-series-d .ct-slice-donut{stroke:#d17905}.ct-series-d .ct-area,.ct-series-d .ct-slice-pie{fill:#d17905}.ct-series-e .ct-bar,.ct-series-e .ct-line,.ct-series-e .ct-point,.ct-series-e .ct-slice-donut{stroke:#453d3f}.ct-series-e .ct-area,.ct-series-e .ct-slice-pie{fill:#453d3f}.ct-series-f .ct-bar,.ct-series-f .ct-line,.ct-series-f .ct-point,.ct-series-f .ct-slice-donut{stroke:#59922b}.ct-series-f .ct-area,.ct-series-f .ct-slice-pie{fill:#59922b}.ct-series-g .ct-bar,.ct-series-g .ct-line,.ct-series-g .ct-point,.ct-series-g .ct-slice-donut{stroke:#0544d3}.ct-series-g .ct-area,.ct-series-g .ct-slice-pie{fill:#0544d3}.ct-series-h .ct-bar,.ct-series-h .ct-line,.ct-series-h .ct-point,.ct-series-h .ct-slice-donut{stroke:#6b0392}.ct-series-h .ct-area,.ct-series-h .ct-slice-pie{fill:#6b0392}.ct-series-i .ct-bar,.ct-series-i .ct-line,.ct-series-i .ct-point,.ct-series-i .ct-slice-donut{stroke:#f05b4f}.ct-series-i .ct-area,.ct-series-i .ct-slice-pie{fill:#f05b4f}.ct-series-j .ct-bar,.ct-series-j .ct-line,.ct-series-j .ct-point,.ct-series-j .ct-slice-donut{stroke:#dda458}.ct-series-j .ct-area,.ct-series-j .ct-slice-pie{fill:#dda458}.ct-series-k .ct-bar,.ct-series-k .ct-line,.ct-series-k .ct-point,.ct-series-k .ct-slice-donut{stroke:#eacf7d}.ct-series-k .ct-area,.ct-series-k .ct-slice-pie{fill:#eacf7d}.ct-series-l .ct-bar,.ct-series-l .ct-line,.ct-series-l .ct-point,.ct-series-l .ct-slice-donut{stroke:#86797d}.ct-series-l .ct-area,.ct-series-l .ct-slice-pie{fill:#86797d}.ct-series-m .ct-bar,.ct-series-m .ct-line,.ct-series-m .ct-point,.ct-series-m .ct-slice-donut{stroke:#b2c326}.ct-series-m .ct-area,.ct-series-m .ct-slice-pie{fill:#b2c326}.ct-series-n .ct-bar,.ct-series-n .ct-line,.ct-series-n .ct-point,.ct-series-n .ct-slice-donut{stroke:#6188e2}.ct-series-n .ct-area,.ct-series-n .ct-slice-pie{fill:#6188e2}.ct-series-o .ct-bar,.ct-series-o .ct-line,.ct-series-o .ct-point,.ct-series-o .ct-slice-donut{stroke:#a748ca}.ct-series-o .ct-area,.ct-series-o .ct-slice-pie{fill:#a748ca}.ct-square{display:block;position:relative;width:100%}.ct-square:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:100%}.ct-square:after{display:table}.ct-square>svg{display:block;position:absolute;top:0;left:0}.ct-minor-second{display:block;position:relative;width:100%}.ct-minor-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:93.75%}.ct-minor-second:after{display:table}.ct-minor-second>svg{display:block;position:absolute;top:0;left:0}.ct-major-second{display:block;position:relative;width:100%}.ct-major-second:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:88.8888888889%}.ct-major-second:after{display:table}.ct-major-second>svg{display:block;position:absolute;top:0;left:0}.ct-minor-third{display:block;position:relative;width:100%}.ct-minor-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:83.3333333333%}.ct-minor-third:after{display:table}.ct-minor-third>svg{display:block;position:absolute;top:0;left:0}.ct-major-third{display:block;position:relative;width:100%}.ct-major-third:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:80%}.ct-major-third:after{display:table}.ct-major-third>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fourth{display:block;position:relative;width:100%}.ct-perfect-fourth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:75%}.ct-perfect-fourth:after{display:table}.ct-perfect-fourth>svg{display:block;position:absolute;top:0;left:0}.ct-perfect-fifth{display:block;position:relative;width:100%}.ct-perfect-fifth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:66.6666666667%}.ct-perfect-fifth:after{display:table}.ct-perfect-fifth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-sixth{display:block;position:relative;width:100%}.ct-minor-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:62.5%}.ct-minor-sixth:after{display:table}.ct-minor-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-golden-section{display:block;position:relative;width:100%}.ct-golden-section:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:61.804697157%}.ct-golden-section:after{content:"";display:table;clear:both}.ct-golden-section>svg{display:block;position:absolute;top:0;left:0}.ct-major-sixth{display:block;position:relative;width:100%}.ct-major-sixth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:60%}.ct-major-sixth:after{display:table}.ct-major-sixth>svg{display:block;position:absolute;top:0;left:0}.ct-minor-seventh{display:block;position:relative;width:100%}.ct-minor-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:56.25%}.ct-minor-seventh:after{display:table}.ct-minor-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-seventh{display:block;position:relative;width:100%}.ct-major-seventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:53.3333333333%}.ct-major-seventh:after{display:table}.ct-major-seventh>svg{display:block;position:absolute;top:0;left:0}.ct-octave{display:block;position:relative;width:100%}.ct-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:50%}.ct-octave:after{display:table}.ct-octave>svg{display:block;position:absolute;top:0;left:0}.ct-major-tenth{display:block;position:relative;width:100%}.ct-major-tenth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:40%}.ct-major-tenth:after{display:table}.ct-major-tenth>svg{display:block;position:absolute;top:0;left:0}.ct-major-eleventh{display:block;position:relative;width:100%}.ct-major-eleventh:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:37.5%}.ct-major-eleventh:after{display:table}.ct-major-eleventh>svg{display:block;position:absolute;top:0;left:0}.ct-major-twelfth{display:block;position:relative;width:100%}.ct-major-twelfth:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:33.3333333333%}.ct-major-twelfth:after{display:table}.ct-major-twelfth>svg{display:block;position:absolute;top:0;left:0}.ct-double-octave{display:block;position:relative;width:100%}.ct-double-octave:before{display:block;float:left;content:"";width:0;height:0;padding-bottom:25%}.ct-double-octave:after{display:table}.ct-double-octave>svg{display:block;position:absolute;top:0;left:0} \ No newline at end of file diff --git a/plugins/chartist/js/chartist-plugin-tooltip.min.js b/plugins/chartist/js/chartist-plugin-tooltip.min.js new file mode 100644 index 0000000..9195730 --- /dev/null +++ b/plugins/chartist/js/chartist-plugin-tooltip.min.js @@ -0,0 +1,8 @@ +/* chartist-plugin-pointlabels 0.0.12 + * Copyright © 2016 Gion Kunz + * Free to use under the WTFPL license. + * http://www.wtfpl.net/ + */ + +!function(a,b){"function"==typeof define&&define.amd?define(["chartist"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("chartist")):a["Chartist.plugins.tooltips"]=b(Chartist)}(this,function(a){return function(a,b,c){"use strict";function d(a){f(a,"tooltip-show")||(a.className=a.className+" tooltip-show")}function e(a){var b=new RegExp("tooltip-show\\s*","gi");a.className=a.className.replace(b,"").trim()}function f(a,b){return(" "+a.getAttribute("class")+" ").indexOf(" "+b+" ")>-1}function g(a,b){do a=a.nextSibling;while(a&&!f(a,b));return a}function h(a){return a.innerText||a.textContent}var i={currency:void 0,tooltipOffset:{x:0,y:-20},appendToBody:!1,"class":void 0};c.plugins=c.plugins||{},c.plugins.tooltip=function(a){return a=c.extend({},i,a),function(i){function j(a,b,c){m.addEventListener(a,function(a){(!b||f(a.target,b))&&c(a)})}function k(b){o=o||n.offsetHeight,p=p||n.offsetWidth,a.appendToBody?(n.style.top=b.pageY-o+a.tooltipOffset.y+"px",n.style.left=b.pageX-p/2+a.tooltipOffset.x+"px"):(n.style.top=(b.layerY||b.offsetY)-o+a.tooltipOffset.y+"px",n.style.left=(b.layerX||b.offsetX)-p/2+a.tooltipOffset.x+"px")}var l="ct-point";i instanceof c.Bar?l="ct-bar":i instanceof c.Pie&&(l=i.options.donut?"ct-slice-donut":"ct-slice-pie");var m=i.container,n=m.querySelector(".chartist-tooltip");n||(n=b.createElement("div"),n.className=a["class"]?"chartist-tooltip "+a["class"]:"chartist-tooltip",a.appendToBody?b.body.appendChild(n):m.appendChild(n));var o=n.offsetHeight,p=n.offsetWidth;e(n),j("mouseover",l,function(e){var f=e.target,j="",l=i instanceof c.Pie?f:f.parentNode,m=l?f.parentNode.getAttribute("ct:meta")||f.parentNode.getAttribute("ct:series-name"):"",q=f.getAttribute("ct:meta")||m||"",r=!!q,s=f.getAttribute("ct:value");if(a.tooltipFnc)j=a.tooltipFnc(q,s);else{if(a.metaIsHTML){var t=b.createElement("textarea");t.innerHTML=q,q=t.value}if(q='<span class="chartist-tooltip-meta">'+q+"</span>",r)j+=q+"<br>";else if(i instanceof c.Pie){var u=g(f,"ct-label");u&&(j+=h(u)+"<br>")}s&&(s='<span class="chartist-tooltip-value">'+s+"</span>",a.currency&&(s=a.currency+s.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g,"$1,")),j+=s)}j&&(n.innerHTML=j,k(e),d(n),o=n.offsetHeight,p=n.offsetWidth)}),j("mouseout",l,function(){e(n)}),j("mousemove",null,function(a){k(a)})}}}(window,document,a),a.plugins.tooltips}); +//# sourceMappingURL=chartist-plugin-tooltip.min.js.map \ No newline at end of file diff --git a/plugins/chartist/js/chartist.min.js b/plugins/chartist/js/chartist.min.js new file mode 100644 index 0000000..ca5e4ef --- /dev/null +++ b/plugins/chartist/js/chartist.min.js @@ -0,0 +1,10 @@ +/* Chartist.js 0.9.8 + * Copyright © 2016 Gion Kunz + * Free to use under either the WTFPL license or the MIT license. + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT + */ + +!function(a,b){"function"==typeof define&&define.amd?define([],function(){return a.Chartist=b()}):"object"==typeof exports?module.exports=b():a.Chartist=b()}(this,function(){var a={version:"0.9.8"};return function(a,b,c){"use strict";c.namespaces={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",ct:"http://gionkunz.github.com/chartist-js/ct"},c.noop=function(a){return a},c.alphaNumerate=function(a){return String.fromCharCode(97+a%26)},c.extend=function(a){a=a||{};var b=Array.prototype.slice.call(arguments,1);return b.forEach(function(b){for(var d in b)"object"!=typeof b[d]||null===b[d]||b[d]instanceof Array?a[d]=b[d]:a[d]=c.extend({},a[d],b[d])}),a},c.replaceAll=function(a,b,c){return a.replace(new RegExp(b,"g"),c)},c.ensureUnit=function(a,b){return"number"==typeof a&&(a+=b),a},c.quantity=function(a){if("string"==typeof a){var b=/^(\d+)\s*(.*)$/g.exec(a);return{value:+b[1],unit:b[2]||void 0}}return{value:a}},c.querySelector=function(a){return a instanceof Node?a:b.querySelector(a)},c.times=function(a){return Array.apply(null,new Array(a))},c.sum=function(a,b){return a+(b?b:0)},c.mapMultiply=function(a){return function(b){return b*a}},c.mapAdd=function(a){return function(b){return b+a}},c.serialMap=function(a,b){var d=[],e=Math.max.apply(null,a.map(function(a){return a.length}));return c.times(e).forEach(function(c,e){var f=a.map(function(a){return a[e]});d[e]=b.apply(null,f)}),d},c.roundWithPrecision=function(a,b){var d=Math.pow(10,b||c.precision);return Math.round(a*d)/d},c.precision=8,c.escapingMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},c.serialize=function(a){return null===a||void 0===a?a:("number"==typeof a?a=""+a:"object"==typeof a&&(a=JSON.stringify({data:a})),Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,b,c.escapingMap[b])},a))},c.deserialize=function(a){if("string"!=typeof a)return a;a=Object.keys(c.escapingMap).reduce(function(a,b){return c.replaceAll(a,c.escapingMap[b],b)},a);try{a=JSON.parse(a),a=void 0!==a.data?a.data:a}catch(b){}return a},c.createSvg=function(a,b,d,e){var f;return b=b||"100%",d=d||"100%",Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function(a){return a.getAttributeNS(c.namespaces.xmlns,"ct")}).forEach(function(b){a.removeChild(b)}),f=new c.Svg("svg").attr({width:b,height:d}).addClass(e).attr({style:"width: "+b+"; height: "+d+";"}),a.appendChild(f._node),f},c.normalizeData=function(a){if(a=a||{series:[],labels:[]},a.series=a.series||[],a.labels=a.labels||[],a.series.length>0&&0===a.labels.length){var b,d=c.getDataArray(a);b=d.every(function(a){return a instanceof Array})?Math.max.apply(null,d.map(function(a){return a.length})):d.length,a.labels=c.times(b).map(function(){return""})}return a},c.reverseData=function(a){a.labels.reverse(),a.series.reverse();for(var b=0;b<a.series.length;b++)"object"==typeof a.series[b]&&void 0!==a.series[b].data?a.series[b].data.reverse():a.series[b]instanceof Array&&a.series[b].reverse()},c.getDataArray=function(a,b,d){function e(a){if(!c.isFalseyButZero(a)){if((a.data||a)instanceof Array)return(a.data||a).map(e);if(a.hasOwnProperty("value"))return e(a.value);if(d){var b={};return"string"==typeof d?b[d]=c.getNumberOrUndefined(a):b.y=c.getNumberOrUndefined(a),b.x=a.hasOwnProperty("x")?c.getNumberOrUndefined(a.x):b.x,b.y=a.hasOwnProperty("y")?c.getNumberOrUndefined(a.y):b.y,b}return c.getNumberOrUndefined(a)}}return(b&&!a.reversed||!b&&a.reversed)&&(c.reverseData(a),a.reversed=!a.reversed),a.series.map(e)},c.normalizePadding=function(a,b){return b=b||0,"number"==typeof a?{top:a,right:a,bottom:a,left:a}:{top:"number"==typeof a.top?a.top:b,right:"number"==typeof a.right?a.right:b,bottom:"number"==typeof a.bottom?a.bottom:b,left:"number"==typeof a.left?a.left:b}},c.getMetaData=function(a,b){var d=a.data?a.data[b]:a[b];return d?c.serialize(d.meta):void 0},c.orderOfMagnitude=function(a){return Math.floor(Math.log(Math.abs(a))/Math.LN10)},c.projectLength=function(a,b,c){return b/c.range*a},c.getAvailableHeight=function(a,b){return Math.max((c.quantity(b.height).value||a.height())-(b.chartPadding.top+b.chartPadding.bottom)-b.axisX.offset,0)},c.getHighLow=function(a,b,d){function e(a){if(void 0!==a)if(a instanceof Array)for(var b=0;b<a.length;b++)e(a[b]);else{var c=d?+a[d]:+a;g&&c>f.high&&(f.high=c),h&&c<f.low&&(f.low=c)}}b=c.extend({},b,d?b["axis"+d.toUpperCase()]:{});var f={high:void 0===b.high?-Number.MAX_VALUE:+b.high,low:void 0===b.low?Number.MAX_VALUE:+b.low},g=void 0===b.high,h=void 0===b.low;return(g||h)&&e(a),(b.referenceValue||0===b.referenceValue)&&(f.high=Math.max(b.referenceValue,f.high),f.low=Math.min(b.referenceValue,f.low)),f.high<=f.low&&(0===f.low?f.high=1:f.low<0?f.high=0:f.high>0?f.low=0:(f.high=1,f.low=0)),f},c.isNum=function(a){return!isNaN(a)&&isFinite(a)},c.isFalseyButZero=function(a){return!a&&0!==a},c.getNumberOrUndefined=function(a){return isNaN(+a)?void 0:+a},c.getMultiValue=function(a,b){return c.isNum(a)?+a:a?a[b||"y"]||0:0},c.rho=function(a){function b(a,c){return a%c===0?c:b(c,a%c)}function c(a){return a*a+1}if(1===a)return a;var d,e=2,f=2;if(a%2===0)return 2;do e=c(e)%a,f=c(c(f))%a,d=b(Math.abs(e-f),a);while(1===d);return d},c.getBounds=function(a,b,d,e){var f,g,h,i=0,j={high:b.high,low:b.low};j.valueRange=j.high-j.low,j.oom=c.orderOfMagnitude(j.valueRange),j.step=Math.pow(10,j.oom),j.min=Math.floor(j.low/j.step)*j.step,j.max=Math.ceil(j.high/j.step)*j.step,j.range=j.max-j.min,j.numberOfSteps=Math.round(j.range/j.step);var k=c.projectLength(a,j.step,j),l=k<d,m=e?c.rho(j.range):0;if(e&&c.projectLength(a,1,j)>=d)j.step=1;else if(e&&m<j.step&&c.projectLength(a,m,j)>=d)j.step=m;else for(;;){if(l&&c.projectLength(a,j.step,j)<=d)j.step*=2;else{if(l||!(c.projectLength(a,j.step/2,j)>=d))break;if(j.step/=2,e&&j.step%1!==0){j.step*=2;break}}if(i++>1e3)throw new Error("Exceeded maximum number of iterations while optimizing scale step!")}var n=2.221e-16;for(j.step=Math.max(j.step,n),g=j.min,h=j.max;g+j.step<=j.low;)g+=j.step;for(;h-j.step>=j.high;)h-=j.step;j.min=g,j.max=h,j.range=j.max-j.min;var o=[];for(f=j.min;f<=j.max;f+=j.step){var p=c.roundWithPrecision(f);p!==o[o.length-1]&&o.push(f)}return j.values=o,j},c.polarToCartesian=function(a,b,c,d){var e=(d-90)*Math.PI/180;return{x:a+c*Math.cos(e),y:b+c*Math.sin(e)}},c.createChartRect=function(a,b,d){var e=!(!b.axisX&&!b.axisY),f=e?b.axisY.offset:0,g=e?b.axisX.offset:0,h=a.width()||c.quantity(b.width).value||0,i=a.height()||c.quantity(b.height).value||0,j=c.normalizePadding(b.chartPadding,d);h=Math.max(h,f+j.left+j.right),i=Math.max(i,g+j.top+j.bottom);var k={padding:j,width:function(){return this.x2-this.x1},height:function(){return this.y1-this.y2}};return e?("start"===b.axisX.position?(k.y2=j.top+g,k.y1=Math.max(i-j.bottom,k.y2+1)):(k.y2=j.top,k.y1=Math.max(i-j.bottom-g,k.y2+1)),"start"===b.axisY.position?(k.x1=j.left+f,k.x2=Math.max(h-j.right,k.x1+1)):(k.x1=j.left,k.x2=Math.max(h-j.right-f,k.x1+1))):(k.x1=j.left,k.x2=Math.max(h-j.right,k.x1+1),k.y2=j.top,k.y1=Math.max(i-j.bottom,k.y2+1)),k},c.createGrid=function(a,b,d,e,f,g,h,i){var j={};j[d.units.pos+"1"]=a,j[d.units.pos+"2"]=a,j[d.counterUnits.pos+"1"]=e,j[d.counterUnits.pos+"2"]=e+f;var k=g.elem("line",j,h.join(" "));i.emit("draw",c.extend({type:"grid",axis:d,index:b,group:g,element:k},j))},c.createLabel=function(a,b,d,e,f,g,h,i,j,k,l){var m,n={};if(n[f.units.pos]=a+h[f.units.pos],n[f.counterUnits.pos]=h[f.counterUnits.pos],n[f.units.len]=b,n[f.counterUnits.len]=Math.max(0,g-10),k){var o='<span class="'+j.join(" ")+'" style="'+f.units.len+": "+Math.round(n[f.units.len])+"px; "+f.counterUnits.len+": "+Math.round(n[f.counterUnits.len])+'px">'+e[d]+"</span>";m=i.foreignObject(o,c.extend({style:"overflow: visible;"},n))}else m=i.elem("text",n,j.join(" ")).text(e[d]);l.emit("draw",c.extend({type:"label",axis:f,index:d,group:i,element:m,text:e[d]},n))},c.getSeriesOption=function(a,b,c){if(a.name&&b.series&&b.series[a.name]){var d=b.series[a.name];return d.hasOwnProperty(c)?d[c]:b[c]}return b[c]},c.optionsProvider=function(b,d,e){function f(b){var f=h;if(h=c.extend({},j),d)for(i=0;i<d.length;i++){var g=a.matchMedia(d[i][0]);g.matches&&(h=c.extend(h,d[i][1]))}e&&b&&e.emit("optionsChanged",{previousOptions:f,currentOptions:h})}function g(){k.forEach(function(a){a.removeListener(f)})}var h,i,j=c.extend({},b),k=[];if(!a.matchMedia)throw"window.matchMedia not found! Make sure you're using a polyfill.";if(d)for(i=0;i<d.length;i++){var l=a.matchMedia(d[i][0]);l.addListener(f),k.push(l)}return f(),{removeMediaQueryListeners:g,getCurrentOptions:function(){return c.extend({},h)}}},c.splitIntoSegments=function(a,b,d){var e={increasingX:!1,fillHoles:!1};d=c.extend({},e,d);for(var f=[],g=!0,h=0;h<a.length;h+=2)void 0===b[h/2].value?d.fillHoles||(g=!0):(d.increasingX&&h>=2&&a[h]<=a[h-2]&&(g=!0),g&&(f.push({pathCoordinates:[],valueData:[]}),g=!1),f[f.length-1].pathCoordinates.push(a[h],a[h+1]),f[f.length-1].valueData.push(b[h/2]));return f}}(window,document,a),function(a,b,c){"use strict";c.Interpolation={},c.Interpolation.none=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function(b,d){for(var e=new c.Svg.Path,f=!0,g=0;g<b.length;g+=2){var h=b[g],i=b[g+1],j=d[g/2];void 0!==j.value?(f?e.move(h,i,!1,j):e.line(h,i,!1,j),f=!1):a.fillHoles||(f=!0)}return e}},c.Interpolation.simple=function(a){var b={divisor:2,fillHoles:!1};a=c.extend({},b,a);var d=1/Math.max(1,a.divisor);return function(b,e){for(var f,g,h,i=new c.Svg.Path,j=0;j<b.length;j+=2){var k=b[j],l=b[j+1],m=(k-f)*d,n=e[j/2];void 0!==n.value?(void 0===h?i.move(k,l,!1,n):i.curve(f+m,g,k-m,l,k,l,!1,n),f=k,g=l,h=n):a.fillHoles||(f=k=h=void 0)}return i}},c.Interpolation.cardinal=function(a){var b={tension:1,fillHoles:!1};a=c.extend({},b,a);var d=Math.min(1,Math.max(0,a.tension)),e=1-d;return function f(b,g){var h=c.splitIntoSegments(b,g,{fillHoles:a.fillHoles});if(h.length){if(h.length>1){var i=[];return h.forEach(function(a){i.push(f(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(i)}if(b=h[0].pathCoordinates,g=h[0].valueData,b.length<=4)return c.Interpolation.none()(b,g);for(var j,k=(new c.Svg.Path).move(b[0],b[1],!1,g[0]),l=0,m=b.length;m-2*!j>l;l+=2){var n=[{x:+b[l-2],y:+b[l-1]},{x:+b[l],y:+b[l+1]},{x:+b[l+2],y:+b[l+3]},{x:+b[l+4],y:+b[l+5]}];j?l?m-4===l?n[3]={x:+b[0],y:+b[1]}:m-2===l&&(n[2]={x:+b[0],y:+b[1]},n[3]={x:+b[2],y:+b[3]}):n[0]={x:+b[m-2],y:+b[m-1]}:m-4===l?n[3]=n[2]:l||(n[0]={x:+b[l],y:+b[l+1]}),k.curve(d*(-n[0].x+6*n[1].x+n[2].x)/6+e*n[2].x,d*(-n[0].y+6*n[1].y+n[2].y)/6+e*n[2].y,d*(n[1].x+6*n[2].x-n[3].x)/6+e*n[2].x,d*(n[1].y+6*n[2].y-n[3].y)/6+e*n[2].y,n[2].x,n[2].y,!1,g[(l+2)/2])}return k}return c.Interpolation.none()([])}},c.Interpolation.monotoneCubic=function(a){var b={fillHoles:!1};return a=c.extend({},b,a),function d(b,e){var f=c.splitIntoSegments(b,e,{fillHoles:a.fillHoles,increasingX:!0});if(f.length){if(f.length>1){var g=[];return f.forEach(function(a){g.push(d(a.pathCoordinates,a.valueData))}),c.Svg.Path.join(g)}if(b=f[0].pathCoordinates,e=f[0].valueData,b.length<=4)return c.Interpolation.none()(b,e);var h,i,j=[],k=[],l=b.length/2,m=[],n=[],o=[],p=[];for(h=0;h<l;h++)j[h]=b[2*h],k[h]=b[2*h+1];for(h=0;h<l-1;h++)o[h]=k[h+1]-k[h],p[h]=j[h+1]-j[h],n[h]=o[h]/p[h];for(m[0]=n[0],m[l-1]=n[l-2],h=1;h<l-1;h++)0===n[h]||0===n[h-1]||n[h-1]>0!=n[h]>0?m[h]=0:(m[h]=3*(p[h-1]+p[h])/((2*p[h]+p[h-1])/n[h-1]+(p[h]+2*p[h-1])/n[h]),isFinite(m[h])||(m[h]=0));for(i=(new c.Svg.Path).move(j[0],k[0],!1,e[0]),h=0;h<l-1;h++)i.curve(j[h]+p[h]/3,k[h]+m[h]*p[h]/3,j[h+1]-p[h]/3,k[h+1]-m[h+1]*p[h]/3,j[h+1],k[h+1],!1,e[h+1]);return i}return c.Interpolation.none()([])}},c.Interpolation.step=function(a){var b={postpone:!0,fillHoles:!1};return a=c.extend({},b,a),function(b,d){for(var e,f,g,h=new c.Svg.Path,i=0;i<b.length;i+=2){var j=b[i],k=b[i+1],l=d[i/2];void 0!==l.value?(void 0===g?h.move(j,k,!1,l):(a.postpone?h.line(j,f,!1,g):h.line(e,k,!1,l),h.line(j,k,!1,l)),e=j,f=k,g=l):a.fillHoles||(e=f=g=void 0)}return h}}}(window,document,a),function(a,b,c){"use strict";c.EventEmitter=function(){function a(a,b){d[a]=d[a]||[],d[a].push(b)}function b(a,b){d[a]&&(b?(d[a].splice(d[a].indexOf(b),1),0===d[a].length&&delete d[a]):delete d[a])}function c(a,b){d[a]&&d[a].forEach(function(a){a(b)}),d["*"]&&d["*"].forEach(function(c){c(a,b)})}var d=[];return{addEventHandler:a,removeEventHandler:b,emit:c}}}(window,document,a),function(a,b,c){"use strict";function d(a){var b=[];if(a.length)for(var c=0;c<a.length;c++)b.push(a[c]);return b}function e(a,b){var d=b||this.prototype||c.Class,e=Object.create(d);c.Class.cloneDefinitions(e,a);var f=function(){var a,b=e.constructor||function(){};return a=this===c?Object.create(e):this,b.apply(a,Array.prototype.slice.call(arguments,0)),a};return f.prototype=e,f["super"]=d,f.extend=this.extend,f}function f(){var a=d(arguments),b=a[0];return a.splice(1,a.length-1).forEach(function(a){Object.getOwnPropertyNames(a).forEach(function(c){delete b[c],Object.defineProperty(b,c,Object.getOwnPropertyDescriptor(a,c))})}),b}c.Class={extend:e,cloneDefinitions:f}}(window,document,a),function(a,b,c){"use strict";function d(a,b,d){return a&&(this.data=a,this.eventEmitter.emit("data",{type:"update",data:this.data})),b&&(this.options=c.extend({},d?this.options:this.defaultOptions,b),this.initializeTimeoutId||(this.optionsProvider.removeMediaQueryListeners(),this.optionsProvider=c.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter))),this.initializeTimeoutId||this.createChart(this.optionsProvider.getCurrentOptions()),this}function e(){return this.initializeTimeoutId?a.clearTimeout(this.initializeTimeoutId):(a.removeEventListener("resize",this.resizeListener),this.optionsProvider.removeMediaQueryListeners()),this}function f(a,b){return this.eventEmitter.addEventHandler(a,b),this}function g(a,b){return this.eventEmitter.removeEventHandler(a,b),this}function h(){a.addEventListener("resize",this.resizeListener),this.optionsProvider=c.optionsProvider(this.options,this.responsiveOptions,this.eventEmitter),this.eventEmitter.addEventHandler("optionsChanged",function(){this.update()}.bind(this)),this.options.plugins&&this.options.plugins.forEach(function(a){a instanceof Array?a[0](this,a[1]):a(this)}.bind(this)),this.eventEmitter.emit("data",{type:"initial",data:this.data}),this.createChart(this.optionsProvider.getCurrentOptions()),this.initializeTimeoutId=void 0}function i(a,b,d,e,f){this.container=c.querySelector(a),this.data=b,this.defaultOptions=d,this.options=e,this.responsiveOptions=f,this.eventEmitter=c.EventEmitter(),this.supportsForeignObject=c.Svg.isSupported("Extensibility"),this.supportsAnimations=c.Svg.isSupported("AnimationEventsAttribute"),this.resizeListener=function(){this.update()}.bind(this),this.container&&(this.container.__chartist__&&this.container.__chartist__.detach(),this.container.__chartist__=this),this.initializeTimeoutId=setTimeout(h.bind(this),0)}c.Base=c.Class.extend({constructor:i,optionsProvider:void 0,container:void 0,svg:void 0,eventEmitter:void 0,createChart:function(){throw new Error("Base chart type can't be instantiated!")},update:d,detach:e,on:f,off:g,version:c.version,supportsForeignObject:!1})}(window,document,a),function(a,b,c){"use strict";function d(a,d,e,f,g){a instanceof Element?this._node=a:(this._node=b.createElementNS(c.namespaces.svg,a),"svg"===a&&this.attr({"xmlns:ct":c.namespaces.ct})),d&&this.attr(d),e&&this.addClass(e),f&&(g&&f._node.firstChild?f._node.insertBefore(this._node,f._node.firstChild):f._node.appendChild(this._node))}function e(a,b){return"string"==typeof a?b?this._node.getAttributeNS(b,a):this._node.getAttribute(a):(Object.keys(a).forEach(function(b){if(void 0!==a[b])if(b.indexOf(":")!==-1){var d=b.split(":");this._node.setAttributeNS(c.namespaces[d[0]],b,a[b])}else this._node.setAttribute(b,a[b])}.bind(this)),this)}function f(a,b,d,e){return new c.Svg(a,b,d,this,e)}function g(){return this._node.parentNode instanceof SVGElement?new c.Svg(this._node.parentNode):null}function h(){for(var a=this._node;"svg"!==a.nodeName;)a=a.parentNode;return new c.Svg(a)}function i(a){var b=this._node.querySelector(a);return b?new c.Svg(b):null}function j(a){var b=this._node.querySelectorAll(a);return b.length?new c.Svg.List(b):null}function k(a,d,e,f){if("string"==typeof a){var g=b.createElement("div");g.innerHTML=a,a=g.firstChild}a.setAttribute("xmlns",c.namespaces.xmlns);var h=this.elem("foreignObject",d,e,f);return h._node.appendChild(a),h}function l(a){return this._node.appendChild(b.createTextNode(a)),this}function m(){for(;this._node.firstChild;)this._node.removeChild(this._node.firstChild);return this}function n(){return this._node.parentNode.removeChild(this._node),this.parent()}function o(a){return this._node.parentNode.replaceChild(a._node,this._node),a}function p(a,b){return b&&this._node.firstChild?this._node.insertBefore(a._node,this._node.firstChild):this._node.appendChild(a._node),this}function q(){return this._node.getAttribute("class")?this._node.getAttribute("class").trim().split(/\s+/):[]}function r(a){return this._node.setAttribute("class",this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function(a,b,c){return c.indexOf(a)===b}).join(" ")),this}function s(a){var b=a.trim().split(/\s+/);return this._node.setAttribute("class",this.classes(this._node).filter(function(a){return b.indexOf(a)===-1}).join(" ")),this}function t(){return this._node.setAttribute("class",""),this}function u(){return this._node.getBoundingClientRect().height}function v(){return this._node.getBoundingClientRect().width}function w(a,b,d){return void 0===b&&(b=!0),Object.keys(a).forEach(function(e){function f(a,b){var f,g,h,i={};a.easing&&(h=a.easing instanceof Array?a.easing:c.Svg.Easing[a.easing],delete a.easing),a.begin=c.ensureUnit(a.begin,"ms"),a.dur=c.ensureUnit(a.dur,"ms"),h&&(a.calcMode="spline",a.keySplines=h.join(" "),a.keyTimes="0;1"),b&&(a.fill="freeze",i[e]=a.from,this.attr(i),g=c.quantity(a.begin||0).value,a.begin="indefinite"),f=this.elem("animate",c.extend({attributeName:e},a)),b&&setTimeout(function(){try{f._node.beginElement()}catch(b){i[e]=a.to,this.attr(i),f.remove()}}.bind(this),g),d&&f._node.addEventListener("beginEvent",function(){d.emit("animationBegin",{element:this,animate:f._node,params:a})}.bind(this)),f._node.addEventListener("endEvent",function(){d&&d.emit("animationEnd",{element:this,animate:f._node,params:a}),b&&(i[e]=a.to,this.attr(i),f.remove())}.bind(this))}a[e]instanceof Array?a[e].forEach(function(a){f.bind(this)(a,!1)}.bind(this)):f.bind(this)(a[e],b)}.bind(this)),this}function x(a){var b=this;this.svgElements=[];for(var d=0;d<a.length;d++)this.svgElements.push(new c.Svg(a[d]));Object.keys(c.Svg.prototype).filter(function(a){return["constructor","parent","querySelector","querySelectorAll","replace","append","classes","height","width"].indexOf(a)===-1}).forEach(function(a){b[a]=function(){var d=Array.prototype.slice.call(arguments,0);return b.svgElements.forEach(function(b){c.Svg.prototype[a].apply(b,d)}),b}})}c.Svg=c.Class.extend({constructor:d,attr:e,elem:f,parent:g,root:h,querySelector:i,querySelectorAll:j,foreignObject:k,text:l,empty:m,remove:n,replace:o,append:p,classes:q,addClass:r,removeClass:s,removeAllClasses:t,height:u,width:v,animate:w}),c.Svg.isSupported=function(a){return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#"+a,"1.1")};var y={easeInSine:[.47,0,.745,.715],easeOutSine:[.39,.575,.565,1],easeInOutSine:[.445,.05,.55,.95],easeInQuad:[.55,.085,.68,.53],easeOutQuad:[.25,.46,.45,.94],easeInOutQuad:[.455,.03,.515,.955],easeInCubic:[.55,.055,.675,.19],easeOutCubic:[.215,.61,.355,1],easeInOutCubic:[.645,.045,.355,1],easeInQuart:[.895,.03,.685,.22],easeOutQuart:[.165,.84,.44,1],easeInOutQuart:[.77,0,.175,1],easeInQuint:[.755,.05,.855,.06],easeOutQuint:[.23,1,.32,1],easeInOutQuint:[.86,0,.07,1],easeInExpo:[.95,.05,.795,.035],easeOutExpo:[.19,1,.22,1],easeInOutExpo:[1,0,0,1],easeInCirc:[.6,.04,.98,.335],easeOutCirc:[.075,.82,.165,1],easeInOutCirc:[.785,.135,.15,.86],easeInBack:[.6,-.28,.735,.045],easeOutBack:[.175,.885,.32,1.275],easeInOutBack:[.68,-.55,.265,1.55]};c.Svg.Easing=y,c.Svg.List=c.Class.extend({constructor:x})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e,f,g){var h=c.extend({command:f?a.toLowerCase():a.toUpperCase()},b,g?{data:g}:{});d.splice(e,0,h)}function e(a,b){a.forEach(function(c,d){u[c.command.toLowerCase()].forEach(function(e,f){b(c,e,d,f,a)})})}function f(a,b){this.pathElements=[],this.pos=0,this.close=a,this.options=c.extend({},v,b)}function g(a){return void 0!==a?(this.pos=Math.max(0,Math.min(this.pathElements.length,a)),this):this.pos}function h(a){return this.pathElements.splice(this.pos,a),this}function i(a,b,c,e){return d("M",{x:+a,y:+b},this.pathElements,this.pos++,c,e),this}function j(a,b,c,e){return d("L",{x:+a,y:+b},this.pathElements,this.pos++,c,e),this}function k(a,b,c,e,f,g,h,i){return d("C",{x1:+a,y1:+b,x2:+c,y2:+e,x:+f,y:+g},this.pathElements,this.pos++,h,i),this}function l(a,b,c,e,f,g,h,i,j){return d("A",{rx:+a,ry:+b,xAr:+c,lAf:+e,sf:+f,x:+g,y:+h},this.pathElements,this.pos++,i,j),this}function m(a){var b=a.replace(/([A-Za-z])([0-9])/g,"$1 $2").replace(/([0-9])([A-Za-z])/g,"$1 $2").split(/[\s,]+/).reduce(function(a,b){return b.match(/[A-Za-z]/)&&a.push([]),a[a.length-1].push(b),a},[]);"Z"===b[b.length-1][0].toUpperCase()&&b.pop();var d=b.map(function(a){var b=a.shift(),d=u[b.toLowerCase()];return c.extend({command:b},d.reduce(function(b,c,d){return b[c]=+a[d],b},{}))}),e=[this.pos,0];return Array.prototype.push.apply(e,d),Array.prototype.splice.apply(this.pathElements,e),this.pos+=d.length,this}function n(){var a=Math.pow(10,this.options.accuracy);return this.pathElements.reduce(function(b,c){var d=u[c.command.toLowerCase()].map(function(b){return this.options.accuracy?Math.round(c[b]*a)/a:c[b]}.bind(this));return b+c.command+d.join(",")}.bind(this),"")+(this.close?"Z":"")}function o(a,b){return e(this.pathElements,function(c,d){c[d]*="x"===d[0]?a:b}),this}function p(a,b){return e(this.pathElements,function(c,d){c[d]+="x"===d[0]?a:b}),this}function q(a){return e(this.pathElements,function(b,c,d,e,f){var g=a(b,c,d,e,f);(g||0===g)&&(b[c]=g)}),this}function r(a){var b=new c.Svg.Path(a||this.close);return b.pos=this.pos,b.pathElements=this.pathElements.slice().map(function(a){return c.extend({},a)}),b.options=c.extend({},this.options),b}function s(a){var b=[new c.Svg.Path];return this.pathElements.forEach(function(d){d.command===a.toUpperCase()&&0!==b[b.length-1].pathElements.length&&b.push(new c.Svg.Path),b[b.length-1].pathElements.push(d)}),b}function t(a,b,d){for(var e=new c.Svg.Path(b,d),f=0;f<a.length;f++)for(var g=a[f],h=0;h<g.pathElements.length;h++)e.pathElements.push(g.pathElements[h]);return e}var u={m:["x","y"],l:["x","y"],c:["x1","y1","x2","y2","x","y"],a:["rx","ry","xAr","lAf","sf","x","y"]},v={accuracy:3};c.Svg.Path=c.Class.extend({constructor:f,position:g,remove:h,move:i,line:j,curve:k,arc:l,scale:o,translate:p,transform:q,parse:m,stringify:n,clone:r,splitByCommand:s}),c.Svg.Path.elementDescriptions=u,c.Svg.Path.join=t}(window,document,a),function(a,b,c){"use strict";function d(a,b,c,d){this.units=a,this.counterUnits=a===f.x?f.y:f.x,this.chartRect=b,this.axisLength=b[a.rectEnd]-b[a.rectStart],this.gridOffset=b[a.rectOffset],this.ticks=c,this.options=d}function e(a,b,d,e,f){var g=e["axis"+this.units.pos.toUpperCase()],h=this.ticks.map(this.projectValue.bind(this)),i=this.ticks.map(g.labelInterpolationFnc);h.forEach(function(j,k){var l,m={x:0,y:0};l=h[k+1]?h[k+1]-j:Math.max(this.axisLength-j,30),c.isFalseyButZero(i[k])&&""!==i[k]||("x"===this.units.pos?(j=this.chartRect.x1+j,m.x=e.axisX.labelOffset.x,"start"===e.axisX.position?m.y=this.chartRect.padding.top+e.axisX.labelOffset.y+(d?5:20):m.y=this.chartRect.y1+e.axisX.labelOffset.y+(d?5:20)):(j=this.chartRect.y1-j,m.y=e.axisY.labelOffset.y-(d?l:0),"start"===e.axisY.position?m.x=d?this.chartRect.padding.left+e.axisY.labelOffset.x:this.chartRect.x1-10:m.x=this.chartRect.x2+e.axisY.labelOffset.x+10),g.showGrid&&c.createGrid(j,k,this,this.gridOffset,this.chartRect[this.counterUnits.len](),a,[e.classNames.grid,e.classNames[this.units.dir]],f),g.showLabel&&c.createLabel(j,l,k,i,this,g.offset,m,b,[e.classNames.label,e.classNames[this.units.dir],e.classNames[g.position]],d,f))}.bind(this))}var f={x:{pos:"x",len:"width",dir:"horizontal",rectStart:"x1",rectEnd:"x2",rectOffset:"y2"},y:{pos:"y",len:"height",dir:"vertical",rectStart:"y2",rectEnd:"y1",rectOffset:"x1"}};c.Axis=c.Class.extend({constructor:d,createGridAndLabels:e,projectValue:function(a,b,c){throw new Error("Base axis can't be instantiated!")}}),c.Axis.units=f}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){var f=e.highLow||c.getHighLow(b.normalized,e,a.pos);this.bounds=c.getBounds(d[a.rectEnd]-d[a.rectStart],f,e.scaleMinSpace||20,e.onlyInteger),this.range={min:this.bounds.min,max:this.bounds.max},c.AutoScaleAxis["super"].constructor.call(this,a,d,this.bounds.values,e)}function e(a){return this.axisLength*(+c.getMultiValue(a,this.units.pos)-this.bounds.min)/this.bounds.range}c.AutoScaleAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){var f=e.highLow||c.getHighLow(b.normalized,e,a.pos);this.divisor=e.divisor||1,this.ticks=e.ticks||c.times(this.divisor).map(function(a,b){return f.low+(f.high-f.low)/this.divisor*b}.bind(this)),this.ticks.sort(function(a,b){return a-b}),this.range={min:f.low,max:f.high},c.FixedScaleAxis["super"].constructor.call(this,a,d,this.ticks,e),this.stepLength=this.axisLength/this.divisor}function e(a){return this.axisLength*(+c.getMultiValue(a,this.units.pos)-this.range.min)/(this.range.max-this.range.min)}c.FixedScaleAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a,b,d,e){c.StepAxis["super"].constructor.call(this,a,d,e.ticks,e),this.stepLength=this.axisLength/(e.ticks.length-(e.stretch?1:0))}function e(a,b){return this.stepLength*b}c.StepAxis=c.Axis.extend({constructor:d,projectValue:e})}(window,document,a),function(a,b,c){"use strict";function d(a){this.data=c.normalizeData(this.data);var b={raw:this.data,normalized:c.getDataArray(this.data,a.reverseData,!0)};this.svg=c.createSvg(this.container,a.width,a.height,a.classNames.chart);var d,e,g=this.svg.elem("g").addClass(a.classNames.gridGroup),h=this.svg.elem("g"),i=this.svg.elem("g").addClass(a.classNames.labelGroup),j=c.createChartRect(this.svg,a,f.padding);d=void 0===a.axisX.type?new c.StepAxis(c.Axis.units.x,b,j,c.extend({},a.axisX,{ticks:b.raw.labels,stretch:a.fullWidth})):a.axisX.type.call(c,c.Axis.units.x,b,j,a.axisX),e=void 0===a.axisY.type?new c.AutoScaleAxis(c.Axis.units.y,b,j,c.extend({},a.axisY,{high:c.isNum(a.high)?a.high:a.axisY.high,low:c.isNum(a.low)?a.low:a.axisY.low})):a.axisY.type.call(c,c.Axis.units.y,b,j,a.axisY),d.createGridAndLabels(g,i,this.supportsForeignObject,a,this.eventEmitter),e.createGridAndLabels(g,i,this.supportsForeignObject,a,this.eventEmitter),b.raw.series.forEach(function(f,g){var i=h.elem("g");i.attr({"ct:series-name":f.name,"ct:meta":c.serialize(f.meta)}),i.addClass([a.classNames.series,f.className||a.classNames.series+"-"+c.alphaNumerate(g)].join(" "));var k=[],l=[];b.normalized[g].forEach(function(a,h){var i={x:j.x1+d.projectValue(a,h,b.normalized[g]),y:j.y1-e.projectValue(a,h,b.normalized[g])};k.push(i.x,i.y),l.push({value:a,valueIndex:h,meta:c.getMetaData(f,h)})}.bind(this));var m={lineSmooth:c.getSeriesOption(f,a,"lineSmooth"),showPoint:c.getSeriesOption(f,a,"showPoint"),showLine:c.getSeriesOption(f,a,"showLine"),showArea:c.getSeriesOption(f,a,"showArea"),areaBase:c.getSeriesOption(f,a,"areaBase")},n="function"==typeof m.lineSmooth?m.lineSmooth:m.lineSmooth?c.Interpolation.monotoneCubic():c.Interpolation.none(),o=n(k,l);if(m.showPoint&&o.pathElements.forEach(function(b){var h=i.elem("line",{x1:b.x,y1:b.y,x2:b.x+.01,y2:b.y},a.classNames.point).attr({"ct:value":[b.data.value.x,b.data.value.y].filter(c.isNum).join(","),"ct:meta":b.data.meta});this.eventEmitter.emit("draw",{type:"point",value:b.data.value,index:b.data.valueIndex,meta:b.data.meta,series:f,seriesIndex:g,axisX:d,axisY:e,group:i,element:h,x:b.x,y:b.y})}.bind(this)),m.showLine){var p=i.elem("path",{d:o.stringify()},a.classNames.line,!0);this.eventEmitter.emit("draw",{type:"line",values:b.normalized[g],path:o.clone(),chartRect:j,index:g,series:f,seriesIndex:g,axisX:d,axisY:e,group:i,element:p})}if(m.showArea&&e.range){var q=Math.max(Math.min(m.areaBase,e.range.max),e.range.min),r=j.y1-e.projectValue(q);o.splitByCommand("M").filter(function(a){return a.pathElements.length>1}).map(function(a){var b=a.pathElements[0],c=a.pathElements[a.pathElements.length-1];return a.clone(!0).position(0).remove(1).move(b.x,r).line(b.x,b.y).position(a.pathElements.length+1).line(c.x,r)}).forEach(function(c){var h=i.elem("path",{d:c.stringify()},a.classNames.area,!0);this.eventEmitter.emit("draw",{type:"area",values:b.normalized[g],path:c.clone(),series:f,seriesIndex:g,axisX:d,axisY:e,chartRect:j,index:g,group:i,element:h})}.bind(this))}}.bind(this)),this.eventEmitter.emit("created",{bounds:e.bounds,chartRect:j,axisX:d,axisY:e,svg:this.svg,options:a})}function e(a,b,d,e){c.Line["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,type:void 0,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,showLine:!0,showPoint:!0,showArea:!1,areaBase:0,lineSmooth:!0,low:void 0,high:void 0,chartPadding:{top:15,right:15,bottom:5,left:10},fullWidth:!1,reverseData:!1,classNames:{chart:"ct-chart-line",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",line:"ct-line",point:"ct-point",area:"ct-area",grid:"ct-grid",gridGroup:"ct-grids",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Line=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a){this.data=c.normalizeData(this.data);var b,d={raw:this.data,normalized:a.distributeSeries?c.getDataArray(this.data,a.reverseData,a.horizontalBars?"x":"y").map(function(a){return[a]}):c.getDataArray(this.data,a.reverseData,a.horizontalBars?"x":"y")};this.svg=c.createSvg(this.container,a.width,a.height,a.classNames.chart+(a.horizontalBars?" "+a.classNames.horizontalBars:""));var e=this.svg.elem("g").addClass(a.classNames.gridGroup),g=this.svg.elem("g"),h=this.svg.elem("g").addClass(a.classNames.labelGroup);if(a.stackBars&&0!==d.normalized.length){var i=c.serialMap(d.normalized,function(){return Array.prototype.slice.call(arguments).map(function(a){return a}).reduce(function(a,b){return{x:a.x+(b&&b.x)||0,y:a.y+(b&&b.y)||0}},{x:0,y:0})});b=c.getHighLow([i],c.extend({},a,{referenceValue:0}),a.horizontalBars?"x":"y")}else b=c.getHighLow(d.normalized,c.extend({},a,{referenceValue:0}),a.horizontalBars?"x":"y");b.high=+a.high||(0===a.high?0:b.high),b.low=+a.low||(0===a.low?0:b.low);var j,k,l,m,n,o=c.createChartRect(this.svg,a,f.padding);k=a.distributeSeries&&a.stackBars?d.raw.labels.slice(0,1):d.raw.labels,a.horizontalBars?(j=m=void 0===a.axisX.type?new c.AutoScaleAxis(c.Axis.units.x,d,o,c.extend({},a.axisX,{highLow:b,referenceValue:0})):a.axisX.type.call(c,c.Axis.units.x,d,o,c.extend({},a.axisX,{highLow:b,referenceValue:0})),l=n=void 0===a.axisY.type?new c.StepAxis(c.Axis.units.y,d,o,{ticks:k}):a.axisY.type.call(c,c.Axis.units.y,d,o,a.axisY)):(l=m=void 0===a.axisX.type?new c.StepAxis(c.Axis.units.x,d,o,{ticks:k}):a.axisX.type.call(c,c.Axis.units.x,d,o,a.axisX),j=n=void 0===a.axisY.type?new c.AutoScaleAxis(c.Axis.units.y,d,o,c.extend({},a.axisY,{highLow:b,referenceValue:0})):a.axisY.type.call(c,c.Axis.units.y,d,o,c.extend({},a.axisY,{highLow:b,referenceValue:0})));var p=a.horizontalBars?o.x1+j.projectValue(0):o.y1-j.projectValue(0),q=[]; +l.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),j.createGridAndLabels(e,h,this.supportsForeignObject,a,this.eventEmitter),d.raw.series.forEach(function(b,e){var f,h,i=e-(d.raw.series.length-1)/2;f=a.distributeSeries&&!a.stackBars?l.axisLength/d.normalized.length/2:a.distributeSeries&&a.stackBars?l.axisLength/2:l.axisLength/d.normalized[e].length/2,h=g.elem("g"),h.attr({"ct:series-name":b.name,"ct:meta":c.serialize(b.meta)}),h.addClass([a.classNames.series,b.className||a.classNames.series+"-"+c.alphaNumerate(e)].join(" ")),d.normalized[e].forEach(function(g,k){var r,s,t,u;if(u=a.distributeSeries&&!a.stackBars?e:a.distributeSeries&&a.stackBars?0:k,r=a.horizontalBars?{x:o.x1+j.projectValue(g&&g.x?g.x:0,k,d.normalized[e]),y:o.y1-l.projectValue(g&&g.y?g.y:0,u,d.normalized[e])}:{x:o.x1+l.projectValue(g&&g.x?g.x:0,u,d.normalized[e]),y:o.y1-j.projectValue(g&&g.y?g.y:0,k,d.normalized[e])},l instanceof c.StepAxis&&(l.options.stretch||(r[l.units.pos]+=f*(a.horizontalBars?-1:1)),r[l.units.pos]+=a.stackBars||a.distributeSeries?0:i*a.seriesBarDistance*(a.horizontalBars?-1:1)),t=q[k]||p,q[k]=t-(p-r[l.counterUnits.pos]),void 0!==g){var v={};v[l.units.pos+"1"]=r[l.units.pos],v[l.units.pos+"2"]=r[l.units.pos],!a.stackBars||"accumulate"!==a.stackMode&&a.stackMode?(v[l.counterUnits.pos+"1"]=p,v[l.counterUnits.pos+"2"]=r[l.counterUnits.pos]):(v[l.counterUnits.pos+"1"]=t,v[l.counterUnits.pos+"2"]=q[k]),v.x1=Math.min(Math.max(v.x1,o.x1),o.x2),v.x2=Math.min(Math.max(v.x2,o.x1),o.x2),v.y1=Math.min(Math.max(v.y1,o.y2),o.y1),v.y2=Math.min(Math.max(v.y2,o.y2),o.y1),s=h.elem("line",v,a.classNames.bar).attr({"ct:value":[g.x,g.y].filter(c.isNum).join(","),"ct:meta":c.getMetaData(b,k)}),this.eventEmitter.emit("draw",c.extend({type:"bar",value:g,index:k,meta:c.getMetaData(b,k),series:b,seriesIndex:e,axisX:m,axisY:n,chartRect:o,group:h,element:s},v))}}.bind(this))}.bind(this)),this.eventEmitter.emit("created",{bounds:j.bounds,chartRect:o,axisX:m,axisY:n,svg:this.svg,options:a})}function e(a,b,d,e){c.Bar["super"].constructor.call(this,a,b,f,c.extend({},f,d),e)}var f={axisX:{offset:30,position:"end",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:30,onlyInteger:!1},axisY:{offset:40,position:"start",labelOffset:{x:0,y:0},showLabel:!0,showGrid:!0,labelInterpolationFnc:c.noop,scaleMinSpace:20,onlyInteger:!1},width:void 0,height:void 0,high:void 0,low:void 0,chartPadding:{top:15,right:15,bottom:5,left:10},seriesBarDistance:15,stackBars:!1,stackMode:"accumulate",horizontalBars:!1,distributeSeries:!1,reverseData:!1,classNames:{chart:"ct-chart-bar",horizontalBars:"ct-horizontal-bars",label:"ct-label",labelGroup:"ct-labels",series:"ct-series",bar:"ct-bar",grid:"ct-grid",gridGroup:"ct-grids",vertical:"ct-vertical",horizontal:"ct-horizontal",start:"ct-start",end:"ct-end"}};c.Bar=c.Base.extend({constructor:e,createChart:d})}(window,document,a),function(a,b,c){"use strict";function d(a,b,c){var d=b.x>a.x;return d&&"explode"===c||!d&&"implode"===c?"start":d&&"implode"===c||!d&&"explode"===c?"end":"middle"}function e(a){this.data=c.normalizeData(this.data);var b,e,f,h,i,j=[],k=a.startAngle,l=c.getDataArray(this.data,a.reverseData);this.svg=c.createSvg(this.container,a.width,a.height,a.donut?a.classNames.chartDonut:a.classNames.chartPie),e=c.createChartRect(this.svg,a,g.padding),f=Math.min(e.width()/2,e.height()/2),i=a.total||l.reduce(function(a,b){return a+b},0);var m=c.quantity(a.donutWidth);"%"===m.unit&&(m.value*=f/100),f-=a.donut?m.value/2:0,h="outside"===a.labelPosition||a.donut?f:"center"===a.labelPosition?0:f/2,h+=a.labelOffset;var n={x:e.x1+e.width()/2,y:e.y2+e.height()/2},o=1===this.data.series.filter(function(a){return a.hasOwnProperty("value")?0!==a.value:0!==a}).length;a.showLabel&&(b=this.svg.elem("g",null,null,!0));for(var p=0;p<this.data.series.length;p++)if(0!==l[p]||!a.ignoreEmptyValues){var q=this.data.series[p];j[p]=this.svg.elem("g",null,null,!0),j[p].attr({"ct:series-name":q.name}),j[p].addClass([a.classNames.series,q.className||a.classNames.series+"-"+c.alphaNumerate(p)].join(" "));var r=k+l[p]/i*360,s=Math.max(0,k-(0===p||o?0:.2));r-s>=359.99&&(r=s+359.99);var t=c.polarToCartesian(n.x,n.y,f,s),u=c.polarToCartesian(n.x,n.y,f,r),v=new c.Svg.Path((!a.donut)).move(u.x,u.y).arc(f,f,0,r-k>180,0,t.x,t.y);a.donut||v.line(n.x,n.y);var w=j[p].elem("path",{d:v.stringify()},a.donut?a.classNames.sliceDonut:a.classNames.slicePie);if(w.attr({"ct:value":l[p],"ct:meta":c.serialize(q.meta)}),a.donut&&w.attr({style:"stroke-width: "+m.value+"px"}),this.eventEmitter.emit("draw",{type:"slice",value:l[p],totalDataSum:i,index:p,meta:q.meta,series:q,group:j[p],element:w,path:v.clone(),center:n,radius:f,startAngle:k,endAngle:r}),a.showLabel){var x=c.polarToCartesian(n.x,n.y,h,k+(r-k)/2),y=a.labelInterpolationFnc(this.data.labels&&!c.isFalseyButZero(this.data.labels[p])?this.data.labels[p]:l[p],p);if(y||0===y){var z=b.elem("text",{dx:x.x,dy:x.y,"text-anchor":d(n,x,a.labelDirection)},a.classNames.label).text(""+y);this.eventEmitter.emit("draw",{type:"label",index:p,group:b,element:z,text:""+y,x:x.x,y:x.y})}}k=r}this.eventEmitter.emit("created",{chartRect:e,svg:this.svg,options:a})}function f(a,b,d,e){c.Pie["super"].constructor.call(this,a,b,g,c.extend({},g,d),e)}var g={width:void 0,height:void 0,chartPadding:5,classNames:{chartPie:"ct-chart-pie",chartDonut:"ct-chart-donut",series:"ct-series",slicePie:"ct-slice-pie",sliceDonut:"ct-slice-donut",label:"ct-label"},startAngle:0,total:void 0,donut:!1,donutWidth:60,showLabel:!0,labelOffset:0,labelPosition:"inside",labelInterpolationFnc:c.noop,labelDirection:"neutral",reverseData:!1,ignoreEmptyValues:!1};c.Pie=c.Base.extend({constructor:f,createChart:e,determineAnchorPosition:d})}(window,document,a),a}); +//# sourceMappingURL=chartist.min.js.map \ No newline at end of file diff --git a/plugins/clockpicker/css/bootstrap-clockpicker.min.css b/plugins/clockpicker/css/bootstrap-clockpicker.min.css new file mode 100644 index 0000000..d367786 --- /dev/null +++ b/plugins/clockpicker/css/bootstrap-clockpicker.min.css @@ -0,0 +1,5 @@ +/*! + * ClockPicker v0.0.7 for Bootstrap (http://weareoutman.github.io/clockpicker/) + * Copyright 2014 Wang Shenwei. + * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/master/LICENSE) + */.clockpicker .input-group-addon{cursor:pointer}.clockpicker-moving{cursor:move}.clockpicker-align-left.popover>.arrow{left:25px}.clockpicker-align-top.popover>.arrow{top:17px}.clockpicker-align-right.popover>.arrow{left:auto;right:25px}.clockpicker-align-bottom.popover>.arrow{top:auto;bottom:6px}.clockpicker-popover .popover-title{background-color:#fff;color:#999;font-size:24px;font-weight:700;line-height:30px;text-align:center}.clockpicker-popover .popover-title span{cursor:pointer}.clockpicker-popover .popover-content{background-color:#f8f8f8;padding:12px}.popover-content:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.clockpicker-plate{background-color:#fff;border:1px solid #ccc;border-radius:50%;width:200px;height:200px;overflow:visible;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clockpicker-canvas,.clockpicker-dial{width:200px;height:200px;position:absolute;left:-1px;top:-1px}.clockpicker-minutes{visibility:hidden}.clockpicker-tick{border-radius:50%;color:#666;line-height:26px;text-align:center;width:26px;height:26px;position:absolute;cursor:pointer}.clockpicker-tick.active,.clockpicker-tick:hover{background-color:#c0e5f7;background-color:rgba(0,149,221,.25)}.clockpicker-button{background-image:none;background-color:#fff;border-width:1px 0 0;border-top-left-radius:0;border-top-right-radius:0;margin:0;padding:10px 0}.clockpicker-button:hover{background-image:none;background-color:#ebebeb}.clockpicker-button:focus{outline:0!important}.clockpicker-dial{-webkit-transition:-webkit-transform 350ms,opacity 350ms;-moz-transition:-moz-transform 350ms,opacity 350ms;-ms-transition:-ms-transform 350ms,opacity 350ms;-o-transition:-o-transform 350ms,opacity 350ms;transition:transform 350ms,opacity 350ms}.clockpicker-dial-out{opacity:0}.clockpicker-hours.clockpicker-dial-out{-webkit-transform:scale(1.2,1.2);-moz-transform:scale(1.2,1.2);-ms-transform:scale(1.2,1.2);-o-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.clockpicker-minutes.clockpicker-dial-out{-webkit-transform:scale(.8,.8);-moz-transform:scale(.8,.8);-ms-transform:scale(.8,.8);-o-transform:scale(.8,.8);transform:scale(.8,.8)}.clockpicker-canvas{-webkit-transition:opacity 175ms;-moz-transition:opacity 175ms;-ms-transition:opacity 175ms;-o-transition:opacity 175ms;transition:opacity 175ms}.clockpicker-canvas-out{opacity:.25}.clockpicker-canvas-bearing,.clockpicker-canvas-fg{stroke:none;fill:#0095dd}.clockpicker-canvas-bg{stroke:none;fill:#c0e5f7}.clockpicker-canvas-bg-trans{fill:rgba(0,149,221,.25)}.clockpicker-canvas line{stroke:#0095dd;stroke-width:1;stroke-linecap:round}.clockpicker-button.am-button{margin:1px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px}.clockpicker-button.pm-button{margin:1px 1px 1px 136px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px} \ No newline at end of file diff --git a/plugins/clockpicker/js/bootstrap-clockpicker.min.js b/plugins/clockpicker/js/bootstrap-clockpicker.min.js new file mode 100644 index 0000000..ad8b54f --- /dev/null +++ b/plugins/clockpicker/js/bootstrap-clockpicker.min.js @@ -0,0 +1,6 @@ +/*! + * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/) + * Copyright 2014 Wang Shenwei. + * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/master/LICENSE) + */ +!function(){function t(t){return document.createElementNS(a,t)}function i(t){return(10>t?"0":"")+t}function e(t){var i=++v+"";return t?t+i:i}function s(s,n){function a(t,i){var e=h.offset(),s=/^touch/.test(t.type),c=e.left+m,a=e.top+m,l=(s?t.originalEvent.touches[0]:t).pageX-c,u=(s?t.originalEvent.touches[0]:t).pageY-a,f=Math.sqrt(l*l+u*u),v=!1;if(!i||!(g-w>f||f>g+w)){t.preventDefault();var b=setTimeout(function(){o.addClass("clockpicker-moving")},200);p&&h.append(H.canvas),H.setHand(l,u,!i,!0),r.off(k).on(k,function(t){t.preventDefault();var i=/^touch/.test(t.type),e=(i?t.originalEvent.touches[0]:t).pageX-c,s=(i?t.originalEvent.touches[0]:t).pageY-a;(v||e!==l||s!==u)&&(v=!0,H.setHand(e,s,!1,!0))}),r.off(d).on(d,function(t){r.off(d),t.preventDefault();var e=/^touch/.test(t.type),s=(e?t.originalEvent.changedTouches[0]:t).pageX-c,p=(e?t.originalEvent.changedTouches[0]:t).pageY-a;(i||v)&&s===l&&p===u&&H.setHand(s,p),"hours"===H.currentView?H.toggleView("minutes",M/2):n.autoclose&&(H.minutesView.addClass("clockpicker-dial-out"),setTimeout(function(){H.done()},M/2)),h.prepend(O),clearTimeout(b),o.removeClass("clockpicker-moving"),r.off(k)})}}var l=c(A),h=l.find(".clockpicker-plate"),f=l.find(".clockpicker-hours"),v=l.find(".clockpicker-minutes"),T=l.find(".clockpicker-am-pm-block"),V="INPUT"===s.prop("tagName"),C=V?s:s.find("input"),P=s.find(".input-group-addon"),H=this;if(this.id=e("cp"),this.element=s,this.options=n,this.isAppended=!1,this.isShown=!1,this.currentView="hours",this.isInput=V,this.input=C,this.addon=P,this.popover=l,this.plate=h,this.hoursView=f,this.minutesView=v,this.amPmBlock=T,this.spanHours=l.find(".clockpicker-span-hours"),this.spanMinutes=l.find(".clockpicker-span-minutes"),this.spanAmPm=l.find(".clockpicker-span-am-pm"),this.amOrPm="PM",n.twelvehour){{var x=['<div class="clockpicker-am-pm-block">','<button type="button" class="btn btn-sm btn-default clockpicker-button clockpicker-am-button">',"AM</button>",'<button type="button" class="btn btn-sm btn-default clockpicker-button clockpicker-pm-button">',"PM</button>","</div>"].join("");c(x)}c('<button type="button" class="btn btn-sm btn-default clockpicker-button am-button">AM</button>').on("click",function(){H.amOrPm="AM",c(".clockpicker-span-am-pm").empty().append("AM")}).appendTo(this.amPmBlock),c('<button type="button" class="btn btn-sm btn-default clockpicker-button pm-button">PM</button>').on("click",function(){H.amOrPm="PM",c(".clockpicker-span-am-pm").empty().append("PM")}).appendTo(this.amPmBlock)}n.autoclose||c('<button type="button" class="btn btn-sm btn-default btn-block clockpicker-button">'+n.donetext+"</button>").click(c.proxy(this.done,this)).appendTo(l),"top"!==n.placement&&"bottom"!==n.placement||"top"!==n.align&&"bottom"!==n.align||(n.align="left"),"left"!==n.placement&&"right"!==n.placement||"left"!==n.align&&"right"!==n.align||(n.align="top"),l.addClass(n.placement),l.addClass("clockpicker-align-"+n.align),this.spanHours.click(c.proxy(this.toggleView,this,"hours")),this.spanMinutes.click(c.proxy(this.toggleView,this,"minutes")),C.on("focus.clockpicker click.clockpicker",c.proxy(this.show,this)),P.on("click.clockpicker",c.proxy(this.toggle,this));var E,S,I,D=c('<div class="clockpicker-tick"></div>');if(n.twelvehour)for(E=1;13>E;E+=1){S=D.clone(),I=E/6*Math.PI;var B=g;S.css("font-size","120%"),S.css({left:m+Math.sin(I)*B-w,top:m-Math.cos(I)*B-w}),S.html(0===E?"00":E),f.append(S),S.on(u,a)}else for(E=0;24>E;E+=1){S=D.clone(),I=E/6*Math.PI;var z=E>0&&13>E,B=z?b:g;S.css({left:m+Math.sin(I)*B-w,top:m-Math.cos(I)*B-w}),z&&S.css("font-size","120%"),S.html(0===E?"00":E),f.append(S),S.on(u,a)}for(E=0;60>E;E+=5)S=D.clone(),I=E/30*Math.PI,S.css({left:m+Math.sin(I)*g-w,top:m-Math.cos(I)*g-w}),S.css("font-size","120%"),S.html(i(E)),v.append(S),S.on(u,a);if(h.on(u,function(t){0===c(t.target).closest(".clockpicker-tick").length&&a(t,!0)}),p){var O=l.find(".clockpicker-canvas"),j=t("svg");j.setAttribute("class","clockpicker-svg"),j.setAttribute("width",y),j.setAttribute("height",y);var L=t("g");L.setAttribute("transform","translate("+m+","+m+")");var U=t("circle");U.setAttribute("class","clockpicker-canvas-bearing"),U.setAttribute("cx",0),U.setAttribute("cy",0),U.setAttribute("r",2);var W=t("line");W.setAttribute("x1",0),W.setAttribute("y1",0);var N=t("circle");N.setAttribute("class","clockpicker-canvas-bg"),N.setAttribute("r",w);var X=t("circle");X.setAttribute("class","clockpicker-canvas-fg"),X.setAttribute("r",3.5),L.appendChild(W),L.appendChild(N),L.appendChild(X),L.appendChild(U),j.appendChild(L),O.append(j),this.hand=W,this.bg=N,this.fg=X,this.bearing=U,this.g=L,this.canvas=O}}var o,c=window.jQuery,n=c(window),r=c(document),a="http://www.w3.org/2000/svg",p="SVGAngle"in window&&function(){var t,i=document.createElement("div");return i.innerHTML="<svg/>",t=(i.firstChild&&i.firstChild.namespaceURI)==a,i.innerHTML="",t}(),l=function(){var t=document.createElement("div").style;return"transition"in t||"WebkitTransition"in t||"MozTransition"in t||"msTransition"in t||"OTransition"in t}(),h="ontouchstart"in window,u="mousedown"+(h?" touchstart":""),k="mousemove.clockpicker"+(h?" touchmove.clockpicker":""),d="mouseup.clockpicker"+(h?" touchend.clockpicker":""),f=navigator.vibrate?"vibrate":navigator.webkitVibrate?"webkitVibrate":null,v=0,m=100,g=80,b=54,w=13,y=2*m,M=l?350:1,A=['<div class="popover clockpicker-popover">','<div class="arrow"></div>','<div class="popover-title">','<span class="clockpicker-span-hours text-primary"></span>'," : ",'<span class="clockpicker-span-minutes"></span>','<span class="clockpicker-span-am-pm"></span>',"</div>",'<div class="popover-content">','<div class="clockpicker-plate">','<div class="clockpicker-canvas"></div>','<div class="clockpicker-dial clockpicker-hours"></div>','<div class="clockpicker-dial clockpicker-minutes clockpicker-dial-out"></div>',"</div>",'<span class="clockpicker-am-pm-block">',"</span>","</div>","</div>"].join("");s.DEFAULTS={"default":"",fromnow:0,placement:"bottom",align:"left",donetext:"完成",autoclose:!1,twelvehour:!1,vibrate:!0},s.prototype.toggle=function(){this[this.isShown?"hide":"show"]()},s.prototype.locate=function(){var t=this.element,i=this.popover,e=t.offset(),s=t.outerWidth(),o=t.outerHeight(),c=this.options.placement,n=this.options.align,r={};switch(i.show(),c){case"bottom":r.top=e.top+o;break;case"right":r.left=e.left+s;break;case"top":r.top=e.top-i.outerHeight();break;case"left":r.left=e.left-i.outerWidth()}switch(n){case"left":r.left=e.left;break;case"right":r.left=e.left+s-i.outerWidth();break;case"top":r.top=e.top;break;case"bottom":r.top=e.top+o-i.outerHeight()}i.css(r)},s.prototype.show=function(){if(!this.isShown){var t=this;this.isAppended||(o=c(document.body).append(this.popover),n.on("resize.clockpicker"+this.id,function(){t.isShown&&t.locate()}),this.isAppended=!0);var e=((this.input.prop("value")||this.options["default"]||"")+"").split(":");if("now"===e[0]){var s=new Date(+new Date+this.options.fromnow);e=[s.getHours(),s.getMinutes()]}this.hours=+e[0]||0,this.minutes=+e[1]||0,this.spanHours.html(i(this.hours)),this.spanMinutes.html(i(this.minutes)),this.toggleView("hours"),this.locate(),this.isShown=!0,r.on("click.clockpicker."+this.id+" focusin.clockpicker."+this.id,function(i){var e=c(i.target);0===e.closest(t.popover).length&&0===e.closest(t.addon).length&&0===e.closest(t.input).length&&t.hide()}),r.on("keyup.clockpicker."+this.id,function(i){27===i.keyCode&&t.hide()})}},s.prototype.hide=function(){this.isShown=!1,r.off("click.clockpicker."+this.id+" focusin.clockpicker."+this.id),r.off("keyup.clockpicker."+this.id),this.popover.hide()},s.prototype.toggleView=function(t,i){var e="hours"===t,s=e?this.hoursView:this.minutesView,o=e?this.minutesView:this.hoursView;this.currentView=t,this.spanHours.toggleClass("text-primary",e),this.spanMinutes.toggleClass("text-primary",!e),o.addClass("clockpicker-dial-out"),s.css("visibility","visible").removeClass("clockpicker-dial-out"),this.resetClock(i),clearTimeout(this.toggleViewTimer),this.toggleViewTimer=setTimeout(function(){o.css("visibility","hidden")},M)},s.prototype.resetClock=function(t){var i=this.currentView,e=this[i],s="hours"===i,o=Math.PI/(s?6:30),c=e*o,n=s&&e>0&&13>e?b:g,r=Math.sin(c)*n,a=-Math.cos(c)*n,l=this;p&&t?(l.canvas.addClass("clockpicker-canvas-out"),setTimeout(function(){l.canvas.removeClass("clockpicker-canvas-out"),l.setHand(r,a)},t)):this.setHand(r,a)},s.prototype.setHand=function(t,e,s,o){var n,r=Math.atan2(t,-e),a="hours"===this.currentView,l=Math.PI/(a||s?6:30),h=Math.sqrt(t*t+e*e),u=this.options,k=a&&(g+b)/2>h,d=k?b:g;if(u.twelvehour&&(d=g),0>r&&(r=2*Math.PI+r),n=Math.round(r/l),r=n*l,u.twelvehour?a?0===n&&(n=12):(s&&(n*=5),60===n&&(n=0)):a?(12===n&&(n=0),n=k?0===n?12:n:0===n?0:n+12):(s&&(n*=5),60===n&&(n=0)),this[this.currentView]!==n&&f&&this.options.vibrate&&(this.vibrateTimer||(navigator[f](10),this.vibrateTimer=setTimeout(c.proxy(function(){this.vibrateTimer=null},this),100))),this[this.currentView]=n,this[a?"spanHours":"spanMinutes"].html(i(n)),!p)return void this[a?"hoursView":"minutesView"].find(".clockpicker-tick").each(function(){var t=c(this);t.toggleClass("active",n===+t.html())});o||!a&&n%5?(this.g.insertBefore(this.hand,this.bearing),this.g.insertBefore(this.bg,this.fg),this.bg.setAttribute("class","clockpicker-canvas-bg clockpicker-canvas-bg-trans")):(this.g.insertBefore(this.hand,this.bg),this.g.insertBefore(this.fg,this.bg),this.bg.setAttribute("class","clockpicker-canvas-bg"));var v=Math.sin(r)*d,m=-Math.cos(r)*d;this.hand.setAttribute("x2",v),this.hand.setAttribute("y2",m),this.bg.setAttribute("cx",v),this.bg.setAttribute("cy",m),this.fg.setAttribute("cx",v),this.fg.setAttribute("cy",m)},s.prototype.done=function(){this.hide();var t=this.input.prop("value"),e=i(this.hours)+":"+i(this.minutes);this.options.twelvehour&&(e+=this.amOrPm),this.input.prop("value",e),e!==t&&(this.input.triggerHandler("change"),this.isInput||this.element.trigger("change")),this.options.autoclose&&this.input.trigger("blur")},s.prototype.remove=function(){this.element.removeData("clockpicker"),this.input.off("focus.clockpicker click.clockpicker"),this.addon.off("click.clockpicker"),this.isShown&&this.hide(),this.isAppended&&(n.off("resize.clockpicker"+this.id),this.popover.remove())},c.fn.clockpicker=function(t){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=c(this),o=e.data("clockpicker");if(o)"function"==typeof o[t]&&o[t].apply(o,i);else{var n=c.extend({},s.DEFAULTS,e.data(),"object"==typeof t&&t);e.data("clockpicker",new s(e,n))}})}}(); \ No newline at end of file diff --git a/plugins/count-down/jquery.lwtCountdown-1.0.js b/plugins/count-down/jquery.lwtCountdown-1.0.js new file mode 100644 index 0000000..b32cc08 --- /dev/null +++ b/plugins/count-down/jquery.lwtCountdown-1.0.js @@ -0,0 +1,162 @@ +/*! + * jQuery Countdown plugin v1.0 + * http://www.littlewebthings.com/projects/countdown/ + * + * Copyright 2010, Vassilis Dourdounis + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +(function($){ + + $.fn.countDown = function (options) { + + config = {}; + + $.extend(config, options); + + diffSecs = this.setCountDown(config); + + if (config.onComplete) + { + $.data($(this)[0], 'callback', config.onComplete); + } + if (config.omitWeeks) + { + $.data($(this)[0], 'omitWeeks', config.omitWeeks); + } + + $('#' + $(this).attr('id') + ' .digit').html('<div class="top"></div><div class="bottom"></div>'); + $(this).doCountDown($(this).attr('id'), diffSecs, 500); + + return this; + + }; + + $.fn.stopCountDown = function () { + clearTimeout($.data(this[0], 'timer')); + }; + + $.fn.startCountDown = function () { + this.doCountDown($(this).attr('id'),$.data(this[0], 'diffSecs'), 500); + }; + + $.fn.setCountDown = function (options) { + var targetTime = new Date(); + + if (options.targetDate) + { + targetTime = new Date(options.targetDate.month + '/' + options.targetDate.day + '/' + options.targetDate.year + ' ' + options.targetDate.hour + ':' + options.targetDate.min + ':' + options.targetDate.sec + (options.targetDate.utc ? ' UTC' : '')); + } + else if (options.targetOffset) + { + targetTime.setFullYear(options.targetOffset.year + targetTime.getFullYear()); + targetTime.setMonth(options.targetOffset.month + targetTime.getMonth()); + targetTime.setDate(options.targetOffset.day + targetTime.getDate()); + targetTime.setHours(options.targetOffset.hour + targetTime.getHours()); + targetTime.setMinutes(options.targetOffset.min + targetTime.getMinutes()); + targetTime.setSeconds(options.targetOffset.sec + targetTime.getSeconds()); + } + + var nowTime = new Date(); + + diffSecs = Math.floor((targetTime.valueOf()-nowTime.valueOf())/1000); + + $.data(this[0], 'diffSecs', diffSecs); + + return diffSecs; + }; + + $.fn.doCountDown = function (id, diffSecs, duration) { + $this = $('#' + id); + if (diffSecs <= 0) + { + diffSecs = 0; + if ($.data($this[0], 'timer')) + { + clearTimeout($.data($this[0], 'timer')); + } + } + + secs = diffSecs % 60; + mins = Math.floor(diffSecs/60)%60; + hours = Math.floor(diffSecs/60/60)%24; + if ($.data($this[0], 'omitWeeks') == true) + { + days = Math.floor(diffSecs/60/60/24); + weeks = Math.floor(diffSecs/60/60/24/7); + } + else + { + days = Math.floor(diffSecs/60/60/24)%7; + weeks = Math.floor(diffSecs/60/60/24/7); + } + + $this.dashChangeTo(id, 'seconds_dash', secs, duration ? duration : 800); + $this.dashChangeTo(id, 'minutes_dash', mins, duration ? duration : 1200); + $this.dashChangeTo(id, 'hours_dash', hours, duration ? duration : 1200); + $this.dashChangeTo(id, 'days_dash', days, duration ? duration : 1200); + $this.dashChangeTo(id, 'weeks_dash', weeks, duration ? duration : 1200); + + $.data($this[0], 'diffSecs', diffSecs); + if (diffSecs > 0) + { + e = $this; + t = setTimeout(function() { e.doCountDown(id, diffSecs-1) } , 1000); + $.data(e[0], 'timer', t); + } + else if (cb = $.data($this[0], 'callback')) + { + $.data($this[0], 'callback')(); + } + + }; + + $.fn.dashChangeTo = function(id, dash, n, duration) { + $this = $('#' + id); + + for (var i=($this.find('.' + dash + ' .digit').length-1); i>=0; i--) + { + var d = n%10; + n = (n - d) / 10; + $this.digitChangeTo('#' + $this.attr('id') + ' .' + dash + ' .digit:eq('+i+')', d, duration); + } + }; + + $.fn.digitChangeTo = function (digit, n, duration) { + if (!duration) + { + duration = 800; + } + if ($(digit + ' div.top').html() != n + '') + { + + $(digit + ' div.top').css({'display': 'none'}); + $(digit + ' div.top').html((n ? n : '0')).slideDown(duration); + + + $(digit + ' div.bottom').animate({'height': ''}, duration, function() { + $(digit + ' div.bottom').html($(digit + ' div.top').html()); + $(digit + ' div.bottom').css({ 'display': 'block', 'height': '' }); + }); + } + }; + +})(jQuery); + + diff --git a/plugins/counterup/jquery.counterup.min.js b/plugins/counterup/jquery.counterup.min.js new file mode 100644 index 0000000..1fba82b --- /dev/null +++ b/plugins/counterup/jquery.counterup.min.js @@ -0,0 +1,8 @@ +/*! +* jquery.counterup.js 1.0 +* +* Copyright 2013, Benjamin Intal http://gambit.ph @bfintal +* Released under the GPL v2 License +* +* Date: Nov 26, 2013 +*/(function(e){"use strict";e.fn.counterUp=function(t){var n=e.extend({time:400,delay:10},t);return this.each(function(){var t=e(this),r=n,i=function(){var e=[],n=r.time/r.delay,i=t.text(),s=/[0-9]+,[0-9]+/.test(i);i=i.replace(/,/g,"");var o=/^[0-9]+$/.test(i),u=/^[0-9]+\.[0-9]+$/.test(i),a=u?(i.split(".")[1]||[]).length:0;for(var f=n;f>=1;f--){var l=parseInt(i/n*f);u&&(l=parseFloat(i/n*f).toFixed(a));if(s)while(/(\d+)(\d{3})/.test(l.toString()))l=l.toString().replace(/(\d+)(\d{3})/,"$1,$2");e.unshift(l)}t.data("counterup-nums",e);t.text("0");var c=function(){t.text(t.data("counterup-nums").shift());if(t.data("counterup-nums").length)setTimeout(t.data("counterup-func"),r.delay);else{delete t.data("counterup-nums");t.data("counterup-nums",null);t.data("counterup-func",null)}};t.data("counterup-func",c);setTimeout(t.data("counterup-func"),r.delay)};t.waypoint(i,{offset:"100%",triggerOnce:!0})})}})(jQuery); \ No newline at end of file diff --git a/plugins/custombox/css/custombox.min.css b/plugins/custombox/css/custombox.min.css new file mode 100644 index 0000000..8947056 --- /dev/null +++ b/plugins/custombox/css/custombox.min.css @@ -0,0 +1,10 @@ +/* + * custombox v3.0.0 - 2015-08-04 + * Modal Window Effects with transitions CSS3. + * http://dixso.github.io/custombox/ + * (c) 2015 Julio de la Calle - @dixso9 + * + * Under MIT License - http://opensource.org/licenses/MIT + */ + +.custombox-modal-wrapper,.custombox-overlay{right:0;top:0;bottom:0;left:0;position:fixed}.custombox-open,.custombox-open body{overflow:hidden}.custombox-perspective,.custombox-perspective body{-webkit-perspective:600px;perspective:600px;height:100%}.custombox-modal-container-fall,.custombox-modal-container-flip,.custombox-modal-container-rotate,.custombox-modal-container-sidefall,.custombox-modal-container-sign,.custombox-modal-container-slit{-webkit-perspective:1300px;perspective:1300px}.custombox-overlay-open{visibility:visible;opacity:1}.custombox-overlay{-webkit-transition-delay:0s;transition-delay:0s}.custombox-overlay-default{-webkit-transition-timing-function:linear;transition-timing-function:linear;-webkit-transition-property:opacity;transition-property:opacity;opacity:0}.custombox-modal-wrapper{outline:0;overflow:auto;text-align:center}.custombox-modal-container{margin:0 auto;position:relative}.custombox-modal img{max-width:100%;height:auto}.custombox-scrollbar{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.custombox-loading{position:fixed;-webkit-transform:translateY(-50%)translateX(-50%);-ms-transform:translateY(-50%)translateX(-50%);transform:translateY(-50%)translateX(-50%);top:50%;left:50%}.custombox-overlay-letmein{-webkit-transition-property:all;transition-property:all;-webkit-transition-timing-function:ease;transition-timing-function:ease;visibility:hidden}.custombox-overlay-open.custombox-overlay-slidetogether,.custombox-overlay-slidetogether{-webkit-transition-property:-webkit-transform ease-in-out;transition-property:transform ease-in-out}.custombox-overlay-open.custombox-overlay-letmein{-webkit-transform:rotateX(-2deg);transform:rotateX(-2deg);-webkit-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;visibility:visible;opacity:1}.custombox-overlay-slidetogether{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.custombox-overlay-open.custombox-overlay-slidetogether{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-overlay-corner{-webkit-transform:translateY(150px)translateX(150px);-ms-transform:translateY(150px)translateX(150px);transform:translateY(150px)translateX(150px);-webkit-transition-property:opacity,-webkit-transform,visibility;transition-property:opacity,transform,visibility}.custombox-overlay-open.custombox-overlay-corner{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform}.custombox-overlay-open.custombox-overlay-scale,.custombox-overlay-scale{-webkit-transition-property:-webkit-transform;transition-property:transform}.custombox-overlay-scale{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}.custombox-overlay-open.custombox-overlay-scale{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.custombox-overlay-door,.custombox-overlay-open.custombox-overlay-door{-webkit-transition-property:width ease-in-out;transition-property:width ease-in-out}.custombox-overlay-door{visibility:hidden;width:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.custombox-overlay-open.custombox-overlay-door{visibility:visible;width:100%}.custombox-container-push{overflow-x:hidden;-webkit-transition-property:-webkit-transform;transition-property:transform}.custombox-overlay-open.custombox-overlay-push,.custombox-overlay-push{-webkit-transition-property:-webkit-transform ease-in-out;transition-property:transform ease-in-out}.custombox-container-open.custombox-container-push{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.custombox-overlay-push{-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.custombox-overlay-open.custombox-overlay-push{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.custombox-open-contentscale body{background-color:#DDD}.custombox-container-contentscale{-webkit-transition:-webkit-transform .5s;transition:transform .5s;overflow:hidden;height:100%}.custombox-overlay-contentscale,.custombox-overlay-open.custombox-overlay-contentscale{-webkit-transition-property:-webkit-transform ease-in-out;transition-property:transform ease-in-out}.custombox-container-open.custombox-container-contentscale{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.custombox-overlay-contentscale{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.custombox-overlay-open.custombox-overlay-contentscale{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-modal-container-blur,.custombox-modal-fadein,.custombox-modal-flip-horizontal,.custombox-modal-flip-vertical,.custombox-modal-newspaper,.custombox-modal-open .custombox-modal-fall,.custombox-modal-rotate-bottom,.custombox-modal-rotate-left,.custombox-modal-superscaled,.custombox-overlay-blur,.custombox-overlay-newspaper,.custombox-overlay-open.custombox-overlay-makeway,.custombox-overlay-open.custombox-overlay-slip{-webkit-transition-property:all;transition-property:all}.custombox-container-open.custombox-container-makeway{height:100%;overflow:hidden}.custombox-container-open.custombox-container-makeway,.custombox-overlay-open.custombox-overlay-makeway{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0 50%;-ms-transform-origin:0 50%;transform-origin:0 50%;-webkit-animation:rotateRightSideFirst .5s forwards ease-in;animation:rotateRightSideFirst .5s forwards ease-in}@-webkit-keyframes rotateRightSideFirst{50%{-webkit-transform:translateZ(-50px)rotateY(5deg);transform:translateZ(-50px)rotateY(5deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:translateZ(-200px);transform:translateZ(-200px)}}@keyframes rotateRightSideFirst{50%{-webkit-transform:translateZ(-50px)rotateY(5deg);transform:translateZ(-50px)rotateY(5deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:translateZ(-200px);transform:translateZ(-200px)}}.custombox-container-open.custombox-container-slip,.custombox-overlay-open.custombox-overlay-slip{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-animation:OpenTop .5s forwards ease-in-out;animation:OpenTop .5s forwards ease-in-out}@-webkit-keyframes OpenTop{50%{-webkit-transform:rotateX(10deg);transform:rotateX(10deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes OpenTop{50%{-webkit-transform:rotateX(10deg);transform:rotateX(10deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.custombox-modal-fadein{-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);opacity:0;visibility:hidden}.custombox-modal-open .custombox-modal-fadein{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1;visibility:visible}.custombox-modal-container-slide>div,.custombox-modal-container-slidetogether>div{opacity:0;float:left}.custombox-modal-open>.custombox-modal-container-slide>div,.custombox-modal-open>.custombox-modal-container-slidetogether>div{opacity:1}.custombox-modal-slide-top{-webkit-transform:translateY(-300%);-ms-transform:translateY(-300%);transform:translateY(-300%)}.custombox-modal-open .custombox-modal-slide-top{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-modal-slide-left{-webkit-transform:translateX(-300%);-ms-transform:translateX(-300%);transform:translateX(-300%)}.custombox-modal-open .custombox-modal-slide-left{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.custombox-modal-slide-right{-webkit-transform:translateX(300%);-ms-transform:translateX(300%);transform:translateX(300%)}.custombox-modal-open .custombox-modal-slide-right{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.custombox-modal-slide-bottom{-webkit-transform:translateY(300%);-ms-transform:translateY(300%);transform:translateY(300%)}.custombox-modal-open .custombox-modal-slide-bottom{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-modal-newspaper{-webkit-transform:scale(0)rotate(720deg);-ms-transform:scale(0)rotate(720deg);transform:scale(0)rotate(720deg);opacity:0;position:absolute}.custombox-modal-open .custombox-modal-newspaper{-webkit-transform:scale(1)rotate(0);-ms-transform:scale(1)rotate(0);transform:scale(1)rotate(0);opacity:1}.custombox-modal-fall{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(600px)rotateX(20deg);transform:translateZ(600px)rotateX(20deg);opacity:0}.custombox-modal-open .custombox-modal-fall{-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transform:translateZ(0)rotateX(0);transform:translateZ(0)rotateX(0);opacity:1}.custombox-modal-wrapper-sidefall{overflow-x:hidden}.custombox-modal-sidefall{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translate(30%)translateZ(600px)rotate(10deg);transform:translate(30%)translateZ(600px)rotate(10deg);opacity:0}.custombox-modal-open .custombox-modal-sidefall{-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-property:all;transition-property:all;-webkit-transform:translate(0)translateZ(0)rotate(0);transform:translate(0)translateZ(0)rotate(0);opacity:1}.custombox-open-blur .custombox-container-blur{-webkit-filter:blur(3px);filter:blur(3px)}@media all and (-ms-high-contrast:none){.custombox-open-blur .custombox-container-blur{text-shadow:0 0 8px #000;color:rgba(255,255,255,0);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='3');zoom:1}}.custombox-modal-blur{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%);opacity:0;position:absolute}.custombox-modal-open .custombox-modal-blur{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);opacity:1}.custombox-modal-flip-horizontal{position:absolute;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotateY(-70deg);transform:rotateY(-70deg);opacity:0}.custombox-modal-open .custombox-modal-flip-horizontal{-webkit-transform:rotateY(0);transform:rotateY(0);opacity:1}.custombox-modal-flip-vertical{position:absolute;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotateX(-70deg);transform:rotateX(-70deg);opacity:0}.custombox-modal-open .custombox-modal-flip-vertical{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}.custombox-modal-sign{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotateX(-60deg);transform:rotateX(-60deg);-webkit-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;opacity:0;-webkit-transition-property:all;transition-property:all}.custombox-modal-open .custombox-modal-sign{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}.custombox-modal-superscaled{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2);opacity:0;position:absolute}.custombox-modal-open .custombox-modal-superscaled{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.custombox-modal-slit{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-3000px)rotateY(90deg);transform:translateZ(-3000px)rotateY(90deg);opacity:0}.custombox-modal-open .custombox-modal-slit{-webkit-animation:slit .7s forwards ease-out;animation:slit .7s forwards ease-out}.custombox-modal-rotatedown,.custombox-modal-swell{-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slit{50%{-webkit-transform:translateZ(-250px)rotateY(89deg);transform:translateZ(-250px)rotateY(89deg);opacity:1;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:translateZ(0)rotateY(0);transform:translateZ(0)rotateY(0);opacity:1}}@keyframes slit{50%{-webkit-transform:translateZ(-250px)rotateY(89deg);transform:translateZ(-250px)rotateY(89deg);opacity:1;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}100%{-webkit-transform:translateZ(0)rotateY(0);transform:translateZ(0)rotateY(0);opacity:1}}.custombox-modal-rotate-bottom{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateY(100%)rotateX(90deg);transform:translateY(100%)rotateX(90deg);-webkit-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;opacity:0;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;position:absolute}.custombox-modal-open .custombox-modal-rotate-bottom{-webkit-transform:translateY(0)rotateX(0);transform:translateY(0)rotateX(0);opacity:1}.custombox-modal-rotate-left{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(100px)translateX(-30%)rotateY(90deg);transform:translateZ(100px)translateX(-30%)rotateY(90deg);-webkit-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;opacity:0;position:absolute}.custombox-modal-open .custombox-modal-rotate-left{-webkit-transform:translateZ(0)translateX(0)rotateY(0);transform:translateZ(0)translateX(0)rotateY(0);opacity:1}.custombox-modal-container-letmein{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transform:rotateX(-2deg);transform:rotateX(-2deg);-webkit-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;opacity:1}.custombox-modal-letmein{opacity:0;-webkit-transform:translateY(300%);-ms-transform:translateY(300%);transform:translateY(300%);float:left}.custombox-modal-open .custombox-modal-letmein{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);opacity:1;-webkit-transition-property:all;transition-property:all}.custombox-modal-makeway{-webkit-transform:translateX(200%);-ms-transform:translateX(200%);transform:translateX(200%);opacity:0;float:left}.custombox-modal-open .custombox-modal-makeway{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);opacity:1}.custombox-modal-wrapper-makeway{overflow:hidden}.custombox-modal-slip{-webkit-transform:translateY(-350%);-ms-transform:translateY(-350%);transform:translateY(-350%)}.custombox-modal-open .custombox-modal-slip{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition-property:all;transition-property:all}.custombox-modal-corner{opacity:0;-webkit-transform:translateY(150px)translateX(150px);-ms-transform:translateY(150px)translateX(150px);transform:translateY(150px)translateX(150px);-webkit-transition-property:opacity,-webkit-transform,visibility;transition-property:opacity,transform,visibility}.custombox-modal-open .custombox-modal-corner{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);opacity:1;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform}.custombox-modal-slidetogether{-webkit-transform:translateY(-600%);-ms-transform:translateY(-600%);transform:translateY(-600%)}.custombox-modal-open .custombox-modal-slidetogether{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-modal-scale{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9);-webkit-transition:-webkit-transform;transition:transform;opacity:0}.custombox-modal-open .custombox-modal-scale{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform;transition:transform;opacity:1}.custombox-modal-door{visibility:hidden;opacity:0}.custombox-modal-open .custombox-modal-door{opacity:1;visibility:visible}.custombox-modal-push{-webkit-transform:translateX(-300%);-ms-transform:translateX(-300%);transform:translateX(-300%)}.custombox-modal-open .custombox-modal-push{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.custombox-modal-contentscale{-webkit-transform:translateY(600%);-ms-transform:translateY(600%);transform:translateY(600%);-webkit-transition-property:-webkit-transform ease-in-out;transition-property:transform ease-in-out;position:absolute}.custombox-modal-open .custombox-modal-contentscale{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custombox-modal-swell{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-name:swell-close;animation-name:swell-close}.custombox-modal-open .custombox-modal-swell{-webkit-animation-name:swell-open;animation-name:swell-open}@-webkit-keyframes swell-open{0%{opacity:0;-webkit-transform:translate3d(-webkit-calc(-100vw - 50%),0,0);transform:translate3d(calc(-100vw - 50%),0,0)}50%{opacity:1;-webkit-transform:translate3d(100px,0,0);transform:translate3d(100px,0,0)}100%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes swell-open{0%{opacity:0;-webkit-transform:translate3d(-webkit-calc(-100vw - 50%),0,0);transform:translate3d(calc(-100vw - 50%),0,0)}50%{opacity:1;-webkit-transform:translate3d(100px,0,0);transform:translate3d(100px,0,0)}100%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes swell-close{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}50%{opacity:1;-webkit-transform:translate3d(-100px,0,0)scale3d(1.1,1.1,1);transform:translate3d(-100px,0,0)scale3d(1.1,1.1,1)}100%{opacity:0;-webkit-transform:translate3d(-webkit-calc(100vw + 50%),0,0);transform:translate3d(calc(100vw + 50%),0,0)}}@keyframes swell-close{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}50%{opacity:1;-webkit-transform:translate3d(-100px,0,0)scale3d(1.1,1.1,1);transform:translate3d(-100px,0,0)scale3d(1.1,1.1,1)}100%{opacity:0;-webkit-transform:translate3d(-webkit-calc(100vw + 50%),0,0);transform:translate3d(calc(100vw + 50%),0,0)}}.custombox-modal-rotatedown{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:cubic-bezier(.7,0,.3,1);animation-timing-function:cubic-bezier(.7,0,.3,1);-webkit-transform-origin:-150% 50%;-ms-transform-origin:-150% 50%;transform-origin:-150% 50%;-webkit-animation-name:rotatedown-close;animation-name:rotatedown-close;overflow:hidden}.custombox-modal-open .custombox-modal-rotatedown{-webkit-animation-name:rotatedown-open;animation-name:rotatedown-open}.custombox-modal-open .custombox-modal-rotatedown div>*{-webkit-animation:rotatedown-elem .4s both;animation:rotatedown-elem .4s both;-webkit-transform-origin:-50% 50%;-ms-transform-origin:-50% 50%;transform-origin:-50% 50%;-webkit-animation-timing-function:cubic-bezier(.7,0,.3,1);animation-timing-function:cubic-bezier(.7,0,.3,1);-webkit-animation-delay:.15s;animation-delay:.15s}@-webkit-keyframes rotatedown-open{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg)}100%{opacity:1;-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes rotatedown-open{0%{opacity:0;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg)}100%{opacity:1;-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@-webkit-keyframes rotatedown-close{0%{opacity:1}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg)}}@keyframes rotatedown-close{0%{opacity:1}100%{opacity:0;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg)}}@-webkit-keyframes rotatedown-elem{0%{opacity:0;-webkit-transform:translate3d(0,-150px,0)rotate3d(0,0,1,-20deg);transform:translate3d(0,-150px,0)rotate3d(0,0,1,-20deg)}100%{opacity:1;-webkit-transform:translate3d(0,0,0)rotate3d(0,0,1,0deg);transform:translate3d(0,0,0)rotate3d(0,0,1,0deg)}}@keyframes rotatedown-elem{0%{opacity:0;-webkit-transform:translate3d(0,-150px,0)rotate3d(0,0,1,-20deg);transform:translate3d(0,-150px,0)rotate3d(0,0,1,-20deg)}100%{opacity:1;-webkit-transform:translate3d(0,0,0)rotate3d(0,0,1,0deg);transform:translate3d(0,0,0)rotate3d(0,0,1,0deg)}}.custombox-modal-flash{-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:cubic-bezier(.7,0,.3,1);animation-timing-function:cubic-bezier(.7,0,.3,1);-webkit-animation-name:flash-close;animation-name:flash-close;overflow:hidden}.custombox-modal-open .custombox-modal-flash{-webkit-animation-name:flash-open;animation-name:flash-open}.custombox-modal-open .custombox-modal-flash div>*{-webkit-animation:flash-elem-open .4s cubic-bezier(.7,0,.3,1)both;animation:flash-elem-open .4s cubic-bezier(.7,0,.3,1)both}.custombox-modal-flash div>*{-webkit-animation:flash-elem-close .4s cubic-bezier(.7,0,.3,1)both;animation:flash-elem-close .4s cubic-bezier(.7,0,.3,1)both}@-webkit-keyframes flash-open{0%{opacity:0;-webkit-transform:translate3d(-400px,0,0)scale3d(1.4,0,1);transform:translate3d(-400px,0,0)scale3d(1.4,0,1)}100%{opacity:1;-webkit-transform:translate3d(0,0,0)scale3d(1,1,1);transform:translate3d(0,0,0)scale3d(1,1,1)}}@keyframes flash-open{0%{opacity:0;-webkit-transform:translate3d(-400px,0,0)scale3d(1.4,0,1);transform:translate3d(-400px,0,0)scale3d(1.4,0,1)}100%{opacity:1;-webkit-transform:translate3d(0,0,0)scale3d(1,1,1);transform:translate3d(0,0,0)scale3d(1,1,1)}}@-webkit-keyframes flash-close{0%,20%{opacity:1;-webkit-transform:translate3d(0,0,0)scale3d(1,1,1);transform:translate3d(0,0,0)scale3d(1,1,1)}100%{opacity:0;-webkit-transform:translate3d(-400px,0,0)scale3d(1.4,0,1);transform:translate3d(-400px,0,0)scale3d(1.4,0,1)}}@keyframes flash-close{0%,20%{opacity:1;-webkit-transform:translate3d(0,0,0)scale3d(1,1,1);transform:translate3d(0,0,0)scale3d(1,1,1)}100%{opacity:0;-webkit-transform:translate3d(-400px,0,0)scale3d(1.4,0,1);transform:translate3d(-400px,0,0)scale3d(1.4,0,1)}}@-webkit-keyframes flash-elem-open{0%,20%{opacity:0;-webkit-transform:translate3d(-100px,0,0);transform:translate3d(-100px,0,0)}100%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes flash-elem-open{0%,20%{opacity:0;-webkit-transform:translate3d(-100px,0,0);transform:translate3d(-100px,0,0)}100%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes flash-elem-close{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{opacity:0;-webkit-transform:translate3d(-100px,0,0);transform:translate3d(-100px,0,0)}}@keyframes flash-elem-close{0%{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{opacity:0;-webkit-transform:translate3d(-100px,0,0);transform:translate3d(-100px,0,0)}} \ No newline at end of file diff --git a/plugins/custombox/js/custombox.min.js b/plugins/custombox/js/custombox.min.js new file mode 100644 index 0000000..559d5c0 --- /dev/null +++ b/plugins/custombox/js/custombox.min.js @@ -0,0 +1,10 @@ +/* + * custombox v3.0.0 - 2015-08-04 + * Modal Window Effects with transitions CSS3. + * http://dixso.github.io/custombox/ + * (c) 2015 Julio de la Calle - @dixso9 + * + * Under MIT License - http://opensource.org/licenses/MIT + */ + +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Custombox=b()}(this,function(){"use strict";var a={target:null,cache:!1,escKey:!0,zIndex:9999,overlay:!0,overlayColor:"#000",overlayOpacity:.8,overlayClose:!0,overlaySpeed:300,overlayEffect:"auto",width:null,effect:"fadein",position:["center","center"],animation:null,speed:500,loading:!1,open:null,complete:null,close:null},b={oldIE:navigator.appVersion.indexOf("MSIE 8.")>-1||navigator.appVersion.indexOf("MSIE 9.")>-1,oldMobile:/(iPhone|iPad|iPod)\sOS\s6/.test(navigator.userAgent),overlay:{perspective:["letmein","makeway","slip"],together:["corner","slidetogether","scale","door","push","contentscale","simplegenie","slit","slip"]},modal:{position:["slide","flip","rotate"],animationend:["swell","rotatedown","flash"]}},c={set:function(c){if(this.cb&&this.cb.length||(this.cb=[],this.item=-1),this.item++,c&&"auto"===c.zIndex){for(var d=0,e=0,f=document.getElementsByTagName("*"),g=f.length;g>e;e+=1){var h=window.getComputedStyle(f[e]).getPropertyValue("z-index");h&&(h=+h,h>d&&(d=h))}c.zIndex=d}this.cb.push({settings:b.oldIE&&"undefined"!=typeof cbExtendObjects?cbExtendObjects({},a,c):Object.assign({},a,c)}),"auto"===this.cb[this.item].settings.overlayEffect&&(this.cb[this.item].settings.overlayEffect=this.cb[this.item].settings.effect)},get:function(){return this.cb[this.cb.length-1]||null},init:function(){document.documentElement.classList.add("custombox-open"),document.documentElement.classList.add("custombox-open-"+this.cb[this.item].settings.overlayEffect),b.overlay.perspective.indexOf(this.cb[this.item].settings.overlayEffect)>-1&&(this.cb[this.item].scroll=document.documentElement&&document.documentElement.scrollTop||document.body&&document.body.scrollTop||0,document.documentElement.classList.add("custombox-perspective"),window.scrollTo(0,0)),this.main||this.built("container"),this.cb[this.item].settings.loading&&this.cb[this.item].settings.loading.parent&&this.built("loading"),this.cb[this.item].settings.overlay?this.built("overlay").built("modal").open():this.built("modal").open(),this.binds()},zIndex:function(){for(var a=0,b=0,c=document.getElementsByTagName("*"),d=c.length;d>b;b+=1){var e=window.getComputedStyle(c[b]).getPropertyValue("z-index");e&&(e=+e,e>a&&(a=e))}return a},built:function(a){var c;switch("undefined"!=typeof this.item&&(c=this.cb[this.item]),a){case"container":for(this.main=document.createElement("div");document.body.firstChild;)this.main.appendChild(document.body.firstChild);document.body.appendChild(this.main);break;case"overlay":c.overlay||(c.overlay={}),c.overlay=document.createElement("div"),c.overlay.classList.add("custombox-overlay"),c.overlay.classList.add("custombox-overlay-"+c.settings.overlayEffect),c.overlay.style.zIndex=c.settings.zIndex+2,c.overlay.style.backgroundColor=c.settings.overlayColor,b.overlay.perspective.indexOf(c.settings.overlayEffect)>-1||b.overlay.together.indexOf(c.settings.overlayEffect)>-1?c.overlay.style.opacity=c.settings.overlayOpacity:c.overlay.classList.add("custombox-overlay-default"),c.overlay.style.transitionDuration=b.overlay.together.indexOf(c.settings.overlayEffect)>-1?c.settings.speed+"ms":c.settings.overlaySpeed+"ms",document.body.insertBefore(c.overlay,document.body.lastChild.nextSibling);break;case"modal":"push"===c.settings.overlayEffect&&(this.main.style.transitionDuration=c.settings.speed+"ms"),this.main.classList.add("custombox-container"),this.main.classList.add("custombox-container-"+c.settings.overlayEffect),c.wrapper=document.createElement("div"),c.wrapper.classList.add("custombox-modal-wrapper"),c.wrapper.classList.add("custombox-modal-wrapper-"+c.settings.effect),c.wrapper.style.zIndex=c.settings.zIndex+3,document.body.insertBefore(c.wrapper,document.body.lastChild.nextSibling),c.container=document.createElement("div"),c.container.classList.add("custombox-modal-container"),c.container.classList.add("custombox-modal-container-"+c.settings.effect),c.container.style.zIndex=c.settings.zIndex+4,b.modal.position.indexOf(c.settings.effect)>-1&&null===c.settings.animation&&(c.settings.animation="slide"===c.settings.effect?["top"]:"flip"===c.settings.effect?["horizontal"]:["bottom"]),c.modal=document.createElement("div"),c.modal.classList.add("custombox-modal"),c.modal.classList.add("custombox-modal-"+c.settings.effect+(b.modal.position.indexOf(c.settings.effect)>-1?"-"+c.settings.animation[0].trim():"")),c.modal.style.transitionDuration=c.settings.speed+"ms",c.modal.style.zIndex=c.settings.zIndex+4,c.wrapper.appendChild(c.container).appendChild(c.modal);break;case"loading":this.loading=document.createElement("div"),this.loading.classList.add("custombox-loading");for(var d=document.createElement("div"),e=0,f=this.cb[this.item].settings.loading.parent.length;f>e;e++)d.classList.add(this.cb[this.item].settings.loading.parent[e]);if(this.loading.appendChild(d),this.loading.style.zIndex=c.settings.zIndex+3,this.cb[this.item].settings.loading.childrens)for(var g=0,h=this.cb[this.item].settings.loading.childrens.length;h>g;g++){for(var i=document.createElement("div"),j=0,k=this.cb[this.item].settings.loading.childrens[g].length;k>j;j++)i.classList.add(this.cb[this.item].settings.loading.childrens[g][j]);d.appendChild(i)}document.body.appendChild(this.loading)}return this},load:function(){var a=this.cb[this.item];if("function"==typeof a.settings.open&&a.settings.open.call(),document.createEvent){var b=document.createEvent("Event");b.initEvent("custombox.open",!0,!0),document.dispatchEvent(b)}return null!==a.settings.target&&Array.isArray(a.settings.position)?"#"===a.settings.target.charAt(0)||"."===a.settings.target.charAt(0)&&"/"!==a.settings.target.charAt(1)?document.querySelector(a.settings.target)?(a.inline=document.createElement("div"),a.content=document.querySelector(a.settings.target),a.display="none"===a.content.style.display,a.content.style.display="block",a.content.parentNode.insertBefore(a.inline,a.content),this.size()):this.error():this.ajax():this.error(),this},size:function(){var a=this.cb[this.item],c=a.content.offsetWidth;if(b.oldIE&&(window.innerHeight=document.documentElement.clientHeight),a.inline||(b.oldIE?a.content.style.styleFloat="none":a.content.style.cssFloat="none"),null!==a.settings.width&&(isNaN(a.settings.width)?(c=window.innerWidth,a.content.style.height=window.innerHeight+"px"):c=parseInt(a.settings.width,0)),a.size=c,a.size+60>=window.innerWidth){a.container.style.width="auto","full"!==a.settings.width&&(a.container.style.margin="5%"),a.wrapper.style.width=window.innerWidth+"px";for(var d=0,e=a.content.querySelectorAll(":scope > *"),f=e.length;f>d;d++)e[d].offsetWidth>window.innerWidth&&(e[d].style.width="auto")}else{switch(a.settings.position[0].trim()){case"left":a.container.style.marginLeft=0;break;case"right":a.container.style.marginRight=0}a.container.style.width=a.size+"px"}if(a.content.style.width="auto",a.modal.appendChild(a.content),a.content.offsetHeight>=window.innerHeight&&"full"!==a.settings.width)a.container.style.marginTop="5%",a.container.style.marginBottom="5%";else{var g;switch(a.settings.position[1].trim()){case"top":g=0;break;case"bottom":g=window.innerHeight-a.content.offsetHeight+"px";break;default:g=window.innerHeight/2-a.content.offsetHeight/2+"px"}a.container.style.marginTop=g}this.loading&&(document.body.removeChild(this.loading),delete this.loading),a.wrapper.classList.add("custombox-modal-open")},ajax:function(){var a=this,c=a.cb[a.item],d=new XMLHttpRequest,e=document.createElement("div");d.onreadystatechange=function(){4===d.readyState&&(200===d.status?(e.innerHTML=d.responseText,c.content=e,c.content.style.display="block",b.oldIE?c.content.style.styleFloat="left":c.content.style.cssFloat="left",c.container.appendChild(c.content),a.size()):a.error())},d.open("GET",c.settings.target+(c.settings.cache?"":(/[?].+=/.test(c.settings.target)?"&_=":"?_=")+Date.now()),!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.send(null)},scrollbar:function(){var a=document.createElement("div");a.classList.add("custombox-scrollbar"),document.body.appendChild(a);var b=a.offsetWidth-a.clientWidth;return document.body.removeChild(a),b},open:function(){var a=this,c=a.cb[a.item],d=a.scrollbar();if(d&&(document.body.style.paddingRight=d+"px"),a.main.classList.add("custombox-container-open"),c.settings.overlay)if(b.overlay.perspective.indexOf(c.settings.overlayEffect)>-1||b.overlay.together.indexOf(c.settings.overlayEffect)>-1?c.overlay.classList.add("custombox-overlay-open"):c.overlay.style.opacity=c.settings.overlayOpacity,b.overlay.together.indexOf(c.settings.overlayEffect)>-1||b.oldIE)a.load(),c.inline&&c.wrapper.classList.add("custombox-modal-open");else{var e=function(){c.overlay.removeEventListener("transitionend",e),a.load(),c.inline&&c.wrapper.classList.add("custombox-modal-open")};c.overlay.addEventListener("transitionend",e,!1)}else a.load(),c.inline&&c.wrapper.classList.add("custombox-modal-open");return a},clean:function(a){var c=this,d=this.cb[a];if(document.documentElement.classList.remove("custombox-open-"+d.settings.overlayEffect),d.settings.overlay&&(d.overlay.style.opacity&&(d.overlay.style.opacity=0),d.overlay.classList.remove("custombox-overlay-open"),c.main.classList.remove("custombox-container-open")),b.oldIE||b.oldMobile||!d.overlay)c.remove(a);else{var e=function(){d.overlay.removeEventListener("transitionend",e),c.remove(a)};d.overlay.addEventListener("transitionend",e,!1)}},remove:function(a){var c=this,d=this.cb[a];if(1===c.cb.length&&(document.documentElement.classList.remove("custombox-open","custombox-perspective"),c.scrollbar()&&(document.body.style.paddingRight=0),"undefined"!=typeof d.scroll&&window.scrollTo(0,d.scroll)),d.inline&&(b.oldIE?(d.content.style.removeAttribute("width"),d.content.style.removeAttribute("height"),d.content.style.removeAttribute("display")):(d.content.style.removeProperty("width"),d.content.style.removeProperty("height"),d.content.style.removeProperty("display")),d.display&&(d.content.style.display="none"),d.inline.parentNode.replaceChild(d.content,d.inline)),c.main.classList.remove("custombox-container-"+d.settings.overlayEffect),d.wrapper.parentNode.removeChild(d.wrapper),d.settings.overlay&&d.overlay.parentNode.removeChild(d.overlay),"function"==typeof d.settings.close&&d.settings.close.call(),document.createEvent){var e=document.createEvent("Event");e.initEvent("custombox.close",!0,!0),document.dispatchEvent(e)}if(1===c.cb.length){for(var f=document.querySelectorAll(".custombox-container > *"),g=0,h=f.length;h>g;g++)document.body.insertBefore(f[g],c.main);c.main.parentNode&&c.main.parentNode.removeChild(c.main),delete c.main}c.cb.splice(a,1)},close:function(a){var c,d=this;if(a){for(var e=0,f=this.cb.length;f>e;e++)if(this.cb[e].settings.target===a){c=e;break}}else c=d.cb.length-1;var g=d.cb[c];if(b.modal.position.indexOf(g.settings.effect)>-1&&g.settings.animation.length>1&&(g.modal.classList.remove("custombox-modal-"+g.settings.effect+"-"+g.settings.animation[0]),g.modal.classList.add("custombox-modal-"+g.settings.effect+"-"+g.settings.animation[1].trim())),g.wrapper.classList.remove("custombox-modal-open"),b.oldIE||b.oldMobile||b.overlay.together.indexOf(g.settings.overlayEffect)>-1)d.clean(c);else{var h=function(){g.wrapper.removeEventListener("transitionend",h),d.clean(c)};b.modal.animationend.indexOf(g.settings.effect)>-1?g.wrapper.addEventListener("animationend",h,!1):g.wrapper.addEventListener("transitionend",h,!1)}},responsive:function(){b.oldIE&&(window.innerHeight=document.documentElement.clientHeight);for(var a,c=0,d=this.cb.length;d>c;c++){if(this.cb[c].size+60>=window.innerWidth)"full"!==this.cb[c].settings.width&&(this.cb[c].container.style.marginLeft="5%",this.cb[c].container.style.marginRight="5%"),this.cb[c].container.style.width="auto",this.cb[c].wrapper.style.width=window.innerWidth+"px";else{switch(this.cb[c].settings.position[0].trim()){case"left":this.cb[c].container.style.marginLeft=0;break;case"right":this.cb[c].container.style.marginRight=0;break;default:this.cb[c].container.style.marginLeft="auto",this.cb[c].container.style.marginRight="auto"}this.cb[c].container.style.width=this.cb[c].size+"px",this.cb[c].wrapper.style.width="auto"}if(this.cb[c].content.offsetHeight>=window.innerHeight&&"full"!==this.cb[c].settings.width)this.cb[c].container.style.marginTop="5%",this.cb[c].container.style.marginBottom="5%";else{switch(this.cb[c].settings.position[1].trim()){case"top":a=0;break;case"bottom":a=window.innerHeight-this.cb[c].content.offsetHeight+"px";break;default:a=window.innerHeight/2-this.cb[c].content.offsetHeight/2+"px"}this.cb[c].container.style.marginTop=a}}},binds:function(){var a=this,c=a.cb[a.item],d=!1;1===a.cb.length&&(a.esc=function(b){1===a.cb.length&&document.removeEventListener("keydown",a.esc),b=b||window.event,!d&&27===b.keyCode&&a.get()&&a.get().settings.escKey&&(d=!0,a.close())},document.addEventListener("keydown",a.esc,!1),window.addEventListener("onorientationchange"in window?"orientationchange":"resize",function(){a.responsive()},!1)),c.wrapper.event=function(b){1===a.cb.length&&document.removeEventListener("keydown",c.wrapper.event),!d&&b.target===c.wrapper&&a.get()&&a.get().settings.overlayClose&&(d=!0,a.close())},c.wrapper.addEventListener("click",c.wrapper.event,!1),document.addEventListener("custombox.close",function(){d=!1});var e=function(){if(!c.inline)for(var a=0,b=c.modal.getElementsByTagName("script"),d=b.length;d>a;a++)new Function(b[a].text)();if(c.settings&&"function"==typeof c.settings.complete&&c.settings.complete.call(),document.createEvent){var e=document.createEvent("Event");e.initEvent("custombox.complete",!0,!0),document.dispatchEvent(e)}},f=function(){e(),c.modal.removeEventListener("transitionend",f)};b.oldIE||b.oldMobile?setTimeout(function(){e()},c.settings.overlaySpeed):"slit"!==c.settings.effect?c.modal.addEventListener("transitionend",f,!1):c.modal.addEventListener("animationend",f,!1)},error:function(){var a=this,b=a.cb.length-1;alert("Error to load this target: "+a.cb[b].settings.target),a.remove(b)}};return{set:function(a){a.autobuild&&c.built("container")},open:function(a){c.set(a),c.init()},close:function(a){c.close(a)}}}); \ No newline at end of file diff --git a/plugins/custombox/js/legacy.min.js b/plugins/custombox/js/legacy.min.js new file mode 100644 index 0000000..e1a0f12 --- /dev/null +++ b/plugins/custombox/js/legacy.min.js @@ -0,0 +1,18 @@ +/* + * custombox v3.0.0 - 2015-08-04 + * Modal Window Effects with transitions CSS3. + * http://dixso.github.io/custombox/ + * (c) 2015 Julio de la Calle - @dixso9 + * + * dataset - https://gist.github.com/brettz9/4093766 + * classList - http://purl.eligrey.com/github/classList.js/blob/master/classList.js + * addEventListener - https://gist.github.com/2864711/946225eb3822c203e8d6218095d888aac5e1748e + * :scope polyfill - http://stackoverflow.com/questions/6481612/queryselector-search-immediate-children + * forEach - http://es5.github.com/#x15.4.4.18 + * Object.assign() - https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/assign + * Array.isArray() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray + * + * Under MIT License - http://opensource.org/licenses/MIT + */ + +function cbExtendObjects(){for(var a=1,b=arguments.length;b>a;a++)for(var c in arguments[a])arguments[a].hasOwnProperty(c)&&(arguments[0][c]=arguments[a][c]);return arguments[0]}if(function(a){a.getComputedStyle||(a.getComputedStyle=function(a){return this.el=a,this.getPropertyValue=function(b){var c=/(\-([a-z]){1})/g;return"float"==b&&(b="styleFloat"),c.test(b)&&(b=b.replace(c,function(){return arguments[2].toUpperCase()})),a.currentStyle[b]?a.currentStyle[b]:null},this})}(window),Function.prototype.bind||(Function.prototype.bind=function(a){"use strict";if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),function(){"use strict";var a=Object.prototype,b=a.__defineGetter__,c=a.__defineSetter__,d=a.__lookupGetter__,e=a.__lookupSetter__,f=a.hasOwnProperty;b&&c&&d&&e&&(Object.defineProperty||(Object.defineProperty=function(a,g,h){if(arguments.length<3)throw new TypeError("Arguments not optional");if(g+="",f.call(h,"value")&&(d.call(a,g)||e.call(a,g)||(a[g]=h.value),f.call(h,"get")||f.call(h,"set")))throw new TypeError("Cannot specify an accessor and a value");if(!(h.writable&&h.enumerable&&h.configurable))throw new TypeError("This implementation of Object.defineProperty does not support false for configurable, enumerable, or writable.");return h.get&&b.call(a,g,h.get),h.set&&c.call(a,g,h.set),a}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(a,b){if(arguments.length<2)throw new TypeError("Arguments not optional.");b+="";var c={configurable:!0,enumerable:!0,writable:!0},g=d.call(a,b),h=e.call(a,b);return f.call(a,b)?g||h?(delete c.writable,c.get=c.set=void 0,g&&(c.get=g),h&&(c.set=h),c):(c.value=a[b],c):c}),Object.defineProperties||(Object.defineProperties=function(a,b){var c;for(c in b)f.call(b,c)&&Object.defineProperty(a,c,b[c])}))}(),!(document.documentElement.dataset||Object.getOwnPropertyDescriptor(Element.prototype,"dataset")&&Object.getOwnPropertyDescriptor(Element.prototype,"dataset").get)){var propDescriptor={enumerable:!0,get:function(){"use strict";var a,b,c,d,e,f,g=this,h=this.attributes,i=h.length,j=function(a){return a.charAt(1).toUpperCase()},k=function(){return this},l=function(a,b){return"undefined"!=typeof b?this.setAttribute(a,b):this.removeAttribute(a)};try{({}).__defineGetter__("test",function(){}),b={}}catch(m){b=document.createElement("div")}for(a=0;i>a;a++)if(f=h[a],f&&f.name&&/^data-\w[\w\-]*$/.test(f.name)){c=f.value,d=f.name,e=d.substr(5).replace(/-./g,j);try{Object.defineProperty(b,e,{enumerable:this.enumerable,get:k.bind(c||""),set:l.bind(g,d)})}catch(n){b[e]=c}}return b}};try{Object.defineProperty(Element.prototype,"dataset",propDescriptor)}catch(e){propDescriptor.enumerable=!1,Object.defineProperty(Element.prototype,"dataset",propDescriptor)}}"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var a=document.createElement("_");if(a.classList.add("c1","c2"),!a.classList.contains("c2")){var b=function(a){var b=DOMTokenList.prototype[a];DOMTokenList.prototype[a]=function(a){var c,d=arguments.length;for(c=0;d>c;c++)a=arguments[c],b.call(this,a)}};b("add"),b("remove")}if(a.classList.toggle("c3",!1),a.classList.contains("c3")){var c=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(a,b){return 1 in arguments&&!this.contains(a)==!b?b:c.call(this,a)}}a=null}():!function(a){"use strict";if("Element"in a){var b="classList",c="prototype",d=a.Element[c],e=Object,f=String[c].trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=Array[c].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1},h=function(a,b){this.name=a,this.code=DOMException[a],this.message=b},i=function(a,b){if(""===b)throw new h("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(b))throw new h("INVALID_CHARACTER_ERR","String contains an invalid character");return g.call(a,b)},j=function(a){for(var b=f.call(a.getAttribute("class")||""),c=b?b.split(/\s+/):[],d=0,e=c.length;e>d;d++)this.push(c[d]);this._updateClassName=function(){a.setAttribute("class",this.toString())}},k=j[c]=[],l=function(){return new j(this)};if(h[c]=Error[c],k.item=function(a){return this[a]||null},k.contains=function(a){return a+="",-1!==i(this,a)},k.add=function(){var a,b=arguments,c=0,d=b.length,e=!1;do a=b[c]+"",-1===i(this,a)&&(this.push(a),e=!0);while(++c<d);e&&this._updateClassName()},k.remove=function(){var a,b,c=arguments,d=0,e=c.length,f=!1;do for(a=c[d]+"",b=i(this,a);-1!==b;)this.splice(b,1),f=!0,b=i(this,a);while(++d<e);f&&this._updateClassName()},k.toggle=function(a,b){a+="";var c=this.contains(a),d=c?b!==!0&&"remove":b!==!1&&"add";return d&&this[d](a),b===!0||b===!1?b:!c},k.toString=function(){return this.join(" ")},e.defineProperty){var m={get:l,enumerable:!0,configurable:!0};try{e.defineProperty(d,b,m)}catch(n){-2146823252===n.number&&(m.enumerable=!1,e.defineProperty(d,b,m))}}else e[c].__defineGetter__&&d.__defineGetter__(b,l)}}(self)),String.prototype.trim||!function(){var a=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;String.prototype.trim=function(){return this.replace(a,"")}}(),Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var c;if(null==this)throw new TypeError('"this" is null or not defined');var d=Object(this),e=d.length>>>0;if(0===e)return-1;var f=+b||0;if(1/0===Math.abs(f)&&(f=0),f>=e)return-1;for(c=Math.max(f>=0?f:e-Math.abs(f),0);e>c;){if(c in d&&d[c]===a)return c;c++}return-1}),function(a,b,c){if((!a.addEventListener||!a.removeEventListener)&&a.attachEvent&&a.detachEvent){var d=function(a){return"function"==typeof a},e=function(a,b){var d=b[c];if(d)for(var e,f=d.length;f--;)if(e=d[f],e[0]===a)return e[1]},f=function(a,b,d){var f=b[c]||(b[c]=[]);return e(a,b)||(f[f.length]=[a,d],d)},g=function(a){var c=b[a];b[a]=function(a){return j(c(a))}},h=function(c,e){if(d(e)){var g=this;g.attachEvent("on"+c,f(g,e,function(c){c=c||a.event,c.preventDefault=c.preventDefault||function(){c.returnValue=!1},c.stopPropagation=c.stopPropagation||function(){c.cancelBubble=!0},c.target=c.target||c.srcElement||b.documentElement,c.currentTarget=c.currentTarget||g,c.timeStamp=c.timeStamp||(new Date).getTime(),e.call(g,c)}))}},i=function(a,b){if(d(b)){var c=this,f=e(c,b);f&&c.detachEvent("on"+a,f)}},j=function(a){var b=a.length;if(b)for(;b--;)a[b].addEventListener=h,a[b].removeEventListener=i;else a.addEventListener=h,a.removeEventListener=i;return a};if(j([b,a]),"Element"in a){var k=a.Element;k.prototype.addEventListener=h,k.prototype.removeEventListener=i}else b.attachEvent("onreadystatechange",function(){j(b.all)}),g("getElementsByTagName"),g("getElementById"),g("createElement"),j(b.all)}}(window,document,"x-ms-event-listeners"),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){"use strict";var c,d;if(null==this)throw new TypeError("this is null or not defined");var e,f=Object(this),g=f.length>>>0;if("[object Function]"!=={}.toString.call(a))throw new TypeError(a+" is not a function");for(arguments.length>=2&&(c=b),d=0;g>d;)d in f&&(e=f[d],a.call(c,e,d,f)),d++}),function(a,b){try{a.querySelector(":scope body")}catch(c){["querySelector","querySelectorAll"].forEach(function(c){var d=b[c];b[c]=function(b){if(/(^|,)\s*:scope/.test(b)){var e=this.id;this.id="ID_"+Date.now(),b=b.replace(/((^|,)\s*):scope/g,"$1#"+this.id);var f=a[c](b);return this.id=e,f}return d.call(this,b)}})}}(window.document,Element.prototype),-1===navigator.appVersion.indexOf("MSIE 8.")&&-1===navigator.appVersion.indexOf("MSIE 9.")&&(Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(a){"use strict";if(void 0===a||null===a)throw new TypeError("Cannot convert first argument to object");for(var b=Object(a),c=1;c<arguments.length;c++){var d=arguments[c];if(void 0!==d&&null!==d)for(var e=Object.keys(Object(d)),f=0,g=e.length;g>f;f++){var h=e[f],i=Object.getOwnPropertyDescriptor(d,h);void 0!==i&&i.enumerable&&(b[h]=d[h])}}return b}})),Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)}); \ No newline at end of file diff --git a/plugins/d3/d3.js b/plugins/d3/d3.js new file mode 100644 index 0000000..d810f0c --- /dev/null +++ b/plugins/d3/d3.js @@ -0,0 +1,9426 @@ +!function() { + var d3 = { + version: "3.5.0" + }; + if (!Date.now) Date.now = function() { + return +new Date(); + }; + var d3_arraySlice = [].slice, d3_array = function(list) { + return d3_arraySlice.call(list); + }; + var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; + try { + d3_array(d3_documentElement.childNodes)[0].nodeType; + } catch (e) { + d3_array = function(list) { + var i = list.length, array = new Array(i); + while (i--) array[i] = list[i]; + return array; + }; + } + try { + d3_document.createElement("div").style.setProperty("opacity", 0, ""); + } catch (error) { + var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; + d3_element_prototype.setAttribute = function(name, value) { + d3_element_setAttribute.call(this, name, value + ""); + }; + d3_element_prototype.setAttributeNS = function(space, local, value) { + d3_element_setAttributeNS.call(this, space, local, value + ""); + }; + d3_style_prototype.setProperty = function(name, value, priority) { + d3_style_setProperty.call(this, name, value + "", priority); + }; + } + d3.ascending = d3_ascending; + function d3_ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + } + d3.descending = function(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; + }; + d3.min = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n) if ((b = array[i]) != null && b >= b) { + a = b; + break; + } + while (++i < n) if ((b = array[i]) != null && a > b) a = b; + } else { + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { + a = b; + break; + } + while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; + } + return a; + }; + d3.max = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n) if ((b = array[i]) != null && b >= b) { + a = b; + break; + } + while (++i < n) if ((b = array[i]) != null && b > a) a = b; + } else { + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { + a = b; + break; + } + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; + } + return a; + }; + d3.extent = function(array, f) { + var i = -1, n = array.length, a, b, c; + if (arguments.length === 1) { + while (++i < n) if ((b = array[i]) != null && b >= b) { + a = c = b; + break; + } + while (++i < n) if ((b = array[i]) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } else { + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { + a = c = b; + break; + } + while (++i < n) if ((b = f.call(array, array[i], i)) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } + return [ a, c ]; + }; + function d3_number(x) { + return x === null ? NaN : +x; + } + function d3_numeric(x) { + return !isNaN(x); + } + d3.sum = function(array, f) { + var s = 0, n = array.length, a, i = -1; + if (arguments.length === 1) { + while (++i < n) if (d3_numeric(a = +array[i])) s += a; + } else { + while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a; + } + return s; + }; + d3.mean = function(array, f) { + var s = 0, n = array.length, a, i = -1, j = n; + if (arguments.length === 1) { + while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j; + } else { + while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j; + } + if (j) return s / j; + }; + d3.quantile = function(values, p) { + var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h; + return e ? v + e * (values[h] - v) : v; + }; + d3.median = function(array, f) { + var numbers = [], n = array.length, a, i = -1; + if (arguments.length === 1) { + while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a); + } else { + while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a); + } + if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5); + }; + function d3_bisector(compare) { + return { + left: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1; + } + return lo; + } + }; + } + var d3_bisect = d3_bisector(d3_ascending); + d3.bisectLeft = d3_bisect.left; + d3.bisect = d3.bisectRight = d3_bisect.right; + d3.bisector = function(f) { + return d3_bisector(f.length === 1 ? function(d, x) { + return d3_ascending(f(d), x); + } : f); + }; + d3.shuffle = function(array, i0, i1) { + if ((m = arguments.length) < 3) { + i1 = array.length; + if (m < 2) i0 = 0; + } + var m = i1 - i0, t, i; + while (m) { + i = Math.random() * m-- | 0; + t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t; + } + return array; + }; + d3.permute = function(array, indexes) { + var i = indexes.length, permutes = new Array(i); + while (i--) permutes[i] = array[indexes[i]]; + return permutes; + }; + d3.pairs = function(array) { + var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n); + while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ]; + return pairs; + }; + d3.zip = function() { + if (!(n = arguments.length)) return []; + for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) { + for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) { + zip[j] = arguments[j][i]; + } + } + return zips; + }; + function d3_zipLength(d) { + return d.length; + } + d3.transpose = function(matrix) { + return d3.zip.apply(d3, matrix); + }; + d3.keys = function(map) { + var keys = []; + for (var key in map) keys.push(key); + return keys; + }; + d3.values = function(map) { + var values = []; + for (var key in map) values.push(map[key]); + return values; + }; + d3.entries = function(map) { + var entries = []; + for (var key in map) entries.push({ + key: key, + value: map[key] + }); + return entries; + }; + d3.merge = function(arrays) { + var n = arrays.length, m, i = -1, j = 0, merged, array; + while (++i < n) j += arrays[i].length; + merged = new Array(j); + while (--n >= 0) { + array = arrays[n]; + m = array.length; + while (--m >= 0) { + merged[--j] = array[m]; + } + } + return merged; + }; + var abs = Math.abs; + d3.range = function(start, stop, step) { + if (arguments.length < 3) { + step = 1; + if (arguments.length < 2) { + stop = start; + start = 0; + } + } + if ((stop - start) / step === Infinity) throw new Error("infinite range"); + var range = [], k = d3_range_integerScale(abs(step)), i = -1, j; + start *= k, stop *= k, step *= k; + if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k); + return range; + }; + function d3_range_integerScale(x) { + var k = 1; + while (x * k % 1) k *= 10; + return k; + } + function d3_class(ctor, properties) { + for (var key in properties) { + Object.defineProperty(ctor.prototype, key, { + value: properties[key], + enumerable: false + }); + } + } + d3.map = function(object, f) { + var map = new d3_Map(); + if (object instanceof d3_Map) { + object.forEach(function(key, value) { + map.set(key, value); + }); + } else if (Array.isArray(object)) { + var i = -1, n = object.length, o; + if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o); + } else { + for (var key in object) map.set(key, object[key]); + } + return map; + }; + function d3_Map() { + this._ = Object.create(null); + } + var d3_map_proto = "__proto__", d3_map_zero = "\x00"; + d3_class(d3_Map, { + has: d3_map_has, + get: function(key) { + return this._[d3_map_escape(key)]; + }, + set: function(key, value) { + return this._[d3_map_escape(key)] = value; + }, + remove: d3_map_remove, + keys: d3_map_keys, + values: function() { + var values = []; + for (var key in this._) values.push(this._[key]); + return values; + }, + entries: function() { + var entries = []; + for (var key in this._) entries.push({ + key: d3_map_unescape(key), + value: this._[key] + }); + return entries; + }, + size: d3_map_size, + empty: d3_map_empty, + forEach: function(f) { + for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]); + } + }); + function d3_map_escape(key) { + return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key; + } + function d3_map_unescape(key) { + return (key += "")[0] === d3_map_zero ? key.slice(1) : key; + } + function d3_map_has(key) { + return d3_map_escape(key) in this._; + } + function d3_map_remove(key) { + return (key = d3_map_escape(key)) in this._ && delete this._[key]; + } + function d3_map_keys() { + var keys = []; + for (var key in this._) keys.push(d3_map_unescape(key)); + return keys; + } + function d3_map_size() { + var size = 0; + for (var key in this._) ++size; + return size; + } + function d3_map_empty() { + for (var key in this._) return false; + return true; + } + d3.nest = function() { + var nest = {}, keys = [], sortKeys = [], sortValues, rollup; + function map(mapType, array, depth) { + if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array; + var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values; + while (++i < n) { + if (values = valuesByKey.get(keyValue = key(object = array[i]))) { + values.push(object); + } else { + valuesByKey.set(keyValue, [ object ]); + } + } + if (mapType) { + object = mapType(); + setter = function(keyValue, values) { + object.set(keyValue, map(mapType, values, depth)); + }; + } else { + object = {}; + setter = function(keyValue, values) { + object[keyValue] = map(mapType, values, depth); + }; + } + valuesByKey.forEach(setter); + return object; + } + function entries(map, depth) { + if (depth >= keys.length) return map; + var array = [], sortKey = sortKeys[depth++]; + map.forEach(function(key, keyMap) { + array.push({ + key: key, + values: entries(keyMap, depth) + }); + }); + return sortKey ? array.sort(function(a, b) { + return sortKey(a.key, b.key); + }) : array; + } + nest.map = function(array, mapType) { + return map(mapType, array, 0); + }; + nest.entries = function(array) { + return entries(map(d3.map, array, 0), 0); + }; + nest.key = function(d) { + keys.push(d); + return nest; + }; + nest.sortKeys = function(order) { + sortKeys[keys.length - 1] = order; + return nest; + }; + nest.sortValues = function(order) { + sortValues = order; + return nest; + }; + nest.rollup = function(f) { + rollup = f; + return nest; + }; + return nest; + }; + d3.set = function(array) { + var set = new d3_Set(); + if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]); + return set; + }; + function d3_Set() { + this._ = Object.create(null); + } + d3_class(d3_Set, { + has: d3_map_has, + add: function(key) { + this._[d3_map_escape(key += "")] = true; + return key; + }, + remove: d3_map_remove, + values: d3_map_keys, + size: d3_map_size, + empty: d3_map_empty, + forEach: function(f) { + for (var key in this._) f.call(this, d3_map_unescape(key)); + } + }); + d3.behavior = {}; + d3.rebind = function(target, source) { + var i = 1, n = arguments.length, method; + while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); + return target; + }; + function d3_rebind(target, source, method) { + return function() { + var value = method.apply(source, arguments); + return value === source ? target : value; + }; + } + function d3_vendorSymbol(object, name) { + if (name in object) return name; + name = name.charAt(0).toUpperCase() + name.slice(1); + for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) { + var prefixName = d3_vendorPrefixes[i] + name; + if (prefixName in object) return prefixName; + } + } + var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ]; + function d3_noop() {} + d3.dispatch = function() { + var dispatch = new d3_dispatch(), i = -1, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + return dispatch; + }; + function d3_dispatch() {} + d3_dispatch.prototype.on = function(type, listener) { + var i = type.indexOf("."), name = ""; + if (i >= 0) { + name = type.slice(i + 1); + type = type.slice(0, i); + } + if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener); + if (arguments.length === 2) { + if (listener == null) for (type in this) { + if (this.hasOwnProperty(type)) this[type].on(name, null); + } + return this; + } + }; + function d3_dispatch_event(dispatch) { + var listeners = [], listenerByName = new d3_Map(); + function event() { + var z = listeners, i = -1, n = z.length, l; + while (++i < n) if (l = z[i].on) l.apply(this, arguments); + return dispatch; + } + event.on = function(name, listener) { + var l = listenerByName.get(name), i; + if (arguments.length < 2) return l && l.on; + if (l) { + l.on = null; + listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); + listenerByName.remove(name); + } + if (listener) listeners.push(listenerByName.set(name, { + on: listener + })); + return dispatch; + }; + return event; + } + d3.event = null; + function d3_eventPreventDefault() { + d3.event.preventDefault(); + } + function d3_eventSource() { + var e = d3.event, s; + while (s = e.sourceEvent) e = s; + return e; + } + function d3_eventDispatch(target) { + var dispatch = new d3_dispatch(), i = 0, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + dispatch.of = function(thiz, argumentz) { + return function(e1) { + try { + var e0 = e1.sourceEvent = d3.event; + e1.target = target; + d3.event = e1; + dispatch[e1.type].apply(thiz, argumentz); + } finally { + d3.event = e0; + } + }; + }; + return dispatch; + } + d3.requote = function(s) { + return s.replace(d3_requote_re, "\\$&"); + }; + var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; + var d3_subclass = {}.__proto__ ? function(object, prototype) { + object.__proto__ = prototype; + } : function(object, prototype) { + for (var property in prototype) object[property] = prototype[property]; + }; + function d3_selection(groups) { + d3_subclass(groups, d3_selectionPrototype); + return groups; + } + var d3_select = function(s, n) { + return n.querySelector(s); + }, d3_selectAll = function(s, n) { + return n.querySelectorAll(s); + }, d3_selectMatcher = d3_documentElement.matches || d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) { + return d3_selectMatcher.call(n, s); + }; + if (typeof Sizzle === "function") { + d3_select = function(s, n) { + return Sizzle(s, n)[0] || null; + }; + d3_selectAll = Sizzle; + d3_selectMatches = Sizzle.matchesSelector; + } + d3.selection = function() { + return d3_selectionRoot; + }; + var d3_selectionPrototype = d3.selection.prototype = []; + d3_selectionPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, group, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(subnode = selector.call(node, node.__data__, i, j)); + if (subnode && "__data__" in node) subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selector(selector) { + return typeof selector === "function" ? selector : function() { + return d3_select(selector, this); + }; + } + d3_selectionPrototype.selectAll = function(selector) { + var subgroups = [], subgroup, node; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j))); + subgroup.parentNode = node; + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selectorAll(selector) { + return typeof selector === "function" ? selector : function() { + return d3_selectAll(selector, this); + }; + } + var d3_nsPrefix = { + svg: "http://www.w3.org/2000/svg", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" + }; + d3.ns = { + prefix: d3_nsPrefix, + qualify: function(name) { + var i = name.indexOf(":"), prefix = name; + if (i >= 0) { + prefix = name.slice(0, i); + name = name.slice(i + 1); + } + return d3_nsPrefix.hasOwnProperty(prefix) ? { + space: d3_nsPrefix[prefix], + local: name + } : name; + } + }; + d3_selectionPrototype.attr = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(); + name = d3.ns.qualify(name); + return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name); + } + for (value in name) this.each(d3_selection_attr(value, name[value])); + return this; + } + return this.each(d3_selection_attr(name, value)); + }; + function d3_selection_attr(name, value) { + name = d3.ns.qualify(name); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrConstant() { + this.setAttribute(name, value); + } + function attrConstantNS() { + this.setAttributeNS(name.space, name.local, value); + } + function attrFunction() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttribute(name); else this.setAttribute(name, x); + } + function attrFunctionNS() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x); + } + return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant; + } + function d3_collapse(s) { + return s.trim().replace(/\s+/g, " "); + } + d3_selectionPrototype.classed = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1; + if (value = node.classList) { + while (++i < n) if (!value.contains(name[i])) return false; + } else { + value = node.getAttribute("class"); + while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false; + } + return true; + } + for (value in name) this.each(d3_selection_classed(value, name[value])); + return this; + } + return this.each(d3_selection_classed(name, value)); + }; + function d3_selection_classedRe(name) { + return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g"); + } + function d3_selection_classes(name) { + return (name + "").trim().split(/^|\s+/); + } + function d3_selection_classed(name, value) { + name = d3_selection_classes(name).map(d3_selection_classedName); + var n = name.length; + function classedConstant() { + var i = -1; + while (++i < n) name[i](this, value); + } + function classedFunction() { + var i = -1, x = value.apply(this, arguments); + while (++i < n) name[i](this, x); + } + return typeof value === "function" ? classedFunction : classedConstant; + } + function d3_selection_classedName(name) { + var re = d3_selection_classedRe(name); + return function(node, value) { + if (c = node.classList) return value ? c.add(name) : c.remove(name); + var c = node.getAttribute("class") || ""; + if (value) { + re.lastIndex = 0; + if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name)); + } else { + node.setAttribute("class", d3_collapse(c.replace(re, " "))); + } + }; + } + d3_selectionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.each(d3_selection_style(priority, name[priority], value)); + return this; + } + if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name); + priority = ""; + } + return this.each(d3_selection_style(name, value, priority)); + }; + function d3_selection_style(name, value, priority) { + function styleNull() { + this.style.removeProperty(name); + } + function styleConstant() { + this.style.setProperty(name, value, priority); + } + function styleFunction() { + var x = value.apply(this, arguments); + if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority); + } + return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant; + } + d3_selectionPrototype.property = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") return this.node()[name]; + for (value in name) this.each(d3_selection_property(value, name[value])); + return this; + } + return this.each(d3_selection_property(name, value)); + }; + function d3_selection_property(name, value) { + function propertyNull() { + delete this[name]; + } + function propertyConstant() { + this[name] = value; + } + function propertyFunction() { + var x = value.apply(this, arguments); + if (x == null) delete this[name]; else this[name] = x; + } + return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant; + } + d3_selectionPrototype.text = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + } : value == null ? function() { + this.textContent = ""; + } : function() { + this.textContent = value; + }) : this.node().textContent; + }; + d3_selectionPrototype.html = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + } : value == null ? function() { + this.innerHTML = ""; + } : function() { + this.innerHTML = value; + }) : this.node().innerHTML; + }; + d3_selectionPrototype.append = function(name) { + name = d3_selection_creator(name); + return this.select(function() { + return this.appendChild(name.apply(this, arguments)); + }); + }; + function d3_selection_creator(name) { + return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() { + return this.ownerDocument.createElementNS(name.space, name.local); + } : function() { + return this.ownerDocument.createElementNS(this.namespaceURI, name); + }; + } + d3_selectionPrototype.insert = function(name, before) { + name = d3_selection_creator(name); + before = d3_selection_selector(before); + return this.select(function() { + return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null); + }); + }; + d3_selectionPrototype.remove = function() { + return this.each(d3_selectionRemove); + }; + function d3_selectionRemove() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); + } + d3_selectionPrototype.data = function(value, key) { + var i = -1, n = this.length, group, node; + if (!arguments.length) { + value = new Array(n = (group = this[0]).length); + while (++i < n) { + if (node = group[i]) { + value[i] = node.__data__; + } + } + return value; + } + function bind(group, groupData) { + var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData; + if (key) { + var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue; + for (i = -1; ++i < n; ) { + if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) { + exitNodes[i] = node; + } else { + nodeByKeyValue.set(keyValue, node); + } + keyValues[i] = keyValue; + } + for (i = -1; ++i < m; ) { + if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) { + enterNodes[i] = d3_selection_dataNode(nodeData); + } else if (node !== true) { + updateNodes[i] = node; + node.__data__ = nodeData; + } + nodeByKeyValue.set(keyValue, true); + } + for (i = -1; ++i < n; ) { + if (nodeByKeyValue.get(keyValues[i]) !== true) { + exitNodes[i] = group[i]; + } + } + } else { + for (i = -1; ++i < n0; ) { + node = group[i]; + nodeData = groupData[i]; + if (node) { + node.__data__ = nodeData; + updateNodes[i] = node; + } else { + enterNodes[i] = d3_selection_dataNode(nodeData); + } + } + for (;i < m; ++i) { + enterNodes[i] = d3_selection_dataNode(groupData[i]); + } + for (;i < n; ++i) { + exitNodes[i] = group[i]; + } + } + enterNodes.update = updateNodes; + enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode; + enter.push(enterNodes); + update.push(updateNodes); + exit.push(exitNodes); + } + var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]); + if (typeof value === "function") { + while (++i < n) { + bind(group = this[i], value.call(group, group.parentNode.__data__, i)); + } + } else { + while (++i < n) { + bind(group = this[i], value); + } + } + update.enter = function() { + return enter; + }; + update.exit = function() { + return exit; + }; + return update; + }; + function d3_selection_dataNode(data) { + return { + __data__: data + }; + } + d3_selectionPrototype.datum = function(value) { + return arguments.length ? this.property("__data__", value) : this.property("__data__"); + }; + d3_selectionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i, j)) { + subgroup.push(node); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_filter(selector) { + return function() { + return d3_selectMatches(this, selector); + }; + } + d3_selectionPrototype.order = function() { + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) { + if (node = group[i]) { + if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + return this; + }; + d3_selectionPrototype.sort = function(comparator) { + comparator = d3_selection_sortComparator.apply(this, arguments); + for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator); + return this.order(); + }; + function d3_selection_sortComparator(comparator) { + if (!arguments.length) comparator = d3_ascending; + return function(a, b) { + return a && b ? comparator(a.__data__, b.__data__) : !a - !b; + }; + } + d3_selectionPrototype.each = function(callback) { + return d3_selection_each(this, function(node, i, j) { + callback.call(node, node.__data__, i, j); + }); + }; + function d3_selection_each(groups, callback) { + for (var j = 0, m = groups.length; j < m; j++) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) { + if (node = group[i]) callback(node, i, j); + } + } + return groups; + } + d3_selectionPrototype.call = function(callback) { + var args = d3_array(arguments); + callback.apply(args[0] = this, args); + return this; + }; + d3_selectionPrototype.empty = function() { + return !this.node(); + }; + d3_selectionPrototype.node = function() { + for (var j = 0, m = this.length; j < m; j++) { + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + var node = group[i]; + if (node) return node; + } + } + return null; + }; + d3_selectionPrototype.size = function() { + var n = 0; + d3_selection_each(this, function() { + ++n; + }); + return n; + }; + function d3_selection_enter(selection) { + d3_subclass(selection, d3_selection_enterPrototype); + return selection; + } + var d3_selection_enterPrototype = []; + d3.selection.enter = d3_selection_enter; + d3.selection.enter.prototype = d3_selection_enterPrototype; + d3_selection_enterPrototype.append = d3_selectionPrototype.append; + d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; + d3_selection_enterPrototype.node = d3_selectionPrototype.node; + d3_selection_enterPrototype.call = d3_selectionPrototype.call; + d3_selection_enterPrototype.size = d3_selectionPrototype.size; + d3_selection_enterPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, upgroup, group, node; + for (var j = -1, m = this.length; ++j < m; ) { + upgroup = (group = this[j]).update; + subgroups.push(subgroup = []); + subgroup.parentNode = group.parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j)); + subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + d3_selection_enterPrototype.insert = function(name, before) { + if (arguments.length < 2) before = d3_selection_enterInsertBefore(this); + return d3_selectionPrototype.insert.call(this, name, before); + }; + function d3_selection_enterInsertBefore(enter) { + var i0, j0; + return function(d, i, j) { + var group = enter[j].update, n = group.length, node; + if (j != j0) j0 = j, i0 = 0; + if (i >= i0) i0 = i + 1; + while (!(node = group[i0]) && ++i0 < n) ; + return node; + }; + } + d3_selectionPrototype.transition = function(name) { + var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || { + time: Date.now(), + ease: d3_ease_cubicInOut, + delay: 0, + duration: 250 + }; + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) d3_transitionNode(node, i, ns, id, transition); + subgroup.push(node); + } + } + return d3_transition(subgroups, ns, id); + }; + d3_selectionPrototype.interrupt = function(name) { + var ns = d3_transitionNamespace(name); + return this.each(function() { + var lock = this[ns]; + if (lock) ++lock.active; + }); + }; + function d3_selection_interrupt(that) { + var lock = that.__transition__; + if (lock) ++lock.active; + } + d3.select = function(node) { + var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + d3.selectAll = function(nodes) { + var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + var d3_selectionRoot = d3.select(d3_documentElement); + d3_selectionPrototype.on = function(type, listener, capture) { + var n = arguments.length; + if (n < 3) { + if (typeof type !== "string") { + if (n < 2) listener = false; + for (capture in type) this.each(d3_selection_on(capture, type[capture], listener)); + return this; + } + if (n < 2) return (n = this.node()["__on" + type]) && n._; + capture = false; + } + return this.each(d3_selection_on(type, listener, capture)); + }; + function d3_selection_on(type, listener, capture) { + var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener; + if (i > 0) type = type.slice(0, i); + var filter = d3_selection_onFilters.get(type); + if (filter) type = filter, wrap = d3_selection_onFilter; + function onRemove() { + var l = this[name]; + if (l) { + this.removeEventListener(type, l, l.$); + delete this[name]; + } + } + function onAdd() { + var l = wrap(listener, d3_array(arguments)); + onRemove.call(this); + this.addEventListener(type, this[name] = l, l.$ = capture); + l._ = listener; + } + function removeAll() { + var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match; + for (var name in this) { + if (match = name.match(re)) { + var l = this[name]; + this.removeEventListener(match[1], l, l.$); + delete this[name]; + } + } + } + return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll; + } + var d3_selection_onFilters = d3.map({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }); + d3_selection_onFilters.forEach(function(k) { + if ("on" + k in d3_document) d3_selection_onFilters.remove(k); + }); + function d3_selection_onListener(listener, argumentz) { + return function(e) { + var o = d3.event; + d3.event = e; + argumentz[0] = this.__data__; + try { + listener.apply(this, argumentz); + } finally { + d3.event = o; + } + }; + } + function d3_selection_onFilter(listener, argumentz) { + var l = d3_selection_onListener(listener, argumentz); + return function(e) { + var target = this, related = e.relatedTarget; + if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) { + l.call(target, e); + } + }; + } + var d3_event_dragSelect = "onselectstart" in d3_document ? null : d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0; + function d3_event_dragSuppress() { + var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault); + if (d3_event_dragSelect) { + var style = d3_documentElement.style, select = style[d3_event_dragSelect]; + style[d3_event_dragSelect] = "none"; + } + return function(suppressClick) { + w.on(name, null); + if (d3_event_dragSelect) style[d3_event_dragSelect] = select; + if (suppressClick) { + var off = function() { + w.on(click, null); + }; + w.on(click, function() { + d3_eventPreventDefault(); + off(); + }, true); + setTimeout(off, 0); + } + }; + } + d3.mouse = function(container) { + return d3_mousePoint(container, d3_eventSource()); + }; + var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; + function d3_mousePoint(container, e) { + if (e.changedTouches) e = e.changedTouches[0]; + var svg = container.ownerSVGElement || container; + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) { + svg = d3.select("body").append("svg").style({ + position: "absolute", + top: 0, + left: 0, + margin: 0, + padding: 0, + border: "none" + }, "important"); + var ctm = svg[0][0].getScreenCTM(); + d3_mouse_bug44083 = !(ctm.f || ctm.e); + svg.remove(); + } + if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, + point.y = e.clientY; + point = point.matrixTransform(container.getScreenCTM().inverse()); + return [ point.x, point.y ]; + } + var rect = container.getBoundingClientRect(); + return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ]; + } + d3.touch = function(container, touches, identifier) { + if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches; + if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) { + if ((touch = touches[i]).identifier === identifier) { + return d3_mousePoint(container, touch); + } + } + }; + d3.behavior.drag = function() { + var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_behavior_dragMouseSubject, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_behavior_dragTouchSubject, "touchmove", "touchend"); + function drag() { + this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart); + } + function dragstart(id, position, subject, move, end) { + return function() { + var that = this, target = d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject()).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(), position0 = position(parent, dragId); + if (origin) { + dragOffset = origin.apply(that, arguments); + dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ]; + } else { + dragOffset = [ 0, 0 ]; + } + dispatch({ + type: "dragstart" + }); + function moved() { + var position1 = position(parent, dragId), dx, dy; + if (!position1) return; + dx = position1[0] - position0[0]; + dy = position1[1] - position0[1]; + dragged |= dx | dy; + position0 = position1; + dispatch({ + type: "drag", + x: position1[0] + dragOffset[0], + y: position1[1] + dragOffset[1], + dx: dx, + dy: dy + }); + } + function ended() { + if (!position(parent, dragId)) return; + dragSubject.on(move + dragName, null).on(end + dragName, null); + dragRestore(dragged && d3.event.target === target); + dispatch({ + type: "dragend" + }); + } + }; + } + drag.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return drag; + }; + return d3.rebind(drag, event, "on"); + }; + function d3_behavior_dragTouchId() { + return d3.event.changedTouches[0].identifier; + } + function d3_behavior_dragTouchSubject() { + return d3.event.target; + } + function d3_behavior_dragMouseSubject() { + return d3_window; + } + d3.touches = function(container, touches) { + if (arguments.length < 2) touches = d3_eventSource().touches; + return touches ? d3_array(touches).map(function(touch) { + var point = d3_mousePoint(container, touch); + point.identifier = touch.identifier; + return point; + }) : []; + }; + var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π; + function d3_sgn(x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; + } + function d3_cross2d(a, b, c) { + return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); + } + function d3_acos(x) { + return x > 1 ? 0 : x < -1 ? π : Math.acos(x); + } + function d3_asin(x) { + return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x); + } + function d3_sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; + } + function d3_cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; + } + function d3_tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); + } + function d3_haversin(x) { + return (x = Math.sin(x / 2)) * x; + } + var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4; + d3.interpolateZoom = function(p0, p1) { + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2]; + var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ; + function interpolate(t) { + var s = t * S; + if (dr) { + var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0)); + return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ]; + } + return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ]; + } + interpolate.duration = S * 1e3; + return interpolate; + }; + d3.behavior.zoom = function() { + var view = { + x: 0, + y: 0, + k: 1 + }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1; + function zoom(g) { + g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted); + } + zoom.event = function(g) { + g.each(function() { + var dispatch = event.of(this, arguments), view1 = view; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.zoom", function() { + view = this.__chart__ || { + x: 0, + y: 0, + k: 1 + }; + zoomstarted(dispatch); + }).tween("zoom:zoom", function() { + var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]); + return function(t) { + var l = i(t), k = dx / l[2]; + this.__chart__ = view = { + x: cx - l[0] * k, + y: cy - l[1] * k, + k: k + }; + zoomed(dispatch); + }; + }).each("interrupt.zoom", function() { + zoomended(dispatch); + }).each("end.zoom", function() { + zoomended(dispatch); + }); + } else { + this.__chart__ = view; + zoomstarted(dispatch); + zoomed(dispatch); + zoomended(dispatch); + } + }); + }; + zoom.translate = function(_) { + if (!arguments.length) return [ view.x, view.y ]; + view = { + x: +_[0], + y: +_[1], + k: view.k + }; + rescale(); + return zoom; + }; + zoom.scale = function(_) { + if (!arguments.length) return view.k; + view = { + x: view.x, + y: view.y, + k: +_ + }; + rescale(); + return zoom; + }; + zoom.scaleExtent = function(_) { + if (!arguments.length) return scaleExtent; + scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ]; + return zoom; + }; + zoom.center = function(_) { + if (!arguments.length) return center; + center = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.size = function(_) { + if (!arguments.length) return size; + size = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.duration = function(_) { + if (!arguments.length) return duration; + duration = +_; + return zoom; + }; + zoom.x = function(z) { + if (!arguments.length) return x1; + x1 = z; + x0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + zoom.y = function(z) { + if (!arguments.length) return y1; + y1 = z; + y0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + function location(p) { + return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ]; + } + function point(l) { + return [ l[0] * view.k + view.x, l[1] * view.k + view.y ]; + } + function scaleTo(s) { + view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); + } + function translateTo(p, l) { + l = point(l); + view.x += p[0] - l[0]; + view.y += p[1] - l[1]; + } + function zoomTo(that, p, l, k) { + that.__chart__ = { + x: view.x, + y: view.y, + k: view.k + }; + scaleTo(Math.pow(2, k)); + translateTo(center0 = p, l); + that = d3.select(that); + if (duration > 0) that = that.transition().duration(duration); + that.call(zoom.event); + } + function rescale() { + if (x1) x1.domain(x0.range().map(function(x) { + return (x - view.x) / view.k; + }).map(x0.invert)); + if (y1) y1.domain(y0.range().map(function(y) { + return (y - view.y) / view.k; + }).map(y0.invert)); + } + function zoomstarted(dispatch) { + if (!zooming++) dispatch({ + type: "zoomstart" + }); + } + function zoomed(dispatch) { + rescale(); + dispatch({ + type: "zoom", + scale: view.k, + translate: [ view.x, view.y ] + }); + } + function zoomended(dispatch) { + if (!--zooming) dispatch({ + type: "zoomend" + }); + center0 = null; + } + function mousedowned() { + var that = this, target = d3.event.target, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt(that); + zoomstarted(dispatch); + function moved() { + dragged = 1; + translateTo(d3.mouse(that), location0); + zoomed(dispatch); + } + function ended() { + subject.on(mousemove, null).on(mouseup, null); + dragRestore(dragged && d3.event.target === target); + zoomended(dispatch); + } + } + function touchstarted() { + var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(); + started(); + zoomstarted(dispatch); + subject.on(mousedown, null).on(touchstart, started); + function relocate() { + var touches = d3.touches(that); + scale0 = view.k; + touches.forEach(function(t) { + if (t.identifier in locations0) locations0[t.identifier] = location(t); + }); + return touches; + } + function started() { + var target = d3.event.target; + d3.select(target).on(touchmove, moved).on(touchend, ended); + targets.push(target); + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + locations0[changed[i].identifier] = null; + } + var touches = relocate(), now = Date.now(); + if (touches.length === 1) { + if (now - touchtime < 500) { + var p = touches[0]; + zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1); + d3_eventPreventDefault(); + } + touchtime = now; + } else if (touches.length > 1) { + var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1]; + distance0 = dx * dx + dy * dy; + } + } + function moved() { + var touches = d3.touches(that), p0, l0, p1, l1; + d3_selection_interrupt(that); + for (var i = 0, n = touches.length; i < n; ++i, l1 = null) { + p1 = touches[i]; + if (l1 = locations0[p1.identifier]) { + if (l0) break; + p0 = p1, l0 = l1; + } + } + if (l1) { + var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0); + p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ]; + l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ]; + scaleTo(scale1 * scale0); + } + touchtime = null; + translateTo(p0, l0); + zoomed(dispatch); + } + function ended() { + if (d3.event.touches.length) { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + delete locations0[changed[i].identifier]; + } + for (var identifier in locations0) { + return void relocate(); + } + } + d3.selectAll(targets).on(zoomName, null); + subject.on(mousedown, mousedowned).on(touchstart, touchstarted); + dragRestore(); + zoomended(dispatch); + } + } + function mousewheeled() { + var dispatch = event.of(this, arguments); + if (mousewheelTimer) clearTimeout(mousewheelTimer); else translate0 = location(center0 = center || d3.mouse(this)), + d3_selection_interrupt(this), zoomstarted(dispatch); + mousewheelTimer = setTimeout(function() { + mousewheelTimer = null; + zoomended(dispatch); + }, 50); + d3_eventPreventDefault(); + scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k); + translateTo(center0, translate0); + zoomed(dispatch); + } + function dblclicked() { + var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2; + zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1); + } + return d3.rebind(zoom, event, "on"); + }; + var d3_behavior_zoomInfinity = [ 0, Infinity ]; + var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); + }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return d3.event.wheelDelta; + }, "mousewheel") : (d3_behavior_zoomDelta = function() { + return -d3.event.detail; + }, "MozMousePixelScroll"); + d3.color = d3_color; + function d3_color() {} + d3_color.prototype.toString = function() { + return this.rgb() + ""; + }; + d3.hsl = d3_hsl; + function d3_hsl(h, s, l) { + return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l); + } + var d3_hslPrototype = d3_hsl.prototype = new d3_color(); + d3_hslPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return new d3_hsl(this.h, this.s, this.l / k); + }; + d3_hslPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return new d3_hsl(this.h, this.s, k * this.l); + }; + d3_hslPrototype.rgb = function() { + return d3_hsl_rgb(this.h, this.s, this.l); + }; + function d3_hsl_rgb(h, s, l) { + var m1, m2; + h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h; + s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s; + l = l < 0 ? 0 : l > 1 ? 1 : l; + m2 = l <= .5 ? l * (1 + s) : l + s - l * s; + m1 = 2 * l - m2; + function v(h) { + if (h > 360) h -= 360; else if (h < 0) h += 360; + if (h < 60) return m1 + (m2 - m1) * h / 60; + if (h < 180) return m2; + if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; + return m1; + } + function vv(h) { + return Math.round(v(h) * 255); + } + return new d3_rgb(vv(h + 120), vv(h), vv(h - 120)); + } + d3.hcl = d3_hcl; + function d3_hcl(h, c, l) { + return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l); + } + var d3_hclPrototype = d3_hcl.prototype = new d3_color(); + d3_hclPrototype.brighter = function(k) { + return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.darker = function(k) { + return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.rgb = function() { + return d3_hcl_lab(this.h, this.c, this.l).rgb(); + }; + function d3_hcl_lab(h, c, l) { + if (isNaN(h)) h = 0; + if (isNaN(c)) c = 0; + return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c); + } + d3.lab = d3_lab; + function d3_lab(l, a, b) { + return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b); + } + var d3_lab_K = 18; + var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883; + var d3_labPrototype = d3_lab.prototype = new d3_color(); + d3_labPrototype.brighter = function(k) { + return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.darker = function(k) { + return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.rgb = function() { + return d3_lab_rgb(this.l, this.a, this.b); + }; + function d3_lab_rgb(l, a, b) { + var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; + x = d3_lab_xyz(x) * d3_lab_X; + y = d3_lab_xyz(y) * d3_lab_Y; + z = d3_lab_xyz(z) * d3_lab_Z; + return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); + } + function d3_lab_hcl(l, a, b) { + return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l); + } + function d3_lab_xyz(x) { + return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; + } + function d3_xyz_lab(x) { + return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; + } + function d3_xyz_rgb(r) { + return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); + } + d3.rgb = d3_rgb; + function d3_rgb(r, g, b) { + return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b); + } + function d3_rgbNumber(value) { + return new d3_rgb(value >> 16, value >> 8 & 255, value & 255); + } + function d3_rgbString(value) { + return d3_rgbNumber(value) + ""; + } + var d3_rgbPrototype = d3_rgb.prototype = new d3_color(); + d3_rgbPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + var r = this.r, g = this.g, b = this.b, i = 30; + if (!r && !g && !b) return new d3_rgb(i, i, i); + if (r && r < i) r = i; + if (g && g < i) g = i; + if (b && b < i) b = i; + return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k)); + }; + d3_rgbPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return new d3_rgb(k * this.r, k * this.g, k * this.b); + }; + d3_rgbPrototype.hsl = function() { + return d3_rgb_hsl(this.r, this.g, this.b); + }; + d3_rgbPrototype.toString = function() { + return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); + }; + function d3_rgb_hex(v) { + return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); + } + function d3_rgb_parse(format, rgb, hsl) { + var r = 0, g = 0, b = 0, m1, m2, color; + m1 = /([a-z]+)\((.*)\)/i.exec(format); + if (m1) { + m2 = m1[2].split(","); + switch (m1[1]) { + case "hsl": + { + return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); + } + + case "rgb": + { + return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); + } + } + } + if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b); + if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) { + if (format.length === 4) { + r = (color & 3840) >> 4; + r = r >> 4 | r; + g = color & 240; + g = g >> 4 | g; + b = color & 15; + b = b << 4 | b; + } else if (format.length === 7) { + r = (color & 16711680) >> 16; + g = (color & 65280) >> 8; + b = color & 255; + } + } + return rgb(r, g, b); + } + function d3_rgb_hsl(r, g, b) { + var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; + if (d) { + s = l < .5 ? d / (max + min) : d / (2 - max - min); + if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; + h *= 60; + } else { + h = NaN; + s = l > 0 && l < 1 ? 0 : h; + } + return new d3_hsl(h, s, l); + } + function d3_rgb_lab(r, g, b) { + r = d3_rgb_xyz(r); + g = d3_rgb_xyz(g); + b = d3_rgb_xyz(b); + var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); + return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); + } + function d3_rgb_xyz(r) { + return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); + } + function d3_rgb_parseNumber(c) { + var f = parseFloat(c); + return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; + } + var d3_rgb_names = d3.map({ + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 + }); + d3_rgb_names.forEach(function(key, value) { + d3_rgb_names.set(key, d3_rgbNumber(value)); + }); + function d3_functor(v) { + return typeof v === "function" ? v : function() { + return v; + }; + } + d3.functor = d3_functor; + function d3_identity(d) { + return d; + } + d3.xhr = d3_xhrType(d3_identity); + function d3_xhrType(response) { + return function(url, mimeType, callback) { + if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, + mimeType = null; + return d3_xhr(url, mimeType, response, callback); + }; + } + function d3_xhr(url, mimeType, response, callback) { + var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null; + if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); + "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { + request.readyState > 3 && respond(); + }; + function respond() { + var status = request.status, result; + if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) { + try { + result = response.call(xhr, request); + } catch (e) { + dispatch.error.call(xhr, e); + return; + } + dispatch.load.call(xhr, result); + } else { + dispatch.error.call(xhr, request); + } + } + request.onprogress = function(event) { + var o = d3.event; + d3.event = event; + try { + dispatch.progress.call(xhr, request); + } finally { + d3.event = o; + } + }; + xhr.header = function(name, value) { + name = (name + "").toLowerCase(); + if (arguments.length < 2) return headers[name]; + if (value == null) delete headers[name]; else headers[name] = value + ""; + return xhr; + }; + xhr.mimeType = function(value) { + if (!arguments.length) return mimeType; + mimeType = value == null ? null : value + ""; + return xhr; + }; + xhr.responseType = function(value) { + if (!arguments.length) return responseType; + responseType = value; + return xhr; + }; + xhr.response = function(value) { + response = value; + return xhr; + }; + [ "get", "post" ].forEach(function(method) { + xhr[method] = function() { + return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments))); + }; + }); + xhr.send = function(method, data, callback) { + if (arguments.length === 2 && typeof data === "function") callback = data, data = null; + request.open(method, url, true); + if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*"; + if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]); + if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); + if (responseType != null) request.responseType = responseType; + if (callback != null) xhr.on("error", callback).on("load", function(request) { + callback(null, request); + }); + dispatch.beforesend.call(xhr, request); + request.send(data == null ? null : data); + return xhr; + }; + xhr.abort = function() { + request.abort(); + return xhr; + }; + d3.rebind(xhr, dispatch, "on"); + return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback)); + } + function d3_xhr_fixCallback(callback) { + return callback.length === 1 ? function(error, request) { + callback(error == null ? request : null); + } : callback; + } + function d3_xhrHasResponse(request) { + var type = request.responseType; + return type && type !== "text" ? request.response : request.responseText; + } + d3.dsv = function(delimiter, mimeType) { + var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0); + function dsv(url, row, callback) { + if (arguments.length < 3) callback = row, row = null; + var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback); + xhr.row = function(_) { + return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row; + }; + return xhr; + } + function response(request) { + return dsv.parse(request.responseText); + } + function typedResponse(f) { + return function(request) { + return dsv.parse(request.responseText, f); + }; + } + dsv.parse = function(text, f) { + var o; + return dsv.parseRows(text, function(row, i) { + if (o) return o(row, i - 1); + var a = new Function("d", "return {" + row.map(function(name, i) { + return JSON.stringify(name) + ": d[" + i + "]"; + }).join(",") + "}"); + o = f ? function(row, i) { + return f(a(row), i); + } : a; + }); + }; + dsv.parseRows = function(text, f) { + var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol; + function token() { + if (I >= N) return EOF; + if (eol) return eol = false, EOL; + var j = I; + if (text.charCodeAt(j) === 34) { + var i = j; + while (i++ < N) { + if (text.charCodeAt(i) === 34) { + if (text.charCodeAt(i + 1) !== 34) break; + ++i; + } + } + I = i + 2; + var c = text.charCodeAt(i + 1); + if (c === 13) { + eol = true; + if (text.charCodeAt(i + 2) === 10) ++I; + } else if (c === 10) { + eol = true; + } + return text.slice(j + 1, i).replace(/""/g, '"'); + } + while (I < N) { + var c = text.charCodeAt(I++), k = 1; + if (c === 10) eol = true; else if (c === 13) { + eol = true; + if (text.charCodeAt(I) === 10) ++I, ++k; + } else if (c !== delimiterCode) continue; + return text.slice(j, I - k); + } + return text.slice(j); + } + while ((t = token()) !== EOF) { + var a = []; + while (t !== EOL && t !== EOF) { + a.push(t); + t = token(); + } + if (f && (a = f(a, n++)) == null) continue; + rows.push(a); + } + return rows; + }; + dsv.format = function(rows) { + if (Array.isArray(rows[0])) return dsv.formatRows(rows); + var fieldSet = new d3_Set(), fields = []; + rows.forEach(function(row) { + for (var field in row) { + if (!fieldSet.has(field)) { + fields.push(fieldSet.add(field)); + } + } + }); + return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) { + return fields.map(function(field) { + return formatValue(row[field]); + }).join(delimiter); + })).join("\n"); + }; + dsv.formatRows = function(rows) { + return rows.map(formatRow).join("\n"); + }; + function formatRow(row) { + return row.map(formatValue).join(delimiter); + } + function formatValue(text) { + return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text; + } + return dsv; + }; + d3.csv = d3.dsv(",", "text/csv"); + d3.tsv = d3.dsv(" ", "text/tab-separated-values"); + var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { + setTimeout(callback, 17); + }; + d3.timer = function(callback, delay, then) { + var n = arguments.length; + if (n < 2) delay = 0; + if (n < 3) then = Date.now(); + var time = then + delay, timer = { + c: callback, + t: time, + f: false, + n: null + }; + if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer; + d3_timer_queueTail = timer; + if (!d3_timer_interval) { + d3_timer_timeout = clearTimeout(d3_timer_timeout); + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + }; + function d3_timer_step() { + var now = d3_timer_mark(), delay = d3_timer_sweep() - now; + if (delay > 24) { + if (isFinite(delay)) { + clearTimeout(d3_timer_timeout); + d3_timer_timeout = setTimeout(d3_timer_step, delay); + } + d3_timer_interval = 0; + } else { + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + } + d3.timer.flush = function() { + d3_timer_mark(); + d3_timer_sweep(); + }; + function d3_timer_mark() { + var now = Date.now(); + d3_timer_active = d3_timer_queueHead; + while (d3_timer_active) { + if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t); + d3_timer_active = d3_timer_active.n; + } + return now; + } + function d3_timer_sweep() { + var t0, t1 = d3_timer_queueHead, time = Infinity; + while (t1) { + if (t1.f) { + t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n; + } else { + if (t1.t < time) time = t1.t; + t1 = (t0 = t1).n; + } + } + d3_timer_queueTail = t0; + return time; + } + function d3_format_precision(x, p) { + return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1); + } + d3.round = function(x, n) { + return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x); + }; + var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix); + d3.formatPrefix = function(value, precision) { + var i = 0; + if (value) { + if (value < 0) value *= -1; + if (precision) value = d3.round(value, d3_format_precision(value, precision)); + i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); + i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3)); + } + return d3_formatPrefixes[8 + i / 3]; + }; + function d3_formatPrefix(d, i) { + var k = Math.pow(10, abs(8 - i) * 3); + return { + scale: i > 8 ? function(d) { + return d / k; + } : function(d) { + return d * k; + }, + symbol: d + }; + } + function d3_locale_numberFormat(locale) { + var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) { + var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0; + while (i > 0 && g > 0) { + if (length + g + 1 > width) g = Math.max(1, width - length); + t.push(value.substring(i -= g, i + g)); + if ((length += g + 1) > width) break; + g = locale_grouping[j = (j + 1) % locale_grouping.length]; + } + return t.reverse().join(locale_thousands); + } : d3_identity; + return function(specifier) { + var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "-", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = "", suffix = "", integer = false, exponent = true; + if (precision) precision = +precision.substring(1); + if (zfill || fill === "0" && align === "=") { + zfill = fill = "0"; + align = "="; + } + switch (type) { + case "n": + comma = true; + type = "g"; + break; + + case "%": + scale = 100; + suffix = "%"; + type = "f"; + break; + + case "p": + scale = 100; + suffix = "%"; + type = "r"; + break; + + case "b": + case "o": + case "x": + case "X": + if (symbol === "#") prefix = "0" + type.toLowerCase(); + + case "c": + exponent = false; + + case "d": + integer = true; + precision = 0; + break; + + case "s": + scale = -1; + type = "r"; + break; + } + if (symbol === "$") prefix = locale_currency[0], suffix = locale_currency[1]; + if (type == "r" && !precision) type = "g"; + if (precision != null) { + if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision)); + } + type = d3_format_types.get(type) || d3_format_typeDefault; + var zcomma = zfill && comma; + return function(value) { + var fullSuffix = suffix; + if (integer && value % 1) return ""; + var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign === "-" ? "" : sign; + if (scale < 0) { + var unit = d3.formatPrefix(value, precision); + value = unit.scale(value); + fullSuffix = unit.symbol + suffix; + } else { + value *= scale; + } + value = type(value, precision); + var i = value.lastIndexOf("."), before, after; + if (i < 0) { + var j = exponent ? value.lastIndexOf("e") : -1; + if (j < 0) before = value, after = ""; else before = value.substring(0, j), after = value.substring(j); + } else { + before = value.substring(0, i); + after = locale_decimal + value.substring(i + 1); + } + if (!zfill && comma) before = formatGroup(before, Infinity); + var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : ""; + if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity); + negative += prefix; + value = before + after; + return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix; + }; + }; + } + var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i; + var d3_format_types = d3.map({ + b: function(x) { + return x.toString(2); + }, + c: function(x) { + return String.fromCharCode(x); + }, + o: function(x) { + return x.toString(8); + }, + x: function(x) { + return x.toString(16); + }, + X: function(x) { + return x.toString(16).toUpperCase(); + }, + g: function(x, p) { + return x.toPrecision(p); + }, + e: function(x, p) { + return x.toExponential(p); + }, + f: function(x, p) { + return x.toFixed(p); + }, + r: function(x, p) { + return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p)))); + } + }); + function d3_format_typeDefault(x) { + return x + ""; + } + var d3_time = d3.time = {}, d3_date = Date; + function d3_date_utc() { + this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]); + } + d3_date_utc.prototype = { + getDate: function() { + return this._.getUTCDate(); + }, + getDay: function() { + return this._.getUTCDay(); + }, + getFullYear: function() { + return this._.getUTCFullYear(); + }, + getHours: function() { + return this._.getUTCHours(); + }, + getMilliseconds: function() { + return this._.getUTCMilliseconds(); + }, + getMinutes: function() { + return this._.getUTCMinutes(); + }, + getMonth: function() { + return this._.getUTCMonth(); + }, + getSeconds: function() { + return this._.getUTCSeconds(); + }, + getTime: function() { + return this._.getTime(); + }, + getTimezoneOffset: function() { + return 0; + }, + valueOf: function() { + return this._.valueOf(); + }, + setDate: function() { + d3_time_prototype.setUTCDate.apply(this._, arguments); + }, + setDay: function() { + d3_time_prototype.setUTCDay.apply(this._, arguments); + }, + setFullYear: function() { + d3_time_prototype.setUTCFullYear.apply(this._, arguments); + }, + setHours: function() { + d3_time_prototype.setUTCHours.apply(this._, arguments); + }, + setMilliseconds: function() { + d3_time_prototype.setUTCMilliseconds.apply(this._, arguments); + }, + setMinutes: function() { + d3_time_prototype.setUTCMinutes.apply(this._, arguments); + }, + setMonth: function() { + d3_time_prototype.setUTCMonth.apply(this._, arguments); + }, + setSeconds: function() { + d3_time_prototype.setUTCSeconds.apply(this._, arguments); + }, + setTime: function() { + d3_time_prototype.setTime.apply(this._, arguments); + } + }; + var d3_time_prototype = Date.prototype; + function d3_time_interval(local, step, number) { + function round(date) { + var d0 = local(date), d1 = offset(d0, 1); + return date - d0 < d1 - date ? d0 : d1; + } + function ceil(date) { + step(date = local(new d3_date(date - 1)), 1); + return date; + } + function offset(date, k) { + step(date = new d3_date(+date), k); + return date; + } + function range(t0, t1, dt) { + var time = ceil(t0), times = []; + if (dt > 1) { + while (time < t1) { + if (!(number(time) % dt)) times.push(new Date(+time)); + step(time, 1); + } + } else { + while (time < t1) times.push(new Date(+time)), step(time, 1); + } + return times; + } + function range_utc(t0, t1, dt) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = t0; + return range(utc, t1, dt); + } finally { + d3_date = Date; + } + } + local.floor = local; + local.round = round; + local.ceil = ceil; + local.offset = offset; + local.range = range; + var utc = local.utc = d3_time_interval_utc(local); + utc.floor = utc; + utc.round = d3_time_interval_utc(round); + utc.ceil = d3_time_interval_utc(ceil); + utc.offset = d3_time_interval_utc(offset); + utc.range = range_utc; + return local; + } + function d3_time_interval_utc(method) { + return function(date, k) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = date; + return method(utc, k)._; + } finally { + d3_date = Date; + } + }; + } + d3_time.year = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setMonth(0, 1); + return date; + }, function(date, offset) { + date.setFullYear(date.getFullYear() + offset); + }, function(date) { + return date.getFullYear(); + }); + d3_time.years = d3_time.year.range; + d3_time.years.utc = d3_time.year.utc.range; + d3_time.day = d3_time_interval(function(date) { + var day = new d3_date(2e3, 0); + day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + return day; + }, function(date, offset) { + date.setDate(date.getDate() + offset); + }, function(date) { + return date.getDate() - 1; + }); + d3_time.days = d3_time.day.range; + d3_time.days.utc = d3_time.day.utc.range; + d3_time.dayOfYear = function(date) { + var year = d3_time.year(date); + return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5); + }; + [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ].forEach(function(day, i) { + i = 7 - i; + var interval = d3_time[day] = d3_time_interval(function(date) { + (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7); + return date; + }, function(date, offset) { + date.setDate(date.getDate() + Math.floor(offset) * 7); + }, function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i); + }); + d3_time[day + "s"] = interval.range; + d3_time[day + "s"].utc = interval.utc.range; + d3_time[day + "OfYear"] = function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7); + }; + }); + d3_time.week = d3_time.sunday; + d3_time.weeks = d3_time.sunday.range; + d3_time.weeks.utc = d3_time.sunday.utc.range; + d3_time.weekOfYear = d3_time.sundayOfYear; + function d3_locale_timeFormat(locale) { + var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths; + function d3_time_format(template) { + var n = template.length; + function format(date) { + var string = [], i = -1, j = 0, c, p, f; + while (++i < n) { + if (template.charCodeAt(i) === 37) { + string.push(template.slice(j, i)); + if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i); + if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p); + string.push(c); + j = i + 1; + } + } + string.push(template.slice(j, i)); + return string.join(""); + } + format.parse = function(string) { + var d = { + y: 1900, + m: 0, + d: 1, + H: 0, + M: 0, + S: 0, + L: 0, + Z: null + }, i = d3_time_parse(d, template, string, 0); + if (i != string.length) return null; + if ("p" in d) d.H = d.H % 12 + d.p * 12; + var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)(); + if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) { + date.setFullYear(d.y, 0, 1); + date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); + } else date.setFullYear(d.y, d.m, d.d); + date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L); + return localZ ? date._ : date; + }; + format.toString = function() { + return template; + }; + return format; + } + function d3_time_parse(date, template, string, j) { + var c, p, t, i = 0, n = template.length, m = string.length; + while (i < n) { + if (j >= m) return -1; + c = template.charCodeAt(i++); + if (c === 37) { + t = template.charAt(i++); + p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t]; + if (!p || (j = p(date, string, j)) < 0) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + return j; + } + d3_time_format.utc = function(template) { + var local = d3_time_format(template); + function format(date) { + try { + d3_date = d3_date_utc; + var utc = new d3_date(); + utc._ = date; + return local(utc); + } finally { + d3_date = Date; + } + } + format.parse = function(string) { + try { + d3_date = d3_date_utc; + var date = local.parse(string); + return date && date._; + } finally { + d3_date = Date; + } + }; + format.toString = local.toString; + return format; + }; + d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti; + var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths); + locale_periods.forEach(function(p, i) { + d3_time_periodLookup.set(p.toLowerCase(), i); + }); + var d3_time_formats = { + a: function(d) { + return locale_shortDays[d.getDay()]; + }, + A: function(d) { + return locale_days[d.getDay()]; + }, + b: function(d) { + return locale_shortMonths[d.getMonth()]; + }, + B: function(d) { + return locale_months[d.getMonth()]; + }, + c: d3_time_format(locale_dateTime), + d: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + e: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + H: function(d, p) { + return d3_time_formatPad(d.getHours(), p, 2); + }, + I: function(d, p) { + return d3_time_formatPad(d.getHours() % 12 || 12, p, 2); + }, + j: function(d, p) { + return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3); + }, + L: function(d, p) { + return d3_time_formatPad(d.getMilliseconds(), p, 3); + }, + m: function(d, p) { + return d3_time_formatPad(d.getMonth() + 1, p, 2); + }, + M: function(d, p) { + return d3_time_formatPad(d.getMinutes(), p, 2); + }, + p: function(d) { + return locale_periods[+(d.getHours() >= 12)]; + }, + S: function(d, p) { + return d3_time_formatPad(d.getSeconds(), p, 2); + }, + U: function(d, p) { + return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2); + }, + w: function(d) { + return d.getDay(); + }, + W: function(d, p) { + return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2); + }, + x: d3_time_format(locale_date), + X: d3_time_format(locale_time), + y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 100, p, 2); + }, + Y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 1e4, p, 4); + }, + Z: d3_time_zone, + "%": function() { + return "%"; + } + }; + var d3_time_parsers = { + a: d3_time_parseWeekdayAbbrev, + A: d3_time_parseWeekday, + b: d3_time_parseMonthAbbrev, + B: d3_time_parseMonth, + c: d3_time_parseLocaleFull, + d: d3_time_parseDay, + e: d3_time_parseDay, + H: d3_time_parseHour24, + I: d3_time_parseHour24, + j: d3_time_parseDayOfYear, + L: d3_time_parseMilliseconds, + m: d3_time_parseMonthNumber, + M: d3_time_parseMinutes, + p: d3_time_parseAmPm, + S: d3_time_parseSeconds, + U: d3_time_parseWeekNumberSunday, + w: d3_time_parseWeekdayNumber, + W: d3_time_parseWeekNumberMonday, + x: d3_time_parseLocaleDate, + X: d3_time_parseLocaleTime, + y: d3_time_parseYear, + Y: d3_time_parseFullYear, + Z: d3_time_parseZone, + "%": d3_time_parseLiteralPercent + }; + function d3_time_parseWeekdayAbbrev(date, string, i) { + d3_time_dayAbbrevRe.lastIndex = 0; + var n = d3_time_dayAbbrevRe.exec(string.slice(i)); + return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseWeekday(date, string, i) { + d3_time_dayRe.lastIndex = 0; + var n = d3_time_dayRe.exec(string.slice(i)); + return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseMonthAbbrev(date, string, i) { + d3_time_monthAbbrevRe.lastIndex = 0; + var n = d3_time_monthAbbrevRe.exec(string.slice(i)); + return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseMonth(date, string, i) { + d3_time_monthRe.lastIndex = 0; + var n = d3_time_monthRe.exec(string.slice(i)); + return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseLocaleFull(date, string, i) { + return d3_time_parse(date, d3_time_formats.c.toString(), string, i); + } + function d3_time_parseLocaleDate(date, string, i) { + return d3_time_parse(date, d3_time_formats.x.toString(), string, i); + } + function d3_time_parseLocaleTime(date, string, i) { + return d3_time_parse(date, d3_time_formats.X.toString(), string, i); + } + function d3_time_parseAmPm(date, string, i) { + var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase()); + return n == null ? -1 : (date.p = n, i); + } + return d3_time_format; + } + var d3_time_formatPads = { + "-": "", + _: " ", + "0": "0" + }, d3_time_numberRe = /^\s*\d+/, d3_time_percentRe = /^%/; + function d3_time_formatPad(value, fill, width) { + var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); + } + function d3_time_formatRe(names) { + return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i"); + } + function d3_time_formatLookup(names) { + var map = new d3_Map(), i = -1, n = names.length; + while (++i < n) map.set(names[i].toLowerCase(), i); + return map; + } + function d3_time_parseWeekdayNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 1)); + return n ? (date.w = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberSunday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i)); + return n ? (date.U = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberMonday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i)); + return n ? (date.W = +n[0], i + n[0].length) : -1; + } + function d3_time_parseFullYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 4)); + return n ? (date.y = +n[0], i + n[0].length) : -1; + } + function d3_time_parseYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; + } + function d3_time_parseZone(date, string, i) { + return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, + i + 5) : -1; + } + function d3_time_expandYear(d) { + return d + (d > 68 ? 1900 : 2e3); + } + function d3_time_parseMonthNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.m = n[0] - 1, i + n[0].length) : -1; + } + function d3_time_parseDay(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.d = +n[0], i + n[0].length) : -1; + } + function d3_time_parseDayOfYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 3)); + return n ? (date.j = +n[0], i + n[0].length) : -1; + } + function d3_time_parseHour24(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.H = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMinutes(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.M = +n[0], i + n[0].length) : -1; + } + function d3_time_parseSeconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); + return n ? (date.S = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMilliseconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.slice(i, i + 3)); + return n ? (date.L = +n[0], i + n[0].length) : -1; + } + function d3_time_zone(d) { + var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = abs(z) / 60 | 0, zm = abs(z) % 60; + return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2); + } + function d3_time_parseLiteralPercent(date, string, i) { + d3_time_percentRe.lastIndex = 0; + var n = d3_time_percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; + } + function d3_time_formatMulti(formats) { + var n = formats.length, i = -1; + while (++i < n) formats[i][0] = this(formats[i][0]); + return function(date) { + var i = 0, f = formats[i]; + while (!f[1](date)) f = formats[++i]; + return f[0](date); + }; + } + d3.locale = function(locale) { + return { + numberFormat: d3_locale_numberFormat(locale), + timeFormat: d3_locale_timeFormat(locale) + }; + }; + var d3_locale_enUS = d3.locale({ + decimal: ".", + thousands: ",", + grouping: [ 3 ], + currency: [ "$", "" ], + dateTime: "%a %b %e %X %Y", + date: "%m/%d/%Y", + time: "%H:%M:%S", + periods: [ "AM", "PM" ], + days: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], + shortDays: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], + months: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], + shortMonths: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ] + }); + d3.format = d3_locale_enUS.numberFormat; + d3.geo = {}; + function d3_adder() {} + d3_adder.prototype = { + s: 0, + t: 0, + add: function(y) { + d3_adderSum(y, this.t, d3_adderTemp); + d3_adderSum(d3_adderTemp.s, this.s, this); + if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t; + }, + reset: function() { + this.s = this.t = 0; + }, + valueOf: function() { + return this.s; + } + }; + var d3_adderTemp = new d3_adder(); + function d3_adderSum(a, b, o) { + var x = o.s = a + b, bv = x - a, av = x - bv; + o.t = a - av + (b - bv); + } + d3.geo.stream = function(object, listener) { + if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) { + d3_geo_streamObjectType[object.type](object, listener); + } else { + d3_geo_streamGeometry(object, listener); + } + }; + function d3_geo_streamGeometry(geometry, listener) { + if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) { + d3_geo_streamGeometryType[geometry.type](geometry, listener); + } + } + var d3_geo_streamObjectType = { + Feature: function(feature, listener) { + d3_geo_streamGeometry(feature.geometry, listener); + }, + FeatureCollection: function(object, listener) { + var features = object.features, i = -1, n = features.length; + while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener); + } + }; + var d3_geo_streamGeometryType = { + Sphere: function(object, listener) { + listener.sphere(); + }, + Point: function(object, listener) { + object = object.coordinates; + listener.point(object[0], object[1], object[2]); + }, + MultiPoint: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]); + }, + LineString: function(object, listener) { + d3_geo_streamLine(object.coordinates, listener, 0); + }, + MultiLineString: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0); + }, + Polygon: function(object, listener) { + d3_geo_streamPolygon(object.coordinates, listener); + }, + MultiPolygon: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamPolygon(coordinates[i], listener); + }, + GeometryCollection: function(object, listener) { + var geometries = object.geometries, i = -1, n = geometries.length; + while (++i < n) d3_geo_streamGeometry(geometries[i], listener); + } + }; + function d3_geo_streamLine(coordinates, listener, closed) { + var i = -1, n = coordinates.length - closed, coordinate; + listener.lineStart(); + while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]); + listener.lineEnd(); + } + function d3_geo_streamPolygon(coordinates, listener) { + var i = -1, n = coordinates.length; + listener.polygonStart(); + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1); + listener.polygonEnd(); + } + d3.geo.area = function(object) { + d3_geo_areaSum = 0; + d3.geo.stream(object, d3_geo_area); + return d3_geo_areaSum; + }; + var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder(); + var d3_geo_area = { + sphere: function() { + d3_geo_areaSum += 4 * π; + }, + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_areaRingSum.reset(); + d3_geo_area.lineStart = d3_geo_areaRingStart; + }, + polygonEnd: function() { + var area = 2 * d3_geo_areaRingSum; + d3_geo_areaSum += area < 0 ? 4 * π + area : area; + d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop; + } + }; + function d3_geo_areaRingStart() { + var λ00, φ00, λ0, cosφ0, sinφ0; + d3_geo_area.point = function(λ, φ) { + d3_geo_area.point = nextPoint; + λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), + sinφ0 = Math.sin(φ); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + φ = φ * d3_radians / 2 + π / 4; + var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ); + d3_geo_areaRingSum.add(Math.atan2(v, u)); + λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ; + } + d3_geo_area.lineEnd = function() { + nextPoint(λ00, φ00); + }; + } + function d3_geo_cartesian(spherical) { + var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ); + return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ]; + } + function d3_geo_cartesianDot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + function d3_geo_cartesianCross(a, b) { + return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ]; + } + function d3_geo_cartesianAdd(a, b) { + a[0] += b[0]; + a[1] += b[1]; + a[2] += b[2]; + } + function d3_geo_cartesianScale(vector, k) { + return [ vector[0] * k, vector[1] * k, vector[2] * k ]; + } + function d3_geo_cartesianNormalize(d) { + var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); + d[0] /= l; + d[1] /= l; + d[2] /= l; + } + function d3_geo_spherical(cartesian) { + return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ]; + } + function d3_geo_sphericalEqual(a, b) { + return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε; + } + d3.geo.bounds = function() { + var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range; + var bound = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + bound.point = ringPoint; + bound.lineStart = ringStart; + bound.lineEnd = ringEnd; + dλSum = 0; + d3_geo_area.polygonStart(); + }, + polygonEnd: function() { + d3_geo_area.polygonEnd(); + bound.point = point; + bound.lineStart = lineStart; + bound.lineEnd = lineEnd; + if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90; + range[0] = λ0, range[1] = λ1; + } + }; + function point(λ, φ) { + ranges.push(range = [ λ0 = λ, λ1 = λ ]); + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + function linePoint(λ, φ) { + var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]); + if (p0) { + var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal); + d3_geo_cartesianNormalize(inflection); + inflection = d3_geo_spherical(inflection); + var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180; + if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = inflection[1] * d3_degrees; + if (φi > φ1) φ1 = φi; + } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = -inflection[1] * d3_degrees; + if (φi < φ0) φ0 = φi; + } else { + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + if (antimeridian) { + if (λ < λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } else { + if (λ1 >= λ0) { + if (λ < λ0) λ0 = λ; + if (λ > λ1) λ1 = λ; + } else { + if (λ > λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } + } + } else { + point(λ, φ); + } + p0 = p, λ_ = λ; + } + function lineStart() { + bound.point = linePoint; + } + function lineEnd() { + range[0] = λ0, range[1] = λ1; + bound.point = point; + p0 = null; + } + function ringPoint(λ, φ) { + if (p0) { + var dλ = λ - λ_; + dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; + } else λ__ = λ, φ__ = φ; + d3_geo_area.point(λ, φ); + linePoint(λ, φ); + } + function ringStart() { + d3_geo_area.lineStart(); + } + function ringEnd() { + ringPoint(λ__, φ__); + d3_geo_area.lineEnd(); + if (abs(dλSum) > ε) λ0 = -(λ1 = 180); + range[0] = λ0, range[1] = λ1; + p0 = null; + } + function angle(λ0, λ1) { + return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; + } + function compareRanges(a, b) { + return a[0] - b[0]; + } + function withinRange(x, range) { + return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; + } + return function(feature) { + φ1 = λ1 = -(λ0 = φ0 = Infinity); + ranges = []; + d3.geo.stream(feature, bound); + var n = ranges.length; + if (n) { + ranges.sort(compareRanges); + for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) { + b = ranges[i]; + if (withinRange(b[0], a) || withinRange(b[1], a)) { + if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; + if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; + } else { + merged.push(a = b); + } + } + var best = -Infinity, dλ; + for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) { + b = merged[i]; + if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1]; + } + } + ranges = range = null; + return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ]; + }; + }(); + d3.geo.centroid = function(object) { + d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, d3_geo_centroid); + var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z; + if (m < ε2) { + x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1; + if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0; + m = x * x + y * y + z * z; + if (m < ε2) return [ NaN, NaN ]; + } + return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ]; + }; + var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2; + var d3_geo_centroid = { + sphere: d3_noop, + point: d3_geo_centroidPoint, + lineStart: d3_geo_centroidLineStart, + lineEnd: d3_geo_centroidLineEnd, + polygonStart: function() { + d3_geo_centroid.lineStart = d3_geo_centroidRingStart; + }, + polygonEnd: function() { + d3_geo_centroid.lineStart = d3_geo_centroidLineStart; + } + }; + function d3_geo_centroidPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ)); + } + function d3_geo_centroidPointXYZ(x, y, z) { + ++d3_geo_centroidW0; + d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0; + d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0; + d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0; + } + function d3_geo_centroidLineStart() { + var x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroid.point = nextPoint; + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_geo_centroidLineEnd() { + d3_geo_centroid.point = d3_geo_centroidPoint; + } + function d3_geo_centroidRingStart() { + var λ00, φ00, x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ00 = λ, φ00 = φ; + d3_geo_centroid.point = nextPoint; + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + d3_geo_centroid.lineEnd = function() { + nextPoint(λ00, φ00); + d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd; + d3_geo_centroid.point = d3_geo_centroidPoint; + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u); + d3_geo_centroidX2 += v * cx; + d3_geo_centroidY2 += v * cy; + d3_geo_centroidZ2 += v * cz; + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_geo_compose(a, b) { + function compose(x, y) { + return x = a(x, y), b(x[0], x[1]); + } + if (a.invert && b.invert) compose.invert = function(x, y) { + return x = b.invert(x, y), x && a.invert(x[0], x[1]); + }; + return compose; + } + function d3_true() { + return true; + } + function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) { + var subject = [], clip = []; + segments.forEach(function(segment) { + if ((n = segment.length - 1) <= 0) return; + var n, p0 = segment[0], p1 = segment[n]; + if (d3_geo_sphericalEqual(p0, p1)) { + listener.lineStart(); + for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]); + listener.lineEnd(); + return; + } + var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false); + a.o = b; + subject.push(a); + clip.push(b); + a = new d3_geo_clipPolygonIntersection(p1, segment, null, false); + b = new d3_geo_clipPolygonIntersection(p1, null, a, true); + a.o = b; + subject.push(a); + clip.push(b); + }); + clip.sort(compare); + d3_geo_clipPolygonLinkCircular(subject); + d3_geo_clipPolygonLinkCircular(clip); + if (!subject.length) return; + for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) { + clip[i].e = entry = !entry; + } + var start = subject[0], points, point; + while (1) { + var current = start, isSubject = true; + while (current.v) if ((current = current.n) === start) return; + points = current.z; + listener.lineStart(); + do { + current.v = current.o.v = true; + if (current.e) { + if (isSubject) { + for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.x, current.n.x, 1, listener); + } + current = current.n; + } else { + if (isSubject) { + points = current.p.z; + for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.x, current.p.x, -1, listener); + } + current = current.p; + } + current = current.o; + points = current.z; + isSubject = !isSubject; + } while (!current.v); + listener.lineEnd(); + } + } + function d3_geo_clipPolygonLinkCircular(array) { + if (!(n = array.length)) return; + var n, i = 0, a = array[0], b; + while (++i < n) { + a.n = b = array[i]; + b.p = a; + a = b; + } + a.n = b = array[0]; + b.p = a; + } + function d3_geo_clipPolygonIntersection(point, points, other, entry) { + this.x = point; + this.z = points; + this.o = other; + this.e = entry; + this.v = false; + this.n = this.p = null; + } + function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) { + return function(rotate, listener) { + var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]); + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + clip.point = pointRing; + clip.lineStart = ringStart; + clip.lineEnd = ringEnd; + segments = []; + polygon = []; + }, + polygonEnd: function() { + clip.point = point; + clip.lineStart = lineStart; + clip.lineEnd = lineEnd; + segments = d3.merge(segments); + var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon); + if (segments.length) { + if (!polygonStarted) listener.polygonStart(), polygonStarted = true; + d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener); + } else if (clipStartInside) { + if (!polygonStarted) listener.polygonStart(), polygonStarted = true; + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + if (polygonStarted) listener.polygonEnd(), polygonStarted = false; + segments = polygon = null; + }, + sphere: function() { + listener.polygonStart(); + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + listener.polygonEnd(); + } + }; + function point(λ, φ) { + var point = rotate(λ, φ); + if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ); + } + function pointLine(λ, φ) { + var point = rotate(λ, φ); + line.point(point[0], point[1]); + } + function lineStart() { + clip.point = pointLine; + line.lineStart(); + } + function lineEnd() { + clip.point = point; + line.lineEnd(); + } + var segments; + var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring; + function pointRing(λ, φ) { + ring.push([ λ, φ ]); + var point = rotate(λ, φ); + ringListener.point(point[0], point[1]); + } + function ringStart() { + ringListener.lineStart(); + ring = []; + } + function ringEnd() { + pointRing(ring[0][0], ring[0][1]); + ringListener.lineEnd(); + var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length; + ring.pop(); + polygon.push(ring); + ring = null; + if (!n) return; + if (clean & 1) { + segment = ringSegments[0]; + var n = segment.length - 1, i = -1, point; + if (n > 0) { + if (!polygonStarted) listener.polygonStart(), polygonStarted = true; + listener.lineStart(); + while (++i < n) listener.point((point = segment[i])[0], point[1]); + listener.lineEnd(); + } + return; + } + if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); + segments.push(ringSegments.filter(d3_geo_clipSegmentLength1)); + } + return clip; + }; + } + function d3_geo_clipSegmentLength1(segment) { + return segment.length > 1; + } + function d3_geo_clipBufferListener() { + var lines = [], line; + return { + lineStart: function() { + lines.push(line = []); + }, + point: function(λ, φ) { + line.push([ λ, φ ]); + }, + lineEnd: d3_noop, + buffer: function() { + var buffer = lines; + lines = []; + line = null; + return buffer; + }, + rejoin: function() { + if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); + } + }; + } + function d3_geo_clipSort(a, b) { + return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]); + } + var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]); + function d3_geo_clipAntimeridianLine(listener) { + var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean; + return { + lineStart: function() { + listener.lineStart(); + clean = 1; + }, + point: function(λ1, φ1) { + var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0); + if (abs(dλ - π) < ε) { + listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + listener.point(λ1, φ0); + clean = 0; + } else if (sλ0 !== sλ1 && dλ >= π) { + if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; + if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; + φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + clean = 0; + } + listener.point(λ0 = λ1, φ0 = φ1); + sλ0 = sλ1; + }, + lineEnd: function() { + listener.lineEnd(); + λ0 = φ0 = NaN; + }, + clean: function() { + return 2 - clean; + } + }; + } + function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) { + var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1); + return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2; + } + function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { + var φ; + if (from == null) { + φ = direction * halfπ; + listener.point(-π, φ); + listener.point(0, φ); + listener.point(π, φ); + listener.point(π, 0); + listener.point(π, -φ); + listener.point(0, -φ); + listener.point(-π, -φ); + listener.point(-π, 0); + listener.point(-π, φ); + } else if (abs(from[0] - to[0]) > ε) { + var s = from[0] < to[0] ? π : -π; + φ = direction * s / 2; + listener.point(-s, φ); + listener.point(0, φ); + listener.point(s, φ); + } else { + listener.point(to[0], to[1]); + } + } + function d3_geo_pointInPolygon(point, polygon) { + var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0; + d3_geo_areaRingSum.reset(); + for (var i = 0, n = polygon.length; i < n; ++i) { + var ring = polygon[i], m = ring.length; + if (!m) continue; + var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; + while (true) { + if (j === m) j = 0; + point = ring[j]; + var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ; + d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ))); + polarAngle += antimeridian ? dλ + sdλ * τ : dλ; + if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { + var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); + d3_geo_cartesianNormalize(arc); + var intersection = d3_geo_cartesianCross(meridianNormal, arc); + d3_geo_cartesianNormalize(intersection); + var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); + if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) { + winding += antimeridian ^ dλ >= 0 ? 1 : -1; + } + } + if (!j++) break; + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; + } + } + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; + } + function d3_geo_clipCircle(radius) { + var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); + return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]); + function visible(λ, φ) { + return Math.cos(λ) * Math.cos(φ) > cr; + } + function clipLine(listener) { + var point0, c0, v0, v00, clean; + return { + lineStart: function() { + v00 = v0 = false; + clean = 1; + }, + point: function(λ, φ) { + var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0; + if (!point0 && (v00 = v0 = v)) listener.lineStart(); + if (v !== v0) { + point2 = intersect(point0, point1); + if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) { + point1[0] += ε; + point1[1] += ε; + v = visible(point1[0], point1[1]); + } + } + if (v !== v0) { + clean = 0; + if (v) { + listener.lineStart(); + point2 = intersect(point1, point0); + listener.point(point2[0], point2[1]); + } else { + point2 = intersect(point0, point1); + listener.point(point2[0], point2[1]); + listener.lineEnd(); + } + point0 = point2; + } else if (notHemisphere && point0 && smallRadius ^ v) { + var t; + if (!(c & c0) && (t = intersect(point1, point0, true))) { + clean = 0; + if (smallRadius) { + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + } else { + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + } + } + } + if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) { + listener.point(point1[0], point1[1]); + } + point0 = point1, v0 = v, c0 = c; + }, + lineEnd: function() { + if (v0) listener.lineEnd(); + point0 = null; + }, + clean: function() { + return clean | (v00 && v0) << 1; + } + }; + } + function intersect(a, b, two) { + var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b); + var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2; + if (!determinant) return !two && a; + var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2); + d3_geo_cartesianAdd(A, B); + var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1); + if (t2 < 0) return; + var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu); + d3_geo_cartesianAdd(q, A); + q = d3_geo_spherical(q); + if (!two) return q; + var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z; + if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z; + var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε; + if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z; + if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) { + var q1 = d3_geo_cartesianScale(u, (-w + t) / uu); + d3_geo_cartesianAdd(q1, A); + return [ q, d3_geo_spherical(q1) ]; + } + } + function code(λ, φ) { + var r = smallRadius ? radius : π - radius, code = 0; + if (λ < -r) code |= 1; else if (λ > r) code |= 2; + if (φ < -r) code |= 4; else if (φ > r) code |= 8; + return code; + } + } + function d3_geom_clipLine(x0, y0, x1, y1) { + return function(line) { + var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r; + r = x0 - ax; + if (!dx && r > 0) return; + r /= dx; + if (dx < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dx > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + r = x1 - ax; + if (!dx && r < 0) return; + r /= dx; + if (dx < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dx > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + r = y0 - ay; + if (!dy && r > 0) return; + r /= dy; + if (dy < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dy > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + r = y1 - ay; + if (!dy && r < 0) return; + r /= dy; + if (dy < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dy > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + if (t0 > 0) line.a = { + x: ax + t0 * dx, + y: ay + t0 * dy + }; + if (t1 < 1) line.b = { + x: ax + t1 * dx, + y: ay + t1 * dy + }; + return line; + }; + } + var d3_geo_clipExtentMAX = 1e9; + d3.geo.clipExtent = function() { + var x0, y0, x1, y1, stream, clip, clipExtent = { + stream: function(output) { + if (stream) stream.valid = false; + stream = clip(output); + stream.valid = true; + return stream; + }, + extent: function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]); + if (stream) stream.valid = false, stream = null; + return clipExtent; + } + }; + return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]); + }; + function d3_geo_clipExtent(x0, y0, x1, y1) { + return function(listener) { + var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring; + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + listener = bufferListener; + segments = []; + polygon = []; + clean = true; + }, + polygonEnd: function() { + listener = listener_; + segments = d3.merge(segments); + var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length; + if (inside || visible) { + listener.polygonStart(); + if (inside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + if (visible) { + d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener); + } + listener.polygonEnd(); + } + segments = polygon = ring = null; + } + }; + function insidePolygon(p) { + var wn = 0, n = polygon.length, y = p[1]; + for (var i = 0; i < n; ++i) { + for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) { + b = v[j]; + if (a[1] <= y) { + if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn; + } else { + if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn; + } + a = b; + } + } + return wn !== 0; + } + function interpolate(from, to, direction, listener) { + var a = 0, a1 = 0; + if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) { + do { + listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); + } while ((a = (a + direction + 4) % 4) !== a1); + } else { + listener.point(to[0], to[1]); + } + } + function pointVisible(x, y) { + return x0 <= x && x <= x1 && y0 <= y && y <= y1; + } + function point(x, y) { + if (pointVisible(x, y)) listener.point(x, y); + } + var x__, y__, v__, x_, y_, v_, first, clean; + function lineStart() { + clip.point = linePoint; + if (polygon) polygon.push(ring = []); + first = true; + v_ = false; + x_ = y_ = NaN; + } + function lineEnd() { + if (segments) { + linePoint(x__, y__); + if (v__ && v_) bufferListener.rejoin(); + segments.push(bufferListener.buffer()); + } + clip.point = point; + if (v_) listener.lineEnd(); + } + function linePoint(x, y) { + x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x)); + y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y)); + var v = pointVisible(x, y); + if (polygon) ring.push([ x, y ]); + if (first) { + x__ = x, y__ = y, v__ = v; + first = false; + if (v) { + listener.lineStart(); + listener.point(x, y); + } + } else { + if (v && v_) listener.point(x, y); else { + var l = { + a: { + x: x_, + y: y_ + }, + b: { + x: x, + y: y + } + }; + if (clipLine(l)) { + if (!v_) { + listener.lineStart(); + listener.point(l.a.x, l.a.y); + } + listener.point(l.b.x, l.b.y); + if (!v) listener.lineEnd(); + clean = false; + } else if (v) { + listener.lineStart(); + listener.point(x, y); + clean = false; + } + } + } + x_ = x, y_ = y, v_ = v; + } + return clip; + }; + function corner(p, direction) { + return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; + } + function compare(a, b) { + return comparePoints(a.x, b.x); + } + function comparePoints(a, b) { + var ca = corner(a, 1), cb = corner(b, 1); + return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0]; + } + } + function d3_geo_conic(projectAt) { + var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1); + p.parallels = function(_) { + if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ]; + return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180); + }; + return p; + } + function d3_geo_conicEqualArea(φ0, φ1) { + var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n; + function forward(λ, φ) { + var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n; + return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = ρ0 - y; + return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ]; + }; + return forward; + } + (d3.geo.conicEqualArea = function() { + return d3_geo_conic(d3_geo_conicEqualArea); + }).raw = d3_geo_conicEqualArea; + d3.geo.albers = function() { + return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070); + }; + d3.geo.albersUsa = function() { + var lower48 = d3.geo.albers(); + var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]); + var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]); + var point, pointStream = { + point: function(x, y) { + point = [ x, y ]; + } + }, lower48Point, alaskaPoint, hawaiiPoint; + function albersUsa(coordinates) { + var x = coordinates[0], y = coordinates[1]; + point = null; + (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y); + return point; + } + albersUsa.invert = function(coordinates) { + var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k; + return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates); + }; + albersUsa.stream = function(stream) { + var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream); + return { + point: function(x, y) { + lower48Stream.point(x, y); + alaskaStream.point(x, y); + hawaiiStream.point(x, y); + }, + sphere: function() { + lower48Stream.sphere(); + alaskaStream.sphere(); + hawaiiStream.sphere(); + }, + lineStart: function() { + lower48Stream.lineStart(); + alaskaStream.lineStart(); + hawaiiStream.lineStart(); + }, + lineEnd: function() { + lower48Stream.lineEnd(); + alaskaStream.lineEnd(); + hawaiiStream.lineEnd(); + }, + polygonStart: function() { + lower48Stream.polygonStart(); + alaskaStream.polygonStart(); + hawaiiStream.polygonStart(); + }, + polygonEnd: function() { + lower48Stream.polygonEnd(); + alaskaStream.polygonEnd(); + hawaiiStream.polygonEnd(); + } + }; + }; + albersUsa.precision = function(_) { + if (!arguments.length) return lower48.precision(); + lower48.precision(_); + alaska.precision(_); + hawaii.precision(_); + return albersUsa; + }; + albersUsa.scale = function(_) { + if (!arguments.length) return lower48.scale(); + lower48.scale(_); + alaska.scale(_ * .35); + hawaii.scale(_); + return albersUsa.translate(lower48.translate()); + }; + albersUsa.translate = function(_) { + if (!arguments.length) return lower48.translate(); + var k = lower48.scale(), x = +_[0], y = +_[1]; + lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point; + alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + return albersUsa; + }; + return albersUsa.scale(1070); + }; + var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = { + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_pathAreaPolygon = 0; + d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart; + }, + polygonEnd: function() { + d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop; + d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2); + } + }; + function d3_geo_pathAreaRingStart() { + var x00, y00, x0, y0; + d3_geo_pathArea.point = function(x, y) { + d3_geo_pathArea.point = nextPoint; + x00 = x0 = x, y00 = y0 = y; + }; + function nextPoint(x, y) { + d3_geo_pathAreaPolygon += y0 * x - x0 * y; + x0 = x, y0 = y; + } + d3_geo_pathArea.lineEnd = function() { + nextPoint(x00, y00); + }; + } + var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1; + var d3_geo_pathBounds = { + point: d3_geo_pathBoundsPoint, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_pathBoundsPoint(x, y) { + if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x; + if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x; + if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y; + if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y; + } + function d3_geo_pathBuffer() { + var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = []; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointCircle = d3_geo_pathBufferCircle(_); + return stream; + }, + result: function() { + if (buffer.length) { + var result = buffer.join(""); + buffer = []; + return result; + } + } + }; + function point(x, y) { + buffer.push("M", x, ",", y, pointCircle); + } + function pointLineStart(x, y) { + buffer.push("M", x, ",", y); + stream.point = pointLine; + } + function pointLine(x, y) { + buffer.push("L", x, ",", y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + buffer.push("Z"); + } + return stream; + } + function d3_geo_pathBufferCircle(radius) { + return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z"; + } + var d3_geo_pathCentroid = { + point: d3_geo_pathCentroidPoint, + lineStart: d3_geo_pathCentroidLineStart, + lineEnd: d3_geo_pathCentroidLineEnd, + polygonStart: function() { + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart; + }, + polygonEnd: function() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart; + d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd; + } + }; + function d3_geo_pathCentroidPoint(x, y) { + d3_geo_centroidX0 += x; + d3_geo_centroidY0 += y; + ++d3_geo_centroidZ0; + } + function d3_geo_pathCentroidLineStart() { + var x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + } + function d3_geo_pathCentroidLineEnd() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + } + function d3_geo_pathCentroidRingStart() { + var x00, y00, x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + z = y0 * x - x0 * y; + d3_geo_centroidX2 += z * (x0 + x); + d3_geo_centroidY2 += z * (y0 + y); + d3_geo_centroidZ2 += z * 3; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + d3_geo_pathCentroid.lineEnd = function() { + nextPoint(x00, y00); + }; + } + function d3_geo_pathContext(context) { + var pointRadius = 4.5; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointRadius = _; + return stream; + }, + result: d3_noop + }; + function point(x, y) { + context.moveTo(x + pointRadius, y); + context.arc(x, y, pointRadius, 0, τ); + } + function pointLineStart(x, y) { + context.moveTo(x, y); + stream.point = pointLine; + } + function pointLine(x, y) { + context.lineTo(x, y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + context.closePath(); + } + return stream; + } + function d3_geo_resample(project) { + var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16; + function resample(stream) { + return (maxDepth ? resampleRecursive : resampleNone)(stream); + } + function resampleNone(stream) { + return d3_geo_transformPoint(stream, function(x, y) { + x = project(x, y); + stream.point(x[0], x[1]); + }); + } + function resampleRecursive(stream) { + var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0; + var resample = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + stream.polygonStart(); + resample.lineStart = ringStart; + }, + polygonEnd: function() { + stream.polygonEnd(); + resample.lineStart = lineStart; + } + }; + function point(x, y) { + x = project(x, y); + stream.point(x[0], x[1]); + } + function lineStart() { + x0 = NaN; + resample.point = linePoint; + stream.lineStart(); + } + function linePoint(λ, φ) { + var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ); + resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); + stream.point(x0, y0); + } + function lineEnd() { + resample.point = point; + stream.lineEnd(); + } + function ringStart() { + lineStart(); + resample.point = ringPoint; + resample.lineEnd = ringEnd; + } + function ringPoint(λ, φ) { + linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; + resample.point = linePoint; + } + function ringEnd() { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream); + resample.lineEnd = lineEnd; + lineEnd(); + } + return resample; + } + function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) { + var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy; + if (d2 > 4 * δ2 && depth--) { + var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2; + if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream); + stream.point(x2, y2); + resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream); + } + } + } + resample.precision = function(_) { + if (!arguments.length) return Math.sqrt(δ2); + maxDepth = (δ2 = _ * _) > 0 && 16; + return resample; + }; + return resample; + } + d3.geo.path = function() { + var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream; + function path(object) { + if (object) { + if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); + if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream); + d3.geo.stream(object, cacheStream); + } + return contextStream.result(); + } + path.area = function(object) { + d3_geo_pathAreaSum = 0; + d3.geo.stream(object, projectStream(d3_geo_pathArea)); + return d3_geo_pathAreaSum; + }; + path.centroid = function(object) { + d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, projectStream(d3_geo_pathCentroid)); + return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ]; + }; + path.bounds = function(object) { + d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity); + d3.geo.stream(object, projectStream(d3_geo_pathBounds)); + return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ]; + }; + path.projection = function(_) { + if (!arguments.length) return projection; + projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity; + return reset(); + }; + path.context = function(_) { + if (!arguments.length) return context; + contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_); + if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); + return reset(); + }; + path.pointRadius = function(_) { + if (!arguments.length) return pointRadius; + pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); + return path; + }; + function reset() { + cacheStream = null; + return path; + } + return path.projection(d3.geo.albersUsa()).context(null); + }; + function d3_geo_pathProjectStream(project) { + var resample = d3_geo_resample(function(x, y) { + return project([ x * d3_degrees, y * d3_degrees ]); + }); + return function(stream) { + return d3_geo_projectionRadians(resample(stream)); + }; + } + d3.geo.transform = function(methods) { + return { + stream: function(stream) { + var transform = new d3_geo_transform(stream); + for (var k in methods) transform[k] = methods[k]; + return transform; + } + }; + }; + function d3_geo_transform(stream) { + this.stream = stream; + } + d3_geo_transform.prototype = { + point: function(x, y) { + this.stream.point(x, y); + }, + sphere: function() { + this.stream.sphere(); + }, + lineStart: function() { + this.stream.lineStart(); + }, + lineEnd: function() { + this.stream.lineEnd(); + }, + polygonStart: function() { + this.stream.polygonStart(); + }, + polygonEnd: function() { + this.stream.polygonEnd(); + } + }; + function d3_geo_transformPoint(stream, point) { + return { + point: point, + sphere: function() { + stream.sphere(); + }, + lineStart: function() { + stream.lineStart(); + }, + lineEnd: function() { + stream.lineEnd(); + }, + polygonStart: function() { + stream.polygonStart(); + }, + polygonEnd: function() { + stream.polygonEnd(); + } + }; + } + d3.geo.projection = d3_geo_projection; + d3.geo.projectionMutator = d3_geo_projectionMutator; + function d3_geo_projection(project) { + return d3_geo_projectionMutator(function() { + return project; + })(); + } + function d3_geo_projectionMutator(projectAt) { + var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) { + x = project(x, y); + return [ x[0] * k + δx, δy - x[1] * k ]; + }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream; + function projection(point) { + point = projectRotate(point[0] * d3_radians, point[1] * d3_radians); + return [ point[0] * k + δx, δy - point[1] * k ]; + } + function invert(point) { + point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k); + return point && [ point[0] * d3_degrees, point[1] * d3_degrees ]; + } + projection.stream = function(output) { + if (stream) stream.valid = false; + stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output)))); + stream.valid = true; + return stream; + }; + projection.clipAngle = function(_) { + if (!arguments.length) return clipAngle; + preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians); + return invalidate(); + }; + projection.clipExtent = function(_) { + if (!arguments.length) return clipExtent; + clipExtent = _; + postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity; + return invalidate(); + }; + projection.scale = function(_) { + if (!arguments.length) return k; + k = +_; + return reset(); + }; + projection.translate = function(_) { + if (!arguments.length) return [ x, y ]; + x = +_[0]; + y = +_[1]; + return reset(); + }; + projection.center = function(_) { + if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ]; + λ = _[0] % 360 * d3_radians; + φ = _[1] % 360 * d3_radians; + return reset(); + }; + projection.rotate = function(_) { + if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ]; + δλ = _[0] % 360 * d3_radians; + δφ = _[1] % 360 * d3_radians; + δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0; + return reset(); + }; + d3.rebind(projection, projectResample, "precision"); + function reset() { + projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project); + var center = project(λ, φ); + δx = x - center[0] * k; + δy = y + center[1] * k; + return invalidate(); + } + function invalidate() { + if (stream) stream.valid = false, stream = null; + return projection; + } + return function() { + project = projectAt.apply(this, arguments); + projection.invert = project.invert && invert; + return reset(); + }; + } + function d3_geo_projectionRadians(stream) { + return d3_geo_transformPoint(stream, function(x, y) { + stream.point(x * d3_radians, y * d3_radians); + }); + } + function d3_geo_equirectangular(λ, φ) { + return [ λ, φ ]; + } + (d3.geo.equirectangular = function() { + return d3_geo_projection(d3_geo_equirectangular); + }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular; + d3.geo.rotation = function(rotate) { + rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0); + function forward(coordinates) { + coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + } + forward.invert = function(coordinates) { + coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + }; + return forward; + }; + function d3_geo_identityRotation(λ, φ) { + return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + } + d3_geo_identityRotation.invert = d3_geo_equirectangular; + function d3_geo_rotation(δλ, δφ, δγ) { + return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation; + } + function d3_geo_forwardRotationλ(δλ) { + return function(λ, φ) { + return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + }; + } + function d3_geo_rotationλ(δλ) { + var rotation = d3_geo_forwardRotationλ(δλ); + rotation.invert = d3_geo_forwardRotationλ(-δλ); + return rotation; + } + function d3_geo_rotationφγ(δφ, δγ) { + var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ); + function rotation(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ; + return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ]; + } + rotation.invert = function(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ; + return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ]; + }; + return rotation; + } + d3.geo.circle = function() { + var origin = [ 0, 0 ], angle, precision = 6, interpolate; + function circle() { + var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = []; + interpolate(null, null, 1, { + point: function(x, y) { + ring.push(x = rotate(x, y)); + x[0] *= d3_degrees, x[1] *= d3_degrees; + } + }); + return { + type: "Polygon", + coordinates: [ ring ] + }; + } + circle.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return circle; + }; + circle.angle = function(x) { + if (!arguments.length) return angle; + interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians); + return circle; + }; + circle.precision = function(_) { + if (!arguments.length) return precision; + interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians); + return circle; + }; + return circle.angle(90); + }; + function d3_geo_circleInterpolate(radius, precision) { + var cr = Math.cos(radius), sr = Math.sin(radius); + return function(from, to, direction, listener) { + var step = direction * precision; + if (from != null) { + from = d3_geo_circleAngle(cr, from); + to = d3_geo_circleAngle(cr, to); + if (direction > 0 ? from < to : from > to) from += direction * τ; + } else { + from = radius + direction * τ; + to = radius - .5 * step; + } + for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) { + listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]); + } + }; + } + function d3_geo_circleAngle(cr, point) { + var a = d3_geo_cartesian(point); + a[0] -= cr; + d3_geo_cartesianNormalize(a); + var angle = d3_acos(-a[1]); + return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI); + } + d3.geo.distance = function(a, b) { + var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t; + return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ); + }; + d3.geo.graticule = function() { + var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5; + function graticule() { + return { + type: "MultiLineString", + coordinates: lines() + }; + } + function lines() { + return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) { + return abs(x % DX) > ε; + }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) { + return abs(y % DY) > ε; + }).map(y)); + } + graticule.lines = function() { + return lines().map(function(coordinates) { + return { + type: "LineString", + coordinates: coordinates + }; + }); + }; + graticule.outline = function() { + return { + type: "Polygon", + coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ] + }; + }; + graticule.extent = function(_) { + if (!arguments.length) return graticule.minorExtent(); + return graticule.majorExtent(_).minorExtent(_); + }; + graticule.majorExtent = function(_) { + if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ]; + X0 = +_[0][0], X1 = +_[1][0]; + Y0 = +_[0][1], Y1 = +_[1][1]; + if (X0 > X1) _ = X0, X0 = X1, X1 = _; + if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; + return graticule.precision(precision); + }; + graticule.minorExtent = function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + x0 = +_[0][0], x1 = +_[1][0]; + y0 = +_[0][1], y1 = +_[1][1]; + if (x0 > x1) _ = x0, x0 = x1, x1 = _; + if (y0 > y1) _ = y0, y0 = y1, y1 = _; + return graticule.precision(precision); + }; + graticule.step = function(_) { + if (!arguments.length) return graticule.minorStep(); + return graticule.majorStep(_).minorStep(_); + }; + graticule.majorStep = function(_) { + if (!arguments.length) return [ DX, DY ]; + DX = +_[0], DY = +_[1]; + return graticule; + }; + graticule.minorStep = function(_) { + if (!arguments.length) return [ dx, dy ]; + dx = +_[0], dy = +_[1]; + return graticule; + }; + graticule.precision = function(_) { + if (!arguments.length) return precision; + precision = +_; + x = d3_geo_graticuleX(y0, y1, 90); + y = d3_geo_graticuleY(x0, x1, precision); + X = d3_geo_graticuleX(Y0, Y1, 90); + Y = d3_geo_graticuleY(X0, X1, precision); + return graticule; + }; + return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]); + }; + function d3_geo_graticuleX(y0, y1, dy) { + var y = d3.range(y0, y1 - ε, dy).concat(y1); + return function(x) { + return y.map(function(y) { + return [ x, y ]; + }); + }; + } + function d3_geo_graticuleY(x0, x1, dx) { + var x = d3.range(x0, x1 - ε, dx).concat(x1); + return function(y) { + return x.map(function(x) { + return [ x, y ]; + }); + }; + } + function d3_source(d) { + return d.source; + } + function d3_target(d) { + return d.target; + } + d3.geo.greatArc = function() { + var source = d3_source, source_, target = d3_target, target_; + function greatArc() { + return { + type: "LineString", + coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ] + }; + } + greatArc.distance = function() { + return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments)); + }; + greatArc.source = function(_) { + if (!arguments.length) return source; + source = _, source_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.target = function(_) { + if (!arguments.length) return target; + target = _, target_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.precision = function() { + return arguments.length ? greatArc : 0; + }; + return greatArc; + }; + d3.geo.interpolate = function(source, target) { + return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians); + }; + function d3_geo_interpolate(x0, y0, x1, y1) { + var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d); + var interpolate = d ? function(t) { + var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1; + return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ]; + } : function() { + return [ x0 * d3_degrees, y0 * d3_degrees ]; + }; + interpolate.distance = d; + return interpolate; + } + d3.geo.length = function(object) { + d3_geo_lengthSum = 0; + d3.geo.stream(object, d3_geo_length); + return d3_geo_lengthSum; + }; + var d3_geo_lengthSum; + var d3_geo_length = { + sphere: d3_noop, + point: d3_noop, + lineStart: d3_geo_lengthLineStart, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_lengthLineStart() { + var λ0, sinφ0, cosφ0; + d3_geo_length.point = function(λ, φ) { + λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ); + d3_geo_length.point = nextPoint; + }; + d3_geo_length.lineEnd = function() { + d3_geo_length.point = d3_geo_length.lineEnd = d3_noop; + }; + function nextPoint(λ, φ) { + var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t); + d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ); + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ; + } + } + function d3_geo_azimuthal(scale, angle) { + function azimuthal(λ, φ) { + var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ); + return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ]; + } + azimuthal.invert = function(x, y) { + var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c); + return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ]; + }; + return azimuthal; + } + var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) { + return Math.sqrt(2 / (1 + cosλcosφ)); + }, function(ρ) { + return 2 * Math.asin(ρ / 2); + }); + (d3.geo.azimuthalEqualArea = function() { + return d3_geo_projection(d3_geo_azimuthalEqualArea); + }).raw = d3_geo_azimuthalEqualArea; + var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) { + var c = Math.acos(cosλcosφ); + return c && c / Math.sin(c); + }, d3_identity); + (d3.geo.azimuthalEquidistant = function() { + return d3_geo_projection(d3_geo_azimuthalEquidistant); + }).raw = d3_geo_azimuthalEquidistant; + function d3_geo_conicConformal(φ0, φ1) { + var cosφ0 = Math.cos(φ0), t = function(φ) { + return Math.tan(π / 4 + φ / 2); + }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n; + if (!n) return d3_geo_mercator; + function forward(λ, φ) { + if (F > 0) { + if (φ < -halfπ + ε) φ = -halfπ + ε; + } else { + if (φ > halfπ - ε) φ = halfπ - ε; + } + var ρ = F / Math.pow(t(φ), n); + return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y); + return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ]; + }; + return forward; + } + (d3.geo.conicConformal = function() { + return d3_geo_conic(d3_geo_conicConformal); + }).raw = d3_geo_conicConformal; + function d3_geo_conicEquidistant(φ0, φ1) { + var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0; + if (abs(n) < ε) return d3_geo_equirectangular; + function forward(λ, φ) { + var ρ = G - φ; + return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = G - y; + return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ]; + }; + return forward; + } + (d3.geo.conicEquidistant = function() { + return d3_geo_conic(d3_geo_conicEquidistant); + }).raw = d3_geo_conicEquidistant; + var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / cosλcosφ; + }, Math.atan); + (d3.geo.gnomonic = function() { + return d3_geo_projection(d3_geo_gnomonic); + }).raw = d3_geo_gnomonic; + function d3_geo_mercator(λ, φ) { + return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ]; + } + d3_geo_mercator.invert = function(x, y) { + return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ]; + }; + function d3_geo_mercatorProjection(project) { + var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto; + m.scale = function() { + var v = scale.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.translate = function() { + var v = translate.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.clipExtent = function(_) { + var v = clipExtent.apply(m, arguments); + if (v === m) { + if (clipAuto = _ == null) { + var k = π * scale(), t = translate(); + clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]); + } + } else if (clipAuto) { + v = null; + } + return v; + }; + return m.clipExtent(null); + } + (d3.geo.mercator = function() { + return d3_geo_mercatorProjection(d3_geo_mercator); + }).raw = d3_geo_mercator; + var d3_geo_orthographic = d3_geo_azimuthal(function() { + return 1; + }, Math.asin); + (d3.geo.orthographic = function() { + return d3_geo_projection(d3_geo_orthographic); + }).raw = d3_geo_orthographic; + var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / (1 + cosλcosφ); + }, function(ρ) { + return 2 * Math.atan(ρ); + }); + (d3.geo.stereographic = function() { + return d3_geo_projection(d3_geo_stereographic); + }).raw = d3_geo_stereographic; + function d3_geo_transverseMercator(λ, φ) { + return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ]; + } + d3_geo_transverseMercator.invert = function(x, y) { + return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ]; + }; + (d3.geo.transverseMercator = function() { + var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate; + projection.center = function(_) { + return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]); + }; + projection.rotate = function(_) { + return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), + [ _[0], _[1], _[2] - 90 ]); + }; + return rotate([ 0, 0, 90 ]); + }).raw = d3_geo_transverseMercator; + d3.geom = {}; + function d3_geom_pointX(d) { + return d[0]; + } + function d3_geom_pointY(d) { + return d[1]; + } + d3.geom.hull = function(vertices) { + var x = d3_geom_pointX, y = d3_geom_pointY; + if (arguments.length) return hull(vertices); + function hull(data) { + if (data.length < 3) return []; + var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = []; + for (i = 0; i < n; i++) { + points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]); + } + points.sort(d3_geom_hullOrder); + for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]); + var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints); + var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = []; + for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]); + for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]); + return polygon; + } + hull.x = function(_) { + return arguments.length ? (x = _, hull) : x; + }; + hull.y = function(_) { + return arguments.length ? (y = _, hull) : y; + }; + return hull; + }; + function d3_geom_hullUpper(points) { + var n = points.length, hull = [ 0, 1 ], hs = 2; + for (var i = 2; i < n; i++) { + while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs; + hull[hs++] = i; + } + return hull.slice(0, hs); + } + function d3_geom_hullOrder(a, b) { + return a[0] - b[0] || a[1] - b[1]; + } + d3.geom.polygon = function(coordinates) { + d3_subclass(coordinates, d3_geom_polygonPrototype); + return coordinates; + }; + var d3_geom_polygonPrototype = d3.geom.polygon.prototype = []; + d3_geom_polygonPrototype.area = function() { + var i = -1, n = this.length, a, b = this[n - 1], area = 0; + while (++i < n) { + a = b; + b = this[i]; + area += a[1] * b[0] - a[0] * b[1]; + } + return area * .5; + }; + d3_geom_polygonPrototype.centroid = function(k) { + var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c; + if (!arguments.length) k = -1 / (6 * this.area()); + while (++i < n) { + a = b; + b = this[i]; + c = a[0] * b[1] - b[0] * a[1]; + x += (a[0] + b[0]) * c; + y += (a[1] + b[1]) * c; + } + return [ x * k, y * k ]; + }; + d3_geom_polygonPrototype.clip = function(subject) { + var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d; + while (++i < n) { + input = subject.slice(); + subject.length = 0; + b = this[i]; + c = input[(m = input.length - closed) - 1]; + j = -1; + while (++j < m) { + d = input[j]; + if (d3_geom_polygonInside(d, a, b)) { + if (!d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + subject.push(d); + } else if (d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + c = d; + } + if (closed) subject.push(subject[0]); + a = b; + } + return subject; + }; + function d3_geom_polygonInside(p, a, b) { + return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]); + } + function d3_geom_polygonIntersect(c, d, a, b) { + var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21); + return [ x1 + ua * x21, y1 + ua * y21 ]; + } + function d3_geom_polygonClosed(coordinates) { + var a = coordinates[0], b = coordinates[coordinates.length - 1]; + return !(a[0] - b[0] || a[1] - b[1]); + } + var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = []; + function d3_geom_voronoiBeach() { + d3_geom_voronoiRedBlackNode(this); + this.edge = this.site = this.circle = null; + } + function d3_geom_voronoiCreateBeach(site) { + var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach(); + beach.site = site; + return beach; + } + function d3_geom_voronoiDetachBeach(beach) { + d3_geom_voronoiDetachCircle(beach); + d3_geom_voronoiBeaches.remove(beach); + d3_geom_voronoiBeachPool.push(beach); + d3_geom_voronoiRedBlackNode(beach); + } + function d3_geom_voronoiRemoveBeach(beach) { + var circle = beach.circle, x = circle.x, y = circle.cy, vertex = { + x: x, + y: y + }, previous = beach.P, next = beach.N, disappearing = [ beach ]; + d3_geom_voronoiDetachBeach(beach); + var lArc = previous; + while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) { + previous = lArc.P; + disappearing.unshift(lArc); + d3_geom_voronoiDetachBeach(lArc); + lArc = previous; + } + disappearing.unshift(lArc); + d3_geom_voronoiDetachCircle(lArc); + var rArc = next; + while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) { + next = rArc.N; + disappearing.push(rArc); + d3_geom_voronoiDetachBeach(rArc); + rArc = next; + } + disappearing.push(rArc); + d3_geom_voronoiDetachCircle(rArc); + var nArcs = disappearing.length, iArc; + for (iArc = 1; iArc < nArcs; ++iArc) { + rArc = disappearing[iArc]; + lArc = disappearing[iArc - 1]; + d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); + } + lArc = disappearing[0]; + rArc = disappearing[nArcs - 1]; + rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex); + d3_geom_voronoiAttachCircle(lArc); + d3_geom_voronoiAttachCircle(rArc); + } + function d3_geom_voronoiAddBeach(site) { + var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._; + while (node) { + dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x; + if (dxl > ε) node = node.L; else { + dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix); + if (dxr > ε) { + if (!node.R) { + lArc = node; + break; + } + node = node.R; + } else { + if (dxl > -ε) { + lArc = node.P; + rArc = node; + } else if (dxr > -ε) { + lArc = node; + rArc = node.N; + } else { + lArc = rArc = node; + } + break; + } + } + } + var newArc = d3_geom_voronoiCreateBeach(site); + d3_geom_voronoiBeaches.insert(lArc, newArc); + if (!lArc && !rArc) return; + if (lArc === rArc) { + d3_geom_voronoiDetachCircle(lArc); + rArc = d3_geom_voronoiCreateBeach(lArc.site); + d3_geom_voronoiBeaches.insert(newArc, rArc); + newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site); + d3_geom_voronoiAttachCircle(lArc); + d3_geom_voronoiAttachCircle(rArc); + return; + } + if (!rArc) { + newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site); + return; + } + d3_geom_voronoiDetachCircle(lArc); + d3_geom_voronoiDetachCircle(rArc); + var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = { + x: (cy * hb - by * hc) / d + ax, + y: (bx * hc - cx * hb) / d + ay + }; + d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex); + newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex); + rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex); + d3_geom_voronoiAttachCircle(lArc); + d3_geom_voronoiAttachCircle(rArc); + } + function d3_geom_voronoiLeftBreakPoint(arc, directrix) { + var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix; + if (!pby2) return rfocx; + var lArc = arc.P; + if (!lArc) return -Infinity; + site = lArc.site; + var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix; + if (!plby2) return lfocx; + var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2; + if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; + return (rfocx + lfocx) / 2; + } + function d3_geom_voronoiRightBreakPoint(arc, directrix) { + var rArc = arc.N; + if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix); + var site = arc.site; + return site.y === directrix ? site.x : Infinity; + } + function d3_geom_voronoiCell(site) { + this.site = site; + this.edges = []; + } + d3_geom_voronoiCell.prototype.prepare = function() { + var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge; + while (iHalfEdge--) { + edge = halfEdges[iHalfEdge].edge; + if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1); + } + halfEdges.sort(d3_geom_voronoiHalfEdgeOrder); + return halfEdges.length; + }; + function d3_geom_voronoiCloseCells(extent) { + var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end; + while (iCell--) { + cell = cells[iCell]; + if (!cell || !cell.prepare()) continue; + halfEdges = cell.edges; + nHalfEdges = halfEdges.length; + iHalfEdge = 0; + while (iHalfEdge < nHalfEdges) { + end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y; + start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y; + if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) { + halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? { + x: x0, + y: abs(x2 - x0) < ε ? y2 : y1 + } : abs(y3 - y1) < ε && x1 - x3 > ε ? { + x: abs(y2 - y1) < ε ? x2 : x1, + y: y1 + } : abs(x3 - x1) < ε && y3 - y0 > ε ? { + x: x1, + y: abs(x2 - x1) < ε ? y2 : y0 + } : abs(y3 - y0) < ε && x3 - x0 > ε ? { + x: abs(y2 - y0) < ε ? x2 : x0, + y: y0 + } : null), cell.site, null)); + ++nHalfEdges; + } + } + } + } + function d3_geom_voronoiHalfEdgeOrder(a, b) { + return b.angle - a.angle; + } + function d3_geom_voronoiCircle() { + d3_geom_voronoiRedBlackNode(this); + this.x = this.y = this.arc = this.site = this.cy = null; + } + function d3_geom_voronoiAttachCircle(arc) { + var lArc = arc.P, rArc = arc.N; + if (!lArc || !rArc) return; + var lSite = lArc.site, cSite = arc.site, rSite = rArc.site; + if (lSite === rSite) return; + var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by; + var d = 2 * (ax * cy - ay * cx); + if (d >= -ε2) return; + var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by; + var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle(); + circle.arc = arc; + circle.site = cSite; + circle.x = x + bx; + circle.y = cy + Math.sqrt(x * x + y * y); + circle.cy = cy; + arc.circle = circle; + var before = null, node = d3_geom_voronoiCircles._; + while (node) { + if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) { + if (node.L) node = node.L; else { + before = node.P; + break; + } + } else { + if (node.R) node = node.R; else { + before = node; + break; + } + } + } + d3_geom_voronoiCircles.insert(before, circle); + if (!before) d3_geom_voronoiFirstCircle = circle; + } + function d3_geom_voronoiDetachCircle(arc) { + var circle = arc.circle; + if (circle) { + if (!circle.P) d3_geom_voronoiFirstCircle = circle.N; + d3_geom_voronoiCircles.remove(circle); + d3_geom_voronoiCirclePool.push(circle); + d3_geom_voronoiRedBlackNode(circle); + arc.circle = null; + } + } + function d3_geom_voronoiClipEdges(extent) { + var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e; + while (i--) { + e = edges[i]; + if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) { + e.a = e.b = null; + edges.splice(i, 1); + } + } + } + function d3_geom_voronoiConnectEdge(edge, extent) { + var vb = edge.b; + if (vb) return true; + var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb; + if (ry === ly) { + if (fx < x0 || fx >= x1) return; + if (lx > rx) { + if (!va) va = { + x: fx, + y: y0 + }; else if (va.y >= y1) return; + vb = { + x: fx, + y: y1 + }; + } else { + if (!va) va = { + x: fx, + y: y1 + }; else if (va.y < y0) return; + vb = { + x: fx, + y: y0 + }; + } + } else { + fm = (lx - rx) / (ry - ly); + fb = fy - fm * fx; + if (fm < -1 || fm > 1) { + if (lx > rx) { + if (!va) va = { + x: (y0 - fb) / fm, + y: y0 + }; else if (va.y >= y1) return; + vb = { + x: (y1 - fb) / fm, + y: y1 + }; + } else { + if (!va) va = { + x: (y1 - fb) / fm, + y: y1 + }; else if (va.y < y0) return; + vb = { + x: (y0 - fb) / fm, + y: y0 + }; + } + } else { + if (ly < ry) { + if (!va) va = { + x: x0, + y: fm * x0 + fb + }; else if (va.x >= x1) return; + vb = { + x: x1, + y: fm * x1 + fb + }; + } else { + if (!va) va = { + x: x1, + y: fm * x1 + fb + }; else if (va.x < x0) return; + vb = { + x: x0, + y: fm * x0 + fb + }; + } + } + } + edge.a = va; + edge.b = vb; + return true; + } + function d3_geom_voronoiEdge(lSite, rSite) { + this.l = lSite; + this.r = rSite; + this.a = this.b = null; + } + function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) { + var edge = new d3_geom_voronoiEdge(lSite, rSite); + d3_geom_voronoiEdges.push(edge); + if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va); + if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb); + d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite)); + d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite)); + return edge; + } + function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) { + var edge = new d3_geom_voronoiEdge(lSite, null); + edge.a = va; + edge.b = vb; + d3_geom_voronoiEdges.push(edge); + return edge; + } + function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) { + if (!edge.a && !edge.b) { + edge.a = vertex; + edge.l = lSite; + edge.r = rSite; + } else if (edge.l === rSite) { + edge.b = vertex; + } else { + edge.a = vertex; + } + } + function d3_geom_voronoiHalfEdge(edge, lSite, rSite) { + var va = edge.a, vb = edge.b; + this.edge = edge; + this.site = lSite; + this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y); + } + d3_geom_voronoiHalfEdge.prototype = { + start: function() { + return this.edge.l === this.site ? this.edge.a : this.edge.b; + }, + end: function() { + return this.edge.l === this.site ? this.edge.b : this.edge.a; + } + }; + function d3_geom_voronoiRedBlackTree() { + this._ = null; + } + function d3_geom_voronoiRedBlackNode(node) { + node.U = node.C = node.L = node.R = node.P = node.N = null; + } + d3_geom_voronoiRedBlackTree.prototype = { + insert: function(after, node) { + var parent, grandpa, uncle; + if (after) { + node.P = after; + node.N = after.N; + if (after.N) after.N.P = node; + after.N = node; + if (after.R) { + after = after.R; + while (after.L) after = after.L; + after.L = node; + } else { + after.R = node; + } + parent = after; + } else if (this._) { + after = d3_geom_voronoiRedBlackFirst(this._); + node.P = null; + node.N = after; + after.P = after.L = node; + parent = after; + } else { + node.P = node.N = null; + this._ = node; + parent = null; + } + node.L = node.R = null; + node.U = parent; + node.C = true; + after = node; + while (parent && parent.C) { + grandpa = parent.U; + if (parent === grandpa.L) { + uncle = grandpa.R; + if (uncle && uncle.C) { + parent.C = uncle.C = false; + grandpa.C = true; + after = grandpa; + } else { + if (after === parent.R) { + d3_geom_voronoiRedBlackRotateLeft(this, parent); + after = parent; + parent = after.U; + } + parent.C = false; + grandpa.C = true; + d3_geom_voronoiRedBlackRotateRight(this, grandpa); + } + } else { + uncle = grandpa.L; + if (uncle && uncle.C) { + parent.C = uncle.C = false; + grandpa.C = true; + after = grandpa; + } else { + if (after === parent.L) { + d3_geom_voronoiRedBlackRotateRight(this, parent); + after = parent; + parent = after.U; + } + parent.C = false; + grandpa.C = true; + d3_geom_voronoiRedBlackRotateLeft(this, grandpa); + } + } + parent = after.U; + } + this._.C = false; + }, + remove: function(node) { + if (node.N) node.N.P = node.P; + if (node.P) node.P.N = node.N; + node.N = node.P = null; + var parent = node.U, sibling, left = node.L, right = node.R, next, red; + if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right); + if (parent) { + if (parent.L === node) parent.L = next; else parent.R = next; + } else { + this._ = next; + } + if (left && right) { + red = next.C; + next.C = node.C; + next.L = left; + left.U = next; + if (next !== right) { + parent = next.U; + next.U = node.U; + node = next.R; + parent.L = node; + next.R = right; + right.U = next; + } else { + next.U = parent; + parent = next; + node = next.R; + } + } else { + red = node.C; + node = next; + } + if (node) node.U = parent; + if (red) return; + if (node && node.C) { + node.C = false; + return; + } + do { + if (node === this._) break; + if (node === parent.L) { + sibling = parent.R; + if (sibling.C) { + sibling.C = false; + parent.C = true; + d3_geom_voronoiRedBlackRotateLeft(this, parent); + sibling = parent.R; + } + if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) { + if (!sibling.R || !sibling.R.C) { + sibling.L.C = false; + sibling.C = true; + d3_geom_voronoiRedBlackRotateRight(this, sibling); + sibling = parent.R; + } + sibling.C = parent.C; + parent.C = sibling.R.C = false; + d3_geom_voronoiRedBlackRotateLeft(this, parent); + node = this._; + break; + } + } else { + sibling = parent.L; + if (sibling.C) { + sibling.C = false; + parent.C = true; + d3_geom_voronoiRedBlackRotateRight(this, parent); + sibling = parent.L; + } + if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) { + if (!sibling.L || !sibling.L.C) { + sibling.R.C = false; + sibling.C = true; + d3_geom_voronoiRedBlackRotateLeft(this, sibling); + sibling = parent.L; + } + sibling.C = parent.C; + parent.C = sibling.L.C = false; + d3_geom_voronoiRedBlackRotateRight(this, parent); + node = this._; + break; + } + } + sibling.C = true; + node = parent; + parent = parent.U; + } while (!node.C); + if (node) node.C = false; + } + }; + function d3_geom_voronoiRedBlackRotateLeft(tree, node) { + var p = node, q = node.R, parent = p.U; + if (parent) { + if (parent.L === p) parent.L = q; else parent.R = q; + } else { + tree._ = q; + } + q.U = parent; + p.U = q; + p.R = q.L; + if (p.R) p.R.U = p; + q.L = p; + } + function d3_geom_voronoiRedBlackRotateRight(tree, node) { + var p = node, q = node.L, parent = p.U; + if (parent) { + if (parent.L === p) parent.L = q; else parent.R = q; + } else { + tree._ = q; + } + q.U = parent; + p.U = q; + p.L = q.R; + if (p.L) p.L.U = p; + q.R = p; + } + function d3_geom_voronoiRedBlackFirst(node) { + while (node.L) node = node.L; + return node; + } + function d3_geom_voronoi(sites, bbox) { + var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle; + d3_geom_voronoiEdges = []; + d3_geom_voronoiCells = new Array(sites.length); + d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree(); + d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree(); + while (true) { + circle = d3_geom_voronoiFirstCircle; + if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) { + if (site.x !== x0 || site.y !== y0) { + d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site); + d3_geom_voronoiAddBeach(site); + x0 = site.x, y0 = site.y; + } + site = sites.pop(); + } else if (circle) { + d3_geom_voronoiRemoveBeach(circle.arc); + } else { + break; + } + } + if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox); + var diagram = { + cells: d3_geom_voronoiCells, + edges: d3_geom_voronoiEdges + }; + d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null; + return diagram; + } + function d3_geom_voronoiVertexOrder(a, b) { + return b.y - a.y || b.x - a.x; + } + d3.geom.voronoi = function(points) { + var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent; + if (points) return voronoi(points); + function voronoi(data) { + var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1]; + d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) { + var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) { + var s = e.start(); + return [ s.x, s.y ]; + }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : []; + polygon.point = data[i]; + }); + return polygons; + } + function sites(data) { + return data.map(function(d, i) { + return { + x: Math.round(fx(d, i) / ε) * ε, + y: Math.round(fy(d, i) / ε) * ε, + i: i + }; + }); + } + voronoi.links = function(data) { + return d3_geom_voronoi(sites(data)).edges.filter(function(edge) { + return edge.l && edge.r; + }).map(function(edge) { + return { + source: data[edge.l.i], + target: data[edge.r.i] + }; + }); + }; + voronoi.triangles = function(data) { + var triangles = []; + d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) { + var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l; + while (++j < m) { + e0 = e1; + s0 = s1; + e1 = edges[j].edge; + s1 = e1.l === site ? e1.r : e1.l; + if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) { + triangles.push([ data[i], data[s0.i], data[s1.i] ]); + } + } + }); + return triangles; + }; + voronoi.x = function(_) { + return arguments.length ? (fx = d3_functor(x = _), voronoi) : x; + }; + voronoi.y = function(_) { + return arguments.length ? (fy = d3_functor(y = _), voronoi) : y; + }; + voronoi.clipExtent = function(_) { + if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent; + clipExtent = _ == null ? d3_geom_voronoiClipExtent : _; + return voronoi; + }; + voronoi.size = function(_) { + if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1]; + return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]); + }; + return voronoi; + }; + var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ]; + function d3_geom_voronoiTriangleArea(a, b, c) { + return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y); + } + d3.geom.delaunay = function(vertices) { + return d3.geom.voronoi().triangles(vertices); + }; + d3.geom.quadtree = function(points, x1, y1, x2, y2) { + var x = d3_geom_pointX, y = d3_geom_pointY, compat; + if (compat = arguments.length) { + x = d3_geom_quadtreeCompatX; + y = d3_geom_quadtreeCompatY; + if (compat === 3) { + y2 = y1; + x2 = x1; + y1 = x1 = 0; + } + return quadtree(points); + } + function quadtree(data) { + var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_; + if (x1 != null) { + x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2; + } else { + x2_ = y2_ = -(x1_ = y1_ = Infinity); + xs = [], ys = []; + n = data.length; + if (compat) for (i = 0; i < n; ++i) { + d = data[i]; + if (d.x < x1_) x1_ = d.x; + if (d.y < y1_) y1_ = d.y; + if (d.x > x2_) x2_ = d.x; + if (d.y > y2_) y2_ = d.y; + xs.push(d.x); + ys.push(d.y); + } else for (i = 0; i < n; ++i) { + var x_ = +fx(d = data[i], i), y_ = +fy(d, i); + if (x_ < x1_) x1_ = x_; + if (y_ < y1_) y1_ = y_; + if (x_ > x2_) x2_ = x_; + if (y_ > y2_) y2_ = y_; + xs.push(x_); + ys.push(y_); + } + } + var dx = x2_ - x1_, dy = y2_ - y1_; + if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy; + function insert(n, d, x, y, x1, y1, x2, y2) { + if (isNaN(x) || isNaN(y)) return; + if (n.leaf) { + var nx = n.x, ny = n.y; + if (nx != null) { + if (abs(nx - x) + abs(ny - y) < .01) { + insertChild(n, d, x, y, x1, y1, x2, y2); + } else { + var nPoint = n.point; + n.x = n.y = n.point = null; + insertChild(n, nPoint, nx, ny, x1, y1, x2, y2); + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } else { + n.x = x, n.y = y, n.point = d; + } + } else { + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } + function insertChild(n, d, x, y, x1, y1, x2, y2) { + var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right; + n.leaf = false; + n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode()); + if (right) x1 = xm; else x2 = xm; + if (below) y1 = ym; else y2 = ym; + insert(n, d, x, y, x1, y1, x2, y2); + } + var root = d3_geom_quadtreeNode(); + root.add = function(d) { + insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_); + }; + root.visit = function(f) { + d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_); + }; + root.find = function(point) { + return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_); + }; + i = -1; + if (x1 == null) { + while (++i < n) { + insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_); + } + --i; + } else data.forEach(root.add); + xs = ys = data = d = null; + return root; + } + quadtree.x = function(_) { + return arguments.length ? (x = _, quadtree) : x; + }; + quadtree.y = function(_) { + return arguments.length ? (y = _, quadtree) : y; + }; + quadtree.extent = function(_) { + if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], + y2 = +_[1][1]; + return quadtree; + }; + quadtree.size = function(_) { + if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1]; + return quadtree; + }; + return quadtree; + }; + function d3_geom_quadtreeCompatX(d) { + return d.x; + } + function d3_geom_quadtreeCompatY(d) { + return d.y; + } + function d3_geom_quadtreeNode() { + return { + leaf: true, + nodes: [], + point: null, + x: null, + y: null + }; + } + function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) { + if (!f(node, x1, y1, x2, y2)) { + var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes; + if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy); + if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy); + if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2); + if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2); + } + } + function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) { + var minDistance2 = Infinity, closestPoint; + (function find(node, x1, y1, x2, y2) { + if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return; + if (point = node.point) { + var point, dx = x - point[0], dy = y - point[1], distance2 = dx * dx + dy * dy; + if (distance2 < minDistance2) { + var distance = Math.sqrt(minDistance2 = distance2); + x0 = x - distance, y0 = y - distance; + x3 = x + distance, y3 = y + distance; + closestPoint = point; + } + } + var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym; + for (var i = below << 1 | right, j = i + 4; i < j; ++i) { + if (node = children[i & 3]) switch (i & 3) { + case 0: + find(node, x1, y1, xm, ym); + break; + + case 1: + find(node, xm, y1, x2, ym); + break; + + case 2: + find(node, x1, ym, xm, y2); + break; + + case 3: + find(node, xm, ym, x2, y2); + break; + } + } + })(root, x0, y0, x3, y3); + return closestPoint; + } + d3.interpolateRgb = d3_interpolateRgb; + function d3_interpolateRgb(a, b) { + a = d3.rgb(a); + b = d3.rgb(b); + var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab; + return function(t) { + return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t)); + }; + } + d3.interpolateObject = d3_interpolateObject; + function d3_interpolateObject(a, b) { + var i = {}, c = {}, k; + for (k in a) { + if (k in b) { + i[k] = d3_interpolate(a[k], b[k]); + } else { + c[k] = a[k]; + } + } + for (k in b) { + if (!(k in a)) { + c[k] = b[k]; + } + } + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; + } + d3.interpolateNumber = d3_interpolateNumber; + function d3_interpolateNumber(a, b) { + a = +a, b = +b; + return function(t) { + return a * (1 - t) + b * t; + }; + } + d3.interpolateString = d3_interpolateString; + function d3_interpolateString(a, b) { + var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = []; + a = a + "", b = b + ""; + while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) { + if ((bs = bm.index) > bi) { + bs = b.slice(bi, bs); + if (s[i]) s[i] += bs; else s[++i] = bs; + } + if ((am = am[0]) === (bm = bm[0])) { + if (s[i]) s[i] += bm; else s[++i] = bm; + } else { + s[++i] = null; + q.push({ + i: i, + x: d3_interpolateNumber(am, bm) + }); + } + bi = d3_interpolate_numberB.lastIndex; + } + if (bi < b.length) { + bs = b.slice(bi); + if (s[i]) s[i] += bs; else s[++i] = bs; + } + return s.length < 2 ? q[0] ? (b = q[0].x, function(t) { + return b(t) + ""; + }) : function() { + return b; + } : (b = q.length, function(t) { + for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }); + } + var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g"); + d3.interpolate = d3_interpolate; + function d3_interpolate(a, b) { + var i = d3.interpolators.length, f; + while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ; + return f; + } + d3.interpolators = [ function(a, b) { + var t = typeof b; + return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === "object" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b); + } ]; + d3.interpolateArray = d3_interpolateArray; + function d3_interpolateArray(a, b) { + var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i; + for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i])); + for (;i < na; ++i) c[i] = a[i]; + for (;i < nb; ++i) c[i] = b[i]; + return function(t) { + for (i = 0; i < n0; ++i) c[i] = x[i](t); + return c; + }; + } + var d3_ease_default = function() { + return d3_identity; + }; + var d3_ease = d3.map({ + linear: d3_ease_default, + poly: d3_ease_poly, + quad: function() { + return d3_ease_quad; + }, + cubic: function() { + return d3_ease_cubic; + }, + sin: function() { + return d3_ease_sin; + }, + exp: function() { + return d3_ease_exp; + }, + circle: function() { + return d3_ease_circle; + }, + elastic: d3_ease_elastic, + back: d3_ease_back, + bounce: function() { + return d3_ease_bounce; + } + }); + var d3_ease_mode = d3.map({ + "in": d3_identity, + out: d3_ease_reverse, + "in-out": d3_ease_reflect, + "out-in": function(f) { + return d3_ease_reflect(d3_ease_reverse(f)); + } + }); + d3.ease = function(name) { + var i = name.indexOf("-"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : "in"; + t = d3_ease.get(t) || d3_ease_default; + m = d3_ease_mode.get(m) || d3_identity; + return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1)))); + }; + function d3_ease_clamp(f) { + return function(t) { + return t <= 0 ? 0 : t >= 1 ? 1 : f(t); + }; + } + function d3_ease_reverse(f) { + return function(t) { + return 1 - f(1 - t); + }; + } + function d3_ease_reflect(f) { + return function(t) { + return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); + }; + } + function d3_ease_quad(t) { + return t * t; + } + function d3_ease_cubic(t) { + return t * t * t; + } + function d3_ease_cubicInOut(t) { + if (t <= 0) return 0; + if (t >= 1) return 1; + var t2 = t * t, t3 = t2 * t; + return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75); + } + function d3_ease_poly(e) { + return function(t) { + return Math.pow(t, e); + }; + } + function d3_ease_sin(t) { + return 1 - Math.cos(t * halfπ); + } + function d3_ease_exp(t) { + return Math.pow(2, 10 * (t - 1)); + } + function d3_ease_circle(t) { + return 1 - Math.sqrt(1 - t * t); + } + function d3_ease_elastic(a, p) { + var s; + if (arguments.length < 2) p = .45; + if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4; + return function(t) { + return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p); + }; + } + function d3_ease_back(s) { + if (!s) s = 1.70158; + return function(t) { + return t * t * ((s + 1) * t - s); + }; + } + function d3_ease_bounce(t) { + return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; + } + d3.interpolateHcl = d3_interpolateHcl; + function d3_interpolateHcl(a, b) { + a = d3.hcl(a); + b = d3.hcl(b); + var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al; + if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + ""; + }; + } + d3.interpolateHsl = d3_interpolateHsl; + function d3_interpolateHsl(a, b) { + a = d3.hsl(a); + b = d3.hsl(b); + var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al; + if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + ""; + }; + } + d3.interpolateLab = d3_interpolateLab; + function d3_interpolateLab(a, b) { + a = d3.lab(a); + b = d3.lab(b); + var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab; + return function(t) { + return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + ""; + }; + } + d3.interpolateRound = d3_interpolateRound; + function d3_interpolateRound(a, b) { + b -= a; + return function(t) { + return Math.round(a + b * t); + }; + } + d3.transform = function(string) { + var g = d3_document.createElementNS(d3.ns.prefix.svg, "g"); + return (d3.transform = function(string) { + if (string != null) { + g.setAttribute("transform", string); + var t = g.transform.baseVal.consolidate(); + } + return new d3_transform(t ? t.matrix : d3_transformIdentity); + })(string); + }; + function d3_transform(m) { + var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; + if (r0[0] * r1[1] < r1[0] * r0[1]) { + r0[0] *= -1; + r0[1] *= -1; + kx *= -1; + kz *= -1; + } + this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees; + this.translate = [ m.e, m.f ]; + this.scale = [ kx, ky ]; + this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0; + } + d3_transform.prototype.toString = function() { + return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")"; + }; + function d3_transformDot(a, b) { + return a[0] * b[0] + a[1] * b[1]; + } + function d3_transformNormalize(a) { + var k = Math.sqrt(d3_transformDot(a, a)); + if (k) { + a[0] /= k; + a[1] /= k; + } + return k; + } + function d3_transformCombine(a, b, k) { + a[0] += k * b[0]; + a[1] += k * b[1]; + return a; + } + var d3_transformIdentity = { + a: 1, + b: 0, + c: 0, + d: 1, + e: 0, + f: 0 + }; + d3.interpolateTransform = d3_interpolateTransform; + function d3_interpolateTransform(a, b) { + var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale; + if (ta[0] != tb[0] || ta[1] != tb[1]) { + s.push("translate(", null, ",", null, ")"); + q.push({ + i: 1, + x: d3_interpolateNumber(ta[0], tb[0]) + }, { + i: 3, + x: d3_interpolateNumber(ta[1], tb[1]) + }); + } else if (tb[0] || tb[1]) { + s.push("translate(" + tb + ")"); + } else { + s.push(""); + } + if (ra != rb) { + if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; + q.push({ + i: s.push(s.pop() + "rotate(", null, ")") - 2, + x: d3_interpolateNumber(ra, rb) + }); + } else if (rb) { + s.push(s.pop() + "rotate(" + rb + ")"); + } + if (wa != wb) { + q.push({ + i: s.push(s.pop() + "skewX(", null, ")") - 2, + x: d3_interpolateNumber(wa, wb) + }); + } else if (wb) { + s.push(s.pop() + "skewX(" + wb + ")"); + } + if (ka[0] != kb[0] || ka[1] != kb[1]) { + n = s.push(s.pop() + "scale(", null, ",", null, ")"); + q.push({ + i: n - 4, + x: d3_interpolateNumber(ka[0], kb[0]) + }, { + i: n - 2, + x: d3_interpolateNumber(ka[1], kb[1]) + }); + } else if (kb[0] != 1 || kb[1] != 1) { + s.push(s.pop() + "scale(" + kb + ")"); + } + n = q.length; + return function(t) { + var i = -1, o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + } + function d3_uninterpolateNumber(a, b) { + b = (b -= a = +a) || 1 / b; + return function(x) { + return (x - a) / b; + }; + } + function d3_uninterpolateClamp(a, b) { + b = (b -= a = +a) || 1 / b; + return function(x) { + return Math.max(0, Math.min(1, (x - a) / b)); + }; + } + d3.layout = {}; + d3.layout.bundle = function() { + return function(links) { + var paths = [], i = -1, n = links.length; + while (++i < n) paths.push(d3_layout_bundlePath(links[i])); + return paths; + }; + }; + function d3_layout_bundlePath(link) { + var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ]; + while (start !== lca) { + start = start.parent; + points.push(start); + } + var k = points.length; + while (end !== lca) { + points.splice(k, 0, end); + end = end.parent; + } + return points; + } + function d3_layout_bundleAncestors(node) { + var ancestors = [], parent = node.parent; + while (parent != null) { + ancestors.push(node); + node = parent; + parent = parent.parent; + } + ancestors.push(node); + return ancestors; + } + function d3_layout_bundleLeastCommonAncestor(a, b) { + if (a === b) return a; + var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null; + while (aNode === bNode) { + sharedNode = aNode; + aNode = aNodes.pop(); + bNode = bNodes.pop(); + } + return sharedNode; + } + d3.layout.chord = function() { + var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords; + function relayout() { + var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j; + chords = []; + groups = []; + k = 0, i = -1; + while (++i < n) { + x = 0, j = -1; + while (++j < n) { + x += matrix[i][j]; + } + groupSums.push(x); + subgroupIndex.push(d3.range(n)); + k += x; + } + if (sortGroups) { + groupIndex.sort(function(a, b) { + return sortGroups(groupSums[a], groupSums[b]); + }); + } + if (sortSubgroups) { + subgroupIndex.forEach(function(d, i) { + d.sort(function(a, b) { + return sortSubgroups(matrix[i][a], matrix[i][b]); + }); + }); + } + k = (τ - padding * n) / k; + x = 0, i = -1; + while (++i < n) { + x0 = x, j = -1; + while (++j < n) { + var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k; + subgroups[di + "-" + dj] = { + index: di, + subindex: dj, + startAngle: a0, + endAngle: a1, + value: v + }; + } + groups[di] = { + index: di, + startAngle: x0, + endAngle: x, + value: (x - x0) / k + }; + x += padding; + } + i = -1; + while (++i < n) { + j = i - 1; + while (++j < n) { + var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i]; + if (source.value || target.value) { + chords.push(source.value < target.value ? { + source: target, + target: source + } : { + source: source, + target: target + }); + } + } + } + if (sortChords) resort(); + } + function resort() { + chords.sort(function(a, b) { + return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2); + }); + } + chord.matrix = function(x) { + if (!arguments.length) return matrix; + n = (matrix = x) && matrix.length; + chords = groups = null; + return chord; + }; + chord.padding = function(x) { + if (!arguments.length) return padding; + padding = x; + chords = groups = null; + return chord; + }; + chord.sortGroups = function(x) { + if (!arguments.length) return sortGroups; + sortGroups = x; + chords = groups = null; + return chord; + }; + chord.sortSubgroups = function(x) { + if (!arguments.length) return sortSubgroups; + sortSubgroups = x; + chords = null; + return chord; + }; + chord.sortChords = function(x) { + if (!arguments.length) return sortChords; + sortChords = x; + if (chords) resort(); + return chord; + }; + chord.chords = function() { + if (!chords) relayout(); + return chords; + }; + chord.groups = function() { + if (!groups) relayout(); + return groups; + }; + return chord; + }; + d3.layout.force = function() { + var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges; + function repulse(node) { + return function(quad, x1, _, x2) { + if (quad.point !== node) { + var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy; + if (dw * dw / theta2 < dn) { + if (dn < chargeDistance2) { + var k = quad.charge / dn; + node.px -= dx * k; + node.py -= dy * k; + } + return true; + } + if (quad.point && dn && dn < chargeDistance2) { + var k = quad.pointCharge / dn; + node.px -= dx * k; + node.py -= dy * k; + } + } + return !quad.charge; + }; + } + force.tick = function() { + if ((alpha *= .99) < .005) { + event.end({ + type: "end", + alpha: alpha = 0 + }); + return true; + } + var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y; + for (i = 0; i < m; ++i) { + o = links[i]; + s = o.source; + t = o.target; + x = t.x - s.x; + y = t.y - s.y; + if (l = x * x + y * y) { + l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; + x *= l; + y *= l; + t.x -= x * (k = s.weight / (t.weight + s.weight)); + t.y -= y * k; + s.x += x * (k = 1 - k); + s.y += y * k; + } + } + if (k = alpha * gravity) { + x = size[0] / 2; + y = size[1] / 2; + i = -1; + if (k) while (++i < n) { + o = nodes[i]; + o.x += (x - o.x) * k; + o.y += (y - o.y) * k; + } + } + if (charge) { + d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges); + i = -1; + while (++i < n) { + if (!(o = nodes[i]).fixed) { + q.visit(repulse(o)); + } + } + } + i = -1; + while (++i < n) { + o = nodes[i]; + if (o.fixed) { + o.x = o.px; + o.y = o.py; + } else { + o.x -= (o.px - (o.px = o.x)) * friction; + o.y -= (o.py - (o.py = o.y)) * friction; + } + } + event.tick({ + type: "tick", + alpha: alpha + }); + }; + force.nodes = function(x) { + if (!arguments.length) return nodes; + nodes = x; + return force; + }; + force.links = function(x) { + if (!arguments.length) return links; + links = x; + return force; + }; + force.size = function(x) { + if (!arguments.length) return size; + size = x; + return force; + }; + force.linkDistance = function(x) { + if (!arguments.length) return linkDistance; + linkDistance = typeof x === "function" ? x : +x; + return force; + }; + force.distance = force.linkDistance; + force.linkStrength = function(x) { + if (!arguments.length) return linkStrength; + linkStrength = typeof x === "function" ? x : +x; + return force; + }; + force.friction = function(x) { + if (!arguments.length) return friction; + friction = +x; + return force; + }; + force.charge = function(x) { + if (!arguments.length) return charge; + charge = typeof x === "function" ? x : +x; + return force; + }; + force.chargeDistance = function(x) { + if (!arguments.length) return Math.sqrt(chargeDistance2); + chargeDistance2 = x * x; + return force; + }; + force.gravity = function(x) { + if (!arguments.length) return gravity; + gravity = +x; + return force; + }; + force.theta = function(x) { + if (!arguments.length) return Math.sqrt(theta2); + theta2 = x * x; + return force; + }; + force.alpha = function(x) { + if (!arguments.length) return alpha; + x = +x; + if (alpha) { + if (x > 0) alpha = x; else alpha = 0; + } else if (x > 0) { + event.start({ + type: "start", + alpha: alpha = x + }); + d3.timer(force.tick); + } + return force; + }; + force.start = function() { + var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o; + for (i = 0; i < n; ++i) { + (o = nodes[i]).index = i; + o.weight = 0; + } + for (i = 0; i < m; ++i) { + o = links[i]; + if (typeof o.source == "number") o.source = nodes[o.source]; + if (typeof o.target == "number") o.target = nodes[o.target]; + ++o.source.weight; + ++o.target.weight; + } + for (i = 0; i < n; ++i) { + o = nodes[i]; + if (isNaN(o.x)) o.x = position("x", w); + if (isNaN(o.y)) o.y = position("y", h); + if (isNaN(o.px)) o.px = o.x; + if (isNaN(o.py)) o.py = o.y; + } + distances = []; + if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance; + strengths = []; + if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength; + charges = []; + if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge; + function position(dimension, size) { + if (!neighbors) { + neighbors = new Array(n); + for (j = 0; j < n; ++j) { + neighbors[j] = []; + } + for (j = 0; j < m; ++j) { + var o = links[j]; + neighbors[o.source.index].push(o.target); + neighbors[o.target.index].push(o.source); + } + } + var candidates = neighbors[i], j = -1, m = candidates.length, x; + while (++j < m) if (!isNaN(x = candidates[j][dimension])) return x; + return Math.random() * size; + } + return force.resume(); + }; + force.resume = function() { + return force.alpha(.1); + }; + force.stop = function() { + return force.alpha(0); + }; + force.drag = function() { + if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend); + if (!arguments.length) return drag; + this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag); + }; + function dragmove(d) { + d.px = d3.event.x, d.py = d3.event.y; + force.resume(); + } + return d3.rebind(force, event, "on"); + }; + function d3_layout_forceDragstart(d) { + d.fixed |= 2; + } + function d3_layout_forceDragend(d) { + d.fixed &= ~6; + } + function d3_layout_forceMouseover(d) { + d.fixed |= 4; + d.px = d.x, d.py = d.y; + } + function d3_layout_forceMouseout(d) { + d.fixed &= ~4; + } + function d3_layout_forceAccumulate(quad, alpha, charges) { + var cx = 0, cy = 0; + quad.charge = 0; + if (!quad.leaf) { + var nodes = quad.nodes, n = nodes.length, i = -1, c; + while (++i < n) { + c = nodes[i]; + if (c == null) continue; + d3_layout_forceAccumulate(c, alpha, charges); + quad.charge += c.charge; + cx += c.charge * c.cx; + cy += c.charge * c.cy; + } + } + if (quad.point) { + if (!quad.leaf) { + quad.point.x += Math.random() - .5; + quad.point.y += Math.random() - .5; + } + var k = alpha * charges[quad.point.index]; + quad.charge += quad.pointCharge = k; + cx += k * quad.point.x; + cy += k * quad.point.y; + } + quad.cx = cx / quad.charge; + quad.cy = cy / quad.charge; + } + var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity; + d3.layout.hierarchy = function() { + var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue; + function hierarchy(root) { + var stack = [ root ], nodes = [], node; + root.depth = 0; + while ((node = stack.pop()) != null) { + nodes.push(node); + if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) { + var n, childs, child; + while (--n >= 0) { + stack.push(child = childs[n]); + child.parent = node; + child.depth = node.depth + 1; + } + if (value) node.value = 0; + node.children = childs; + } else { + if (value) node.value = +value.call(hierarchy, node, node.depth) || 0; + delete node.children; + } + } + d3_layout_hierarchyVisitAfter(root, function(node) { + var childs, parent; + if (sort && (childs = node.children)) childs.sort(sort); + if (value && (parent = node.parent)) parent.value += node.value; + }); + return nodes; + } + hierarchy.sort = function(x) { + if (!arguments.length) return sort; + sort = x; + return hierarchy; + }; + hierarchy.children = function(x) { + if (!arguments.length) return children; + children = x; + return hierarchy; + }; + hierarchy.value = function(x) { + if (!arguments.length) return value; + value = x; + return hierarchy; + }; + hierarchy.revalue = function(root) { + if (value) { + d3_layout_hierarchyVisitBefore(root, function(node) { + if (node.children) node.value = 0; + }); + d3_layout_hierarchyVisitAfter(root, function(node) { + var parent; + if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0; + if (parent = node.parent) parent.value += node.value; + }); + } + return root; + }; + return hierarchy; + }; + function d3_layout_hierarchyRebind(object, hierarchy) { + d3.rebind(object, hierarchy, "sort", "children", "value"); + object.nodes = object; + object.links = d3_layout_hierarchyLinks; + return object; + } + function d3_layout_hierarchyVisitBefore(node, callback) { + var nodes = [ node ]; + while ((node = nodes.pop()) != null) { + callback(node); + if ((children = node.children) && (n = children.length)) { + var n, children; + while (--n >= 0) nodes.push(children[n]); + } + } + } + function d3_layout_hierarchyVisitAfter(node, callback) { + var nodes = [ node ], nodes2 = []; + while ((node = nodes.pop()) != null) { + nodes2.push(node); + if ((children = node.children) && (n = children.length)) { + var i = -1, n, children; + while (++i < n) nodes.push(children[i]); + } + } + while ((node = nodes2.pop()) != null) { + callback(node); + } + } + function d3_layout_hierarchyChildren(d) { + return d.children; + } + function d3_layout_hierarchyValue(d) { + return d.value; + } + function d3_layout_hierarchySort(a, b) { + return b.value - a.value; + } + function d3_layout_hierarchyLinks(nodes) { + return d3.merge(nodes.map(function(parent) { + return (parent.children || []).map(function(child) { + return { + source: parent, + target: child + }; + }); + })); + } + d3.layout.partition = function() { + var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ]; + function position(node, x, dx, dy) { + var children = node.children; + node.x = x; + node.y = node.depth * dy; + node.dx = dx; + node.dy = dy; + if (children && (n = children.length)) { + var i = -1, n, c, d; + dx = node.value ? dx / node.value : 0; + while (++i < n) { + position(c = children[i], x, d = c.value * dx, dy); + x += d; + } + } + } + function depth(node) { + var children = node.children, d = 0; + if (children && (n = children.length)) { + var i = -1, n; + while (++i < n) d = Math.max(d, depth(children[i])); + } + return 1 + d; + } + function partition(d, i) { + var nodes = hierarchy.call(this, d, i); + position(nodes[0], 0, size[0], size[1] / depth(nodes[0])); + return nodes; + } + partition.size = function(x) { + if (!arguments.length) return size; + size = x; + return partition; + }; + return d3_layout_hierarchyRebind(partition, hierarchy); + }; + d3.layout.pie = function() { + var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0; + function pie(data) { + var n = data.length, values = data.map(function(d, i) { + return +value.call(pie, d, i); + }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - n * pa) / d3.sum(values), index = d3.range(n), arcs = [], v; + if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { + return values[j] - values[i]; + } : function(i, j) { + return sort(data[i], data[j]); + }); + index.forEach(function(i) { + arcs[i] = { + data: data[i], + value: v = values[i], + startAngle: a, + endAngle: a += v * k + pa, + padAngle: p + }; + }); + return arcs; + } + pie.value = function(_) { + if (!arguments.length) return value; + value = _; + return pie; + }; + pie.sort = function(_) { + if (!arguments.length) return sort; + sort = _; + return pie; + }; + pie.startAngle = function(_) { + if (!arguments.length) return startAngle; + startAngle = _; + return pie; + }; + pie.endAngle = function(_) { + if (!arguments.length) return endAngle; + endAngle = _; + return pie; + }; + pie.padAngle = function(_) { + if (!arguments.length) return padAngle; + padAngle = _; + return pie; + }; + return pie; + }; + var d3_layout_pieSortByValue = {}; + d3.layout.stack = function() { + var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY; + function stack(data, index) { + if (!(n = data.length)) return data; + var series = data.map(function(d, i) { + return values.call(stack, d, i); + }); + var points = series.map(function(d) { + return d.map(function(v, i) { + return [ x.call(stack, v, i), y.call(stack, v, i) ]; + }); + }); + var orders = order.call(stack, points, index); + series = d3.permute(series, orders); + points = d3.permute(points, orders); + var offsets = offset.call(stack, points, index); + var m = series[0].length, n, i, j, o; + for (j = 0; j < m; ++j) { + out.call(stack, series[0][j], o = offsets[j], points[0][j][1]); + for (i = 1; i < n; ++i) { + out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]); + } + } + return data; + } + stack.values = function(x) { + if (!arguments.length) return values; + values = x; + return stack; + }; + stack.order = function(x) { + if (!arguments.length) return order; + order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault; + return stack; + }; + stack.offset = function(x) { + if (!arguments.length) return offset; + offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero; + return stack; + }; + stack.x = function(z) { + if (!arguments.length) return x; + x = z; + return stack; + }; + stack.y = function(z) { + if (!arguments.length) return y; + y = z; + return stack; + }; + stack.out = function(z) { + if (!arguments.length) return out; + out = z; + return stack; + }; + return stack; + }; + function d3_layout_stackX(d) { + return d.x; + } + function d3_layout_stackY(d) { + return d.y; + } + function d3_layout_stackOut(d, y0, y) { + d.y0 = y0; + d.y = y; + } + var d3_layout_stackOrders = d3.map({ + "inside-out": function(data) { + var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) { + return max[a] - max[b]; + }), top = 0, bottom = 0, tops = [], bottoms = []; + for (i = 0; i < n; ++i) { + j = index[i]; + if (top < bottom) { + top += sums[j]; + tops.push(j); + } else { + bottom += sums[j]; + bottoms.push(j); + } + } + return bottoms.reverse().concat(tops); + }, + reverse: function(data) { + return d3.range(data.length).reverse(); + }, + "default": d3_layout_stackOrderDefault + }); + var d3_layout_stackOffsets = d3.map({ + silhouette: function(data) { + var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o > max) max = o; + sums.push(o); + } + for (j = 0; j < m; ++j) { + y0[j] = (max - sums[j]) / 2; + } + return y0; + }, + wiggle: function(data) { + var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = []; + y0[0] = o = o0 = 0; + for (j = 1; j < m; ++j) { + for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1]; + for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) { + for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) { + s3 += (data[k][j][1] - data[k][j - 1][1]) / dx; + } + s2 += s3 * data[i][j][1]; + } + y0[j] = o -= s1 ? s2 / s1 * dx : 0; + if (o < o0) o0 = o; + } + for (j = 0; j < m; ++j) y0[j] -= o0; + return y0; + }, + expand: function(data) { + var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k; + } + for (j = 0; j < m; ++j) y0[j] = 0; + return y0; + }, + zero: d3_layout_stackOffsetZero + }); + function d3_layout_stackOrderDefault(data) { + return d3.range(data.length); + } + function d3_layout_stackOffsetZero(data) { + var j = -1, m = data[0].length, y0 = []; + while (++j < m) y0[j] = 0; + return y0; + } + function d3_layout_stackMaxIndex(array) { + var i = 1, j = 0, v = array[0][1], k, n = array.length; + for (;i < n; ++i) { + if ((k = array[i][1]) > v) { + j = i; + v = k; + } + } + return j; + } + function d3_layout_stackReduceSum(d) { + return d.reduce(d3_layout_stackSum, 0); + } + function d3_layout_stackSum(p, d) { + return p + d[1]; + } + d3.layout.histogram = function() { + var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges; + function histogram(data, i) { + var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x; + while (++i < m) { + bin = bins[i] = []; + bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]); + bin.y = 0; + } + if (m > 0) { + i = -1; + while (++i < n) { + x = values[i]; + if (x >= range[0] && x <= range[1]) { + bin = bins[d3.bisect(thresholds, x, 1, m) - 1]; + bin.y += k; + bin.push(data[i]); + } + } + } + return bins; + } + histogram.value = function(x) { + if (!arguments.length) return valuer; + valuer = x; + return histogram; + }; + histogram.range = function(x) { + if (!arguments.length) return ranger; + ranger = d3_functor(x); + return histogram; + }; + histogram.bins = function(x) { + if (!arguments.length) return binner; + binner = typeof x === "number" ? function(range) { + return d3_layout_histogramBinFixed(range, x); + } : d3_functor(x); + return histogram; + }; + histogram.frequency = function(x) { + if (!arguments.length) return frequency; + frequency = !!x; + return histogram; + }; + return histogram; + }; + function d3_layout_histogramBinSturges(range, values) { + return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1)); + } + function d3_layout_histogramBinFixed(range, n) { + var x = -1, b = +range[0], m = (range[1] - b) / n, f = []; + while (++x <= n) f[x] = m * x + b; + return f; + } + function d3_layout_histogramRange(values) { + return [ d3.min(values), d3.max(values) ]; + } + d3.layout.pack = function() { + var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius; + function pack(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() { + return radius; + }; + root.x = root.y = 0; + d3_layout_hierarchyVisitAfter(root, function(d) { + d.r = +r(d.value); + }); + d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings); + if (padding) { + var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2; + d3_layout_hierarchyVisitAfter(root, function(d) { + d.r += dr; + }); + d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings); + d3_layout_hierarchyVisitAfter(root, function(d) { + d.r -= dr; + }); + } + d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h)); + return nodes; + } + pack.size = function(_) { + if (!arguments.length) return size; + size = _; + return pack; + }; + pack.radius = function(_) { + if (!arguments.length) return radius; + radius = _ == null || typeof _ === "function" ? _ : +_; + return pack; + }; + pack.padding = function(_) { + if (!arguments.length) return padding; + padding = +_; + return pack; + }; + return d3_layout_hierarchyRebind(pack, hierarchy); + }; + function d3_layout_packSort(a, b) { + return a.value - b.value; + } + function d3_layout_packInsert(a, b) { + var c = a._pack_next; + a._pack_next = b; + b._pack_prev = a; + b._pack_next = c; + c._pack_prev = b; + } + function d3_layout_packSplice(a, b) { + a._pack_next = b; + b._pack_prev = a; + } + function d3_layout_packIntersects(a, b) { + var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r; + return .999 * dr * dr > dx * dx + dy * dy; + } + function d3_layout_packSiblings(node) { + if (!(nodes = node.children) || !(n = nodes.length)) return; + var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n; + function bound(node) { + xMin = Math.min(node.x - node.r, xMin); + xMax = Math.max(node.x + node.r, xMax); + yMin = Math.min(node.y - node.r, yMin); + yMax = Math.max(node.y + node.r, yMax); + } + nodes.forEach(d3_layout_packLink); + a = nodes[0]; + a.x = -a.r; + a.y = 0; + bound(a); + if (n > 1) { + b = nodes[1]; + b.x = b.r; + b.y = 0; + bound(b); + if (n > 2) { + c = nodes[2]; + d3_layout_packPlace(a, b, c); + bound(c); + d3_layout_packInsert(a, c); + a._pack_prev = c; + d3_layout_packInsert(c, b); + b = a._pack_next; + for (i = 3; i < n; i++) { + d3_layout_packPlace(a, b, c = nodes[i]); + var isect = 0, s1 = 1, s2 = 1; + for (j = b._pack_next; j !== b; j = j._pack_next, s1++) { + if (d3_layout_packIntersects(j, c)) { + isect = 1; + break; + } + } + if (isect == 1) { + for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) { + if (d3_layout_packIntersects(k, c)) { + break; + } + } + } + if (isect) { + if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b); + i--; + } else { + d3_layout_packInsert(a, c); + b = c; + bound(c); + } + } + } + } + var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0; + for (i = 0; i < n; i++) { + c = nodes[i]; + c.x -= cx; + c.y -= cy; + cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y)); + } + node.r = cr; + nodes.forEach(d3_layout_packUnlink); + } + function d3_layout_packLink(node) { + node._pack_next = node._pack_prev = node; + } + function d3_layout_packUnlink(node) { + delete node._pack_next; + delete node._pack_prev; + } + function d3_layout_packTransform(node, x, y, k) { + var children = node.children; + node.x = x += k * node.x; + node.y = y += k * node.y; + node.r *= k; + if (children) { + var i = -1, n = children.length; + while (++i < n) d3_layout_packTransform(children[i], x, y, k); + } + } + function d3_layout_packPlace(a, b, c) { + var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y; + if (db && (dx || dy)) { + var da = b.r + c.r, dc = dx * dx + dy * dy; + da *= da; + db *= db; + var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc); + c.x = a.x + x * dx + y * dy; + c.y = a.y + x * dy - y * dx; + } else { + c.x = a.x + db; + c.y = a.y; + } + } + d3.layout.tree = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null; + function tree(d, i) { + var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0); + d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z; + d3_layout_hierarchyVisitBefore(root1, secondWalk); + if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else { + var left = root0, right = root0, bottom = root0; + d3_layout_hierarchyVisitBefore(root0, function(node) { + if (node.x < left.x) left = node; + if (node.x > right.x) right = node; + if (node.depth > bottom.depth) bottom = node; + }); + var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1); + d3_layout_hierarchyVisitBefore(root0, function(node) { + node.x = (node.x + tx) * kx; + node.y = node.depth * ky; + }); + } + return nodes; + } + function wrapTree(root0) { + var root1 = { + A: null, + children: [ root0 ] + }, queue = [ root1 ], node1; + while ((node1 = queue.pop()) != null) { + for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) { + queue.push((children[i] = child = { + _: children[i], + parent: node1, + children: (child = children[i].children) && child.slice() || [], + A: null, + a: null, + z: 0, + m: 0, + c: 0, + s: 0, + t: null, + i: i + }).a = child); + } + } + return root1.children[0]; + } + function firstWalk(v) { + var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null; + if (children.length) { + d3_layout_treeShift(v); + var midpoint = (children[0].z + children[children.length - 1].z) / 2; + if (w) { + v.z = w.z + separation(v._, w._); + v.m = v.z - midpoint; + } else { + v.z = midpoint; + } + } else if (w) { + v.z = w.z + separation(v._, w._); + } + v.parent.A = apportion(v, w, v.parent.A || siblings[0]); + } + function secondWalk(v) { + v._.x = v.z + v.parent.m; + v.m += v.parent.m; + } + function apportion(v, w, ancestor) { + if (w) { + var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift; + while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) { + vom = d3_layout_treeLeft(vom); + vop = d3_layout_treeRight(vop); + vop.a = v; + shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); + if (shift > 0) { + d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift); + sip += shift; + sop += shift; + } + sim += vim.m; + sip += vip.m; + som += vom.m; + sop += vop.m; + } + if (vim && !d3_layout_treeRight(vop)) { + vop.t = vim; + vop.m += sim - sop; + } + if (vip && !d3_layout_treeLeft(vom)) { + vom.t = vip; + vom.m += sip - som; + ancestor = v; + } + } + return ancestor; + } + function sizeNode(node) { + node.x *= size[0]; + node.y = node.depth * size[1]; + } + tree.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return tree; + }; + tree.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null ? sizeNode : null; + return tree; + }; + tree.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) == null ? null : sizeNode; + return tree; + }; + return d3_layout_hierarchyRebind(tree, hierarchy); + }; + function d3_layout_treeSeparation(a, b) { + return a.parent == b.parent ? 1 : 2; + } + function d3_layout_treeLeft(v) { + var children = v.children; + return children.length ? children[0] : v.t; + } + function d3_layout_treeRight(v) { + var children = v.children, n; + return (n = children.length) ? children[n - 1] : v.t; + } + function d3_layout_treeMove(wm, wp, shift) { + var change = shift / (wp.i - wm.i); + wp.c -= change; + wp.s += shift; + wm.c += change; + wp.z += shift; + wp.m += shift; + } + function d3_layout_treeShift(v) { + var shift = 0, change = 0, children = v.children, i = children.length, w; + while (--i >= 0) { + w = children[i]; + w.z += shift; + w.m += shift; + shift += w.s + (change += w.c); + } + } + function d3_layout_treeAncestor(vim, v, ancestor) { + return vim.a.parent === v.parent ? vim.a : ancestor; + } + d3.layout.cluster = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; + function cluster(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0; + d3_layout_hierarchyVisitAfter(root, function(node) { + var children = node.children; + if (children && children.length) { + node.x = d3_layout_clusterX(children); + node.y = d3_layout_clusterY(children); + } else { + node.x = previousNode ? x += separation(node, previousNode) : 0; + node.y = 0; + previousNode = node; + } + }); + var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2; + d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) { + node.x = (node.x - root.x) * size[0]; + node.y = (root.y - node.y) * size[1]; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * size[0]; + node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1]; + }); + return nodes; + } + cluster.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return cluster; + }; + cluster.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null; + return cluster; + }; + cluster.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) != null; + return cluster; + }; + return d3_layout_hierarchyRebind(cluster, hierarchy); + }; + function d3_layout_clusterY(children) { + return 1 + d3.max(children, function(child) { + return child.y; + }); + } + function d3_layout_clusterX(children) { + return children.reduce(function(x, child) { + return x + child.x; + }, 0) / children.length; + } + function d3_layout_clusterLeft(node) { + var children = node.children; + return children && children.length ? d3_layout_clusterLeft(children[0]) : node; + } + function d3_layout_clusterRight(node) { + var children = node.children, n; + return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node; + } + d3.layout.treemap = function() { + var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5)); + function scale(children, k) { + var i = -1, n = children.length, child, area; + while (++i < n) { + area = (child = children[i]).value * (k < 0 ? 0 : k); + child.area = isNaN(area) || area <= 0 ? 0 : area; + } + } + function squarify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while ((n = remaining.length) > 0) { + row.push(child = remaining[n - 1]); + row.area += child.area; + if (mode !== "squarify" || (score = worst(row, u)) <= best) { + remaining.pop(); + best = score; + } else { + row.area -= row.pop().area; + position(row, u, rect, false); + u = Math.min(rect.dx, rect.dy); + row.length = row.area = 0; + best = Infinity; + } + } + if (row.length) { + position(row, u, rect, true); + row.length = row.area = 0; + } + children.forEach(squarify); + } + } + function stickify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), remaining = children.slice(), child, row = []; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while (child = remaining.pop()) { + row.push(child); + row.area += child.area; + if (child.z != null) { + position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length); + row.length = row.area = 0; + } + } + children.forEach(stickify); + } + } + function worst(row, u) { + var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length; + while (++i < n) { + if (!(r = row[i].area)) continue; + if (r < rmin) rmin = r; + if (r > rmax) rmax = r; + } + s *= s; + u *= u; + return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity; + } + function position(row, u, rect, flush) { + var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o; + if (u == rect.dx) { + if (flush || v > rect.dy) v = rect.dy; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dy = v; + x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0); + } + o.z = true; + o.dx += rect.x + rect.dx - x; + rect.y += v; + rect.dy -= v; + } else { + if (flush || v > rect.dx) v = rect.dx; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dx = v; + y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0); + } + o.z = false; + o.dy += rect.y + rect.dy - y; + rect.x += v; + rect.dx -= v; + } + } + function treemap(d) { + var nodes = stickies || hierarchy(d), root = nodes[0]; + root.x = 0; + root.y = 0; + root.dx = size[0]; + root.dy = size[1]; + if (stickies) hierarchy.revalue(root); + scale([ root ], root.dx * root.dy / root.value); + (stickies ? stickify : squarify)(root); + if (sticky) stickies = nodes; + return nodes; + } + treemap.size = function(x) { + if (!arguments.length) return size; + size = x; + return treemap; + }; + treemap.padding = function(x) { + if (!arguments.length) return padding; + function padFunction(node) { + var p = x.call(treemap, node, node.depth); + return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p); + } + function padConstant(node) { + return d3_layout_treemapPad(node, x); + } + var type; + pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], + padConstant) : padConstant; + return treemap; + }; + treemap.round = function(x) { + if (!arguments.length) return round != Number; + round = x ? Math.round : Number; + return treemap; + }; + treemap.sticky = function(x) { + if (!arguments.length) return sticky; + sticky = x; + stickies = null; + return treemap; + }; + treemap.ratio = function(x) { + if (!arguments.length) return ratio; + ratio = x; + return treemap; + }; + treemap.mode = function(x) { + if (!arguments.length) return mode; + mode = x + ""; + return treemap; + }; + return d3_layout_hierarchyRebind(treemap, hierarchy); + }; + function d3_layout_treemapPadNull(node) { + return { + x: node.x, + y: node.y, + dx: node.dx, + dy: node.dy + }; + } + function d3_layout_treemapPad(node, padding) { + var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2]; + if (dx < 0) { + x += dx / 2; + dx = 0; + } + if (dy < 0) { + y += dy / 2; + dy = 0; + } + return { + x: x, + y: y, + dx: dx, + dy: dy + }; + } + d3.random = { + normal: function(µ, σ) { + var n = arguments.length; + if (n < 2) σ = 1; + if (n < 1) µ = 0; + return function() { + var x, y, r; + do { + x = Math.random() * 2 - 1; + y = Math.random() * 2 - 1; + r = x * x + y * y; + } while (!r || r > 1); + return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r); + }; + }, + logNormal: function() { + var random = d3.random.normal.apply(d3, arguments); + return function() { + return Math.exp(random()); + }; + }, + bates: function(m) { + var random = d3.random.irwinHall(m); + return function() { + return random() / m; + }; + }, + irwinHall: function(m) { + return function() { + for (var s = 0, j = 0; j < m; j++) s += Math.random(); + return s; + }; + } + }; + d3.scale = {}; + function d3_scaleExtent(domain) { + var start = domain[0], stop = domain[domain.length - 1]; + return start < stop ? [ start, stop ] : [ stop, start ]; + } + function d3_scaleRange(scale) { + return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range()); + } + function d3_scale_bilinear(domain, range, uninterpolate, interpolate) { + var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]); + return function(x) { + return i(u(x)); + }; + } + function d3_scale_nice(domain, nice) { + var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx; + if (x1 < x0) { + dx = i0, i0 = i1, i1 = dx; + dx = x0, x0 = x1, x1 = dx; + } + domain[i0] = nice.floor(x0); + domain[i1] = nice.ceil(x1); + return domain; + } + function d3_scale_niceStep(step) { + return step ? { + floor: function(x) { + return Math.floor(x / step) * step; + }, + ceil: function(x) { + return Math.ceil(x / step) * step; + } + } : d3_scale_niceIdentity; + } + var d3_scale_niceIdentity = { + floor: d3_identity, + ceil: d3_identity + }; + function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { + var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1; + if (domain[k] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + while (++j <= k) { + u.push(uninterpolate(domain[j - 1], domain[j])); + i.push(interpolate(range[j - 1], range[j])); + } + return function(x) { + var j = d3.bisect(domain, x, 1, k) - 1; + return i[j](u[j](x)); + }; + } + d3.scale.linear = function() { + return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false); + }; + function d3_scale_linear(domain, range, interpolate, clamp) { + var output, input; + function rescale() { + var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; + output = linear(domain, range, uninterpolate, interpolate); + input = linear(range, domain, uninterpolate, d3_interpolate); + return scale; + } + function scale(x) { + return output(x); + } + scale.invert = function(y) { + return input(y); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.map(Number); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.rangeRound = function(x) { + return scale.range(x).interpolate(d3_interpolateRound); + }; + scale.clamp = function(x) { + if (!arguments.length) return clamp; + clamp = x; + return rescale(); + }; + scale.interpolate = function(x) { + if (!arguments.length) return interpolate; + interpolate = x; + return rescale(); + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + d3_scale_linearNice(domain, m); + return rescale(); + }; + scale.copy = function() { + return d3_scale_linear(domain, range, interpolate, clamp); + }; + return rescale(); + } + function d3_scale_linearRebind(scale, linear) { + return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp"); + } + function d3_scale_linearNice(domain, m) { + return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + } + function d3_scale_linearTickRange(domain, m) { + if (m == null) m = 10; + var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step; + if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2; + extent[0] = Math.ceil(extent[0] / step) * step; + extent[1] = Math.floor(extent[1] / step) * step + step * .5; + extent[2] = step; + return extent; + } + function d3_scale_linearTicks(domain, m) { + return d3.range.apply(d3, d3_scale_linearTickRange(domain, m)); + } + function d3_scale_linearTickFormat(domain, m, format) { + var range = d3_scale_linearTickRange(domain, m); + if (format) { + var match = d3_format_re.exec(format); + match.shift(); + if (match[8] === "s") { + var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1]))); + if (!match[7]) match[7] = "." + d3_scale_linearPrecision(prefix.scale(range[2])); + match[8] = "f"; + format = d3.format(match.join("")); + return function(d) { + return format(prefix.scale(d)) + prefix.symbol; + }; + } + if (!match[7]) match[7] = "." + d3_scale_linearFormatPrecision(match[8], range); + format = match.join(""); + } else { + format = ",." + d3_scale_linearPrecision(range[2]) + "f"; + } + return d3.format(format); + } + var d3_scale_linearFormatSignificant = { + s: 1, + g: 1, + p: 1, + r: 1, + e: 1 + }; + function d3_scale_linearPrecision(value) { + return -Math.floor(Math.log(value) / Math.LN10 + .01); + } + function d3_scale_linearFormatPrecision(type, range) { + var p = d3_scale_linearPrecision(range[2]); + return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== "e") : p - (type === "%") * 2; + } + d3.scale.log = function() { + return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]); + }; + function d3_scale_log(linear, base, positive, domain) { + function log(x) { + return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base); + } + function pow(x) { + return positive ? Math.pow(base, x) : -Math.pow(base, -x); + } + function scale(x) { + return linear(log(x)); + } + scale.invert = function(x) { + return pow(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + positive = x[0] >= 0; + linear.domain((domain = x.map(Number)).map(log)); + return scale; + }; + scale.base = function(_) { + if (!arguments.length) return base; + base = +_; + linear.domain(domain.map(log)); + return scale; + }; + scale.nice = function() { + var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative); + linear.domain(niced); + domain = niced.map(pow); + return scale; + }; + scale.ticks = function() { + var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base; + if (isFinite(j - i)) { + if (positive) { + for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k); + ticks.push(pow(i)); + } else { + ticks.push(pow(i)); + for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k); + } + for (i = 0; ticks[i] < u; i++) {} + for (j = ticks.length; ticks[j - 1] > v; j--) {} + ticks = ticks.slice(i, j); + } + return ticks; + }; + scale.tickFormat = function(n, format) { + if (!arguments.length) return d3_scale_logFormat; + if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); + var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, + Math.floor), e; + return function(d) { + return d / pow(f(log(d) + e)) <= k ? format(d) : ""; + }; + }; + scale.copy = function() { + return d3_scale_log(linear.copy(), base, positive, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = { + floor: function(x) { + return -Math.ceil(-x); + }, + ceil: function(x) { + return -Math.floor(-x); + } + }; + d3.scale.pow = function() { + return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]); + }; + function d3_scale_pow(linear, exponent, domain) { + var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent); + function scale(x) { + return linear(powp(x)); + } + scale.invert = function(x) { + return powb(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + linear.domain((domain = x.map(Number)).map(powp)); + return scale; + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + return scale.domain(d3_scale_linearNice(domain, m)); + }; + scale.exponent = function(x) { + if (!arguments.length) return exponent; + powp = d3_scale_powPow(exponent = x); + powb = d3_scale_powPow(1 / exponent); + linear.domain(domain.map(powp)); + return scale; + }; + scale.copy = function() { + return d3_scale_pow(linear.copy(), exponent, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_scale_powPow(e) { + return function(x) { + return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e); + }; + } + d3.scale.sqrt = function() { + return d3.scale.pow().exponent(.5); + }; + d3.scale.ordinal = function() { + return d3_scale_ordinal([], { + t: "range", + a: [ [] ] + }); + }; + function d3_scale_ordinal(domain, ranger) { + var index, range, rangeBand; + function scale(x) { + return range[((index.get(x) || (ranger.t === "range" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length]; + } + function steps(start, step) { + return d3.range(domain.length).map(function(i) { + return start + step * i; + }); + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = []; + index = new d3_Map(); + var i = -1, n = x.length, xi; + while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi)); + return scale[ranger.t].apply(scale, ranger.a); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + rangeBand = 0; + ranger = { + t: "range", + a: arguments + }; + return scale; + }; + scale.rangePoints = function(x, padding) { + if (arguments.length < 2) padding = 0; + var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, + 0) : (stop - start) / (domain.length - 1 + padding); + range = steps(start + step * padding / 2, step); + rangeBand = 0; + ranger = { + t: "rangePoints", + a: arguments + }; + return scale; + }; + scale.rangeRoundPoints = function(x, padding) { + if (arguments.length < 2) padding = 0; + var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), + 0) : (stop - start) / (domain.length - 1 + padding) | 0; + range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step); + rangeBand = 0; + ranger = { + t: "rangeRoundPoints", + a: arguments + }; + return scale; + }; + scale.rangeBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding); + range = steps(start + step * outerPadding, step); + if (reverse) range.reverse(); + rangeBand = step * (1 - padding); + ranger = { + t: "rangeBands", + a: arguments + }; + return scale; + }; + scale.rangeRoundBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)); + range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step); + if (reverse) range.reverse(); + rangeBand = Math.round(step * (1 - padding)); + ranger = { + t: "rangeRoundBands", + a: arguments + }; + return scale; + }; + scale.rangeBand = function() { + return rangeBand; + }; + scale.rangeExtent = function() { + return d3_scaleExtent(ranger.a[0]); + }; + scale.copy = function() { + return d3_scale_ordinal(domain, ranger); + }; + return scale.domain(domain); + } + d3.scale.category10 = function() { + return d3.scale.ordinal().range(d3_category10); + }; + d3.scale.category20 = function() { + return d3.scale.ordinal().range(d3_category20); + }; + d3.scale.category20b = function() { + return d3.scale.ordinal().range(d3_category20b); + }; + d3.scale.category20c = function() { + return d3.scale.ordinal().range(d3_category20c); + }; + var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString); + var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString); + var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString); + var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString); + d3.scale.quantile = function() { + return d3_scale_quantile([], []); + }; + function d3_scale_quantile(domain, range) { + var thresholds; + function rescale() { + var k = 0, q = range.length; + thresholds = []; + while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q); + return scale; + } + function scale(x) { + if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)]; + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.quantiles = function() { + return thresholds; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ]; + }; + scale.copy = function() { + return d3_scale_quantile(domain, range); + }; + return rescale(); + } + d3.scale.quantize = function() { + return d3_scale_quantize(0, 1, [ 0, 1 ]); + }; + function d3_scale_quantize(x0, x1, range) { + var kx, i; + function scale(x) { + return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; + } + function rescale() { + kx = range.length / (x1 - x0); + i = range.length - 1; + return scale; + } + scale.domain = function(x) { + if (!arguments.length) return [ x0, x1 ]; + x0 = +x[0]; + x1 = +x[x.length - 1]; + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + y = y < 0 ? NaN : y / kx + x0; + return [ y, y + 1 / kx ]; + }; + scale.copy = function() { + return d3_scale_quantize(x0, x1, range); + }; + return rescale(); + } + d3.scale.threshold = function() { + return d3_scale_threshold([ .5 ], [ 0, 1 ]); + }; + function d3_scale_threshold(domain, range) { + function scale(x) { + if (x <= x) return range[d3.bisect(domain, x)]; + } + scale.domain = function(_) { + if (!arguments.length) return domain; + domain = _; + return scale; + }; + scale.range = function(_) { + if (!arguments.length) return range; + range = _; + return scale; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return [ domain[y - 1], domain[y] ]; + }; + scale.copy = function() { + return d3_scale_threshold(domain, range); + }; + return scale; + } + d3.scale.identity = function() { + return d3_scale_identity([ 0, 1 ]); + }; + function d3_scale_identity(domain) { + function identity(x) { + return +x; + } + identity.invert = identity; + identity.domain = identity.range = function(x) { + if (!arguments.length) return domain; + domain = x.map(identity); + return identity; + }; + identity.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + identity.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + identity.copy = function() { + return d3_scale_identity(domain); + }; + return identity; + } + d3.svg = {}; + function d3_zero() { + return 0; + } + d3.svg.arc = function() { + var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle; + function arc() { + var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1; + if (r1 < r0) rc = r1, r1 = r0, r0 = rc; + if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : "") + "Z"; + var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = []; + if (ap = (+padAngle.apply(this, arguments) || 0) / 2) { + rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments); + if (!cw) p1 *= -1; + if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap)); + if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap)); + } + if (r1) { + x0 = r1 * Math.cos(a0 + p1); + y0 = r1 * Math.sin(a0 + p1); + x1 = r1 * Math.cos(a1 - p1); + y1 = r1 * Math.sin(a1 - p1); + var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1; + if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) { + var h1 = (a0 + a1) / 2; + x0 = r1 * Math.cos(h1); + y0 = r1 * Math.sin(h1); + x1 = y1 = null; + } + } else { + x0 = y0 = 0; + } + if (r0) { + x2 = r0 * Math.cos(a1 - p0); + y2 = r0 * Math.sin(a1 - p0); + x3 = r0 * Math.cos(a0 + p0); + y3 = r0 * Math.sin(a0 + p0); + var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1; + if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) { + var h0 = (a0 + a1) / 2; + x2 = r0 * Math.cos(h0); + y2 = r0 * Math.sin(h0); + x3 = y3 = null; + } + } else { + x2 = y2 = 0; + } + if ((rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) { + cr = r0 < r1 ^ cw ? 0 : 1; + var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]); + if (x1 != null) { + var rc1 = Math.min(rc, (r1 - lc) / (kc + 1)), t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw); + if (rc === rc1) { + path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]); + } else { + path.push("M", t30[0], "A", rc1, ",", rc1, " 0 1,", cr, " ", t12[0]); + } + } else { + path.push("M", x0, ",", y0); + } + if (x3 != null) { + var rc0 = Math.min(rc, (r0 - lc) / (kc - 1)), t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw); + if (rc === rc0) { + path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]); + } else { + path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]); + } + } else { + path.push("L", x2, ",", y2); + } + } else { + path.push("M", x0, ",", y0); + if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1); + path.push("L", x2, ",", y2); + if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3); + } + path.push("Z"); + return path.join(""); + } + function circleSegment(r1, cw) { + return "M0," + r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + -r1 + "A" + r1 + "," + r1 + " 0 1," + cw + " 0," + r1; + } + arc.innerRadius = function(v) { + if (!arguments.length) return innerRadius; + innerRadius = d3_functor(v); + return arc; + }; + arc.outerRadius = function(v) { + if (!arguments.length) return outerRadius; + outerRadius = d3_functor(v); + return arc; + }; + arc.cornerRadius = function(v) { + if (!arguments.length) return cornerRadius; + cornerRadius = d3_functor(v); + return arc; + }; + arc.padRadius = function(v) { + if (!arguments.length) return padRadius; + padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v); + return arc; + }; + arc.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return arc; + }; + arc.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return arc; + }; + arc.padAngle = function(v) { + if (!arguments.length) return padAngle; + padAngle = d3_functor(v); + return arc; + }; + arc.centroid = function() { + var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ; + return [ Math.cos(a) * r, Math.sin(a) * r ]; + }; + return arc; + }; + var d3_svg_arcAuto = "auto"; + function d3_svg_arcInnerRadius(d) { + return d.innerRadius; + } + function d3_svg_arcOuterRadius(d) { + return d.outerRadius; + } + function d3_svg_arcStartAngle(d) { + return d.startAngle; + } + function d3_svg_arcEndAngle(d) { + return d.endAngle; + } + function d3_svg_arcPadAngle(d) { + return d && d.padAngle; + } + function d3_svg_arcSweep(x0, y0, x1, y1) { + return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1; + } + function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) { + var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(r * r * d2 - D * D), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3; + if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; + return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ]; + } + function d3_svg_line(projection) { + var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7; + function line(data) { + var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y); + function segment() { + segments.push("M", interpolate(projection(points), tension)); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]); + } else if (points.length) { + segment(); + points = []; + } + } + if (points.length) segment(); + return segments.length ? segments.join("") : null; + } + line.x = function(_) { + if (!arguments.length) return x; + x = _; + return line; + }; + line.y = function(_) { + if (!arguments.length) return y; + y = _; + return line; + }; + line.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return line; + }; + line.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + return line; + }; + line.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return line; + }; + return line; + } + d3.svg.line = function() { + return d3_svg_line(d3_identity); + }; + var d3_svg_lineInterpolators = d3.map({ + linear: d3_svg_lineLinear, + "linear-closed": d3_svg_lineLinearClosed, + step: d3_svg_lineStep, + "step-before": d3_svg_lineStepBefore, + "step-after": d3_svg_lineStepAfter, + basis: d3_svg_lineBasis, + "basis-open": d3_svg_lineBasisOpen, + "basis-closed": d3_svg_lineBasisClosed, + bundle: d3_svg_lineBundle, + cardinal: d3_svg_lineCardinal, + "cardinal-open": d3_svg_lineCardinalOpen, + "cardinal-closed": d3_svg_lineCardinalClosed, + monotone: d3_svg_lineMonotone + }); + d3_svg_lineInterpolators.forEach(function(key, value) { + value.key = key; + value.closed = /-closed$/.test(key); + }); + function d3_svg_lineLinear(points) { + return points.join("L"); + } + function d3_svg_lineLinearClosed(points) { + return d3_svg_lineLinear(points) + "Z"; + } + function d3_svg_lineStep(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]); + if (n > 1) path.push("H", p[0]); + return path.join(""); + } + function d3_svg_lineStepBefore(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]); + return path.join(""); + } + function d3_svg_lineStepAfter(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]); + return path.join(""); + } + function d3_svg_lineCardinalOpen(points, tension) { + return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineCardinalClosed(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), + points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); + } + function d3_svg_lineCardinal(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineHermite(points, tangents) { + if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) { + return d3_svg_lineLinear(points); + } + var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1; + if (quad) { + path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1]; + p0 = points[1]; + pi = 2; + } + if (tangents.length > 1) { + t = tangents[1]; + p = points[pi]; + pi++; + path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + for (var i = 2; i < tangents.length; i++, pi++) { + p = points[pi]; + t = tangents[i]; + path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + } + } + if (quad) { + var lp = points[pi]; + path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1]; + } + return path; + } + function d3_svg_lineCardinalTangents(points, tension) { + var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length; + while (++i < n) { + p0 = p1; + p1 = p2; + p2 = points[i]; + tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]); + } + return tangents; + } + function d3_svg_lineBasis(points) { + if (points.length < 3) return d3_svg_lineLinear(points); + var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + points.push(points[n - 1]); + while (++i <= n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + points.pop(); + path.push("L", pi); + return path.join(""); + } + function d3_svg_lineBasisOpen(points) { + if (points.length < 4) return d3_svg_lineLinear(points); + var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ]; + while (++i < 3) { + pi = points[i]; + px.push(pi[0]); + py.push(pi[1]); + } + path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)); + --i; + while (++i < n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBasisClosed(points) { + var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = []; + while (++i < 4) { + pi = points[i % n]; + px.push(pi[0]); + py.push(pi[1]); + } + path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + --i; + while (++i < m) { + pi = points[i % n]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBundle(points, tension) { + var n = points.length - 1; + if (n) { + var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t; + while (++i <= n) { + p = points[i]; + t = i / n; + p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx); + p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy); + } + } + return d3_svg_lineBasis(points); + } + function d3_svg_lineDot4(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; + } + var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ]; + function d3_svg_lineBasisBezier(path, x, y) { + path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y)); + } + function d3_svg_lineSlope(p0, p1) { + return (p1[1] - p0[1]) / (p1[0] - p0[0]); + } + function d3_svg_lineFiniteDifferences(points) { + var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1); + while (++i < j) { + m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2; + } + m[i] = d; + return m; + } + function d3_svg_lineMonotoneTangents(points) { + var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1; + while (++i < j) { + d = d3_svg_lineSlope(points[i], points[i + 1]); + if (abs(d) < ε) { + m[i] = m[i + 1] = 0; + } else { + a = m[i] / d; + b = m[i + 1] / d; + s = a * a + b * b; + if (s > 9) { + s = d * 3 / Math.sqrt(s); + m[i] = s * a; + m[i + 1] = s * b; + } + } + } + i = -1; + while (++i <= j) { + s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i])); + tangents.push([ s || 0, m[i] * s || 0 ]); + } + return tangents; + } + function d3_svg_lineMonotone(points) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points)); + } + d3.svg.line.radial = function() { + var line = d3_svg_line(d3_svg_lineRadial); + line.radius = line.x, delete line.x; + line.angle = line.y, delete line.y; + return line; + }; + function d3_svg_lineRadial(points) { + var point, i = -1, n = points.length, r, a; + while (++i < n) { + point = points[i]; + r = point[0]; + a = point[1] - halfπ; + point[0] = r * Math.cos(a); + point[1] = r * Math.sin(a); + } + return points; + } + function d3_svg_area(projection) { + var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7; + function area(data) { + var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() { + return x; + } : d3_functor(x1), fy1 = y0 === y1 ? function() { + return y; + } : d3_functor(y1), x, y; + function segment() { + segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z"); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]); + points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]); + } else if (points0.length) { + segment(); + points0 = []; + points1 = []; + } + } + if (points0.length) segment(); + return segments.length ? segments.join("") : null; + } + area.x = function(_) { + if (!arguments.length) return x1; + x0 = x1 = _; + return area; + }; + area.x0 = function(_) { + if (!arguments.length) return x0; + x0 = _; + return area; + }; + area.x1 = function(_) { + if (!arguments.length) return x1; + x1 = _; + return area; + }; + area.y = function(_) { + if (!arguments.length) return y1; + y0 = y1 = _; + return area; + }; + area.y0 = function(_) { + if (!arguments.length) return y0; + y0 = _; + return area; + }; + area.y1 = function(_) { + if (!arguments.length) return y1; + y1 = _; + return area; + }; + area.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return area; + }; + area.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + interpolateReverse = interpolate.reverse || interpolate; + L = interpolate.closed ? "M" : "L"; + return area; + }; + area.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return area; + }; + return area; + } + d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter; + d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore; + d3.svg.area = function() { + return d3_svg_area(d3_identity); + }; + d3.svg.area.radial = function() { + var area = d3_svg_area(d3_svg_lineRadial); + area.radius = area.x, delete area.x; + area.innerRadius = area.x0, delete area.x0; + area.outerRadius = area.x1, delete area.x1; + area.angle = area.y, delete area.y; + area.startAngle = area.y0, delete area.y0; + area.endAngle = area.y1, delete area.y1; + return area; + }; + d3.svg.chord = function() { + var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; + function chord(d, i) { + var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i); + return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z"; + } + function subgroup(self, f, d, i) { + var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ; + return { + r: r, + a0: a0, + a1: a1, + p0: [ r * Math.cos(a0), r * Math.sin(a0) ], + p1: [ r * Math.cos(a1), r * Math.sin(a1) ] + }; + } + function equals(a, b) { + return a.a0 == b.a0 && a.a1 == b.a1; + } + function arc(r, p, a) { + return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p; + } + function curve(r0, p0, r1, p1) { + return "Q 0,0 " + p1; + } + chord.radius = function(v) { + if (!arguments.length) return radius; + radius = d3_functor(v); + return chord; + }; + chord.source = function(v) { + if (!arguments.length) return source; + source = d3_functor(v); + return chord; + }; + chord.target = function(v) { + if (!arguments.length) return target; + target = d3_functor(v); + return chord; + }; + chord.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return chord; + }; + chord.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return chord; + }; + return chord; + }; + function d3_svg_chordRadius(d) { + return d.radius; + } + d3.svg.diagonal = function() { + var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection; + function diagonal(d, i) { + var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, { + x: p0.x, + y: m + }, { + x: p3.x, + y: m + }, p3 ]; + p = p.map(projection); + return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; + } + diagonal.source = function(x) { + if (!arguments.length) return source; + source = d3_functor(x); + return diagonal; + }; + diagonal.target = function(x) { + if (!arguments.length) return target; + target = d3_functor(x); + return diagonal; + }; + diagonal.projection = function(x) { + if (!arguments.length) return projection; + projection = x; + return diagonal; + }; + return diagonal; + }; + function d3_svg_diagonalProjection(d) { + return [ d.x, d.y ]; + } + d3.svg.diagonal.radial = function() { + var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection; + diagonal.projection = function(x) { + return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection; + }; + return diagonal; + }; + function d3_svg_diagonalRadialProjection(projection) { + return function() { + var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ; + return [ r * Math.cos(a), r * Math.sin(a) ]; + }; + } + d3.svg.symbol = function() { + var type = d3_svg_symbolType, size = d3_svg_symbolSize; + function symbol(d, i) { + return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i)); + } + symbol.type = function(x) { + if (!arguments.length) return type; + type = d3_functor(x); + return symbol; + }; + symbol.size = function(x) { + if (!arguments.length) return size; + size = d3_functor(x); + return symbol; + }; + return symbol; + }; + function d3_svg_symbolSize() { + return 64; + } + function d3_svg_symbolType() { + return "circle"; + } + function d3_svg_symbolCircle(size) { + var r = Math.sqrt(size / π); + return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z"; + } + var d3_svg_symbols = d3.map({ + circle: d3_svg_symbolCircle, + cross: function(size) { + var r = Math.sqrt(size / 5) / 2; + return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z"; + }, + diamond: function(size) { + var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30; + return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z"; + }, + square: function(size) { + var r = Math.sqrt(size) / 2; + return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z"; + }, + "triangle-down": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z"; + }, + "triangle-up": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z"; + } + }); + d3.svg.symbolTypes = d3_svg_symbols.keys(); + var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians); + function d3_transition(groups, namespace, id) { + d3_subclass(groups, d3_transitionPrototype); + groups.namespace = namespace; + groups.id = id; + return groups; + } + var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit; + d3_transitionPrototype.call = d3_selectionPrototype.call; + d3_transitionPrototype.empty = d3_selectionPrototype.empty; + d3_transitionPrototype.node = d3_selectionPrototype.node; + d3_transitionPrototype.size = d3_selectionPrototype.size; + d3.transition = function(selection) { + return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition(); + }; + d3.transition.prototype = d3_transitionPrototype; + d3_transitionPrototype.select = function(selector) { + var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + d3_transitionNode(subnode, i, ns, id, node[ns][id]); + subgroup.push(subnode); + } else { + subgroup.push(null); + } + } + } + return d3_transition(subgroups, ns, id); + }; + d3_transitionPrototype.selectAll = function(selector) { + var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + transition = node[ns][id]; + subnodes = selector.call(node, node.__data__, i, j); + subgroups.push(subgroup = []); + for (var k = -1, o = subnodes.length; ++k < o; ) { + if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition); + subgroup.push(subnode); + } + } + } + } + return d3_transition(subgroups, ns, id); + }; + d3_transitionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i, j)) { + subgroup.push(node); + } + } + } + return d3_transition(subgroups, this.namespace, this.id); + }; + d3_transitionPrototype.tween = function(name, tween) { + var id = this.id, ns = this.namespace; + if (arguments.length < 2) return this.node()[ns][id].tween.get(name); + return d3_selection_each(this, tween == null ? function(node) { + node[ns][id].tween.remove(name); + } : function(node) { + node[ns][id].tween.set(name, tween); + }); + }; + function d3_transition_tween(groups, name, value, tween) { + var id = groups.id, ns = groups.namespace; + return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) { + node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j))); + } : (value = tween(value), function(node) { + node[ns][id].tween.set(name, value); + })); + } + d3_transitionPrototype.attr = function(nameNS, value) { + if (arguments.length < 2) { + for (value in nameNS) this.attr(value, nameNS[value]); + return this; + } + var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrTween(b) { + return b == null ? attrNull : (b += "", function() { + var a = this.getAttribute(name), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttribute(name, i(t)); + }); + }); + } + function attrTweenNS(b) { + return b == null ? attrNullNS : (b += "", function() { + var a = this.getAttributeNS(name.space, name.local), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttributeNS(name.space, name.local, i(t)); + }); + }); + } + return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.attrTween = function(nameNS, tween) { + var name = d3.ns.qualify(nameNS); + function attrTween(d, i) { + var f = tween.call(this, d, i, this.getAttribute(name)); + return f && function(t) { + this.setAttribute(name, f(t)); + }; + } + function attrTweenNS(d, i) { + var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); + return f && function(t) { + this.setAttributeNS(name.space, name.local, f(t)); + }; + } + return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.style(priority, name[priority], value); + return this; + } + priority = ""; + } + function styleNull() { + this.style.removeProperty(name); + } + function styleString(b) { + return b == null ? styleNull : (b += "", function() { + var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i; + return a !== b && (i = d3_interpolate(a, b), function(t) { + this.style.setProperty(name, i(t), priority); + }); + }); + } + return d3_transition_tween(this, "style." + name, value, styleString); + }; + d3_transitionPrototype.styleTween = function(name, tween, priority) { + if (arguments.length < 3) priority = ""; + function styleTween(d, i) { + var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name)); + return f && function(t) { + this.style.setProperty(name, f(t), priority); + }; + } + return this.tween("style." + name, styleTween); + }; + d3_transitionPrototype.text = function(value) { + return d3_transition_tween(this, "text", value, d3_transition_text); + }; + function d3_transition_text(b) { + if (b == null) b = ""; + return function() { + this.textContent = b; + }; + } + d3_transitionPrototype.remove = function() { + var ns = this.namespace; + return this.each("end.transition", function() { + var p; + if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this); + }); + }; + d3_transitionPrototype.ease = function(value) { + var id = this.id, ns = this.namespace; + if (arguments.length < 1) return this.node()[ns][id].ease; + if (typeof value !== "function") value = d3.ease.apply(d3, arguments); + return d3_selection_each(this, function(node) { + node[ns][id].ease = value; + }); + }; + d3_transitionPrototype.delay = function(value) { + var id = this.id, ns = this.namespace; + if (arguments.length < 1) return this.node()[ns][id].delay; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node[ns][id].delay = +value.call(node, node.__data__, i, j); + } : (value = +value, function(node) { + node[ns][id].delay = value; + })); + }; + d3_transitionPrototype.duration = function(value) { + var id = this.id, ns = this.namespace; + if (arguments.length < 1) return this.node()[ns][id].duration; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j)); + } : (value = Math.max(1, value), function(node) { + node[ns][id].duration = value; + })); + }; + d3_transitionPrototype.each = function(type, listener) { + var id = this.id, ns = this.namespace; + if (arguments.length < 2) { + var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId; + d3_transitionInheritId = id; + d3_selection_each(this, function(node, i, j) { + d3_transitionInherit = node[ns][id]; + type.call(node, node.__data__, i, j); + }); + d3_transitionInherit = inherit; + d3_transitionInheritId = inheritId; + } else { + d3_selection_each(this, function(node) { + var transition = node[ns][id]; + (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener); + }); + } + return this; + }; + d3_transitionPrototype.transition = function() { + var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition; + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if (node = group[i]) { + transition = node[ns][id0]; + d3_transitionNode(node, i, ns, id1, { + time: transition.time, + ease: transition.ease, + delay: transition.delay + transition.duration, + duration: transition.duration + }); + } + subgroup.push(node); + } + } + return d3_transition(subgroups, ns, id1); + }; + function d3_transitionNamespace(name) { + return name == null ? "__transition__" : "__transition_" + name + "__"; + } + function d3_transitionNode(node, i, namespace, id, inherit) { + var lock = node[namespace] || (node[namespace] = { + active: 0, + count: 0 + }), transition = lock[id]; + if (!transition) { + var time = inherit.time; + transition = lock[id] = { + tween: new d3_Map(), + time: time, + delay: inherit.delay, + duration: inherit.duration, + ease: inherit.ease + }; + inherit = null; + ++lock.count; + d3.timer(function(elapsed) { + var d = node.__data__, delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = []; + timer.t = delay + time; + if (delay <= elapsed) return start(elapsed - delay); + timer.c = start; + function start(elapsed) { + if (lock.active > id) return stop(false); + lock.active = id; + transition.event && transition.event.start.call(node, d, i); + transition.tween.forEach(function(key, value) { + if (value = value.call(node, d, i)) { + tweened.push(value); + } + }); + ease = transition.ease; + duration = transition.duration; + d3.timer(function() { + timer.c = tick(elapsed || 1) ? d3_true : tick; + return 1; + }, 0, time); + } + function tick(elapsed) { + if (lock.active !== id) return stop(false); + var t = elapsed / duration, e = ease(t), n = tweened.length; + while (n > 0) { + tweened[--n].call(node, e); + } + if (t >= 1) return stop(true); + } + function stop(end) { + if (transition.event) transition.event[end ? "end" : "interrupt"].call(node, d, i); + if (--lock.count) delete lock[id]; else delete node[namespace]; + return 1; + } + }, 0, time); + } + } + d3.svg.axis = function() { + var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_; + function axis(g) { + g.each(function() { + var g = d3.select(this); + var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy(); + var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick.order()).style("opacity", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform; + var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), + d3.transition(path)); + tickEnter.append("line"); + tickEnter.append("text"); + var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"), sign = orient === "top" || orient === "left" ? -1 : 1, x1, x2, y1, y2; + if (orient === "bottom" || orient === "top") { + tickTransform = d3_svg_axisX, x1 = "x", y1 = "y", x2 = "x2", y2 = "y2"; + text.attr("dy", sign < 0 ? "0em" : ".71em").style("text-anchor", "middle"); + pathUpdate.attr("d", "M" + range[0] + "," + sign * outerTickSize + "V0H" + range[1] + "V" + sign * outerTickSize); + } else { + tickTransform = d3_svg_axisY, x1 = "y", y1 = "x", x2 = "y2", y2 = "x2"; + text.attr("dy", ".32em").style("text-anchor", sign < 0 ? "end" : "start"); + pathUpdate.attr("d", "M" + sign * outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + sign * outerTickSize); + } + lineEnter.attr(y2, sign * innerTickSize); + textEnter.attr(y1, sign * tickSpacing); + lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize); + textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing); + if (scale1.rangeBand) { + var x = scale1, dx = x.rangeBand() / 2; + scale0 = scale1 = function(d) { + return x(d) + dx; + }; + } else if (scale0.rangeBand) { + scale0 = scale1; + } else { + tickExit.call(tickTransform, scale1, scale0); + } + tickEnter.call(tickTransform, scale0, scale1); + tickUpdate.call(tickTransform, scale1, scale1); + }); + } + axis.scale = function(x) { + if (!arguments.length) return scale; + scale = x; + return axis; + }; + axis.orient = function(x) { + if (!arguments.length) return orient; + orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient; + return axis; + }; + axis.ticks = function() { + if (!arguments.length) return tickArguments_; + tickArguments_ = arguments; + return axis; + }; + axis.tickValues = function(x) { + if (!arguments.length) return tickValues; + tickValues = x; + return axis; + }; + axis.tickFormat = function(x) { + if (!arguments.length) return tickFormat_; + tickFormat_ = x; + return axis; + }; + axis.tickSize = function(x) { + var n = arguments.length; + if (!n) return innerTickSize; + innerTickSize = +x; + outerTickSize = +arguments[n - 1]; + return axis; + }; + axis.innerTickSize = function(x) { + if (!arguments.length) return innerTickSize; + innerTickSize = +x; + return axis; + }; + axis.outerTickSize = function(x) { + if (!arguments.length) return outerTickSize; + outerTickSize = +x; + return axis; + }; + axis.tickPadding = function(x) { + if (!arguments.length) return tickPadding; + tickPadding = +x; + return axis; + }; + axis.tickSubdivide = function() { + return arguments.length && axis; + }; + return axis; + }; + var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = { + top: 1, + right: 1, + bottom: 1, + left: 1 + }; + function d3_svg_axisX(selection, x0, x1) { + selection.attr("transform", function(d) { + var v0 = x0(d); + return "translate(" + (isFinite(v0) ? v0 : x1(d)) + ",0)"; + }); + } + function d3_svg_axisY(selection, y0, y1) { + selection.attr("transform", function(d) { + var v0 = y0(d); + return "translate(0," + (isFinite(v0) ? v0 : y1(d)) + ")"; + }); + } + d3.svg.brush = function() { + var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0]; + function brush(g) { + g.each(function() { + var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart); + var background = g.selectAll(".background").data([ 0 ]); + background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"); + g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move"); + var resize = g.selectAll(".resize").data(resizes, d3_identity); + resize.exit().remove(); + resize.enter().append("g").attr("class", function(d) { + return "resize " + d; + }).style("cursor", function(d) { + return d3_svg_brushCursor[d]; + }).append("rect").attr("x", function(d) { + return /[ew]$/.test(d) ? -3 : null; + }).attr("y", function(d) { + return /^[ns]/.test(d) ? -3 : null; + }).attr("width", 6).attr("height", 6).style("visibility", "hidden"); + resize.style("display", brush.empty() ? "none" : null); + var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range; + if (x) { + range = d3_scaleRange(x); + backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]); + redrawX(gUpdate); + } + if (y) { + range = d3_scaleRange(y); + backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]); + redrawY(gUpdate); + } + redraw(gUpdate); + }); + } + brush.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), extent1 = { + x: xExtent, + y: yExtent, + i: xExtentDomain, + j: yExtentDomain + }, extent0 = this.__chart__ || extent1; + this.__chart__ = extent1; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.brush", function() { + xExtentDomain = extent0.i; + yExtentDomain = extent0.j; + xExtent = extent0.x; + yExtent = extent0.y; + event_({ + type: "brushstart" + }); + }).tween("brush:brush", function() { + var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y); + xExtentDomain = yExtentDomain = null; + return function(t) { + xExtent = extent1.x = xi(t); + yExtent = extent1.y = yi(t); + event_({ + type: "brush", + mode: "resize" + }); + }; + }).each("end.brush", function() { + xExtentDomain = extent1.i; + yExtentDomain = extent1.j; + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + }); + } else { + event_({ + type: "brushstart" + }); + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + } + }); + }; + function redraw(g) { + g.selectAll(".resize").attr("transform", function(d) { + return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")"; + }); + } + function redrawX(g) { + g.select(".extent").attr("x", xExtent[0]); + g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]); + } + function redrawY(g) { + g.select(".extent").attr("y", yExtent[0]); + g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]); + } + function brushstart() { + var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset; + var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup); + if (d3.event.changedTouches) { + w.on("touchmove.brush", brushmove).on("touchend.brush", brushend); + } else { + w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend); + } + g.interrupt().selectAll("*").interrupt(); + if (dragging) { + origin[0] = xExtent[0] - origin[0]; + origin[1] = yExtent[0] - origin[1]; + } else if (resizing) { + var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing); + offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ]; + origin[0] = xExtent[ex]; + origin[1] = yExtent[ey]; + } else if (d3.event.altKey) center = origin.slice(); + g.style("pointer-events", "none").selectAll(".resize").style("display", null); + d3.select("body").style("cursor", eventTarget.style("cursor")); + event_({ + type: "brushstart" + }); + brushmove(); + function keydown() { + if (d3.event.keyCode == 32) { + if (!dragging) { + center = null; + origin[0] -= xExtent[1]; + origin[1] -= yExtent[1]; + dragging = 2; + } + d3_eventPreventDefault(); + } + } + function keyup() { + if (d3.event.keyCode == 32 && dragging == 2) { + origin[0] += xExtent[1]; + origin[1] += yExtent[1]; + dragging = 0; + d3_eventPreventDefault(); + } + } + function brushmove() { + var point = d3.mouse(target), moved = false; + if (offset) { + point[0] += offset[0]; + point[1] += offset[1]; + } + if (!dragging) { + if (d3.event.altKey) { + if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ]; + origin[0] = xExtent[+(point[0] < center[0])]; + origin[1] = yExtent[+(point[1] < center[1])]; + } else center = null; + } + if (resizingX && move1(point, x, 0)) { + redrawX(g); + moved = true; + } + if (resizingY && move1(point, y, 1)) { + redrawY(g); + moved = true; + } + if (moved) { + redraw(g); + event_({ + type: "brush", + mode: dragging ? "move" : "resize" + }); + } + } + function move1(point, scale, i) { + var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max; + if (dragging) { + r0 -= position; + r1 -= size + position; + } + min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i]; + if (dragging) { + max = (min += position) + size; + } else { + if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min)); + if (position < min) { + max = min; + min = position; + } else { + max = position; + } + } + if (extent[0] != min || extent[1] != max) { + if (i) yExtentDomain = null; else xExtentDomain = null; + extent[0] = min; + extent[1] = max; + return true; + } + } + function brushend() { + brushmove(); + g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null); + d3.select("body").style("cursor", null); + w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null); + dragRestore(); + event_({ + type: "brushend" + }); + } + } + brush.x = function(z) { + if (!arguments.length) return x; + x = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.y = function(z) { + if (!arguments.length) return y; + y = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.clamp = function(z) { + if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null; + if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z; + return brush; + }; + brush.extent = function(z) { + var x0, x1, y0, y1, t; + if (!arguments.length) { + if (x) { + if (xExtentDomain) { + x0 = xExtentDomain[0], x1 = xExtentDomain[1]; + } else { + x0 = xExtent[0], x1 = xExtent[1]; + if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + } + } + if (y) { + if (yExtentDomain) { + y0 = yExtentDomain[0], y1 = yExtentDomain[1]; + } else { + y0 = yExtent[0], y1 = yExtent[1]; + if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + } + } + return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ]; + } + if (x) { + x0 = z[0], x1 = z[1]; + if (y) x0 = x0[0], x1 = x1[0]; + xExtentDomain = [ x0, x1 ]; + if (x.invert) x0 = x(x0), x1 = x(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ]; + } + if (y) { + y0 = z[0], y1 = z[1]; + if (x) y0 = y0[1], y1 = y1[1]; + yExtentDomain = [ y0, y1 ]; + if (y.invert) y0 = y(y0), y1 = y(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ]; + } + return brush; + }; + brush.clear = function() { + if (!brush.empty()) { + xExtent = [ 0, 0 ], yExtent = [ 0, 0 ]; + xExtentDomain = yExtentDomain = null; + } + return brush; + }; + brush.empty = function() { + return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1]; + }; + return d3.rebind(brush, event, "on"); + }; + var d3_svg_brushCursor = { + n: "ns-resize", + e: "ew-resize", + s: "ns-resize", + w: "ew-resize", + nw: "nwse-resize", + ne: "nesw-resize", + se: "nwse-resize", + sw: "nesw-resize" + }; + var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ]; + var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat; + var d3_time_formatUtc = d3_time_format.utc; + var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ"); + d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso; + function d3_time_formatIsoNative(date) { + return date.toISOString(); + } + d3_time_formatIsoNative.parse = function(string) { + var date = new Date(string); + return isNaN(date) ? null : date; + }; + d3_time_formatIsoNative.toString = d3_time_formatIso.toString; + d3_time.second = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 1e3) * 1e3); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 1e3); + }, function(date) { + return date.getSeconds(); + }); + d3_time.seconds = d3_time.second.range; + d3_time.seconds.utc = d3_time.second.utc.range; + d3_time.minute = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 6e4) * 6e4); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 6e4); + }, function(date) { + return date.getMinutes(); + }); + d3_time.minutes = d3_time.minute.range; + d3_time.minutes.utc = d3_time.minute.utc.range; + d3_time.hour = d3_time_interval(function(date) { + var timezone = date.getTimezoneOffset() / 60; + return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 36e5); + }, function(date) { + return date.getHours(); + }); + d3_time.hours = d3_time.hour.range; + d3_time.hours.utc = d3_time.hour.utc.range; + d3_time.month = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setDate(1); + return date; + }, function(date, offset) { + date.setMonth(date.getMonth() + offset); + }, function(date) { + return date.getMonth(); + }); + d3_time.months = d3_time.month.range; + d3_time.months.utc = d3_time.month.utc.range; + function d3_time_scale(linear, methods, format) { + function scale(x) { + return linear(x); + } + scale.invert = function(x) { + return d3_time_scaleDate(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return linear.domain().map(d3_time_scaleDate); + linear.domain(x); + return scale; + }; + function tickMethod(extent, count) { + var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target); + return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) { + return d / 31536e6; + }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i]; + } + scale.nice = function(interval, skip) { + var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval); + if (method) interval = method[0], skip = method[1]; + function skipped(date) { + return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length; + } + return scale.domain(d3_scale_nice(domain, skip > 1 ? { + floor: function(date) { + while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1); + return date; + }, + ceil: function(date) { + while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1); + return date; + } + } : interval)); + }; + scale.ticks = function(interval, skip) { + var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ { + range: interval + }, skip ]; + if (method) interval = method[0], skip = method[1]; + return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip); + }; + scale.tickFormat = function() { + return format; + }; + scale.copy = function() { + return d3_time_scale(linear.copy(), methods, format); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_time_scaleDate(t) { + return new Date(t); + } + var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ]; + var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ]; + var d3_time_scaleLocalFormat = d3_time_format.multi([ [ ".%L", function(d) { + return d.getMilliseconds(); + } ], [ ":%S", function(d) { + return d.getSeconds(); + } ], [ "%I:%M", function(d) { + return d.getMinutes(); + } ], [ "%I %p", function(d) { + return d.getHours(); + } ], [ "%a %d", function(d) { + return d.getDay() && d.getDate() != 1; + } ], [ "%b %d", function(d) { + return d.getDate() != 1; + } ], [ "%B", function(d) { + return d.getMonth(); + } ], [ "%Y", d3_true ] ]); + var d3_time_scaleMilliseconds = { + range: function(start, stop, step) { + return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate); + }, + floor: d3_identity, + ceil: d3_identity + }; + d3_time_scaleLocalMethods.year = d3_time.year; + d3_time.scale = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat); + }; + var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) { + return [ m[0].utc, m[1] ]; + }); + var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ ".%L", function(d) { + return d.getUTCMilliseconds(); + } ], [ ":%S", function(d) { + return d.getUTCSeconds(); + } ], [ "%I:%M", function(d) { + return d.getUTCMinutes(); + } ], [ "%I %p", function(d) { + return d.getUTCHours(); + } ], [ "%a %d", function(d) { + return d.getUTCDay() && d.getUTCDate() != 1; + } ], [ "%b %d", function(d) { + return d.getUTCDate() != 1; + } ], [ "%B", function(d) { + return d.getUTCMonth(); + } ], [ "%Y", d3_true ] ]); + d3_time_scaleUtcMethods.year = d3_time.year.utc; + d3_time.scale.utc = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat); + }; + d3.text = d3_xhrType(function(request) { + return request.responseText; + }); + d3.json = function(url, callback) { + return d3_xhr(url, "application/json", d3_json, callback); + }; + function d3_json(request) { + return JSON.parse(request.responseText); + } + d3.html = function(url, callback) { + return d3_xhr(url, "text/html", d3_html, callback); + }; + function d3_html(request) { + var range = d3_document.createRange(); + range.selectNode(d3_document.body); + return range.createContextualFragment(request.responseText); + } + d3.xml = d3_xhrType(function(request) { + return request.responseXML; + }); + if (typeof define === "function" && define.amd) define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; + this.d3 = d3; +}(); \ No newline at end of file diff --git a/plugins/d3/d3.min.js b/plugins/d3/d3.min.js new file mode 100644 index 0000000..0286134 --- /dev/null +++ b/plugins/d3/d3.min.js @@ -0,0 +1,5 @@ +!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null===n?0/0:+n}function e(n){return!isNaN(n)}function r(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function u(n){return n.length}function i(n){for(var t=1;n*t%1;)t*=10;return t}function o(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function a(){this._=Object.create(null)}function c(n){return(n+="")===da||n[0]===ma?ma+n:n}function l(n){return(n+="")[0]===ma?n.slice(1):n}function s(n){return c(n)in this._}function f(n){return(n=c(n))in this._&&delete this._[n]}function h(){var n=[];for(var t in this._)n.push(l(t));return n}function g(){var n=0;for(var t in this._)++n;return n}function p(){for(var n in this._)return!1;return!0}function v(){this._=Object.create(null)}function d(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function m(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ya.length;r>e;++e){var u=ya[e]+t;if(u in n)return u}}function y(){}function M(){}function x(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new a;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function b(){ta.event.preventDefault()}function _(){for(var n,t=ta.event;n=t.sourceEvent;)t=n;return t}function w(n){for(var t=new M,e=0,r=arguments.length;++e<r;)t[arguments[e]]=x(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=ta.event;u.target=n,ta.event=u,t[u.type].apply(e,r)}finally{ta.event=i}}},t}function S(n){return xa(n,ka),n}function k(n){return"function"==typeof n?n:function(){return ba(n,this)}}function E(n){return"function"==typeof n?n:function(){return _a(n,this)}}function A(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ta.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function N(n){return n.trim().replace(/\s+/g," ")}function C(n){return new RegExp("(?:^|\\s+)"+ta.requote(n)+"(?:\\s+|$)","g")}function z(n){return(n+"").trim().split(/^|\s+/)}function q(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=z(n).map(L);var u=n.length;return"function"==typeof t?r:e}function L(n){var t=C(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",N(u+" "+n))):e.setAttribute("class",N(u.replace(t," ")))}}function T(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function R(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function D(n){return"function"==typeof n?n:(n=ta.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function P(){var n=this.parentNode;n&&n.removeChild(this)}function U(n){return{__data__:n}}function j(n){return function(){return Sa(this,n)}}function F(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function H(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function O(n){return xa(n,Aa),n}function Y(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function I(n){var t=n.__transition__;t&&++t.active}function Z(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,ra(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+ta.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=V;a>0&&(n=n.slice(0,a));var l=Ca.get(n);return l&&(n=l,c=X),a?t?u:r:t?y:i}function V(n,t){return function(e){var r=ta.event;ta.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ta.event=r}}}function X(n,t){var e=V(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(){var n=".dragsuppress-"+ ++qa,t="click"+n,e=ta.select(oa).on("touchmove"+n,b).on("dragstart"+n,b).on("selectstart"+n,b);if(za){var r=ia.style,u=r[za];r[za]="none"}return function(i){if(e.on(n,null),za&&(r[za]=u),i){var o=function(){e.on(t,null)};e.on(t,function(){b(),o()},!0),setTimeout(o,0)}}}function B(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>La&&(oa.scrollX||oa.scrollY)){e=ta.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();La=!(u.f||u.e),e.remove()}return La?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function W(){return ta.event.changedTouches[0].identifier}function J(){return ta.event.target}function G(){return oa}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Da:Math.acos(n)}function tt(n){return n>1?ja:-1>n?-ja:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):bt(""+n,_t,at):new at(n,t,e)}function ct(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function lt(n,t,e){return this instanceof lt?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof lt?new lt(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=ta.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new lt(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=Fa)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof lt?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Ja,r=pt(r)*Ga,i=pt(i)*Ka,new mt(dt(3.2404542*u-1.5371385*r-.4985314*i),dt(-.969266*u+1.8760108*r+.041556*i),dt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new lt(Math.atan2(e,t)*Ha,Math.sqrt(t*t+e*e),n):new lt(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function dt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):bt(""+n,mt,ct):new mt(n,t,e)}function yt(n){return new mt(n>>16,255&n>>8,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=tc.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function _t(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new at(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=vt((.4124564*n+.3575761*t+.1804375*e)/Ja),u=vt((.2126729*n+.7151522*t+.072175*e)/Ga),i=vt((.0193339*n+.119192*t+.9503041*e)/Ka);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return n}function Nt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&qt(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=ta.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!oa.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=ta.event;ta.event=n;try{o.progress.call(i,c)}finally{ta.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ra(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},ta.rebind(i,o,"on"),null==r?i:i.get(zt(r))}function zt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function qt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Lt(){var n=Tt(),t=Rt()-n;t>24?(isFinite(t)&&(clearTimeout(ic),ic=setTimeout(Lt,t)),uc=0):(uc=1,ac(Lt))}function Tt(){var n=Date.now();for(oc=ec;oc;)n>=oc.t&&(oc.f=oc.c(n-oc.t)),oc=oc.n;return n}function Rt(){for(var n,t=ec,e=1/0;t;)t.f?t=n?n.n=t.n:ec=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return rc=n,e}function Dt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Pt(n,t){var e=Math.pow(10,3*va(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Ut(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],c=0;u>0&&a>0&&(c+a+1>t&&(a=Math.max(1,t-c)),i.push(n.substring(u-=a,u+a)),!((c+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:At;return function(n){var e=lc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=sc.get(g)||jt;var M=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var c=ta.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!l&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ft(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new hc(e-1)),1),e}function i(n,e){return t(n=new hc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{hc=Ft;var r=new Ft;return r._=n,o(r,t,e)}finally{hc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ot(n);return c.floor=c,c.round=Ot(r),c.ceil=Ot(u),c.offset=Ot(i),c.range=a,n}function Ot(n){return function(t,e){try{hc=Ft;var r=new Ft;return r._=t,n(r,e)._}finally{hc=Date}}}function Yt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(c,a)),null!=(u=pc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=N[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.slice(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&hc!==Ft,o=new(i?Ft:hc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(0|r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,l=e.length;c>a;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in pc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function c(n,t,r){return e(n,N.x.toString(),t,r)}function l(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{hc=Ft;var t=new hc;return t._=n,r(t)}finally{hc=Date}}var r=t(n);return e.parse=function(n){try{hc=Ft;var t=r.parse(n);return t&&t._}finally{hc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ce;var M=ta.map(),x=Zt(v),b=Vt(v),_=Zt(d),w=Vt(d),S=Zt(m),k=Vt(m),E=Zt(y),A=Vt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return It(n.getDate(),t,2)},e:function(n,t){return It(n.getDate(),t,2)},H:function(n,t){return It(n.getHours(),t,2)},I:function(n,t){return It(n.getHours()%12||12,t,2)},j:function(n,t){return It(1+fc.dayOfYear(n),t,3)},L:function(n,t){return It(n.getMilliseconds(),t,3)},m:function(n,t){return It(n.getMonth()+1,t,2)},M:function(n,t){return It(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return It(n.getSeconds(),t,2)},U:function(n,t){return It(fc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return It(fc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return It(n.getFullYear()%100,t,2)},Y:function(n,t){return It(n.getFullYear()%1e4,t,4)},Z:oe,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:ne,e:ne,H:ee,I:ee,j:te,L:ie,m:Qt,M:re,p:s,S:ue,U:$t,w:Xt,W:Bt,x:c,X:l,y:Jt,Y:Wt,Z:Gt,"%":ae};return t}function It(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Zt(n){return new RegExp("^(?:"+n.map(ta.requote).join("|")+")","i")}function Vt(n){for(var t=new a,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Xt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Bt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Wt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.y=Kt(+r[0]),e+r[0].length):-1}function Gt(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Kt(n){return n+(n>68?1900:2e3)}function Qt(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function ne(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function te(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function ee(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function re(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ue(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ie(n,t,e){vc.lastIndex=0;var r=vc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oe(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|va(t)/60,u=va(t)%60;return e+It(r,"0",2)+It(u,"0",2)}function ae(n,t,e){dc.lastIndex=0;var r=dc.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ce(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function le(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function fe(n,t){n&&xc.hasOwnProperty(n.type)&&xc[n.type](n,t)}function he(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ge(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)he(n[e],t,1);t.polygonEnd()}function pe(){function n(n,t){n*=Fa,t=t*Fa/2+Da/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);_c.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;wc.point=function(o,a){wc.point=n,r=(t=o)*Fa,u=Math.cos(a=(e=a)*Fa/2+Da/4),i=Math.sin(a)},wc.lineEnd=function(){n(t,e)}}function ve(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function me(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ye(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Me(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function be(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return va(n[0]-t[0])<Ta&&va(n[1]-t[1])<Ta}function we(n,t){n*=Fa;var e=Math.cos(t*=Fa);Se(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function Se(n,t,e){++Sc,Ec+=(n-Ec)/Sc,Ac+=(t-Ac)/Sc,Nc+=(e-Nc)/Sc}function ke(){function n(n,u){n*=Fa;var i=Math.cos(u*=Fa),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),l=Math.atan2(Math.sqrt((l=e*c-r*a)*l+(l=r*o-t*c)*l+(l=t*a-e*o)*l),t*o+e*a+r*c);kc+=l,Cc+=l*(t+(t=o)),zc+=l*(e+(e=a)),qc+=l*(r+(r=c)),Se(t,e,r)}var t,e,r;Dc.point=function(u,i){u*=Fa;var o=Math.cos(i*=Fa);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Dc.point=n,Se(t,e,r)}}function Ee(){Dc.point=we}function Ae(){function n(n,t){n*=Fa;var e=Math.cos(t*=Fa),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),l=u*c-i*a,s=i*o-r*c,f=r*a-u*o,h=Math.sqrt(l*l+s*s+f*f),g=r*o+u*a+i*c,p=h&&-nt(g)/h,v=Math.atan2(h,g);Lc+=p*l,Tc+=p*s,Rc+=p*f,kc+=v,Cc+=v*(r+(r=o)),zc+=v*(u+(u=a)),qc+=v*(i+(i=c)),Se(r,u,i)}var t,e,r,u,i;Dc.point=function(o,a){t=o,e=a,Dc.point=n,o*=Fa;var c=Math.cos(a*=Fa);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),Se(r,u,i)},Dc.lineEnd=function(){n(t,e),Dc.lineEnd=Ee,Dc.point=we}}function Ne(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ce(){return!0}function ze(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),l=new Le(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Le(r,n,null,!1),l=new Le(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),qe(i),qe(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qe(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function l(){y.point=o,d.lineEnd()}function s(n,t){v.push([n,t]);var e=u(n,t);x.point(e[0],e[1])}function f(){x.lineStart(),v=[]}function h(){s(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r)if(1&t){n=e[0];var u,r=n.length-1,o=-1;if(r>0){for(b||(i.polygonStart(),b=!0),i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);i.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Re))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=ta.merge(g);var n=He(m,p);g.length?(b||(i.polygonStart(),b=!0),ze(g,Pe,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=De(),x=t(M),b=!1;return y}}function Re(n){return n.length>1}function De(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:y,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Pe(n,t){return((n=n.x)[0]<0?n[1]-ja-Ta:ja-n[1])-((t=t.x)[0]<0?t[1]-ja-Ta:ja-t[1])}function Ue(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Da:-Da,c=va(i-e);va(c-Da)<Ta?(n.point(e,r=(r+o)/2>0?ja:-ja),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Da&&(va(e-u)<Ta&&(e-=u*Ta),va(i-a)<Ta&&(i-=a*Ta),r=je(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function je(n,t,e,r){var u,i,o=Math.sin(n-e);return va(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Fe(n,t,e,r){var u;if(null==n)u=e*ja,r.point(-Da,u),r.point(0,u),r.point(Da,u),r.point(Da,0),r.point(Da,-u),r.point(0,-u),r.point(-Da,-u),r.point(-Da,0),r.point(-Da,u);else if(va(n[0]-t[0])>Ta){var i=n[0]<t[0]?Da:-Da;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;_c.reset();for(var a=0,c=t.length;c>a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+Da/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+Da/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>Da,k=p*M;if(_c.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Pa:b,S^h>=e^m>=e){var E=me(ve(f),ve(n));xe(E);var A=me(u,E);xe(A);var N=(S^b>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Ta>i||Ta>i&&0>_c)^1&o}function Oe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Da:-Da),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=ve(n),u=ve(t),o=[1,0,0],a=me(r,u),c=de(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=me(o,a),p=Me(o,f),v=Me(a,h);ye(p,v);var d=g,m=de(p,d),y=de(d,d),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Me(d,(-m-x)/y);if(ye(b,p),b=be(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=va(A-Da)<Ta,C=N||Ta>A;if(!N&&k>E&&(_=k,k=E,E=_),C?N?k+E>0^b[1]<(va(b[0]-w)<Ta?k:E):k<=b[1]&&b[1]<=E:A>Da^(w<=b[0]&&b[0]<=S)){var z=Me(d,(-m+x)/y);return ye(z,p),[b,be(z)]}}}function u(t,e){var r=o?n:Da-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=va(i)>Ta,c=pr(n,6*Fa);return Te(t,e,c,o?[0,-n]:[-Da,n-Da])}function Ye(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function Ie(n,t,e,r){function u(r,u){return va(r[0]-n)<Ta?u>0?0:3:va(r[0]-e)<Ta?u>0?2:1:va(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&Q(l,i,n)>0&&++t:i[1]<=r&&Q(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=0/0}function g(){v&&(p(y,M),x&&w&&A.rejoin(),v.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Uc,Math.min(Uc,n)),t=Math.max(-Uc,Math.min(Uc,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,E=a,A=De(),N=Ye(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=ta.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ze(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return C}}function Ze(n){var t=0,e=Da/3,r=or(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Da/180,e=n[1]*Da/180):[180*(t/Da),180*(e/Da)]},u}function Ve(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Xe(){function n(n,t){Fc+=u*n-r*t,r=n,u=t}var t,e,r,u;Zc.point=function(i,o){Zc.point=n,t=r=i,e=u=o},Zc.lineEnd=function(){n(t,e)}}function $e(n,t){Hc>n&&(Hc=n),n>Yc&&(Yc=n),Oc>t&&(Oc=t),t>Ic&&(Ic=t)}function Be(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=We(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=We(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function We(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Ec+=n,Ac+=t,++Nc}function Ge(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Cc+=o*(t+n)/2,zc+=o*(e+r)/2,qc+=o,Je(t=n,e=r)}var t,e;Xc.point=function(r,u){Xc.point=n,Je(t=r,e=u)}}function Ke(){Xc.point=Je}function Qe(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Cc+=o*(r+n)/2,zc+=o*(u+t)/2,qc+=o,o=u*n-r*t,Lc+=o*(r+n),Tc+=o*(u+t),Rc+=3*o,Je(r=n,u=t)}var t,e,r,u;Xc.point=function(i,o){Xc.point=n,Je(t=r=i,e=u=o)},Xc.lineEnd=function(){n(t,e)}}function nr(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Pa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:y};return a}function tr(n){function t(n){return(a?r:e)(n)}function e(t){return ur(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=ve([e,r]),o=n(e,r);u(M,x,y,b,_,w,M=o[0],x=o[1],y=e,b=i[0],_=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=a+g,_=c+p,w=l+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),E=va(va(w)-1)<Ta||va(r-h)<Ta?(r+h)/2:Math.atan2(_,b),A=n(E,k),N=A[0],C=A[1],z=N-t,q=C-e,L=M*z-y*q; +(L*L/x>i||va((y*z+M*q)/x-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,N,C,E,b/=S,_/=S,w,d,m),m.point(N,C),u(N,C,E,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Fa),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function er(n){var t=tr(function(t,e){return n([t*Ha,e*Ha])});return function(n){return ar(t(n))}}function rr(n){this.stream=n}function ur(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ir(n){return or(function(){return n})()}function or(n){function t(n){return n=a(n[0]*Fa,n[1]*Fa),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ha,n[1]*Ha]}function r(){a=Ne(o=sr(m,y,M),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=tr(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,M=0,x=Pc,b=At,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=ar(x(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,Pc):Oe((_=+n)*Fa),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?Ie(n[0][0],n[0][1],n[1][0],n[1][1]):At,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Fa,d=n[1]%360*Fa,r()):[v*Ha,d*Ha]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Fa,y=n[1]%360*Fa,M=n.length>2?n[2]%360*Fa:0,r()):[m*Ha,y*Ha,M*Ha]},ta.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function ar(n){return ur(n,function(t,e){n.point(t*Fa,e*Fa)})}function cr(n,t){return[n,t]}function lr(n,t){return[n>Da?n-Pa:-Da>n?n+Pa:n,t]}function sr(n,t,e){return n?t||e?Ne(hr(n),gr(t,e)):hr(n):t||e?gr(t,e):lr}function fr(n){return function(t,e){return t+=n,[t>Da?t-Pa:-Da>t?t+Pa:t,e]}}function hr(n){var t=fr(n);return t.invert=fr(-n),t}function gr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),tt(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),tt(s*r-a*u)]},e}function pr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=vr(e,u),i=vr(e,i),(o>0?i>u:u>i)&&(u+=o*Pa)):(u=n+o*Pa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=be([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function vr(n,t){var e=ve(t);e[0]-=n,xe(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function dr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function mr(n,t,e){var r=ta.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function yr(n){return n.source}function Mr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ha,Math.atan2(o,Math.sqrt(r*r+u*u))*Ha]}:function(){return[n*Ha,t*Ha]};return p.distance=h,p}function br(){function n(n,u){var i=Math.sin(u*=Fa),o=Math.cos(u),a=va((n*=Fa)-t),c=Math.cos(a);$c+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Bc.point=function(u,i){t=u*Fa,e=Math.sin(i*=Fa),r=Math.cos(i),Bc.point=n},Bc.lineEnd=function(){Bc.point=Bc.lineEnd=y}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function wr(n,t){function e(n,t){o>0?-ja+Ta>t&&(t=-ja+Ta):t>ja-Ta&&(t=ja-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Da/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ja]},e):kr}function Sr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return va(u)<Ta?cr:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-K(u)*Math.sqrt(n*n+e*e)]},e)}function kr(n,t){return[n,Math.log(Math.tan(Da/4+t/2))]}function Er(n){var t,e=ir(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Da*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ar(n,t){return[Math.log(Math.tan(Da/4+t/2)),-n]}function Nr(n){return n[0]}function Cr(n){return n[1]}function zr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qr(n,t){return n[0]-t[0]||n[1]-t[1]}function Lr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Tr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function Rr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Dr(){eu(this),this.edge=this.site=this.circle=null}function Pr(n){var t=ol.pop()||new Dr;return t.site=n,t}function Ur(n){$r(n),rl.remove(n),ol.push(n),eu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Ur(n);for(var c=i;c.circle&&va(e-c.circle.x)<Ta&&va(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Ur(c),c=i;a.unshift(c),$r(c);for(var l=o;l.circle&&va(e-l.circle.x)<Ta&&va(r-l.circle.cy)<Ta;)o=l.N,a.push(l),Ur(l),l=o;a.push(l),$r(l);var s,f=a.length;for(s=1;f>s;++s)l=a[s],c=a[s-1],Qr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=Gr(c.site,l.site,null,u),Xr(c),Xr(l)}function Fr(n){for(var t,e,r,u,i=n.x,o=n.y,a=rl._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Or(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Pr(n);if(rl.insert(t,c),t||e){if(t===e)return $r(t),e=Pr(t.site),rl.insert(c,e),c.edge=e.edge=Gr(t.site,c.site),Xr(t),Xr(e),void 0;if(!e)return c.edge=Gr(t.site,c.site),void 0;$r(t),$r(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};Qr(e.edge,l,p,x),c.edge=Gr(l,n,null,x),e.edge=Gr(n,p,null,x),Xr(t),Xr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Or(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Yr(n){this.site=n,this.edges=[]}function Ir(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=el,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(va(r-t)>Ta||va(u-e)>Ta)&&(a.splice(o,0,new nu(Kr(i.site,s,va(r-f)<Ta&&p-u>Ta?{x:f,y:va(t-f)<Ta?e:p}:va(u-p)<Ta&&h-r>Ta?{x:va(e-p)<Ta?t:h,y:p}:va(r-h)<Ta&&u-g>Ta?{x:h,y:va(t-h)<Ta?e:g}:va(u-g)<Ta&&r-f>Ta?{x:va(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Zr(n,t){return t.angle-n.angle}function Vr(){eu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,l=r.y-a,s=i.x-o,f=i.y-a,h=2*(c*f-l*s);if(!(h>=-Ra)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=al.pop()||new Vr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=il._;M;)if(m.y<M.y||m.y===M.y&&m.x<=M.x){if(!M.L){y=M.P;break}M=M.L}else{if(!M.R){y=M;break}M=M.R}il.insert(y,m),y||(ul=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(ul=t.N),il.remove(t),al.push(t),eu(t),n.circle=null)}function Br(n){for(var t,e=tl,r=Ye(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Wr(t,n)||!r(t)||va(t.a.x-t.b.x)<Ta&&va(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Wr(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],l=t[1][1],s=n.l,f=n.r,h=s.x,g=s.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.y<c)return}else i={x:d,y:l};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.y<c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Gr(n,t,e,r){var u=new Jr(n,t);return tl.push(u),e&&Qr(u,n,t,e),r&&Qr(u,t,n,r),el[n.i].edges.push(new nu(u,n,t)),el[t.i].edges.push(new nu(u,t,n)),u}function Kr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,tl.push(r),r}function Qr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function nu(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function tu(){this._=null}function eu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ru(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function uu(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function iu(n){for(;n.L;)n=n.L;return n}function ou(n,t){var e,r,u,i=n.sort(au).pop();for(tl=[],el=new Array(n.length),rl=new tu,il=new tu;;)if(u=ul,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(el[i.i]=new Yr(i),Fr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;jr(u.arc)}t&&(Br(t),Ir(t));var o={cells:el,edges:tl};return rl=il=tl=el=null,o}function au(n,t){return t.y-n.y||t.x-n.x}function cu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function lu(n){return n.x}function su(n){return n.y}function fu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function hu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&hu(n,c[0],e,r,o,a),c[1]&&hu(n,c[1],o,r,u,a),c[2]&&hu(n,c[2],e,a,o,i),c[3]&&hu(n,c[3],o,a,u,i)}}function gu(n,t,e,r,u,i,o){var a,c=1/0;return function l(n,s,f,h,g){if(!(s>i||f>o||r>h||u>g)){if(p=n.point){var p,v=t-p[0],d=e-p[1],m=v*v+d*d;if(c>m){var y=Math.sqrt(c=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:l(n,s,f,x,b);break;case 1:l(n,x,f,h,b);break;case 2:l(n,s,b,x,g);break;case 3:l(n,x,b,h,g)}}}(n,r,u,i,o),a}function pu(n,t){n=ta.rgb(n),t=ta.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function vu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=yu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mu(n,t){var e,r,u,i=ll.lastIndex=sl.lastIndex=0,o=-1,a=[],c=[];for(n+="",t+="";(e=ll.exec(n))&&(r=sl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:du(e,r)})),i=sl.lastIndex;return i<t.length&&(u=t.slice(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,function(n){return t(n)+""}):function(){return t}:(t=c.length,function(n){for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function yu(n,t){for(var e,r=ta.interpolators.length;--r>=0&&!(e=ta.interpolators[r](n,t)););return e}function Mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(yu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function xu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function bu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function wu(n){return n*n}function Su(n){return n*n*n}function ku(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Eu(n){return function(t){return Math.pow(t,n)}}function Au(n){return 1-Math.cos(n*ja)}function Nu(n){return Math.pow(2,10*(n-1))}function Cu(n){return 1-Math.sqrt(1-n*n)}function zu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Pa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Pa/t)}}function qu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=ta.hcl(n),t=ta.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=ta.hsl(n),t=ta.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){n=ta.lab(n),t=ta.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Pu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Uu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fu(t),u=ju(t,e),i=Fu(Hu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ha,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ha:0}function ju(n,t){return n[0]*t[0]+n[1]*t[1]}function Fu(n){var t=Math.sqrt(ju(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Hu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ou(n,t){var e,r=[],u=[],i=ta.transform(n),o=ta.transform(t),a=i.translate,c=o.translate,l=i.rotate,s=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:du(a[0],c[0])},{i:3,x:du(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),l!=s?(l-s>180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Yu(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Iu(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Zu(n){for(var t=n.source,e=n.target,r=Xu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Vu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Xu(n,t){if(n===t)return n;for(var e=Vu(n),r=Vu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function $u(n){n.fixed|=2}function Bu(n){n.fixed&=-7}function Wu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Ju(n){n.fixed&=-5}function Gu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Gu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var l=t*e[n.point.index];n.charge+=n.pointCharge=l,r+=l*n.point.x,u+=l*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Ku(n,t){return ta.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ui,n}function Qu(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(u=n.children)&&(r=u.length))for(var r,u;--r>=0;)e.push(u[r])}function ni(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++o<u;)e.push(i[o]);for(;null!=(n=r.pop());)t(n)}function ti(n){return n.children}function ei(n){return n.value}function ri(n,t){return t.value-n.value}function ui(n){return ta.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ii(n){return n.x}function oi(n){return n.y}function ai(n,t,e){n.y0=t,n.y=e}function ci(n){return ta.range(n.length)}function li(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function si(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function fi(n){return n.reduce(hi,0)}function hi(n,t){return n+t[1]}function gi(n,t){return pi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function pi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function vi(n){return[ta.min(n),ta.max(n)]}function di(n,t){return n.value-t.value}function mi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function yi(n,t){n._pack_next=t,t._pack_prev=n}function Mi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function xi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(bi),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Si(r,u,i),t(i),mi(r,i),r._pack_prev=i,mi(i,u),u=r._pack_next,o=3;l>o;o++){Si(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Mi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Mi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?yi(r,u=a):yi(r=c,u),o--):(mi(r,i),u=i,t(i))}var m=(s+f)/2,y=(h+g)/2,M=0;for(o=0;l>o;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function bi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function wi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)wi(u[i],t,e,r)}function Si(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),l=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+l*i,e.y=n.y+c*i-l*u}else e.x=n.x+r,e.y=n.y}function ki(n,t){return n.parent==t.parent?1:2}function Ei(n){var t=n.children;return t.length?t[0]:n.t}function Ai(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ni(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Ci(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function zi(n,t,e){return n.a.parent===t.parent?n.a:e}function qi(n){return 1+ta.max(n,function(n){return n.y})}function Li(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ti(n){var t=n.children;return t&&t.length?Ti(t[0]):n}function Ri(n){var t,e=n.children;return e&&(t=e.length)?Ri(e[t-1]):n}function Di(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Pi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ui(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function ji(n){return n.rangeExtent?n.rangeExtent():Ui(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Hi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Oi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:bl}function Yi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=ta.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Ii(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Yi:Fi,c=r?Iu:Yu;return o=u(n,t,c,e),a=u(t,n,c,yu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Pu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return $i(n,t)},i.tickFormat=function(t,e){return Bi(n,t,e)},i.nice=function(t){return Vi(n,t),u()},i.copy=function(){return Ii(n,t,e,r)},u()}function Zi(n,t){return ta.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=Ui(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function $i(n,t){return ta.range.apply(ta,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var u=lc.exec(e);if(u.shift(),"s"===u[8]){var i=ta.formatPrefix(Math.max(va(r[0]),va(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=ta.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Ji(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return ta.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in _l?Math.abs(e-Wi(Math.max(va(t[0]),va(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Hi(r.map(u),e?Math:Sl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ui(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++<s;)for(var h=f-1;h>0;h--)o.push(i(l)*h);for(l=0;o[l]<a;l++);for(s=o.length;o[s-1]>c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return wl;arguments.length<2?t=wl:"function"!=typeof t&&(t=ta.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Gi(n.copy(),t,e,r)},Zi(o,n)}function Ki(n,t,e){function r(t){return n(u(t))}var u=Qi(t),i=Qi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return $i(e,n)},r.tickFormat=function(n,t){return Bi(e,n,t)},r.nice=function(n){return r.domain(Vi(e,n))},r.exponent=function(o){return arguments.length?(u=Qi(t=o),i=Qi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Ki(n.copy(),t,e)},Zi(r,n)}function Qi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function no(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return ta.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new a;for(var i,o=-1,c=r.length;++o<c;)u.has(i=r[o])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,o=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=(c+l)/2,0):(l-c)/(n.length-1+a);return i=r(c+s*a/2,s),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(u,a){arguments.length<2&&(a=0);var c=u[0],l=u[1],s=n.length<2?(c=l=Math.round((c+l)/2),0):0|(l-c)/(n.length-1+a);return i=r(c+Math.round(s*a/2+(l-c-(n.length-1+a)*s)/2),s),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=(f-s)/(n.length-a+2*c);return i=r(s+h*c,h),l&&i.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,a,c){arguments.length<2&&(a=0),arguments.length<3&&(c=a);var l=u[1]<u[0],s=u[l-0],f=u[1-l],h=Math.floor((f-s)/(n.length-a+2*c));return i=r(s+Math.round((f-s-(n.length-a)*h)/2),h),l&&i.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Ui(t.a[0])},e.copy=function(){return no(n,t)},e.domain(n)}function to(r,u){function i(){var n=0,t=u.length;for(a=[];++n<t;)a[n-1]=ta.quantile(r,n/t);return o}function o(n){return isNaN(n=+n)?void 0:u[ta.bisect(a,n)]}var a;return o.domain=function(u){return arguments.length?(r=u.map(t).filter(e).sort(n),i()):r},o.range=function(n){return arguments.length?(u=n,i()):u},o.quantiles=function(){return a},o.invertExtent=function(n){return n=u.indexOf(n),0>n?[0/0,0/0]:[n>0?a[n-1]:r[0],n<a.length?a[n]:r[r.length-1]]},o.copy=function(){return to(r,u)},i()}function eo(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return eo(n,t,e)},u()}function ro(n,t){function e(e){return e>=e?t[ta.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ro(n,t)},e}function uo(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return $i(n,t)},t.tickFormat=function(t,e){return Bi(n,t,e)},t.copy=function(){return uo(n)},t}function io(){return 0}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function lo(n){return n.endAngle}function so(n){return n&&n.padAngle}function fo(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function ho(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),c=a*o,l=-a*i,s=n[0]+c,f=n[1]+l,h=t[0]+c,g=t[1]+l,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,E=_-p,A=w-v,N=S-p,C=k-v;return E*E+A*A>N*N+C*C&&(_=S,w=k),[[_-c,w-l],[_*e/M,w*e/M]]}function go(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?s.push([+g.call(this,c,f),+p.call(this,c,f)]):s.length&&(o(),s=[]);return s.length&&o(),l.length?l.join(""):null}var e=Nr,r=Cr,u=Ce,i=po,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=zl.get(n)||po).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function po(n){return n.join("L")}function vo(n){return po(n)+"Z"}function mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function yo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function Mo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function xo(n,t){return n.length<4?po(n):n[1]+wo(n.slice(1,-1),So(n,t))}function bo(n,t){return n.length<3?po(n):n[0]+wo((n.push(n[0]),n),So([n[n.length-2]].concat(n,[n[1]]),t))}function _o(n,t){return n.length<3?po(n):n[0]+wo(n,So(n,t))}function wo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return po(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l<t.length;l++,c++)i=n[c],a=t[l],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var s=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+s[0]+","+s[1]}return r}function So(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function ko(n){if(n.length<3)return po(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Co(Tl,o),",",Co(Tl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),zo(c,o,a);return n.pop(),c.push("L",r),c.join("")}function Eo(n){if(n.length<4)return po(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Co(Tl,i)+","+Co(Tl,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),zo(e,i,o);return e.join("")}function Ao(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Co(Tl,o),",",Co(Tl,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),zo(t,o,a);return t.join("")}function No(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,l=-1;++l<=e;)r=n[l],u=l/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return ko(n)}function Co(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function zo(n,t,e){n.push("C",Co(ql,t),",",Co(ql,e),",",Co(Ll,t),",",Co(Ll,e),",",Co(Tl,t),",",Co(Tl,e))}function qo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Lo(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=qo(u,i);++t<e;)r[t]=(o+(o=qo(u=i,i=n[t+1])))/2;return r[t]=o,r}function To(n){for(var t,e,r,u,i=[],o=Lo(n),a=-1,c=n.length-1;++a<c;)t=qo(n[a],n[a+1]),va(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Ro(n){return n.length<3?po(n):n[0]+wo(n,To(n))}function Do(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]-ja,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Po(n){function t(t){function c(){v.push("M",a(n(m),f),s,l(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,M=t.length,x=Et(e),b=Et(u),_=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<M;)o.call(this,h=t[y],y)?(d.push([g=+x.call(this,h,y),p=+b.call(this,h,y)]),m.push([+_.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Cr,o=Ce,a=po,c=a.key,l=a,s="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=zl.get(n)||po).key,l=a.reverse||a,s=a.closed?"M":"L",t):c +},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Uo(n){return n.radius}function jo(n){return[n.x,n.y]}function Fo(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-ja;return[e*Math.cos(r),e*Math.sin(r)]}}function Ho(){return 64}function Oo(){return"circle"}function Yo(n){var t=Math.sqrt(n/Da);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Io(n,t,e){return xa(n,Fl),n.namespace=t,n.id=e,n}function Zo(n,t,e,r){var u=n.id,i=n.namespace;return H(n,"function"==typeof e?function(n,o,a){n[i][u].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[i][u].tween.set(t,e)}))}function Vo(n){return null==n&&(n=""),function(){this.textContent=n}}function Xo(n){return null==n?"__transition__":"__transition_"+n+"__"}function $o(n,t,e,r,u){var i=n[e]||(n[e]={active:0,count:0}),o=i[r];if(!o){var c=u.time;o=i[r]={tween:new a,time:c,delay:u.delay,duration:u.duration,ease:u.ease},u=null,++i.count,ta.timer(function(u){function a(e){return i.active>r?s(!1):(i.active=r,o.event&&o.event.start.call(n,g,t),o.tween.forEach(function(e,r){(r=r.call(n,g,t))&&d.push(r)}),h=o.ease,f=o.duration,ta.timer(function(){return v.c=l(e||1)?Ce:l,1},0,c),void 0)}function l(t){if(i.active!==r)return s(!1);for(var e=t/f,u=h(e),o=d.length;o>0;)d[--o].call(n,u);return e>=1?s(!0):void 0}function s(u){return o.event&&o.event[u?"end":"interrupt"].call(n,g,t),--i.count?delete i[r]:delete n[e],1}var f,h,g=n.__data__,p=o.delay,v=oc,d=[];return v.t=p+c,u>=p?a(u-p):(v.c=a,void 0)},0,c)}}function Bo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Jo(n){return n.toISOString()}function Go(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=ta.bisect(Bl,u);return i==Bl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Bl[i-1]<Bl[i]/u?i-1:i]:[Gl,Xi(n,e)[2]]}return r.invert=function(t){return Ko(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Ko)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Ko(+e+1),t).length}var i=r.domain(),o=Ui(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Hi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Ko(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ko(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ui(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Ko(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Go(n.copy(),t,e)},Zi(r,n)}function Ko(n){return new Date(n)}function Qo(n){return JSON.parse(n.responseText)}function na(n){var t=ua.createRange();return t.selectNode(ua.body),t.createContextualFragment(n.responseText)}var ta={version:"3.5.0"};Date.now||(Date.now=function(){return+new Date});var ea=[].slice,ra=function(n){return ea.call(n)},ua=document,ia=ua.documentElement,oa=window;try{ra(ia.childNodes)[0].nodeType}catch(aa){ra=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{ua.createElement("div").style.setProperty("opacity",0,"")}catch(ca){var la=oa.Element.prototype,sa=la.setAttribute,fa=la.setAttributeNS,ha=oa.CSSStyleDeclaration.prototype,ga=ha.setProperty;la.setAttribute=function(n,t){sa.call(this,n,t+"")},la.setAttributeNS=function(n,t,e){fa.call(this,n,t,e+"")},ha.setProperty=function(n,t,e){ga.call(this,n,t+"",e)}}ta.ascending=n,ta.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},ta.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},ta.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i;)if(null!=(r=n[u])&&r>=r){e=r;break}for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=r;break}for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},ta.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o;)if(null!=(r=n[i])&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=u=r;break}for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},ta.sum=function(n,t){var r,u=0,i=n.length,o=-1;if(1===arguments.length)for(;++o<i;)e(r=+n[o])&&(u+=r);else for(;++o<i;)e(r=+t.call(n,n[o],o))&&(u+=r);return u},ta.mean=function(n,r){var u,i=0,o=n.length,a=-1,c=o;if(1===arguments.length)for(;++a<o;)e(u=t(n[a]))?i+=u:--c;else for(;++a<o;)e(u=t(r.call(n,n[a],a)))?i+=u:--c;return c?i/c:void 0},ta.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},ta.median=function(r,u){var i,o=[],a=r.length,c=-1;if(1===arguments.length)for(;++c<a;)e(i=t(r[c]))&&o.push(i);else for(;++c<a;)e(i=t(u.call(r,r[c],c)))&&o.push(i);return o.length?ta.quantile(o.sort(n),.5):void 0};var pa=r(n);ta.bisectLeft=pa.left,ta.bisect=ta.bisectRight=pa.right,ta.bisector=function(t){return r(1===t.length?function(e,r){return n(t(e),r)}:t)},ta.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=0|Math.random()*i--,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},ta.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ta.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},ta.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ta.min(arguments,u),e=new Array(t);++n<t;)for(var r,i=-1,o=e[n]=new Array(r);++i<r;)o[i]=arguments[i][n];return e},ta.transpose=function(n){return ta.zip.apply(ta,n)},ta.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ta.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ta.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ta.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var va=Math.abs;ta.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,u=[],o=i(va(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)u.push(r/o);else for(;(r=n+e*++a)<t;)u.push(r/o);return u},ta.map=function(n,t){var e=new a;if(n instanceof a)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,u=-1,i=n.length;if(1===arguments.length)for(;++u<i;)e.set(u,n[u]);else for(;++u<i;)e.set(t.call(n,r=n[u],u),r)}else for(var o in n)e.set(o,n[o]);return e};var da="__proto__",ma="\x00";o(a,{has:s,get:function(n){return this._[c(n)]},set:function(n,t){return this._[c(n)]=t},remove:f,keys:h,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:l(t),value:this._[t]});return n},size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t),this._[t])}}),ta.nest=function(){function n(t,o,c){if(c>=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,v=i[c++],d=new a;++g<p;)(h=d.get(l=v(s=o[g])))?h.push(s):d.set(l,[s]);return t?(s=t(),f=function(e,r){s.set(e,n(t,r,c))}):(s={},f=function(e,r){s[e]=n(t,r,c)}),d.forEach(f),s}function t(n,e){if(e>=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(ta.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},ta.set=function(n){var t=new v;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},o(v,{has:s,add:function(n){return this._[c(n+="")]=!0,n},remove:f,values:h,size:g,empty:p,forEach:function(n){for(var t in this._)n.call(this,l(t))}}),ta.behavior={},ta.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=d(n,t,t[e]);return n};var ya=["webkit","ms","moz","Moz","o","O"];ta.dispatch=function(){for(var n=new M,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=x(n);return n},M.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ta.event=null,ta.requote=function(n){return n.replace(Ma,"\\$&")};var Ma=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,xa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},_a=function(n,t){return t.querySelectorAll(n)},wa=ia.matches||ia[m(ia,"matchesSelector")],Sa=function(n,t){return wa.call(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},_a=Sizzle,Sa=Sizzle.matchesSelector),ta.selection=function(){return Na};var ka=ta.selection.prototype=[];ka.select=function(n){var t,e,r,u,i=[];n=k(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,l=r.length;++c<l;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return S(i)},ka.selectAll=function(n){var t,e,r=[];n=E(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=ra(n.call(e,e.__data__,a,u))),t.parentNode=e);return S(r)};var Ea={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ta.ns={prefix:Ea,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.slice(0,t),n=n.slice(t+1)),Ea.hasOwnProperty(e)?{space:Ea[e],local:n}:n}},ka.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ta.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},ka.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!C(n[u]).test(t))return!1;return!0}for(t in n)this.each(q(t,n[t]));return this}return this.each(q(n,t))},ka.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(T(e,n[e],t));return this}if(2>r)return oa.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(T(n,t,e))},ka.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},ka.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ka.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ka.append=function(n){return n=D(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ka.insert=function(n,t){return n=D(n),t=k(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ka.remove=function(){return this.each(P)},ka.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),v=new Array(o);if(t){var d,m=new a,y=new Array(o);for(r=-1;++r<o;)m.has(d=t.call(u=n[r],u.__data__,r))?v[r]=u:m.set(d,u),y[r]=d;for(r=-1;++r<f;)(u=m.get(d=t.call(e,i=e[r],r)))?u!==!0&&(g[r]=u,u.__data__=i):p[r]=U(i),m.set(d,!0);for(r=-1;++r<o;)m.get(y[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=U(i);for(;f>r;++r)p[r]=U(e[r]);for(;o>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++i<o;)(u=r[i])&&(n[i]=u.__data__);return n}var c=O([]),l=S([]),s=S([]);if("function"==typeof n)for(;++i<o;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<o;)e(r=this[i],n);return l.enter=function(){return c},l.exit=function(){return s},l},ka.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},ka.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return S(u)},ka.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ka.sort=function(n){n=F.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},ka.each=function(n){return H(this,function(t,e,r){n.call(t,t.__data__,e,r)})},ka.call=function(n){var t=ra(arguments);return n.apply(t[0]=this,t),this},ka.empty=function(){return!this.node()},ka.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ka.size=function(){var n=0;return H(this,function(){++n}),n};var Aa=[];ta.selection.enter=O,ta.selection.enter.prototype=Aa,Aa.append=ka.append,Aa.empty=ka.empty,Aa.node=ka.node,Aa.call=ka.call,Aa.size=ka.size,Aa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var l=-1,s=u.length;++l<s;)(i=u[l])?(t.push(r[l]=e=n.call(u.parentNode,i.__data__,l,a)),e.__data__=i.__data__):t.push(null)}return S(o)},Aa.insert=function(n,t){return arguments.length<2&&(t=Y(this)),ka.insert.call(this,n,t)},ka.transition=function(n){for(var t,e,r=Dl||++Hl,u=Xo(n),i=[],o=Pl||{time:Date.now(),ease:ku,delay:0,duration:250},a=-1,c=this.length;++a<c;){i.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(e=l[s])&&$o(e,s,u,r,o),t.push(e)}return Io(i,u,r)},ka.interrupt=function(n){var t=Xo(n);return this.each(function(){var n=this[t];n&&++n.active})},ta.select=function(n){var t=["string"==typeof n?ba(n,ua):n];return t.parentNode=ia,S([t])},ta.selectAll=function(n){var t=ra("string"==typeof n?_a(n,ua):n);return t.parentNode=ia,S([t])};var Na=ta.select(ia);ka.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(Z(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(Z(n,t,e))};var Ca=ta.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ca.forEach(function(n){"on"+n in ua&&Ca.remove(n)});var za="onselectstart"in ua?null:m(ia.style,"userSelect"),qa=0;ta.mouse=function(n){return B(n,_())};var La=/WebKit/.test(oa.navigator.userAgent)?-1:0;ta.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=_().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return B(n,r)},ta.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&ta.event.target===f),g({type:"dragend"}))}var l,s=this,f=ta.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=ta.select(u()).on(i+d,a).on(o+d,c),y=$(),M=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-M[0],l.y-M[1]]):l=[0,0],g({type:"dragstart"})}}var e=w(n,"drag","dragstart","dragend"),r=null,u=t(y,ta.mouse,G,"mousemove","mouseup"),i=t(W,ta.touch,J,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ta.rebind(n,e,"on")},ta.touches=function(n,t){return arguments.length<2&&(t=_().touches),t?ra(t).map(function(t){var e=B(n,t);return e.identifier=t.identifier,e}):[]};var Ta=1e-6,Ra=Ta*Ta,Da=Math.PI,Pa=2*Da,Ua=Pa-Ta,ja=Da/2,Fa=Da/180,Ha=180/Da,Oa=Math.SQRT2,Ya=2,Ia=4;ta.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(v),o=i/(Ya*h)*(e*ut(Oa*t+v)-et(v));return[r+o*l,u+o*s,i*e/rt(Oa*t+v)]}return[r+n*l,u+n*s,i*Math.exp(Oa*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ia*f)/(2*i*Ya*h),p=(c*c-i*i-Ia*f)/(2*c*Ya*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Oa;return e.duration=1e3*y,e},ta.behavior.zoom=function(){function n(n){n.on(z,s).on(Xa+".zoom",h).on("dblclick.zoom",g).on(T,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function r(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=e(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function i(t,e,i,o){t.__chart__={x:k.x,y:k.y,k:k.k},r(Math.pow(2,o)),u(v=e,i),t=ta.select(t),N>0&&(t=t.transition().duration(N)),t.call(n.event)}function o(){x&&x.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),S&&S.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function a(n){C++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--C||n({type:"zoomend"}),v=null}function s(){function n(){s=1,u(ta.mouse(r),h),c(o)}function e(){f.on(q,null).on(L,null),g(s&&ta.event.target===i),l(o)}var r=this,i=ta.event.target,o=R.of(r,arguments),s=0,f=ta.select(oa).on(q,n).on(L,e),h=t(ta.mouse(r)),g=$();I(r),a(o)}function f(){function n(){var n=ta.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=t(n))}),n}function e(){var t=ta.event.target;ta.select(t).on(x,o).on(_,h),w.push(t);for(var e=ta.event.changedTouches,r=0,u=e.length;u>r;++r)d[e[r].identifier]=null;var a=n(),c=Date.now();if(1===a.length){if(500>c-y){var l=a[0];i(p,l,d[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),b()}y=c}else if(a.length>1){var l=a[0],s=a[1],f=l[0]-s[0],g=l[1]-s[1];m=f*f+g*g}}function o(){var n,t,e,i,o=ta.touches(p);I(p);for(var a=0,l=o.length;l>a;++a,i=null)if(e=o[a],i=d[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}y=null,u(n,t),c(v)}function h(){if(ta.event.touches.length){for(var t=ta.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}ta.selectAll(w).on(M,null),S.on(z,s).on(T,f),E(),l(v)}var g,p=this,v=R.of(p,arguments),d={},m=0,M=".zoom-"+ta.event.changedTouches[0].identifier,x="touchmove"+M,_="touchend"+M,w=[],S=ta.select(p),E=$();e(),a(v),S.on(z,null).on(T,e)}function h(){var n=R.of(this,arguments);m?clearTimeout(m):(p=t(v=d||ta.mouse(this)),I(this),a(n)),m=setTimeout(function(){m=null,l(n)},50),b(),r(Math.pow(2,.002*Za())*k.k),u(v,p),c(n)}function g(){var n=ta.mouse(this),e=Math.log(k.k)/Math.LN2;i(this,n,t(n),ta.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var p,v,d,m,y,M,x,_,S,k={x:0,y:0,k:1},E=[960,500],A=Va,N=250,C=0,z="mousedown.zoom",q="mousemove.zoom",L="mouseup.zoom",T="touchstart.zoom",R=w(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=R.of(this,arguments),t=k;Dl?ta.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},a(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=ta.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,a(n),c(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Va:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(d=t&&[+t[0],+t[1]],n):d},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(N=+t,n):N},n.x=function(t){return arguments.length?(x=t,M=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(S=t,_=t.copy(),k={x:0,y:0,k:1},n):S},ta.rebind(n,R,"on")};var Za,Va=[0,1/0],Xa="onwheel"in ua?(Za=function(){return-ta.event.deltaY*(ta.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ua?(Za=function(){return ta.event.wheelDelta},"mousewheel"):(Za=function(){return-ta.event.detail},"MozMousePixelScroll");ta.color=ot,ot.prototype.toString=function(){return this.rgb()+""},ta.hsl=at;var $a=at.prototype=new ot;$a.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},$a.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},$a.rgb=function(){return ct(this.h,this.s,this.l)},ta.hcl=lt;var Ba=lt.prototype=new ot;Ba.brighter=function(n){return new lt(this.h,this.c,Math.min(100,this.l+Wa*(arguments.length?n:1)))},Ba.darker=function(n){return new lt(this.h,this.c,Math.max(0,this.l-Wa*(arguments.length?n:1)))},Ba.rgb=function(){return st(this.h,this.c,this.l).rgb()},ta.lab=ft;var Wa=18,Ja=.95047,Ga=1,Ka=1.08883,Qa=ft.prototype=new ot;Qa.brighter=function(n){return new ft(Math.min(100,this.l+Wa*(arguments.length?n:1)),this.a,this.b)},Qa.darker=function(n){return new ft(Math.max(0,this.l-Wa*(arguments.length?n:1)),this.a,this.b)},Qa.rgb=function(){return ht(this.l,this.a,this.b)},ta.rgb=mt;var nc=mt.prototype=new ot;nc.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},nc.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},nc.hsl=function(){return _t(this.r,this.g,this.b)},nc.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var tc=ta.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});tc.forEach(function(n,t){tc.set(n,yt(t))}),ta.functor=Et,ta.xhr=Nt(At),ta.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++<l;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}s=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++s):10===r&&(u=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;l>s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new v,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},ta.csv=ta.dsv(",","text/csv"),ta.tsv=ta.dsv(" ","text/tab-separated-values");var ec,rc,uc,ic,oc,ac=oa[m(oa,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ta.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};rc?rc.n=i:ec=i,rc=i,uc||(ic=clearTimeout(ic),uc=1,ac(Lt))},ta.timer.flush=function(){Tt(),Rt()},ta.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var cc=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Pt);ta.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=ta.round(n,Dt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),cc[8+e/3]};var lc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,sc=ta.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ta.round(n,Dt(n,t))).toFixed(Math.max(0,Math.min(20,Dt(n*(1+1e-15),t))))}}),fc=ta.time={},hc=Date;Ft.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){gc.setUTCDate.apply(this._,arguments)},setDay:function(){gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){gc.setTime.apply(this._,arguments)}};var gc=Date.prototype;fc.year=Ht(function(n){return n=fc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),fc.years=fc.year.range,fc.years.utc=fc.year.utc.range,fc.day=Ht(function(n){var t=new hc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),fc.days=fc.day.range,fc.days.utc=fc.day.utc.range,fc.dayOfYear=function(n){var t=fc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=fc[n]=Ht(function(n){return(n=fc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});fc[n+"s"]=e.range,fc[n+"s"].utc=e.utc.range,fc[n+"OfYear"]=function(n){var e=fc.year(n).getDay();return Math.floor((fc.dayOfYear(n)+(e+t)%7)/7)}}),fc.week=fc.sunday,fc.weeks=fc.sunday.range,fc.weeks.utc=fc.sunday.utc.range,fc.weekOfYear=fc.sundayOfYear;var pc={"-":"",_:" ",0:"0"},vc=/^\s*\d+/,dc=/^%/;ta.locale=function(n){return{numberFormat:Ut(n),timeFormat:Yt(n)}};var mc=ta.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ta.format=mc.numberFormat,ta.geo={},le.prototype={s:0,t:0,add:function(n){se(n,this.t,yc),se(yc.s,this.s,this),this.s?this.t+=yc.t:this.s=yc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var yc=new le;ta.geo.stream=function(n,t){n&&Mc.hasOwnProperty(n.type)?Mc[n.type](n,t):fe(n,t)};var Mc={Feature:function(n,t){fe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)fe(e[r].geometry,t)}},xc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){he(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t,0)},Polygon:function(n,t){ge(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ge(e[r],t) +},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)fe(e[r],t)}};ta.geo.area=function(n){return bc=0,ta.geo.stream(n,wc),bc};var bc,_c=new le,wc={sphere:function(){bc+=4*Da},point:y,lineStart:y,lineEnd:y,polygonStart:function(){_c.reset(),wc.lineStart=pe},polygonEnd:function(){var n=2*_c;bc+=0>n?4*Da+n:n,wc.lineStart=wc.lineEnd=wc.point=y}};ta.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=ve([t*Fa,e*Fa]);if(m){var u=me(m,r),i=[u[1],-u[0],0],o=me(i,u);xe(o),o=be(o);var c=t-p,l=c>0?1:-1,v=o[0]*Ha*l,d=va(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Ha;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Ha;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=va(r)>180?r+(r>0?360:-360):r}else v=n,d=e;wc.point(n,e),t(n,e)}function i(){wc.lineStart()}function o(){u(v,d),wc.lineEnd(),va(y)>Ta&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var s,f,h,g,p,v,d,m,y,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=u,b.lineStart=i,b.lineEnd=o,y=0,wc.polygonStart()},polygonEnd:function(){wc.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>_c?(s=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],ta.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),ta.geo.centroid=function(n){Sc=kc=Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,Dc);var t=Lc,e=Tc,r=Rc,u=t*t+e*e+r*r;return Ra>u&&(t=Cc,e=zc,r=qc,Ta>kc&&(t=Ec,e=Ac,r=Nc),u=t*t+e*e+r*r,Ra>u)?[0/0,0/0]:[Math.atan2(e,t)*Ha,tt(r/Math.sqrt(u))*Ha]};var Sc,kc,Ec,Ac,Nc,Cc,zc,qc,Lc,Tc,Rc,Dc={sphere:y,point:we,lineStart:ke,lineEnd:Ee,polygonStart:function(){Dc.lineStart=Ae},polygonEnd:function(){Dc.lineStart=ke}},Pc=Te(Ce,Ue,Fe,[-Da,-Da/2]),Uc=1e9;ta.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ie(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ta.geo.conicEqualArea=function(){return Ze(Ve)}).raw=Ve,ta.geo.albers=function(){return ta.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ta.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=ta.geo.albers(),o=ta.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ta.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ta,f+.12*l+Ta],[s-.214*l-Ta,f+.234*l-Ta]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ta,f+.166*l+Ta],[s-.115*l-Ta,f+.234*l-Ta]]).stream(c).point,n},n.scale(1070)};var jc,Fc,Hc,Oc,Yc,Ic,Zc={point:y,lineStart:y,lineEnd:y,polygonStart:function(){Fc=0,Zc.lineStart=Xe},polygonEnd:function(){Zc.lineStart=Zc.lineEnd=Zc.point=y,jc+=va(Fc/2)}},Vc={point:$e,lineStart:y,lineEnd:y,polygonStart:y,polygonEnd:y},Xc={point:Je,lineStart:Ge,lineEnd:Ke,polygonStart:function(){Xc.lineStart=Qe},polygonEnd:function(){Xc.point=Je,Xc.lineStart=Ge,Xc.lineEnd=Ke}};ta.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),ta.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return jc=0,ta.geo.stream(n,u(Zc)),jc},n.centroid=function(n){return Ec=Ac=Nc=Cc=zc=qc=Lc=Tc=Rc=0,ta.geo.stream(n,u(Xc)),Rc?[Lc/Rc,Tc/Rc]:qc?[Cc/qc,zc/qc]:Nc?[Ec/Nc,Ac/Nc]:[0/0,0/0]},n.bounds=function(n){return Yc=Ic=-(Hc=Oc=1/0),ta.geo.stream(n,u(Vc)),[[Hc,Oc],[Yc,Ic]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||er(n):At,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Be:new nr(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(ta.geo.albersUsa()).context(null)},ta.geo.transform=function(n){return{stream:function(t){var e=new rr(t);for(var r in n)e[r]=n[r];return e}}},rr.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ta.geo.projection=ir,ta.geo.projectionMutator=or,(ta.geo.equirectangular=function(){return ir(cr)}).raw=cr.invert=cr,ta.geo.rotation=function(n){function t(t){return t=n(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t}return n=sr(n[0]%360*Fa,n[1]*Fa,n.length>2?n[2]*Fa:0),t.invert=function(t){return t=n.invert(t[0]*Fa,t[1]*Fa),t[0]*=Ha,t[1]*=Ha,t},t},lr.invert=cr,ta.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*Fa,-n[1]*Fa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ha,n[1]*=Ha}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=pr((t=+r)*Fa,u*Fa),n):t},n.precision=function(r){return arguments.length?(e=pr(t*Fa,(u=+r)*Fa),n):u},n.angle(90)},ta.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Fa,u=n[1]*Fa,i=t[1]*Fa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},ta.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ta.range(Math.ceil(i/d)*d,u,d).map(h).concat(ta.range(Math.ceil(l/m)*m,c,m).map(g)).concat(ta.range(Math.ceil(r/p)*p,e,p).filter(function(n){return va(n%d)>Ta}).map(s)).concat(ta.range(Math.ceil(a/v)*v,o,v).filter(function(n){return va(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=mr(r,e,y),h=dr(l,c,90),g=mr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},ta.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=yr,u=Mr;return n.distance=function(){return ta.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},ta.geo.interpolate=function(n,t){return xr(n[0]*Fa,n[1]*Fa,t[0]*Fa,t[1]*Fa)},ta.geo.length=function(n){return $c=0,ta.geo.stream(n,Bc),$c};var $c,Bc={sphere:y,point:y,lineStart:br,lineEnd:y,polygonStart:y,polygonEnd:y},Wc=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ta.geo.azimuthalEqualArea=function(){return ir(Wc)}).raw=Wc;var Jc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},At);(ta.geo.azimuthalEquidistant=function(){return ir(Jc)}).raw=Jc,(ta.geo.conicConformal=function(){return Ze(wr)}).raw=wr,(ta.geo.conicEquidistant=function(){return Ze(Sr)}).raw=Sr;var Gc=_r(function(n){return 1/n},Math.atan);(ta.geo.gnomonic=function(){return ir(Gc)}).raw=Gc,kr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ja]},(ta.geo.mercator=function(){return Er(kr)}).raw=kr;var Kc=_r(function(){return 1},Math.asin);(ta.geo.orthographic=function(){return ir(Kc)}).raw=Kc;var Qc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ta.geo.stereographic=function(){return ir(Qc)}).raw=Qc,Ar.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ja]},(ta.geo.transverseMercator=function(){var n=Er(Ar),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ar,ta.geom={},ta.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(qr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=zr(a),s=zr(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t<s.length-h;++t)g.push(n[a[s[t]][2]]);return g}var e=Nr,r=Cr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ta.geom.polygon=function(n){return xa(n,nl),n};var nl=ta.geom.polygon.prototype=[];nl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},nl.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},nl.clip=function(n){for(var t,e,r,u,i,o,a=Rr(n),c=-1,l=this.length-Rr(this),s=this[l-1];++c<l;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Lr(o,s,u)?(Lr(i,s,u)||n.push(Tr(i,o,s,u)),n.push(o)):Lr(i,s,u)&&n.push(Tr(i,o,s,u)),i=o;a&&n.push(n[0]),s=u}return n};var tl,el,rl,ul,il,ol=[],al=[];Yr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Zr),t.length},nu.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},tu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=iu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,uu(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(uu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?iu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,uu(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,ru(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,uu(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ru(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,uu(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},ta.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return ou(e(n),a).cells.forEach(function(e,a){var c=e.edges,l=e.site,s=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):l.x>=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Cr,i=r,o=u,a=cl;return n?t(n):(t.links=function(n){return ou(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ou(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Zr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c<l;)u=s,i=f,s=a[c].edge,f=s.l===o?s.r:s.l,r<i.i&&r<f.i&&cu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?cl:n,t):a===cl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===cl?null:a&&a[1]},t)};var cl=[[-1e6,-1e6],[1e6,1e6]];ta.geom.delaunay=function(n){return ta.geom.voronoi().triangles(n)},ta.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,s=n.y;if(null!=c)if(va(c-e)+va(s-r)<.01)l(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,l(n,f,c,s,u,i,o,a),l(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else l(n,t,e,r,u,i,o,a)}function l(n,t,e,r,u,o,a,c){var l=.5*(u+a),s=.5*(o+c),f=e>=l,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=fu()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,M=Et(a),x=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.x<v&&(v=s.x),s.y<d&&(d=s.y),s.x>m&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=fu();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){hu(n,k,v,d,m,y)},k.find=function(n){return gu(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=s=null,k}var o,a=Nr,c=Cr;return(o=arguments.length)?(a=lu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},ta.interpolateRgb=pu,ta.interpolateObject=vu,ta.interpolateNumber=du,ta.interpolateString=mu;var ll=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,sl=new RegExp(ll.source,"g");ta.interpolate=yu,ta.interpolators=[function(n,t){var e=typeof t;return("string"===e?tc.has(t)||/^(#|rgb\(|hsl\()/.test(t)?pu:mu:t instanceof ot?pu:Array.isArray(t)?Mu:"object"===e&&isNaN(t)?vu:du)(n,t)}],ta.interpolateArray=Mu;var fl=function(){return At},hl=ta.map({linear:fl,poly:Eu,quad:function(){return wu},cubic:function(){return Su},sin:function(){return Au},exp:function(){return Nu},circle:function(){return Cu},elastic:zu,back:qu,bounce:function(){return Lu}}),gl=ta.map({"in":At,out:bu,"in-out":_u,"out-in":function(n){return _u(bu(n))}});ta.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=hl.get(e)||fl,r=gl.get(r)||At,xu(r(e.apply(null,ea.call(arguments,1))))},ta.interpolateHcl=Tu,ta.interpolateHsl=Ru,ta.interpolateLab=Du,ta.interpolateRound=Pu,ta.transform=function(n){var t=ua.createElementNS(ta.ns.prefix.svg,"g");return(ta.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Uu(e?e.matrix:pl)})(n)},Uu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var pl={a:1,b:0,c:0,d:1,e:0,f:0};ta.interpolateTransform=Ou,ta.layout={},ta.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Zu(n[e]));return t}},ta.layout.chord=function(){function n(){var n,l,f,h,g,p={},v=[],d=ta.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(l=0,g=-1;++g<i;)l+=u[h][g];v.push(l),m.push(ta.range(i)),n+=l}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Pa-s*i)/n,l=0,h=-1;++h<i;){for(f=l,g=-1;++g<i;){var y=d[h],M=m[y][g],x=u[y][M],b=l,_=l+=x*n;p[y+"-"+M]={index:y,subindex:M,startAngle:b,endAngle:_,value:x}}r[y]={index:y,startAngle:f,endAngle:l,value:(l-f)/n},l+=s}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,l={},s=0;return l.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,l):u},l.padding=function(n){return arguments.length?(s=n,e=r=null,l):s},l.sortGroups=function(n){return arguments.length?(o=n,e=r=null,l):o},l.sortSubgroups=function(n){return arguments.length?(a=n,e=null,l):a},l.sortChords=function(n){return arguments.length?(c=n,e&&t(),l):c},l.chords=function(){return e||n(),e},l.groups=function(){return r||n(),r},l},ta.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=ta.event.x,n.py=ta.event.y,a.resume()}var e,r,u,i,o,a={},c=ta.dispatch("start","tick","end"),l=[1,1],s=.9,f=vl,h=dl,g=-30,p=ml,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,M,x,b=m.length,_=y.length;for(e=0;_>e;++e)a=y[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(p=M*M+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,M*=p,x*=p,h.x-=M*(d=f.weight/(h.weight+f.weight)),h.y-=x*d,f.x+=M*(d=1-d),f.y+=x*d);if((d=r*v)&&(M=l[0]/2,x=l[1]/2,e=-1,d))for(;++e<b;)a=m[e],a.x+=(M-a.x)*d,a.y+=(x-a.y)*d;if(g)for(Gu(t=ta.geom.quadtree(m),r,o),e=-1;++e<b;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<b;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),ta.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++a<l;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,s=y.length,p=l[0],v=l[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=ta.behavior.drag().origin(At).on("dragstart.force",$u).on("drag.force",t).on("dragend.force",Bu)),arguments.length?(this.on("mouseover.force",Wu).on("mouseout.force",Ju).call(e),void 0):e},ta.rebind(a,c,"on")};var vl=20,dl=1,ml=1/0;ta.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return ni(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ri,e=ti,r=ei;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qu(t,function(n){n.children&&(n.value=0)}),ni(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ta.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++l<o;)n(a=i[l],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=ta.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Ku(e,r)},ta.layout.pie=function(){function n(o){var a,c=o.length,l=o.map(function(e,r){return+t.call(n,e,r)}),s=+("function"==typeof r?r.apply(this,arguments):r),f=("function"==typeof u?u.apply(this,arguments):u)-s,h=Math.min(Math.abs(f)/c,+("function"==typeof i?i.apply(this,arguments):i)),g=h*(0>f?-1:1),p=(f-c*g)/ta.sum(l),v=ta.range(c),d=[];return null!=e&&v.sort(e===yl?function(n,t){return l[t]-l[n]}:function(n,t){return e(o[n],o[t])}),v.forEach(function(n){d[n]={data:o[n],value:a=l[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),d}var t=Number,e=yl,r=0,u=Pa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var yl={};ta.layout.stack=function(){function n(a,c){if(!(h=a.length))return a;var l=a.map(function(e,r){return t.call(n,e,r)}),s=l.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,c);l=ta.permute(l,f),s=ta.permute(s,f);var h,g,p,v,d=r.call(n,s,c),m=l[0].length;for(p=0;m>p;++p)for(u.call(n,l[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,l[g][p],v+=s[g-1][p][1],s[g][p][1]);return a}var t=At,e=ci,r=li,u=ai,i=ii,o=oi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:Ml.get(t)||ci,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:xl.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var Ml=ta.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(si),i=n.map(fi),o=ta.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return ta.range(n.length).reverse()},"default":ci}),xl=ta.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});ta.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=l[i],a>=s[0]&&a<=s[1]&&(o=c[ta.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=vi,u=gi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return pi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ta.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ni(a,function(n){n.r=+s(n.value)}),ni(a,xi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;ni(a,function(n){n.r+=f}),ni(a,xi),ni(a,function(n){n.r-=f})}return wi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=ta.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Ku(n,e)},ta.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(ni(h,e),h.parent.m=-h.z,Qu(h,r),l)Qu(f,i);else{var g=f,p=f,v=f;Qu(f,function(n){n.x<g.x&&(g=n),n.x>p.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Qu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Ci(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=Ai(o),u=Ei(u),o&&u;)c=Ei(c),i=Ai(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(Ni(zi(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!Ai(i)&&(i.t=o,i.m+=f-s),u&&!Ei(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=ta.layout.hierarchy().sort(null).value(null),a=ki,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},Ku(n,o)},ta.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;ni(c,function(n){var t=n.children;t&&t.length?(n.x=Li(t),n.y=qi(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ti(c),f=Ri(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return ni(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=ta.layout.hierarchy().sort(null).value(null),e=ki,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Ku(n,t)},ta.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++i<o;)u=n[i],u.x=a,u.y=l,u.dy=s,a+=u.dx=Math.min(e.x+e.dx-a,s?c(u.area/s):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=s,e.dy-=s}else{for((r||s>e.dx)&&(s=e.dx);++i<o;)u=n[i],u.x=a,u.y=l,u.dx=s,l+=u.dy=Math.min(e.y+e.dy-l,s?c(u.area/s):0);u.z=!1,u.dy+=e.y+e.dy-l,e.x+=s,e.dx-=s}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=l[0],i.dy=l[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=ta.layout.hierarchy(),c=Math.round,l=[1,1],s=null,f=Di,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(l=n,i):l},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Di(t):Pi(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Pi(t,n)}if(!arguments.length)return s;var r;return f=null==(s=n)?Di:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Ku(i,a)},ta.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u; +do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=ta.random.normal.apply(ta,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ta.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ta.scale={};var bl={floor:At,ceil:At};ta.scale.linear=function(){return Ii([0,1],[0,1],yu,!1)};var _l={s:1,g:1,p:1,r:1,e:1};ta.scale.log=function(){return Gi(ta.scale.linear().domain([0,1]),10,!0,[1,10])};var wl=ta.format(".0e"),Sl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ta.scale.pow=function(){return Ki(ta.scale.linear(),1,[0,1])},ta.scale.sqrt=function(){return ta.scale.pow().exponent(.5)},ta.scale.ordinal=function(){return no([],{t:"range",a:[[]]})},ta.scale.category10=function(){return ta.scale.ordinal().range(kl)},ta.scale.category20=function(){return ta.scale.ordinal().range(El)},ta.scale.category20b=function(){return ta.scale.ordinal().range(Al)},ta.scale.category20c=function(){return ta.scale.ordinal().range(Nl)};var kl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),El=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),Al=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Nl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);ta.scale.quantile=function(){return to([],[])},ta.scale.quantize=function(){return eo(0,1,[0,1])},ta.scale.threshold=function(){return ro([.5],[0,1])},ta.scale.identity=function(){return uo([0,1])},ta.svg={},ta.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-ja,f=a.apply(this,arguments)-ja,h=Math.abs(f-s),g=s>f?0:1;if(n>l&&(p=l,l=n,n=p),h>=Ua)return t(l,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,E=0,A=0,N=[];if((m=(+c.apply(this,arguments)||0)/2)&&(d=i===Cl?Math.sqrt(n*n+l*l):+i.apply(this,arguments),g||(A*=-1),l&&(A=tt(d/l*Math.sin(m))),n&&(E=tt(d/n*Math.sin(m)))),l){y=l*Math.cos(s+A),M=l*Math.sin(s+A),x=l*Math.cos(f-A),b=l*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Da?0:1;if(A&&fo(y,M,x,b)===g^C){var z=(s+f)/2;y=l*Math.cos(z),M=l*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Da?0:1;if(E&&fo(_,w,S,k)===1-g^q){var L=(s+f)/2;_=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else _=w=0;if((p=Math.min(Math.abs(l-n)/2,+u.apply(this,arguments)))>.001){v=l>n^g?0:1;var T=null==S?[_,w]:null==x?[y,M]:Tr([y,M],[S,k],[x,b],[_,w]),R=y-T[0],D=M-T[1],P=x-T[0],U=b-T[1],j=1/Math.sin(Math.acos((R*P+D*U)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+U*U)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(l-F)/(j+1)),O=ho(null==S?[_,w]:[S,k],[y,M],l,H,g),Y=ho([x,b],[_,w],l,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",v," ",O[1],"A",l,",",l," 0 ",1-g^fo(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",v," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",v," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(j-1)),Z=ho([y,M],[S,k],n,-I,g),V=ho([_,w],null==x?[y,M]:[x,b],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^fo(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",v," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",v," ",Z[0])}else N.push("L",_,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",l,",",l," 0 ",C,",",g," ",x,",",b),N.push("L",_,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=oo,r=ao,u=io,i=Cl,o=co,a=lo,c=so;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Cl?Cl:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(c=Et(t),n):c},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-ja;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Cl="auto";ta.svg.line=function(){return go(At)};var zl=ta.map({linear:po,"linear-closed":vo,step:mo,"step-before":yo,"step-after":Mo,basis:ko,"basis-open":Eo,"basis-closed":Ao,bundle:No,cardinal:_o,"cardinal-open":xo,"cardinal-closed":bo,monotone:Ro});zl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ql=[0,2/3,1/3,0],Ll=[0,1/3,2/3,0],Tl=[0,1/6,2/3,1/6];ta.svg.line.radial=function(){var n=go(Do);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},yo.reverse=Mo,Mo.reverse=yo,ta.svg.area=function(){return Po(At)},ta.svg.area.radial=function(){var n=Po(Do);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ta.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)-ja,s=l.call(n,u,r)-ja;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Da)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=yr,o=Mr,a=Uo,c=co,l=lo;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(l=Et(t),n):l},n},ta.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=yr,e=Mr,r=jo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ta.svg.diagonal.radial=function(){var n=ta.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(Fo(t=n)):t},n},ta.svg.symbol=function(){function n(n,r){return(Rl.get(t.call(this,n,r))||Yo)(e.call(this,n,r))}var t=Oo,e=Ho;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var Rl=ta.map({circle:Yo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*jl)),e=t*jl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ul),e=t*Ul/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ta.svg.symbolTypes=Rl.keys();var Dl,Pl,Ul=Math.sqrt(3),jl=Math.tan(30*Fa),Fl=[],Hl=0;Fl.call=ka.call,Fl.empty=ka.empty,Fl.node=ka.node,Fl.size=ka.size,ta.transition=function(n){return arguments.length?Dl?n.transition():n:Na.transition()},ta.transition.prototype=Fl,Fl.select=function(n){var t,e,r,u=this.id,i=this.namespace,o=[];n=k(n);for(var a=-1,c=this.length;++a<c;){o.push(t=[]);for(var l=this[a],s=-1,f=l.length;++s<f;)(r=l[s])&&(e=n.call(r,r.__data__,s,a))?("__data__"in r&&(e.__data__=r.__data__),$o(e,s,i,u,r[i][u]),t.push(e)):t.push(null)}return Io(o,i,u)},Fl.selectAll=function(n){var t,e,r,u,i,o=this.id,a=this.namespace,c=[];n=E(n);for(var l=-1,s=this.length;++l<s;)for(var f=this[l],h=-1,g=f.length;++h<g;)if(r=f[h]){i=r[a][o],e=n.call(r,r.__data__,h,l),c.push(t=[]);for(var p=-1,v=e.length;++p<v;)(u=e[p])&&$o(u,p,a,o,i),t.push(u)}return Io(c,a,o)},Fl.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=j(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Io(u,this.namespace,this.id)},Fl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):H(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Fl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ou:yu,a=ta.ns.qualify(n);return Zo(this,"attr."+n,t,a.local?i:u)},Fl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=ta.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Fl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=oa.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=yu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Zo(this,"style."+n,t,u)},Fl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,oa.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Fl.text=function(n){return Zo(this,"text",n,Vo)},Fl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Fl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ta.ease.apply(ta,arguments)),H(this,function(r){r[e][t].ease=n}))},Fl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:H(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Fl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:H(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Fl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Pl,i=Dl;Dl=e,H(this,function(t,u,i){Pl=t[r][e],n.call(t,t.__data__,u,i)}),Pl=u,Dl=i}else H(this,function(u){var i=u[r][e];(i.event||(i.event=ta.dispatch("start","end","interrupt"))).on(n,t)});return this},Fl.transition=function(){for(var n,t,e,r,u=this.id,i=++Hl,o=this.namespace,a=[],c=0,l=this.length;l>c;c++){a.push(n=[]);for(var t=this[c],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],$o(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Io(a,o,i)},ta.svg.axis=function(){function n(n){n.each(function(){var n,l=ta.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):At:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=ta.transition(p.exit()).style("opacity",Ta).remove(),m=ta.transition(p.order()).style("opacity",1),y=Math.max(u,0)+o,M=ji(f),x=l.selectAll(".domain").data([0]),b=(x.enter().append("path").attr("class","domain"),ta.transition(x));v.append("line"),v.append("text");var _,w,S,k,E=v.select("line"),A=m.select("line"),N=p.select("text").text(g),C=v.select("text"),z=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Bo,_="x",S="y",w="x2",k="y2",N.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+M[0]+","+q*i+"V0H"+M[1]+"V"+q*i)):(n=Wo,_="y",S="x",w="y2",k="x2",N.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),b.attr("d","M"+q*i+","+M[0]+"H0V"+M[1]+"H"+q*i)),E.attr(k,q*u),C.attr(S,q*y),A.attr(w,0).attr(k,q*u),z.attr(_,0).attr(S,q*y),f.rangeBand){var L=f,T=L.rangeBand()/2;s=f=function(n){return L(n)+T}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=ta.scale.linear(),r=Ol,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Yl?t+"":Ol,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ol="bottom",Yl={top:1,right:1,bottom:1,left:1};ta.svg.brush=function(){function n(i){i.each(function(){var i=ta.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,At);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Il[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=ta.transition(i),h=ta.transition(o);c&&(s=ji(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=ji(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==ta.event.keyCode&&(N||(y=null,z[0]-=s[1],z[1]-=f[1],N=2),b())}function p(){32==ta.event.keyCode&&2==N&&(z[0]+=s[1],z[1]+=f[1],N=0,b())}function v(){var n=ta.mouse(x),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),N||(ta.event.altKey?(y||(y=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]<y[0])],z[1]=f[+(n[1]<y[1])]):y=null),E&&d(n,c,0)&&(e(S),u=!0),A&&d(n,l,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:N?"move":"resize"}))}function d(n,t,e){var r,u,a=ji(t),c=a[0],l=a[1],p=z[e],v=e?f:s,d=v[1]-v[0];return N&&(c-=p,l-=d+p),r=(e?g:h)?Math.max(c,Math.min(l,n[e])):n[e],N?u=(r+=p)+d:(y&&(p=Math.max(c,Math.min(l,2*y[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ta.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var y,M,x=this,_=ta.select(ta.event.target),w=a.of(x,arguments),S=ta.select(x),k=_.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,N=_.classed("extent"),C=$(),z=ta.mouse(x),q=ta.select(oa).on("keydown.brush",u).on("keyup.brush",p);if(ta.event.changedTouches?q.on("touchmove.brush",v).on("touchend.brush",m):q.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),N)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var L=+/w$/.test(k),T=+/^n/.test(k);M=[s[1-L]-z[0],f[1-T]-z[1]],z[0]=s[L],z[1]=f[T]}else ta.event.altKey&&(y=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),ta.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=w(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Zl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Dl?ta.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=Mu(s,t.x),r=Mu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Zl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Zl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},ta.rebind(n,a,"on")};var Il={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Vl=fc.format=mc.timeFormat,Xl=Vl.utc,$l=Xl("%Y-%m-%dT%H:%M:%S.%LZ");Vl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Jo:$l,Jo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Jo.toString=$l.toString,fc.second=Ht(function(n){return new hc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),fc.seconds=fc.second.range,fc.seconds.utc=fc.second.utc.range,fc.minute=Ht(function(n){return new hc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),fc.minutes=fc.minute.range,fc.minutes.utc=fc.minute.utc.range,fc.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new hc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),fc.hours=fc.hour.range,fc.hours.utc=fc.hour.utc.range,fc.month=Ht(function(n){return n=fc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),fc.months=fc.month.range,fc.months.utc=fc.month.utc.range;var Bl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Wl=[[fc.second,1],[fc.second,5],[fc.second,15],[fc.second,30],[fc.minute,1],[fc.minute,5],[fc.minute,15],[fc.minute,30],[fc.hour,1],[fc.hour,3],[fc.hour,6],[fc.hour,12],[fc.day,1],[fc.day,2],[fc.week,1],[fc.month,1],[fc.month,3],[fc.year,1]],Jl=Vl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ce]]),Gl={range:function(n,t,e){return ta.range(Math.ceil(n/e)*e,+t,e).map(Ko)},floor:At,ceil:At};Wl.year=fc.year,fc.scale=function(){return Go(ta.scale.linear(),Wl,Jl)};var Kl=Wl.map(function(n){return[n[0].utc,n[1]]}),Ql=Xl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ce]]);Kl.year=fc.year.utc,fc.scale.utc=function(){return Go(ta.scale.linear(),Kl,Ql)},ta.text=Nt(function(n){return n.responseText}),ta.json=function(n,t){return Ct(n,"application/json",Qo,t)},ta.html=function(n,t){return Ct(n,"text/html",na,t)},ta.xml=Nt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(ta):"object"==typeof module&&module.exports&&(module.exports=ta),this.d3=ta}(); \ No newline at end of file diff --git a/plugins/datatables/buttons.bootstrap.min.css b/plugins/datatables/buttons.bootstrap.min.css new file mode 100644 index 0000000..05b6c22 --- /dev/null +++ b/plugins/datatables/buttons.bootstrap.min.css @@ -0,0 +1 @@ +div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}} diff --git a/plugins/datatables/buttons.bootstrap.min.js b/plugins/datatables/buttons.bootstrap.min.js new file mode 100644 index 0000000..dc28bac --- /dev/null +++ b/plugins/datatables/buttons.bootstrap.min.js @@ -0,0 +1,6 @@ +/*! + Bootstrap integration for DataTables' Buttons + ©2016 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"}, +button:{className:"btn btn-default"},collection:{tag:"ul",className:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="caret"/>')};return a.Buttons}); diff --git a/plugins/datatables/buttons.html5.min.js b/plugins/datatables/buttons.html5.min.js new file mode 100644 index 0000000..3fd6a97 --- /dev/null +++ b/plugins/datatables/buttons.html5.min.js @@ -0,0 +1,20 @@ +(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,f){d||(d=window);if(!f||!f.fn.dataTable)f=require("datatables.net")(d,f).$;f.fn.dataTable.Buttons||require("datatables.net-buttons")(d,f);return g(f,d,d.document)}:g(jQuery,window,document)})(function(g,d,f,k){var l=g.fn.dataTable,j;if("undefined"!==typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))j= +void 0;else{var v=d.document,o=v.createElementNS("http://www.w3.org/1999/xhtml","a"),D="download"in o,p=d.webkitRequestFileSystem,w=d.requestFileSystem||p||d.mozRequestFileSystem,E=function(a){(d.setImmediate||d.setTimeout)(function(){throw a;},0)},q=0,r=function(a){var b=function(){"string"===typeof a?(d.URL||d.webkitURL||d).revokeObjectURL(a):a.remove()};d.chrome?b():setTimeout(b,500)},s=function(a,b,e){for(var b=[].concat(b),c=b.length;c--;){var d=a["on"+b[c]];if("function"===typeof d)try{d.call(a, +e||a)}catch(h){E(h)}}},y=function(a){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["",a],{type:a.type}):a},A=function(a,b){var a=y(a),e=this,c=a.type,x=!1,h,g,z=function(){s(e,["writestart","progress","write","writeend"])},f=function(){if(x||!h)h=(d.URL||d.webkitURL||d).createObjectURL(a);g?g.location.href=h:d.open(h,"_blank")===k&&"undefined"!==typeof safari&&(d.location.href=h);e.readyState=e.DONE;z();r(h)},n=function(a){return function(){if(e.readyState!== +e.DONE)return a.apply(this,arguments)}},i={create:!0,exclusive:!1},j;e.readyState=e.INIT;b||(b="download");if(D)h=(d.URL||d.webkitURL||d).createObjectURL(a),o.href=h,o.download=b,c=v.createEvent("MouseEvents"),c.initMouseEvent("click",!0,!1,d,0,0,0,0,0,!1,!1,!1,!1,0,null),o.dispatchEvent(c),e.readyState=e.DONE,z(),r(h);else{d.chrome&&(c&&"application/octet-stream"!==c)&&(j=a.slice||a.webkitSlice,a=j.call(a,0,a.size,"application/octet-stream"),x=!0);p&&"download"!==b&&(b+=".download");if("application/octet-stream"=== +c||p)g=d;w?(q+=a.size,w(d.TEMPORARY,q,n(function(c){c.root.getDirectory("saved",i,n(function(c){var d=function(){c.getFile(b,i,n(function(b){b.createWriter(n(function(c){c.onwriteend=function(a){g.location.href=b.toURL();e.readyState=e.DONE;s(e,"writeend",a);r(b)};c.onerror=function(){var a=c.error;a.code!==a.ABORT_ERR&&f()};["writestart","progress","write","abort"].forEach(function(a){c["on"+a]=e["on"+a]});c.write(a);e.abort=function(){c.abort();e.readyState=e.DONE};e.readyState=e.WRITING}),f)}), +f)};c.getFile(b,{create:false},n(function(a){a.remove();d()}),n(function(a){a.code===a.NOT_FOUND_ERR?d():f()}))}),f)}),f)):f()}},i=A.prototype;"undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob?j=function(a,b){return navigator.msSaveOrOpenBlob(y(a),b)}:(i.abort=function(){this.readyState=this.DONE;s(this,"abort")},i.readyState=i.INIT=0,i.WRITING=1,i.DONE=2,i.error=i.onwritestart=i.onprogress=i.onwrite=i.onabort=i.onerror=i.onwriteend=null,j=function(a,b){return new A(a,b)})}var t=function(a, +b){var e="*"===a.filename&&"*"!==a.title&&a.title!==k?a.title:a.filename;-1!==e.indexOf("*")&&(e=e.replace("*",g("title").text()));e=e.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,"");return b===k||!0===b?e+a.extension:e},F=function(a){a=a.title;return-1!==a.indexOf("*")?a.replace("*",g("title").text()):a},u=function(a){return a.newline?a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},B=function(a,b){for(var e=u(b),c=a.buttons.exportData(b.exportOptions),d=b.fieldBoundary,h=b.fieldSeparator, +f=RegExp(d,"g"),g=b.escapeChar!==k?b.escapeChar:"\\",i=function(a){for(var b="",c=0,e=a.length;c<e;c++)0<c&&(b+=h),b+=d?d+(""+a[c]).replace(f,g+d)+d:a[c];return b},n=b.header?i(c.header)+e:"",j=b.footer?e+i(c.footer):"",l=[],m=0,o=c.body.length;m<o;m++)l.push(i(c.body[m]));return{str:n+l.join(e)+j,rows:l.length}},C=function(){return-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")},m={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>', +"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/></Relationships>',"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\t<Default Extension="xml" ContentType="application/xml"/>\t<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>\t<Default Extension="jpeg" ContentType="image/jpeg"/>\t<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>\t<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/></Types>', +"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\t<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>\t<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>\t<bookViews>\t\t<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>\t</bookViews>\t<sheets>\t\t<sheet name="Sheet1" sheetId="1" r:id="rId1"/>\t</sheets></workbook>', +"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">\t<sheetData>\t\t__DATA__\t</sheetData></worksheet>'};l.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5", +text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){a=B(b,c);c=a.str;d=g("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0});c=g("<textarea readonly/>").val(c).appendTo(d);if(f.queryCommandSupported("copy")){d.appendTo("body");c[0].focus();c[0].select();try{f.execCommand("copy");d.remove();b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"}, +a.rows),2E3);return}catch(i){}}a=g("<span>"+b.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(d);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),a,0);c[0].focus();c[0].select();var h=g(a).closest(".dt-button-info"),j=function(){h.off("click.buttons-copy");g(f).off(".buttons-copy");b.buttons.info(!1)};h.on("click.buttons-copy",j);g(f).on("keydown.buttons-copy", +function(a){27===a.keyCode&&j()}).on("copy.buttons-copy cut.buttons-copy",function(){j()})},exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!1};l.ext.buttons.csvHtml5={className:"buttons-csv buttons-html5",available:function(){return d.FileReader!==k&&d.Blob},text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){u(c);a=B(b,c).str;b=c.charset;!1!==b?(b||(b=f.characterSet||f.charset),b&&(b=";charset="+b)):b="";j(new Blob([a],{type:"text/csv"+b}),t(c))}, +filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!1};l.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return d.FileReader!==k&&d.JSZip!==k&&!C()},text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,e,c){a="";b=b.buttons.exportData(c.exportOptions);e=function(a){for(var b=[],c=0,d=a.length;c<d;c++){if(null===a[c]||a[c]===k)a[c]="";b.push("number"===typeof a[c]|| +a[c].match&&a[c].match(/^-?[0-9\.]+$/)&&"0"!==a[c].charAt(0)?'<c t="n"><v>'+a[c]+"</v></c>":'<c t="inlineStr"><is><t>'+(!a[c].replace?a[c]:a[c].replace(/&(?!amp;)/g,"&amp;").replace(/[\x00-\x1F\x7F-\x9F]/g,""))+"</t></is></c>")}return"<row>"+b.join("")+"</row>"};c.header&&(a+=e(b.header));for(var f=0,h=b.body.length;f<h;f++)a+=e(b.body[f]);c.footer&&(a+=e(b.footer));var b=new d.JSZip,e=b.folder("_rels"),f=b.folder("xl"),h=b.folder("xl/_rels"),g=b.folder("xl/worksheets");b.file("[Content_Types].xml", +m["[Content_Types].xml"]);e.file(".rels",m["_rels/.rels"]);f.file("workbook.xml",m["xl/workbook.xml"]);h.file("workbook.xml.rels",m["xl/_rels/workbook.xml.rels"]);g.file("sheet1.xml",m["xl/worksheets/sheet1.xml"].replace("__DATA__",a));j(b.generate({type:"blob"}),t(c))},filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!1};l.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return d.FileReader!==k&&d.pdfMake},text:function(a){return a.i18n("buttons.pdf", +"PDF")},action:function(a,b,e,c){u(c);a=b.buttons.exportData(c.exportOptions);b=[];c.header&&b.push(g.map(a.header,function(a){return{text:"string"===typeof a?a:a+"",style:"tableHeader"}}));for(var f=0,e=a.body.length;f<e;f++)b.push(g.map(a.body[f],function(a){return{text:"string"===typeof a?a:a+"",style:f%2?"tableBodyEven":"tableBodyOdd"}}));c.footer&&b.push(g.map(a.footer,function(a){return{text:"string"===typeof a?a:a+"",style:"tableFooter"}}));a={pageSize:c.pageSize,pageOrientation:c.orientation, +content:[{table:{headerRows:1,body:b},layout:"noBorders"}],styles:{tableHeader:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154",alignment:"center"},tableBodyEven:{},tableBodyOdd:{fillColor:"#f3f3f3"},tableFooter:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154"},title:{alignment:"center",fontSize:15},message:{}},defaultStyle:{fontSize:10}};c.message&&a.content.unshift({text:c.message,style:"message",margin:[0,0,0,12]});c.title&&a.content.unshift({text:F(c,!1),style:"title",margin:[0,0, +0,12]});c.customize&&c.customize(a);a=d.pdfMake.createPdf(a);"open"===c.download&&!C()?a.open():a.getBuffer(function(a){a=new Blob([a],{type:"application/pdf"});j(a,t(c))})},title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"A4",header:!0,footer:!1,message:null,customize:null,download:"download"};return l.Buttons}); diff --git a/plugins/datatables/buttons.print.min.js b/plugins/datatables/buttons.print.min.js new file mode 100644 index 0000000..e0dfe00 --- /dev/null +++ b/plugins/datatables/buttons.print.min.js @@ -0,0 +1,4 @@ +(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(c){return d(c,window,document)}):"object"===typeof exports?module.exports=function(c,a){c||(c=window);if(!a||!a.fn.dataTable)a=require("datatables.net")(c,a).$;a.fn.dataTable.Buttons||require("datatables.net-buttons")(c,a);return d(a,c,c.document)}:d(jQuery,window,document)})(function(d,c,a){var h=d.fn.dataTable,f=a.createElement("a");h.ext.buttons.print={className:"buttons-print", +text:function(d){return d.i18n("buttons.print","Print")},action:function(a,b,i,e){a=b.buttons.exportData(e.exportOptions);i=function(a,b){for(var d="<tr>",c=0,e=a.length;c<e;c++)d+="<"+b+">"+a[c]+"</"+b+">";return d+"</tr>"};b='<table class="'+b.table().node().className+'">';e.header&&(b+="<thead>"+i(a.header,"th")+"</thead>");for(var b=b+"<tbody>",j=0,h=a.body.length;j<h;j++)b+=i(a.body[j],"td");b+="</tbody>";e.footer&&(b+="<thead>"+i(a.footer,"th")+"</thead>");var g=c.open("",""),a=e.title.replace("*", +d("title").text());g.document.close();var k="<title>"+a+"</title>";d("style, link").each(function(){var a=k,b=d(this).clone()[0],c;"link"===b.nodeName.toLowerCase()&&(f.href=b.href,c=f.host,-1===c.indexOf("/")&&0!==f.pathname.indexOf("/")&&(c+="/"),b.href=f.protocol+"//"+c+f.pathname+f.search);k=a+b.outerHTML});d(g.document.head).html(k);d(g.document.body).html("<h1>"+a+"</h1><div>"+e.message+"</div>"+b);e.customize&&e.customize(g);setTimeout(function(){e.autoPrint&&(g.print(),g.close())},250)},title:"*", +message:"",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return h.Buttons}); diff --git a/plugins/datatables/dataTables.bootstrap.js b/plugins/datatables/dataTables.bootstrap.js new file mode 100644 index 0000000..2c6959d --- /dev/null +++ b/plugins/datatables/dataTables.bootstrap.js @@ -0,0 +1,186 @@ +/*! DataTables Bootstrap 3 integration + * ©2011-2014 SpryMedia Ltd - datatables.net/license + */ + +/** + * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and + * DataTables 1.10 or newer. + * + * This file sets the defaults and adds options to DataTables to style its + * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap + * for further information. + */ +(function(window, document, undefined){ + +var factory = function( $, DataTable ) { +"use strict"; + + +/* Set the defaults for DataTables initialisation */ +$.extend( true, DataTable.defaults, { + dom: + "<'row'<'col-sm-6'l><'col-sm-6'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-6'i><'col-sm-6'p>>", + renderer: 'bootstrap' +} ); + + +/* Default class modification */ +$.extend( DataTable.ext.classes, { + sWrapper: "dataTables_wrapper form-inline dt-bootstrap", + sFilterInput: "form-control input-sm", + sLengthSelect: "form-control input-sm" +} ); + + +/* Bootstrap paging button renderer */ +DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { + var api = new DataTable.Api( settings ); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var btnDisplay, btnClass; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + e.preventDefault(); + if ( !$(e.currentTarget).hasClass('disabled') ) { + api.page( e.data.action ).draw( false ); + } + }; + + for ( i=0, ien=buttons.length ; i<ien ; i++ ) { + button = buttons[i]; + + if ( $.isArray( button ) ) { + attach( container, button ); + } + else { + btnDisplay = ''; + btnClass = ''; + + switch ( button ) { + case 'ellipsis': + btnDisplay = '&hellip;'; + btnClass = 'disabled'; + break; + + case 'first': + btnDisplay = lang.sFirst; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + 'active' : ''; + break; + } + + if ( btnDisplay ) { + node = $('<li>', { + 'class': classes.sPageButton+' '+btnClass, + 'aria-controls': settings.sTableId, + 'tabindex': settings.iTabIndex, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .append( $('<a>', { + 'href': '#' + } ) + .html( btnDisplay ) + ) + .appendTo( container ); + + settings.oApi._fnBindAction( + node, {action: button}, clickHandler + ); + } + } + } + }; + + attach( + $(host).empty().html('<ul class="pagination"/>').children('ul'), + buttons + ); +}; + + +/* + * TableTools Bootstrap compatibility + * Required TableTools 2.1+ + */ +if ( DataTable.TableTools ) { + // Set the classes that TableTools uses to something suitable for Bootstrap + $.extend( true, DataTable.TableTools.classes, { + "container": "DTTT btn-group", + "buttons": { + "normal": "btn btn-default", + "disabled": "disabled" + }, + "collection": { + "container": "DTTT_dropdown dropdown-menu", + "buttons": { + "normal": "", + "disabled": "disabled" + } + }, + "print": { + "info": "DTTT_print_info" + }, + "select": { + "row": "active" + } + } ); + + // Have the collection use a bootstrap compatible drop down + $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { + "collection": { + "container": "ul", + "button": "li", + "liner": "a" + } + } ); +} + +}; // /factory + + +// Define as an AMD module if possible +if ( typeof define === 'function' && define.amd ) { + define( ['jquery', 'datatables'], factory ); +} +else if ( typeof exports === 'object' ) { + // Node/CommonJS + factory( require('jquery'), require('datatables') ); +} +else if ( jQuery ) { + // Otherwise simply initialise as normal, stopping multiple evaluation + factory( jQuery, jQuery.fn.dataTable ); +} + + +})(window, document); + diff --git a/plugins/datatables/dataTables.bootstrap.min.css b/plugins/datatables/dataTables.bootstrap.min.css new file mode 100644 index 0000000..16ed637 --- /dev/null +++ b/plugins/datatables/dataTables.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/plugins/datatables/dataTables.buttons.min.js b/plugins/datatables/dataTables.buttons.min.js new file mode 100644 index 0000000..3b72b83 --- /dev/null +++ b/plugins/datatables/dataTables.buttons.min.js @@ -0,0 +1,35 @@ +/*! + Buttons for DataTables 1.1.0 + ©2015 SpryMedia Ltd - datatables.net/license +*/ +(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(n){return e(n,window,document)}):"object"===typeof exports?module.exports=function(n,o){n||(n=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(n,o).$;return e(o,n,n.document)}:e(jQuery,window,document)})(function(e,n,o,m){var j=e.fn.dataTable,s=0,t=0,k=j.ext.buttons,l=function(a,b){!0===b&&(b={});e.isArray(b)&&(b={buttons:b});this.c=e.extend(!0,{},l.defaults,b);b.buttons&&(this.c.buttons=b.buttons); +this.s={dt:new j.Api(a),buttons:[],subButtons:[],listenKeys:"",namespace:"dtb"+s++};this.dom={container:e("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};e.extend(l.prototype,{action:function(a,b){var c=this._indexToButton(a).conf;if(b===m)return c.action;c.action=b;return this},active:function(a,b){this._indexToButton(a).node.toggleClass(this.c.dom.button.active,b===m?!0:b);return this},add:function(a,b){if("string"===typeof a&&-1!==a.indexOf("-")){var c= +a.split("-");this.c.buttons[1*c[0]].buttons.splice(1*c[1],0,b)}else this.c.buttons.splice(1*a,0,b);this.dom.container.empty();this._buildButtons(this.c.buttons);return this},container:function(){return this.dom.container},disable:function(a){this._indexToButton(a).node.addClass(this.c.dom.button.disabled);return this},destroy:function(){e("body").off("keyup."+this.s.namespace);var a=this.s.buttons,b=this.s.subButtons,c,d,f;c=0;for(a=a.length;c<a;c++){this.removePrep(c);d=0;for(f=b[c].length;d<f;d++)this.removePrep(c+ +"-"+d)}this.removeCommit();this.dom.container.remove();b=this.s.dt.settings()[0];c=0;for(a=b.length;c<a;c++)if(b.inst===this){b.splice(c,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);this._indexToButton(a).node.removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){return this._indexToButton(a).node},removeCommit:function(){var a=this.s.buttons,b=this.s.subButtons,c,d;for(c=a.length-1;0<=c;c--)null===a[c]&&(a.splice(c, +1),b.splice(c,1),this.c.buttons.splice(c,1));c=0;for(a=b.length;c<a;c++)for(d=b[c].length-1;0<=d;d--)null===b[c][d]&&(b[c].splice(d,1),this.c.buttons[c].buttons.splice(d,1));return this},removePrep:function(a){var b,c=this.s.dt;if("number"===typeof a||-1===a.indexOf("-"))b=this.s.buttons[1*a],b.conf.destroy&&b.conf.destroy.call(c.button(a),c,b,b.conf),b.node.remove(),this._removeKey(b.conf),this.s.buttons[1*a]=null;else{var d=a.split("-");b=this.s.subButtons[1*d[0]][1*d[1]];b.conf.destroy&&b.conf.destroy.call(c.button(a), +c,b,b.conf);b.node.remove();this._removeKey(b.conf);this.s.subButtons[1*d[0]][1*d[1]]=null}return this},text:function(a,b){var c=this._indexToButton(a),d=this.c.dom.collection.buttonLiner,d="string"===typeof a&&-1!==a.indexOf("-")&&d&&d.tag?d.tag:this.c.dom.buttonLiner.tag,e=this.s.dt,g=function(a){return"function"===typeof a?a(e,c.node,c.conf):a};if(b===m)return g(c.conf.text);c.conf.text=b;d?c.node.children(d).html(g(b)):c.node.html(g(b));return this},toIndex:function(a){var b,c,d,e;d=this.s.buttons; +var g=this.s.subButtons;b=0;for(c=d.length;b<c;b++)if(d[b].node[0]===a)return b+"";b=0;for(c=g.length;b<c;b++){d=0;for(e=g[b].length;d<e;d++)if(g[b][d].node[0]===a)return b+"-"+d}},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0];c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});this._buildButtons(this.c.buttons);b.on("destroy",function(){a.destroy()});e("body").on("keyup."+this.s.namespace,function(b){if(!o.activeElement||o.activeElement===o.body){var c=String.fromCharCode(b.keyCode).toLowerCase(); +a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=e.isPlainObject(a.key)?a.key.key:a.key)},_buildButtons:function(a,b,c){var d=this.s.dt;b||(b=this.dom.container,this.s.buttons=[],this.s.subButtons=[]);for(var f=0,g=a.length;f<g;f++){var h=this._resolveExtends(a[f]);if(h)if(e.isArray(h))this._buildButtons(h,b,c);else{var i=this._buildButton(h,c!==m?!0:!1);if(i){var q=i.node;b.append(i.inserter);c===m?(this.s.buttons.push({node:q,conf:h, +inserter:i.inserter}),this.s.subButtons.push([])):this.s.subButtons[c].push({node:q,conf:h,inserter:i.inserter});h.buttons&&(i=this.c.dom.collection,h._collection=e("<"+i.tag+"/>").addClass(i.className),this._buildButtons(h.buttons,h._collection,f));h.init&&h.init.call(d.button(q),d,q,h)}}}},_buildButton:function(a,b){var c=this.c.dom.button,d=this.c.dom.buttonLiner,f=this.c.dom.collection,g=this.s.dt,h=function(b){return"function"===typeof b?b(g,i,a):b};b&&f.button&&(c=f.button);b&&f.buttonLiner&& +(d=f.buttonLiner);if(a.available&&!a.available(g,a))return!1;var i=e("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!i.hasClass(c.disabled)&&a.action&&a.action.call(g.button(i),b,g,i,a);i.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!i.hasClass(c.disabled)&&a.action&&a.action.call(g.button(i),b,g,i,a)});d.tag?i.append(e("<"+d.tag+"/>").html(h(a.text)).addClass(d.className)): +i.html(h(a.text));!1===a.enabled&&i.addClass(c.disabled);a.className&&i.addClass(a.className);a.titleAttr&&i.attr("title",a.titleAttr);a.namespace||(a.namespace=".dt-button-"+t++);d=(d=this.c.dom.buttonContainer)?e("<"+d.tag+"/>").addClass(d.className).append(i):i;this._addKey(a);return{node:i,inserter:d}},_indexToButton:function(a){if("number"===typeof a||-1===a.indexOf("-"))return this.s.buttons[1*a];a=a.split("-");return this.s.subButtons[1*a[0]][1*a[1]]},_keypress:function(a,b){var c,d,f,g;f= +this.s.buttons;var h=this.s.subButtons,i=function(c,d){if(c.key)if(c.key===a)d.click();else if(e.isPlainObject(c.key)&&c.key.key===a&&(!c.key.shiftKey||b.shiftKey))if(!c.key.altKey||b.altKey)if(!c.key.ctrlKey||b.ctrlKey)(!c.key.metaKey||b.metaKey)&&d.click()};c=0;for(d=f.length;c<d;c++)i(f[c].conf,f[c].node);c=0;for(d=h.length;c<d;c++){f=0;for(g=h[c].length;f<g;f++)i(h[c][f].conf,h[c][f].node)}},_removeKey:function(a){if(a.key){var b=e.isPlainObject(a.key)?a.key.key:a.key,a=this.s.listenKeys.split(""), +b=e.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,d,f=function(c){for(var d=0;!e.isPlainObject(c)&&!e.isArray(c);){if(c===m)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!k[c])throw"Unknown button type: "+c;c=k[c]}d++;if(30<d)throw"Buttons: Too many iterations";}return e.isArray(c)?c:e.extend({},c)},a=f(a);a&&a.extend;){if(!k[a.extend])throw"Cannot extend unknown button type: "+a.extend;var g= +f(k[a.extend]);if(e.isArray(g))return g;if(!g)return!1;c=g.className;a=e.extend({},g,a);c&&a.className!==c&&(a.className=c+" "+a.className);var h=a.postfixButtons;if(h){a.buttons||(a.buttons=[]);c=0;for(d=h.length;c<d;c++)a.buttons.push(h[c]);a.postfixButtons=null}if(h=a.prefixButtons){a.buttons||(a.buttons=[]);c=0;for(d=h.length;c<d;c++)a.buttons.splice(c,0,h[c]);a.prefixButtons=null}a.extend=g.extend}return a}});l.background=function(a,b,c){c===m&&(c=400);a?e("<div/>").addClass(b).css("display", +"none").appendTo("body").fadeIn(c):e("body > div."+b).fadeOut(c,function(){e(this).remove()})};l.instanceSelector=function(a,b){if(!a)return e.map(b,function(a){return a.inst});var c=[],d=e.map(b,function(a){return a.name}),f=function(a){if(e.isArray(a))for(var h=0,i=a.length;h<i;h++)f(a[h]);else"string"===typeof a?-1!==a.indexOf(",")?f(a.split(",")):(a=e.inArray(e.trim(a),d),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};f(a);return c};l.buttonSelector=function(a,b){for(var c= +[],d=function(a,b){var f,g,j=[];e.each(b.s.buttons,function(a,b){null!==b&&j.push({node:b.node[0],name:b.name})});e.each(b.s.subButtons,function(a,b){e.each(b,function(a,b){null!==b&&j.push({node:b.node[0],name:b.name})})});f=e.map(j,function(a){return a.node});if(e.isArray(a)||a instanceof e){f=0;for(g=a.length;f<g;f++)d(a[f],b)}else if(null===a||a===m||"*"===a){f=0;for(g=j.length;f<g;f++)c.push({inst:b,idx:b.toIndex(j[f].node)})}else if("number"===typeof a)c.push({inst:b,idx:a});else if("string"=== +typeof a)if(-1!==a.indexOf(",")){var k=a.split(",");f=0;for(g=k.length;f<g;f++)d(e.trim(k[f]),b)}else if(a.match(/^\d+(\-\d+)?$/))c.push({inst:b,idx:a});else if(-1!==a.indexOf(":name")){k=a.replace(":name","");f=0;for(g=j.length;f<g;f++)j[f].name===k&&c.push({inst:b,idx:b.toIndex(j[f].node)})}else e(f).filter(a).each(function(){c.push({inst:b,idx:b.toIndex(this)})});else"object"===typeof a&&a.nodeName&&(g=e.inArray(a,f),-1!==g&&c.push({inst:b,idx:b.toIndex(f[g])}))},f=0,g=a.length;f<g;f++)d(b,a[f]); +return c};l.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};l.version="1.1.0";e.extend(k,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",action:function(a,b,c,d){var a=c.offset(),b=e(b.table().container()), +f=!1;e("div.dt-button-background").length&&(f=e("div.dt-button-collection").offset(),e(o).trigger("click.dtb-collection"));d._collection.addClass(d.collectionLayout).css("display","none").appendTo("body").fadeIn(d.fade);var g=d._collection.css("position");f&&"absolute"===g?d._collection.css({top:f.top+5,left:f.left+5}):"absolute"===g?(d._collection.css({top:a.top+c.outerHeight(),left:a.left}),c=a.left+d._collection.outerWidth(),b=b.offset().left+b.width(),c>b&&d._collection.css("left",a.left-(c-b))): +(a=d._collection.height()/2,a>e(n).height()/2&&(a=e(n).height()/2),d._collection.css("marginTop",-1*a));d.background&&l.background(!0,d.backgroundClassName,d.fade);setTimeout(function(){e("div.dt-button-background").on("click.dtb-collection",function(){});e("body").on("click.dtb-collection",function(a){if(!e(a.target).parents().andSelf().filter(d._collection).length){d._collection.fadeOut(d.fade,function(){d._collection.detach()});e("div.dt-button-background").off("click.dtb-collection");l.background(false, +d.backgroundClassName,d.fade);e("body").off("click.dtb-collection")}})},10)},background:!0,collectionLayout:"",backgroundClassName:"dt-button-background",fade:400},copy:function(a,b){if(k.copyHtml5)return"copyHtml5";if(k.copyFlash&&k.copyFlash.available(a,b))return"copyFlash"},csv:function(a,b){if(k.csvHtml5&&k.csvHtml5.available(a,b))return"csvHtml5";if(k.csvFlash&&k.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(k.excelHtml5&&k.excelHtml5.available(a,b))return"excelHtml5";if(k.excelFlash&& +k.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(k.pdfHtml5&&k.pdfHtml5.available(a,b))return"pdfHtml5";if(k.pdfFlash&&k.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=e.isArray(a[0])?a[0]:a,c=e.isArray(a[0])?a[1]:a,d=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:d,className:"buttons-page-length",buttons:e.map(b,function(a,b){return{text:c[b], +action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this,c=function(){e.active(b.page.len()===a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var e=this;a.on("length.dt"+c.namespace,function(){e.text(d(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});j.Api.register("buttons()",function(a,b){b===m&&(b=a,a=m);return this.iterator(!0,"table",function(c){if(c._buttons)return l.buttonSelector(l.instanceSelector(a, +c._buttons),b)},!0)});j.Api.register("button()",function(a,b){var c=this.buttons(a,b);1<c.length&&c.splice(1,c.length);return c});j.Api.register(["buttons().active()","button().active()"],function(a){return this.each(function(b){b.inst.active(b.idx,a)})});j.Api.registerPlural("buttons().action()","button().action()",function(a){return a===m?this.map(function(a){return a.inst.action(a.idx)}):this.each(function(b){b.inst.action(b.idx,a)})});j.Api.register(["buttons().enable()","button().enable()"], +function(a){return this.each(function(b){b.inst.enable(b.idx,a)})});j.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.idx)})});j.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=e();e(this.each(function(b){a=a.add(b.inst.node(b.idx))}));return a});j.Api.registerPlural("buttons().text()","button().text()",function(a){return a===m?this.map(function(a){return a.inst.text(a.idx)}):this.each(function(b){b.inst.text(b.idx, +a)})});j.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.idx).trigger("click")})});j.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=e();e(this.each(function(b){a=a.add(b.inst.container())}));return a});j.Api.register("button().add()",function(a,b){1===this.length&&this[0].inst.add(a,b);return this.button(a)});j.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()}); +return this});j.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.removePrep(a.idx)});this.pluck("inst").unique().each(function(a){a.removeCommit()});return this});var p;j.Api.register("buttons.info()",function(a,b,c){var d=this;if(!1===a)return e("#datatables_buttons_info").fadeOut(function(){e(this).remove()}),clearTimeout(p),p=null,this;p&&clearTimeout(p);e("#datatables_buttons_info").length&&e("#datatables_buttons_info").remove();e('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a? +"<h2>"+a+"</h2>":"").append(e("<div/>")["string"===typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==m&&0!==c&&(p=setTimeout(function(){d.buttons.info(!1)},c));return this});j.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new j.Api(this.context[0]),c=e.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return d(a)}, +footer:function(a){return d(a)},body:function(a){return d(a)}}},a),d=function(a){if("string"!==typeof a)return a;c.stripHtml&&(a=a.replace(/<.*?>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(r.innerHTML=a,a=r.value);return a},a=b.columns(c.columns).indexes().map(function(a){return c.format.header(b.column(a).header().innerHTML,a)}).toArray(),f=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer(); +return c.format.footer(d?d.innerHTML:"",a)}).toArray():null,g=b.rows(c.rows,c.modifier).indexes().toArray(),g=b.cells(g,c.columns).render(c.orthogonal).toArray(),h=a.length,i=0<h?g.length/h:0,k=Array(i),l=0,m=0;m<i;m++){for(var o=Array(h),n=0;n<h;n++)o[n]=c.format.body(g[l],n,m),l++;k[m]=o}return{header:a,footer:f,body:k}}});var r=e("<textarea/>")[0];e.fn.dataTable.Buttons=l;e.fn.DataTable.Buttons=l;e(o).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||j.defaults.buttons; +c&&!b._buttons&&(new l(b,c)).container()}});j.ext.feature.push({fnInit:function(a){var a=new j.Api(a),b=a.init().buttons||j.defaults.buttons;return(new l(a,b)).container()},cFeature:"B"});return l}); diff --git a/plugins/datatables/dataTables.colVis.css b/plugins/datatables/dataTables.colVis.css new file mode 100644 index 0000000..51f546d --- /dev/null +++ b/plugins/datatables/dataTables.colVis.css @@ -0,0 +1,185 @@ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * ColVis styles + */ +div.ColVis { + float: right; + margin-bottom: 1em; +} + +button.ColVis_Button, +ul.ColVis_collection li { + position: relative; + float: left; + margin-right: 3px; + padding: 5px 8px; + border: 1px solid #999; + cursor: pointer; + *cursor: hand; + font-size: 0.88em; + color: black !important; + white-space: nowrap; + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 1px 1px 3px #ccc; + -moz-box-shadow: 1px 1px 3px #ccc; + -ms-box-shadow: 1px 1px 3px #ccc; + -o-box-shadow: 1px 1px 3px #ccc; + box-shadow: 1px 1px 3px #ccc; + + /* Generated by http://www.colorzilla.com/gradient-editor/ */ + background: #ffffff; /* Old browsers */ + background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */ + background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */ + background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */ +} + +.ColVis_Button:hover, +ul.ColVis_collection li:hover { + border: 1px solid #666; + text-decoration: none !important; + + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; + + background: #f3f3f3; /* Old browsers */ + background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */ + background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */ + background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */ + background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */ +} + +button.ColVis_Button { + height: 30px; + padding: 3px 8px; +} + +button.ColVis_Button::-moz-focus-inner { + border: none !important; + padding: 0; +} + +button.ColVis_Button:active { + outline: none; +} + + +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} + +ul.ColVis_collection { + list-style: none; + width: 150px; + padding: 8px 8px 4px 8px; + margin: 0; + border: 1px solid #ccc; + border: 1px solid rgba( 0, 0, 0, 0.4 ); + background-color: #f3f3f3; + background-color: rgba( 255, 255, 255, 0.3 ); + overflow: hidden; + z-index: 2002; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + + -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); +} + +ul.ColVis_collection li { + position: relative; + height: auto; + left: 0; + right: 0; + padding: 0.5em; + + display: block; + float: none; + margin-bottom: 4px; + + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; +} + +ul.ColVis_collection li { + text-align: left; +} + +ul.ColVis_collection li.ColVis_Button:hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +ul.ColVis_collection li span { + display: inline-block; + padding-left: 0.5em; + cursor: pointer; +} + + +ul.ColVis_collection li.ColVis_Special { + border-color: #555; + background: rgb(237,237,237); /* Old browsers */ + background: -webkit-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, rgba(237,237,237,1) 0%, rgba(214,214,214,1) 77%, rgba(232,232,232,1) 100%); /* FF3.6+ */ + background: -ms-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* IE10+ */ + background: -o-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Opera 11.10+ */ + background: linear-gradient(to bottom, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */ +} + +ul.ColVis_collection li.ColVis_Special:hover { + background: #e2e2e2; /* Old browsers */ + background: -webkit-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* FF3.6+ */ + background: -ms-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* IE10+ */ + background: -o-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Opera 11.10+ */ + background: linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); /* IE6-9 */ +} + + +span.ColVis_radio { + display: inline-block; + width: 20px; +} + +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} + +.disabled { + color: #999; +} + + diff --git a/plugins/datatables/dataTables.colVis.js b/plugins/datatables/dataTables.colVis.js new file mode 100644 index 0000000..331de3f --- /dev/null +++ b/plugins/datatables/dataTables.colVis.js @@ -0,0 +1,1107 @@ +/*! ColVis 1.1.1 + * ©2010-2014 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary ColVis + * @description Controls for column visibility in DataTables + * @version 1.1.1 + * @file dataTables.colReorder.js + * @author SpryMedia Ltd (www.sprymedia.co.uk) + * @contact www.sprymedia.co.uk/contact + * @copyright Copyright 2010-2014 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license/mit + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +(function(window, document, undefined) { + + +var factory = function( $, DataTable ) { +"use strict"; + +/** + * ColVis provides column visibility control for DataTables + * + * @class ColVis + * @constructor + * @param {object} DataTables settings object. With DataTables 1.10 this can + * also be and API instance, table node, jQuery collection or jQuery selector. + * @param {object} ColVis configuration options + */ +var ColVis = function( oDTSettings, oInit ) +{ + /* Santiy check that we are a new instance */ + if ( !this.CLASS || this.CLASS != "ColVis" ) + { + alert( "Warning: ColVis must be initialised with the keyword 'new'" ); + } + + if ( typeof oInit == 'undefined' ) + { + oInit = {}; + } + + if ( $.fn.dataTable.camelToHungarian ) { + $.fn.dataTable.camelToHungarian( ColVis.defaults, oInit ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public class variables + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * @namespace Settings object which contains customisable information for + * ColVis instance. Augmented by ColVis.defaults + */ + this.s = { + /** + * DataTables settings object + * @property dt + * @type Object + * @default null + */ + "dt": null, + + /** + * Customisation object + * @property oInit + * @type Object + * @default passed in + */ + "oInit": oInit, + + /** + * Flag to say if the collection is hidden + * @property hidden + * @type boolean + * @default true + */ + "hidden": true, + + /** + * Store the original visibility settings so they could be restored + * @property abOriginal + * @type Array + * @default [] + */ + "abOriginal": [] + }; + + + /** + * @namespace Common and useful DOM elements for the class instance + */ + this.dom = { + /** + * Wrapper for the button - given back to DataTables as the node to insert + * @property wrapper + * @type Node + * @default null + */ + "wrapper": null, + + /** + * Activation button + * @property button + * @type Node + * @default null + */ + "button": null, + + /** + * Collection list node + * @property collection + * @type Node + * @default null + */ + "collection": null, + + /** + * Background node used for shading the display and event capturing + * @property background + * @type Node + * @default null + */ + "background": null, + + /** + * Element to position over the activation button to catch mouse events when using mouseover + * @property catcher + * @type Node + * @default null + */ + "catcher": null, + + /** + * List of button elements + * @property buttons + * @type Array + * @default [] + */ + "buttons": [], + + /** + * List of group button elements + * @property groupButtons + * @type Array + * @default [] + */ + "groupButtons": [], + + /** + * Restore button + * @property restore + * @type Node + * @default null + */ + "restore": null + }; + + /* Store global reference */ + ColVis.aInstances.push( this ); + + /* Constructor logic */ + this.s.dt = $.fn.dataTable.Api ? + new $.fn.dataTable.Api( oDTSettings ).settings()[0] : + oDTSettings; + + this._fnConstruct( oInit ); + return this; +}; + + + +ColVis.prototype = { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Get the ColVis instance's control button so it can be injected into the + * DOM + * @method button + * @returns {node} ColVis button + */ + button: function () + { + return this.dom.wrapper; + }, + + /** + * Alias of `rebuild` for backwards compatibility + * @method fnRebuild + */ + "fnRebuild": function () + { + this.rebuild(); + }, + + /** + * Rebuild the list of buttons for this instance (i.e. if there is a column + * header update) + * @method fnRebuild + */ + rebuild: function () + { + /* Remove the old buttons */ + for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) { + this.dom.collection.removeChild( this.dom.buttons[i] ); + } + this.dom.buttons.splice( 0, this.dom.buttons.length ); + + if ( this.dom.restore ) { + this.dom.restore.parentNode( this.dom.restore ); + } + + /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */ + this._fnAddGroups(); + this._fnAddButtons(); + + /* Update the checkboxes */ + this._fnDrawCallback(); + }, + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods (they are of course public in JS, but recommended as private) + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Constructor logic + * @method _fnConstruct + * @returns void + * @private + */ + "_fnConstruct": function ( init ) + { + this._fnApplyCustomisation( init ); + + var that = this; + var i, iLen; + this.dom.wrapper = document.createElement('div'); + this.dom.wrapper.className = "ColVis"; + + this.dom.button = $( '<button />', { + 'class': !this.s.dt.bJUI ? + "ColVis_Button ColVis_MasterButton" : + "ColVis_Button ColVis_MasterButton ui-button ui-state-default" + } ) + .append( '<span>'+this.s.buttonText+'</span>' ) + .bind( this.s.activate=="mouseover" ? "mouseover" : "click", function (e) { + e.preventDefault(); + that._fnCollectionShow(); + } ) + .appendTo( this.dom.wrapper )[0]; + + this.dom.catcher = this._fnDomCatcher(); + this.dom.collection = this._fnDomCollection(); + this.dom.background = this._fnDomBackground(); + + this._fnAddGroups(); + this._fnAddButtons(); + + /* Store the original visibility information */ + for ( i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ ) + { + this.s.abOriginal.push( this.s.dt.aoColumns[i].bVisible ); + } + + /* Update on each draw */ + this.s.dt.aoDrawCallback.push( { + "fn": function () { + that._fnDrawCallback.call( that ); + }, + "sName": "ColVis" + } ); + + /* If columns are reordered, then we need to update our exclude list and + * rebuild the displayed list + */ + $(this.s.dt.oInstance).bind( 'column-reorder', function ( e, oSettings, oReorder ) { + for ( i=0, iLen=that.s.aiExclude.length ; i<iLen ; i++ ) { + that.s.aiExclude[i] = oReorder.aiInvertMapping[ that.s.aiExclude[i] ]; + } + + var mStore = that.s.abOriginal.splice( oReorder.iFrom, 1 )[0]; + that.s.abOriginal.splice( oReorder.iTo, 0, mStore ); + + that.fnRebuild(); + } ); + + // Set the initial state + this._fnDrawCallback(); + }, + + + /** + * Apply any customisation to the settings from the DataTables initialisation + * @method _fnApplyCustomisation + * @returns void + * @private + */ + "_fnApplyCustomisation": function ( init ) + { + $.extend( true, this.s, ColVis.defaults, init ); + + // Slightly messy overlap for the camelCase notation + if ( ! this.s.showAll && this.s.bShowAll ) { + this.s.showAll = this.s.sShowAll; + } + + if ( ! this.s.restore && this.s.bRestore ) { + this.s.restore = this.s.sRestore; + } + + // CamelCase to Hungarian for the column groups + var groups = this.s.groups; + var hungarianGroups = this.s.aoGroups; + if ( groups ) { + for ( var i=0, ien=groups.length ; i<ien ; i++ ) { + if ( groups[i].title ) { + hungarianGroups[i].sTitle = groups[i].title; + } + if ( groups[i].columns ) { + hungarianGroups[i].aiColumns = groups[i].columns; + } + } + } + }, + + + /** + * On each table draw, check the visibility checkboxes as needed. This allows any process to + * update the table's column visibility and ColVis will still be accurate. + * @method _fnDrawCallback + * @returns void + * @private + */ + "_fnDrawCallback": function () + { + var columns = this.s.dt.aoColumns; + var buttons = this.dom.buttons; + var groups = this.s.aoGroups; + var button; + + for ( var i=0, ien=buttons.length ; i<ien ; i++ ) { + button = buttons[i]; + + if ( button.__columnIdx !== undefined ) { + $('input', button).prop( 'checked', columns[ button.__columnIdx ].bVisible ); + } + } + + var allVisible = function ( columnIndeces ) { + for ( var k=0, kLen=columnIndeces.length ; k<kLen ; k++ ) + { + if ( columns[columnIndeces[k]].bVisible === false ) { return false; } + } + return true; + }; + var allHidden = function ( columnIndeces ) { + for ( var m=0 , mLen=columnIndeces.length ; m<mLen ; m++ ) + { + if ( columns[columnIndeces[m]].bVisible === true ) { return false; } + } + return true; + }; + + for ( var j=0, jLen=groups.length ; j<jLen ; j++ ) + { + if ( allVisible(groups[j].aiColumns) ) + { + $('input', this.dom.groupButtons[j]).prop('checked', true); + $('input', this.dom.groupButtons[j]).prop('indeterminate', false); + } + else if ( allHidden(groups[j].aiColumns) ) + { + $('input', this.dom.groupButtons[j]).prop('checked', false); + $('input', this.dom.groupButtons[j]).prop('indeterminate', false); + } + else + { + $('input', this.dom.groupButtons[j]).prop('indeterminate', true); + } + } + }, + + + /** + * Loop through the groups (provided in the settings) and create a button for each. + * @method _fnAddgroups + * @returns void + * @private + */ + "_fnAddGroups": function () + { + var nButton; + + if ( typeof this.s.aoGroups != 'undefined' ) + { + for ( var i=0, iLen=this.s.aoGroups.length ; i<iLen ; i++ ) + { + nButton = this._fnDomGroupButton( i ); + this.dom.groupButtons.push( nButton ); + this.dom.buttons.push( nButton ); + this.dom.collection.appendChild( nButton ); + } + } + }, + + + /** + * Loop through the columns in the table and as a new button for each one. + * @method _fnAddButtons + * @returns void + * @private + */ + "_fnAddButtons": function () + { + var + nButton, + columns = this.s.dt.aoColumns; + + if ( $.inArray( 'all', this.s.aiExclude ) === -1 ) { + for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) + { + if ( $.inArray( i, this.s.aiExclude ) === -1 ) + { + nButton = this._fnDomColumnButton( i ); + nButton.__columnIdx = i; + this.dom.buttons.push( nButton ); + } + } + } + + if ( this.s.order === 'alpha' ) { + this.dom.buttons.sort( function ( a, b ) { + var titleA = columns[ a.__columnIdx ].sTitle; + var titleB = columns[ b.__columnIdx ].sTitle; + + return titleA === titleB ? + 0 : + titleA < titleB ? + -1 : + 1; + } ); + } + + if ( this.s.restore ) + { + nButton = this._fnDomRestoreButton(); + nButton.className += " ColVis_Restore"; + this.dom.buttons.push( nButton ); + } + + if ( this.s.showAll ) + { + nButton = this._fnDomShowXButton( this.s.showAll, true ); + nButton.className += " ColVis_ShowAll"; + this.dom.buttons.push( nButton ); + } + + if ( this.s.showNone ) + { + nButton = this._fnDomShowXButton( this.s.showNone, false ); + nButton.className += " ColVis_ShowNone"; + this.dom.buttons.push( nButton ); + } + + $(this.dom.collection).append( this.dom.buttons ); + }, + + + /** + * Create a button which allows a "restore" action + * @method _fnDomRestoreButton + * @returns {Node} Created button + * @private + */ + "_fnDomRestoreButton": function () + { + var + that = this, + dt = this.s.dt; + + return $( + '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ + this.s.restore+ + '</li>' + ) + .click( function (e) { + for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ ) + { + that.s.dt.oInstance.fnSetColumnVis( i, that.s.abOriginal[i], false ); + } + that._fnAdjustOpenRows(); + that.s.dt.oInstance.fnAdjustColumnSizing( false ); + that.s.dt.oInstance.fnDraw( false ); + } )[0]; + }, + + + /** + * Create a button which allows show all and show node actions + * @method _fnDomShowXButton + * @returns {Node} Created button + * @private + */ + "_fnDomShowXButton": function ( str, action ) + { + var + that = this, + dt = this.s.dt; + + return $( + '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ + str+ + '</li>' + ) + .click( function (e) { + for ( var i=0, iLen=that.s.abOriginal.length ; i<iLen ; i++ ) + { + if (that.s.aiExclude.indexOf(i) === -1) + { + that.s.dt.oInstance.fnSetColumnVis( i, action, false ); + } + } + that._fnAdjustOpenRows(); + that.s.dt.oInstance.fnAdjustColumnSizing( false ); + that.s.dt.oInstance.fnDraw( false ); + } )[0]; + }, + + + /** + * Create the DOM for a show / hide group button + * @method _fnDomGroupButton + * @param {int} i Group in question, order based on that provided in settings + * @returns {Node} Created button + * @private + */ + "_fnDomGroupButton": function ( i ) + { + var + that = this, + dt = this.s.dt, + oGroup = this.s.aoGroups[i]; + + return $( + '<li class="ColVis_Special '+(dt.bJUI ? 'ui-button ui-state-default' : '')+'">'+ + '<label>'+ + '<input type="checkbox" />'+ + '<span>'+oGroup.sTitle+'</span>'+ + '</label>'+ + '</li>' + ) + .click( function (e) { + var showHide = !$('input', this).is(":checked"); + if ( e.target.nodeName.toLowerCase() !== "li" ) + { + showHide = ! showHide; + } + + for ( var j=0 ; j < oGroup.aiColumns.length ; j++ ) + { + that.s.dt.oInstance.fnSetColumnVis( oGroup.aiColumns[j], showHide ); + } + } )[0]; + }, + + + /** + * Create the DOM for a show / hide button + * @method _fnDomColumnButton + * @param {int} i Column in question + * @returns {Node} Created button + * @private + */ + "_fnDomColumnButton": function ( i ) + { + var + that = this, + column = this.s.dt.aoColumns[i], + dt = this.s.dt; + + var title = this.s.fnLabel===null ? + column.sTitle : + this.s.fnLabel( i, column.sTitle, column.nTh ); + + return $( + '<li '+(dt.bJUI ? 'class="ui-button ui-state-default"' : '')+'>'+ + '<label>'+ + '<input type="checkbox" />'+ + '<span>'+title+'</span>'+ + '</label>'+ + '</li>' + ) + .click( function (e) { + var showHide = !$('input', this).is(":checked"); + if ( e.target.nodeName.toLowerCase() !== "li" ) + { + showHide = ! showHide; + } + + /* Need to consider the case where the initialiser created more than one table - change the + * API index that DataTables is using + */ + var oldIndex = $.fn.dataTableExt.iApiIndex; + $.fn.dataTableExt.iApiIndex = that._fnDataTablesApiIndex.call(that); + + // Optimisation for server-side processing when scrolling - don't do a full redraw + if ( dt.oFeatures.bServerSide ) + { + that.s.dt.oInstance.fnSetColumnVis( i, showHide, false ); + that.s.dt.oInstance.fnAdjustColumnSizing( false ); + if (dt.oScroll.sX !== "" || dt.oScroll.sY !== "" ) + { + that.s.dt.oInstance.oApi._fnScrollDraw( that.s.dt ); + } + that._fnDrawCallback(); + } + else + { + that.s.dt.oInstance.fnSetColumnVis( i, showHide ); + } + + $.fn.dataTableExt.iApiIndex = oldIndex; /* Restore */ + + if ( e.target.nodeName.toLowerCase() === 'input' && that.s.fnStateChange !== null ) + { + that.s.fnStateChange.call( that, i, showHide ); + } + } )[0]; + }, + + + /** + * Get the position in the DataTables instance array of the table for this + * instance of ColVis + * @method _fnDataTablesApiIndex + * @returns {int} Index + * @private + */ + "_fnDataTablesApiIndex": function () + { + for ( var i=0, iLen=this.s.dt.oInstance.length ; i<iLen ; i++ ) + { + if ( this.s.dt.oInstance[i] == this.s.dt.nTable ) + { + return i; + } + } + return 0; + }, + + + /** + * Create the element used to contain list the columns (it is shown and + * hidden as needed) + * @method _fnDomCollection + * @returns {Node} div container for the collection + * @private + */ + "_fnDomCollection": function () + { + return $('<ul />', { + 'class': !this.s.dt.bJUI ? + "ColVis_collection" : + "ColVis_collection ui-buttonset ui-buttonset-multi" + } ) + .css( { + 'display': 'none', + 'opacity': 0, + 'position': ! this.s.bCssPosition ? + 'absolute' : + '' + } )[0]; + }, + + + /** + * An element to be placed on top of the activate button to catch events + * @method _fnDomCatcher + * @returns {Node} div container for the collection + * @private + */ + "_fnDomCatcher": function () + { + var + that = this, + nCatcher = document.createElement('div'); + nCatcher.className = "ColVis_catcher"; + + $(nCatcher).click( function () { + that._fnCollectionHide.call( that, null, null ); + } ); + + return nCatcher; + }, + + + /** + * Create the element used to shade the background, and capture hide events (it is shown and + * hidden as needed) + * @method _fnDomBackground + * @returns {Node} div container for the background + * @private + */ + "_fnDomBackground": function () + { + var that = this; + + var background = $('<div></div>') + .addClass( 'ColVis_collectionBackground' ) + .css( 'opacity', 0 ) + .click( function () { + that._fnCollectionHide.call( that, null, null ); + } ); + + /* When considering a mouse over action for the activation, we also consider a mouse out + * which is the same as a mouse over the background - without all the messing around of + * bubbling events. Use the catcher element to avoid messing around with bubbling + */ + if ( this.s.activate == "mouseover" ) + { + background.mouseover( function () { + that.s.overcollection = false; + that._fnCollectionHide.call( that, null, null ); + } ); + } + + return background[0]; + }, + + + /** + * Show the show / hide list and the background + * @method _fnCollectionShow + * @returns void + * @private + */ + "_fnCollectionShow": function () + { + var that = this, i, iLen, iLeft; + var oPos = $(this.dom.button).offset(); + var nHidden = this.dom.collection; + var nBackground = this.dom.background; + var iDivX = parseInt(oPos.left, 10); + var iDivY = parseInt(oPos.top + $(this.dom.button).outerHeight(), 10); + + if ( ! this.s.bCssPosition ) + { + nHidden.style.top = iDivY+"px"; + nHidden.style.left = iDivX+"px"; + } + + $(nHidden).css( { + 'display': 'block', + 'opacity': 0 + } ); + + nBackground.style.bottom ='0px'; + nBackground.style.right = '0px'; + + var oStyle = this.dom.catcher.style; + oStyle.height = $(this.dom.button).outerHeight()+"px"; + oStyle.width = $(this.dom.button).outerWidth()+"px"; + oStyle.top = oPos.top+"px"; + oStyle.left = iDivX+"px"; + + document.body.appendChild( nBackground ); + document.body.appendChild( nHidden ); + document.body.appendChild( this.dom.catcher ); + + /* This results in a very small delay for the end user but it allows the animation to be + * much smoother. If you don't want the animation, then the setTimeout can be removed + */ + $(nHidden).animate({"opacity": 1}, that.s.iOverlayFade); + $(nBackground).animate({"opacity": 0.1}, that.s.iOverlayFade, 'linear', function () { + /* In IE6 if you set the checked attribute of a hidden checkbox, then this is not visually + * reflected. As such, we need to do it here, once it is visible. Unbelievable. + */ + if ( $.browser && $.browser.msie && $.browser.version == "6.0" ) + { + that._fnDrawCallback(); + } + }); + + /* Visual corrections to try and keep the collection visible */ + if ( !this.s.bCssPosition ) + { + iLeft = ( this.s.sAlign=="left" ) ? + iDivX : + iDivX - $(nHidden).outerWidth() + $(this.dom.button).outerWidth(); + + nHidden.style.left = iLeft+"px"; + + var iDivWidth = $(nHidden).outerWidth(); + var iDivHeight = $(nHidden).outerHeight(); + var iDocWidth = $(document).width(); + + if ( iLeft + iDivWidth > iDocWidth ) + { + nHidden.style.left = (iDocWidth-iDivWidth)+"px"; + } + } + + this.s.hidden = false; + }, + + + /** + * Hide the show / hide list and the background + * @method _fnCollectionHide + * @returns void + * @private + */ + "_fnCollectionHide": function ( ) + { + var that = this; + + if ( !this.s.hidden && this.dom.collection !== null ) + { + this.s.hidden = true; + + $(this.dom.collection).animate({"opacity": 0}, that.s.iOverlayFade, function (e) { + this.style.display = "none"; + } ); + + $(this.dom.background).animate({"opacity": 0}, that.s.iOverlayFade, function (e) { + document.body.removeChild( that.dom.background ); + document.body.removeChild( that.dom.catcher ); + } ); + } + }, + + + /** + * Alter the colspan on any fnOpen rows + */ + "_fnAdjustOpenRows": function () + { + var aoOpen = this.s.dt.aoOpenRows; + var iVisible = this.s.dt.oApi._fnVisbleColumns( this.s.dt ); + + for ( var i=0, iLen=aoOpen.length ; i<iLen ; i++ ) { + aoOpen[i].nTr.getElementsByTagName('td')[0].colSpan = iVisible; + } + } +}; + + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Static object methods + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Rebuild the collection for a given table, or all tables if no parameter given + * @method ColVis.fnRebuild + * @static + * @param object oTable DataTable instance to consider - optional + * @returns void + */ +ColVis.fnRebuild = function ( oTable ) +{ + var nTable = null; + if ( typeof oTable != 'undefined' ) + { + nTable = oTable.fnSettings().nTable; + } + + for ( var i=0, iLen=ColVis.aInstances.length ; i<iLen ; i++ ) + { + if ( typeof oTable == 'undefined' || nTable == ColVis.aInstances[i].s.dt.nTable ) + { + ColVis.aInstances[i].fnRebuild(); + } + } +}; + + +ColVis.defaults = { + /** + * Mode of activation. Can be 'click' or 'mouseover' + * @property activate + * @type string + * @default click + */ + active: 'click', + + /** + * Text used for the button + * @property buttonText + * @type string + * @default Show / hide columns + */ + buttonText: 'Show / hide columns', + + /** + * List of columns (integers) which should be excluded from the list + * @property aiExclude + * @type array + * @default [] + */ + aiExclude: [], + + /** + * Show restore button + * @property bRestore + * @type boolean + * @default false + */ + bRestore: false, + + /** + * Restore button text + * @property sRestore + * @type string + * @default Restore original + */ + sRestore: 'Restore original', + + /** + * Show Show-All button + * @property bShowAll + * @type boolean + * @default false + */ + bShowAll: false, + + /** + * Show All button text + * @property sShowAll + * @type string + * @default Restore original + */ + sShowAll: 'Show All', + + /** + * Position of the collection menu when shown - align "left" or "right" + * @property sAlign + * @type string + * @default left + */ + sAlign: 'left', + + /** + * Callback function to tell the user when the state has changed + * @property fnStateChange + * @type function + * @default null + */ + fnStateChange: null, + + /** + * Overlay animation duration in mS + * @property iOverlayFade + * @type integer|false + * @default 500 + */ + iOverlayFade: 500, + + /** + * Label callback for column names. Takes three parameters: 1. the + * column index, 2. the column title detected by DataTables and 3. the + * TH node for the column + * @property fnLabel + * @type function + * @default null + */ + fnLabel: null, + + /** + * Indicate if the column list should be positioned by Javascript, + * visually below the button or allow CSS to do the positioning + * @property bCssPosition + * @type boolean + * @default false + */ + bCssPosition: false, + + /** + * Group buttons + * @property aoGroups + * @type array + * @default [] + */ + aoGroups: [], + + /** + * Button ordering - 'alpha' (alphabetical) or 'column' (table column + * order) + * @property order + * @type string + * @default column + */ + order: 'column' +}; + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Static object properties + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Collection of all ColVis instances + * @property ColVis.aInstances + * @static + * @type Array + * @default [] + */ +ColVis.aInstances = []; + + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Constants + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/** + * Name of this class + * @constant CLASS + * @type String + * @default ColVis + */ +ColVis.prototype.CLASS = "ColVis"; + + +/** + * ColVis version + * @constant VERSION + * @type String + * @default See code + */ +ColVis.VERSION = "1.1.1"; +ColVis.prototype.VERSION = ColVis.VERSION; + + + + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Initialisation + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Register a new feature with DataTables + */ +if ( typeof $.fn.dataTable == "function" && + typeof $.fn.dataTableExt.fnVersionCheck == "function" && + $.fn.dataTableExt.fnVersionCheck('1.7.0') ) +{ + $.fn.dataTableExt.aoFeatures.push( { + "fnInit": function( oDTSettings ) { + var init = oDTSettings.oInit; + var colvis = new ColVis( oDTSettings, init.colVis || init.oColVis || {} ); + return colvis.button(); + }, + "cFeature": "C", + "sFeature": "ColVis" + } ); +} +else +{ + alert( "Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download"); +} + + +// Make ColVis accessible from the DataTables instance +$.fn.dataTable.ColVis = ColVis; +$.fn.DataTable.ColVis = ColVis; + + +return ColVis; +}; // /factory + + +// Define as an AMD module if possible +if ( typeof define === 'function' && define.amd ) { + define( ['jquery', 'datatables'], factory ); +} +else if ( typeof exports === 'object' ) { + // Node/CommonJS + factory( require('jquery'), require('datatables') ); +} +else if ( jQuery && !jQuery.fn.dataTable.ColVis ) { + // Otherwise simply initialise as normal, stopping multiple evaluation + factory( jQuery, jQuery.fn.dataTable ); +} + + +})(window, document); + diff --git a/plugins/datatables/dataTables.fixedColumns.min.js b/plugins/datatables/dataTables.fixedColumns.min.js new file mode 100644 index 0000000..6e3a593 --- /dev/null +++ b/plugins/datatables/dataTables.fixedColumns.min.js @@ -0,0 +1,35 @@ +/*! + FixedColumns 3.2.2 + ©2010-2016 SpryMedia Ltd - datatables.net/license +*/ +(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(q){return d(q,window,document)}):"object"===typeof exports?module.exports=function(q,r){q||(q=window);if(!r||!r.fn.dataTable)r=require("datatables.net")(q,r).$;return d(r,q,q.document)}:d(jQuery,window,document)})(function(d,q,r,t){var s=d.fn.dataTable,u,m=function(a,b){var c=this;if(this instanceof m){if(b===t||!0===b)b={};var e=d.fn.dataTable.camelToHungarian;e&&(e(m.defaults,m.defaults,!0),e(m.defaults, +b));e=(new d.fn.dataTable.Api(a)).settings()[0];this.s={dt:e,iTableColumns:e.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[],rtl:"rtl"===d(e.nTable).css("direction")};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(e._oFixedColumns)throw"FixedColumns already initialised on this table"; +e._oFixedColumns=this;e._bInitComplete?this._fnConstruct(b):e.oApi._fnCallbackReg(e,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};d.extend(m.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height= +b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+ +m.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,m.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=d("div."+ +a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c,e=!1;d(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(){e=!0;d(r).one("mouseup",function(){e=!1})});d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="main")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="main");if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop}); +var f="onwheel"in r.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="left")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="left");"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX}); +if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="right")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="right");"right"===c&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(q).on("resize.DTFC",function(){b._fnGridLayout.call(b)}); +var g=!0,h=d(this.s.dt.nTable);h.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,g);g=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,e,f){if(f===t||f)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(a){"dt"===a.namespace&&b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){h.off(".DTFC");d(b.dom.scroller).off(".DTFC");d(q).off(".DTFC");d(b.s.dt.nTableWrapper).off(".DTFC"); +d(b.dom.grid.left.liner).off(".DTFC "+f);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off(".DTFC "+f);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(e,f){var g=d(f.nTh),h;if(g.filter(":visible").length){var i=g.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"=== +typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(g.width());e<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=e&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header= +this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0], +e=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=e,this.dom.grid.left.head=e.childNodes[0],this.dom.grid.left.body=e.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(e));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner= +d("div.DTFC_RightBodyLiner",c)[0],f.style.right=a.bar+"px",b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=e.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2]; +this.s.rtl&&d("div.DTFC_RightHeadBlocker",c).css({left:-a.bar+"px",right:""})},_fnGridLayout:function(){var a=this,b=this.dom.grid;d(b.wrapper).width();var c=d(this.s.dt.nTable.parentNode).outerHeight(),e=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),g=this.s.iLeftWidth,h=this.s.iRightWidth,i="rtl"===d(this.dom.body).css("direction"),j=function(b,c){f.bar?a._firefoxScrollError()?34<d(b).height()&&(b.style.width=c+f.bar+"px"):b.style.width=c+f.bar+"px":(b.style.width= +c+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(c-=f.bar);b.wrapper.style.height=e+"px";0<this.s.iLeftColumns&&(e=b.left.wrapper,e.style.width=g+"px",e.style.height="1px",i?(e.style.left="",e.style.right=0):(e.style.left=0,e.style.right=""),b.left.body.style.height=c+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),j(b.left.liner,g),b.left.liner.style.height=c+"px");0<this.s.iRightColumns&&(e=b.right.wrapper,e.style.width=h+"px",e.style.height="1px",this.s.rtl? +(e.style.left=f.y?f.bar+"px":0,e.style.right=""):(e.style.left="",e.style.right=f.y?f.bar+"px":0),b.right.body.style.height=c+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),j(b.right.liner,h),b.right.liner.style.height=c+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight> +b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b); +this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,c){for(var e=[],f=[],g=[],h=0,i=a.length;h<i;h++){var j=[];j.nTr=d(a[h].nTr).clone(c,!1)[0];for(var l=0,o=this.s.iTableColumns;l<o;l++)if(-1!==d.inArray(l,b)){var p=d.inArray(a[h][l].cell,g);-1===p?(p=d(a[h][l].cell).clone(c, +!1)[0],f.push(p),g.push(a[h][l].cell),j.push({cell:p,unique:a[h][l].unique})):j.push({cell:f[p],unique:a[h][l].unique})}e.push(j)}return e},_fnClone:function(a,b,c,e){var f=this,g,h,i,j,l,o,p,n,m,k=this.s.dt;if(e){d(a.header).remove();a.header=d(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(k.aoHeader,c,!0);j=d(">thead",a.header);j.empty();g=0;for(h=n.length;g<h;g++)j[0].appendChild(n[g].nTr);k.oApi._fnDrawHead(k, +n,!0)}else{n=this._fnCopyLayout(k.aoHeader,c,!1);m=[];k.oApi._fnDetectHeader(m,d(">thead",a.header)[0]);g=0;for(h=n.length;g<h;g++){i=0;for(j=n[g].length;i<j;i++)m[g][i].cell.className=n[g][i].cell.className,d("span.DataTables_sort_icon",m[g][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",n[g][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(d(a.body).remove(), +a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=k.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*k.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",a.body).remove();var q=d("tbody",a.body)[0];d(q).empty();if(0<k.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(p=0;p<c.length;p++)l=c[p],o=d(k.aoColumns[l].nTh).clone(!0)[0],o.innerHTML="",j=o.style,j.paddingTop= +"0",j.paddingBottom="0",j.borderTopWidth="0",j.borderBottomWidth="0",j.height=0,j.width=f.s.aiInnerWidths[l]+"px",h.appendChild(o);d(">tbody>tr",f.dom.body).each(function(a){var a=f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a,b=f.s.dt.aoData[a].anCells||d(this).children("td, th"),e=this.cloneNode(false);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(p=0;p<c.length;p++){l=c[p];if(b.length>0){o=d(b[l]).clone(true,true)[0];o.setAttribute("data-dt-row", +a);o.setAttribute("data-dt-column",p);e.appendChild(o)}}q.appendChild(e)})}else d(">tbody>tr",f.dom.body).each(function(){o=this.cloneNode(true);o.className=o.className+" DTFC_NoData";d("td",o).html("");q.appendChild(o)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";k.oScroller!==t&&(h=k.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer)));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody", +f.dom.body,a.body);if(null!==k.nTFoot){if(e){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(k.aoFooter,c,!0);b=d(">tfoot",a.footer);b.empty();g=0;for(h=n.length;g<h;g++)b[0].appendChild(n[g].nTr);k.oApi._fnDrawHead(k,n,!0)}else{n=this._fnCopyLayout(k.aoFooter,c,!1);b=[];k.oApi._fnDetectHeader(b,d(">tfoot",a.footer)[0]);g=0;for(h=n.length;g< +h;g++){i=0;for(j=n[g].length;i<j;i++)b[g][i].cell.className=n[g][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=k.oApi._fnGetUniqueThs(k,d(">thead",a.header)[0]);d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"});null!==f.s.dt.nTFoot&&(b=k.oApi._fnGetUniqueThs(k,d(">tfoot",a.footer)[0]),d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"}))},_fnGetTrNodes:function(a){for(var b=[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&& +b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)){var e,f,g=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var g=this._fnGetTrNodes(g),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)e=g[c].offsetHeight,f=b[c].offsetHeight,e=f>e?f:e,"semiauto"==this.s.sHeightMatch&&(g[c]._DTTC_iHeight=e),h.push(e);c=0;for(a=b.length;c<a;c++)b[c].style.height= +h[c]+"px",g[c].style.height=h[c]+"px"}},_firefoxScrollError:function(){if(u===t){var a=d("<div/>").css({position:"absolute",top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});m.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};m.version="3.2.2";s.Api.register("fixedColumns()",function(){return this});s.Api.register("fixedColumns().update()",function(){return this.iterator("table", +function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});s.Api.register("fixedColumns().relayout()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});s.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});s.Api.register("fixedColumns().rowIndex()",function(a){a=d(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]: +this.row(a).index()});s.Api.register("fixedColumns().cellIndex()",function(a){a=d(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index(),b=this.rows({page:"current"}).indexes()[b],a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()});d(r).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){var c=b.oInit.fixedColumns, +e=s.defaults.fixedColumns;if(c||e)e=d.extend({},c,e),!1!==c&&new m(b,e)}});d.fn.dataTable.FixedColumns=m;return d.fn.DataTable.FixedColumns=m}); diff --git a/plugins/datatables/dataTables.fixedHeader.min.js b/plugins/datatables/dataTables.fixedHeader.min.js new file mode 100644 index 0000000..2f33307 --- /dev/null +++ b/plugins/datatables/dataTables.fixedHeader.min.js @@ -0,0 +1,16 @@ +/*! + FixedHeader 3.1.0 + ©2009-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return d(g,window,document)}):"object"===typeof exports?module.exports=function(g,h){g||(g=window);if(!h||!h.fn.dataTable)h=require("datatables.net")(g,h).$;return d(h,g,g.document)}:d(jQuery,window,document)})(function(d,g,h,k){var j=d.fn.dataTable,l=0,i=function(b,a){if(!(this instanceof i))throw"FixedHeader must be initialised with the 'new' keyword.";!0===a&&(a={});b=new j.Api(b);this.c=d.extend(!0, +{},i.defaults,a);this.s={dt:b,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:d(g).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:b.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+l++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:d(b.table().header()),tbody:d(b.table().body()),tfoot:d(b.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null, +placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();var e=b.settings()[0];if(e._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;e._fixedHeader=this;this._constructor()};d.extend(i.prototype,{enable:function(b){this.s.enable=b;this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0);this.update()},headerOffset:function(b){b!==k&&(this.c.headerOffset= +b,this.update());return this.c.headerOffset},footerOffset:function(b){b!==k&&(this.c.footerOffset=b,this.update());return this.c.footerOffset},update:function(){this._positions();this._scroll(!0)},_constructor:function(){var b=this,a=this.s.dt;d(g).on("scroll"+this.s.namespace,function(){b._scroll()}).on("resize"+this.s.namespace,function(){b.s.position.windowHeight=d(g).height();b.update()});a.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc",function(){b.update()});a.on("destroy.dtfc", +function(){a.off(".dtfc");d(g).off(b.s.namespace)});this._positions();this._scroll()},_clone:function(b,a){var e=this.s.dt,c=this.dom[b],f="header"===b?this.dom.thead:this.dom.tfoot;!a&&c.floating?c.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(c.floating&&(c.placeholder.remove(),c.floating.children().detach(),c.floating.remove()),c.floating=d(e.table().node().cloneNode(!1)).removeAttr("id").append(f).appendTo("body"),c.placeholder=f.clone(!1),c.host.append(c.placeholder),this._matchWidths(c.placeholder, +c.floating))},_matchWidths:function(b,a){var e=function(c){var f=d(c,b).map(function(){return d(this).width()}).toArray();d(c,a).each(function(a){d(this).width(f[a]).css("min-width",f[a])})};e("th");e("td")},_unsize:function(b){var a=this.dom[b].floating;a&&("footer"===b||"header"===b&&!this.s.autoWidth)&&d("th, td",a).css("width","")},_horizontal:function(b,a){var e=this.dom[b],c=this.s.position,f=this.s.scrollLeft;e.floating&&f[b]!==a&&(e.floating.css("left",c.left-a),f[b]=a)},_modeChange:function(b, +a,e){var c=this.dom[a],f=this.s.position;if("in-place"===b){if(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),this._unsize(a),c.host.append("header"===a?this.dom.thead:this.dom.tfoot),c.floating)c.floating.remove(),c.floating=null}else"in"===b?(this._clone(a,e),c.floating.addClass("fixedHeader-floating").css("header"===a?"top":"bottom",this.c[a+"Offset"]).css("left",f.left+"px").css("width",f.width+"px"),"footer"===a&&c.floating.css("top","")):"below"===b?(this._clone(a,e),c.floating.addClass("fixedHeader-locked").css("top", +f.tfootTop-f.theadHeight).css("left",f.left+"px").css("width",f.width+"px")):"above"===b&&(this._clone(a,e),c.floating.addClass("fixedHeader-locked").css("top",f.tbodyTop).css("left",f.left+"px").css("width",f.width+"px"));this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[a+"Mode"]=b},_positions:function(){var b=this.s.dt.table(),a=this.s.position,e=this.dom,b=d(b.node()),c=b.children("thead"),f=b.children("tfoot"),e=e.tbody;a.visible=b.is(":visible");a.width=b.outerWidth();a.left=b.offset().left; +a.theadTop=c.offset().top;a.tbodyTop=e.offset().top;a.theadHeight=a.tbodyTop-a.theadTop;f.length?(a.tfootTop=f.offset().top,a.tfootBottom=a.tfootTop+f.outerHeight(),a.tfootHeight=a.tfootBottom-a.tfootTop):(a.tfootTop=a.tbodyTop+e.outerHeight(),a.tfootBottom=a.tfootTop,a.tfootHeight=a.tfootTop)},_scroll:function(b){var a=d(h).scrollTop(),e=d(h).scrollLeft(),c=this.s.position,f;if(this.s.enable&&(this.c.header&&(f=!c.visible||a<=c.theadTop-this.c.headerOffset?"in-place":a<=c.tfootTop-c.theadHeight- +this.c.headerOffset?"in":"below",(b||f!==this.s.headerMode)&&this._modeChange(f,"header",b),this._horizontal("header",e)),this.c.footer&&this.dom.tfoot.length))a=!c.visible||a+c.windowHeight>=c.tfootBottom+this.c.footerOffset?"in-place":c.windowHeight+a>c.tbodyTop+c.tfootHeight+this.c.footerOffset?"in":"above",(b||a!==this.s.footerMode)&&this._modeChange(a,"footer",b),this._horizontal("footer",e)}});i.version="3.1.0";i.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0};d.fn.dataTable.FixedHeader= +i;d.fn.DataTable.FixedHeader=i;d(h).on("init.dt.dtb",function(b,a){if("dt"===b.namespace){var e=a.oInit.fixedHeader||j.defaults.fixedHeader;e&&!a._fixedHeader&&new i(a,e)}});j.Api.register("fixedHeader()",function(){});j.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.update()})});j.Api.register("fixedHeader.enable()",function(b){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.enable(b!==k?b:!0)})});j.Api.register("fixedHeader.disable()", +function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.enable(!1)})});d.each(["header","footer"],function(b,a){j.Api.register("fixedHeader."+a+"Offset()",function(b){var c=this.context;return b===k?c.length&&c[0]._fixedHeader?c[0]._fixedHeader[a+"Offset"]():k:this.iterator("table",function(c){if(c=c._fixedHeader)c[a+"Offset"](b)})})});return i}); diff --git a/plugins/datatables/dataTables.keyTable.min.js b/plugins/datatables/dataTables.keyTable.min.js new file mode 100644 index 0000000..ebbc185 --- /dev/null +++ b/plugins/datatables/dataTables.keyTable.min.js @@ -0,0 +1,18 @@ +/*! + KeyTable 2.1.0 + ©2009-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(k){return e(k,window,document)}):"object"===typeof exports?module.exports=function(k,j){k||(k=window);if(!j||!j.fn.dataTable)j=require("datatables.net")(k,j).$;return e(j,k,k.document)}:e(jQuery,window,document)})(function(e,k,j,n){var g=e.fn.dataTable,l=function(a,b){if(!g.versionCheck||!g.versionCheck("1.10.8"))throw"KeyTable requires DataTables 1.10.8 or newer";this.c=e.extend(!0,{},g.defaults.keyTable, +l.defaults,b);this.s={dt:new g.Api(a),enable:!0};this.dom={};var d=this.s.dt.settings()[0],c=d.keytable;if(c)return c;d.keytable=this;this._constructor()};e.extend(l.prototype,{blur:function(){this._blur()},enable:function(a){this.s.enable=a},focus:function(a,b){this._focus(this.s.dt.cell(a,b))},focused:function(a){if(!this.s.lastFocus)return!1;var b=this.s.lastFocus.index();return a.row===b.row&&a.column===b.column},_constructor:function(){this._tabInput();var a=this,b=this.s.dt,d=e(b.table().node()); +"static"===d.css("position")&&d.css("position","relative");e(b.table().body()).on("click.keyTable","th, td",function(){if(!1!==a.s.enable){var c=b.cell(this);c.any()&&a._focus(c)}});e(j.body).on("keydown.keyTable",function(b){a._key(b)});if(this.c.blurable)e(j.body).on("click.keyTable",function(c){e(c.target).parents(".dataTables_filter").length&&a._blur();e(c.target).parents().filter(b.table().container()).length||e(c.target).parents("div.DTE").length||a._blur()});if(this.c.editor)b.on("key.kt", +function(b,d,e,h,i){a._editor(e,i)});if(b.settings()[0].oFeatures.bStateSave)b.on("stateSaveParams.keyTable",function(b,d,e){e.keyTable=a.s.lastFocus?a.s.lastFocus.index():null});b.on("destroy.keyTable",function(){b.off(".keyTable");e(b.table().body()).off("click.keyTable","th, td");e(j.body).off("keydown.keyTable").off("click.keyTable")});(d=b.state.loaded())&&d.keyTable?b.cell(d.keyTable).focus():this.c.focus&&b.cell(this.c.focus).focus()},_blur:function(){if(this.s.enable&&this.s.lastFocus){var a= +this.s.lastFocus;e(a.node()).removeClass(this.c.className);this.s.lastFocus=null;this._emitEvent("key-blur",[this.s.dt,a])}},_columns:function(){var a=this.s.dt,b=a.columns(this.c.columns).indexes(),d=[];a.columns(":visible").every(function(a){-1!==b.indexOf(a)&&d.push(a)});return d},_editor:function(a,b){var d=this.s.dt,c=this.c.editor;b.stopPropagation();c.inline(this.s.lastFocus.index());var f=e("div.DTE input");f.length&&f[0].select();d.keys.enable("navigation-only");d.one("key-blur.editor",function(){c.displayed()&& +c.submit()});c.one("close",function(){d.keys.enable(!0);d.off("key-blur.editor")})},_emitEvent:function(a,b){this.s.dt.iterator("table",function(d){e(d.nTable).triggerHandler(a,b)})},_focus:function(a,b){var d=this,c=this.s.dt,f=c.page.info(),m=this.s.lastFocus;if(this.s.enable){if("number"!==typeof a){var h=a.index(),b=h.column,a=c.rows({filter:"applied",order:"applied"}).indexes().indexOf(h.row);f.serverSide&&(a+=f.start)}if(-1!==f.length&&(a<f.start||a>=f.start+f.length))c.one("draw",function(){d._focus(a, +b)}).page(Math.floor(a/f.length)).draw(!1);else if(-1!==e.inArray(b,this._columns())){f.serverSide&&(a-=f.start);f=c.cell(":eq("+a+")",b,{search:"applied"});if(m){if(m.node()===f.node())return;this._blur()}m=e(f.node());m.addClass(this.c.className);this._scroll(e(k),e(j.body),m,"offset");h=c.table().body().parentNode;h!==c.table().header().parentNode&&(h=e(h.parentNode),this._scroll(h,h,m,"position"));this.s.lastFocus=f;this._emitEvent("key-focus",[this.s.dt,f]);c.state.save()}}},_key:function(a){if(this.s.enable&& +!(0===a.keyCode||a.ctrlKey||a.metaKey||a.altKey)){var b=this.s.lastFocus;if(b){var d=this,c=this.s.dt;if(!(this.c.keys&&-1===e.inArray(a.keyCode,this.c.keys)))switch(a.keyCode){case 9:this._shift(a,a.shiftKey?"left":"right",!0);break;case 27:this.s.blurable&&!0===this.s.enable&&this._blur();break;case 33:case 34:a.preventDefault();var f=c.cells({page:"current"}).nodes().indexOf(b.node());c.one("draw",function(){var a=c.cells({page:"current"}).nodes();d._focus(c.cell(f<a.length?a[f]:a[a.length-1]))}).page(33=== +a.keyCode?"previous":"next").draw(!1);break;case 35:case 36:a.preventDefault();b=c.cells({page:"current"}).indexes();this._focus(c.cell(b[35===a.keyCode?b.length-1:0]));break;case 37:this._shift(a,"left");break;case 38:this._shift(a,"up");break;case 39:this._shift(a,"right");break;case 40:this._shift(a,"down");break;default:!0===this.s.enable&&this._emitEvent("key",[c,a.keyCode,this.s.lastFocus,a])}}}},_scroll:function(a,b,d,c){var c=d[c](),f=d.outerHeight(),d=d.outerWidth(),e=b.scrollTop(),h=b.scrollLeft(), +i=a.height(),a=a.width();c.top<e&&b.scrollTop(c.top);c.left<h&&b.scrollLeft(c.left);c.top+f>e+i&&b.scrollTop(c.top+f-i);c.left+d>h+a&&b.scrollLeft(c.left+d-a)},_shift:function(a,b,d){var c=this.s.dt,f=c.page.info(),j=f.recordsDisplay,h=this.s.lastFocus,i=this._columns();if(h){var g=c.rows({filter:"applied",order:"applied"}).indexes().indexOf(h.index().row);f.serverSide&&(g+=f.start);c=c.columns(i).indexes().indexOf(h.index().column);f=i[c];"right"===b?c>=i.length-1?(g++,f=i[0]):f=i[c+1]:"left"=== +b?0===c?(g--,f=i[i.length-1]):f=i[c-1]:"up"===b?g--:"down"===b&&g++;0<=g&&g<j&&-1!==e.inArray(f,i)?(a.preventDefault(),this._focus(g,f)):!d||!this.c.blurable?a.preventDefault():this._blur()}},_tabInput:function(){var a=this,b=this.s.dt,d=null!==this.c.tabIndex?this.c.tabIndex:b.settings()[0].iTabIndex;if(-1!=d)e('<div><input type="text" tabindex="'+d+'"/></div>').css({position:"absolute",height:1,width:0,overflow:"hidden"}).insertBefore(b.table().node()).children().on("focus",function(){a._focus(b.cell(":eq(0)", +{page:"current"}))})}});l.defaults={blurable:!0,className:"focus",columns:"",editor:null,focus:null,keys:null,tabIndex:null};l.version="2.1.0";e.fn.dataTable.KeyTable=l;e.fn.DataTable.KeyTable=l;g.Api.register("cell.blur()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.blur()})});g.Api.register("cell().focus()",function(){return this.iterator("cell",function(a,b,d){a.keytable&&a.keytable.focus(b,d)})});g.Api.register("keys.disable()",function(){return this.iterator("table", +function(a){a.keytable&&a.keytable.enable(!1)})});g.Api.register("keys.enable()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable.enable(a===n?!0:a)})});g.ext.selector.cell.push(function(a,b,d){var b=b.focused,a=a.keytable,c=[];if(!a||b===n)return d;for(var f=0,e=d.length;f<e;f++)(!0===b&&a.focused(d[f])||!1===b&&!a.focused(d[f]))&&c.push(d[f]);return c});e(j).on("preInit.dt.dtk",function(a,b){if("dt"===a.namespace){var d=b.oInit.keys,c=g.defaults.keys;if(d||c)c=e.extend({}, +d,c),!1!==d&&new l(b,c)}});return l}); diff --git a/plugins/datatables/dataTables.responsive.min.js b/plugins/datatables/dataTables.responsive.min.js new file mode 100644 index 0000000..ed8ce3d --- /dev/null +++ b/plugins/datatables/dataTables.responsive.min.js @@ -0,0 +1,23 @@ +/*! + Responsive 2.0.0 + 2014-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return c(l,window,document)}):"object"===typeof exports?module.exports=function(l,k){l||(l=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(l,k).$;return c(k,l,l.document)}:c(jQuery,window,document)})(function(c,l,k,p){var n=c.fn.dataTable,j=function(a,b){if(!n.versionCheck||!n.versionCheck("1.10.3"))throw"DataTables Responsive requires DataTables 1.10.3 or newer";this.s={dt:new n.Api(a),columns:[], +current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details&&(b.details={type:b.details}),this.c=c.extend(!0,{},j.defaults,n.defaults.responsive,b),a.responsive=this,this._constructor())};c.extend(j.prototype,{_constructor:function(){var a=this,b=this.s.dt,d=b.settings()[0];b.settings()[0]._responsive=this;c(l).on("resize.dtr orientationchange.dtr",n.util.throttle(function(){a._resize()}));d.oApi._fnCallbackReg(d,"aoRowCreatedCallback",function(e){-1!==c.inArray(!1,a.s.current)&& +c("td, th",e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&c(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");c(b.table().body()).off(".dtr");c(l).off("resize.dtr orientationchange.dtr");c.each(a.s.current,function(e,b){!1===b&&a._setColumnVis(e,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>b.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(a._detailsInit(),b.on("column-visibility.dtr", +function(){a._classLogic();a._resizeAuto();a._resize()}),b.on("draw.dtr",function(){a._redrawChildren()}),c(b.table().node()).addClass("dtr-"+d.type));b.on("column-reorder.dtr",function(b,d,c){if(c.drop){a._classLogic();a._resizeAuto();a._resize()}});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,d=this.s.columns,e,f,h=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),g=c.map(d, +function(b){return b.auto&&null===b.minWidth?!1:!0===b.auto?"-":-1!==c.inArray(a,b.includeIn)}),m=0;e=0;for(f=g.length;e<f;e++)!0===g[e]&&(m+=d[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;b=b.table().container().offsetWidth-e-m;e=0;for(f=g.length;e<f;e++)d[e].control&&(b-=d[e].minWidth);m=!1;e=0;for(f=h.length;e<f;e++){var i=h[e].columnIdx;"-"===g[i]&&(!d[i].control&&d[i].minWidth)&&(m||0>b-d[i].minWidth?(m=!0,g[i]=!1):g[i]=!0,b-=d[i].minWidth)}h=!1;e=0;for(f=d.length;e<f;e++)if(!d[e].control&& +!d[e].never&&!g[e]){h=!0;break}e=0;for(f=d.length;e<f;e++)d[e].control&&(g[e]=h);-1===c.inArray(!0,g)&&(g[0]=!0);return g},_classLogic:function(){var a=this,b=this.c.breakpoints,d=this.s.dt,e=d.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=d.settings()[0].aoColumns[a].responsivePriority;a===p&&(a=c(b.header).data("priority")!==p?1*c(b.header).data("priority"):1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),f=function(a, +b){var d=e[a].includeIn;-1===c.inArray(b,d)&&d.push(b)},h=function(d,c,i,h){if(i)if("max-"===i){h=a._find(c).width;c=0;for(i=b.length;c<i;c++)b[c].width<=h&&f(d,b[c].name)}else if("min-"===i){h=a._find(c).width;c=0;for(i=b.length;c<i;c++)b[c].width>=h&&f(d,b[c].name)}else{if("not-"===i){c=0;for(i=b.length;c<i;c++)-1===b[c].name.indexOf(h)&&f(d,b[c].name)}}else e[d].includeIn.push(c)};e.each(function(a,e){for(var d=a.className.split(" "),f=!1,j=0,l=d.length;j<l;j++){var k=c.trim(d[j]);if("all"===k){f= +!0;a.includeIn=c.map(b,function(a){return a.name});return}if("none"===k||a.never){f=!0;return}if("control"===k){f=!0;a.control=!0;return}c.each(b,function(a,b){var c=b.name.split("-"),d=k.match(RegExp("(min\\-|max\\-|not\\-)?("+c[0]+")(\\-[_a-zA-Z0-9])?"));d&&(f=!0,d[2]===c[0]&&d[3]==="-"+c[1]?h(e,b.name,d[1],d[2]+d[3]):d[2]===c[0]&&!d[3]&&h(e,b.name,d[1],d[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var d=this,e=this.s.dt,f=this.c.details.display(a,b,function(){return d.c.details.renderer(e, +a[0],d._detailsObj(a[0]))});(!0===f||!1===f)&&c(e.table().node()).triggerHandler("responsive-display.dt",[e,a,f,b])},_detailsInit:function(){var a=this,b=this.s.dt,d=this.c.details;"inline"===d.type&&(d.target="td:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();c(b.table().body()).on("keyup.dtr","td",function(a){a.keyCode===13&&c(this).data("dtr-keyboard")&&c(this).click()});var e=d.target,d="string"===typeof e?e:"td";c(b.table().body()).on("mousedown.dtr",d,function(a){a.preventDefault()}).on("click.dtr", +d,function(){if(c(b.table().node()).hasClass("collapsed")&&b.row(c(this).closest("tr")).length){if(typeof e==="number"){var d=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==d)return}d=b.row(c(this).closest("tr"));a._detailsDisplay(d,false)}})},_detailsObj:function(a){var b=this,d=this.s.dt;return c.map(this.s.columns,function(c,f){if(!c.never)return{title:d.settings()[0].aoColumns[f].sTitle,data:d.cell(a,f).render(b.c.orthogonal),hidden:d.column(f).visible()&&!b.s.current[f]}})}, +_find:function(a){for(var b=this.c.breakpoints,d=0,c=b.length;d<c;d++)if(b[d].name===a)return b[d]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,d=c(l).width(),e=this.c.breakpoints,f=e[0].name,h=this.s.columns,g,m=this.s.current.slice();for(g=e.length-1;0<=g;g--)if(d<=e[g].width){f=e[g].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;g=0; +for(d=h.length;g<d;g++)if(!1===i[g]&&!h[g].never){e=!0;break}c(b.table().node()).toggleClass("collapsed",e);var j=!1;b.columns().eq(0).each(function(b,c){i[c]!==m[c]&&(j=!0,a._setColumnVis(b,i[c]))});j&&this._redrawChildren()},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==c.inArray(!0,c.map(b,function(a){return a.auto}))){a.table().node();var d=a.table().node().cloneNode(!1),e=c(a.table().header().cloneNode(!1)).appendTo(d),f=c(a.table().body().cloneNode(!1)).appendTo(d), +h=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c(f).append(c(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=c(f.cloneNode(!1)).appendTo(d),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c("<tr/>").append(g).appendTo(f)}c("<tr/>").append(h).appendTo(e);"inline"===this.c.details.type&&c(d).addClass("dtr-inline collapsed"); +d=c("<div/>").css({width:1,height:1,overflow:"hidden"}).append(d);d.insertBefore(a.table().node());h.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(a,b){var d=this.s.dt,e=b?"":"none";c(d.column(a).header()).css("display",e);c(d.column(a).footer()).css("display",e);d.column(a).nodes().to$().css("display",e)},_tabIndexes:function(){var a=this.s.dt,b=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],e=this.c.details.target; +b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");c("number"===typeof e?":eq("+e+")":e,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1)}});j.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];j.display={childRow:function(a,b,d){if(b){if(c(a.node()).hasClass("parent"))return a.child(d(),"child").show(),!0}else{if(a.child.isShown())return a.child(!1), +c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,d){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0},modal:function(a){return function(b,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){h.remove();c(k).off("keypress.dtr")},h=c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(c('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body"); +a&&a.header&&h.find("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>");c(k).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}}}};j.defaults={breakpoints:j.breakpoints,auto:!0,details:{display:j.display.childRow,renderer:function(a,b,d){return(a=c.map(d,function(a,b){return a.hidden?'<li data-dtr-index="'+b+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?c('<ul data-dtr-index="'+b+'"/>').append(a):!1},target:0, +type:"inline"},orthogonal:"display"};var o=c.fn.dataTable.Api;o.register("responsive()",function(){return this});o.register("responsive.index()",function(a){a=c(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});o.register("responsive.rebuild()",function(){return this.iterator("table",function(a){a._responsive&&a._responsive._classLogic()})});o.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})}); +o.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==c.inArray(!1,a._responsive.s.current):!1});j.version="2.0.0";c.fn.dataTable.Responsive=j;c.fn.DataTable.Responsive=j;c(k).on("init.dt.dtr",function(a,b){if("dt"===a.namespace&&(c(b.nTable).hasClass("responsive")||c(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||n.defaults.responsive)){var d=b.oInit.responsive;!1!==d&&new j(b,c.isPlainObject(d)?d:{})}});return j}); diff --git a/plugins/datatables/dataTables.scroller.min.js b/plugins/datatables/dataTables.scroller.min.js new file mode 100644 index 0000000..63424b6 --- /dev/null +++ b/plugins/datatables/dataTables.scroller.min.js @@ -0,0 +1,25 @@ +/*! + Scroller 1.4.0 + ©2011-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return e(g,window,document)}):"object"===typeof exports?module.exports=function(g,i){g||(g=window);if(!i||!i.fn.dataTable)i=require("datatables.net")(g,i).$;return e(i,g,g.document)}:e(jQuery,window,document)})(function(e,g,i,l){var m=e.fn.dataTable,h=function(a,b){this instanceof h?(b===l&&(b={}),this.s={dt:e.fn.dataTable.Api(a).settings()[0],tableTop:0,tableBottom:0,redrawTop:0,redrawBottom:0,autoHeight:!0, +viewportRows:0,stateTO:null,drawTO:null,heights:{jump:null,page:null,virtual:null,scroll:null,row:null,viewport:null},topRowFloat:0,scrollDrawDiff:null,loaderVisible:!1},this.s=e.extend(this.s,h.oDefaults,b),this.s.heights.row=this.s.rowHeight,this.dom={force:i.createElement("div"),scroller:null,table:null,loader:null},this.s.dt.oScroller||(this.s.dt.oScroller=this,this._fnConstruct())):alert("Scroller warning: Scroller must be initialised with the 'new' keyword.")};e.extend(h.prototype,{fnRowToPixels:function(a, +b,c){a=c?this._domain("virtualToPhysical",a*this.s.heights.row):this.s.baseScrollTop+(a-this.s.baseRowTop)*this.s.heights.row;return b||b===l?parseInt(a,10):a},fnPixelsToRow:function(a,b,c){var d=a-this.s.baseScrollTop,a=c?this._domain("physicalToVirtual",a)/this.s.heights.row:d/this.s.heights.row+this.s.baseRowTop;return b||b===l?parseInt(a,10):a},fnScrollToRow:function(a,b){var c=this,d=!1,f=this.fnRowToPixels(a),j=a-(this.s.displayBuffer-1)/2*this.s.viewportRows;0>j&&(j=0);if((f>this.s.redrawBottom|| +f<this.s.redrawTop)&&this.s.dt._iDisplayStart!==j)d=!0,f=this.fnRowToPixels(a,!1,!0);"undefined"==typeof b||b?(this.s.ani=d,e(this.dom.scroller).animate({scrollTop:f},function(){setTimeout(function(){c.s.ani=!1},25)})):e(this.dom.scroller).scrollTop(f)},fnMeasure:function(a){this.s.autoHeight&&this._fnCalcRowHeight();var b=this.s.heights;b.viewport=e(this.dom.scroller).height();this.s.viewportRows=parseInt(b.viewport/b.row,10)+1;this.s.dt._iDisplayLength=this.s.viewportRows*this.s.displayBuffer;(a=== +l||a)&&this.s.dt.oInstance.fnDraw(!1)},_fnConstruct:function(){var a=this;if(this.s.dt.oFeatures.bPaginate){this.dom.force.style.position="relative";this.dom.force.style.top="0px";this.dom.force.style.left="0px";this.dom.force.style.width="1px";this.dom.scroller=e("div."+this.s.dt.oClasses.sScrollBody,this.s.dt.nTableWrapper)[0];this.dom.scroller.appendChild(this.dom.force);this.dom.scroller.style.position="relative";this.dom.table=e(">table",this.dom.scroller)[0];this.dom.table.style.position="absolute"; +this.dom.table.style.top="0px";this.dom.table.style.left="0px";e(this.s.dt.nTableWrapper).addClass("DTS");this.s.loadingIndicator&&(this.dom.loader=e('<div class="dataTables_processing DTS_Loading">'+this.s.dt.oLanguage.sLoadingRecords+"</div>").css("display","none"),e(this.dom.scroller.parentNode).css("position","relative").append(this.dom.loader));this.s.heights.row&&"auto"!=this.s.heights.row&&(this.s.autoHeight=!1);this.fnMeasure(!1);this.s.ingnoreScroll=!0;this.s.stateSaveThrottle=this.s.dt.oApi._fnThrottle(function(){a.s.dt.oApi._fnSaveState(a.s.dt)}, +500);e(this.dom.scroller).on("scroll.DTS",function(){a._fnScroll.call(a)});e(this.dom.scroller).on("touchstart.DTS",function(){a._fnScroll.call(a)});this.s.dt.aoDrawCallback.push({fn:function(){a.s.dt.bInitialised&&a._fnDrawCallback.call(a)},sName:"Scroller"});e(g).on("resize.DTS",function(){a.fnMeasure(false);a._fnInfo()});var b=!0;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(c,d){if(b&&a.s.dt.oLoadedState){d.iScroller=a.s.dt.oLoadedState.iScroller;d.iScrollerTopRow=a.s.dt.oLoadedState.iScrollerTopRow; +b=false}else{d.iScroller=a.dom.scroller.scrollTop;d.iScrollerTopRow=a.s.topRowFloat}},"Scroller_State");this.s.dt.oLoadedState&&(this.s.topRowFloat=this.s.dt.oLoadedState.iScrollerTopRow||0);e(this.s.dt.nTable).on("init.dt",function(){a.fnMeasure()});this.s.dt.aoDestroyCallback.push({sName:"Scroller",fn:function(){e(g).off("resize.DTS");e(a.dom.scroller).off("touchstart.DTS scroll.DTS");e(a.s.dt.nTableWrapper).removeClass("DTS");e("div.DTS_Loading",a.dom.scroller.parentNode).remove();e(a.s.dt.nTable).off("init.dt"); +a.dom.table.style.position="";a.dom.table.style.top="";a.dom.table.style.left=""}})}else this.s.dt.oApi._fnLog(this.s.dt,0,"Pagination must be enabled for Scroller")},_fnScroll:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d;if(!this.s.skip&&!this.s.ingnoreScroll)if(this.s.dt.bFiltered||this.s.dt.bSorted)this.s.lastScrollTop=0;else{this._fnInfo();clearTimeout(this.s.stateTO);this.s.stateTO=setTimeout(function(){a.s.dt.oApi._fnSaveState(a.s.dt)},250);if(c<this.s.redrawTop||c> +this.s.redrawBottom){var f=Math.ceil((this.s.displayBuffer-1)/2*this.s.viewportRows);Math.abs(c-this.s.lastScrollTop)>b.viewport||this.s.ani?(d=parseInt(this._domain("physicalToVirtual",c)/b.row,10)-f,this.s.topRowFloat=this._domain("physicalToVirtual",c)/b.row):(d=this.fnPixelsToRow(c)-f,this.s.topRowFloat=this.fnPixelsToRow(c,!1));0>=d?d=0:d+this.s.dt._iDisplayLength>this.s.dt.fnRecordsDisplay()?(d=this.s.dt.fnRecordsDisplay()-this.s.dt._iDisplayLength,0>d&&(d=0)):0!==d%2&&d++;if(d!=this.s.dt._iDisplayStart&& +(this.s.tableTop=e(this.s.dt.nTable).offset().top,this.s.tableBottom=e(this.s.dt.nTable).height()+this.s.tableTop,b=function(){if(a.s.scrollDrawReq===null)a.s.scrollDrawReq=c;a.s.dt._iDisplayStart=d;a.s.dt.oApi._fnDraw(a.s.dt)},this.s.dt.oFeatures.bServerSide?(clearTimeout(this.s.drawTO),this.s.drawTO=setTimeout(b,this.s.serverWait)):b(),this.dom.loader&&!this.s.loaderVisible))this.dom.loader.css("display","block"),this.s.loaderVisible=!0}this.s.lastScrollTop=c;this.s.stateSaveThrottle()}},_domain:function(a, +b){var c=this.s.heights,d;if(c.virtual===c.scroll)return b;var e=(c.scroll-c.viewport)/2,j=(c.virtual-c.viewport)/2;d=j/(e*e);if("virtualToPhysical"===a){if(b<j)return Math.pow(b/d,0.5);b=2*j-b;return 0>b?c.scroll:2*e-Math.pow(b/d,0.5)}if("physicalToVirtual"===a){if(b<e)return b*b*d;b=2*e-b;return 0>b?c.virtual:2*j-b*b*d}},_fnDrawCallback:function(){var a=this,b=this.s.heights,c=this.dom.scroller.scrollTop,d=e(this.s.dt.nTable).height(),f=this.s.dt._iDisplayStart,j=this.s.dt._iDisplayLength,h=this.s.dt.fnRecordsDisplay(); +this.s.skip=!0;this._fnScrollForce();c=0===f?this.s.topRowFloat*b.row:f+j>=h?b.scroll-(h-this.s.topRowFloat)*b.row:this._domain("virtualToPhysical",this.s.topRowFloat*b.row);this.dom.scroller.scrollTop=c;this.s.baseScrollTop=c;this.s.baseRowTop=this.s.topRowFloat;var g=c-(this.s.topRowFloat-f)*b.row;0===f?g=0:f+j>=h&&(g=b.scroll-d);this.dom.table.style.top=g+"px";this.s.tableTop=g;this.s.tableBottom=d+this.s.tableTop;d=(c-this.s.tableTop)*this.s.boundaryScale;this.s.redrawTop=c-d;this.s.redrawBottom= +c+d;this.s.skip=!1;this.s.dt.oFeatures.bStateSave&&null!==this.s.dt.oLoadedState&&"undefined"!=typeof this.s.dt.oLoadedState.iScroller?((c=(this.s.dt.sAjaxSource||a.s.dt.ajax)&&!this.s.dt.oFeatures.bServerSide?!0:!1)&&2==this.s.dt.iDraw||!c&&1==this.s.dt.iDraw)&&setTimeout(function(){e(a.dom.scroller).scrollTop(a.s.dt.oLoadedState.iScroller);a.s.redrawTop=a.s.dt.oLoadedState.iScroller-b.viewport/2;setTimeout(function(){a.s.ingnoreScroll=!1},0)},0):a.s.ingnoreScroll=!1;setTimeout(function(){a._fnInfo.call(a)}, +0);this.dom.loader&&this.s.loaderVisible&&(this.dom.loader.css("display","none"),this.s.loaderVisible=!1)},_fnScrollForce:function(){var a=this.s.heights;a.virtual=a.row*this.s.dt.fnRecordsDisplay();a.scroll=a.virtual;1E6<a.scroll&&(a.scroll=1E6);this.dom.force.style.height=a.scroll>this.s.heights.row?a.scroll+"px":this.s.heights.row+"px"},_fnCalcRowHeight:function(){var a=this.s.dt,b=a.nTable,c=b.cloneNode(!1),d=e("<tbody/>").appendTo(c),f=e('<div class="'+a.oClasses.sWrapper+' DTS"><div class="'+ +a.oClasses.sScrollWrapper+'"><div class="'+a.oClasses.sScrollBody+'"></div></div></div>');for(e("tbody tr:lt(4)",b).clone().appendTo(d);3>e("tr",d).length;)d.append("<tr><td>&nbsp;</td></tr>");e("div."+a.oClasses.sScrollBody,f).append(c);f.appendTo(this.s.dt.nHolding||b.parentNode);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_fnInfo:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c=this.dom.scroller.scrollTop,d=Math.floor(this.fnPixelsToRow(c,!1,this.s.ani)+ +1),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),c=Math.ceil(this.fnPixelsToRow(c+this.s.heights.viewport,!1,this.s.ani)),c=h<c?h:c,g=a.fnFormatNumber(d),i=a.fnFormatNumber(c),k=a.fnFormatNumber(f),l=a.fnFormatNumber(h),g=0===a.fnRecordsDisplay()&&a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfoEmpty+b.sInfoPostFix:0===a.fnRecordsDisplay()?b.sInfoEmpty+" "+b.sInfoFiltered.replace("_MAX_",k)+b.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?b.sInfo.replace("_START_",g).replace("_END_",i).replace("_MAX_", +k).replace("_TOTAL_",l)+b.sInfoPostFix:b.sInfo.replace("_START_",g).replace("_END_",i).replace("_MAX_",k).replace("_TOTAL_",l)+" "+b.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+b.sInfoPostFix;(b=b.fnInfoCallback)&&(g=b.call(a.oInstance,a,d,c,f,h,g));a=a.aanFeatures.i;if("undefined"!=typeof a){d=0;for(f=a.length;d<f;d++)e(a[d]).html(g)}}}});h.defaults={trace:!1,rowHeight:"auto",serverWait:200,displayBuffer:9,boundaryScale:0.5,loadingIndicator:!1};h.oDefaults=h.defaults;h.version= +"1.4.0";"function"==typeof e.fn.dataTable&&"function"==typeof e.fn.dataTableExt.fnVersionCheck&&e.fn.dataTableExt.fnVersionCheck("1.10.0")?e.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInit;new h(a,b.scroller||b.oScroller||{})},cFeature:"S",sFeature:"Scroller"}):alert("Warning: Scroller requires DataTables 1.10.0 or greater - www.datatables.net/download");e(i).on("preInit.dt.dtscroller",function(a,b){if("dt"===a.namespace){var c=b.oInit.scroller,d=m.defaults.scroller;if(c||d)d=e.extend({}, +c,d),!1!==c&&new h(b,d)}});e.fn.dataTable.Scroller=h;e.fn.DataTable.Scroller=h;var k=e.fn.dataTable.Api;k.register("scroller()",function(){return this});k.register("scroller().rowToPixels()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnRowToPixels(a,b,c)});k.register("scroller().pixelsToRow()",function(a,b,c){var d=this.context;if(d.length&&d[0].oScroller)return d[0].oScroller.fnPixelsToRow(a,b,c)});k.register("scroller().scrollToRow()",function(a,b){this.iterator("table", +function(c){c.oScroller&&c.oScroller.fnScrollToRow(a,b)});return this});k.register("row().scrollTo()",function(a){var b=this;this.iterator("row",function(c,d){if(c.oScroller){var e=b.rows({order:"applied",search:"applied"}).indexes().indexOf(d);c.oScroller.fnScrollToRow(e,a)}});return this});k.register("scroller.measure()",function(a){this.iterator("table",function(b){b.oScroller&&b.oScroller.fnMeasure(a)});return this});return h}); diff --git a/plugins/datatables/fixedColumns.dataTables.min.css b/plugins/datatables/fixedColumns.dataTables.min.css new file mode 100644 index 0000000..71e801b --- /dev/null +++ b/plugins/datatables/fixedColumns.dataTables.min.css @@ -0,0 +1 @@ +table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0;z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none} diff --git a/plugins/datatables/fixedHeader.bootstrap.min.css b/plugins/datatables/fixedHeader.bootstrap.min.css new file mode 100644 index 0000000..68f8167 --- /dev/null +++ b/plugins/datatables/fixedHeader.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}} diff --git a/plugins/datatables/jquery.dataTables.min.css b/plugins/datatables/jquery.dataTables.min.css new file mode 100644 index 0000000..bb4ae7c --- /dev/null +++ b/plugins/datatables/jquery.dataTables.min.css @@ -0,0 +1,333 @@ +div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_length select { + width: 75px; + display: inline-block; +} + +div.dataTables_filter { + text-align: right; +} + +div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; +} + +div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} + +div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +@media screen and (max-width: 767px) { + div.dataTables_length, + div.dataTables_filter, + div.dataTables_info, + div.dataTables_paginate { + text-align: center; + } +} + + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} + +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after { + position: absolute; + top: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; /* sort-by-attributes-alt */ +} + +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +table.dataTable thead > tr > th { + padding-left: 8px; + padding-right: 30px; +} + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column + width calculations when using scrolling impossible to align columns. We have + to use separate + */ +table.table-bordered.dataTable { + border-collapse: separate !important; +} +table.table-bordered thead th, +table.table-bordered thead td { + border-left-width: 0; + border-top-width: 0; +} +table.table-bordered tbody th, +table.table-bordered tbody td { + border-left-width: 0; + border-bottom-width: 0; +} +table.table-bordered th:last-child, +table.table-bordered td:last-child { + border-right-width: 0; +} +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + + + + +/* + * TableTools styles + */ +.table.dataTable tbody tr.active td, +.table.dataTable tbody tr.active th { + background-color: #08C; + color: white; +} + +.table.dataTable tbody tr.active:hover td, +.table.dataTable tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table.dataTable tbody tr.active th > a, +.table.dataTable tbody tr.active td > a { + color: white; +} + +.table-striped.dataTable tbody tr.active:nth-child(odd) td, +.table-striped.dataTable tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ +div.DTTT_print_info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + height: 150px; + margin-left: -200px; + margin-top: -75px; + text-align: center; + color: #333; + padding: 10px 30px; + opacity: 0.95; + + background-color: white; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 60px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + padding-bottom: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); + background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); +} + + + +/* + * FixedColumns styles + */ +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; + margin-bottom: 0; +} + +div.DTFC_RightHeadWrapper table , +div.DTFC_LeftHeadWrapper table { + border-bottom: none !important; + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; + margin-top: 0 !important; +} + + +/* + * FixedHeader styles + */ +div.FixedHeader_Cloned table { + margin: 0 !important +} diff --git a/plugins/datatables/jquery.dataTables.min.js b/plugins/datatables/jquery.dataTables.min.js new file mode 100644 index 0000000..4501069 --- /dev/null +++ b/plugins/datatables/jquery.dataTables.min.js @@ -0,0 +1,163 @@ +/*! + DataTables 1.10.9-dev + ©2008-2014 SpryMedia Ltd - datatables.net/license +*/ +(function(Fa,T,k){var S=function(g){function X(a){var b,c,e={};g.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&X(a[d])});a._hungarianMap=e}function I(a,b,c){a._hungarianMap||X(a);var e;g.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),g.extend(!0,b[e],b[d]),I(a[e],b[e],c)):b[e]=b[d]})}function S(a){var b=m.defaults.oLanguage,c=a.sZeroRecords; +!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){B(a,"ordering","bSort");B(a,"orderMulti","bSortMulti");B(a,"orderClasses","bSortClasses");B(a,"orderCellsTop","bSortCellsTop");B(a,"order","aaSorting");B(a,"orderFixed","aaSortingFixed");B(a,"paging","bPaginate"); +B(a,"pagingType","sPaginationType");B(a,"pageLength","iDisplayLength");B(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function fb(a){B(a,"orderable","bSortable");B(a,"orderData","aDataSort");B(a,"orderSequence","asSorting");B(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!g.isArray(b)&&(a.aDataSort=[b])}function gb(a){var a=a.oBrowser,b=g("<div/>").css({position:"fixed", +top:0,left:0,height:1,width:1,overflow:"hidden"}).append(g("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(g('<div class="test"/>').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==Math.round(c.offset().left);a.bBounding=b[0].getBoundingClientRect().width?!0:!1;b.remove()}function hb(a,b,c,e,d,f){var h,i=!1;c!==k&&(h=c,i=!0);for(;e!==d;)a.hasOwnProperty(e)&&(h=i?b(h,a[e],e,a):a[e], +i=!0,e+=f);return h}function Ga(a,b){var c=m.defaults.column,e=a.aoColumns.length,c=g.extend({},m.models.oColumn,c,{nTh:b?b:T.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=g.extend({},m.models.oSearch,c[e]);ka(a,e,g(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=g(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/); +f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),g.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var h=b.mData,i=P(h),j=b.mRender?P(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=g.isPlainObject(h)&&(c(h.sort)||c(h.type)||c(h.filter));b.fnGetData= +function(a,b,c){var e=i(a,b,k,c);return j&&b?j(e,b,a,c):e};b.fnSetData=function(a,b,c){return Q(h)(a,b,c)};"number"!==typeof h&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==g.inArray("asc",b.asSorting);c=-1!==g.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI= +e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,e=b.length;c<e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Z(a);w(a,null,"column-sizing",[a])}function la(a,b){var c=$(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function aa(a,b){var c=$(a,"bVisible"),c=g.inArray(b,c);return-1!==c?c:null}function ba(a){return $(a,"bVisible").length}function $(a,b){var c= +[];g.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,e=m.ext.type.detect,d,f,h,i,j,g,l,r,q;d=0;for(f=b.length;d<f;d++)if(l=b[d],q=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){h=0;for(i=e.length;h<i;h++){j=0;for(g=c.length;j<g;j++){q[j]===k&&(q[j]=y(a,j,d,"type"));r=e[h](q[j],a);if(!r&&h!==e.length-1)break;if("html"===r)break}if(r){l.sType=r;break}}l.sType||(l.sType="string")}}function ib(a,b,c,e){var d,f,h,i,j,n,l=a.aoColumns; +if(b)for(d=b.length-1;0<=d;d--){n=b[d];var r=n.targets!==k?n.targets:n.aTargets;g.isArray(r)||(r=[r]);f=0;for(h=r.length;f<h;f++)if("number"===typeof r[f]&&0<=r[f]){for(;l.length<=r[f];)Ga(a);e(r[f],n)}else if("number"===typeof r[f]&&0>r[f])e(l.length+r[f],n);else if("string"===typeof r[f]){i=0;for(j=l.length;i<j;i++)("_all"==r[f]||g(l[i].nTh).hasClass(r[f]))&&e(i,n)}}if(c){d=0;for(a=c.length;d<a;d++)e(d,c[d])}}function L(a,b,c,e){var d=a.aoData.length,f=g.extend(!0,{},m.models.oRow,{src:c?"dom": +"data",idx:d});f._aData=b;a.aoData.push(f);for(var h=a.aoColumns,i=0,j=h.length;i<j;i++)c&&Ja(a,d,i,y(a,d,i)),h[i].sType=null;a.aiDisplayMaster.push(d);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ka(a,d,c,e);return d}function ma(a,b){var c;b instanceof g||(b=g(b));return b.map(function(b,d){c=na(a,d);return L(a,c.data,d,c.cells)})}function y(a,b,c,e){var d=a.iDraw,f=a.aoColumns[c],h=a.aoData[b]._aData,i=f.sDefaultContent,c=f.fnGetData(h,e,{settings:a,row:b,col:c});if(c===k)return a.iDrawError!= +d&&null===i&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b,4),a.iDrawError=d),i;if((c===h||null===c)&&null!==i)c=i;else if("function"===typeof c)return c.call(h);return null===c&&"display"==e?"":c}function Ja(a,b,c,e){a.aoColumns[c].fnSetData(a.aoData[b]._aData,e,{settings:a,row:b,col:c})}function La(a){return g.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function P(a){if(g.isPlainObject(a)){var b={}; +g.each(a,function(a,c){c&&(b[a]=P(c))});return function(a,c,f,h){var i=b[c]||b._;return i!==k?i(a,c,f,h):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,h){return a(b,c,f,h)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var h,i;if(""!==f){i=La(f);for(var j=0,g=i.length;j<g;j++){f=i[j].match(ca);h=i[j].match(U);if(f){i[j]=i[j].replace(ca,"");""!==i[j]&&(a=a[i[j]]);h=[];i.splice(0,j+1);i=i.join("."); +j=0;for(g=a.length;j<g;j++)h.push(c(a[j],b,i));a=f[0].substring(1,f[0].length-1);a=""===a?h:h.join(a);break}else if(h){i[j]=i[j].replace(U,"");a=a[i[j]]();continue}if(null===a||a[i[j]]===k)return k;a=a[i[j]]}}return a};return function(b,d){return c(b,d,a)}}return function(b){return b[a]}}function Q(a){if(g.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,e,d){a(b,"set",e,d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")|| +-1!==a.indexOf("("))){var b=function(a,e,d){var d=La(d),f;f=d[d.length-1];for(var h,i,j=0,g=d.length-1;j<g;j++){h=d[j].match(ca);i=d[j].match(U);if(h){d[j]=d[j].replace(ca,"");a[d[j]]=[];f=d.slice();f.splice(0,j+1);h=f.join(".");i=0;for(g=e.length;i<g;i++)f={},b(f,e[i],h),a[d[j]].push(f);return}i&&(d[j]=d[j].replace(U,""),a=a[d[j]](e));if(null===a[d[j]]||a[d[j]]===k)a[d[j]]={};a=a[d[j]]}if(f.match(U))a[f.replace(U,"")](e);else a[f.replace(ca,"")]=e};return function(c,e){return b(c,e,a)}}return function(b, +e){b[a]=e}}function Ma(a){return D(a.aoData,"_aData")}function oa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0}function pa(a,b,c){for(var e=-1,d=0,f=a.length;d<f;d++)a[d]==b?e=d:a[d]>b&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function da(a,b,c,e){var d=a.aoData[b],f,h=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=y(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var i=d.anCells;if(i)if(e!== +k)h(i[e],e);else{c=0;for(f=i.length;c<f;c++)h(i[c],c)}}d._aSortData=null;d._aFilterData=null;h=a.aoColumns;if(e!==k)h[e].sType=null;else{c=0;for(f=h.length;c<f;c++)h[c].sType=null;Na(a,d)}}function na(a,b,c,e){var d=[],f=b.firstChild,h,i,j=0,n,l=a.aoColumns,r=a._rowReadObject,e=e!==k?e:r?{}:[],q=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(e,b.getAttribute(c)))}},jb=function(a){if(c===k||c===j)i=l[j],n=g.trim(a.innerHTML),i&&i._bAttrSrc?(Q(i.mData._)(e, +n),q(i.mData.sort,a),q(i.mData.type,a),q(i.mData.filter,a)):r?(i._setter||(i._setter=Q(i.mData)),i._setter(e,n)):e[j]=n;j++};if(f)for(;f;){h=f.nodeName.toUpperCase();if("TD"==h||"TH"==h)jb(f),d.push(f);f=f.nextSibling}else{d=b.anCells;h=0;for(var o=d.length;h<o;h++)jb(d[h])}if(b=f?b:b.nTr)(b=b.getAttribute("id"))&&Q(a.rowId)(e,b);return{data:e,cells:d}}function Ka(a,b,c,e){var d=a.aoData[b],f=d._aData,h=[],i,j,g,l,r;if(null===d.nTr){i=c||T.createElement("tr");d.nTr=i;d.anCells=h;i._DT_RowIndex=b; +Na(a,d);l=0;for(r=a.aoColumns.length;l<r;l++){g=a.aoColumns[l];j=c?e[l]:T.createElement(g.sCellType);h.push(j);if(!c||g.mRender||g.mData!==l)j.innerHTML=y(a,b,l,"display");g.sClass&&(j.className+=" "+g.sClass);g.bVisible&&!c?i.appendChild(j):!g.bVisible&&c&&j.parentNode.removeChild(j);g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,j,y(a,b,l),f,b,l)}w(a,"aoRowCreatedCallback",null,[i,f,b])}d.nTr.setAttribute("role","row")}function Na(a,b){var c=b.nTr,e=b._aData;if(c){var d=a.rowIdFn(e);d&&(c.id= +d);e.DT_RowClass&&(d=e.DT_RowClass.split(" "),b.__rowc=b.__rowc?Oa(b.__rowc.concat(d)):d,g(c).removeClass(b.__rowc.join(" ")).addClass(e.DT_RowClass));e.DT_RowAttr&&g(c).attr(e.DT_RowAttr);e.DT_RowData&&g(c).data(e.DT_RowData)}}function kb(a){var b,c,e,d,f,h=a.nTHead,i=a.nTFoot,j=0===g("th, td",h).length,n=a.oClasses,l=a.aoColumns;j&&(d=g("<tr/>").appendTo(h));b=0;for(c=l.length;b<c;b++)f=l[b],e=g(f.nTh).addClass(f.sClass),j&&e.appendTo(d),a.oFeatures.bSort&&(e.addClass(f.sSortingClass),!1!==f.bSortable&& +(e.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Pa(a,f.nTh,b))),f.sTitle!=e[0].innerHTML&&e.html(f.sTitle),Qa(a,"header")(a,e,f,n);j&&ea(a.aoHeader,h);g(h).find(">tr").attr("role","row");g(h).find(">tr>th, >tr>td").addClass(n.sHeaderTH);g(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&g(f.nTf).addClass(f.sClass)}}function fa(a,b,c){var e,d,f,h=[],i=[],j=a.aoColumns.length,n;if(b){c===k&&(c=!1); +e=0;for(d=b.length;e<d;e++){h[e]=b[e].slice();h[e].nTr=b[e].nTr;for(f=j-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&h[e].splice(f,1);i.push([])}e=0;for(d=h.length;e<d;e++){if(a=h[e].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=h[e].length;f<b;f++)if(n=j=1,i[e][f]===k){a.appendChild(h[e][f].cell);for(i[e][f]=1;h[e+j]!==k&&h[e][f].cell==h[e+j][f].cell;)i[e+j][f]=1,j++;for(;h[e][f+n]!==k&&h[e][f].cell==h[e][f+n].cell;){for(c=0;c<j;c++)i[e+c][f+n]=1;n++}g(h[e][f].cell).attr("rowspan",j).attr("colspan", +n)}}}}function M(a){var b=w(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==g.inArray(!1,b))C(a,!1);else{var b=[],c=0,e=a.asStripeClasses,d=e.length,f=a.oLanguage,h=a.iInitDisplayStart,i="ssp"==z(a),j=a.aiDisplay;a.bDrawing=!0;h!==k&&-1!==h&&(a._iDisplayStart=i?h:h>=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=-1);var h=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(i){if(!a.bDestroying&&!lb(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length: +n;for(i=i?0:h;i<f;i++){var l=j[i],r=a.aoData[l];null===r.nTr&&Ka(a,l);l=r.nTr;if(0!==d){var q=e[c%d];r._sRowStripe!=q&&(g(l).removeClass(r._sRowStripe).addClass(q),r._sRowStripe=q)}w(a,"aoRowCallback",null,[l,r._aData,c,i]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==z(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=g("<tr/>",{"class":d?e[0]:""}).append(g("<td />",{valign:"top",colSpan:ba(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback", +"header",[g(a.nTHead).children("tr")[0],Ma(a),h,n,j]);w(a,"aoFooterCallback","footer",[g(a.nTFoot).children("tr")[0],Ma(a),h,n,j]);e=g(a.nTBody);e.children().detach();e.append(g(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function R(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&mb(a);e?ga(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function nb(a){var b=a.oClasses,c=g(a.nTable),c=g("<div/>").insertBefore(c), +e=a.oFeatures,d=g("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),h,i,j,n,l,r,q=0;q<f.length;q++){h=null;i=f[q];if("<"==i){j=g("<div/>")[0];n=f[q+1];if("'"==n||'"'==n){l="";for(r=2;f[q+r]!=n;)l+=f[q+r],r++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==l.charAt(0)? +j.id=l.substr(1,l.length-1):j.className=l;q+=r}d.append(j);d=g(j)}else if(">"==i)d=d.parent();else if("l"==i&&e.bPaginate&&e.bLengthChange)h=ob(a);else if("f"==i&&e.bFilter)h=pb(a);else if("r"==i&&e.bProcessing)h=qb(a);else if("t"==i)h=rb(a);else if("i"==i&&e.bInfo)h=sb(a);else if("p"==i&&e.bPaginate)h=tb(a);else if(0!==m.ext.feature.length){j=m.ext.feature;r=0;for(n=j.length;r<n;r++)if(i==j[r].cFeature){h=j[r].fnInit(a);break}}h&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(h),d.append(h))}c.replaceWith(d); +a.nHolding=null}function ea(a,b){var c=g(b).children("tr"),e,d,f,h,i,j,n,l,r,q;a.splice(0,a.length);f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){e=c[f];for(d=e.firstChild;d;){if("TD"==d.nodeName.toUpperCase()||"TH"==d.nodeName.toUpperCase()){l=1*d.getAttribute("colspan");r=1*d.getAttribute("rowspan");l=!l||0===l||1===l?1:l;r=!r||0===r||1===r?1:r;h=0;for(i=a[f];i[h];)h++;n=h;q=1===l?!0:!1;for(i=0;i<l;i++)for(h=0;h<r;h++)a[f+h][n+i]={cell:d,unique:q},a[f+h].nTr=e}d=d.nextSibling}}} +function qa(a,b,c){var e=[];c||(c=a.aoHeader,b&&(c=[],ea(c,b)));for(var b=0,d=c.length;b<d;b++)for(var f=0,h=c[b].length;f<h;f++)if(c[b][f].unique&&(!e[f]||!a.bSortCellsTop))e[f]=c[b][f].cell;return e}function ra(a,b,c){w(a,"aoServerParams","serverParams",[b]);if(b&&g.isArray(b)){var e={},d=/(.*?)\[\]$/;g.each(b,function(a,b){var c=b.name.match(d);c?(c=c[0],e[c]||(e[c]=[]),e[c].push(b.value)):e[b.name]=b.value});b=e}var f,h=a.ajax,i=a.oInstance,j=function(b){w(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(g.isPlainObject(h)&& +h.data){f=h.data;var n=g.isFunction(f)?f(b,a):f,b=g.isFunction(f)&&n?n:g.extend(!0,b,n);delete h.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;j(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var f=w(a,null,"xhr",[a,null,a.jqXHR]);-1===g.inArray(!0,f)&&("parsererror"==c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;w(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(i,a.sAjaxSource, +g.map(b,function(a,b){return{name:b,value:a}}),j,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=g.ajax(g.extend(n,{url:h||a.sAjaxSource})):g.isFunction(h)?a.jqXHR=h.call(i,b,j,a):(a.jqXHR=g.ajax(g.extend(n,h)),h.data=f)}function lb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,!0),ra(a,ub(a),function(b){vb(a,b)}),!1):!0}function ub(a){var b=a.aoColumns,c=b.length,e=a.oFeatures,d=a.oPreviousSearch,f=a.aoPreSearchCols,h,i=[],j,n,l,r=V(a);h=a._iDisplayStart;j=!1!==e.bPaginate?a._iDisplayLength:-1;var q=function(a, +b){i.push({name:a,value:b})};q("sEcho",a.iDraw);q("iColumns",c);q("sColumns",D(b,"sName").join(","));q("iDisplayStart",h);q("iDisplayLength",j);var k={draw:a.iDraw,columns:[],order:[],start:h,length:j,search:{value:d.sSearch,regex:d.bRegex}};for(h=0;h<c;h++)n=b[h],l=f[h],j="function"==typeof n.mData?"function":n.mData,k.columns.push({data:j,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),q("mDataProp_"+h,j),e.bFilter&&(q("sSearch_"+h,l.sSearch), +q("bRegex_"+h,l.bRegex),q("bSearchable_"+h,n.bSearchable)),e.bSort&&q("bSortable_"+h,n.bSortable);e.bFilter&&(q("sSearch",d.sSearch),q("bRegex",d.bRegex));e.bSort&&(g.each(r,function(a,b){k.order.push({column:b.col,dir:b.dir});q("iSortCol_"+a,b.col);q("sSortDir_"+a,b.dir)}),q("iSortingCols",r.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?i:k:b?i:k}function vb(a,b){var c=sa(a,b),e=b.sEcho!==k?b.sEcho:b.draw,d=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!== +k?b.iTotalDisplayRecords:b.recordsFiltered;if(e){if(1*e<a.iDraw)return;a.iDraw=1*e}oa(a);a._iRecordsTotal=parseInt(d,10);a._iRecordsDisplay=parseInt(f,10);e=0;for(d=c.length;e<d;e++)L(a,c[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;M(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=g.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?P(c)(b):b}function pb(a){var b=a.oClasses,c=a.sTableId,e=a.oLanguage, +d=a.oPreviousSearch,f=a.aanFeatures,h='<input type="search" class="'+b.sFilterInput+'"/>',i=e.sSearch,i=i.match(/_INPUT_/)?i.replace("_INPUT_",h):i+h,b=g("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(g("<label/>").append(i)),f=function(){var b=!this.value?"":this.value;b!=d.sSearch&&(ga(a,{sSearch:b,bRegex:d.bRegex,bSmart:d.bSmart,bCaseInsensitive:d.bCaseInsensitive}),a._iDisplayStart=0,M(a))},h=null!==a.searchDelay?a.searchDelay:"ssp"===z(a)?400:0,j=g("input",b).val(d.sSearch).attr("placeholder", +e.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",h?ua(f,h):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);g(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{j[0]!==T.activeElement&&j.val(d.sSearch)}catch(f){}});return b[0]}function ga(a,b,c){var e=a.oPreviousSearch,d=a.aoPreSearchCols,f=function(a){e.sSearch=a.sSearch;e.bRegex=a.bRegex;e.bSmart=a.bSmart;e.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=z(a)){wb(a,b.sSearch, +c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<d.length;b++)xb(a,d[b].sSearch,b,d[b].bEscapeRegex!==k?!d[b].bEscapeRegex:d[b].bRegex,d[b].bSmart,d[b].bCaseInsensitive);yb(a)}else f(b);a.bFiltered=!0;w(a,null,"search",[a])}function yb(a){for(var b=m.ext.search,c=a.aiDisplay,e,d,f=0,h=b.length;f<h;f++){for(var i=[],j=0,g=c.length;j<g;j++)d=c[j],e=a.aoData[d],b[f](a,e._aFilterData,d,e._aData,j)&&i.push(d);c.length=0;c.push.apply(c,i)}}function xb(a,b,c,e,d, +f){if(""!==b)for(var h=a.aiDisplay,e=Ra(b,e,d,f),d=h.length-1;0<=d;d--)b=a.aoData[h[d]]._aFilterData[c],e.test(b)||h.splice(d,1)}function wb(a,b,c,e,d,f){var e=Ra(b,e,d,f),d=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,h;0!==m.ext.search.length&&(c=!0);h=zb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(h||c||d.length>b.length||0!==b.indexOf(d)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=c;c--)e.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Ra(a,b,c,e){a=b?a:va(a); +c&&(a="^(?=.*?"+g.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,e?"i":"")}function va(a){return a.replace(Zb,"\\$1")}function zb(a){var b=a.aoColumns,c,e,d,f,h,i,j,g,l=m.ext.type.search;c=!1;e=0;for(f=a.aoData.length;e<f;e++)if(g=a.aoData[e],!g._aFilterData){i=[];d=0;for(h=b.length;d<h;d++)c=b[d],c.bSearchable?(j=y(a,e,d,"filter"),l[c.sType]&&(j=l[c.sType](j)),null===j&&(j= +""),"string"!==typeof j&&j.toString&&(j=j.toString())):j="",j.indexOf&&-1!==j.indexOf("&")&&(wa.innerHTML=j,j=$b?wa.textContent:wa.innerText),j.replace&&(j=j.replace(/[\r\n]/g,"")),i.push(j);g._aFilterData=i;g._sFilterRow=i.join(" ");c=!0}return c}function Ab(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Bb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function sb(a){var b=a.sTableId,c=a.aanFeatures.i, +e=g("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Cb,sName:"information"}),e.attr("role","status").attr("aria-live","polite"),g(a.nTable).attr("aria-describedby",b+"_info"));return e[0]}function Cb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,e=a._iDisplayStart+1,d=a.fnDisplayEnd(),f=a.fnRecordsTotal(),h=a.fnRecordsDisplay(),i=h?c.sInfo:c.sInfoEmpty;h!==f&&(i+=" "+c.sInfoFiltered);i+=c.sInfoPostFix;i=Db(a,i);c=c.fnInfoCallback;null!==c&&(i= +c.call(a.oInstance,a,e,d,f,h,i));g(b).html(i)}}function Db(a,b){var c=a.fnFormatNumber,e=a._iDisplayStart+1,d=a._iDisplayLength,f=a.fnRecordsDisplay(),h=-1===d;return b.replace(/_START_/g,c.call(a,e)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,h?1:Math.ceil(e/d))).replace(/_PAGES_/g,c.call(a,h?1:Math.ceil(f/d)))}function ha(a){var b,c,e=a.iInitDisplayStart,d=a.aoColumns,f;c=a.oFeatures;var h= +a.bDeferLoading;if(a.bInitialised){nb(a);kb(a);fa(a,a.aoHeader);fa(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=d.length;b<c;b++)f=d[b],f.sWidth&&(f.nTh.style.width=u(f.sWidth));w(a,null,"preInit",[a]);R(a);d=z(a);if("ssp"!=d||h)"ajax"==d?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)L(a,f[b]);a.iInitDisplayStart=e;R(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a))}else setTimeout(function(){ha(a)},200)}function ta(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);w(a,"aoInitComplete","init", +[a,b])}function Sa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ta(a);w(a,null,"length",[a,c])}function ob(a){for(var b=a.oClasses,c=a.sTableId,e=a.aLengthMenu,d=g.isArray(e[0]),f=d?e[0]:e,e=d?e[1]:e,d=g("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),h=0,i=f.length;h<i;h++)d[0][h]=new Option(e[h],f[h]);var j=g("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(j[0].id=c+"_length");j.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));g("select", +j).val(a._iDisplayLength).bind("change.DT",function(){Sa(a,g(this).val());M(a)});g(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&g("select",j).val(f)});return j[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=g("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,g=a._iDisplayLength,n=a.fnRecordsDisplay(),l=-1=== +g,b=l?0:Math.ceil(b/g),g=l?1:Math.ceil(n/g),n=c(b,g),k,l=0;for(k=f.p.length;l<k;l++)Qa(a,"pageButton")(a,f.p[l],l,n,b,g)}else c.fnUpdate(a,d)},sName:"pagination"}));return b}function Ua(a,b,c){var e=a._iDisplayStart,d=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===d?e=0:"number"===typeof b?(e=b*d,e>f&&(e=0)):"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d<f&&(e+=d):"last"==b?e=Math.floor((f-1)/d)*d:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==e;a._iDisplayStart= +e;b&&(w(a,null,"page",[a]),c&&M(a));return b}function qb(a){return g("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&g(a.aanFeatures.r).css("display",b?"block":"none");w(a,null,"processing",[a,b])}function rb(a){var b=g(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,h=b.children("caption"), +i=h.length?h[0]._captionSide:null,j=g(b[0].cloneNode(!1)),n=g(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);j=g("<div/>",{"class":f.sScrollWrapper}).append(g("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:e?!e?null:u(e):"100%"}).append(g("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append("top"=== +i?h:null).append(b.children("thead"))))).append(g("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!e?null:u(e)}).append(b));l&&j.append(g("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:u(e):"100%"}).append(g("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===i?h:null).append(b.children("tfoot")))));var b=j.children(),k=b[0],f=b[1],q=l?b[2]:null;if(e)g(f).on("scroll.DT",function(){var a= +this.scrollLeft;k.scrollLeft=a;l&&(q.scrollLeft=a)});g(f).css(d&&c.bCollapse?"max-height":"height",d);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=q;a.aoDrawCallback.push({fn:Z,sName:"scrolling"});return j[0]}function Z(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,b=b.iBarWidth,f=g(a.nScrollHead),h=f[0].style,i=f.children("div"),j=i[0].style,n=i.children("table"),i=a.nScrollBody,l=g(i),k=i.style,q=g(a.nScrollFoot).children("div"),m=q.children("table"),o=g(a.nTHead),E=g(a.nTable),p=E[0],t=p.style, +N=a.nTFoot?g(a.nTFoot):null,Eb=a.oBrowser,w=Eb.bScrollOversize,s,v,O,x,y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};E.children("thead, tfoot").remove();x=o.clone().prependTo(E);o=o.find("tr");v=x.find("tr");x.find("th, td").removeAttr("tabindex");N&&(O=N.clone().prependTo(E),s=N.find("tr"),O=O.find("tr"));c||(k.width="100%",f[0].style.width="100%");g.each(qa(a,x),function(b,c){B=la(a,b);c.style.width=a.aoColumns[B].sWidth}); +N&&H(function(a){a.style.width=""},O);f=E.outerWidth();if(""===c){t.width="100%";if(w&&(E.find("tbody").height()>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(E.outerWidth()-b);f=E.outerWidth()}else""!==e&&(t.width=u(e),f=E.outerWidth());H(C,v);H(function(a){A.push(a.innerHTML);y.push(u(g(a).css("width")))},v);H(function(a,b){a.style.width=y[b]},o);g(v).height(0);N&&(H(C,O),H(function(a){z.push(u(g(a).css("width")))},O),H(function(a,b){a.style.width=z[b]},s),g(O).height(0));H(function(a, +b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+A[b]+"</div>";a.style.width=y[b]},v);N&&H(function(a,b){a.innerHTML="";a.style.width=z[b]},O);if(E.outerWidth()<f){s=i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==l.css("overflow-y")))t.width=u(s-b);(""===c||""!==e)&&J(a,1,"Possible column misalignment",6)}else s="100%";k.width=u(s);h.width=u(s);N&&(a.nScrollFoot.style.width=u(s));!d&&w&&(k.height= +u(p.offsetHeight+b));c=E.outerWidth();n[0].style.width=u(c);j.width=u(c);e=E.height()>i.clientHeight||"scroll"==l.css("overflow-y");d="padding"+(Eb.bScrollbarLeft?"Left":"Right");j[d]=e?b+"px":"0px";N&&(m[0].style.width=u(c),q[0].style.width=u(c),q[0].style[d]=e?b+"px":"0px");l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function H(a,b,c){for(var e=0,d=0,f=b.length,h,i;d<f;){h=b[d].firstChild;for(i=c?c[d].firstChild:null;h;)1===h.nodeType&&(c?a(h,i,e):a(h,e),e++),h=h.nextSibling, +i=c?i.nextSibling:null;d++}}function Ha(a){var b=a.nTable,c=a.aoColumns,e=a.oScroll,d=e.sY,f=e.sX,h=e.sXInner,i=c.length,j=$(a,"bVisible"),n=g("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,q=!1,m,o,p;p=a.oBrowser;e=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<j.length;m++)o=c[j[m]],null!==o.sWidth&&(o.sWidth=Fb(o.sWidthOrig,k),q=!0);if(e||!q&&!f&&!d&&i==ba(a)&&i==n.length)for(m=0;m<i;m++)c[m].sWidth=u(n.eq(m).width());else{i=g(b).clone().css("visibility","hidden").removeAttr("id"); +i.find("tbody tr").remove();var t=g("<tr/>").appendTo(i.find("tbody"));i.find("thead, tfoot").remove();i.append(g(a.nTHead).clone()).append(g(a.nTFoot).clone());i.find("tfoot th, tfoot td").css("width","");n=qa(a,i.find("thead")[0]);for(m=0;m<j.length;m++)o=c[j[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?u(o.sWidthOrig):"";if(a.aoData.length)for(m=0;m<j.length;m++)q=j[m],o=c[q],g(Gb(a,q)).clone(!1).append(o.sContentPadding).appendTo(t);q=g("<div/>").css(f||d?{position:"absolute",top:0, +left:0,height:1,right:0,overflow:"hidden"}:{}).append(i).appendTo(k);f&&h?i.width(h):f?(i.css("width","auto"),i.width()<k.clientWidth&&i.width(k.clientWidth)):d?i.width(k.clientWidth):l&&i.width(l);if(f){for(m=h=0;m<j.length;m++)o=c[j[m]],d=p.bBounding?n[m].getBoundingClientRect().width:g(n[m]).outerWidth(),h+=null===o.sWidthOrig?d:parseInt(o.sWidth,10)+d-g(n[m]).width();i.width(u(h));b.style.width=u(h)}for(m=0;m<j.length;m++)if(o=c[j[m]],p=g(n[m]).width())o.sWidth=u(p);b.style.width=u(i.css("width")); +q.remove()}l&&(b.style.width=u(l));if((l||f)&&!a._reszEvt)b=function(){g(Fa).bind("resize.DT-"+a.sInstance,ua(function(){Y(a)}))},e?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,e,d;return function(){var b=this,h=+new Date,i=arguments;e&&h<e+c?(clearTimeout(d),d=setTimeout(function(){e=k;a.apply(b,i)},c)):(e=h,a.apply(b,i))}}function Fb(a,b){if(!a)return 0;var c=g("<div/>").css("width",u(a)).appendTo(b||T.body),e=c[0].offsetWidth;c.remove();return e}function Gb(a,b){var c= +Hb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?g("<td/>").html(y(a,c,b,"display"))[0]:e.anCells[b]}function Hb(a,b){for(var c,e=-1,d=-1,f=0,h=a.aoData.length;f<h;f++)c=y(a,f,b,"display")+"",c=c.replace(ac,""),c.length>e&&(e=c.length,d=f);return d}function u(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Ib(){var a=m.__scrollbarWidth;if(a===k){var b=g("<p/>").css({position:"absolute",top:0,left:0,width:"100%",height:150,padding:0,overflow:"scroll", +visibility:"hidden"}).appendTo("body"),a=b[0].offsetWidth-b[0].clientWidth;m.__scrollbarWidth=a;b.remove()}return a}function V(a){var b,c,e=[],d=a.aoColumns,f,h,i,j;b=a.aaSortingFixed;c=g.isPlainObject(b);var n=[];f=function(a){a.length&&!g.isArray(a[0])?n.push(a):n.push.apply(n,a)};g.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){j=n[a][0];f=d[j].aDataSort;b=0;for(c=f.length;b<c;b++)h=f[b],i=d[h].sType||"string",n[a]._idx===k&&(n[a]._idx=g.inArray(n[a][1], +d[h].asSorting)),e.push({src:j,col:h,dir:n[a][1],index:n[a]._idx,type:i,formatter:m.ext.type.order[i+"-pre"]})}return e}function mb(a){var b,c,e=[],d=m.ext.type.order,f=a.aoData,h=0,i,g=a.aiDisplayMaster,n;Ia(a);n=V(a);b=0;for(c=n.length;b<c;b++)i=n[b],i.formatter&&h++,Jb(a,i.col);if("ssp"!=z(a)&&0!==n.length){b=0;for(c=g.length;b<c;b++)e[g[b]]=b;h===n.length?g.sort(function(a,b){var c,d,h,i,g=n.length,j=f[a]._aSortData,k=f[b]._aSortData;for(h=0;h<g;h++)if(i=n[h],c=j[i.col],d=k[i.col],c=c<d?-1:c> +d?1:0,0!==c)return"asc"===i.dir?c:-c;c=e[a];d=e[b];return c<d?-1:c>d?1:0}):g.sort(function(a,b){var c,h,i,g,j=n.length,k=f[a]._aSortData,m=f[b]._aSortData;for(i=0;i<j;i++)if(g=n[i],c=k[g.col],h=m[g.col],g=d[g.type+"-"+g.dir]||d["string-"+g.dir],c=g(c,h),0!==c)return c;c=e[a];h=e[b];return c<h?-1:c>h?1:0})}a.bSorted=!0}function Kb(a){for(var b,c,e=a.aoColumns,d=V(a),a=a.oLanguage.oAria,f=0,h=e.length;f<h;f++){c=e[f];var i=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var g=c.nTh;g.removeAttribute("aria-sort"); +c.bSortable&&(0<d.length&&d[0].col==f?(g.setAttribute("aria-sort","asc"==d[0].dir?"ascending":"descending"),c=i[d[0].index+1]||i[0]):c=i[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);g.setAttribute("aria-label",b)}}function Va(a,b,c,e){var d=a.aaSorting,f=a.aoColumns[b].asSorting,h=function(a,b){var c=a._idx;c===k&&(c=g.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof d[0]&&(d=a.aaSorting=[d]);c&&a.oFeatures.bSortMulti?(c=g.inArray(b,D(d,"0")),-1!==c?(b=h(d[c],!0),null=== +b&&1===d.length&&(b=0),null===b?d.splice(c,1):(d[c][1]=f[b],d[c]._idx=b)):(d.push([b,f[0],0]),d[d.length-1]._idx=0)):d.length&&d[0][0]==b?(b=h(d[0]),d.length=1,d[0][1]=f[b],d[0]._idx=b):(d.length=0,d.push([b,f[0]]),d[0]._idx=0);R(a);"function"==typeof e&&e(a)}function Pa(a,b,c,e){var d=a.aoColumns[c];Wa(b,{},function(b){!1!==d.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Va(a,c,b.shiftKey,e);"ssp"!==z(a)&&C(a,!1)},0)):Va(a,c,b.shiftKey,e))})}function xa(a){var b=a.aLastSort, +c=a.oClasses.sSortColumn,e=V(a),d=a.oFeatures,f,h;if(d.bSort&&d.bSortClasses){d=0;for(f=b.length;d<f;d++)h=b[d].src,g(D(a.aoData,"anCells",h)).removeClass(c+(2>d?d+1:3));d=0;for(f=e.length;d<f;d++)h=e[d].src,g(D(a.aoData,"anCells",h)).addClass(c+(2>d?d+1:3))}a.aLastSort=e}function Jb(a,b){var c=a.aoColumns[b],e=m.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,aa(a,b)));for(var f,h=m.ext.type.order[c.sType+"-pre"],i=0,g=a.aoData.length;i<g;i++)if(c=a.aoData[i],c._aSortData||(c._aSortData= +[]),!c._aSortData[b]||e)f=e?d[i]:y(a,i,b,"sort"),c._aSortData[b]=h?h(f):f}function ya(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:g.extend(!0,[],a.aaSorting),search:Ab(a.oPreviousSearch),columns:g.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:Ab(a.aoPreSearchCols[e])}})};w(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Lb(a){var b,c,e= +a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=w(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===g.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&d.time<+new Date-1E3*b)&&e.length===d.columns.length))){a.oLoadedState=g.extend(!0,{},d);d.start!==k&&(a._iDisplayStart=d.start,a.iInitDisplayStart=d.start);d.length!==k&&(a._iDisplayLength=d.length);d.order!==k&&(a.aaSorting=[],g.each(d.order,function(b,c){a.aaSorting.push(c[0]>=e.length?[0,c[1]]: +c)}));d.search!==k&&g.extend(a.oPreviousSearch,Bb(d.search));b=0;for(c=d.columns.length;b<c;b++){var f=d.columns[b];f.visible!==k&&(e[b].bVisible=f.visible);f.search!==k&&g.extend(a.aoPreSearchCols[b],Bb(f.search))}w(a,"aoStateLoaded","stateLoaded",[a,d])}}}function za(a){var b=m.settings,a=g.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,e){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;e&&(c+=". For more information about this error, please see http://datatables.net/tn/"+ +e);if(b)Fa.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&w(a,null,"error",[a,e,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,e,c)}}function F(a,b,c,e){g.isArray(c)?g.each(c,function(c,f){g.isArray(f)?F(a,b,f[0],f[1]):F(a,b,f)}):(e===k&&(e=c),b[c]!==k&&(a[e]=b[c]))}function Mb(a,b,c){var e,d;for(d in b)b.hasOwnProperty(d)&&(e=b[d],g.isPlainObject(e)?(g.isPlainObject(a[d])||(a[d]={}),g.extend(!0,a[d],e)):a[d]=c&&"data"!==d&&"aaData"!== +d&&g.isArray(e)?e.slice():e);return a}function Wa(a,b,c){g(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function A(a,b,c,e){c&&a[b].push({fn:c,sName:e})}function w(a,b,c,e){var d=[];b&&(d=g.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,e)}));null!==c&&(b=g.Event(c+".dt"),g(a.nTable).trigger(b,e),d.push(b.result));return d}function Ta(a){var b=a._iDisplayStart, +c=a.fnDisplayEnd(),e=a._iDisplayLength;b>=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Qa(a,b){var c=a.renderer,e=m.ext.renderer[b];return g.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function z(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Nb.numbers_length,e=Math.floor(c/2);b<=c?c=W(0,b):a<=e?(c=W(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=W(b-(c-2),b):(c=W(a-e+2,a+e-1),c.push("ellipsis"), +c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){g.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Xa)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Xa)}},function(b,c){v.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(v.type.search[b+a]=v.type.search.html)})}function Ob(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this, +b)}}var m,v,t,p,s,Ya={},Pb=/[\r\n]/g,Ca=/<.*?>/g,bc=/^[\w\+\-]/,cc=/[\w\+\-]$/,Zb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,K=function(a){return!a||!0===a||"-"===a?!0:!1},Qb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Rb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a; +if(K(a))return!0;b&&e&&(a=Rb(a,b));c&&e&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Sb=function(a,b,c){return K(a)?!0:!(K(a)||"string"===typeof a)?null:Za(a.replace(Ca,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;if(c!==k)for(;d<f;d++)a[d]&&a[d][b]&&e.push(a[d][b][c]);else for(;d<f;d++)a[d]&&e.push(a[d][b]);return e},ia=function(a,b,c,e){var d=[],f=0,h=b.length;if(e!==k)for(;f<h;f++)a[b[f]][c]&&d.push(a[b[f]][c][e]);else for(;f<h;f++)d.push(a[b[f]][c]);return d}, +W=function(a,b){var c=[],e;b===k?(b=0,e=a):(e=b,b=a);for(var d=b;d<e;d++)c.push(d);return c},Tb=function(a){for(var b=[],c=0,e=a.length;c<e;c++)a[c]&&b.push(a[c]);return b},Oa=function(a){var b=[],c,e,d=a.length,f,h=0;e=0;a:for(;e<d;e++){c=a[e];for(f=0;f<h;f++)if(b[f]===c)continue a;b.push(c);h++}return b},B=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ca=/\[.*?\]$/,U=/\(\)$/,wa=g("<div>")[0],$b=wa.textContent!==k,ac=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a, +b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[v.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=g.isArray(a)&&(g.isArray(a[0])||g.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Z(c)};this.fnClearTable=function(a){var b=this.api(!0).clear(); +(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],g=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,g);(c===k||c)&&e.draw();return g};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,e,d,g){d=this.api(!0);null===b||b===k?d.search(a,c,e,g):d.column(b).search(a,c,e,g);d.draw()};this.fnGetData=function(a,b){var c= +this.api(!0);if(a!==k){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()}; +this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[v.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var g= +this.api(!0);c===k||null===c?g.row(b).data(a):g.cell(b,c).data(a);(d===k||d)&&g.columns.adjust();(e===k||e)&&g.draw();return 0};this.fnVersionCheck=v.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=v.internal;for(var d in m.ext.internal)d&&(this[d]=Ob(d));this.each(function(){var d={},d=1<e?Mb(d,a,!0):a,h=0,i,j=this.getAttribute("id"),n=!1,l=m.defaults,r=g(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2); +else{eb(l);fb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,g.extend(d,r.data()));var q=m.settings,h=0;for(i=q.length;h<i;h++){var p=q[h];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&p.nTFoot.parentNode==this){h=d.bRetrieve!==k?d.bRetrieve:l.bRetrieve;if(c||h)return p.oInstance;if(d.bDestroy!==k?d.bDestroy:l.bDestroy){p.oInstance.fnDestroy();break}else{J(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){q.splice(h,1);break}}if(null===j||""===j)this.id=j="DataTables_Table_"+ +m.ext._unique++;var o=g.extend(!0,{},m.models.oSettings,{sDestroyWidth:r[0].style.width,sInstance:j,sTableId:j});o.nTable=this;o.oApi=b.internal;o.oInit=d;q.push(o);o.oInstance=1===b.length?b:r.dataTable();eb(d);d.oLanguage&&S(d.oLanguage);d.aLengthMenu&&!d.iDisplayLength&&(d.iDisplayLength=g.isArray(d.aLengthMenu[0])?d.aLengthMenu[0][0]:d.aLengthMenu[0]);d=Mb(g.extend(!0,{},l),d);F(o.oFeatures,d,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" ")); +F(o,d,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(o.oScroll,d,[["sScrollX","sX"],["sScrollXInner", +"sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(o.oLanguage,d,"fnInfoCallback");A(o,"aoDrawCallback",d.fnDrawCallback,"user");A(o,"aoServerParams",d.fnServerParams,"user");A(o,"aoStateSaveParams",d.fnStateSaveParams,"user");A(o,"aoStateLoadParams",d.fnStateLoadParams,"user");A(o,"aoStateLoaded",d.fnStateLoaded,"user");A(o,"aoRowCallback",d.fnRowCallback,"user");A(o,"aoRowCreatedCallback",d.fnCreatedRow,"user");A(o,"aoHeaderCallback",d.fnHeaderCallback,"user");A(o,"aoFooterCallback", +d.fnFooterCallback,"user");A(o,"aoInitComplete",d.fnInitComplete,"user");A(o,"aoPreDrawCallback",d.fnPreDrawCallback,"user");o.rowIdFn=P(d.rowId);j=o.oClasses;d.bJQueryUI?(g.extend(j,m.ext.oJUIClasses,d.oClasses),d.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?g.isPlainObject(o.renderer)&&!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":g.extend(j,m.ext.classes,d.oClasses);r.addClass(j.sTable);if(""!==o.oScroll.sX||""!==o.oScroll.sY)o.oScroll.iBarWidth= +Ib();o.iInitDisplayStart===k&&(o.iInitDisplayStart=d.iDisplayStart,o._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(o.bDeferLoading=!0,h=g.isArray(d.iDeferLoading),o._iRecordsDisplay=h?d.iDeferLoading[0]:d.iDeferLoading,o._iRecordsTotal=h?d.iDeferLoading[1]:d.iDeferLoading);var t=o.oLanguage;g.extend(!0,t,d.oLanguage);""!==t.sUrl&&(g.ajax({dataType:"json",url:t.sUrl,success:function(a){S(a);I(l.oLanguage,a);g.extend(true,t,a);ha(o)},error:function(){ha(o)}}),n=!0);null===d.asStripeClasses&& +(o.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var h=o.asStripeClasses,s=r.children("tbody").find("tr").eq(0);-1!==g.inArray(!0,g.map(h,function(a){return s.hasClass(a)}))&&(g("tbody tr",this).removeClass(h.join(" ")),o.asDestroyStripes=h.slice());q=[];h=this.getElementsByTagName("thead");0!==h.length&&(ea(o.aoHeader,h[0]),q=qa(o));if(null===d.aoColumns){p=[];h=0;for(i=q.length;h<i;h++)p.push(null)}else p=d.aoColumns;h=0;for(i=p.length;h<i;h++)Ga(o,q?q[h]:null);ib(o,d.aoColumnDefs,p,function(a, +b){ka(o,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};g.each(na(o,s[0]).cells,function(a,b){var c=o.aoColumns[a];if(c.mData===a){var e=u(b,"sort")||u(b,"order"),d=u(b,"filter")||u(b,"search");if(e!==null||d!==null){c.mData={_:a+".display",sort:e!==null?a+".@data-"+e:k,type:e!==null?a+".@data-"+e:k,filter:d!==null?a+".@data-"+d:k};ka(o,a)}}})}var v=o.oFeatures;d.bStateSave&&(v.bStateSave=!0,Lb(o,d),A(o,"aoDrawCallback",ya,"state_save"));if(d.aaSorting===k){q= +o.aaSorting;h=0;for(i=q.length;h<i;h++)q[h][1]=o.aoColumns[h].asSorting[0]}xa(o);v.bSort&&A(o,"aoDrawCallback",function(){if(o.bSorted){var a=V(o),b={};g.each(a,function(a,c){b[c.src]=c.dir});w(o,null,"order",[o,a,b]);Kb(o)}});A(o,"aoDrawCallback",function(){(o.bSorted||z(o)==="ssp"||v.bDeferRender)&&xa(o)},"sc");gb(o);h=r.children("caption").each(function(){this._captionSide=r.css("caption-side")});i=r.children("thead");0===i.length&&(i=g("<thead/>").appendTo(this));o.nTHead=i[0];i=r.children("tbody"); +0===i.length&&(i=g("<tbody/>").appendTo(this));o.nTBody=i[0];i=r.children("tfoot");if(0===i.length&&0<h.length&&(""!==o.oScroll.sX||""!==o.oScroll.sY))i=g("<tfoot/>").appendTo(this);0===i.length||0===i.children().length?r.addClass(j.sNoFooter):0<i.length&&(o.nTFoot=i[0],ea(o.aoFooter,o.nTFoot));if(d.aaData)for(h=0;h<d.aaData.length;h++)L(o,d.aaData[h]);else(o.bDeferLoading||"dom"==z(o))&&ma(o,g(o.nTBody).children("tr"));o.aiDisplay=o.aiDisplayMaster.slice();o.bInitialised=!0;!1===n&&ha(o)}});b=null; +return this};var Ub=[],x=Array.prototype,dc=function(a){var b,c,e=m.settings,d=g.map(e,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=g.inArray(a,d),-1!==b?[e[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=g(a):a instanceof g&&(c=a)}else return[];if(c)return c.map(function(){b=g.inArray(this,d);return-1!==b?e[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a, +b);var c=[],e=function(a){(a=dc(a))&&c.push.apply(c,a)};if(g.isArray(a))for(var d=0,f=a.length;d<f;d++)e(a[d]);else e(a);this.context=Oa(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};t.extend(this,this,Ub)};m.Api=t;g.extend(t.prototype,{any:function(){return 0!==this.count()},concat:x.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b= +this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,b)},flatten:function(){var a=[];return new t(this.context,a.concat.apply(a,this.toArray()))},join:x.join,indexOf:x.indexOf||function(a,b){for(var c=b||0,e=this.length;c<e;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,e){var d=[],f,h,g,j,n,l=this.context, +m,q,p=this.selector;"string"===typeof a&&(e=c,c=b,b=a,a=!1);h=0;for(g=l.length;h<g;h++){var o=new t(l[h]);if("table"===b)f=c.call(o,l[h],h),f!==k&&d.push(f);else if("columns"===b||"rows"===b)f=c.call(o,l[h],this[h],h),f!==k&&d.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){q=this[h];"column-rows"===b&&(m=Da(l[h],p.opts));j=0;for(n=q.length;j<n;j++)f=q[j],f="cell"===b?c.call(o,l[h],f.row,f.column,h,j):c.call(o,l[h],f,h,j,m),f!==k&&d.push(f)}}return d.length||e?(a=new t(l,a? +d.concat.apply([],d):d),b=a.selector,b.rows=p.rows,b.cols=p.cols,b.opts=p.opts,a):this},lastIndexOf:x.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(x.map)b=x.map.call(this,a,this);else for(var c=0,e=this.length;c<e;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:x.pop,push:x.push,reduce:x.reduce||function(a,b){return hb(this,a,b,0,this.length, +1)},reduceRight:x.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:x.reverse,selector:null,shift:x.shift,sort:x.sort,splice:x.splice,toArray:function(){return x.slice.call(this)},to$:function(){return g(this)},toJQuery:function(){return g(this)},unique:function(){return new t(this.context,Oa(this))},unshift:x.unshift});t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var e,d,f,h=function(a,b,c){return function(){var e=b.apply(a,arguments);t.extend(e, +e,c.methodExt);return e}};e=0;for(d=c.length;e<d;e++)f=c[e],b[f.name]="function"===typeof f.val?h(a,f.val,f):g.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=p=function(a,b){if(g.isArray(a))for(var c=0,e=a.length;c<e;c++)t.register(a[c],b);else for(var d=a.split("."),f=Ub,h,i,c=0,e=d.length;c<e;c++){h=(i=-1!==d[c].indexOf("()"))?d[c].replace("()",""):d[c];var j;a:{j=0;for(var n=f.length;j<n;j++)if(f[j].name===h){j=f[j];break a}j=null}j||(j={name:h, +val:{},methodExt:[],propExt:[]},f.push(j));c===e-1?j.val=b:f=i?j.methodExt:j.propExt}};t.registerPlural=s=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?g.isArray(a[0])?new t(a.context,a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var e=g.map(c,function(a){return a.nTable}),a=g(e).filter(a).map(function(){var a=g.inArray(this,e);return c[a]}).toArray(); +b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});s("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});s("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});s("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});s("tables().footer()","table().footer()", +function(){return this.iterator("table",function(a){return a.nTFoot},1)});s("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===a?M(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),R(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ua(b,a)})});p("page.info()",function(){if(0===this.context.length)return k; +var a=this.context[0],b=a._iDisplayStart,c=a._iDisplayLength,e=a.fnRecordsDisplay(),d=-1===c;return{page:d?0:Math.floor(b/c),pages:d?1:Math.ceil(e/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:e,serverSide:"ssp"===z(a)}});p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Sa(b,a)})});var Vb=function(a,b,c){if(c){var e=new t(a);e.one("draw",function(){c(e.ajax.json())})}if("ssp"== +z(a))R(a,b);else{C(a,!0);var d=a.jqXHR;d&&4!==d.readyState&&d.abort();ra(a,[],function(c){oa(a);for(var c=sa(a,c),e=0,d=c.length;e<d;e++)L(a,c[e]);R(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});p("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k; +b=b[0];return b.ajax?g.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){g.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});var $a=function(a,b,c,e,d){var f=[],h,i,j,n,l,m;j=typeof b;if(!b||"string"===j||"function"===j||b.length===k)b=[b];j=0;for(n=b.length;j<n;j++){i=b[j]&&b[j].split?b[j].split(","):[b[j]];l=0;for(m=i.length;l<m;l++)(h=c("string"===typeof i[l]? +g.trim(i[l]):i[l]))&&h.length&&f.push.apply(f,h)}a=v.selector[a];if(a.length){j=0;for(n=a.length;j<n;j++)f=a[j](e,d,f)}return f},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return g.extend({search:"none",order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,e,d,f=[],h=a.aiDisplay;c=a.aiDisplayMaster;var i=b.search;e=b.order; +d=b.page;if("ssp"==z(a))return"removed"===i?[]:W(0,c.length);if("current"==d){c=a._iDisplayStart;for(e=a.fnDisplayEnd();c<e;c++)f.push(h[c])}else if("current"==e||"applied"==e)f="none"==i?c.slice():"applied"==i?h.slice():g.map(c,function(a){return-1===g.inArray(a,h)?a:null});else if("index"==e||"original"==e){c=0;for(e=a.aoData.length;c<e;c++)"none"==i?f.push(c):(d=g.inArray(c,h),(-1===d&&"removed"==i||0<=d&&"applied"==i)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":g.isPlainObject(a)&& +(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=b;return $a("row",a,function(a){var b=Qb(a);if(b!==null&&!d)return[b];var i=Da(c,d);if(b!==null&&g.inArray(b,i)!==-1)return[b];if(!a)return i;if(typeof a==="function")return g.map(i,function(b){var d=c.aoData[b];return a(b,d._aData,d.nTr)?b:null});b=Tb(ia(c.aoData,i,"nTr"));if(a.nodeName&&g.inArray(a,b)!==-1)return[a._DT_RowIndex];if(typeof a==="string"&&a.charAt(0)==="#"){i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return g(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()}, +c,d)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});s("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var e=b.aoData[c];return"search"===a?e._aFilterData:e._aSortData},1)});s("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row", +function(b,c){da(b,c,a)})});s("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});s("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,e=0,d=c.length;e<d;e++)for(var f=0,h=this[e].length;f<h;f++){var g=c[e].rowIdFn(c[e].aoData[this[e][f]]._aData);b.push((!0===a?"#":"")+g)}return new t(c,b)});s("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,e){var d=b.aoData;d.splice(c,1);for(var f=0,h=d.length;f< +h;f++)null!==d[f].nTr&&(d[f].nTr._DT_RowIndex=f);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,c);pa(a[e],c,!1);Ta(b)});this.iterator("table",function(a){for(var c=0,e=a.aoData.length;c<e;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,h,g=[];f=0;for(h=a.length;f<h;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?g.push(ma(b,c)[0]):g.push(L(b,c));return g},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});p("row()",function(a, +b){return bb(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;da(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof g&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:L(b,a)}); +return this.row(b[0])});var cb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Wb=function(a,b){var c=a.context;if(c.length&&a.length){var e=c[0].aoData[a[0]];if(e._details){(e._detailsShow=b)?e._details.insertAfter(e.nTr):e._details.detach();var d=c[0],f=new t(d),h=d.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(h,"_details").length&&(f.on("draw.dt.DT_details",function(a, +b){d===b&&f.rows({page:"current"}).eq(0).each(function(a){a=h[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(d===b)for(var c,e=ba(b),f=0,g=h.length;f<g;f++)c=h[f],c._details&&c._details.children("td[colspan]").attr("colspan",e)}),f.on("destroy.dt.DT_details",function(a,b){if(d===b)for(var c=0,e=h.length;c<e;c++)h[c]._details&&cb(f,c)}))}}};p("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details: +k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var e=c[0],c=c[0].aoData[this[0]],d=[],f=function(a,b){if(g.isArray(a)||a instanceof g)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?d.push(a):(c=g("<tr><td/></tr>").addClass(b),g("td",c).addClass(b).html(a)[0].colSpan=ba(e),d.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=g(d);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()", +"row().child().show()"],function(){Wb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Wb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ec=/^(.+):(name|visIdx|visible)$/,Xb=function(a,b,c,e,d){for(var c=[],e=0,f=d.length;e<f;e++)c.push(y(a,d[e],b));return c};p("columns()", +function(a,b){a===k?a="":g.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var d=a,f=b,h=c.aoColumns,i=D(h,"sName"),j=D(h,"nTh");return $a("column",d,function(a){var b=Qb(a);if(a==="")return W(h.length);if(b!==null)return[b>=0?b:h.length+b];if(typeof a==="function"){var d=Da(c,f);return g.map(h,function(b,f){return a(f,Xb(c,f,0,0,d),j[f])?f:null})}var k=typeof a==="string"?a.match(ec):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m= +g.map(h,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[la(c,b)];case "name":return g.map(i,function(a,b){return a===k[1]?b:null})}else return g(j).filter(a).map(function(){return g.inArray(this,j)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});s("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});s("columns().footer()","column().footer()",function(){return this.iterator("column", +function(a,b){return a.aoColumns[b].nTf},1)});s("columns().data()","column().data()",function(){return this.iterator("column-rows",Xb,1)});s("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});s("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});s("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows", +function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});s("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],h=c.aoData,i,j,n;if(a!==k&&f.bVisible!==a){if(a){var l=g.inArray(!0,D(d,"bVisible"),e+1);i=0;for(j=h.length;i<j;i++)n=h[i].nTr,d=h[i].anCells,n&&n.insertBefore(d[e],d[l]||null)}else g(D(c.aoData,"anCells",e)).detach();f.bVisible=a;fa(c,c.aoHeader);fa(c,c.aoFooter);if(b===k|| +b)Y(c),(c.oScroll.sX||c.oScroll.sY)&&Z(c);w(c,null,"column-visibility",[c,e,a]);ya(c)}})});s("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?aa(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){Y(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return la(c,b);if("fromData"===a||"toVisible"===a)return aa(c,b)}});p("column()", +function(a,b){return bb(this.columns(a,b))});p("cells()",function(a,b,c){g.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));g.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var e=a,d=ab(c),f=b.aoData,h=Da(b,d),i=Tb(ia(f,h,"anCells")),j=g([].concat.apply([],i)),l,n=b.aoColumns.length,m,p,t,s,u,v;return $a("cell",e,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(t=h.length;p<t;p++){l=h[p];for(s=0;s<n;s++){u={row:l,column:s}; +if(c){v=b.aoData[l];a(u,y(b,l,s),v.anCells?v.anCells[s]:null)&&m.push(u)}else m.push(u)}}return m}return g.isPlainObject(a)?[a]:j.filter(a).map(function(a,b){l=b.parentNode._DT_RowIndex;return{row:l,column:g.inArray(b,f[l].anCells)}}).toArray()},b,d)});var e=this.columns(b,c),d=this.rows(a,c),f,h,i,j,n,l=this.iterator("table",function(a,b){f=[];h=0;for(i=d[b].length;h<i;h++){j=0;for(n=e[b].length;j<n;j++)f.push({row:d[b][h],column:e[b][j]})}return f},1);g.extend(l.selector,{cols:b,rows:a,opts:c}); +return l});s("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return y(a,b,c)},1)});s("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,e){return b.aoData[c][a][e]},1)});s("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,e){return y(b, +c,e,a)},1)});s("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:aa(a,c)}},1)});s("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,e){da(b,c,a,e)})});p("cell()",function(a,b,c){return bb(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?y(b[0],c[0].row,c[0].column):k;Ja(b[0],c[0].row,c[0].column,a);da(b[0],c[0].row, +"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:g.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(e){Pa(e,a,b,c)})});p(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,e){var d=[];g.each(b[e], +function(b,c){d.push([c,a])});c.aaSorting=d})});p("search()",function(a,b,c,e){var d=this.context;return a===k?0!==d.length?d[0].oPreviousSearch.sSearch:k:this.iterator("table",function(d){d.oFeatures.bFilter&&ga(d,g.extend({},d.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),1)})});s("columns().search()","column().search()",function(a,b,c,e){return this.iterator("column",function(d,f){var h=d.aoPreSearchCols;if(a===k)return h[f].sSearch;d.oFeatures.bFilter&& +(g.extend(h[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===e?!0:e}),ga(d,d.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){ya(a)})}); +m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,e,d=0,f=a.length;d<f;d++)if(c=parseInt(b[d],10)||0,e=parseInt(a[d],10)||0,c!==e)return c>e;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=g(a).get(0),c=!1;g.each(m.settings,function(a,d){var f=d.nScrollHead?g("table",d.nScrollHead)[0]:null,h=d.nScrollFoot?g("table",d.nScrollFoot)[0]:null;if(d.nTable===b||f===b||h===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;g.isPlainObject(a)&&(b= +a.api,a=a.visible);var c=g.map(m.settings,function(b){if(!a||a&&g(b.nTable).is(":visible"))return b.nTable});return b?new t(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=I;p("$()",function(a,b){var c=this.rows(b).nodes(),c=g(c);return g([].concat(c.filter(a).toArray(),c.find(a).toArray()))});g.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=g(this.tables().nodes());e[b].apply(e,a);return this})}); +p("clear()",function(){return this.iterator("table",function(a){oa(a)})});p("settings()",function(){return new t(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,h=b.nTHead,i=b.nTFoot,j=g(d),f=g(f), +k=g(b.nTableWrapper),l=g.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");g(Fa).unbind(".DT-"+b.sInstance);d!=h.parentNode&&(j.children("thead").detach(),j.append(h));i&&d!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));b.aaSorting=[];b.aaSortingFixed=[];xa(b);g(l).removeClass(b.asStripeClasses.join(" "));g("th, td",h).removeClass(e.sSortable+" "+e.sSortableAsc+ +" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(g("th span."+e.sSortIcon+", td span."+e.sSortIcon,h).detach(),g("th, td",h).each(function(){var a=g("div."+e.sSortJUIWrapper,this);g(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);h=a?"remove":"detach";j[h]();k[h]();!a&&c&&(c.insertBefore(d,b.nTableReinsertBefore),j.css("width",b.sDestroyWidth).removeClass(e.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){g(this).addClass(b.asDestroyStripes[a%p])})); +c=g.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});g.each(["column","row","cell"],function(a,b){p(b+"s().every()",function(a){return this.iterator(b,function(e,d,f,h,g){a.call((new t(e))[b](d,"cell"===b?f:k),d,f,h,g)})})});p("i18n()",function(a,b,c){var e=this.context[0],a=P(a)(e.oLanguage);a===k&&(a=b);c!==k&&g.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.9-dev";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0}; +m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null, +sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ +"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:g.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; +X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, +bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[], +aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[], +sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==z(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==z(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength, +b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=v={buttons:{},classes:{},errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[], +search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};g.extend(v,{afnFiltering:v.search,aTypes:v.type.detect,ofnSearch:v.type.search,oSort:v.type.order,afnSortData:v.order,aoFeatures:v.feature,oApi:v.internal,oStdClasses:v.classes,oPagination:v.pager});g.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty", +sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner", +sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ja=Ea+"css_right ui-icon ui-icon-",Yb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";g.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+ +G,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",sSortDesc:G+" sorting_desc",sSortable:G+" sorting",sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s",sSortJUI:ja+"carat-2-n-s",sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+ +"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Yb+" ui-corner-tl ui-corner-tr",sJUIFooter:Yb+" ui-corner-bl ui-corner-br"});var Nb=m.ext.pager;g.extend(Nb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a,b)]},simple_numbers:function(a,b){return["previous",Aa(a, +b),"next"]},full_numbers:function(a,b){return["first","previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});g.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var h=a.oClasses,i=a.oLanguage.oPaginate,j,k,l=0,m=function(b,e){var p,q,t,s,u=function(b){Ua(a,b.data.action,true)};p=0;for(q=e.length;p<q;p++){s=e[p];if(g.isArray(s)){t=g("<"+(s.DT_el||"div")+"/>").appendTo(b);m(t,s)}else{j=null;k="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break; +case "first":j=i.sFirst;k=s+(d>0?"":" "+h.sPageButtonDisabled);break;case "previous":j=i.sPrevious;k=s+(d>0?"":" "+h.sPageButtonDisabled);break;case "next":j=i.sNext;k=s+(d<f-1?"":" "+h.sPageButtonDisabled);break;case "last":j=i.sLast;k=s+(d<f-1?"":" "+h.sPageButtonDisabled);break;default:j=s+1;k=d===s?h.sPageButtonActive:""}if(j!==null){t=g("<a>",{"class":h.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(j).appendTo(b); +Wa(t,{action:s},u);l++}}}},p;try{p=g(b).find(T.activeElement).data("dt-idx")}catch(t){}m(g(b).empty(),e);p&&g(b).find("[data-dt-idx="+p+"]").focus()}}});g.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!bc.test(a)||!cc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||K(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal; +return Sb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Sb(a,c,!0)?"html-num-fmt"+c:null},function(a){return K(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);g.extend(m.ext.type.search,{html:function(a){return K(a)?a:"string"===typeof a?a.replace(Pb," ").replace(Ca,""):""},string:function(a){return K(a)?a:"string"===typeof a?a.replace(Pb," "):a}});var Ba=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Rb(a,b));a.replace&&(c&&(a=a.replace(c,"")), +e&&(a=a.replace(e,"")));return 1*a};g.extend(v.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return K(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return K(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");g.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,e){g(a.nTable).on("order.dt.DT",function(d, +f,h,g){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(g[d]=="asc"?e.sSortAsc:g[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){g("<div/>").addClass(e.sSortJUIWrapper).append(b.contents()).append(g("<span/>").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);g(a.nTable).on("order.dt.DT",function(d,f,h,g){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(g[d]=="asc"?e.sSortAsc:g[d]=="desc"?e.sSortDesc:c.sSortingClass); +b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(g[d]=="asc"?e.sSortJUIAsc:g[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,e,d){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",f=Math.abs(parseFloat(f)),i=parseInt(f,10),f=c?b+(f-i).toFixed(c).substring(2):"";return g+(e||"")+i.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +a)+f+(d||"")}}}};g.extend(m.ext.internal,{_fnExternApiFunc:Ob,_fnBuildAjax:ra,_fnAjaxUpdate:lb,_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:ka,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:aa,_fnVisbleColumns:ba,_fnGetColumns:$,_fnColumnTypes:Ia,_fnApplyColumnDefs:ib,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:S,_fnBrowserDetect:gb,_fnAddData:L,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!== +k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return g.inArray(c,a.aoData[b].anCells)},_fnGetCellData:y,_fnSetCellData:Ja,_fnSplitObjNotation:La,_fnGetObjectDataFn:P,_fnSetObjectDataFn:Q,_fnGetDataMaster:Ma,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:da,_fnGetRowElements:na,_fnCreateTr:Ka,_fnBuildHead:kb,_fnDrawHead:fa,_fnDraw:M,_fnReDraw:R,_fnAddOptionsHtml:nb,_fnDetectHeader:ea,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:ga,_fnFilterCustom:yb,_fnFilterColumn:xb, +_fnFilter:wb,_fnFilterCreateSearch:Ra,_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,_fnInfoMacros:Db,_fnInitialise:ha,_fnInitComplete:ta,_fnLengthChange:Sa,_fnFeatureHtmlLength:ob,_fnFeatureHtmlPaginate:tb,_fnPageChange:Ua,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:Z,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:u,_fnScrollBarWidth:Ib, +_fnSortFlatten:V,_fnSort:mb,_fnSortAria:Kb,_fnSortListener:Va,_fnSortAttachListener:Pa,_fnSortingClasses:xa,_fnSortData:Jb,_fnSaveState:ya,_fnLoadState:Lb,_fnSettingsFromNode:za,_fnLog:J,_fnMap:F,_fnBindAction:Wa,_fnCallbackReg:A,_fnCallbackFire:w,_fnLengthOverflow:Ta,_fnRenderer:Qa,_fnDataSource:z,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});g.fn.dataTable=m;g.fn.dataTableSettings=m.settings;g.fn.dataTableExt=m.ext;g.fn.DataTable=function(a){return g(this).dataTable(a).api()};g.each(m,function(a, +b){g.fn.DataTable[a]=b});return g.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],S):"object"===typeof exports?module.exports=S(require("jquery")):jQuery&&!jQuery.fn.dataTable&&S(jQuery)})(window,document); diff --git a/plugins/datatables/json/scroller-demo.json b/plugins/datatables/json/scroller-demo.json new file mode 100644 index 0000000..4e9f706 --- /dev/null +++ b/plugins/datatables/json/scroller-demo.json @@ -0,0 +1,2502 @@ +{ "aaData": [ + [ "1", "Armand", "Warren", "56045", "Taiwan, Province of China" ], + [ "2", "Xenos", "Salas", "71090", "Liberia" ], + [ "3", "Virginia", "Whitaker", "62723", "Nicaragua" ], + [ "4", "Kato", "Patrick", "97662", "Palau" ], + [ "5", "Penelope", "Hensley", "76634", "Greenland" ], + [ "6", "Georgia", "Erickson", "81358", "Bolivia" ], + [ "7", "Shad", "Pena", "20600", "Palestinian Territory, Occupied" ], + [ "8", "Tanisha", "Humphrey", "93371", "Kenya" ], + [ "9", "Claire", "Espinoza", "I8S 2S8", "Panama" ], + [ "10", "Raya", "Tucker", "O8D 8W7", "Botswana" ], + [ "11", "Otto", "Briggs", "57590", "Anguilla" ], + [ "12", "Logan", "Burt", "53041", "Venezuela" ], + [ "13", "Cooper", "Pennington", "36994", "France" ], + [ "14", "Kristen", "Peterson", "52917", "Sao Tome and Principe" ], + [ "15", "Jordan", "Velasquez", "08884", "Switzerland" ], + [ "16", "Zelda", "Freeman", "F9H 1J9", "Holy See (Vatican City State)" ], + [ "17", "Mary", "Pacheco", "A7Y 6X9", "Niger" ], + [ "18", "Tiger", "Robles", "44533", "Malaysia" ], + [ "19", "Zelenia", "Buckner", "Q8N 6E5", "Malawi" ], + [ "20", "Coby", "Johnston", "N6I 2O9", "Rwanda" ], + [ "21", "Gillian", "Strickland", "12258", "Cook Islands" ], + [ "22", "Alfreda", "Mcbride", "K5A 3B6", "Nigeria" ], + [ "23", "Laith", "Ford", "19072", "Czech Republic" ], + [ "24", "Autumn", "Barton", "U9D 9F4", "Angola" ], + [ "25", "Nadine", "Britt", "G4U 8L0", "Liechtenstein" ], + [ "26", "Xaviera", "Hart", "T1N 7D2", "Mali" ], + [ "27", "Neil", "Page", "T3E 9F4", "Korea" ], + [ "28", "Rose", "French", "B7T 8M2", "French Polynesia" ], + [ "29", "Alyssa", "Poole", "S1L 2T5", "Yemen" ], + [ "30", "Chantale", "Lynch", "97316", "United States" ], + [ "31", "Jermaine", "Dawson", "A3H 7A1", "American Samoa" ], + [ "32", "Ann", "Giles", "54258", "Korea" ], + [ "33", "Jerry", "Carr", "04901", "South Georgia and The South Sandwich Islands" ], + [ "34", "Lionel", "Hooper", "67970", "Bahrain" ], + [ "35", "Alyssa", "Hewitt", "R3K 2V8", "Paraguay" ], + [ "36", "Lisandra", "Sheppard", "71886", "Seychelles" ], + [ "37", "Kylan", "Harrison", "96763", "Italy" ], + [ "38", "Kaitlin", "Montgomery", "V5K 5U8", "Niger" ], + [ "39", "Heidi", "Boyd", "B3C 8M9", "Papua New Guinea" ], + [ "40", "Rinah", "Case", "W7M 5K1", "Mali" ], + [ "41", "Thaddeus", "Maynard", "E4V 6W6", "Egypt" ], + [ "42", "Lacota", "Ray", "T3J 8D8", "United Kingdom" ], + [ "43", "Olympia", "Cortez", "F8C 7I5", "Palau" ], + [ "44", "Wendy", "Rojas", "N8T 4K6", "Cook Islands" ], + [ "45", "Arden", "Kelley", "V9N 2T6", "India" ], + [ "46", "Colorado", "Lindsey", "96703", "Chad" ], + [ "47", "Alika", "Weaver", "F6V 1I1", "Bulgaria" ], + [ "48", "Phoebe", "Mack", "E4B 1X2", "El Salvador" ], + [ "49", "Sybill", "Bridges", "Z2G 6A2", "Somalia" ], + [ "50", "Trevor", "Larsen", "K1R 3B9", "United Arab Emirates" ], + [ "51", "Maya", "Battle", "70881", "Australia" ], + [ "52", "Charity", "Walton", "I4I 5R9", "Swaziland" ], + [ "53", "Lane", "Sloan", "79076", "Nauru" ], + [ "54", "Christopher", "Watson", "35116", "Suriname" ], + [ "55", "Clementine", "Shelton", "98232", "Venezuela" ], + [ "56", "Basil", "Hood", "J9I 1R2", "Tonga" ], + [ "57", "Meghan", "Pacheco", "H5Z 6B1", "Dominican Republic" ], + [ "58", "Brennan", "Potts", "51743", "Turkey" ], + [ "59", "Lawrence", "Duran", "63266", "Uruguay" ], + [ "60", "Ina", "Head", "S8P 9J5", "Romania" ], + [ "61", "Castor", "Jacobson", "C9F 6C9", "Albania" ], + [ "62", "Daquan", "Holden", "38571", "Ireland" ], + [ "63", "Donna", "Valencia", "J7B 3I0", "Portugal" ], + [ "64", "Kessie", "Phelps", "61063", "Georgia" ], + [ "65", "Dillon", "Garcia", "13652", "Holy See (Vatican City State)" ], + [ "66", "Russell", "Sweeney", "T8P 2O6", "Saint Kitts and Nevis" ], + [ "67", "Zelda", "Berg", "84946", "Afghanistan" ], + [ "68", "Dexter", "Mann", "73596", "Thailand" ], + [ "69", "Maisie", "Miller", "X3M 6C1", "Seychelles" ], + [ "70", "Lynn", "Mitchell", "N5B 3Z9", "Wallis and Futuna" ], + [ "71", "Gay", "Medina", "66692", "Germany" ], + [ "72", "Olga", "Clark", "M6B 7B6", "Kuwait" ], + [ "73", "Brianna", "Obrien", "Z6Z 5R3", "Bahrain" ], + [ "74", "Daria", "Byers", "R9T 4N7", "Ghana" ], + [ "75", "Chiquita", "Barker", "28435", "Ireland" ], + [ "76", "Gray", "Salazar", "58618", "Chile" ], + [ "77", "Delilah", "Kirby", "42811", "Oman" ], + [ "78", "Xanthus", "Holland", "B8Q 9C4", "Antigua and Barbuda" ], + [ "79", "Reuben", "Brennan", "44693", "Czech Republic" ], + [ "80", "Alden", "Long", "94236", "Slovakia" ], + [ "81", "Blythe", "Bender", "04812", "Guam" ], + [ "82", "Aileen", "Burgess", "47942", "Djibouti" ], + [ "83", "Zeus", "Craig", "43002", "Nicaragua" ], + [ "84", "Jade", "Garza", "F2X 8F3", "New Zealand" ], + [ "85", "Noah", "Barrera", "K9C 8U0", "Malawi" ], + [ "86", "Quyn", "Robertson", "H3X 6J9", "Bosnia and Herzegovina" ], + [ "87", "Serena", "Cabrera", "83671", "Slovenia" ], + [ "88", "Charity", "Chase", "T9Q 7C4", "Solomon Islands" ], + [ "89", "Athena", "Grimes", "62801", "Aruba" ], + [ "90", "Mallory", "Middleton", "D2V 1M5", "Italy" ], + [ "91", "Xenos", "Jones", "46642", "Singapore" ], + [ "92", "Tate", "Gregory", "66538", "Zimbabwe" ], + [ "93", "Blaze", "Taylor", "70282", "Paraguay" ], + [ "94", "Jena", "Duncan", "63057", "Cambodia" ], + [ "95", "Thaddeus", "Chase", "66762", "Netherlands Antilles" ], + [ "96", "Guinevere", "Mcgee", "O9G 4S2", "Lebanon" ], + [ "97", "Kermit", "Ramsey", "41214", "Dominican Republic" ], + [ "98", "Josephine", "Gallagher", "04960", "French Southern Territories" ], + [ "99", "Amela", "Morales", "M9I 1X5", "Sudan" ], + [ "100", "Rina", "Yates", "G3T 7M9", "Dominica" ], + [ "101", "Orson", "Norris", "21660", "Sierra Leone" ], + [ "102", "Graiden", "Silva", "98191", "Saint Lucia" ], + [ "103", "Amaya", "Hood", "45779", "India" ], + [ "104", "Fatima", "Fitzpatrick", "I4R 9Q8", "Viet Nam" ], + [ "105", "Judith", "Stokes", "97596", "Sudan" ], + [ "106", "Jared", "Vaughn", "75521", "Benin" ], + [ "107", "Mira", "Morgan", "35169", "Martinique" ], + [ "108", "Walter", "Perkins", "28618", "San Marino" ], + [ "109", "Megan", "Maxwell", "K6X 3J4", "Oman" ], + [ "110", "Christine", "Christensen", "M7S 8G8", "Netherlands Antilles" ], + [ "111", "Tanner", "Guerra", "S3K 6Y5", "Finland" ], + [ "112", "Meghan", "Rowland", "K7U 3A1", "Rwanda" ], + [ "113", "Patrick", "Mitchell", "V3F 5C4", "Oman" ], + [ "114", "Jackson", "Sanders", "83229", "Greenland" ], + [ "115", "Omar", "Savage", "14082", "Korea" ], + [ "116", "Ulla", "Larsen", "Q2P 4L8", "French Southern Territories" ], + [ "117", "Hop", "Gates", "D9G 9J4", "Poland" ], + [ "118", "Astra", "Mendoza", "R3D 2H9", "Saint Vincent and The Grenadines" ], + [ "119", "Denise", "Cardenas", "73138", "Sao Tome and Principe" ], + [ "120", "Melodie", "Roberts", "L1G 4H2", "India" ], + [ "121", "Cedric", "Joseph", "M4V 8O9", "Korea, Republic of" ], + [ "122", "Linda", "Horn", "24465", "Bosnia and Herzegovina" ], + [ "123", "Mary", "Lyons", "22324", "Norfolk Island" ], + [ "124", "Ciara", "Mcknight", "30784", "Anguilla" ], + [ "125", "Vaughan", "Santiago", "65037", "Guyana" ], + [ "126", "Lamar", "Shepherd", "58040", "France" ], + [ "127", "Xavier", "Webster", "68321", "Afghanistan" ], + [ "128", "Ainsley", "Banks", "46902", "Pakistan" ], + [ "129", "Alika", "Love", "L5O 4B3", "Iran, Islamic Republic of" ], + [ "130", "Maite", "Dickson", "37405", "Saint Kitts and Nevis" ], + [ "131", "Kimberley", "Morrow", "F7C 7J0", "Lebanon" ], + [ "132", "Eugenia", "Stafford", "36282", "Nicaragua" ], + [ "133", "Mira", "Gill", "K1T 8U1", "Uruguay" ], + [ "134", "Herman", "Francis", "C2G 8G9", "Northern Mariana Islands" ], + [ "135", "Veronica", "Peters", "74146", "Cook Islands" ], + [ "136", "Axel", "Cochran", "32240", "Central African Republic" ], + [ "137", "Edan", "Howe", "51862", "Mali" ], + [ "138", "Ignacia", "Bruce", "Q8T 5Q1", "Sao Tome and Principe" ], + [ "139", "Jana", "Mcguire", "89412", "Czech Republic" ], + [ "140", "Alice", "Underwood", "74535", "Slovakia" ], + [ "141", "Tobias", "Kent", "33601", "South Georgia and The South Sandwich Islands" ], + [ "142", "Nasim", "Coleman", "19377", "United States Minor Outlying Islands" ], + [ "143", "Geoffrey", "Byers", "85753", "Netherlands Antilles" ], + [ "144", "Odette", "Sawyer", "55418", "Tunisia" ], + [ "145", "Chaney", "Flowers", "F4W 7O7", "Maldives" ], + [ "146", "Shelly", "Glover", "M5Y 4A6", "Taiwan, Province of China" ], + [ "147", "Uriel", "Thornton", "Z6Q 5B7", "Myanmar" ], + [ "148", "Clio", "Nicholson", "Y8S 7P2", "Martinique" ], + [ "149", "Jana", "Foley", "B1O 9J5", "United Arab Emirates" ], + [ "150", "Fulton", "Rasmussen", "39194", "Solomon Islands" ], + [ "151", "Lisandra", "Boyd", "J2Z 2V7", "French Guiana" ], + [ "152", "Brennan", "Lopez", "Q4M 7Y4", "Burkina Faso" ], + [ "153", "Martha", "Washington", "M7S 4U6", "Iran, Islamic Republic of" ], + [ "154", "Dara", "Ramos", "07799", "Portugal" ], + [ "155", "Virginia", "Harris", "01246", "Bermuda" ], + [ "156", "Maryam", "Patrick", "Y3J 4Y0", "Rwanda" ], + [ "157", "Shana", "Mullen", "61169", "Togo" ], + [ "158", "Rowan", "Hahn", "K6D 5T4", "Guinea-bissau" ], + [ "159", "Hermione", "Shepherd", "M4F 7T6", "Ireland" ], + [ "160", "Jada", "Bright", "P1Z 7E6", "French Southern Territories" ], + [ "161", "Scarlet", "Bray", "57161", "Austria" ], + [ "162", "Haviva", "Conner", "M4T 8O4", "Bermuda" ], + [ "163", "Myra", "Briggs", "Q4B 6L7", "Kenya" ], + [ "164", "Hall", "Floyd", "40411", "Bangladesh" ], + [ "165", "Kyle", "Marquez", "J4T 7C6", "Djibouti" ], + [ "166", "Claudia", "Long", "R7B 1T6", "Macedonia" ], + [ "167", "Hasad", "Clemons", "94009", "Bosnia and Herzegovina" ], + [ "168", "Kameko", "Reeves", "G4V 6D5", "Singapore" ], + [ "169", "Angelica", "Bailey", "Z3Y 7I0", "Micronesia" ], + [ "170", "Shelley", "Jennings", "O3A 9H0", "Christmas Island" ], + [ "171", "Rafael", "Randolph", "Y4L 8B5", "Germany" ], + [ "172", "Winter", "Kinney", "A3K 9A7", "Saint Lucia" ], + [ "173", "Brian", "Larsen", "53752", "Comoros" ], + [ "174", "Melvin", "Cooper", "72416", "Czech Republic" ], + [ "175", "Gil", "Valencia", "95798", "Uganda" ], + [ "176", "Uma", "Cummings", "84649", "Jordan" ], + [ "177", "Micah", "Shannon", "H9L 8R6", "Ghana" ], + [ "178", "Ahmed", "Weiss", "05291", "American Samoa" ], + [ "179", "Hop", "Foster", "W9C 7J7", "Panama" ], + [ "180", "Todd", "Barnett", "T9R 7J4", "Seychelles" ], + [ "181", "Byron", "Meyers", "J4G 9P2", "Congo" ], + [ "182", "Hadassah", "Barnett", "U1A 8V3", "Paraguay" ], + [ "183", "Hermione", "Luna", "L4G 2E5", "New Zealand" ], + [ "184", "Marsden", "Alvarado", "U1V 1Y4", "Aruba" ], + [ "185", "Britanni", "Gregory", "C8O 2T4", "Kazakhstan" ], + [ "186", "Brenda", "Oneil", "R9Q 9B7", "Gibraltar" ], + [ "187", "Reuben", "Hopkins", "C2D 9D0", "Bhutan" ], + [ "188", "Sonia", "Sandoval", "Y2G 5I0", "Guatemala" ], + [ "189", "Yasir", "Holcomb", "A1H 6Y3", "Angola" ], + [ "190", "Aristotle", "Rosa", "51870", "Indonesia" ], + [ "191", "Uriah", "Blair", "X8K 1B9", "Suriname" ], + [ "192", "Vaughan", "Sharp", "L2F 5N8", "Faroe Islands" ], + [ "193", "Cooper", "Beard", "80399", "United States Minor Outlying Islands" ], + [ "194", "Riley", "Greene", "44728", "Russian Federation" ], + [ "195", "Rashad", "Flowers", "L6N 8U7", "Mongolia" ], + [ "196", "Yvonne", "Wilson", "18599", "Svalbard and Jan Mayen" ], + [ "197", "Martena", "Ayers", "A8Z 5F7", "Oman" ], + [ "198", "Eagan", "Cline", "T9P 4L4", "Solomon Islands" ], + [ "199", "Dawn", "Carrillo", "T6O 6E5", "Malawi" ], + [ "200", "Ali", "Singleton", "G6F 3B4", "Italy" ], + [ "201", "Christopher", "Beach", "01655", "Palau" ], + [ "202", "Emma", "Cummings", "W1B 4R6", "Dominica" ], + [ "203", "Ishmael", "Gray", "76928", "Egypt" ], + [ "204", "Megan", "Hines", "F7X 2X5", "New Zealand" ], + [ "205", "Emmanuel", "Steele", "09729", "Netherlands" ], + [ "206", "Alea", "Burris", "08485", "Guatemala" ], + [ "207", "Martina", "Todd", "46863", "Christmas Island" ], + [ "208", "Len", "Valentine", "S6Z 5S8", "Slovenia" ], + [ "209", "Jorden", "Salazar", "U4D 8H6", "Austria" ], + [ "210", "Yvette", "Bradford", "17275", "Heard Island and Mcdonald Islands" ], + [ "211", "Elvis", "Mcmahon", "27586", "Marshall Islands" ], + [ "212", "Gray", "Bonner", "N4V 3U9", "Moldova" ], + [ "213", "Yoshi", "Singleton", "86603", "United Kingdom" ], + [ "214", "Amena", "Burks", "93820", "Reunion" ], + [ "215", "Ocean", "Maldonado", "72026", "Ireland" ], + [ "216", "Allen", "Foley", "75363", "Kiribati" ], + [ "217", "Duncan", "Jimenez", "H3H 3G6", "Oman" ], + [ "218", "Ira", "Maxwell", "53136", "French Polynesia" ], + [ "219", "Astra", "Moon", "D7W 8G2", "Dominican Republic" ], + [ "220", "Orson", "Myers", "06049", "Mali" ], + [ "221", "Brandon", "Estes", "D2B 7P2", "Kenya" ], + [ "222", "Halee", "Luna", "54733", "Moldova" ], + [ "223", "Jillian", "Gonzalez", "E8W 3L9", "Ecuador" ], + [ "224", "Julie", "Acosta", "X7M 1T2", "Equatorial Guinea" ], + [ "225", "Quemby", "Foster", "48596", "Eritrea" ], + [ "226", "Erich", "Chavez", "W4P 7G8", "Mayotte" ], + [ "227", "Roary", "Mcknight", "K9K 2K4", "Chile" ], + [ "228", "Mufutau", "Henderson", "81377", "Mayotte" ], + [ "229", "Herman", "Ferguson", "69405", "Japan" ], + [ "230", "Abdul", "Franks", "L1V 8X2", "Portugal" ], + [ "231", "Dominic", "Logan", "98770", "Saint Lucia" ], + [ "232", "Isadora", "Solis", "Y3A 6H5", "Portugal" ], + [ "233", "Lester", "Davis", "30339", "British Indian Ocean Territory" ], + [ "234", "Joel", "Rojas", "N8E 5T9", "Bahrain" ], + [ "235", "Quinlan", "Carroll", "55785", "Australia" ], + [ "236", "Guinevere", "Pickett", "A7Y 3V3", "Netherlands Antilles" ], + [ "237", "Nita", "Hopkins", "88370", "Albania" ], + [ "238", "Hayley", "Buckley", "F1V 7P5", "Togo" ], + [ "239", "Colorado", "Reyes", "18798", "Congo" ], + [ "240", "Tashya", "Bartlett", "48537", "Sierra Leone" ], + [ "241", "Isabella", "Keith", "48878", "Kiribati" ], + [ "242", "Jessica", "Noble", "D6C 9T9", "Svalbard and Jan Mayen" ], + [ "243", "Cairo", "Edwards", "40598", "Nepal" ], + [ "244", "Camille", "Bradley", "I4U 8F6", "Fiji" ], + [ "245", "Quin", "Mcgee", "O5D 2P0", "Poland" ], + [ "246", "Rina", "Guzman", "44940", "Bahrain" ], + [ "247", "Glenna", "Kirkland", "Z1L 4W2", "San Marino" ], + [ "248", "Tarik", "Todd", "77228", "Turks and Caicos Islands" ], + [ "249", "Yardley", "Burris", "M6U 9D7", "New Caledonia" ], + [ "250", "Hashim", "Casey", "17722", "Lesotho" ], + [ "251", "Maggie", "Raymond", "62540", "Uganda" ], + [ "252", "Christian", "Mcdonald", "R8K 2M1", "United Arab Emirates" ], + [ "253", "Colt", "Cobb", "75393", "Moldova" ], + [ "254", "Aline", "Graves", "I1C 9I6", "Holy See (Vatican City State)" ], + [ "255", "Farrah", "Cannon", "H5W 2Y0", "Bhutan" ], + [ "256", "Wynne", "Ayers", "B6X 6Y8", "Western Sahara" ], + [ "257", "Teegan", "Avery", "33643", "San Marino" ], + [ "258", "Shana", "Sloan", "K9P 9V7", "Gabon" ], + [ "259", "Britanney", "Cook", "Y5D 6K7", "Romania" ], + [ "260", "Kuame", "Schroeder", "12859", "Syrian Arab Republic" ], + [ "261", "Valentine", "Joseph", "P2S 6T6", "Mayotte" ], + [ "262", "Joelle", "Keller", "U6F 3T7", "Fiji" ], + [ "263", "Elaine", "Hickman", "28056", "Tuvalu" ], + [ "264", "Ivor", "Malone", "H2Z 5X5", "Virgin Islands, British" ], + [ "265", "Maris", "Jefferson", "12474", "Czech Republic" ], + [ "266", "Josephine", "Zimmerman", "Z5J 2I4", "Angola" ], + [ "267", "Baker", "Wooten", "X4K 2L8", "Austria" ], + [ "268", "Alyssa", "Mitchell", "97712", "Antarctica" ], + [ "269", "Carlos", "Pearson", "85838", "Gambia" ], + [ "270", "Luke", "Richardson", "73867", "Christmas Island" ], + [ "271", "Davis", "Gardner", "U2E 4D9", "Chile" ], + [ "272", "Thomas", "Conner", "92487", "Mozambique" ], + [ "273", "Kieran", "Baird", "X9G 6G1", "Iceland" ], + [ "274", "Cheyenne", "Morris", "F5V 4S2", "Greece" ], + [ "275", "Hillary", "Reeves", "89804", "Slovakia" ], + [ "276", "Ryder", "Long", "32725", "New Caledonia" ], + [ "277", "Ariel", "Colon", "50675", "Estonia" ], + [ "278", "Vanna", "Hess", "79057", "Saudi Arabia" ], + [ "279", "Hayley", "Cherry", "B5E 9X4", "United States Minor Outlying Islands" ], + [ "280", "Knox", "Blair", "75626", "Central African Republic" ], + [ "281", "Astra", "Mcdaniel", "24493", "Bermuda" ], + [ "282", "Teegan", "Ford", "A8U 1K9", "Iran, Islamic Republic of" ], + [ "283", "Harrison", "Jackson", "43519", "Marshall Islands" ], + [ "284", "Melyssa", "Lawson", "O7E 8E6", "Belize" ], + [ "285", "Shaine", "Francis", "Q5K 5I4", "India" ], + [ "286", "August", "Reed", "S9R 1O8", "Ghana" ], + [ "287", "Aphrodite", "Zimmerman", "28336", "Lesotho" ], + [ "288", "Declan", "Walters", "08662", "Rwanda" ], + [ "289", "Brody", "Pate", "G2G 9D9", "Serbia and Montenegro" ], + [ "290", "Bradley", "Odom", "L2R 6Z9", "Jordan" ], + [ "291", "Phillip", "Cleveland", "E4D 1B7", "Paraguay" ], + [ "292", "Silas", "Wiggins", "F9F 5X3", "Bahrain" ], + [ "293", "Keely", "Donaldson", "B5H 7F2", "Vanuatu" ], + [ "294", "Hammett", "Lancaster", "H2P 4E6", "Svalbard and Jan Mayen" ], + [ "295", "Kiara", "Clarke", "50885", "Thailand" ], + [ "296", "Ayanna", "Wiley", "20773", "Morocco" ], + [ "297", "Tashya", "Stanley", "F5J 5R9", "New Caledonia" ], + [ "298", "Margaret", "Barker", "J5A 9N8", "Marshall Islands" ], + [ "299", "Xandra", "English", "92299", "Korea, Republic of" ], + [ "300", "Jane", "Brock", "86140", "Yemen" ], + [ "301", "Lunea", "Garrett", "96730", "New Caledonia" ], + [ "302", "Slade", "Everett", "16105", "Malawi" ], + [ "303", "Scott", "Booker", "G8V 2R4", "Macedonia" ], + [ "304", "Candice", "Decker", "E5R 2D4", "China" ], + [ "305", "Armando", "Bridges", "87959", "Falkland Islands (Malvinas)" ], + [ "306", "Clayton", "Whitley", "Q6O 4M7", "British Indian Ocean Territory" ], + [ "307", "Driscoll", "Duncan", "M2J 9V5", "Argentina" ], + [ "308", "Devin", "Stafford", "L8F 2V7", "Svalbard and Jan Mayen" ], + [ "309", "Bell", "York", "E5B 7X5", "Lebanon" ], + [ "310", "Haley", "Becker", "19759", "Bhutan" ], + [ "311", "Chava", "Santiago", "04396", "Israel" ], + [ "312", "David", "Mccall", "62087", "Norfolk Island" ], + [ "313", "Clinton", "Jacobson", "06168", "Guam" ], + [ "314", "Melvin", "Kaufman", "C4E 9N6", "Gambia" ], + [ "315", "Dai", "Shepherd", "37490", "Saudi Arabia" ], + [ "316", "Zahir", "Chase", "44340", "Turkey" ], + [ "317", "Leilani", "Parrish", "62576", "Cocos (Keeling) Islands" ], + [ "318", "Oleg", "Wilkins", "Z7S 8Z4", "Latvia" ], + [ "319", "Pearl", "Pena", "82526", "Saudi Arabia" ], + [ "320", "Kelly", "Moody", "W7U 5Y3", "Burundi" ], + [ "321", "Marcia", "Kennedy", "85952", "Panama" ], + [ "322", "Cailin", "Burnett", "M2Z 3L5", "Guyana" ], + [ "323", "Ciara", "Small", "X6C 6M6", "Tanzania, United Republic of" ], + [ "324", "Lillian", "Massey", "Z8A 5U5", "Algeria" ], + [ "325", "Garrett", "Elliott", "R5P 6T0", "Canada" ], + [ "326", "Inga", "Daniels", "40156", "Cocos (Keeling) Islands" ], + [ "327", "Barry", "Pena", "03593", "Tonga" ], + [ "328", "Penelope", "Mcintyre", "29293", "Burkina Faso" ], + [ "329", "Dante", "Kirk", "74038", "Lesotho" ], + [ "330", "Owen", "Cole", "17968", "Rwanda" ], + [ "331", "Brittany", "Edwards", "24507", "Paraguay" ], + [ "332", "Zeph", "Bentley", "12000", "Guam" ], + [ "333", "Ruth", "Palmer", "E8V 9A5", "Ghana" ], + [ "334", "Driscoll", "Ellis", "X1X 2N5", "Angola" ], + [ "335", "Mohammad", "Guerra", "Y9N 3Y5", "Mongolia" ], + [ "336", "Clio", "Baldwin", "67557", "Morocco" ], + [ "337", "Virginia", "Duncan", "J8D 4T2", "Haiti" ], + [ "338", "Dieter", "Sanchez", "H7E 2H4", "Romania" ], + [ "339", "Quinn", "Hurst", "K4E 2X6", "Reunion" ], + [ "340", "Coby", "Kelly", "S1H 8N0", "Equatorial Guinea" ], + [ "341", "Raja", "Solis", "S5G 9T5", "Grenada" ], + [ "342", "Jordan", "Riddle", "J7M 5X3", "Svalbard and Jan Mayen" ], + [ "343", "Dora", "Knox", "25054", "Libyan Arab Jamahiriya" ], + [ "344", "Brendan", "Reilly", "U9U 3F7", "Armenia" ], + [ "345", "Melyssa", "Reyes", "11285", "Viet Nam" ], + [ "346", "Knox", "Rivera", "N8Z 7J0", "Nepal" ], + [ "347", "Quynn", "Irwin", "26524", "Chile" ], + [ "348", "Colin", "Coleman", "22833", "United Arab Emirates" ], + [ "349", "Sybil", "Delgado", "99947", "Belize" ], + [ "350", "Macaulay", "Salinas", "48521", "Heard Island and Mcdonald Islands" ], + [ "351", "Garrison", "Hogan", "68950", "India" ], + [ "352", "Ronan", "Guerra", "55445", "Angola" ], + [ "353", "Regina", "Andrews", "H3E 3T0", "Central African Republic" ], + [ "354", "Colorado", "Joyce", "V6X 5K8", "Anguilla" ], + [ "355", "Basia", "Banks", "85049", "Grenada" ], + [ "356", "Adena", "Berg", "04135", "New Caledonia" ], + [ "357", "Wade", "Richardson", "C8M 9J3", "Dominican Republic" ], + [ "358", "Cody", "Montoya", "22018", "Solomon Islands" ], + [ "359", "Faith", "Barnett", "61475", "China" ], + [ "360", "Cody", "Witt", "C8I 2Q8", "Congo" ], + [ "361", "Brenden", "Carlson", "74007", "Marshall Islands" ], + [ "362", "Gil", "Brooks", "U4S 5N1", "Saint Vincent and The Grenadines" ], + [ "363", "Kirestin", "Watts", "H8I 1D5", "Myanmar" ], + [ "364", "Amelia", "Gilliam", "11461", "Chile" ], + [ "365", "Noelani", "Rhodes", "83320", "Cuba" ], + [ "366", "Len", "Trevino", "W9F 2U5", "Armenia" ], + [ "367", "Galvin", "Middleton", "86707", "Thailand" ], + [ "368", "Germaine", "Bridges", "90283", "Japan" ], + [ "369", "Rose", "Hines", "W7L 7Q6", "Congo" ], + [ "370", "Hop", "Mueller", "I3E 2X8", "Angola" ], + [ "371", "Iliana", "Williamson", "56758", "Lebanon" ], + [ "372", "Raja", "Price", "49603", "Armenia" ], + [ "373", "Jeanette", "Hatfield", "E3K 5N5", "India" ], + [ "374", "Brittany", "Christensen", "04750", "Uruguay" ], + [ "375", "Inga", "Prince", "D4X 6J5", "Switzerland" ], + [ "376", "Cherokee", "Ballard", "U1O 1M0", "Rwanda" ], + [ "377", "Deirdre", "Watson", "46983", "Sri Lanka" ], + [ "378", "Amanda", "Parrish", "99838", "Hong Kong" ], + [ "379", "Leo", "Shannon", "L3N 3J0", "Brunei Darussalam" ], + [ "380", "Kimberly", "Clemons", "88734", "South Africa" ], + [ "381", "Seth", "Langley", "D6A 1Q9", "Guyana" ], + [ "382", "Carol", "Blankenship", "X5N 2A7", "Angola" ], + [ "383", "Dora", "Flores", "F8F 1O5", "Poland" ], + [ "384", "Chava", "Dickson", "P8B 6W6", "Comoros" ], + [ "385", "Trevor", "Mcdowell", "31382", "Solomon Islands" ], + [ "386", "Alec", "Valentine", "P2R 4K7", "Greenland" ], + [ "387", "Philip", "Jenkins", "Q7X 5U5", "Aruba" ], + [ "388", "Kim", "Bowen", "69873", "Saint Kitts and Nevis" ], + [ "389", "Allegra", "Oconnor", "X3Y 1X3", "Holy See (Vatican City State)" ], + [ "390", "Daria", "Briggs", "A7Z 7P4", "Serbia and Montenegro" ], + [ "391", "Amelia", "Wiley", "D4S 1G5", "Montserrat" ], + [ "392", "Erica", "Aguirre", "H5L 2O3", "Andorra" ], + [ "393", "Kibo", "Sawyer", "30638", "Guyana" ], + [ "394", "Jackson", "Meyers", "P4N 9D6", "Bangladesh" ], + [ "395", "Kirk", "Baxter", "F3M 7S6", "Estonia" ], + [ "396", "Sybil", "Christian", "B3Q 2X0", "South Georgia and The South Sandwich Islands" ], + [ "397", "Ina", "Mercer", "N4S 1K8", "Korea" ], + [ "398", "Kiara", "Whitehead", "86023", "Nicaragua" ], + [ "399", "Vielka", "Hays", "29845", "Malta" ], + [ "400", "Stacey", "Carlson", "53218", "Cook Islands" ], + [ "401", "Selma", "Lloyd", "78256", "Turkey" ], + [ "402", "Rhoda", "Mcintosh", "G8X 1C8", "Guatemala" ], + [ "403", "Teagan", "Ochoa", "99752", "Barbados" ], + [ "404", "Rebecca", "Carver", "82661", "Saint Kitts and Nevis" ], + [ "405", "Yael", "Woodward", "66095", "Niger" ], + [ "406", "Calvin", "Huffman", "82172", "Somalia" ], + [ "407", "Sopoline", "Walters", "K5L 3I7", "Spain" ], + [ "408", "Hollee", "Powell", "05572", "Samoa" ], + [ "409", "Fiona", "Frank", "74456", "Timor-leste" ], + [ "410", "Alana", "Hubbard", "76011", "Lithuania" ], + [ "411", "Lillian", "Garcia", "J5Z 2O5", "Sierra Leone" ], + [ "412", "Tad", "Mcleod", "B6A 8Z4", "Australia" ], + [ "413", "Hadassah", "Hall", "47417", "China" ], + [ "414", "Regan", "Summers", "X4L 4I6", "Honduras" ], + [ "415", "Herrod", "Erickson", "R8G 3V0", "Israel" ], + [ "416", "Autumn", "Rojas", "31205", "Cocos (Keeling) Islands" ], + [ "417", "Castor", "Mooney", "92737", "Grenada" ], + [ "418", "Wesley", "Holman", "57125", "Greenland" ], + [ "419", "Kitra", "Wooten", "Q6X 4Y0", "Mongolia" ], + [ "420", "Buckminster", "Rice", "U8B 7B8", "Tokelau" ], + [ "421", "Xavier", "Hardin", "18280", "Iran, Islamic Republic of" ], + [ "422", "Sopoline", "Fleming", "78437", "Singapore" ], + [ "423", "Sydney", "Salinas", "23801", "Cook Islands" ], + [ "424", "Bethany", "Rosales", "89650", "United States" ], + [ "425", "Deirdre", "Hensley", "F3X 1B7", "Micronesia" ], + [ "426", "Bernard", "Vargas", "S4D 9T0", "Uzbekistan" ], + [ "427", "Merrill", "Compton", "17713", "Suriname" ], + [ "428", "Carly", "Baird", "D3H 5G3", "United States Minor Outlying Islands" ], + [ "429", "Grace", "Phelps", "64695", "Nauru" ], + [ "430", "Kareem", "Stone", "65572", "Netherlands" ], + [ "431", "Susan", "Newton", "04627", "Anguilla" ], + [ "432", "Laura", "Miranda", "E1G 2R7", "Finland" ], + [ "433", "Madaline", "Pugh", "J9A 9M5", "Senegal" ], + [ "434", "Sophia", "Mendez", "33789", "Timor-leste" ], + [ "435", "Roary", "Greene", "61774", "Canada" ], + [ "436", "Amos", "Gilliam", "94933", "Sri Lanka" ], + [ "437", "Ivory", "Joyner", "15379", "San Marino" ], + [ "438", "Jorden", "Robbins", "43400", "Russian Federation" ], + [ "439", "Merritt", "Holcomb", "R1I 3C7", "Brazil" ], + [ "440", "Iliana", "Johnston", "U9W 8N2", "Trinidad and Tobago" ], + [ "441", "Ivana", "Patterson", "G5O 6A5", "Georgia" ], + [ "442", "Sydney", "Mccullough", "W9M 2H5", "American Samoa" ], + [ "443", "Alvin", "Fulton", "X8A 8R5", "Antigua and Barbuda" ], + [ "444", "Alfreda", "Lopez", "42499", "Montserrat" ], + [ "445", "Ethan", "Bird", "W9A 8M1", "British Indian Ocean Territory" ], + [ "446", "Zeus", "Logan", "01682", "San Marino" ], + [ "447", "Nehru", "Andrews", "W8J 3C8", "Dominican Republic" ], + [ "448", "Donna", "Booth", "64754", "Nepal" ], + [ "449", "Cruz", "Bruce", "17429", "Burundi" ], + [ "450", "Ronan", "Saunders", "69957", "South Africa" ], + [ "451", "Jordan", "Barnes", "D8K 9L8", "Dominica" ], + [ "452", "Carly", "Love", "D8Z 3P4", "Mauritania" ], + [ "453", "Mari", "George", "60260", "Japan" ], + [ "454", "Karly", "Hodges", "15790", "South Georgia and The South Sandwich Islands" ], + [ "455", "Rana", "Logan", "M1R 6Y6", "Bosnia and Herzegovina" ], + [ "456", "Theodore", "Sims", "C7A 8T2", "Barbados" ], + [ "457", "Quin", "Thompson", "26884", "Bouvet Island" ], + [ "458", "Kimberley", "Sloan", "S5T 8E3", "Costa Rica" ], + [ "459", "Upton", "Valenzuela", "Z6J 6Q1", "Macao" ], + [ "460", "Clinton", "Williams", "Z3O 7C4", "Germany" ], + [ "461", "Samson", "Mathis", "G1T 1V9", "Senegal" ], + [ "462", "Michelle", "Frost", "87113", "Serbia and Montenegro" ], + [ "463", "Tyrone", "Coffey", "80705", "Albania" ], + [ "464", "Alea", "Delaney", "E4S 4K4", "Guyana" ], + [ "465", "Dominique", "Schwartz", "81368", "Falkland Islands (Malvinas)" ], + [ "466", "Benedict", "Norton", "D1C 9C8", "Cyprus" ], + [ "467", "Vaughan", "Stein", "R7K 1L8", "Egypt" ], + [ "468", "Charles", "Foley", "20434", "Anguilla" ], + [ "469", "Arden", "Ramos", "54065", "Gibraltar" ], + [ "470", "Dillon", "Patel", "L6H 1H6", "Liberia" ], + [ "471", "Gretchen", "Davenport", "57188", "Equatorial Guinea" ], + [ "472", "Ivy", "Randall", "52617", "Costa Rica" ], + [ "473", "Brett", "Baird", "45791", "Hungary" ], + [ "474", "Wyoming", "Sparks", "11266", "Luxembourg" ], + [ "475", "Rashad", "Roy", "47012", "Guam" ], + [ "476", "Sopoline", "Le", "M1G 2P8", "United Arab Emirates" ], + [ "477", "Ursa", "Haynes", "53774", "British Indian Ocean Territory" ], + [ "478", "Maia", "Vincent", "26773", "New Caledonia" ], + [ "479", "Salvador", "Pace", "S9E 2C4", "Egypt" ], + [ "480", "Bethany", "Wilcox", "F2H 7N0", "Uzbekistan" ], + [ "481", "Sara", "Brooks", "08176", "Holy See (Vatican City State)" ], + [ "482", "Lillith", "Sampson", "75576", "British Indian Ocean Territory" ], + [ "483", "Brynne", "Browning", "N4K 7P6", "Peru" ], + [ "484", "Beck", "Tran", "06815", "Cambodia" ], + [ "485", "Peter", "Hurley", "05770", "Rwanda" ], + [ "486", "Buffy", "Sharpe", "H8F 8G6", "Georgia" ], + [ "487", "Harrison", "Cross", "Y1A 1R8", "United Kingdom" ], + [ "488", "Ursa", "Wolf", "J8C 9Q8", "French Polynesia" ], + [ "489", "Nayda", "Vasquez", "05523", "Taiwan, Province of China" ], + [ "490", "Gretchen", "Walters", "28628", "Seychelles" ], + [ "491", "Adrian", "Hickman", "17956", "El Salvador" ], + [ "492", "Laura", "Moon", "32103", "Myanmar" ], + [ "493", "Kellie", "Barnett", "L5Z 2U8", "Saint Helena" ], + [ "494", "Illana", "Stanton", "Z5D 2G0", "Australia" ], + [ "495", "Jescie", "Santiago", "D9L 4B5", "Cambodia" ], + [ "496", "Laura", "Hopkins", "X6V 9S5", "Netherlands Antilles" ], + [ "497", "Vielka", "Harding", "U6A 9T2", "Cambodia" ], + [ "498", "Walter", "Gentry", "L3X 9Q9", "Slovenia" ], + [ "499", "Sara", "Atkinson", "67146", "Guinea" ], + [ "500", "Yolanda", "Chambers", "Q8D 3W0", "Zimbabwe" ], + [ "501", "Josiah", "Villarreal", "I1V 6Y7", "Burkina Faso" ], + [ "502", "Hayfa", "Bowman", "77148", "Saudi Arabia" ], + [ "503", "Colette", "Conley", "41232", "Estonia" ], + [ "504", "Lana", "Doyle", "32962", "Cuba" ], + [ "505", "Keegan", "Goodwin", "M2P 1X3", "Cocos (Keeling) Islands" ], + [ "506", "Nina", "Cross", "49580", "Germany" ], + [ "507", "Xenos", "Cervantes", "K6X 7W8", "Mauritius" ], + [ "508", "Jared", "Hester", "30156", "Uzbekistan" ], + [ "509", "Damon", "Curry", "U2J 2D8", "Pitcairn" ], + [ "510", "Amery", "Savage", "O1S 2Z4", "Turkmenistan" ], + [ "511", "Brian", "Wilkinson", "J6O 4T0", "Luxembourg" ], + [ "512", "Ivory", "Mckinney", "L3E 8M2", "Lithuania" ], + [ "513", "Eric", "Dalton", "Y1L 6F4", "Ethiopia" ], + [ "514", "Brandon", "Callahan", "K6Q 9B4", "Haiti" ], + [ "515", "Phillip", "Mclean", "18836", "Ethiopia" ], + [ "516", "Carly", "Greer", "16811", "Mayotte" ], + [ "517", "Stone", "Ware", "58795", "Moldova" ], + [ "518", "Xena", "Hayden", "97158", "Chad" ], + [ "519", "Catherine", "Leonard", "77868", "Azerbaijan" ], + [ "520", "Bernard", "Horton", "04270", "Yemen" ], + [ "521", "Olga", "Richmond", "89169", "Lebanon" ], + [ "522", "Iris", "Cummings", "78836", "Falkland Islands (Malvinas)" ], + [ "523", "Beau", "Mccall", "78638", "Monaco" ], + [ "524", "Michael", "Humphrey", "Q1A 2W9", "Tokelau" ], + [ "525", "Oren", "Stevens", "F4V 9G7", "Heard Island and Mcdonald Islands" ], + [ "526", "Ima", "Shelton", "19295", "Mozambique" ], + [ "527", "Merritt", "Morrison", "K6W 5R0", "Georgia" ], + [ "528", "Vera", "Cherry", "54993", "Angola" ], + [ "529", "Grant", "Turner", "B4V 2J0", "Saint Helena" ], + [ "530", "Odette", "Snyder", "N9L 2V8", "Chad" ], + [ "531", "Uma", "Stewart", "E9A 6X9", "Bhutan" ], + [ "532", "Kylee", "Best", "11393", "Malaysia" ], + [ "533", "Nicholas", "Mercado", "85179", "Switzerland" ], + [ "534", "Nathaniel", "Stuart", "M1Q 6Z6", "Mongolia" ], + [ "535", "Ruth", "Conrad", "T7G 9V6", "Guadeloupe" ], + [ "536", "Deanna", "Dudley", "79721", "Kiribati" ], + [ "537", "David", "Thornton", "C6R 2G3", "Netherlands Antilles" ], + [ "538", "Jane", "Ashley", "48711", "Rwanda" ], + [ "539", "Nero", "Curry", "20590", "Denmark" ], + [ "540", "Kellie", "Poole", "46053", "Martinique" ], + [ "541", "Freya", "Burch", "W5R 8Y5", "Northern Mariana Islands" ], + [ "542", "Maxwell", "Mcbride", "D4W 4M3", "Paraguay" ], + [ "543", "Dawn", "Sargent", "85956", "Gibraltar" ], + [ "544", "Lilah", "Matthews", "J4D 8A9", "Montserrat" ], + [ "545", "Salvador", "Burns", "28067", "Bhutan" ], + [ "546", "Ezekiel", "Ayala", "67153", "Wallis and Futuna" ], + [ "547", "Evan", "Barker", "83026", "Puerto Rico" ], + [ "548", "Jemima", "Case", "U3S 7N6", "Georgia" ], + [ "549", "Belle", "Mcconnell", "H4S 9F8", "Angola" ], + [ "550", "Doris", "Mays", "57387", "Tonga" ], + [ "551", "Carson", "Buchanan", "20457", "Guatemala" ], + [ "552", "Calista", "Lamb", "26851", "Gibraltar" ], + [ "553", "Remedios", "Haley", "A9K 5M1", "Tokelau" ], + [ "554", "Odette", "Mccarty", "Y8B 3V4", "Marshall Islands" ], + [ "555", "Libby", "Pugh", "93261", "Netherlands" ], + [ "556", "Bo", "Maldonado", "C1H 1K7", "Oman" ], + [ "557", "Cameron", "Beasley", "41821", "Northern Mariana Islands" ], + [ "558", "Chadwick", "Crosby", "62855", "New Caledonia" ], + [ "559", "Steven", "Barrett", "92102", "Pakistan" ], + [ "560", "Jonas", "Valdez", "N3V 4R9", "Bulgaria" ], + [ "561", "Harlan", "Larsen", "Z8F 6A0", "Cayman Islands" ], + [ "562", "Iola", "Joyner", "D1J 4C3", "Italy" ], + [ "563", "Abra", "Medina", "Q9O 5J2", "Cambodia" ], + [ "564", "Solomon", "Davidson", "91317", "Turkmenistan" ], + [ "565", "Alisa", "Kim", "33036", "Austria" ], + [ "566", "Deacon", "Silva", "Z5L 6M0", "Djibouti" ], + [ "567", "Bree", "Landry", "43135", "Czech Republic" ], + [ "568", "Molly", "Leach", "71714", "Botswana" ], + [ "569", "Idona", "Cain", "A2J 1R8", "South Georgia and The South Sandwich Islands" ], + [ "570", "Aileen", "Salinas", "90344", "Uzbekistan" ], + [ "571", "Dominique", "Cooper", "31803", "Sao Tome and Principe" ], + [ "572", "Lunea", "Pollard", "S9R 7B0", "Sweden" ], + [ "573", "Leo", "Combs", "W7E 8T4", "Ukraine" ], + [ "574", "Illiana", "Donovan", "D8K 3R4", "Palau" ], + [ "575", "Orlando", "Vaughan", "Q4I 3E3", "Bosnia and Herzegovina" ], + [ "576", "Yuri", "Blake", "I9W 5U5", "Seychelles" ], + [ "577", "Amanda", "Baldwin", "19752", "Turkmenistan" ], + [ "578", "Hanna", "Emerson", "73316", "Antigua and Barbuda" ], + [ "579", "Xyla", "Atkins", "11151", "Uganda" ], + [ "580", "Nathaniel", "Patterson", "00391", "Portugal" ], + [ "581", "Naida", "Cote", "17484", "Mauritius" ], + [ "582", "Scarlett", "Little", "V8N 8A6", "Sao Tome and Principe" ], + [ "583", "Odessa", "Kerr", "56456", "Sweden" ], + [ "584", "Kamal", "Richardson", "F6S 4I1", "Algeria" ], + [ "585", "Griffith", "Morton", "I5H 2Z0", "Vanuatu" ], + [ "586", "Orli", "Santana", "48213", "Burundi" ], + [ "587", "Courtney", "Cook", "R3O 3A9", "Cape Verde" ], + [ "588", "Jolene", "Wallace", "F6Q 7W8", "Zambia" ], + [ "589", "Bert", "Sharp", "X7T 7Z8", "Paraguay" ], + [ "590", "Ila", "Carver", "E4M 7P4", "Paraguay" ], + [ "591", "Merrill", "Wall", "49416", "Fiji" ], + [ "592", "Hanae", "Espinoza", "Y6D 6K8", "Turkey" ], + [ "593", "Stephanie", "Bond", "Z1Q 3P3", "Algeria" ], + [ "594", "Lionel", "Leonard", "U8O 7G6", "Nauru" ], + [ "595", "Faith", "Ramirez", "75181", "Slovakia" ], + [ "596", "Fritz", "Glass", "62878", "El Salvador" ], + [ "597", "Raya", "Gardner", "L3E 2C7", "India" ], + [ "598", "Brynne", "Price", "W1S 6O9", "Lithuania" ], + [ "599", "Karen", "Gray", "O4X 8F6", "Albania" ], + [ "600", "Perry", "Goodwin", "44266", "Libyan Arab Jamahiriya" ], + [ "601", "Dylan", "Glover", "76573", "Estonia" ], + [ "602", "Melinda", "Holloway", "07861", "Grenada" ], + [ "603", "Rahim", "Robinson", "D7M 1E8", "Madagascar" ], + [ "604", "Ori", "Oconnor", "10386", "Antarctica" ], + [ "605", "Candace", "Preston", "03610", "Denmark" ], + [ "606", "Wing", "Howe", "E6U 3H2", "Burundi" ], + [ "607", "Lucy", "Eaton", "26436", "Guinea" ], + [ "608", "Ignatius", "Blevins", "93597", "Serbia and Montenegro" ], + [ "609", "Nadine", "Franco", "80096", "Tonga" ], + [ "610", "Shoshana", "Walters", "S4F 5O8", "Micronesia" ], + [ "611", "Remedios", "Buckner", "29213", "Antigua and Barbuda" ], + [ "612", "Adam", "Horne", "F8V 1V8", "Oman" ], + [ "613", "Kieran", "Saunders", "I7A 7Y5", "Japan" ], + [ "614", "Isabelle", "Fletcher", "K2K 3K5", "Norway" ], + [ "615", "Ryder", "Ballard", "38518", "Tanzania, United Republic of" ], + [ "616", "Nina", "Guerrero", "61142", "Saint Kitts and Nevis" ], + [ "617", "Sheila", "Poole", "E2H 6I6", "Denmark" ], + [ "618", "Melyssa", "Mcdaniel", "08247", "Netherlands Antilles" ], + [ "619", "Leila", "Vang", "Q5Z 3S1", "United States Minor Outlying Islands" ], + [ "620", "Grady", "Aguilar", "R1I 8I8", "Slovenia" ], + [ "621", "Plato", "Terrell", "23916", "Kuwait" ], + [ "622", "Rama", "Perkins", "56506", "Russian Federation" ], + [ "623", "Boris", "Chaney", "66737", "Antigua and Barbuda" ], + [ "624", "Edward", "Clarke", "30722", "Iraq" ], + [ "625", "Skyler", "Wise", "53248", "Taiwan, Province of China" ], + [ "626", "Uta", "Cox", "85242", "Malawi" ], + [ "627", "Lesley", "Watkins", "26710", "Estonia" ], + [ "628", "Gray", "Harrison", "C5L 9Y7", "Nepal" ], + [ "629", "Joan", "Flores", "J5Q 2B9", "Tajikistan" ], + [ "630", "Reece", "Lott", "85152", "Algeria" ], + [ "631", "Jerome", "Faulkner", "V1K 3N2", "Kiribati" ], + [ "632", "Jackson", "Hudson", "85932", "Botswana" ], + [ "633", "Uma", "Booker", "79755", "Senegal" ], + [ "634", "Katelyn", "Gillespie", "Q8P 4V9", "Eritrea" ], + [ "635", "Clio", "Tillman", "67552", "Liberia" ], + [ "636", "Anjolie", "Nixon", "36615", "Botswana" ], + [ "637", "Nell", "Lee", "T9S 4R3", "French Southern Territories" ], + [ "638", "Anthony", "Aguirre", "85443", "Morocco" ], + [ "639", "Aaron", "Green", "90326", "Faroe Islands" ], + [ "640", "Galvin", "Yang", "A4X 8H6", "Ukraine" ], + [ "641", "Yoshi", "Strickland", "52538", "Brazil" ], + [ "642", "Brenden", "Kirkland", "X7P 8V9", "Turks and Caicos Islands" ], + [ "643", "Bree", "Stone", "U4L 2H2", "Hong Kong" ], + [ "644", "Quin", "Tanner", "U4A 1X4", "Faroe Islands" ], + [ "645", "Camilla", "Heath", "91749", "Andorra" ], + [ "646", "Xaviera", "Bullock", "I4U 7W0", "Libyan Arab Jamahiriya" ], + [ "647", "Kay", "Rowe", "59689", "Iceland" ], + [ "648", "Lance", "Bond", "66558", "Spain" ], + [ "649", "Fredericka", "Langley", "48782", "Cayman Islands" ], + [ "650", "Charles", "Avila", "42037", "Papua New Guinea" ], + [ "651", "Ramona", "Rios", "T5M 3E1", "Argentina" ], + [ "652", "Ezekiel", "Young", "W8X 4S7", "French Polynesia" ], + [ "653", "Celeste", "Dodson", "19140", "Benin" ], + [ "654", "Frances", "Mcintosh", "91246", "Swaziland" ], + [ "655", "Deanna", "Hyde", "J8P 3T5", "Croatia" ], + [ "656", "Dahlia", "Blair", "45364", "Kazakhstan" ], + [ "657", "Jade", "Hayes", "I5Q 3S9", "Malawi" ], + [ "658", "Robin", "Bullock", "G9Q 2P8", "Ireland" ], + [ "659", "Nasim", "Bond", "I2V 8N4", "Macedonia" ], + [ "660", "Axel", "Pickett", "18370", "Saint Vincent and The Grenadines" ], + [ "661", "Pearl", "Lee", "G1R 3R8", "Poland" ], + [ "662", "Garth", "Meyers", "90308", "Georgia" ], + [ "663", "Ivory", "Rios", "S8F 8R5", "Mexico" ], + [ "664", "Jerome", "Lambert", "N1Q 6R8", "Saint Lucia" ], + [ "665", "Meredith", "Clark", "27720", "Cocos (Keeling) Islands" ], + [ "666", "Armando", "Holcomb", "M6D 4X0", "Oman" ], + [ "667", "Rowan", "Page", "00307", "Nauru" ], + [ "668", "Kyla", "Brown", "F4W 4C5", "Holy See (Vatican City State)" ], + [ "669", "Leigh", "Sosa", "28499", "Uruguay" ], + [ "670", "Shafira", "Forbes", "26526", "Honduras" ], + [ "671", "Maxine", "Mueller", "90923", "Kazakhstan" ], + [ "672", "Joy", "Sargent", "K6T 3W5", "Malawi" ], + [ "673", "Lamar", "Roberts", "R5F 9C8", "Poland" ], + [ "674", "Madonna", "Love", "15514", "Cyprus" ], + [ "675", "Uriel", "Ware", "Z6V 5J1", "Singapore" ], + [ "676", "Bevis", "Erickson", "M3X 9M8", "Brunei Darussalam" ], + [ "677", "Grant", "Velasquez", "96942", "Antarctica" ], + [ "678", "Lars", "Bullock", "14772", "Guyana" ], + [ "679", "Maryam", "Jones", "01854", "Togo" ], + [ "680", "Blythe", "Goodwin", "51731", "New Caledonia" ], + [ "681", "Kane", "Wiggins", "55727", "Kiribati" ], + [ "682", "Brian", "Rosales", "25896", "Cape Verde" ], + [ "683", "Blaze", "Leach", "P6J 3E5", "Northern Mariana Islands" ], + [ "684", "Cameron", "Neal", "82248", "Marshall Islands" ], + [ "685", "Lydia", "Cunningham", "Q1V 8P7", "San Marino" ], + [ "686", "Troy", "Cook", "32106", "British Indian Ocean Territory" ], + [ "687", "Alexander", "Valenzuela", "S8Z 6B2", "Guadeloupe" ], + [ "688", "Garth", "Beck", "46344", "Cook Islands" ], + [ "689", "Hillary", "Nunez", "29462", "Sri Lanka" ], + [ "690", "Hunter", "Sawyer", "W9M 6T4", "Saint Lucia" ], + [ "691", "Jaquelyn", "Everett", "T1X 2U2", "Guinea-bissau" ], + [ "692", "Indira", "Ortega", "43047", "Italy" ], + [ "693", "Josiah", "Hinton", "N5F 5Y8", "Andorra" ], + [ "694", "Bruno", "Gay", "E3U 3D9", "Palau" ], + [ "695", "Melissa", "Blackburn", "S4V 1K2", "Virgin Islands, U.S." ], + [ "696", "Zeus", "Dawson", "K5S 6Z6", "Belgium" ], + [ "697", "Castor", "Mcmahon", "H3R 1O8", "Cambodia" ], + [ "698", "Elizabeth", "Beasley", "98178", "Northern Mariana Islands" ], + [ "699", "Jescie", "Lee", "08056", "Eritrea" ], + [ "700", "Dennis", "Chapman", "T4O 1Q2", "Bangladesh" ], + [ "701", "Basia", "Wallace", "U3Y 7C1", "Pitcairn" ], + [ "702", "Dante", "Brewer", "53544", "Bosnia and Herzegovina" ], + [ "703", "Adrienne", "Glenn", "32378", "Austria" ], + [ "704", "Kellie", "Acevedo", "51723", "Italy" ], + [ "705", "Scarlet", "Mclaughlin", "43509", "Kiribati" ], + [ "706", "Lillith", "Mullins", "S6L 4Y6", "Kyrgyzstan" ], + [ "707", "Maxine", "Atkins", "Z5T 5R5", "Denmark" ], + [ "708", "Nicholas", "Rose", "40286", "Macedonia" ], + [ "709", "Zenia", "Pugh", "28682", "Venezuela" ], + [ "710", "Keely", "Turner", "34939", "New Zealand" ], + [ "711", "Maisie", "Walton", "S6M 5C5", "Cameroon" ], + [ "712", "Michelle", "Salinas", "T7A 9N6", "Nicaragua" ], + [ "713", "Reece", "Clements", "73923", "Austria" ], + [ "714", "Eliana", "Fox", "V3Y 5T4", "Denmark" ], + [ "715", "Kennedy", "Mullins", "43213", "Virgin Islands, British" ], + [ "716", "Alea", "Glover", "M6P 3Z5", "Turkmenistan" ], + [ "717", "Scarlett", "Hunt", "41461", "Montserrat" ], + [ "718", "Rooney", "Kane", "T8A 3E2", "Madagascar" ], + [ "719", "Cairo", "Ray", "L6M 1E7", "Canada" ], + [ "720", "Wendy", "Burks", "R8V 8F5", "Virgin Islands, U.S." ], + [ "721", "Christine", "Suarez", "67369", "Georgia" ], + [ "722", "Graiden", "Le", "K4M 9V5", "New Caledonia" ], + [ "723", "Zane", "Nunez", "60548", "Haiti" ], + [ "724", "Ali", "Bell", "U4Y 4C3", "Togo" ], + [ "725", "Marsden", "Leon", "39374", "Venezuela" ], + [ "726", "Holmes", "Kidd", "B6K 7Q9", "Iraq" ], + [ "727", "Cameron", "Gardner", "88627", "Brazil" ], + [ "728", "Ava", "George", "K1Z 7Y2", "Monaco" ], + [ "729", "Chantale", "Holland", "H1B 9L8", "Afghanistan" ], + [ "730", "Alika", "Middleton", "W8X 7O1", "Korea" ], + [ "731", "Cameran", "Zimmerman", "78576", "Benin" ], + [ "732", "Barrett", "Blair", "51161", "Virgin Islands, U.S." ], + [ "733", "Brielle", "Ballard", "59538", "Iceland" ], + [ "734", "Teagan", "Morales", "40107", "Kenya" ], + [ "735", "Lunea", "Cantu", "14690", "Oman" ], + [ "736", "Robin", "Gilmore", "17972", "Nauru" ], + [ "737", "Hall", "Mccarty", "86141", "China" ], + [ "738", "Olga", "Rasmussen", "58309", "Virgin Islands, British" ], + [ "739", "Mark", "Griffin", "51542", "Argentina" ], + [ "740", "Medge", "Carrillo", "23192", "Pitcairn" ], + [ "741", "Susan", "Mosley", "32128", "Turkmenistan" ], + [ "742", "Zelda", "Valdez", "46831", "New Caledonia" ], + [ "743", "Ruth", "Donaldson", "F9I 7G7", "Ukraine" ], + [ "744", "Kirby", "Workman", "36679", "Rwanda" ], + [ "745", "Alexa", "King", "66513", "Liberia" ], + [ "746", "Ronan", "Gross", "K2S 6D0", "Saint Lucia" ], + [ "747", "Kylee", "Dillon", "P7Y 1I5", "Faroe Islands" ], + [ "748", "Brenda", "Weaver", "99365", "Uzbekistan" ], + [ "749", "Aristotle", "Orr", "43451", "Canada" ], + [ "750", "Jaquelyn", "Tyler", "B9Q 7P5", "Brunei Darussalam" ], + [ "751", "Madeline", "Stewart", "D4D 2J4", "Zimbabwe" ], + [ "752", "Lacota", "Glass", "89124", "Israel" ], + [ "753", "Adrian", "Ashley", "N8M 4L1", "Sri Lanka" ], + [ "754", "Ignatius", "Waller", "12053", "Thailand" ], + [ "755", "Raven", "Stevens", "88768", "Estonia" ], + [ "756", "Carly", "Camacho", "27075", "Vanuatu" ], + [ "757", "Lee", "Calderon", "19501", "Pitcairn" ], + [ "758", "Amos", "Briggs", "I6A 3L8", "Saint Kitts and Nevis" ], + [ "759", "Cheryl", "Valencia", "90517", "Denmark" ], + [ "760", "Kenyon", "Franco", "B2S 2E2", "Western Sahara" ], + [ "761", "Damian", "Acosta", "A2S 6D0", "Bahamas" ], + [ "762", "Brenda", "Zamora", "T9E 7L3", "Finland" ], + [ "763", "Connor", "Atkinson", "03975", "Sierra Leone" ], + [ "764", "Kaseem", "Waters", "A2K 2X0", "China" ], + [ "765", "Zephania", "Whitfield", "A4Z 9P7", "Eritrea" ], + [ "766", "Emmanuel", "Ballard", "G1M 6Y2", "Finland" ], + [ "767", "Amos", "Walters", "43184", "Oman" ], + [ "768", "Urielle", "Browning", "19959", "Panama" ], + [ "769", "TaShya", "Summers", "B9V 3Y3", "Micronesia" ], + [ "770", "Jermaine", "Mcgee", "X8A 4E1", "Cape Verde" ], + [ "771", "Chaney", "Berry", "G2H 2C8", "Uganda" ], + [ "772", "Jaime", "May", "49723", "Eritrea" ], + [ "773", "Olga", "Cohen", "13403", "Macao" ], + [ "774", "Jacob", "Vaughn", "U7G 1V5", "Greece" ], + [ "775", "Kelly", "Mcdonald", "Z3B 5G7", "Kiribati" ], + [ "776", "Emi", "Gilbert", "W1L 2M4", "Nicaragua" ], + [ "777", "Francis", "Nunez", "K4U 6M5", "Lithuania" ], + [ "778", "Noel", "Nelson", "Z5T 1Y0", "Nauru" ], + [ "779", "Ora", "Ellison", "Y5I 4R8", "Burundi" ], + [ "780", "Kirby", "Glass", "J5X 2E3", "Argentina" ], + [ "781", "Hayley", "Tate", "V1T 6B6", "Greece" ], + [ "782", "Mohammad", "Leblanc", "E3S 5R3", "Oman" ], + [ "783", "Lionel", "Todd", "A1Z 9E1", "Macedonia" ], + [ "784", "Courtney", "Mckay", "D4I 8Z3", "Fiji" ], + [ "785", "Reagan", "West", "84159", "Equatorial Guinea" ], + [ "786", "Noel", "Strickland", "Q7K 6S3", "Mozambique" ], + [ "787", "Lara", "Porter", "49872", "Nigeria" ], + [ "788", "Kyra", "Haley", "I9E 2K3", "Dominican Republic" ], + [ "789", "Wynter", "Beasley", "66330", "Heard Island and Mcdonald Islands" ], + [ "790", "Vladimir", "Briggs", "99538", "Burkina Faso" ], + [ "791", "Rafael", "Campbell", "V8L 2S6", "Algeria" ], + [ "792", "Buffy", "Wilder", "N3U 2X0", "Bahrain" ], + [ "793", "Nyssa", "Dawson", "38434", "Spain" ], + [ "794", "Sylvia", "Swanson", "39714", "Azerbaijan" ], + [ "795", "Jolie", "Diaz", "A1J 5I1", "Cuba" ], + [ "796", "Rosalyn", "Mcdaniel", "F3T 6E2", "Benin" ], + [ "797", "Nelle", "Prince", "K1M 4U6", "Maldives" ], + [ "798", "Luke", "Knight", "05930", "Seychelles" ], + [ "799", "Macaulay", "Conway", "79707", "American Samoa" ], + [ "800", "Freya", "Webb", "U2H 2D7", "Ireland" ], + [ "801", "Clinton", "Meyers", "S9I 7N2", "Malta" ], + [ "802", "Rudyard", "Chandler", "40347", "Bahrain" ], + [ "803", "Courtney", "Hoover", "12325", "French Polynesia" ], + [ "804", "Melissa", "Davenport", "K7P 1S8", "Canada" ], + [ "805", "Noelle", "Nieves", "87427", "Martinique" ], + [ "806", "Myles", "Hart", "V6T 1W0", "Niue" ], + [ "807", "Jasper", "Campos", "78143", "Faroe Islands" ], + [ "808", "Ariana", "Valentine", "J4X 2D4", "Ecuador" ], + [ "809", "Vanna", "Fletcher", "M4Z 1F9", "Faroe Islands" ], + [ "810", "Elijah", "Harper", "Y1B 7E4", "New Zealand" ], + [ "811", "Leilani", "Nunez", "K9W 4F0", "United Arab Emirates" ], + [ "812", "Maia", "Huber", "V4L 8M6", "United Kingdom" ], + [ "813", "Richard", "Riddle", "U8C 8Q2", "Niue" ], + [ "814", "Harper", "Blanchard", "10904", "Cameroon" ], + [ "815", "Aurelia", "Trujillo", "01646", "Dominican Republic" ], + [ "816", "Anthony", "Owen", "J2I 2B4", "Palestinian Territory, Occupied" ], + [ "817", "Kelsie", "Roy", "M3J 6K3", "Maldives" ], + [ "818", "James", "Pearson", "94810", "Mexico" ], + [ "819", "Igor", "Marshall", "Y8M 2D6", "Palau" ], + [ "820", "Aquila", "Willis", "20354", "Samoa" ], + [ "821", "Randall", "Sheppard", "73577", "Sierra Leone" ], + [ "822", "Gray", "Myers", "53651", "Gibraltar" ], + [ "823", "Dana", "Camacho", "89571", "Reunion" ], + [ "824", "Berk", "Hopper", "17794", "Cook Islands" ], + [ "825", "Shannon", "Barry", "70536", "Bouvet Island" ], + [ "826", "Dahlia", "Herman", "F8L 1Q3", "Lesotho" ], + [ "827", "Gillian", "Hayes", "O2C 7X8", "Tajikistan" ], + [ "828", "Leo", "Bolton", "P6V 6E1", "Dominica" ], + [ "829", "Vivien", "Best", "E5E 6N8", "Cuba" ], + [ "830", "Clayton", "Bradley", "E7R 3M5", "Zimbabwe" ], + [ "831", "Lesley", "Collins", "16592", "Mali" ], + [ "832", "Holly", "Hensley", "49080", "Tunisia" ], + [ "833", "Larissa", "Velazquez", "41068", "Haiti" ], + [ "834", "Delilah", "Mejia", "A5I 9Q9", "Croatia" ], + [ "835", "Drew", "Roberson", "U7E 3R1", "Somalia" ], + [ "836", "Jenette", "Patel", "64084", "Denmark" ], + [ "837", "Gillian", "Cleveland", "05659", "Syrian Arab Republic" ], + [ "838", "Noelle", "Lara", "U1N 6V6", "Sri Lanka" ], + [ "839", "Celeste", "Rollins", "26590", "Mayotte" ], + [ "840", "Elvis", "Fletcher", "M8V 6J4", "Bahamas" ], + [ "841", "Caesar", "Hays", "E3D 3T7", "Malta" ], + [ "842", "Rama", "Weber", "25880", "Malta" ], + [ "843", "Lael", "Page", "57135", "Anguilla" ], + [ "844", "Omar", "Hammond", "90213", "Belarus" ], + [ "845", "Simone", "Mcintosh", "L5P 1S0", "Bhutan" ], + [ "846", "Gay", "Harper", "56404", "Virgin Islands, U.S." ], + [ "847", "Joel", "Holman", "C1F 1C4", "Saint Lucia" ], + [ "848", "Clayton", "Pennington", "57003", "Kazakhstan" ], + [ "849", "Susan", "Mckee", "I5U 8F2", "Taiwan, Province of China" ], + [ "850", "Jenna", "Stein", "P2K 6L4", "Reunion" ], + [ "851", "Madonna", "Joyner", "Q4Q 4K6", "Guadeloupe" ], + [ "852", "Deirdre", "Ingram", "N7U 3N9", "Monaco" ], + [ "853", "Juliet", "Hodges", "U2Q 2T0", "Uzbekistan" ], + [ "854", "Naomi", "Rice", "O6T 2Z1", "Nicaragua" ], + [ "855", "Leila", "Alvarado", "Z2V 7L3", "Suriname" ], + [ "856", "George", "Leon", "L6M 1V2", "Norway" ], + [ "857", "Rama", "Cruz", "Y2S 7K6", "Kenya" ], + [ "858", "Clarke", "Mckinney", "34622", "Viet Nam" ], + [ "859", "Savannah", "Bailey", "L3O 1U6", "Solomon Islands" ], + [ "860", "Maxwell", "Gibson", "R9K 9Q1", "Virgin Islands, British" ], + [ "861", "Devin", "Humphrey", "74821", "Costa Rica" ], + [ "862", "Kadeem", "Larsen", "43178", "Luxembourg" ], + [ "863", "Elvis", "Todd", "O3O 3G9", "Azerbaijan" ], + [ "864", "Levi", "Montoya", "G1Y 1N8", "Venezuela" ], + [ "865", "Risa", "Barnes", "86118", "Benin" ], + [ "866", "Dillon", "Riggs", "O3Y 8V2", "Greenland" ], + [ "867", "Stewart", "Marshall", "V8G 8S2", "Mexico" ], + [ "868", "Camden", "Goff", "N3W 2L0", "Bahrain" ], + [ "869", "Sheila", "Meadows", "T6K 7M2", "Yemen" ], + [ "870", "Hop", "Berger", "Q8B 9R7", "Germany" ], + [ "871", "Charissa", "Wilkerson", "08090", "Burundi" ], + [ "872", "Raphael", "Carey", "03667", "United Kingdom" ], + [ "873", "Micah", "Hood", "T9N 4T5", "Georgia" ], + [ "874", "Cathleen", "Mccall", "N6H 6N3", "Tanzania, United Republic of" ], + [ "875", "Lisandra", "Poole", "S7O 1J1", "Greece" ], + [ "876", "Stone", "Blackwell", "90654", "Serbia and Montenegro" ], + [ "877", "Serena", "Mann", "32305", "Trinidad and Tobago" ], + [ "878", "Scarlet", "Turner", "D7Y 8N4", "Oman" ], + [ "879", "Zenaida", "Carrillo", "60361", "Montserrat" ], + [ "880", "Jaime", "Dalton", "F4E 6R5", "Iraq" ], + [ "881", "Wesley", "Drake", "D8J 9U2", "Bulgaria" ], + [ "882", "Armand", "Chandler", "X8Z 9E6", "Saint Kitts and Nevis" ], + [ "883", "Inez", "Dillard", "59975", "Eritrea" ], + [ "884", "Roanna", "Floyd", "65958", "Bolivia" ], + [ "885", "Timon", "Dalton", "O3Q 5B5", "Colombia" ], + [ "886", "Ifeoma", "Lamb", "J9A 9X0", "Papua New Guinea" ], + [ "887", "Brody", "Cash", "75525", "Kazakhstan" ], + [ "888", "Dawn", "Wise", "G7X 5J3", "Samoa" ], + [ "889", "Chaney", "Bartlett", "11112", "Ecuador" ], + [ "890", "Galvin", "Merritt", "59635", "Bahrain" ], + [ "891", "Cynthia", "Nash", "U5P 1H4", "Switzerland" ], + [ "892", "Tara", "Austin", "Q6X 8U0", "Burundi" ], + [ "893", "Roanna", "Petty", "28524", "Northern Mariana Islands" ], + [ "894", "Palmer", "Mcdowell", "78234", "United States Minor Outlying Islands" ], + [ "895", "Sade", "Patton", "28984", "Czech Republic" ], + [ "896", "Yoko", "Compton", "62165", "Saint Kitts and Nevis" ], + [ "897", "Regan", "Mccarthy", "C5D 6G0", "Lebanon" ], + [ "898", "Norman", "Nixon", "E4C 4G0", "Virgin Islands, U.S." ], + [ "899", "Jocelyn", "Baldwin", "X9R 2B3", "Macedonia" ], + [ "900", "Jaquelyn", "Berg", "N6X 6E1", "Saint Lucia" ], + [ "901", "Zane", "Nelson", "G9P 4J8", "Macao" ], + [ "902", "Judith", "Elliott", "R4I 4O3", "Iraq" ], + [ "903", "Maia", "Ellis", "S9V 6P0", "Bahrain" ], + [ "904", "Mechelle", "Stevens", "43406", "Bouvet Island" ], + [ "905", "Sylvester", "Duran", "K5D 8W5", "Costa Rica" ], + [ "906", "Unity", "Cooke", "64362", "Ecuador" ], + [ "907", "Karly", "Velazquez", "43286", "Guam" ], + [ "908", "Damian", "Yates", "84910", "Thailand" ], + [ "909", "Linus", "Gross", "31808", "Israel" ], + [ "910", "Cooper", "Franco", "36700", "Yemen" ], + [ "911", "Gail", "Jones", "09157", "Turkey" ], + [ "912", "Hayfa", "Bennett", "59422", "France" ], + [ "913", "Hermione", "Barber", "I6W 8Z5", "Mozambique" ], + [ "914", "Hedy", "Stevens", "35535", "Cuba" ], + [ "915", "Galvin", "Frederick", "J2W 9A3", "Virgin Islands, British" ], + [ "916", "Lamar", "Rush", "P4O 3H4", "Austria" ], + [ "917", "Brenda", "Walter", "K8Q 9H9", "Tajikistan" ], + [ "918", "Ria", "Guy", "12801", "Gibraltar" ], + [ "919", "Bruno", "Lynch", "I6U 7D0", "Greenland" ], + [ "920", "Kirk", "Pearson", "66242", "Falkland Islands (Malvinas)" ], + [ "921", "Owen", "Sosa", "61483", "Martinique" ], + [ "922", "Rajah", "Mccarty", "G9K 6L2", "Faroe Islands" ], + [ "923", "Erasmus", "Malone", "D6H 7H5", "Sierra Leone" ], + [ "924", "Raja", "Hale", "85590", "Guadeloupe" ], + [ "925", "Logan", "Christensen", "Y6L 8Z0", "Guatemala" ], + [ "926", "Kirestin", "Griffith", "47900", "Micronesia" ], + [ "927", "Kato", "Reeves", "93779", "Uruguay" ], + [ "928", "Jonah", "Suarez", "13708", "Spain" ], + [ "929", "Adam", "Lynn", "E1P 1L3", "Indonesia" ], + [ "930", "Quinn", "Mckinney", "99683", "Faroe Islands" ], + [ "931", "Whilemina", "Macias", "32145", "Iceland" ], + [ "932", "Gillian", "Osborne", "L3L 6G0", "Italy" ], + [ "933", "Venus", "Zamora", "28318", "Comoros" ], + [ "934", "Allegra", "Eaton", "P5X 9S0", "Antarctica" ], + [ "935", "Driscoll", "Preston", "R3L 9R0", "Niue" ], + [ "936", "Joel", "Spencer", "12006", "Monaco" ], + [ "937", "Lucius", "Sharp", "B8V 6U7", "Dominica" ], + [ "938", "Curran", "Robinson", "82216", "Romania" ], + [ "939", "Kerry", "Espinoza", "N4B 7Q1", "Guatemala" ], + [ "940", "Isaac", "Kline", "85674", "Costa Rica" ], + [ "941", "Neil", "Harrison", "I5A 2S2", "Greenland" ], + [ "942", "Ezra", "Rodriguez", "D6P 5Q3", "Angola" ], + [ "943", "Galvin", "Jefferson", "D6H 7G0", "Macedonia" ], + [ "944", "Joseph", "Hahn", "Z8V 9B5", "Uganda" ], + [ "945", "Naida", "Hammond", "40105", "Philippines" ], + [ "946", "Brenna", "Everett", "41704", "Indonesia" ], + [ "947", "Rae", "Parks", "79077", "Sweden" ], + [ "948", "Jessica", "Richard", "Y3I 5R3", "Uganda" ], + [ "949", "Rachel", "Marks", "16157", "Cameroon" ], + [ "950", "Maxwell", "Ferguson", "V6A 6M0", "Ukraine" ], + [ "951", "Alyssa", "Beard", "13936", "Antarctica" ], + [ "952", "Camille", "Gill", "V9Q 9P7", "New Caledonia" ], + [ "953", "Cora", "Bond", "M9X 1A4", "Seychelles" ], + [ "954", "Peter", "Acosta", "07937", "Chile" ], + [ "955", "Ella", "Poole", "A3F 9Z1", "Panama" ], + [ "956", "Ashely", "Guerrero", "37436", "Central African Republic" ], + [ "957", "Mikayla", "Johnston", "L9W 5T8", "Cameroon" ], + [ "958", "Ora", "Weaver", "65897", "Turks and Caicos Islands" ], + [ "959", "Timon", "Barnes", "R6J 1J7", "Djibouti" ], + [ "960", "Jamalia", "Wade", "22211", "United States" ], + [ "961", "Bradley", "Haney", "K1H 1Q1", "Western Sahara" ], + [ "962", "Lance", "Le", "H4R 9T7", "Botswana" ], + [ "963", "Ethan", "Rich", "T8N 1C6", "Netherlands" ], + [ "964", "Jeanette", "Carver", "G1E 5C8", "Cook Islands" ], + [ "965", "Ocean", "Marquez", "15084", "Pakistan" ], + [ "966", "Ifeoma", "Cleveland", "R9D 6M1", "French Guiana" ], + [ "967", "Sylvia", "Herring", "U4R 8P1", "Thailand" ], + [ "968", "Clare", "Huffman", "Q5G 2Q0", "Niger" ], + [ "969", "Colton", "Leach", "V3F 9W6", "Syrian Arab Republic" ], + [ "970", "Maryam", "Hoover", "Y7U 6N3", "Slovakia" ], + [ "971", "Nola", "Snider", "54275", "Bosnia and Herzegovina" ], + [ "972", "Kameko", "Cote", "M3C 8N0", "Cambodia" ], + [ "973", "Julian", "Pugh", "B6E 7J7", "Mauritania" ], + [ "974", "Xena", "Lott", "52294", "Estonia" ], + [ "975", "Fuller", "Kirk", "65396", "Qatar" ], + [ "976", "Lance", "Knox", "78074", "Serbia and Montenegro" ], + [ "977", "Hedwig", "Beck", "T5P 4C8", "Dominican Republic" ], + [ "978", "Martena", "Diaz", "65420", "Saint Pierre and Miquelon" ], + [ "979", "Shafira", "David", "74843", "Senegal" ], + [ "980", "Shafira", "Clark", "T6F 5C7", "Mongolia" ], + [ "981", "Georgia", "Booth", "28183", "Japan" ], + [ "982", "Cameron", "Austin", "I2J 1R1", "Bahrain" ], + [ "983", "Vanna", "Hyde", "82434", "Croatia" ], + [ "984", "Deanna", "Park", "68486", "Zimbabwe" ], + [ "985", "Grady", "Freeman", "U4O 1Q9", "Belarus" ], + [ "986", "Sandra", "Knapp", "31413", "Sudan" ], + [ "987", "Dorian", "Joseph", "90768", "Lithuania" ], + [ "988", "Adria", "Bonner", "15899", "Mongolia" ], + [ "989", "Sebastian", "Guzman", "G9L 9G5", "Yemen" ], + [ "990", "Angelica", "Puckett", "W8D 8W8", "Virgin Islands, U.S." ], + [ "991", "Connor", "Parks", "26175", "Virgin Islands, U.S." ], + [ "992", "Yardley", "Griffith", "H3L 2U3", "Saint Pierre and Miquelon" ], + [ "993", "Charissa", "Beck", "30611", "Zambia" ], + [ "994", "Calvin", "Russo", "79906", "Chile" ], + [ "995", "Yoshi", "Durham", "N2J 8M8", "China" ], + [ "996", "Finn", "Buck", "Q9F 9Z8", "Iraq" ], + [ "997", "Kessie", "Holden", "C4A 1J0", "Syrian Arab Republic" ], + [ "998", "Chloe", "Richards", "63091", "Canada" ], + [ "999", "Uriel", "Snyder", "95487", "Pakistan" ], + [ "1000", "Maite", "Cash", "90705", "Syrian Arab Republic" ], + [ "1001", "Cameron", "Schwartz", "82778", "Taiwan, Province of China" ], + [ "1002", "Faith", "Jimenez", "J6K 2P9", "Saint Pierre and Miquelon" ], + [ "1003", "Otto", "Hancock", "34535", "Andorra" ], + [ "1004", "Harlan", "Blackwell", "N8Y 4E6", "Qatar" ], + [ "1005", "Fitzgerald", "Gilliam", "Y9J 6J5", "Burkina Faso" ], + [ "1006", "Lev", "Ballard", "01956", "American Samoa" ], + [ "1007", "Freya", "Brown", "01190", "Portugal" ], + [ "1008", "Harding", "Osborn", "14814", "San Marino" ], + [ "1009", "Alexander", "Howard", "81842", "Reunion" ], + [ "1010", "Ori", "Marsh", "77738", "Saint Helena" ], + [ "1011", "Brennan", "Rich", "18690", "Cambodia" ], + [ "1012", "Dawn", "Christensen", "Y8F 7R3", "Mali" ], + [ "1013", "Ahmed", "Pearson", "62230", "Sudan" ], + [ "1014", "Tanek", "Head", "25744", "Kiribati" ], + [ "1015", "Meredith", "Cantu", "E6X 2L1", "Kenya" ], + [ "1016", "Levi", "Fisher", "I9Y 9G2", "Djibouti" ], + [ "1017", "Katell", "Cameron", "10278", "Denmark" ], + [ "1018", "Ina", "Orr", "P7H 2O3", "Congo" ], + [ "1019", "Beck", "Hayden", "15115", "Saint Lucia" ], + [ "1020", "Cassady", "Wagner", "R9H 8C5", "Estonia" ], + [ "1021", "Amena", "Herrera", "13286", "Bahrain" ], + [ "1022", "Tarik", "Gross", "C3X 3W0", "Azerbaijan" ], + [ "1023", "Marshall", "Collier", "13416", "Dominica" ], + [ "1024", "Kirestin", "Callahan", "15429", "Micronesia" ], + [ "1025", "Sasha", "Rice", "O6H 6X2", "Denmark" ], + [ "1026", "Ross", "Gonzalez", "D3B 3R5", "Sudan" ], + [ "1027", "Veda", "Arnold", "56611", "Swaziland" ], + [ "1028", "Ferdinand", "Macias", "P1Q 3I2", "Colombia" ], + [ "1029", "Mohammad", "Reed", "74005", "Bhutan" ], + [ "1030", "Reagan", "Sandoval", "19275", "Pitcairn" ], + [ "1031", "Debra", "Nelson", "85945", "Ukraine" ], + [ "1032", "Cleo", "Robertson", "84072", "Guadeloupe" ], + [ "1033", "Tanya", "Vance", "C1F 7F1", "Romania" ], + [ "1034", "Desirae", "Wooten", "74659", "Mongolia" ], + [ "1035", "Hiram", "Estes", "Q5Z 5A0", "Namibia" ], + [ "1036", "Medge", "Weiss", "67079", "Azerbaijan" ], + [ "1037", "Hu", "Chase", "87562", "Cuba" ], + [ "1038", "Shafira", "Everett", "18983", "Georgia" ], + [ "1039", "Mannix", "Lamb", "45542", "Venezuela" ], + [ "1040", "Germaine", "Harvey", "I9G 1U0", "Falkland Islands (Malvinas)" ], + [ "1041", "Brenna", "Leonard", "55573", "New Zealand" ], + [ "1042", "Kylie", "Rivas", "U9J 3O9", "Djibouti" ], + [ "1043", "Alexandra", "Rich", "T4O 6S6", "Cuba" ], + [ "1044", "Dorian", "Spears", "00456", "Brazil" ], + [ "1045", "Laurel", "Abbott", "45449", "Switzerland" ], + [ "1046", "Gabriel", "Drake", "U1S 5O2", "Trinidad and Tobago" ], + [ "1047", "Priscilla", "Mercer", "01401", "Serbia and Montenegro" ], + [ "1048", "Darius", "Hoffman", "49694", "Greece" ], + [ "1049", "Caesar", "Patton", "42322", "Suriname" ], + [ "1050", "Susan", "Clayton", "W1G 5C3", "Maldives" ], + [ "1051", "Zane", "Dunlap", "73722", "Oman" ], + [ "1052", "Leah", "Fuentes", "60412", "Luxembourg" ], + [ "1053", "Yardley", "Hansen", "03194", "Mauritius" ], + [ "1054", "Ingrid", "Talley", "37315", "Solomon Islands" ], + [ "1055", "Demetria", "Evans", "30587", "Tajikistan" ], + [ "1056", "Ignacia", "Alford", "01282", "Bouvet Island" ], + [ "1057", "Destiny", "Wade", "L5R 3V3", "Uganda" ], + [ "1058", "Alden", "Mason", "V7D 2V6", "Dominican Republic" ], + [ "1059", "Pamela", "Wilcox", "L1I 6I1", "Canada" ], + [ "1060", "Melvin", "Buckley", "05478", "Hungary" ], + [ "1061", "Eve", "Holcomb", "B6B 8T1", "Cook Islands" ], + [ "1062", "Arthur", "Weeks", "R5P 7U2", "Bangladesh" ], + [ "1063", "Marah", "Levine", "10075", "Somalia" ], + [ "1064", "Keiko", "Freeman", "90950", "Faroe Islands" ], + [ "1065", "Dorian", "Rose", "T5M 4Z0", "Fiji" ], + [ "1066", "Desirae", "Velez", "T4E 8K2", "Afghanistan" ], + [ "1067", "Rebekah", "Lucas", "T9A 8V5", "Tunisia" ], + [ "1068", "Sylvester", "Copeland", "W6R 3B6", "Jamaica" ], + [ "1069", "Alea", "Preston", "31050", "Netherlands Antilles" ], + [ "1070", "Aphrodite", "Gordon", "T7C 6T8", "Sao Tome and Principe" ], + [ "1071", "Yael", "Delaney", "G9W 9P1", "Mexico" ], + [ "1072", "Sierra", "Perez", "R3O 8H0", "Slovenia" ], + [ "1073", "Avram", "Briggs", "05221", "Norfolk Island" ], + [ "1074", "Troy", "Poole", "W7Q 8O5", "Malta" ], + [ "1075", "Gavin", "Sandoval", "37352", "Greece" ], + [ "1076", "Nerea", "Stokes", "N2Q 6S9", "United States" ], + [ "1077", "Genevieve", "Ramirez", "53829", "Mali" ], + [ "1078", "Oliver", "Boone", "M1Q 8V9", "Bolivia" ], + [ "1079", "Lars", "Ramirez", "L2R 6V2", "Bosnia and Herzegovina" ], + [ "1080", "Abbot", "Horton", "R1R 1V8", "Netherlands Antilles" ], + [ "1081", "Abra", "Avila", "41608", "Congo" ], + [ "1082", "Candice", "Christian", "13930", "Faroe Islands" ], + [ "1083", "Flavia", "Miranda", "93964", "Estonia" ], + [ "1084", "Medge", "Drake", "Q7C 2E2", "Belize" ], + [ "1085", "Lee", "Montgomery", "H3T 4Q6", "Costa Rica" ], + [ "1086", "Aline", "Ratliff", "99839", "Macao" ], + [ "1087", "Shafira", "Fox", "A9S 7C8", "Palestinian Territory, Occupied" ], + [ "1088", "Orson", "Greene", "K9L 7R8", "Myanmar" ], + [ "1089", "Henry", "Joyner", "55853", "South Africa" ], + [ "1090", "Keely", "Boyer", "08996", "Liberia" ], + [ "1091", "Jerome", "Jones", "31770", "Saint Lucia" ], + [ "1092", "Hermione", "Dunlap", "U2R 7R2", "Moldova" ], + [ "1093", "Lenore", "Powers", "73772", "Tunisia" ], + [ "1094", "Alden", "Newman", "V4C 3O8", "Bhutan" ], + [ "1095", "Jasper", "Blevins", "K2H 5W0", "Paraguay" ], + [ "1096", "Robert", "Bender", "R5F 1H9", "Philippines" ], + [ "1097", "Bo", "Richard", "N5R 6T2", "Trinidad and Tobago" ], + [ "1098", "Iliana", "Mcpherson", "23758", "Bangladesh" ], + [ "1099", "Alfreda", "Camacho", "35387", "Saint Helena" ], + [ "1100", "Kirsten", "Giles", "14079", "Romania" ], + [ "1101", "Harlan", "Crawford", "84847", "French Polynesia" ], + [ "1102", "Wynne", "Bauer", "W9D 6F6", "Kazakhstan" ], + [ "1103", "Connor", "Melton", "E2F 4Q2", "Angola" ], + [ "1104", "Evelyn", "Barry", "I9H 8W7", "Turkmenistan" ], + [ "1105", "Barry", "Stephens", "07823", "Gibraltar" ], + [ "1106", "Ferris", "Farrell", "I7H 5Z6", "Saint Vincent and The Grenadines" ], + [ "1107", "Ursa", "Carr", "31124", "Chad" ], + [ "1108", "Laith", "Johnson", "10428", "Cyprus" ], + [ "1109", "Harlan", "Frank", "J6K 7I6", "Gambia" ], + [ "1110", "Gregory", "Ratliff", "P1C 8H2", "Chile" ], + [ "1111", "Rina", "Holloway", "Y7N 1E7", "Estonia" ], + [ "1112", "Maris", "Joyner", "T6R 2H9", "France" ], + [ "1113", "Galvin", "Webster", "V8E 9U4", "Croatia" ], + [ "1114", "Farrah", "Bean", "H2B 8E2", "Palestinian Territory, Occupied" ], + [ "1115", "Martha", "Schroeder", "14485", "Georgia" ], + [ "1116", "Mari", "Boone", "D4C 1Q0", "Comoros" ], + [ "1117", "Nadine", "Mercado", "35046", "Syrian Arab Republic" ], + [ "1118", "Isadora", "Keith", "R5H 8Y7", "Mayotte" ], + [ "1119", "Quinn", "William", "V8Q 3Y6", "India" ], + [ "1120", "Justina", "Gilbert", "11271", "Yemen" ], + [ "1121", "Jordan", "Hull", "F4Z 7R8", "Lesotho" ], + [ "1122", "Mechelle", "Davenport", "A9Z 8P2", "Bermuda" ], + [ "1123", "Isabelle", "Webster", "60972", "Zimbabwe" ], + [ "1124", "Armand", "Butler", "Y3F 4H9", "Nicaragua" ], + [ "1125", "Herman", "Beach", "Q8N 6V3", "Cape Verde" ], + [ "1126", "Brianna", "Love", "D9B 2W8", "Sierra Leone" ], + [ "1127", "Joy", "Brown", "O7V 7C1", "Djibouti" ], + [ "1128", "Amena", "Moss", "P8D 1L9", "Andorra" ], + [ "1129", "Zeph", "Whitehead", "01513", "Tanzania, United Republic of" ], + [ "1130", "Logan", "Matthews", "73541", "Finland" ], + [ "1131", "Amela", "Gregory", "65323", "Swaziland" ], + [ "1132", "Zoe", "Owen", "V5L 5O6", "Zambia" ], + [ "1133", "September", "Hewitt", "R8K 4G9", "Congo" ], + [ "1134", "Holly", "Walter", "S2E 3M4", "Serbia and Montenegro" ], + [ "1135", "Zeph", "Beach", "J6Z 8B5", "Ecuador" ], + [ "1136", "Morgan", "Decker", "M9H 8I5", "Uruguay" ], + [ "1137", "Malcolm", "Maldonado", "S6F 8X6", "Netherlands" ], + [ "1138", "Fay", "Day", "B9R 1U7", "Seychelles" ], + [ "1139", "Charles", "Juarez", "62791", "Virgin Islands, U.S." ], + [ "1140", "Amery", "Stout", "L9A 1F8", "Central African Republic" ], + [ "1141", "Irene", "Ferrell", "52649", "Norway" ], + [ "1142", "Dean", "Stout", "N5C 2S8", "Uruguay" ], + [ "1143", "Eric", "Baxter", "82082", "Chile" ], + [ "1144", "Shelley", "Larsen", "Y4T 4P3", "Antarctica" ], + [ "1145", "Rigel", "Ellis", "E3S 6K8", "Zimbabwe" ], + [ "1146", "Maite", "Rosa", "F6C 5Q9", "Zambia" ], + [ "1147", "Serena", "Blanchard", "99373", "Estonia" ], + [ "1148", "Melanie", "Berger", "C5P 4E2", "Mozambique" ], + [ "1149", "Noah", "Spence", "B8H 7X7", "Martinique" ], + [ "1150", "Elliott", "Pierce", "W5B 8V7", "Swaziland" ], + [ "1151", "Ahmed", "Chang", "E9X 7J0", "Bulgaria" ], + [ "1152", "Ross", "Figueroa", "22458", "China" ], + [ "1153", "Gary", "Calderon", "V3C 4J8", "Algeria" ], + [ "1154", "Montana", "Franklin", "94093", "Haiti" ], + [ "1155", "Rae", "Curry", "45477", "Morocco" ], + [ "1156", "Jillian", "Hogan", "N8L 4B5", "Iceland" ], + [ "1157", "Mia", "Kaufman", "54758", "Burkina Faso" ], + [ "1158", "Remedios", "Wilkerson", "75420", "Saint Vincent and The Grenadines" ], + [ "1159", "Xanthus", "Baldwin", "13961", "Congo" ], + [ "1160", "Madeline", "Gates", "76351", "Saint Helena" ], + [ "1161", "Leroy", "Craig", "12770", "Finland" ], + [ "1162", "Melanie", "Carpenter", "C3B 8L4", "Mayotte" ], + [ "1163", "Ashely", "Mcneil", "E7E 9K5", "French Southern Territories" ], + [ "1164", "Karina", "Mcneil", "39956", "United Arab Emirates" ], + [ "1165", "Nina", "Mills", "92913", "Saint Kitts and Nevis" ], + [ "1166", "Ashton", "Singleton", "73890", "Libyan Arab Jamahiriya" ], + [ "1167", "Meghan", "Black", "31814", "Armenia" ], + [ "1168", "Jolene", "Pope", "U6K 7O6", "Venezuela" ], + [ "1169", "Abel", "Boyd", "37110", "Botswana" ], + [ "1170", "Tiger", "Coffey", "Y6P 3S4", "Faroe Islands" ], + [ "1171", "Aileen", "Rowe", "F7G 8D9", "Netherlands Antilles" ], + [ "1172", "Bryar", "Forbes", "T2N 5H6", "Saint Vincent and The Grenadines" ], + [ "1173", "Vera", "Hoffman", "36299", "Guadeloupe" ], + [ "1174", "Hadassah", "Wright", "S8J 5B2", "Peru" ], + [ "1175", "Bruce", "Blair", "Q8E 7K6", "Cape Verde" ], + [ "1176", "Brianna", "Wolf", "V8S 5A6", "Bahamas" ], + [ "1177", "Kimberley", "Reed", "17652", "Tajikistan" ], + [ "1178", "Colin", "Phelps", "42334", "Brunei Darussalam" ], + [ "1179", "Gil", "Britt", "U3N 6C2", "Swaziland" ], + [ "1180", "Hasad", "Pena", "09526", "United States" ], + [ "1181", "Violet", "Dixon", "48691", "Micronesia" ], + [ "1182", "Uriel", "Bowen", "Z7F 7A7", "Uzbekistan" ], + [ "1183", "Madeline", "Keller", "18227", "Iran, Islamic Republic of" ], + [ "1184", "Buffy", "Mckee", "23861", "Ethiopia" ], + [ "1185", "Doris", "Martin", "V8N 8O7", "Liberia" ], + [ "1186", "Mia", "Burke", "64582", "Virgin Islands, British" ], + [ "1187", "William", "Kemp", "63587", "Tuvalu" ], + [ "1188", "Stacy", "Quinn", "01390", "Nauru" ], + [ "1189", "Halla", "Solomon", "31138", "Pakistan" ], + [ "1190", "Kasimir", "Rodriguez", "67823", "Costa Rica" ], + [ "1191", "Davis", "Lawrence", "27918", "Rwanda" ], + [ "1192", "Nigel", "Bryan", "L5U 2U9", "Seychelles" ], + [ "1193", "Ivana", "Stone", "94862", "Niue" ], + [ "1194", "Naomi", "Yang", "68985", "Haiti" ], + [ "1195", "Roanna", "Brown", "51196", "India" ], + [ "1196", "Colorado", "Chavez", "45634", "Brazil" ], + [ "1197", "Illana", "Levy", "V1A 7R8", "Jordan" ], + [ "1198", "Ali", "Lowe", "N8K 1Y5", "Hungary" ], + [ "1199", "Virginia", "Witt", "Y3O 5W8", "Azerbaijan" ], + [ "1200", "Howard", "Flores", "I9C 3Q7", "Fiji" ], + [ "1201", "Walter", "Odom", "78418", "Thailand" ], + [ "1202", "Thor", "Craig", "00935", "Jamaica" ], + [ "1203", "Petra", "Barry", "E5L 5K5", "Finland" ], + [ "1204", "Lev", "Ellison", "I6S 1K1", "Mongolia" ], + [ "1205", "Roth", "Osborne", "15014", "Swaziland" ], + [ "1206", "Lucius", "Baldwin", "12766", "China" ], + [ "1207", "Candice", "Hyde", "B5E 4B8", "Bahamas" ], + [ "1208", "Maggy", "Bailey", "76781", "Northern Mariana Islands" ], + [ "1209", "Beatrice", "Gregory", "S5S 8S4", "Rwanda" ], + [ "1210", "Adrian", "Bowman", "58500", "Vanuatu" ], + [ "1211", "Brenden", "Chandler", "50326", "Thailand" ], + [ "1212", "Jada", "Richmond", "15990", "Saint Vincent and The Grenadines" ], + [ "1213", "Sawyer", "Page", "G2W 7R7", "Somalia" ], + [ "1214", "Haley", "Jordan", "U7X 4U2", "Equatorial Guinea" ], + [ "1215", "Ruby", "Watson", "30990", "Romania" ], + [ "1216", "Jocelyn", "Knowles", "78987", "Lebanon" ], + [ "1217", "Preston", "Stevenson", "F3L 9B3", "Mali" ], + [ "1218", "Kimberly", "Merritt", "38779", "Venezuela" ], + [ "1219", "Herrod", "Burke", "56225", "French Guiana" ], + [ "1220", "Solomon", "Shannon", "67980", "Cape Verde" ], + [ "1221", "Bradley", "Stokes", "10213", "Botswana" ], + [ "1222", "Grace", "Kinney", "67923", "Montserrat" ], + [ "1223", "Celeste", "Clark", "S7M 6I2", "Guatemala" ], + [ "1224", "Patricia", "Frank", "05615", "Venezuela" ], + [ "1225", "Madonna", "Alford", "10878", "Brunei Darussalam" ], + [ "1226", "May", "Rios", "N7O 2L0", "Georgia" ], + [ "1227", "Driscoll", "Roach", "Y7F 9F8", "Palestinian Territory, Occupied" ], + [ "1228", "Idona", "Cruz", "T6Q 8L4", "Iraq" ], + [ "1229", "Sydney", "Delacruz", "69511", "United Arab Emirates" ], + [ "1230", "Gillian", "Huff", "52624", "French Southern Territories" ], + [ "1231", "Minerva", "Rosario", "29195", "Andorra" ], + [ "1232", "Kerry", "Alvarado", "L3Q 2V5", "Portugal" ], + [ "1233", "Amos", "Bass", "26389", "Holy See (Vatican City State)" ], + [ "1234", "Deanna", "Parks", "57376", "Estonia" ], + [ "1235", "Fitzgerald", "Green", "M3P 9N2", "Slovenia" ], + [ "1236", "Sade", "Hinton", "35561", "Barbados" ], + [ "1237", "Suki", "Parsons", "44591", "Syrian Arab Republic" ], + [ "1238", "Orli", "Weeks", "K2W 9L4", "Peru" ], + [ "1239", "Nicholas", "Copeland", "I5W 7A4", "French Guiana" ], + [ "1240", "Guy", "Vang", "22277", "Pitcairn" ], + [ "1241", "Hunter", "Goodman", "72290", "Malaysia" ], + [ "1242", "Noble", "Rich", "I3B 6T9", "Gibraltar" ], + [ "1243", "Delilah", "Zamora", "96328", "New Zealand" ], + [ "1244", "Sybil", "Mercer", "93665", "Namibia" ], + [ "1245", "Scarlett", "Brock", "Z2E 3J2", "Central African Republic" ], + [ "1246", "Channing", "Alexander", "W5V 8D2", "San Marino" ], + [ "1247", "Carolyn", "Boyle", "Q5Z 9E6", "Gabon" ], + [ "1248", "Irene", "Jennings", "F3H 4O6", "Saint Helena" ], + [ "1249", "Bianca", "Pratt", "66354", "Malaysia" ], + [ "1250", "Dexter", "Cole", "56106", "French Southern Territories" ], + [ "1251", "Berk", "Velez", "26759", "Lesotho" ], + [ "1252", "Barrett", "Richardson", "59446", "Cocos (Keeling) Islands" ], + [ "1253", "Scarlet", "Jacobs", "G9A 7L6", "Dominica" ], + [ "1254", "Aiko", "Brooks", "R6R 9E4", "Liberia" ], + [ "1255", "Jacob", "Moore", "P2Y 6P3", "Cambodia" ], + [ "1256", "Madeline", "Bishop", "D4I 2E7", "Dominican Republic" ], + [ "1257", "Jarrod", "Evans", "C9O 7V7", "Taiwan, Province of China" ], + [ "1258", "Beverly", "Witt", "64850", "Denmark" ], + [ "1259", "Karyn", "Rhodes", "D6G 5Z3", "Cape Verde" ], + [ "1260", "Imani", "Quinn", "01897", "Macao" ], + [ "1261", "Athena", "Eaton", "03568", "Syrian Arab Republic" ], + [ "1262", "Raymond", "Valdez", "21037", "Romania" ], + [ "1263", "Christopher", "Ferguson", "64945", "Indonesia" ], + [ "1264", "Latifah", "Harris", "91381", "Suriname" ], + [ "1265", "Dacey", "Wagner", "81483", "Qatar" ], + [ "1266", "Summer", "Myers", "H6A 1G5", "Angola" ], + [ "1267", "Jasmine", "Rivera", "Y4W 8P2", "Virgin Islands, British" ], + [ "1268", "Cairo", "Massey", "Q6Y 7A7", "Poland" ], + [ "1269", "Jena", "Hill", "89480", "United States Minor Outlying Islands" ], + [ "1270", "Ava", "Benson", "L9H 8V1", "Sri Lanka" ], + [ "1271", "Gillian", "Mercado", "A9W 6V5", "Norway" ], + [ "1272", "Peter", "Marquez", "I5B 3W9", "Guyana" ], + [ "1273", "Price", "Coleman", "X8G 2S0", "Burkina Faso" ], + [ "1274", "Shana", "Harper", "L2B 3U9", "Malaysia" ], + [ "1275", "Serina", "Matthews", "58061", "Lithuania" ], + [ "1276", "Aretha", "Bryant", "Y8J 7A5", "Tonga" ], + [ "1277", "Wesley", "Craig", "20141", "Australia" ], + [ "1278", "Martena", "Mercer", "P6X 2L9", "Sudan" ], + [ "1279", "Tamara", "Dennis", "D3H 9R0", "Mali" ], + [ "1280", "Phelan", "Pena", "D2H 2H7", "United States Minor Outlying Islands" ], + [ "1281", "Rebecca", "Kinney", "B5Z 9S4", "Antarctica" ], + [ "1282", "Josephine", "Delgado", "81010", "Algeria" ], + [ "1283", "Kieran", "Estes", "70093", "Bermuda" ], + [ "1284", "Tamara", "Williamson", "90905", "French Guiana" ], + [ "1285", "Dora", "Serrano", "W8K 6R5", "Nauru" ], + [ "1286", "Morgan", "Bass", "B6F 8R2", "Madagascar" ], + [ "1287", "Margaret", "Austin", "D2C 2C1", "Belgium" ], + [ "1288", "Nasim", "Berry", "J9X 7M5", "Heard Island and Mcdonald Islands" ], + [ "1289", "Jelani", "Rutledge", "34552", "Bolivia" ], + [ "1290", "Cassady", "Hardin", "I2K 4H6", "Hong Kong" ], + [ "1291", "Jenette", "Thornton", "44943", "Uganda" ], + [ "1292", "Alexandra", "Sims", "93937", "Australia" ], + [ "1293", "Ross", "Higgins", "61993", "Nicaragua" ], + [ "1294", "Penelope", "Henson", "90344", "Trinidad and Tobago" ], + [ "1295", "Yoshi", "Blackwell", "C8D 1T4", "Costa Rica" ], + [ "1296", "Daria", "Rodriquez", "X3C 6L0", "Iceland" ], + [ "1297", "Wesley", "Waller", "43947", "Myanmar" ], + [ "1298", "Adam", "Hayden", "88969", "Italy" ], + [ "1299", "Charity", "William", "46439", "Greece" ], + [ "1300", "Ronan", "Hopper", "51955", "Zambia" ], + [ "1301", "Geraldine", "Hatfield", "W9S 7T5", "Luxembourg" ], + [ "1302", "Barry", "Nicholson", "79625", "Liechtenstein" ], + [ "1303", "Donovan", "Ortiz", "68119", "Macao" ], + [ "1304", "Jeanette", "Cooper", "D5P 9L2", "Sri Lanka" ], + [ "1305", "Isadora", "Stephenson", "P4X 4H5", "Mauritania" ], + [ "1306", "Hall", "Hays", "J2Z 2H1", "Svalbard and Jan Mayen" ], + [ "1307", "Idola", "Roberson", "89249", "Niue" ], + [ "1308", "Olympia", "Dennis", "69498", "Guinea" ], + [ "1309", "Naida", "Palmer", "19840", "Gambia" ], + [ "1310", "Maxine", "Rollins", "87856", "Belize" ], + [ "1311", "Rooney", "Phelps", "48424", "Italy" ], + [ "1312", "Shelly", "Edwards", "O7O 1U4", "Mali" ], + [ "1313", "Cassidy", "Holcomb", "98785", "Colombia" ], + [ "1314", "Sybil", "Moran", "F3C 6E4", "Switzerland" ], + [ "1315", "Mufutau", "Larson", "00276", "British Indian Ocean Territory" ], + [ "1316", "Fiona", "Bryant", "U7Y 7N6", "Cocos (Keeling) Islands" ], + [ "1317", "Lenore", "Boyle", "H5G 6P9", "Sudan" ], + [ "1318", "Ignacia", "Avila", "Y5M 1S2", "Romania" ], + [ "1319", "Wendy", "Stein", "25422", "Taiwan, Province of China" ], + [ "1320", "Garrison", "Bass", "B9J 6D9", "Romania" ], + [ "1321", "Curran", "Roy", "X2F 4P2", "Taiwan, Province of China" ], + [ "1322", "Oliver", "Beach", "N6J 1C5", "Kazakhstan" ], + [ "1323", "Bo", "Duran", "D5C 5C2", "Eritrea" ], + [ "1324", "Tashya", "Morrow", "N2J 7O9", "Rwanda" ], + [ "1325", "Cheryl", "Powell", "72413", "Niger" ], + [ "1326", "Justin", "Roth", "18779", "Brunei Darussalam" ], + [ "1327", "Nathaniel", "Foster", "04955", "Bermuda" ], + [ "1328", "Candace", "Nunez", "G7Z 1N2", "Moldova" ], + [ "1329", "Nero", "West", "K3Q 6B3", "Myanmar" ], + [ "1330", "Brendan", "Mcintyre", "C4E 5H7", "Argentina" ], + [ "1331", "Chaney", "Stafford", "V3X 8J4", "Benin" ], + [ "1332", "Sylvia", "Velez", "95851", "Iraq" ], + [ "1333", "Azalia", "Castro", "55986", "Israel" ], + [ "1334", "Emily", "Hogan", "74667", "Botswana" ], + [ "1335", "Buckminster", "Hurst", "N9C 2X6", "Reunion" ], + [ "1336", "Rinah", "Rodriquez", "31896", "Guinea-bissau" ], + [ "1337", "Nash", "Barnett", "Y8X 7H5", "China" ], + [ "1338", "Xanthus", "Barker", "11212", "Trinidad and Tobago" ], + [ "1339", "Minerva", "Huber", "M6M 9U3", "Equatorial Guinea" ], + [ "1340", "Kaseem", "Tillman", "86565", "Bulgaria" ], + [ "1341", "Cassidy", "Dejesus", "93205", "Sierra Leone" ], + [ "1342", "Sheila", "Munoz", "26473", "Benin" ], + [ "1343", "Florence", "Yates", "M5O 1J1", "Russian Federation" ], + [ "1344", "Isadora", "Wagner", "88381", "Philippines" ], + [ "1345", "Hilel", "Kramer", "E5D 4F5", "Lebanon" ], + [ "1346", "Stewart", "Lawson", "67313", "Malaysia" ], + [ "1347", "Ira", "Duffy", "52841", "Greece" ], + [ "1348", "Ignatius", "Robinson", "10035", "Russian Federation" ], + [ "1349", "Baxter", "Carroll", "92288", "Albania" ], + [ "1350", "Palmer", "James", "N5X 5B1", "Germany" ], + [ "1351", "Ava", "Eaton", "76497", "Egypt" ], + [ "1352", "Kiona", "Smith", "09402", "Belize" ], + [ "1353", "Brian", "Barlow", "00156", "Panama" ], + [ "1354", "Nolan", "Rosa", "J2O 9W2", "Uruguay" ], + [ "1355", "Teegan", "Burnett", "02401", "Italy" ], + [ "1356", "Erin", "Knox", "95496", "Egypt" ], + [ "1357", "Amela", "Sanford", "59890", "Virgin Islands, U.S." ], + [ "1358", "Quemby", "Hensley", "17698", "Tuvalu" ], + [ "1359", "Ava", "York", "J1M 1A0", "Nigeria" ], + [ "1360", "Vivien", "Ware", "N9S 1W6", "Bahamas" ], + [ "1361", "Nyssa", "Lamb", "97964", "Estonia" ], + [ "1362", "Brenna", "Slater", "L4P 5V6", "British Indian Ocean Territory" ], + [ "1363", "Kennan", "Larsen", "M2A 4X0", "Angola" ], + [ "1364", "Linda", "Luna", "P8C 4S8", "Gambia" ], + [ "1365", "Boris", "Poole", "U7J 4G1", "Aruba" ], + [ "1366", "Lyle", "Cote", "F5J 3Y2", "Somalia" ], + [ "1367", "Oleg", "Knapp", "K4C 5T8", "Guinea" ], + [ "1368", "Hanae", "Brown", "51395", "Nepal" ], + [ "1369", "India", "Hyde", "E8P 7E8", "Belize" ], + [ "1370", "Madeson", "Hodge", "23265", "Gambia" ], + [ "1371", "Thaddeus", "Hester", "Y7S 5W1", "Saint Helena" ], + [ "1372", "Aaron", "Kemp", "A1Q 8R3", "Albania" ], + [ "1373", "Aurelia", "Thornton", "P8T 9D4", "Swaziland" ], + [ "1374", "Preston", "Sharpe", "97472", "Niue" ], + [ "1375", "Grace", "Gregory", "51767", "Burkina Faso" ], + [ "1376", "Nicole", "Hicks", "81040", "Burkina Faso" ], + [ "1377", "Hall", "Randall", "X1C 7A8", "Cambodia" ], + [ "1378", "Burke", "Silva", "57219", "Romania" ], + [ "1379", "Talon", "Kline", "28200", "Argentina" ], + [ "1380", "Cassady", "Duncan", "Y2M 8F5", "Kenya" ], + [ "1381", "Brielle", "Reed", "06254", "Greece" ], + [ "1382", "Claire", "Stein", "50289", "Viet Nam" ], + [ "1383", "Fleur", "Cabrera", "30131", "Indonesia" ], + [ "1384", "Ella", "Ellison", "Q7Q 4R2", "Netherlands Antilles" ], + [ "1385", "Zachery", "Wolf", "A9Q 6A8", "Jamaica" ], + [ "1386", "Emerson", "Brewer", "Y4R 9M9", "Bosnia and Herzegovina" ], + [ "1387", "Sarah", "Brooks", "27281", "Pitcairn" ], + [ "1388", "Kylan", "Garrison", "S8E 7L8", "Djibouti" ], + [ "1389", "Guinevere", "Mills", "75612", "Comoros" ], + [ "1390", "Claudia", "Stevenson", "73390", "Colombia" ], + [ "1391", "Valentine", "Burton", "Z9P 7R8", "Nauru" ], + [ "1392", "Raymond", "Mclean", "L8W 2K5", "Brunei Darussalam" ], + [ "1393", "Juliet", "Combs", "88712", "Samoa" ], + [ "1394", "Lawrence", "Williamson", "32528", "Netherlands Antilles" ], + [ "1395", "Inga", "Rivers", "12850", "Kuwait" ], + [ "1396", "Mira", "Zimmerman", "D1I 1W2", "Ireland" ], + [ "1397", "Hilda", "Stafford", "11054", "Cuba" ], + [ "1398", "Tanek", "Kim", "88590", "Cayman Islands" ], + [ "1399", "Bryar", "Mcintyre", "H6F 4S5", "Russian Federation" ], + [ "1400", "Sean", "Reed", "P2V 8J9", "Malta" ], + [ "1401", "Serena", "Henderson", "Z5C 8A0", "Madagascar" ], + [ "1402", "Hedley", "Parks", "L8S 6F4", "Angola" ], + [ "1403", "Alice", "Quinn", "06084", "Senegal" ], + [ "1404", "Linda", "Burgess", "H1E 7C0", "Turkmenistan" ], + [ "1405", "Hilda", "Burns", "Q9Q 4S2", "Kyrgyzstan" ], + [ "1406", "Griffith", "Watts", "D4J 7N2", "United States Minor Outlying Islands" ], + [ "1407", "Camden", "Glenn", "12939", "Russian Federation" ], + [ "1408", "Tallulah", "Rush", "G9V 3N2", "Turkey" ], + [ "1409", "Hasad", "Salinas", "H3F 7P9", "Cameroon" ], + [ "1410", "Violet", "Chavez", "T2H 9C6", "Virgin Islands, U.S." ], + [ "1411", "Declan", "Hurley", "32614", "Iran, Islamic Republic of" ], + [ "1412", "Robin", "Dean", "34266", "Northern Mariana Islands" ], + [ "1413", "Mariko", "Avila", "B8F 8Y5", "Burundi" ], + [ "1414", "Bradley", "Pugh", "11453", "Sri Lanka" ], + [ "1415", "Herman", "Hernandez", "F3C 6S2", "Chile" ], + [ "1416", "Montana", "Wynn", "B3M 8M2", "Aruba" ], + [ "1417", "Erin", "Melton", "17022", "France" ], + [ "1418", "Zachery", "Small", "L5O 7O1", "French Southern Territories" ], + [ "1419", "Melanie", "Rivera", "07922", "Korea" ], + [ "1420", "Blossom", "Chase", "75493", "Mauritius" ], + [ "1421", "Stephanie", "Taylor", "U8K 3I9", "Bahamas" ], + [ "1422", "Carter", "Fulton", "T4F 8D1", "Turks and Caicos Islands" ], + [ "1423", "Celeste", "Medina", "75629", "Lebanon" ], + [ "1424", "Katell", "Guzman", "15409", "United Arab Emirates" ], + [ "1425", "Howard", "Rowland", "29003", "Liberia" ], + [ "1426", "Reece", "Taylor", "W8G 7P7", "Samoa" ], + [ "1427", "Bradley", "Peterson", "52568", "Singapore" ], + [ "1428", "Ulric", "Hancock", "07437", "Bolivia" ], + [ "1429", "Francis", "Rogers", "15904", "Albania" ], + [ "1430", "Tatiana", "Mccray", "19604", "Belize" ], + [ "1431", "Merrill", "Rowe", "68539", "Ethiopia" ], + [ "1432", "Kiara", "Taylor", "F6D 8V7", "Burkina Faso" ], + [ "1433", "Buffy", "Shannon", "61880", "Kiribati" ], + [ "1434", "Amber", "Farmer", "K5F 1J7", "Barbados" ], + [ "1435", "Blake", "Wilkins", "O1L 2G2", "Virgin Islands, U.S." ], + [ "1436", "Aimee", "Fulton", "18626", "Chad" ], + [ "1437", "Kai", "Montgomery", "U6S 4W7", "Costa Rica" ], + [ "1438", "Latifah", "Bell", "74589", "Chad" ], + [ "1439", "Ronan", "Herring", "01710", "Palestinian Territory, Occupied" ], + [ "1440", "Macy", "Skinner", "78054", "Gibraltar" ], + [ "1441", "Ignatius", "Berg", "59756", "Liechtenstein" ], + [ "1442", "Prescott", "Pratt", "V6H 6P4", "Kuwait" ], + [ "1443", "Deborah", "Hebert", "11480", "Liberia" ], + [ "1444", "Quentin", "Jones", "G8W 8U6", "Slovenia" ], + [ "1445", "Duncan", "Parsons", "Z9F 5G8", "Cambodia" ], + [ "1446", "Sheila", "George", "18033", "Trinidad and Tobago" ], + [ "1447", "Alyssa", "Padilla", "V3O 6C3", "Qatar" ], + [ "1448", "Amelia", "Orr", "51943", "Canada" ], + [ "1449", "Bethany", "Thomas", "33451", "Liberia" ], + [ "1450", "Kellie", "Pitts", "G4S 1Q3", "Panama" ], + [ "1451", "Stone", "Stout", "L4C 9N0", "Latvia" ], + [ "1452", "Brynne", "Bailey", "B1M 4O0", "Ukraine" ], + [ "1453", "Aquila", "Hurley", "41312", "United Kingdom" ], + [ "1454", "David", "Bradshaw", "11152", "Denmark" ], + [ "1455", "Ryan", "Gates", "Z7O 1U0", "Austria" ], + [ "1456", "Kyle", "Weber", "39871", "Guyana" ], + [ "1457", "Declan", "Moore", "K3B 6L2", "Gibraltar" ], + [ "1458", "Theodore", "Hickman", "W8E 6K1", "Mauritius" ], + [ "1459", "Rebekah", "Merritt", "44042", "Mauritania" ], + [ "1460", "Meredith", "Powell", "98238", "Bhutan" ], + [ "1461", "Paki", "Simmons", "34122", "Norway" ], + [ "1462", "Carissa", "Ballard", "20095", "Antarctica" ], + [ "1463", "James", "Wilson", "96376", "Venezuela" ], + [ "1464", "Pamela", "Gamble", "U7F 7B6", "Turkmenistan" ], + [ "1465", "Rogan", "Davenport", "E6S 4R7", "French Polynesia" ], + [ "1466", "Daphne", "Pearson", "G2H 9M0", "American Samoa" ], + [ "1467", "Maxwell", "Nash", "87205", "Guadeloupe" ], + [ "1468", "Hayes", "Salazar", "55712", "American Samoa" ], + [ "1469", "Justin", "Conner", "03924", "United Kingdom" ], + [ "1470", "Blythe", "Joyner", "T6H 3M0", "Montserrat" ], + [ "1471", "Herrod", "Spears", "19474", "Philippines" ], + [ "1472", "Yvette", "Joyce", "R7Y 7B8", "Botswana" ], + [ "1473", "Chloe", "Reid", "K4Y 1R2", "Philippines" ], + [ "1474", "MacKensie", "Branch", "J5E 3X8", "Saint Kitts and Nevis" ], + [ "1475", "Nasim", "Buchanan", "M4E 4D2", "Portugal" ], + [ "1476", "Aileen", "Rasmussen", "H2V 3F4", "Dominica" ], + [ "1477", "Nicole", "Mullins", "U6Q 9X5", "New Caledonia" ], + [ "1478", "David", "Luna", "11935", "Svalbard and Jan Mayen" ], + [ "1479", "Germaine", "Massey", "G3N 4C7", "Colombia" ], + [ "1480", "Matthew", "Knowles", "V4D 4Z0", "Turkey" ], + [ "1481", "Timon", "Rowe", "14024", "Morocco" ], + [ "1482", "Gail", "Young", "68293", "Bhutan" ], + [ "1483", "Mariam", "Mejia", "O3P 4Q7", "Singapore" ], + [ "1484", "Carla", "Norris", "D7A 3F1", "Liberia" ], + [ "1485", "Ainsley", "Donaldson", "H4Z 1Q8", "Tanzania, United Republic of" ], + [ "1486", "Avye", "Raymond", "44808", "Namibia" ], + [ "1487", "Amanda", "Sargent", "O7F 3S4", "Afghanistan" ], + [ "1488", "Tiger", "Chambers", "I3K 7H4", "United States" ], + [ "1489", "Dylan", "Ford", "04043", "Solomon Islands" ], + [ "1490", "Kaitlin", "Franklin", "99451", "Namibia" ], + [ "1491", "Hayes", "Craft", "D6H 4Y6", "Christmas Island" ], + [ "1492", "Nolan", "Sullivan", "31246", "United States Minor Outlying Islands" ], + [ "1493", "Jennifer", "Romero", "E7I 1R7", "Latvia" ], + [ "1494", "Deanna", "Wall", "36109", "Nepal" ], + [ "1495", "Dara", "Valenzuela", "18359", "Martinique" ], + [ "1496", "Iris", "Blanchard", "84392", "Turks and Caicos Islands" ], + [ "1497", "Rhea", "Burgess", "T7Y 7C5", "Liberia" ], + [ "1498", "Karina", "Small", "B2F 2X5", "Bermuda" ], + [ "1499", "Victor", "Case", "49492", "Vanuatu" ], + [ "1500", "Rose", "Terry", "B4G 8I0", "Timor-leste" ], + [ "1501", "Wyatt", "Berg", "K3B 5N2", "Vanuatu" ], + [ "1502", "Zephania", "Herrera", "E6R 2A5", "Romania" ], + [ "1503", "Felix", "Johns", "X8U 2P1", "Angola" ], + [ "1504", "Melyssa", "George", "M4J 5X8", "Uzbekistan" ], + [ "1505", "Robert", "Spears", "61322", "Papua New Guinea" ], + [ "1506", "Myra", "Wood", "50638", "Afghanistan" ], + [ "1507", "Sean", "Kerr", "40094", "Guadeloupe" ], + [ "1508", "Wesley", "Mcclain", "H7F 1H3", "Mongolia" ], + [ "1509", "Ishmael", "Hoover", "42503", "Czech Republic" ], + [ "1510", "Ocean", "Parker", "L3Z 8G0", "Guyana" ], + [ "1511", "Berk", "Clay", "B6Q 7V7", "Botswana" ], + [ "1512", "Daquan", "Harrison", "78004", "Niger" ], + [ "1513", "Ramona", "Burris", "66986", "Palau" ], + [ "1514", "Jaden", "Miranda", "80086", "Madagascar" ], + [ "1515", "Solomon", "Kirk", "R7M 3M3", "Slovenia" ], + [ "1516", "Tanek", "Rosales", "X5B 5D0", "Tonga" ], + [ "1517", "Jack", "Cooke", "46356", "French Southern Territories" ], + [ "1518", "Naomi", "Sykes", "76541", "Marshall Islands" ], + [ "1519", "Moana", "Vinson", "K4R 3U7", "Saint Pierre and Miquelon" ], + [ "1520", "Kaye", "Sweet", "S6S 2G0", "Dominican Republic" ], + [ "1521", "Bruno", "Beard", "20686", "Israel" ], + [ "1522", "Helen", "Richards", "66393", "Argentina" ], + [ "1523", "Gisela", "Owens", "S8Q 4L3", "Haiti" ], + [ "1524", "Ivy", "Garrett", "P6G 8S8", "United Arab Emirates" ], + [ "1525", "Malik", "Osborne", "78332", "Tajikistan" ], + [ "1526", "Whoopi", "Franco", "T3T 5Y1", "Serbia and Montenegro" ], + [ "1527", "Basil", "Baker", "61233", "Cuba" ], + [ "1528", "Linda", "King", "31410", "Falkland Islands (Malvinas)" ], + [ "1529", "Allegra", "Hobbs", "F2C 9M8", "Andorra" ], + [ "1530", "Kirsten", "Elliott", "T8C 4X3", "Haiti" ], + [ "1531", "Joseph", "Ortiz", "40165", "Falkland Islands (Malvinas)" ], + [ "1532", "Pearl", "Mccormick", "93914", "Falkland Islands (Malvinas)" ], + [ "1533", "Fritz", "Austin", "A3S 7C8", "Canada" ], + [ "1534", "Lunea", "Hickman", "25676", "Cameroon" ], + [ "1535", "Inga", "Cortez", "14707", "Comoros" ], + [ "1536", "Claudia", "Long", "74877", "Tokelau" ], + [ "1537", "Judah", "Williamson", "S9N 6F0", "Paraguay" ], + [ "1538", "Eve", "Beasley", "K8Z 5H7", "Honduras" ], + [ "1539", "Tad", "Lang", "29577", "Equatorial Guinea" ], + [ "1540", "Jack", "Lawson", "46631", "Costa Rica" ], + [ "1541", "Vaughan", "Barron", "N9L 9T4", "Chile" ], + [ "1542", "Solomon", "Bowman", "05734", "Cocos (Keeling) Islands" ], + [ "1543", "Nash", "Giles", "64600", "Denmark" ], + [ "1544", "Xander", "Eaton", "84933", "Bosnia and Herzegovina" ], + [ "1545", "Hanna", "Hull", "61062", "Namibia" ], + [ "1546", "Lee", "Gaines", "V7H 6H7", "Suriname" ], + [ "1547", "Brian", "Sutton", "60055", "Timor-leste" ], + [ "1548", "Azalia", "Henson", "D9J 8E4", "Antarctica" ], + [ "1549", "Russell", "Avila", "01774", "China" ], + [ "1550", "Marsden", "Leblanc", "30201", "New Caledonia" ], + [ "1551", "Tad", "Nichols", "K5V 6N1", "Monaco" ], + [ "1552", "Eliana", "Savage", "06807", "Central African Republic" ], + [ "1553", "Madeline", "Conway", "83513", "Latvia" ], + [ "1554", "Kai", "Caldwell", "S1K 2Q2", "Indonesia" ], + [ "1555", "Wynne", "Goodman", "U9Y 8P7", "Gibraltar" ], + [ "1556", "Nora", "Dudley", "52688", "Netherlands Antilles" ], + [ "1557", "Anastasia", "Gates", "T7T 8C8", "Morocco" ], + [ "1558", "Lester", "Good", "76376", "Heard Island and Mcdonald Islands" ], + [ "1559", "Craig", "Skinner", "S7B 3Z6", "Madagascar" ], + [ "1560", "Kibo", "Craft", "M5C 2I9", "Hong Kong" ], + [ "1561", "Carlos", "Buck", "89343", "Northern Mariana Islands" ], + [ "1562", "Ivor", "Mooney", "M9D 2Y3", "Korea" ], + [ "1563", "Armand", "Shields", "E8O 7X6", "Uzbekistan" ], + [ "1564", "Grace", "Weeks", "G5B 3W5", "Nicaragua" ], + [ "1565", "Reagan", "Mann", "J2E 5I1", "San Marino" ], + [ "1566", "Quin", "Nolan", "Q9E 2Q0", "Turkey" ], + [ "1567", "Kareem", "Jefferson", "91393", "Zambia" ], + [ "1568", "Erica", "Mccoy", "C3P 3L0", "Viet Nam" ], + [ "1569", "Sybill", "Larsen", "J3U 3L9", "Sierra Leone" ], + [ "1570", "Angela", "Weber", "46559", "Croatia" ], + [ "1571", "Mannix", "Noel", "94029", "Belgium" ], + [ "1572", "Martina", "Travis", "20063", "Solomon Islands" ], + [ "1573", "Dominic", "Whitehead", "83547", "Gibraltar" ], + [ "1574", "Vladimir", "Hunter", "L3I 4G7", "Reunion" ], + [ "1575", "Farrah", "Alexander", "18538", "Croatia" ], + [ "1576", "Hop", "Burns", "X1C 7J6", "Saint Lucia" ], + [ "1577", "Zelda", "Trevino", "L8P 7E9", "Guinea" ], + [ "1578", "Nehru", "Decker", "Q1P 4Q9", "Western Sahara" ], + [ "1579", "Shay", "Goff", "68576", "Sweden" ], + [ "1580", "Dominic", "Martin", "C1M 9P2", "Denmark" ], + [ "1581", "Heather", "Doyle", "Y7R 9H1", "Iran, Islamic Republic of" ], + [ "1582", "Honorato", "Rojas", "29414", "India" ], + [ "1583", "Florence", "England", "64669", "China" ], + [ "1584", "Zane", "Reyes", "84771", "Heard Island and Mcdonald Islands" ], + [ "1585", "Scarlett", "Poole", "36928", "Algeria" ], + [ "1586", "Dieter", "Brennan", "Y8V 5L2", "Colombia" ], + [ "1587", "Jamal", "Whitney", "33428", "Turkey" ], + [ "1588", "Evan", "Guy", "72119", "Slovakia" ], + [ "1589", "Candace", "Bauer", "C8L 1P2", "Macedonia" ], + [ "1590", "Naomi", "Pennington", "17350", "Tonga" ], + [ "1591", "Celeste", "Banks", "R8R 4C8", "Anguilla" ], + [ "1592", "Basil", "Elliott", "80065", "Singapore" ], + [ "1593", "Darryl", "Wise", "33140", "Brunei Darussalam" ], + [ "1594", "Marny", "Walls", "S1K 4V1", "Western Sahara" ], + [ "1595", "Anastasia", "Meyer", "Z1F 8C2", "El Salvador" ], + [ "1596", "Brynne", "Rivera", "48070", "Mexico" ], + [ "1597", "Macey", "Johnston", "X9E 9J5", "Guadeloupe" ], + [ "1598", "Bethany", "Marks", "46648", "Bhutan" ], + [ "1599", "Kiayada", "Glass", "13661", "Christmas Island" ], + [ "1600", "Veda", "Bowers", "D7S 1S9", "Korea" ], + [ "1601", "Dante", "Kirk", "58404", "Guinea" ], + [ "1602", "Judah", "Sloan", "04528", "Andorra" ], + [ "1603", "Serena", "Giles", "12139", "Papua New Guinea" ], + [ "1604", "Chase", "Hull", "27203", "Guinea-bissau" ], + [ "1605", "Wallace", "Poole", "58919", "Christmas Island" ], + [ "1606", "Deacon", "Lynn", "Z1H 9G4", "Kenya" ], + [ "1607", "Igor", "Duncan", "X2V 2X1", "Christmas Island" ], + [ "1608", "Walker", "Hopkins", "67256", "Bosnia and Herzegovina" ], + [ "1609", "Serena", "Burnett", "Q4C 7Q0", "Canada" ], + [ "1610", "Hedwig", "Burgess", "O2J 7A5", "Rwanda" ], + [ "1611", "Amal", "Richmond", "34506", "Australia" ], + [ "1612", "Rhona", "Gomez", "W2C 3I7", "Oman" ], + [ "1613", "Kai", "Acosta", "N2O 7M2", "Uganda" ], + [ "1614", "Henry", "Roman", "78113", "Guadeloupe" ], + [ "1615", "Chester", "Good", "88809", "Norway" ], + [ "1616", "Cleo", "Tanner", "73924", "Uganda" ], + [ "1617", "Emi", "Lloyd", "59746", "South Africa" ], + [ "1618", "Christopher", "Lopez", "76264", "Libyan Arab Jamahiriya" ], + [ "1619", "Yvonne", "Mathews", "68655", "Saint Lucia" ], + [ "1620", "Kimberly", "Mullen", "D6J 9G3", "Virgin Islands, British" ], + [ "1621", "Hanna", "Slater", "F8F 9K5", "Montserrat" ], + [ "1622", "Laura", "Dennis", "J6U 2G3", "Viet Nam" ], + [ "1623", "Rogan", "Richards", "R1D 1B3", "Argentina" ], + [ "1624", "Mira", "Rodriquez", "C3D 3E5", "Guinea" ], + [ "1625", "Ezra", "Myers", "Y7Z 7X2", "Kuwait" ], + [ "1626", "Jocelyn", "Martin", "E2F 3F2", "Algeria" ], + [ "1627", "Denton", "Lee", "80903", "Congo" ], + [ "1628", "Grace", "Leach", "86865", "Spain" ], + [ "1629", "Clark", "Morrow", "12834", "Northern Mariana Islands" ], + [ "1630", "Armando", "Calhoun", "I3I 1D4", "Spain" ], + [ "1631", "George", "Decker", "R1B 6Q9", "Mali" ], + [ "1632", "Jerome", "Salazar", "03831", "Faroe Islands" ], + [ "1633", "Logan", "Santiago", "46269", "Hungary" ], + [ "1634", "Gavin", "Tate", "Y3L 6G5", "Italy" ], + [ "1635", "Chloe", "Jennings", "D9B 2H9", "Cambodia" ], + [ "1636", "Rashad", "Knox", "T1V 4G5", "Germany" ], + [ "1637", "Jin", "Roberts", "82928", "Azerbaijan" ], + [ "1638", "Amity", "Guerrero", "F4G 2L4", "Viet Nam" ], + [ "1639", "Carter", "Roberson", "53651", "Niue" ], + [ "1640", "Slade", "Carson", "H9E 1G1", "Guyana" ], + [ "1641", "Buckminster", "Christensen", "F5J 6T5", "Algeria" ], + [ "1642", "Fallon", "Peters", "D9Y 5Q4", "Ethiopia" ], + [ "1643", "Amy", "Barry", "D6F 3R4", "New Caledonia" ], + [ "1644", "Calvin", "Buck", "18354", "Macedonia" ], + [ "1645", "Kaye", "Haynes", "D9K 1X8", "Italy" ], + [ "1646", "Shea", "Hammond", "R7P 3X8", "Guam" ], + [ "1647", "Kiara", "Franks", "01185", "Mozambique" ], + [ "1648", "Armando", "Oneil", "88972", "Bahrain" ], + [ "1649", "Lesley", "Allen", "05171", "Belgium" ], + [ "1650", "Ignatius", "Barrett", "94084", "Georgia" ], + [ "1651", "Graham", "Maldonado", "76354", "Dominican Republic" ], + [ "1652", "Briar", "Roman", "P9M 3A9", "Cayman Islands" ], + [ "1653", "Germane", "Colon", "U3X 7S9", "Brazil" ], + [ "1654", "Alvin", "Mcpherson", "58411", "Guinea" ], + [ "1655", "Belle", "Sandoval", "87172", "Cyprus" ], + [ "1656", "Eric", "Caldwell", "63246", "Guinea" ], + [ "1657", "Nadine", "Dale", "T6E 4B0", "Denmark" ], + [ "1658", "Dora", "Jimenez", "85463", "Nauru" ], + [ "1659", "Mohammad", "Strickland", "H8B 9G2", "Japan" ], + [ "1660", "Reagan", "Preston", "G5E 8S5", "Honduras" ], + [ "1661", "Tamekah", "Daniel", "Z3X 6Q6", "Belarus" ], + [ "1662", "Halee", "Mills", "23332", "Mayotte" ], + [ "1663", "Courtney", "England", "09751", "Saint Kitts and Nevis" ], + [ "1664", "Dai", "Arnold", "A2N 9J4", "Argentina" ], + [ "1665", "Priscilla", "Reyes", "G2B 5M4", "Azerbaijan" ], + [ "1666", "Brenda", "Stanley", "I6O 3I1", "Hungary" ], + [ "1667", "Kasper", "Washington", "H4K 8K7", "Serbia and Montenegro" ], + [ "1668", "Suki", "Hendricks", "L1K 5O9", "Norway" ], + [ "1669", "Rebekah", "Mccormick", "89543", "Slovenia" ], + [ "1670", "Oprah", "Rodriquez", "90034", "Costa Rica" ], + [ "1671", "Ivory", "Matthews", "T9J 2A7", "Panama" ], + [ "1672", "Ferris", "Garner", "93583", "Niue" ], + [ "1673", "Melvin", "White", "X5U 9N8", "Nigeria" ], + [ "1674", "Henry", "Swanson", "E7V 2C9", "Northern Mariana Islands" ], + [ "1675", "Hadassah", "Eaton", "52798", "Albania" ], + [ "1676", "Lisandra", "Sykes", "90838", "Namibia" ], + [ "1677", "Honorato", "Bradshaw", "W3D 1Z9", "United States" ], + [ "1678", "Aurelia", "Paul", "Z6E 6W9", "Malaysia" ], + [ "1679", "Arthur", "Mann", "74673", "Bhutan" ], + [ "1680", "Melissa", "Hernandez", "11742", "Dominican Republic" ], + [ "1681", "Bert", "Mosley", "N2K 5U5", "Kuwait" ], + [ "1682", "Sigourney", "Sharpe", "30204", "South Africa" ], + [ "1683", "Ifeoma", "Woods", "39850", "Haiti" ], + [ "1684", "Tyler", "Medina", "K6L 9V8", "Indonesia" ], + [ "1685", "Karleigh", "Griffin", "G8Z 6W2", "Canada" ], + [ "1686", "Brianna", "Collins", "11919", "New Caledonia" ], + [ "1687", "Allistair", "Hampton", "O1X 2N7", "Cocos (Keeling) Islands" ], + [ "1688", "Carla", "Manning", "76866", "Svalbard and Jan Mayen" ], + [ "1689", "Jakeem", "Brewer", "Y1T 1D7", "Comoros" ], + [ "1690", "Price", "Guerrero", "S7Z 8O1", "Christmas Island" ], + [ "1691", "Harlan", "Sandoval", "58527", "Czech Republic" ], + [ "1692", "Marcia", "Robinson", "64662", "Uganda" ], + [ "1693", "Sylvester", "Hewitt", "81468", "Honduras" ], + [ "1694", "Dawn", "Wood", "77743", "Malawi" ], + [ "1695", "Farrah", "Nielsen", "E4N 9A9", "Christmas Island" ], + [ "1696", "Tanisha", "Benjamin", "L2J 3G7", "Cape Verde" ], + [ "1697", "Cherokee", "Atkins", "L7D 2L5", "Moldova" ], + [ "1698", "Madaline", "Elliott", "H7K 8R4", "Barbados" ], + [ "1699", "Odysseus", "Roy", "65008", "Slovakia" ], + [ "1700", "Eaton", "Stein", "Z2V 7H0", "Moldova" ], + [ "1701", "Rachel", "Hurley", "L6L 2B2", "Antigua and Barbuda" ], + [ "1702", "Stacey", "Hardin", "O9U 1B7", "Montserrat" ], + [ "1703", "Grady", "Montgomery", "75852", "Guinea-bissau" ], + [ "1704", "Serena", "Douglas", "F5M 8Z6", "Mauritius" ], + [ "1705", "Ralph", "Duke", "H7X 3M9", "Tunisia" ], + [ "1706", "Charles", "Moody", "86445", "Pitcairn" ], + [ "1707", "Mariam", "Lara", "07952", "United Kingdom" ], + [ "1708", "Whitney", "Garza", "74001", "Norfolk Island" ], + [ "1709", "Beverly", "Thornton", "69847", "Canada" ], + [ "1710", "Helen", "Gentry", "Z8S 7U4", "Reunion" ], + [ "1711", "Janna", "Gould", "W6C 6E1", "Burundi" ], + [ "1712", "Jana", "Hooper", "A1R 9Y0", "Yemen" ], + [ "1713", "Zachary", "Nicholson", "49616", "Gabon" ], + [ "1714", "Julian", "Davis", "37608", "Anguilla" ], + [ "1715", "Gay", "Knox", "51952", "Croatia" ], + [ "1716", "Iola", "Moses", "16601", "French Polynesia" ], + [ "1717", "Allegra", "Holder", "C9R 8J3", "Dominican Republic" ], + [ "1718", "Cecilia", "Shannon", "62624", "Reunion" ], + [ "1719", "Cora", "Peterson", "I9V 5P5", "Chad" ], + [ "1720", "Stewart", "Mathews", "A5H 1E1", "Mexico" ], + [ "1721", "Kathleen", "Lynn", "82408", "Honduras" ], + [ "1722", "William", "Schneider", "25823", "Tajikistan" ], + [ "1723", "Alice", "Mcconnell", "50155", "Russian Federation" ], + [ "1724", "Timon", "Dillon", "93171", "Croatia" ], + [ "1725", "Tanek", "Ellison", "Y7Q 5B1", "Malawi" ], + [ "1726", "Tamekah", "Cummings", "03764", "Afghanistan" ], + [ "1727", "Charlotte", "Chaney", "U7Y 7B0", "Kyrgyzstan" ], + [ "1728", "Jason", "Conway", "37713", "Martinique" ], + [ "1729", "Graiden", "Combs", "40454", "Turkmenistan" ], + [ "1730", "Virginia", "Ortiz", "K9N 2Q4", "Malta" ], + [ "1731", "Thomas", "Cannon", "W1H 3T9", "Cuba" ], + [ "1732", "Galena", "Dominguez", "68072", "India" ], + [ "1733", "Vaughan", "Petty", "15200", "Lesotho" ], + [ "1734", "Buffy", "Saunders", "K1W 3B1", "Burkina Faso" ], + [ "1735", "Chava", "Hill", "93461", "Iran, Islamic Republic of" ], + [ "1736", "Sage", "Hampton", "R8Y 8J1", "Malta" ], + [ "1737", "Nathaniel", "Whitney", "89097", "Ukraine" ], + [ "1738", "Hector", "Hayden", "70774", "Netherlands" ], + [ "1739", "Mercedes", "Freeman", "80848", "Croatia" ], + [ "1740", "Vance", "Spencer", "25484", "Guyana" ], + [ "1741", "Josephine", "Stevens", "E4D 9D1", "Netherlands Antilles" ], + [ "1742", "Barbara", "Mcclure", "22602", "Cambodia" ], + [ "1743", "Sydney", "Holder", "X4G 1Z7", "British Indian Ocean Territory" ], + [ "1744", "Velma", "Evans", "83914", "New Zealand" ], + [ "1745", "Francis", "Lane", "12545", "Serbia and Montenegro" ], + [ "1746", "Garrison", "Brock", "19993", "Eritrea" ], + [ "1747", "Quentin", "Santiago", "07085", "Norfolk Island" ], + [ "1748", "Ivory", "Wilkerson", "79440", "Libyan Arab Jamahiriya" ], + [ "1749", "Karyn", "Buckner", "D1Y 7D8", "Cocos (Keeling) Islands" ], + [ "1750", "Mari", "Bright", "24721", "Pakistan" ], + [ "1751", "Dexter", "Garrison", "X3X 7G3", "Western Sahara" ], + [ "1752", "Venus", "Acevedo", "V2F 8C0", "Poland" ], + [ "1753", "Nayda", "Camacho", "F6H 6J5", "Northern Mariana Islands" ], + [ "1754", "Avye", "Hartman", "G6V 2H0", "Hong Kong" ], + [ "1755", "Kerry", "Baird", "M3Q 7B7", "Russian Federation" ], + [ "1756", "Uma", "Herman", "C9A 4P3", "Libyan Arab Jamahiriya" ], + [ "1757", "Amaya", "Roman", "97179", "Iceland" ], + [ "1758", "Bruce", "Joyce", "18344", "Denmark" ], + [ "1759", "Jarrod", "Alvarez", "59269", "Liberia" ], + [ "1760", "Olivia", "Reilly", "99058", "Malaysia" ], + [ "1761", "Benedict", "Hensley", "23105", "Uganda" ], + [ "1762", "Lavinia", "Hunter", "44729", "Maldives" ], + [ "1763", "Bradley", "Gomez", "65125", "Belize" ], + [ "1764", "Keely", "Burris", "18390", "Brunei Darussalam" ], + [ "1765", "Autumn", "England", "E5D 7A5", "Kyrgyzstan" ], + [ "1766", "Jane", "Blair", "S1W 4O0", "Bangladesh" ], + [ "1767", "Chancellor", "Barrett", "E9F 1I1", "Fiji" ], + [ "1768", "Whitney", "Morin", "G5T 4E7", "Aruba" ], + [ "1769", "Madeline", "Sparks", "W7L 7E0", "Belize" ], + [ "1770", "Dale", "Estes", "82712", "Guam" ], + [ "1771", "Hakeem", "Buck", "O6K 1I8", "Singapore" ], + [ "1772", "Alexandra", "Burns", "12697", "Portugal" ], + [ "1773", "Winifred", "Gill", "Z8B 8B8", "Uruguay" ], + [ "1774", "Gail", "Gomez", "S1V 3N8", "American Samoa" ], + [ "1775", "Moana", "Brady", "18835", "Wallis and Futuna" ], + [ "1776", "Martha", "Oliver", "81962", "Bolivia" ], + [ "1777", "Nayda", "Wooten", "00071", "Palau" ], + [ "1778", "Bryar", "Collier", "50631", "Mexico" ], + [ "1779", "Penelope", "Bradshaw", "A6A 9M2", "Lebanon" ], + [ "1780", "Wyatt", "Lara", "75486", "Slovenia" ], + [ "1781", "Wang", "Odonnell", "N5X 1N5", "Bahamas" ], + [ "1782", "Chiquita", "Harrell", "21691", "Guadeloupe" ], + [ "1783", "Byron", "Blankenship", "M8A 3L4", "Syrian Arab Republic" ], + [ "1784", "Holmes", "Stokes", "81039", "Mauritania" ], + [ "1785", "Naomi", "Phillips", "56287", "Switzerland" ], + [ "1786", "Quyn", "Johnson", "D2T 6B7", "Czech Republic" ], + [ "1787", "Gillian", "Sanders", "50542", "Colombia" ], + [ "1788", "Hope", "Benjamin", "67423", "Bolivia" ], + [ "1789", "Bryar", "Dean", "U9V 9E5", "Guatemala" ], + [ "1790", "Karyn", "Swanson", "S6H 3R8", "Israel" ], + [ "1791", "Amena", "David", "02286", "French Polynesia" ], + [ "1792", "Ira", "Joyner", "37335", "Cayman Islands" ], + [ "1793", "Tanek", "Oneil", "75041", "Slovenia" ], + [ "1794", "Dolan", "Miles", "K7Q 9U8", "Maldives" ], + [ "1795", "Wang", "Keith", "88116", "Congo" ], + [ "1796", "Wylie", "Bryant", "93369", "Andorra" ], + [ "1797", "Heather", "Bryant", "78015", "French Polynesia" ], + [ "1798", "Regina", "Wagner", "29087", "Virgin Islands, British" ], + [ "1799", "Nathan", "Bush", "J5S 9L0", "Viet Nam" ], + [ "1800", "Charity", "Dawson", "29508", "Greece" ], + [ "1801", "Ulric", "Guzman", "I6R 6P6", "Micronesia" ], + [ "1802", "Keefe", "Scott", "J1R 8T6", "Uzbekistan" ], + [ "1803", "Florence", "Price", "U7P 8F6", "Taiwan, Province of China" ], + [ "1804", "Griffith", "England", "92557", "China" ], + [ "1805", "Kay", "Nielsen", "85991", "Suriname" ], + [ "1806", "Tamekah", "Blackburn", "47324", "Panama" ], + [ "1807", "Indira", "Crosby", "64463", "Trinidad and Tobago" ], + [ "1808", "Pamela", "Vasquez", "K2Q 9A1", "Ghana" ], + [ "1809", "Patricia", "Haley", "51509", "Jordan" ], + [ "1810", "Nevada", "Prince", "41315", "Tokelau" ], + [ "1811", "Martin", "Wilkerson", "Y8X 4Y5", "Palestinian Territory, Occupied" ], + [ "1812", "Deirdre", "Castaneda", "X1S 5E2", "Bahrain" ], + [ "1813", "Cara", "Flynn", "68372", "Azerbaijan" ], + [ "1814", "Sylvia", "Alexander", "E5F 9M5", "Svalbard and Jan Mayen" ], + [ "1815", "Macon", "Suarez", "69866", "Tunisia" ], + [ "1816", "Hammett", "Haney", "09768", "Bangladesh" ], + [ "1817", "Geoffrey", "Simmons", "61986", "Burundi" ], + [ "1818", "Danielle", "Kelly", "71568", "Mali" ], + [ "1819", "Wing", "Brown", "U4D 6L1", "Uzbekistan" ], + [ "1820", "Len", "Barber", "40311", "Suriname" ], + [ "1821", "Richard", "Wilson", "W9E 6D7", "Finland" ], + [ "1822", "Keaton", "Hayes", "55696", "Slovakia" ], + [ "1823", "Dora", "Chaney", "57297", "United States Minor Outlying Islands" ], + [ "1824", "Alexandra", "Pruitt", "17207", "Turkmenistan" ], + [ "1825", "Deanna", "Gomez", "C9M 9K0", "Paraguay" ], + [ "1826", "Laura", "Downs", "74422", "Antigua and Barbuda" ], + [ "1827", "Jolene", "Lucas", "K9E 6U4", "Tokelau" ], + [ "1828", "Lucy", "Marquez", "L1N 4O4", "Argentina" ], + [ "1829", "Abbot", "Bishop", "G8W 7I1", "Guinea-bissau" ], + [ "1830", "Aaron", "Bowman", "K8A 5K7", "Greece" ], + [ "1831", "Candace", "Lee", "58901", "Turks and Caicos Islands" ], + [ "1832", "Larissa", "Allen", "O1I 4X0", "Belgium" ], + [ "1833", "Linda", "Malone", "31211", "United Arab Emirates" ], + [ "1834", "Grace", "Daugherty", "62610", "Cyprus" ], + [ "1835", "Kyra", "Berry", "T2F 3E5", "Netherlands Antilles" ], + [ "1836", "Hadassah", "Willis", "C7H 5V4", "El Salvador" ], + [ "1837", "Kyle", "Fitzgerald", "X1V 2R9", "Croatia" ], + [ "1838", "Graiden", "Atkinson", "L9Q 6H8", "Thailand" ], + [ "1839", "Raymond", "Fletcher", "59574", "Argentina" ], + [ "1840", "Keaton", "Barnett", "O2G 6B4", "Papua New Guinea" ], + [ "1841", "Farrah", "Kramer", "21928", "Netherlands Antilles" ], + [ "1842", "Christian", "Sellers", "55504", "Timor-leste" ], + [ "1843", "Keith", "Cohen", "D9T 7D0", "Italy" ], + [ "1844", "Karleigh", "Bruce", "F2A 5H9", "Montserrat" ], + [ "1845", "Julie", "Avery", "T4T 3Y7", "Nepal" ], + [ "1846", "Hollee", "Deleon", "47524", "Oman" ], + [ "1847", "Charity", "Booker", "61071", "Cocos (Keeling) Islands" ], + [ "1848", "Flynn", "Bond", "E8L 9D2", "Afghanistan" ], + [ "1849", "Sybill", "Roth", "16453", "Saudi Arabia" ], + [ "1850", "Alyssa", "Juarez", "04466", "Singapore" ], + [ "1851", "Jennifer", "Odonnell", "59277", "Tuvalu" ], + [ "1852", "Carissa", "Byrd", "80861", "Palau" ], + [ "1853", "Coby", "Barrett", "04665", "Congo" ], + [ "1854", "Bertha", "Paul", "46442", "Andorra" ], + [ "1855", "Hayden", "Dennis", "K7E 3O1", "France" ], + [ "1856", "Kadeem", "Berry", "39544", "Vanuatu" ], + [ "1857", "Clayton", "Burns", "C2A 6W5", "Andorra" ], + [ "1858", "Breanna", "Hardy", "12284", "Norway" ], + [ "1859", "Yael", "Hester", "69399", "Hong Kong" ], + [ "1860", "Hunter", "Harding", "M4O 6N5", "Bosnia and Herzegovina" ], + [ "1861", "Breanna", "Sutton", "N2C 6K3", "Singapore" ], + [ "1862", "Bo", "Huffman", "54558", "Taiwan, Province of China" ], + [ "1863", "Zena", "Potts", "80326", "Czech Republic" ], + [ "1864", "Lucian", "Sykes", "D4M 6M5", "Trinidad and Tobago" ], + [ "1865", "Gabriel", "Shepherd", "77631", "Bahrain" ], + [ "1866", "Vivian", "Gould", "29510", "Norway" ], + [ "1867", "Ina", "Sherman", "08122", "Portugal" ], + [ "1868", "Constance", "Parsons", "D6E 9J8", "Armenia" ], + [ "1869", "Tallulah", "Woodard", "51380", "Bahamas" ], + [ "1870", "Amos", "Morris", "37846", "Switzerland" ], + [ "1871", "Charles", "Kinney", "45961", "Marshall Islands" ], + [ "1872", "Colby", "Camacho", "02978", "Niger" ], + [ "1873", "Ora", "Hays", "B6F 9Z9", "Martinique" ], + [ "1874", "Ariel", "Cannon", "04559", "Burundi" ], + [ "1875", "Beatrice", "Hull", "66569", "Saint Pierre and Miquelon" ], + [ "1876", "Stacey", "Morrow", "53760", "Zimbabwe" ], + [ "1877", "Naida", "Thomas", "43434", "Virgin Islands, U.S." ], + [ "1878", "Holly", "Holcomb", "31997", "Kazakhstan" ], + [ "1879", "Lee", "Davenport", "99355", "Central African Republic" ], + [ "1880", "Gary", "Higgins", "18703", "Norway" ], + [ "1881", "Kay", "Wolf", "25509", "Switzerland" ], + [ "1882", "Destiny", "Patel", "Q3X 2F8", "Ghana" ], + [ "1883", "Clayton", "Middleton", "Y5C 1I8", "Antigua and Barbuda" ], + [ "1884", "May", "Rivers", "26782", "Uzbekistan" ], + [ "1885", "Hadassah", "Caldwell", "64493", "Chile" ], + [ "1886", "Penelope", "Gentry", "V5N 7A6", "Kyrgyzstan" ], + [ "1887", "James", "Boyle", "95421", "Indonesia" ], + [ "1888", "Yuli", "Cardenas", "W4U 5U1", "Solomon Islands" ], + [ "1889", "George", "Simpson", "30385", "Brazil" ], + [ "1890", "Thaddeus", "Ferrell", "E6Z 2D4", "Norfolk Island" ], + [ "1891", "Piper", "Morrow", "S6I 1L8", "Estonia" ], + [ "1892", "Xaviera", "Heath", "L8I 5G1", "Afghanistan" ], + [ "1893", "Odette", "Patton", "L2S 4I8", "Bosnia and Herzegovina" ], + [ "1894", "Stewart", "Phillips", "E8E 5W6", "El Salvador" ], + [ "1895", "Kellie", "Cooper", "77401", "Cape Verde" ], + [ "1896", "Kathleen", "Salinas", "F3O 4Z9", "Sierra Leone" ], + [ "1897", "Fallon", "Bennett", "X3P 7L1", "Macedonia" ], + [ "1898", "Jesse", "Guerrero", "I2B 1Q0", "Finland" ], + [ "1899", "Zenaida", "Mcguire", "M5R 1X6", "Kenya" ], + [ "1900", "Carolyn", "Richards", "03060", "Paraguay" ], + [ "1901", "Ulla", "Bruce", "20940", "Cambodia" ], + [ "1902", "Adrian", "Shaffer", "M5O 9Y2", "Thailand" ], + [ "1903", "Callum", "Russo", "L3U 5S8", "Holy See (Vatican City State)" ], + [ "1904", "Echo", "Mathews", "49158", "Spain" ], + [ "1905", "Driscoll", "Buckner", "70115", "Solomon Islands" ], + [ "1906", "Nayda", "Phillips", "Y7D 4A9", "Singapore" ], + [ "1907", "Piper", "Livingston", "51701", "Anguilla" ], + [ "1908", "Zoe", "Hoover", "C8D 8W2", "Iraq" ], + [ "1909", "Veronica", "Montoya", "G6B 9S4", "Egypt" ], + [ "1910", "Kato", "Richmond", "41268", "Saint Helena" ], + [ "1911", "Kevyn", "Lancaster", "71863", "Montserrat" ], + [ "1912", "Rowan", "Carr", "90825", "Ethiopia" ], + [ "1913", "Alec", "Wells", "C9P 8I7", "Netherlands" ], + [ "1914", "Graham", "Shields", "S4B 5O9", "Norfolk Island" ], + [ "1915", "Pearl", "Austin", "43642", "Bermuda" ], + [ "1916", "Dana", "Pugh", "H4C 2A9", "Tuvalu" ], + [ "1917", "Lucy", "Ellis", "31272", "Cameroon" ], + [ "1918", "Logan", "Wright", "18651", "Honduras" ], + [ "1919", "Chantale", "Velasquez", "A5D 3X2", "Burundi" ], + [ "1920", "Linda", "Ingram", "R1P 1G8", "Myanmar" ], + [ "1921", "Ginger", "Howell", "Q5D 4E6", "Pakistan" ], + [ "1922", "Unity", "Lester", "P7M 7A4", "Gibraltar" ], + [ "1923", "Brett", "Rutledge", "Q1E 2B4", "Thailand" ], + [ "1924", "Stewart", "Morrow", "84299", "Mali" ], + [ "1925", "Declan", "Aguilar", "35400", "Kenya" ], + [ "1926", "Shad", "Simpson", "N8E 2U3", "Saint Pierre and Miquelon" ], + [ "1927", "Alma", "Benton", "Q6C 5D2", "Pakistan" ], + [ "1928", "Herman", "Bailey", "P5K 2X4", "Ireland" ], + [ "1929", "Keegan", "Mendez", "19421", "Lesotho" ], + [ "1930", "Erasmus", "Foreman", "J9T 1A2", "Panama" ], + [ "1931", "Tarik", "Meyers", "Z8V 5F9", "Cape Verde" ], + [ "1932", "Donovan", "Knox", "B8N 1G7", "Iceland" ], + [ "1933", "Chloe", "Mccray", "67537", "United Arab Emirates" ], + [ "1934", "Marvin", "Edwards", "21809", "Ukraine" ], + [ "1935", "Freya", "Watkins", "80099", "Central African Republic" ], + [ "1936", "Jerry", "Morgan", "C7U 7H5", "Guinea" ], + [ "1937", "Yardley", "Marsh", "23654", "India" ], + [ "1938", "Ava", "Mueller", "83374", "Greece" ], + [ "1939", "Silas", "Joseph", "P5M 7F2", "Sweden" ], + [ "1940", "Winifred", "Solis", "12335", "Viet Nam" ], + [ "1941", "Virginia", "Cantu", "K4C 3S5", "Yemen" ], + [ "1942", "Sade", "Cole", "40295", "Spain" ], + [ "1943", "Ethan", "Hodges", "R7W 8X2", "Congo" ], + [ "1944", "Barbara", "Day", "K6L 7S6", "Nigeria" ], + [ "1945", "Conan", "Simon", "22124", "Guyana" ], + [ "1946", "Lars", "Puckett", "R6Y 4N7", "Trinidad and Tobago" ], + [ "1947", "Quin", "Ewing", "99053", "American Samoa" ], + [ "1948", "Ali", "Haynes", "N6Z 7X0", "China" ], + [ "1949", "Sara", "Wagner", "74544", "Chad" ], + [ "1950", "Griffith", "Fuentes", "R1W 6Z9", "Slovenia" ], + [ "1951", "Sharon", "Crane", "I2Z 9D6", "Philippines" ], + [ "1952", "Marsden", "Acosta", "K6C 8C5", "Jordan" ], + [ "1953", "Whoopi", "Villarreal", "E2O 1T5", "Svalbard and Jan Mayen" ], + [ "1954", "Bruno", "Ball", "31931", "Barbados" ], + [ "1955", "Ulric", "Young", "T4R 3M5", "Solomon Islands" ], + [ "1956", "Noah", "Gonzalez", "L3O 6V5", "Mayotte" ], + [ "1957", "Cheryl", "Gilliam", "F4Q 4H9", "Albania" ], + [ "1958", "Bo", "Rowe", "67020", "Jamaica" ], + [ "1959", "Kelly", "Alexander", "P8Y 9K5", "Somalia" ], + [ "1960", "Hop", "Navarro", "O1G 9R6", "Cayman Islands" ], + [ "1961", "Zachery", "Howard", "67147", "Fiji" ], + [ "1962", "Elvis", "Daugherty", "X8V 7S7", "Jordan" ], + [ "1963", "Mallory", "Hensley", "A5S 1U6", "Swaziland" ], + [ "1964", "Fulton", "Williams", "P4C 4O5", "Viet Nam" ], + [ "1965", "Madison", "Pittman", "F8G 1P9", "Chile" ], + [ "1966", "Kermit", "Bradford", "W2T 6I5", "Uganda" ], + [ "1967", "Gabriel", "Ballard", "N5M 6W0", "Andorra" ], + [ "1968", "Jasmine", "Barber", "M2Z 7G5", "French Guiana" ], + [ "1969", "Thane", "Koch", "21097", "Armenia" ], + [ "1970", "Montana", "Oneal", "L2A 9Q6", "South Africa" ], + [ "1971", "Brett", "Coleman", "79399", "Luxembourg" ], + [ "1972", "Ivy", "Jimenez", "28549", "Senegal" ], + [ "1973", "Shad", "Melton", "Z8N 4Z5", "Cook Islands" ], + [ "1974", "Suki", "Vance", "H1A 1Z3", "Ireland" ], + [ "1975", "Jin", "Hodges", "L2I 3T8", "France" ], + [ "1976", "Diana", "Booth", "M3V 1S8", "Iran, Islamic Republic of" ], + [ "1977", "Martha", "Nunez", "27837", "Northern Mariana Islands" ], + [ "1978", "Silas", "Ayers", "17121", "United States" ], + [ "1979", "Ainsley", "Whitaker", "42695", "Dominica" ], + [ "1980", "Dillon", "Tucker", "N3R 3P3", "Botswana" ], + [ "1981", "Lillian", "West", "57665", "Palau" ], + [ "1982", "Talon", "Hart", "Z6T 4W3", "Serbia and Montenegro" ], + [ "1983", "Desiree", "Booth", "Q1W 9S1", "Gambia" ], + [ "1984", "Chastity", "Merrill", "F3B 9W7", "Puerto Rico" ], + [ "1985", "Nichole", "Leon", "T7V 5D6", "Belize" ], + [ "1986", "Rafael", "Washington", "87676", "Eritrea" ], + [ "1987", "Samson", "Mathews", "G7Q 5V6", "Burkina Faso" ], + [ "1988", "Jasper", "Campbell", "23791", "Thailand" ], + [ "1989", "Mason", "Harrington", "R9R 5S3", "Nigeria" ], + [ "1990", "Jameson", "Frederick", "R1N 4S0", "Guyana" ], + [ "1991", "Cadman", "Woodard", "43080", "Gambia" ], + [ "1992", "Catherine", "Gill", "W4W 8A4", "Philippines" ], + [ "1993", "Yael", "Richards", "99504", "Kenya" ], + [ "1994", "Porter", "Finley", "C8Z 5E0", "Brunei Darussalam" ], + [ "1995", "Alden", "Merritt", "P4E 9F0", "Mali" ], + [ "1996", "Kaye", "Andrews", "I5I 3A4", "Cayman Islands" ], + [ "1997", "Luke", "Bryant", "F3Z 2U1", "Kuwait" ], + [ "1998", "Heather", "Blackburn", "L1T 6B9", "Mongolia" ], + [ "1999", "Gage", "Sykes", "L9Q 7E6", "Palestinian Territory, Occupied" ], + [ "2000", "Kaseem", "Harris", "B9O 1C3", "Korea" ], + [ "2001", "Quail", "Leonard", "88755", "Burkina Faso" ], + [ "2002", "Dennis", "Craft", "13309", "Namibia" ], + [ "2003", "Ivor", "Forbes", "C3P 2E1", "Malta" ], + [ "2004", "Cade", "Herman", "R1E 5X9", "Sri Lanka" ], + [ "2005", "Larissa", "Santiago", "57781", "Dominica" ], + [ "2006", "Hyatt", "Tillman", "45071", "Ghana" ], + [ "2007", "Timothy", "Rodgers", "F8W 9W0", "Andorra" ], + [ "2008", "Hanae", "Powell", "F8B 7P7", "Luxembourg" ], + [ "2009", "Ima", "Pennington", "Z5W 5N5", "Latvia" ], + [ "2010", "Laurel", "Bell", "16805", "Venezuela" ], + [ "2011", "Avye", "Long", "04794", "Dominica" ], + [ "2012", "Lysandra", "Pierce", "H7O 3F4", "Zimbabwe" ], + [ "2013", "Eve", "Pollard", "L5K 6E2", "Algeria" ], + [ "2014", "Ina", "Mcdowell", "65712", "Saint Lucia" ], + [ "2015", "Meredith", "Serrano", "V8M 6K7", "Libyan Arab Jamahiriya" ], + [ "2016", "Daphne", "Irwin", "89933", "Mongolia" ], + [ "2017", "Adam", "Henson", "F6U 9D5", "Chile" ], + [ "2018", "Amery", "Hoover", "13408", "Mongolia" ], + [ "2019", "Quamar", "Hendricks", "20310", "Gambia" ], + [ "2020", "Ori", "Wheeler", "89005", "Nigeria" ], + [ "2021", "Zena", "Douglas", "Z1O 6F9", "Serbia and Montenegro" ], + [ "2022", "Buckminster", "Huffman", "R4V 9L2", "Mali" ], + [ "2023", "Harlan", "Gamble", "U4I 7M4", "Guyana" ], + [ "2024", "Dalton", "Cline", "63829", "Tonga" ], + [ "2025", "Martha", "Weber", "Z9B 4T0", "Bangladesh" ], + [ "2026", "Vernon", "Francis", "M5A 9X7", "Tokelau" ], + [ "2027", "Janna", "Velazquez", "67406", "Qatar" ], + [ "2028", "Fuller", "Keller", "80871", "Burkina Faso" ], + [ "2029", "Jamal", "Spears", "42197", "Norfolk Island" ], + [ "2030", "Christen", "Holcomb", "29806", "Norway" ], + [ "2031", "Mary", "Carter", "C6W 9K9", "Belgium" ], + [ "2032", "Colorado", "Austin", "62904", "Cook Islands" ], + [ "2033", "Fritz", "Hunt", "X8G 2V0", "Morocco" ], + [ "2034", "Isabella", "Bush", "17676", "Monaco" ], + [ "2035", "Adam", "Gilliam", "H7K 9X3", "Indonesia" ], + [ "2036", "John", "Austin", "O7X 4Z0", "Czech Republic" ], + [ "2037", "Cassady", "Yates", "68835", "Christmas Island" ], + [ "2038", "Ori", "Cantrell", "56920", "Guinea" ], + [ "2039", "May", "Horn", "47805", "Kuwait" ], + [ "2040", "Skyler", "Clarke", "64131", "Lebanon" ], + [ "2041", "Levi", "Foster", "S5Q 4B2", "Germany" ], + [ "2042", "Veda", "Wilkinson", "L7Z 9M8", "Niger" ], + [ "2043", "Brendan", "Levine", "L5B 9P4", "Nepal" ], + [ "2044", "Carson", "Sullivan", "93066", "United Arab Emirates" ], + [ "2045", "Steven", "Spencer", "F1V 9A7", "Pitcairn" ], + [ "2046", "Halla", "Michael", "N1U 1E7", "Seychelles" ], + [ "2047", "Jamal", "Hobbs", "G3D 6J7", "New Caledonia" ], + [ "2048", "Steel", "Bush", "U8F 6T2", "Belize" ], + [ "2049", "Ahmed", "Dennis", "M6E 3P3", "Afghanistan" ], + [ "2050", "Aspen", "Estes", "32157", "American Samoa" ], + [ "2051", "Peter", "Kelly", "91773", "Morocco" ], + [ "2052", "Xandra", "Grimes", "66702", "Tokelau" ], + [ "2053", "Michael", "Battle", "J2J 2N5", "Honduras" ], + [ "2054", "Steel", "Wiggins", "34625", "United States Minor Outlying Islands" ], + [ "2055", "Holmes", "Christian", "45402", "Liechtenstein" ], + [ "2056", "Charles", "Barrett", "O4N 9N8", "Lebanon" ], + [ "2057", "Hermione", "Soto", "C8E 4H8", "Congo" ], + [ "2058", "Elton", "Maxwell", "89033", "Madagascar" ], + [ "2059", "Zelda", "Burks", "B7W 5G7", "Sweden" ], + [ "2060", "Lynn", "David", "P3D 5K5", "Chad" ], + [ "2061", "Margaret", "Neal", "47438", "Western Sahara" ], + [ "2062", "David", "Vaughan", "E3L 8D9", "Tokelau" ], + [ "2063", "Vladimir", "Mcfarland", "U9V 1B3", "Belgium" ], + [ "2064", "Uriah", "Harrington", "77051", "United Arab Emirates" ], + [ "2065", "Noel", "Merritt", "J3G 7S1", "Dominican Republic" ], + [ "2066", "Christine", "Key", "54543", "Niger" ], + [ "2067", "Illana", "Hendricks", "07584", "Montserrat" ], + [ "2068", "Pearl", "Lewis", "U5D 2V3", "Libyan Arab Jamahiriya" ], + [ "2069", "Victoria", "Bullock", "17462", "Mauritania" ], + [ "2070", "Benedict", "Marsh", "61479", "Guyana" ], + [ "2071", "Quemby", "Washington", "99774", "French Polynesia" ], + [ "2072", "Shelley", "Noble", "U8S 5Z4", "Philippines" ], + [ "2073", "Olivia", "Britt", "72344", "Holy See (Vatican City State)" ], + [ "2074", "Oleg", "Hendrix", "67567", "Cuba" ], + [ "2075", "Hermione", "Gutierrez", "J5K 2J1", "Mozambique" ], + [ "2076", "Myra", "Dean", "03485", "Andorra" ], + [ "2077", "Deacon", "Moore", "34501", "Tunisia" ], + [ "2078", "Dai", "Baird", "B2P 4R0", "Cambodia" ], + [ "2079", "Levi", "Melton", "K7T 4B1", "Zimbabwe" ], + [ "2080", "Ocean", "Dalton", "66801", "Gabon" ], + [ "2081", "Selma", "Harding", "D7N 3J9", "Kyrgyzstan" ], + [ "2082", "Maisie", "Gill", "56324", "Morocco" ], + [ "2083", "Hillary", "Horne", "Y6O 6G3", "Cyprus" ], + [ "2084", "Joel", "Stokes", "77952", "Burundi" ], + [ "2085", "Channing", "Patterson", "G6B 8H4", "China" ], + [ "2086", "Elliott", "Cleveland", "H3J 9U9", "Namibia" ], + [ "2087", "Petra", "Gay", "44314", "Palestinian Territory, Occupied" ], + [ "2088", "May", "Hatfield", "48918", "Faroe Islands" ], + [ "2089", "Jemima", "Francis", "14347", "Libyan Arab Jamahiriya" ], + [ "2090", "Kyla", "Hale", "46200", "Cocos (Keeling) Islands" ], + [ "2091", "Veda", "Bruce", "F5W 9A6", "Mauritania" ], + [ "2092", "Sybill", "Avila", "58663", "Angola" ], + [ "2093", "Charissa", "Salazar", "35271", "Faroe Islands" ], + [ "2094", "Steven", "Allison", "E5L 4A3", "Wallis and Futuna" ], + [ "2095", "Kane", "Parks", "D5C 6K7", "Norfolk Island" ], + [ "2096", "Alika", "Bishop", "S3P 3O3", "China" ], + [ "2097", "James", "Bonner", "33277", "Canada" ], + [ "2098", "Yoko", "Foster", "B5J 6P9", "Croatia" ], + [ "2099", "Ivy", "Riggs", "94420", "Kiribati" ], + [ "2100", "Urielle", "Rosa", "V6W 2A0", "Falkland Islands (Malvinas)" ], + [ "2101", "Armando", "Shepherd", "Y5C 5W6", "Panama" ], + [ "2102", "Haley", "Ingram", "B4H 5U5", "Fiji" ], + [ "2103", "Brielle", "Dyer", "P2S 4H7", "Malawi" ], + [ "2104", "Francis", "Brady", "24239", "Uruguay" ], + [ "2105", "Fiona", "Webster", "72015", "Belize" ], + [ "2106", "Aiko", "Santos", "K4H 1N0", "Saint Vincent and The Grenadines" ], + [ "2107", "Amir", "Rivas", "02737", "Papua New Guinea" ], + [ "2108", "Mira", "Kerr", "W6E 6Y2", "Sri Lanka" ], + [ "2109", "Harrison", "Jensen", "50193", "Heard Island and Mcdonald Islands" ], + [ "2110", "Merrill", "Randall", "21534", "Colombia" ], + [ "2111", "Benjamin", "Howe", "N8M 4N6", "Turkmenistan" ], + [ "2112", "Melyssa", "Kidd", "97657", "Cameroon" ], + [ "2113", "Henry", "Moore", "95626", "Botswana" ], + [ "2114", "Nash", "Peters", "K3V 9F3", "Wallis and Futuna" ], + [ "2115", "Iliana", "Holt", "E9F 2Q8", "Netherlands Antilles" ], + [ "2116", "Naomi", "Hood", "P6D 2G3", "Anguilla" ], + [ "2117", "Ainsley", "Barron", "94273", "New Caledonia" ], + [ "2118", "Daphne", "Acevedo", "A9I 9E4", "Bermuda" ], + [ "2119", "Kiona", "Keith", "62523", "Saint Lucia" ], + [ "2120", "Kirsten", "Mcgee", "97481", "Macedonia" ], + [ "2121", "Emerald", "Franklin", "Q2I 6D6", "Botswana" ], + [ "2122", "Hall", "Schroeder", "I2D 9L7", "Kenya" ], + [ "2123", "Amaya", "Lynch", "50534", "Costa Rica" ], + [ "2124", "Randall", "Hanson", "B4R 2S3", "United Arab Emirates" ], + [ "2125", "Sasha", "Clarke", "50972", "United States Minor Outlying Islands" ], + [ "2126", "Susan", "Sutton", "Z4T 6K3", "Solomon Islands" ], + [ "2127", "Hiram", "Torres", "C8O 5O7", "Botswana" ], + [ "2128", "Melanie", "Calhoun", "87097", "New Zealand" ], + [ "2129", "Courtney", "Sutton", "07944", "Spain" ], + [ "2130", "Reuben", "Beard", "U6Z 8N5", "Faroe Islands" ], + [ "2131", "Jarrod", "Payne", "94171", "Turkey" ], + [ "2132", "Vincent", "Potts", "V5Z 9G9", "Madagascar" ], + [ "2133", "Kaye", "Kent", "O1B 2Z9", "Fiji" ], + [ "2134", "Carol", "Green", "78719", "Comoros" ], + [ "2135", "Cairo", "Combs", "G3C 8F0", "Indonesia" ], + [ "2136", "Ebony", "Parker", "77377", "Portugal" ], + [ "2137", "Gary", "Shaffer", "F1B 9W7", "French Guiana" ], + [ "2138", "Gay", "Jimenez", "05726", "Nepal" ], + [ "2139", "Patience", "Bryan", "60437", "Macao" ], + [ "2140", "Zenaida", "Bowen", "V3S 1G7", "Mauritania" ], + [ "2141", "Isaac", "Aguirre", "X8S 9K4", "Bermuda" ], + [ "2142", "Lacy", "Harrell", "67362", "Bhutan" ], + [ "2143", "Jael", "Grimes", "95612", "Anguilla" ], + [ "2144", "Catherine", "Galloway", "45834", "Suriname" ], + [ "2145", "Donna", "Burt", "N8C 2M8", "Burkina Faso" ], + [ "2146", "Colleen", "Ball", "N3E 4U8", "Libyan Arab Jamahiriya" ], + [ "2147", "Lael", "Brady", "01369", "Macedonia" ], + [ "2148", "Kermit", "Logan", "Y5P 8Q8", "Honduras" ], + [ "2149", "Katelyn", "Orr", "R7X 9W3", "Switzerland" ], + [ "2150", "Alisa", "Glenn", "17831", "Timor-leste" ], + [ "2151", "Lee", "Bean", "89445", "Guam" ], + [ "2152", "Maryam", "Cotton", "57924", "Gambia" ], + [ "2153", "Amena", "Love", "X1Z 6F7", "Thailand" ], + [ "2154", "Tallulah", "Case", "87477", "Ecuador" ], + [ "2155", "Carlos", "Sanford", "F6S 8J6", "Iraq" ], + [ "2156", "Quamar", "David", "D5F 2M8", "Gabon" ], + [ "2157", "Cassady", "Mays", "12786", "Netherlands" ], + [ "2158", "Jenna", "Rowland", "88845", "China" ], + [ "2159", "Justin", "Tanner", "66071", "Nepal" ], + [ "2160", "Riley", "Santiago", "F8K 2Y6", "Gabon" ], + [ "2161", "Iris", "Gallegos", "K9C 3T9", "Niue" ], + [ "2162", "Kato", "Osborn", "N4C 2L8", "Puerto Rico" ], + [ "2163", "Imogene", "Schroeder", "79710", "United States Minor Outlying Islands" ], + [ "2164", "Olympia", "Hebert", "D4W 1L0", "Saint Lucia" ], + [ "2165", "Skyler", "Burnett", "B2R 5H7", "Antarctica" ], + [ "2166", "Faith", "Sims", "88476", "Egypt" ], + [ "2167", "Emily", "Odom", "U7O 2P6", "Kuwait" ], + [ "2168", "Carly", "Washington", "46063", "Benin" ], + [ "2169", "Jolene", "Meyer", "B2B 9A4", "Australia" ], + [ "2170", "Ayanna", "Conrad", "84360", "Northern Mariana Islands" ], + [ "2171", "Violet", "Blankenship", "W2B 3U1", "New Caledonia" ], + [ "2172", "Rhona", "Gallegos", "10931", "Montserrat" ], + [ "2173", "Alice", "Hodges", "96181", "Burkina Faso" ], + [ "2174", "Brody", "Sandoval", "68959", "Pitcairn" ], + [ "2175", "Isabella", "Dunlap", "U8U 7Y8", "Afghanistan" ], + [ "2176", "Jordan", "Golden", "55152", "Guam" ], + [ "2177", "Gillian", "Thomas", "75633", "Djibouti" ], + [ "2178", "Hollee", "Clay", "79847", "Panama" ], + [ "2179", "Dane", "Knapp", "89535", "Armenia" ], + [ "2180", "Avram", "Martin", "T4S 4E2", "Madagascar" ], + [ "2181", "Fuller", "Newman", "47317", "Jamaica" ], + [ "2182", "Nina", "Berry", "81360", "Mongolia" ], + [ "2183", "Akeem", "Pratt", "56230", "Colombia" ], + [ "2184", "Lacy", "Hayes", "U7T 4F5", "Cyprus" ], + [ "2185", "Alfonso", "Mcclure", "06797", "Swaziland" ], + [ "2186", "Cedric", "Love", "64720", "Bermuda" ], + [ "2187", "Astra", "Fernandez", "H3I 1B0", "Mongolia" ], + [ "2188", "Iliana", "Durham", "R8C 7M8", "Spain" ], + [ "2189", "Gwendolyn", "Livingston", "C7X 5L1", "Northern Mariana Islands" ], + [ "2190", "Caldwell", "Anderson", "69099", "Kuwait" ], + [ "2191", "Risa", "Mejia", "P7A 4U7", "Israel" ], + [ "2192", "Dora", "Navarro", "L6G 2O8", "Ireland" ], + [ "2193", "Kirk", "Dean", "I2T 3E6", "Pitcairn" ], + [ "2194", "Jackson", "Harvey", "53467", "Myanmar" ], + [ "2195", "Thane", "Ballard", "87240", "Solomon Islands" ], + [ "2196", "Nadine", "Estes", "62003", "Malta" ], + [ "2197", "Candace", "Nunez", "57223", "Virgin Islands, British" ], + [ "2198", "Zelda", "Odom", "X4V 7F5", "Mongolia" ], + [ "2199", "Wylie", "Ayala", "S4I 4Q4", "Djibouti" ], + [ "2200", "Azalia", "Page", "57239", "Korea, Republic of" ], + [ "2201", "Joshua", "Burch", "R7B 1N7", "Samoa" ], + [ "2202", "Basil", "Ramos", "71614", "Tunisia" ], + [ "2203", "Jessica", "Shields", "U2D 4X3", "Syrian Arab Republic" ], + [ "2204", "Clio", "Singleton", "I1B 1B0", "Ghana" ], + [ "2205", "Astra", "Dotson", "62378", "Turks and Caicos Islands" ], + [ "2206", "Hamish", "Tucker", "E4Z 3N3", "Anguilla" ], + [ "2207", "Rachel", "Matthews", "U4I 8M3", "Trinidad and Tobago" ], + [ "2208", "Clayton", "Ball", "95319", "India" ], + [ "2209", "Quinn", "Wilkinson", "Y6M 3Q7", "Virgin Islands, U.S." ], + [ "2210", "Phelan", "Talley", "00543", "Philippines" ], + [ "2211", "Carol", "Brock", "M6X 4E2", "Gibraltar" ], + [ "2212", "Nomlanga", "Robles", "56511", "Viet Nam" ], + [ "2213", "Adrian", "Clay", "79479", "France" ], + [ "2214", "Sara", "Riley", "B9N 5P4", "Peru" ], + [ "2215", "Christine", "Sweeney", "W1Z 4S4", "French Polynesia" ], + [ "2216", "Leilani", "Johnston", "W1C 8M8", "American Samoa" ], + [ "2217", "Melyssa", "Lambert", "V1B 4P6", "Iraq" ], + [ "2218", "Talon", "Delacruz", "Y3N 9R2", "Bulgaria" ], + [ "2219", "Garth", "Jennings", "59667", "Malta" ], + [ "2220", "Naida", "Coleman", "45456", "Finland" ], + [ "2221", "Indigo", "Lopez", "77160", "Pitcairn" ], + [ "2222", "Asher", "French", "99064", "British Indian Ocean Territory" ], + [ "2223", "Vivian", "Mcgowan", "46310", "Oman" ], + [ "2224", "Gwendolyn", "Cervantes", "48905", "Cocos (Keeling) Islands" ], + [ "2225", "Logan", "Reid", "87376", "Ethiopia" ], + [ "2226", "Bryar", "Wolfe", "75860", "Comoros" ], + [ "2227", "Demetrius", "Hutchinson", "97252", "Dominican Republic" ], + [ "2228", "Freya", "Becker", "04872", "United States" ], + [ "2229", "Abel", "Brooks", "I7O 1M1", "Comoros" ], + [ "2230", "Silas", "Mcguire", "04101", "Indonesia" ], + [ "2231", "Quinn", "Fletcher", "B6E 2B0", "Niger" ], + [ "2232", "Rooney", "Holden", "29294", "Micronesia" ], + [ "2233", "Iris", "Hale", "N7W 6E9", "Greenland" ], + [ "2234", "Candace", "Barry", "U8I 5A4", "Germany" ], + [ "2235", "Yetta", "Ball", "62055", "Switzerland" ], + [ "2236", "Dai", "Bentley", "P2Y 4C5", "Dominica" ], + [ "2237", "Gannon", "Dunlap", "45728", "Fiji" ], + [ "2238", "Chelsea", "Mays", "36498", "Guinea" ], + [ "2239", "Ruth", "Mcguire", "62924", "Maldives" ], + [ "2240", "Melissa", "Durham", "D6S 1A2", "Armenia" ], + [ "2241", "Eaton", "Salinas", "53689", "Somalia" ], + [ "2242", "Driscoll", "Cunningham", "31194", "Sweden" ], + [ "2243", "Bevis", "Acosta", "V4M 9Z2", "Jamaica" ], + [ "2244", "Anastasia", "Mcknight", "24878", "Sao Tome and Principe" ], + [ "2245", "Anika", "Rowland", "45287", "Chile" ], + [ "2246", "Dexter", "Rollins", "00684", "Iran, Islamic Republic of" ], + [ "2247", "Brielle", "Irwin", "V4U 7R2", "Belgium" ], + [ "2248", "Ocean", "Fields", "08544", "Croatia" ], + [ "2249", "Sonia", "Solis", "C4X 1L5", "Niue" ], + [ "2250", "Joseph", "Haney", "29567", "Argentina" ], + [ "2251", "Lamar", "Heath", "81699", "Italy" ], + [ "2252", "Raya", "Jordan", "R6K 7B3", "Spain" ], + [ "2253", "Brody", "Frost", "34564", "Dominican Republic" ], + [ "2254", "Ann", "Hawkins", "S3A 5K7", "Yemen" ], + [ "2255", "Phillip", "Lindsay", "80544", "Sierra Leone" ], + [ "2256", "Willa", "Maynard", "A6A 4C5", "Mexico" ], + [ "2257", "Carolyn", "Mercer", "V8Z 1X5", "Zimbabwe" ], + [ "2258", "Justin", "Cole", "68764", "Saint Vincent and The Grenadines" ], + [ "2259", "Emmanuel", "Parks", "99769", "Latvia" ], + [ "2260", "Isaiah", "Salazar", "H1K 1X3", "Turks and Caicos Islands" ], + [ "2261", "Vance", "Porter", "49607", "Costa Rica" ], + [ "2262", "Igor", "Kim", "99489", "Turkmenistan" ], + [ "2263", "Emi", "Graves", "F4M 5L8", "El Salvador" ], + [ "2264", "Griffith", "Monroe", "11550", "Tanzania, United Republic of" ], + [ "2265", "Iliana", "Coffey", "30220", "Albania" ], + [ "2266", "Jemima", "Guthrie", "69283", "Saint Pierre and Miquelon" ], + [ "2267", "Zenia", "Farrell", "91872", "Tanzania, United Republic of" ], + [ "2268", "Lucas", "Chambers", "L5Z 1W0", "Bouvet Island" ], + [ "2269", "Zenaida", "Valenzuela", "31700", "Guam" ], + [ "2270", "Bradley", "Wynn", "21222", "Lithuania" ], + [ "2271", "Maite", "Richard", "H4D 7X0", "Cameroon" ], + [ "2272", "Moses", "House", "Y3Z 3K7", "Saint Vincent and The Grenadines" ], + [ "2273", "Erich", "Petersen", "U4N 9R7", "Rwanda" ], + [ "2274", "Stephanie", "Zimmerman", "70097", "Malawi" ], + [ "2275", "Rylee", "Schneider", "15645", "Gibraltar" ], + [ "2276", "Zia", "Craig", "H1K 1N9", "Norway" ], + [ "2277", "Fiona", "Chaney", "Y4U 7K8", "San Marino" ], + [ "2278", "Gil", "Sherman", "64720", "Wallis and Futuna" ], + [ "2279", "Raja", "Sandoval", "11225", "Lithuania" ], + [ "2280", "Illana", "Wyatt", "A2M 9O2", "Brazil" ], + [ "2281", "Declan", "Howell", "E9V 8J5", "San Marino" ], + [ "2282", "Warren", "Cooper", "47160", "Guyana" ], + [ "2283", "Alyssa", "Juarez", "S7G 8F2", "Sweden" ], + [ "2284", "Quynn", "Long", "P1P 5Y4", "Mexico" ], + [ "2285", "Dalton", "Booker", "I5T 1R3", "Mauritius" ], + [ "2286", "Lunea", "Mclaughlin", "I3F 6D4", "Togo" ], + [ "2287", "Irene", "Brock", "04760", "Tajikistan" ], + [ "2288", "Raven", "Floyd", "R2N 2Y5", "Philippines" ], + [ "2289", "Nichole", "Farmer", "81213", "Seychelles" ], + [ "2290", "Sophia", "Mcdonald", "86291", "Chile" ], + [ "2291", "Nehru", "Matthews", "60732", "Central African Republic" ], + [ "2292", "Marah", "Nelson", "44533", "Kenya" ], + [ "2293", "Marvin", "Lyons", "M7Y 1Q6", "Somalia" ], + [ "2294", "Ian", "Fernandez", "D9U 8B6", "Turkey" ], + [ "2295", "Gretchen", "Dotson", "48294", "China" ], + [ "2296", "Brady", "Weaver", "S4U 4I8", "Burundi" ], + [ "2297", "Ella", "Salas", "73771", "Sao Tome and Principe" ], + [ "2298", "Martha", "Irwin", "06554", "Timor-leste" ], + [ "2299", "Penelope", "Pratt", "S1R 4L4", "Gabon" ], + [ "2300", "Kenyon", "Dale", "64548", "Zimbabwe" ], + [ "2301", "Henry", "Myers", "07614", "United Arab Emirates" ], + [ "2302", "Chaney", "Dunlap", "18388", "French Southern Territories" ], + [ "2303", "Palmer", "Le", "10807", "Colombia" ], + [ "2304", "Kaseem", "Madden", "U4E 6L9", "Guyana" ], + [ "2305", "Grant", "Anthony", "F3K 4D8", "Trinidad and Tobago" ], + [ "2306", "Denton", "Moore", "I5O 4I5", "Belize" ], + [ "2307", "Regan", "Pittman", "U8T 9M1", "Romania" ], + [ "2308", "Valentine", "Hunt", "E9O 6H6", "Poland" ], + [ "2309", "Abraham", "Love", "X1T 4K0", "Philippines" ], + [ "2310", "Maggie", "Gaines", "W5Z 6L4", "Chad" ], + [ "2311", "Kylynn", "Sears", "53419", "Ghana" ], + [ "2312", "Abel", "Hudson", "O6C 6K5", "Malaysia" ], + [ "2313", "Aladdin", "Brady", "16465", "Antarctica" ], + [ "2314", "Laurel", "Bush", "42295", "Kyrgyzstan" ], + [ "2315", "Cameron", "Shepherd", "Y8R 5L7", "Finland" ], + [ "2316", "Colin", "Barker", "H8Q 5L0", "Aruba" ], + [ "2317", "Nichole", "Stephens", "B8P 3D5", "Qatar" ], + [ "2318", "Mary", "Dorsey", "J7D 1E5", "Iceland" ], + [ "2319", "Yetta", "Dillon", "I7X 9D3", "Hong Kong" ], + [ "2320", "Hope", "May", "L5W 1T9", "Taiwan, Province of China" ], + [ "2321", "Daphne", "Barr", "W2B 9G2", "Korea, Republic of" ], + [ "2322", "Melissa", "Hartman", "17607", "Reunion" ], + [ "2323", "Acton", "Merritt", "U7M 3Q5", "Cape Verde" ], + [ "2324", "Alika", "Weeks", "45475", "Singapore" ], + [ "2325", "Fitzgerald", "Rowe", "Z3Z 2B6", "Israel" ], + [ "2326", "Frances", "Valentine", "54329", "Kyrgyzstan" ], + [ "2327", "Hollee", "Poole", "56101", "Saint Kitts and Nevis" ], + [ "2328", "Melissa", "Stafford", "R5C 7V0", "Philippines" ], + [ "2329", "Patience", "Jones", "61516", "Mauritius" ], + [ "2330", "Uta", "Sloan", "K1B 9R2", "Timor-leste" ], + [ "2331", "Brent", "West", "69310", "Burundi" ], + [ "2332", "Otto", "Olsen", "88849", "Monaco" ], + [ "2333", "Blossom", "Soto", "E2Q 6E6", "Ukraine" ], + [ "2334", "Anastasia", "Stanton", "S8D 3U5", "Mexico" ], + [ "2335", "Nyssa", "Massey", "A4G 8G7", "Ireland" ], + [ "2336", "Brian", "Moreno", "T6O 4D7", "Myanmar" ], + [ "2337", "Fiona", "Price", "03826", "Benin" ], + [ "2338", "Wyoming", "Knowles", "I5M 7T3", "Chad" ], + [ "2339", "Iola", "Noble", "95251", "Tunisia" ], + [ "2340", "Cameran", "Montgomery", "35748", "Korea" ], + [ "2341", "Wesley", "Sims", "J6O 7C0", "Hungary" ], + [ "2342", "Mona", "Gates", "J6Y 3E2", "Tokelau" ], + [ "2343", "Dominique", "Sellers", "G6U 7I2", "Sudan" ], + [ "2344", "Destiny", "Frazier", "Y2P 5X6", "Madagascar" ], + [ "2345", "Kelsie", "Stokes", "78561", "Yemen" ], + [ "2346", "Julie", "Jordan", "U5H 4H0", "Myanmar" ], + [ "2347", "Xaviera", "Hodge", "36452", "Turkey" ], + [ "2348", "Cain", "Boyd", "74543", "Lebanon" ], + [ "2349", "Devin", "Burch", "94879", "Cyprus" ], + [ "2350", "Michelle", "Manning", "V7T 4A3", "New Zealand" ], + [ "2351", "Quintessa", "Chapman", "95379", "Faroe Islands" ], + [ "2352", "Danielle", "Wells", "27722", "Colombia" ], + [ "2353", "Faith", "Decker", "04881", "Canada" ], + [ "2354", "Gannon", "Chapman", "07687", "Israel" ], + [ "2355", "Jayme", "Black", "A6L 9W1", "Jordan" ], + [ "2356", "Zenia", "Cooley", "A6X 1B7", "Greenland" ], + [ "2357", "Maris", "Burton", "J4G 1Y0", "Ecuador" ], + [ "2358", "Rina", "Vazquez", "G3V 7G6", "Russian Federation" ], + [ "2359", "Nina", "Stanton", "E7Z 1W0", "Dominica" ], + [ "2360", "Alexandra", "Jenkins", "C6N 4R4", "Morocco" ], + [ "2361", "Jerome", "Chen", "68955", "Israel" ], + [ "2362", "Clementine", "Robbins", "X7I 7T3", "Croatia" ], + [ "2363", "Nigel", "Guthrie", "A4N 6X8", "French Southern Territories" ], + [ "2364", "Xaviera", "Griffith", "90489", "Cuba" ], + [ "2365", "Marsden", "Best", "U4B 5R7", "Estonia" ], + [ "2366", "Ebony", "Benson", "H7C 7F7", "Anguilla" ], + [ "2367", "Kylie", "Hansen", "38932", "Eritrea" ], + [ "2368", "Iola", "Copeland", "P4X 9M4", "Rwanda" ], + [ "2369", "Jorden", "Green", "48018", "Namibia" ], + [ "2370", "Hamish", "Porter", "L6F 8L1", "Taiwan, Province of China" ], + [ "2371", "Ezra", "Taylor", "09148", "French Southern Territories" ], + [ "2372", "Dara", "Pratt", "00558", "Saint Kitts and Nevis" ], + [ "2373", "Oliver", "Holt", "C4N 5Z7", "Thailand" ], + [ "2374", "Kato", "Mcgee", "17017", "Micronesia" ], + [ "2375", "Fuller", "Rogers", "M8F 6Y7", "French Polynesia" ], + [ "2376", "Carol", "Stuart", "55980", "Sudan" ], + [ "2377", "Wayne", "Nichols", "37344", "Chile" ], + [ "2378", "Lars", "Gilbert", "27076", "Micronesia" ], + [ "2379", "Todd", "Rollins", "M4I 4X8", "Virgin Islands, U.S." ], + [ "2380", "Colorado", "Justice", "68795", "Yemen" ], + [ "2381", "Jordan", "Chang", "11149", "Mayotte" ], + [ "2382", "Troy", "Haynes", "N2N 1N8", "Reunion" ], + [ "2383", "Amity", "Snyder", "17785", "Argentina" ], + [ "2384", "Kennan", "Turner", "30041", "Brazil" ], + [ "2385", "Dorothy", "Gates", "B7Z 6V4", "Ghana" ], + [ "2386", "Ariana", "Rojas", "70797", "Eritrea" ], + [ "2387", "Desirae", "Joyner", "63493", "Maldives" ], + [ "2388", "Marsden", "Barton", "36343", "Chile" ], + [ "2389", "Graham", "Greer", "65152", "Cayman Islands" ], + [ "2390", "Cameron", "Edwards", "89276", "Montserrat" ], + [ "2391", "Bradley", "White", "80364", "United Kingdom" ], + [ "2392", "Finn", "Cote", "G9P 1P0", "Ghana" ], + [ "2393", "Geoffrey", "Becker", "O5G 4L4", "Wallis and Futuna" ], + [ "2394", "Hayden", "Estes", "Q8G 7F9", "Togo" ], + [ "2395", "Quinlan", "Garrett", "R2C 3E7", "Uganda" ], + [ "2396", "Haviva", "Harrington", "64198", "Bahamas" ], + [ "2397", "Brennan", "Hodge", "35327", "Paraguay" ], + [ "2398", "Halee", "Sykes", "S6J 4S4", "Costa Rica" ], + [ "2399", "Mikayla", "Ruiz", "21686", "Malaysia" ], + [ "2400", "Macy", "Stanley", "F6D 6C4", "Luxembourg" ], + [ "2401", "Petra", "Miles", "O7X 2D2", "Tokelau" ], + [ "2402", "Oprah", "Mendez", "88994", "France" ], + [ "2403", "Upton", "Silva", "17878", "French Southern Territories" ], + [ "2404", "Wade", "Pennington", "S8J 3P2", "Malaysia" ], + [ "2405", "Gannon", "Riddle", "I4A 2H9", "Somalia" ], + [ "2406", "Jana", "Myers", "04982", "Philippines" ], + [ "2407", "Brooke", "Hale", "98272", "Lithuania" ], + [ "2408", "Hashim", "Mendez", "00144", "Saint Helena" ], + [ "2409", "Blythe", "Hanson", "U5Z 6P4", "Saint Helena" ], + [ "2410", "Michelle", "Madden", "B4R 1I9", "Ireland" ], + [ "2411", "Deirdre", "Patton", "B4H 1N7", "Georgia" ], + [ "2412", "Nathaniel", "Chandler", "W1V 8R4", "Sierra Leone" ], + [ "2413", "Tamekah", "Murray", "I8M 1W8", "Guatemala" ], + [ "2414", "Naida", "Boyle", "V4S 2N2", "United Arab Emirates" ], + [ "2415", "Hiroko", "Winters", "K8G 3R9", "Barbados" ], + [ "2416", "Palmer", "Guy", "A4H 5L1", "Saudi Arabia" ], + [ "2417", "Hermione", "Nicholson", "76147", "Marshall Islands" ], + [ "2418", "Russell", "Boyd", "66149", "Switzerland" ], + [ "2419", "Gretchen", "Robles", "B9L 1J7", "Spain" ], + [ "2420", "Leah", "Gibbs", "16682", "Vanuatu" ], + [ "2421", "Amir", "Carlson", "A5C 6F2", "Myanmar" ], + [ "2422", "Merrill", "Ratliff", "A6E 9B2", "Tonga" ], + [ "2423", "Wyatt", "David", "P8G 2M1", "Kiribati" ], + [ "2424", "Violet", "Boyle", "P5X 7B0", "Denmark" ], + [ "2425", "Jared", "Myers", "22131", "Kyrgyzstan" ], + [ "2426", "Lavinia", "Stephenson", "55537", "Turks and Caicos Islands" ], + [ "2427", "Zachary", "Tyson", "C4O 7V4", "Macedonia" ], + [ "2428", "Emma", "Clark", "A7Z 2Z1", "Guam" ], + [ "2429", "Aaron", "Montoya", "Q3U 2X1", "Bahrain" ], + [ "2430", "Dylan", "Roach", "81238", "French Guiana" ], + [ "2431", "Baxter", "Rosario", "H7B 1R2", "Suriname" ], + [ "2432", "Shad", "Bolton", "D1W 5X0", "Barbados" ], + [ "2433", "Hasad", "Hines", "D9U 3H1", "Ukraine" ], + [ "2434", "Maggy", "French", "M3E 5H8", "Nicaragua" ], + [ "2435", "Evangeline", "Jenkins", "57732", "Nigeria" ], + [ "2436", "Eaton", "Shannon", "56854", "Namibia" ], + [ "2437", "Keaton", "Barber", "G5V 7T0", "Svalbard and Jan Mayen" ], + [ "2438", "Lester", "Love", "J5Q 8H3", "United Kingdom" ], + [ "2439", "Olivia", "Foley", "16284", "Mayotte" ], + [ "2440", "Inez", "Craig", "98947", "Poland" ], + [ "2441", "Desirae", "Jacobson", "25950", "French Polynesia" ], + [ "2442", "Amethyst", "Robertson", "78840", "Timor-leste" ], + [ "2443", "Rahim", "Day", "61420", "Maldives" ], + [ "2444", "Kevyn", "Mccarty", "X7T 8Z3", "Guam" ], + [ "2445", "Logan", "Malone", "B6F 8N0", "Madagascar" ], + [ "2446", "Kathleen", "Cote", "L4R 6W9", "Congo" ], + [ "2447", "Porter", "Mclean", "G1Z 1W9", "Mauritius" ], + [ "2448", "Reagan", "Chapman", "86314", "Palestinian Territory, Occupied" ], + [ "2449", "Veda", "Harrington", "R7W 1K4", "Congo" ], + [ "2450", "Dominique", "Hewitt", "P5K 7L4", "San Marino" ], + [ "2451", "Zelda", "Orr", "Z5B 6V1", "Greenland" ], + [ "2452", "Natalie", "Kane", "10491", "Belgium" ], + [ "2453", "Elizabeth", "Bright", "R3V 2R4", "Bangladesh" ], + [ "2454", "Evan", "Knapp", "W3Z 3I5", "Mauritius" ], + [ "2455", "Unity", "Armstrong", "82986", "Kiribati" ], + [ "2456", "Arden", "Winters", "C7D 4M2", "Sweden" ], + [ "2457", "Hayfa", "Henderson", "B8Z 3V3", "Latvia" ], + [ "2458", "Ocean", "Delacruz", "Z3Z 2H8", "Tonga" ], + [ "2459", "Carter", "Harding", "R1Z 8J4", "Ireland" ], + [ "2460", "Harriet", "Simmons", "54757", "Indonesia" ], + [ "2461", "Sopoline", "Hicks", "I5A 6O2", "Argentina" ], + [ "2462", "Jenette", "Ramos", "I4V 3H6", "Portugal" ], + [ "2463", "Abigail", "Berg", "E6P 6L0", "United States" ], + [ "2464", "Sybill", "Fox", "02319", "Svalbard and Jan Mayen" ], + [ "2465", "Wyoming", "Jarvis", "I1R 7V9", "Palestinian Territory, Occupied" ], + [ "2466", "Cynthia", "English", "17983", "Israel" ], + [ "2467", "Jerry", "Little", "33846", "Mauritius" ], + [ "2468", "Quintessa", "Donaldson", "V4N 2K1", "China" ], + [ "2469", "Anne", "Potter", "78596", "United States Minor Outlying Islands" ], + [ "2470", "Madonna", "Hart", "A4A 4T8", "Bahrain" ], + [ "2471", "Madeline", "Walls", "Y3D 4T3", "Comoros" ], + [ "2472", "Fleur", "Blevins", "D1T 9P6", "Guinea-bissau" ], + [ "2473", "Jaden", "Webb", "13917", "Lesotho" ], + [ "2474", "Abdul", "Fleming", "A8A 3Y3", "Canada" ], + [ "2475", "Blaze", "Carroll", "41059", "Marshall Islands" ], + [ "2476", "David", "Hoover", "29132", "Algeria" ], + [ "2477", "Renee", "Nieves", "35843", "Egypt" ], + [ "2478", "Jaime", "Mcclure", "R5K 6B5", "Liechtenstein" ], + [ "2479", "Deborah", "Fletcher", "70399", "Equatorial Guinea" ], + [ "2480", "Otto", "Lopez", "72417", "Belarus" ], + [ "2481", "Bo", "Walls", "F4M 8X8", "Latvia" ], + [ "2482", "Jamal", "Adams", "N9X 3A2", "Spain" ], + [ "2483", "Silas", "Gardner", "25259", "French Guiana" ], + [ "2484", "Aladdin", "Morin", "45179", "Sweden" ], + [ "2485", "Dawn", "Grant", "53613", "Grenada" ], + [ "2486", "Forrest", "Gay", "53606", "Cayman Islands" ], + [ "2487", "Lavinia", "Murphy", "S5L 6X9", "Turkey" ], + [ "2488", "Sylvia", "Wolfe", "37280", "Indonesia" ], + [ "2489", "Wynter", "Adkins", "37391", "Russian Federation" ], + [ "2490", "Iola", "Frank", "I9H 1K7", "Nigeria" ], + [ "2491", "Emmanuel", "Hester", "Z6E 3I4", "Guinea" ], + [ "2492", "Karina", "Christian", "V8M 6F3", "Honduras" ], + [ "2493", "Malcolm", "Holden", "I7J 6U7", "Austria" ], + [ "2494", "Moana", "Holmes", "80402", "Israel" ], + [ "2495", "Ramona", "Hewitt", "U6B 7A6", "Guadeloupe" ], + [ "2496", "Nicholas", "Terry", "V8J 5D9", "Costa Rica" ], + [ "2497", "Erica", "Dunlap", "91596", "Kazakhstan" ], + [ "2498", "Logan", "Harper", "R7V 3T5", "Guinea-bissau" ], + [ "2499", "Bert", "Ortega", "74557", "Paraguay" ], + [ "2500", "Cameron", "Ortiz", "P9C 5B6", "Eritrea" ] +] } \ No newline at end of file diff --git a/plugins/datatables/jszip.min.js b/plugins/datatables/jszip.min.js new file mode 100644 index 0000000..a09f35b --- /dev/null +++ b/plugins/datatables/jszip.min.js @@ -0,0 +1,14 @@ +/*! + +JSZip - A Javascript class for generating and reading zip files +<http://stuartk.com/jszip> + +(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com> +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,unixPermissions:h.unixPermissions,dosPermissions:h.dosPermissions,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?D.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",D.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(e=w(a))&&y.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip"}),d.checkSupport(a.type),("darwin"===a.platform||"freebsd"===a.platform||"linux"===a.platform||"sunos"===a.platform)&&(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=o.options.compressionOptions||a.compressionOptions||{},u=z.call(this,o,q,r),v=C.call(this,l,o,u,g,a.platform);g+=v.fileRecord.length+u.compressedSize,j+=v.dirRecord.length,e.push(v)}var w="";w=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new n(g+j+w.length):new m(g+j+w.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),y);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?h.encode(y):y;default:return y}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=D},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a){var b=!0;try{this.reader.setIndex(0),this.checkSignature(h.LOCAL_FILE_HEADER),b=!1}catch(c){}throw new Error(b?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object"),h=0,i=3;c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5)) +}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1); +break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}); \ No newline at end of file diff --git a/plugins/datatables/pdfmake.min.js b/plugins/datatables/pdfmake.min.js new file mode 100644 index 0000000..b798b26 --- /dev/null +++ b/plugins/datatables/pdfmake.min.js @@ -0,0 +1,22 @@ +!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){(function(e){t.exports=e.pdfMake=n(1)}).call(e,function(){return this}())},function(t,e,n){(function(e){"use strict";function r(t,e,n){this.docDefinition=t,this.fonts=e||a,this.vfs=n}var i=n(2),o=n(3),a={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-Italic.ttf"}};r.prototype._createDoc=function(t,n){var r=new i(this.fonts);r.fs.bindFS(this.vfs);var o,a=r.createPdfKitDocument(this.docDefinition,t),s=[];a.on("data",function(t){s.push(t)}),a.on("end",function(){o=e.concat(s),n(o,a._pdfMakePages)}),a.end()},r.prototype._getPages=function(t,e){if(!e)throw"getBuffer is an async method and needs a callback argument";this._createDoc(t,function(t,n){e(n)})},r.prototype.open=function(t){var e=window.open("","_blank");try{this.getDataUrl(function(t){e.location.href=t})}catch(n){throw e.close(),n}},r.prototype.print=function(){this.getDataUrl(function(t){var e=document.createElement("iframe");e.style.position="absolute",e.style.left="-99999px",e.src=t,e.onload=function(){function t(){document.body.removeChild(e),document.removeEventListener("click",t)}document.addEventListener("click",t,!1)},document.body.appendChild(e)},{autoPrint:!0})},r.prototype.download=function(t,e){"function"==typeof t&&(e=t,t=null),t=t||"file.pdf",this.getBuffer(function(n){o(new Blob([n],{type:"application/pdf"}),t),"function"==typeof e&&e()})},r.prototype.getBase64=function(t,e){if(!t)throw"getBase64 is an async method and needs a callback argument";this._createDoc(e,function(e){t(e.toString("base64"))})},r.prototype.getDataUrl=function(t,e){if(!t)throw"getDataUrl is an async method and needs a callback argument";this._createDoc(e,function(e){t("data:application/pdf;base64,"+e.toString("base64"))})},r.prototype.getBuffer=function(t,e){if(!t)throw"getBuffer is an async method and needs a callback argument";this._createDoc(e,function(e){t(e)})},t.exports={createPdf:function(t){return new r(t,window.pdfMake.fonts,window.pdfMake.vfs)}}}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(t){this.fontDescriptors=t}function i(t){if(!t)return null;if("number"==typeof t||t instanceof Number)t={left:t,right:t,top:t,bottom:t};else if(t instanceof Array)if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function o(t){t.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t&&4||0},paddingRight:function(t,e){return t<e.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:0},vLineWidth:function(t){return 0},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:1},vLineWidth:function(t){return 0},hLineColor:function(t){return 1===t?"black":"#aaa"},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}}})}function a(t){if("string"==typeof t||t instanceof String){var e=y[t.toUpperCase()];if(!e)throw"Page size "+t+" not recognized";return{width:e[0],height:e[1]}}return t}function s(t){this.isString=!0,this.toString=function(){return t}}function h(t,e){var n=e.options.size[0]>e.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function u(t,e,n){n._pdfMakePages=t;for(var r=0;r<t.length;r++){r>0&&(h(t[r],n),n.addPage(n.options));for(var i=t[r],o=0,a=i.items.length;a>o;o++){var s=i.items[o];switch(s.type){case"vector":f(s.item,n);break;case"line":l(s.item,s.item.x,s.item.y,n);break;case"image":d(s.item,s.item.x,s.item.y,n)}}i.watermark&&c(i,n),e.setFontRefsToPdfDoc()}}function l(t,e,n,r){e=e||0,n=n||0;var i=t.getAscenderHeight();_.drawBackground(t,e,n,r);for(var o=0,a=t.inlines.length;a>o;o++){var s=t.inlines[o];r.fill(s.color||"black"),r.save(),r.transform(1,0,0,-1,0,r.page.height);var h=s.font.encode(s.text);r.addContent("BT"),r.addContent(""+(e+s.x)+" "+(r.page.height-n-i)+" Td"),r.addContent("/"+h.fontId+" "+s.fontSize+" Tf"),r.addContent("<"+h.encodedText+"> Tj"),r.addContent("ET"),r.restore()}_.drawDecorations(t,e,n,r)}function c(t,e){var n=t.watermark;e.fill("black"),e.opacity(.6),e.save(),e.transform(1,0,0,-1,0,e.page.height);var r=180*Math.atan2(e.page.height,e.page.width)/Math.PI;e.rotate(r,{origin:[e.page.width/2,e.page.height/2]});var i=n.font.encode(n.text);e.addContent("BT"),e.addContent(""+(e.page.width/2-n.size.size.width/2)+" "+(e.page.height/2-n.size.size.height/4)+" Td"),e.addContent("/"+i.fontId+" "+n.size.fontSize+" Tf"),e.addContent("<"+i.encodedText+"> Tj"),e.addContent("ET"),e.restore()}function f(t,e){switch(e.lineWidth(t.lineWidth||1),t.dash?e.dash(t.dash.length,{space:t.dash.space||t.dash.length}):e.undash(),e.fillOpacity(t.fillOpacity||1),e.strokeOpacity(t.strokeOpacity||1),e.lineJoin(t.lineJoin||"miter"),t.type){case"ellipse":e.ellipse(t.x,t.y,t.r1,t.r2);break;case"rect":t.r?e.roundedRect(t.x,t.y,t.w,t.h,t.r):e.rect(t.x,t.y,t.w,t.h);break;case"line":e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2);break;case"polyline":if(0===t.points.length)break;e.moveTo(t.points[0].x,t.points[0].y);for(var n=1,r=t.points.length;r>n;n++)e.lineTo(t.points[n].x,t.points[n].y);if(t.points.length>1){var i=t.points[0],o=t.points[t.points.length-1];(t.closePath||i.x===o.x&&i.y===o.y)&&e.closePath()}}t.color&&t.lineColor?e.fillAndStroke(t.color,t.lineColor):t.color?e.fill(t.color):e.stroke(t.lineColor||"black")}function d(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height})}var p=(n(11),n(5)),g=n(6),v=n(28),m=n(12),y=n(7),w=n(8),_=n(9),p=n(5);r.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=a(t.pageSize||"a4");"landscape"===t.pageOrientation&&(n={width:n.height,height:n.width}),n.orientation="landscape"===t.pageOrientation?t.pageOrientation:"portrait",this.pdfKitDoc=new v({size:[n.width,n.height],compress:!1}),this.pdfKitDoc.info.Producer="pdfmake",this.pdfKitDoc.info.Creator="pdfmake",this.fontProvider=new p(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var r=new g(n,i(t.pageMargins||40),new w(this.pdfKitDoc,t.images));o(r),e.tableLayouts&&r.registerTableLayouts(e.tableLayouts);var h=r.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore);if(u(h,this.fontProvider,this.pdfKitDoc),e.autoPrint){var l=this.pdfKitDoc.ref({S:"JavaScript",JS:new s("this.print\\(true\\);")}),c=this.pdfKitDoc.ref({Names:[new s("EmbeddedJS"),new m(this.pdfKitDoc,l.id)]});l.end(),c.end(),this.pdfKitDoc._root.data.Names={JavaScript:new m(this.pdfKitDoc,c.id)}}return this.pdfKitDoc};t.exports=r,r.prototype.fs=n(10)},function(t,e,n){var r,i;(function(t){/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ +var o=o||"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(t){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var e=t.document,n=function(){return t.URL||t.webkitURL||t},r=e.createElementNS("http://www.w3.org/1999/xhtml","a"),i="download"in r,o=function(n){var r=e.createEvent("MouseEvents");r.initMouseEvent("click",!0,!1,t,0,0,0,0,0,!1,!1,!1,!1,0,null),n.dispatchEvent(r)},a=t.webkitRequestFileSystem,s=t.requestFileSystem||a||t.mozRequestFileSystem,h=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},u="application/octet-stream",l=0,c=10,f=function(e){var r=function(){"string"==typeof e?n().revokeObjectURL(e):e.remove()};t.chrome?r():setTimeout(r,c)},d=function(t,e,n){e=[].concat(e);for(var r=e.length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(o){h(o)}}},p=function(e,h){var c,p,g,v=this,m=e.type,y=!1,w=function(){d(v,"writestart progress write writeend".split(" "))},_=function(){if((y||!c)&&(c=n().createObjectURL(e)),p)p.location.href=c;else{var r=t.open(c,"_blank");void 0==r&&"undefined"!=typeof safari&&(t.location.href=c)}v.readyState=v.DONE,w(),f(c)},b=function(t){return function(){return v.readyState!==v.DONE?t.apply(this,arguments):void 0}},x={create:!0,exclusive:!1};return v.readyState=v.INIT,h||(h="download"),i?(c=n().createObjectURL(e),r.href=c,r.download=h,o(r),v.readyState=v.DONE,w(),void f(c)):(t.chrome&&m&&m!==u&&(g=e.slice||e.webkitSlice,e=g.call(e,0,e.size,u),y=!0),a&&"download"!==h&&(h+=".download"),(m===u||a)&&(p=t),s?(l+=e.size,void s(t.TEMPORARY,l,b(function(t){t.root.getDirectory("saved",x,b(function(t){var n=function(){t.getFile(h,x,b(function(t){t.createWriter(b(function(n){n.onwriteend=function(e){p.location.href=t.toURL(),v.readyState=v.DONE,d(v,"writeend",e),f(t)},n.onerror=function(){var t=n.error;t.code!==t.ABORT_ERR&&_()},"writestart progress write abort".split(" ").forEach(function(t){n["on"+t]=v["on"+t]}),n.write(e),v.abort=function(){n.abort(),v.readyState=v.DONE},v.readyState=v.WRITING}),_)}),_)};t.getFile(h,{create:!1},b(function(t){t.remove(),n()}),b(function(t){t.code===t.NOT_FOUND_ERR?n():_()}))}),_)}),_)):void _())},g=p.prototype,v=function(t,e){return new p(t,e)};return g.abort=function(){var t=this;t.readyState=t.DONE,d(t,"abort")},g.readyState=g.INIT=0,g.WRITING=1,g.DONE=2,g.error=g.onwritestart=g.onprogress=g.onwrite=g.onabort=g.onerror=g.onwriteend=null,v}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof t&&null!==t?t.exports=o:null!==n(13)&&null!=n(14)&&(r=[],i=function(){return o}.apply(e,r),!(void 0!==i&&(t.exports=i)))}).call(e,n(15)(t))},function(t,e,n){(function(t){function t(e){return this instanceof t?(this.length=0,this.parent=void 0,"number"==typeof e?r(this,e):"string"==typeof e?i(this,e,arguments.length>1?arguments[1]:"utf8"):o(this,e)):arguments.length>1?new t(e,arguments[1]):new t(e)}function r(e,n){if(e=c(e,0>n?0:0|f(n)),!t.TYPED_ARRAY_SUPPORT)for(var r=0;n>r;r++)e[r]=0;return e}function i(t,e,n){("string"!=typeof n||""===n)&&(n="utf8");var r=0|p(e,n);return t=c(t,r),t.write(e,n),t}function o(e,n){if(t.isBuffer(n))return a(e,n);if(G(n))return s(e,n);if(null==n)throw new TypeError("must start with number, buffer, array or string");return"undefined"!=typeof ArrayBuffer&&n.buffer instanceof ArrayBuffer?h(e,n):n.length?u(e,n):l(e,n)}function a(t,e){var n=0|f(e.length);return t=c(t,n),e.copy(t,0,0,n),t}function s(t,e){var n=0|f(e.length);t=c(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function h(t,e){var n=0|f(e.length);t=c(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function u(t,e){var n=0|f(e.length);t=c(t,n);for(var r=0;n>r;r+=1)t[r]=255&e[r];return t}function l(t,e){var n,r=0;"Buffer"===e.type&&G(e.data)&&(n=e.data,r=0|f(n.length)),t=c(t,r);for(var i=0;r>i;i+=1)t[i]=255&n[i];return t}function c(e,n){t.TYPED_ARRAY_SUPPORT?e=t._augment(new Uint8Array(n)):(e.length=n,e._isBuffer=!0);var r=0!==n&&n<=t.poolSize>>>1;return r&&(e.parent=Y),e}function f(t){if(t>=q)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+q.toString(16)+" bytes");return 0|t}function d(e,n){if(!(this instanceof d))return new d(e,n);var r=new t(e,n);return delete r.parent,r}function p(t,e){if("string"!=typeof t&&(t=String(t)),0===t.length)return 0;switch(e||"utf8"){case"ascii":case"binary":case"raw":return t.length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*t.length;case"hex":return t.length>>>1;case"utf8":case"utf-8":return P(t).length;case"base64":return W(t).length;default:return t.length}}function g(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r),r>i&&(r=i)):r=i;var o=e.length;if(o%2!==0)throw new Error("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;r>a;a++){var s=parseInt(e.substr(2*a,2),16);if(isNaN(s))throw new Error("Invalid hex string");t[n+a]=s}return a}function v(t,e,n,r){return N(P(e,t.length-n),t,n,r)}function m(t,e,n,r){return N(F(e),t,n,r)}function y(t,e,n,r){return m(t,e,n,r)}function w(t,e,n,r){return N(W(e),t,n,r)}function _(t,e,n,r){return N(z(e,t.length-n),t,n,r)}function b(t,e,n){return H.fromByteArray(0===e&&n===t.length?t:t.slice(e,n))}function x(t,e,n){var r="",i="";n=Math.min(t.length,n);for(var o=e;n>o;o++)t[o]<=127?(r+=j(i)+String.fromCharCode(t[o]),i=""):i+="%"+t[o].toString(16);return r+j(i)}function S(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(127&t[i]);return r}function k(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;n>i;i++)r+=String.fromCharCode(t[i]);return r}function E(t,e,n){var r=t.length;(!e||0>e)&&(e=0),(!n||0>n||n>r)&&(n=r);for(var i="",o=e;n>o;o++)i+=U(t[o]);return i}function C(t,e,n){for(var r=t.slice(e,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function I(t,e,n){if(t%1!==0||0>t)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function A(e,n,r,i,o,a){if(!t.isBuffer(e))throw new TypeError("buffer must be a Buffer instance");if(n>o||a>n)throw new RangeError("value is out of bounds");if(r+i>e.length)throw new RangeError("index out of range")}function L(t,e,n,r){0>e&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);o>i;i++)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function R(t,e,n,r){0>e&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);o>i;i++)t[n+i]=e>>>8*(r?i:3-i)&255}function B(t,e,n,r,i,o){if(e>i||o>e)throw new RangeError("value is out of bounds");if(n+r>t.length)throw new RangeError("index out of range");if(0>n)throw new RangeError("index out of range")}function T(t,e,n,r,i){return i||B(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(t,e,n,r,23,4),n+4}function M(t,e,n,r,i){return i||B(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(t,e,n,r,52,8),n+8}function O(t){if(t=D(t).replace(X,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function D(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function U(t){return 16>t?"0"+t.toString(16):t.toString(16)}function P(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],a=0;r>a;a++){if(n=t.charCodeAt(a),n>55295&&57344>n){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(56320>n){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&((e-=3)>-1&&o.push(239,191,189),i=null);if(128>n){if((e-=1)<0)break;o.push(n)}else if(2048>n){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(65536>n){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(2097152>n))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function F(t){for(var e=[],n=0;n<t.length;n++)e.push(255&t.charCodeAt(n));return e}function z(t,e){for(var n,r,i,o=[],a=0;a<t.length&&!((e-=2)<0);a++)n=t.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}function W(t){return H.toByteArray(O(t))}function N(t,e,n,r){for(var i=0;r>i&&!(i+n>=e.length||i>=t.length);i++)e[i+n]=t[i];return i}function j(t){try{return decodeURIComponent(t)}catch(e){return String.fromCharCode(65533)}}/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +var H=n(31),Z=n(29),G=n(30);e.Buffer=t,e.SlowBuffer=d,e.INSPECT_MAX_BYTES=50,t.poolSize=8192;var q=1073741823,Y={};t.TYPED_ARRAY_SUPPORT=function(){try{var t=new ArrayBuffer(0),e=new Uint8Array(t);return e.foo=function(){return 42},42===e.foo()&&"function"==typeof e.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(n){return!1}}(),t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,n){if(!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(e===n)return 0;for(var r=e.length,i=n.length,o=0,a=Math.min(r,i);a>o&&e[o]===n[o];)++o;return o!==a&&(r=e[o],i=n[o]),i>r?-1:r>i?1:0},t.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},t.concat=function(e,n){if(!G(e))throw new TypeError("list argument must be an Array of Buffers.");if(0===e.length)return new t(0);if(1===e.length)return e[0];var r;if(void 0===n)for(n=0,r=0;r<e.length;r++)n+=e[r].length;var i=new t(n),o=0;for(r=0;r<e.length;r++){var a=e[r];a.copy(i,o),o+=a.length}return i},t.byteLength=p,t.prototype.length=void 0,t.prototype.parent=void 0,t.prototype.toString=function(t,e,n){var r=!1;if(e=0|e,n=void 0===n||n===1/0?this.length:0|n,t||(t="utf8"),0>e&&(e=0),n>this.length&&(n=this.length),e>=n)return"";for(;;)switch(t){case"hex":return E(this,e,n);case"utf8":case"utf-8":return x(this,e,n);case"ascii":return S(this,e,n);case"binary":return k(this,e,n);case"base64":return b(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}},t.prototype.equals=function(e){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===t.compare(this,e)},t.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},t.prototype.compare=function(e){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?0:t.compare(this,e)},t.prototype.indexOf=function(e,n){function r(t,e,n){for(var r=-1,i=0;n+i<t.length;i++)if(t[n+i]===e[-1===r?0:i-r]){if(-1===r&&(r=i),i-r+1===e.length)return n+r}else r=-1;return-1}if(n>2147483647?n=2147483647:-2147483648>n&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(0>n&&(n=Math.max(this.length+n,0)),"string"==typeof e)return 0===e.length?-1:String.prototype.indexOf.call(this,e,n);if(t.isBuffer(e))return r(this,e,n);if("number"==typeof e)return t.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,e,n):r(this,[e],n);throw new TypeError("val must be string, number or Buffer")},t.prototype.get=function(t){return this.readUInt8(t)},t.prototype.set=function(t,e){return this.writeUInt8(t,e)},t.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else if(isFinite(e))e=0|e,isFinite(n)?(n=0|n,void 0===r&&(r="utf8")):(r=n,n=void 0);else{var i=r;r=e,e=0|n,n=i}var o=this.length-e;if((void 0===n||n>o)&&(n=o),t.length>0&&(0>n||0>e)||e>this.length)throw new RangeError("attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return g(this,t,e,n);case"utf8":case"utf-8":return v(this,t,e,n);case"ascii":return m(this,t,e,n);case"binary":return y(this,t,e,n);case"base64":return w(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},t.prototype.slice=function(e,n){var r=this.length;e=~~e,n=void 0===n?r:~~n,0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),0>n?(n+=r,0>n&&(n=0)):n>r&&(n=r),e>n&&(n=e);var i;if(t.TYPED_ARRAY_SUPPORT)i=t._augment(this.subarray(e,n));else{var o=n-e;i=new t(o,void 0);for(var a=0;o>a;a++)i[a]=this[a+e]}return i.length&&(i.parent=this.parent||this),i},t.prototype.readUIntLE=function(t,e,n){t=0|t,e=0|e,n||I(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},t.prototype.readUIntBE=function(t,e,n){t=0|t,e=0|e,n||I(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},t.prototype.readUInt8=function(t,e){return e||I(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||I(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||I(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,n){t=0|t,e=0|e,n||I(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},t.prototype.readIntBE=function(t,e,n){t=0|t,e=0|e,n||I(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},t.prototype.readInt16LE=function(t,e){e||I(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(t,e){e||I(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(t,e){return e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||I(t,4,this.length),Z.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||I(t,4,this.length),Z.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||I(t,8,this.length),Z.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||I(t,8,this.length),Z.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,n,r){t=+t,e=0|e,n=0|n,r||A(this,t,e,n,Math.pow(2,8*n),0);var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},t.prototype.writeUIntBE=function(t,e,n,r){t=+t,e=0|e,n=0|n,r||A(this,t,e,n,Math.pow(2,8*n),0);var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},t.prototype.writeUInt8=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=e,n+1},t.prototype.writeUInt16LE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8):L(this,e,n,!0),n+2},t.prototype.writeUInt16BE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=e):L(this,e,n,!1),n+2},t.prototype.writeUInt32LE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=e):R(this,e,n,!0),n+4},t.prototype.writeUInt32BE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=e):R(this,e,n,!1),n+4},t.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);A(this,t,e,n,i-1,-i)}var o=0,a=1,s=0>t?1:0;for(this[e]=255&t;++o<n&&(a*=256);)this[e+o]=(t/a>>0)-s&255;return e+n},t.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e=0|e,!r){var i=Math.pow(2,8*n-1);A(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0>t?1:0;for(this[e+o]=255&t;--o>=0&&(a*=256);)this[e+o]=(t/a>>0)-s&255;return e+n},t.prototype.writeInt8=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[n]=e,n+1},t.prototype.writeInt16LE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8):L(this,e,n,!0),n+2},t.prototype.writeInt16BE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=e):L(this,e,n,!1),n+2},t.prototype.writeInt32LE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[n]=e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):R(this,e,n,!0),n+4},t.prototype.writeInt32BE=function(e,n,r){return e=+e,n=0|n,r||A(this,e,n,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=e):R(this,e,n,!1),n+4},t.prototype.writeFloatLE=function(t,e,n){return T(this,t,e,!0,n)},t.prototype.writeFloatBE=function(t,e,n){return T(this,t,e,!1,n)},t.prototype.writeDoubleLE=function(t,e,n){return M(this,t,e,!0,n)},t.prototype.writeDoubleBE=function(t,e,n){return M(this,t,e,!1,n)},t.prototype.copy=function(e,n,r,i){if(r||(r=0),i||0===i||(i=this.length),n>=e.length&&(n=e.length),n||(n=0),i>0&&r>i&&(i=r),i===r)return 0;if(0===e.length||0===this.length)return 0;if(0>n)throw new RangeError("targetStart out of bounds");if(0>r||r>=this.length)throw new RangeError("sourceStart out of bounds");if(0>i)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-n<i-r&&(i=e.length-n+r);var o=i-r;if(1e3>o||!t.TYPED_ARRAY_SUPPORT)for(var a=0;o>a;a++)e[a+n]=this[a+r];else e._set(this.subarray(r,r+o),n);return o},t.prototype.fill=function(t,e,n){if(t||(t=0),e||(e=0),n||(n=this.length),e>n)throw new RangeError("end < start");if(n!==e&&0!==this.length){if(0>e||e>=this.length)throw new RangeError("start out of bounds");if(0>n||n>this.length)throw new RangeError("end out of bounds");var r;if("number"==typeof t)for(r=e;n>r;r++)this[r]=t;else{var i=P(t.toString()),o=i.length;for(r=e;n>r;r++)this[r]=i[r%o]}return this}},t.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(t.TYPED_ARRAY_SUPPORT)return new t(this).buffer;for(var e=new Uint8Array(this.length),n=0,r=e.length;r>n;n+=1)e[n]=this[n];return e.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var K=t.prototype;t._augment=function(e){return e.constructor=t,e._isBuffer=!0,e._set=e.set,e.get=K.get,e.set=K.set,e.write=K.write,e.toString=K.toString,e.toLocaleString=K.toString,e.toJSON=K.toJSON,e.equals=K.equals,e.compare=K.compare,e.indexOf=K.indexOf,e.copy=K.copy,e.slice=K.slice,e.readUIntLE=K.readUIntLE,e.readUIntBE=K.readUIntBE,e.readUInt8=K.readUInt8,e.readUInt16LE=K.readUInt16LE,e.readUInt16BE=K.readUInt16BE,e.readUInt32LE=K.readUInt32LE,e.readUInt32BE=K.readUInt32BE,e.readIntLE=K.readIntLE,e.readIntBE=K.readIntBE,e.readInt8=K.readInt8,e.readInt16LE=K.readInt16LE,e.readInt16BE=K.readInt16BE,e.readInt32LE=K.readInt32LE,e.readInt32BE=K.readInt32BE,e.readFloatLE=K.readFloatLE,e.readFloatBE=K.readFloatBE,e.readDoubleLE=K.readDoubleLE,e.readDoubleBE=K.readDoubleBE,e.writeUInt8=K.writeUInt8,e.writeUIntLE=K.writeUIntLE,e.writeUIntBE=K.writeUIntBE,e.writeUInt16LE=K.writeUInt16LE,e.writeUInt16BE=K.writeUInt16BE,e.writeUInt32LE=K.writeUInt32LE,e.writeUInt32BE=K.writeUInt32BE,e.writeIntLE=K.writeIntLE,e.writeIntBE=K.writeIntBE,e.writeInt8=K.writeInt8,e.writeInt16LE=K.writeInt16LE,e.writeInt16BE=K.writeInt16BE,e.writeInt32LE=K.writeInt32LE,e.writeInt32BE=K.writeInt32BE,e.writeFloatLE=K.writeFloatLE,e.writeFloatBE=K.writeFloatBE,e.writeDoubleLE=K.writeDoubleLE,e.writeDoubleBE=K.writeDoubleBE,e.fill=K.fill,e.inspect=K.inspect,e.toArrayBuffer=K.toArrayBuffer,e};var X=/[^+\/0-9A-z\-]/g}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(t,e){var n="normal";return t&&e?n="bolditalics":t?n="bold":e&&(n="italics"),n}function i(t,e){this.fonts={},this.pdfDoc=e,this.fontWrappers={};for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}var o=n(11),a=n(16);i.prototype.provideFont=function(t,e,n){if(!this.fonts[t])return this.pdfDoc._font;var i=r(e,n);return this.fontWrappers[t]=this.fontWrappers[t]||{},this.fontWrappers[t][i]||(this.fontWrappers[t][i]=new a(this.pdfDoc,this.fonts[t][i],t+"("+i+")")),this.fontWrappers[t][i]},i.prototype.setFontRefsToPdfDoc=function(){var t=this;o.each(t.fontWrappers,function(e){o.each(e,function(e){o.each(e.pdfFonts,function(e){t.pdfDoc.page.fonts[e.id]||(t.pdfDoc.page.fonts[e.id]=e.ref())})})})},t.exports=i},function(t,e,n){"use strict";function r(t,e){a.each(e,function(e){t.push(e)})}function i(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new s,this.imageMeasure=n,this.tableLayouts={}}function o(t){var e=t.x,n=t.y;t.positions=[],a.each(t.canvas,function(t){var e=t.x,n=t.y;t.resetXY=function(){t.x=e,t.y=n}}),t.resetXY=function(){t.x=e,t.y=n,a.each(t.canvas,function(t){t.resetXY()})}}var a=n(11),s=n(18),h=n(19),u=n(20),l=n(21),c=n(22),f=n(23),d=n(24),p=n(25).pack,g=n(25).offsetVector,v=n(25).fontStringify,m=n(25).isFunction,y=n(26),w=n(27);i.prototype.registerTableLayouts=function(t){this.tableLayouts=p(this.tableLayouts,t)},i.prototype.layoutDocument=function(t,e,n,r,i,o,s,u,l,c){function f(t,e){return t=a.reject(t,function(t){return a.isEmpty(t.positions)}),a.each(t,function(t){var n=a.pick(t,["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"]);n.startPosition=a.first(t.positions),n.pageNumbers=a.chain(t.positions).map("pageNumber").uniq().value(),n.pages=e.length,n.stack=a.isArray(t.stack),t.nodeInfo=n}),a.any(t,function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=a.first(t.nodeInfo.pageNumbers),i=a.chain(n).drop(e+1).filter(function(t){return a.contains(t.nodeInfo.pageNumbers,r)}).value(),o=a.chain(n).drop(e+1).filter(function(t){return a.contains(t.nodeInfo.pageNumbers,r+1)}).value(),s=a.chain(n).take(e).filter(function(t){return a.contains(t.nodeInfo.pageNumbers,r)}).value();if(c(t.nodeInfo,a.map(i,"nodeInfo"),a.map(o,"nodeInfo"),a.map(s,"nodeInfo")))return t.pageBreak="before",!0}})}function d(t){a.each(t.linearNodeList,function(t){t.resetXY()})}m(c)||(c=function(){return!1}),this.docMeasure=new h(e,n,r,this.imageMeasure,this.tableLayouts,u);for(var p=this.tryLayoutDocument(t,e,n,r,i,o,s,u,l);f(p.linearNodeList,p.pages);)d(p),p=this.tryLayoutDocument(t,e,n,r,i,o,s,u,l);return p.pages},i.prototype.tryLayoutDocument=function(t,e,n,r,i,o,a,s,h,c){this.linearNodeList=[],t=this.docMeasure.measureDocument(t),this.writer=new l(new u(this.pageSize,this.pageMargins),this.tracker);var f=this;return this.writer.context().tracker.startTracking("pageAdded",function(){f.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(o,a),null!=h&&this.addWatermark(h,e),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},i.prototype.addBackground=function(t){var e=m(t)?t:function(){return t},n=e(this.writer.context().page+1);if(n){var r=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(r.width,r.height),this.processNode(this.docMeasure.measureDocument(n)),this.writer.commitUnbreakableBlock(0,0)}},i.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return t},e)},i.prototype.addDynamicRepeatable=function(t,e){for(var n=this.writer.context().pages,r=0,i=n.length;i>r;r++){this.writer.context().page=r;var o=t(r+1,i);if(o){var a=e(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(a.width,a.height),this.processNode(this.docMeasure.measureDocument(o)),this.writer.commitUnbreakableBlock(a.x,a.y)}}},i.prototype.addHeadersAndFooters=function(t,e){var n=function(t,e){return{x:0,y:0,width:t.width,height:e.top}},r=function(t,e){return{x:0,y:t.height-e.bottom,width:t.width,height:e.bottom}};m(t)?this.addDynamicRepeatable(t,n):t&&this.addStaticRepeatable(t,n),m(e)?this.addDynamicRepeatable(e,r):e&&this.addStaticRepeatable(e,r)},i.prototype.addWatermark=function(t,e){function n(t,e,n){for(var r,i=t.width,o=t.height,a=.8*Math.sqrt(i*i+o*o),s=new y(n),h=new w,u=0,l=1e3,c=(u+l)/2;Math.abs(u-l)>1;)h.push({fontSize:c}),r=s.sizeOfString(e,h),r.width>a?(l=c,c=(u+l)/2):r.width<a&&(u=c,c=(u+l)/2),h.pop();return{size:r,fontSize:c}}for(var r=Object.getOwnPropertyNames(e.fonts)[0],i={text:t,font:e.provideFont(e[r],!1,!1),size:n(this.pageSize,t,e)},o=this.writer.context().pages,a=0,s=o.length;s>a;a++)o[a].watermark=i},i.prototype.processNode=function(t){function e(e){var r=t._margin;"before"===t.pageBreak&&n.writer.moveToNextPage(t.pageOrientation),r&&(n.writer.context().moveDown(r[1]),n.writer.context().addMargin(r[0],r[2])),e(),r&&(n.writer.context().addMargin(-r[0],-r[2]),n.writer.context().moveDown(r[3])),"after"===t.pageBreak&&n.writer.moveToNextPage(t.pageOrientation)}var n=this;this.linearNodeList.push(t),o(t),e(function(){var e=t.absolutePosition;if(e&&(n.writer.context().beginDetachedBlock(),n.writer.context().moveTo(e.x||0,e.y||0)),t.stack)n.processVerticalContainer(t);else if(t.columns)n.processColumns(t);else if(t.ul)n.processList(!1,t);else if(t.ol)n.processList(!0,t);else if(t.table)n.processTable(t);else if(void 0!==t.text)n.processLeaf(t);else if(t.image)n.processImage(t);else if(t.canvas)n.processCanvas(t);else if(t.qr)n.processQr(t);else if(!t._span)throw"Unrecognized document structure: "+JSON.stringify(t,v);e&&n.writer.context().endDetachedBlock()})},i.prototype.processVerticalContainer=function(t){var e=this;t.stack.forEach(function(n){e.processNode(n),r(t.positions,n.positions)})},i.prototype.processColumns=function(t){function e(t){if(!t)return null;var e=[];e.push(0);for(var r=n.length-1;r>0;r--)e.push(t);return e}var n=t.columns,i=this.writer.context().availableWidth,o=e(t._gap);o&&(i-=(o.length-1)*t._gap),c.buildColumnWidths(n,i);var a=this.processRow(n,n,o);r(t.positions,a.positions)},i.prototype.processRow=function(t,e,n,i,o){function a(t){for(var e,n=0,r=l.length;r>n;n++){var i=l[n];if(i.prevPage===t.prevPage){e=i;break}}e||(e=t,l.push(e)),e.prevY=Math.max(e.prevY,t.prevY),e.y=Math.min(e.y,t.y)}function s(t){return n&&n.length>t?n[t]:0}function h(t,e){if(t.rowSpan&&t.rowSpan>1){var n=o+t.rowSpan-1;if(n>=i.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return i[n][e]}return null}var u=this,l=[],c=[];return this.tracker.auto("pageChanged",a,function(){e=e||t,u.writer.context().beginColumnGroup();for(var i=0,o=t.length;o>i;i++){var a=t[i],l=e[i]._calcWidth,f=s(i);if(a.colSpan&&a.colSpan>1)for(var d=1;d<a.colSpan;d++)l+=e[++i]._calcWidth+n[i];u.writer.context().beginColumn(l,f,h(a,i)),a._span?a._columnEndingContext&&u.writer.context().markEnding(a):(u.processNode(a),r(c,a.positions))}u.writer.context().completeColumnGroup()}),{pageBreaks:l,positions:c}},i.prototype.processList=function(t,e){function n(t){if(s){var e=s;if(s=null,e.canvas){var n=e.canvas[0];g(n,-e._minWidth,0),i.writer.addVector(n)}else{var r=new d(i.pageSize.width);r.addInline(e._inlines[0]),r.x=-e._minWidth,r.y=t.getAscenderHeight()-r.getAscenderHeight(),i.writer.addLine(r,!0)}}}var i=this,o=t?e.ol:e.ul,a=e._gapSize;this.writer.context().addMargin(a.width);var s;this.tracker.auto("lineAdded",n,function(){o.forEach(function(t){s=t.listMarker,i.processNode(t),r(e.positions,t.positions)})}),this.writer.context().addMargin(-a.width)},i.prototype.processTable=function(t){var e=new f(t);e.beginTable(this.writer);for(var n=0,i=t.table.body.length;i>n;n++){e.beginRow(n,this.writer);var o=this.processRow(t.table.body[n],t.table.widths,t._offsets.offsets,t.table.body,n);r(t.positions,o.positions),e.endRow(n,this.writer,o.pageBreaks)}e.endTable(this.writer)},i.prototype.processLeaf=function(t){for(var e=this.buildNextLine(t);e;){var n=this.writer.addLine(e);t.positions.push(n),e=this.buildNextLine(t)}},i.prototype.buildNextLine=function(t){if(!t._inlines||0===t._inlines.length)return null;for(var e=new d(this.writer.context().availableWidth);t._inlines&&t._inlines.length>0&&e.hasEnoughSpaceForInline(t._inlines[0]);)e.addInline(t._inlines.shift());return e.lastLineInParagraph=0===t._inlines.length,e},i.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},i.prototype.processCanvas=function(t){var e=t._minHeight;this.writer.context().availableHeight<e&&this.writer.moveToNextPage(),t.canvas.forEach(function(e){var n=this.writer.addVector(e);t.positions.push(n)},this),this.writer.context().moveDown(e)},i.prototype.processQr=function(t){var e=this.writer.addQr(t);t.positions.push(e)},t.exports=i},function(t,e,n){t.exports={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]}},function(t,e,n){(function(e){"use strict";function r(t,e){this.pdfDoc=t,this.imageDictionary=e||{}}var i=(n(28),n(17));r.prototype.measureImage=function(t){function n(t){var n=a.imageDictionary[t];if(!n)return t;var r=n.indexOf("base64,");if(0>r)throw"invalid image format, images dictionary should contain dataURL entries";return new e(n.substring(r+7),"base64")}var r,o,a=this;return this.pdfDoc._imageRegistry[t]?r=this.pdfDoc._imageRegistry[t]:(o="I"+ ++this.pdfDoc._imageCount,r=i.open(n(t),o),r.embed(this.pdfDoc),this.pdfDoc._imageRegistry[t]=r),{width:r.width,height:r.height}},t.exports=r}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(t){for(var e=[],n=null,r=0,i=t.inlines.length;i>r;r++){var o=t.inlines[r],a=o.decoration;if(a){var s=o.decorationColor||o.color||"black",h=o.decorationStyle||"solid";a=Array.isArray(a)?a:[a];for(var u=0,l=a.length;l>u;u++){var c=a[u];n&&c===n.decoration&&h===n.decorationStyle&&s===n.decorationColor&&"lineThrough"!==c?n.inlines.push(o):(n={line:t,decoration:c,decorationColor:s,decorationStyle:h,inlines:[o]},e.push(n))}}else n=null}return e}function i(t,e,n,r){function i(){for(var e=0,n=0,r=t.inlines.length;r>n;n++){var i=t.inlines[n];e=i.fontSize>e?n:e}return t.inlines[e]}function o(){for(var e=0,n=0,r=t.inlines.length;r>n;n++)e+=t.inlines[n].width;return e}var a=t.inlines[0],s=i(),h=o(),u=t.line.getAscenderHeight(),l=s.font.ascender/1e3*s.fontSize,c=s.height,f=c-l,d=.5+.12*Math.floor(Math.max(s.fontSize-8,0)/2);switch(t.decoration){case"underline":n+=u+.45*f;break;case"overline":n+=u-.85*l;break;case"lineThrough":n+=u-.25*l;break;default:throw"Unkown decoration : "+t.decoration}if(r.save(),"double"===t.decorationStyle){var p=Math.max(.5,2*d);r.fillColor(t.decorationColor).rect(e+a.x,n-d/2,h,d/2).fill().rect(e+a.x,n+p-d/2,h,d/2).fill()}else if("dashed"===t.decorationStyle){var g=Math.ceil(h/6.8),v=e+a.x;r.rect(v,n,h,d).clip(),r.fillColor(t.decorationColor);for(var m=0;g>m;m++)r.rect(v,n-d/2,3.96,d).fill(),v+=6.8}else if("dotted"===t.decorationStyle){var y=Math.ceil(h/(3*d)),w=e+a.x;r.rect(w,n,h,d).clip(),r.fillColor(t.decorationColor);for(var _=0;y>_;_++)r.rect(w,n-d/2,d,d).fill(),w+=3*d}else if("wavy"===t.decorationStyle){var b=.7,x=1,S=Math.ceil(h/(2*b))+1,k=e+a.x-1;r.rect(e+a.x,n-x,h,n+x).clip(),r.lineWidth(.24),r.moveTo(k,n);for(var E=0;S>E;E++)r.bezierCurveTo(k+b,n-x,k+2*b,n-x,k+3*b,n).bezierCurveTo(k+4*b,n+x,k+5*b,n+x,k+6*b,n),k+=6*b;r.stroke(t.decorationColor)}else r.fillColor(t.decorationColor).rect(e+a.x,n-d/2,h,d).fill();r.restore()}function o(t,e,n,o){for(var a=r(t),s=0,h=a.length;h>s;s++)i(a[s],e,n,o)}function a(t,e,n,r){for(var i=t.getHeight(),o=0,a=t.inlines.length;a>o;o++){var s=t.inlines[o];s.background&&r.fillColor(s.background).rect(e+s.x,n,s.width,i).fill()}}t.exports={drawBackground:a,drawDecorations:o}},function(t,e,n){(function(e,n){"use strict";function r(){this.fileSystem={},this.baseSystem={}}function i(t){return 0===t.indexOf(n)&&(t=t.substring(n.length)),0===t.indexOf("/")&&(t=t.substring(1)),t}r.prototype.readFileSync=function(t){t=i(t);var n=this.baseSystem[t];return n?new e(n,"base64"):this.fileSystem[t]},r.prototype.writeFileSync=function(t,e){this.fileSystem[i(t)]=e},r.prototype.bindFS=function(t){this.baseSystem=t},t.exports=new r}).call(e,n(4).Buffer,"/")},function(t,e,n){var r;(function(t,i){(function(){function o(t,e){if(t!==e){var n=t===t,r=e===e;if(t>e||!n||"undefined"==typeof t&&r)return 1;if(e>t||!r||"undefined"==typeof e&&n)return-1}return 0}function a(t,e,n){if(e!==e)return m(t,n);for(var r=(n||0)-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function s(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function h(t){return"string"==typeof t?t:null==t?"":t+""}function u(t){return t.charCodeAt(0)}function l(t,e){for(var n=-1,r=t.length;++n<r&&e.indexOf(t.charAt(n))>-1;);return n}function c(t,e){for(var n=t.length;n--&&e.indexOf(t.charAt(n))>-1;);return n}function f(t,e){return o(t.criteria,e.criteria)||t.index-e.index}function d(t,e){for(var n=-1,r=t.criteria,i=e.criteria,a=r.length;++n<a;){var s=o(r[n],i[n]);if(s)return s}return t.index-e.index}function p(t){return Ht[t]}function g(t){return Zt[t]}function v(t){return"\\"+Yt[t]}function m(t,e,n){for(var r=t.length,i=n?e||r:(e||0)-1;n?i--:++i<r;){var o=t[i];if(o!==o)return i}return-1}function y(t){return t&&"object"==typeof t||!1}function w(t){return 160>=t&&t>=9&&13>=t||32==t||160==t||5760==t||6158==t||t>=8192&&(8202>=t||8232==t||8233==t||8239==t||8287==t||12288==t||65279==t)}function _(t,e){for(var n=-1,r=t.length,i=-1,o=[];++n<r;)t[n]===e&&(t[n]=G,o[++i]=n);return o}function b(t,e){for(var n,r=-1,i=t.length,o=-1,a=[];++r<i;){var s=t[r],h=e?e(s,r,t):s;r&&n===h||(n=h,a[++o]=s)}return a}function x(t){for(var e=-1,n=t.length;++e<n&&w(t.charCodeAt(e)););return e}function S(t){for(var e=t.length;e--&&w(t.charCodeAt(e)););return e}function k(t){return Gt[t]}function E(t){function e(t){if(y(t)&&!ja(t)){if(t instanceof n)return t;if(qo.call(t,"__wrapped__"))return new n(t.__wrapped__,t.__chain__,Vt(t.__actions__))}return new n(t)}function n(t,e,n){this.__actions__=n||[],this.__chain__=!!e,this.__wrapped__=t}function r(t){this.actions=null,this.dir=1,this.dropCount=0,this.filtered=!1,this.iteratees=null,this.takeCount=xa,this.views=null,this.wrapped=t}function i(){var t=this.actions,e=this.iteratees,n=this.views,i=new r(this.wrapped);return i.actions=t?Vt(t):null,i.dir=this.dir,i.dropCount=this.dropCount,i.filtered=this.filtered,i.iteratees=e?Vt(e):null,i.takeCount=this.takeCount,i.views=n?Vt(n):null,i}function w(){if(this.filtered){var t=new r(this);t.dir=-1,t.filtered=!0}else t=this.clone(),t.dir*=-1;return t}function J(){var t=this.wrapped.value();if(!ja(t))return qe(t,this.actions);var e=this.dir,n=0>e,r=vn(0,t.length,this.views),i=r.start,o=r.end,a=o-i,s=this.dropCount,h=va(a,this.takeCount-s),u=n?o:i-1,l=this.iteratees,c=l?l.length:0,f=0,d=[];t:for(;a--&&h>f;){u+=e;for(var p=-1,g=t[u];++p<c;){var v=l[p],m=v.iteratee,y=m(g,u,t),w=v.type;if(w==j)g=y;else if(!y){if(w==N)continue t;break t}}s?s--:d[f++]=g}return d}function nt(){this.__data__={}}function it(t){return this.has(t)&&delete this.__data__[t]}function Ht(t){return"__proto__"==t?C:this.__data__[t]}function Zt(t){return"__proto__"!=t&&qo.call(this.__data__,t)}function Gt(t,e){return"__proto__"!=t&&(this.__data__[t]=e),this}function qt(t){var e=t?t.length:0;for(this.data={hash:fa(null),set:new oa};e--;)this.push(t[e])}function Yt(t,e){var n=t.data,r="string"==typeof e||_i(e)?n.set.has(e):n.hash[e];return r?0:-1}function Xt(t){var e=this.data;"string"==typeof t||_i(t)?e.set.add(t):e.hash[t]=!0}function Vt(t,e){var n=-1,r=t.length;for(e||(e=Bo(r));++n<r;)e[n]=t[n];return e}function $t(t,e){for(var n=-1,r=t.length;++n<r&&e(t[n],n,t)!==!1;);return t}function Qt(t,e){for(var n=t.length;n--&&e(t[n],n,t)!==!1;);return t}function te(t,e){for(var n=-1,r=t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function ee(t,e){for(var n=-1,r=t.length,i=-1,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[++i]=a)}return o}function ne(t,e){for(var n=-1,r=t.length,i=Bo(r);++n<r;)i[n]=e(t[n],n,t);return i}function re(t){for(var e=-1,n=t.length,r=ba;++e<n;){var i=t[e];i>r&&(r=i)}return r}function ie(t){for(var e=-1,n=t.length,r=xa;++e<n;){var i=t[e];r>i&&(r=i)}return r}function oe(t,e,n,r){var i=-1,o=t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function ae(t,e,n,r){var i=t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function se(t,e){for(var n=-1,r=t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function he(t,e){return"undefined"==typeof t?e:t}function ue(t,e,n,r){return"undefined"!=typeof t&&qo.call(r,n)?t:e}function le(t,e,n){var r=qa(e);if(!n)return fe(e,t,r);for(var i=-1,o=r.length;++i<o;){var a=r[i],s=t[a],h=n(s,e[a],a,t,e);(h===h?h===s:s!==s)&&("undefined"!=typeof s||a in t)||(t[a]=h)}return t}function ce(t,e){for(var n=-1,r=t.length,i=Sn(r),o=e.length,a=Bo(o);++n<o;){var s=e[n];i?(s=parseFloat(s),a[n]=bn(s,r)?t[s]:C):a[n]=t[s]}return a}function fe(t,e,n){n||(n=e,e={});for(var r=-1,i=n.length;++r<i;){var o=n[r];e[o]=t[o]}return e}function de(t,e){for(var n=-1,r=e.length;++n<r;){var i=e[n];t[i]=un(t[i],A,t)}return t}function pe(t,e,n){var r=typeof t;return"function"==r?"undefined"!=typeof e&&_n(t)?Xe(t,e,n):t:null==t?bo:"object"==r?De(t):Fe(t+"")}function ge(t,e,n,r,i,o,a){var s;if(n&&(s=i?n(t,r,i):n(t)),"undefined"!=typeof s)return s;if(!_i(t))return t;var h=ja(t);if(h){if(s=mn(t),!e)return Vt(t,s)}else{var u=Ko.call(t),l=u==$;if(u!=tt&&u!=q&&(!l||i))return Nt[u]?wn(t,u,e):i?t:{};if(s=yn(l?{}:t),!e)return fe(t,s,qa(t))}o||(o=[]),a||(a=[]);for(var c=o.length;c--;)if(o[c]==t)return a[c];return o.push(t),a.push(s),(h?$t:Ie)(t,function(r,i){s[i]=ge(r,e,n,i,t,o,a)}),s}function ve(t,e,n,r){if(!wi(t))throw new Wo(Z);return aa(function(){t.apply(C,je(n,r))},e)}function me(t,e){var n=t?t.length:0,r=[];if(!n)return r;var i=-1,o=gn(),s=o==a,h=s&&e.length>=200&&Ta(e),u=e.length;h&&(o=Yt,s=!1,e=h);t:for(;++i<n;){var l=t[i];if(s&&l===l){for(var c=u;c--;)if(e[c]===l)continue t;r.push(l)}else o(e,l)<0&&r.push(l)}return r}function ye(t,e){var n=t?t.length:0;if(!Sn(n))return Ie(t,e);for(var r=-1,i=Tn(t);++r<n&&e(i[r],r,i)!==!1;);return t}function we(t,e){var n=t?t.length:0;if(!Sn(n))return Ae(t,e);for(var r=Tn(t);n--&&e(r[n],n,r)!==!1;);return t}function _e(t,e){var n=!0;return ye(t,function(t,r,i){return n=!!e(t,r,i)}),n}function be(t,e){var n=[];return ye(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function xe(t,e,n,r){var i;return n(t,function(t,n,o){return e(t,n,o)?(i=r?n:t,!1):void 0}),i}function Se(t,e,n,r){for(var i=(r||0)-1,o=t.length,a=-1,s=[];++i<o;){var h=t[i];if(y(h)&&Sn(h.length)&&(ja(h)||fi(h))){e&&(h=Se(h,e,n));var u=-1,l=h.length;for(s.length+=l;++u<l;)s[++a]=h[u]}else n||(s[++a]=h)}return s}function ke(t,e,n){for(var r=-1,i=Tn(t),o=n(t),a=o.length;++r<a;){var s=o[r];if(e(i[s],s,i)===!1)break}return t}function Ee(t,e,n){for(var r=Tn(t),i=n(t),o=i.length;o--;){var a=i[o];if(e(r[a],a,r)===!1)break}return t}function Ce(t,e){return ke(t,e,Hi)}function Ie(t,e){return ke(t,e,qa)}function Ae(t,e){return Ee(t,e,qa)}function Le(t,e){for(var n=-1,r=e.length,i=-1,o=[];++n<r;){var a=e[n];wi(t[a])&&(o[++i]=a)}return o}function Re(t,e,n){var r=-1,i="function"==typeof e,o=t?t.length:0,a=Sn(o)?Bo(o):[];return ye(t,function(t){ +var o=i?e:null!=t&&t[e];a[++r]=o?o.apply(t,n):C}),a}function Be(t,e,n,r,i,o){if(t===e)return 0!==t||1/t==1/e;var a=typeof t,s=typeof e;return"function"!=a&&"object"!=a&&"function"!=s&&"object"!=s||null==t||null==e?t!==t&&e!==e:Te(t,e,Be,n,r,i,o)}function Te(t,e,n,r,i,o,a){var s=ja(t),h=ja(e),u=Y,l=Y;s||(u=Ko.call(t),u==q?u=tt:u!=tt&&(s=Ai(t))),h||(l=Ko.call(e),l==q?l=tt:l!=tt&&(h=Ai(e)));var c=u==tt,f=l==tt,d=u==l;if(d&&!s&&!c)return cn(t,e,u);var p=c&&qo.call(t,"__wrapped__"),g=f&&qo.call(e,"__wrapped__");if(p||g)return n(p?t.value():t,g?e.value():e,r,i,o,a);if(!d)return!1;o||(o=[]),a||(a=[]);for(var v=o.length;v--;)if(o[v]==t)return a[v]==e;o.push(t),a.push(e);var m=(s?ln:fn)(t,e,n,r,i,o,a);return o.pop(),a.pop(),m}function Me(t,e,n,r,i){var o=e.length;if(null==t)return!o;for(var a=-1,s=!i;++a<o;)if(s&&r[a]?n[a]!==t[e[a]]:!qo.call(t,e[a]))return!1;for(a=-1;++a<o;){var h=e[a];if(s&&r[a])var u=qo.call(t,h);else{var l=t[h],c=n[a];u=i?i(l,c,h):C,"undefined"==typeof u&&(u=Be(c,l,i,!0))}if(!u)return!1}return!0}function Oe(t,e){var n=[];return ye(t,function(t,r,i){n.push(e(t,r,i))}),n}function De(t){var e=qa(t),n=e.length;if(1==n){var r=e[0],i=t[r];if(kn(i))return function(t){return null!=t&&i===t[r]&&qo.call(t,r)}}for(var o=Bo(n),a=Bo(n);n--;)i=t[e[n]],o[n]=i,a[n]=kn(i);return function(t){return Me(t,e,o,a)}}function Ue(t,e,n,r,i){var o=Sn(e.length)&&(ja(e)||Ai(e));return(o?$t:Ie)(e,function(e,a,s){if(y(e))return r||(r=[]),i||(i=[]),Pe(t,s,a,Ue,n,r,i);var h=t[a],u=n?n(h,e,a,t,s):C,l="undefined"==typeof u;l&&(u=e),!o&&"undefined"==typeof u||!l&&(u===u?u===h:h!==h)||(t[a]=u)}),t}function Pe(t,e,n,r,i,o,a){for(var s=o.length,h=e[n];s--;)if(o[s]==h)return void(t[n]=a[s]);var u=t[n],l=i?i(u,h,n,t,e):C,c="undefined"==typeof l;c&&(l=h,Sn(h.length)&&(ja(h)||Ai(h))?l=ja(u)?u:u?Vt(u):[]:Za(h)||fi(h)?l=fi(u)?Bi(u):Za(u)?u:{}:c=!1),o.push(h),a.push(l),c?t[n]=r(l,h,i,o,a):(l===l?l!==u:u===u)&&(t[n]=l)}function Fe(t){return function(e){return null==e?C:e[t]}}function ze(t,e){var n=e.length,r=ce(t,e);for(e.sort(o);n--;){var i=parseFloat(e[n]);if(i!=a&&bn(i)){var a=i;sa.call(t,i,1)}}return r}function We(t,e){return t+ea(_a()*(e-t+1))}function Ne(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function je(t,e,n){var r=-1,i=t.length;e=null==e?0:+e||0,0>e&&(e=-e>i?0:i+e),n="undefined"==typeof n||n>i?i:+n||0,0>n&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Bo(i);++r<i;)o[r]=t[r+e];return o}function He(t,e){var n;return ye(t,function(t,r,i){return n=e(t,r,i),!n}),!!n}function Ze(t,e){var n=-1,r=gn(),i=t.length,o=r==a,s=o&&i>=200,h=s&&Ta(),u=[];h?(r=Yt,o=!1):(s=!1,h=e?[]:u);t:for(;++n<i;){var l=t[n],c=e?e(l,n,t):l;if(o&&l===l){for(var f=h.length;f--;)if(h[f]===c)continue t;e&&h.push(c),u.push(l)}else r(h,c)<0&&((e||s)&&h.push(c),u.push(l))}return u}function Ge(t,e){for(var n=-1,r=e.length,i=Bo(r);++n<r;)i[n]=t[e[n]];return i}function qe(t,e){var n=t;n instanceof r&&(n=n.value());for(var i=-1,o=e.length;++i<o;){var a=[n],s=e[i];ra.apply(a,s.args),n=s.func.apply(s.thisArg,a)}return n}function Ye(t,e,n){var r=0,i=t?t.length:r;if("number"==typeof e&&e===e&&Ea>=i){for(;i>r;){var o=r+i>>>1,a=t[o];(n?e>=a:e>a)?r=o+1:i=o}return i}return Ke(t,e,bo,n)}function Ke(t,e,n,r){e=n(e);for(var i=0,o=t?t.length:0,a=e!==e,s="undefined"==typeof e;o>i;){var h=ea((i+o)/2),u=n(t[h]),l=u===u;if(a)var c=l||r;else c=s?l&&(r||"undefined"!=typeof u):r?e>=u:e>u;c?i=h+1:o=h}return va(o,ka)}function Xe(t,e,n){if("function"!=typeof t)return bo;if("undefined"==typeof e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)};case 5:return function(n,r,i,o,a){return t.call(e,n,r,i,o,a)}}return function(){return t.apply(e,arguments)}}function Ve(t){return Jo.call(t,0)}function $e(t,e,n){for(var r=n.length,i=-1,o=ga(t.length-r,0),a=-1,s=e.length,h=Bo(o+s);++a<s;)h[a]=e[a];for(;++i<r;)h[n[i]]=t[i];for(;o--;)h[a++]=t[i++];return h}function Je(t,e,n){for(var r=-1,i=n.length,o=-1,a=ga(t.length-i,0),s=-1,h=e.length,u=Bo(a+h);++o<a;)u[o]=t[o];for(var l=o;++s<h;)u[l+s]=e[s];for(;++r<i;)u[l+n[r]]=t[o++];return u}function Qe(t,e){return function(n,r,i){var o=e?e():{};if(r=pn(r,i,3),ja(n))for(var a=-1,s=n.length;++a<s;){var h=n[a];t(o,h,r(h,a,n),n)}else ye(n,function(e,n,i){t(o,e,r(e,n,i),i)});return o}}function tn(t){return function(){var e=arguments.length,n=arguments[0];if(2>e||null==n)return n;if(e>3&&xn(arguments[1],arguments[2],arguments[3])&&(e=2),e>3&&"function"==typeof arguments[e-2])var r=Xe(arguments[--e-1],arguments[e--],5);else e>2&&"function"==typeof arguments[e-1]&&(r=arguments[--e]);for(var i=0;++i<e;){var o=arguments[i];o&&t(n,o,r)}return n}}function en(t,e){function n(){return(this instanceof n?r:t).apply(e,arguments)}var r=rn(t);return n}function nn(t){return function(e){for(var n=-1,r=mo(to(e)),i=r.length,o="";++n<i;)o=t(o,r[n],n);return o}}function rn(t){return function(){var e=Ra(t.prototype),n=t.apply(e,arguments);return _i(n)?n:e}}function on(t,e){return function(n,r,i){i&&xn(n,r,i)&&(r=null);var o=pn(),a=null==r;if(o===pe&&a||(a=!1,r=o(r,i,3)),a){var s=ja(n);if(s||!Ii(n))return t(s?n:Bn(n));r=u}return dn(n,r,e)}}function an(t,e,n,r,i,o,a,s,h,u){function l(){for(var w=arguments.length,b=w,x=Bo(w);b--;)x[b]=arguments[b];if(r&&(x=$e(x,r,i)),o&&(x=Je(x,o,a)),p||v){var S=l.placeholder,k=_(x,S);if(w-=k.length,u>w){var E=s?Vt(s):null,C=ga(u-w,0),I=p?k:null,R=p?null:k,B=p?x:null,T=p?null:x;e|=p?M:O,e&=~(p?O:M),g||(e&=~(A|L));var D=an(t,e,n,B,I,T,R,E,h,C);return D.placeholder=S,D}}var U=f?n:this;return d&&(t=U[y]),s&&(x=An(x,s)),c&&h<x.length&&(x.length=h),(this instanceof l?m||rn(t):t).apply(U,x)}var c=e&U,f=e&A,d=e&L,p=e&B,g=e&R,v=e&T,m=!d&&rn(t),y=t;return l}function sn(t,e,n){var r=t.length;if(e=+e,r>=e||!da(e))return"";var i=e-r;return n=null==n?" ":n+"",ho(n,Qo(i/n.length)).slice(0,i)}function hn(t,e,n,r){function i(){for(var e=-1,s=arguments.length,h=-1,u=r.length,l=Bo(s+u);++h<u;)l[h]=r[h];for(;s--;)l[h++]=arguments[++e];return(this instanceof i?a:t).apply(o?n:this,l)}var o=e&A,a=rn(t);return i}function un(t,e,n,r,i,o,a,s){var h=e&L;if(!h&&!wi(t))throw new Wo(Z);var u=r?r.length:0;if(u||(e&=~(M|O),r=i=null),u-=i?i.length:0,e&O){var l=r,c=i;r=i=null}var f=!h&&Ma(t),d=[t,e,n,r,i,l,c,o,a,s];if(f&&f!==!0&&(En(d,f),e=d[1],s=d[9]),d[9]=null==s?h?0:t.length:ga(s-u,0)||0,e==A)var p=en(d[0],d[2]);else p=e!=M&&e!=(A|M)||d[4].length?an.apply(null,d):hn.apply(null,d);var g=f?Ba:Oa;return g(p,d)}function ln(t,e,n,r,i,o,a){var s=-1,h=t.length,u=e.length,l=!0;if(h!=u&&!(i&&u>h))return!1;for(;l&&++s<h;){var c=t[s],f=e[s];if(l=C,r&&(l=i?r(f,c,s):r(c,f,s)),"undefined"==typeof l)if(i)for(var d=u;d--&&(f=e[d],!(l=c&&c===f||n(c,f,r,i,o,a))););else l=c&&c===f||n(c,f,r,i,o,a)}return!!l}function cn(t,e,n){switch(n){case K:case X:return+t==+e;case V:return t.name==e.name&&t.message==e.message;case Q:return t!=+t?e!=+e:0==t?1/t==1/e:t==+e;case et:case rt:return t==e+""}return!1}function fn(t,e,n,r,i,o,a){var s=qa(t),h=s.length,u=qa(e),l=u.length;if(h!=l&&!i)return!1;for(var c,f=-1;++f<h;){var d=s[f],p=qo.call(e,d);if(p){var g=t[d],v=e[d];p=C,r&&(p=i?r(v,g,d):r(g,v,d)),"undefined"==typeof p&&(p=g&&g===v||n(g,v,r,i,o,a))}if(!p)return!1;c||(c="constructor"==d)}if(!c){var m=t.constructor,y=e.constructor;if(m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y))return!1}return!0}function dn(t,e,n){var r=n?xa:ba,i=r,o=i;return ye(t,function(t,a,s){var h=e(t,a,s);((n?i>h:h>i)||h===r&&h===o)&&(i=h,o=t)}),o}function pn(t,n,r){var i=e.callback||wo;return i=i===wo?pe:i,r?i(t,n,r):i}function gn(t,n,r){var i=e.indexOf||Gn;return i=i===Gn?a:i,t?i(t,n,r):i}function vn(t,e,n){for(var r=-1,i=n?n.length:0;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=va(e,t+a);break;case"takeRight":t=ga(t,e-a)}}return{start:t,end:e}}function mn(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&qo.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function yn(t){var e=t.constructor;return"function"==typeof e&&e instanceof e||(e=Po),new e}function wn(t,e,n){var r=t.constructor;switch(e){case ot:return Ve(t);case K:case X:return new r(+t);case at:case st:case ht:case ut:case lt:case ct:case ft:case dt:case pt:var i=t.buffer;return new r(n?Ve(i):i,t.byteOffset,t.length);case Q:case rt:return new r(t);case et:var o=new r(t.source,Ct.exec(t));o.lastIndex=t.lastIndex}return o}function _n(t){var n=e.support,r=!(n.funcNames?t.name:n.funcDecomp);if(!r){var i=Zo.call(t);n.funcNames||(r=!It.test(i)),r||(r=Ot.test(i)||Si(t),Ba(t,r))}return r}function bn(t,e){return t=+t,e=null==e?Ia:e,t>-1&&t%1==0&&e>t}function xn(t,e,n){if(!_i(n))return!1;var r=typeof e;if("number"==r)var i=n.length,o=Sn(i)&&bn(e,i);else o="string"==r&&e in n;return o&&n[e]===t}function Sn(t){return"number"==typeof t&&t>-1&&t%1==0&&Ia>=t}function kn(t){return t===t&&(0===t?1/t>0:!_i(t))}function En(t,e){var n=t[1],r=e[1],i=n|r,o=U|D,a=A|L,s=o|a|R|T,h=n&U&&!(r&U),u=n&D&&!(r&D),l=(u?t:e)[7],c=(h?t:e)[8],f=!(n>=D&&r>a||n>a&&r>=D),d=i>=o&&s>=i&&(D>n||(u||h)&&l.length<=c);if(!f&&!d)return t;r&A&&(t[2]=e[2],i|=n&A?0:R);var p=e[3];if(p){var g=t[3];t[3]=g?$e(g,p,e[4]):Vt(p),t[4]=g?_(t[3],G):Vt(e[4])}return p=e[5],p&&(g=t[5],t[5]=g?Je(g,p,e[6]):Vt(p),t[6]=g?_(t[5],G):Vt(e[6])),p=e[7],p&&(t[7]=Vt(p)),r&U&&(t[8]=null==t[8]?e[8]:va(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Cn(t,e){t=Tn(t);for(var n=-1,r=e.length,i={};++n<r;){var o=e[n];o in t&&(i[o]=t[o])}return i}function In(t,e){var n={};return Ce(t,function(t,r,i){e(t,r,i)&&(n[r]=t)}),n}function An(t,e){for(var n=t.length,r=va(e.length,n),i=Vt(t);r--;){var o=e[r];t[r]=bn(o,n)?i[o]:C}return t}function Ln(t){{var n;e.support}if(!y(t)||Ko.call(t)!=tt||!qo.call(t,"constructor")&&(n=t.constructor,"function"==typeof n&&!(n instanceof n)))return!1;var r;return Ce(t,function(t,e){r=e}),"undefined"==typeof r||qo.call(t,r)}function Rn(t){for(var n=Hi(t),r=n.length,i=r&&t.length,o=e.support,a=i&&Sn(i)&&(ja(t)||o.nonEnumArgs&&fi(t)),s=-1,h=[];++s<r;){var u=n[s];(a&&bn(u,i)||qo.call(t,u))&&h.push(u)}return h}function Bn(t){return null==t?[]:Sn(t.length)?_i(t)?t:Po(t):Vi(t)}function Tn(t){return _i(t)?t:Po(t)}function Mn(t,e,n){e=(n?xn(t,e,n):null==e)?1:ga(+e||1,1);for(var r=0,i=t?t.length:0,o=-1,a=Bo(Qo(i/e));i>r;)a[++o]=je(t,r,r+=e);return a}function On(t){for(var e=-1,n=t?t.length:0,r=-1,i=[];++e<n;){var o=t[e];o&&(i[++r]=o)}return i}function Dn(){for(var t=-1,e=arguments.length;++t<e;){var n=arguments[t];if(ja(n)||fi(n))break}return me(n,Se(arguments,!1,!0,++t))}function Un(t,e,n){var r=t?t.length:0;return r?((n?xn(t,e,n):null==e)&&(e=1),je(t,0>e?0:e)):[]}function Pn(t,e,n){var r=t?t.length:0;return r?((n?xn(t,e,n):null==e)&&(e=1),e=r-(+e||0),je(t,0,0>e?0:e)):[]}function Fn(t,e,n){var r=t?t.length:0;if(!r)return[];for(e=pn(e,n,3);r--&&e(t[r],r,t););return je(t,0,r+1)}function zn(t,e,n){var r=t?t.length:0;if(!r)return[];var i=-1;for(e=pn(e,n,3);++i<r&&e(t[i],i,t););return je(t,i)}function Wn(t,e,n){var r=-1,i=t?t.length:0;for(e=pn(e,n,3);++r<i;)if(e(t[r],r,t))return r;return-1}function Nn(t,e,n){var r=t?t.length:0;for(e=pn(e,n,3);r--;)if(e(t[r],r,t))return r;return-1}function jn(t){return t?t[0]:C}function Hn(t,e,n){var r=t?t.length:0;return n&&xn(t,e,n)&&(e=!1),r?Se(t,e):[]}function Zn(t){var e=t?t.length:0;return e?Se(t,!0):[]}function Gn(t,e,n){var r=t?t.length:0;if(!r)return-1;if("number"==typeof n)n=0>n?ga(r+n,0):n||0;else if(n){var i=Ye(t,e),o=t[i];return(e===e?e===o:o!==o)?i:-1}return a(t,e,n)}function qn(t){return Pn(t,1)}function Yn(){for(var t=[],e=-1,n=arguments.length,r=[],i=gn(),o=i==a;++e<n;){var s=arguments[e];(ja(s)||fi(s))&&(t.push(s),r.push(o&&s.length>=120&&Ta(e&&s)))}n=t.length;var h=t[0],u=-1,l=h?h.length:0,c=[],f=r[0];t:for(;++u<l;)if(s=h[u],(f?Yt(f,s):i(c,s))<0){for(e=n;--e;){var d=r[e];if((d?Yt(d,s):i(t[e],s))<0)continue t}f&&f.push(s),c.push(s)}return c}function Kn(t){var e=t?t.length:0;return e?t[e-1]:C}function Xn(t,e,n){var r=t?t.length:0;if(!r)return-1;var i=r;if("number"==typeof n)i=(0>n?ga(r+n,0):va(n||0,r-1))+1;else if(n){i=Ye(t,e,!0)-1;var o=t[i];return(e===e?e===o:o!==o)?i:-1}if(e!==e)return m(t,i,!0);for(;i--;)if(t[i]===e)return i;return-1}function Vn(){var t=arguments[0];if(!t||!t.length)return t;for(var e=0,n=gn(),r=arguments.length;++e<r;)for(var i=0,o=arguments[e];(i=n(t,o,i))>-1;)sa.call(t,i,1);return t}function $n(t){return ze(t||[],Se(arguments,!1,!1,1))}function Jn(t,e,n){var r=-1,i=t?t.length:0,o=[];for(e=pn(e,n,3);++r<i;){var a=t[r];e(a,r,t)&&(o.push(a),sa.call(t,r--,1),i--)}return o}function Qn(t){return Un(t,1)}function tr(t,e,n){var r=t?t.length:0;return r?(n&&"number"!=typeof n&&xn(t,e,n)&&(e=0,n=r),je(t,e,n)):[]}function er(t,e,n,r){var i=pn(n);return i===pe&&null==n?Ye(t,e):Ke(t,e,i(n,r,1))}function nr(t,e,n,r){var i=pn(n);return i===pe&&null==n?Ye(t,e,!0):Ke(t,e,i(n,r,1),!0)}function rr(t,e,n){var r=t?t.length:0;return r?((n?xn(t,e,n):null==e)&&(e=1),je(t,0,0>e?0:e)):[]}function ir(t,e,n){var r=t?t.length:0;return r?((n?xn(t,e,n):null==e)&&(e=1),e=r-(+e||0),je(t,0>e?0:e)):[]}function or(t,e,n){var r=t?t.length:0;if(!r)return[];for(e=pn(e,n,3);r--&&e(t[r],r,t););return je(t,r+1)}function ar(t,e,n){var r=t?t.length:0;if(!r)return[];var i=-1;for(e=pn(e,n,3);++i<r&&e(t[i],i,t););return je(t,0,i)}function sr(){return Ze(Se(arguments,!1,!0))}function hr(t,e,n,r){var i=t?t.length:0;if(!i)return[];"boolean"!=typeof e&&null!=e&&(r=n,n=xn(t,e,r)?null:e,e=!1);var o=pn();return(o!==pe||null!=n)&&(n=o(n,r,3)),e&&gn()==a?b(t,n):Ze(t,n)}function ur(t){for(var e=-1,n=(t&&t.length&&re(ne(t,Go)))>>>0,r=Bo(n);++e<n;)r[e]=ne(t,Fe(e));return r}function lr(t){return me(t,je(arguments,1))}function cr(){for(var t=-1,e=arguments.length;++t<e;){var n=arguments[t];if(ja(n)||fi(n))var r=r?me(r,n).concat(me(n,r)):n}return r?Ze(r):[]}function fr(){for(var t=arguments.length,e=Bo(t);t--;)e[t]=arguments[t];return ur(e)}function dr(t,e){var n=-1,r=t?t.length:0,i={};for(!r||e||ja(t[0])||(e=[]);++n<r;){var o=t[n];e?i[o]=e[n]:o&&(i[o[0]]=o[1])}return i}function pr(t){var n=e(t);return n.__chain__=!0,n}function gr(t,e,n){return e.call(n,t),t}function vr(t,e,n){return e.call(n,t)}function mr(){return pr(this)}function yr(){var t=this.__wrapped__;return t instanceof r?(this.__actions__.length&&(t=new r(this)),new n(t.reverse())):this.thru(function(t){return t.reverse()})}function wr(){return this.value()+""}function _r(){return qe(this.__wrapped__,this.__actions__)}function br(t){var e=t?t.length:0;return Sn(e)&&(t=Bn(t)),ce(t,Se(arguments,!1,!1,1))}function xr(t,e,n){var r=t?t.length:0;return Sn(r)||(t=Vi(t),r=t.length),r?(n="number"==typeof n?0>n?ga(r+n,0):n||0:0,"string"==typeof t||!ja(t)&&Ii(t)?r>n&&t.indexOf(e,n)>-1:gn(t,e,n)>-1):!1}function Sr(t,e,n){var r=ja(t)?te:_e;return("function"!=typeof e||"undefined"!=typeof n)&&(e=pn(e,n,3)),r(t,e)}function kr(t,e,n){var r=ja(t)?ee:be;return e=pn(e,n,3),r(t,e)}function Er(t,e,n){if(ja(t)){var r=Wn(t,e,n);return r>-1?t[r]:C}return e=pn(e,n,3),xe(t,e,ye)}function Cr(t,e,n){return e=pn(e,n,3),xe(t,e,we)}function Ir(t,e){return Er(t,De(e))}function Ar(t,e,n){return"function"==typeof e&&"undefined"==typeof n&&ja(t)?$t(t,e):ye(t,Xe(e,n,3))}function Lr(t,e,n){return"function"==typeof e&&"undefined"==typeof n&&ja(t)?Qt(t,e):we(t,Xe(e,n,3))}function Rr(t,e){return Re(t,e,je(arguments,2))}function Br(t,e,n){var r=ja(t)?ne:Oe;return e=pn(e,n,3),r(t,e)}function Tr(t,e){return Br(t,Fe(e+""))}function Mr(t,e,n,r){var i=ja(t)?oe:Ne;return i(t,pn(e,r,4),n,arguments.length<3,ye)}function Or(t,e,n,r){var i=ja(t)?ae:Ne;return i(t,pn(e,r,4),n,arguments.length<3,we)}function Dr(t,e,n){var r=ja(t)?ee:be;return e=pn(e,n,3),r(t,function(t,n,r){return!e(t,n,r)})}function Ur(t,e,n){if(n?xn(t,e,n):null==e){t=Bn(t);var r=t.length;return r>0?t[We(0,r-1)]:C}var i=Pr(t);return i.length=va(0>e?0:+e||0,i.length),i}function Pr(t){t=Bn(t);for(var e=-1,n=t.length,r=Bo(n);++e<n;){var i=We(0,e);e!=i&&(r[e]=r[i]),r[i]=t[e]}return r}function Fr(t){var e=t?t.length:0;return Sn(e)?e:qa(t).length}function zr(t,e,n){var r=ja(t)?se:He;return("function"!=typeof e||"undefined"!=typeof n)&&(e=pn(e,n,3)),r(t,e)}function Wr(t,e,n){var r=-1,i=t?t.length:0,o=Sn(i)?Bo(i):[];return n&&xn(t,e,n)&&(e=null),e=pn(e,n,3),ye(t,function(t,n,i){o[++r]={criteria:e(t,n,i),index:r,value:t}}),s(o,f)}function Nr(t){var e=arguments;e.length>3&&xn(e[1],e[2],e[3])&&(e=[t,e[1]]);var n=-1,r=t?t.length:0,i=Se(e,!1,!1,1),o=Sn(r)?Bo(r):[];return ye(t,function(t,e,r){for(var a=i.length,s=Bo(a);a--;)s[a]=null==t?C:t[i[a]];o[++n]={criteria:s,index:n,value:t}}),s(o,d)}function jr(t,e){return kr(t,De(e))}function Hr(t,e){if(!wi(e)){if(!wi(t))throw new Wo(Z);var n=t;t=e,e=n}return t=da(t=+t)?t:0,function(){return--t<1?e.apply(this,arguments):void 0}}function Zr(t,e,n){return n&&xn(t,e,n)&&(e=null),e=t&&null==e?t.length:ga(+e||0,0),un(t,U,null,null,null,null,e)}function Gr(t,e){var n;if(!wi(e)){if(!wi(t))throw new Wo(Z);var r=t;t=e,e=r}return function(){return--t>0?n=e.apply(this,arguments):e=null,n}}function qr(t,e){var n=A;if(arguments.length>2){var r=je(arguments,2),i=_(r,qr.placeholder);n|=M}return un(t,n,e,r,i)}function Yr(t){return de(t,arguments.length>1?Se(arguments,!1,!1,1):Wi(t))}function Kr(t,e){var n=A|L;if(arguments.length>2){var r=je(arguments,2),i=_(r,Kr.placeholder);n|=M}return un(e,n,t,r,i)}function Xr(t,e,n){n&&xn(t,e,n)&&(e=null);var r=un(t,B,null,null,null,null,null,e);return r.placeholder=Xr.placeholder,r}function Vr(t,e,n){n&&xn(t,e,n)&&(e=null);var r=un(t,T,null,null,null,null,null,e);return r.placeholder=Vr.placeholder,r}function $r(t,e,n){function r(){f&&ta(f),h&&ta(h),h=f=d=C}function i(){var n=e-(Na()-l);if(0>=n||n>e){h&&ta(h);var r=d;h=f=d=C,r&&(p=Na(),u=t.apply(c,s),f||h||(s=c=null))}else f=aa(i,n)}function o(){f&&ta(f),h=f=d=C,(v||g!==e)&&(p=Na(),u=t.apply(c,s),f||h||(s=c=null))}function a(){if(s=arguments,l=Na(),c=this,d=v&&(f||!m),g===!1)var n=m&&!f;else{h||m||(p=l);var r=g-(l-p),a=0>=r||r>g;a?(h&&(h=ta(h)),p=l,u=t.apply(c,s)):h||(h=aa(o,r))}return a&&f?f=ta(f):f||e===g||(f=aa(i,e)),n&&(a=!0,u=t.apply(c,s)),!a||f||h||(s=c=null),u}var s,h,u,l,c,f,d,p=0,g=!1,v=!0;if(!wi(t))throw new Wo(Z);if(e=0>e?0:e,n===!0){var m=!0;v=!1}else _i(n)&&(m=n.leading,g="maxWait"in n&&ga(+n.maxWait||0,e),v="trailing"in n?n.trailing:v);return a.cancel=r,a}function Jr(t){return ve(t,1,arguments,1)}function Qr(t,e){return ve(t,e,arguments,2)}function ti(){var t=arguments,e=t.length;if(!e)return function(){};if(!te(t,wi))throw new Wo(Z);return function(){for(var n=0,r=t[n].apply(this,arguments);++n<e;)r=t[n].call(this,r);return r}}function ei(){var t=arguments,e=t.length-1;if(0>e)return function(){};if(!te(t,wi))throw new Wo(Z);return function(){for(var n=e,r=t[n].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function ni(t,e){if(!wi(t)||e&&!wi(e))throw new Wo(Z);var n=function(){var r=n.cache,i=e?e.apply(this,arguments):arguments[0];if(r.has(i))return r.get(i);var o=t.apply(this,arguments);return r.set(i,o),o};return n.cache=new ni.Cache,n}function ri(t){if(!wi(t))throw new Wo(Z);return function(){return!t.apply(this,arguments)}}function ii(t){return Gr(t,2)}function oi(t){var e=je(arguments,1),n=_(e,oi.placeholder);return un(t,M,null,e,n)}function ai(t){var e=je(arguments,1),n=_(e,ai.placeholder);return un(t,O,null,e,n)}function si(t){var e=Se(arguments,!1,!1,1);return un(t,D,null,null,null,e)}function hi(t,e,n){var r=!0,i=!0;if(!wi(t))throw new Wo(Z);return n===!1?r=!1:_i(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),jt.leading=r,jt.maxWait=+e,jt.trailing=i,$r(t,e,jt)}function ui(t,e){return e=null==e?bo:e,un(e,M,null,[t],[])}function li(t,e,n,r){return"boolean"!=typeof e&&null!=e&&(r=n,n=xn(t,e,r)?null:e,e=!1),n="function"==typeof n&&Xe(n,r,1),ge(t,e,n)}function ci(t,e,n){return e="function"==typeof e&&Xe(e,n,1),ge(t,!0,e)}function fi(t){var e=y(t)?t.length:C;return Sn(e)&&Ko.call(t)==q||!1}function di(t){return t===!0||t===!1||y(t)&&Ko.call(t)==K||!1}function pi(t){return y(t)&&Ko.call(t)==X||!1}function gi(t){return t&&1===t.nodeType&&y(t)&&Ko.call(t).indexOf("Element")>-1||!1}function vi(t){if(null==t)return!0;var e=t.length;return Sn(e)&&(ja(t)||Ii(t)||fi(t)||y(t)&&wi(t.splice))?!e:!qa(t).length}function mi(t,e,n,r){if(n="function"==typeof n&&Xe(n,r,3),!n&&kn(t)&&kn(e))return t===e;var i=n?n(t,e):C;return"undefined"==typeof i?Be(t,e,n):!!i}function yi(t){return y(t)&&"string"==typeof t.message&&Ko.call(t)==V||!1}function wi(t){return"function"==typeof t||!1}function _i(t){var e=typeof t;return"function"==e||t&&"object"==e||!1}function bi(t,e,n,r){var i=qa(e),o=i.length;if(n="function"==typeof n&&Xe(n,r,3),!n&&1==o){var a=i[0],s=e[a];if(kn(s))return null!=t&&s===t[a]&&qo.call(t,a)}for(var h=Bo(o),u=Bo(o);o--;)s=h[o]=e[i[o]],u[o]=kn(s);return Me(t,i,h,u,n)}function xi(t){return Ei(t)&&t!=+t}function Si(t){return null==t?!1:Ko.call(t)==$?Vo.test(Zo.call(t)):y(t)&&Lt.test(t)||!1}function ki(t){return null===t}function Ei(t){return"number"==typeof t||y(t)&&Ko.call(t)==Q||!1}function Ci(t){return y(t)&&Ko.call(t)==et||!1}function Ii(t){return"string"==typeof t||y(t)&&Ko.call(t)==rt||!1}function Ai(t){return y(t)&&Sn(t.length)&&Wt[Ko.call(t)]||!1}function Li(t){return"undefined"==typeof t}function Ri(t){var e=t?t.length:0;return Sn(e)?e?Vt(t):[]:Vi(t)}function Bi(t){return fe(t,Hi(t))}function Ti(t,e,n){var r=Ra(t);return n&&xn(t,e,n)&&(e=null),e?fe(e,r,qa(e)):r}function Mi(t){if(null==t)return t;var e=Vt(arguments);return e.push(he),Ga.apply(C,e)}function Oi(t,e,n){return e=pn(e,n,3),xe(t,e,Ie,!0)}function Di(t,e,n){return e=pn(e,n,3),xe(t,e,Ae,!0)}function Ui(t,e,n){return("function"!=typeof e||"undefined"!=typeof n)&&(e=Xe(e,n,3)),ke(t,e,Hi)}function Pi(t,e,n){return e=Xe(e,n,3),Ee(t,e,Hi)}function Fi(t,e,n){return("function"!=typeof e||"undefined"!=typeof n)&&(e=Xe(e,n,3)),Ie(t,e)}function zi(t,e,n){return e=Xe(e,n,3),Ee(t,e,qa)}function Wi(t){return Le(t,Hi(t))}function Ni(t,e){return t?qo.call(t,e):!1}function ji(t,e,n){n&&xn(t,e,n)&&(e=null);for(var r=-1,i=qa(t),o=i.length,a={};++r<o;){var s=i[r],h=t[s];e?qo.call(a,h)?a[h].push(s):a[h]=[s]:a[h]=s}return a}function Hi(t){if(null==t)return[];_i(t)||(t=Po(t));var e=t.length;e=e&&Sn(e)&&(ja(t)||La.nonEnumArgs&&fi(t))&&e||0;for(var n=t.constructor,r=-1,i="function"==typeof n&&n.prototype==t,o=Bo(e),a=e>0;++r<e;)o[r]=r+"";for(var s in t)a&&bn(s,e)||"constructor"==s&&(i||!qo.call(t,s))||o.push(s);return o}function Zi(t,e,n){var r={};return e=pn(e,n,3),Ie(t,function(t,n,i){r[n]=e(t,n,i)}),r}function Gi(t,e,n){if(null==t)return{};if("function"!=typeof e){var r=ne(Se(arguments,!1,!1,1),zo);return Cn(t,me(Hi(t),r))}return e=Xe(e,n,3),In(t,function(t,n,r){return!e(t,n,r)})}function qi(t){for(var e=-1,n=qa(t),r=n.length,i=Bo(r);++e<r;){var o=n[e];i[e]=[o,t[o]]}return i}function Yi(t,e,n){return null==t?{}:"function"==typeof e?In(t,Xe(e,n,3)):Cn(t,Se(arguments,!1,!1,1))}function Ki(t,e,n){var r=null==t?C:t[e];return"undefined"==typeof r&&(r=n),wi(r)?r.call(t):r}function Xi(t,e,n,r){var i=ja(t)||Ai(t);if(e=pn(e,r,4),null==n)if(i||_i(t)){var o=t.constructor;n=i?ja(t)?new o:[]:Ra("function"==typeof o&&o.prototype)}else n={};return(i?$t:Ie)(t,function(t,r,i){return e(n,t,r,i)}),n}function Vi(t){return Ge(t,qa(t))}function $i(t){return Ge(t,Hi(t))}function Ji(t,e,n){n&&xn(t,e,n)&&(e=n=null);var r=null==t,i=null==e;if(null==n&&(i&&"boolean"==typeof t?(n=t,t=1):"boolean"==typeof e&&(n=e,i=!0)),r&&i&&(e=1,i=!1),t=+t||0,i?(e=t,t=0):e=+e||0,n||t%1||e%1){var o=_a();return va(t+o*(e-t+parseFloat("1e-"+((o+"").length-1))),e)}return We(t,e)}function Qi(t){return t=h(t),t&&t.charAt(0).toUpperCase()+t.slice(1)}function to(t){return t=h(t),t&&t.replace(Rt,p)}function eo(t,e,n){t=h(t),e+="";var r=t.length;return n=("undefined"==typeof n?r:va(0>n?0:+n||0,r))-e.length,n>=0&&t.indexOf(e,n)==n}function no(t){return t=h(t),t&&bt.test(t)?t.replace(wt,g):t}function ro(t){return t=h(t),t&&Mt.test(t)?t.replace(Tt,"\\$&"):t}function io(t,e,n){t=h(t),e=+e;var r=t.length;if(r>=e||!da(e))return t;var i=(e-r)/2,o=ea(i),a=Qo(i);return n=sn("",a,n),n.slice(0,o)+t+n}function oo(t,e,n){return t=h(t),t&&sn(t,e,n)+t}function ao(t,e,n){return t=h(t),t&&t+sn(t,e,n)}function so(t,e,n){return n&&xn(t,e,n)&&(e=0),wa(t,e)}function ho(t,e){var n="";if(t=h(t),e=+e,1>e||!t||!da(e))return n;do e%2&&(n+=t),e=ea(e/2),t+=t;while(e);return n}function uo(t,e,n){return t=h(t),n=null==n?0:va(0>n?0:+n||0,t.length),t.lastIndexOf(e,n)==n}function lo(t,n,r){var i=e.templateSettings;r&&xn(t,n,r)&&(n=r=null),t=h(t),n=le(le({},r||n),i,ue);var o,a,s=le(le({},n.imports),i.imports,ue),u=qa(s),l=Ge(s,u),c=0,f=n.interpolate||Bt,d="__p += '",p=Fo((n.escape||Bt).source+"|"+f.source+"|"+(f===kt?Et:Bt).source+"|"+(n.evaluate||Bt).source+"|$","g"),g="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++zt+"]")+"\n";t.replace(p,function(e,n,r,i,s,h){return r||(r=i),d+=t.slice(c,h).replace(Dt,v),n&&(o=!0,d+="' +\n__e("+n+") +\n'"),s&&(a=!0,d+="';\n"+s+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=h+e.length,e}),d+="';\n";var m=n.variable;m||(d="with (obj) {\n"+d+"\n}\n"),d=(a?d.replace(gt,""):d).replace(vt,"$1").replace(mt,"$1;"),d="function("+(m||"obj")+") {\n"+(m?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var y=yo(function(){return Oo(u,g+"return "+d).apply(C,l)});if(y.source=d,yi(y))throw y;return y}function co(t,e,n){var r=t;return(t=h(t))?(n?xn(r,e,n):null==e)?t.slice(x(t),S(t)+1):(e+="",t.slice(l(t,e),c(t,e)+1)):t}function fo(t,e,n){var r=t;return t=h(t),t?t.slice((n?xn(r,e,n):null==e)?x(t):l(t,e+"")):t}function po(t,e,n){var r=t;return t=h(t),t?(n?xn(r,e,n):null==e)?t.slice(0,S(t)+1):t.slice(0,c(t,e+"")+1):t}function go(t,e,n){n&&xn(t,e,n)&&(e=null);var r=P,i=F;if(null!=e)if(_i(e)){var o="separator"in e?e.separator:o;r="length"in e?+e.length||0:r,i="omission"in e?h(e.omission):i}else r=+e||0;if(t=h(t),r>=t.length)return t;var a=r-i.length;if(1>a)return i;var s=t.slice(0,a);if(null==o)return s+i;if(Ci(o)){if(t.slice(a).search(o)){var u,l,c=t.slice(0,a);for(o.global||(o=Fo(o.source,(Ct.exec(o)||"")+"g")),o.lastIndex=0;u=o.exec(c);)l=u.index;s=s.slice(0,null==l?a:l)}}else if(t.indexOf(o,a)!=a){var f=s.lastIndexOf(o);f>-1&&(s=s.slice(0,f))}return s+i}function vo(t){return t=h(t),t&&_t.test(t)?t.replace(yt,k):t}function mo(t,e,n){return n&&xn(t,e,n)&&(e=null),t=h(t),t.match(e||Ut)||[]}function yo(t){try{return t()}catch(e){return yi(e)?e:Mo(e)}}function wo(t,e,n){return n&&xn(t,e,n)&&(e=null),y(t)?xo(t):pe(t,e)}function _o(t){return function(){return t}}function bo(t){return t}function xo(t){return De(ge(t,!0))}function So(t,e,n){if(null==n){var r=_i(e),i=r&&qa(e),o=i&&i.length&&Le(e,i);(o?o.length:r)||(o=!1,n=e,e=t,t=this)}o||(o=Le(e,qa(e)));var a=!0,s=-1,h=wi(t),u=o.length;n===!1?a=!1:_i(n)&&"chain"in n&&(a=n.chain);for(;++s<u;){var l=o[s],c=e[l];t[l]=c,h&&(t.prototype[l]=function(e){return function(){var n=this.__chain__;if(a||n){var r=t(this.__wrapped__);return(r.__actions__=Vt(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}var i=[this.value()];return ra.apply(i,arguments),e.apply(t,i)}}(c))}return t}function ko(){return t._=Xo,this}function Eo(){}function Co(t){return Fe(t+"")}function Io(t){return function(e){return null==t?C:t[e]}}function Ao(t,e,n){n&&xn(t,e,n)&&(e=n=null),t=+t||0,n=null==n?1:+n||0,null==e?(e=t,t=0):e=+e||0;for(var r=-1,i=ga(Qo((e-t)/(n||1)),0),o=Bo(i);++r<i;)o[r]=t,t+=n;return o}function Lo(t,e,n){if(t=+t,1>t||!da(t))return[];var r=-1,i=Bo(va(t,Sa));for(e=Xe(e,n,1);++r<t;)Sa>r?i[r]=e(r):e(r);return i}function Ro(t){var e=++Yo;return h(t)+e}t=t?Jt.defaults(Kt.Object(),t,Jt.pick(Kt,Ft)):Kt;var Bo=t.Array,To=t.Date,Mo=t.Error,Oo=t.Function,Do=t.Math,Uo=t.Number,Po=t.Object,Fo=t.RegExp,zo=t.String,Wo=t.TypeError,No=Bo.prototype,jo=Po.prototype,Ho=(Ho=t.window)&&Ho.document,Zo=Oo.prototype.toString,Go=Fe("length"),qo=jo.hasOwnProperty,Yo=0,Ko=jo.toString,Xo=t._,Vo=Fo("^"+ro(Ko).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),$o=Si($o=t.ArrayBuffer)&&$o,Jo=Si(Jo=$o&&new $o(0).slice)&&Jo,Qo=Do.ceil,ta=t.clearTimeout,ea=Do.floor,na=Si(na=Po.getPrototypeOf)&&na,ra=No.push,ia=jo.propertyIsEnumerable,oa=Si(oa=t.Set)&&oa,aa=t.setTimeout,sa=No.splice,ha=Si(ha=t.Uint8Array)&&ha,ua=(No.unshift,Si(ua=t.WeakMap)&&ua),la=function(){try{var e=Si(e=t.Float64Array)&&e,n=new e(new $o(10),0,1)&&e}catch(r){}return n}(),ca=Si(ca=Bo.isArray)&&ca,fa=Si(fa=Po.create)&&fa,da=t.isFinite,pa=Si(pa=Po.keys)&&pa,ga=Do.max,va=Do.min,ma=Si(ma=To.now)&&ma,ya=Si(ya=Uo.isFinite)&&ya,wa=t.parseInt,_a=Do.random,ba=Uo.NEGATIVE_INFINITY,xa=Uo.POSITIVE_INFINITY,Sa=Do.pow(2,32)-1,ka=Sa-1,Ea=Sa>>>1,Ca=la?la.BYTES_PER_ELEMENT:0,Ia=Do.pow(2,53)-1,Aa=ua&&new ua,La=e.support={};!function(e){La.funcDecomp=!Si(t.WinRTError)&&Ot.test(E),La.funcNames="string"==typeof Oo.name;try{La.dom=11===Ho.createDocumentFragment().nodeType}catch(n){La.dom=!1}try{La.nonEnumArgs=!ia.call(arguments,1)}catch(n){La.nonEnumArgs=!0}}(0,0),e.templateSettings={escape:xt,evaluate:St,interpolate:kt,variable:"",imports:{_:e}};var Ra=function(){function e(){}return function(n){if(_i(n)){e.prototype=n;var r=new e;e.prototype=null}return r||t.Object()}}(),Ba=Aa?function(t,e){return Aa.set(t,e),t}:bo;Jo||(Ve=$o&&ha?function(t){var e=t.byteLength,n=la?ea(e/Ca):0,r=n*Ca,i=new $o(e);if(n){var o=new la(i,0,n);o.set(new la(t,0,n))}return e!=r&&(o=new ha(i,r),o.set(new ha(t,r))),i}:_o(null));var Ta=fa&&oa?function(t){return new qt(t)}:_o(null),Ma=Aa?function(t){return Aa.get(t)}:Eo,Oa=function(){var t=0,e=0;return function(n,r){var i=Na(),o=W-(i-e);if(e=i,o>0){if(++t>=z)return n}else t=0;return Ba(n,r)}}(),Da=Qe(function(t,e,n){qo.call(t,n)?++t[n]:t[n]=1}),Ua=Qe(function(t,e,n){qo.call(t,n)?t[n].push(e):t[n]=[e]}),Pa=Qe(function(t,e,n){t[n]=e}),Fa=on(re),za=on(ie,!0),Wa=Qe(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),Na=ma||function(){return(new To).getTime()},ja=ca||function(t){return y(t)&&Sn(t.length)&&Ko.call(t)==Y||!1};La.dom||(gi=function(t){return t&&1===t.nodeType&&y(t)&&!Za(t)||!1});var Ha=ya||function(t){return"number"==typeof t&&da(t)};(wi(/x/)||ha&&!wi(ha))&&(wi=function(t){return Ko.call(t)==$});var Za=na?function(t){if(!t||Ko.call(t)!=tt)return!1;var e=t.valueOf,n=Si(e)&&(n=na(e))&&na(n);return n?t==n||na(t)==n:Ln(t)}:Ln,Ga=tn(le),qa=pa?function(t){if(t)var e=t.constructor,n=t.length;return"function"==typeof e&&e.prototype===t||"function"!=typeof t&&n&&Sn(n)?Rn(t):_i(t)?pa(t):[]}:Rn,Ya=tn(Ue),Ka=nn(function(t,e,n){return e=e.toLowerCase(),t+(n?e.charAt(0).toUpperCase()+e.slice(1):e)}),Xa=nn(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()});8!=wa(Pt+"08")&&(so=function(t,e,n){return(n?xn(t,e,n):null==e)?e=0:e&&(e=+e),t=co(t),wa(t,e||(At.test(t)?16:10))});var Va=nn(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),$a=nn(function(t,e,n){return t+(n?" ":"")+(e.charAt(0).toUpperCase()+e.slice(1))});return n.prototype=e.prototype,nt.prototype["delete"]=it,nt.prototype.get=Ht,nt.prototype.has=Zt,nt.prototype.set=Gt,qt.prototype.push=Xt,ni.Cache=nt,e.after=Hr,e.ary=Zr,e.assign=Ga,e.at=br,e.before=Gr,e.bind=qr,e.bindAll=Yr,e.bindKey=Kr,e.callback=wo,e.chain=pr,e.chunk=Mn,e.compact=On,e.constant=_o,e.countBy=Da,e.create=Ti,e.curry=Xr,e.curryRight=Vr,e.debounce=$r,e.defaults=Mi,e.defer=Jr,e.delay=Qr,e.difference=Dn,e.drop=Un,e.dropRight=Pn,e.dropRightWhile=Fn,e.dropWhile=zn,e.filter=kr,e.flatten=Hn,e.flattenDeep=Zn,e.flow=ti,e.flowRight=ei,e.forEach=Ar,e.forEachRight=Lr,e.forIn=Ui,e.forInRight=Pi,e.forOwn=Fi,e.forOwnRight=zi,e.functions=Wi,e.groupBy=Ua,e.indexBy=Pa,e.initial=qn,e.intersection=Yn,e.invert=ji,e.invoke=Rr,e.keys=qa,e.keysIn=Hi,e.map=Br,e.mapValues=Zi,e.matches=xo,e.memoize=ni,e.merge=Ya,e.mixin=So,e.negate=ri,e.omit=Gi,e.once=ii,e.pairs=qi,e.partial=oi,e.partialRight=ai,e.partition=Wa,e.pick=Yi, +e.pluck=Tr,e.property=Co,e.propertyOf=Io,e.pull=Vn,e.pullAt=$n,e.range=Ao,e.rearg=si,e.reject=Dr,e.remove=Jn,e.rest=Qn,e.shuffle=Pr,e.slice=tr,e.sortBy=Wr,e.sortByAll=Nr,e.take=rr,e.takeRight=ir,e.takeRightWhile=or,e.takeWhile=ar,e.tap=gr,e.throttle=hi,e.thru=vr,e.times=Lo,e.toArray=Ri,e.toPlainObject=Bi,e.transform=Xi,e.union=sr,e.uniq=hr,e.unzip=ur,e.values=Vi,e.valuesIn=$i,e.where=jr,e.without=lr,e.wrap=ui,e.xor=cr,e.zip=fr,e.zipObject=dr,e.backflow=ei,e.collect=Br,e.compose=ei,e.each=Ar,e.eachRight=Lr,e.extend=Ga,e.iteratee=wo,e.methods=Wi,e.object=dr,e.select=kr,e.tail=Qn,e.unique=hr,So(e,e),e.attempt=yo,e.camelCase=Ka,e.capitalize=Qi,e.clone=li,e.cloneDeep=ci,e.deburr=to,e.endsWith=eo,e.escape=no,e.escapeRegExp=ro,e.every=Sr,e.find=Er,e.findIndex=Wn,e.findKey=Oi,e.findLast=Cr,e.findLastIndex=Nn,e.findLastKey=Di,e.findWhere=Ir,e.first=jn,e.has=Ni,e.identity=bo,e.includes=xr,e.indexOf=Gn,e.isArguments=fi,e.isArray=ja,e.isBoolean=di,e.isDate=pi,e.isElement=gi,e.isEmpty=vi,e.isEqual=mi,e.isError=yi,e.isFinite=Ha,e.isFunction=wi,e.isMatch=bi,e.isNaN=xi,e.isNative=Si,e.isNull=ki,e.isNumber=Ei,e.isObject=_i,e.isPlainObject=Za,e.isRegExp=Ci,e.isString=Ii,e.isTypedArray=Ai,e.isUndefined=Li,e.kebabCase=Xa,e.last=Kn,e.lastIndexOf=Xn,e.max=Fa,e.min=za,e.noConflict=ko,e.noop=Eo,e.now=Na,e.pad=io,e.padLeft=oo,e.padRight=ao,e.parseInt=so,e.random=Ji,e.reduce=Mr,e.reduceRight=Or,e.repeat=ho,e.result=Ki,e.runInContext=E,e.size=Fr,e.snakeCase=Va,e.some=zr,e.sortedIndex=er,e.sortedLastIndex=nr,e.startCase=$a,e.startsWith=uo,e.template=lo,e.trim=co,e.trimLeft=fo,e.trimRight=po,e.trunc=go,e.unescape=vo,e.uniqueId=Ro,e.words=mo,e.all=Sr,e.any=zr,e.contains=xr,e.detect=Er,e.foldl=Mr,e.foldr=Or,e.head=jn,e.include=xr,e.inject=Mr,So(e,function(){var t={};return Ie(e,function(n,r){e.prototype[r]||(t[r]=n)}),t}(),!1),e.sample=Ur,e.prototype.sample=function(t){return this.__chain__||null!=t?this.thru(function(e){return Ur(e,t)}):Ur(this.value())},e.VERSION=I,$t(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){e[t].placeholder=e}),$t(["filter","map","takeWhile"],function(t,e){var n=e==N;r.prototype[t]=function(t,r){var i=this.clone(),o=i.filtered,a=i.iteratees||(i.iteratees=[]);return i.filtered=o||n||e==H&&i.dir<0,a.push({iteratee:pn(t,r,3),type:e}),i}}),$t(["drop","take"],function(t,e){var n=t+"Count",i=t+"While";r.prototype[t]=function(r){r=null==r?1:ga(+r||0,0);var i=this.clone();if(i.filtered){var o=i[n];i[n]=e?va(o,r):o+r}else{var a=i.views||(i.views=[]);a.push({size:r,type:t+(i.dir<0?"Right":"")})}return i},r.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()},r.prototype[t+"RightWhile"]=function(t,e){return this.reverse()[i](t,e).reverse()}}),$t(["first","last"],function(t,e){var n="take"+(e?"Right":"");r.prototype[t]=function(){return this[n](1).value()[0]}}),$t(["initial","rest"],function(t,e){var n="drop"+(e?"":"Right");r.prototype[t]=function(){return this[n](1)}}),$t(["pluck","where"],function(t,e){var n=e?"filter":"map",i=e?De:Fe;r.prototype[t]=function(t){return this[n](i(e?t:t+""))}}),r.prototype.dropWhile=function(t,e){var n,r,i=this.dir<0;return t=pn(t,e,3),this.filter(function(e,o,a){return n=n&&(i?r>o:o>r),r=o,n||(n=!t(e,o,a))})},r.prototype.reject=function(t,e){return t=pn(t,e,3),this.filter(function(e,n,r){return!t(e,n,r)})},r.prototype.slice=function(t,e){t=null==t?0:+t||0;var n=0>t?this.takeRight(-t):this.drop(t);return"undefined"!=typeof e&&(e=+e||0,n=0>e?n.dropRight(-e):n.take(e-t)),n},Ie(r.prototype,function(t,i){var o=e[i],a=/^(?:first|last)$/.test(i);e.prototype[i]=function(){var i=this.__wrapped__,s=arguments,h=this.__chain__,u=!!this.__actions__.length,l=i instanceof r,c=l&&!u;if(a&&!h)return c?t.call(i):o.call(e,this.value());var f=function(t){var n=[t];return ra.apply(n,s),o.apply(e,n)};if(l||ja(i)){var d=c?i:new r(this),p=t.apply(d,s);if(!a&&(u||p.actions)){var g=p.actions||(p.actions=[]);g.push({func:vr,args:[f],thisArg:e})}return new n(p,h)}return this.thru(f)}}),$t(["concat","join","pop","push","shift","sort","splice","unshift"],function(t){var n=No[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:join|pop|shift)$/.test(t);e.prototype[t]=function(){var t=arguments;return i&&!this.__chain__?n.apply(this.value(),t):this[r](function(e){return n.apply(e,t)})}}),r.prototype.clone=i,r.prototype.reverse=w,r.prototype.value=J,e.prototype.chain=mr,e.prototype.reverse=yr,e.prototype.toString=wr,e.prototype.toJSON=e.prototype.valueOf=e.prototype.value=_r,e.prototype.collect=e.prototype.map,e.prototype.head=e.prototype.first,e.prototype.select=e.prototype.filter,e.prototype.tail=e.prototype.rest,e}var C,I="3.1.0",A=1,L=2,R=4,B=8,T=16,M=32,O=64,D=128,U=256,P=30,F="...",z=150,W=16,N=0,j=1,H=2,Z="Expected a function",G="__lodash_placeholder__",q="[object Arguments]",Y="[object Array]",K="[object Boolean]",X="[object Date]",V="[object Error]",$="[object Function]",J="[object Map]",Q="[object Number]",tt="[object Object]",et="[object RegExp]",nt="[object Set]",rt="[object String]",it="[object WeakMap]",ot="[object ArrayBuffer]",at="[object Float32Array]",st="[object Float64Array]",ht="[object Int8Array]",ut="[object Int16Array]",lt="[object Int32Array]",ct="[object Uint8Array]",ft="[object Uint8ClampedArray]",dt="[object Uint16Array]",pt="[object Uint32Array]",gt=/\b__p \+= '';/g,vt=/\b(__p \+=) '' \+/g,mt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,yt=/&(?:amp|lt|gt|quot|#39|#96);/g,wt=/[&<>"'`]/g,_t=RegExp(yt.source),bt=RegExp(wt.source),xt=/<%-([\s\S]+?)%>/g,St=/<%([\s\S]+?)%>/g,kt=/<%=([\s\S]+?)%>/g,Et=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ct=/\w*$/,It=/^\s*function[ \n\r\t]+\w/,At=/^0[xX]/,Lt=/^\[object .+?Constructor\]$/,Rt=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Bt=/($^)/,Tt=/[.*+?^${}()|[\]\/\\]/g,Mt=RegExp(Tt.source),Ot=/\bthis\b/,Dt=/['\n\r\u2028\u2029\\]/g,Ut=function(){var t="[A-Z\\xc0-\\xd6\\xd8-\\xde]",e="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(t+"{2,}(?="+t+e+")|"+t+"?"+e+"|"+t+"+|[0-9]+","g")}(),Pt=" \f \ufeff\n\r\u2028\u2029 ᠎              ",Ft=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","document","isFinite","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","window","WinRTError"],zt=-1,Wt={};Wt[at]=Wt[st]=Wt[ht]=Wt[ut]=Wt[lt]=Wt[ct]=Wt[ft]=Wt[dt]=Wt[pt]=!0,Wt[q]=Wt[Y]=Wt[ot]=Wt[K]=Wt[X]=Wt[V]=Wt[$]=Wt[J]=Wt[Q]=Wt[tt]=Wt[et]=Wt[nt]=Wt[rt]=Wt[it]=!1;var Nt={};Nt[q]=Nt[Y]=Nt[ot]=Nt[K]=Nt[X]=Nt[at]=Nt[st]=Nt[ht]=Nt[ut]=Nt[lt]=Nt[Q]=Nt[tt]=Nt[et]=Nt[rt]=Nt[ct]=Nt[ft]=Nt[dt]=Nt[pt]=!0,Nt[V]=Nt[$]=Nt[J]=Nt[nt]=Nt[it]=!1;var jt={leading:!1,maxWait:0,trailing:!1},Ht={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},Zt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Gt={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},qt={"function":!0,object:!0},Yt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Kt=qt[typeof window]&&window!==(this&&this.window)?window:this,Xt=qt[typeof e]&&e&&!e.nodeType&&e,Vt=qt[typeof t]&&t&&!t.nodeType&&t,$t=Xt&&Vt&&"object"==typeof i&&i;!$t||$t.global!==$t&&$t.window!==$t&&$t.self!==$t||(Kt=$t);var Jt=(Vt&&Vt.exports===Xt&&Xt,E());Kt._=Jt,r=function(){return Jt}.call(e,n,e,t),!(r!==C&&(t.exports=r))}).call(this)}).call(e,n(15)(t),function(){return this}())},function(t,e,n){(function(e){(function(){var r,i,o,a=function(t,e){return function(){return t.apply(e,arguments)}};o=n(45),i=function(){function t(t,e,n){this.document=t,this.id=e,this.data=null!=n?n:{},this.finalize=a(this.finalize,this),this.gen=0,this.deflate=null,this.compress=this.document.compress&&!this.data.Filter,this.uncompressedLength=0,this.chunks=[]}return t.prototype.initDeflate=function(){return this.data.Filter="FlateDecode",this.deflate=o.createDeflate(),this.deflate.on("data",function(t){return function(e){return t.chunks.push(e),t.data.Length+=e.length}}(this)),this.deflate.on("end",this.finalize)},t.prototype.write=function(t){var n;return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.uncompressedLength+=t.length,null==(n=this.data).Length&&(n.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(t)):(this.chunks.push(t),this.data.Length+=t.length)},t.prototype.end=function(t){return("string"==typeof t||e.isBuffer(t))&&this.write(t),this.deflate?this.deflate.end():this.finalize()},t.prototype.finalize=function(){var t,e,n,i;if(this.offset=this.document._offset,this.document._write(""+this.id+" "+this.gen+" obj"),this.document._write(r.convert(this.data)),this.chunks.length){for(this.document._write("stream"),i=this.chunks,e=0,n=i.length;n>e;e++)t=i[e],this.document._write(t);this.chunks.length=0,this.document._write("\nendstream")}return this.document._write("endobj"),this.document._refEnd(this)},t.prototype.toString=function(){return""+this.id+" "+this.gen+" R"},t}(),t.exports=i,r=n(32)}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e,n){(function(e){t.exports=e}).call(e,{})},function(t,e,n){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t,e,n){this.MAX_CHAR_TYPES=92,this.pdfkitDoc=t,this.path=e,this.pdfFonts=[],this.charCatalogue=[],this.name=n,this.__defineGetter__("ascender",function(){var t=this.getFont(0);return t.ascender}),this.__defineGetter__("decender",function(){var t=this.getFont(0);return t.decender})}var i=n(11);r.prototype.getFont=function(t){if(!this.pdfFonts[t]){var e=this.name+t;this.postscriptName&&delete this.pdfkitDoc._fontFamilies[this.postscriptName],this.pdfFonts[t]=this.pdfkitDoc.font(this.path,e)._font,this.postscriptName||(this.postscriptName=this.pdfFonts[t].name)}return this.pdfFonts[t]},r.prototype.widthOfString=function(){var t=this.getFont(0);return t.widthOfString.apply(t,arguments)},r.prototype.lineHeight=function(){var t=this.getFont(0);return t.lineHeight.apply(t,arguments)},r.prototype.ref=function(){var t=this.getFont(0);return t.ref.apply(t,arguments)};var o=function(t){return t.charCodeAt(0)};r.prototype.encode=function(t){var e=this,n=i.chain(t.split("")).map(o).uniq().value();if(n.length>e.MAX_CHAR_TYPES)throw new Error("Inline has more than "+e.MAX_CHAR_TYPES+": "+t+" different character types and therefore cannot be properly embedded into pdf.");var r=function(t){return i.uniq(t.concat(n)).length<=e.MAX_CHAR_TYPES},a=i.findIndex(e.charCatalogue,r);0>a&&(a=e.charCatalogue.length,e.charCatalogue[a]=[]);var s=this.getFont(a);s.use(t),i.each(n,function(t){i.includes(e.charCatalogue[a],t)||e.charCatalogue[a].push(t)});var h=i.map(s.encode(t),function(t){return t.charCodeAt(0).toString(16)}).join("");return{encodedText:h,fontId:s.id}},t.exports=r},function(t,e,n){(function(e){(function(){var r,i,o,a,s;s=n(10),r=n(34),i=n(35),a=n(36),o=function(){function t(){}return t.open=function(t,n){var r,o;if(e.isBuffer(t))r=t;else if(o=/^data:.+;base64,(.*)$/.exec(t))r=new e(o[1],"base64");else if(r=s.readFileSync(t),!r)return;if(255===r[0]&&216===r[1])return new i(r,n);if(137===r[0]&&"PNG"===r.toString("ascii",1,4))return new a(r,n);throw new Error("Unknown image format.")},t}(),t.exports=o}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(){this.events={}}r.prototype.startTracking=function(t,e){var n=this.events[t]||(this.events[t]=[]);n.indexOf(e)<0&&n.push(e)},r.prototype.stopTracking=function(t,e){var n=this.events[t];if(n){var r=n.indexOf(e);r>=0&&n.splice(r,1)}},r.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},r.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r,a,s){this.textTools=new i(t),this.styleStack=new o(e,n),this.imageMeasure=r,this.tableLayouts=a,this.images=s,this.autoImageIndex=1}var i=n(26),o=n(27),a=n(22),s=n(25).fontStringify,h=n(25).pack,u=n(33);r.prototype.measureDocument=function(t){return this.measureNode(t)},r.prototype.measureNode=function(t){function e(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}function n(){function e(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function n(t){for(var e={},n=t.length-1;n>=0;n--){var i=t[n],o=r.styleStack.styleDictionary[i];for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a])}return e}function i(t){return"number"==typeof t||t instanceof Number?t=[t,t,t,t]:t instanceof Array&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var o=[void 0,void 0,void 0,void 0];if(t.style){var a=t.style instanceof Array?t.style:[t.style],s=n(a);s&&(o=e(s,o)),s.margin&&(o=i(s.margin))}return o=e(t,o),t.margin&&(o=i(t.margin)),void 0===o[0]&&void 0===o[1]&&void 0===o[2]&&void 0===o[3]?null:o}t instanceof Array?t={stack:t}:("string"==typeof t||t instanceof String)&&(t={text:t});var r=this;return this.styleStack.auto(t,function(){if(t._margin=n(t),t.columns)return e(r.measureColumns(t));if(t.stack)return e(r.measureVerticalContainer(t));if(t.ul)return e(r.measureList(!1,t));if(t.ol)return e(r.measureList(!0,t));if(t.table)return e(r.measureTable(t));if(void 0!==t.text)return e(r.measureLeaf(t));if(t.image)return e(r.measureImage(t));if(t.canvas)return e(r.measureCanvas(t));if(t.qr)return e(r.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,s)})},r.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},r.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width;return t._alignment=this.styleStack.getProperty("alignment"),t},r.prototype.measureLeaf=function(t){var e=this.textTools.buildInlines(t.text,this.styleStack);return t._inlines=e.items,t._minWidth=e.minWidth,t._maxWidth=e.maxWidth,t},r.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;r>n;n++)e[n]=this.measureNode(e[n]),t._minWidth=Math.max(t._minWidth,e[n]._minWidth),t._maxWidth=Math.max(t._maxWidth,e[n]._maxWidth);return t},r.prototype.gapSizeForList=function(t,e){if(t){var n=e.length.toString().replace(/./g,"9");return this.textTools.sizeOfString(n+". ",this.styleStack)}return this.textTools.sizeOfString("9. ",this.styleStack)},r.prototype.buildMarker=function(t,e,n,r){var i;if(t)i={_inlines:this.textTools.buildInlines(e,n).items};else{var o=r.fontSize/6;i={canvas:[{x:o,y:r.height/r.lineHeight+r.decender-r.fontSize/3,r1:o,r2:o,type:"ellipse",color:"black"}]}}return i._minWidth=i._maxWidth=r.width,i._minHeight=i._maxHeight=r.height,i},r.prototype.measureList=function(t,e){var n=this.styleStack.clone(),r=t?e.ol:e.ul;e._gapSize=this.gapSizeForList(t,r),e._minWidth=0,e._maxWidth=0;for(var i=1,o=0,a=r.length;a>o;o++){var s=r[o]=this.measureNode(r[o]),h=i++ +". ";s.ol||s.ul||(s.listMarker=this.buildMarker(t,s.counter||h,n,e._gapSize)),e._minWidth=Math.max(e._minWidth,r[o]._minWidth+e._gapSize.width),e._maxWidth=Math.max(e._maxWidth,r[o]._maxWidth+e._gapSize.width)}return e},r.prototype.measureColumns=function(t){var e=t.columns;t._gap=this.styleStack.getProperty("columnGap")||0;for(var n=0,r=e.length;r>n;n++)e[n]=this.measureNode(e[n]);var i=a.measureMinMax(e);return t._minWidth=i.min+t._gap*(e.length-1),t._maxWidth=i.max+t._gap*(e.length-1),t},r.prototype.measureTable=function(t){function e(t,e){return function(){return null!==e&&"object"==typeof e&&(e.fillColor=t.styleStack.getProperty("fillColor")),t.measureNode(e)}}function n(e){var n=t.layout;("string"==typeof t.layout||t instanceof String)&&(n=e[n]);var r={hLineWidth:function(t,e){return 1},vLineWidth:function(t,e){return 1},hLineColor:function(t,e){return"black"},vLineColor:function(t,e){return"black"},paddingLeft:function(t,e){return 4},paddingRight:function(t,e){return 4},paddingTop:function(t,e){return 2},paddingBottom:function(t,e){return 2}};return h(r,n)}function r(e){for(var n=[],r=0,i=0,o=0,a=t.table.widths.length;a>o;o++){var s=i+e.vLineWidth(o,t)+e.paddingLeft(o,t);n.push(s),r+=s,i=e.paddingRight(o,t)}return r+=i+e.vLineWidth(t.table.widths.length,t),{total:r,offsets:n}}function i(){for(var e,n,r=0,i=g.length;i>r;r++){var a=g[r],s=o(a.col,a.span,t._offsets),h=a.minWidth-s.minWidth,u=a.maxWidth-s.maxWidth;if(h>0)for(e=h/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._minWidth+=e;if(u>0)for(e=u/a.span,n=0;n<a.span;n++)t.table.widths[a.col+n]._maxWidth+=e}}function o(e,n,r){for(var i={minWidth:0,maxWidth:0},o=0;n>o;o++)i.minWidth+=t.table.widths[e+o]._minWidth+(o?r.offsets[e+o]:0),i.maxWidth+=t.table.widths[e+o]._maxWidth+(o?r.offsets[e+o]:0);return i}function s(t,e,n){for(var r=1;n>r;r++)t[e+r]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:t[e].rowSpan}}function u(t,e,n,r){for(var i=1;r>i;i++)t.body[e+i][n]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:t.body[e][n].fillColor}}function l(t){if(t.table.widths||(t.table.widths="auto"),"string"==typeof t.table.widths||t.table.widths instanceof String)for(t.table.widths=[t.table.widths];t.table.widths.length<t.table.body[0].length;)t.table.widths.push(t.table.widths[t.table.widths.length-1]);for(var e=0,n=t.table.widths.length;n>e;e++){var r=t.table.widths[e];("number"==typeof r||r instanceof Number||"string"==typeof r||r instanceof String)&&(t.table.widths[e]={width:r})}}l(t),t._layout=n(this.tableLayouts),t._offsets=r(t._layout);var c,f,d,p,g=[];for(c=0,d=t.table.body[0].length;d>c;c++){var v=t.table.widths[c];for(v._minWidth=0,v._maxWidth=0,f=0,p=t.table.body.length;p>f;f++){var m=t.table.body[f],y=m[c];if(!y._span){y=m[c]=this.styleStack.auto(y,e(this,y)),y.colSpan&&y.colSpan>1?(s(m,c,y.colSpan),g.push({col:c,span:y.colSpan,minWidth:y._minWidth,maxWidth:y._maxWidth})):(v._minWidth=Math.max(v._minWidth,y._minWidth),v._maxWidth=Math.max(v._maxWidth,y._maxWidth))}y.rowSpan&&y.rowSpan>1&&u(t.table,f,c,y.rowSpan)}}i();var w=a.measureMinMax(t.table.widths);return t._minWidth=w.min+t._offsets.total,t._maxWidth=w.max+t._offsets.total,t},r.prototype.measureCanvas=function(t){for(var e=0,n=0,r=0,i=t.canvas.length;i>r;r++){var o=t.canvas[r];switch(o.type){case"ellipse":e=Math.max(e,o.x+o.r1),n=Math.max(n,o.y+o.r2);break;case"rect":e=Math.max(e,o.x+o.w),n=Math.max(n,o.y+o.h);break;case"line":e=Math.max(e,o.x1,o.x2),n=Math.max(n,o.y1,o.y2);break;case"polyline":for(var a=0,s=o.points.length;s>a;a++)e=Math.max(e,o.points[a].x),n=Math.max(n,o.points[a].y)}}return t._minWidth=t._maxWidth=e,t._minHeight=t._maxHeight=n,t},r.prototype.measureQr=function(t){return t=u.measure(t),t._alignment=this.styleStack.getProperty("alignment"),t},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new a,this.addPage(t)}function i(t,e){return void 0===t?e:"landscape"===t?"landscape":"portrait"}function o(t,e){var n;return n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e,{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}var a=n(18);r.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{y:this.y,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},r.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},r.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=o(this,t.bottomMost)},r.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},r.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},r.prototype.completeColumnGroup=function(){var t=this.snapshots.pop();this.calculateBottomMost(t),this.endingCell=null,this.x=t.x,this.y=t.bottomMost.y,this.page=t.bottomMost.page,this.availableWidth=t.availableWidth,this.availableHeight=t.bottomMost.availableHeight,this.lastColumnWidth=t.lastColumnWidth},r.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},r.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},r.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},r.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},r.prototype.moveTo=function(t,e){void 0!==t&&null!==t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),void 0!==e&&null!==e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},r.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},r.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var s=function(t,e){return e=i(e,t.pageSize.orientation),e!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};r.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;return i?this.addPage(s(this.getCurrentPage(),t)):(this.page=e,this.initializePage()),{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},r.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},r.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},r.prototype.getCurrentPosition=function(){var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new o(t,e)}function i(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}var o=n(37);r.prototype.addLine=function(t,e,n){return i(this,function(r){return r.writer.addLine(t,e,n)})},r.prototype.addImage=function(t,e){return i(this,function(n){return n.writer.addImage(t,e)})},r.prototype.addQr=function(t,e){return i(this,function(n){return n.writer.addQr(t,e)})},r.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},r.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},r.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},r.prototype.beginUnbreakableBlock=function(t,e){0===this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},r.prototype.commitUnbreakableBlock=function(t,e){if(0===--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var o=0,a=this.repeatables.length;a>o;o++)i.height-=this.repeatables[o].height}else i.height=n.y;void 0!==t||void 0!==e?this.writer.addFragment(i,!0,!0,!0):this.addFragment(i)}}},r.prototype.currentBlockToRepeatable=function(){var t=this.writer.context,e={items:[]};return t.pages[0].items.forEach(function(t){e.items.push(t)}),e.xOffset=this.originalX,e.height=t.y,e},r.prototype.pushToRepeatables=function(t){this.repeatables.push(t)},r.prototype.popFromRepeatables=function(){this.repeatables.pop()},r.prototype.context=function(){return this.writer.context},t.exports=r},function(t,e,n){"use strict";function r(t,e){var n=[],r=0,a=0,s=[],h=0,u=0,l=[],c=e;t.forEach(function(t){i(t)?(n.push(t),r+=t._minWidth,a+=t._maxWidth):o(t)?(s.push(t),h=Math.max(h,t._minWidth),u=Math.max(u,t._maxWidth)):l.push(t)}),l.forEach(function(t){"string"==typeof t.width&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*c/100),t._calcWidth=t.width<t._minWidth&&t.elasticWidth?t._minWidth:t.width,e-=t._calcWidth});var f=r+h*s.length,d=a+u*s.length;if(f>=e)n.forEach(function(t){t._calcWidth=t._minWidth}),s.forEach(function(t){t._calcWidth=h});else{if(e>d)n.forEach(function(t){t._calcWidth=t._maxWidth,e-=t._calcWidth});else{var p=e-f,g=d-f;n.forEach(function(t){var n=t._maxWidth-t._minWidth;t._calcWidth=t._minWidth+n*p/g,e-=t._calcWidth})}if(s.length>0){var v=e/s.length;s.forEach(function(t){t._calcWidth=v})}}}function i(t){return"auto"===t.width}function o(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}function a(t){for(var e={min:0,max:0},n={min:0,max:0},r=0,a=0,s=t.length;s>a;a++){var h=t[a];o(h)?(n.min=Math.max(n.min,h._minWidth),n.max=Math.max(n.max,h._maxWidth),r++):i(h)?(e.min+=h._minWidth,e.max+=h._maxWidth):(e.min+=void 0!==h.width&&h.width||h._minWidth,e.max+=void 0!==h.width&&h.width||h._maxWidth)}return r&&(e.min+=r*n.min,e.max+=r*n.max),e}t.exports={buildColumnWidths:r,measureMinMax:a,isAutoColumn:i,isStarColumn:o}},function(t,e,n){"use strict";function r(t){this.tableNode=t}var i=n(22);r.prototype.beginTable=function(t){function e(){var t=0;return r.table.widths.forEach(function(e){t+=e._calcWidth}),t}function n(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var r=0,i=a.tableNode.table.body[0].length;i>r;r++){var o=a.layout.paddingLeft(r,a.tableNode)+a.layout.paddingRight(r,a.tableNode),s=a.layout.vLineWidth(r,a.tableNode);n=o+s+a.tableNode.table.widths[r]._calcWidth,t[t.length-1].width=n,e+=n,t.push({left:e,rowSpan:0,width:0})}return t}var r,o,a=this;r=this.tableNode,this.offsets=r._offsets,this.layout=r._layout,o=t.context().availableWidth-this.offsets.total,i.buildColumnWidths(r.table.widths,o),this.tableWidth=r._offsets.total+e(),this.rowSpanData=n(),this.cleanUpRepeatables=!1,this.headerRows=r.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(r.table.keepWithHeaderRows||0),this.dontBreakRows=r.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&t.beginUnbreakableBlock(),this.drawHorizontalLine(0,t)},r.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().moveDown(t)}},r.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},r.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var i=r/2,o=null,a=0,s=this.rowSpanData.length;s>a;a++){var h=this.rowSpanData[a],u=!h.rowSpan;!o&&u&&(o={left:h.left,width:0}),u&&(o.width+=h.width||0);var l=(n||0)+i;u&&a!==s-1||o&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:l,y2:l,lineWidth:r,lineColor:"function"==typeof this.layout.hLineColor?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},r.prototype.drawVerticalLine=function(t,e,n,r,i){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&i.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:"function"==typeof this.layout.vLineColor?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},r.prototype.endTable=function(t){this.cleanUpRepeatables&&t.popFromRepeatables()},r.prototype.endRow=function(t,e,n){function r(){for(var e=[],n=0,r=0,i=a.tableNode.table.body[t].length;i>r;r++){if(!n){e.push({x:a.rowSpanData[r].left,index:r});var o=a.tableNode.table.body[t][r];n=o._colSpan||o.colSpan||0}n>0&&n--}return e.push({x:a.rowSpanData[a.rowSpanData.length-1].left,index:a.rowSpanData.length-1}),e}var i,o,a=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var s=e.context().page,h=e.context().y,u=r(),l=[],c=n&&n.length>0;if(l.push({y0:this.rowTopY,page:c?n[0].prevPage:s}),c)for(o=0,i=n.length;i>o;o++){var f=n[o];l[l.length-1].y1=f.prevY,l.push({y0:f.y,page:f.prevPage+1})}l[l.length-1].y1=h;for(var d=l[0].y1-l[0].y0===this.rowPaddingTop,p=d?1:0,g=l.length;g>p;p++){var v=p<l.length-1,m=p>0&&!this.headerRows,y=m?0:this.topLineWidth,w=l[p].y0,_=l[p].y1;for(v&&(_+=this.rowPaddingBottom),e.context().page!=l[p].page&&(e.context().page=l[p].page,this.reservedAtBottom=0),o=0,i=u.length;i>o;o++)if(this.drawVerticalLine(u[o].x,w-y,_+this.bottomLineWidth,u[o].index,e),i-1>o){var b=u[o].index,x=this.tableNode.table.body[t][b].fillColor;if(x){var S=this.layout.vLineWidth(b,this.tableNode),k=u[o].x+S,E=w-y;e.addVector({type:"rect",x:k,y:E,w:u[o+1].x-k,h:_+this.bottomLineWidth-E,lineWidth:0,color:x},!1,!0,0)}}v&&this.layout.hLineWhenBroken!==!1&&this.drawHorizontalLine(t+1,e,_),m&&this.layout.hLineWhenBroken!==!1&&this.drawHorizontalLine(t,e,w); + +}e.context().page=s,e.context().y=h;var C=this.tableNode.table.body[t];for(o=0,i=C.length;i>o;o++){if(C[o].rowSpan&&(this.rowSpanData[o].rowSpan=C[o].rowSpan,C[o].colSpan&&C[o].colSpan>1))for(var I=1;I<C[o].rowSpan;I++)this.tableNode.table.body[t+I][o]._colSpan=C[o].colSpan;this.rowSpanData[o].rowSpan>0&&this.rowSpanData[o].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){a.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock(),a.drawHorizontalLine(t,e)}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=r},function(t,e,n){"use strict";function r(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}r.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},r.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length?!0:this.newLineForced?!1:this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},r.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},r.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},r.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=r},function(t,e,n){"use strict";function r(){for(var t={},e=0,n=arguments.length;n>e;e++){var r=arguments[e];if(r)for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}return t}function i(t,e,n){switch(t.type){case"ellipse":case"rect":t.x+=e,t.y+=n;break;case"line":t.x1+=e,t.x2+=e,t.y1+=n,t.y2+=n;break;case"polyline":for(var r=0,i=t.points.length;i>r;r++)t.points[r].x+=e,t.points[r].y+=n}}function o(t,e){return"font"===t?"font":e}function a(t){var e={};return t&&"[object Function]"===e.toString.call(t)}t.exports={pack:r,fontStringify:o,offsetVector:i,isFunction:a}},function(t,e,n){"use strict";function r(t){this.fontProvider=t}function i(t){var e=[];t=t.replace(" "," ");for(var n=t.match(l),r=0,i=n.length;i-1>r;r++){var o=n[r],a=0===o.length;if(a){var s=0===e.length||e[e.length-1].lineEnd;s?e.push({text:"",lineEnd:!0}):e[e.length-1].lineEnd=!0}else e.push({text:o})}return e}function o(t,e){e=e||{},t=t||{};for(var n in t)"text"!=n&&t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function a(t){var e=[];("string"==typeof t||t instanceof String)&&(t=[t]);for(var n=0,r=t.length;r>n;n++){var a,s=t[n],h=null;"string"==typeof s||s instanceof String?a=i(s):(a=i(s.text),h=o(s));for(var u=0,l=a.length;l>u;u++){var c={text:a[u].text};a[u].lineEnd&&(c.lineEnd=!0),o(h,c),e.push(c)}}return e}function s(t){return t.replace(/[^A-Za-z0-9\[\] ]/g,function(t){return d[t]||t})}function h(t,e,n,r){var i;return void 0!==t[n]&&null!==t[n]?t[n]:e?(e.auto(t,function(){i=e.getProperty(n)}),null!==i&&void 0!==i?i:r):r}function u(t,e,n){var r=a(e);return r.forEach(function(e){var r=h(e,n,"font","Roboto"),i=h(e,n,"fontSize",12),o=h(e,n,"bold",!1),a=h(e,n,"italics",!1),u=h(e,n,"color","black"),l=h(e,n,"decoration",null),d=h(e,n,"decorationColor",null),p=h(e,n,"decorationStyle",null),g=h(e,n,"background",null),v=h(e,n,"lineHeight",1),m=t.provideFont(r,o,a);e.width=m.widthOfString(s(e.text),i),e.height=m.lineHeight(i)*v;var y=e.text.match(c),w=e.text.match(f);e.leadingCut=y?m.widthOfString(y[0],i):0,e.trailingCut=w?m.widthOfString(w[0],i):0,e.alignment=h(e,n,"alignment","left"),e.font=m,e.fontSize=i,e.color=u,e.decoration=l,e.decorationColor=d,e.decorationStyle=p,e.background=g}),r}var l=/([^ ,\/!.?:;\-\n]*[ ,\/!.?:;\-]*)|\n/g,c=/^(\s)+/g,f=/(\s)+$/g;r.prototype.buildInlines=function(t,e){function n(t){return Math.max(0,t.width-t.leadingCut-t.trailingCut)}var r,i=u(this.fontProvider,t,e),o=0,a=0;return i.forEach(function(t){o=Math.max(o,t.width-t.leadingCut-t.trailingCut),r||(r={width:0,leadingCut:t.leadingCut,trailingCut:0}),r.width+=t.width,r.trailingCut=t.trailingCut,a=Math.max(a,n(r)),t.lineEnd&&(r=null)}),{items:i,minWidth:o,maxWidth:a}},r.prototype.sizeOfString=function(t,e){t=t.replace(" "," ");var n=h({},e,"font","Roboto"),r=h({},e,"fontSize",12),i=h({},e,"bold",!1),o=h({},e,"italics",!1),a=h({},e,"lineHeight",1),u=this.fontProvider.provideFont(n,i,o);return{width:u.widthOfString(s(t),r),height:u.lineHeight(r)*a,fontSize:r,lineHeight:a,ascender:u.ascender/1e3*r,decender:u.decender/1e3*r}};var d={"Ą":"A","Ć":"C","Ę":"E","Ł":"L","Ń":"N","Ó":"O","Ś":"S","Ź":"Z","Ż":"Z","ą":"a","ć":"c","ę":"e","ł":"l","ń":"n","ó":"o","ś":"s","ź":"z","ż":"z"};t.exports=r},function(t,e,n){"use strict";function r(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}r.prototype.clone=function(){var t=new r(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},r.prototype.push=function(t){this.styleOverrides.push(t)},r.prototype.pop=function(t){for(t=t||1;t-->0;)this.styleOverrides.pop()},r.prototype.autopush=function(t){if("string"==typeof t||t instanceof String)return 0;var e=[];t.style&&(e=t.style instanceof Array?t.style:[t.style]);for(var n=0,r=e.length;r>n;n++)this.push(e[n]);var i={},o=!1;return["font","fontSize","bold","italics","alignment","color","columnGap","fillColor","decoration","decorationStyle","decorationColor","background","lineHeight"].forEach(function(e){void 0!==t[e]&&null!==t[e]&&(i[e]=t[e],o=!0)}),o&&this.push(i),e.length+(o?1:0)},r.prototype.auto=function(t,e){var n=this.autopush(t),r=e();return n>0&&this.pop(n),r},r.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if("string"==typeof n||n instanceof String){var r=this.styleDictionary[n];if(r&&null!==r[t]&&void 0!==r[t])return r[t]}else if(void 0!==n[t]&&null!==n[t])return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=r},function(t,e,n){(function(e){(function(){var r,i,o,a,s,h,u={}.hasOwnProperty,l=function(t,e){function n(){this.constructor=t}for(var r in e)u.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};h=n(46),s=n(10),i=n(32),a=n(12),o=n(38),r=function(t){function r(t){var e,n,i,o;if(this.options=null!=t?t:{},r.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null!=(i=this.options.compress)?i:!0,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info){o=this.options.info;for(e in o)n=o[e],this.info[e]=n}this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),this.addPage()}var h;return l(r,t),h=function(t){var e,n,i;i=[];for(n in t)e=t[n],i.push(r.prototype[n]=e);return i},h(n(41)),h(n(39)),h(n(44)),h(n(40)),h(n(42)),h(n(43)),r.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new o(this,t),this._pageBuffer.push(this.page),e=this._root.data.Pages.data,e.Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this},r.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},r.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},r.prototype.flushPages=function(){var t,e,n,r;for(e=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=e.length,n=0,r=e.length;r>n;n++)t=e[n],t.end()},r.prototype.ref=function(t){var e;return e=new a(this,this._offsets.length+1,t),this._offsets.push(null),this._waiting++,e},r.prototype._read=function(){},r.prototype._write=function(t){return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.push(t),this._offset+=t.length},r.prototype.addContent=function(t){return this.page.write(t),this},r.prototype._refEnd=function(t){return this._offsets[t.id-1]=t.offset,0===--this._waiting&&this._ended?(this._finalize(),this._ended=!1):void 0},r.prototype.write=function(t,e){var n;return n=new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream."),this.pipe(s.createWriteStream(t)),this.end(),this.once("end",e)},r.prototype.output=function(t){throw new Error("PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.")},r.prototype.end=function(){var t,e,n,r,i,o;this.flushPages(),this._info=this.ref(),i=this.info;for(e in i)r=i[e],"string"==typeof r&&(r=new String(r)),this._info.data[e]=r;this._info.end(),o=this._fontFamilies;for(n in o)t=o[n],t.embed();return this._root.end(),this._root.data.Pages.end(),0===this._waiting?this._finalize():this._ended=!0},r.prototype._finalize=function(t){var e,n,r,o,a;for(n=this._offset,this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f "),a=this._offsets,r=0,o=a.length;o>r;r++)e=a[r],e=("0000000000"+e).slice(-10),this._write(e+" 00000 n ");return this._write("trailer"),this._write(i.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+n),this._write("%%EOF"),this.push(null)},r.prototype.toString=function(){return"[object PDFDocument]"},r}(h.Readable),t.exports=r}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){e.read=function(t,e,n,r,i){var o,a,s=8*i-r-1,h=(1<<s)-1,u=h>>1,l=-7,c=n?i-1:0,f=n?-1:1,d=t[e+c];for(c+=f,o=d&(1<<-l)-1,d>>=-l,l+=s;l>0;o=256*o+t[e+c],c+=f,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=r;l>0;a=256*a+t[e+c],c+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return a?0/0:(d?-1:1)*(1/0);a+=Math.pow(2,r),o-=u}return(d?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,h,u=8*o-i-1,l=(1<<u)-1,c=l>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,g=0>e||0===e&&0>1/e?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-a))<1&&(a--,h*=2),e+=a+c>=1?f/h:f*Math.pow(2,1-c),e*h>=2&&(a++,h/=2),a+c>=l?(s=0,a=l):a+c>=1?(s=(e*h-1)*Math.pow(2,i),a+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[n+d]=255&s,d+=p,s/=256,i-=8);for(a=a<<i|s,u+=i;u>0;t[n+d]=255&a,d+=p,a/=256,u-=8);t[n+d-p]|=128*g}},function(t,e,n){var r=Array.isArray,i=Object.prototype.toString;t.exports=r||function(t){return!!t&&"[object Array]"==i.call(t)}},function(t,e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(t){"use strict";function e(t){var e=t.charCodeAt(0);return e===a||e===c?62:e===s||e===f?63:h>e?-1:h+10>e?e-h+26+26:l+26>e?e-l:u+26>e?e-u+26:void 0}function n(t){function n(t){u[c++]=t}var r,i,a,s,h,u;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var l=t.length;h="="===t.charAt(l-2)?2:"="===t.charAt(l-1)?1:0,u=new o(3*t.length/4-h),a=h>0?t.length-4:t.length;var c=0;for(r=0,i=0;a>r;r+=4,i+=3)s=e(t.charAt(r))<<18|e(t.charAt(r+1))<<12|e(t.charAt(r+2))<<6|e(t.charAt(r+3)),n((16711680&s)>>16),n((65280&s)>>8),n(255&s);return 2===h?(s=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&s)):1===h&&(s=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(s>>8&255),n(255&s)),u}function i(t){function e(t){return r.charAt(t)}function n(t){return e(t>>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}var i,o,a,s=t.length%3,h="";for(i=0,a=t.length-s;a>i;i+=3)o=(t[i]<<16)+(t[i+1]<<8)+t[i+2],h+=n(o);switch(s){case 1:o=t[t.length-1],h+=e(o>>2),h+=e(o<<4&63),h+="==";break;case 2:o=(t[t.length-2]<<8)+t[t.length-1],h+=e(o>>10),h+=e(o>>4&63),h+=e(o<<2&63),h+="="}return h}var o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="+".charCodeAt(0),s="/".charCodeAt(0),h="0".charCodeAt(0),u="a".charCodeAt(0),l="A".charCodeAt(0),c="-".charCodeAt(0),f="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=i}(e)},function(t,e,n){(function(e){(function(){var r,i;r=function(){function t(){}var n,r,o,a;return o=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},r=/[\n\r\t\b\f\(\)\\]/g,n={"\n":"\\n","\r":"\\r"," ":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},a=function(t){var e,n,r,i,o;if(r=t.length,1&r)throw new Error("Buffer length must be even");for(n=i=0,o=r-1;o>i;n=i+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;return t},t.convert=function(s){var h,u,l,c,f,d,p,g,v,m;if("string"==typeof s)return"/"+s;if(s instanceof String){for(p=s.replace(r,function(t){return n[t]}),l=!1,u=v=0,m=p.length;m>v;u=v+=1)if(p.charCodeAt(u)>127){l=!0;break}return l&&(p=a(new e("\ufeff"+p,"utf16le")).toString("binary")),"("+p+")"}if(e.isBuffer(s))return"<"+s.toString("hex")+">";if(s instanceof i)return s.toString();if(s instanceof Date)return"(D:"+o(s.getUTCFullYear(),4)+o(s.getUTCMonth(),2)+o(s.getUTCDate(),2)+o(s.getUTCHours(),2)+o(s.getUTCMinutes(),2)+o(s.getUTCSeconds(),2)+"Z)";if(Array.isArray(s))return c=function(){var e,n,r;for(r=[],e=0,n=s.length;n>e;e++)h=s[e],r.push(t.convert(h));return r}().join(" "),"["+c+"]";if("[object Object]"==={}.toString.call(s)){d=["<<"];for(f in s)g=s[f],d.push("/"+f+" "+t.convert(g));return d.push(">>"),d.join("\n")}return""+s},t}(),t.exports=r,i=n(12)}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(t,e){var n={numeric:h,alphanumeric:u,octet:l},r={L:g,M:v,Q:m,H:y};e=e||{};var i=e.version||-1,o=r[(e.eccLevel||"L").toUpperCase()],a=e.mode?n[e.mode.toLowerCase()]:-1,s="mask"in e?e.mask:-1;if(0>a)a="string"==typeof t?t.match(f)?h:t.match(p)?u:l:l;else if(a!=h&&a!=u&&a!=l)throw"invalid or unsupported mode";if(t=P(a,t),null===t)throw"invalid data format";if(0>o||o>3)throw"invalid ECC level";if(0>i){for(i=1;40>=i&&!(t.length<=U(i,a,o));++i);if(i>40)throw"too large data for the Qr format"}else if(1>i||i>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=s&&(0>s||s>8))throw"invalid mask";return Y(t,i,a,o,s)}function i(t,e){var n=[],i=t.background||"#fff",o=t.foreground||"#000",a=r(t,e),s=a.length,h=Math.floor(e.fit?e.fit/s:5),u=s*h;n.push({type:"rect",x:0,y:0,w:u,h:u,lineWidth:0,color:i});for(var l=0;s>l;++l)for(var c=0;s>c;++c)a[l][c]&&n.push({type:"rect",x:h*l,y:h*c,w:h,h:h,lineWidth:0,color:o});return{canvas:n,size:u}}function o(t){var e=i(t.qr,t);return t._canvas=e.canvas,t._width=t._height=t._minWidth=t._maxWidth=t._minHeight=t._maxHeight=e.size,t}for(var a=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],s=0,h=1,u=2,l=4,c=8,f=/^\d*$/,d=/^[A-Za-z0-9 $%*+\-./:]*$/,p=/^[A-Z0-9 $%*+\-./:]*$/,g=1,v=0,m=3,y=2,w=[],_=[-1],b=0,x=1;255>b;++b)w.push(x),_[x]=b,x=2*x^(x>=128?285:0);for(var S=[[]],b=0;30>b;++b){for(var k=S[b],E=[],C=0;b>=C;++C){var I=b>C?w[k[C]]:0,A=w[(b+(k[C-1]||0))%255];E.push(_[I^A])}S.push(E)}for(var L={},b=0;45>b;++b)L["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(b)]=b;var R=[function(t,e){return(t+e)%2===0},function(t,e){return t%2===0},function(t,e){return e%3===0},function(t,e){return(t+e)%3===0},function(t,e){return((t/2|0)+(e/3|0))%2===0},function(t,e){return t*e%2+t*e%3===0},function(t,e){return(t*e%2+t*e%3)%2===0},function(t,e){return((t+e)%2+t*e%3)%2===0}],B=function(t){return t>6},T=function(t){return 4*t+17},M=function(t){var e=a[t],n=16*t*t+128*t+64;return B(t)&&(n-=36),e[2].length&&(n-=25*e[2].length*e[2].length-10*e[2].length-55),n},O=function(t,e){var n=-8&M(t),r=a[t];return n-=8*r[0][e]*r[1][e]},D=function(t,e){switch(e){case h:return 10>t?10:27>t?12:14;case u:return 10>t?9:27>t?11:13;case l:return 10>t?8:16;case c:return 10>t?8:27>t?10:12}},U=function(t,e,n){var r=O(t,n)-4-D(t,e);switch(e){case h:return 3*(r/10|0)+(4>r%10?0:7>r%10?1:2);case u:return 2*(r/11|0)+(6>r%11?0:1);case l:return r/8|0;case c:return r/13|0}},P=function(t,e){switch(t){case h:return e.match(f)?e:null;case u:return e.match(d)?e.toUpperCase():null;case l:if("string"==typeof e){for(var n=[],r=0;r<e.length;++r){var i=e.charCodeAt(r);128>i?n.push(i):2048>i?n.push(192|i>>6,128|63&i):65536>i?n.push(224|i>>12,128|i>>6&63,128|63&i):n.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i)}return n}return e}},F=function(t,e,n,r){var i=[],o=0,a=8,c=n.length,f=function(t,e){if(e>=a){for(i.push(o|t>>(e-=a));e>=8;)i.push(t>>(e-=8)&255);o=0,a=8}e>0&&(o|=(t&(1<<e)-1)<<(a-=e))},d=D(t,e);switch(f(e,4),f(c,d),e){case h:for(var p=2;c>p;p+=3)f(parseInt(n.substring(p-2,p+1),10),10);f(parseInt(n.substring(p-2),10),[0,4,7][c%3]);break;case u:for(var p=1;c>p;p+=2)f(45*L[n.charAt(p-1)]+L[n.charAt(p)],11);c%2==1&&f(L[n.charAt(p-1)],6);break;case l:for(var p=0;c>p;++p)f(n[p],8)}for(f(s,4),8>a&&i.push(o);i.length+1<r;)i.push(236,17);return i.length<r&&i.push(236),i},z=function(t,e){for(var n=t.slice(0),r=t.length,i=e.length,o=0;i>o;++o)n.push(0);for(var o=0;r>o;){var a=_[n[o++]];if(a>=0)for(var s=0;i>s;++s)n[o+s]^=w[(a+e[s])%255]}return n.slice(r)},W=function(t,e,n){for(var r=[],i=t.length/e|0,o=0,a=e-t.length%e,s=0;a>s;++s)r.push(o),o+=i;for(var s=a;e>s;++s)r.push(o),o+=i+1;r.push(o);for(var h=[],s=0;e>s;++s)h.push(z(t.slice(r[s],r[s+1]),n));for(var u=[],l=t.length/e|0,s=0;l>s;++s)for(var c=0;e>c;++c)u.push(t[r[c]+s]);for(var c=a;e>c;++c)u.push(t[r[c+1]-1]);for(var s=0;s<n.length;++s)for(var c=0;e>c;++c)u.push(h[c][s]);return u},N=function(t,e,n,r){for(var i=t<<r,o=e-1;o>=0;--o)i>>r+o&1&&(i^=n<<o);return t<<r|i},j=function(t){for(var e=a[t],n=T(t),r=[],i=[],o=0;n>o;++o)r.push([]),i.push([]);var s=function(t,e,n,o,a){for(var s=0;n>s;++s)for(var h=0;o>h;++h)r[t+s][e+h]=a[s]>>h&1,i[t+s][e+h]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(var o=9;n-8>o;++o)r[6][o]=r[o][6]=1&~o,i[6][o]=i[o][6]=1;for(var h=e[2],u=h.length,o=0;u>o;++o)for(var l=0===o||o===u-1?1:0,c=0===o?u-1:u,f=l;c>f;++f)s(h[o],h[f],5,5,[31,17,21,17,31]);if(B(t))for(var d=N(t,6,7973,12),p=0,o=0;6>o;++o)for(var f=0;3>f;++f)r[o][n-11+f]=r[n-11+f][o]=d>>p++&1,i[o][n-11+f]=i[n-11+f][o]=1;return{matrix:r,reserved:i}},H=function(t,e,n){for(var r=t.length,i=0,o=-1,a=r-1;a>=0;a-=2){6==a&&--a;for(var s=0>o?r-1:0,h=0;r>h;++h){for(var u=a;u>a-2;--u)e[s][u]||(t[s][u]=n[i>>3]>>(7&~i)&1,++i);s+=o}o=-o}return t},Z=function(t,e,n){for(var r=R[n],i=t.length,o=0;i>o;++o)for(var a=0;i>a;++a)e[o][a]||(t[o][a]^=r(o,a));return t},G=function(t,e,n,r){for(var i=t.length,o=21522^N(n<<3|r,5,1335,10),a=0;15>a;++a){var s=[0,1,2,3,4,5,7,8,i-7,i-6,i-5,i-4,i-3,i-2,i-1][a],h=[i-1,i-2,i-3,i-4,i-5,i-6,i-7,i-8,7,5,4,3,2,1,0][a];t[s][8]=t[8][h]=o>>a&1}return t},q=function(t){for(var e=3,n=3,r=40,i=10,o=function(t){for(var n=0,i=0;i<t.length;++i)t[i]>=5&&(n+=e+(t[i]-5));for(var i=5;i<t.length;i+=2){var o=t[i];t[i-1]==o&&t[i-2]==3*o&&t[i-3]==o&&t[i-4]==o&&(t[i-5]>=4*o||t[i+1]>=4*o)&&(n+=r)}return n},a=t.length,s=0,h=0,u=0;a>u;++u){var l,c=t[u];l=[0];for(var f=0;a>f;){var d;for(d=0;a>f&&c[f];++d)++f;for(l.push(d),d=0;a>f&&!c[f];++d)++f;l.push(d)}s+=o(l),l=[0];for(var f=0;a>f;){var d;for(d=0;a>f&&t[f][u];++d)++f;for(l.push(d),d=0;a>f&&!t[f][u];++d)++f;l.push(d)}s+=o(l);var p=t[u+1]||[];h+=c[0];for(var f=1;a>f;++f){var g=c[f];h+=g,c[f-1]==g&&p[f]===g&&p[f-1]===g&&(s+=n)}}return s+=i*(Math.abs(h/a/a-.5)/.05|0)},Y=function(t,e,n,r,i){var o=a[e],s=F(e,n,t,O(e,r)>>3);s=W(s,o[1][r],S[o[0][r]]);var h=j(e),u=h.matrix,l=h.reserved;if(H(u,l,s),0>i){Z(u,l,0),G(u,l,r,0);var c=0,f=q(u);for(Z(u,l,0),i=1;8>i;++i){Z(u,l,i),G(u,l,r,i);var d=q(u);f>d&&(f=d,c=i),Z(u,l,i)}i=c}return Z(u,l,i),G(u,l,r,i),u};t.exports={measure:o}},function(t,e,n){(function(){var e;e=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.byteAt=function(t){return this.data[t]},t.prototype.readBool=function(){return!!this.readByte()},t.prototype.writeBool=function(t){return this.writeByte(t?1:0)},t.prototype.readUInt32=function(){var t,e,n,r;return t=16777216*this.readByte(),e=this.readByte()<<16,n=this.readByte()<<8,r=this.readByte(),t+e+n+r},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return t=this.readUInt32(),t>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return 0>t&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){var t,e;return t=this.readByte()<<8,e=this.readByte(),t|e},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return t=this.readUInt16(),t>=32768?t-65536:t},t.prototype.writeInt16=function(t){return 0>t&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r;for(n=[],e=r=0;t>=0?t>r:r>t;e=t>=0?++r:--r)n[e]=String.fromCharCode(this.readByte());return n.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;r>=0?r>n:n>r;e=r>=0?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.stringAt=function(t,e){return this.pos=t,this.readString(e)},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),o=this.readByte(),a=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.slice=function(t,e){return this.data.slice(t,e)},t.prototype.read=function(t){var e,n,r;for(e=[],n=r=0;t>=0?t>r:r>t;n=t>=0?++r:--r)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;r>n;n++)e=t[n],i.push(this.writeByte(e));return i},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};r=n(10),e=function(){function t(t,n){var r,o,a;if(this.data=t,this.label=n,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(a=2;a<this.data.length&&(o=this.data.readUInt16BE(a),a+=2,!(i.call(e,o)>=0));)a+=this.data.readUInt16BE(a);if(i.call(e,o)<0)throw"Invalid JPEG.";a+=2,this.bits=this.data[a++],this.height=this.data.readUInt16BE(a),a+=2,this.width=this.data.readUInt16BE(a),a+=2,r=this.data[a++],this.colorSpace=function(){switch(r){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}var e;return e=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],t.prototype.embed=function(t){return this.obj?void 0:(this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o;o=n(45),r=n(51),i=function(){function t(t,e){this.label=e,this.image=new r(t),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return t.prototype.embed=function(t){var n,r,i,o,a,s,h,u;if(this.document=t,!this.obj){if(this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),this.image.hasAlphaChannel||(i=t.ref({Predictor:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width}),this.obj.data.DecodeParms=i,i.end()),0===this.image.palette.length?this.obj.data.ColorSpace=this.image.colorSpace:(r=t.ref(),r.end(new e(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,r]),this.image.transparency.grayscale)return a=this.image.transparency.greyscale,this.obj.data.Mask=[a,a];if(this.image.transparency.rgb){for(o=this.image.transparency.rgb,n=[],h=0,u=o.length;u>h;h++)s=o[h],n.push(s,s);return this.obj.data.Mask=n}return this.image.transparency.indexed?this.loadIndexedAlphaChannel():this.image.hasAlphaChannel?this.splitAlphaChannel():this.finalize()}},t.prototype.finalize=function(){var t;return this.alphaChannel&&(t=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]}),t.end(this.alphaChannel),this.obj.data.SMask=t),this.obj.end(this.imgData),this.image=null,this.imgData=null},t.prototype.splitAlphaChannel=function(){return this.image.decodePixels(function(t){return function(n){var r,i,a,s,h,u,l,c,f;for(a=t.image.colors*t.image.bits/8,f=t.width*t.height,u=new e(f*a),i=new e(f),h=c=r=0,l=n.length;l>h;)u[c++]=n[h++],u[c++]=n[h++],u[c++]=n[h++],i[r++]=n[h++];return s=0,o.deflate(u,function(e,n){if(t.imgData=n,e)throw e;return 2===++s?t.finalize():void 0}),o.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;return 2===++s?t.finalize():void 0})}}(this))},t.prototype.loadIndexedAlphaChannel=function(t){var n;return n=this.image.transparency.indexed,this.image.decodePixels(function(t){return function(r){var i,a,s,h,u;for(i=new e(t.width*t.height),a=0,s=h=0,u=r.length;u>h;s=h+=1)i[a++]=n[r[s]];return o.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;return t.finalize()})}}(this))},t}(),t.exports=i}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){"use strict";function r(t,e){this.context=t,this.contextStack=[],this.tracker=e}function i(t,e,n){null===n||void 0===n||0>n||n>t.items.length?t.items.push(e):t.items.splice(n,0,e)}function o(t){var e=new a(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var a=n(24),s=n(25).pack,h=n(25).offsetVector,u=n(20);r.prototype.addLine=function(t,e,n){var r=t.getHeight(),o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();return o.availableHeight<r||!a?!1:(t.x=o.x+(t.x||0),t.y=o.y+(t.y||0),this.alignLine(t),i(a,{type:"line",item:t},n),this.tracker.emit("lineAdded",t),e||o.moveDown(r),s)},r.prototype.alignLine=function(t){var e=this.context.availableWidth,n=t.getWidth(),r=t.inlines&&t.inlines.length>0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var o=(e-n)/(t.inlines.length-1),a=1,s=t.inlines.length;s>a;a++)i=a*o,t.inlines[a].x+=i},r.prototype.addImage=function(t,e){var n=this.context,r=n.getCurrentPage(),o=this.getCurrentPositionOnPage();return n.availableHeight<t._height||!r?!1:(t.x=n.x+(t.x||0),t.y=n.y,this.alignImage(t),i(r,{type:"image",item:t},e),n.moveDown(t._height),o)},r.prototype.addQr=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();if(n.availableHeight<t._height||!r)return!1;t.x=n.x+(t.x||0),t.y=n.y,this.alignImage(t);for(var o=0,a=t._canvas.length;a>o;o++){var s=t._canvas[o];s.x+=t.x,s.y+=t.y,this.addVector(s,!0,!0,e)}return n.moveDown(t._height),i},r.prototype.alignImage=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&(t.x=(t.x||0)+r)},r.prototype.addVector=function(t,e,n,r){var o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();return a?(h(t,e?0:o.x,n?0:o.y),i(a,{type:"vector",item:t},r),s):void 0},r.prototype.addFragment=function(t,e,n,r){var i=this.context,a=i.getCurrentPage();return!e&&t.height>i.availableHeight?!1:(t.items.forEach(function(r){switch(r.type){case"line":var u=o(r.item);u.x=(u.x||0)+(e?t.xOffset||0:i.x),u.y=(u.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"line",item:u});break;case"vector":var l=s(r.item);h(l,e?t.xOffset||0:i.x,n?t.yOffset||0:i.y),a.items.push({type:"vector",item:l});break;case"image":var c=s(r.item);c.x=(c.x||0)+(e?t.xOffset||0:i.x),c.y=(c.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"image",item:c})}}),r||i.moveDown(t.height),!0)},r.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),("number"==typeof t||t instanceof Number)&&(t=new u({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},r.prototype.popContext=function(){this.context=this.contextStack.pop()},r.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=r},function(t,e,n){(function(){var e;e=function(){function t(t,r){var i;this.document=t,null==r&&(r={}),this.size=r.size||"letter",this.layout=r.layout||"portrait",this.margins="number"==typeof r.margin?{top:r.margin,left:r.margin,bottom:r.margin,right:r.margin}:r.margins||e,i=Array.isArray(this.size)?this.size:n[this.size.toUpperCase()],this.width=i["portrait"===this.layout?0:1],this.height=i["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:function(t){return function(){ +var e;return null!=(e=t.resources.data).Font?e.Font:e.Font={}}}(this)},xobjects:{get:function(t){return function(){var e;return null!=(e=t.resources.data).XObject?e.XObject:e.XObject={}}}(this)},ext_gstates:{get:function(t){return function(){var e;return null!=(e=t.resources.data).ExtGState?e.ExtGState:e.ExtGState={}}}(this)},patterns:{get:function(t){return function(){var e;return null!=(e=t.resources.data).Pattern?e.Pattern:e.Pattern={}}}(this)},annotations:{get:function(t){return function(){var e;return null!=(e=t.dictionary.data).Annots?e.Annots:e.Annots=[]}}(this)}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}var e,n;return t.prototype.maxY=function(){return this.height-this.margins.bottom},t.prototype.write=function(t){return this.content.write(t)},t.prototype.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},e={top:72,left:72,bottom:72,right:72},n={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i=[].slice;r=n(47),e=4*((Math.sqrt(2)-1)/3),t.exports={initVector:function(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function(){return this.addContent("h")},lineWidth:function(t){return this.addContent(""+t+" w")},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function(t){return"string"==typeof t&&(t=this._CAP_STYLES[t.toUpperCase()]),this.addContent(""+t+" J")},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function(t){return"string"==typeof t&&(t=this._JOIN_STYLES[t.toUpperCase()]),this.addContent(""+t+" j")},miterLimit:function(t){return this.addContent(""+t+" M")},dash:function(t,e){var n,r,i;return null==e&&(e={}),null==t?this:(r=null!=(i=e.space)?i:t,n=e.phase||0,this.addContent("["+t+" "+r+"] "+n+" d"))},undash:function(){return this.addContent("[] 0 d")},moveTo:function(t,e){return this.addContent(""+t+" "+e+" m")},lineTo:function(t,e){return this.addContent(""+t+" "+e+" l")},bezierCurveTo:function(t,e,n,r,i,o){return this.addContent(""+t+" "+e+" "+n+" "+r+" "+i+" "+o+" c")},quadraticCurveTo:function(t,e,n,r){return this.addContent(""+t+" "+e+" "+n+" "+r+" v")},rect:function(t,e,n,r){return this.addContent(""+t+" "+e+" "+n+" "+r+" re")},roundedRect:function(t,e,n,r,i){return null==i&&(i=0),this.moveTo(t+i,e),this.lineTo(t+n-i,e),this.quadraticCurveTo(t+n,e,t+n,e+i),this.lineTo(t+n,e+r-i),this.quadraticCurveTo(t+n,e+r,t+n-i,e+r),this.lineTo(t+i,e+r),this.quadraticCurveTo(t,e+r,t,e+r-i),this.lineTo(t,e+i),this.quadraticCurveTo(t,e,t+i,e)},ellipse:function(t,n,r,i){var o,a,s,h,u,l;return null==i&&(i=r),t-=r,n-=i,o=r*e,a=i*e,s=t+2*r,u=n+2*i,h=t+r,l=n+i,this.moveTo(t,l),this.bezierCurveTo(t,l-a,h-o,n,h,n),this.bezierCurveTo(h+o,n,s,l-a,s,l),this.bezierCurveTo(s,l+a,h+o,u,h,u),this.bezierCurveTo(h-o,u,t,l+a,t,l),this.closePath()},circle:function(t,e,n){return this.ellipse(t,e,n)},polygon:function(){var t,e,n,r;for(e=1<=arguments.length?i.call(arguments,0):[],this.moveTo.apply(this,e.shift()),n=0,r=e.length;r>n;n++)t=e[n],this.lineTo.apply(this,t);return this.closePath()},path:function(t){return r.apply(this,t),this},_windingRule:function(t){return/even-?odd/.test(t)?"*":""},fill:function(t,e){return/(even-?odd)|(non-?zero)/.test(t)&&(e=t,t=null),t&&this.fillColor(t),this.addContent("f"+this._windingRule(e))},stroke:function(t){return t&&this.strokeColor(t),this.addContent("S")},fillAndStroke:function(t,e,n){var r;return null==e&&(e=t),r=/(even-?odd)|(non-?zero)/,r.test(t)&&(n=t,t=null),r.test(e)&&(n=e,e=t),t&&(this.fillColor(t),this.strokeColor(e)),this.addContent("B"+this._windingRule(n))},clip:function(t){return this.addContent("W"+this._windingRule(t)+" n")},transform:function(t,e,n,r,i,o){var a,s,h,u,l,c,f,d,p;return a=this._ctm,s=a[0],h=a[1],u=a[2],l=a[3],c=a[4],f=a[5],a[0]=s*t+u*e,a[1]=h*t+l*e,a[2]=s*n+u*r,a[3]=h*n+l*r,a[4]=s*i+u*o+c,a[5]=h*i+l*o+f,p=function(){var a,s,h,u;for(h=[t,e,n,r,i,o],u=[],a=0,s=h.length;s>a;a++)d=h[a],u.push(+d.toFixed(5));return u}().join(" "),this.addContent(""+p+" cm")},translate:function(t,e){return this.transform(1,0,0,1,t,e)},rotate:function(t,e){var n,r,i,o,a,s,h,u;return null==e&&(e={}),r=t*Math.PI/180,n=Math.cos(r),i=Math.sin(r),o=s=0,null!=e.origin&&(u=e.origin,o=u[0],s=u[1],a=o*n-s*i,h=o*i+s*n,o-=a,s-=h),this.transform(n,i,-i,n,o,s)},scale:function(t,e,n){var r,i,o;return null==e&&(e=t),null==n&&(n={}),2===arguments.length&&(e=t,n=e),r=i=0,null!=n.origin&&(o=n.origin,r=o[0],i=o[1],r-=t*r,i-=e*i),this.transform(t,0,0,e,r,i)}}}).call(this)},function(t,e,n){(function(){var e;e=n(48),t.exports={initText:function(){return this.x=0,this.y=0,this._lineGap=0},lineGap:function(t){return this._lineGap=t,this},moveDown:function(t){return null==t&&(t=1),this.y+=this.currentLineHeight(!0)*t+this._lineGap,this},moveUp:function(t){return null==t&&(t=1),this.y-=this.currentLineHeight(!0)*t+this._lineGap,this},_text:function(t,n,r,i,o){var a,s,h,u,l;if(i=this._initOptions(n,r,i),t=""+t,i.wordSpacing&&(t=t.replace(/\s{2,}/g," ")),i.width)s=this._wrapper,s||(s=new e(this,i),s.on("line",o)),this._wrapper=i.continued?s:null,this._textOptions=i.continued?i:null,s.wrap(t,i);else for(l=t.split("\n"),h=0,u=l.length;u>h;h++)a=l[h],o(a,i);return this},text:function(t,e,n,r){return this._text(t,e,n,r,this._line.bind(this))},widthOfString:function(t,e){return null==e&&(e={}),this._font.widthOfString(t,this._fontSize)+(e.characterSpacing||0)*(t.length-1)},heightOfString:function(t,e){var n,r,i,o;return null==e&&(e={}),i=this.x,o=this.y,e=this._initOptions(e),e.height=1/0,r=e.lineGap||this._lineGap||0,this._text(t,this.x,this.y,e,function(t){return function(e,n){return t.y+=t.currentLineHeight(!0)+r}}(this)),n=this.y-o,this.x=i,this.y=o,n},list:function(t,n,r,i,o){var a,s,h,u,l,c,f,d;return i=this._initOptions(n,r,i),d=Math.round(this._font.ascender/1e3*this._fontSize/3),h=i.textIndent||5*d,u=i.bulletIndent||8*d,c=1,l=[],f=[],a=function(t){var e,n,r,i,o;for(o=[],e=r=0,i=t.length;i>r;e=++r)n=t[e],Array.isArray(n)?(c++,a(n),o.push(c--)):(l.push(n),o.push(f.push(c)));return o},a(t),o=new e(this,i),o.on("line",this._line.bind(this)),c=1,s=0,o.on("firstLine",function(t){return function(){var e,n;return(n=f[s++])!==c&&(e=u*(n-c),t.x+=e,o.lineWidth-=e,c=n),t.circle(t.x-h+d,t.y+d+d/2,d),t.fill()}}(this)),o.on("sectionStart",function(t){return function(){var e;return e=h+u*(c-1),t.x+=e,o.lineWidth-=e}}(this)),o.on("sectionEnd",function(t){return function(){var e;return e=h+u*(c-1),t.x-=e,o.lineWidth+=e}}(this)),o.wrap(l.join("\n"),i),this},_initOptions:function(t,e,n){var r,i,o,a;if(null==t&&(t={}),null==n&&(n={}),"object"==typeof t&&(n=t,t=null),n=function(){var t,e,r;e={};for(t in n)r=n[t],e[t]=r;return e}(),this._textOptions){a=this._textOptions;for(r in a)o=a[r],"continued"!==r&&null==n[r]&&(n[r]=o)}return null!=t&&(this.x=t),null!=e&&(this.y=e),n.lineBreak!==!1&&(i=this.page.margins,null==n.width&&(n.width=this.page.width-this.x-i.right)),n.columns||(n.columns=0),null==n.columnGap&&(n.columnGap=18),n},_line:function(t,e,n){var r;return null==e&&(e={}),this._fragment(t,this.x,this.y,e),r=e.lineGap||this._lineGap||0,n?this.y+=this.currentLineHeight(!0)+r:this.x+=this.widthOfString(t)},_fragment:function(t,e,n,r){var i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x;if(t=""+t,0!==t.length){if(i=r.align||"left",m=r.wordSpacing||0,o=r.characterSpacing||0,r.width)switch(i){case"right":g=this.widthOfString(t.replace(/\s+$/,""),r),e+=r.lineWidth-g;break;case"center":e+=r.lineWidth/2-r.textWidth/2;break;case"justify":y=t.trim().split(/\s+/),g=this.widthOfString(t.replace(/\s+/g,""),r),p=this.widthOfString(" ")+o,m=Math.max(0,(r.lineWidth-g)/Math.max(1,y.length-1)-p)}if(d=r.textWidth+m*(r.wordCount-1)+o*(t.length-1),r.link&&this.link(e,n,d,this.currentLineHeight(),r.link),(r.underline||r.strike)&&(this.save(),r.stroke||this.strokeColor.apply(this,this._fillColor),l=this._fontSize<10?.5:Math.floor(this._fontSize/10),this.lineWidth(l),s=r.underline?1:2,c=n+this.currentLineHeight()/s,r.underline&&(c-=l),this.moveTo(e,c),this.lineTo(e+d,c),this.stroke(),this.restore()),this.save(),this.transform(1,0,0,-1,0,this.page.height),n=this.page.height-n-this._font.ascender/1e3*this._fontSize,null==(w=this.page.fonts)[x=this._font.id]&&(w[x]=this._font.ref()),this._font.use(t),this.addContent("BT"),this.addContent(""+e+" "+n+" Td"),this.addContent("/"+this._font.id+" "+this._fontSize+" Tf"),f=r.fill&&r.stroke?2:r.stroke?1:0,f&&this.addContent(""+f+" Tr"),o&&this.addContent(""+o+" Tc"),m){for(y=t.trim().split(/\s+/),m+=this.widthOfString(" ")+o,m*=1e3/this._fontSize,a=[],_=0,b=y.length;b>_;_++)v=y[_],h=this._font.encode(v),h=function(){var t,e,n;for(n=[],u=t=0,e=h.length;e>t;u=t+=1)n.push(h.charCodeAt(u).toString(16));return n}().join(""),a.push("<"+h+"> "+-m);this.addContent("["+a.join(" ")+"] TJ")}else h=this._font.encode(t),h=function(){var t,e,n;for(n=[],u=t=0,e=h.length;e>t;u=t+=1)n.push(h.charCodeAt(u).toString(16));return n}().join(""),this.addContent("<"+h+"> Tj");return this.addContent("ET"),this.restore()}}}}).call(this)},function(t,e,n){(function(){var e,r,i,o,a;a=n(49),e=a.PDFGradient,r=a.PDFLinearGradient,i=a.PDFRadialGradient,t.exports={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(t){var n,r;return t instanceof e?t:("string"==typeof t&&("#"===t.charAt(0)?(4===t.length&&(t=t.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3")),n=parseInt(t.slice(1),16),t=[n>>16,n>>8&255,255&n]):o[t]&&(t=o[t])),Array.isArray(t)?(3===t.length?t=function(){var e,n,i;for(i=[],e=0,n=t.length;n>e;e++)r=t[e],i.push(r/255);return i}():4===t.length&&(t=function(){var e,n,i;for(i=[],e=0,n=t.length;n>e;e++)r=t[e],i.push(r/100);return i}()),t):null)},_setColor:function(t,n){var r,i,o,a;return(t=this._normalizeColor(t))?(this._sMasked&&(r=this.ref({Type:"ExtGState",SMask:"None"}),r.end(),i="Gs"+ ++this._opacityCount,this.page.ext_gstates[i]=r,this.addContent("/"+i+" gs"),this._sMasked=!1),o=n?"SCN":"scn",t instanceof e?(this._setColorSpace("Pattern",n),t.apply(o)):(a=4===t.length?"DeviceCMYK":"DeviceRGB",this._setColorSpace(a,n),t=t.join(" "),this.addContent(""+t+" "+o)),!0):!1},_setColorSpace:function(t,e){var n;return n=e?"CS":"cs",this.addContent("/"+t+" "+n)},fillColor:function(t,e){var n;return null==e&&(e=1),n=this._setColor(t,!1),n&&this.fillOpacity(e),this._fillColor=[t,e],this},strokeColor:function(t,e){var n;return null==e&&(e=1),n=this._setColor(t,!0),n&&this.strokeOpacity(e),this},opacity:function(t){return this._doOpacity(t,t),this},fillOpacity:function(t){return this._doOpacity(t,null),this},strokeOpacity:function(t){return this._doOpacity(null,t),this},_doOpacity:function(t,e){var n,r,i,o,a;if(null!=t||null!=e)return null!=t&&(t=Math.max(0,Math.min(1,t))),null!=e&&(e=Math.max(0,Math.min(1,e))),i=""+t+"_"+e,this._opacityRegistry[i]?(a=this._opacityRegistry[i],n=a[0],o=a[1]):(n={Type:"ExtGState"},null!=t&&(n.ca=t),null!=e&&(n.CA=e),n=this.ref(n),n.end(),r=++this._opacityCount,o="Gs"+r,this._opacityRegistry[i]=[n,o]),this.page.ext_gstates[o]=n,this.addContent("/"+o+" gs")},linearGradient:function(t,e,n,i){return new r(this,t,e,n,i)},radialGradient:function(t,e,n,r,o,a){return new i(this,t,e,n,r,o,a)}},o={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}).call(this)},function(t,e,n){(function(e){(function(){var r;r=n(17),t.exports={initImages:function(){return this._imageRegistry={},this._imageCount=0},image:function(t,n,i,o){var a,s,h,u,l,c,f,d,p,g,v,m,y,w;return null==o&&(o={}),"object"==typeof n&&(o=n,n=null),n=null!=(m=null!=n?n:o.x)?m:this.x,i=null!=(y=null!=i?i:o.y)?y:this.y,e.isBuffer(t)||(c=this._imageRegistry[t]),c||(c=r.open(t,"I"+ ++this._imageCount),c.embed(this),e.isBuffer(t)||(this._imageRegistry[t]=c)),null==(g=this.page.xobjects)[v=c.label]&&(g[v]=c.obj),d=o.width||c.width,u=o.height||c.height,o.width&&!o.height?(p=d/c.width,d=c.width*p,u=c.height*p):o.height&&!o.width?(l=u/c.height,d=c.width*l,u=c.height*l):o.scale?(d=c.width*o.scale,u=c.height*o.scale):o.fit&&(w=o.fit,h=w[0],a=w[1],s=h/a,f=c.width/c.height,f>s?(d=h,u=h/f):(u=a,d=a*f),"center"===o.align?n=n+h/2-d/2:"right"===o.align&&(n=n+h-d),"center"===o.valign?i=i+a/2-u/2:"bottom"===o.valign&&(i=i+a-u)),this.y===i&&(this.y+=u),this.save(),this.transform(d,0,0,-u,n,i+u),this.addContent("/"+c.label+" Do"),this.restore(),this}}}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){(function(){t.exports={annotate:function(t,e,n,r,i){var o,a,s;i.Type="Annot",i.Rect=this._convertRect(t,e,n,r),i.Border=[0,0,0],"Link"!==i.Subtype&&null==i.C&&(i.C=this._normalizeColor(i.color||[0,0,0])),delete i.color,"string"==typeof i.Dest&&(i.Dest=new String(i.Dest));for(o in i)s=i[o],i[o[0].toUpperCase()+o.slice(1)]=s;return a=this.ref(i),this.page.annotations.push(a),a.end(),this},note:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="Text",o.Contents=new String(i),o.Name="Comment",null==o.color&&(o.color=[243,223,92]),this.annotate(t,e,n,r,o)},link:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="Link",o.A=this.ref({S:"URI",URI:new String(i)}),o.A.end(),this.annotate(t,e,n,r,o)},_markup:function(t,e,n,r,i){var o,a,s,h,u;return null==i&&(i={}),u=this._convertRect(t,e,n,r),o=u[0],s=u[1],a=u[2],h=u[3],i.QuadPoints=[o,h,a,h,o,s,a,s],i.Contents=new String,this.annotate(t,e,n,r,i)},highlight:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Highlight",null==i.color&&(i.color=[241,238,148]),this._markup(t,e,n,r,i)},underline:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Underline",this._markup(t,e,n,r,i)},strike:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="StrikeOut",this._markup(t,e,n,r,i)},lineAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Line",i.Contents=new String,i.L=[t,this.page.height-e,n,this.page.height-r],this.annotate(t,e,n,r,i)},rectAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Square",i.Contents=new String,this.annotate(t,e,n,r,i)},ellipseAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Circle",i.Contents=new String,this.annotate(t,e,n,r,i)},textAnnotation:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="FreeText",o.Contents=new String(i),o.DA=new String,this.annotate(t,e,n,r,o)},_convertRect:function(t,e,n,r){var i,o,a,s,h,u,l,c,f;return c=e,e+=r,l=t+n,f=this._ctm,i=f[0],o=f[1],a=f[2],s=f[3],h=f[4],u=f[5],t=i*t+a*e+h,e=o*t+s*e+u,l=i*l+a*c+h,c=o*l+s*c+u,[t,e,l,c]}}}).call(this)},function(t,e,n){(function(){var e;e=n(52),t.exports={initFonts:function(){this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={}},font:function(t,n,r){var i,o,a,s;return"number"==typeof n&&(r=n,n=null),"string"==typeof t&&this._registeredFonts[t]?(i=t,s=this._registeredFonts[t],t=s.src,n=s.family):(i=n||t,"string"!=typeof i&&(i=null)),null!=r&&this.fontSize(r),(o=this._fontFamilies[i])?(this._font=o,this):(a="F"+ ++this._fontCount,this._font=new e(this,t,n,a),(o=this._fontFamilies[this._font.name])?(this._font=o,this):(i&&(this._fontFamilies[i]=this._font),this._fontFamilies[this._font.name]=this._font,this))},fontSize:function(t){return this._fontSize=t,this},currentLineHeight:function(t){return null==t&&(t=!1),this._font.lineHeight(this._fontSize,t)},registerFont:function(t,e,n){return this._registeredFonts[t]={src:e,family:n},this}}}).call(this)},function(t,e,n){(function(t,r){function i(e,n,r){function i(){for(var t;null!==(t=e.read());)s.push(t),h+=t.length;e.once("readable",i)}function o(t){e.removeListener("end",a),e.removeListener("readable",i),r(t)}function a(){var n=t.concat(s,h);s=[],r(null,n),e.close()}var s=[],h=0;e.on("error",o),e.on("end",a),e.end(n),i()}function o(e,n){if("string"==typeof n&&(n=new t(n)),!t.isBuffer(n))throw new TypeError("Not a string or buffer");var r=g.Z_FINISH;return e._processChunk(n,r)}function a(t){return this instanceof a?void d.call(this,t,g.DEFLATE):new a(t)}function s(t){return this instanceof s?void d.call(this,t,g.INFLATE):new s(t)}function h(t){return this instanceof h?void d.call(this,t,g.GZIP):new h(t)}function u(t){return this instanceof u?void d.call(this,t,g.GUNZIP):new u(t)}function l(t){return this instanceof l?void d.call(this,t,g.DEFLATERAW):new l(t)}function c(t){return this instanceof c?void d.call(this,t,g.INFLATERAW):new c(t)}function f(t){return this instanceof f?void d.call(this,t,g.UNZIP):new f(t)}function d(n,r){if(this._opts=n=n||{},this._chunkSize=n.chunkSize||e.Z_DEFAULT_CHUNK,p.call(this,n),n.flush&&n.flush!==g.Z_NO_FLUSH&&n.flush!==g.Z_PARTIAL_FLUSH&&n.flush!==g.Z_SYNC_FLUSH&&n.flush!==g.Z_FULL_FLUSH&&n.flush!==g.Z_FINISH&&n.flush!==g.Z_BLOCK)throw new Error("Invalid flush flag: "+n.flush);if(this._flushFlag=n.flush||g.Z_NO_FLUSH,n.chunkSize&&(n.chunkSize<e.Z_MIN_CHUNK||n.chunkSize>e.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+n.chunkSize);if(n.windowBits&&(n.windowBits<e.Z_MIN_WINDOWBITS||n.windowBits>e.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+n.windowBits);if(n.level&&(n.level<e.Z_MIN_LEVEL||n.level>e.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+n.level);if(n.memLevel&&(n.memLevel<e.Z_MIN_MEMLEVEL||n.memLevel>e.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+n.memLevel);if(n.strategy&&n.strategy!=e.Z_FILTERED&&n.strategy!=e.Z_HUFFMAN_ONLY&&n.strategy!=e.Z_RLE&&n.strategy!=e.Z_FIXED&&n.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+n.strategy);if(n.dictionary&&!t.isBuffer(n.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new g.Zlib(r);var i=this;this._hadError=!1,this._binding.onerror=function(t,n){i._binding=null,i._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],i.emit("error",r)};var o=e.Z_DEFAULT_COMPRESSION;"number"==typeof n.level&&(o=n.level);var a=e.Z_DEFAULT_STRATEGY;"number"==typeof n.strategy&&(a=n.strategy),this._binding.init(n.windowBits||e.Z_DEFAULT_WINDOWBITS,o,n.memLevel||e.Z_DEFAULT_MEMLEVEL,a,n.dictionary),this._buffer=new t(this._chunkSize),this._offset=0,this._closed=!1,this._level=o,this._strategy=a,this.once("end",this.close)}var p=n(55),g=n(50),v=n(60),m=n(53).ok;g.Z_MIN_WINDOWBITS=8,g.Z_MAX_WINDOWBITS=15,g.Z_DEFAULT_WINDOWBITS=15,g.Z_MIN_CHUNK=64,g.Z_MAX_CHUNK=1/0,g.Z_DEFAULT_CHUNK=16384,g.Z_MIN_MEMLEVEL=1,g.Z_MAX_MEMLEVEL=9,g.Z_DEFAULT_MEMLEVEL=8,g.Z_MIN_LEVEL=-1,g.Z_MAX_LEVEL=9,g.Z_DEFAULT_LEVEL=g.Z_DEFAULT_COMPRESSION,Object.keys(g).forEach(function(t){t.match(/^Z/)&&(e[t]=g[t])}),e.codes={Z_OK:g.Z_OK,Z_STREAM_END:g.Z_STREAM_END,Z_NEED_DICT:g.Z_NEED_DICT,Z_ERRNO:g.Z_ERRNO,Z_STREAM_ERROR:g.Z_STREAM_ERROR,Z_DATA_ERROR:g.Z_DATA_ERROR,Z_MEM_ERROR:g.Z_MEM_ERROR,Z_BUF_ERROR:g.Z_BUF_ERROR,Z_VERSION_ERROR:g.Z_VERSION_ERROR},Object.keys(e.codes).forEach(function(t){e.codes[e.codes[t]]=t}),e.Deflate=a,e.Inflate=s,e.Gzip=h,e.Gunzip=u,e.DeflateRaw=l,e.InflateRaw=c,e.Unzip=f,e.createDeflate=function(t){return new a(t)},e.createInflate=function(t){return new s(t)},e.createDeflateRaw=function(t){return new l(t)},e.createInflateRaw=function(t){return new c(t)},e.createGzip=function(t){return new h(t)},e.createGunzip=function(t){return new u(t)},e.createUnzip=function(t){return new f(t)},e.deflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new a(e),t,n)},e.deflateSync=function(t,e){return o(new a(e),t)},e.gzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new h(e),t,n)},e.gzipSync=function(t,e){return o(new h(e),t)},e.deflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new l(e),t,n)},e.deflateRawSync=function(t,e){return o(new l(e),t)},e.unzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new f(e),t,n)},e.unzipSync=function(t,e){return o(new f(e),t)},e.inflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new s(e),t,n)},e.inflateSync=function(t,e){return o(new s(e),t)},e.gunzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new u(e),t,n)},e.gunzipSync=function(t,e){return o(new u(e),t)},e.inflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new c(e),t,n)},e.inflateRawSync=function(t,e){return o(new c(e),t)},v.inherits(d,p),d.prototype.params=function(t,n,i){if(t<e.Z_MIN_LEVEL||t>e.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(n!=e.Z_FILTERED&&n!=e.Z_HUFFMAN_ONLY&&n!=e.Z_RLE&&n!=e.Z_FIXED&&n!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+n);if(this._level!==t||this._strategy!==n){var o=this;this.flush(g.Z_SYNC_FLUSH,function(){o._binding.params(t,n),o._hadError||(o._level=t,o._strategy=n,i&&i())})}else r.nextTick(i)},d.prototype.reset=function(){return this._binding.reset()},d.prototype._flush=function(e){this._transform(new t(0),"",e)},d.prototype.flush=function(e,n){var i=this._writableState;if(("function"==typeof e||void 0===e&&!n)&&(n=e,e=g.Z_FULL_FLUSH),i.ended)n&&r.nextTick(n);else if(i.ending)n&&this.once("end",n);else if(i.needDrain){var o=this;this.once("drain",function(){o.flush(n)})}else this._flushFlag=e,this.write(new t(0),"",n)},d.prototype.close=function(t){if(t&&r.nextTick(t),!this._closed){this._closed=!0,this._binding.close();var e=this;r.nextTick(function(){e.emit("close")})}},d.prototype._transform=function(e,n,r){var i,o=this._writableState,a=o.ending||o.ended,s=a&&(!e||o.length===e.length);if(null===!e&&!t.isBuffer(e))return r(new Error("invalid input"));s?i=g.Z_FINISH:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||g.Z_NO_FLUSH));this._processChunk(e,i,r)},d.prototype._processChunk=function(e,n,r){function i(l,d){if(!h._hadError){var p=a-d;if(m(p>=0,"have should not go down"),p>0){var g=h._buffer.slice(h._offset,h._offset+p);h._offset+=p,u?h.push(g):(c.push(g),f+=g.length)}if((0===d||h._offset>=h._chunkSize)&&(a=h._chunkSize,h._offset=0,h._buffer=new t(h._chunkSize)),0===d){if(s+=o-l,o=l,!u)return!0;var v=h._binding.write(n,e,s,o,h._buffer,h._offset,h._chunkSize);return v.callback=i,void(v.buffer=e)}return u?void r():!1}}var o=e&&e.length,a=this._chunkSize-this._offset,s=0,h=this,u="function"==typeof r;if(!u){var l,c=[],f=0;this.on("error",function(t){l=t});do var d=this._binding.writeSync(n,e,s,o,this._buffer,this._offset,a);while(!this._hadError&&i(d[0],d[1]));if(this._hadError)throw l;var p=t.concat(c,f);return this.close(),p}var g=this._binding.write(n,e,s,o,this._buffer,this._offset,a);g.buffer=e,g.callback=i},v.inherits(a,d),v.inherits(s,d),v.inherits(h,d),v.inherits(u,d),v.inherits(l,d),v.inherits(c,d),v.inherits(f,d)}).call(e,n(4).Buffer,n(61))},function(t,e,n){function r(){i.call(this)}t.exports=r;var i=n(54).EventEmitter,o=n(62);o(r,i),r.Readable=n(56),r.Writable=n(57),r.Duplex=n(58),r.Transform=n(55),r.PassThrough=n(59),r.Stream=r,r.prototype.pipe=function(t,e){function n(e){t.writable&&!1===t.write(e)&&u.pause&&u.pause()}function r(){u.readable&&u.resume&&u.resume()}function o(){l||(l=!0,t.end())}function a(){l||(l=!0,"function"==typeof t.destroy&&t.destroy())}function s(t){if(h(),0===i.listenerCount(this,"error"))throw t}function h(){u.removeListener("data",n),t.removeListener("drain",r),u.removeListener("end",o),u.removeListener("close",a),u.removeListener("error",s),t.removeListener("error",s),u.removeListener("end",h),u.removeListener("close",h),t.removeListener("close",h)}var u=this;u.on("data",n),t.on("drain",r),t._isStdio||e&&e.end===!1||(u.on("end",o),u.on("close",a));var l=!1;return u.on("error",s),t.on("error",s),u.on("end",h),u.on("close",h),t.on("close",h),t.emit("pipe",u),t}},function(t,e,n){(function(){var e;e=function(){function t(){}var e,n,r,i,o,a,s,h,u,l,c,f,d;return t.apply=function(t,n){var r;return r=a(n),e(r,t)},o={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},a=function(t){var e,n,r,i,a,s,h,u,l;for(h=[],e=[],i="",a=!1,s=0,u=0,l=t.length;l>u;u++)if(n=t[u],null!=o[n])s=o[n],r&&(i.length>0&&(e[e.length]=+i),h[h.length]={cmd:r,args:e},e=[],i="",a=!1),r=n;else if(" "===n||","===n||"-"===n&&i.length>0&&"e"!==i[i.length-1]||"."===n&&a){if(0===i.length)continue;e.length===s?(h[h.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i,a="."===n,i="-"===n||"."===n?n:""}else i+=n,"."===n&&(a=!0);return i.length>0&&(e.length===s?(h[h.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i),h[h.length]={cmd:r,args:e},h},r=i=s=h=f=d=0,e=function(t,e){var n,o,a,l,c;for(r=i=s=h=f=d=0,o=a=0,l=t.length;l>a;o=++a)n=t[o],"function"==typeof u[c=n.cmd]&&u[c](e,n.args);return r=i=s=h=0},u={M:function(t,e){return r=e[0],i=e[1],s=h=null,f=r,d=i,t.moveTo(r,i)},m:function(t,e){return r+=e[0],i+=e[1],s=h=null,f=r,d=i,t.moveTo(r,i)},C:function(t,e){return r=e[4],i=e[5],s=e[2],h=e[3],t.bezierCurveTo.apply(t,e)},c:function(t,e){return t.bezierCurveTo(e[0]+r,e[1]+i,e[2]+r,e[3]+i,e[4]+r,e[5]+i),s=r+e[2],h=i+e[3],r+=e[4],i+=e[5]},S:function(t,e){return null===s&&(s=r,h=i),t.bezierCurveTo(r-(s-r),i-(h-i),e[0],e[1],e[2],e[3]),s=e[0],h=e[1],r=e[2],i=e[3]},s:function(t,e){return null===s&&(s=r,h=i),t.bezierCurveTo(r-(s-r),i-(h-i),r+e[0],i+e[1],r+e[2],i+e[3]),s=r+e[0],h=i+e[1],r+=e[2],i+=e[3]},Q:function(t,e){return s=e[0],h=e[1],r=e[2],i=e[3],t.quadraticCurveTo(e[0],e[1],r,i)},q:function(t,e){return t.quadraticCurveTo(e[0]+r,e[1]+i,e[2]+r,e[3]+i),s=r+e[0],h=i+e[1],r+=e[2],i+=e[3]},T:function(t,e){return null===s?(s=r,h=i):(s=r-(s-r),h=i-(h-i)),t.quadraticCurveTo(s,h,e[0],e[1]),s=r-(s-r),h=i-(h-i),r=e[0],i=e[1]},t:function(t,e){return null===s?(s=r,h=i):(s=r-(s-r),h=i-(h-i)),t.quadraticCurveTo(s,h,r+e[0],i+e[1]),r+=e[0],i+=e[1]},A:function(t,e){return c(t,r,i,e),r=e[5],i=e[6]},a:function(t,e){return e[5]+=r,e[6]+=i,c(t,r,i,e),r=e[5],i=e[6]},L:function(t,e){return r=e[0],i=e[1],s=h=null,t.lineTo(r,i)},l:function(t,e){return r+=e[0],i+=e[1],s=h=null,t.lineTo(r,i)},H:function(t,e){return r=e[0],s=h=null,t.lineTo(r,i)},h:function(t,e){return r+=e[0],s=h=null,t.lineTo(r,i)},V:function(t,e){return i=e[0],s=h=null,t.lineTo(r,i)},v:function(t,e){return i+=e[0],s=h=null,t.lineTo(r,i)},Z:function(t){return t.closePath(),r=f,i=d},z:function(t){return t.closePath(),r=f,i=d}},c=function(t,e,r,i){var o,a,s,h,u,c,f,d,p,g,v,m,y;for(c=i[0],f=i[1],u=i[2],h=i[3],g=i[4],a=i[5],s=i[6],p=n(a,s,c,f,h,g,u,e,r),y=[],v=0,m=p.length;m>v;v++)d=p[v],o=l.apply(null,d),y.push(t.bezierCurveTo.apply(t,o));return y},n=function(t,e,n,r,i,o,a,u,l){var c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L,R,B,T,M,O,D,U;for(k=a*(Math.PI/180),S=Math.sin(k),g=Math.cos(k),n=Math.abs(n),r=Math.abs(r),s=g*(u-t)*.5+S*(l-e)*.5,h=g*(l-e)*.5-S*(u-t)*.5,y=s*s/(n*n)+h*h/(r*r),y>1&&(y=Math.sqrt(y),n*=y,r*=y),c=g/n,f=S/n,d=-S/r,p=g/r,R=c*u+f*l,M=d*u+p*l,B=c*t+f*e,O=d*t+p*e,v=(B-R)*(B-R)+(O-M)*(O-M),x=1/v-.25,0>x&&(x=0),b=Math.sqrt(x),o===i&&(b=-b),T=.5*(R+B)-b*(O-M),D=.5*(M+O)+b*(B-R),E=Math.atan2(M-D,R-T),C=Math.atan2(O-D,B-T),L=C-E,0>L&&1===o?L+=2*Math.PI:L>0&&0===o&&(L-=2*Math.PI),_=Math.ceil(Math.abs(L/(.5*Math.PI+.001))),w=[],m=U=0;_>=0?_>U:U>_;m=_>=0?++U:--U)I=E+m*L/_,A=E+(m+1)*L/_,w[m]=[T,D,I,A,n,r,S,g];return w},l=function(t,e,n,r,i,o,a,s){var h,u,l,c,f,d,p,g,v,m,y,w;return h=s*i,u=-a*o,l=a*i,c=s*o,d=.5*(r-n),f=8/3*Math.sin(.5*d)*Math.sin(.5*d)/Math.sin(d),p=t+Math.cos(n)-f*Math.sin(n),m=e+Math.sin(n)+f*Math.cos(n),v=t+Math.cos(r),w=e+Math.sin(r),g=v+f*Math.sin(r),y=w-f*Math.cos(r),[h*p+u*m,l*p+c*m,h*g+u*y,l*g+c*y,h*v+u*w,l*v+c*w]},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,o={}.hasOwnProperty,a=function(t,e){function n(){this.constructor=t}for(var r in e)o.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype, +t};e=n(54).EventEmitter,r=n(66),i=function(t){function e(t,e){var n;this.document=t,this.indent=e.indent||0,this.characterSpacing=e.characterSpacing||0,this.wordSpacing=0===e.wordSpacing,this.columns=e.columns||1,this.columnGap=null!=(n=e.columnGap)?n:18,this.lineWidth=(e.width-this.columnGap*(this.columns-1))/this.columns,this.spaceLeft=this.lineWidth,this.startX=this.document.x,this.startY=this.document.y,this.column=1,this.ellipsis=e.ellipsis,this.continuedX=0,null!=e.height?(this.height=e.height,this.maxY=this.startY+e.height):this.maxY=this.document.page.maxY(),this.on("firstLine",function(t){return function(e){var n;return n=t.continuedX||t.indent,t.document.x+=n,t.lineWidth-=n,t.once("line",function(){return t.document.x-=n,t.lineWidth+=n,e.continued&&!t.continuedX&&(t.continuedX=t.indent),e.continued?void 0:t.continuedX=0})}}(this)),this.on("lastLine",function(t){return function(e){var n;return n=e.align,"justify"===n&&(e.align="left"),t.lastLine=!0,t.once("line",function(){return t.document.y+=e.paragraphGap||0,e.align=n,t.lastLine=!1})}}(this))}return a(e,t),e.prototype.wordWidth=function(t){return this.document.widthOfString(t,this)+this.characterSpacing+this.wordSpacing},e.prototype.eachWord=function(t,e){var n,i,o,a,s,h,u,l,c,f;for(i=new r(t),s=null,f={};n=i.nextBreak();){if(c=t.slice((null!=s?s.position:void 0)||0,n.position),l=null!=f[c]?f[c]:f[c]=this.wordWidth(c),l>this.lineWidth+this.continuedX)for(h=s,o={};c.length;){for(a=c.length;l>this.spaceLeft;)l=this.wordWidth(c.slice(0,--a));if(o.required=a<c.length,u=e(c.slice(0,a),l,o,h),h={required:!1},c=c.slice(a),l=this.wordWidth(c),u===!1)break}else u=e(c,l,n,s);if(u===!1)break;s=n}},e.prototype.wrap=function(t,e){var n,r,i,o,a,s,h;return null!=e.indent&&(this.indent=e.indent),null!=e.characterSpacing&&(this.characterSpacing=e.characterSpacing),null!=e.wordSpacing&&(this.wordSpacing=e.wordSpacing),null!=e.ellipsis&&(this.ellipsis=e.ellipsis),o=this.document.y+this.document.currentLineHeight(!0),(this.document.y>this.maxY||o>this.maxY)&&this.nextSection(),n="",a=0,s=0,i=0,h=this.document.y,r=function(t){return function(){return e.textWidth=a+t.wordSpacing*(s-1),e.wordCount=s,e.lineWidth=t.lineWidth,h=t.document.y,t.emit("line",n,e,t),i++}}(this),this.emit("sectionStart",e,this),this.eachWord(t,function(t){return function(i,o,h,u){var l,c;if((null==u||u.required)&&(t.emit("firstLine",e,t),t.spaceLeft=t.lineWidth),o<=t.spaceLeft&&(n+=i,a+=o,s++),h.required||o>t.spaceLeft){if(h.required&&t.emit("lastLine",e,t),l=t.document.currentLineHeight(!0),null!=t.height&&t.ellipsis&&t.document.y+2*l>t.maxY&&t.column>=t.columns){for(t.ellipsis===!0&&(t.ellipsis="…"),n=n.replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);a>t.lineWidth;)n=n.slice(0,-1).replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);n+=t.ellipsis}return r(),t.document.y+l>t.maxY&&(c=t.nextSection(),!c)?(s=0,n="",!1):h.required?(o>t.spaceLeft&&(n=i,a=o,s=1,r()),t.spaceLeft=t.lineWidth,n="",a=0,s=0):(t.spaceLeft=t.lineWidth-o,n=i,a=o,s=1)}return t.spaceLeft-=o}}(this)),s>0&&(this.emit("lastLine",e,this),r()),this.emit("sectionEnd",e,this),e.continued===!0?(i>1&&(this.continuedX=0),this.continuedX+=e.textWidth,this.document.y=h):this.document.x=this.startX},e.prototype.nextSection=function(t){var e;if(this.emit("sectionEnd",t,this),++this.column>this.columns){if(null!=this.height)return!1;this.document.addPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor&&(e=this.document).fillColor.apply(e,this.document._fillColor),this.emit("pageBreak",t,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",t,this);return this.emit("sectionStart",t,this),!0},e}(e),t.exports=i}).call(this)},function(t,e,n){(function(){var e,n,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};e=function(){function t(t){this.doc=t,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0],this._colorSpace="DeviceRGB"}return t.prototype.stop=function(t,e,n){return null==n&&(n=1),n=Math.max(0,Math.min(1,n)),this.stops.push([t,this.doc._normalizeColor(e),n]),this},t.prototype.embed=function(){var t,e,n,r,i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L,R,B,T,M,O,D;if(!this.embedded&&0!==this.stops.length){for(this.embedded=!0,l=this.stops[this.stops.length-1],l[0]<1&&this.stops.push([1,l[1],l[2]]),t=[],r=[],A=[],u=R=0,M=this.stops.length-1;M>=0?M>R:R>M;u=M>=0?++R:--R)r.push(0,1),u+2!==this.stops.length&&t.push(this.stops[u+1][0]),i=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[u+0][1],C1:this.stops[u+1][1],N:1}),A.push(i),i.end();if(1===A.length?i=A[0]:(i=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:A,Bounds:t,Encode:r}),i.end()),this.id="Sh"+ ++this.doc._gradCount,c=this.doc._ctm.slice(),f=c[0],d=c[1],v=c[2],w=c[3],_=c[4],b=c[5],O=this.transform,p=O[0],g=O[1],m=O[2],y=O[3],e=O[4],n=O[5],c[0]=f*p+v*g,c[1]=d*p+w*g,c[2]=f*m+v*y,c[3]=d*m+w*y,c[4]=f*e+v*n+_,c[5]=d*e+w*n+b,C=this.shader(i),C.end(),S=this.doc.ref({Type:"Pattern",PatternType:2,Shading:C,Matrix:function(){var t,e,n;for(n=[],t=0,e=c.length;e>t;t++)L=c[t],n.push(+L.toFixed(5));return n}()}),this.doc.page.patterns[this.id]=S,S.end(),this.stops.some(function(t){return t[2]<1})){for(a=this.opacityGradient(),a._colorSpace="DeviceGray",D=this.stops,B=0,T=D.length;T>B;B++)I=D[B],a.stop(I[0],[I[2]]);a=a.embed(),s=this.doc.ref({Type:"Group",S:"Transparency",CS:"DeviceGray"}),s.end(),k=this.doc.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Shading:{Sh1:a.data.Shading}}),k.end(),o=this.doc.ref({Type:"XObject",Subtype:"Form",FormType:1,BBox:[0,0,this.doc.page.width,this.doc.page.height],Group:s,Resources:k}),o.end("/Sh1 sh"),E=this.doc.ref({Type:"Mask",S:"Luminosity",G:o}),E.end(),h=this.doc.ref({Type:"ExtGState",SMask:E}),this.opacity_id=++this.doc._opacityCount,x="Gs"+this.opacity_id,this.doc.page.ext_gstates[x]=h,h.end()}return S}},t.prototype.apply=function(t){return this.embedded||this.embed(),this.doc.addContent("/"+this.id+" "+t),this.opacity_id?(this.doc.addContent("/Gs"+this.opacity_id+" gs"),this.doc._sMasked=!0):void 0},t}(),n=function(t){function e(t,n,r,i,o){this.doc=t,this.x1=n,this.y1=r,this.x2=i,this.y2=o,e.__super__.constructor.apply(this,arguments)}return o(e,t),e.prototype.shader=function(t){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:t,Extend:[!0,!0]})},e.prototype.opacityGradient=function(){return new e(this.doc,this.x1,this.y1,this.x2,this.y2)},e}(e),r=function(t){function e(t,n,r,i,o,a,s){this.doc=t,this.x1=n,this.y1=r,this.r1=i,this.x2=o,this.y2=a,this.r2=s,e.__super__.constructor.apply(this,arguments)}return o(e,t),e.prototype.shader=function(t){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:t,Extend:[!0,!0]})},e.prototype.opacityGradient=function(){return new e(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)},e}(e),t.exports={PDFGradient:e,PDFLinearGradient:n,PDFRadialGradient:r}}).call(this)},function(t,e,n){(function(t,r){function i(t){if(t<e.DEFLATE||t>e.UNZIP)throw new TypeError("Bad argument");this.mode=t,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function o(t,e){for(var n=0;n<t.length;n++)this[e+n]=t[n]}var a=n(73),s=n(77),h=n(74),u=n(75),l=n(76);for(var c in l)e[c]=l[c];e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,i.prototype.init=function(t,n,r,i,o){switch(this.windowBits=t,this.level=n,this.memLevel=r,this.strategy=i,(this.mode===e.GZIP||this.mode===e.GUNZIP)&&(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),(this.mode===e.DEFLATERAW||this.mode===e.INFLATERAW)&&(this.windowBits=-this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:var a=h.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:var a=u.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}return a!==e.Z_OK?void this._error(a):(this.write_in_progress=!1,void(this.init_done=!0))},i.prototype.params=function(){throw new Error("deflateParams Not supported")},i.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(this.mode===e.NONE)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")},i.prototype.write=function(e,n,r,i,o,a,s){this._writeCheck(),this.write_in_progress=!0;var h=this;return t.nextTick(function(){h.write_in_progress=!1;var t=h._write(e,n,r,i,o,a,s);h.callback(t[0],t[1]),h.pending_close&&h.close()}),this},i.prototype.writeSync=function(t,e,n,r,i,o,a){return this._writeCheck(),this._write(t,e,n,r,i,o,a)},i.prototype._write=function(t,n,i,a,s,l,c){if(this.write_in_progress=!0,t!==e.Z_NO_FLUSH&&t!==e.Z_PARTIAL_FLUSH&&t!==e.Z_SYNC_FLUSH&&t!==e.Z_FULL_FLUSH&&t!==e.Z_FINISH&&t!==e.Z_BLOCK)throw new Error("Invalid flush value");null==n&&(n=new r(0),a=0,i=0),s.set=s._set?s._set:o;var f=this.strm;switch(f.avail_in=a,f.input=n,f.next_in=i,f.avail_out=c,f.output=s,f.next_out=l,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:var d=h.deflate(f,t);break;case e.UNZIP:case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:var d=u.inflate(f,t);break;default:throw new Error("Unknown mode "+this.mode)}return d!==e.Z_STREAM_END&&d!==e.Z_OK&&this._error(d),this.write_in_progress=!1,[f.avail_in,f.avail_out]},i.prototype.close=function(){return this.write_in_progress?void(this.pending_close=!0):(this.pending_close=!1,this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?h.deflateEnd(this.strm):u.inflateEnd(this.strm),void(this.mode=e.NONE))},i.prototype.reset=function(){switch(this.mode){case e.DEFLATE:case e.DEFLATERAW:var t=h.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:var t=u.inflateReset(this.strm)}t!==e.Z_OK&&this._error(t)},i.prototype._error=function(t){this.onerror(a[t]+": "+this.strm.msg,t),this.write_in_progress=!1,this.pending_close&&this.close()},e.Zlib=i}).call(e,n(61),n(4).Buffer)},function(t,e,n){(function(e){(function(){var r,i,o;i=n(10),o=n(45),t.exports=r=function(){function t(t){var n,r,i,o,a,s,h,u,l,c,f;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){switch(n=this.readUInt32(),s=function(){var t,e;for(e=[],i=t=0;4>t;i=++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(n);break;case"IDAT":for(i=l=0;n>l;i=l+=1)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(n),h=255-this.transparency.indexed.length,h>0)for(i=c=0;h>=0?h>c:c>h;i=h>=0?++c:--c)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(n)[0];break;case 2:this.transparency.rgb=this.read(n)}break;case"tEXt":u=this.read(n),o=u.indexOf(0),a=String.fromCharCode.apply(String,u.slice(0,o)),this.text[a]=String.fromCharCode.apply(String,u.slice(o+1));break;case"IEND":return this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(f=this.colorType)||6===f,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new e(this.imgData));default:this.pos+=n}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return t.decode=function(e,n){return i.readFile(e,function(e,r){var i;return i=new t(r),i.decode(function(t){return n(t)})})},t.load=function(e){var n;return n=i.readFileSync(e),new t(n)},t.prototype.read=function(t){var e,n,r;for(r=[],e=n=0;t>=0?t>n:n>t;e=t>=0?++n:--n)r.push(this.data[this.pos++]);return r},t.prototype.readUInt32=function(){var t,e,n,r;return t=this.data[this.pos++]<<24,e=this.data[this.pos++]<<16,n=this.data[this.pos++]<<8,r=this.data[this.pos++],t|e|n|r},t.prototype.readUInt16=function(){var t,e;return t=this.data[this.pos++]<<8,e=this.data[this.pos++],t|e},t.prototype.decodePixels=function(t){var n=this;return o.inflate(this.imgData,function(r,i){var o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I;if(r)throw r;for(v=n.pixelBitlength/8,_=v*n.width,m=new e(_*n.height),l=i.length,w=0,y=0,a=0;l>y;){switch(i[y++]){case 0:for(h=S=0;_>S;h=S+=1)m[a++]=i[y++];break;case 1:for(h=k=0;_>k;h=k+=1)o=i[y++],u=v>h?0:m[a-v],m[a++]=(o+u)%256;break;case 2:for(h=E=0;_>E;h=E+=1)o=i[y++],s=(h-h%v)/v,b=w&&m[(w-1)*_+s*v+h%v],m[a++]=(b+o)%256;break;case 3:for(h=C=0;_>C;h=C+=1)o=i[y++],s=(h-h%v)/v,u=v>h?0:m[a-v],b=w&&m[(w-1)*_+s*v+h%v],m[a++]=(o+Math.floor((u+b)/2))%256;break;case 4:for(h=I=0;_>I;h=I+=1)o=i[y++],s=(h-h%v)/v,u=v>h?0:m[a-v],0===w?b=x=0:(b=m[(w-1)*_+s*v+h%v],x=s&&m[(w-1)*_+(s-1)*v+h%v]),c=u+b-x,f=Math.abs(c-u),p=Math.abs(c-b),g=Math.abs(c-x),d=p>=f&&g>=f?u:g>=p?b:x,m[a++]=(o+d)%256;break;default:throw new Error("Invalid filter algorithm: "+i[y-1])}w++}return t(m)})},t.prototype.decodePalette=function(){var t,n,r,i,o,a,s,h,u,l;for(i=this.palette,s=this.transparency.indexed||[],a=new e(s.length+i.length),o=0,r=i.length,t=0,n=h=0,u=i.length;u>h;n=h+=3)a[o++]=i[n],a[o++]=i[n+1],a[o++]=i[n+2],a[o++]=null!=(l=s[t++])?l:255;return a},t.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,h,u,l,c,f;if(r=this.colors,l=null,n=this.hasAlphaChannel,this.palette.length&&(l=null!=(f=this._decodedPalette)?f:this._decodedPalette=this.decodePalette(),r=4,n=!0),i=(null!=t?t.data:void 0)||t,u=i.length,a=l||e,o=s=0,1===r)for(;u>o;)h=l?4*e[o/4]:s,c=a[h++],i[o++]=c,i[o++]=c,i[o++]=c,i[o++]=n?a[h++]:255,s=h;else for(;u>o;)h=l?4*e[o/4]:s,i[o++]=a[h++],i[o++]=a[h++],i[o++]=a[h++],i[o++]=n?a[h++]:255,s=h},t.prototype.decode=function(t){var n,r=this;return n=new e(this.width*this.height*4),this.decodePixels(function(e){return r.copyToImageData(n,e),t(n)})},t}()}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){(function(e,r){(function(){var i,o,a,s,h;s=n(64),i=n(63),a=n(65),h=n(10),o=function(){function t(t,r,o,h){if(this.document=t,this.id=h,"string"==typeof r){if(r in n)return this.isAFM=!0,this.font=new i(n[r]()),void this.registerAFM(r);if(/\.(ttf|ttc)$/i.test(r))this.font=s.open(r,o);else{if(!/\.dfont$/i.test(r))throw new Error("Not a supported font format or standard PDF font.");this.font=s.fromDFont(r,o)}}else if(e.isBuffer(r))this.font=s.fromBuffer(r,o);else if(r instanceof Uint8Array)this.font=s.fromBuffer(new e(r),o);else{if(!(r instanceof ArrayBuffer))throw new Error("Not a supported font format or standard PDF font.");this.font=s.fromBuffer(new e(new Uint8Array(r)),o)}this.subset=new a(this.font),this.registerTTF()}var n,o;return n={Courier:function(){return h.readFileSync(r+"/font/data/Courier.afm","utf8")},"Courier-Bold":function(){return h.readFileSync(r+"/font/data/Courier-Bold.afm","utf8")},"Courier-Oblique":function(){return h.readFileSync(r+"/font/data/Courier-Oblique.afm","utf8")},"Courier-BoldOblique":function(){return h.readFileSync(r+"/font/data/Courier-BoldOblique.afm","utf8")},Helvetica:function(){return h.readFileSync(r+"/font/data/Helvetica.afm","utf8")},"Helvetica-Bold":function(){return h.readFileSync(r+"/font/data/Helvetica-Bold.afm","utf8")},"Helvetica-Oblique":function(){return h.readFileSync(r+"/font/data/Helvetica-Oblique.afm","utf8")},"Helvetica-BoldOblique":function(){return h.readFileSync(r+"/font/data/Helvetica-BoldOblique.afm","utf8")},"Times-Roman":function(){return h.readFileSync(r+"/font/data/Times-Roman.afm","utf8")},"Times-Bold":function(){return h.readFileSync(r+"/font/data/Times-Bold.afm","utf8")},"Times-Italic":function(){return h.readFileSync(r+"/font/data/Times-Italic.afm","utf8")},"Times-BoldItalic":function(){return h.readFileSync(r+"/font/data/Times-BoldItalic.afm","utf8")},Symbol:function(){return h.readFileSync(r+"/font/data/Symbol.afm","utf8")},ZapfDingbats:function(){return h.readFileSync(r+"/font/data/ZapfDingbats.afm","utf8")}},t.prototype.use=function(t){var e;return null!=(e=this.subset)?e.use(t):void 0},t.prototype.embed=function(){return this.embedded||null==this.dictionary?void 0:(this.isAFM?this.embedAFM():this.embedTTF(),this.embedded=!0)},t.prototype.encode=function(t){var e;return this.isAFM?this.font.encodeText(t):(null!=(e=this.subset)?e.encodeText(t):void 0)||t},t.prototype.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},t.prototype.registerTTF=function(){var t,e,n,r,i;if(this.name=this.font.name.postscriptName,this.scaleFactor=1e3/this.font.head.unitsPerEm,this.bbox=function(){var e,n,r,i;for(r=this.font.bbox,i=[],e=0,n=r.length;n>e;e++)t=r[e],i.push(Math.round(t*this.scaleFactor));return i}.call(this),this.stemV=0,this.font.post.exists?(r=this.font.post.italic_angle,e=r>>16,n=255&r,e&!0&&(e=-((65535^e)+1)),this.italicAngle=+(""+e+"."+n)):this.italicAngle=0,this.ascender=Math.round(this.font.ascender*this.scaleFactor),this.decender=Math.round(this.font.decender*this.scaleFactor),this.lineGap=Math.round(this.font.lineGap*this.scaleFactor),this.capHeight=this.font.os2.exists&&this.font.os2.capHeight||this.ascender,this.xHeight=this.font.os2.exists&&this.font.os2.xHeight||0,this.familyClass=(this.font.os2.exists&&this.font.os2.familyClass||0)>>8,this.isSerif=1===(i=this.familyClass)||2===i||3===i||4===i||5===i||7===i,this.isScript=10===this.familyClass,this.flags=0,this.font.post.isFixedPitch&&(this.flags|=1),this.isSerif&&(this.flags|=2),this.isScript&&(this.flags|=8),0!==this.italicAngle&&(this.flags|=64),this.flags|=32,!this.font.cmap.unicode)throw new Error("No unicode cmap for font")},t.prototype.embedTTF=function(){var t,e,n,r,i,a,s,h;return r=this.subset.encode(),s=this.document.ref(),s.write(r),s.data.Length1=s.uncompressedLength,s.end(),i=this.document.ref({Type:"FontDescriptor",FontName:this.subset.postscriptName,FontFile2:s,FontBBox:this.bbox,Flags:this.flags,StemV:this.stemV,ItalicAngle:this.italicAngle,Ascent:this.ascender,Descent:this.decender,CapHeight:this.capHeight,XHeight:this.xHeight}),i.end(),a=+Object.keys(this.subset.cmap)[0],t=function(){var t,e;t=this.subset.cmap,e=[];for(n in t)h=t[n],e.push(Math.round(this.font.widthOfGlyph(h)));return e}.call(this),e=this.document.ref(),e.end(o(this.subset.subset)),this.dictionary.data={Type:"Font",BaseFont:this.subset.postscriptName,Subtype:"TrueType",FontDescriptor:i,FirstChar:a,LastChar:a+t.length-1,Widths:t,Encoding:"MacRomanEncoding",ToUnicode:e},this.dictionary.end()},o=function(t){var e,n,r,i,o,a,s;for(o="/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<00><ff>\nendcodespacerange",n=Object.keys(t).sort(function(t,e){return t-e}),r=[],a=0,s=n.length;s>a;a++)e=n[a],r.length>=100&&(o+="\n"+r.length+" beginbfchar\n"+r.join("\n")+"\nendbfchar",r=[]),i=("0000"+t[e].toString(16)).slice(-4),e=(+e).toString(16),r.push("<"+e+"><"+i+">");return r.length&&(o+="\n"+r.length+" beginbfchar\n"+r.join("\n")+"\nendbfchar\n"),o+="endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"},t.prototype.registerAFM=function(t){var e;return this.name=t,e=this.font,this.ascender=e.ascender,this.decender=e.decender,this.bbox=e.bbox,this.lineGap=e.lineGap,e},t.prototype.embedAFM=function(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()},t.prototype.widthOfString=function(t,e){var n,r,i,o,a,s;for(t=""+t,o=0,r=a=0,s=t.length;s>=0?s>a:a>s;r=s>=0?++a:--a)n=t.charCodeAt(r),o+=this.font.widthOfGlyph(this.font.characterToGlyph(n))||0;return i=e/1e3,o*i},t.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.decender)/1e3*t},t}(),t.exports=o}).call(this)}).call(e,n(4).Buffer,"/")},function(t,e,n){function r(t,e){return d.isUndefined(e)?""+e:d.isNumber(e)&&!isFinite(e)?e.toString():d.isFunction(e)||d.isRegExp(e)?e.toString():e}function i(t,e){return d.isString(t)?t.length<e?t:t.slice(0,e):t}function o(t){return i(JSON.stringify(t.actual,r),128)+" "+t.operator+" "+i(JSON.stringify(t.expected,r),128)}function a(t,e,n,r,i){throw new v.AssertionError({message:n,actual:t,expected:e,operator:r,stackStartFunction:i})}function s(t,e){t||a(t,!0,e,"==",v.ok)}function h(t,e){if(t===e)return!0;if(d.isBuffer(t)&&d.isBuffer(e)){if(t.length!=e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}return d.isDate(t)&&d.isDate(e)?t.getTime()===e.getTime():d.isRegExp(t)&&d.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:d.isObject(t)||d.isObject(e)?l(t,e):t==e}function u(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function l(t,e){if(d.isNullOrUndefined(t)||d.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(d.isPrimitive(t)||d.isPrimitive(e))return t===e;var n=u(t),r=u(e);if(n&&!r||!n&&r)return!1;if(n)return t=p.call(t),e=p.call(e),h(t,e);var i,o,a=m(t),s=m(e);if(a.length!=s.length)return!1;for(a.sort(),s.sort(),o=a.length-1;o>=0;o--)if(a[o]!=s[o])return!1;for(o=a.length-1;o>=0;o--)if(i=a[o],!h(t[i],e[i]))return!1;return!0}function c(t,e){return t&&e?"[object RegExp]"==Object.prototype.toString.call(e)?e.test(t):t instanceof e?!0:e.call({},t)===!0?!0:!1:!1}function f(t,e,n,r){var i;d.isString(n)&&(r=n,n=null);try{e()}catch(o){i=o}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&a(i,n,"Missing expected exception"+r),!t&&c(i,n)&&a(i,n,"Got unwanted exception"+r),t&&i&&n&&!c(i,n)||!t&&i)throw i}var d=n(60),p=Array.prototype.slice,g=Object.prototype.hasOwnProperty,v=t.exports=s;v.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var e=t.stackStartFunction||a;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var n=new Error;if(n.stack){var r=n.stack,i=e.name,s=r.indexOf("\n"+i);if(s>=0){var h=r.indexOf("\n",s+1);r=r.substring(h+1)}this.stack=r}}},d.inherits(v.AssertionError,Error),v.fail=a,v.ok=s,v.equal=function(t,e,n){t!=e&&a(t,e,n,"==",v.equal)},v.notEqual=function(t,e,n){t==e&&a(t,e,n,"!=",v.notEqual)},v.deepEqual=function(t,e,n){h(t,e)||a(t,e,n,"deepEqual",v.deepEqual)},v.notDeepEqual=function(t,e,n){h(t,e)&&a(t,e,n,"notDeepEqual",v.notDeepEqual)},v.strictEqual=function(t,e,n){t!==e&&a(t,e,n,"===",v.strictEqual)},v.notStrictEqual=function(t,e,n){t===e&&a(t,e,n,"!==",v.notStrictEqual)},v["throws"]=function(t,e,n){f.apply(this,[!0].concat(p.call(arguments)))},v.doesNotThrow=function(t,e){f.apply(this,[!1].concat(p.call(arguments)))},v.ifError=function(t){if(t)throw t};var m=Object.keys||function(t){var e=[];for(var n in t)g.call(t,n)&&e.push(n);return e}},function(t,e,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return"function"==typeof t}function o(t){return"number"==typeof t}function a(t){return"object"==typeof t&&null!==t}function s(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!o(t)||0>t||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,n,r,o,h,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if(e=arguments[1],e instanceof Error)throw e;throw TypeError('Uncaught, unspecified "error" event.')}if(n=this._events[t],s(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),h=1;r>h;h++)o[h-1]=arguments[h];n.apply(this,o)}else if(a(n)){for(r=arguments.length,o=new Array(r-1),h=1;r>h;h++)o[h-1]=arguments[h];for(u=n.slice(),r=u.length,h=0;r>h;h++)u[h].apply(this,o)}return!0},r.prototype.addListener=function(t,e){var n;if(!i(e))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,i(e.listener)?e.listener:e),this._events[t]?a(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,a(this._events[t])&&!this._events[t].warned){var n;n=s(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,n&&n>0&&this._events[t].length>n&&(this._events[t].warned=!0,"function"==typeof console.trace)}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function n(){this.removeListener(t,n),r||(r=!0,e.apply(this,arguments))}if(!i(e))throw TypeError("listener must be a function");var r=!1;return n.listener=e,this.on(t,n),this},r.prototype.removeListener=function(t,e){var n,r,o,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],o=n.length,r=-1,n===e||i(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(a(n)){for(s=o;s-->0;)if(n[s]===e||n[s].listener&&n[s].listener===e){r=s;break}if(0>r)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],i(n))this.removeListener(t,n);else for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.listenerCount=function(t,e){var n;return n=t._events&&t._events[e]?i(t._events[e])?1:t._events[e].length:0}},function(t,e,n){t.exports=n(70)},function(t,e,n){e=t.exports=n(71),e.Stream=n(46),e.Readable=e,e.Writable=n(67),e.Duplex=n(69),e.Transform=n(70),e.PassThrough=n(68)},function(t,e,n){t.exports=n(67)},function(t,e,n){t.exports=n(69)},function(t,e,n){t.exports=n(68)},function(t,e,n){(function(t,r){function i(t,n){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&e._extend(r,n),b(r.showHidden)&&(r.showHidden=!1),b(r.depth)&&(r.depth=2),b(r.colors)&&(r.colors=!1),b(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),h(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function a(t,e){return t}function s(t){var e={};return t.forEach(function(t,n){e[t]=!0}),e}function h(t,n,r){if(t.customInspect&&n&&C(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return w(i)||(i=h(t,i,r)),i}var o=u(t,n);if(o)return o;var a=Object.keys(n),g=s(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(n)),E(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return l(n);if(0===a.length){if(C(n)){var v=n.name?": "+n.name:"";return t.stylize("[Function"+v+"]","special")}if(x(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(k(n))return t.stylize(Date.prototype.toString.call(n),"date");if(E(n))return l(n)}var m="",y=!1,_=["{","}"];if(p(n)&&(y=!0,_=["[","]"]),C(n)){var b=n.name?": "+n.name:"";m=" [Function"+b+"]"}if(x(n)&&(m=" "+RegExp.prototype.toString.call(n)),k(n)&&(m=" "+Date.prototype.toUTCString.call(n)),E(n)&&(m=" "+l(n)),0===a.length&&(!y||0==n.length))return _[0]+m+_[1];if(0>r)return x(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special");t.seen.push(n);var S;return S=y?c(t,n,r,g,a):a.map(function(e){return f(t,n,r,g,e,y)}),t.seen.pop(),d(S,m,_)}function u(t,e){if(b(e))return t.stylize("undefined","undefined");if(w(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return y(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function l(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,n,r,i){for(var o=[],a=0,s=e.length;s>a;++a)o.push(L(e,String(a))?f(t,e,n,r,String(a),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(f(t,e,n,r,i,!0))}),o}function f(t,e,n,r,i,o){var a,s,u;if(u=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]},u.get?s=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(s=t.stylize("[Setter]","special")),L(r,i)||(a="["+i+"]"),s||(t.seen.indexOf(u.value)<0?(s=v(n)?h(t,u.value,null):h(t,u.value,n-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),b(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function d(t,e,n){var r=0,i=t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function p(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function v(t){return null===t}function m(t){return null==t}function y(t){return"number"==typeof t}function w(t){return"string"==typeof t}function _(t){return"symbol"==typeof t}function b(t){return void 0===t}function x(t){return S(t)&&"[object RegExp]"===A(t)}function S(t){return"object"==typeof t&&null!==t}function k(t){return S(t)&&"[object Date]"===A(t)}function E(t){return S(t)&&("[object Error]"===A(t)||t instanceof Error)}function C(t){return"function"==typeof t}function I(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function A(t){return Object.prototype.toString.call(t)}function L(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var R=/%[sdj%]/g;e.format=function(t){if(!w(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(i(arguments[n]));return e.join(" ")}for(var n=1,r=arguments,o=r.length,a=String(t).replace(R,function(t){if("%%"===t)return"%";if(n>=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return t}}),s=r[n];o>n;s=r[++n])a+=v(s)||!S(s)?" "+s:" "+i(s);return a},e.deprecate=function(n,i){function o(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation,a=!0}return n.apply(this,arguments)}if(b(t.process))return function(){return e.deprecate(n,i).apply(this,arguments); + +};if(r.noDeprecation===!0)return n;var a=!1;return o};var B,T={};e.debuglog=function(t){if(b(B)&&(B=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!T[t])if(new RegExp("\\b"+t+"\\b","i").test(B)){{r.pid}T[t]=function(){e.format.apply(e,arguments)}}else T[t]=function(){};return T[t]},e.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=p,e.isBoolean=g,e.isNull=v,e.isNullOrUndefined=m,e.isNumber=y,e.isString=w,e.isSymbol=_,e.isUndefined=b,e.isRegExp=x,e.isObject=S,e.isDate=k,e.isError=E,e.isFunction=C,e.isPrimitive=I,e.isBuffer=n(72);e.log=function(){},e.inherits=n(94),e._extend=function(t,e){if(!e||!S(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}}).call(e,function(){return this}(),n(61))},function(t,e,n){function r(){if(!s){s=!0;for(var t,e=a.length;e;){t=a,a=[];for(var n=-1;++n<e;)t[n]();e=a.length}s=!1}}function i(){}var o=t.exports={},a=[],s=!1;o.nextTick=function(t){a.push(t),s||setTimeout(r,0)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=i,o.addListener=i,o.once=i,o.off=i,o.removeListener=i,o.removeAllListeners=i,o.emit=i,o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,n){t.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(){var e,r;r=n(10),e=function(){function t(t){var e,r;this.contents=t,this.attributes={},this.glyphWidths={},this.boundingBoxes={},this.parse(),this.charWidths=function(){var t,e;for(e=[],r=t=0;255>=t;r=++t)e.push(this.glyphWidths[n[r]]);return e}.call(this),this.bbox=function(){var t,n,r,i;for(r=this.attributes.FontBBox.split(/\s+/),i=[],t=0,n=r.length;n>t;t++)e=r[t],i.push(+e);return i}.call(this),this.ascender=+(this.attributes.Ascender||0),this.decender=+(this.attributes.Descender||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.decender)}var e,n;return t.open=function(e){return new t(r.readFileSync(e,"utf8"))},t.prototype.parse=function(){var t,e,n,r,i,o,a,s,h,u;for(o="",u=this.contents.split("\n"),s=0,h=u.length;h>s;s++)if(n=u[s],r=n.match(/^Start(\w+)/))o=r[1];else if(r=n.match(/^End(\w+)/))o="";else switch(o){case"FontMetrics":r=n.match(/(^\w+)\s+(.*)/),e=r[1],a=r[2],(t=this.attributes[e])?(Array.isArray(t)||(t=this.attributes[e]=[t]),t.push(a)):this.attributes[e]=a;break;case"CharMetrics":if(!/^CH?\s/.test(n))continue;i=n.match(/\bN\s+(\.?\w+)\s*;/)[1],this.glyphWidths[i]=+n.match(/\bWX\s+(\d+)\s*;/)[1]}},e={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},t.prototype.encodeText=function(t){var n,r,i,o,a;for(i="",r=o=0,a=t.length;a>=0?a>o:o>a;r=a>=0?++o:--o)n=t.charCodeAt(r),n=e[n]||n,i+=String.fromCharCode(n);return i},t.prototype.characterToGlyph=function(t){return n[e[t]||t]},t.prototype.widthOfGlyph=function(t){return this.glyphWidths[t]},n=".notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n\nspace exclam quotedbl numbersign\ndollar percent ampersand quotesingle\nparenleft parenright asterisk plus\ncomma hyphen period slash\nzero one two three\nfour five six seven\neight nine colon semicolon\nless equal greater question\n\nat A B C\nD E F G\nH I J K\nL M N O\nP Q R S\nT U V W\nX Y Z bracketleft\nbackslash bracketright asciicircum underscore\n\ngrave a b c\nd e f g\nh i j k\nl m n o\np q r s\nt u v w\nx y z braceleft\nbar braceright asciitilde .notdef\n\nEuro .notdef quotesinglbase florin\nquotedblbase ellipsis dagger daggerdbl\ncircumflex perthousand Scaron guilsinglleft\nOE .notdef Zcaron .notdef\n.notdef quoteleft quoteright quotedblleft\nquotedblright bullet endash emdash\ntilde trademark scaron guilsinglright\noe .notdef zcaron ydieresis\n\nspace exclamdown cent sterling\ncurrency yen brokenbar section\ndieresis copyright ordfeminine guillemotleft\nlogicalnot hyphen registered macron\ndegree plusminus twosuperior threesuperior\nacute mu paragraph periodcentered\ncedilla onesuperior ordmasculine guillemotright\nonequarter onehalf threequarters questiondown\n\nAgrave Aacute Acircumflex Atilde\nAdieresis Aring AE Ccedilla\nEgrave Eacute Ecircumflex Edieresis\nIgrave Iacute Icircumflex Idieresis\nEth Ntilde Ograve Oacute\nOcircumflex Otilde Odieresis multiply\nOslash Ugrave Uacute Ucircumflex\nUdieresis Yacute Thorn germandbls\n\nagrave aacute acircumflex atilde\nadieresis aring ae ccedilla\negrave eacute ecircumflex edieresis\nigrave iacute icircumflex idieresis\neth ntilde ograve oacute\nocircumflex otilde odieresis divide\noslash ugrave uacute ucircumflex\nudieresis yacute thorn ydieresis".split(/\s+/),t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var CmapTable,e,r,i,GlyfTable,HeadTable,HheaTable,HmtxTable,LocaTable,MaxpTable,NameTable,OS2Table,PostTable,o,a;a=n(10),r=n(34),e=n(78),i=n(79),NameTable=n(80),HeadTable=n(81),CmapTable=n(82),HmtxTable=n(83),HheaTable=n(84),MaxpTable=n(85),PostTable=n(86),OS2Table=n(87),LocaTable=n(88),GlyfTable=n(90),o=function(){function t(t,e){var n,i,o,a,s,h,u,l,c;if(this.rawData=t,n=this.contents=new r(this.rawData),"ttcf"===n.readString(4)){if(!e)throw new Error("Must specify a font name for TTC files.");for(h=n.readInt(),o=n.readInt(),s=[],i=u=0;o>=0?o>u:u>o;i=o>=0?++u:--u)s[i]=n.readInt();for(i=l=0,c=s.length;c>l;i=++l)if(a=s[i],n.pos=a,this.parse(),this.name.postscriptName===e)return;throw new Error("Font "+e+" not found in TTC file.")}n.pos=0,this.parse()}return t.open=function(e,n){var r;return r=a.readFileSync(e),new t(r,n)},t.fromDFont=function(n,r){var i;return i=e.open(n),new t(i.getNamedFont(r))},t.fromBuffer=function(n,r){var i,o,a;try{if(a=new t(n,r),!(a.head.exists&&a.name.exists&&a.cmap.exists||(i=new e(n),a=new t(i.getNamedFont(r)),a.head.exists&&a.name.exists&&a.cmap.exists)))throw new Error("Invalid TTF file in DFont");return a}catch(s){throw o=s,new Error("Unknown font format in buffer: "+o.message)}},t.prototype.parse=function(){return this.directory=new i(this.contents),this.head=new HeadTable(this),this.name=new NameTable(this),this.cmap=new CmapTable(this),this.hhea=new HheaTable(this),this.maxp=new MaxpTable(this),this.hmtx=new HmtxTable(this),this.post=new PostTable(this),this.os2=new OS2Table(this),this.loca=new LocaTable(this),this.glyf=new GlyfTable(this),this.ascender=this.os2.exists&&this.os2.ascender||this.hhea.ascender,this.decender=this.os2.exists&&this.os2.decender||this.hhea.decender,this.lineGap=this.os2.exists&&this.os2.lineGap||this.hhea.lineGap,this.bbox=[this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax]},t.prototype.characterToGlyph=function(t){var e;return(null!=(e=this.cmap.unicode)?e.codeMap[t]:void 0)||0},t.prototype.widthOfGlyph=function(t){var e;return e=1e3/this.head.unitsPerEm,this.hmtx.forGlyph(t).advance*e},t}(),t.exports=o}).call(this)},function(t,e,n){(function(){var CmapTable,e,r,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};CmapTable=n(82),r=n(89),e=function(){function t(t){this.font=t,this.subset={},this.unicodes={},this.next=33}return t.prototype.use=function(t){var e,n,r;{if("string"!=typeof t)return this.unicodes[t]?void 0:(this.subset[this.next]=t,this.unicodes[t]=this.next++);for(e=n=0,r=t.length;r>=0?r>n:n>r;e=r>=0?++n:--n)this.use(t.charCodeAt(e))}},t.prototype.encodeText=function(t){var e,n,r,i,o;for(r="",n=i=0,o=t.length;o>=0?o>i:i>o;n=o>=0?++i:--i)e=this.unicodes[t.charCodeAt(n)],r+=String.fromCharCode(e);return r},t.prototype.generateCmap=function(){var t,e,n,r,i;r=this.font.cmap.tables[0].codeMap,t={},i=this.subset;for(e in i)n=i[e],t[e]=r[n];return t},t.prototype.glyphIDs=function(){var t,e,n,r,o,a;r=this.font.cmap.tables[0].codeMap,t=[0],a=this.subset;for(e in a)n=a[e],o=r[n],null!=o&&i.call(t,o)<0&&t.push(o);return t.sort()},t.prototype.glyphsFor=function(t){var e,n,r,i,o,a,s;for(r={},o=0,a=t.length;a>o;o++)i=t[o],r[i]=this.font.glyf.glyphFor(i);e=[];for(i in r)n=r[i],(null!=n?n.compound:void 0)&&e.push.apply(e,n.glyphIDs);if(e.length>0){s=this.glyphsFor(e);for(i in s)n=s[i],r[i]=n}return r},t.prototype.encode=function(){var t,e,n,i,o,a,s,h,u,l,c,f,d,p,g,v,m;t=CmapTable.encode(this.generateCmap(),"unicode"),i=this.glyphsFor(this.glyphIDs()),f={0:0},v=t.charMap;for(e in v)a=v[e],f[a.old]=a["new"];c=t.maxGlyphID;for(d in i)d in f||(f[d]=c++);u=r.invert(f),l=Object.keys(u).sort(function(t,e){return t-e}),p=function(){var t,e,n;for(n=[],t=0,e=l.length;e>t;t++)o=l[t],n.push(u[o]);return n}(),n=this.font.glyf.encode(i,p,f),s=this.font.loca.encode(n.offsets),h=this.font.name.encode(),this.postscriptName=h.postscriptName,this.cmap={},m=t.charMap;for(e in m)a=m[e],this.cmap[e]=a.old;return g={cmap:t.table,glyf:n.table,loca:s.table,hmtx:this.font.hmtx.encode(p),hhea:this.font.hhea.encode(p),maxp:this.font.maxp.encode(p),post:this.font.post.encode(p),name:h.table,head:this.font.head.encode(s)},this.font.os2.exists&&(g["OS/2"]=this.font.os2.raw()),this.font.directory.encode(g)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L;x=n(100),C=new x(n(106)),A=n(92),o=A.BK,l=A.CR,p=A.LF,v=A.NL,a=A.CB,i=A.BA,b=A.SP,S=A.WJ,b=A.SP,o=A.BK,p=A.LF,v=A.NL,e=A.AI,r=A.AL,w=A.SA,_=A.SG,k=A.XX,h=A.CJ,f=A.ID,m=A.NS,E=A.characterClasses,L=n(91),c=L.DI_BRK,d=L.IN_BRK,s=L.CI_BRK,u=L.CP_BRK,y=L.PR_BRK,I=L.pairTable,g=function(){function t(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}var n,f,g;return t.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),t>=55296&&56319>=t&&e>=56320&&57343>=e?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},f=function(t){switch(t){case e:return r;case w:case _:case k:return r;case h:return m;default:return t}},g=function(t){switch(t){case p:case v:return o;case a:return i;case b:return S;default:return t}},t.prototype.nextCharClass=function(t){return null==t&&(t=!1),f(C.get(this.nextCodePoint()))},n=function(){function t(t,e){this.position=t,this.required=null!=e?e:!1}return t}(),t.prototype.nextBreak=function(){var t,e,r;for(null==this.curClass&&(this.curClass=g(this.nextCharClass()));this.pos<this.string.length;){if(this.lastPos=this.pos,e=this.nextClass,this.nextClass=this.nextCharClass(),this.curClass===o||this.curClass===l&&this.nextClass!==p)return this.curClass=g(f(this.nextClass)),new n(this.lastPos,!0);if(t=function(){switch(this.nextClass){case b:return this.curClass;case o:case p:case v:return o;case l:return l;case a:return i}}.call(this),null==t){switch(r=!1,I[this.curClass][this.nextClass]){case c:r=!0;break;case d:r=e===b;break;case s:if(r=e===b,!r)continue;break;case u:if(e!==b)continue}if(this.curClass=this.nextClass,r)return new n(this.lastPos)}else if(this.curClass=t,this.nextClass===a)return new n(this.lastPos)}return this.pos>=this.string.length?this.lastPos<this.string.length?(this.lastPos=this.string.length,new n(this.string.length)):null:void 0},t}(),t.exports=g}).call(this)},function(t,e,n){(function(e){function r(t,e,n){this.chunk=t,this.encoding=e,this.callback=n}function i(t,e){var r=n(69);t=t||{};var i=t.highWaterMark,o=t.objectMode?16:16384;this.highWaterMark=i||0===i?i:o,this.objectMode=!!t.objectMode,e instanceof r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var a=t.decodeStrings===!1;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){d(e,t)},this.writecb=null,this.writelen=0,this.buffer=[],this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1}function o(t){var e=n(69);return this instanceof o||this instanceof e?(this._writableState=new i(t,this),this.writable=!0,void S.call(this)):new o(t)}function a(t,n,r){var i=new Error("write after end");t.emit("error",i),e.nextTick(function(){r(i)})}function s(t,n,r,i){var o=!0;if(!(x.isBuffer(r)||x.isString(r)||x.isNullOrUndefined(r)||n.objectMode)){var a=new TypeError("Invalid non-string/buffer chunk");t.emit("error",a),e.nextTick(function(){i(a)}),o=!1}return o}function h(t,e,n){return!t.objectMode&&t.decodeStrings!==!1&&x.isString(e)&&(e=new b(e,n)),e}function u(t,e,n,i,o){n=h(e,n,i),x.isBuffer(n)&&(i="buffer");var a=e.objectMode?1:n.length;e.length+=a;var s=e.length<e.highWaterMark;return s||(e.needDrain=!0),e.writing||e.corked?e.buffer.push(new r(n,i,o)):l(t,e,!1,a,n,i,o),s}function l(t,e,n,r,i,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function c(t,n,r,i,o){r?e.nextTick(function(){n.pendingcb--,o(i)}):(n.pendingcb--,o(i)),t._writableState.errorEmitted=!0,t.emit("error",i)}function f(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function d(t,n){var r=t._writableState,i=r.sync,o=r.writecb;if(f(r),n)c(t,r,i,n,o);else{var a=m(t,r);a||r.corked||r.bufferProcessing||!r.buffer.length||v(t,r),i?e.nextTick(function(){p(t,r,a,o)}):p(t,r,a,o)}}function p(t,e,n,r){n||g(t,e),e.pendingcb--,r(),w(t,e)}function g(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function v(t,e){if(e.bufferProcessing=!0,t._writev&&e.buffer.length>1){for(var n=[],r=0;r<e.buffer.length;r++)n.push(e.buffer[r].callback);e.pendingcb++,l(t,e,!0,e.length,e.buffer,"",function(t){for(var r=0;r<n.length;r++)e.pendingcb--,n[r](t)}),e.buffer=[]}else{for(var r=0;r<e.buffer.length;r++){var i=e.buffer[r],o=i.chunk,a=i.encoding,s=i.callback,h=e.objectMode?1:o.length;if(l(t,e,!1,h,o,a,s),e.writing){r++;break}}r<e.buffer.length?e.buffer=e.buffer.slice(r):e.buffer.length=0}e.bufferProcessing=!1}function m(t,e){return e.ending&&0===e.length&&!e.finished&&!e.writing}function y(t,e){e.prefinished||(e.prefinished=!0,t.emit("prefinish"))}function w(t,e){var n=m(t,e);return n&&(0===e.pendingcb?(y(t,e),e.finished=!0,t.emit("finish")):y(t,e)),n}function _(t,n,r){n.ending=!0,w(t,n),r&&(n.finished?e.nextTick(r):t.once("finish",r)),n.ended=!0}t.exports=o;var b=n(4).Buffer;o.WritableState=i;var x=n(105);x.inherits=n(104);var S=n(46);x.inherits(o,S),o.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},o.prototype.write=function(t,e,n){var r=this._writableState,i=!1;return x.isFunction(e)&&(n=e,e=null),x.isBuffer(t)?e="buffer":e||(e=r.defaultEncoding),x.isFunction(n)||(n=function(){}),r.ended?a(this,r,n):s(this,r,t,n)&&(r.pendingcb++,i=u(this,r,t,e,n)),i},o.prototype.cork=function(){var t=this._writableState;t.corked++},o.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.buffer.length||v(this,t))},o.prototype._write=function(t,e,n){n(new Error("not implemented"))},o.prototype._writev=null,o.prototype.end=function(t,e,n){var r=this._writableState;x.isFunction(t)?(n=t,t=null,e=null):x.isFunction(e)&&(n=e,e=null),x.isNullOrUndefined(t)||this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||_(this,r,n)}}).call(e,n(61))},function(t,e,n){function r(t){return this instanceof r?void i.call(this,t):new r(t)}t.exports=r;var i=n(70),o=n(105);o.inherits=n(104),o.inherits(r,i),r.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){(function(e){function r(t){return this instanceof r?(h.call(this,t),u.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",i)):new r(t)}function i(){this.allowHalfOpen||this._writableState.ended||e.nextTick(this.end.bind(this))}function o(t,e){for(var n=0,r=t.length;r>n;n++)e(t[n],n)}t.exports=r;var a=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e},s=n(105);s.inherits=n(104);var h=n(71),u=n(67);s.inherits(r,h),o(a(u.prototype),function(t){r.prototype[t]||(r.prototype[t]=u.prototype[t])})}).call(e,n(61))},function(t,e,n){function r(t,e){this.afterTransform=function(t,n){return i(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function i(t,e,n){var r=t._transformState;r.transforming=!1;var i=r.writecb;if(!i)return t.emit("error",new Error("no writecb in Transform class"));r.writechunk=null,r.writecb=null,h.isNullOrUndefined(n)||t.push(n),i&&i(e);var o=t._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&t._read(o.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);s.call(this,t),this._transformState=new r(t,this);var e=this;this._readableState.needReadable=!0,this._readableState.sync=!1,this.once("prefinish",function(){h.isFunction(this._flush)?this._flush(function(t){a(e,t)}):a(e)})}function a(t,e){if(e)return t.emit("error",e);var n=t._writableState,r=t._transformState;if(n.length)throw new Error("calling transform done when ws.length != 0");if(r.transforming)throw new Error("calling transform done when still transforming");return t.push(null)}t.exports=o;var s=n(69),h=n(105);h.inherits=n(104),h.inherits(o,s),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,s.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,n){throw new Error("not implemented")},o.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;h.isNull(e.writechunk)||!e.writecb||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))}},function(t,e,n){(function(e){function r(t,e){var r=n(69);t=t||{};var i=t.highWaterMark,o=t.objectMode?16:16384;this.highWaterMark=i||0===i?i:o,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.objectMode=!!t.objectMode,e instanceof r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(A||(A=n(101).StringDecoder),this.decoder=new A(t.encoding),this.encoding=t.encoding)}function i(t){n(69);return this instanceof i?(this._readableState=new r(t,this),this.readable=!0,void C.call(this)):new i(t)}function o(t,e,n,r,i){var o=u(e,n);if(o)t.emit("error",o);else if(I.isNullOrUndefined(n))e.reading=!1,e.ended||l(t,e);else if(e.objectMode||n&&n.length>0)if(e.ended&&!i){var s=new Error("stream.push() after EOF");t.emit("error",s)}else if(e.endEmitted&&i){var s=new Error("stream.unshift() after end event");t.emit("error",s)}else!e.decoder||i||r||(n=e.decoder.write(n)),i||(e.reading=!1),e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,i?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&c(t)),d(t,e);else i||(e.reading=!1);return a(e)}function a(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}function s(t){if(t>=R)t=R;else{t--;for(var e=1;32>e;e<<=1)t|=t>>e;t++}return t}function h(t,e){return 0===e.length&&e.ended?0:e.objectMode?0===t?0:1:isNaN(t)||I.isNull(t)?e.flowing&&e.buffer.length?e.buffer[0].length:e.length:0>=t?0:(t>e.highWaterMark&&(e.highWaterMark=s(t)),t>e.length?e.ended?e.length:(e.needReadable=!0,0):t)}function u(t,e){var n=null;return I.isBuffer(e)||I.isString(e)||I.isNullOrUndefined(e)||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function l(t,e){if(e.decoder&&!e.ended){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,c(t)}function c(t){var n=t._readableState;n.needReadable=!1,n.emittedReadable||(L("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?e.nextTick(function(){f(t)}):f(t))}function f(t){L("emit readable"),t.emit("readable"),y(t)}function d(t,n){n.readingMore||(n.readingMore=!0,e.nextTick(function(){p(t,n)}))}function p(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(L("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function g(t){return function(){var e=t._readableState;L("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&E.listenerCount(t,"data")&&(e.flowing=!0,y(t))}}function v(t,n){n.resumeScheduled||(n.resumeScheduled=!0,e.nextTick(function(){m(t,n)}))}function m(t,e){e.resumeScheduled=!1,t.emit("resume"),y(t),e.flowing&&!e.reading&&t.read(0)}function y(t){var e=t._readableState;if(L("flow",e.flowing),e.flowing)do var n=t.read();while(null!==n&&e.flowing)}function w(t,e){var n,r=e.buffer,i=e.length,o=!!e.decoder,a=!!e.objectMode;if(0===r.length)return null;if(0===i)n=null;else if(a)n=r.shift();else if(!t||t>=i)n=o?r.join(""):k.concat(r,i),r.length=0;else if(t<r[0].length){var s=r[0];n=s.slice(0,t),r[0]=s.slice(t)}else if(t===r[0].length)n=r.shift();else{n=o?"":new k(t);for(var h=0,u=0,l=r.length;l>u&&t>h;u++){var s=r[0],c=Math.min(t-h,s.length);o?n+=s.slice(0,c):s.copy(n,h,0,c),c<s.length?r[0]=s.slice(c):r.shift(),h+=c}}return n}function _(t){var n=t._readableState;if(n.length>0)throw new Error("endReadable called on non-empty stream");n.endEmitted||(n.ended=!0,e.nextTick(function(){n.endEmitted||0!==n.length||(n.endEmitted=!0,t.readable=!1,t.emit("end"))}))}function b(t,e){for(var n=0,r=t.length;r>n;n++)e(t[n],n)}function x(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]===e)return n;return-1}t.exports=i;var S=n(107),k=n(4).Buffer;i.ReadableState=r;var E=n(54).EventEmitter;E.listenerCount||(E.listenerCount=function(t,e){return t.listeners(e).length});var C=n(46),I=n(105);I.inherits=n(104);var A,L=n(93);L=L&&L.debuglog?L.debuglog("stream"):function(){},I.inherits(i,C),i.prototype.push=function(t,e){var n=this._readableState;return I.isString(t)&&!n.objectMode&&(e=e||n.defaultEncoding,e!==n.encoding&&(t=new k(t,e),e="")),o(this,n,t,e,!1)},i.prototype.unshift=function(t){var e=this._readableState;return o(this,e,t,"",!0)},i.prototype.setEncoding=function(t){return A||(A=n(101).StringDecoder),this._readableState.decoder=new A(t),this._readableState.encoding=t,this};var R=8388608;i.prototype.read=function(t){L("read",t);var e=this._readableState,n=t;if((!I.isNumber(t)||t>0)&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return L("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?_(this):c(this),null;if(t=h(t,e),0===t&&e.ended)return 0===e.length&&_(this),null;var r=e.needReadable;L("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&(r=!0,L("length less than watermark",r)),(e.ended||e.reading)&&(r=!1,L("reading or ended",r)),r&&(L("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1),r&&!e.reading&&(t=h(n,e));var i;return i=t>0?w(t,e):null,I.isNull(i)&&(e.needReadable=!0,t=0),e.length-=t,0!==e.length||e.ended||(e.needReadable=!0),n!==t&&e.ended&&0===e.length&&_(this),I.isNull(i)||this.emit("data",i),i},i.prototype._read=function(t){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(t,n){function r(t){L("onunpipe"),t===c&&o()}function i(){L("onend"),t.end()}function o(){L("cleanup"),t.removeListener("close",h),t.removeListener("finish",u),t.removeListener("drain",v),t.removeListener("error",s),t.removeListener("unpipe",r),c.removeListener("end",i),c.removeListener("end",o),c.removeListener("data",a),!f.awaitDrain||t._writableState&&!t._writableState.needDrain||v()}function a(e){L("ondata");var n=t.write(e);!1===n&&(L("false write response, pause",c._readableState.awaitDrain),c._readableState.awaitDrain++,c.pause())}function s(e){L("onerror",e),l(),t.removeListener("error",s),0===E.listenerCount(t,"error")&&t.emit("error",e)}function h(){t.removeListener("finish",u),l()}function u(){L("onfinish"),t.removeListener("close",h),l()}function l(){L("unpipe"),c.unpipe(t)}var c=this,f=this._readableState;switch(f.pipesCount){case 0:f.pipes=t;break;case 1:f.pipes=[f.pipes,t];break;default:f.pipes.push(t)}f.pipesCount+=1,L("pipe count=%d opts=%j",f.pipesCount,n);var d=(!n||n.end!==!1)&&t!==e.stdout&&t!==e.stderr,p=d?i:o;f.endEmitted?e.nextTick(p):c.once("end",p),t.on("unpipe",r);var v=g(c);return t.on("drain",v),c.on("data",a),t._events&&t._events.error?S(t._events.error)?t._events.error.unshift(s):t._events.error=[s,t._events.error]:t.on("error",s),t.once("close",h),t.once("finish",u),t.emit("pipe",c),f.flowing||(L("pipe resume"),c.resume()),t},i.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this),this);if(!t){var n=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;r>i;i++)n[i].emit("unpipe",this);return this}var i=x(e.pipes,t);return-1===i?this:(e.pipes.splice(i,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this),this)},i.prototype.on=function(t,n){var r=C.prototype.on.call(this,t,n);if("data"===t&&!1!==this._readableState.flowing&&this.resume(),"readable"===t&&this.readable){var i=this._readableState;if(!i.readableListening)if(i.readableListening=!0,i.emittedReadable=!1,i.needReadable=!0,i.reading)i.length&&c(this,i);else{var o=this;e.nextTick(function(){L("readable nexttick read 0"),o.read(0)})}}return r},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var t=this._readableState;return t.flowing||(L("resume"),t.flowing=!0,t.reading||(L("resume read 0"),this.read(0)),v(this,t)),this},i.prototype.pause=function(){return L("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(L("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(t){var e=this._readableState,n=!1,r=this;t.on("end",function(){if(L("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&r.push(t)}r.push(null)}),t.on("data",function(i){if(L("wrapped data"),e.decoder&&(i=e.decoder.write(i)),i&&(e.objectMode||i.length)){var o=r.push(i);o||(n=!0,t.pause())}});for(var i in t)I.isFunction(t[i])&&I.isUndefined(this[i])&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));var o=["error","close","destroy","pause","resume"];return b(o,function(e){t.on(e,r.emit.bind(r,e))}),r._read=function(e){L("wrapped _read",e),n&&(n=!1,t.resume())},r},i._fromList=w}).call(e,n(61))},function(t,e,n){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(t,e,n){"use strict";function r(t,e){return t.msg=T[e],e}function i(t){return(t<<1)-(t>4?9:0)}function o(t){for(var e=t.length;--e>=0;)t[e]=0}function a(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(A.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function s(t,e){L._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,a(t.strm)}function h(t,e){t.pending_buf[t.pending++]=e}function u(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function l(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,A.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=R(t.adler,e,i,n):2===t.state.wrap&&(t.adler=B(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function c(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,h=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,u=t.window,l=t.w_mask,c=t.prev,f=t.strstart+ht,d=u[o+a-1],p=u[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do if(n=e,u[n+a]===p&&u[n+a-1]===d&&u[n]===u[o]&&u[++n]===u[o+1]){o+=2,n++;do;while(u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&f>o);if(r=ht-(f-o),o=f-ht,r>a){if(t.match_start=e,a=r,r>=s)break;d=u[o+a-1],p=u[o+a]}}while((e=c[e&l])>h&&0!==--i);return a<=t.lookahead?a:t.lookahead}function f(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-ut)){A.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,n=t.hash_size,e=n;do r=t.head[--e],t.head[e]=r>=a?r-a:0;while(--n);n=a,e=n;do r=t.prev[--e],t.prev[e]=r>=a?r-a:0;while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=l(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=st)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<<t.hash_shift^t.window[o+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[o+st-1])&t.hash_mask,t.prev[o&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=o,o++,t.insert--,!(t.lookahead+t.insert<st)););}while(t.lookahead<ut&&0!==t.strm.avail_in)}function d(t,e){var n=65535;for(n>t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(f(t),0===t.lookahead&&e===M)return yt;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r, +t.strstart=r,s(t,!1),0===t.strm.avail_out))return yt;if(t.strstart-t.block_start>=t.w_size-ut&&(s(t,!1),0===t.strm.avail_out))return yt}return t.insert=0,e===U?(s(t,!0),0===t.strm.avail_out?_t:bt):t.strstart>t.block_start&&(s(t,!1),0===t.strm.avail_out)?yt:yt}function p(t,e){for(var n,r;;){if(t.lookahead<ut){if(f(t),t.lookahead<ut&&e===M)return yt;if(0===t.lookahead)break}if(n=0,t.lookahead>=st&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-ut&&(t.match_length=c(t,n)),t.match_length>=st)if(r=L._tr_tally(t,t.strstart-t.match_start,t.match_length-st),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=st){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else r=L._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(s(t,!1),0===t.strm.avail_out))return yt}return t.insert=t.strstart<st-1?t.strstart:st-1,e===U?(s(t,!0),0===t.strm.avail_out?_t:bt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?yt:wt}function g(t,e){for(var n,r,i;;){if(t.lookahead<ut){if(f(t),t.lookahead<ut&&e===M)return yt;if(0===t.lookahead)break}if(n=0,t.lookahead>=st&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=st-1,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-ut&&(t.match_length=c(t,n),t.match_length<=5&&(t.strategy===Z||t.match_length===st&&t.strstart-t.match_start>4096)&&(t.match_length=st-1)),t.prev_length>=st&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-st,r=L._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-st),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(0!==--t.prev_length);if(t.match_available=0,t.match_length=st-1,t.strstart++,r&&(s(t,!1),0===t.strm.avail_out))return yt}else if(t.match_available){if(r=L._tr_tally(t,0,t.window[t.strstart-1]),r&&s(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return yt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=L._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<st-1?t.strstart:st-1,e===U?(s(t,!0),0===t.strm.avail_out?_t:bt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?yt:wt}function v(t,e){for(var n,r,i,o,a=t.window;;){if(t.lookahead<=ht){if(f(t),t.lookahead<=ht&&e===M)return yt;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=st&&t.strstart>0&&(i=t.strstart-1,r=a[i],r===a[++i]&&r===a[++i]&&r===a[++i])){o=t.strstart+ht;do;while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&o>i);t.match_length=ht-(o-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=st?(n=L._tr_tally(t,1,t.match_length-st),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=L._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(s(t,!1),0===t.strm.avail_out))return yt}return t.insert=0,e===U?(s(t,!0),0===t.strm.avail_out?_t:bt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?yt:wt}function m(t,e){for(var n;;){if(0===t.lookahead&&(f(t),0===t.lookahead)){if(e===M)return yt;break}if(t.match_length=0,n=L._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(s(t,!1),0===t.strm.avail_out))return yt}return t.insert=0,e===U?(s(t,!0),0===t.strm.avail_out?_t:bt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?yt:wt}function y(t){t.window_size=2*t.w_size,o(t.head),t.max_lazy_match=I[t.level].max_lazy,t.good_match=I[t.level].good_length,t.nice_match=I[t.level].nice_length,t.max_chain_length=I[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=st-1,t.match_available=0,t.ins_h=0}function w(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=V,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new A.Buf16(2*ot),this.dyn_dtree=new A.Buf16(2*(2*rt+1)),this.bl_tree=new A.Buf16(2*(2*it+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new A.Buf16(at+1),this.heap=new A.Buf16(2*nt+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new A.Buf16(2*nt+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function _(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=X,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?ct:vt,t.adler=2===e.wrap?0:1,e.last_flush=M,L._tr_init(e),F):r(t,W)}function b(t){var e=_(t);return e===F&&y(t.state),e}function x(t,e){return t&&t.state?2!==t.state.wrap?W:(t.state.gzhead=e,F):W}function S(t,e,n,i,o,a){if(!t)return W;var s=1;if(e===H&&(e=6),0>i?(s=0,i=-i):i>15&&(s=2,i-=16),1>o||o>$||n!==V||8>i||i>15||0>e||e>9||0>a||a>Y)return r(t,W);8===i&&(i=9);var h=new w;return t.state=h,h.strm=t,h.wrap=s,h.gzhead=null,h.w_bits=i,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=o+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+st-1)/st),h.window=new A.Buf8(2*h.w_size),h.head=new A.Buf16(h.hash_size),h.prev=new A.Buf16(h.w_size),h.lit_bufsize=1<<o+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new A.Buf8(h.pending_buf_size),h.d_buf=h.lit_bufsize>>1,h.l_buf=3*h.lit_bufsize,h.level=e,h.strategy=a,h.method=n,b(t)}function k(t,e){return S(t,e,V,J,Q,K)}function E(t,e){var n,s,l,c;if(!t||!t.state||e>P||0>e)return t?r(t,W):W;if(s=t.state,!t.output||!t.input&&0!==t.avail_in||s.status===mt&&e!==U)return r(t,0===t.avail_out?j:W);if(s.strm=t,n=s.last_flush,s.last_flush=e,s.status===ct)if(2===s.wrap)t.adler=0,h(s,31),h(s,139),h(s,8),s.gzhead?(h(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),h(s,255&s.gzhead.time),h(s,s.gzhead.time>>8&255),h(s,s.gzhead.time>>16&255),h(s,s.gzhead.time>>24&255),h(s,9===s.level?2:s.strategy>=G||s.level<2?4:0),h(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(h(s,255&s.gzhead.extra.length),h(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=B(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=ft):(h(s,0),h(s,0),h(s,0),h(s,0),h(s,0),h(s,9===s.level?2:s.strategy>=G||s.level<2?4:0),h(s,xt),s.status=vt);else{var f=V+(s.w_bits-8<<4)<<8,d=-1;d=s.strategy>=G||s.level<2?0:s.level<6?1:6===s.level?2:3,f|=d<<6,0!==s.strstart&&(f|=lt),f+=31-f%31,s.status=vt,u(s,f),0!==s.strstart&&(u(s,t.adler>>>16),u(s,65535&t.adler)),t.adler=1}if(s.status===ft)if(s.gzhead.extra){for(l=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending!==s.pending_buf_size));)h(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=dt)}else s.status=dt;if(s.status===dt)if(s.gzhead.name){l=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending===s.pending_buf_size)){c=1;break}c=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,h(s,c)}while(0!==c);s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),0===c&&(s.gzindex=0,s.status=pt)}else s.status=pt;if(s.status===pt)if(s.gzhead.comment){l=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),a(t),l=s.pending,s.pending===s.pending_buf_size)){c=1;break}c=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,h(s,c)}while(0!==c);s.gzhead.hcrc&&s.pending>l&&(t.adler=B(t.adler,s.pending_buf,s.pending-l,l)),0===c&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(t),s.pending+2<=s.pending_buf_size&&(h(s,255&t.adler),h(s,t.adler>>8&255),t.adler=0,s.status=vt)):s.status=vt),0!==s.pending){if(a(t),0===t.avail_out)return s.last_flush=-1,F}else if(0===t.avail_in&&i(e)<=i(n)&&e!==U)return r(t,j);if(s.status===mt&&0!==t.avail_in)return r(t,j);if(0!==t.avail_in||0!==s.lookahead||e!==M&&s.status!==mt){var p=s.strategy===G?m(s,e):s.strategy===q?v(s,e):I[s.level].func(s,e);if((p===_t||p===bt)&&(s.status=mt),p===yt||p===_t)return 0===t.avail_out&&(s.last_flush=-1),F;if(p===wt&&(e===O?L._tr_align(s):e!==P&&(L._tr_stored_block(s,0,0,!1),e===D&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(t),0===t.avail_out))return s.last_flush=-1,F}return e!==U?F:s.wrap<=0?z:(2===s.wrap?(h(s,255&t.adler),h(s,t.adler>>8&255),h(s,t.adler>>16&255),h(s,t.adler>>24&255),h(s,255&t.total_in),h(s,t.total_in>>8&255),h(s,t.total_in>>16&255),h(s,t.total_in>>24&255)):(u(s,t.adler>>>16),u(s,65535&t.adler)),a(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?F:z)}function C(t){var e;return t&&t.state?(e=t.state.status,e!==ct&&e!==ft&&e!==dt&&e!==pt&&e!==gt&&e!==vt&&e!==mt?r(t,W):(t.state=null,e===vt?r(t,N):F)):W}var I,A=n(98),L=n(95),R=n(96),B=n(97),T=n(73),M=0,O=1,D=3,U=4,P=5,F=0,z=1,W=-2,N=-3,j=-5,H=-1,Z=1,G=2,q=3,Y=4,K=0,X=2,V=8,$=9,J=15,Q=8,tt=29,et=256,nt=et+1+tt,rt=30,it=19,ot=2*nt+1,at=15,st=3,ht=258,ut=ht+st+1,lt=32,ct=42,ft=69,dt=73,pt=91,gt=103,vt=113,mt=666,yt=1,wt=2,_t=3,bt=4,xt=3,St=function(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i};I=[new St(0,0,0,0,d),new St(4,4,8,4,p),new St(4,5,16,8,p),new St(4,6,32,32,p),new St(4,4,16,16,g),new St(8,16,32,32,g),new St(8,16,128,128,g),new St(8,32,128,256,g),new St(32,128,258,1024,g),new St(32,258,258,4096,g)],e.deflateInit=k,e.deflateInit2=S,e.deflateReset=b,e.deflateResetKeep=_,e.deflateSetHeader=x,e.deflate=E,e.deflateEnd=C,e.deflateInfo="pako deflate (from Nodeca project)"},function(t,e,n){"use strict";function r(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new m.Buf16(320),this.work=new m.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=U,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new m.Buf32(pt),e.distcode=e.distdyn=new m.Buf32(gt),e.sane=1,e.back=-1,A):B}function a(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,o(t)):B}function s(t,e){var n,r;return t&&t.state?(r=t.state,0>e?(n=0,e=-e):(n=(e>>4)+1,48>e&&(e&=15)),e&&(8>e||e>15)?B:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,a(t))):B}function h(t,e){var n,r;return t?(r=new i,t.state=r,r.window=null,n=s(t,e),n!==A&&(t.state=null),n):B}function u(t){return h(t,mt)}function l(t){if(yt){var e;for(g=new m.Buf32(512),v=new m.Buf32(32),e=0;144>e;)t.lens[e++]=8;for(;256>e;)t.lens[e++]=9;for(;280>e;)t.lens[e++]=7;for(;288>e;)t.lens[e++]=8;for(b(S,t.lens,0,288,g,0,t.work,{bits:9}),e=0;32>e;)t.lens[e++]=5;b(k,t.lens,0,32,v,0,t.work,{bits:5}),yt=!1}t.lencode=g,t.lenbits=9,t.distcode=v,t.distbits=5}function c(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new m.Buf8(o.wsize)),r>=o.wsize?(m.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),m.arraySet(o.window,e,n-r,i,o.wnext),r-=i,r?(m.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=i))),0}function f(t,e){var n,i,o,a,s,h,u,f,d,p,g,v,pt,gt,vt,mt,yt,wt,_t,bt,xt,St,kt,Et,Ct=0,It=new m.Buf8(4),At=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return B;n=t.state,n.mode===Y&&(n.mode=K),s=t.next_out,o=t.output,u=t.avail_out,a=t.next_in,i=t.input,h=t.avail_in,f=n.hold,d=n.bits,p=h,g=u,St=A;t:for(;;)switch(n.mode){case U:if(0===n.wrap){n.mode=K;break}for(;16>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(2&n.wrap&&35615===f){n.check=0,It[0]=255&f,It[1]=f>>>8&255,n.check=w(n.check,It,2,0),f=0,d=0,n.mode=P;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&f)<<8)+(f>>8))%31){t.msg="incorrect header check",n.mode=ct;break}if((15&f)!==D){t.msg="unknown compression method",n.mode=ct;break}if(f>>>=4,d-=4,xt=(15&f)+8,0===n.wbits)n.wbits=xt;else if(xt>n.wbits){t.msg="invalid window size",n.mode=ct;break}n.dmax=1<<xt,t.adler=n.check=1,n.mode=512&f?G:Y,f=0,d=0;break;case P:for(;16>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(n.flags=f,(255&n.flags)!==D){t.msg="unknown compression method",n.mode=ct;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=ct;break}n.head&&(n.head.text=f>>8&1),512&n.flags&&(It[0]=255&f,It[1]=f>>>8&255,n.check=w(n.check,It,2,0)),f=0,d=0,n.mode=F;case F:for(;32>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.head&&(n.head.time=f),512&n.flags&&(It[0]=255&f,It[1]=f>>>8&255,It[2]=f>>>16&255,It[3]=f>>>24&255,n.check=w(n.check,It,4,0)),f=0,d=0,n.mode=z;case z:for(;16>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.head&&(n.head.xflags=255&f,n.head.os=f>>8),512&n.flags&&(It[0]=255&f,It[1]=f>>>8&255,n.check=w(n.check,It,2,0)),f=0,d=0,n.mode=W;case W:if(1024&n.flags){for(;16>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.length=f,n.head&&(n.head.extra_len=f),512&n.flags&&(It[0]=255&f,It[1]=f>>>8&255,n.check=w(n.check,It,2,0)),f=0,d=0}else n.head&&(n.head.extra=null);n.mode=N;case N:if(1024&n.flags&&(v=n.length,v>h&&(v=h),v&&(n.head&&(xt=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),m.arraySet(n.head.extra,i,a,v,xt)),512&n.flags&&(n.check=w(n.check,i,v,a)),h-=v,a+=v,n.length-=v),n.length))break t;n.length=0,n.mode=j;case j:if(2048&n.flags){if(0===h)break t;v=0;do xt=i[a+v++],n.head&&xt&&n.length<65536&&(n.head.name+=String.fromCharCode(xt));while(xt&&h>v);if(512&n.flags&&(n.check=w(n.check,i,v,a)),h-=v,a+=v,xt)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=H;case H:if(4096&n.flags){if(0===h)break t;v=0;do xt=i[a+v++],n.head&&xt&&n.length<65536&&(n.head.comment+=String.fromCharCode(xt));while(xt&&h>v);if(512&n.flags&&(n.check=w(n.check,i,v,a)),h-=v,a+=v,xt)break t}else n.head&&(n.head.comment=null);n.mode=Z;case Z:if(512&n.flags){for(;16>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(f!==(65535&n.check)){t.msg="header crc mismatch",n.mode=ct;break}f=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=Y;break;case G:for(;32>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}t.adler=n.check=r(f),f=0,d=0,n.mode=q;case q:if(0===n.havedict)return t.next_out=s,t.avail_out=u,t.next_in=a,t.avail_in=h,n.hold=f,n.bits=d,R;t.adler=n.check=1,n.mode=Y;case Y:if(e===C||e===I)break t;case K:if(n.last){f>>>=7&d,d-=7&d,n.mode=ht;break}for(;3>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}switch(n.last=1&f,f>>>=1,d-=1,3&f){case 0:n.mode=X;break;case 1:if(l(n),n.mode=et,e===I){f>>>=2,d-=2;break t}break;case 2:n.mode=J;break;case 3:t.msg="invalid block type",n.mode=ct}f>>>=2,d-=2;break;case X:for(f>>>=7&d,d-=7&d;32>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if((65535&f)!==(f>>>16^65535)){t.msg="invalid stored block lengths",n.mode=ct;break}if(n.length=65535&f,f=0,d=0,n.mode=V,e===I)break t;case V:n.mode=$;case $:if(v=n.length){if(v>h&&(v=h),v>u&&(v=u),0===v)break t;m.arraySet(o,i,a,v,s),h-=v,a+=v,u-=v,s+=v,n.length-=v;break}n.mode=Y;break;case J:for(;14>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(n.nlen=(31&f)+257,f>>>=5,d-=5,n.ndist=(31&f)+1,f>>>=5,d-=5,n.ncode=(15&f)+4,f>>>=4,d-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=ct;break}n.have=0,n.mode=Q;case Q:for(;n.have<n.ncode;){for(;3>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.lens[At[n.have++]]=7&f,f>>>=3,d-=3}for(;n.have<19;)n.lens[At[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,kt={bits:n.lenbits},St=b(x,n.lens,0,19,n.lencode,0,n.work,kt),n.lenbits=kt.bits,St){t.msg="invalid code lengths set",n.mode=ct;break}n.have=0,n.mode=tt;case tt:for(;n.have<n.nlen+n.ndist;){for(;Ct=n.lencode[f&(1<<n.lenbits)-1],vt=Ct>>>24,mt=Ct>>>16&255,yt=65535&Ct,!(d>=vt);){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(16>yt)f>>>=vt,d-=vt,n.lens[n.have++]=yt;else{if(16===yt){for(Et=vt+2;Et>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(f>>>=vt,d-=vt,0===n.have){t.msg="invalid bit length repeat",n.mode=ct;break}xt=n.lens[n.have-1],v=3+(3&f),f>>>=2,d-=2}else if(17===yt){for(Et=vt+3;Et>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}f>>>=vt,d-=vt,xt=0,v=3+(7&f),f>>>=3,d-=3}else{for(Et=vt+7;Et>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}f>>>=vt,d-=vt,xt=0,v=11+(127&f),f>>>=7,d-=7}if(n.have+v>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=ct;break}for(;v--;)n.lens[n.have++]=xt}}if(n.mode===ct)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=ct;break}if(n.lenbits=9,kt={bits:n.lenbits},St=b(S,n.lens,0,n.nlen,n.lencode,0,n.work,kt),n.lenbits=kt.bits,St){t.msg="invalid literal/lengths set",n.mode=ct;break}if(n.distbits=6,n.distcode=n.distdyn,kt={bits:n.distbits},St=b(k,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,kt),n.distbits=kt.bits,St){t.msg="invalid distances set",n.mode=ct;break}if(n.mode=et,e===I)break t;case et:n.mode=nt;case nt:if(h>=6&&u>=258){t.next_out=s,t.avail_out=u,t.next_in=a,t.avail_in=h,n.hold=f,n.bits=d,_(t,g),s=t.next_out,o=t.output,u=t.avail_out,a=t.next_in,i=t.input,h=t.avail_in,f=n.hold,d=n.bits,n.mode===Y&&(n.back=-1);break}for(n.back=0;Ct=n.lencode[f&(1<<n.lenbits)-1],vt=Ct>>>24,mt=Ct>>>16&255,yt=65535&Ct,!(d>=vt);){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(mt&&0===(240&mt)){for(wt=vt,_t=mt,bt=yt;Ct=n.lencode[bt+((f&(1<<wt+_t)-1)>>wt)],vt=Ct>>>24,mt=Ct>>>16&255,yt=65535&Ct,!(d>=wt+vt);){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}f>>>=wt,d-=wt,n.back+=wt}if(f>>>=vt,d-=vt,n.back+=vt,n.length=yt,0===mt){n.mode=st;break}if(32&mt){n.back=-1,n.mode=Y;break}if(64&mt){t.msg="invalid literal/length code",n.mode=ct;break}n.extra=15&mt,n.mode=rt;case rt:if(n.extra){for(Et=n.extra;Et>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.length+=f&(1<<n.extra)-1,f>>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=it;case it:for(;Ct=n.distcode[f&(1<<n.distbits)-1],vt=Ct>>>24,mt=Ct>>>16&255,yt=65535&Ct,!(d>=vt);){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(0===(240&mt)){for(wt=vt,_t=mt,bt=yt;Ct=n.distcode[bt+((f&(1<<wt+_t)-1)>>wt)],vt=Ct>>>24,mt=Ct>>>16&255,yt=65535&Ct,!(d>=wt+vt);){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}f>>>=wt,d-=wt,n.back+=wt}if(f>>>=vt,d-=vt,n.back+=vt,64&mt){t.msg="invalid distance code",n.mode=ct;break}n.offset=yt,n.extra=15&mt,n.mode=ot;case ot:if(n.extra){for(Et=n.extra;Et>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}n.offset+=f&(1<<n.extra)-1,f>>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=ct;break}n.mode=at;case at:if(0===u)break t;if(v=g-u,n.offset>v){if(v=n.offset-v,v>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=ct;break}v>n.wnext?(v-=n.wnext,pt=n.wsize-v):pt=n.wnext-v,v>n.length&&(v=n.length),gt=n.window}else gt=o,pt=s-n.offset,v=n.length;v>u&&(v=u),u-=v,n.length-=v;do o[s++]=gt[pt++];while(--v);0===n.length&&(n.mode=nt);break;case st:if(0===u)break t;o[s++]=n.length,u--,n.mode=nt;break;case ht:if(n.wrap){for(;32>d;){if(0===h)break t;h--,f|=i[a++]<<d,d+=8}if(g-=u,t.total_out+=g,n.total+=g,g&&(t.adler=n.check=n.flags?w(n.check,o,g,s-g):y(n.check,o,g,s-g)),g=u,(n.flags?f:r(f))!==n.check){t.msg="incorrect data check",n.mode=ct;break}f=0,d=0}n.mode=ut;case ut:if(n.wrap&&n.flags){for(;32>d;){if(0===h)break t;h--,f+=i[a++]<<d,d+=8}if(f!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=ct;break}f=0,d=0}n.mode=lt;case lt:St=L;break t;case ct:St=T;break t;case ft:return M;case dt:default:return B}return t.next_out=s,t.avail_out=u,t.next_in=a,t.avail_in=h,n.hold=f,n.bits=d,(n.wsize||g!==t.avail_out&&n.mode<ct&&(n.mode<ht||e!==E))&&c(t,t.output,t.next_out,g-t.avail_out)?(n.mode=ft,M):(p-=t.avail_in,g-=t.avail_out,t.total_in+=p,t.total_out+=g,n.total+=g,n.wrap&&g&&(t.adler=n.check=n.flags?w(n.check,o,g,t.next_out-g):y(n.check,o,g,t.next_out-g)),t.data_type=n.bits+(n.last?64:0)+(n.mode===Y?128:0)+(n.mode===et||n.mode===V?256:0),(0===p&&0===g||e===E)&&St===A&&(St=O),St)}function d(t){if(!t||!t.state)return B;var e=t.state;return e.window&&(e.window=null),t.state=null,A}function p(t,e){var n;return t&&t.state?(n=t.state,0===(2&n.wrap)?B:(n.head=e,e.done=!1,A)):B}var g,v,m=n(98),y=n(96),w=n(97),_=n(102),b=n(103),x=0,S=1,k=2,E=4,C=5,I=6,A=0,L=1,R=2,B=-2,T=-3,M=-4,O=-5,D=8,U=1,P=2,F=3,z=4,W=5,N=6,j=7,H=8,Z=9,G=10,q=11,Y=12,K=13,X=14,V=15,$=16,J=17,Q=18,tt=19,et=20,nt=21,rt=22,it=23,ot=24,at=25,st=26,ht=27,ut=28,lt=29,ct=30,ft=31,dt=32,pt=852,gt=592,vt=15,mt=vt,yt=!0;e.inflateReset=a,e.inflateReset2=s,e.inflateResetKeep=o,e.inflateInit=u,e.inflateInit2=h,e.inflate=f,e.inflateEnd=d,e.inflateGetHeader=p,e.inflateInfo="pako inflate (from Nodeca project)"},function(t,e,n){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e,n){"use strict";function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}t.exports=r},function(t,e,n){(function(){var e,r,i,NameTable,o;o=n(10),r=n(34),i=n(79),NameTable=n(80),e=function(){function t(t){this.contents=new r(t),this.parse(this.contents)}return t.open=function(e){var n;return n=o.readFileSync(e),new t(n)},t.prototype.parse=function(t){var e,n,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L,R,B;for(h=t.readInt(),w=t.readInt(),s=t.readInt(),y=t.readInt(),this.map={},t.pos=w+24,L=t.readShort()+w,S=t.readShort()+w,t.pos=L,_=t.readShort(),d=R=0;_>=R;d=R+=1){for(A=t.readString(4),b=t.readShort(),I=t.readShort(),this.map[A]={list:[],named:{}},C=t.pos,t.pos=L+I,g=B=0;b>=B;g=B+=1)p=t.readShort(),k=t.readShort(),e=t.readByte(),n=t.readByte()<<16,o=t.readByte()<<8,a=t.readByte(),u=h+(0|n|o|a),f=t.readUInt32(),l={id:p,attributes:e,offset:u,handle:f},E=t.pos,-1!==k&&w+y>S+k?(t.pos=S+k,v=t.readByte(),l.name=t.readString(v)):"sfnt"===A&&(t.pos=l.offset,m=t.readUInt32(),c={},c.contents=new r(t.slice(t.pos,t.pos+m)),c.directory=new i(c.contents),x=new NameTable(c),l.name=x.fontName[0].raw),t.pos=E,this.map[A].list.push(l),l.name&&(this.map[A].named[l.name]=l);t.pos=C}},t.prototype.getNamedFont=function(t){var e,n,r,i,o,a;if(e=this.contents,i=e.pos,n=null!=(a=this.map.sfnt)?a.named[t]:void 0,!n)throw new Error("Font "+t+" not found in DFont file.");return e.pos=n.offset,r=e.readUInt32(),o=e.slice(e.pos,e.pos+r),e.pos=i,o},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o=[].slice;r=n(34),i=function(){function t(t){var e,n,r,i;for(this.scalarType=t.readInt(),this.tableCount=t.readShort(),this.searchRange=t.readShort(),this.entrySelector=t.readShort(),this.rangeShift=t.readShort(),this.tables={},n=r=0,i=this.tableCount;i>=0?i>r:r>i;n=i>=0?++r:--r)e={tag:t.readString(4),checksum:t.readInt(),offset:t.readInt(),length:t.readInt()},this.tables[e.tag]=e}var n;return t.prototype.encode=function(t){var i,o,a,s,h,u,l,c,f,d,p,g,v,m;g=Object.keys(t).length,u=Math.log(2),f=16*Math.floor(Math.log(g)/u),s=Math.floor(f/u),c=16*g-f,o=new r,o.writeInt(this.scalarType),o.writeShort(g),o.writeShort(f),o.writeShort(s),o.writeShort(c),a=16*g,l=o.pos+a,h=null,v=[];for(m in t)for(p=t[m],o.writeString(m),o.writeInt(n(p)),o.writeInt(l),o.writeInt(p.length),v=v.concat(p),"head"===m&&(h=l),l+=p.length;l%4;)v.push(0),l++;return o.write(v),d=n(o.data),i=2981146554-d,o.pos=h+8,o.writeUInt32(i),new e(o.data)},n=function(t){var e,n,i,a,s;for(t=o.call(t);t.length%4;)t.push(0);for(i=new r(t),n=0,e=a=0,s=t.length;s>a;e=a+=4)n+=i.readUInt32();return 4294967295&n},t}(),t.exports=i}).call(this)}).call(e,n(4).Buffer)},function(t,e,n){(function(){var e,r,NameTable,i,o,a={}.hasOwnProperty,s=function(t,e){function n(){this.constructor=t}for(var r in e)a.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};i=n(99),e=n(34),o=n(89),NameTable=function(t){function NameTable(){return NameTable.__super__.constructor.apply(this,arguments)}var n;return s(NameTable,t),NameTable.prototype.tag="name",NameTable.prototype.parse=function(t){var e,n,i,o,a,s,h,u,l,c,f,d,p;for(t.pos=this.offset,o=t.readShort(),e=t.readShort(),h=t.readShort(),n=[],a=c=0;e>=0?e>c:c>e;a=e>=0?++c:--c)n.push({platformID:t.readShort(),encodingID:t.readShort(),languageID:t.readShort(),nameID:t.readShort(),length:t.readShort(),offset:this.offset+h+t.readShort()});for(u={},a=f=0,d=n.length;d>f;a=++f)i=n[a],t.pos=i.offset,l=t.readString(i.length),s=new r(l,i),null==u[p=i.nameID]&&(u[p]=[]),u[i.nameID].push(s);return this.strings=u,this.copyright=u[0],this.fontFamily=u[1],this.fontSubfamily=u[2],this.uniqueSubfamily=u[3],this.fontName=u[4],this.version=u[5],this.postscriptName=u[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g,""),this.trademark=u[7],this.manufacturer=u[8],this.designer=u[9],this.description=u[10],this.vendorUrl=u[11],this.designerUrl=u[12],this.license=u[13],this.licenseUrl=u[14],this.preferredFamily=u[15],this.preferredSubfamily=u[17],this.compatibleFull=u[18],this.sampleText=u[19]},n="AAAAAA",NameTable.prototype.encode=function(){var t,i,a,s,h,u,l,c,f,d,p,g,v,m;f={},m=this.strings;for(t in m)p=m[t],f[t]=p;h=new r(""+n+"+"+this.postscriptName,{platformID:1,encodingID:0,languageID:0}),f[6]=[h],n=o.successorOf(n),u=0;for(t in f)i=f[t],null!=i&&(u+=i.length);d=new e,l=new e,d.writeShort(0),d.writeShort(u),d.writeShort(6+12*u);for(a in f)if(i=f[a],null!=i)for(g=0,v=i.length;v>g;g++)c=i[g],d.writeShort(c.platformID),d.writeShort(c.encodingID),d.writeShort(c.languageID),d.writeShort(a),d.writeShort(c.length),d.writeShort(l.pos),l.writeString(c.raw);return s={postscriptName:h.raw,table:d.data.concat(l.data)}},NameTable}(i),t.exports=NameTable,r=function(){function t(t,e){this.raw=t,this.length=this.raw.length,this.platformID=e.platformID,this.encodingID=e.encodingID,this.languageID=e.languageID}return t}()}).call(this)},function(t,e,n){(function(){var e,HeadTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),HeadTable=function(t){function HeadTable(){return HeadTable.__super__.constructor.apply(this,arguments)}return o(HeadTable,t),HeadTable.prototype.tag="head",HeadTable.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.revision=t.readInt(),this.checkSumAdjustment=t.readInt(),this.magicNumber=t.readInt(),this.flags=t.readShort(),this.unitsPerEm=t.readShort(),this.created=t.readLongLong(),this.modified=t.readLongLong(),this.xMin=t.readShort(),this.yMin=t.readShort(),this.xMax=t.readShort(),this.yMax=t.readShort(),this.macStyle=t.readShort(),this.lowestRecPPEM=t.readShort(),this.fontDirectionHint=t.readShort(),this.indexToLocFormat=t.readShort(),this.glyphDataFormat=t.readShort()},HeadTable.prototype.encode=function(t){var n;return n=new e,n.writeInt(this.version),n.writeInt(this.revision),n.writeInt(this.checkSumAdjustment),n.writeInt(this.magicNumber),n.writeShort(this.flags),n.writeShort(this.unitsPerEm),n.writeLongLong(this.created),n.writeLongLong(this.modified),n.writeShort(this.xMin),n.writeShort(this.yMin),n.writeShort(this.xMax),n.writeShort(this.yMax),n.writeShort(this.macStyle),n.writeShort(this.lowestRecPPEM),n.writeShort(this.fontDirectionHint),n.writeShort(t.type),n.writeShort(this.glyphDataFormat),n.data},HeadTable}(r),t.exports=HeadTable}).call(this)},function(t,e,n){(function(){var e,CmapTable,r,i,o={}.hasOwnProperty,a=function(t,e){function n(){this.constructor=t}for(var r in e)o.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};i=n(99),r=n(34),CmapTable=function(t){function CmapTable(){return CmapTable.__super__.constructor.apply(this,arguments)}return a(CmapTable,t),CmapTable.prototype.tag="cmap",CmapTable.prototype.parse=function(t){var n,r,i,o;for(t.pos=this.offset,this.version=t.readUInt16(),i=t.readUInt16(),this.tables=[],this.unicode=null,r=o=0;i>=0?i>o:o>i;r=i>=0?++o:--o)n=new e(t,this.offset),this.tables.push(n),n.isUnicode&&null==this.unicode&&(this.unicode=n);return!0},CmapTable.encode=function(t,n){var i,o;return null==n&&(n="macroman"),i=e.encode(t,n),o=new r,o.writeUInt16(0),o.writeUInt16(1),i.table=o.data.concat(i.subtable),i},CmapTable}(i),e=function(){function t(t,e){var n,r,i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_;switch(this.platformID=t.readUInt16(),this.encodingID=t.readShort(),this.offset=e+t.readInt(),c=t.pos,t.pos=this.offset,this.format=t.readUInt16(),this.length=t.readUInt16(),this.language=t.readUInt16(),this.isUnicode=3===this.platformID&&1===this.encodingID&&4===this.format||0===this.platformID&&4===this.format,this.codeMap={},this.format){case 0:for(s=m=0;256>m;s=++m)this.codeMap[s]=t.readByte();break;case 4:for(d=t.readUInt16(),f=d/2,t.pos+=6,i=function(){var e,n;for(n=[],s=e=0;f>=0?f>e:e>f;s=f>=0?++e:--e)n.push(t.readUInt16());return n}(),t.pos+=2,g=function(){var e,n;for(n=[],s=e=0;f>=0?f>e:e>f;s=f>=0?++e:--e)n.push(t.readUInt16());return n}(),h=function(){var e,n;for(n=[],s=e=0;f>=0?f>e:e>f;s=f>=0?++e:--e)n.push(t.readUInt16());return n}(),u=function(){var e,n;for(n=[],s=e=0;f>=0?f>e:e>f;s=f>=0?++e:--e)n.push(t.readUInt16());return n}(),r=(this.length-t.pos+this.offset)/2,a=function(){var e,n;for(n=[],s=e=0;r>=0?r>e:e>r;s=r>=0?++e:--e)n.push(t.readUInt16());return n}(),s=y=0,_=i.length;_>y;s=++y)for(v=i[s],p=g[s],n=w=p;v>=p?v>=w:w>=v;n=v>=p?++w:--w)0===u[s]?o=n+h[s]:(l=u[s]/2+(n-p)-(f-s),o=a[l]||0,0!==o&&(o+=h[s])),this.codeMap[n]=65535&o}t.pos=c}return t.encode=function(t,e){var n,i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L,R,B,T,M,O,D,U,P,F,z,W,N,j,H,Z,G,q,Y,K,X;switch(B=new r,a=Object.keys(t).sort(function(t,e){return t-e}),e){case"macroman":for(g=0,v=function(){var t,e;for(e=[],p=t=0;256>t;p=++t)e.push(0);return e}(),y={0:0},o={},T=0,U=a.length;U>T;T++)i=a[T],null==y[q=t[i]]&&(y[q]=++g),o[i]={old:t[i],"new":y[t[i]]},v[i]=y[t[i]];return B.writeUInt16(1),B.writeUInt16(0),B.writeUInt32(12),B.writeUInt16(0), +B.writeUInt16(262),B.writeUInt16(0),B.write(v),k={charMap:o,subtable:B.data,maxGlyphID:g+1};case"unicode":for(L=[],c=[],w=0,y={},n={},m=u=null,M=0,P=a.length;P>M;M++)i=a[M],b=t[i],null==y[b]&&(y[b]=++w),n[i]={old:b,"new":y[b]},s=y[b]-i,(null==m||s!==u)&&(m&&c.push(m),L.push(i),u=s),m=i;for(m&&c.push(m),c.push(65535),L.push(65535),C=L.length,I=2*C,E=2*Math.pow(Math.log(C)/Math.LN2,2),f=Math.log(E/2)/Math.LN2,S=2*C-E,h=[],x=[],d=[],p=O=0,F=L.length;F>O;p=++O){if(A=L[p],l=c[p],65535===A){h.push(0),x.push(0);break}if(R=n[A]["new"],A-R>=32768)for(h.push(0),x.push(2*(d.length+C-p)),i=D=A;l>=A?l>=D:D>=l;i=l>=A?++D:--D)d.push(n[i]["new"]);else h.push(R-A),x.push(0)}for(B.writeUInt16(3),B.writeUInt16(1),B.writeUInt32(12),B.writeUInt16(4),B.writeUInt16(16+8*C+2*d.length),B.writeUInt16(0),B.writeUInt16(I),B.writeUInt16(E),B.writeUInt16(f),B.writeUInt16(S),Z=0,z=c.length;z>Z;Z++)i=c[Z],B.writeUInt16(i);for(B.writeUInt16(0),G=0,W=L.length;W>G;G++)i=L[G],B.writeUInt16(i);for(Y=0,N=h.length;N>Y;Y++)s=h[Y],B.writeUInt16(s);for(K=0,j=x.length;j>K;K++)_=x[K],B.writeUInt16(_);for(X=0,H=d.length;H>X;X++)g=d[X],B.writeUInt16(g);return k={charMap:n,subtable:B.data,maxGlyphID:w+1}}},t}(),t.exports=CmapTable}).call(this)},function(t,e,n){(function(){var e,HmtxTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),HmtxTable=function(t){function HmtxTable(){return HmtxTable.__super__.constructor.apply(this,arguments)}return o(HmtxTable,t),HmtxTable.prototype.tag="hmtx",HmtxTable.prototype.parse=function(t){var e,n,r,i,o,a,s,h;for(t.pos=this.offset,this.metrics=[],e=o=0,s=this.file.hhea.numberOfMetrics;s>=0?s>o:o>s;e=s>=0?++o:--o)this.metrics.push({advance:t.readUInt16(),lsb:t.readInt16()});for(r=this.file.maxp.numGlyphs-this.file.hhea.numberOfMetrics,this.leftSideBearings=function(){var n,i;for(i=[],e=n=0;r>=0?r>n:n>r;e=r>=0?++n:--n)i.push(t.readInt16());return i}(),this.widths=function(){var t,e,n,r;for(n=this.metrics,r=[],t=0,e=n.length;e>t;t++)i=n[t],r.push(i.advance);return r}.call(this),n=this.widths[this.widths.length-1],h=[],e=a=0;r>=0?r>a:a>r;e=r>=0?++a:--a)h.push(this.widths.push(n));return h},HmtxTable.prototype.forGlyph=function(t){var e;return t in this.metrics?this.metrics[t]:e={advance:this.metrics[this.metrics.length-1].advance,lsb:this.leftSideBearings[t-this.metrics.length]}},HmtxTable.prototype.encode=function(t){var n,r,i,o,a;for(i=new e,o=0,a=t.length;a>o;o++)n=t[o],r=this.forGlyph(n),i.writeUInt16(r.advance),i.writeUInt16(r.lsb);return i.data},HmtxTable}(r),t.exports=HmtxTable}).call(this)},function(t,e,n){(function(){var e,HheaTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),HheaTable=function(t){function HheaTable(){return HheaTable.__super__.constructor.apply(this,arguments)}return o(HheaTable,t),HheaTable.prototype.tag="hhea",HheaTable.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.ascender=t.readShort(),this.decender=t.readShort(),this.lineGap=t.readShort(),this.advanceWidthMax=t.readShort(),this.minLeftSideBearing=t.readShort(),this.minRightSideBearing=t.readShort(),this.xMaxExtent=t.readShort(),this.caretSlopeRise=t.readShort(),this.caretSlopeRun=t.readShort(),this.caretOffset=t.readShort(),t.pos+=8,this.metricDataFormat=t.readShort(),this.numberOfMetrics=t.readUInt16()},HheaTable.prototype.encode=function(t){var n,r,i,o;for(r=new e,r.writeInt(this.version),r.writeShort(this.ascender),r.writeShort(this.decender),r.writeShort(this.lineGap),r.writeShort(this.advanceWidthMax),r.writeShort(this.minLeftSideBearing),r.writeShort(this.minRightSideBearing),r.writeShort(this.xMaxExtent),r.writeShort(this.caretSlopeRise),r.writeShort(this.caretSlopeRun),r.writeShort(this.caretOffset),n=i=0,o=8;o>=0?o>i:i>o;n=o>=0?++i:--i)r.writeByte(0);return r.writeShort(this.metricDataFormat),r.writeUInt16(t.length),r.data},HheaTable}(r),t.exports=HheaTable}).call(this)},function(t,e,n){(function(){var e,MaxpTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),MaxpTable=function(t){function MaxpTable(){return MaxpTable.__super__.constructor.apply(this,arguments)}return o(MaxpTable,t),MaxpTable.prototype.tag="maxp",MaxpTable.prototype.parse=function(t){return t.pos=this.offset,this.version=t.readInt(),this.numGlyphs=t.readUInt16(),this.maxPoints=t.readUInt16(),this.maxContours=t.readUInt16(),this.maxCompositePoints=t.readUInt16(),this.maxComponentContours=t.readUInt16(),this.maxZones=t.readUInt16(),this.maxTwilightPoints=t.readUInt16(),this.maxStorage=t.readUInt16(),this.maxFunctionDefs=t.readUInt16(),this.maxInstructionDefs=t.readUInt16(),this.maxStackElements=t.readUInt16(),this.maxSizeOfInstructions=t.readUInt16(),this.maxComponentElements=t.readUInt16(),this.maxComponentDepth=t.readUInt16()},MaxpTable.prototype.encode=function(t){var n;return n=new e,n.writeInt(this.version),n.writeUInt16(t.length),n.writeUInt16(this.maxPoints),n.writeUInt16(this.maxContours),n.writeUInt16(this.maxCompositePoints),n.writeUInt16(this.maxComponentContours),n.writeUInt16(this.maxZones),n.writeUInt16(this.maxTwilightPoints),n.writeUInt16(this.maxStorage),n.writeUInt16(this.maxFunctionDefs),n.writeUInt16(this.maxInstructionDefs),n.writeUInt16(this.maxStackElements),n.writeUInt16(this.maxSizeOfInstructions),n.writeUInt16(this.maxComponentElements),n.writeUInt16(this.maxComponentDepth),n.data},MaxpTable}(r),t.exports=MaxpTable}).call(this)},function(t,e,n){(function(){var e,PostTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),PostTable=function(t){function PostTable(){return PostTable.__super__.constructor.apply(this,arguments)}var n;return o(PostTable,t),PostTable.prototype.tag="post",PostTable.prototype.parse=function(t){var e,n,r,i,o;switch(t.pos=this.offset,this.format=t.readInt(),this.italicAngle=t.readInt(),this.underlinePosition=t.readShort(),this.underlineThickness=t.readShort(),this.isFixedPitch=t.readInt(),this.minMemType42=t.readInt(),this.maxMemType42=t.readInt(),this.minMemType1=t.readInt(),this.maxMemType1=t.readInt(),this.format){case 65536:break;case 131072:for(r=t.readUInt16(),this.glyphNameIndex=[],e=i=0;r>=0?r>i:i>r;e=r>=0?++i:--i)this.glyphNameIndex.push(t.readUInt16());for(this.names=[],o=[];t.pos<this.offset+this.length;)n=t.readByte(),o.push(this.names.push(t.readString(n)));return o;case 151552:return r=t.readUInt16(),this.offsets=t.read(r);case 196608:break;case 262144:return this.map=function(){var n,r,i;for(i=[],e=n=0,r=this.file.maxp.numGlyphs;r>=0?r>n:n>r;e=r>=0?++n:--n)i.push(t.readUInt32());return i}.call(this)}},PostTable.prototype.glyphFor=function(t){var e;switch(this.format){case 65536:return n[t]||".notdef";case 131072:return e=this.glyphNameIndex[t],257>=e?n[e]:this.names[e-258]||".notdef";case 151552:return n[t+this.offsets[t]]||".notdef";case 196608:return".notdef";case 262144:return this.map[t]||65535}},PostTable.prototype.encode=function(t){var r,i,o,a,s,h,u,l,c,f,d,p,g,v,m;if(!this.exists)return null;if(h=this.raw(),196608===this.format)return h;for(c=new e(h.slice(0,32)),c.writeUInt32(131072),c.pos=32,o=[],l=[],f=0,g=t.length;g>f;f++)r=t[f],s=this.glyphFor(r),a=n.indexOf(s),-1!==a?o.push(a):(o.push(257+l.length),l.push(s));for(c.writeUInt16(Object.keys(t).length),d=0,v=o.length;v>d;d++)i=o[d],c.writeUInt16(i);for(p=0,m=l.length;m>p;p++)u=l[p],c.writeByte(u.length),c.writeString(u);return c.data},n=".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\nzero one two three four five six seven eight nine colon semicolon less equal greater\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\nbracketleft backslash bracketright asciicircum underscore grave\na b c d e f g h i j k l m n o p q r s t u v w x y z\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\nsterling section bullet paragraph germandbls registered copyright trademark acute\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\nCacute cacute Ccaron ccaron dcroat".split(/\s+/g),PostTable}(r),t.exports=PostTable}).call(this)},function(t,e,n){(function(){var OS2Table,e,r={}.hasOwnProperty,i=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};e=n(99),OS2Table=function(t){function OS2Table(){return OS2Table.__super__.constructor.apply(this,arguments)}return i(OS2Table,t),OS2Table.prototype.tag="OS/2",OS2Table.prototype.parse=function(t){var e;return t.pos=this.offset,this.version=t.readUInt16(),this.averageCharWidth=t.readShort(),this.weightClass=t.readUInt16(),this.widthClass=t.readUInt16(),this.type=t.readShort(),this.ySubscriptXSize=t.readShort(),this.ySubscriptYSize=t.readShort(),this.ySubscriptXOffset=t.readShort(),this.ySubscriptYOffset=t.readShort(),this.ySuperscriptXSize=t.readShort(),this.ySuperscriptYSize=t.readShort(),this.ySuperscriptXOffset=t.readShort(),this.ySuperscriptYOffset=t.readShort(),this.yStrikeoutSize=t.readShort(),this.yStrikeoutPosition=t.readShort(),this.familyClass=t.readShort(),this.panose=function(){var n,r;for(r=[],e=n=0;10>n;e=++n)r.push(t.readByte());return r}(),this.charRange=function(){var n,r;for(r=[],e=n=0;4>n;e=++n)r.push(t.readInt());return r}(),this.vendorID=t.readString(4),this.selection=t.readShort(),this.firstCharIndex=t.readShort(),this.lastCharIndex=t.readShort(),this.version>0&&(this.ascent=t.readShort(),this.descent=t.readShort(),this.lineGap=t.readShort(),this.winAscent=t.readShort(),this.winDescent=t.readShort(),this.codePageRange=function(){var n,r;for(r=[],e=n=0;2>n;e=++n)r.push(t.readInt());return r}(),this.version>1)?(this.xHeight=t.readShort(),this.capHeight=t.readShort(),this.defaultChar=t.readShort(),this.breakChar=t.readShort(),this.maxContext=t.readShort()):void 0},OS2Table.prototype.encode=function(){return this.raw()},OS2Table}(e),t.exports=OS2Table}).call(this)},function(t,e,n){(function(){var e,LocaTable,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};r=n(99),e=n(34),LocaTable=function(t){function LocaTable(){return LocaTable.__super__.constructor.apply(this,arguments)}return o(LocaTable,t),LocaTable.prototype.tag="loca",LocaTable.prototype.parse=function(t){var e,n;return t.pos=this.offset,e=this.file.head.indexToLocFormat,this.offsets=0===e?function(){var e,r,i;for(i=[],n=e=0,r=this.length;r>e;n=e+=2)i.push(2*t.readUInt16());return i}.call(this):function(){var e,r,i;for(i=[],n=e=0,r=this.length;r>e;n=e+=4)i.push(t.readUInt32());return i}.call(this)},LocaTable.prototype.indexOf=function(t){return this.offsets[t]},LocaTable.prototype.lengthOf=function(t){return this.offsets[t+1]-this.offsets[t]},LocaTable.prototype.encode=function(t){var n,r,i,o,a,s,h,u,l,c,f;for(o=new e,a=0,u=t.length;u>a;a++)if(r=t[a],r>65535){for(f=this.offsets,s=0,l=f.length;l>s;s++)n=f[s],o.writeUInt32(n);return i={format:1,table:o.data}}for(h=0,c=t.length;c>h;h++)n=t[h],o.writeUInt16(n/2);return i={format:0,table:o.data}},LocaTable}(r),t.exports=LocaTable}).call(this)},function(t,e,n){(function(){e.successorOf=function(t){var e,n,r,i,o,a,s,h,u,l;for(n="abcdefghijklmnopqrstuvwxyz",h=n.length,l=t,i=t.length;i>=0;){if(s=t.charAt(--i),isNaN(s)){if(o=n.indexOf(s.toLowerCase()),-1===o)u=s,r=!0;else if(u=n.charAt((o+1)%h),a=s===s.toUpperCase(),a&&(u=u.toUpperCase()),r=o+1>=h,r&&0===i){e=a?"A":"a",l=e+u+l.slice(1);break}}else if(u=+s+1,r=u>9,r&&(u=0),r&&0===i){l="1"+u+l.slice(1);break}if(l=l.slice(0,i)+u+l.slice(i+1),!r)break}return l},e.invert=function(t){var e,n,r;n={};for(e in t)r=t[e],n[r]=e;return n}}).call(this)},function(t,e,n){(function(){var e,r,GlyfTable,i,o,a={}.hasOwnProperty,s=function(t,e){function n(){this.constructor=t}for(var r in e)a.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h=[].slice;o=n(99),r=n(34),GlyfTable=function(t){function GlyfTable(){return GlyfTable.__super__.constructor.apply(this,arguments)}return s(GlyfTable,t),GlyfTable.prototype.tag="glyf",GlyfTable.prototype.parse=function(t){return this.cache={}},GlyfTable.prototype.glyphFor=function(t){var n,o,a,s,h,u,l,c,f,d;return t in this.cache?this.cache[t]:(s=this.file.loca,n=this.file.contents,o=s.indexOf(t),a=s.lengthOf(t),0===a?this.cache[t]=null:(n.pos=this.offset+o,u=new r(n.read(a)),h=u.readShort(),c=u.readShort(),d=u.readShort(),l=u.readShort(),f=u.readShort(),this.cache[t]=-1===h?new e(u,c,d,l,f):new i(u,h,c,d,l,f),this.cache[t]))},GlyfTable.prototype.encode=function(t,e,n){var r,i,o,a,s,h;for(a=[],o=[],s=0,h=e.length;h>s;s++)i=e[s],r=t[i],o.push(a.length),r&&(a=a.concat(r.encode(n)));return o.push(a.length),{table:a,offsets:o}},GlyfTable}(o),i=function(){function t(t,e,n,r,i,o){this.raw=t,this.numberOfContours=e,this.xMin=n,this.yMin=r,this.xMax=i,this.yMax=o,this.compound=!1}return t.prototype.encode=function(){return this.raw.data},t}(),e=function(){function t(t,r,s,h,u){var l,c;for(this.raw=t,this.xMin=r,this.yMin=s,this.xMax=h,this.yMax=u,this.compound=!0,this.glyphIDs=[],this.glyphOffsets=[],l=this.raw;;){if(c=l.readShort(),this.glyphOffsets.push(l.pos),this.glyphIDs.push(l.readShort()),!(c&n))break;l.pos+=c&e?4:2,c&a?l.pos+=8:c&i?l.pos+=4:c&o&&(l.pos+=2)}}var e,n,i,o,a,s;return e=1,o=8,n=32,i=64,a=128,s=256,t.prototype.encode=function(t){var e,n,i,o,a,s;for(i=new r(h.call(this.raw.data)),s=this.glyphIDs,e=o=0,a=s.length;a>o;e=++o)n=s[e],i.pos=this.glyphOffsets[e],i.writeShort(t[n]);return i.data},t}(),t.exports=GlyfTable}).call(this)},function(t,e,n){(function(){var t,n,r,i,o;e.DI_BRK=r=0,e.IN_BRK=i=1,e.CI_BRK=t=2,e.CP_BRK=n=3,e.PR_BRK=o=4,e.pairTable=[[o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,n,o,o,o,o,o,o,o],[r,o,o,i,i,o,o,o,o,i,i,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,o,o,o,o,i,i,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[o,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,i,r,i,i,r,r,o,t,o,i,i,i,i,i,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,o,o,t,o,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,o,r,r,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,i,i,i,i,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,i]]}).call(this)},function(t,e,n){(function(){var t,n,r,i,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A,L,R,B,T,M,O,D,U,P,F,z,W;e.OP=L=0,e.CL=u=1,e.CP=c=2,e.QU=T=3,e.GL=p=4,e.NS=I=5,e.EX=d=6,e.SY=P=7,e.IS=b=8,e.PR=B=9,e.PO=R=10,e.NU=A=11,e.AL=n=12,e.HL=m=13,e.ID=w=14,e.IN=_=15,e.HY=y=16,e.BA=i=17,e.BB=o=18,e.B2=r=19,e.ZW=W=20,e.CM=l=21,e.WJ=F=22,e.H2=g=23,e.H3=v=24,e.JL=x=25,e.JV=k=26,e.JT=S=27,e.RI=M=28,e.AI=t=29,e.BK=a=30,e.CB=s=31,e.CJ=h=32,e.CR=f=33,e.LF=E=34,e.NL=C=35,e.SA=O=36,e.SG=D=37,e.SP=U=38,e.XX=z=39}).call(this)},function(t,e,n){},function(t,e,n){t.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){"use strict";function r(t){for(var e=t.length;--e>=0;)t[e]=0}function i(t){return 256>t?at[t]:at[256+(t>>>7)]}function o(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function a(t,e,n){t.bi_valid>Y-n?(t.bi_buf|=e<<t.bi_valid&65535,o(t,t.bi_buf),t.bi_buf=e>>Y-t.bi_valid,t.bi_valid+=n-Y):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)}function s(t,e,n){a(t,n[2*e],n[2*e+1])}function h(t,e){var n=0;do n|=1&t,t>>>=1,n<<=1;while(--e>0);return n>>>1}function u(t){16===t.bi_valid?(o(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function l(t,e){var n,r,i,o,a,s,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,c=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(o=0;q>=o;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;G>n;n++)r=t.heap[n],o=h[2*h[2*r+1]+1]+1,o>p&&(o=p,g++),h[2*r+1]=o,r>u||(t.bl_count[o]++,a=0,r>=d&&(a=f[r-d]),s=h[2*r],t.opt_len+=s*(o+a),c&&(t.static_len+=s*(l[2*r+1]+a)));if(0!==g){do{for(o=p-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(o=p;0!==o;o--)for(r=t.bl_count[o];0!==r;)i=t.heap[--n],i>u||(h[2*i+1]!==o&&(t.opt_len+=(o-h[2*i+1])*h[2*i],h[2*i+1]=o),r--)}}function c(t,e,n){var r,i,o=new Array(q+1),a=0;for(r=1;q>=r;r++)o[r]=a=a+n[r-1]<<1;for(i=0;e>=i;i++){var s=t[2*i+1];0!==s&&(t[2*i]=h(o[s]++,s))}}function f(){var t,e,n,r,i,o=new Array(q+1);for(n=0,r=0;W-1>r;r++)for(ht[r]=n,t=0;t<1<<Q[r];t++)st[n++]=r;for(st[n-1]=r,i=0,r=0;16>r;r++)for(ut[r]=i,t=0;t<1<<tt[r];t++)at[i++]=r;for(i>>=7;H>r;r++)for(ut[r]=i<<7,t=0;t<1<<tt[r]-7;t++)at[256+i++]=r;for(e=0;q>=e;e++)o[e]=0;for(t=0;143>=t;)it[2*t+1]=8,t++,o[8]++;for(;255>=t;)it[2*t+1]=9,t++,o[9]++;for(;279>=t;)it[2*t+1]=7,t++,o[7]++;for(;287>=t;)it[2*t+1]=8,t++,o[8]++;for(c(it,j+1,o),t=0;H>t;t++)ot[2*t+1]=5,ot[2*t]=h(t,5);lt=new dt(it,Q,N+1,j,q),ct=new dt(ot,tt,0,H,q),ft=new dt(new Array(0),et,0,Z,K)}function d(t){var e;for(e=0;j>e;e++)t.dyn_ltree[2*e]=0;for(e=0;H>e;e++)t.dyn_dtree[2*e]=0;for(e=0;Z>e;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*X]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function p(t){t.bi_valid>8?o(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function g(t,e,n,r){p(t),r&&(o(t,n),o(t,~n)),R.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}function v(t,e,n,r){var i=2*e,o=2*n;return t[i]<t[o]||t[i]===t[o]&&r[e]<=r[n]}function m(t,e,n){for(var r=t.heap[n],i=n<<1;i<=t.heap_len&&(i<t.heap_len&&v(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!v(e,r,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=r}function y(t,e,n){var r,o,h,u,l=0;if(0!==t.last_lit)do r=t.pending_buf[t.d_buf+2*l]<<8|t.pending_buf[t.d_buf+2*l+1],o=t.pending_buf[t.l_buf+l],l++,0===r?s(t,o,e):(h=st[o],s(t,h+N+1,e),u=Q[h],0!==u&&(o-=ht[h],a(t,o,u)),r--,h=i(r),s(t,h,n),u=tt[h],0!==u&&(r-=ut[h],a(t,r,u)));while(l<t.last_lit);s(t,X,e)}function w(t,e){var n,r,i,o=e.dyn_tree,a=e.stat_desc.static_tree,s=e.stat_desc.has_stree,h=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=G,n=0;h>n;n++)0!==o[2*n]?(t.heap[++t.heap_len]=u=n,t.depth[n]=0):o[2*n+1]=0;for(;t.heap_len<2;)i=t.heap[++t.heap_len]=2>u?++u:0,o[2*i]=1,t.depth[i]=0,t.opt_len--,s&&(t.static_len-=a[2*i+1]);for(e.max_code=u,n=t.heap_len>>1;n>=1;n--)m(t,o,n);i=h;do n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],m(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,m(t,o,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],l(t,e),c(o,u,t.bl_count)}function _(t,e,n){var r,i,o=-1,a=e[1],s=0,h=7,u=4;for(0===a&&(h=138,u=3),e[2*(n+1)+1]=65535,r=0;n>=r;r++)i=a,a=e[2*(r+1)+1],++s<h&&i===a||(u>s?t.bl_tree[2*i]+=s:0!==i?(i!==o&&t.bl_tree[2*i]++,t.bl_tree[2*V]++):10>=s?t.bl_tree[2*$]++:t.bl_tree[2*J]++,s=0,o=i,0===a?(h=138,u=3):i===a?(h=6,u=3):(h=7,u=4))}function b(t,e,n){var r,i,o=-1,h=e[1],u=0,l=7,c=4;for(0===h&&(l=138,c=3),r=0;n>=r;r++)if(i=h,h=e[2*(r+1)+1],!(++u<l&&i===h)){if(c>u){do s(t,i,t.bl_tree);while(0!==--u)}else 0!==i?(i!==o&&(s(t,i,t.bl_tree),u--),s(t,V,t.bl_tree),a(t,u-3,2)):10>=u?(s(t,$,t.bl_tree),a(t,u-3,3)):(s(t,J,t.bl_tree),a(t,u-11,7));u=0,o=i,0===h?(l=138,c=3):i===h?(l=6,c=3):(l=7,c=4)}}function x(t){var e;for(_(t,t.dyn_ltree,t.l_desc.max_code),_(t,t.dyn_dtree,t.d_desc.max_code),w(t,t.bl_desc),e=Z-1;e>=3&&0===t.bl_tree[2*nt[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function S(t,e,n,r){var i;for(a(t,e-257,5),a(t,n-1,5),a(t,r-4,4),i=0;r>i;i++)a(t,t.bl_tree[2*nt[i]+1],3);b(t,t.dyn_ltree,e-1),b(t,t.dyn_dtree,n-1)}function k(t){var e,n=4093624447;for(e=0;31>=e;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return T;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return M;for(e=32;N>e;e++)if(0!==t.dyn_ltree[2*e])return M;return T}function E(t){gt||(f(),gt=!0),t.l_desc=new pt(t.dyn_ltree,lt),t.d_desc=new pt(t.dyn_dtree,ct),t.bl_desc=new pt(t.bl_tree,ft),t.bi_buf=0,t.bi_valid=0,d(t)}function C(t,e,n,r){a(t,(D<<1)+(r?1:0),3),g(t,e,n,!0)}function I(t){a(t,U<<1,3),s(t,X,it),u(t)}function A(t,e,n,r){var i,o,s=0;t.level>0?(t.strm.data_type===O&&(t.strm.data_type=k(t)),w(t,t.l_desc),w(t,t.d_desc),s=x(t),i=t.opt_len+3+7>>>3,o=t.static_len+3+7>>>3,i>=o&&(i=o)):i=o=n+5,i>=n+4&&-1!==e?C(t,e,n,r):t.strategy===B||o===i?(a(t,(U<<1)+(r?1:0),3),y(t,it,ot)):(a(t,(P<<1)+(r?1:0),3),S(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),y(t,t.dyn_ltree,t.dyn_dtree)),d(t),r&&p(t)}function L(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(st[n]+N+1)]++,t.dyn_dtree[2*i(e)]++),t.last_lit===t.lit_bufsize-1}var R=n(98),B=4,T=0,M=1,O=2,D=0,U=1,P=2,F=3,z=258,W=29,N=256,j=N+1+W,H=30,Z=19,G=2*j+1,q=15,Y=16,K=7,X=256,V=16,$=17,J=18,Q=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],tt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],et=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],nt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],rt=512,it=new Array(2*(j+2));r(it);var ot=new Array(2*H);r(ot);var at=new Array(rt);r(at);var st=new Array(z-F+1);r(st);var ht=new Array(W);r(ht);var ut=new Array(H);r(ut);var lt,ct,ft,dt=function(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length},pt=function(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e},gt=!1;e._tr_init=E,e._tr_stored_block=C,e._tr_flush_block=A,e._tr_tally=L,e._tr_align=I},function(t,e,n){"use strict";function r(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){a=n>2e3?2e3:n,n-=a;do i=i+e[r++]|0,o=o+i|0;while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=r},function(t,e,n){"use strict";function r(){for(var t,e=[],n=0;256>n;n++){t=n;for(var r=0;8>r;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}function i(t,e,n,r){var i=o,a=r+n;t=-1^t;for(var s=r;a>s;s++)t=t>>>8^i[255&(t^e[s])];return-1^t}var o=r();t.exports=i},function(t,e,n){"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var i={arraySet:function(t,e,n,r,i){if(e.subarray&&t.subarray)return void t.set(e.subarray(n,n+r),i);for(var o=0;r>o;o++)t[i+o]=e[n+o]},flattenChunks:function(t){var e,n,r,i,o,a;for(r=0,e=0,n=t.length;n>e;e++)r+=t[e].length;for(a=new Uint8Array(r),i=0,e=0,n=t.length;n>e;e++)o=t[e],a.set(o,i),i+=o.length;return a}},o={arraySet:function(t,e,n,r,i){for(var o=0;r>o;o++)t[i+o]=e[n+o]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,i)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,o))},e.setTyped(r)},function(t,e,n){(function(){var e;e=function(){function t(t){var e;this.file=t,e=this.file.directory.tables[this.tag],this.exists=!!e,e&&(this.offset=e.offset,this.length=e.length,this.parse(this.file.contents))}return t.prototype.parse=function(){},t.prototype.encode=function(){},t.prototype.raw=function(){return this.exists?(this.file.contents.pos=this.offset,this.file.contents.read(this.length)):null},t}(),t.exports=e}).call(this)},function(t,e,n){var r,i=[].slice;r=function(){function t(t){var e,n;null==t&&(t={}),this.data=t.data||[],this.highStart=null!=(e=t.highStart)?e:0,this.errorValue=null!=(n=t.errorValue)?n:-1}var e,n,r,o,a,s,h,u,l,c,f,d,p,g,v,m;return d=11,g=5,p=d-g,f=65536>>d,a=1<<p,h=a-1,u=2,e=1<<g,r=e-1,c=65536>>g,l=1024>>g,s=c+l,m=s,v=32,o=m+v,n=1<<u,t.prototype.get=function(t){var e;return 0>t||t>1114111?this.errorValue:55296>t||t>56319&&65535>=t?(e=(this.data[t>>g]<<u)+(t&r),this.data[e]):65535>=t?(e=(this.data[c+(t-55296>>g)]<<u)+(t&r),this.data[e]):t<this.highStart?(e=this.data[o-f+(t>>d)],e=this.data[e+(t>>g&h)],e=(e<<u)+(t&r),this.data[e]):this.data[this.data.length-n]},t.prototype.toJSON=function(){var t;return t={data:i.call(this.data),highStart:this.highStart,errorValue:this.errorValue}},t}(),t.exports=r},function(t,e,n){function r(t){if(t&&!h(t))throw new Error("Unknown encoding: "+t)}function i(t){return t.toString(this.encoding)}function o(t){this.charReceived=t.length%2,this.charLength=this.charReceived?2:0}function a(t){this.charReceived=t.length%3,this.charLength=this.charReceived?3:0}var s=n(4).Buffer,h=s.isEncoding||function(t){switch(t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},u=e.StringDecoder=function(t){switch(this.encoding=(t||"utf8").toLowerCase().replace(/[-_]/,""),r(t),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};u.prototype.write=function(t){for(var e="";this.charLength;){var n=t.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived<this.charLength)return"";t=t.slice(n,t.length),e=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var r=e.charCodeAt(e.length-1);if(!(r>=55296&&56319>=r)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,r=e.charCodeAt(i);if(r>=55296&&56319>=r){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},u.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var n=t[t.length-e];if(1==e&&n>>5==6){this.charLength=2;break}if(2>=e&&n>>4==14){this.charLength=3;break}if(3>=e&&n>>3==30){this.charLength=4;break}}this.charReceived=e},u.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;e+=r.slice(0,n).toString(i)}return e}},function(t,e,n){"use strict";var r=30,i=12;t.exports=function(t,e){var n,o,a,s,h,u,l,c,f,d,p,g,v,m,y,w,_,b,x,S,k,E,C,I,A;n=t.state,o=t.next_in,I=t.input,a=o+(t.avail_in-5),s=t.next_out,A=t.output,h=s-(e-t.avail_out),u=s+(t.avail_out-257),l=n.dmax,c=n.wsize,f=n.whave,d=n.wnext,p=n.window,g=n.hold,v=n.bits,m=n.lencode,y=n.distcode,w=(1<<n.lenbits)-1,_=(1<<n.distbits)-1;t:do{15>v&&(g+=I[o++]<<v,v+=8,g+=I[o++]<<v,v+=8),b=m[g&w];e:for(;;){if(x=b>>>24,g>>>=x,v-=x,x=b>>>16&255,0===x)A[s++]=65535&b;else{if(!(16&x)){if(0===(64&x)){b=m[(65535&b)+(g&(1<<x)-1)];continue e}if(32&x){n.mode=i;break t}t.msg="invalid literal/length code",n.mode=r;break t}S=65535&b,x&=15,x&&(x>v&&(g+=I[o++]<<v,v+=8),S+=g&(1<<x)-1,g>>>=x,v-=x),15>v&&(g+=I[o++]<<v,v+=8,g+=I[o++]<<v,v+=8),b=y[g&_];n:for(;;){if(x=b>>>24,g>>>=x,v-=x,x=b>>>16&255,!(16&x)){if(0===(64&x)){b=y[(65535&b)+(g&(1<<x)-1)];continue n}t.msg="invalid distance code",n.mode=r;break t}if(k=65535&b,x&=15,x>v&&(g+=I[o++]<<v,v+=8,x>v&&(g+=I[o++]<<v,v+=8)),k+=g&(1<<x)-1,k>l){t.msg="invalid distance too far back",n.mode=r;break t}if(g>>>=x,v-=x,x=s-h,k>x){if(x=k-x,x>f&&n.sane){t.msg="invalid distance too far back",n.mode=r;break t}if(E=0,C=p,0===d){if(E+=c-x,S>x){S-=x;do A[s++]=p[E++];while(--x);E=s-k,C=A}}else if(x>d){if(E+=c+d-x,x-=d,S>x){S-=x;do A[s++]=p[E++];while(--x);if(E=0,S>d){x=d,S-=x;do A[s++]=p[E++];while(--x);E=s-k,C=A}}}else if(E+=d-x,S>x){S-=x;do A[s++]=p[E++];while(--x);E=s-k,C=A}for(;S>2;)A[s++]=C[E++],A[s++]=C[E++],A[s++]=C[E++],S-=3;S&&(A[s++]=C[E++],S>1&&(A[s++]=C[E++]))}else{E=s-k;do A[s++]=A[E++],A[s++]=A[E++],A[s++]=A[E++],S-=3;while(S>2);S&&(A[s++]=A[E++],S>1&&(A[s++]=A[E++]))}break}}break}}while(a>o&&u>s);S=v>>3,o-=S,v-=S<<3,g&=(1<<v)-1,t.next_in=o,t.next_out=s,t.avail_in=a>o?5+(a-o):5-(o-a),t.avail_out=u>s?257+(u-s):257-(s-u),n.hold=g,n.bits=v}},function(t,e,n){"use strict";var r=n(98),i=15,o=852,a=592,s=0,h=1,u=2,l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],c=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],f=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],d=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]; + +t.exports=function(t,e,n,p,g,v,m,y){var w,_,b,x,S,k,E,C,I,A=y.bits,L=0,R=0,B=0,T=0,M=0,O=0,D=0,U=0,P=0,F=0,z=null,W=0,N=new r.Buf16(i+1),j=new r.Buf16(i+1),H=null,Z=0;for(L=0;i>=L;L++)N[L]=0;for(R=0;p>R;R++)N[e[n+R]]++;for(M=A,T=i;T>=1&&0===N[T];T--);if(M>T&&(M=T),0===T)return g[v++]=20971520,g[v++]=20971520,y.bits=1,0;for(B=1;T>B&&0===N[B];B++);for(B>M&&(M=B),U=1,L=1;i>=L;L++)if(U<<=1,U-=N[L],0>U)return-1;if(U>0&&(t===s||1!==T))return-1;for(j[1]=0,L=1;i>L;L++)j[L+1]=j[L]+N[L];for(R=0;p>R;R++)0!==e[n+R]&&(m[j[e[n+R]]++]=R);if(t===s?(z=H=m,k=19):t===h?(z=l,W-=257,H=c,Z-=257,k=256):(z=f,H=d,k=-1),F=0,R=0,L=B,S=v,O=M,D=0,b=-1,P=1<<M,x=P-1,t===h&&P>o||t===u&&P>a)return 1;for(var G=0;;){G++,E=L-D,m[R]<k?(C=0,I=m[R]):m[R]>k?(C=H[Z+m[R]],I=z[W+m[R]]):(C=96,I=0),w=1<<L-D,_=1<<O,B=_;do _-=w,g[S+(F>>D)+_]=E<<24|C<<16|I|0;while(0!==_);for(w=1<<L-1;F&w;)w>>=1;if(0!==w?(F&=w-1,F+=w):F=0,R++,0===--N[L]){if(L===T)break;L=e[n+m[R]]}if(L>M&&(F&x)!==b){for(0===D&&(D=M),S+=B,O=L-D,U=1<<O;T>O+D&&(U-=N[O+D],!(0>=U));)O++,U<<=1;if(P+=1<<O,t===h&&P>o||t===u&&P>a)return 1;b=F&x,g[b]=M<<24|O<<16|S-v|0}}return 0!==F&&(g[S+F]=L-D<<24|64<<16|0),y.bits=M,0}},function(t,e,n){t.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(t){function n(t){return Array.isArray(t)}function r(t){return"boolean"==typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function h(t){return"symbol"==typeof t}function u(t){return void 0===t}function l(t){return c(t)&&"[object RegExp]"===m(t)}function c(t){return"object"==typeof t&&null!==t}function f(t){return c(t)&&"[object Date]"===m(t)}function d(t){return c(t)&&("[object Error]"===m(t)||t instanceof Error)}function p(t){return"function"==typeof t}function g(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function v(e){return t.isBuffer(e)}function m(t){return Object.prototype.toString.call(t)}e.isArray=n,e.isBoolean=r,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=h,e.isUndefined=u,e.isRegExp=l,e.isObject=c,e.isDate=f,e.isError=d,e.isFunction=p,e.isPrimitive=g,e.isBuffer=v}).call(e,n(4).Buffer)},function(t,e,n){t.exports={data:[1961,1969,1977,1985,2025,2033,2041,2049,2057,2065,2073,2081,2089,2097,2105,2113,2121,2129,2137,2145,2153,2161,2169,2177,2185,2193,2201,2209,2217,2225,2233,2241,2249,2257,2265,2273,2281,2289,2297,2305,2313,2321,2329,2337,2345,2353,2361,2369,2377,2385,2393,2401,2409,2417,2425,2433,2441,2449,2457,2465,2473,2481,2489,2497,2505,2513,2521,2529,2529,2537,2009,2545,2553,2561,2569,2577,2585,2593,2601,2609,2617,2625,2633,2641,2649,2657,2665,2673,2681,2689,2697,2705,2713,2721,2729,2737,2745,2753,2761,2769,2777,2785,2793,2801,2809,2817,2825,2833,2841,2849,2857,2865,2873,2881,2889,2009,2897,2905,2913,2009,2921,2929,2937,2945,2953,2961,2969,2009,2977,2977,2985,2993,3001,3009,3009,3009,3017,3017,3017,3025,3025,3033,3041,3041,3049,3049,3049,3049,3049,3049,3049,3049,3049,3049,3057,3065,3073,3073,3073,3081,3089,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3097,3105,3113,3113,3121,3129,3137,3145,3153,3161,3161,3169,3177,3185,3193,3193,3193,3193,3201,3209,3209,3217,3225,3233,3241,3241,3241,3249,3257,3265,3273,3273,3281,3289,3297,2009,2009,3305,3313,3321,3329,3337,3345,3353,3361,3369,3377,3385,3393,2009,2009,3401,3409,3417,3417,3417,3417,3417,3417,3425,3425,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3433,3441,3449,3457,3465,3473,3481,3489,3497,3505,3513,3521,3529,3537,3545,3553,3561,3569,3577,3585,3593,3601,3609,3617,3625,3625,3633,3641,3649,3649,3649,3649,3649,3657,3665,3665,3673,3681,3681,3681,3681,3689,3697,3697,3705,3713,3721,3729,3737,3745,3753,3761,3769,3777,3785,3793,3801,3809,3817,3825,3833,3841,3849,3857,3865,3873,3881,3881,3881,3881,3881,3881,3881,3881,3881,3881,3881,3881,3889,3897,3905,3913,3921,3921,3921,3921,3921,3921,3921,3921,3921,3921,3929,2009,2009,2009,2009,2009,3937,3937,3937,3937,3937,3937,3937,3945,3953,3953,3953,3961,3969,3969,3977,3985,3993,4001,2009,2009,4009,4009,4009,4009,4009,4009,4009,4009,4009,4009,4009,4009,4017,4025,4033,4041,4049,4057,4065,4073,4081,4081,4081,4081,4081,4081,4081,4089,4097,4097,4105,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4113,4121,4121,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4129,4137,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4145,4153,4161,4169,4169,4169,4169,4169,4169,4169,4169,4177,4185,4193,4201,4209,4217,4217,4225,4233,4233,4233,4233,4233,4233,4233,4233,4241,4249,4257,4265,4273,4281,4289,4297,4305,4313,4321,4329,4337,4345,4353,4361,4361,4369,4377,4385,4385,4385,4385,4393,4401,4409,4409,4409,4409,4409,4409,4417,4425,4433,4441,4449,4457,4465,4473,4481,4489,4497,4505,4513,4521,4529,4537,4545,4553,4561,4569,4577,4585,4593,4601,4609,4617,4625,4633,4641,4649,4657,4665,4673,4681,4689,4697,4705,4713,4721,4729,4737,4745,4753,4761,4769,4777,4785,4793,4801,4809,4817,4825,4833,4841,4849,4857,4865,4873,4881,4889,4897,4905,4913,4921,4929,4937,4945,4953,4961,4969,4977,4985,4993,5001,5009,5017,5025,5033,5041,5049,5057,5065,5073,5081,5089,5097,5105,5113,5121,5129,5137,5145,5153,5161,5169,5177,5185,5193,5201,5209,5217,5225,5233,5241,5249,5257,5265,5273,5281,5289,5297,5305,5313,5321,5329,5337,5345,5353,5361,5369,5377,5385,5393,5401,5409,5417,5425,5433,5441,5449,5457,5465,5473,5481,5489,5497,5505,5513,5521,5529,5537,5545,5553,5561,5569,5577,5585,5593,5601,5609,5617,5625,5633,5641,5649,5657,5665,5673,5681,5689,5697,5705,5713,5721,5729,5737,5745,5753,5761,5769,5777,5785,5793,5801,5809,5817,5825,5833,5841,5849,5857,5865,5873,5881,5889,5897,5905,5913,5921,5929,5937,5945,5953,5961,5969,5977,5985,5993,6001,6009,6017,6025,6033,6041,6049,6057,6065,6073,6081,6089,6097,6105,6113,6121,6129,6137,6145,6153,6161,6169,6177,6185,6193,6201,6209,6217,6225,6233,6241,6249,6257,6265,6273,6281,6289,6297,6305,6313,6321,6329,6337,6345,6353,6361,6369,6377,6385,6393,6401,6409,6417,6425,6433,6441,6449,6457,6465,6473,6481,6489,6497,6505,6513,6521,6529,6537,6545,6553,6561,6569,6577,6585,6593,6601,6609,6617,6625,6633,6641,6649,6657,6665,6673,6681,6689,6697,6705,6713,6721,6729,6737,6745,6753,6761,6769,6777,6785,6793,6801,6809,6817,6825,6833,6841,6849,6857,6865,6873,6881,6889,6897,6905,6913,6921,6929,6937,6945,6953,6961,6969,6977,6985,6993,7001,7009,7017,7025,7033,7041,7049,7057,7065,7073,7081,7089,7097,7105,7113,7121,7129,7137,7145,7153,7161,7169,7177,7185,7193,7201,7209,7217,7225,7233,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7249,7257,7265,7273,7281,7281,7281,7281,7281,7281,7281,7281,7281,7281,7281,7281,7281,7281,7289,7297,7305,7305,7305,7305,7313,7321,7329,7337,7345,7353,7353,7353,7361,7369,7377,7385,7393,7401,7409,7417,7425,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7241,7972,7972,8100,8164,8228,8292,8356,8420,8484,8548,8612,8676,8740,8804,8868,8932,8996,9060,9124,9188,9252,9316,9380,9444,9508,9572,9636,9700,9764,9828,9892,9956,2593,2657,2721,2529,2785,2529,2849,2913,2977,3041,3105,3169,3233,3297,2529,2529,2529,2529,2529,2529,2529,2529,3361,2529,2529,2529,3425,2529,2529,3489,3553,2529,3617,3681,3745,3809,3873,3937,4001,4065,4129,4193,4257,4321,4385,4449,4513,4577,4641,4705,4769,4833,4897,4961,5025,5089,5153,5217,5281,5345,5409,5473,5537,5601,5665,5729,5793,5857,5921,5985,6049,6113,6177,6241,6305,6369,6433,6497,6561,6625,6689,6753,6817,6881,6945,7009,7073,7137,7201,7265,7329,7393,7457,7521,7585,7649,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,2529,7713,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7433,7433,7433,7433,7433,7433,7433,7441,7449,7457,7457,7457,7457,7457,7457,7465,2009,2009,2009,2009,7473,7473,7473,7473,7473,7473,7473,7473,7481,7489,7497,7505,7505,7505,7505,7505,7513,7521,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7529,7529,7537,7545,7545,7545,7545,7545,7553,7561,7561,7561,7561,7561,7561,7561,7569,7577,7585,7593,7593,7593,7593,7593,7593,7601,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7617,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7625,7633,7641,7649,7657,7665,7673,7681,7689,7697,7705,2009,7713,7721,7729,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7737,7745,7753,2009,2009,2009,2009,2009,2009,2009,2009,2009,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7761,7769,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7777,7785,7793,7801,7809,7809,7809,7809,7809,7809,7817,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7825,7833,7841,7849,2009,2009,2009,7857,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7865,7865,7865,7865,7865,7865,7865,7865,7865,7865,7865,7873,7881,7889,7897,7897,7897,7897,7905,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7913,7921,7929,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,7937,7937,7937,7937,7937,7937,7937,7945,2009,2009,2009,2009,2009,2009,2009,2009,7953,7953,7953,7953,7953,7953,7953,2009,7961,7969,7977,7985,7993,2009,2009,8001,8009,8009,8009,8009,8009,8009,8009,8009,8009,8009,8009,8009,8009,8017,8025,8025,8025,8025,8025,8025,8025,8033,8041,8049,8057,8065,8073,8081,8081,8081,8081,8081,8081,8081,8081,8081,8081,8081,8089,2009,8097,8097,8097,8105,2009,2009,2009,2009,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8113,8121,8129,8137,8137,8137,8137,8137,8137,8137,8137,8137,8137,8137,8137,8137,8137,8145,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,67496,67496,67496,21,21,21,21,21,21,21,21,21,17,34,30,30,33,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,38,6,3,12,9,10,12,3,0,2,12,9,8,16,8,7,11,11,11,11,11,11,11,11,11,11,8,8,12,12,12,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,9,2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,17,1,12,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,21,21,35,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,4,0,10,9,9,9,12,29,29,12,29,3,12,17,12,12,10,9,29,29,18,12,29,29,29,29,29,3,29,29,29,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,18,29,29,29,18,29,12,12,29,12,12,12,12,12,12,12,29,29,29,29,12,29,12,18,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,4,21,21,21,21,21,21,21,21,21,21,21,21,4,4,4,4,4,4,4,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,8,17,39,39,39,39,9,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,17,21,12,21,21,12,21,21,6,21,39,39,39,39,39,39,39,39,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,10,10,8,8,12,12,21,21,21,21,21,21,21,21,21,21,21,6,6,6,6,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,11,11,11,11,11,11,11,11,11,11,10,11,11,12,12,12,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,6,12,21,21,21,21,21,21,21,12,12,21,21,21,21,21,21,12,12,21,21,12,21,21,21,21,12,12,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,12,39,39,39,39,39,39,39,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,12,12,12,12,8,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,12,21,21,21,21,21,21,21,21,21,12,21,21,21,12,21,21,21,21,21,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,21,21,17,17,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,21,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,39,39,39,39,39,39,39,39,21,39,39,39,39,12,12,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,12,12,10,10,12,12,12,12,12,10,12,9,39,39,39,39,39,21,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,12,12,12,12,12,12,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,21,21,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,12,9,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,12,12,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,12,39,39,39,39,39,39,21,39,39,39,39,39,39,39,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,9,12,39,39,39,39,39,39,21,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,12,12,12,12,12,12,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,39,39,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,39,12,12,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,39,39,39,39,39,39,39,39,21,39,39,39,39,39,39,39,39,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,39,39,39,10,12,12,12,12,12,12,39,39,21,21,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,39,39,39,39,39,39,39,39,39,39,39,39,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,39,39,39,39,9,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,12,11,11,11,11,11,11,11,11,11,11,17,17,39,39,39,39,39,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,39,39,11,11,11,11,11,11,11,11,11,11,39,39,36,36,36,36,12,18,18,18,18,12,18,18,4,18,18,17,4,6,6,6,6,6,4,12,6,12,12,12,21,21,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,17,21,12,21,12,21,0,1,0,1,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,17,21,21,21,21,21,17,21,21,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,17,17,12,12,12,12,12,12,21,12,12,12,12,12,12,12,12,12,18,18,17,18,12,12,12,12,12,4,4,39,39,39,39,39,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,11,11,11,11,11,11,11,11,11,11,17,17,12,12,12,12,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,11,11,11,11,11,11,11,11,11,11,36,36,36,36,36,36,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,21,21,21,12,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,17,17,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,21,21,39,39,39,39,39,39,39,39,39,39,39,39,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,17,17,5,36,17,12,17,9,36,36,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,6,6,17,17,18,12,6,6,12,21,21,21,4,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,12,39,39,39,6,6,11,11,11,11,11,11,11,11,11,11,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,36,36,36,36,36,36,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,39,39,12,12,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,39,39,21,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,36,36,36,36,36,36,36,36,36,36,36,36,36,36,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,39,39,39,39,11,11,11,11,11,11,11,11,11,11,17,17,12,17,17,17,17,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,39,39,39,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,17,17,17,17,17,11,11,11,11,11,11,11,11,11,11,39,39,39,12,12,12,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,21,21,21,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,21,12,12,12,12,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,18,12,39,17,17,17,17,17,17,17,4,17,17,17,20,21,21,21,21,17,4,17,17,19,29,29,12,3,3,0,3,3,3,0,3,29,29,12,12,15,15,15,17,30,30,21,21,21,21,21,4,10,10,10,10,10,10,10,10,12,3,3,29,5,5,12,12,12,12,12,12,8,0,1,5,5,5,12,12,12,12,12,12,12,12,12,12,12,12,17,12,17,17,17,17,12,17,17,17,22,12,12,12,12,39,39,39,39,39,21,21,21,21,21,21,12,12,39,39,29,12,12,12,12,12,12,12,12,0,1,29,12,29,29,29,29,12,12,12,12,12,12,12,12,0,1,39,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,9,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,10,12,29,12,12,12,10,12,12,12,12,12,12,12,12,12,29,12,12,9,12,12,12,12,12,12,12,12,12,12,29,29,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,12,12,12,12,12,29,12,12,29,12,29,29,29,29,29,29,29,29,29,29,29,29,12,12,12,12,29,29,29,29,29,29,29,29,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,29,29,12,12,12,29,29,12,12,29,12,12,12,29,12,29,9,9,12,29,12,12,12,12,29,12,12,29,29,29,29,12,12,29,12,29,12,29,29,29,29,29,29,12,29,12,12,12,12,12,29,29,29,29,12,12,12,12,29,29,12,12,12,12,12,12,12,12,12,12,29,12,12,12,29,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,12,12,29,29,29,29,12,12,29,29,12,12,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,12,12,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,12,12,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,12,12,12,12,12,12,12,12,12,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,29,29,29,29,12,12,12,12,12,12,12,12,12,12,29,29,12,29,29,29,29,29,29,29,12,12,12,12,12,12,12,12,29,29,12,12,29,29,12,12,12,12,29,29,12,12,29,29,12,12,12,12,29,29,29,12,12,29,12,12,29,29,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,29,29,12,12,12,12,12,12,12,12,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,12,29,29,12,12,29,12,12,12,12,29,29,12,12,12,12,14,14,29,29,14,12,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,12,12,12,12,29,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,12,29,29,29,12,29,14,29,29,12,29,29,12,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,29,29,29,29,14,12,14,14,14,29,14,14,29,29,29,14,14,29,29,14,29,29,14,14,14,12,29,12,12,12,12,29,29,14,29,29,29,29,29,29,14,14,14,14,14,29,14,14,14,14,29,29,14,14,14,14,14,14,14,14,12,12,12,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,12,12,12,3,3,3,3,12,12,12,6,6,12,12,12,12,0,1,0,1,0,1,0,1,0,1,0,1,0,1,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,0,1,0,1,0,1,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,29,29,29,29,29,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,12,12,39,39,39,39,39,6,17,17,17,12,6,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,3,3,3,3,3,3,3,3,3,3,3,3,3,3,17,17,17,17,17,17,17,17,12,17,0,17,12,12,3,3,12,12,3,3,0,1,0,1,0,1,0,1,17,17,17,17,6,12,17,17,12,17,17,12,12,12,12,12,19,19,39,39,39,39,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,1,1,14,14,5,14,14,0,1,0,1,0,1,0,1,0,1,14,14,0,1,0,1,0,1,0,1,5,0,1,1,14,14,14,14,14,14,14,14,14,14,21,21,21,21,21,21,14,14,14,14,14,14,14,14,14,14,14,5,5,14,14,14,39,32,14,32,14,32,14,32,14,32,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,32,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,32,14,32,14,32,14,14,14,14,14,14,32,14,14,14,14,14,14,32,32,39,39,21,21,5,5,5,5,14,5,32,14,32,14,32,14,32,14,32,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,32,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,32,14,32,14,32,14,14,14,14,14,14,32,14,14,14,14,14,14,32,32,14,14,14,14,5,32,5,5,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,39,39,39,39,39,39,39,39,39,39,39,39,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,29,29,29,29,29,29,29,29,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,5,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,6,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,12,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,12,17,17,17,17,17,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,12,12,12,21,12,12,12,12,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,18,18,6,6,39,39,39,39,39,39,39,39,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,17,17,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,39,39,39,39,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,39,39,12,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,39,39,39,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,17,17,17,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,12,12,12,21,12,12,12,12,12,12,12,12,21,21,39,39,11,11,11,11,11,11,11,11,11,11,39,39,12,17,17,17,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,17,17,12,12,12,21,21,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,17,21,21,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,39,39,39,39,39,39,39,39,39,39,39,39,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,39,39,39,39,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,39,39,39,39,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,13,21,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,12,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,8,1,1,8,8,6,6,0,1,15,39,39,39,39,39,39,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,14,14,14,14,14,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,14,14,0,1,14,14,14,14,14,14,14,1,14,1,39,5,5,6,6,14,0,1,0,1,0,1,14,14,14,14,14,14,14,14,14,14,9,10,14,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,22,39,6,14,14,9,10,14,14,0,1,14,14,1,14,1,14,14,14,14,14,14,14,14,14,14,14,5,5,14,14,14,6,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14,1,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14,1,14,0,1,1,0,1,1,5,12,32,32,32,32,32,32,32,32,32,32,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,5,5,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,10,9,14,14,14,9,9,39,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,21,21,21,31,29,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,17,17,17,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,17,17,17,17,17,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,12,12,12,17,17,17,17,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,11,11,11,11,11,11,11,11,11,11,17,17,17,17,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,17,17,12,17,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,11,11,11,11,11,11,11,11,11,11,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,39,17,17,17,17,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,12,12,0,1,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,12,12,12,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,39,39,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,39,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,12,12,39,39,39,39,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,39,39,39,39,39,39,39,39,39,39,39,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,12,14,12,14,14,14,14,14,14,14,14,14,14,12,14,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,39,39,39,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,14,14,14,14,14,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,39,39,39,39,39,39,39,39,39,39,39,39,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,39,39,39,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39], +highStart:919552,errorValue:0}},function(t,e,n){t.exports=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)}}]); +//# sourceMappingURL=pdfmake.min.js.map \ No newline at end of file diff --git a/plugins/datatables/responsive.bootstrap.min.css b/plugins/datatables/responsive.bootstrap.min.css new file mode 100644 index 0000000..60e6c1b --- /dev/null +++ b/plugins/datatables/responsive.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th:first-child:before{top:8px;left:4px;height:16px;width:16px;display:block;position:absolute;color:white;border:2px solid white;border-radius:16px;box-shadow:0 0 3px #444;box-sizing:content-box;font-family:'Courier New', Courier, monospace;text-indent:4px;line-height:16px;content:'+';background-color:#337ab7}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed>tbody>tr.child td:before{display:none}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:16px;box-shadow:0 0 3px #444;box-sizing:content-box;font-family:'Courier New', Courier, monospace;text-indent:4px;line-height:16px;content:'+';background-color:#337ab7}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}} diff --git a/plugins/datatables/responsive.bootstrap.min.js b/plugins/datatables/responsive.bootstrap.min.js new file mode 100644 index 0000000..c1e6bd4 --- /dev/null +++ b/plugins/datatables/responsive.bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + Bootstrap integration for DataTables' Responsive + ©2015 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,f=b.modal;b.modal=function(a){return function(b, +d,e){c.fn.modal?d||(d=c('<div class="modal fade" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>'),a&&a.header&&d.find("div.modal-header").append('<h4 class="modal-title">'+a.header(b)+"</h4>"),d.find("div.modal-body").append(e()),d.appendTo("body").modal()):f(b,d,e)}}; +return a.Responsive}); diff --git a/plugins/datatables/scroller.bootstrap.min.css b/plugins/datatables/scroller.bootstrap.min.css new file mode 100644 index 0000000..3ea8555 --- /dev/null +++ b/plugins/datatables/scroller.bootstrap.min.css @@ -0,0 +1 @@ +div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS tbody tr.even{background-color:white}div.DTS div.DTS_Loading{z-index:1}div.DTS div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.DTS div.dataTables_scrollBody table{z-index:2}div.DTS div.dataTables_paginate{display:none} diff --git a/plugins/datatables/vfs_fonts.js b/plugins/datatables/vfs_fonts.js new file mode 100644 index 0000000..f5fd30a --- /dev/null +++ b/plugins/datatables/vfs_fonts.js @@ -0,0 +1 @@ +window.pdfMake = window.pdfMake || {}; window.pdfMake.vfs = {"LICENSE.txt":"DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNA0KICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLw0KDQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04NCg0KICAgMS4gRGVmaW5pdGlvbnMuDQoNCiAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sDQogICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4NCg0KICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkNCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4NCg0KICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbA0KICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbg0KICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwNCiAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQ0KICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3INCiAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQ0KICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4NCg0KICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQ0KICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4NCg0KICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsDQogICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uDQogICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLg0KDQogICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbA0KICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dA0KICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLA0KICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLg0KDQogICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcg0KICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQ0KICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrDQogICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLg0KDQogICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0DQogICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlDQogICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zDQogICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3Nlcw0KICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluDQogICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsDQogICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLg0KDQogICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZw0KICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucw0KICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5DQogICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyDQogICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YNCiAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIg0KICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudA0KICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8NCiAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsDQogICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQ0KICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0DQogICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQ0KICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iDQoNCiAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5DQogICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQNCiAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLg0KDQogICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCiAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwNCiAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlDQogICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwNCiAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQ0KICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4NCg0KICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQogICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsDQogICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQ0KICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsDQogICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywNCiAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlDQogICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcg0KICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQ0KICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UNCiAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhDQogICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrDQogICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdA0KICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcw0KICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlDQogICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuDQoNCiAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlDQogICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQNCiAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91DQogICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCg0KICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3INCiAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZA0KDQogICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzDQogICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kDQoNCiAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3Jrcw0KICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQNCiAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLA0KICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YNCiAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kDQoNCiAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cw0KICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QNCiAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQNCiAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QNCiAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUNCiAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZA0KICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3INCiAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwNCiAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kDQogICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzDQogICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZA0KICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uDQogICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUNCiAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQNCiAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQNCiAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuDQoNCiAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZA0KICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucw0KICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcg0KICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsDQogICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgNCiAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuDQoNCiAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwNCiAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaw0KICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCiAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLg0KICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQ0KICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQNCiAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4NCg0KICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQ0KICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLA0KICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlDQogICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4NCg0KICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yDQogICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoDQogICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywNCiAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcg0KICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMNCiAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEENCiAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQ0KICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55DQogICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuDQoNCiAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LA0KICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsDQogICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQ0KICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUNCiAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwNCiAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQ0KICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQ0KICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLA0KICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwNCiAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3INCiAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4NCg0KICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZw0KICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwNCiAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksDQogICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcw0KICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkNCiAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmDQogICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksDQogICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkNCiAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24NCiAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5Lg0KDQogICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMNCg0KICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLg0KDQogICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZw0KICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIg0KICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUNCiAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlDQogICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGENCiAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUNCiAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcg0KICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLg0KDQogICBDb3B5cmlnaHQgW3l5eXldIFtuYW1lIG9mIGNvcHlyaWdodCBvd25lcl0NCg0KICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQogICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCg0KICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KDQogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQogICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQogICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCg==","Roboto-Italic.ttf":"AAEAAAAOAIAAAwBgR0RFRgsuCy8AATmYAAAASEdQT1OC3T4oAAE54AAAkPhHU1VCeolvLwABytgAAANsT1MvMrivKS4AAAFoAAAAYFZETVhu6nZPAAASPAAABeBjbWFwg/CFnwAAGBwAAA7yZ2x5ZqugYnAAACcQAADhjGhlYWQVl+THAAAA7AAAADZoaGVhK3TmIgAAASQAAAAkaG10eH7tDo8AAAHIAAAQdGxvY2H/CzayAAEInAAACDxtYXhwBDwA9gAAAUgAAAAgbmFtZW3ArcAAARDYAAAEb3Bvc3QJy9dbAAEVSAAAJE0AAQAAAAEAAERFNtJfDzz1AAkIAAAAAADE8BEuAAAAAM2Cslz6t9PdKU8IYgACAAkAAgAAAAAAAAABAAAHbP4MAAAJA/q32vUpTwABAAAAAAAAAAAAAAAAAAAEHQABAAAEHQCWABYAXgAFAAEAAAAAAAAAAAAAAAAAAwABAAMEQQGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAAAAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAHB5cnMAAQAA//0GAP4AAGYHmgIAIAABn08BAAAEOgWwAAAAIAACAeMAAAAAAAAB4wAAAeMAAAJ1AMUErABDBDoARwV7ANMErAAbAVcAxgKBAFcCiP+MA0AAoQRCAHIBgf+YAhUAPgIGAEYDH/+mBDoAUAQ6AXAEOgAtBDoANQQ6ACcEOgBoBDoAZwQ6ANgEOgA1BDoAfwHpAEYB8f/GA9EAZQQ6AI4D7gBWA5IAwga0ABME/v/VBMsAWATBAGIE8ABYBGIAWARfAFgFJgBoBVgAWAIkAGIEJQAPBH4APgQgAFgGkgBYBVkAWAUcAF4EzQBYBTsAXgT4AFcEjQBDBHoA7AUSAGcE3QDNBpUA7AS9//wEpgDuBDIAIAIKABIDHAD3Agr/lwMnAHwDa/+WAl0A8wQgADoERAA1A/wARwREAEQD+QBHApsAigRDADcERAA1AegARAH2/x0D2QA2AegARAaLADUERAA1BEQARgRE/+IERABEAqQANQPuADsCaQBvBEQAWgPIAJcFrACyA8j/6QPI/7wDyAAIApEAUQHhADYCkf+pBRgAggHh/+sEHQBXBGAALQVVACYEjgBxAdkAAQSc/8gDvwEnBd4AUgNeAMIDjABwBCsApgXfAFIDewEDAtABBQQGAE4DMQCnAzgAqgJoAPsERP/rA7EAhwH/AMMB4//OAg8BBANtAM8DiwA1BdUBDgY7ARsGgQC6A7f/8wcF/54EBABIBR0AJgRvAEgEeQAwBlIABARnACYESgBqBEUATARY/+sFRABVAegAPgQxAD4D8wBJAhEARwUwAEYERAA1BygATwbHAEQB6ABEApb/ZgUjAFkETgBGBToAZwSuAFoB7/8bA/kAPAOWAUgDYgFeAzgBCwINAUECkQEiAhP/twOXAQgCzwEHAnoAHQAK/fIACv5BAAr9WAAK/kYACv1LAAr83AHzAWQD1AFBAgAAwwQuAFcFS//MBR0ATwTs/94ETQAiBVoAWARN//EFXwBXBS8AigUAAB0EPwBABHL/9QPIALMERABBBAsAKQPsAIsERAA1BEYAVgJ5AH4EKv/RA7AAOgR6AHAERP/iBAsASQREAEMD7gC3BBwAWgVNAD8FRABDBisAXQSiAFoD/wCzBeEAZAWfANsFEgBmCAj/3ggTAFcGGgDyBVoAVwS7AEgFqv+WBtP/ygR0ACAFWQBYBU//3gS3AKMF0QBbBX8AVwUnANEHDgBXB0cAVwWrAMkGggBXBLkASAURAIcGrABiBM4ADAQnAEQETgBAAygAPgSQ/5oFvP/DA9IAHgRaAEAEFQBABFv/1QWSAEAEWQBABFoAQAOfAJAFbwBABHkAQAQYAH8GEgBABjoANQSlAIYF2ABABBYAQAQLADMGHgBABCH/1QRFADUEDABRBlj/1QZzAEAERQA1BFoAQAaRAGgFtwBFBBQAPga2AGMFmQA8BIb/2AQF/7wGmAB0BaoAXQZrADoFigA6CHsAYgddAD4D5f/HA5//xgUdAF0ERQBGBL4A6APIALMFHQBPBEUARgaLAGwFtwBIBpIAaAW4AEUE5ABkBAgASgSyAFUACv09AAr9ZAAK/m8ACv6QAAr6twAK+tYEFAA+BMsAVwRD/+IEHwBIA1wANQSXAFcDyQA1BL0ASAQ+AD4GJADzBTQApQdEAFcFVQA1B6kAVwaGADUFjQBlBIkATga/AOgFCwCIBR0A0QQmAJcFHQDQBc8ArgR0ACUEvQBIBBsAPgVYAFcERAA1BSsARgRgADYEYP/tBHIACgMY//sEtQA2BjQANgZzAEAF7wDoBNkAiAQIAM8DywC8B0H/8QYM/+wHfQBOBjUANQSoAGAD3gBGBVIA1wTPAKwFEQBqA9UAAAehAAAD1QAAB6EAAAKSAAAB7wAAAU4AAAQ4AAACEwAAAY8AAADMAAAACgAABS8A6QYSAQADb/9oAY0A1gGNALEBjP+kAY7/YQK7ANYCwgC9Aqn/pAQkAJUESQAQApAArwOPAEcFDABHByYArgJGAIACRgAhA24ACQN0AIsDLgCjBGAALQYmAEkD/gBgBYkA4wOXAGcIOABOBLQBIwTGAHwGUAD+BtwArAcIAKoGbQEeBFkAJgU/ADkEZ/+7BEoAzwSIAGgHqABJAfL/OwQ7AFAD7wCOA/YASAP9AEcDyQBnAjYAjwJ1AJQB7f/mBC0AaAAKAAAHq/+1B6wAhwPfAB8DXAAnBDoAUQLg/+AB6P8dAhH/egF+/8IDbQE3A2wBNwNsATcDyAEPA9ABCwPIAF8DxwEXA20BDQHrAS8Eb//UBDIAPgRJAE0EYAA+BAQAPgPfAD4EhgBKBKsAPgHoAD4DzwALBBwAPgOEAD4FlwA+BMoAPgR/AE0ElQBNBGMAPgQrACMD7gC9BLMAWARwAL4FoQDUBEH/4wQcALUD/v/5BDMASgJNAKwDqQAPA9YAIAQjACUEJQAeA+8ATgOEAL0D7gAjA+cAbQIPAH8DKAAiAzgAJQLTAO0DRwArA0gAQALjAI8DTwAuAzgAZANtAD4DZwC5ApEBKwMbAPUEOgAuBDoAJwQ6AGEESwBkA/n/kQQBAOsEMP/OBDoANQR7AEAERABBBPAAWAQgADcE3gBXBNMAWAPZADYE7ABYA9gANgQ6AH0EMgA+AzgBCwHjAAACFQA+BTMAXgUzAF4EYgBTBHoA7AJpAAcE/v/VBP7/1QT+/9UE/v/VBP7/1QT+/9UE/v/VBMsAYgRiAFgEYgBYBGIAWARiAFgCJABiAiQAYgIkAGICJABiBVkAWAU7AF4FOwBeBTsAXgU7AF4FOwBeBRIAZwUSAGcFEgBnBRIAZwSmAO4EIAA6BCAAOgQgADoEIAA6BCAAOgQgADoEIAA6A/wARwP5AEcD+QBHA/kARwP5AEcB6AA+AegAPgHoAD4B6AA+BEQANQREAEYERABGBEQARgREAEYERABGBEQAWgREAFoERABaBEQAWgPI/7wDyP+8BP7/1QQgADoE/v/VBCAAOgT+/9UEIAA6BMsAYgP8AEcEywBiA/wARwTLAGID/ABHBMsAYgP8AEcFFQBYBNoARARiAFgD+QBHBGIAWAP5AEcEYgBYA/kARwRiAFgD+QBHBGIAWAP5AEcFJgBoBEMANwUmAGgEQwA3BSYAaARDADcFJgBoBEMANwVYAFgERAA1AiQAYgHoAD4CJABiAegAPgIkAGIB6AA+AiT/mgHo/3sCJABiBkkAYgPeAEQEJQAPAe//GwTTAD4D2QA2BCAAWAHoAEQEIABYAej/qAQgAFgCfgBEBCAAWALEAEQFWQBYBEQANQVZAFgERAA1BVkAWAREADUERAA1BTsAXgREAEYFOwBeBEQARgU7AF4ERABGBPgAVwKkADUE+ABXAqT/pgT4AFcCpAA1BJgAQwPuADsEmABDA+4AOwSYAEMD7gA7BJgAQwPuADsEmABDA+4AOwR6AOwCaQBFBHoA7AJpAG8EegDsApEAbwUSAGcERABaBRIAZwREAFoFEgBnBEQAWgUSAGcERABaBRIAZwREAFoFEgBnBEQAWgaVAOwFrACyBKYA7gPI/7wEpgDuBH0AIAPIAAgEfQAgA8gACAR9ACADyAAIBwX/ngZSAAQFHQAmBEUATARgAAsEYAALA+4AvQRv/9QEb//UBG//1ARv/9QEb//UBG//1ARv/9QESQBNBAQAPgQEAD4EBAA+BAQAPgHoAD4B6AA+AegAPgHoAD4EygA+BH8ATQR/AE0EfwBNBH8ATQR/AE0EswBYBLMAWASzAFgEswBYBBwAtQRv/9QEb//UBG//1ARJAE0ESQBNBEkATQRJAE0EYAA+BAQAPgQEAD4EBAA+BAQAPgQEAD4EhgBKBIYASgSGAEoEhgBKBKsAPgHoAD4B6AA+AegAPgHo/3MB6AA+A88ACwQcAD4DhAA+A4QAPgOEAD4DhAA+BMoAPgTKAD4EygA+BH8ATQR/AE0EfwBNBGMAPgRjAD4EYwA+BCsAIwQrACMEKwAjBCsAIwPuAJcD7gC9BLMAWASzAFgEswBYBLMAWASzAFgEswBYBaEA1AQcALUEHAC1A/7/+QP+//kD/v/5CFYAIwT+/9UExgCbBbwAvAKIAMYFTwByBQoASQUUADECeQBsBP7/1QTLAFgEYgBYBH0AIAVYAFgCJABiBNMAPgaSAFgFWQBYBTsAXgTNAFgEegDsBKYA7gS9//wCJABiBKYA7gQ/AEAECwApBEQANQJ5AH4EHABaBDEAPgREAEYERP/rA8gAlwPI/+kCeQB+BBwAWgREAEYEHABaBisAXQRiAFgELgBXBJgAQwIkAGICJABiBCUADwTTAD4E0wA+BLcAowT+/9UEywBYBC4AVwRiAFgFWQBYBpIAWAVYAFgFOwBeBVoAWATNAFgEywBiBHoA7AS9//wEIAA6A/kARwRaAEAERABGBET/4gP8AEcDyP+8A8j/6QP5AEcDKAA+A+4AOwHoAEQB6AA+Afb/HQQVAEADyP+8BpUA7AWsALIGlQDsBawAsgaVAOwFrACyBKYA7gPI/7wBVwDGAnUAxQP6AE8EgwCKAe//GwGNALEGkgBYBosANQT+/9UEIAA6BTsAAQbIAIoHHgCKBGIAWAVZAFgD+QBHBFoAQAUvAIoFRABDBL4A6APIALMIDABGCQMAXgR0ACAD0gAeBMsAYgP8AEcEpgDuA8gAswIkAGIG0//KBbz/wwIkAGIE/v/VBCAAOgT+/9UEIAA6BwX/ngZSAAQEYgBYA/kARwUrAEYD+QA8A/kAPAbT/8oFvP/DBHQAIAPSAB4FWQBYBFoAQAVZAFgEWgBABTsAXgREAEYFHQBdBEUARgUdAF0ERQBGBREAhwQLADMEtwCjA8j/vAS3AKMDyP+8BLcAowPI/7wFJwDRBBgAfwaCAFcF2ABABL3//API/+kERABEBU//3gRb/9UE/v/VBCAAOgT+/9UEIAA6BP7/1QQgADoE/v/VBCAAOgT+/9UEIAA6BP7/1QQgADoE/v/VBCAAOgT+/9UEIAA6BP7/1QQgADoE/v/VBCAAOgT+/9UEIAA6BP7/1QQgADoEYgBYA/kARwRiAFgD+QBHBGIAWAP5AEcEYgBYA/kARwRiAFgD+QBHBGIAWAP5AEcEYgBYA/kARwRiAFgD+QBHAiQAYgHoAD4CJAAXAej/+gU7AF4ERABGBTsAXgREAEYFOwBeBEQARgU7AF4ERABGBTsAXgREAEYFOwBeBEQARgU7AF4ERABGBSMAWQROAEYFIwBZBE4ARgUjAFkETgBGBSMAWQROAEYFIwBZBE4ARgUSAGcERABaBRIAZwREAFoFOgBnBK4AWgU6AGcErgBaBToAZwSuAFoFOgBnBK4AWgU6AGcErgBaBKYA7gPI/7wEpgDuA8j/vASmAO4DyP+8BGIARARiABME0wA+BBUAQAVYAFgEWQBABHoA7AOfAJAEvf/8A8j/6QUnANEEGAB/BScA0QQYAH8ELgBXAygAPgbT/8oFvP/DBc8ArgR0ACUERAA1BLkASAS5AEgELgA0AygACgTnAFID7QBKBVkAWARaAEAFWABYBFkAQAaSAFgFkgBABU//3gRb/9UEpgDuA8gAbQS9//wDyP/pBAsAKQRf//wGEgEAAAoAAAAKAAAB/QBPAAAAAQABAQEBAQAMAPgI/wAIAAj//gAJAAn//QAKAAr//QALAAv//QAMAAz//QANAA3//AAOAA7//AAPAA///AAQABD//AARABH/+wASABL/+wATABP/+wAUABT/+wAVABT/+gAWABX/+gAXABb/+gAYABf/+gAZABj/+QAaABn/+QAbABr/+QAcABv/+QAdABz/+AAeAB3/+AAfAB7/+AAgAB//+AAhACD/9wAiACH/9wAjACL/9wAkACP/9wAlACT/9gAmACX/9gAnACb/9gAoACf/9gApACf/9QAqACj/9QArACn/9QAsACr/9QAtACv/9AAuACz/9AAvAC3/9AAwAC7/9AAxAC//8wAyADD/8wAzADH/8wA0ADL/8wA1ADP/8gA2ADT/8gA3ADX/8gA4ADb/8gA5ADf/8QA6ADj/8QA7ADn/8QA8ADr/8QA9ADr/8AA+ADv/8AA/ADz/8ABAAD3/8ABBAD7/7wBCAD//7wBDAED/7wBEAEH/7wBFAEL/7gBGAEP/7gBHAET/7gBIAEX/7gBJAEb/7QBKAEf/7QBLAEj/7QBMAEn/7QBNAEr/7ABOAEv/7ABPAEz/7ABQAE3/7ABRAE3/6wBSAE7/6wBTAE//6wBUAFD/6wBVAFH/6gBWAFL/6gBXAFP/6gBYAFT/6gBZAFX/6QBaAFb/6QBbAFf/6QBcAFj/6QBdAFn/6ABeAFr/6ABfAFv/6ABgAFz/6ABhAF3/5wBiAF7/5wBjAF//5wBkAGD/5wBlAGD/5gBmAGH/5gBnAGL/5gBoAGP/5gBpAGT/5QBqAGX/5QBrAGb/5QBsAGf/5QBtAGj/5ABuAGn/5ABvAGr/5ABwAGv/5ABxAGz/4wByAG3/4wBzAG7/4wB0AG//4wB1AHD/4gB2AHH/4gB3AHL/4gB4AHP/4gB5AHP/4QB6AHT/4QB7AHX/4QB8AHb/4QB9AHf/4AB+AHj/4AB/AHn/4ACAAHr/4ACBAHv/3wCCAHz/3wCDAH3/3wCEAH7/3wCFAH//3gCGAID/3gCHAIH/3gCIAIL/3gCJAIP/3QCKAIT/3QCLAIX/3QCMAIb/3QCNAIb/3ACOAIf/3ACPAIj/3ACQAIn/3ACRAIr/2wCSAIv/2wCTAIz/2wCUAI3/2wCVAI7/2gCWAI//2gCXAJD/2gCYAJH/2gCZAJL/2QCaAJP/2QCbAJT/2QCcAJX/2QCdAJb/2ACeAJf/2ACfAJj/2ACgAJn/2AChAJn/1wCiAJr/1wCjAJv/1wCkAJz/1wClAJ3/1gCmAJ7/1gCnAJ//1gCoAKD/1gCpAKH/1QCqAKL/1QCrAKP/1QCsAKT/1QCtAKX/1ACuAKb/1ACvAKf/1ACwAKj/1ACxAKn/0wCyAKr/0wCzAKv/0wC0AKz/0wC1AKz/0gC2AK3/0gC3AK7/0gC4AK//0gC5ALD/0QC6ALH/0QC7ALL/0QC8ALP/0QC9ALT/0AC+ALX/0AC/ALb/0ADAALf/0ADBALj/zwDCALn/zwDDALr/zwDEALv/zwDFALz/zgDGAL3/zgDHAL7/zgDIAL//zgDJAL//zQDKAMD/zQDLAMH/zQDMAML/zQDNAMP/zADOAMT/zADPAMX/zADQAMb/zADRAMf/ywDSAMj/ywDTAMn/ywDUAMr/ywDVAMv/ygDWAMz/ygDXAM3/ygDYAM7/ygDZAM//yQDaAND/yQDbANH/yQDcANL/yQDdANL/yADeANP/yADfANT/yADgANX/yADhANb/xwDiANf/xwDjANj/xwDkANn/xwDlANr/xgDmANv/xgDnANz/xgDoAN3/xgDpAN7/xQDqAN//xQDrAOD/xQDsAOH/xQDtAOL/xADuAOP/xADvAOT/xADwAOX/xADxAOX/wwDyAOb/wwDzAOf/wwD0AOj/wwD1AOn/wgD2AOr/wgD3AOv/wgD4AOz/wgD5AO3/wQD6AO7/wQD7AO//wQD8APD/wQD9APH/wAD+APL/wAD/APP/wAAAAAMAAAADAAAIjAABAAAAAAAcAAMAAQAAAiYABgIKAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAADBBwABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAAAH1AfYB+AH6AgECBgIKAg0CDAIOAhACDwIRAhMCFQIUAhYCFwIZAhgCGgIbAhwCHgIdAh8CIQIgAiMCIgIkAiUBbABvAGIAYwBnAW4AdQCDAG0AaQF9AHMAaAGLAH8AgQGIAHABjAGNAGUAdAGDAYUBhADBAYkAagB5ALUAhACHAH4AYQBsAYcAkwGKAK0AawB6AXAAAwHxAfQCBQCQAJEBYgFjAWkBagFlAWYAhgGOAicClgF0AXkBcgFzAZIDUAFtAHYBZwFrAXEB8wH7AfIB/AH5Af4B/wIAAf0CAwIEAAACAgIIAgkCBwCKAJoAoABuAJwAnQCeAHcAoQCfAJsABAZmAAAA7ACAAAYAbAAAAAIACQANACEAfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABOAFAAVMBXwFnAX4BfwGSAaEBsAHwAfsB/wIZAhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEzgTXBOEE9QUBBRAFEx4BHj8ehR7xHvMe+R9NIAsgFSAeICIgJiAwIDMgOiA8IEQgdCB/IKQgpyCsIQUhEyEWISIhJiEuIV4iAiIGIg8iEiIaIh4iKyJIImAiZSXK7gL2w/sE/v///f//AAAAAAACAAkADQAgACIAoAChAK0ArgDAAMcA0ADnAPAA/wEQARIBJgEoATEBOQFBAVQBYAFoAX8BkgGgAa8B8AH6AfwCGAIaAjcCWQK8AsYCyQLYAvMDAAMDAwkDDwMjA4QDjAOOA5MDowOxA7oDygPRA9YEAAQmBDAERgRQBGMEcAR6BIgEzwTYBOIE9gUCBREeAB4+HoAeoB7yHvQfTSAAIBMgFyAgICUgMCAyIDkgPCBEIHQgfyCjIKcgqyEFIRMhFiEiISYhLiFbIgIiBiIPIhEiGiIeIisiSCJgImQlyu4B9sP7Af7///z//wABBBgEEv/1AAD/4gAA/8AAAP+/AAABMQAAASwAAAEoAAABJgAAASQAAAEiAAABHAAAAR4AAP8B/vT+5wFhAAAAoQBkAGb+Yf5AAJb91P2l/cT9r/2j/aL9nf2Y/YUAAP9w/28AAAAA/QUAAP9Q/Pn89gAA/LUAAPytAAD8ogAA/JwAAP6eAAD+mwAA/EUAAOVV5RXkxeT45Fnk9uQK4VYAAOFN4UzhSuFB4xvhOeMT4TDhAeD3AADg0QAA4HXgaOBm4Fvfj+BQ4CTfgd6n33XfdN9t32rfXt9C3yvfKNvEE44KzgAAApQBmAABAAAAAAAAAAAA5AAAAOQAAADiAAAA4AAAAOoAAAEUAAABLgAAAS4AAAEuAAABOgAAAVwAAAFoAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAAAAAFMAWgAAAGAAAAAAAAAAZgAAAHgAAACCAAAAioAAAI6AAACxAAAAtQAAALoAAAAAAAAAAAAAAAAAAAAAALcAAAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqYAAAAAAAAAAwQcAeoB6wHxAfIB8wH0AfUB9gB/Ae0CAQICAgMCBAIFAgYAgACBAgcCCAIJAgoCCwCCAIMCDAINAg4CDwIQAhEAhACFAhwCHQIeAh8CIAIhAIYAhwIiAiMCJAIlAiYAiAHsA/AAiQHuAIoCVQJWAlcCWAJZAloAiwCMAI0CYwJkAmUCZgJnAmgCaQCOAI8CagJrAmwCbQJuAm8AkACRAn4CfwKCAoMChAKFAe8B8ACSAfcCEgCpAKoC+ACrAvkC+gL7AKwArQMCAwMDBACuAwUDBgCvAwcDCACwAwkAsQMKALIDCwMMALMDDQC0ALUDDgMPAxADEQMSAxMDFAMVAL8DFwMYAMADFgDBAMIAwwDEAMUAxgDHAxkAyADJA1oDHwDNAyAAzgMhAyIDIwMkAM8A0ADRAyYDWwMnANIDKADTAykDKgDUAysA1QDWANcDLAMlANgDLQMuAy8DMAMxAzIDMwDZANoDNAM1AOUA5gDnAOgDNgDpAOoA6wM3AOwA7QDuAO8DOADwAzkDOgDxAzsA8gM8A1wDPQD9Az4A/gM/A0ADQQNCAP8BAAEBA0MDXQNEAQIBAwEEBAYDXgNfARIBEwEUARUDYANhA2MDYgEjASQECwQMBAUBJQEmAScBKAEpBAcECAEqASsEAAQBA2QDZQPyA/MBLAEtBAkECgEuAS8D9AP1ATABMQEyATMBNAE1A2YDZwP2A/cDaANpBBMEFAP4A/kBNgE3A/oD+wE4ATkBOgQEATsBPAQCBAMDagNrA2wBPQE+BBEEEgE/AUAEDQQOA/wD/QQPBBABQQN3A3YDeAN5A3oDewN8AUIBQwP+A/8DkQOSAUQBRQOTA5QEFQQWAUYDlQQXA5YDlwFiAWMEGQQYAXcD8QF5AZIDUANYA1kABAZmAAAA7ACAAAYAbAAAAAIACQANACEAfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABOAFAAVMBXwFnAX4BfwGSAaEBsAHwAfsB/wIZAhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEzgTXBOEE9QUBBRAFEx4BHj8ehR7xHvMe+R9NIAsgFSAeICIgJiAwIDMgOiA8IEQgdCB/IKQgpyCsIQUhEyEWISIhJiEuIV4iAiIGIg8iEiIaIh4iKyJIImAiZSXK7gL2w/sE/v///f//AAAAAAACAAkADQAgACIAoAChAK0ArgDAAMcA0ADnAPAA/wEQARIBJgEoATEBOQFBAVQBYAFoAX8BkgGgAa8B8AH6AfwCGAIaAjcCWQK8AsYCyQLYAvMDAAMDAwkDDwMjA4QDjAOOA5MDowOxA7oDygPRA9YEAAQmBDAERgRQBGMEcAR6BIgEzwTYBOIE9gUCBREeAB4+HoAeoB7yHvQfTSAAIBMgFyAgICUgMCAyIDkgPCBEIHQgfyCjIKcgqyEFIRMhFiEiISYhLiFbIgIiBiIPIhEiGiIeIisiSCJgImQlyu4B9sP7Af7///z//wABBBgEEv/1AAD/4gAA/8AAAP+/AAABMQAAASwAAAEoAAABJgAAASQAAAEiAAABHAAAAR4AAP8B/vT+5wFhAAAAoQBkAGb+Yf5AAJb91P2l/cT9r/2j/aL9nf2Y/YUAAP9w/28AAAAA/QUAAP9Q/Pn89gAA/LUAAPytAAD8ogAA/JwAAP6eAAD+mwAA/EUAAOVV5RXkxeT45Fnk9uQK4VYAAOFN4UzhSuFB4xvhOeMT4TDhAeD3AADg0QAA4HXgaOBm4Fvfj+BQ4CTfgd6n33XfdN9t32rfXt9C3yvfKNvEE44KzgAAApQBmAABAAAAAAAAAAAA5AAAAOQAAADiAAAA4AAAAOoAAAEUAAABLgAAAS4AAAEuAAABOgAAAVwAAAFoAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAAAAAFMAWgAAAGAAAAAAAAAAZgAAAHgAAACCAAAAioAAAI6AAACxAAAAtQAAALoAAAAAAAAAAAAAAAAAAAAAALcAAAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqYAAAAAAAAAAwQcAeoB6wHxAfIB8wH0AfUB9gB/Ae0CAQICAgMCBAIFAgYAgACBAgcCCAIJAgoCCwCCAIMCDAINAg4CDwIQAhEAhACFAhwCHQIeAh8CIAIhAIYAhwIiAiMCJAIlAiYAiAHsA/AAiQHuAIoCVQJWAlcCWAJZAloAiwCMAI0CYwJkAmUCZgJnAmgCaQCOAI8CagJrAmwCbQJuAm8AkACRAn4CfwKCAoMChAKFAe8B8ACSAfcCEgCpAKoC+ACrAvkC+gL7AKwArQMCAwMDBACuAwUDBgCvAwcDCACwAwkAsQMKALIDCwMMALMDDQC0ALUDDgMPAxADEQMSAxMDFAMVAL8DFwMYAMADFgDBAMIAwwDEAMUAxgDHAxkAyADJA1oDHwDNAyAAzgMhAyIDIwMkAM8A0ADRAyYDWwMnANIDKADTAykDKgDUAysA1QDWANcDLAMlANgDLQMuAy8DMAMxAzIDMwDZANoDNAM1AOUA5gDnAOgDNgDpAOoA6wM3AOwA7QDuAO8DOADwAzkDOgDxAzsA8gM8A1wDPQD9Az4A/gM/A0ADQQNCAP8BAAEBA0MDXQNEAQIBAwEEBAYDXgNfARIBEwEUARUDYANhA2MDYgEjASQECwQMBAUBJQEmAScBKAEpBAcECAEqASsEAAQBA2QDZQPyA/MBLAEtBAkECgEuAS8D9AP1ATABMQEyATMBNAE1A2YDZwP2A/cDaANpBBMEFAP4A/kBNgE3A/oD+wE4ATkBOgQEATsBPAQCBAMDagNrA2wBPQE+BBEEEgE/AUAEDQQOA/wD/QQPBBABQQN3A3YDeAN5A3oDewN8AUIBQwP+A/8DkQOSAUQBRQOTA5QEFQQWAUYDlQQXA5YDlwFiAWMEGQQYAXcD8QF5AZIDUANYA1kAAAACAMUEFAK9BhgABQALAAABAyMTNzMFAyMTNzMBiGpZOhiIAQdrWjwXiQWN/ocBcJSL/ocBd40AAAIAQwAABM8FsAAbAB8AAAEjAyMTIzczEyM3IRMzAzMTMwMzByMDMwcjAyMDMxMjApnvnIuc3Bv1ie8bAQifi5/vn4yfuRvTic8b552MHu6J7gGa/mYBmocBZokBoP5gAaD+YIn+mof+ZgIhAWYAAAABAEf/MAQ+BpsAKwAAATYmJy4BNz4BPwEzBx4BByM2JiMiBgcGFhceAQcOAQ8BIzcuATczBhYzMjYDEQ9fhbacHBvNoiORJJaIILQYWG1rhhERW4+4lRse2LAekR6brSK1G3lvdp4BdmF6NT/Gra3IFNrcGuvJkqJ+bGhzOUS/rLXCEr/AE9TVpnx+AAUA0//rBTAFxQANABsAKQA3ADsAABM+ATMyFg8BDgEjIiY3MwYWMzI2PwE2JiMiBgcBPgEzMhYPAQ4BIyImNzMGFjMyNj8BNiYjIgYHBScBF/wbtIR5fBkPHLODen0ahxE2SUFiEA8QNEhCZA8BZRu1g3l8GQ8cs4N6fRqHETZJQmIQDxA1SEJkD/4BWAN6WASYiqOuf02Koa1+UWNpS01RZWtL/M2Jo65+TouhrX9SY2lMTlFkakv2QQRyQQAAAAMAG//rBIQFxQAgACsAOAAAEz4BNy4BNz4BMzIWBw4BDwETPgE3Mw4BBxcjJw4BIyImBTI2NwEHDgEHBhYTBhYXNz4BNzYmIyIGORSdmDwuDh3Lo5CeFRFycHX8M0IPohZpVYzYQFa7YsbQAa1Di0P+8yljSQkTa5YJHymQPDIKC0pLS2UBhoGuX2aZVLKss4BohUxT/mNCmlqL1lrkaD4/404yMgG4HUl7NXiOA+k4ckVhJ1g4QltxAAAAAQDGBCMBqAYYAAUAAAEDIxM3MwGWd1k8FZEFqP57AXWAAAAAAQBX/ioDHwZqAA8AABMSADcXBgADBwISFwcmAhOZQgF0vxGT/vo4AjtuczaZzEACTwGfAhJqeGz+K/6gDv6R/j14b2cCJAGQAAAAAAH/jP4qAlUGagAPAAABAgAHJzYAEzcSAic3FhIDAhRD/oy9FJEBCTkCOnZrOJfMPwJF/l/98GpvbAHdAWEOAWoBzHRvZ/3Z/nMAAAABAKECYgOgBbAADgAAASU3FxMzAyUXBRMHCwEnAaP+/kv9PJVPASYP/tR/jG/daAPYW5RwAVn+oXCWXP7wXQEh/uZaAAEAcgCSBDUEtgALAAABIQchAyMTITchEzMCwAF1I/6MXLZc/oojAXVWtgMLrP4zAc2sAasAAAAAAf+Y/swBAADaAAkAADcOAQcnPgE/ATPiFn9eVzxGER+2RmvHSEhKkFWXAAABAD4CIQIjArYAAwAAASE3IQIF/jkeAccCIZUAAQBGAAABIwDFAAMAADMjNzP8tie2xQAAAf+m/4MDsQWwAAMAABcjATNBmwNymX0GLQAAAAIAUP/rBGEFxQANABsAAAECACMiAhsBEgAzMhIDJzYmIyIGBwMGFjMyNjcD5T3+7dC/tjhFPAEV0L+0N60pV39zrSZUKll+dKsnAiz+0P7vASoBFwFXAS4BFP7V/uko0bPEwP5b0bXEwgAAAAEBcAAAA14FsAAFAAAhIxMFNyUCO7X5/vEYAdYE3Ah3ZQAAAAEALQAABDMFxQAYAAApATcBPgE3NiYjIgYHIzYkMzIWBw4BBwEhA5r8kxUCEZFsDxNdZYqiF7UhARPcsrkcFaGU/lICk4MCE5GnW3aQnI/L9uKzf+CT/lcAAAAAAQA1/+sEKAXFACoAAAE/ATMyNjc2JiMiBgcjNiQzMhYHDgEHHgEHBgQjIiY3MwYWMzI2NzYmKwEBmQsHn3h/ExVddWqZErUcAQbAucAgEYBwc0wSIv7xw7fUH7YUandznRYXXoSfAsNGJ4Z2hX6Jc7Te1chirS8ttnLT19e/fIWJiJF6AAAAAAIAJwAABBwFsAAKAA8AAAEzByMDIxMhNwEzASETJwcDWrweu0S0RP2eFQMhv/zrAZ+MAyAB6JX+rQFTawPy/DgCvAE6AAAAAAEAaP/rBD4FsAAfAAAbASEHIQMXPgE3NhIHDgEjIiY3MwYWMzI2NzYmIyIGB8vOAqUb/fRuAy1vR7+pJSb716nJIasVaGpyoBoYY3ZqcCMCkQMfqf5gASItAgL+++To/cnLgH+xnZetSEoAAAIAZ//rBBkFxQAaACcAAAEyFhcHLgEjIgYPAT4BMzISBwYAIyICGwESABMiBg8BBhYzMjY3NiYDHkWFKD4pXkWO3SAERaFbsq8hJv71xcPYLi4uAVA4XpExEiN5fG+hGRlmBcUiG5EaHvjLGDc7/vTS7v7xATIBGwEfASYBSP1zVEl118/Ompy0AAAAAQDYAAAEhAWwAAwAAAEAAgMHIzcSABMhNyEEbP7T9WAntidgATPy/R8YA5QFGv7F/iH+mZmZAWICGAEHlgAAAAMANf/rBFgFxQAXACMALwAAAQ4BBx4BBwYEIyImNz4BNy4BNz4BMzIWATYmIyIGBwYWMzI2EzYmIyIGBwYWMzI2BDIalXBraBct/u/Mv9EpGqyEXVYXKvu9q7/+whpxdW61GBtvfG2xexdfZF+ZFxleaFyaBDV+pigvt3rbw9TKiLYpLadx0b/Q/JiEkZt6iIWQAyF3h4tze36IAAIAf//rBDcFxQAbACgAACUyNj8BJw4BIyICNzYAMzISCwECACMiJic3HgETMjY/ATYmIyIGBwYWAa6ExiQFAzaSV8G/JiYBHbTQyyw5MP7R3EePNzM1cLVlmCwYIGaIZLEaG2OA2NghAUVDAQbu8QEW/uf+6v6c/tX+5BwfkB0ZAd9jTpjNus6jp7j//wBGAAAB1AQ6ACYAEAAAAAcAEACxA3X////G/swB1QQ6ACcAEACyA3UABgAOLgAAAQBlAMUDxQRJAAoAAAEPARcFBwE/AQEHAWVPAUgB2yf9VBcGA0MmApsVAxTpwQF7ch0BesEAAAACAI4BkAQIA80AAwAHAAABITchAyE3IQPo/PkgAwdz/PkgAwcDL579w54AAAEAVgDGA9oESgALAAATNwEPAgE3JTc1J+QmAtAGEQb8mSUCX1JJA4+7/oYdVR3+hbzyFQMWAAAAAgDCAAAD5gXFABkAHQAAAT4BNz4BNzYmIyIGByM+ATMyFgcOAQcOAQcDIzczAU0eQHN7XxMXT2ZSjxO3JPyrrqskHJySPSYSTL4pvgGZk2lef3VddmtnYqnAybONu4A2VF7+Z8sAAAACABP+OwbGBZYAMwBDAAABBgAjIiYnDgEjIiY3EgAzMhYXBzMDBhYzMjY3EgIhIAADAhIhMjY3Fw4BIyAAExIAISAAAQYWMzI2Nz4BNxMuASMiBgZgNf760kFTBkGTW3BVOEsBDpxcdTgEBaMgKDBsvixd0P7B/u7+OFhe3QEqT7NCD0rGXf6v/tJnaAINAWEBUAEm+9koHkc6cDgCBgSXFzEecKwB99v+z1VOVE/xxAEIATM2NAT9uHNS5rEBhwGj/jH+jP6A/lArI2grLgHzAbABsAII/g39/ZKVNEQMGQ8CHQwO3QAAAv/VAAAEfwWwAAcACwAAASEDIwEzEyMBIQMnA5H9ztK4Ay+b4Ln96gHNXAMBhP58BbD6UAIZAqABAAAAAwBYAAAE0AWwAA8AGAAhAAAzASEyFgcOAQcVHgEHBgQjCwEhMjY3NiYjJSEyNjc2JiMhWAEjAbjL0icWjGV0YRss/vLXtWsBPnitGRtWff7FASljnRcab4r+/QWwxMVqlCIDG8eI2cECrf3oh3yMiZV6b4JtAAAAAQBi/+sE+AXFABsAAAEGBCMiABsBEgAzMhIHIzYmIyICBwMGEjMyNjcEdUP+89/f/vs2MzsBNezZ+Be3C4qZkNooMyyYoouhNwG/4PQBagELAQEBKAE8/vLgo7X+/8v+/dj++JinAAACAFgAAAUdBbAACQATAAAzASEgAAMHAgAhCwEhMhI/ATYCI1gBIwF6AQABKDcnPv6s/u8K5wEPsfMrKCy/xwWw/pT+7cX+zf7HBRr7ewEB1sjeAQgAAAAAAQBYAAAE8gWwAAsAAAEhAyEHIQEhByEDIQQC/ZJpAswe/H8BIwN3Hv0+YAJuAqb975UFsJb+IgABAFgAAAT5BbAACQAAASEDIwEhByEDIQP5/ZWBtQEjA34e/TdmAmsCiP14BbCW/gQAAAAAAQBo/+sFDwXFAB8AACUGBCMiABsBEgAzMhYHIzYmIyIGBwMGFjMyNjcTITchBFtA/vvC6P78NTs5AV3z2NYLtQJ0mpT6Jjwrn6ttqidD/tUeAeC/UYMBTwEKASkBIAE48smInf3D/tXV70QqAVCVAAEAWAAABXkFsAALAAAhIxMhAyMBMwMhEzMEVrWB/WyBtQEjtYQClIS1Aob9egWw/WsClQABAGIAAAI6BbAAAwAAISMBMwEXtQEjtQWwAAAAAQAP/+sEUgWwAA8AAAEzAwYEIyImNzMGFjMyNjcDnbXSK/74vrvFKrUeYnthoxoFsPvk1NXW0JZ7ln4AAQA+AAAFNQWwAAwAAAEjAyMBMwMzATMJASMCAomEtwEjt3+TAiPm/WsBhM8Clf1rBbD9hAJ8/Sj9KAAAAQBYAAADrQWwAAUAACUhByEBMwErAoIe/MkBI7WVlQWwAAAAAQBYAAAGswWwABEAAAETMwEzASMbAScBIwMjCwEjAQJkwgMCouj+3bV1iQP9WnnOA2R1tQEjBbD7UwSt+lACRwJUAftkBJj9r/25BbAAAAABAFgAAAV6BbAACwAAISMBIwMjATMBMxMzBFe2/lID47UBI7UBrgPjtgRw+5AFsPuRBG8AAgBe/+sFNgXFAA0AGwAAAQIAIyIAGwESADMyAAMnNiYjIgYHAwYWMzI2NwTOPP6y/eX+/DYzOwFE9OwBEDW0K6qzl98pMy2gqqHoKgJO/tr+wwFrAQoBAQEmAT7+k/73Atr++M7+/dz+99EAAgBYAAAFGAWwAAoAEwAAAQMjASEyFgcGBCMlITI2NzYmIyEBgnW1ASMCBM7LJyv+7OH+zwFPg7EZGmaP/rECSv22BbDww9bdlaN5hZoAAAACAF7/DAU2BcUAEwAhAAABDgEHFwcnDgEjIgAbARIAMzIAAyc2JiMiBgcDBhYzMjY3BM4kl3Kqk8MrVS7l/vw2MzsBRPTsARA1tCuqs5ffKTMtoKqh6CoCTrH9TtNz9gsMAWsBCgEBASYBPv6T/vcC2v74zv793P730QAAAgBXAAAFAgWvABoAIwAAAQMjASEyFgcOAQceAQ8BBhYXByMmNj8BNiYjJSEyNjc2JiMhAYt+tgEjAerUyikZkHlmRhkbDwccBbseBQ8bGWBx/s0BI5OrGxtnk/7MAnr9hgWv08p8oC8prn2JSWYjGCN+S4WCh5WDgod/AAEAQ//rBMAFxQAlAAABNiYnLgE3NiQzMhYHIzYmIyIGBwYWFx4BBwYEIyIkNzMGFjMyNgN+GHCz1rEoIwEFw9jpKrYciZJpnREaZrvbsCcl/vXM2f7jMLUjuJpqqwFMd4RCSMvGsbLs1ouhdFd/d0dPx8O4q9brq4FyAAABAOwAAAULBbAABwAAASEBIwEhNyEE7f5a/vu1AQX+Wh4EAQUa+uYFGpYAAAEAZ//rBVcFsAARAAABAwIEIyImNxMzAwYWMzI2NxMFV8U0/r7y1u0wxbbFJYqWkeIixQWw/CX+/ef87gPb/CW2n62oA9sAAAEAzQAABVcFsAAJAAABHwE3ATMBIwEzAkAMAzMCEcT9IJ3+88QBXnIBcwRS+lAFsAAAAAABAOwAAAbsBbAAFQAAAQczNwEzEx8BNwEzASMDJyMHASMDMwHDBANGAZOhYQgDOwFUtf3homkEAy/+TqJMtQHvv78Dwfw/wAHBA8H6UAP9iYn8AwWwAAAAAf/8AAAFHQWwAAsAAAkBMwkBIwMBIwkBMwKnAZvb/d4BQtfr/l3cAi3+xtkDcwI9/S79IgJI/bgC3gLSAAAAAAEA7gAABVMFsAAIAAAJATMBAyMTATMCjQH3z/1oZ7Rp/uXQAs0C4/xU/fwCDwOhAAEAIAAABFsFsAAJAAA3IQchNwEhNyEH+QK0HvyRCQNE/ZAeA0AblZWNBI2WiAAAAAEAEv7IArQGgAAHAAABIwEzByEBIQKcr/70rxj+mgE8AWYF6vl0lge4AAAAAQD3/4MCnAWwAAMAABMzEyP3rPmsBbD50wAAAAH/l/7IAjkGgAAHAAATIQEhNzMBI9MBZv7E/poYsQEMsQaA+EiWBowAAAAAAQB8AtkDIgWwAAkAAAEjATMTIwMnIwcBJKgBp3uEp0YCAx8C2QLX/SkBqkxMAAAAAf+W/2sDDQAAAAMAAAUhNyEC7/ynHgNZlZUAAAEA8wS7AkgFxQADAAABIwMzAkiTwtsEuwEKAAACADr/7AP3BE4AIAArAAAhNDY3Jw4BIyImNzYkOwE3NiYjIgYHIzYkMzIWBwMOARclMjY/ASMiBgcGFgKgBAUDQq5dlokeIgEB0L4WFVdnWI4OtRsBALaktSJoDQkE/jlXrS8ow2ukEBFBMz4fAUhdrJaoom5paWRGhbu7r/32PWY3i2BEyXtTUE8AAAIANf/rBCcGGAASACAAAAEOASMiJicHIwEzAxc+ATMyEgMjNiYjIgYHAx4BMzI2NwPvM+i+WY0rM50BOLZ0AziOV7GnM7UnXIdPfTJgGW9ae5chAeL/+GBWoQYY/b0BPD7+rP79yvNeUf4gS1W3pgABAEf/7AP7BE4AGwAAJTI2NzMGBCMiAj8BNgAzMhYHIzYmIyIGDwEGFgHxWqAPrBn+8qbXuyUHJwER4a7BGqwQameNpBoHHFWBeFyazwEy6ir1ASfeqmyG4qQqsdYAAAACAET/6wSVBhgAEgAgAAATGgEzMhYXEzMBIzcnDgEjIgI3MwYWMzI2NxMuASMiBgd3OO7BV4greLX+yJ0JAzyQWLCuL7YkYYlMdTNlG2tUfJ8mAh4BHAEUSEQCVvnoaAI/QAE06rPRU08B+kRP2b0AAgBH/+wD6wROABUAHQAABSICPwE2ADMyEg8BIQYWMzI2NxcOAQMiBgchNzYmAePOzicHJwEptMerIxP9bBhrh1qXPDNAuQFaoCkB2gQTWRQBKvEt9QEl/vvdea3FOTJ7OksDzKqGGn2ZAAAAAQCKAAADhwYtABcAADMTIzczNz4BMzIWFwcuASMiBg8BMwcjA4q8nRydHCXFnB5AJTMQLRtNaBMc0hzSvAOtjYu7rQsKkQUGamOLjfxTAAACADf+SwQ9BE4AHgAsAAATGgEzMhYXNzMDBgQjIiYnNx4BMzI2PwEnDgEjIgI3MwYWMzI2NxMuASMiBgd6OPHCXIwrLJnVLv752kWkOUwsg0V+oRwPAziKU7GxL7UkZYlNdjNkG2tVfaMlAh4BHAEUUEyI+9Tk3ysklB8kmItNATg5ATXpstJUUAH2RVDavAABADUAAAQZBhgAFAAAARc+ATMyFgcDIxM2JiMiBgcDIwEzAaoDQKRem48rh7WIHk9vSY85nrYBOLYDuwJITdDZ/VsCp5Z3VEj86AYYAAAAAAIARAAAAjEGGAADAAcAADMjEzMTIzcz+bXYtTi1KLUEOgEYxgAAAAAC/x3+SwI5BhgADwATAAABAw4BIyImJzceATMyNjcbASM3MwHe6iW5lRswGSsNMQ48WhXq6bYntgQ6+222pgkJlgUIW2YEkwEcwgAAAQA2AAAEKAYYAAwAAAEjAyMBMwMzATMJASMByHhktgE4trZ2AW7W/kMBFtYB9v4KBhj8dQGt/hP9swAAAQBEAAACMQYYAAMAADMjATP5tQE4tQYYAAAAAAEANQAABlsETgAkAAABFz4BMzIWFz4BMzIWBwMjEzYmIw4BBxUDIxM2JiMiBgcDIxMzAaECQKVmXn0UQq9vk4stgraCI0hqY5AgiraDIUtpUn4unbbYowOyAUxRYmNeZ+Dk/XYCi7F4AZFuA/1PAo2ngFNL/OoEOgAAAAABADUAAAQYBE4AFAAAARc+ATMyFgcDIxM2JiMiBgcDIxMzAZ8CQaZkm5EqibaIIE5xTI04nLbYowOoAVJVzNf9VQKnn25ZTfzyBDoAAgBG/+wEHAROAA0AGwAAEzYAMzISDwEGACMiAjczBhYzMjY/ATYmIyIGB3EpARrWzcUmBCn+5tbNxie2HmOJga4cBB1jiIGvGwIo/gEo/szyGP/+2wEx87fY4a4YtdvkrAAAAAL/4v5gBCYETgASACAAAAEOASMiJicDIwEzBxc+ATMyEgMjNiYjIgYHAx4BMzI2NwPuM+i+W4starYBK5wIAzuUWrKnNLYoYolJdjBqG2tWfJ8hAeH/90RD/e4F2m4BQEP+rP78yfVSSP3xQ0i8pQACAET+YAQrBE4AEgAgAAATGgEzMhYXNzMBIxMnDgEjIgI3MwYWMzI2NxMuASMiBgd3OO7BWYcsJZz+1bVjAzeETrCuL7YkYIlGbzJtHGhQfJ8mAh4BHAEURUR1+iYB8gI0NQE06rTVTUcCIj1F3L4AAQA1AAADDQROABAAAAEnIgYHAyMTMwcXPgEzMhYXAtJnR3QsmbbYow0DOYxVFC4LA5MGUEr9AQQ6jgFPVAcEAAEAO//sA8kETgAlAAABNiYnLgE3PgEzMhYHIzYmIyIGBwYWFx4BBw4BIyImNzMGFjMyNgK8C01/s58VFuesrLYXtQ1cX19yCgxGgLueFBnttbzBGLUMd11hfwEeRlIgLI+Bi7HBkE1uXkJFRx8tlIGXqNCQbF9WAAEAb//sAqQFQQAXAAABAzMHIwMGFjMyNjcHDgEjIiY3EyM3MxMCGjW/HL+EEiQrFDMTAhxdLGNjIISNHI01BUH++Y39alY5CAWDERWPnAKWjQEHAAEAWv/sBDsEOgAUAAAhNycOASMiJjcTMwMGFjMyNjcTMwMCwRICP6RknZMwf7Z/JkNpX5Mzm7XYkQFSVOHwAn39gb53W1MDBvvGAAABAJcAAAQKBDoACQAAARczNwEzASMDMwHFBQMgAWS5/eCJyrkBOlNTAwD7xgQ6AAABALIAAAX6BDoAFQAAAQcXNwEzExUzNwEzASMDLwEHASMDMwGEBQM4AVOSPwM8ASm0/gSSPgYDT/67k0y1AYaKAYsCtP1Mm5sCtPvGApu7Abz9ZQQ6AAAAAf/pAAAD8QQ6AAsAAAkBMwETIwMBIwEDMwIGARjT/mT40J7+3dMBqfLRAqcBk/3p/d0Bnv5iAiMCFwAAAf+8/ksEKgQ6ABUAAAEfAQEzAQ4BIyImJzcmFjMyNj8BAzMBtwcDAZ7L/V8/qXsVQhMxJGkLOEw+RaTLAYaFAQM6+x9vnwsFlQMIT2d1BCQAAAAAAQAIAAAD3wQ6AAkAADchByE3ASE3IQf7Akoe/OEbAsP94h4C+RmVlYUDHpeBAAAAAQBR/pADHAY9AB8AAAEuAT8BNiYjPwEyNj8BPgE3Fw4BDwEOAQceAQ8BBhYXAc+wcB0hEkhmEwRhdBMhHLnEEm5yFSETZlpJNxAhFzhj/pA4667Pd3h4F3xy0LTkOXEls4jQcJ4rL51nz4ytJgAAAAEANv7yAdwFsAADAAATIwEzyJIBFJL+8ga+AAAB/6n+kAJ2Bj0AHwAABz4BPwE+ATcuAT8BNiYnNx4BDwEGFjMPASIGDwEOAQdXbnIXIRJsYVE9EiEWOWI4r28cIRNJZxIFYnUSIR64wv4lsojPcpwqK51s0IyvJXE46q/QeHZwH35xz7TlOAABAIIBkwTMAyEAGQAAAQ4BIyImJy4BIyIGByc+ATMyFhceATMyNjcEzBe8fVF+Ry9QMD5rDIAXuX5Qg0MvUDE8bg0C5JDBQkoyMGtOEo+4RkY0LnNQAAAAAv/r/ooBxAQ6AAMABwAAEyMTMxMjNzOhtsS2N7Yotv6KA9IBEswAAAEAV/8LBAAFJgAhAAAlMjY3Mw4BDwEjNyYCPwE2Ej8BMwceAQcjNiYjIgYPAQYWAftaoA+sF+OWLbYwmX0fByPpwC22LoCCFawQameNpBoHHFWBeFyLxhTl8SsBHMUq3QEeG97lI8uNbIbipCqx1gABAC0AAAR/BcUAIQAAAQcOAQchByE3Mz4BPwEjNzMTPgEzMhYHIzYmIyIGBwMhBwG7GRU8JwKsH/x2HgkwUxYZmR2ULSz1tbGtI7caW2FYjhsuAYUdAmqYY6A6lZUNxWuYlQER3djTsIRpl4j+75UAAgAm/+UFjATxACMALwAAJQ4BIyImJwcnNy4BNz4BNyc3Fz4BMzIWFzcXBx4BBw4BBxcHAQYWMzIANzYmIyIAA8dWt2NbmT2bZaQiERUVWEJommVSsF5Vlj6rZrEkExQWUjtkm/0vK6qnlwEeJymppZn+4Wc+PUNCi4WTT7BjbrtPkoaONzlAO5qHoFC0ZmuyTIyGAnvQ+wEMv876/vUAAAEAcQAABS4FsAAWAAAJATMBIQchByEHIQMjEyE3ITchNyEDMwKLAdPQ/egBJRj+myIBZRj+m0G1Qf6iGAFeIv6iGAEk+NADGwKV/S94q3b+ugFGdqt4AtEAAAAAAgAB/vICEAWwAAMABwAAGwEzAxMjEzMBnraewraXtv7yAxb86gPIAvYAAAAC/8j+EQTBBcUAMQBDAAABDgEHHgEHBgQjIiY/AQYWMzI2NzYmJy4BNz4BNy4BNzYkMzIWByM2JiMiBgcGFhceASUuAScOAQcGFhceARc+ATc2JgQxFnFbOCYUJv7u2sf4LbchlIZ5sRMTabrWqiQUcFs3IxQkARbZz9AptRpyh4GqEhdiwtmn/hgpRR9IXQ0XY8AoQx5JYg8TawGvZ4gmM4VjurTN4gKge3ldZVxBQbO0Y4koM4dis7vhzoKXelxtWj1Fr1QLGA4UY0ZvXD8OFwwVY0ZkYgACAScE7APFBbAAAwAHAAABIzczBSM3MwOmyh/K/i3LH8sE7MTExAAAAwBS/+sF4AXEABsAJwAzAAABDgEjIiY/AT4BMzIWByM2JiMiBg8BBhYzMjY3JQIAMzIAExIAIyIAAxIAISAAAwIAISAABC4at5eSkB0THcuZj44YjhBEV1Z5EhMVR1tTYxD9VS4BAuzfAYArLP7/6+H+gZk1AboBHQEMAUIyNv5F/ub+8f6+AlSkltOwd7fMnptnU490eH6HWGSF/uX+ogFsAQ0BGQFc/pb+9QFOAZ3+U/7C/rH+YQGvAAACAMICtAN+BcUAIAArAAABJjQ3Jw4BIyImNz4BOwE3NiYjIgYHJz4BMzIWBwMOARclMjY/ASMiBgcGFgJ3AwMDKXFJaWYWF62cgQsOJzk8UwqbFrKHd3obPwsFBP67LXEbF4BDXwkKKwLCFi4WAS47e2l2bzVHQTg0Dm57job+xjVSLnk7JXNDLzMu//8AcAB3A5MDkQAmAXLw3QAHAXIBJv/dAAEApgF4A84DHwAHAAABBwMjEyE3IQO/ETW2Nf2uIAMIAtVV/vgBCJ8AAAAABABS/+sF4AXEAAsAFwAyADsAABMSACEgAAMCACEgABMCADMyABMSACMiAAEDIxMhMhYHDgEHHgEPAQ4BFwcjJjY/ATYmIyczPgE3NiYrAYY1AboBHAENAUIyNv5F/uX+8v6+oy4BAezgAX8rLP7/6+H+ggFpNoqIAQSLjRMLTEM6KAwJBwMGAo0GCQcIDTJKgI0+XQoMPV56AtkBTgGd/lP+wv6x/mEBrwE//uX+ogFsAQ0BGQFc/pb+rP6sA1KBf0JbIBxoSjgrPxUQFlIoNk5AfgE/O084AAAAAAEBAwUjA7gFsAADAAABITchA6H9YhcCngUjjQACAQUDwQMIBcUACwAXAAABPgEzMhYHDgEjIiY3BhYzMjY3NiYjIgYBGhemZlxvFRihZF5zjgw1My5TDAwyMi9XBMFzkZpqdYuVaz1FSjg9SE0AAAACAE4ACQP4BPMACwAPAAABIQchAyMTITchEzMTITchAqkBTxj+sUKjQv6eGAFiQ6Nq/PgeAwgDVpb+YQGflgGd+xaVAAEApwKbA1EFxwAZAAABITcBPgE3NiYjIgYHIz4BMzIWBw4BDwEXIQLM/dsZAU1ONwkLJzk8VQqdFrOIeHoXEl6LsAEBVQKbfgEIPkosNzxCNHCFf3RXYnCPAwAAAQCqAo8DYwXGACkAAAEzMjY3NiYjIgYHIz4BMzIWBw4BBx4BBw4BIyImNzMGFjMyNjc2JisBNwGjeztKCwo2QzFPCJ8VsHuAixYNUUA7NAwZuI1ymBefCjk+QF0KDTZGexEEbzs1MTczKWxvd248WhgaXEN5cnV0NDc8MkU1VQABAPsEvAKsBcYAAwAAATMBIwHR2/7XiAXG/vYAAf/r/mAEMwQ6ABcAAAEDNwYWMzI2NxMzAyM3Jw4BIyImJwMjAQHLfQEqSmVagS+fttijCwI0f1FBXiBetQErBDr9jwLRek9OAx37xmEBPDsjKP4qBdoAAAEAhwAAA9wFsAAKAAAhEyMiAjc2JDMhAQIDaE7PxyosARrhAQT+3QIIAQTQ4PT6UAAAAAABAMMCcAGkA0EAAwAAASM3MwF6tyq3AnDRAAAAAf/O/k0BIwAAAA8AADMHHgEHDgEjNzI2NzYmJze/Fzw/EBWjjQ5AXwsKOFQ5NQtQUmdqajIyNSMHhgAAAQEEApkCRgXFAAUAAAEjEwc3JQGkoIR3GgEbApkClAGCFwAAAgDPArMDowXFAA0AGwAAAT4BMzIWDwEOASMiJjczBhYzMjY/ATYmIyIGBwEEIMyXjJAdFyDLmIyRHp8UPFNKbRIXEjtSS20RBHagr7uUdaKsupRhZW1ZdV1nb1UAAAD//wA1AJkDYQO0ACYBcxQAAAcBcwFUAAD//wEOAAAFYAXEACcByQDXApgAJwF0AQUACAAHAZcCiQAAAAD//wEbAAAFvQXEACcBdAESAAgAJwHJANcCmAAHAcoC8QAAAAD//wC6AAAGEQXHACcBdAGyAAgAJwGXAzoAAAAHAcsAlQKbAAAAAv/z/nYDFgQ7ABkAHQAAAQ4BBw4BBwYWMzI2NzMOASMiJjc+ATc+ATcTMwcjAo0gQHJ8XxIYUGZRkBS1JPyqr6okHJySPSYTTL4pvgKhlGpcgHVbdmtnYqnAybOLvIA1VF8BmswAAAAC/54AAAd1BbAADwATAAApARMhASMBIQchAyEHIQMhARMnAQaL/MI5/fr+/N4EVgOBHv19TAIkHf3hVgKP/Ph0A/3tAWL+ngWwlv4mlf3qAXkC0AH9LwAAAQBIAOIEFwR2AAsAABMBAzcTARcBEwcDAUgBde+N7QFzXP6K8I3u/o0BXAFQAVB6/rMBTXr+sP6wegFN/rMAAAMAJv+jBWsF7AAZACQALwAAAQIAIyImJwcjNy4BNxMSADMyFhc3MwceAQcBBhYXAS4BIyICByE2JicBHgEzMgA3BNA6/pL9TYA1eYq3PigbMzkBZPRUjzttiq05JBj8RBMFFgK/J2pGmP0nAtQPAxL9RSNdPKEBBykCV/7j/rEsLaH0WOOFAQEBHAFRNjOQ5lfaff7/WpM8A6YqK/71xFCHOvxfIyEBCscAAAACAEgAAAR6BbAADAAVAAABAzMyFgcGBCsBAyMBEwMzMjY3NiYjAiE7+83MJCn+6t/7P7YBI11u/IGxFxlmjgWw/trtu83b/sYFsP5F/dqgcX2YAAABADD/7AQrBg8AJwAAMyMTPgEzMhYHDgEHBgAHDgEjIiYnNx4BMzI2NzYANz4BNzYmIyIGB+W12DD/s46gIRqhCxMBDRwl2a1IoR9IIm47YXYRE/7zHhKtEBRIQV6bHwQ68OWrpYPOOl7+8Iy0misdmR0vYFBhARKSXNJMZmSmmgAAAAADAAT/6wZgBE4ALAA3AD8AAAUiJicOASMiJjc+ATsBNzYmIyIGByc+ATMyFhc+ATMyEg8BIQYWMzI2NxcOASUyNj8BIyIGBwYWASIGByE3NiYEQXirL0XjmpeSHyLt1dYRF0VfXY0QsB7xuWOQI0uyZL6sLRf9ZSBnl1uUSyM6u/yoRK01LNRrmhARSQPIZKYsAeEGGk8VZF5Tb6+VrKBVdnJwUBKaqk9NTU/+/eN1s8A7MIUuTZVYOt90UlNYAzitix+GkwAAAAIAJv/rBKsF7QAgAC4AAAEWEg8BAgAjIgI3NgAzMhYXNzYmJwUnJS4BJzceARc3FwEuASMiBgcGFjMyNj8BA8hLKCkTNf7E0cHWKjEBLs9MgCsDBSst/tw0AQgfQiZWQm4v9TP+vBSCcXXHHh1vh3fRIxQFCHv+us9h/vb+3gEYzvkBB0U6AXKpQKBjkRglEJ4XRTCGY/0rPU/Tl5DB57BjAAAAAwBqALcELgSvAAMABwALAAABITchJSM3MwMjNzMECvxgJAOg/ri2KLbLtie2Alq02sf8CMcAAAADAEz/eQQ4BLkAGQAkAC8AABM2ADMyFhc3MwceAQ8BBgAjIiYnByM3LgE3MwYWFwEuASMiBgchNiYnAR4BMzI2N3EpARrWPGQrbHeZPy0VBCn+5tYzVydmdo1MOBi2DwseAb0bQyqBrxsCGQwGEv5OFzUjga4cAij+ASgdHKTnTdmEGP/+2xQUm9ZL5pBfljUCpBYY5KxPhDX9bA4N4a4AAv/r/mAELwYYABUAIwAAAQ4BIyImJwMjEzcbATMDFz4BMzISAyM2JiMiBgcDHgEzMjY3A/cz6L5biy1qtlMQyGC1cwM6jFWypzS2KGKJSXYwaRpqV3yfIQHh//dEQv3vAaBTA+cB3v3EATg7/qz+/Mn1UUj98EJJvKUAAAIAVQAABcMFsAATABcAAAEzByMDIxMhAyMTIzczEzMDIRMzASE3IQU8hxyHzbWB/WyBtcyHHIc7tToCkzu1/DMClC39bQSNjfwAAob9egQAjQEj/t0BI/1r5QAAAQA+AAABzQQ6AAMAADMjEzP1t9i3BDoAAQA+AAAEYAQ6AAwAAAEjAyMTMwMzATMJASMBrl5ctti2XFABxdv97wFY5AHP/jEEOv41Acv9+P3OAAAAAQBJAAADngWwAA0AAAElBwUDIQchEwc/ARMzAaYBDB/+82oCgh78yXx8IHyHtQNJVp9W/euVAmwnnycCpQAAAAEARwAAAlMGGAALAAABNw8BAyMTBz8BEzMBu5ggmI61f5AgkJm1A2g6oDr9OAJ+N6A3AvoAAAAAAQBG/ksFaQWwABgAAAkBDgEjIiYnNx4BMzI2PwEBIwMjATMBMxMFaf7LJbuVHC8aKgw9EDZYExL+TwPgtgEjtgGwA+EFsPn3tacJCZEFCGldWQRj+50FsPudBGMAAAAAAQA1/ksEEAROACAAAAEXPgEzMhYHAw4BIyImJzceATMyNjcTNiYjIgYHAyMTMwGgAkCiYZuQK5olupQcMhktDDwSN1QTmSBOck6CM6G22KMDsQFOUM3Y/P61pwkJmgUHYFwC/qBvSUP82AQ6AAAAAAIAT//rB4MFxQAXACUAACkBDgEjIgIbARIAMzIWFyEHIQMhByEDIQUyNjcTLgEjIgYHAwYWBmr8vVl5P97pNT05AVPyPYhGAzke/T5gAm4e/ZJpAsz7rDBqOOk0ZDWX6is9L4UKCwFLAQoBMAEgATUMCZb+Ipb97xUICQSOCAnn1/7O69UAAAADAET/6wbVBE4AIQAvADcAABMSADMyFhc+ATMyEg8BIQYWMzI2NxcOASMiJicOASMiAjczBhYzMjY/ATYmIyIGBwEiBgchNzYmeTQBI9dyoytQy2zBpisY/WsgZIdYnTwwQr2AdKUsTs9/x74xtSZZin28IwQlWYp9vCIEIlipLgHZBRlSAigBBQEhbmRmbP7523mwwzoyeztLamNmZwE08bvV5KwYudfmqgGQq4UagJYAAAABAEQAAANBBi0ADwAAMxM+ATMyFhcHLgEjIgYHA0T0JsSdHUEkMhMmGE5wE/QExbutDAmMBQZvY/s7AAAB/2b+SwNHBi0AIwAAASMDDgEjIiYnNx4BMzI2NxMjNzM3PgEzMhYXBy4BIyIGDwEzAoy2pR23kxwvGSQMPBA3URClnhaeFh3Amx8/Ji4QLhpQXxAWtgOt+/qxqwkJkQUIaV0EBo2LtrILCpEFBmlkiwAAAAIAWf/rBiUGNgAXACUAAAECACMiAhsBEgAzMhYXPgE3Mw4BBx4BByc2JiMiAgcDBhYzMgA3BMw6/pL94O41MzkBZPRpqT1XcRmjI5uAHgwStCqTr5j9JzQsiaahAQcpAlf+4/6xAWYBBgEBARwBUVJLCYl8r7wdTKtfAtb5/vXE/v3Y+QEKxwACAEb/7AUJBLAAFwAlAAATNgAzMhYXMjY3Mw4BBx4BDwEGACMiAjczBhYzMjY/ATYmIyIGB3EpARrWX5EyWVoZkSKFfhYJDQQp/ubWzcYnth5jiYGuHAQdY4iBrxsCKP4BKEhEd3ekpRNCllQY//7bATHzt9jhrhi12+SsAAAAAAEAZ//rBqUGDQAZAAABBz4BNzMOAQcDAgQjIiY3EzMDBhYzMjY3EwVXKFVkGqMqvKyBNP6+8tbtMMW2xSWKlpHiIsUFsMoakXzRzhT9e/795/zuA9v8JbafragD2wAAAAEAWv/sBVcEkQAcAAABDgEHAyM3Jw4BIyImNxMzAwYWMzI2NxMzBz4BNwVXJI2cp6ISAj+kZJ2TMH+2fyZDaV+TM5u1HFVLFwSRsJEI/LiRAVJU4fACff2BvndbUwMGigpmcQAB/xv+SwHcBDoADwAAAQMOASMiJic3HgEzMjY3EwHc6iW5lRowGioNPA83VhPqBDr7bbamCQmRBQhpXQSTAAAAAgA8/+wD9gRPABUAHQAAATISDwEGACciAj8BITYmIyIGByc+AQMyNjchBwYWAmnGxy8JM/7OtcKmLBkClR1jhVqdPC5BvSZXqi/+JwUaUgRP/tLuLf3+4wEBBtt5r8Q8MXw6TPwzqYYZgZUAAQFIBOQDhwXpAAgAAAEHIycHIzclMwOHBZRrppUFARZuBPwYlpYZ7AAAAAABAV4E5AOpBekACAAAATczBwUjJzczAmamnQT+4G26BJkFU5YS8/EUAAAAAAEBCwSlA08FsAANAAABDgEjIiY3MwYWMzI2NwNPFKuEfoMUkwsxR0JRCwWwf4ySeUZQVEIAAAAAAQFBBOoCMQWwAAMAAAEjNzMCCsknyQTqxgAAAAIBIgRfAsEF4AALABcAAAE+ATMyFgcOASMiJjcGFjMyNjc2JiMiBgEzEYJUS1wQE35TTV5wCSwpJUYJCSopJ0cFHlpob1NcY2pVLzg7LDA5PQAAAAH/t/5QAScANwATAAAhDgEHBhYzMjY3Bw4BIyImNz4BNwEnV2IJBhsoGTAXByBMMk9XDg+OjD5kPCUlEQt4ExljWlmVPAAAAAEBCATiA68F8QATAAABDgEjIiYjIgYHJz4BMzIWMzI2NwOvEIBWQIAyJkIHYA9/VzONMiZDCAXSYnxfQi8aYoFgQTEAAgEHBOQD7wXuAAQACAAAATMXASMDMwEjAxjWAf6xpBLJ/uWRBe4D/vkBCv72AAAAAgAd/ocBV/+rAAsAFwAAFz4BMzIWBw4BIyImNwYWMzI2NzYmIyIGKg5jPzhFDQ5ePjpJYAYdHBcrBgYaGhou6UVPVEBETFE/HSMlGyAkJgAB/fIEuv7KBhMAAwAAASMDM/7KeGCsBLoBWQAAAf5BBLv/owYUAAMAAAEzAyP++6jzbwYU/qcA///9WATi//8F8QAHAKD8UAAAAAAAAf5GBNn/lQZzAA8AAAE3PgE3NiYjNzIWBw4BDwH+Rh1NPwcJTUIcjnsTDl5BDwTZlwUdKSgnaV5dSEgJRgAAAAL9SwTk/8sF7gADAAcAAAEjAzMBIwMz/tak59sBpZGuyATkAQr+9gEKAAAAAfzc/rH9y/92AAMAAAEjNzP9pMgnyP6xxQAAAAEBZAT4AqoGeAADAAABMwMjAenB8FYGeP6AAAADAUEE7QP5BogAAwAHAAsAAAEjNzMFIzczNzMDIwPStye3/gG5J7mdyqqCBO3Dw8PY/vj//wDDAnABpANBAAYAdgAAAAEAVwAABLkFsAAFAAABIQEjASEEm/13/vu2ASMDPwUa+uYFsAAAAAAC/8wAAAS+BbAAAwAHAAABEyEJASEDIwPJ9fsOA2H9sAMQpAMFsPpQBbD65QQkAAADAE//6wUnBcUAAwARAB8AAAEhNyEXAgAjIgAbARIAMzIAAyc2JiMiBgcDBhYzMjY3A7D+JR4B2/E8/rL95f78NjM7AUT07AEQNbQrqrOX3ykzLaCqoegqApSW3P7a/sMBawEKAQEBJgE+/pP+9wLa/vjO/v3c/vfRAAAAAf/eAAAEXQWwAAcAAAEnASMBMxMjAwoD/ZG6AxSdzroEmAH7ZwWw+lAAAAADACIAAAShBbAAAwAHAAsAADchByETIQchEyEHIUADZx78mfQCwx79PU4DWx78pZWVAzyWAwqWAAEAWAAABXsFsAAHAAAhIwEhASMBIQRYtQEF/Wr++7UBIwQABRr65gWwAAAAAf/xAAAEoAWwAAwAAAkBIQchNwkBNyEHIQEDAP3nAuIe/EYcAjX+thwDjB79TQE2As79yJaOAk0CR46W/c0AAAMAVwAABX0FsAAVAB4AJwAAATMyEgcCACsBByM3IyICNxIAOwE3MwEiBgcGFjsBEzMDMzI2NzYmIwOzBdH0LzX+qeUFI7YjB9LyMTMBVuUHJbb/AJjhIyiApQeftp8HluElJ4GjBPb+zu/++/7hsbEBMfEBAwEguv6x2LbHxgMb/OXYt8TIAAABAIoAAAWSBbAAFwAAAT4BNxMzAwIABwMjEyYCNxMzAwYWFxMzAvKO0SJqtWo1/sfnSLZIyMsxarRqJm6EvbYCAxvUrAIS/e7+9v7rFf6WAWscASXyAhL97rvKFwOuAAABAB0AAAUIBcUAKAAAJT8BNhITNzYmIyIGDwECEhcPAiE3MyYCPwESADMyEgMHBgIHFzMHIQJjFwGLyTQXM4Cll+0uFzhbhwEXB/4zHt9ZOyMXPQFY8d3lOBclrXkB2B7+MyJzBhsBGwECdv7o/Op2/uz+9xsGcyKVYwEvrHQBNAFK/p7+5HS2/thdA5UAAAACAED/6wQ0BE4AHAAqAAABAwYWMzI2NwcOASMiJicOASMiAj8BEgAzMhYXNwEGFjMyNjcTLgEjIgYHBDSdExgjBxIGBSA5IkBIBEKeY6+gLwQ4AQTCWn0kLv2LJVSHT4E5XBRbUH22JQQ6/OxdOwMDiBMOS1RQTwEg6hUBGwEpU1CP/bu1wGBYAc1VXvK8AAAC//X+fwRwBcQAFAArAAABMhYHDgEHHgEHBgQjIiYnAyMBNiQDPwEzMjY3NiYjIgYHAx4BMzI2NzYmIwMLrLkiFHleZFcYLv7zxEqFMFy3ASMkAR04EA5MbIwXFFdqYKgWqB93VXOxGhhWbAXE261kli0vwH/i2S8w/jQFsbXf/P9QRXxsaIaRbfy6NDWggnulAAAAAQCz/mAEJgQ6AAsAAAEzAQMjEwMzExczNwNtuf3XYLZhlblXAQMkBDr8BP4iAeQD9v0AU1MAAAACAEH/7AQqBhwAIQAvAAABPgEzMhYXBy4BIyIGBwYWFxYSDwEGACMiAj8BPgE/AS4BAwYWMzI2PwE2JiciBgcBfB3TrEONQkIxfkRKawwLRXG6iSkEM/7f18jBLwQm1o0GU0dCJVyKfLkhBB1ldn28IAT2k5MtKIAXJEk/NlosS/7uzhf8/uwBKOgXvOsjCyeM/WGyytikF5HSGtyhAAAAAQAp/+0D/QRMACkAABM+ATcuATc+ATMyFgcjNiYjIgYHBhY7AQ8BIyIGBwYWMzI2NzMGBCMiJkgTeWZKRQ8h7sSizhy1D2phaIsNEFFwwggVwmyIERFpc2SjELUk/u+0tNABMGR9HyV2SKOWsI9OXmJEUlEmaldZUl9yTrSerAABAIv+gQRYBbAAIAAAAQcBDgEHBhYfAR4BBw4BByc+ATc2Ji8BLgE3NhI3ASE3BFgX/mualBwWKUpzhlcVEYpGTzk7Cgc3SU6aXCEauK0BRf2vHgWwdv5Snd6QalsTJixDbUqpM1M3Uy0nLxYXL56hgAEvrwFAlgABADX+YQQSBE4AFAAAARc+ATMyFgcDIxM2JiMiBgcDIxMzAaACQKJhno8t27XaIE5yToEzorbYowOxAU5QxOH7uAREoHNKRPzWBDoAAwBW/+sEZwXFAA0AFgAfAAABAgAjIgIbARIAMzISAwUhNzYmIyIGBwEhBwYWMzI2NwPrPf7t0L+2OEU8ARXQv7Q3/UQB8xwpV39zrSYBuf4NGipZfnSrJwIs/tD+7wEqARcBVwEuART+1f7pY4vRs8TA/uCF0bXEwgAAAAEAfv/rAfwEOQAPAAABAwYWMzI2NxcOASMiJjcTAfSiESUtFTAWDjBUM2tcIaAEOfzUVDQOC4AeFY6eAyIAAAAB/9H/8AO3Be4AIQAAMyMBJy4BIyIGIzc+ATMyFhcTHgEzOgE3Bw4BIyImJwMjB5vKAjgsCiUnCRwIHBFGGVVPCbsHHx8LEQgZDikVVVYTZAMzBALuOi4CjAQIU1X7qDUrApQFB1F9Al5zAAABADr+dwQbBcMAMwAAAS4BIyIGBwYWOwEHMwcjIgYHBhYfAR4BBw4BByc+ATc2Ji8BLgE3PgE3NS4BNzYkMzIWFwPjOF4zgqgQFnSfhAgBF4So3CAcbW1jgF4VEYlGTz8yDAk1TjLIpSsgvZVjXhQiAQ7cPIEoBQoRE21QcWsnb6CjiYsdFyNKbUmmNFM8RjcuJxMNNMDUosErAyuUXa+nFxAAAAEAcP/rBJcEOgAXAAABIwMGFjMyNjcXDgEjIiY3EyEDIxMjNyEEeXGEESUtFTAWDjBUM2tcIYL+jbq2unceA8YDpP1pVDQOC4AeFY6eAo38XAOklgAAAAAC/+L+YAQmBE4AEAAeAAABCgEjIiYnAyMTNRIkMzISAyM2JiMiBgcDHgEzMjY3A+0z+b9YgCpotsc1ARm8yao1tSlJh22uGz4XXlN8siEB9f8A/vc/QP31A+ICAQz+/sP++c7g64v+zUVJz6UAAAAAAQBJ/ooD/wROACEAAAEyFgcjNiYjIgYPAQYWFx4BBw4BByc+ATc2JicuAT8BNgACoae3JKsXVW96uB8IH3ihiWQWEIpGTj4yDAkzUNmtKwgxASAETtG3c3/qnCqWrTEsTW5IqDNTPUQ3MCcUNP7WKvYBJgACAEP/7ASzBDoAEAAeAAABIR4BDwEGACMiAj8BNgA3IQEGFjMyNj8BNiYjIgYHBJX+/EwzGgUu/trUx78xBDIBIdcCEfx3JlmKfbwjBCNciX26IAOjStGFF+X+5QE08Bj7ARYB/da71OOsGK/M2qEAAQC3/+sEHgQ6ABMAAAEhAwYWMzI2NxcOASMiJjcTITchBAH+qoQRJS0VMBYOMFQza1whgv7BHQNKA6b9Z1Q0DguAHhWOngKPlAAAAAEAWv/rA/QEOgAVAAABAwYWMzISNzYmJzMeAQcCACMiJjcTAcGDIkRZds8iFgkYvhsGHzb+5N+rny6DBDr9b6iBAQmogfuNbf2f/vT+xtvlAo8AAAIAP/4iBUAEOgAZACMAAAUmAjc+ATcXDgEHBhYXEz4BMzISBwYABQMjAT4BNzYmIyIGBwHq7b4vJKSNSV5vGyNnoZAWlXG01y0y/tP+7Fy2ATCo2R4cYYEaKAUQHAFB5rf2WoNKyHKq5hwC0XBy/svl9f7bF/4zAmYc6ZOh4ikcAAAAAAEAQ/4pBS4EOgAbAAABAz4BNzYmJzMeAQcCAAUDIxMmAhsBMwMGFhcTA3O9qNsgFgoavRwKHzX+1f7oWrZb2sU5YbZhL3GMvQQ5/E8f9ZyA+4ds+pz+/P7PFf47AcgcASwBGwHm/hjm0BYDswAAAAABAF3/6wXsBDoAKQAAAQ4BBwYWMzI2NxMzAwYWMzI2NzYCJzMeAQcKASMiJi8BDgEjIgI3PgE3AjNZeB0qMGpYkCQ8tzwnSmFglScWEiO/IxEfOOjFaIERAz2sdbZ6MiJxUwQ6iP+EzuGkswEr/tXClfG+hAEAh2/9n/7u/s51cgF4cAFJ+6vwcAAAAAIAWv/rBQoFxQAZACQAACUyNjcuAT8BPgEzMhYHAwIAIyICGwE3AwYWAQYWFxM2JiMiBgcCJZPoK8DNJg0l0JKLhyNmPf6y8NPZNoS3hSx0AYwbaoFIFyxEO2IVhvDTCvq/Pry/yrH+Av7T/swBWQEIApgC/Wba7AOEhZkIAWZ4Z3BvAAEAswAABNgFuwAjAAABPgEzMhYXBy4BIyIGBwEDIxMDLgEjIgYHNz4BMzIWFxMXMzcDW0mETR4vFjQFEwweOxn+aXS0dJYIKx8OFgQJGTAgR2EYVQQDIgTXfmYKDpIDBSUs/X79ugJEAoQtJAUDkg4KZ33+aEpKAAIAZP/rBjQEOgAXAC0AAAEjFgYHCgEjIiYvAQ4BIyICNz4BNyM3IQE2JichDgEHBhYzMjY/ATMHBhYzMjYGFn4MBRU42LFpgBADPat1pGgyFkEtaR4FZf6gEAEP/Qs2ShQqIFZXkSQztzMnSWJNgwOjVLZq/u/+zXZyAXlwAUn7cbJRl/31XbdgYrZczeKks/z8wpXyAAAAAQDb//UFfwWwABsAAAEhAz4BMzIWBwYEIzcyNjc2JiMiBgcDIwEhNyEE9/4eXVGQM9rZLC/+8+kaj6ocHHWYN5RIibYBBf58HgQcBRr+LRcd8Nvn1I+ckJaWGhb9VAUalgAAAAEAZv/sBPwFxgAfAAABBgQjIgAbARIAMzISByM2JiMiAg8BIQchBwYSMzI2NwR5Q/7z39/++zYzOwE17Nn4F7cLipmQ2igLAhke/ecKLJiii6E3AcDg9AFqAQsBAQEoATz+8uCjtf7/yzmVNdj++JinAAAAAv/eAAAH4wWwABYAHwAAAQMhMhYHBgQjIQEhAwIAKwE3MzISGwEBAyEyNjc2JiMFcXIBTs3JJyv+6t/9+wEF/itrVf717TEeJoW6RokCsXUBToG0GRpmjQWw/cX3xNbkBRr96/5k/peVAR8BUQKr/TD9tax7gqIAAgBXAAAH6AWwABIAGwAAASETMwMhMhYHBgQjIRMhAyMBMwEDITI2NzYmIwGxApV/tnwBT87MJSn+7OD9/Ib9a4a2ASO2ArJqAU6DrxcYaI8DNwJ5/Zbku8zbAqL9XgWw/QH97phye40AAAAAAQDyAAAFqgWwABcAAAEhAz4BMzIWBwMjEzYmIyIGBwMjASE3IQUP/hRZT5Rh1sYvW7VbJGSWT6FUjrUBBf6EHgQdBRr+RRQU0+3+OQHHtnQWFP05BRqWAAEAV/6aBXsFsAALAAABMwEhATMBIQMjEyEBerb++wKVAQW2/t3+YUi1SP5TBbD65QUb+lD+mgFmAAAAAAIASAAABKoFsAAMABYAAAEhAyEyFgcGBCMhASEBBwMhMjY3NiYjBIz9d1oBTs/MJyv+7eH9/AEjAz/84R9QAU6DsBkZZ48FGv4+5sLU3AWw/ROe/nCjeoCRAAAAAv+W/poFhQWwAA4AFQAAASMTIQMjEzM2EhsBIQEzAQYCByETIQTTtUf8Lki1ZnNaukKTAy3++7j9RDqnZQKV5/41/psBZf6aAftYAVABLQJG+uUC1fj+lnMEhQAB/8oAAAddBbAAFQAAASMDIxMjASMJATMTMxMzAzMBMwkBIwSJkIa1hpX9/uMCYf7o1OKZf7V/kgHg1P3VAS7iAp/9YQKf/WEDAQKv/YQCfP2EAnz9U/z9AAAAAAEAIP/rBLAFxQApAAABDgEHHgEHBgQjIiY3MwYWMzI2NzYmKwE/ATMyNjc2JiMiBgcjNiQzMhYEiReUdGxcGCz+zei7+Cu1GoKJjc0YHXqdmA0RmIqsFxh1l3DBFbUnASjK098EJ3CjLSyqfNnR1tN/lZd6k3c/V4Z0e4mQbMXN1wAAAAEAWAAABXoFsAALAAABMwEjEycBIwEzAxcExLb+3bbgA/yPtQEjteADBbD6UARfAfugBbD7oQEAAf/eAAAFcQWwAA8AAAkBIwEhAwoBKwE3MzISGwEFcf7dtwEF/iR5YfjgMB4lealPmwWw+lAFGv3r/l7+nZUBGQFXAqsAAAAAAQCj/+sFRQWwABUAAAEXMwEzAQ4BIyImJzceATMyNj8BAzMCbB8DAeTT/TNVlo8WPgchCT0QPlAyNu7LAvu4A237QIZ/BgOQAgJOTlQEQAADAFv/xAX2BewAFQAeACcAAAEzMgADAgArAQcjNyMiABMSADsBNzMBIgYHBhY7ARMzAzMyNjc2JiMD+RngAQQzOP6R9BontSca4f79NDcBbvUbKbX+6aj5Jy2OuBuvta8bpvgpK461BR7+uP8A/uj+zMbGAUgBAgEWATTO/p3ux9zZA2r8lu3K2NsAAAEAV/6hBXoFsAALAAABMwEhATMBMwMjEyEBerX++wKWAQW1/vuNd6FG/CcFsPrlBRv66f4IAV8AAQDRAAAFSAWwABMAAAkBIxMOASMiJjcTMwMGFjMyNjcTBUj+3bV6Yqdy18cwW7dbJWOXW71jiwWw+lACYR0a0u4Bxv46t3McHAK4AAEAVwAABzAFsAALAAAJASEBMwEhATMBIQECMP77AcwBBbX++wHJAQW2/t36SgEjBbD65QUb+uUFG/pQBbAAAAABAFf+oQcwBbAADwAACQEhATMBIQEzATMDIxMhAQIw/vsBzAEFtf77AckBBbb++5B2o0b6bwEjBbD65QUb+uUFG/rl/gwBXwWwAAAAAgDJAAAFgQWwAAwAFQAAEyEDITIWBwYEIyEBIQEDITI2NzYmI+cCKXgBTs/MJyv+7eH9/AEF/o0BsW8BToOwGRlnjwWw/ajmwtTcBRv9qP3So3qAkQAAAAMAVwAABqIFsAAKABMAFwAAASEyFgcGBCMhATMLASEyNjc2JiMBIwEzAbgBTs/MJyv+7eH9/AEjtpZvAU6DsBkZZ48Cl7UBI7UDWObC1NwFsP0T/dKjeoCR/T0FsAAAAAIASAAABJIFsAAKABMAAAEhMhYHBgQjIQEzCwEhMjY3NiYjAakBTs/MJyv+7eH9/AEjtpZvAU6DsBkZZ48DWObC1NwFsP0T/dKjeoCRAAAAAQCH/+wFNAXGAB8AAAE2ADMyEgsBAgAjIgI3MwYWMzISPwEhNyE3NiYjIgYHAR0tAUDr2+Q2Mzv+qO/c5i21I4GgkfUpC/3oHgIXCyt+n5PTHwPf4wEE/qD+8/7//tv+uQEF36qlAQzJOJU22/y0nQAAAAACAGL/6wblBcUAFQAjAAABAgAjIgATNyMDIwEzAzM3EgAzMgADJzYmIyIGBwMGFjMyNjcGfTz+sv3l/vw2BrN/tQEjtYayEDsBRPTsARA1tCuqs5ffKTMtoKqh6CoCTv7a/sMBawEKH/2BBbD9ZE0BJgE+/pP+9wLa/vjO/v3c/vfRAAACAAwAAATxBbAADQAWAAAzIwEuATc2JDMhASMTIQEjIgYHBhY7Ac3BAbt+XyApATbWAbL+3bdy/tEBwvuXrh0bf4j8Am82upvR5fpQAjwC3o2RhKYAAAAAAgBE/+sEUAYRABwAKgAAATISDwEGACMiAj8CEgA3PgE3Mw4BBw4BBxc+ARciBg8BBhYzMjY/ATYmAqG8uCIEKP7o1szJJgEVNgEo4H11DJQerriDzTcCS68kgKoXBBxjiYGuGwQYaAP7/u/YGPX+5gEm6QiAAVYBaiwZQEq4aCAYpKQBQEuVw5EYrc3VpRiaugAAAAMAQAAABCoEOgAPABgAIQAAMxMhMhYHDgEHFR4BBw4BIwsBITI2NzYmIyczPgE3NiYrAUDYAYy/xx4RaFRYSxIh4sG3QgEWYn8QEVVr+eFshhARZHvWBDqUlVJzHQMYh1qkjwHc/rdWT1VPkgFNTFVJAAAAAQA+AAADlQQ6AAUAAAEhAyMTIQN3/je6ttgCfwOj/F0EOgAAAv+a/sIETgQ6AA4AFQAANz4BNxMhAzMDIxMhAyMTAQ4BByETIUhieTtgApC7hl61QP1KQLZfAhovflAByZn+05VizuABlfxb/i0BPv7CAdMCELv8WQL8AAH/wwAABgEEOgAVAAABIwMjEyMBIwEDMxMzEzMDMwEzARMjA7R1XrZedf6U5QHd5Nugclq2WnMBVNv+UPjlAdj+KAHY/igCPgH8/j8Bwf4/AcH+A/3DAAABAB7/7QPEBEwAKwAAATMyNjc2JiMiBgcjPgEzMhYHDgEHHgEHDgEjIiY3MwYWMzI2NzYmKwE/AgFtr1xpEA9KZVOQDrQf+aqorh4QaVNOQxIh8bme0iK1EmNlX4kPE01rrwgJBQJ1UkxLW2RInKOil1F3IiJ9WqSfq6dUbGVMYUoqLRgAAAAAAQBAAAAERwQ6AAsAAAEzAyMTJwEjEzMDFwORtti2mwP9pLXYtZsDBDr7xgMJAfz2BDr89wEAAAABAEAAAARhBDoADAAAASMDIxMzAzMBMwkBIwHKeFy22LZcbAGp2v4JAT/mAc/+MQQ6/jUBy/36/cwAAAAB/9UAAARJBDoADwAAAQMjEyEDCgErAT8BMjYbAQRJ2Le6/rZKUse+NCQmW3M+bgQ6+8YDo/7H/rH+5aIBxwEAAdAAAAEAQAAABX8EOgAOAAAlATMDIxMnASMDIwMjEzMCpwH149i1mAL+LX2jA5y22OvyA0j7xgL8Af0DAwv89QQ6AAABAEAAAARGBDoACwAAISMTIQMjEzMDIRMzA262XP4+XLbYtl4Bwl62AdD+MAQ6/ioB1gAAAQBAAAAERwQ6AAcAACEjEyEDIxMhA2+2uv49urbYAy8Do/xdBDoAAAEAkAAAA/cEOgAHAAABIQMjEyE3IQPa/rK6tbr+uR0DSgOm/FoDppQAAAAAAwBA/mAFVwYYAB8ALQA7AAATGgEzMhYXEzMDPgEzMhIDBwoBIyImJwMjEw4BIyICNyU2JiMiBgcDHgEzMjY3IQYWMzI2NxMuASMiBgdzOfK3JkAbYrViI0wtqIg1BDPttSxIHlW1VCFFKKaNLwP9KUR+HDEXnhMuH3OjIfy9JUN9Gi0WnhIrGXOjJgIKAR0BJw8OAef+Fw8Q/sL++hX/AP72ERD+VAGlDQ0BHuwVzeELCfzrCAfPpre+CAgDGQcI8L4AAAEAQP6/BEcEOgALAAABMwMhEzMDMwMjEyEBGLa6AcO6trt7cKJA/QsEOvxbA6X8W/4qAUEAAAAAAQB/AAAEBgQ7ABMAACEjEw4BIyImNxMzAwYWMzI2NxMzAy62TjlwQa+uKj+1Px5ObDp0PWu2AYgQD8zMATr+xpFwEBACGgAAAQBAAAAGAgQ6AAsAAAEDIRMzAyETMwMhEwHOugFkura6AWS6ttj7FtgEOvxbA6X8WwOl+8YEOgABADX+vwX3BDoADwAAAQMhEzMDIRMzAzMDIxMhEwHDugFkura6AWS6truRcKFA+znYBDr8WwOl/FsDpfxb/ioBQQQ6AAIAhgAABIEEOgAMABUAABMhAzMyFgcOASMhEyEBAzMyNjc2JiOjAd1L+6qnHiPmuP5Quv7aAZFR+l97ERJEZwQ6/orDm6q8A6X+iv5mdVVbdQAAAAMAQAAABasEOgAKAA4AFwAAATMyFgcOASMhEzMBIxMzAQMzMjY3NiYjAYP7qqceI+a4/lDYtgMFt9i3+7pR+l97ERJEZwLEw5uqvAQ6+8YEOv31/mZ1VVt1AAAAAgBAAAADzwQ6AAoAEwAAATMyFgcOASMhEzMLATMyNjc2JiMBg/uqpx4j5rj+UNi2aVH6X3sREkRnAsTDm6q8BDr99f5mdVVbdQAAAAEAM//rA+kETgAdAAABIgYHIzYkMzISDwEGACMiJjczBhYzMjY3ITchNiYCUlOhEq0fARGhwbgtCDL+4NKjuiKtF2Bjb68o/pIeAW0SWQO4eluezf7G4ir4/tvfqHCCypKVlLMAAAAAAgBA/+wF9QROABMAIQAAATM2JDMyEg8BBgAjIgI3IwMjEzMBBhYzMjY/ATYmIyIGBwFz5TUBEMbNxSYEKf7m1sDHFOpet9i3AS0eY4mBrhwEHWOIga8bAm7h//7M8hj//tsBDt7+KAQ6/da32OGuGLXb5KwAAAAAAv/VAAAEDgQ6AA0AFgAAAQMjEyMBIwEuATc+ATMBBhYzIRMjIgYEDti2VPf+vMQBXFhMFh/pu/7zEEVeAQZJ8mCCBDr7xgGm/loBxSibaJ2t/rRRYgFrbgAAAAABADX+SwQZBhgALAAAASEHFz4BMzIWDwEzAw4BIyImJzceATMyNj8BEzc2JiMiBgcDIxMjNzM3MwchAt7+/zMDQKRem48rLQJtJbqUHTMXLAs9EDZXExJbLR5Pb0mPOZ628pwenCi2KAEBBLr/AkhN0Nnf/eG1pwgJkgUJal1ZAcbhlndUSPzoBLqVyckAAAABAFH/7AQFBE4AHQAAJTI2NzMGBCMiAj8BNgAzMhYHIzYmIyIGByEHIQYWAftaoA+sGf7ypte7JQcnARHhrsEarBBqZ4GfIQFxHv6VEV6BeFyazwEy6ir1ASfeqmyGvpOVm7YAAv/VAAAGIQQ6ABYAHwAAAQMzMhYHDgEjIRMhAwoBKwE/ATI2NxMBAzMyNjc2JiMEJVP7qqodIOW4/k+6/tc+RtTHMyEnX4UyXAIlSvpefBAPR2cEOv5juZKgsgOj/sf+qf7tmAHb9gHQ/c7+i3NOUWMAAAACAEAAAAZCBDoAEgAbAAABIRMzAzMyFgcOASMhEyEDIxMzAQMzMjY3NiYjAXwBwlK2U/uqqh0g5Ln+UGj+Pmi22LYCB0r6XnwQD0dnAqABmv5iuJKgsgIM/fQEOv3O/otzTlFjAAAAAAEANQAABBkGGAAcAAABIQMXPgEzMhYHAyMTNiYjIgYHAyMTIzczNzMHIQL1/uk0A0CkXpuPK4e1iB5Pb0mPOZ6284Yehie2JwEXBL/+/AJITdDZ/VsCp5Z3VEj86AS/lcTEAAABAED+nARHBDoACwAAAQMhEzMDIQMjEyETAc66AcO6ttj+xke2R/7B2AQ6/FsDpfvG/pwBZAQ6AAEAaP/rBskFsAAgAAABAw4BIyImJw4BIyImNxMzAwYWMzI2NxMzAwYWMzI2NxMGydQt9LVgih5Bs3GhqSnUttQdTFphmhvUu9QdVmNYkBvUBbD72dzCVlhcUtPLBCf72Y18h4IEJ/vZjXyHggQnAAABAEX/6wXIBDoAIAAAAQMOASMiJicOASMiJjcTMwMGFjMyNjcTMwMGFjMyNjcTBciRKN6kUngdOptikpgmkbWRGTxKUIIXkbaRGUZSSHgXkQQ6/SnIsEdITEO/uQLX/Sl5anNwAtf9KXlqc3AC1wAAAgA+AAAD1AYYABIAGwAAASEDMzIWBw4BIyETIzczEzMDIQEDMzI2NzYmIwL3/tZD+aumISTouf5Q2LAesEK3QgEq/ldZ+V99ExNCZwQ6/q7MpLLGBDqVAUn+t/2E/kJ/XWKAAAEAY//sBp8FxgAnAAABMzcSADMyEgcjNiYjIgIPASEHIQcGEjMyNjczBgQjIgATNyMDIwEzAb6tBzsBNezZ+Be3C4qZkNooBwIBHv3/DiyYoouhN7dD/vPf3/77Ng6tiLUBI7UDQCIBKAE8/vLgo7X+/8sklknY/viYp+D0AWoBC0n9VgWwAAABADz/7AWRBE4AIwAAATM2ADMyFgcjNiYjIgYHIQchBhYzMjY3MwYEIyICNyMDIxMzAW6lMAEL1K7BGqwQameBnyEBlx7+bxFeiVqgD6wZ/vKmyb4Tq1232LcCZ98BCN6qbIa+k5Wbtnhcms8BD9f+LgQ6AAL/2AAABDsFsAALAA8AAAEjAyMTIwMjATMTIwEhAyMDTpdYtFiL57kDDJu8uf5IAXJCAwG6/kYBuv5GBbD6UAJYAjwAAv+8AAADjgQ6AAsAEQAAASMDIxMjAyMBMxMjASEDJyMHAqBkO7U7aam5AnKcxLr+nwETNgQDIgEr/tUBK/7VBDr7xgHBAT1KSgAAAAIAdAAABicFsAATABcAAAEhATMTIwMjAyMTIwMjEyEDIwEzASEDIwGhAWUBypu8uTSXWLRYi+e57f7QWLUBI7UBawFxQgMCWQNX+lABuv5GAbr+RgG6/kYFsPyoAjwAAAIAXQAABS4EOgATABkAAAEzATMTIwMjAyMTIwMjEyMDIxMzASEDJyMHAW3zAW6cxLo0ZDu1O2mpua26O7fYtwEnARM2BAMiAcECefvGASv+1QEr/tUBK/7VBDr9hwE9SkoAAAACADoAAAY8BbAAIQAlAAABMzchATMyFgcDIxM2JisBBwMjEycjIgYHAyMTNiQ7AQMzEzMBIQKtAwMDif4QGdXGL0q1SiNjlW8efLV/CnuJoCBKtkoyAQHqJu7Q3wQBcf3gBaMN/XvO6f6MAXSxcCj9kwJ7Gn6j/owBdPy7AoX9ewHvAAACADoAAAUOBDoAGwAeAAABHgEPASM3NiYrAQcDIxMnIyIGDwEjNz4BNwMhARMhA6KwnyshtiEjUoEuDle1WQM4d44gIbYhMOXJrAOB/eHo/rECWgrP3KWlsXAS/kwBvgh+o6Wl9LwGAd/+JwFDAAAAAgBiAAAISgWwACkALQAAIRM+ATchAyMBMwMhOwEDMxczNyEBMzIWBwMjEzYmKwEHAyMTJyMiBgcDATMBIQJIShM9Lf6MhLUBI7WBAuEVJu7QBAMDA4n+EBnVxi9KtUojY5VvHny1fwp7iaAgSgKYBAFx/eABdGGNNP1qBbD9ewKFDQ39e87p/owBdLFwKP2TAnsafqP+jAMrAe8AAgA+AAAG4gQ6ACIAJQAAITc+ATchAyMTMwMhAyEBHgEPASM3NiYrAQcDIxMnIw4BDwEBEyECDiETOyr+qFq32LdgAp+rA4H+lLCfKyG2ISNSgS4OV7VZA0NzhyAhAf/o/rGlYYw0/joEOv4iAd7+IArP3KWlsXAS/kwBvggDf5+lAmEBQwAAAAL/x/5HBEcHcAAtADYAAAEyFgcOAQceAQcGBCsBIgYHBhYXBy4BNz4BOwEyNjc2JisBPwEzMjY3NiYjITcBNzMHBSMnNzMCZbzXJBeXd25gGSv+6M0vRE8KEEM7YV9vFRy2nSdzsRgdepqFBxaFiaoXF2iG/uYeAbmmnQT+4G26BJkFsNS1caEqLKx92NE8NUxOIHsvn3CKc5d5kn0jcoJzcX+VASqWEvPxFAAC/8b+RwO+BhsALQA2AAABMhYHDgEHHgEHDgErASIGBwYWFwcuATc+ATsBMjY3NiYrAT8BMzI2NzYmIyE3ATczBwUjJzczAhiqyxwRdV9aURAh+rstRFAKEEM8YV9vFRy1nSZijxAScIeFBxeFdo0QDmBw/uceAXymnQT+4G26BJkEOqaOUXUiI3dUo6A8NUxNIXsvn3CKc15MW0wjclZMSFKWAUuWEvPxFAAAAwBd/+sFNwXFAA0AFgAfAAABAgAjIgIbARIAMzISAwUhNzYmIyICBwUhBwYWMzIANwTQOv6S/eDuNTM5AWT06Pk0/GsC1A0qk6+Y/ScCqf0sCSyJpqEBBykCV/7j/rEBZgEGAQEBHAFR/pn++j5A1vn+9cTWLdj5AQrHAAMARv/sBBwETgANABQAGwAAEzYAMzISDwEGACMiAjcBMjY3IQYWEyIGByE2JnEpARrWzcUmBCn+5tbNxicBhHWmJf3rEGf/dKQlAhMLZwIo/gEo/szyGP/+2wEx8/5xvpmgtwM3uJOZsgAAAAEA6AAABVwFxAARAAABFzM3AT4BMxcHIyIGBwEjAzMCFQcDOQGRTpBmLyIMLUcq/aqbt8QBcXt7AzSegQGjP1T7cwWwAAAAAAEAswAABEsETQAVAAABFzM3Ez4BMzIWFwcuASMiBgcBIwMzAa4CAyT5QY5NHS8TMQUSDB1CFf5Eioq5ATpVVQIjfnIKDpIDBTIr/LIEOgAABABP/3MFJwY1AAMABwAVACMAAAEjEzMBIxMzAQIAIyIAGwESADMyAAMnNiYjIgYHAwYWMzI2NwOFtU21/qa1TrUB+Tz+sv3l/vw2MzsBRPTsARA1tCuqs5ffKTMtoKqh6CoEtQGA+T4BiQFS/tr+wwFrAQoBAQEmAT7+k/73Atr++M7+/dz+99EAAAAEAEb/iAQcBLYAAwAHABUAIwAAASMTMwEjEzMBNgAzMhIPAQYAIyICNzMGFjMyNj8BNiYjIgYHAtC1SbX+97VJtf4YKQEa1s3FJgQp/ubWzcYnth5jiYGuHAQdY4iBrxsDSAFu+tIBbgEy/gEo/szyGP/+2wEx87fY4a4YtdvkrAAAAAADAGz/6waVB1QALAA+AEQAAAEyFgcDDgEjIiYnDgEjIiY3Ez4BMwciBgcDBhYzMjY3EzMDBhYzMjY3EzYmIxMHIyIkIyIGDwEjNz4BMzIWMwEnPwEzBwVRn6UrczHurmSRIUGxcKGlLHMv77AeUosdcyBIWmGaG1e2Vx1ea1GLHnMfSFm4GStw/v0rLUQKBHsIFoNuPfpt/g89TRytGQWv59v9wO7UVVZbUObcAkDt1ZWak/3AoI2HggG0/kyNfJmUAkCfjgG7fX85NhIkdWV//lJAdIx8AAADAEj/6wWfBfEALAA+AEQAAAEyFgcDDgEjIiYnDgEjIiY3Ez4BMwciBgcDBhYzMjY/ATMHBhYzMjY3EzYmIxMHIyIkIyIGDwEjNz4BMzIWMwUHJz8BMwR6kJUoOizXnld/IDqcYpKUKTor158dRHIZOhw4SlCCFy+1LxhPWUJxGjobN0j7GStx/v4qLUQKBHwHF4NvPPpu/s7APk4brgRE08n+39vBSElNRNLKASHZw5WHgP7fjXpzcOvreWqFggEhjHsBwn1/ODYSI3VmgOrEQHSMAAIAaP/rBskHAwAHACgAAAE3IQchByM3BQMOASMiJjcTIwMOASMiJjcTIwMGFjMyNjceATMyNjcTArcVAvsV/s0ZpRkCOtQbkFhjVh3Uu9QbmmFaTB3UttQpqaFxs0EeimC19C3UBplqan196fvZgod8jQQn+9mCh3yNBCf72cvTUlxYVsLcBCcAAAAAAgBF/+sFyAWxAAcAKAAAATchByEHIzcBAw4BIyImNxMjAw4BIyImNxMjAwYWMzI2Nx4BMzI2NxMCIRUC+hL+yhmkGQHPkRd4SFJGGZG2kReCUEo8GZG1kSaYkmKbOh14UqTeKJEFR2pqgID+8/0pcHNqeQLX/Slwc2p5Atf9Kbm/Q0xIR7DIAtcAAAABAGT+gwUNBcUAGAAAASMTJgI3ExIAMzISByM2JiMiAgcDBhY7AQJDtUm8tzIzOwFZ79vmLLYigJ+S9Sg0LICgav6DAW4fAVL1AQEBJQFI/vneqab+88j+/dv8AAEASv6DA/sETgAYAAABIxMmAj8BNgAzMhYHIzYmIyIGDwEGFjsBAdu2SpyJKQgxASHUobkhqxZiYHq5HwgjUodi/oMBciIBKMkq9gEm4advg+qcKq7aAAABAFUAAATCBT4AEwAAARcHJwMjASc3FwEnNxcTMwEXBycCOuta7emgASHrWe8BBetc7e6e/trtXekBvax5qv6+AY6reasBb6t7qwFN/mereKoAAAAB/T0EpwAcBfsABwAAAQcnNyE3Fwf9+BmiMAH5FKIrBSV+AedsAdUAAf1kBRcAQwYVABEAAAEyJDMyFg8BIzc2JiMiBCsBN/2mbQErPG9aFgd8AwstLSv+zHArGQWVgGZ1IxI2OH99AAH+bwUY/zcGWAAFAAABNzMHFwf+bxmsHB9XBdx8jHRAAAAAAAH+kAUY/6cGWAAFAAABJz8BMwf+zT1NG68ZBRhAdIx8AAAAAAj6t/7EAdoFrwANABsAKQA3AEUAUwBhAG8AAAE+ATMyFgcjNiYjIgYHAT4BMzIWByM2JiMiBgcDPgEzMhYHIzYmIyIGBwE+ATMyFgcjNiYjIgYHAT4BMzIWByM2JiMiBgcBPgEzMhYHIzYmIyIGBwE+ATMyFgcjNiYjIgYHAz4BMzIWByM2JiMiBgf+DBN5XVZZEWgKIDErOwkBhRJ6XFZaEGkJITErOgghEnpdVlkQaQkfMSw7CP56EnlcVlkQaAkgMSs6Cf1HE3ldVloRaAkgMSs7Cf6DE3pdVlkRaAohMSs5Cv6NE3pcV1kRaQofMis7CTYSe1xWWxFpCiAyKzoJBPNaYmlTLzY6K/7rWmJpUy82Oiv+CVpiaVMvNjor/flaYmlTLzY7Kv7kW2FoVDA1OisFGlpiaVMvNjor/glaYmlTLzY6K/35WmJpUy82OyoAAAAI+tb+YwGOBcYABAAJAA4AEwAZAB4AIwAoAAAFFwMjGwEnEzMDATcFByUFByU3BQE3JRcGBQEHBSclEycDNxMBFxMHA/4YB7VaibcJtlmIAZQPAR0U/sz7vA/+4xQBMwOxBgFHMyj+7/x5Bf63MgE6bBBISn0CghBKTHs8Dv6tAWEEog4BUv6g/hEMfGJHOwx8YkcBrhCZRBex/I4RmUXIAuQCAUZF/tX84wL+u0cBKwAAAAACAD4AAAPUBnAAEgAbAAABIQMzMhYHDgEjIQEjNzM3MwchAQMzMjY3NiYjAyT+1nD5q6YhJOi5/lABBbAesCe3JwEq/ipZ+V99ExNCZwUa/c7MpLLGBRqWwMD8o/5Cf11igAAAAwBXAAAFFwWwAAMADgAXAAABBwE3AQMjASEyFgcGBCMlITI2NzYmIyEEr3/+9n/93HW1ASMCBM7LJyv+7OH+zwFPg7EZGmaP/rECPmQBk2X+eP22BbDww9bdlaN5hZoAA//i/mAEJgROAAMAFgAkAAAlBwM3JQ4BIyImJwMjATMHFz4BMzISAyM2JiMiBgcDHgEzMjY3A5OA7n8BSjPovluLLWq2ASucCAM7lFqypzS2KGKJSXYwahtrVnyfIQ1lAXVlX//3REP97gXabgFAQ/6s/vzJ9VJI/fFDSLylAAABAEgAAATwBwEACQAAASMVIQEjASETMwSOAv13/vu2ASMCjES1BRsB+uYFsAFRAAABADUAAAPRBXgACQAAASMVIQMjEyETMwNzBf43urbYAc5AtgOkAfxdBDoBPgAAAAABAFf+3gS5BbAAFQAAASEDMzISAwIAIzcyNjc2JisBAyMBIQSb/Xdfqvv0Njj+8N8bhasmKY2/qoa2ASMDPwUa/ib+0P7v/uf++JHSvtLQ/V8FsAABADX+5QOMBDoAFQAAASEDMzIWBwYCByc+ATc2JisBAyMTIQNu/jc5aMnfLB7ovBOChxcdfYdoYbbYAn8Do/7i/t2M/uskkCKedZmj/hoEOgAAAAABAEgAAAVQBbAAFAAACQIjAyMHIzcjAyMBMwMzEzMDMwEFUP4CAQLiu0gxkTFchLYBI7aBXDSRNEYBqgWw/U/9AQKV9/f9awWw/XoBAv7+AoYAAAABAD4AAASfBDoAFAAACQETIwMjByM3IwMjEzMDMzczBzMBBJ/+XevloCknkCdZXLbYtlxZK5ArJAFHBDr9//3HAc/ExP4xBDr+NdbWAcsAAAEA8wAABoYFsAAOAAABIwMjASE3IQMzATMJASMDU4mEtwEF/l8eAlh/kwIj5v1rAYTPApX9awUblf2EAnz9KP0oAAAAAQClAAAFjAQ6AA4AAAEjAyMTITchAzMBMwkBIwL1eFy2uv6AHgI2XGwBqdr+CQE/5gHP/jEDpJb+NQHL/fr9zAAAAAABAFcAAAfIBbAADQAAASETIQchASMTIQMjATMBqwKUhAMFHv2w/vu1gf1sgbUBI7UDGwKVlfrlAob9egWwAAAAAQA1AAAFjgQ6AA0AAAEhEyEHIQMjEyEDIxMzAWUBwl4CCR7+rbq2XP4+XLbYtgJkAdaW/FwB0P4wBDoAAQBX/t8HWgWwABcAAAEzMhIDAgAjNzI2NzYmKwEDIwEhASMBIQT9bvv0Njj+8N8bhasmKY2/boa1AQX9av77tQEjBAADQf7Q/u/+5/74kdK+0tD9XgUa+uYFsAABADX+5QY8BDoAFwAAATMyFgcGAgcnPgE3NiYrAQMjEyEDIxMhA+Sd0uksHui9EoKGFx2GkJxhtrr+Pbq22AMvAoX+3Yz+6ySQIp51maP+GgOj/F0EOgAAAgBl/+IFxAXFACkANwAABSImJw4BIyICEzcSADMHIgIPAQISMzI2NyYCPwE2ADMyEg8BBgIHHgEzAQYWFz4BPwE2JiMiBgcE4GCoSkudVfL6PCI6ASfDHmq+KCM0lrgiRCJkSyIuMgEJsKOdMDIimXIsYjz+ISE4WWyUHTMlP2FXnyAeJSYiIAGOASyqASUBUZz+9Mys/v/+4gkLZQERqOb/AST+zvH6q/74XQ0KAjmk5khL5o/9vMrgpgACAE7/6wR8BE8AKQA4AAAFIiYnDgEjIgITNzYSMwciBg8BBhYzMjY3LgE/AT4BMzIWDwEOAQceATMDNzYmIyIGDwEGFhc+ATcD+1mTPj16P9S5OAsp9IsfRm4eDCdseRQnFEcuHBUl2IGMbSoVF2dLJFIvkRUZHjQ6VhoVFSo8NUkUDBwdISEBOgETO80BDpummD289gQFTdaKZ73v7tNpcL9NDg0Bl2x+pYqFa2ejOzeXYgABAOj+oQZkBbAADwAAASE3IQchAyEBMwEzAyMTIQJG/qIeA3ce/pznApYBBbX++413oUb8JwUblZX7egUb+un+CAFfAAEAiP6/BM8EOwAPAAABIzchByMDIRMzAzMDIxMhAYL6HgKTHuOcAcO6trt7cKJA/QsDppWV/O8Dpfxb/ioBQQACANEAAAVIBbAAAwAXAAABIxMzCQEjEw4BIyImNxMzAwYWMzI2NxMC1ZGMkQHn/t21emKnctfHMFu3WyVjl1u9Y4sBQAK8AbT6UAJhHRrS7gHG/jq3cxwcArgAAAIAlwAABB4EOwADABcAACUjEzMTIxMOASMiJjcTMwMGFjMyNjcTMwI3kXGRnrZOOXBBr64qP7U/Hk5sOnQ9a7bmAjX85QGIEA/MzAE6/saRcBAQAhoAAAABANAAAAVGBbAAEwAAMwEzAz4BMzIWBwMjEzYmIyIGBwPQASO1el+odNbHL1u3WyRjll27Y4sFsP2eHBzT7f46Aca2dB0b/UgAAAAAAgCu/+kF7gXDAB4AJwAABSACEzcuATczBhYXNxIAMzISAwchBwYWMzI2NxcOAQEhNzYmIyICBwNa/v74OBaJdyCRFTJMAjsBXd3qxT0V/McULonOX6VGEza9/psChAYtY7CO6igXAVgBGWwXwZtldhIHASYBSv6e/sttZeX3MSaGJkADWSHh6f7wygACACX/7ARRBE4AHAAkAAAFIgI/AS4BNzMGFhc2JDMyEg8BIQYWMzI2NxcOAQMiBgchNzYmAknOzicCYk8akA4SIz0BEJzHqyMT/WwYa4dalzwzQLkBWqApAdoEE1kUASrxECGpgUdcGcXj/vvdea3FOTJ7OksDzKqGGn2ZAAAAAAEASP7ZBVAFsAAWAAAzIwEzAzMBMwEWEgcCACM3MjY3NiYrAf62ASO2fncCY9P9ktrKMjn+8d8bhawmKI3A9wWw/YsCdf2HGP7X/P7n/viR0r7R0AAAAAABAD7+/QRfBDoAFgAAAR4BBwYCByc+ATc2JisBAyMTMwMzATMCgKOiJR3luxKAhBcciJOdXLbYtlxQAcXaAmIf3LmH/vkjkCGSbpaL/jEEOv41AcsAAAAAAQBX/ksFegWwABcAAAEDIRMzAQ4BIyImJzceATMyNjcTIQMjAQIwhAKThLf+yyW7lBwwGisMPBE2VhOT/W2BtgEjBbD9awKV+fe1pwkJkQUIaV0C3/16BbAAAAABADX+SwQ7BDoAFwAAAQMhEzMDDgEjIiYnNx4BMzI2NxMhAyMTAcNeAcJetuolupUcMBorDDwRNlcTb/4+XbbYBDr+KgHW+221pwkJkQUIaV0CKf4wBDoAAgBG/+sFQAXFABYAHgAAASAAAwcCACMgAhM3ITc2AiMiBgcnPgEDMhI3IQcGFgMmARMBBzshQP6L7f7z7z4WA6oMMZngZK5KEjfGN5n/Mf0NBy2FBcX+j/7Vo/7D/qIBYAE2bzn4AQ4yJYYlQvq7ARfWI+LoAAAAAQA2/+sEhQWwABsAAAkBITchBwEeAQcGBCMiJjczBhYzMjY3NiYrATcB0wG//a0eAygW/hzDvSgs/uDVrOArtxpsdnu5GCF1nIcdA1MBx5Z1/hEO4sfZ0dbTf5WXeqqDkAAAAAH/7f51BDoEOgAcAAAJASE3IQcBHgEHBgQjIiY3MwYWMzI2NzYmKwE/AQGGAa39wR4DKBb+Kb21Jyv+39Ws3im3Gmx2e7kYInadiAcWAdwBx5d1/g8R4cTX0tfRfZWXeKqDI20AAAD//wAK/ksE/QWwACYArEQAACYB08BAAAcBmgDtAAAAAP////v+SwPkBDoAJgDnTwAAJgHTnY4ABwGaAN4AAAAAAAIANgAABPMFsAAKABMAAAETMwEhIiY3NiQzGwEhIgYHBhYzA8p0tf7d/f3PyCcrARHjvXP+soSwFxxljwNsAkT6UPXF1d39KQJCpHeHoAAAAgA2AAAGCwWwABgAIQAAISImNzYkMyETMwE3PgE3PgEnMx4BBwYEIycTISIGBwYWMwHNz8gnKwER4wFOdLX++lBlhh0RBAywCgMRLv75puZz/rKEsBccZY/1xdXdAkT65AEBjIJOpVJpkkrP1ZUCQqR3h6AAAAAAAgBA/+kGMAYYACIAMwAAExIAMzIWFxMzAwYWMz4BNz4BJzcWBgcCACMGJicOASMiAjcBLgEjIgYPAQYWMzI2Nz4BN3M4AQTCUnUmdrbzFjxKgbEpFQsIrwcFFDn+zMFxgxVEpGmvoC8C0RhcS322JQQkU4hMfTQCAwMCCgEbASlDQQJO+0FkdQHRv2TGaAF6u17+8f7pAlReWVcBIOoBPj1E77sVtLxMRhUcEQAAAAABAOj/6AWbBbAALQAAATc2JisBNzMyNjc2JiMhNyEyFgcOAQceAQ8BBhYzPgE3PgEnMxYGBwIAIwYmNwJ7DRpgcLIef5OsGxpolP6zHgFN1MwoGox3ZUQZDhE3QG6hKBULCLAGBBM6/t+xmIEcATJBgoiWgIWEfpbSyH6gLymufUVQYAHVu2THaIawXf7z/ucDmq4AAQCI/+MEpQQ6AC4AACUGFjM+ATc+ASczHgEHBgQjBiY/ATYmKwE3MzI2NzYmKwE3MzIWBw4BBxUeAQ8BApIKGi1miiAPBAywCwQQMf71p4NnFA8PT1/EG6tqgBARVHPzF/m2uR4SbGBTPREP1i0vApmOTqFQbItI2+IDb4RMT0qUVk5YW5Sql1ltIgMceVZOAAAAAAIAz/7EA7sFsAAhACsAABM3MzI2NzYmKwE3MzIWBw4BBx4BDwEGFhcHIyY2PwE2JiMBDgEHJz4BPwEzzx6WlasbG2aU/x7/08soGot4ZUYZGw8IHAW6HwUPGxlgcQGuFn9eVzxGER+2AnqWgoKIf5XUyX2fLymvfYhJZSQZJHxNhIKH/cRrx0hISpBVlwAAAAIAvP61A20EOgAiACwAABM3MzI2NzYmIyE3ITIWBw4BBxUeAQ8BBhYXByMmNj8BNiYjAQ4BByc+AT8BM7wew2t/EBJTdP77HAEGtrgeEm5iVD0SFAoKHAS7HgILExFOYAGcFn9eVzxGER+2AbqUVk9aWZSomFtuIgMeg15hMVIWExdjM19YVv51a8dISEqQVZcAAAAB//H/6AcfBbAAIQAAASEDAgArATczMhIbASEDBhYzPgE3PgEnNxYGBwIAIwYmNwSQ/kdrV/7+8TEeJoS8QokDJN4VPEqAsSkVCwivBwUUOf7MwKKFHgUa/eb+Uv6ulQEiAUkCsPupZXQB0b9kxmgBerte/vH+6QOtxAAAAf/s/+gF8wQ6ACEAAAEDBhYzPgE3PgEnMxYGBwYAIwYmNxMhAwoBKwE/ATI2NxMEMpMVO0llkSUUCQmvBwITNf7vqKCGH3X+4D5F1MY1IyhfhDFcBDr9H2R1AbmpXrxjeK1Y+P8AA63EAkr+y/6o/uqiAdf0AcwAAQBO/+gHJgWwAB0AAAEDBhYzPgE3PgEnNxYGBwIAIwYmNxMhAyMBMwMhEwVq3hU7SoGxKhQLB68HBBQ6/svBoIYfPP1ygbYBI7aEAo6EBbD7qWR1AdG/Y8ZpAXy5Xv7x/ukDrcQBLf16BbD9awKVAAEANf/oBgUEOgAdAAABIQMjEzMDIRMzAwYWMz4BNz4BJzMWBgcGACMGJjcDEv40XLXYtV4BzF62kxU7SWaRJRMJCK4HARM1/u+poIYfAc/+MQQ6/ikB1/0fZHUBualdvGR7qlj4/wADrcQAAAEAYP/rBJsFxQAhAAAFIgIbARIAMzIWFwcuASMiAAcDBhYzPgE3PgEnMxYGBwYEAjXk8TU1OgFj+WOhN1M4flCc/wAnNSyLqoGnHxILBLABAxEw/tYVAV4BDAEGASIBSC0qgyIi/vPF/vjZ/AGajlWxY518UNziAAEARv/rA5oETgAhAAAlPgE3PgE3Mw4BBw4BIyICPwE2ADMyFhcHLgEjIgYPAQYWAfJbWRQMDQOvAQoLJNqdy8MuCDEBINNTgiVGJ2pBebkfCCNcgAFVVz1zPEVxNqKgATviKvQBKCMfjRse7JoqrNwAAAAAAQDX/+gFJAWwABkAAAEhNyEHIQMGFjM+ATc+ASc3FgYHAgAjBiY3Ao7+SR4ELx7+PsAWPEqBsCsUCwivBwQVOf7MwaCGHgUalpb8P2R1AdG/Y8ZpAX24Xv7x/ukDrcQAAQCs/+gEfAQ6ABkAAAEhNyEHIQMGFjM+ATc+ASczHgEHBgQjBiY3AfT+uB0DTB3+snUWO0xliiAQBgyuCwQRMP71qKGGHgOmlJT9s2tuAZuPUKZQaJRK3eMDrcQAAAAAAQBq/+sFQwXFAC0AAAEHIyIGBwYWMzI2NzMGBCMiJDc+ATcuATc2JDMyFgcjNiYjIgYHBhY7AQczDwEDgAaqoswbG5qsi+EYtS7+tN3l/vsoG6WMZ2EVKgEx+cf9JLYXlYqdzRcZfaqqBwEKBwK7IIOHhI2fdeTF4siLqCcxo2TYxt21dYeTcX58Ii8lAAD//wDpAowFAAMhAEYBhtwAUzNAAP//AQACjAYJAyEARgGGtQBmZkAA////aP5uAxEAAAAnAEH/0v8DAAYAQQQAAAEA1gQCAkUGKwAJAAATPgE3Fw4BDwEj+RV/X1k9SBEktQSxa8dIR0qQVrIAAQCxA+cCIAYYAAkAAAEOAQcnPgE/ATMB+xV+X1g7RxIltgVhbMdHSEiRVroAAAAAAf+k/tYBEAD6AAkAADcOAQcnPgE/ATPuFn9eVztGEiO2T2vHR0dIkVauAP///2ED5wDQBhgARwFmAYEAAMABQAAAAP//ANYEAgNyBisAJgFlAAAABwFlAS0AAP//AL0D5wNSBhgAJgFmDAAABwFmATIAAAAC/6T+1gItAPoACQATAAA3DgEHJz4BPwEzFw4BByc+AT8BM+4Wf15XO0YSI7b7Fn9fVztHEiO2T2vHR0dIkVauq2vHR0dJkVWuAAAAAQCVAAAERgWwAAsAAAEhAyMTITchEzMDIQQu/oyVtpX+kRgBbzy2PAF0A6P8XQOjlwF2/ooAAAABABD+YARVBbAAEwAAKQEDIxMhNyETITchEzMDIQchAyEDqP6LQrZC/pMYAW1+/pIYAW48tjwBdBj+jH4Bdf5gAaCVAw6XAXb+ipf88gAAAAEArwIYAl8D3gANAAATPgEzMhYPAQ4BIyImN80Se1tUVhEMFHhcU1gSAxheaG9XPV9kbFcAAAD//wBHAAACvgDFACYAEAEAAAcAEAGbAAD//wBHAAAERADFACYAEAEAACcAEAGbAAAABwAQAyEAAAAGAK7/6wbhBcUAGQAnADUAQwBRAFUAAAE+ATMyFhc+ATMyFg8BDgEjIiYnDgEjIiY3AT4BMzIWDwEOASMiJjcBBhYzMjY/ATYmIyIGBwUGFjMyNj8BNiYjIgYHAQYWMzI2PwE2JiMiBgcTJwEXAvEbtYNBXhoteEp5fBkPHLODQl8ZLnhIen0a/fUbtIR5fBkPHLODen0aAqERNklCYhAPEDVIQmQPAZkRNklBYxAPEDVIQmQP/C8RNklCYhAPEDVIQmQPElgDelgBZYmjPzc5Pa5+TouhPTg5PK1/A4GKo65/TYqhrX78zFJjaUxOUWRqS05SY2lMTlFkaksC5lFjaUtNUmRrS/vXQQRyQQAAAAEAgACaAm0DtAAHAAABEyMDPwEBMwEvn4jGAwEBYYgCJ/5zAYQNBgGDAAAAAQAhAJkCDQO0AAgAAAETBzMHASMBAwFJxAIBA/6hiQE8nQO0/nwGDf58AY0BjgAAAQAJAG8D2wUiAAMAADcnARdhWAN6WG9BBHJBAAIAiwIwA3UFxQAKAA8AAAEzByMHIzchNwEzATMTJwcC6osZiyWfJf5ZDwImo/3t+04DFANmfbm5XgJ+/aEBhgIeAAAAAQCjAosDewW6ABQAAAEfAT4BMzIWBwMjEzYmIyIGBwMjEwHABAMsckVtZB9mpmAWLkAwUR5wpqAFq28BPkGWnf4EAd1xUzs1/c8DIAAAAAABAC0AAAR/BcUAJwAAAQ4BByEHITczPgE3IzczNyM3Mzc+ATMyFgcjNiYjIgYPASEHIQchBwGeFTkmAqwf/HYeCS5PGJ8emhiUHo4ZLPW1sa0jtxpbYViOGxkBiB7+fRkBfx4Bvl2VN5WVDbJqlpGWld3Y07CEaZeIlZaRlgAAAAMASf/sBiEFsAAKABMAKwAAAQMjASEyFgcGBCMnMzI2NzYmKwElAzMHIwMGFjMyNjcHDgEjIiY3EyM3MxMBb3G1ASMBSc3KJyv+6eB2lIKzGRtljpQDlDW/HL+EEiQrFDMTAhxdLGNjIISNHI01Ajb9ygWw+MXX5pareoakJv75jf1qVjkIBYMRFY+cApaNAQcAAAABAGD/6wRiBcUAKQAAASEGFjMyNjcHDgEjIgI3IzczNyM3MzcSADMyFhcHLgEjIgYPASEHIQchA2n+NSd2jjNtNAw6cjrN2TKJGIkhiBiIBDUBNN81bDsxMGM2g84jBAHLGP41IgHLAgK/wxERmA8QASL1eKl6EQEJAQ4QD5oQE9CvE3qpAAAABADj/+sFMAXFABsAKQA3ADsAAAEOASMiJj8BPgEzMhYHIzYmIyIGDwEGFjMyNjcTBhYzMjY/ATYmIyIGBzM+ATMyFg8BDgEjIiY3AScBFwL/FrBvfWocDxm3cXpuF4cMMzo/VBAPEDE7PU0MYRp9eoOzHA8ZfHmDtRuHD2RCSDUQDxBiQkk2EQF/WPyGWAQebJKhik1/rot0OU9kUk1Kakw7/Pl/raGLTn6uo4lLamRRTkxpY1IDykH7jkEAAAAAAgBn/+sD6wXFABoAJgAABSImPwEOASM3MjY3Ez4BMzIWDwEGAA8BBhYzEzc2JiMiBgcDPgE3AkjEjS4DMF8yIzReL2AjwXt2ax8IIP8AthQdQminCQ8bIDJCF01lfhgV3+UQDg2uDA0B37HKn50qm/66aWaRmAPXLE9RZnn+gErQeQAABABOAAAIaQXAAAMAEQAfACsAAAEhNyEBPgEzMhYPAQ4BIyImNzMGFjMyNj8BNiYjIgYHASMBIwMjATMBMxMzB3X9+RwCB/46IMuYjI8dFyDLl42QHp8UPFRJbRIXEjxRS2wS/eO2/lID47UBI7UBrgPjtgFrjQJ5oa67lHWirLmVYWRtWHVeZm5W+48EcPuQBbD7kQRvAAACASMDlwTkBbAADgAWAAABEzMDIxMnAyMDIwMjEzMHIwMjEyM3IQOU6mZrVkUC1S9KA0lXa2zEh1tXW4cQAWUEIAGQ/ecBXwH+oAFs/pQCGVH+OAHIUQAAAgB8/+wEjwROABUAHgAAJQ4BIyICNzYAMzISDwEhAx4BMzI2NwMiBgcDIRMuAQOQXrdaweQuMQFjw7fXLgn9NkIrdElUvl20QpRBNwH2OShyXjg6AUno9gE7/srnL/64Njg8PgMqQTn+6wEeNjsA//8A/v/1BgUFsgAnAckAjgKGACcBdAD1AAAABwHQAxAAAAAA//8ArP/1BpAFwAAnAcsAhwKUACcBdAGfAAAABwHQA5sAAAAA//8Aqv/1Br0FrwAnAc0AfwKOACcBdAHTAAAABwHQA8gAAAAA//8BHv/1BiMFrwAnAc8AjwKOACcBdAEhAAAABwHQAy4AAAAAAAIAJv/rBFoF7QAUACEAAAEWEgMHAgAjIgI3NgAzMhYXNzYmJwMyNj8BLgEjIgYHBhYCpOvLRRY1/sTRwdYqMgEV01KNLgMJoJVvd9EjFRGJeXmuHx1vBe1L/j3+qHD+9v7eARjO/QEDQTsB2eM9+zHnsGpRac2dkMEAAAABADn/KgVBBbAABwAABSMTIQMjASEENrXz/W7ztgELA/3WBfD6EAaGAAAAAAH/u/7zBOQFsAAMAAAJASEHITcJATchByEBA1z9UgNEHvvnHALH/locA9Ae/QQBlwJB/UiWjQLOAtSOlv1AAAABAM8CjAP1AyEAAwAAASE3IQPX/PgeAwgCjJUAAQBoAAAFKQWwAAsAAAEVFzcBMwEjAyM3IQH1AyUCU7n834lqrR4BMAFPWAFZBGH6UAJ1lwAAAAADAEn/6weABE4AGQAnADUAAAEGACMiJicGBCMiAj8BNgAzMhYXNiQzMhIHBQYWMzIAPwEmAiMiBgchNiYjIgAPARYSMzI2NwdGMf7nxZGyMWr++J23tC0OMAEYxpGzMWwBB5+0syz51yVRe3gBBy8IBoqEb6shBWYjUHd6/vkwCAWKhG+rIgH68/7k2p+g2QEw30TyAR7cnqDa/s7eRLfDASBoKmwBGtOntcX+4Wcqb/7n0akAAAAAAf87/ksDHQYtABwAAAUOASMiJic3HgEzMjY3Ez4BMzIWFwcuASMiBgcDAQUdtZQbMBkkDTwPOFEQ0R3Amx9AJS4RJxlPaRDRWbGrCQmRBQhpXQUetrILCowFBm5k+uIAAgBQARoEPgP7ABsANwAAEz4BMzYWFx4BMzI2NxcHDgEjIiYnLgEHIgYHJwM+ATM2FhceATMyNjcXBw4BIyImJy4BByIGByfFPIA+QTNWSjU+OYQ4Axg8gDw6Q0FUNUE6hTYDRzyAPUE0Vk4wPjmFNwMXPYA9OkBCWy5COoQ2AwNoRkwBFzMuF0xCAaNHSxwpMhgBTUEB/vpGTAEXMzAWTUIBpEdLHCk2FQFNQgEAAAABAI4ApAQIBN8AEwAAATMHIQMhByEHJzcjNyETITchExcDS70g/vWyAYog/iikR3u/IAENs/5zIAHav0cDzZ7+/57sOrKeAQGeARI7AAAA//8ASAACBDkEjQBnAB4AdACyQAA5mgAHAYb/ef12AAD//wBHAAAEEgSgAGcAIAA4AMRAADmaAAcBhv94/XQAAAACAGcAAAPaBbAABQAPAAABMxMBIwMhAy8BBwETHwE3Am2I5f38ieYCuokGAx7+sIkGAx4FsP0n/SkC1wIDNwE4/f39/jcBOP//AI8AsgIbBOsAJwAQAEkAsgAHABAA+AQmAAAAAgCUAnoCngQ6AAMABwAAASMTMxMjEzMBHYlZic+JWYkCegHA/kABwAAAAAAB/+b/LwEjAOwACQAAJQ4BByc+AT8BMwEOFGpSWDA6EBatgGKvQEg/e0xvAAIAaAAABBcGLQAXABsAADMTIzczNz4BMzIWFwcuASMiBg8BMwcjAyEjEzNovJ4cnhgn5Lc7ekc+LGk8aHsWGMkcybwCIbbYtgOtjXfFtyAdmhYda213jfxTBDoAFv+1/nIIMwWuAA0AHQArADsAQQBHAE0AUwBcAGAAZABoAGwAcAB0AH0AgQCFAIkAjQCRAJUAAAE2JiMiBg8BBhYzMjY3FzI2NzYmLwE+ATc2JisBAycOASMiJj8BPgEzMhYHBQ4BIyImNyMGFjMyNjcTIwETMwczByE3MzczAwETIQcjByU3IQMjNwEyFgcOASsBNwE3IQchNyEHITchBxM3IQchNyEHITchBwEzMhYHDgEHIwUjNzM3IzczAyM3MyUjNzM3IzczAyM3MwMkE2RaZIkVFhRjXWKJFt9abBEJIicBJzEJD1xar25oD1Y4QDQPFg1YOT40DgNYCT8kMSgLVhFVUk9wEUxW+UM/aSi2FwTMF7koZz/6LzkBHxe2IgWkFwEgOWci/GkxJggIPC11IgHgFwECF/2LFwEBF/2MFwEAF4oXAQIX/YsXAQEX/YwXAQAXAY5XOywICDwvYf0KaTNpGWkyaclpMmkGu2czZxlnMmfJZzJnAkRge3JpcGJ5cWrYSFMtRA0DDjorS0v929hFTkhLcERPSUqbLDYpMlJSVlUBevtPATvKcXHK/sUGHwEddKmpdP7jqfy2KysoK6kDSnR0dHR0dPk4cXFxcXFxBFsdKiYpAZb8fvr8Ffl+/H76/BX5AAAABQCH/dUHfAhiAAMAHQAhACUAKQAACQMFPgE3PgE3NiYjIgYHMz4BMzIWBw4BBw4BBxcjBzMDMwcjATMHIwTDArn7wf1KA5ULIixMcBEbe456vBy9C0ApMCwKCzswVUcTqrwivNAEAQQCGgQBBAZS/DH8MQPP8To3GyiAUIyLg4c0M0A0NkgdOVZaW6r9TAQKjQQAAAEAH//vA84EjQAeAAAbASEHIQM+ATc2FgcOASMiJj8BBhYzMjY3NiYjIgYHk8YCdSD+KF4pcDatkiYn4tKgxiG4E1xhaYkXF01iW24gAfkClJ7+wRomAgPGvMHDoaIOXWF+cXZ2PDUAAgAnAAAC1wMhAAoADwAAATMHIwcjNyE3ATMBMxMnBwJhdhl2H50f/nwMAfag/hjjQAMUARh+mppiAiX99wFCARsAAAACAFH/6wRiBcUADQAbAAABAgAjIgIbARIAMzISAyc2JiMiBgcDBhYzMjY3A+Y9/uzQvrY4RTwBFNDAtDeuKVd/c6wmVCpYfnSrJwIs/tH+7gEqARcBVwEuART+1f7pKNGzxMD+W9G1xcEAAAAB/+D+3wKzA0EADwAAETMyEgMCACM3MjY3NiYrAcT79DY4/vDfG4WrJimNv8QDQf7Q/u/+5/74kdK+0tAAAAAAAf8d/ksBJACYAA8AACUHDgEjIiYnNx4BMzI2PwEBJDAluZUbMBksDDsROFMTMJjxtqYJCZoFB2Bc8QAAAf96/mYBPgBAABMAADceAQcOASMiJic3HgEzMjY3NiYnpFhCDxaKYzpZHzYdLB82PwkKLDJANIxNaWQaEncMDzEpNk8zAAAAAf/C/pkA3wCaAAMAABMjEzN4tme2/pkCAQAAAAIBNwTZA6EGzgANACEAAAEOASMiJjczBhYzMjY3Ew4BIyImIyIGByc+ATMyFjMyNjcDdRWog3mFE5MMMUY/UQu+EWpFMGcoHjcHSw9qRSdvKR04CAWuaG12XzhARDQBCVFiTDQlFU5nTDMmAAIBNwTgA2wHAgANAB0AAAEOASMiJjcjBhYzMjY3JTc+ATc2JiM3MhYHDgEPAQLdClA+RjILjhOEeIGkFP68GEg8BwZLPxeIeQ4LVj0OBbAzQT03XXNrZRB8AxcgHx1QSEc3Ngg+AAAAAgE3BN8DgQaJAA0AEQAAAQ4BIyImNzMGFjMyNjcnMwcjA4EUq4Z9iBOUCzRIQFMKK5S/YwWwZWxzXjc+QjPZxgAAAAACAQ8E5APABtIABwAbAAABIycHIyclMzcOASMiJiMiBgcnPgEzMhYzMjY3A8Ckl9eeAQFIf+EOaUAtXSUcPAVFDWpAI2clGzoGBOSfnwPw5URYSDAcE0JeRiwdAAIBCwTkBKkGzgAGABYAAAEjATM3FzMnNz4BNzYmIzcyFgcOAQ8BAvW2/syj3ZGkNxlCNQgGQjcWemsQDVA3DQXp/vu6uomDBRYkIiFcUVA/Pgc8AAIAXwTSA70GgAAHAAsAAAEjJwcjJwEzBSMDMwO9v3y8uQEBQZL+kIeJwgTSn58DAQJYAQEAAAAAAgEXBOQFHgaSAAcACwAAATMTIycHIycBMwMjAlqT2796vLsBA0TD8IkF6f77n58DAav+/wAAAAACAQ0EpwOfBnkADQARAAABDgEjIiY3MwYWMzI2NwcjJzMDnxrCloqWGJIOQFxSZw5ckZzRBbCBiJJ3R01TQQXOAAAAAAEBLwSQAkYGFwAFAAABNzMPASMBTKBaRxu1BSP0/YoAAv/UAAAD6ASNAAcACwAAASEDIwEzEyMBIQMnAwH+J5i8Ap6ry7v+TQFwUQMBEP7wBI37cwGkAfsBAAAAAwA+AAAEGgSNAA8AGAAhAAAzEyEyFgcOAQcVHgEHDgEjCwEzMjY3NiYjJzMyNjc2JisBPukBcrzFHxNtVlpKEyTjv5JM+2GAExNSaeC7b48SEl9/uwSNnp9bfh4DGZJjsJgCC/6IYFpgXolbV19BAAEATf/vBEIEnQAbAAABBgQjIgI/ATYAMzIWByM2JiMiBg8BBhYzMjY3A9w4/vPAuNIuIzABMMi5wxu2DV92bskeIyJteG6aKgGO0M8BH+Ks9AEN0suKf9GbrarEgooAAAIAPgAABEkEjQAJABMAADMTITISDwEGBCMLATMyNj8BNiYjPukBiLrgKiou/svMBq7RcNAcKx18egSN/vPR0uT5A/n8mr2N05eyAAABAD4AAAQdBI0ACwAAASEDIQchEyEHIQMhA0/+EE0CPx39CukC9h79wUMB7wIV/n6TBI2U/rAAAAEAPgAABB8EjQAJAAABIQMjEyEHIQMhA0r+EGW36QL4Hv2/SAHwAfj+CASNlP6UAAEASv/vBF4EnQAfAAAlDgEjIgI/ATYkMzIWDwE2JiMiBg8BBhYzMjY/ASM3IQPNOPKrzeEqMS0BN9rBuhG0CGV2fdMbMSB9jl2QITLxHgGlnUJsAQnV8+X4xqQBbWq7jfScry0c/JUAAQA+AAAEpASNAAsAACEjEyEDIxMzAyETMwO7tmP98GO36bdpAhBptgHu/hIEjf31AgsAAAEAPgAAAd0EjQADAAAzIxMz9LbptgSNAAEAC//vA9EEjQAPAAABMwMOASMiJjczBhYzMjY3Ax20oiXxqa63I7YXV2lPihUEjfzUuLqyr3Fde2QAAAEAPgAABHEEjQAMAAABIwMjEzMDMwEzCQEjAbRaZbfpt2ZOAdHa/eQBU+UB+P4IBI3+AgH+/dH9ogAAAAEAPgAAAvsEjQAFAAAlIQchEzMBEgHpHf1g6beTkwSNAAAAAAEAPgAABY4EjQAPAAAlFwEzAyMTJwEjAyMDIxMzAqQDAgTj6bWkA/4ifZcDp7fp6/cBA5f7cwM1AfzKA0T8vASNAAAAAQA+AAAEvgSNAAsAACEjASMDIxMzATMTMwPVtP6EA6236bcBewOutANh/J8EjfydA2MAAAIATf/vBG8EnQANABsAAAEGACMiAj8BNgAzMhIHJzYmIyIGDwEGFjMyNjcEHzL+09jH1C4jMQEu2MbULbUlb4t+xCIjJm+Lf8MjAfD6/vkBG+as+AEJ/uTlAbqywautvLLBrQACAE3/iwRvBJ0AEwAhAAABDgEHFwcnDgEjIgI/ATYAMzISByc2JiMiBg8BBhYzMjY3BB8WUTx7knw7f0fH1C4jMQEu2MbULbUlb4t+xCIjJm+Lf8MjAfBsp0Gib6AfHQEb5qz4AQn+5OUBurLBq628ssGtAAIAPgAABD8EjQAaACMAAAEDIxMhMhYHDgEHHgEPAQ4BFwcjJjY/ATYmIyczMjY3NiYrAQFVYLfpAa21tiAVcmVYPhQUDAETBLsSCQwUE0tf9fZrgRIUUXT2AeL+HgSNs6JjeCYgjmdlNlwYExppO2NjXpVhWWRkAAEAI//vBDIEnQAlAAABNiYnLgE3PgEzMhYHIzYmIyIGBwYWFx4BBwYEIyImNzMGFjMyNgMAD12Wx5weIPrHusAitRRhc2+RDxBWpMGbHSL+/tO25Sa1GIF0dKEBL05RLDuRl5+hu6xlbmBLUEsuO5eTp5qqvXhcYQAAAAABAL0AAAQlBI0ABwAAASEDIxMhNyEEB/6zy7XL/rgeA0oD+fwHA/mUAAAAAAEAWP/vBLwEjQARAAABAwYEIyImNxMzAwYWMzI2NxMEvJkr/t/ZxeEombSZHH+Ee78amQSN/QHVytzDAv/9AYiEjn4C/wAAAAEAvgAABMoEjQAJAAABHwE3ATMBIwMzAf0GAycB28L9ZanIwwEgVQFUA2/7cwSNAAEA1AAABfIEjQATAAABNzMHATMTNzMHATMBIwMjASMDMwGMAgICAYGpGgICAgFbw/4FqCcD/n6mKcIBCQkHA4L8fAkHA4L7cwNd/KMEjQAAAf/jAAAEhQSNAAsAAAkBMwETIwMBIwEDMwJTAVzW/iH/1LT+ntgB7fzWAtcBtv2//bQBv/5BAkwCQQAAAQC1AAAEgQSNAAgAAAkBMwEDIxMDMwIoAY7L/dtStVT0ywJNAkD9Dv5lAaUC6AAAAf/5AAAEFgSNAAkAADchByE3ASE3IQfvAnEd/LYXAw79xh4DFBaTk3IDh5RuAAAAAgBK/+8EIASdAA0AGwAAAQYEIyImNxM2JDMyFgcnNiYjIgYHAwYWMzI2NwO0K/76w7TCKEUqAQjEssEntRtecWijGUUcYXFnohkBm9fV58UBV9TX58QBiY2Yfv6oio+ZgAAAAAEArAAAAk0EnQAFAAAhIxMHNyUBYbXEwBsBggPTA4hFAAAAAAEADwAAA6YEnQAYAAApATcBPgE3NiYjIgYHIz4BMzIWBw4BBwEhAuX9Kh0BzHVVDRI9VFuGEbYg8bSbniIYd8X+3QH1kwGYZXFAXWt1VqC/tqh3f7D++gABACD/7wPJBJ0AKQAAATMyNjc2JiMiBgcjPgEzMhYHDgEHHgEHDgEjIiY3MwYWMzI2NzYmKwE3AXWcXHUSEE9lTIQOtR/uo6mzHxNyWVJHEyP3upfHIrQRWF5fjxIWUmucFQKaYlVUZGJKnaOroFmDJCWHYa+nq6hXaW9UbVhpAAIAJQAAA8kEjQAKAA4AAAEzByMHIzchNwEzARMnAQMStx63L7Uv/eYUArq7/q9pA/5EAYKV7e12Ayr89QIJAf32AAAAAQAeAAAEVQXFABgAACkBNwE+ATc2JiMiBgcjNiQzMhYHDgEHASEDi/yTGgIml3MTF1Zmhq0btSkBGt6ttCMapp3+QQKTgwITkadbeY2ejdDx5LGC2pb+VwAAAAACAE7/7wO7BJ0AGwAoAAABMhYXBy4BIyIGDwEXPgEzMhYHDgEjIiY3EzYkEyIGDwEGFjMyNjc2JgLBO4c4OjJjRmu4GRQDNoxUpJojJf24prwnPyoBIitPgSgIHFpkXZcUF08EnRsYjxkVpYBhAjE0x7K5xfjEATfU5/20Qjoqip+IY3RwAAAAAQC9AAADwwSNAAwAAAEGAgMHIzcSADchNyEDpePUOCW1JTsBAsT9ux4C6AP57f7I/uW5uQEpAVbBlAAAAwAj/+8D3wSdABcAIwAvAAABDgEHHgEHDgEjIiY3PgE3LgE3PgEzMhYBNiYjIgYHBhYzMjYTNiYjIgYHBhYzMjYDwBR2W1hVEyP+tKzRIRSObk5JESHwr5m4/uESaF5epBAUb2hYmVsQWFBTixASYFlKhQNdYIEjKYxesKe1omiNJCeBVqaap/1UXWpxVmFnbgJpU11gUFZeZQAAAgBt/+8DyASdABsAKAAAJTI2PwEnDgEjIiY3NiQzMhYHAwYEIyImJzceARMyNj8BNiYjIgYHBhYBhmCqFxUDMXxFrawjJAECt6S2JkUo/vC8PIc5ODRlq02GJQsbWGFamhMXUIKXcGoCLy3PrrXS98T+qMXWGhiQGhUBpU03N4mell1wfwAAAAEAfwAAAcEDLAAFAAAhIxMHNyUBH6CEdxoBGwKUAYIXAAAAAAEAIgAAAswDLAAZAAApATcBPgE3NiYjIgYHIz4BMzIWBw4BDwEXIQJH/dsZAU1ONwkLJzk8VQqdFrOIeHoXEl6LsAEBVX4BCD5KLDc8QjRwhX90V2JwjwMAAAAAAQAl//UC3gMsACkAAAEzMjY3NiYjIgYHIz4BMzIWBw4BBx4BBw4BIyImNzMGFjMyNjc2JisBNwEeeztKCwo2QzFPCJ8VsHuAixYNUUA7NAwZuI1ymBefCjk+QF0KDTZGexEB1Ts1MTczKWxvd248WhgaXEN5cnV0NDc8MkU1VQABAO0AAALSBbAABQAAISMTBTclAa+1+f76GAHNBNwId2UAAAABACv/9QLoAyEAHgAAGwEhByEHPgE3NhYHDgEjIiY/AQYWMzI2NzYmIyIGB32LAeAa/qw8Hk4pfmwaG6igepsXnwxBQ0ZYDg41QTpKFAFaAceBvxIZAQKOgoSGbm8LNzNHREpMJB8AAAIAQP/1AscDLAAbACgAAAEyFhcHLgEjIgYPARc+ATMyFgcOASMiJj8BPgETIgYPAQYWMzI2NzYmAg4vZCQzI0cxSXoQDAMlYz11chgZvot9kBsrHdcpOVkXARI9Qj9hDA41AywTEHsQD2BQOwIgIox6f4iqh9aTnf5ZLygIVl1NPEdCAAEAjwAAAswDIQAMAAABDgEPASM3PgE3ITchArOgjiUZnhkotnL+fRkCJAKioca8f3/I92R/AAAAAwAu//UC9QMsABcAIwAvAAABDgEHHgEHDgEjIiY3PgE3LgE3PgEzMhYDNiYjIgYHBhYzMjYTNiYjIgYHBhYzMjYC4A1VQj8+DBi8iYKgFw1mTzk1DBezhHSO5AtGPz5rCwxMRjpjOgo6NjZYCQtAOjBUAlBBWRkdYT56cnxwRWEbHFg6cmpz/i46P0Q1Ojo+AZczMjUwMzc6AAAAAgBk//UC5gMsABsAKAAAJTI2PwEnDgEjIiY3PgEzMhYPAQ4BIyImJzceARMyNj8BNiYjIgYHBhYBQUBuDgwDIFEugYIZGMCKeo0aLxvMji1lKzIlSX01VxMFETxAPGAKDzVzVkU/Ah4ckHp8kayG64eTEhB7Eg0BGDMlF1VeVTlITAAAAgA+//UDGAMsAA0AGwAAAQ4BIyImPwE+ATMyFgcnNiYjIgYPAQYWMzI2NwLPHsWSh5UcLx3EkoeVGqAQQEtGZw8vEkBNRGcRARuTk56I65GVoIYBVFJYTuxXUVhQAAAAAQC5AowDKgMhAAMAAAEhNyEDDP2tHgJTAoyVAAMBKwRCAz0GcwAEABAAHAAAATMXByMHPgEzMhYHDgEjIiY3BhYzMjY3NiYjIgYCirIB8G6lD29HPksOD2pEQVFhCCYjHTkHCCIhIDwGcwO1101ZX0dNVVtHJy0wJCgwMwAAAAACAPUEcANuBdYABQAPAAABEzMHASMnPgE3Fw4BDwEjAgWpwAT+7VX8EnBeOzI4DhCkBIMBQhX+wlRchS86LmdHUAAAAAEALv/rBEsFxQArAAABPwIzMjY3NiYjIgYHIzYkMzIWBw4BBx4BBwYEIyImNzMGFjMyNjc2JisBAaYLAwifdIkYG1h2Z6EXtSQBDMK0vCcVh3RuSBUs/uzFstAmthpmeHClGx5ZhZ8CwzcPJ4d1iHuKcrja1sdlrS4utm/Y0ti+f4KKh5V2AAACACcAAAQcBbAACgAPAAABMwcjAyMTITcBMwEhEycHA1q8HrtEtET9nhUDIb/86wGfjAMgAeiV/q0BU2sD8vw4ArwBOgAAAAABAGH/6wRpBbAAHwAAGwEhByEDFz4BNzYSBwYEIyImNzMGFjMyNjc2JiMiBgfW7gKlIv30fwMwcEe+ny0w/v3ZpMUpqxtja2+pIB9cd2d2JQKRAx+p/mABIywCAv775O34ysqEe7Kcm6lJSQACAGT/6wQ5BcUAGwAoAAABMhYXBy4BIyIGDwEXPgEzMhIHBgAjIgIbARIAEyIGDwEGFjMyNjc2JgNKQ4YmQylcRYvqKAQDRKJbrKspMf7tx77QOTk8AVkgXJczFyxxfWutHx9eBcUjGpEaHvnKEgE0Of7y0PP+9gE0ARkBHwEtAUH9c1ZKctzK0JigsAAAAAAD/5H+SgRTBE4ALwA/AE0AAAEjHgEPAQYEIyImJw4BBwYWOwEyFgcGBCMiJjc+ATcuATc+ATcuAT8BPgEzMhYXIQEiJicOAQcGFjMyNjc2JiMDBhYzMjY/ATYmIyIGBwQ4lhUNCgUh/wC1JkIeGyUHCjU6oLKyHhz+yefC0BcUc1MWEQkPUDxFOhMFIf65Iz8gAWH84xQjEDNNCxBsgYjRDg9KdLESYmVamBEFEmFkXZgQA6orYTYWo8IKDBQ0JDEjkpOIzKJ0ZH8nFjsmTl8lMpVYFqm9Cgr79AIEF109TVd6RU9BAqRadn1TFl1zelYAAAAAAQDrAAAEiwWwAAwAAAEIAQMHIzcSABMhNyEEbf7Q/wBtLbYtbQFA8/0xHgOCBRr+xf4i/piZmQFhAhgBCJYAAAH/zv5MBFoESQAjAAABMhYfAQEzARMeATMyNjcHDgEjIiYnAwEjAQMuASMiBiM3PgEBRW9ZGjMBSrb+LGIPLCkMDBQhCyMNY10eQP6QwAIETQ08OQo0AhwWOQRJlHf7Aff9L/4hS00CA5wGCX+QAT39yQMTAYFUZAWSBQoAAAAAAwA1/+sEWAXFABcAIwAvAAABDgEHHgEHBgQjIiY3PgE3LgE3PgEzMhYBNiYjIgYHBhYzMjYTNiYjIgYHBhYzMjYEMhqVcGtoFy3+78y/0SkarIRdVhcq+72rv/7CGnF1brUYG298bbF7F19kX5kXGV5oXJoENX6mKC+3etvD1MqItiktp3HRv9D8mISRm3qIhZADIXeHi3N7fogAAgBA/+sEkQROABQAIgAAJScOASMiAj8BEgAzMhYXMzczCwEjAQYWMzI2PwE2JiMiBgcDHwNJw4GvoC8EOAEEwneRHQNMrNACrP4SJVSHZalCCApPbX22JeABeX0BIOoVARsBKYB55f3i/eQB9bXA2LAmrN7yvAAAAgBB090pTwWwABoAKwAAAQchFgABFhIPAQYAIyICPwE2JDc6ARcmAic3AwYWMzI2PwE2JicuASMiBgcERR3+Xg8mutnNiXMfBDP+39jHwS8EKQEO0ggPCgbXKheIJVyKfLshBBk6PhMnGIbDHwWwkh3O3DB8nv73nhj9/uwBKegYzPkZAQcBBUFy/EyyytmjGH2qNgYG0JkAAAAAAgBYAAAE+QWwAAkAEwAAMwEhIBIDBwIAIRMDMzI2PwE2JiNYASMBXgEu8jwxQv62/rZc56nX/i4xMZTqBbD+z/7S8/62/uwFGvt74+b2988AAAAAAgA3/+sD/QROACAAKwAAITQ2NycOASMiJjc+ATsBNzYmIyIGByM+ATMyFgcDDgEXJTI2PwEjIgYHBhYCoAMDAkGtXZqIIST/2bUcFFdsZYAPtRzi07WqI20NCQT+OVerLC67e5sTEDosNxsBQFSgobaWiWZRYUmOsp+w/ds9ZjeKUTnkbmJTSwAAAAACAFcAAATuBa8ADgAXAAABDgEHEwcjAyEDIwEhMhYBITI2NzYmIyEExh2efcQEy6v+sHu2ASMB2NLK/LgBJIGsGhtnkf7eBAuLuy/9fBICav2WBa/a/iqOgIiFAAEAWAAABVgFsAANAAABBwMjATMDFzcBMwkBIwIuu2a1ASO1kAO4Ai3Q/WkBtuMCq63+AgWw/TECrQIk/YP8zQABADYAAAQxBhgADQAAAQcDIwEzAxc3ATMJASMBvIVLtgE4tr4DdgF52f4bATXWAfB4/ogGGPxLAXIBZv45/Y0AAQBYAAAFVgWwAAsAAAEDIwEzAzMBMwkBIwGXirUBI7WCDAK74f0JAfrfArL9TgWw/XgCiP05/RcAAAAAAQA2AAAEFAYYAAwAAAEjAyMBMwMXATMJASMBVARktgE4trUDAbfr/eoBZt8B9P4MBhj8eAEBq/4O/bgAAgB9/+sEVwXFABsAKAAAJTI2PwEnDgEjIgI3NgAzMhILAQIAIyImJzceARMyNj8BNiYjIgYHBhYBpYDTKwYDOZNXvLowMQEktsvENkg+/svfRZA1ODRwx2KeMB4qX4liuyAjWoDZ1x0BREABCOz3ARD+5f7s/pz+zf7sHB+QHRkB32RNmNK1z6KsswACAD4AAARDBI0ACgATAAABAyMTITIWBw4BIyczMjY3NiYrAQFJVLfpAbKyuCAl98Pe/GiQEhRUcfsBpv5aBI3QpLPAlIJbZX0AAAD//wELBKUDTwWwAgYAnAAA//8AAAAAAAAAAAIGAAMAAP//AD4CIQIjArYCBgAPAAAAAgBeAAAFOwWwAA0AGwAAMxMjNzMTISAAAwcCACETIQMhMhI/ATYCKwEDIXaFnR6dgAF6AQABKDcnPv6s/u93/v9nAQ+x8ysoLL/HxWIBAQKalQKB/pT+7cX+zf7HApr9+wEB1sjeAQj+FQAAAgBeAAAFOwWwAA0AGwAAMxMjNzMTISAAAwcCACETIQMhMhI/ATYCKwEDIXaFnR6dgAF6AQABKDcnPv6s/u93/v9nAQ+x8ysoLL/HxWIBAQKalQKB/pT+7cX+zf7HApr9+wEB1sjeAQj+FQAAAQBTAAAENwYYABwAAAEjAxc+ATMyFgcDIxM2JiMiBgcDIxMjNzM3MwczAvz8OANApF6bjyuHtYgeT29JjzmetvehHqAktiT9BNL+6QJITdDZ/VsCp5Z3VEj86ATSlbGxAAAAAAEA7AAABQsFsAAPAAABIwMjEyM3MxMhNyEHIQMzA7HLpLWk0x7TQ/5aHgQBHv5aQ8sDNvzKAzaVAU+Wlv6xAAABAAf/7AKkBUEAHwAAAQMzByMHMwcjAwYWMzI2NwcOASMiJjcTIzczNyM3MxMCGjW/HL8m1R7VQBIkKxQzEwIcXSxjYyBAyB7IJo0cjTUFQf75jb6V/r1WOQgFgxEVj5wBQ5W+jQEH////1QAABH8HIgImACMAAAAHAEIBawFd////1QAABMMHHwImACMAAAAHAHMCFwFZ////1QAABI0HRgImACMAAAAHAJoBBgFd////1QAABNQHUQImACMAAAAHAKABJQFg////1QAABMwHDAImACMAAAAHAGgBBwFc////1QAABH8HiAImACMAAAAHAJ4BkgGo////1QAABMYHnwImACMAAAAHAdQBiQEs//8AYv5EBPgFxQAmACUAAAAHAHcBt//3//8AWAAABPIHIgImACcAAAAHAEIBNwFd//8AWAAABPIHHwImACcAAAAHAHMB4wFZ//8AWAAABPIHRgImACcAAAAHAJoA0gFd//8AWAAABPIHDAImACcAAAAHAGgA0wFc//8AYgAAAkQHIgImACsAAAAHAEL//AFd//8AYgAAA1MHHwImACsAAAAHAHMApwFZ//8AYgAAAx4HRgImACsAAAAHAJr/lwFd//8AYgAAA10HDAImACsAAAAHAGj/mAFc//8AWAAABXoHUQImADAAAAAHAKABTgFg//8AXv/rBTYHNwAmADEAAAAHAEIBjAFy//8AXv/rBTYHNAAmADEAAAAHAHMCOAFu//8AXv/rBTYHWwAmADEAAAAHAJoBJwFy//8AXv/rBTYHZgAmADEAAAAHAKABRgF1//8AXv/rBTYHIQAmADEAAAAHAGgBKAFx//8AZ//rBVcHIgImADcAAAAHAEIBdwFd//8AZ//rBVcHHwImADcAAAAHAHMCIwFZ//8AZ//rBVcHRgImADcAAAAHAJoBEgFd//8AZ//rBVcHDAImADcAAAAHAGgBEwFc//8A7gAABVMHHQImADsAAAAHAHMB6QFX//8AOv/sA/cF4AImAEMAAAAHAEIAswAb//8AOv/sBAsF3QImAEMAAAAHAHMBXwAX//8AOv/sA/cGBAImAEMAAAAGAJpOGwAA//8AOv/sBBwGDwImAEMAAAAGAKBtHgAA//8AOv/sBBQFygImAEMAAAAGAGhPGgAA//8AOv/sA/cGRgImAEMAAAAHAJ4A2gBm//8AOv/sBA4GXgImAEMAAAAHAdQA0f/r//8AR/5EA/sETgImAEUAAAAHAHcBOf/3//8AR//sA+sF4QImAEcAAAAHAEIAkQAc//8AR//sA+sF3gImAEcAAAAHAHMBPQAY//8AR//sA+sGBQImAEcAAAAGAJosHAAA//8AR//sA/IFywImAEcAAAAGAGgtGwAA//8APgAAAd0FywImAIoAAAAGAEKVBgAA//8APgAAAuwFyAImAIoAAAAGAHNAAgAA//8APgAAArcF7wImAIoAAAAHAJr/MAAG//8APgAAAvYFtQImAIoAAAAHAGj/MQAF//8ANQAABDIGDwImAFAAAAAHAKAAgwAe//8ARv/sBBwF4AImAFEAAAAHAEIApwAb//8ARv/sBBwF3QImAFEAAAAHAHMBUwAX//8ARv/sBBwGBAImAFEAAAAGAJpCGwAA//8ARv/sBBwGDwImAFEAAAAGAKBhHgAA//8ARv/sBBwFygImAFEAAAAGAGhDGgAA//8AWv/sBDsFywImAFcAAAAHAEIAxgAG//8AWv/sBDsFyAImAFcAAAAHAHMBcgAC//8AWv/sBDsF7wImAFcAAAAGAJphBgAA//8AWv/sBDsFtQImAFcAAAAGAGhiBQAA////vP5LBCoFyAImAFsAAAAHAHMBNQAC////vP5LBCoFtQImAFsAAAAGAGglBQAA////1QAABN4G+gImACMAAAAHAG4BJgFK//8AOv/sBCYFuAImAEMAAAAGAG5uCAAA////1QAABLAHTAImACMAAAAHAJwBYQGc//8AOv/sA/gGCgImAEMAAAAHAJwAqQBaAAL/1f5QBH8FsAAaAB4AAAEzEyMOAQcGFjMyNjcHDgEjIiY3PgE3AyEDIwEhAycDBJvgJVdiCQYbKBkwFwcgTDJPWA8LY180/c7SuAHbAc1cAwWw+lA+ZDwlJRELeBMZY1pJfTYBe/58AhkCoAEAAAACADr+UAP3BE4ANAA/AAAhNDY3Jw4BIyImNzYkOwE3NiYjIgYHIzYkMzIWBwMOARcjDgEHBhYzMjY3Bw4BIyImNz4BNyUyNj8BIyIGBwYWAqAEBQNCrl2WiR4iAQHQvhYVV2dYjg61GwEAtqS1ImgNCQQTV2IJBhsoGTAXByBMMk9YDwtbWP7wV60vKMNrpBARQTM+HwFIXayWqKJuaWlkRoW7u6/99j1mNz5kPCUlEQt4ExljWkZ5NItgRMl7U1BPAAD//wBi/+sE+Ac0ACYAJQAAAAcAcwIhAW7//wBH/+wD+wXdAiYARQAAAAcAcwEqABf//wBi/+sE+AdbACYAJQAAAAcAmgEQAXL//wBH/+wD+wYEAiYARQAAAAYAmhkbAAD//wBi/+sE+AciACYAJQAAAAcAnQHRAXL//wBH/+wD+wXLAiYARQAAAAcAnQDaABv//wBi/+sE+AdcACYAJQAAAAcAmwEmAXP//wBH/+wD+wYFAiYARQAAAAYAmy8cAAD//wBYAAAFHQdHACYAJgAAAAcAmwDgAV7//wBE/+sFwwYYACYARgAAAAcBkQSgBSz//wBYAAAE8gb6AiYAJwAAAAcAbgDyAUr//wBH/+wEBAW5AiYARwAAAAYAbkwJAAD//wBYAAAE8gdMAiYAJwAAAAcAnAEtAZz//wBH/+wD6wYLAiYARwAAAAcAnACHAFv//wBYAAAE8gcNAiYAJwAAAAcAnQGTAV3//wBH/+wD6wXMAiYARwAAAAcAnQDtABwAAQBY/lAE8gWwACAAAAEhAyEHIw4BBwYWMzI2NwcOASMiJjc+ATcnIQEhByEDIQQC/ZJpAsweNFdiCQYbKBkwFwcgTDJPWA8LWlQB/V0BIwN3Hv0+YAJuAqb975U+ZDwlJRELeBMZY1pGeDIDBbCW/iIAAAACAEf+ZAPrBE4AKQAxAAAlDgEHDgEHBhYzMjY3Bw4BIyImNz4BNycmAj8BNgAzMhIPASEGFjMyNjcDIgYHITc2JgNbIVM0U14IBhsoGTAXByBMMk9YDwg/OQHIyicHJwEptMerIxP9bBhrh1qXPMdaoCkB2gQTWXEeMxI7YjslJRELeBMZY1o5YywDAwEp7y31ASX++915rcU5MgLMqoYafZkA//8AWAAABPIHRwImACcAAAAHAJsA6AFe//8AR//sA+sGBgImAEcAAAAGAJtCHQAA//8AaP/rBQ8HWwImACkAAAAHAJoBBgFy//8AN/5LBD0GBAImAEkAAAAGAJpWGwAA//8AaP/rBQ8HYQImACkAAAAHAJwBYQGx//8AN/5LBD0GCgImAEkAAAAHAJwAsQBa//8AaP/rBQ8HIgImACkAAAAHAJ0BxwFy//8AN/5LBD0FywImAEkAAAAHAJ0BFwAb//8AaP3lBQ8FxQImACkAAAAHAZEBRv62//8AN/5LBD0GbQImAEkAAAAHAaUBKABW//8AWAAABXkHRgImACoAAAAHAJoBKQFd//8ANQAABBkHRQImAEoAAAAHAJoAYwFc//8AYgAAA2UHUQImACsAAAAHAKD/tgFg//8APgAAAv4F+gImAIoAAAAHAKD/TwAJ//8AYgAAA28G+gImACsAAAAHAG7/twFK//8APgAAAwgFpAImAIoAAAAHAG7/UP/0//8AYgAAA0EHTAImACsAAAAHAJz/8gGc//8APgAAAtoF9QImAIoAAAAGAJyLRQAA////mv5YAjoFsAImACsAAAAGAJ/jCAAA////e/5QAjEGGAImAEsAAAAGAJ/EAAAA//8AYgAAAogHDQImACsAAAAHAJ0AVwFd//8AYv/rBnYFsAAmACsAAAAHACwCJAAA//8ARP5LBCEGGAAmAEsAAAAHAEwB6AAA//8AD//rBSwHOQImACwAAAAHAJoBpQFQ////G/5LAsQF3AImAJgAAAAHAJr/Pf/z//8APv31BTUFsAAmAC0AAAAHAZEBIP7G//8ANv33BCgGGAImAE0AAAAHAZEAxP7I//8AWAAAA60G4AImAC4AAAAHAHMAjwEa//8ARAAAA0MHXAImAE4AAAAHAHMAlwGW//8AWP33A60FsAImAC4AAAAHAZEBGv7I////qP33AjEGGAImAE4AAAAHAZH/wv7I//8AWAAAA9UFsQImAC4AAAAHAZECsgTF//8ARAAAA3IGGAAmAE4AAAAHAZECTwUs//8AWAAAA60FsAImAC4AAAAHAJ0BNP3F//8ARAAAAukGGAAmAE4AAAAHAJ0AuP23//8AWAAABXoHHwImADAAAAAHAHMCQAFZ//8ANQAABCEF3QImAFAAAAAHAHMBdQAX//8AWP33BXoFsAImADAAAAAHAZEBd/7I//8ANf33BBgETgImAFAAAAAHAZEA7P7I//8AWAAABXoHRwImADAAAAAHAJsBRQFe//8ANQAABCMGBQImAFAAAAAGAJt6HAAA//8ANQAABBgGGAImAFAAAAAHAZEAiwUs//8AXv/rBTYHDwAmADEAAAAHAG4BRwFf//8ARv/sBBwFuAImAFEAAAAGAG5iCAAA//8AXv/rBTYHYQAmADEAAAAHAJwBggGx//8ARv/sBBwGCgImAFEAAAAHAJwAnQBa//8AXv/rBZkHYAAmADEAAAAHAKEBqgFy//8ARv/sBLQGCQImAFEAAAAHAKEAxQAb//8AVwAABQIHHwImADQAAAAHAHMB3AFZ//8ANQAAA4cF3QImAFQAAAAHAHMA2wAX//8AV/33BQIFrwImADQAAAAHAZEBE/7I////pv33Aw0ETgImAFQAAAAHAZH/wP7I//8AVwAABQIHRwImADQAAAAHAJsA4QFe//8ANQAAA4oGBQImAFQAAAAGAJvhHAAA//8AQ//rBMAHNAAmADUAAAAHAHMB1gFu//8AO//sA9MF3QImAFUAAAAHAHMBJwAX//8AQ//rBMAHWwAmADUAAAAHAJoAxQFy//8AO//sA8kGBAImAFUAAAAGAJoWGwAA//8AQ/5EBMAFxQAmADUAAAAHAHcBbP/3//8AO/5FA8kETgImAFUAAAAHAHcBN//4//8AQ/3jBMAFxQAmADUAAAAHAZEBBP60//8AO/3kA8kETgImAFUAAAAHAZEAz/61//8AQ//rBMAHXAAmADUAAAAHAJsA2wFz//8AO//sA9UGBQImAFUAAAAGAJssHAAA//8A7P31BQsFsAImADYAAAAHAZEBDP7G//8ARf3tAqQFQQImAFYAAAAHAZEAX/6+//8A7P5VBQsFsAImADYAAAAHAHcBdAAI//8Ab/5NAqQFQQImAFYAAAAHAHcAxwAA//8A7AAABQsHRgImADYAAAAHAJsA2gFd//8Ab//sA7QGMQAmAFYAAAAHAZECkQVF//8AZ//rBVcHUQImADcAAAAHAKABMQFg//8AWv/sBDsF+gImAFcAAAAHAKAAgAAJ//8AZ//rBVcG+gImADcAAAAHAG4BMgFK//8AWv/sBDsFpAImAFcAAAAHAG4Agf/0//8AZ//rBVcHTAImADcAAAAHAJwBbQGc//8AWv/sBDsF9QImAFcAAAAHAJwAvABF//8AZ//rBVcHiAImADcAAAAHAJ4BngGo//8AWv/sBDsGMQImAFcAAAAHAJ4A7QBR//8AZ//rBYQHSwImADcAAAAHAKEBlQFd//8AWv/sBNMF9AImAFcAAAAHAKEA5AAGAAEAZ/5uBVcFsAAoAAABAw4BBw4BBwYWMzI2NwcOASMiJjc+ATcnIgYjIiY3EzMDBhYzMjY3EwVXxSW4jE5cCQYbKBkwFwcgTDJPWA8IOTQBBBYG1u0wxbbFJYqWkeIixQWw/CW22jI3YzklJRELeBMZY1o2XioDAfzuA9v8JbafragD2wAAAAABAFr+UAQ7BDoAJwAAIQ4BBwYWMzI2NwcOASMiJjc+AT8BJw4BIyImNxMzAwYWMzI2NxMzAwNiV2IJBhsoGTAXByBMMk9YDwpeWRIDP6JlnZMwf7Z/JkNpX5Mzm7XYPmQ8JSURC3gTGWNaRno1jwFSVOHwAn39gb53W1MDBvvG//8A7AAABuwHRgImADkAAAAHAJoBnAFd//8AsgAABfoF7wImAFkAAAAHAJoBFQAG//8A7gAABVMHRAImADsAAAAHAJoA2AFb////vP5LBCoF7wImAFsAAAAGAJokBgAA//8A7gAABVMHCgImADsAAAAHAGgA2QFa//8AIAAABH0HHwAmADwAAAAHAHMB0QFZ//8ACAAAA+oFyAImAFwAAAAHAHMBPgAC//8AIAAABFsHDQAmADwAAAAHAJ0BgQFd//8ACAAAA98FtgImAFwAAAAHAJ0A7gAG//8AIAAABH8HRwAmADwAAAAHAJsA1gFe//8ACAAAA+wF8AImAFwAAAAGAJtDBwAA////ngAAB3UHHwImAH8AAAAHAHMDAQFZ//8ABP/rBmAF3gImAIQAAAAHAHMCegAY//8AJv+jBWsHXQImAIEAAAAHAHMCMQGX//8ATP95BDgF3AImAIcAAAAHAHMBUAAW//8ACwAABEkEjQImAakAAAAHAdP/Uv97//8ACwAABEkEjQImAakAAAAHAdP/Uv97//8AvQAABCUEjQImAbgAAAAGAdMo9wAA////1AAAA+gF3wImAaYAAAAHAEIA2QAa////1AAABDEF3AImAaYAAAAHAHMBhQAW////1AAAA/sGAwImAaYAAAAGAJp0GgAA////1AAABEIGDgImAaYAAAAHAKAAkwAd////1AAABDoFyQImAaYAAAAGAGh1GQAA////1AAAA+gGRQImAaYAAAAHAJ4BAABl////1AAABDQGXQImAaYAAAAHAdQA9//q//8ATf5HBEIEnQImAagAAAAHAHcBU//6//8APgAABB0F3wImAaoAAAAHAEIAqgAa//8APgAABB0F3AImAaoAAAAHAHMBVgAW//8APgAABB0GAwImAaoAAAAGAJpFGgAA//8APgAABB0FyQImAaoAAAAGAGhGGQAA//8APgAAAd8F3wImAa4AAAAGAEKXGgAA//8APgAAAu4F3AImAa4AAAAGAHNCFgAA//8APgAAArkGAwImAa4AAAAHAJr/MgAa//8APgAAAvgFyQImAa4AAAAHAGj/MwAZ//8APgAABL4GDgImAbMAAAAHAKAAsQAd//8ATf/vBG8F7wImAbQAAAAHAEIA3QAq//8ATf/vBG8F7AImAbQAAAAHAHMBiQAm//8ATf/vBG8GEwImAbQAAAAGAJp4KgAA//8ATf/vBG8GHgImAbQAAAAHAKAAlwAt//8ATf/vBG8F2QImAbQAAAAGAGh5KQAA//8AWP/vBLwF4AImAbkAAAAHAEIA9QAb//8AWP/vBLwF3QImAbkAAAAHAHMBoQAX//8AWP/vBLwGBAImAbkAAAAHAJoAkAAb//8AWP/vBLwFygImAbkAAAAHAGgAkQAa//8AtQAABIEF2wImAb0AAAAHAHMBWAAV////1AAABEwFtwImAaYAAAAHAG4AlAAH////1AAABB4GCQImAaYAAAAHAJwAzwBZAAL/1P5QA+gEjQAaAB4AAAETIw4BBwYWMzI2NwcOASMiJjc+ATcnIQMjAQMhAycDHcs3V2IJBhsoGTAXByBMMk9YDwtqZin+J5i8Ap74AXBRAwSN+3M+ZDwlJRELeBMZY1pMgDj//vAEjf0XAfsBAP//AE3/7wRCBewCJgGoAAAABwBzAXoAJv//AE3/7wRCBhMCJgGoAAAABgCaaSoAAP//AE3/7wRCBdoCJgGoAAAABwCdASoAKv//AE3/7wRCBhQCJgGoAAAABgCbfysAAP//AD4AAARJBgQCJgGpAAAABgCbLhsAAP//AD4AAAQdBbcCJgGqAAAABgBuZQcAAP//AD4AAAQdBgkCJgGqAAAABwCcAKAAWf//AD4AAAQdBcoCJgGqAAAABwCdAQYAGgABAD7+UAQdBI0AIAAAASEDIQcjDgEHBhYzMjY3Bw4BIyImNz4BNychEyEHIQMhA0/+EE0CPx1CV2IJBhsoGTAXByBMMk9YDwtaVAH99ukC9h79wUMB7wIV/n6TPmQ8JSURC3gTGWNaRngyAwSNlP6wAAAA//8APgAABB0GBAImAaoAAAAGAJtbGwAA//8ASv/vBF4GEwImAawAAAAGAJpzKgAA//8ASv/vBF4GGQImAawAAAAHAJwAzgBp//8ASv/vBF4F2gImAawAAAAHAJ0BNAAq//8ASv3nBF4EnQImAawAAAAHAZEA9/64//8APgAABKQGAwImAa0AAAAGAJp7GgAA//8APgAAAwAGDgImAa4AAAAHAKD/UQAd//8APgAAAwoFtwImAa4AAAAHAG7/UgAH//8APgAAAtwGCQImAa4AAAAGAJyNWQAA////c/5QAd0EjQImAa4AAAAGAJ+8AAAA//8APgAAAiQFygImAa4AAAAGAJ3zGgAA//8AC//vBKYF+QImAa8AAAAHAJoBHwAQ//8APv3zBHEEjQImAbAAAAAHAZEArP7E//8APgAAAvsFwQImAbEAAAAGAHND+wAA//8APv31AvsEjQImAbEAAAAHAZEAjP7G//8APgAAAxAEjgImAbEAAAAHAZEB7QOi//8APgAAAvsEjQImAbEAAAAHAJ0Aif0m//8APgAABL4F3AImAbMAAAAHAHMBowAW//8APv31BL4EjQImAbMAAAAHAZEBGv7G//8APgAABL4GBAImAbMAAAAHAJsAqAAb//8ATf/vBG8FxwImAbQAAAAHAG4AmAAX//8ATf/vBG8GGQImAbQAAAAHAJwA0wBp//8ATf/vBOoGGAImAbQAAAAHAKEA+wAq//8APgAABD8F3AImAbYAAAAHAHMBOQAW//8APv31BD8EjQImAbYAAAAHAZEAsP7G//8APgAABD8GBAImAbYAAAAGAJs+GwAA//8AI//vBDIF7AImAbcAAAAHAHMBZAAm//8AI//vBDIGEwImAbcAAAAGAJpTKgAA//8AI/5HBDIEnQImAbcAAAAHAHcBPf/6//8AI//vBDIGFAImAbcAAAAGAJtpKwAA//8Al/31BCUEjQImAbgAAAAHAZEAsf7G//8AvQAABCUGAwImAbgAAAAGAJs/GgAA//8AWP/vBLwGDwImAbkAAAAHAKAArwAe//8AWP/vBLwFuAImAbkAAAAHAG4AsAAI//8AWP/vBLwGCgImAbkAAAAHAJwA6wBa//8AWP/vBLwGRgImAbkAAAAHAJ4BHABm//8AWP/vBQIGCQImAbkAAAAHAKEBEwAbAAEAWP57BLwEjQAoAAABAw4BBw4BBwYWMzI2NwcOASMiJjc+ATcnIgYjIiY3EzMDBhYzMjY3EwS8mR2QcFBbCAYbKBkwFwcgTDJPWA8HNC4BBQ0LxeEombSZHH+Ee78amQSN/QGLszA5YDolJRELeBMZY1ozWigDAdzDAv/9AYiEjn4C/wAAAP//ANQAAAXyBgMCJgG7AAAABwCaAQwAGv//ALUAAASBBgICJgG9AAAABgCaRxkAAP//ALUAAASBBcgCJgG9AAAABgBoSBgAAP////kAAAQWBdwCJgG+AAAABwBzATcAFv////kAAAQWBcoCJgG+AAAABwCdAOcAGv////kAAAQWBgQCJgG+AAAABgCbPBsAAP//ACP/7whdBJ0AJgG3AAAABwG3BCsAAP///9UAAAR/BngCJgAjAAAABgCpPAAAAP//AJsAAAVWBnoAJgAnZAAABwCp/zcAAv//ALwAAAXdBnoAJgAqZAAABwCp/2MAAv//AMYAAAKeBnkAJgArZAAABwCp/2cAAf//AHL/6wVKBngAJgAxFAAABgCpmgAAAP//AEkAAAW3BngAJgA7ZAAABwCp/uUAAP//ADEAAAUcBngAJgC1FAAABgCphAAAAP//AGz/6wMkBj8CJgC+AAAABwCq/yv/t////9UAAAR/BbACBgAjAAD//wBYAAAE0AWwAgYAJAAA//8AWAAABPIFsAIGACcAAP//ACAAAARbBbAABgA8AAD//wBYAAAFeQWwAgYAKgAA//8AYgAAAjoFsAIGACsAAP//AD4AAAU1BbAABgAtAAD//wBYAAAGswWwAgYALwAA//8AWAAABXoFsAIGADAAAP//AF7/6wU2BcUABgAxAAD//wBYAAAFGAWwAgYAMgAA//8A7AAABQsFsAIGADYAAP//AO4AAAVTBbACBgA7AAD////8AAAFHQWwAgYAOgAA//8AYgAAA10HDAImACsAAAAHAGj/mAFc//8A7gAABVMHCgImADsAAAAHAGgA2QFa//8AQP/rBDQGegImALYAAAAHAKkBWwAC//8AKf/tA/0GeQImALoAAAAHAKkBFgAB//8ANf5hBBIGegImALwAAAAHAKkBMAAC//8Afv/rAtQGZgImAL4AAAAGAKkq7gAA//8AWv/rBAUGPwImAMYAAAAGAKoMtwAA//8APgAABGAEOgIGAIsAAP//AEb/7AQcBE4CBgBRAAD////r/mAEMwQ6AgYAdAAA//8AlwAABAoEOgIGAFgAAP///+kAAAPxBDoCBgBaAAD//wB+/+sDJQW1AiYAvgAAAAcAaP9gAAX//wBa/+sEBgW1AiYAxgAAAAYAaEEFAAD//wBG/+wEHAZ6AiYAUQAAAAcAqQEOAAL//wBa/+sD9AZmAiYAxgAAAAcAqQEM/+7//wBd/+sF7AZjAiYAyQAAAAcAqQIj/+v//wBYAAAE8gcMAiYAJwAAAAcAaADTAVz//wBXAAAEuQcfAiYArAAAAAcAcwHhAVkAAQBD/+sEwAXFACUAAAE2JicuATc2JDMyFgcjNiYjIgYHBhYXHgEHBgQjIiQ3MwYWMzI2A34YcLPWsSgjAQXD2OkqthyJkmmdERpmu9uwJyX+9czZ/uMwtSO4mmqrAUx3hEJIy8axsuzWi6F0V393R0/Hw7ir1uurgXIA//8AYgAAAjoFsAIGACsAAP//AGIAAANdBwwCJgArAAAABwBo/5gBXP//AA//6wRSBbACBgAsAAD//wA+AAAFNQWwAAYALQAA//8APgAABTUGxwAmAC0AAAAHAHMBxQEB//8Ao//rBUUHTAImANkAAAAHAJwBPgGc////1QAABH8FsAIGACMAAP//AFgAAATQBbACBgAkAAD//wBXAAAEuQWwAgYArAAA//8AWAAABPIFsAIGACcAAP//AFgAAAV6B0wCJgDXAAAABwCcAY4BnP//AFgAAAazBbACBgAvAAD//wBYAAAFeQWwAgYAKgAA//8AXv/rBTYFxQAGADEAAP//AFgAAAV7BbACBgCxAAD//wBYAAAFGAWwAgYAMgAA//8AYv/rBPgFxQAGACUAAP//AOwAAAULBbACBgA2AAD////8AAAFHQWwAgYAOgAA//8AOv/sA/cETgIGAEMAAP//AEf/7APrBE4CBgBHAAD//wBAAAAERwX1AiYA6wAAAAcAnADIAEX//wBG/+wEHAROAgYAUQAA////4v5gBCYETgIGAFIAAAABAEf/7AP7BE4AGwAAJTI2NzMGBCMiAj8BNgAzMhYHIzYmIyIGDwEGFgHxWqAPrBn+8qbXuyUHJwER4a7BGqwQameNpBoHHFWBeFyazwEy6ir1ASfeqmyG4qQqsdYAAP///7z+SwQqBDoCBgBbAAD////pAAAD8QQ6AgYAWgAA//8AR//sA/IFywImAEcAAAAGAGgtGwAA//8APgAAA5UFyAImAOcAAAAHAHMA5wAC//8AO//sA8kETgIGAFUAAP//AEQAAAIxBhgCBgBLAAD//wA+AAAC9gW1AiYAigAAAAcAaP8xAAX///8d/ksCOQYYAgYATAAA//8AQAAABGEFxwImAOwAAAAHAHMBTQAB////vP5LBCoF9QImAFsAAAAGAJx/RQAA//8A7AAABuwHIgImADkAAAAHAEICAQFd//8AsgAABfoFywImAFkAAAAHAEIBegAG//8A7AAABuwHHwImADkAAAAHAHMCrQFZ//8AsgAABfoFyAImAFkAAAAHAHMCJgAC//8A7AAABuwHDAImADkAAAAHAGgBnQFc//8AsgAABfoFtQImAFkAAAAHAGgBFgAF//8A7gAABVMHIAImADsAAAAHAEIBPQFb////vP5LBCoFywImAFsAAAAHAEIAiQAG//8AxgQjAagGGAIGAAkAAP//AMUEFAK9BhgCBgAEAAD//wBPAAAEJQWwACYEHAAAAAcEHAH9AAD//wCKAAAEzAYtACYASAAAAAcATgKbAAD///8b/ksC/AXdAiYAmAAAAAcAm/9T//T//wCxA+cCIAYYAgYBZgAA//8AWAAABrMHHwImAC8AAAAHAHMC3wFZ//8ANQAABlsF3QImAE8AAAAHAHMCrwAX////1f6HBH8FsAImACMAAAAHAKIBOQAA//8AOv6HA/cETgImAEMAAAAHAKIAkgAA//8AAf/rBTYGogAmADEAAAAHAdX/DADM//8AigAABrIGLQAmAEgAAAAHAZICmwAA//8AigAAB2cGLQAmAEgAAAAnAEgCmwAAAAcATgU2AAD//wBYAAAE8gciAiYAJwAAAAcAQgE3AV3//wBYAAAFegciAiYA1wAAAAcAQgGYAV3//wBH/+wD6wXhAiYARwAAAAcAQgCRABz//wBAAAAERwXLAiYA6wAAAAcAQgDSAAb//wCKAAAFkgWwAgYAtAAA//8AQ/4pBS4EOgIGAMgAAP//AOgAAAVcB0cCJgEUAAAABwCnBDEBWf//ALMAAARLBh8CJgEVAAAABwCnA5gAMf//AEb+SwhuBE4AJgBRAAAABwBbBEQAAP//AF7+SwllBcUAJgAxAAAABwBbBTsAAP//ACD+UQSwBcUCJgDWAAAABwGcAXD/uP//AB7+UgPEBEwCJgDqAAAABwGcASD/uf//AGL+UQT4BcUAJgAlAAAABwGcAb//uP//AEf+UQP7BE4CJgBFAAAABwGcAUH/uP//AO4AAAVTBbACBgA7AAD//wCz/mAEJgQ6AgYAuAAA//8AYgAAAjoFsAIGACsAAP///8oAAAddB0wCJgDVAAAABwCcAkwBnP///8MAAAYBBfUCJgDpAAAABwCcAaQARf//AGIAAAI6BbACBgArAAD////VAAAEsAdMAiYAIwAAAAcAnAFhAZz//wA6/+wD+AYKAiYAQwAAAAcAnACpAFr////VAAAEzAcMAiYAIwAAAAcAaAEHAVz//wA6/+wEFAXKAiYAQwAAAAYAaE8aAAD///+eAAAHdQWwAgYAfwAA//8ABP/rBmAETgIGAIQAAP//AFgAAATyB0wCJgAnAAAABwCcAS0BnP//AEf/7APrBgsCJgBHAAAABwCcAIcAW///AEb/6wVABt4CJgFBAAAABwBoAMsBLv//ADz/7AP2BE8CBgCZAAD//wA8/+wEFgXLAiYAmQAAAAYAaFEbAAD////KAAAHXQcMAiYA1QAAAAcAaAHyAVz////DAAAGAQW1AiYA6QAAAAcAaAFKAAX//wAg/+sEsAchAiYA1gAAAAcAaADCAXH//wAe/+0D8gXJAiYA6gAAAAYAaC0ZAAD//wBYAAAFegb6AiYA1wAAAAcAbgFTAUr//wBAAAAERwWkAiYA6wAAAAcAbgCN//T//wBYAAAFegcMAiYA1wAAAAcAaAE0AVz//wBAAAAERwW1AiYA6wAAAAYAaG4FAAD//wBe/+sFNgchACYAMQAAAAcAaAEoAXH//wBG/+wEHAXKAiYAUQAAAAYAaEMaAAD//wBd/+sFNwXFAgYBEgAA//8ARv/sBBwETgIGARMAAP//AF3/6wU3BwcCJgESAAAABwBoAScBV///AEb/7AQeBeYCJgETAAAABgBoWTYAAP//AIf/7AU0ByICJgDiAAAABwBoARQBcv//ADP/6wQNBcoCJgD6AAAABgBoSBoAAP//AKP/6wVFBvoCJgDZAAAABwBuAQMBSv///7z+SwQqBaQCJgBbAAAABgBuRPQAAP//AKP/6wVFBwwCJgDZAAAABwBoAOQBXP///7z+SwQqBbUCJgBbAAAABgBoJQUAAP//AKP/6wVVB0sCJgDZAAAABwChAWYBXf///7z+SwSWBfQCJgBbAAAABwChAKcABv//ANEAAAVIBwwCJgDcAAAABwBoAQsBXP//AH8AAAQGBbUCJgD0AAAABgBoLwUAAP//AFcAAAaiBwwAJgDhDwAAJwArBGgAAAAHAGgByAFc//8AQAAABasFtQAmAPkAAAAnAIoD3gAAAAcAaAEjAAX////8/ksFHQWwAiYAOgAAAAcBmgN+AAD////p/ksD8QQ6AiYAWgAAAAcBmgKWAAD//wBE/+sElQYYAgYARgAA////3v5LBXEFsAImANgAAAAHAZoD/AAA////1f5LBEkEOgImAO0AAAAHAZoDHwAA////1f6xBH8FsAImACMAAAAHAKgErAAA//8AOv6xA/cETgImAEMAAAAHAKgEBQAA////1QAABH8HxgImACMAAAAHAKYE5QFT//8AOv/sA/cGhAImAEMAAAAHAKYELQAR////1QAABg4HqAImACMAAAAHAaMA8AEW//8AOv/sBVYGZwImAEMAAAAGAaM41QAA////1QAABLcHpQImACMAAAAHAaIA+gEl//8AOv/sA/8GZAImAEMAAAAGAaJC5AAA////1QAABZ4H2wImACMAAAAHAaEA9QEN//8AOv/sBOYGmgImAEMAAAAGAaE9zAAA////1QAABLYH5QImACMAAAAHAaAA9gET//8AOv/sA/4GpAImAEMAAAAGAaA+0gAA////1f6xBI0HRgImACMAAAAnAJoBBgFdAAcAqASsAAD//wA6/rED9wYEAiYAQwAAACYAmk4bAAcAqAQFAAAAAP///9UAAASqB90CJgAjAAAABwGfASkBVP//ADr/7AP3BpsCJgBDAAAABgGfcRIAAP///9UAAATOB+ACJgAjAAAABwGkAS8BZ///ADr/7AQWBp4CJgBDAAAABgGkdyUAAP///9UAAASVCEsCJgAjAAAABwGeASkBSf//ADr/7AP3BwkCJgBDAAAABgGecQcAAP///9UAAATMCB8CJgAjAAAABwGdASsBUf//ADr/7AQUBt0CJgBDAAAABgGdcw8AAP///9X+sQSwB0wCJgAjAAAAJwCcAWEBnAAHAKgErAAA//8AOv6xA/gGCgImAEMAAAAnAJwAqQBaAAcAqAQFAAD//wBY/rsE8gWwAiYAJwAAAAcAqAR3AAr//wBH/rED6wROAiYARwAAAAcAqARRAAD//wBYAAAE8gfGAiYAJwAAAAcApgSxAVP//wBH/+wD6waFAiYARwAAAAcApgQLABL//wBYAAAE8gdRAiYAJwAAAAcAoADxAWD//wBH/+wD+gYQAiYARwAAAAYAoEsfAAD//wBYAAAF2geoAiYAJwAAAAcBowC8ARb//wBH/+wFNAZoAiYARwAAAAYBoxbWAAD//wBYAAAE8gelAiYAJwAAAAcBogDGASX//wBH/+wD6wZlAiYARwAAAAYBoiDlAAD//wBYAAAFagfbAiYAJwAAAAcBoQDBAQ3//wBH/+wExAabAiYARwAAAAYBoRvNAAD//wBYAAAE8gflAiYAJwAAAAcBoADCARP//wBH/+wD6walAiYARwAAAAYBoBzTAAD//wBY/rsE8gdGAiYAJwAAACcAmgDSAV0ABwCoBHcACv//AEf+sQPrBgUCJgBHAAAAJgCaLBwABwCoBFEAAAAA//8AYgAAAwoHxgImACsAAAAHAKYDdQFT//8APgAAAqMGcAImAIoAAAAHAKYDDv/9//8AF/65AjoFsAImACsAAAAHAKgDOwAI////+v67AjEGGAImAEsAAAAHAKgDHgAK//8AXv6pBTYFxQAmADEAAAAHAKgEw//4//8ARv6oBBwETgImAFEAAAAHAKgEV//3//8AXv/rBTYH2wAmADEAAAAHAKYFBgFo//8ARv/sBBwGhAImAFEAAAAHAKYEIQAR//8AXv/rBi8HvQAmADEAAAAHAaMBEQEr//8ARv/sBUoGZwImAFEAAAAGAaMs1QAA//8AXv/rBTYHugAmADEAAAAHAaIBGwE6//8ARv/sBBwGZAImAFEAAAAGAaI25AAA//8AXv/rBb8H8AAmADEAAAAHAaEBFgEi//8ARv/sBNoGmgImAFEAAAAGAaExzAAA//8AXv/rBTYH+gAmADEAAAAHAaABFwEo//8ARv/sBBwGpAImAFEAAAAGAaAy0gAA//8AXv6pBTYHWwAmADEAAAAnAJoBJwFyAAcAqATD//j//wBG/qgEHAYEAiYAUQAAACYAmkIbAAcAqARX//cAAP//AFn/6wYlBw8CJgCUAAAABwBzAiQBSf//AEb/7AUJBd0CJgCVAAAABwBzAXgAF///AFn/6wYlBxICJgCUAAAABwBCAXgBTf//AEb/7AUJBeACJgCVAAAABwBCAMwAG///AFn/6wYlB7YCJgCUAAAABwCmBPIBQ///AEb/7AUJBoQCJgCVAAAABwCmBEYAEf//AFn/6wYlB0ECJgCUAAAABwCgATIBUP//AEb/7AUJBg8CJgCVAAAABwCgAIYAHv//AFn+sQYlBjYCJgCUAAAABwCoBLEAAP//AEb+qAUJBLACJgCVAAAABwCoBEj/9///AGf+qgVXBbACJgA3AAAABwCoBLL/+f//AFr+sQQ7BDoCJgBXAAAABwCoBAsAAP//AGf/6wVXB8YCJgA3AAAABwCmBPEBU///AFr/7AQ7BnACJgBXAAAABwCmBED//f//AGf/6walBx8CJgCWAAAABwBzAiIBWf//AFr/7AVXBcgCJgCXAAAABwBzAXIAAv//AGf/6walByICJgCWAAAABwBCAXYBXf//AFr/7AVXBcsCJgCXAAAABwBCAMYABv//AGf/6walB8YCJgCWAAAABwCmBPABU///AFr/7AVXBnACJgCXAAAABwCmBED//f//AGf/6walB1ECJgCWAAAABwCgATABYP//AFr/7AVXBfoCJgCXAAAABwCgAIAACf//AGf+qQalBg0CJgCWAAAABwCoBLH/+P//AFr+sQVXBJECJgCXAAAABwCoBAsAAP//AO7+uwVTBbACJgA7AAAABwCoBH0ACv///7z+FAQqBDoCJgBbAAAABwCoBKj/Y///AO4AAAVTB8QCJgA7AAAABwCmBLcBUf///7z+SwQqBnACJgBbAAAABwCmBAP//f//AO4AAAVTB08CJgA7AAAABwCgAPcBXv///7z+SwQqBfoCJgBbAAAABgCgQwkAAAACAET/6wUmBhgAGgAoAAABIwMjNycOASMiAj8BGgEzMhYXEyM3MzczBzMBBhYzMjY3Ey4BIyIGBwUItPedCQM8kFiwri8EOO7BWIcrN+oe6SS1JLX8AyRhiUx1M2Uba1R8nyYE0vsuaAI/QAE06hUBHAEUSEUBEZWxsfyis9FTTwH6RE/ZvQD//wAT/u4FJgYYACYARgAAACcB0wH8AkYABgBBfYMAAP//AD7+mQU1BbAAJgAtAAAABwGcA/QAAP//AED+mQRhBDoCJgDsAAAABwGcAxMAAP//AFj+mQV5BbACJgAqAAAABwGcBBwAAP//AED+mQRGBDoCJgDvAAAABwGcAzQAAP//AOz+mQULBbACJgA2AAAABwGcAggAAP//AJD+mQP3BDoCJgDxAAAABwGcAZgAAP////z+mQUdBbACJgA6AAAABwGcA5YAAP///+n+mQPxBDoCJgBaAAAABwGcAq4AAP//ANH+mQVIBbACJgDcAAAABwGcA+sAAP//AH/+mQQGBDsCJgD0AAAABwGcAvMAAP//ANH+mQVIBbACJgDcAAAABwGcAt8AAP//AH/+mQQGBDsCJgD0AAAABwGcAeYAAP//AFf+mQS5BbACJgCsAAAABwGcANMAAP//AD7+mQOVBDoCJgDnAAAABwGcAJsAAP///8r+mQddBbACJgDVAAAABwGcBeEAAP///8P+mQYBBDoCJgDpAAAABwGcBKoAAP//AK7+VAXuBcMCJgE7AAAABwGcAsn/u///ACX+WARRBE4CJgE8AAAABwGcAdL/v///ADUAAAQZBhgCBgBKAAAAAgBIAAAEkgWwABIAGwAAASMHITIWBwYEIyETIzczNzMHMwEDITI2NzYmIwKv1TEBTs/MJyv+7eH9/NzIHsgptinV/r5vAU6DsBkZZ48EUPjmwtTcBFCVy8v93v3So3qAkQAAAAIASAAABJIFsAASABsAAAEjByEyFgcGBCMhEyM3MzczBzMBAyEyNjc2JiMCr9UxAU7PzCcr/u3h/fzcyB7IKbYp1f6+bwFOg7AZGWePBFD45sLU3ARQlcvL/d790qN6gJEAAAABADQAAAS5BbAADQAAASMDIxMjNzMTIQchAzMCh/KItoirHqt9Az8e/Xdf8gKs/VQCrJUCb5b+JwAAAAABAAoAAAOVBDoADQAAASEDIxMjNzMTIQchAyECXf72X7Zfkx6TWwJ/Hv43PQEKAd/+IQHflQHGl/7RAAABAFIAAAVJBbAAFAAAASMDIxMjNzM3MwczByMDMwEzCQEjAhaJhLfnrB6sHrce8B7wRJQCI+b9awGEzwKV/WsEhZWWlpX+rwJ8/Sj9KAAAAAEASgAABDwGGAAUAAABIwMjEyM3MzczBzMHIwMzATMJASMB3HhktvPGHsYntifXHtdxdgFu1v5DARbWAfb+CgTBlcLClf3MAa3+E/2zAAD//wBY/ooFegdMAiYA1wAAACcAnAGOAZwABwAOBCz/vv//AED+igRHBfUCJgDrAAAAJwCcAMgARQAHAA4DRP++//8AWP6KBXkFsAImACoAAAAHAA4EK/++//8AQP6KBEYEOgImAO8AAAAHAA4DQ/++//8AWP6KBrMFsAImAC8AAAAHAA4FZf++//8AQP6KBX8EOgImAO4AAAAHAA4EfP++////3v6KBXEFsAImANgAAAAHAA4EI/++////1f6KBEkEOgImAO0AAAAHAA4DRv++AAEA7gAABVMFsAAQAAAJATMBMwcjBwMjEycjNzMDMwKNAffP/dpyHr0JZ7RqAdsekO7QAs0C4/z2lQ39/AIQAZUDCgAAAQBt/mAEJgQ6ABEAAAUjAyMTIzczAzMTFzM3ATMBMwLA0lG2Ucses4u5VwEDJAGCuf3/uQz+bAGUlQOx/QBTUwMA/E8AAAAAAf/8AAAFHQWwABEAAAEjASMDASMBIzczATMTATMBMwO0nQEm1+v+XdwB/Jcehf7r2d8Bm9v+HpcCnv1iAkj9uAKelQJ9/cMCPf2DAAH/6QAAA/EEOgARAAABIxMjAwEjASM3MwMzEwEzATMDDpva0J7+3dMBdaMek8zRlQEY0/6klwHh/h8Bnv5iAeGVAcT+bQGT/jwAAP//ACn/7QP9BEwCBgC6AAD////8AAAE+QWwAiYAKAAAAAcB0/9D/n7//wEAAowGCQMhAEYBhrUAZmZAAAACAE8AAAIoBbAAAwAHAAABIxMzASM3MwFltsO2/t22KLYB3gPS+lDIAAAAAAAAAAAAAAAAAAAcAFQAmgD6AVgBagGQAbYB2AH0AgoCGAIkAjICaAJ6AqgC7AMQA0YDjAOsA/oEQARMBFgEdASKBKYE2gVOBWwFqAXcBggGJAY+BnYGkAaeBrwG2gbsBxQHLgdkB4wHyggICEYIXAiACJoIxgjmCP4JFgksCToJUAloCXYJhAnKCgIKMgpqCqAKyAsQCzgLTAtyC5ALngvcDAIMNAxsDKQMxA0ADSoNUA1oDZQNsg3cDfQOLA46DnAOnA6wDugPIA9wD54PtBAgEDQQkhDYEOQQ+hFoEXYRoBHCEfASMBI+EmoShBKSErASwhLyEv4TEBMiEzQTaBOUE7QUChQ0FHYU2hUsFUgVmBXWFgQWEBYuFk4WahaaFtIXFhdwF44XyBgMGEwYfBiuGM4ZBBkaGTAZTBlaGYQZqBnKGeIaChoYGiYaMBpQGmYadBqCGpwapBq4GtAbDhskG0AbVht2G7ob6hwyHHocxBzgHTAdcB2sHdIeEB4wHmYeuB7kHxwfVh+OH7Qf3iAgIFggniDgIRwhaCGaIdQiECJGInIikCK+IuwjGiNcI3gjnCPEJAokJiRMJGwkkiS+JO4lFiVQJZIlviYIJkImVCaAJqwm8CcMJyonTCdsJ4YnmiewKBIoLihSKG4okCi6KOgpDilCKX4prCn0KiYqYCqUKsYq4isaK1IrhCvILAIsJCxKLHosrCzuLSYtdC24Lg4uZC6iLtgu/C8kL2ovrDAYMIIwyDEOMTwxaDGSMaYxxjHYMeoylDLuMyAzUDOQM6gzwDPqNBQ0PjRmNIg0qjTKNOg1FjVCNaA1+jYcNjw2ajaWNrw3AjdCN243mjfIN/Q4MDhiOJY4pji2ON45GjlyObw6BjpOOpg61jsSO0o7gDu8O/Y8JjxWPJ48njyePJ48njyePJ48njyePJ48njyePJ48qDyyPL481DzsPQI9Dj0aPSY9TD1oPZA9rD24Pcg+UD5mPn4+jD6uPtY/Fj9gP6RABEBGQJJAvkD2QQhBGkEsQT5BfEGSQbJBwEHcQjhCaELAQuhC+EMIQyxDOkNQQ2ZDlEOURIpE1EUIRSpFYEWARZ5FwkXQRgZGOkZcRopGtEbQRuxHDkceRzxHdEekR8pH5kf+SDJITEhYSHZIlEimSMhI4kkUSU5JiknISd5KAkoaSkJKYEp4SpBKwkrUSwBLQEtiS5BL1EvyTEBMhEyWTMRNBE0WTUpNjE2oTfZOOE5oTnZOqE7KTw5PMk9oT7BQKlBKUIpQ2FEUUWJRjFHSUgBSIFJAUl5SfFLCUuhS8FL4UwBTNlNsU55TvlPyU/5UClQWVCJULlQ6VEZUUlReVGpUdlSCVI5UmlSmVLJUvlTKVNZU4lTuVPpVBlUSVR5VKlU2VUJVTlVaVWZVclV+VYpVllWiVa5VulXGVdJV3lXqVfZWAlYOVhpWJlYyVj5WSlZWVmJWblZ6VoZWklaeVqpWtlbuV1BXXFdoV3RXgFeMV5hXpFewV7xXyFfUV+BX7Ff4WARYEFhKWJxYqFi0WMBYzFjYWORY8Fj8WQhZFFkgWSxZOFlEWVBZXFloWXRZgFmMWZhZpFmwWbxZyFnUWeBZ7Fn4WgRaEFocWihaNFpAWkxaWFpkWnBafFqIWpRaoFqsWrhaxFrQWtxa6Fr0WwBbDFsYWyRbMFs8W0hbVFtgW2xbeFuEW5BbnFuoW7RbwFvMW9hb5FvwW/xcCFwUXCBcLFw4XERcUFxcXKBc4FzsXPhdBF0QXRxdKF00XUBdTF1YXWRdcF18XYhdlF2gXaxduF3EXdBd3F3oXfReAF4MXhheJF4wXjxeSF5UXmBebF54XoRekF6cXqhetF7AXsxe2F7kXvBe/F8IXxRfTF9YX2RfcF98X4hflF+gX6xf5l/yX/5gCmAWYCJgLmA6YEZgUmBeYGpgdmCCYI5gmmCmYLJgvmDKYNZg4mDuYPphBmESYR5hKmE2YUJhTmFaYWZhcmF+YYphlmGiYeZh8mH+YgpiFmIiYi5iOmJGYlJiXmJqYnZigmKOYppiomKqYrJiumLCYspi0mLaYuJi6mLyYvpjAmMKYxZjImMuYzpjRmNSY15jZmNuY3ZjfmOGY5JjnmOqY7ZjwmPOY9pkGGQgZCxkNGQ8ZEhkVGRcZGRkbGR0ZIBkiGSQZJhkoGSoZLBkuGTAZMhk0GTcZORk7GUcZSRlLGU4ZURlTGVUZWBlaGV0ZYBljGWYZaRlsGW8Zchl1GXgZehl8GX8ZghmFGYcZihmNGZAZkxmWGZkZnRmgGaMZphmpGasZrRmwGbMZthm5GbwZvxnCGcUZxxnJGcsZzhnRGdMZ1hnZGdwZ3xnhGeMZ5hnpGewZ7hnxGfQZ9xn6Gf0aABoDGgYaCRoMGg8aERoTGhYaGRocGh8aIholGigaKxouGjEaNBo3GjsaPxpCGkUaRxpKGk0aUBpTGlYaWRpcGl8aYhplGmgaaxpuGnEadRp5GnwafxqCGoUaiBqLGo4akRqVGpkanBqfGqIapRqoGqsarhqxGrQatxq6Gr0awBrDGscayxrOGtEa1BrXGtoa3RrgGuMa5hrpGuwa7xryGvUa+Br7Gv8bAxsGGwkbDBsPGxIbFRsYGxsbHhshGyQbJxsqGy0bMBszGzYbORs8Gz8bQhtFG0gbSxtOG1EbVBtXG1obXRtuG3IbdRt4G3sbfhuBG4QbhxuKG40bkBuTG5YbmRucG58bohulG6gbqhu2m8MbypvSG9wb5hvqG+4b8Rv0G/cb+hv9HAAcCJwRnBscJJwmnCmcLBwsHCwcMYAAAAbAUoAAQAAAAAAAAAfAAAAAQAAAAAAAQAGAB8AAQAAAAAAAgAGACUAAQAAAAAAAwASACsAAQAAAAAABAANAD0AAQAAAAAABQAWAEoAAQAAAAAABgANAGAAAQAAAAAABwAgAG0AAQAAAAAACQAGAI0AAQAAAAAACwAKAJMAAQAAAAAADAATAJ0AAQAAAAAADQAuALAAAQAAAAAADgAqAN4AAQAAAAAAEgANAQgAAwABBAkAAAA+ARUAAwABBAkAAQAMAVMAAwABBAkAAgAMAV8AAwABBAkAAwAkAWsAAwABBAkABAAaAY8AAwABBAkABQAsAakAAwABBAkABgAaAdUAAwABBAkABwBAAe8AAwABBAkACQAMAi8AAwABBAkACwAUAjsAAwABBAkADAAmAk8AAwABBAkADQBcAnUAAwABBAkADgBUAtFGb250IGRhdGEgY29weXJpZ2h0IEdvb2dsZSAyMDEzUm9ib3RvSXRhbGljR29vZ2xlOlJvYm90bzoyMDEzUm9ib3RvIEl0YWxpY1ZlcnNpb24gMS4yMDAzMTA7IDIwMTNSb2JvdG8tSXRhbGljUm9ib3RvIGlzIGEgdHJhZGVtYXJrIG9mIEdvb2dsZS5Hb29nbGVHb29nbGUuY29tQ2hyaXN0aWFuIFJvYmVydHNvbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBSb2JvdG8gSXRhbGljAEYAbwBuAHQAIABkAGEAdABhACAAYwBvAHAAeQByAGkAZwBoAHQAIABHAG8AbwBnAGwAZQAgADIAMAAxADMAUgBvAGIAbwB0AG8ASQB0AGEAbABpAGMARwBvAG8AZwBsAGUAOgBSAG8AYgBvAHQAbwA6ADIAMAAxADMAUgBvAGIAbwB0AG8AIABJAHQAYQBsAGkAYwBWAGUAcgBzAGkAbwBuACAAMQAuADIAMAAwADMAMQAwADsAIAAyADAAMQAzAFIAbwBiAG8AdABvAC0ASQB0AGEAbABpAGMAUgBvAGIAbwB0AG8AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABHAG8AbwBnAGwAZQAuAEcAbwBvAGcAbABlAEcAbwBvAGcAbABlAC4AYwBvAG0AQwBoAHIAaQBzAHQAaQBhAG4AIABSAG8AYgBlAHIAdABzAG8AbgBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAAACAAAAAAAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAABB0AAAECAAIAAwAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCjAIQAhQC9AJYA6ACGAI4AiwCdAKkApACKAQMAgwCTAPIA8wCNAJcAiAEEAN4A8QCeAKoA9QD0APYAogCQAPAAkQDtAIkAoADqALgAoQDuAQUA1wEGAOIA4wEHAQgAsACxAQkApgEKAQsBDAENAQ4BDwDYAOEA2wDcAN0A4ADZAN8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgCfASMBJAElASYBJwEoASkBKgErASwBLQCbAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0AsgCzAc4AtgC3AMQBzwC0ALUAxQCCAMIAhwHQAKsAxgC+AL8AvAHRAdIB0wHUAdUB1gHXAdgAjAHZAdoB2wHcAd0AmACaAJkA7wClAJIAnACnAI8AlACVALkB3gHfAeAAwAHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwCsAjgCOQDpAjoCOwI8AK0AyQDHAK4AYgBjAj0AZADLAGUAyADKAM8AzADNAM4AZgDTANAA0QCvAGcA1gDUANUAaADrAGoAaQBrAG0AbABuAj4AbwBxAHAAcgBzAHUAdAB2AHcAeAB6AHkAewB9AHwAfwB+AIAAgQDsALoCPwJAAkECQgJDAkQA/QD+AkUCRgJHAkgA/wEAAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgD4APkCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigD7APwCiwKMAOQA5QKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiALsCowKkAqUCpgDmAOcCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQD3BCIEIwQkAAQETlVMTAZtYWNyb24OcGVyaW9kY2VudGVyZWQESGJhcgxrZ3JlZW5sYW5kaWMDRW5nA2VuZwVsb25ncwVPaG9ybgVvaG9ybgVVaG9ybgV1aG9ybgd1bmkwMjM3BXNjaHdhB3VuaTAyRjMJZ3JhdmVjb21iCWFjdXRlY29tYgl0aWxkZWNvbWIEaG9vawd1bmkwMzBGCGRvdGJlbG93BXRvbm9zDWRpZXJlc2lzdG9ub3MJYW5vdGVsZWlhBUdhbW1hBURlbHRhBVRoZXRhBkxhbWJkYQJYaQJQaQVTaWdtYQNQaGkDUHNpBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBmxhbWJkYQJ4aQNyaG8Gc2lnbWExBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNwc2kFb21lZ2EHdW5pMDNEMQd1bmkwM0QyB3VuaTAzRDYHdW5pMDQwMgd1bmkwNDA0B3VuaTA0MDkHdW5pMDQwQQd1bmkwNDBCB3VuaTA0MEYHdW5pMDQxMQd1bmkwNDE0B3VuaTA0MTYHdW5pMDQxNwd1bmkwNDE4B3VuaTA0MUIHdW5pMDQyMwd1bmkwNDI0B3VuaTA0MjYHdW5pMDQyNwd1bmkwNDI4B3VuaTA0MjkHdW5pMDQyQQd1bmkwNDJCB3VuaTA0MkMHdW5pMDQyRAd1bmkwNDJFB3VuaTA0MkYHdW5pMDQzMQd1bmkwNDMyB3VuaTA0MzMHdW5pMDQzNAd1bmkwNDM2B3VuaTA0MzcHdW5pMDQzOAd1bmkwNDNBB3VuaTA0M0IHdW5pMDQzQwd1bmkwNDNEB3VuaTA0M0YHdW5pMDQ0Mgd1bmkwNDQ0B3VuaTA0NDYHdW5pMDQ0Nwd1bmkwNDQ4B3VuaTA0NDkHdW5pMDQ0QQd1bmkwNDRCB3VuaTA0NEMHdW5pMDQ0RAd1bmkwNDRFB3VuaTA0NEYHdW5pMDQ1Mgd1bmkwNDU0B3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDVCB3VuaTA0NUYHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjMHdW5pMDQ2NAd1bmkwNDY1B3VuaTA0NjYHdW5pMDQ2Nwd1bmkwNDY4B3VuaTA0NjkHdW5pMDQ2QQd1bmkwNDZCB3VuaTA0NkMHdW5pMDQ2RAd1bmkwNDZFB3VuaTA0NkYHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDdBB3VuaTA0N0IHdW5pMDQ3Qwd1bmkwNDdEB3VuaTA0N0UHdW5pMDQ3Rgd1bmkwNDgwB3VuaTA0ODEHdW5pMDQ4Mgd1bmkwNDgzB3VuaTA0ODQHdW5pMDQ4NQd1bmkwNDg2B3VuaTA0ODgHdW5pMDQ4OQd1bmkwNDhEB3VuaTA0OEUHdW5pMDQ4Rgd1bmkwNDkwB3VuaTA0OTEHdW5pMDQ5NAd1bmkwNDk1B3VuaTA0OUMHdW5pMDQ5RAd1bmkwNEEwB3VuaTA0QTEHdW5pMDRBNAd1bmkwNEE1B3VuaTA0QTYHdW5pMDRBNwd1bmkwNEE4B3VuaTA0QTkHdW5pMDRCNAd1bmkwNEI1B3VuaTA0QjgHdW5pMDRCOQd1bmkwNEJBB3VuaTA0QkMHdW5pMDRCRAd1bmkwNEMzB3VuaTA0QzQHdW5pMDRDNwd1bmkwNEM4B3VuaTA0RDgHdW5pMDRFMAd1bmkwNEUxB3VuaTA0RkEHdW5pMDRGQgd1bmkwNTAwB3VuaTA1MDIHdW5pMDUwMwd1bmkwNTA0B3VuaTA1MDUHdW5pMDUwNgd1bmkwNTA3B3VuaTA1MDgHdW5pMDUwOQd1bmkwNTBBB3VuaTA1MEIHdW5pMDUwQwd1bmkwNTBEB3VuaTA1MEUHdW5pMDUwRgd1bmkwNTEwB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDBCDXVuZGVyc2NvcmVkYmwNcXVvdGVyZXZlcnNlZAd1bmkyMDI1B3VuaTIwNzQJbnN1cGVyaW9yBGxpcmEGcGVzZXRhBEV1cm8HdW5pMjEwNQd1bmkyMTEzB3VuaTIxMTYJZXN0aW1hdGVkCW9uZWVpZ2h0aAx0aHJlZWVpZ2h0aHMLZml2ZWVpZ2h0aHMMc2V2ZW5laWdodGhzCmNvbG9uLmxudW0JcXVvdGVkYmx4C2NvbW1hYWNjZW50B3VuaUZFRkYHdW5pRkZGQwd1bmlGRkZECWZpdmUuc21jcAhmb3VyLnN1cAl6ZXJvLmxudW0ObGFyZ2VyaWdodGhvb2sMY3lyaWxsaWNob29rEGN5cmlsbGljaG9va2xlZnQLY3lyaWxsaWN0aWMOYnJldmV0aWxkZWNvbWINYnJldmVob29rY29tYg5icmV2ZWFjdXRlY29tYhNjaXJjdW1mbGV4dGlsZGVjb21iEmNpcmN1bWZsZXhob29rY29tYhNjaXJjdW1mbGV4Z3JhdmVjb21iE2NpcmN1bWZsZXhhY3V0ZWNvbWIOYnJldmVncmF2ZWNvbWIRY29tbWFhY2NlbnRyb3RhdGUGQS5zbWNwBkIuc21jcAZDLnNtY3AGRC5zbWNwBkUuc21jcAZGLnNtY3AGRy5zbWNwBkguc21jcAZJLnNtY3AGSi5zbWNwBksuc21jcAZMLnNtY3AGTS5zbWNwBk4uc21jcAZPLnNtY3AGUS5zbWNwBlIuc21jcAZTLnNtY3AGVC5zbWNwBlUuc21jcAZWLnNtY3AGVy5zbWNwBlguc21jcAZZLnNtY3AGWi5zbWNwCXplcm8uc21jcAhvbmUuc21jcAh0d28uc21jcAp0aHJlZS5zbWNwCWZvdXIuc21jcAh0d28ubG51bQhzaXguc21jcApzZXZlbi5zbWNwCmVpZ2h0LnNtY3AJbmluZS5zbWNwB29uZS5zdXAHdHdvLnN1cAl0aHJlZS5zdXAIb25lLmxudW0IZml2ZS5zdXAHc2l4LnN1cAlzZXZlbi5zdXAJZWlnaHQuc3VwCG5pbmUuc3VwCHplcm8uc3VwCGNyb3NzYmFyCXJpbmdhY3V0ZQlkYXNpYW94aWEKdGhyZWUubG51bQlmb3VyLmxudW0JZml2ZS5sbnVtCHNpeC5sbnVtBWcuYWx0CnNldmVuLmxudW0HY2hpLmFsdAplaWdodC5sbnVtCWFscGhhLmFsdAlkZWx0YS5hbHQERC5jbgRhLmNuBVIuYWx0BUsuYWx0BWsuYWx0BksuYWx0MgZrLmFsdDIJbmluZS5sbnVtBlAuc21jcA1jeXJpbGxpY2JyZXZlB3VuaTAwQUQGRGNyb2F0BGhiYXIEVGJhcgR0YmFyCkFyaW5nYWN1dGUKYXJpbmdhY3V0ZQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgHdW5pMDEwQQd1bmkwMTBCBkRjYXJvbgZkY2Fyb24HRW1hY3JvbgdlbWFjcm9uBkVicmV2ZQZlYnJldmUKRWRvdGFjY2VudAplZG90YWNjZW50B0VvZ29uZWsHZW9nb25lawZFY2Fyb24GZWNhcm9uC0djaXJjdW1mbGV4C2djaXJjdW1mbGV4B3VuaTAxMjAHdW5pMDEyMQxHY29tbWFhY2NlbnQMZ2NvbW1hYWNjZW50C0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4Bkl0aWxkZQZpdGlsZGUHSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJldmUHSW9nb25lawdpb2dvbmVrCklkb3RhY2NlbnQCSUoCaWoLSmNpcmN1bWZsZXgLamNpcmN1bWZsZXgMS2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAZMYWN1dGUGbGFjdXRlDExjb21tYWFjY2VudAxsY29tbWFhY2NlbnQGTGNhcm9uBmxjYXJvbgRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQxOY29tbWFhY2NlbnQMbmNvbW1hYWNjZW50Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUHT21hY3JvbgdvbWFjcm9uBk9icmV2ZQZvYnJldmUNT2h1bmdhcnVtbGF1dA1vaHVuZ2FydW1sYXV0BlJhY3V0ZQZyYWN1dGUMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudAZSY2Fyb24GcmNhcm9uBlNhY3V0ZQZzYWN1dGULU2NpcmN1bWZsZXgLc2NpcmN1bWZsZXgHdW5pMDIxOAd1bmkwMjE5B3VuaTAyMUEHdW5pMDIxQgd1bmkwMTYyB3VuaTAxNjMGVGNhcm9uBnRjYXJvbgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQHQUVhY3V0ZQdhZWFjdXRlC09zbGFzaGFjdXRlC29zbGFzaGFjdXRlC0Rjcm9hdC5zbWNwCEV0aC5zbWNwCVRiYXIuc21jcAtBZ3JhdmUuc21jcAtBYWN1dGUuc21jcBBBY2lyY3VtZmxleC5zbWNwC0F0aWxkZS5zbWNwDkFkaWVyZXNpcy5zbWNwCkFyaW5nLnNtY3APQXJpbmdhY3V0ZS5zbWNwDUNjZWRpbGxhLnNtY3ALRWdyYXZlLnNtY3ALRWFjdXRlLnNtY3AQRWNpcmN1bWZsZXguc21jcA5FZGllcmVzaXMuc21jcAtJZ3JhdmUuc21jcAtJYWN1dGUuc21jcBBJY2lyY3VtZmxleC5zbWNwDklkaWVyZXNpcy5zbWNwC050aWxkZS5zbWNwC09ncmF2ZS5zbWNwC09hY3V0ZS5zbWNwEE9jaXJjdW1mbGV4LnNtY3ALT3RpbGRlLnNtY3AOT2RpZXJlc2lzLnNtY3ALVWdyYXZlLnNtY3ALVWFjdXRlLnNtY3AQVWNpcmN1bWZsZXguc21jcA5VZGllcmVzaXMuc21jcAtZYWN1dGUuc21jcAxBbWFjcm9uLnNtY3ALQWJyZXZlLnNtY3AMQW9nb25lay5zbWNwC0NhY3V0ZS5zbWNwEENjaXJjdW1mbGV4LnNtY3AMdW5pMDEwQS5zbWNwC0NjYXJvbi5zbWNwC0RjYXJvbi5zbWNwDEVtYWNyb24uc21jcAtFYnJldmUuc21jcA9FZG90YWNjZW50LnNtY3AMRW9nb25lay5zbWNwC0VjYXJvbi5zbWNwEEdjaXJjdW1mbGV4LnNtY3ALR2JyZXZlLnNtY3AMdW5pMDEyMC5zbWNwEUdjb21tYWFjY2VudC5zbWNwEEhjaXJjdW1mbGV4LnNtY3ALSXRpbGRlLnNtY3AMSW1hY3Jvbi5zbWNwC0licmV2ZS5zbWNwDElvZ29uZWsuc21jcA9JZG90YWNjZW50LnNtY3AQSmNpcmN1bWZsZXguc21jcBFLY29tbWFhY2NlbnQuc21jcAtMYWN1dGUuc21jcBFMY29tbWFhY2NlbnQuc21jcAtMY2Fyb24uc21jcAlMZG90LnNtY3ALTmFjdXRlLnNtY3ARTmNvbW1hYWNjZW50LnNtY3ALTmNhcm9uLnNtY3AMT21hY3Jvbi5zbWNwC09icmV2ZS5zbWNwEk9odW5nYXJ1bWxhdXQuc21jcAtSYWN1dGUuc21jcBFSY29tbWFhY2NlbnQuc21jcAtSY2Fyb24uc21jcAtTYWN1dGUuc21jcBBTY2lyY3VtZmxleC5zbWNwDVNjZWRpbGxhLnNtY3ALU2Nhcm9uLnNtY3ARVGNvbW1hYWNjZW50LnNtY3ALVGNhcm9uLnNtY3ALVXRpbGRlLnNtY3AMVW1hY3Jvbi5zbWNwC1VicmV2ZS5zbWNwClVyaW5nLnNtY3ASVWh1bmdhcnVtbGF1dC5zbWNwDFVvZ29uZWsuc21jcBBXY2lyY3VtZmxleC5zbWNwEFljaXJjdW1mbGV4LnNtY3AOWWRpZXJlc2lzLnNtY3ALWmFjdXRlLnNtY3APWmRvdGFjY2VudC5zbWNwC1pjYXJvbi5zbWNwD2dlcm1hbmRibHMuc21jcApBbHBoYXRvbm9zDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rvbm9zBUFscGhhBEJldGEHRXBzaWxvbgRaZXRhA0V0YQRJb3RhBUthcHBhAk11Ak51B09taWNyb24DUmhvA1RhdQdVcHNpbG9uA0NoaQxJb3RhZGllcmVzaXMPVXBzaWxvbmRpZXJlc2lzCmFscGhhdG9ub3MMZXBzaWxvbnRvbm9zCGV0YXRvbm9zCWlvdGF0b25vcxR1cHNpbG9uZGllcmVzaXN0b25vcwVrYXBwYQdvbWljcm9uB3VuaTAzQkMCbnUDY2hpDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpvbWVnYXRvbm9zB3VuaTA0MDEHdW5pMDQwMwd1bmkwNDA1B3VuaTA0MDYHdW5pMDQwNwd1bmkwNDA4B3VuaTA0MUEHdW5pMDQwQwd1bmkwNDBFB3VuaTA0MTAHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MTUHdW5pMDQxOQd1bmkwNDFDB3VuaTA0MUQHdW5pMDQxRQd1bmkwNDFGB3VuaTA0MjAHdW5pMDQyMQd1bmkwNDIyB3VuaTA0MjUHdW5pMDQzMAd1bmkwNDM1B3VuaTA0MzkHdW5pMDQzRQd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mwd1bmkwNDQ1B3VuaTA0NTEHdW5pMDQ1Mwd1bmkwNDU1B3VuaTA0NTYHdW5pMDQ1Nwd1bmkwNDU4B3VuaTA0NUMHdW5pMDQ1RQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwZZZ3JhdmUGeWdyYXZlBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaUZCMDIHdW5pMDFGMAd1bmkwMkJDB3VuaTFFM0UHdW5pMUUzRgd1bmkxRTAwB3VuaTFFMDEHdW5pMUY0RAd1bmlGQjAzB3VuaUZCMDQHdW5pMDQwMAd1bmkwNDBEB3VuaTA0NTAHdW5pMDQ1RAd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Ngd1bmkwNDc3B3VuaTA0NzkHdW5pMDQ3OAd1bmkwNDk4B3VuaTA0OTkHdW5pMDRBQQd1bmkwNEFCB3VuaTA0QUUHdW5pMDRBRgd1bmkwNEMwB3VuaTA0QzEHdW5pMDRDMgd1bmkwNENGB3VuaTA0RDAHdW5pMDREMQd1bmkwNEQyB3VuaTA0RDMHdW5pMDRENAd1bmkwNEQ1B3VuaTA0RDYHdW5pMDRENwd1bmkwNERBB3VuaTA0RDkHdW5pMDREQgd1bmkwNERDB3VuaTA0REQHdW5pMDRERQd1bmkwNERGB3VuaTA0RTIHdW5pMDRFMwd1bmkwNEU0B3VuaTA0RTUHdW5pMDRFNgd1bmkwNEU3B3VuaTA0RTgHdW5pMDRFOQd1bmkwNEVBB3VuaTA0RUIHdW5pMDRFQwd1bmkwNEVEB3VuaTA0RUUHdW5pMDRFRgd1bmkwNEYwB3VuaTA0RjEHdW5pMDRGMgd1bmkwNEYzB3VuaTA0RjQHdW5pMDRGNQd1bmkwNEY4B3VuaTA0RjkHdW5pMDRGQwd1bmkwNEZEB3VuaTA1MDEHdW5pMDUxMgd1bmkwNTEzB3VuaTFFQTAHdW5pMUVBMQd1bmkxRUEyB3VuaTFFQTMHdW5pMUVBNAd1bmkxRUE1B3VuaTFFQTYHdW5pMUVBNwd1bmkxRUE4B3VuaTFFQTkHdW5pMUVBQQd1bmkxRUFCB3VuaTFFQUMHdW5pMUVBRAd1bmkxRUFFB3VuaTFFQUYHdW5pMUVCMAd1bmkxRUIxB3VuaTFFQjIHdW5pMUVCMwd1bmkxRUI0B3VuaTFFQjUHdW5pMUVCNgd1bmkxRUI3B3VuaTFFQjgHdW5pMUVCOQd1bmkxRUJBB3VuaTFFQkIHdW5pMUVCQwd1bmkxRUJEB3VuaTFFQkUHdW5pMUVCRgd1bmkxRUMwB3VuaTFFQzEHdW5pMUVDMgd1bmkxRUMzB3VuaTFFQzQHdW5pMUVDNQd1bmkxRUM2B3VuaTFFQzcHdW5pMUVDOAd1bmkxRUM5B3VuaTFFQ0EHdW5pMUVDQgd1bmkxRUNDB3VuaTFFQ0QHdW5pMUVDRQd1bmkxRUNGB3VuaTFFRDAHdW5pMUVEMQd1bmkxRUQyB3VuaTFFRDMHdW5pMUVENAd1bmkxRUQ1B3VuaTFFRDYHdW5pMUVENwd1bmkxRUQ4B3VuaTFFRDkHdW5pMUVEQQd1bmkxRURCB3VuaTFFREMHdW5pMUVERAd1bmkxRURFB3VuaTFFREYHdW5pMUVFMAd1bmkxRUUxB3VuaTFFRTIHdW5pMUVFMwd1bmkxRUU0B3VuaTFFRTUHdW5pMUVFNgd1bmkxRUU3B3VuaTFFRTgHdW5pMUVFOQd1bmkxRUVBB3VuaTFFRUIHdW5pMUVFQwd1bmkxRUVEB3VuaTFFRUUHdW5pMUVFRgd1bmkxRUYwB3VuaTFFRjEHdW5pMUVGNAd1bmkxRUY1B3VuaTFFRjYHdW5pMUVGNwd1bmkxRUY4B3VuaTFFRjkGZGNyb2F0B3VuaTIwQUIHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0QTIHdW5pMDRBMwd1bmkwNEFDB3VuaTA0QUQHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjYHdW5pMDRCNwd1bmkwNENCB3VuaTA0Q0MHdW5pMDRGNgd1bmkwNEY3B3VuaTA0OTYHdW5pMDQ5Nwd1bmkwNEJFB3VuaTA0QkYHdW5pMDRCQgd1bmkwNDhDB3VuaTA0NjIHdW5pMDQ5Mgd1bmkwNDkzB3VuaTA0OUUHdW5pMDQ5Rgd1bmkwNDhBB3VuaTA0OEIHdW5pMDRDOQd1bmkwNENBB3VuaTA0Q0QHdW5pMDRDRQd1bmkwNEM1B3VuaTA0QzYHdW5pMDRCMAd1bmkwNEIxB3VuaTA0RkUHdW5pMDRGRgd1bmkwNTExB3VuaTIwMTUHdW5pMDAwMgd1bmkwMDA5AAAAAAEAAAAMAAAAAAAAAAIACADKAMoAAQEeASQAAQFWAWEAAQF2AXYAAQF7AXwAAQF+AX4AAQGTAZUAAQHVAdUAAQAAAAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAAEAA5NaFUGc1wAAXrYAAQAAAGtA2QDagNwA3YD6APyBAQEKgRABEoEbASOBJQE4gUQBTIFVAV6BaAFpgaMBpIGuAbeB0AH0gf0CBIILAgyCEAIRghMCFIIeAiSCKAIvgjECOII/AkCCcQKNgpcCs4K1AreCuQK6grwCw4LHAtGC0wLYgt8C4ILnAuiC6gL3gvkC+4MHAxCDGgMigysDM4M/A1eDXQNlg24DgIOJA5GDngOng7EDs4O2A7yDwQPDg8oDy4PRA+SD6wPxg/cD/4QIBA6EEAQYhCEEKYRGBE+EWQRghGcEl4SaBK2EwQTDhMUExoTIBMmEywTUhNcE2ITdBOeE7QTxhPYE/4UBBQaFCQUNhRcFHIUeBR+FJgUnhTEFOoV0BZCFrQXJheYGAoYfBjuGQAZFhksGUIZWBl6GZwZvhngGgIaKBpOGnQamhrAGsYazBrSGtgbahuIG6YbxBviHAAcHhw8HEIcSBxOHFQcWhyAHKYczBzyHRgdNh1UHcYd5B5WHnQe5h8EHxYfKB86H0wfch+IH44fpB+qH8Afxh/cH+If+B/+ICAgJiBIIGogjCCuINAg1iEkIVIhgCGuIdwh/iIEIiYiLCJOIlQiWiKAIqYizCLyIxgjPiNMI1ojaCROJTQmGiYgJiYmLCYyJjgmPiZkJvYnFCemJ8gn6igMKH4olCi2KNgo/imQKgIqDCoiKkQqZiqIKtYq+CsaK0ArZixMLN4tQC1iLfQt+i4gLj4uZC56LzwvXi+AL4Yv1DAiMGww3jDoMaoxwDHiMgQyKjJQMmIzSDOqM8gzzjP0NA40LDQyNDg0QjRgNIY0rDTSNWQ1gjWINY41lDW2Nbw2LjZMNnI2iDaONrQ20jbkN3Y3lDe2OBg4HjhAOLI40DlCOWA5djl8OYI5iDnqOfA6Fjo8OmI6fDrGOuQ7LjtMO5Y7tDwWPBw8jjysPR49PD2uPcw+Pj5cPs4+7D9eP3w/7kAMQH5AnEEOQSxBnkG8Qi5CTEK+QtxC8kL4Qw5DFEMqQzBDRkNMQ2JDaEN+Q4RDmkOgQ7ZDvEPeRABEJkRMRHJEmES+RORFCkUwRVZFfEWiRchF7kYURjpGQEZGRthG9keIR6ZIOEhWSKRIxkmsSg5KFErWSuBLQktIS05LdEw2TIRMpkzIAAEAWQALAAEAWQALAAEAEf8gABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAIBDAALAVP/5gAEAAv/5gA///QAX//vATz/7QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AACAFT/5gGn/8AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAaf/6wATAFn/wQCz/8UAxf+0AOX/1wDx/7kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAan/6AGt/+YBtf/nAbb/5wALAFn/pAGnABMBqf/zAa3/8QG1//IBtv/xAbn/OwG6/9oBu/9UAbz/kQG+/z8ACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAVgAOAH//nwC//94Awv/lANT/qADo/8oBRv/jAaf/xgHf//UAAQGnAA4AOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQABAaf/6wAJAAsAFAA/ABEAVP/iAF8AEwGn/7QBqf/ZAa3/2QG1/9kBtv/ZAAkACwAPAD8ADABU/+sAXwAOAaf/ywGp/+kBrf/nAbX/5wG2/+cAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAgAWf/lALP/ywDI/+QBpwANAan/7QGt/+sBtf/sAbb/7AAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oAAEA8f/1AAMACwAUAD8AEgBfABMAAQDx/8AAAQDx/8AAAQDx/8AACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oAAMASAAPAFYAIABZABEABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAAQEX//EABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UABgDF/+oA6P/uAPH/sAEv/+wBVP/sAdz/6AABAPH/9QAwAFT/bQBZ/4wAa/2/AHr+fQB//rwAhP8rAIf/SwCz/2EAuv8PAL7+6ADB/x8Awv7lAMX/RgDH/u0AyP79AMn+2QDU/1IA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPr/EwD8/wcBAv8OAQT/EQEX/zwBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/1kB3/+PABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAAQC/AA0AAgCz/8IAvwAQAAEAv//iAAEAwv/yAAEAvwAOAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAMAxf/tAPH/wAHc/+wACgC6/+YAvf/rAL7/6QDA//AAwf/nAMX/4wDH/84AyP/UAMn/2wHf/+4AAQDx/8AABQC9/+wAvwAPAMH/6gDF/8QAx//nAAYASP/pAL3/7gC/ABAAwf/sAMX/IAHc/9oAAQC/AA8ABgDF/+oA6P/uAPH/qwEv/+wBVP/sAdz/6AABAPH/1QABAMUACwANAEgADADBAAsAxQAMAaf/vwGp/+4Brf/sAbX/7QG2/+wBuP/1AbkADgG7AA0BvgANAd//7QABAPH/2AACAPH/qgHc/+EACwDh/9QA8f/JAQT/5QEb/+MBL//EATj/4QFJ/9QBSv/1AUv/5wFT/9IBVP/JAAkA4f/DAPH/zwEv/84BOP/nATv/3wFJ/9EBS//sAVP/oAFU/9EACQDh/8MA8f/PAS//zgE4/+cBO//fAUn/0QFL/+wBU/+gAVT/0QAIAOH/yQDx/98BBP/tARv/6wEv/98BO//pAUr/9QFU/+AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA4f/mAPH/0AEv/84BOP/oAUn/5wFL/+0BU//mAVT/0AALANQAFADh/+AA6AATATj/4QE5/+ABPP/hAUH/6QFJ/98BS//eAVP/3wFV//IAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AAFABn/8gDh//EBSf/yAUv/8gFT//IACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AASANT/rgDhABIA5v/gAOj/rQDq/9YA+P/fAPz/0gEC/+ABF//OASf/3QEp/+IBLf/gATP/4AE5/+kBPP/aAUb/vQFQ/98BUwARAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QADADUABMA4f/mAOL/9ADoABIA8f/nAS//5wE4/+UBOf/oAUn/5gFL/+YBU//mAVT/5wAJAOH/wwDx/88BL//OATj/5wE7/98BSf/RAUv/7AFT/6ABVP/RAAkA4f/DAPH/zwEv/84BOP/nATv/3wFJ/9EBS//sAVP/oAFU/9EAAgDU/+IBU//kAAIA1P/hAOj/5AAGAOj/7gDx/+4BBP/0ARv/8QEv/+8BVP/vAAQA8f/0AQT/9QEv//UBVP/1AAIA6P/JARf/7gAGAOgAFADx/+0A9//iAS//7QE5/+0BVP/tAAEBF//xAAUBF//rAan/6wGt/+kBtf/rAbb/6wATAEgADQDC/6sAw//AAMf/1QDo/6oBF//iARsADAFKAAsBTAALAaf/vwGp/+4Brf/sAbX/7QG2/+wBuP/1AbkADgG7AA0BvgANAd//sAAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oAAYA6AAUAPH/8AD8AAwBL//wATn/5gFU//AABQDoADoA8f/jAS//4gE5/+MBVP/jAAgA8f+6AQT/zwEb/9sBL/9QATn/nQFK//ABTP/yAVT/TAAIAPH/ugEE/88BG//bAS//UAE5/50BSv/wAUz/8gFU/0wABgDF/+oA6P/uAPH/sAEv/+wBVP/sAdz/6AABAOj/7wAIAPH/ugEE/88BG//bAS//UAE5/50BSv/wAUz/8gFU/0wACADx/7oBBP/PARv/2wEv/1ABOf+dAUr/8AFM//IBVP9MAAgA8f+6AQT/zwEb/9sBL/9QATn/nQFK//ABTP/yAVT/TAAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkACwAUAD8AEQBU/+IAXwATAaf/tAGp/9kBrf/ZAbX/2QG2/9kABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UABgDF/+oA6P/uAPH/sAEv/+wBVP/sAdz/6AAwAFT/bQBZ/4wAa/2/AHr+fQB//rwAhP8rAIf/SwCz/2EAuv8PAL7+6ADB/x8Awv7lAMX/RgDH/u0AyP79AMn+2QDU/1IA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPr/EwD8/wcBAv8OAQT/EQEX/zwBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/1kB3/+PAAIA6P/JARf/7gATAFn/wQCz/8UAxf+0AOX/1wDx/7kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAan/6AGt/+YBtf/nAbb/5wATAFn/wQCz/8UAxf+0AOX/1wDx/7kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAan/6AGt/+YBtf/nAbb/5wACAOj/yQEX/+4AAQBZAAsAAQBZAAsAAQBZAAsAAQBZAAsAAQBZAAsACQGp//IBrf/yAbX/8gG2//IBuf/AAbr/7AG7/8cBvP/YAb7/vwACAbv/7gG8//UAAQGn/9IABAGp/+sBrf/pAbX/6wG2/+sACgGnABEBqf/wAa3/7gG1/+8Btv/wAbn/uwG6/+wBu/+3Abz/1QG+/7QABQGn//MBuf/uAbv/8QG9/+wBvv/qAAQBuf/pAbv/6wG8//EBvv/lAAQBuf/yAbv/8QG8//UBvv/uAAkBp/+/Aan/7gGt/+wBtf/tAbb/7AG4//UBuQAOAbsADQG+AA0AAQGn/+8ABQGn/8cBqf/yAa3/8AG1//ABtv/wAAIBp//cAbkADgAEAan/7QGt/+sBtf/rAbb/6wAJAaf/wAGp/+0Brf/rAbX/6wG2/+sBuQAPAbsAEAG8AA0BvgAQAAUBpwAMAan/8AGt//ABtf/wAbb/8AABAdf/agABAdf/FQAGAEgACwC6//IAx//xAMn/7wHcAA8B3//uAAEBp//VAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QA5AFT/tQBZ/8cAa/64AHr/KAB//00AhP+OAIf/oQCz/64Auv9+AL7/ZwDB/4cAwv9lAMX/ngDH/2oAyP9zAMn/XgDU/6UA4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APr/gAD8/3kBAv99AQT/fwEX/5gBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGn/68Bqf+5Aa3/uQG1/7kBtv+5Abj/vAG5//EBvP/xAb3/7QHc/6kB3//JABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAQAC//mAD//9ABf/+8BPP/tAAUASP/uAFn/6gG7//ABvP/tAb7/8AAFAEj/7gBZ/+oBu//wAbz/7QG+//AABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAUASP/uAFn/6gG7//ABvP/tAb7/8AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QABAaf/6wABAaf/6wABAaf/6wABAaf/6wAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAEA8f/1AAEA8f/1AAEA8f/1AAEA8f/1AAEA8f/AAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAEAAv/5gA///QAX//vATz/7QAEAAv/5gA///QAX//vATz/7QAEAAv/5gA///QAX//vATz/7QAEAAv/5gA///QAX//vATz/7QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEA8f/AAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQGn/+sAEwBZ/8EAs//FAMX/tADl/9cA8f+5AQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGp/+gBrf/mAbX/5wG2/+cACwBZ/6QBpwATAan/8wGt//EBtf/yAbb/8QG5/zsBuv/aAbv/VAG8/5EBvv8/AAsAWf+kAacAEwGp//MBrf/xAbX/8gG2//EBuf87Abr/2gG7/1QBvP+RAb7/PwALAFn/pAGnABMBqf/zAa3/8QG1//IBtv/xAbn/OwG6/9oBu/9UAbz/kQG+/z8ACwBZ/6QBpwATAan/8wGt//EBtf/yAbb/8QG5/zsBuv/aAbv/VAG8/5EBvv8/AAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAPH/wAAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/8AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEA8f/AAAEA8f/AAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAMASAAPAFYAIABZABEAAwBIAA8AVgAgAFkAEQADAEgADwBWACAAWQARADkAVP+1AFn/xwBr/rgAev8oAH//TQCE/44Ah/+hALP/rgC6/34Avv9nAMH/hwDC/2UAxf+eAMf/agDI/3MAyf9eANT/pQDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+v+AAPz/eQEC/30BBP9/ARf/mAEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAaf/rwGp/7kBrf+5AbX/uQG2/7kBuP+8Abn/8QG8//EBvf/tAdz/qQHf/8kAOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQA5AFT/tQBZ/8cAa/64AHr/KAB//00AhP+OAIf/oQCz/64Auv9+AL7/ZwDB/4cAwv9lAMX/ngDH/2oAyP9zAMn/XgDU/6UA4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APr/gAD8/3kBAv99AQT/fwEX/5gBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGn/68Bqf+5Aa3/uQG1/7kBtv+5Abj/vAG5//EBvP/xAb3/7QHc/6kB3//JAAEBp//rAAEBp//rAAEBp//rAAEBp//rAAEBp//rAAEBp//rAAkACwAPAD8ADABU/+sAXwAOAaf/ywGp/+kBrf/nAbX/5wG2/+cAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAgAWf/lALP/ywDI/+QBpwANAan/7QGt/+sBtf/sAbb/7AAIAFn/5QCz/8sAyP/kAacADQGp/+0Brf/rAbX/7AG2/+wACABZ/+UAs//LAMj/5AGnAA0Bqf/tAa3/6wG1/+wBtv/sABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAUASP/uAFn/6gG7//ABvP/tAb7/8AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAACAQwACwFT/+YABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAgAWf/lALP/ywDI/+QBpwANAan/7QGt/+sBtf/sAbb/7AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAFYADgB//58Av//eAML/5QDU/6gA6P/KAUb/4wGn/8YB3//1ADkAVP+1AFn/xwBr/rgAev8oAH//TQCE/44Ah/+hALP/rgC6/34Avv9nAMH/hwDC/2UAxf+eAMf/agDI/3MAyf9eANT/pQDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+v+AAPz/eQEC/30BBP9/ARf/mAEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAaf/rwGp/7kBrf+5AbX/uQG2/7kBuP+8Abn/8QG8//EBvf/tAdz/qQHf/8kAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAEA8f/AAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAFAEj/7gBZ/+oBu//wAbz/7QG+//AAMABU/20AWf+MAGv9vwB6/n0Af/68AIT/KwCH/0sAs/9hALr/DwC+/ugAwf8fAML+5QDF/0YAx/7tAMj+/QDJ/tkA1P9SAOEABQDl/70A5v9JAOj+/gDq/xMA8f9oAPj/DgD6/xMA/P8HAQL/DgEE/xEBF/88ARv/rAEn/xUBKf88AS3/DgEv/2oBM/9JATn/DAE7/z8BPP7xAUH/wAFG/u8BSv8xAUz/XwFQ/woBUwAFAVT/MAFV/9UB3P9ZAd//jwAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEBp//rABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAAgEMAAsBU//mADAAVP9tAFn/jABr/b8Aev59AH/+vACE/ysAh/9LALP/YQC6/w8Avv7oAMH/HwDC/uUAxf9GAMf+7QDI/v0Ayf7ZANT/UgDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+v8TAPz/BwEC/w4BBP8RARf/PAEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/WQHf/48ABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAFYADgB//58Av//eAML/5QDU/6gA6P/KAUb/4wGn/8YB3//1AAQAC//mAD//9ABf/+8BPP/tADkAVP+1AFn/xwBr/rgAev8oAH//TQCE/44Ah/+hALP/rgC6/34Avv9nAMH/hwDC/2UAxf+eAMf/agDI/3MAyf9eANT/pQDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+v+AAPz/eQEC/30BBP9/ARf/mAEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAaf/rwGp/7kBrf+5AbX/uQG2/7kBuP+8Abn/8QG8//EBvf/tAdz/qQHf/8kAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wABAPH/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAYAxf/qAOj/7gDx/7ABL//sAVT/7AHc/+gABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAAQEX//EAAQDx//UAAgDo/8kBF//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAkACwAPAD8ADABU/+sAXwAOAaf/ywGp/+kBrf/nAbX/5wG2/+cACQALAA8APwAMAFT/6wBfAA4Bp//LAan/6QGt/+cBtf/nAbb/5wAJAAsADwA/AAwAVP/rAF8ADgGn/8sBqf/pAa3/5wG1/+cBtv/nACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAAQBZAAsAAQBZAAsAAQBZAAsACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEA8f/AABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAkACwAUAD8AEQBU/+IAXwATAaf/tAGp/9kBrf/ZAbX/2QG2/9kABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UABAAL/+YAP//0AF//7wE8/+0AJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AABARf/8QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAEA8f/1AAEA8f/1ABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAan/6QGt/+cBtf/nAbb/6QHf//AAAQEX//EACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oABgDF/+oA6P/uAPH/sAEv/+wBVP/sAdz/6AASANT/rgDhABIA5v/gAOj/rQDq/9YA+P/fAPz/0gEC/+ABF//OASf/3QEp/+IBLf/gATP/4AE5/+kBPP/aAUb/vQFQ/98BUwARAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAEgDU/64A4QASAOb/4ADo/60A6v/WAPj/3wD8/9IBAv/gARf/zgEn/90BKf/iAS3/4AEz/+ABOf/pATz/2gFG/70BUP/fAVMAEQAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAEBF//xABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gABAaf/6wABAaf/6wAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QATAFn/wQCz/8UAxf+0AOX/1wDx/7kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAan/6AGt/+YBtf/nAbb/5wAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAEBF//xADAAVP9tAFn/jABr/b8Aev59AH/+vACE/ysAh/9LALP/YQC6/w8Avv7oAMH/HwDC/uUAxf9GAMf+7QDI/v0Ayf7ZANT/UgDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+v8TAPz/BwEC/w4BBP8RARf/PAEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/WQHf/48AAgDo/8kBF//uABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAan/6QGt/+cBtf/nAbb/6QHf//AAAQEX//EAAQDx/8AACQDh/8MA8f/PAS//zgE4/+cBO//fAUn/0QFL/+wBU/+gAVT/0QAwAFT/bQBZ/4wAa/2/AHr+fQB//rwAhP8rAIf/SwCz/2EAuv8PAL7+6ADB/x8Awv7lAMX/RgDH/u0AyP79AMn+2QDU/1IA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPr/EwD8/wcBAv8OAQT/EQEX/zwBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/1kB3/+PABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gABMLIABAAAAAoAHgB0A6YEJASOBNAF7gbkB0IHXAAVADgAFAA5ABIAOwAWARQAFAILABYCkgASApQAFgKWABYC/QAWAwwAFgMPABYDRQASA0cAEgNJABIDSwAWA2AAFANoABYD6gAWA+wAFgPuABYEEwAWAMwADv8WABD/FgAj/1YALP74ADYAFABD/94ARf/rAEb/6wBH/+sASf/rAFH/6wBT/+sAV//qAFj/6ABb/+gAkf/rAJX/6wCX/+oArf9WAK//VgC2/+sAuP/oAMP/6wDE/+sAxv/qAM0AFADRABQA8v/rAP7/6wEI/1YBE//rARX/6AEZ/+sBHf/rAS4AFAE1/+sBNgAUAUf/6wFI/+sBUv/rAWf/FgFr/xYBb/8WAXD/FgHx/1YB8v9WAfP/VgH0/1YB9f9WAfb/VgH3/1YCDP/eAg3/3gIO/94CD//eAhD/3gIR/94CEv/eAhP/6wIU/+sCFf/rAhb/6wIX/+sCHf/rAh7/6wIf/+sCIP/rAiH/6wIi/+oCI//qAiT/6gIl/+oCJv/oAif/6AIo/1YCKf/eAir/VgIr/94CLP9WAi3/3gIv/+sCMf/rAjP/6wI1/+sCN//rAjn/6wI7/+sCPf/rAj//6wJB/+sCQ//rAkX/6wJH/+sCSf/rAlf++AJr/+sCbf/rAm//6wKAABQCggAUAoQAFAKH/+oCif/qAov/6gKN/+oCj//qApH/6gKV/+gC+P9WAwD/VgMQ/+sDFP/qAxb/6wMY/+gDG//qAxz/6wMd/+oDJP74Ayj/VgMzABQDNf/eAzb/6wM4/+sDOv/rAzv/6AM9/+sDRP/oA0z/6ANV/1YDVv/eA1z/6wNh/+gDYv/rA2f/6wNp/+gDbv9WA2//3gNw/1YDcf/eA3X/6wN3/+sDeP/rA4L/6wOE/+sDhv/rA4r/6AOM/+gDjv/oA5X/6wOY/1YDmf/eA5r/VgOb/94DnP9WA53/3gOe/1YDn//eA6D/VgOh/94Dov9WA6P/3gOk/1YDpf/eA6b/VgOn/94DqP9WA6n/3gOq/1YDq//eA6z/VgOt/94Drv9WA6//3gOx/+sDs//rA7X/6wO3/+sDuf/rA7v/6wO9/+sDv//rA8X/6wPH/+sDyf/rA8v/6wPN/+sDz//rA9H/6wPT/+sD1f/rA9f/6wPZ/+sD2//rA93/6gPf/+oD4f/qA+P/6gPl/+oD5//qA+n/6gPr/+gD7f/oA+//6AP2ABQAHwA2/9UAOP/kADn/7AA7/90Azf/VANH/1QEU/+QBLv/VATb/1QIL/90CgP/VAoL/1QKE/9UCkv/sApT/3QKW/90C/f/dAwz/3QMP/90DM//VA0X/7ANH/+wDSf/sA0v/3QNg/+QDaP/dA+r/3QPs/90D7v/dA/b/1QQT/90AGgA2/7AAOP/tADv/0ADN/7AA0f+wART/7QEu/7ABNv+wAgv/0AKA/7ACgv+wAoT/sAKU/9AClv/QAv3/0AMM/9ADD//QAzP/sANL/9ADYP/tA2j/0APq/9AD7P/QA+7/0AP2/7AEE//QABAALP/uADf/7gIH/+4CCP/uAgn/7gIK/+4CV//uAob/7gKI/+4Civ/uAoz/7gKO/+4CkP/uAyT/7gPc/+4D3v/uAEcABAAQAAkAEABF/+gARv/oAEf/6ABJ/+gAU//oAJH/6ACV/+gAtv/oAMP/6ADE/+gA8v/oAP7/6AEZ/+gBHf/oATX/6AFH/+gBSP/oAVL/6AFlABABZgAQAWgAEAFpABABagAQAhP/6AIU/+gCFf/oAhb/6AIX/+gCL//oAjH/6AIz/+gCNf/oAjf/6AI5/+gCO//oAj3/6AI//+gCQf/oAkP/6AJF/+gCR//oAkn/6AMQ/+gDNv/oAzr/6AM9/+gDTQAQA04AEANSABADXP/oA2L/6ANn/+gDdf/oA3f/6AN4/+gDhP/oA5X/6AOx/+gDs//oA7X/6AO3/+gDuf/oA7v/6AO9/+gDv//oA9P/6APV/+gD1//oA9v/6AA9AEX/7ABG/+wAR//sAEn/7ABT/+wAkf/sAJX/7AC2/+wAw//sAMT/7ADy/+wA/v/sARn/7AEd/+wBNf/sAUf/7AFI/+wBUv/sAhP/7AIU/+wCFf/sAhb/7AIX/+wCL//sAjH/7AIz/+wCNf/sAjf/7AI5/+wCO//sAj3/7AI//+wCQf/sAkP/7AJF/+wCR//sAkn/7AMQ/+wDNv/sAzr/7AM9/+wDXP/sA2L/7ANn/+wDdf/sA3f/7AN4/+wDhP/sA5X/7AOx/+wDs//sA7X/7AO3/+wDuf/sA7v/7AO9/+wDv//sA9P/7APV/+wD1//sA9v/7AAXAFH/7AET/+wCHf/sAh7/7AIf/+wCIP/sAiH/7AJr/+wCbf/sAm//7AMW/+wDHP/sAzj/7AOC/+wDhv/sA8X/7APH/+wDyf/sA8v/7APN/+wDz//sA9H/7APZ/+wABgAO/4QAEP+EAWf/hAFr/4QBb/+EAXD/hAAQACz/7AA3/+wCB//sAgj/7AIJ/+wCCv/sAlf/7AKG/+wCiP/sAor/7AKM/+wCjv/sApD/7AMk/+wD3P/sA97/7AABKSwABAAAACIATgDEAaoCkANqBAQGnghkCTYKLAvyDCQMVgzUDroPMBACEhQSyhQwFOoVcBXOFpAXBhcYF0IYlBrSGvQcChyIHLIc3AAdAAT/8gAJ//IAWP/zAFv/8wC4//MBFf/zAWX/8gFm//IBaP/yAWn/8gFq//ICJv/zAif/8wKV//MDGP/zAzv/8wNE//MDTP/zA03/8gNO//IDUv/yA2H/8wNp//MDiv/zA4z/8wOO//MD6//zA+3/8wPv//MAOQAl//MAKf/zADH/8wAz//MAgf/zAJD/8wCU//MArv/zAM7/8wED//MBEv/zARb/8wEY//MBGv/zARz/8wE0//MBUf/zAfj/8wIC//MCA//zAgT/8wIF//MCBv/zAi7/8wIw//MCMv/zAjT/8wJC//MCRP/zAkb/8wJI//MCav/zAmz/8wJu//MCn//zAvz/8wMJ//MDL//zAzL/8wNX//MDY//zA2b/8wOB//MDg//zA4X/8wPE//MDxv/zA8j/8wPK//MDzP/zA87/8wPQ//MD0v/zA9T/8wPW//MD2P/zA9r/8wA5ACX/5gAp/+YAMf/mADP/5gCB/+YAkP/mAJT/5gCu/+YAzv/mAQP/5gES/+YBFv/mARj/5gEa/+YBHP/mATT/5gFR/+YB+P/mAgL/5gID/+YCBP/mAgX/5gIG/+YCLv/mAjD/5gIy/+YCNP/mAkL/5gJE/+YCRv/mAkj/5gJq/+YCbP/mAm7/5gKf/+YC/P/mAwn/5gMv/+YDMv/mA1f/5gNj/+YDZv/mA4H/5gOD/+YDhf/mA8T/5gPG/+YDyP/mA8r/5gPM/+YDzv/mA9D/5gPS/+YD1P/mA9b/5gPY/+YD2v/mADYAI//kADr/0gA7/9MArf/kAK//5ADV/9IBCP/kAfH/5AHy/+QB8//kAfT/5AH1/+QB9v/kAff/5AIL/9MCKP/kAir/5AIs/+QClP/TApb/0wL4/+QC/f/TAwD/5AMM/9MDDf/SAw//0wMo/+QDNP/SA0v/0wNV/+QDaP/TA2v/0gNu/+QDcP/kA3n/0gOT/9IDmP/kA5r/5AOc/+QDnv/kA6D/5AOi/+QDpP/kA6b/5AOo/+QDqv/kA6z/5AOu/+QD6v/TA+z/0wPu/9MD+P/SBAD/0gQT/9MAJgAO/x4AEP8eACP/zQCt/80Ar//NAQj/zQFn/x4Ba/8eAW//HgFw/x4B8f/NAfL/zQHz/80B9P/NAfX/zQH2/80B9//NAij/zQIq/80CLP/NAvj/zQMA/80DKP/NA1X/zQNu/80DcP/NA5j/zQOa/80DnP/NA57/zQOg/80Dov/NA6T/zQOm/80DqP/NA6r/zQOs/80Drv/NAKYARf/cAEb/3ABH/9wASf/cAE//8wBQ//MAUf/WAFL/8wBT/9wAV//dAFj/4QBb/+EAkf/cAJX/3ACX/90Atv/cALj/4QC8//MAw//cAMT/3ADG/90A5//zAOv/8wDs//MA7v/zAO//8wDw//MA8v/cAPP/8wD1//MA9v/zAPn/8wD7//MA/v/cAQD/8wET/9YBFf/hARn/3AEd/9wBMf/zATX/3AFA//MBRf/zAUf/3AFI/9wBUv/cAhP/3AIU/9wCFf/cAhb/3AIX/9wCHP/zAh3/1gIe/9YCH//WAiD/1gIh/9YCIv/dAiP/3QIk/90CJf/dAib/4QIn/+ECL//cAjH/3AIz/9wCNf/cAjf/3AI5/9wCO//cAj3/3AI//9wCQf/cAkP/3AJF/9wCR//cAkn/3AJk//MCZv/zAmj/8wJp//MCa//WAm3/1gJv/9YCh//dAon/3QKL/90Cjf/dAo//3QKR/90Clf/hAxD/3AMS//MDFP/dAxb/1gMY/+EDG//dAxz/1gMd/90DNv/cAzf/8wM4/9YDOf/zAzr/3AM7/+EDPf/cAz7/8wND//MDRP/hA0z/4QNU//MDXP/cA13/8wNh/+EDYv/cA2f/3ANp/+EDdf/cA3f/3AN4/9wDfv/zA4D/8wOC/9YDhP/cA4b/1gOK/+EDjP/hA47/4QOS//MDlf/cA7H/3AOz/9wDtf/cA7f/3AO5/9wDu//cA73/3AO//9wDxf/WA8f/1gPJ/9YDy//WA83/1gPP/9YD0f/WA9P/3APV/9wD1//cA9n/1gPb/9wD3f/dA9//3QPh/90D4//dA+X/3QPn/90D6f/dA+v/4QPt/+ED7//hA/P/8wP1//MD///zBAz/8wQO//MEEP/zAHEABP/aAAn/2gBF//AARv/wAEf/8ABJ//AAU//wAFf/7wBY/9wAW//cAJH/8ACV//AAl//vALb/8AC4/9wAw//wAMT/8ADG/+8A8v/wAP7/8AEV/9wBGf/wAR3/8AE1//ABR//wAUj/8AFS//ABZf/aAWb/2gFo/9oBaf/aAWr/2gIT//ACFP/wAhX/8AIW//ACF//wAiL/7wIj/+8CJP/vAiX/7wIm/9wCJ//cAi//8AIx//ACM//wAjX/8AI3//ACOf/wAjv/8AI9//ACP//wAkH/8AJD//ACRf/wAkf/8AJJ//ACh//vAon/7wKL/+8Cjf/vAo//7wKR/+8Clf/cAxD/8AMU/+8DGP/cAxv/7wMd/+8DNv/wAzr/8AM7/9wDPf/wA0T/3ANM/9wDTf/aA07/2gNS/9oDXP/wA2H/3ANi//ADZ//wA2n/3AN1//ADd//wA3j/8AOE//ADiv/cA4z/3AOO/9wDlf/wA7H/8AOz//ADtf/wA7f/8AO5//ADu//wA73/8AO///AD0//wA9X/8APX//AD2//wA93/7wPf/+8D4f/vA+P/7wPl/+8D5//vA+n/7wPr/9wD7f/cA+//3AA0AAT/oAAJ/6AAV//xAFj/xQBb/8UAl//xALj/xQDG//EBFf/FAWX/oAFm/6ABaP+gAWn/oAFq/6ACIv/xAiP/8QIk//ECJf/xAib/xQIn/8UCh//xAon/8QKL//ECjf/xAo//8QKR//EClf/FAxT/8QMY/8UDG//xAx3/8QM7/8UDRP/FA0z/xQNN/6ADTv+gA1L/oANh/8UDaf/FA4r/xQOM/8UDjv/FA93/8QPf//ED4f/xA+P/8QPl//ED5//xA+n/8QPr/8UD7f/FA+//xQA9AEX/5wBG/+cAR//nAEn/5wBT/+cAkf/nAJX/5wC2/+cAw//nAMT/5wDy/+cA/v/nARn/5wEd/+cBNf/nAUf/5wFI/+cBUv/nAhP/5wIU/+cCFf/nAhb/5wIX/+cCL//nAjH/5wIz/+cCNf/nAjf/5wI5/+cCO//nAj3/5wI//+cCQf/nAkP/5wJF/+cCR//nAkn/5wMQ/+cDNv/nAzr/5wM9/+cDXP/nA2L/5wNn/+cDdf/nA3f/5wN4/+cDhP/nA5X/5wOx/+cDs//nA7X/5wO3/+cDuf/nA7v/5wO9/+cDv//nA9P/5wPV/+cD1//nA9v/5wBxAAQADAAJAAwARf/oAEb/6ABH/+gASf/oAFH/6gBT/+gAWAALAFsACwCR/+gAlf/oALb/6AC4AAsAw//oAMT/6ADy/+gA/v/oARP/6gEVAAsBGf/oAR3/6AE1/+gBR//oAUj/6AFS/+gBZQAMAWYADAFoAAwBaQAMAWoADAIT/+gCFP/oAhX/6AIW/+gCF//oAh3/6gIe/+oCH//qAiD/6gIh/+oCJgALAicACwIv/+gCMf/oAjP/6AI1/+gCN//oAjn/6AI7/+gCPf/oAj//6AJB/+gCQ//oAkX/6AJH/+gCSf/oAmv/6gJt/+oCb//qApUACwMQ/+gDFv/qAxgACwMc/+oDNv/oAzj/6gM6/+gDOwALAz3/6ANEAAsDTAALA00ADANOAAwDUgAMA1z/6ANhAAsDYv/oA2f/6ANpAAsDdf/oA3f/6AN4/+gDgv/qA4T/6AOG/+oDigALA4wACwOOAAsDlf/oA7H/6AOz/+gDtf/oA7f/6AO5/+gDu//oA73/6AO//+gDxf/qA8f/6gPJ/+oDy//qA83/6gPP/+oD0f/qA9P/6APV/+gD1//oA9n/6gPb/+gD6wALA+0ACwPvAAsADABa/+0AXP/tAOn/7QKY/+0Cmv/tApz/7QM8/+0DbP/tA3r/7QOU/+0D+f/tBAH/7QAMAFr/8gBc//IA6f/yApj/8gKa//ICnP/yAzz/8gNs//IDev/yA5T/8gP5//IEAf/yAB8AWP/0AFr/8gBb//QAXP/zALj/9ADp//IBFf/0Aib/9AIn//QClf/0Apj/8wKa//MCnP/zAxj/9AM7//QDPP/yA0T/9ANM//QDYf/0A2n/9ANs//IDev/yA4r/9AOM//QDjv/0A5T/8gPr//QD7f/0A+//9AP5//IEAf/yAHkABP/KAAn/ygA2/9IAOP/UADr/9AA7/9MAT//RAFD/0QBS/9EAWP/mAFr/7wBb/+YAuP/mALz/0QDN/9IA0f/SANX/9ADZ/+0A3P/hAOf/0QDp/+8A6//RAOz/0QDu/9EA7//RAPD/0QDz/9EA9f/RAPb/0QD5/9EA+//RAQD/0QEU/9QBFf/mAS7/0gEx/9EBNv/SAUD/0QFF/9EBZf/KAWb/ygFo/8oBaf/KAWr/ygIL/9MCHP/RAib/5gIn/+YCZP/RAmb/0QJo/9ECaf/RAoD/0gKC/9IChP/SApT/0wKV/+YClv/TAv3/0wMM/9MDDf/0Aw//0wMS/9EDGP/mAyf/7QMz/9IDNP/0Azf/0QM5/9EDO//mAzz/7wM+/9EDQ//RA0T/5gNL/9MDTP/mA03/ygNO/8oDUv/KA1T/0QNd/9EDYP/UA2H/5gNo/9MDaf/mA2v/9ANs/+8Def/0A3r/7wN+/9EDgP/RA4n/7QOK/+YDi//tA4z/5gON/+0Djv/mA4//4QOS/9EDk//0A5T/7wPq/9MD6//mA+z/0wPt/+YD7v/TA+//5gPz/9ED9f/RA/b/0gP4//QD+f/vA/r/4QP8/+ED///RBAD/9AQB/+8EDP/RBA7/0QQQ/9EEE//TAB0ANv++AFj/7wBb/+8AuP/vAM3/vgDR/74BFf/vAS7/vgE2/74CJv/vAif/7wKA/74Cgv++AoT/vgKV/+8DGP/vAzP/vgM7/+8DRP/vA0z/7wNh/+8Daf/vA4r/7wOM/+8Djv/vA+v/7wPt/+8D7//vA/b/vgA0ADb/5gA4/+cAOv/yADv/5wBa//EAzf/mANH/5gDV//IA2f/uANz/6ADp//EBFP/nAS7/5gE2/+YCC//nAoD/5gKC/+YChP/mApT/5wKW/+cC/f/nAwz/5wMN//IDD//nAyf/7gMz/+YDNP/yAzz/8QNL/+cDYP/nA2j/5wNr//IDbP/xA3n/8gN6//EDif/uA4v/7gON/+4Dj//oA5P/8gOU//ED6v/nA+z/5wPu/+cD9v/mA/j/8gP5//ED+v/oA/z/6AQA//IEAf/xBBP/5wCEACMAEAAl/+gAKf/oADH/6AAz/+gANv/gADj/4AA7/98Agf/oAJD/6ACU/+gArQAQAK7/6ACvABAAzf/gAM7/6ADPABAA0f/gANgAEADc/+EA7QAQAPT/4AD/ABABA//oAQgAEAES/+gBFP/gARb/6AEY/+gBGv/oARz/6AEu/+ABNP/oATb/4AFNABABUf/oAfEAEAHyABAB8wAQAfQAEAH1ABAB9gAQAfcAEAH4/+gCAv/oAgP/6AIE/+gCBf/oAgb/6AIL/98CKAAQAioAEAIsABACLv/oAjD/6AIy/+gCNP/oAkL/6AJE/+gCRv/oAkj/6AJq/+gCbP/oAm7/6AKA/+ACgv/gAoT/4AKU/98Clv/fAp//6AL4ABAC/P/oAv3/3wMAABADCf/oAwz/3wMP/98DKAAQAy//6AMy/+gDM//gA0v/3wNVABADV//oA2D/4ANj/+gDZv/oA2j/3wNuABADcAAQA4H/6AOD/+gDhf/oA4//4QOQ/+ADlgAQA5cAEAOYABADmgAQA5wAEAOeABADoAAQA6IAEAOkABADpgAQA6gAEAOqABADrAAQA64AEAPE/+gDxv/oA8j/6APK/+gDzP/oA87/6APQ/+gD0v/oA9T/6APW/+gD2P/oA9r/6APq/98D7P/fA+7/3wP2/+AD+v/hA/v/4AP8/+ED/f/gBBEAEAQSABAEE//fAC0ANv/xADj/9AA6//QAO//wAM3/8QDP//UA0f/xANX/9ADY//UA2f/zART/9AEu//EBNv/xAU3/9QIL//ACgP/xAoL/8QKE//EClP/wApb/8AL9//ADDP/wAw3/9AMP//ADJ//zAzP/8QM0//QDS//wA2D/9ANo//ADa//0A3n/9AOJ//MDi//zA43/8wOT//QDlv/1A+r/8APs//AD7v/wA/b/8QP4//QEAP/0BBH/9QQT//AAWQAjAA8ANv/mADj/5gA6AA4AO//mAK0ADwCvAA8Azf/mAM8ADgDR/+YA1QAOANgADgDZAAsA3P/lAO0ADwD0/+gA/wAPAQgADwEU/+YBLv/mATb/5gFNAA4B8QAPAfIADwHzAA8B9AAPAfUADwH2AA8B9wAPAgv/5gIoAA8CKgAPAiwADwKA/+YCgv/mAoT/5gKU/+YClv/mAvgADwL9/+YDAAAPAwz/5gMNAA4DD//mAycACwMoAA8DM//mAzQADgNL/+YDVQAPA2D/5gNo/+YDawAOA24ADwNwAA8DeQAOA4kACwOLAAsDjQALA4//5QOQ/+gDkwAOA5YADgOXAA8DmAAPA5oADwOcAA8DngAPA6AADwOiAA8DpAAPA6YADwOoAA8DqgAPA6wADwOuAA8D6v/mA+z/5gPu/+YD9v/mA/gADgP6/+UD+//oA/z/5QP9/+gEAAAOBBEADgQSAA8EE//mAC4ANv/jADr/5QA7/+QAzf/jAM//5QDR/+MA1f/lANj/5QDZ/+kA7f/qAP//6gEu/+MBNv/jAU3/5QIL/+QCgP/jAoL/4wKE/+MClP/kApb/5AL9/+QDDP/kAw3/5QMP/+QDJ//pAzP/4wM0/+UDS//kA2j/5ANr/+UDef/lA4n/6QOL/+kDjf/pA5P/5QOW/+UDl//qA+r/5APs/+QD7v/kA/b/4wP4/+UEAP/lBBH/5QQS/+oEE//kACEANv/iADr/5ADN/+IAz//kANH/4gDV/+QA2P/kANn/6QDt/+sA///rAS7/4gE2/+IBTf/kAoD/4gKC/+IChP/iAw3/5AMn/+kDM//iAzT/5ANr/+QDef/kA4n/6QOL/+kDjf/pA5P/5AOW/+QDl//rA/b/4gP4/+QEAP/kBBH/5AQS/+sAFwA2/+sAO//zAM3/6wDR/+sBLv/rATb/6wIL//MCgP/rAoL/6wKE/+sClP/zApb/8wL9//MDDP/zAw//8wMz/+sDS//zA2j/8wPq//MD7P/zA+7/8wP2/+sEE//zADAAT//vAFD/7wBS/+8AWv/wALz/7wDn/+8A6f/wAOv/7wDs/+8A7v/vAO//7wDw/+8A8//vAPX/7wD2/+8A+f/vAPv/7wEA/+8BMf/vAUD/7wFF/+8CHP/vAmT/7wJm/+8CaP/vAmn/7wMS/+8DN//vAzn/7wM8//ADPv/vA0P/7wNU/+8DXf/vA2z/8AN6//ADfv/vA4D/7wOS/+8DlP/wA/P/7wP1/+8D+f/wA///7wQB//AEDP/vBA7/7wQQ/+8AHQAE//IACf/yAFj/9QBb//UAuP/1ARX/9QFl//IBZv/yAWj/8gFp//IBav/yAib/9QIn//UClf/1Axj/9QM7//UDRP/1A0z/9QNN//IDTv/yA1L/8gNh//UDaf/1A4r/9QOM//UDjv/1A+v/9QPt//UD7//1AAQA9P/tA5D/7QP7/+0D/f/tAAoABP/1AAn/9QFl//UBZv/1AWj/9QFp//UBav/1A03/9QNO//UDUv/1AFQARf/wAEb/8ABH//AASf/wAFH/6wBT//AAkf/wAJX/8AC2//AAw//wAMT/8ADy//AA/v/wARP/6wEZ//ABHf/wATX/8AFH//ABSP/wAVL/8AIT//ACFP/wAhX/8AIW//ACF//wAh3/6wIe/+sCH//rAiD/6wIh/+sCL//wAjH/8AIz//ACNf/wAjf/8AI5//ACO//wAj3/8AI///ACQf/wAkP/8AJF//ACR//wAkn/8AJr/+sCbf/rAm//6wMQ//ADFv/rAxz/6wM2//ADOP/rAzr/8AM9//ADXP/wA2L/8ANn//ADdf/wA3f/8AN4//ADgv/rA4T/8AOG/+sDlf/wA7H/8AOz//ADtf/wA7f/8AO5//ADu//wA73/8AO///ADxf/rA8f/6wPJ/+sDy//rA83/6wPP/+sD0f/rA9P/8APV//AD1//wA9n/6wPb//AAjwAEAA0ACQANAEP/8ABF/7AARv+wAEf/sABJ/7AAUf/WAFP/sABYAAsAWwALAJH/sACV/7AAtv+wALgACwDE/7AA7f+vAPL/sAD+/7AA//+vARP/1gEVAAsBGf+wAR3/sAE1/7ABR/+wAUj/sAFS/7ABZQANAWYADQFoAA0BaQANAWoADQIM//ACDf/wAg7/8AIP//ACEP/wAhH/8AIS//ACE/+wAhT/sAIV/7ACFv+wAhf/sAId/9YCHv/WAh//1gIg/9YCIf/WAiYACwInAAsCKf/wAiv/8AIt//ACL/+wAjH/sAIz/7ACNf+wAjf/sAI5/7ACO/+wAj3/sAI//7ACQf+wAkP/sAJF/7ACR/+wAkn/sAJr/9YCbf/WAm//1gKVAAsDEP+wAxb/1gMYAAsDHP/WAzX/8AM2/7ADOP/WAzr/sAM7AAsDPf+wA0QACwNMAAsDTQANA04ADQNSAA0DVv/wA1z/sANhAAsDYv+wA2f/sANpAAsDb//wA3H/8AN1/7ADd/+wA3j/sAOC/9YDhP+wA4b/1gOKAAsDjAALA44ACwOV/7ADl/+vA5n/8AOb//ADnf/wA5//8AOh//ADo//wA6X/8AOn//ADqf/wA6v/8AOt//ADr//wA7H/sAOz/7ADtf+wA7f/sAO5/7ADu/+wA73/sAO//7ADxf/WA8f/1gPJ/9YDy//WA83/1gPP/9YD0f/WA9P/sAPV/7AD1/+wA9n/1gPb/7AD6wALA+0ACwPvAAsEEv+vAAgA7QAQAPT/8AD/ABADkP/wA5cAEAP7//AD/f/wBBIAEABFAEUADABGAAwARwAMAEkADABTAAwAkQAMAJUADAC2AAwAwwAMAMQADADtABgA8gAMAPT/9wD+AAwA/wAYARkADAEdAAwBNQAMAUcADAFIAAwBUgAMAhMADAIUAAwCFQAMAhYADAIXAAwCLwAMAjEADAIzAAwCNQAMAjcADAI5AAwCOwAMAj0ADAI/AAwCQQAMAkMADAJFAAwCRwAMAkkADAMQAAwDNgAMAzoADAM9AAwDXAAMA2IADANnAAwDdQAMA3cADAN4AAwDhAAMA5D/9wOVAAwDlwAYA7EADAOzAAwDtQAMA7cADAO5AAwDuwAMA70ADAO/AAwD0wAMA9UADAPXAAwD2wAMA/v/9wP9//cEEgAYAB8AWP/0AFr/8ABb//QAuP/0AOn/8ADt//MA///zARX/9AIm//QCJ//0ApX/9AMY//QDO//0Azz/8ANE//QDTP/0A2H/9ANp//QDbP/wA3r/8AOK//QDjP/0A47/9AOU//ADl//zA+v/9APt//QD7//0A/n/8AQB//AEEv/zAAoABP/WAAn/1gFl/9YBZv/WAWj/1gFp/9YBav/WA03/1gNO/9YDUv/WAAoABP/1AAn/9QFl//UBZv/1AWj/9QFp//UBav/1A03/9QNO//UDUv/1AF4ABAALAAkACwBF/+sARv/rAEf/6wBJ/+sAUf/pAFP/6wCR/+sAlf/rALb/6wDD/+sAxP/rAPL/6wD+/+sBE//pARn/6wEd/+sBNf/rAUf/6wFI/+sBUv/rAWUACwFmAAsBaAALAWkACwFqAAsCE//rAhT/6wIV/+sCFv/rAhf/6wId/+kCHv/pAh//6QIg/+kCIf/pAi//6wIx/+sCM//rAjX/6wI3/+sCOf/rAjv/6wI9/+sCP//rAkH/6wJD/+sCRf/rAkf/6wJJ/+sCa//pAm3/6QJv/+kDEP/rAxb/6QMc/+kDNv/rAzj/6QM6/+sDPf/rA00ACwNOAAsDUgALA1z/6wNi/+sDZ//rA3X/6wN3/+sDeP/rA4L/6QOE/+sDhv/pA5X/6wOx/+sDs//rA7X/6wO3/+sDuf/rA7v/6wO9/+sDv//rA8X/6QPH/+kDyf/pA8v/6QPN/+kDz//pA9H/6QPT/+sD1f/rA9f/6wPZ/+kD2//rAAILHgAEAAAN5hU6ACEAHQAAABH/zv+PABL/9f/v/4j/9P+7/3//9QAM/6n/ov/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/lAAAAAP/o/8kAAP/zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAA/+UAEQAAAAAAAAAAAAD/4wAAAAAAAP/k/+QAAAASABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+EAAAAAAAAAAAAAAAAAAAAA/+UAAAAA/+r/1QAAAAD/6//q/5r/6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAP/tAAAAFP/vAAAAAAAAAAAAAAAAAAAAAAAA/+0AAAAAAAAAAAAAAAAAAAAA/8v/uP98/37/5AAAAAD/nQAPABD/of/EABAAEAAAAAD/sQAA/yYAAP+d/7P/GP+T//D/j/+M/xAAAP+S/3L/DP8P/70AAAAA/0QABQAH/0v/hgAHAAcAAAAA/z4AAP56AAD/RP9q/mL/M//R/yz/JwAAAAAAAAAAAAD/2AAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAD/2P+jAAD/4QAAAAD/5QAAAAD/6QAAAAAAAAAAAAAAAAAAAAAAAP/mAAD/wP/pAAAAAAAAAAAAAAAA/3sAAAAA/7//yv92AAD/cf7t/9QAAP9R/xEAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yQAPAAD/2QAAAAAAAP/zAAAAAAAAAAAAAAAAAAAAAP92/+H+vP/m//MAAAAAAAAAAP/1AAD/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAA//MAAAAA/9IAAAAA/+QAAAAAAAAAAAAA/7UAAP8fAAD/1AAA/9sAAAAA/9IAAAAAAAAAEf/h/9EAEf/nAAAAAP/rAAAAAP/rAAAADgAAAAAAAAAAAAAAAAAA/+YAAP/SAAAAAAAAAAAAAAAAAAD/7AAAAAD/4/+gAAD/vwARABH/2f/iABIAEgAAAAD/ogAN/y0AAP+//+n/zP/Y//D/t//G/6AAAAAAAAAAAAAAAAAAAAAA/+EAAAAO/+0AAAAAAAAAAAAA/9UAAP+FAAD/4QAA/8QAAAAA/98AAAAAAAAAAP/lAAAAAP/mAAAAAP/rAAAAAP/tAAAAAAAAAAAAAAANAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAA/8oAAP/p/7v/6QAAAAD/vQAAABIAAAAAAAAAEgAAAAD/pQAA/m0AAP+9AAD/if+aAAD/kf/SAAAAAAAA//EAAAAAAAAAAP+9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAA//IAAAAA/+MAAAAAAAAAAP/xAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAA//MAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAA//AAAAAA/+wAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAP//EAAAAAAAAAAAAAAAAAAAAAAAAAAP+VAAD/8wAAAAAAAAAA//EAAAAAAAAAAAASAAAAAAAAAAAAEP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/hQAA/+0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/lf/DAAAAAAAAAAAAAAAAAAAAAP+IAAAAAAAA/8UAAAAA/+wAAP/O/7AAAAAAAAAAAAAAAAAAAAAA/1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAP/AAAAAAP71AAAAAP/I/63/5//rAAD/8AAAAAAAAP/JAAAAAAAAAAAAAAAAAAAAAP/d/9kAAAAAAAD/eQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAACAIgABAAEAAAACQAJAAEAEQARAAIAIwAoAAMAKgAzAAkANgA8ABMAQwBEABoARwBIABwASgBKAB4ATwBSAB8AVABUACMAWABYACQAWgBbACUAiACIACcAmQCZACgArACwACkAsgC0AC4AtgC2ADEAuAC5ADIAuwC8ADQAvgDAADYAwgDHADkAzQDNAD8AzwDZAEAA2wDbAEsA3QDfAEwA4QDjAE8A5QDpAFIA7ADsAFcA8QDzAFgA9gD3AFsA+QD7AF0A/wEAAGABBQEFAGIBCAEIAGMBEwEVAGQBJwEpAGcBLAEsAGoBLgEuAGsBRQFFAGwBZQFmAG0BaAFqAG8BpgGmAHIBqQGpAHMBqwGrAHQBsAGxAHUBtAG2AHcBuAG+AHoBxAHEAIEB2wHcAIIB6AHoAIQB7AHtAIUB7wHvAIcB8QISAIgCFAIXAKoCHAIhAK4CJgIuALQCMAIwAL0CMgIyAL4CNAI0AL8CNgI2AMACOAJBAMECSgJMAMsCTgJOAM4CUAJQAM8CUgJSANACVAJUANECVwJXANICWQJZANMCWwJbANQCXQJdANUCXwJfANYCYQJhANcCYwJvANgCcQJxAOUCcwJzAOYCdQJ1AOcCgAKAAOgCggKCAOkChAKEAOoChgKGAOsCiAKIAOwCigKKAO0CjAKMAO4CjgKOAO8CkAKQAPACkgKSAPEClAKXAPICmQKZAPYCmwKbAPcC+AL9APgDAAMPAP4DEgMSAQ4DFgMWAQ8DGAMYARADHAMcAREDHwMgARIDIgMrARQDLQMvAR4DMQM2ASEDOAM5AScDOwM+ASkDRANFAS0DRwNHAS8DSQNJATADSwNOATEDUgNXATUDWgNaATsDXANcATwDYANhAT0DZgNmAT8DaANxAUADdAN1AUoDdwN6AUwDgQOCAVADhgOGAVIDiAOOAVMDkwOUAVoDmAPAAVwDwgPCAYUDxAPRAYYD2QPZAZQD3APcAZUD3gPeAZYD6gPvAZcD8gPyAZ0D9AP0AZ4D9gP2AZ8D+AP5AaAD/gQBAaIEBAQEAaYEBgQHAacECQQJAakEDQQNAaoEDwQPAasEEwQTAawAAQAKAAoAKAAzADQAPQBIAE0AVgBZAF0AAQAiAJkAsACyALMAtAC7AL4AvwDAAMUAxwDIAMkAzQDRANMA1ADWAN4A4gDjAOQA5QDmAOgA6gDsAPEA8wD2APsA/gEdAdwAAgB2AAQABAAAAAkACQABAA4ADgACABAAEAADACMAJwAEACoAMgAJADYAPAASAEMARQAZAEcARwAcAEoASgAdAE8AUgAeAFQAVAAiAFgAWAAjAFoAXAAkAIgAiAAnAKwArwAoALgAuAAsALwAvAAtAMIAwgAuAM8A0AAvANIA0gAxANUA1QAyANcA2QAzANsA2wA2AN0A3QA3AN8A3wA4AOEA4QA5AOcA5wA6AOkA6QA7APIA8gA8APcA9wA9APkA+gA+AP8BAABAAQUBBQBCAQgBCABDARMBFQBEAScBKQBHASwBLABKAS4BLgBLAUUBRQBMAWUBawBNAW8BcABUAewB7QBWAe8B7wBYAfECFwBZAhwCIQCAAiYCNgCGAjgCQQCXAkoCTAChAk4CTgCkAlACUAClAlICUgCmAlQCVACnAlcCVwCoAlkCWQCpAlsCWwCqAl0CXQCrAl8CXwCsAmECYQCtAmMCbwCuAnECcQC7AnMCcwC8AnUCdQC9AoACgAC+AoICggC/AoQChADAAoYChgDBAogCiADCAooCigDDAowCjADEAo4CjgDFApACkADGApICkgDHApQCnADIAvgC/QDRAwADDwDXAxIDEgDnAxYDFgDoAxgDGADpAxwDHADqAx8DIADrAyIDKwDtAy0DLwD3AzEDNgD6AzgDPgEAA0QDRQEHA0cDRwEJA0kDSQEKA0sDTgELA1IDVwEPA1oDWgEVA1wDXAEWA2ADYQEXA2YDcQEZA3QDdQElA3cDegEnA4EDggErA4YDhgEtA4gDjgEuA5MDlAE1A5gDwAE3A8IDwgFgA8QD0QFhA9kD2QFvA9wD3AFwA94D3gFxA+oD7wFyA/ID8gF4A/QD9AF5A/YD9gF6A/gD+QF7A/4EAQF9BAQEBAGBBAYEBwGCBAkECQGEBA0EDQGFBA8EDwGGBBMEEwGHAAIBOAAEAAQAHQAJAAkAHQAOAA4AHgAQABAAHgAkACQAAQAlACUABAAmACYAAwAnACcABQAqACsAAgAsACwADAAtAC0ACQAuAC4ACgAvADAAAgAxADEAAwAyADIACwA2ADYABgA3ADcADAA4ADgADQA5ADkAEAA6ADoADgA7ADsADwA8ADwAEQBDAEMAEwBEAEQAFQBFAEUAFABHAEcAFgBKAEoAFwBPAFAAFwBRAFEAGABSAFIAFQBUAFQAGgBYAFgAGQBaAFoAGwBbAFsAGQBcAFwAHACIAIgAFQCsAKwABwCuAK4AAwC4ALgAGQC8ALwAFwDCAMIAFQDPANAAHwDSANIAAgDVANUADgDXANgAAgDZANkAEgDbANsAAgDdAN0AAgDfAN8AHwDhAOEAHwDnAOcACADpAOkAGwDyAPIAFQD3APcAIAD5APkAIAD6APoAFQD/AQAAIAEFAQUAIAETARMAGAEUARQADQEVARUAGQEnAScAFQEoASgABwEpASkACAEsASwACQEuAS4ACQFFAUUACAFlAWYAHQFnAWcAHgFoAWoAHQFrAWsAHgFvAXAAHgHsAe0AAwHvAe8ABgH4AfgABAH5AfwABQH9AgEAAgICAgYAAwIHAgoADAILAgsADwIMAhIAEwITAhMAFAIUAhcAFgIcAhwAFwIdAiEAGAImAicAGQIpAikAEwIrAisAEwItAi0AEwIuAi4ABAIvAi8AFAIwAjAABAIxAjEAFAIyAjIABAIzAjMAFAI0AjQABAI1AjUAFAI2AjYAAwI4AjgABQI5AjkAFgI6AjoABQI7AjsAFgI8AjwABQI9Aj0AFgI+Aj4ABQI/Aj8AFgJAAkAABQJBAkEAFgJKAkoAAgJLAksAFwJMAkwAAgJOAk4AAgJQAlAAAgJSAlIAAgJUAlQAAgJXAlcADAJZAlkACQJbAlsACgJdAl0ACgJfAl8ACgJhAmEACgJjAmMAAgJkAmQAFwJlAmUAAgJmAmYAFwJnAmcAAgJoAmkAFwJqAmoAAwJrAmsAGAJsAmwAAwJtAm0AGAJuAm4AAwJvAm8AGAJxAnEAGgJzAnMAGgJ1AnUAGgKAAoAABgKCAoIABgKEAoQABgKGAoYADAKIAogADAKKAooADAKMAowADAKOAo4ADAKQApAADAKSApIAEAKUApQADwKVApUAGQKWApYADwKXApcAEQKYApgAHAKZApkAEQKaApoAHAKbApsAEQKcApwAHAL5AvkABQL6AvsAAgL8AvwAAwL9Av0ADwMBAwEAAQMCAwIABQMDAwMAEQMEAwUAAgMGAwYACQMHAwgAAgMJAwkAAwMKAwoACwMLAwsABgMMAwwADwMNAw0ADgMOAw4AAgMPAw8ADwMSAxIAFwMWAxYAGAMYAxgAGQMcAxwAGAMfAx8ABQMgAyAABwMiAyMAAgMkAyQADAMlAyYACQMnAycAEgMpAykAAQMqAyoABwMrAysABQMtAy4AAgMvAy8AAwMxAzEACwMyAzIABAMzAzMABgM0AzQADgM1AzUAEwM2AzYAFgM4AzgAGAM5AzkAFQM6AzoAFAM7AzsAGQM8AzwAGwM9Az0AFgM+Az4ACANEA0QAGQNFA0UAEANHA0cAEANJA0kAEANLA0sADwNMA0wAGQNNA04AHQNSA1IAHQNTA1MAAgNUA1QAFwNWA1YAEwNXA1cAAwNaA1oABQNcA1wAFgNgA2AADQNhA2EAGQNmA2YABANnA2cAFANoA2gADwNpA2kAGQNqA2oAAgNrA2sADgNsA2wAGwNtA20AAgNvA28AEwNxA3EAEwN0A3QABQN1A3UAFgN3A3gAFgN5A3kADgN6A3oAGwOBA4EAAwOCA4IAGAOGA4YAGAOIA4gAFQOJA4kAEgOKA4oAGQOLA4sAEgOMA4wAGQONA40AEgOOA44AGQOTA5MADgOUA5QAGwOZA5kAEwObA5sAEwOdA50AEwOfA58AEwOhA6EAEwOjA6MAEwOlA6UAEwOnA6cAEwOpA6kAEwOrA6sAEwOtA60AEwOvA68AEwOwA7AABQOxA7EAFgOyA7IABQOzA7MAFgO0A7QABQO1A7UAFgO2A7YABQO3A7cAFgO4A7gABQO5A7kAFgO6A7oABQO7A7sAFgO8A7wABQO9A70AFgO+A74ABQO/A78AFgPAA8AAAgPCA8IAAgPEA8QAAwPFA8UAGAPGA8YAAwPHA8cAGAPIA8gAAwPJA8kAGAPKA8oAAwPLA8sAGAPMA8wAAwPNA80AGAPOA84AAwPPA88AGAPQA9AAAwPRA9EAGAPZA9kAGAPcA9wADAPeA94ADAPqA+oADwPrA+sAGQPsA+wADwPtA+0AGQPuA+4ADwPvA+8AGQPyA/IACQP0A/QAAgP2A/YABgP4A/gADgP5A/kAGwP+A/4ABwP/A/8ACAQABAAADgQBBAEAGwQEBAQAFwQGBAYAHwQHBAcABwQJBAkACQQNBA0AAgQPBA8AAgQTBBMADwABAAQEFgAHAAAAAAAAAAAABwAAAAAAAAAAABMAFwATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAFAAAAAAAAAAUAAAAAABwAAAAAAAAAAAAFAAAABQAAABkACgAGAA0ACQASAA4AFAAAAAAAAAAAAAAAAAAaAAAAFQAVABUAAAAVAAAAAAAAAAAAAAAYABgACAAYABUAAAAbAAAACwACAAAAFgACAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAVAAAAAAAFABUAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEABQARAAAAAAAAAAAAAAAAABUAAAACAAAAAAAAABgAAAAAAAAAAAAAAAAAFQAVAAAACwAAAAAAAAAAAAAAAAAKAAUAAQAAAAoAAAAAAAAAEgAAAAAAAQAQAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABYAAAAYABgABAAYABgAGAAAABUAGAADABgAGAAAAAAAGAAAABgAAAAAABUABAAYAAAAAAAFAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAFAAgADQACAAUAAAAFABUABQAAAAUAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAABgAAAAAAAUAFQAKAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAYAAAAFQAVAAAAAAAAAAAAAQAAAAAAAAAFABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXAAAABwAHABMABwAHAAcAEwAAAAAAAAATABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAABEAEQARABEAEQARABEABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABgAGAAYABgAOABoAGgAaABoAGgAaABoAFQAVABUAFQAVAAAAAAAAAAAAGAAIAAgACAAIAAgACwALAAsACwACAAIAEQAaABEAGgARABoABQAVAAUAFQAFABUABQAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAUAFQAFABUABQAVAAUAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYABgABQAIAAUACAAFAAgAAAAAAAAAAAAAAAAAGQAbABkAGwAZABsAGQAbABkAGwAKAAAACgAAAAoAAAAGAAsABgALAAYACwAGAAsABgALAAYACwAJAAAADgACAA4AFAAMABQADAAUAAwAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAUADgAAAAAAEQAAAAAAFAAAAAAAAAAAAAAABQAAAAAADgASAAAADgAVAAAAGAAAAAsAAAAIAAAAAgAAAAAACwAIAAsAAAAAAAAAAAAAAAAAHAAAAAAAEAARAAAAAAAAAAAAAAAAAAUAAAAAAAUACgASABoAFQAYAAgAGAAVAAIAFgAVABgAGwAAAAAAAAAYAAIACQAAAAkAAAAJAAAADgACAAcABwAAAAAAAAAHAAAAGAARABoABQAAAAAAAAAAABUAGAAAAAAADQACABUABQAAAAAABQAVAA4AAgAAABIAFgAAABEAGgARABoAAAAAAAAAFQAAABUAFQASABYAAAAAAAAAGAAAABgABQAIAAUAFQAFAAgAAAAAABAAAgAQAAIAEAACAA8AAwAAABgAEgAWABUAAQAEABEAGgARABoAEQAaABEAGgARABoAEQAaABEAGgARABoAEQAaABEAGgARABoAEQAaAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAAAAAAAAAFAAgABQAIAAUACAAFAAgABQAIAAUACAAFAAgABQAVAAUAFQAFABUABQAIAAUAFQAGAAsABgALAAAACwAAAAsAAAALAAAACwAAAAsADgACAA4AAgAOAAIAAAAAAAAAGAAAABgACgAAABIAFgAPAAMADwADAAAAGAASABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAQAEAA4AAAAAAAAAAAAAABcAAQAAAAoALACOAAFERkxUAAgABAAAAAD//wAIAAAAAQACAAMABAAFAAYABwAIbGlnYQAybG51bQA4c21jcAA+c3MwMQBEc3MwMgBKc3MwMwBQc3MwNABWc3MwNQBcAAAAAQABAAAAAQACAAAAAQAAAAAAAQADAAAAAQAEAAAAAQAFAAAAAQAGAAAAAQAHAAgAEgAaACIAKgAyADoAQgBKAAEAAAABAEAABAAAAAEB9gABAAAAAQIAAAEAAAABAhIAAQAAAAECEAABAAAAAQIOAAEAAAABAgwAAQAAAAECDgACAhAA3AGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAHoAbUBtgG3AbgBuQG6AbsBvAG9Ab4BpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQB6AG1AbYBtwG4AbkBugG7AbwBvQG+AvcCogKhAqICowKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+AqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+AvMCvwK/AsACwALBAsECwgLCAsMCwwLFAsUCxgLGAscCxwLIAsgCyQLJAsoCygLLAssCzALMAs0CzQLPAs8C0ALQAtEC0QLSAtIC0wLTAtQC1ALVAtYC1gLXAtcC2ALYAtkC2QLaAtoC2wLbAtwC3ALdAt0C3gLeAt8C3wLgAuAC4QLhAuIC4gLjAuMC5ALkAuUC5QLmAuYC5wLnAugC6P////8C6gLqAusC6wLsAuwC7QLtAu4C7gLvAu8C8ALwAvEC8QLyAvIC8wL0AvQC9QL1AvYC9gKhAAEApAABAAgAAQAEAZIAAgBLAAIAmAAKAZgBzAHEAdYB1wHYAdkB2wHdAecAAQCIAZEAAQCIASgAAQCIAa4AAgCIAAIB4wHkAAIAfgACAeUB5gACAA0AIwA8AAAAQwBcABoAgwCDADQAhQCFADUB7AHtADYB7wIxADgCNAJFAHsCSAJUAI0CVwJoAJoCagJ7AKwCfgJ/AL4CggKcAMAD8APwANsAAQABAEgAAgABABIAGwAAAAEAAQBJAAEAAQC2AAEAAQA0AAEAAgAtAE0=","Roboto-Medium.ttf":"AAEAAAAOAIAAAwBgR0RFRgsuCy8AASxgAAAASEdQT1OQeyOPAAEsqAAAl/pHU1VCeolvLwABxKQAAANsT1MvMrkTKcoAAAFoAAAAYFZETVhu6nZPAAASOAAABeBjbWFwf76BZgAAGBgAAA7iZ2x5Zm8zqQ4AACb8AADUQGhlYWT1Pw7VAAAA7AAAADZoaGVhCx4JIwAAASQAAAAkaG10eLpNNCcAAAHIAAAQcGxvY2EEms7QAAD7PAAACDptYXhwBDsA9gAAAUgAAAAgbmFtZb10XwMAAQN4AAAEn3Bvc3Tfb5xiAAEIGAAAJEYAAQAAAAEAAF5SMstfDzz1AAkIAAAAAADE8BEuAAAAAM2CsnL6JP3VCYsIYgAAAAkAAgAAAAAAAAABAAAHbP4MAAAJnfok/V0JiwABAAAAAAAAAAAAAAAAAAAEHAABAAAEHACXABYAXQAFAAEAAAAAAAAAAAAAAAAAAwABAAME3gH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAAAAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAHB5cnMAAAAA//0GAP4AAGYHmgIAIAABn08BAAAEOgWwAAAAIAACAf4AAAAAAAAB/gAAAf4AAAKYAFIE4gA8BIwAZAXgAGQFHQA+AVoAUgK3AIACvAARA38AGwR1AEQBwgAnAqAARwI8AJkDKgACBIwAaASMAMoEjABRBIwATwSMADgEjACBBIwAdASMAEUEjABhBIwAUgIlAJkCIABRBBEAPwSOAJEEKgCAA+QAKQchAEoFQgAaBSAAnwUgAHQFYgCfBKMAnwShAJ8FbQB0BbAAnwJNAK0EfAA6BSgAnwRkAJ8HAgCfBbAAnwWPAHQFKwCfBZAAdAVFAJ8E8wBTBOoANQV0AIYFKwAaBwIARAUUAC8FAwATBMAAWAIxAIQDVwAVAjEADANrADUDnAADApQASgRaAF4EiACABDMAUQSIAFMEPABZAs8AMQSIAFQEiAB9AhMAkAIZ/7AEMACBAhMAkAb1AIAEiAB+BIgAUwSIAIAEiABTAtoAgAQpAFECnQAZBIgAewQOACAF+gAlBA4AIQQOABAEDgBVAq8AOAICAK4CrwAbBVEAdQIeAI8EfQBoBLUAUQWdAF0E4AAaAfwAiAT4AFoEHgCkBkQAVwORAHQD4gBUBG0AfwZEAFcD2wCHAwoAfwRLAF8DYQBtA2MAYQKxAHgEuwCSBBAAPgJCAKACEABtAjUAZAOnAHcD4gBcBgwAmwZmAJMG0wBmBAEAYAeF//YERABNBXoAaQTKAJQE5wCIBsEANAS6ADwEkQBDBIkAUwSXAIcFogAYAhoAjwSYAI4EJAAbAj8AGwWSAJMEiAB+B7QAZQc6AFsCDACLAtD/3QWJAGYEnwBSBaUAhgTyAHsCJv+1BDwAWQPmAJsDsAB5A3wAdQJPAJoCsgCCAk0AKQPYAIADLwB6ApwAqwAA/NsAAP02AAD8eQAA/T4AAPwMAAD9IgJdANcEPACdAkIAoAR1AJ8FvQAaBXsAZgU5ACMEkQBwBbEAnwSRAEcF6wBLBacASAVbAGwEhABWBMYAlgQOACAEiABUBGAAYAQaAGEEiAB+BKIAcwKmAKkEagAWBBMAZAT3AE8EiACABDcAUgSQAFIELgBABGAAgAXQAEQFyQBPBpQAZgUuAHUEdf/uBnEAMwX/ACQFPgByCIoALgiRAJ8GXwA1BasAmQUIAJQGBwAmB5oAGATTAEoFqgCaBakALgUKAD8GYABPBfYAmQWIAI8HmgCeB/oAngYaABgG+QCfBQcAlAU8AIgHVACqBPsALQR9AFsEjwCPA1oAhQT2ACcGdgAXBBYATQSYAIYEbgCPBJoAHwYDAI8ElwCGBJgAhgP1ACMF0wBUBNMAhgRmAF8GjgCGBuwAfgUYAB8GbwCPBGgAjwQ8AFEGhACQBHAAJwSJ/+EEPQBYBtEAHwbkAIYEif/1BJgAhgdDAI0GTwBwBGf/4AcpAKIGAQCGBQcAIARgAAoHQgC2BjYAnQbtAIQF5gCCCTIArQf5AI8EIQApA/AAMwV7AGoEiQBSBRkAEQQOACAFewBqBIkAUwc+AI0GRAB0B0MAjQZQAHAFHQBqBEoAXAT/AG0AAPxmAAD8cwAA/XsAAP2lAAD6JP7p+k0EZ//gBRQAnwSHAIAEagCUA6IAfgS3AJ8EIAB+BSoAlASrAI4GlgA0BaQAPgfRAJ8FqwB+CEcAnwb1AH4GJQBpBP8AYQcyAC4FcQAmBXUAggRzAHQFhwCKBiYAIATE/84FHwCUBHgAjgWwAJ8EiAB+BYgAUwSmAF0EpgBdBMcAOwNTADQFBwBUBusAZgbdAF4GUwA7BSgALwR7AEkEPwB1B74AQwadAD8H/gCYBp4AdwUDAGIELABVBaoAIgUdAEQFVwCHBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAABYcArQaBALIDnQAEAcAAYAG8ADMBzgAyAagARwMUAGIDGwBAAwgAMgRdAEAEmQBcAssAiAP6AJwFpgCcB6gASwJyAGwCaQBUA5wALQOpAD8DXABpBLUATwa4AJkETQBLBeUAcQPiAEUIyACYBQkAZAUUAJYGyQBpB2EAageRAGoG7wBqBLsAQwWWAKYE2QBABIMAngSyADsIRQBkAiH/sgSOAGUETACYBEYAqgRLAKAEGgAkAlsAswKYAGMB8QBFBKgAGAAAAAAIMABZCDUAXAQyAE0DiwBNBJMAbAMn/58CEP+wAk0AGAGzAFwDoQB1A6EAdQOhAHUECwB5BAsAdQQL/0wECwB6A6EAWwIFAJAEyAAcBIwAjgSUAGgErwCOBEcAjgQqAI4E2wBoBRIAjgIVAI4EFwAuBHcAjgO9AI4GBgCOBSEAjgTKAGYE3QBoBKgAjgRwAE8EMgA8BQAAfgSxABwGDgA0BIwALARVABMETQBKBIYAbQKFAD4D/wBSBCIATQRlADkEfABRBD0AbQOvADwEQwBSBCoAPwIzAFcDVQBrA2YAYAL9ADgDdgBoA3YAcAMAAFIDgwBoA2YAYAOfAHADuQCXArIAlgNCAGwEjABPBIwAOASMAIEEmAB0BDsACgQ0ADIEYgA+BIwAYQS7AFYEiABTBUkAnwRaAGAFMgCfBSgAnwQwAIEFOgCfBC0AgQSNAFIEjACOA3wAdQH+AAACoABHBYAAJAWAACQEpv/9BOoANQKd/+cFQgAaBUIAGgVCABoFQgAaBUIAGgVCABoFQgAaBSAAdASjAJ8EowCfBKMAnwSjAJ8CTf/MAk0ArQJN/9gCTf+9BbAAnwWPAHQFjwB0BY8AdAWPAHQFjwB0BXQAhgV0AIYFdACGBXQAhgUDABMEWgBeBFoAXgRaAF4EWgBeBFoAXgRaAF4EWgBeBDMAUQQ8AFkEPABZBDwAWQQ8AFkCGv+vAhoAjwIa/7sCGv+gBIgAfgSIAFMEiABTBIgAUwSIAFMEiABTBIgAewSIAHsEiAB7BIgAewQOABAEDgAQBUIAGgRaAF4FQgAaBFoAXgVCABoEWgBeBSAAdAQzAFEFIAB0BDMAUQUgAHQEMwBRBSAAdAQzAFEFYgCfBR4AUwSjAJ8EPABZBKMAnwQ8AFkEowCfBDwAWQSjAJ8EPABZBKMAnwQ8AFkFbQB0BIgAVAVtAHQEiABUBW0AdASIAFQFbQB0BIgAVAWwAJ8EiAB9Ak3/vwIa/6ICTf+/Ahr/ogJN/+UCGv/IAk0AHAIT//4CTQCjBskArQQsAJAEfAA6Aib/tQUoAJ8EMACBBGQAnwITAJAEZACfAhMAWARkAJ8CqQCQBGQAnwLvAJAFsACfBIgAfgWwAJ8EiAB+BbAAnwSIAH4EiP/VBY8AdASIAFMFjwB0BIgAUwWPAHQEiABTBUUAnwLaAIAFRQCfAtoAVgVFAJ8C2gBDBPMAUwQpAFEE8wBTBCkAUQTzAFMEKQBRBPMAUwQpAFEE8wBTBCkAUQTqADUCnQAZBOoANQKdABkE6gA1AsUAGQV0AIYEiAB7BXQAhgSIAHsFdACGBIgAewV0AIYEiAB7BXQAhgSIAHsFdACGBIgAewcCAEQF+gAlBQMAEwQOABAFAwATBMAAWAQOAFUEwABYBA4AVQTAAFgEDgBVB4X/9gbBADQFegBpBIkAUwSv/+oEr//qBDIAPATIABwEyAAcBMgAHATIABwEyAAcBMgAHATIABwElABoBEcAjgRHAI4ERwCOBEcAjgIV/6wCFQCOAhX/uAIV/50FIQCOBMoAZgTKAGYEygBmBMoAZgTKAGYFAAB+BQAAfgUAAH4FAAB+BFUAEwTIABwEyAAcBMgAHASUAGgElABoBJQAaASUAGgErwCOBEcAjgRHAI4ERwCOBEcAjgRHAI4E2wBoBNsAaATbAGgE2wBoBRIAjgIV/58CFf+fAhX/xQIV//kCFQCEBBcALgR3AI4DvQCOA70AjgO9AI4DvQCOBSEAjgUhAI4FIQCOBMoAZgTKAGYEygBmBKgAjgSoAI4EqACOBHAATwRwAE8EcABPBHAATwQyADwEMgA8BQAAfgUAAH4FAAB+BQAAfgUAAH4FAAB+Bg4ANARVABMEVQATBE0ASgRNAEoETQBKCOAATwVCABoFB/+vBhT/3AKx/+MFowAqBWf/ZwVvABMCpv+wBUIAGgUgAJ8EowCfBMAAWAWwAJ8CTQCtBSgAnwcCAJ8FsACfBY8AdAUrAJ8E6gA1BQMAEwUUAC8CTf+9BQMAEwSEAFYEYABgBIgAfgKmAKkEYACABJgAjgSIAFMEuwCSBA4AIAQOACECpv/EBGAAgASIAFMEYACABpQAZgSjAJ8EdQCfBPMAUwJNAK0CTf+9BHwAOgUoAJ8FKACfBQoAPwVCABoFIACfBHUAnwSjAJ8FqgCaBwIAnwWwAJ8FjwB0BbEAnwUrAJ8FIAB0BOoANQUUAC8EWgBeBDwAWQSYAIYEiABTBIgAgAQzAFEEDgAQBA4AIQQ8AFkDWgCFBCkAUQITAJACGv+gAhn/sARuAI8EDgAQBwIARAX6ACUHAgBEBfoAJQcCAEQF+gAlBQMAEwQOABABWgBSApgAUgRKAJoE4gAxAib/tQG8ADMHAgCfBvUAgAVCABoEWgBeBY//PQd3ADEHsQAxBKMAnwWqAJoEPABZBJgAhgWnAEgFyQBPBRkAEQQO/+MIlgBTCZ0AdATTAEoEFgBNBSAAdAQzAFEFAwATBA4AIAJNAK0HmgAYBnYAFwJNAK0FQgAaBFoAXgVCABoEWgBeB4X/9gbBADQEowCfBDwAWQWIAFMEPABZBDwAWQeaABgGdgAXBNMASgQWAE0FqgCaBJgAhgWqAJoEmACGBY8AdASIAFMFewBqBIkAUgV7AGoEiQBSBTwAiAQ8AFEFCgA/BA4AEAUKAD8EDgAQBQoAPwQOABAFiACPBGYAXwb5AJ8GbwCPBRQALwQOACEEiABTBakALgSaAB8FQgAaBFoAXgVCABoEWgBeBUIAGgRaAF4FQgAEBFr/iQVCABoEWgBeBUIAGgRaAF4FQgAaBFoAXgVCABoEWgBeBUIAGgRaAF4FQgAaBFoAXgVCABoEWgBeBUIAGgRaAF4EowCfBDwAWQSjAJ8EPABZBKMAnwQ8AFkEowCfBDwAWQSj/8wEPP+LBKMAnwQ8AFkEowCfBDwAWQSjAJ8EPABZAk0ArQIaAI8CTQCfAhMAggWPAHQEiABTBY8AdASIAFMFjwB0BIgAUwWPACsEiP+mBY8AdASIAFMFjwB0BIgAUwWPAHQEiABTBYkAZgSfAFIFiQBmBJ8AUgWJAGYEnwBSBYkAZgSfAFIFiQBmBJ8AUgV0AIYEiAB7BXQAhgSIAHsFpQCGBPIAewWlAIYE8gB7BaUAhgTyAHsFpQCGBPIAewWlAIYE8gB7BQMAEwQOABAFAwATBA4AEAUDABMEDgAQBKYAUwSmAFMFKACfBG4AjwWwAJ8ElwCGBOoANQP1ACMFFAAvBA4AIQWIAI8EZgBfBYgAjwRmAF8EdQCfA1oAhQeaABgGdgAXBiYAIATE/84EiAB9BQf/1wUH/9cEdf/3A1r/6QU8/90ERP/MBaoAmgSYAIYFsACfBJcAhgcCAJ8GAwCPBakALgSaAB8FAwATBA4AIAUUAC8EDgAhBGAAYAShABYGgQCyAAAAAAIlAJoAAAABAAEBAQEBAAwA+Aj/AAgACP/+AAkACf/9AAoACv/9AAsAC//9AAwADP/9AA0ADf/8AA4ADv/8AA8AD//8ABAAEP/8ABEAEf/7ABIAEv/7ABMAE//7ABQAFP/7ABUAFP/6ABYAFf/6ABcAFv/6ABgAF//6ABkAGP/5ABoAGf/5ABsAGv/5ABwAG//5AB0AHP/4AB4AHf/4AB8AHv/4ACAAH//4ACEAIP/3ACIAIf/3ACMAIv/3ACQAI//3ACUAJP/2ACYAJf/2ACcAJv/2ACgAJ//2ACkAJ//1ACoAKP/1ACsAKf/1ACwAKv/1AC0AK//0AC4ALP/0AC8ALf/0ADAALv/0ADEAL//zADIAMP/zADMAMf/zADQAMv/zADUAM//yADYANP/yADcANf/yADgANv/yADkAN//xADoAOP/xADsAOf/xADwAOv/xAD0AOv/wAD4AO//wAD8APP/wAEAAPf/wAEEAPv/vAEIAP//vAEMAQP/vAEQAQf/vAEUAQv/uAEYAQ//uAEcARP/uAEgARf/uAEkARv/tAEoAR//tAEsASP/tAEwASf/tAE0ASv/sAE4AS//sAE8ATP/sAFAATf/sAFEATf/rAFIATv/rAFMAT//rAFQAUP/rAFUAUf/qAFYAUv/qAFcAU//qAFgAVP/qAFkAVf/pAFoAVv/pAFsAV//pAFwAWP/pAF0AWf/oAF4AWv/oAF8AW//oAGAAXP/oAGEAXf/nAGIAXv/nAGMAX//nAGQAYP/nAGUAYP/mAGYAYf/mAGcAYv/mAGgAY//mAGkAZP/lAGoAZf/lAGsAZv/lAGwAZ//lAG0AaP/kAG4Aaf/kAG8Aav/kAHAAa//kAHEAbP/jAHIAbf/jAHMAbv/jAHQAb//jAHUAcP/iAHYAcf/iAHcAcv/iAHgAc//iAHkAc//hAHoAdP/hAHsAdf/hAHwAdv/hAH0Ad//gAH4AeP/gAH8Aef/gAIAAev/gAIEAe//fAIIAfP/fAIMAff/fAIQAfv/fAIUAf//eAIYAgP/eAIcAgf/eAIgAgv/eAIkAg//dAIoAhP/dAIsAhf/dAIwAhv/dAI0Ahv/cAI4Ah//cAI8AiP/cAJAAif/cAJEAiv/bAJIAi//bAJMAjP/bAJQAjf/bAJUAjv/aAJYAj//aAJcAkP/aAJgAkf/aAJkAkv/ZAJoAk//ZAJsAlP/ZAJwAlf/ZAJ0Alv/YAJ4Al//YAJ8AmP/YAKAAmf/YAKEAmf/XAKIAmv/XAKMAm//XAKQAnP/XAKUAnf/WAKYAnv/WAKcAn//WAKgAoP/WAKkAof/VAKoAov/VAKsAo//VAKwApP/VAK0Apf/UAK4Apv/UAK8Ap//UALAAqP/UALEAqf/TALIAqv/TALMAq//TALQArP/TALUArP/SALYArf/SALcArv/SALgAr//SALkAsP/RALoAsf/RALsAsv/RALwAs//RAL0AtP/QAL4Atf/QAL8Atv/QAMAAt//QAMEAuP/PAMIAuf/PAMMAuv/PAMQAu//PAMUAvP/OAMYAvf/OAMcAvv/OAMgAv//OAMkAv//NAMoAwP/NAMsAwf/NAMwAwv/NAM0Aw//MAM4AxP/MAM8Axf/MANAAxv/MANEAx//LANIAyP/LANMAyf/LANQAyv/LANUAy//KANYAzP/KANcAzf/KANgAzv/KANkAz//JANoA0P/JANsA0f/JANwA0v/JAN0A0v/IAN4A0//IAN8A1P/IAOAA1f/IAOEA1v/HAOIA1//HAOMA2P/HAOQA2f/HAOUA2v/GAOYA2//GAOcA3P/GAOgA3f/GAOkA3v/FAOoA3//FAOsA4P/FAOwA4f/FAO0A4v/EAO4A4//EAO8A5P/EAPAA5f/EAPEA5f/DAPIA5v/DAPMA5//DAPQA6P/DAPUA6f/CAPYA6v/CAPcA6//CAPgA7P/CAPkA7f/BAPoA7v/BAPsA7//BAPwA8P/BAP0A8f/AAP4A8v/AAP8A8//AAAAAAwAAAAMAAAiEAAEAAAAAABwAAwABAAACJgAGAgoAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAMEGwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYAAAAfUB9gH4AfoCAQIGAgoCDQIMAg4CEAIPAhECEwIVAhQCFgIXAhkCGAIaAhsCHAIeAh0CHwIhAiACIwIiAiQCJQFsAG8AYgBjAGcBbgB1AIMAbQBpAX0AcwBoAYsAfwCBAYgAcAGMAY0AZQB0AYMBhQGEAMEBiQBqAHkAtQCEAIcAfgBhAGwBhwCTAYoArQBrAHoBcAADAfEB9AIFAJAAkQFiAWMBaQFqAWUBZgCGAY4CJwKWAXQBeQFyAXMBkgNQAW0AdgFnAWsBcQHzAfsB8gH8AfkB/gH/AgAB/QIDAgQAAAICAggCCQIHAIoAmgCgAG4AnACdAJ4AdwChAJ8AmwAEBl4AAADqAIAABgBqAAAAAgANACEAfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABOAFAAVMBXwFnAX4BfwGSAaEBsAHwAfsB/wIZAhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEzgTXBOEE9QUBBRAFEx4BHj8ehR7xHvMe+R9NIAsgFSAeICIgJiAwIDMgOiA8IEQgdCB/IKQgpyCsIQUhEyEWISIhJiEuIV4iAiIGIg8iEiIaIh4iKyJIImAiZSXK7gL2w/sE/v///f//AAAAAAACAA0AIAAiAKAAoQCtAK4AwADHANAA5wDwAP8BEAESASYBKAExATkBQQFUAWABaAF/AZIBoAGvAfAB+gH8AhgCGgI3AlkCvALGAskC2ALzAwADAwMJAw8DIwOEA4wDjgOTA6MDsQO6A8oD0QPWBAAEJgQwBEYEUARjBHAEegSIBM8E2ATiBPYFAgURHgAePh6AHqAe8h70H00gACATIBcgICAlIDAgMiA5IDwgRCB0IH8goyCnIKshBSETIRYhIiEmIS4hWyICIgYiDyIRIhoiHiIrIkgiYCJkJcruAfbD+wH+///8//8AAQQY//UAAP/iAAD/wAAA/78AAAExAAABLAAAASgAAAEmAAABJAAAASIAAAEcAAABHgAA/wH+9P7nAWEAAAChAGQAZv5h/kAAlv3U/aX9xP2v/aP9ov2d/Zj9hQAA/3D/bwAAAAD9BQAA/1D8+fz2AAD8tQAA/K0AAPyiAAD8nAAA/p4AAP6bAAD8RQAA5VXlFeTF5PjkWeT25ArhVgAA4U3hTOFK4UHjG+E54xPhMOEB4PcAAODRAADgdeBo4GbgW9+P4FDgJN+B3qffdd90323fat9e30LfK98o28QTjgrOAAAClAGYAAEAAAAAAAAA5AAAAOQAAADiAAAA4AAAAOoAAAEUAAABLgAAAS4AAAEuAAABOgAAAVwAAAFoAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAAAAAFMAWgAAAGAAAAAAAAAAZgAAAHgAAACCAAAAioAAAI6AAACxAAAAtQAAALoAAAAAAAAAAAAAAAAAAAAAALcAAAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqYAAAAAAAAAAwQbAeoB6wHxAfIB8wH0AfUB9gB/Ae0CAQICAgMCBAIFAgYAgACBAgcCCAIJAgoCCwCCAIMCDAINAg4CDwIQAhEAhACFAhwCHQIeAh8CIAIhAIYAhwIiAiMCJAIlAiYAiAHsA/AAiQHuAIoCVQJWAlcCWAJZAloAiwCMAI0CYwJkAmUCZgJnAmgCaQCOAI8CagJrAmwCbQJuAm8AkACRAn4CfwKCAoMChAKFAe8B8ACSAfcCEgCpAKoC+ACrAvkC+gL7AKwArQMCAwMDBACuAwUDBgCvAwcDCACwAwkAsQMKALIDCwMMALMDDQC0ALUDDgMPAxADEQMSAxMDFAMVAL8DFwMYAMADFgDBAMIAwwDEAMUAxgDHAxkAyADJA1oDHwDNAyAAzgMhAyIDIwMkAM8A0ADRAyYDWwMnANIDKADTAykDKgDUAysA1QDWANcDLAMlANgDLQMuAy8DMAMxAzIDMwDZANoDNAM1AOUA5gDnAOgDNgDpAOoA6wM3AOwA7QDuAO8DOADwAzkDOgDxAzsA8gM8A1wDPQD9Az4A/gM/A0ADQQNCAP8BAAEBA0MDXQNEAQIBAwEEBAYDXgNfARIBEwEUARUDYANhA2MDYgEjASQECwQMBAUBJQEmAScBKAEpBAcECAEqASsEAAQBA2QDZQPyA/MBLAEtBAkECgEuAS8D9AP1ATABMQEyATMBNAE1A2YDZwP2A/cDaANpBBMEFAP4A/kBNgE3A/oD+wE4ATkBOgQEATsBPAQCBAMDagNrA2wBPQE+BBEEEgE/AUAEDQQOA/wD/QQPBBABQQN3A3YDeAN5A3oDewN8AUIBQwP+A/8DkQOSAUQBRQOTA5QEFQQWAUYDlQQXA5YDlwFiAWMEGQQYAXcD8QF5AZIDUANYA1kABAZeAAAA6gCAAAYAagAAAAIADQAhAH4AoACsAK0AvwDGAM8A5gDvAP4BDwERASUBJwEwATgBQAFTAV8BZwF+AX8BkgGhAbAB8AH7Af8CGQIbAjcCWQK8AscCyQLdAvMDAQMDAwkDDwMjA4oDjAOSA6EDsAO5A8kDzgPSA9YEJQQvBEUETwRiBG8EeQSGBM4E1wThBPUFAQUQBRMeAR4/HoUe8R7zHvkfTSALIBUgHiAiICYgMCAzIDogPCBEIHQgfyCkIKcgrCEFIRMhFiEiISYhLiFeIgIiBiIPIhIiGiIeIisiSCJgImUlyu4C9sP7BP7///3//wAAAAAAAgANACAAIgCgAKEArQCuAMAAxwDQAOcA8AD/ARABEgEmASgBMQE5AUEBVAFgAWgBfwGSAaABrwHwAfoB/AIYAhoCNwJZArwCxgLJAtgC8wMAAwMDCQMPAyMDhAOMA44DkwOjA7EDugPKA9ED1gQABCYEMARGBFAEYwRwBHoEiATPBNgE4gT2BQIFER4AHj4egB6gHvIe9B9NIAAgEyAXICAgJSAwIDIgOSA8IEQgdCB/IKMgpyCrIQUhEyEWISIhJiEuIVsiAiIGIg8iESIaIh4iKyJIImAiZCXK7gH2w/sB/v///P//AAEEGP/1AAD/4gAA/8AAAP+/AAABMQAAASwAAAEoAAABJgAAASQAAAEiAAABHAAAAR4AAP8B/vT+5wFhAAAAoQBkAGb+Yf5AAJb91P2l/cT9r/2j/aL9nf2Y/YUAAP9w/28AAAAA/QUAAP9Q/Pn89gAA/LUAAPytAAD8ogAA/JwAAP6eAAD+mwAA/EUAAOVV5RXkxeT45Fnk9uQK4VYAAOFN4UzhSuFB4xvhOeMT4TDhAeD3AADg0QAA4HXgaOBm4Fvfj+BQ4CTfgd6n33XfdN9t32rfXt9C3yvfKNvEE44KzgAAApQBmAABAAAAAAAAAOQAAADkAAAA4gAAAOAAAADqAAABFAAAAS4AAAEuAAABLgAAAToAAAFcAAABaAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRAAAAAABTAFoAAABgAAAAAAAAAGYAAAB4AAAAggAAAIqAAACOgAAAsQAAALUAAAC6AAAAAAAAAAAAAAAAAAAAAAC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAswAAALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmAAAAAAAAAAMEGwHqAesB8QHyAfMB9AH1AfYAfwHtAgECAgIDAgQCBQIGAIAAgQIHAggCCQIKAgsAggCDAgwCDQIOAg8CEAIRAIQAhQIcAh0CHgIfAiACIQCGAIcCIgIjAiQCJQImAIgB7APwAIkB7gCKAlUCVgJXAlgCWQJaAIsAjACNAmMCZAJlAmYCZwJoAmkAjgCPAmoCawJsAm0CbgJvAJAAkQJ+An8CggKDAoQChQHvAfAAkgH3AhIAqQCqAvgAqwL5AvoC+wCsAK0DAgMDAwQArgMFAwYArwMHAwgAsAMJALEDCgCyAwsDDACzAw0AtAC1Aw4DDwMQAxEDEgMTAxQDFQC/AxcDGADAAxYAwQDCAMMAxADFAMYAxwMZAMgAyQNaAx8AzQMgAM4DIQMiAyMDJADPANAA0QMmA1sDJwDSAygA0wMpAyoA1AMrANUA1gDXAywDJQDYAy0DLgMvAzADMQMyAzMA2QDaAzQDNQDlAOYA5wDoAzYA6QDqAOsDNwDsAO0A7gDvAzgA8AM5AzoA8QM7APIDPANcAz0A/QM+AP4DPwNAA0EDQgD/AQABAQNDA10DRAECAQMBBAQGA14DXwESARMBFAEVA2ADYQNjA2IBIwEkBAsEDAQFASUBJgEnASgBKQQHBAgBKgErBAAEAQNkA2UD8gPzASwBLQQJBAoBLgEvA/QD9QEwATEBMgEzATQBNQNmA2cD9gP3A2gDaQQTBBQD+AP5ATYBNwP6A/sBOAE5AToEBAE7ATwEAgQDA2oDawNsAT0BPgQRBBIBPwFABA0EDgP8A/0EDwQQAUEDdwN2A3gDeQN6A3sDfAFCAUMD/gP/A5EDkgFEAUUDkwOUBBUEFgFGA5UEFwOWA5cBYgFjBBkEGAF3A/EBeQGSA1ADWANZAAAAAgBSA/wCPwYYAAQACQAAAQMjETMFAyMRMwEBOHevAT44d68Fj/5tAhyJ/m0CHAAAAgA8AAAEmAWwABsAHwAAASMDIxMjNSETIzUhEzMDMxMzAzMVIwMzFSMDIwMzEyMCq+FMp0znAQU68wERTqdO4E6oTtDuOt37TKd34TrhAZr+ZgGangE5nwGg/mABoP5gn/7Hnv5mAjgBOQAAAQBk/y0EJgabACsAAAE0JicuATU0Njc1MxUeARUjNCYjIgYVFBYXHgEVFAYHFSM1LgE1MxQWMzI2AzNshdfPx7Cgr73ybmRoZGiO18rPuZ+25fOJanF4AXxXbS9JxrOq0RXa3Brty4CPa15YaTJNw7KwyxPDwhPb3pF3agAAAAAFAGT/6wWJBcUADQAbACkANwA7AAATNDYzMhYdARQGIyImNTMUFjMyNj0BNCYjIgYVATQ2MzIWHQEUBiMiJjUzFBYzMjY9ATQmIyIGFQUnARdkopKToqKRk6OpSEVDRkdEREcCE6ORkqOikZKkqUpDR0NIRERH/gV9Asd9BJiDqqqDTYOoqYJCV1dCTUJZWUL8zYKqqoJOg6mpg0FZVUVOQVlZQfhIBHJIAAAAAwA+/+sE+AXFACAAKwA4AAATNDY3LgE1NDYzMhYVFAYPAQE+ATUzFAYHFyEnDgEjIiYFMjY3AQcOARUUFgMUFhc3PgE1NCYjIgY+hYtLRsqzosRlYGQBMSksxUhLyf7nUVO4at79AeJAdzj+uB5KLnwMMDFyOiZURktOAYl6rVxhl1GvwbyKZJZGSP6WQJNWi+Jc7V87OeIgIyQBgxY5ZjFmfgOrMWQ/TCZPMjdUYQABAFIEBAELBhgABAAAAQMjETMBC0J3uQWb/mkCFAAAAAEAgP4xAqIGXwAPAAATEAA3FwYCERUQEhcHJgARgAE1vTCJvLuKML3+ywJQAZECIV2OaP5H/qIU/qL+R2+HXgIfAZIAAQAR/jECOwZfAA8AAAEQAAcnNhIRNRACJzcWABECO/7EvTGHvsKDMb0BPAJA/nP93F6HaAG/AV8UAVoBwWqIXf3Z/nUAAAAAAQAbAk8DYgWwAA4AAAElNwUDMwMlFwUTBwsBJwFF/tY1ASgNrg8BIzX+0cONsa6PA8xZqXUBV/6ic6tY/vZpAR/+6WYAAAAAAQBEAJIEKgS2AAsAAAEhFSERIxEhNSERMwKuAXz+hOz+ggF+7AMh3v5PAbHeAZUAAQAn/qsBZADrAAkAACUUBgcnPgE9ATMBY2hVfyws5Tdn3ElOSJNbvAAAAAABAEcCCQJUAs0AAwAAASE1IQJU/fMCDQIJxAAAAQCZAAABiwDpAAMAACEjNTMBi/Ly6QAAAQAC/4MC/gWwAAMAABcjATPBvwI9v30GLQAAAAIAaP/rBCMFxQANABsAAAEQAiMiAhkBEBIzMhIRJzQmIyIGFREUFjMyNjUEI/vh4f784eH983Z1dXV3dXV0AjH+3v7cASUBIQFNASEBJv7a/t8ltqmptv5ruKmouQAAAAEAygAAAt4FsAAFAAAhIxEhNSUC3vP+3wIUBKCfcQAAAQBRAAAENAXFABgAACkBNQE+ATU0JiMiBhUjNAAzMhYVFAYHASEENPw5Adp2VnBjgnrzAQXq1vCKl/63ApinAgWCn09kgo2BygEH5L+A3qb+pAAAAQBP/+sEFgXFACgAAAEzMjY1NCYjIgYVIzQkMzIWFRQGBx4BFRQEIyIkNTMUFjMyNjU0JisBAYapeWVub2V78wECztn6b2x/cv7x2s7+8POAbnOAdX+pA0ZzbWtxb16v4dTLX6sxLbB2zOHUx2N2eHJ+cgACADgAAARZBbAACgAPAAABMxUjESMRIScBMwEhEScHA6G4uPL9jwYCb/r9hwGHAxcCB8T+vQFDlQPY/FcCVgExAAAAAAEAgf/rBCYFsAAeAAAbASEVIQM+ATc2EhUUAiMiJDU3FBYzMjY1NCYjIgYHnFQDAf3JLCxvSNHk8OvE/vrremVzdXhzZl4XAosDJdL+kyApAgP+/Ora/vTRyQhsdJ2FhqM/PwACAHT/6wRGBcUAGgAnAAABMhYXBy4BIyIGHQE+ATMyEhUUAiMiABkBEAATIgYHFRQWMzI2NTQmAqhQjTouOWdIlK89nWDH3//Y4v7nATy0XX4jkndtd34FxSAcvBgb3cMHODv+89fk/ucBMgEeARYBIgFS/UpAOWi9xLOIhaIAAAEARQAABDMFsAAMAAABAAIDByM3GgE3ITUhBDP/AKsoD/MPJ+bO/P0D7gTt/tP+Mv6ompoBUAIP9MMAAAMAYf/rBCoFxQAXACMALwAAARQGBx4BFRQEIyIkNTQ2Ny4BNTQ2MzIWAzQmIyIGFRQWMzI2AzQmIyIGFRQWMzI2BAV1anqK/vnc3/75iHxqdPHNy/XNh2xug4JxbYQmcF1fbG1gXW4EMHGmLi+1es/T0897tDAtpnHGz8/8o22Eg25wfH0C/WJ5dWZldXUAAAIAUv/rBBcFxQAbACgAACUyNj0BJw4BIyICNTQAMzIAGQEQACMiJic3HgETMjY3NTQmIyIGFRQWAgOFnQMwilXV7AEKy+cBCf7c8EyeRCBAfXhdfSGAemSCdq29vSMBQUIBBPHmASL+3P7k/qv+5v7VHh64GxcB2EY7nLGvt46SpgAA//8AmQAAAYsEOgAmABAAAAAHABAAAANR//8AUf6rAY4EOgAnABD//QNRAAYADioAAAEAPwCkA4QETgAJAAABBxUXBRUBNQEVAUIREQJC/LsDRQJ9BAQE2vMBdcEBdPMAAAIAkQFkA+8D1gADAAcAAAEhNSERITUhA+/8ogNe/KIDXgMMyv2OyQABAIAApQPgBE4ACQAAEzUBFQE1JT8BJ4ADYPygAl0QAREDX+/+jMH+jO/iBAMFAAACACkAAAOgBcUAGQAdAAABPgE3PgE1NCYjIgYVIz4BMzIWFRQGBw4BFRMjNTMBVAE+cFBaZ2NVcvMC8sbW55FyOhwE+PgBnJJ2X06HVmNpWVu5xtPBgdVcM1hY/mTpAAACAEr+OwbTBZAAMwBDAAABBgIjIiYnDgEjIiY3GgEzMhYXBzMDBhYzMjY3EgAhIAADAgAhMjY3Fw4BIyAAExIAISAAAQYWMzI2NzwBNxMuASMiBgbDCeHqTGsZMIdeh44TGeSqcINSAwUzCDMseYwJEf7N/rL+yP6XDxIBRQE8WbFBJkTMZf51/mIREwHLAYMBhgGR+/4KOkc9YSgCLRgzHHl5Afvc/sxST1JN68gBBgEwMzcE/b1nStqtAXcBkv5N/o3+jP5jKCGCKy4B6gG5AbECAf4c/fSIhzBACA8NAgMJC8kAAAAAAgAaAAAFKAWwAAcACwAAASEDIwEzASMBIQMjA7r9z3j3AhfnAhD3/ZsBrNQDAVz+pAWw+lACHwJrAAAAAwCfAAAEvAWwAA8AGAAhAAAzESEyBBUUBgcVHgEVFAQjAREhMjY1NCYjJSEyNjU0JisBnwHo9QEJb2OBiP798f7KATZ+hHB6/rIBD3N+hIf1BbDDymSZJgMcvoHR0QKW/ix0bHZ+tWhlbmcAAQB0/+sE2AXFABsAAAEGACMgABkBEAAhIAAXIy4BIyIGFREUFjMyNjcE1xb+5f3+/f7OATUBAAECARUY8xOPmpirqZqXkRMB2Ob++QFRAREBFQEPAVT+/fCYmOi2/um555SXAAIAnwAABO4FsAAJABMAADMRISAAERUQACEDETMyNj0BNCYjnwHKASoBW/6i/szKw9nNys8FsP6m/uLB/uD+qQTt+9Xqy8PN5gAAAAABAJ8AAAR1BbAACwAAASERIRUhESEVIREhBA/9gwLj/CoDz/0kAn0Cj/4zwgWww/5lAAAAAQCfAAAEcgWwAAkAAAEhESMRIRUhESEEDP2G8wPT/SACegJt/ZMFsMP+QwABAHT/6wTiBcUAHwAAJQYEIyAAGQEQACEgBBcjLgEjIgYVERQWMzI2NxEhNSEE4jz+/NP+8/6yATwBAgEGAQsf7xiPlpq2xaR0iiL+3gIVvlKBAUgBDQEwAQ0BSPTagIvesv7OtN80JQEktgABAJ8AAAUQBbAACwAAISMRIREjETMRIREzBRDy/XTz8wKM8gJt/ZMFsP2AAoAAAAABAK0AAAGgBbAAAwAAISMRMwGg8/MFsAABADr/6wPmBbAADwAAATMRFAQjIiY1MxQWMzI2NQLz8/8A0N/983V0ZncFsPv10OrX239xgnYAAAEAnwAABS8FsAAMAAABIxEjETMRMwEhCQEhAjqo8/OLAckBIP30AjX+1wJ2/YoFsP2XAmn9Sf0HAAAAAAEAnwAABC8FsAAFAAAlIRUhETMBkgKd/HDzwsIFsAAAAQCfAAAGYgWwABAAAAkCIREjERMjASMBIxMRIxEB2gGmAacBO/MZA/5Mo/5OAxnzBbD7mARo+lAB8AKA+5AEbf2D/hAFsAAAAQCfAAAFEAWwAAsAACEjAQcRIxEzATcRMwUQ8v13A/PzAokD8gQrAfvWBbD71gEEKQAAAAIAdP/rBRsFxQANABsAAAEQACEgABkBEAAhIAARJzQmIyIGFREUFjMyNjUFG/61/vH+9v69AUIBCgEPAUzzwKijt7ijqb4CVf7z/qMBXgEMAQYBCwFf/qH+9QK16+q2/vi46+u4AAAAAgCfAAAE2gWwAAoAEwAAAREjESEyBBUUBCMlITI2NTQmIyEBkvMCOfYBDP709v66AUaKhYWK/roCKP3YBbD1z9Hzw45xcZIAAgB0/wkFJwXFABMAIQAAARQGBxcHJQ4BIyAAGQEQACEgABEnNCYjIgYVERQWMzI2NQUbdGvroP7tLFgv/vb+vQFCAQoBDwFM88Coo7e4o6m+AlWZ+1fSj/oLDQFeAQwBBgELAV/+of71ArXr6rb++Ljr67gAAAAAAgCfAAAE8AWwABoAIwAAAREjESEyFhUUBgceAR0BFBYXFSMuAT0BNCYjJSEyNjU0JiMhAZLzAiX3/Ht5fmkfJ/kpFntx/sYBGpWDfon+1QJc/aQFsNXQdp4yKayGeUF0Ihoii0Z1c4HDbnVxegAAAAEAU//rBKAFxQAlAAABNCYnJiQ1NCQzMgAVIzQmIyIGFRQWFx4BFRQEIyIkNTMUFjMyNgOtg676/v4BH+r0ASLzlo+HjZe47+/+4fHp/qzztJaJlAF2XHMuQs6us+H/AL1yiXNdVWsyQdiwudTu24eBawAAAQA1AAAEtQWwAAcAAAEhESMRITUhBLX+OfP+OgSABO37EwTtwwAAAAEAhv/rBPEFsAARAAABERQEISIkNREzERQWMzI2NREE8f7J/vz//s/zqZSZrwWw/DD3/v/2A9D8MJyXl5wD0AABABoAAAUQBbAACQAAARczNwEhASMBIQJ4HAMbAVsBA/355/34AQQBfW1rBDX6UAWwAAAAAQBEAAAGuwWwABMAAAE1MzUBMwEVPwETMwEjASMBIwEzAgMDARnAARwDAc7u/r7c/uQD/uTc/r7uAYQCAQQp+9QDAQUEKfpQBBz75AWwAAABAC8AAATqBbAACwAACQEhCQEhCQEhCQEhAoYBNAEf/kEB0P7d/sP+xP7hAcn+QQEdA5YCGv0u/SICI/3dAt4C0gAAAAEAEwAABO8FsAAIAAAJASEBESMRASECgAFgAQ/+B/L+DwEPAuwCxPxN/gMCDAOkAAEAWAAABHEFsAAJAAAlIRUhNQEhNSEVAXkC+PvnAtv9KwP6wsKYBFXDkgAAAQCE/rwCHAaOAAcAAAEjETMVIREhAhylpf5oAZgF0PmpvQfSAAAAAAEAFf+DA2EFsAADAAATMwEjFewCYOwFsPnTAAABAAz+vAGmBo4ABwAAEyERITUzESMMAZr+ZqenBo74Lr0GVwABADUC2QM1BbAACQAAASMBMwEjAycjBwEDzgErqwEqzaUNBA0C2QLX/SkBnTw8AAABAAP/QQOYAAAAAwAABSE1IQOY/GsDlb+/AAAAAQBKBLwCFwXGAAMAAAEjASECF8T+9wEUBLwBCgAAAAACAF7/7AQBBE4AHwAqAAAhLgEnDgEjIiY1NDY7ATU0JiMiBhUjNDYzMhYVERQWFyUyNjc1IyIGFRQWAwsLDwQ3nGKns/TlsWRgWGTz9cnB5xEV/exUhSK1bXVOIkQkRlirmqCsX1ZfT0CIxL23/h9FeDyvSDa4Z0k/RwAAAgCA/+wENgYYABIAIAAAARQCIyImJwcjETMRFz4BMzISESM0JiMiBgcRHgEzMjY1BDbZzWaRMxTS8wMxiV7P2fNxgVJsICFtUoFvAfny/uVPT4oGGP2sAURH/sn+963MR0H+N0BErZoAAAAAAQBR/+wD9wROABsAACUyNjUzFAQjIgI9ATQSMzIWFSM0JiMiBh0BFBYCO1t85f7/uPT5+fPH8+V1Yotsaq5nUaDaAS7xI/ABMOG3W3rDmiOdwAAAAgBT/+wEAwYYABIAIAAAExASMzIWFzcRMxEjJw4BIyICNTMUFjMyNjcRLgEjIgYVU9rNWocyA/PSFDWPYcva83F/TmkjI2lMf3MCDgEIAThEQQECTvnohExMARzxma5APgHYPULOqwACAFn/7AP4BE8AFQAdAAAFIgA9ATQAFzISHQEhHgEzMjY3Fw4BAyIGByE1NCYCUOr+8wEL0ODk/VYKiX5kiUJHPcKiW3QSAbRnFAEo8CjxATIB/vvjj4eiLy2mNUMDn411GWmAAAAAAAEAMQAAAuAGLQAXAAAzESM1MzU0NjMyFhcHLgEjIgYdATMVIxHWpaW/syRHLRgWLx1RTNzcA4a0fra/Cwq8BAZYVn60/HoAAAIAVP5MBAgETgAeACwAABMQEjMyFhc3MxEUBCMiJic3HgEzMjY9AScOASMiAjUzFBYzMjY3ES4BIyIGFVTezWKPNBTQ/wDsVbdPNEOPTIR+AzKIW8ve83SAUGkhImlNgHYCDgEHATlQTYn73djzLSqwISaNf1MBQEABHfCYrz8+Ado9Qc+qAAABAH0AAAQMBhgAFAAAARc+ATMyFhURIxE0JiMiBgcRIxEzAXADNZdgsL3zZGhJbibz8wOzAUtR1Of9bQKVgnA6NfzoBhgAAAACAJAAAAGDBhgAAwAHAAAhIxEzESM1MwGD8/Pz8wQ6AQnVAAAC/7D+SwGOBhgADwATAAABERQGIyImJzceATMyNjUREyM1MwGOt6klOCEOEjEVP0bt8/MEOvuHt78ICcIFB1NcBHkBDNIAAAABAIEAAAQ1BhgADAAAASMRIxEzETMBIQkBIQHib/LyaQEPARz+nwGP/uYB2f4nBhj8hAGe/hH9tQAAAAABAJAAAAGDBhgAAwAAISMRMwGD8/MGGAABAIAAAAZ1BE4AJgAAARczPgEzMhYXPgEzMhYVESMRNCYjIgYHFBYVESMRNCYjIgYHESMRAV4NAjSda2yVJzOhcKe5815gUGkZAvNgX0tmHvMEOolMUV5iW2Xb5/10Ao2NbVJJDxYK/UMCjYdzODX85gQ6AAEAfgAABAsETgAUAAABHwE+ATMyFhURIxE0JiMiBgcRIxEBXA4CNZ5mrbnzY2lJbSXzBDqXAVJayd39WAKmfWQ+OPzvBDoAAAIAU//sBDQETgANABsAABM0ADMyAB0BFAAjIgA1MxQWMzI2PQE0JiMiBhVTAQTr7QEF/vzs7f7883qEgnx8hIJ6Aif2ATH+0PcV+P7SAS74osLDoRWexsaeAAAAAgCA/mAENAROABIAIAAAARQCIyImJwcRIxEzFz4BMzISESM0JiMiBgcRHgEzMjY1BDTayl6KMgPz2RA0j2HM2/J6f01pICBoUH94Afnx/uQ/PwH99wXagkpM/sj++KnQQDv+Fzo7s5gAAAAAAgBT/mAD/AROABIAIAAAExASMzIWFzczESMRJw4BIyICNTMUFjMyNjcRLgEjIgYVU9rNXos0E9LzAzGEWcva83F/S2YiI2VJf3MCDgEIAThJSH36JgIDATw8ARzxmbI6OAH4NzzRrAABAIAAAALDBE4AEAAAASciBgcRIxEzFzM+ATMyFhcCpnNIXhrz3g8DKX5VGDAPA1wEOjf9EQQ6mFFbBwUAAAAAAQBR/+wDzwROACUAAAE0JicuATU0NjMyFhUjNCYjIgYVFBYXHgEVFAYjIiY1Mx4BMzI2AuBdhsbD47/K5/JkW1paVIjQwe3J1/HrBH5eYGQBJjlIHSqUhIu9wZhEX046OkEbK5WHlbLWk2BTRgAAAAEAGf/sAnAFQQAXAAABETMVIxEUFjMyNjcXDgEjIiY1ESM1MxEBocPDMSsZLBQaIV4xg4+VlQVB/vm0/apFNgcGshAUmasCVrQBBwABAHv/7AQKBDoAFAAAJScOASMiJjURMxEUFjMyNjcRMxEjAyICNJhnssDyWl9ZdSPz2JABUVTY7wKH/XeRbj48Aw77xgAAAAABACAAAAP1BDoACQAAARczNxMzASMBMwH4FAMU1/v+gNP+fvsBbl9fAsz7xgQ6AAABACUAAAXQBDoAFQAAARczNxMzExczNxMzASMDJyMHAyMBMwGzCgMN1bHWDgMPnun+2MfPFwMWzsf+2OkBdkhGAsb9OlNaAr/7xgKbaGf9ZAQ6AAABACEAAAPtBDoACwAAARMhCQEhCwEhCQEhAgTIARf+rAFe/uzR0f7qAV7+rAEUAscBc/3p/d0BfP6EAiMCFwAAAQAQ/ksD/AQ6ABUAAAEXMxMhAQ4BIyImJzceATMyNj8BASEB5xkD7wEK/kAqmpIeRSAbDi4NRUAlKP53AQkBsnEC+fsicaAMCLwBBEBVYgQtAAAAAQBVAAADxAQ6AAkAACUhFSE1ASE1IRUBggJC/JECIv3pA0rCwp8C18SaAAABADj+mAKRBj0AHgAAAS4BPQE0JiM1MjY9ATQ2NxcOAR0BFAYHHgEdARQWFwJhx6FdZGRdoccwZE9UWVlUT2T+mDjsrstqcrJybMuu6ziMIqR/y2qeLjCeaMt/pCIAAAABAK7+8gFVBbAAAwAAASMRMwFVp6f+8ga+AAAAAQAb/pgCdQY9AB4AABc+AT0BNDY3LgE9ATQmJzceAR0BFBYzFSIGHQEUBgcbY1FXX19XUWMwxqJcZmZcosbbIqR/y2udLSyebct/pCKMOOqvy2xysnJqy6/rOAABAHUBgwTcAy8AGQAAARQGIyImJy4BIyIGFSc0NjMyFhceATMyNjUE3K2IWY1VOVUvPVOqqolXlFI3VDA8VQLumtE/SS4sZUoWmcpCRTAqa0wAAAACAI/+igGCBDoAAwAHAAABIxEzESM1MwGC8/Pz8/6KA8QBAesAAAAAAQBo/wsEDgUmACEAACUyNjUzFAYHFSM1JgI9ATQSNzUzFR4BFSM0JiMiBh0BFBYCUlt85caZyL/AwL/Ior3ldWKLbGquZ1GLzBvp6yMBH9Mj0QEhJOLfG9efW3rDmiOdwAAAAAEAUQAABGsFxQAhAAABFxQGByEHITUzPgE1JyM1Myc0NjMyFhUjNCYjIgYVFyEVAecFLCsC1gH8JgowLgWimwnkx9Pi82tXV2EJAYUCV3FTljvCwg2vYHnE7tPp17prY4F47sQAAAAAAgBd/+UFTwTxACMALwAAJQ4BIyImJwcnNy4BNTQ2Nyc3Fz4BMzIWFzcXBx4BFRQGBxcHARQWMzI2NTQmIyIGBD1OtmZntE2BjYcyMjc2kI2OTKxjYq5NkY6UNDcyMIuO/Hjsrq3s7K2v62s/QEA+hJCJTq9kZ7ZQk5CRODs8OZSRl0+0ZmOtTY2RAnu9/v69u/39AAEAGgAABL4FsAAWAAAJASEBIRUhFSEVIREjESE1ITUhNSEBIQJsAUMBD/5zART+nQFj/p3z/psBZf6bAR/+cQEQAzACgP02k4+S/s4BMpKPkwLKAAIAiP7yAW0FsAADAAcAABMRMxkBIxEziOXl5f7yAxv85QPIAvYAAAACAFr+JASMBcUAMQBDAAABFAYHHgEVFAQjIiQ1NxQWMzI2NTQmJy4BNTQ2Ny4BNTQkMzIEFSM0JiMiBhUUFhceASUuAScOARUUFhceARc+ATU0JgSMV1REQ/707Of+0fKofH2Jgr/34FZTREEBDuvzAQnzin+FgXbI+eD9zSpOJTg0eMY2RCE4O4UBx1+HKzOHY7PCx+MBfGxhT09XOUG1slyJLTOIY63K3dFnhGNPWFM1RLQpCxgOFVQ7Wlk4EBULFlQ6UV8AAAIApATkA3kFsAADAAcAAAEjNTMFIzUzA3ny8v4c8fEE5MzMzAAAAAADAFf/6wXiBcQAGwAnADMAAAEUBiMiJj0BNDYzMhYVIzQmIyIGHQEUFjMyNjUlEAAzMgAREAAjIgADEAAhIAAREAAhIAAEXq6hpLm6o6CwnFhcYGNjYFxX/Q8BUvr5AVL+rvn7/q96AZgBLgEsAZn+Z/7U/tL+aAJUnpzRsnew056cX1SIc3h2hlFihf7z/pwBZAENAQwBYv6e/vQBQQGq/lb+v/6+/lQBqwAAAgB0ArQDEQXFAB8AKgAAAS4BJw4BIyImNTQ2OwE1NCYjIgYVJzQ2MzIWFREUFhclMjY3NSMiBhUUFgJgCAoDIm1PeYCmpYk5O0NHraiPiZoLD/6HNGkTiExROQLCFS8aMDx4bHF2Mz9AMzAOaIGMiP7GNFYrgjkkaT8vLCwAAP//AFQAdAOFA5MAJgFy6N0ABwFyAVL/3QABAH8BdgPCAyUABQAAASMRITUhA8LI/YUDQwF2AQSrAAQAV//rBeIFxAALABcAMgA7AAATEAAhIAAREAAhIAATEAAzMgAREAAjIgABESMRITIWFRQGBx4BHQEUFhcVIy4BPQE0JiMnMzI2NTQmKwFXAZgBLgEsAZn+Z/7U/tL+aHoBUvr5AVL+rvn7/q8BvJcBGZqrPDw/NgcKmwkEQU6ej0VdTGOCAtkBQQGq/lb+v/6+/lQBqwFD/vP+nAFkAQ0BDAFi/p7+qP6vA1KDgTxZHx1qTDgqQBUQFk8rNklChjw4SjgAAAAAAQCHBRIDXgWwAAMAAAEhNSEDXv0pAtcFEp4AAAIAfwOwAosFxQALABcAABM0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBn+Zb22Xl21vmYtINTRGRjQ1SAS4cJ2dcHGXmHA2RkU3N0lJAAACAF8AAAPzBQoACwAPAAABIRUhESMRITUhETMBITUhApwBV/6p1/6aAWbXASj8vQNDA4rH/nUBi8cBgPr2xAAAAQBtApsC1wXHABgAAAEhNQE+ATU0JiMiBhUjNDYzMhYVFAYPASEC1/2hATFCJjI3Pj++qpSOmF96iAFnApuRAQA3RCotNzsxbZGAd1Nya3QAAAAAAQBhAo8C7AXGACgAAAEyNjU0JiMiBhUjNDYzMhYVFAYHHgEVFAYjIiY1MxQWMzI2NTQmKwE1AaJCPEA/Nj6/q4WYqUY+R0qxmIq4v0Q+QkpFR3sEczQxKDQsImh4dXA4WRoYXkVyenh3LDIzLjk2gwAAAAABAHgEvAJMBcYAAwAAASEBIwE3ARX+6b0Fxv72AAAAAAEAkv5gBB8EOgAVAAABERQWMzI2NxEzESMnDgEjIiYnESMRAYRiY1lsHvPfBy50TT9gJ/IEOv2UqnU8PQMS+8ZWNjUaHf4+BdoAAAABAD4AAANwBbAACgAAIREjIiY1NBIzIRECfVPu/v/tAUYCCP/V0wEB+lAAAAEAoAJSAZIDQgADAAABIzUzAZLy8gJS8AAAAAABAG3+QQHJAAMADwAAJQceARUUBiMnMjY1NCYnNwE+C0FVpqEHP0pDVCADNgtRUWh3iSwtLSMFiwAAAAABAGQCmQGjBcUABQAAASMRIzUlAaPAfwE/ApkCf5YXAAIAdwKzAywFxQANABsAABM0NjMyFh0BFAYjIiY1MxQWMzI2PQE0JiMiBhV3uaGiubmgorqvVldUVldVVVYEdpe4uJd1mLa2mFdlZVd1VGdnVAAA//8AXACXA5kDtgAmAXMIAAAHAXMBfgAA//8AmwAABccFxAAnAckARAKYACcBdAD8AAgABwGXAqIAAAAA//8AkwAABdkFxAAnAXQBAQAIACcByQA8ApgABwHKAwQAAAAA//8AZgAABoMFxwAnAXQBwgAIACcBlwNeAAAABwHLAAYCmwAAAAIAYP52A9gEOgAZAB0AAAEOAQcOARUUFjMyNjczDgEjIiY1NDY3PgE1AzMVIwKsAj1wUlhmZVNyAvMD88TY5pBzOR4E+PgCnZN1XlGFVWNpWlu6xdLAgdZbMlhZAZ3pAAL/9gAAB1cFsAAPABMAACkBAyEDIQEhFSETIRUhEyEBIQMnB1f8fg/+Crj+3gNDA+D9ehECJP3kFAKX+u0BeRsDAVT+rAWwxf5oxf42AWcCggEAAAEATQDWA+wEhgALAAATCQE3CQEXCQEHCQFNATz+xJQBOwE8lP7EATyU/sT+xQFsAUIBQpb+vgFClv6+/r6WAUH+vwAAAwBp/6EFEAXuABkAJAAvAAABEAAhIiYnByM3LgE1ERAAITIWFzczBx4BFQEUFhcBLgEjIgYVITQmJwEeATMyNjUFEP61/vFVkkFYlIVdYQFCAQphpklRlIJSVvxLISIB+i9wRKO3AsIZGf4NKF44qb4CVf7z/qMmJpbiV+2OAQYBCwFfMS+J3Ffegv76TYM2A1woKuq2PnAy/K8dHeu4AAIAlAAABH4FsAAMABUAAAERMzIEFRQEKwERIxETETMyNjU0JiMBh/b3AQr+9vf28/P2ioSEigWw/ujvx8ju/tQFsP4l/hqJaGqLAAABAIj/7ASbBh8AJwAAISMRNDYzMhYVFAYVFAAVFAYjIiYnNx4BMzI2NTQANTQ2NTQmIyIGFQF68vLOrdh2AUTWyVGoKDEsdkBfXP67fl5AXW0EReX1tLB0yz9F/uiNt7AjG8QaJlFITQERlFbPTVFgkocAAAMANP/rBoQETgAsADcAPwAABSImJw4BIyImNTQ2OwE1NCYjIgYVJzQ2MzIWFz4BMzISHQEhHgEzMjY3Fw4BJTI2NzUjIgYVFBYBIgYHITU0JgTmh8hEPdGYuMHt685bWF5q8u/Nbqc5QKVm2uj9UAiKjmR6U0k6xvxuRZApzG94WQNCanMOAb1kFVdVS2GwnaGpR11lWUITk7hBQUBC/v7ojYufLS+lLku5SDK9YEdCTgLnjnsebH8AAAAAAgA8/+sETgXtACEAMQAAARYSHQEQACMiADU0ADMyFhc3LgEnByc3LgEnNx4BFzM3FwM0JjUuASMiBhUUFjMyNjUDcWty/tjl6P7jAQ3iUIs4AxdQOfxO2CNIJ0tRj0IB2k7YASSOaICRlIJ/lwUDef7ExVf++v6/ARXU5wESNS4CWY86jm16FCENxBVFMXtt/RsDDwQxP7KLe6zYrQAAAAMAQwCqBDcEtgADAAcACwAAASE1ISUjNTMRIzUzBDf8DAP0/oHz8/PzAkbUv9379N0AAAADAFP/dgQ0BLwAGQAkAC8AABM0ADMyFhc3MwceAR0BFAAjIiYnByM3LgE1MxQWFwEuASMiBhUhNCYnAR4BMzI2NVMBBOs2YS5IkGhdYP787DFZKkiQZmVm8x0gASoYNR6CegH8Ghr+2xMtG4J8Aif2ATETEZLTS+WSFfj+0g8Ok89J65lPgDACYAsNxp5Gdy/9qwkHw6EAAAIAh/5gBDsGGAATACEAAAEUAiMiJicHESMRMxEXPgEzMhIRIzQmIyIGBxEeATMyNjUEO9rKXooyA/PzAzGKXMzb8np/TWkgIGhQf3gB+fH+5D8/Af33B7j9sgFBRP7I/vip0EA7/hc6O7OYAAIAGAAABZYFsAATABcAAAEzFSMRIxEhESMRIzUzETMRIREzASE1IQUPh4fy/XTzhobzAozy/IICjP10BKSi+/4Cbf2TBAKiAQz+9AEM/YDSAAAAAAEAjwAAAYIEOgADAAAhIxEzAYLz8wQ6AAEAjgAABGsEOgAMAAABIxEjETMRMwEhCQEhAe9v8vJVAVABLP5cAb7+ywGs/lQEOv5QAbD9+v3MAAAAAAEAGwAABCAFsAANAAABJRUFESEVIREHNTcRMwGDAQL+/gKd/HB1dfMDYU64Tv4ZwgJfI7gjApkAAQAbAAACKAYYAAsAAAE3FQcRIxEHNTcRMwGXkZHziYnzA3s0uDT9PQJtMbgxAvMAAQCT/ksFBAWwABgAAAERFAYjIiYnNx4BMzI2PQEBBxEjETMBNxEFBLipJTkhDhE8FjxA/XgD8/MCiAMFsPoRtsAICb8FCF1WPwQdAfvkBbD74wEEHAAAAAEAfv5LBAYETgAgAAABHwE+ATMyFhURFAYjIiYnNx4BMzI2NRE0JiMiBgcRIxEBXA0DNZtkrbm4qSQ6IQ4SOxY8QGBmTGwk8wQ6kQFPV8vi/SC2wAgJxgUHVlUC3oBoNTL84AQ6AAAAAgBl/+sHVgXFABcAJQAAKQEOASMgABkBEAAhMhYXIRUhESEVIREhBTI2NxEuASMiBhURFBYHVvx1XX9E/vf+wwE7AQlGjFADhP0kAn39gwLj+1U3aTU7ZzWjr7EKCwFGAQ8BMAEOAUcMCcP+ZcP+MxQICAQ0BwnJx/7OyMoAAAADAFv/6wbyBE4AIQAvADcAABM0ADMyFhc+ATMyEh0BIR4BMzI2NxcOASMiJicOASMiADUzFBYzMjY9ATQmIyIGFQEiBgchNTQmWwED7H6/QkK1buDk/VYKiX5kikFPQMSIfsFEQr587f788nuEgnt8g4J7A+FbdBIBtWgCJ/cBMFtWVlv+++OPh6MvLp84SFlVVVkBL/iiw8ShFZ7Gxp4BZI50GWiBAAABAIsAAAKVBi0ADwAAMxE0NjMyFhcHLgEjIgYVEYu/syRHLRkXKRxRUgS4tr8LCrkFBlxW+0gAAAH/3f5LAtMGLQAjAAABIxEUBiMiJic3HgEzMjY1ESM1MzU0NjMyFhcHLgEjIgYdATMChMm3qSU5IA8ROhY7QKWlwLMkRi4ZFDEcUU3JA4b8O7e/CAm/BQhdVgPFtH62vwsKvAQGWFZ+AAAAAAIAZv/rBa8GLgAXACUAAAEQACEgABkBEAAhMhYXPgE1MxQGBx4BFSc0JiMiBhURFBYzMjY1BQ3+tf7x/vb+vQFCAQqB1FNTRrx2eiYo88Coo7e4o6m+AlX+8/6jAV4BDAEGAQsBX1dRDYZ+p8slSJ1XArXr6rb++Ljr67gAAAAAAgBS/+wEvASpABcAJQAAEzQAMzIWFz4BNTMUBgceAR0BFAAjIgA1MxQWMzI2PQE0JiMiBhVSAQTrc7NCQCuoXmkeIP787O3+/PN6hIJ8fISCegIn9gExTUgTcmuQriJCj1EV+P7SAS74osLDoRWexsaeAAABAIb/6wZLBhAAGQAAARU+ATUzFAYHERQEISIkNREzERQWMzI2NREE8V1BvKC6/sn+/P/+z/OplJmvBbDNFo6J0eAV/Zb3/v/2A9D8MJyXl5wD0AABAHv/7AUpBJQAHAAAARQGBxEjLwEOASMiJjURMxEUFjMyNjcRMxU+ATUFKX6h2BACNJhnssDyWl9ZdSPzVDAElKunDvzMkAFRVNjvAof9d5FuPjwDDosNZXMAAAH/tf5LAZMEOgAPAAABERQGIyImJzceATMyNjURAZO3qSQ5IQ8SORY7QQQ6+4e3vwgJvwUIXVYEeQAAAAIAWf/sA/gEUAAVAB0AAAEyAB0BFAAnIgI9ASEuASMiBgcnPgETMjY3IRUUFgIA6gEO/vTP4eMCqgyJfGWJQU8/xaVZdBT+S2cEUP7W8Cjy/tABAQPkj4akMC2fN0r8X4x2GWmAAAAAAQCbBOQDPAXuAAgAAAEVIycHIzUlMwM8vJaVugEIjwT8GJKSGvAAAAEAeQTkAy0F8QAIAAABNzMVBSMlNTMB0ovQ/vSd/vXOBWKPEfz6EwABAHUElQL7BbAADQAAARQGIyImNTMUFjMyNjUC+62Wl6y2Q0pJQwWwgpmZgj9MTD8AAAAAAQCaBNcBnQW2AAMAAAEhNSEBnf79AQME198AAAIAggRUAiYF3AALABcAABM0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBoJ6Wlh4d1lbeW46LCs3NyssOgUWVnBwVldra1csOTgtLjo7AAABACn+UgGhADwAEwAAIQ4BFRQWMzI2NxcOASMiJjU0NjcBjFBRICcaKhYVIU03XnV6hjNcOCEjDQqOExlpYFWROwAAAAEAgATWA1EF9wATAAABFAYjIiYjIgYVJzQ2MzIWMzI2NQNRdlxJojQoNYN1XDqwNSc3BdBhhFlALiNgiVk/LwACAHoE5AObBe4AAwAHAAABIQEjAzMDIwKbAQD+1cpu8vW7Be7+9gEK/vYAAAIAq/5+Afr/uAALABcAABc0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBqthSUZfXkdKYGUnHhsmJhseJ+dGWVlGRVZWRR0mJxwfJycAAAAB/NsEs/4qBf0AAwAAASMDM/4qmbbQBLMBSgAAAf02BLb+hgYBAAMAAAEzAyP9uM6+kgYB/rUA///8eQTW/0oF9wAHAKD7+QAAAAAAAf0+BOb+mQZ/AA8AAAEnPgE1NCYjNzIWFRQGBxX9UQdNPU5IB6mrVUEE5pIEHSMnIXtlW0VHCEUAAAAAAvwMBOT/NAXuAAMABwAAASMBIQEjAzP+B9D+1QEGAiLD9foE5AEK/vYBCgAB/SL+pf4w/4QAAwAAASE1If4w/vIBDv6l3wAAAQDXBPYCDQZwAAMAAAEzAyMBG/LAdgZw/oYAAAMAnQTkA44GpAADAAcACwAAASM1MwUjNTM3MwMjA47a2v3p2tp4+JWSBOTMzMz0/tcAAP//AKACUgGSA0ICBgB2AAAAAQCfAAAENwWwAAUAAAEhESMRIQQ3/VvzA5gE7fsTBbAAAAAAAgAaAAAFmAWwAAMABgAAATMBISUhAQJz5wI++oIBSALy/pAFsPpQwgPOAAADAGb/6wUNBcUAAwARAB8AAAEhNSEFEAAhIAAZARAAISAAESc0JiMiBhURFBYzMjY1A6P+QAHAAWr+tf7x/vb+vQFCAQoBDwFM88Coo7e4o6m+AnnD5/7z/qMBXgEMAQYBCwFf/qH+9QK16+q2/vi46+u4AAEAIwAABREFsAAHAAABIwEjATMBIwKbA/6G+wID5wIE/AR0+4wFsPpQAAAAAwBwAAAELQWwAAMABwALAAA3IRUhEyEVIQMhFSFwA738Q2AC9/0JVgOa/GbCwgNMvwMjwwAAAAABAJ8AAAURBbAABwAAISMRIREjESEFEfL9c/MEcgTt+xMFsAABAEcAAARMBbAADAAACQEhFSE1CQE1IRUhAQMW/m0Cyfv7Ac7+MgPf/V4BkgLP/fTDmAJBAj+Yw/32AAADAEsAAAWjBbAAEQAYAB8AAAEWABUUAAcVIzUmADU0ADc1MwEUFhcRDgEFNCYnET4BA3H5ATn+x/ny/P7IATj88v3JqJ2dqAN5p5uaqAT+BP7S+vr+1AKqqgEBK/r7ATADsv0gprQBAr4CuKeotgP9QgG2AAEASAAABVEFsAAXAAABPgE1ETMREAAHESMRJgAZATMRFBYXETMDQoqS8/7m9fLz/uvykYXyAjgXwakB9/4J/v7+1Rn+jQFyGAErAQQB9/4JpsEZA3cAAAABAGwAAATaBcUAJAAAJTYSPQE0JiMiBh0BFBIXFSE1MzcmAj0BEAAhIAARFRQCBzMVIQLfeYGilZWghHz+DOcBcoMBNQEBAQEBN4Vy8f4LyB0BDPhp1tjY1mn5/vQcyMQDXgEho2cBHAFZ/qf+5Gek/uBhxAAAAAACAFb/6wR5BE4AHAArAAABERQWMzI2NxcOASMiJicOASMiAj0BEBIzMhYXNwEUFjMyNjc1ES4BIyIGFQP9JSQHDgYYHzomUmsaM5Bky9vbzV6KNBP+HHF/TGQiImRKf3MEOf0KTzsCArQRDU1UUVABHfEVAQgBOE1Lg/3AmbNGQw0BukVJ0awAAgCW/ncEagXEABQAKgAAATIWFRQGBx4BFRQGIyImJxEjETQkEzI2NTQmIyIGFREeATMyNjU0JisBNQJp0fBhWnqB8tFQkj3yAQ3CbmRrY2N+KnxPdoR3bHkFxNK4YJoxLbqD1eQoK/44Bai37v2ZbWdXeX5k/OEoKodvbpK5AAABACD+XwP1BDoACwAAATMBESMRATMTFzM3Avr7/o/z/o/73RQDFAQ6+/D+NQHQBAv9NF9fAAAAAAIAVP/sBDgGIAAhAC8AABM0NjMyFhcHLgEjIgYVFBYXFhIdARQAIyIAPQE0Nj8BLgETFBYzMjY9ATQmJyIGFdDRwEyYUiw6h0ZQWFBv5Nn++uru/vqyiQReZXZ/g39/jHKBgQTqk6MsKKMWIj00KlAmUf7s0xTw/tgBJO4UqvMjCymI/X2cwsKcFHjKGMOXAAEAYP/sBAwETQAoAAATNDY3LgE1NDYzMhYVIzQmIyIGFRQWOwEVIyIGFRQWMzI2NTMUBCMiJGBmZVlf9NbA/vJ4W2hoYmfHx25ud2xofPL+8cDW/vkBMlx9IiR3SpmisJY9TlI6QEetSE5AVlpBqqusAAAAAQBh/n4DygWwACAAAAEVAQ4BFRQWHwEeARUOAQcnPgE1NCYvAS4BNTQSNxMhNQPK/qN6ZURRbJt5AX5NfTAtPUlSs5CGkOv9xAWwkf5bjsqLXlkTIC5RcU61PGU2UyQjMBIVL6iejQEoqwEOwwAAAAEAfv5hBAYETgAUAAABHwE+ATMyFhURIxE0JiMiBgcRIxEBXA0DNZtkr7fzYWVMbCTzBDqRAU9Xxej7wAQ+gWs3M/zfBDoAAAMAc//rBC4FxQANABYAHwAAARACIyICGQEQEjMyEhEDIRUUFjMyNjUBITU0JiMiBhUELvvh4f784eH98/4rd3V1dP4rAdV2dXV1AjH+3v7cASUBIQFNASEBJv7a/t/+/Gy4qai5ASprtqmptgAAAAABAKn/6wJ+BDkADwAAAREUFjMyNjcXDgEjIiY1EQGcMC4bKRomL1Y3i44EOfzvRDILC7EZE5qqAwoAAAABABb/7gRKBfQAIQAAKQEBJy4BIyIGByc+ATMyFhcBHgEzOgE3Fw4BIyImJwMjBwEf/vcBgVYWOCsRGAsDGFUhZ2sfAbAULCMMEAcEFDAab3YtzwMXBA7IMSoBAbUGCk5V+8QxLQHABAZYfAIkZwAAAQBk/nYD1AXEADEAAAEuASMiBhUUFjsBFSMiBhUUFh8BHgEVDgEHJz4BNTQmLwEuATU0Njc1LgE1NCQzMhYXA4NKYDeDf4OQko+wr4tyapSCAn9MfTQpO0su7uGck293AQHkUoc9BNsTEVpIWGDGjJFvgBgYIlpzTrY6ZDpJLSkqEQszvtaRwS8DJ41hrb4XFAAAAAEAT//rBOoEOgAXAAABIxEUFjMyNjcXDgEjIiY1ESERIxEjNSEEj4cwLhspGiYvVjeLjv628ooEQAN9/atEMgsLsRkTmqoCTvyDA329AAAAAgCA/mAEMQROAA8AHQAAARQCIyImJxEjETQAMzISESM0JiMiBhURHgEzMjY1BDHYyV2LNfMBAtTp8vNxfXBtIGhQfnUB+fL+5Ts8/f0D3/YBGf7K/vat0MuN/vA6O7KZAAAAAAEAUv6KA+kETgAhAAABMhYVIzQmIyIGHQEUFhceARcOAQcnPgE1NCYnLgE9ATQSAjjG6+RnZn91j5+lfgMBfU1/NCk8RvLl/QRO1sJed8mUI4WZLDBVc062O2U6Si0oKw8699gj7QEzAAAAAAIAUv/sBH0EOgARAB8AAAEhBx4BHQEUACMiAD0BNAAzIQEUFjMyNj0BNCYjIgYVBH3++wFVYf785e3++wEE7AI7/Mh6hX54eX+DegN2A0S/chXb/t4BLvgV7gEl/diiwsOhFZW6upUAAQBA/+sD7QQ6ABMAAAEhERQWMzI2NxcOASMiJjURITUhA+3+lTAuGykaJi9WN4uO/rEDrQN5/a9EMgsLsRkTmqoCSsEAAAAAAQCA/+sECAQ6ABUAAAERFBYzMjY1LgEnMx4BFRACIyImNREBclVMeIoDOjTxND/098nUBDr9bYZ07J1/+4pq/pz+/P651+cCkQAAAAIARP4iBYUEQQAZACMAAAUkADU0EjcXDgEHFBYXETQ2MzIAFRQABREjEz4BNS4BIyIGFQJl/uD+/3t2mExHA4yim3/qARz++P7b8/OmlAOGeh4ZDh8BQvGkAQNVkkm7ZpjUIAKEdZD+x+Hl/ssc/jEClB3IjJTCIhcAAAABAE/+IgV+BDoAGwAAARE+ATUuASczHgEVFAAFESMRJAAZATMRFBYXEQNSpZUDPTXuN0L++/7Z8/7+/vLzlYgEOvx9H9aYfPSGaPeX9f69HP4yAdAeASUBHAHp/hW6wRwDggAAAQBm/+sGLQQ6ACgAAAEOAQcUFjMyNjURMxEUFjMyNjUuASczHgEVEAIjIiYnDgEjIgIRNDY3AeVCSANXYldk+2RXYlcESEDxQE3C3nSiLi+gc+DBTEEEOof8gbDZkKMBRf67o5DYsYD9h2r+nP70/sFvb29vAT8BDJz+agAAAAACAHX/7AThBcQAGQAkAAAlMjY3LgE9ATQ2MzIWFREQACEgABkBNxEUFhMUFhcRNCYjIgYVAqmVpgTJ9rubp7v+zP78/wD+zPqm8nVsODk0PLbHtgzvuVu0zs28/gT+7f7AAU0BBgKlAv1ZsdgDL2WECwFZVlJUVAAB/+4AAASFBcIAIwAAAT4BMzIWFwcuASMiBgcBESMRAS4BIyIGByc+ATMyFhcTFzM3AvI5hWogMxgYBBsNIzcR/tvy/twSNiIPGgMXFzEiaoQ5pRMEEwTEjnAJDMACAysn/W398wISAo4nKwMCwAwJbY7+d1VVAAACADP/6wZUBDoAFgAsAAABIx4BFRACIyImJw4BIyICETQ2NyM1IQEuASchDgEHFBYzMjY9ATMVFBYzMjYGVIAaHbbQeKUtLqV30LUbG28GIf7FAyAe/MYeIAJKVFpp+mdbU0sDg02jXf70/sFxcnJxAT8BDF2kTLf9/FOjV1ekUrDZkKPi4qOQ2AAAAAEAJP/xBbsFsAAbAAABIRE+ATMyBBUUBiEnMjY1LgEjIgYHESMRITUhBJH+D06EOPwBFf/+9QGgeAGPjkKFQ/P+dwRtBO3+ZhMY6d/U8bqIfH2HEBD9bQTtwwAAAQBy/+wE1gXGAB8AAAEGACMgABkBEAAhIAAXIy4BIyIGHQEhFSEVFBYzMjY3BNUW/uX9/v3+zgE1AQABAgEVGPMTj5qYqwIB/f+pmpeREwHZ5v75AVEBEQEVAQ8BVP798JiY6LYmwy6555SXAAAAAAIALgAACEMFsAAWAB8AAAERITIEFRQEIyERIREQAiEjNTMyEhkBAREhMjY1NCYjBQoBNPUBEP7w9f3Z/kDs/vMwKJh3A6UBNImKiYoFsP3r/dHR/ATt/iD+Xf6WwgEDAUgCo/0o/eqac3GYAAIAnwAACEoFsAASABsAAAEhETMRITIEFRQEIyERIREjETMBESEyNjU0JiMBkgKM8wE09gEP/vH2/dn9dPPzA38BNIqJiYoDRAJs/cnwycz0AoH9fwWw/Qb+FIttaooAAAEANQAABcsFsAAXAAABIRE+ATMgBBURIxE0JiMiBgcRIxEhNSEEmP4LQ4xPAQEBCfKClkeQR/P+hQRjBO3+jw4P2vX+NgHKmnEQDv1JBO3DAAAAAAEAmf6YBQsFsAALAAATMxEhETMRIREjESGZ8wKM8/5K8/43BbD7EgTu+lD+mAFoAAIAlAAABMEFsAAMABUAAAEhESEyBBUUBCMhESEBESEyNjU0JiMELP1bATT4AQ7+8ff92QOY/VsBNIqJiIsE7f6Q7M7Q8wWw/Qr+CJFybocAAgAm/pkF2wWwAA4AFQAAASMRIREjAzM2EhsBIREzAQYCByERIQXR6fwx7Ad3T3gIJQOPu/yGCVtLAnv+S/6aAWb+mQIpTgEtAR8CVPsSApro/r5wBCsAAAEAGAAAB4kFsAAVAAABIxEjESMBIQkBIQEzETMRMwEhCQEhBPCi8qn+k/7SAdf+SgEkAWGe8pgBXgEk/k0B1P7SAnv9hQJ7/YUDBwKp/ZwCZP2cAmT9WPz4AAAAAQBK/+sEewXFACgAAAEyNjU0JiMiBhUjNCQzMgQVFAYHHgEVFAQjIiQ1MxQWMzI2NTQmKwE1AmiKgI2NcpTzASDZ+AEVeG58gP7V+Nr+zPOcf5CgjpKqA0dza2F8d1673dTMZqMwLKl/zeDU1WSDgWl9csEAAAAAAQCaAAAFCwWwAAsAAAEzESMRIwEjETMRMwQY8/MD/Xjz8wMFsPpQBBj76AWw++kAAQAuAAAFCgWwAA8AAAERIxEhAwoBKwE1Mz4BGwEFCvP+OREPzvY+KIliDBgFsPpQBO3+IP5W/p3CBfYBUAKjAAEAP//rBNkFsAAVAAABFzMBIQEOASMiJic3HgEzMjY/AQEhAmgzAwEvAQz+Cj6WnxlCDAIKPBFMRCAf/g4BCgMekgMk+1KMiwQCwAICRkpFBC4AAAMAT//EBhkF7AAVAB4AJwAAATMgABEQACEjFSM1IyAAERAAITM1MwEiBhUUFjsBETMRMzI2NTQmIwOvDwELAVD+r/72D/MT/vX+sQFPAQsT8/76r7u6sBPzEa28u64FJv66/vL+9P69v78BQQEMAQ8BR8b+cM6+u8gDD/zxyru9zQAAAAEAmf6hBbYFsAALAAATMxEhETMRMwMjESGZ8wKM86sU3fvUBbD7EgTu+xX93AFfAAEAjwAABOkFsAATAAABESMRDgEjICQ1ETMRFBYzMjY3EQTp81CrYf7+/vfzgZdVs1QFsPpQAkEWFdr1Acv+NZtwFhYCqgAAAAEAngAABvwFsAALAAABESERMxEhETMRIREBkQHF8gHB8/miBbD7EgTu+xIE7vpQBbAAAAABAJ7+oQetBbAADwAAAREhETMRIREzETMDIxEhEQGRAcXyAcHzsRTd+eIFsPsSBO77EgTu+xP93gFfBbAAAAAAAgAYAAAF0wWwAAwAFQAAEyERITIEFRQEIyERIQERITI2NTQmIxgCgQE0+AEO/vH3/dn+cgKBATSKiYiLBbD9zezO0PME7f3N/giRcm6HAAADAJ8AAAZZBbAACgAOABcAAAEhMgQVFAQjIREzASMRMwERITI2NTQmIwGSATT4AQ7+8ff92fMEx/Pz+zkBNIqJiIsDfezO0PMFsPpQBbD9Cv4IkXJuhwAAAgCUAAAEwQWwAAoAEwAAASEyBBUUBCMhETMZASEyNjU0JiMBhwE0+AEO/vH3/dnzATSKiYiLA33sztDzBbD9Cv4IkXJuhwAAAQCI/+wE1wXGAB8AABM0ADMyABkBEAAjIAA1MxQWMzI2PQEhNSE1NCYjIgYViAEj//4BL/7R/v79/uHyl5mVpP3zAg2klZiXA9TkAQ7+rf7w/uv+7/6vAQHulZjmuCnDK7jompUAAAACAKr/6wcABcUAFQAjAAABEAAhIAARNSMRIxEzETM1EAAhIAARJzQmIyIGFREUFjMyNjUHAP61/vH+9v69vPPzvAFCAQoBDwFM88Coo7e4o6m+AlX+8/6jAV4BDAj9owWw/XE6AQsBX/6h/vUCtevqtv74uOvruAACAC0AAARiBbAADQAWAAApAQEuATU0JDMhESMRIQEjIgYVFBY7AQEx/vwBSIOBARL7AeTz/t4BIvGPjI2O8QJsOsGO2eL6UAIlAsiFfICKAAIAW//rBDwGEwAbACkAAAEyEh0BFAAjIgA9ARAANz4BNTMUBgcOAQcXPgEXIgYdARQWMzI2PQE0JgJz2fD+/Ozt/vwBBuN6ZsS0znOfIwNFnzKCenqEgnx9A/7+7d8V7f7hASTvZwFlAY0sFzZDxXojFI+GAjhAw6mGFZW1tZUVhqkAAAMAjwAABDoEOgAPABgAIQAAMxEhMhYVFAYHFR4BFRQGIwERITI2NTQmIyUzMjY1NCYrAY8Bt9vrXFduc9zS/vYBCmBbWmH+9shqZWhrxAQ6lJhNdB8DGIRam5oBzf7zQ0NBRq48PkRAAAAAAAEAhQAAA00EOgAFAAABIREjESEDTf4q8gLIA3b8igQ6AAAAAAIAJ/6+BMUEOgAOABUAADc+ATcTIREzESMRIREjEwEOAQchESGBXE0LCwLvlvL9SvYBAgAJRjwBoP7ww2bHyQGB/Ij9/AFC/r4CBQH2rPNYAqcAAAEAFwAABl8EOgAVAAABIxEjESMDIQkBIRMzETMRMxMhCQEhBDSA84D2/swBb/6rASzycvNz8gEt/qoBb/7LAbP+TQGz/k0CQQH5/lcBqf5XAan+B/2/AAABAE3/7APEBE0AKAAAARQGBx4BFRQGIyIkNTMUFjMyNjU0JisBNTMyNjU0JiMiBhUjNDYzMhYDsFZQXF7yy7j+/vJwYGBiWmKurltOVFxUavLxuMveAxJKdyQhfV2bq6uqQVpVQU9Gr0RCPFBOPZawoQAAAAEAhgAABBIEOgALAAABMxEjEScBIxEzERcDIPLyA/5b8vIDBDr7xgLUAf0rBDr9LgEAAAABAI8AAARlBDoADAAAASMRIxEzETMBIQkBIQH9e/PzawErASz+eQGo/sQBrP5UBDr+UAGw/fr9zAAAAAABAB8AAAQUBDoADwAAAREjESEDCgErATczMjY3EwQU8/7QCw+m3jQBJGY+CxQEOvvGA3b+9/6y/uHNqfcBzQAAAQCPAAAFbwQ6AA4AAAkBIREjEScBIwEHESMRIQL/AUABMPMD/tml/tgD8wEyASsDD/vGAsQB/TsCyQH9OAQ6AAEAhgAABBEEOgALAAAhIxEhESMRMxEhETMEEfP+W/PzAaXzAbX+SwQ6/j0BwwAAAAEAhgAABBIEOgAHAAAhIxEhESMRIQQS8/5a8wOMA3b8igQ6AAEAIwAAA9AEOgAHAAABIREjESE1IQPQ/qHz/qUDrQN5/IcDecEAAAADAFT+YAV/BhgAHwAtADsAABMQEjMyFhcRMxE+ATMyEhEVFAIjIiYnESMRDgEjIgI1JTQmIyIGBxEeATMyNjUhFBYzMjY3ES4BIyIGFVTKwidDIPIgSS3Cy8vALUoh8h9FKMDKBDhqdBgoEhEpGnNp/LpidBclEhIlFXRkAg4BCQE3Dg4B5v4WEBD+yf73FfL+5BAO/lcBpQ0NARzyFazRBwb9OQYEs5mbsQQGAsoEBs+uAAABAIb+vwSlBDoACwAAEzMRIREzETMDIxEhhvMBpvOTFN380gQ6/IgDePyI/f0BQQABAF8AAAPgBDsAEwAAISMRDgEjIiY1ETMRFBYzMjY3ETMD4PMxYjPd6/NlcDVfMvMBaQsLytIBTP60dmILDAIMAAAAAAEAhgAABgMEOgALAAABESERMxEhETMRIREBeQFS8wFT8vqDBDr8iAN4/IgDePvGBDoAAAABAH7+vwa1BDoADwAAAREhETMRIREzETMDIxEhEQFxAVLzAVPyuhTd+roEOvyIA3j8iAN4/Ij9/QFBBDoAAAAAAgAfAAAE6gQ6AAwAFQAAATMyFhUUBiMhESE1IRkBMzI2NTQmIwJK7dDj5M/+IP7IAivtZFxcZALiyKimzAN3w/3l/qNgS0xmAAAAAAMAjwAABckEOgAKAA4AFwAAATMyFhUUBiMhETMBIxEzAREzMjY1NCYjAYLt0OPkz/4g8wRH8/P7ue1kXFxkAuLIqKbMBDr7xgQ6/eX+o2BLTGYAAAIAjwAABCIEOgAKABMAAAEzMhYVFAYjIREzGQEzMjY1NCYjAYLt0OPkz/4g8+1kXFxkAuLIqKbMBDr95f6jYEtMZgAAAQBR/+sD6AROAB0AAAEiBhUjNDYzMhIdARQCIyImNTMUFjMyNjchNSEuAQIBV3Tl/LTo///nw+7lcFxwdQv+rAFTD3MDi2hQn9z+ze0j7v7O4LdbeqKBqHyXAAACAJD/7AYvBE4AEwAhAAABMz4BMzIAHQEUACMiJicjESMRMwEUFjMyNj0BNCYjIgYVAYPRGv3S7QEF/vzs2f8Vz/PzAb56hIJ8fISCegKI0Pb+0PcV+P7S/9n+PAQ6/diiwsOhFZ7Gxp4AAAACACcAAAPfBDoADQAWAAABESMRIwMjEy4BNTQ2MwMUFjsBESMiBgPf8uPn/P9maefPw1tb7eBiYQQ6+8YBjf5zAbUqmmebv/6gQFkBOF4AAAH/4f5LBAwGGAAoAAABIRUXPgEzMhYVERQGIyImJzceATMyNjURNCYjIgYHESMRIzUzNTMVIQJw/wADNZdgsL22qSU6IQ8ROxY7QGRoSW4m85yc8wEABK77AUtR1Of9Lre/CAm/BQhcVwLUgnA6NfzoBK6qwMAAAAEAWP/sA/4ETgAdAAAlMjY1MxQEIyICPQE0EjMyFhUjNCYjIgYHIRUhHgECQlt85f7/uPT5+fPH8+V1YnxwCQFW/qsLbq5nUaDaAS7xI/ABMOG3W3qegqiAlQAAAgAfAAAGmgQ6ABYAHwAAAREzMhYVFAYjIREhERACKwE/ATI2NREBETMyNjU0JiMD+u3Q4+PQ/iD+7b7jNAEkZFkC+e1jXVxkBDr+h7+foMMDdv73/r3+1sUByN8Bzf3F/sFeR0NXAAACAIYAAAaxBDoAEgAbAAABIREzETMyFhUUBiMhESERIxEzAREzMjY1NCYjAXkBpfPt0OPj0P4g/lvz8wKY7WNdXWMCnwGb/oe/n6DDAd3+IwQ6/cX+wV9GQ1cAAAH/9QAABAwGGAAcAAABIREXPgEzMhYVESMRNCYjIgYHESMRIzUzNTMVIQKE/uwDNZdgsL3zZGhJbibziIjzARQEtf7+AUtR1Of9bQKVgnA6NfzoBLWqubkAAAAAAQCG/poEEgQ6AAsAAAERIREzESERIxEhEQF5Aabz/rXz/rIEOvyIA3j7xv6aAWYEOgAAAAEAjf/rBrIFsAAgAAABERQGIyImJw4BIyImNREzERQWMzI2NREzERQWMzI2NREGsvbOcKo2OLBxye/zaVxod/dwY2JvBbD79drgUlRUUuDaBAv79X17en4EC/v1fXt6fgQLAAABAHD/6wXtBDoAIAAAAREUBiMiJicOASMiJjURMxEUFjMyNjURMxEUFjMyNjURBe3du2KVMDSaY7fW81BKV2L0WFNOVwQ6/VHN00ZISEbSzgKv/VFybG1xAq/9UXJsbXECrwAAAv/gAAAEIQYYABIAGwAAASERMzIWFRQGIyERIzUzETMRIQERMzI2NTQmIwKj/t7t0OPj0P4grq7zASL+3u1kXF1jBDn+ytGur9UEOasBNP7M/Vz+gmpUUW8AAAABAKL/7Aa2BcYAJwAAATM1EAAhIAAXIy4BIyIGHQEhFSEVFBYzMjY3MwYAIyAAETUjESMRMwGVvQE1AQABAgEVGPMTj5qYqwHs/hSpmpeRE/MW/uX9/v3+zr3z8wNQEwEPAVT+/fCYmOi2FcQ+ueeUl+b++QFRARE+/XQFsAAAAAEAhv/sBb4ETgAjAAABMzYSMzIWFSM0JiMiBgchFSEeATMyNjUzFAQjIgInIxEjETMBeaES9+HH8+V1YnpwCgF4/ocKb3xbfOX+/7ji9xKh8/MCctcBBeG3W3qaf6uCl2dRoNoBBNf+OQQ6AAIAIAAABQ4FsAALAA8AAAEjESMRIwMjATMBIwEhAyMDhITdd5H7AgfnAgD7/dgBW6sDAaz+VAGs/lQFsPpQAmcB/wAAAgAKAAAERQQ6AAsAEQAAASMRIxEjAyMBMwEjATMDJyMHAuRdw1to9wGp5wGr9/5c+GQXBBcBF/7pARf+6QQ6+8YBxAEGXl4AAgC2AAAHJwWwABMAFwAAASEBMwEjAyMRIxEjAyMTIREjETMBIQMjAakBawEs5wIA+4+E3XeR+5j+2PPzAlsBW6sDAmcDSfpQAaz+VAGs/lQBrP5UBbD8twH/AAACAJ0AAAYYBDoAEwAZAAABMxMzASMDIxEjESMDIxMjESMRMwEzAycjBwGQ/vjnAav3al3DW2j3bbrz8wHt+GQXBBcBxAJ2+8YBF/7pARf+6QEX/ukEOv2KAQZeXgAAAAACAIQAAAZpBbAAHAAfAAABHgEVESMRNCYrAQcRIxEnIyIGFREjETQ2ITMBIQETIQR0+vvzfZBpCfICgJB88/8BAAz+hQTc/ZLy/hwDKwPS8v6cAWSVbRH9qwJjA22V/pwBZPXSAoX9hgG1AAACAIIAAAVkBDoAGgAdAAAzNTQ2NwEhAR4BHQEjNTQmKwEHESMRIyIGHQEBEyGCycr+6wP0/urCxPNmdiQB8i13ZQGFlf7Wqd3MDQHb/iQQzNmpqZBrA/5fAaRrkKkCaQEiAAAAAgCtAAAIrgWwACQAJwAAIRE0NjchESMRMxEhOwEBIQEeARURIxE0JisBBxEjEScjIgYVEQETIQLJGx7+nvPzAxAYDP6FBNz+hPr7832QaQnyAoCQfAIL8v4cAWRRfjT9mQWw/XsChf17A9Ly/pwBZJVtEf2rAmMDbZX+nAM2AbUAAAAAAgCPAAAHdwQ6ACEAJAAAITU0NjchESMRMxEhASEBHgEdASM1NCYrAQcRIxEjIgYdAQETIQKVGhz+t/PzAqT+7QP0/urCxPNmdiQB8i13ZQGFlf7WqVB8M/5YBDr+KAHY/iQQzNmpqZBrA/5fAaRrkKkCaQEiAAAAAgAp/kADqgd4AC0ANgAAATI2NTQmIyE1ITIEFRQGBxUeARUUBCsBIgYVFBYXBy4BJzQ2OwEyNjU0JisBNQE3MxUFIyU1MwGQiH5/gP7lARvmAQx5b4KH/vfgNUU9VkJRhqEBtKkzeIaWlY8BBYvQ/vSd/vXOA05vZFtuxse9caAsAyqqgM7fNjFCSx6ZKbOBjYh8Znp5xwObjxH8+hMAAAIAM/5HA4gGCwAtADYAAAEyNjU0JiMhNSEyFhUUBgcVHgEVFAYrASIGFRQWFwcuASc0NjsBMjY1NCYrATUTNzMVBSMlNTMBl3Rqb2/+5QEb1vpeV2lt880xSUBTPlJ6nwGuoTBreIGAl9eL0P70nf71zgJvS0Q8R7mdlFB2IwMhd1WbqjYxQkseki+ueYWBT0FKSakDDY8R/PoTAAMAav/rBREFxQANABYAHwAAARAAISAAGQEQACEgABEFITU0JiMiBhUFIRUUFjMyNjUFEf61/vH+9v69AUIBCgEPAUz8SwLCwKijtwLC/T64o6m+AlX+8/6jAV4BDAEGAQsBX/6h/vUxM7Xr6rbeKrjr67gAAwBS/+wEMwROAA0AFAAbAAATNAAzMgAdARQAIyIANQEyNjchHgETIgYHIS4BUgEE6+0BBf787O3+/AHxcnoO/gsNenJxeQ4B8w97Aif2ATH+0PcV+P7SAS74/pyXhISXAt2XgICXAAABABEAAATvBcMAEQAAARczNxM+ATMXByMiBgcBIwEhAlwbAxvpNJJ9LgEULzsW/pLn/gwBBAGLcG4C/aiVAdA9RPuPBbAAAAABACAAAAQYBE4AFQAAARczNxM+ATMyFhcHLgEjIgYHASMBMwHjEgQSei6SaSExGBcEGw0jOg3+9tP+kvsBblpaAb6UjgkNwAIENir84gQ6AAQAav92BREGLgADAAcAFQAjAAABIxEzEyMRMwEQACEgABkBEAAhIAARJzQmIyIGFREUFjMyNjUDIMbGAcXFAfD+tf7x/vb+vQFCAQoBDwFM88Coo7e4o6m+BIQBqvlIAbQBK/7z/qMBXgEMAQYBCwFf/qH+9QK16+q2/vi46+u4AAAAAAQAU/+IBDQEtAADAAcAFQAjAAABIxEzAyMRMyU0ADMyAB0BFAAjIgA1MxQWMzI2PQE0JiMiBhUCori4A7e3/bQBBOvtAQX+/Ozt/vzzeoSCfHyEgnoDGwGZ+tQBoP/2ATH+0PcV+P7SAS74osLDoRWexsaeAAAAAAMAjf/rBqcHRAAsAD4ARAAAATIWFREUBiMiJicOASMiJjURNDYzFSIGFREUFjMyNjURMxEUFjMyNjURNCYjExUjIiQjIgYdASM1NDYzMgQzASc3JzMVBO7J8PDJcK03Oa1vye/vyVxpaVxod+x1aVxqalxqJIT+0CoyN4Z4c0gBKnL+N1E6AboFsO/m/eTm7k9RUU/u5gIc5fDDiIr95IuHen4Bi/51fnqHiwIciogB34Z4MjQSJW9qeP5LPXCPfQAAAAADAHT/6wXRBeMALAA+AEQAAAEyFh0BFAYjIiYnDgEjIiY9ATQ2MxUiBh0BFBYzMjY9ATMVFBYzMjY9ATQmIxMVIyIkIyIGHQEjNTQ2MzIEMwUHJzcnMwQ6ud7Ws2GUMTKUX7XU3LtOVk9HUV7sXVNGUFdNvSSF/tAqMjaHeHNJASly/tmiUToBugRH3tb119xHSklI3Nf11t7Dd3r1e3ZtccbGcW13evV6dwHnhngyNBIlb2p48L49b4kAAAIAjf/rBrIHBwAHACgAAAE1IRchFSM1BREUBiMiJjURIxEUBiMiJjURIxEUFjMyNjceATMyNjURAesDVQH+prUCjW9iY3D3d2hcafPvyXGwODaqcM72BpdwcH9/5/v1fnp7fQQL+/V+ent9BAv79drgUlRUUuDaBAsAAAACAHD/6wXtBbEABwAoAAABNSEXIRUjNQERFAYjIiY1ESMRFAYjIiY1ESMRFBYzMjY3HgEzMjY1EQGXAzgF/rG1AipXTlNY9GJXSlDz1rdjmjQwlWK73QVBcHB/f/75/VFxbWxyAq/9UXFtbHICr/1RztJGSEhG080CrwAAAQBq/ooEuAXFABgAAAEjESYCNREQACEgABUjNCYjIgYVERQWOwEDMPLa+gEwAQABAQEd85OYl6enl5b+igFoIAFF9gEVARABU/797ZWY57f+6bnnAAAAAAEAXP6JA/METgAYAAABIxEmAj0BNBIzMhYVIzQmIyIGHQEUFjsBAtXzvcn+6MLv5XBcf3RzgZL+iQFqIQEk0yPtATPitlt6yZQjmMYAAAAAAQBtAAAEkwU+ABMAAAEFByUDIxMlNwUTJTcFEzMDBQclAlsBIUj+3bWv4f7fRwElyv7eSQEjuazkASVM/uABwayAqv7BAY6rgKsBaKuCqwFG/murf6oAAAH8ZgSi/zkF/QAHAAABFSc3IScXFf0XsQECIgGxBSB+Ae5sAdwAAAAB/HMFF/9tBhUAEQAAATIkMzIWHQEjNTQmIyIEKwE1/JV0AS1JdXmIODIr/s2GJAWdeGpvJRI0MniGAAAB/XsFFv5yBmAABQAAATUzBxcH/Xu9ATtSBdyElnBEAAH9pQUW/pwGYAAFAAABJzcnMxX991I7Ab0FFkRwloQACPok/sQBvwWvAA0AGwApADcARQBTAGEAbwAAATQ2MzIWFSM0JiMiBhUBNDYzMhYVIzQmIyIGFRM0NjMyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUBNDYzMhYVIzQmIyIGFQE0NjMyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUTNDYzMhYVIzQmIyIGFf0RcGJjcHAvNDIvAd5xYGJycS80MS5IcGJicXAvNDMu/stxYGJxcC80MS/9T3BiY3BwLzQyL/1NcWJjcHAvNDIv/t5xYWNwcC41Mi81cWFjcXEuNTIuBPNVZ2dVLDk5LP7rVWdnVSw5OSz+CVVnZ1UsOTks/flVZ2dVLDk5LP7kVmZmVi04OC0FGlVnZ1UsOTks/glVZ2dVLDk5LP35VWdnVSw5OSwAAAAI+k3+YwGMBcYABAAJAA4AEwAZAB4AIwAoAAAFFwMjEwMnEzMDATcFFSUFByU1BQE3JRcGBQEHBSclAycDNxMBFxMHA/5QC3pgRjoMemBGAh0NAU3+pvt1Df6zAVoDnAIBQEQl/wD88wL+wEUBJisRlEHGA2ARlELEPA7+rQFhBKIOAVL+oP4RDHxiRzsMfGJHAa4QmUQXsfyOEZlFyALkAgFGRf7V/OMC/rtHASsAAAL/4AAABCEGYgASABsAAAEhETMyFhUUBiMhESM1MzUzFSEBETMyNjU0JiMCo/7e7dDj49D+IK6u8wEi/t7tZFxdYwUF/f7Rrq/VBQWrsrL8kP6CalRRbwADAJ8AAATaBbAAAwAOABcAAAEHATcBESMRITIEFRQEIyUhMjY1NCYjIQTabv5sbv5M8wI59gEM/vT2/roBRoqFhYr+ugIjZAG/ZP5G/dgFsPXP0fPDjnFxkgAAAAMAgP5gBDQETgADABYAJAAAJQcBNyUUAiMiJicHESMRMxc+ATMyEhEjNCYjIgYHER4BMzI2NQQtb/6XbwFw2speijID89kQNI9hzNvyen9NaSAgaFB/eA1jAaFkSvH+5D8/Af33BdqCSkz+yP74qdBAO/4XOjuzmAAAAAABAJQAAAQ0BxAABwAAASERIxEhETMENP1T8wKt8wTt+xMFsAFgAAAAAQB+AAADXAV0AAcAAAEhESMRIREzA1z+FPIB6/MDdvyKBDoBOgAAAAEAn/7GBJ0FsAAVAAABIREzIAAREAIhJzI2NS4BKwERIxEhBDf9W7EBIAE6+f78AZhzAbC2sfMDmATt/lb+1f7k/vv+z7rKq8PB/YcFsAAAAQB+/uID2wQ6ABUAAAEhFTMyBBUUAgcnPgE1NCYrAREjESEDRv4qU/UBI76+VHVonIlT8gLIA3bl+umL/vAxrSiLbImQ/jkEOgAAAAEAlAAABSwFsAAUAAAJAiEBIxUjNSMRIxEzETM1MxUzAQUE/nsBrf7O/s1Do1rz81qjOwEhBbD9Wfz3AnTq6v2MBbD9lf7+AmsAAAABAI4AAASuBDoAFAAACQIhAyMVIzUjESMRMxEzNTMVMxMElP7EAVb+y9gvm1fy8lebJ88EOv3+/cgBrLKy/lQEOv5Qx8cBsAABADQAAAahBbAADgAAASMRIxEhNSERMwEhCQEhA6yo8/4jAtCLAckBIP30AjX+1wJ2/YoE7cP9lwJp/Un9BwAAAQA+AAAFqQQ6AA4AAAEjESMRITUhETMBIQkBIQNBe/P+awKIawErASz+eQGo/sQBrP5UA3bE/lABsP36/cwAAAEAnwAAB4QFsAANAAABIREhFSERIxEhESMRMwGSAowDZv2M8v108/MDMAKAw/sTAm39kwWwAAAAAQB+AAAFZwQ6AA0AAAEhESEVIREjESERIxEzAXEBpQJR/qLz/lvz8wJ3AcPE/IoBtf5LBDoAAAABAJ/+xAfvBbAAFwAAATMgABEQAiEnMjY1LgErAREjESERIxEhBRGEASABOvn+/AGYcwGwtoTy/XPzBHIDQf7V/uT++/7Pusqrw8H9iQTt+xMFsAABAH7+5Qa7BDoAFwAAATMyBBUUAgcnPgE1LgErAREjESERIxEhBAqE/wEuvr5VdGoBppOE8/5a8wOMApX66Yz+8DGuJ4xsiY/+NgN2/IoEOgAAAAACAGn/6AXMBcUAKQA3AAAFIiYnDgEjIAARNRAAMxUiBh0BFBIzMjY3JgI9ATQSMzISERUUBgceATMBFBYXPgE9ATQmIyIGFQXMcsZaS6Fa/tn+nAEI22181bwYLhhxdOW+xexhXi5kOP2NZmdSVmFdWF8YIyUjIgGEAS+2AREBYMzpurjb/vMEBGMBB6LU8QE0/sb+/9SX/GELCgIdi9VJRs6B5a6ytqMAAAAAAgBh/+sEyQROACkAOAAABSImJw4BIyIAPQE0EjMVDgEdARQWMzI2Ny4BPQE0NjMyFh0BFAYHHgEzATU0JiMiBh0BFBYXPgE1BMlhpEg9g0rv/t7VsEJJlIMIEQxIR7GZm7hCPyZRLv7pOjQ1ODw8MTISGhwdHAFB/EvRAQrKBJN4TabMAQFKum5/vOn+x35rtEgJCAGAgGqIemWEVos1MIRTAAABAC7+oQaxBbAADwAAASE1IRUhESERMxEzAyMRIQGU/poDvf6cAozzqxTd+9QE7cPD+9UE7vsV/dwBXwABACb+vwU6BDsADwAAASM1IRUjESERMxEzAyMRIQEb9QLE3AGm85MU3fzSA3fExP1LA3j8iP39AUEAAAACAIIAAATcBbAAAwAXAAABIxEzAREjEQ4BIyAkNREzERQWMzI2NxEDLqOjAa7zUKth/v7+9/OBl1WzVAEsAtsBqfpQAkEWFdr1Acv+NZtwFhYCqgACAHQAAAP1BDsAAwAXAAAlIxEzASMRDgEjIiY1ETMRFBYzMjY3ETMCjaSkAWjzMWIz3evzZXA1XzLzzAJf/NUBaQsLytIBTP60dmILDAIMAAEAigAABOQFsAATAAAzETMRPgEzIAQVESMRNCYjIgYHEYrzUKthAQEBCvOCllezUgWw/b4VF9v0/jUBy5pxGBT9VgAAAgAg/+kFwAXEAB0AJgAABSAAETUuATUzFBYXEAAXIAARFSEVFBYzMjY3Fw4BASE1NCYjIgYVA+L+yf63oKKyRUsBQfUBEQEX/JW90G6eTzE1xf3hAniPppuoFwFUASJKF86sWnIVARMBWAH+nf6/hDzD6CghvCA4A2kftdHptwAC/87/7AR2BE8AGwAjAAAFIgAnLgE1MxQWFz4BFzISHQEhHgEzMjY3Fw4BAyIGByE1NCYCzub+9AWEhaoyNiH8teDk/VYKiX5kiUJHPcKiW3QSAbRnFAEd6R68l0pjGMXsAf7744+Hoi8tpjVDA5+NdRlpgAAAAAABAJT+xATnBbAAGAAAASMRIxEzETMBIQEWEhUQAiEnMjY1LgErAQGYEfPzcwHCAST+Gu7/+f78AZh0AbG29QJ4/YgFsP2hAl/9ix7+3P7++/7Ousqsw8AAAQCO/uoEQwQ6ABYAAAEeARUUAgcnPgE1LgEnIxEjETMRMwEhAs2tvr2+VXVpAZGGrvLyVQFBAS0CYSnbtYj++S+tJoRnfn4I/lQEOv5QAbAAAAAAAQCf/ksFEAWwABcAAAERIREzERQGIyImJzceATMyNjURIREjEQGSAozyt6klOiAOETsWPEH9dPMFsP2AAoD6EbbACAm/BQhdVgKs/ZMFsAABAH7+SwQJBDoAFwAAAREhETMRFAYjIiYnNx4BMzI2NREhESMRAXEBpfO4qSQ6IQ8ROxY7Qf5b8wQ6/j0Bw/uHtsAICb8FCF1WAfT+SwQ6AAIAU//qBRsFxQAWAB4AAAEgABEVEAAlIAARNSE1NCYjIgYHJz4BEzI2NyEVFBYCcwFKAV7+q/7+/sn+xgPW0uR2p1IxN8/robgL/R6wBcX+lv7Mov7X/o4BAWEBQoQV0/8pILwfOvrx6L0fttAAAAABAF3/6wRGBbAAGgAAARcBHgEVFAQjIiQ1MxQWMzI2NTQmKwE1ASE1BBsB/n/Q2/7o6cz+5POGb3+PlJmOAWr9kAWwm/5FGOPHzeDU1WSDgWmVhasBkcMAAQBd/nUERgQ6ABoAAAEhNSEXAR4BFRQEIyIkNTMUFjMyNjU0JisBNQL0/ZsDjAH+iMzW/ujpzP7k84Zvf4+UmY8DdsSb/kMZ48XL4dTUYoOCZ5WEqwAA//8AO/5LBIkFsAAmAKxSAAAmAdOkKQAHAZoBNQAAAAD//wA0/kkDogQ6ACYA51UAACcB0/+d/3oABwGaAQv//gACAFQAAASABbAACgATAAABETMRISIkNTQkMwERISIGFRQWMwOO8v3Z9v7xAQ73ATX+y4uHiIoDlAIc+lD80dD3/S4CD5Jwc5oAAAAAAgBmAAAGpQWwABgAIQAAISIkNTQkMyERMxE3PgE3NiYnMx4BBwYEIyURISIGFRQWMwJr9v7xAQ73ATXyTGVpBAEfHuwiIwIE/wDB/sL+y4uHiIr80dD3Ahz7EgEBdm9OolBlkknR2MICD5Jwc5oAAAIAXv/pBn4GGAAiADMAABMQEjMyFhcRMxEGFjM+ATc2JiczHgEHAgAjBiYnDgEjIgI1AS4BIyIGHQEUFjMyNjcuATVe2s1UgTPzAk1Ed38EAR4f7CIjAgT+6tOAqiw1l2rL2gKvI2NEf3Nxf0lmIwMDAg4BCAE4PTsCQvtPU2UBuahjyGiBtV3+8f7pAlVgWVoBHfEBJjI2zqsVma86OA8iEwAAAQA7/+gF4QWwAC0AAAE0JisBNTMyNjU0JiMhNSEyBBUUBgcXHgEdAQYWMz4BNzYmJzMeAQcCACMGJicCpntr1JuehYCP/qABYP4BBHx6AYJvAT42anIEAR4f7CMiAgT+9cunsAgBeG2BxW55aXDF0c90ojADJaiARD1KAbipY8hoiK9c/vD+6gOdsQABAC//4gT/BDoALgAAJQYWMz4BNzYmJzMeAQcOASMGJic1NCYrASczMjY1NCYjISchMhYVFAYHFx4BHQEDAQEhLFpfBAEfH+wjIwIF77WjmwhRTukCt2ddXmb++gYBDNbhVlYBZFbrKy0BjYJNoVFoj0jb4wNwhEs8QL1EQ0ZQw6ecUW8jAxp1WT4AAAIASf6sBCQFsAAhACsAABMnMzI2NTQmIyEnITIEFRQGBx4BHQEUFhcVIy4BPQE0JiMBFAYHJz4BPQEzlwHIlYSBiv7gAwEj9wEGc3N+aiAm+ikWfXICmmhVfyws5QJcw291b3vD2M9zoDMorYR4QXgiFyKLR3Rzgf3cZ9xJTkiTW7wAAAIAdf6cBAsEOgAhACsAABM1MzI2NTQmIyEnITIWFRQGBx4BHQEUFhcVIy4BPQE0JiMBFAYHJz4BPQEzs+VpZGZn/uEEASPW61dXYVMXHfsdDmJfAl5oVX8sLOUBnLNJRUdVwa+gUnMoIYJhVSdZFBEUYTFTT1T+jGfcSU5Ik1u8AAAAAAEAQ//oB34FsAAhAAABIREQAiEjNTMyEhkBIREGFjM+ATc2JiczHgEHAgAjBiYnBA3+VN3+9DUpjHcDkQFNRHd+BAEeH+wiIwIE/uvTuMIJBOv+Ff5q/pbEAQUBNwKw+7dUZAG5qGPIaIG1Xf7x/ukDtMsAAQA//+gGWQQ6ACEAAAERBhYzPgE3NiYnMx4BBwYCIwYmJxEhERACKwE/ATI2NREECgFRR11iBAEeH+wiIwIE97u7xgn+/7jfQAQpZFMEOv0tVGQBopZevWJ6q1j7/v4DtMsCDf76/rz+1tMBu98BzAAAAAABAJj/6AeFBbAAHQAAAREGFjM+ATc2JiczHgEHAgAjBiYnESERIxEzESERBQYBTUR4fgQBHx/sIiQCBf7r07fCCf138/MCiQWw+7dTZQG4qWPHaX+2Xv7x/ukDtMsBBv2TBbD9gAKAAAEAd//oBlwEOgAdAAABIREjETMRIREzEQYWMz4BNzYmJzMeAQcGAiMGJicDGv5Q8/MBsPMCUEheYwQBHx7rIyICBPe8usYJAbr+RgQ6/kMBvf0tU2UBopZdvWOBpVf7/v4DtMsAAAAAAQBi/+sEtgXFACEAAAUgABkBEAAhMhYXBy4BIyIGFREUFjM+ATc2JiczHgEHBgQCu/7w/rcBSQEQdK1GP0SOVqe/v6d/hQQBGhnrJhQBBP7jFQFYARIBBgERAVksLbAiIu61/vi57QGFe1OtYqpqTuDlAAABAFX/6wPlBE4AIQAAJT4BNzQmJzMeARUOASMiAD0BNAAzMhYXBy4BIyIGHQEUFgJaU0IDCgnrDQ4E1bL1/vABBupgizAuMHhFgH2GrwFERzdxNkZnMamnATXoKucBNSIgvRwey4wqj8oAAAABACL/6AVYBbAAGQAAASE1IRUhEQYWMz4BNzYmJzMeAQcCACMGJicB5/47BID+OAFNRHd/BAEfH+wjIgIE/uvTt8MJBOvFxfx8U2UBuKljx2l/t13+8f7pA7TLAAEARP/oBMwEOgAZAAABITUhFSERBhYzPgE3NiYnMx4BBw4BIwYmJwGJ/rsDi/6tAVFHXWMEAR8e6yMjAgT4u7rGCgN3w8P98FRkAYF4SptMY4lF2+MDtMsAAAAAAQCH/+sFAQXFACkAAAEiBhUUFjMyNjUzFAQjICQ1NDY3NS4BNTQkITIEFSM0JiMiBhUUFjsBFQLCp6G0pI2v8/656P70/sGGhHSAASoBC+YBNfOpf6KgkqC+AoZyfWmBg2TV1ODNf6krAy6jZszU3bted3xha3PBAAAA//8ArQJtBOoDMQBGAYbgAFMzQAD//wCyAm0F6gMxAEYBhrYAZmZAAP//AAT+PwOZAAAAJwBBAAH+/gAGAEEBAAABAGAD8wGWBjIACQAAEzQ2NxcOAR0BI2BkUoAuK90ErGbYSE1Ik1y7AAAAAAEAMwPWAWkGGAAJAAABFAYHJz4BPQEzAWllUn8tLN0FXGfYR01Hk12+AAAAAQAy/sIBaAENAAkAACUUBgcnPgE9ATMBZ2RSfyws3kdl2EhOSJNbxwAAAP//AEcD1gF9BhgARwFmAbAAAMABQAAAAP//AGID8wLlBjIAJgFlAgAABwFlAU8AAP//AEAD1gLABhgAJgFmDQAABwFmAVcAAAACADL+wgKqAQ0ACQATAAAlFAYHJz4BPQEzBRQGByc+AT0BMwFnZFJ/LCzeAUJlUn8sLN5HZdhITkiTW8fGZdhITkiTW8cAAAABAEAAAAQeBbAACwAAASERIxEhNSERMxEhBB7+iPP+jQFz8wF4A3L8jgNyyAF2/ooAAAAAAQBc/mAEOQWwABMAACkBESMRITUhESE1IREzESEVIREhBDn+iPP+jgFy/o4BcvMBeP6IAXj+YAGgwgK0xAF2/orE/UwAAAAAAQCIAf8CRAP4AA0AABM0NjMyFh0BFAYjIiY1iHZnaHd2aGh2AyFgd3ZhTWF0dGH//wCcAAADWADpACYAEAMAAAcAEAHNAAD//wCcAAAFEQDpACYAEAMAACcAEAHNAAAABwAQA4YAAAAGAEv/6wdgBcUAGQAnADUAQwBRAFUAAAE0NjMyFhc+ATMyFh0BFAYjIiYnDgEjIiY1ATQ2MzIWHQEUBiMiJjUBFBYzMjY9ATQmIyIGFQUUFjMyNj0BNCYjIgYVARQWMzI2PQE0JiMiBhUTJwEXAzClj0tyJiZyTI+mpY5NdCUmcUqRpf0boYyQpaWOjaIDjklER0JHREVGAcdKQ0ZDR0RFRvtNR0ZDR0hERUbqfQLHfQFlgas6NTU6q4FOgqo5NTU5qoIDgYKrq4JNgqmpgvzMQlhVRU5BWVlBTkFZVkROQVlZQQLmQldXQk1CWVlC+9VIBHJIAAAAAAEAbACXAjMDtgAGAAABEyMBNQEzATz3p/7gASCnAib+cQGGEwGGAAABAFQAlwIbA7YABgAAEwEVASMTA/sBIP7gp/f3A7b+ehP+egGPAZAAAQAtAG0DcQUnAAMAADcnAReqfQLHfW1IBHJIAAIAPwIwA1YFxQAKAA4AAAEzFSMVIzUhJwEzAxEnAwLUgoLE/jMEAczJxAP3A3iYsLBwAnX9swFOAf6xAAEAaQKMAv8FugATAAABFz4BMzIWFREjETQmIyIGBxEjEQEBICRuSX6FxUFBNEMTxQWseUFGk6D+BQHJZ1cvKv3SAyAAAQBPAAAEawXFACcAAAEOAQchByE1Mz4BNyM1MycjNTMnNDYzMhYVIzQmIyIGFRchFSEXIRUB6wIgHwLBAfwmCi8tAqehBZ6YBOTH0+Lza1dXYQQBiP5+BQF/AcBNfzLCwg2VXKaAp3zT6de6a2OBeHyngKYAAAAAAwCZ/+wGSQWwAAoAEwArAAABESMRITIEFRQEIyczMjY1NCYrASURMxUjERQWMzI2NxcOASMiJjURIzUzEQGT+gF49wEL/vX3fn6GgoKGfgPnw8MxKxksFBohXjGDj5WVAhz95AWw+c3T+8ySbmyQXf75tP2qRTYHBrIQFJmrAla0AQcAAQBL/+sD4AXFACsAAAEhFRQWMzI2NxcOASMiAD0BIzUzNSM1MzU0ADMyFhcHLgEjIgYdASEVIRUhA5z+NJeIO201FDp4P/L+4JKSkpIBH/E9ckQUN246h5YBzP40AcwB8AKapxERxQ8QARLxAo6cjgz2ARsQD8cQE7CcDo6cAAAEAHH/6wWJBcUAGwApADcAOwAAARQGIyImPQE0NjMyFhUjNCYjIgYdARQWMzI2NQEUFjMyNj0BNCYjIgYVMzQ2MzIWHQEUBiMiJjUTJwEXArGXh4mZmIiImKk9Ojs8PTw5PAEYpJKRoqOSkaOpR0RESENHQ0rBff05fQQlcZSpgk2DqpZxMURZQk1CV0Qv/PKDqamDToKqqoJBWVlBTkVVWUEDyEj7jkgAAAAAAgBF/+sDkAXFABoAJgAABSImPQEOASM1MjY3ETQ2MzIWHQEUAgcVFBYzAzU0JiMiBhURPgE1Atvq5DFiNTdhMLCfi6nPul13MCkiLSxSUhXs2AcLCbsLCwGyxtqxmiqY/sBnRYeBA4osPUJdYf6zR7ZjAAAEAJgAAAhPBcAAAwARAB8AKwAAASE1IQE0NjMyFh0BFAYjIiY1MxQWMzI2PQE0JiMiBhUBIwEHESMRMwE3ETMIEP3GAjr9irmhorm5oKK6r1ZXVFZXVVVW/sDy/XcD8/MCiQPyAXyVAmCXuLiXdZi2tphXZWVXdVRnZ1T7jwQrAfvWBbD71gEEKQAAAAIAZAOUBGIFsAAOABYAAAEnAyMDBxEjETMbATMRIwEjESMRIzUhA/QDhD2JA2+JkJGDbv33inWIAYcE2QH+ugFSAf6vAhz+gwF9/eQBvf5FAbtfAAIAlv/sBJEETgAVAB4AACUOASMiADU0ADMyAB0BIREeATMyNjcBIgYHESERLgEEFFm4Yd7+0gE/zdMBHP0AOYlPYbZZ/pBLizsCHDeIXjg6AUTt5gFL/s7rL/64Njg7PwMqQDr+6wEeNjsA//8Aaf/1Bl8FsgAnAckAEgKGACcBdAEMAAAABwHQA1EAAAAA//8Aav/1BvYFwAAnAcsACgKUACcBdAHFAAAABwHQA+gAAAAA//8Aav/1ByYFrwAnAc0AAgKOACcBdAH9AAAABwHQBBgAAAAA//8Aav/1BoUFrwAnAc8AGAKOACcBdAFCAAAABwHQA3cAAAAAAAIAQ//rBE4F7QAUACIAAAEEABEVFAAjIgA1NBIzMhYXNy4BJwEuASMiBhUUFjMyNj0BAegBGQFN/tjl5f7n+OJSkTkDL9mXAb4llW+AfJB/e5sF7Ub+Nv6kZP3+ywEV1OoBDy8rAqnNMf1rPE6tkHqtz6FmAAAAAAEApv8bBPQFsAAHAAAFIxEhESMRIQT01/1f1gRO5QXU+iwGlQAAAAABAED+8wTBBbAADAAACQEhFSE1CQE1IRUhAQOP/e4DRPt/Ak/9sQRH/PYCEgJD/XPDlwLIAsaYw/1zAAABAJ4CbQPhAzEAAwAAASE1IQPh/L0DQwJtxAAAAQA7AAAEiwWwAAsAAAEXMzcBMwEjAyM1IQIiHQMcAVvS/he+2NEBYwF8hYUENPpQAkHFAAMAZP/rB9kETgAZACcANQAAARQAIyImJw4BIyIAPQE0ADMyFhc+ATMyABUjNCYjIgYHFR4BMzI2NSEUFjMyNjc1LgEjIgYVB9n++uGi409P5KHi/vwBA+Gi5U9O5aPgAQXzeniHuhgVvIZ5e/pxeHuFvBYXu4d5eAH/6/7XwJaWwAEp6zrqASu+k5O+/tXqmrj4YSRi/7WdnbX/YiRg+bebAAAAAf+y/ksCqAYtABwAAAUUBiMiJic3HgEzMjY1ETQ2MzIWFwcuASMiBhURAZC3qSU4IQ8SORY7Qb+zJEctGRcpHFFSP7e/CAm/BQhdVgT3tr8LCrkFBlxW+wkAAAACAGUA/QQiBAEAGwA3AAATPgEzNhYXHgEzMjY3HwEOASMiJicuAQciBgcnBz4BMzYWFx4BMzI2Nx8BDgEjIiYnLgEHIgYHJ28weUNHSl9RTERBeS8DCjF5QkRMUV9KR0J5LgMUMHlDR0pfUUxEQXkvAwoxeUJETFFfSkdCeS4DA21GTAIcLyobSkQBwUdLGyovHAJLQwHtRkwCHC8qG0pEAcFHSxsqLxwCS0MBAAAAAAEAmACBA/YEwgATAAABMxUhByEVIQcnNyM1ITchNSE3FwM6vP7TfAGp/eh+ZFq+AS18/lcCGoNkA9bK38njQaLJ38rsQQAA//8AqgAVBBYErwBnAB4AkgDQQAA5mgAHAYYADP2oAAD//wCgABMEAATDAGcAIAAgAORAADmaAAcBhgAI/aYAAAACACQAAAP5BbAABQAPAAABMwkBIwEhAycjBwMTFzM3AaTSAYP+gNP+fgLZ3BQDFNfdEwMUBbD9J/0pAtcB30FB/iH+IkBAAP//ALMAtgGlBPAAJwAQABoAtgAHABAAGgQHAAAAAgBjAn8CPgQ5AAMABwAAASMRMwEjETMBAJ2dAT6dnQJ/Abr+RgG6AAEARf83AVoBBgAJAAAlFAYHJz4BPQEzAVpQRYAmJsmbYMNBTj9/UHMAAAAAAgAYAAAEFwYtABcAGwAAMxEjNTM1NDYzMhYXBy4BIyIGHQEzFSMRISMRM72lpeLTSopeJT92R3Bj1dUCZ/PzA4a0XMfQHh7JFhpfY1y0/HoEOgAAFgBZ/nIH7AWuAA0AHQArADsAQQBHAE0AUwBdAGEAZQBpAG0AcQB1AH4AggCGAIoAjgCSAJYAAAE0JiMiBh0BFBYzMjY1BTI2NTQmJzU+ATU0JisBEScUBiMiJj0BNDYzMhYVBRQGIyImNSMUFjMyNjURIwERMxUzFSE1MzUzEQERIRUjFSU1IREjNQEzHgEVFAYrATUBNSEVITUhFSE1IRUBNSEVITUhFSE1IRUTMzIWFRQGKwEFIzUzNSM1MxEjNTMlIzUzNSM1MxEjNTMDN39oaH5+amh9ASBeZzQtJSptZ7yfSEFDSUhCQUoDujYpMzVdaF1TaFz5xHHEBSjHb/htATXEBewBNm/82gUwMjQzfgFOARb9WwEV/VwBFAIKARb9WwEV/VwBFLxdPjg6PF388XFxcXFxcQcib29vb29vAkRieXlicGR3d2TYTk0uRA0DDjwoTEr929hHTExHcEVOTkWbLDYsL1NRW1ABevtPATvKcXHK/sUGHwEddKmpdP7jqfy2Ai0nKSqpA0p0dHR0dHT5OHFxcXFxcQRbHygpJ5b8fvr8Ffl+/H76/BX5AAAAAAUAXP3VB9cIYgADAB0AIQAlACkAAAkDBTQ2Nz4BNTQmIyIGBzM+ATMyFhUUBgcOARUXIxUzAzMVIwMzFSMEGAO//EH8RAQPGSlJXaaWi6UCywE6LDc6MitQOsrKyksEBAIEBAZS/DH8MQPP8TY7GyiAUIOUgYk0Mz42Mk0cOVZaW6r9TAQKjQQAAAAAAQBN/+8DygSNAB4AABsBIRUhAz4BNzYWFRQGIyImNTcUFjMyNjU0JiMiBgd8RwLJ/gwdJmo7usrY58L88m9daWNlXFlYFAH4ApXG/vMWIAIDx7u1z6KnEEZTamBday4oAAAAAAIATQAAAyUDIQAKAA8AAAEzFSMVIzUhJwEzATMRIwcCs3Jyv/5jCgGmwP5g4QMPASKRkZF0Ahz+AQEbGAAAAAACAGz/6wQnBcUADQAbAAABEAIjIgIZARASMzISESc0JiMiBhURFBYzMjY1BCf74eH+/OHh/fN2dXV1dnZ1dAIx/t7+3AElASEBTQEhASb+2v7fJbapqbb+a7ipqLkAAAAB/5/+xQLtA0IADwAAAzMgABEQAiEnMjY1LgErAWH0ASABOvn+/AGYcwGwtvQDQv7V/uT++/7Pusqrw8EAAAAAAf+w/ksBjgDNAA8AACURFAYjIiYnNx4BMzI2NREBjrepJTghDhE5FzxAzf70t78ICcYFB1ZVAQwAAAAAAQAY/l8B0wBCABMAACUeARUUBiMiJic3HgEzMjY1NCYnAQ9lX4lsQ1wnIx0vITouOjhCNYtNZ28ZE44KDS0jME0xAAABAFz+mgFPALYAAwAAASMRMwFP8/P+mgIcAAAAAgB1BNAC9wbcAA0AIQAAARQGIyImNTMUFjMyNjUTFAYjIiYjIgYVJzQ2MzIWMzI2NQL3rJWWq69ETkxGkF5IOYEpICloXUktiyseLAWwZ3l6ZjI9PTIBD01pRzIlG0tuRzElAAIAdQTVAvYHCAANAB0AAAEUBiMiJjUjFBYzMjY1JSc+ATU0JiM3MhYVFAYPAQJIR0tNR62ql5Wr/nMIST5NRQecoVJAAQWwMTw8MWV2dmUZdgIWGx0ZYE5GNTUHOgAAAAIAdQTTAwAGfgANABEAAAEUBiMiJjUzFBYzMjY1JzMHIwMAr5aZrbFGT0xHZbapgAWwZXh4ZTI+PjLOwAAAAAACAHkE5wNYBtEACAAcAAABByMnByMnJTM3FAYjIiYjIgYVJzQ2MzIWMzI2NQNYAbyzsrwBASaTulc/M3glHChaVEEogiUbKwTqA46OA+rfP15CLBsYP2FBLRwAAAIAdQTnBAoGywAGABYAAAEjBTM3FzMvAT4BNTQmIzcyFhUUBg8BAka7/urBsrPBXQdBNkQ9B4iNSTgBBeH6oqKGfQQZHSEdaVdNOz0HOwAAAv9MBNoDXAaDAAYACgAAASMnByMlMwUjAzMDXNWfn9QBI6H+h53X3QTajo76XAELAAAAAAIAegTnBIsGkAAGAAoAAAEzBSMnByMBMwMjAZ2hASPUn5/VAzPe2J0F4fqOjgGp/vUAAAACAFsElQMVBpgADQARAAABFAYjIiY1MxQWMzI2NScjJzMDFbuio7q1UFhWUDq/0vsFsIKZmYI7SUk7FdMAAAAAAQCQBGkBhQYMAAUAABM3MwMVI5B3fhvaBQ3//veaAAACABwAAASsBI0ABwAKAAAlIQcjATMBIwEhAwNX/hlW/gHM+AHM/v4KAVes6ekEjftzAasBzQAAAAMAjgAABC4EjQAPABgAIQAAMxEhMhYVFAYHFR4BFRQGIwERITI2NTQmIyUzMjY1NCYrAY4BrdvrYFpxdtzS/wABAGJZWmH/ALtqaWVuuwSNnqNUgCADGo5jpqQB+v7GS01PU6hISE4+AAAAAAEAaP/vBDIEnQAbAAABDgEjIgA9ATQAMzIWFyMuASMiBh0BFBYzMjY3BDEP+NXb/u4BEtvZ9BDzEG1tc4iJcnFoEAGU1NEBFOS+4wEV0dJ3a62Jv4quaXwAAAAAAgCOAAAEQgSNAAkAEwAAMxEhMgAdARQAIwMRMzI2PQE0JiOOAbfeAR/+4d7FxXSWlnQEjf741tLX/voDzPz0oH3Te6EAAAAAAQCOAAADzgSNAAsAAAEhESEVIREhFSERIQN4/ggCTvzAA0D9sgH4Afz+xMAEjcH+8gAAAAEAjgAAA9oEjQAJAAABIREjESEVIREhA4P9/fIDTP2mAgMB3v4iBI3B/tQAAQBo/+8EXwSdAB8AACUOASMiAD0BNAAzMhYXIy4BIyIGHQEUFjMyNjc1IzUhBF8577/v/t8BH+nh7hPyDnNvf5eYhmJ0H+8B4Z9IaAEF2fPXAQbCtF1Ynn30gJ4fF9SxAAAAAAEAjgAABHoEjQALAAAhIxEhESMRMxEhETMEevT9+vLyAgb0Adj+KASN/g0B8wAAAAEAjgAAAYAEjQADAAAhIxEzAYDy8gSNAAEALv/uA4wEjQAPAAABMxEUBiMiJjUzFBYzMjY1Apry6b3P6fNpXE9lBI385bXPubpbWGpaAAAAAQCOAAAEXQSNAAwAAAEjESMRMxEzASEJASEB62vy8lUBQQEt/mQBtv7LAdX+KwSN/iAB4P3V/Z4AAAAAAQCOAAADeQSNAAUAACUhFSERMwGAAfn9FfLAwASNAAABAI4AAAVuBI0ADgAACQEhESMRIwEjASMRIxEhAv4BQAEw8wP+2KX+2APyATIBKwNi+3MC/v0CAwH8/wSNAAAAAQCOAAAEhQSNAAsAACEjAQcRIxEzATcRMwSF8v3wA/LyAhAD8gMeAfzjBI385AEDGwAAAAIAZv/uBGQEnQANABsAAAEUACMiAD0BNAAzMgAVJzQmIyIGHQEUFjMyNjUEZP7p6Of+6AEW6OcBGfOOf4CLjX9/jQHn5f7sARTlvuQBFP7s5AGPp6ePv5GoqJEAAgBo/38ElASdABMAIQAAARQGBxcHJw4BIyIAPQE0ADMyABUnNCYjIgYdARQWMzI2NQRmODacoaE3c0Hn/ugBFujnARnzjn+AjI2Af40B52OlQZ2CoBkYARTlvuQBFP7s5AGPp6aQv5GoqJEAAgCOAAAESQSNABsAJAAAAREjESEyFhUUBgcVHgEdARQWFxUjLgE9ATQmIyczMjY1NCYrAQGA8gHO1uphYGxcERX6FQpgYPDcaWRlaNwBvf5DBI22pl6CKQMejWtWLGYXEBZsOFRWWcJUT05cAAAAAAEAT//uBBkEnQAlAAABNCYnLgE1NDYzMhYVIzQmIyIGFRQWFx4BFRQEIyIkNTMeATMyNgMnbJPlyfLV2u/yam1uZ2Sj28v/AN/d/vLyAYlvd3YBOz5NITSWoJa2v69RXEw+QUgkM5uanrG4uV9STQABADwAAAPpBI0ABwAAASERIxEhNSED6f6g8/6mA60DzPw0A8zBAAAAAQB+/+4EewSNABEAAAERFAQjIiQ1ETMRFBYzMjY1EQR7/uvp6f7q8o5/f40Ejf0KzN3dzAL2/Qpyd3dyAvYAAAEAHAAABIsEjQAJAAABFzM3ASEBIwEhAkARAxEBJQEB/kP3/kUBAQE1R0QDW/tzBI0AAAABADQAAAXXBI0ADwAAATMTIQEjAyMDIwEhEzMTMwQ4A5sBAf7j580DzOf+5AEAnAPK0gFZAzT7cwMM/PQEjfzJAzcAAAEALAAABFEEjQALAAABEyEJASELASEJASECPPEBG/6KAX/+5/n4/uUBgP6JARkC+AGV/b/9tAGd/mMCTAJBAAABABMAAAQ8BI0ACAAACQEhAREjEQEhAigBCQEL/mLz/mgBCwJvAh79Cv5pAaIC6wABAEoAAAPrBI0ACQAAJSEVITUBITUhFQF+Am38XwJZ/cgDcMDAegNSwXUAAAIAbf/vBBMEnQANABsAAAEUBiMiJjURNDYzMhYVJzQmIyIGFREUFjMyNjUEE/3V1v781tX/83dqaXZ3aml2AZvI5OTIAVfH5OTHAWx9fmv+qG5+fW8AAAABAD4AAAHzBJ0ABQAAISMRIzUlAfPzwgG1A6e6PAAAAAEAUgAAA5IEnQAYAAApATUBPgE1NCYjIgYVIzQ2MzIWFRQGDwEhA5L80QGeVkNMTlph8+bIvc6DntMB+8ABg1FrOEZfZE6j0LmteKuNxwAAAQBN/+8DuwSdACgAAAEyNjU0JiMiBhUjNDYzMhYVFAYHHgEVFAYjIiY1MxQWMzI2NTQmKwE1AgZcVFxaTmLy6LPL5F5WYmX2zLP58WpYXWtfY7kCq09LQFdMPpmyqaNSgicjh2Wls6ytQVhdRVpPsQAAAAACADkAAAQYBI0ACgAPAAABMxUjFSM1IScBMwEhEScHA3Gnp/L9xQsCQ/X9yQFFAwIBm8PY2J8DFv0OAboBBAAAAQBRAAAENAXFABgAACkBNQE+ATU0JiMiBhUjNAAzMhYVFAYHASEENPw5Adp2VnBjgnrzAQXq1vCKl/63ApinAgWCn09kgo2BygEH5L+A3qb+pAAAAgBt/+8D8ASdABoAJwAAATIWFwcuASMiBh0BPgEzMhYVFAYjIiY1ETQkEyIGBxUUFjMyNjU0JgJcSotDJzltSHKNModVvcX1zMX9ARexT2sbeV5ba2AEnRoYuhcUi3VWMTTCsrLW+MoBKc71/ZIyLh5wkm5UW2MAAQA8AAADZgSNAAwAAAEGAhEVIzUQEjchNSEDZriW8+OE/bADKgPM5f7e/vS5uQEHAYqCwQAAAAADAFL/7wPnBJ0AFwAjAC8AAAEUBgceARUUBiMiJDU0NjcuATU0NjMyFgM0JiMiBhUUFjMyNgM0JiMiBhUUFjMyNgPEZFlpd/3Fzf76em1eZvC/t+nQeVdgf39hWHcjZElSa21RSWMDXFeCJymMX6W0tKVfjCkngVicpaX9XUlcXElLW1sCREBOTEJBUVEAAAACAD//7wO1BJ0AGgAnAAAlMjY9AQ4BIyImNTQ2MzIWFREUBCMiJic3HgETMjY3NTQmIyIGFRQWAeFify1xQsjb98nA9v79ykiaRyY+c2JKZRt0WllqZa9/YVoqKs20qd75yv62u+YaGLgXEwGUNCpAbY57UFtzAAABAFcAAAGWAywABQAAISMRIzUlAZbAfwE/An+WFwAAAAEAawAAAtUDLAAYAAApATUBPgE1NCYjIgYVIzQ2MzIWFRQGDwEhAtX9oQExQiYyNz4/vqqUjphfeogBZ5EBADdEKi03OzFtkYB3U3JrdAAAAQBg//UC6wMsACgAAAEyNjU0JiMiBhUjNDYzMhYVFAYHHgEVFAYjIiY1MxQWMzI2NTQmKwE1AaFCPEA/Nj6/q4WYqUY+R0qxmIq4v0Q+QkpFR3sB2TQxKDQsImh4dXA4WRoYXkVyenh3LDIzLjk2gwAAAAABADgAAAJGBbAABQAAISMRITUlAkbz/uUCDgSgpmoAAAEAaP/1AwEDIQAeAAAbASEVIQc+ATc2FhUUBiMiJjU3FBYzMjY1NCYjIgYHiTQCFP6VFRxMLIeVoayRu75NQUpERj0+Pw8BWgHHkqoRFgECi4CAj290DC0xPjw/SR4ZAAIAcP/1AwoDLAAaACcAAAEyFhcHLgEjIgYdAT4BMzIWFRQGIyImPQE0NhMiBgcVFBYzMjY1NCYB4DdnLiApTzJRYiViP4iNtpeTus6DNkoSUkBCSUQDLBIRjQ8PWE0zICKHeXuUqo3Ij6n+Sx8cEEtbQTc6PwAAAAEAUgAAAqQDIQAMAAABDgEdASM1NBI3ITUhAqSHaL+aWf5pAlICj6C7tX9/tAELUZIAAAADAGj/9QMOAywAFwAjAC8AAAEUBgceARUUBiMiJjU0NjcuATU0NjMyFgM0JiMiBhUUFjMyNgM0JiMiBhUUFjMyNgL2SUBLVrqSmMJYT0RLs46IraZTPENYWEQ9URpDMjlISjgxQwJQO1obHWFAcnt7ckBhHRtaO2txcf4wMDs7MC82NgGIKC4tKSoyMgAAAAACAGD/9QLwAywAGgAnAAAlMjY9AQ4BIyImNTQ2MzIWHQEUBiMiJic3HgETMjY3NTQmIyIGFRQWAZVEWCBRLZOgs5KRusOYNW40ICtTSzVGD1E+PUdFhk5AOyAfkH91mK2M3oKeERGOEQ4BESUeGUpdSzU7SAAAAAACAHD/9QMkAywADQAbAAABFAYjIiY9ATQ2MzIWFSc0JiMiBh0BFBYzMjY1AyS7n5+7up+evb9SSkpQUEtJUgEnkKKikNGPpaWPAktVVUvTTlNTTgABAJcChwMmAzEAAwAAASE1IQMm/XECjwKHqgAAAwCWBEgCngaVAAQAEAAcAAABMxcHIwc0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBgG84QHxlYJrUU5qaU9Ra2MzJiQwMCQmMwaVA7/eTWVkTk1gYE0mMDAmJzMzAAACAGwEbwLMBdcABQAPAAABEzMVAyMlNDY3Fw4BHQEjAYpv0+Zc/uJbVVAqJbEEhQFAFf7BVlqKLEgpYURSAAAAAQBP/+sEFgXFACgAAAEzMjY1NCYjIgYVIzQkMzIWFRQGBx4BFRQEIyIkNTMUFjMyNjU0JisBAYapeWVub2V78wECztn6b2x/cv7x2s7+8POAbnOAdX+pA0ZzbWtxb16v4dTLX6sxLbB2zOHUx2N2eHJ+cgACADgAAARZBbAACgAPAAABMxUjESMRIScBMwEhEScHA6G4uPL9jwYCb/r9hwGHAxcCB8T+vQFDlQPY/FcCVgExAAAAAAEAgf/rBCYFsAAeAAAbASEVIQM+ATc2EhUUAiMiJDU3FBYzMjY1NCYjIgYHnFQDAf3JLCxvSNHk8OvE/vrremVzdXhzZl4XAosDJdL+kyApAgP+/Ora/vTRyQhsdJ2FhqM/PwACAHT/6wRGBcUAGgAnAAABMhYXBy4BIyIGHQE+ATMyEhUUAiMiABkBEAATIgYHFRQWMzI2NTQmAqhQjTouOWdIlK89nWDH3//Y4v7nATy0XX4jkndtd34FxSAcvBgb3cMHODv+89fk/ucBMgEeARYBIgFS/UpAOWi9xLOIhaIAAAMACv5KBBsETgAvAD8ATQAAASMeAR0BFAYjIiYnDgEVFBY7ATIWFRQEIyImNTQ2Ny4BNTQ2Ny4BPQE0NjMyFhchASImJw4BFRQWMzI2NTQmIwEUFjMyNj0BNCYjIgYVBBuKHB73yipJIxITQj2xxc3+1vno/GNTGRk/Nlxi9s0rTicBcf2GGCoUJy59fZCiUGX+zHNgXXJzXl9yA6AqXzUWnc8IChEoGSsilJWF2552WXwpFzwnQ18mMZxhFqPJCgr73gMEFUYwPlFiPDo7ArRJaGhJFktlZUsAAAABADIAAAP3BbAADAAAAQoBAwcjNxoBNyE1IQP3+KQnD/MPJ9zH/ScDxQTt/tP+NP6mmpoBUgIO88MAAAABAD7+TQREBEoAIwAAEzIWHwETMwETHgEXOgE3Bw4BJy4BLwEDIwEDLgEjIgYHJz4BwYxzPVvh9f6fxRo9KxARDwcTNhdxeT9l+PgBfKccWTwMKA8CH0IESoqGzgHO/Sj+QT1EBQLGBgYBBZST5v4AAwwBgEVRBAG6CAsAAwBh/+sEKgXFABcAIwAvAAABFAYHHgEVFAQjIiQ1NDY3LgE1NDYzMhYDNCYjIgYVFBYzMjYDNCYjIgYVFBYzMjYEBXVqeor++dzf/vmIfGp08c3L9c2HbG6DgnFthCZwXV9sbWBdbgQwcaYuL7V6z9PTz3u0MC2mccbPz/yjbYSDbnB8fQL9Ynl1ZmV1dQAAAgBW/+sEXwROABQAIgAAJScOASMiAj0BEBIzMhYXPwEzAxMjARQWMzI2NzUuASMiBhUDZAM2qn7O397Reqc3AxvdbHPd/cdxf21vFxFzbX9zvwFpbAEd8RUBCAE4bGcBvv3i/eQB+Zmzt5ovm8PRrAAAAAACAFP/6wQ0BbAAGgArAAABFSEeARcWEh0BFAAjIgA9ATQSNzI2My4BJzUTFBYzMjY9ATQmJy4BIyIGFQPD/lQaZzqvs/787Oz+++bHCQwMgZI3b3qEgnxgSBMjFYmABbDBG1gul/77nxXw/t0BHegVwwEHHAF0iD+J/E6ZuLmYFW6pMAQEupUAAgCfAAAEyAWwAAkAEwAAMxEhIAARFRAAIQMRMzI2PQE0JiOfAZ4BUwE4/sj+rauk57i45wWw/tH+z/H+z/7SBO371cXY89XGAAAAAAIAYP/rA/4ETgAfACoAACEuAScOASMiJjU0NjsBNTQmIyIGFSM0NjMyFhURFBYXJTI2NzUjIgYVFBYDCAkMAzefYqys8+qrX2VjWfPd4dHXDxT98lSDIa96bUcdNRw6SaKiqqR6VEZMQ5S4oLn+BEZ4O647K9FdVUJDAAACAJ8AAAT+BbAADgAXAAABFAYHARUhASERIxEhMgQBITI2NTQmIyEEqn93AUr+9f7d/sLzAg34AQb86AEbhoSCif7mBAaGwDX9iBMCS/21BbDa/jh7dXB/AAAAAAEAnwAABS8FsAAMAAABBxEjETMRNwEhCQEhAieV8/OSAasBIP3eAmL+zAKApf4lBbD9X6sB9v2J/McAAAEAgQAABDwGGAANAAABBxEjETMRFzcBIQkBIQHgbfLyA1ABLQEe/m0Bvv7mAc9z/qQGGPxxAWEBUf5A/YYAAAABAJ8AAAURBbAACwAAAREjETMRMwEhCQEhAZLz8wcCJgEt/ZsCiv7TAp/9YQWw/X8Cgf02/RoAAAEAgQAABCIGGAAMAAABBxEjETMRFwEhCQEhAXYD8vIDAVYBKv5QAdz+2wHnAf4aBhj8iAEBm/4M/boAAAIAUv/rBBcFxQAbACgAACUyNj0BJw4BIyICNTQAMzIAGQEQACMiJic3HgETMjY3NTQmIyIGFRQWAgOFnQMwilXV7AEKy+cBCf7c8EyeRCBAfXhdfSGAemSCdq29vSMBQUIBBPHmASL+3P7k/qv+5v7VHh64GxcB2EY7nLGvt46SpgAAAAIAjgAABEAEjQAKABMAAAERIxEhMhYVFAYjJzMyNjU0JisBAYDyAePY9/fY8fFscHBs8QGG/noEjdaur9TCblFTcgD//wB1BJUC+wWwAgYAnAAA//8AAAAAAAAAAAIGAAMAAP//AEcCCQJUAs0CBgAPAAAAAgAkAAAFDAWwAA0AGwAAMxEjNTMRISAAERUQACETIREzMjY9ATQmKwERIb2ZmQHKASoBW/6i/sw5/v3D2c3Kz9ABAwKRqgJ1/qb+4sH+4P6pApH+MerLw83m/k4AAAAAAgAkAAAFDAWwAA0AGwAAMxEjNTMRISAAERUQACETIREzMjY9ATQmKwERIb2ZmQHKASoBW/6i/sw5/v3D2c3Kz9ABAwKRqgJ1/qb+4sH+4P6pApH+MerLw83m/k4AAAAAAf/9AAAEKgYYABwAAAEjERc+ATMyFhURIxE0JiMiBgcRIxEjNTM1MxUzAoz+AzWXYLC982RoSW4m856e8/4Ex/7sAUtR1Of9bQKVgnA6NfzoBMeqp6cAAAEANQAABLUFsAAPAAABIxEjESM1MxEhNSEVIREzA73P883N/joEgP45zwMS/O4DEqoBMcPD/s8AAf/n/+wCdgVBAB8AAAERMxUjFTMVIxEUFjMyNjcXDgEjIiY1ESM1MzUjNTMRAaHDw9XVMSsZLBQaIV4xg4/Hx5WVBUH++bSlqv75RTYHBrIQFJmrAQeqpbQBB///ABoAAAUoByICJgAjAAAABwBCAPwBXP//ABoAAAUoByECJgAjAAAABwBzAbMBW///ABoAAAUoB0cCJgAjAAAABwCaALcBWf//ABoAAAUoB2MCJgAjAAAABwCgALkBbP//ABoAAAUoBw0CJgAjAAAABwBoAJMBXf//ABoAAAUoB48CJgAjAAAABwCeAUwBs///ABoAAAUoB70CJgAjAAAABwHUAVIBKP//AHT+PATYBcUCJgAlAAAABwB3Acb/+///AJ8AAAR1ByICJgAnAAAABwBCAMQBXP//AJ8AAAR1ByECJgAnAAAABwBzAXsBW///AJ8AAAR1B0cCJgAnAAAABwCaAH8BWf//AJ8AAAR1Bw0CJgAnAAAABwBoAFsBXf///8wAAAGgByICJgArAAAABwBC/4IBXP//AK0AAAKEByECJgArAAAABwBzADgBW////9gAAAJ5B0cCJgArAAAABwCa/z0BWf///70AAAKSBw0CJgArAAAABwBo/xkBXf//AJ8AAAUQB2MCJgAwAAAABwCgAO4BbP//AHT/6wUbBzcCJgAxAAAABwBCASMBcf//AHT/6wUbBzYCJgAxAAAABwBzAdoBcP//AHT/6wUbB1wCJgAxAAAABwCaAN4Bbv//AHT/6wUbB3gCJgAxAAAABwCgAOABgf//AHT/6wUbByICJgAxAAAABwBoALoBcv//AIb/6wTxByICJgA3AAAABwBCARcBXP//AIb/6wTxByECJgA3AAAABwBzAc4BW///AIb/6wTxB0cCJgA3AAAABwCaANIBWf//AIb/6wTxBw0CJgA3AAAABwBoAK4BXf//ABMAAATvByECJgA7AAAABwBzAZYBW///AF7/7AQBBeACJgBDAAAABwBCAIEAGv//AF7/7AQBBd8CJgBDAAAABwBzATgAGf//AF7/7AQBBgUCJgBDAAAABgCaPBcAAP//AF7/7AQBBiECJgBDAAAABgCgPioAAP//AF7/7AQBBcsCJgBDAAAABgBoGBsAAP//AF7/7AQBBk0CJgBDAAAABwCeANEAcf//AF7/7AQBBnwCJgBDAAAABwHUANf/5///AFH+PAP3BE4CJgBFAAAABwB3AT7/+///AFn/7AP4BeECJgBHAAAABwBCAIMAG///AFn/7AP4BeACJgBHAAAABwBzAToAGv//AFn/7AP4BgYCJgBHAAAABgCaPhgAAP//AFn/7AP4BcwCJgBHAAAABgBoGhwAAP///68AAAGCBcsCJgCKAAAABwBC/2UABf//AI8AAAJnBcoCJgCKAAAABgBzGwQAAP///7sAAAJcBfACJgCKAAAABwCa/yAAAv///6AAAAJ1BbYCJgCKAAAABwBo/vwABv//AH4AAAQLBiECJgBQAAAABgCgWSoAAP//AFP/7AQ0BeACJgBRAAAABwBCAJ4AGv//AFP/7AQ0Bd8CJgBRAAAABwBzAVUAGf//AFP/7AQ0BgUCJgBRAAAABgCaWRcAAP//AFP/7AQ0BiECJgBRAAAABgCgWyoAAP//AFP/7AQ0BcsCJgBRAAAABgBoNRsAAP//AHv/7AQKBcsCJgBXAAAABwBCAJ0ABf//AHv/7AQKBcoCJgBXAAAABwBzAVQABP//AHv/7AQKBfACJgBXAAAABgCaWAIAAP//AHv/7AQKBbYCJgBXAAAABgBoNAYAAP//ABD+SwP8BcoCJgBbAAAABwBzARgABP//ABD+SwP8BbYCJgBbAAAABgBo+QYAAP//ABoAAAUoBvYCJgAjAAAABwBuALIBRv//AF7/7AQBBbQCJgBDAAAABgBuNwQAAP//ABoAAAUoB1wCJgAjAAAABwCcAOoBrP//AF7/7AQBBhoCJgBDAAAABgCcb2oAAAACABr+UgUoBbAAGgAeAAAJASMOARUUFjMyNjcXDgEjIiY1NDY3AyEDIwEDIQMjAxgCEERQUSAnGioWFSFNN151UVlx/c949wIXZQGs1AMFsPpQM1w4ISMNCo4TGWlgRno1AUz+pAWw/G8CawACAF7+UgQBBE4AMwA+AAAhLgEnDgEjIiY1NDY7ATU0JiMiBhUjNDYzMhYVERQWFyMOARUUFjMyNjcXDgEjIiY1NDY3JTI2NzUjIgYVFBYDCwsPBDecYqez9OWxZGBYZPP1ycHnERUiUFEgJxoqFhUhTTdedUVM/uBUhSK1bXVOIkQkRlirmqCsX1ZfT0CIxL23/h9FeDwzXDghIw0KjhMZaWBBcTOvSDa4Z0k/RwAA//8AdP/rBNgHNgImACUAAAAHAHMBvwFw//8AUf/sA/cF3wImAEUAAAAHAHMBKAAZ//8AdP/rBNgHXAImACUAAAAHAJoAwwFu//8AUf/sA/cGBQImAEUAAAAGAJosFwAA//8AdP/rBNgHNgImACUAAAAHAJ0BkAGA//8AUf/sA/cF3wImAEUAAAAHAJ0A+QAp//8AdP/rBNgHYwImACUAAAAHAJsA2gFy//8AUf/sA/cGDAImAEUAAAAGAJtDGwAA//8AnwAABO4HTgImACYAAAAHAJsAjQFd//8AU//sBVcGGAAmAEYAAAAHAZED/QUS//8AnwAABHUG9gImACcAAAAHAG4AegFG//8AWf/sA/gFtQImAEcAAAAGAG45BQAA//8AnwAABHUHXAImACcAAAAHAJwAsgGs//8AWf/sA/gGGwImAEcAAAAGAJxxawAA//8AnwAABHUHIQImACcAAAAHAJ0BTAFr//8AWf/sA/gF4AImAEcAAAAHAJ0BCwAqAAEAn/5SBHUFsAAgAAABIREhFSMOARUUFjMyNjcXDgEjIiY1NDY3JyERIRUhESEED/2DAuNAUFEgJxoqFhUhTTdedURJAf1BA8/9JAJ9Ao/+M8IzXDghIw0KjhMZaWBAcTEDBbDD/mUAAgBZ/mAD+ARPACkAMQAAJQ4BBzMOARUUFjMyNjcXDgEjIiY1NDY3JgA9ATQAFzISHQEhHgEzMjY3ASIGByE1NCYD1R5OMgFQUSAnGioWFSFNN151MDXh/wABC9Dg5P1WCol+ZIlC/qZbdBIBtGdkGiwQM1w4ISMNCo4TGWlgNmEtCAEk6yjxATIB/vvjj4eiLy0CgY11GWmAAAD//wCfAAAEdQdOAiYAJwAAAAcAmwCWAV3//wBZ/+wD+AYNAiYARwAAAAYAm1UcAAD//wB0/+sE4gdcAiYAKQAAAAcAmgC6AW7//wBU/kwECAYFAiYASQAAAAYAmkYXAAD//wB0/+sE4gdxAiYAKQAAAAcAnADtAcH//wBU/kwECAYaAiYASQAAAAYAnHlqAAD//wB0/+sE4gc2AiYAKQAAAAcAnQGHAYD//wBU/kwECAXfAiYASQAAAAcAnQETACn//wB0/eIE4gXFAiYAKQAAAAcBkQG2/qv//wBU/kwECAaKAiYASQAAAAcBpQEtAH7//wCfAAAFEAdHAiYAKgAAAAcAmgDoAVn//wB9AAAEDAdiAiYASgAAAAcAmgAbAXT///+/AAACkAdjAiYAKwAAAAcAoP8/AWz///+iAAACcwYMAiYAigAAAAcAoP8iABX///+/AAAClgb2AiYAKwAAAAcAbv84AUb///+iAAACeQWgAiYAigAAAAcAbv8b//D////lAAACawdcAiYAKwAAAAcAnP9wAaz////IAAACTgYFAiYAigAAAAcAnP9TAFX//wAc/lwBoAWwAiYAKwAAAAYAn/MKAAD////+/lIBgwYYAiYASwAAAAYAn9UAAAD//wCjAAABpgchAiYAKwAAAAcAnQAJAWv//wCt/+sGMwWwACYAKwAAAAcALAJNAAD//wCQ/ksDoQYYACYASwAAAAcATAITAAD//wA6/+sEsgc/AiYALAAAAAcAmgF2AVH///+1/ksCZAXjAiYAmAAAAAcAmv8o//X//wCf/fAFLwWwAiYALQAAAAcBkQGK/rn//wCB/fIENQYYAiYATQAAAAcBkQEv/rv//wCfAAAELwb4AiYALgAAAAcAcwAqATL//wCQAAACZwdfAiYATgAAAAcAcwAbAZn//wCf/fIELwWwAiYALgAAAAcBkQF1/rv//wBY/fIBgwYYAiYATgAAAAcBkQAT/rv//wCfAAAELwWyAiYALgAAAAcBkQIEBKz//wCQAAAC6AYYACYATgAAAAcBkQGOBRL//wCfAAAELwWwAiYALgAAAAcAnQG7/dT//wCQAAAC9wYYACYATgAAAAcAnQFa/a///wCfAAAFEAchAiYAMAAAAAcAcwHoAVv//wB+AAAECwXfAiYAUAAAAAcAcwFTABn//wCf/fIFEAWwAiYAMAAAAAcBkQHg/rv//wB+/fIECwROAiYAUAAAAAcBkQFL/rv//wCfAAAFEAdOAiYAMAAAAAcAmwEDAV3//wB+AAAECwYMAiYAUAAAAAYAm24bAAD////VAAAECwYYAiYAUAAAAAcBkf+QBRL//wB0/+sFGwcLAiYAMQAAAAcAbgDZAVv//wBT/+wENAW0AiYAUQAAAAYAblQEAAD//wB0/+sFGwdxAiYAMQAAAAcAnAERAcH//wBT/+wENAYaAiYAUQAAAAcAnACMAGr//wB0/+sFGwdgAiYAMQAAAAcAoQFDAXL//wBT/+wEWQYJAiYAUQAAAAcAoQC+ABv//wCfAAAE8AchAiYANAAAAAcAcwGDAVv//wCAAAAC+gXfAiYAVAAAAAcAcwCuABn//wCf/fIE8AWwAiYANAAAAAcBkQF7/rv//wBW/fICwwROAiYAVAAAAAcBkQAR/rv//wCfAAAE8AdOAiYANAAAAAcAmwCeAV3//wBDAAAC9wYMAiYAVAAAAAYAm8obAAD//wBT/+sEoAc2AiYANQAAAAcAcwGBAXD//wBR/+wDzwXfAiYAVQAAAAcAcwEiABn//wBT/+sEoAdcAiYANQAAAAcAmgCFAW7//wBR/+wDzwYFAiYAVQAAAAYAmiYXAAD//wBT/jgEoAXFAiYANQAAAAcAdwGW//f//wBR/jgDzwROAiYAVQAAAAcAdwEv//f//wBT/d4EoAXFAiYANQAAAAcBkQGB/qf//wBR/d4DzwROAiYAVQAAAAcBkQEa/qf//wBT/+sEoAdjAiYANQAAAAcAmwCcAXL//wBR/+wDzwYMAiYAVQAAAAYAmz0bAAD//wA1/fIEtQWwAiYANgAAAAcBkQGB/rv//wAZ/egCcAVBAiYAVgAAAAcBkQC5/rH//wA1/ksEtQWwAiYANgAAAAcAdwGWAAr//wAZ/kEClwVBAiYAVgAAAAcAdwDOAAD//wA1AAAEtQdOAiYANgAAAAcAmwCkAV3//wAZ/+wDLwY2ACYAVgAAAAcBkQHVBTD//wCG/+sE8QdjAiYANwAAAAcAoADUAWz//wB7/+wECgYMAiYAVwAAAAYAoFoVAAD//wCG/+sE8Qb2AiYANwAAAAcAbgDNAUb//wB7/+wECgWgAiYAVwAAAAYAblPwAAD//wCG/+sE8QdcAiYANwAAAAcAnAEFAaz//wB7/+wECgYFAiYAVwAAAAcAnACLAFX//wCG/+sE8QePAiYANwAAAAcAngFnAbP//wB7/+wECgY4AiYAVwAAAAcAngDtAFz//wCG/+sE8QdLAiYANwAAAAcAoQE3AV3//wB7/+wEWAX0AiYAVwAAAAcAoQC9AAYAAQCG/nkE8QWwACcAAAERFAYHDgEVFBYzMjY3Fw4BIyImNTQ2NyIGIyIkNREzERQWMzI2NREE8YyBUFEgJxoqFhUhTTdedSMnBA4D//7P86mUma8FsPwwo9o8M1w4ISMNCo4TGWlgLlQoAf/2A9D8MJyXl5wD0AAAAQB7/lIEEAQ6ACcAACEOARUUFjMyNjcXDgEjIiY1NDY3LwEOASMiJjURMxEUFjMyNjcRMxED+1BRICcaKhYVIU03XnVJUA8CNJhnssDyWl9ZdSPzM1w4ISMNCo4TGWlgQnUziwFRVNjvAof9d5FuPjwDDvvGAAD//wBEAAAGuwdHAiYAOQAAAAcAmgGVAVn//wAlAAAF0AXwAiYAWQAAAAcAmgERAAL//wATAAAE7wdHAiYAOwAAAAcAmgCaAVn//wAQ/ksD/AXwAiYAWwAAAAYAmhwCAAD//wATAAAE7wcNAiYAOwAAAAcAaAB2AV3//wBYAAAEcQciAiYAPAAAAAcAcwFvAVz//wBVAAADxAXKAiYAXAAAAAcAcwEeAAT//wBYAAAEcQciAiYAPAAAAAcAnQFAAWz//wBVAAADxAXKAiYAXAAAAAcAnQDvABT//wBYAAAEcQdPAiYAPAAAAAcAmwCKAV7//wBVAAADxAX3AiYAXAAAAAYAmzkGAAD////2AAAHVwchAiYAfwAAAAcAcwK4AVv//wA0/+sGhAXgAiYAhAAAAAcAcwJuABr//wBp/6EFEAdfAiYAgQAAAAcAcwHSAZn//wBT/3YENAXcAiYAhwAAAAcAcwEuABb////qAAAEQgSNAiYBqQAAAAcB0/9T/3f////qAAAEQgSNAiYBqQAAAAcB0/9T/3f//wA8AAAD6QSNAiYBuAAAAAYB0y3eAAD//wAcAAAErAXfAiYBpgAAAAcAQgC6ABn//wAcAAAErAXeAiYBpgAAAAcAcwFxABj//wAcAAAErAYEAiYBpgAAAAYAmnUWAAD//wAcAAAErAYgAiYBpgAAAAYAoHcpAAD//wAcAAAErAXKAiYBpgAAAAYAaFEaAAD//wAcAAAErAZMAiYBpgAAAAcAngEKAHD//wAcAAAErAZ7AiYBpgAAAAcB1AEQ/+b//wBo/j4EMgSdAiYBqAAAAAcAdwFi//3//wCOAAADzgXfAiYBqgAAAAYAQnsZAAD//wCOAAADzgXeAiYBqgAAAAcAcwEyABj//wCOAAADzgYEAiYBqgAAAAYAmjYWAAD//wCOAAADzgXKAiYBqgAAAAYAaBIaAAD///+sAAABgAXfAiYBrgAAAAcAQv9iABn//wCOAAACZAXeAiYBrgAAAAYAcxgYAAD///+4AAACWQYEAiYBrgAAAAcAmv8dABb///+dAAACcgXKAiYBrgAAAAcAaP75ABr//wCOAAAEhQYgAiYBswAAAAcAoACQACn//wBm/+4EZAXwAiYBtAAAAAcAQgCxACr//wBm/+4EZAXvAiYBtAAAAAcAcwFoACn//wBm/+4EZAYVAiYBtAAAAAYAmmwnAAD//wBm/+4EZAYxAiYBtAAAAAYAoG46AAD//wBm/+4EZAXbAiYBtAAAAAYAaEgrAAD//wB+/+4EewXhAiYBuQAAAAcAQgDKABv//wB+/+4EewXgAiYBuQAAAAcAcwGBABr//wB+/+4EewYGAiYBuQAAAAcAmgCFABj//wB+/+4EewXMAiYBuQAAAAYAaGEcAAD//wATAAAEPAXeAiYBvQAAAAcAcwE4ABj//wAcAAAErAWzAiYBpgAAAAYAbnADAAD//wAcAAAErAYZAiYBpgAAAAcAnACoAGkAAgAc/lIErASNABoAHQAAATMBIw4BFRQWMzI2NxcOASMiJjU0NjcnIQcjASEDAej4AcxQUFEgJxoqFhUhTTdedVNbUP4ZVv4BnAFXrASN+3MzXDghIw0KjhMZaWBHezXX6QGrAc0AAP//AGj/7wQyBe4CJgGoAAAABwBzAVoAKP//AGj/7wQyBhQCJgGoAAAABgCaXiYAAP//AGj/7wQyBe4CJgGoAAAABwCdASsAOP//AGj/7wQyBhsCJgGoAAAABgCbdSoAAP//AI4AAARCBgsCJgGpAAAABgCbJRoAAP//AI4AAAPOBbMCJgGqAAAABgBuMQMAAP//AI4AAAPOBhkCJgGqAAAABgCcaWkAAP//AI4AAAPOBd4CJgGqAAAABwCdAQMAKAABAI7+UgPOBI0AIAAAASERIRUjDgEVFBYzMjY3Fw4BIyImNTQ2NychESEVIREhA3j+CAJOQ1BRICcaKhYVIU03XnVESQH92gNA/bIB+AH8/sTAM1w4ISMNCo4TGWlgQHExAwSNwf7y//8AjgAAA84GCwImAaoAAAAGAJtNGgAA//8AaP/vBF8GFAImAawAAAAGAJpuJgAA//8AaP/vBF8GKQImAawAAAAHAJwAoQB5//8AaP/vBF8F7gImAawAAAAHAJ0BOwA4//8AaP3kBF8EnQImAawAAAAHAZEBaf6t//8AjgAABHoGBAImAa0AAAAHAJoAggAW////nwAAAnAGIAImAa4AAAAHAKD/HwAp////nwAAAnYFswImAa4AAAAHAG7/GAAD////xQAAAksGGQImAa4AAAAHAJz/UABp////+f5SAYAEjQImAa4AAAAGAJ/QAAAA//8AhAAAAYcF3gImAa4AAAAGAJ3qKAAA//8ALv/uBF4GAAImAa8AAAAHAJoBIgAS//8Ajv3uBF0EjQImAbAAAAAHAZEBG/63//8AjgAAA3kFywImAbEAAAAGAHMXBQAA//8Ajv3wA3kEjQImAbEAAAAHAZEA7f65//8AjgAAA3kEjwImAbEAAAAHAZEBkAOJ//8AjgAAA3kEjQImAbEAAAAHAJ0BSv0y//8AjgAABIUF3gImAbMAAAAHAHMBigAY//8Ajv3wBIUEjQImAbMAAAAHAZEBgv65//8AjgAABIUGCwImAbMAAAAHAJsApQAa//8AZv/uBGQFxAImAbQAAAAGAG5nFAAA//8AZv/uBGQGKgImAbQAAAAHAJwAnwB6//8AZv/uBGwGGQImAbQAAAAHAKEA0QAr//8AjgAABEkF3gImAbYAAAAHAHMBIQAY//8Ajv3wBEkEjQImAbYAAAAHAZEBGf65//8AjgAABEkGCwImAbYAAAAGAJs8GgAA//8AT//uBBkF8AImAbcAAAAHAHMBPQAq//8AT//uBBkGFgImAbcAAAAGAJpBKAAA//8AT/47BBkEnQImAbcAAAAHAHcBSv/6//8AT//uBBkGHQImAbcAAAAGAJtYLAAA//8APP3wA+kEjQImAbgAAAAHAZEBFv65//8APAAAA+kGCwImAbgAAAAGAJs5GgAA//8Afv/uBHsGIgImAbkAAAAHAKAAhwAr//8Afv/uBHsFtQImAbkAAAAHAG4AgAAF//8Afv/uBHsGGwImAbkAAAAHAJwAuABr//8Afv/uBHsGTgImAbkAAAAHAJ4BGgBy//8Afv/uBIUGCgImAbkAAAAHAKEA6gAcAAEAfv58BHsEjQAmAAABERQGBzMOARUUFjMyNjcXDgEjIiY1NDY3IyIkNREzERQWMzI2NREEe3NsAVBRICcaKhYVIU03XnUjJgbp/uryjn9/jQSN/QqBtjYzXDghIw0KjhMZaWAuVCfdzAL2/Qpyd3dyAvb//wA0AAAF1wYEAiYBuwAAAAcAmgEWABb//wATAAAEPAYEAiYBvQAAAAYAmjwWAAD//wATAAAEPAXKAiYBvQAAAAYAaBgaAAD//wBKAAAD6wXfAiYBvgAAAAcAcwEoABn//wBKAAAD6wXfAiYBvgAAAAcAnQD5ACn//wBKAAAD6wYMAiYBvgAAAAYAm0MbAAD//wBP/+4IiQSdACYBtwAAAAcBtwRwAAD//wAaAAAFKAZwAiYAIwAAAAYAqeUAAAD///+vAAAE2QZyACYAJ2QAAAcAqf7YAAL////cAAAFdAZwACYAKmQAAAcAqf8FAAD////jAAACBAZyACYAK2QAAAcAqf8MAAL//wAq/+sFLwZwACYAMRQAAAcAqf9TAAD///9nAAAFUwZwACYAO2QAAAcAqf6QAAD//wATAAAE7gZwACYAtRQAAAcAqf88AAD///+w/+sCoQZfAiYAvgAAAAcAqv8T/7v//wAaAAAFKAWwAgYAIwAA//8AnwAABLwFsAIGACQAAP//AJ8AAAR1BbACBgAnAAD//wBYAAAEcQWwAgYAPAAA//8AnwAABRAFsAIGACoAAP//AK0AAAGgBbACBgArAAD//wCfAAAFLwWwAgYALQAA//8AnwAABmIFsAIGAC8AAP//AJ8AAAUQBbACBgAwAAD//wB0/+sFGwXFAgYAMQAA//8AnwAABNoFsAIGADIAAP//ADUAAAS1BbACBgA2AAD//wATAAAE7wWwAgYAOwAA//8ALwAABOoFsAIGADoAAP///70AAAKSBw0CJgArAAAABwBo/xkBXf//ABMAAATvBw0CJgA7AAAABwBoAHYBXf//AFb/6wR5BlwCJgC2AAAABwCpAUT/7P//AGD/7AQMBlsCJgC6AAAABwCpAQ3/6///AH7+YQQGBlwCJgC8AAAABwCpARf/7P//AKn/6wJ+BkYCJgC+AAAABgCpA9YAAP//AID/6wQIBmACJgDGAAAABgCqGLwAAP//AI4AAARrBDoCBgCLAAD//wBT/+wENAROAgYAUQAA//8Akv5gBB8EOgIGAHQAAP//ACAAAAP1BDoCBgBYAAD//wAhAAAD7QQ6AgYAWgAA////xP/rApkFtQImAL4AAAAHAGj/IAAF//8AgP/rBAgFtgImAMYAAAAGAGglBgAA//8AU//sBDQGXAImAFEAAAAHAKkBGf/s//8AgP/rBAgGRwImAMYAAAAHAKkBCf/X//8AZv/rBi0GRQImAMkAAAAHAKkCIf/V//8AnwAABHUHDQImACcAAAAHAGgAWwFd//8AnwAABDcHIQImAKwAAAAHAHMBfQFbAAEAU//rBKAFxQAlAAABNCYnJiQ1NCQzMgAVIzQmIyIGFRQWFx4BFRQEIyIkNTMUFjMyNgOtg676/v4BH+r0ASLzlo+HjZe47+/+4fHp/qzztJaJlAF2XHMuQs6us+H/AL1yiXNdVWsyQdiwudTu24eBawD//wCtAAABoAWwAgYAKwAA////vQAAApIHDQImACsAAAAHAGj/GQFd//8AOv/rA+YFsAIGACwAAP//AJ8AAAUvBbACBgAtAAD//wCfAAAFLwbJAiYALQAAAAcAcwFzAQP//wA//+sE2QdcAiYA2QAAAAcAnADPAaz//wAaAAAFKAWwAgYAIwAA//8AnwAABLwFsAIGACQAAP//AJ8AAAQ3BbACBgCsAAD//wCfAAAEdQWwAgYAJwAA//8AmgAABQsHXAImANcAAAAHAJwBHQGs//8AnwAABmIFsAIGAC8AAP//AJ8AAAUQBbACBgAqAAD//wB0/+sFGwXFAgYAMQAA//8AnwAABREFsAIGALEAAP//AJ8AAATaBbACBgAyAAD//wB0/+sE2AXFAgYAJQAA//8ANQAABLUFsAIGADYAAP//AC8AAATqBbACBgA6AAD//wBe/+wEAQROAgYAQwAA//8AWf/sA/gETwIGAEcAAP//AIYAAAQSBgUCJgDrAAAABwCcAJUAVf//AFP/7AQ0BE4CBgBRAAD//wCA/mAENAROAgYAUgAAAAEAUf/sA/cETgAbAAAlMjY1MxQEIyICPQE0EjMyFhUjNCYjIgYdARQWAjtbfOX+/7j0+fnzx/PldWKLbGquZ1Gg2gEu8SPwATDht1t6w5ojncAA//8AEP5LA/wEOgIGAFsAAP//ACEAAAPtBDoCBgBaAAD//wBZ/+wD+AXMAiYARwAAAAYAaBocAAD//wCFAAADTQXKAiYA5wAAAAcAcwC+AAT//wBR/+wDzwROAgYAVQAA//8AkAAAAYMGGAIGAEsAAP///6AAAAJ1BbYCJgCKAAAABwBo/vwABv///7D+SwGOBhgCBgBMAAD//wCPAAAEZQXJAiYA7AAAAAcAcwE8AAP//wAQ/ksD/AYFAiYAWwAAAAYAnE9VAAD//wBEAAAGuwciAiYAOQAAAAcAQgHaAVz//wAlAAAF0AXLAiYAWQAAAAcAQgFWAAX//wBEAAAGuwchAiYAOQAAAAcAcwKRAVv//wAlAAAF0AXKAiYAWQAAAAcAcwINAAT//wBEAAAGuwcNAiYAOQAAAAcAaAFxAV3//wAlAAAF0AW2AiYAWQAAAAcAaADtAAb//wATAAAE7wciAiYAOwAAAAcAQgDfAVz//wAQ/ksD/AXLAiYAWwAAAAYAQmEFAAD//wBSBAQBCwYYAgYACQAA//8AUgP8Aj8GGAIGAAQAAP//AJoAAAOyBbAAJgQbAAAABwQbAiUAAP//ADEAAARSBi0AJgBIAAAABwBOAs8AAP///7X+SwJsBeoCJgCYAAAABwCb/z//+f//ADMD1gFpBhgCBgFmAAD//wCfAAAGYgchAiYALwAAAAcAcwKSAVv//wCAAAAGdQXfAiYATwAAAAcAcwKhABn//wAa/n4FKAWwAiYAIwAAAAcAogFIAAD//wBe/oUEAQROAiYAQwAAAAcAogCQAAf///89/+sFGwasAiYAMQAAAAcB1f7RANX//wAxAAAG5gYtACYASAAAAAcBkgLPAAD//wAxAAAHIQYtACYASAAAACcASALPAAAABwBOBZ4AAP//AJ8AAAR1ByICJgAnAAAABwBCAMQBXP//AJoAAAULByICJgDXAAAABwBCAS8BXP//AFn/7AP4BeECJgBHAAAABwBCAIMAG///AIYAAAQSBcsCJgDrAAAABwBCAKcABf//AEgAAAVRBbACBgC0AAD//wBP/iIFfgQ6AgYAyAAA//8AEQAABO8HRAImARQAAAAHAKcEOwFW////4wAABBgGMgImARUAAAAHAKcD1wBE//8AU/5LCIQETgAmAFEAAAAHAFsEiAAA//8AdP5LCYsFxQAmADEAAAAHAFsFjwAA//8ASv46BHsFxQImANYAAAAHAZwBkv+g//8ATf47A8QETQImAOoAAAAHAZwBOf+h//8AdP4+BNgFxQImACUAAAAHAZwB0/+k//8AUf4+A/cETgImAEUAAAAHAZwBS/+k//8AEwAABO8FsAIGADsAAP//ACD+XwP1BDoCBgC4AAD//wCtAAABoAWwAgYAKwAA//8AGAAAB4kHXAImANUAAAAHAJwCHAGs//8AFwAABl8GBQImAOkAAAAHAJwBpQBV//8ArQAAAaAFsAIGACsAAP//ABoAAAUoB1wCJgAjAAAABwCcAOoBrP//AF7/7AQBBhoCJgBDAAAABgCcb2oAAP//ABoAAAUoBw0CJgAjAAAABwBoAJMBXf//AF7/7AQBBcsCJgBDAAAABgBoGBsAAP////YAAAdXBbACBgB/AAD//wA0/+sGhAROAgYAhAAA//8AnwAABHUHXAImACcAAAAHAJwAsgGs//8AWf/sA/gGGwImAEcAAAAGAJxxawAA//8AU//qBRsG2gImAUEAAAAHAGgAcwEq//8AWf/sA/gEUAIGAJkAAP//AFn/7AP4BcwCJgCZAAAABgBoGhwAAP//ABgAAAeJBw0CJgDVAAAABwBoAcUBXf//ABcAAAZfBbYCJgDpAAAABwBoAU4ABv//AEr/6wR7ByICJgDWAAAABwBoAFgBcv//AE3/7APEBcoCJgDqAAAABgBoABoAAP//AJoAAAULBvYCJgDXAAAABwBuAOUBRv//AIYAAAQSBaACJgDrAAAABgBuXfAAAP//AJoAAAULBw0CJgDXAAAABwBoAMYBXf//AIYAAAQSBbYCJgDrAAAABgBoPgYAAP//AHT/6wUbByICJgAxAAAABwBoALoBcv//AFP/7AQ0BcsCJgBRAAAABgBoNRsAAP//AGr/6wURBcUCBgESAAD//wBS/+wEMwROAgYBEwAA//8Aav/rBREHCAImARIAAAAHAGgAxgFY//8AUv/sBDMF5wImARMAAAAGAGghNwAA//8AiP/sBNcHIwImAOIAAAAHAGgAjwFz//8AUf/rA+gFywImAPoAAAAGAGgPGwAA//8AP//rBNkG9gImANkAAAAHAG4AlwFG//8AEP5LA/wFoAImAFsAAAAGAG4X8AAA//8AP//rBNkHDQImANkAAAAHAGgAeAFd//8AEP5LA/wFtgImAFsAAAAGAGj5BgAA//8AP//rBNkHSwImANkAAAAHAKEBAQFd//8AEP5LBBwF9AImAFsAAAAHAKEAgQAG//8AjwAABOkHDQImANwAAAAHAGgAwgFd//8AXwAAA+AFtgImAPQAAAAGAGgNBgAA//8AnwAABlkHDQAmAOELAAAnACsEuQAAAAcAaAFuAV3//wCPAAAFyQW2ACYA+QAAACcAigRHAAAABwBoAR8ABv//AC/+SwVUBbACJgA6AAAABwGaA8YAAP//ACH+SwRYBDoCJgBaAAAABwGaAsoAAP//AFP/7AQDBhgCBgBGAAD//wAu/ksF/QWwAiYA2AAAAAcBmgRvAAD//wAf/ksFBwQ6AiYA7QAAAAcBmgN5AAD//wAa/qUFKAWwAiYAIwAAAAcAqAT8AAD//wBe/qwEAQROAiYAQwAAAAcAqAREAAf//wAaAAAFKAfHAiYAIwAAAAcApgT5AUj//wBe/+wEAQaFAiYAQwAAAAcApgR+AAb//wAaAAAFPgejAiYAIwAAAAcBowCzARP//wBe/+wEwwZiAiYAQwAAAAYBozjSAAD//wAEAAAFKAegAiYAIwAAAAcBogC4AR3///+J/+wEAQZfAiYAQwAAAAYBoj3cAAD//wAaAAAFKAfWAiYAIwAAAAcBoQC3AQv//wBe/+wERgaVAiYAQwAAAAYBoTzKAAD//wAaAAAFKAfiAiYAIwAAAAcBoAC4ARH//wBe/+wEAQahAiYAQwAAAAYBoD3QAAD//wAa/qUFKAdHAiYAIwAAACcAmgC3AVkABwCoBPwAAP//AF7+rAQBBgUCJgBDAAAAJgCaPBcABwCoBEQABwAA//8AGgAABSgHzgImACMAAAAHAZ8A4wFQ//8AXv/sBAEGjAImAEMAAAAGAZ9oDgAA//8AGgAABSgIFwImACMAAAAHAaQA6AF///8AXv/sBAEG1QImAEMAAAAGAaRtPQAA//8AGgAABSgISgImACMAAAAHAZ4A4gFC//8AXv/sBAEHCAImAEMAAAAGAZ5nAAAA//8AGgAABSgIJAImACMAAAAHAZ0A5QFI//8AXv/sBAEG4gImAEMAAAAGAZ1qBgAA//8AGv6lBSgHXAImACMAAAAnAJwA6gGsAAcAqAT8AAD//wBe/qwEAQYaAiYAQwAAACYAnG9qAAcAqAREAAcAAP//AJ/+rwR1BbACJgAnAAAABwCoBMAACv//AFn+pQP4BE8CJgBHAAAABwCoBJUAAP//AJ8AAAR1B8cCJgAnAAAABwCmBMEBSP//AFn/7AP4BoYCJgBHAAAABwCmBIAAB///AJ8AAAR1B2MCJgAnAAAABwCgAIEBbP//AFn/7AP4BiICJgBHAAAABgCgQCsAAP//AJ8AAAUGB6MCJgAnAAAABwGjAHsBE///AFn/7ATFBmMCJgBHAAAABgGjOtMAAP///8wAAAR1B6ACJgAnAAAABwGiAIABHf///4v/7AP4BmACJgBHAAAABgGiP90AAP//AJ8AAASJB9YCJgAnAAAABwGhAH8BC///AFn/7ARIBpYCJgBHAAAABgGhPssAAP//AJ8AAAR1B+ICJgAnAAAABwGgAIABEf//AFn/7AP4BqICJgBHAAAABgGgP9EAAP//AJ/+rwR1B0cCJgAnAAAAJwCaAH8BWQAHAKgEwAAK//8AWf6lA/gGBgImAEcAAAAmAJo+GAAHAKgElQAAAAD//wCtAAACFwfHAiYAKwAAAAcApgN+AUj//wCPAAAB+gZxAiYAigAAAAcApgNh//L//wCf/q8BrQWwAiYAKwAAAAcAqAN9AAr//wCC/q8BkAYYAiYASwAAAAcAqANgAAr//wB0/pwFGwXFAiYAMQAAAAcAqAUf//f//wBT/pwENAROAiYAUQAAAAcAqASb//f//wB0/+sFGwfcAiYAMQAAAAcApgUgAV3//wBT/+wENAaFAiYAUQAAAAcApgSbAAb//wB0/+sFZQe4AiYAMQAAAAcBowDaASj//wBT/+wE4AZiAiYAUQAAAAYBo1XSAAD//wAr/+sFGwe1AiYAMQAAAAcBogDfATL///+m/+wENAZfAiYAUQAAAAYBolrcAAD//wB0/+sFGwfrAiYAMQAAAAcBoQDeASD//wBT/+wEYwaVAiYAUQAAAAYBoVnKAAD//wB0/+sFGwf3AiYAMQAAAAcBoADfASb//wBT/+wENAahAiYAUQAAAAYBoFrQAAD//wB0/pwFGwdcAiYAMQAAACcAmgDeAW4ABwCoBR//9///AFP+nAQ0BgUCJgBRAAAAJgCaWRcABwCoBJv/9wAA//8AZv/rBa8HEwImAJQAAAAHAHMB1QFN//8AUv/sBLwF3wImAJUAAAAHAHMBVgAZ//8AZv/rBa8HFAImAJQAAAAHAEIBHgFO//8AUv/sBLwF4AImAJUAAAAHAEIAnwAa//8AZv/rBa8HuQImAJQAAAAHAKYFGwE6//8AUv/sBLwGhQImAJUAAAAHAKYEnAAG//8AZv/rBa8HVQImAJQAAAAHAKAA2wFe//8AUv/sBLwGIQImAJUAAAAGAKBcKgAA//8AZv6lBa8GLgImAJQAAAAHAKgFCwAA//8AUv6cBLwEqQImAJUAAAAHAKgEm//3//8Ahv6cBPEFsAImADcAAAAHAKgFE//3//8Ae/6lBAoEOgImAFcAAAAHAKgERQAA//8Ahv/rBPEHxwImADcAAAAHAKYFFAFI//8Ae//sBAoGcQImAFcAAAAHAKYEmv/y//8Ahv/rBksHIQImAJYAAAAHAHMB1AFb//8Ae//sBSkFygImAJcAAAAHAHMBVAAE//8Ahv/rBksHIgImAJYAAAAHAEIBHQFc//8Ae//sBSkFywImAJcAAAAHAEIAnQAF//8Ahv/rBksHxwImAJYAAAAHAKYFGgFI//8Ae//sBSkGcQImAJcAAAAHAKYEmv/y//8Ahv/rBksHYwImAJYAAAAHAKAA2gFs//8Ae//sBSkGDAImAJcAAAAGAKBaFQAA//8Ahv6cBksGEAImAJYAAAAHAKgFGf/3//8Ae/6lBSkElAImAJcAAAAHAKgERQAA//8AE/6vBO8FsAImADsAAAAHAKgE2wAK//8AEP3/A/wEOgImAFsAAAAHAKgFOv9a//8AEwAABO8HxwImADsAAAAHAKYE3AFI//8AEP5LA/wGcQImAFsAAAAHAKYEXv/y//8AEwAABO8HYwImADsAAAAHAKAAnAFs//8AEP5LA/wGDAImAFsAAAAGAKAeFQAAAAIAU//sBK8GGAAaACgAAAEjESMnDgEjIgI9ARASMzIWFzc1IzUzNTMVMwEUFjMyNjcRLgEjIgYVBK+s0hQ1j2HL2trNWocyA/Dw86z8l3F/TmkjI2lMf3MEyfs3hExMARzxFQEIAThEQQH/qqWl/IaZrkA+Adg9Qs6rAP//AFP+xASvBhgAJgBGAAAAJwHTAYkCQgAHAEEAm/+D//8An/6aBWcFsAImAC0AAAAHAZwEGAAA//8Aj/6aBKEEOgImAOwAAAAHAZwDUgAA//8An/6aBbMFsAImACoAAAAHAZwEZAAA//8Ahv6aBLQEOgImAO8AAAAHAZwDZQAA//8ANf6aBLUFsAImADYAAAAHAZwCQgAA//8AI/6aA9AEOgImAPEAAAAHAZwBxQAA//8AL/6aBQQFsAImADoAAAAHAZwDtQAA//8AIf6aBAgEOgImAFoAAAAHAZwCuQAA//8Aj/6aBYwFsAImANwAAAAHAZwEPQAA//8AX/6aBIMEOwImAPQAAAAHAZwDNAAA//8Aj/6aBOkFsAImANwAAAAHAZwC8QAA//8AX/6aA+AEOwImAPQAAAAHAZwB6AAA//8An/6aBDcFsAImAKwAAAAHAZwA5gAA//8Ahf6aA00EOgImAOcAAAAHAZwApQAA//8AGP6aB+QFsAImANUAAAAHAZwGlQAA//8AF/6aBpMEOgImAOkAAAAHAZwFRAAA//8AIP5DBcAFxAImATsAAAAHAZwC7f+p////zv5HBHYETwImATwAAAAHAZwB9f+t//8AfQAABAwGGAIGAEoAAAAC/9cAAATBBbAAEgAbAAABIxUhMgQVFAQjIREjNTM1MxUzAxEhMjY1NCYjAmbfATT4AQ7+8ff92b2989/fATSKiYiLBEfK7M7Q8wRHqr+//cn+CJFybocAAv/XAAAEwQWwABIAGwAAASMVITIEFRQEIyERIzUzNTMVMwMRITI2NTQmIwJm3wE0+AEO/vH3/dm9vfPf3wE0iomIiwRHyuzO0PMER6q/v/3J/giRcm6HAAH/9wAABDcFsAANAAABIxEjESM1MxEhFSERMwKG9POoqAOY/Vv0Ap/9YQKfqgJnw/5cAAAB/+kAAANNBDoADQAAASERIxEjNTMRIRUhFSECeP7/8pycAsj+KgEBAdH+LwHRqgG/xPsAAf/dAAAFQwWwABQAAAEjESMRIzUzNTMVMxUjETMBIQkBIQJOqPPW1vPGxosByQEg/fQCNf7XAnb9igR6qoyMqv7NAmn9Sf0HAAAAAAH/zAAABEkGGAAUAAABIxEjESM1MzUzFTMVIxEzASEJASEB9m/yycny1NRpAQ8BHP6fAY/+5gHZ/icEu6qzs6r94QGe/hH9tQAAAP//AJr+bwX3B1wCJgDXAAAAJwCcAR0BrAAHAA4Ek//E//8Ahv5vBP4GBQImAOsAAAAnAJwAlQBVAAcADgOa/8T//wCf/m8F/AWwAiYAKgAAAAcADgSY/8T//wCG/m8E/QQ6AiYA7wAAAAcADgOZ/8T//wCf/m8HTgWwAiYALwAAAAcADgXq/8T//wCP/m8GWwQ6AiYA7gAAAAcADgT3/8T//wAu/m8F9gWwAiYA2AAAAAcADgSS/8T//wAf/m8FAAQ6AiYA7QAAAAcADgOc/8QAAQATAAAE7wWwAA8AAAkBIQEzFSMHESMRIzUzASECgAFgAQ/+aWzHB/LPdf5pAQ8C7ALE/QWqDv4DAguqAvsAAAEAIP5fA/UEOgARAAAFIxEjESM1MwEzExczNxMzATMDWdXzx5v+u/vdFAMU1/v+vKgB/mABoKoDkf00X18CzPxvAAAAAQAvAAAE6gWwABEAAAEjASEJASEBIzUzASEJASEBMwPXjwGi/t3+w/7E/uEBm4J0/n0BHQEwATQBH/59gQKV/WsCI/3dApWqAnH95gIa/Y8AAAAAAQAhAAAD7QQ6ABEAAAEjASELASEBIzUzASEbASEBMwNRkgEu/uzR0f7qAS2Mgf7oARTFyAEX/ueHAdf+KQF8/oQB16oBuf6NAXP+RwAAAP//AGD/7AQMBE0CBgC6AAD//wAWAAAEcgWwAiYAKAAAAAcB0/9//m7//wCyAm0F6gMxAEYBhrYAZmZAAAACAJoAAAGNBbAAAwAHAAABIxEzESM1MwGN8/Pz8wHrA8X6UOoAAAAAAAAAAAAAAAAAABgATgCOAOQBPAFMAW4BkgG2Ac4B5AHyAf4CDAI8AkwCdgKwAtIDBANEA2IDqgPsA/gEBAQcBDAESAR4BOwFCgVABXIFmAWyBcgF/gYWBiIGPgZcBmwGkAaqBt4HAgc+B3YHsAfEB+QH/ggmCEgIYAh2CIoImAiqCMII0AjgCR4JVAl+CbIJ5goKCk4KcgqECqgKxgrSCwwLMAteC5QLyAvoDCAMRgxqDIIMrAzMDPYNDA08DUoNeA2iDbYN6A4cDmYOkA6kDwgPHA9yD7IPvg/OEDIQQBBmEIYQsBDqEPoRIBE2EUQRYhFyEZwRqBG6EcwR3hIOEjgSWhKqEtATChNoE7gT0hQeFFQUfhSKFKgUxBTcFQgVPBV8FdAV7BYiFmIWnBbGFvQXEhdGF1oXbheIF5YXvBfeF/4YFBg6GEgYVhhgGH4YlBiiGLAYyhjSGOQY+hk0GUoZZhl4GZYZ0Bn8GjgafBq8GtgbIBtaG5IbthvuHAwcRByOHLYc6B0eHVIddh2cHdoeDB5MHogexB8KHzgfcB+mH9YgACAYIEAgbCCaINYg7iEOITgheiGSIbYh0CHwIhgiRCJoIpwi2CMAI0IjeCOKI7Qj4CQaJDQkUiRyJJIkqiS8JNAlKiVCJWQlfiWeJcQl7iYQJj4mdCacJtgnBic6J2gnliewJ+IoFChCKIIouCjaKP4pLClcKZIpxCoGKkIqkirgKxorTityK5or3CwYLHos2C0WLVQtgC2oLdQt6C4GLhYuJi7ALxgvRC9yL7AvxC/YMAAwJjBMMHAwkDCwMMww6DESMTwxkjHkMgIyIDJKMnIylDLUMxAzPDNmM44ztjPuNBo0RjRWNGY0jDTENRY1XDWiNeQ2JjZgNpo2zjcCNzw3cjegN844DDgMOAw4DDgMOAw4DDgMOAw4DDgMOAw4DDgWOCA4LDhCOFg4bjh6OIY4kji2ONA49DkMORg5KDmkObg5zDnaOfg6GjpWOpg62DsuO2g7rjvYPA48IDwyPEQ8VjySPKY8xDzSPOw9Pj1sPcQ96D34Pgg+LD46Pk4+ZD6OPo4/aD+uP+BAAEAwQFBAbkCQQJ5A0EEAQSBBTkF2QZBBqkHKQdpB9kIsQlpCfkKYQq5C4EL4QwRDIEM+Q05DbkOIQ7ZD7EQkRFxEcESQRKpEzETsRQRFGkVGRVZFfkW4RdhGAkY+RlpGokbeRu5HFkdQR2BHkEfMR+ZILkhqSJRIokjQSPBJKklMSX5JvkosSkpKiErQSwpLTkt0S7JL4Ev+TB5MOkxYTJpMvEzETMxM1E0ETTRNYE18TapNtk3CTc5N2k3mTfJN/k4KThZOIk4uTjpORk5STl5Oak52ToJOjk6aTqZOsk6+TspO1k7iTu5O+k8GTxJPHk8qTzZPQk9OT1pPZk9yT35Pik+WT6JPrk+6T8ZP0k/eT+pP9lACUA5QGlAmUDJQPlBKUFZQYlBuUKRQ/FEIURRRIFEsUThRRFFQUVxRaFF0UYBRjFGYUaRRsFG8UfBSPlJKUlZSYlJuUnpShlKSUp5SqlK2UsJSzlLaUuZS8lL+UwpTFlMiUy5TOlNGU1JTXlNqU3ZTglOOU5pTplOyU75TylPWU+JT7lP6VAZUElQeVCpUNlRCVE5UWlRmVHJUflSKVJZUolSuVLpUxlTSVN5U6lT2VQJVDlUaVSZVMlU+VUpVVlViVW5VelWGVZJVnlWqVbZVwlXOVdpV5lXyVf5WOlZ2VoJWjlaaVqZWsla+VspW1lbiVu5W+lcGVxJXHlcqVzZXQldOV1pXZldyV35XileWV6JXrle6V8ZX0lfeV+pX9lgCWA5YGlgmWDJYPlhKWFZYYlhuWHpYhliSWJ5YqljeWOpY9lkCWQ5ZGlkmWTJZPllyWX5ZilmWWaJZrlm6WcZZ0lneWepZ9loCWg5aGlomWjJaPlpKWlZaYlpuWnpahlqSWp5aqlq2WsJazlraWuZa8lr+WwpbFlsiWy5baFt0W4BbjFuYW6RbsFu8W8hb1FvgW+xb+FwEXBBcHFwkXCxcNFw8XERcTFxUXFxcZFxsXHRcfFyEXIxcmFykXLBcvFzIXNRc4FzoXPBc+F0AXQhdFF0gXSxdOF1EXVBdXF2WXZ5dql2yXbpdxl3SXdpd4l3qXfJd/l4GXg5eFl4eXiZeLl42Xj5eRl5OXlpeYl5qXpRenF6kXrBevF7EXsxe2F7gXuxe+F8EXxBfHF8oXzRfQF9MX1hfYF9oX3RfgF+MX5RfoF+sX7hfxF/QX9xf7F/4YARgEGAcYCRgLGA4YERgUGBcYGhgdGCAYIxglGCcYKRgsGC8YMRg0GDcYOhg9GD8YQRhEGEcYShhMGE8YUhhVGFgYWxheGGEYZBhnGGoYbRhvGHEYdBh3GHoYfRiAGIMYhhiJGIwYjxiSGJUYmRidGKAYoxilGKgYqxiuGLEYtBi3GLoYvRjAGMMYxhjJGMwYzxjTGNcY2hjdGOAY4xjmGOkY7BjvGPMY9xj6GP0ZABkDGQYZCRkMGQ8ZEhkVGRgZGxkeGSEZJRkpGSwZLxkyGTUZOBk7GT4ZQRlEGUcZShlNGVAZUxlWGVkZXRlhGWQZZxlqGW0ZcBlzGXYZeRl8GX8ZghmFGYgZixmOGZEZlBmXGZoZnRmgGaMZphmpGawZrxmyGbUZuBm7GcqZzpnRmdSZ15namd2Z4JnjmeaZ6Znsme+Z8pn1mfiZ+5n+mgGaBJoGmhGaHJojGimaMxo8mkCaRJpHmkqaTZpQmlOaVppemmcacZp7mn2agJqDGoMaiAAAAAAAB0BYgABAAAAAAAAAB8AAAABAAAAAAABAAYAHwABAAAAAAACAAYAJQABAAAAAAADABIAKwABAAAAAAAEAA0APQABAAAAAAAFABYASgABAAAAAAAGAA0AYAABAAAAAAAHACAAbQABAAAAAAAJAAYAjQABAAAAAAALAAoAkwABAAAAAAAMABMAnQABAAAAAAANAC4AsAABAAAAAAAOACoA3gABAAAAAAASAA0BCAADAAEECQAAAD4BFQADAAEECQABAAwBUwADAAEECQACAAwBXwADAAEECQADACQBawADAAEECQAEABoBjwADAAEECQAFACwBqQADAAEECQAGABoB1QADAAEECQAHAEAB7wADAAEECQAJAAwCLwADAAEECQALABQCOwADAAEECQAMACYCTwADAAEECQANAFwCdQADAAEECQAOAFQC0QADAAEECQAQAAwDJQADAAEECQARAAwDMUZvbnQgZGF0YSBjb3B5cmlnaHQgR29vZ2xlIDIwMTNSb2JvdG9NZWRpdW1Hb29nbGU6Um9ib3RvOjIwMTNSb2JvdG8gTWVkaXVtVmVyc2lvbiAxLjIwMDMxMDsgMjAxM1JvYm90by1NZWRpdW1Sb2JvdG8gaXMgYSB0cmFkZW1hcmsgb2YgR29vZ2xlLkdvb2dsZUdvb2dsZS5jb21DaHJpc3RpYW4gUm9iZXJ0c29uTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFJvYm90byBNZWRpdW0ARgBvAG4AdAAgAGQAYQB0AGEAIABjAG8AcAB5AHIAaQBnAGgAdAAgAEcAbwBvAGcAbABlACAAMgAwADEAMwBSAG8AYgBvAHQAbwBNAGUAZABpAHUAbQBHAG8AbwBnAGwAZQA6AFIAbwBiAG8AdABvADoAMgAwADEAMwBSAG8AYgBvAHQAbwAgAE0AZQBkAGkAdQBtAFYAZQByAHMAaQBvAG4AIAAxAC4AMgAwADAAMwAxADAAOwAgADIAMAAxADMAUgBvAGIAbwB0AG8ALQBNAGUAZABpAHUAbQBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUARwBvAG8AZwBsAGUALgBjAG8AbQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAUgBvAGIAbwB0AG8ATQBlAGQAaQB1AG0AAAIAAAAAAAD/agBkAAAAAAAAAAAAAAAAAAAAAAAAAAAEHAAAAQIAAgADAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAIoBAwCDAJMA8gDzAI0AlwCIAQQA3gDxAJ4AqgD1APQA9gCiAJAA8ACRAO0AiQCgAOoAuAChAO4BBQDXAQYA4gDjAQcBCACwALEBCQCmAQoBCwEMAQ0BDgEPANgA4QDbANwA3QDgANkA3wEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiAJ8BIwEkASUBJgEnASgBKQEqASsBLAEtAJsBLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQCyALMBzgC2ALcAxAHPALQAtQDFAIIAwgCHAdAAqwDGAL4AvwC8AdEB0gHTAdQB1QHWAdcB2ACMAdkB2gHbAdwB3QCYAJoAmQDvAKUAkgCcAKcAjwCUAJUAuQHeAd8B4ADAAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AKwCOAI5AOkCOgI7AjwArQDJAMcArgBiAGMCPQBkAMsAZQDIAMoAzwDMAM0AzgBmANMA0ADRAK8AZwDWANQA1QBoAOsAagBpAGsAbQBsAG4CPgBvAHEAcAByAHMAdQB0AHYAdwB4AHoAeQB7AH0AfAB/AH4AgACBAOwAugI/AkACQQJCAkMCRAD9AP4CRQJGAkcCSAD/AQACSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAPgA+QJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAPsA/AKLAowA5ADlAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqIAuwKjAqQCpQKmAOYA5wKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wQABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhAPcEIgQjAAQHdW5pMDAwOQZtYWNyb24OcGVyaW9kY2VudGVyZWQESGJhcgxrZ3JlZW5sYW5kaWMDRW5nA2VuZwVsb25ncwVPaG9ybgVvaG9ybgVVaG9ybgV1aG9ybgd1bmkwMjM3BXNjaHdhB3VuaTAyRjMJZ3JhdmVjb21iCWFjdXRlY29tYgl0aWxkZWNvbWIEaG9vawd1bmkwMzBGCGRvdGJlbG93BXRvbm9zDWRpZXJlc2lzdG9ub3MJYW5vdGVsZWlhBUdhbW1hBURlbHRhBVRoZXRhBkxhbWJkYQJYaQJQaQVTaWdtYQNQaGkDUHNpBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBmxhbWJkYQJ4aQNyaG8Gc2lnbWExBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNwc2kFb21lZ2EHdW5pMDNEMQd1bmkwM0QyB3VuaTAzRDYHdW5pMDQwMgd1bmkwNDA0B3VuaTA0MDkHdW5pMDQwQQd1bmkwNDBCB3VuaTA0MEYHdW5pMDQxMQd1bmkwNDE0B3VuaTA0MTYHdW5pMDQxNwd1bmkwNDE4B3VuaTA0MUIHdW5pMDQyMwd1bmkwNDI0B3VuaTA0MjYHdW5pMDQyNwd1bmkwNDI4B3VuaTA0MjkHdW5pMDQyQQd1bmkwNDJCB3VuaTA0MkMHdW5pMDQyRAd1bmkwNDJFB3VuaTA0MkYHdW5pMDQzMQd1bmkwNDMyB3VuaTA0MzMHdW5pMDQzNAd1bmkwNDM2B3VuaTA0MzcHdW5pMDQzOAd1bmkwNDNBB3VuaTA0M0IHdW5pMDQzQwd1bmkwNDNEB3VuaTA0M0YHdW5pMDQ0Mgd1bmkwNDQ0B3VuaTA0NDYHdW5pMDQ0Nwd1bmkwNDQ4B3VuaTA0NDkHdW5pMDQ0QQd1bmkwNDRCB3VuaTA0NEMHdW5pMDQ0RAd1bmkwNDRFB3VuaTA0NEYHdW5pMDQ1Mgd1bmkwNDU0B3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDVCB3VuaTA0NUYHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjMHdW5pMDQ2NAd1bmkwNDY1B3VuaTA0NjYHdW5pMDQ2Nwd1bmkwNDY4B3VuaTA0NjkHdW5pMDQ2QQd1bmkwNDZCB3VuaTA0NkMHdW5pMDQ2RAd1bmkwNDZFB3VuaTA0NkYHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDdBB3VuaTA0N0IHdW5pMDQ3Qwd1bmkwNDdEB3VuaTA0N0UHdW5pMDQ3Rgd1bmkwNDgwB3VuaTA0ODEHdW5pMDQ4Mgd1bmkwNDgzB3VuaTA0ODQHdW5pMDQ4NQd1bmkwNDg2B3VuaTA0ODgHdW5pMDQ4OQd1bmkwNDhEB3VuaTA0OEUHdW5pMDQ4Rgd1bmkwNDkwB3VuaTA0OTEHdW5pMDQ5NAd1bmkwNDk1B3VuaTA0OUMHdW5pMDQ5RAd1bmkwNEEwB3VuaTA0QTEHdW5pMDRBNAd1bmkwNEE1B3VuaTA0QTYHdW5pMDRBNwd1bmkwNEE4B3VuaTA0QTkHdW5pMDRCNAd1bmkwNEI1B3VuaTA0QjgHdW5pMDRCOQd1bmkwNEJBB3VuaTA0QkMHdW5pMDRCRAd1bmkwNEMzB3VuaTA0QzQHdW5pMDRDNwd1bmkwNEM4B3VuaTA0RDgHdW5pMDRFMAd1bmkwNEUxB3VuaTA0RkEHdW5pMDRGQgd1bmkwNTAwB3VuaTA1MDIHdW5pMDUwMwd1bmkwNTA0B3VuaTA1MDUHdW5pMDUwNgd1bmkwNTA3B3VuaTA1MDgHdW5pMDUwOQd1bmkwNTBBB3VuaTA1MEIHdW5pMDUwQwd1bmkwNTBEB3VuaTA1MEUHdW5pMDUwRgd1bmkwNTEwB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDBCDXVuZGVyc2NvcmVkYmwNcXVvdGVyZXZlcnNlZAd1bmkyMDI1B3VuaTIwNzQJbnN1cGVyaW9yBGxpcmEGcGVzZXRhBEV1cm8HdW5pMjEwNQd1bmkyMTEzB3VuaTIxMTYJZXN0aW1hdGVkCW9uZWVpZ2h0aAx0aHJlZWVpZ2h0aHMLZml2ZWVpZ2h0aHMMc2V2ZW5laWdodGhzCmNvbG9uLmxudW0JcXVvdGVkYmx4C2NvbW1hYWNjZW50B3VuaUZFRkYHdW5pRkZGQwd1bmlGRkZECWZpdmUuc21jcAhmb3VyLnN1cAl6ZXJvLmxudW0ObGFyZ2VyaWdodGhvb2sMY3lyaWxsaWNob29rEGN5cmlsbGljaG9va2xlZnQLY3lyaWxsaWN0aWMOYnJldmV0aWxkZWNvbWINYnJldmVob29rY29tYg5icmV2ZWFjdXRlY29tYhNjaXJjdW1mbGV4dGlsZGVjb21iEmNpcmN1bWZsZXhob29rY29tYhNjaXJjdW1mbGV4Z3JhdmVjb21iE2NpcmN1bWZsZXhhY3V0ZWNvbWIOYnJldmVncmF2ZWNvbWIRY29tbWFhY2NlbnRyb3RhdGUGQS5zbWNwBkIuc21jcAZDLnNtY3AGRC5zbWNwBkUuc21jcAZGLnNtY3AGRy5zbWNwBkguc21jcAZJLnNtY3AGSi5zbWNwBksuc21jcAZMLnNtY3AGTS5zbWNwBk4uc21jcAZPLnNtY3AGUS5zbWNwBlIuc21jcAZTLnNtY3AGVC5zbWNwBlUuc21jcAZWLnNtY3AGVy5zbWNwBlguc21jcAZZLnNtY3AGWi5zbWNwCXplcm8uc21jcAhvbmUuc21jcAh0d28uc21jcAp0aHJlZS5zbWNwCWZvdXIuc21jcAh0d28ubG51bQhzaXguc21jcApzZXZlbi5zbWNwCmVpZ2h0LnNtY3AJbmluZS5zbWNwB29uZS5zdXAHdHdvLnN1cAl0aHJlZS5zdXAIb25lLmxudW0IZml2ZS5zdXAHc2l4LnN1cAlzZXZlbi5zdXAJZWlnaHQuc3VwCG5pbmUuc3VwCHplcm8uc3VwCGNyb3NzYmFyCXJpbmdhY3V0ZQlkYXNpYW94aWEKdGhyZWUubG51bQlmb3VyLmxudW0JZml2ZS5sbnVtCHNpeC5sbnVtBWcuYWx0CnNldmVuLmxudW0HY2hpLmFsdAplaWdodC5sbnVtCWFscGhhLmFsdAlkZWx0YS5hbHQERC5jbgRhLmNuBVIuYWx0BUsuYWx0BWsuYWx0BksuYWx0MgZrLmFsdDIJbmluZS5sbnVtBlAuc21jcA1jeXJpbGxpY2JyZXZlB3VuaTAwQUQGRGNyb2F0BGhiYXIEVGJhcgR0YmFyCkFyaW5nYWN1dGUKYXJpbmdhY3V0ZQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgHdW5pMDEwQQd1bmkwMTBCBkRjYXJvbgZkY2Fyb24HRW1hY3JvbgdlbWFjcm9uBkVicmV2ZQZlYnJldmUKRWRvdGFjY2VudAplZG90YWNjZW50B0VvZ29uZWsHZW9nb25lawZFY2Fyb24GZWNhcm9uC0djaXJjdW1mbGV4C2djaXJjdW1mbGV4B3VuaTAxMjAHdW5pMDEyMQxHY29tbWFhY2NlbnQMZ2NvbW1hYWNjZW50C0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4Bkl0aWxkZQZpdGlsZGUHSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJldmUHSW9nb25lawdpb2dvbmVrCklkb3RhY2NlbnQCSUoCaWoLSmNpcmN1bWZsZXgLamNpcmN1bWZsZXgMS2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAZMYWN1dGUGbGFjdXRlDExjb21tYWFjY2VudAxsY29tbWFhY2NlbnQGTGNhcm9uBmxjYXJvbgRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQxOY29tbWFhY2NlbnQMbmNvbW1hYWNjZW50Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUHT21hY3JvbgdvbWFjcm9uBk9icmV2ZQZvYnJldmUNT2h1bmdhcnVtbGF1dA1vaHVuZ2FydW1sYXV0BlJhY3V0ZQZyYWN1dGUMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudAZSY2Fyb24GcmNhcm9uBlNhY3V0ZQZzYWN1dGULU2NpcmN1bWZsZXgLc2NpcmN1bWZsZXgHdW5pMDIxOAd1bmkwMjE5B3VuaTAyMUEHdW5pMDIxQgd1bmkwMTYyB3VuaTAxNjMGVGNhcm9uBnRjYXJvbgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQHQUVhY3V0ZQdhZWFjdXRlC09zbGFzaGFjdXRlC29zbGFzaGFjdXRlC0Rjcm9hdC5zbWNwCEV0aC5zbWNwCVRiYXIuc21jcAtBZ3JhdmUuc21jcAtBYWN1dGUuc21jcBBBY2lyY3VtZmxleC5zbWNwC0F0aWxkZS5zbWNwDkFkaWVyZXNpcy5zbWNwCkFyaW5nLnNtY3APQXJpbmdhY3V0ZS5zbWNwDUNjZWRpbGxhLnNtY3ALRWdyYXZlLnNtY3ALRWFjdXRlLnNtY3AQRWNpcmN1bWZsZXguc21jcA5FZGllcmVzaXMuc21jcAtJZ3JhdmUuc21jcAtJYWN1dGUuc21jcBBJY2lyY3VtZmxleC5zbWNwDklkaWVyZXNpcy5zbWNwC050aWxkZS5zbWNwC09ncmF2ZS5zbWNwC09hY3V0ZS5zbWNwEE9jaXJjdW1mbGV4LnNtY3ALT3RpbGRlLnNtY3AOT2RpZXJlc2lzLnNtY3ALVWdyYXZlLnNtY3ALVWFjdXRlLnNtY3AQVWNpcmN1bWZsZXguc21jcA5VZGllcmVzaXMuc21jcAtZYWN1dGUuc21jcAxBbWFjcm9uLnNtY3ALQWJyZXZlLnNtY3AMQW9nb25lay5zbWNwC0NhY3V0ZS5zbWNwEENjaXJjdW1mbGV4LnNtY3AMdW5pMDEwQS5zbWNwC0NjYXJvbi5zbWNwC0RjYXJvbi5zbWNwDEVtYWNyb24uc21jcAtFYnJldmUuc21jcA9FZG90YWNjZW50LnNtY3AMRW9nb25lay5zbWNwC0VjYXJvbi5zbWNwEEdjaXJjdW1mbGV4LnNtY3ALR2JyZXZlLnNtY3AMdW5pMDEyMC5zbWNwEUdjb21tYWFjY2VudC5zbWNwEEhjaXJjdW1mbGV4LnNtY3ALSXRpbGRlLnNtY3AMSW1hY3Jvbi5zbWNwC0licmV2ZS5zbWNwDElvZ29uZWsuc21jcA9JZG90YWNjZW50LnNtY3AQSmNpcmN1bWZsZXguc21jcBFLY29tbWFhY2NlbnQuc21jcAtMYWN1dGUuc21jcBFMY29tbWFhY2NlbnQuc21jcAtMY2Fyb24uc21jcAlMZG90LnNtY3ALTmFjdXRlLnNtY3ARTmNvbW1hYWNjZW50LnNtY3ALTmNhcm9uLnNtY3AMT21hY3Jvbi5zbWNwC09icmV2ZS5zbWNwEk9odW5nYXJ1bWxhdXQuc21jcAtSYWN1dGUuc21jcBFSY29tbWFhY2NlbnQuc21jcAtSY2Fyb24uc21jcAtTYWN1dGUuc21jcBBTY2lyY3VtZmxleC5zbWNwDVNjZWRpbGxhLnNtY3ALU2Nhcm9uLnNtY3ARVGNvbW1hYWNjZW50LnNtY3ALVGNhcm9uLnNtY3ALVXRpbGRlLnNtY3AMVW1hY3Jvbi5zbWNwC1VicmV2ZS5zbWNwClVyaW5nLnNtY3ASVWh1bmdhcnVtbGF1dC5zbWNwDFVvZ29uZWsuc21jcBBXY2lyY3VtZmxleC5zbWNwEFljaXJjdW1mbGV4LnNtY3AOWWRpZXJlc2lzLnNtY3ALWmFjdXRlLnNtY3APWmRvdGFjY2VudC5zbWNwC1pjYXJvbi5zbWNwD2dlcm1hbmRibHMuc21jcApBbHBoYXRvbm9zDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rvbm9zBUFscGhhBEJldGEHRXBzaWxvbgRaZXRhA0V0YQRJb3RhBUthcHBhAk11Ak51B09taWNyb24DUmhvA1RhdQdVcHNpbG9uA0NoaQxJb3RhZGllcmVzaXMPVXBzaWxvbmRpZXJlc2lzCmFscGhhdG9ub3MMZXBzaWxvbnRvbm9zCGV0YXRvbm9zCWlvdGF0b25vcxR1cHNpbG9uZGllcmVzaXN0b25vcwVrYXBwYQdvbWljcm9uB3VuaTAzQkMCbnUDY2hpDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpvbWVnYXRvbm9zB3VuaTA0MDEHdW5pMDQwMwd1bmkwNDA1B3VuaTA0MDYHdW5pMDQwNwd1bmkwNDA4B3VuaTA0MUEHdW5pMDQwQwd1bmkwNDBFB3VuaTA0MTAHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MTUHdW5pMDQxOQd1bmkwNDFDB3VuaTA0MUQHdW5pMDQxRQd1bmkwNDFGB3VuaTA0MjAHdW5pMDQyMQd1bmkwNDIyB3VuaTA0MjUHdW5pMDQzMAd1bmkwNDM1B3VuaTA0MzkHdW5pMDQzRQd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mwd1bmkwNDQ1B3VuaTA0NTEHdW5pMDQ1Mwd1bmkwNDU1B3VuaTA0NTYHdW5pMDQ1Nwd1bmkwNDU4B3VuaTA0NUMHdW5pMDQ1RQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwZZZ3JhdmUGeWdyYXZlBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaUZCMDIHdW5pMDFGMAd1bmkwMkJDB3VuaTFFM0UHdW5pMUUzRgd1bmkxRTAwB3VuaTFFMDEHdW5pMUY0RAd1bmlGQjAzB3VuaUZCMDQHdW5pMDQwMAd1bmkwNDBEB3VuaTA0NTAHdW5pMDQ1RAd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Ngd1bmkwNDc3B3VuaTA0NzkHdW5pMDQ3OAd1bmkwNDk4B3VuaTA0OTkHdW5pMDRBQQd1bmkwNEFCB3VuaTA0QUUHdW5pMDRBRgd1bmkwNEMwB3VuaTA0QzEHdW5pMDRDMgd1bmkwNENGB3VuaTA0RDAHdW5pMDREMQd1bmkwNEQyB3VuaTA0RDMHdW5pMDRENAd1bmkwNEQ1B3VuaTA0RDYHdW5pMDRENwd1bmkwNERBB3VuaTA0RDkHdW5pMDREQgd1bmkwNERDB3VuaTA0REQHdW5pMDRERQd1bmkwNERGB3VuaTA0RTIHdW5pMDRFMwd1bmkwNEU0B3VuaTA0RTUHdW5pMDRFNgd1bmkwNEU3B3VuaTA0RTgHdW5pMDRFOQd1bmkwNEVBB3VuaTA0RUIHdW5pMDRFQwd1bmkwNEVEB3VuaTA0RUUHdW5pMDRFRgd1bmkwNEYwB3VuaTA0RjEHdW5pMDRGMgd1bmkwNEYzB3VuaTA0RjQHdW5pMDRGNQd1bmkwNEY4B3VuaTA0RjkHdW5pMDRGQwd1bmkwNEZEB3VuaTA1MDEHdW5pMDUxMgd1bmkwNTEzB3VuaTFFQTAHdW5pMUVBMQd1bmkxRUEyB3VuaTFFQTMHdW5pMUVBNAd1bmkxRUE1B3VuaTFFQTYHdW5pMUVBNwd1bmkxRUE4B3VuaTFFQTkHdW5pMUVBQQd1bmkxRUFCB3VuaTFFQUMHdW5pMUVBRAd1bmkxRUFFB3VuaTFFQUYHdW5pMUVCMAd1bmkxRUIxB3VuaTFFQjIHdW5pMUVCMwd1bmkxRUI0B3VuaTFFQjUHdW5pMUVCNgd1bmkxRUI3B3VuaTFFQjgHdW5pMUVCOQd1bmkxRUJBB3VuaTFFQkIHdW5pMUVCQwd1bmkxRUJEB3VuaTFFQkUHdW5pMUVCRgd1bmkxRUMwB3VuaTFFQzEHdW5pMUVDMgd1bmkxRUMzB3VuaTFFQzQHdW5pMUVDNQd1bmkxRUM2B3VuaTFFQzcHdW5pMUVDOAd1bmkxRUM5B3VuaTFFQ0EHdW5pMUVDQgd1bmkxRUNDB3VuaTFFQ0QHdW5pMUVDRQd1bmkxRUNGB3VuaTFFRDAHdW5pMUVEMQd1bmkxRUQyB3VuaTFFRDMHdW5pMUVENAd1bmkxRUQ1B3VuaTFFRDYHdW5pMUVENwd1bmkxRUQ4B3VuaTFFRDkHdW5pMUVEQQd1bmkxRURCB3VuaTFFREMHdW5pMUVERAd1bmkxRURFB3VuaTFFREYHdW5pMUVFMAd1bmkxRUUxB3VuaTFFRTIHdW5pMUVFMwd1bmkxRUU0B3VuaTFFRTUHdW5pMUVFNgd1bmkxRUU3B3VuaTFFRTgHdW5pMUVFOQd1bmkxRUVBB3VuaTFFRUIHdW5pMUVFQwd1bmkxRUVEB3VuaTFFRUUHdW5pMUVFRgd1bmkxRUYwB3VuaTFFRjEHdW5pMUVGNAd1bmkxRUY1B3VuaTFFRjYHdW5pMUVGNwd1bmkxRUY4B3VuaTFFRjkGZGNyb2F0B3VuaTIwQUIHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0QTIHdW5pMDRBMwd1bmkwNEFDB3VuaTA0QUQHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjYHdW5pMDRCNwd1bmkwNENCB3VuaTA0Q0MHdW5pMDRGNgd1bmkwNEY3B3VuaTA0OTYHdW5pMDQ5Nwd1bmkwNEJFB3VuaTA0QkYHdW5pMDRCQgd1bmkwNDhDB3VuaTA0NjIHdW5pMDQ5Mgd1bmkwNDkzB3VuaTA0OUUHdW5pMDQ5Rgd1bmkwNDhBB3VuaTA0OEIHdW5pMDRDOQd1bmkwNENBB3VuaTA0Q0QHdW5pMDRDRQd1bmkwNEM1B3VuaTA0QzYHdW5pMDRCMAd1bmkwNEIxB3VuaTA0RkUHdW5pMDRGRgd1bmkwNTExB3VuaTIwMTUHdW5pMDAwMgAAAAEAAAAMAAAAAAAAAAIACADKAMoAAQEeASQAAQFWAWEAAQF2AXYAAQF7AXwAAQF+AX4AAQGTAZUAAQHVAdUAAQAAAAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAAEAA5PUFUOekAAAYG8AAQAAAGtA2QDagNwA3YD7AP2BAgELgREBE4EcASSBJgE6gUYBToFXAWCBagFrgacBqIGyAbuB1AH4ggECCYIRAhKCFgIXghkCGoIkAiuCLwI2gjgCP4JHAkiCewKYgqICv4LBAsOCxQLGgsgCz4LaAtuC4QLiguoC64LtAvuC/QL/gwwDFoMhAyqDMwM8g0gDYINmA26DdwOJg5IDmoOoA7KDvQO/g8IDyYPPA9GD2QPag+AD84P7BAKECgQThB0EJIQnBDCEOgRDhGEEaoR0BHuEgwS1hLgEzIThBOOE5QTmhOgE6YTrBPSE9wT4hP0FB4UNBRGFFgUfhSEFJoUpBS2FNwU8hT4FP4VBBUeFSwVMhVYFX4WbBbiF1gXzhhEGLoZMBmmGbgZzhnkGfoaEBoyGlQadhqYGroa4BsGGywbUht4G34bhBuKG5AcIhxEHGYciByqHMwc7h0QHRYdHB0iHSgdLh1UHXodoB3GHeweCh4oHp4ewB82H1gfzh/wIAIgFCAmIDggXiB0IHogkCCWIKwgsiDIIM4g5CDqIQwhEiE0IVYheCGaIbwhwiIUIkIicCKeIswi7iL0IxYjHCM+I0QjSiNwI5YjvCPiJAgkLiQ8JEokWCVGJjQnIicoJy4nNCc6J0AnRidsJ/4oHCiuKNAo8ikUKYopoCnCKeQqCiqcKxIrHCsyK1QrdiuYK+osDCwuLFQsei1oLfouXC5+LxAvFi88L1ovgC+WMGAwgjCkMKow/DFOMZgyDjIYMuIy+DMaMzwzYjOIM5o0iDTqNQw1EjU4NVY1dDV6NYA1ijWoNc419DYaNqw2yjbQNtY23Db+NwQ3ejecN8I32DfeOAQ4Ijg0OMY45DkGOWg5bjmQOgY6KDqeOsA61jrcOuI66DtKO1A7djucO8I74DwqPEg8kjywPPo9GD16PYA99j4YPo4+sD8mP0g/vj/gQFZAeEDuQRBBhkGoQh5CQEK2QthDTkNwQ+ZECER+RKBEtkS8RNJE2ETuRPRFCkUQRSZFLEVCRUhFXkVkRXpFgEWiRcRF6kYQRjZGXEaCRqhGzkb0RxpHQEdmR4xHskfYR/5IBEgKSJxIuklMSWpJ/EoaSmxKjkt8S95L5EyuTLhNGk0gTSZNUE4aTmxOjk6wAAEAWQALAAEAWQALAAEAEf8IAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAACAQwACwFT/+YABAAL/+YAP//0AF//7wE8/+0ACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAFAEj/7gBZ/+oBuv/wAbv/7QG9//AAAgBU/+YBpv/AAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQGm/+sAFABZ/8EAs//FAMX/tADl/9cA8f+5APn/6QEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8BqP/oAaz/5gG0/+cBtf/nAAsAWf/MAaYAEwGo//MBrP/xAbT/8gG1//IBuP+9Abn/7gG6/7gBu//XAb3/twAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQBWAA4Af/7XAL//mADC/8cA1P8SAOj/UgFG/88Bpv+AAd//1wABAaYADgA7AFT/vwBZ/9EAa/9sAHr/bgB//0MAhP+sAIf/oQCz/7gAuv9+AL7/ewDB/5sAwv95AMX/sgDH/34AyP99AMn/fADU/68A4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APn/sgD6/4AA/P95AP0AKAEC/30BBP9/ARf/ZgEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAab/rwGo/7kBrP+5AbT/uQG1/7kBt/+8Abj/8QG7//EBvP/tAdz/swHf//EAAQGm/+sACQALABQAPwARAFT/4gBfABMBpv+0Aaj/2QGs/9kBtP/ZAbX/2QAJAAsADwA/AAwAVP/rAF8ADgGm/8sBqP/pAaz/5wG0/+cBtf/nABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAaj/6QGs/+cBtP/nAbX/6QHf//AAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAab/qwGo/80BrP/LAbT/ywG1/8sBuP/zAbv/8wG8/+8B3P/AAd//7gAIAFn/5QCz/8sAyP/kAaYADQGo/+0BrP/rAbT/7AG1/+wACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAcAxf/qAOj/7gDx/9YA+f/tAS//7AFU/+wB3P/oAAEA8f/1AAMACwAUAD8AEgBfABMAAQDx/9YAAQDx/9YAAQDx/9YACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAHAMX/6gDo/+4A8f/WAPn/7QEv/+wBVP/sAdz/6AADAEgAFABWABgAWQARAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAEBF//xAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAcAxf/qAOj/7gDx/9YA+f/tAS//7AFU/+wB3P/oAAEA8f/1ADIAVP9+AFn/nQBr/vEAev70AH/+qwCE/14Ah/9LALP/cgC6/w8Avv8KAMH/QQDC/wcAxf9oAMf/DwDI/w4Ayf8MANT/YwDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+f9oAPr/EwD8/wcA/QAwAQL/DgEE/xEBF/7nARv/rAEn/xUBKf88AS3/DgEv/2oBM/9JATn/DAE7/z8BPP7xAUH/wAFG/u8BSv8xAUz/XwFQ/woBUwAFAVT/MAFV/9UB3P9qAd//0wAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QAAQC/AA0AAgCz/8IAvwAQAAEAv//iAAEAwv/yAAEAvwAOAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAoAuv/mAL3/6wC+/+kAwP/wAMH/5wDF/+MAx//OAMj/1ADJ/9sB3//uAAEA8f/WAAUAvf/sAL8ADwDB/+oAxf/OAMf/5wABAL8ADwAHAMX/6gDo/+4A8f/VAPn/7QEv/+wBVP/sAdz/6AABAPH/wAABAMUAIAAOAEgADAC//5AAwQALAMUADAGm/78BqP/uAaz/7AG0/+0Btf/sAbf/9QG4AA4BugANAb0ADQHf/+0AAQDx/+IAAgDx/8AB3P/hAAwA4f/UAPH/yQD5/9EBBP/lARv/4wEv/8QBOP/hAUn/1AFK//UBS//nAVP/ZAFU/8kACgDh/8EA8f/NAPn/0gEv/8wBOP/lATv/3wFJ/84BS//qAVP/ngFU/84ACgDh/8IA8f/GAPn/zwEv/8ABOP/hATv/3wFJ/80BS//oAVP/nwFU/8YACQDh/8kA8f/fAPn/4QEE/+0BG//rAS//3wE7/+kBSv/1AVT/4AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQDh/+YA8f/QAPn/1gEv/84BOP/oAUn/5wFL/+0BU//mAVT/0AALANQAFADh/+AA6AATATj/4QE5/+ABPP/hAUH/6QFJ/98BS//eAVP/3wFV//IAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqP/pAaz/5wG0/+cBtf/pAd//8AAFABn/8gDh//EBSf/yAUv/8gFT//IACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AASANT/rgDhABIA5v/gAOj/rQDq/9YA+P/fAPz/0gEC/+ABF//OASf/3QEp/+IBLf/gATP/4AE5/+kBPP/aAUb/vQFQ/98BUwARAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QADQDUABMA4f/mAOL/9ADoABIA8f/nAPn/5wEv/+cBOP/lATn/6AFJ/+YBS//mAVP/5gFU/+cACgDh/8QA8f/NAPn/1QEv/8wBOP/mATv/3wFJ/9EBS//sAVP/oQFU/88ACgDh/8MA8f/PAPn/1AEv/84BOP/nATv/3wFJ/9EBS//sAVP/oAFU/9EAAgDU/+IBU//kAAIA1P/hAOj/5AAHAOj/7gDx/+4A+f/vAQT/9AEb//EBL//vAVT/7wAFAPH/9AD5//QBBP/1AS//9QFU//UAAgDo/2gBF//uAAcA6AAUAPH/7QD3/9AA+f/uAS//7QE5/+0BVP/tAAEBF//xAAUBF//rAaj/6wGs/+kBtP/rAbX/6wATAEgADQDC/9YAw//AAMf/1QDo/8gBF//sARsADAFKAAsBTAALAab/vwGo/+4BrP/sAbT/7QG1/+wBt//1AbgADgG6AA0BvQANAd//xAAHAMX/6gDo/+4A8f/WAPn/7QEv/+wBVP/sAdz/6AAHAOgAFADx//AA+f/wAPwAFgEv/+YBOf/cAVT/8AAHAOgAEgDx/+MA9/+4APn/4wEv/7oBOf/ZAVT/4wAJAPH/gAD5//ABBP/bARv/3AEv/0cBOf/uAUoABwFM//QBVP9/AAkA8f9qAPn/xgEE/9kBG//bAS//HgE5/+0BSv/wAUz/8gFU/1YABwDF/+oA6P/uAPH/1gD5/+0BL//sAVT/7AHc/+gAAgDo/+8A+f/uAAkA8f92APn/0wEE/9kBG//bAS//HgE5/+0BSv/wAUz/8gFU/1YACQDx/2QA+f/ZAQT/2QEb/9sBL/8eATn/7QFK//ABTP/yAVT/VgAJAPH/agD5/8YBBP/ZARv/2wEv/x4BOf/tAUr/8AFM//IBVP9WAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkACwAUAD8AEQBU/+IAXwATAab/tAGo/9kBrP/ZAbT/2QG1/9kABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UABwDF/+oA6P/uAPH/1gD5/+0BL//sAVT/7AHc/+gAMgBU/34AWf+dAGv+8QB6/vQAf/6rAIT/XgCH/0sAs/9yALr/DwC+/woAwf9BAML/BwDF/2gAx/8PAMj/DgDJ/wwA1P9jAOEABQDl/70A5v9JAOj+/gDq/xMA8f9oAPj/DgD5/2gA+v8TAPz/BwD9ADABAv8OAQT/EQEX/ucBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/2oB3//TAAIA6P9oARf/7gAUAFn/wQCz/8UAxf+0AOX/1wDx/7kA+f/pAQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGo/+gBrP/mAbT/5wG1/+cAFABZ/8EAs//FAMX/tADl/9cA8f+5APn/6QEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8BqP/oAaz/5gG0/+cBtf/nAAIA6P9oARf/7gABAFkACwABAFkACwABAFkACwABAFkACwABAFkACwAJAaj/8gGs//IBtP/yAbX/8gG4/8ABuf/sAbr/xwG7/9gBvf+/AAIBuv/uAbv/9QABAab/0gAEAaj/6wGs/+kBtP/rAbX/6wAKAaYAEQGo//ABrP/uAbT/7wG1//ABuP+7Abn/7AG6/7cBu//VAb3/tAAFAab/8wG4/+4Buv/xAbz/7AG9/+oABAG4/+kBuv/rAbv/8QG9/+UABAG4//IBuv/xAbv/9QG9/+4ACQGm/78BqP/uAaz/7AG0/+0Btf/sAbf/9QG4AA4BugANAb0ADQABAab/7wAFAab/xwGo//IBrP/wAbT/8AG1//AAAgGm/9wBuAAOAAQBqP/tAaz/6wG0/+sBtf/rAAkBpv/AAaj/7QGs/+sBtP/rAbX/6wG4AA8BugAQAbsADQG9ABAABQGmAAwBqP/wAaz/8AG0//ABtf/wAAEB1//VAAEBxP/VAAEB1/9AAAYASAALALr/8gDH//EAyf/vAdwADwHf/+4AAwDF/+0A8f/VAdz/7AABAab/1QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UAOwBU/78AWf/RAGv/bAB6/24Af/9DAIT/rACH/6EAs/+4ALr/fgC+/3sAwf+bAML/eQDF/7IAx/9+AMj/fQDJ/3wA1P+vAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD5/7IA+v+AAPz/eQD9ACgBAv99AQT/fwEX/2YBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGm/68BqP+5Aaz/uQG0/7kBtf+5Abf/vAG4//EBu//xAbz/7QHc/7MB3//xAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAEAAv/5gA///QAX//vATz/7QAFAEj/7gBZ/+oBuv/wAbv/7QG9//AABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAUASP/uAFn/6gG6//ABu//tAb3/8AAFAEj/7gBZ/+oBuv/wAbv/7QG9//AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UAAQGm/+sAAQGm/+sAAQGm/+sAAQGm/+sAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAab/qwGo/80BrP/LAbT/ywG1/8sBuP/zAbv/8wG8/+8B3P/AAd//7gAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EAAQDx//UAAQDx//UAAQDx//UAAQDx//UAAQDx/9YACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAxf/qAOj/uADx/+IBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QAFAEj/7gBZ/+oBuv/wAbv/7QG9//AAAQDx//UABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/9YACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAab/6wAUAFn/wQCz/8UAxf+0AOX/1wDx/7kA+f/pAQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGo/+gBrP/mAbT/5wG1/+cACwBZ/8wBpgATAaj/8wGs//EBtP/yAbX/8gG4/70Buf/uAbr/uAG7/9cBvf+3AAsAWf/MAaYAEwGo//MBrP/xAbT/8gG1//IBuP+9Abn/7gG6/7gBu//XAb3/twALAFn/zAGmABMBqP/zAaz/8QG0//IBtf/yAbj/vQG5/+4Buv+4Abv/1wG9/7cACwBZ/8wBpgATAaj/8wGs//EBtP/yAbX/8gG4/70Buf/uAbr/uAG7/9cBvf+3AAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAPH/1gAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/9YACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEA8f/WAAEA8f/WAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAxf/qAOj/uADx/+IBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAMASAAUAFYAGABZABEAAwBIABQAVgAYAFkAEQADAEgAFABWABgAWQARADsAVP+/AFn/0QBr/2wAev9uAH//QwCE/6wAh/+hALP/uAC6/34Avv97AMH/mwDC/3kAxf+yAMf/fgDI/30Ayf98ANT/rwDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+f+yAPr/gAD8/3kA/QAoAQL/fQEE/38BF/9mARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBpv+vAaj/uQGs/7kBtP+5AbX/uQG3/7wBuP/xAbv/8QG8/+0B3P+zAd//8QA7AFT/vwBZ/9EAa/9sAHr/bgB//0MAhP+sAIf/oQCz/7gAuv9+AL7/ewDB/5sAwv95AMX/sgDH/34AyP99AMn/fADU/68A4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APn/sgD6/4AA/P95AP0AKAEC/30BBP9/ARf/ZgEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAab/rwGo/7kBrP+5AbT/uQG1/7kBt/+8Abj/8QG7//EBvP/tAdz/swHf//EAOwBU/78AWf/RAGv/bAB6/24Af/9DAIT/rACH/6EAs/+4ALr/fgC+/3sAwf+bAML/eQDF/7IAx/9+AMj/fQDJ/3wA1P+vAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD5/7IA+v+AAPz/eQD9ACgBAv99AQT/fwEX/2YBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGm/68BqP+5Aaz/uQG0/7kBtf+5Abf/vAG4//EBu//xAbz/7QHc/7MB3//xAAEBpv/rAAEBpv/rAAEBpv/rAAEBpv/rAAEBpv/rAAEBpv/rAAkACwAPAD8ADABU/+sAXwAOAab/ywGo/+kBrP/nAbT/5wG1/+cAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAab/qwGo/80BrP/LAbT/ywG1/8sBuP/zAbv/8wG8/+8B3P/AAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBpv+rAaj/zQGs/8sBtP/LAbX/ywG4//MBu//zAbz/7wHc/8AB3//uAAgAWf/lALP/ywDI/+QBpgANAaj/7QGs/+sBtP/sAbX/7AAIAFn/5QCz/8sAyP/kAaYADQGo/+0BrP/rAbT/7AG1/+wACABZ/+UAs//LAMj/5AGmAA0BqP/tAaz/6wG0/+wBtf/sAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAFAEj/7gBZ/+oBuv/wAbv/7QG9//AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1ACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGm/6sBqP/NAaz/ywG0/8sBtf/LAbj/8wG7//MBvP/vAdz/wAHf/+4AHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAIBDAALAVP/5gAFAEj/7gBZ/+oBuv/wAbv/7QG9//AACABZ/+UAs//LAMj/5AGmAA0BqP/tAaz/6wG0/+wBtf/sAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAFABZ/8EAs//FAMX/tADl/9cA8f+5APn/6QEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8BqP/oAaz/5gG0/+cBtf/nAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAFYADgB//tcAv/+YAML/xwDU/xIA6P9SAUb/zwGm/4AB3//XADsAVP+/AFn/0QBr/2wAev9uAH//QwCE/6wAh/+hALP/uAC6/34Avv97AMH/mwDC/3kAxf+yAMf/fgDI/30Ayf98ANT/rwDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+f+yAPr/gAD8/3kA/QAoAQL/fQEE/38BF/9mARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBpv+vAaj/uQGs/7kBtP+5AbX/uQG3/7wBuP/xAbv/8QG8/+0B3P+zAd//8QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBpv+rAaj/zQGs/8sBtP/LAbX/ywG4//MBu//zAbz/7wHc/8AB3//uABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAaj/6QGs/+cBtP/nAbX/6QHf//AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGm/6sBqP/NAaz/ywG0/8sBtf/LAbj/8wG7//MBvP/vAdz/wAHf/+4AAQDx/9YACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAUASP/uAFn/6gG6//ABu//tAb3/8AAyAFT/fgBZ/50Aa/7xAHr+9AB//qsAhP9eAIf/SwCz/3IAuv8PAL7/CgDB/0EAwv8HAMX/aADH/w8AyP8OAMn/DADU/2MA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPn/aAD6/xMA/P8HAP0AMAEC/w4BBP8RARf+5wEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/agHf/9MACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAab/6wAUAFn/wQCz/8UAxf+0AOX/1wDx/7kA+f/pAQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGo/+gBrP/mAbT/5wG1/+cAFABZ/8EAs//FAMX/tADl/9cA8f+5APn/6QEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8BqP/oAaz/5gG0/+cBtf/nABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAIBDAALAVP/5gAyAFT/fgBZ/50Aa/7xAHr+9AB//qsAhP9eAIf/SwCz/3IAuv8PAL7/CgDB/0EAwv8HAMX/aADH/w8AyP8OAMn/DADU/2MA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPn/aAD6/xMA/P8HAP0AMAEC/w4BBP8RARf+5wEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/agHf/9MABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAFYADgB//tcAv/+YAML/xwDU/xIA6P9SAUb/zwGm/4AB3//XAAQAC//mAD//9ABf/+8BPP/tADsAVP+/AFn/0QBr/2wAev9uAH//QwCE/6wAh/+hALP/uAC6/34Avv97AMH/mwDC/3kAxf+yAMf/fgDI/30Ayf98ANT/rwDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+f+yAPr/gAD8/3kA/QAoAQL/fQEE/38BF/9mARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBpv+vAaj/uQGs/7kBtP+5AbX/uQG3/7wBuP/xAbv/8QG8/+0B3P+zAd//8QAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGo/+kBrP/nAbT/5wG1/+kB3//wAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QABAPH/9QAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAcAxf/qAOj/7gDx/9YA+f/tAS//7AFU/+wB3P/oAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAEBF//xAAEA8f/1AAIA6P9oARf/7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAJAAsADwA/AAwAVP/rAF8ADgGm/8sBqP/pAaz/5wG0/+cBtf/nAAkACwAPAD8ADABU/+sAXwAOAab/ywGo/+kBrP/nAbT/5wG1/+cACQALAA8APwAMAFT/6wBfAA4Bpv/LAaj/6QGs/+cBtP/nAbX/5wAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBpv+rAaj/zQGs/8sBtP/LAbX/ywG4//MBu//zAbz/7wHc/8AB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAEAWQALAAEAWQALAAEAWQALAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAPH/1gAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAkACwAUAD8AEQBU/+IAXwATAab/tAGo/9kBrP/ZAbT/2QG1/9kABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UABAAL/+YAP//0AF//7wE8/+0AJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAab/qwGo/80BrP/LAbT/ywG1/8sBuP/zAbv/8wG8/+8B3P/AAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqP/pAaz/5wG0/+cBtf/pAd//8AABARf/8QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QABAPH/9QABAPH/9QAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGo/+kBrP/nAbT/5wG1/+kB3//wAAEBF//xAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAcAxf/qAOj/7gDx/9YA+f/tAS//7AFU/+wB3P/oABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAEgDU/64A4QASAOb/4ADo/60A6v/WAPj/3wD8/9IBAv/gARf/zgEn/90BKf/iAS3/4AEz/+ABOf/pATz/2gFG/70BUP/fAVMAEQAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QASANT/rgDhABIA5v/gAOj/rQDq/9YA+P/fAPz/0gEC/+ABF//OASf/3QEp/+IBLf/gATP/4AE5/+kBPP/aAUb/vQFQ/98BUwARAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAaj/6QGs/+cBtP/nAbX/6QHf//AAAQEX//EAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EAHQAh/68AVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAPn/0AEv/4EBOP9lATn/hQE7/2YBPP/dAUH/8gFJ/7EBS//KAVP/qQFU/8gBrP/1AbT/9QG4/8cBuf/xAbr/zQG7/90Bvf/EAAgA8f/wAPn/8AEE//EBG//zAS//8QFK//MBTP/zAVT/8QAdACH/rwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oA+f/QAS//gQE4/2UBOf+FATv/ZgE8/90BQf/yAUn/sQFL/8oBU/+pAVT/yAGs//UBtP/1Abj/xwG5//EBuv/NAbv/3QG9/8QACADx//AA+f/wAQT/8QEb//MBL//xAUr/8wFM//MBVP/xAB0AIf+vAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygD5/9ABL/+BATj/ZQE5/4UBO/9mATz/3QFB//IBSf+xAUv/ygFT/6kBVP/IAaz/9QG0//UBuP/HAbn/8QG6/80Bu//dAb3/xAAIAPH/8AD5//ABBP/xARv/8wEv//EBSv/zAUz/8wFU//EABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QAFAEj/7gBZ/+oBuv/wAbv/7QG9//AAAQDx//UABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QAFAEj/7gBZ/+oBuv/wAbv/7QG9//AAAQDx//UABQBI/+4AWf/qAbr/8AG7/+0Bvf/wAAEA8f/1AAUASP/uAFn/6gG6//ABu//tAb3/8AABAPH/9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAxf/qAOj/uADx/+IBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGm/+0BvP/1AAkAxf/qAOj/uADx/+IBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABpv/tAbz/9QAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAab/7QG8//UACQDF/+oA6P+4APH/4gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/iAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAEBpv/rAAEBpv/rACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGm/6sBqP/NAaz/ywG0/8sBtf/LAbj/8wG7//MBvP/vAdz/wAHf/+4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAab/qwGo/80BrP/LAbT/ywG1/8sBuP/zAbv/8wG8/+8B3P/AAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBpv+rAaj/zQGs/8sBtP/LAbX/ywG4//MBu//zAbz/7wHc/8AB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABQAWf/BALP/xQDF/7QA5f/XAPH/uQD5/+kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAaj/6AGs/+YBtP/nAbX/5wAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAOwBU/78AWf/RAGv/bAB6/24Af/9DAIT/rACH/6EAs/+4ALr/fgC+/3sAwf+bAML/eQDF/7IAx/9+AMj/fQDJ/3wA1P+vAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD5/7IA+v+AAPz/eQD9ACgBAv99AQT/fwEX/2YBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGm/68BqP+5Aaz/uQG0/7kBtf+5Abf/vAG4//EBu//xAbz/7QHc/7MB3//xABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAaj/6QGs/+cBtP/nAbX/6QHf//AAAQEX//EAMgBU/34AWf+dAGv+8QB6/vQAf/6rAIT/XgCH/0sAs/9yALr/DwC+/woAwf9BAML/BwDF/2gAx/8PAMj/DgDJ/wwA1P9jAOEABQDl/70A5v9JAOj+/gDq/xMA8f9oAPj/DgD5/2gA+v8TAPz/BwD9ADABAv8OAQT/EQEX/ucBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/2oB3//TAAIA6P9oARf/7gAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGo/+kBrP/nAbT/5wG1/+kB3//wAAEBF//xAAEA8f/WAAoA4f/DAPH/zwD5/9QBL//OATj/5wE7/98BSf/RAUv/7AFT/6ABVP/RADIAVP9+AFn/nQBr/vEAev70AH/+qwCE/14Ah/9LALP/cgC6/w8Avv8KAMH/QQDC/wcAxf9oAMf/DwDI/w4Ayf8MANT/YwDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+f9oAPr/EwD8/wcA/QAwAQL/DgEE/xEBF/7nARv/rAEn/xUBKf88AS3/DgEv/2oBM/9JATn/DAE7/z8BPP7xAUH/wAFG/u8BSv8xAUz/XwFQ/woBUwAFAVT/MAFV/9UB3P9qAd//0wAUAFn/wQCz/8UAxf+0AOX/1wDx/7kA+f/pAQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGo/+gBrP/mAbT/5wG1/+cACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBpv+rAaj/zQGs/8sBtP/LAbX/ywG4//MBu//zAbz/7wHc/8AB3//uAAE1wAAEAAAABgAWAGwDngQcBIYEyAAVADgAFAA5ACYAOwAWARQAFAILABYCkgAmApQAFgKWABYC/QAWAwwAFgMPABYDRQAmA0cAJgNJACYDSwAWA2AAFANoABYD6gAWA+wAFgPuABYEEwAWAMwADv7uABD+7gAj/0AALP8wADYAFABD/94ARf/rAEb/6wBH/+sASf/rAFH/6wBT/+sAV//qAFj/6ABb/+gAkf/rAJX/6wCX/+oArf9AAK//QAC2/+sAuP/oAMP/6wDE/+sAxv/qAM0AFADRABQA8v/rAP7/6wEI/0ABE//rARX/6AEZ/+sBHf/rAS4AFAE1/+sBNgAUAUf/6wFI/+sBUv/rAWf+7gFr/u4Bb/7uAXD+7gHx/0AB8v9AAfP/QAH0/0AB9f9AAfb/QAH3/0ACDP/eAg3/3gIO/94CD//eAhD/3gIR/94CEv/eAhP/6wIU/+sCFf/rAhb/6wIX/+sCHf/rAh7/6wIf/+sCIP/rAiH/6wIi/+oCI//qAiT/6gIl/+oCJv/oAif/6AIo/0ACKf/eAir/QAIr/94CLP9AAi3/3gIv/+sCMf/rAjP/6wI1/+sCN//rAjn/6wI7/+sCPf/rAj//6wJB/+sCQ//rAkX/6wJH/+sCSf/rAlf/MAJr/+sCbf/rAm//6wKAABQCggAUAoQAFAKH/+oCif/qAov/6gKN/+oCj//qApH/6gKV/+gC+P9AAwD/QAMQ/+sDFP/qAxb/6wMY/+gDG//qAxz/6wMd/+oDJP8wAyj/QAMzABQDNf/eAzb/6wM4/+sDOv/rAzv/6AM9/+sDRP/oA0z/6ANV/0ADVv/eA1z/6wNh/+gDYv/rA2f/6wNp/+gDbv9AA2//3gNw/0ADcf/eA3X/6wN3/+sDeP/rA4L/6wOE/+sDhv/rA4r/6AOM/+gDjv/oA5X/6wOY/0ADmf/eA5r/QAOb/94DnP9AA53/3gOe/0ADn//eA6D/QAOh/94Dov9AA6P/3gOk/0ADpf/eA6b/QAOn/94DqP9AA6n/3gOq/0ADq//eA6z/QAOt/94Drv9AA6//3gOx/+sDs//rA7X/6wO3/+sDuf/rA7v/6wO9/+sDv//rA8X/6wPH/+sDyf/rA8v/6wPN/+sDz//rA9H/6wPT/+sD1f/rA9f/6wPZ/+sD2//rA93/6gPf/+oD4f/qA+P/6gPl/+oD5//qA+n/6gPr/+gD7f/oA+//6AP2ABQAHwA2/98AOP/kADn/7AA7/90Azf/fANH/3wEU/+QBLv/fATb/3wIL/90CgP/fAoL/3wKE/98Ckv/sApT/3QKW/90C/f/dAwz/3QMP/90DM//fA0X/7ANH/+wDSf/sA0v/3QNg/+QDaP/dA+r/3QPs/90D7v/dA/b/3wQT/90AGgA2/84AOP/tADv/0ADN/84A0f/OART/7QEu/84BNv/OAgv/0AKA/84Cgv/OAoT/zgKU/9AClv/QAv3/0AMM/9ADD//QAzP/zgNL/9ADYP/tA2j/0APq/9AD7P/QA+7/0AP2/84EE//QABAALP/uADf/7gIH/+4CCP/uAgn/7gIK/+4CV//uAob/7gKI/+4Civ/uAoz/7gKO/+4CkP/uAyT/7gPc/+4D3v/uAD0ARf/oAEb/6ABH/+gASf/oAFP/6ACR/+gAlf/oALb/6ADD/+gAxP/oAPL/6AD+/+gBGf/oAR3/6AE1/+gBR//oAUj/6AFS/+gCE//oAhT/6AIV/+gCFv/oAhf/6AIv/+gCMf/oAjP/6AI1/+gCN//oAjn/6AI7/+gCPf/oAj//6AJB/+gCQ//oAkX/6AJH/+gCSf/oAxD/6AM2/+gDOv/oAz3/6ANc/+gDYv/oA2f/6AN1/+gDd//oA3j/6AOE/+gDlf/oA7H/6AOz/+gDtf/oA7f/6AO5/+gDu//oA73/6AO//+gD0//oA9X/6APX/+gD2//oAAEwEgAEAAAALABiAIwBggHgAfoCPAKyA5gEfgVYBfIIjApSC2ANJg1YDYoOCA9OENgSbhOAFO4XABe2GRwZ0hqMGxIbcBwuHKQdUh18Hs4hDCEuIkQioiMgI0ojfCOOI7gACgAEABAACQAQAWUAEAFmABABaAAQAWkAEAFqABADTQAQA04AEANSABAAPQBF/+wARv/sAEf/7ABJ/+wAU//sAJH/7ACV/+wAtv/sAMP/7ADE/+wA8v/sAP7/7AEZ/+wBHf/sATX/7AFH/+wBSP/sAVL/7AIT/+wCFP/sAhX/7AIW/+wCF//sAi//7AIx/+wCM//sAjX/7AI3/+wCOf/sAjv/7AI9/+wCP//sAkH/7AJD/+wCRf/sAkf/7AJJ/+wDEP/sAzb/7AM6/+wDPf/sA1z/7ANi/+wDZ//sA3X/7AN3/+wDeP/sA4T/7AOV/+wDsf/sA7P/7AO1/+wDt//sA7n/7AO7/+wDvf/sA7//7APT/+wD1f/sA9f/7APb/+wAFwBR/+IBE//iAh3/4gIe/+ICH//iAiD/4gIh/+ICa//iAm3/4gJv/+IDFv/iAxz/4gM4/+IDgv/iA4b/4gPF/+IDx//iA8n/4gPL/+IDzf/iA8//4gPR/+ID2f/iAAYADv+EABD/hAFn/4QBa/+EAW//hAFw/4QAEAAs/+wAN//sAgf/7AII/+wCCf/sAgr/7AJX/+wChv/sAoj/7AKK/+wCjP/sAo7/7AKQ/+wDJP/sA9z/7APe/+wAHQAE//IACf/yAFj/8wBb//MAuP/zARX/8wFl//IBZv/yAWj/8gFp//IBav/yAib/8wIn//MClf/zAxj/8wM7//MDRP/zA0z/8wNN//IDTv/yA1L/8gNh//MDaf/zA4r/8wOM//MDjv/zA+v/8wPt//MD7//zADkAJf/zACn/8wAx//MAM//zAIH/8wCQ//MAlP/zAK7/8wDO//MBA//zARL/8wEW//MBGP/zARr/8wEc//MBNP/zAVH/8wH4//MCAv/zAgP/8wIE//MCBf/zAgb/8wIu//MCMP/zAjL/8wI0//MCQv/zAkT/8wJG//MCSP/zAmr/8wJs//MCbv/zAp//8wL8//MDCf/zAy//8wMy//MDV//zA2P/8wNm//MDgf/zA4P/8wOF//MDxP/zA8b/8wPI//MDyv/zA8z/8wPO//MD0P/zA9L/8wPU//MD1v/zA9j/8wPa//MAOQAl/+YAKf/mADH/5gAz/+YAgf/mAJD/5gCU/+YArv/mAM7/5gED/+YBEv/mARb/5gEY/+YBGv/mARz/5gE0/+YBUf/mAfj/5gIC/+YCA//mAgT/5gIF/+YCBv/mAi7/5gIw/+YCMv/mAjT/5gJC/+YCRP/mAkb/5gJI/+YCav/mAmz/5gJu/+YCn//mAvz/5gMJ/+YDL//mAzL/5gNX/+YDY//mA2b/5gOB/+YDg//mA4X/5gPE/+YDxv/mA8j/5gPK/+YDzP/mA87/5gPQ/+YD0v/mA9T/5gPW/+YD2P/mA9r/5gA2ACP/5AA6/9IAO//TAK3/5ACv/+QA1f/SAQj/5AHx/+QB8v/kAfP/5AH0/+QB9f/kAfb/5AH3/+QCC//TAij/5AIq/+QCLP/kApT/0wKW/9MC+P/kAv3/0wMA/+QDDP/TAw3/0gMP/9MDKP/kAzT/0gNL/9MDVf/kA2j/0wNr/9IDbv/kA3D/5AN5/9IDk//SA5j/5AOa/+QDnP/kA57/5AOg/+QDov/kA6T/5AOm/+QDqP/kA6r/5AOs/+QDrv/kA+r/0wPs/9MD7v/TA/j/0gQA/9IEE//TACYADv9GABD/RgAj/80Arf/NAK//zQEI/80BZ/9GAWv/RgFv/0YBcP9GAfH/zQHy/80B8//NAfT/zQH1/80B9v/NAff/zQIo/80CKv/NAiz/zQL4/80DAP/NAyj/zQNV/80Dbv/NA3D/zQOY/80Dmv/NA5z/zQOe/80DoP/NA6L/zQOk/80Dpv/NA6j/zQOq/80DrP/NA67/zQCmAEX/3ABG/9wAR//cAEn/3ABP/8EAUP/BAFH/1gBS/8EAU//cAFf/3QBY/+EAW//hAJH/3ACV/9wAl//dALb/3AC4/+EAvP/BAMP/3ADE/9wAxv/dAOf/wQDr/8EA7P/BAO7/wQDv/8EA8P/BAPL/3ADz/8EA9f/BAPb/wQD5/8EA+//BAP7/3AEA/8EBE//WARX/4QEZ/9wBHf/cATH/wQE1/9wBQP/BAUX/wQFH/9wBSP/cAVL/3AIT/9wCFP/cAhX/3AIW/9wCF//cAhz/wQId/9YCHv/WAh//1gIg/9YCIf/WAiL/3QIj/90CJP/dAiX/3QIm/+ECJ//hAi//3AIx/9wCM//cAjX/3AI3/9wCOf/cAjv/3AI9/9wCP//cAkH/3AJD/9wCRf/cAkf/3AJJ/9wCZP/BAmb/wQJo/8ECaf/BAmv/1gJt/9YCb//WAof/3QKJ/90Ci//dAo3/3QKP/90Ckf/dApX/4QMQ/9wDEv/BAxT/3QMW/9YDGP/hAxv/3QMc/9YDHf/dAzb/3AM3/8EDOP/WAzn/wQM6/9wDO//hAz3/3AM+/8EDQ//BA0T/4QNM/+EDVP/BA1z/3ANd/8EDYf/hA2L/3ANn/9wDaf/hA3X/3AN3/9wDeP/cA37/wQOA/8EDgv/WA4T/3AOG/9YDiv/hA4z/4QOO/+EDkv/BA5X/3AOx/9wDs//cA7X/3AO3/9wDuf/cA7v/3AO9/9wDv//cA8X/1gPH/9YDyf/WA8v/1gPN/9YDz//WA9H/1gPT/9wD1f/cA9f/3APZ/9YD2//cA93/3QPf/90D4f/dA+P/3QPl/90D5//dA+n/3QPr/+ED7f/hA+//4QPz/8ED9f/BA///wQQM/8EEDv/BBBD/wQBxAAT/2gAJ/9oARf/wAEb/8ABH//AASf/wAFP/8ABX/+8AWP/cAFv/3ACR//AAlf/wAJf/7wC2//AAuP/cAMP/8ADE//AAxv/vAPL/8AD+//ABFf/cARn/8AEd//ABNf/wAUf/8AFI//ABUv/wAWX/2gFm/9oBaP/aAWn/2gFq/9oCE//wAhT/8AIV//ACFv/wAhf/8AIi/+8CI//vAiT/7wIl/+8CJv/cAif/3AIv//ACMf/wAjP/8AI1//ACN//wAjn/8AI7//ACPf/wAj//8AJB//ACQ//wAkX/8AJH//ACSf/wAof/7wKJ/+8Ci//vAo3/7wKP/+8Ckf/vApX/3AMQ//ADFP/vAxj/3AMb/+8DHf/vAzb/8AM6//ADO//cAz3/8ANE/9wDTP/cA03/2gNO/9oDUv/aA1z/8ANh/9wDYv/wA2f/8ANp/9wDdf/wA3f/8AN4//ADhP/wA4r/3AOM/9wDjv/cA5X/8AOx//ADs//wA7X/8AO3//ADuf/wA7v/8AO9//ADv//wA9P/8APV//AD1//wA9v/8APd/+8D3//vA+H/7wPj/+8D5f/vA+f/7wPp/+8D6//cA+3/3APv/9wAQwAOAAwAEAAMAEX/5wBG/+cAR//nAEn/5wBT/+cAkf/nAJX/5wC2/+cAw//nAMT/5wDy/+cA/v/nARn/5wEd/+cBNf/nAUf/5wFI/+cBUv/nAWcADAFrAAwBbwAMAXAADAIT/+cCFP/nAhX/5wIW/+cCF//nAi//5wIx/+cCM//nAjX/5wI3/+cCOf/nAjv/5wI9/+cCP//nAkH/5wJD/+cCRf/nAkf/5wJJ/+cDEP/nAzb/5wM6/+cDPf/nA1z/5wNi/+cDZ//nA3X/5wN3/+cDeP/nA4T/5wOV/+cDsf/nA7P/5wO1/+cDt//nA7n/5wO7/+cDvf/nA7//5wPT/+cD1f/nA9f/5wPb/+cAcQAEAAwACQAMAEX/6ABG/+gAR//oAEn/6ABR/+oAU//oAFgACwBbAAsAkf/oAJX/6AC2/+gAuAALAMP/6ADE/+gA8v/oAP7/6AET/+oBFQALARn/6AEd/+gBNf/oAUf/6AFI/+gBUv/oAWUADAFmAAwBaAAMAWkADAFqAAwCE//oAhT/6AIV/+gCFv/oAhf/6AId/+oCHv/qAh//6gIg/+oCIf/qAiYACwInAAsCL//oAjH/6AIz/+gCNf/oAjf/6AI5/+gCO//oAj3/6AI//+gCQf/oAkP/6AJF/+gCR//oAkn/6AJr/+oCbf/qAm//6gKVAAsDEP/oAxb/6gMYAAsDHP/qAzb/6AM4/+oDOv/oAzsACwM9/+gDRAALA0wACwNNAAwDTgAMA1IADANc/+gDYQALA2L/6ANn/+gDaQALA3X/6AN3/+gDeP/oA4L/6gOE/+gDhv/qA4oACwOMAAsDjgALA5X/6AOx/+gDs//oA7X/6AO3/+gDuf/oA7v/6AO9/+gDv//oA8X/6gPH/+oDyf/qA8v/6gPN/+oDz//qA9H/6gPT/+gD1f/oA9f/6APZ/+oD2//oA+sACwPtAAsD7wALAAwAWv/tAFz/7QDp/+0CmP/tApr/7QKc/+0DPP/tA2z/7QN6/+0DlP/tA/n/7QQB/+0ADABa//IAXP/yAOn/8gKY//ICmv/yApz/8gM8//IDbP/yA3r/8gOU//ID+f/yBAH/8gAfAFj/9ABa//IAW//0AFz/8wC4//QA6f/yARX/9AIm//QCJ//0ApX/9AKY//MCmv/zApz/8wMY//QDO//0Azz/8gNE//QDTP/0A2H/9ANp//QDbP/yA3r/8gOK//QDjP/0A47/9AOU//ID6//0A+3/9APv//QD+f/yBAH/8gBRAAT/ygAJ/8oANv/SADj/1AA6//QAO//TAFj/5gBa/+8AW//mALj/5gDN/9IA0f/SANX/9ADZ/+0A3P/hAOn/7wEU/9QBFf/mAS7/0gE2/9IBZf/KAWb/ygFo/8oBaf/KAWr/ygIL/9MCJv/mAif/5gKA/9ICgv/SAoT/0gKU/9MClf/mApb/0wL9/9MDDP/TAw3/9AMP/9MDGP/mAyf/7QMz/9IDNP/0Azv/5gM8/+8DRP/mA0v/0wNM/+YDTf/KA07/ygNS/8oDYP/UA2H/5gNo/9MDaf/mA2v/9ANs/+8Def/0A3r/7wOJ/+0Div/mA4v/7QOM/+YDjf/tA47/5gOP/+EDk//0A5T/7wPq/9MD6//mA+z/0wPt/+YD7v/TA+//5gP2/9ID+P/0A/n/7wP6/+ED/P/hBAD/9AQB/+8EE//TAGIABP/AAAn/wAA2/50AOP/HADr/8AA7/6sAT//SAFD/0gBS/9IAvP/SAM3/nQDP//UA0f+dANX/8ADY//UA2f/qANz/5QDn/9IA6//SAOz/0gDu/9IA7//SAPD/0gDz/9IA9f/SAPb/0gD7/9IBAP/SART/xwEu/50BMf/SATb/nQFA/9IBRf/SAU3/9QFl/8ABZv/AAWj/wAFp/8ABav/AAgv/qwIc/9ICZP/SAmb/0gJo/9ICaf/SAoD/nQKC/50ChP+dApT/qwKW/6sC/f+rAwz/qwMN//ADD/+rAxL/0gMn/+oDM/+dAzT/8AM3/9IDOf/SAz7/0gND/9IDS/+rA03/wANO/8ADUv/AA1T/0gNd/9IDYP/HA2j/qwNr//ADef/wA37/0gOA/9IDif/qA4v/6gON/+oDj//lA5L/0gOT//ADlv/1A+r/qwPs/6sD7v+rA/P/0gP1/9ID9v+dA/j/8AP6/+UD/P/lA///0gQA//AEDP/SBA7/0gQQ/9IEEf/1BBP/qwBlAAT/sQAJ/7EANv+eADj/xQA6//IAO/+oAE//zwBQ/88AUv/PAFr/7wC8/88Azf+eANH/ngDV//IA2f/sANz/4QDn/88A6f/vAOv/zwDs/88A7v/PAO//zwDw/88A8//PAPX/zwD2/88A+//PAQD/zwEU/8UBLv+eATH/zwE2/54BQP/PAUX/zwFl/7EBZv+xAWj/sQFp/7EBav+xAgv/qAIc/88CZP/PAmb/zwJo/88Caf/PAoD/ngKC/54ChP+eApT/qAKW/6gC/f+oAwz/qAMN//IDD/+oAxL/zwMn/+wDM/+eAzT/8gM3/88DOf/PAzz/7wM+/88DQ//PA0v/qANN/7EDTv+xA1L/sQNU/88DXf/PA2D/xQNo/6gDa//yA2z/7wN5//IDev/vA37/zwOA/88Dif/sA4v/7AON/+wDj//hA5L/zwOT//IDlP/vA+r/qAPs/6gD7v+oA/P/zwP1/88D9v+eA/j/8gP5/+8D+v/hA/z/4QP//88EAP/yBAH/7wQM/88EDv/PBBD/zwQT/6gARAA2/74AT//hAFD/4QBS/+EAWP/vAFv/7wC4/+8AvP/hAM3/vgDR/74A5//hAOv/4QDs/+EA7v/hAO//4QDw/+EA8//hAPX/4QD2/+EA+//hAQD/4QEV/+8BLv++ATH/4QE2/74BQP/hAUX/4QIc/+ECJv/vAif/7wJk/+ECZv/hAmj/4QJp/+ECgP++AoL/vgKE/74Clf/vAxL/4QMY/+8DM/++Azf/4QM5/+EDO//vAz7/4QND/+EDRP/vA0z/7wNU/+EDXf/hA2H/7wNp/+8Dfv/hA4D/4QOK/+8DjP/vA47/7wOS/+ED6//vA+3/7wPv/+8D8//hA/X/4QP2/74D///hBAz/4QQO/+EEEP/hAFsANv/mADj/5wA6//IAO//nAE//1gBQ/9YAUv/WAFr/8QC8/9YAzf/mANH/5gDV//IA2f/uANz/6ADn/9YA6f/xAOv/1gDs/9YA7v/WAO//1gDw/9YA8//WAPX/1gD2/9YA+//WAQD/1gEU/+cBLv/mATH/1gE2/+YBQP/WAUX/1gIL/+cCHP/WAmT/1gJm/9YCaP/WAmn/1gKA/+YCgv/mAoT/5gKU/+cClv/nAv3/5wMM/+cDDf/yAw//5wMS/9YDJ//uAzP/5gM0//IDN//WAzn/1gM8//EDPv/WA0P/1gNL/+cDVP/WA13/1gNg/+cDaP/nA2v/8gNs//EDef/yA3r/8QN+/9YDgP/WA4n/7gOL/+4Djf/uA4//6AOS/9YDk//yA5T/8QPq/+cD7P/nA+7/5wPz/9YD9f/WA/b/5gP4//ID+f/xA/r/6AP8/+gD///WBAD/8gQB//EEDP/WBA7/1gQQ/9YEE//nAIQAIwAQACX/6AAp/+gAMf/oADP/6AA2/+AAOP/gADv/3wCB/+gAkP/oAJT/6ACtABAArv/oAK8AEADN/+AAzv/oAM8AEADR/+AA2AAQANz/4QDtABAA9P/gAP8AEAED/+gBCAAQARL/6AEU/+ABFv/oARj/6AEa/+gBHP/oAS7/4AE0/+gBNv/gAU0AEAFR/+gB8QAQAfIAEAHzABAB9AAQAfUAEAH2ABAB9wAQAfj/6AIC/+gCA//oAgT/6AIF/+gCBv/oAgv/3wIoABACKgAQAiwAEAIu/+gCMP/oAjL/6AI0/+gCQv/oAkT/6AJG/+gCSP/oAmr/6AJs/+gCbv/oAoD/4AKC/+AChP/gApT/3wKW/98Cn//oAvgAEAL8/+gC/f/fAwAAEAMJ/+gDDP/fAw//3wMoABADL//oAzL/6AMz/+ADS//fA1UAEANX/+gDYP/gA2P/6ANm/+gDaP/fA24AEANwABADgf/oA4P/6AOF/+gDj//hA5D/4AOWABADlwAQA5gAEAOaABADnAAQA54AEAOgABADogAQA6QAEAOmABADqAAQA6oAEAOsABADrgAQA8T/6APG/+gDyP/oA8r/6APM/+gDzv/oA9D/6APS/+gD1P/oA9b/6APY/+gD2v/oA+r/3wPs/98D7v/fA/b/4AP6/+ED+//gA/z/4QP9/+AEEQAQBBIAEAQT/98ALQA2//EAOP/0ADr/9AA7//AAzf/xAM//9QDR//EA1f/0ANj/9QDZ//MBFP/0AS7/8QE2//EBTf/1Agv/8AKA//ECgv/xAoT/8QKU//AClv/wAv3/8AMM//ADDf/0Aw//8AMn//MDM//xAzT/9ANL//ADYP/0A2j/8ANr//QDef/0A4n/8wOL//MDjf/zA5P/9AOW//UD6v/wA+z/8APu//AD9v/xA/j/9AQA//QEEf/1BBP/8ABZACMADwA2/+YAOP/mADoADgA7/+YArQAPAK8ADwDN/+YAzwAOANH/5gDVAA4A2AAOANkACwDc/+UA7QAPAPT/6AD/AA8BCAAPART/5gEu/+YBNv/mAU0ADgHxAA8B8gAPAfMADwH0AA8B9QAPAfYADwH3AA8CC//mAigADwIqAA8CLAAPAoD/5gKC/+YChP/mApT/5gKW/+YC+AAPAv3/5gMAAA8DDP/mAw0ADgMP/+YDJwALAygADwMz/+YDNAAOA0v/5gNVAA8DYP/mA2j/5gNrAA4DbgAPA3AADwN5AA4DiQALA4sACwONAAsDj//lA5D/6AOTAA4DlgAOA5cADwOYAA8DmgAPA5wADwOeAA8DoAAPA6IADwOkAA8DpgAPA6gADwOqAA8DrAAPA64ADwPq/+YD7P/mA+7/5gP2/+YD+AAOA/r/5QP7/+gD/P/lA/3/6AQAAA4EEQAOBBIADwQT/+YALQAE/78ACf+/ADb/nwA4/8kAO/+tAM3/nwDR/58A2f/sANz/5gEU/8kBLv+fATb/nwFl/78BZv+/AWj/vwFp/78Bav+/Agv/rQKA/58Cgv+fAoT/nwKU/60Clv+tAv3/rQMM/60DD/+tAyf/7AMz/58DS/+tA03/vwNO/78DUv+/A2D/yQNo/60Dif/sA4v/7AON/+wDj//mA+r/rQPs/60D7v+tA/b/nwP6/+YD/P/mBBP/rQAuADb/4wA6/+UAO//kAM3/4wDP/+UA0f/jANX/5QDY/+UA2f/pAO3/6gD//+oBLv/jATb/4wFN/+UCC//kAoD/4wKC/+MChP/jApT/5AKW/+QC/f/kAwz/5AMN/+UDD//kAyf/6QMz/+MDNP/lA0v/5ANo/+QDa//lA3n/5QOJ/+kDi//pA43/6QOT/+UDlv/lA5f/6gPq/+QD7P/kA+7/5AP2/+MD+P/lBAD/5QQR/+UEEv/qBBP/5AAhADb/4gA6/+QAzf/iAM//5ADR/+IA1f/kANj/5ADZ/+kA7f/rAP//6wEu/+IBNv/iAU3/5AKA/+ICgv/iAoT/4gMN/+QDJ//pAzP/4gM0/+QDa//kA3n/5AOJ/+kDi//pA43/6QOT/+QDlv/kA5f/6wP2/+ID+P/kBAD/5AQR/+QEEv/rABcANv/rADv/8wDN/+sA0f/rAS7/6wE2/+sCC//zAoD/6wKC/+sChP/rApT/8wKW//MC/f/zAwz/8wMP//MDM//rA0v/8wNo//MD6v/zA+z/8wPu//MD9v/rBBP/8wAvAE//7wBQ/+8AUv/vAFr/8AC8/+8A5//vAOn/8ADr/+8A7P/vAO7/7wDv/+8A8P/vAPP/7wD1/+8A9v/vAPv/7wEA/+8BMf/vAUD/7wFF/+8CHP/vAmT/7wJm/+8CaP/vAmn/7wMS/+8DN//vAzn/7wM8//ADPv/vA0P/7wNU/+8DXf/vA2z/8AN6//ADfv/vA4D/7wOS/+8DlP/wA/P/7wP1/+8D+f/wA///7wQB//AEDP/vBA7/7wQQ/+8AHQAE//IACf/yAFj/9QBb//UAuP/1ARX/9QFl//IBZv/yAWj/8gFp//IBav/yAib/9QIn//UClf/1Axj/9QM7//UDRP/1A0z/9QNN//IDTv/yA1L/8gNh//UDaf/1A4r/9QOM//UDjv/1A+v/9QPt//UD7//1ACsAT//uAFD/7gBS/+4AvP/uAOf/7gDr/+4A7P/uAO7/7gDv/+4A8P/uAPP/7gD0/+0A9f/uAPb/7gD7/+4BAP/uATH/7gFA/+4BRf/uAhz/7gJk/+4CZv/uAmj/7gJp/+4DEv/uAzf/7gM5/+4DPv/uA0P/7gNU/+4DXf/uA37/7gOA/+4DkP/tA5L/7gPz/+4D9f/uA/v/7QP9/+0D///uBAz/7gQO/+4EEP/uAAoABP/1AAn/9QFl//UBZv/1AWj/9QFp//UBav/1A03/9QNO//UDUv/1AFQARf/wAEb/8ABH//AASf/wAFH/xwBT//AAkf/wAJX/8AC2//AAw//wAMT/8ADy//AA/v/wARP/xwEZ//ABHf/wATX/8AFH//ABSP/wAVL/8AIT//ACFP/wAhX/8AIW//ACF//wAh3/xwIe/8cCH//HAiD/xwIh/8cCL//wAjH/8AIz//ACNf/wAjf/8AI5//ACO//wAj3/8AI///ACQf/wAkP/8AJF//ACR//wAkn/8AJr/8cCbf/HAm//xwMQ//ADFv/HAxz/xwM2//ADOP/HAzr/8AM9//ADXP/wA2L/8ANn//ADdf/wA3f/8AN4//ADgv/HA4T/8AOG/8cDlf/wA7H/8AOz//ADtf/wA7f/8AO5//ADu//wA73/8AO///ADxf/HA8f/xwPJ/8cDy//HA83/xwPP/8cD0f/HA9P/8APV//AD1//wA9n/xwPb//AAjwAEAA0ACQANAEP/8ABF/8AARv/AAEf/wABJ/8AAUf/iAFP/wABYAAsAWwALAJH/wACV/8AAtv/AALgACwDE/8AA7f/XAPL/wAD+/8AA///XARP/4gEVAAsBGf/AAR3/wAE1/8ABR//AAUj/wAFS/8ABZQANAWYADQFoAA0BaQANAWoADQIM//ACDf/wAg7/8AIP//ACEP/wAhH/8AIS//ACE//AAhT/wAIV/8ACFv/AAhf/wAId/+ICHv/iAh//4gIg/+ICIf/iAiYACwInAAsCKf/wAiv/8AIt//ACL//AAjH/wAIz/8ACNf/AAjf/wAI5/8ACO//AAj3/wAI//8ACQf/AAkP/wAJF/8ACR//AAkn/wAJr/+ICbf/iAm//4gKVAAsDEP/AAxb/4gMYAAsDHP/iAzX/8AM2/8ADOP/iAzr/wAM7AAsDPf/AA0QACwNMAAsDTQANA04ADQNSAA0DVv/wA1z/wANhAAsDYv/AA2f/wANpAAsDb//wA3H/8AN1/8ADd//AA3j/wAOC/+IDhP/AA4b/4gOKAAsDjAALA44ACwOV/8ADl//XA5n/8AOb//ADnf/wA5//8AOh//ADo//wA6X/8AOn//ADqf/wA6v/8AOt//ADr//wA7H/wAOz/8ADtf/AA7f/wAO5/8ADu//AA73/wAO//8ADxf/iA8f/4gPJ/+IDy//iA83/4gPP/+ID0f/iA9P/wAPV/8AD1//AA9n/4gPb/8AD6wALA+0ACwPvAAsEEv/XAAgA7QAQAPT/8AD/ABADkP/wA5cAEAP7//AD/f/wBBIAEABFAEX/7gBG/+4AR//uAEn/7gBT/+4Akf/uAJX/7gC2/+4Aw//uAMT/7gDtAA4A8v/uAPT/4wD+/+4A/wAOARn/7gEd/+4BNf/uAUf/7gFI/+4BUv/uAhP/7gIU/+4CFf/uAhb/7gIX/+4CL//uAjH/7gIz/+4CNf/uAjf/7gI5/+4CO//uAj3/7gI//+4CQf/uAkP/7gJF/+4CR//uAkn/7gMQ/+4DNv/uAzr/7gM9/+4DXP/uA2L/7gNn/+4Ddf/uA3f/7gN4/+4DhP/uA5D/4wOV/+4DlwAOA7H/7gOz/+4Dtf/uA7f/7gO5/+4Du//uA73/7gO//+4D0//uA9X/7gPX/+4D2//uA/v/4wP9/+MEEgAOABcAWP/AAFv/wAC4/8AA9P/uARX/wAIm/8ACJ//AApX/wAMY/8ADO//AA0T/wANM/8ADYf/AA2n/wAOK/8ADjP/AA47/wAOQ/+4D6//AA+3/wAPv/8AD+//uA/3/7gAfAFj/9ABa//AAW//0ALj/9ADp//AA7f/zAP//8wEV//QCJv/0Aif/9AKV//QDGP/0Azv/9AM8//ADRP/0A0z/9ANh//QDaf/0A2z/8AN6//ADiv/0A4z/9AOO//QDlP/wA5f/8wPr//QD7f/0A+//9AP5//AEAf/wBBL/8wAKAAT/1gAJ/9YBZf/WAWb/1gFo/9YBaf/WAWr/1gNN/9YDTv/WA1L/1gAMAFr/4ADp/+AA9P/CAzz/4ANs/+ADev/gA5D/wgOU/+AD+f/gA/v/wgP9/8IEAf/gAAQA9P/SA5D/0gP7/9ID/f/SAAoABP/XAAn/1wFl/9cBZv/XAWj/1wFp/9cBav/XA03/1wNO/9cDUv/XAF4ABAALAAkACwBF/+sARv/rAEf/6wBJ/+sAUf/pAFP/6wCR/+sAlf/rALb/6wDD/+sAxP/rAPL/6wD+/+sBE//pARn/6wEd/+sBNf/rAUf/6wFI/+sBUv/rAWUACwFmAAsBaAALAWkACwFqAAsCE//rAhT/6wIV/+sCFv/rAhf/6wId/+kCHv/pAh//6QIg/+kCIf/pAi//6wIx/+sCM//rAjX/6wI3/+sCOf/rAjv/6wI9/+sCP//rAkH/6wJD/+sCRf/rAkf/6wJJ/+sCa//pAm3/6QJv/+kDEP/rAxb/6QMc/+kDNv/rAzj/6QM6/+sDPf/rA00ACwNOAAsDUgALA1z/6wNi/+sDZ//rA3X/6wN3/+sDeP/rA4L/6QOE/+sDhv/pA5X/6wOx/+sDs//rA7X/6wO3/+sDuf/rA7v/6wO9/+sDv//rA8X/6QPH/+kDyf/pA8v/6QPN/+kDz//pA9H/6QPT/+sD1f/rA9f/6wPZ/+kD2//rAAILPAAEAAAOBBVYACEAHQAAAAwAEf/f//T/zv/1/7P/7//Q/2r/iP+n//X/yf/ZABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/oAAAAAP/JAAD/5QAAAAAAAAAA//MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR/+UAAAAAAAAAAAAAAAD/5AAA/+MAAP/kAAAAEQAAABIAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAA/+oAAAAA/9UAAP/lAAAAAAAAAAAAAP/r/+r/6f+GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7f/mAAAAAAAAAAAAAAAAABT/7wAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAAAAAAAA/8T/y/98/7H/rv/kABAAAP+nABAAAAAQ/78AAAAP/34AAP+TAAAAAP7+/6f/s/+0/vD/8P+t/ygAAP+G/5L/DP9m/2H/vQAHAAD/VQAHAAAAB/9+AAAABf8PAAD/MwAAAAD+Nv9V/2r/a/4e/9H/XwAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2AAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP+j/+X/2P/hAAAAAAAAAAAAAAAA/+kAAAAAAAAAAAAAAAAAAAAA/+YAAAAA/1wAAAAAAAAAAAAAAAAAAAAA/4X/5/8y/+gAAP7p/v7/M//yAAD/owAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9vAAD/8wAPAAAAAAAAAAAAAAAAAAAAAAAAAAD/pwAA/07/zf/c/mz/8wAAAAAAAAAA//X/SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/S//X/8wAAAAAAAAAAAAAAAP/kAAAAAAAAAAD/tQAAAAD/Kf/UAAAAAP9jAAD/0gAAAAAAAAAR/9H/6//h/+cADgAAAAAAAAAAAAD/6wAAAAAAEQAAAAAAAAAAAAD/5gAAAAD/ZAAAAAAAAAAA/+IAAAAA/7//7P/jABL/oP/YABIAAAAR/9kAAAARAAAAAP9qAA0AAP8Z/7//6f/G/2j/8P/B/6AAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAADv/tAAAAAAAAAAD/1QAAAAD/cf/hAAAAAP/EAAD/3wAAAAAAAAAAAAD/6//l/+YAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAA0AAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAD/yv/p/70AAP/pAAAAAP+uABIAAAASAAAAAAAA/7sAAP+lAAAAAP53/70AAP/S/zkAAP+vAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAA/+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAD/9QAAAAAAAAAAAAD/4wAAAAAAAAAA//IAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAA//MAAAAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAD/8QAAAAAAAAAAAAD/7AAAAAAAAAAA//AAAAAAAAAAAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAAAAP/xAAAAAAAAAAAAAAAAAA8AAAAAAAAAAP/XAAAAAAAAAAD/Wf/zAAAAAAAAAAD/8QAAAAAAAAAAAAD/7AASAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAA/1P/7QAAAAAAAAAA/+wAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAD/pQAAAAAAAAAA/+wAAP/bAAAAAAAAAAAAAAAA/4gAAAAAAAD/xQAA/6QAAAAA/84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/IAAAAAP+t/8D/nwAA/+cAAAAA/+sAAAAAAAAAAAAA/8kAAAAAAAAAAAAAAAAAAAAA/+MAAP+1AAAAAAAAAAAAAP95AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAACAIsABAAEAAAACQAJAAEAEQARAAIAIwAoAAMAKgAzAAkANgA8ABMAQwBEABoARwBIABwASgBKAB4ATwBSAB8AVABUACMAWABYACQAWgBbACUAiACIACcAmQCZACgArACwACkAsgC0AC4AtgC2ADEAuAC4ADIAuwC8ADMAvgC+ADUAwADAADYAwgDHADcAzQDNAD0AzwDZAD4A2wDbAEkA3QDfAEoA4QDjAE0A5QDpAFAA7ADsAFUA8QDzAFYA9gD3AFkA+QD7AFsA/wEAAF4BBQEFAGABCAEIAGEBEwEVAGIBJwEpAGUBLAEsAGgBLgEuAGkBRQFFAGoBZQFmAGsBaAFqAG0BpgGmAHABqQGpAHEBqwGrAHIBsAGxAHMBtAG2AHUBuAG+AHgBxAHEAH8B1wHXAIAB2wHcAIEB3wHfAIMB6AHoAIQB7AHtAIUB7wHvAIcB8QISAIgCFAIXAKoCHAIhAK4CJgIuALQCMAIwAL0CMgIyAL4CNAI0AL8CNgI2AMACOAJBAMECSgJMAMsCTgJOAM4CUAJQAM8CUgJSANACVAJUANECVwJXANICWQJZANMCWwJbANQCXQJdANUCXwJfANYCYQJhANcCYwJvANgCcQJxAOUCcwJzAOYCdQJ1AOcCgAKAAOgCggKCAOkChAKEAOoChgKGAOsCiAKIAOwCigKKAO0CjAKMAO4CjgKOAO8CkAKQAPACkgKSAPEClAKXAPICmQKZAPYCmwKbAPcC+AL9APgDAAMPAP4DEgMSAQ4DFgMWAQ8DGAMYARADHAMcAREDHwMgARIDIgMrARQDLQMvAR4DMQM2ASEDOAM5AScDOwM+ASkDRANFAS0DRwNHAS8DSQNJATADSwNOATEDUgNXATUDWgNaATsDXANcATwDYANhAT0DZgNmAT8DaANxAUADdAN1AUoDdwN6AUwDgQOCAVADhgOGAVIDiAOOAVMDkwOUAVoDmAPAAVwDwgPCAYUDxAPRAYYD2QPZAZQD3APcAZUD3gPeAZYD6gPvAZcD8gPyAZ0D9AP0AZ4D9gP2AZ8D+AP5AaAD/gQBAaIEBAQEAaYEBgQHAacECQQJAakEDQQNAaoEDwQPAasEEwQTAawAAQAGAAoAKAAzADQAPQBIAAEALABIAE0AVgBZAF0AmQCwALIAswC0ALsAvgDAAMUAxwDIAMkAzQDPANAA0QDTANQA1gDeAN8A4gDjAOQA5QDmAOgA6gDsAPEA8wD2APcA+wD+AP8BAAEdAdwAAgB2AAQABAAAAAkACQABAA4ADgACABAAEAADACMAJwAEACoAMgAJADYAPAASAEMARQAZAEcARwAcAEoASgAdAE8AUgAeAFQAVAAiAFgAWAAjAFoAXAAkAIgAiAAnAKwArwAoALgAuAAsALwAvAAtAMIAwgAuAM8A0AAvANIA0gAxANUA1QAyANcA2QAzANsA2wA2AN0A3QA3AN8A3wA4AOEA4QA5AOcA5wA6AOkA6QA7APIA8gA8APcA9wA9APkA+gA+AP8BAABAAQUBBQBCAQgBCABDARMBFQBEAScBKQBHASwBLABKAS4BLgBLAUUBRQBMAWUBawBNAW8BcABUAewB7QBWAe8B7wBYAfECFwBZAhwCIQCAAiYCNgCGAjgCQQCXAkoCTAChAk4CTgCkAlACUAClAlICUgCmAlQCVACnAlcCVwCoAlkCWQCpAlsCWwCqAl0CXQCrAl8CXwCsAmECYQCtAmMCbwCuAnECcQC7AnMCcwC8AnUCdQC9AoACgAC+AoICggC/AoQChADAAoYChgDBAogCiADCAooCigDDAowCjADEAo4CjgDFApACkADGApICkgDHApQCnADIAvgC/QDRAwADDwDXAxIDEgDnAxYDFgDoAxgDGADpAxwDHADqAx8DIADrAyIDKwDtAy0DLwD3AzEDNgD6AzgDPgEAA0QDRQEHA0cDRwEJA0kDSQEKA0sDTgELA1IDVwEPA1oDWgEVA1wDXAEWA2ADYQEXA2YDcQEZA3QDdQElA3cDegEnA4EDggErA4YDhgEtA4gDjgEuA5MDlAE1A5gDwAE3A8IDwgFgA8QD0QFhA9kD2QFvA9wD3AFwA94D3gFxA+oD7wFyA/ID8gF4A/QD9AF5A/YD9gF6A/gD+QF7A/4EAQF9BAQEBAGBBAYEBwGCBAkECQGEBA0EDQGFBA8EDwGGBBMEEwGHAAIBOAAEAAQAHQAJAAkAHQAOAA4AHgAQABAAHgAkACQAAQAlACUABAAmACYAAwAnACcABQAqACsAAgAsACwADAAtAC0ACQAuAC4ACgAvADAAAgAxADEAAwAyADIACwA2ADYABgA3ADcADAA4ADgADQA5ADkAEAA6ADoADgA7ADsADwA8ADwAEQBDAEMAEwBEAEQAFQBFAEUAFABHAEcAFgBKAEoAFwBPAFAAFwBRAFEAGABSAFIAFQBUAFQAGgBYAFgAGQBaAFoAGwBbAFsAGQBcAFwAHACIAIgAFQCsAKwABwCuAK4AAwC4ALgAGQC8ALwAFwDCAMIAFQDPANAAHwDSANIAAgDVANUADgDXANgAAgDZANkAEgDbANsAAgDdAN0AAgDfAN8AHwDhAOEAHwDnAOcACADpAOkAGwDyAPIAFQD3APcAIAD5APkAIAD6APoAFQD/AQAAIAEFAQUAIAETARMAGAEUARQADQEVARUAGQEnAScAFQEoASgABwEpASkACAEsASwACQEuAS4ACQFFAUUACAFlAWYAHQFnAWcAHgFoAWoAHQFrAWsAHgFvAXAAHgHsAe0AAwHvAe8ABgH4AfgABAH5AfwABQH9AgEAAgICAgYAAwIHAgoADAILAgsADwIMAhIAEwITAhMAFAIUAhcAFgIcAhwAFwIdAiEAGAImAicAGQIpAikAEwIrAisAEwItAi0AEwIuAi4ABAIvAi8AFAIwAjAABAIxAjEAFAIyAjIABAIzAjMAFAI0AjQABAI1AjUAFAI2AjYAAwI4AjgABQI5AjkAFgI6AjoABQI7AjsAFgI8AjwABQI9Aj0AFgI+Aj4ABQI/Aj8AFgJAAkAABQJBAkEAFgJKAkoAAgJLAksAFwJMAkwAAgJOAk4AAgJQAlAAAgJSAlIAAgJUAlQAAgJXAlcADAJZAlkACQJbAlsACgJdAl0ACgJfAl8ACgJhAmEACgJjAmMAAgJkAmQAFwJlAmUAAgJmAmYAFwJnAmcAAgJoAmkAFwJqAmoAAwJrAmsAGAJsAmwAAwJtAm0AGAJuAm4AAwJvAm8AGAJxAnEAGgJzAnMAGgJ1AnUAGgKAAoAABgKCAoIABgKEAoQABgKGAoYADAKIAogADAKKAooADAKMAowADAKOAo4ADAKQApAADAKSApIAEAKUApQADwKVApUAGQKWApYADwKXApcAEQKYApgAHAKZApkAEQKaApoAHAKbApsAEQKcApwAHAL5AvkABQL6AvsAAgL8AvwAAwL9Av0ADwMBAwEAAQMCAwIABQMDAwMAEQMEAwUAAgMGAwYACQMHAwgAAgMJAwkAAwMKAwoACwMLAwsABgMMAwwADwMNAw0ADgMOAw4AAgMPAw8ADwMSAxIAFwMWAxYAGAMYAxgAGQMcAxwAGAMfAx8ABQMgAyAABwMiAyMAAgMkAyQADAMlAyYACQMnAycAEgMpAykAAQMqAyoABwMrAysABQMtAy4AAgMvAy8AAwMxAzEACwMyAzIABAMzAzMABgM0AzQADgM1AzUAEwM2AzYAFgM4AzgAGAM5AzkAFQM6AzoAFAM7AzsAGQM8AzwAGwM9Az0AFgM+Az4ACANEA0QAGQNFA0UAEANHA0cAEANJA0kAEANLA0sADwNMA0wAGQNNA04AHQNSA1IAHQNTA1MAAgNUA1QAFwNWA1YAEwNXA1cAAwNaA1oABQNcA1wAFgNgA2AADQNhA2EAGQNmA2YABANnA2cAFANoA2gADwNpA2kAGQNqA2oAAgNrA2sADgNsA2wAGwNtA20AAgNvA28AEwNxA3EAEwN0A3QABQN1A3UAFgN3A3gAFgN5A3kADgN6A3oAGwOBA4EAAwOCA4IAGAOGA4YAGAOIA4gAFQOJA4kAEgOKA4oAGQOLA4sAEgOMA4wAGQONA40AEgOOA44AGQOTA5MADgOUA5QAGwOZA5kAEwObA5sAEwOdA50AEwOfA58AEwOhA6EAEwOjA6MAEwOlA6UAEwOnA6cAEwOpA6kAEwOrA6sAEwOtA60AEwOvA68AEwOwA7AABQOxA7EAFgOyA7IABQOzA7MAFgO0A7QABQO1A7UAFgO2A7YABQO3A7cAFgO4A7gABQO5A7kAFgO6A7oABQO7A7sAFgO8A7wABQO9A70AFgO+A74ABQO/A78AFgPAA8AAAgPCA8IAAgPEA8QAAwPFA8UAGAPGA8YAAwPHA8cAGAPIA8gAAwPJA8kAGAPKA8oAAwPLA8sAGAPMA8wAAwPNA80AGAPOA84AAwPPA88AGAPQA9AAAwPRA9EAGAPZA9kAGAPcA9wADAPeA94ADAPqA+oADwPrA+sAGQPsA+wADwPtA+0AGQPuA+4ADwPvA+8AGQPyA/IACQP0A/QAAgP2A/YABgP4A/gADgP5A/kAGwP+A/4ABwP/A/8ACAQABAAADgQBBAEAGwQEBAQAFwQGBAYAHwQHBAcABwQJBAkACQQNBA0AAgQPBA8AAgQTBBMADwABAAQEFgALAAAAAAAAAAAACwAAAAAAAAAAABUAGQAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAGAAAAAAAAAAYAAAAAABwAAAAAAAAAAAAGAAAABgAAABoADAAIAAcADwATAAoAFAAAAAAAAAAAAAAAAAAbAAAAFgAWABYAAAAWAAAAAAAAAAAAAAAJAAkABAAJABYAAAAYAAAADQAFAAAAFwAFAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAWAAAAAAAGABYAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIABgASAAAAAAAAAAAAAAAAABYAAAAFAAAAAAAAAAkAAAAAAAAAAAAAAAAAFgAWAAAADQAAAAAAAAAAAAAAAAAMAAYAAgAAAAwAAAAAAAAAEwAAAAAAAgARAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAABcAAAAJAAkAEAAJAAkACQAAABYACQADAAkACQAAAAAACQAAAAkAAAAAABYAEAAJAAAAAAAGAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAGAAQABwAFAAYAAAAGABYABgAAAAYAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAkAAAAAAAYAFgAMAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAJAAAAFgAWAAAAAAAAAAAAAgAAAAAAAAAGABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAZAAAACwALABUACwALAAsAFQAAAAAAAAAVABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAABIAEgASABIAEgASABIABgAAAAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGAAYACAAIAAgACAAKABsAGwAbABsAGwAbABsAFgAWABYAFgAWAAAAAAAAAAAACQAEAAQABAAEAAQADQANAA0ADQAFAAUAEgAbABIAGwASABsABgAWAAYAFgAGABYABgAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAYAFgAGABYABgAWAAYAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAkAAAAJAAkABgAEAAYABAAGAAQAAAAAAAAAAAAAAAAAGgAYABoAGAAaABgAGgAYABoAGAAMAAAADAAAAAwAAAAIAA0ACAANAAgADQAIAA0ACAANAAgADQAPAAAACgAFAAoAFAABABQAAQAUAAEAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAYACgAAAAAAEgAAAAAAFAAAAAAAAAAAAAAABgAAAAAACgATAAAACgAWAAAACQAAAA0AAAAEAAAABQAAAAAADQAEAA0AAAAAAAAAAAAAAAAAHAAAAAAAEQASAAAAAAAAAAAAAAAAAAYAAAAAAAYADAATABsAFgAJAAQACQAWAAUAFwAWAAkAGAAAAAAAAAAJAAUADwAAAA8AAAAPAAAACgAFAAsACwAAAAAAAAALAAAACQASABsABgAAAAAAAAAAABYACQAAAAAABwAFABYABgAAAAAABgAWAAoABQAAABMAFwAAABIAGwASABsAAAAAAAAAFgAAABYAFgATABcAAAAAAAAACQAAAAkABgAEAAYAFgAGAAQAAAAAABEABQARAAUAEQAFAA4AAwAAAAkAEwAXABYAAgAQABIAGwASABsAEgAbABIAGwASABsAEgAbABIAGwASABsAEgAbABIAGwASABsAEgAbAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAAAAAAAAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAWAAYAFgAGABYABgAEAAYAFgAIAA0ACAANAAAADQAAAA0AAAANAAAADQAAAA0ACgAFAAoABQAKAAUAAAAAAAAACQAAAAkADAAAABMAFwAOAAMADgADAAAACQATABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAACQAAAAkAAgAQAAoAAAAAAAAAAAAAABkAAAABAAAACgAsAI4AAURGTFQACAAEAAAAAP//AAgAAAABAAIAAwAEAAUABgAHAAhsaWdhADJsbnVtADhzbWNwAD5zczAxAERzczAyAEpzczAzAFBzczA0AFZzczA1AFwAAAABAAEAAAABAAIAAAABAAAAAAABAAMAAAABAAQAAAABAAUAAAABAAYAAAABAAcACAASABoAIgAqADIAOgBCAEoAAQAAAAEAQAAEAAAAAQH2AAEAAAABAgAAAQAAAAECEgABAAAAAQIQAAEAAAABAg4AAQAAAAECDAABAAAAAQIOAAICEADcAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AegBtQG2AbcBuAG5AboBuwG8Ab0BvgGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAHoAbUBtgG3AbgBuQG6AbsBvAG9Ab4C9wKiAqECogKjAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4C8wK/Ar8CwALAAsECwQLCAsICwwLDAsUCxQLGAsYCxwLHAsgCyALJAskCygLKAssCywLMAswCzQLNAs8CzwLQAtAC0QLRAtIC0gLTAtMC1ALUAtUC1gLWAtcC1wLYAtgC2QLZAtoC2gLbAtsC3ALcAt0C3QLeAt4C3wLfAuAC4ALhAuEC4gLiAuMC4wLkAuQC5QLlAuYC5gLnAucC6ALo/////wLqAuoC6wLrAuwC7ALtAu0C7gLuAu8C7wLwAvAC8QLxAvIC8gLzAvQC9AL1AvUC9gL2AqEAAQCkAAEACAABAAQBkgACAEsAAgCYAAoBmAHMAcQB1gHXAdgB2QHbAd0B5wABAIgBkQABAIgBKAABAIgBrgACAIgAAgHjAeQAAgB+AAIB5QHmAAIADQAjADwAAABDAFwAGgCDAIMANACFAIUANQHsAe0ANgHvAjEAOAI0AkUAewJIAlQAjQJXAmgAmgJqAnsArAJ+An8AvgKCApwAwAPwA/AA2wABAAEASAACAAEAEgAbAAAAAQABAEkAAQABALYAAQABADQAAQACAC0ATQ==","Roboto-Regular.ttf":"AAEAAAAOAIAAAwBgR0RFRgsuCy8AASx0AAAASEdQT1OC3T4oAAEsvAAAkPhHU1VCeolvLwABvbQAAANsT1MvMrivKcMAAAFoAAAAYFZETVhu6nZPAAASOAAABeBjbWFwf76BZgAAGBgAAA7iZ2x5ZusE9WMAACb8AADUeGhlYWT1kQ7EAAAA7AAAADZoaGVhC3AJkwAAASQAAAAkaG10eJaDaacAAAHIAAAQcGxvY2EvrvnGAAD7dAAACDptYXhwBDsA9gAAAUgAAAAgbmFtZbs83bQAAQOwAAAEeXBvc3Tfb5xiAAEILAAAJEYAAQAAAAEAAHdFsyVfDzz1AAkIAAAAAADE8BEuAAAAAM2CsmH6jf3VCXQIYgAAAAkAAgAAAAAAAAABAAAHbP4MAAAJkvqN/dgJdAABAAAAAAAAAAAAAAAAAAAEHAABAAAEHACXABYAXQAFAAEAAAAAAAAAAAAAAAAAAwABAAMElwGQAAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAAAAAAAAAAAAAAA4AAC/1AAIFsAAAAgAAAAAHB5cnMAQAAA//0GAP4AAGYHmgIAIAABn08BAAAEOgWwAAAAIAACAfsAAAAAAAAB+wAAAfsAAAKPAGkE+wBGBH4AbgXcAGkE+QBEAWUAZwKhAIUCqgAIA3IAHASJAE4BkgAdAjUAJQIbAKIDTAASBH4AcgR+ANcEfgBdBH4AXgR+ADkEfgCaBH4AhwR+AE0EfgBmBH4AVAH4AKACAABKBBEASASAAJgELgCGA8cAOgcvAGEFSgAnBRcAtgUeAIMFaQC2BKoAtgSnALYFfgCFBbMAtgI/AMMEagA/BSQAtgRgALYHAwC2BbQAtgWQAIIFGQC2BZAAggVMALUE4wBaBMYAOwVoAJYFKQAnBw0ASAUJAEEE8gAeBMkAYQIfAJIDSAAoAh8ACQNYAEADnAAEAnkATwRiAHIEiACRBDsAYQSIAGQENwBiAr4AQgSIAGYEiACRAfwAoQIL/7YEEwCSAfwAoQcCAJAEiACRBIgAYASIAJEEiABkAsoAkQQrAGYCjAAdBIgAjQQCAC4GDgAwBAIALgQCABsEAgBeArUAQAHzAK8CtQATBXEAggHzAJAEYQBuBKYARgW0AGkE2AAgAesAkwToAFoD9ACpBkkAWwOTAHoDwQBmBG4AfwZKAFoDqgB4Av0AggRHAGEDXwBxA2gAaQKCAIEEiACaA+kAQgIWAKIB+wB0AiYAXgOjAHoDwABvBjYAtAaWALQG6wB7A+0AcQd6//IERABZBXIAcwS6AKYEwgCLBsEAPQSwAEwEkQBHBIkAYAScAJoFmwAeAfoAmwRzAJoEMwAmAioAIwWLAKQEiACRB6EAaQdEAGEB/ACgArn/5AV/AHEEkwBgBZAAlgTzAI0CA/+0BDcAYgPEAKkDjQCMA2oAgQIhAKACtQCLAioAMgPGAIIC/ABoAp0AtgAA/NoAAP13AAD8kwAA/V4AAPwnAAD9QwINAMMECwChAhcAogRzALUFpAAgBXIAcwU+ADQEkQB6BbUAtgSRAEUFuwBOBYkAXQVSAHIEhQBkBL0AoAQCAC4EiABgBFAAYwQlAG0EiACRBI8AegKXAMMEbgAlA+wAZQTFAE8EiACRBE0AZQSIAGAELABRBF0AjwWjAFcFmgBfBpcAegTwAHQEQv/nBkgASgX/ACsFZQCHCJkAMgikALUGggBABbQAtQULAKYGBAA0B0MAGwS/AFEFtAC2BakAMAUHAFEGLQBTBdkAtAV6AJcHhwC0B8AAtAYSABEG6wC1BQUApgVkALEHJwDDBRgAYwRsAGEEkgCdA1sAmgTUAC4GIAAVBBAAWASeAJwEUgCcBKAAKAXvAJ0EnQCcBJ4AnAPYACgFzQBkBL0AnARZAGcGeACcBp8AkQT3AB4GNgCdBFgAnQRNAGQGiACdBGQALwSJ/+cETgBsBskAJwbkAJwEif/9BJ4AnAcIAJ8GKwCBBFb/3AcsAMQF+QCZBNIAKgRGAA8HDADWBgwAvAbRAJYF4QCWCQUAwwfRAJsEJABQA9sATAVyAHMEjABgBQoAFwQDAC4FcgBzBIkAYAcBAJ8GJAB+BwkAnwYsAIEFMgB4BEcAZAT9AHQAAPxnAAD8cQAA/WYAAP2kAAD6jQAA+qQEVv/cBRsAtQSKAJEEZACmA5AAkQTbALUEBgCRBQkApgR+AJoGjABFBYQAPgfPALUFtACRCDEAtAb0AJEF7gBzBNMAbQctADQFXAAfBXAAlwRrAIMFcACOBi8ARwS+/+MFCQCmBFoAmgWyALUEiACRBYcAXwSoAGkEqABpBLcAOgNJADsE9gBZBpQAWQbkAGQGVgA2BSsAMQRKAFMECAB5B8EARQZ1AD8H+wCtBqEAkAT2AHkEHQBlBa0AJAUgAEYFZACbBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAABYgAswZ9ALsDpgANAZkAYAGZADABlwAkAZoAUALUAGAC2wA8AsEAJARpAEYEjwBXArIAigPEAKYFWgCmB6oARAJmAGwCZgBZA6MAOwOrAEgDYAB6BKYARgaRAKcEPgBPBegAewPOAGgIywCrBQEAZgUXAJgGuwBvB1AAawd/AGwG2wBrBKIATAWOAKkErwBFBJIAqATFAD8IOgBrAgz/tASCAGUELQCYBDYAngQ8AJkECAArAkwAxwKPAG4CAwBcBG4AHwAAAAAIMwBbCDUAXAQcAFwDjQBXBIAAcwML/6IB/P+2AiUAGwGRAGcDpACDA54AgQOfAIED9ABtBA4AaQPz/14D7wBuA6QAWwH9AJ8EtQApBHUAmwSPAHIEpgCbBEMAmwQdAJsEzwByBPYAmwH6AJsECwBBBF0AmwO5AJsF9ACbBRkAmwTLAHIE4QByBKkAmwRvAF0ELABHBQIAjAS4ACoGBQBBBIQAOAReACAEPgBOBHcAewJpAEID4QBaBBIAWQRkAEcEaQBdBC0AegO5AEcELQBcBCcASwInAF4DVQBxA2gAaQL8AEoDeQByA3oAewMMAF4DggByA2sAaQOkAHwDlgCPArUAngNHAG8EfgBeBH4AOQR+AJoEjwCHBDoAHgRCADsEbwBaBH4AZgTDAGQEiABgBUQAtgRiAHIFLwC1BSQAtgQTAJIFPQC2BA8AkgR+AFQEdQCbA2oAgQH7AAACNQAlBYcALgWHAC4EpgAGBMYAOwKM/+MFSgAnBUoAJwVKACcFSgAnBUoAJwVKACcFSgAnBR4AgwSqALYEqgC2BKoAtgSqALYCP//cAj8AwwI///ICP//MBbQAtgWQAIIFkACCBZAAggWQAIIFkACCBWgAlgVoAJYFaACWBWgAlgTyAB4EYgByBGIAcgRiAHIEYgByBGIAcgRiAHIEYgByBDsAYQQ3AGIENwBiBDcAYgQ3AGIB+v+1AfoAmwH6/8sB+v+lBIgAkQSIAGAEiABgBIgAYASIAGAEiABgBIgAjQSIAI0EiACNBIgAjQQCABsEAgAbBUoAJwRiAHIFSgAnBGIAcgVKACcEYgByBR4AgwQ7AGEFHgCDBDsAYQUeAIMEOwBhBR4AgwQ7AGEFaQC2BR4AZASqALYENwBiBKoAtgQ3AGIEqgC2BDcAYgSqALYENwBiBKoAtgQ3AGIFfgCFBIgAZgV+AIUEiABmBX4AhQSIAGYFfgCFBIgAZgWzALYEiACRAj//xQH6/54CP/+/Afr/mAI///UB+v/OAj8AIQH8AAACPwC3BqkAwwQHAKEEagA/AgP/tAUkALYEEwCSBGAAtgH8AKEEYAC2AfwAWwRgALYCkgChBGAAtgLYAKEFtAC2BIgAkQW0ALYEiACRBbQAtgSIAJEEiP/SBZAAggSIAGAFkACCBIgAYAWQAIIEiABgBUwAtQLKAJEFTAC1AsoAWAVMALUCygBpBOMAWgQrAGYE4wBaBCsAZgTjAFoEKwBmBOMAWgQrAGYE4wBaBCsAZgTGADsCjAAdBMYAOwKMAB0ExgA7ArQAHQVoAJYEiACNBWgAlgSIAI0FaACWBIgAjQVoAJYEiACNBWgAlgSIAI0FaACWBIgAjQcNAEgGDgAwBPIAHgQCABsE8gAeBMkAYQQCAF4EyQBhBAIAXgTJAGEEAgBeB3r/8gbBAD0FcgBzBIkAYASm//MEpv/zBCwARwS1ACkEtQApBLUAKQS1ACkEtQApBLUAKQS1ACkEjwByBEMAmwRDAJsEQwCbBEMAmwH6/7MB+gCbAfr/yQH6/6MFGQCbBMsAcgTLAHIEywByBMsAcgTLAHIFAgCMBQIAjAUCAIwFAgCMBF4AIAS1ACkEtQApBLUAKQSPAHIEjwByBI8AcgSPAHIEpgCbBEMAmwRDAJsEQwCbBEMAmwRDAJsEzwByBM8AcgTPAHIEzwByBPYAmwH6/5wB+v+WAfr/zAH6//cB+gCPBAsAQQRdAJsDuQCbA7kAmwO5AJsDuQCbBRkAmwUZAJsFGQCbBMsAcgTLAHIEywByBKkAmwSpAJsEqQCbBG8AXQRvAF0EbwBdBG8AXQQsAEcELABHBQIAjAUCAIwFAgCMBQIAjAUCAIwFAgCMBgUAQQReACAEXgAgBD4ATgQ+AE4EPgBOCN4AXQVKACcFDv/mBhcAEwKjABkFpABSBVb/jQVmAD8Cl//IBUoAJwUXALYEqgC2BMkAYQWzALYCPwDDBSQAtgcDALYFtAC2BZAAggUZALYExgA7BPIAHgUJAEECP//MBPIAHgSFAGQEUABjBIgAkQKXAMMEXQCPBHMAmgSIAGAEiACaBAIALgQCAC4Cl//TBF0AjwSIAGAEXQCPBpcAegSqALYEcwC1BOMAWgI/AMMCP//MBGoAPwUkALYFJAC2BQcAUQVKACcFFwC2BHMAtQSqALYFtAC2BwMAtgWzALYFkACCBbUAtgUZALYFHgCDBMYAOwUJAEEEYgByBDcAYgSeAJwEiABgBIgAkQQ7AGEEAgAbBAIALgQ3AGIDWwCaBCsAZgH8AKEB+v+lAgv/tgRSAJwEAgAbBw0ASAYOADAHDQBIBg4AMAcNAEgGDgAwBPIAHgQCABsBZQBnAo8AaQQeAKkEugBCAgP/tAGZADAHAwC2BwIAkAVKACcEYgByBZD/PgcsAEIHeABCBKoAtgW0ALYENwBiBJ4AnAWJAF0FmgBfBQoAFwQD//kIigBgCZIAggS/AFEEEABYBR4AgwQ7AGEE8gAeBAIALgI/AMMHQwAbBiAAFQI/AMMFSgAnBGIAcgVKACcEYgByB3r/8gbBAD0EqgC2BDcAYgWHAF8ENwBiBDcAYgdDABsGIAAVBL8AUQQQAFgFtAC2BJ4AnAW0ALYEngCcBZAAggSIAGAFcgBzBIwAYAVyAHMEjABgBWQAsQRNAGQFBwBRBAIAGwUHAFEEAgAbBQcAUQQCABsFegCXBFkAZwbrALUGNgCdBQkAQQQCAC4EiABkBakAMASgACgFSgAnBGIAcgVKACcEYgByBUoAJwRiAHIFSgAnBGL/rgVKACcEYgByBUoAJwRiAHIFSgAnBGIAcgVKACcEYgByBUoAJwRiAHIFSgAnBGIAcgVKACcEYgByBUoAJwRiAHIEqgC2BDcAYgSqALYENwBiBKoAtgQ3AGIEqgC2BDcAYgSq//gEN/+zBKoAtgQ3AGIEqgC2BDcAYgSqALYENwBiAj8AwwH6AJsCPwC3AfwAlgWQAIIEiABgBZAAggSIAGAFkACCBIgAYAWQAEwEiP/LBZAAggSIAGAFkACCBIgAYAWQAIIEiABgBX8AcQSTAGAFfwBxBJMAYAV/AHEEkwBgBX8AcQSTAGAFfwBxBJMAYAVoAJYEiACNBWgAlgSIAI0FkACWBPMAjQWQAJYE8wCNBZAAlgTzAI0FkACWBPMAjQWQAJYE8wCNBPIAHgQCABsE8gAeBAIAGwTyAB4EAgAbBKYAZASmAGQFJAC2BFIAnAWzALYEnQCcBMYAOwPYACgFCQBBBAIALgV6AJcEWQBnBXoAlwRZAGcEcwC1A1sAmgdDABsGIAAVBi8ARwS+/+MEiACRBQX/1AUF/9QEcwADA1v//AU4//UEJ//YBbQAtgSeAJwFswC2BJ0AnAcDALYF7wCdBakAMASgACgE8gAeBAIALgUJAEEEAgAuBFAAYwSnABsGfQC7AAAAAAIPAKkAAAABAAEBAQEBAAwA+Aj/AAgACP/+AAkACf/9AAoACv/9AAsAC//9AAwADP/9AA0ADf/8AA4ADv/8AA8AD//8ABAAEP/8ABEAEf/7ABIAEv/7ABMAE//7ABQAFP/7ABUAFP/6ABYAFf/6ABcAFv/6ABgAF//6ABkAGP/5ABoAGf/5ABsAGv/5ABwAG//5AB0AHP/4AB4AHf/4AB8AHv/4ACAAH//4ACEAIP/3ACIAIf/3ACMAIv/3ACQAI//3ACUAJP/2ACYAJf/2ACcAJv/2ACgAJ//2ACkAJ//1ACoAKP/1ACsAKf/1ACwAKv/1AC0AK//0AC4ALP/0AC8ALf/0ADAALv/0ADEAL//zADIAMP/zADMAMf/zADQAMv/zADUAM//yADYANP/yADcANf/yADgANv/yADkAN//xADoAOP/xADsAOf/xADwAOv/xAD0AOv/wAD4AO//wAD8APP/wAEAAPf/wAEEAPv/vAEIAP//vAEMAQP/vAEQAQf/vAEUAQv/uAEYAQ//uAEcARP/uAEgARf/uAEkARv/tAEoAR//tAEsASP/tAEwASf/tAE0ASv/sAE4AS//sAE8ATP/sAFAATf/sAFEATf/rAFIATv/rAFMAT//rAFQAUP/rAFUAUf/qAFYAUv/qAFcAU//qAFgAVP/qAFkAVf/pAFoAVv/pAFsAV//pAFwAWP/pAF0AWf/oAF4AWv/oAF8AW//oAGAAXP/oAGEAXf/nAGIAXv/nAGMAX//nAGQAYP/nAGUAYP/mAGYAYf/mAGcAYv/mAGgAY//mAGkAZP/lAGoAZf/lAGsAZv/lAGwAZ//lAG0AaP/kAG4Aaf/kAG8Aav/kAHAAa//kAHEAbP/jAHIAbf/jAHMAbv/jAHQAb//jAHUAcP/iAHYAcf/iAHcAcv/iAHgAc//iAHkAc//hAHoAdP/hAHsAdf/hAHwAdv/hAH0Ad//gAH4AeP/gAH8Aef/gAIAAev/gAIEAe//fAIIAfP/fAIMAff/fAIQAfv/fAIUAf//eAIYAgP/eAIcAgf/eAIgAgv/eAIkAg//dAIoAhP/dAIsAhf/dAIwAhv/dAI0Ahv/cAI4Ah//cAI8AiP/cAJAAif/cAJEAiv/bAJIAi//bAJMAjP/bAJQAjf/bAJUAjv/aAJYAj//aAJcAkP/aAJgAkf/aAJkAkv/ZAJoAk//ZAJsAlP/ZAJwAlf/ZAJ0Alv/YAJ4Al//YAJ8AmP/YAKAAmf/YAKEAmf/XAKIAmv/XAKMAm//XAKQAnP/XAKUAnf/WAKYAnv/WAKcAn//WAKgAoP/WAKkAof/VAKoAov/VAKsAo//VAKwApP/VAK0Apf/UAK4Apv/UAK8Ap//UALAAqP/UALEAqf/TALIAqv/TALMAq//TALQArP/TALUArP/SALYArf/SALcArv/SALgAr//SALkAsP/RALoAsf/RALsAsv/RALwAs//RAL0AtP/QAL4Atf/QAL8Atv/QAMAAt//QAMEAuP/PAMIAuf/PAMMAuv/PAMQAu//PAMUAvP/OAMYAvf/OAMcAvv/OAMgAv//OAMkAv//NAMoAwP/NAMsAwf/NAMwAwv/NAM0Aw//MAM4AxP/MAM8Axf/MANAAxv/MANEAx//LANIAyP/LANMAyf/LANQAyv/LANUAy//KANYAzP/KANcAzf/KANgAzv/KANkAz//JANoA0P/JANsA0f/JANwA0v/JAN0A0v/IAN4A0//IAN8A1P/IAOAA1f/IAOEA1v/HAOIA1//HAOMA2P/HAOQA2f/HAOUA2v/GAOYA2//GAOcA3P/GAOgA3f/GAOkA3v/FAOoA3//FAOsA4P/FAOwA4f/FAO0A4v/EAO4A4//EAO8A5P/EAPAA5f/EAPEA5f/DAPIA5v/DAPMA5//DAPQA6P/DAPUA6f/CAPYA6v/CAPcA6//CAPgA7P/CAPkA7f/BAPoA7v/BAPsA7//BAPwA8P/BAP0A8f/AAP4A8v/AAP8A8//AAAAAAwAAAAMAAAiEAAEAAAAAABwAAwABAAACJgAGAgoAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAMEGwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYAAAAfUB9gH4AfoCAQIGAgoCDQIMAg4CEAIPAhECEwIVAhQCFgIXAhkCGAIaAhsCHAIeAh0CHwIhAiACIwIiAiQCJQFsAG8AYgBjAGcBbgB1AIMAbQBpAX0AcwBoAYsAfwCBAYgAcAGMAY0AZQB0AYMBhQGEAMEBiQBqAHkAtQCEAIcAfgBhAGwBhwCTAYoArQBrAHoBcAADAfEB9AIFAJAAkQFiAWMBaQFqAWUBZgCGAY4CJwKWAXQBeQFyAXMBkgNQAW0AdgFnAWsBcQHzAfsB8gH8AfkB/gH/AgAB/QIDAgQAAAICAggCCQIHAIoAmgCgAG4AnACdAJ4AdwChAJ8AmwAEBl4AAADqAIAABgBqAAAAAgANACEAfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABOAFAAVMBXwFnAX4BfwGSAaEBsAHwAfsB/wIZAhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEzgTXBOEE9QUBBRAFEx4BHj8ehR7xHvMe+R9NIAsgFSAeICIgJiAwIDMgOiA8IEQgdCB/IKQgpyCsIQUhEyEWISIhJiEuIV4iAiIGIg8iEiIaIh4iKyJIImAiZSXK7gL2w/sE/v///f//AAAAAAACAA0AIAAiAKAAoQCtAK4AwADHANAA5wDwAP8BEAESASYBKAExATkBQQFUAWABaAF/AZIBoAGvAfAB+gH8AhgCGgI3AlkCvALGAskC2ALzAwADAwMJAw8DIwOEA4wDjgOTA6MDsQO6A8oD0QPWBAAEJgQwBEYEUARjBHAEegSIBM8E2ATiBPYFAgURHgAePh6AHqAe8h70H00gACATIBcgICAlIDAgMiA5IDwgRCB0IH8goyCnIKshBSETIRYhIiEmIS4hWyICIgYiDyIRIhoiHiIrIkgiYCJkJcruAfbD+wH+///8//8AAQQY//UAAP/iAAD/wAAA/78AAAExAAABLAAAASgAAAEmAAABJAAAASIAAAEcAAABHgAA/wH+9P7nAWEAAAChAGQAZv5h/kAAlv3U/aX9xP2v/aP9ov2d/Zj9hQAA/3D/bwAAAAD9BQAA/1D8+fz2AAD8tQAA/K0AAPyiAAD8nAAA/p4AAP6bAAD8RQAA5VXlFeTF5PjkWeT25ArhVgAA4U3hTOFK4UHjG+E54xPhMOEB4PcAAODRAADgdeBo4GbgW9+P4FDgJN+B3qffdd90323fat9e30LfK98o28QTjgrOAAAClAGYAAEAAAAAAAAA5AAAAOQAAADiAAAA4AAAAOoAAAEUAAABLgAAAS4AAAEuAAABOgAAAVwAAAFoAAAAAAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAAAAAFMAWgAAAGAAAAAAAAAAZgAAAHgAAACCAAAAioAAAI6AAACxAAAAtQAAALoAAAAAAAAAAAAAAAAAAAAAALcAAAAAAAAAAAAAAAAAAAAAAAAAAACzAAAAswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqYAAAAAAAAAAwQbAeoB6wHxAfIB8wH0AfUB9gB/Ae0CAQICAgMCBAIFAgYAgACBAgcCCAIJAgoCCwCCAIMCDAINAg4CDwIQAhEAhACFAhwCHQIeAh8CIAIhAIYAhwIiAiMCJAIlAiYAiAHsA/AAiQHuAIoCVQJWAlcCWAJZAloAiwCMAI0CYwJkAmUCZgJnAmgCaQCOAI8CagJrAmwCbQJuAm8AkACRAn4CfwKCAoMChAKFAe8B8ACSAfcCEgCpAKoC+ACrAvkC+gL7AKwArQMCAwMDBACuAwUDBgCvAwcDCACwAwkAsQMKALIDCwMMALMDDQC0ALUDDgMPAxADEQMSAxMDFAMVAL8DFwMYAMADFgDBAMIAwwDEAMUAxgDHAxkAyADJA1oDHwDNAyAAzgMhAyIDIwMkAM8A0ADRAyYDWwMnANIDKADTAykDKgDUAysA1QDWANcDLAMlANgDLQMuAy8DMAMxAzIDMwDZANoDNAM1AOUA5gDnAOgDNgDpAOoA6wM3AOwA7QDuAO8DOADwAzkDOgDxAzsA8gM8A1wDPQD9Az4A/gM/A0ADQQNCAP8BAAEBA0MDXQNEAQIBAwEEBAYDXgNfARIBEwEUARUDYANhA2MDYgEjASQECwQMBAUBJQEmAScBKAEpBAcECAEqASsEAAQBA2QDZQPyA/MBLAEtBAkECgEuAS8D9AP1ATABMQEyATMBNAE1A2YDZwP2A/cDaANpBBMEFAP4A/kBNgE3A/oD+wE4ATkBOgQEATsBPAQCBAMDagNrA2wBPQE+BBEEEgE/AUAEDQQOA/wD/QQPBBABQQN3A3YDeAN5A3oDewN8AUIBQwP+A/8DkQOSAUQBRQOTA5QEFQQWAUYDlQQXA5YDlwFiAWMEGQQYAXcD8QF5AZIDUANYA1kABAZeAAAA6gCAAAYAagAAAAIADQAhAH4AoACsAK0AvwDGAM8A5gDvAP4BDwERASUBJwEwATgBQAFTAV8BZwF+AX8BkgGhAbAB8AH7Af8CGQIbAjcCWQK8AscCyQLdAvMDAQMDAwkDDwMjA4oDjAOSA6EDsAO5A8kDzgPSA9YEJQQvBEUETwRiBG8EeQSGBM4E1wThBPUFAQUQBRMeAR4/HoUe8R7zHvkfTSALIBUgHiAiICYgMCAzIDogPCBEIHQgfyCkIKcgrCEFIRMhFiEiISYhLiFeIgIiBiIPIhIiGiIeIisiSCJgImUlyu4C9sP7BP7///3//wAAAAAAAgANACAAIgCgAKEArQCuAMAAxwDQAOcA8AD/ARABEgEmASgBMQE5AUEBVAFgAWgBfwGSAaABrwHwAfoB/AIYAhoCNwJZArwCxgLJAtgC8wMAAwMDCQMPAyMDhAOMA44DkwOjA7EDugPKA9ED1gQABCYEMARGBFAEYwRwBHoEiATPBNgE4gT2BQIFER4AHj4egB6gHvIe9B9NIAAgEyAXICAgJSAwIDIgOSA8IEQgdCB/IKMgpyCrIQUhEyEWISIhJiEuIVsiAiIGIg8iESIaIh4iKyJIImAiZCXK7gH2w/sB/v///P//AAEEGP/1AAD/4gAA/8AAAP+/AAABMQAAASwAAAEoAAABJgAAASQAAAEiAAABHAAAAR4AAP8B/vT+5wFhAAAAoQBkAGb+Yf5AAJb91P2l/cT9r/2j/aL9nf2Y/YUAAP9w/28AAAAA/QUAAP9Q/Pn89gAA/LUAAPytAAD8ogAA/JwAAP6eAAD+mwAA/EUAAOVV5RXkxeT45Fnk9uQK4VYAAOFN4UzhSuFB4xvhOeMT4TDhAeD3AADg0QAA4HXgaOBm4Fvfj+BQ4CTfgd6n33XfdN9t32rfXt9C3yvfKNvEE44KzgAAApQBmAABAAAAAAAAAOQAAADkAAAA4gAAAOAAAADqAAABFAAAAS4AAAEuAAABLgAAAToAAAFcAAABaAAAAAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRAAAAAABTAFoAAABgAAAAAAAAAGYAAAB4AAAAggAAAIqAAACOgAAAsQAAALUAAAC6AAAAAAAAAAAAAAAAAAAAAAC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAswAAALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmAAAAAAAAAAMEGwHqAesB8QHyAfMB9AH1AfYAfwHtAgECAgIDAgQCBQIGAIAAgQIHAggCCQIKAgsAggCDAgwCDQIOAg8CEAIRAIQAhQIcAh0CHgIfAiACIQCGAIcCIgIjAiQCJQImAIgB7APwAIkB7gCKAlUCVgJXAlgCWQJaAIsAjACNAmMCZAJlAmYCZwJoAmkAjgCPAmoCawJsAm0CbgJvAJAAkQJ+An8CggKDAoQChQHvAfAAkgH3AhIAqQCqAvgAqwL5AvoC+wCsAK0DAgMDAwQArgMFAwYArwMHAwgAsAMJALEDCgCyAwsDDACzAw0AtAC1Aw4DDwMQAxEDEgMTAxQDFQC/AxcDGADAAxYAwQDCAMMAxADFAMYAxwMZAMgAyQNaAx8AzQMgAM4DIQMiAyMDJADPANAA0QMmA1sDJwDSAygA0wMpAyoA1AMrANUA1gDXAywDJQDYAy0DLgMvAzADMQMyAzMA2QDaAzQDNQDlAOYA5wDoAzYA6QDqAOsDNwDsAO0A7gDvAzgA8AM5AzoA8QM7APIDPANcAz0A/QM+AP4DPwNAA0EDQgD/AQABAQNDA10DRAECAQMBBAQGA14DXwESARMBFAEVA2ADYQNjA2IBIwEkBAsEDAQFASUBJgEnASgBKQQHBAgBKgErBAAEAQNkA2UD8gPzASwBLQQJBAoBLgEvA/QD9QEwATEBMgEzATQBNQNmA2cD9gP3A2gDaQQTBBQD+AP5ATYBNwP6A/sBOAE5AToEBAE7ATwEAgQDA2oDawNsAT0BPgQRBBIBPwFABA0EDgP8A/0EDwQQAUEDdwN2A3gDeQN6A3sDfAFCAUMD/gP/A5EDkgFEAUUDkwOUBBUEFgFGA5UEFwOWA5cBYgFjBBkEGAF3A/EBeQGSA1ADWANZAAAAAgBpBBQCHwYYAAUACgAAAQMjEzUzBQMjETMCHy9eAYz+1i9djAWN/ocBd42L/ocCBAAAAAIARgAABKIFsAAbAB8AAAEhAyMTIzUhEyE1IRMzAyETMwMzFSMDMxUjAyMDIRMhAsz++FCPUO8BCUb+/QEeUY9RAQhRkFHL5kbh+1CQngEIRv74AZr+ZgGahwFmiQGg/mABoP5gif6ah/5mAiEBZgABAG7/MAQRBpsAKwAAATQmJy4BNTQ2NzUzFR4BFSM0JiMiBhUUFhceARUUBgcVIzUuATUzFBYzMjYDWH+bz8m8qpWst7iAeHx5eabRwsu3lLDduaB4hpMBdl1/ND/GrajMFdrbGOnOjKh8bmV3OES/rK/IEr+/EdPZoIJ8AAAAAAUAaf/rBYMFxQANABsAKQA3ADsAABM0NjMyFh0BFAYjIiY1MxQWMzI2PQE0JiMiBhUBNDYzMhYdARQGIyImNTMUFjMyNj0BNCYjIgYVBScBF2mgioqhoImLoYtST01RUk5OUQI6oIqKoaCJi6GLUk9OUVJPTlH+EmgCx2gEmIKrq4JNgaqqgU1nZ01NTWlpTfzNgaurgU6CqqqCTWhnTk5NaGhN9kEEckEAAAADAET/6wTRBcUAIAArADgAABM0NjcuATU0NjMyFhUUBg8BAT4BNTMUBgcXIycOASMiJgUyNjcBBw4BFRQWAxQWFzc+ATU0JiMiBkSMj1BKvayfvmVmcwFcLC+mTEu+3VtTv2zc+wHXTI5A/o8qYTyQDzc4kDopYFJXWQGGfLRgYptUq7OxgmOLS1X+XkSdXIXcW+NsQEHgSzIyAbofSXw0dJID6Td0R2QnWTdAXXAAAAEAZwQjAP0GGAAFAAATAyMTNTP9OV0BlQWo/nsBdYAAAQCF/ioClQZqAA8AABMQADcXBgIRFRASFwcmABGFATW1Jo3KyY4mtv7MAk8BjwInZXhs/iz+nw7+n/4sdW9mAiQBkQABAAj+KgIYBmoADwAAARAAByc2EhE1EAInNxYAEQIY/su0J4vM0oUntAE1AkX+b/3cZm9rAd0BYg4BXAHfb29m/dn+cgAAAAABABwCYgNVBbAADgAAASU3BQMzAyUXBRMHCwEnAUr+0i4BLgmZCgEpLv7Nxny6tH0D2FuUcAFZ/qFwllz+8F0BIf7mWgAAAAABAE4AkgQ0BLYACwAAASEVIREjESE1IREzAp4Blv5quv5qAZa6Awus/jMBzawBqwABAB3+zAE0ANoACQAAJRQGByc+AT0BMwE0XFJpMC65RmTPR0hJkVWXAAAAAAEAJQIhAg0CtgADAAABITUhAg3+GAHoAiGVAAABAKIAAAFeAMUAAwAAISM1MwFevLzFAAABABL/gwMQBbAAAwAAFyMBM7GfAmCefQYtAAAAAgBy/+sEDAXFAA0AGwAAARACIyICGQEQEjMyEhEnNCYjIgYVERQWMzI2NQQM8dva9PLa2/O5i4qJioyJiokCLP7j/twBJQEcAVcBHAEm/tr+5CjEwMDE/lvEwsDGAAAAAQDXAAACuQWwAAUAACEjEQU1JQK5uf7XAeIE3Ah3ZQABAF0AAAQjBcUAGAAAKQE1AT4BNTQmIyIGFSM0NjMyFhUUBgcBIQQj/FYB3YRagXCckbn+6MbljIP+eQLLgwITkqdacpSakcP+4LV56ZD+VwAAAAABAF7/6wP6BcUAKAAAATMyNjU0JiMiBhUjNDYzMhYVFAYHHgEVFAQjIiQ1MxQWMzI2NTQmKwEBhqeKc36BeY659srO6m5wh27/AM7K/vy6koKFkISQpwMwhHiBgoh0reXTyl2wMCu2dcvf1cF3ioeKi4AAAAIAOQAABFEFsAAKAA8AAAEzFSMRIxEhNQEzASERIwcDhM3NuP1tAofE/X0BywMbAeiV/q0BU2sD8vw4AslGAAABAJr/6wQRBbAAHgAAGwEhFSEDPgE3NhIVFAIjIiY1MxQWMzI2NTQmIyIGB7FUAtX9xzAwclHK4+TlvPKvi3SEjI2AemwaApEDH6n+XCUtAgL+++Tg/vvHzXyDr5+Rs0ZMAAAAAgCH/+sEMwXFABoAJwAAATIWFwcuASMiBh0BPgEzMhIVFAIjIgAZARAAEyIGBxUUFjMyNjU0JgKfTJEyKDRpSqC/QaVjx+Pz0Nj+7wEwqWqRJaqGgIqSBcUiG5EaHvXOIjtB/vfV5f7oAS8BHgEfARsBU/1zVUpzztjMnJa6AAABAE0AAAQiBbAADAAAAQACAwcjNxoBEyE1IQQi/ve+KQ+6Dyvw2PziA9UFGv7B/hv+o5mZAWICFwEIlgADAGb/6wQYBcUAGAAkADAAAAEUBgceARUUBCMiJDU0Njc1LgE1NDYzMhYDNCYjIgYVFBYzMjYDNCYjIgYVFBYzMjYD8H9vgZX+/tba/wCRf2166cbD75Gif4Kdm4aBnimKbnCGh3FvhwQ1dakrLbh+zdHQzn65LAMpqXTEzM38lXuamXyAjY4DI3COiXVzhoYAAAAAAgBU/+sD/QXFABsAKAAAJTI2PQEnDgEjIgI1NAAzMgAZARAAIyImJzceARMyNjc1NCYjIgYVFBYB/5auAzCWXtfxAQLA5gEB/uroT5tCHT9+b3KUIZWSdJqOgNbaLAFJSgED8egBH/7q/uf+nP7g/tkcH5AeGAHfYE2cxcLMpaG+AAD//wCgAAABXQQ6ACYAEP4AAAcAEP//A3X//wBK/swBYQQ6ACcAEAAAA3UABgAOLQAAAQBIAMUDegRJAAkAAAEHFRcFFQE1ARUBQk9PAjj8zgMyApsUBBTpwQF7jwF6wQAAAgCYAZAD2gPNAAMABwAAASE1IREhNSED2vy+A0L8vgNCAy+e/cOeAAEAhgDGA9wESgAJAAATNQEVATUlNzUnhgNW/KoCXFJSA4+7/oaP/oW88hUDFgAAAAIAOgAAA28FxQAZAB0AAAE+ATc+ATU0JiMiBhUjPgEzMhYVFAYHDgEVEyM1MwFnAS1mZlRybmGAugLjtsbUiXg4FgjExAGZk2pddn5db3JlZKnAxbeE0HQ2VF7+Z8sAAAIAYf47BtgFlgAzAEMAAAEGAiMiJicOASMiJjcaATMyFhcHMwMGFjMyNjcSACEgAAMCACEyNjcXDgEjIAATEgAhIAABBhYzMjY3PAE3Ey4BIyIGBscJ2d9LaRY0jmKBhxIY4qhqekwEBjMJPzSAlAkR/sP+pv7E/ogQEgFOAURasUAlRctk/n3+aBITAcYBfAGEAYz78AxDT0RuLgIvGzwigYgB99r+zlROU0/tyAEIATMzNwT9uHJT4rUBhwGj/jj+hf6A/lAqJGgrLgHqAbkBrwIJ/hf985KVNUYQFQwCGg0Q2QAAAAACACcAAAUiBbAABwAKAAABIQMjATMBIwEhAwPY/ZuPvQIyoAIpvf1FAfj6AYT+fAWw+lACGQKyAAMAtgAABKkFsAAPABgAIQAAMxEhMhYVFAYHFR4BFRQGIwERITI2NTQmIyUhPgE1NCYjIbYB0+j9eWODlP7h/qUBW42ZgYn+iQFMc4eXlf7mBbDByGSYJAMbx4jLzwKt/eiFfoOSlQN3b3p1AAEAg//rBMkFxQAbAAABBgAjIgAZARAAMzIEFyMuASMiAhURFBIzMjY3BMkY/u/x/P7QATD89QENGLkZo6Wsx8espqIZAc3c/voBWAEUAQEBEwFa/eimqf73zP79zv73pKkAAAACALYAAATnBbAACQATAAAzESEgABEVEAAhAxEzMhI9ATQmI7YBuwEiAVT+qP7Q8PDo5uLaBbD+pv7kxf7i/qkFGvt7AQXbx9//AAAAAQC2AAAEdQWwAAsAAAEhESEVIREhFSERIQQP/WADBvxBA7X9BAKgAqb975UFsJb+IgAAAAEAtgAABHMFsAAJAAABIREjESEVIREhBA39YrkDvfz8Ap4CiP14BbCW/gQAAQCF/+sE2wXFAB8AACUOASMgABkBEAAhMgQXIy4BIyIGFREUFjMyNjcRITUhBNs0/c/+9/6zATcBAPgBCB+5GqOpr87kuIKiI/62AgO/UIQBSgEPASkBDwFJ7c6HnvnH/tXJ+0IsAVCVAAAAAQC2AAAE/QWwAAsAACEjESERIxEzESERMwT9uf0rubkC1bkChv16BbD9awKVAAAAAQDDAAABfAWwAAMAACEjETMBfLm5BbAAAQA//+sDwAWwAA8AAAEzERQGIyImNTMUFjMyNjUDB7nyx9XzuYqFco4FsPvkyOHS1IyFlIAAAAABALYAAAUcBbAADAAAASMRIxEzETMBMwkBIwIfsLm5nwIR1P3DAmbjApT9bAWw/XkCh/0+/RIAAAEAtgAABCUFsAAFAAAlIRUhETMBbwK2/JG5lZUFsAAAAQC2AAAGTQWwABAAAAkCMxEjERMjASMBIxMRIxEBpAHdAd7uuRMD/ht8/hwDE7kFsPtPBLH6UAJHAmP7VgSo/Z/9uQWwAAAAAQC2AAAE/gWwAAsAACEjASMRIxEzATMRMwT+uf0tA7m5AtMDuQR7+4UFsPuGBHoAAgCC/+sFDQXFAA0AGwAAARAAISAAGQEQACEgABEnNAIjIgIVERQSMzISNQUN/rv+9v7+/sYBOgECAQoBRbnavLTPz7S92QJX/vT+oAFgAQwBAQELAWL+nv71AskBBv76yf79y/76AQXMAAAAAgC2AAAExAWwAAoAEwAAAREjESEyFhUUBiMlITI2NTQmIyEBb7kCJO39/e3+lQFrnJWVnP6VAkr9tgWw68jK6ZWffX6hAAAAAgCC/wwFDQXFABMAIQAAARQCBxcHJQ4BIyAAGQEQACEgABEnNAIjIgIVERQSMzISNQUNfHPuf/7yL18z/v7+xgE6AQIBCgFFudq8tM/PtL3ZAleh/vtW3HP9DhABYAEMAQEBCwFi/p7+9QLJAQb++sn+/cv++gEFzAAAAAIAtQAABOIFrwAaACMAAAERIxEhMhYVFAYHHgEdARQWFxUjLgE9ATQmIyUhMjY1NCYjIQFuuQIK8/d5dXtpHiW/KBaMfP6RAT6vlZKf/q8Cev2GBa/PznKkMiirhIlGaSMYI4NGhXqPlYCFf4cAAAABAFr/6wSKBcUAJQAAATQmJy4BNTQkMzIAFSM0JiMiBhUUFhceARUUBCMiJDUzFBYzMjYD0JbH7P4BE+HxARi5rKSboKnI6u3+5evf/rW5056csAFuaIUxONClrd/+/raEnoVuYn8xO9ins9Loz5GRfgAAAAEAOwAABIoFsAAHAAABIREjESE1IQSK/jW5/jUETwUa+uYFGpYAAAABAJb/6wTXBbAAEQAAAREUBCMiJDURMxEUFjMyNjURBNf+0vv0/ty6vaGpxwWw/CXy+PjyA9v8JauqqqsD2wAAAQAnAAAFAgWwAAkAAAEXMzcBMwEjATMCciEEIQGCyP3jof3jyQFednYEUvpQBbAAAQBIAAAGwgWwABUAAAEXMzcBMwEXMzcTMwEjAScjBwEjATMB0x8DLAERpQETKwMhz7r+rqb+2x0DHf7Xpv6vuQHvysoDwfw/zMwDwfpQA/2RkfwDBbAAAAEAQQAABNAFsAALAAAJATMJASMJASMJATMChgFg3/4vAdzc/pb+l+AB3P4v3gNzAj39Lv0iAkj9uALeAtIAAAABAB4AAATTBbAACAAACQEzAREjEQEzAngBh9T9/rj+BdQCvgLy/FL9/gIPA6EAAAABAGEAAARtBbAACQAAJSEVITUBITUhFQE1Azj79AMU/PkD3pWVjQSNlogAAAEAkv7IAgsGgAAHAAABIxEzFSERIQILv7/+hwF5Ber5dJYHuAAAAAABACj/gwM4BbAAAwAAEzMBIyiwAmCwBbD50wAAAQAJ/sgBgwaAAAcAABMhESE1MxEjCQF6/obBwQaA+EiWBowAAQBAAtkDFAWwAAkAABMjATMBIwMnIwfsrAErfwEqq6sTBBMC2QLX/SkBqlVVAAAAAQAE/2sDmAAAAAMAAAUhNSEDmPxsA5SVlQAAAAEATwS7AeQFxQADAAABIwMzAeSY/eIEuwEKAAACAHL/7APsBE4AHwAqAAAhLgEnDgEjIiY1NDY7ATU0JiMiBhUjNDYzMhYVERQWFyUyNjc1IyIGFRQWAy0KCgI6rGerrfjc0XpxaYG57r+73wwQ/flopSXXgZRdM0IkTGGpmZ6sbmNvY0d9w7iy/fY6ajaLYEbHeVVLVAAAAgCR/+wEJQYYABIAIAAAARQCIyImJwcjETMRFz4BMzISESM0JiMiBgcRHgEzMjY1BCXbyW2cNRKgugMylmnL27mKkWF/Jid/YpGIAfXw/udSUpAGGP2gAUpN/sb+9sDqWk/+JVBaxqkAAAAAAQBh/+wD8gROABsAACUyNjczDgEjIgI9ATQSMzIWFyMuASMiBh0BFBYCQ2eXAbAB/6/u9PTuv+8BsAGOcKGHhoF4XJTVAS/tKuwBMNysaIrfpyqr3AAAAAIAZP/sA/AGGAASACAAABMQEjMyFhc3ETMRIycOASMiAjUzFBYzMjY3ES4BIyIGFWTazGSSNAO5oRA2mGnJ27mHkl56KSh8W5OIAgoBCgE6SEYBAlf56IdOTQEa76rFUkwB9khS6sAAAgBi/+wD6QROABUAHQAABSIAPQE0ADMyEh0BIR4BMzI2NxcOAQMiBgchNTQmAk7k/vgBD7/c3f0zBJ2RZZM7STu5pmmRFAIOgBQBJ/Qt7AEu/v7geabMODN7OksDzKmHGnmdAAEAQgAAAs4GLQAXAAAzESM1MzU0NjMyFhcHLgEjIgYdATMVIxHsqqqvoyJDKxcTMh1aVebmA62Ni6+5CwqRBQZoZYuN/FMAAAIAZv5MA/cETgAeACwAABMQEjMyFhc3MxEUBiMiJic3HgEzMjY9AScOASMiAjUzFBYzMjY3ES4BIyIGFWbezWqYNhKc8uRUs00vQpVMk4wDNJRkyt+5ipNeeyknfF2TjAIKAQoBOlJRj/vU1uwsKoohKZ2PaQFGRgEa76nGU04B8EpT678AAAABAJEAAAP6BhgAFAAAARc+ATMyFhURIxE0JiMiBgcRIxEzAUsDN6Jnsbu5dHdXiCy6ugOnAVBYzN39WwKnjYBSSPzmBhgAAAACAKEAAAFaBhgAAwAHAAAhIxEzESM1MwFaubm5uQQ6ARjGAAAC/7b+SwFnBhgADwATAAABERQGIyImJzceATMyNjUREyM1MwFnp5sgMh0ODzURRk+zubkEOvttqrIJCZYFCFpnBJMBHMIAAAABAJIAAAQUBhgADAAAASMRIxEzETMBMwkBIwHNgbq6fgE72/6GAa7bAfb+CgYY/HUBrf4T/bMAAAEAoQAAAVoGGAADAAAhIxEzAVq5uQYYAAEAkAAABnIETgAkAAABHwE+ATMyFhc+ATMyFhURIxE0JiMOAQcVESMRNCYjIgYHESMRATcNAzShcHGaJzSndam7um9xb4ALunJwYXcgugQ6kAFPVmVqYW7c6P12AoulhAGSbwH9TwKNnYpQSvzmBDoAAAAAAQCRAAAD+AROABQAAAEfAT4BMzIWFREjETQmIyIGBxEjEQE4DQM1o2uxvLpxeVuFKboEOqIBV2DI2/1VAqeVeFZN/O8EOgAAAgBg/+wEJwROAA0AGwAAEzQAMzIAHQEUACMiADUzFBYzMjY9ATQmIyIGFWABAOLkAQH/AOPk/wC6lJaUlpeVlJQCKPUBMf7P9Rj2/tIBLvax3t+wGK7i4q4AAAACAJH+YAQkBE4AEgAgAAABFAIjIiYnBxEjETMXPgEzMhIRIzQmIyIGBxEeATMyNjUEJNvJZ5Y1A7qfEjaaa8zbupCTW3smKHldko8B9fD+50NDAf3vBdqKTlD+x/71v+tQRv32R0zLqQAAAAACAGT+YAPmBE4AEgAgAAATEBIzMhYXNzMRIxEnDgEjIgI1MxQWMzI2NxEuASMiBhVk2sxkkzYPoLkDNI5gydu5h5JYdikpd1WTiAIKAQoBOklIffomAgoBQD8BGu+qykpGAhpCS+3BAAEAkQAAArEETgAQAAABJyIGBxEjETMfAT4BMzIWFwKYbFVuHrqmEgMtiFwYLw0DkwZOSfz+BDqdAVReBwQAAAABAGb/7APCBE4AJQAAATQmJy4BNTQ2MzIWFSM0JiMiBhUUFhceARUUBiMiJjUzHgEzMjYDCWSRyMHatsDcuXppbmlaks/D47/R6bkGlGdweQEeRFUfK5CBhra/kkpxXUNDSR8tlIGSrc2TbV5VAAAAAQAd/+wCTgVBABcAAAERMxUjERQWMzI2NxcOASMiJjURIzUzEQFy0NA2LxgxFRkaXS5xgJubBUH++Y39alA/BwaDERWNngKWjQEHAAEAjf/sA/YEOgAUAAAlJw4BIyImNREzERQWMzI2NxEzESMDQwMynm20wrpocXCJJLmmngFXXN30An39gbKDV1MDCvvGAAAAAAEALgAAA98EOgAJAAABFzM3ATMBIwEzAfIWAxcBAL3+cI3+bL0BOl1dAwD7xgQ6AAEAMAAABdgEOgAVAAABHwE3EzMTFzM3EzMBIwMnIwcDIwEzAaAbAyHaltojAyKvuP7GltYvAy3Sl/7GuQGGlgGXArT9TKSkArT7xgKbwcH9ZQQ6AAEALgAAA88EOgALAAABEzMJASMLASMJATMB/PDY/p8BbNX6+tgBbf6e1gKnAZP96f3dAZ7+YgIjAhcAAAEAG/5LA+QEOgAVAAABFzMBMwEOASMiJic3JhYzMjY/AQEzAdkmAwETz/42KZSEGEYUEwNOC0M+LjH+a88BhpADRPsfb58LBZUBBktrdQQkAAAAAAEAXgAAA7gEOgAJAAAlIRUhNQEhNSEVAT4CevymAlH9twMulZWFAx6XgQAAAQBA/pACngY9AB4AAAEuAT0BNCYjNTI2PQE0NjcXDgEdARQGBx4BHQEUFhcCeMSgZm5uZp/FJnNeUldXUl5z/pA4667Pc3yPenTQrus4cSWziNBrni0unmrPh7MlAAAAAQCv/vIBRAWwAAMAAAEjETMBRJWV/vIGvgAAAAEAE/6QAnIGPQAeAAAXPgE9ATQ2Ny4BPQE0Jic3HgEdARQWMxUiBh0BFAYHE3JgV19fV19yJsSgZW9vZaDE/iWzh89unCsqnm/QiLMlcTjqr9B0eo98c8+u6zgAAQCCAZME7wMhABkAAAEUBiMiJicuASMiBhUnNDYzMhYXHgEzMjY1BO+qg1uOWjxhNEZfh6eFWpJXPGA1RWEC5IvGQUsyMGpPEoq9REg1LXJRAAAAAgCQ/ooBTQQ6AAMABwAAASMRMxMjNTMBS7m5Ar29/ooD0gESzAAAAAEAbv8LA/8FJgAhAAAlMjY3Mw4BBxUjNSYCPQE0Ejc1MxUeARcjLgEjIgYdARQWAlBnlwGwAcqWurq8vLq6oMABsAGOcKGHhoF4XILIGOjsIwEfzyrNAR8l494Y0phoit+nKqvcAAAAAQBGAAAEUQXFACEAAAEXFAYHIQchNTM+ATUnIzUzAzQ2MzIWFSM0JiMiBhUTIRUBqQYhIALjAfw2CjQyBqqkCtu+ytW6fWhpdgoBpwJqmF2jPZWVDcVrmJUBEdDlz7R8cZSL/u+VAAACAGn/5QVbBPEAIwAvAAAlDgEjIiYnByc3LgE1NDY3JzcXPgEzMhYXNxcHHgEVFAYHFwcBFBIzMhI1NAIjIgIET0+5aGm3ToaCjDQ1OTiUgpNMsWRksU6VhJg2OTUxj4T8YPS0svT0srT0cEFDQkCIhY5Os2ZpuVGXhpY7PT47mIebULdoZLJOkYYCe8P++AEIw8EBB/75AAEAIAAABKsFsAAWAAAJATMBIRUhFSEVIREjESE1ITUhNSEBMwJmAXHU/loBP/57AYX+e7n+gwF9/oMBPv5Z1QMNAqP9L3irdv66AUZ2q3gC0QAAAAIAk/7yAU0FsAADAAcAABMRMxkBIxEzk7q6uv7yAxb86gPIAvYAAAACAFr+EQR4BcUAMQBDAAABFAYHHgEVFAQjIiQ1NxQWMzI2NTQmJy4BNTQ2Ny4BNTQkMzIEFSM0JiMiBhUUFhceASUuAScOARUUFhceARc+ATU0JgR4YFtJRv785OH+17rDjY+fjdL13l5aR0QBBuPsAQC5oZKZloPa+dv94jROIlBMh9sxTCNPVJIBr2CJKTSFZa7Ay+QClYZ3X19jQEGztF2LKjOHZKjG3dJ7nndfZ2E8Ra9UDRgOE2NJaGU9DhgMFGNIXmoAAAIAqQTsA1IFsAADAAcAAAEjNTMFIzUzA1LT0/4r1NQE7MTExAAAAAADAFv/6wXmBcQAGwAnADMAAAEUBiMiJj0BNDYzMhYVIzQmIyIGHQEUFjMyNjUlEAAzMgAREAAjIgADEAAhIAAREAAhIAAEX62eori4op6ukltfY2dnY19a/QEBVv37AVf+qfv9/qpzAZgBLgEsAZn+Z/7U/tL+aAJUnpzRsnew052cY1eNdnh5jFZmhf7w/pcBaQEQAQ4BZ/6Z/vIBQQGq/lb+v/6+/lQBqwAAAgB6ArQDDwXFAB8AKgAAAS4BJw4BIyImNTQ2OwE1NCYjIgYVJzQ2MzIWFREUFhclMjY3NSMiBhUUFgJqCAoDInBQeYCko5E9P0hMoaeOh5gMDv6LN24TkE9WPALCFTAaMTx4bG92NUNFNzUOaIGMiP7GM1creTsmckIwMDEAAP//AGYAdwNkA5EAJgFy+t0ABwFyAUT/3QABAH8BeAO+Ax8ABQAAASMRITUhA766/XsDPwF4AQifAAQAWv/rBeUFxAALABcAMgA7AAATEAAhIAAREAAhIAATEAAzMgAREAAjIgABESMRITIWFRQGBx4BHQEUFhcVIy4BPQE0JiMnMz4BNTQmKwFaAZgBLgEsAZn+Z/7U/tL+aHMBVv38AVb+qvz9/qoBwI0BFJqoQkBDOgcKkQoEQ1CjnEVbTmeHAtkBQQGq/lb+v/6+/lQBqwFD/vD+lwFpARABDgFn/pn+qf6sA1KAgD9dIBtoTDgqQBUQFk8rNktDfgE/O0w7AAAAAQB4BSMDQgWwAAMAAAEhNSEDQv02AsoFI40AAAIAggPBAnwFxQALABcAABM0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBoKUa2mSkmlrlH1KODdJSTc3SwTBbJiYbG2Tk205SUg6OktMAAACAGEACQP1BPMACwAPAAABIRUhESMRITUhETMBITUhAooBa/6Vp/5+AYKnAUz8vQNDA1aW/mEBn5YBnfsWlQAAAQBxApsCxgXHABgAAAEhNQE+ATU0JiMiBhUjNDYzMhYVFAYPASECxv20AS9ILDo/SEqhpI+IlFd1qAF6Apt+AQg+Siw0P0E1aYx9dlBtbJIAAAAAAQBpAo8C4AXGACgAAAEyNjU0JiMiBhUjNDYzMhYVFAYHHgEVFAYjIiY1MxQWMzI2NTQmKwE1AadIQUlKO0qip4CSo0U/SEqwk4C0o01ETVRKTYMEbzo2LjoyKmV2dXA4WhoYXUZxenR1MTo7M0E5egAAAAABAIEEvAIeBcYAAwAAATMBIwE94f7wjQXG/vYAAQCa/mAD7gQ6ABYAAAERFBYzMjY3ETMRIy8BDgEjIiYnESMRAVNxa2p7ILqmCgMrgVhMbiq5BDr9kcOITUwDIfvGbgFBQyIo/isF2gAAAAABAEIAAAM/BbAACgAAIREjIiY1NBIzIREChVfu/v/tARECCP/V0wEB+lAAAAEAogJwAWEDQQADAAABIzUzAWG/vwJw0QAAAAABAHT+TQGqAAAADwAAIQceARUUBiMnMjY1NCYnNwEdDENWm5QHSlxIWiA1C1BSYXBqMTMyJgeGAAEAXgKZAYQFxQAFAAABIxEHNSUBhKSCASYCmQKUAYIXAAAAAAIAegKzAycFxQANABsAABM0NjMyFh0BFAYjIiY1MxQWMzI2PQE0JiMiBhV6t5+gt7afoLijWltYWltZWVoEdpa5uJd1mLa3l1tra1t1WGxsWAAA//8AbwCZA3gDtAAmAXMWAAAHAXMBagAA//8AtAAABdwFxAAnAckAVgKYACcBdAEVAAgABwGXArgAAAAA//8AtAAABe4FxAAnAXQBIgAIACcByQBWApgABwHKAygAAAAA//8AewAABp0FxwAnAXQB0QAIACcBlwN5AAAABwHLABICmwAAAAIAcf52A6YEOwAZAB0AAAEOAQcOARUUFjMyNjczDgEjIiY1NDY3PgE1AzMVIwJ6Ai1mZ1Nxb2CBAbkD47XH04h5NxcIxMQCoZRpXXd9XG9yZWSpwMW3gtB1NVRfAZrMAAL/8gAAB1cFsAAPABMAACkBAyEDIwEhFSETIRUhEyEBIQMjB1f8jQ/9zM3iA3ADt/1NFAJO/bgXAsD6rQHKHwMBYv6eBbCW/iaV/eoBeQLcAAAAAAEAWQDiA90EdgALAAATCQE3CQEXCQEHCQFZAUr+uHcBSQFJd/63AUt3/rX+tQFcAVEBT3r+sQFPev6x/q96AVH+rwAAAwBz/6ME/gXsABkAJAAvAAABEAAhIiYnByM3LgE1ERAAITIWFzczBx4BFQEUFhcBLgEjIgIVITQmJwEeATMyEjUE/v67/vZWlUJdj4xWWQE6AQJip0lUj4ZOUvwuKSoCLDR9S7TPAxkkIv3XLmtAvdkCV/70/qAqKpzqV+iLAQEBCwFiNTKO4Ffcgf7/WJg9A6UsLv76yU2JO/xhIyMBBcwAAAACAKYAAARdBbAADAAVAAABESEyFhUUBiMhESMRExEhMjY1NCYjAWABFer+/ur+67q6ARWZlZWZBbD+2ujAwef+xgWw/kX92px1dp8AAQCL/+wEagYPACcAACEjETQ2MzIWFRQGFRQAFRQGIyImJzceATMyNjU0ADU0NjU0JiMiBhUBRLniuqHEgAFez7JTsSgrKoNAcmr+oopnRW5/BDrh9Kiod9g8VP7ojqmlKx2ZHS9eUlcBGpRT2U5fa6ScAAADAD3/6wZ8BE4ALAA3AD8AAAUiJicOASMiJjU0NjsBNTQmIyIGFSc0NjMyFhc+ATMyFh0BIR4BMzI2NxcOASUyNjc1IyIGFRQWASIGByE1NCYE7ovKQznao6224d/qaWdvfbjiwnWsMkGuadji/S4EnaNqhkxAObX8SFCnLOiAiWcDZXeNEAIVexVhXVJsq5miqlVweG5SEpC0UlJQVP/ndarJODOFL0yVWDrfcVVOXQM4q40ffpsAAgBM/+sELQXtACAAMAAAARYSHQEUACMiADU0ADMyFhc3LgEnBSc3LgEnNx4BFzcXAzQmNS4BIyIGFRQWMzI2NQNTanD+59rd/u8BDtpXlzkDF1Y+/utJ+iZPKzlMhj3sSbgBJKB7jKOnkoyqBQd8/rvOYfr+zgET0+oBFkA3AWqmQZ5jjxgnEJ4XRTGHY/z2CCIJPVHPm4jJ47QAAwBHALcELQSvAAMABwALAAABITUhJSM1MxEjNTMELfwaA+b+bb29vb0CWrTax/wIxwAAAAMAYP95BCcEuQAZACQALwAAEzQAMzIWFzczBx4BHQEUACMiJicHIzcuATUzFBYXAS4BIyIGFSE0JicBHgEzMjY1YAEA4jpmMEp7aFpe/wDjNVsrSXtkZGW6LC8BVx9EJ5SUAlQnJ/6uGjkjlJYCKPUBMRcVl9JL5JAY9v7SERGVy0nqmWCbNwK3ERLirlaROP1SDQvfsAAAAgCa/mAELQYYABMAIQAAARQCIyImJwcRIxEzERc+ATMyEhEjNCYjIgYHER4BMzI2NQQt28lnljUDurkDNJZmzNu6kJNbeicoeV2SjwH18P7nQ0MB/e8HuP2oAUZJ/sf+9b/rUEb99kdMy6kAAgAeAAAFiQWwABMAFwAAATMVIxEjESERIxEjNTMRMxEhETMBITUhBPeSkrn9K7mSkrkC1bn8cgLV/SsEjY38AAKG/XoEAI0BI/7dASP9a+UAAAAAAQCbAAABVQQ6AAMAACEjETMBVbq6BDoAAQCaAAAEPwQ6AAwAAAEjESMRMxEzATMJASMBvmq6ulsBjd/+NwHt6QHP/jEEOv41Acv9+P3OAAABACYAAAQVBbAADQAAASUVBREhFSERBzU3ETMBXwEU/uwCtvyRgIC5A0dYn1j97ZUCbSifKAKkAAEAIwAAAgsGGAALAAABNxUHESMRBzU3ETMBcZqauZWVuQNnO6A7/TkCgDmgOQL4AAEApP5LBO0FsAAYAAABERQGIyImJzceATMyNj0BASMRIxEzATMRBO2omyAzHQ4OQhJCSP0tA7q6AtMDBbD596qyCQmRBQhnX1kEb/uRBbD7kQRvAAEAkf5LA/AETgAgAAABHwE+ATMyFhURFAYjIiYnNx4BMzI2NRE0JiMiBgcRIxEBNw0DNZ5psbynmyA1Hg4OQxRCR3N5XH0nugQ6lQFRWcnc/P6qsgkJmgUHX10C/pZ5RkH80wQ6AAAAAgBp/+sHOAXFABcAJQAAKQEOASMiABkBEAAzMhYXIRUhESEVIREhBTI2NxEuASMiBhURFBYHOPyCXoFF/f7QAS79R45RA3T9BAKg/WADBvteOHE6OnE6scHDCgsBRgEPATABDgFHDAmW/iKW/e8VCAkEjQgK49v+ztzkAAMAYf/rBwAETgAhAC8ANwAAEzQSMzIWFz4BMzISHQEhHgEzMjY3Fw4BIyImJw4BIyIANTMUFjMyNj0BNCYjIgYVASIGByE1NCZh/+OHyEBCwnHc3f0yBJ2QZ5U4Sjy6iIfMQEHFheT/ALmVlpSVlpWVlAQtapEUAg6AAij1ATFxaGdy/v3feabNOTN7O0ttZ2dtAS/2sd/fsRiv4eKuAZCphxp5nQAAAAEAoAAAAoIGLQAPAAAzETQ2MzIWFwcuASMiBhURoLCjIkMqFxUsGltcBMWwuAsKjAUGbWX7OwAAAf/k/ksCvAYtACMAAAEjERQGIyImJzceATMyNjURIzUzNTQ2MzIWFwcuASMiBh0BMwJgy6ebIDMcDg5AE0FHq6uvoyJDKhYUMhxaVcsDrfv6qrIJCZEFCGdfBAaNi6+5CwqRBQZoZYsAAAAAAgBx/+sFnQY2ABcAJQAAARAAISAAGQEQACEyFhc+ATUzFAYHHgEVJzQCIyICFREUEjMyEjUE/P67/vb+/v7GAToBAnrKUGFUp32ALS+52ry0z8+0vdkCV/70/qABYAEMAQEBCwFiUUwKhn6jwyBMrGACyQEG/vrJ/v3L/voBBcwAAAAAAgBg/+wEugSwABcAJQAAEzQAMzIWFz4BNTMUBgceAR0BFAAjIgA1MxQWMzI2PQE0JiMiBhVgAQDia6hBVziVZHUjI/8A4+T/ALqUlpSWl5WUlAIo9QExR0QIcnOUqRpCmFcY9v7SAS72sd7fsBiu4uKuAAABAJb/6wYmBg0AGQAAARU+ATUzFAYHERQEIyIkNREzERQWMzI2NREE115Kp5+w/tL79P7cur2hqccFsM0WkITG1xb9e/L4+PID2/wlq6qqqwPbAAABAI3/7AUQBJEAHAAAARQGBxEjLwEOASMiJjURMxEUFjMyNjcRMxU+ATUFEHqgpg0DMp5ttMK6aHFwiSS5YDUEkaWbCfy4ngFXXN30An39gbKDV1MDCooJYnYAAAH/tP5LAWUEOgAPAAABERQGIyImJzceATMyNjURAWWnmx8yHg4OQBNBSAQ6+22qsgkJkQUIaF4EkwAAAAIAYv/sA+kETwAVAB0AAAEyAB0BFAAnIgI9ASEuASMiBgcnPgETMjY3IRUUFgH/4gEI/vG/3dwCzQWdjmmUOEk7uqVpkBX9838ET/7X8y3t/tMBAQHgeaXOOjN8Okz8M6eIGXqcAAAAAQCpBOQDBgXpAAgAAAEVIycHIzU3MwMGmZaVmfR0BPwYlpYZ7AAAAAEAjATkAvcF6QAIAAABNzMVByMnNTMBwJWi/nP6ngVTlhLz8RQAAAABAIEEpQLYBbAADQAAARQGIyImNTMUFjMyNjUC2KCLjKCXRk9NSAWwepGRekRSU0MAAAAAAQCgBOoBbwWwAAMAAAEjNTMBb8/PBOrGAAAAAAIAiwRfAhwF4AALABcAABM0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBot0VlRzclVXc2M8Kys5OSsrPAUeVG5uVFZpaVYsOzotLTw8AAABADL+UAGSADcAEwAAIQ4BFRQWMzI2NxcOASMiJjU0NjcBflNYIysdLxgNIEo2V2mAhz1lPCQmEAx4ExliW1aYPAAAAAEAggTiAzQF8QATAAABFAYjIiYjIgYVJzQ2MzIWMzI2NQM0dFtJlzUsOmhyXDukNis8BdJff19BMBpehWBBMQACAGgE5ANIBe4AAwAHAAABMwEjAzMDIwJn4f7OqUfO9pYF7v72AQr+9gAAAAIAtv6HAen/qwALABcAABc0NjMyFhUUBiMiJjcUFjMyNjU0JiMiBrZZQ0BXV0BDWVcnHhsmJhseJ+lBU1NBQFBQQBslJBweJiYAAAAB/NoEuv4HBhMAAwAAASMDM/4HfbCxBLoBWQAAAf13BLv+pAYUAAMAAAEzAyP99625dAYU/qcA///8kwTi/0UF8QAHAKD8EQAAAAAAAf1eBNn+lAZzAA8AAAEnPgE1NCYjNzIWFRQGDwH9dAFQQVpMB5SbVkUBBNmXBR8nKSZpZFdISAlGAAAAAvwnBOT/BwXuAAMABwAAASMBMwEjAzP+Aqn+zuEB/5b2zgTkAQr+9gEKAAAB/UP+sf4S/3YAAwAAASM1M/4Sz8/+scUAAAAAAQDDBPgBygZ4AAMAAAEzAyMBAsitWgZ4/oAAAAMAoQTtA1wGiAADAAcACwAAASM1MwUjNTM3MwMjA1zAwP4GwcF/036FBO3Dw8PY/vgAAP//AKICcAFhA0EABgB2AAAAAQC1AAAEMAWwAAUAAAEhESMRIQQw/T65A3sFGvrmBbAAAAAAAgAgAAAFbQWwAAMABgAAATMBITchAQKJoQJD+rP7A1v+YQWw+lCVBDcAAAADAHP/6wT+BcUAAwARAB8AAAEhNSEFEAAhIAAZARAAISAAESc0AiMiAhURFBIzMhI1A8D9/AIEAT7+u/72/v7+xgE6AQIBCgFFudq8tM/PtL3ZApSW0/70/qABYAEMAQEBCwFi/p7+9QLJAQb++sn+/cv++gEFzAABADQAAAUCBbAABwAAASMBIwEzASMCnQT+Wb4CFqICFr4EqPtYBbD6UAAAAAMAegAABCAFsAADAAcACwAANyEVIRMhFSEDIRUhegOm/FpVAvP9DVMDlvxqlZUDPJYDCpYAAAAAAQC2AAAE/wWwAAcAACEjESERIxEhBP+5/Sm5BEkFGvrmBbAAAQBFAAAERAWwAAwAAAkBIRUhNQkBNSEVIQEC7v46Axz8AQHl/hsDzf0XAcUCzv3Ilo4CTQJHjpb9zQAAAwBOAAAFbAWwABUAHgAnAAABMzIAFRQAKwEVIzUjIgA1NAA7ATUzAyIGFRQWOwERMxEzMjY1NCYjAzoF9AE5/sbzBboH9P7JATf0B7rBtL++tQe6B7LAwLIE9v7T9PX+0bGxAS319AEvuv6x1Lq70gMb/OXUu7nTAAAAAAEAXQAABRgFsAAXAAABPgE1ETMRFAAHESMRJgA1ETMRFBYXETMDD52zuf7n8Lrp/vG4qpa6AgEX1LICEv3u+v7dF/6WAWoYASL6AhL97rHTGQOvAAEAcgAABM0FxQAjAAAlNhIRNTQmIyIGHQEQEhcVITUzJgI9ARAAMzIAERUUAgczFSEC4ZCfw7CxwaOT/hXwc4EBLv38ATGBcvb+FJsbARwBAXbu+Pjudv7//uMam5VjAS+sdAEhAV3+o/7fdKz+0WOVAAAAAgBk/+sEdwROABwAKgAAAREUFjMyNjcXDgEjIiYnDgEjIgI9ARASMzIWFzcBFBYzMjY3ES4BIyIGFQPuKiYJEgcXHTkkSlsUNppsydvazGiYNhH9zIeSXXkpKXlbk4gEOvzsV0EDA4gTDkxYUlIBG+8VAQoBOlFPjP27qstgWgHBWmPtwQAAAAIAoP5/BE0FxAAUACoAAAEyFhUUBgceARUUBiMiJicRIxE0JBMyNjU0JiMiBhURHgEzMjY1NCYrATUCXcXnYll7hPjOVps8ugEDtoF2f3Rxki2QXYmXiHiPBcTXsV2XLyzChNTnLjH+NAWxqur9lHpuYoyPb/zENzydhXWrlQAAAQAu/mAD3wQ6AAsAAAEzAREjEQEzARczNwMivf6Fuv6EvQEHFgMXBDr7//4nAeAD+v0AXV0AAAACAGD/7AQnBhwAIQAvAAATNDYzMhYXBy4BIyIGFRQWFxYSHQEUACMiAD0BNDY/AS4BExQWMzI2PQE0JiciBhXdxrRNm1ApPYxKWGNihdjQ/wDi5f8Au4wEZWk+lJaTlaODlZcE9oqcLSiAGCNIQDNdLEv+7s4X7f7dASPtF7D4Igsni/1iqNTUqBeH3BrXpgABAGP/7QPsBEwAKQAAASIGFRQWMzI2NTMUBCMiJjU0Njc1LgE1NDYzMhYVIzQmIyIGFRQWOwEVAhuBfIx9eJS5/va7zfdlZFdf5M26+bmPa3x7cHvNAeBVW01kcFCpqamaXn0gAyN3S5mgrZJKYmBGTVaQAAEAbf6BA8MFsAAgAAABFQEOARUUFh8BHgEVDgEHJz4BNTQmLwEuATU0EjcBITUDw/6igm5HWYGXbAJvQGIzL0dSWrKHhZIBGf2BBbB2/lKa4JFkYRMmLENtSqg0UzpRLCQyFhcvn6B6ATisAUCWAAABAJH+YQPwBE4AFAAAAR8BPgEzMhYVESMRNCYjIgYHESMRATcNAzWeabS5uXR4XH0nugQ6lQFRWcDl+7gERJd8SEL80gQ6AAADAHr/6wQUBcUADQAWAB8AAAEQAiMiAhkBEBIzMhIRBSE1NCYjIgYVASEVFBYzMjY1BBTx29r08trb8/0fAiiLiomKAij92IyJiokCLP7j/twBJQEcAVcBHAEm/tr+5GOLxMDAxP7ghcTCwMYAAAAAAQDD/+sCawQ5AA8AAAERFBYzMjY3Fw4BIyImNREBfDcyGS4WKS1UNHt4BDn81E85DQyAHhWLoQMiAAAAAQAl//AEOwXuACEAADMjAScuASMiBiMnPgEzMhYXAR4BMzoBNxcOASMiJicDIwfzzgGKYBg0LQocCQERRhplXh0BsxQtJA0SBwYOKhZiZi/vAyAEBes6LgKMBAhQWPuoNSsClAQIT38CZ3wAAQBl/ncDqQXDADEAAAEuASMiBhUUFjsBFSMiBhUUFh8BHgEVDgEHJz4BNTQmLwEuATU0Nj8BLgE1NCQzMhYXA3I/azeal5qrjY3CxJ59a5B0AW9AYjkoRVY35N2hlQF2gAED50SIMQUKERNrUmpylp2mgJUcFyJLbUmkNlNCQTYrKxINNMDUlsYuAymWYaSyFhEAAAEAT//rBM4EOgAXAAABIxEUFjMyNjcXDgEjIiY1ESERIxEjNSEEXX43MhkuFiktVDR7eP5luoIEDgOk/WlPOQ0MgB4Vi6ECjfxcA6SWAAAAAgCR/mAEHwROABEAHwAAARQCIyImJxEjETMnNBIzMhIRIzQmIyIGFREeATMyNjUEH9fIZpc4ugEB+8Tl6rmFkYOCKHldkYwB9fD+5z0//fgD4gL7AQ/+yf7zwuzlkf7SR0zLqQAAAAABAGX+igPhBE4AIQAAATIWFSM0JiMiBh0BFBYXHgEVDgEHJz4BNTQmJy4BPQE0EgI9vuavfneQj661m3oCbj9iOChDWfTw+gROzrpshuWhKo23MCtObkinNFNBQTYtKhQ0/tYq6AE0AAIAYP/sBHkEOgARACAAAAEhBx4BHQEUACMiAD0BNAAzIQEUFjMyNj0BNCYrAQ4BFQR5/usBX2X+/N/k/wABAOICN/yhlJaUlpeVAZSTA6MDSNCFF9j+2AEu9hjsASb91rHe37AYpdYB1aUAAAEAUf/rA9kEOgATAAABIREUFjMyNjcXDgEjIiY1ESE1IQPZ/o03MhkuFiktVDR7eP6kA4gDpv1nTzkNDIAeFYuhAo+UAAAAAAEAj//rA/YEOgAVAAABERQWMzISNS4BJzMeARUUAiMiJjURAUlqX42eA0A4wzM+8OvBywQ6/W+djAEDroH8jG79nv3+t9fpAo8AAAACAFf+IgVMBDoAGQAjAAAFJAI1NBI3Fw4BBxQWFxE0NjMyABUUAAURIxM+ATUuASMiBhUCbP7p/n+BZVdQBKS3iHPMARn+9/7iubm9sQScjCAiERkBO/CsAQNYg0vIcaLwGwLSaHr+z+nn/s0X/jMCZBnnmqHiKRwAAAAAAQBf/ikFQwQ6ABsAAAERPgE1LgEnMx4BFRQABREjESYAGQEzERQWFxEDHL+vA0I6wjVB/vv+3rn8/vi6rZ0EOfxNGvOlgPmJbfmc9v7CFv47AccZASgBIwHm/hjZ2hgDsgAAAAEAev/rBhkEOgApAAABDgEHFBYzMjY1ETMRFBYzMjY1LgEnMx4BFRACIyImJyMOASMiAhE0NjcBxENLA2h0Z3a7dWhzaQRLQsM9SrzPeaIoAymieNC7ST4EOon/g8LtobYBK/7VtqHsw4P/iW/9n/7+/r51dXV1AUIBAp//bQAAAgB0/+sEqQXFABkAJAAAJTI2NyYkPQE0NjMyFhUREAAjIgAZATcRFBYTFBYXETQmIyIGFQKFrL4B3v76uJeesP7X+/D+37q24puPSktGT4br2An2xD6wy8e0/gL+5f66AVQBDQKYAv1mzfkDhH2hCAFmcW5ucQAAAf/nAAAEWQW7ACMAAAE+ATMyFhcHLgEjIgYHAREjEQEuASMiBgcnPgEzMhYXExczNwLsNHhTIjIaFwYXDyQ5FP7XuP7WFTkjEBYFFxgxI1N3NrQXAxcE139lCg6SAwUkLf18/bwCRAKELSQFA5IOCmV//mhUVAAAAgBK/+sGGwQ6ABcALQAAASMeARUQAiMiJicjDgEjIgIRNDY3IzUhAS4BJyEOAQcUFjMyNj0BMxUUFjMyNgYbiR8irLt5oicEKKF4vKshIHUF0f7+Aygk/LwlKAJYYGd1u3RpXlgDo1W1av7+/r52dXV2AUIBAmq1VZf99V23YGK2XMLtobb8/Lah7AABACv/9QWwBbAAGwAAASERPgEzMgQVFAYjJzI2NS4BIyIGBxEjESE1IQSV/fNSmTn4AQz49QKojgKkpUKaSLr+XQRqBRr+LBce7N/Z4o+Zk5aWGhf9VQUalgAAAAEAh//sBM0FxgAfAAABBgAjIgAZARAAMzIEFyMuASMiAh0BIRUhFRQSMzI2NwTNGP7v8fz+0AEw/PUBDRi5GaOlrMcCO/3Fx6ymohkBztz++gFYARQBAQETAVr96Kap/vfMMJU+zv73pKkAAAIAMgAACEUFsAAWAB8AAAERITIWFRQGIyERIQMKASsBNTMyEhsBAREhMjY1NCYjBPQBaOz9/ez93v3/AwTO/zMonIMEBANzAWialpaaBbD9xfLJyfEFGv3r/mP+mJUBFwFZAqv9MP21qH98qAAAAAACALUAAAhPBbAAEgAbAAABIREzESEyFhUUBiMhESERIxEzAREhMjY1NCYjAW4C17kBaO38/ez93/0pubkDkAFonJWVnAM3Ann9lt/AwOcCov1eBbD9Af3ulXV0lAAAAAABAEAAAAXWBbAAFwAAASERPgEzMhYVESMRNCYjIgYHESMRITUhBKv961CeavT0uY6hXKRYuf5jBGsFGv5DFRXP8f45AceqgBYV/ToFGpYAAAEAtf6aBP4FsAALAAATMxEhETMRIREjESG1uQLXuf4/uf4xBbD65QUb+lD+mgFmAAIApgAABLEFsAAMABUAAAEhESEyFhUUBiMhESEBESEyNjU0JiMEIf0+AWju/P3t/d8De/0+AWiclJScBRr+PuHHyOgFsP0T/dKffnmYAAAAAgA0/poFyQWwAA4AFQAAJTMRIxEhESMRMzYSGwEhAQYCByERIQUIwbn73bl5T4MIIANh/ToJaFQC0v4Jlf4GAWX+mgH7WgFOAS0CRv269/6WdASFAAAAAAEAGwAABygFsAAVAAABIxEjESMBIwkBMwEzETMRMwEzCQEjBJ2buaL+XOgB7v472QGGprmfAYbZ/joB7ucCn/1hAp/9YQMAArD9hAJ8/YQCfP1R/P8AAAABAFH/6wRnBcUAKAAAATI2NTQmIyIGFSM0JDMyBBUUBgceARUUBCMiJDUzFBYzMjY1NCYrATUCXqSWoqWErrkBGNPyAQ58coGD/t3z1f7VubOUprenqaUDMYN3dJCObrja08topDArqoHM3tTVd52VfIqAlgAAAAABALYAAAT+BbAACwAAATMRIxEjASMRMxEzBEW5uQP9Lbm5AwWw+lAEb/uRBbD7kgABADAAAAT0BbAADwAAAREjESEDCgErATUzMhIbAQT0uv3xEQ677jMojHEMFgWw+lAFGv3r/l3+npUBEQFfAqsAAQBR/+sEyAWwABQAAAEXATMBDgEjIiYnNx4BMzI2PwEBMwJOSwFY1/38PIiaGUEKBgpAEktCKCr+DtAC+8MDePtAhIEGA5ACAkpSVgQ+AAADAFP/xAXjBewAFQAeACcAAAEzIAAREAAhIxUjNSMgABEQACEzNTMDIgYVFBY7AREzETMyNjU0JiMDeBsBAgFO/rL+/hu5Hf79/rQBTAEDHbnWxtHRxh25HcTS0sQFHv69/vv++f67xsYBQwEHAQUBRc7+nenMzucDavyW6c7L6AAAAAABALT+oQWSBbAACwAAEzMRIREzETMDIxEhtLkC17mVEqX72QWw+uUFG/rp/ggBXwABAJcAAATEBbAAEwAAAREjEQ4BIyImNREzERQWMzI2NxEExLlhsHv187qMomm8ZwWw+lACYR0azvIBxv46q38cHAK4AAEAtAAABtIFsAALAAABESERMxEhETMRIREBbgH6uQH4ufniBbD65QUb+uUFG/pQBbAAAAABALT+oQdrBbAADwAAAREhETMRIREzETMDIxEhEQFuAfq5Afi5mRKm+gEFsPrlBRv65QUb+uX+DAFfBbAAAAAAAgARAAAFuAWwAAwAFQAAEyERITIWFRQGIyERIQERITI2NTQmIxECVQFo7vz97f3f/mQCVQFonJSUnAWw/ajhx8joBRv9qP3Sn355mAAAAAADALUAAAY1BbAACgATABcAAAEhMhYVFAYjIREzGQEhMjY1NCYjASMRMwFuAWju/P3t/d+5AWiclJScA1+5uQNY4cfI6AWw/RP90p9+eZj9PQWwAAACAKYAAASxBbAACgATAAABITIWFRQGIyERMxkBITI2NTQmIwFfAWju/P3t/d+5AWiclJScA1jhx8joBbD9E/3Sn355mAAAAAABALH/7AT2BcYAHwAAEzQAMzIAGQEQACMiADUzFBYzMhI9ASE1ITU0AiMiBhWxAST2+wEw/tD7+/7hubWsq8f9uwJFx6ustQPf1QES/qb+7f7//uz+qAEB46CvAQjNOJU2zgEJsKEAAAIAw//rBt4FxQAVACMAAAEQACEgABE1IxEjETMRMzUQACEgABEnNAIjIgIVERQSMzISNQbe/rv+9v7+/sbXubnXAToBAgEKAUW52ry0z8+0vdkCV/70/qABYAEMKP2BBbD9ZEQBCwFi/p7+9QLJAQb++sn+/cv++gEFzAACAGMAAARnBbAADQAWAAAhIwEuATU0JDMhESMRIQEhIgYVFBYzIQEoxQFVkJABC/UBz7r+qwFV/uujpKSdARsCbzbDktTi+lACPALeloiHowAAAAACAGH/6wQoBhEAGwApAAABMhIdARQAIyIAPQEQADc+ATUzFAYHDgEHFz4BFyIGHQEUFjMyNj0BNCYCZ9Pu/wDj5P8AAQPmhnOYsLqNwx4DRrJFlJSVlZSWlwP7/vLbGOz+3QEj7IgBSgF3KxlASrFxHhipqgJGUZXAlBin09OnGJTAAAADAJ0AAAQpBDoADwAYACEAADMRITIWFRQGBxUeARUUBiMBESEyNjU0JiMlMz4BNTQmKwGdAabY51lUZW/Yyf7OATJ0c3N0/s77fXuChO0EOpKXTnUfAxiHWpqZAdz+t1RRUFSSAUxNUE4AAAABAJoAAANHBDoABQAAASERIxEhA0f+DboCrQOj/F0EOgAAAAACAC7+wgSTBDoADgAVAAA3PgE3EyERMxEjESERIxMBDgEHIREhg1VYDxACuYu5/Q25AQHJC1BCAfT+s5Vkzd8Blfxb/i0BPv7CAdMCELv9WAL8AAABABUAAAYEBDoAFQAAASMRIxEjASMJATMBMxEzETMBMwkBIwPqgbmC/tHqAYz+meABF3+5fgEZ4P6YAYzqAdj+KAHY/igCOwH//j8Bwf4/AcH+Af3FAAAAAQBY/+0DrARMACgAAAEUBgceARUUBiMiJjUzFBYzMjY1NCYrATUzMjY1NCYjIgYVIzQ2MzIWA5hXUl5f5MKz+7iIbnJ6ana5uXBdaXBig7jsscHRAxNLeCQhfV6aqaqoUHBjTltQmlBOSF5jSZGunwAAAAABAJwAAAQBBDoACwAAATMRIxEjASMRMxEzA0i5uQP+ELm5AwQ6+8YDF/zpBDr86gABAJwAAAQ/BDoADAAAASMRIxEzETMBMwkBIwHdh7q6eQFs4P5SAdLrAc/+MQQ6/jUBy/35/c0AAAEAKAAABAMEOgAPAAABESMRIQMKASsBPwEyNhsBBAO6/pEND5fJNgQoaUoNFAQ6+8YDo/7H/rL+5KIBwQEGAdAAAAAAAQCdAAAFUgQ6AA4AACUBMxEjESMBIwEjESMRMwL7AXDnuQP+pYD+ngO58PIDSPvGAwz89AMd/OMEOgAAAQCcAAAEAAQ6AAsAACEjESERIxEzESERMwQAuf4PuroB8bkB0P4wBDr+KgHWAAAAAQCcAAAEAQQ6AAcAACEjESERIxEhBAG5/g66A2UDo/xdBDoAAQAoAAADsAQ6AAcAAAEhESMRITUhA7D+lbn+nAOIA6b8WgOmlAAAAAMAZP5gBWkGGAAfAC0AOwAAExASMzIWFxEzET4BMzISERUUAiMiJicRIxEOASMiAjUlNCYjIgYHER4BMzI2NSEUFjMyNjcRLgEjIgYVZMjBK0khuSJQMsHJyb8yUSO5IUosvskETICHIjYWFjcjh378bXWHHzMXFzIeiHYCCgEMATgPDgHn/hMREv7I/vQV8f7nEQ/+VQGoDg8BGfEVwe0LCfztCQjKq63ICQkDFQgJ6sQAAAEAnP6/BIIEOgALAAATMxEhETMRMwMjESGcugHyuYESpvzSBDr8WwOl/Fv+KgFBAAEAZwAAA70EOwATAAAhIxEOASMiJjURMxEUFjMyNjcRMwO9uj53RcrYuXJ3RXk8ugGKERDI0AE6/saJeBARAhkAAAAAAQCcAAAF4AQ6AAsAAAERIREzESERMxEhEQFWAYy5AYu6+rwEOvxbA6X8WwOl+8YEOgAAAAEAkf6/Bm0EOgAPAAABESERMxEhETMRMwMjESERAUsBjLkBi7qYEqX62wQ6/FsDpfxbA6X8W/4qAUEEOgAAAAACAB4AAAS/BDoADAAVAAATIREhMhYVFAYjIREhAREhMjY1NCYjHgH6ARPD0dLC/jT+vwH6ARNyaGlxBDr+ir+foMYDpf6K/mZyWFZ6AAAAAAMAnQAABX8EOgAKAA4AFwAAASEyFhUUBiMhETMBIxEzAREhMjY1NCYjAVYBE8PR0sL+NLkEKbq6+9cBE3JoaXECxL+foMYEOvvGBDr99f5mclhWegAAAAACAJ0AAAP9BDoACgATAAABITIWFRQGIyERMxkBITI2NTQmIwFWARPD0dLC/jS5ARNyaGlxAsS/n6DGBDr99f5mclhWegAAAAABAGT/6wPgBE4AHQAAASIGFSM0NjMyEh0BFAIjIiY1MxQWMzI2NyE1IS4BAghikrD7qd76+t6567CKaoWNC/5qAZUPjAO4eVyU1/7M6Crp/szcq2mJx5WVjrkAAAIAnf/sBiMETgATACEAAAEhNhIzMgAdARQAIyICJyERIxEzARQWMzI2PQE0JiMiBhUBVwEIE/zQ5AEB/wDj1v0P/vm6ugG/lJaUlpeVlJQCbtkBB/7P9Rj2/tIBDOD+KAQ6/dax3t+wGK7i4q4AAAACAC8AAAPHBDoADQAWAAABESMRIQEjAS4BNTQ2MwMUFjMhESEiBgPHuv7q/wDIARFqbtfE4WNnASH+9nJvBDr7xgGm/loBwSWdbZS2/rRMZwFrawAB/+f+SwP7BhgAKgAAASERFz4BMzIWHQEzERQGIyImJzceATMyNjURNCYjIgYHESMRIzUzNTMVIQJj/ugDN6JnsbsBp5siNRwPDUQTQUd0d1eILLqqqroBGAS6/u0BUFjM3d/94aqyCAmSBQloXwMAjYBSSPzmBLqVyckAAQBs/+wD/QROAB0AACUyNjczDgEjIgI9ATQSMzIWFyMuASMiBgchFSEeAQJOZ5cBsAH/r+709O6/7wGwAY5wk4oKAZD+cQqIgXhclNUBL+0q7AEw3KxoiryVlZe6AAAAAgAnAAAGhgQ6ABYAHwAAAREhMhYVFAYjIREhERACKwE/ATI2NREBESEyNjU0JiMD3wETw9HSwv4z/rCqzjYDKW1cAsMBE3BqaXEEOv5jtZaXuwOj/sf+vP7amAHW+wHQ/c7+i3FQTGgAAAAAAgCcAAAGpwQ6ABIAGwAAASERMxEhMhYVFAYjIREhESMRMwERITI2NTQmIwFWAfG5ARPD0dLC/jT+D7q6AqoBE3BqaXECoAGa/mK0lpe7Agz99AQ6/c7+i3FQTGgAAAAAAf/9AAAD+gYYABwAAAEhERc+ATMyFhURIxE0JiMiBgcRIxEjNTM1MxUhAnn+0gM3omexu7l0d1eILLqUlLoBLgS//ugBUFjM3f1bAqeNgFJI/OYEv5XExAAAAAABAJz+nAQBBDoACwAAAREhETMRIREjESERAVYB8rn+rbn+pwQ6/FsDpfvG/pwBZAQ6AAAAAQCf/+sGaQWwACAAAAERFAYjIiYnDgEjIiY1ETMRFBYzMjY1ETMRFBYzMjY1EQZp4b1xpzAzrnW317pyYnGHv31qaXwFsPvZztBYWlpY0M4EJ/vZhIWFhAQn+9mEhYWEBCcAAAEAgf/rBa0EOgAgAAABERQGIyImJw4BIyImNREzERQWMzI2NREzERQWMzI2NREFrc2rYpEsMJhlpsK5XVJfcrpnWldoBDr9Kbu9SUxMSby8Atf9KXJxcnEC1/0pcnFycQLXAAAC/9wAAAP8BhgAEgAbAAABIREhMhYVFAYjIREjNTMRMxEhAREhMjY1NCYjApb+vwESxNHTwv40v7+6AUH+vwEScmhpcQQ6/q7Jp6jQBDqVAUn+t/2E/kJ8YF2FAAEAxP/sBpEFxgAnAAABMzUQADMyBBcjLgEjIgIdASEVIRUUEjMyNjczBgAjIgARNSMRIxEzAX3OATD89QENGLkZo6WsxwIa/ebHrKaiGbkY/u/x/P7Qzrm5A0AZARMBWv3opqn+98wbllLO/vekqdz++gFYARRS/VYFsAABAJn/7AWnBE4AIwAAATM2EjMyFhcjLgEjIgYHIRUhHgEzMjY3Mw4BIyICJyMRIxEzAVPEDvTfv+8BsAGOcJOKCgGx/lAKiJRnlwGwAf+v4PIPxLq6AmfYAQ/crGiKvJWVl7p4XJTVAQza/i4EOgAAAgAqAAAE3gWwAAsADwAAASMRIxEjAyMBMwEjASEDIwOJrrihmr4CD6ACBb39mAGaygMBuv5GAbr+RgWw+lACWAJNAAACAA8AAAQlBDoACwARAAABIxEjESMDIwEzASMBIQMnIwcC7XW5e3i9AbqfAb2+/hkBMIEWBBYBK/7VASv+1QQ6+8YBwQE9U1MAAAAAAgDWAAAG7wWwABMAFwAAASEBMwEjAyMRIxEjAyMTIREjETMBIQMjAY8BhQE2oAIFvZiuuKGavqD+tLm5AjsBmsoDAlkDV/pQAbr+RgG6/kYBuv5GBbD8qAJNAAACALwAAAXkBDoAEwAZAAABIQEzASMDIxEjESMDIxMjESMRMwEhAycjBwF2AQ8BA58Bvb56dbl7eL160rq6AckBMIEWBBYBwQJ5+8YBK/7VASv+1QEr/tUEOv2HAT1TUwACAJYAAAY7BbAAIQAlAAABNzUhATMyFhURIxE0JisBBxEjEScjIgYVESMRNDY7AQEzATMBIQHzAwPQ/nUf8fC5ip57F7kRh5+Iuu/yK/521QF6EQEi/asFpQEK/XvK7f6MAXSmeyf9kgJ6G3um/owBdO3KAoX9ewHvAAAAAgCWAAAFSwQ6ABsAHwAAAR4BHQEjNTQmKwEHESMRJyMiBh0BIzU0NjcBIQEzEyEDtcnNuniLMwu5Bj6Md7rR0f7fA7/+HgW4/ooCWgnM4KWlpnsT/k0BvQl7pqWl5coGAeD+IQFJAAACAMMAAAhuBbAAKQAtAAAhETQ2NyERIxEzESE7AQEzFzc1IQEzMhYVESMRNCYrAQcRIxEnIyIGFREBMwEhAsknKf5jubkDFxcr/nbVBgMD0P51H/HwuYqeexe5EYefiAIXEQEi/asBdF+NNv1qBbD9ewKFCwEK/XvK7f6MAXSmeyf9kgJ6G3um/owDKwHvAAACAJsAAAc7BDoAIgAmAAAhNTQ2NyERIxEzESEBIQEeAR0BIzU0JisBBxEjEScjIgYdAQETIRMChiQm/oW6ugLS/uADv/7fyc26eIszC7kGPox3Aam5/om5pV6NNv46BDr+IgHe/iAJzOClpaZ7E/5NAb0Je6alAlsBSf63AAAAAAIAUP5HA6oHcAAtADYAAAEyNjU0JiMhNSEyBBUUBgcVHgEVFAQrASIGFRQWFwcuASc0NjsBMjY1NCYrATUBNzMVByMnNTMBoqOVkpL+zgEy2AEGf3OChv742DVQRV5DSm6YAaqjLYqdqKeNAQqVov5z+p4DNn92a4WV0LlpoisDKayDyt86N0dVHnsvoG+BfJV7ioWVA6SWEvPxFAAAAAACAEz+RwN3BhsALQA2AAABMjY1NCYjITUhMhYVFAYHFR4BFRQGKwEiBhUUFhcHLgEnNDY7ATI2NTQmKwE1EzczFQcjJzUzAZqNgH18/tMBLcTvZFpobPHFMFBFXkNKbpgBqqIpdoaRko3BlaL+c/qeAmhUTkRWlqSQS3UjAyB5V5mqOjdHVR57L6BvgXxcTlZRlQMdlhLz8RQAAAADAHP/6wT+BcUADQAWAB8AAAEQACEgABkBEAAhIAARBSE1NAIjIgIVBSEVFBIzMhI1BP7+u/72/v7+xgE6AQIBCgFF/C4DGdq8tM8DGfznz7S92QJX/vT+oAFgAQwBAQELAWL+nv71PkDJAQb++snWLcv++gEFzAADAGD/7AQnBE4ADQAUABsAABM0ADMyAB0BFAAjIgA1ATI2NyEeARMiBgchLgFgAQDi5AEB/wDj5P8AAeSHkw39sQyTh4SSDwJND5QCKPUBMf7P9Rj2/tIBLvb+cbybm7wDN7aVlbYAAAEAFwAABNoFxAARAAABFzM3AT4BMxcHIyIGBwEjATMCPyIDIgEFMYFuLwEMNUEd/nig/gXJAXF+fgM0noEBoz5V+3MFsAAAAAEALgAABAsETQAVAAABFzM3Ez4BMzIWFwcuASMiBgcBIwEzAdsWAxedKX5SIjAYFQUYDSE7D/7Xjf6DvQE6XV0CI35yCg6SAwUxLPyyBDoABABz/3ME/gY1AAMABwAVACMAAAEjETMRIxEzARAAISAAGQEQACEgABEnNAIjIgIVERQSMzISNQMWubm5uQHo/rv+9v7+/sYBOgECAQoBRbnavLTPz7S92QS1AYD5PgGJAVv+9P6gAWABDAEBAQsBYv6e/vUCyQEG/vrJ/v3L/voBBcwABABg/4gEJwS2AAMABwAVACMAAAEjETMRIxEzATQAMzIAHQEUACMiADUzFBYzMjY9ATQmIyIGFQKhubm5uf2/AQDi5AEB/wDj5P8AupSWlJaXlZSUA0gBbvrSAW4BMvUBMf7P9Rj2/tIBLvax3t+wGK7i4q4AAAAAAwCf/+sGZAdUACwAPgBEAAABMhYVERQGIyImJw4BIyImNRE0NjMVIgYVERQWMzI2NREzERQWMzI2NRE0JiMTFSMiJCMiBh0BIzU0NjMyBDMBJzc1MxUE1rbY2LZ1rTM0rXO319e3YnJyYnGHuoVyYXR0YWgshf7dLjY8f3l0SwEec/5BTDq0Ba/k3v3A3+NWWVlW498CQN7klZiV/cCWl4WEAbT+TISFl5YCQJWYAbt9fzg3EiRubH/+UkB0jHwAAwB+/+sFqgXxACwAPgBEAAABMhYVERQGIyImJw4BIyImNRE0NjMVIgYVERQWMzI2PQEzFRQWMzI2NRE0JiMTFSMiJCMiBh0BIzU0NjMyBDMFByc3JzMEQqXDw6VnmS8vmWWmwsKmUl1dUl9yuXJgUF5eUKoshf7dLTc7gHp0SgEedP7ioU07AbQERNDM/t/Nz0pMTErPzQEhzNCVhIP+34SDcnHr63Fyg4QBIYOEAcJ9fzc3EiNubYDqxEB0jAAAAgCf/+sGaQcDAAcAKAAAATUhFyEVIzUFERQGIyImNREjERQGIyImNREjERQWMzI2Nx4BMzI2NREB3QMrAf61qAKafGlqfb+HcWJyute3da4zMKdxveEGmWpqfX3p+9mEhYWEBCf72YSFhYQEJ/vZztBYWlpY0M4EJwAAAAIAgf/rBa0FsQAHACgAAAE1IRchFSM1AREUBiMiJjURIxEUBiMiJjURIxEUFjMyNjceATMyNjURAYgDKwP+s6gCM2hXWme6cl9SXbnCpmWYMCyRYqvNBUdqaoCA/vP9KXFycXIC1/0pcXJxcgLX/Sm8vElMTEm9uwLXAAABAHj+gwS+BcUAGAAAASMRJgA1ERAAMzIAFSM0JiMiAhURFBI7AQMRud3+/QEw/PoBILq1q6zHx6xt/oMBbRwBTv0BAQETAVr+/eKfsP73zP79zv73AAAAAQBk/oMD4AROABgAAAEjESYCPQE0EjMyFhUjNCYjIgYdARQWOwECorm7yvrfuOuvjGiRj46SZf6DAW8fASbRKugBNN2raIrloSqk5AAAAAABAHQAAASQBT4AEwAAAQUHJQMjEyU3BRMlNwUTMwMFByUCWAEhRP7dtqjh/t9EASXN/t5GASO8pecBJUj+4AG9rHmq/r4Bjqt5qwFvq3urAU3+Z6t4qgAAAfxnBKf/JwX7AAcAAAEVJzchJxcV/Q2mAQIbAaUFJX4B52wB1QAAAAH8cQUX/2QGFQARAAABMiQzMhYdASM1NCYjIgQrATX8m3MBHkp0eoA7Ny3+3YUsBZWAbW4jEjc3f30AAAH9ZgUY/lQGWAAFAAABNTMVFwf9ZrM7TQXcfIx0QAAAAf2kBRj+kwZYAAUAAAEnNyczFf3xTTsBtQUYQHSMfAAI+o3+xAIoBa8ADQAbACkANwBFAFMAYQBvAAABNDYzMhYVIzQmIyIGFQE0NjMyFhUjNCYjIgYVEzQ2MzIWFSM0JiMiBhUBNDYzMhYVIzQmIyIGFQE0NjMyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUBNDYzMhYVIzQmIyIGFRM0NjMyFhUjNCYjIgYV/XpwYmNwcC80Mi8B3m9iYnJxLzQzLUlwYmJxcC80My7+y29iYnFwLzQzLv1QcGJjcHAvNDIv/U1xYmNwcC80Mi/+3nFhY3BwLjUyLzVxYWNxcS41Mi4E81VnZ1UsOTks/utVZ2dVLDk5LP4JVWdnVSw5OSz9+VVnZ1UsOTks/uRWZmZWLTg4LQUaVWdnVSw5OSz+CVVnZ1UsOTks/flVZ2dVLDk5LAAAAAj6pP5jAeMFxgAEAAkADgATABkAHgAjACgAAAUXAyMTAycTMwMBNwUVJQUHJTUFATclFwYFAQcFJyUDJwM3EwEXEwcD/qcLemBGOgx6YEYCHQ0BTf6m+3UN/rMBWgOcAgFARCX/APzzAv7ARQEmKxGUQcYDXxGVQsQ8Dv6tAWEEog4BUv6g/hEMfGJHOwx8YkcBrhCZRBex/I4RmUXIAuQCAUZF/tX84wL+u0cBKwAAAv/cAAAD/AZwABIAGwAAASERITIWFRQGIyERIzUzNTMVIQERITI2NTQmIwKW/r8BEsTR08L+NL+/ugFB/r8BEnJoaXEFGv3Oyaeo0AUalsDA/KP+QnxgXYUAAAADALUAAATYBbAAAwAOABcAAAEHATcBESMRITIWFRQGIyUhMjY1NCYjIQTYbv6Rbf4GuQIk7f397f6VAWuclZWc/pUCPmQBk2X+eP22BbDryMrplZ99fqEAAwCR/mAEJAROAAMAFgAkAAAlBwE3JRQCIyImJwcRIxEzFz4BMzISESM0JiMiBgcRHgEzMjY1BCNu/rZuAUvbyWeWNQO6nxI2mmvM27qQk1t7Jih5XZKPDWUBdWVz8P7nQ0MB/e8F2opOUP7H/vW/61BG/fZHTMupAAAAAAEApgAABCMHAQAJAAABIxUhESMRIREzBCMC/T65AsS5BRsB+uYFsAFRAAAAAQCRAAADQwV4AAkAAAEjFSERIxEhETMDQwX+DboB+LoDpAH8XQQ6AT4AAAABALX+3gR8BbAAFQAAASERMyAAERACIycyNjUuASsBESMRIQQw/T65AR8BNu/qApyFAcvPubkDewUa/ib+1f7q/vf+6JHNw9HR/V8FsAAAAAEAkf7lA74EOgAVAAABIREzMgQVBgIHJz4BNS4BKwERIxEhAz7+DXTnARgBvcIxh3EBsJV0ugKtA6P+4vrhjP7rJJAinnWZo/4aBDoAAAAAAQCmAAAE+AWwABQAAAkCIwEjFSM1IxEjETMRMxEzETMBBMv+bgG/5/6cUJVpublplU8BRwWw/U79AgKV9/f9awWw/XoBAv7+AoYAAAEAmgAABH8EOgAUAAAJAiMBIxUjNSMRIxEzETM1MxUzAQRa/q0BeOv+6jGUZbq6ZZQqAQMEOv3+/cgBz8TE/jEEOv411tYBywAAAAABAEUAAAaJBbAADgAAASMRIxEhNSERMwEzCQEjA4ywuf4iApefAhHU/cMCZuMClP1sBRuV/XkCh/0+/RIAAAAAAQA+AAAFfAQ6AA4AAAEjESMRITUhETMBMwkBIwMah7r+ZQJVeQFs4P5SAdLrAc/+MQOklv41Acv9+f3NAAAAAAEAtQAAB4QFsAANAAABIREhFSERIxEhESMRMwFuAtUDQf14uf0rubkDGwKVlfrlAob9egWwAAAAAQCRAAAFagQ6AA0AAAEhESEVIREjESERIxEzAUsB8QIu/ou5/g+6ugJkAdaW/FwB0P4wBDoAAAABALT+3wfNBbAAFwAAATMgABEQAiMnMjY1LgErAREjESERIxEhBP17AR8BNu/qApyFAcvPe7n9KbkESQNB/tX+6v73/uiRzcPR0f1eBRr65gWwAAABAJH+5QawBDoAFwAAATMyBBUGAgcnPgE1LgErAREjESERIxEhA/ao8AEiAb3DMIdxAbqeqLn+DroDZQKF+uGM/uskkCKddpmj/hoDo/xdBDoAAAACAHP/4gWaBcUAKQA3AAAFIiYnDgEjIAARNRASMxciAh0BFBIzMjY3JgI9ATQSMzISHQEUAgceATMBFBYXPgE9ATQmIyIGFQWab8FZR5pX/un+sfjOAX6Q5sckQSB+g9+5ut9wajNxQv18eHllaXZqaHceJSUhIAGIATKqARMBY5z++dGs8v7TBwhjARSs5vABM/7T9vqi/vdhDg0COZ/sSknmlP2x1durAAAAAgBt/+sEnARPACkAOAAABSImJw4BIyIAETU0EjMVIgYdARQWMzI2Ny4BPQE0NjMyFh0BFAYHHgEzAzU0JiMiBh0BFBYXPgE1BJxbnEc7gUnf/vPAoE1Zo48YLRdhYqiUk6tCQChYMulGP0FCT080NgwcHSEhAUoBAzvRAQqbsY09wfEFB1DXg2fB6/vGaXPBTgsKAZdsgKOSfWtrpzo5nWEAAAABADT+oQaOBbAADwAAASE1IRUhESERMxEzAyMRIQGw/oQDuf58Ate5lRKl+9kFG5WV+3oFG/rp/ggBXwABAB/+vwUXBDsADwAAASE1IRUjESERMxEzAyMRIQEx/u4CxPgB8rmBEqb80gOmlZX87wOl/Fv+KgFBAAACAJcAAATEBbAAAwAXAAABIxEzAREjEQ4BIyImNREzERQWMzI2NxEDF5WVAa25YbB79fO6jKJpvGcBQAK8AbT6UAJhHRrO8gHG/jqrfxwcArgAAAACAIMAAAPZBDsAAwAXAAAlIxEzASMRDgEjIiY1ETMRFBYzMjY3ETMChpWVAVO6PndFyti5cndFeTy65gI1/OUBihEQyNABOv7GiXgQEQIZAAEAjgAABLsFsAATAAAzETMRPgEzMhYVESMRNCYjIgYHEY65Ya989PS6jaFqvGYFsP2eHBzP8f46AcaqgB0c/UkAAAAAAgBH/+kFwAXDAB4AJwAABSAAETUuATUzFBYXNRAAMyAAERUhFRQSMzI2NxcOAQEhNTQmIyICFQPt/tj+waCflVJYATTpAQwBEfyAz95wnUowOLz9wALHpr6puhcBUgEfaxS/oWB5FAcBFAFc/qX+xG1l2f79LyiGJz8DWSHU9v71zwAAAv/j/+wEWQROABwAJAAABSIAPQEuATUzFBYXPgEzMhIdASEeATMyNjcXDgEDIgYHITU0JgK+5P74eHeUMDQg/qfc3f0zBJ2RZZM7STu5pmmRFAIOgBQBJ/QMHKqJSWEZwu3+/uB5psw4M3s6SwPMqYcaeZ0AAAAAAQCm/tkEywWwABYAAAEWABEQAiMnMjY1LgEjIREjETMRMwEzArr9AQ3u6wKdhQLK0P7wubmHAg3YAzgV/tn+/v73/uiRzcPQ0f1lBbD9iwJ1AAAAAQCa/v0EGQQ6ABYAAAEeARUGAgcnPgE1LgErAREjETMRMwEzAn291gG8wzCHcQG2oqu6ulsBiuACZB3av4f++SOQIZJulov+MQQ6/jUBywABALX+SwT9BbAAFwAAAREhETMRFAYjIiYnNx4BMzI2NREhESMRAW4C1bqomx80HQ4OQhJCR/0ruQWw/WsClfn3qrIJCZEFCGdfAt/9egWwAAEAkf5LA/UEOgAXAAABESERMxEUBiMiJic3HgEzMjY1ESERIxEBSwHxuaibHzQdDw1CEkJI/g+6BDr+KgHW+22qsgkJkQUIZ18CKf4wBDoAAgBf/+sFEAXFABYAHgAAASAAERUQACMgABE1ITU0AiMiBgcnPgETMhI3IRUUFgKCAToBVP60+f7N/scD+OTxdqdOLzrG47XPB/zDyQXF/pb+zqP+1/6OAVoBPG856gEcMCeGJkH6uwES2yPV9QAAAAEAaf/rBCgFsAAaAAABITUhFwEeARUUBCMiJDUzFBYzMjY1NCYrATUDIP10A2UB/mTg6v703sP+7rqbgJGgoaaOBRqWdf4SDd/My9/U1XedlXyfjpUAAAABAGn+dQQoBDoAGgAAASE1IRcBHgEVFAQjIiQ1MxQWMzI2NTQmKwE1Awz9iANlAf5x2eT+9N7D/u66m4CRoKSmjQOjl3X+EBHeyMng1dN1nZV6n46VAAD//wA6/ksEdAWwACYArEQAACYB06tAAAcBmgDwAAAAAP//ADv+SwOWBDoAJgDnTwAAJgHTrI4ABwGaAOEAAAAAAAIAWQAABGMFsAAKABMAAAERMxEhIiY1NDYzAREhIgYVFBYzA6q5/d/t/PvuAWj+mJyUlJwDbAJE+lDxycjq/SkCQqB7f6gAAAIAWQAABl4FsAAYACEAACEiJjU0NjMhETMRNz4BNzYmJzMeAQcOASMlESEiBhUUFjMCQu38++4BaLlab3MEAR8esyEjAgTrsP7t/piclJSc8cnI6gJE+uQBAYyCT6VRZpVKz9WVAkKge3+oAAIAZP/pBm4GGAAjADQAABMQEjMyFhc3ETMRBhYzPgE3NiYnNx4BBwIAIwYmJw4BIyICNQEuASMiBh0BFBYzMjY3LgE1ZNrMXo0zA7kCXFGMlAQBHx+zIiMCBP71znmfKDagccnbAscodlWTiIeSWncpAwICCgEKATpBPgECSPtBZHUB0b9jxmkBfLle/vH+6QJWYVtaARvvAThAR+rAFarGTEcVHBAAAAEANv/oBdIFsAAsAAABNCYrATUzMjY1NCYjITUhMhYVFAYHHgEdAQYWMz4BNzYmJzMeAQcKASMGJicCw4h5v4yslZKh/pkBZ/P5dXR4ZAFSSHqDBAEfH7QjIgIE+b6gqggBc3qQln2IfYWWzsx0pTEorINFUGAB1btjx2mIr1z+8/7nA5quAAABADH/4wTpBDoALgAAJQYWMz4BNzYmJzMeAQcOASMGJic1NCYrASczMjY1NCYjISchMhYVFAYHFR4BHQEC5wEpNXB1BAEgH7QjIwIF7LKLhgZrZ9MCu3tydnv++gYBDNDcXVthVdUtLgKZjk2iUGiPSNviA2+ETEpPlFVPU2CUpptTcSIDHHdaTgAAAAIAU/7EA9AFsAAhACsAABM1MzI2NTQmIyE1ITIWFRQGBx4BHQEUFhcVIy4BPQE0JiMBFAYHJz4BPQEzsKKvlpGg/u0BE/P3dHN7aB8lvikWjHwCRVxSaTAuuQJ6ln+FgIeVz85zpDEorISIRWojGSSCR4R6j/3EZM9HSEmRVZcAAgB5/rUDuQQ6ACIALAAAEzUzMjY1NCYjITUhMhYVFAYHFR4BHQEUFhcVIy4BPQE0JiMBFAYHJz4BPQEzwtR+cnJ+/uMBHc/bXl1kVhoivyQSa2gCBlxSaTAuuQG6lFRRVV6UpZtUcyIDHYFjYS9UFhMXYjRfU1v+dWTPR0hJkVWXAAAAAQBF/+gHbwWwACEAAAERBhYzPgE3NiYnNx4BBwIAIwYmJxEhERACKwE1MzISGQEE5QFcUYyTBAEfH7MiIwIE/vXNqrMI/hnQ+zUpmoQFsPupZHUB0b9jxmkBfLle/vH+6QOtxAPB/eb+av6WlQEbAVACsAABAD//6AY5BDoAIQAAAREGFjM+ATc2JiczHgEHDgEjBiYnESEREAIrAT8BMjY1EQPqAVpQcXYEAR8fsyIjAgTstKiyCP69qsw5AypuWwQ6/R9kdQG5qV68Y3qrWPn/A63EAkr+y/69/tWiAdL5AcwAAQCt/+gHcQWwAB0AAAERBhYzPgE3NiYnNx4BBwIAIwYmJxEhESMRMxEhEQTmAVtRjJQEAR8fsyIkAgX+9c6pswj9Obm5AscFsPupZXQB0b9ixWsBf7Ze/vD+6gOtxAEt/XoFsP1rApUAAAAAAQCQ/+gGTAQ6AB0AAAEhESMRMxEhETMRBhYzPgE3NiYnMx4BBw4BIwYmJwND/ga5uQH6uQFaUHF3BAEfH7IjIwIE7LWosggBz/4xBDr+KQHX/R9kdQG5qV28ZH2pV/n/A63EAAEAef/rBJ0FxQAhAAAFIAAZARAAITIWFwcuASMiAhURFBIzPgE3NiYnMx4BBwYEArn++/7FATsBBXKsRTtEjla20dC3j5YEARoZtCYTAQT+8BUBWAESAQYBEQFZLCuDIiL+98n++M3++AGajlWxY7VlT9ziAAAAAAEAZf/rA8YETgAhAAAlPgE3NCYnMx4BFQ4BIyIAPQE0EjMyFhcHLgEjIgYdARQWAlFnUgMLCbINDgTIqen+/fneX4owLDB3RpCOl4ABVVc5eTpGcDaioAE16CrnATUiII0bHuefKqPlAAAAAAEAJP/oBUUFsAAZAAABITUhFSERBhYzPgE3NiYnNx4BBwIAIwYmJwIC/iIEgP4YAlxRjJQEASAfsyMiAgT+9c2ptAgFGpaW/D9kdQHRv2LGagF/t13+8f7pA63EAAAAAAEARv/oBLgEOgAZAAABITUhFSERBhYzPgE3NiYnMx4BBw4BIwYmJwGs/poDi/6VAVtRcXYEAR8esiMjAgTttKm0CAOmlJT9s2V0AZuPTqVTapJK3eMDrcQAAAAAAQCb/+sFAAXFACkAAAEiBhUUFjMyNjUzFAQjICQ1NDY3NS4BNTQkITIEFSM0JiMiBhUUFjsBFQLMv7nLuqXJuf6+5f76/siKiXmEASMBBeQBL7nGlLq1qbm3ApuAinyVnXfV1N7MgaoqAy6kaMrU2rhujpB0d4OWAAAA//8AswKMBPADIQBGAYbZAFMzQAD//wC7AowF8wMhAEYBhq8AZmZAAP//AA3+bgOhAAAAJwBBAAn/AwAGAEEJAAABAGAEAgF4BisACQAAEzQ2NxcOAR0BI2BcUmoyLbkEsWTPR0dKkFayAAAAAAEAMAPnAUcGGAAJAAABFAYHJz4BPQEzAUdcUmkwLrkFYWXPRkhIkVa6AAAAAQAk/tYBOwD6AAkAACUUBgcnPgE9ATMBO1xSaTAuuU9kz0ZHSZFVrgAAAP//AFAD5wFnBhgARwFmAZcAAMABQAAAAP//AGAEAgKyBisAJgFlAAAABwFlAToAAP//ADwD5wKGBhgAJgFmDAAABwFmAT8AAAACACT+1gJkAPoACQATAAAlFAYHJz4BPQEzBRQGByc+AT0BMwE7XFJpMC65ASldUmkwLrpPZM9GR0mRVa6rZM9GR0mRVa4AAAABAEYAAAQkBbAACwAAASERIxEhNSERMxEhBCT+bLr+cAGQugGUA6P8XQOjlwF2/ooAAAAAAQBX/mAENAWwABMAACkBESMRITUhESE1IREzESEVIREhBDT+arr+cwGN/nMBjboBlv5qAZb+YAGglQMOlwF2/oqX/PIAAAAAAQCKAhgCIgPeAA0AABM0NjMyFh0BFAYjIiY1im1eYG1tX19tAxhZbW1ZPVlqaln//wCmAAADFwDFACYAEAQAAAcAEAG5AAD//wCmAAAEtgDFACYAEAQAACcAEAG5AAAABwAQA1gAAAAGAET/6wdXBcUAGQAnADUAQwBRAFUAAAE0NjMyFhc+ATMyFh0BFAYjIiYnDgEjIiY1ATQ2MzIWHQEUBiMiJjUBFBYzMjY9ATQmIyIGFQUUFjMyNj0BNCYjIgYVARQWMzI2PQE0JiMiBhUTJwEXAzegikx0JiVzTYqhoIlOdCUlc0yLof0NoIqKoZ+Ki6EDflJPTlFST05RAcpST01SUk9OUftDUk9OUVNOTlH8aALHaAFlgatAOTlAq4FOgqo+Ojo+qoIDgYKrq4JNgqmqgfzMTWhnTk5NaGhNTk1oZ05OTWhoTQLmTWdnTU1NaWlN+9dBBHJBAAAAAAEAbACaAiADtAAGAAAJASMBNQEzAR4BAo3+2QEnjQIn/nMBhBMBgwABAFkAmQIOA7QABgAAEwEVASMJAecBJ/7ZjgEC/v4DtP58E/58AY0BjgAAAAEAOwBvA2oFIgADAAA3JwEXo2gCx2hvQQRyQQACAEgCMANSBcUACgAPAAABMxUjFSM1IScBMwEhEScHArqYmKP+NQQByan+QgEbAxEDZn25uV4Cfv2hAYsBIgAAAQB6AosC+AW6ABMAABMXPgEzMhYVESMRNCYjIgYHESMR+h4lbkl+hqpKRjlMFaoFq3pCR5Og/gQB3WpaOTP9ywMgAAABAEYAAARRBcUAJwAAAQ4BByEHITUzPgE3IzUzJyM1Myc0NjMyFhUjNCYjIgYVFyEVIRchFQGvAyAeAuMB/DYKMTIDsKsGpJ4F277K1bp9aGl2BQGm/mAFAZwBvliYOZWVDbNplpGWldDlz7R8cZSLlZaRlgAAAAADAKf/7AYMBbAACgATACsAAAERIxEhMhYVFAYjJzMyNjU0JisBJREzFSMRFBYzMjY3Fw4BIyImNREjNTMRAWC5AV/s/v7spqablZWbpgPQ0NA2LxgxFRkaXS5xgJubAjb9ygWw9MnK85anfn+rJv75jf1qUD8HBoMRFY2eApaNAQcAAAABAE//6wPUBcUAKQAAASEUFjMyNjcXDgEjIgA1IzUzNSM1MzU0ADMyFhcHLgEjIgYdASEVIRUhA5L+DK6ZO201Ejp3Pur+6paWlpYBFOo8cUQSN246mawB9P4MAfQCArTOERGYDxABHfp4qXoR+QEeEA+aEBPMsxN6qQAABAB7/+sFgwXFABsAKQA3ADsAAAEUBiMiJj0BNDYzMhYVIzQmIyIGHQEUFjMyNjUBFBYzMjY9ATQmIyIGFTM0NjMyFh0BFAYjIiY1EycBFwKplX+CmJeBgJaLR0RFSEpFQ0YBEKGLiaChioqgi1FOT1JRTk9Sy2j9OWgEHm6QqoFNgaySbTpOaU1NTGhPOPz5gqqqgk6Bq6uBTWhoTU5OZ2hNA8pB+45BAAAAAAIAaP/rA2oFxQAaACYAAAUiJj0BDgEjNTI2NxE0NjMyFh0BFAIHFRQWMwM1NCYjIgYVET4BNQLMzMgzZTg6ZjCYi3qVx7JhehsuKDY0YGAV7NgPDgyuDg4B3LTHqZMqpP6zZVqVlAPXLFFPbnH+gkzScwAABACrAAAISgXAAAMAEQAfACsAAAEhNSEBNDYzMhYdARQGIyImNTMUFjMyNj0BNCYjIgYVASMBIxEjETMBMxEzCAz90wIt/ZK3n5+3tp6ht6NaW1haW1laWf6yuf0tA7m5AtMDuQFrjQJ5l7i4l3WYtraYW2pqW3VYbGtZ+48Ee/uFBbD7hgR6AAIAZgOXBFwFsAAOABYAAAEjAyMDIxEjETMbATMRIwEjESMRIzUhBAIDmzOgA1pxpadrWv3kkluTAYAE/P6bAXL+jgIZ/nABkP3nAcj+OAHIUQAAAAIAmP/sBJMETgAVAB4AACUOASMiADU0ADMyAB0BIREeATMyNjcBIgYHESERLgEEFlm4Yd7+0gE/zdMBHP0AOYlPYbZZ/pBLizsCHDeIXjg6AUTt5gFL/s7rL/64Njg7PwMqQDr+6wEeNjsA//8Ab//1Bk8FsgAnAckAEQKGACcBdAEJAAAABwHQA0wAAAAA//8Aa//1BuIFwAAnAcsAAgKUACcBdAG8AAAABwHQA98AAAAA//8AbP/1BxIFrwAnAc3/+gKOACcBdAH0AAAABwHQBA8AAAAA//8Aa//1Bm8FrwAnAc8ADQKOACcBdAE3AAAABwHQA2wAAAAAAAIATP/rBC0F7QAUACEAAAEEABEVFAAjIgA1NBIzMhYXNy4BJxMyNj0BLgEjIgYVFBYB6AENATj+59rd/u/13l6jPAMp4qWPjKolrISQiqcF7Uv+Pv6ncPr+zgET0+8BETw5AsnwOPsx47RlUm3JoYjJAAAAAQCp/yoE5QWwAAcAAAUjESERIxEhBOW5/Ta5BDzWBfD6EAaGAAAAAAEARf7zBKsFsAAMAAAJASEVITUJATUhFSEBA2v9uQOH+5oCYf2fBBn8xQJIAkH9SJaNAs4C1I6W/UAAAAEAqAKMA+sDIQADAAABITUhA+v8vQNDAoyVAAABAD8AAASYBbAACwAAARczNwEzASMDIzUhAh4VAxcBjr394o32uAE7AU9iYgRh+lACdZcAAwBr/+sHwgROABkAJwA1AAABFAIjIiYnDgEjIgI9ATQSMzIWFz4BMzISFQUUFjMyEjc1JgIjIgYVITQmIyICBxUWEjMyNjUHwvXRq+tQUOup0/T00arsUVDsq8/1+WKHh5PSHB3Tk4WHBeWIg5XTHBvTlIWIAfrk/tXZoaHZASrlROMBLdqgoNr+0+NErc0BGW8qbQEZz6urz/7nbSpv/ufNrQAB/7T+SwKOBi0AHAAABRQGIyImJzceATMyNjURNDYzMhYXBy4BIyIGFREBZaebIDIdDg5AE0FIr6MiRCoYFCwbWlxZqrIJCZEFCGheBR6vuQsKjAUGbWX64gAAAAIAZQEaBBQD+wAbADcAABM+ATM2FhceATMyNjcfAQ4BIyImJy4BByIGBycDPgEzNhYXHgEzMjY3HwEOASMiJicuAQciBgcnbzB5Q0Y9Z1g/Q0F5LwMJMXlCQz9YZz1GQnkuAxMweUNGPWdbPENBeS8DCTF5QkM/WGs5RkJ5LgMDaEZMARczLRhKRAGjR0sYLTMXAUtDAf76RkwBFzMvF0tEAaRHSxgtNRYBTEMBAAAAAQCYAKQD2gTfABMAAAEzFSEDIRUhByc3IzUhEyE1IRMXAw/L/t2OAbH994NTY8YBHY/+VAIEmFMDzZ7+/57sOrKeAQGeARI7AAAA//8AngACA+YEjQBnAB4AVgCyQAA5mgAHAYb/+/12AAD//wCZAAAD7wSgAGcAIAATAMRAADmaAAcBhv/6/XQAAAACACsAAAPcBbAABQAPAAABMwkBIwEhAScjBwkBFzM3AbyMAZT+cI3+bAL0/vkWAxb/AAEGFgMWBbD9J/0pAtcCAz4+/f39/j8/AAD//wDHALIBgwTrACcAEAAlALIABwAQACUEJgAAAAIAbgJ6AjMEOgADAAcAABMjETMBIxEz+42NATiNjQJ6AcD+QAHAAAABAFz/LwFXAOwACQAAJRQGByc+AT0BMwFXS0dpJiSxgFy2P0g/e0xvAAAAAAIAHwAAA80GLQAXABsAADMRIzUzNTQ2MzIWFwcuASMiBh0BMxUjESEjETPKq6vOvkSCVR83dUJ4aN3dAkm6ugOtjXe5wx8emhYdaHB3jfxTBDoAABYAW/5yB+4FrgANAB0AKwA7AEEARwBNAFMAXQBhAGUAaQBtAHEAdQB+AIIAhgCKAI4AkgCWAAABNCYjIgYdARQWMzI2NQUyNjU0Jic1PgE1NCYrAREnFAYjIiY9ATQ2MzIWFQUUBiMiJjUjFBYzMjY1ESMBETMVMxUhNTM1MxEBESEVIxUlNSERIzUBMx4BFRQGKwE1ATUhFSE1IRUhNSEVATUhFSE1IRUhNSEVEzMyFhUUBisBBSM1MzUjNTMRIzUzJSM1MzUjNTMRIzUzAzl/aGh+fmpofQEgXmc0LSUqbWe8n0hBQ0lIQkFKA7o2KTM1XWhdU2hc+cRxxAUox2/4bQE1xAXsATZv/NoFMDI0M34BTgEW/VsBFf1cARQCCgEW/VsBFf1cARS8XT44Ojxd/PFxcXFxcXEHIm9vb29vbwJEYnl5YnBkd3dk2E5NLkQNAw48KExK/dvYR0xMR3BFTk5Fmyw2LC9TUVtQAXr7TwE7ynFxyv7FBh8BHXSpqXT+46n8tgItJykqqQNKdHR0dHR0+ThxcXFxcXEEWx8oKSeW/H76/BX5fvx++vwV+QAAAAAFAFz91QfXCGIAAwAdACEAJQApAAAJAwU0Njc+ATU0JiMiBgczPgEzMhYVFAYHDgEVFyMVMwMzFSMDMxUjBBgDv/xB/EQEDxkpSV2mloulAssBOiw3OjIrUDrKyspLBAQCBAQGUvwx/DEDz/E2OxsogFCDlIGJNDM+NjJNHDlWWluq/UwECo0EAAAAAAEAXP/vA6QEjQAeAAAbASEVIQM+ATc2FhUUBiMiJjU3FBYzMjY1NCYjIgYHiEcCof4AIyhxP7fIzN216rl9aXx0cmpsZRkB+QKUnv7BGyUCA8a8ts6fpA5XZ3xzb305OAAAAAACAFcAAAMkAyEACgAPAAABMxUjFSM1IScBMwEzEScHAqKCgqH+XQcBpqX+Y/wDEgEYfpqaYgIl/fcBRgEfAAAAAgBz/+sEDQXFAA0AGwAAARACIyICGQEQEjMyEhEnNCYjIgYVERQWMzI2NQQN8dva9PLa2/O6i4mJioyJiYkCLP7j/twBJQEcAVcBHAEm/tr+5CjEwMDE/lvEwsDGAAAAAf+i/t8CzANBAA8AAAMzIAAREAIjJzI2NS4BKwFe1QEfATbv6gKchQHLz9UDQf7V/ur+9/7okc3D0dEAAf+2/ksBZwCYAA8AACUVFAYjIiYnNx4BMzI2PQEBZ6ebIDIdDg4/FEJHmPGqsgkJmgUHX13xAAABABv+ZgHCAEAAEwAANx4BFRQGIyImJzceATMyNjU0Jif4ZmR/ZENbJh8jMCM9NEQ9QDSMTWJrGRN3DQ4wKjJWMAAAAAEAZ/6ZASEAmgADAAABIxEzASG6uv6ZAgEAAAACAIME2QLSBs4ADQAhAAABFAYjIiY1MxQWMzI2NRMUBiMiJiMiBhUnNDYzMhYzMjY1AtKeiYqelkVNS0aNXkg6eSojL1NcSS+DKyIxBa5hdHRhNkJDNQEJTGdMMyYVSmtMMyYAAgCBBOACygcCAA0AHQAAARQGIyImNSMUFjMyNjUlJz4BNTQmIzcyFhUUBg8BAjdGS01GkpyJiJz+pAFMQFdJB4+VU0IBBbA0QEA0X3FxXxB8AxkeHx1QTEM3Nwc+AAAAAgCBBN8C4AaJAA0AEQAAARQGIyImNTMUFjMyNjUnMwcjAuCijY+hmEhQTUlgmaRmBbBgcXFgNUBBNNnGAAAAAAIAbQTkA0IG0gAIABwAAAEHIycHIyclMzcUBiMiJiMiBhUnNDYzMhYzMjY1A0IBpcXFpAEBKYPDXkM2bycgM01dQyt5KB80BOcDn58D8OU/XUgwHBM+YkYsHQAAAgBpBOQD7AbOAAYAFgAAASMBMzcXMy8BPgE1NCYjNzIWFRQGDwECNbz+8KnFxapTAUU3TUAFf4dLOwEF6f77urqJgwQZIiMgXFZLPz4HPAAC/14E0gNGBoAABgAKAAABIycHIwEzBSMDMwNGxaqqxAEimP6PjMjHBNKfnwEFWAEBAAAAAgBuBOQEWAaSAAYACgAAATMBIycHIwEzAyMBkpgBIsWpqsYDIsjJjQXp/vufnwGu/v8AAAIAWwSnAv8GeQANABEAAAEUBiMiJjUzFBYzMjY1ByMnMwL/tZ2etJZYZGFaZ5fS2AWweZCQeUNRUkIFzgAAAAABAJ8EkAFwBhcABQAAEzczBxUjn3NeGLkFI/T9igAAAAIAKQAABIMEjQAHAAoAAAEhAyMBMwEjASEDA1r9+GnAAdavAdW//ccBlswBEP7wBI37cwGkAg0AAwCbAAAECQSNAA8AGAAhAAAzESEyFhUUBgcVHgEVFAYjAREhMjY1NCYjJTMyNjU0JisBmwGK1+dcVmZy2Mf+6wEVc3Jzcv7r0IKDfYjQBI2coVaBIAMYlGKkpAIL/ohfW1pkiVlZWUcAAAAAAQBy/+8EJASdABsAAAEOASMiAD0BNAAzMhYXIy4BIyIGHQEUFjMyNjcEIw70ztL+8QEP0tTvDroOhoOCpaWCg4UOAY7QzwEb5qzlARzOz4p/zZ+toM5/jQAAAAACAJsAAAQtBI0ACQATAAAzESEyAB0BFAAjAxEzMjY9ATQmI5sBotUBG/7l1ejohLKyhASN/vfV0tb++QP5/Jq7j9OOuwAAAAABAJsAAAPHBI0ACwAAASERIRUhESEVIREhA3D95QJy/NQDLP2OAhsCFf5+kwSNlP6wAAAAAQCbAAADyASNAAkAAAEhESMRIRUhESEDcf3kugMt/Y0CHAH4/ggEjZT+lAABAHL/7wRHBJ0AHwAAJQ4BIyIAPQE0ADMyFhcHLgEjIgYdARQWMzI2NzUhNSEERy7st+r+5gEb5N7hErgOh4SSs7GZb4sf/vgBwJ1CbAEF2fPXAQbBqQFtariQ9JO4LB38lQAAAQCbAAAEVQSNAAsAACEjESERIxEzESERMwRVuv26uroCRroB7v4SBI399QILAAAAAQCbAAABVASNAAMAACEjETMBVLm5BI0AAQBB/+8DcQSNAA8AAAEzERQGIyImNTMUFjMyNjUCubjdscXdunZyXXkEjfzUrcWvsmpkeWYAAAABAJsAAARABI0ADAAAASMRIxEzETMBMwkBIwG+abq6WwGN3/4zAfHqAfj+CASN/gIB/v3P/aQAAAEAmwAAA2oEjQAFAAAlIRUhETMBVQIV/TG6k5MEjQAAAQCbAAAFUASNAA4AACUBMxEjEScBIwEHESMRMwL5AXDnuQP+pYD+nwO68PIDm/tzA0YB/LkDWQH8qASNAAAAAAEAmwAABHIEjQALAAAhIwEHESMRMwE3ETMEcrj9ngO6ugJiA7gDbwH8kgSN/JABA28AAAACAHL/7wRXBJ0ADQAbAAABFAAjIgA9ATQAMzIAFSc0JiMiBh0BFBYzMjY1BFf+8ePj/vABD+LjARG5ppWUo6SVlaQB8Ov+6gEX6qzpARj+6OkBr72+rq2wvr2xAAIAcv+LBJoEnQATACEAAAEUBgcXBycOASMiAD0BNAAzMgAVJzQmIyIGHQEUFjMyNjUEVzY0rX+uO4JL4/7wAQ/i4wERuaaVlKOklZWkAfBlp0Kob6ciIQEX6qzpARj+6OkBr72+rq2wvr2xAAIAmwAABDoEjQAbACQAAAERIxEhMhYVFAYHFR4BHQEUFhcVIy4BPQE0JiMlITI2NTQmIyEBVboBy8/bYF9nWBIYvxgMa2f+0AERf3Fyfv7vAeL+HgSNsKVbfSUDHo1rZTNfGBMaazljXWSVXlxfaQABAF3/7wQNBJ0AJQAAATQmJy4BNTQ2MzIWFSM0JiMiBhUUFhceARUUBiMiJDUzFBYzMjYDVHur4sbt0NXouYd9hIByudzH+d3N/vO5pnuKkwEvSVcrPJCXlau4r2BzXk1MUC07l5Ocpai/cGRfAAAAAQBHAAADzwSNAAcAAAEhESMRITUhA8/+lbn+nAOIA/n8BwP5lAAAAAEAjP/vBHAEjQARAAABERQEIyIkNREzERQWMzI2NREEcP7w4uH+77isjpCqBI39AcfY2McC//0BgIyMgAL/AAABACoAAAR9BI0ACQAAARczNwEzASMBMwI6GQMYAUnG/i2u/i7HASBZVwNv+3MEjQABAEEAAAXABI0AEwAAARczNxMzExczNxMzASMDIwMjATMBwwMDA9+t4AMDA7jH/tes6QPqq/7XxgEJFBYDgvx8FBYDgvtzA2z8lASNAAAAAAEAOAAABD4EjQALAAAJATMJASMJASMJATMCOQEg2/51AZXZ/tb+2dwBlv5z2gLXAbb9v/20Ab/+QQJMAkEAAAABACAAAAQwBI0ACAAACQEzAREjEQEzAigBOND+Urn+V9ACQgJL/Q3+ZgGjAuoAAAABAE4AAAPYBI0ACQAAJSEVITUBITUhFQEyAqb8dgKM/ZYDUJOTcgOHlG4AAAIAe//vA/YEnQANABsAAAEUBiMiJjURNDYzMhYVJzQmIyIGFREUFjMyNjUD9vHLzfLwzczyuYp7eoqMenqJAZvJ4+PJAVfI4+THAYGVlYH+qIKXl4IAAAABAEIAAAHLBJ0ABQAAISMRBzUlAcu50AGJA9MDiEUAAAEAWgAAA3AEnQAYAAApATUBPgE1NCYjIgYVIzQ2MzIWFRQGBwEhA3D89QGbaUReXWxzudu9scR0nv74AiOTAZhlcUBYcHNYl8izq2+Wof76AAAAAAEAWf/vA50EnQAoAAABMjY1NCYjIgYVIzQ2MzIWFRQGBx4BFRQGIyImNTMUFjMyNjU0JisBNQH+bmVvb1t1ud+qwNhfV2Nl6cGr77h8ZnF/cXSnAppgV1BoYUuTramiU4MnIohmpLKpqlJubVZmX5AAAAAAAgBHAAAEEQSNAAoADgAAATMVIxUjNSEnATMDEScBA0nIyLn9uwQCQsC5A/6IAYKV7e12Ayr89QIRAf3uAAAAAAEAXQAABCMFxQAYAAApATUBPgE1NCYjIgYVIzQ2MzIWFRQGBwEhBCP8VgHdhFqBcJyRuf7oxuWMg/55AsuDAhOSp1pylJqRw/7gtXnpkP5XAAAAAAIAev/vA9IEnQAaACcAAAEyFhcHLgEjIgYdAT4BMzIWFRQGIyImNRE0JBMiBgcVFBYzMjY1NCYCTUSRQh87b0x+nTOPXL3D6sC98QEKplx9HYhsb4JzBJ0bGI8ZFaOCcTc8w7at0fTIATfH9P20QjoqgqeGZW13AAEARwAAA2MEjQAMAAABBgIRFSM1EBI3ITUhA2PBornkkf2LAxwD+ev+xv7lubkBFQGSmZQAAAAAAwBc/+8DxQSdABcAIwAvAAABFAYHHgEVFAYjIiY1NDY3LgE1NDYzMhYDNCYjIgYVFBYzMjYDNCYjIgYVFBYzMjYDomRZaXfxu8T5eW1dZ+S1rd6XjWdulJNxZ4sjeldifoBiWHcDXVmDJSeOYaSzs6Rhjiclg1mbpaX9Uldwb1hbbW0Cak5iX1FQZGQAAAAAAgBL/+8DnQSdABoAJwAAJTI2PQEOASMiJjU0NjMyFhURFAYjIiYnNx4BEzI2NzU0JiMiBhUUFgHec5IvgE3G1urAvOz6xUSRRB09clxdfRyHaWyCdoKUc3o1Ncyxqt30x/6ouOMaGJAaFQGlSjg5gKeTYGqFAAAAAQBeAAABhAMsAAUAACEjEQc1JQGEpIIBJgKUAYIXAAABAHEAAALGAywAGAAAKQE1AT4BNTQmIyIGFSM0NjMyFhUUBg8BIQLG/bQBL0gsOj9ISqGkj4iUV3WoAXp+AQg+Siw0P0E1aYx9dlBtbJIAAAEAaf/1AuADLAAoAAABMjY1NCYjIgYVIzQ2MzIWFRQGBx4BFRQGIyImNTMUFjMyNjU0JisBNQGnSEFJSjtKoqeAkqNFP0hKsJOAtKNNRE1USk2DAdU6Ni46MipldnVwOFoaGF1GcXp0dTE6OzNBOXoAAAAAAQBKAAACIwWwAAUAACEjEQU1JQIjuf7gAdkE3Ah3ZQABAHL/9QLxAyEAHgAAGwEhFSEHPgE3NhYVFAYjIiY1NxQWMzI2NTQmIyIGB5MzAgD+kBkdUC6Gk5unirOhVEhUTE5HRUUQAVoBx4G/EhkBAo6CfY1tcAszN0VGRVEjIAACAHv/9QMAAywAGgAnAAABMhYXBy4BIyIGHQE+ATMyFhUUBiMiJj0BNDYTIgYHFRQWMzI2NTQmAd02aiwdKFA1V2skZkKGkbGRj7TIgkNWD1lIS1ZMAywTEHsQD19RRyQoiX13kKeK1oqm/lktKApRYks+Q0YAAAABAF4AAAKoAyEADAAAAQ4BHQEjNTQSNyE1IQKoim6imF3+WwJKAqKgx7x/f7sBEVd/AAAAAwBy//UDAwMsABcAIwAvAAABFAYHHgEVFAYjIiY1NDY3LgE1NDYzMhYDNCYjIgYVFBYzMjYDNCYjIgYVFBYzMjYC60hASla0jpS7WE5DSqyJhKeJXkRKY2JMRVwaTTtBUlRAOU4CUDxaGxxiQHJ6enJAYhwbWjxrcXH+LDZDQzY3PT0BmC82NDEwOjoAAAAAAgBp//UC6AMsABoAJwAAJTI2PQEOASMiJjU0NjMyFh0BFAYjIiYnNx4BEzI2NzU0JiMiBhUUFgGWTWEgVjKToLCRi7O+lDNsMxsrU0g/Ug5ZRkdTTXNVRkwjIo58dZipiet/mxERexEOARgwJBtQY1Q6RFAAAAAAAgB8//UDGwMsAA0AGwAAARQGIyImPQE0NjMyFhUnNCYjIgYdARQWMzI2NQMbtpmatrWZmrejXFJSWltTUloBG4qcnIrriZ2diQFPV1dP7FFXV1EAAQCPAowDCwMhAAMAAAEhNSEDC/2EAnwCjJUAAAMAngRCAmsGcwAEABAAHAAAATMXByMHNDYzMhYVFAYjIiY3FBYzMjY1NCYjIgYBsbkB2XKCY0lHYGBHSWNVMiUjMDAjJTIGcwO110heXUlJWVpIJDAwJCYyMwAAAgBvBHACvgXWAAUADwAAARMzFQMjJTQ2NxcOAR0BIwGGdMTfWf7pWlhJLCeoBIMBQhX+wlRXiy46LmdHUAAAAAEAXv/rA/oFxQAoAAABMzI2NTQmIyIGFSM0NjMyFhUUBgceARUUBCMiJDUzFBYzMjY1NCYrAQGGp4pzfoF5jrn2ys7qbnCHbv8Azsr+/LqSgoWQhJCnAzCEeIGCiHSt5dPKXbAwK7Z1y9/VwXeKh4qLgAAAAgA5AAAEUQWwAAoADwAAATMVIxEjESE1ATMBIREjBwOEzc24/W0Ch8T9fQHLAxsB6JX+rQFTawPy/DgCyUYAAAEAmv/rBBEFsAAeAAAbASEVIQM+ATc2EhUUAiMiJjUzFBYzMjY1NCYjIgYHsVQC1f3HMDByUcrj5OW88q+LdISMjYB6bBoCkQMfqf5cJS0CAv775OD++8fNfIOvn5GzRkwAAAACAIf/6wQzBcUAGgAnAAABMhYXBy4BIyIGHQE+ATMyEhUUAiMiABkBEAATIgYHFRQWMzI2NTQmAp9MkTIoNGlKoL9ApWTH4/PQ2P7vATCpapElqoaAipIFxSIbkRoe9c4jPEH+99Xl/ugBLwEeAR8BGwFT/XNVSnPO2MyclroAAAMAHv5KBBEETgAvAD8ATQAAASMeAR0BFAYjIiYnDgEVFBY7ATIWFRQEIyImNTQ2Ny4BNTQ2Ny4BPQE0NjMyFhchASImJw4BFRQWMzI2NTQmIwEUFjMyNj0BNCYjIgYVBBGZHh/tvStJIxkcQzytytH+3PTe8mFSHB0/NVVa68EoSyQBb/2MFSYTNUGLjKC/ZH7+q4dua4aGbW6FA6orYDcWmcwKCxQ0Iy4mj5aA1J54XIEqFzsoRmEmMZdcFp/HCgr79AIEGFw9SFx4R0tFAqRVe3tVFlh4eFgAAAABADsAAAP8BbAADAAAAQoBAwcjNxoBEyE1IQP8/7YnD7oPKefP/PYDwQUa/sH+G/6jmZkBYgIXAQiWAAABAFr+TARHBEkAIwAAEzIWFxsBMwETHgEzMjY3Bw4BIyImJwMBIwEDLgEjIgYjJz4Bwn9uO3P/u/6g0SFBLQ4OFAILJA5vc0KP/ufEAYOoI1M+CzcCARU8BEmJgv74AgT9L/4hS00CA5wGCXmWAUf9vwMQAYRWYgWSBQoAAwBm/+sEGAXFABgAJAAwAAABFAYHHgEVFAQjIiQ1NDY3NS4BNTQ2MzIWAzQmIyIGFRQWMzI2AzQmIyIGFRQWMzI2A/B/b4GV/v7W2v8AkX9teunGw++Ron+CnZuGgZ4pim5whodxb4cENXWpKy24fs3R0M5+uSwDKal0xMzN/JV7mpl8gI2OAyNwjol1c4aGAAAAAAIAZP/rBFgETgAUACIAACUjDgEjIgI9ARASMzIWFz8BMwMTIwEUFjMyNjc1LgEjIgYVA4MDNbeMydvazIm1NQMhsGpxsP11h5J3giIahnmTiOt+ggEb7xUBCgE6gHsB5v3i/eQB9arL07UmrN7twQACAGD/6wQnBbAAGwAsAAABFSEeARcWEh0BFAAjIgA9ATQSNzoBMzcmJCc1ExQWMzI2PQE0JicuASMiBhUDtP40HHRMsbL/AOPk/wDz2gkUCgEW/ug5LJWVlJZnSxcwHJ+gBbCSH2ZAnf73nxjt/twBJO0YwAEGGAIU9kBy/Eyo1NWnGHO1NQYGzJ0AAAIAtgAABLYFsAAJABMAADMRISAAERUQACEDETMyNj0BNCYjtgF3AVgBMf7P/qi+vvnX1/kFsP7W/svz/sv+1wUa+3ve6/bo3gAAAAACAHL/6wPsBE4AHwAqAAAhLgEnDgEjIiY1NDY7ATU0JiMiBhUjNDYzMhYVERQWFyUyNjc1IyIGFRQWAy0JCQI7rGivqfrjyHZ1d3O50dzNzQwQ/flopiTOkoxVKzsfRFadpKuhiWBXX0uFu5yz/ds6ajaKUTvia2VOUAAAAgC1AAAE8gWvAA4AFwAAARQGBwEVIwEhESMRITIWASEyNjU0JiMhBJeHfAFez/7A/ou5Afrv+fzXAUaWlJOc/r8EC4LDMP18EgJq/ZYFr9b+JouDf44AAAEAtgAABR0FsAAMAAABBxEjETMRNwEzCQEjAhanubmoAevV/bwCiugCrbH+BAWw/Sa2AiT9g/zNAAAAAAEAkgAABBQGGAAMAAABBxEjETMRNwEzCQEjAcN3urprAVTe/lQB19sB8nz+igYY/EN5AWb+Of2NAAAAAAEAtgAABPkFsAALAAABESMRMxEzATMJASMBb7m5DAJu5/1jAsbkArf9SQWw/XgCiP08/RQAAAAAAQCSAAAD8QYYAAwAAAEjESMRMxEzATMJASMBUQW6ugEBivD+KgIA5AH0/gwGGPxzAa/+Df25AAACAFT/6wP9BcUAGwAoAAAlMjY9AScOASMiAjU0ADMyABkBEAAjIiYnNx4BEzI2NzU0JiMiBhUUFgH/lq4DMJZe1/EBAsDmAQH+6uhPm0IdP35vcpQhlZJ0mo6A1tosAUlKAQPx6AEf/ur+5/6c/uD+2RwfkB4YAd9gTZzFwsylob4AAAACAJsAAAQZBI0ACgATAAABESMRITIWFRQGIyUhMjY1NCYjIQFVugHPzOPizf7rARV7enp7/usBpv5aBI3Np6nKlH9eYIIAAP//AIEEpQLYBbACBgCcAAD//wAAAAAAAAAAAgYAAwAA//8AJQIhAg0CtgIGAA8AAAACAC4AAAUFBbAADQAbAAAzESM1MxEhIAARFRAAIRMhETMyEj0BNCYjIREh1KamAbsBIgFU/qj+0C3+4/Do5uLa/v4BHQKalQKB/qb+5MX+4v6pApr9+wEF28ff//4VAAACAC4AAAUFBbAADQAbAAAzESM1MxEhIAARFRAAIRMhETMyEj0BNCYjIREh1KamAbsBIgFU/qj+0C3+4/Do5uLa/v4BHQKalQKB/qb+5MX+4v6pApr9+wEF28ff//4VAAABAAYAAAQYBhgAHAAAASERFz4BMzIWFREjETQmIyIGBxEjESM1MzUzFSECgv7nAzeiZ7G7uXR3V4gsuqmpugEZBNL+1QFQWMzd/VsCp42AUkj85gTSlbGxAAAAAAEAOwAABIoFsAAPAAABIxEjESM1MxEhNSEVIREzA5zduebm/jUET/413QM2/MoDNpUBT5aW/rEAAf/j/+wCXwVBAB8AAAERMxUjFTMVIxEUFjMyNjcXDgEjIiY1ESM1MzUjNTMRAXLQ0O3tNi8YMRUZGl0ucYDV1ZubBUH++Y2+lf69UD8HBoMRFY2eAUOVvo0BB///ACcAAAUiByICJgAjAAAABwBCARQBXf//ACcAAAUiBx8CJgAjAAAABwBzAc4BWf//ACcAAAUiB0YCJgAjAAAABwCaANABXf//ACcAAAUiB1ECJgAjAAAABwCgAMoBYP//ACcAAAUiBwwCJgAjAAAABwBoAKoBXP//ACcAAAUiB4gCJgAjAAAABwCeAVEBqP//ACcAAAUiB58CJgAjAAAABwHUAWEBLP//AIP+RATJBcUCJgAlAAAABwB3Adv/9///ALYAAAR1ByICJgAnAAAABwBCAOABXf//ALYAAAR1Bx8CJgAnAAAABwBzAZoBWf//ALYAAAR1B0YCJgAnAAAABwCaAJwBXf//ALYAAAR1BwwCJgAnAAAABwBoAHYBXP///9wAAAF8ByICJgArAAAABwBC/40BXf//AMMAAAJkBx8CJgArAAAABwBzAEYBWf////IAAAJPB0YCJgArAAAABwCa/0kBXf///8wAAAJ1BwwCJgArAAAABwBo/yMBXP//ALYAAAT+B1ECJgAwAAAABwCgAPsBYP//AIL/6wUNBzcCJgAxAAAABwBCATQBcv//AIL/6wUNBzQCJgAxAAAABwBzAe4Bbv//AIL/6wUNB1sCJgAxAAAABwCaAPABcv//AIL/6wUNB2YCJgAxAAAABwCgAOoBdf//AIL/6wUNByECJgAxAAAABwBoAMoBcf//AJb/6wTXByICJgA3AAAABwBCASYBXf//AJb/6wTXBx8CJgA3AAAABwBzAeABWf//AJb/6wTXB0YCJgA3AAAABwCaAOIBXf//AJb/6wTXBwwCJgA3AAAABwBoALwBXP//AB4AAATTBx0CJgA7AAAABwBzAaABV///AHL/7APsBeACJgBDAAAABwBCAJYAG///AHL/7APsBd0CJgBDAAAABwBzAVAAF///AHL/7APsBgQCJgBDAAAABgCaUhsAAP//AHL/7APsBg8CJgBDAAAABgCgTB4AAP//AHL/7APsBcoCJgBDAAAABgBoLBoAAP//AHL/7APsBkYCJgBDAAAABwCeANMAZv//AHL/7APsBl4CJgBDAAAABwHUAOP/6///AGH+RAPyBE4CJgBFAAAABwB3AUX/9///AGL/7APpBeECJgBHAAAABwBCAJsAHP//AGL/7APpBd4CJgBHAAAABwBzAVUAGP//AGL/7APpBgUCJgBHAAAABgCaVxwAAP//AGL/7APpBcsCJgBHAAAABgBoMRsAAP///7UAAAFVBcsCJgCKAAAABwBC/2YABv//AJsAAAI9BcgCJgCKAAAABgBzHwIAAP///8sAAAIoBe8CJgCKAAAABwCa/yIABv///6UAAAJOBbUCJgCKAAAABwBo/vwABf//AJEAAAP4Bg8CJgBQAAAABgCgZR4AAP//AGD/7AQnBeACJgBRAAAABwBCALMAG///AGD/7AQnBd0CJgBRAAAABwBzAW0AF///AGD/7AQnBgQCJgBRAAAABgCabxsAAP//AGD/7AQnBg8CJgBRAAAABgCgaR4AAP//AGD/7AQnBcoCJgBRAAAABgBoSRoAAP//AI3/7AP2BcsCJgBXAAAABwBCALEABv//AI3/7AP2BcgCJgBXAAAABwBzAWsAAv//AI3/7AP2Be8CJgBXAAAABgCabQYAAP//AI3/7AP2BbUCJgBXAAAABgBoRwUAAP//ABv+SwPkBcgCJgBbAAAABwBzASkAAv//ABv+SwPkBbUCJgBbAAAABgBoBQUAAP//ACcAAAUiBvoCJgAjAAAABwBuAM4BSv//AHL/7APsBbgCJgBDAAAABgBuUAgAAP//ACcAAAUiB0wCJgAjAAAABwCcAPsBnP//AHL/7APsBgoCJgBDAAAABgCcfVoAAAACACf+UAUiBbAAGgAdAAABMwEjDgEVFBYzMjY3Fw4BIyImNTQ2NwMhAyMBIQMCWaACKSVTWCMrHS8YDSBKNldpVVuJ/ZuPvQGDAfj6BbD6UD1lPCQmEAx4ExliW0d+NwF7/nwCGQKyAAIAcv5QA+0ETgAzAD4AACEuAScOASMiJjU0NjsBNTQmIyIGFSM0NjMyFhURFBYXIw4BFRQWMzI2NxcOASMiJjU0NjclMjY3NSMiBhUUFgMtCgoCOqxnq6343NF6cWmBue6/u98MEBNTWCMrHS8YDSBKNldpTlP+t2ilJdeBlF0zQiRMYamZnqxuY29jR33DuLL99jpqNj1lPCQmEAx4ExliW0R6NYtgRsd5VUtUAAD//wCD/+sEyQc0AiYAJQAAAAcAcwHXAW7//wBh/+wD8gXdAiYARQAAAAcAcwFBABf//wCD/+sEyQdbAiYAJQAAAAcAmgDZAXL//wBh/+wD8gYEAiYARQAAAAYAmkMbAAD//wCD/+sEyQciAiYAJQAAAAcAnQGoAXL//wBh/+wD8gXLAiYARQAAAAcAnQESABv//wCD/+sEyQdcAiYAJQAAAAcAmwDvAXP//wBh/+wD8gYFAiYARQAAAAYAm1kcAAD//wC2AAAE5wdHAiYAJgAAAAcAmwCoAV7//wBk/+wFMAYYACYARgAAAAcBkQPZBSz//wC2AAAEdQb6AiYAJwAAAAcAbgCaAUr//wBi/+wD6QW5AiYARwAAAAYAblUJAAD//wC2AAAEdQdMAiYAJwAAAAcAnADHAZz//wBi/+wD6QYLAiYARwAAAAcAnACCAFv//wC2AAAEdQcNAiYAJwAAAAcAnQFrAV3//wBi/+wD6QXMAiYARwAAAAcAnQEmABwAAQC2/lAEdQWwACAAAAEhESEVIw4BFRQWMzI2NxcOASMiJjU0NjcnIREhFSERIQQP/WADBjhTWCMrHS8YDSBKNldpTVAB/SkDtf0EAqACpv3vlT1lPCQmEAx4ExliW0N6MwMFsJb+IgACAGL+ZAPpBE4AKQAxAAAFIgA9ATQAMzISHQEhHgEzMjY3Fw4BBw4BFRQWMzI2NxcOASMiJjU0NjcDIgYHITU0JgJO5P74AQ+/3N39MwSdkWWTO0keSzBRVyMrHS8YDSBKNldpNDgkaZEUAg6AFAEn9C3sAS7+/uB5psw4M3sdMRE7ZTwkJhAMeBMZYls3ZS8DzKmHGnmd//8AtgAABHUHRwImACcAAAAHAJsAsgFe//8AYv/sA+kGBgImAEcAAAAGAJttHQAA//8Ahf/rBNsHWwImACkAAAAHAJoA0QFy//8AZv5MA/cGBAImAEkAAAAGAJpdGwAA//8Ahf/rBNsHYQImACkAAAAHAJwA/AGx//8AZv5MA/cGCgImAEkAAAAHAJwAiABa//8Ahf/rBNsHIgImACkAAAAHAJ0BoAFy//8AZv5MA/cFywImAEkAAAAHAJ0BLAAb//8Ahf3lBNsFxQImACkAAAAHAZEBq/62//8AZv5MA/cGbQImAEkAAAAHAaUBMwBW//8AtgAABP0HRgImACoAAAAHAJoA+gFd//8AkQAAA/oHRQImAEoAAAAHAJoAIwFc////xQAAAncHUQImACsAAAAHAKD/QwFg////ngAAAlAF+gImAIoAAAAHAKD/HAAJ////vwAAAokG+gImACsAAAAHAG7/RwFK////mAAAAmIFpAImAIoAAAAHAG7/IP/0////9QAAAkwHTAImACsAAAAHAJz/dAGc////zgAAAiUF9QImAIoAAAAHAJz/TQBF//8AIf5YAYEFsAImACsAAAAGAJ/vCAAA//8AAP5QAWAGGAImAEsAAAAGAJ/OAAAA//8AtwAAAYYHDQImACsAAAAHAJ0AFwFd//8Aw//rBf8FsAAmACsAAAAHACwCPwAA//8Aof5LA2MGGAAmAEsAAAAHAEwB/AAA//8AP//rBIsHOQImACwAAAAHAJoBhQFQ////tP5LAjkF3AImAJgAAAAHAJr/M//z//8Atv31BRwFsAImAC0AAAAHAZEBev7G//8Akv33BBQGGAImAE0AAAAHAZEBGP7I//8AtgAABCUG4AImAC4AAAAHAHMANwEa//8AoQAAAkMHXAImAE4AAAAHAHMAJQGW//8Atv33BCUFsAImAC4AAAAHAZEBdP7I//8AW/33AVoGGAImAE4AAAAHAZH///7I//8AtgAABCUFsQImAC4AAAAHAZEB2QTF//8AoQAAAq0GGAAmAE4AAAAHAZEBVgUs//8AtgAABCUFsAImAC4AAAAHAJ0Bxf3F//8AoQAAAq0GGAAmAE4AAAAHAJ0BPv23//8AtgAABP4HHwImADAAAAAHAHMB/wFZ//8AkQAAA/gF3QImAFAAAAAHAHMBaQAX//8Atv33BP4FsAImADAAAAAHAZEB2P7I//8Akf33A/gETgImAFAAAAAHAZEBQv7I//8AtgAABP4HRwImADAAAAAHAJsBFwFe//8AkQAAA/gGBQImAFAAAAAHAJsAgQAc////0gAAA/gGGAImAFAAAAAHAZH/dgUs//8Agv/rBQ0HDwImADEAAAAHAG4A7gFf//8AYP/sBCcFuAImAFEAAAAGAG5tCAAA//8Agv/rBQ0HYQImADEAAAAHAJwBGwGx//8AYP/sBCcGCgImAFEAAAAHAJwAmgBa//8Agv/rBQ0HYAImADEAAAAHAKEBdwFy//8AYP/sBD4GCQImAFEAAAAHAKEA9gAb//8AtQAABOIHHwImADQAAAAHAHMBkgFZ//8AkQAAAuIF3QImAFQAAAAHAHMAxAAX//8Atf33BOIFrwImADQAAAAHAZEBa/7I//8AWP33ArEETgImAFQAAAAHAZH//P7I//8AtQAABOIHRwImADQAAAAHAJsAqgFe//8AaQAAAtQGBQImAFQAAAAGAJvdHAAA//8AWv/rBIoHNAImADUAAAAHAHMBiQFu//8AZv/sA8IF3QImAFUAAAAHAHMBPAAX//8AWv/rBIoHWwImADUAAAAHAJoAiwFy//8AZv/sA8IGBAImAFUAAAAGAJo+GwAA//8AWv5EBIoFxQImADUAAAAHAHcBjf/3//8AZv5FA8IETgImAFUAAAAHAHcBQP/4//8AWv3jBIoFxQImADUAAAAHAZEBYv60//8AZv3kA8IETgImAFUAAAAHAZEBFf61//8AWv/rBIoHXAImADUAAAAHAJsAoQFz//8AZv/sA8IGBQImAFUAAAAGAJtUHAAA//8AO/31BIoFsAImADYAAAAHAZEBZf7G//8AHf3tAk4FQQImAFYAAAAHAZEArP6+//8AO/5VBIoFsAImADYAAAAHAHcBkAAI//8AHf5NAoEFQQImAFYAAAAHAHcA1wAA//8AOwAABIoHRgImADYAAAAHAJsApAFd//8AHf/sAuwGMQAmAFYAAAAHAZEBlQVF//8Alv/rBNcHUQImADcAAAAHAKAA3AFg//8Ajf/sA/YF+gImAFcAAAAGAKBnCQAA//8Alv/rBNcG+gImADcAAAAHAG4A4AFK//8Ajf/sA/YFpAImAFcAAAAGAG5r9AAA//8Alv/rBNcHTAImADcAAAAHAJwBDQGc//8Ajf/sA/YF9QImAFcAAAAHAJwAmABF//8Alv/rBNcHiAImADcAAAAHAJ4BYwGo//8Ajf/sA/YGMQImAFcAAAAHAJ4A7gBR//8Alv/rBNcHSwImADcAAAAHAKEBaQFd//8Ajf/sBDwF9AImAFcAAAAHAKEA9AAGAAEAlv5uBNcFsAAnAAABERQGBw4BFRQWMzI2NxcOASMiJjU0NjciBiMiJDURMxEUFjMyNjURBNeRhFNYIysdLxgNIEo2V2kuMgcbBvT+3Lq9oanHBbD8JaXaOD1lPCQmEAx4ExliWzRhLAH48gPb/CWrqqqrA9sAAAEAjf5QBAkEOgAnAAAhDgEVFBYzMjY3Fw4BIyImNTQ2Ny8BDgEjIiY1ETMRFBYzMjY3ETMRA/VTWCMrHS8YDSBKNldpUFYMAzKebbTCumhxcIkkuT1lPCQmEAx4ExliW0R8NpsBV1zd9AJ9/YGyg1dTAwr7xgAA//8ASAAABsIHRgImADkAAAAHAJoBrQFd//8AMAAABdgF7wImAFkAAAAHAJoBLgAG//8AHgAABNMHRAImADsAAAAHAJoAogFb//8AG/5LA+QF7wImAFsAAAAGAJorBgAA//8AHgAABNMHCgImADsAAAAHAGgAfAFa//8AYQAABG0HHwImADwAAAAHAHMBiAFZ//8AXgAAA7gFyAImAFwAAAAHAHMBMwAC//8AYQAABG0HDQImADwAAAAHAJ0BWQFd//8AXgAAA7gFtgImAFwAAAAHAJ0BBAAG//8AYQAABG0HRwImADwAAAAHAJsAoAFe//8AXgAAA7gF8AImAFwAAAAGAJtLBwAA////8gAAB1cHHwImAH8AAAAHAHMC0QFZ//8APf/rBnwF3gImAIQAAAAHAHMCggAY//8Ac/+jBP4HXQImAIEAAAAHAHMB4gGX//8AYP95BCcF3AImAIcAAAAHAHMBQAAW////8wAABC0EjQImAakAAAAHAdP/ZP97////8wAABC0EjQImAakAAAAHAdP/ZP97//8ARwAAA88EjQImAbgAAAAGAdMx9wAA//8AKQAABIMF3wImAaYAAAAHAEIAvwAa//8AKQAABIMF3AImAaYAAAAHAHMBeQAW//8AKQAABIMGAwImAaYAAAAGAJp7GgAA//8AKQAABIMGDgImAaYAAAAGAKB1HQAA//8AKQAABIMFyQImAaYAAAAGAGhVGQAA//8AKQAABIMGRQImAaYAAAAHAJ4A/ABl//8AKQAABIMGXQImAaYAAAAHAdQBDP/q//8Acv5HBCQEnQImAagAAAAHAHcBb//6//8AmwAAA8cF3wImAaoAAAAHAEIAjgAa//8AmwAAA8cF3AImAaoAAAAHAHMBSAAW//8AmwAAA8cGAwImAaoAAAAGAJpKGgAA//8AmwAAA8cFyQImAaoAAAAGAGgkGQAA////swAAAVQF3wImAa4AAAAHAEL/ZAAa//8AmwAAAjsF3AImAa4AAAAGAHMdFgAA////yQAAAiYGAwImAa4AAAAHAJr/IAAa////owAAAkwFyQImAa4AAAAHAGj++gAZ//8AmwAABHIGDgImAbMAAAAHAKAAlgAd//8Acv/vBFcF7wImAbQAAAAHAEIAwAAq//8Acv/vBFcF7AImAbQAAAAHAHMBegAm//8Acv/vBFcGEwImAbQAAAAGAJp8KgAA//8Acv/vBFcGHgImAbQAAAAGAKB2LQAA//8Acv/vBFcF2QImAbQAAAAGAGhWKQAA//8AjP/vBHAF4AImAbkAAAAHAEIA4AAb//8AjP/vBHAF3QImAbkAAAAHAHMBmgAX//8AjP/vBHAGBAImAbkAAAAHAJoAnAAb//8AjP/vBHAFygImAbkAAAAGAGh2GgAA//8AIAAABDAF2wImAb0AAAAHAHMBSQAV//8AKQAABIMFtwImAaYAAAAGAG55BwAA//8AKQAABIMGCQImAaYAAAAHAJwApgBZAAIAKf5QBIMEjQAaAB0AAAEzASMOARUUFjMyNjcXDgEjIiY1NDY3JyEDIwEhAwH/rwHVN1NYIysdLxgNIEo2V2lcYWP9+GnAAWIBlswEjftzPWU8JCYQDHgTGWJbSYM4//7wAaQCDQD//wBy/+8EJAXsAiYBqAAAAAcAcwFrACb//wBy/+8EJAYTAiYBqAAAAAYAmm0qAAD//wBy/+8EJAXaAiYBqAAAAAcAnQE8ACr//wBy/+8EJAYUAiYBqAAAAAcAmwCDACv//wCbAAAELQYEAiYBqQAAAAYAmy8bAAD//wCbAAADxwW3AiYBqgAAAAYAbkgHAAD//wCbAAADxwYJAiYBqgAAAAYAnHVZAAD//wCbAAADxwXKAiYBqgAAAAcAnQEZABoAAQCb/lADxwSNACAAAAEhESEVIw4BFRQWMzI2NxcOASMiJjU0NjcnIREhFSERIQNw/eUCckhTWCMrHS8YDSBKNldpTVAB/cwDLP2OAhsCFf5+kz1lPCQmEAx4ExliW0N6MwMEjZT+sP//AJsAAAPHBgQCJgGqAAAABgCbYBsAAP//AHL/7wRHBhMCJgGsAAAABgCadSoAAP//AHL/7wRHBhkCJgGsAAAABwCcAKAAaf//AHL/7wRHBdoCJgGsAAAABwCdAUQAKv//AHL95wRHBJ0CJgGsAAAABwGRAVL+uP//AJsAAARVBgMCJgGtAAAABwCaAIMAGv///5wAAAJOBg4CJgGuAAAABwCg/xoAHf///5YAAAJgBbcCJgGuAAAABwBu/x4AB////8wAAAIjBgkCJgGuAAAABwCc/0sAWf////f+UAFXBI0CJgGuAAAABgCfxQAAAP//AI8AAAFeBcoCJgGuAAAABgCd7xoAAP//AEH/7wQ9BfkCJgGvAAAABwCaATcAEP//AJv98wRABI0CJgGwAAAABwGRAP/+xP//AJsAAANqBcECJgGxAAAABgBzI/sAAP//AJv99QNqBI0CJgGxAAAABwGRANz+xv//AJsAAANqBI4CJgGxAAAABwGRAUUDov//AJsAAANqBI0CJgGxAAAABwCdATH9Jv//AJsAAARyBdwCJgGzAAAABwBzAZoAFv//AJv99QRyBI0CJgGzAAAABwGRAXP+xv//AJsAAARyBgQCJgGzAAAABwCbALIAG///AHL/7wRXBccCJgG0AAAABgBuehcAAP//AHL/7wRXBhkCJgG0AAAABwCcAKcAaf//AHL/7wRXBhgCJgG0AAAABwChAQMAKv//AJsAAAQ6BdwCJgG2AAAABwBzASYAFv//AJv99QQ6BI0CJgG2AAAABwGRAP/+xv//AJsAAAQ6BgQCJgG2AAAABgCbPhsAAP//AF3/7wQNBewCJgG3AAAABwBzAVQAJv//AF3/7wQNBhMCJgG3AAAABgCaVioAAP//AF3+RwQNBJ0CJgG3AAAABwB3AVj/+v//AF3/7wQNBhQCJgG3AAAABgCbbCsAAP//AEf99QPPBI0CJgG4AAAABwGRAQP+xv//AEcAAAPPBgMCJgG4AAAABgCbQhoAAP//AIz/7wRwBg8CJgG5AAAABwCgAJYAHv//AIz/7wRwBbgCJgG5AAAABwBuAJoACP//AIz/7wRwBgoCJgG5AAAABwCcAMcAWv//AIz/7wRwBkYCJgG5AAAABwCeAR0AZv//AIz/7wRwBgkCJgG5AAAABwChASMAGwABAIz+ewRwBI0AJwAAAREUBgcOARUUFjMyNjcXDgEjIiY1NDY3IgYjIiQ1ETMRFBYzMjY1EQRwcGhTWCMrHS8YDSBKNldpKi0HGAbh/u+4rI6QqgSN/QF9sjQ9ZTwkJhAMeBMZYlsyWysB2McC//0BgIyMgAL/AP//AEEAAAXABgMCJgG7AAAABwCaASEAGv//ACAAAAQwBgICJgG9AAAABgCaSxkAAP//ACAAAAQwBcgCJgG9AAAABgBoJRgAAP//AE4AAAPYBdwCJgG+AAAABwBzAScAFv//AE4AAAPYBcoCJgG+AAAABwCdAPgAGv//AE4AAAPYBgQCJgG+AAAABgCbPxsAAP//AF3/7wh8BJ0AJgG3AAAABwG3BG8AAP//ACcAAAUiBngCJgAjAAAABgCpOgAAAP///+YAAATZBnoAJgAnZAAABwCp/yMAAv//ABMAAAVhBnoAJgAqZAAABwCp/1AAAv//ABkAAAHgBnkAJgArZAAABwCp/1YAAf//AFL/6wUhBngAJgAxFAAABgCpjwAAAP///40AAAU3BngAJgA7ZAAABwCp/soAAP//AD8AAAThBngAJgC1FAAABwCp/3wAAP///8j/6wKDBj8CJgC+AAAABwCq/yf/t///ACcAAAUiBbACBgAjAAD//wC2AAAEqQWwAgYAJAAA//8AtgAABHUFsAIGACcAAP//AGEAAARtBbACBgA8AAD//wC2AAAE/QWwAgYAKgAA//8AwwAAAXwFsAIGACsAAP//ALYAAAUcBbACBgAtAAD//wC2AAAGTQWwAgYALwAA//8AtgAABP4FsAIGADAAAP//AIL/6wUNBcUCBgAxAAD//wC2AAAExAWwAgYAMgAA//8AOwAABIoFsAIGADYAAP//AB4AAATTBbACBgA7AAD//wBBAAAE0AWwAgYAOgAA////zAAAAnUHDAImACsAAAAHAGj/IwFc//8AHgAABNMHCgImADsAAAAHAGgAfAFa//8AZP/rBHcGegImALYAAAAHAKkBdQAC//8AY//tA+wGeQImALoAAAAHAKkBKwAB//8Akf5hA/AGegImALwAAAAHAKkBRgAC//8Aw//rAmsGZgImAL4AAAAGAKkq7gAA//8Aj//rA/YGPwImAMYAAAAGAKoetwAA//8AmgAABD8EOgIGAIsAAP//AGD/7AQnBE4CBgBRAAD//wCa/mAD7gQ6AgYAdAAA//8ALgAAA98EOgIGAFgAAP//AC4AAAPPBDoCBgBaAAD////T/+sCfAW1AiYAvgAAAAcAaP8qAAX//wCP/+sD9gW1AiYAxgAAAAYAaCEFAAD//wBg/+wEJwZ6AiYAUQAAAAcAqQFKAAL//wCP/+sD9gZmAiYAxgAAAAcAqQEi/+7//wB6/+sGGQZjAiYAyQAAAAcAqQJT/+v//wC2AAAEdQcMAiYAJwAAAAcAaAB2AVz//wC1AAAEMAcfAiYArAAAAAcAcwGYAVkAAQBa/+sEigXFACUAAAE0JicuATU0JDMyABUjNCYjIgYVFBYXHgEVFAQjIiQ1MxQWMzI2A9CWx+z+ARPh8QEYuaykm6CpyOrt/uXr3/61udOenLABbmiFMTjQpa3f/v62hJ6FbmJ/MTvYp7PS6M+RkX4AAP//AMMAAAF8BbACBgArAAD////MAAACdQcMAiYAKwAAAAcAaP8jAVz//wA//+sDwAWwAgYALAAA//8AtgAABRwFsAIGAC0AAP//ALYAAAUcBscCJgAtAAAABwBzAYwBAf//AFH/6wTIB0wCJgDZAAAABwCcANoBnP//ACcAAAUiBbACBgAjAAD//wC2AAAEqQWwAgYAJAAA//8AtQAABDAFsAIGAKwAAP//ALYAAAR1BbACBgAnAAD//wC2AAAE/gdMAiYA1wAAAAcAnAExAZz//wC2AAAGTQWwAgYALwAA//8AtgAABP0FsAIGACoAAP//AIL/6wUNBcUCBgAxAAD//wC2AAAE/wWwAgYAsQAA//8AtgAABMQFsAIGADIAAP//AIP/6wTJBcUCBgAlAAD//wA7AAAEigWwAgYANgAA//8AQQAABNAFsAIGADoAAP//AHL/7APsBE4CBgBDAAD//wBi/+wD6QROAgYARwAA//8AnAAABAEF9QImAOsAAAAHAJwAogBF//8AYP/sBCcETgIGAFEAAP//AJH+YAQkBE4CBgBSAAAAAQBh/+wD8gROABsAACUyNjczDgEjIgI9ATQSMzIWFyMuASMiBh0BFBYCQ2eXAbAB/6/u9PTuv+8BsAGOcKGHhoF4XJTVAS/tKuwBMNysaIrfpyqr3AAA//8AG/5LA+QEOgIGAFsAAP//AC4AAAPPBDoCBgBaAAD//wBi/+wD6QXLAiYARwAAAAYAaDEbAAD//wCaAAADRwXIAiYA5wAAAAcAcwDVAAL//wBm/+wDwgROAgYAVQAA//8AoQAAAVoGGAIGAEsAAP///6UAAAJOBbUCJgCKAAAABwBo/vwABf///7b+SwFnBhgCBgBMAAD//wCcAAAEPwXHAiYA7AAAAAcAcwFDAAH//wAb/ksD5AX1AiYAWwAAAAYAnFZFAAD//wBIAAAGwgciAiYAOQAAAAcAQgHxAV3//wAwAAAF2AXLAiYAWQAAAAcAQgFyAAb//wBIAAAGwgcfAiYAOQAAAAcAcwKrAVn//wAwAAAF2AXIAiYAWQAAAAcAcwIsAAL//wBIAAAGwgcMAiYAOQAAAAcAaAGHAVz//wAwAAAF2AW1AiYAWQAAAAcAaAEIAAX//wAeAAAE0wcgAiYAOwAAAAcAQgDmAVv//wAb/ksD5AXLAiYAWwAAAAYAQm8GAAD//wBnBCMA/QYYAgYACQAA//8AaQQUAh8GGAIGAAQAAP//AKkAAAN1BbAAJgQbAAAABwQbAg8AAP//AEIAAAQYBi0AJgBIAAAABwBOAr4AAP///7T+SwJABd0CJgCYAAAABwCb/0n/9P//ADAD5wFHBhgCBgFmAAD//wC2AAAGTQcfAiYALwAAAAcAcwKpAVn//wCQAAAGcgXdAiYATwAAAAcAcwK7ABf//wAn/ocFIgWwAiYAIwAAAAcAogFPAAD//wBy/ocD7AROAiYAQwAAAAcAogCeAAD///8+/+sFDQaiAiYAMQAAAAcB1f7PAMz//wBCAAAGiwYtACYASAAAAAcBkgK+AAD//wBCAAAG1gYtACYASAAAACcASAK+AAAABwBOBXwAAP//ALYAAAR1ByICJgAnAAAABwBCAOABXf//ALYAAAT+ByICJgDXAAAABwBCAUoBXf//AGL/7APpBeECJgBHAAAABwBCAJsAHP//AJwAAAQBBcsCJgDrAAAABwBCALsABv//AF0AAAUYBbACBgC0AAD//wBf/ikFQwQ6AgYAyAAA//8AFwAABNoHRwImARQAAAAHAKcENwFZ////+QAABAsGHwImARUAAAAHAKcD0gAx//8AYP5LCGwETgAmAFEAAAAHAFsEiAAA//8Agv5LCXQFxQAmADEAAAAHAFsFkAAA//8AUf5RBGcFxQImANYAAAAHAZwBnP+4//8AWP5SA6wETAImAOoAAAAHAZwBQ/+5//8Ag/5RBMkFxQImACUAAAAHAZwB7v+4//8AYf5RA/IETgImAEUAAAAHAZwBWP+4//8AHgAABNMFsAIGADsAAP//AC7+YAPfBDoCBgC4AAD//wDDAAABfAWwAgYAKwAA//8AGwAABygHTAImANUAAAAHAJwB+AGc//8AFQAABgQF9QImAOkAAAAHAJwBjQBF//8AwwAAAXwFsAIGACsAAP//ACcAAAUiB0wCJgAjAAAABwCcAPsBnP//AHL/7APsBgoCJgBDAAAABgCcfVoAAP//ACcAAAUiBwwCJgAjAAAABwBoAKoBXP//AHL/7APsBcoCJgBDAAAABgBoLBoAAP////IAAAdXBbACBgB/AAD//wA9/+sGfAROAgYAhAAA//8AtgAABHUHTAImACcAAAAHAJwAxwGc//8AYv/sA+kGCwImAEcAAAAHAJwAggBb//8AX//rBRAG3gImAUEAAAAHAGgAfQEu//8AYv/sA+kETwIGAJkAAP//AGL/7APpBcsCJgCZAAAABgBoMRsAAP//ABsAAAcoBwwCJgDVAAAABwBoAacBXP//ABUAAAYEBbUCJgDpAAAABwBoATwABf//AFH/6wRnByECJgDWAAAABwBoAGEBcf//AFj/7QOsBckCJgDqAAAABgBoCBkAAP//ALYAAAT+BvoCJgDXAAAABwBuAQQBSv//AJwAAAQBBaQCJgDrAAAABgBudfQAAP//ALYAAAT+BwwCJgDXAAAABwBoAOABXP//AJwAAAQBBbUCJgDrAAAABgBoUQUAAP//AIL/6wUNByECJgAxAAAABwBoAMoBcf//AGD/7AQnBcoCJgBRAAAABgBoSRoAAP//AHP/6wT+BcUCBgESAAD//wBg/+wEJwROAgYBEwAA//8Ac//rBP4HBwImARIAAAAHAGgA0gFX//8AYP/sBCcF5gImARMAAAAGAGgyNgAA//8Asf/sBPYHIgImAOIAAAAHAGgAtwFy//8AZP/rA+AFygImAPoAAAAGAGgmGgAA//8AUf/rBMgG+gImANkAAAAHAG4ArQFK//8AG/5LA+QFpAImAFsAAAAGAG4p9AAA//8AUf/rBMgHDAImANkAAAAHAGgAiQFc//8AG/5LA+QFtQImAFsAAAAGAGgFBQAA//8AUf/rBMgHSwImANkAAAAHAKEBNgFd//8AG/5LA/oF9AImAFsAAAAHAKEAsgAG//8AlwAABMQHDAImANwAAAAHAGgAswFc//8AZwAAA70FtQImAPQAAAAGAGgOBQAA//8AtQAABjUHDAAmAOEPAAAnACsEuQAAAAcAaAF9AVz//wCdAAAFfwW1ACYA+QAAACcAigQqAAAABwBoARcABf//AEH+SwUXBbACJgA6AAAABwGaA7AAAP//AC7+SwQfBDoCJgBaAAAABwGaArgAAP//AGT/7APwBhgCBgBGAAD//wAw/ksFrAWwAiYA2AAAAAcBmgRFAAD//wAo/ksEuwQ6AiYA7QAAAAcBmgNUAAD//wAn/rEFIgWwAiYAIwAAAAcAqAUBAAD//wBy/rED7AROAiYAQwAAAAcAqARQAAD//wAnAAAFIgfGAiYAIwAAAAcApgT1AVP//wBy/+wD7AaEAiYAQwAAAAcApgR3ABH//wAnAAAFIgeoAiYAIwAAAAcBowDKARb//wBy/+wEpAZnAiYAQwAAAAYBo0zVAAD//wAnAAAFIgelAiYAIwAAAAcBogDOASX///+u/+wD7AZkAiYAQwAAAAYBolDkAAD//wAnAAAFIgfbAiYAIwAAAAcBoQDPAQ3//wBy/+wEPQaaAiYAQwAAAAYBoVHMAAD//wAnAAAFIgflAiYAIwAAAAcBoADOARP//wBy/+wD7AakAiYAQwAAAAYBoFDSAAD//wAn/rEFIgdGAiYAIwAAACcAmgDQAV0ABwCoBQEAAP//AHL+sQPsBgQCJgBDAAAAJgCaUhsABwCoBFAAAAAA//8AJwAABSIH3QImACMAAAAHAZ8A8QFU//8Acv/sA+wGmwImAEMAAAAGAZ9zEgAA//8AJwAABSIH4AImACMAAAAHAaQA9QFn//8Acv/sA+wGngImAEMAAAAGAaR3JQAA//8AJwAABSIISwImACMAAAAHAZ4A9QFJ//8Acv/sA+wHCQImAEMAAAAGAZ53BwAA//8AJwAABSIIHwImACMAAAAHAZ0A9QFR//8Acv/sA+wG3QImAEMAAAAGAZ13DwAA//8AJ/6xBSIHTAImACMAAAAnAJwA+wGcAAcAqAUBAAD//wBy/rED7AYKAiYAQwAAACYAnH1aAAcAqARQAAAAAP//ALb+uwR1BbACJgAnAAAABwCoBMgACv//AGL+sQPpBE4CJgBHAAAABwCoBJIAAP//ALYAAAR1B8YCJgAnAAAABwCmBMEBU///AGL/7APpBoUCJgBHAAAABwCmBHwAEv//ALYAAAR1B1ECJgAnAAAABwCgAJYBYP//AGL/7APpBhACJgBHAAAABgCgUR8AAP//ALYAAATuB6gCJgAnAAAABwGjAJYBFv//AGL/7ASpBmgCJgBHAAAABgGjUdYAAP////gAAAR1B6UCJgAnAAAABwGiAJoBJf///7P/7APpBmUCJgBHAAAABgGiVeUAAP//ALYAAASHB9sCJgAnAAAABwGhAJsBDf//AGL/7ARCBpsCJgBHAAAABgGhVs0AAP//ALYAAAR1B+UCJgAnAAAABwGgAJoBE///AGL/7APpBqUCJgBHAAAABgGgVdMAAP//ALb+uwR1B0YCJgAnAAAAJwCaAJwBXQAHAKgEyAAK//8AYv6xA+kGBQImAEcAAAAmAJpXHAAHAKgEkgAAAAD//wDDAAACAQfGAiYAKwAAAAcApgNtAVP//wCbAAAB2gZwAiYAigAAAAcApgNG//3//wC3/rkBhgWwAiYAKwAAAAcAqAN0AAj//wCW/rsBZQYYAiYASwAAAAcAqANTAAr//wCC/qkFDQXFAiYAMQAAAAcAqAUd//j//wBg/qgEJwROAiYAUQAAAAcAqASb//f//wCC/+sFDQfbAiYAMQAAAAcApgUVAWj//wBg/+wEJwaEAiYAUQAAAAcApgSUABH//wCC/+sFQge9AiYAMQAAAAcBowDqASv//wBg/+wEwQZnAiYAUQAAAAYBo2nVAAD//wBM/+sFDQe6AiYAMQAAAAcBogDuATr////L/+wEJwZkAiYAUQAAAAYBom3kAAD//wCC/+sFDQfwAiYAMQAAAAcBoQDvASL//wBg/+wEWgaaAiYAUQAAAAYBoW7MAAD//wCC/+sFDQf6AiYAMQAAAAcBoADuASj//wBg/+wEJwakAiYAUQAAAAYBoG3SAAD//wCC/qkFDQdbAiYAMQAAACcAmgDwAXIABwCoBR3/+P//AGD+qAQnBgQCJgBRAAAAJgCabxsABwCoBJv/9wAA//8Acf/rBZ0HDwImAJQAAAAHAHMB5gFJ//8AYP/sBLoF3QImAJUAAAAHAHMBbQAX//8Acf/rBZ0HEgImAJQAAAAHAEIBLAFN//8AYP/sBLoF4AImAJUAAAAHAEIAswAb//8Acf/rBZ0HtgImAJQAAAAHAKYFDQFD//8AYP/sBLoGhAImAJUAAAAHAKYElAAR//8Acf/rBZ0HQQImAJQAAAAHAKAA4gFQ//8AYP/sBLoGDwImAJUAAAAGAKBpHgAA//8Acf6xBZ0GNgImAJQAAAAHAKgFCQAA//8AYP6oBLoEsAImAJUAAAAHAKgEm//3//8Alv6qBNcFsAImADcAAAAHAKgFDP/5//8Ajf6xA/YEOgImAFcAAAAHAKgEVwAA//8Alv/rBNcHxgImADcAAAAHAKYFBwFT//8Ajf/sA/YGcAImAFcAAAAHAKYEkv/9//8Alv/rBiYHHwImAJYAAAAHAHMB3QFZ//8Ajf/sBRAFyAImAJcAAAAHAHMBawAC//8Alv/rBiYHIgImAJYAAAAHAEIBIwFd//8Ajf/sBRAFywImAJcAAAAHAEIAsQAG//8Alv/rBiYHxgImAJYAAAAHAKYFBAFT//8Ajf/sBRAGcAImAJcAAAAHAKYEkv/9//8Alv/rBiYHUQImAJYAAAAHAKAA2QFg//8Ajf/sBRAF+gImAJcAAAAGAKBnCQAA//8Alv6pBiYGDQImAJYAAAAHAKgFCf/4//8Ajf6xBRAEkQImAJcAAAAHAKgEVwAA//8AHv67BNMFsAImADsAAAAHAKgEzgAK//8AG/4UA+QEOgImAFsAAAAHAKgFIv9j//8AHgAABNMHxAImADsAAAAHAKYExwFR//8AG/5LA+QGcAImAFsAAAAHAKYEUP/9//8AHgAABNMHTwImADsAAAAHAKAAnAFe//8AG/5LA+QF+gImAFsAAAAGAKAlCQAAAAIAZP/sBLEGGAAaACgAAAEjESMnDgEjIgI9ARASMzIWFzcRITUhNTMVMwEUFjMyNjcRLgEjIgYVBLHBoRA2mGnJ29rMZJI0A/7+AQK5wfxsh5JeeikofFuTiATS+y6HTk0BGu8VAQoBOkhGAQERlbGx/I6qxVJMAfZIUurAAAD//wBk/u4EsQYYACYARgAAACcB0wGmAkYABwBBAKP/g///ALb+mQVbBbACJgAtAAAABwGcBDoAAP//AJz+mQRpBDoCJgDsAAAABwGcA0gAAP//ALb+mQWHBbACJgAqAAAABwGcBGYAAP//AJz+mQSKBDoCJgDvAAAABwGcA2kAAP//ADv+mQSKBbACJgA2AAAABwGcAigAAP//ACj+mQOwBDoCJgDxAAAABwGcAa4AAP//AEH+mQTpBbACJgA6AAAABwGcA8gAAP//AC7+mQPxBDoCJgBaAAAABwGcAtAAAP//AJf+mQVOBbACJgDcAAAABwGcBC0AAP//AGf+mQRGBDsCJgD0AAAABwGcAyUAAP//AJf+mQTEBbACJgDcAAAABwGcAxkAAP//AGf+mQO9BDsCJgD0AAAABwGcAhAAAP//ALX+mQQwBbACJgCsAAAABwGcANcAAP//AJr+mQNHBDoCJgDnAAAABwGcAJ4AAP//ABv+mQdqBbACJgDVAAAABwGcBkkAAP//ABX+mQYlBDoCJgDpAAAABwGcBQQAAP//AEf+VAXABcMCJgE7AAAABwGcAwb/u////+P+WARZBE4CJgE8AAAABwGcAgH/v///AJEAAAP6BhgCBgBKAAAAAv/UAAAEsQWwABIAGwAAASMVITIWFRQGIyERIzUzNTMVMwMRITI2NTQmIwJQ8QFo7vz97f3f0tK58fEBaJyUlJwEUPjhx8joBFCVy8v93v3Sn355mAAAAAL/1AAABLEFsAASABsAAAEjFSEyFhUUBiMhESM1MzUzFTMDESEyNjU0JiMCUPEBaO78/e3939LSufHxAWiclJScBFD44cfI6ARQlcvL/d790p9+eZgAAAABAAMAAAQwBbAADQAAASERIxEjNTMRIRUhESECf/7vubKyA3v9PgERAqz9VAKslQJvlv4nAAAAAAH//AAAA0cEOgANAAABIREjESM1MxEhFSERIQJ4/ty6np4Crf4NASQB3/4hAd+VAcaX/tEAAAAAAf/1AAAFMAWwABQAAAEjESMRIzUzNTMVMxUjETMBMwkBIwIzsLnV1bnu7p8CEdT9wwJm4wKU/WwEhZWWlpX+pAKH/T79EgAAAf/YAAAEKAYYABQAAAEjESMRIzUzNTMVMxUjETMBMwkBIwHhgbrOzrr09H4BO9v+hgGu2wH2/goEwZXCwpX9zAGt/hP9swD//wC2/ooFtwdMAiYA1wAAACcAnAExAZwABwAOBIP/vv//AJz+igS6BfUCJgDrAAAAJwCcAKIARQAHAA4Dhv++//8Atv6KBbYFsAImACoAAAAHAA4Egv++//8AnP6KBLkEOgImAO8AAAAHAA4Dhf++//8Atv6KBwYFsAImAC8AAAAHAA4F0v++//8Anf6KBgsEOgImAO4AAAAHAA4E1/++//8AMP6KBa0FsAImANgAAAAHAA4Eef++//8AKP6KBLwEOgImAO0AAAAHAA4DiP++AAEAHgAABNMFsAAQAAAJATMBMxUjBxEjEScjNTMBMwJ4AYfU/ld+zwi4Aeya/ljUAr4C8vz2lQ/9/gIPApUDCgABAC7+YAPfBDoAEQAABSMRIxEjNTMBMwEXMzcBMwEzA0rmutzB/p+9AQcWAxcBAL3+oskM/mwBlJUDsf0AXl4DAPxPAAEAQQAABNAFsAARAAABIwEjCQEjASM1MwEzCQEzATMDzbABs9z+lv6X4AGyopX+Zt4BXAFg3/5lowKe/WICSP24Ap6VAn39wwI9/YMAAAAAAQAuAAADzwQ6ABEAAAEjASMLASMBIzUzATMbATMBMwM+rwFA1fr62AFBraL+1dbt8Nj+1qQB4f4fAZ7+YgHhlQHE/m0Bk/48AAAA//8AY//tA+wETAIGALoAAP//ABsAAARzBbACJgAoAAAABwHT/4z+fv//ALsCjAXzAyEARgGGrwBmZkAAAAIAqQAAAWYFsAADAAcAAAEjETMTIzUzAWS5uQK9vQHeA9L6UMgAAAAAAAAAAAAAAAAAGgBSAJIA6AFAAVABcgGWAboB0gHoAfYCAgIQAkACUAJ6ArQC1AMGA0YDZAOuA/AD/AQIBCAENARMBHwE8AUMBUIFdAWaBbQFygYABhgGJAZABlwGbAaQBqgG3gcCB0AHeAeyB8YH5gf+CCoISghiCHgIjAiaCKwIxAjSCOAJHglUCYAJtAnmCgoKTgpyCoQKqArECtALCgsuC1wLkgvGC+YMHgxEDGgMgAyqDMgM8g0IDTgNRg10DZ4Nsg3mDhoOZg6QDqQPCA8cD3IPsg++D84QMhBAEGYQhhCwEOoQ+BEgETYRRBFgEXIRnBGoEboRzBHeEg4SOBJaEqwS0hMME2gTthPQFBwUUhR8FIgUpBTAFNgVAhU2FXQVyBXkFhoWXBaWFsAW7hcMF0AXVBdoF4IXkBe2F9gX+BgOGDQYQhhQGFoYeBiOGJwYqhjEGMwY3hj0GTAZRhliGXQZkhnQGfoaNBp4Grga1BscG1YbjhuyG+ocCBw+HIgcsBzkHRgdTh1yHZgd1h4IHkgehB7AHwYfNB9qH6If0h/6IBIgOiBmIJIgziDmIQYhLiFwIYghqiHEIeQiDCI2IloijiLMIvYjOCNuI4AjqiPWJBAkKCREJGYkhCScJK4kwiUcJTQlViVwJZAluCXkJggmNiZuJpgm1icGJzwnbCeaJ7Qn5igYKEYohCi8KN4pBCkyKWIpoCnUKhwqXCqsKvorNitqK44rtiv4LDQslCz0LTItcC2cLcQt8C4ELiIuMi5CLtwvNC9iL44vzC/iL/gwIDBIMG4wlDC0MNQw8DEMMTYxYDG2MggyJjJEMm4yljK4MvozNjNgM4gzsDPYNBA0PDRoNHg0iDSsNOI1NjV6NcA2ADZCNnw2tDbqNxw3WDeON7437DgqOCo4KjgqOCo4KjgqOCo4KjgqOCo4KjgqODQ4PjhKOGA4djiMOJg4pDiwONQ47jkSOSo5NjlGOcI51jnsOfo6Gjo8Ong6ujr4O047iDvMO/Y8LDw+PFA8Yjx0PK48wjzgPO49CD1aPYg94D4GPhY+Jj5MPlo+bj6EPq4+rj+IP85AAEAgQFBAbkCKQKxAukDsQRxBPEFqQZJBrEHGQeZB9kISQkhCdkKaQrRCykL8QxRDIEM8Q1hDaEOIQ6JD0EQGRD5EdkSKRKpEwkTqRQpFIkU4RWRFdEWeRdhF+EYiRl5GekbCRv5HDkc2R3BHgEewR+xIBkhOSIpItEjCSPBJEElKSWpJnEncSkpKaEqmSvBLKEtuS5RL0kv+TBxMOkxWTHJMtEzYTOBM6EzwTSBNUE1+TZpNyE3UTeBN7E34TgROEE4cTihONE5ATkxOWE5kTnBOfE6ITpROoE6sTrhOxE7QTtxO6E70TwBPDE8YTyRPME88T0hPVE9gT2xPeE+ET5BPnE+oT7RPwE/MT9hP5E/wT/xQCFAUUCBQLFA4UERQUFBcUGhQdFCAUIxQwFEYUSRRMFE8UUhRVFFgUWxReFGEUZBRnFGoUbRRwFHMUdhSDFJYUmRScFJ8UohSlFKgUqxSuFLEUtBS3FLoUvRTAFMMUxhTJFMwUzxTSFNUU2BTbFN4U4RTkFOcU6hTtFPAU8xT2FPkU/BT/FQIVBRUIFQsVDhURFRQVFxUaFR0VIBUjFSYVKRUsFS8VMhU1FTgVOxU+FUEVRBVHFUoVTRVQFVMVVhVZFVwVXxViFWUVaBVrFW4VcRV0FXcVehV9FYAVgxWGFZUVpBWnFaoVrRWwFbMVthW5FbwVvxXCFcUVyBXLFc4V0RXUFdcV2hXdFeAV4xXmFekV7BXvFfIV9RX4FfsV/hYBFgQWBxYKFg0WEBYTFhYWGRYcFh8WIhYlFigWKxYuFjEWPhZBFkQWRxZKFk0WUBZTFlYWYxZmFmkWbBZvFnIWdRZ4FnsWfhaBFoQWhxaKFo0WkBaTFpYWmRacFp8WohalFqgWqxauFrEWtBa3FroWvRbAFsMWxhbJFswWzxbSFuEW5BbnFuoW7RbwFvMW9hb5FvwW/xcCFwUXCBcLFw4XEBcSFxQXFhcYFxoXHBceFyAXIhckFyYXKBcqFy0XMBczFzYXORc8Fz8XQRdDF0UXRxdJF0wXTxdSF1UXWBdbF14XbJdul3GXc5d1l3iXe5d9l3+XgZeDl4aXiJeKl4yXjpeQl5KXlJeWl5iXmpedl5+XoZesl66XsJezl7aXuJe6l72Xv5fCl8WXyJfLl86X0ZfUl9eX2pfdl9+X4Zfkl+eX6pfsl++X8pf1l/iX+5f+mAKYBZgImAuYDpgQmBKYFZgYmBuYHpghmCSYJ5gqmCyYLpgwmDOYNpg4mDuYPphBmESYRphImEuYTphRmFOYVphZmFyYX5himGWYaJhrmG6YcZh0mHaYeJh7mH6YgZiEmIeYipiNmJCYk5iWmJmYnJigmKSYp5iqmKyYr5iymLWYuJi7mL6YwZjEmMeYypjNmNCY05jWmNqY3pjhmOSY55jqmO2Y8JjzmPaY+pj+mQGZBJkHmQqZDZkQmROZFpkZmRyZH5kimSWZKJksmTCZM5k2mTmZPJk/mUKZRZlImUuZTplRmVSZV5lamV2ZYJlkmWiZa5lumXGZdJl3mXqZfZmAmYOZhpmJmYyZj5mSmZWZmJmbmZ6ZoZmkmaeZqpmtmbCZs5m2mbmZvJm/mcKZ0pnWmdmZ3JnfmeKZ5ZnomeuZ7pnxmfSZ95n6mf2aAJoDmgaaCZoMmg6aGZokmiuaMpo7mkSaSJpMmk+aUppVmliaW5pemmaabxp5GoKahJqHmooaihqPAAAAAAAGwFKAAEAAAAAAAAAHwAAAAEAAAAAAAEABgAfAAEAAAAAAAIABwAlAAEAAAAAAAMAEgAsAAEAAAAAAAQADgA+AAEAAAAAAAUAFgBMAAEAAAAAAAYADgBiAAEAAAAAAAcAIABwAAEAAAAAAAkABgCQAAEAAAAAAAsACgCWAAEAAAAAAAwAEwCgAAEAAAAAAA0ALgCzAAEAAAAAAA4AKgDhAAEAAAAAABIADgELAAMAAQQJAAAAPgEZAAMAAQQJAAEADAFXAAMAAQQJAAIADgFjAAMAAQQJAAMAJAFxAAMAAQQJAAQAHAGVAAMAAQQJAAUALAGxAAMAAQQJAAYAHAHdAAMAAQQJAAcAQAH5AAMAAQQJAAkADAI5AAMAAQQJAAsAFAJFAAMAAQQJAAwAJgJZAAMAAQQJAA0AXAJ/AAMAAQQJAA4AVALbRm9udCBkYXRhIGNvcHlyaWdodCBHb29nbGUgMjAxM1JvYm90b1JlZ3VsYXJHb29nbGU6Um9ib3RvOjIwMTNSb2JvdG8gUmVndWxhclZlcnNpb24gMS4yMDAzMTA7IDIwMTNSb2JvdG8tUmVndWxhclJvYm90byBpcyBhIHRyYWRlbWFyayBvZiBHb29nbGUuR29vZ2xlR29vZ2xlLmNvbUNocmlzdGlhbiBSb2JlcnRzb25MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4waHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wUm9ib3RvIFJlZ3VsYXIARgBvAG4AdAAgAGQAYQB0AGEAIABjAG8AcAB5AHIAaQBnAGgAdAAgAEcAbwBvAGcAbABlACAAMgAwADEAMwBSAG8AYgBvAHQAbwBSAGUAZwB1AGwAYQByAEcAbwBvAGcAbABlADoAUgBvAGIAbwB0AG8AOgAyADAAMQAzAFIAbwBiAG8AdABvACAAUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMQAuADIAMAAwADMAMQAwADsAIAAyADAAMQAzAFIAbwBiAG8AdABvAC0AUgBlAGcAdQBsAGEAcgBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUARwBvAG8AZwBsAGUALgBjAG8AbQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAAAAAgAAAAAAAP9qAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAQcAAABAgACAAMABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQAigEDAIMAkwDyAPMAjQCXAIgBBADeAPEAngCqAPUA9AD2AKIAkADwAJEA7QCJAKAA6gC4AKEA7gEFANcBBgDiAOMBBwEIALAAsQEJAKYBCgELAQwBDQEOAQ8A2ADhANsA3ADdAOAA2QDfARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIAnwEjASQBJQEmAScBKAEpASoBKwEsAS0AmwEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNALIAswHOALYAtwDEAc8AtAC1AMUAggDCAIcB0ACrAMYAvgC/ALwB0QHSAdMB1AHVAdYB1wHYAIwB2QHaAdsB3AHdAJgAmgCZAO8ApQCSAJwApwCPAJQAlQC5Ad4B3wHgAMAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcArAI4AjkA6QI6AjsCPACtAMkAxwCuAGIAYwI9AGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnANYA1ADVAGgA6wBqAGkAawBtAGwAbgI+AG8AcQBwAHIAcwB1AHQAdgB3AHgAegB5AHsAfQB8AH8AfgCAAIEA7AC6Aj8CQAJBAkICQwJEAP0A/gJFAkYCRwJIAP8BAAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYA+AD5AlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooA+wD8AosCjADkAOUCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogC7AqMCpAKlAqYA5gDnAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/BAAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEA9wQiBCMABAd1bmkwMDA5Bm1hY3Jvbg5wZXJpb2RjZW50ZXJlZARIYmFyDGtncmVlbmxhbmRpYwNFbmcDZW5nBWxvbmdzBU9ob3JuBW9ob3JuBVVob3JuBXVob3JuB3VuaTAyMzcFc2Nod2EHdW5pMDJGMwlncmF2ZWNvbWIJYWN1dGVjb21iCXRpbGRlY29tYgRob29rB3VuaTAzMEYIZG90YmVsb3cFdG9ub3MNZGllcmVzaXN0b25vcwlhbm90ZWxlaWEFR2FtbWEFRGVsdGEFVGhldGEGTGFtYmRhAlhpAlBpBVNpZ21hA1BoaQNQc2kFYWxwaGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEGbGFtYmRhAnhpA3JobwZzaWdtYTEFc2lnbWEDdGF1B3Vwc2lsb24DcGhpA3BzaQVvbWVnYQd1bmkwM0QxB3VuaTAzRDIHdW5pMDNENgd1bmkwNDAyB3VuaTA0MDQHdW5pMDQwOQd1bmkwNDBBB3VuaTA0MEIHdW5pMDQwRgd1bmkwNDExB3VuaTA0MTQHdW5pMDQxNgd1bmkwNDE3B3VuaTA0MTgHdW5pMDQxQgd1bmkwNDIzB3VuaTA0MjQHdW5pMDQyNgd1bmkwNDI3B3VuaTA0MjgHdW5pMDQyOQd1bmkwNDJBB3VuaTA0MkIHdW5pMDQyQwd1bmkwNDJEB3VuaTA0MkUHdW5pMDQyRgd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDM0B3VuaTA0MzYHdW5pMDQzNwd1bmkwNDM4B3VuaTA0M0EHdW5pMDQzQgd1bmkwNDNDB3VuaTA0M0QHdW5pMDQzRgd1bmkwNDQyB3VuaTA0NDQHdW5pMDQ0Ngd1bmkwNDQ3B3VuaTA0NDgHdW5pMDQ0OQd1bmkwNDRBB3VuaTA0NEIHdW5pMDQ0Qwd1bmkwNDREB3VuaTA0NEUHdW5pMDQ0Rgd1bmkwNDUyB3VuaTA0NTQHdW5pMDQ1OQd1bmkwNDVBB3VuaTA0NUIHdW5pMDQ1Rgd1bmkwNDYwB3VuaTA0NjEHdW5pMDQ2Mwd1bmkwNDY0B3VuaTA0NjUHdW5pMDQ2Ngd1bmkwNDY3B3VuaTA0NjgHdW5pMDQ2OQd1bmkwNDZBB3VuaTA0NkIHdW5pMDQ2Qwd1bmkwNDZEB3VuaTA0NkUHdW5pMDQ2Rgd1bmkwNDcyB3VuaTA0NzMHdW5pMDQ3NAd1bmkwNDc1B3VuaTA0N0EHdW5pMDQ3Qgd1bmkwNDdDB3VuaTA0N0QHdW5pMDQ3RQd1bmkwNDdGB3VuaTA0ODAHdW5pMDQ4MQd1bmkwNDgyB3VuaTA0ODMHdW5pMDQ4NAd1bmkwNDg1B3VuaTA0ODYHdW5pMDQ4OAd1bmkwNDg5B3VuaTA0OEQHdW5pMDQ4RQd1bmkwNDhGB3VuaTA0OTAHdW5pMDQ5MQd1bmkwNDk0B3VuaTA0OTUHdW5pMDQ5Qwd1bmkwNDlEB3VuaTA0QTAHdW5pMDRBMQd1bmkwNEE0B3VuaTA0QTUHdW5pMDRBNgd1bmkwNEE3B3VuaTA0QTgHdW5pMDRBOQd1bmkwNEI0B3VuaTA0QjUHdW5pMDRCOAd1bmkwNEI5B3VuaTA0QkEHdW5pMDRCQwd1bmkwNEJEB3VuaTA0QzMHdW5pMDRDNAd1bmkwNEM3B3VuaTA0QzgHdW5pMDREOAd1bmkwNEUwB3VuaTA0RTEHdW5pMDRGQQd1bmkwNEZCB3VuaTA1MDAHdW5pMDUwMgd1bmkwNTAzB3VuaTA1MDQHdW5pMDUwNQd1bmkwNTA2B3VuaTA1MDcHdW5pMDUwOAd1bmkwNTA5B3VuaTA1MEEHdW5pMDUwQgd1bmkwNTBDB3VuaTA1MEQHdW5pMDUwRQd1bmkwNTBGB3VuaTA1MTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMEINdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkB3VuaTIwMjUHdW5pMjA3NAluc3VwZXJpb3IEbGlyYQZwZXNldGEERXVybwd1bmkyMTA1B3VuaTIxMTMHdW5pMjExNgllc3RpbWF0ZWQJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxzZXZlbmVpZ2h0aHMKY29sb24ubG51bQlxdW90ZWRibHgLY29tbWFhY2NlbnQHdW5pRkVGRgd1bmlGRkZDB3VuaUZGRkQJZml2ZS5zbWNwCGZvdXIuc3VwCXplcm8ubG51bQ5sYXJnZXJpZ2h0aG9vawxjeXJpbGxpY2hvb2sQY3lyaWxsaWNob29rbGVmdAtjeXJpbGxpY3RpYw5icmV2ZXRpbGRlY29tYg1icmV2ZWhvb2tjb21iDmJyZXZlYWN1dGVjb21iE2NpcmN1bWZsZXh0aWxkZWNvbWISY2lyY3VtZmxleGhvb2tjb21iE2NpcmN1bWZsZXhncmF2ZWNvbWITY2lyY3VtZmxleGFjdXRlY29tYg5icmV2ZWdyYXZlY29tYhFjb21tYWFjY2VudHJvdGF0ZQZBLnNtY3AGQi5zbWNwBkMuc21jcAZELnNtY3AGRS5zbWNwBkYuc21jcAZHLnNtY3AGSC5zbWNwBkkuc21jcAZKLnNtY3AGSy5zbWNwBkwuc21jcAZNLnNtY3AGTi5zbWNwBk8uc21jcAZRLnNtY3AGUi5zbWNwBlMuc21jcAZULnNtY3AGVS5zbWNwBlYuc21jcAZXLnNtY3AGWC5zbWNwBlkuc21jcAZaLnNtY3AJemVyby5zbWNwCG9uZS5zbWNwCHR3by5zbWNwCnRocmVlLnNtY3AJZm91ci5zbWNwCHR3by5sbnVtCHNpeC5zbWNwCnNldmVuLnNtY3AKZWlnaHQuc21jcAluaW5lLnNtY3AHb25lLnN1cAd0d28uc3VwCXRocmVlLnN1cAhvbmUubG51bQhmaXZlLnN1cAdzaXguc3VwCXNldmVuLnN1cAllaWdodC5zdXAIbmluZS5zdXAIemVyby5zdXAIY3Jvc3NiYXIJcmluZ2FjdXRlCWRhc2lhb3hpYQp0aHJlZS5sbnVtCWZvdXIubG51bQlmaXZlLmxudW0Ic2l4LmxudW0FZy5hbHQKc2V2ZW4ubG51bQdjaGkuYWx0CmVpZ2h0LmxudW0JYWxwaGEuYWx0CWRlbHRhLmFsdARELmNuBGEuY24FUi5hbHQFSy5hbHQFay5hbHQGSy5hbHQyBmsuYWx0MgluaW5lLmxudW0GUC5zbWNwDWN5cmlsbGljYnJldmUHdW5pMDBBRAZEY3JvYXQEaGJhcgRUYmFyBHRiYXIKQXJpbmdhY3V0ZQphcmluZ2FjdXRlB0FtYWNyb24HYW1hY3JvbgZBYnJldmUGYWJyZXZlB0FvZ29uZWsHYW9nb25lawtDY2lyY3VtZmxleAtjY2lyY3VtZmxleAd1bmkwMTBBB3VuaTAxMEIGRGNhcm9uBmRjYXJvbgdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQHRW9nb25lawdlb2dvbmVrBkVjYXJvbgZlY2Fyb24LR2NpcmN1bWZsZXgLZ2NpcmN1bWZsZXgHdW5pMDEyMAd1bmkwMTIxDEdjb21tYWFjY2VudAxnY29tbWFhY2NlbnQLSGNpcmN1bWZsZXgLaGNpcmN1bWZsZXgGSXRpbGRlBml0aWxkZQdJbWFjcm9uB2ltYWNyb24GSWJyZXZlBmlicmV2ZQdJb2dvbmVrB2lvZ29uZWsKSWRvdGFjY2VudAJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAxLY29tbWFhY2NlbnQMa2NvbW1hYWNjZW50BkxhY3V0ZQZsYWN1dGUMTGNvbW1hYWNjZW50DGxjb21tYWFjY2VudAZMY2Fyb24GbGNhcm9uBExkb3QEbGRvdAZOYWN1dGUGbmFjdXRlDE5jb21tYWFjY2VudAxuY29tbWFhY2NlbnQGTmNhcm9uBm5jYXJvbgtuYXBvc3Ryb3BoZQdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQxSY29tbWFhY2NlbnQMcmNvbW1hYWNjZW50BlJjYXJvbgZyY2Fyb24GU2FjdXRlBnNhY3V0ZQtTY2lyY3VtZmxleAtzY2lyY3VtZmxleAd1bmkwMjE4B3VuaTAyMTkHdW5pMDIxQQd1bmkwMjFCB3VuaTAxNjIHdW5pMDE2MwZUY2Fyb24GdGNhcm9uBlV0aWxkZQZ1dGlsZGUHVW1hY3Jvbgd1bWFjcm9uBlVicmV2ZQZ1YnJldmUFVXJpbmcFdXJpbmcNVWh1bmdhcnVtbGF1dA11aHVuZ2FydW1sYXV0B1VvZ29uZWsHdW9nb25lawtXY2lyY3VtZmxleAt3Y2lyY3VtZmxleAtZY2lyY3VtZmxleAt5Y2lyY3VtZmxleAZaYWN1dGUGemFjdXRlClpkb3RhY2NlbnQKemRvdGFjY2VudAdBRWFjdXRlB2FlYWN1dGULT3NsYXNoYWN1dGULb3NsYXNoYWN1dGULRGNyb2F0LnNtY3AIRXRoLnNtY3AJVGJhci5zbWNwC0FncmF2ZS5zbWNwC0FhY3V0ZS5zbWNwEEFjaXJjdW1mbGV4LnNtY3ALQXRpbGRlLnNtY3AOQWRpZXJlc2lzLnNtY3AKQXJpbmcuc21jcA9BcmluZ2FjdXRlLnNtY3ANQ2NlZGlsbGEuc21jcAtFZ3JhdmUuc21jcAtFYWN1dGUuc21jcBBFY2lyY3VtZmxleC5zbWNwDkVkaWVyZXNpcy5zbWNwC0lncmF2ZS5zbWNwC0lhY3V0ZS5zbWNwEEljaXJjdW1mbGV4LnNtY3AOSWRpZXJlc2lzLnNtY3ALTnRpbGRlLnNtY3ALT2dyYXZlLnNtY3ALT2FjdXRlLnNtY3AQT2NpcmN1bWZsZXguc21jcAtPdGlsZGUuc21jcA5PZGllcmVzaXMuc21jcAtVZ3JhdmUuc21jcAtVYWN1dGUuc21jcBBVY2lyY3VtZmxleC5zbWNwDlVkaWVyZXNpcy5zbWNwC1lhY3V0ZS5zbWNwDEFtYWNyb24uc21jcAtBYnJldmUuc21jcAxBb2dvbmVrLnNtY3ALQ2FjdXRlLnNtY3AQQ2NpcmN1bWZsZXguc21jcAx1bmkwMTBBLnNtY3ALQ2Nhcm9uLnNtY3ALRGNhcm9uLnNtY3AMRW1hY3Jvbi5zbWNwC0VicmV2ZS5zbWNwD0Vkb3RhY2NlbnQuc21jcAxFb2dvbmVrLnNtY3ALRWNhcm9uLnNtY3AQR2NpcmN1bWZsZXguc21jcAtHYnJldmUuc21jcAx1bmkwMTIwLnNtY3ARR2NvbW1hYWNjZW50LnNtY3AQSGNpcmN1bWZsZXguc21jcAtJdGlsZGUuc21jcAxJbWFjcm9uLnNtY3ALSWJyZXZlLnNtY3AMSW9nb25lay5zbWNwD0lkb3RhY2NlbnQuc21jcBBKY2lyY3VtZmxleC5zbWNwEUtjb21tYWFjY2VudC5zbWNwC0xhY3V0ZS5zbWNwEUxjb21tYWFjY2VudC5zbWNwC0xjYXJvbi5zbWNwCUxkb3Quc21jcAtOYWN1dGUuc21jcBFOY29tbWFhY2NlbnQuc21jcAtOY2Fyb24uc21jcAxPbWFjcm9uLnNtY3ALT2JyZXZlLnNtY3AST2h1bmdhcnVtbGF1dC5zbWNwC1JhY3V0ZS5zbWNwEVJjb21tYWFjY2VudC5zbWNwC1JjYXJvbi5zbWNwC1NhY3V0ZS5zbWNwEFNjaXJjdW1mbGV4LnNtY3ANU2NlZGlsbGEuc21jcAtTY2Fyb24uc21jcBFUY29tbWFhY2NlbnQuc21jcAtUY2Fyb24uc21jcAtVdGlsZGUuc21jcAxVbWFjcm9uLnNtY3ALVWJyZXZlLnNtY3AKVXJpbmcuc21jcBJVaHVuZ2FydW1sYXV0LnNtY3AMVW9nb25lay5zbWNwEFdjaXJjdW1mbGV4LnNtY3AQWWNpcmN1bWZsZXguc21jcA5ZZGllcmVzaXMuc21jcAtaYWN1dGUuc21jcA9aZG90YWNjZW50LnNtY3ALWmNhcm9uLnNtY3APZ2VybWFuZGJscy5zbWNwCkFscGhhdG9ub3MMRXBzaWxvbnRvbm9zCEV0YXRvbm9zCUlvdGF0b25vcwxPbWljcm9udG9ub3MMVXBzaWxvbnRvbm9zCk9tZWdhdG9ub3MRaW90YWRpZXJlc2lzdG9ub3MFQWxwaGEEQmV0YQdFcHNpbG9uBFpldGEDRXRhBElvdGEFS2FwcGECTXUCTnUHT21pY3JvbgNSaG8DVGF1B1Vwc2lsb24DQ2hpDElvdGFkaWVyZXNpcw9VcHNpbG9uZGllcmVzaXMKYWxwaGF0b25vcwxlcHNpbG9udG9ub3MIZXRhdG9ub3MJaW90YXRvbm9zFHVwc2lsb25kaWVyZXNpc3Rvbm9zBWthcHBhB29taWNyb24HdW5pMDNCQwJudQNjaGkMaW90YWRpZXJlc2lzD3Vwc2lsb25kaWVyZXNpcwxvbWljcm9udG9ub3MMdXBzaWxvbnRvbm9zCm9tZWdhdG9ub3MHdW5pMDQwMQd1bmkwNDAzB3VuaTA0MDUHdW5pMDQwNgd1bmkwNDA3B3VuaTA0MDgHdW5pMDQxQQd1bmkwNDBDB3VuaTA0MEUHdW5pMDQxMAd1bmkwNDEyB3VuaTA0MTMHdW5pMDQxNQd1bmkwNDE5B3VuaTA0MUMHdW5pMDQxRAd1bmkwNDFFB3VuaTA0MUYHdW5pMDQyMAd1bmkwNDIxB3VuaTA0MjIHdW5pMDQyNQd1bmkwNDMwB3VuaTA0MzUHdW5pMDQzOQd1bmkwNDNFB3VuaTA0NDAHdW5pMDQ0MQd1bmkwNDQzB3VuaTA0NDUHdW5pMDQ1MQd1bmkwNDUzB3VuaTA0NTUHdW5pMDQ1Ngd1bmkwNDU3B3VuaTA0NTgHdW5pMDQ1Qwd1bmkwNDVFBldncmF2ZQZ3Z3JhdmUGV2FjdXRlBndhY3V0ZQlXZGllcmVzaXMJd2RpZXJlc2lzBllncmF2ZQZ5Z3JhdmUGbWludXRlBnNlY29uZAlleGNsYW1kYmwHdW5pRkIwMgd1bmkwMUYwB3VuaTAyQkMHdW5pMUUzRQd1bmkxRTNGB3VuaTFFMDAHdW5pMUUwMQd1bmkxRjREB3VuaUZCMDMHdW5pRkIwNAd1bmkwNDAwB3VuaTA0MEQHdW5pMDQ1MAd1bmkwNDVEB3VuaTA0NzAHdW5pMDQ3MQd1bmkwNDc2B3VuaTA0NzcHdW5pMDQ3OQd1bmkwNDc4B3VuaTA0OTgHdW5pMDQ5OQd1bmkwNEFBB3VuaTA0QUIHdW5pMDRBRQd1bmkwNEFGB3VuaTA0QzAHdW5pMDRDMQd1bmkwNEMyB3VuaTA0Q0YHdW5pMDREMAd1bmkwNEQxB3VuaTA0RDIHdW5pMDREMwd1bmkwNEQ0B3VuaTA0RDUHdW5pMDRENgd1bmkwNEQ3B3VuaTA0REEHdW5pMDREOQd1bmkwNERCB3VuaTA0REMHdW5pMDRERAd1bmkwNERFB3VuaTA0REYHdW5pMDRFMgd1bmkwNEUzB3VuaTA0RTQHdW5pMDRFNQd1bmkwNEU2B3VuaTA0RTcHdW5pMDRFOAd1bmkwNEU5B3VuaTA0RUEHdW5pMDRFQgd1bmkwNEVDB3VuaTA0RUQHdW5pMDRFRQd1bmkwNEVGB3VuaTA0RjAHdW5pMDRGMQd1bmkwNEYyB3VuaTA0RjMHdW5pMDRGNAd1bmkwNEY1B3VuaTA0RjgHdW5pMDRGOQd1bmkwNEZDB3VuaTA0RkQHdW5pMDUwMQd1bmkwNTEyB3VuaTA1MTMHdW5pMUVBMAd1bmkxRUExB3VuaTFFQTIHdW5pMUVBMwd1bmkxRUE0B3VuaTFFQTUHdW5pMUVBNgd1bmkxRUE3B3VuaTFFQTgHdW5pMUVBOQd1bmkxRUFBB3VuaTFFQUIHdW5pMUVBQwd1bmkxRUFEB3VuaTFFQUUHdW5pMUVBRgd1bmkxRUIwB3VuaTFFQjEHdW5pMUVCMgd1bmkxRUIzB3VuaTFFQjQHdW5pMUVCNQd1bmkxRUI2B3VuaTFFQjcHdW5pMUVCOAd1bmkxRUI5B3VuaTFFQkEHdW5pMUVCQgd1bmkxRUJDB3VuaTFFQkQHdW5pMUVCRQd1bmkxRUJGB3VuaTFFQzAHdW5pMUVDMQd1bmkxRUMyB3VuaTFFQzMHdW5pMUVDNAd1bmkxRUM1B3VuaTFFQzYHdW5pMUVDNwd1bmkxRUM4B3VuaTFFQzkHdW5pMUVDQQd1bmkxRUNCB3VuaTFFQ0MHdW5pMUVDRAd1bmkxRUNFB3VuaTFFQ0YHdW5pMUVEMAd1bmkxRUQxB3VuaTFFRDIHdW5pMUVEMwd1bmkxRUQ0B3VuaTFFRDUHdW5pMUVENgd1bmkxRUQ3B3VuaTFFRDgHdW5pMUVEOQd1bmkxRURBB3VuaTFFREIHdW5pMUVEQwd1bmkxRUREB3VuaTFFREUHdW5pMUVERgd1bmkxRUUwB3VuaTFFRTEHdW5pMUVFMgd1bmkxRUUzB3VuaTFFRTQHdW5pMUVFNQd1bmkxRUU2B3VuaTFFRTcHdW5pMUVFOAd1bmkxRUU5B3VuaTFFRUEHdW5pMUVFQgd1bmkxRUVDB3VuaTFFRUQHdW5pMUVFRQd1bmkxRUVGB3VuaTFFRjAHdW5pMUVGMQd1bmkxRUY0B3VuaTFFRjUHdW5pMUVGNgd1bmkxRUY3B3VuaTFFRjgHdW5pMUVGOQZkY3JvYXQHdW5pMjBBQgd1bmkwNDlBB3VuaTA0OUIHdW5pMDRBMgd1bmkwNEEzB3VuaTA0QUMHdW5pMDRBRAd1bmkwNEIyB3VuaTA0QjMHdW5pMDRCNgd1bmkwNEI3B3VuaTA0Q0IHdW5pMDRDQwd1bmkwNEY2B3VuaTA0RjcHdW5pMDQ5Ngd1bmkwNDk3B3VuaTA0QkUHdW5pMDRCRgd1bmkwNEJCB3VuaTA0OEMHdW5pMDQ2Mgd1bmkwNDkyB3VuaTA0OTMHdW5pMDQ5RQd1bmkwNDlGB3VuaTA0OEEHdW5pMDQ4Qgd1bmkwNEM5B3VuaTA0Q0EHdW5pMDRDRAd1bmkwNENFB3VuaTA0QzUHdW5pMDRDNgd1bmkwNEIwB3VuaTA0QjEHdW5pMDRGRQd1bmkwNEZGB3VuaTA1MTEHdW5pMjAxNQd1bmkwMDAyAAAAAQAAAAwAAAAAAAAAAgAIAMoAygABAR4BJAABAVYBYQABAXYBdgABAXsBfAABAX4BfgABAZMBlQABAdUB1QABAAAAAAAAAAAAAQAAAAoAHgAsAAFERkxUAAgABAAAAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAQADk1oVQZzXAABetgABAAAAa0DZANqA3ADdgPoA/IEBAQqBEAESgRsBI4ElATiBRAFMgVUBXoFoAWmBowGkga4Bt4HQAfSB/QIEggsCDIIQAhGCEwIUgh4CJIIoAi+CMQI4gj8CQIJxAo2ClwKzgrUCt4K5ArqCvALDgscC0YLTAtiC3wLggucC6ILqAveC+QL7gwcDEIMaAyKDKwMzgz8DV4NdA2WDbgOAg4kDkYOeA6eDsQOzg7YDvIPBA8ODygPLg9ED5IPrA/GD9wP/hAgEDoQQBBiEIQQphEYET4RZBGCEZwSXhJoErYTBBMOExQTGhMgEyYTLBNSE1wTYhN0E54TtBPGE9gT/hQEFBoUJBQ2FFwUchR4FH4UmBSeFMQU6hXQFkIWtBcmF5gYChh8GO4ZABkWGSwZQhlYGXoZnBm+GeAaAhooGk4adBqaGsAaxhrMGtIa2BtqG4gbphvEG+IcABweHDwcQhxIHE4cVBxaHIAcphzMHPIdGB02HVQdxh3kHlYedB7mHwQfFh8oHzofTB9yH4gfjh+kH6ofwB/GH9wf4h/4H/4gICAmIEggaiCMIK4g0CDWISQhUiGAIa4h3CH+IgQiJiIsIk4iVCJaIoAipiLMIvIjGCM+I0wjWiNoJE4lNCYaJiAmJiYsJjImOCY+JmQm9icUJ6YnyCfqKAwofiiUKLYo2Cj+KZAqAioMKiIqRCpmKogq1ir4KxorQCtmLEws3i1ALWIt9C36LiAuPi5kLnovPC9eL4Avhi/UMCIwbDDeMOgxqjHAMeIyBDIqMlAyYjNIM6ozyDPOM/Q0DjQsNDI0ODRCNGA0hjSsNNI1ZDWCNYg1jjWUNbY1vDYuNkw2cjaINo42tDbSNuQ3djeUN7Y4GDgeOEA4sjjQOUI5YDl2OXw5gjmIOeo58DoWOjw6Yjp8OsY65DsuO0w7lju0PBY8HDyOPKw9Hj08Pa49zD4+Plw+zj7sP14/fD/uQAxAfkCcQQ5BLEGeQbxCLkJMQr5C3ELyQvhDDkMUQypDMENGQ0xDYkNoQ35DhEOaQ6BDtkO8Q95EAEQmRExEckSYRL5E5EUKRTBFVkV8RaJFyEXuRhRGOkZARkZG2Eb2R4hHpkg4SFZIpEjGSaxKDkoUStZK4EtCS0hLTkt0TDZMhEymTMgAAQBZAAsAAQBZAAsAAQAR/yAAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAAgEMAAsBU//mAAQAC//mAD//9ABf/+8BPP/tAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAIAVP/mAaf/wAAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEBp//rABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nAAsAWf+kAacAEwGp//MBrf/xAbX/8gG2//EBuf87Abr/2gG7/1QBvP+RAb7/PwAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQBWAA4Af/+fAL//3gDC/+UA1P+oAOj/ygFG/+MBp//GAd//9QABAacADgA5AFT/tQBZ/8cAa/64AHr/KAB//00AhP+OAIf/oQCz/64Auv9+AL7/ZwDB/4cAwv9lAMX/ngDH/2oAyP9zAMn/XgDU/6UA4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APr/gAD8/3kBAv99AQT/fwEX/5gBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGn/68Bqf+5Aa3/uQG1/7kBtv+5Abj/vAG5//EBvP/xAb3/7QHc/6kB3//JAAEBp//rAAkACwAUAD8AEQBU/+IAXwATAaf/tAGp/9kBrf/ZAbX/2QG2/9kACQALAA8APwAMAFT/6wBfAA4Bp//LAan/6QGt/+cBtf/nAbb/5wAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ACABZ/+UAs//LAMj/5AGnAA0Bqf/tAa3/6wG1/+wBtv/sAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAYAxf/qAOj/7gDx/7ABL//sAVT/7AHc/+gAAQDx//UAAwALABQAPwASAF8AEwABAPH/wAABAPH/wAABAPH/wAAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAYAxf/qAOj/7gDx/7ABL//sAVT/7AHc/+gAAwBIAA8AVgAgAFkAEQAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QABARf/8QAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oAAEA8f/1ADAAVP9tAFn/jABr/b8Aev59AH/+vACE/ysAh/9LALP/YQC6/w8Avv7oAMH/HwDC/uUAxf9GAMf+7QDI/v0Ayf7ZANT/UgDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+v8TAPz/BwEC/w4BBP8RARf/PAEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/WQHf/48AHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAABAL8ADQACALP/wgC/ABAAAQC//+IAAQDC//IAAQC/AA4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAAwDF/+0A8f/AAdz/7AAKALr/5gC9/+sAvv/pAMD/8ADB/+cAxf/jAMf/zgDI/9QAyf/bAd//7gABAPH/wAAFAL3/7AC/AA8Awf/qAMX/xADH/+cABgBI/+kAvf/uAL8AEADB/+wAxf8gAdz/2gABAL8ADwAGAMX/6gDo/+4A8f+rAS//7AFU/+wB3P/oAAEA8f/VAAEAxQALAA0ASAAMAMEACwDFAAwBp/+/Aan/7gGt/+wBtf/tAbb/7AG4//UBuQAOAbsADQG+AA0B3//tAAEA8f/YAAIA8f+qAdz/4QALAOH/1ADx/8kBBP/lARv/4wEv/8QBOP/hAUn/1AFK//UBS//nAVP/0gFU/8kACQDh/8MA8f/PAS//zgE4/+cBO//fAUn/0QFL/+wBU/+gAVT/0QAJAOH/wwDx/88BL//OATj/5wE7/98BSf/RAUv/7AFT/6ABVP/RAAgA4f/JAPH/3wEE/+0BG//rAS//3wE7/+kBSv/1AVT/4AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADh/+YA8f/QAS//zgE4/+gBSf/nAUv/7QFT/+YBVP/QAAsA1AAUAOH/4ADoABMBOP/hATn/4AE8/+EBQf/pAUn/3wFL/94BU//fAVX/8gAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAUAGf/yAOH/8QFJ//IBS//yAVP/8gAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAMANQAEwDh/+YA4v/0AOgAEgDx/+cBL//nATj/5QE5/+gBSf/mAUv/5gFT/+YBVP/nAAkA4f/DAPH/zwEv/84BOP/nATv/3wFJ/9EBS//sAVP/oAFU/9EACQDh/8MA8f/PAS//zgE4/+cBO//fAUn/0QFL/+wBU/+gAVT/0QACANT/4gFT/+QAAgDU/+EA6P/kAAYA6P/uAPH/7gEE//QBG//xAS//7wFU/+8ABADx//QBBP/1AS//9QFU//UAAgDo/8kBF//uAAYA6AAUAPH/7QD3/+IBL//tATn/7QFU/+0AAQEX//EABQEX/+sBqf/rAa3/6QG1/+sBtv/rABMASAANAML/qwDD/8AAx//VAOj/qgEX/+IBGwAMAUoACwFMAAsBp/+/Aan/7gGt/+wBtf/tAbb/7AG4//UBuQAOAbsADQG+AA0B3/+wAAYAxf/qAOj/7gDx/7ABL//sAVT/7AHc/+gABgDoABQA8f/wAPwADAEv//ABOf/mAVT/8AAFAOgAOgDx/+MBL//iATn/4wFU/+MACADx/7oBBP/PARv/2wEv/1ABOf+dAUr/8AFM//IBVP9MAAgA8f+6AQT/zwEb/9sBL/9QATn/nQFK//ABTP/yAVT/TAAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oAAEA6P/vAAgA8f+6AQT/zwEb/9sBL/9QATn/nQFK//ABTP/yAVT/TAAIAPH/ugEE/88BG//bAS//UAE5/50BSv/wAUz/8gFU/0wACADx/7oBBP/PARv/2wEv/1ABOf+dAUr/8AFM//IBVP9MABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQALABQAPwARAFT/4gBfABMBp/+0Aan/2QGt/9kBtf/ZAbb/2QAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oADAAVP9tAFn/jABr/b8Aev59AH/+vACE/ysAh/9LALP/YQC6/w8Avv7oAMH/HwDC/uUAxf9GAMf+7QDI/v0Ayf7ZANT/UgDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+v8TAPz/BwEC/w4BBP8RARf/PAEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/WQHf/48AAgDo/8kBF//uABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nAAIA6P/JARf/7gABAFkACwABAFkACwABAFkACwABAFkACwABAFkACwAJAan/8gGt//IBtf/yAbb/8gG5/8ABuv/sAbv/xwG8/9gBvv+/AAIBu//uAbz/9QABAaf/0gAEAan/6wGt/+kBtf/rAbb/6wAKAacAEQGp//ABrf/uAbX/7wG2//ABuf+7Abr/7AG7/7cBvP/VAb7/tAAFAaf/8wG5/+4Bu//xAb3/7AG+/+oABAG5/+kBu//rAbz/8QG+/+UABAG5//IBu//xAbz/9QG+/+4ACQGn/78Bqf/uAa3/7AG1/+0Btv/sAbj/9QG5AA4BuwANAb4ADQABAaf/7wAFAaf/xwGp//IBrf/wAbX/8AG2//AAAgGn/9wBuQAOAAQBqf/tAa3/6wG1/+sBtv/rAAkBp//AAan/7QGt/+sBtf/rAbb/6wG5AA8BuwAQAbwADQG+ABAABQGnAAwBqf/wAa3/8AG1//ABtv/wAAEB1/9qAAEB1/8VAAYASAALALr/8gDH//EAyf/vAdwADwHf/+4AAQGn/9UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1ADkAVP+1AFn/xwBr/rgAev8oAH//TQCE/44Ah/+hALP/rgC6/34Avv9nAMH/hwDC/2UAxf+eAMf/agDI/3MAyf9eANT/pQDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+v+AAPz/eQEC/30BBP9/ARf/mAEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAaf/rwGp/7kBrf+5AbX/uQG2/7kBuP+8Abn/8QG8//EBvf/tAdz/qQHf/8kAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABAAL/+YAP//0AF//7wE8/+0ABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAUASP/uAFn/6gG7//ABvP/tAb7/8AAFAEj/7gBZ/+oBu//wAbz/7QG+//AABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAEBp//rAAEBp//rAAEBp//rAAEBp//rACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAAQDx//UAAQDx//UAAQDx//UAAQDx//UAAQDx/8AACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAQAC//mAD//9ABf/+8BPP/tAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/8AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAaf/6wATAFn/wQCz/8UAxf+0AOX/1wDx/7kBBP+yARf/0gEb/8gBL/+gATn/xQFB/+QBSv/MAUz/zAFU/8sBVf/vAan/6AGt/+YBtf/nAbb/5wALAFn/pAGnABMBqf/zAa3/8QG1//IBtv/xAbn/OwG6/9oBu/9UAbz/kQG+/z8ACwBZ/6QBpwATAan/8wGt//EBtf/yAbb/8QG5/zsBuv/aAbv/VAG8/5EBvv8/AAsAWf+kAacAEwGp//MBrf/xAbX/8gG2//EBuf87Abr/2gG7/1QBvP+RAb7/PwALAFn/pAGnABMBqf/zAa3/8QG1//IBtv/xAbn/OwG6/9oBu/9UAbz/kQG+/z8ACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAEA8f/AAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AABAPH/wAAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/8AAAQDx/8AACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oAAwBIAA8AVgAgAFkAEQADAEgADwBWACAAWQARAAMASAAPAFYAIABZABEAOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQA5AFT/tQBZ/8cAa/64AHr/KAB//00AhP+OAIf/oQCz/64Auv9+AL7/ZwDB/4cAwv9lAMX/ngDH/2oAyP9zAMn/XgDU/6UA4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APr/gAD8/3kBAv99AQT/fwEX/5gBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGn/68Bqf+5Aa3/uQG1/7kBtv+5Abj/vAG5//EBvP/xAb3/7QHc/6kB3//JADkAVP+1AFn/xwBr/rgAev8oAH//TQCE/44Ah/+hALP/rgC6/34Avv9nAMH/hwDC/2UAxf+eAMf/agDI/3MAyf9eANT/pQDhAA8A5f/kAOb/oADo/3QA6v+AAPH/sgD4/30A+v+AAPz/eQEC/30BBP9/ARf/mAEb/9oBJ/+BASn/mAEt/30BL/+zATP/oAE5/3wBO/+aATz/bAFB/+YBRv9rAUr/kgFM/60BUP97AVMADwFU/5EBVf/yAaf/rwGp/7kBrf+5AbX/uQG2/7kBuP+8Abn/8QG8//EBvf/tAdz/qQHf/8kAAQGn/+sAAQGn/+sAAQGn/+sAAQGn/+sAAQGn/+sAAQGn/+sACQALAA8APwAMAFT/6wBfAA4Bp//LAan/6QGt/+cBtf/nAbb/5wAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ACABZ/+UAs//LAMj/5AGnAA0Bqf/tAa3/6wG1/+wBtv/sAAgAWf/lALP/ywDI/+QBpwANAan/7QGt/+sBtf/sAbb/7AAIAFn/5QCz/8sAyP/kAacADQGp/+0Brf/rAbX/7AG2/+wAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uABwAIf/DAFb/7wBZ/98Alv/uALP/5QC0/9EAvwARAMX/yADUABMA4f/FAPH/ygEv/58BOP9RATn/ewE7/8oBPP/dAUH/8gFJ/3UBS//KAVP/TwFU/4wBrf/1AbX/9QG5/8cBuv/xAbv/zQG8/90Bvv/EAAIBDAALAVP/5gAFAEj/7gBZ/+oBu//wAbz/7QG+//AACABZ/+UAs//LAMj/5AGnAA0Bqf/tAa3/6wG1/+wBtv/sAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAEwBZ/8EAs//FAMX/tADl/9cA8f+5AQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGp/+gBrf/mAbX/5wG2/+cACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAVgAOAH//nwC//94Awv/lANT/qADo/8oBRv/jAaf/xgHf//UAOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAan/6QGt/+cBtf/nAbb/6QHf//AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4AAQDx/8AACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAUASP/uAFn/6gG7//ABvP/tAb7/8AAwAFT/bQBZ/4wAa/2/AHr+fQB//rwAhP8rAIf/SwCz/2EAuv8PAL7+6ADB/x8Awv7lAMX/RgDH/u0AyP79AMn+2QDU/1IA4QAFAOX/vQDm/0kA6P7+AOr/EwDx/2gA+P8OAPr/EwD8/wcBAv8OAQT/EQEX/zwBG/+sASf/FQEp/zwBLf8OAS//agEz/0kBOf8MATv/PwE8/vEBQf/AAUb+7wFK/zEBTP9fAVD/CgFTAAUBVP8wAVX/1QHc/1kB3/+PAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQGn/+sAEwBZ/8EAs//FAMX/tADl/9cA8f+5AQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGp/+gBrf/mAbX/5wG2/+cAEwBZ/8EAs//FAMX/tADl/9cA8f+5AQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGp/+gBrf/mAbX/5wG2/+cAEgDU/64A4QASAOb/4ADo/60A6v/WAPj/3wD8/9IBAv/gARf/zgEn/90BKf/iAS3/4AEz/+ABOf/pATz/2gFG/70BUP/fAVMAEQAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAACAQwACwFT/+YAMABU/20AWf+MAGv9vwB6/n0Af/68AIT/KwCH/0sAs/9hALr/DwC+/ugAwf8fAML+5QDF/0YAx/7tAMj+/QDJ/tkA1P9SAOEABQDl/70A5v9JAOj+/gDq/xMA8f9oAPj/DgD6/xMA/P8HAQL/DgEE/xEBF/88ARv/rAEn/xUBKf88AS3/DgEv/2oBM/9JATn/DAE7/z8BPP7xAUH/wAFG/u8BSv8xAUz/XwFQ/woBUwAFAVT/MAFV/9UB3P9ZAd//jwAFAEj/7gBZ/+oBu//wAbz/7QG+//AACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAVgAOAH//nwC//94Awv/lANT/qADo/8oBRv/jAaf/xgHf//UABAAL/+YAP//0AF//7wE8/+0AOQBU/7UAWf/HAGv+uAB6/ygAf/9NAIT/jgCH/6EAs/+uALr/fgC+/2cAwf+HAML/ZQDF/54Ax/9qAMj/cwDJ/14A1P+lAOEADwDl/+QA5v+gAOj/dADq/4AA8f+yAPj/fQD6/4AA/P95AQL/fQEE/38BF/+YARv/2gEn/4EBKf+YAS3/fQEv/7MBM/+gATn/fAE7/5oBPP9sAUH/5gFG/2sBSv+SAUz/rQFQ/3sBUwAPAVT/kQFV//IBp/+vAan/uQGt/7kBtf+5Abb/uQG4/7wBuf/xAbz/8QG9/+0B3P+pAd//yQAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAcA8f/wAQT/8QEb//MBL//xAUr/8wFM/+kBVP/TAAEA8f/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oABgDF/+oA6P/uAPH/sAEv/+wBVP/sAdz/6AAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QABARf/8QABAPH/9QACAOj/yQEX/+4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UACQALAA8APwAMAFT/6wBfAA4Bp//LAan/6QGt/+cBtf/nAbb/5wAJAAsADwA/AAwAVP/rAF8ADgGn/8sBqf/pAa3/5wG1/+cBtv/nAAkACwAPAD8ADABU/+sAXwAOAaf/ywGp/+kBrf/nAbX/5wG2/+cAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QABAFkACwABAFkACwABAFkACwAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QAAQDx/8AAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UACQALABQAPwARAFT/4gBfABMBp/+0Aan/2QGt/9kBtf/ZAbb/2QAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAEAAv/5gA///QAX//vATz/7QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1AAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAYALP/1AC9/+0AvwARAMX/4ADH/+cAyP/lAMn/7gDUABIA5f/pAPH/1wEv/9cBOf/TATv/1gE8/8UBQf/nAUkADQFLAAwBVP/WAVX/8gGp/+kBrf/nAbX/5wG2/+kB3//wAAEBF//xAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAcACH/wwBW/+8AWf/fAJb/7gCz/+UAtP/RAL8AEQDF/8gA1AATAOH/xQDx/8oBL/+fATj/UQE5/3sBO//KATz/3QFB//IBSf91AUv/ygFT/08BVP+MAa3/9QG1//UBuf/HAbr/8QG7/80BvP/dAb7/xAAHAPH/8AEE//EBG//zAS//8QFK//MBTP/pAVT/0wAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UAAQDx//UAAQDx//UAGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AABARf/8QAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAGAMX/6gDo/+4A8f+wAS//7AFU/+wB3P/oABIA1P+uAOEAEgDm/+AA6P+tAOr/1gD4/98A/P/SAQL/4AEX/84BJ//dASn/4gEt/+ABM//gATn/6QE8/9oBRv+9AVD/3wFTABEABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAEgDU/64A4QASAOb/4ADo/60A6v/WAPj/3wD8/9IBAv/gARf/zgEn/90BKf/iAS3/4AEz/+ABOf/pATz/2gFG/70BUP/fAVMAEQAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QASANT/rgDhABIA5v/gAOj/rQDq/9YA+P/fAPz/0gEC/+ABF//OASf/3QEp/+IBLf/gATP/4AE5/+kBPP/aAUb/vQFQ/98BUwARAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAan/6QGt/+cBtf/nAbb/6QHf//AAAQEX//EAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MAHAAh/8MAVv/vAFn/3wCW/+4As//lALT/0QC/ABEAxf/IANQAEwDh/8UA8f/KAS//nwE4/1EBOf97ATv/ygE8/90BQf/yAUn/dQFL/8oBU/9PAVT/jAGt//UBtf/1Abn/xwG6//EBu//NAbz/3QG+/8QABwDx//ABBP/xARv/8wEv//EBSv/zAUz/6QFU/9MABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAFAEj/7gBZ/+oBu//wAbz/7QG+//AAAQDx//UABQBI/+4AWf/qAbv/8AG8/+0Bvv/wAAEA8f/1AAUASP/uAFn/6gG7//ABvP/tAb7/8AABAPH/9QAIANQAFQDoABUBOP/kATn/5QE7/+QBSf/jAUv/4gFT/+QACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAH//3wCw//MAsv/wAL//6gDU/98A4f/gAVP/4AGn/+0Bvf/1AAkAxf/qAOj/uADx/+oBBP/wARv/8QEv/+sBSv/1AVT/7AHc/+oACQB//98AsP/zALL/8AC//+oA1P/fAOH/4AFT/+ABp//tAb3/9QAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAkAf//fALD/8wCy//AAv//qANT/3wDh/+ABU//gAaf/7QG9//UACQDF/+oA6P+4APH/6gEE//ABG//xAS//6wFK//UBVP/sAdz/6gAJAMX/6gDo/7gA8f/qAQT/8AEb//EBL//rAUr/9QFU/+wB3P/qAAEBp//rAAEBp//rACQACP/iAAsAFAAM/88APwASAEj/6gBU/9gAVv/qAF8AEwBr/64Aev/NAH//oACE/8EAh//AALP/0AC3/+oAuv/GALsADQC9/+kAvv/WAMH/6ADC/7oAxf/pAMf/ywDI/9oAyf/HAW7/0wGn/6sBqf/NAa3/ywG1/8sBtv/LAbn/8wG8//MBvf/vAdz/6AHf/+4ABwBIAA0AwQALAML/6gDFAAwA6P/IARf/8QHf//UAJAAI/+IACwAUAAz/zwA/ABIASP/qAFT/2ABW/+oAXwATAGv/rgB6/80Af/+gAIT/wQCH/8AAs//QALf/6gC6/8YAuwANAL3/6QC+/9YAwf/oAML/ugDF/+kAx//LAMj/2gDJ/8cBbv/TAaf/qwGp/80Brf/LAbX/ywG2/8sBuf/zAbz/8wG9/+8B3P/oAd//7gAHAEgADQDBAAsAwv/qAMUADADo/8gBF//xAd//9QAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAcASAANAMEACwDC/+oAxQAMAOj/yAEX//EB3//1ABMAWf/BALP/xQDF/7QA5f/XAPH/uQEE/7IBF//SARv/yAEv/6ABOf/FAUH/5AFK/8wBTP/MAVT/ywFV/+8Bqf/oAa3/5gG1/+cBtv/nAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AA5AFT/tQBZ/8cAa/64AHr/KAB//00AhP+OAIf/oQCz/64Auv9+AL7/ZwDB/4cAwv9lAMX/ngDH/2oAyP9zAMn/XgDU/6UA4QAPAOX/5ADm/6AA6P90AOr/gADx/7IA+P99APr/gAD8/3kBAv99AQT/fwEX/5gBG//aASf/gQEp/5gBLf99AS//swEz/6ABOf98ATv/mgE8/2wBQf/mAUb/awFK/5IBTP+tAVD/ewFTAA8BVP+RAVX/8gGn/68Bqf+5Aa3/uQG1/7kBtv+5Abj/vAG5//EBvP/xAb3/7QHc/6kB3//JABgAs//UAL3/7QC/ABEAxf/gAMf/5wDI/+UAyf/uANQAEgDl/+kA8f/XAS//1wE5/9MBO//WATz/xQFB/+cBSQANAUsADAFU/9YBVf/yAan/6QGt/+cBtf/nAbb/6QHf//AAAQEX//EAMABU/20AWf+MAGv9vwB6/n0Af/68AIT/KwCH/0sAs/9hALr/DwC+/ugAwf8fAML+5QDF/0YAx/7tAMj+/QDJ/tkA1P9SAOEABQDl/70A5v9JAOj+/gDq/xMA8f9oAPj/DgD6/xMA/P8HAQL/DgEE/xEBF/88ARv/rAEn/xUBKf88AS3/DgEv/2oBM/9JATn/DAE7/z8BPP7xAUH/wAFG/u8BSv8xAUz/XwFQ/woBUwAFAVT/MAFV/9UB3P9ZAd//jwACAOj/yQEX/+4AGACz/9QAvf/tAL8AEQDF/+AAx//nAMj/5QDJ/+4A1AASAOX/6QDx/9cBL//XATn/0wE7/9YBPP/FAUH/5wFJAA0BSwAMAVT/1gFV//IBqf/pAa3/5wG1/+cBtv/pAd//8AABARf/8QABAPH/wAAJAOH/wwDx/88BL//OATj/5wE7/98BSf/RAUv/7AFT/6ABVP/RADAAVP9tAFn/jABr/b8Aev59AH/+vACE/ysAh/9LALP/YQC6/w8Avv7oAMH/HwDC/uUAxf9GAMf+7QDI/v0Ayf7ZANT/UgDhAAUA5f+9AOb/SQDo/v4A6v8TAPH/aAD4/w4A+v8TAPz/BwEC/w4BBP8RARf/PAEb/6wBJ/8VASn/PAEt/w4BL/9qATP/SQE5/wwBO/8/ATz+8QFB/8ABRv7vAUr/MQFM/18BUP8KAVMABQFU/zABVf/VAdz/WQHf/48AEwBZ/8EAs//FAMX/tADl/9cA8f+5AQT/sgEX/9IBG//IAS//oAE5/8UBQf/kAUr/zAFM/8wBVP/LAVX/7wGp/+gBrf/mAbX/5wG2/+cACADUABUA6AAVATj/5AE5/+UBO//kAUn/4wFL/+IBU//kAAgA1AAVAOgAFQE4/+QBOf/lATv/5AFJ/+MBS//iAVP/5AAkAAj/4gALABQADP/PAD8AEgBI/+oAVP/YAFb/6gBfABMAa/+uAHr/zQB//6AAhP/BAIf/wACz/9AAt//qALr/xgC7AA0Avf/pAL7/1gDB/+gAwv+6AMX/6QDH/8sAyP/aAMn/xwFu/9MBp/+rAan/zQGt/8sBtf/LAbb/ywG5//MBvP/zAb3/7wHc/+gB3//uAAEwsgAEAAAACgAeAHQDpgQkBI4E0AXuBuQHQgdcABUAOAAUADkAEgA7ABYBFAAUAgsAFgKSABIClAAWApYAFgL9ABYDDAAWAw8AFgNFABIDRwASA0kAEgNLABYDYAAUA2gAFgPqABYD7AAWA+4AFgQTABYAzAAO/xYAEP8WACP/VgAs/vgANgAUAEP/3gBF/+sARv/rAEf/6wBJ/+sAUf/rAFP/6wBX/+oAWP/oAFv/6ACR/+sAlf/rAJf/6gCt/1YAr/9WALb/6wC4/+gAw//rAMT/6wDG/+oAzQAUANEAFADy/+sA/v/rAQj/VgET/+sBFf/oARn/6wEd/+sBLgAUATX/6wE2ABQBR//rAUj/6wFS/+sBZ/8WAWv/FgFv/xYBcP8WAfH/VgHy/1YB8/9WAfT/VgH1/1YB9v9WAff/VgIM/94CDf/eAg7/3gIP/94CEP/eAhH/3gIS/94CE//rAhT/6wIV/+sCFv/rAhf/6wId/+sCHv/rAh//6wIg/+sCIf/rAiL/6gIj/+oCJP/qAiX/6gIm/+gCJ//oAij/VgIp/94CKv9WAiv/3gIs/1YCLf/eAi//6wIx/+sCM//rAjX/6wI3/+sCOf/rAjv/6wI9/+sCP//rAkH/6wJD/+sCRf/rAkf/6wJJ/+sCV/74Amv/6wJt/+sCb//rAoAAFAKCABQChAAUAof/6gKJ/+oCi//qAo3/6gKP/+oCkf/qApX/6AL4/1YDAP9WAxD/6wMU/+oDFv/rAxj/6AMb/+oDHP/rAx3/6gMk/vgDKP9WAzMAFAM1/94DNv/rAzj/6wM6/+sDO//oAz3/6wNE/+gDTP/oA1X/VgNW/94DXP/rA2H/6ANi/+sDZ//rA2n/6ANu/1YDb//eA3D/VgNx/94Ddf/rA3f/6wN4/+sDgv/rA4T/6wOG/+sDiv/oA4z/6AOO/+gDlf/rA5j/VgOZ/94Dmv9WA5v/3gOc/1YDnf/eA57/VgOf/94DoP9WA6H/3gOi/1YDo//eA6T/VgOl/94Dpv9WA6f/3gOo/1YDqf/eA6r/VgOr/94DrP9WA63/3gOu/1YDr//eA7H/6wOz/+sDtf/rA7f/6wO5/+sDu//rA73/6wO//+sDxf/rA8f/6wPJ/+sDy//rA83/6wPP/+sD0f/rA9P/6wPV/+sD1//rA9n/6wPb/+sD3f/qA9//6gPh/+oD4//qA+X/6gPn/+oD6f/qA+v/6APt/+gD7//oA/YAFAAfADb/1QA4/+QAOf/sADv/3QDN/9UA0f/VART/5AEu/9UBNv/VAgv/3QKA/9UCgv/VAoT/1QKS/+wClP/dApb/3QL9/90DDP/dAw//3QMz/9UDRf/sA0f/7ANJ/+wDS//dA2D/5ANo/90D6v/dA+z/3QPu/90D9v/VBBP/3QAaADb/sAA4/+0AO//QAM3/sADR/7ABFP/tAS7/sAE2/7ACC//QAoD/sAKC/7AChP+wApT/0AKW/9AC/f/QAwz/0AMP/9ADM/+wA0v/0ANg/+0DaP/QA+r/0APs/9AD7v/QA/b/sAQT/9AAEAAs/+4AN//uAgf/7gII/+4CCf/uAgr/7gJX/+4Chv/uAoj/7gKK/+4CjP/uAo7/7gKQ/+4DJP/uA9z/7gPe/+4ARwAEABAACQAQAEX/6ABG/+gAR//oAEn/6ABT/+gAkf/oAJX/6AC2/+gAw//oAMT/6ADy/+gA/v/oARn/6AEd/+gBNf/oAUf/6AFI/+gBUv/oAWUAEAFmABABaAAQAWkAEAFqABACE//oAhT/6AIV/+gCFv/oAhf/6AIv/+gCMf/oAjP/6AI1/+gCN//oAjn/6AI7/+gCPf/oAj//6AJB/+gCQ//oAkX/6AJH/+gCSf/oAxD/6AM2/+gDOv/oAz3/6ANNABADTgAQA1IAEANc/+gDYv/oA2f/6AN1/+gDd//oA3j/6AOE/+gDlf/oA7H/6AOz/+gDtf/oA7f/6AO5/+gDu//oA73/6AO//+gD0//oA9X/6APX/+gD2//oAD0ARf/sAEb/7ABH/+wASf/sAFP/7ACR/+wAlf/sALb/7ADD/+wAxP/sAPL/7AD+/+wBGf/sAR3/7AE1/+wBR//sAUj/7AFS/+wCE//sAhT/7AIV/+wCFv/sAhf/7AIv/+wCMf/sAjP/7AI1/+wCN//sAjn/7AI7/+wCPf/sAj//7AJB/+wCQ//sAkX/7AJH/+wCSf/sAxD/7AM2/+wDOv/sAz3/7ANc/+wDYv/sA2f/7AN1/+wDd//sA3j/7AOE/+wDlf/sA7H/7AOz/+wDtf/sA7f/7AO5/+wDu//sA73/7AO//+wD0//sA9X/7APX/+wD2//sABcAUf/sARP/7AId/+wCHv/sAh//7AIg/+wCIf/sAmv/7AJt/+wCb//sAxb/7AMc/+wDOP/sA4L/7AOG/+wDxf/sA8f/7APJ/+wDy//sA83/7APP/+wD0f/sA9n/7AAGAA7/hAAQ/4QBZ/+EAWv/hAFv/4QBcP+EABAALP/sADf/7AIH/+wCCP/sAgn/7AIK/+wCV//sAob/7AKI/+wCiv/sAoz/7AKO/+wCkP/sAyT/7APc/+wD3v/sAAEpLAAEAAAAIgBOAMQBqgKQA2oEBAaeCGQJNgosC/IMJAxWDNQOug8wEAISFBLKFDAU6hVwFc4WkBcGFxgXQhiUGtIa9BwKHIgcshzcAB0ABP/yAAn/8gBY//MAW//zALj/8wEV//MBZf/yAWb/8gFo//IBaf/yAWr/8gIm//MCJ//zApX/8wMY//MDO//zA0T/8wNM//MDTf/yA07/8gNS//IDYf/zA2n/8wOK//MDjP/zA47/8wPr//MD7f/zA+//8wA5ACX/8wAp//MAMf/zADP/8wCB//MAkP/zAJT/8wCu//MAzv/zAQP/8wES//MBFv/zARj/8wEa//MBHP/zATT/8wFR//MB+P/zAgL/8wID//MCBP/zAgX/8wIG//MCLv/zAjD/8wIy//MCNP/zAkL/8wJE//MCRv/zAkj/8wJq//MCbP/zAm7/8wKf//MC/P/zAwn/8wMv//MDMv/zA1f/8wNj//MDZv/zA4H/8wOD//MDhf/zA8T/8wPG//MDyP/zA8r/8wPM//MDzv/zA9D/8wPS//MD1P/zA9b/8wPY//MD2v/zADkAJf/mACn/5gAx/+YAM//mAIH/5gCQ/+YAlP/mAK7/5gDO/+YBA//mARL/5gEW/+YBGP/mARr/5gEc/+YBNP/mAVH/5gH4/+YCAv/mAgP/5gIE/+YCBf/mAgb/5gIu/+YCMP/mAjL/5gI0/+YCQv/mAkT/5gJG/+YCSP/mAmr/5gJs/+YCbv/mAp//5gL8/+YDCf/mAy//5gMy/+YDV//mA2P/5gNm/+YDgf/mA4P/5gOF/+YDxP/mA8b/5gPI/+YDyv/mA8z/5gPO/+YD0P/mA9L/5gPU/+YD1v/mA9j/5gPa/+YANgAj/+QAOv/SADv/0wCt/+QAr//kANX/0gEI/+QB8f/kAfL/5AHz/+QB9P/kAfX/5AH2/+QB9//kAgv/0wIo/+QCKv/kAiz/5AKU/9MClv/TAvj/5AL9/9MDAP/kAwz/0wMN/9IDD//TAyj/5AM0/9IDS//TA1X/5ANo/9MDa//SA27/5ANw/+QDef/SA5P/0gOY/+QDmv/kA5z/5AOe/+QDoP/kA6L/5AOk/+QDpv/kA6j/5AOq/+QDrP/kA67/5APq/9MD7P/TA+7/0wP4/9IEAP/SBBP/0wAmAA7/HgAQ/x4AI//NAK3/zQCv/80BCP/NAWf/HgFr/x4Bb/8eAXD/HgHx/80B8v/NAfP/zQH0/80B9f/NAfb/zQH3/80CKP/NAir/zQIs/80C+P/NAwD/zQMo/80DVf/NA27/zQNw/80DmP/NA5r/zQOc/80Dnv/NA6D/zQOi/80DpP/NA6b/zQOo/80Dqv/NA6z/zQOu/80ApgBF/9wARv/cAEf/3ABJ/9wAT//zAFD/8wBR/9YAUv/zAFP/3ABX/90AWP/hAFv/4QCR/9wAlf/cAJf/3QC2/9wAuP/hALz/8wDD/9wAxP/cAMb/3QDn//MA6//zAOz/8wDu//MA7//zAPD/8wDy/9wA8//zAPX/8wD2//MA+f/zAPv/8wD+/9wBAP/zARP/1gEV/+EBGf/cAR3/3AEx//MBNf/cAUD/8wFF//MBR//cAUj/3AFS/9wCE//cAhT/3AIV/9wCFv/cAhf/3AIc//MCHf/WAh7/1gIf/9YCIP/WAiH/1gIi/90CI//dAiT/3QIl/90CJv/hAif/4QIv/9wCMf/cAjP/3AI1/9wCN//cAjn/3AI7/9wCPf/cAj//3AJB/9wCQ//cAkX/3AJH/9wCSf/cAmT/8wJm//MCaP/zAmn/8wJr/9YCbf/WAm//1gKH/90Cif/dAov/3QKN/90Cj//dApH/3QKV/+EDEP/cAxL/8wMU/90DFv/WAxj/4QMb/90DHP/WAx3/3QM2/9wDN//zAzj/1gM5//MDOv/cAzv/4QM9/9wDPv/zA0P/8wNE/+EDTP/hA1T/8wNc/9wDXf/zA2H/4QNi/9wDZ//cA2n/4QN1/9wDd//cA3j/3AN+//MDgP/zA4L/1gOE/9wDhv/WA4r/4QOM/+EDjv/hA5L/8wOV/9wDsf/cA7P/3AO1/9wDt//cA7n/3AO7/9wDvf/cA7//3APF/9YDx//WA8n/1gPL/9YDzf/WA8//1gPR/9YD0//cA9X/3APX/9wD2f/WA9v/3APd/90D3//dA+H/3QPj/90D5f/dA+f/3QPp/90D6//hA+3/4QPv/+ED8//zA/X/8wP///MEDP/zBA7/8wQQ//MAcQAE/9oACf/aAEX/8ABG//AAR//wAEn/8ABT//AAV//vAFj/3ABb/9wAkf/wAJX/8ACX/+8Atv/wALj/3ADD//AAxP/wAMb/7wDy//AA/v/wARX/3AEZ//ABHf/wATX/8AFH//ABSP/wAVL/8AFl/9oBZv/aAWj/2gFp/9oBav/aAhP/8AIU//ACFf/wAhb/8AIX//ACIv/vAiP/7wIk/+8CJf/vAib/3AIn/9wCL//wAjH/8AIz//ACNf/wAjf/8AI5//ACO//wAj3/8AI///ACQf/wAkP/8AJF//ACR//wAkn/8AKH/+8Cif/vAov/7wKN/+8Cj//vApH/7wKV/9wDEP/wAxT/7wMY/9wDG//vAx3/7wM2//ADOv/wAzv/3AM9//ADRP/cA0z/3ANN/9oDTv/aA1L/2gNc//ADYf/cA2L/8ANn//ADaf/cA3X/8AN3//ADeP/wA4T/8AOK/9wDjP/cA47/3AOV//ADsf/wA7P/8AO1//ADt//wA7n/8AO7//ADvf/wA7//8APT//AD1f/wA9f/8APb//AD3f/vA9//7wPh/+8D4//vA+X/7wPn/+8D6f/vA+v/3APt/9wD7//cADQABP+gAAn/oABX//EAWP/FAFv/xQCX//EAuP/FAMb/8QEV/8UBZf+gAWb/oAFo/6ABaf+gAWr/oAIi//ECI//xAiT/8QIl//ECJv/FAif/xQKH//ECif/xAov/8QKN//ECj//xApH/8QKV/8UDFP/xAxj/xQMb//EDHf/xAzv/xQNE/8UDTP/FA03/oANO/6ADUv+gA2H/xQNp/8UDiv/FA4z/xQOO/8UD3f/xA9//8QPh//ED4//xA+X/8QPn//ED6f/xA+v/xQPt/8UD7//FAD0ARf/nAEb/5wBH/+cASf/nAFP/5wCR/+cAlf/nALb/5wDD/+cAxP/nAPL/5wD+/+cBGf/nAR3/5wE1/+cBR//nAUj/5wFS/+cCE//nAhT/5wIV/+cCFv/nAhf/5wIv/+cCMf/nAjP/5wI1/+cCN//nAjn/5wI7/+cCPf/nAj//5wJB/+cCQ//nAkX/5wJH/+cCSf/nAxD/5wM2/+cDOv/nAz3/5wNc/+cDYv/nA2f/5wN1/+cDd//nA3j/5wOE/+cDlf/nA7H/5wOz/+cDtf/nA7f/5wO5/+cDu//nA73/5wO//+cD0//nA9X/5wPX/+cD2//nAHEABAAMAAkADABF/+gARv/oAEf/6ABJ/+gAUf/qAFP/6ABYAAsAWwALAJH/6ACV/+gAtv/oALgACwDD/+gAxP/oAPL/6AD+/+gBE//qARUACwEZ/+gBHf/oATX/6AFH/+gBSP/oAVL/6AFlAAwBZgAMAWgADAFpAAwBagAMAhP/6AIU/+gCFf/oAhb/6AIX/+gCHf/qAh7/6gIf/+oCIP/qAiH/6gImAAsCJwALAi//6AIx/+gCM//oAjX/6AI3/+gCOf/oAjv/6AI9/+gCP//oAkH/6AJD/+gCRf/oAkf/6AJJ/+gCa//qAm3/6gJv/+oClQALAxD/6AMW/+oDGAALAxz/6gM2/+gDOP/qAzr/6AM7AAsDPf/oA0QACwNMAAsDTQAMA04ADANSAAwDXP/oA2EACwNi/+gDZ//oA2kACwN1/+gDd//oA3j/6AOC/+oDhP/oA4b/6gOKAAsDjAALA44ACwOV/+gDsf/oA7P/6AO1/+gDt//oA7n/6AO7/+gDvf/oA7//6APF/+oDx//qA8n/6gPL/+oDzf/qA8//6gPR/+oD0//oA9X/6APX/+gD2f/qA9v/6APrAAsD7QALA+8ACwAMAFr/7QBc/+0A6f/tApj/7QKa/+0CnP/tAzz/7QNs/+0Dev/tA5T/7QP5/+0EAf/tAAwAWv/yAFz/8gDp//ICmP/yApr/8gKc//IDPP/yA2z/8gN6//IDlP/yA/n/8gQB//IAHwBY//QAWv/yAFv/9ABc//MAuP/0AOn/8gEV//QCJv/0Aif/9AKV//QCmP/zApr/8wKc//MDGP/0Azv/9AM8//IDRP/0A0z/9ANh//QDaf/0A2z/8gN6//IDiv/0A4z/9AOO//QDlP/yA+v/9APt//QD7//0A/n/8gQB//IAeQAE/8oACf/KADb/0gA4/9QAOv/0ADv/0wBP/9EAUP/RAFL/0QBY/+YAWv/vAFv/5gC4/+YAvP/RAM3/0gDR/9IA1f/0ANn/7QDc/+EA5//RAOn/7wDr/9EA7P/RAO7/0QDv/9EA8P/RAPP/0QD1/9EA9v/RAPn/0QD7/9EBAP/RART/1AEV/+YBLv/SATH/0QE2/9IBQP/RAUX/0QFl/8oBZv/KAWj/ygFp/8oBav/KAgv/0wIc/9ECJv/mAif/5gJk/9ECZv/RAmj/0QJp/9ECgP/SAoL/0gKE/9IClP/TApX/5gKW/9MC/f/TAwz/0wMN//QDD//TAxL/0QMY/+YDJ//tAzP/0gM0//QDN//RAzn/0QM7/+YDPP/vAz7/0QND/9EDRP/mA0v/0wNM/+YDTf/KA07/ygNS/8oDVP/RA13/0QNg/9QDYf/mA2j/0wNp/+YDa//0A2z/7wN5//QDev/vA37/0QOA/9EDif/tA4r/5gOL/+0DjP/mA43/7QOO/+YDj//hA5L/0QOT//QDlP/vA+r/0wPr/+YD7P/TA+3/5gPu/9MD7//mA/P/0QP1/9ED9v/SA/j/9AP5/+8D+v/hA/z/4QP//9EEAP/0BAH/7wQM/9EEDv/RBBD/0QQT/9MAHQA2/74AWP/vAFv/7wC4/+8Azf++ANH/vgEV/+8BLv++ATb/vgIm/+8CJ//vAoD/vgKC/74ChP++ApX/7wMY/+8DM/++Azv/7wNE/+8DTP/vA2H/7wNp/+8Div/vA4z/7wOO/+8D6//vA+3/7wPv/+8D9v++ADQANv/mADj/5wA6//IAO//nAFr/8QDN/+YA0f/mANX/8gDZ/+4A3P/oAOn/8QEU/+cBLv/mATb/5gIL/+cCgP/mAoL/5gKE/+YClP/nApb/5wL9/+cDDP/nAw3/8gMP/+cDJ//uAzP/5gM0//IDPP/xA0v/5wNg/+cDaP/nA2v/8gNs//EDef/yA3r/8QOJ/+4Di//uA43/7gOP/+gDk//yA5T/8QPq/+cD7P/nA+7/5wP2/+YD+P/yA/n/8QP6/+gD/P/oBAD/8gQB//EEE//nAIQAIwAQACX/6AAp/+gAMf/oADP/6AA2/+AAOP/gADv/3wCB/+gAkP/oAJT/6ACtABAArv/oAK8AEADN/+AAzv/oAM8AEADR/+AA2AAQANz/4QDtABAA9P/gAP8AEAED/+gBCAAQARL/6AEU/+ABFv/oARj/6AEa/+gBHP/oAS7/4AE0/+gBNv/gAU0AEAFR/+gB8QAQAfIAEAHzABAB9AAQAfUAEAH2ABAB9wAQAfj/6AIC/+gCA//oAgT/6AIF/+gCBv/oAgv/3wIoABACKgAQAiwAEAIu/+gCMP/oAjL/6AI0/+gCQv/oAkT/6AJG/+gCSP/oAmr/6AJs/+gCbv/oAoD/4AKC/+AChP/gApT/3wKW/98Cn//oAvgAEAL8/+gC/f/fAwAAEAMJ/+gDDP/fAw//3wMoABADL//oAzL/6AMz/+ADS//fA1UAEANX/+gDYP/gA2P/6ANm/+gDaP/fA24AEANwABADgf/oA4P/6AOF/+gDj//hA5D/4AOWABADlwAQA5gAEAOaABADnAAQA54AEAOgABADogAQA6QAEAOmABADqAAQA6oAEAOsABADrgAQA8T/6APG/+gDyP/oA8r/6APM/+gDzv/oA9D/6APS/+gD1P/oA9b/6APY/+gD2v/oA+r/3wPs/98D7v/fA/b/4AP6/+ED+//gA/z/4QP9/+AEEQAQBBIAEAQT/98ALQA2//EAOP/0ADr/9AA7//AAzf/xAM//9QDR//EA1f/0ANj/9QDZ//MBFP/0AS7/8QE2//EBTf/1Agv/8AKA//ECgv/xAoT/8QKU//AClv/wAv3/8AMM//ADDf/0Aw//8AMn//MDM//xAzT/9ANL//ADYP/0A2j/8ANr//QDef/0A4n/8wOL//MDjf/zA5P/9AOW//UD6v/wA+z/8APu//AD9v/xA/j/9AQA//QEEf/1BBP/8ABZACMADwA2/+YAOP/mADoADgA7/+YArQAPAK8ADwDN/+YAzwAOANH/5gDVAA4A2AAOANkACwDc/+UA7QAPAPT/6AD/AA8BCAAPART/5gEu/+YBNv/mAU0ADgHxAA8B8gAPAfMADwH0AA8B9QAPAfYADwH3AA8CC//mAigADwIqAA8CLAAPAoD/5gKC/+YChP/mApT/5gKW/+YC+AAPAv3/5gMAAA8DDP/mAw0ADgMP/+YDJwALAygADwMz/+YDNAAOA0v/5gNVAA8DYP/mA2j/5gNrAA4DbgAPA3AADwN5AA4DiQALA4sACwONAAsDj//lA5D/6AOTAA4DlgAOA5cADwOYAA8DmgAPA5wADwOeAA8DoAAPA6IADwOkAA8DpgAPA6gADwOqAA8DrAAPA64ADwPq/+YD7P/mA+7/5gP2/+YD+AAOA/r/5QP7/+gD/P/lA/3/6AQAAA4EEQAOBBIADwQT/+YALgA2/+MAOv/lADv/5ADN/+MAz//lANH/4wDV/+UA2P/lANn/6QDt/+oA///qAS7/4wE2/+MBTf/lAgv/5AKA/+MCgv/jAoT/4wKU/+QClv/kAv3/5AMM/+QDDf/lAw//5AMn/+kDM//jAzT/5QNL/+QDaP/kA2v/5QN5/+UDif/pA4v/6QON/+kDk//lA5b/5QOX/+oD6v/kA+z/5APu/+QD9v/jA/j/5QQA/+UEEf/lBBL/6gQT/+QAIQA2/+IAOv/kAM3/4gDP/+QA0f/iANX/5ADY/+QA2f/pAO3/6wD//+sBLv/iATb/4gFN/+QCgP/iAoL/4gKE/+IDDf/kAyf/6QMz/+IDNP/kA2v/5AN5/+QDif/pA4v/6QON/+kDk//kA5b/5AOX/+sD9v/iA/j/5AQA/+QEEf/kBBL/6wAXADb/6wA7//MAzf/rANH/6wEu/+sBNv/rAgv/8wKA/+sCgv/rAoT/6wKU//MClv/zAv3/8wMM//MDD//zAzP/6wNL//MDaP/zA+r/8wPs//MD7v/zA/b/6wQT//MAMABP/+8AUP/vAFL/7wBa//AAvP/vAOf/7wDp//AA6//vAOz/7wDu/+8A7//vAPD/7wDz/+8A9f/vAPb/7wD5/+8A+//vAQD/7wEx/+8BQP/vAUX/7wIc/+8CZP/vAmb/7wJo/+8Caf/vAxL/7wM3/+8DOf/vAzz/8AM+/+8DQ//vA1T/7wNd/+8DbP/wA3r/8AN+/+8DgP/vA5L/7wOU//AD8//vA/X/7wP5//AD///vBAH/8AQM/+8EDv/vBBD/7wAdAAT/8gAJ//IAWP/1AFv/9QC4//UBFf/1AWX/8gFm//IBaP/yAWn/8gFq//ICJv/1Aif/9QKV//UDGP/1Azv/9QNE//UDTP/1A03/8gNO//IDUv/yA2H/9QNp//UDiv/1A4z/9QOO//UD6//1A+3/9QPv//UABAD0/+0DkP/tA/v/7QP9/+0ACgAE//UACf/1AWX/9QFm//UBaP/1AWn/9QFq//UDTf/1A07/9QNS//UAVABF//AARv/wAEf/8ABJ//AAUf/rAFP/8ACR//AAlf/wALb/8ADD//AAxP/wAPL/8AD+//ABE//rARn/8AEd//ABNf/wAUf/8AFI//ABUv/wAhP/8AIU//ACFf/wAhb/8AIX//ACHf/rAh7/6wIf/+sCIP/rAiH/6wIv//ACMf/wAjP/8AI1//ACN//wAjn/8AI7//ACPf/wAj//8AJB//ACQ//wAkX/8AJH//ACSf/wAmv/6wJt/+sCb//rAxD/8AMW/+sDHP/rAzb/8AM4/+sDOv/wAz3/8ANc//ADYv/wA2f/8AN1//ADd//wA3j/8AOC/+sDhP/wA4b/6wOV//ADsf/wA7P/8AO1//ADt//wA7n/8AO7//ADvf/wA7//8APF/+sDx//rA8n/6wPL/+sDzf/rA8//6wPR/+sD0//wA9X/8APX//AD2f/rA9v/8ACPAAQADQAJAA0AQ//wAEX/sABG/7AAR/+wAEn/sABR/9YAU/+wAFgACwBbAAsAkf+wAJX/sAC2/7AAuAALAMT/sADt/68A8v+wAP7/sAD//68BE//WARUACwEZ/7ABHf+wATX/sAFH/7ABSP+wAVL/sAFlAA0BZgANAWgADQFpAA0BagANAgz/8AIN//ACDv/wAg//8AIQ//ACEf/wAhL/8AIT/7ACFP+wAhX/sAIW/7ACF/+wAh3/1gIe/9YCH//WAiD/1gIh/9YCJgALAicACwIp//ACK//wAi3/8AIv/7ACMf+wAjP/sAI1/7ACN/+wAjn/sAI7/7ACPf+wAj//sAJB/7ACQ/+wAkX/sAJH/7ACSf+wAmv/1gJt/9YCb//WApUACwMQ/7ADFv/WAxgACwMc/9YDNf/wAzb/sAM4/9YDOv+wAzsACwM9/7ADRAALA0wACwNNAA0DTgANA1IADQNW//ADXP+wA2EACwNi/7ADZ/+wA2kACwNv//ADcf/wA3X/sAN3/7ADeP+wA4L/1gOE/7ADhv/WA4oACwOMAAsDjgALA5X/sAOX/68Dmf/wA5v/8AOd//ADn//wA6H/8AOj//ADpf/wA6f/8AOp//ADq//wA63/8AOv//ADsf+wA7P/sAO1/7ADt/+wA7n/sAO7/7ADvf+wA7//sAPF/9YDx//WA8n/1gPL/9YDzf/WA8//1gPR/9YD0/+wA9X/sAPX/7AD2f/WA9v/sAPrAAsD7QALA+8ACwQS/68ACADtABAA9P/wAP8AEAOQ//ADlwAQA/v/8AP9//AEEgAQAEUARQAMAEYADABHAAwASQAMAFMADACRAAwAlQAMALYADADDAAwAxAAMAO0AGADyAAwA9P/3AP4ADAD/ABgBGQAMAR0ADAE1AAwBRwAMAUgADAFSAAwCEwAMAhQADAIVAAwCFgAMAhcADAIvAAwCMQAMAjMADAI1AAwCNwAMAjkADAI7AAwCPQAMAj8ADAJBAAwCQwAMAkUADAJHAAwCSQAMAxAADAM2AAwDOgAMAz0ADANcAAwDYgAMA2cADAN1AAwDdwAMA3gADAOEAAwDkP/3A5UADAOXABgDsQAMA7MADAO1AAwDtwAMA7kADAO7AAwDvQAMA78ADAPTAAwD1QAMA9cADAPbAAwD+//3A/3/9wQSABgAHwBY//QAWv/wAFv/9AC4//QA6f/wAO3/8wD///MBFf/0Aib/9AIn//QClf/0Axj/9AM7//QDPP/wA0T/9ANM//QDYf/0A2n/9ANs//ADev/wA4r/9AOM//QDjv/0A5T/8AOX//MD6//0A+3/9APv//QD+f/wBAH/8AQS//MACgAE/9YACf/WAWX/1gFm/9YBaP/WAWn/1gFq/9YDTf/WA07/1gNS/9YACgAE//UACf/1AWX/9QFm//UBaP/1AWn/9QFq//UDTf/1A07/9QNS//UAXgAEAAsACQALAEX/6wBG/+sAR//rAEn/6wBR/+kAU//rAJH/6wCV/+sAtv/rAMP/6wDE/+sA8v/rAP7/6wET/+kBGf/rAR3/6wE1/+sBR//rAUj/6wFS/+sBZQALAWYACwFoAAsBaQALAWoACwIT/+sCFP/rAhX/6wIW/+sCF//rAh3/6QIe/+kCH//pAiD/6QIh/+kCL//rAjH/6wIz/+sCNf/rAjf/6wI5/+sCO//rAj3/6wI//+sCQf/rAkP/6wJF/+sCR//rAkn/6wJr/+kCbf/pAm//6QMQ/+sDFv/pAxz/6QM2/+sDOP/pAzr/6wM9/+sDTQALA04ACwNSAAsDXP/rA2L/6wNn/+sDdf/rA3f/6wN4/+sDgv/pA4T/6wOG/+kDlf/rA7H/6wOz/+sDtf/rA7f/6wO5/+sDu//rA73/6wO//+sDxf/pA8f/6QPJ/+kDy//pA83/6QPP/+kD0f/pA9P/6wPV/+sD1//rA9n/6QPb/+sAAgseAAQAAA3mFToAIQAdAAAAEf/O/48AEv/1/+//iP/0/7v/f//1AAz/qf+i/8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+UAAAAA/+j/yQAA//MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAD/5QARAAAAAAAAAAAAAP/jAAAAAAAA/+T/5AAAABIAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAAAAD/5QAAAAD/6v/VAAAAAP/r/+r/mv/pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+YAAAAAAAAAAAAA/+0AAAAU/+8AAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAAAAAAAAAAD/y/+4/3z/fv/kAAAAAP+dAA8AEP+h/8QAEAAQAAAAAP+xAAD/JgAA/53/s/8Y/5P/8P+P/4z/EAAA/5L/cv8M/w//vQAAAAD/RAAFAAf/S/+GAAcABwAAAAD/PgAA/noAAP9E/2r+Yv8z/9H/LP8nAAAAAAAAAAAAAP/YAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP/Y/6MAAP/hAAAAAP/lAAAAAP/pAAAAAAAAAAAAAAAAAAAAAAAA/+YAAP/A/+kAAAAAAAAAAAAAAAD/ewAAAAD/v//K/3YAAP9x/u3/1AAA/1H/EQAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/JAA8AAP/ZAAAAAAAA//MAAAAAAAAAAAAAAAAAAAAA/3b/4f68/+b/8wAAAAAAAAAA//UAAP84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/8wAAAAD/0gAAAAD/5AAAAAAAAAAAAAD/tQAA/x8AAP/UAAD/2wAAAAD/0gAAAAAAAAAR/+H/0QAR/+cAAAAA/+sAAAAA/+sAAAAOAAAAAAAAAAAAAAAAAAD/5gAA/9IAAAAAAAAAAAAAAAAAAP/sAAAAAP/j/6AAAP+/ABEAEf/Z/+IAEgASAAAAAP+iAA3/LQAA/7//6f/M/9j/8P+3/8b/oAAAAAAAAAAAAAAAAAAAAAD/4QAAAA7/7QAAAAAAAAAAAAD/1QAA/4UAAP/hAAD/xAAAAAD/3wAAAAAAAAAA/+UAAAAA/+YAAAAA/+sAAAAA/+0AAAAAAAAAAAAAAA0AAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAD/ygAA/+n/u//pAAAAAP+9AAAAEgAAAAAAAAASAAAAAP+lAAD+bQAA/70AAP+J/5oAAP+R/9IAAAAAAAD/8QAAAAAAAAAA/70AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAD/8gAAAAD/4wAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAAAAAAAAAAAAAAAAAD/8wAAAAAAAAAA//IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/xAAD/8AAAAAD/7AAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAAAAAA//8QAAAAAAAAAAAAAAAAAAAAAAAAAA/5UAAP/zAAAAAAAAAAD/8QAAAAAAAAAAABIAAAAAAAAAAAAQ/+wAAAAAAAAAAAAAAAAAAAAAAAAAAP+FAAD/7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+V/8MAAAAAAAAAAAAAAAAAAAAA/4gAAAAAAAD/xQAAAAD/7AAA/87/sAAAAAAAAAAAAAAAAAAAAAD/VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//UAAAAAAAAAAAAA/8AAAAAA/vUAAAAA/8j/rf/n/+sAAP/wAAAAAAAA/8kAAAAAAAAAAAAAAAAAAAAA/93/2QAAAAAAAP95AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/1AAAAAAAAAAAAAAAAAAIAiAAEAAQAAAAJAAkAAQARABEAAgAjACgAAwAqADMACQA2ADwAEwBDAEQAGgBHAEgAHABKAEoAHgBPAFIAHwBUAFQAIwBYAFgAJABaAFsAJQCIAIgAJwCZAJkAKACsALAAKQCyALQALgC2ALYAMQC4ALkAMgC7ALwANAC+AMAANgDCAMcAOQDNAM0APwDPANkAQADbANsASwDdAN8ATADhAOMATwDlAOkAUgDsAOwAVwDxAPMAWAD2APcAWwD5APsAXQD/AQAAYAEFAQUAYgEIAQgAYwETARUAZAEnASkAZwEsASwAagEuAS4AawFFAUUAbAFlAWYAbQFoAWoAbwGmAaYAcgGpAakAcwGrAasAdAGwAbEAdQG0AbYAdwG4Ab4AegHEAcQAgQHbAdwAggHoAegAhAHsAe0AhQHvAe8AhwHxAhIAiAIUAhcAqgIcAiEArgImAi4AtAIwAjAAvQIyAjIAvgI0AjQAvwI2AjYAwAI4AkEAwQJKAkwAywJOAk4AzgJQAlAAzwJSAlIA0AJUAlQA0QJXAlcA0gJZAlkA0wJbAlsA1AJdAl0A1QJfAl8A1gJhAmEA1wJjAm8A2AJxAnEA5QJzAnMA5gJ1AnUA5wKAAoAA6AKCAoIA6QKEAoQA6gKGAoYA6wKIAogA7AKKAooA7QKMAowA7gKOAo4A7wKQApAA8AKSApIA8QKUApcA8gKZApkA9gKbApsA9wL4Av0A+AMAAw8A/gMSAxIBDgMWAxYBDwMYAxgBEAMcAxwBEQMfAyABEgMiAysBFAMtAy8BHgMxAzYBIQM4AzkBJwM7Az4BKQNEA0UBLQNHA0cBLwNJA0kBMANLA04BMQNSA1cBNQNaA1oBOwNcA1wBPANgA2EBPQNmA2YBPwNoA3EBQAN0A3UBSgN3A3oBTAOBA4IBUAOGA4YBUgOIA44BUwOTA5QBWgOYA8ABXAPCA8IBhQPEA9EBhgPZA9kBlAPcA9wBlQPeA94BlgPqA+8BlwPyA/IBnQP0A/QBngP2A/YBnwP4A/kBoAP+BAEBogQEBAQBpgQGBAcBpwQJBAkBqQQNBA0BqgQPBA8BqwQTBBMBrAABAAoACgAoADMANAA9AEgATQBWAFkAXQABACIAmQCwALIAswC0ALsAvgC/AMAAxQDHAMgAyQDNANEA0wDUANYA3gDiAOMA5ADlAOYA6ADqAOwA8QDzAPYA+wD+AR0B3AACAHYABAAEAAAACQAJAAEADgAOAAIAEAAQAAMAIwAnAAQAKgAyAAkANgA8ABIAQwBFABkARwBHABwASgBKAB0ATwBSAB4AVABUACIAWABYACMAWgBcACQAiACIACcArACvACgAuAC4ACwAvAC8AC0AwgDCAC4AzwDQAC8A0gDSADEA1QDVADIA1wDZADMA2wDbADYA3QDdADcA3wDfADgA4QDhADkA5wDnADoA6QDpADsA8gDyADwA9wD3AD0A+QD6AD4A/wEAAEABBQEFAEIBCAEIAEMBEwEVAEQBJwEpAEcBLAEsAEoBLgEuAEsBRQFFAEwBZQFrAE0BbwFwAFQB7AHtAFYB7wHvAFgB8QIXAFkCHAIhAIACJgI2AIYCOAJBAJcCSgJMAKECTgJOAKQCUAJQAKUCUgJSAKYCVAJUAKcCVwJXAKgCWQJZAKkCWwJbAKoCXQJdAKsCXwJfAKwCYQJhAK0CYwJvAK4CcQJxALsCcwJzALwCdQJ1AL0CgAKAAL4CggKCAL8ChAKEAMAChgKGAMECiAKIAMICigKKAMMCjAKMAMQCjgKOAMUCkAKQAMYCkgKSAMcClAKcAMgC+AL9ANEDAAMPANcDEgMSAOcDFgMWAOgDGAMYAOkDHAMcAOoDHwMgAOsDIgMrAO0DLQMvAPcDMQM2APoDOAM+AQADRANFAQcDRwNHAQkDSQNJAQoDSwNOAQsDUgNXAQ8DWgNaARUDXANcARYDYANhARcDZgNxARkDdAN1ASUDdwN6AScDgQOCASsDhgOGAS0DiAOOAS4DkwOUATUDmAPAATcDwgPCAWADxAPRAWED2QPZAW8D3APcAXAD3gPeAXED6gPvAXID8gPyAXgD9AP0AXkD9gP2AXoD+AP5AXsD/gQBAX0EBAQEAYEEBgQHAYIECQQJAYQEDQQNAYUEDwQPAYYEEwQTAYcAAgE4AAQABAAdAAkACQAdAA4ADgAeABAAEAAeACQAJAABACUAJQAEACYAJgADACcAJwAFACoAKwACACwALAAMAC0ALQAJAC4ALgAKAC8AMAACADEAMQADADIAMgALADYANgAGADcANwAMADgAOAANADkAOQAQADoAOgAOADsAOwAPADwAPAARAEMAQwATAEQARAAVAEUARQAUAEcARwAWAEoASgAXAE8AUAAXAFEAUQAYAFIAUgAVAFQAVAAaAFgAWAAZAFoAWgAbAFsAWwAZAFwAXAAcAIgAiAAVAKwArAAHAK4ArgADALgAuAAZALwAvAAXAMIAwgAVAM8A0AAfANIA0gACANUA1QAOANcA2AACANkA2QASANsA2wACAN0A3QACAN8A3wAfAOEA4QAfAOcA5wAIAOkA6QAbAPIA8gAVAPcA9wAgAPkA+QAgAPoA+gAVAP8BAAAgAQUBBQAgARMBEwAYARQBFAANARUBFQAZAScBJwAVASgBKAAHASkBKQAIASwBLAAJAS4BLgAJAUUBRQAIAWUBZgAdAWcBZwAeAWgBagAdAWsBawAeAW8BcAAeAewB7QADAe8B7wAGAfgB+AAEAfkB/AAFAf0CAQACAgICBgADAgcCCgAMAgsCCwAPAgwCEgATAhMCEwAUAhQCFwAWAhwCHAAXAh0CIQAYAiYCJwAZAikCKQATAisCKwATAi0CLQATAi4CLgAEAi8CLwAUAjACMAAEAjECMQAUAjICMgAEAjMCMwAUAjQCNAAEAjUCNQAUAjYCNgADAjgCOAAFAjkCOQAWAjoCOgAFAjsCOwAWAjwCPAAFAj0CPQAWAj4CPgAFAj8CPwAWAkACQAAFAkECQQAWAkoCSgACAksCSwAXAkwCTAACAk4CTgACAlACUAACAlICUgACAlQCVAACAlcCVwAMAlkCWQAJAlsCWwAKAl0CXQAKAl8CXwAKAmECYQAKAmMCYwACAmQCZAAXAmUCZQACAmYCZgAXAmcCZwACAmgCaQAXAmoCagADAmsCawAYAmwCbAADAm0CbQAYAm4CbgADAm8CbwAYAnECcQAaAnMCcwAaAnUCdQAaAoACgAAGAoICggAGAoQChAAGAoYChgAMAogCiAAMAooCigAMAowCjAAMAo4CjgAMApACkAAMApICkgAQApQClAAPApUClQAZApYClgAPApcClwARApgCmAAcApkCmQARApoCmgAcApsCmwARApwCnAAcAvkC+QAFAvoC+wACAvwC/AADAv0C/QAPAwEDAQABAwIDAgAFAwMDAwARAwQDBQACAwYDBgAJAwcDCAACAwkDCQADAwoDCgALAwsDCwAGAwwDDAAPAw0DDQAOAw4DDgACAw8DDwAPAxIDEgAXAxYDFgAYAxgDGAAZAxwDHAAYAx8DHwAFAyADIAAHAyIDIwACAyQDJAAMAyUDJgAJAycDJwASAykDKQABAyoDKgAHAysDKwAFAy0DLgACAy8DLwADAzEDMQALAzIDMgAEAzMDMwAGAzQDNAAOAzUDNQATAzYDNgAWAzgDOAAYAzkDOQAVAzoDOgAUAzsDOwAZAzwDPAAbAz0DPQAWAz4DPgAIA0QDRAAZA0UDRQAQA0cDRwAQA0kDSQAQA0sDSwAPA0wDTAAZA00DTgAdA1IDUgAdA1MDUwACA1QDVAAXA1YDVgATA1cDVwADA1oDWgAFA1wDXAAWA2ADYAANA2EDYQAZA2YDZgAEA2cDZwAUA2gDaAAPA2kDaQAZA2oDagACA2sDawAOA2wDbAAbA20DbQACA28DbwATA3EDcQATA3QDdAAFA3UDdQAWA3cDeAAWA3kDeQAOA3oDegAbA4EDgQADA4IDggAYA4YDhgAYA4gDiAAVA4kDiQASA4oDigAZA4sDiwASA4wDjAAZA40DjQASA44DjgAZA5MDkwAOA5QDlAAbA5kDmQATA5sDmwATA50DnQATA58DnwATA6EDoQATA6MDowATA6UDpQATA6cDpwATA6kDqQATA6sDqwATA60DrQATA68DrwATA7ADsAAFA7EDsQAWA7IDsgAFA7MDswAWA7QDtAAFA7UDtQAWA7YDtgAFA7cDtwAWA7gDuAAFA7kDuQAWA7oDugAFA7sDuwAWA7wDvAAFA70DvQAWA74DvgAFA78DvwAWA8ADwAACA8IDwgACA8QDxAADA8UDxQAYA8YDxgADA8cDxwAYA8gDyAADA8kDyQAYA8oDygADA8sDywAYA8wDzAADA80DzQAYA84DzgADA88DzwAYA9AD0AADA9ED0QAYA9kD2QAYA9wD3AAMA94D3gAMA+oD6gAPA+sD6wAZA+wD7AAPA+0D7QAZA+4D7gAPA+8D7wAZA/ID8gAJA/QD9AACA/YD9gAGA/gD+AAOA/kD+QAbA/4D/gAHA/8D/wAIBAAEAAAOBAEEAQAbBAQEBAAXBAYEBgAfBAcEBwAHBAkECQAJBA0EDQACBA8EDwACBBMEEwAPAAEABAQWAAcAAAAAAAAAAAAHAAAAAAAAAAAAEwAXABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAUAAAAAAAAABQAAAAAAHAAAAAAAAAAAAAUAAAAFAAAAGQAKAAYADQAJABIADgAUAAAAAAAAAAAAAAAAABoAAAAVABUAFQAAABUAAAAAAAAAAAAAABgAGAAIABgAFQAAABsAAAALAAIAAAAWAAIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFABUAAAAAAAUAFQAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAFABEAAAAAAAAAAAAAAAAAFQAAAAIAAAAAAAAAGAAAAAAAAAAAAAAAAAAVABUAAAALAAAAAAAAAAAAAAAAAAoABQABAAAACgAAAAAAAAASAAAAAAABABAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAFgAAABgAGAAEABgAGAAYAAAAFQAYAAMAGAAYAAAAAAAYAAAAGAAAAAAAFQAEABgAAAAAAAUAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAUACAANAAIABQAAAAUAFQAFAAAABQAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAGAAAAAAABQAVAAoAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAABgAAAAVABUAAAAAAAAAAAABAAAAAAAAAAUAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABcAAAAHAAcAEwAHAAcABwATAAAAAAAAABMAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAEQARABEAEQARABEAEQAFAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAGAAYABgAGAA4AGgAaABoAGgAaABoAGgAVABUAFQAVABUAAAAAAAAAAAAYAAgACAAIAAgACAALAAsACwALAAIAAgARABoAEQAaABEAGgAFABUABQAVAAUAFQAFABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUABQAVAAUAFQAFABUABQAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAGAAFAAgABQAIAAUACAAAAAAAAAAAAAAAAAAZABsAGQAbABkAGwAZABsAGQAbAAoAAAAKAAAACgAAAAYACwAGAAsABgALAAYACwAGAAsABgALAAkAAAAOAAIADgAUAAwAFAAMABQADAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAABQAOAAAAAAARAAAAAAAUAAAAAAAAAAAAAAAFAAAAAAAOABIAAAAOABUAAAAYAAAACwAAAAgAAAACAAAAAAALAAgACwAAAAAAAAAAAAAAAAAcAAAAAAAQABEAAAAAAAAAAAAAAAAABQAAAAAABQAKABIAGgAVABgACAAYABUAAgAWABUAGAAbAAAAAAAAABgAAgAJAAAACQAAAAkAAAAOAAIABwAHAAAAAAAAAAcAAAAYABEAGgAFAAAAAAAAAAAAFQAYAAAAAAANAAIAFQAFAAAAAAAFABUADgACAAAAEgAWAAAAEQAaABEAGgAAAAAAAAAVAAAAFQAVABIAFgAAAAAAAAAYAAAAGAAFAAgABQAVAAUACAAAAAAAEAACABAAAgAQAAIADwADAAAAGAASABYAFQABAAQAEQAaABEAGgARABoAEQAaABEAGgARABoAEQAaABEAGgARABoAEQAaABEAGgARABoAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAAAAAAAAAAAUACAAFAAgABQAIAAUACAAFAAgABQAIAAUACAAFABUABQAVAAUAFQAFAAgABQAVAAYACwAGAAsAAAALAAAACwAAAAsAAAALAAAACwAOAAIADgACAA4AAgAAAAAAAAAYAAAAGAAKAAAAEgAWAA8AAwAPAAMAAAAYABIAFgAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAABAAQADgAAAAAAAAAAAAAAFwABAAAACgAsAI4AAURGTFQACAAEAAAAAP//AAgAAAABAAIAAwAEAAUABgAHAAhsaWdhADJsbnVtADhzbWNwAD5zczAxAERzczAyAEpzczAzAFBzczA0AFZzczA1AFwAAAABAAEAAAABAAIAAAABAAAAAAABAAMAAAABAAQAAAABAAUAAAABAAYAAAABAAcACAASABoAIgAqADIAOgBCAEoAAQAAAAEAQAAEAAAAAQH2AAEAAAABAgAAAQAAAAECEgABAAAAAQIQAAEAAAABAg4AAQAAAAECDAABAAAAAQIOAAICEADcAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AegBtQG2AbcBuAG5AboBuwG8Ab0BvgGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAHoAbUBtgG3AbgBuQG6AbsBvAG9Ab4C9wKiAqECogKjAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4C8wK/Ar8CwALAAsECwQLCAsICwwLDAsUCxQLGAsYCxwLHAsgCyALJAskCygLKAssCywLMAswCzQLNAs8CzwLQAtAC0QLRAtIC0gLTAtMC1ALUAtUC1gLWAtcC1wLYAtgC2QLZAtoC2gLbAtsC3ALcAt0C3QLeAt4C3wLfAuAC4ALhAuEC4gLiAuMC4wLkAuQC5QLlAuYC5gLnAucC6ALo/////wLqAuoC6wLrAuwC7ALtAu0C7gLuAu8C7wLwAvAC8QLxAvIC8gLzAvQC9AL1AvUC9gL2AqEAAQCkAAEACAABAAQBkgACAEsAAgCYAAoBmAHMAcQB1gHXAdgB2QHbAd0B5wABAIgBkQABAIgBKAABAIgBrgACAIgAAgHjAeQAAgB+AAIB5QHmAAIADQAjADwAAABDAFwAGgCDAIMANACFAIUANQHsAe0ANgHvAjEAOAI0AkUAewJIAlQAjQJXAmgAmgJqAnsArAJ+An8AvgKCApwAwAPwA/AA2wABAAEASAACAAEAEgAbAAAAAQABAEkAAQABALYAAQABADQAAQACAC0ATQ==","sampleImage.jpg":"/9j/4RC5RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAgAAAAcgEyAAIAAAAUAAAAkodpAAQAAAABAAAAqAAAANQACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaAAyMDE0OjAzOjE5IDAzOjAyOjI2AAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAregAwAEAAAAAQAAATYAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABIgEbAAUAAAABAAABKgEoAAMAAAABAAIAAAIBAAQAAAABAAABMgICAAQAAAABAAAPfwAAAAAAAABIAAAAAQAAAEgAAAAB/9j/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAEcAoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/AO9gJbfNShKFatpsfcPNRJd31RITEJWpGH2A6Ex4KJPkilqbajYRqikpiPLXxRCxNtTrUjIP+1SG8cBPBT7dPPxStCVrslrQ5jdzBzw6FH7VaHSII7wOFCXARJA8FEiU0RHUBcZHoSn+1vPYfM/3qFmW94iI+CFt7dkmhoI3at7gcoiER0VxyPVmy2sCXyT4awpG9rj7Xlo7hQln5o2jxOqi41xLZJHc8flR4RfVXFpuFw92rnu0/NH96Gbn7uyR3Hkp20veJER5p1AbosnZg615/wByGSTyilkHmfgmhOBC031f/9D0X0H+B/BRNTx2VuJGibXwT/cLEcQae1w7JiPEK9BPITGuSj7ngj2uzS0SA3GByrbDXbu9Mts2OLX7TMOH0mP2/n/yU5YD2R9zwR7Xi0oTbJPCtuobOmiQpEzyUfcCPbLWYGQQ5m49j/BRLY5aFc2tA1H8U2yuZiZ7hLj808GjRI+SaFedTVOg7eJ/vUDUBwJThkC04i1NqYtVr0xPh8UtidxrfbLT2+SW1Wy1zR218lAsPgPkiJoMGtt+acNPafvRjWfBMKXeCPEFcJ7MRXqCYPknOODJbB8giCt4HA+9OGxyhxeK4R7h/9H0oOrJ0BkrKt+tf1aqkftKl7hI21v36jT832/9JXMfJqvxq8tocaLam3ca7Ht9SHfu+1ebV9K+vEAOz8MjQCK6NPvwv3ETKu31WgfyD1nUfrl0+7Dvx8O4tttrc1l5urrLCdBYwsdbZ7Vy7uo51vtyeqeuwGWtOXEGNu7+b/e9T/z3/wAIiYPS/rPvsPUcyl1XpONIx2Ywf62noeo63B/mPper/hFa6hg9XdjbenXVY+UXja+2ui2st2nfU5rsc+n7/f63v/0f+EQ4vGP8v8FRjfSX8v8ACaRynwWtzIaXF4aMsD3kbfUftq99n8tEZ1Tr24OZ1na9rmuaXXeq2AWy2ynaxtjH7bWfS/P/AOCV+vAzgykWuY6wCoXlooAc4N/WfT/Vvb6ln82sf6wvb0+thzzb+sY11eB9nc1hbmNLXm/I+zfY/wBV9F+P+js9f3+p+gTgSSBcde3/AKKigNalp3/9GenwfrK7HuvttvrubkHe6uyyGsf7W7qHbXenV6bPdR9D/DfT9b1bbvrphMfse7Ha/TT1XmZIa2HNoc125zmrygdRyw0l2RcWgSYsfMf5y1s7q31n6DRh05FuMx17C6ptNNZb6Iaz0t7m7avV93vZ6Pqf6W23/BGWMxIF3xfT/vlCYIJqq+r6APrv00jd6uOQYg+q/udjf8B+/wC1IfXfpZBd62PGkn1X95j/AAH8hy5vo3Vep5tIs9VucxzKnPvrqNba7X6ZHT3Ctu227EZsust/4VXWZnWDXW77HZvc6tr2fpJYHu2XWT6fubjs/Su/fTSCP/Ro/wDepsfyjJ12/XXpbo2247p4i1x7Od/oP3a3op+tOGOfRkcgXa/jUsO276xPAqxML1LrC1ostn06w71PWyLfWayt7cVlbLPTsf8ApPU/6zdh59HUbOq3VsuvZWAw2OqbY9lTjUyxtThhBzHOs+n+hZ/hEo2TV19YlE5AC6v/AAZPQdU691HJua7EzqsSoNLRWy2JcfznGH7vd/0FUHVOsguI6n7nd/XHA+hzT+7+6sjo7uo2ZIx2utbn12B11d9gLBjt2/bcd7Mh1lf2raf0T/T3s/01a231dXlxaKg0B4AJoJneDX/g/d+g3MTttLj/AIX/AKKs31qX+D/6Mh/afWWOcaupBhedzybgZMMYHH9D/oq9n+vv1em/WO6jGFebfVlW+oXG02iSwx+i+gz6KoCnqQquFjqha994xnA0FoDh/k9lkV/Srf8Azu7/AMGSNPUzdXHpCsPJtbux5dWai1rWONf0vteyz/i/+20r/rQ/l/gpArpL6/8AozvD609NPMsHjvpP4C5EH1gwHAFpJB1BBq/9Lrna6uoAsNoYWgs9QB1APBFv5jXN/SbHLhupY3Sq+qZdHUaX29QrD7sqyq6prHWemcq30mVYzWbXf8G1C+xifLVI8RIeb7FV1Kq8MNYJFhIafb23fuPf+4im0+C4j6o9Qpoqr6fSPTwcKy9ofY7c8Q9+nsrYxzH22vc36di6L9t9PLnMFji5oBPscNHFwb7nhrfzHJQnoeKtD+CZRNiuz//So9P6t9lyvVZYdzWw7ffW6sHIAxq77La273Mp+0faXv2Pr/R/y61rW9Uof0u7Hq610+nqLg4VZLMkOrYd+5jt17rMj+Y/Ru9n01yHoBzrnfaHO+02ltjHs3F1VTD6LtK9m+2/0/0dLdlf6JZ7sKxtRfXjudYWPEtaT9L2Tua33e1yhjkjKJuUeIa1p6lvuAeP1e8t6i111j6vrBgsqdblvrYchntqupbV0ur/ANp+ZuybP+h6yVPUA2yp1v1gwbK2WYLrWjIr1ZRW5nV2/m/8p3/pK/8AwT0FwFXRszc26rFve1jg8ltDnCB7vptDmtRcfp2f6D/8mPe703kuNNhLvUdWx0kfS+zfTq/cUnCLriG29xTx+Bez+15rcQVH6z9P+0/ZfT9U3sg5H2n7T9r1bu2fsv8AUfo/T/wez9Ms/wDxg9SwModOGFfRlAPySfSsbb6YIx9v8y921/8AXXL4+Pa59RGF61T7W+nc+pzt7WN9F7Q4bGur/wAJsQXYWc1jLnY11eOwBrH+m4Md3cN8bfplKFcUSSB9YolOwRSZr5BG0vEGWjkgCXLR+tVmT9k6WMrqOP1O1oui7Gsa8MZtxvTx7BU1np2Vx+cqbcLIZiW5Ty2p1BINFpDbPaBqa3uZZ+dsbtZ9NaZ+qPT7cfbXlWNc0eqS/wBMQXtrcW27jX6fsZ/hXVqTJmx2JcYIhd0jHA0RXzVTd+p2Zk19IeMO3GpJuyTa3KtrDjb9noHT31Nt2foftf8AP/8ABroreo9R3H0Mrp4b+n27rqp/mK/2d+f/AOWXr/af+62xcfT9TulvL9+Y+ahLmudjVvH0tu6qy93q7q632/on2f8AFItv1J6d6DjXdk7thNbnMqDSfcWOc7d9BRGcJeoSBEtQWQAjStnr6uqZLMtrvtmAynfb7zfUNrPSr+yvd7zu2Zn2p13/AAXpLk+rue/qD3PvryXFtc30P31uOxo3V2sDGv8Ab7PooeJ9UacXJrttuBYJaRsDnOkW0xXTFvrPe70/0Xvs9/p/zivt6J0xtftyrxVUIkY73Na2SYL2VbW+47PejCUAdx9iyYMtK/Fn9V8vp2Jm7svZS8iwtzLbRWxjTWR6T22fo3Otd+et93VunHI3N6vhCo21PFf2lk+m1rhfXs1/nbNrvpf9crXP09N6bh9RpvGbacioE14z8Z1jXkhzJOOaX+t9P9z6f/CLHzvqu9nVMmvD+0XYlBcym9oL3OIDfz6WbPd+k3bNnpv+miZxJNHcVsgAgVWxv5v0v3fS9mOq4LWtbZ1nCL2ioPP2pp9zbN2Q76P+Eo/Rf+fP9Ig3dUrdU9tXX+nMsNdja3m0ECx14ux7CB+ZXgbsR/8AwvvWIei9Nx+nY7jj3WZDy9uTYWXFzWNtG+l7aR6fqOwnbX+33/p/T/SIWTi9Jrvx2YvRbcqm7+dt25bTUJj1Nrm/p2bHb/0aackSdfP5YhNVp4dZF6N/WcM2WFvWunitz8g1t9Yghjwz9nsJ93vxnNt+0O/7YXJZlfW39Qz3MutzK7LLXU5NJcWWNspu9I02e3fW2z0WN/4VJrayBP1WtDy/aW7skkN/0n0Vft6N0H7Xv/ZlrsU1vDpx8wOddvbsfJj2ej6nt/fSM4j/AHop+z7VsCy/p+Hm5OZQ47X3Xem/b7g4Ndv/AEgtY79I51n6Suz+aQXfXLCAhmExsN3Of+jBc1w9P/B4zPT99jXfo0+TV07Ccw4uC4Yz6bqvstldzPVvea/TZ6lm29vq07v8J/N1WqtQOmm7FOR0ZtGM+suyHD1niff6FQ3WHfTvbRY2ytD3IjU6691E+IH1f//T5lv7d/SFpyJIA1Do0+jLWt2/R+h6f5ikLetj2tF4siXEtkxHf2Ljklln2uvB/wA1qa+L1zr+pydzX7dd0tgydNf0f7qeh3Uy57i6xhcRIa0nQfR0LPbYuQSQPtUa4f8Amo1e1st6o4PFrrAOHbqwD/1H/f1Oo9TdYfTdYD/JBBn+wxrVw6SjPt1pw/8ANVr4vbi3qpLQPWEiG+0zHj7Wu9iEcnPEw1xAJDj6cDj3ep7P+qXGpJw9rrX/ADVavZi7Oa6WD3RqGMBdB+ju9n/mCduRcWtc4bdCA19bPLwZ/wCYLi0kvR4X9Favb13Zjmba/olx+gwDXvDhXt3JPuubra1jmtjcHsGzy3abVxCSaeG+n9qtXvqM7Elotx2SeIazU6bYhu5v8hWmWYj90MrAH0hAB/tbfztq83SUc6/RXC/B9JD8cPmptLrB9ICNxJ/ejanDmuZu2NYCBoD7QB2hpe3uvNUkxWr6W5w3htgZvj6RHb5u3KJFjhEsaBHplnh+Z9H6f530l5skiFPojxVuJN1Qsc7RvpSOP+i701EV4wc8NsYbDt3eQn9HG0Nf/VXnqSdqj7H/2f/tF+hQaG90b3Nob3AgMy4wADhCSU0EJQAAAAAAEAAAAAAAAAAAAAAAAAAAAAA4QklNBDoAAAAAAJMAAAAQAAAAAQAAAAAAC3ByaW50T3V0cHV0AAAABQAAAABDbHJTZW51bQAAAABDbHJTAAAAAFJHQkMAAAAASW50ZWVudW0AAAAASW50ZQAAAABDbHJtAAAAAE1wQmxib29sAQAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVyTmFtZVRFWFQAAAABAAAAOEJJTQQ7AAAAAAGyAAAAEAAAAAEAAAAAABJwcmludE91dHB1dE9wdGlvbnMAAAASAAAAAENwdG5ib29sAAAAAABDbGJyYm9vbAAAAAAAUmdzTWJvb2wAAAAAAENybkNib29sAAAAAABDbnRDYm9vbAAAAAAATGJsc2Jvb2wAAAAAAE5ndHZib29sAAAAAABFbWxEYm9vbAAAAAAASW50cmJvb2wAAAAAAEJja2dPYmpjAAAAAQAAAAAAAFJHQkMAAAADAAAAAFJkICBkb3ViQG/gAAAAAAAAAAAAR3JuIGRvdWJAb+AAAAAAAAAAAABCbCAgZG91YkBv4AAAAAAAAAAAAEJyZFRVbnRGI1JsdAAAAAAAAAAAAAAAAEJsZCBVbnRGI1JsdAAAAAAAAAAAAAAAAFJzbHRVbnRGI1B4bEBSAAAAAAAAAAAACnZlY3RvckRhdGFib29sAQAAAABQZ1BzZW51bQAAAABQZ1BzAAAAAFBnUEMAAAAATGVmdFVudEYjUmx0AAAAAAAAAAAAAAAAVG9wIFVudEYjUmx0AAAAAAAAAAAAAAAAU2NsIFVudEYjUHJjQFkAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAAAgEBOEJJTQQtAAAAAAAGAAEAAAACOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0sAAAAGAAAAAAAAAAAAAAE2AAACtwAAAAsAQgBlAHoAIABuAGEAegB3AHkALQAxAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAK3AAABNgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABNgAAAABSZ2h0bG9uZwAAArcAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAATYAAAAAUmdodGxvbmcAAAK3AAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAj/wAAAAAAAAOEJJTQQUAAAAAAAEAAAAAjhCSU0EDAAAAAAPmwAAAAEAAACgAAAARwAAAeAAAIUgAAAPfwAYAAH/2P/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgARwCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A72Alt81KEoVq2mx9w81El3fVEhMQlakYfYDoTHgok+SKWptqNhGqKSmI8tfFELE21OtSMg/7VIbxwE8FPt08/FK0JWuyWtDmN3MHPDoUftVodIgjvA4UJcBEkDwUSJTREdQFxkehKf7W89h8z/eoWZb3iIj4IW3t2SaGgjdq3uByiIRHRXHI9WbLawJfJPhrCkb2uPteWjuFCWfmjaPE6qLjXEtkkdzx+VHhF9VcWm4XD3aue7T80f3oZufu7JHceSnbS94kRHmnUBuiydmDrXn/AHIZJPKKWQeZ+CaE4ELTfV//0PRfQf4H8FE1PHZW4kaJtfBP9wsRxBp7XDsmI8Qr0E8hMa5KPueCPa7NLRIDcYHKtsNdu70y2zY4tftMw4fSY/b+f/JTlgPZH3PBHteLShNsk8K26hs6aJCkTPJR9wI9stZgZBDmbj2P8FEtjloVza0DUfxTbK5mJnuEuPzTwaNEj5JoV51NU6Dt4n+9QNQHAlOGQLTiLU2pi1WvTE+HxS2J3Gt9stPb5JbVbLXNHbXyUCw+A+SImgwa235pw09p+9GNZ8Ewpd4I8QVwnsxFeoJg+Sc44MlsHyCIK3gcD704bHKHF4rhHuH/0fSg6snQGSsq361/VqqR+0qXuEjbW/fqNPzfb/0lcx8mq/Gry2hxotqbdxrse31Id+77V5tX0r68QA7PwyNAIro0+/C/cRMq7fVaB/IPWdR+uXT7sO/Hw7i222tzWXm6ussJ0FjCx1tntXLu6jnW+3J6p67AZa05cQY27v5v971P/Pf/AAiJg9L+s++w9RzKXVek40jHZjB/raeh6jrcH+Y+l6v+EVrqGD1d2Nt6ddVj5ReNr7a6Lay3ad9Tmuxz6fv9/re//R/4RDi8Y/y/wVGN9Jfy/wAJpHKfBa3MhpcXhoywPeRt9R+2r32fy0RnVOvbg5nWdr2ua5pdd6rYBbLbKdrG2MfttZ9L8/8A4JX68DODKRa5jrAKheWigBzg39Z9P9W9vqWfzax/rC9vT62HPNv6xjXV4H2dzWFuY0teb8j7N9j/AFX0X4/6Oz1/f6n6BOBJIFx17f8AoqKA1qWnf/0Z6fB+srse6+22+u5uQd7q7LIax/tbuodtd6dXps91H0P8N9P1vVtu+umEx+x7sdr9NPVeZkhrYc2hzXbnOavKB1HLDSXZFxaBJix8x/nLWzurfWfoNGHTkW4zHXsLqm001lvohrPS3ubtq9X3e9no+p/pbbf8EZYzEgXfF9P++UJggmqr6voA+u/TSN3q45BiD6r+52N/wH7/ALUh9d+lkF3rY8aSfVf3mP8AAfyHLm+jdV6nm0iz1W5zHMqc++uo1trtfpkdPcK27bbsRmy6y3/hVdZmdYNdbvsdm9zq2vZ+klge7ZdZPp+5uOz9K799NII/9Gj/AN6mx/KMnXb9delujbbjuniLXHs53+g/drein604Y59GRyBdr+NSw7bvrE8CrEwvUusLWiy2fTrDvU9bIt9ZrK3txWVss9Ox/wCk9T/rN2Hn0dRs6rdWy69lYDDY6ptj2VONTLG1OGEHMc6z6f6Fn+ESjZNXX1iUTkALq/8ABk9B1Tr3Ucm5rsTOqxKg0tFbLYlx/OcYfu93/QVQdU6yC4jqfud39ccD6HNP7v7qyOju6jZkjHa61ufXYHXV32AsGO3b9tx3syHWV/atp/RP9Pez/TVrbfV1eXFoqDQHgAmgmd4Nf+D936DcxO20uP8Ahf8AoqzfWpf4P/oyH9p9ZY5xq6kGF53PJuBkwxgcf0P+ir2f6+/V6b9Y7qMYV5t9WVb6hcbTaJLDH6L6DPoqgKepCq4WOqFr33jGcDQWgOH+T2WRX9Kt/wDO7v8AwZI09TN1cekKw8m1u7Hl1ZqLWtY41/S+17LP+L/7bSv+tD+X+CkCukvr/wCjO8PrT008yweO+k/gLkQfWDAcAWkkHUEGr/0uudrq6gCw2hhaCz1AHUA8EW/mNc39JscuG6ljdKr6pl0dRpfb1CsPuyrKrqmsdZ6ZyrfSZVjNZtd/wbUL7GJ8tUjxEh5vsVXUqrww1gkWEhp9vbd+49/7iKbT4LiPqj1Cmiqvp9I9PBwrL2h9jtzxD36eytjHMfba9zfp2Lov2308ucwWOLmgE+xw0cXBvueGt/MclCeh4q0P4JlE2K7P/9Kj0/q32XK9Vlh3NbDt99bqwcgDGrvstrbvcyn7R9pe/Y+v9H/LrWtb1Sh/S7serrXT6eouDhVksyQ6th37mO3XusyP5j9G72fTXIegHOud9oc77TaW2MezcXVVMPou0r2b7b/T/R0t2V/olnuwrG1F9eO51hY8S1pP0vZO5rfd7XKGOSMom5R4hrWnqW+4B4/V7y3qLXXWPq+sGCyp1uW+thyGe2q6ltXS6v8A2n5m7Js/6HrJU9QDbKnW/WDBsrZZgutaMivVlFbmdXb+b/ynf+kr/wDBPQXAVdGzNzbqsW97WODyW0OcIHu+m0Oa1Fx+nZ/oP/yY97vTeS402Eu9R1bHSR9L7N9Or9xScIuuIbb3FPH4F7P7XmtxBUfrP0/7T9l9P1TeyDkfaftP2vVu7Z+y/wBR+j9P/B7P0yz/APGD1LAyh04YV9GUA/JJ9KxtvpgjH2/zL3bX/wBdcvj49rn1EYXrVPtb6dz6nO3tY30XtDhsa6v/AAmxBdhZzWMudjXV47AGsf6bgx3dw3xt+mUoVxRJIH1iiU7BFJmvkEbS8QZaOSAJctH61WZP2TpYyuo4/U7Wi6Lsaxrwxm3G9PHsFTWenZXH5yptwshmJblPLanUEg0WkNs9oGpre5ln52xu1n01pn6o9Ptx9teVY1zR6pL/AExBe2txbbuNfp+xn+FdWpMmbHYlxgiF3SMcDRFfNVN36nZmTX0h4w7cakm7JNrcq2sONv2egdPfU23Z+h+1/wA//wAGuit6j1HcfQyunhv6fbuuqn+Yr/Z35/8A5Zev9p/7rbFx9P1O6W8v35j5qEua52NW8fS27qrL3erurrfb+ifZ/wAUi2/Unp3oONd2Tu2E1ucyoNJ9xY5zt30FEZwl6hIES1BZACNK2evq6pksy2u+2YDKd9vvN9Q2s9Kv7K93vO7ZmfanXf8ABekuT6u57+oPc++vJcW1zfQ/fW47GjdXawMa/wBvs+ih4n1Rpxcmu224FglpGwOc6RbTFdMW+s97vT/Re+z3+n/OK+3onTG1+3KvFVQiRjvc1rZJgvZVtb7js96MJQB3H2LJgy0r8Wf1Xy+nYmbuy9lLyLC3MttFbGNNZHpPbZ+jc6135633dW6ccjc3q+EKjbU8V/aWT6bWuF9ezX+ds2u+l/1ytc/T03puH1Gm8ZtpyKgTXjPxnWNeSHMk45pf630/3Pp/8IsfO+q72dUya8P7RdiUFzKb2gvc4gN/PpZs936Tds2em/6aJnEk0dxWyACBVbG/m/S/d9L2Y6rgta1tnWcIvaKg8/amn3Ns3ZDvo/4Sj9F/58/0iDd1St1T21df6cyw12NrebQQLHXi7HsIH5leBuxH/wDC+9Yh6L03H6djuOPdZkPL25NhZcXNY20b6XtpHp+o7Cdtf7ff+n9P9IhZOL0mu/HZi9Ftyqbv523bltNQmPU2ub+nZsdv/RppyRJ18/liE1Wnh1kXo39ZwzZYW9a6eK3PyDW31iCGPDP2ewn3e/Gc237Q7/thclmV9bf1DPcy63MrsstdTk0lxZY2ym70jTZ7d9bbPRY3/hUmtrIE/Va0PL9pbuySQ3/SfRV+3o3Qfte/9mWuxTW8OnHzA5129ux8mPZ6Pqe399IziP8Aein7PtWwLL+n4ebk5lDjtfdd6b9vuDg12/8ASC1jv0jnWfpK7P5pBd9csICGYTGw3c5/6MFzXD0/8HjM9P32Nd+jT5NXTsJzDi4LhjPpuq+y2V3M9W95r9NnqWbb2+rTu/wn83Vaq1A6absU5HRm0Yz6y7IcPWeJ9/oVDdYd9O9tFjbK0PciNTrr3UT4gfV//9PmW/t39IWnIkgDUOjT6Mta3b9H6Hp/mKQt62Pa0XiyJcS2TEd/YuOSWWfa68H/ADWpr4vXOv6nJ3Nft13S2DJ01/R/up6HdTLnuLrGFxEhrSdB9HQs9ti5BJA+1Rrh/wCajV7Wy3qjg8WusA4durAP/Uf9/U6j1N1h9N1gP8kEGf7DGtXDpKM+3WnD/wA1Wvi9uLeqktA9YSIb7TMePta72IRyc8TDXEAkOPpwOPd6ns/6pcaknD2utf8ANVq9mLs5rpYPdGoYwF0H6O72f+YJ25Fxa1zht0IDX1s8vBn/AJguLSS9Hhf0Vq9vXdmOZtr+iXH6DANe8OFe3ck+65utrWOa2NwewbPLdptXEJJp4b6f2q1e+ozsSWi3HZJ4hrNTptiG7m/yFaZZiP3QysAfSEAH+1t/O2rzdJRzr9FcL8H0kPxw+am0usH0gI3En96NqcOa5m7Y1gIGgPtAHaGl7e681STFavpbnDeG2Bm+PpEdvm7cokWOESxoEemWeH5n0fp/nfSXmySIU+iPFW4k3VCxztG+lI4/6LvTURXjBzw2xhsO3d5Cf0cbQ1/9VeepJ2qPsf/ZADhCSU0EIQAAAAAAWQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABUAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMANQAuADEAAAABADhCSU0EBgAAAAAABwAEAAAAAQEA/+EN3Gh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjEgNjQuMTQwOTQ5LCAyMDEwLzEyLzA3LTEwOjU3OjAxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDMtMTlUMDM6MDI6MjYrMDE6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE4NzFGODEzMUZCNkU2ODk4IiBzdEV2dDp3aGVuPSIyMDE0LTAzLTE5VDAzOjAyOjI2KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgc3RFdnQ6d2hlbj0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////uAA5BZG9iZQBkAAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBwcHDQwNGBAQGBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIATYCtwMBEQACEQEDEQH/3QAEAFf/xAGiAAAABwEBAQEBAAAAAAAAAAAEBQMCBgEABwgJCgsBAAICAwEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAgEDAwIEAgYHAwQCBgJzAQIDEQQABSESMUFRBhNhInGBFDKRoQcVsUIjwVLR4TMWYvAkcoLxJUM0U5KismNzwjVEJ5OjszYXVGR0w9LiCCaDCQoYGYSURUaktFbTVSga8uPzxNTk9GV1hZWltcXV5fVmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6PgpOUlZaXmJmam5ydnp+So6SlpqeoqaqrrK2ur6EQACAgECAwUFBAUGBAgDA20BAAIRAwQhEjFBBVETYSIGcYGRMqGx8BTB0eEjQhVSYnLxMyQ0Q4IWklMlomOywgdz0jXiRIMXVJMICQoYGSY2RRonZHRVN/Kjs8MoKdPj84SUpLTE1OT0ZXWFlaW1xdXl9UZWZnaGlqa2xtbm9kdXZ3eHl6e3x9fn9zhIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/2gAMAwEAAhEDEQA/AO70YnNo6pqrA9cUO5v440rfPxrjSthwdq40l3IdK4KYku2wq0GI2rUYquDKDQgfPpkSGVr/AFSo+EkU+nBwp4nC6lIoW/DHgC8ZaMs/XkTjwhPEWxcSeJ+WPAF4y5rhidjQ48ATxFct01NzjwBeNY0rnrXCIhBkSpcpB+0flkqYEtCWQHrvjwhIkvFzIOorg4AjxFVL4jvTInG2DKrJqFRQ7jIeEy8VSlmDbBvoOSEUEoUlgadMtpoNtFm+nFRa0pKN6U8MKaLvjpu2+FC0hgRU7eIxVsueWxNMSFbaRya128MeFbcxFQRUDwGNJta5NTSowhCwnxJwsbW716nCriD44otbVgeu2KLXiaQH4TTBQTxFxdmNSanCAkEtFqeOKbXLJseu+DhW2jQ9zXwwsVypX9v78BLKlQRU/bGRJZBVBoKc8jTYHDlWof8AHBSEVbyUPxNlUotsSjVMTD7X0ZSQWwFr0oi1akHDbKlX01A61yNp4VJyiHfpkhugrFcNuv3YSGJXiQjtgISCqpNQg1+jIEM7VTdDtvkOBeJYZmY0yQim1prkqQSpujE9SMQqqkZHU4kpc23fAgqbSUB3yQDEyQ8lwQNjXJiLAyQb3NTlwi1GakZ98mIo4mjcLTY48LHiaWSp2bDS2rJKa7A5AhkCUQCxHSn05W2ArubKOv0YKTbYuvfHgRxLXuQcPAvGFM3A8foyXAjjUzOPfJCK8Sm0+S4WBkt9Qk0JJrhpFr1B71wJtplXxxWljcQP44QghT9Q9B0yVKvV/bAQtrmYH2xCkqbsabH78IDFYQw75JBCw07E4UKbuw6ZIBiSos57k5OmNrPWp4n6cNMeJYZHPenthpbcCfHFFv8A/9DvlM2Vuoa4jG1aKjG1aKA4bVaY/DDabdwNcVbo3hjYVaSRvhQ1WvXFXUxQ4DfFbVFlK9hkSGXE2bg9wMeBPGptID+yMIixMlnIV2JB+/JUxBbWVsFJ4my9R0xRxLSRhW1pY0w0qznvhAQ2j0PTAQm0QNxUb+2RLO2mZlWpG2IUlTaSuGmNtCVqUGGk2VpY4aQt5YVaL+2KLdyxRbdcNLa5pKjBS2tWjHfFQqmOMLWtTkbLKgosB2ybArMUOpirsVaIOFWhyGKrgTWmBVwG9anFILjTxwMrXKB3NcSoVUWMAb0r2yBZhUG26iv05Flbfr0Fa0OPDa8Tk1BlIqa4DiXxkYmo7eOVHE2jKpzXyuDko46RLIoJeLHuD9OTOO2HGu/SW/Xrg8JfFVorlm3B28ciYU2CdqyzHvue2Q4WQk01w6ipoBiIp410dyCK8qHEwTxhprhxvXbAIIMm0vPHpicaibbXKkbmnhgEEmaHeVSeuWCLAyCGmmNevXLYxapSUOa+OTphbXMN0/HDS2qJBy3ArXIkqIoqGxjG8n3DKpTLdGPeiQsXRRldkswtZB44VUJ+QHw5OLCSDkkl7jLgGokuSOVxUniMTSAFxQgGprgZUhZZWDEA7ZaItRkpCSU7DfDQRxFF20bFg7E/LK5FsjurTzKppWmRiGZlSibqOnX6clwMTNRe7FdhkhBici360D028cnwLxuW5IwcCOJxuiemPAjiWGZ69cPCjiWNK56tkuFBkVplbxw8K2saUnvkgEWsZmOLElrCxbG+K22KdPngSH//0e+ZsXUF2Kuwq1iyb3xRTsCHYq0Vr1w2q1o6kU2w8SrSrDCtNYUU7FDRAOKKa44qtpvhV2FLqnwxpacKU6Y0tLSBiq0rhtacBTClcrsp2ORpVxkLbNjSrMKrab1wq1Uk+2KGgN8VXFcVdTFFLSMKKdvihoYq3VqdcUupirZFDimnMvh0xQVmKHYq7FXYq3U4q6u+KurTFIK4N41wEJ4lVJlXod8iYshJbI3IeJwgKSohd/bvkmCKV4SoHceGVkFtBDYjhY05EYLKdkPPEUOxqMsibYSipZJrVlmYDbI8IZcS4XEnY4OAMxIrjPUUclsHCvEt9Q9jTwx4Vtf6zUoTtjwp4it9cjv9+PCgyd9ZenWmPAjjWtOfGuHhXiWGUEb7nJAMSVMk+OFja5AOtcBSEwsyOJPanXKJuRjXyTx9iT75ERbDIOW5Aw8CONv6yp2rjwJ4nGQHauPCtrCFPXphtiQGtgaYUFRmYAZKIYSOyAarHbvl4aVa2XiQSMhIsohG8lVdsrbkLMpkNa75OOzXIIWRQvf6MtBaypE5NDqjFFuBwLbeK24nCqw1rhQ1irRG+KrcKtjFFN7YFcOv0Ypf/9LvZzZOqcMUOGKurXFadXFabocCHYq7FXYq7DatUxtVpj8MNopaVIG+FaaoMUU7iMbQ0Vw2rXE4VaK064q1TDaXccVaoMVa474UtFSMbV2KtYVaIPyxVunviinUwWtOGKXUxtXUxtFO4DDaKWkUxtS6hwsab+KmBk0Sx64oa413GFFOKgDrv4YqtxVUCVHbBbKlvpv2GG0UuEZB+Ibd8BKRFeEtyNyQcjZZcIXxwoP2tsBkyEQi4ILd6cqHKZSIbYwCIbSLd0PD4a98h4xDPwgUJNo8iNVDVO/zy0ZwWqWCkIYHjNHUjLRIFrMCGmoPsj78IQs5k98ICCWuKnen04bRTXAYopw2xUFUDLTcYCyC5Xj/AJQcibZWF1YD7e2O62FkypQEEYRaJKDEZNrW7Yq3irRxVsf5jFVT15AKA8R4YOEMhIrDM/c4aRZa9ZvHGk24TNWuNKJLvXf6MeFPEV63L136ZHhCRIr/AKxQeOPCy4lJ5FfxrhApBWoorhRSulAMgWQWNLxrUYRFSaUHnZthsMsEWsyUyK9ckwU2rkgrsKtrgKG8CCtO/wBGSCQ3QnFVpBGKtYq7jXFWiKYq6mK04Yq//9PvebJ1JbwIdTFWqDCm26eBpitu59sCG8CuIGG1dTbFXUxVrFXYq7CrRUHG1Wem3jhVogjqPpxRTqfdhRTVBihxAw2rRG2Nq1TCrRAxVxXFNtU36Y2rRXDaWihGNqtySuwFXYFdireKt4q0cVb3xRTWK03itNbfLDaWiBhtFNcRja03tTpgSvWQjbrgIVt5amoFMFKsDkUwqCuaQt1A+jDSqkOzA7/LISDKKaQXDBQAajwzFlByoyakv6NxphGNZZEHNKHHX7sujGmmUrQcgoeuWtJWqVB3GGkWuafaijGlMlPl49ckAi1nNGYhSCV+0B2xYt1xV1cVtxbFVpJPfbwwrbWKuocVdirvbFXcW8MU0uCeJ3wWkBv0icbTwt/Vx442y4Vph8DhBRTRjUDrhRS0ca9cbTS4CppgSvWIVrgJSAvoAcFq1z7Y0tqErA98mAwkVLJsG8WK0qDhBVopQbYbVobYlW8CuxV2KupjatcRhtWivhjauIrhS1T78VcBvir/AP/U75mxdQ7FXYq4A98VbpgtNOp7YbQ44Fa3FMVbxV2KupXCrqYq1Q4q7FXYq7FVpAwppor4YUUtp9+FiQ7AimsKuIxtWqYbVrCrsVapim3UBxtK3hjatFThVricVdQ4q6uKt4q7FXYq0TirWKuxVvFWsVXBCae+NquaFgadcFppaSw2O4wodyH8owq1yatRtgpVwlevU4KTZbeQt418caW1nI1rhQ0aHrvXCEFYyjsa5IMGqYq7FVqRRoXZFCtIeUhH7RoBU/QMVtdirsVdscVaphVrFXYq2Kk4qiI7UlCT17ZWZtwxu9B++PEogvWBh+z9OAyTwuZHxtNKThhkgxJWUrtXrkmKrLYsq1D8iciJs+BDiFgx5ZLiY0qVAPTfFVrTN0AxAUyU2kbxyVNZKmzMd65IBbW4UN4ot2KHYq7FWqDG1dxxVog4VaOKuxV2KuxVsUxV1BhtXBN8bS//1e+ZsXUOpthTTYHvgWm6YFDgcUu2xV1MUU1XFadihvFLWKHYq7FNOIrhtDqYq1TFWqYUuxV3zxVoouG0U1wxtBC0imKKdhQ1scVdxxtLuGG1pbSmFDsVdtitupittU9sWTVBjatcffG1aIIwq1uMVaxVv3xVrFW6Yq6hwq2CVOBV4farYFWMRTbocKrcVdirsVbxV2KuIw2gtGv3YQxpojFadxHH3wrS2hxQ7FWn5BCVXkwGy1pU+FTirogWUErwYjdSQSD4VG2KaXEUPjihor37Yq4rthTSIt0RSGbK5lsjQR63MAHyyjhLkcYUXuY6/CPpyQgWJyBDtcsx75PhazkUmlJP8MnTHiaRHlNANvHtiTSx3REdooHvkDNsEUR6aEAM4FPHK7LZspSRwAGkgJycSWBpASEA0DZcGklTyTBawrhQt4nCrsKl2BFOwrTsVpviSKjBaadwOC1pv0277Y2tOKEY2tLaZJFNUGK07jitNEYVp1DitOrimm98Uv8A/9bvtN82NuqdvjauwK4HfClvfpgQ1vhV2BV3emKlxGBi0a4Vd9GKXYq7FDWKuxV2KuoMVdTDau4jxxtNraHCtu6Yq7bvitOoMUU1wHbG0ENcSMNrTVDirsVaoMKu4jG0U1xOG1pbQ4UU6mKtUxW3UxTbqYrbuIxRbRQY2tuCjFkuFKdMCLdhtDRFcVdTFXEA42q3ga7YU2tIOKWsVbGKt4q7FXYq7CimjitNcR9GFjS2mKKdTFXCoxV3XFWwK7V38MVDuIp1wsmq++NItqpxRbsVcS3Y4rblIHXFKpHMU6dMBDKMqae5lJNDQYBAJM1Lmx2Jrk6YEtHFCw1PXCrsKuxVsYpapvitN7YFcAtaHG1pWitufQH3yJlSRG0Utivfp4HKzkbBBd9Vjr8I+/BxsuAKTxKu5O2TEmBCHkK7gZMMSpGlDkrYLCD4YbVo18MVdhV2Nq1xGNpbAxV//9f0BTM91Tq0xQ11xV3HG1brih2K21QYrbqDFFu2xV1MUu3xV1MVtojFW6DFVprkgyC0++GkU2DvgpaXYEOocVdirVBhtXUGNq7iMbVojwxS1vhV2KuIU9cUU1xGK01xPbDa00a+GKGiaYVdsfnja0sOFi7CrhXFW+JwLTVMU07FaditOpitOpitOwrTsVp2KHYqt4DG1top4Y2m2uDY2tuoa0wpdvirqbYq7FXYq6gw2inUGNo4XYrwrSCR4YUUs3BwocScVdirWKt4q7FWjvirRGKtYVdirsVcRirXHDauK+GNq1QjemKXYVdQ4FVo1G1QMiSkIiN+PemVkMxsrLLXr08cjTO2nc9sQFtCylyp7DLAGuRQ9NjTc5YwLVKe2Nq6o7b42hxHjjaXbdKYUONAPDFVhpXDauGKv//Q9A75nurprFDsVdirqYrTsVpo4op1DiimqnCtN1ONLTt/DAtO3xWnYrTsU04rXDaQsK4bVuhxtVwpTIodTFFOxV2KupirqYq4jauFWqE9NxjaXe2KGiuG1a442lxBGKtVOFXYq0VBHTFVpSnvkrRS3jhRTfyGBacDU79MLKlSK2eVwqVNfuyEpgM447XvaSxvx6++AZAQyOIhs2rkUNB74PER4ZUzbSg79clxsTByW0jKWHQdceNfDLvQiD7knHiK8Kn6bA7KfbJWjhb9JiPi2xtBisK0+jDbAhrCh2KuxV2KuxW1pB+jG1tor4YbSC4An/PwxTbVD4b4q6h8MVt2KuxVqmG0ENcR4Y2imioxtadww2tNFcNop3A42imuJ8MVp1DitOKkdsbVqmKuC42rXE4q7Crq4q6mKtcRirXD3xtVy1HfAtrubdsaTbfqP44KXiLvWbGk8TYLNtTrhUFxiFTQ/RgtNLTFvvvhtaXJEa7dMBKiKobf+bBxJ4VKSIDY7eGSEkGKlxbwyVop3pt4Y2tO4GvTG1p//9H0MY2rmbbrStMXjjaCFpj98NrTfpjxxtaaKGu2K01Q4UNYq7FaaoMUN4q7FXYq7FXYq7FXYq1TFWxtirq4q7bFXCgxVvbFadTFaaIxWmt8WLqYq4jFXbYq4jw2xtNtFcIK2tIGFXYVpqoxVxI8MVpv0mIqBXHiZcLQA+kYsSitPl4ScSNj0yrKLDdikjXCOzVpXtlI2cjYqErcSVGWRYFCO78wT36jLAGqRc9x8HFdq9TiIsTNQ50NMmwtWBRAD1ORLMELZZgRsPnhEUSkoU2ybSWuOG0OpirWFXYq7FXYq7FXYq7FXVxVriuKtFfDDa2tNRim2q4pdXFXVxV2Ku2xRTqe+G0U1xHXvjau+P54ULa06jFXEjww0hscT3p88CuIGG0reIxWnccUO44VdirYXfwwFQGygAr1xZUtoPDFDa8DtT6cSoX7L075EslhDHocISuVXP0d8BKgKqCh75EskSSpTbqMiyUWUbmlThCCFIxnwpkrRSzgR0GESQQ4K3hhtD//0vRW+ZVuuouKnuMbC8Ja2HbDaaLVBXbG0UXcd/fG1orTGd8NppoIDjxKWim+2StFLTGcbWmiMKKaocUU6mK07FDsUOxV2KuxV2KuxV2KuxV2KuxV2KuxV1CADTY9DgtPCXYUO2xWnUGK01iimqYUuIxBVbxwpb442q6N+PIeORIZiWywg1675NrpyllNQd8BSFVJjy+I9e4yBizjNt2Zj12xASSpMHrU5MMStoK7jDbWQ4KOvTG0NcduuG0hZwamEFWqkYUU4EYKY03itNUxtDVMNq4jG1apirqHFXYVdirsVdirsVcd8VWlFxTbXp4bW3FKdMbW1mKXYq7FWwcVdih1PEYbRTRQYbWncBja06m42xtNONMUFrFDsNrTRUHG0U1xOBNLgMUrginrjaaaZD4fTjaeFeqFhv8ARkSUgKyxADYb5G2XC7hJX2wWmm+mNrTccbkkgYkpiFZYRWhGQMmdNvAOgxEl4VJ4CoyQkgwUinxDbJWw4X//0/TKop6CmWEtFNlBTxyNp4Wgu5/VhtFOMMZ+0BXHiKRAFY0KdsIkgwWG3WlRucPEx4VMwSdKD55LiDHhWm2lUVp065ITDEwKz02PbDbHgbFuxHQU8ceJeBY0TDthEl4Vvpt4YeJFNGJvDDxLwtGI+GNhHCtETnoK4bC8DjGw6g42EGJW/hhRwl1DiinUOKuxV2K06mK06mK06mK07fFI5owEulCKjwHbKXI5oedVVqAUp1yyJtomKU8kxccVcKk7Yq2QQd8bWmiMbWnYq4D2xWl6qgUnjvgtnSwr9+EFjTXAnpvhtNN+i3hg4k8KosRO1RgJZU36Mf7Tfdg4lpaRD0GIJQYhYUU9MmCx4Qs9L4tj9GNrwtFaHbDbExW0PhhtFNFARhtaWhD44bY01uO2K02AT2xRTqHwxWnUPhja06h8MFrTXH2w2inccbWncR44bWnca42tNcDja07icbWncTitNYULtiBgVaUr2w2lrgMUOMftjad1vpnxxtLuB9sNq7ia42i2qHwxtNthSTTpirRFD44q1htXUGNoprjhtadx98bWmwMFrTeKWwCTgVU3GBkFwpTAleCQP14CkFdyr8sDINV3xVf6tBQCmClBWCY8t9wMeFPEiFlDbnbI0ziWyVI64KZWsKpUYbYv/9T0wtRXw98mWndUqDkWVtcPc4qQt4gNuaYSUALqL41yLJsBSNsbQspvQ4rTiCVI8clFiVojWvSpw2ilxjU7FdsFp4VrRLt2w8SOFvglOmG08KlWgPw4bYkOEXJSTsMeJHCpj4PnkrRS5pqihGIVYFVmqV2w2il4gjJoB88TJPCHLbRk1pUYONeANGONagIB74gqYhSdI+pJH0ZMFgYhr6sp+yTiZrwKq20NNwa5HjLIYwse2i5UrQ+GHjKDjC2S2jH2WwiZRwNrG4Witt4YCUiNKbwyHrkhJgYkrDA4FcnxMTBaUI642jhbSoOKgKwNRXjUnIM1jCpJbt0GEFipld+mStFKiRilTvgJZCKoANi3TrTIkswKcyKy1ApgBVuOJQWI6jpiZJAXJFUEtgtIis9Msx8cNopzxKF64iS8KgyEdAcmJMCHem9RtthtABXeltv18MHEnhU2+E0OSYlaXjPVakYQq0lfDCxaoK7Y2vC2VPhjaDF3E1xtFO4Y2oDYjwWy4Xelja8LvTOG14Wiu+NseF3EV/hja03QY2kh1B442xpoqK42kBsqtK0xtaW+mnhhtHC2I17Y2vC16Nehx4k8Nti3wcSRBVEIYU7jBbLgWmzFNsRNeAKMluyioyYk1ygp8WHY/PJWx4XHG0NYq0VBw2rRVRtTG0tEJhtVtBXFXfPFXbYq7FXcj22xVcHPfAq/4O4wMlwKjrX2GKVQfhkWYab2xtBWqW79MKHbV6YqqI4p0yJDYCu5kmgwUydU1rTFX//V9OEE9BiwaCV69sNrwl32Qe+BaaLVyVILW2AoC4FR0xoptx4k74EtgDFQFoWh64qV1AtTihaaHFLioqPDFW+FenTFacVoMILEhaUFKU2yVopZ6APsMPEjhXegtOmDiTTloCRvv3xRTgAuwwEshFzKCNxjxLTXBOvHEyKeELgo8AMILGlwA47AVwFkpmNC3IjfHiY8IaaJD02OESUhrgAaGmStjTRjLDYAe+G00ta3NOuIkxMVH0SOvXwyfExMVhFDuuStgQ4EV6GnyxULvgPiD3wJpaAK7YSildFFNup6nIEtkQvKAilBkbLLhcsagHpiSoC4QioPTAZJ4W2jalB0xtPCp+mVJJ6HDaKX8ErvgtVjqrbDYeOEWghUCxKKAVIwWUgKbx8vDDaCFwtIK147+JwHIUjGFzwQ03UDBGRUwCg8EfbY5aJFgYLFgUGvUfjjxI4XNGKeGESUxUmgr0yXEwMGjEqmhOHiXhbACntjaab4BgSMFrS0xN4bYbQQpvGR16+GEFjS0Jt4ZK0U6gG1cUEN+mp3BwErTYjXxONp4W/RT+bBxJ4Q4hR3xVaWQDwwgK0HOGkO9VhjS8TfrsR0x4V43eu2NI42jMx7bd8NLxLeYJ3xpi3RfDbFVpCfy4bRQWmNCfDCCtLTHTDbGlhQHww2tNemO+Nopb6a+Jw2rvTHjjauCb742rYUdsVdTFkAuBGApVBTrtkWQVFZQCQBXwwUya9TfoMaUFolSOgxCdmggrXavjhJQAvAU5Hdku4qNxjuydXAh//W9OBx2NMNNdrga98DMFo4qWiAaY2xU2AXYfCPHrkgWBDlJ7MGGEoHNsUrkC2NsjHZfvwimJU6srfEemSACLXgqR12wUkF1U6Vx4U2vFKbZFVwOLIFpqHFStKjthtjTRBxWm+LHAmmgp77YbRwt8aYFWk7dMmi2lNe2K8S7I2l2JKttTjgVbXY4QgrCDIcmxXqhUUwWycVr1OIKFJkNaAVOStFLghpja070z36YLQQsENRU98lxIoLvq0fQCmPGU8LvQoaqcHEngWksDTCFLW1cJYhes3I8enuciQyBX8qbE4E2uBU9KHBRStKVOG0LTEw6HHiWm0U/tfRiim+C1674pAXgVyBZguZRhDEhRZAP2voyYKC4RFtxSnjhtDfpIDVjXBakKbIO2StBCm0ZO9ATkrY8KwxnuKZIFHCp8itRTChcHNRttjSuKqevjgQQtEan3w2jhd6KHxx4ikRbMFB8OG08LRRu+/vjaCGuB8MbRwrSntXDaOFaYmOEFFFr0Gr1pjxI4XeicbXhWshGEFBitNfDCx4S754UU4jFVtPfFLRLYULanGlbq3jhCtYVaqBihojFWgDirdMVp1Dilvgx74rTXpsMbTTY5dCMUN74pdyI7VwJbDOdgN8BSF4DE0pgtmAuMeC002kZPUYLSA36e+Npp//1/ThRD1yTCg7ilKdsBSuAFMCWipPQkYqQt4t41+eKKaoR2+7DaKcFB6jAtrq70ofnihorXvhtat3DtXG08LXoDxw8S8K4R075FPC3w98VpumKadQYrTXHeuK07FIbxUhaQT2xYOKjFFO4g4bWmqHCpao3bpkUt8SepxVpkNCMIQXIpB6YSVC/IqspQ5IFXVI7bYkpa3yNrTitevTCCxpb6fauStFLgtNq1OKQ4A1yDJxWo3yQLEhaIkrk7RTjFTpucbWmgxA+JcCFM0rsTkgFbSdgadcTFQVQyq+335GqTamVABwqtHINWu2SKFQF6+I98iWQVRWm/4ZFko8QzkE7VybFc4VRQbnAtKYAJ3JwoXMi02NcbVbwP8ANjaKWtEx/bwiSCFpi+HZt8lbHhWenJXDa8LXFgdzja8LZ8fxwsXAqTscUhs08d8AZW1vSuFebt8UELeGLGm6HtitOp44q7FCw9emSBStNPDCCgtcVPUYbY0704/vxteELTGnhjaCGjEpxteF3pJh4l4GjEPCuIkpgpmHfJcTHhb9Hxx4l4WvRYdseNeFv0tsHEyEWxATsMeJPA36DDtjxLwLvQb6cjxLwLhEwFKY8SRFv0h4YOJPC70RjxMuFxQDalcHEjha4ivSmPEinBRhtk3t0xVokdsVaB3rhV//0PSxcVpTbLGq2hKFGwpjwoBXLMO+AxSCvEynvTHhZW36ifzYOFHE7mvjgpbb5CmCltvDS26oxpILq40m3V9sC26vtim2wCdwDituofA4rbdG8MUWlPmO/wDqukXUkdwIZ0C8SCvIEsB0PzwgIJSZfzJ0c/8AHtcj5hP8nwb/ACsPCkFd/wArH0jvbXP/AAKf5X+V/k48KeJ53aT+Zh+e9zGJ71dNe8RBCJHMHpekWYcalQhPtk5DZqxmyXtGo3sdhYzXkykxwIZGVaciFFaLWm+V022x3/lYujVA9C5qTTZU/m4/zYeFbCYaL5r0/V7praCKWORY/UrIFAI+HYUJ3+LAQtpyQfDAxbofDFDqHwxVrFWmdVUsxAVRVidgAO+KoWy1jSb8stjeQXTJ9oRSK5H3HGlRVSain04q1xxVdiq1hvilbUA0yYVeK0yJQtNe+EBXChNe+FLTmgwsStCVFSTja0taPfbCCpDvRPj9GNsaa4EbHG0tqi1rU42mlxVR742mlveo2xVvk3TApWFO+G0U7iR0NcNoWkPXbDau+OtMdkN/Ecdktd8VdhVpq9sUO+E9RihaeBxBQt+DwyatHjirTNGiszGigVJ8AMBTEXyUbO9s763W5s5kuLd68JomDKaGhoR4HG2UokGir9MbY01yxtBCncXcFvbyTysEjjUu7HYAAV74krAGRpLvLfmfSvMOkrqencxbPJJFSQcWDRNxYEVOIDPNjOOXCU09SKngThprJWkJ442imiF8cIKKa4EnbfDYWm/TfwwcQXhbCHHiWm+D+GDiTTQVxsRXHiWnen3OPGvC2IxgM08LZT2wcS8LqbYeJIi1THiWm8HEmnDDa07Da00dsUU0WAGKrSzeOJKGjkUU7DaKaJqMbULcmCloncZJX//R9KmJvCuW21Ut9GSvTDxLS703Hvgtaa4N4Y2rRjbrTG0UtKMD0Iw7Ip1XHjirhz8ThoK7kw/aI+eCkrg7DviQm16zEHepwGKgrvXXwyPCtvD/AM3PMF/ZecjDbahcWq/VoiIYp3jU1rVuKsB/ssnRaZTNlg7efLtaq3mCUMmxBvnBJ8P7zHhLHjK0efL4gf8AOwTUPU/Xn29v7zBwpEyh7rzLHflhPqf1l5RxIkui9VHahfHhWyprd6epqXXbZf3rbn3+LBwlfEXC904bmdTTc/vm8On2seBj4hRMfmIR3hu49QaO5O7Ti5YP4btyr9nDw2mOSl195vmvIPRutWlmhYgmKS6crUdCQWw+GviFAfpHTBubhNj19c+P+tkfDUzKIttct7WYT218YJlFUljuCrAkEbENjwJGQo7/AB1qtR/ueuCT4Xj0/wCJ4eBPEWv8dasAD+nrkEGh/wBMf/mvBwrxFtvPWtcSRr1yPA/W36f8Fh4UHIzj8sPzssEkbQvM2oAAMfqGpzEmvf0pX35f8VSftfYbIyjTdGVvRb78wvJK2cx/S0MgZGWkQaRviFNlA98AZEGnjH5X3+k+ULrVdSlmBufqbrZRmFvjlqCqnhU9viyRkCURBAe8eU/M1l5i0SDUbd09R1UXUCtyMMvEFo27qd/2v2cr6sqTmorTJUha1K9cFK19O2GkuPHvhVwdR3wEFXcgTirRemGlWE1ySLXK60pvgIW1xYUqN/bGlWl2+WKrTyJxUhrcYUgNlvHAlbXCxJdUDFi2DXFmGicCC1yOLG3V3xQ6rHvhtVtCOuStLXIg79MbVsMuRtUu1nWYbFRGgEl44+CPsB/M/gv/ABLAZKA8nvfOXmmK/njXV3ASVlVOMWw5dKccnHcW0TO6kfO/mwhv9yz+3wRf805JjxIe380eYbaQNFqsoJBJ5cWqfpBxXiXXPnPzRNbmCXVn9OUFZAFiWqmoIqFr0xSMpBsIbRvMes6Hpy6dpeoGC0iZnjiCxsAXPJt2Bb7RxTPNKRs80ePzB82cj/uWqKd44a/8RxphxlY3n3zY6qDqxHLrSOIH7wMFLxlTufOXma5sZLW41ATQP8LBo460rt8VK1wkWoyEGwh9H8za3osEtrpt4sEDu0pj4K9ZH+03xct2xplLNKRs80dF5983pTjqfLkKnlFG2/tUYsfEK7/lYPnUCv6STc0AMEX9MFJ4y4/mF51PKmoq3EV2gip0+WFfELKPy+8069qusTW+p3azQrbmSOMRpH8QcCtVFehwFMZG3oBcUyNtyFs7uWa4u45AFEEiqg6mjRq25Hu2ElF7oqoyKXVGKuLDFVpbCrRceOHhVrkMaW2ua48K27muPCtuDjGkN8gemHdNtVrjurXLbtjZVpmxCreWSVrkcUFrFDVcQruW+HiV/9L05y9sm1u5eIwFXGhxVbTGldQYVd8sKuIJ69MC0tKeGG0UtMbeGG1poxnDa0tKcRVjQeJ2GNoSy98yeX7JS1zqMC8dioYOa+FE5HGwrx/8wPO1tP5wgu7HTry7t4LFreRxGqUb1udR6jLVSoy7HkiBu42XFKRNPOtJ1+Wzso7ebyWt5KXlcXDiDnJzkZ6nkjHYN/NkjniowSoBCW+rSx+ZbrVm8nK9tNbx2qWdIOKSI9S4+DiS32dlweMEjBIAphda8Z7i09Pyd+jzZ3MVzNcQi3LhI6kj4VT7X+tiM0UHBJkX+NlJVf0NfcmFQPTi6D/Z5MZ4NfgSKyy85QpbKraNfkl3AYRxEEs5O3x4DmjaRp5UoXvm23dpz+h76noNExMcWzFgez+GP5iLE6aRVv8AFmnFuJ0W/rQmhhj6f8HkhqAv5WSna+brKNX/ANw99SaQvFSGPcFR/l+2A6iKjTSCWeY/MlteSadLH5fubuKzuWkuLeeKJUflE0YHxFwSGcHpg8eLKOCQKW6zrEF5pd5aQeSfq08sLIswS3rGWBAf4UB29sHjQT4E12laxbwWFpayeR/XmjhRWkKWxLlFAL/Eld/fEZoMjgnfNUh1T/cFrtpF5fubaXU3m+qwQxRGNDJEsaryUqPtKa0XD40GB08zTHNC8u+YtP1fTJUsZv0fzBlBFTbuq1NaVojncA5hznYc7HGnr9hqUtOJJBWnXrmPbkBN4b3kBU7+NcKkK3lbWJ9E8w3l81lPcWtyhT9xJGOTVHEujsu6Ubif8rJxlQYcLMP+VlQU/wCOPe7f5Vv/ANVMPiBh4Tv+Vl25/wClRfD6YP8Aqpj4oXwnD8yLev8AxyL6n/PD/qpj4oXwy5vzItyf+ORe/wDJD/qpkvEivAWx+ZFt30m+H0Qf9VMfEivAVw/Me17aVffdD/1UweJFeErh+Ylt30q++6D/AKq4+JFeAt/8rEsx/wBKq++6H/qrg8QI8Mt/8rEs/wDq13w/2MP/AFVx8QJ4C2PzCs/+rbe/8DD/ANVMPiRXhLh+YNmf+lbe/wDAw/8AVTB4kV4C2PzAsq/8c69/4GL/AKqY+KF4S3/j+w/6t97/AMDF/wBVMfFCeBo+fbE/8eF5/wABH/1Ux8QLwFr/AB7YjpYXn/ARf9VMfECPDLv8fWB62F5/wEf/ADXj4oTwF3+P9PA/3gvf+Aj/AOqmPiBPAWv8f6dXewvvn6af814+IGPAW/8AH2mn/jxvf+Raf814+IF8Mtp570ok1trxKeMa/wAGOHjCOArj520kn+5ut/8Air/m7HxAjhLX+NtKB2iuf+RX9uHxYo4Sv/xxpQG8Nz/yK/tx8SKeEpXL+YF0LidUsZDAVAt3KioavxFhXf4dxlZyMhFh3mTzLczapHaQLPZ2twvK91RlVpgBUFYkr/eN/vw/DH+yuRjKymQoPL79fL6ReZ7eDS7hzcyTHTJJLSWVyrQhVPqlSwPqAmpb/KzaYZxEaLrs0JGdhFQ3fkQRxiTy5NzCryP6NY7gUPbxyZnBr8KSD0qfyZCl0Lvy/M7PdTPATp7vSF2rGvTbiP2f2ceOCnFJfb3Pk9de+sJo0sNn9UMbK2nyAGX1QwPEI37H7WEZIsTjmmF3qHk028ippjcyPhpp0o7+Pp5LxYI8OaodW8iVr+jyP+3dL/1SweLBBxzQkeo+ShOhfTyFBmLE2EvRmBT/AHX4Y+LBfDmvvNU8jNbSrHYnmV+ECwlG/wDyLw+JBPhzVf0p5BJr9S2r/wAsEv8A1Tx8SCBjmk1ld+RkmvzeaVLL6l1I9vILKYj0SF4gUUUoeXw5EzgyMMim9z5F/TaSfoiYWP1ZlkT6nPT1ualTxp/Jy+LETgvBkXajdeSZI7b9H6TNFKl1A7t9TnUeksgMoJI3HD9n9rESxqY5KZ9+WvmfQtL8wawtjp7kX0NsLd1iNvvH6nqAGRV8UJplGfJHo3aeEhzelN59pT/cbKT3BkQZjeKHM4Cg4POZivLq4OmyN67IygTJsFjCGo6dsfFCPDkzGxujdWcNzwMZmRX9M7leQrSoyfNirBxTqMaUF3PDSkrSxxpBaLYVWlziq3kcKu5+OKHcjgS7mfHCttFz4/RirXP54q7meldsaRbRfDS2t9UdsICLd6mPCtteoRh4Vtwkx4Uv/9P0h9YfLaaW/Xf5YeFXeu3jjwq16z+ONJbErHvh4UW4zsoqx4jxOw/HBSbS+880aLZsEuNQhRz0jDhnNP8AJWpxoMeJJbv8y9DiD+iJ7gJsWVOC18AXKk/QuOzLdJ7n80dSccLOxjhciv75zJwX+ZuPAf7GuAkLwlJ7vz75nuWBF4YYifgSBFRpDTsSCwT6cjaQEnu7+9uWdrm6llb/AHdK7syr/kICftYCWQih1DLxVECsBWKM9EH87/5WKUNNHGwqQXjJ6/tTP/zT/n9nBa0oPaqWerAOBW4lGwUdQi/5/wCVgQpfVB8BVAGpS3j/AJR3dsUtfVIgu45Qqdz1Mslf6/58VxQu+pkllLAMRWdx0VR0QH/P+bFQG1tmqhVeLH4YEp9lf5iP8/5cUrGtUAO1YYjuepeSv47/APD4sW/qRPJD9t/inYdFX+UYUgNfViT6oFGk+CBT2X+b+P8AwOBabNogHSsUHTxZ/wDM/wDBYopv6hUiJ92f95cEeHYfLt/qriq9Laqc12eY8IvZfH9bYCkBVEEMdWUfu7cUA8WIw2mkRbRMgSIn4z+8lPvXp9+ApRHMsvJqO0r0jBFaDx+4VwUm1dXhXm1Cqx9SN96VpQ5HhZAoqKVKhQwLEV49DSuKbRMcjDr9GAhKus46UyBCCvV1PhjSrgwHhjSF1Vr2xS3QE1xpWyfAY0ri46HbBS24v02xVxcg0AxV3InxwK3ybrTfvgVcCepHXCq0nsBuMbS2Q1B1wq6jdxirhy32xV1SNqbnFDRJA36eOKtqCy1p1wrS4J4jFFBTkuLSI0eQBv5Qan7hiIkoNBDvqQp+6iJ3pyf4R925yYxljxISa5upK8m4Ab8UFNvmd8sGMMeJDyW6nelSw2Y7n7zkqDElDGI0qdwdmwoIWG3alPD7J8R4Y2ilv1XwNFY1+nG1pY1qxPIncfCflimm/qrmq19x742tNC2NN+/68Fopr6sw69R1wgrTTWxI2O3bCSimvq7bD7t8bWnLCwqKVJO4ONqu9HerD4um/fBa0u+rg9uhw2mkTbx8eYPtWmC1CKDSrTix+/Y/24KDO1wnJJDAH36ffTHgTxKbPqFWEV/cRRtsIlIYKPatNssEyOTUcYJUVtb5hQ6nJU9mUD8emPjS7gvgjvRFuuv24b6vqc6q3XhSn4HIHNLuSMI70Rb6n5mt5RJ+lppOP7EoV16d1ORGUsvCCL/xR5oPW8i9v3CYfFK+EHf4n8z/APLXF9MC/wBcHilPghr/ABP5or/vXFT/AIwL/XHxSjwR3t/4m8zf8tUR/wCeC/1x8Yr4I72v8SeZv+WqE/OBf4HD4xXwR3tHzL5prtdQ/wDIgf8ANWDxivgjvTmy1TVZrWN5blfUI+IrGoB++uUS1EmccIVWub1lNbtx/qhB/wAa5H8xLvZ+DFU0Kad5r9ZZnm4SqI+ZrxUoDQbDvmdpshlHdxM0QJUE155ktTueKtcjhVqpxVsE4LW3/9T0VRa7A5bbU2DthtDq1xtW6YLV5V+c/mfXNMS3j0fW4raK4SSOe2REkkDJSp58uSHfpTAS1E+p5W3nDWpggur95SCSQ5LAkbAnkx6DI0WziUh5r1GkgFx9pvjbiAaV6LQ7bY8PmnjLl84aly5GZQQv7peI4j3pXrjwp8Qr28z6gvGM3FVryc8RVjT9rfBwr4hbXzRqTiQi54yN8NeO6rWnw77YOBfE8lx80agsvH1xxiX4F4ClT3Pxb48HmnxPJYnmrUWVUNz/AHh5THgKnatK8unbHg80eIe5z+adTAlmFyOQHFBwFAKdhyw8PmnxFh803XKNBdDgoLEGMVZtqcvi38ceHzR4nk1/im+KPW7XnI3xsEFQtaUHxbbYBDzXxT3NjzXe8uXrp8C0iX09hXvSuHh80DI2vmi9CIhuFKk8pSU3JpWh3wcA71OU9yofNF+VaQXK+o5IrwFVUDbjvjwp8Qt/4oulkUfWF9OMVUcBu3TffHgXxT3NL5ovDGAbhayNWWiCtK9OvTHhXxGx5pvCZpBcJyA4xDhsBStevjjwr4ionmG6rEhuVKKCx+AVLCnXf3x4V8XyXJ5gvJI243K85Xp/djYVpTr4YOFHiFuXXtbE5EMkDFCkSh1IHxhmJ25fyYCyEyrx3XmMxxj6zaUryaquST1328cCnIvN75jHqn61acjt9l9hTttjunxAq/W/MYkX/SbMBFoq8JKdvpx3XxFovPM3pgG7tKM/I/u5Kn4sd18QLjf+ZQ8h+tWgJUAfBIaUrgT4gcupeaF9JVvbYBVNBwkp0774r4qFbz1q+j30Lau0M+nyzenPLEHDxq2/JVPw8V/a/wAnHhtMc1ml+s2MVxr2oXtx5dudZt7j0TZ3UBRk4LEAwFZU/a/ycyMU4gbtWWEidkjvdBebVtOntvKN/FYQmU30Pwgy8lpGKetvxbfMjxcbQcWVV1bQPW0u6hsPKOowX0kbC2mPEBHI2NRMenywHLjQMORFW2jWyWsKS+TdQedUUSybfE4UBj/fdzg8bGpxZUJpOhTW8moHUPKeo3CTXLSWQG/pwFQAn98OjcsfExp8LIjbfTHTUTJb+W7+zg+pzxMHQvymcqY2A9R/sgN8WHxcaDiyLNN0eIWdvFd+UdSa4SJFnlox5SKoDN/fD7RwHLjTHFl6lB6fod5Deag115V1KWCWcPYp8X7uLiBw/vdvi3wjLjQcWVu90K/k1Owlt/K+px2MRkN7B8Q9QMlE29X9lsfFxKMebvVdT0a7l025isfKuqQXbxsLeX4gFemzf3x6HD4uJRjzd6KttKpawJN5T1Z51jUTOeW7hQGP993OQGTEnw8vehLrQNYk0xIV0PUwv195WgTmkotiDxX1BJ2NPh55bHNhHNicea9ig77ytqTaZOln5f1yPUGU+hK9xMURuxI9Y1/4HDLLg6Moxz9SmcGlzJDEsvlbVmkVFEjAyGrBRyP993OV+JhYnHn70Ho+lX8UNwuo+W9Xmla4leFlMh4wMR6aH96PsjHxMTLw83eqw6Lz18y3nlzXf0P9W4pbwSTRuLnnXmaTD4eG32sicmLozjDL1TVdL0lLzT5NN8u+YLaSK5Vrp7t55oTBxYMpjaaQMeRX9jBx42RhMhNtTLTzejp8EltJEgZ/rCSRKpDBh8NRXkBgOaPINZxz5lDwzeYImXi9uaDYt6h+ffKyLT4pCoup+ZlVTztRU/ytjwr4pd+lfNPxnnbH+UcW8K48JZeN5O/Sfmv4avbe+z74DEo8YNHVPNXpseVtsaDZ/ltjwp8Zr6/5oJofq3TcUbHhScvksi1PzMXX1mtxGepUMWr1HWm2SEGJzeSJ+v6uWaksR8AUPWnzw8CPFLX17WQF/ewmn2vgP9cBgvilo6hrQr8cNR0+A9PvxGNfGLf6Q1jkKyQhT/kHr9+PAvilr9Iazx3khqPtEqen34eBHilpr/WKmkkQP7HwH+uPAnxStbUNX2PqQ8f2vgPX78Hhr4pa/Ses0PxQ1rt8B6ffh4F8UtnU9XqPigp1Hwt1HXvg4EeM1+k9a415wV/a+Bv64eBfG8m11jW15ANBUfZHFv648C+KVzazrpK8Wh413qrf1wcC+M3+mNc6MYOVd/hbp9+HgXxW/wBL64K0MHT4fhb+uPAnxXfpnWqDeGnfZuv348C+K4azrgqawV6nZumDw18Yrhr+v1+1ER+zUMa/fg8IJ8cqcmueZA0ZjitnRfthi61PgaA4DiXxykt7+dXl/S7mWx1a2uRfW7mOcwRhouVK/AzOCdjkfDLkRnYUP+hgPJH++L7/AJFJ/wA14PDLLicP+cgfJHUwX3/IpP8AmvHwyvE3/wBDBeSP98X1P+MSf814fDK8Tv8AoYHyOTX0L7/kUn/NeDwyvEHqnk/zBZa75cs9WsuYtbpS0YkAVwFYqagE9xmHkiQWyErCecvDwytmraEQLvUVP88TfembLSfS4Gp+tOPh8czQ0tbeOFWiQO+BLXIU642hoEeOBX//1fRu3t92WNK2q16YFd8PvirvhrtiryPztqHkzSdfuRrklnZXFwxlQ3KorOh25gkfF0zGyA23YyDskI82/lV/1dNL++L+mV7ttBcPNX5WOKDU9LPtWP8Apg3TQcfMn5XGn+5DTPpMX9MbK8IcPMX5WHf9JaV/wUWG14Wj5h/K7/q46UK9+UWNp4F36e/Kv/q4aV/wUWNlHC79N/lZT4dQ0o/7KLBa8DY1n8rKf73aUT/rRY8S8K4av+Vlf97tJ/4KLDZXhC79LflbX/e3SfnyhxsoEQ2NX/K3/lu0n/g4cbK0Hfpf8rDWt7pO/i0OC14Q1+k/yrp/vbpIH+vDhtPCHfpL8qD/AMfukf8ABw4bRwhv6/8AlVWv1zSNv8uH+uNleENi/wDypJr9c0in+vD/AFxJKOENfX/yqr/vZpFf9eH+uNrwho6h+Vf/AC2aSP8AZw/1xteENNfflXwbheaUTSnwyRV/XiCVlEU8R/x1f2d7dWlusMlrDcSpCx5t8CuQu4bcUzYwxAh18juiofPupPyHpRHl12f5eOW/lwWHEih501djX0IunQCT+uH8sE8a5fOepHb6vHtvWknjXxwHTBHEuPnHUSSfQj8NhJ/XB+V81E3DzfqWx9GPbYDjJ/XH8r5rxpp5VeDzHrcVjq9vG9pR5WUGRDyAAHxE++Y+oxcEbb8FEvVrfyxotnZiC0mnggiUrHGly4CjsAKnMK3M5KdjdSFzbXBrc29A7dOan7MgH+V3/wAvlhSmAlFD74oXrIcVXJP2IrgWmzcrUVNB74rTRv4lYBmAG/fFaXPfQ0DBxU/LAtLF1FQ9GIp0BwJpVW/hJpyH34rRWm/QkgMKAb74rTZvohvyArv1GC1pqTUYwh3BNN9xja06PUYyCAR7bjCtL0uot/iArhWl3rx1FWrXYU3JJ6AUwJR2r6BNaWlnNcyyRXFxzJiRuIRQAQD4vv8AFhDEsQ8y2sWn6Hf6hbScrqJDKObcwxqK1HU1GWwu2udU8wHnjWBT9xbmnT4ZP65ncDr7aPnbWCB+4t69fsyb/jjwIto+dtbqaRW4rt/dvt+OPAkFy+dtaotYoHC9Ko/8Dg4Ftsed9YANYYADufhkH8ceBeJUj8+6lUco7Y0H+X/XAYM4m3p+n3HlWTyzod3fvZQXl5bvJMHlVWLGZwuzty+yNswjI3TmCMatUD+S6/70WX/I2P8A5qw3JeGHk4HyYynjcWTAbAiVKbbdmw+tHDDybY+TQByuLJSTQVmjFT4CrYCZJEYt8PKFP7+zr/xmT/mrD6kVB1PJxr/pNnXoaTJ1/wCCxuSeGPktc+TVoWu7JR2JnQfrbG5LwhsjyeaEXNmQe4mQj/iWNyTwx8myPKFafWLOvgJkrT/gsbkvDFaR5QA5NcWYVdyTMlPxbBckcEfJ1PJ53E9mQe4lTp/wWSuSKj5NV8oA0FxZhvD1krT/AILBck8MfJph5PVam4swOpJmQf8AG2NyXhj5NKfJzDktzZsOlVnQ/qbG5I4Yt08n/wDLRaVPQGZKn/hsfUtR8ncPKVf7+0r/AMZk/wCasfWvDHyaX/B53+sWZHSvrIf+NsfUioNcvJwIBuLIHsDMn4fFj6k1DyWtJ5NA3urMAf8AFyf81Y+peGLyr897TTb7TNH/AEE0N0yzSmdLWRHoGReLNxJ+/LMPFe6ZcIDx0aBrPT6nLt7Zk008QcPL+s9Pqclfl/biniDX+H9aPSzl+4f1wUvEHf4f1v8A5Ypfuw0vEH1J+SE4X8v9PsZCFvLT1RPb1HNA0rsvIDpyG4zW6kHibsB2Pvegh/vzHb1XRWA1C/Feqwt+DDNjpD6XB1P1BOua065l7tDRYUxStJHjitNcl8cVpoOK4Vf/1vRQ33ybS3hVrFWiK9emBXy1/wA5TRrP52tI2Ab09PjoG95HO2XCNhx4mpF4RNpkdSAAD7YPDb+IojR9Mpec6qypx/Fqd8HCAVMjSZzQr9SmAQE8P5R+zCxOW8IabNrorOGOwt1MSsWiRuVB14n/AJqyMQGUpG0MLW3bUg3pr8KoAOI7sckIhHEaU72K3GnykIvLiQCFAp8Z9sJiERkbZr+TP5d6N5lsdSur6KSVoZ0hhCMFH2eR6g+ODHp4S5ss2WUapm3nr8lfK2jeTb3V0SRZ7cwmNXdSvxzIhBHHwbI+BAHZgMuTa2Zw6PpCQLGtjbcVUKv7mPoPoywANc5G1HTtL0r6zqBNlb0+sAU9GPtEnthIDGJNMb/NzTtMh/L7VpYrOCOUCLi6RIrCsq9CBXISqimJPFH3vmPMN2bMfyxsre485aGssSSo9x8aOoZSArGhBqD0y2ADVM830suh6JX/AI51p7fuIv8AmnMkAODZS3Q9G0c6ajfULY8pJjUwxf7+f/Jw0EAlKta0bSW86+WkFlbhCt8zqIowDSFaVAXelcEwKZYzuWS/oHQyP+Oda/P0Iv8AmnHZBtL/AC5o2jfosN+j7U1nudzBGTT6xIB1XBQTZoMG/PjTdMh8v6Wbe0hgdrtwWijRCR6R2PEDIkAs8ciJPUPy6sLNfI2ggQRD/QoSfgXclak9O+V2me5YD+e8MEd/owjRErFOTxolfiTwzIwcmrq8yQkftCvs5y9krrNtvx/4M4oVFlQmnJQf+MhxSvDddx/yMOBUs8w3U1vZLPC/F4pAQQ5NdiKEZj6mNxbcBIkhbTzdVAXnKN0IJIp+OaiWEuzE2V65+ZQ1Xy5Y+ldtHrllN6UskTsrS27KaMeJFfiC8v8AK+LMrTQ33aM8ttkrh8z69IARqF1Sm/7yT/mrM/w49zh8cu9WTzJr/bULr5epJ/zVh8OPcx8SSw+bNaUkfpK5quxo8h3+hsHhx7k+LLvZh+WPnHQ/rupf4t1RFi9KP6mL6Rqcizc+HIntSuYmoiARQcjDO+b0NfMn5Skcvr1ga96n+mY9NtjvbHmX8om2Ooad4Ecjjw+Sb81w8x/k6SFOo6by7Ly3+7GvJbXjX/yhFSL/AE4e9SP4Y15LfmvXX/yiFf8AT9ONepqf6YDHyW3DzL+TXLidT0sOP2S4r9xwcB7k2u/xH+TxFf0nplPdxjwHuW/N36d/KCtf0hpn0OMeA9y35t/4j/KHtqWmmmxpJWlO2AxPcniRNn+Yf5PaJN+km1KxD2itJGkR5SswX7Manq57ZUQTyZgvNfMnnO48+al+m9Sv0t7aK4hj0jREY14GZd3Heo+1X7WZGCB4g1Zcg4SAyTzzpdjHoE0kMCROkikMihTtWoqMzzEOuhIvMiSd6/8AD4bQ7w/5ryQFoJA3LiCKkggePI4Tjl3NQzw7w6oAG/X/AC8g2orTArahaBgGQzxBlLcgQXHbvhgN0T5PTP0fp5be1goP+K0/pmSQHGsvGrG0toPzdkCRqqx6qojUAUUFjsB2GY0YjicycjwPfo0hNCVX7hlhaRLZjWjKiDUFAApqV6dgO87H+OWR5NUuaR/mIqGPy8xAPHWLc1oPfBLmzgTwy9zLSqVNVH3YXHtKdAWPlqo4j/jo3FRQdwh/jhplI7sY/OWCN/LNoSo2vB1A7xtleQCw5OCR3egeS7e3bydojcFJ+o2/Yf77GMhu1h0dpAPOUw4L8Wmx9h+zcP8A1xBSeiG/MG0hPkvW14L/ALySHoOwrjLkzhsUL5UWNvLOkniN7OHt/kDLSHHaWGP/ABXL8I+LT496fyzv/XAAk9EP57t4m8mawOA/3mY9B2IOQkNm3EfUEp/Je3ifyaw4D4buXt7KcIiAGOQ3Msi8xW0SS6O3EVGoRilB+1HIP45IDdhP6SmHopUfCPuGJRRpKfLUMY0114gcLq6XoP8AlofFTzK++ijHmDRDxG7XS1IHeGv/ABrgWXL4p20ERRgUXcEdB4ZA8myPMPGfK3kOTUdIS5SeONfUkUKykn4WI7HMSeYQNU5oxGScD8spa/71xD/Yn+uQ/NDuZ/lyv/5Vi9Km8j/4A/1wfmh3J/Lnvb/5VjMOl1HT/UP9cfzQ7kflz3tj8sZ+puo/+BP9cfzQ7kjTnvZZ5G0u68q/XOJjuvrfCu5Tj6fL2b+bMbNPjbcOMxNsqHmi9DA/VY9v+LD/AM05R4bkcTIfLFw1xczTOoRpYImKqagHkw6kDMzS7CnF1G5BZDTMu2imq74LSA1UY2mmiRjxIpwbfpthtaf/1+1eUvM2m6xYcbS/N/Na0S5laJoWqa8eSsOtB2xojmg0d0+EmHiY8LYYY8S8LjJtjxI4Xz/+a/lbWvNPmRtQ063jUIiwH60y1Kx16ca/tVxjnAKBhPMMHH5R+bCJfUgsieNI/iIo1R19qVwnUjzZeEVGL8n/ADetyjtb2LRApzCyMCVDVNN/DpjLURQMJ6q8/wCVfnNbcpb2tkSY5Iwsz8lUOpSg3b9lvtfzZH8xFgMBbl/KfzUVtVjtbQenCiTcpG+2Bvxofs5IZwEywm1Afk/5t5SSPaWXrMVCESPQIAa13+1yOD8yF8Eqbfk35se3eB7KyIKMFpM/2qfBU16cvtZL8yE+CWcflh5S1nypo9xaXtiv1ma4M1bOYemV4Kor6jcuWxycdUAiWEmk6882/mHXvK13o9nY/vZzHx+syII/3civ8XA8/wBnH8zFgcErCpBD5gFrGJbOk4QeoqshXnTfiSwNMrGoCZYCVK2tNeikuna0P72X1E4mPccVXer9dsl+YFsfyxpbqVhql9p8lnd6NDfQSEFre44MhANd6SDpTlkcmexszx4CDuwTzp+W195hgpp3lqwtb61EcCzRyfV4lCAExlI2HLirU5ZjRmerkmKC8pflN5v0XzBpt8+n2iW1qQ8zpK7yBjGQ3EM1D8TbVy8ZhTXLGS9VaHVhQi3JI9l/5qywagNEtOUHpuna3b2SQyW1JFLkhOJFWct3bwOH8zFj+WkgrzRvMM3mHStRSyDRWUdysjFlDqZlVV4jnRunxVxOpFUmGnkLTZItc5UNo3EHYnhX/iWR/MRX8tJAadp3mS1s0gayAIeVm4utPjldx1avRhXJDURU6aSQ/mL5R8xeY9KtbdbIE20jyuS6ghTGwqlG3blx+1+zg/MjkyjgI5oXyz+dPlfSdA0/Srqzvzd2ECW1x6cKsvqRDi9Dz3HIZZwEtcgxf8x/POl+bL2wl06G5hS0ikWT6zGEqzsCONGbsMyMII5tRjuxNWPv/wACMuQqAt/lU/1Bilurd+X/AAAxVeruPslv+AxVuTQtV19JbGwtHvbkL6ghXihPE/zE5j5yAN23EDa7Rvyc80HUoW1jy7eJpyuPrPpzR8vToalaBj8NMwDIU5gCb+Y4vykg0CCG30u4sLxhcmwnDytIZEbgwmDL8S+oPh5fs4cUpk7BjkApgdtJRRUD/gTmyi4ZR0UgPYf8CckinuH5VQo/k62NBvJcf8nmyiUmBG7zf894kHmu2XahsVP/AA74OY3bIbPX9KUfomyouwt4e3b01yQaSo6fEn+mniP96Zuw8RkmLHdQVP8AlZejMFApp11XYfzDIy3LZH6SyHWFB0e/qBvazdv8g4kMAmMdunox0UABV7e2R4k08hlhiH55MSopXwH/ACyDDQtmSeB6nqcEb6Rd/u1r6EvYf77OJaxyRMMEZtovhH2F6gfyjBxJILHvKiQx33mAlAeOrykrQb/uojTJEWE8iLeX/mymu3+ow3uqtEsPqSxWdlASyRIhFSSQtXb9psxI4qcvx+LkzDy9pWoSeS4Tb2M8xadJIzHEzchHMjNxNKGgGThkALVKEiz+7ez1S0khvbO9itQ6tIHhMRIFdvjpsfHI5M1cmzFgPV5x5hs/LFsI20a9uLlnPxpLHGQo/wBZKfRtk8eQnojJCIS7TfivowRUUOxSnQeObDSAGdOj7YNYPizrTfLVrf8AlrVdTkkdZbJW4RALxaicviqK98zNRnMZiFbSdJo9GMmKWS6ON5paO5hSprUDquaqQ3etx/SEdbXK288Uzq7JFIkjKiVYhWBPH32wA0WUhYZePP2jkk/Vr2n/ABg/5uy3xA0+DJj58gedv8ZDzNHo8p068uItQtVLxLK8DHkCVL/CzL+y2Yo1EQXLOCRi9EW719R/yj17/wAHbf8AVXLDqoFgNNJLLCDzLbteep5fuyJ7ue4Ti9uaLK3IA/vOvjiNXCkS0syUu816J5s1eLTkttBuUazvobpzJJbiqRVqBSQ/FvgOqgmOlkLTwjzEST+gLzc95Lb/AKq5L83BqOimg9MsfM9rJfM+g3JF1dPcR0lttldUWh/edarj+aik6OaWee/LHm7zFo0VjaaNLFLHOsvOaWALQKwI+F2P7WROpi249NKLJvLa+YtM8vadpk+hXDz2dvHDI6TWxUlBSorIDTInUxX8tJEWqan+n31O8064tLYWX1ZRWKVy/qmTlRHICqvi2RnqwOTIaU3u35pt7jU/LV7Y6dZ3VxdXlu8S81iijBdaKxZpPs/6obIx1gPMNn5WuqUaDY+Z9O0SxsJ9Dnaa1hSJ2Sa3KkqKVFZBmR+bg4v5Sdtmz8z/AKaF+NCuPS+q/VyvrW3Ll6nOv95SlMH5uCTpJ7Kev2fmjUdEvtPi0C4WW6heJHea24gsKAmkhOJ1UCyhppA2lv5f6B5x8s6HJp93ok08jztMHhmt+IDKop8Tqa/Dg/NRqkHSyMiU21WDzTe/U/T0C4U211HcNymtt1QMCBSTr8WI1UVOllSK9XzIP+meuv8Akda/9VMkdXBH5SaC0q380WcEsUnl64cyXE8y8Zrb7MshcA1k6iuP5uCPyk7XXlt5pmv9Nuo/L84WykkeQNPbVKvE0dB+88WyP5uNpOklSY/XfMnfy7cnx/f2v/VTAdVFI00nnlvoXnby15W1h75ZLNDKkli6PE4j5v8AH0r9quYs5RnJzIgxBYdqnm7zfb2plj1i45cgD9jof9jl3gxaoZ5Ero/NXm97NZf0zccmTl1TrT/VwHDEMfHlbI/MOu+YI9N0CaDUp4XubBJLhkKj1JNqu232sqxwBJbckyIilkHmDzGfIOo3g1Sb9IwagkSXLcWZYiq/BuKU3wHGOKmeOZIJWfl5feZ/MMV5cat5omtLeEtHEsSxPLzUA82T4f3QrTr8TZXlAi2RlZZUuk3qSqI/Nl5eEipj9H0h16c1ZxlPEGb1vyfG0EixFi5FpHyZjVieR3JPzzI00ubj5hyZOzgfaIHzzKtrpRe9sozR541PuwGC000t7aMKrOhWvUMMbC0tfUbFPtXEY/2QyJkGQionXdLBA9cGvcA0/Vg8QJ8Mv//QmH5GSrLZ60yspKXEcb8TWh4E0Pgd8nlNljEVB6ZLdQQ8PWlWP1GCR82C8mPRRXvldItV5b4aW3F9sC2wMsDK/jyb9ZzHPNyI8lC5llELmAKZuJ9PlXjyptypvTIsqXws/pL6oAfiOdNxWm9MWJC31Lj6yAFQ23Dc1PPnXw6caYpAVWc0biByp8IbpXCqy2knMCG5VVm4gyiMkrX/ACa/FTArriS4AQ26o5ZwJOZIAT9oigPxeGKq3MbV2p92KqSS3H1mUMqfVwq+m4J5E/tVHT5YrS6aWQQyGAKZgpMavUKWptWm9MNquSRzEpkAV6AsF3ANN8UUseW59UCNUMHpklyTy512FP5ae+BNJd5e+vC2uTqDRfWzcymT0QQnYDjy36YpTK3luWVhOioQzcOB5ApX4Sagb0+1htBbuZJ0t3a2VZJgP3auSqk17kAn8MbULxJQb7V64oKmJLj6068F+rcAUcN8Zap5AilKdKb4FCozkK3HdwDxU7AntXG1pq3lkaBDOgSUqDIqnkoam9DQVGFVt44FjOQK/A2/0YRzRLk+OppgdSuzUCs8p+0e7nNxjOzrZBExyjxX58jltsCrowPQrt35nCqopFeq/wDBnFVQMKj4l/4M4quDA919vjOFWdfk7v5qlNQaW7dGJ6svjmDreQcrS8y9ydgIm3oaZrnLfOn53WaS3dnfRQC2gRmhC9DI0lZHcqN0YMOLA5l6Y9GjOHnULgU6f8NmcC4pCLjmA+XzOTtFMl0L8zPNWg6cmnWCWb2sTO0ZlSQv+8YuakMB1OUyxpFMp8s+X7380UvdZ1W++oXNoyWSLZxjgYwvqVPqEnlV8x8kzE03Qx29Tg8q3EVtHAt5URoqBim5CgCvX2yPjlfy4ag8pTx+rS85eq7SGq9OXYb4+OUflx3oK4/LyabWLfVBqbJJbwvAIhGChEhqWNTWuPjFPgbVaLm8j3U0EkTakQsqMjER7gMKVHxYnOWI0w70bH5UugKfXaigH934f7LKjmLMacJH/wAqiQ+ZG199Wl9diG9ARrwFI/ToDXl03yQ1BZeAKpPpfJskts8BvSFkRkLBKkcl4169sTqCxGmConlKVEVBefZAFSvWm3jkfHKfy470BbflvLBLePHqj/6bO1ywMYPFmVVotCPh+Dvh/NFZaUHqvtfyR0vWtatJdYvpbqxtmklkswqosnKnws1S3HKpamRZx08YvRPNFna2a6fa2sKwW0ELJFDGAqKqkUAAyHVu5MT13iNKum41ohNB128MbV4JoWktq93NbRs4aO3muFCVct6QqFpVePKv2v2c2IlQdaRck9H5bayHCjUrCO6ST6v6QujzF2U9T6t9n++9M8+P8uShmo2GGXSicakLCvD5d/MBtGbTLfV4qXSwyXekJLGtysd03CN5SIw3Fjt9v7OSnnMpWWOLRQhAxiKBQS+Q7W2076w+swP6dzJaObblPEHiRWKhlo3ME8XXj8OWYRxk006zMMEQSxiGYOgI29i5yqQot+M2AUfAVIG46fznKZt0eb6IglQ6RotSBXTLXv8A8V5g3u7ADZvlFTqPwwrSFSKVbqaT6wGjfjwhNKLQUND742ghE+rGKVIH0jFab9WIioZfvGBaQgjmF1LN9YDRSABYTSikdSD/AJWG1IV1mjpQkD6RgtivEsRH2l+8YbZUg72Jnk9ZLgqixurQAgq3IdT7jtgtQFPRr+K60u2n4tGrIAFkHBvh+GvE70NKr/k4QWJG6O9SA7h1+8Y2mkPdxtK0LR3HpCNuTKpWjilOJr2wcS0qrKFFGZT7gjCChsTwH9tfvGBKneKs9s8Mdx6DuKCVGHJfcYpdHIEQB5VcgUJqKnFivNxCR9tQfcjCqjehbi3aKO5ELNSkiMvIUNdsFsgG45FVfikRqd+Q3xsIYh+b10ifl5q8kbq0kaIwWoPSRfDJwO6a2L5bfV7u6t3WXdCwNAo2p75nwlbhHGAUyt9YgWzSIxSFgnHYCnT54S1cG7I/Ot7Mvl7ylJCzqHsSDSn7PDxyjF9RciQ9Kpol2W/LTXHlDsY72Fm6Fjy4DBI+sJxjYqf5WIksusA/AGib7XYHft8shqAyx83puhKhhRgCobcBhQj5jMVvZ4muNauktqw5NAEd9vhoa9DksVi2M43SBu9b1C4Yubg79CAAfwGWmSiIQ8V1O0oZpWJPXc9MFppjOi3N23mCUSu7olxKFqWIC8TT22wsTzZb67Dv2wEsqXJOeJ3/AGT+rEckv//RZZajBbys+nXQtzIxJa3k9PkVNCTwI5EZXuyBFJxD5w80QlSmovKFPwiZUmFf9kpP44eIqYpvb/mf5hiUevDbXA7/AAtGfvUkf8Lh40GAZt5W8xvr2mS3bW4tjG5j4h+YNFBqDRfHDxMZQrdIdzU06nMY826PJSIo1D88DJeSB8+wxRTqCu3XEJXcT3G3uMJChoL1C4KRTqAHfqMUruJ8DTCtNItG2G5FcCuKbksOvTFVyqeNACRirVN6d8VQumgmO5YjY3M2/wAmpiVRaqewrTFXFfEb++KFyq3gd++JVpRuaDrirZUdwfbGlbHFQADsOgxKqOocf0fct4RtT7sYndjLk+NnZje3J33mkPQfznN1Dk6+SKiLbfaH0DJsCikLUp8X3DCxVlZuo5e2wyQVcGf/ACtvYYFVAXI/a+4Y2rOvyfD/AOJpia7W56gD9seGYWtOwcrS9XtkpPoNt2Oa4FzXhn598fR05qkNzAO5ApxY9OmZem5uPneRI3v/AMNmc4pV1kPY/wDDZJWpJjTc/L4sBQ9w/wCceJD/AId1Y13N6vev+6lzB1HNysXJ60rimUtjreL0lKh2epLVcliORrTft4YqvaPlIj8mBSvwg0U1/mHfFVcgMhBJFRSo64CUNwj041jBLBQAGY1Y08T3yBZAtlf3wl5tUKV41+Hehrx8cDJc8nKMrUgEUqNiPkcVWRt6cax8i/ABeTGrGm1ST1OKto3GZpBI3xADgT8IpXoO3XfIkJCKg1y4syDbRLLMxCIHNF37k9aDK2SaebNMQ2lrLdSNPcyMQ0lSoA414ooNFXJgMSWF6xp0CWMzJX4RUAs3Y/PJhiXheiatd6VeS3NrIkcrQyQVliLrxkoG2UrvTfNgRs4ANFGt5y1lbtrz17czvqC6xx+ryBfrKwi34/a+xwH/ADdgpkZL/wDHWtvBGGltPrkHpiC/NkfrAELc4/j5U+D7Iqv2ceFPGoap5u1fUo0tzJZ2Nssjy8La0MQaWUfvJXAZvjPjl+HLLGbHVw9XpYZwBLlEpHbqyIBUmnfiMgTe7dGAiKCYQepT9r/gRlM2yPN7t5StLefyLoDzRiSQpdAu4BY8bhgKk+A6ZhEbubA7I86XZnpEn/AjFO639F21aCBT8lGNIsuOmWw2MCj/AGIxpbLf6Mt6f7zr/wACMNLa39G2h/3Qp/2IxpbcdMtB1gUD3UY0vEXfou0O4t1p/qjBS8RabTbUVpAgIr+yKjbGlsqNnptsbG3ZoFqY0JJUd1GGltVGmWpG0Cf8CP6Y0ttnTLXb9wg/2I/pgpC06bbAVMCf8CP6YeFNuGm2h6QIf9iMeFFtHTbTp6CV8OIwUm2jptoKfuE3/wAkf0w0i1w0+zPSFPoUY0rv0ba/74T/AIEYgJtx0+1H+6E2/wAkY0EML/NePRIPK7RX06afb3sn1c3PEGhZS2wp/k4YjfZIGzxRfLvkS59O3/xOGdiEjVI1BJY7dBmSMsnHGMI6fQPJ2mTPYXXmYwTW54PE0Sll2rQ/CcfGkQnwBaa6va+UX8vaIk+vG3sYopIrO44BvXVSFYkFTTiRlcJkFJhYpAtaeXbfyBr9voepnUl5wSzMVK8G9RQB0XqFw2TIJjEAFL/yp2vdWRqb27Hb/UY5LUBhi+p6fpbHitcxHKKbSve+mq2drJdzHb0ohU08T7ZOLFDxWPnebj6fl2ZVYAN6ksScfHqd8bC279Ged6MphsbWVdv3tyHoQDWoQV2OFFqUPl7zcsnNtT06FWHJ0ijmkatNyGJp9qv7OSQbRsehawwQS60OQ6tFbjfan7bEdemNBO6ne6TLaTWrjUbmT6xN6ZSkQReS0+zxrt1+3hCv/9KJR6TfxPbepAT6Aui5FD8UzMVp7/FiJBrMT9iGEV7bWQHGWKWOwKCnKvrVBAFOr4dkm0xgv74amsHrOYjNFGVbccfRZn6+LAZGQFMok29y/LCg8usR+1cv+AUZGLLLyYD5S8v6BqEes32qW0c8tzrGocZZdyI0nMaqCTsq8egzN4A4IkeEbovydZeXojPdaRIhW4MnOJKHgqysF6VbttyzD1EKczTyJG7Ja7e/jmM5CQfmDcNB5I1idWo6W5I3I/aHcZPGLk15pVHZ5h+Umt3F75yihkjRFSCZyV512BH7TMMv1GMAbNemkSTar+fl/d2+u6YLeaSP/Q5HYI7KD+98AfbDp4AjdrzTILOPyemkl8jwzSuXeSedqseRALdKnwynMPW5Y+gPEdM1HU5PNNrEbqYxy36gqZHIobhduvgcy5QAg4eGZ4w9e/PvUbiw8kLPbyNHIbyJeSMVNCHJFRmFjG7fmJY9/wA496vd6lcas9zK0gihhVOTFty7VO/yxzABlivhNpP+Z+qahF5+1BY7mWOBBCvEOwUViWtADQZkYwOFxpzIL0+SeVPyle4Dt6q6OX9Wp5cvQJry61zGPNy8h2eZ+StVvZ/zcsrRruUwRpVoS7FWP1SpLCtPtb4yGzVhJMym3/ORWo39o2gG0uZLfl9Y5+k7JWnCleJFcMeTHLMgp9+QN3c3nk24nuZnuJDfSKrysWNFjj2qcjPYt0CTAPHdf8269H521K1iunWAX0qBSxNB6pFBvl3CKaYzNvefzavp7DyHcXMTFXjmtgCCR1kAIqKdcqxCy2aiRA2Yf+Seu3epa9eJcSFhHakgVJFTIviTlmUU16eRkDb2UEUym3ICG1IkaZdf8YziBuiXJ8qpfaFFIVk0WOZuTepM0jjkanfNgLp10uaFvZ9PlugbO2S2hVACgZjViSaktXMjET1YkNLwA/Y+85axIVFK1pRPvPXCELgy7fZp/rHCqorL1+GnzOKrG1m/0u8tp7G4e2dmZXMMjKWXj0PEjauY+eII3bMUiLIZBpHnLzJfarYW0mo3Qje5QMVmk3XeqnfcHMGWIByceYkpv+e8oa308GvMTNUjYUCsBk9NzZZ3kaknep29xma4xCsGNB1+VRk0IyDRtWurcXFvAXhatH5oOhodjlEswBpbe1/kJYXlnoOpRXKcGkvFYCobb0gO2YuWVlysXJOrD83NButbi0dLS5FxJMLdXb0+HItwr9quQMSoyRJpOPOX5gaV5SFob6CaYXnqemYApp6fGteTL15YxiSspiPNHeXPNtjr+gHW7SKWO2BlBjk48/3P2vskjftvgIo0yiQRaSeXPzf0DXtYtdLtbS6jnuuXpvKI+I4oXNeLE9BkpYyBbCOQE0jvNn5l6L5Xv4LG/imeS4j9VHj4cQORXcswPUZAQJZmQB3TKDzZYTeVv8SKkn1L0WuPTPHnxQlT349vHI8JumfEEq8rfmdonmXU206yt54pkieYtLw4cUKgj4WY1+LJzxGIssIZRI0FLzJ+aOj6Dqs2mXNrPJNAiSO8ZTjSQVFOTA4I4jIWFllETum2q+abPT/LY16WKR7YxxSiJSvOk3HiNzx25ZARJNNnEKtbpfmaO9lXhCQ3pJcKC6t8LnYHj0OQMaKiVor80fM948/lqOG6khilnmjnjhdo0Yek3GpG54kDLcO53a88iI7ML+u3/wBbSNr25uIncIUedmWhPUiv68yJQAi4kMsjJ5kwHI7gePxnMiPJiebR4EUPH2+M5IIdSIbfD/wZyNq2qpTenv8AGcbVE2MNvLeQRyAGOSVFdQ7VKs4BAp7YQN0E7PUh5F8qh/hsmArQfvpv+a8yTCNNMZS72daFZQ2PlbTbWAFYYpb0RKSWopuWIFWJbvmklzLuIfSiajIpY551iWWztlYtxExNFZl/YP8AKRmx7NhGWSpC3A7RyGGOwa3QnkSJYbrUgrMYyLcqrOzgH94CRyJpWgyztTFGEgIjha+zsspxPEbY95ttl+satKEmkmrLxEUjq1aUHEclUcczdNhgcHFW7ianPMZ64qDMdVUy+VlRyWDRQczUgn7Pcb5qNNEHKAXZ55EYiQd6STyraLD5gUpyCNayhl5sVJEkZFQSRXrmf2jijGIoOD2fllKR4jav5gsbKfXJWnj5twjA+JgKcelARh0GKMsdkdWWuzSjMAGhSYeXkdPJ1vGzMWSFlDMSW2ZgNzU9BmszxAyEOwwm4gsU0Syij8w6TPEGVvXkEtGahDQSdQTT7VM2mqxQGAEB1elzSOYglMPzE1zTdIurRryJ5VlhYpwptxbvUr1rmv0kbJdhqiQBSafl/qMGo+XDcwK0cUk8wRH3IoQPE5XnjUqTpzcWBaN5q0641qws/SmjlkuYkVzQiocdaNmXKI4HHBkJsq/NPW4NG0/T7mWAzJJM8ZVG4kHgGruPbMTT1e7kZ74Nl/5X61ZatZX9zaKyRpOiFXpUN6YJpQnDqKvZjpZGt2O6nrWiJqV3DJeQrcLPIhjLUfmHIpTrWuZEAOBoyykMnNmnna4tLXRklupFii+sIhdzReTBgAcxcAHG5WckY7CX+Rbm1nurxraWOVPTh5GNgw+0/hlmpABFNOmkTaA1GKE6tdclBPrPX/gjmVhgDDk055kTO7wv82iy32nxBiIxA6lamhaOeRA1OnKnfK5xADk4CTe7DNHkKatZVOwuIiT8nGUW3S5Mh8/ov+OtV5iqtIhpudii4cPJE+ibaqts/kHy00ilwpuFUBS1Pj9vlgh9TX/Cfev8q/Vj5R82x8SsfpQMQQQaA/f2wS5hljH3L/ypkj/TOpLGfhNtJTr/ACN445zYTj2kHp2myfCuYhchmXk+X/cqBXqjA+PbD0YHmxOL80/NkmneY5p7uC3bSdRgtYZY4V+GGRpVfkG58m+Bfiy44hswyZCDID+EMot7n6xGl0W5tOiSmSlORdQ1ae9cBDKEuIAlWVwFB8K4GSS6h5hmtbyyt4Y0Kz8+TsTVeJUUAFK154bWWwRusbtYH+W6T8QcIQeT/9OJR+do3jSSSNPitzduqlqheVEFKH7dcrIpPH0R9t5ktbmSVHiZGtYkmuQp5FPVHwpSn28x8+YQiDamYHNfb61YTXQt1D+pz9NSQCKqvPrXwy6O8QVjIHkjI/OV7pt7HpdpcMkkkiiOFX41eSlNvfMjHQjbVI8RpJE8lfmBHbmB9L9RjPLNJJ9aQBzLMZOh+eSGpDX4BqmTflP5X1ny+dV/SloLV7t0ePg6yAkci32enXMfPkEuTl4o8MaL0LkP7cptmkHn7T9Q1LyfqWn6dD9YvLmNUii5KtfjUndiB0GSxmjbDLGwwD8r/JPmnRPNRvtW0/6ta/V5Y/UEiP8AG/Ggopr/ADZdmzCQoMMEDG7VPzg8meaPMWu2tzpFkbm2htDC8nqIlHZmNKMQe+OHKIjdhmxmUmY/lppeoaN5Ot7DUIDb3sTTF4aqxozErQqabjKckgZW5I+mnk+iflp56t/Mdjd3WllbaK7jmlf1ojRBKGY0DeAzJnnBjTjYsRErL0f85/LeseZfK8Gm6Rbm4nF2ksihlSiKrCvxEd2zGxEDm25QSdko/JHyZ5i8rS6qNZtvq6XKwC1+JXqEL8vsk0+1jkILLH9O6UfmJ5I856t5o1K703S2kt5mT6vciWJeQWNV3BYGlR3yYls488ZJehXem6k35Zy6PFCzao2lC0W3qoJmMQQrUnj9r3ymPNyZ7jZ5/wCTfInmS0/M+PzBcWbJpSCSP1uSHcQ+l9kHl9sUyyRBDDFGibTP88PJnmfzRNpI0SyNzHapN6780QKZGXiPiI/lxxkUwyRJNp5+S/lzV/LXlJ9O1eD6vd/XJJuFQwKsqAEFSR+zkMhst4+mnkurflJ+YF15rudTXTG+rS3zzqfUiqYzMWBpy/ly7iFNEYkF7J+a+j6rrvkmfTdKt2uLySeBhECq/Cj8mNWIG2VY5cJZ5o8Q2Yl+THk7zH5d1m/n1ize2Se2EcTsyMCwcEj4WJyzNMS5McEDEG3sINem+UFuCH1ZuOl3R/4rOGPNE+T4zmuJprmR0jk4Emg28fnmyjE068x81exLqXLq6liOoHauXwBDAhMFfru33DLEFesj1J3+dBixXiQ9at9wwqqLK5Famg67DCq+HQtX1u8ghsLWa6MPKSZYghZVIoDRmUdffMfUSADZjiTbIdI8i+cLTW7O5bRLmKygmSR2JjdgADU0VqnMIzFN2PCQUT+eMyvHp5U1/et28FINQffDpebbleUpXao27bDM0OOV9T4f8KMkxpF2WrXsUYhW4dIlLUVWKgVNemUSiDugh7n+RF3JcaFqDO5creKoLGp/u1OY2QUdnJwj0vNPLsyH8xLEhhy/SgBFRWvrnLSPS48B62df85AMjNoQcgLW5Jqabfu8hhbdQNmQ/lRMrflpIy0C8r2gHQUByE/qbMX0vKfyem5fmLpAr09bv/xS+ZGWuBoxD1Mk/wCcgh/ud06U0IFpwpUAgmRjWnhkcDLUR3Zfpcn/ACAQGv8A0qpt/wDZPlUvrboj0MG/Iadn86XHL/lhl71/3ZHl2oPpaMA9SH/Ou4KeebxAwUSW1uCe+yHI4JVFdQLls9I84Sov5Ro7fZW0sSd6ftRd8oiam5BHoSj8q9SWeWdTOsi29lCteQPEeq3XDm5oxcmTfmBY6tqFrodxpdlNfpa3EjzGAKaAoy9WKjIYjRZZomQoJBaW3mP9IWpm0a6t7cSqZp5RHxVQOp4uT+GZE5iqcXFhkDZYGeVd+R/2Iy8HZgebjyp0P/AjDaG6tTowI/yRgVsBv8r/AIEYqqwTtDIk/B3MTLJxULVuJBoPuwg0UU9Aj/NfSWbfSNQ3/wAmH/mvJzzLHE9J8u6pFqnlHTL+GGS3jllvAsU1OYpN34kjNXI7uyjyRg3FcCUg85QapLY2/wCjbI30yS1eESJEQpUjlyfbrmXo84xysuJrMByQoITyZBq8Ut2dS05rDmIxGDLHKH48q/Y6Urk9dqY5SCGvRYDiBBSfX7DzS+q3zWujG5tpHYxTi5hTkrDrwPxL9OZWn18YY+EuPqNCZ5OIMn1FL9vLPpW1t618sUIFqXVCWUryXmar2O+a7Fk4cnF0c+eMygYpP5ag8wpqqyahpZsoBE6+r68cvxMVovFNx9nrmVq9XHKKDjaXSnHK3eZ4PMR1cyadpX122MaVl+sRw0YVBXiwr9OHR6wYo0QjWaM5JWE20SG8Xy/HBcwfV7vg4eAurhSzMQA4+E9euYWbIJTJDmaeBjEAsZ0Sy8xjV7WabSxHYJIzC6FwjHhxZVb06cvir/sczsutjLFwU4GPRyjl47VfzI8va5rItBpdotyFjdJS0qxcCWDLswPLpmHgy8Dm5ocQTT8vtP1XTNCFrq0CW90J5H4RsrrxYgihWmRzZOI2uCBiKLzfR/y086WPmG0v5bSI28F4s70uVb92JOVQvEb8e1ct8YGNNZxHitm/5peWNU8yaPZWunRLNLDcGV1eUQgKUK1qVavyynHLhO7dOPFGlD8qPK2seWrHULbVIViNzOk0PpyCUUCcTUgL3GOWYkww4zHmwnzL+VHnG+8z6hqdrBAbee7eeBmnAPEvyFV47fflsMoAphlwkyt6J+Y+gan5k8pSabp6R/XJJoZQkz8FAQkt8QB33ymMwJW3mNxpIvyl8leYfK9xqX6WjhCXaw+m8MnOhiL1BFF/nyeXJxNWHEYm0TfaD5zTWNQmtrO2urSe5ea2eS6MbBGp8JX02pvX9rLsep4Y015tOZTsPJ/zc8kearbTYtc1KK3htrY+gyRTGVi00ryA0KJ/NTE5hIU24sRjby2xbjfW7ntKh+5hlbOXIsm/MdjH50vpBvyELU9zGvXHGdlIsBN5ZkP5eaCzUH+kXKD/AIInDD6muQqJVPJ8iHR/NkddvqkbV7bVwT5hOIb/AAU/yqkDeZL1VNQ9vLQ+PwNgzckw5h6dpkg4rTMQuQmdz5ll8t2E2sRQi4eCg9JmKAhzT7Qrk8cbNMSWNwfm9aJHP6XlfTUFywkuAan1HBJDP8PxNueuZPg+bV4m/Jbcfm3cegLpdNhVXPEwq7KqcTxotB0xGNfErkhz+bt8UamnwjsP3j9PfbHw0+Ig9U88NObC6Foi+kpZRzbcyUqDUdAUxjjRKeyvdfmdql2YS1tBGIZVnUIX3Me/Fia/Cf2skMdI8R//1I1/hfy0kjTSKURI0RyHYj04mDItByP7I7Zg6zNwQJ6lGQiItj2t3mg20sjSTTI17MJrr02CsKDilahabbrH/wALmrxXkIveMXDJEjRKdaT5btbO5t7yK7lmVS8oEgB5euoG/f4QM3GGQMduTmwjQS+X0m/MXTg7KALu3G7U7KfD+OZY+hpgf3r3trq2rT1U/wCCX+uYbmqZubYmolTw+0P64opoTQmo9RP+CGK0uEsAIPqJ/wAEP64lNLnuoCP7xf8Agh/XHmrS3EIG0i0rueQxC00J4t/3iGv+UP64qAv9eLjTmte+4xpSHLLEK/Gv0EY0u7jMh/aB+kYVpeJYgteQ+8YFpaHjJX4huR3GJRVITSZR9RSpH25D18ZGxCaRquo3qPfcY0tO5qd6g777480U2WQLQnfGkUt5D+hwUtODL0xpabDDFO6X6/dJHpVwjGjSRvw360FTjGVSDGfJ8dwSAlqkdT3Pjm6iXXyCLj4+x+k5YGKJUpt9n/gjhpBVFC+K0PucCheOHio2/mOKCqR8OI+zT/WOFD0f8lFB1++IA2t16En9vMHW8g5mm6vbGU8DscwLDl08K/5yMgt47mxZEAdpnBanZYkIH3scyNMd2jKHjKsPD7wcz3HpeGHh+BwhClJHGaniK/I5ExDISL3L/nHo8fLOqAbf6cP+TS5hZebkQeiReXPLkdwtxHpdolwjc1mWGMOGrXkGpWte+Qsp4AjL7StK1H0zf2cN36dfT9eNZOPLrTkDStMbIUi1W0sdPs7Y2tpbRW9seVYI0CoeX2vhApvgSBSlaaBoNpMk9rp1tBNH9iWOFFZaimxABGSJNIEQFW90bRr+RZb6xt7qRRxV5o0dgvgCwO2RshJAKqljYJZfUEt4lsuJT6sEURcTuV4U40yHVQNqULTRNEsZvXsrC2tp6FfUhiRG4nqKqBthJJURAWXmh6HezGe80+3uJyADLLEjtQdBVgTiCQnhCtNZ2Etn9Slt45LOgX6syKY6L0HEim1NsimlGx0bQ7OQm0sbeBpKB/TiReQBqA1AK0OA2tAMuWp09QBsJB0/1TiqW6stNPnPHoh/Vh6q+cWMZ/lJ/wBY5shydcebiV22X/gjihw4Gmyj/ZHFWwY+4X/gjiq5WQHcLv7nBaomGSIdePXxOVzZh7n5EngHkDSOUiKPWvAAWA/3aPHMI83NhyTf6xbV/vo/+CX+uKXGe3p/eoP9kv8AXFId9Yt6U9aP/g1/rirX1m17zRg/66/1wq19as+88X/Br/XAVWteWHVrmEHtWRB/HFaUzqOnjrdwf8jU/rimmhqel1A+uW9f+Msf9cbWkLp+p6YlhAkl5bqyqAwaaMEEbdCcWFK51jRx11C1A954/wDmrJIorTreiA76jaf8j4v+asFlFNPr2hbD9J2n/SRF/wA1YppZ/iDy+Kg6pZ/9JEX/ADViVAK0+ZfLqmn6Wsh/0cRf81YsqWnzN5Zp/wAdayH/AEcw/wDNWKrR5q8rr11ix/6SYf8AmrFNNHzZ5W3/ANzNiP8Ao5h/5qxtSHf4w8ojrrdh/wBJUP8AzVjSKYR+c13p2vfl9d22j3cGo3P1i3dYraVJGoH32Untk4c90XzD53Xyl5hV1YadOKEHcDxy0yDUbIZN578taxqHmGS5tLKaaOSKIc048SyoAepyMJAJN0Fa48s63L5B07T/AKjI13b3ksjwDiGVGBoxqab1xEgJLRVPJ/lXX7XTvMcFxYyQtfWRitVYpV33ouxp374JyCY81b8tvKXmbTPMJnvrF4YGidC5ZD1U/wArHHJKwgDdnlhb3iqoeMgUBrtmOQ3Wo+cz/wA6pqRYGiRq1KVOzDLMWxQXjsWt2yxiscvh9j+3MzicWkUt4j6JNOA3BZCQKfF1HbACit0F+m7cKB6Uu/8Akj+uSJDKkc98F0WG4ZWZeQotKtQse2RBYgWhk1y36enLQgkfCPA++TteF//V5noWm6la6xqd3LE0UCW9nArSKaFQiiULuKEcT8WabtbIOAR6yacxqO/exq8lt18wTuGE1vM5khfkFMQ6kKK9V/ZwYwTjH8JH1OJEWGWeU2vWv7JZDOYRFctIHJ4luSBa/s+JXM3T7Rc/Cdku8z6gLbzBclnPpq1AtW2/dp2HfM6MbDROQEixS6ZhcSXHpCcyAqBMvNaH2Pf3wnE2Qy7JA1lcKe9MBgz41Nobhf5seBImjtB0q41DU4YKkRg85mqQAg65javKMUCUHI7Xw7arOyNUMa1Umnh3w6UXjDHHPZL+MvicyeBnxu4zeJx8NeN37/8Amb7zjwJ40fo1lNe3yxO7iJfikIJGw98x9TPw42xlkoKN9bXlrcNE7k03BVuQofcHJYpCYsLHJYQ4e5/nf7zl3AWXEujN20iIJHBZgAanqTgMF4k082PdjzLqYMjFhcOCQT1BpjwIE0BaJdz3EcfOQhmAbiSSBXfbIZPTG0HImvmc3H1xXilcKqhCoLAgLsCfmMxNEbjRa8eW7tJfVvP9+v8A8Ef65n+G28bvWvP9/Sf8E2Phrxt+te/7+k/4Jv64+GvGqW/6SnlWKKWQuxoByb+uRmBEWUHJTI7ljZWEdikrNcSR0uXLNUtXkB1245rMcjknxdAfS4xyklKbeGQdj9wzoYjZEkZGJRtQ/cMsYKwSTwb7hhtSqqrDqH+4YFCotRuQ4+gYrSZaVe3NstzHHDC4mhdGkmjDuAVpRDWi1/mpkZRtkCkd7NqkHD6rO8UpBBdWaOvw+MZB265RnjYbcMqSs+Z/NMMhX9LXisp/5aJevX+bMThDlCZTfzpr2uX9roialePd8rJbnlLu5kkd0JLfab4I0XLMUaYSNsaV/wDPfMkFrIXhzT28N8LEhosaYCkBN/L/AJ781eXLeW20e9+rQTP6sienG9XoFrV1Y9BmPOLbEpr/AMrn/Mb/AKug/wCREH/NGV8IZWvH51/mQOmpr/yIg/5ox4Qtt/8AK7fzI/6ua/8ASPB/zRg4AttH87PzJ/6ugH/PCD/mjDwrbv8Aldn5lf8AV2H/ACIg/wCaMHAFtr/ldf5l/wDV3/5IQf8AVPHgCeJw/On8y2NP0v1/4og/6p4+GEGbZ/OT8yz/ANLb/khB/wBU8fCC+Itb84/zK76sf+RMH/VPD4ajIjtA/NL8x9Q1WK1/Sx+MMT+5gH2VJ7JkTjCTlKprHmvzu96EudevWod1EroA3YBUAHfI8DA5SifIWseZLzzHDZ3l1c3P+kGVZJJ5TQQox9PiW4MjftDjkjBfFRYZt68q9vs5mDk4Z5uJYn9r7lxQ1WTanP8A4XFW6sBSj/8AC4q4Ox2+P/hcFJDbGanRx92R2ZLLKz1ea6NzY2Ul7LAKbw/WFTl0PGhCtt8JymeIFsjlI2SfUtF1bT7cLqcEtrayTtKZbiJlLSOKEcmoaU/ZyHAs8prZBTTWp5IJVeMfDGWc7Cle4x4GvxSltxRTJwkhaIoaoWq9adtgPlkuAMhlKto0zTR27SyRn06JSQnkd9utdt8jKCZTlacQrpRMhJX1FB22NGHTt0yowYHKUn1axN3cqxoaRqCU6dT45Zig2RmaQ99aPdNH6iIghjEUaRqEUKvsO5O5OXDEg5SoRaQgmSo2DLX78lwI8Qpx5x8u+n5i1SUFWR7uaig1YDmacsx8WSMpcPUMpZKKR/ogV6ZkcCPELX6JHhjwL4hd+iB4fjjwL4pd+iB4Y8CPFLv0QD2pjwL4hd+iF8Pxw8CfFLf6IXw/HBwI8QoqO3jRET0FJReNeRAPXcinvgOK0+KVBNIjruB9+SGNj4hTrS/McXllGAtPXFzQij8ePD6G68shlgzwmzaOb82EJB/Rh2/4u/5syrgcgFVH5wAKB+iqkd/X/wCvePAtrl/OQhq/ogEeHrn/AKp4PCW1Vfzmfto9G8fXr/xoMIwljab+XvzUn1TWLbT49MELXD8BJ6vKhIp04jBLFSRMWmMXne/NoZUsIyEb00VpSCxHUj4cxJZwJiPUsiQDSrrd9d6j5M1aS4gWB/qzURGLbAj2GZEeaebwfk/Dv198yWqhafWLE+WLsDYgn9YOHow/iSIySFVrWm9OuNllwhPpef8AhNCQRQjiaEbc6YOIHkiI3KRo78ht+w3j4HDxMqD/AP/W5Xc+dL6+0DUo54IYJHYRR8GZudTUjce2arWYbyQN7BxtTKwGCSlklinvVWX1FqI42ClT0oRQjtmTGiCIsYgcg9C0jzTNZeX4pUtykK7r8ZkcmvRqgUGa/URkJCMSylkpDG90TVoob68kuI7meQiVIZOKg0p04nwXNhizyiOE7lrlEFIZ4oTK3HjQMePIkmldq++bYbhkAttYYkuY3KI/E1p16DwyMhsyBUbqzgM8tFQDk1APngA2W0XodmFNwIgpd1FSCRQdeozV9pigCeTGRsJJcPAsjpLGrOK8mA3Jr/TMnSHZEOSEuIxHPEvENyQVG/Wv68yJ30bQdlVLZPrLDgFoSKV2yrFIkreylG1qsSlwpbiC1RU19Tp/wOZYpBtNtAljSN6KKymgoDuB1WmaztCNxBYZDtSB1NuUsCFArcgtAKbf5WDS80YeRZD5W0HTLy2unurdZmWXjG5LbAKppsR45dqJEFM5GkJrWl2NrrMMFrCIk/dGgLE8mk9ycniJMSnHIksw1Lyrot1e3lxNaAyM8sjyBn3NSa7EZSJm6RKRBed2Ui213BIQAjLRm+IgciNyBvXwyesiZQpJ3CLvXVb2TmC877AgkjrT4q+2YOG+EVyaoJ7o/lXTJ9Btrqe25zS8mL8mFRX2PhlmXNIGgW2UklXSbR/MC2YjAga4KekGboFJpWtczeM+FdrE2U51vy1pNrp1zJHbBZokUo4ZtizUrucpw5ZGkGSSaXCkLSTBV5RAMr1Pw12yztA+mu9hI7KepSQzTBlkcsoJYnpyNBUd8wcAMQxhySSW7mSXiNuO1Kk/xzYxma5uXGAITXTnZoS70BqKAkjala5lYCSN2mYRYYDf4SfDkcyGtWDJ/k+3xHFK7klADTf/ACjiqtBKoqBxpSg+I4QhK9eNLXkhCsCB8LEnfKc3Jsxc2NkkmpNTmE5bIPNVeGiDw0q3/F5DlmNBSRf898vYFeKf5nFCpGoI32rWm58cxJ5SCxJamWP1GVegA3r3+nJ4iZDdMSaUfTH+ZyzhZ8SvbRQsGDx8+hDciKe22VT2LCcyGpYIhKAoovw8gSe5wRlsVjM0ip7Oz+ru0ScWQDcsSTvTplcZm6YDJK1GCKzCVmWpBINCQfwycpG2UpS6Ie6SNXb09krRR9GSvZnA2ttByuEB9/1YxO7KfJM0toPRDOWLOdqHYbnKpZKLimRtqztIpnkV6mkbstD3DAA/dlhkQLbAU/8AIllF/iu1RSTyjuK8TVtoj098jjJkWMp1ElmR+o3ttLNE84aI8ZoW3lQk03UA5dLEQ0w1MZBJvLssml+Zprjd2tmm4oxNCeJXelPHAI9HJtGGNASKp18DlsRs0nm16ajuv3HDSuVE7so/2JxpDYjTfdf+BOKqdzGos5zUV9J9+Br9k98B5JDEhuoqWpTxP9cxLLa9a/JjWdP0rTNVju5mie6KcGCNJspYN0I/m23zKwYpTGzg6rWY8J9f8Sl+dutabe+ULG1tbl5ZbafkG9No6JxCgVYsa/M5LPp5QFldHr8WU8MOjym65t5Y0mMeoeV1cBTXdyeApWnbMWR9Ic7vSuKAFpBK7oyg9+hHY5T4hBYmS2GEGKMxs4csAxBoOvbCch4me9rri1mhvZIiZFCnduRrxO4JP+UMMp7KU/0a3BZohx+JY+L/ABEsWJFWqTQ5PHmsbhhRZrJ+VWuj/d0G4DUHLuK5MaiLI4ZKL/ljrMKiSW4t0TkBU1G56DIz1MQGPhSQ+p6Feav511OziuI0k9eXjG4PRW6mma/T5AJ3SJxJlSNH5Ua1Wn1mDf8AyWzY/mYpGGS4flNrJ/4+4B/sD/XH81FPgSXj8pdR9Ir9ai9UsCrcTTiBuONetcfzMU+BJaPyj1cj/e2Ef7A/1x/NRXwJO/5VHqx2F5D/AMAf64fzMV8CTv8AlUerkf72Q0Hbgf64PzI7l8CTh+UerHf65EKf5B/rj+ZHcvgSXf8AKo9SrT67Hv8A5H9uP5kdy+BJev5S6hT/AHuT2/d/24fzQ7l8AobUfyWvb1YwdRRClTX069f9l7ZGWpB6MoYpRSu8/JL6hbvdXmrqtvFvIREa0/4LMfNrBGNgM5CQChpX5SWesBn0/VgAv2opI/jXtvRsGDWiQ3G7CMpFMf8AlQ1yDtqaU7Vj/wCbsv8AzA7mRhNsfkXdV31FNv8Aiv8A5ux/MDuR4ck48r/lZFoGsQ6xd6grR2aySrVKAOqMUr1qOVNsyNMRllwkNWWMo0brdi19rrW2qepLxaFwskEEI+AGejOafzb0zQTw+s1zElnM8VvR5PLM13o81qLhFivYSnIVJUOAfppmfCXVyokkWwtvyDQf9LY0J2/db0/4LLvFCKkjbb8mVg0+az/SJZJiavwAIr7Vx8byY+GbtDL+Q1iFHPVJCQasQgG3y3yE8/CLZUVOz8nWGuTS6J9ZkS2tkVIGUhmCqT9o0KjcfZzXaPUEmz/E0gESpMIfyH0RUbnfXDuVZVcFFAJBFSOBr9+bLxW/gL//1+e6loWjaHpd24qbllMkUcnJqGuwFDszdf8AU/181GsyGRjEd7TqgAGHeWNGbW9UntXZlnkjcrKVJTqAd9+gqP2ctnsBTDFh4gnvmPR5dK0KK2nHpdIxFGSVfh0etT1/lbMW5HKCWOWFEKPk7y9puoWU6yyfv4HJ4LIwNGH2iAR+rMsT9TdHEJC0rOzELzABIFAOx983cOTSURp8fqahbRsHIeVFYUWhDMAa4Zckx5rb9FF5cBVdVErhQAtKcjTEDZiCrRXS2WmyyxR8pn+Es5AAqaDbbNF2hEzyCJ+ljM9GKRNNdzyJxqQKFhT6My8MKIpsiKCLudPnnkSSjKY1CkEDsa5nmNqDTcNnOshdgxDVqBTrkceERKTLZBPot2Budv8AVyzhXjCZ6Z6ljaOQvJ4xuzbKKnb8c12vgSAC1ZJWl7SvcXbgMKqQZDQktQ1NK46XGAQyiKCb6frusabDLBaGP0ZXMjepHVqkAda+2ZmTT8RUkHm5Lm/1LVrZ7rjzeSGNSi8RQSDr9+Sji4YllEAHZMtV80a/HqN5DE0XorNKiAx1PHkR1yEcHVZSBKSadBS8jmdeSQJuDUb9jtmP2hA+GxJ2UtTvXF8REoVpwAO9ATU/TmDgxXHfoxhG90bbeY/MdtaR2cEsXoRCiAxVNK13Nc2P5EHdsMgg1utQS5W8Vl+urKZeXD4KkEdPpzI8H08KBIApte6nq915fM9w0fOe5+ryBUI/dxoJBSp+1ybIQwCMlJFJabgQWjs0lK/ZQjr2Ncx9aOKQDXVpMZBIHkA4moAp45VVbNojWyu9i7SrI0cTEdRxcBtu9Dmbjw7JGShSKgWVC9VVATXjGCFFBT9ok5k448LXI2rcm267ewyy2K+rnryNOmww2raliKfER40GDiCd1USkAAV+4YgqnHl7y3a+Y5prW8keOONVcFKA1rTwOY2py8LfhhafH8lvLldrq4/4NP8AmnMHx/JyfDPeitW/K7QrqS2WaeYLa20NrEQwFQicv5TU1b9nJRz10QcZ70sv/wAmbR7crp80sVwSCHmKsvHv8IoanJ/mwx8MpJYflTe3xnEN6I2tpDFIrJUlh1YfENjlePXA82IxkoxfyY1gUI1CP4agfuq7H/Z4yyxO7M4Cibf8orSxheTVriSfnIio1vxjCg1BLAl65IZ65L4JTWL8oPK8oqLm5FfF1/5pw/mivg+aqv5N+XVrxuLk12+2B/xrkJZr6IOFsfkt5cbrLcknYjmP+acRl25MhhV/+VL6F6fEvdcTTo3gf9XB4nkx8ALf+VJ+Xjtyu/EktQb+9MJy+SfB80Drv5QaRZ6bLc2sVxcSoQeDvVd9qkAxk/8ABrko5L2Xw63YfZ+S9Z9cyLoUZWJS7n1iKKNixrPt1ywNMiT0TLT/ACPqF5M0U9hBDCkcsgKyPIRxVm7TjIGIu0RhZ5LbHyXrDzpBbWunrM6soDy3BqtOR/b2+z45MkVSeE9yY+S/Jltd+YYIr1rMI6ScRbPOsvLgaULtQCvX4WxjMQ3DCen448JZxpPkCCxme6Dl7lk4qpclAWALV2BbfJ5NYDs0YOzzDe2rX8u4E1K5vJHHG5SYSqrEkepGeXGop1+zlEsoOznDG0vkIOQ3qmjb7seh38MkNQx8G1w/L9OVWlPGvZ2rTH8ynwHJ+Xyb8pKjvR2x/Mr4Dl/L+Po0p37Bn69u+D8yvgOb8vIpIpIzIaOpXZ377b7+GJ1CjAla/k5ZEGtwa7cd3p71+LK/GCfBKd6H+X40jg1vMheNw6Fw7Lsa7gt45kYdd4YIrYuDrey/GMTdGKd6f+Wuj67qYi11RdW0vqSNCheNeRoQdmrschqe0vEiIhjouxximZk/U8p/NHQLOwlttH0mAwW9neyC1iTlIazJG7k1LM24zGhM9XOyjh2YXPY3MkIkmdJATSOSu1KGvbESDQCKTbyr5bgvtA+tx7X3rmKJxJTiQocVQ/DRt0/2WGc92+BBBRvlfQrG81+5XVYGuIprd5oFYFQxDcV4kUPUcciZsOZpHWfly1tdflt4yUjNzFEqjoq+qRtUnplgl6S2Sju9+13SbSy00yoCbiJxHIxJowC7GnaoGYgkbcrhFMI128jTTGJoEqPVL7KBUHc/s4zFhhPkxvRLa2b8ydamb966kvEFFVQualmJ7/srTBAbtHD6rZ3z+nLm9dyVasa8QKnv74Cl5+Pzh8v2M9zBqQuDKs0gjMMYZfTr8O7Mpw4oGTWJC3H88PJY29O99v3Kf9VMt8KTLjCZ6p+YWm6TZxarepOdPvVgazWONTIPVjMnxAsvYfzZCMLNMrCUf8rz8oCn7m+6/wC+o/8Aqrk/BkjiCbab+aOgX1lc3kMNysNvBLcssiIHZIqcuIDsO/dspP1cKBkBNJL/AMr58qA7WV+R/qQ/9VctGEp4gnflH8ytG80X01jY29zDJDEZmecRheIYLT4XY1q2CeMgLxBlYY1rWop1yq2VMf8AP15Ja+VruRI1kXjSQNXZT+1sD3yjMCaDXk+lhf5Lw3Us9/eyrIIwAiSk0jJO/EDuRl5gAdnGxDfZ6qX3G/ti5q0t1xWleyuXgukkjCFjVKOodfiFPsnJRkQdmMogvnHWrMpeFUjeVg/wotAVVCRTj9qtB/xtlMTubcLJHcl623mkaV5OOrtbCWC1iiEcMTgcgSqH4iDxoxyzELcnDyYkfz8tf2dGk+m4H/VPMjwmfEGUeSfzCTzPBqMqWJtv0eqtRpA5fmGNPsrT7GQnClErlTGIPztt9QkNo2mNbCccPW9cNx96emMp1mnJxmmM8lBE+QPMMUnmg2MMXITRSSGUEV+DcGlK7jr8WY+nwGMbLVH6renpfXSo8SFQj0DbAmg3oD75lW5L/9DnPm689SF42q/rOBcTqQZAvKu3Tb5fs5zkZCWSx0aNSQSmHlKbQrOyS3troPdMOUykmg+g/CoFcyBl6lycU4gKnnO3lv7NYIZF2q5U7V2oCDXvlOXUQEwXH1MwSFHyxYWGjaPcTSNH9auXPqPGakqB8Ip269Ms/NCrZjLGMPexO4j05maCyt55JxyPqsxKmlOR4qOm+Z2n1uQyBkYxi4USTuu0y0uE1K3keOkcE8fqtyPw8WBNc2GTWY4jctgmAVC9hBuJSjK7c2JCuf2jX+OHDq4yYiVoK4/3kmViF5KampYmngMp1Y4qI6FmRaX2UkFqFidxzlqSaHev2d8qxTPFfRv4dkdX4qDifH4jm0EgQ0UV427Lt0+M4bVaSQegP+zONopZPMY7GcIgLOADRiTQZg6zGZEHoGJCV6fCziSYheTbLvQgDrlmniA2SG1IplYdVHv8RzLtrITPysofzLpSMAytdRAqSSD8YyOQjhbMY9SG1Y11W7IAoZ5P2j/McMDswI3XWRSGJp3ViK0UAkj7huc1+vPEKbYQsJM0DPfFnqygFgxBWtTUdcjpwDQU7BEVJ6j/AIY5sxINJDdQN6bd9zhsKmcjD/DEB7G+lpue0Mf9ch/EylyCU3SvLAVWlRvuScpzQ4t0RO6XxAySqiqBwNS3T78xowstpGyZc6UFNvZjmyFAU0t8q9t/mcbC0vDk7fxOFU+8l6MNY1yO34rII19X0iwAkIICx/EQvxMcxNXqI44WeTk6XTyyE0PpZ9qGn+eouIhgmRYzSKOK4gQL/sQyrmrhqMBFm24xyeTFdb0jzBIxj1eH/csE9eICSMlrcGhZirUqpFOuXYNXjB9J9Ky08zGyu/Lm5CahcsaCsa96nqfHMvVmwGvTino6yyyVBPFOzMBX6F/5q/4HMLipyqVuMYvJl7qIlUmlaeih6/TkJzVFAUPJRUjp06+GAmgkCylc9trunzxLp1rBDp8pZ5uL2omckVLVcklgx6H7K/Dmrhk00pESMuNyJ4ssNgNkubV/Ni6grTx8tOd1+rIfQEoK9Vf0zv6i8v8AJRuGXRzYBKsZN/xIhiyyB4hsnGsqbuwihQrFLNJGEEh6tvRfh5fEx+Ff8rNhA2ebRLZMbfSvzFsVa307ywJrLjtcOiNKz1B+Lk47bcczY4hXNwpZZdAsaPz5EJJ9X0oaZAv2JioEYA/35xZyrb9hjkgANizx5T1UJvMV0lrbyxSUZ1Ik27g7VzFFuS3/AIjuZNMmeQqZVniC1H7LJJWgH+qMd1pu3165ayvea/GgiaKgP89Gp9Bw2UUpxajdXFleo8Hqsbd2hjJKgyIQy1NNsQd1IQGiR3Ut1LDeaascNzBLGxWYtU8eSjZVoOS9ckSx4WtB0tFv4zc6fHGkwaGVo5C54yqUOxA8cFhab07y7Y2d/HPFbKpRyCw68SCpoa+B8MBK8KItPK9hp2p+vbjg0DkRkU3A23PywWKRwbp/SO3At05MsSKoYncjiKYgsyrSfCHANQYXYH5o2EHdBCnaF3tYGP2mjQkj3UYCkK4U7bYUu4niaDAinEe22JVwU+GQJK0W+QFCcCRErw4rQkVyMmQiU58tMp1SMBhXi3f2yktjx38zB6Xmb61HP6UttfCRQYfVUkQigPxLtTM/DEVbh5QOJgkegpMfh1MhRWi/VwAP+Hy3gHc0HHae+UNPt9MElj9aNxC9X4vEqjl8NKHkTtxyE4DmzhFuJLldRgv4NSVHtkeGGMWqlAju0hrWT4jykb4sTEMyASnvleeGw1K6v9QlGpvclCsbRJEEKuXJXd+tcryQsbNkeb1TWtbttU8nvq6MIlNRMhI+AryPxHb7OY1UWy9nl1xrGjXMbwTT280Eg4vG8kZDA9tzTLhEtct1CC6tbHzxrsTXSWyrLSkjooZQBQb77ZXwniaSKkyAeYtH6fX7ce5lT+uXcJbbVR5j0RQWOoW3/I5NvxwGJRYeBfmKLceY5vqrpJAatzi+JCzMdw29aimW6YUGFC2M7nxrmUVeiee9Qs7jyZo8UVxG8yRWPOJWBYFbZ1aoG+x65jQB4iz6POt6DMlgzTy0sEnljUZZpY4mt4LlI1aXg7F4tgEG71Y5hTx/vLawPVbCwD4ZmNls+/JzU7DTtfvJL6dLaJ7MqryHiC3qoaD3plWYEjZQd3r/APjTysKf7lIK9/iP9MxeCXc3cQQ175t8oXdpNbTalC0UylGALdCPYZDJiMhTEyCVeUte8r6Ho/1GXULZZFd2bgZD1O3LkPtU8PhyUMUq3a8YEU3bz/5SqK6jF7UD/wDNOTOOXc28YWN+YPlOgrqMfXeiv/zTg4Jdy8YVtO88+WLnVLa2ivlaSaVERQripcgAfZ98RjlfJEph5p5n1HTF80W7x0Yqvp6gGDcao3Fq06/Z3yqUDu4+Y7p35182+W7zypqGnWM4Z3iVYYUidFqsimgHEAdMyMeOQPJuhKIDxf0Zv5G+45lEFjxB6D+VPmDTtFh1hNSkaBbpIhDRGbkVEgboD/MMqyQJTGQBtg9i13bXIkSN67qRQjZtuuHJDijRYSILNPJmu2Ol+a7W8uTILeO1mhkkCl/jZSFUADpyzHxYzwn3oga5vSE/MzytQgyz1od/RfrQ4fBk3cYf/9HnIjiuozOk/CJCysJECkGuwIbbf55yEiYmiN3WHvXW+lTyyOZoViUx1VYmHJviqORUjb/JxnmobFIulIaPrhDPIeMs6kcQxaNAppRqj2/ZwnPj5DlH/TINr7Hy7cfDFNJ6rSHnOkfKgGwpvt2+LI5dUOYQSqyeW9ThuWNhDJC7A1kd0kSn7IAUAhf8nEamBFS3WJIUj5evLkq2rK0yo3P04gUSneo35fZyf5kR+j/ZKAoL5SsrfT5beBGa4lLSNdyVLJGCCFQUpy36Yfz0pSBPIfwqSSiz5E09baKO4iN08Q5RSuzKwr8R4hR3/lIwDtKXEa2BbIyIQB8oaULeJTachGS1xIVcyeKqv7PxH/J+zlo1875szmJKrH5b8h3jRNf6VdW8zNRmgdkQitCWBVu/XMjFrskNieINkcw6o+y/Lz8sZ3Ag+tSBjuWnICgEg1rCOmZMu1Ijns2eJE9Uav5P/lw7sPXuFp1/0pQKnpSsOTHaUO9mJx70Dffll+W9oDxe9lboQLlAFPcn9yP9jlcu1O7dEpjogpvy78ievboi3vpuObH105Ffpj6H9n4crHa1bkNfigFHxfld+XcsBuFW/CKxT0zOnInxA9L+OTPa8atn4sau0R5b/L7yUmtx3VpFfJdWMomiMsqehVDVeRWIH8f9ljh7TE+ey4coJVdR/KXyT6nqXMt291dSHk0My8fUY8jsI24j5nLJ9p4xte4ZGosQ17yPPa3QtdOWRNKXZpiwkIBFSealfir+zxXKf5Qxne7LCWUBf5e8k+WbmQWeqSXLzN0ZJFjRqUrQGNun+thPaNeqlhO+eyZ6v+XPkjTGg+rrc3NzIQ6RNOjJQGlG/drjPtK43EscuSuRSpPKvkuGVo9Rsr6GZQCfQuIilG8VdGYUG5w4+0CRfNhDMOqY3nlDyhBZR2EKXdzbxObpwZQ0itMip+xGg40QHIZO0p36aWeU9EPZfl75RupZK22pJBGGFVmh5M6j9nlH92VnteUa4q3QM+6c235QeRLpG9G7vOYA5xtPCHWvSoMfXtmZj7RhIXbkRMSLBQGo/lf5QsZPhN7cKOXMepETUDelFXpmLPte5VFoyZaOzHl8nyXfBotHeC0LkrIGKTcAftsH5Gn8u2TOvEDvPf8A2LXHIb5siv8A8vvL9m6CGO6uWFGVX9P06gUUuVXfp45Tk7TN1EimWXIRsF2l2V7o7y6lDZlTwWN47RkEpHMMv2K0qe3/AAWY+TUDIOAy5/zmzS6k4jt1ZCdc8wtJwYSrECoaYojAMTv8KjmeP81MojIiNCX+a5w1uM7lj2u3+vXjTyrYzTekvBpn2Do5IqFHGo3PLfLtPwRq5bycTNrJHaPJBeTvL9kmpNeXcVzpptvTlijh4LHKUapDeqwqB/rZszrQBRILHBk7yzfVvNFjBbj6h6ks/Hm8ZVD8INKfC56775RLUg/S2S1A6Iuy1WO8WO9ZWSGVEYFVRiP3YWp+Jd6r/wADkZ5RCV2zGQc0xhv7WOSG4ZnaNGDt8EdGANaU9T9qmVZtWDEi22OYA30QLec/0heSyRaE9hal3KSSegoFDQ8Y4jX4v9X4s5+eilH1eJxSP83ic6famKuqGvtWjkhkdbEtMi1jnAjY1Y8f3dasG4j/ACclhwyEgeL72ufakeAgBIk/MKzstV0r6/aO0Npdwzcq/tQmoBA6jxXOk08snOxQdWNQSd2b3/50SXTo8Gm6t6EqP6UsF3LErAGtQgdaDj+3T/VzPGugOZptOWPehtb893MltBZQ/XjLexBFnaSS8FueaszS+seLEIXIZv8AUymHasJiX8PD/skSlEb2t0zXNLmn+oveNcXKkKJzAilix7qpCrTMUdodTsEwzxJpOJTpiRK55SHoUWNSwPiVrk4doQJq24yAQslzpBcDgVr1aWICn3HBk18Qdi1HPFQvb7SbSBneJnKgFQsZQUI926fRhlrQB5rPOAoQa95daISyTGCXosXxVr23B74jXCrKBqIoix1LQ7uYxxXbRuo5KAGBHHr32OAdoDqmOYFbqFzDZSK1JzCVL+uR8NQeg3O+HNrxHkLTKdJdrvmOOwEbRLNcyzfEVZQDQ7k7A/ZGUfn5TlUaoNGTUUdm5fIujeYI31y5uLqKS5VWYGaSEmi8QFRXC9F8MzRrOGO9NwlYu0ss7HSm8xJdyy3kJ0iIJC/NzFIUUokcimoP2qu2YuPtMg3KqaBmPFudkFF+X3k2eX975l1WG4YqXh5gIGc9E+A/DX7OZmPtTHIcmQzDvTmT8j/LiCsnmbVl+c0f/NOXHXYwN6bfixu/8l/l/Z3aWzeYtalLEKWSSMgE/Ne3fKP5TBO0dmk5hdWn3l3y15Ei0fWbS31+/kS/iSC4a4kjEkXFiwMfw9/5viwz7QiBZDYJiuaUp5D8jRaWdUj1fULuZAQbCSccC4rsSqq/Qcspy9oE49vTMtU5+nYsee30q6QR3Ma2qmhMcTlZFQn4fjJYKxHxfFmPHPkibszcOOeYN2Uw0vyn+W+o6tHpsNzrTSSKWXncQhiAKkhQn2f9lmd+dlz4fS5sNRxHmz3yt5T8k+S9ci1uyn1K4vLdHQQTuGWko4NVQg8f5sjk1sSHIGQDqlGuan5Z1jXLiPUp59Pkeb1FZVSRdl40IahAp3ODFr6jdbOPPODJEaf5U8lXY52+uPISPiXjGCO2+2ZA7QiWUeE9UXF5O8rI7MmpyxmM0JVYt6j3BOR/PRPNmCO9Yvkvyd6iIuqTfF8TOBEKClRuFyGTtGEVuPK1O6tPLeiE2yzT3EbOqvOyxOSJKABW4028PtZg5dZHJMEEsZZRHZOtPTyxLol/o6ajcyWl4CtxG/ANGxUq3E8QOVP9bMyGrgd+TOGUEc2G3P5OeW4KPbX1z6DEHlOi9zRfiXY5LJqJDlIU0yxHnxIjXfImlapqWo6xLLJ6kshYwooLcafDWu1SMxc2vlEcUSEZO+0ptPJHlSURrJNLHI5+GBl+Kv0ZVHtHLL+Joib6psv5UaCyclvXow+IcU798vGsyfz4tvhf0kFcflr5ei4SNdTSRluEnFI34b9wK/qyEtfOJu4rKB70Qn5X+VPS5reM4NKkJH1+Vcme0p19QUQ80Qn5S6BLG00dxL6Y2qVi2p2oT1yyGsyEXxRZeGe9TH5S6IYg31xkUn4eSQb/APDDJR10qsyijwfNRh/LPQZWpFqMzjcOqJBRSDTerrlf5+zdhRDzXp+W3lj1nie7nBipyJWFd2NOPXrjDtCZJFxCBAXzRiflV5aozrPO/HdgphBFfpyz81kP8cWYxX1Xn8tPLYm9JnnLjb7cY7dPtZV+anf1xXwvNGH8ofLhZY0uVdyoYxGYK4r2NaD8cP5jJ/PCfB81Gb8rtGhLyvbTuBUyN6sTj/hWyuepyjnJEsKg3kTyq3BFtpz4jYNQ9xR/iysarJ0kw4AojyN5S9T0nt5lB2H7xamm5254/nMt7yTwea6z8u+RbPV7d42dbu3kSVYmlUHlGwYVBb2yX56Y34jXuYmIvcpZq/ljywsF3qM0LvdBmdmEgCksxbpyrx37ZGWslI7FZ0WIQX+nXssQTTolsjxS4lDFXVq0opqN6DLzLJHnM8TikkJvqI8jWcqJBp17OgAZ5SzKFB7bAr18TkBqc8jtIU2mYTTTdD8lT6WLue0lVpB6kSiQ0ZD0+02xyk9o5I3En1LCYPNA+j5IaV4xZO/w1jdJmA8KMev3Lhjq84FkoEwFkmmeWYFkaa3JC0KLykB+I9BuOW+QGuznYFBmpWVz5cla5A0zi0a86MWIKUIqK5bPPmFermg5N3//0ohF5k0QTOj+msPIsIwlRyG34++cRPS5C67ZJ9W833McxFo8cdsjkh2QK4BoCAcysOjBjUhugSTODzlYXFujSOtOQFFqtQNq+GY89FIGmRkETL5k0y3jWITlvVryCCpUEfD/AC7f8NlcdJM7p2QqeZtNZuEUsqLsGY1FPl1yw6SQQaVTqtk7/urksNquSVIApkPBkOiLCutxYLRri8ZkmBY7gAVNRypkeE8gE2FZNc0aFEj9SrVqKVJqe9TXbB4EzuzEgqNrFojcjcCpHVQSfwGA4ZMCQhH1K1lVjE7STqwI59K9+oOS4JCkGQVIr+2YhXYRPwPNAQVFO1fnjKBKbBWRXfrtVJYwYqGjPQE08R/L2wiBioUdRv4Y4SEMUkrU5RMQVZt8ljgSfJBk5NSt5oGEsKLMq8YyOh4/ZB26YmBCJbpNe6/eRXKtIVZIyGXkKb0oVWh2GZWPAJBjuE80/WLCezWVmRHHwmMcjSgoKMeu5zFyYCDTMSVP0tZD4kuuRX4eDdd/Db9nrkfAPcvErWWp2F0hVp4wsbmiMRUkmtatSpOQlhI6JRlxdWSxhy684x/d7FgB4Gm3+VkBGXQMiVOSTTZAqoOUvLirKwBqu/w164RGTEgLL+XT4UHAxer6n963E9FoadetaZKEZBEqStbu4a/VkCURgBCGCihJHKtcu4BW6IojUrmaG4t04RxggtHKzjiWqOQO+Qx4QQUl1xf3FsAEECBqFmUrXia7mp98MYdEA1yVJPMcENVKxc2FCQQahd6jr8siNMSpLcfmKzPSaOJW+EF6/E/dq/yjE6YrHZx1nTDO0clws5koPT/ZJO1RU8cIwT5opfJqGnszLBwElAFAKgVB3I99sfCkyruUWuIkYMJoEaRQSjOOQC9aVB7nDHEUCJVJtXX0Vhlkio5IYMygU38OnjgGA9Ay5NJqllcK4j9Jo6HkC3Y9qdcJxkLYaWz00uWkto25jisiGjCg+yDXGJlytIIDoZbNbcJCiLDHReIfYAfT4YzEiWRkF9vqMV1KsaMskYFREXBJG/7O32chPEQGHFeylLp+ntLLPMvosikIoYhdzxPQjxwwkaphS1Y7Q8lt26kry9WrUU0DfENuuSkDbIkdFGLSbdKTGKB5BVJHkIZgvTam3tXJnJKqsqEXyQFzI0TBFJWE0VVX+VaeIyoxKbRcj28loqSBY4pR8ILca0HQg77ZAYyDakghDC0sOScE4SkghwNzvsK/LLakgABEfVLz1PVe+V0pu3EKaUIXp/LXBKI7mRsdUKdLnuJ5FF2si9OK7Ny2NOVckDQ5MS4abfqOSz+oI19Liep4n4uW56eGRkR3JJXrpSQ0J4KC3Op4n4m/a3+ziZEsCFCy0xIfVnjuYgi19Z1Cs5HXenv1yUiTzZAJvaxlbeONJSUjHw0+yK7vtvlcgbbRM8rU2jpEGEwJHx/F14/LpXBwMeEIJrjmWjjulAbf0033Pf38ct4O9BKq1u7WpE85WNalkAAb6e/yyG3cxMtqQ0iaZxXmr8IwVAC70O/I/wA3TJAFja0rplxGsYvJY+TVUftDlseu/TJDbdIk5vLUE0Txw3isJqci6BjUEGoZgG7YRmo8mQpExaDb2kkxSdQ0lOcQQ8dhTr8WQlk4uaCFi+WtKuIQzMzKx+LiSA1du3h44RlIRGKx/KumOxlMIaUsBU0AIXalKfZwjUSqrTQKIHlq1EkdwlYp+ZLzKQGNRTiG/ZFP5cAzSqk8KI/RnwBC7NMBTm9CwoKV5EU2yviJK0Vp8u+uknqAMz0HFgNjTryO9TkuMjkjgbstHhtnKC3C8T8NBsaihqNsEpE80xjTo7GSByTIuwJ5Ur8VdiOvviWYQ62gNw/qzmjkqqqdgPeg64CA0rp9HMoj/ec0iIZEZv2gO9Ou+Mdr82VWp/4agaC4nf4jLR5KfZXwIP2h0yfHLaujIQbtNNijRbT1CI670mJHjUchscZ2d2PRMYtHtY4puDMpkasgZi3IDY0PbIEX8GQipppUlamdI4geKqOtO1T1yPCGPCsuoJLOP1mq6R7VA5HhXeg2riMYUgrbA2U8jlJldD8XwbfH4GvxHp8WSMCEA7rrhGkT/RyFlRt1rtWoFSenemAQFsjy2XW8NyIF+syhXc/CoPICSm/TEgA7KCURJ6ckvppyUMo5CgAJ6daYBBPEUHc6Fp7RuJGdVcFTRiDXr277bZOM6Y8K2z0zTAX9ISersJXlJJLDw+jJSkSilZtJDSExTH1EWiKWoCdyK198rBSLX6XpBMjyXgkNSPVRZf5dqAjf/WyQEeZ6JiCTuiLrSLOSUXFm0qxk09NpCxSu25OSkRzDOYrkls0WmQJNHKGAl+Fzzbff26ZGywGQhuOWzhcsKVRaIF6U8BTr0wCJtESirawS6WqAPzX6zHI8gUcR136hqD7GWjGSmiUlNpost09wlvG0przahqq1rUnHjkBVtR5tx2WkSMfrFseAYiOnIg1BB5YiZHJmA1BovlzTrZoLKCWWIuXLAcveu+5AyWTLKZsndSBe26rNa6MYvTaoe54KkTfCWYdPh8aZGyOXRjYQ0h4l4QqBFQqqk7KWXbb/AGORqzaLpAWGk2Md16qWwSJCUkkib9nb7S16++ZE80iKJWUrKa3senmz9UQlkK9K8SeR23OY4Jtl0Q1vcaeySIbUC4RCU32LEfFvt8stIPexf//T4c8N4wAhIaQFuTtQUVT0BzS3Gzbqg208E8YWY0qN2OwJH68iIkHZCIttOWGMjmvE7py7D6PHK55rKktahJCnBSzPQUWnUU+eOIEoU7f0rklreVkII5I4oCPn7ZKdx+oJBKOMEsUikOSd/hB6/PKOIEKVdjMsZWRlao6eAyAq9kIWSS4knKwzKkMY3G1QewHfrloAA3G621ELppf70oVbchq7eIwnhA5LaMWahIDni1KmtTXKTFFqM96to6iSWryHYdqE+PbJxx8Q2DIFb6Uc10twZkZUaiVqRWnXam+GzGNUqJYoVFXVmBFDsd+mVC1Q99fi3RVkLHY0IPQV+eWY8XFyVAJJBeOv76h/Z2Jr/rHLyDAckkUmUMMsQFZeTrUKKUFKUzHlIHoxJU4X1ZJg0oR4qGiqK1Pv4ZKQxkbc1tXVZANlFD8XIdRXwrkLCQVkSgljyYAHjxqBv3O3z64ZFNr1imZQUkLAbFvn3yJkB0Y2oSM8TgOCwagZj238BlgohbXpC0klCxpu3cewyJlQTaIksTyD8i3Aj4Sdqg7ZAZEW2fUWQh4w22xpWlR1ONik8SoJFAP7sFjsRx32yO56otdIC1WQBD4dSPowA0xtqMqCRQlkGzUG5HSmJJTa2SYHZoeRJ2oOnfCB5ptZ6Cs/IghS3TtSlAN8lxGlte6gtyXjXo602P35G0ElTMkyPWKJA46PSlR4DJgDqyBX/WCUHqrwb9oE7V69Dg4d9kEro2Q0HU7swAFBkSEKX7uKUyQsQ5FGcHfr298luRRSNlX1nZgrNVCtfiNSfDY4OFNqhuIEDKQTXoB02yJiSUWoXLQvCCpIkDAluRpSn4ZKGyb2UbNzHC3ryBqUovsa06/LJzFnZFohmtpal5XfiKorN8IJpgG3RNr47ekgJuHCk/D3oeux7YDLyTaJqnGQCVyrCgofv+7Kvgi0uWC+iukk+s/A4JYn22HTLyYmNUto0SzxtyMjRMaV4EknbenzyvhC24zFpVdJnoB8VRTenXp1x4QE2px3MXqmNmARgeQHw15deWHh6qCiYpZoSF9ZUWhCAGhow6YDEdy2hJ0D1EkzMUY1WhNCdqHtvko0Oir44LYc5Y4zzABFKqdvlglM8mNoiK6EcBVnk4n9ksWFfp8KZWRaSV312cssbSSlwKBa7Lt4HAQi2zcIjlkpzSlGZqb9+njkeG02mEGrrEih4fVoAABThQnfc5A4mXEjYZ45i0LyTJb8aBAR33JDAg/DkOGkiaYWvG3URxytO0hBVn6KKjYLtlcrLKJ3Xp+kYbglY+SN4bAKTX33qd/8nEbMuqOhEzfFJwCrWqg7iuwPbGmQBdduEQsGPEnYBRWopvgpBQ8t1bKm8j+owqqg9TXr498kAjiCks6qysPWfkeIB6qDua+IxIRxK884oDHGvqtQoDsa0rucBDIleZFEYfgqt1Kgg9u1cCLCHjjij5tHGGB+MndTXw6nwxJKBSvJPGiFvUPpKRULtyI3IJxBLLjQd3fqkIaGBpTUBoH2NCRuKihyUR3sbCNGowFOYQs1K0rQ1H8cFrxhTGpxPGzxwMkgrVWIArsa8gTikzCg1xbXCFZLdmr1qSQK/I40UcS9LfR7dIwtuIubMW4A1JO5JpvhJJ5sdlGRIFldYRGqgByHFVJDU3yIJSCpGRY5VKNGF3JG5FKePbfDw2GNoqLVoQvPirlaF6LQ7ioFScQGQkF7XySLxEY226/FxHxGhGAimRLRu4yUaRY3G3JVBoK1r07j3xFptCpqpEoRYkElRymI+KhHw0rXvjwkMeKipT61dxrIqwJyWokPKoqaUO3jXfJCLEzWWt7LMgeWMAbVYCo3HYVNMapRO1Ux2MxWR2+JVoF6AbdvY4CuxQWoTCJFkiHJQQoVB9kE0I37UyUBbBfPdwxqqGYBuJqCVqO5FOm2JiSyHkgY9QtbeZXD8wlXMjfEQSOpNN8n4ZLGlzPN65nVSYACzlTRSdievWnIfDgrZatauvfU7tIooDHJJzDlgxqCKkKwpxqP8nJjESLXipWt7i3uTxmYnmOYrTlQDfcGvQf8DkOEhQXCysrluCylFVeK1ovKlRsD8Rw8VLzbtdJtbepS7k4yVEnwAmij4Sa4ZZCeieFEk2VqiqiMY2+Lc/CeWx6CmQJtlwoe3n08SPcCzZwY2JZzsOoqp8cs3Twh/9TjE9xxfglOVTSvY1365z4j3unIU59PjmZC9OJJb1FNOIpvhjlI5JulaGhkihDGRFFefjkJciVUp4GNweYNaGvZhy2GTjLZbULe1hgl9IMQ/E8anfrk5TMhaTJGLUgL6hpX4Sdvpyk+5i3MAkocyckHTcEUI6mmMdxVIU4GieYsK8SD2ou23X2yUgQEuiEVtI5L1JFQNyQD06YJXILTa8lj5UJHXY0NSe/XE81pDX1ks1JGanHvWgJO9OmW4slbJBIX2kBihI9QGIKabd/EYJys+a2rLb3HEOsgWMLyDEgUY5XxDuQh5bKa4hKLJ0apJqeR8N6Uy2OQRKYmm7fTLqKSMswFDxZa0HI9ME80SCtpwljVoy7F0pV9+3htmGcvNBVrWyS15py5jdgpNaZCeQy3VdIbUsYiCWf4hvTYd8A4uaLQ7R2bExrJxrsQepGWAy50i7X/AKNDjlDOYoqbgHxweNXMWUqkcQVqvKvEHiF9/p+WAm+QS2ArPzVixUcgB0I6VOR5BStSP4W9Q78eRHia4Se5gCpw2U4kr6xIO5Fex98lLIK5JJREelSTTLSRkrUniw3K7mhPU7fDkDmAHJlGNqk9vEkJaFJXl9YxCPYsUK15Gnh+1gjIk71w0yOPbZCvcRx8QwoDUKCaE9qjLBAlgApJcR3Sc4w2wpXwPyyRgYmikBpo3jcGKUhhRQO/LwyQLMSAV0g5o3xDkaV8fnlRnTGRtzQyqAoJO+/H2P34bQh7pY+aRzV5yklifs+HU5OBPMIUhHEpeTmxMg4Kp8BSmw22AyZkTspK2Cr1jU0Irx5V6de22Mtt1BXRJcMVJZeNfi5GlPvp4YnhSq/UtUcqAOAPau5H09sHFEKrfUrqCF2dA7V2X2pU5HjBKqRKqHEkXFqgsD0qdgu+Kr60CVhHMV4oKct/ngrzQQow6okhaNkCkA7FgK18NqZOWEjdbR9tJUclj4q3QVBp36DKJCkhWNy05ROAAjJVeIFdzyNfvxpLTq9RxoaA7npvgGyhTWB1lpUEkhSRuSaZK1LS28hYhCGUddh160rhBRTc1sSih6FlOx67Dp0xEkhyQMo+EkA1NRWgp12wcSktCZOfpF2DDcKAaH5k/PExNWhWiZWkT4nVBvQ7jfb6OuRspDkAkZjx5FWNGHcD3OE7MSpzRICOLBnBowpTYb1yQVtYkY8KsisteR78abADE7JC9JZo6ULbA9TsKfLI8KolNSdyGRwnbiDt92RliBZAo2HXXBCer+8I+yTQ+9MrliTxJkuqSoBRuRP7TEUP30yvgZcRVY9RcMxkYfF8Kim47+ODhY8TbXCcVeiPyYmoNCPAFjkSVtUM8pK+pHRmP2gQeK/TTIpVXt+CIyVYvX9qpHXwwkqXOJw/H0y0ZG7AhgdqmqjBYSQ0Udj6gjNWJ4AVIG3th4gilG4S4KenursdyegpWgp/NT/hsFpLUVtcA0kqPSoUY0J6b9NjhkGNFCSOAwtiGKUJ3B38STt3yKKQtlqkLyC2QOpWjKqrWnWtaVH35bKBAtCZFrQyPEJ2UqQZuW3EnfqRkK2Z7KohgRy8cvqCMlGWoruKH7hkaARThZvyUsw9MqSHFANz36kHESTW6mlpDydeXwVHwEbkmpAyQkEUqPaiFEZ1UF/gINKk/s+++DiZGFLf3Mboi/CCvIKOqnfx36YbWlryNIvJUBTmKuDUV67/ADxCOFFLbyrC7NErSAlwincAU8O3I1wlnGNoK6XVmWR4bWP4QzqqniCuyhAB8VeWGNXuWXh2FCwaeZmhngkSWhYuaFAan4UII6ZKUAORauEq9vp1y8TbhEIKsWrsQdqZAFeEr57C9MkTF1KKy+pCVNXTqTt/N/k5IEDmngV5dP0mdi8cC15VFasfs0wcfczq3W2nKLThBaxxpuHjAoCQd9vDBxEsQOiLaJ1Q/Z+GgCU34r/bTBaRCkNcafbytG71QqK812Ox6NhEypAQw0a19WirTaqsTxJPfcDvvhMkCCtJpnp/GT8Sg7nqB1+EZE2yMacbWJo1TmRI5+JjQe+StG6ndWc3oLCFUuzUKdQBSpYVwEqonT4vgdY2rxbmp2/ZPEUrTDxIf//V41erak/bVWq1D8RPXftmghxW6kqSxL6Kcphxp4NSn/A/fhJ3U0q2MUIuAI5izdSaMB8umRy3W6oq7U82KODJStKGlPDplOOuvJiUMyRNx5OiS9qVpX6A2+Wj7E0tuILf6tzW4T6wAtY1EnJg1e/EABP2slDn5JAU/SrabzKBtzIFfi+kYb9SNkRAjegvoSIU8AG+mldsrlV7pKnKqhjV1JpQg8qU7HcZKKlT/ecqbdNzU/0yVBi16bGZKSkEUryDcT49iMdqSLRTiMKKlSKHjXYdTlYClCy+tROdDBtWta09tq5ZER+KNmoUBZBG7CMyfaPLY9ui/qwy865Kio0b0pKutanmfiryrt1HhlRqwqvGs44+m4MfGg+1SvY9MrPD15pKJpcggEqZeI378a9tsrqPwQsCziVW5IdtlbrX22yXppQAl9xGhdDJIBRySo5b+I2HjmRDlsu1pnB6gtE9KhavxDfx98xpAcW5UqJEfKL1Ch3JWv8AN3G+SrnSUTb/AG3MfGtBQDpSuVyG26Gz6vqFmoQQeadgK+JwUKQVsoueElGBHfjXrUUpt4ZKIjswKMtzdiMEKC/da/xymQjfNsCtp3I3hEQIuOD/ABIRXhx+PYj+XI5AOHc7NkLSK7Nvyb1VWo+yVJqT7Uo2ZsAehauq/TBBWcxH9r94orTl33I/Vhy3taV05vQqmMIxB3Wu5+WRiI3uVU7UXRnJcqr7bDkTw964ZCNbIVbo3YRvQUMxIE1DSnv92RiI3uVS29BKL6xVQKemX5Enw7UpXMjGBeyqsZuDbgMAsXYgk99698gRG+e7EoaIXRIrQD4qA18evTLCIqEcIoyq85lWI/b4gkBvoGU382Saxq/KHi1RQUrWvT5eGYprdV1wLkSfaBXYsWr49MEQEoG/DmT4ywlPLdK1B9uIy/EGO6BCt9Xbmx6UTjy5cduR3HKuXbWhRjigBoJyzb8XIcHj32IyciUprpq0T4W5Kft0rQD35DMbKGYRh9WrelT1KniB14967dchtSDyUIHu6kGNTAAAhqKn3/mwkRrnuoVJOAjH2WqfiIJFKnalB9oZGIVZMGD1SjbjkDUCn3YYhSrW5uBCgRVLEncno307ZGQF81XWR1MMTOqMNgASeNd9xXb50xyCPQqi0KG4HIRqNqk+GVUaSW7kERngQ0lfg7b9qVwQG+6EucS8T6Z/eileFaH58RTMgAKW4OJHxgLJv4kV4nwxrfZQ2irQfEpNSDy5bbbnpgkqyWIs4ZJikatUoikhvauWROyUQFgFQrcpiBua0A9qjISu0Ier14qq0q3JifirXbtXGh3qEVMJTAPXZVkrRQvIj5nbIGrVHRc/QFOm9ORNOu/auVTAtUdBzMfwUXcGux7nZq9spoMgioyjbFeA3oQanpvkCEhMYTF6JCCjcqhiSTWmy0pgDPoheUnqEcD6nEfGD8+NQNsjIDvYm1WNnJUsoV6KCKkmm+5ptuOuNBLrh72gM8a8qqI1JNAOJ3/l6UyZA6JKnKlx6WzktyUyEV5V22+EZFibWP6ProDx4hPjZtiTTYEUOTUqGnRWIuC1rMGu6EBCCDuTxIJHQfF1yU7pApXZLAzH1pEW55Dn6oJOx2rUdz/wuV7suu7Xo2Zc/VrhlUMQCA/EtyBJ+z9GE2pV7mFeJZrj91yUhCrfaDCgqB0PfAqlCn72UTO3qjjzJrUgMePbuciQxHNq8jt3uSbmYQychRaM3xjoBtTfv/lYYhlNSmjsfUYCat2JCasG5FeO4oBk+it2KxDn8aMhPwCQNQGu/KoC1riyFplai7+sSm2P78bSg8iDsDVqjpTBRZxvoqrzCMGo0ZBoRUUT4eXvg2tMTKlBfWHIR8CA9eRrU7bgDqMQDbA23HwEu+9UcjqFHWoG3XCQjdDKl0ySESemwIIVwzArT4gNulf9jgARu1YgCesBJJQ8lFaA16EkdMK7rrd9a9N+UY5LUL9kclr1O5pkiB3qOJDRtraFlCiR1ZjzrTnUjYA0Aof9jgqPej1ISZvMPq/vkHpAjkFK/F8VNiP+CyYEK5o9SZqLtZ3qeabGIioPTpTpkJBI4lCdL43C/GFkK/FzDGg79skFNqEolChWYNIKVdeVCe9BTbHZiqypKQtXoApKkh6Up0ag6fPAeagd7cf1urFKenQhweXTx33/AONsI5p3f//Z"}; \ No newline at end of file diff --git a/plugins/flot-chart/jquery.flot.crosshair.js b/plugins/flot-chart/jquery.flot.crosshair.js new file mode 100644 index 0000000..5111695 --- /dev/null +++ b/plugins/flot-chart/jquery.flot.crosshair.js @@ -0,0 +1,176 @@ +/* Flot plugin for showing crosshairs when the mouse hovers over the plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + + crosshair: { + mode: null or "x" or "y" or "xy" + color: color + lineWidth: number + } + +Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical +crosshair that lets you trace the values on the x axis, "y" enables a +horizontal crosshair and "xy" enables them both. "color" is the color of the +crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of +the drawn lines (default is 1). + +The plugin also adds four public methods: + + - setCrosshair( pos ) + + Set the position of the crosshair. Note that this is cleared if the user + moves the mouse. "pos" is in coordinates of the plot and should be on the + form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple + axes), which is coincidentally the same format as what you get from a + "plothover" event. If "pos" is null, the crosshair is cleared. + + - clearCrosshair() + + Clear the crosshair. + + - lockCrosshair(pos) + + Cause the crosshair to lock to the current location, no longer updating if + the user moves the mouse. Optionally supply a position (passed on to + setCrosshair()) to move it to. + + Example usage: + + var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; + $("#graph").bind( "plothover", function ( evt, position, item ) { + if ( item ) { + // Lock the crosshair to the data point being hovered + myFlot.lockCrosshair({ + x: item.datapoint[ 0 ], + y: item.datapoint[ 1 ] + }); + } else { + // Return normal crosshair operation + myFlot.unlockCrosshair(); + } + }); + + - unlockCrosshair() + + Free the crosshair to move again after locking it. +*/ + +(function ($) { + var options = { + crosshair: { + mode: null, // one of null, "x", "y" or "xy", + color: "rgba(170, 0, 0, 0.80)", + lineWidth: 1 + } + }; + + function init(plot) { + // position of crosshair in pixels + var crosshair = { x: -1, y: -1, locked: false }; + + plot.setCrosshair = function setCrosshair(pos) { + if (!pos) + crosshair.x = -1; + else { + var o = plot.p2c(pos); + crosshair.x = Math.max(0, Math.min(o.left, plot.width())); + crosshair.y = Math.max(0, Math.min(o.top, plot.height())); + } + + plot.triggerRedrawOverlay(); + }; + + plot.clearCrosshair = plot.setCrosshair; // passes null for pos + + plot.lockCrosshair = function lockCrosshair(pos) { + if (pos) + plot.setCrosshair(pos); + crosshair.locked = true; + }; + + plot.unlockCrosshair = function unlockCrosshair() { + crosshair.locked = false; + }; + + function onMouseOut(e) { + if (crosshair.locked) + return; + + if (crosshair.x != -1) { + crosshair.x = -1; + plot.triggerRedrawOverlay(); + } + } + + function onMouseMove(e) { + if (crosshair.locked) + return; + + if (plot.getSelection && plot.getSelection()) { + crosshair.x = -1; // hide the crosshair while selecting + return; + } + + var offset = plot.offset(); + crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); + crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); + plot.triggerRedrawOverlay(); + } + + plot.hooks.bindEvents.push(function (plot, eventHolder) { + if (!plot.getOptions().crosshair.mode) + return; + + eventHolder.mouseout(onMouseOut); + eventHolder.mousemove(onMouseMove); + }); + + plot.hooks.drawOverlay.push(function (plot, ctx) { + var c = plot.getOptions().crosshair; + if (!c.mode) + return; + + var plotOffset = plot.getPlotOffset(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + if (crosshair.x != -1) { + var adj = plot.getOptions().crosshair.lineWidth % 2 ? 0.5 : 0; + + ctx.strokeStyle = c.color; + ctx.lineWidth = c.lineWidth; + ctx.lineJoin = "round"; + + ctx.beginPath(); + if (c.mode.indexOf("x") != -1) { + var drawX = Math.floor(crosshair.x) + adj; + ctx.moveTo(drawX, 0); + ctx.lineTo(drawX, plot.height()); + } + if (c.mode.indexOf("y") != -1) { + var drawY = Math.floor(crosshair.y) + adj; + ctx.moveTo(0, drawY); + ctx.lineTo(plot.width(), drawY); + } + ctx.stroke(); + } + ctx.restore(); + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mouseout", onMouseOut); + eventHolder.unbind("mousemove", onMouseMove); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'crosshair', + version: '1.0' + }); +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.min.js b/plugins/flot-chart/jquery.flot.min.js new file mode 100644 index 0000000..968d3eb --- /dev/null +++ b/plugins/flot-chart/jquery.flot.min.js @@ -0,0 +1,8 @@ +/* Javascript plotting library for jQuery, version 0.8.3. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ +(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;if(!$.fn.detach){$.fn.detach=function(){return this.each(function(){if(this.parentNode){this.parentNode.removeChild(this)}})}}function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("<div class='flot-text'></div>").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("<div></div>").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("<div></div>").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else if(typeof font==="string"){element.addClass(font)}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else if(halign=="right"){x-=info.width}if(valign=="middle"){y-=info.height/2}else if(valign=="bottom"){y-=info.height}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1e3/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis)res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;i<hook.length;++i)hook[i].apply(this,args)}function initPlugins(){var classes={Canvas:Canvas};for(var i=0;i<plugins.length;++i){var p=plugins[i];p.init(plot,classes);if(p.options)$.extend(true,options,p.options)}}function parseOptions(opts){$.extend(true,options,opts);if(opts&&opts.colors){options.colors=opts.colors}if(options.xaxis.color==null)options.xaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.yaxis.color==null)options.yaxis.color=$.color.parse(options.grid.color).scale("a",.22).toString();if(options.xaxis.tickColor==null)options.xaxis.tickColor=options.grid.tickColor||options.xaxis.color;if(options.yaxis.tickColor==null)options.yaxis.tickColor=options.grid.tickColor||options.yaxis.color;if(options.grid.borderColor==null)options.grid.borderColor=options.grid.color;if(options.grid.tickColor==null)options.grid.tickColor=$.color.parse(options.grid.color).scale("a",.22).toString();var i,axisOptions,axisCount,fontSize=placeholder.css("font-size"),fontSizeDefault=fontSize?+fontSize.replace("px",""):13,fontDefaults={style:placeholder.css("font-style"),size:Math.round(.8*fontSizeDefault),variant:placeholder.css("font-variant"),weight:placeholder.css("font-weight"),family:placeholder.css("font-family")};axisCount=options.xaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.xaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.xaxis,axisOptions);options.xaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}axisCount=options.yaxes.length||1;for(i=0;i<axisCount;++i){axisOptions=options.yaxes[i];if(axisOptions&&!axisOptions.tickColor){axisOptions.tickColor=axisOptions.color}axisOptions=$.extend(true,{},options.yaxis,axisOptions);options.yaxes[i]=axisOptions;if(axisOptions.font){axisOptions.font=$.extend({},fontDefaults,axisOptions.font);if(!axisOptions.font.color){axisOptions.font.color=axisOptions.color}if(!axisOptions.font.lineHeight){axisOptions.font.lineHeight=Math.round(axisOptions.font.size*1.15)}}}if(options.xaxis.noTicks&&options.xaxis.ticks==null)options.xaxis.ticks=options.xaxis.noTicks;if(options.yaxis.noTicks&&options.yaxis.ticks==null)options.yaxis.ticks=options.yaxis.noTicks;if(options.x2axis){options.xaxes[1]=$.extend(true,{},options.xaxis,options.x2axis);options.xaxes[1].position="top";if(options.x2axis.min==null){options.xaxes[1].min=null}if(options.x2axis.max==null){options.xaxes[1].max=null}}if(options.y2axis){options.yaxes[1]=$.extend(true,{},options.yaxis,options.y2axis);options.yaxes[1].position="right";if(options.y2axis.min==null){options.yaxes[1].min=null}if(options.y2axis.max==null){options.yaxes[1].max=null}}if(options.grid.coloredAreas)options.grid.markings=options.grid.coloredAreas;if(options.grid.coloredAreasColor)options.grid.markingsColor=options.grid.coloredAreasColor;if(options.lines)$.extend(true,options.series.lines,options.lines);if(options.points)$.extend(true,options.series.points,options.points);if(options.bars)$.extend(true,options.series.bars,options.bars);if(options.shadowSize!=null)options.series.shadowSize=options.shadowSize;if(options.highlightColor!=null)options.series.highlightColor=options.highlightColor;for(i=0;i<options.xaxes.length;++i)getOrCreateAxis(xaxes,i+1).options=options.xaxes[i];for(i=0;i<options.yaxes.length;++i)getOrCreateAxis(yaxes,i+1).options=options.yaxes[i];for(var n in hooks)if(options.hooks[n]&&options.hooks[n].length)hooks[n]=hooks[n].concat(options.hooks[n]);executeHooks(hooks.processOptions,[options])}function setData(d){series=parseData(d);fillInSeriesOptions();processData()}function parseData(d){var res=[];for(var i=0;i<d.length;++i){var s=$.extend(true,{},options.series);if(d[i].data!=null){s.data=d[i].data;delete d[i].data;$.extend(true,s,d[i]);d[i].data=s.data}else s.data=d[i];res.push(s)}return res}function axisNumber(obj,coord){var a=obj[coord+"axis"];if(typeof a=="object")a=a.n;if(typeof a!="number")a=1;return a}function allAxes(){return $.grep(xaxes.concat(yaxes),function(a){return a})}function canvasToAxisCoords(pos){var res={},i,axis;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used)res["x"+axis.n]=axis.c2p(pos.left)}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used)res["y"+axis.n]=axis.c2p(pos.top)}if(res.x1!==undefined)res.x=res.x1;if(res.y1!==undefined)res.y=res.y1;return res}function axisToCanvasCoords(pos){var res={},i,axis,key;for(i=0;i<xaxes.length;++i){axis=xaxes[i];if(axis&&axis.used){key="x"+axis.n;if(pos[key]==null&&axis.n==1)key="x";if(pos[key]!=null){res.left=axis.p2c(pos[key]);break}}}for(i=0;i<yaxes.length;++i){axis=yaxes[i];if(axis&&axis.used){key="y"+axis.n;if(pos[key]==null&&axis.n==1)key="y";if(pos[key]!=null){res.top=axis.p2c(pos[key]);break}}}return res}function getOrCreateAxis(axes,number){if(!axes[number-1])axes[number-1]={n:number,direction:axes==xaxes?"x":"y",options:$.extend(true,{},axes==xaxes?options.xaxis:options.yaxis)};return axes[number-1]}function fillInSeriesOptions(){var neededColors=series.length,maxIndex=-1,i;for(i=0;i<series.length;++i){var sc=series[i].color;if(sc!=null){neededColors--;if(typeof sc=="number"&&sc>maxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i<neededColors;i++){c=$.color.parse(colorPool[i%colorPoolSize]||"#666");if(i%colorPoolSize==0&&i){if(variation>=0){if(variation<.5){variation=-variation-.2}else variation=0}else variation=-variation}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;i<series.length;++i){s=series[i];if(s.color==null){s.color=colors[colori].toString();++colori}else if(typeof s.color=="number")s.color=colors[s.color].toString();if(s.lines.show==null){var v,show=true;for(v in s)if(s[v]&&s[v].show){show=false;break}if(show)s.lines.show=true}if(s.lines.zero==null){s.lines.zero=!!s.lines.fill}s.xaxis=getOrCreateAxis(xaxes,axisNumber(s,"x"));s.yaxis=getOrCreateAxis(yaxes,axisNumber(s,"y"))}}function processData(){var topSentry=Number.POSITIVE_INFINITY,bottomSentry=Number.NEGATIVE_INFINITY,fakeInfinity=Number.MAX_VALUE,i,j,k,m,length,s,points,ps,x,y,axis,val,f,p,data,format;function updateAxis(axis,min,max){if(min<axis.datamin&&min!=-fakeInfinity)axis.datamin=min;if(max>axis.datamax&&max!=fakeInfinity)axis.datamax=max}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i<series.length;++i){s=series[i];s.datapoints={points:[]};executeHooks(hooks.processRawData,[s,s.data,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];data=s.data;format=s.datapoints.format;if(!format){format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}s.datapoints.format=format}if(s.datapoints.pointsize!=null)continue;s.datapoints.pointsize=format.length;ps=s.datapoints.pointsize;points=s.datapoints.points;var insertSteps=s.lines.show&&s.lines.steps;s.xaxis.used=s.yaxis.used=true;for(j=k=0;j<data.length;++j,k+=ps){p=data[j];var nullify=p==null;if(!nullify){for(m=0;m<ps;++m){val=p[m];f=format[m];if(f){if(f.number&&val!=null){val=+val;if(isNaN(val))val=null;else if(val==Infinity)val=fakeInfinity;else if(val==-Infinity)val=-fakeInfinity}if(val==null){if(f.required)nullify=true;if(f.defaultValue!=null)val=f.defaultValue}}points[k+m]=val}}if(nullify){for(m=0;m<ps;++m){val=points[k+m];if(val!=null){f=format[m];if(f.autoscale!==false){if(f.x){updateAxis(s.xaxis,val,val)}if(f.y){updateAxis(s.yaxis,val,val)}}}points[k+m]=null}}else{if(insertSteps&&k>0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;m<ps;++m)points[k+ps+m]=points[k+m];points[k+1]=points[k-ps+1];k+=ps}}}}for(i=0;i<series.length;++i){s=series[i];executeHooks(hooks.processDatapoints,[s,s.datapoints])}for(i=0;i<series.length;++i){s=series[i];points=s.datapoints.points;ps=s.datapoints.pointsize;format=s.datapoints.format;var xmin=topSentry,ymin=topSentry,xmax=bottomSentry,ymax=bottomSentry;for(j=0;j<points.length;j+=ps){if(points[j]==null)continue;for(m=0;m<ps;++m){val=points[j+m];f=format[m];if(!f||f.autoscale===false||val==fakeInfinity||val==-fakeInfinity)continue;if(f.x){if(val<xmin)xmin=val;if(val>xmax)xmax=val}if(f.y){if(val<ymin)ymin=val;if(val>ymax)ymax=val}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry)axis.datamin=null;if(axis.datamax==bottomSentry)axis.datamax=null})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return!$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static")placeholder.css("position","relative");surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable)eventHolder.click(onClick);executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout)clearTimeout(redrawTimeout);eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity)axis.p2c=function(p){return(p-m)*s};else axis.p2c=function(p){return(t(p)-m)*s};if(!it)axis.c2p=function(c){return m+c/s};else axis.c2p=function(c){return it(m+c/s)}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i<ticks.length;++i){var t=ticks[i];if(!t.label)continue;var info=surface.getTextInfo(layer,t.label,font,null,maxWidth);labelWidth=Math.max(labelWidth,info.width);labelHeight=Math.max(labelHeight,info.height)}axis.labelWidth=opts.labelWidth||labelWidth;axis.labelHeight=opts.labelHeight||labelHeight}function allocateAxisBoxFirstPhase(axis){var lw=axis.labelWidth,lh=axis.labelHeight,pos=axis.options.position,isXAxis=axis.direction==="x",tickLength=axis.options.tickLength,axisMargin=options.grid.axisMargin,padding=options.grid.labelMargin,innermost=true,outermost=true,first=true,found=false;$.each(isXAxis?xaxes:yaxes,function(i,a){if(a&&(a.show||a.reserveSpace)){if(a===axis){found=true}else if(a.options.position===pos){if(found){outermost=false}else{innermost=false}}if(!found){first=false}}});if(outermost){axisMargin=0}if(tickLength==null){tickLength=first?"full":5}if(!isNaN(+tickLength))padding+=+tickLength;if(isXAxis){lh+=padding;if(pos=="bottom"){plotOffset.bottom+=lh+axisMargin;axis.box={top:surface.height-plotOffset.bottom,height:lh}}else{axis.box={top:plotOffset.top+axisMargin,height:lh};plotOffset.top+=lh+axisMargin}}else{lw+=padding;if(pos=="left"){axis.box={left:plotOffset.left+axisMargin,width:lw};plotOffset.left+=lw+axisMargin}else{plotOffset.right+=lw+axisMargin;axis.box={left:surface.width-plotOffset.right,width:lw}}}axis.position=pos;axis.tickLength=tickLength;axis.box.padding=padding;axis.innermost=innermost}function allocateAxisBoxSecondPhase(axis){if(axis.direction=="x"){axis.box.left=plotOffset.left-axis.labelWidth/2;axis.box.width=surface.width-plotOffset.left-plotOffset.right+axis.labelWidth}else{axis.box.top=plotOffset.top-axis.labelHeight/2;axis.box.height=surface.height-plotOffset.bottom-plotOffset.top+axis.labelHeight}}function adjustLayoutForThingsStickingOut(){var minMargin=options.grid.minBorderMargin,axis,i;if(minMargin==null){minMargin=0;for(i=0;i<series.length;++i)minMargin=Math.max(minMargin,2*(series[i].points.radius+series[i].points.lineWidth/2))}var margins={left:minMargin,right:minMargin,top:minMargin,bottom:minMargin};$.each(allAxes(),function(_,axis){if(axis.reserveSpace&&axis.ticks&&axis.ticks.length){if(axis.direction==="x"){margins.left=Math.max(margins.left,axis.labelWidth/2);margins.right=Math.max(margins.right,axis.labelWidth/2)}else{margins.bottom=Math.max(margins.bottom,axis.labelHeight/2);margins.top=Math.max(margins.top,axis.labelHeight/2)}}});plotOffset.left=Math.ceil(Math.max(margins.left,plotOffset.left));plotOffset.right=Math.ceil(Math.max(margins.right,plotOffset.right));plotOffset.top=Math.ceil(Math.max(margins.top,plotOffset.top));plotOffset.bottom=Math.ceil(Math.max(margins.bottom,plotOffset.bottom))}function setupGrid(){var i,axes=allAxes(),showGrid=options.grid.show;for(var a in plotOffset){var margin=options.grid.margin||0;plotOffset[a]=typeof margin=="number"?margin:margin[a]||0}executeHooks(hooks.processOffset,[plotOffset]);for(var a in plotOffset){if(typeof options.grid.borderWidth=="object"){plotOffset[a]+=showGrid?options.grid.borderWidth[a]:0}else{plotOffset[a]+=showGrid?options.grid.borderWidth:0}}$.each(axes,function(_,axis){var axisOpts=axis.options;axis.show=axisOpts.show==null?axis.used:axisOpts.show;axis.reserveSpace=axisOpts.reserveSpace==null?axis.show:axisOpts.reserveSpace;setRange(axis)});if(showGrid){var allocatedAxes=$.grep(axes,function(axis){return axis.show||axis.reserveSpace});$.each(allocatedAxes,function(_,axis){setupTickGeneration(axis);setTicks(axis);snapRangeToTicks(axis,axis.ticks);measureTickLabels(axis)});for(i=allocatedAxes.length-1;i>=0;--i)allocateAxisBoxFirstPhase(allocatedAxes[i]);adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:.01;if(opts.min==null)min-=widen;if(opts.max==null||opts.min!=null)max+=widen}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0)min=0}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0)max=0}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0)noTicks=opts.ticks;else noTicks=.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height);var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else if(norm<7.5){size=5}else{size=10}size*=magn;if(opts.minTickSize!=null&&size<opts.minTickSize){size=opts.minTickSize}axis.delta=delta;axis.tickDecimals=Math.max(0,maxDec!=null?maxDec:dec);axis.tickSize=opts.tickSize||size;if(opts.mode=="time"&&!axis.tickGenerator){throw new Error("Time mode requires the flot.time plugin.")}if(!axis.tickGenerator){axis.tickGenerator=function(axis){var ticks=[],start=floorInBase(axis.min,axis.tickSize),i=0,v=Number.NaN,prev;do{prev=v;v=start+i*axis.tickSize;ticks.push(v);++i}while(v<axis.max&&v!=prev);return ticks};axis.tickFormatter=function(value,axis){var factor=axis.tickDecimals?Math.pow(10,axis.tickDecimals):1;var formatted=""+Math.round(value*factor)/factor;if(axis.tickDecimals!=null){var decimal=formatted.indexOf(".");var precision=decimal==-1?0:formatted.length-decimal-1;if(precision<axis.tickDecimals){return(precision?formatted:formatted+".")+(""+factor).substr(1,axis.tickDecimals-precision)}}return formatted}}if($.isFunction(opts.tickFormatter))axis.tickFormatter=function(v,axis){return""+opts.tickFormatter(v,axis)};if(opts.alignTicksWithAxis!=null){var otherAxis=(axis.direction=="x"?xaxes:yaxes)[opts.alignTicksWithAxis-1];if(otherAxis&&otherAxis.used&&otherAxis!=axis){var niceTicks=axis.tickGenerator(axis);if(niceTicks.length>0){if(opts.min==null)axis.min=Math.min(axis.min,niceTicks[0]);if(opts.max==null&&niceTicks.length>1)axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i<otherAxis.ticks.length;++i){v=(otherAxis.ticks[i].v-otherAxis.min)/(otherAxis.max-otherAxis.min);v=axis.min+v*(axis.max-axis.min);ticks.push(v)}return ticks};if(!axis.mode&&opts.tickDecimals==null){var extraDec=Math.max(0,-Math.floor(Math.log(axis.delta)/Math.LN10)+1),ts=axis.tickGenerator(axis);if(!(ts.length>1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec))))axis.tickDecimals=extraDec}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||typeof oticks=="number"&&oticks>0)ticks=axis.tickGenerator(axis);else if(oticks){if($.isFunction(oticks))ticks=oticks(axis);else ticks=oticks}var i,v;axis.ticks=[];for(i=0;i<ticks.length;++i){var label=null;var t=ticks[i];if(typeof t=="object"){v=+t[0];if(t.length>1)label=t[1]}else v=+t;if(label==null)label=axis.tickFormatter(v,axis);if(!isNaN(v))axis.ticks.push({v:v,label:label})}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null)axis.min=Math.min(axis.min,ticks[0].v);if(axis.options.max==null&&ticks.length>1)axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor)drawBackground();if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;i<series.length;++i){executeHooks(hooks.drawSeries,[ctx,series[i]]);drawSeries(series[i])}executeHooks(hooks.draw,[ctx]);if(grid.show&&grid.aboveData){drawGrid()}surface.render();triggerRedrawOverlay()}function extractRange(ranges,coord){var axis,from,to,key,axes=allAxes();for(var i=0;i<axes.length;++i){axis=axes[i];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1)key=coord+"axis";if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?xaxes[0]:yaxes[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;i<markings.length;++i){var m=markings[i],xrange=extractRange(m,"x"),yrange=extractRange(m,"y");if(xrange.from==null)xrange.from=xrange.axis.min;if(xrange.to==null)xrange.to=xrange.axis.max; +if(yrange.from==null)yrange.from=yrange.axis.min;if(yrange.to==null)yrange.to=yrange.axis.max;if(xrange.to<xrange.axis.min||xrange.from>xrange.axis.max||yrange.to<yrange.axis.min||yrange.from>yrange.axis.max)continue;xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;j<axes.length;++j){var axis=axes[j],box=axis.box,t=axis.tickLength,x,y,xoff,yoff;if(!axis.show||axis.ticks.length==0)continue;ctx.lineWidth=1;if(axis.direction=="x"){x=0;if(t=="full")y=axis.position=="top"?0:plotHeight;else y=box.top-plotOffset.top+(axis.position=="top"?box.height:0)}else{y=0;if(t=="full")x=axis.position=="left"?0:plotWidth;else x=box.left-plotOffset.left+(axis.position=="left"?box.width:0)}if(!axis.innermost){ctx.strokeStyle=axis.options.color;ctx.beginPath();xoff=yoff=0;if(axis.direction=="x")xoff=plotWidth+1;else yoff=plotHeight+1;if(ctx.lineWidth==1){if(axis.direction=="x"){y=Math.floor(y)+.5}else{x=Math.floor(x)+.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff);ctx.stroke()}ctx.strokeStyle=axis.options.tickColor;ctx.beginPath();for(i=0;i<axis.ticks.length;++i){var v=axis.ticks[i].v;xoff=yoff=0;if(isNaN(v)||v<axis.min||v>axis.max||t=="full"&&(typeof bw=="object"&&bw[axis.position]>0||bw>0)&&(v==axis.min||v==axis.max))continue;if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top")yoff=-yoff}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left")xoff=-xoff}if(ctx.lineWidth==1){if(axis.direction=="x")x=Math.floor(x)+.5;else y=Math.floor(y)+.5}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0)return;for(var i=0;i<axis.ticks.length;++i){tick=axis.ticks[i];if(!tick.label||tick.v<axis.min||tick.v>axis.max)continue;if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show)drawSeriesLines(series);if(series.bars.show)drawSeriesBars(series);if(series.points.show)drawSeriesPoints(series)}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i<points.length;i+=ps){var x1=points[i-ps],y1=points[i-ps+1],x2=points[i],y2=points[i+1];if(x1==null||x2==null)continue;if(y1<=y2&&y1<axisy.min){if(y2<axisy.min)continue;x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min){if(y1<axisy.min)continue;x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max){if(y2>axisy.max)continue;x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max){if(y1>axisy.max)continue;x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(x1!=prevx||y1!=prevy)ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset);prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps)break;i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null)continue;if(x1<=x2&&x1<axisx.min){if(x2<axisx.min)continue;y1=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.min}else if(x2<=x1&&x2<axisx.min){if(x1<axisx.min)continue;y2=(axisx.min-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.min}if(x1>=x2&&x1>axisx.max){if(x2>axisx.max)continue;y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else if(x2>=x1&&x2>axisx.max){if(x1>axisx.max)continue;y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}var x1old=x1,x2old=x2;if(y1<=y2&&y1<axisy.min&&y2>=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else if(y2<=y1&&y2<axisy.min&&y1>=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0)plotLine(series.datapoints,0,0,series.xaxis,series.yaxis);ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){var x=points[i],y=points[i+1];if(x==null||x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)continue;ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle")ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false);else symbol(ctx,x,y,radius,shadow);ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0)lw=1e-4;if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(right<left){tmp=right;right=left;left=tmp;drawLeft=true;drawRight=false}}else{drawLeft=drawRight=drawTop=true;drawBottom=false;left=x+barLeft;right=x+barRight;bottom=b;top=y;if(top<bottom){tmp=top;top=bottom;bottom=tmp;drawBottom=true;drawTop=false}}if(right<axisx.min||left>axisx.max||top<axisy.min||bottom>axisy.max)return;if(left<axisx.min){left=axisx.min;drawLeft=false}if(right>axisx.max){right=axisx.max;drawRight=false}if(bottom<axisy.min){bottom=axisy.min;drawBottom=false}if(top>axisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft)c.lineTo(left,top);else c.moveTo(left,top);if(drawTop)c.lineTo(right,top);else c.moveTo(right,top);if(drawRight)c.lineTo(right,bottom);else c.moveTo(right,bottom);if(drawBottom)c.lineTo(left,bottom);else c.moveTo(left,bottom);c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i<points.length;i+=ps){if(points[i]==null)continue;drawBar(points[i],points[i+1],points[i+2],barLeft,barRight,fillStyleCallback,axisx,axisy,ctx,series.bars.horizontal,series.bars.lineWidth)}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineWidth=series.bars.lineWidth;ctx.strokeStyle=series.color;var barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}var fillStyleCallback=series.bars.fill?function(bottom,top){return getFillStyle(series.bars,series.color,bottom,top)}:null;plotBars(series.datapoints,barLeft,barLeft+series.bars.barWidth,fillStyleCallback,series.xaxis,series.yaxis);ctx.restore()}function getFillStyle(filloptions,seriesColor,bottom,top){var fill=filloptions.fill;if(!fill)return null;if(filloptions.fillColor)return getColorOrGradient(filloptions.fillColor,bottom,top,seriesColor);var c=$.color.parse(seriesColor);c.a=typeof fill=="number"?fill:.4;c.normalize();return c.toString()}function insertLegend(){if(options.legend.container!=null){$(options.legend.container).html("")}else{placeholder.find(".legend").remove()}if(!options.legend.show){return}var fragments=[],entries=[],rowStarted=false,lf=options.legend.labelFormatter,s,label;for(var i=0;i<series.length;++i){s=series[i];if(s.label){label=lf?lf(s.label,s):s.label;if(label){entries.push({label:label,color:s.color})}}}if(options.legend.sorted){if($.isFunction(options.legend.sorted)){entries.sort(options.legend.sorted)}else if(options.legend.sorted=="reverse"){entries.reverse()}else{var ascending=options.legend.sorted!="descending";entries.sort(function(a,b){return a.label==b.label?0:a.label<b.label!=ascending?1:-1})}}for(var i=0;i<entries.length;++i){var entry=entries[i];if(i%options.legend.noColumns==0){if(rowStarted)fragments.push("</tr>");fragments.push("<tr>");rowStarted=true}fragments.push('<td class="legendColorBox"><div style="border:1px solid '+options.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+entry.color+';overflow:hidden"></div></div></td>'+'<td class="legendLabel">'+entry.label+"</td>")}if(rowStarted)fragments.push("</tr>");if(fragments.length==0)return;var table='<table style="font-size:smaller;color:'+options.grid.color+'">'+fragments.join("")+"</table>";if(options.legend.container!=null)$(options.legend.container).html(table);else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null)m=[m,m];if(p.charAt(0)=="n")pos+="top:"+(m[1]+plotOffset.top)+"px;";else if(p.charAt(0)=="s")pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;";if(p.charAt(1)=="e")pos+="right:"+(m[0]+plotOffset.right)+"px;";else if(p.charAt(1)=="w")pos+="left:"+(m[0]+plotOffset.left)+"px;";var legend=$('<div class="legend">'+table.replace('style="','style="position:absolute;'+pos+";")+"</div>").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string")c=$.color.parse(c);else c=$.color.extract(legend,"background-color");c.a=1;c=c.toString()}var div=legend.children();$('<div style="position:absolute;width:'+div.width()+"px;height:"+div.height()+"px;"+pos+"background-color:"+c+';"> </div>').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i]))continue;var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform)maxx=Number.MAX_VALUE;if(axisy.options.inverseTransform)maxy=Number.MAX_VALUE;if(s.lines.show||s.points.show){for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1];if(x==null)continue;if(x-mx>maxx||x-mx<-maxx||y-my>maxy||y-my<-maxy)continue;var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist<smallestDistance){smallestDistance=dist;item=[i,j/ps]}}}if(s.bars.show&&!item){var barLeft,barRight;switch(s.bars.align){case"left":barLeft=0;break;case"right":barLeft=-s.bars.barWidth;break;default:barLeft=-s.bars.barWidth/2}barRight=barLeft+s.bars.barWidth;for(j=0;j<points.length;j+=ps){var x=points[j],y=points[j+1],b=points[j+2];if(x==null)continue;if(series[i].bars.horizontal?mx<=Math.max(b,x)&&mx>=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight:mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))item=[i,j/ps]}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return s["hoverable"]!=false})}function onMouseLeave(e){if(options.grid.hoverable)triggerClickHoverEvent("plothover",e,function(s){return false})}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s["clickable"]!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series&&h.point[0]==item.datapoint[0]&&h.point[1]==item.datapoint[1]))unhighlight(h.series,h.point)}if(item)highlight(item.series,item.datapoint,eventname)}placeholder.trigger(eventname,[pos,item])}function triggerRedrawOverlay(){var t=options.interaction.redrawOverlayInterval;if(t==-1){drawOverlay();return}if(!redrawTimeout)redrawTimeout=setTimeout(drawOverlay,t)}function drawOverlay(){redrawTimeout=null;octx.save();overlay.clear();octx.translate(plotOffset.left,plotOffset.top);var i,hi;for(i=0;i<highlights.length;++i){hi=highlights[i];if(hi.series.bars.show)drawBarHighlight(hi.series,hi.point);else drawPointHighlight(hi.series,hi.point)}octx.restore();executeHooks(hooks.drawOverlay,[octx])}function highlight(s,point,auto){if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i==-1){highlights.push({series:s,point:point,auto:auto});triggerRedrawOverlay()}else if(!auto)highlights[i].auto=false}function unhighlight(s,point){if(s==null&&point==null){highlights=[];triggerRedrawOverlay();return}if(typeof s=="number")s=series[s];if(typeof point=="number"){var ps=s.datapoints.pointsize;point=s.datapoints.points.slice(ps*point,ps*(point+1))}var i=indexOfHighlight(s,point);if(i!=-1){highlights.splice(i,1);triggerRedrawOverlay()}}function indexOfHighlight(s,p){for(var i=0;i<highlights.length;++i){var h=highlights[i];if(h.series==s&&h.point[0]==p[0]&&h.point[1]==p[1])return i}return-1}function drawPointHighlight(series,point){var x=point[0],y=point[1],axisx=series.xaxis,axisy=series.yaxis,highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString();if(x<axisx.min||x>axisx.max||y<axisy.min||y>axisy.max)return;var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle")octx.arc(x,y,radius,0,2*Math.PI,false);else series.points.symbol(octx,x,y,radius,false);octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=typeof series.highlightColor==="string"?series.highlightColor:$.color.parse(series.color).scale("a",.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string")return spec;else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i<l;++i){var c=spec.colors[i];if(typeof c!="string"){var co=$.color.parse(defaultColor);if(c.brightness!=null)co=co.scale("rgb",c.brightness);if(c.opacity!=null)co.a*=c.opacity;c=co.toString()}gradient.addColorStop(i/(l-1),c)}return gradient}}}$.plot=function(placeholder,data,options){var plot=new Plot($(placeholder),data,options,$.plot.plugins);return plot};$.plot.version="0.8.3";$.plot.plugins=[];$.fn.plot=function(data,options){return this.each(function(){$.plot(this,data,options)})};function floorInBase(n,base){return base*Math.floor(n/base)}})(jQuery); \ No newline at end of file diff --git a/plugins/flot-chart/jquery.flot.orderBars.min.js b/plugins/flot-chart/jquery.flot.orderBars.min.js new file mode 100644 index 0000000..a4a48b6 --- /dev/null +++ b/plugins/flot-chart/jquery.flot.orderBars.min.js @@ -0,0 +1,186 @@ +/* + * Flot plugin to order bars side by side. + * + * Released under the MIT license by Benjamin BUFFET, 20-Sep-2010. + * + * This plugin is an alpha version. + * + * To activate the plugin you must specify the parameter "order" for the specific serie : + * + * $.plot($("#placeholder"), [{ data: [ ... ], bars :{ order = null or integer }]) + * + * If 2 series have the same order param, they are ordered by the position in the array; + * + * The plugin adjust the point by adding a value depanding of the barwidth + * Exemple for 3 series (barwidth : 0.1) : + * + * first bar décalage : -0.15 + * second bar décalage : -0.05 + * third bar décalage : 0.05 + * + */ + +(function($){ + function init(plot){ + var orderedBarSeries; + var nbOfBarsToOrder; + var borderWidth; + var borderWidthInXabsWidth; + var pixelInXWidthEquivalent = 1; + var isHorizontal = false; + + /* + * This method add shift to x values + */ + function reOrderBars(plot, serie, datapoints){ + var shiftedPoints = null; + + if(serieNeedToBeReordered(serie)){ + checkIfGraphIsHorizontal(serie); + calculPixel2XWidthConvert(plot); + retrieveBarSeries(plot); + calculBorderAndBarWidth(serie); + + if(nbOfBarsToOrder >= 2){ + var position = findPosition(serie); + var decallage = 0; + + var centerBarShift = calculCenterBarShift(); + + if (isBarAtLeftOfCenter(position)){ + decallage = -1*(sumWidth(orderedBarSeries,position-1,Math.floor(nbOfBarsToOrder / 2)-1)) - centerBarShift; + }else{ + decallage = sumWidth(orderedBarSeries,Math.ceil(nbOfBarsToOrder / 2),position-2) + centerBarShift + borderWidthInXabsWidth*2; + } + + shiftedPoints = shiftPoints(datapoints,serie,decallage); + datapoints.points = shiftedPoints; + } + } + return shiftedPoints; + } + + function serieNeedToBeReordered(serie){ + return serie.bars != null + && serie.bars.show + && serie.bars.order != null; + } + + function calculPixel2XWidthConvert(plot){ + var gridDimSize = isHorizontal ? plot.getPlaceholder().innerHeight() : plot.getPlaceholder().innerWidth(); + var minMaxValues = isHorizontal ? getAxeMinMaxValues(plot.getData(),1) : getAxeMinMaxValues(plot.getData(),0); + var AxeSize = minMaxValues[1] - minMaxValues[0]; + pixelInXWidthEquivalent = AxeSize / gridDimSize; + } + + function getAxeMinMaxValues(series,AxeIdx){ + var minMaxValues = new Array(); + for(var i = 0; i < series.length; i++){ + minMaxValues[0] = series[i].data[0][AxeIdx]; + minMaxValues[1] = series[i].data[series[i].data.length - 1][AxeIdx]; + } + return minMaxValues; + } + + function retrieveBarSeries(plot){ + orderedBarSeries = findOthersBarsToReOrders(plot.getData()); + nbOfBarsToOrder = orderedBarSeries.length; + } + + function findOthersBarsToReOrders(series){ + var retSeries = new Array(); + + for(var i = 0; i < series.length; i++){ + if(series[i].bars.order != null && series[i].bars.show){ + retSeries.push(series[i]); + } + } + + return retSeries.sort(sortByOrder); + } + + function sortByOrder(serie1,serie2){ + var x = serie1.bars.order; + var y = serie2.bars.order; + return ((x < y) ? -1 : ((x > y) ? 1 : 0)); + } + + function calculBorderAndBarWidth(serie){ + borderWidth = serie.bars.lineWidth ? serie.bars.lineWidth : 2; + borderWidthInXabsWidth = borderWidth * pixelInXWidthEquivalent; + } + + function checkIfGraphIsHorizontal(serie){ + if(serie.bars.horizontal){ + isHorizontal = true; + } + } + + function findPosition(serie){ + var pos = 0 + for (var i = 0; i < orderedBarSeries.length; ++i) { + if (serie == orderedBarSeries[i]){ + pos = i; + break; + } + } + + return pos+1; + } + + function calculCenterBarShift(){ + var width = 0; + + if(nbOfBarsToOrder%2 != 0) + width = (orderedBarSeries[Math.ceil(nbOfBarsToOrder / 2)].bars.barWidth)/2; + + return width; + } + + function isBarAtLeftOfCenter(position){ + return position <= Math.ceil(nbOfBarsToOrder / 2); + } + + function sumWidth(series,start,end){ + var totalWidth = 0; + + for(var i = start; i <= end; i++){ + totalWidth += series[i].bars.barWidth+borderWidthInXabsWidth*2; + } + + return totalWidth; + } + + function shiftPoints(datapoints,serie,dx){ + var ps = datapoints.pointsize; + var points = datapoints.points; + var j = 0; + for(var i = isHorizontal ? 1 : 0;i < points.length; i += ps){ + points[i] += dx; + //Adding the new x value in the serie to be abble to display the right tooltip value, + //using the index 3 to not overide the third index. + serie.data[j][3] = points[i]; + j++; + } + + return points; + } + + plot.hooks.processDatapoints.push(reOrderBars); + + } + + var options = { + series : { + bars: {order: null} // or number/string + } + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "orderBars", + version: "0.2" + }); + +})(jQuery); \ No newline at end of file diff --git a/plugins/flot-chart/jquery.flot.pie.js b/plugins/flot-chart/jquery.flot.pie.js new file mode 100644 index 0000000..9c19db9 --- /dev/null +++ b/plugins/flot-chart/jquery.flot.pie.js @@ -0,0 +1,820 @@ +/* Flot plugin for rendering pie charts. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes that each series has a single data value, and that each +value is a positive integer or zero. Negative numbers don't make sense for a +pie chart, and have unpredictable results. The values do NOT need to be +passed in as percentages; the plugin will calculate the total and per-slice +percentages internally. + +* Created by Brian Medendorp + +* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars + +The plugin supports these options: + + series: { + pie: { + show: true/false + radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto' + innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect + startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result + tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show) + offset: { + top: integer value to move the pie up or down + left: integer value to move the pie left or right, or 'auto' + }, + stroke: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF') + width: integer pixel width of the stroke + }, + label: { + show: true/false, or 'auto' + formatter: a user-defined function that modifies the text/style of the label text + radius: 0-1 for percentage of fullsize, or a specified pixel length + background: { + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000') + opacity: 0-1 + }, + threshold: 0-1 for the percentage value at which to hide labels (if they're too small) + }, + combine: { + threshold: 0-1 for the percentage value at which to combine slices (if they're too small) + color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined + label: any text value of what the combined slice should be labeled + } + highlight: { + opacity: 0-1 + } + } + } + +More detail and specific examples can be found in the included HTML file. + +*/ + +(function($) { + + // Maximum redraw attempts when fitting labels within the plot + + var REDRAW_ATTEMPTS = 10; + + // Factor by which to shrink the pie when fitting labels within the plot + + var REDRAW_SHRINK = 0.95; + + function init(plot) { + + var canvas = null, + target = null, + options = null, + maxRadius = null, + centerLeft = null, + centerTop = null, + processed = false, + ctx = null; + + // interactive variables + + var highlights = []; + + // add hook to determine if pie plugin in enabled, and then perform necessary operations + + plot.hooks.processOptions.push(function(plot, options) { + if (options.series.pie.show) { + + options.grid.show = false; + + // set labels.show + + if (options.series.pie.label.show == "auto") { + if (options.legend.show) { + options.series.pie.label.show = false; + } else { + options.series.pie.label.show = true; + } + } + + // set radius + + if (options.series.pie.radius == "auto") { + if (options.series.pie.label.show) { + options.series.pie.radius = 3/4; + } else { + options.series.pie.radius = 1; + } + } + + // ensure sane tilt + + if (options.series.pie.tilt > 1) { + options.series.pie.tilt = 1; + } else if (options.series.pie.tilt < 0) { + options.series.pie.tilt = 0; + } + } + }); + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var options = plot.getOptions(); + if (options.series.pie.show) { + if (options.grid.hoverable) { + eventHolder.unbind("mousemove").mousemove(onMouseMove); + } + if (options.grid.clickable) { + eventHolder.unbind("click").click(onClick); + } + } + }); + + plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) { + var options = plot.getOptions(); + if (options.series.pie.show) { + processDatapoints(plot, series, data, datapoints); + } + }); + + plot.hooks.drawOverlay.push(function(plot, octx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + drawOverlay(plot, octx); + } + }); + + plot.hooks.draw.push(function(plot, newCtx) { + var options = plot.getOptions(); + if (options.series.pie.show) { + draw(plot, newCtx); + } + }); + + function processDatapoints(plot, series, datapoints) { + if (!processed) { + processed = true; + canvas = plot.getCanvas(); + target = $(canvas).parent(); + options = plot.getOptions(); + plot.setData(combine(plot.getData())); + } + } + + function combine(data) { + + var total = 0, + combined = 0, + numCombined = 0, + color = options.series.pie.combine.color, + newdata = []; + + // Fix up the raw data from Flot, ensuring the data is numeric + + for (var i = 0; i < data.length; ++i) { + + var value = data[i].data; + + // If the data is an array, we'll assume that it's a standard + // Flot x-y pair, and are concerned only with the second value. + + // Note how we use the original array, rather than creating a + // new one; this is more efficient and preserves any extra data + // that the user may have stored in higher indexes. + + if ($.isArray(value) && value.length == 1) { + value = value[0]; + } + + if ($.isArray(value)) { + // Equivalent to $.isNumeric() but compatible with jQuery < 1.7 + if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) { + value[1] = +value[1]; + } else { + value[1] = 0; + } + } else if (!isNaN(parseFloat(value)) && isFinite(value)) { + value = [1, +value]; + } else { + value = [1, 0]; + } + + data[i].data = [value]; + } + + // Sum up all the slices, so we can calculate percentages for each + + for (var i = 0; i < data.length; ++i) { + total += data[i].data[0][1]; + } + + // Count the number of slices with percentages below the combine + // threshold; if it turns out to be just one, we won't combine. + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (value / total <= options.series.pie.combine.threshold) { + combined += value; + numCombined++; + if (!color) { + color = data[i].color; + } + } + } + + for (var i = 0; i < data.length; ++i) { + var value = data[i].data[0][1]; + if (numCombined < 2 || value / total > options.series.pie.combine.threshold) { + newdata.push( + $.extend(data[i], { /* extend to allow keeping all other original data values + and using them e.g. in labelFormatter. */ + data: [[1, value]], + color: data[i].color, + label: data[i].label, + angle: value * Math.PI * 2 / total, + percent: value / (total / 100) + }) + ); + } + } + + if (numCombined > 1) { + newdata.push({ + data: [[1, combined]], + color: color, + label: options.series.pie.combine.label, + angle: combined * Math.PI * 2 / total, + percent: combined / (total / 100) + }); + } + + return newdata; + } + + function draw(plot, newCtx) { + + if (!target) { + return; // if no series were passed + } + + var canvasWidth = plot.getPlaceholder().width(), + canvasHeight = plot.getPlaceholder().height(), + legendWidth = target.children().filter(".legend").children().width() || 0; + + ctx = newCtx; + + // WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE! + + // When combining smaller slices into an 'other' slice, we need to + // add a new series. Since Flot gives plugins no way to modify the + // list of series, the pie plugin uses a hack where the first call + // to processDatapoints results in a call to setData with the new + // list of series, then subsequent processDatapoints do nothing. + + // The plugin-global 'processed' flag is used to control this hack; + // it starts out false, and is set to true after the first call to + // processDatapoints. + + // Unfortunately this turns future setData calls into no-ops; they + // call processDatapoints, the flag is true, and nothing happens. + + // To fix this we'll set the flag back to false here in draw, when + // all series have been processed, so the next sequence of calls to + // processDatapoints once again starts out with a slice-combine. + // This is really a hack; in 0.9 we need to give plugins a proper + // way to modify series before any processing begins. + + processed = false; + + // calculate maximum radius and center point + + maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2; + centerTop = canvasHeight / 2 + options.series.pie.offset.top; + centerLeft = canvasWidth / 2; + + if (options.series.pie.offset.left == "auto") { + if (options.legend.position.match("w")) { + centerLeft += legendWidth / 2; + } else { + centerLeft -= legendWidth / 2; + } + if (centerLeft < maxRadius) { + centerLeft = maxRadius; + } else if (centerLeft > canvasWidth - maxRadius) { + centerLeft = canvasWidth - maxRadius; + } + } else { + centerLeft += options.series.pie.offset.left; + } + + var slices = plot.getData(), + attempts = 0; + + // Keep shrinking the pie's radius until drawPie returns true, + // indicating that all the labels fit, or we try too many times. + + do { + if (attempts > 0) { + maxRadius *= REDRAW_SHRINK; + } + attempts += 1; + clear(); + if (options.series.pie.tilt <= 0.8) { + drawShadow(); + } + } while (!drawPie() && attempts < REDRAW_ATTEMPTS) + + if (attempts >= REDRAW_ATTEMPTS) { + clear(); + target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>"); + } + + if (plot.setSeries && plot.insertLegend) { + plot.setSeries(slices); + plot.insertLegend(); + } + + // we're actually done at this point, just defining internal functions at this point + + function clear() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + target.children().filter(".pieLabel, .pieLabelBackground").remove(); + } + + function drawShadow() { + + var shadowLeft = options.series.pie.shadow.left; + var shadowTop = options.series.pie.shadow.top; + var edge = 10; + var alpha = options.series.pie.shadow.alpha; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) { + return; // shadow would be outside canvas, so don't draw it + } + + ctx.save(); + ctx.translate(shadowLeft,shadowTop); + ctx.globalAlpha = alpha; + ctx.fillStyle = "#000"; + + // center and rotate to starting position + + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + + //radius -= edge; + + for (var i = 1; i <= edge; i++) { + ctx.beginPath(); + ctx.arc(0, 0, radius, 0, Math.PI * 2, false); + ctx.fill(); + radius -= i; + } + + ctx.restore(); + } + + function drawPie() { + + var startAngle = Math.PI * options.series.pie.startAngle; + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + // center and rotate to starting position + + ctx.save(); + ctx.translate(centerLeft,centerTop); + ctx.scale(1, options.series.pie.tilt); + //ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera + + // draw slices + + ctx.save(); + var currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + slices[i].startAngle = currentAngle; + drawSlice(slices[i].angle, slices[i].color, true); + } + ctx.restore(); + + // draw slice outlines + + if (options.series.pie.stroke.width > 0) { + ctx.save(); + ctx.lineWidth = options.series.pie.stroke.width; + currentAngle = startAngle; + for (var i = 0; i < slices.length; ++i) { + drawSlice(slices[i].angle, options.series.pie.stroke.color, false); + } + ctx.restore(); + } + + // draw donut hole + + drawDonutHole(ctx); + + ctx.restore(); + + // Draw the labels, returning true if they fit within the plot + + if (options.series.pie.label.show) { + return drawLabels(); + } else return true; + + function drawSlice(angle, color, fill) { + + if (angle <= 0 || isNaN(angle)) { + return; + } + + if (fill) { + ctx.fillStyle = color; + } else { + ctx.strokeStyle = color; + ctx.lineJoin = "round"; + } + + ctx.beginPath(); + if (Math.abs(angle - Math.PI * 2) > 0.000000001) { + ctx.moveTo(0, 0); // Center of the pie + } + + //ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera + ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false); + ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false); + ctx.closePath(); + //ctx.rotate(angle); // This doesn't work properly in Opera + currentAngle += angle; + + if (fill) { + ctx.fill(); + } else { + ctx.stroke(); + } + } + + function drawLabels() { + + var currentAngle = startAngle; + var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius; + + for (var i = 0; i < slices.length; ++i) { + if (slices[i].percent >= options.series.pie.label.threshold * 100) { + if (!drawLabel(slices[i], currentAngle, i)) { + return false; + } + } + currentAngle += slices[i].angle; + } + + return true; + + function drawLabel(slice, startAngle, index) { + + if (slice.data[0][1] == 0) { + return true; + } + + // format label text + + var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter; + + if (lf) { + text = lf(slice.label, slice); + } else { + text = slice.label; + } + + if (plf) { + text = plf(text, slice); + } + + var halfAngle = ((startAngle + slice.angle) + startAngle) / 2; + var x = centerLeft + Math.round(Math.cos(halfAngle) * radius); + var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt; + + var html = "<span class='pieLabel' id='pieLabel" + index + "' style='position:absolute;top:" + y + "px;left:" + x + "px;'>" + text + "</span>"; + target.append(html); + + var label = target.children("#pieLabel" + index); + var labelTop = (y - label.height() / 2); + var labelLeft = (x - label.width() / 2); + + label.css("top", labelTop); + label.css("left", labelLeft); + + // check to make sure that the label is not outside the canvas + + if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) { + return false; + } + + if (options.series.pie.label.background.opacity != 0) { + + // put in the transparent background separately to avoid blended labels and label boxes + + var c = options.series.pie.label.background.color; + + if (c == null) { + c = slice.color; + } + + var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;"; + $("<div class='pieLabelBackground' style='position:absolute;width:" + label.width() + "px;height:" + label.height() + "px;" + pos + "background-color:" + c + ";'></div>") + .css("opacity", options.series.pie.label.background.opacity) + .insertBefore(label); + } + + return true; + } // end individual label function + } // end drawLabels function + } // end drawPie function + } // end draw function + + // Placed here because it needs to be accessed from multiple locations + + function drawDonutHole(layer) { + if (options.series.pie.innerRadius > 0) { + + // subtract the center + + layer.save(); + var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius; + layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color + layer.beginPath(); + layer.fillStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.fill(); + layer.closePath(); + layer.restore(); + + // add inner stroke + + layer.save(); + layer.beginPath(); + layer.strokeStyle = options.series.pie.stroke.color; + layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false); + layer.stroke(); + layer.closePath(); + layer.restore(); + + // TODO: add extra shadow inside hole (with a mask) if the pie is tilted. + } + } + + //-- Additional Interactive related functions -- + + function isPointInPoly(poly, pt) { + for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) + ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1])) + && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0]) + && (c = !c); + return c; + } + + function findNearbySlice(mouseX, mouseY) { + + var slices = plot.getData(), + options = plot.getOptions(), + radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius, + x, y; + + for (var i = 0; i < slices.length; ++i) { + + var s = slices[i]; + + if (s.pie.show) { + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(0, 0); // Center of the pie + //ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here. + ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false); + ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false); + ctx.closePath(); + x = mouseX - centerLeft; + y = mouseY - centerTop; + + if (ctx.isPointInPath) { + if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } else { + + // excanvas for IE doesn;t support isPointInPath, this is a workaround. + + var p1X = radius * Math.cos(s.startAngle), + p1Y = radius * Math.sin(s.startAngle), + p2X = radius * Math.cos(s.startAngle + s.angle / 4), + p2Y = radius * Math.sin(s.startAngle + s.angle / 4), + p3X = radius * Math.cos(s.startAngle + s.angle / 2), + p3Y = radius * Math.sin(s.startAngle + s.angle / 2), + p4X = radius * Math.cos(s.startAngle + s.angle / 1.5), + p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5), + p5X = radius * Math.cos(s.startAngle + s.angle), + p5Y = radius * Math.sin(s.startAngle + s.angle), + arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]], + arrPoint = [x, y]; + + // TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt? + + if (isPointInPoly(arrPoly, arrPoint)) { + ctx.restore(); + return { + datapoint: [s.percent, s.data], + dataIndex: 0, + series: s, + seriesIndex: i + }; + } + } + + ctx.restore(); + } + } + + return null; + } + + function onMouseMove(e) { + triggerClickHoverEvent("plothover", e); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e); + } + + // trigger click or hover event (they send the same parameters so we share their code) + + function triggerClickHoverEvent(eventname, e) { + + var offset = plot.offset(); + var canvasX = parseInt(e.pageX - offset.left); + var canvasY = parseInt(e.pageY - offset.top); + var item = findNearbySlice(canvasX, canvasY); + + if (options.grid.autoHighlight) { + + // clear auto-highlights + + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && !(item && h.series == item.series)) { + unhighlight(h.series); + } + } + } + + // highlight the slice + + if (item) { + highlight(item.series, eventname); + } + + // trigger any hover bind events + + var pos = { pageX: e.pageX, pageY: e.pageY }; + target.trigger(eventname, [pos, item]); + } + + function highlight(s, auto) { + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i == -1) { + highlights.push({ series: s, auto: auto }); + plot.triggerRedrawOverlay(); + } else if (!auto) { + highlights[i].auto = false; + } + } + + function unhighlight(s) { + if (s == null) { + highlights = []; + plot.triggerRedrawOverlay(); + } + + //if (typeof s == "number") { + // s = series[s]; + //} + + var i = indexOfHighlight(s); + + if (i != -1) { + highlights.splice(i, 1); + plot.triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s) + return i; + } + return -1; + } + + function drawOverlay(plot, octx) { + + var options = plot.getOptions(); + + var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius; + + octx.save(); + octx.translate(centerLeft, centerTop); + octx.scale(1, options.series.pie.tilt); + + for (var i = 0; i < highlights.length; ++i) { + drawHighlight(highlights[i].series); + } + + drawDonutHole(octx); + + octx.restore(); + + function drawHighlight(series) { + + if (series.angle <= 0 || isNaN(series.angle)) { + return; + } + + //octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString(); + octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor + octx.beginPath(); + if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) { + octx.moveTo(0, 0); // Center of the pie + } + octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false); + octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false); + octx.closePath(); + octx.fill(); + } + } + } // end init (plugin body) + + // define pie specific options and their default values + + var options = { + series: { + pie: { + show: false, + radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value) + innerRadius: 0, /* for donut */ + startAngle: 3/2, + tilt: 1, + shadow: { + left: 5, // shadow left offset + top: 15, // shadow top offset + alpha: 0.02 // shadow alpha + }, + offset: { + top: 0, + left: "auto" + }, + stroke: { + color: "#fff", + width: 1 + }, + label: { + show: "auto", + formatter: function(label, slice) { + return "<div style='font-size:x-small;text-align:center;padding:2px;color:" + slice.color + ";'>" + label + "<br/>" + Math.round(slice.percent) + "%</div>"; + }, // formatter function + radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value) + background: { + color: null, + opacity: 0 + }, + threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow) + }, + combine: { + threshold: -1, // percentage at which to combine little slices into one larger slice + color: null, // color to give the new slice (auto-generated if null) + label: "Other" // label to give the new slice + }, + highlight: { + //color: "#fff", // will add this functionality once parseColor is available + opacity: 0.5 + } + } + } + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: "pie", + version: "1.1" + }); + +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.resize.js b/plugins/flot-chart/jquery.flot.resize.js new file mode 100644 index 0000000..8a626dd --- /dev/null +++ b/plugins/flot-chart/jquery.flot.resize.js @@ -0,0 +1,59 @@ +/* Flot plugin for automatically redrawing plots as the placeholder resizes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +It works by listening for changes on the placeholder div (through the jQuery +resize event plugin) - if the size changes, it will redraw the plot. + +There are no options. If you need to disable the plugin for some plots, you +can just fix the size of their placeholders. + +*/ + +/* Inline dependency: + * jQuery resize event - v1.1 - 3/14/2010 + * http://benalman.com/projects/jquery-resize-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); + +(function ($) { + var options = { }; // no options + + function init(plot) { + function onResize() { + var placeholder = plot.getPlaceholder(); + + // somebody might have hidden us and we can't plot + // when we don't have the dimensions + if (placeholder.width() == 0 || placeholder.height() == 0) + return; + + plot.resize(); + plot.setupGrid(); + plot.draw(); + } + + function bindEvents(plot, eventHolder) { + plot.getPlaceholder().resize(onResize); + } + + function shutdown(plot, eventHolder) { + plot.getPlaceholder().unbind("resize", onResize); + } + + plot.hooks.bindEvents.push(bindEvents); + plot.hooks.shutdown.push(shutdown); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'resize', + version: '1.0' + }); +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.selection.js b/plugins/flot-chart/jquery.flot.selection.js new file mode 100644 index 0000000..d3c20fa --- /dev/null +++ b/plugins/flot-chart/jquery.flot.selection.js @@ -0,0 +1,360 @@ +/* Flot plugin for selecting regions of a plot. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin supports these options: + +selection: { + mode: null or "x" or "y" or "xy", + color: color, + shape: "round" or "miter" or "bevel", + minSize: number of pixels +} + +Selection support is enabled by setting the mode to one of "x", "y" or "xy". +In "x" mode, the user will only be able to specify the x range, similarly for +"y" mode. For "xy", the selection becomes a rectangle where both ranges can be +specified. "color" is color of the selection (if you need to change the color +later on, you can get to it with plot.getOptions().selection.color). "shape" +is the shape of the corners of the selection. + +"minSize" is the minimum size a selection can be in pixels. This value can +be customized to determine the smallest size a selection can be and still +have the selection rectangle be displayed. When customizing this value, the +fact that it refers to pixels, not axis units must be taken into account. +Thus, for example, if there is a bar graph in time mode with BarWidth set to 1 +minute, setting "minSize" to 1 will not make the minimum selection size 1 +minute, but rather 1 pixel. Note also that setting "minSize" to 0 will prevent +"plotunselected" events from being fired when the user clicks the mouse without +dragging. + +When selection support is enabled, a "plotselected" event will be emitted on +the DOM element you passed into the plot function. The event handler gets a +parameter with the ranges selected on the axes, like this: + + placeholder.bind( "plotselected", function( event, ranges ) { + alert("You selected " + ranges.xaxis.from + " to " + ranges.xaxis.to) + // similar for yaxis - with multiple axes, the extra ones are in + // x2axis, x3axis, ... + }); + +The "plotselected" event is only fired when the user has finished making the +selection. A "plotselecting" event is fired during the process with the same +parameters as the "plotselected" event, in case you want to know what's +happening while it's happening, + +A "plotunselected" event with no arguments is emitted when the user clicks the +mouse to remove the selection. As stated above, setting "minSize" to 0 will +destroy this behavior. + +The plugin allso adds the following methods to the plot object: + +- setSelection( ranges, preventEvent ) + + Set the selection rectangle. The passed in ranges is on the same form as + returned in the "plotselected" event. If the selection mode is "x", you + should put in either an xaxis range, if the mode is "y" you need to put in + an yaxis range and both xaxis and yaxis if the selection mode is "xy", like + this: + + setSelection({ xaxis: { from: 0, to: 10 }, yaxis: { from: 40, to: 60 } }); + + setSelection will trigger the "plotselected" event when called. If you don't + want that to happen, e.g. if you're inside a "plotselected" handler, pass + true as the second parameter. If you are using multiple axes, you can + specify the ranges on any of those, e.g. as x2axis/x3axis/... instead of + xaxis, the plugin picks the first one it sees. + +- clearSelection( preventEvent ) + + Clear the selection rectangle. Pass in true to avoid getting a + "plotunselected" event. + +- getSelection() + + Returns the current selection in the same format as the "plotselected" + event. If there's currently no selection, the function returns null. + +*/ + +(function ($) { + function init(plot) { + var selection = { + first: { x: -1, y: -1}, second: { x: -1, y: -1}, + show: false, + active: false + }; + + // FIXME: The drag handling implemented here should be + // abstracted out, there's some similar code from a library in + // the navigation plugin, this should be massaged a bit to fit + // the Flot cases here better and reused. Doing this would + // make this plugin much slimmer. + var savedhandlers = {}; + + var mouseUpHandler = null; + + function onMouseMove(e) { + if (selection.active) { + updateSelection(e); + + plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]); + } + } + + function onMouseDown(e) { + if (e.which != 1) // only accept left-click + return; + + // cancel out any text selections + document.body.focus(); + + // prevent text selection and drag in old-school browsers + if (document.onselectstart !== undefined && savedhandlers.onselectstart == null) { + savedhandlers.onselectstart = document.onselectstart; + document.onselectstart = function () { return false; }; + } + if (document.ondrag !== undefined && savedhandlers.ondrag == null) { + savedhandlers.ondrag = document.ondrag; + document.ondrag = function () { return false; }; + } + + setSelectionPos(selection.first, e); + + selection.active = true; + + // this is a bit silly, but we have to use a closure to be + // able to whack the same handler again + mouseUpHandler = function (e) { onMouseUp(e); }; + + $(document).one("mouseup", mouseUpHandler); + } + + function onMouseUp(e) { + mouseUpHandler = null; + + // revert drag stuff for old-school browsers + if (document.onselectstart !== undefined) + document.onselectstart = savedhandlers.onselectstart; + if (document.ondrag !== undefined) + document.ondrag = savedhandlers.ondrag; + + // no more dragging + selection.active = false; + updateSelection(e); + + if (selectionIsSane()) + triggerSelectedEvent(); + else { + // this counts as a clear + plot.getPlaceholder().trigger("plotunselected", [ ]); + plot.getPlaceholder().trigger("plotselecting", [ null ]); + } + + return false; + } + + function getSelection() { + if (!selectionIsSane()) + return null; + + if (!selection.show) return null; + + var r = {}, c1 = selection.first, c2 = selection.second; + $.each(plot.getAxes(), function (name, axis) { + if (axis.used) { + var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]); + r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) }; + } + }); + return r; + } + + function triggerSelectedEvent() { + var r = getSelection(); + + plot.getPlaceholder().trigger("plotselected", [ r ]); + + // backwards-compat stuff, to be removed in future + if (r.xaxis && r.yaxis) + plot.getPlaceholder().trigger("selected", [ { x1: r.xaxis.from, y1: r.yaxis.from, x2: r.xaxis.to, y2: r.yaxis.to } ]); + } + + function clamp(min, value, max) { + return value < min ? min: (value > max ? max: value); + } + + function setSelectionPos(pos, e) { + var o = plot.getOptions(); + var offset = plot.getPlaceholder().offset(); + var plotOffset = plot.getPlotOffset(); + pos.x = clamp(0, e.pageX - offset.left - plotOffset.left, plot.width()); + pos.y = clamp(0, e.pageY - offset.top - plotOffset.top, plot.height()); + + if (o.selection.mode == "y") + pos.x = pos == selection.first ? 0 : plot.width(); + + if (o.selection.mode == "x") + pos.y = pos == selection.first ? 0 : plot.height(); + } + + function updateSelection(pos) { + if (pos.pageX == null) + return; + + setSelectionPos(selection.second, pos); + if (selectionIsSane()) { + selection.show = true; + plot.triggerRedrawOverlay(); + } + else + clearSelection(true); + } + + function clearSelection(preventEvent) { + if (selection.show) { + selection.show = false; + plot.triggerRedrawOverlay(); + if (!preventEvent) + plot.getPlaceholder().trigger("plotunselected", [ ]); + } + } + + // function taken from markings support in Flot + function extractRange(ranges, coord) { + var axis, from, to, key, axes = plot.getAxes(); + + for (var k in axes) { + axis = axes[k]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? plot.getXAxes()[0] : plot.getYAxes()[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function setSelection(ranges, preventEvent) { + var axis, range, o = plot.getOptions(); + + if (o.selection.mode == "y") { + selection.first.x = 0; + selection.second.x = plot.width(); + } + else { + range = extractRange(ranges, "x"); + + selection.first.x = range.axis.p2c(range.from); + selection.second.x = range.axis.p2c(range.to); + } + + if (o.selection.mode == "x") { + selection.first.y = 0; + selection.second.y = plot.height(); + } + else { + range = extractRange(ranges, "y"); + + selection.first.y = range.axis.p2c(range.from); + selection.second.y = range.axis.p2c(range.to); + } + + selection.show = true; + plot.triggerRedrawOverlay(); + if (!preventEvent && selectionIsSane()) + triggerSelectedEvent(); + } + + function selectionIsSane() { + var minSize = plot.getOptions().selection.minSize; + return Math.abs(selection.second.x - selection.first.x) >= minSize && + Math.abs(selection.second.y - selection.first.y) >= minSize; + } + + plot.clearSelection = clearSelection; + plot.setSelection = setSelection; + plot.getSelection = getSelection; + + plot.hooks.bindEvents.push(function(plot, eventHolder) { + var o = plot.getOptions(); + if (o.selection.mode != null) { + eventHolder.mousemove(onMouseMove); + eventHolder.mousedown(onMouseDown); + } + }); + + + plot.hooks.drawOverlay.push(function (plot, ctx) { + // draw selection + if (selection.show && selectionIsSane()) { + var plotOffset = plot.getPlotOffset(); + var o = plot.getOptions(); + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var c = $.color.parse(o.selection.color); + + ctx.strokeStyle = c.scale('a', 0.8).toString(); + ctx.lineWidth = 1; + ctx.lineJoin = o.selection.shape; + ctx.fillStyle = c.scale('a', 0.4).toString(); + + var x = Math.min(selection.first.x, selection.second.x) + 0.5, + y = Math.min(selection.first.y, selection.second.y) + 0.5, + w = Math.abs(selection.second.x - selection.first.x) - 1, + h = Math.abs(selection.second.y - selection.first.y) - 1; + + ctx.fillRect(x, y, w, h); + ctx.strokeRect(x, y, w, h); + + ctx.restore(); + } + }); + + plot.hooks.shutdown.push(function (plot, eventHolder) { + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mousedown", onMouseDown); + + if (mouseUpHandler) + $(document).unbind("mouseup", mouseUpHandler); + }); + + } + + $.plot.plugins.push({ + init: init, + options: { + selection: { + mode: null, // one of null, "x", "y" or "xy" + color: "#e8cfac", + shape: "round", // one of "round", "miter", or "bevel" + minSize: 5 // minimum number of pixels + } + }, + name: 'selection', + version: '1.1' + }); +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.stack.js b/plugins/flot-chart/jquery.flot.stack.js new file mode 100644 index 0000000..e75a7df --- /dev/null +++ b/plugins/flot-chart/jquery.flot.stack.js @@ -0,0 +1,188 @@ +/* Flot plugin for stacking data sets rather than overlyaing them. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +The plugin assumes the data is sorted on x (or y if stacking horizontally). +For line charts, it is assumed that if a line has an undefined gap (from a +null point), then the line above it should have the same gap - insert zeros +instead of "null" if you want another behaviour. This also holds for the start +and end of the chart. Note that stacking a mix of positive and negative values +in most instances doesn't make sense (so it looks weird). + +Two or more series are stacked when their "stack" attribute is set to the same +key (which can be any number or string or just "true"). To specify the default +stack, you can set the stack option like this: + + series: { + stack: null/false, true, or a key (number/string) + } + +You can also specify it for a single series, like this: + + $.plot( $("#placeholder"), [{ + data: [ ... ], + stack: true + }]) + +The stacking order is determined by the order of the data series in the array +(later series end up on top of the previous). + +Internally, the plugin modifies the datapoints in each series, adding an +offset to the y value. For line series, extra data points are inserted through +interpolation. If there's a second y value, it's also adjusted (e.g for bar +charts or filled areas). + +*/ + +(function ($) { + var options = { + series: { stack: null } // or number/string + }; + + function init(plot) { + function findMatchingSeries(s, allseries) { + var res = null; + for (var i = 0; i < allseries.length; ++i) { + if (s == allseries[i]) + break; + + if (allseries[i].stack == s.stack) + res = allseries[i]; + } + + return res; + } + + function stackData(plot, s, datapoints) { + if (s.stack == null || s.stack === false) + return; + + var other = findMatchingSeries(s, plot.getData()); + if (!other) + return; + + var ps = datapoints.pointsize, + points = datapoints.points, + otherps = other.datapoints.pointsize, + otherpoints = other.datapoints.points, + newpoints = [], + px, py, intery, qx, qy, bottom, + withlines = s.lines.show, + horizontal = s.bars.horizontal, + withbottom = ps > 2 && (horizontal ? datapoints.format[2].x : datapoints.format[2].y), + withsteps = withlines && s.lines.steps, + fromgap = true, + keyOffset = horizontal ? 1 : 0, + accumulateOffset = horizontal ? 0 : 1, + i = 0, j = 0, l, m; + + while (true) { + if (i >= points.length) + break; + + l = newpoints.length; + + if (points[i] == null) { + // copy gaps + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + i += ps; + } + else if (j >= otherpoints.length) { + // for lines, we can't use the rest of the points + if (!withlines) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + } + i += ps; + } + else if (otherpoints[j] == null) { + // oops, got a gap + for (m = 0; m < ps; ++m) + newpoints.push(null); + fromgap = true; + j += otherps; + } + else { + // cases where we actually got two points + px = points[i + keyOffset]; + py = points[i + accumulateOffset]; + qx = otherpoints[j + keyOffset]; + qy = otherpoints[j + accumulateOffset]; + bottom = 0; + + if (px == qx) { + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + newpoints[l + accumulateOffset] += qy; + bottom = qy; + + i += ps; + j += otherps; + } + else if (px > qx) { + // we got past point below, might need to + // insert interpolated extra point + if (withlines && i > 0 && points[i - ps] != null) { + intery = py + (points[i - ps + accumulateOffset] - py) * (qx - px) / (points[i - ps + keyOffset] - px); + newpoints.push(qx); + newpoints.push(intery + qy); + for (m = 2; m < ps; ++m) + newpoints.push(points[i + m]); + bottom = qy; + } + + j += otherps; + } + else { // px < qx + if (fromgap && withlines) { + // if we come from a gap, we just skip this point + i += ps; + continue; + } + + for (m = 0; m < ps; ++m) + newpoints.push(points[i + m]); + + // we might be able to interpolate a point below, + // this can give us a better y + if (withlines && j > 0 && otherpoints[j - otherps] != null) + bottom = qy + (otherpoints[j - otherps + accumulateOffset] - qy) * (px - qx) / (otherpoints[j - otherps + keyOffset] - qx); + + newpoints[l + accumulateOffset] += bottom; + + i += ps; + } + + fromgap = false; + + if (l != newpoints.length && withbottom) + newpoints[l + 2] += bottom; + } + + // maintain the line steps invariant + if (withsteps && l != newpoints.length && l > 0 + && newpoints[l] != null + && newpoints[l] != newpoints[l - ps] + && newpoints[l + 1] != newpoints[l - ps + 1]) { + for (m = 0; m < ps; ++m) + newpoints[l + ps + m] = newpoints[l + m]; + newpoints[l + 1] = newpoints[l - ps + 1]; + } + } + + datapoints.points = newpoints; + } + + plot.hooks.processDatapoints.push(stackData); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'stack', + version: '1.2' + }); +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.time.js b/plugins/flot-chart/jquery.flot.time.js new file mode 100644 index 0000000..34c1d12 --- /dev/null +++ b/plugins/flot-chart/jquery.flot.time.js @@ -0,0 +1,432 @@ +/* Pretty handling of time axes. + +Copyright (c) 2007-2014 IOLA and Ole Laursen. +Licensed under the MIT license. + +Set axis.mode to "time" to enable. See the section "Time series data" in +API.txt for details. + +*/ + +(function($) { + + var options = { + xaxis: { + timezone: null, // "browser" for local to the client or timezone for timezone-js + timeformat: null, // format string to use + twelveHourClock: false, // 12 or 24 time in time mode + monthNames: null // list of names of months + } + }; + + // round to nearby lower multiple of base + + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + + // Returns a string with the date d formatted according to fmt. + // A subset of the Open Group's strftime format is supported. + + function formatDate(d, fmt, monthNames, dayNames) { + + if (typeof d.strftime == "function") { + return d.strftime(fmt); + } + + var leftPad = function(n, pad) { + n = "" + n; + pad = "" + (pad == null ? "0" : pad); + return n.length == 1 ? pad + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getHours(); + var isAM = hours < 12; + + if (monthNames == null) { + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + } + + if (dayNames == null) { + dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + } + + var hours12; + + if (hours > 12) { + hours12 = hours - 12; + } else if (hours == 0) { + hours12 = 12; + } else { + hours12 = hours; + } + + for (var i = 0; i < fmt.length; ++i) { + + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'a': c = "" + dayNames[d.getDay()]; break; + case 'b': c = "" + monthNames[d.getMonth()]; break; + case 'd': c = leftPad(d.getDate()); break; + case 'e': c = leftPad(d.getDate(), " "); break; + case 'h': // For back-compat with 0.7; remove in 1.0 + case 'H': c = leftPad(hours); break; + case 'I': c = leftPad(hours12); break; + case 'l': c = leftPad(hours12, " "); break; + case 'm': c = leftPad(d.getMonth() + 1); break; + case 'M': c = leftPad(d.getMinutes()); break; + // quarters not in Open Group's strftime specification + case 'q': + c = "" + (Math.floor(d.getMonth() / 3) + 1); break; + case 'S': c = leftPad(d.getSeconds()); break; + case 'y': c = leftPad(d.getFullYear() % 100); break; + case 'Y': c = "" + d.getFullYear(); break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case 'w': c = "" + d.getDay(); break; + } + r.push(c); + escape = false; + } else { + if (c == "%") { + escape = true; + } else { + r.push(c); + } + } + } + + return r.join(""); + } + + // To have a consistent view of time-based data independent of which time + // zone the client happens to be in we need a date-like object independent + // of time zones. This is done through a wrapper that only calls the UTC + // versions of the accessor methods. + + function makeUtcWrapper(d) { + + function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { + sourceObj[sourceMethod] = function() { + return targetObj[targetMethod].apply(targetObj, arguments); + }; + }; + + var utc = { + date: d + }; + + // support strftime, if found + + if (d.strftime != undefined) { + addProxyMethod(utc, "strftime", d, "strftime"); + } + + addProxyMethod(utc, "getTime", d, "getTime"); + addProxyMethod(utc, "setTime", d, "setTime"); + + var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; + + for (var p = 0; p < props.length; p++) { + addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); + addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); + } + + return utc; + }; + + // select time zone strategy. This returns a date-like object tied to the + // desired timezone + + function dateGenerator(ts, opts) { + if (opts.timezone == "browser") { + return new Date(ts); + } else if (!opts.timezone || opts.timezone == "utc") { + return makeUtcWrapper(new Date(ts)); + } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { + var d = new timezoneJS.Date(); + // timezone-js is fickle, so be sure to set the time zone before + // setting the time. + d.setTimezone(opts.timezone); + d.setTime(ts); + return d; + } else { + return makeUtcWrapper(new Date(ts)); + } + } + + // map of app. size of time units in milliseconds + + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "quarter": 3 * 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + + var baseSpec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"] + ]; + + // we don't know which variant(s) we'll need yet, but generating both is + // cheap + + var specMonths = baseSpec.concat([[3, "month"], [6, "month"], + [1, "year"]]); + var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], + [1, "year"]]); + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + $.each(plot.getAxes(), function(axisName, axis) { + + var opts = axis.options; + + if (opts.mode == "time") { + axis.tickGenerator = function(axis) { + + var ticks = []; + var d = dateGenerator(axis.min, opts); + var minSize = 0; + + // make quarter use a possibility if quarters are + // mentioned in either of these options + + var spec = (opts.tickSize && opts.tickSize[1] === + "quarter") || + (opts.minTickSize && opts.minTickSize[1] === + "quarter") ? specQuarters : specMonths; + + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") { + minSize = opts.tickSize; + } else { + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + } + + for (var i = 0; i < spec.length - 1; ++i) { + if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { + break; + } + } + + var size = spec[i][0]; + var unit = spec[i][1]; + + // special-case the possibility of several years + + if (unit == "year") { + + // if given a minTickSize in years, just use it, + // ensuring that it's an integer + + if (opts.minTickSize != null && opts.minTickSize[1] == "year") { + size = Math.floor(opts.minTickSize[0]); + } else { + + var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); + var norm = (axis.delta / timeUnitSize.year) / magn; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + } + + // minimum size for years is 1 + + if (size < 1) { + size = 1; + } + } + + axis.tickSize = opts.tickSize || [size, unit]; + var tickSize = axis.tickSize[0]; + unit = axis.tickSize[1]; + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") { + d.setSeconds(floorInBase(d.getSeconds(), tickSize)); + } else if (unit == "minute") { + d.setMinutes(floorInBase(d.getMinutes(), tickSize)); + } else if (unit == "hour") { + d.setHours(floorInBase(d.getHours(), tickSize)); + } else if (unit == "month") { + d.setMonth(floorInBase(d.getMonth(), tickSize)); + } else if (unit == "quarter") { + d.setMonth(3 * floorInBase(d.getMonth() / 3, + tickSize)); + } else if (unit == "year") { + d.setFullYear(floorInBase(d.getFullYear(), tickSize)); + } + + // reset smaller components + + d.setMilliseconds(0); + + if (step >= timeUnitSize.minute) { + d.setSeconds(0); + } + if (step >= timeUnitSize.hour) { + d.setMinutes(0); + } + if (step >= timeUnitSize.day) { + d.setHours(0); + } + if (step >= timeUnitSize.day * 4) { + d.setDate(1); + } + if (step >= timeUnitSize.month * 2) { + d.setMonth(floorInBase(d.getMonth(), 3)); + } + if (step >= timeUnitSize.quarter * 2) { + d.setMonth(floorInBase(d.getMonth(), 6)); + } + if (step >= timeUnitSize.year) { + d.setMonth(0); + } + + var carry = 0; + var v = Number.NaN; + var prev; + + do { + + prev = v; + v = d.getTime(); + ticks.push(v); + + if (unit == "month" || unit == "quarter") { + if (tickSize < 1) { + + // a bit complicated - we'll divide the + // month/quarter up but we need to take + // care of fractions so we don't end up in + // the middle of a day + + d.setDate(1); + var start = d.getTime(); + d.setMonth(d.getMonth() + + (unit == "quarter" ? 3 : 1)); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getHours(); + d.setHours(0); + } else { + d.setMonth(d.getMonth() + + tickSize * (unit == "quarter" ? 3 : 1)); + } + } else if (unit == "year") { + d.setFullYear(d.getFullYear() + tickSize); + } else { + d.setTime(v + step); + } + } while (v < axis.max && v != prev); + + return ticks; + }; + + axis.tickFormatter = function (v, axis) { + + var d = dateGenerator(v, axis.options); + + // first check global format + + if (opts.timeformat != null) { + return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); + } + + // possibly use quarters if quarters are mentioned in + // any of these places + + var useQuarters = (axis.options.tickSize && + axis.options.tickSize[1] == "quarter") || + (axis.options.minTickSize && + axis.options.minTickSize[1] == "quarter"); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; + var fmt; + + if (t < timeUnitSize.minute) { + fmt = hourCode + ":%M:%S" + suffix; + } else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) { + fmt = hourCode + ":%M" + suffix; + } else { + fmt = "%b %d " + hourCode + ":%M" + suffix; + } + } else if (t < timeUnitSize.month) { + fmt = "%b %d"; + } else if ((useQuarters && t < timeUnitSize.quarter) || + (!useQuarters && t < timeUnitSize.year)) { + if (span < timeUnitSize.year) { + fmt = "%b"; + } else { + fmt = "%b %Y"; + } + } else if (useQuarters && t < timeUnitSize.year) { + if (span < timeUnitSize.year) { + fmt = "Q%q"; + } else { + fmt = "Q%q %Y"; + } + } else { + fmt = "%Y"; + } + + var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); + + return rt; + }; + } + }); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'time', + version: '1.0' + }); + + // Time-axis support used to be in Flot core, which exposed the + // formatDate function on the plot object. Various plugins depend + // on the function, so we need to re-expose it here. + + $.plot.formatDate = formatDate; + $.plot.dateGenerator = dateGenerator; + +})(jQuery); diff --git a/plugins/flot-chart/jquery.flot.tooltip.min.js b/plugins/flot-chart/jquery.flot.tooltip.min.js new file mode 100644 index 0000000..09e3bbf --- /dev/null +++ b/plugins/flot-chart/jquery.flot.tooltip.min.js @@ -0,0 +1,12 @@ +/* + * jquery.flot.tooltip + * + * description: easy-to-use tooltips for Flot charts + * version: 0.6.2 + * author: Krzysztof Urbas @krzysu [myviews.pl] + * website: https://github.com/krzysu/flot.tooltip + * + * build on 2013-09-30 + * released under MIT License, 2012 +*/ +(function(t){var o={tooltip:!1,tooltipOpts:{content:"%s | X: %x | Y: %y",xDateFormat:null,yDateFormat:null,shifts:{x:10,y:20},defaultTheme:!0,onHover:function(){}}},i=function(t){this.tipPosition={x:0,y:0},this.init(t)};i.prototype.init=function(o){function i(t){var o={};o.x=t.pageX,o.y=t.pageY,s.updateTooltipPosition(o)}function e(t,o,i){var e=s.getDomElement();if(i){var n;n=s.stringFormat(s.tooltipOptions.content,i),e.html(n),s.updateTooltipPosition({x:o.pageX,y:o.pageY}),e.css({left:s.tipPosition.x+s.tooltipOptions.shifts.x,top:s.tipPosition.y+s.tooltipOptions.shifts.y}).show(),"function"==typeof s.tooltipOptions.onHover&&s.tooltipOptions.onHover(i,e)}else e.hide().html("")}var s=this;o.hooks.bindEvents.push(function(o,n){s.plotOptions=o.getOptions(),s.plotOptions.tooltip!==!1&&void 0!==s.plotOptions.tooltip&&(s.tooltipOptions=s.plotOptions.tooltipOpts,s.getDomElement(),t(o.getPlaceholder()).bind("plothover",e),t(n).bind("mousemove",i))}),o.hooks.shutdown.push(function(o,s){t(o.getPlaceholder()).unbind("plothover",e),t(s).unbind("mousemove",i)})},i.prototype.getDomElement=function(){var o;return t("#flotTip").length>0?o=t("#flotTip"):(o=t("<div />").attr("id","flotTip"),o.appendTo("body").hide().css({position:"absolute"}),this.tooltipOptions.defaultTheme&&o.css({background:"#fff","z-index":"100",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})),o},i.prototype.updateTooltipPosition=function(o){var i=t("#flotTip").outerWidth()+this.tooltipOptions.shifts.x,e=t("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;o.x-t(window).scrollLeft()>t(window).innerWidth()-i&&(o.x-=i),o.y-t(window).scrollTop()>t(window).innerHeight()-e&&(o.y-=e),this.tipPosition.x=o.x,this.tipPosition.y=o.y},i.prototype.stringFormat=function(t,o){var i=/%p\.{0,1}(\d{0,})/,e=/%s/,s=/%x\.{0,1}(?:\d{0,})/,n=/%y\.{0,1}(?:\d{0,})/;return"function"==typeof t&&(t=t(o.series.label,o.series.data[o.dataIndex][0],o.series.data[o.dataIndex][1],o)),o.series.percent!==void 0&&(t=this.adjustValPrecision(i,t,o.series.percent)),o.series.label!==void 0&&(t=t.replace(e,o.series.label)),this.isTimeMode("xaxis",o)&&this.isXDateFormat(o)&&(t=t.replace(s,this.timestampToDate(o.series.data[o.dataIndex][0],this.tooltipOptions.xDateFormat))),this.isTimeMode("yaxis",o)&&this.isYDateFormat(o)&&(t=t.replace(n,this.timestampToDate(o.series.data[o.dataIndex][1],this.tooltipOptions.yDateFormat))),"number"==typeof o.series.data[o.dataIndex][0]&&(t=this.adjustValPrecision(s,t,o.series.data[o.dataIndex][0])),"number"==typeof o.series.data[o.dataIndex][1]&&(t=this.adjustValPrecision(n,t,o.series.data[o.dataIndex][1])),o.series.xaxis.tickFormatter!==void 0&&(t=t.replace(s,o.series.xaxis.tickFormatter(o.series.data[o.dataIndex][0],o.series.xaxis))),o.series.yaxis.tickFormatter!==void 0&&(t=t.replace(n,o.series.yaxis.tickFormatter(o.series.data[o.dataIndex][1],o.series.yaxis))),t},i.prototype.isTimeMode=function(t,o){return o.series[t].options.mode!==void 0&&"time"===o.series[t].options.mode},i.prototype.isXDateFormat=function(){return this.tooltipOptions.xDateFormat!==void 0&&null!==this.tooltipOptions.xDateFormat},i.prototype.isYDateFormat=function(){return this.tooltipOptions.yDateFormat!==void 0&&null!==this.tooltipOptions.yDateFormat},i.prototype.timestampToDate=function(o,i){var e=new Date(o);return t.plot.formatDate(e,i)},i.prototype.adjustValPrecision=function(t,o,i){var e,s=o.match(t);return null!==s&&""!==RegExp.$1&&(e=RegExp.$1,i=i.toFixed(e),o=o.replace(t,i)),o};var e=function(t){new i(t)};t.plot.plugins.push({init:e,options:o,name:"tooltip",version:"0.6.1"})})(jQuery); \ No newline at end of file diff --git a/plugins/fullcalendar/css/fullcalendar.min.css b/plugins/fullcalendar/css/fullcalendar.min.css new file mode 100644 index 0000000..be1f51d --- /dev/null +++ b/plugins/fullcalendar/css/fullcalendar.min.css @@ -0,0 +1,5 @@ +/*! + * FullCalendar v2.9.0 Stylesheet + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */.fc-bgevent,.fc-highlight{opacity:.3;filter:alpha(opacity=30)}.fc-icon,body .fc{font-size:1em}.fc-button-group,.fc-icon{display:inline-block}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-icon,.fc-unselectable{-khtml-user-select:none;-webkit-touch-callout:none}.fc .fc-axis,.fc button,.fc-time-grid-event .fc-time,.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view .fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1}.fc-bgevent{background:#8fdf82}.fc-nonbusiness{background:#d7d7d7}.fc-icon{height:1em;line-height:1em;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close{cursor:pointer}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25;filter:alpha(opacity=25)}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25;filter:alpha(opacity=25)}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fc-toolbar{margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3;filter:alpha(opacity=30)}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent} \ No newline at end of file diff --git a/plugins/fullcalendar/js/fullcalendar.min.js b/plugins/fullcalendar/js/fullcalendar.min.js new file mode 100644 index 0000000..ad8653a --- /dev/null +++ b/plugins/fullcalendar/js/fullcalendar.min.js @@ -0,0 +1,9 @@ +/*! + * FullCalendar v2.9.0 + * Docs & License: http://fullcalendar.io/ + * (c) 2016 Adam Shaw + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){function c(a){return W(a,Ya)}function d(b){var c,d={views:b.views||{}};return a.each(b,function(b,e){"views"!=b&&(a.isPlainObject(e)&&!/(time|duration|interval)$/i.test(b)&&-1==a.inArray(b,Ya)?(c=null,a.each(e,function(a,e){/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(a)?(d.views[a]||(d.views[a]={}),d.views[a][b]=e):(c||(c={}),c[a]=e)}),c&&(d[b]=c)):d[b]=e)}),d}function e(a,b){b.left&&a.css({"border-left-width":1,"margin-left":b.left-1}),b.right&&a.css({"border-right-width":1,"margin-right":b.right-1})}function f(a){a.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function g(){a("body").addClass("fc-not-allowed")}function h(){a("body").removeClass("fc-not-allowed")}function i(b,c,d){var e=Math.floor(c/b.length),f=Math.floor(c-e*(b.length-1)),g=[],h=[],i=[],k=0;j(b),b.each(function(c,d){var j=c===b.length-1?f:e,l=a(d).outerHeight(!0);j>l?(g.push(d),h.push(l),i.push(a(d).height())):k+=l}),d&&(c-=k,e=Math.floor(c/g.length),f=Math.floor(c-e*(g.length-1))),a(g).each(function(b,c){var d=b===g.length-1?f:e,j=h[b],k=i[b],l=d-(j-k);d>j&&a(c).height(l)})}function j(a){a.height("")}function k(b){var c=0;return b.find("> span").each(function(b,d){var e=a(d).outerWidth();e>c&&(c=e)}),c++,b.width(c),c}function l(a,b){var c,d=a.add(b);return d.css({position:"relative",left:-1}),c=a.outerHeight()-b.outerHeight(),d.css({position:"",left:""}),c}function m(b){var c=b.css("position"),d=b.parents().filter(function(){var b=a(this);return/(auto|scroll)/.test(b.css("overflow")+b.css("overflow-y")+b.css("overflow-x"))}).eq(0);return"fixed"!==c&&d.length?d:a(b[0].ownerDocument||document)}function n(a,b){var c=a.offset(),d=c.left-(b?b.left:0),e=c.top-(b?b.top:0);return{left:d,right:d+a.outerWidth(),top:e,bottom:e+a.outerHeight()}}function o(a,b){var c=a.offset(),d=q(a),e=c.left+t(a,"border-left-width")+d.left-(b?b.left:0),f=c.top+t(a,"border-top-width")+d.top-(b?b.top:0);return{left:e,right:e+a[0].clientWidth,top:f,bottom:f+a[0].clientHeight}}function p(a,b){var c=a.offset(),d=c.left+t(a,"border-left-width")+t(a,"padding-left")-(b?b.left:0),e=c.top+t(a,"border-top-width")+t(a,"padding-top")-(b?b.top:0);return{left:d,right:d+a.width(),top:e,bottom:e+a.height()}}function q(a){var b=a.innerWidth()-a[0].clientWidth,c={left:0,right:0,top:0,bottom:a.innerHeight()-a[0].clientHeight};return r()&&"rtl"==a.css("direction")?c.left=b:c.right=b,c}function r(){return null===Za&&(Za=s()),Za}function s(){var b=a("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),c=b.children(),d=c.offset().left>b.offset().left;return b.remove(),d}function t(a,b){return parseFloat(a.css(b))||0}function u(a){return 1==a.which&&!a.ctrlKey}function v(a){if(void 0!==a.pageX)return a.pageX;var b=a.originalEvent.touches;return b?b[0].pageX:void 0}function w(a){if(void 0!==a.pageY)return a.pageY;var b=a.originalEvent.touches;return b?b[0].pageY:void 0}function x(a){return/^touch/.test(a.type)}function y(a){a.addClass("fc-unselectable").on("selectstart",z)}function z(a){a.preventDefault()}function A(a){return window.addEventListener?(window.addEventListener("scroll",a,!0),!0):!1}function B(a){return window.removeEventListener?(window.removeEventListener("scroll",a,!0),!0):!1}function C(a,b){var c={left:Math.max(a.left,b.left),right:Math.min(a.right,b.right),top:Math.max(a.top,b.top),bottom:Math.min(a.bottom,b.bottom)};return c.left<c.right&&c.top<c.bottom?c:!1}function D(a,b){return{left:Math.min(Math.max(a.left,b.left),b.right),top:Math.min(Math.max(a.top,b.top),b.bottom)}}function E(a){return{left:(a.left+a.right)/2,top:(a.top+a.bottom)/2}}function F(a,b){return{left:a.left-b.left,top:a.top-b.top}}function G(b){var c,d,e=[],f=[];for("string"==typeof b?f=b.split(/\s*,\s*/):"function"==typeof b?f=[b]:a.isArray(b)&&(f=b),c=0;c<f.length;c++)d=f[c],"string"==typeof d?e.push("-"==d.charAt(0)?{field:d.substring(1),order:-1}:{field:d,order:1}):"function"==typeof d&&e.push({func:d});return e}function H(a,b,c){var d,e;for(d=0;d<c.length;d++)if(e=I(a,b,c[d]))return e;return 0}function I(a,b,c){return c.func?c.func(a,b):J(a[c.field],b[c.field])*(c.order||1)}function J(b,c){return b||c?null==c?-1:null==b?1:"string"===a.type(b)||"string"===a.type(c)?String(b).localeCompare(String(c)):b-c:0}function K(a,b){var c,d,e,f,g=a.start,h=a.end,i=b.start,j=b.end;return h>i&&j>g?(g>=i?(c=g.clone(),e=!0):(c=i.clone(),e=!1),j>=h?(d=h.clone(),f=!0):(d=j.clone(),f=!1),{start:c,end:d,isStart:e,isEnd:f}):void 0}function L(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days"),ms:a.time()-c.time()})}function M(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days")})}function N(a,c,d){return b.duration(Math.round(a.diff(c,d,!0)),d)}function O(a,b){var c,d,e;for(c=0;c<_a.length&&(d=_a[c],e=P(d,a,b),!(e>=1&&ha(e)));c++);return d}function P(a,c,d){return null!=d?d.diff(c,a,!0):b.isDuration(c)?c.as(a):c.end.diff(c.start,a,!0)}function Q(a,b,c){var d;return T(c)?(b-a)/c:(d=c.asMonths(),Math.abs(d)>=1&&ha(d)?b.diff(a,"months",!0)/d:b.diff(a,"days",!0)/c.asDays())}function R(a,b){var c,d;return T(a)||T(b)?a/b:(c=a.asMonths(),d=b.asMonths(),Math.abs(c)>=1&&ha(c)&&Math.abs(d)>=1&&ha(d)?c/d:a.asDays()/b.asDays())}function S(a,c){var d;return T(a)?b.duration(a*c):(d=a.asMonths(),Math.abs(d)>=1&&ha(d)?b.duration({months:d*c}):b.duration({days:a.asDays()*c}))}function T(a){return Boolean(a.hours()||a.minutes()||a.seconds()||a.milliseconds())}function U(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function V(a){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(a)}function W(a,b){var c,d,e,f,g,h,i={};if(b)for(c=0;c<b.length;c++){for(d=b[c],e=[],f=a.length-1;f>=0;f--)if(g=a[f][d],"object"==typeof g)e.unshift(g);else if(void 0!==g){i[d]=g;break}e.length&&(i[d]=W(e))}for(c=a.length-1;c>=0;c--){h=a[c];for(d in h)d in i||(i[d]=h[d])}return i}function X(a){var b=function(){};return b.prototype=a,new b}function Y(a,b){for(var c in a)$(a,c)&&(b[c]=a[c])}function Z(a,b){var c,d,e=["constructor","toString","valueOf"];for(c=0;c<e.length;c++)d=e[c],a[d]!==Object.prototype[d]&&(b[d]=a[d])}function $(a,b){return db.call(a,b)}function _(b){return/undefined|null|boolean|number|string/.test(a.type(b))}function aa(b,c,d){if(a.isFunction(b)&&(b=[b]),b){var e,f;for(e=0;e<b.length;e++)f=b[e].apply(c,d)||f;return f}}function ba(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]}function ca(a){return(a+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#039;").replace(/"/g,"&quot;").replace(/\n/g,"<br />")}function da(a){return a.replace(/&.*?;/g,"")}function ea(b){var c=[];return a.each(b,function(a,b){null!=b&&c.push(a+":"+b)}),c.join(";")}function fa(a){return a.charAt(0).toUpperCase()+a.slice(1)}function ga(a,b){return a-b}function ha(a){return a%1===0}function ia(a,b){var c=a[b];return function(){return c.apply(a,arguments)}}function ja(a,b,c){var d,e,f,g,h,i=function(){var j=+new Date-g;b>j?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e),f=e=null))};return function(){f=this,e=arguments,g=+new Date;var j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e),f=e=null),h}}function ka(b,c){return b&&b.then&&"resolved"!==b.state()?c?b.then(c):void 0:a.when(c())}function la(c,d,e){var f,g,h,i,j=c[0],k=1==c.length&&"string"==typeof j;return b.isMoment(j)?(i=b.apply(null,c),na(j,i)):U(j)||void 0===j?i=b.apply(null,c):(f=!1,g=!1,k?eb.test(j)?(j+="-01",c=[j],f=!0,g=!0):(h=fb.exec(j))&&(f=!h[5],g=!0):a.isArray(j)&&(g=!0),i=d||f?b.utc.apply(b,c):b.apply(null,c),f?(i._ambigTime=!0,i._ambigZone=!0):e&&(g?i._ambigZone=!0:k&&(i.utcOffset?i.utcOffset(j):i.zone(j)))),i._fullCalendar=!0,i}function ma(a,c){var d,e,f=!1,g=!1,h=a.length,i=[];for(d=0;h>d;d++)e=a[d],b.isMoment(e)||(e=Wa.moment.parseZone(e)),f=f||e._ambigTime,g=g||e._ambigZone,i.push(e);for(d=0;h>d;d++)e=i[d],c||!f||e._ambigTime?g&&!e._ambigZone&&(i[d]=e.clone().stripZone()):i[d]=e.clone().stripTime();return i}function na(a,b){a._ambigTime?b._ambigTime=!0:b._ambigTime&&(b._ambigTime=!1),a._ambigZone?b._ambigZone=!0:b._ambigZone&&(b._ambigZone=!1)}function oa(a,b){a.year(b[0]||0).month(b[1]||0).date(b[2]||0).hours(b[3]||0).minutes(b[4]||0).seconds(b[5]||0).milliseconds(b[6]||0)}function pa(a,b){return hb.format.call(a,b)}function qa(a,b){return ra(a,wa(b))}function ra(a,b){var c,d="";for(c=0;c<b.length;c++)d+=sa(a,b[c]);return d}function sa(a,b){var c,d;return"string"==typeof b?b:(c=b.token)?ib[c]?ib[c](a):pa(a,c):b.maybe&&(d=ra(a,b.maybe),d.match(/[1-9]/))?d:""}function ta(a,b,c,d,e){var f;return a=Wa.moment.parseZone(a),b=Wa.moment.parseZone(b),f=(a.localeData||a.lang).call(a),c=f.longDateFormat(c)||c,d=d||" - ",ua(a,b,wa(c),d,e)}function ua(a,b,c,d,e){var f,g,h,i,j=a.clone().stripZone(),k=b.clone().stripZone(),l="",m="",n="",o="",p="";for(g=0;g<c.length&&(f=va(a,b,j,k,c[g]),f!==!1);g++)l+=f;for(h=c.length-1;h>g&&(f=va(a,b,j,k,c[h]),f!==!1);h--)m=f+m;for(i=g;h>=i;i++)n+=sa(a,c[i]),o+=sa(b,c[i]);return(n||o)&&(p=e?o+d+n:n+d+o),l+p+m}function va(a,b,c,d,e){var f,g;return"string"==typeof e?e:(f=e.token)&&(g=jb[f.charAt(0)],g&&c.isSame(d,g))?pa(a,f):!1}function wa(a){return a in kb?kb[a]:kb[a]=xa(a)}function xa(a){for(var b,c=[],d=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;b=d.exec(a);)b[1]?c.push(b[1]):b[2]?c.push({maybe:xa(b[2])}):b[3]?c.push({token:b[3]}):b[5]&&c.push(b[5]);return c}function ya(){}function za(a,b){var c;return $(b,"constructor")&&(c=b.constructor),"function"!=typeof c&&(c=b.constructor=function(){a.apply(this,arguments)}),c.prototype=X(a.prototype),Y(b,c.prototype),Z(b,c.prototype),Y(a,c),c}function Aa(a,b){Y(b,a.prototype)}function Ba(a,b){return a||b?a&&b?a.component===b.component&&Ca(a,b)&&Ca(b,a):!1:!0}function Ca(a,b){for(var c in a)if(!/^(component|left|right|top|bottom)$/.test(c)&&a[c]!==b[c])return!1;return!0}function Da(a){var b=Fa(a);return"background"===b||"inverse-background"===b}function Ea(a){return"inverse-background"===Fa(a)}function Fa(a){return ba((a.source||{}).rendering,a.rendering)}function Ga(a){var b,c,d={};for(b=0;b<a.length;b++)c=a[b],(d[c._id]||(d[c._id]=[])).push(c);return d}function Ha(a,b){return a.start-b.start}function Ia(c){var d,e,f,g,h=Wa.dataAttrPrefix;return h&&(h+="-"),d=c.data(h+"event")||null,d&&(d="object"==typeof d?a.extend({},d):{},e=d.start,null==e&&(e=d.time),f=d.duration,g=d.stick,delete d.start,delete d.time,delete d.duration,delete d.stick),null==e&&(e=c.data(h+"start")),null==e&&(e=c.data(h+"time")),null==f&&(f=c.data(h+"duration")),null==g&&(g=c.data(h+"stick")),e=null!=e?b.duration(e):null,f=null!=f?b.duration(f):null,g=Boolean(g),{eventProps:d,startTime:e,duration:f,stick:g}}function Ja(a,b){var c,d;for(c=0;c<b.length;c++)if(d=b[c],d.leftCol<=a.rightCol&&d.rightCol>=a.leftCol)return!0;return!1}function Ka(a,b){return a.leftCol-b.leftCol}function La(a){var b,c,d,e=[];for(b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Oa(c,e[d]).length;d++);c.level=d,(e[d]||(e[d]=[])).push(c)}return e}function Ma(a){var b,c,d,e,f;for(b=0;b<a.length;b++)for(c=a[b],d=0;d<c.length;d++)for(e=c[d],e.forwardSegs=[],f=b+1;f<a.length;f++)Oa(e,a[f],e.forwardSegs)}function Na(a){var b,c,d=a.forwardSegs,e=0;if(void 0===a.forwardPressure){for(b=0;b<d.length;b++)c=d[b],Na(c),e=Math.max(e,1+c.forwardPressure);a.forwardPressure=e}}function Oa(a,b,c){c=c||[];for(var d=0;d<b.length;d++)Pa(a,b[d])&&c.push(b[d]);return c}function Pa(a,b){return a.bottom>b.top&&a.top<b.bottom}function Qa(c,e){function f(a){"_locale"in a?a._locale=U:a._lang=U}function g(){W?k()&&(p(),l()):h()}function h(){c.addClass("fc"),T.bindOption("theme",function(a){Y=a?"ui":"fc",c.toggleClass("ui-widget",a),c.toggleClass("fc-unthemed",!a)}),T.bindOptions(["isRTL","lang"],function(a){c.toggleClass("fc-ltr",!a),c.toggleClass("fc-rtl",a)}),W=a("<div class='fc-view-container'/>").prependTo(c),V=T.header=new Ta(T),i(),l(T.options.defaultView),T.options.handleWindowResize&&(_=ja(r,T.options.windowResizeDelay),a(window).resize(_))}function i(){V.render(),V.el&&c.prepend(V.el)}function j(){Z&&Z.removeElement(),V.removeElement(),W.remove(),c.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),_&&a(window).unbind("resize",_)}function k(){return c.is(":visible")}function l(b,c){ga++,Z&&b&&Z.type!==b&&(M(),m()),!Z&&b&&(Z=T.view=fa[b]||(fa[b]=T.instantiateView(b)),Z.setElement(a("<div class='fc-view fc-"+b+"-view' />").appendTo(W)),V.activateButton(b)),Z&&(aa=Z.massageCurrentDate(aa),Z.displaying&&aa.isWithin(Z.intervalStart,Z.intervalEnd)||k()&&(Z.display(aa,c),N(),z(),A(),v())),N(),ga--}function m(){V.deactivateButton(Z.type),Z.removeElement(),Z=T.view=null}function n(){ga++,M();var a=Z.type,b=Z.queryScroll();m(),l(a,b),N(),ga--}function o(a){return k()?(a&&q(),ga++,Z.updateSize(!0),ga--,!0):void 0}function p(){k()&&q()}function q(){$="number"==typeof T.options.contentHeight?T.options.contentHeight:"number"==typeof T.options.height?T.options.height-(V.el?V.el.outerHeight(!0):0):Math.round(W.width()/Math.max(T.options.aspectRatio,.5))}function r(a){!ga&&a.target===window&&Z.start&&o(!0)&&Z.trigger("windowResize",ea)}function s(){w()}function t(a){da(T.getEventSourcesByMatchArray(a))}function u(){k()&&(M(),Z.displayEvents(ha),N())}function v(){!T.options.lazyFetching||ba(Z.start,Z.end)?w():u()}function w(){ca(Z.start,Z.end)}function x(a){ha=a,u()}function y(){u()}function z(){V.updateTitle(Z.title)}function A(){var a=T.getNow();a.isWithin(Z.intervalStart,Z.intervalEnd)?V.disableButton("today"):V.enableButton("today")}function B(a,b){Z.select(T.buildSelectSpan.apply(T,arguments))}function C(){Z&&Z.unselect()}function D(){aa=Z.computePrevDate(aa),l()}function E(){aa=Z.computeNextDate(aa),l()}function F(){aa.add(-1,"years"),l()}function G(){aa.add(1,"years"),l()}function H(){aa=T.getNow(),l()}function I(a){aa=T.moment(a).stripZone(),l()}function J(a){aa.add(b.duration(a)),l()}function K(a,b){var c;b=b||"day",c=T.getViewSpec(b)||T.getUnitViewSpec(b),aa=a.clone(),l(c?c.type:null)}function L(){return T.applyTimezone(aa)}function M(){W.css({width:"100%",height:W.height(),overflow:"hidden"})}function N(){W.css({width:"",height:"",overflow:""})}function O(){return T}function P(){return Z}function Q(a,b){var c;if("string"==typeof a){if(void 0===b)return T.options[a];c={},c[a]=b,R(c)}else"object"==typeof a&&R(a)}function R(a){var b,c=0;for(b in a)T.dynamicOverrides[b]=a[b];T.viewSpecCache={},T.populateOptionsHash();for(b in a)T.triggerOptionHandlers(b),c++;if(1===c){if("height"===b||"contentHeight"===b||"aspectRatio"===b)return void o(!0);if("defaultDate"===b)return;if("businessHours"===b)return void(Z&&(Z.unrenderBusinessHours(),Z.renderBusinessHours()));if("timezone"===b)return T.rezoneArrayEventSources(),void s()}i(),fa={},n()}function S(a,b){var c=Array.prototype.slice.call(arguments,2);return b=b||ea,this.triggerWith(a,b,c),T.options[a]?T.options[a].apply(b,c):void 0}var T=this;T.render=g,T.destroy=j,T.refetchEvents=s,T.refetchEventSources=t,T.reportEvents=x,T.reportEventChange=y,T.rerenderEvents=u,T.changeView=l,T.select=B,T.unselect=C,T.prev=D,T.next=E,T.prevYear=F,T.nextYear=G,T.today=H,T.gotoDate=I,T.incrementDate=J,T.zoomTo=K,T.getDate=L,T.getCalendar=O,T.getView=P,T.option=Q,T.trigger=S,T.dynamicOverrides={},T.viewSpecCache={},T.optionHandlers={},T.overrides=d(e||{}),T.populateOptionsHash();var U;T.bindOptions(["lang","monthNames","monthNamesShort","dayNames","dayNamesShort","firstDay","weekNumberCalculation"],function(a,b,c,d,e,g,h){if(U=X(Sa(a)),b&&(U._months=b),c&&(U._monthsShort=c),d&&(U._weekdays=d),e&&(U._weekdaysShort=e),null!=g){var i=X(U._week);i.dow=g,U._week=i}"iso"===h&&(h="ISO"),"ISO"!==h&&"local"!==h&&"function"!=typeof h||(U._fullCalendar_weekCalc=h),aa&&f(aa)}),T.defaultAllDayEventDuration=b.duration(T.options.defaultAllDayEventDuration),T.defaultTimedEventDuration=b.duration(T.options.defaultTimedEventDuration),T.moment=function(){var a;return"local"===T.options.timezone?(a=Wa.moment.apply(null,arguments),a.hasTime()&&a.local()):a="UTC"===T.options.timezone?Wa.moment.utc.apply(null,arguments):Wa.moment.parseZone.apply(null,arguments),f(a),a},T.getIsAmbigTimezone=function(){return"local"!==T.options.timezone&&"UTC"!==T.options.timezone},T.applyTimezone=function(a){if(!a.hasTime())return a.clone();var b,c=T.moment(a.toArray()),d=a.time()-c.time();return d&&(b=c.clone().add(d),a.time()-b.time()===0&&(c=b)),c},T.getNow=function(){var a=T.options.now;return"function"==typeof a&&(a=a()),T.moment(a).stripZone()},T.getEventEnd=function(a){return a.end?a.end.clone():T.getDefaultEventEnd(a.allDay,a.start)},T.getDefaultEventEnd=function(a,b){var c=b.clone();return a?c.stripTime().add(T.defaultAllDayEventDuration):c.add(T.defaultTimedEventDuration),T.getIsAmbigTimezone()&&c.stripZone(),c},T.humanizeDuration=function(a){return(a.locale||a.lang).call(a,T.options.lang).humanize()},Ua.call(T);var V,W,Y,Z,$,_,aa,ba=T.isFetchNeeded,ca=T.fetchEvents,da=T.fetchEventSources,ea=c[0],fa={},ga=0,ha=[];aa=null!=T.options.defaultDate?T.moment(T.options.defaultDate).stripZone():T.getNow(),T.getSuggestedViewHeight=function(){return void 0===$&&p(),$},T.isHeightAuto=function(){return"auto"===T.options.contentHeight||"auto"===T.options.height},T.freezeContentHeight=M,T.unfreezeContentHeight=N,T.initialize()}function Ra(b){a.each(Db,function(a,c){null==b[a]&&(b[a]=c(b))})}function Sa(a){var c=b.localeData||b.langData;return c.call(b,a)||c.call(b,"en")}function Ta(b){function c(){var c=b.options,f=c.header;n=c.theme?"ui":"fc",f?(m?m.empty():m=this.el=a("<div class='fc-toolbar'/>"),m.append(e("left")).append(e("right")).append(e("center")).append('<div class="fc-clear"/>')):d()}function d(){m&&(m.remove(),m=l.el=null)}function e(c){var d=a('<div class="fc-'+c+'"/>'),e=b.options,f=e.header[c];return f&&a.each(f.split(" "),function(c){var f,g=a(),h=!0;a.each(this.split(","),function(c,d){var f,i,j,k,l,m,p,q,r,s;"title"==d?(g=g.add(a("<h2>&nbsp;</h2>")),h=!1):((f=(e.customButtons||{})[d])?(j=function(a){f.click&&f.click.call(s[0],a)},k="",l=f.text):(i=b.getViewSpec(d))?(j=function(){b.changeView(d)},o.push(d),k=i.buttonTextOverride,l=i.buttonTextDefault):b[d]&&(j=function(){b[d]()},k=(b.overrides.buttonText||{})[d],l=e.buttonText[d]),j&&(m=f?f.themeIcon:e.themeButtonIcons[d],p=f?f.icon:e.buttonIcons[d],q=k?ca(k):m&&e.theme?"<span class='ui-icon ui-icon-"+m+"'></span>":p&&!e.theme?"<span class='fc-icon fc-icon-"+p+"'></span>":ca(l),r=["fc-"+d+"-button",n+"-button",n+"-state-default"],s=a('<button type="button" class="'+r.join(" ")+'">'+q+"</button>").click(function(a){s.hasClass(n+"-state-disabled")||(j(a),(s.hasClass(n+"-state-active")||s.hasClass(n+"-state-disabled"))&&s.removeClass(n+"-state-hover"))}).mousedown(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-down")}).mouseup(function(){s.removeClass(n+"-state-down")}).hover(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-hover")},function(){s.removeClass(n+"-state-hover").removeClass(n+"-state-down")}),g=g.add(s)))}),h&&g.first().addClass(n+"-corner-left").end().last().addClass(n+"-corner-right").end(),g.length>1?(f=a("<div/>"),h&&f.addClass("fc-button-group"),f.append(g),d.append(f)):d.append(g)}),d}function f(a){m&&m.find("h2").text(a)}function g(a){m&&m.find(".fc-"+a+"-button").addClass(n+"-state-active")}function h(a){m&&m.find(".fc-"+a+"-button").removeClass(n+"-state-active")}function i(a){m&&m.find(".fc-"+a+"-button").prop("disabled",!0).addClass(n+"-state-disabled")}function j(a){m&&m.find(".fc-"+a+"-button").prop("disabled",!1).removeClass(n+"-state-disabled")}function k(){return o}var l=this;l.render=c,l.removeElement=d,l.updateTitle=f,l.activateButton=g,l.deactivateButton=h,l.disableButton=i,l.enableButton=j,l.getViewsWithButtons=k,l.el=null;var m,n,o=[]}function Ua(){function c(a,b){return!W||W>a||b>X}function d(a,b){W=a,X=b,e($,"reset")}function e(a,b){var c,d;for("reset"===b?da=[]:"add"!==b&&(da=u(da,a)),c=0;c<a.length;c++)d=a[c],"pending"!==d._status&&ca++,d._fetchId=(d._fetchId||0)+1,d._status="pending";for(c=0;c<a.length;c++)d=a[c],f(d,d._fetchId)}function f(b,c){i(b,function(d){var e,f,g,i=a.isArray(b.events);if(c===b._fetchId&&"rejected"!==b._status){if(b._status="resolved",d)for(e=0;e<d.length;e++)f=d[e],g=i?f:C(f,b),g&&da.push.apply(da,G(g));h()}})}function g(a){var b="pending"===a._status;a._status="rejected",b&&h()}function h(){ca--,ca||Y(da)}function i(b,c){var d,e,f=Wa.sourceFetchers;for(d=0;d<f.length;d++){if(e=f[d].call(U,b,W.clone(),X.clone(),U.options.timezone,c),e===!0)return;if("object"==typeof e)return void i(e,c)}var g=b.events;if(g)a.isFunction(g)?(U.pushLoading(),g.call(U,W.clone(),X.clone(),U.options.timezone,function(a){c(a),U.popLoading()})):a.isArray(g)?c(g):c();else{var h=b.url;if(h){var j,k=b.success,l=b.error,m=b.complete;j=a.isFunction(b.data)?b.data():b.data;var n=a.extend({},j||{}),o=ba(b.startParam,U.options.startParam),p=ba(b.endParam,U.options.endParam),q=ba(b.timezoneParam,U.options.timezoneParam);o&&(n[o]=W.format()),p&&(n[p]=X.format()),U.options.timezone&&"local"!=U.options.timezone&&(n[q]=U.options.timezone),U.pushLoading(),a.ajax(a.extend({},Eb,b,{data:n,success:function(b){b=b||[];var d=aa(k,this,arguments);a.isArray(d)&&(b=d),c(b)},error:function(){aa(l,this,arguments),c()},complete:function(){aa(m,this,arguments),U.popLoading()}}))}else c()}}function j(a){var b=k(a);b&&($.push(b),e([b],"add"))}function k(b){var c,d,e=Wa.sourceNormalizers;if(a.isFunction(b)||a.isArray(b)?c={events:b}:"string"==typeof b?c={url:b}:"object"==typeof b&&(c=a.extend({},b)),c){for(c.className?"string"==typeof c.className&&(c.className=c.className.split(/\s+/)):c.className=[],a.isArray(c.events)&&(c.origArray=c.events,c.events=a.map(c.events,function(a){return C(a,c)})),d=0;d<e.length;d++)e[d].call(U,c);return c}}function l(a){n(r(a))}function m(a){null==a?n($,!0):n(q(a))}function n(b,c){var d;for(d=0;d<b.length;d++)g(b[d]);c?($=[],da=[]):($=a.grep($,function(a){for(d=0;d<b.length;d++)if(a===b[d])return!1;return!0}),da=u(da,b)),Y(da)}function o(){return $.slice(1)}function p(b){return a.grep($,function(a){return a.id&&a.id===b})[0]}function q(b){b?a.isArray(b)||(b=[b]):b=[];var c,d=[];for(c=0;c<b.length;c++)d.push.apply(d,r(b[c]));return d}function r(b){var c,d;for(c=0;c<$.length;c++)if(d=$[c],d===b)return[d];return d=p(b),d?[d]:a.grep($,function(a){return s(b,a)})}function s(a,b){return a&&b&&t(a)==t(b)}function t(a){return("object"==typeof a?a.origArray||a.googleCalendarId||a.url||a.events:null)||a}function u(b,c){return a.grep(b,function(a){for(var b=0;b<c.length;b++)if(a.source===c[b])return!1;return!0})}function v(a){a.start=U.moment(a.start),a.end?a.end=U.moment(a.end):a.end=null,H(a,w(a)),Y(da)}function w(b){var c={};return a.each(b,function(a,b){x(a)&&void 0!==b&&_(b)&&(c[a]=b)}),c}function x(a){return!/^_|^(id|allDay|start|end)$/.test(a)}function y(a,b){var c,d,e,f=C(a);if(f){for(c=G(f),d=0;d<c.length;d++)e=c[d],e.source||(b&&(Z.events.push(e),e.source=Z),da.push(e));return Y(da),c}return[]}function z(b){var c,d;for(null==b?b=function(){return!0}:a.isFunction(b)||(c=b+"",b=function(a){return a._id==c}),da=a.grep(da,b,!0),d=0;d<$.length;d++)a.isArray($[d].events)&&($[d].events=a.grep($[d].events,b,!0));Y(da)}function A(b){return a.isFunction(b)?a.grep(da,b):null!=b?(b+="",a.grep(da,function(a){return a._id==b})):da}function B(a){a.start=U.moment(a.start),a.end&&(a.end=U.moment(a.end)),Va(a)}function C(c,d){var e,f,g,h={};if(U.options.eventDataTransform&&(c=U.options.eventDataTransform(c)),d&&d.eventDataTransform&&(c=d.eventDataTransform(c)),a.extend(h,c),d&&(h.source=d),h._id=c._id||(void 0===c.id?"_fc"+Fb++:c.id+""),c.className?"string"==typeof c.className?h.className=c.className.split(/\s+/):h.className=c.className:h.className=[],e=c.start||c.date,f=c.end,V(e)&&(e=b.duration(e)),V(f)&&(f=b.duration(f)),c.dow||b.isDuration(e)||b.isDuration(f))h.start=e?b.duration(e):null,h.end=f?b.duration(f):null,h._recurring=!0;else{if(e&&(e=U.moment(e),!e.isValid()))return!1;f&&(f=U.moment(f),f.isValid()||(f=null)),g=c.allDay,void 0===g&&(g=ba(d?d.allDayDefault:void 0,U.options.allDayDefault)),D(e,f,g,h)}return U.normalizeEvent(h),h}function D(a,b,c,d){d.start=a,d.end=b,d.allDay=c,E(d),Va(d)}function E(a){F(a),a.end&&!a.end.isAfter(a.start)&&(a.end=null),a.end||(U.options.forceEventDuration?a.end=U.getDefaultEventEnd(a.allDay,a.start):a.end=null)}function F(a){null==a.allDay&&(a.allDay=!(a.start.hasTime()||a.end&&a.end.hasTime())),a.allDay?(a.start.stripTime(),a.end&&a.end.stripTime()):(a.start.hasTime()||(a.start=U.applyTimezone(a.start.time(0))),a.end&&!a.end.hasTime()&&(a.end=U.applyTimezone(a.end.time(0))))}function G(b,c,d){var e,f,g,h,i,j,k,l,m,n=[];if(c=c||W,d=d||X,b)if(b._recurring){if(f=b.dow)for(e={},g=0;g<f.length;g++)e[f[g]]=!0;for(h=c.clone().stripTime();h.isBefore(d);)e&&!e[h.day()]||(i=b.start,j=b.end,k=h.clone(),l=null,i&&(k=k.time(i)),j&&(l=h.clone().time(j)),m=a.extend({},b),D(k,l,!i&&!j,m),n.push(m)),h.add(1,"days")}else n.push(b);return n}function H(b,c,d){function e(a,b){return d?N(a,b,d):c.allDay?M(a,b):L(a,b)}var f,g,h,i,j,k,l={};return c=c||{},c.start||(c.start=b.start.clone()),void 0===c.end&&(c.end=b.end?b.end.clone():null),null==c.allDay&&(c.allDay=b.allDay),E(c),f={start:b._start.clone(),end:b._end?b._end.clone():U.getDefaultEventEnd(b._allDay,b._start),allDay:c.allDay},E(f),g=null!==b._end&&null===c.end,h=e(c.start,f.start),c.end?(i=e(c.end,f.end),j=i.subtract(h)):j=null,a.each(c,function(a,b){x(a)&&void 0!==b&&(l[a]=b)}),k=I(A(b._id),g,c.allDay,h,j,l),{dateDelta:h,durationDelta:j,undo:k}}function I(b,c,d,e,f,g){var h=U.getIsAmbigTimezone(),i=[];return e&&!e.valueOf()&&(e=null),f&&!f.valueOf()&&(f=null),a.each(b,function(b,j){var k,l;k={start:j.start.clone(),end:j.end?j.end.clone():null,allDay:j.allDay},a.each(g,function(a){k[a]=j[a]}),l={start:j._start,end:j._end,allDay:d},E(l),c?l.end=null:f&&!l.end&&(l.end=U.getDefaultEventEnd(l.allDay,l.start)),e&&(l.start.add(e),l.end&&l.end.add(e)),f&&l.end.add(f),h&&!l.allDay&&(e||f)&&(l.start.stripZone(),l.end&&l.end.stripZone()),a.extend(j,g,l),Va(j),i.push(function(){a.extend(j,k),Va(j)})}),function(){for(var a=0;a<i.length;a++)i[a]()}}function J(b){var c,d=U.options.businessHours,e={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},f=U.getView();return d&&(c=a.extend({},e,"object"==typeof d?d:{})),c?(b&&(c.start=null,c.end=null),G(C(c),f.start,f.end)):[]}function K(a,b){var c=b.source||{},d=ba(b.constraint,c.constraint,U.options.eventConstraint),e=ba(b.overlap,c.overlap,U.options.eventOverlap);return Q(a,d,e,b)}function O(b,c,d){var e,f;return d&&(e=a.extend({},d,c),f=G(C(e))[0]),f?K(b,f):P(b)}function P(a){return Q(a,U.options.selectConstraint,U.options.selectOverlap)}function Q(a,b,c,d){var e,f,g,h,i,j;if(null!=b){for(e=R(b),f=!1,h=0;h<e.length;h++)if(S(e[h],a)){f=!0;break}if(!f)return!1}for(g=U.getPeerEvents(a,d),h=0;h<g.length;h++)if(i=g[h],T(i,a)){if(c===!1)return!1;if("function"==typeof c&&!c(i,d))return!1;if(d){if(j=ba(i.overlap,(i.source||{}).overlap),j===!1)return!1;if("function"==typeof j&&!j(d,i))return!1}}return!0}function R(a){return"businessHours"===a?J():"object"==typeof a?G(C(a)):A(a)}function S(a,b){var c=a.start.clone().stripZone(),d=U.getEventEnd(a).stripZone();return b.start>=c&&b.end<=d}function T(a,b){var c=a.start.clone().stripZone(),d=U.getEventEnd(a).stripZone();return b.start<d&&b.end>c}var U=this;U.isFetchNeeded=c,U.fetchEvents=d,U.fetchEventSources=e,U.getEventSources=o,U.getEventSourceById=p,U.getEventSourcesByMatchArray=q,U.getEventSourcesByMatch=r,U.addEventSource=j,U.removeEventSource=l,U.removeEventSources=m,U.updateEvent=v,U.renderEvent=y,U.removeEvents=z,U.clientEvents=A,U.mutateEvent=H,U.normalizeEventDates=E,U.normalizeEventTimes=F;var W,X,Y=U.reportEvents,Z={events:[]},$=[Z],ca=0,da=[];a.each((U.options.events?[U.options.events]:[]).concat(U.options.eventSources||[]),function(a,b){var c=k(b);c&&$.push(c)}),U.rezoneArrayEventSources=function(){var b,c,d;for(b=0;b<$.length;b++)if(c=$[b].events,a.isArray(c))for(d=0;d<c.length;d++)B(c[d])},U.getBusinessHoursEvents=J,U.isEventSpanAllowed=K,U.isExternalSpanAllowed=O,U.isSelectionSpanAllowed=P,U.getEventCache=function(){return da}}function Va(a){a._allDay=a.allDay,a._start=a.start.clone(),a._end=a.end?a.end.clone():null}var Wa=a.fullCalendar={version:"2.9.0",internalApiVersion:4},Xa=Wa.views={};a.fn.fullCalendar=function(b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.each(function(e,f){var g,h=a(f),i=h.data("fullCalendar");"string"==typeof b?i&&a.isFunction(i[b])&&(g=i[b].apply(i,c),e||(d=g),"destroy"===b&&h.removeData("fullCalendar")):i||(i=new zb(h,b),h.data("fullCalendar",i),i.render())}),d};var Ya=["header","buttonText","buttonIcons","themeButtonIcons"];Wa.intersectRanges=K,Wa.applyAll=aa,Wa.debounce=ja,Wa.isInt=ha,Wa.htmlEscape=ca,Wa.cssToStr=ea,Wa.proxy=ia,Wa.capitaliseFirstLetter=fa,Wa.getOuterRect=n,Wa.getClientRect=o,Wa.getContentRect=p,Wa.getScrollbarWidths=q;var Za=null;Wa.preventDefault=z,Wa.intersectRects=C,Wa.parseFieldSpecs=G,Wa.compareByFieldSpecs=H,Wa.compareByFieldSpec=I,Wa.flexibleCompare=J,Wa.computeIntervalUnit=O,Wa.divideRangeByDuration=Q,Wa.divideDurationByDuration=R,Wa.multiplyDuration=S,Wa.durationHasTime=T;var $a=["sun","mon","tue","wed","thu","fri","sat"],_a=["year","month","week","day","hour","minute","second","millisecond"];Wa.log=function(){var a=window.console;return a&&a.log?a.log.apply(a,arguments):void 0},Wa.warn=function(){var a=window.console;return a&&a.warn?a.warn.apply(a,arguments):Wa.log.apply(Wa,arguments)};var ab,bb,cb,db={}.hasOwnProperty,eb=/^\s*\d{4}-\d\d$/,fb=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,gb=b.fn,hb=a.extend({},gb);Wa.moment=function(){return la(arguments)},Wa.moment.utc=function(){var a=la(arguments,!0);return a.hasTime()&&a.utc(),a},Wa.moment.parseZone=function(){return la(arguments,!0,!0)},gb.clone=function(){var a=hb.clone.apply(this,arguments);return na(this,a),this._fullCalendar&&(a._fullCalendar=!0),a},gb.week=gb.weeks=function(a){var b=(this._locale||this._lang)._fullCalendar_weekCalc;return null==a&&"function"==typeof b?b(this):"ISO"===b?hb.isoWeek.apply(this,arguments):hb.week.apply(this,arguments)},gb.time=function(a){if(!this._fullCalendar)return hb.time.apply(this,arguments);if(null==a)return b.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,b.isDuration(a)||b.isMoment(a)||(a=b.duration(a));var c=0;return b.isDuration(a)&&(c=24*Math.floor(a.asDays())),this.hours(c+a.hours()).minutes(a.minutes()).seconds(a.seconds()).milliseconds(a.milliseconds())},gb.stripTime=function(){var a;return this._ambigTime||(a=this.toArray(),this.utc(),bb(this,a.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},gb.hasTime=function(){return!this._ambigTime},gb.stripZone=function(){var a,b;return this._ambigZone||(a=this.toArray(),b=this._ambigTime,this.utc(),bb(this,a),this._ambigTime=b||!1,this._ambigZone=!0),this},gb.hasZone=function(){return!this._ambigZone},gb.local=function(){var a=this.toArray(),b=this._ambigZone;return hb.local.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,b&&cb(this,a),this},gb.utc=function(){return hb.utc.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,this},a.each(["zone","utcOffset"],function(a,b){hb[b]&&(gb[b]=function(a){return null!=a&&(this._ambigTime=!1,this._ambigZone=!1),hb[b].apply(this,arguments)})}),gb.format=function(){return this._fullCalendar&&arguments[0]?qa(this,arguments[0]):this._ambigTime?pa(this,"YYYY-MM-DD"):this._ambigZone?pa(this,"YYYY-MM-DD[T]HH:mm:ss"):hb.format.apply(this,arguments); +},gb.toISOString=function(){return this._ambigTime?pa(this,"YYYY-MM-DD"):this._ambigZone?pa(this,"YYYY-MM-DD[T]HH:mm:ss"):hb.toISOString.apply(this,arguments)},gb.isWithin=function(a,b){var c=ma([this,a,b]);return c[0]>=c[1]&&c[0]<c[2]},gb.isSame=function(a,b){var c;return this._fullCalendar?b?(c=ma([this,a],!0),hb.isSame.call(c[0],c[1],b)):(a=Wa.moment.parseZone(a),hb.isSame.call(this,a)&&Boolean(this._ambigTime)===Boolean(a._ambigTime)&&Boolean(this._ambigZone)===Boolean(a._ambigZone)):hb.isSame.apply(this,arguments)},a.each(["isBefore","isAfter"],function(a,b){gb[b]=function(a,c){var d;return this._fullCalendar?(d=ma([this,a]),hb[b].call(d[0],d[1],c)):hb[b].apply(this,arguments)}}),ab="_d"in b()&&"updateOffset"in b,bb=ab?function(a,c){a._d.setTime(Date.UTC.apply(Date,c)),b.updateOffset(a,!1)}:oa,cb=ab?function(a,c){a._d.setTime(+new Date(c[0]||0,c[1]||0,c[2]||0,c[3]||0,c[4]||0,c[5]||0,c[6]||0)),b.updateOffset(a,!1)}:oa;var ib={t:function(a){return pa(a,"a").charAt(0)},T:function(a){return pa(a,"A").charAt(0)}};Wa.formatRange=ta;var jb={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},kb={};Wa.Class=ya,ya.extend=function(){var a,b,c=arguments.length;for(a=0;c>a;a++)b=arguments[a],c-1>a&&Aa(this,b);return za(this,b||{})},ya.mixin=function(a){Aa(this,a)};var lb=Wa.EmitterMixin={on:function(b,c){var d=function(a,b){return c.apply(b.context||this,b.args||[])};return c.guid||(c.guid=a.guid++),d.guid=c.guid,a(this).on(b,d),this},off:function(b,c){return a(this).off(b,c),this},trigger:function(b){var c=Array.prototype.slice.call(arguments,1);return a(this).triggerHandler(b,{args:c}),this},triggerWith:function(b,c,d){return a(this).triggerHandler(b,{context:c,args:d}),this}},mb=Wa.ListenerMixin=function(){var b=0,c={listenerId:null,listenTo:function(b,c,d){if("object"==typeof c)for(var e in c)c.hasOwnProperty(e)&&this.listenTo(b,e,c[e]);else"string"==typeof c&&b.on(c+"."+this.getListenerNamespace(),a.proxy(d,this))},stopListeningTo:function(a,b){a.off((b||"")+"."+this.getListenerNamespace())},getListenerNamespace:function(){return null==this.listenerId&&(this.listenerId=b++),"_listener"+this.listenerId}};return c}(),nb={isIgnoringMouse:!1,delayUnignoreMouse:null,initMouseIgnoring:function(a){this.delayUnignoreMouse=ja(ia(this,"unignoreMouse"),a||1e3)},tempIgnoreMouse:function(){this.isIgnoringMouse=!0,this.delayUnignoreMouse()},unignoreMouse:function(){this.isIgnoringMouse=!1}},ob=ya.extend(mb,{isHidden:!0,options:null,el:null,margin:10,constructor:function(a){this.options=a||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var b=this,c=this.options;this.el=a('<div class="fc-popover"/>').addClass(c.className||"").css({top:0,left:0}).append(c.content).appendTo(c.parentEl),this.el.on("click",".fc-close",function(){b.hide()}),c.autoHide&&this.listenTo(a(document),"mousedown",this.documentMousedown)},documentMousedown:function(b){this.el&&!a(b.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(a(document),"mousedown")},position:function(){var b,c,d,e,f,g=this.options,h=this.el.offsetParent().offset(),i=this.el.outerWidth(),j=this.el.outerHeight(),k=a(window),l=m(this.el);e=g.top||0,f=void 0!==g.left?g.left:void 0!==g.right?g.right-i:0,l.is(window)||l.is(document)?(l=k,b=0,c=0):(d=l.offset(),b=d.top,c=d.left),b+=k.scrollTop(),c+=k.scrollLeft(),g.viewportConstrain!==!1&&(e=Math.min(e,b+l.outerHeight()-j-this.margin),e=Math.max(e,b+this.margin),f=Math.min(f,c+l.outerWidth()-i-this.margin),f=Math.max(f,c+this.margin)),this.el.css({top:e-h.top,left:f-h.left})},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1))}}),pb=Wa.CoordCache=ya.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(b){this.els=a(b.els),this.isHorizontal=b.isHorizontal,this.isVertical=b.isVertical,this.forcedOffsetParentEl=b.offsetParent?a(b.offsetParent):null},build:function(){var a=this.forcedOffsetParentEl||this.els.eq(0).offsetParent();this.origin=a.offset(),this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},queryBoundingRect:function(){var a=m(this.els.eq(0));return a.is(document)?void 0:o(a)},buildElHorizontals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().left,h=f.outerWidth();b.push(g),c.push(g+h)}),this.lefts=b,this.rights=c},buildElVerticals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().top,h=f.outerHeight();b.push(g),c.push(g+h)}),this.tops=b,this.bottoms=c},getHorizontalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.lefts,e=this.rights,f=d.length;if(!c||a>=c.left&&a<c.right)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getVerticalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.tops,e=this.bottoms,f=d.length;if(!c||a>=c.top&&a<c.bottom)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getLeftOffset:function(a){return this.ensureBuilt(),this.lefts[a]},getLeftPosition:function(a){return this.ensureBuilt(),this.lefts[a]-this.origin.left},getRightOffset:function(a){return this.ensureBuilt(),this.rights[a]},getRightPosition:function(a){return this.ensureBuilt(),this.rights[a]-this.origin.left},getWidth:function(a){return this.ensureBuilt(),this.rights[a]-this.lefts[a]},getTopOffset:function(a){return this.ensureBuilt(),this.tops[a]},getTopPosition:function(a){return this.ensureBuilt(),this.tops[a]-this.origin.top},getBottomOffset:function(a){return this.ensureBuilt(),this.bottoms[a]},getBottomPosition:function(a){return this.ensureBuilt(),this.bottoms[a]-this.origin.top},getHeight:function(a){return this.ensureBuilt(),this.bottoms[a]-this.tops[a]}}),qb=Wa.DragListener=ya.extend(mb,nb,{options:null,subjectEl:null,subjectHref:null,originX:null,originY:null,scrollEl:null,isInteracting:!1,isDistanceSurpassed:!1,isDelayEnded:!1,isDragging:!1,isTouch:!1,delay:null,delayTimeoutId:null,minDistance:null,handleTouchScrollProxy:null,constructor:function(a){this.options=a||{},this.handleTouchScrollProxy=ia(this,"handleTouchScroll"),this.initMouseIgnoring(500)},startInteraction:function(b,c){var d=x(b);if("mousedown"===b.type){if(this.isIgnoringMouse)return;if(!u(b))return;b.preventDefault()}this.isInteracting||(c=c||{},this.delay=ba(c.delay,this.options.delay,0),this.minDistance=ba(c.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,this.isInteracting=!0,this.isTouch=d,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=v(b),this.originY=w(b),this.scrollEl=m(a(b.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(b),this.startDelay(b),this.minDistance||this.handleDistanceSurpassed(b))},handleInteractionStart:function(a){this.trigger("interactionStart",a)},endInteraction:function(a,b){this.isInteracting&&(this.endDrag(a),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(a,b),this.isTouch&&this.tempIgnoreMouse())},handleInteractionEnd:function(a,b){this.trigger("interactionEnd",a,b||!1)},bindHandlers:function(){var b=this,c=1;this.isTouch?(this.listenTo(a(document),{touchmove:this.handleTouchMove,touchend:this.endInteraction,touchcancel:this.endInteraction,touchstart:function(a){c?c--:b.endInteraction(a,!0)}}),!A(this.handleTouchScrollProxy)&&this.scrollEl&&this.listenTo(this.scrollEl,"scroll",this.handleTouchScroll)):this.listenTo(a(document),{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(a(document),{selectstart:z,contextmenu:z})},unbindHandlers:function(){this.stopListeningTo(a(document)),B(this.handleTouchScrollProxy),this.scrollEl&&this.stopListeningTo(this.scrollEl,"scroll")},startDrag:function(a,b){this.startInteraction(a,b),this.isDragging||(this.isDragging=!0,this.handleDragStart(a))},handleDragStart:function(a){this.trigger("dragStart",a),this.initHrefHack()},handleMove:function(a){var b,c=v(a)-this.originX,d=w(a)-this.originY,e=this.minDistance;this.isDistanceSurpassed||(b=c*c+d*d,b>=e*e&&this.handleDistanceSurpassed(a)),this.isDragging&&this.handleDrag(c,d,a)},handleDrag:function(a,b,c){this.trigger("drag",a,b,c),this.updateAutoScroll(c)},endDrag:function(a){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(a))},handleDragEnd:function(a){this.trigger("dragEnd",a),this.destroyHrefHack()},startDelay:function(a){var b=this;this.delay?this.delayTimeoutId=setTimeout(function(){b.handleDelayEnd(a)},this.delay):this.handleDelayEnd(a)},handleDelayEnd:function(a){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(a)},handleDistanceSurpassed:function(a){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(a)},handleTouchMove:function(a){this.isDragging&&a.preventDefault(),this.handleMove(a)},handleMouseMove:function(a){this.handleMove(a)},handleTouchScroll:function(a){this.isDragging||this.endInteraction(a,!0)},initHrefHack:function(){var a=this.subjectEl;(this.subjectHref=a?a.attr("href"):null)&&a.removeAttr("href")},destroyHrefHack:function(){var a=this.subjectEl,b=this.subjectHref;setTimeout(function(){b&&a.attr("href",b)},0)},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+a]&&this["_"+a].apply(this,Array.prototype.slice.call(arguments,1))}});qb.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var a=this.scrollEl;this.isAutoScroll=this.options.scroll&&a&&!a.is(window)&&!a.is(document),this.isAutoScroll&&this.listenTo(a,"scroll",ja(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=n(this.scrollEl))},updateAutoScroll:function(a){var b,c,d,e,f=this.scrollSensitivity,g=this.scrollBounds,h=0,i=0;g&&(b=(f-(w(a)-g.top))/f,c=(f-(g.bottom-w(a)))/f,d=(f-(v(a)-g.left))/f,e=(f-(g.right-v(a)))/f,b>=0&&1>=b?h=b*this.scrollSpeed*-1:c>=0&&1>=c&&(h=c*this.scrollSpeed),d>=0&&1>=d?i=d*this.scrollSpeed*-1:e>=0&&1>=e&&(i=e*this.scrollSpeed)),this.setScrollVel(h,i)},setScrollVel:function(a,b){this.scrollTopVel=a,this.scrollLeftVel=b,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(ia(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var a=this.scrollEl;this.scrollTopVel<0?a.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&a.scrollTop()+a[0].clientHeight>=a[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?a.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&a.scrollLeft()+a[0].clientWidth>=a[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var a=this.scrollEl,b=this.scrollIntervalMs/1e3;this.scrollTopVel&&a.scrollTop(a.scrollTop()+this.scrollTopVel*b),this.scrollLeftVel&&a.scrollLeft(a.scrollLeft()+this.scrollLeftVel*b),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var rb=qb.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(a,b){qb.call(this,b),this.component=a},handleInteractionStart:function(a){var b,c,d,e=this.subjectEl;this.computeCoords(),a?(c={left:v(a),top:w(a)},d=c,e&&(b=n(e),d=D(d,b)),this.origHit=this.queryHit(d.left,d.top),e&&this.options.subjectCenter&&(this.origHit&&(b=C(this.origHit,b)||b),d=E(b)),this.coordAdjust=F(d,c)):(this.origHit=null,this.coordAdjust=null),qb.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(a){var b;qb.prototype.handleDragStart.apply(this,arguments),b=this.queryHit(v(a),w(a)),b&&this.handleHitOver(b)},handleDrag:function(a,b,c){var d;qb.prototype.handleDrag.apply(this,arguments),d=this.queryHit(v(c),w(c)),Ba(d,this.hit)||(this.hit&&this.handleHitOut(),d&&this.handleHitOver(d))},handleDragEnd:function(){this.handleHitDone(),qb.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(a){var b=Ba(a,this.origHit);this.hit=a,this.trigger("hitOver",this.hit,b,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){qb.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){qb.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(a,b){return this.coordAdjust&&(a+=this.coordAdjust.left,b+=this.coordAdjust.top),this.component.queryHit(a,b)}}),sb=ya.extend(mb,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(b,c){this.options=c=c||{},this.sourceEl=b,this.parentEl=c.parentEl?a(c.parentEl):b.parent()},start:function(b){this.isFollowing||(this.isFollowing=!0,this.y0=w(b),this.x0=v(b),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),x(b)?this.listenTo(a(document),"touchmove",this.handleMove):this.listenTo(a(document),"mousemove",this.handleMove))},stop:function(b,c){function d(){this.isAnimating=!1,e.removeElement(),this.top0=this.left0=null,c&&c()}var e=this,f=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(a(document)),b&&f&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:f,complete:d})):d())},getEl:function(){var a=this.el;return a||(this.sourceEl.width(),a=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),a.addClass("fc-unselectable"),a.appendTo(this.parentEl)),a},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var a,b;this.getEl(),null===this.top0&&(this.sourceEl.width(),a=this.sourceEl.offset(),b=this.el.offsetParent().offset(),this.top0=a.top-b.top,this.left0=a.left-b.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(a){this.topDelta=w(a)-this.y0,this.leftDelta=v(a)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),tb=Wa.Grid=ya.extend(mb,nb,{view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(a){this.view=a,this.isRTL=a.opt("isRTL"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(a){this.start=a.start.clone(),this.end=a.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var a,b,c=this.view;this.eventTimeFormat=c.opt("eventTimeFormat")||c.opt("timeFormat")||this.computeEventTimeFormat(),a=c.opt("displayEventTime"),null==a&&(a=this.computeDisplayEventTime()),b=c.opt("displayEventEnd"),null==b&&(b=this.computeDisplayEventEnd()),this.displayEventTime=a,this.displayEventEnd=b},spanToSegs:function(a){},diffDates:function(a,b){return this.largeUnit?N(a,b,this.largeUnit):L(a,b)},prepareHits:function(){},releaseHits:function(){},queryHit:function(a,b){},getHitSpan:function(a){},getHitEl:function(a){},setElement:function(a){this.el=a,y(a),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(b,c){var d=this;this.el.on(b,function(b){return a(b.target).is(".fc-event-container *, .fc-more")||a(b.target).closest(".fc-popover").length?void 0:c.call(d,b)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(a(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(a(document))},dayMousedown:function(a){this.isIgnoringMouse||this.dayDragListener.startInteraction(a,{})},dayTouchStart:function(a){var b=this.view;(b.isSelected||b.selectedEvent)&&this.tempIgnoreMouse(),this.dayDragListener.startInteraction(a,{delay:this.view.opt("longPressDelay")})},buildDayDragListener:function(){var a,b,c=this,d=this.view,e=d.opt("selectable"),f=new rb(this,{scroll:d.opt("dragScroll"),interactionStart:function(){a=f.origHit},dragStart:function(){d.unselect()},hitOver:function(d,f,h){h&&(f||(a=null),e&&(b=c.computeSelection(c.getHitSpan(h),c.getHitSpan(d)),b?c.renderSelection(b):b===!1&&g()))},hitOut:function(){a=null,b=null,c.unrenderSelection(),h()},interactionEnd:function(e,f){f||(a&&!c.isIgnoringMouse&&d.triggerDayClick(c.getHitSpan(a),c.getHitEl(a),e),b&&d.reportSelection(b,e),h())}});return f},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(a,b){var c=this.fabricateHelperEvent(a,b);return this.renderHelper(c,b)},fabricateHelperEvent:function(a,b){var c=b?X(b.event):{};return c.start=a.start.clone(),c.end=a.end?a.end.clone():null,c.allDay=null,this.view.calendar.normalizeEventDates(c),c.className=(c.className||[]).concat("fc-helper"),b||(c.editable=!1),c},renderHelper:function(a,b){},unrenderHelper:function(){},renderSelection:function(a){this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(a,b){var c=this.computeSelectionSpan(a,b);return c&&!this.view.calendar.isSelectionSpanAllowed(c)?!1:c},computeSelectionSpan:function(a,b){var c=[a.start,a.end,b.start,b.end];return c.sort(ga),{start:c[0].clone(),end:c[3].clone()}},renderHighlight:function(a){this.renderFill("highlight",this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},renderFill:function(a,b){},unrenderFill:function(a){var b=this.elsByFill[a];b&&(b.remove(),delete this.elsByFill[a])},renderFillSegEls:function(b,c){var d,e=this,f=this[b+"SegEl"],g="",h=[];if(c.length){for(d=0;d<c.length;d++)g+=this.fillSegHtml(b,c[d]);a(g).each(function(b,d){var g=c[b],i=a(d);f&&(i=f.call(e,g,i)),i&&(i=a(i),i.is(e.fillSegTag)&&(g.el=i,h.push(g)))})}return h},fillSegTag:"div",fillSegHtml:function(a,b){var c=this[a+"SegClasses"],d=this[a+"SegCss"],e=c?c.call(this,b):[],f=ea(d?d.call(this,b):{});return"<"+this.fillSegTag+(e.length?' class="'+e.join(" ")+'"':"")+(f?' style="'+f+'"':"")+" />"},getDayClasses:function(a){var b=this.view,c=b.calendar.getNow(),d=["fc-"+$a[a.day()]];return 1==b.intervalDuration.as("months")&&a.month()!=b.intervalStart.month()&&d.push("fc-other-month"),a.isSame(c,"day")?d.push("fc-today",b.highlightStateClass):c>a?d.push("fc-past"):d.push("fc-future"),d}});tb.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(a){var b,c=[],d=[];for(b=0;b<a.length;b++)(Da(a[b])?c:d).push(a[b]);this.segs=[].concat(this.renderBgEvents(c),this.renderFgEvents(d))},renderBgEvents:function(a){var b=this.eventsToSegs(a);return this.renderBgSegs(b)||b},renderFgEvents:function(a){var b=this.eventsToSegs(a);return this.renderFgSegs(b)||b},unrenderEvents:function(){this.handleSegMouseout(),this.clearDragListeners(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(a){},unrenderFgSegs:function(){},renderFgSegEls:function(b,c){var d,e=this.view,f="",g=[];if(b.length){for(d=0;d<b.length;d++)f+=this.fgSegHtml(b[d],c);a(f).each(function(c,d){var f=b[c],h=e.resolveEventEl(f.event,a(d));h&&(h.data("fc-seg",f),f.el=h,g.push(f))})}return g},fgSegHtml:function(a,b){},renderBgSegs:function(a){return this.renderFill("bgEvent",a)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(a,b){return this.view.resolveEventEl(a.event,b)},bgEventSegClasses:function(a){var b=a.event,c=b.source||{};return["fc-bgevent"].concat(b.className,c.className||[])},bgEventSegCss:function(a){return{"background-color":this.getSegSkinCss(a)["background-color"]}},businessHoursSegClasses:function(a){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){this.bindSegHandler("touchstart",this.handleSegTouchStart),this.bindSegHandler("touchend",this.handleSegTouchEnd),this.bindSegHandler("mouseenter",this.handleSegMouseover),this.bindSegHandler("mouseleave",this.handleSegMouseout),this.bindSegHandler("mousedown",this.handleSegMousedown),this.bindSegHandler("click",this.handleSegClick)},bindSegHandler:function(b,c){var d=this;this.el.on(b,".fc-event-container > *",function(b){var e=a(this).data("fc-seg");return!e||d.isDraggingSeg||d.isResizingSeg?void 0:c.call(d,e,b)})},handleSegClick:function(a,b){return this.view.trigger("eventClick",a.el[0],a.event,b)},handleSegMouseover:function(a,b){this.isIgnoringMouse||this.mousedOverSeg||(this.mousedOverSeg=a,a.el.addClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseover",a.el[0],a.event,b))},handleSegMouseout:function(a,b){b=b||{},this.mousedOverSeg&&(a=a||this.mousedOverSeg,this.mousedOverSeg=null,a.el.removeClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseout",a.el[0],a.event,b))},handleSegMousedown:function(a,b){var c=this.startSegResize(a,b,{distance:5});!c&&this.view.isEventDraggable(a.event)&&this.buildSegDragListener(a).startInteraction(b,{distance:5})},handleSegTouchStart:function(a,b){var c,d=this.view,e=a.event,f=d.isEventSelected(e),g=d.isEventDraggable(e),h=d.isEventResizable(e),i=!1;f&&h&&(i=this.startSegResize(a,b)),i||!g&&!h||(c=g?this.buildSegDragListener(a):this.buildSegSelectListener(a),c.startInteraction(b,{delay:f?0:this.view.opt("longPressDelay")})),this.tempIgnoreMouse()},handleSegTouchEnd:function(a,b){this.tempIgnoreMouse()},startSegResize:function(b,c,d){return a(c.target).is(".fc-resizer")?(this.buildSegResizeListener(b,a(c.target).is(".fc-start-resizer")).startInteraction(c,d),!0):!1},buildSegDragListener:function(a){var b,c,d,e=this,f=this.view,i=f.calendar,j=a.el,k=a.event;if(this.segDragListener)return this.segDragListener;var l=this.segDragListener=new rb(f,{scroll:f.opt("dragScroll"),subjectEl:j,subjectCenter:!0,interactionStart:function(d){b=!1,c=new sb(a.el,{additionalClass:"fc-dragging",parentEl:f.el,opacity:l.isTouch?null:f.opt("dragOpacity"),revertDuration:f.opt("dragRevertDuration"),zIndex:2}),c.hide(),c.start(d)},dragStart:function(c){l.isTouch&&!f.isEventSelected(k)&&f.selectEvent(k),b=!0,e.handleSegMouseout(a,c),e.segDragStart(a,c),f.hideEvent(k)},hitOver:function(b,h,j){var m;a.hit&&(j=a.hit),d=e.computeEventDrop(j.component.getHitSpan(j),b.component.getHitSpan(b),k),d&&!i.isEventSpanAllowed(e.eventToSpan(d),k)&&(g(),d=null),d&&(m=f.renderDrag(d,a))?(m.addClass("fc-dragging"),l.isTouch||e.applyDragOpacity(m),c.hide()):c.show(),h&&(d=null)},hitOut:function(){f.unrenderDrag(),c.show(),d=null},hitDone:function(){h()},interactionEnd:function(g){c.stop(!d,function(){b&&(f.unrenderDrag(),f.showEvent(k),e.segDragStop(a,g)),d&&f.reportEventDrop(k,d,this.largeUnit,j,g)}),e.segDragListener=null}});return l},buildSegSelectListener:function(a){var b=this,c=this.view,d=a.event;if(this.segDragListener)return this.segDragListener;var e=this.segDragListener=new qb({dragStart:function(a){e.isTouch&&!c.isEventSelected(d)&&c.selectEvent(d)},interactionEnd:function(a){b.segDragListener=null}});return e},segDragStart:function(a,b){this.isDraggingSeg=!0,this.view.trigger("eventDragStart",a.el[0],a.event,b,{})},segDragStop:function(a,b){this.isDraggingSeg=!1,this.view.trigger("eventDragStop",a.el[0],a.event,b,{})},computeEventDrop:function(a,b,c){var d,e,f=this.view.calendar,g=a.start,h=b.start;return g.hasTime()===h.hasTime()?(d=this.diffDates(h,g),c.allDay&&T(d)?(e={start:c.start.clone(),end:f.getEventEnd(c),allDay:!1},f.normalizeEventTimes(e)):e={start:c.start.clone(),end:c.end?c.end.clone():null,allDay:c.allDay},e.start.add(d),e.end&&e.end.add(d)):e={start:h.clone(),end:null,allDay:!h.hasTime()},e},applyDragOpacity:function(a){var b=this.view.opt("dragOpacity");null!=b&&a.each(function(a,c){c.style.opacity=b})},externalDragStart:function(b,c){var d,e,f=this.view;f.opt("droppable")&&(d=a((c?c.item:null)||b.target),e=f.opt("dropAccept"),(a.isFunction(e)?e.call(d[0],d):d.is(e))&&(this.isDraggingExternal||this.listenToExternalDrag(d,b,c)))},listenToExternalDrag:function(a,b,c){var d,e=this,f=this.view.calendar,i=Ia(a),j=e.externalDragListener=new rb(this,{interactionStart:function(){e.isDraggingExternal=!0},hitOver:function(a){d=e.computeExternalDrop(a.component.getHitSpan(a),i),d&&!f.isExternalSpanAllowed(e.eventToSpan(d),d,i.eventProps)&&(g(),d=null),d&&e.renderDrag(d)},hitOut:function(){d=null},hitDone:function(){h(),e.unrenderDrag()},interactionEnd:function(b){d&&e.view.reportExternalDrop(i,d,a,b,c),e.isDraggingExternal=!1,e.externalDragListener=null}});j.startDrag(b)},computeExternalDrop:function(a,b){var c=this.view.calendar,d={start:c.applyTimezone(a.start),end:null};return b.startTime&&!d.start.hasTime()&&d.start.time(b.startTime),b.duration&&(d.end=d.start.clone().add(b.duration)),d},renderDrag:function(a,b){},unrenderDrag:function(){},buildSegResizeListener:function(a,b){var c,d,e=this,f=this.view,i=f.calendar,j=a.el,k=a.event,l=i.getEventEnd(k),m=this.segResizeListener=new rb(this,{scroll:f.opt("dragScroll"),subjectEl:j,interactionStart:function(){c=!1},dragStart:function(b){c=!0,e.handleSegMouseout(a,b),e.segResizeStart(a,b)},hitOver:function(c,h,j){var m=e.getHitSpan(j),n=e.getHitSpan(c);d=b?e.computeEventStartResize(m,n,k):e.computeEventEndResize(m,n,k),d&&(i.isEventSpanAllowed(e.eventToSpan(d),k)?d.start.isSame(k.start)&&d.end.isSame(l)&&(d=null):(g(),d=null)),d&&(f.hideEvent(k),e.renderEventResize(d,a))},hitOut:function(){d=null},hitDone:function(){e.unrenderEventResize(),f.showEvent(k),h()},interactionEnd:function(b){c&&e.segResizeStop(a,b),d&&f.reportEventResize(k,d,this.largeUnit,j,b),e.segResizeListener=null}});return m},segResizeStart:function(a,b){this.isResizingSeg=!0,this.view.trigger("eventResizeStart",a.el[0],a.event,b,{})},segResizeStop:function(a,b){this.isResizingSeg=!1,this.view.trigger("eventResizeStop",a.el[0],a.event,b,{})},computeEventStartResize:function(a,b,c){return this.computeEventResize("start",a,b,c)},computeEventEndResize:function(a,b,c){return this.computeEventResize("end",a,b,c)},computeEventResize:function(a,b,c,d){var e,f,g=this.view.calendar,h=this.diffDates(c[a],b[a]);return e={start:d.start.clone(),end:g.getEventEnd(d),allDay:d.allDay},e.allDay&&T(h)&&(e.allDay=!1,g.normalizeEventTimes(e)),e[a].add(h),e.start.isBefore(e.end)||(f=this.minResizeDuration||(d.allDay?g.defaultAllDayEventDuration:g.defaultTimedEventDuration),"start"==a?e.start=e.end.clone().subtract(f):e.end=e.start.clone().add(f)),e},renderEventResize:function(a,b){},unrenderEventResize:function(){},getEventTimeText:function(a,b,c){return null==b&&(b=this.eventTimeFormat),null==c&&(c=this.displayEventEnd),this.displayEventTime&&a.start.hasTime()?c&&a.end?this.view.formatRange(a,b):a.start.format(b):""},getSegClasses:function(a,b,c){var d=this.view,e=a.event,f=["fc-event",a.isStart?"fc-start":"fc-not-start",a.isEnd?"fc-end":"fc-not-end"].concat(e.className,e.source?e.source.className:[]);return b&&f.push("fc-draggable"),c&&f.push("fc-resizable"),d.isEventSelected(e)&&f.push("fc-selected"),f},getSegSkinCss:function(a){var b=a.event,c=this.view,d=b.source||{},e=b.color,f=d.color,g=c.opt("eventColor");return{"background-color":b.backgroundColor||e||d.backgroundColor||f||c.opt("eventBackgroundColor")||g,"border-color":b.borderColor||e||d.borderColor||f||c.opt("eventBorderColor")||g,color:b.textColor||d.textColor||c.opt("eventTextColor")}},eventToSegs:function(a){return this.eventsToSegs([a])},eventToSpan:function(a){return this.eventToSpans(a)[0]},eventToSpans:function(a){var b=this.eventToRange(a);return this.eventRangeToSpans(b,a)},eventsToSegs:function(b,c){var d=this,e=Ga(b),f=[];return a.each(e,function(a,b){var e,g=[];for(e=0;e<b.length;e++)g.push(d.eventToRange(b[e]));if(Ea(b[0]))for(g=d.invertRanges(g),e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[0],c));else for(e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[e],c))}),f},eventToRange:function(a){return{start:a.start.clone().stripZone(),end:(a.end?a.end.clone():this.view.calendar.getDefaultEventEnd(null!=a.allDay?a.allDay:!a.start.hasTime(),a.start)).stripZone()}},eventRangeToSegs:function(a,b,c){var d,e=this.eventRangeToSpans(a,b),f=[];for(d=0;d<e.length;d++)f.push.apply(f,this.eventSpanToSegs(e[d],b,c));return f},eventRangeToSpans:function(b,c){return[a.extend({},b)]},eventSpanToSegs:function(a,b,c){var d,e,f=c?c(a):this.spanToSegs(a);for(d=0;d<f.length;d++)e=f[d],e.event=b,e.eventStartMS=+a.start,e.eventDurationMS=a.end-a.start;return f},invertRanges:function(a){var b,c,d=this.view,e=d.start.clone(),f=d.end.clone(),g=[],h=e;for(a.sort(Ha),b=0;b<a.length;b++)c=a[b],c.start>h&&g.push({start:h,end:c.start}),h=c.end;return f>h&&g.push({start:h,end:f}),g},sortEventSegs:function(a){a.sort(ia(this,"compareEventSegs"))},compareEventSegs:function(a,b){return a.eventStartMS-b.eventStartMS||b.eventDurationMS-a.eventDurationMS||b.event.allDay-a.event.allDay||H(a.event,b.event,this.view.eventOrderSpecs)}}),Wa.isBgEvent=Da,Wa.dataAttrPrefix="";var ub=Wa.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){for(var a,b,c,d=this.view,e=this.start.clone(),f=-1,g=[],h=[];e.isBefore(this.end);)d.isHiddenDay(e)?g.push(f+.5):(f++,g.push(f),h.push(e.clone())),e.add(1,"days");if(this.breakOnWeeks){for(b=h[0].day(),a=1;a<h.length&&h[a].day()!=b;a++);c=Math.ceil(h.length/a)}else c=1,a=h.length;this.dayDates=h,this.dayIndices=g,this.daysPerRow=a,this.rowCnt=c,this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt(), +this.colHeadFormat=this.view.opt("columnFormat")||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(a,b){return this.dayDates[this.getCellDayIndex(a,b)].clone()},getCellRange:function(a,b){var c=this.getCellDate(a,b),d=c.clone().add(1,"days");return{start:c,end:d}},getCellDayIndex:function(a,b){return a*this.daysPerRow+this.getColDayIndex(b)},getColDayIndex:function(a){return this.isRTL?this.colCnt-1-a:a},getDateDayIndex:function(a){var b=this.dayIndices,c=a.diff(this.start,"days");return 0>c?b[0]-1:c>=b.length?b[b.length-1]+1:b[c]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(a){var b,c,d,e,f,g=this.daysPerRow,h=this.view.computeDayRange(a),i=this.getDateDayIndex(h.start),j=this.getDateDayIndex(h.end.clone().subtract(1,"days")),k=[];for(b=0;b<this.rowCnt;b++)c=b*g,d=c+g-1,e=Math.max(i,c),f=Math.min(j,d),e=Math.ceil(e),f=Math.floor(f),f>=e&&k.push({row:b,firstRowDayIndex:e-c,lastRowDayIndex:f-c,isStart:e===i,isEnd:f===j});return k},sliceRangeByDay:function(a){var b,c,d,e,f,g,h=this.daysPerRow,i=this.view.computeDayRange(a),j=this.getDateDayIndex(i.start),k=this.getDateDayIndex(i.end.clone().subtract(1,"days")),l=[];for(b=0;b<this.rowCnt;b++)for(c=b*h,d=c+h-1,e=c;d>=e;e++)f=Math.max(j,e),g=Math.min(k,e),f=Math.ceil(f),g=Math.floor(g),g>=f&&l.push({row:b,firstRowDayIndex:f-c,lastRowDayIndex:g-c,isStart:f===j,isEnd:g===k});return l},renderHeadHtml:function(){var a=this.view;return'<div class="fc-row '+a.widgetHeaderClass+'"><table><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},renderHeadDateCellsHtml:function(){var a,b,c=[];for(a=0;a<this.colCnt;a++)b=this.getCellDate(0,a),c.push(this.renderHeadDateCellHtml(b));return c.join("")},renderHeadDateCellHtml:function(a,b,c){var d=this.view;return'<th class="fc-day-header '+d.widgetHeaderClass+" fc-"+$a[a.day()]+'"'+(1==this.rowCnt?' data-date="'+a.format("YYYY-MM-DD")+'"':"")+(b>1?' colspan="'+b+'"':"")+(c?" "+c:"")+">"+ca(a.format(this.colHeadFormat))+"</th>"},renderBgTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(a))+this.renderBgCellsHtml(a)+(this.isRTL?this.renderBgIntroHtml(a):"")+"</tr>"},renderBgIntroHtml:function(a){return this.renderIntroHtml()},renderBgCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderBgCellHtml(c));return d.join("")},renderBgCellHtml:function(a,b){var c=this.view,d=this.getDayClasses(a);return d.unshift("fc-day",c.widgetContentClass),'<td class="'+d.join(" ")+'" data-date="'+a.format("YYYY-MM-DD")+'"'+(b?" "+b:"")+"></td>"},renderIntroHtml:function(){},bookendCells:function(a){var b=this.renderIntroHtml();b&&(this.isRTL?a.append(b):a.prepend(b))}},vb=Wa.DayGrid=tb.extend(ub,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(a){var b,c,d=this.view,e=this.rowCnt,f=this.colCnt,g="";for(b=0;e>b;b++)g+=this.renderDayRowHtml(b,a);for(this.el.html(g),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day"),this.rowCoordCache=new pb({els:this.rowEls,isVertical:!0}),this.colCoordCache=new pb({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),b=0;e>b;b++)for(c=0;f>c;c++)d.trigger("dayRender",null,this.getCellDate(b,c),this.getCellEl(b,c))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(!0),b=this.eventsToSegs(a);this.renderFill("businessHours",b,"bgevent")},unrenderBusinessHours:function(){this.unrenderFill("businessHours")},renderDayRowHtml:function(a,b){var c=this.view,d=["fc-row","fc-week",c.widgetContentClass];return b&&d.push("fc-rigid"),'<div class="'+d.join(" ")+'"><div class="fc-bg"><table>'+this.renderBgTrHtml(a)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.renderNumberTrHtml(a)+"</thead>":"")+"</table></div></div>"},renderNumberTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(a))+this.renderNumberCellsHtml(a)+(this.isRTL?this.renderNumberIntroHtml(a):"")+"</tr>"},renderNumberIntroHtml:function(a){return this.renderIntroHtml()},renderNumberCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderNumberCellHtml(c));return d.join("")},renderNumberCellHtml:function(a){var b;return this.view.dayNumbersVisible?(b=this.getDayClasses(a),b.unshift("fc-day-number"),'<td class="'+b.join(" ")+'" data-date="'+a.format()+'">'+a.date()+"</td>"):"<td/>"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(a){var b,c,d=this.sliceRangeByRow(a);for(b=0;b<d.length;b++)c=d[b],this.isRTL?(c.leftCol=this.daysPerRow-1-c.lastRowDayIndex,c.rightCol=this.daysPerRow-1-c.firstRowDayIndex):(c.leftCol=c.firstRowDayIndex,c.rightCol=c.lastRowDayIndex);return d},prepareHits:function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},queryHit:function(a,b){var c=this.colCoordCache.getHorizontalIndex(a),d=this.rowCoordCache.getVerticalIndex(b);return null!=d&&null!=c?this.getCellHit(d,c):void 0},getHitSpan:function(a){return this.getCellRange(a.row,a.col)},getHitEl:function(a){return this.getCellEl(a.row,a.col)},getCellHit:function(a,b){return{row:a,col:b,component:this,left:this.colCoordCache.getLeftOffset(b),right:this.colCoordCache.getRightOffset(b),top:this.rowCoordCache.getTopOffset(a),bottom:this.rowCoordCache.getBottomOffset(a)}},getCellEl:function(a,b){return this.cellEls.eq(a*this.colCnt+b)},renderDrag:function(a,b){return this.renderHighlight(this.eventToSpan(a)),b&&!b.el.closest(this.el).length?this.renderEventLocationHelper(a,b):void 0},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(a,b){return this.renderHighlight(this.eventToSpan(a)),this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(b,c){var d,e=[],f=this.eventToSegs(b);return f=this.renderFgSegEls(f),d=this.renderSegRows(f),this.rowEls.each(function(b,f){var g,h=a(f),i=a('<div class="fc-helper-skeleton"><table/></div>');g=c&&c.row===b?c.el.position().top:h.find(".fc-content-skeleton tbody").position().top,i.css("top",g).find("table").append(d[b].tbodyEl),h.append(i),e.push(i[0])}),this.helperEls=a(e)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(b,c,d){var e,f,g,h=[];for(c=this.renderFillSegEls(b,c),e=0;e<c.length;e++)f=c[e],g=this.renderFillRow(b,f,d),this.rowEls.eq(f.row).append(g),h.push(g[0]);return this.elsByFill[b]=a(h),c},renderFillRow:function(b,c,d){var e,f,g=this.colCnt,h=c.leftCol,i=c.rightCol+1;return d=d||b.toLowerCase(),e=a('<div class="fc-'+d+'-skeleton"><table><tr/></table></div>'),f=e.find("tr"),h>0&&f.append('<td colspan="'+h+'"/>'),f.append(c.el.attr("colspan",i-h)),g>i&&f.append('<td colspan="'+(g-i)+'"/>'),this.bookendCells(f),e}});vb.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),tb.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return tb.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(b){var c=a.grep(b,function(a){return a.event.allDay});return tb.prototype.renderBgSegs.call(this,c)},renderFgSegs:function(b){var c;return b=this.renderFgSegEls(b),c=this.rowStructs=this.renderSegRows(b),this.rowEls.each(function(b,d){a(d).find(".fc-content-skeleton > table").append(c[b].tbodyEl)}),b},unrenderFgSegs:function(){for(var a,b=this.rowStructs||[];a=b.pop();)a.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(a){var b,c,d=[];for(b=this.groupSegRows(a),c=0;c<b.length;c++)d.push(this.renderSegRow(c,b[c]));return d},fgSegHtml:function(a,b){var c,d,e=this.view,f=a.event,g=e.isEventDraggable(f),h=!b&&f.allDay&&a.isStart&&e.isEventResizableFromStart(f),i=!b&&f.allDay&&a.isEnd&&e.isEventResizableFromEnd(f),j=this.getSegClasses(a,g,h||i),k=ea(this.getSegSkinCss(a)),l="";return j.unshift("fc-day-grid-event","fc-h-event"),a.isStart&&(c=this.getEventTimeText(f),c&&(l='<span class="fc-time">'+ca(c)+"</span>")),d='<span class="fc-title">'+(ca(f.title||"")||"&nbsp;")+"</span>",'<a class="'+j.join(" ")+'"'+(f.url?' href="'+ca(f.url)+'"':"")+(k?' style="'+k+'"':"")+'><div class="fc-content">'+(this.isRTL?d+" "+l:l+" "+d)+"</div>"+(h?'<div class="fc-resizer fc-start-resizer" />':"")+(i?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(b,c){function d(b){for(;b>g;)k=(r[e-1]||[])[g],k?k.attr("rowspan",parseInt(k.attr("rowspan")||1,10)+1):(k=a("<td/>"),h.append(k)),q[e][g]=k,r[e][g]=k,g++}var e,f,g,h,i,j,k,l=this.colCnt,m=this.buildSegLevels(c),n=Math.max(1,m.length),o=a("<tbody/>"),p=[],q=[],r=[];for(e=0;n>e;e++){if(f=m[e],g=0,h=a("<tr/>"),p.push([]),q.push([]),r.push([]),f)for(i=0;i<f.length;i++){for(j=f[i],d(j.leftCol),k=a('<td class="fc-event-container"/>').append(j.el),j.leftCol!=j.rightCol?k.attr("colspan",j.rightCol-j.leftCol+1):r[e][g]=k;g<=j.rightCol;)q[e][g]=k,p[e][g]=j,g++;h.append(k)}d(l),this.bookendCells(h),o.append(h)}return{row:b,tbodyEl:o,cellMatrix:q,segMatrix:p,segLevels:m,segs:c}},buildSegLevels:function(a){var b,c,d,e=[];for(this.sortEventSegs(a),b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Ja(c,e[d]);d++);c.level=d,(e[d]||(e[d]=[])).push(c)}for(d=0;d<e.length;d++)e[d].sort(Ka);return e},groupSegRows:function(a){var b,c=[];for(b=0;b<this.rowCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].row].push(a[b]);return c}}),vb.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(a){var b,c,d=this.rowStructs||[];for(b=0;b<d.length;b++)this.unlimitRow(b),c=a?"number"==typeof a?a:this.computeRowLevelLimit(b):!1,c!==!1&&this.limitRow(b,c)},computeRowLevelLimit:function(b){function c(b,c){f=Math.max(f,a(c).outerHeight())}var d,e,f,g=this.rowEls.eq(b),h=g.height(),i=this.rowStructs[b].tbodyEl.children();for(d=0;d<i.length;d++)if(e=i.eq(d).removeClass("fc-limited"),f=0,e.find("> td > :first-child").each(c),e.position().top+f>h)return d;return!1},limitRow:function(b,c){function d(d){for(;d>w;)j=t.getCellSegs(b,w,c),j.length&&(m=f[c-1][w],s=t.renderMoreLink(b,w,j),r=a("<div/>").append(s),m.append(r),v.push(r[0])),w++}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t=this,u=this.rowStructs[b],v=[],w=0;if(c&&c<u.segLevels.length){for(e=u.segLevels[c-1],f=u.cellMatrix,g=u.tbodyEl.children().slice(c).addClass("fc-limited").get(),h=0;h<e.length;h++){for(i=e[h],d(i.leftCol),l=[],k=0;w<=i.rightCol;)j=this.getCellSegs(b,w,c),l.push(j),k+=j.length,w++;if(k){for(m=f[c-1][i.leftCol],n=m.attr("rowspan")||1,o=[],p=0;p<l.length;p++)q=a('<td class="fc-more-cell"/>').attr("rowspan",n),j=l[p],s=this.renderMoreLink(b,i.leftCol+p,[i].concat(j)),r=a("<div/>").append(s),q.append(r),o.push(q[0]),v.push(q[0]);m.addClass("fc-limited").after(a(o)),g.push(m[0])}}d(this.colCnt),u.moreEls=a(v),u.limitedEls=a(g)}},unlimitRow:function(a){var b=this.rowStructs[a];b.moreEls&&(b.moreEls.remove(),b.moreEls=null),b.limitedEls&&(b.limitedEls.removeClass("fc-limited"),b.limitedEls=null)},renderMoreLink:function(b,c,d){var e=this,f=this.view;return a('<a class="fc-more"/>').text(this.getMoreLinkText(d.length)).on("click",function(g){var h=f.opt("eventLimitClick"),i=e.getCellDate(b,c),j=a(this),k=e.getCellEl(b,c),l=e.getCellSegs(b,c),m=e.resliceDaySegs(l,i),n=e.resliceDaySegs(d,i);"function"==typeof h&&(h=f.trigger("eventLimitClick",null,{date:i,dayEl:k,moreEl:j,segs:m,hiddenSegs:n},g)),"popover"===h?e.showSegPopover(b,c,j,m):"string"==typeof h&&f.calendar.zoomTo(i,h)})},showSegPopover:function(a,b,c,d){var e,f,g=this,h=this.view,i=c.parent();e=1==this.rowCnt?h.el:this.rowEls.eq(a),f={className:"fc-more-popover",content:this.renderSegPopoverContent(a,b,d),parentEl:this.el,top:e.offset().top,autoHide:!0,viewportConstrain:h.opt("popoverViewportConstrain"),hide:function(){g.segPopover.removeElement(),g.segPopover=null,g.popoverSegs=null}},this.isRTL?f.right=i.offset().left+i.outerWidth()+1:f.left=i.offset().left-1,this.segPopover=new ob(f),this.segPopover.show()},renderSegPopoverContent:function(b,c,d){var e,f=this.view,g=f.opt("theme"),h=this.getCellDate(b,c).format(f.opt("dayPopoverFormat")),i=a('<div class="fc-header '+f.widgetHeaderClass+'"><span class="fc-close '+(g?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+ca(h)+'</span><div class="fc-clear"/></div><div class="fc-body '+f.widgetContentClass+'"><div class="fc-event-container"></div></div>'),j=i.find(".fc-event-container");for(d=this.renderFgSegEls(d,!0),this.popoverSegs=d,e=0;e<d.length;e++)this.prepareHits(),d[e].hit=this.getCellHit(b,c),this.releaseHits(),j.append(d[e].el);return i},resliceDaySegs:function(b,c){var d=a.map(b,function(a){return a.event}),e=c.clone(),f=e.clone().add(1,"days"),g={start:e,end:f};return b=this.eventsToSegs(d,function(a){var b=K(a,g);return b?[b]:[]}),this.sortEventSegs(b),b},getMoreLinkText:function(a){var b=this.view.opt("eventLimitText");return"function"==typeof b?b(a):"+"+a+" "+b},getCellSegs:function(a,b,c){for(var d,e=this.rowStructs[a].segMatrix,f=c||0,g=[];f<e.length;)d=e[f][b],d&&g.push(d),f++;return g}});var wb=Wa.TimeGrid=tb.extend(ub,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatContainerEl:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){tb.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.colEls=this.el.find(".fc-day"),this.slatContainerEl=this.el.find(".fc-slats"),this.slatEls=this.slatContainerEl.find("tr"),this.colCoordCache=new pb({els:this.colEls,isHorizontal:!0}),this.slatCoordCache=new pb({els:this.slatEls,isVertical:!0}),this.renderContentSkeleton()},renderHtml:function(){return'<div class="fc-bg"><table>'+this.renderBgTrHtml(0)+'</table></div><div class="fc-slats"><table>'+this.renderSlatRowHtml()+"</table></div>"},renderSlatRowHtml:function(){for(var a,c,d,e=this.view,f=this.isRTL,g="",h=b.duration(+this.minTime);h<this.maxTime;)a=this.start.clone().time(h),c=ha(R(h,this.labelInterval)),d='<td class="fc-axis fc-time '+e.widgetContentClass+'" '+e.axisStyleAttr()+">"+(c?"<span>"+ca(a.format(this.labelFormat))+"</span>":"")+"</td>",g+='<tr data-time="'+a.format("HH:mm:ss")+'"'+(c?"":' class="fc-minor"')+">"+(f?"":d)+'<td class="'+e.widgetContentClass+'"/>'+(f?d:"")+"</tr>",h.add(this.slotDuration);return g},processOptions:function(){var c,d=this.view,e=d.opt("slotDuration"),f=d.opt("snapDuration");e=b.duration(e),f=f?b.duration(f):e,this.slotDuration=e,this.snapDuration=f,this.snapsPerSlot=e/f,this.minResizeDuration=f,this.minTime=b.duration(d.opt("minTime")),this.maxTime=b.duration(d.opt("maxTime")),c=d.opt("slotLabelFormat"),a.isArray(c)&&(c=c[c.length-1]),this.labelFormat=c||d.opt("axisFormat")||d.opt("smallTimeFormat"),c=d.opt("slotLabelInterval"),this.labelInterval=c?b.duration(c):this.computeLabelInterval(e)},computeLabelInterval:function(a){var c,d,e;for(c=Nb.length-1;c>=0;c--)if(d=b.duration(Nb[c]),e=R(d,a),ha(e)&&e>1)return d;return b.duration(a)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(a,b){var c=this.snapsPerSlot,d=this.colCoordCache,e=this.slatCoordCache,f=d.getHorizontalIndex(a),g=e.getVerticalIndex(b);if(null!=f&&null!=g){var h=e.getTopOffset(g),i=e.getHeight(g),j=(b-h)/i,k=Math.floor(j*c),l=g*c+k,m=h+k/c*i,n=h+(k+1)/c*i;return{col:f,snap:l,component:this,left:d.getLeftOffset(f),right:d.getRightOffset(f),top:m,bottom:n}}},getHitSpan:function(a){var b,c=this.getCellDate(0,a.col),d=this.computeSnapTime(a.snap);return c.time(d),b=c.clone().add(this.snapDuration),{start:c,end:b}},getHitEl:function(a){return this.colEls.eq(a.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(a){return b.duration(this.minTime+this.snapDuration*a)},spanToSegs:function(a){var b,c=this.sliceRangeByTimes(a);for(b=0;b<c.length;b++)this.isRTL?c[b].col=this.daysPerRow-1-c[b].dayIndex:c[b].col=c[b].dayIndex;return c},sliceRangeByTimes:function(a){var b,c,d,e,f=[];for(c=0;c<this.daysPerRow;c++)d=this.dayDates[c].clone(),e={start:d.clone().time(this.minTime),end:d.clone().time(this.maxTime)},b=K(a,e),b&&(b.dayIndex=c,f.push(b));return f},updateSize:function(a){this.slatCoordCache.build(),a&&this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))},getTotalSlatHeight:function(){return this.slatContainerEl.outerHeight()},computeDateTop:function(a,c){return this.computeTimeTop(b.duration(a-c.clone().stripTime()))},computeTimeTop:function(a){var b,c,d=this.slatEls.length,e=(a-this.minTime)/this.slotDuration;return e=Math.max(0,e),e=Math.min(d,e),b=Math.floor(e),b=Math.min(b,d-1),c=e-b,this.slatCoordCache.getTopPosition(b)+this.slatCoordCache.getHeight(b)*c},renderDrag:function(a,b){return b?this.renderEventLocationHelper(a,b):void this.renderHighlight(this.eventToSpan(a))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(a,b){return this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(a,b){return this.renderHelperSegs(this.eventToSegs(a),b)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(),b=this.eventsToSegs(a);this.renderBusinessSegs(b)},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return"minute"},renderNowIndicator:function(b){var c,d=this.spanToSegs({start:b,end:b}),e=this.computeDateTop(b,b),f=[];for(c=0;c<d.length;c++)f.push(a('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",e).appendTo(this.colContainerEls.eq(d[c].col))[0]);d.length>0&&f.push(a('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",e).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=a(f)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(a){this.view.opt("selectHelper")?this.renderEventLocationHelper(a):this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(a){this.renderHighlightSegs(this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});wb.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var b,c,d="";for(b=0;b<this.colCnt;b++)d+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';c=a('<div class="fc-content-skeleton"><table><tr>'+d+"</tr></table></div>"),this.colContainerEls=c.find(".fc-content-col"),this.helperContainerEls=c.find(".fc-helper-container"),this.fgContainerEls=c.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=c.find(".fc-bgevent-container"),this.highlightContainerEls=c.find(".fc-highlight-container"),this.businessContainerEls=c.find(".fc-business-container"),this.bookendCells(c.find("tr")),this.el.append(c)},renderFgSegs:function(a){return a=this.renderFgSegsIntoContainers(a,this.fgContainerEls),this.fgSegs=a,a},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(b,c){var d,e,f,g=[];for(b=this.renderFgSegsIntoContainers(b,this.helperContainerEls),d=0;d<b.length;d++)e=b[d],c&&c.col===e.col&&(f=c.el,e.el.css({left:f.css("left"),right:f.css("right"),"margin-left":f.css("margin-left"),"margin-right":f.css("margin-right")})),g.push(e.el[0]);return this.helperSegs=b,a(g)},unrenderHelperSegs:function(){this.unrenderNamedSegs("helperSegs")},renderBgSegs:function(a){return a=this.renderFillSegEls("bgEvent",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.bgContainerEls),this.bgSegs=a,a},unrenderBgSegs:function(){this.unrenderNamedSegs("bgSegs")},renderHighlightSegs:function(a){a=this.renderFillSegEls("highlight",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.highlightContainerEls),this.highlightSegs=a},unrenderHighlightSegs:function(){this.unrenderNamedSegs("highlightSegs")},renderBusinessSegs:function(a){a=this.renderFillSegEls("businessHours",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.businessContainerEls),this.businessSegs=a},unrenderBusinessSegs:function(){this.unrenderNamedSegs("businessSegs")},groupSegsByCol:function(a){var b,c=[];for(b=0;b<this.colCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].col].push(a[b]);return c},attachSegsByCol:function(a,b){var c,d,e;for(c=0;c<this.colCnt;c++)for(d=a[c],e=0;e<d.length;e++)b.eq(c).append(d[e].el)},unrenderNamedSegs:function(a){var b,c=this[a];if(c){for(b=0;b<c.length;b++)c[b].el.remove();this[a]=null}},renderFgSegsIntoContainers:function(a,b){var c,d;for(a=this.renderFgSegEls(a),c=this.groupSegsByCol(a),d=0;d<this.colCnt;d++)this.updateFgSegCoords(c[d]);return this.attachSegsByCol(c,b),a},fgSegHtml:function(a,b){var c,d,e,f=this.view,g=a.event,h=f.isEventDraggable(g),i=!b&&a.isStart&&f.isEventResizableFromStart(g),j=!b&&a.isEnd&&f.isEventResizableFromEnd(g),k=this.getSegClasses(a,h,i||j),l=ea(this.getSegSkinCss(a));return k.unshift("fc-time-grid-event","fc-v-event"),f.isMultiDayEvent(g)?(a.isStart||a.isEnd)&&(c=this.getEventTimeText(a),d=this.getEventTimeText(a,"LT"),e=this.getEventTimeText(a,null,!1)):(c=this.getEventTimeText(g),d=this.getEventTimeText(g,"LT"),e=this.getEventTimeText(g,null,!1)),'<a class="'+k.join(" ")+'"'+(g.url?' href="'+ca(g.url)+'"':"")+(l?' style="'+l+'"':"")+'><div class="fc-content">'+(c?'<div class="fc-time" data-start="'+ca(e)+'" data-full="'+ca(d)+'"><span>'+ca(c)+"</span></div>":"")+(g.title?'<div class="fc-title">'+ca(g.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(j?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},updateSegVerticals:function(a){this.computeSegVerticals(a),this.assignSegVerticals(a)},computeSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.top=this.computeDateTop(c.start,c.start),c.bottom=this.computeDateTop(c.end,c.start)},assignSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateSegVerticalCss(c))},generateSegVerticalCss:function(a){return{top:a.top,bottom:-a.bottom}},updateFgSegCoords:function(a){this.computeSegVerticals(a),this.computeFgSegHorizontals(a),this.assignSegVerticals(a),this.assignFgSegHorizontals(a)},computeFgSegHorizontals:function(a){var b,c,d;if(this.sortEventSegs(a),b=La(a),Ma(b),c=b[0]){for(d=0;d<c.length;d++)Na(c[d]);for(d=0;d<c.length;d++)this.computeFgSegForwardBack(c[d],0,0)}},computeFgSegForwardBack:function(a,b,c){var d,e=a.forwardSegs;if(void 0===a.forwardCoord)for(e.length?(this.sortForwardSegs(e),this.computeFgSegForwardBack(e[0],b+1,c),a.forwardCoord=e[0].backwardCoord):a.forwardCoord=1,a.backwardCoord=a.forwardCoord-(a.forwardCoord-c)/(b+1),d=0;d<e.length;d++)this.computeFgSegForwardBack(e[d],0,a.forwardCoord)},sortForwardSegs:function(a){a.sort(ia(this,"compareForwardSegs"))},compareForwardSegs:function(a,b){return b.forwardPressure-a.forwardPressure||(a.backwardCoord||0)-(b.backwardCoord||0)||this.compareEventSegs(a,b)},assignFgSegHorizontals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateFgSegHorizontalCss(c)),c.bottom-c.top<30&&c.el.addClass("fc-short")},generateFgSegHorizontalCss:function(a){var b,c,d=this.view.opt("slotEventOverlap"),e=a.backwardCoord,f=a.forwardCoord,g=this.generateSegVerticalCss(a);return d&&(f=Math.min(1,e+2*(f-e))),this.isRTL?(b=1-f,c=e):(b=e,c=1-f),g.zIndex=a.level+1,g.left=100*b+"%",g.right=100*c+"%",d&&a.forwardPressure&&(g[this.isRTL?"marginLeft":"marginRight"]=20),g}});var xb=Wa.View=ya.extend(lb,mb,{type:null,name:null,title:null,calendar:null,options:null,el:null,displaying:null,isSkeletonRendered:!1,isEventsRendered:!1,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,selectedEvent:null,eventOrderSpecs:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(a,c,d,e){this.calendar=a,this.type=this.name=c,this.options=d,this.intervalDuration=e||b.duration(1,"day"),this.nextDayThreshold=b.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=G(this.opt("eventOrder")),this.initialize()},initialize:function(){},opt:function(a){return this.options[a]},trigger:function(a,b){var c=this.calendar;return c.trigger.apply(c,[a,b||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(a){this.setRange(this.computeRange(a))},setRange:function(b){a.extend(this,b),this.updateTitle()},computeRange:function(a){var b,c,d=O(this.intervalDuration),e=a.clone().startOf(d),f=e.clone().add(this.intervalDuration);return/year|month|week|day/.test(d)?(e.stripTime(),f.stripTime()):(e.hasTime()||(e=this.calendar.time(0)),f.hasTime()||(f=this.calendar.time(0))),b=e.clone(),b=this.skipHiddenDays(b),c=f.clone(),c=this.skipHiddenDays(c,-1,!0),{intervalUnit:d,intervalStart:e,intervalEnd:f,start:b,end:c}},computePrevDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(a,b){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(a)&&(a=this.skipHiddenDays(a,b),a.startOf("day")),a},updateTitle:function(){this.title=this.computeTitle()},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(a,b,c){var d=a.end;return d.hasTime()||(d=d.clone().subtract(1)),ta(a.start,d,b,c,this.opt("isRTL"))},setElement:function(a){this.el=a,this.bindGlobalHandlers()},removeElement:function(){this.clear(),this.isSkeletonRendered&&(this.unrenderSkeleton(),this.isSkeletonRendered=!1),this.unbindGlobalHandlers(),this.el.remove()},display:function(a,b){var c=this,d=null;return null!=b&&this.displaying&&(d=this.queryScroll()),this.calendar.freezeContentHeight(),ka(this.clear(),function(){return c.displaying=ka(c.displayView(a),function(){null!=b?c.setScroll(b):c.forceScroll(c.computeInitialScroll(d)),c.calendar.unfreezeContentHeight(),c.triggerRender()})})},clear:function(){var b=this,c=this.displaying;return c?ka(c,function(){return b.displaying=null,b.clearEvents(),b.clearView()}):a.when()},displayView:function(a){this.isSkeletonRendered||(this.renderSkeleton(),this.isSkeletonRendered=!0),a&&this.setDate(a),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours(),this.startNowIndicator()},clearView:function(){this.unselect(),this.stopNowIndicator(),this.triggerUnrender(),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy()},renderSkeleton:function(){},unrenderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.trigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.trigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(a(document),"mousedown",this.handleDocumentMousedown),this.listenTo(a(document),"touchstart",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(a(document))},initThemingProps:function(){var a=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=a+"-widget-header",this.widgetContentClass=a+"-widget-content",this.highlightStateClass=a+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var a,c,d,e=this;this.opt("nowIndicator")&&(a=this.getNowIndicatorUnit(),a&&(c=ia(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,d=this.initialNowDate.clone().startOf(a).add(1,a)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){e.nowIndicatorTimeoutID=null,c(),d=+b.duration(1,a),d=Math.max(100,d),e.nowIndicatorIntervalID=setInterval(c,d)},d)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},updateSize:function(a){var b;a&&(b=this.queryScroll()),this.updateHeight(a),this.updateWidth(a),this.updateNowIndicator(),a&&this.setScroll(b)},updateWidth:function(a){},updateHeight:function(a){var b=this.calendar;this.setHeight(b.getSuggestedViewHeight(),b.isHeightAuto())},setHeight:function(a,b){},computeInitialScroll:function(a){return 0},queryScroll:function(){},setScroll:function(a){},forceScroll:function(a){var b=this;this.setScroll(a),setTimeout(function(){b.setScroll(a)},0)},displayEvents:function(a){var b=this.queryScroll();this.clearEvents(),this.renderEvents(a),this.isEventsRendered=!0,this.setScroll(b),this.triggerEventRender()},clearEvents:function(){var a;this.isEventsRendered&&(a=this.queryScroll(),this.triggerEventUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.setScroll(a),this.isEventsRendered=!1)},renderEvents:function(a){},unrenderEvents:function(){},triggerEventRender:function(){this.renderedEventSegEach(function(a){this.trigger("eventAfterRender",a.event,a.event,a.el)}),this.trigger("eventAfterAllRender")},triggerEventUnrender:function(){this.renderedEventSegEach(function(a){this.trigger("eventDestroy",a.event,a.event,a.el)})},resolveEventEl:function(b,c){var d=this.trigger("eventRender",b,b,c);return d===!1?c=null:d&&d!==!0&&(c=a(d)),c},showEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","")},a)},hideEvent:function(a){this.renderedEventSegEach(function(a){ +a.el.css("visibility","hidden")},a)},renderedEventSegEach:function(a,b){var c,d=this.getEventSegs();for(c=0;c<d.length;c++)b&&d[c].event._id!==b._id||d[c].el&&a.call(this,d[c])},getEventSegs:function(){return[]},isEventDraggable:function(a){var b=a.source||{};return ba(a.startEditable,b.startEditable,this.opt("eventStartEditable"),a.editable,b.editable,this.opt("editable"))},reportEventDrop:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventDrop(a,g.dateDelta,h,d,e),f.reportEventChange()},triggerEventDrop:function(a,b,c,d,e){this.trigger("eventDrop",d[0],a,b,c,e,{})},reportExternalDrop:function(b,c,d,e,f){var g,h,i=b.eventProps;i&&(g=a.extend({},i,c),h=this.calendar.renderEvent(g,b.stick)[0]),this.triggerExternalDrop(h,c,d,e,f)},triggerExternalDrop:function(a,b,c,d,e){this.trigger("drop",c[0],b.start,d,e),a&&this.trigger("eventReceive",null,a)},renderDrag:function(a,b){},unrenderDrag:function(){},isEventResizableFromStart:function(a){return this.opt("eventResizableFromStart")&&this.isEventResizable(a)},isEventResizableFromEnd:function(a){return this.isEventResizable(a)},isEventResizable:function(a){var b=a.source||{};return ba(a.durationEditable,b.durationEditable,this.opt("eventDurationEditable"),a.editable,b.editable,this.opt("editable"))},reportEventResize:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventResize(a,g.durationDelta,h,d,e),f.reportEventChange()},triggerEventResize:function(a,b,c,d,e){this.trigger("eventResize",d[0],a,b,c,e,{})},select:function(a,b){this.unselect(b),this.renderSelection(a),this.reportSelection(a,b)},renderSelection:function(a){},reportSelection:function(a,b){this.isSelected=!0,this.triggerSelect(a,b)},triggerSelect:function(a,b){this.trigger("select",null,this.calendar.applyTimezone(a.start),this.calendar.applyTimezone(a.end),b)},unselect:function(a){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.trigger("unselect",null,a))},unrenderSelection:function(){},selectEvent:function(a){this.selectedEvent&&this.selectedEvent===a||(this.unselectEvent(),this.renderedEventSegEach(function(a){a.el.addClass("fc-selected")},a),this.selectedEvent=a)},unselectEvent:function(){this.selectedEvent&&(this.renderedEventSegEach(function(a){a.el.removeClass("fc-selected")},this.selectedEvent),this.selectedEvent=null)},isEventSelected:function(a){return this.selectedEvent&&this.selectedEvent._id===a._id},handleDocumentMousedown:function(a){u(a)&&this.processUnselect(a)},processUnselect:function(a){this.processRangeUnselect(a),this.processEventUnselect(a)},processRangeUnselect:function(b){var c;this.isSelected&&this.opt("unselectAuto")&&(c=this.opt("unselectCancel"),c&&a(b.target).closest(c).length||this.unselect(b))},processEventUnselect:function(b){this.selectedEvent&&(a(b.target).closest(".fc-selected").length||this.unselectEvent())},triggerDayClick:function(a,b,c){this.trigger("dayClick",b,this.calendar.applyTimezone(a.start),c)},initHiddenDays:function(){var b,c=this.opt("hiddenDays")||[],d=[],e=0;for(this.opt("weekends")===!1&&c.push(0,6),b=0;7>b;b++)(d[b]=-1!==a.inArray(b,c))||e++;if(!e)throw"invalid hiddenDays";this.isHiddenDayHash=d},isHiddenDay:function(a){return b.isMoment(a)&&(a=a.day()),this.isHiddenDayHash[a]},skipHiddenDays:function(a,b,c){var d=a.clone();for(b=b||1;this.isHiddenDayHash[(d.day()+(c?b:0)+7)%7];)d.add(b,"days");return d},computeDayRange:function(a){var b,c=a.start.clone().stripTime(),d=a.end,e=null;return d&&(e=d.clone().stripTime(),b=+d.time(),b&&b>=this.nextDayThreshold&&e.add(1,"days")),(!d||c>=e)&&(e=c.clone().add(1,"days")),{start:c,end:e}},isMultiDayEvent:function(a){var b=this.computeDayRange(a);return b.end.diff(b.start,"days")>1}}),yb=Wa.Scroller=ya.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(a){a=a||{},this.overflowX=a.overflowX||a.overflow||"auto",this.overflowY=a.overflowY||a.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=a('<div class="fc-scroller"></div>')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(a){var b=this.overflowX,c=this.overflowY;a=a||this.getScrollbarWidths(),"auto"===b&&(b=a.top||a.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===c&&(c=a.left||a.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":b,"overflow-y":c})},setHeight:function(a){this.scrollEl.height(a)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(a){this.scrollEl.scrollTop(a)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return q(this.scrollEl)}}),zb=Wa.Calendar=ya.extend({dirDefaults:null,langDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,loadingLevel:0,constructor:Qa,initialize:function(){},populateOptionsHash:function(){var a,b,d,e;a=ba(this.dynamicOverrides.lang,this.overrides.lang),b=Ab[a],b||(a=zb.defaults.lang,b=Ab[a]||{}),d=ba(this.dynamicOverrides.isRTL,this.overrides.isRTL,b.isRTL,zb.defaults.isRTL),e=d?zb.rtlDefaults:{},this.dirDefaults=e,this.langDefaults=b,this.options=c([zb.defaults,e,b,this.overrides,this.dynamicOverrides]),Ra(this.options)},getViewSpec:function(a){var b=this.viewSpecCache;return b[a]||(b[a]=this.buildViewSpec(a))},getUnitViewSpec:function(b){var c,d,e;if(-1!=a.inArray(b,_a))for(c=this.header.getViewsWithButtons(),a.each(Wa.views,function(a){c.push(a)}),d=0;d<c.length;d++)if(e=this.getViewSpec(c[d]),e&&e.singleUnit==b)return e},buildViewSpec:function(a){for(var d,e,f,g,h=this.overrides.views||{},i=[],j=[],k=[],l=a;l;)d=Xa[l],e=h[l],l=null,"function"==typeof d&&(d={"class":d}),d&&(i.unshift(d),j.unshift(d.defaults||{}),f=f||d.duration,l=l||d.type),e&&(k.unshift(e),f=f||e.duration,l=l||e.type);return d=W(i),d.type=a,d["class"]?(f&&(f=b.duration(f),f.valueOf()&&(d.duration=f,g=O(f),1===f.as(g)&&(d.singleUnit=g,k.unshift(h[g]||{})))),d.defaults=c(j),d.overrides=c(k),this.buildViewSpecOptions(d),this.buildViewSpecButtonText(d,a),d):!1},buildViewSpecOptions:function(a){a.options=c([zb.defaults,a.defaults,this.dirDefaults,this.langDefaults,this.overrides,a.overrides,this.dynamicOverrides]),Ra(a.options)},buildViewSpecButtonText:function(a,b){function c(c){var d=c.buttonText||{};return d[b]||(a.singleUnit?d[a.singleUnit]:null)}a.buttonTextOverride=c(this.dynamicOverrides)||c(this.overrides)||a.overrides.buttonText,a.buttonTextDefault=c(this.langDefaults)||c(this.dirDefaults)||a.defaults.buttonText||c(zb.defaults)||(a.duration?this.humanizeDuration(a.duration):null)||b},instantiateView:function(a){var b=this.getViewSpec(a);return new b["class"](this,a,b.options,b.duration)},isValidViewType:function(a){return Boolean(this.getViewSpec(a))},pushLoading:function(){this.loadingLevel++||this.trigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.trigger("loading",null,!1,this.view)},buildSelectSpan:function(a,b){var c,d=this.moment(a).stripZone();return c=b?this.moment(b).stripZone():d.hasTime()?d.clone().add(this.defaultTimedEventDuration):d.clone().add(this.defaultAllDayEventDuration),{start:d,end:c}}});zb.mixin(lb),zb.mixin({optionHandlers:null,bindOption:function(a,b){this.bindOptions([a],b)},bindOptions:function(a,b){var c,d={func:b,names:a};for(c=0;c<a.length;c++)this.registerOptionHandlerObj(a[c],d);this.triggerOptionHandlerObj(d)},registerOptionHandlerObj:function(a,b){(this.optionHandlers[a]||(this.optionHandlers[a]=[])).push(b)},triggerOptionHandlers:function(a){var b,c=this.optionHandlers[a]||[];for(b=0;b<c.length;b++)this.triggerOptionHandlerObj(c[b])},triggerOptionHandlerObj:function(a){var b,c=a.names,d=[];for(b=0;b<c.length;b++)d.push(this.options[c[b]]);a.func.apply(this,d)}}),zb.defaults={titleRangeSeparator:" – ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200,longPressDelay:1e3},zb.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},zb.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var Ab=Wa.langs={};Wa.datepickerLang=function(b,c,d){var e=Ab[b]||(Ab[b]={});e.isRTL=d.isRTL,e.weekNumberTitle=d.weekHeader,a.each(Bb,function(a,b){e[a]=b(d)}),a.datepicker&&(a.datepicker.regional[c]=a.datepicker.regional[b]=d,a.datepicker.regional.en=a.datepicker.regional[""],a.datepicker.setDefaults(d))},Wa.lang=function(b,d){var e,f;e=Ab[b]||(Ab[b]={}),d&&(e=Ab[b]=c([e,d])),f=Sa(b),a.each(Cb,function(a,b){null==e[a]&&(e[a]=b(f,e))}),zb.defaults.lang=b};var Bb={buttonText:function(a){return{prev:da(a.prevText),next:da(a.nextText),today:da(a.currentText)}},monthYearFormat:function(a){return a.showMonthAfterYear?"YYYY["+a.yearSuffix+"] MMMM":"MMMM YYYY["+a.yearSuffix+"]"}},Cb={dayOfMonthFormat:function(a,b){var c=a.longDateFormat("l");return c=c.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),b.isRTL?c+=" ddd":c="ddd "+c,c},mediumTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(a){return a.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"")}},Db={smallDayDateFormat:function(a){return a.isRTL?"D dd":"dd D"},weekFormat:function(a){return a.isRTL?"w[ "+a.weekNumberTitle+"]":"["+a.weekNumberTitle+" ]w"},smallWeekFormat:function(a){return a.isRTL?"w["+a.weekNumberTitle+"]":"["+a.weekNumberTitle+"]w"}};Wa.lang("en",zb.englishDefaults),Wa.sourceNormalizers=[],Wa.sourceFetchers=[];var Eb={dataType:"json",cache:!1},Fb=1;zb.prototype.normalizeEvent=function(a){},zb.prototype.getPeerEvents=function(a,b){var c,d,e=this.getEventCache(),f=[];for(c=0;c<e.length;c++)d=e[c],b&&b._id===d._id||f.push(d);return f};var Gb=Wa.BasicView=xb.extend({scroller:null,dayGridClass:vb,dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid(),this.scroller=new yb({overflowX:"hidden",overflowY:"auto"})},instantiateDayGrid:function(){var a=this.dayGridClass.extend(Hb);return new a(this)},setRange:function(a){xb.prototype.setRange.call(this,a),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(a)},computeRange:function(a){var b=xb.prototype.computeRange.call(this,a);return/year|month/.test(b.intervalUnit)&&(b.start.startOf("week"),b.start=this.skipHiddenDays(b.start),b.end.weekday()&&(b.end.add(1,"week").startOf("week"),b.end=this.skipHiddenDays(b.end,-1,!0))),b},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var b=this.scroller.el.addClass("fc-day-grid-container"),c=a('<div class="fc-day-grid" />').appendTo(b);this.el.find(".fc-body > tr > td").append(b),this.dayGrid.setElement(c),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"></td></tr></tbody></table>'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var a=this.opt("eventLimit");return a&&"number"!=typeof a},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=k(this.el.find(".fc-week-number")))},setHeight:function(a,b){var c,d,g=this.opt("eventLimit");this.scroller.clear(),f(this.headRowEl),this.dayGrid.removeSegPopover(),g&&"number"==typeof g&&this.dayGrid.limitRows(g),c=this.computeScrollerHeight(a),this.setGridHeight(c,b),g&&"number"!=typeof g&&this.dayGrid.limitRows(g),b||(this.scroller.setHeight(c),d=this.scroller.getScrollbarWidths(),(d.left||d.right)&&(e(this.headRowEl,d),c=this.computeScrollerHeight(a),this.scroller.setHeight(c)),this.scroller.lockOverflow(d))},computeScrollerHeight:function(a){return a-l(this.el,this.scroller.el)},setGridHeight:function(a,b){b?j(this.dayGrid.rowEls):i(this.dayGrid.rowEls,a,!0)},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(a){this.scroller.setScrollTop(a)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(a,b){return this.dayGrid.queryHit(a,b)},getHitSpan:function(a){return this.dayGrid.getHitSpan(a)},getHitEl:function(a){return this.dayGrid.getHitEl(a)},renderEvents:function(a){this.dayGrid.renderEvents(a),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return this.dayGrid.renderDrag(a,b)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(a){this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Hb={renderHeadIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<th class="fc-week-number '+a.widgetHeaderClass+'" '+a.weekNumberStyleAttr()+"><span>"+ca(a.opt("weekNumberTitle"))+"</span></th>":""},renderNumberIntroHtml:function(a){var b=this.view;return b.weekNumbersVisible?'<td class="fc-week-number" '+b.weekNumberStyleAttr()+"><span>"+this.getCellDate(a,0).format("w")+"</span></td>":""},renderBgIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number '+a.widgetContentClass+'" '+a.weekNumberStyleAttr()+"></td>":""},renderIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number" '+a.weekNumberStyleAttr()+"></td>":""}},Ib=Wa.MonthView=Gb.extend({computeRange:function(a){var b,c=Gb.prototype.computeRange.call(this,a);return this.isFixedWeeks()&&(b=Math.ceil(c.end.diff(c.start,"weeks",!0)),c.end.add(6-b,"weeks")),c},setGridHeight:function(a,b){b=b||"variable"===this.opt("weekMode"),b&&(a*=this.rowCnt/6),i(this.dayGrid.rowEls,a,!b)},isFixedWeeks:function(){var a=this.opt("weekMode");return a?"fixed"===a:this.opt("fixedWeekCount")}});Xa.basic={"class":Gb},Xa.basicDay={type:"basic",duration:{days:1}},Xa.basicWeek={type:"basic",duration:{weeks:1}},Xa.month={"class":Ib,duration:{months:1},defaults:{fixedWeekCount:!0}};var Jb=Wa.AgendaView=xb.extend({scroller:null,timeGridClass:wb,timeGrid:null,dayGridClass:vb,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new yb({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var a=this.timeGridClass.extend(Kb);return new a(this)},instantiateDayGrid:function(){var a=this.dayGridClass.extend(Lb);return new a(this)},setRange:function(a){xb.prototype.setRange.call(this,a),this.timeGrid.setRange(a),this.dayGrid&&this.dayGrid.setRange(a)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var b=this.scroller.el.addClass("fc-time-grid-container"),c=a('<div class="fc-time-grid" />').appendTo(b);this.el.find(".fc-body > tr > td").append(b),this.timeGrid.setElement(c),this.timeGrid.renderDates(),this.bottomRuleEl=a('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+"</td></tr></tbody></table>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(a){this.timeGrid.renderNowIndicator(a)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(a){this.timeGrid.updateSize(a),xb.prototype.updateSize.call(this,a)},updateWidth:function(){this.axisWidth=k(this.el.find(".fc-axis"))},setHeight:function(a,b){var c,d,g;this.bottomRuleEl.hide(),this.scroller.clear(),f(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),c=this.opt("eventLimit"),c&&"number"!=typeof c&&(c=Mb),c&&this.dayGrid.limitRows(c)),b||(d=this.computeScrollerHeight(a),this.scroller.setHeight(d),g=this.scroller.getScrollbarWidths(),(g.left||g.right)&&(e(this.noScrollRowEls,g),d=this.computeScrollerHeight(a),this.scroller.setHeight(d)),this.scroller.lockOverflow(g),this.timeGrid.getTotalSlatHeight()<d&&this.bottomRuleEl.show())},computeScrollerHeight:function(a){return a-l(this.el,this.scroller.el)},computeInitialScroll:function(){var a=b.duration(this.opt("scrollTime")),c=this.timeGrid.computeTimeTop(a);return c=Math.ceil(c),c&&c++,c},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(a){this.scroller.setScrollTop(a)},prepareHits:function(){this.timeGrid.prepareHits(),this.dayGrid&&this.dayGrid.prepareHits()},releaseHits:function(){this.timeGrid.releaseHits(),this.dayGrid&&this.dayGrid.releaseHits()},queryHit:function(a,b){var c=this.timeGrid.queryHit(a,b);return!c&&this.dayGrid&&(c=this.dayGrid.queryHit(a,b)),c},getHitSpan:function(a){return a.component.getHitSpan(a)},getHitEl:function(a){return a.component.getHitEl(a)},renderEvents:function(a){var b,c,d=[],e=[],f=[];for(c=0;c<a.length;c++)a[c].allDay?d.push(a[c]):e.push(a[c]);b=this.timeGrid.renderEvents(e),this.dayGrid&&(f=this.dayGrid.renderEvents(d)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return a.start.hasTime()?this.timeGrid.renderDrag(a,b):this.dayGrid?this.dayGrid.renderDrag(a,b):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(a){a.start.hasTime()||a.end.hasTime()?this.timeGrid.renderSelection(a):this.dayGrid&&this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),Kb={renderHeadIntroHtml:function(){var a,b=this.view;return b.opt("weekNumbers")?(a=this.start.format(b.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"><span>"+ca(a)+"</span></th>"):'<th class="fc-axis '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Lb={renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"><span>"+(a.opt("allDayHtml")||ca(a.opt("allDayText")))+"</span></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Mb=5,Nb=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];return Xa.agenda={"class":Jb,defaults:{allDaySlot:!0,allDayText:"all-day",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Xa.agendaDay={type:"agenda",duration:{days:1}},Xa.agendaWeek={type:"agenda",duration:{weeks:1}},Wa}); \ No newline at end of file diff --git a/plugins/gmaps/gmaps.js b/plugins/gmaps/gmaps.js new file mode 100644 index 0000000..dd7b0ae --- /dev/null +++ b/plugins/gmaps/gmaps.js @@ -0,0 +1,2132 @@ +(function(root, factory) { + if(typeof exports === 'object') { + module.exports = factory(); + } + else if(typeof define === 'function' && define.amd) { + define('GMaps', [], factory); + } + + root.GMaps = factory(); + +}(this, function() { + +/*! + * GMaps.js v0.4.15 + * http://hpneo.github.com/gmaps/ + * + * Copyright 2014, Gustavo Leon + * Released under the MIT License. + */ + +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + callback_params = original_callback_params; + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) == "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in this && context) { + element = $("#" + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = ['bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', 'resize', 'tilesloaded', 'zoom_changed'], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + container_id = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + this.el = getElementById(container_id, options.context); + } else { + this.el = container_id; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '<li><a id="' + control + '_' + i + '" href="#">' + option.title + '</a></li>'; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length; + var bounds = new google.maps.LatLngBounds(); + + for(var i=0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i=0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); + +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null; + + for (var i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position] + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + break; + } + } + } + + return control; +}; + +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + this.markers[i].setMap(null); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + if (this.markers.indexOf(collection[i]) > -1) { + this.markers[i].setMap(null); + } + } + + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i].getMap() != null) { + new_markers.push(this.markers[i]); + } + } + + this.markers = new_markers; + } +}; + +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; + +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i=0, latlng; latlng=points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; + +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; + +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + self.drawPolyline({ + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i=0, step; step=steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i=0, step; step=steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i=0, step; step=steps[i]; i++) { + step.step_number = i; + self.drawPolyline({ + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i=0, step; step=steps[i]; i++) { + step.step_number = i; + self.drawPolyline({ + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + this.polyline = this.map.drawPolyline({ + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; + +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; + +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = 'http://maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i=0; data=markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; + +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; + +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; + +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; + +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; + +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; + +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} + +return GMaps; +})); diff --git a/plugins/gmaps/gmaps.min.js b/plugins/gmaps/gmaps.min.js new file mode 100644 index 0000000..cf4fb63 --- /dev/null +++ b/plugins/gmaps/gmaps.min.js @@ -0,0 +1,2 @@ +"use strict";!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd&&define("GMaps",[],b),a.GMaps=b()}(this,function(){if("object"!=typeof window.google||!window.google.maps)throw"Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.";var a=function(a,b){var c;if(a===b)return a;for(c in b)a[c]=b[c];return a},b=function(a,b){var c,d=Array.prototype.slice.call(arguments,2),e=[],f=a.length;if(Array.prototype.map&&a.map===Array.prototype.map)e=Array.prototype.map.call(a,function(a){var c=d.slice(0);return c.splice(0,0,a),b.apply(this,c)});else for(c=0;f>c;c++)callback_params=d,callback_params.splice(0,0,a[c]),e.push(b.apply(this,callback_params));return e},c=function(a){var b,c=[];for(b=0;b<a.length;b++)c=c.concat(a[b]);return c},d=function(a,b){var c=a[0],d=a[1];return b&&(c=a[1],d=a[0]),new google.maps.LatLng(c,d)},f=function(a,b){var c;for(c=0;c<a.length;c++)a[c]instanceof google.maps.LatLng||(a[c].length>0&&"object"==typeof a[c][0]?a[c]=f(a[c],b):a[c]=d(a[c],b));return a},g=function(a,b){var c,d=a.replace(".","");return c="jQuery"in this&&b?$("."+d,b)[0]:document.getElementsByClassName(d)[0]},h=function(a,b){var c,a=a.replace("#","");return c="jQuery"in window&&b?$("#"+a,b)[0]:document.getElementById(a)},i=function(a){var b=0,c=0;if(a.offsetParent)do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent);return[b,c]},j=function(b){var c=document,d=function(b){if(!this)return new d(b);b.zoom=b.zoom||15,b.mapType=b.mapType||"roadmap";var e,f=this,j=["bounds_changed","center_changed","click","dblclick","drag","dragend","dragstart","idle","maptypeid_changed","projection_changed","resize","tilesloaded","zoom_changed"],k=["mousemove","mouseout","mouseover"],l=["el","lat","lng","mapType","width","height","markerClusterer","enableNewStyle"],m=b.el||b.div,n=b.markerClusterer,o=google.maps.MapTypeId[b.mapType.toUpperCase()],p=new google.maps.LatLng(b.lat,b.lng),q=b.zoomControl||!0,r=b.zoomControlOpt||{style:"DEFAULT",position:"TOP_LEFT"},s=r.style||"DEFAULT",t=r.position||"TOP_LEFT",u=b.panControl||!0,v=b.mapTypeControl||!0,w=b.scaleControl||!0,x=b.streetViewControl||!0,y=y||!0,z={},A={zoom:this.zoom,center:p,mapTypeId:o},B={panControl:u,zoomControl:q,zoomControlOptions:{style:google.maps.ZoomControlStyle[s],position:google.maps.ControlPosition[t]},mapTypeControl:v,scaleControl:w,streetViewControl:x,overviewMapControl:y};if("string"==typeof b.el||"string"==typeof b.div?m.indexOf("#")>-1?this.el=h(m,b.context):this.el=g.apply(this,[m,b.context]):this.el=m,"undefined"==typeof this.el||null===this.el)throw"No element defined.";for(window.context_menu=window.context_menu||{},window.context_menu[f.el.id]={},this.controls=[],this.overlays=[],this.layers=[],this.singleLayers={},this.markers=[],this.polylines=[],this.routes=[],this.polygons=[],this.infoWindow=null,this.overlay_el=null,this.zoom=b.zoom,this.registered_events={},this.el.style.width=b.width||this.el.scrollWidth||this.el.offsetWidth,this.el.style.height=b.height||this.el.scrollHeight||this.el.offsetHeight,google.maps.visualRefresh=b.enableNewStyle,e=0;e<l.length;e++)delete b[l[e]];for(1!=b.disableDefaultUI&&(A=a(A,B)),z=a(A,b),e=0;e<j.length;e++)delete z[j[e]];for(e=0;e<k.length;e++)delete z[k[e]];this.map=new google.maps.Map(this.el,z),n&&(this.markerClusterer=n.apply(this,[this.map]));var C=function(a,b){var c="",d=window.context_menu[f.el.id][a];for(var e in d)if(d.hasOwnProperty(e)){var g=d[e];c+='<li><a id="'+a+"_"+e+'" href="#">'+g.title+"</a></li>"}if(h("gmaps_context_menu")){var j=h("gmaps_context_menu");j.innerHTML=c;var e,k=j.getElementsByTagName("a"),l=k.length;for(e=0;l>e;e++){var m=k[e],n=function(c){c.preventDefault(),d[this.id.replace(a+"_","")].action.apply(f,[b]),f.hideContextMenu()};google.maps.event.clearListeners(m,"click"),google.maps.event.addDomListenerOnce(m,"click",n,!1)}var o=i.apply(this,[f.el]),p=o[0]+b.pixel.x-15,q=o[1]+b.pixel.y-15;j.style.left=p+"px",j.style.top=q+"px",j.style.display="block"}};this.buildContextMenu=function(a,b){if("marker"===a){b.pixel={};var c=new google.maps.OverlayView;c.setMap(f.map),c.draw=function(){var d=c.getProjection(),e=b.marker.getPosition();b.pixel=d.fromLatLngToContainerPixel(e),C(a,b)}}else C(a,b)},this.setContextMenu=function(a){window.context_menu[f.el.id][a.control]={};var b,d=c.createElement("ul");for(b in a.options)if(a.options.hasOwnProperty(b)){var e=a.options[b];window.context_menu[f.el.id][a.control][e.name]={title:e.title,action:e.action}}d.id="gmaps_context_menu",d.style.display="none",d.style.position="absolute",d.style.minWidth="100px",d.style.background="white",d.style.listStyle="none",d.style.padding="8px",d.style.boxShadow="2px 2px 6px #ccc",c.body.appendChild(d);var g=h("gmaps_context_menu");google.maps.event.addDomListener(g,"mouseout",function(a){a.relatedTarget&&this.contains(a.relatedTarget)||window.setTimeout(function(){g.style.display="none"},400)},!1)},this.hideContextMenu=function(){var a=h("gmaps_context_menu");a&&(a.style.display="none")};var D=function(a,c){google.maps.event.addListener(a,c,function(a){void 0==a&&(a=this),b[c].apply(this,[a]),f.hideContextMenu()})};google.maps.event.addListener(this.map,"zoom_changed",this.hideContextMenu);for(var E=0;E<j.length;E++){var F=j[E];F in b&&D(this.map,F)}for(var E=0;E<k.length;E++){var F=k[E];F in b&&D(this.map,F)}google.maps.event.addListener(this.map,"rightclick",function(a){b.rightclick&&b.rightclick.apply(this,[a]),void 0!=window.context_menu[f.el.id].map&&f.buildContextMenu("map",a)}),this.refresh=function(){google.maps.event.trigger(this.map,"resize")},this.fitZoom=function(){var a,b=[],c=this.markers.length;for(a=0;c>a;a++)"boolean"==typeof this.markers[a].visible&&this.markers[a].visible&&b.push(this.markers[a].getPosition());this.fitLatLngBounds(b)},this.fitLatLngBounds=function(a){var b,c=a.length,d=new google.maps.LatLngBounds;for(b=0;c>b;b++)d.extend(a[b]);this.map.fitBounds(d)},this.setCenter=function(a,b,c){this.map.panTo(new google.maps.LatLng(a,b)),c&&c()},this.getElement=function(){return this.el},this.zoomIn=function(a){a=a||1,this.zoom=this.map.getZoom()+a,this.map.setZoom(this.zoom)},this.zoomOut=function(a){a=a||1,this.zoom=this.map.getZoom()-a,this.map.setZoom(this.zoom)};var G,H=[];for(G in this.map)"function"!=typeof this.map[G]||this[G]||H.push(G);for(e=0;e<H.length;e++)!function(a,b,c){a[c]=function(){return b[c].apply(b,arguments)}}(this,this.map,H[e])};return d}(this);j.prototype.createControl=function(a){var b=document.createElement("div");b.style.cursor="pointer",a.disableDefaultStyles!==!0&&(b.style.fontFamily="Roboto, Arial, sans-serif",b.style.fontSize="11px",b.style.boxShadow="rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px");for(var c in a.style)b.style[c]=a.style[c];a.id&&(b.id=a.id),a.classes&&(b.className=a.classes),a.content&&("string"==typeof a.content?b.innerHTML=a.content:a.content instanceof HTMLElement&&b.appendChild(a.content)),a.position&&(b.position=google.maps.ControlPosition[a.position.toUpperCase()]);for(var d in a.events)!function(b,c){google.maps.event.addDomListener(b,c,function(){a.events[c].apply(this,[this])})}(b,d);return b.index=1,b},j.prototype.addControl=function(a){var b=this.createControl(a);return this.controls.push(b),this.map.controls[b.position].push(b),b},j.prototype.removeControl=function(a){var b,c=null;for(b=0;b<this.controls.length;b++)this.controls[b]==a&&(c=this.controls[b].position,this.controls.splice(b,1));if(c)for(b=0;b<this.map.controls.length;b++){var d=this.map.controls[a.position];if(d.getAt(b)==a){d.removeAt(b);break}}return a},j.prototype.createMarker=function(b){if(void 0==b.lat&&void 0==b.lng&&void 0==b.position)throw"No latitude or longitude defined.";var c=this,d=b.details,e=b.fences,f=b.outside,g={position:new google.maps.LatLng(b.lat,b.lng),map:null},h=a(g,b);delete h.lat,delete h.lng,delete h.fences,delete h.outside;var i=new google.maps.Marker(h);if(i.fences=e,b.infoWindow){i.infoWindow=new google.maps.InfoWindow(b.infoWindow);for(var j=["closeclick","content_changed","domready","position_changed","zindex_changed"],k=0;k<j.length;k++)!function(a,c){b.infoWindow[c]&&google.maps.event.addListener(a,c,function(a){b.infoWindow[c].apply(this,[a])})}(i.infoWindow,j[k])}for(var l=["animation_changed","clickable_changed","cursor_changed","draggable_changed","flat_changed","icon_changed","position_changed","shadow_changed","shape_changed","title_changed","visible_changed","zindex_changed"],m=["dblclick","drag","dragend","dragstart","mousedown","mouseout","mouseover","mouseup"],k=0;k<l.length;k++)!function(a,c){b[c]&&google.maps.event.addListener(a,c,function(){b[c].apply(this,[this])})}(i,l[k]);for(var k=0;k<m.length;k++)!function(a,c,d){b[d]&&google.maps.event.addListener(c,d,function(c){c.pixel||(c.pixel=a.getProjection().fromLatLngToPoint(c.latLng)),b[d].apply(this,[c])})}(this.map,i,m[k]);return google.maps.event.addListener(i,"click",function(){this.details=d,b.click&&b.click.apply(this,[this]),i.infoWindow&&(c.hideInfoWindows(),i.infoWindow.open(c.map,i))}),google.maps.event.addListener(i,"rightclick",function(a){a.marker=this,b.rightclick&&b.rightclick.apply(this,[a]),void 0!=window.context_menu[c.el.id].marker&&c.buildContextMenu("marker",a)}),i.fences&&google.maps.event.addListener(i,"dragend",function(){c.checkMarkerGeofence(i,function(a,b){f(a,b)})}),i},j.prototype.addMarker=function(a){var b;if(a.hasOwnProperty("gm_accessors_"))b=a;else{if(!(a.hasOwnProperty("lat")&&a.hasOwnProperty("lng")||a.position))throw"No latitude or longitude defined.";b=this.createMarker(a)}return b.setMap(this.map),this.markerClusterer&&this.markerClusterer.addMarker(b),this.markers.push(b),j.fire("marker_added",b,this),b},j.prototype.addMarkers=function(a){for(var b,c=0;b=a[c];c++)this.addMarker(b);return this.markers},j.prototype.hideInfoWindows=function(){for(var a,b=0;a=this.markers[b];b++)a.infoWindow&&a.infoWindow.close()},j.prototype.removeMarker=function(a){for(var b=0;b<this.markers.length;b++)if(this.markers[b]===a){this.markers[b].setMap(null),this.markers.splice(b,1),this.markerClusterer&&this.markerClusterer.removeMarker(a),j.fire("marker_removed",a,this);break}return a},j.prototype.removeMarkers=function(a){var b=[];if("undefined"==typeof a){for(var c=0;c<this.markers.length;c++){var d=this.markers[c];d.setMap(null),this.markerClusterer&&this.markerClusterer.removeMarker(d),j.fire("marker_removed",d,this)}this.markers=b}else{for(var c=0;c<a.length;c++){var e=this.markers.indexOf(a[c]);if(e>-1){var d=this.markers[e];d.setMap(null),this.markerClusterer&&this.markerClusterer.removeMarker(d),j.fire("marker_removed",d,this)}}for(var c=0;c<this.markers.length;c++){var d=this.markers[c];null!=d.getMap()&&b.push(d)}this.markers=b}},j.prototype.drawOverlay=function(a){var b=new google.maps.OverlayView,c=!0;return b.setMap(this.map),null!=a.auto_show&&(c=a.auto_show),b.onAdd=function(){var c=document.createElement("div");c.style.borderStyle="none",c.style.borderWidth="0px",c.style.position="absolute",c.style.zIndex=100,c.innerHTML=a.content,b.el=c,a.layer||(a.layer="overlayLayer");var d=this.getPanes(),e=d[a.layer],f=["contextmenu","DOMMouseScroll","dblclick","mousedown"];e.appendChild(c);for(var g=0;g<f.length;g++)!function(a,b){google.maps.event.addDomListener(a,b,function(a){-1!=navigator.userAgent.toLowerCase().indexOf("msie")&&document.all?(a.cancelBubble=!0,a.returnValue=!1):a.stopPropagation()})}(c,f[g]);a.click&&(d.overlayMouseTarget.appendChild(b.el),google.maps.event.addDomListener(b.el,"click",function(){a.click.apply(b,[b])})),google.maps.event.trigger(this,"ready")},b.draw=function(){var d=this.getProjection(),e=d.fromLatLngToDivPixel(new google.maps.LatLng(a.lat,a.lng));a.horizontalOffset=a.horizontalOffset||0,a.verticalOffset=a.verticalOffset||0;var f=b.el,g=f.children[0],h=g.clientHeight,i=g.clientWidth;switch(a.verticalAlign){case"top":f.style.top=e.y-h+a.verticalOffset+"px";break;default:case"middle":f.style.top=e.y-h/2+a.verticalOffset+"px";break;case"bottom":f.style.top=e.y+a.verticalOffset+"px"}switch(a.horizontalAlign){case"left":f.style.left=e.x-i+a.horizontalOffset+"px";break;default:case"center":f.style.left=e.x-i/2+a.horizontalOffset+"px";break;case"right":f.style.left=e.x+a.horizontalOffset+"px"}f.style.display=c?"block":"none",c||a.show.apply(this,[f])},b.onRemove=function(){var c=b.el;a.remove?a.remove.apply(this,[c]):(b.el.parentNode.removeChild(b.el),b.el=null)},this.overlays.push(b),b},j.prototype.removeOverlay=function(a){for(var b=0;b<this.overlays.length;b++)if(this.overlays[b]===a){this.overlays[b].setMap(null),this.overlays.splice(b,1);break}},j.prototype.removeOverlays=function(){for(var a,b=0;a=this.overlays[b];b++)a.setMap(null);this.overlays=[]},j.prototype.drawPolyline=function(a){var b=[],c=a.path;if(c.length)if(void 0===c[0][0])b=c;else for(var d,e=0;d=c[e];e++)b.push(new google.maps.LatLng(d[0],d[1]));var f={map:this.map,path:b,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight,geodesic:a.geodesic,clickable:!0,editable:!1,visible:!0};a.hasOwnProperty("clickable")&&(f.clickable=a.clickable),a.hasOwnProperty("editable")&&(f.editable=a.editable),a.hasOwnProperty("icons")&&(f.icons=a.icons),a.hasOwnProperty("zIndex")&&(f.zIndex=a.zIndex);for(var g=new google.maps.Polyline(f),h=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],i=0;i<h.length;i++)!function(b,c){a[c]&&google.maps.event.addListener(b,c,function(b){a[c].apply(this,[b])})}(g,h[i]);return this.polylines.push(g),j.fire("polyline_added",g,this),g},j.prototype.removePolyline=function(a){for(var b=0;b<this.polylines.length;b++)if(this.polylines[b]===a){this.polylines[b].setMap(null),this.polylines.splice(b,1),j.fire("polyline_removed",a,this);break}},j.prototype.removePolylines=function(){for(var a,b=0;a=this.polylines[b];b++)a.setMap(null);this.polylines=[]},j.prototype.drawCircle=function(b){b=a({map:this.map,center:new google.maps.LatLng(b.lat,b.lng)},b),delete b.lat,delete b.lng;for(var c=new google.maps.Circle(b),d=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],e=0;e<d.length;e++)!function(a,c){b[c]&&google.maps.event.addListener(a,c,function(a){b[c].apply(this,[a])})}(c,d[e]);return this.polygons.push(c),c},j.prototype.drawRectangle=function(b){b=a({map:this.map},b);var c=new google.maps.LatLngBounds(new google.maps.LatLng(b.bounds[0][0],b.bounds[0][1]),new google.maps.LatLng(b.bounds[1][0],b.bounds[1][1]));b.bounds=c;for(var d=new google.maps.Rectangle(b),e=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],f=0;f<e.length;f++)!function(a,c){b[c]&&google.maps.event.addListener(a,c,function(a){b[c].apply(this,[a])})}(d,e[f]);return this.polygons.push(d),d},j.prototype.drawPolygon=function(d){var e=!1;d.hasOwnProperty("useGeoJSON")&&(e=d.useGeoJSON),delete d.useGeoJSON,d=a({map:this.map},d),0==e&&(d.paths=[d.paths.slice(0)]),d.paths.length>0&&d.paths[0].length>0&&(d.paths=c(b(d.paths,f,e)));for(var g=new google.maps.Polygon(d),h=["click","dblclick","mousedown","mousemove","mouseout","mouseover","mouseup","rightclick"],i=0;i<h.length;i++)!function(a,b){d[b]&&google.maps.event.addListener(a,b,function(a){d[b].apply(this,[a])})}(g,h[i]);return this.polygons.push(g),j.fire("polygon_added",g,this),g},j.prototype.removePolygon=function(a){for(var b=0;b<this.polygons.length;b++)if(this.polygons[b]===a){this.polygons[b].setMap(null),this.polygons.splice(b,1),j.fire("polygon_removed",a,this);break}},j.prototype.removePolygons=function(){for(var a,b=0;a=this.polygons[b];b++)a.setMap(null);this.polygons=[]},j.prototype.getFromFusionTables=function(a){var b=a.events;delete a.events;var c=a,d=new google.maps.FusionTablesLayer(c);for(var e in b)!function(a,c){google.maps.event.addListener(a,c,function(a){b[c].apply(this,[a])})}(d,e);return this.layers.push(d),d},j.prototype.loadFromFusionTables=function(a){var b=this.getFromFusionTables(a);return b.setMap(this.map),b},j.prototype.getFromKML=function(a){var b=a.url,c=a.events;delete a.url,delete a.events;var d=a,e=new google.maps.KmlLayer(b,d);for(var f in c)!function(a,b){google.maps.event.addListener(a,b,function(a){c[b].apply(this,[a])})}(e,f);return this.layers.push(e),e},j.prototype.loadFromKML=function(a){var b=this.getFromKML(a);return b.setMap(this.map),b},j.prototype.addLayer=function(a,b){b=b||{};var c;switch(a){case"weather":this.singleLayers.weather=c=new google.maps.weather.WeatherLayer;break;case"clouds":this.singleLayers.clouds=c=new google.maps.weather.CloudLayer;break;case"traffic":this.singleLayers.traffic=c=new google.maps.TrafficLayer;break;case"transit":this.singleLayers.transit=c=new google.maps.TransitLayer;break;case"bicycling":this.singleLayers.bicycling=c=new google.maps.BicyclingLayer;break;case"panoramio":this.singleLayers.panoramio=c=new google.maps.panoramio.PanoramioLayer,c.setTag(b.filter),delete b.filter,b.click&&google.maps.event.addListener(c,"click",function(a){b.click(a),delete b.click});break;case"places":if(this.singleLayers.places=c=new google.maps.places.PlacesService(this.map),b.search||b.nearbySearch||b.radarSearch){var d={bounds:b.bounds||null,keyword:b.keyword||null,location:b.location||null,name:b.name||null,radius:b.radius||null,rankBy:b.rankBy||null,types:b.types||null};b.radarSearch&&c.radarSearch(d,b.radarSearch),b.search&&c.search(d,b.search),b.nearbySearch&&c.nearbySearch(d,b.nearbySearch)}if(b.textSearch){var e={bounds:b.bounds||null,location:b.location||null,query:b.query||null,radius:b.radius||null};c.textSearch(e,b.textSearch)}}return void 0!==c?("function"==typeof c.setOptions&&c.setOptions(b),"function"==typeof c.setMap&&c.setMap(this.map),c):void 0},j.prototype.removeLayer=function(a){if("string"==typeof a&&void 0!==this.singleLayers[a])this.singleLayers[a].setMap(null),delete this.singleLayers[a];else for(var b=0;b<this.layers.length;b++)if(this.layers[b]===a){this.layers[b].setMap(null),this.layers.splice(b,1);break}};var k,l;return j.prototype.getRoutes=function(b){switch(b.travelMode){case"bicycling":k=google.maps.TravelMode.BICYCLING;break;case"transit":k=google.maps.TravelMode.TRANSIT;break;case"driving":k=google.maps.TravelMode.DRIVING;break;default:k=google.maps.TravelMode.WALKING}l="imperial"===b.unitSystem?google.maps.UnitSystem.IMPERIAL:google.maps.UnitSystem.METRIC;var c={avoidHighways:!1,avoidTolls:!1,optimizeWaypoints:!1,waypoints:[]},d=a(c,b);d.origin=/string/.test(typeof b.origin)?b.origin:new google.maps.LatLng(b.origin[0],b.origin[1]),d.destination=/string/.test(typeof b.destination)?b.destination:new google.maps.LatLng(b.destination[0],b.destination[1]),d.travelMode=k,d.unitSystem=l,delete d.callback,delete d.error;var e=this,f=new google.maps.DirectionsService;f.route(d,function(a,c){if(c===google.maps.DirectionsStatus.OK){for(var d in a.routes)a.routes.hasOwnProperty(d)&&e.routes.push(a.routes[d]);b.callback&&b.callback(e.routes)}else b.error&&b.error(a,c)})},j.prototype.removeRoutes=function(){this.routes=[]},j.prototype.getElevations=function(d){d=a({locations:[],path:!1,samples:256},d),d.locations.length>0&&d.locations[0].length>0&&(d.locations=c(b([d.locations],f,!1)));var e=d.callback;delete d.callback;var g=new google.maps.ElevationService;if(d.path){var h={path:d.locations,samples:d.samples};g.getElevationAlongPath(h,function(a,b){e&&"function"==typeof e&&e(a,b)})}else delete d.path,delete d.samples,g.getElevationForLocations(d,function(a,b){e&&"function"==typeof e&&e(a,b)})},j.prototype.cleanRoute=j.prototype.removePolylines,j.prototype.drawRoute=function(a){var b=this;this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(c){if(c.length>0){var d={path:c[c.length-1].overview_path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(d.icons=a.icons),b.drawPolyline(d),a.callback&&a.callback(c[c.length-1])}}})},j.prototype.travelRoute=function(a){if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,unitSystem:a.unitSystem,error:a.error,callback:function(b){if(b.length>0&&a.start&&a.start(b[b.length-1]),b.length>0&&a.step){var c=b[b.length-1];if(c.legs.length>0)for(var d,e=c.legs[0].steps,f=0;d=e[f];f++)d.step_number=f,a.step(d,c.legs[0].steps.length-1)}b.length>0&&a.end&&a.end(b[b.length-1])}});else if(a.route&&a.route.legs.length>0)for(var b,c=a.route.legs[0].steps,d=0;b=c[d];d++)b.step_number=d,a.step(b)},j.prototype.drawSteppedRoute=function(a){var b=this;if(a.origin&&a.destination)this.getRoutes({origin:a.origin,destination:a.destination,travelMode:a.travelMode,waypoints:a.waypoints,error:a.error,callback:function(c){if(c.length>0&&a.start&&a.start(c[c.length-1]),c.length>0&&a.step){var d=c[c.length-1];if(d.legs.length>0)for(var e,f=d.legs[0].steps,g=0;e=f[g];g++){e.step_number=g;var h={path:e.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(h.icons=a.icons),b.drawPolyline(h),a.step(e,d.legs[0].steps.length-1)}}c.length>0&&a.end&&a.end(c[c.length-1])}});else if(a.route&&a.route.legs.length>0)for(var c,d=a.route.legs[0].steps,e=0;c=d[e];e++){c.step_number=e;var f={path:c.path,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(f.icons=a.icons),b.drawPolyline(f),a.step(c)}},j.Route=function(a){this.origin=a.origin,this.destination=a.destination,this.waypoints=a.waypoints,this.map=a.map,this.route=a.route,this.step_count=0,this.steps=this.route.legs[0].steps,this.steps_length=this.steps.length;var b={path:new google.maps.MVCArray,strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight};a.hasOwnProperty("icons")&&(b.icons=a.icons),this.polyline=this.map.drawPolyline(b).getPath()},j.Route.prototype.getRoute=function(a){var b=this;this.map.getRoutes({origin:this.origin,destination:this.destination,travelMode:a.travelMode,waypoints:this.waypoints||[],error:a.error,callback:function(){b.route=e[0],a.callback&&a.callback.call(b)}})},j.Route.prototype.back=function(){if(this.step_count>0){this.step_count--;var a=this.route.legs[0].steps[this.step_count].path;for(var b in a)a.hasOwnProperty(b)&&this.polyline.pop()}},j.Route.prototype.forward=function(){if(this.step_count<this.steps_length){var a=this.route.legs[0].steps[this.step_count].path;for(var b in a)a.hasOwnProperty(b)&&this.polyline.push(a[b]);this.step_count++}},j.prototype.checkGeofence=function(a,b,c){return c.containsLatLng(new google.maps.LatLng(a,b))},j.prototype.checkMarkerGeofence=function(a,b){if(a.fences)for(var c,d=0;c=a.fences[d];d++){var e=a.getPosition();this.checkGeofence(e.lat(),e.lng(),c)||b(a,c)}},j.prototype.toImage=function(a){var a=a||{},b={};if(b.size=a.size||[this.el.clientWidth,this.el.clientHeight],b.lat=this.getCenter().lat(),b.lng=this.getCenter().lng(),this.markers.length>0){b.markers=[];for(var c=0;c<this.markers.length;c++)b.markers.push({lat:this.markers[c].getPosition().lat(),lng:this.markers[c].getPosition().lng()})}if(this.polylines.length>0){var d=this.polylines[0];b.polyline={},b.polyline.path=google.maps.geometry.encoding.encodePath(d.getPath()),b.polyline.strokeColor=d.strokeColor,b.polyline.strokeOpacity=d.strokeOpacity,b.polyline.strokeWeight=d.strokeWeight}return j.staticMapURL(b)},j.staticMapURL=function(a){function b(a,b){if("#"===a[0]&&(a=a.replace("#","0x"),b)){if(b=parseFloat(b),b=Math.min(1,Math.max(b,0)),0===b)return"0x00000000";b=(255*b).toString(16),1===b.length&&(b+=b),a=a.slice(0,8)+b}return a}var c,d=[],e=("file:"===location.protocol?"http:":location.protocol)+"//maps.googleapis.com/maps/api/staticmap";a.url&&(e=a.url,delete a.url),e+="?";var f=a.markers;delete a.markers,!f&&a.marker&&(f=[a.marker],delete a.marker);var g=a.styles;delete a.styles;var h=a.polyline;if(delete a.polyline,a.center)d.push("center="+a.center),delete a.center;else if(a.address)d.push("center="+a.address),delete a.address;else if(a.lat)d.push(["center=",a.lat,",",a.lng].join("")),delete a.lat,delete a.lng;else if(a.visible){var i=encodeURI(a.visible.join("|"));d.push("visible="+i)}var j=a.size;j?(j.join&&(j=j.join("x")),delete a.size):j="630x300",d.push("size="+j),a.zoom||a.zoom===!1||(a.zoom=15);var k=a.hasOwnProperty("sensor")?!!a.sensor:!0;delete a.sensor,d.push("sensor="+k);for(var l in a)a.hasOwnProperty(l)&&d.push(l+"="+a[l]);if(f)for(var m,n,o=0;c=f[o];o++){m=[],c.size&&"normal"!==c.size?(m.push("size:"+c.size),delete c.size):c.icon&&(m.push("icon:"+encodeURI(c.icon)),delete c.icon),c.color&&(m.push("color:"+c.color.replace("#","0x")),delete c.color),c.label&&(m.push("label:"+c.label[0].toUpperCase()),delete c.label),n=c.address?c.address:c.lat+","+c.lng,delete c.address,delete c.lat,delete c.lng;for(var l in c)c.hasOwnProperty(l)&&m.push(l+":"+c[l]);m.length||0===o?(m.push(n),m=m.join("|"),d.push("markers="+encodeURI(m))):(m=d.pop()+encodeURI("|"+n),d.push(m))}if(g)for(var o=0;o<g.length;o++){var p=[];g[o].featureType&&p.push("feature:"+g[o].featureType.toLowerCase()),g[o].elementType&&p.push("element:"+g[o].elementType.toLowerCase());for(var q=0;q<g[o].stylers.length;q++)for(var r in g[o].stylers[q]){var s=g[o].stylers[q][r];("hue"==r||"color"==r)&&(s="0x"+s.substring(1)),p.push(r+":"+s)}var t=p.join("|");""!=t&&d.push("style="+t)}if(h){if(c=h,h=[],c.strokeWeight&&h.push("weight:"+parseInt(c.strokeWeight,10)),c.strokeColor){var u=b(c.strokeColor,c.strokeOpacity);h.push("color:"+u)}if(c.fillColor){var v=b(c.fillColor,c.fillOpacity);h.push("fillcolor:"+v)}var w=c.path;if(w.join)for(var x,q=0;x=w[q];q++)h.push(x.join(","));else h.push("enc:"+w);h=h.join("|"),d.push("path="+encodeURI(h))}var y=window.devicePixelRatio||1;return d.push("scale="+y),d=d.join("&"),e+d},j.prototype.addMapType=function(a,b){if(!b.hasOwnProperty("getTileUrl")||"function"!=typeof b.getTileUrl)throw"'getTileUrl' function required.";b.tileSize=b.tileSize||new google.maps.Size(256,256);var c=new google.maps.ImageMapType(b);this.map.mapTypes.set(a,c)},j.prototype.addOverlayMapType=function(a){if(!a.hasOwnProperty("getTile")||"function"!=typeof a.getTile)throw"'getTile' function required.";var b=a.index;delete a.index,this.map.overlayMapTypes.insertAt(b,a)},j.prototype.removeOverlayMapType=function(a){this.map.overlayMapTypes.removeAt(a)},j.prototype.addStyle=function(a){var b=new google.maps.StyledMapType(a.styles,{name:a.styledMapName});this.map.mapTypes.set(a.mapTypeId,b)},j.prototype.setStyle=function(a){this.map.setMapTypeId(a)},j.prototype.createPanorama=function(a){return a.hasOwnProperty("lat")&&a.hasOwnProperty("lng")||(a.lat=this.getCenter().lat(),a.lng=this.getCenter().lng()),this.panorama=j.createPanorama(a),this.map.setStreetView(this.panorama),this.panorama},j.createPanorama=function(b){var c=h(b.el,b.context);b.position=new google.maps.LatLng(b.lat,b.lng),delete b.el,delete b.context,delete b.lat,delete b.lng;for(var d=["closeclick","links_changed","pano_changed","position_changed","pov_changed","resize","visible_changed"],e=a({visible:!0},b),f=0;f<d.length;f++)delete e[d[f]];for(var g=new google.maps.StreetViewPanorama(c,e),f=0;f<d.length;f++)!function(a,c){b[c]&&google.maps.event.addListener(a,c,function(){b[c].apply(this)})}(g,d[f]);return g},j.prototype.on=function(a,b){return j.on(a,this,b)},j.prototype.off=function(a){j.off(a,this)},j.custom_events=["marker_added","marker_removed","polyline_added","polyline_removed","polygon_added","polygon_removed","geolocated","geolocation_failed"],j.on=function(a,b,c){if(-1==j.custom_events.indexOf(a))return b instanceof j&&(b=b.map),google.maps.event.addListener(b,a,c);var d={handler:c,eventName:a};return b.registered_events[a]=b.registered_events[a]||[],b.registered_events[a].push(d),d},j.off=function(a,b){-1==j.custom_events.indexOf(a)?(b instanceof j&&(b=b.map),google.maps.event.clearListeners(b,a)):b.registered_events[a]=[]},j.fire=function(a,b,c){if(-1==j.custom_events.indexOf(a))google.maps.event.trigger(b,a,Array.prototype.slice.apply(arguments).slice(2));else if(a in c.registered_events)for(var d=c.registered_events[a],e=0;e<d.length;e++)!function(a,b,c){a.apply(b,[c])}(d[e].handler,c,b)},j.geolocate=function(a){var b=a.always||a.complete;navigator.geolocation?navigator.geolocation.getCurrentPosition(function(c){a.success(c),b&&b()},function(c){a.error(c),b&&b()},a.options):(a.not_supported(),b&&b())},j.geocode=function(a){this.geocoder=new google.maps.Geocoder;var b=a.callback;a.hasOwnProperty("lat")&&a.hasOwnProperty("lng")&&(a.latLng=new google.maps.LatLng(a.lat,a.lng)),delete a.lat,delete a.lng,delete a.callback,this.geocoder.geocode(a,function(a,c){b(a,c)})},google.maps.Polygon.prototype.getBounds||(google.maps.Polygon.prototype.getBounds=function(a){for(var b,c=new google.maps.LatLngBounds,d=this.getPaths(),e=0;e<d.getLength();e++){b=d.getAt(e);for(var f=0;f<b.getLength();f++)c.extend(b.getAt(f))}return c}),google.maps.Polygon.prototype.containsLatLng||(google.maps.Polygon.prototype.containsLatLng=function(a){var b=this.getBounds();if(null!==b&&!b.contains(a))return!1;for(var c=!1,d=this.getPaths().getLength(),e=0;d>e;e++)for(var f=this.getPaths().getAt(e),g=f.getLength(),h=g-1,i=0;g>i;i++){var j=f.getAt(i),k=f.getAt(h);(j.lng()<a.lng()&&k.lng()>=a.lng()||k.lng()<a.lng()&&j.lng()>=a.lng())&&j.lat()+(a.lng()-j.lng())/(k.lng()-j.lng())*(k.lat()-j.lat())<a.lat()&&(c=!c),h=i}return c}),google.maps.Circle.prototype.containsLatLng||(google.maps.Circle.prototype.containsLatLng=function(a){return google.maps.geometry?google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(),a)<=this.getRadius():!0}),google.maps.LatLngBounds.prototype.containsLatLng=function(a){return this.contains(a)},google.maps.Marker.prototype.setFences=function(a){this.fences=a},google.maps.Marker.prototype.addFence=function(a){this.fences.push(a)},google.maps.Marker.prototype.getId=function(){return this.__gm_id},Array.prototype.indexOf||(Array.prototype.indexOf=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!=d&&d!=1/0&&d!=-(1/0)&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);c>e;e++)if(e in b&&b[e]===a)return e;return-1}),j}); +//# sourceMappingURL=gmaps.min.js.map \ No newline at end of file diff --git a/plugins/gmaps/lib/gmaps.controls.js b/plugins/gmaps/lib/gmaps.controls.js new file mode 100644 index 0000000..3934803 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.controls.js @@ -0,0 +1,83 @@ +GMaps.prototype.createControl = function(options) { + var control = document.createElement('div'); + + control.style.cursor = 'pointer'; + + if (options.disableDefaultStyles !== true) { + control.style.fontFamily = 'Roboto, Arial, sans-serif'; + control.style.fontSize = '11px'; + control.style.boxShadow = 'rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px'; + } + + for (var option in options.style) { + control.style[option] = options.style[option]; + } + + if (options.id) { + control.id = options.id; + } + + if (options.classes) { + control.className = options.classes; + } + + if (options.content) { + if (typeof options.content === 'string') { + control.innerHTML = options.content; + } + else if (options.content instanceof HTMLElement) { + control.appendChild(options.content); + } + } + + if (options.position) { + control.position = google.maps.ControlPosition[options.position.toUpperCase()]; + } + + for (var ev in options.events) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(){ + options.events[name].apply(this, [this]); + }); + })(control, ev); + } + + control.index = 1; + + return control; +}; + +GMaps.prototype.addControl = function(options) { + var control = this.createControl(options); + + this.controls.push(control); + this.map.controls[control.position].push(control); + + return control; +}; + +GMaps.prototype.removeControl = function(control) { + var position = null, + i; + + for (i = 0; i < this.controls.length; i++) { + if (this.controls[i] == control) { + position = this.controls[i].position; + this.controls.splice(i, 1); + } + } + + if (position) { + for (i = 0; i < this.map.controls.length; i++) { + var controlsForPosition = this.map.controls[control.position]; + + if (controlsForPosition.getAt(i) == control) { + controlsForPosition.removeAt(i); + + break; + } + } + } + + return control; +}; diff --git a/plugins/gmaps/lib/gmaps.core.js b/plugins/gmaps/lib/gmaps.core.js new file mode 100644 index 0000000..1b0bd98 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.core.js @@ -0,0 +1,488 @@ +if (!(typeof window.google === 'object' && window.google.maps)) { + throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.' +} + +var extend_object = function(obj, new_obj) { + var name; + + if (obj === new_obj) { + return obj; + } + + for (name in new_obj) { + obj[name] = new_obj[name]; + } + + return obj; +}; + +var replace_object = function(obj, replace) { + var name; + + if (obj === replace) { + return obj; + } + + for (name in replace) { + if (obj[name] != undefined) { + obj[name] = replace[name]; + } + } + + return obj; +}; + +var array_map = function(array, callback) { + var original_callback_params = Array.prototype.slice.call(arguments, 2), + array_return = [], + array_length = array.length, + i; + + if (Array.prototype.map && array.map === Array.prototype.map) { + array_return = Array.prototype.map.call(array, function(item) { + var callback_params = original_callback_params.slice(0); + callback_params.splice(0, 0, item); + + return callback.apply(this, callback_params); + }); + } + else { + for (i = 0; i < array_length; i++) { + callback_params = original_callback_params; + callback_params.splice(0, 0, array[i]); + array_return.push(callback.apply(this, callback_params)); + } + } + + return array_return; +}; + +var array_flat = function(array) { + var new_array = [], + i; + + for (i = 0; i < array.length; i++) { + new_array = new_array.concat(array[i]); + } + + return new_array; +}; + +var coordsToLatLngs = function(coords, useGeoJSON) { + var first_coord = coords[0], + second_coord = coords[1]; + + if (useGeoJSON) { + first_coord = coords[1]; + second_coord = coords[0]; + } + + return new google.maps.LatLng(first_coord, second_coord); +}; + +var arrayToLatLng = function(coords, useGeoJSON) { + var i; + + for (i = 0; i < coords.length; i++) { + if (!(coords[i] instanceof google.maps.LatLng)) { + if (coords[i].length > 0 && typeof(coords[i][0]) === "object") { + coords[i] = arrayToLatLng(coords[i], useGeoJSON); + } + else { + coords[i] = coordsToLatLngs(coords[i], useGeoJSON); + } + } + } + + return coords; +}; + + +var getElementsByClassName = function (class_name, context) { + + var element, + _class = class_name.replace('.', ''); + + if ('jQuery' in this && context) { + element = $("." + _class, context)[0]; + } else { + element = document.getElementsByClassName(_class)[0]; + } + return element; + +}; + +var getElementById = function(id, context) { + var element, + id = id.replace('#', ''); + + if ('jQuery' in window && context) { + element = $('#' + id, context)[0]; + } else { + element = document.getElementById(id); + }; + + return element; +}; + +var findAbsolutePosition = function(obj) { + var curleft = 0, + curtop = 0; + + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + } + + return [curleft, curtop]; +}; + +var GMaps = (function(global) { + "use strict"; + + var doc = document; + + var GMaps = function(options) { + if (!this) return new GMaps(options); + + options.zoom = options.zoom || 15; + options.mapType = options.mapType || 'roadmap'; + + var self = this, + i, + events_that_hide_context_menu = [ + 'bounds_changed', 'center_changed', 'click', 'dblclick', 'drag', + 'dragend', 'dragstart', 'idle', 'maptypeid_changed', 'projection_changed', + 'resize', 'tilesloaded', 'zoom_changed' + ], + events_that_doesnt_hide_context_menu = ['mousemove', 'mouseout', 'mouseover'], + options_to_be_deleted = ['el', 'lat', 'lng', 'mapType', 'width', 'height', 'markerClusterer', 'enableNewStyle'], + identifier = options.el || options.div, + markerClustererFunction = options.markerClusterer, + mapType = google.maps.MapTypeId[options.mapType.toUpperCase()], + map_center = new google.maps.LatLng(options.lat, options.lng), + zoomControl = options.zoomControl || true, + zoomControlOpt = options.zoomControlOpt || { + style: 'DEFAULT', + position: 'TOP_LEFT' + }, + zoomControlStyle = zoomControlOpt.style || 'DEFAULT', + zoomControlPosition = zoomControlOpt.position || 'TOP_LEFT', + panControl = options.panControl || true, + mapTypeControl = options.mapTypeControl || true, + scaleControl = options.scaleControl || true, + streetViewControl = options.streetViewControl || true, + overviewMapControl = overviewMapControl || true, + map_options = {}, + map_base_options = { + zoom: this.zoom, + center: map_center, + mapTypeId: mapType + }, + map_controls_options = { + panControl: panControl, + zoomControl: zoomControl, + zoomControlOptions: { + style: google.maps.ZoomControlStyle[zoomControlStyle], + position: google.maps.ControlPosition[zoomControlPosition] + }, + mapTypeControl: mapTypeControl, + scaleControl: scaleControl, + streetViewControl: streetViewControl, + overviewMapControl: overviewMapControl + }; + + if (typeof(options.el) === 'string' || typeof(options.div) === 'string') { + + if (identifier.indexOf("#") > -1) { + this.el = getElementById(identifier, options.context); + } else { + this.el = getElementsByClassName.apply(this, [identifier, options.context]); + } + + } else { + this.el = identifier; + } + + if (typeof(this.el) === 'undefined' || this.el === null) { + throw 'No element defined.'; + } + + window.context_menu = window.context_menu || {}; + window.context_menu[self.el.id] = {}; + + this.controls = []; + this.overlays = []; + this.layers = []; // array with kml/georss and fusiontables layers, can be as many + this.singleLayers = {}; // object with the other layers, only one per layer + this.markers = []; + this.polylines = []; + this.routes = []; + this.polygons = []; + this.infoWindow = null; + this.overlay_el = null; + this.zoom = options.zoom; + this.registered_events = {}; + + this.el.style.width = options.width || this.el.scrollWidth || this.el.offsetWidth; + this.el.style.height = options.height || this.el.scrollHeight || this.el.offsetHeight; + + google.maps.visualRefresh = options.enableNewStyle; + + for (i = 0; i < options_to_be_deleted.length; i++) { + delete options[options_to_be_deleted[i]]; + } + + if(options.disableDefaultUI != true) { + map_base_options = extend_object(map_base_options, map_controls_options); + } + + map_options = extend_object(map_base_options, options); + + for (i = 0; i < events_that_hide_context_menu.length; i++) { + delete map_options[events_that_hide_context_menu[i]]; + } + + for (i = 0; i < events_that_doesnt_hide_context_menu.length; i++) { + delete map_options[events_that_doesnt_hide_context_menu[i]]; + } + + this.map = new google.maps.Map(this.el, map_options); + + if (markerClustererFunction) { + this.markerClusterer = markerClustererFunction.apply(this, [this.map]); + } + + var buildContextMenuHTML = function(control, e) { + var html = '', + options = window.context_menu[self.el.id][control]; + + for (var i in options){ + if (options.hasOwnProperty(i)) { + var option = options[i]; + + html += '<li><a id="' + control + '_' + i + '" href="#">' + option.title + '</a></li>'; + } + } + + if (!getElementById('gmaps_context_menu')) return; + + var context_menu_element = getElementById('gmaps_context_menu'); + + context_menu_element.innerHTML = html; + + var context_menu_items = context_menu_element.getElementsByTagName('a'), + context_menu_items_count = context_menu_items.length, + i; + + for (i = 0; i < context_menu_items_count; i++) { + var context_menu_item = context_menu_items[i]; + + var assign_menu_item_action = function(ev){ + ev.preventDefault(); + + options[this.id.replace(control + '_', '')].action.apply(self, [e]); + self.hideContextMenu(); + }; + + google.maps.event.clearListeners(context_menu_item, 'click'); + google.maps.event.addDomListenerOnce(context_menu_item, 'click', assign_menu_item_action, false); + } + + var position = findAbsolutePosition.apply(this, [self.el]), + left = position[0] + e.pixel.x - 15, + top = position[1] + e.pixel.y- 15; + + context_menu_element.style.left = left + "px"; + context_menu_element.style.top = top + "px"; + + context_menu_element.style.display = 'block'; + }; + + this.buildContextMenu = function(control, e) { + if (control === 'marker') { + e.pixel = {}; + + var overlay = new google.maps.OverlayView(); + overlay.setMap(self.map); + + overlay.draw = function() { + var projection = overlay.getProjection(), + position = e.marker.getPosition(); + + e.pixel = projection.fromLatLngToContainerPixel(position); + + buildContextMenuHTML(control, e); + }; + } + else { + buildContextMenuHTML(control, e); + } + }; + + this.setContextMenu = function(options) { + window.context_menu[self.el.id][options.control] = {}; + + var i, + ul = doc.createElement('ul'); + + for (i in options.options) { + if (options.options.hasOwnProperty(i)) { + var option = options.options[i]; + + window.context_menu[self.el.id][options.control][option.name] = { + title: option.title, + action: option.action + }; + } + } + + ul.id = 'gmaps_context_menu'; + ul.style.display = 'none'; + ul.style.position = 'absolute'; + ul.style.minWidth = '100px'; + ul.style.background = 'white'; + ul.style.listStyle = 'none'; + ul.style.padding = '8px'; + ul.style.boxShadow = '2px 2px 6px #ccc'; + + doc.body.appendChild(ul); + + var context_menu_element = getElementById('gmaps_context_menu') + + google.maps.event.addDomListener(context_menu_element, 'mouseout', function(ev) { + if (!ev.relatedTarget || !this.contains(ev.relatedTarget)) { + window.setTimeout(function(){ + context_menu_element.style.display = 'none'; + }, 400); + } + }, false); + }; + + this.hideContextMenu = function() { + var context_menu_element = getElementById('gmaps_context_menu'); + + if (context_menu_element) { + context_menu_element.style.display = 'none'; + } + }; + + var setupListener = function(object, name) { + google.maps.event.addListener(object, name, function(e){ + if (e == undefined) { + e = this; + } + + options[name].apply(this, [e]); + + self.hideContextMenu(); + }); + }; + + //google.maps.event.addListener(this.map, 'idle', this.hideContextMenu); + google.maps.event.addListener(this.map, 'zoom_changed', this.hideContextMenu); + + for (var ev = 0; ev < events_that_hide_context_menu.length; ev++) { + var name = events_that_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + for (var ev = 0; ev < events_that_doesnt_hide_context_menu.length; ev++) { + var name = events_that_doesnt_hide_context_menu[ev]; + + if (name in options) { + setupListener(this.map, name); + } + } + + google.maps.event.addListener(this.map, 'rightclick', function(e) { + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if(window.context_menu[self.el.id]['map'] != undefined) { + self.buildContextMenu('map', e); + } + }); + + this.refresh = function() { + google.maps.event.trigger(this.map, 'resize'); + }; + + this.fitZoom = function() { + var latLngs = [], + markers_length = this.markers.length, + i; + + for (i = 0; i < markers_length; i++) { + if(typeof(this.markers[i].visible) === 'boolean' && this.markers[i].visible) { + latLngs.push(this.markers[i].getPosition()); + } + } + + this.fitLatLngBounds(latLngs); + }; + + this.fitLatLngBounds = function(latLngs) { + var total = latLngs.length, + bounds = new google.maps.LatLngBounds(), + i; + + for(i = 0; i < total; i++) { + bounds.extend(latLngs[i]); + } + + this.map.fitBounds(bounds); + }; + + this.setCenter = function(lat, lng, callback) { + this.map.panTo(new google.maps.LatLng(lat, lng)); + + if (callback) { + callback(); + } + }; + + this.getElement = function() { + return this.el; + }; + + this.zoomIn = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() + value; + this.map.setZoom(this.zoom); + }; + + this.zoomOut = function(value) { + value = value || 1; + + this.zoom = this.map.getZoom() - value; + this.map.setZoom(this.zoom); + }; + + var native_methods = [], + method; + + for (method in this.map) { + if (typeof(this.map[method]) == 'function' && !this[method]) { + native_methods.push(method); + } + } + + for (i = 0; i < native_methods.length; i++) { + (function(gmaps, scope, method_name) { + gmaps[method_name] = function(){ + return scope[method_name].apply(scope, arguments); + }; + })(this, this.map, native_methods[i]); + } + }; + + return GMaps; +})(this); diff --git a/plugins/gmaps/lib/gmaps.events.js b/plugins/gmaps/lib/gmaps.events.js new file mode 100644 index 0000000..a53a881 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.events.js @@ -0,0 +1,54 @@ +GMaps.prototype.on = function(event_name, handler) { + return GMaps.on(event_name, this, handler); +}; + +GMaps.prototype.off = function(event_name) { + GMaps.off(event_name, this); +}; + +GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed']; + +GMaps.on = function(event_name, object, handler) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + return google.maps.event.addListener(object, event_name, handler); + } + else { + var registered_event = { + handler : handler, + eventName : event_name + }; + + object.registered_events[event_name] = object.registered_events[event_name] || []; + object.registered_events[event_name].push(registered_event); + + return registered_event; + } +}; + +GMaps.off = function(event_name, object) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + if(object instanceof GMaps) object = object.map; + google.maps.event.clearListeners(object, event_name); + } + else { + object.registered_events[event_name] = []; + } +}; + +GMaps.fire = function(event_name, object, scope) { + if (GMaps.custom_events.indexOf(event_name) == -1) { + google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2)); + } + else { + if(event_name in scope.registered_events) { + var firing_events = scope.registered_events[event_name]; + + for(var i = 0; i < firing_events.length; i++) { + (function(handler, scope, object) { + handler.apply(scope, [object]); + })(firing_events[i]['handler'], scope, object); + } + } + } +}; diff --git a/plugins/gmaps/lib/gmaps.geofences.js b/plugins/gmaps/lib/gmaps.geofences.js new file mode 100644 index 0000000..74797c8 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.geofences.js @@ -0,0 +1,14 @@ +GMaps.prototype.checkGeofence = function(lat, lng, fence) { + return fence.containsLatLng(new google.maps.LatLng(lat, lng)); +}; + +GMaps.prototype.checkMarkerGeofence = function(marker, outside_callback) { + if (marker.fences) { + for (var i = 0, fence; fence = marker.fences[i]; i++) { + var pos = marker.getPosition(); + if (!this.checkGeofence(pos.lat(), pos.lng(), fence)) { + outside_callback(marker, fence); + } + } + } +}; diff --git a/plugins/gmaps/lib/gmaps.geometry.js b/plugins/gmaps/lib/gmaps.geometry.js new file mode 100644 index 0000000..e7cebd9 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.geometry.js @@ -0,0 +1,205 @@ +GMaps.prototype.drawPolyline = function(options) { + var path = [], + points = options.path; + + if (points.length) { + if (points[0][0] === undefined) { + path = points; + } + else { + for (var i = 0, latlng; latlng = points[i]; i++) { + path.push(new google.maps.LatLng(latlng[0], latlng[1])); + } + } + } + + var polyline_options = { + map: this.map, + path: path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight, + geodesic: options.geodesic, + clickable: true, + editable: false, + visible: true + }; + + if (options.hasOwnProperty("clickable")) { + polyline_options.clickable = options.clickable; + } + + if (options.hasOwnProperty("editable")) { + polyline_options.editable = options.editable; + } + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + if (options.hasOwnProperty("zIndex")) { + polyline_options.zIndex = options.zIndex; + } + + var polyline = new google.maps.Polyline(polyline_options); + + var polyline_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polyline_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polyline, polyline_events[ev]); + } + + this.polylines.push(polyline); + + GMaps.fire('polyline_added', polyline, this); + + return polyline; +}; + +GMaps.prototype.removePolyline = function(polyline) { + for (var i = 0; i < this.polylines.length; i++) { + if (this.polylines[i] === polyline) { + this.polylines[i].setMap(null); + this.polylines.splice(i, 1); + + GMaps.fire('polyline_removed', polyline, this); + + break; + } + } +}; + +GMaps.prototype.removePolylines = function() { + for (var i = 0, item; item = this.polylines[i]; i++) { + item.setMap(null); + } + + this.polylines = []; +}; + +GMaps.prototype.drawCircle = function(options) { + options = extend_object({ + map: this.map, + center: new google.maps.LatLng(options.lat, options.lng) + }, options); + + delete options.lat; + delete options.lng; + + var polygon = new google.maps.Circle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawRectangle = function(options) { + options = extend_object({ + map: this.map + }, options); + + var latLngBounds = new google.maps.LatLngBounds( + new google.maps.LatLng(options.bounds[0][0], options.bounds[0][1]), + new google.maps.LatLng(options.bounds[1][0], options.bounds[1][1]) + ); + + options.bounds = latLngBounds; + + var polygon = new google.maps.Rectangle(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + return polygon; +}; + +GMaps.prototype.drawPolygon = function(options) { + var useGeoJSON = false; + + if(options.hasOwnProperty("useGeoJSON")) { + useGeoJSON = options.useGeoJSON; + } + + delete options.useGeoJSON; + + options = extend_object({ + map: this.map + }, options); + + if (useGeoJSON == false) { + options.paths = [options.paths.slice(0)]; + } + + if (options.paths.length > 0) { + if (options.paths[0].length > 0) { + options.paths = array_flat(array_map(options.paths, arrayToLatLng, useGeoJSON)); + } + } + + var polygon = new google.maps.Polygon(options), + polygon_events = ['click', 'dblclick', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'rightclick']; + + for (var ev = 0; ev < polygon_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(e){ + options[name].apply(this, [e]); + }); + } + })(polygon, polygon_events[ev]); + } + + this.polygons.push(polygon); + + GMaps.fire('polygon_added', polygon, this); + + return polygon; +}; + +GMaps.prototype.removePolygon = function(polygon) { + for (var i = 0; i < this.polygons.length; i++) { + if (this.polygons[i] === polygon) { + this.polygons[i].setMap(null); + this.polygons.splice(i, 1); + + GMaps.fire('polygon_removed', polygon, this); + + break; + } + } +}; + +GMaps.prototype.removePolygons = function() { + for (var i = 0, item; item = this.polygons[i]; i++) { + item.setMap(null); + } + + this.polygons = []; +}; diff --git a/plugins/gmaps/lib/gmaps.layers.js b/plugins/gmaps/lib/gmaps.layers.js new file mode 100644 index 0000000..b8ed339 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.layers.js @@ -0,0 +1,158 @@ +GMaps.prototype.getFromFusionTables = function(options) { + var events = options.events; + + delete options.events; + + var fusion_tables_options = options, + layer = new google.maps.FusionTablesLayer(fusion_tables_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromFusionTables = function(options) { + var layer = this.getFromFusionTables(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.getFromKML = function(options) { + var url = options.url, + events = options.events; + + delete options.url; + delete options.events; + + var kml_options = options, + layer = new google.maps.KmlLayer(url, kml_options); + + for (var ev in events) { + (function(object, name) { + google.maps.event.addListener(object, name, function(e) { + events[name].apply(this, [e]); + }); + })(layer, ev); + } + + this.layers.push(layer); + + return layer; +}; + +GMaps.prototype.loadFromKML = function(options) { + var layer = this.getFromKML(options); + layer.setMap(this.map); + + return layer; +}; + +GMaps.prototype.addLayer = function(layerName, options) { + //var default_layers = ['weather', 'clouds', 'traffic', 'transit', 'bicycling', 'panoramio', 'places']; + options = options || {}; + var layer; + + switch(layerName) { + case 'weather': this.singleLayers.weather = layer = new google.maps.weather.WeatherLayer(); + break; + case 'clouds': this.singleLayers.clouds = layer = new google.maps.weather.CloudLayer(); + break; + case 'traffic': this.singleLayers.traffic = layer = new google.maps.TrafficLayer(); + break; + case 'transit': this.singleLayers.transit = layer = new google.maps.TransitLayer(); + break; + case 'bicycling': this.singleLayers.bicycling = layer = new google.maps.BicyclingLayer(); + break; + case 'panoramio': + this.singleLayers.panoramio = layer = new google.maps.panoramio.PanoramioLayer(); + layer.setTag(options.filter); + delete options.filter; + + //click event + if (options.click) { + google.maps.event.addListener(layer, 'click', function(event) { + options.click(event); + delete options.click; + }); + } + break; + case 'places': + this.singleLayers.places = layer = new google.maps.places.PlacesService(this.map); + + //search, nearbySearch, radarSearch callback, Both are the same + if (options.search || options.nearbySearch || options.radarSearch) { + var placeSearchRequest = { + bounds : options.bounds || null, + keyword : options.keyword || null, + location : options.location || null, + name : options.name || null, + radius : options.radius || null, + rankBy : options.rankBy || null, + types : options.types || null + }; + + if (options.radarSearch) { + layer.radarSearch(placeSearchRequest, options.radarSearch); + } + + if (options.search) { + layer.search(placeSearchRequest, options.search); + } + + if (options.nearbySearch) { + layer.nearbySearch(placeSearchRequest, options.nearbySearch); + } + } + + //textSearch callback + if (options.textSearch) { + var textSearchRequest = { + bounds : options.bounds || null, + location : options.location || null, + query : options.query || null, + radius : options.radius || null + }; + + layer.textSearch(textSearchRequest, options.textSearch); + } + break; + } + + if (layer !== undefined) { + if (typeof layer.setOptions == 'function') { + layer.setOptions(options); + } + if (typeof layer.setMap == 'function') { + layer.setMap(this.map); + } + + return layer; + } +}; + +GMaps.prototype.removeLayer = function(layer) { + if (typeof(layer) == "string" && this.singleLayers[layer] !== undefined) { + this.singleLayers[layer].setMap(null); + + delete this.singleLayers[layer]; + } + else { + for (var i = 0; i < this.layers.length; i++) { + if (this.layers[i] === layer) { + this.layers[i].setMap(null); + this.layers.splice(i, 1); + + break; + } + } + } +}; diff --git a/plugins/gmaps/lib/gmaps.map_types.js b/plugins/gmaps/lib/gmaps.map_types.js new file mode 100644 index 0000000..46e748a --- /dev/null +++ b/plugins/gmaps/lib/gmaps.map_types.js @@ -0,0 +1,29 @@ +GMaps.prototype.addMapType = function(mapTypeId, options) { + if (options.hasOwnProperty("getTileUrl") && typeof(options["getTileUrl"]) == "function") { + options.tileSize = options.tileSize || new google.maps.Size(256, 256); + + var mapType = new google.maps.ImageMapType(options); + + this.map.mapTypes.set(mapTypeId, mapType); + } + else { + throw "'getTileUrl' function required."; + } +}; + +GMaps.prototype.addOverlayMapType = function(options) { + if (options.hasOwnProperty("getTile") && typeof(options["getTile"]) == "function") { + var overlayMapTypeIndex = options.index; + + delete options.index; + + this.map.overlayMapTypes.insertAt(overlayMapTypeIndex, options); + } + else { + throw "'getTile' function required."; + } +}; + +GMaps.prototype.removeOverlayMapType = function(overlayMapTypeIndex) { + this.map.overlayMapTypes.removeAt(overlayMapTypeIndex); +}; diff --git a/plugins/gmaps/lib/gmaps.markers.js b/plugins/gmaps/lib/gmaps.markers.js new file mode 100644 index 0000000..1fae828 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.markers.js @@ -0,0 +1,210 @@ +GMaps.prototype.createMarker = function(options) { + if (options.lat == undefined && options.lng == undefined && options.position == undefined) { + throw 'No latitude or longitude defined.'; + } + + var self = this, + details = options.details, + fences = options.fences, + outside = options.outside, + base_options = { + position: new google.maps.LatLng(options.lat, options.lng), + map: null + }, + marker_options = extend_object(base_options, options); + + delete marker_options.lat; + delete marker_options.lng; + delete marker_options.fences; + delete marker_options.outside; + + var marker = new google.maps.Marker(marker_options); + + marker.fences = fences; + + if (options.infoWindow) { + marker.infoWindow = new google.maps.InfoWindow(options.infoWindow); + + var info_window_events = ['closeclick', 'content_changed', 'domready', 'position_changed', 'zindex_changed']; + + for (var ev = 0; ev < info_window_events.length; ev++) { + (function(object, name) { + if (options.infoWindow[name]) { + google.maps.event.addListener(object, name, function(e){ + options.infoWindow[name].apply(this, [e]); + }); + } + })(marker.infoWindow, info_window_events[ev]); + } + } + + var marker_events = ['animation_changed', 'clickable_changed', 'cursor_changed', 'draggable_changed', 'flat_changed', 'icon_changed', 'position_changed', 'shadow_changed', 'shape_changed', 'title_changed', 'visible_changed', 'zindex_changed']; + + var marker_events_with_mouse = ['dblclick', 'drag', 'dragend', 'dragstart', 'mousedown', 'mouseout', 'mouseover', 'mouseup']; + + for (var ev = 0; ev < marker_events.length; ev++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this, [this]); + }); + } + })(marker, marker_events[ev]); + } + + for (var ev = 0; ev < marker_events_with_mouse.length; ev++) { + (function(map, object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(me){ + if(!me.pixel){ + me.pixel = map.getProjection().fromLatLngToPoint(me.latLng) + } + + options[name].apply(this, [me]); + }); + } + })(this.map, marker, marker_events_with_mouse[ev]); + } + + google.maps.event.addListener(marker, 'click', function() { + this.details = details; + + if (options.click) { + options.click.apply(this, [this]); + } + + if (marker.infoWindow) { + self.hideInfoWindows(); + marker.infoWindow.open(self.map, marker); + } + }); + + google.maps.event.addListener(marker, 'rightclick', function(e) { + e.marker = this; + + if (options.rightclick) { + options.rightclick.apply(this, [e]); + } + + if (window.context_menu[self.el.id]['marker'] != undefined) { + self.buildContextMenu('marker', e); + } + }); + + if (marker.fences) { + google.maps.event.addListener(marker, 'dragend', function() { + self.checkMarkerGeofence(marker, function(m, f) { + outside(m, f); + }); + }); + } + + return marker; +}; + +GMaps.prototype.addMarker = function(options) { + var marker; + if(options.hasOwnProperty('gm_accessors_')) { + // Native google.maps.Marker object + marker = options; + } + else { + if ((options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) || options.position) { + marker = this.createMarker(options); + } + else { + throw 'No latitude or longitude defined.'; + } + } + + marker.setMap(this.map); + + if(this.markerClusterer) { + this.markerClusterer.addMarker(marker); + } + + this.markers.push(marker); + + GMaps.fire('marker_added', marker, this); + + return marker; +}; + +GMaps.prototype.addMarkers = function(array) { + for (var i = 0, marker; marker=array[i]; i++) { + this.addMarker(marker); + } + + return this.markers; +}; + +GMaps.prototype.hideInfoWindows = function() { + for (var i = 0, marker; marker = this.markers[i]; i++){ + if (marker.infoWindow) { + marker.infoWindow.close(); + } + } +}; + +GMaps.prototype.removeMarker = function(marker) { + for (var i = 0; i < this.markers.length; i++) { + if (this.markers[i] === marker) { + this.markers[i].setMap(null); + this.markers.splice(i, 1); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + + break; + } + } + + return marker; +}; + +GMaps.prototype.removeMarkers = function (collection) { + var new_markers = []; + + if (typeof collection == 'undefined') { + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + + this.markers = new_markers; + } + else { + for (var i = 0; i < collection.length; i++) { + var index = this.markers.indexOf(collection[i]); + + if (index > -1) { + var marker = this.markers[index]; + marker.setMap(null); + + if(this.markerClusterer) { + this.markerClusterer.removeMarker(marker); + } + + GMaps.fire('marker_removed', marker, this); + } + } + + for (var i = 0; i < this.markers.length; i++) { + var marker = this.markers[i]; + if (marker.getMap() != null) { + new_markers.push(marker); + } + } + + this.markers = new_markers; + } +}; diff --git a/plugins/gmaps/lib/gmaps.native_extensions.js b/plugins/gmaps/lib/gmaps.native_extensions.js new file mode 100644 index 0000000..3e5fbd0 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.native_extensions.js @@ -0,0 +1,121 @@ +//========================== +// Polygon containsLatLng +// https://github.com/tparkin/Google-Maps-Point-in-Polygon +// Poygon getBounds extension - google-maps-extensions +// http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js +if (!google.maps.Polygon.prototype.getBounds) { + google.maps.Polygon.prototype.getBounds = function(latLng) { + var bounds = new google.maps.LatLngBounds(); + var paths = this.getPaths(); + var path; + + for (var p = 0; p < paths.getLength(); p++) { + path = paths.getAt(p); + for (var i = 0; i < path.getLength(); i++) { + bounds.extend(path.getAt(i)); + } + } + + return bounds; + }; +} + +if (!google.maps.Polygon.prototype.containsLatLng) { + // Polygon containsLatLng - method to determine if a latLng is within a polygon + google.maps.Polygon.prototype.containsLatLng = function(latLng) { + // Exclude points outside of bounds as there is no way they are in the poly + var bounds = this.getBounds(); + + if (bounds !== null && !bounds.contains(latLng)) { + return false; + } + + // Raycast point in polygon method + var inPoly = false; + + var numPaths = this.getPaths().getLength(); + for (var p = 0; p < numPaths; p++) { + var path = this.getPaths().getAt(p); + var numPoints = path.getLength(); + var j = numPoints - 1; + + for (var i = 0; i < numPoints; i++) { + var vertex1 = path.getAt(i); + var vertex2 = path.getAt(j); + + if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) { + if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) { + inPoly = !inPoly; + } + } + + j = i; + } + } + + return inPoly; + }; +} + +if (!google.maps.Circle.prototype.containsLatLng) { + google.maps.Circle.prototype.containsLatLng = function(latLng) { + if (google.maps.geometry) { + return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius(); + } + else { + return true; + } + }; +} + +google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) { + return this.contains(latLng); +}; + +google.maps.Marker.prototype.setFences = function(fences) { + this.fences = fences; +}; + +google.maps.Marker.prototype.addFence = function(fence) { + this.fences.push(fence); +}; + +google.maps.Marker.prototype.getId = function() { + return this['__gm_id']; +}; + +//========================== +// Array indexOf +// https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { + "use strict"; + if (this == null) { + throw new TypeError(); + } + var t = Object(this); + var len = t.length >>> 0; + if (len === 0) { + return -1; + } + var n = 0; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { // shortcut for verifying if it's NaN + n = 0; + } else if (n != 0 && n != Infinity && n != -Infinity) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + if (n >= len) { + return -1; + } + var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); + for (; k < len; k++) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + } +} \ No newline at end of file diff --git a/plugins/gmaps/lib/gmaps.overlays.js b/plugins/gmaps/lib/gmaps.overlays.js new file mode 100644 index 0000000..957e801 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.overlays.js @@ -0,0 +1,134 @@ +GMaps.prototype.drawOverlay = function(options) { + var overlay = new google.maps.OverlayView(), + auto_show = true; + + overlay.setMap(this.map); + + if (options.auto_show != null) { + auto_show = options.auto_show; + } + + overlay.onAdd = function() { + var el = document.createElement('div'); + + el.style.borderStyle = "none"; + el.style.borderWidth = "0px"; + el.style.position = "absolute"; + el.style.zIndex = 100; + el.innerHTML = options.content; + + overlay.el = el; + + if (!options.layer) { + options.layer = 'overlayLayer'; + } + + var panes = this.getPanes(), + overlayLayer = panes[options.layer], + stop_overlay_events = ['contextmenu', 'DOMMouseScroll', 'dblclick', 'mousedown']; + + overlayLayer.appendChild(el); + + for (var ev = 0; ev < stop_overlay_events.length; ev++) { + (function(object, name) { + google.maps.event.addDomListener(object, name, function(e){ + if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) { + e.cancelBubble = true; + e.returnValue = false; + } + else { + e.stopPropagation(); + } + }); + })(el, stop_overlay_events[ev]); + } + + if (options.click) { + panes.overlayMouseTarget.appendChild(overlay.el); + google.maps.event.addDomListener(overlay.el, 'click', function() { + options.click.apply(overlay, [overlay]); + }); + } + + google.maps.event.trigger(this, 'ready'); + }; + + overlay.draw = function() { + var projection = this.getProjection(), + pixel = projection.fromLatLngToDivPixel(new google.maps.LatLng(options.lat, options.lng)); + + options.horizontalOffset = options.horizontalOffset || 0; + options.verticalOffset = options.verticalOffset || 0; + + var el = overlay.el, + content = el.children[0], + content_height = content.clientHeight, + content_width = content.clientWidth; + + switch (options.verticalAlign) { + case 'top': + el.style.top = (pixel.y - content_height + options.verticalOffset) + 'px'; + break; + default: + case 'middle': + el.style.top = (pixel.y - (content_height / 2) + options.verticalOffset) + 'px'; + break; + case 'bottom': + el.style.top = (pixel.y + options.verticalOffset) + 'px'; + break; + } + + switch (options.horizontalAlign) { + case 'left': + el.style.left = (pixel.x - content_width + options.horizontalOffset) + 'px'; + break; + default: + case 'center': + el.style.left = (pixel.x - (content_width / 2) + options.horizontalOffset) + 'px'; + break; + case 'right': + el.style.left = (pixel.x + options.horizontalOffset) + 'px'; + break; + } + + el.style.display = auto_show ? 'block' : 'none'; + + if (!auto_show) { + options.show.apply(this, [el]); + } + }; + + overlay.onRemove = function() { + var el = overlay.el; + + if (options.remove) { + options.remove.apply(this, [el]); + } + else { + overlay.el.parentNode.removeChild(overlay.el); + overlay.el = null; + } + }; + + this.overlays.push(overlay); + return overlay; +}; + +GMaps.prototype.removeOverlay = function(overlay) { + for (var i = 0; i < this.overlays.length; i++) { + if (this.overlays[i] === overlay) { + this.overlays[i].setMap(null); + this.overlays.splice(i, 1); + + break; + } + } +}; + +GMaps.prototype.removeOverlays = function() { + for (var i = 0, item; item = this.overlays[i]; i++) { + item.setMap(null); + } + + this.overlays = []; +}; diff --git a/plugins/gmaps/lib/gmaps.routes.js b/plugins/gmaps/lib/gmaps.routes.js new file mode 100644 index 0000000..ce925dd --- /dev/null +++ b/plugins/gmaps/lib/gmaps.routes.js @@ -0,0 +1,330 @@ +var travelMode, unitSystem; + +GMaps.prototype.getRoutes = function(options) { + switch (options.travelMode) { + case 'bicycling': + travelMode = google.maps.TravelMode.BICYCLING; + break; + case 'transit': + travelMode = google.maps.TravelMode.TRANSIT; + break; + case 'driving': + travelMode = google.maps.TravelMode.DRIVING; + break; + default: + travelMode = google.maps.TravelMode.WALKING; + break; + } + + if (options.unitSystem === 'imperial') { + unitSystem = google.maps.UnitSystem.IMPERIAL; + } + else { + unitSystem = google.maps.UnitSystem.METRIC; + } + + var base_options = { + avoidHighways: false, + avoidTolls: false, + optimizeWaypoints: false, + waypoints: [] + }, + request_options = extend_object(base_options, options); + + request_options.origin = /string/.test(typeof options.origin) ? options.origin : new google.maps.LatLng(options.origin[0], options.origin[1]); + request_options.destination = /string/.test(typeof options.destination) ? options.destination : new google.maps.LatLng(options.destination[0], options.destination[1]); + request_options.travelMode = travelMode; + request_options.unitSystem = unitSystem; + + delete request_options.callback; + delete request_options.error; + + var self = this, + service = new google.maps.DirectionsService(); + + service.route(request_options, function(result, status) { + if (status === google.maps.DirectionsStatus.OK) { + for (var r in result.routes) { + if (result.routes.hasOwnProperty(r)) { + self.routes.push(result.routes[r]); + } + } + + if (options.callback) { + options.callback(self.routes); + } + } + else { + if (options.error) { + options.error(result, status); + } + } + }); +}; + +GMaps.prototype.removeRoutes = function() { + this.routes = []; +}; + +GMaps.prototype.getElevations = function(options) { + options = extend_object({ + locations: [], + path : false, + samples : 256 + }, options); + + if (options.locations.length > 0) { + if (options.locations[0].length > 0) { + options.locations = array_flat(array_map([options.locations], arrayToLatLng, false)); + } + } + + var callback = options.callback; + delete options.callback; + + var service = new google.maps.ElevationService(); + + //location request + if (!options.path) { + delete options.path; + delete options.samples; + + service.getElevationForLocations(options, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + //path request + } else { + var pathRequest = { + path : options.locations, + samples : options.samples + }; + + service.getElevationAlongPath(pathRequest, function(result, status) { + if (callback && typeof(callback) === "function") { + callback(result, status); + } + }); + } +}; + +GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines; + +GMaps.prototype.drawRoute = function(options) { + var self = this; + + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints: options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + if (e.length > 0) { + var polyline_options = { + path: e[e.length - 1].overview_path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + + if (options.callback) { + options.callback(e[e.length - 1]); + } + } + } + }); +}; + +GMaps.prototype.travelRoute = function(options) { + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + unitSystem: options.unitSystem, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + options.step(step); + } + } + } +}; + +GMaps.prototype.drawSteppedRoute = function(options) { + var self = this; + + if (options.origin && options.destination) { + this.getRoutes({ + origin: options.origin, + destination: options.destination, + travelMode: options.travelMode, + waypoints : options.waypoints, + error: options.error, + callback: function(e) { + //start callback + if (e.length > 0 && options.start) { + options.start(e[e.length - 1]); + } + + //step callback + if (e.length > 0 && options.step) { + var route = e[e.length - 1]; + if (route.legs.length > 0) { + var steps = route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step, (route.legs[0].steps.length - 1)); + } + } + } + + //end callback + if (e.length > 0 && options.end) { + options.end(e[e.length - 1]); + } + } + }); + } + else if (options.route) { + if (options.route.legs.length > 0) { + var steps = options.route.legs[0].steps; + for (var i = 0, step; step = steps[i]; i++) { + step.step_number = i; + var polyline_options = { + path: step.path, + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + self.drawPolyline(polyline_options); + options.step(step); + } + } + } +}; + +GMaps.Route = function(options) { + this.origin = options.origin; + this.destination = options.destination; + this.waypoints = options.waypoints; + + this.map = options.map; + this.route = options.route; + this.step_count = 0; + this.steps = this.route.legs[0].steps; + this.steps_length = this.steps.length; + + var polyline_options = { + path: new google.maps.MVCArray(), + strokeColor: options.strokeColor, + strokeOpacity: options.strokeOpacity, + strokeWeight: options.strokeWeight + }; + + if (options.hasOwnProperty("icons")) { + polyline_options.icons = options.icons; + } + + this.polyline = this.map.drawPolyline(polyline_options).getPath(); +}; + +GMaps.Route.prototype.getRoute = function(options) { + var self = this; + + this.map.getRoutes({ + origin : this.origin, + destination : this.destination, + travelMode : options.travelMode, + waypoints : this.waypoints || [], + error: options.error, + callback : function() { + self.route = e[0]; + + if (options.callback) { + options.callback.call(self); + } + } + }); +}; + +GMaps.Route.prototype.back = function() { + if (this.step_count > 0) { + this.step_count--; + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.pop(); + } + } + } +}; + +GMaps.Route.prototype.forward = function() { + if (this.step_count < this.steps_length) { + var path = this.route.legs[0].steps[this.step_count].path; + + for (var p in path){ + if (path.hasOwnProperty(p)){ + this.polyline.push(path[p]); + } + } + this.step_count++; + } +}; diff --git a/plugins/gmaps/lib/gmaps.static.js b/plugins/gmaps/lib/gmaps.static.js new file mode 100644 index 0000000..e8c5b08 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.static.js @@ -0,0 +1,245 @@ +GMaps.prototype.toImage = function(options) { + var options = options || {}, + static_map_options = {}; + + static_map_options['size'] = options['size'] || [this.el.clientWidth, this.el.clientHeight]; + static_map_options['lat'] = this.getCenter().lat(); + static_map_options['lng'] = this.getCenter().lng(); + + if (this.markers.length > 0) { + static_map_options['markers'] = []; + + for (var i = 0; i < this.markers.length; i++) { + static_map_options['markers'].push({ + lat: this.markers[i].getPosition().lat(), + lng: this.markers[i].getPosition().lng() + }); + } + } + + if (this.polylines.length > 0) { + var polyline = this.polylines[0]; + + static_map_options['polyline'] = {}; + static_map_options['polyline']['path'] = google.maps.geometry.encoding.encodePath(polyline.getPath()); + static_map_options['polyline']['strokeColor'] = polyline.strokeColor + static_map_options['polyline']['strokeOpacity'] = polyline.strokeOpacity + static_map_options['polyline']['strokeWeight'] = polyline.strokeWeight + } + + return GMaps.staticMapURL(static_map_options); +}; + +GMaps.staticMapURL = function(options){ + var parameters = [], + data, + static_root = (location.protocol === 'file:' ? 'http:' : location.protocol ) + '//maps.googleapis.com/maps/api/staticmap'; + + if (options.url) { + static_root = options.url; + delete options.url; + } + + static_root += '?'; + + var markers = options.markers; + + delete options.markers; + + if (!markers && options.marker) { + markers = [options.marker]; + delete options.marker; + } + + var styles = options.styles; + + delete options.styles; + + var polyline = options.polyline; + delete options.polyline; + + /** Map options **/ + if (options.center) { + parameters.push('center=' + options.center); + delete options.center; + } + else if (options.address) { + parameters.push('center=' + options.address); + delete options.address; + } + else if (options.lat) { + parameters.push(['center=', options.lat, ',', options.lng].join('')); + delete options.lat; + delete options.lng; + } + else if (options.visible) { + var visible = encodeURI(options.visible.join('|')); + parameters.push('visible=' + visible); + } + + var size = options.size; + if (size) { + if (size.join) { + size = size.join('x'); + } + delete options.size; + } + else { + size = '630x300'; + } + parameters.push('size=' + size); + + if (!options.zoom && options.zoom !== false) { + options.zoom = 15; + } + + var sensor = options.hasOwnProperty('sensor') ? !!options.sensor : true; + delete options.sensor; + parameters.push('sensor=' + sensor); + + for (var param in options) { + if (options.hasOwnProperty(param)) { + parameters.push(param + '=' + options[param]); + } + } + + /** Markers **/ + if (markers) { + var marker, loc; + + for (var i = 0; data = markers[i]; i++) { + marker = []; + + if (data.size && data.size !== 'normal') { + marker.push('size:' + data.size); + delete data.size; + } + else if (data.icon) { + marker.push('icon:' + encodeURI(data.icon)); + delete data.icon; + } + + if (data.color) { + marker.push('color:' + data.color.replace('#', '0x')); + delete data.color; + } + + if (data.label) { + marker.push('label:' + data.label[0].toUpperCase()); + delete data.label; + } + + loc = (data.address ? data.address : data.lat + ',' + data.lng); + delete data.address; + delete data.lat; + delete data.lng; + + for(var param in data){ + if (data.hasOwnProperty(param)) { + marker.push(param + ':' + data[param]); + } + } + + if (marker.length || i === 0) { + marker.push(loc); + marker = marker.join('|'); + parameters.push('markers=' + encodeURI(marker)); + } + // New marker without styles + else { + marker = parameters.pop() + encodeURI('|' + loc); + parameters.push(marker); + } + } + } + + /** Map Styles **/ + if (styles) { + for (var i = 0; i < styles.length; i++) { + var styleRule = []; + if (styles[i].featureType){ + styleRule.push('feature:' + styles[i].featureType.toLowerCase()); + } + + if (styles[i].elementType) { + styleRule.push('element:' + styles[i].elementType.toLowerCase()); + } + + for (var j = 0; j < styles[i].stylers.length; j++) { + for (var p in styles[i].stylers[j]) { + var ruleArg = styles[i].stylers[j][p]; + if (p == 'hue' || p == 'color') { + ruleArg = '0x' + ruleArg.substring(1); + } + styleRule.push(p + ':' + ruleArg); + } + } + + var rule = styleRule.join('|'); + if (rule != '') { + parameters.push('style=' + rule); + } + } + } + + /** Polylines **/ + function parseColor(color, opacity) { + if (color[0] === '#'){ + color = color.replace('#', '0x'); + + if (opacity) { + opacity = parseFloat(opacity); + opacity = Math.min(1, Math.max(opacity, 0)); + if (opacity === 0) { + return '0x00000000'; + } + opacity = (opacity * 255).toString(16); + if (opacity.length === 1) { + opacity += opacity; + } + + color = color.slice(0,8) + opacity; + } + } + return color; + } + + if (polyline) { + data = polyline; + polyline = []; + + if (data.strokeWeight) { + polyline.push('weight:' + parseInt(data.strokeWeight, 10)); + } + + if (data.strokeColor) { + var color = parseColor(data.strokeColor, data.strokeOpacity); + polyline.push('color:' + color); + } + + if (data.fillColor) { + var fillcolor = parseColor(data.fillColor, data.fillOpacity); + polyline.push('fillcolor:' + fillcolor); + } + + var path = data.path; + if (path.join) { + for (var j=0, pos; pos=path[j]; j++) { + polyline.push(pos.join(',')); + } + } + else { + polyline.push('enc:' + path); + } + + polyline = polyline.join('|'); + parameters.push('path=' + encodeURI(polyline)); + } + + /** Retina support **/ + var dpi = window.devicePixelRatio || 1; + parameters.push('scale=' + dpi); + + parameters = parameters.join('&'); + return static_root + parameters; +}; diff --git a/plugins/gmaps/lib/gmaps.streetview.js b/plugins/gmaps/lib/gmaps.streetview.js new file mode 100644 index 0000000..fd1fa12 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.streetview.js @@ -0,0 +1,44 @@ +GMaps.prototype.createPanorama = function(streetview_options) { + if (!streetview_options.hasOwnProperty('lat') || !streetview_options.hasOwnProperty('lng')) { + streetview_options.lat = this.getCenter().lat(); + streetview_options.lng = this.getCenter().lng(); + } + + this.panorama = GMaps.createPanorama(streetview_options); + + this.map.setStreetView(this.panorama); + + return this.panorama; +}; + +GMaps.createPanorama = function(options) { + var el = getElementById(options.el, options.context); + + options.position = new google.maps.LatLng(options.lat, options.lng); + + delete options.el; + delete options.context; + delete options.lat; + delete options.lng; + + var streetview_events = ['closeclick', 'links_changed', 'pano_changed', 'position_changed', 'pov_changed', 'resize', 'visible_changed'], + streetview_options = extend_object({visible : true}, options); + + for (var i = 0; i < streetview_events.length; i++) { + delete streetview_options[streetview_events[i]]; + } + + var panorama = new google.maps.StreetViewPanorama(el, streetview_options); + + for (var i = 0; i < streetview_events.length; i++) { + (function(object, name) { + if (options[name]) { + google.maps.event.addListener(object, name, function(){ + options[name].apply(this); + }); + } + })(panorama, streetview_events[i]); + } + + return panorama; +}; diff --git a/plugins/gmaps/lib/gmaps.styles.js b/plugins/gmaps/lib/gmaps.styles.js new file mode 100644 index 0000000..db06b45 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.styles.js @@ -0,0 +1,9 @@ +GMaps.prototype.addStyle = function(options) { + var styledMapType = new google.maps.StyledMapType(options.styles, { name: options.styledMapName }); + + this.map.mapTypes.set(options.mapTypeId, styledMapType); +}; + +GMaps.prototype.setStyle = function(mapTypeId) { + this.map.setMapTypeId(mapTypeId); +}; diff --git a/plugins/gmaps/lib/gmaps.utils.js b/plugins/gmaps/lib/gmaps.utils.js new file mode 100644 index 0000000..6655363 --- /dev/null +++ b/plugins/gmaps/lib/gmaps.utils.js @@ -0,0 +1,42 @@ +GMaps.geolocate = function(options) { + var complete_callback = options.always || options.complete; + + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function(position) { + options.success(position); + + if (complete_callback) { + complete_callback(); + } + }, function(error) { + options.error(error); + + if (complete_callback) { + complete_callback(); + } + }, options.options); + } + else { + options.not_supported(); + + if (complete_callback) { + complete_callback(); + } + } +}; + +GMaps.geocode = function(options) { + this.geocoder = new google.maps.Geocoder(); + var callback = options.callback; + if (options.hasOwnProperty('lat') && options.hasOwnProperty('lng')) { + options.latLng = new google.maps.LatLng(options.lat, options.lng); + } + + delete options.lat; + delete options.lng; + delete options.callback; + + this.geocoder.geocode(options, function(results, status) { + callback(results, status); + }); +}; diff --git a/plugins/highcharts/highcharts.js b/plugins/highcharts/highcharts.js new file mode 100644 index 0000000..4aca008 --- /dev/null +++ b/plugins/highcharts/highcharts.js @@ -0,0 +1,393 @@ +/* + Highcharts JS v5.0.10 (2017-03-31) + + (c) 2009-2016 Torstein Honsi + + License: www.highcharts.com/license +*/ +(function(L,a){"object"===typeof module&&module.exports?module.exports=L.document?a(L):a:L.Highcharts=a(L)})("undefined"!==typeof window?window:this,function(L){L=function(){var a=window,B=a.document,A=a.navigator&&a.navigator.userAgent||"",H=B&&B.createElementNS&&!!B.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,G=/(edge|msie|trident)/i.test(A)&&!window.opera,r=!H,f=/Firefox/.test(A),l=f&&4>parseInt(A.split("Firefox/")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:"Highcharts", +version:"5.0.10",deg2rad:2*Math.PI/360,doc:B,hasBidiBug:l,hasTouch:B&&void 0!==B.documentElement.ontouchstart,isMS:G,isWebKit:/AppleWebKit/.test(A),isFirefox:f,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(A),SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:H,vml:r,win:a,charts:[],marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){}}}();(function(a){var B=[],A=a.charts,H=a.doc,G=a.win;a.error=function(r,f){r=a.isNumber(r)?"Highcharts error #"+ +r+": www.highcharts.com/errors/"+r:r;if(f)throw Error(r);G.console&&console.log(r)};a.Fx=function(a,f,l){this.options=f;this.elem=a;this.prop=l};a.Fx.prototype={dSetter:function(){var a=this.paths[0],f=this.paths[1],l=[],q=this.now,k=a.length,u;if(1===q)l=this.toD;else if(k===f.length&&1>q)for(;k--;)u=parseFloat(a[k]),l[k]=isNaN(u)?a[k]:q*parseFloat(f[k]-u)+u;else l=f;this.elem.attr("d",l,null,!0)},update:function(){var a=this.elem,f=this.prop,l=this.now,q=this.options.step;if(this[f+"Setter"])this[f+ +"Setter"]();else a.attr?a.element&&a.attr(f,l,null,!0):a.style[f]=l+this.unit;q&&q.call(a,l,this)},run:function(a,f,l){var r=this,k=function(a){return k.stopped?!1:r.step(a)},u;this.startTime=+new Date;this.start=a;this.end=f;this.unit=l;this.now=this.start;this.pos=0;k.elem=this.elem;k.prop=this.prop;k()&&1===B.push(k)&&(k.timerId=setInterval(function(){for(u=0;u<B.length;u++)B[u]()||B.splice(u--,1);B.length||clearInterval(k.timerId)},13))},step:function(a){var f=+new Date,r,q=this.options;r=this.elem; +var k=q.complete,u=q.duration,d=q.curAnim,c;if(r.attr&&!r.element)r=!1;else if(a||f>=u+this.startTime){this.now=this.end;this.pos=1;this.update();a=d[this.prop]=!0;for(c in d)!0!==d[c]&&(a=!1);a&&k&&k.call(r);r=!1}else this.pos=q.easing((f-this.startTime)/u),this.now=this.start+(this.end-this.start)*this.pos,this.update(),r=!0;return r},initPath:function(r,f,l){function q(a){var b,e;for(t=a.length;t--;)b="M"===a[t]||"L"===a[t],e=/[a-zA-Z]/.test(a[t+3]),b&&e&&a.splice(t+1,0,a[t+1],a[t+2],a[t+1],a[t+ +2])}function k(a,e){for(;a.length<p;){a[0]=e[p-a.length];var h=a.slice(0,b);[].splice.apply(a,[0,0].concat(h));D&&(h=a.slice(a.length-b),[].splice.apply(a,[a.length,0].concat(h)),t--)}a[0]="M"}function u(a,e){for(var c=(p-a.length)/b;0<c&&c--;)h=a.slice().splice(a.length/w-b,b*w),h[0]=e[p-b-c*b],z&&(h[b-6]=h[b-2],h[b-5]=h[b-1]),[].splice.apply(a,[a.length/w,0].concat(h)),D&&c--}f=f||"";var d,c=r.startX,n=r.endX,z=-1<f.indexOf("C"),b=z?7:3,p,h,t;f=f.split(" ");l=l.slice();var D=r.isArea,w=D?2:1,e; +z&&(q(f),q(l));if(c&&n){for(t=0;t<c.length;t++)if(c[t]===n[0]){d=t;break}else if(c[0]===n[n.length-c.length+t]){d=t;e=!0;break}void 0===d&&(f=[])}f.length&&a.isNumber(d)&&(p=l.length+d*w*b,e?(k(f,l),u(l,f)):(k(l,f),u(f,l)));return[f,l]}};a.extend=function(a,f){var r;a||(a={});for(r in f)a[r]=f[r];return a};a.merge=function(){var r,f=arguments,l,q={},k=function(u,d){var c,n;"object"!==typeof u&&(u={});for(n in d)d.hasOwnProperty(n)&&(c=d[n],a.isObject(c,!0)&&"renderTo"!==n&&"number"!==typeof c.nodeType? +u[n]=k(u[n]||{},c):u[n]=d[n]);return u};!0===f[0]&&(q=f[1],f=Array.prototype.slice.call(f,2));l=f.length;for(r=0;r<l;r++)q=k(q,f[r]);return q};a.pInt=function(a,f){return parseInt(a,f||10)};a.isString=function(a){return"string"===typeof a};a.isArray=function(a){a=Object.prototype.toString.call(a);return"[object Array]"===a||"[object Array Iterator]"===a};a.isObject=function(r,f){return r&&"object"===typeof r&&(!f||!a.isArray(r))};a.isNumber=function(a){return"number"===typeof a&&!isNaN(a)};a.erase= +function(a,f){for(var r=a.length;r--;)if(a[r]===f){a.splice(r,1);break}};a.defined=function(a){return void 0!==a&&null!==a};a.attr=function(r,f,l){var q,k;if(a.isString(f))a.defined(l)?r.setAttribute(f,l):r&&r.getAttribute&&(k=r.getAttribute(f));else if(a.defined(f)&&a.isObject(f))for(q in f)r.setAttribute(q,f[q]);return k};a.splat=function(r){return a.isArray(r)?r:[r]};a.syncTimeout=function(a,f,l){if(f)return setTimeout(a,f,l);a.call(0,l)};a.pick=function(){var a=arguments,f,l,q=a.length;for(f= +0;f<q;f++)if(l=a[f],void 0!==l&&null!==l)return l};a.css=function(r,f){a.isMS&&!a.svg&&f&&void 0!==f.opacity&&(f.filter="alpha(opacity\x3d"+100*f.opacity+")");a.extend(r.style,f)};a.createElement=function(r,f,l,q,k){r=H.createElement(r);var u=a.css;f&&a.extend(r,f);k&&u(r,{padding:0,border:"none",margin:0});l&&u(r,l);q&&q.appendChild(r);return r};a.extendClass=function(r,f){var l=function(){};l.prototype=new r;a.extend(l.prototype,f);return l};a.pad=function(a,f,l){return Array((f||2)+1-String(a).length).join(l|| +0)+a};a.relativeLength=function(a,f){return/%$/.test(a)?f*parseFloat(a)/100:parseFloat(a)};a.wrap=function(a,f,l){var q=a[f];a[f]=function(){var a=Array.prototype.slice.call(arguments),u=arguments,d=this;d.proceed=function(){q.apply(d,arguments.length?arguments:u)};a.unshift(q);a=l.apply(this,a);d.proceed=null;return a}};a.getTZOffset=function(r){var f=a.Date;return 6E4*(f.hcGetTimezoneOffset&&f.hcGetTimezoneOffset(r)||f.hcTimezoneOffset||0)};a.dateFormat=function(r,f,l){if(!a.defined(f)||isNaN(f))return a.defaultOptions.lang.invalidDate|| +"";r=a.pick(r,"%Y-%m-%d %H:%M:%S");var q=a.Date,k=new q(f-a.getTZOffset(f)),u,d=k[q.hcGetHours](),c=k[q.hcGetDay](),n=k[q.hcGetDate](),z=k[q.hcGetMonth](),b=k[q.hcGetFullYear](),p=a.defaultOptions.lang,h=p.weekdays,t=p.shortWeekdays,D=a.pad,q=a.extend({a:t?t[c]:h[c].substr(0,3),A:h[c],d:D(n),e:D(n,2," "),w:c,b:p.shortMonths[z],B:p.months[z],m:D(z+1),y:b.toString().substr(2,2),Y:b,H:D(d),k:d,I:D(d%12||12),l:d%12||12,M:D(k[q.hcGetMinutes]()),p:12>d?"AM":"PM",P:12>d?"am":"pm",S:D(k.getSeconds()),L:D(Math.round(f% +1E3),3)},a.dateFormats);for(u in q)for(;-1!==r.indexOf("%"+u);)r=r.replace("%"+u,"function"===typeof q[u]?q[u](f):q[u]);return l?r.substr(0,1).toUpperCase()+r.substr(1):r};a.formatSingle=function(r,f){var l=/\.([0-9])/,q=a.defaultOptions.lang;/f$/.test(r)?(l=(l=r.match(l))?l[1]:-1,null!==f&&(f=a.numberFormat(f,l,q.decimalPoint,-1<r.indexOf(",")?q.thousandsSep:""))):f=a.dateFormat(r,f);return f};a.format=function(r,f){for(var l="{",q=!1,k,u,d,c,n=[],z;r;){l=r.indexOf(l);if(-1===l)break;k=r.slice(0, +l);if(q){k=k.split(":");u=k.shift().split(".");c=u.length;z=f;for(d=0;d<c;d++)z=z[u[d]];k.length&&(z=a.formatSingle(k.join(":"),z));n.push(z)}else n.push(k);r=r.slice(l+1);l=(q=!q)?"}":"{"}n.push(r);return n.join("")};a.getMagnitude=function(a){return Math.pow(10,Math.floor(Math.log(a)/Math.LN10))};a.normalizeTickInterval=function(r,f,l,q,k){var u,d=r;l=a.pick(l,1);u=r/l;f||(f=k?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===q&&(1===l?f=a.grep(f,function(a){return 0===a%1}):.1>=l&&(f=[1/l]))); +for(q=0;q<f.length&&!(d=f[q],k&&d*l>=r||!k&&u<=(f[q]+(f[q+1]||f[q]))/2);q++);return d=a.correctFloat(d*l,-Math.round(Math.log(.001)/Math.LN10))};a.stableSort=function(a,f){var l=a.length,q,k;for(k=0;k<l;k++)a[k].safeI=k;a.sort(function(a,d){q=f(a,d);return 0===q?a.safeI-d.safeI:q});for(k=0;k<l;k++)delete a[k].safeI};a.arrayMin=function(a){for(var f=a.length,l=a[0];f--;)a[f]<l&&(l=a[f]);return l};a.arrayMax=function(a){for(var f=a.length,l=a[0];f--;)a[f]>l&&(l=a[f]);return l};a.destroyObjectProperties= +function(a,f){for(var l in a)a[l]&&a[l]!==f&&a[l].destroy&&a[l].destroy(),delete a[l]};a.discardElement=function(r){var f=a.garbageBin;f||(f=a.createElement("div"));r&&f.appendChild(r);f.innerHTML=""};a.correctFloat=function(a,f){return parseFloat(a.toPrecision(f||14))};a.setAnimation=function(r,f){f.renderer.globalAnimation=a.pick(r,f.options.chart.animation,!0)};a.animObject=function(r){return a.isObject(r)?a.merge(r):{duration:r?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5, +day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(r,f,l,q){r=+r||0;f=+f;var k=a.defaultOptions.lang,u=(r.toString().split(".")[1]||"").length,d,c;-1===f?f=Math.min(u,20):a.isNumber(f)||(f=2);c=(Math.abs(r)+Math.pow(10,-Math.max(f,u)-1)).toFixed(f);u=String(a.pInt(c));d=3<u.length?u.length%3:0;l=a.pick(l,k.decimalPoint);q=a.pick(q,k.thousandsSep);r=(0>r?"-":"")+(d?u.substr(0,d)+q:"");r+=u.substr(d).replace(/(\d{3})(?=\d)/g,"$1"+q);f&&(r+=l+c.slice(-f));return r};Math.easeInOutSine= +function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(r,f){return"width"===f?Math.min(r.offsetWidth,r.scrollWidth)-a.getStyle(r,"padding-left")-a.getStyle(r,"padding-right"):"height"===f?Math.min(r.offsetHeight,r.scrollHeight)-a.getStyle(r,"padding-top")-a.getStyle(r,"padding-bottom"):(r=G.getComputedStyle(r,void 0))&&a.pInt(r.getPropertyValue(f))};a.inArray=function(a,f){return f.indexOf?f.indexOf(a):[].indexOf.call(f,a)};a.grep=function(a,f){return[].filter.call(a,f)};a.find=function(a, +f){return[].find.call(a,f)};a.map=function(a,f){for(var l=[],q=0,k=a.length;q<k;q++)l[q]=f.call(a[q],a[q],q,a);return l};a.offset=function(a){var f=H.documentElement;a=a.getBoundingClientRect();return{top:a.top+(G.pageYOffset||f.scrollTop)-(f.clientTop||0),left:a.left+(G.pageXOffset||f.scrollLeft)-(f.clientLeft||0)}};a.stop=function(a,f){for(var l=B.length;l--;)B[l].elem!==a||f&&f!==B[l].prop||(B[l].stopped=!0)};a.each=function(a,f,l){return Array.prototype.forEach.call(a,f,l)};a.addEvent=function(r, +f,l){function q(a){a.target=a.srcElement||G;l.call(r,a)}var k=r.hcEvents=r.hcEvents||{};r.addEventListener?r.addEventListener(f,l,!1):r.attachEvent&&(r.hcEventsIE||(r.hcEventsIE={}),r.hcEventsIE[l.toString()]=q,r.attachEvent("on"+f,q));k[f]||(k[f]=[]);k[f].push(l);return function(){a.removeEvent(r,f,l)}};a.removeEvent=function(r,f,l){function q(a,c){r.removeEventListener?r.removeEventListener(a,c,!1):r.attachEvent&&(c=r.hcEventsIE[c.toString()],r.detachEvent("on"+a,c))}function k(){var a,c;if(r.nodeName)for(c in f? +(a={},a[f]=!0):a=d,a)if(d[c])for(a=d[c].length;a--;)q(c,d[c][a])}var u,d=r.hcEvents,c;d&&(f?(u=d[f]||[],l?(c=a.inArray(l,u),-1<c&&(u.splice(c,1),d[f]=u),q(f,l)):(k(),d[f]=[])):(k(),r.hcEvents={}))};a.fireEvent=function(r,f,l,q){var k;k=r.hcEvents;var u,d;l=l||{};if(H.createEvent&&(r.dispatchEvent||r.fireEvent))k=H.createEvent("Events"),k.initEvent(f,!0,!0),a.extend(k,l),r.dispatchEvent?r.dispatchEvent(k):r.fireEvent(f,k);else if(k)for(k=k[f]||[],u=k.length,l.target||a.extend(l,{preventDefault:function(){l.defaultPrevented= +!0},target:r,type:f}),f=0;f<u;f++)(d=k[f])&&!1===d.call(r,l)&&l.preventDefault();q&&!l.defaultPrevented&&q(l)};a.animate=function(r,f,l){var q,k="",u,d,c;a.isObject(l)||(q=arguments,l={duration:q[2],easing:q[3],complete:q[4]});a.isNumber(l.duration)||(l.duration=400);l.easing="function"===typeof l.easing?l.easing:Math[l.easing]||Math.easeInOutSine;l.curAnim=a.merge(f);for(c in f)a.stop(r,c),d=new a.Fx(r,l,c),u=null,"d"===c?(d.paths=d.initPath(r,r.d,f.d),d.toD=f.d,q=0,u=1):r.attr?q=r.attr(c):(q=parseFloat(a.getStyle(r, +c))||0,"opacity"!==c&&(k="px")),u||(u=f[c]),u&&u.match&&u.match("px")&&(u=u.replace(/px/g,"")),d.run(q,u,k)};a.seriesType=function(r,f,l,q,k){var u=a.getOptions(),d=a.seriesTypes;u.plotOptions[r]=a.merge(u.plotOptions[f],l);d[r]=a.extendClass(d[f]||function(){},q);d[r].prototype.type=r;k&&(d[r].prototype.pointClass=a.extendClass(a.Point,k));return d[r]};a.uniqueKey=function(){var a=Math.random().toString(36).substring(2,9),f=0;return function(){return"highcharts-"+a+"-"+f++}}();G.jQuery&&(G.jQuery.fn.highcharts= +function(){var r=[].slice.call(arguments);if(this[0])return r[0]?(new (a[a.isString(r[0])?r.shift():"Chart"])(this[0],r[0],r[1]),this):A[a.attr(this[0],"data-highcharts-chart")]});H&&!H.defaultView&&(a.getStyle=function(r,f){var l={width:"clientWidth",height:"clientHeight"}[f];if(r.style[f])return a.pInt(r.style[f]);"opacity"===f&&(f="filter");if(l)return r.style.zoom=1,Math.max(r[l]-2*a.getStyle(r,"padding"),0);r=r.currentStyle[f.replace(/\-(\w)/g,function(a,k){return k.toUpperCase()})];"filter"=== +f&&(r=r.replace(/alpha\(opacity=([0-9]+)\)/,function(a,k){return k/100}));return""===r?1:a.pInt(r)});Array.prototype.forEach||(a.each=function(a,f,l){for(var q=0,k=a.length;q<k;q++)if(!1===f.call(l,a[q],q,a))return q});Array.prototype.indexOf||(a.inArray=function(a,f){var l,q=0;if(f)for(l=f.length;q<l;q++)if(f[q]===a)return q;return-1});Array.prototype.filter||(a.grep=function(a,f){for(var l=[],q=0,k=a.length;q<k;q++)f(a[q],q)&&l.push(a[q]);return l});Array.prototype.find||(a.find=function(a,f){var l, +q=a.length;for(l=0;l<q;l++)if(f(a[l],l))return a[l]})})(L);(function(a){var B=a.each,A=a.isNumber,H=a.map,G=a.merge,r=a.pInt;a.Color=function(f){if(!(this instanceof a.Color))return new a.Color(f);this.init(f)};a.Color.prototype={parsers:[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(a){return[r(a[1]),r(a[2]),r(a[3]),parseFloat(a[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(a){return[r(a[1]), +r(a[2]),r(a[3]),1]}}],names:{white:"#ffffff",black:"#000000"},init:function(f){var l,q,k,u;if((this.input=f=this.names[f&&f.toLowerCase?f.toLowerCase():""]||f)&&f.stops)this.stops=H(f.stops,function(d){return new a.Color(d[1])});else if(f&&"#"===f[0]&&(l=f.length,f=parseInt(f.substr(1),16),7===l?q=[(f&16711680)>>16,(f&65280)>>8,f&255,1]:4===l&&(q=[(f&3840)>>4|(f&3840)>>8,(f&240)>>4|f&240,(f&15)<<4|f&15,1])),!q)for(k=this.parsers.length;k--&&!q;)u=this.parsers[k],(l=u.regex.exec(f))&&(q=u.parse(l)); +this.rgba=q||[]},get:function(a){var f=this.input,q=this.rgba,k;this.stops?(k=G(f),k.stops=[].concat(k.stops),B(this.stops,function(u,d){k.stops[d]=[k.stops[d][0],u.get(a)]})):k=q&&A(q[0])?"rgb"===a||!a&&1===q[3]?"rgb("+q[0]+","+q[1]+","+q[2]+")":"a"===a?q[3]:"rgba("+q.join(",")+")":f;return k},brighten:function(a){var f,q=this.rgba;if(this.stops)B(this.stops,function(k){k.brighten(a)});else if(A(a)&&0!==a)for(f=0;3>f;f++)q[f]+=r(255*a),0>q[f]&&(q[f]=0),255<q[f]&&(q[f]=255);return this},setOpacity:function(a){this.rgba[3]= +a;return this}};a.color=function(f){return new a.Color(f)}})(L);(function(a){var B,A,H=a.addEvent,G=a.animate,r=a.attr,f=a.charts,l=a.color,q=a.css,k=a.createElement,u=a.defined,d=a.deg2rad,c=a.destroyObjectProperties,n=a.doc,z=a.each,b=a.extend,p=a.erase,h=a.grep,t=a.hasTouch,D=a.inArray,w=a.isArray,e=a.isFirefox,x=a.isMS,C=a.isObject,E=a.isString,m=a.isWebKit,y=a.merge,I=a.noop,K=a.pick,J=a.pInt,g=a.removeEvent,F=a.stop,Q=a.svg,N=a.SVG_NS,P=a.symbolSizes,O=a.win;B=a.SVGElement=function(){return this}; +B.prototype={opacity:1,SVG_NS:N,textProps:"direction fontSize fontWeight fontFamily fontStyle color lineHeight width textAlign textDecoration textOverflow textOutline".split(" "),init:function(a,g){this.element="span"===g?k(g):n.createElementNS(this.SVG_NS,g);this.renderer=a},animate:function(v,g,b){g=a.animObject(K(g,this.renderer.globalAnimation,!0));0!==g.duration?(b&&(g.complete=b),G(this,v,g)):(this.attr(v,null,b),g.step&&g.step.call(this));return this},colorGradient:function(v,g,b){var e=this.renderer, +h,c,m,M,F,x,d,C,t,p,n,k=[],R;v.radialGradient?c="radialGradient":v.linearGradient&&(c="linearGradient");if(c){m=v[c];F=e.gradients;d=v.stops;p=b.radialReference;w(m)&&(v[c]=m={x1:m[0],y1:m[1],x2:m[2],y2:m[3],gradientUnits:"userSpaceOnUse"});"radialGradient"===c&&p&&!u(m.gradientUnits)&&(M=m,m=y(m,e.getRadialAttr(p,M),{gradientUnits:"userSpaceOnUse"}));for(n in m)"id"!==n&&k.push(n,m[n]);for(n in d)k.push(d[n]);k=k.join(",");F[k]?p=F[k].attr("id"):(m.id=p=a.uniqueKey(),F[k]=x=e.createElement(c).attr(m).add(e.defs), +x.radAttr=M,x.stops=[],z(d,function(v){0===v[1].indexOf("rgba")?(h=a.color(v[1]),C=h.get("rgb"),t=h.get("a")):(C=v[1],t=1);v=e.createElement("stop").attr({offset:v[0],"stop-color":C,"stop-opacity":t}).add(x);x.stops.push(v)}));R="url("+e.url+"#"+p+")";b.setAttribute(g,R);b.gradient=k;v.toString=function(){return R}}},applyTextOutline:function(v){var g=this.element,b,e,c,h,m;-1!==v.indexOf("contrast")&&(v=v.replace(/contrast/g,this.renderer.getContrast(g.style.fill)));v=v.split(" ");e=v[v.length-1]; +if((c=v[0])&&"none"!==c&&a.svg){this.fakeTS=!0;v=[].slice.call(g.getElementsByTagName("tspan"));this.ySetter=this.xSetter;c=c.replace(/(^[\d\.]+)(.*?)$/g,function(a,v,g){return 2*v+g});for(m=v.length;m--;)b=v[m],"highcharts-text-outline"===b.getAttribute("class")&&p(v,g.removeChild(b));h=g.firstChild;z(v,function(a,v){0===v&&(a.setAttribute("x",g.getAttribute("x")),v=g.getAttribute("y"),a.setAttribute("y",v||0),null===v&&g.setAttribute("y",0));a=a.cloneNode(1);r(a,{"class":"highcharts-text-outline", +fill:e,stroke:e,"stroke-width":c,"stroke-linejoin":"round"});g.insertBefore(a,h)})}},attr:function(a,g,b,e){var v,c=this.element,h,m=this,M;"string"===typeof a&&void 0!==g&&(v=a,a={},a[v]=g);if("string"===typeof a)m=(this[a+"Getter"]||this._defaultGetter).call(this,a,c);else{for(v in a)g=a[v],M=!1,e||F(this,v),this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)$/.test(v)&&(h||(this.symbolAttr(a),h=!0),M=!0),!this.rotation||"x"!==v&&"y"!==v||(this.doTransform=!0),M||(M=this[v+ +"Setter"]||this._defaultSetter,M.call(this,g,v,c),this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(v)&&this.updateShadows(v,g,M));this.doTransform&&(this.updateTransform(),this.doTransform=!1)}b&&b();return m},updateShadows:function(a,g,b){for(var v=this.shadows,e=v.length;e--;)b.call(v[e],"height"===a?Math.max(g-(v[e].cutHeight||0),0):"d"===a?this.d:g,a,v[e])},addClass:function(a,g){var v=this.attr("class")||"";-1===v.indexOf(a)&&(g||(a=(v+(v?" ":"")+a).replace(" "," ")), +this.attr("class",a));return this},hasClass:function(a){return-1!==r(this.element,"class").indexOf(a)},removeClass:function(a){r(this.element,"class",(r(this.element,"class")||"").replace(a,""));return this},symbolAttr:function(a){var v=this;z("x y r start end width height innerR anchorX anchorY".split(" "),function(g){v[g]=K(a[g],v[g])});v.attr({d:v.renderer.symbols[v.symbolName](v.x,v.y,v.width,v.height,v)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")": +"none")},crisp:function(a,g){var v,b={},e;g=g||a.strokeWidth||0;e=Math.round(g)%2/2;a.x=Math.floor(a.x||this.x||0)+e;a.y=Math.floor(a.y||this.y||0)+e;a.width=Math.floor((a.width||this.width||0)-2*e);a.height=Math.floor((a.height||this.height||0)-2*e);u(a.strokeWidth)&&(a.strokeWidth=g);for(v in a)this[v]!==a[v]&&(this[v]=b[v]=a[v]);return b},css:function(a){var v=this.styles,g={},e=this.element,c,h="",m=!v,F=["textOutline","textOverflow","width"];a&&a.color&&(a.fill=a.color);if(v)for(c in a)a[c]!== +v[c]&&(g[c]=a[c],m=!0);if(m){v&&(a=b(v,g));v=this.textWidth=a&&a.width&&"auto"!==a.width&&"text"===e.nodeName.toLowerCase()&&J(a.width);this.styles=a;v&&!Q&&this.renderer.forExport&&delete a.width;if(x&&!Q)q(this.element,a);else{v=function(a,v){return"-"+v.toLowerCase()};for(c in a)-1===D(c,F)&&(h+=c.replace(/([A-Z])/g,v)+":"+a[c]+";");h&&r(e,"style",h)}this.added&&("text"===this.element.nodeName&&this.renderer.buildText(this),a&&a.textOutline&&this.applyTextOutline(a.textOutline))}return this},strokeWidth:function(){return this["stroke-width"]|| +0},on:function(a,g){var v=this,e=v.element;t&&"click"===a?(e.ontouchstart=function(a){v.touchEventFired=Date.now();a.preventDefault();g.call(e,a)},e.onclick=function(a){(-1===O.navigator.userAgent.indexOf("Android")||1100<Date.now()-(v.touchEventFired||0))&&g.call(e,a)}):e["on"+a]=g;return this},setRadialReference:function(a){var v=this.renderer.gradients[this.element.gradient];this.element.radialReference=a;v&&v.radAttr&&v.animate(this.renderer.getRadialAttr(a,v.radAttr));return this},translate:function(a, +g){return this.attr({translateX:a,translateY:g})},invert:function(a){this.inverted=a;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,g=this.translateY||0,e=this.scaleX,b=this.scaleY,c=this.inverted,h=this.rotation,m=this.element;c&&(a+=this.width,g+=this.height);a=["translate("+a+","+g+")"];c?a.push("rotate(90) scale(-1,1)"):h&&a.push("rotate("+h+" "+(m.getAttribute("x")||0)+" "+(m.getAttribute("y")||0)+")");(u(e)||u(b))&&a.push("scale("+K(e,1)+" "+K(b,1)+")"); +a.length&&m.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,g,e){var v,b,c,h,m={};b=this.renderer;c=b.alignedObjects;var F,x;if(a){if(this.alignOptions=a,this.alignByTranslate=g,!e||E(e))this.alignTo=v=e||"renderer",p(c,this),c.push(this),e=null}else a=this.alignOptions,g=this.alignByTranslate,v=this.alignTo;e=K(e,b[v],b);v=a.align;b=a.verticalAlign;c=(e.x||0)+(a.x||0);h=(e.y||0)+(a.y||0);"right"===v?F=1:"center"=== +v&&(F=2);F&&(c+=(e.width-(a.width||0))/F);m[g?"translateX":"x"]=Math.round(c);"bottom"===b?x=1:"middle"===b&&(x=2);x&&(h+=(e.height-(a.height||0))/x);m[g?"translateY":"y"]=Math.round(h);this[this.placed?"animate":"attr"](m);this.placed=!0;this.alignAttr=m;return this},getBBox:function(a,g){var v,e=this.renderer,c,h=this.element,m=this.styles,F,x=this.textStr,y,M=e.cache,C=e.cacheKeys,t;g=K(g,this.rotation);c=g*d;F=m&&m.fontSize;void 0!==x&&(t=x.toString(),-1===t.indexOf("\x3c")&&(t=t.replace(/[0-9]/g, +"0")),t+=["",g||0,F,m&&m.width,m&&m.textOverflow].join());t&&!a&&(v=M[t]);if(!v){if(h.namespaceURI===this.SVG_NS||e.forExport){try{(y=this.fakeTS&&function(a){z(h.querySelectorAll(".highcharts-text-outline"),function(v){v.style.display=a})})&&y("none"),v=h.getBBox?b({},h.getBBox()):{width:h.offsetWidth,height:h.offsetHeight},y&&y("")}catch(X){}if(!v||0>v.width)v={width:0,height:0}}else v=this.htmlGetBBox();e.isSVG&&(a=v.width,e=v.height,m&&"11px"===m.fontSize&&17===Math.round(e)&&(v.height=e=14), +g&&(v.width=Math.abs(e*Math.sin(c))+Math.abs(a*Math.cos(c)),v.height=Math.abs(e*Math.cos(c))+Math.abs(a*Math.sin(c))));if(t&&0<v.height){for(;250<C.length;)delete M[C.shift()];M[t]||C.push(t);M[t]=v}}return v},show:function(a){return this.attr({visibility:a?"inherit":"visible"})},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var v=this;v.animate({opacity:0},{duration:a||150,complete:function(){v.attr({y:-9999})}})},add:function(a){var v=this.renderer,g=this.element, +e;a&&(this.parentGroup=a);this.parentInverted=a&&a.inverted;void 0!==this.textStr&&v.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)e=this.zIndexSetter();e||(a?a.element:v.box).appendChild(g);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var v=a.parentNode;v&&v.removeChild(a)},destroy:function(){var a=this,g=a.element||{},e=a.renderer.isSVG&&"SPAN"===g.nodeName&&a.parentGroup,b,c;g.onclick=g.onmouseout=g.onmouseover=g.onmousemove=g.point=null;F(a);a.clipPath&&(z(a.element.ownerSVGElement.querySelectorAll("[clip-path]"), +function(v){-1<v.getAttribute("clip-path").indexOf(a.clipPath.element.id)&&v.removeAttribute("clip-path")}),a.clipPath=a.clipPath.destroy());if(a.stops){for(c=0;c<a.stops.length;c++)a.stops[c]=a.stops[c].destroy();a.stops=null}a.safeRemoveChild(g);for(a.destroyShadows();e&&e.div&&0===e.div.childNodes.length;)g=e.parentGroup,a.safeRemoveChild(e.div),delete e.div,e=g;a.alignTo&&p(a.renderer.alignedObjects,a);for(b in a)delete a[b];return null},shadow:function(a,g,e){var v=[],b,c,h=this.element,m,F, +x,y;if(!a)this.destroyShadows();else if(!this.shadows){F=K(a.width,3);x=(a.opacity||.15)/F;y=this.parentInverted?"(-1,-1)":"("+K(a.offsetX,1)+", "+K(a.offsetY,1)+")";for(b=1;b<=F;b++)c=h.cloneNode(0),m=2*F+1-2*b,r(c,{isShadow:"true",stroke:a.color||"#000000","stroke-opacity":x*b,"stroke-width":m,transform:"translate"+y,fill:"none"}),e&&(r(c,"height",Math.max(r(c,"height")-m,0)),c.cutHeight=m),g?g.element.appendChild(c):h.parentNode.insertBefore(c,h),v.push(c);this.shadows=v}return this},destroyShadows:function(){z(this.shadows|| +[],function(a){this.safeRemoveChild(a)},this);this.shadows=void 0},xGetter:function(a){"circle"===this.element.nodeName&&("x"===a?a="cx":"y"===a&&(a="cy"));return this._defaultGetter(a)},_defaultGetter:function(a){a=K(this[a],this.element?this.element.getAttribute(a):null,0);/^[\-0-9\.]+$/.test(a)&&(a=parseFloat(a));return a},dSetter:function(a,g,e){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");e.setAttribute(g,a);this[g]=a},dashstyleSetter:function(a){var v,g=this["stroke-width"]; +"inherit"===g&&(g=1);if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(v=a.length;v--;)a[v]=J(a[v])*g;a=a.join(",").replace(/NaN/g,"none");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",center:"middle",right:"end"}[a])}, +opacitySetter:function(a,g,e){this[g]=a;e.setAttribute(g,a)},titleSetter:function(a){var v=this.element.getElementsByTagName("title")[0];v||(v=n.createElementNS(this.SVG_NS,"title"),this.element.appendChild(v));v.firstChild&&v.removeChild(v.firstChild);v.appendChild(n.createTextNode(String(K(a),"").replace(/<[^>]*>/g,"")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,g,e){"string"===typeof a?e.setAttribute(g, +a):a&&this.colorGradient(a,g,e)},visibilitySetter:function(a,g,e){"inherit"===a?e.removeAttribute(g):e.setAttribute(g,a)},zIndexSetter:function(a,g){var v=this.renderer,e=this.parentGroup,b=(e||v).element||v.box,c,h=this.element,m;c=this.added;var F;u(a)&&(h.zIndex=a,a=+a,this[g]===a&&(c=!1),this[g]=a);if(c){(a=this.zIndex)&&e&&(e.handleZ=!0);g=b.childNodes;for(F=0;F<g.length&&!m;F++)e=g[F],c=e.zIndex,e!==h&&(J(c)>a||!u(a)&&u(c)||0>a&&!u(c)&&b!==v.box)&&(b.insertBefore(h,e),m=!0);m||b.appendChild(h)}return m}, +_defaultSetter:function(a,g,e){e.setAttribute(g,a)}};B.prototype.yGetter=B.prototype.xGetter;B.prototype.translateXSetter=B.prototype.translateYSetter=B.prototype.rotationSetter=B.prototype.verticalAlignSetter=B.prototype.scaleXSetter=B.prototype.scaleYSetter=function(a,g){this[g]=a;this.doTransform=!0};B.prototype["stroke-widthSetter"]=B.prototype.strokeSetter=function(a,g,e){this[g]=a;this.stroke&&this["stroke-width"]?(B.prototype.fillSetter.call(this,this.stroke,"stroke",e),e.setAttribute("stroke-width", +this["stroke-width"]),this.hasStroke=!0):"stroke-width"===g&&0===a&&this.hasStroke&&(e.removeAttribute("stroke"),this.hasStroke=!1)};A=a.SVGRenderer=function(){this.init.apply(this,arguments)};A.prototype={Element:B,SVG_NS:N,init:function(a,g,b,c,h,F){var v;c=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}).css(this.getStyle(c));v=c.element;a.appendChild(v);-1===a.innerHTML.indexOf("xmlns")&&r(v,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=v;this.boxWrapper=c;this.alignedObjects= +[];this.url=(e||m)&&n.getElementsByTagName("base").length?O.location.href.replace(/#.*?$/,"").replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(n.createTextNode("Created with Highcharts 5.0.10"));this.defs=this.createElement("defs").add();this.allowHTML=F;this.forExport=h;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(g,b,!1);var x;e&&a.getBoundingClientRect&&(g=function(){q(a,{left:0,top:0}); +x=a.getBoundingClientRect();q(a,{left:Math.ceil(x.left)-x.left+"px",top:Math.ceil(x.top)-x.top+"px"})},g(),this.unSubPixelFix=H(O,"resize",g))},getStyle:function(a){return this.style=b({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();c(this.gradients|| +{});this.gradients=null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var g=new this.Element;g.init(this,a);return g},draw:I,getRadialAttr:function(a,g){return{cx:a[0]-a[2]/2+g.cx*a[2],cy:a[1]-a[2]/2+g.cy*a[2],r:g.r*a[2]}},getSpanWidth:function(a,g){var v=a.getBBox(!0).width;!Q&&this.forExport&&(v=this.measureSpanWidth(g.firstChild.data,a.styles));return v},applyEllipsis:function(a,g,e,b){var v=this.getSpanWidth(a,g), +c=v>b,v=e,h,m=0,F=e.length,x=function(a){g.removeChild(g.firstChild);a&&g.appendChild(n.createTextNode(a))};if(c){for(;m<=F;)h=Math.ceil((m+F)/2),v=e.substring(0,h)+"\u2026",x(v),v=this.getSpanWidth(a,g),m===F?m=F+1:v>b?F=h-1:m=h;0===F&&x("")}return c},buildText:function(a){var g=a.element,e=this,v=e.forExport,b=K(a.textStr,"").toString(),c=-1!==b.indexOf("\x3c"),m=g.childNodes,F,x,y,t,d=r(g,"x"),C=a.styles,p=a.textWidth,k=C&&C.lineHeight,w=C&&C.textOutline,u=C&&"ellipsis"===C.textOverflow,f=C&&"nowrap"=== +C.whiteSpace,E=C&&C.fontSize,D,I,l=m.length,C=p&&!a.added&&this.box,P=function(a){var v;v=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:E||e.style.fontSize||12;return k?J(k):e.fontMetrics(v,a.getAttribute("style")?a:g).h};D=[b,u,f,k,w,E,p].join();if(D!==a.textCache){for(a.textCache=D;l--;)g.removeChild(m[l]);c||w||u||p||-1!==b.indexOf(" ")?(F=/<.*class="([^"]+)".*>/,x=/<.*style="([^"]+)".*>/,y=/<.*href="(http[^"]+)".*>/,C&&C.appendChild(g),b=c?b.replace(/<(b|strong)>/g,'\x3cspan style\x3d"font-weight:bold"\x3e').replace(/<(i|em)>/g, +'\x3cspan style\x3d"font-style:italic"\x3e').replace(/<a/g,"\x3cspan").replace(/<\/(b|strong|i|em|a)>/g,"\x3c/span\x3e").split(/<br.*?>/g):[b],b=h(b,function(a){return""!==a}),z(b,function(b,c){var m,h=0;b=b.replace(/^\s+|\s+$/g,"").replace(/<span/g,"|||\x3cspan").replace(/<\/span>/g,"\x3c/span\x3e|||");m=b.split("|||");z(m,function(b){if(""!==b||1===m.length){var C={},k=n.createElementNS(e.SVG_NS,"tspan"),w,E;F.test(b)&&(w=b.match(F)[1],r(k,"class",w));x.test(b)&&(E=b.match(x)[1].replace(/(;| |^)color([ :])/, +"$1fill$2"),r(k,"style",E));y.test(b)&&!v&&(r(k,"onclick",'location.href\x3d"'+b.match(y)[1]+'"'),q(k,{cursor:"pointer"}));b=(b.replace(/<(.|\n)*?>/g,"")||" ").replace(/&lt;/g,"\x3c").replace(/&gt;/g,"\x3e");if(" "!==b){k.appendChild(n.createTextNode(b));h?C.dx=0:c&&null!==d&&(C.x=d);r(k,C);g.appendChild(k);!h&&I&&(!Q&&v&&q(k,{display:"block"}),r(k,"dy",P(k)));if(p){C=b.replace(/([^\^])-/g,"$1- ").split(" ");w=1<m.length||c||1<C.length&&!f;var D=[],M,z=P(k),l=a.rotation;for(u&&(t=e.applyEllipsis(a, +k,b,p));!u&&w&&(C.length||D.length);)a.rotation=0,M=e.getSpanWidth(a,k),b=M>p,void 0===t&&(t=b),b&&1!==C.length?(k.removeChild(k.firstChild),D.unshift(C.pop())):(C=D,D=[],C.length&&!f&&(k=n.createElementNS(N,"tspan"),r(k,{dy:z,x:d}),E&&r(k,"style",E),g.appendChild(k)),M>p&&(p=M)),C.length&&k.appendChild(n.createTextNode(C.join(" ").replace(/- /g,"-")));a.rotation=l}h++}}});I=I||g.childNodes.length}),t&&a.attr("title",a.textStr),C&&C.removeChild(g),w&&a.applyTextOutline&&a.applyTextOutline(w)):g.appendChild(n.createTextNode(b.replace(/&lt;/g, +"\x3c").replace(/&gt;/g,"\x3e")))}},getContrast:function(a){a=l(a).rgba;return 510<a[0]+a[1]+a[2]?"#000000":"#FFFFFF"},button:function(a,g,e,c,m,h,F,C,t){var v=this.label(a,g,e,t,null,null,null,null,"button"),d=0;v.attr(y({padding:8,r:2},m));var p,n,k,w;m=y({fill:"#f7f7f7",stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontWeight:"normal"}},m);p=m.style;delete m.style;h=y(m,{fill:"#e6e6e6"},h);n=h.style;delete h.style;F=y(m,{fill:"#e6ebf5",style:{color:"#000000",fontWeight:"bold"}}, +F);k=F.style;delete F.style;C=y(m,{style:{color:"#cccccc"}},C);w=C.style;delete C.style;H(v.element,x?"mouseover":"mouseenter",function(){3!==d&&v.setState(1)});H(v.element,x?"mouseout":"mouseleave",function(){3!==d&&v.setState(d)});v.setState=function(a){1!==a&&(v.state=d=a);v.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+["normal","hover","pressed","disabled"][a||0]);v.attr([m,h,F,C][a||0]).css([p,n,k,w][a||0])};v.attr(m).css(b({cursor:"default"}, +p));return v.on("click",function(a){3!==d&&c.call(v,a)})},crispLine:function(a,g){a[1]===a[4]&&(a[1]=a[4]=Math.round(a[1])-g%2/2);a[2]===a[5]&&(a[2]=a[5]=Math.round(a[2])+g%2/2);return a},path:function(a){var g={fill:"none"};w(a)?g.d=a:C(a)&&b(g,a);return this.createElement("path").attr(g)},circle:function(a,g,e){a=C(a)?a:{x:a,y:g,r:e};g=this.createElement("circle");g.xSetter=g.ySetter=function(a,g,e){e.setAttribute("c"+g,a)};return g.attr(a)},arc:function(a,g,e,b,c,m){C(a)?(b=a,g=b.y,e=b.r,a=b.x): +b={innerR:b,start:c,end:m};a=this.symbol("arc",a,g,e,e,b);a.r=e;return a},rect:function(a,g,e,b,c,m){c=C(a)?a.r:c;var v=this.createElement("rect");a=C(a)?a:void 0===a?{}:{x:a,y:g,width:Math.max(e,0),height:Math.max(b,0)};void 0!==m&&(a.strokeWidth=m,a=v.crisp(a));a.fill="none";c&&(a.r=c);v.rSetter=function(a,g,e){r(e,{rx:a,ry:a})};return v.attr(a)},setSize:function(a,g,e){var b=this.alignedObjects,v=b.length;this.width=a;this.height=g;for(this.boxWrapper.animate({width:a,height:g},{step:function(){this.attr({viewBox:"0 0 "+ +this.attr("width")+" "+this.attr("height")})},duration:K(e,!0)?void 0:0});v--;)b[v].align()},g:function(a){var g=this.createElement("g");return a?g.attr({"class":"highcharts-"+a}):g},image:function(a,g,e,c,m){var v={preserveAspectRatio:"none"};1<arguments.length&&b(v,{x:g,y:e,width:c,height:m});v=this.createElement("image").attr(v);v.element.setAttributeNS?v.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):v.element.setAttribute("hc-svg-href",a);return v},symbol:function(a,g,e,c,m, +h){var v=this,F,x=this.symbols[a],y=u(g)&&x&&this.symbols[a](Math.round(g),Math.round(e),c,m,h),C=/^url\((.*?)\)$/,d,t;x?(F=this.path(y),F.attr("fill","none"),b(F,{symbolName:a,x:g,y:e,width:c,height:m}),h&&b(F,h)):C.test(a)&&(d=a.match(C)[1],F=this.image(d),F.imgwidth=K(P[d]&&P[d].width,h&&h.width),F.imgheight=K(P[d]&&P[d].height,h&&h.height),t=function(){F.attr({width:F.width,height:F.height})},z(["width","height"],function(a){F[a+"Setter"]=function(a,g){var e={},b=this["img"+g],v="width"===g?"translateX": +"translateY";this[g]=a;u(b)&&(this.element&&this.element.setAttribute(g,b),this.alignByTranslate||(e[v]=((this[g]||0)-b)/2,this.attr(e)))}}),u(g)&&F.attr({x:g,y:e}),F.isImg=!0,u(F.imgwidth)&&u(F.imgheight)?t():(F.attr({width:0,height:0}),k("img",{onload:function(){var a=f[v.chartIndex];0===this.width&&(q(this,{position:"absolute",top:"-999em"}),n.body.appendChild(this));P[d]={width:this.width,height:this.height};F.imgwidth=this.width;F.imgheight=this.height;F.element&&t();this.parentNode&&this.parentNode.removeChild(this); +v.imgCount--;if(!v.imgCount&&a&&a.onload)a.onload()},src:d}),this.imgCount++));return F},symbols:{circle:function(a,g,e,b){return this.arc(a+e/2,g+b/2,e/2,b/2,{start:0,end:2*Math.PI,open:!1})},square:function(a,g,e,b){return["M",a,g,"L",a+e,g,a+e,g+b,a,g+b,"Z"]},triangle:function(a,g,e,b){return["M",a+e/2,g,"L",a+e,g+b,a,g+b,"Z"]},"triangle-down":function(a,g,e,b){return["M",a,g,"L",a+e,g,a+e/2,g+b,"Z"]},diamond:function(a,g,e,b){return["M",a+e/2,g,"L",a+e,g+b/2,a+e/2,g+b,a,g+b/2,"Z"]},arc:function(a, +g,e,b,c){var v=c.start,m=c.r||e,h=c.r||b||e,F=c.end-.001;e=c.innerR;b=c.open;var x=Math.cos(v),y=Math.sin(v),C=Math.cos(F),F=Math.sin(F);c=c.end-v<Math.PI?0:1;m=["M",a+m*x,g+h*y,"A",m,h,0,c,1,a+m*C,g+h*F];u(e)&&m.push(b?"M":"L",a+e*C,g+e*F,"A",e,e,0,c,0,a+e*x,g+e*y);m.push(b?"":"Z");return m},callout:function(a,g,e,b,c){var m=Math.min(c&&c.r||0,e,b),h=m+6,v=c&&c.anchorX;c=c&&c.anchorY;var F;F=["M",a+m,g,"L",a+e-m,g,"C",a+e,g,a+e,g,a+e,g+m,"L",a+e,g+b-m,"C",a+e,g+b,a+e,g+b,a+e-m,g+b,"L",a+m,g+b,"C", +a,g+b,a,g+b,a,g+b-m,"L",a,g+m,"C",a,g,a,g,a+m,g];v&&v>e?c>g+h&&c<g+b-h?F.splice(13,3,"L",a+e,c-6,a+e+6,c,a+e,c+6,a+e,g+b-m):F.splice(13,3,"L",a+e,b/2,v,c,a+e,b/2,a+e,g+b-m):v&&0>v?c>g+h&&c<g+b-h?F.splice(33,3,"L",a,c+6,a-6,c,a,c-6,a,g+m):F.splice(33,3,"L",a,b/2,v,c,a,b/2,a,g+m):c&&c>b&&v>a+h&&v<a+e-h?F.splice(23,3,"L",v+6,g+b,v,g+b+6,v-6,g+b,a+m,g+b):c&&0>c&&v>a+h&&v<a+e-h&&F.splice(3,3,"L",v-6,g,v,g-6,v+6,g,e-m,g);return F}},clipRect:function(g,e,b,c){var m=a.uniqueKey(),h=this.createElement("clipPath").attr({id:m}).add(this.defs); +g=this.rect(g,e,b,c,0).add(h);g.id=m;g.clipPath=h;g.count=0;return g},text:function(a,g,e,b){var c=!Q&&this.forExport,m={};if(b&&(this.allowHTML||!this.forExport))return this.html(a,g,e);m.x=Math.round(g||0);e&&(m.y=Math.round(e));if(a||0===a)m.text=a;a=this.createElement("text").attr(m);c&&a.css({position:"absolute"});b||(a.xSetter=function(a,g,e){var b=e.getElementsByTagName("tspan"),c,m=e.getAttribute(g),h;for(h=0;h<b.length;h++)c=b[h],c.getAttribute(g)===m&&c.setAttribute(g,a);e.setAttribute(g, +a)});return a},fontMetrics:function(a,g){a=a||g&&g.style&&g.style.fontSize||this.style&&this.style.fontSize;a=/px/.test(a)?J(a):/em/.test(a)?parseFloat(a)*(g?this.fontMetrics(null,g.parentNode).f:16):12;g=24>a?a+3:Math.round(1.2*a);return{h:g,b:Math.round(.8*g),f:a}},rotCorr:function(a,g,e){var b=a;g&&e&&(b=Math.max(b*Math.cos(g*d),4));return{x:-a/3*Math.sin(g*d),y:b}},label:function(e,c,m,h,F,x,C,d,t){var v=this,p=v.g("button"!==t&&"label"),n=p.text=v.text("",0,0,C).attr({zIndex:1}),k,w,E=0,f=3, +D=0,I,q,l,Q,N,K={},J,r,M=/^url\((.*?)\)$/.test(h),P=M,R,S,O,U;t&&p.addClass("highcharts-"+t);P=M;R=function(){return(J||0)%2/2};S=function(){var a=n.element.style,g={};w=(void 0===I||void 0===q||N)&&u(n.textStr)&&n.getBBox();p.width=(I||w.width||0)+2*f+D;p.height=(q||w.height||0)+2*f;r=f+v.fontMetrics(a&&a.fontSize,n).b;P&&(k||(p.box=k=v.symbols[h]||M?v.symbol(h):v.rect(),k.addClass(("button"===t?"":"highcharts-label-box")+(t?" highcharts-"+t+"-box":"")),k.add(p),a=R(),g.x=a,g.y=(d?-r:0)+a),g.width= +Math.round(p.width),g.height=Math.round(p.height),k.attr(b(g,K)),K={})};O=function(){var a=D+f,g;g=d?0:r;u(I)&&w&&("center"===N||"right"===N)&&(a+={center:.5,right:1}[N]*(I-w.width));if(a!==n.x||g!==n.y)n.attr("x",a),void 0!==g&&n.attr("y",g);n.x=a;n.y=g};U=function(a,g){k?k.attr(a,g):K[a]=g};p.onAdd=function(){n.add(p);p.attr({text:e||0===e?e:"",x:c,y:m});k&&u(F)&&p.attr({anchorX:F,anchorY:x})};p.widthSetter=function(g){I=a.isNumber(g)?g:null};p.heightSetter=function(a){q=a};p["text-alignSetter"]= +function(a){N=a};p.paddingSetter=function(a){u(a)&&a!==f&&(f=p.padding=a,O())};p.paddingLeftSetter=function(a){u(a)&&a!==D&&(D=a,O())};p.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==E&&(E=a,w&&p.attr({x:l}))};p.textSetter=function(a){void 0!==a&&n.textSetter(a);S();O()};p["stroke-widthSetter"]=function(a,g){a&&(P=!0);J=this["stroke-width"]=a;U(g,a)};p.strokeSetter=p.fillSetter=p.rSetter=function(a,g){"fill"===g&&a&&(P=!0);U(g,a)};p.anchorXSetter=function(a,g){F=a;U(g,Math.round(a)- +R()-l)};p.anchorYSetter=function(a,g){x=a;U(g,a-Q)};p.xSetter=function(a){p.x=a;E&&(a-=E*((I||w.width)+2*f));l=Math.round(a);p.attr("translateX",l)};p.ySetter=function(a){Q=p.y=Math.round(a);p.attr("translateY",Q)};var W=p.css;return b(p,{css:function(a){if(a){var g={};a=y(a);z(p.textProps,function(e){void 0!==a[e]&&(g[e]=a[e],delete a[e])});n.css(g)}return W.call(p,a)},getBBox:function(){return{width:w.width+2*f,height:w.height+2*f,x:w.x-f,y:w.y-f}},shadow:function(a){a&&(S(),k&&k.shadow(a));return p}, +destroy:function(){g(p.element,"mouseenter");g(p.element,"mouseleave");n&&(n=n.destroy());k&&(k=k.destroy());B.prototype.destroy.call(p);p=v=S=O=U=null}})}};a.Renderer=A})(L);(function(a){var B=a.attr,A=a.createElement,H=a.css,G=a.defined,r=a.each,f=a.extend,l=a.isFirefox,q=a.isMS,k=a.isWebKit,u=a.pInt,d=a.SVGRenderer,c=a.win,n=a.wrap;f(a.SVGElement.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&"SPAN"===b.tagName&&a.width)delete a.width,this.textWidth=b,this.updateTransform();a&&"ellipsis"=== +a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=f(this.styles,a);H(this.element,a);return this},htmlGetBBox:function(){var a=this.element;"text"===a.nodeName&&(a.style.position="absolute");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,b=this.element,c=this.translateX||0,h=this.translateY||0,d=this.x||0,n=this.y||0,w=this.textAlign||"left",e={left:0,center:.5,right:1}[w],x=this.styles; +H(b,{marginLeft:c,marginTop:h});this.shadows&&r(this.shadows,function(a){H(a,{marginLeft:c+1,marginTop:h+1})});this.inverted&&r(b.childNodes,function(e){a.invertChild(e,b)});if("SPAN"===b.tagName){var C=this.rotation,f=u(this.textWidth),m=x&&x.whiteSpace,y=[C,w,b.innerHTML,this.textWidth,this.textAlign].join();y!==this.cTT&&(x=a.fontMetrics(b.style.fontSize).b,G(C)&&this.setSpanRotation(C,e,x),H(b,{width:"",whiteSpace:m||"nowrap"}),b.offsetWidth>f&&/[ \-]/.test(b.textContent||b.innerText)&&H(b,{width:f+ +"px",display:"block",whiteSpace:m||"normal"}),this.getSpanCorrection(b.offsetWidth,x,e,C,w));H(b,{left:d+(this.xCorr||0)+"px",top:n+(this.yCorr||0)+"px"});k&&(x=b.offsetHeight);this.cTT=y}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,p){var h={},d=q?"-ms-transform":k?"-webkit-transform":l?"MozTransform":c.opera?"-o-transform":"";h[d]=h.transform="rotate("+a+"deg)";h[d+(l?"Origin":"-origin")]=h.transformOrigin=100*b+"% "+p+"px";H(this.element,h)},getSpanCorrection:function(a,b,c){this.xCorr= +-a*c;this.yCorr=-b}});f(d.prototype,{html:function(a,b,c){var h=this.createElement("span"),d=h.element,p=h.renderer,k=p.isSVG,e=function(a,e){r(["opacity","visibility"],function(b){n(a,b+"Setter",function(a,b,c,h){a.call(this,b,c,h);e[c]=b})})};h.textSetter=function(a){a!==d.innerHTML&&delete this.bBox;d.innerHTML=this.textStr=a;h.htmlUpdateTransform()};k&&e(h,h.element.style);h.xSetter=h.ySetter=h.alignSetter=h.rotationSetter=function(a,e){"align"===e&&(e="textAlign");h[e]=a;h.htmlUpdateTransform()}; +h.attr({text:a,x:Math.round(b),y:Math.round(c)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:"absolute"});d.style.whiteSpace="nowrap";h.css=h.htmlCss;k&&(h.add=function(a){var b,c=p.box.parentNode,m=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)m.push(a),a=a.parentGroup;r(m.reverse(),function(a){var x,d=B(a.element,"class");d&&(d={className:d});b=a.div=a.div||A("div",d,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display, +opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},b||c);x=b.style;f(a,{on:function(){h.on.apply({element:m[0].div},arguments);return a},translateXSetter:function(e,g){x.left=e+"px";a[g]=e;a.doTransform=!0},translateYSetter:function(e,g){x.top=e+"px";a[g]=e;a.doTransform=!0}});e(a,x)})}}else b=c;b.appendChild(d);h.added=!0;h.alignOnAdd&&h.htmlUpdateTransform();return h});return h}})})(L);(function(a){var B,A,H=a.createElement,G=a.css,r=a.defined,f=a.deg2rad,l=a.discardElement,q=a.doc, +k=a.each,u=a.erase,d=a.extend;B=a.extendClass;var c=a.isArray,n=a.isNumber,z=a.isObject,b=a.merge;A=a.noop;var p=a.pick,h=a.pInt,t=a.SVGElement,D=a.SVGRenderer,w=a.win;a.svg||(A={docMode8:q&&8===q.documentMode,init:function(a,b){var e=["\x3c",b,' filled\x3d"f" stroked\x3d"f"'],c=["position: ","absolute",";"],m="div"===b;("shape"===b||m)&&c.push("left:0;top:0;width:1px;height:1px;");c.push("visibility: ",m?"hidden":"visible");e.push(' style\x3d"',c.join(""),'"/\x3e');b&&(e=m||"span"===b||"img"===b? +e.join(""):a.prepVML(e),this.element=H(e));this.renderer=a},add:function(a){var e=this.renderer,b=this.element,c=e.box,m=a&&a.inverted,c=a?a.element||a:c;a&&(this.parentGroup=a);m&&e.invertChild(b,c);c.appendChild(b);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr("class",this.className);return this},updateTransform:t.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*f),c= +Math.sin(a*f);G(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11\x3d",b,", M12\x3d",-c,", M21\x3d",c,", M22\x3d",b,", sizingMethod\x3d'auto expand')"].join(""):"none"})},getSpanCorrection:function(a,b,c,h,m){var e=h?Math.cos(h*f):1,x=h?Math.sin(h*f):0,d=p(this.elemHeight,this.element.offsetHeight),t;this.xCorr=0>e&&-a;this.yCorr=0>x&&-d;t=0>e*x;this.xCorr+=x*b*(t?1-c:c);this.yCorr-=e*b*(h?t?c:1-c:1);m&&"left"!==m&&(this.xCorr-=a*c*(0>e?-1:1),h&&(this.yCorr-=d*c*(0>x?-1:1)),G(this.element, +{textAlign:m}))},pathToVML:function(a){for(var e=a.length,b=[];e--;)n(a[e])?b[e]=Math.round(10*a[e])-5:"Z"===a[e]?b[e]="x":(b[e]=a[e],!a.isArc||"wa"!==a[e]&&"at"!==a[e]||(b[e+5]===b[e+7]&&(b[e+7]+=a[e+7]>a[e+5]?1:-1),b[e+6]===b[e+8]&&(b[e+8]+=a[e+8]>a[e+6]?1:-1)));return b.join(" ")||"x"},clip:function(a){var e=this,b;a?(b=a.members,u(b,e),b.push(e),e.destroyClip=function(){u(b,e)},a=a.getCSS(e)):(e.destroyClip&&e.destroyClip(),a={clip:e.docMode8?"inherit":"rect(auto)"});return e.css(a)},css:t.prototype.htmlCss, +safeRemoveChild:function(a){a.parentNode&&l(a)},destroy:function(){this.destroyClip&&this.destroyClip();return t.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=w.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var e;a=a.split(/[ ,]/);e=a.length;if(9===e||11===e)a[e-4]=a[e-2]=h(a[e-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var e=[],m,d=this.element,t=this.renderer,x,n=d.style,g,F=d.path,k,C,w,f;F&&"string"!==typeof F.value&&(F= +"x");C=F;if(a){w=p(a.width,3);f=(a.opacity||.15)/w;for(m=1;3>=m;m++)k=2*w+1-2*m,c&&(C=this.cutOffPath(F.value,k+.5)),g=['\x3cshape isShadow\x3d"true" strokeweight\x3d"',k,'" filled\x3d"false" path\x3d"',C,'" coordsize\x3d"10 10" style\x3d"',d.style.cssText,'" /\x3e'],x=H(t.prepVML(g),null,{left:h(n.left)+p(a.offsetX,1),top:h(n.top)+p(a.offsetY,1)}),c&&(x.cutOff=k+1),g=['\x3cstroke color\x3d"',a.color||"#000000",'" opacity\x3d"',f*m,'"/\x3e'],H(t.prepVML(g),null,null,x),b?b.element.appendChild(x): +d.parentNode.insertBefore(x,d),e.push(x);this.shadows=e}return this},updateShadows:A,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||H(this.renderer.prepVML(["\x3cstroke/\x3e"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var e=this.shadows;a=a||[];this.d=a.join&&a.join(" ");c.path=a=this.pathToVML(a);if(e)for(c= +e.length;c--;)e[c].path=e[c].cutOff?this.cutOffPath(a,e[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var e=c.nodeName;"SPAN"===e?c.style.color=a:"IMG"!==e&&(c.filled="none"!==a,this.setAttr("fillcolor",this.renderer.color(a,c,b,this)))},"fill-opacitySetter":function(a,b,c){H(this.renderer.prepVML(["\x3c",b.split("-")[0],' opacity\x3d"',a,'"/\x3e']),null,null,c)},opacitySetter:A,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-Math.round(Math.sin(a*f)+1)+"px";c.top=Math.round(Math.cos(a* +f))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b,this))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;n(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){"inherit"===a&&(a="visible");this.shadows&&k(this.shadows,function(e){e.style[b]=a});"DIV"===c.nodeName&&(a="hidden"===a?"-999em":0,this.docMode8||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a, +b,c){this[b]=a;"x"===b?b="left":"y"===b&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}},A["stroke-opacitySetter"]=A["fill-opacitySetter"],a.VMLElement=A=B(t,A),A.prototype.ySetter=A.prototype.widthSetter=A.prototype.heightSetter=A.prototype.xSetter,A={Element:A,isIE8:-1<w.navigator.userAgent.indexOf("MSIE 8.0"),init:function(a,b,c){var e,m;this.alignedObjects=[];e=this.createElement("div").css({position:"relative"});m=e.element; +a.appendChild(e.element);this.isVML=!0;this.box=m;this.boxWrapper=e;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(b,c,!1);if(!q.namespaces.hcv){q.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{q.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(y){q.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}}, +isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,h){var e=this.createElement(),p=z(a);return d(e,{members:[],count:0,left:(p?a.x:a)+1,top:(p?a.y:b)+1,width:(p?a.width:c)-1,height:(p?a.height:h)-1,getCSS:function(a){var b=a.element,c=b.nodeName,g=a.inverted,e=this.top-("shape"===c?b.offsetTop:0),m=this.left,b=m+this.width,h=e+this.height,e={clip:"rect("+Math.round(g?m:e)+"px,"+Math.round(g?h:b)+"px,"+Math.round(g?b:h)+"px,"+Math.round(g?e:m)+"px)"};!g&&a.docMode8&&"DIV"===c&& +d(e,{width:b+"px",height:h+"px"});return e},updateClipping:function(){k(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(b,c,h,d){var e=this,p,t=/^rgba/,n,x,g="none";b&&b.linearGradient?x="gradient":b&&b.radialGradient&&(x="pattern");if(x){var F,w,f=b.linearGradient||b.radialGradient,C,u,v,D,q,l="";b=b.stops;var z,E=[],r=function(){n=['\x3cfill colors\x3d"'+E.join(",")+'" opacity\x3d"',v,'" o:opacity2\x3d"',u,'" type\x3d"',x,'" ',l,'focus\x3d"100%" method\x3d"any" /\x3e']; +H(e.prepVML(n),null,null,c)};C=b[0];z=b[b.length-1];0<C[0]&&b.unshift([0,C[1]]);1>z[0]&&b.push([1,z[1]]);k(b,function(g,b){t.test(g[1])?(p=a.color(g[1]),F=p.get("rgb"),w=p.get("a")):(F=g[1],w=1);E.push(100*g[0]+"% "+F);b?(v=w,D=F):(u=w,q=F)});if("fill"===h)if("gradient"===x)h=f.x1||f[0]||0,b=f.y1||f[1]||0,C=f.x2||f[2]||0,f=f.y2||f[3]||0,l='angle\x3d"'+(90-180*Math.atan((f-b)/(C-h))/Math.PI)+'"',r();else{var g=f.r,A=2*g,B=2*g,G=f.cx,V=f.cy,L=c.radialReference,T,g=function(){L&&(T=d.getBBox(),G+=(L[0]- +T.x)/T.width-.5,V+=(L[1]-T.y)/T.height-.5,A*=L[2]/T.width,B*=L[2]/T.height);l='src\x3d"'+a.getOptions().global.VMLRadialGradientURL+'" size\x3d"'+A+","+B+'" origin\x3d"0.5,0.5" position\x3d"'+G+","+V+'" color2\x3d"'+q+'" ';r()};d.added?g():d.onAdd=g;g=D}else g=F}else t.test(b)&&"IMG"!==c.tagName?(p=a.color(b),d[h+"-opacitySetter"](p.get("a"),h,c),g=p.get("rgb")):(g=c.getElementsByTagName(h),g.length&&(g[0].opacity=1,g[0].type="solid"),g=b);return g},prepVML:function(a){var b=this.isIE8;a=a.join(""); +b?(a=a.replace("/\x3e",' xmlns\x3d"urn:schemas-microsoft-com:vml" /\x3e'),a=-1===a.indexOf('style\x3d"')?a.replace("/\x3e",' style\x3d"display:inline-block;behavior:url(#default#VML);" /\x3e'):a.replace('style\x3d"','style\x3d"display:inline-block;behavior:url(#default#VML);')):a=a.replace("\x3c","\x3chcv:");return a},text:D.prototype.html,path:function(a){var b={coordsize:"10 10"};c(a)?b.d=a:z(a)&&d(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var e=this.symbol("circle"); +z(a)&&(c=a.r,b=a.y,a=a.x);e.isCircle=!0;e.r=c;return e.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement("div").attr(b)},image:function(a,b,c,h,m){var e=this.createElement("img").attr({src:a});1<arguments.length&&e.attr({x:b,y:c,width:h,height:m});return e},createElement:function(a){return"rect"===a?this.symbol(a):D.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this;b=b.style;var e="IMG"===a.tagName&&a.style; +G(a,{flip:"x",left:h(b.width)-(e?h(e.top):1),top:h(b.height)-(e?h(e.left):1),rotation:-90});k(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,h,m){var e=m.start,d=m.end,p=m.r||c||h;c=m.innerR;h=Math.cos(e);var t=Math.sin(e),g=Math.cos(d),F=Math.sin(d);if(0===d-e)return["x"];e=["wa",a-p,b-p,a+p,b+p,a+p*h,b+p*t,a+p*g,b+p*F];m.open&&!c&&e.push("e","M",a,b);e.push("at",a-c,b-c,a+c,b+c,a+c*g,b+c*F,a+c*h,b+c*t,"x","e");e.isArc=!0;return e},circle:function(a,b,c,h,m){m&&r(m.r)&& +(c=h=2*m.r);m&&m.isCircle&&(a-=c/2,b-=h/2);return["wa",a,b,a+c,b+h,a+c,b+h/2,a+c,b+h/2,"e"]},rect:function(a,b,c,h,m){return D.prototype.symbols[r(m)&&m.r?"callout":"square"].call(0,a,b,c,h,m)}}},a.VMLRenderer=B=function(){this.init.apply(this,arguments)},B.prototype=b(D.prototype,A),a.Renderer=B);D.prototype.measureSpanWidth=function(a,b){var c=q.createElement("span");a=q.createTextNode(a);c.appendChild(a);G(c,b);this.box.appendChild(c);b=c.offsetWidth;l(c);return b}})(L);(function(a){function B(){var k= +a.defaultOptions.global,f=q.moment;if(k.timezone){if(f)return function(a){return-f.tz(a,k.timezone).utcOffset()};a.error(25)}return k.useUTC&&k.getTimezoneOffset}function A(){var k=a.defaultOptions.global,f,d=k.useUTC,c=d?"getUTC":"get",n=d?"setUTC":"set";a.Date=f=k.Date||q.Date;f.hcTimezoneOffset=d&&k.timezoneOffset;f.hcGetTimezoneOffset=B();f.hcMakeTime=function(a,b,c,h,t,n){var p;d?(p=f.UTC.apply(0,arguments),p+=r(p)):p=(new f(a,b,l(c,1),l(h,0),l(t,0),l(n,0))).getTime();return p};G("Minutes Hours Day Date Month FullYear".split(" "), +function(a){f["hcGet"+a]=c+a});G("Milliseconds Seconds Minutes Hours Date Month FullYear".split(" "),function(a){f["hcSet"+a]=n+a})}var H=a.color,G=a.each,r=a.getTZOffset,f=a.merge,l=a.pick,q=a.win;a.defaultOptions={colors:"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" "),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January February March April May June July August September October November December".split(" "), +shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),decimalPoint:".",numericSymbols:"kMGTPE".split(""),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{useUTC:!0,VMLRadialGradientURL:"http://code.highcharts.com/5.0.10/gfx/vml-radial-gradient.png"},chart:{borderRadius:0,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:20}, +position:{align:"right",x:-10,y:10}},width:null,height:null,borderColor:"#335cad",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"},title:{text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{text:"",align:"center",widthAdjust:-44},plotOptions:{},labels:{style:{position:"absolute",color:"#333333"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{activeColor:"#003399",inactiveColor:"#cccccc"}, +itemStyle:{color:"#333333",fontSize:"12px",fontWeight:"bold"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:a.svg,borderRadius:3, +dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},footerFormat:"",padding:8,snap:a.isTouchDevice?25:10,backgroundColor:H("#f7f7f7").setOpacity(.85).get(),borderWidth:1,headerFormat:'\x3cspan style\x3d"font-size: 10px"\x3e{point.key}\x3c/span\x3e\x3cbr/\x3e',pointFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e {series.name}: \x3cb\x3e{point.y}\x3c/b\x3e\x3cbr/\x3e', +shadow:!0,style:{color:"#333333",cursor:"default",fontSize:"12px",pointerEvents:"none",whiteSpace:"nowrap"}},credits:{enabled:!0,href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",fontSize:"9px"},text:"Highcharts.com"}};a.setOptions=function(k){a.defaultOptions=f(!0,a.defaultOptions,k);A();return a.defaultOptions};a.getOptions=function(){return a.defaultOptions};a.defaultPlotOptions=a.defaultOptions.plotOptions;A()})(L); +(function(a){var B=a.arrayMax,A=a.arrayMin,H=a.defined,G=a.destroyObjectProperties,r=a.each,f=a.erase,l=a.merge,q=a.pick;a.PlotLineOrBand=function(a,f){this.axis=a;f&&(this.options=f,this.id=f.id)};a.PlotLineOrBand.prototype={render:function(){var a=this,f=a.axis,d=f.horiz,c=a.options,n=c.label,z=a.label,b=c.to,p=c.from,h=c.value,t=H(p)&&H(b),D=H(h),w=a.svgElem,e=!w,x=[],C,E=c.color,m=q(c.zIndex,0),y=c.events,x={"class":"highcharts-plot-"+(t?"band ":"line ")+(c.className||"")},I={},r=f.chart.renderer, +J=t?"bands":"lines",g=f.log2lin;f.isLog&&(p=g(p),b=g(b),h=g(h));D?(x={stroke:E,"stroke-width":c.width},c.dashStyle&&(x.dashstyle=c.dashStyle)):t&&(E&&(x.fill=E),c.borderWidth&&(x.stroke=c.borderColor,x["stroke-width"]=c.borderWidth));I.zIndex=m;J+="-"+m;(E=f.plotLinesAndBandsGroups[J])||(f.plotLinesAndBandsGroups[J]=E=r.g("plot-"+J).attr(I).add());e&&(a.svgElem=w=r.path().attr(x).add(E));if(D)x=f.getPlotLinePath(h,w.strokeWidth());else if(t)x=f.getPlotBandPath(p,b,c);else return;if(e&&x&&x.length){if(w.attr({d:x}), +y)for(C in c=function(g){w.on(g,function(b){y[g].apply(a,[b])})},y)c(C)}else w&&(x?(w.show(),w.animate({d:x})):(w.hide(),z&&(a.label=z=z.destroy())));n&&H(n.text)&&x&&x.length&&0<f.width&&0<f.height&&!x.flat?(n=l({align:d&&t&&"center",x:d?!t&&4:10,verticalAlign:!d&&t&&"middle",y:d?t?16:10:t?6:-4,rotation:d&&!t&&90},n),this.renderLabel(n,x,t,m)):z&&z.hide();return a},renderLabel:function(a,f,d,c){var n=this.label,k=this.axis.chart.renderer;n||(n={align:a.textAlign||a.align,rotation:a.rotation,"class":"highcharts-plot-"+ +(d?"band":"line")+"-label "+(a.className||"")},n.zIndex=c,this.label=n=k.text(a.text,0,0,a.useHTML).attr(n).add(),n.css(a.style));c=[f[1],f[4],d?f[6]:f[1]];f=[f[2],f[5],d?f[7]:f[2]];d=A(c);k=A(f);n.align(a,!1,{x:d,y:k,width:B(c)-d,height:B(f)-k});n.show()},destroy:function(){f(this.axis.plotLinesAndBands,this);delete this.axis;G(this)}};a.AxisPlotLineOrBandExtension={getPlotBandPath:function(a,f){var d=this.getPlotLinePath(f,null,null,!0),c=this.getPlotLinePath(a,null,null,!0),n=this.horiz,k=1;a= +a<this.min&&f<this.min||a>this.max&&f>this.max;c&&d?(a&&(c.flat=c.toString()===d.toString(),k=0),c.push(n&&d[4]===c[4]?d[4]+k:d[4],n||d[5]!==c[5]?d[5]:d[5]+k,n&&d[1]===c[1]?d[1]+k:d[1],n||d[2]!==c[2]?d[2]:d[2]+k)):c=null;return c},addPlotBand:function(a){return this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){return this.addPlotBandOrLine(a,"plotLines")},addPlotBandOrLine:function(f,q){var d=(new a.PlotLineOrBand(this,f)).render(),c=this.userOptions;d&&(q&&(c[q]=c[q]||[],c[q].push(f)), +this.plotLinesAndBands.push(d));return d},removePlotBandOrLine:function(a){for(var k=this.plotLinesAndBands,d=this.options,c=this.userOptions,n=k.length;n--;)k[n].id===a&&k[n].destroy();r([d.plotLines||[],c.plotLines||[],d.plotBands||[],c.plotBands||[]],function(c){for(n=c.length;n--;)c[n].id===a&&f(c,c[n])})}}})(L);(function(a){var B=a.correctFloat,A=a.defined,H=a.destroyObjectProperties,G=a.isNumber,r=a.merge,f=a.pick,l=a.deg2rad;a.Tick=function(a,f,l,d){this.axis=a;this.pos=f;this.type=l||"";this.isNew= +!0;l||d||this.addLabel()};a.Tick.prototype={addLabel:function(){var a=this.axis,k=a.options,l=a.chart,d=a.categories,c=a.names,n=this.pos,z=k.labels,b=a.tickPositions,p=n===b[0],h=n===b[b.length-1],c=d?f(d[n],c[n],n):n,d=this.label,b=b.info,t;a.isDatetimeAxis&&b&&(t=k.dateTimeLabelFormats[b.higherRanks[n]||b.unitName]);this.isFirst=p;this.isLast=h;k=a.labelFormatter.call({axis:a,chart:l,isFirst:p,isLast:h,dateTimeLabelFormat:t,value:a.isLog?B(a.lin2log(c)):c});A(d)?d&&d.attr({text:k}):(this.labelLength= +(this.label=d=A(k)&&z.enabled?l.renderer.text(k,0,0,z.useHTML).css(r(z.style)).add(a.labelGroup):null)&&d.getBBox().width,this.rotation=0)},getLabelSize:function(){return this.label?this.label.getBBox()[this.axis.horiz?"height":"width"]:0},handleOverflow:function(a){var k=this.axis,q=a.x,d=k.chart.chartWidth,c=k.chart.spacing,n=f(k.labelLeft,Math.min(k.pos,c[3])),c=f(k.labelRight,Math.max(k.pos+k.len,d-c[1])),z=this.label,b=this.rotation,p={left:0,center:.5,right:1}[k.labelAlign],h=z.getBBox().width, +t=k.getSlotWidth(),D=t,w=1,e,x={};if(b)0>b&&q-p*h<n?e=Math.round(q/Math.cos(b*l)-n):0<b&&q+p*h>c&&(e=Math.round((d-q)/Math.cos(b*l)));else if(d=q+(1-p)*h,q-p*h<n?D=a.x+D*(1-p)-n:d>c&&(D=c-a.x+D*p,w=-1),D=Math.min(t,D),D<t&&"center"===k.labelAlign&&(a.x+=w*(t-D-p*(t-Math.min(h,D)))),h>D||k.autoRotation&&(z.styles||{}).width)e=D;e&&(x.width=e,(k.options.labels.style||{}).textOverflow||(x.textOverflow="ellipsis"),z.css(x))},getPosition:function(a,f,l,d){var c=this.axis,n=c.chart,k=d&&n.oldChartHeight|| +n.chartHeight;return{x:a?c.translate(f+l,null,null,d)+c.transB:c.left+c.offset+(c.opposite?(d&&n.oldChartWidth||n.chartWidth)-c.right-c.left:0),y:a?k-c.bottom+c.offset-(c.opposite?c.height:0):k-c.translate(f+l,null,null,d)-c.transB}},getLabelPosition:function(a,f,u,d,c,n,z,b){var p=this.axis,h=p.transA,t=p.reversed,k=p.staggerLines,w=p.tickRotCorr||{x:0,y:0},e=c.y;A(e)||(e=0===p.side?u.rotation?-8:-u.getBBox().height:2===p.side?w.y+8:Math.cos(u.rotation*l)*(w.y-u.getBBox(!1,0).height/2));a=a+c.x+ +w.x-(n&&d?n*h*(t?-1:1):0);f=f+e-(n&&!d?n*h*(t?1:-1):0);k&&(u=z/(b||1)%k,p.opposite&&(u=k-u-1),f+=p.labelOffset/k*u);return{x:a,y:Math.round(f)}},getMarkPath:function(a,f,l,d,c,n){return n.crispLine(["M",a,f,"L",a+(c?0:-l),f+(c?l:0)],d)},renderGridLine:function(a,f,l){var d=this.axis,c=d.options,n=this.gridLine,k={},b=this.pos,p=this.type,h=d.tickmarkOffset,t=d.chart.renderer,D=p?p+"Grid":"grid",w=c[D+"LineWidth"],e=c[D+"LineColor"],c=c[D+"LineDashStyle"];n||(k.stroke=e,k["stroke-width"]=w,c&&(k.dashstyle= +c),p||(k.zIndex=1),a&&(k.opacity=0),this.gridLine=n=t.path().attr(k).addClass("highcharts-"+(p?p+"-":"")+"grid-line").add(d.gridGroup));if(!a&&n&&(a=d.getPlotLinePath(b+h,n.strokeWidth()*l,a,!0)))n[this.isNew?"attr":"animate"]({d:a,opacity:f})},renderMark:function(a,k,l){var d=this.axis,c=d.options,n=d.chart.renderer,q=this.type,b=q?q+"Tick":"tick",p=d.tickSize(b),h=this.mark,t=!h,D=a.x;a=a.y;var w=f(c[b+"Width"],!q&&d.isXAxis?1:0),c=c[b+"Color"];p&&(d.opposite&&(p[0]=-p[0]),t&&(this.mark=h=n.path().addClass("highcharts-"+ +(q?q+"-":"")+"tick").add(d.axisGroup),h.attr({stroke:c,"stroke-width":w})),h[t?"attr":"animate"]({d:this.getMarkPath(D,a,p[0],h.strokeWidth()*l,d.horiz,n),opacity:k}))},renderLabel:function(a,k,l,d){var c=this.axis,n=c.horiz,q=c.options,b=this.label,p=q.labels,h=p.step,t=c.tickmarkOffset,D=!0,w=a.x;a=a.y;b&&G(w)&&(b.xy=a=this.getLabelPosition(w,a,b,n,p,t,d,h),this.isFirst&&!this.isLast&&!f(q.showFirstLabel,1)||this.isLast&&!this.isFirst&&!f(q.showLastLabel,1)?D=!1:!n||c.isRadial||p.step||p.rotation|| +k||0===l||this.handleOverflow(a),h&&d%h&&(D=!1),D&&G(a.y)?(a.opacity=l,b[this.isNew?"attr":"animate"](a)):b.attr("y",-9999),this.isNew=!1)},render:function(a,k,l){var d=this.axis,c=d.horiz,n=this.getPosition(c,this.pos,d.tickmarkOffset,k),q=n.x,b=n.y,d=c&&q===d.pos+d.len||!c&&b===d.pos?-1:1;l=f(l,1);this.isActive=!0;this.renderGridLine(k,l,d);this.renderMark(n,l,d);this.renderLabel(n,k,l,a)},destroy:function(){H(this,this.axis)}}})(L);(function(a){var B=a.addEvent,A=a.animObject,H=a.arrayMax,G=a.arrayMin, +r=a.AxisPlotLineOrBandExtension,f=a.color,l=a.correctFloat,q=a.defaultOptions,k=a.defined,u=a.deg2rad,d=a.destroyObjectProperties,c=a.each,n=a.extend,z=a.fireEvent,b=a.format,p=a.getMagnitude,h=a.grep,t=a.inArray,D=a.isArray,w=a.isNumber,e=a.isString,x=a.merge,C=a.normalizeTickInterval,E=a.pick,m=a.PlotLineOrBand,y=a.removeEvent,I=a.splat,K=a.syncTimeout,J=a.Tick;a.Axis=function(){this.init.apply(this,arguments)};a.Axis.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S", +minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,labels:{enabled:!0,style:{color:"#666666",cursor:"default",fontSize:"11px"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999", +lineColor:"#ccd6eb",lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"#000000",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}}, +defaultRightAxisOptions:{labels:{x:15},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,b){var g=b.isX;this.chart=a;this.horiz=a.inverted?!g:g;this.isXAxis=g;this.coll=this.coll||(g?"xAxis":"yAxis");this.opposite=b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var c=this.options,e=c.type;this.labelFormatter=c.labels.formatter|| +this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.reversed=c.reversed;this.visible=!1!==c.visible;this.zoomEnabled=!1!==c.zoomEnabled;this.hasNames="category"===e||!0===c.categories;this.categories=c.categories||this.hasNames;this.names=this.names||[];this.plotLinesAndBandsGroups={};this.isLog="logarithmic"===e;this.isDatetimeAxis="datetime"===e;this.positiveValuesOnly=this.isLog&&!this.allowNegativeLog;this.isLinked=k(c.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks= +{};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=c.minRange||c.maxZoom;this.range=c.range;this.offset=c.offset||0;this.stacks={};this.oldStacks={};this.stacksTouched=0;this.min=this.max=null;this.crosshair=E(c.crosshair,I(a.options.tooltip.crosshairs)[g?0:1],!1);var h;b=this.options.events;-1===t(this,a.axes)&&(g?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];a.inverted&&g&&void 0===this.reversed&& +(this.reversed=!0);this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(h in b)B(this,h,b[h]);this.lin2log=c.linearToLogConverter||this.lin2log;this.isLog&&(this.val2lin=this.log2lin,this.lin2val=this.lin2log)},setOptions:function(a){this.options=x(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],x(q[this.coll],a))},defaultLabelFormatter:function(){var g= +this.axis,c=this.value,e=g.categories,h=this.dateTimeLabelFormat,m=q.lang,d=m.numericSymbols,m=m.numericSymbolMagnitude||1E3,v=d&&d.length,p,t=g.options.labels.format,g=g.isLog?Math.abs(c):g.tickInterval;if(t)p=b(t,this);else if(e)p=c;else if(h)p=a.dateFormat(h,c);else if(v&&1E3<=g)for(;v--&&void 0===p;)e=Math.pow(m,v+1),g>=e&&0===10*c%e&&null!==d[v]&&0!==c&&(p=a.numberFormat(c/e,-1)+d[v]);void 0===p&&(p=1E4<=Math.abs(c)?a.numberFormat(c,-1):a.numberFormat(c,-1,void 0,""));return p},getSeriesExtremes:function(){var a= +this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();c(a.series,function(g){if(g.visible||!b.options.chart.ignoreHiddenSeries){var c=g.options,e=c.threshold,m;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=e&&(e=null);if(a.isXAxis)c=g.xData,c.length&&(g=G(c),w(g)||g instanceof Date||(c=h(c,function(a){return w(a)}),g=G(c)),a.dataMin=Math.min(E(a.dataMin,c[0]),g),a.dataMax=Math.max(E(a.dataMax,c[0]),H(c)));else if(g.getExtremes(), +m=g.dataMax,g=g.dataMin,k(g)&&k(m)&&(a.dataMin=Math.min(E(a.dataMin,g),g),a.dataMax=Math.max(E(a.dataMax,m),m)),k(e)&&(a.threshold=e),!c.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})},translate:function(a,b,c,e,h,m){var g=this.linkedParent||this,F=1,p=0,d=e?g.oldTransA:g.transA;e=e?g.oldMin:g.min;var t=g.minPixelPadding;h=(g.isOrdinal||g.isBroken||g.isLog&&h)&&g.lin2val;d||(d=g.transA);c&&(F*=-1,p=g.len);g.reversed&&(F*=-1,p-=F*(g.sector||g.len));b?(a=(a*F+p-t)/d+e,h&&(a=g.lin2val(a))): +(h&&(a=g.val2lin(a)),a=F*(a-e)*d+p+F*t+(w(m)?d*m:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,e,h){var g=this.chart,m=this.left,F=this.top,p,d,t=c&&g.oldChartHeight||g.chartHeight,f=c&&g.oldChartWidth||g.chartWidth,n;p=this.transB;var y=function(a,b,g){if(a<b||a>g)e?a=Math.min(Math.max(b,a),g):n=!0;return a};h=E(h,this.translate(a, +null,null,c));a=c=Math.round(h+p);p=d=Math.round(t-h-p);w(h)?this.horiz?(p=F,d=t-this.bottom,a=c=y(a,m,m+this.width)):(a=m,c=f-this.right,p=d=y(p,F,F+this.height)):n=!0;return n&&!e?null:g.renderer.crispLine(["M",a,p,"L",c,d],b||1)},getLinearTickPositions:function(a,b,c){var g,e=l(Math.floor(b/a)*a);c=l(Math.ceil(c/a)*a);var h=[];if(this.single)return[b];for(b=e;b<=c;){h.push(b);b=l(b+a);if(b===g)break;g=b}return h},getMinorTickPositions:function(){var a=this,b=a.options,e=a.tickPositions,h=a.minorTickInterval, +m=[],p=a.pointRangePadding||0,v=a.min-p,p=a.max+p,d=p-v;if(d&&d/h<a.len/3)if(a.isLog)c(this.paddedTicks,function(b,g,c){g&&m.push.apply(m,a.getLogTickPositions(h,c[g-1],c[g],!0))});else if(a.isDatetimeAxis&&"auto"===b.minorTickInterval)m=m.concat(a.getTimeTicks(a.normalizeTimeTickInterval(h),v,p,b.startOfWeek));else for(b=v+(e[0]-v)%h;b<=p&&b!==m[0];b+=h)m.push(b);0!==m.length&&a.trimTicks(m);return m},adjustForMinRange:function(){var a=this.options,b=this.min,e=this.max,h,m=this.dataMax-this.dataMin>= +this.minRange,p,v,d,t,f,n;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(k(a.min)||k(a.max)?this.minRange=null:(c(this.series,function(a){t=a.xData;for(v=f=a.xIncrement?1:t.length-1;0<v;v--)if(d=t[v]-t[v-1],void 0===p||d<p)p=d}),this.minRange=Math.min(5*p,this.dataMax-this.dataMin)));e-b<this.minRange&&(n=this.minRange,h=(n-e+b)/2,h=[b-h,E(a.min,b-h)],m&&(h[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin),b=H(h),e=[b+n,E(a.max,b+n)],m&&(e[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax), +e=G(e),e-b<n&&(h[0]=e-n,h[1]=E(a.min,e-n),b=H(h)));this.min=b;this.max=e},getClosest:function(){var a;this.categories?a=1:c(this.series,function(b){var g=b.closestPointRange,c=b.visible||!b.chart.options.chart.ignoreHiddenSeries;!b.noSharedTooltip&&k(g)&&c&&(a=k(a)?Math.min(a,g):g)});return a},nameToX:function(a){var b=D(this.categories),g=b?this.categories:this.names,c=a.options.x,e;a.series.requireSorting=!1;k(c)||(c=!1===this.options.uniqueNames?a.series.autoIncrement():t(a.name,g));-1===c?b|| +(e=g.length):e=c;void 0!==e&&(this.names[e]=a.name);return e},updateNames:function(){var a=this;0<this.names.length&&(this.names.length=0,this.minRange=void 0,c(this.series||[],function(b){b.xIncrement=null;if(!b.points||b.isDirtyData)b.processData(),b.generatePoints();c(b.points,function(g,c){var e;g.options&&(e=a.nameToX(g),void 0!==e&&e!==g.x&&(g.x=e,b.xData[c]=e))})}))},setAxisTranslation:function(a){var b=this,g=b.max-b.min,h=b.axisPointRange||0,m,p=0,v=0,d=b.linkedParent,t=!!b.categories,f= +b.transA,n=b.isXAxis;if(n||t||h)m=b.getClosest(),d?(p=d.minPointOffset,v=d.pointRangePadding):c(b.series,function(a){var g=t?1:n?E(a.options.pointRange,m,0):b.axisPointRange||0;a=a.options.pointPlacement;h=Math.max(h,g);b.single||(p=Math.max(p,e(a)?0:g/2),v=Math.max(v,"on"===a?0:g))}),d=b.ordinalSlope&&m?b.ordinalSlope/m:1,b.minPointOffset=p*=d,b.pointRangePadding=v*=d,b.pointRange=Math.min(h,g),n&&(b.closestPointRange=m);a&&(b.oldTransA=f);b.translationSlope=b.transA=f=b.options.staticScale||b.len/ +(g+v||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=f*p},minFromRange:function(){return this.max-this.range},setTickInterval:function(b){var g=this,e=g.chart,h=g.options,m=g.isLog,d=g.log2lin,v=g.isDatetimeAxis,t=g.isXAxis,f=g.isLinked,n=h.maxPadding,y=h.minPadding,x=h.tickInterval,D=h.tickPixelInterval,I=g.categories,q=g.threshold,u=g.softThreshold,r,K,J,A;v||I||f||this.getTickAmount();J=E(g.userMin,h.min);A=E(g.userMax,h.max);f?(g.linkedParent=e[g.coll][h.linkedTo],e=g.linkedParent.getExtremes(), +g.min=E(e.min,e.dataMin),g.max=E(e.max,e.dataMax),h.type!==g.linkedParent.options.type&&a.error(11,1)):(!u&&k(q)&&(g.dataMin>=q?(r=q,y=0):g.dataMax<=q&&(K=q,n=0)),g.min=E(J,r,g.dataMin),g.max=E(A,K,g.dataMax));m&&(g.positiveValuesOnly&&!b&&0>=Math.min(g.min,E(g.dataMin,g.min))&&a.error(10,1),g.min=l(d(g.min),15),g.max=l(d(g.max),15));g.range&&k(g.max)&&(g.userMin=g.min=J=Math.max(g.min,g.minFromRange()),g.userMax=A=g.max,g.range=null);z(g,"foundExtremes");g.beforePadding&&g.beforePadding();g.adjustForMinRange(); +!(I||g.axisPointRange||g.usePercentage||f)&&k(g.min)&&k(g.max)&&(d=g.max-g.min)&&(!k(J)&&y&&(g.min-=d*y),!k(A)&&n&&(g.max+=d*n));w(h.softMin)&&(g.min=Math.min(g.min,h.softMin));w(h.softMax)&&(g.max=Math.max(g.max,h.softMax));w(h.floor)&&(g.min=Math.max(g.min,h.floor));w(h.ceiling)&&(g.max=Math.min(g.max,h.ceiling));u&&k(g.dataMin)&&(q=q||0,!k(J)&&g.min<q&&g.dataMin>=q?g.min=q:!k(A)&&g.max>q&&g.dataMax<=q&&(g.max=q));g.tickInterval=g.min===g.max||void 0===g.min||void 0===g.max?1:f&&!x&&D===g.linkedParent.options.tickPixelInterval? +x=g.linkedParent.tickInterval:E(x,this.tickAmount?(g.max-g.min)/Math.max(this.tickAmount-1,1):void 0,I?1:(g.max-g.min)*D/Math.max(g.len,D));t&&!b&&c(g.series,function(a){a.processData(g.min!==g.oldMin||g.max!==g.oldMax)});g.setAxisTranslation(!0);g.beforeSetTickPositions&&g.beforeSetTickPositions();g.postProcessTickInterval&&(g.tickInterval=g.postProcessTickInterval(g.tickInterval));g.pointRange&&!x&&(g.tickInterval=Math.max(g.pointRange,g.tickInterval));b=E(h.minTickInterval,g.isDatetimeAxis&&g.closestPointRange); +!x&&g.tickInterval<b&&(g.tickInterval=b);v||m||x||(g.tickInterval=C(g.tickInterval,null,p(g.tickInterval),E(h.allowDecimals,!(.5<g.tickInterval&&5>g.tickInterval&&1E3<g.max&&9999>g.max)),!!this.tickAmount));this.tickAmount||(g.tickInterval=g.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,e=a.tickPositioner,h=a.startOnTick,m=a.endOnTick;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval= +"auto"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.single=this.min===this.max&&k(this.min)&&!this.tickAmount&&!1!==a.allowDecimals;this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval, +this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,e&&(e=e.apply(this,[this.min,this.max])))&&(this.tickPositions=b=e);this.paddedTicks=b.slice(0);this.trimTicks(b,h,m);this.isLinked||(this.single&&(this.min-=.5,this.max+=.5),c||e||this.adjustTickAmount())},trimTicks:function(a,b,c){var g=a[0],e=a[a.length-1],h=this.minPointOffset||0;if(!this.isLinked){if(b&&-Infinity!==g)this.min=g;else for(;this.min-h>a[0];)a.shift();if(c)this.max=e;else for(;this.max+h<a[a.length-1];)a.pop(); +0===a.length&&k(g)&&a.push((e+g)/2)}},alignToOthers:function(){var a={},b,e=this.options;!1===this.chart.options.chart.alignTicks||!1===e.alignTicks||this.isLog||c(this.chart[this.coll],function(g){var c=g.options,c=[g.horiz?c.left:c.top,c.width,c.height,c.pane].join();g.series.length&&(a[c]?b=!0:a[c]=1)});return b},getTickAmount:function(){var a=this.options,b=a.tickAmount,c=a.tickPixelInterval;!k(a.tickInterval)&&this.len<c&&!this.isRadial&&!this.isLog&&a.startOnTick&&a.endOnTick&&(b=2);!b&&this.alignToOthers()&& +(b=Math.ceil(this.len/c)+1);4>b&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,e=this.finalTickAmt,h=b&&b.length;if(h<c){for(;b.length<c;)b.push(l(b[b.length-1]+a));this.transA*=(h-1)/(c-1);this.max=b[b.length-1]}else h>c&&(this.tickInterval*=2,this.setTickPositions());if(k(e)){for(a=c=b.length;a--;)(3===e&&1===a%2||2>=e&&0<a&&a<c-1)&&b.splice(a,1);this.finalTickAmt=void 0}},setScale:function(){var a,b;this.oldMin= +this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();b=this.len!==this.oldAxisLength;c(this.series,function(b){if(b.isDirtyData||b.isDirty||b.xAxis.isDirty)a=!0});b||a||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax||this.alignToOthers()?(this.resetStacks&&this.resetStacks(),this.forceRedraw=!1,this.getSeriesExtremes(),this.setTickInterval(),this.oldUserMin=this.userMin,this.oldUserMax=this.userMax,this.isDirty||(this.isDirty= +b||this.min!==this.oldMin||this.max!==this.oldMax)):this.cleanStacks&&this.cleanStacks()},setExtremes:function(a,b,e,h,m){var g=this,p=g.chart;e=E(e,!0);c(g.series,function(a){delete a.kdTree});m=n(m,{min:a,max:b});z(g,"setExtremes",m,function(){g.userMin=a;g.userMax=b;g.eventArgs=m;e&&p.redraw(h)})},zoom:function(a,b){var g=this.dataMin,c=this.dataMax,e=this.options,h=Math.min(g,E(e.min,g)),e=Math.max(c,E(e.max,c));if(a!==this.min||b!==this.max)this.allowZoomOutside||(k(g)&&(a<h&&(a=h),a>e&&(a=e)), +k(c)&&(b<h&&(b=h),b>e&&(b=e))),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsets||[0,0,0,0],e=this.horiz,h=E(b.width,a.plotWidth-c[3]+c[1]),m=E(b.height,a.plotHeight-c[0]+c[2]),p=E(b.top,a.plotTop+c[0]),b=E(b.left,a.plotLeft+c[3]),c=/%$/;c.test(m)&&(m=Math.round(parseFloat(m)/100*a.plotHeight));c.test(p)&&(p=Math.round(parseFloat(p)/100*a.plotHeight+a.plotTop));this.left=b;this.top=p; +this.width=h;this.height=m;this.bottom=a.chartHeight-m-p;this.right=a.chartWidth-h-b;this.len=Math.max(e?h:m,0);this.pos=e?b:p},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?l(b(this.min)):this.min,max:a?l(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,g=this.lin2log,c=b?g(this.min):this.min,b=b?g(this.max):this.max;null===a?a=c:c>a?a=c:b<a&&(a=b);return this.translate(a,0, +1,0,1)},autoLabelAlign:function(a){a=(E(a,0)-90*this.side+720)%360;return 15<a&&165>a?"right":195<a&&345>a?"left":"center"},tickSize:function(a){var b=this.options,g=b[a+"Length"],c=E(b[a+"Width"],"tick"===a&&this.isXAxis?1:0);if(c&&g)return"inside"===b[a+"Position"]&&(g=-g),[g,c]},labelMetrics:function(){return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,this.ticks[0]&&this.ticks[0].label)},unsquish:function(){var a=this.options.labels,b=this.horiz, +e=this.tickInterval,h=e,m=this.len/(((this.categories?1:0)+this.max-this.min)/e),p,d=a.rotation,t=this.labelMetrics(),f,n=Number.MAX_VALUE,y,w=function(a){a/=m||1;a=1<a?Math.ceil(a):1;return a*e};b?(y=!a.staggerLines&&!a.step&&(k(d)?[d]:m<E(a.autoRotationLimit,80)&&a.autoRotation))&&c(y,function(a){var b;if(a===d||a&&-90<=a&&90>=a)f=w(Math.abs(t.h/Math.sin(u*a))),b=f+Math.abs(a/360),b<n&&(n=b,p=a,h=f)}):a.step||(h=w(t.h));this.autoRotation=y;this.labelRotation=E(p,d);return h},getSlotWidth:function(){var a= +this.chart,b=this.horiz,c=this.options.labels,e=Math.max(this.tickPositions.length-(this.categories?0:1),1),h=a.margin[3];return b&&2>(c.step||0)&&!c.rotation&&(this.staggerLines||1)*this.len/e||!b&&(h&&h-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,h=this.tickPositions,m=this.ticks,p=this.options.labels,d=this.horiz,v=this.getSlotWidth(),t=Math.max(1,Math.round(v-2*(p.padding||5))),f={},n=this.labelMetrics(),y=p.style&&p.style.textOverflow,k,w=0,D,l;e(p.rotation)|| +(f.rotation=p.rotation||0);c(h,function(a){(a=m[a])&&a.labelLength>w&&(w=a.labelLength)});this.maxLabelLength=w;if(this.autoRotation)w>t&&w>n.h?f.rotation=this.labelRotation:this.labelRotation=0;else if(v&&(k={width:t+"px"},!y))for(k.textOverflow="clip",D=h.length;!d&&D--;)if(l=h[D],t=m[l].label)t.styles&&"ellipsis"===t.styles.textOverflow?t.css({textOverflow:"clip"}):m[l].labelLength>v&&t.css({width:v+"px"}),t.getBBox().height>this.len/h.length-(n.h-n.f)&&(t.specCss={textOverflow:"ellipsis"});f.rotation&& +(k={width:(w>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+"px"},y||(k.textOverflow="ellipsis"));if(this.labelAlign=p.align||this.autoLabelAlign(this.labelRotation))f.align=this.labelAlign;c(h,function(a){var b=(a=m[a])&&a.label;b&&(b.attr(f),k&&b.css(x(k,b.specCss)),delete b.specCss,a.rotation=f.rotation)});this.tickRotCorr=b.rotCorr(n.b,this.labelRotation||0,0!==this.side)},hasData:function(){return this.hasVisibleSeries||k(this.min)&&k(this.max)&&!!this.tickPositions},addTitle:function(a){var b= +this.chart.renderer,c=this.horiz,g=this.opposite,e=this.options.title,h;this.axisTitle||((h=e.textAlign)||(h=(c?{low:"left",middle:"center",high:"right"}:{low:g?"right":"left",middle:"center",high:g?"left":"right"})[e.align]),this.axisTitle=b.text(e.text,0,0,e.useHTML).attr({zIndex:7,rotation:e.rotation||0,align:h}).addClass("highcharts-axis-title").css(e.style).add(this.axisGroup),this.axisTitle.isNew=!0);this.axisTitle[a?"show":"hide"](!0)},generateTick:function(a){var b=this.ticks;b[a]?b[a].addLabel(): +b[a]=new J(this,a)},getOffset:function(){var a=this,b=a.chart,e=b.renderer,h=a.options,m=a.tickPositions,p=a.ticks,d=a.horiz,t=a.side,f=b.inverted?[1,0,3,2][t]:t,n,y,w=0,x,D=0,l=h.title,C=h.labels,q=0,I=b.axisOffset,b=b.clipOffset,u=[-1,1,1,-1][t],z,r=h.className,K=a.axisParent,J=this.tickSize("tick");n=a.hasData();a.showAxis=y=n||E(h.showEmpty,!0);a.staggerLines=a.horiz&&C.staggerLines;a.axisGroup||(a.gridGroup=e.g("grid").attr({zIndex:h.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+ +"-grid "+(r||"")).add(K),a.axisGroup=e.g("axis").attr({zIndex:h.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(r||"")).add(K),a.labelGroup=e.g("axis-labels").attr({zIndex:C.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels "+(r||"")).add(K));if(n||a.isLinked)c(m,function(b,c){a.generateTick(b,c)}),a.renderUnsquish(),!1===C.reserveSpace||0!==t&&2!==t&&{1:"left",3:"right"}[t]!==a.labelAlign&&"center"!==a.labelAlign||c(m,function(a){q=Math.max(p[a].getLabelSize(),q)}), +a.staggerLines&&(q*=a.staggerLines,a.labelOffset=q*(a.opposite?-1:1));else for(z in p)p[z].destroy(),delete p[z];l&&l.text&&!1!==l.enabled&&(a.addTitle(y),y&&(w=a.axisTitle.getBBox()[d?"height":"width"],x=l.offset,D=k(x)?0:E(l.margin,d?5:10)));a.renderLine();a.offset=u*E(h.offset,I[t]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};e=0===t?-a.labelMetrics().h:2===t?a.tickRotCorr.y:0;D=Math.abs(q)+D;q&&(D=D-e+u*(d?E(C.y,a.tickRotCorr.y+8*u):C.x));a.axisTitleMargin=E(x,D);I[t]=Math.max(I[t],a.axisTitleMargin+ +w+u*a.offset,D,n&&m.length&&J?J[0]+u*a.offset:0);h=h.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[f]=Math.max(b[f],h)},getLinePath:function(a){var b=this.chart,c=this.opposite,g=this.offset,e=this.horiz,h=this.left+(c?this.width:0)+g,g=b.chartHeight-this.bottom-(c?this.height:0)+g;c&&(a*=-1);return b.renderer.crispLine(["M",e?this.left:h,e?g:this.top,"L",e?b.chartWidth-this.right:h,e?g:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup), +this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,e=this.len,h=this.options.title,m=a?b:c,p=this.opposite,d=this.offset,t=h.x||0,f=h.y||0,n=this.chart.renderer.fontMetrics(h.style&&h.style.fontSize,this.axisTitle).f,e={low:m+(a?0:e),middle:m+e/2,high:m+(a?e:0)}[h.align],b=(a?c+this.height:b)+(a?1:-1)*(p?-1:1)*this.axisTitleMargin+(2===this.side?n:0);return{x:a?e+t:b+(p?this.width: +0)+d+t,y:a?b+f-(p?this.height:0)+d:e+f}},renderMinorTick:function(a){var b=this.chart.hasRendered&&w(this.oldMin),c=this.minorTicks;c[a]||(c[a]=new J(this,a,"minor"));b&&c[a].isNew&&c[a].render(null,!0);c[a].render(null,!1,1)},renderTick:function(a,b){var c=this.isLinked,g=this.ticks,e=this.chart.hasRendered&&w(this.oldMin);if(!c||a>=this.min&&a<=this.max)g[a]||(g[a]=new J(this,a)),e&&g[a].isNew&&g[a].render(b,!0,.1),g[a].render(b)},render:function(){var a=this,b=a.chart,e=a.options,h=a.isLog,p=a.lin2log, +d=a.isLinked,t=a.tickPositions,f=a.axisTitle,n=a.ticks,y=a.minorTicks,k=a.alternateBands,w=e.stackLabels,x=e.alternateGridColor,D=a.tickmarkOffset,l=a.axisLine,C=a.showAxis,q=A(b.renderer.globalAnimation),I,E;a.labelEdge.length=0;a.overlap=!1;c([n,y,k],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||d)a.minorTickInterval&&!a.categories&&c(a.getMinorTickPositions(),function(b){a.renderMinorTick(b)}),t.length&&(c(t,function(b,c){a.renderTick(b,c)}),D&&(0===a.min||a.single)&&(n[-1]||(n[-1]= +new J(a,-1,null,!0)),n[-1].render(-1))),x&&c(t,function(c,e){E=void 0!==t[e+1]?t[e+1]+D:a.max-D;0===e%2&&c<a.max&&E<=a.max+(b.polar?-D:D)&&(k[c]||(k[c]=new m(a)),I=c+D,k[c].options={from:h?p(I):I,to:h?p(E):E,color:x},k[c].render(),k[c].isActive=!0)}),a._addedPlotLB||(c((e.plotLines||[]).concat(e.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0);c([n,y,k],function(a){var c,e,g=[],h=q.duration;for(c in a)a[c].isActive||(a[c].render(c,!1,0),a[c].isActive=!1,g.push(c));K(function(){for(e= +g.length;e--;)a[g[e]]&&!a[g[e]].isActive&&(a[g[e]].destroy(),delete a[g[e]])},a!==k&&b.hasRendered&&h?h:0)});l&&(l[l.isPlaced?"animate":"attr"]({d:this.getLinePath(l.strokeWidth())}),l.isPlaced=!0,l[C?"show":"hide"](!0));f&&C&&(f[f.isNew?"attr":"animate"](a.getTitlePosition()),f.isNew=!1);w&&w.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function(){this.visible&&(this.render(),c(this.plotLinesAndBands,function(a){a.render()}));c(this.series,function(a){a.isDirty=!0})},keepProps:"extKey hcEvents names series userMax userMin".split(" "), +destroy:function(a){var b=this,e=b.stacks,g,h=b.plotLinesAndBands,m,p;a||y(b);for(g in e)d(e[g]),e[g]=null;c([b.ticks,b.minorTicks,b.alternateBands],function(a){d(a)});if(h)for(a=h.length;a--;)h[a].destroy();c("stackTotalGroup axisLine axisTitle axisGroup gridGroup labelGroup cross".split(" "),function(a){b[a]&&(b[a]=b[a].destroy())});for(m in b.plotLinesAndBandsGroups)b.plotLinesAndBandsGroups[m]=b.plotLinesAndBandsGroups[m].destroy();for(p in b)b.hasOwnProperty(p)&&-1===t(p,b.keepProps)&&delete b[p]}, +drawCrosshair:function(a,b){var c,e=this.crosshair,g=E(e.snap,!0),h,m=this.cross;a||(a=this.cross&&this.cross.e);this.crosshair&&!1!==(k(b)||!g)?(g?k(b)&&(h=this.isXAxis?b.plotX:this.len-b.plotY):h=a&&(this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos),k(h)&&(c=this.getPlotLinePath(b&&(this.isXAxis?b.x:E(b.stackY,b.y)),null,null,null,h)||null),k(c)?(b=this.categories&&!this.isRadial,m||(this.cross=m=this.chart.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-"+(b?"category ": +"thin ")+e.className).attr({zIndex:E(e.zIndex,2)}).add(),m.attr({stroke:e.color||(b?f("#ccd6eb").setOpacity(.25).get():"#cccccc"),"stroke-width":E(e.width,1)}),e.dashStyle&&m.attr({dashstyle:e.dashStyle})),m.show().attr({d:c}),b&&!e.width&&m.attr({"stroke-width":this.transA}),this.cross.e=a):this.hideCrosshair()):this.hideCrosshair()},hideCrosshair:function(){this.cross&&this.cross.hide()}};n(a.Axis.prototype,r)})(L);(function(a){var B=a.Axis,A=a.Date,H=a.dateFormat,G=a.defaultOptions,r=a.defined, +f=a.each,l=a.extend,q=a.getMagnitude,k=a.getTZOffset,u=a.normalizeTickInterval,d=a.pick,c=a.timeUnits;B.prototype.getTimeTicks=function(a,q,b,p){var h=[],t={},n=G.global.useUTC,w,e=new A(q-Math.abs(k(q))),x=A.hcMakeTime,C=a.unitRange,E=a.count,m;if(r(q)){e[A.hcSetMilliseconds](C>=c.second?0:E*Math.floor(e.getMilliseconds()/E));if(C>=c.second)e[A.hcSetSeconds](C>=c.minute?0:E*Math.floor(e.getSeconds()/E));if(C>=c.minute)e[A.hcSetMinutes](C>=c.hour?0:E*Math.floor(e[A.hcGetMinutes]()/E));if(C>=c.hour)e[A.hcSetHours](C>= +c.day?0:E*Math.floor(e[A.hcGetHours]()/E));if(C>=c.day)e[A.hcSetDate](C>=c.month?1:E*Math.floor(e[A.hcGetDate]()/E));C>=c.month&&(e[A.hcSetMonth](C>=c.year?0:E*Math.floor(e[A.hcGetMonth]()/E)),w=e[A.hcGetFullYear]());if(C>=c.year)e[A.hcSetFullYear](w-w%E);if(C===c.week)e[A.hcSetDate](e[A.hcGetDate]()-e[A.hcGetDay]()+d(p,1));w=e[A.hcGetFullYear]();p=e[A.hcGetMonth]();var y=e[A.hcGetDate](),I=e[A.hcGetHours]();if(A.hcTimezoneOffset||A.hcGetTimezoneOffset)m=(!n||!!A.hcGetTimezoneOffset)&&(b-q>4*c.month|| +k(q)!==k(b)),e=e.getTime(),e=new A(e+k(e));n=e.getTime();for(q=1;n<b;)h.push(n),n=C===c.year?x(w+q*E,0):C===c.month?x(w,p+q*E):!m||C!==c.day&&C!==c.week?m&&C===c.hour?x(w,p,y,I+q*E):n+C*E:x(w,p,y+q*E*(C===c.day?1:7)),q++;h.push(n);C<=c.hour&&1E4>h.length&&f(h,function(a){0===a%18E5&&"000000000"===H("%H%M%S%L",a)&&(t[a]="day")})}h.info=l(a,{higherRanks:t,totalRange:C*E});return h};B.prototype.normalizeTimeTickInterval=function(a,d){var b=d||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second", +[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]];d=b[b.length-1];var p=c[d[0]],h=d[1],t;for(t=0;t<b.length&&!(d=b[t],p=c[d[0]],h=d[1],b[t+1]&&a<=(p*h[h.length-1]+c[b[t+1][0]])/2);t++);p===c.year&&a<5*p&&(h=[1,2,5]);a=u(a/p,h,"year"===d[0]?Math.max(q(a/p),1):1);return{unitRange:p,count:a,unitName:d[0]}}})(L);(function(a){var B=a.Axis,A=a.getMagnitude,H=a.map,G=a.normalizeTickInterval,r=a.pick;B.prototype.getLogTickPositions= +function(a,l,q,k){var f=this.options,d=this.len,c=this.lin2log,n=this.log2lin,z=[];k||(this._minorAutoInterval=null);if(.5<=a)a=Math.round(a),z=this.getLinearTickPositions(a,l,q);else if(.08<=a)for(var d=Math.floor(l),b,p,h,t,D,f=.3<a?[1,2,4]:.15<a?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];d<q+1&&!D;d++)for(p=f.length,b=0;b<p&&!D;b++)h=n(c(d)*f[b]),h>l&&(!k||t<=q)&&void 0!==t&&z.push(t),t>q&&(D=!0),t=h;else l=c(l),q=c(q),a=f[k?"minorTickInterval":"tickInterval"],a=r("auto"===a?null:a,this._minorAutoInterval, +f.tickPixelInterval/(k?5:1)*(q-l)/((k?d/this.tickPositions.length:d)||1)),a=G(a,null,A(a)),z=H(this.getLinearTickPositions(a,l,q),n),k||(this._minorAutoInterval=a/5);k||(this.tickInterval=a);return z};B.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};B.prototype.lin2log=function(a){return Math.pow(10,a)}})(L);(function(a){var B=a.dateFormat,A=a.each,H=a.extend,G=a.format,r=a.isNumber,f=a.map,l=a.merge,q=a.pick,k=a.splat,u=a.syncTimeout,d=a.timeUnits;a.Tooltip=function(){this.init.apply(this, +arguments)};a.Tooltip.prototype={init:function(a,d){this.chart=a;this.options=d;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=d.split&&!a.inverted;this.shared=d.shared||this.split},cleanSplit:function(a){A(this.chart.series,function(c){var d=c&&c.tt;d&&(!d.isActive||a?c.tt=d.destroy():d.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,d=this.options;this.label||(this.split?this.label=a.g("tooltip"):(this.label=a.label("",0,0,d.shape||"callout",null,null,d.useHTML, +null,"tooltip").attr({padding:d.padding,r:d.borderRadius}),this.label.attr({fill:d.backgroundColor,"stroke-width":d.borderWidth}).css(d.style).shadow(d.shadow)),this.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();this.init(this.chart,l(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart,!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)}, +move:function(a,d,f,b){var c=this,h=c.now,t=!1!==c.options.animation&&!c.isHidden&&(1<Math.abs(a-h.x)||1<Math.abs(d-h.y)),n=c.followPointer||1<c.len;H(h,{x:t?(2*h.x+a)/3:a,y:t?(h.y+d)/2:d,anchorX:n?void 0:t?(2*h.anchorX+f)/3:f,anchorY:n?void 0:t?(h.anchorY+b)/2:b});c.getLabel().attr(h);t&&(clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){c&&c.move(a,d,f,b)},32))},hide:function(a){var c=this;clearTimeout(this.hideTimer);a=q(a,this.options.hideDelay,500);this.isHidden||(this.hideTimer= +u(function(){c.getLabel()[a?"fadeOut":"hide"]();c.isHidden=!0},a))},getAnchor:function(a,d){var c,b=this.chart,p=b.inverted,h=b.plotTop,t=b.plotLeft,n=0,w=0,e,x;a=k(a);c=a[0].tooltipPos;this.followPointer&&d&&(void 0===d.chartX&&(d=b.pointer.normalize(d)),c=[d.chartX-b.plotLeft,d.chartY-h]);c||(A(a,function(a){e=a.series.yAxis;x=a.series.xAxis;n+=a.plotX+(!p&&x?x.left-t:0);w+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!p&&e?e.top-h:0)}),n/=a.length,w/=a.length,c=[p?b.plotWidth-w:n,this.shared&& +!p&&1<a.length&&d?d.chartY-h:p?b.plotHeight-n:w]);return f(c,Math.round)},getPosition:function(a,d,f){var b=this.chart,c=this.distance,h={},t=f.h||0,n,k=["y",b.chartHeight,d,f.plotY+b.plotTop,b.plotTop,b.plotTop+b.plotHeight],e=["x",b.chartWidth,a,f.plotX+b.plotLeft,b.plotLeft,b.plotLeft+b.plotWidth],x=!this.followPointer&&q(f.ttBelow,!b.inverted===!!f.negative),l=function(a,b,e,g,m,d){var p=e<g-c,f=g+c+e<b,n=g-c-e;g+=c;if(x&&f)h[a]=g;else if(!x&&p)h[a]=n;else if(p)h[a]=Math.min(d-e,0>n-t?n:n-t); +else if(f)h[a]=Math.max(m,g+t+e>b?g:g+t);else return!1},E=function(a,b,e,g){var m;g<c||g>b-c?m=!1:h[a]=g<e/2?1:g>b-e/2?b-e-2:g-e/2;return m},m=function(a){var b=k;k=e;e=b;n=a},y=function(){!1!==l.apply(0,k)?!1!==E.apply(0,e)||n||(m(!0),y()):n?h.x=h.y=0:(m(!0),y())};(b.inverted||1<this.len)&&m();y();return h},defaultFormatter:function(a){var c=this.points||k(this),d;d=[a.tooltipFooterHeaderFormatter(c[0])];d=d.concat(a.bodyFormatter(c));d.push(a.tooltipFooterHeaderFormatter(c[0],!0));return d},refresh:function(a, +d){var c,b=this.options,p,h=a,t,f={},n=[];c=b.formatter||this.defaultFormatter;var f=this.shared,e;clearTimeout(this.hideTimer);this.followPointer=k(h)[0].series.tooltipOptions.followPointer;t=this.getAnchor(h,d);d=t[0];p=t[1];!f||h.series&&h.series.noSharedTooltip?f=h.getLabelConfig():(A(h,function(a){a.setState("hover");n.push(a.getLabelConfig())}),f={x:h[0].category,y:h[0].y},f.points=n,h=h[0]);this.len=n.length;f=c.call(f,this);e=h.series;this.distance=q(e.tooltipOptions.distance,16);!1===f?this.hide(): +(c=this.getLabel(),this.isHidden&&c.attr({opacity:1}).show(),this.split?this.renderSplit(f,a):(c.attr({text:f&&f.join?f.join(""):f}),c.removeClass(/highcharts-color-[\d]+/g).addClass("highcharts-color-"+q(h.colorIndex,e.colorIndex)),c.attr({stroke:b.borderColor||h.color||e.color||"#666666"}),this.updatePosition({plotX:d,plotY:p,negative:h.negative,ttBelow:h.ttBelow,h:t[2]||0})),this.isHidden=!1)},renderSplit:function(c,d){var f=this,b=[],p=this.chart,h=p.renderer,t=!0,n=this.options,k,e=this.getLabel(); +A(c.slice(0,d.length+1),function(a,c){c=d[c-1]||{isHeader:!0,plotX:d[0].plotX};var w=c.series||f,m=w.tt,y=c.series||{},x="highcharts-color-"+q(c.colorIndex,y.colorIndex,"none");m||(w.tt=m=h.label(null,null,null,"callout").addClass("highcharts-tooltip-box "+x).attr({padding:n.padding,r:n.borderRadius,fill:n.backgroundColor,stroke:c.color||y.color||"#333333","stroke-width":n.borderWidth}).add(e));m.isActive=!0;m.attr({text:a});m.css(n.style);a=m.getBBox();y=a.width+m.strokeWidth();c.isHeader?(k=a.height, +y=Math.max(0,Math.min(c.plotX+p.plotLeft-y/2,p.chartWidth-y))):y=c.plotX+p.plotLeft-q(n.distance,16)-y;0>y&&(t=!1);a=(c.series&&c.series.yAxis&&c.series.yAxis.pos)+(c.plotY||0);a-=p.plotTop;b.push({target:c.isHeader?p.plotHeight+k:a,rank:c.isHeader?1:0,size:w.tt.getBBox().height+1,point:c,x:y,tt:m})});this.cleanSplit();a.distribute(b,p.plotHeight+k);A(b,function(a){var b=a.point,c=b.series;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:t||b.isHeader?a.x:b.plotX+p.plotLeft+q(n.distance, +16),y:a.pos+p.plotTop,anchorX:b.isHeader?b.plotX+p.plotLeft:b.plotX+c.xAxis.pos,anchorY:b.isHeader?a.pos+p.plotTop-15:b.plotY+c.yAxis.pos})})},updatePosition:function(a){var c=this.chart,d=this.getLabel(),d=(this.options.positioner||this.getPosition).call(this,d.width,d.height,a);this.move(Math.round(d.x),Math.round(d.y||0),a.plotX+c.plotLeft,a.plotY+c.plotTop)},getDateFormat:function(a,f,k,b){var c=B("%m-%d %H:%M:%S.%L",f),h,t,n={millisecond:15,second:12,minute:9,hour:6,day:3},w="millisecond";for(t in d){if(a=== +d.week&&+B("%w",f)===k&&"00:00:00.000"===c.substr(6)){t="week";break}if(d[t]>a){t=w;break}if(n[t]&&c.substr(n[t])!=="01-01 00:00:00.000".substr(n[t]))break;"week"!==t&&(w=t)}t&&(h=b[t]);return h},getXDateFormat:function(a,d,f){d=d.dateTimeLabelFormats;var b=f&&f.closestPointRange;return(b?this.getDateFormat(b,a.x,f.options.startOfWeek,d):d.day)||d.year},tooltipFooterHeaderFormatter:function(a,d){var c=d?"footer":"header";d=a.series;var b=d.tooltipOptions,p=b.xDateFormat,h=d.xAxis,t=h&&"datetime"=== +h.options.type&&r(a.key),c=b[c+"Format"];t&&!p&&(p=this.getXDateFormat(a,b,h));t&&p&&(c=c.replace("{point.key}","{point.key:"+p+"}"));return G(c,{point:a,series:d})},bodyFormatter:function(a){return f(a,function(a){var c=a.series.tooltipOptions;return(c.pointFormatter||a.point.tooltipFormatter).call(a.point,c.pointFormat)})}}})(L);(function(a){var B=a.addEvent,A=a.attr,H=a.charts,G=a.color,r=a.css,f=a.defined,l=a.doc,q=a.each,k=a.extend,u=a.fireEvent,d=a.offset,c=a.pick,n=a.removeEvent,z=a.splat, +b=a.Tooltip,p=a.win;a.Pointer=function(a,b){this.init(a,b)};a.Pointer.prototype={init:function(a,d){this.options=d;this.chart=a;this.runChartClick=d.chart.events&&!!d.chart.events.click;this.pinchDown=[];this.lastValidTouch={};b&&d.tooltip.enabled&&(a.tooltip=new b(a,d.tooltip),this.followTouchMove=c(d.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,h=b.options.chart,d=h.zoomType||"",b=b.inverted;/touch/.test(a.type)&&(d=c(h.pinchType,d));this.zoomX=a=/x/.test(d); +this.zoomY=d=/y/.test(d);this.zoomHor=a&&!b||d&&b;this.zoomVert=d&&!b||a&&b;this.hasZoom=a||d},normalize:function(a,b){var c,h;a=a||p.event;a.target||(a.target=a.srcElement);h=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;b||(this.chartPosition=b=d(this.chart.container));void 0===h.pageX?(c=Math.max(a.x,a.clientX-b.left),b=a.y):(c=h.pageX-b.left,b=h.pageY-b.top);return k(a,{chartX:Math.round(c),chartY:Math.round(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};q(this.chart.axes, +function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getKDPoints:function(a,b,d){var h=[],e,p,f;q(a,function(a){e=a.noSharedTooltip&&b;p=!b&&a.directTouch;a.visible&&!p&&c(a.options.enableMouseTracking,!0)&&(f=a.searchPoint(d,!e&&0>a.options.findNearestPointBy.indexOf("y")))&&f.series&&h.push(f)});h.sort(function(a,c){var e=a.distX-c.distX,h=a.dist-c.dist,m=(c.series.group&&c.series.group.zIndex)-(a.series.group&&a.series.group.zIndex); +return 0!==e&&b?e:0!==h?h:0!==m?m:a.series.index>c.series.index?-1:1});if(b&&h[0]&&!h[0].series.noSharedTooltip)for(a=h.length;a--;)(h[a].x!==h[0].x||h[a].series.noSharedTooltip)&&h.splice(a,1);return h},getPointFromEvent:function(a){a=a.target;for(var b;a&&!b;)b=a.point,a=a.parentNode;return b},getHoverData:function(b,d,p,f,e,n){var h=b,t=d,m;f?e?(m=[],q(p,function(a){var b=a.noSharedTooltip&&e,d=!e&&a.directTouch;a.visible&&!b&&!d&&c(a.options.enableMouseTracking,!0)&&(a=a.searchKDTree({clientX:h.clientX, +plotY:h.plotY},!b&&1===a.kdDimensions))&&a.series&&m.push(a)}),0===m.length&&(m=[h])):m=[h]:t&&!t.stickyTracking?(e||(p=[t]),m=this.getKDPoints(p,e,n),h=a.find(m,function(a){return a.series===t})):(b=a.grep(p,function(a){return a.stickyTracking}),m=this.getKDPoints(b,e,n),t=(h=m[0])&&h.series,e&&(m=this.getKDPoints(p,e,n)));m.sort(function(a,b){return a.series.index-b.series.index});return{hoverPoint:h,hoverSeries:t,hoverPoints:m}},runPointActions:function(b,d){var h=this.chart,p=h.tooltip,e=p?p.shared: +!1,f=d||h.hoverPoint,t=f&&f.series||h.hoverSeries;d=this.getHoverData(f,t,h.series,!!d||!e&&t&&t.directTouch,e,b);var n,m,f=d.hoverPoint;n=(t=d.hoverSeries)&&t.tooltipOptions.followPointer;m=(e=e&&f&&!f.series.noSharedTooltip)?d.hoverPoints:f?[f]:[];if(f&&(f!==h.hoverPoint||p&&p.isHidden)){q(h.hoverPoints||[],function(b){-1===a.inArray(b,m)&&b.setState()});q(m||[],function(a){a.setState("hover")});if(h.hoverSeries!==t)t.onMouseOver();t&&!t.directTouch&&(h.hoverPoint&&h.hoverPoint.firePointEvent("mouseOut"), +f.firePointEvent("mouseOver"));h.hoverPoints=m;h.hoverPoint=f;p&&p.refresh(e?m:f,b)}else n&&p&&!p.isHidden&&(f=p.getAnchor([{}],b),p.updatePosition({plotX:f[0],plotY:f[1]}));this.unDocMouseMove||(this.unDocMouseMove=B(l,"mousemove",function(b){var c=H[a.hoverChartIndex];if(c)c.pointer.onDocumentMouseMove(b)}));q(h.axes,function(a){c(a.crosshair.snap,!0)?q(m,function(c){c.series[a.coll]===a&&a.drawCrosshair(b,c)}):a.drawCrosshair(b)})},reset:function(a,b){var c=this.chart,h=c.hoverSeries,e=c.hoverPoint, +d=c.hoverPoints,p=c.tooltip,f=p&&p.shared?d:e;a&&f&&q(z(f),function(b){b.series.isCartesian&&void 0===b.plotX&&(a=!1)});if(a)p&&f&&(p.refresh(f),e&&(e.setState(e.state,!0),q(c.axes,function(a){a.crosshair&&a.drawCrosshair(null,e)})));else{if(e)e.onMouseOut();d&&q(d,function(a){a.setState()});if(h)h.onMouseOut();p&&p.hide(b);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());q(c.axes,function(a){a.hideCrosshair()});this.hoverX=c.hoverPoints=c.hoverPoint=null}},scaleGroups:function(a, +b){var c=this.chart,h;q(c.series,function(e){h=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&e.group&&(e.group.attr(h),e.markerGroup&&(e.markerGroup.attr(h),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(h))});c.clipRect.attr(b||c.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,h=a.chartX,e=a.chartY, +d=this.zoomHor,p=this.zoomVert,f=b.plotLeft,m=b.plotTop,n=b.plotWidth,k=b.plotHeight,l,q=this.selectionMarker,g=this.mouseDownX,u=this.mouseDownY,r=c.panKey&&a[c.panKey+"Key"];q&&q.touch||(h<f?h=f:h>f+n&&(h=f+n),e<m?e=m:e>m+k&&(e=m+k),this.hasDragged=Math.sqrt(Math.pow(g-h,2)+Math.pow(u-e,2)),10<this.hasDragged&&(l=b.isInsidePlot(g-f,u-m),b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!r&&!q&&(this.selectionMarker=q=b.renderer.rect(f,m,d?1:n,p?1:k,0).attr({fill:c.selectionMarkerFill||G("#335cad").setOpacity(.25).get(), +"class":"highcharts-selection-marker",zIndex:7}).add()),q&&d&&(h-=g,q.attr({width:Math.abs(h),x:(0<h?0:h)+g})),q&&p&&(h=e-u,q.attr({height:Math.abs(h),y:(0<h?0:h)+u})),l&&!q&&c.panning&&b.pan(a,c.panning)))},drop:function(a){var b=this,c=this.chart,h=this.hasPinched;if(this.selectionMarker){var e={originalEvent:a,xAxis:[],yAxis:[]},d=this.selectionMarker,p=d.attr?d.attr("x"):d.x,n=d.attr?d.attr("y"):d.y,m=d.attr?d.attr("width"):d.width,y=d.attr?d.attr("height"):d.height,l;if(this.hasDragged||h)q(c.axes, +function(c){if(c.zoomEnabled&&f(c.min)&&(h||b[{xAxis:"zoomX",yAxis:"zoomY"}[c.coll]])){var d=c.horiz,g="touchend"===a.type?c.minPixelPadding:0,t=c.toValue((d?p:n)+g),d=c.toValue((d?p+m:n+y)-g);e[c.coll].push({axis:c,min:Math.min(t,d),max:Math.max(t,d)});l=!0}}),l&&u(c,"selection",e,function(a){c.zoom(k(a,h?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();h&&this.scaleGroups()}c&&(r(c.container,{cursor:c._cursor}),c.cancelClick=10<this.hasDragged,c.mouseIsDown=this.hasDragged= +this.hasPinched=!1,this.pinchDown=[])},onContainerMouseDown:function(a){a=this.normalize(a);this.zoomOption(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(b){H[a.hoverChartIndex]&&H[a.hoverChartIndex].pointer.drop(b)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition;a=this.normalize(a,c);!c||this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)||this.reset()},onContainerMouseLeave:function(b){var c= +H[a.hoverChartIndex];c&&(b.relatedTarget||b.toElement)&&(c.pointer.reset(),c.pointer.chartPosition=null)},onContainerMouseMove:function(b){var c=this.chart;f(a.hoverChartIndex)&&H[a.hoverChartIndex]&&H[a.hoverChartIndex].mouseIsDown||(a.hoverChartIndex=c.index);b=this.normalize(b);b.returnValue=!1;"mousedown"===c.mouseIsDown&&this.drag(b);!this.inClass(b.target,"highcharts-tracker")&&!c.isInsidePlot(b.chartX-c.plotLeft,b.chartY-c.plotTop)||c.openMenu||this.runPointActions(b)},inClass:function(a,b){for(var c;a;){if(c= +A(a,"class")){if(-1!==c.indexOf(b))return!0;if(-1!==c.indexOf("highcharts-container"))return!1}a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries;a=a.relatedTarget||a.toElement;if(!(!b||!a||b.stickyTracking||this.inClass(a,"highcharts-tooltip")||this.inClass(a,"highcharts-series-"+b.index)&&this.inClass(a,"highcharts-tracker")))b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,h=b.plotLeft,e=b.plotTop;a=this.normalize(a);b.cancelClick||(c&&this.inClass(a.target, +"highcharts-tracker")?(u(c.series,"click",k(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",a)):(k(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-h,a.chartY-e)&&u(b,"click",a)))},setDOMEvents:function(){var b=this,c=b.chart.container;c.onmousedown=function(a){b.onContainerMouseDown(a)};c.onmousemove=function(a){b.onContainerMouseMove(a)};c.onclick=function(a){b.onContainerClick(a)};B(c,"mouseleave",b.onContainerMouseLeave);1===a.chartCount&&B(l,"mouseup",b.onDocumentMouseUp);a.hasTouch&&(c.ontouchstart= +function(a){b.onContainerTouchStart(a)},c.ontouchmove=function(a){b.onContainerTouchMove(a)},1===a.chartCount&&B(l,"touchend",b.onDocumentTouchEnd))},destroy:function(){var b;this.unDocMouseMove&&this.unDocMouseMove();n(this.chart.container,"mouseleave",this.onContainerMouseLeave);a.chartCount||(n(l,"mouseup",this.onDocumentMouseUp),n(l,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(b in this)this[b]=null}}})(L);(function(a){var B=a.charts,A=a.each,H=a.extend,G=a.map, +r=a.noop,f=a.pick;H(a.Pointer.prototype,{pinchTranslate:function(a,f,k,u,d,c){this.zoomHor&&this.pinchTranslateDirection(!0,a,f,k,u,d,c);this.zoomVert&&this.pinchTranslateDirection(!1,a,f,k,u,d,c)},pinchTranslateDirection:function(a,f,k,u,d,c,n,r){var b=this.chart,p=a?"x":"y",h=a?"X":"Y",t="chart"+h,l=a?"width":"height",w=b["plot"+(a?"Left":"Top")],e,q,C=r||1,E=b.inverted,m=b.bounds[a?"h":"v"],y=1===f.length,I=f[0][t],K=k[0][t],J=!y&&f[1][t],g=!y&&k[1][t],z;k=function(){!y&&20<Math.abs(I-J)&&(C=r|| +Math.abs(K-g)/Math.abs(I-J));q=(w-K)/C+I;e=b["plot"+(a?"Width":"Height")]/C};k();f=q;f<m.min?(f=m.min,z=!0):f+e>m.max&&(f=m.max-e,z=!0);z?(K-=.8*(K-n[p][0]),y||(g-=.8*(g-n[p][1])),k()):n[p]=[K,g];E||(c[p]=q-w,c[l]=e);c=E?1/C:C;d[l]=e;d[p]=f;u[E?a?"scaleY":"scaleX":"scale"+h]=C;u["translate"+h]=c*w+(K-c*I)},pinch:function(a){var l=this,k=l.chart,u=l.pinchDown,d=a.touches,c=d.length,n=l.lastValidTouch,z=l.hasZoom,b=l.selectionMarker,p={},h=1===c&&(l.inClass(a.target,"highcharts-tracker")&&k.runTrackerClick|| +l.runChartClick),t={};1<c&&(l.initiated=!0);z&&l.initiated&&!h&&a.preventDefault();G(d,function(a){return l.normalize(a)});"touchstart"===a.type?(A(d,function(a,b){u[b]={chartX:a.chartX,chartY:a.chartY}}),n.x=[u[0].chartX,u[1]&&u[1].chartX],n.y=[u[0].chartY,u[1]&&u[1].chartY],A(k.axes,function(a){if(a.zoomEnabled){var b=k.bounds[a.horiz?"h":"v"],c=a.minPixelPadding,h=a.toPixels(f(a.options.min,a.dataMin)),d=a.toPixels(f(a.options.max,a.dataMax)),p=Math.max(h,d);b.min=Math.min(a.pos,Math.min(h,d)- +c);b.max=Math.max(a.pos+a.len,p+c)}}),l.res=!0):l.followTouchMove&&1===c?this.runPointActions(l.normalize(a)):u.length&&(b||(l.selectionMarker=b=H({destroy:r,touch:!0},k.plotBox)),l.pinchTranslate(u,d,p,b,t,n),l.hasPinched=z,l.scaleGroups(p,t),l.res&&(l.res=!1,this.reset(!1,0)))},touch:function(l,q){var k=this.chart,u,d;if(k.index!==a.hoverChartIndex)this.onContainerMouseLeave({relatedTarget:!0});a.hoverChartIndex=k.index;1===l.touches.length?(l=this.normalize(l),(d=k.isInsidePlot(l.chartX-k.plotLeft, +l.chartY-k.plotTop))&&!k.openMenu?(q&&this.runPointActions(l),"touchmove"===l.type&&(q=this.pinchDown,u=q[0]?4<=Math.sqrt(Math.pow(q[0].chartX-l.chartX,2)+Math.pow(q[0].chartY-l.chartY,2)):!1),f(u,!0)&&this.pinch(l)):q&&this.reset()):2===l.touches.length&&this.pinch(l)},onContainerTouchStart:function(a){this.zoomOption(a);this.touch(a,!0)},onContainerTouchMove:function(a){this.touch(a)},onDocumentTouchEnd:function(f){B[a.hoverChartIndex]&&B[a.hoverChartIndex].pointer.drop(f)}})})(L);(function(a){var B= +a.addEvent,A=a.charts,H=a.css,G=a.doc,r=a.extend,f=a.noop,l=a.Pointer,q=a.removeEvent,k=a.win,u=a.wrap;if(k.PointerEvent||k.MSPointerEvent){var d={},c=!!k.PointerEvent,n=function(){var a,c=[];c.item=function(a){return this[a]};for(a in d)d.hasOwnProperty(a)&&c.push({pageX:d[a].pageX,pageY:d[a].pageY,target:d[a].target});return c},z=function(b,c,h,d){"touch"!==b.pointerType&&b.pointerType!==b.MSPOINTER_TYPE_TOUCH||!A[a.hoverChartIndex]||(d(b),d=A[a.hoverChartIndex].pointer,d[c]({type:h,target:b.currentTarget, +preventDefault:f,touches:n()}))};r(l.prototype,{onContainerPointerDown:function(a){z(a,"onContainerTouchStart","touchstart",function(a){d[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){z(a,"onContainerTouchMove","touchmove",function(a){d[a.pointerId]={pageX:a.pageX,pageY:a.pageY};d[a.pointerId].target||(d[a.pointerId].target=a.currentTarget)})},onDocumentPointerUp:function(a){z(a,"onDocumentTouchEnd","touchend",function(a){delete d[a.pointerId]})}, +batchMSEvents:function(a){a(this.chart.container,c?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,c?"pointermove":"MSPointerMove",this.onContainerPointerMove);a(G,c?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});u(l.prototype,"init",function(a,c,h){a.call(this,c,h);this.hasZoom&&H(c.container,{"-ms-touch-action":"none","touch-action":"none"})});u(l.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(B)}); +u(l.prototype,"destroy",function(a){this.batchMSEvents(q);a.call(this)})}})(L);(function(a){var B,A=a.addEvent,H=a.css,G=a.discardElement,r=a.defined,f=a.each,l=a.isFirefox,q=a.marginNames,k=a.merge,u=a.pick,d=a.setAnimation,c=a.stableSort,n=a.win,z=a.wrap;B=a.Legend=function(a,c){this.init(a,c)};B.prototype={init:function(a,c){this.chart=a;this.setOptions(c);c.enabled&&(this.render(),A(this.chart,"endResize",function(){this.legend.positionCheckboxes()}))},setOptions:function(a){var b=u(a.padding, +8);this.options=a;this.itemStyle=a.itemStyle;this.itemHiddenStyle=k(this.itemStyle,a.itemHiddenStyle);this.itemMarginTop=a.itemMarginTop||0;this.padding=b;this.initialItemY=b-5;this.itemHeight=this.maxItemWidth=0;this.symbolWidth=u(a.symbolWidth,16);this.pages=[]},update:function(a,c){var b=this.chart;this.setOptions(k(!0,this.options,a));this.destroy();b.isDirtyLegend=b.isDirtyBox=!0;u(c,!0)&&b.redraw()},colorizeItem:function(a,c){a.legendGroup[c?"removeClass":"addClass"]("highcharts-legend-item-hidden"); +var b=this.options,d=a.legendItem,f=a.legendLine,p=a.legendSymbol,e=this.itemHiddenStyle.color,b=c?b.itemStyle.color:e,n=c?a.color||e:e,k=a.options&&a.options.marker,l={fill:n},m;d&&d.css({fill:b,color:b});f&&f.attr({stroke:n});if(p){if(k&&p.isMarker&&(l=a.pointAttribs(),!c))for(m in l)l[m]=e;p.attr(l)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,f=d[0],d=d[1],n=a.checkbox;(a=a.legendGroup)&&a.element&&a.translate(b?f:this.legendWidth-f-2*c-4,d);n&&(n.x= +f,n.y=d)},destroyItem:function(a){var b=a.checkbox;f(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&G(a.checkbox)},destroy:function(){function a(a){this[a]&&(this[a]=this[a].destroy())}f(this.getAllItems(),function(b){f(["legendItem","legendGroup"],a,b)});f("clipRect up down pager nav box title group".split(" "),a,this);this.display=null},positionCheckboxes:function(a){var b=this.group&&this.group.alignAttr,c,d=this.clipHeight||this.legendHeight, +n=this.titleHeight;b&&(c=b.translateY,f(this.allItems,function(h){var e=h.checkbox,f;e&&(f=c+n+e.y+(a||0)+3,H(e,{left:b.translateX+h.checkboxOffset+e.x-20+"px",top:f+"px",display:f>c-6&&f<c+d-6?"":"none"}))}))},renderTitle:function(){var a=this.padding,c=this.options.title,h=0;c.text&&(this.title||(this.title=this.chart.renderer.label(c.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(c.style).add(this.group)),a=this.title.getBBox(),h=a.height,this.offsetWidth=a.width,this.contentGroup.attr({translateY:h})); +this.titleHeight=h},setText:function(b){var c=this.options;b.legendItem.attr({text:c.labelFormat?a.format(c.labelFormat,b):c.labelFormatter.call(b)})},renderItem:function(a){var b=this.chart,c=b.renderer,d=this.options,f="horizontal"===d.layout,n=this.symbolWidth,e=d.symbolPadding,l=this.itemStyle,q=this.itemHiddenStyle,r=this.padding,m=f?u(d.itemDistance,20):0,y=!d.rtl,I=d.width,K=d.itemMarginBottom||0,J=this.itemMarginTop,g=a.legendItem,z=!a.series,Q=!z&&a.series.drawLegendSymbol?a.series:a,A=Q.options, +A=this.createCheckboxForItem&&A&&A.showCheckbox,B=d.useHTML,H=a.options.className;g||(a.legendGroup=c.g("legend-item").addClass("highcharts-"+Q.type+"-series highcharts-color-"+a.colorIndex+(H?" "+H:"")+(z?" highcharts-series-"+a.index:"")).attr({zIndex:1}).add(this.scrollGroup),a.legendItem=g=c.text("",y?n+e:-e,this.baseline||0,B).css(k(a.visible?l:q)).attr({align:y?"left":"right",zIndex:2}).add(a.legendGroup),this.baseline||(l=l.fontSize,this.fontMetrics=c.fontMetrics(l,g),this.baseline=this.fontMetrics.f+ +3+J,g.attr("y",this.baseline)),this.symbolHeight=d.symbolHeight||this.fontMetrics.f,Q.drawLegendSymbol(this,a),this.setItemEvents&&this.setItemEvents(a,g,B),A&&this.createCheckboxForItem(a));this.colorizeItem(a,a.visible);this.setText(a);c=g.getBBox();n=a.checkboxOffset=d.itemWidth||a.legendItemWidth||n+e+c.width+m+(A?20:0);this.itemHeight=e=Math.round(a.legendItemHeight||c.height||this.symbolHeight);f&&this.itemX-r+n>(I||b.spacingBox.width-2*r-d.x)&&(this.itemX=r,this.itemY+=J+this.lastLineHeight+ +K,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,n);this.lastItemY=J+this.itemY+K;this.lastLineHeight=Math.max(e,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];f?this.itemX+=n:(this.itemY+=J+e+K,this.lastLineHeight=e);this.offsetWidth=I||Math.max((f?this.itemX-r-m:n)+r,this.offsetWidth)},getAllItems:function(){var a=[];f(this.chart.series,function(b){var c=b&&b.options;b&&u(c.showInLegend,r(c.linkedTo)?!1:void 0,!0)&&(a=a.concat(b.legendItems||("point"===c.legendType? +b.data:b)))});return a},adjustMargins:function(a,c){var b=this.chart,d=this.options,p=d.align.charAt(0)+d.verticalAlign.charAt(0)+d.layout.charAt(0);d.floating||f([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(h,e){h.test(p)&&!r(a[e])&&(b[q[e]]=Math.max(b[q[e]],b.legend[(e+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][e]*d[e%2?"x":"y"]+u(d.margin,12)+c[e]))})},render:function(){var a=this,d=a.chart,h=d.renderer,n=a.group,l,q,e,x,u=a.box,r=a.options,m=a.padding;a.itemX=m;a.itemY= +a.initialItemY;a.offsetWidth=0;a.lastItemY=0;n||(a.group=n=h.g("legend").attr({zIndex:7}).add(),a.contentGroup=h.g().attr({zIndex:1}).add(n),a.scrollGroup=h.g().add(a.contentGroup));a.renderTitle();l=a.getAllItems();c(l,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});r.reversed&&l.reverse();a.allItems=l;a.display=q=!!l.length;a.lastLineHeight=0;f(l,function(b){a.renderItem(b)});e=(r.width||a.offsetWidth)+m;x=a.lastItemY+a.lastLineHeight+a.titleHeight; +x=a.handleOverflow(x);x+=m;u||(a.box=u=h.rect().addClass("highcharts-legend-box").attr({r:r.borderRadius}).add(n),u.isNew=!0);u.attr({stroke:r.borderColor,"stroke-width":r.borderWidth||0,fill:r.backgroundColor||"none"}).shadow(r.shadow);0<e&&0<x&&(u[u.isNew?"attr":"animate"](u.crisp({x:0,y:0,width:e,height:x},u.strokeWidth())),u.isNew=!1);u[q?"show":"hide"]();a.legendWidth=e;a.legendHeight=x;f(l,function(b){a.positionItem(b)});q&&n.align(k(r,{width:e,height:x}),!0,"spacingBox");d.isResizing||this.positionCheckboxes()}, +handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,n=this.options,k=n.y,e=this.padding,c=c.spacingBox.height+("top"===n.verticalAlign?-k:k)-e,k=n.maxHeight,l,q=this.clipRect,r=n.navigation,m=u(r.animation,!0),y=r.arrowSize||12,I=this.nav,K=this.pages,J,g=this.allItems,z=function(a){a?q.attr({height:a}):q&&(b.clipRect=q.destroy(),b.contentGroup.clip());b.contentGroup.div&&(b.contentGroup.div.style.clip=a?"rect("+e+"px,9999px,"+(e+a)+"px,0)":"auto")};"horizontal"!==n.layout||"middle"=== +n.verticalAlign||n.floating||(c/=2);k&&(c=Math.min(c,k));K.length=0;a>c&&!1!==r.enabled?(this.clipHeight=l=Math.max(c-20-this.titleHeight-e,0),this.currentPage=u(this.currentPage,1),this.fullHeight=a,f(g,function(a,b){var c=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var e=K.length;if(!e||c-K[e-1]>l&&(J||c)!==K[e-1])K.push(J||c),e++;b===g.length-1&&c+a-K[e-1]>l&&K.push(c);c!==J&&(J=c)}),q||(q=b.clipRect=d.clipRect(0,e,9999,0),b.contentGroup.clip(q)),z(l),I||(this.nav=I=d.g().attr({zIndex:1}).add(this.group), +this.up=d.symbol("triangle",0,0,y,y).on("click",function(){b.scroll(-1,m)}).add(I),this.pager=d.text("",15,10).addClass("highcharts-legend-navigation").css(r.style).add(I),this.down=d.symbol("triangle-down",0,0,y,y).on("click",function(){b.scroll(1,m)}).add(I)),b.scroll(0),a=c):I&&(z(),this.nav=I.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,c){var b=this.pages,f=b.length;a=this.currentPage+a;var p=this.clipHeight,n=this.options.navigation,e=this.pager, +k=this.padding;a>f&&(a=f);0<a&&(void 0!==c&&d(c,this.chart),this.nav.attr({translateX:k,translateY:p+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({"class":1===a?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"}),e.attr({text:a+"/"+f}),this.down.attr({x:18+this.pager.getBBox().width,"class":a===f?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"}),this.up.attr({fill:1===a?n.inactiveColor:n.activeColor}).css({cursor:1===a?"default":"pointer"}),this.down.attr({fill:a=== +f?n.inactiveColor:n.activeColor}).css({cursor:a===f?"default":"pointer"}),c=-b[a-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=a,this.positionCheckboxes(c))}};a.LegendSymbolMixin={drawRectangle:function(a,c){var b=a.symbolHeight,d=a.options.squareSymbol;c.legendSymbol=this.chart.renderer.rect(d?(a.symbolWidth-b)/2:0,a.baseline-b+1,d?b:a.symbolWidth,b,u(a.options.symbolRadius,b/2)).addClass("highcharts-point").attr({zIndex:3}).add(c.legendGroup)},drawLineMarker:function(a){var b= +this.options,c=b.marker,d=a.symbolWidth,f=a.symbolHeight,n=f/2,e=this.chart.renderer,l=this.legendGroup;a=a.baseline-Math.round(.3*a.fontMetrics.b);var q;q={"stroke-width":b.lineWidth||0};b.dashStyle&&(q.dashstyle=b.dashStyle);this.legendLine=e.path(["M",0,a,"L",d,a]).addClass("highcharts-graph").attr(q).add(l);c&&!1!==c.enabled&&(b=Math.min(u(c.radius,n),n),0===this.symbol.indexOf("url")&&(c=k(c,{width:f,height:f}),b=0),this.legendSymbol=c=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b,c).addClass("highcharts-point").add(l), +c.isMarker=!0)}};(/Trident\/7\.0/.test(n.navigator.userAgent)||l)&&z(B.prototype,"positionItem",function(a,c){var b=this,d=function(){c._legendItemPos&&a.call(b,c)};d();setTimeout(d)})})(L);(function(a){var B=a.addEvent,A=a.animate,H=a.animObject,G=a.attr,r=a.doc,f=a.Axis,l=a.createElement,q=a.defaultOptions,k=a.discardElement,u=a.charts,d=a.css,c=a.defined,n=a.each,z=a.extend,b=a.find,p=a.fireEvent,h=a.getStyle,t=a.grep,D=a.isNumber,w=a.isObject,e=a.isString,x=a.Legend,C=a.marginNames,E=a.merge, +m=a.Pointer,y=a.pick,I=a.pInt,K=a.removeEvent,J=a.seriesTypes,g=a.splat,F=a.svg,Q=a.syncTimeout,N=a.win,P=a.Renderer,O=a.Chart=function(){this.getArgs.apply(this,arguments)};a.chart=function(a,b,c){return new O(a,b,c)};O.prototype={callbacks:[],getArgs:function(){var a=[].slice.call(arguments);if(e(a[0])||a[0].nodeName)this.renderTo=a.shift();this.init(a[0],a[1])},init:function(b,c){var e,g=b.series;b.series=null;e=E(q,b);e.series=b.series=g;this.userOptions=b;b=e.chart;g=b.events;this.margin=[]; +this.spacing=[];this.bounds={h:{},v:{}};this.callback=c;this.isResizing=0;this.options=e;this.axes=[];this.series=[];this.hasCartesianSeries=b.showAxes;var d;this.index=u.length;u.push(this);a.chartCount++;if(g)for(d in g)B(this,d,g[d]);this.xAxis=[];this.yAxis=[];this.pointCount=this.colorCounter=this.symbolCounter=0;this.firstRender()},initSeries:function(b){var c=this.options.chart;(c=J[b.type||c.type||c.defaultSeriesType])||a.error(17,!0);c=new c;c.init(this,b);return c},orderSeries:function(a){var b= +this.series;for(a=a||0;a<b.length;a++)b[a]&&(b[a].index=a,b[a].name=b[a].name||"Series "+(b[a].index+1))},isInsidePlot:function(a,b,c){var e=c?b:a;a=c?a:b;return 0<=e&&e<=this.plotWidth&&0<=a&&a<=this.plotHeight},redraw:function(b){var c=this.axes,e=this.series,g=this.pointer,d=this.legend,m=this.isDirtyLegend,h,f,v=this.hasCartesianSeries,k=this.isDirtyBox,y,l=this.renderer,t=l.isHidden(),q=[];this.setResponsive&&this.setResponsive(!1);a.setAnimation(b,this);t&&this.cloneRenderTo();this.layOutTitles(); +for(b=e.length;b--;)if(y=e[b],y.options.stacking&&(h=!0,y.isDirty)){f=!0;break}if(f)for(b=e.length;b--;)y=e[b],y.options.stacking&&(y.isDirty=!0);n(e,function(a){a.isDirty&&"point"===a.options.legendType&&(a.updateTotals&&a.updateTotals(),m=!0);a.isDirtyData&&p(a,"updatedData")});m&&d.options.enabled&&(d.render(),this.isDirtyLegend=!1);h&&this.getStacks();v&&n(c,function(a){a.updateNames();a.setScale()});this.getMargins();v&&(n(c,function(a){a.isDirty&&(k=!0)}),n(c,function(a){var b=a.min+","+a.max; +a.extKey!==b&&(a.extKey=b,q.push(function(){p(a,"afterSetExtremes",z(a.eventArgs,a.getExtremes()));delete a.eventArgs}));(k||h)&&a.redraw()}));k&&this.drawChartBox();p(this,"predraw");n(e,function(a){(k||a.isDirty)&&a.visible&&a.redraw();a.isDirtyData=!1});g&&g.reset(!0);l.draw();p(this,"redraw");p(this,"render");t&&this.cloneRenderTo(!0);n(q,function(a){a.call()})},get:function(a){function c(b){return b.id===a||b.options&&b.options.id===a}var e,g=this.series,d;e=b(this.axes,c)||b(this.series,c); +for(d=0;!e&&d<g.length;d++)e=b(g[d].points||[],c);return e},getAxes:function(){var a=this,b=this.options,c=b.xAxis=g(b.xAxis||{}),b=b.yAxis=g(b.yAxis||{});n(c,function(a,b){a.index=b;a.isX=!0});n(b,function(a,b){a.index=b});c=c.concat(b);n(c,function(b){new f(a,b)})},getSelectedPoints:function(){var a=[];n(this.series,function(b){a=a.concat(t(b.points||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return t(this.series,function(a){return a.selected})},setTitle:function(a, +b,c){var e=this,g=e.options,d;d=g.title=E({style:{color:"#333333",fontSize:g.isStock?"16px":"18px"}},g.title,a);g=g.subtitle=E({style:{color:"#666666"}},g.subtitle,b);n([["title",a,d],["subtitle",b,g]],function(a,b){var c=a[0],g=e[c],d=a[1];a=a[2];g&&d&&(e[c]=g=g.destroy());a&&a.text&&!g&&(e[c]=e.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,"class":"highcharts-"+c,zIndex:a.zIndex||4}).add(),e[c].update=function(a){e.setTitle(!b&&a,b&&a)},e[c].css(a.style))});e.layOutTitles(c)},layOutTitles:function(a){var b= +0,c,e=this.renderer,g=this.spacingBox;n(["title","subtitle"],function(a){var c=this[a],d=this.options[a],m;c&&(m=d.style.fontSize,m=e.fontMetrics(m,c).b,c.css({width:(d.width||g.width+d.widthAdjust)+"px"}).align(z({y:b+m+("title"===a?-3:2)},d),!1,"spacingBox"),d.floating||d.verticalAlign||(b=Math.ceil(b+c.getBBox(d.useHTML).height)))},this);c=this.titleOffset!==b;this.titleOffset=b;!this.isDirtyBox&&c&&(this.isDirtyBox=c,this.hasRendered&&y(a,!0)&&this.isDirtyBox&&this.redraw())},getChartSize:function(){var b= +this.options.chart,e=b.width,b=b.height,g=this.renderToClone||this.renderTo;c(e)||(this.containerWidth=h(g,"width"));c(b)||(this.containerHeight=h(g,"height"));this.chartWidth=Math.max(0,e||this.containerWidth||600);this.chartHeight=Math.max(0,a.relativeLength(b,this.chartWidth)||this.containerHeight||400)},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;if(a){if(b){for(;b.childNodes.length;)this.renderTo.appendChild(b.firstChild);k(b);delete this.renderToClone}}else c&&c.parentNode=== +this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),d(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block","important"),r.body.appendChild(b),c&&b.appendChild(c)},setClassName:function(a){this.container.className="highcharts-container "+(a||"")},getContainer:function(){var b,c=this.options,g=c.chart,d,m;b=this.renderTo;var h=a.uniqueKey(),f;b||(this.renderTo=b=g.renderTo);e(b)&&(this.renderTo=b=r.getElementById(b)); +b||a.error(13,!0);d=I(G(b,"data-highcharts-chart"));D(d)&&u[d]&&u[d].hasRendered&&u[d].destroy();G(b,"data-highcharts-chart",this.index);b.innerHTML="";g.skipClone||b.offsetWidth||this.cloneRenderTo();this.getChartSize();d=this.chartWidth;m=this.chartHeight;f=z({position:"relative",overflow:"hidden",width:d+"px",height:m+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},g.style);this.container=b=l("div",{id:h},f,this.renderToClone||b);this._cursor=b.style.cursor; +this.renderer=new (a[g.renderer]||P)(b,d,m,null,g.forExport,c.exporting&&c.exporting.allowHTML);this.setClassName(g.className);this.renderer.setStyle(g.style);this.renderer.chartIndex=this.index},getMargins:function(a){var b=this.spacing,e=this.margin,g=this.titleOffset;this.resetMargins();g&&!c(e[0])&&(this.plotTop=Math.max(this.plotTop,g+this.options.title.margin+b[0]));this.legend.display&&this.legend.adjustMargins(e,b);this.extraMargin&&(this[this.extraMargin.type]=(this[this.extraMargin.type]|| +0)+this.extraMargin.value);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);a||this.getAxisMargins()},getAxisMargins:function(){var a=this,b=a.axisOffset=[0,0,0,0],e=a.margin;a.hasCartesianSeries&&n(a.axes,function(a){a.visible&&a.getOffset()});n(C,function(g,d){c(e[d])||(a[g]+=b[d])});a.setChartSize()},reflow:function(a){var b=this,e=b.options.chart,g=b.renderTo,d=c(e.width),m=e.width||h(g,"width"),e=e.height||h(g,"height"),g=a?a.target:N;if(!d&&!b.isPrinting&&m&&e&&(g===N||g===r)){if(m!== +b.containerWidth||e!==b.containerHeight)clearTimeout(b.reflowTimeout),b.reflowTimeout=Q(function(){b.container&&b.setSize(void 0,void 0,!1)},a?100:0);b.containerWidth=m;b.containerHeight=e}},initReflow:function(){var a=this,b;b=B(N,"resize",function(b){a.reflow(b)});B(a,"destroy",b)},setSize:function(b,c,e){var g=this,m=g.renderer;g.isResizing+=1;a.setAnimation(e,g);g.oldChartHeight=g.chartHeight;g.oldChartWidth=g.chartWidth;void 0!==b&&(g.options.chart.width=b);void 0!==c&&(g.options.chart.height= +c);g.getChartSize();b=m.globalAnimation;(b?A:d)(g.container,{width:g.chartWidth+"px",height:g.chartHeight+"px"},b);g.setChartSize(!0);m.setSize(g.chartWidth,g.chartHeight,e);n(g.axes,function(a){a.isDirty=!0;a.setScale()});g.isDirtyLegend=!0;g.isDirtyBox=!0;g.layOutTitles();g.getMargins();g.redraw(e);g.oldChartHeight=null;p(g,"resize");Q(function(){g&&p(g,"endResize",null,function(){--g.isResizing})},H(b).duration)},setChartSize:function(a){var b=this.inverted,c=this.renderer,e=this.chartWidth,g= +this.chartHeight,d=this.options.chart,m=this.spacing,h=this.clipOffset,f,p,k,y;this.plotLeft=f=Math.round(this.plotLeft);this.plotTop=p=Math.round(this.plotTop);this.plotWidth=k=Math.max(0,Math.round(e-f-this.marginRight));this.plotHeight=y=Math.max(0,Math.round(g-p-this.marginBottom));this.plotSizeX=b?y:k;this.plotSizeY=b?k:y;this.plotBorderWidth=d.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:m[3],y:m[0],width:e-m[3]-m[1],height:g-m[0]-m[2]};this.plotBox=c.plotBox={x:f,y:p,width:k,height:y}; +e=2*Math.floor(this.plotBorderWidth/2);b=Math.ceil(Math.max(e,h[3])/2);c=Math.ceil(Math.max(e,h[0])/2);this.clipBox={x:b,y:c,width:Math.floor(this.plotSizeX-Math.max(e,h[1])/2-b),height:Math.max(0,Math.floor(this.plotSizeY-Math.max(e,h[2])/2-c))};a||n(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this,b=a.options.chart;n(["margin","spacing"],function(c){var e=b[c],g=w(e)?e:[e,e,e,e];n(["Top","Right","Bottom","Left"],function(e,d){a[c][d]=y(b[c+e],g[d])})}); +n(C,function(b,c){a[b]=y(a.margin[c],a.spacing[c])});a.axisOffset=[0,0,0,0];a.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,e=this.chartHeight,g=this.chartBackground,d=this.plotBackground,m=this.plotBorder,h,f=this.plotBGImage,n=a.backgroundColor,p=a.plotBackgroundColor,k=a.plotBackgroundImage,y,l=this.plotLeft,t=this.plotTop,q=this.plotWidth,u=this.plotHeight,x=this.plotBox,r=this.clipRect,w=this.clipBox,I="animate";g||(this.chartBackground= +g=b.rect().addClass("highcharts-background").add(),I="attr");h=a.borderWidth||0;y=h+(a.shadow?8:0);n={fill:n||"none"};if(h||g["stroke-width"])n.stroke=a.borderColor,n["stroke-width"]=h;g.attr(n).shadow(a.shadow);g[I]({x:y/2,y:y/2,width:c-y-h%2,height:e-y-h%2,r:a.borderRadius});I="animate";d||(I="attr",this.plotBackground=d=b.rect().addClass("highcharts-plot-background").add());d[I](x);d.attr({fill:p||"none"}).shadow(a.plotShadow);k&&(f?f.animate(x):this.plotBGImage=b.image(k,l,t,q,u).add());r?r.animate({width:w.width, +height:w.height}):this.clipRect=b.clipRect(w);I="animate";m||(I="attr",this.plotBorder=m=b.rect().addClass("highcharts-plot-border").attr({zIndex:1}).add());m.attr({stroke:a.plotBorderColor,"stroke-width":a.plotBorderWidth||0,fill:"none"});m[I](m.crisp({x:l,y:t,width:q,height:u},-m.strokeWidth()));this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,e=a.options.series,g,d;n(["inverted","angular","polar"],function(m){c=J[b.type||b.defaultSeriesType];d=b[m]||c&&c.prototype[m]; +for(g=e&&e.length;!d&&g--;)(c=J[e[g].type])&&c.prototype[m]&&(d=!0);a[m]=d})},linkSeries:function(){var a=this,b=a.series;n(b,function(a){a.linkedSeries.length=0});n(b,function(b){var c=b.options.linkedTo;e(c)&&(c=":previous"===c?a.series[b.index-1]:a.get(c))&&c.linkedParent!==b&&(c.linkedSeries.push(b),b.linkedParent=c,b.visible=y(b.options.visible,c.options.visible,b.visible))})},renderSeries:function(){n(this.series,function(a){a.translate();a.render()})},renderLabels:function(){var a=this,b=a.options.labels; +b.items&&n(b.items,function(c){var e=z(b.style,c.style),g=I(e.left)+a.plotLeft,d=I(e.top)+a.plotTop+12;delete e.left;delete e.top;a.renderer.text(c.html,g,d).attr({zIndex:2}).css(e).add()})},render:function(){var a=this.axes,b=this.renderer,c=this.options,e,g,d;this.setTitle();this.legend=new x(this,c.legend);this.getStacks&&this.getStacks();this.getMargins(!0);this.setChartSize();c=this.plotWidth;e=this.plotHeight-=21;n(a,function(a){a.setScale()});this.getAxisMargins();g=1.1<c/this.plotWidth;d= +1.05<e/this.plotHeight;if(g||d)n(a,function(a){(a.horiz&&g||!a.horiz&&d)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries&&n(a,function(a){a.visible&&a.render()});this.seriesGroup||(this.seriesGroup=b.g("series-group").attr({zIndex:3}).add());this.renderSeries();this.renderLabels();this.addCredits();this.setResponsive&&this.setResponsive();this.hasRendered=!0},addCredits:function(a){var b=this;a=E(!0,this.options.credits,a);a.enabled&&!this.credits&&(this.credits= +this.renderer.text(a.text+(this.mapCredits||""),0,0).addClass("highcharts-credits").on("click",function(){a.href&&(N.location.href=a.href)}).attr({align:a.position.align,zIndex:8}).css(a.style).add().align(a.position),this.credits.update=function(a){b.credits=b.credits.destroy();b.addCredits(a)})},destroy:function(){var b=this,c=b.axes,e=b.series,g=b.container,d,m=g&&g.parentNode;p(b,"destroy");u[b.index]=void 0;a.chartCount--;b.renderTo.removeAttribute("data-highcharts-chart");K(b);for(d=c.length;d--;)c[d]= +c[d].destroy();this.scroller&&this.scroller.destroy&&this.scroller.destroy();for(d=e.length;d--;)e[d]=e[d].destroy();n("title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer".split(" "),function(a){var c=b[a];c&&c.destroy&&(b[a]=c.destroy())});g&&(g.innerHTML="",K(g),m&&k(g));for(d in b)delete b[d]},isReadyToRender:function(){var a=this;return F||N!=N.top||"complete"===r.readyState?!0:(r.attachEvent("onreadystatechange", +function(){r.detachEvent("onreadystatechange",a.firstRender);"complete"===r.readyState&&a.firstRender()}),!1)},firstRender:function(){var a=this,b=a.options;if(a.isReadyToRender()){a.getContainer();p(a,"init");a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();n(b.series||[],function(b){a.initSeries(b)});a.linkSeries();p(a,"beforeRender");m&&(a.pointer=new m(a,b));a.render();if(!a.renderer.imgCount&&a.onload)a.onload();a.cloneRenderTo(!0)}},onload:function(){n([this.callback].concat(this.callbacks), +function(a){a&&void 0!==this.index&&a.apply(this,[this])},this);p(this,"load");p(this,"render");c(this.index)&&!1!==this.options.chart.reflow&&this.initReflow();this.onload=null}}})(L);(function(a){var B,A=a.each,H=a.extend,G=a.erase,r=a.fireEvent,f=a.format,l=a.isArray,q=a.isNumber,k=a.pick,u=a.removeEvent;B=a.Point=function(){};B.prototype={init:function(a,c,f){this.series=a;this.color=a.color;this.applyOptions(c,f);a.options.colorByPoint?(c=a.options.colors||a.chart.options.colors,this.color=this.color|| +c[a.colorCounter],c=c.length,f=a.colorCounter,a.colorCounter++,a.colorCounter===c&&(a.colorCounter=0)):f=a.colorIndex;this.colorIndex=k(this.colorIndex,f);a.chart.pointCount++;return this},applyOptions:function(a,c){var d=this.series,f=d.options.pointValKey||d.pointValKey;a=B.prototype.optionsToObject.call(this,a);H(this,a);this.options=this.options?H(this.options,a):a;a.group&&delete this.group;f&&(this.y=this[f]);this.isNull=k(this.isValid&&!this.isValid(),null===this.x||!q(this.y,!0));this.selected&& +(this.state="select");"name"in this&&void 0===c&&d.xAxis&&d.xAxis.hasNames&&(this.x=d.xAxis.nameToX(this));void 0===this.x&&d&&(this.x=void 0===c?d.autoIncrement(this):c);return this},optionsToObject:function(a){var c={},d=this.series,f=d.options.keys,b=f||d.pointArrayMap||["y"],p=b.length,h=0,k=0;if(q(a)||null===a)c[b[0]]=a;else if(l(a))for(!f&&a.length>p&&(d=typeof a[0],"string"===d?c.name=a[0]:"number"===d&&(c.x=a[0]),h++);k<p;)f&&void 0===a[h]||(c[b[k]]=a[h]),h++,k++;else"object"===typeof a&& +(c=a,a.dataLabels&&(d._hasPointLabels=!0),a.marker&&(d._hasPointMarkers=!0));return c},getClassName:function(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":"")+(this.isNull?" highcharts-null-point":"")+(void 0!==this.colorIndex?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")},getZone:function(){var a= +this.series,c=a.zones,a=a.zoneAxis||"y",f=0,k;for(k=c[f];this[a]>=k.value;)k=c[++f];k&&k.color&&!this.options.color&&(this.color=k.color);return k},destroy:function(){var a=this.series.chart,c=a.hoverPoints,f;a.pointCount--;c&&(this.setState(),G(c,this),c.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)u(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(f in this)this[f]=null},destroyElements:function(){for(var a=["graphic", +"dataLabel","dataLabelUpper","connector","shadowGroup"],c,f=6;f--;)c=a[f],this[c]&&(this[c]=this[c].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var c=this.series,d=c.tooltipOptions,l=k(d.valueDecimals,""),b=d.valuePrefix||"",p=d.valueSuffix||"";A(c.pointArrayMap||["y"],function(c){c= +"{point."+c;if(b||p)a=a.replace(c+"}",b+c+"}"+p);a=a.replace(c+"}",c+":,."+l+"f}")});return f(a,{point:this,series:this.series})},firePointEvent:function(a,c,f){var d=this,b=this.series.options;(b.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();"click"===a&&b.allowPointSelect&&(f=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});r(this,a,c,f)},visible:!0}})(L);(function(a){var B=a.addEvent,A=a.animObject,H=a.arrayMax,G=a.arrayMin,r=a.correctFloat, +f=a.Date,l=a.defaultOptions,q=a.defaultPlotOptions,k=a.defined,u=a.each,d=a.erase,c=a.extend,n=a.fireEvent,z=a.grep,b=a.isArray,p=a.isNumber,h=a.isString,t=a.merge,D=a.pick,w=a.removeEvent,e=a.splat,x=a.SVGElement,C=a.syncTimeout,E=a.win;a.Series=a.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{lineWidth:0,lineColor:"#ffffff",radius:4,states:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc", +lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===this.y?"":a.numberFormat(this.y,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{animation:{duration:50},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:"x"}, +{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],coll:"series",init:function(a,b){var e=this,d,m,g=a.series,h;e.chart=a;e.options=b=e.setOptions(b);e.linkedSeries=[];e.bindAxes();c(e,{name:b.name,state:"",visible:!1!==b.visible,selected:!0===b.selected});m=b.events;for(d in m)B(e,d,m[d]);if(m&&m.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;e.getColor(); +e.getSymbol();u(e.parallelArrays,function(a){e[a+"Data"]=[]});e.setData(b.data,!1);e.isCartesian&&(a.hasCartesianSeries=!0);g.length&&(h=g[g.length-1]);e._i=D(h&&h._i,-1)+1;a.orderSeries(this.insert(g))},insert:function(a){var b=this.options.index,c;if(p(b)){for(c=a.length;c--;)if(b>=D(a[c].options.index,a[c]._i)){a.splice(c+1,0,this);break}-1===c&&a.unshift(this);c+=1}else a.push(this);return D(c,a.length-1)},bindAxes:function(){var b=this,c=b.options,e=b.chart,d;u(b.axisTypes||[],function(m){u(e[m], +function(a){d=a.options;if(c[m]===d.index||void 0!==c[m]&&c[m]===d.id||void 0===c[m]&&0===d.index)b.insert(a.series),b[m]=a,a.isDirty=!0});b[m]||b.optionalAxis===m||a.error(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,e=arguments,d=p(b)?function(e){var g="y"===e&&c.toYData?c.toYData(a):a[e];c[e+"Data"][b]=g}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(e,2))};u(c.parallelArrays,d)},autoIncrement:function(){var a=this.options,b=this.xIncrement,c,e=a.pointIntervalUnit, +b=D(b,a.pointStart,0);this.pointInterval=c=D(this.pointInterval,a.pointInterval,1);e&&(a=new f(b),"day"===e?a=+a[f.hcSetDate](a[f.hcGetDate]()+c):"month"===e?a=+a[f.hcSetMonth](a[f.hcGetMonth]()+c):"year"===e&&(a=+a[f.hcSetFullYear](a[f.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},e=b.plotOptions||{},d=c[this.type];this.userOptions=a;c=t(d,c.series,a);this.tooltipOptions=t(l.tooltip,l.plotOptions[this.type].tooltip, +b.tooltip,e.series&&e.series.tooltip,e[this.type]&&e[this.type].tooltip,a.tooltip);this.stickyTracking=D(a.stickyTracking,e[this.type]&&e[this.type].stickyTracking,e.series&&e.series.stickyTracking,this.tooltipOptions.shared&&!this.noSharedTooltip?!0:c.stickyTracking);null===d.marker&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();!c.negativeColor&&!c.negativeFillColor||c.zones||a.push({value:c[this.zoneAxis+"Threshold"]||c.threshold||0,className:"highcharts-negative", +color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&k(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor});return c},getCyclic:function(a,b,c){var e,d=this.chart,g=this.userOptions,m=a+"Index",h=a+"Counter",f=c?c.length:D(d.options.chart[a+"Count"],d[a+"Count"]);b||(e=D(g[m],g["_"+m]),k(e)||(d.series.length||(d[h]=0),g["_"+m]=e=d[h]%f,d[h]+=1),c&&(b=c[e]));void 0!==e&&(this[m]=e);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic("color", +this.options.color||q[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol,this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(c,e,d,f){var m=this,g=m.points,k=g&&g.length||0,n,l=m.options,y=m.chart,t=null,q=m.xAxis,x=l.turboThreshold,r=this.xData,w=this.yData,C=(n=m.pointArrayMap)&&n.length;c=c||[];n=c.length;e=D(e,!0);if(!1!==f&&n&&k===n&&!m.cropped&&!m.hasGroupedData&&m.visible)u(c,function(a, +b){g[b].update&&a!==l.data[b]&&g[b].update(a,!1,null,!1)});else{m.xIncrement=null;m.colorCounter=0;u(this.parallelArrays,function(a){m[a+"Data"].length=0});if(x&&n>x){for(d=0;null===t&&d<n;)t=c[d],d++;if(p(t))for(d=0;d<n;d++)r[d]=this.autoIncrement(),w[d]=c[d];else if(b(t))if(C)for(d=0;d<n;d++)t=c[d],r[d]=t[0],w[d]=t.slice(1,C+1);else for(d=0;d<n;d++)t=c[d],r[d]=t[0],w[d]=t[1];else a.error(12)}else for(d=0;d<n;d++)void 0!==c[d]&&(t={series:m},m.pointClass.prototype.applyOptions.apply(t,[c[d]]),m.updateParallelArrays(t, +d));h(w[0])&&a.error(14,!0);m.data=[];m.options.data=m.userOptions.data=c;for(d=k;d--;)g[d]&&g[d].destroy&&g[d].destroy();q&&(q.minRange=q.userMinRange);m.isDirty=y.isDirtyBox=!0;m.isDirtyData=!!g;d=!1}"point"===l.legendType&&(this.processData(),this.generatePoints());e&&y.redraw(d)},processData:function(b){var c=this.xData,e=this.yData,d=c.length,m;m=0;var g,h,f=this.xAxis,p,k=this.options;p=k.cropThreshold;var n=this.getExtremesFromAll||k.getExtremesFromAll,l=this.isCartesian,k=f&&f.val2lin,t=f&& +f.isLog,q,x;if(l&&!this.isDirty&&!f.isDirty&&!this.yAxis.isDirty&&!b)return!1;f&&(b=f.getExtremes(),q=b.min,x=b.max);if(l&&this.sorted&&!n&&(!p||d>p||this.forceCrop))if(c[d-1]<q||c[0]>x)c=[],e=[];else if(c[0]<q||c[d-1]>x)m=this.cropData(this.xData,this.yData,q,x),c=m.xData,e=m.yData,m=m.start,g=!0;for(p=c.length||1;--p;)d=t?k(c[p])-k(c[p-1]):c[p]-c[p-1],0<d&&(void 0===h||d<h)?h=d:0>d&&this.requireSorting&&a.error(15);this.cropped=g;this.cropStart=m;this.processedXData=c;this.processedYData=e;this.closestPointRange= +h},cropData:function(a,b,c,e){var d=a.length,g=0,m=d,h=D(this.cropShoulder,1),f;for(f=0;f<d;f++)if(a[f]>=c){g=Math.max(0,f-h);break}for(c=f;c<d;c++)if(a[c]>e){m=c+h;break}return{xData:a.slice(g,m),yData:b.slice(g,m),start:g,end:m}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,h=this.processedYData,g=this.pointClass,f=d.length,p=this.cropStart||0,k,n=this.hasGroupedData,l,t=[],q;b||n||(b=[],b.length=a.length,b=this.data=b);for(q=0;q<f;q++)k=p+q,n?(l=(new g).init(this, +[d[q]].concat(e(h[q]))),l.dataGroup=this.groupMap[q]):(l=b[k])||void 0===a[k]||(b[k]=l=(new g).init(this,a[k],d[q])),l&&(l.index=k,t[q]=l);if(b&&(f!==(c=b.length)||n))for(q=0;q<c;q++)q!==p||n||(q+=f),b[q]&&(b[q].destroyElements(),b[q].plotX=void 0);this.data=b;this.points=t},getExtremes:function(a){var c=this.yAxis,e=this.processedXData,d,m=[],g=0;d=this.xAxis.getExtremes();var h=d.min,f=d.max,k,n,l,t;a=a||this.stackedYData||this.processedYData||[];d=a.length;for(t=0;t<d;t++)if(n=e[t],l=a[t],k=(p(l, +!0)||b(l))&&(!c.positiveValuesOnly||l.length||0<l),n=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||(e[t]||n)>=h&&(e[t]||n)<=f,k&&n)if(k=l.length)for(;k--;)null!==l[k]&&(m[g++]=l[k]);else m[g++]=l;this.dataMin=G(m);this.dataMax=H(m)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,e=c.categories,d=this.yAxis,g=this.points,h=g.length,f=!!this.modifyValue,n=a.pointPlacement,l="between"===n||p(n), +t=a.threshold,q=a.startFromThreshold?t:0,x,u,w,C,E=Number.MAX_VALUE;"between"===n&&(n=.5);p(n)&&(n*=D(a.pointRange||c.pointRange));for(a=0;a<h;a++){var z=g[a],A=z.x,B=z.y;u=z.low;var H=b&&d.stacks[(this.negStacks&&B<(q?0:t)?"-":"")+this.stackKey],G;d.positiveValuesOnly&&null!==B&&0>=B&&(z.isNull=!0);z.plotX=x=r(Math.min(Math.max(-1E5,c.translate(A,0,0,0,1,n,"flags"===this.type)),1E5));b&&this.visible&&!z.isNull&&H&&H[A]&&(C=this.getStackIndicator(C,A,this.index),G=H[A],B=G.points[C.key],u=B[0],B= +B[1],u===q&&C.key===H[A].base&&(u=D(t,d.min)),d.positiveValuesOnly&&0>=u&&(u=null),z.total=z.stackTotal=G.total,z.percentage=G.total&&z.y/G.total*100,z.stackY=B,G.setOffset(this.pointXOffset||0,this.barW||0));z.yBottom=k(u)?d.translate(u,0,1,0,1):null;f&&(B=this.modifyValue(B,z));z.plotY=u="number"===typeof B&&Infinity!==B?Math.min(Math.max(-1E5,d.translate(B,0,1,0,1)),1E5):void 0;z.isInside=void 0!==u&&0<=u&&u<=d.len&&0<=x&&x<=c.len;z.clientX=l?r(c.translate(A,0,0,0,1,n)):x;z.negative=z.y<(t||0); +z.category=e&&void 0!==e[z.x]?e[z.x]:z.x;z.isNull||(void 0!==w&&(E=Math.min(E,Math.abs(x-w))),w=x);z.zone=this.zones.length&&z.getZone()}this.closestPointRangePx=E},getValidPoints:function(a,b){var c=this.chart;return z(a||this.points||[],function(a){return b&&!c.isInsidePlot(a.plotX,a.plotY,c.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,e=b.renderer,d=b.inverted,g=this.clipBox,h=g||b.clipBox,m=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,h.height, +c.xAxis,c.yAxis].join(),f=b[m],p=b[m+"m"];f||(a&&(h.width=0,b[m+"m"]=p=e.clipRect(-99,d?-b.plotLeft:-b.plotTop,99,d?b.chartWidth:b.chartHeight)),b[m]=f=e.clipRect(h),f.count={length:0});a&&!f.count[this.index]&&(f.count[this.index]=!0,f.count.length+=1);!1!==c.clip&&(this.group.clip(a||g?f:b.clipRect),this.markerGroup.clip(p),this.sharedClipKey=m);a||(f.count[this.index]&&(delete f.count[this.index],--f.count.length),0===f.count.length&&m&&b[m]&&(g||(b[m]=b[m].destroy()),b[m+"m"]&&(b[m+"m"]=b[m+"m"].destroy())))}, +animate:function(a){var b=this.chart,c=A(this.options.animation),e;a?this.setClip(c):(e=this.sharedClipKey,(a=b[e])&&a.animate({width:b.plotSizeX},c),b[e+"m"]&&b[e+"m"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip();n(this,"afterAnimate")},drawPoints:function(){var a=this.points,b=this.chart,c,e,d,g,h=this.options.marker,f,n,k,l,t=this.markerGroup,q=D(h.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>=2*h.radius);if(!1!==h.enabled||this._hasPointMarkers)for(e= +0;e<a.length;e++)d=a[e],c=d.plotY,g=d.graphic,f=d.marker||{},n=!!d.marker,k=q&&void 0===f.enabled||f.enabled,l=d.isInside,k&&p(c)&&null!==d.y?(c=D(f.symbol,this.symbol),d.hasImage=0===c.indexOf("url"),k=this.markerAttribs(d,d.selected&&"select"),g?g[l?"show":"hide"](!0).animate(k):l&&(0<k.width||d.hasImage)&&(d.graphic=g=b.renderer.symbol(c,k.x,k.y,k.width,k.height,n?f:h).add(t)),g&&g.attr(this.pointAttribs(d,d.selected&&"select")),g&&g.addClass(d.getClassName(),!0)):g&&(d.graphic=g.destroy())},markerAttribs:function(a, +b){var c=this.options.marker,e=a.marker||{},d=D(e.radius,c.radius);b&&(c=c.states[b],b=e.states&&e.states[b],d=D(b&&b.radius,c&&c.radius,d+(c&&c.radiusPlus||0)));a.hasImage&&(d=0);a={x:Math.floor(a.plotX)-d,y:a.plotY-d};d&&(a.width=a.height=2*d);return a},pointAttribs:function(a,b){var c=this.options.marker,e=a&&a.options,d=e&&e.marker||{},g=this.color,h=e&&e.color,f=a&&a.color,e=D(d.lineWidth,c.lineWidth);a=a&&a.zone&&a.zone.color;g=h||a||f||g;a=d.fillColor||c.fillColor||g;g=d.lineColor||c.lineColor|| +g;b&&(c=c.states[b],b=d.states&&d.states[b]||{},e=D(b.lineWidth,c.lineWidth,e+D(b.lineWidthPlus,c.lineWidthPlus,0)),a=b.fillColor||c.fillColor||a,g=b.lineColor||c.lineColor||g);return{stroke:g,"stroke-width":e,fill:a}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(E.navigator.userAgent),e,h=a.data||[],g,f,k;n(a,"destroy");w(a);u(a.axisTypes||[],function(b){(k=a[b])&&k.series&&(d(k.series,a),k.isDirty=k.forceRedraw=!0)});a.legendItem&&a.chart.legend.destroyItem(a);for(e=h.length;e--;)(g= +h[e])&&g.destroy&&g.destroy();a.points=null;clearTimeout(a.animationTimeout);for(f in a)a[f]instanceof x&&!a[f].survive&&(e=c&&"group"===f?"hide":"destroy",a[f][e]());b.hoverSeries===a&&(b.hoverSeries=null);d(b.series,a);b.orderSeries();for(f in a)delete a[f]},getGraphPath:function(a,b,c){var e=this,d=e.options,g=d.step,h,f=[],m=[],p;a=a||e.points;(h=a.reversed)&&a.reverse();(g={right:1,center:2}[g]||g&&3)&&h&&(g=4-g);!d.connectNulls||b||c||(a=this.getValidPoints(a));u(a,function(h,n){var l=h.plotX, +t=h.plotY,q=a[n-1];(h.leftCliff||q&&q.rightCliff)&&!c&&(p=!0);h.isNull&&!k(b)&&0<n?p=!d.connectNulls:h.isNull&&!b?p=!0:(0===n||p?n=["M",h.plotX,h.plotY]:e.getPointSpline?n=e.getPointSpline(a,h,n):g?(n=1===g?["L",q.plotX,t]:2===g?["L",(q.plotX+l)/2,q.plotY,"L",(q.plotX+l)/2,t]:["L",l,q.plotY],n.push("L",l,t)):n=["L",l,t],m.push(h.x),g&&m.push(h.x),f.push.apply(f,n),p=!1)});f.xMap=m;return e.graphPath=f},drawGraph:function(){var a=this,b=this.options,c=(this.gappedPath||this.getGraphPath).call(this), +e=[["graph","highcharts-graph",b.lineColor||this.color,b.dashStyle]];u(this.zones,function(c,d){e.push(["zone-graph-"+d,"highcharts-graph highcharts-zone-graph-"+d+" "+(c.className||""),c.color||a.color,c.dashStyle||b.dashStyle])});u(e,function(e,d){var g=e[0],h=a[g];h?(h.endX=c.xMap,h.animate({d:c})):c.length&&(a[g]=a.chart.renderer.path(c).addClass(e[1]).attr({zIndex:1}).add(a.group),h={stroke:e[2],"stroke-width":b.lineWidth,fill:a.fillGraph&&a.color||"none"},e[3]?h.dashstyle=e[3]:"square"!==b.linecap&& +(h["stroke-linecap"]=h["stroke-linejoin"]="round"),h=a[g].attr(h).shadow(2>d&&b.shadow));h&&(h.startX=c.xMap,h.isArea=c.isArea)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,e=this.zones,d,g,h=this.clips||[],f,k=this.graph,p=this.area,n=Math.max(b.chartWidth,b.chartHeight),l=this[(this.zoneAxis||"y")+"Axis"],t,q,x=b.inverted,w,r,C,E,z=!1;e.length&&(k||p)&&l&&void 0!==l.min&&(q=l.reversed,w=l.horiz,k&&k.hide(),p&&p.hide(),t=l.getExtremes(),u(e,function(e,m){d=q?w?b.plotWidth:0:w?0: +l.toPixels(t.min);d=Math.min(Math.max(D(g,d),0),n);g=Math.min(Math.max(Math.round(l.toPixels(D(e.value,t.max),!0)),0),n);z&&(d=g=l.toPixels(t.max));r=Math.abs(d-g);C=Math.min(d,g);E=Math.max(d,g);l.isXAxis?(f={x:x?E:C,y:0,width:r,height:n},w||(f.x=b.plotHeight-f.x)):(f={x:0,y:x?E:C,width:n,height:r},w&&(f.y=b.plotWidth-f.y));x&&c.isVML&&(f=l.isXAxis?{x:0,y:q?C:E,height:f.width,width:b.chartWidth}:{x:f.y-b.plotLeft-b.spacingBox.x,y:0,width:f.height,height:b.chartHeight});h[m]?h[m].animate(f):(h[m]= +c.clipRect(f),k&&a["zone-graph-"+m].clip(h[m]),p&&a["zone-area-"+m].clip(h[m]));z=e.value>t.max}),this.clips=h)},invertGroups:function(a){function b(){u(["group","markerGroup"],function(b){c[b]&&(e.renderer.isVML&&c[b].attr({width:c.yAxis.len,height:c.xAxis.len}),c[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(a))})}var c=this,e=c.chart,d;c.xAxis&&(d=B(e,"resize",b),B(c,"destroy",d),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,e,d){var g=this[a],h=!g;h&&(this[a]=g=this.chart.renderer.g(b).attr({zIndex:e|| +.1}).add(d),g.addClass("highcharts-series-"+this.index+" highcharts-"+this.type+"-series highcharts-color-"+this.colorIndex+" "+(this.options.className||"")));g.attr({visibility:c})[h?"attr":"animate"](this.getPlotBox());return g},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,e=a.options,d=!!a.animate&&b.renderer.isSVG&&A(e.animation).duration, +g=a.visible?"inherit":"hidden",h=e.zIndex,f=a.hasRendered,k=b.seriesGroup,p=b.inverted;c=a.plotGroup("group","series",g,h,k);a.markerGroup=a.plotGroup("markerGroup","markers",g,h,k);d&&a.animate(!0);c.inverted=a.isCartesian?p:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(p);!1===e.clip||a.sharedClipKey||f||c.clip(b.clipRect);d&&a.animate();f||(a.animationTimeout= +C(function(){a.afterAnimate()},d));a.isDirty=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirty||this.isDirtyData,c=this.group,e=this.xAxis,d=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:D(e&&e.left,a.plotLeft),translateY:D(d&&d.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,e=this.yAxis,d=this.chart.inverted;return this.searchKDTree({clientX:d? +c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:d?e.len-a.chartX+e.pos:a.chartY-e.pos},b)},buildKDTree:function(){function a(c,e,d){var g,h;if(h=c&&c.length)return g=b.kdAxisArray[e%d],c.sort(function(a,b){return a[g]-b[g]}),h=Math.floor(h/2),{point:c[h],left:a(c.slice(0,h),e+1,d),right:a(c.slice(h+1),e+1,d)}}this.buildingKdTree=!0;var b=this,c=-1<b.options.findNearestPointBy.indexOf("y")?2:1;delete b.kdTree;C(function(){b.kdTree=a(b.getValidPoints(null,!b.directTouch),c,c);b.buildingKdTree=!1},b.options.kdNow? +0:1)},searchKDTree:function(a,b){function c(a,b,f,m){var p=b.point,n=e.kdAxisArray[f%m],l,t,q=p;t=k(a[d])&&k(p[d])?Math.pow(a[d]-p[d],2):null;l=k(a[g])&&k(p[g])?Math.pow(a[g]-p[g],2):null;l=(t||0)+(l||0);p.dist=k(l)?Math.sqrt(l):Number.MAX_VALUE;p.distX=k(t)?Math.sqrt(t):Number.MAX_VALUE;n=a[n]-p[n];l=0>n?"left":"right";t=0>n?"right":"left";b[l]&&(l=c(a,b[l],f+1,m),q=l[h]<q[h]?l:p);b[t]&&Math.sqrt(n*n)<q[h]&&(a=c(a,b[t],f+1,m),q=a[h]<q[h]?a:q);return q}var e=this,d=this.kdAxisArray[0],g=this.kdAxisArray[1], +h=b?"distX":"dist";b=-1<e.options.findNearestPointBy.indexOf("y")?2:1;this.kdTree||this.buildingKdTree||this.buildKDTree();if(this.kdTree)return c(a,this.kdTree,b,b)}})})(L);(function(a){function B(a,d,c,f,l){var b=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=d;this.x=f;this.total=null;this.points={};this.stack=l;this.rightCliff=this.leftCliff=0;this.alignOptions={align:d.align||(b?c?"left":"right":"center"),verticalAlign:d.verticalAlign||(b?"middle":c?"bottom":"top"),y:k(d.y,b?4:c? +14:-6),x:k(d.x,b?c?-6:6:0)};this.textAlign=d.textAlign||(b?c?"right":"left":"center")}var A=a.Axis,H=a.Chart,G=a.correctFloat,r=a.defined,f=a.destroyObjectProperties,l=a.each,q=a.format,k=a.pick;a=a.Series;B.prototype={destroy:function(){f(this,this.axis)},render:function(a){var d=this.options,c=d.format,c=c?q(c,this):d.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,null,null,d.useHTML).css(d.style).attr({align:this.textAlign, +rotation:d.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,d){var c=this.axis,f=c.chart,k=f.inverted,b=c.reversed,b=this.isNegative&&!b||!this.isNegative&&b,p=c.translate(c.usePercentage?100:this.total,0,0,0,1),c=c.translate(0),c=Math.abs(p-c);a=f.xAxis[0].translate(this.x)+a;var h=f.plotHeight,k={x:k?b?p:p-c:a,y:k?h-a-d:b?h-p-c:h-p,width:k?c:d,height:k?d:c};if(d=this.label)d.align(this.alignOptions,null,k),k=d.alignAttr,d[!1===this.options.crop||f.isInsidePlot(k.x,k.y)?"show":"hide"](!0)}}; +H.prototype.getStacks=function(){var a=this;l(a.yAxis,function(a){a.stacks&&a.hasVisibleSeries&&(a.oldStacks=a.stacks)});l(a.series,function(d){!d.options.stacking||!0!==d.visible&&!1!==a.options.chart.ignoreHiddenSeries||(d.stackKey=d.type+k(d.options.stack,""))})};A.prototype.buildStacks=function(){var a=this.series,d,c=k(this.options.reversedStacks,!0),f=a.length,l;if(!this.isXAxis){this.usePercentage=!1;for(l=f;l--;)a[c?l:f-l-1].setStackedPoints();for(l=f;l--;)d=a[c?l:f-l-1],d.setStackCliffs&& +d.setStackCliffs();if(this.usePercentage)for(l=0;l<f;l++)a[l].setPercentStacks()}};A.prototype.renderStackTotals=function(){var a=this.chart,d=a.renderer,c=this.stacks,f,k,b=this.stackTotalGroup;b||(this.stackTotalGroup=b=d.g("stack-labels").attr({visibility:"visible",zIndex:6}).add());b.translate(a.plotLeft,a.plotTop);for(f in c)for(k in a=c[f],a)a[k].render(b)};A.prototype.resetStacks=function(){var a=this.stacks,d,c;if(!this.isXAxis)for(d in a)for(c in a[d])a[d][c].touched<this.stacksTouched?(a[d][c].destroy(), +delete a[d][c]):(a[d][c].total=null,a[d][c].cum=null)};A.prototype.cleanStacks=function(){var a,d,c;if(!this.isXAxis)for(d in this.oldStacks&&(a=this.stacks=this.oldStacks),a)for(c in a[d])a[d][c].cum=a[d][c].total};a.prototype.setStackedPoints=function(){if(this.options.stacking&&(!0===this.visible||!1===this.chart.options.chart.ignoreHiddenSeries)){var a=this.processedXData,d=this.processedYData,c=[],f=d.length,l=this.options,b=l.threshold,p=l.startFromThreshold?b:0,h=l.stack,l=l.stacking,t=this.stackKey, +q="-"+t,w=this.negStacks,e=this.yAxis,x=e.stacks,C=e.oldStacks,E,m,y,A,K,J,g;e.stacksTouched+=1;for(K=0;K<f;K++)J=a[K],g=d[K],E=this.getStackIndicator(E,J,this.index),A=E.key,y=(m=w&&g<(p?0:b))?q:t,x[y]||(x[y]={}),x[y][J]||(C[y]&&C[y][J]?(x[y][J]=C[y][J],x[y][J].total=null):x[y][J]=new B(e,e.options.stackLabels,m,J,h)),y=x[y][J],null!==g&&(y.points[A]=y.points[this.index]=[k(y.cum,p)],r(y.cum)||(y.base=A),y.touched=e.stacksTouched,0<E.index&&!1===this.singleStacks&&(y.points[A][0]=y.points[this.index+ +","+J+",0"][0])),"percent"===l?(m=m?t:q,w&&x[m]&&x[m][J]?(m=x[m][J],y.total=m.total=Math.max(m.total,y.total)+Math.abs(g)||0):y.total=G(y.total+(Math.abs(g)||0))):y.total=G(y.total+(g||0)),y.cum=k(y.cum,p)+(g||0),null!==g&&(y.points[A].push(y.cum),c[K]=y.cum);"percent"===l&&(e.usePercentage=!0);this.stackedYData=c;e.oldStacks={}}};a.prototype.setPercentStacks=function(){var a=this,d=a.stackKey,c=a.yAxis.stacks,f=a.processedXData,k;l([d,"-"+d],function(b){for(var d=f.length,h,n;d--;)if(h=f[d],k=a.getStackIndicator(k, +h,a.index,b),h=(n=c[b]&&c[b][h])&&n.points[k.key])n=n.total?100/n.total:0,h[0]=G(h[0]*n),h[1]=G(h[1]*n),a.stackedYData[d]=h[1]})};a.prototype.getStackIndicator=function(a,d,c,f){!r(a)||a.x!==d||f&&a.key!==f?a={x:d,index:0,key:f}:a.index++;a.key=[c,d,a.index].join();return a}})(L);(function(a){var B=a.addEvent,A=a.animate,H=a.Axis,G=a.createElement,r=a.css,f=a.defined,l=a.each,q=a.erase,k=a.extend,u=a.fireEvent,d=a.inArray,c=a.isNumber,n=a.isObject,z=a.merge,b=a.pick,p=a.Point,h=a.Series,t=a.seriesTypes, +D=a.setAnimation,w=a.splat;k(a.Chart.prototype,{addSeries:function(a,c,d){var e,h=this;a&&(c=b(c,!0),u(h,"addSeries",{options:a},function(){e=h.initSeries(a);h.isDirtyLegend=!0;h.linkSeries();c&&h.redraw(d)}));return e},addAxis:function(a,c,d,h){var e=c?"xAxis":"yAxis",f=this.options;a=z(a,{index:this[e].length,isX:c});new H(this,a);f[e]=w(f[e]||{});f[e].push(a);b(d,!0)&&this.redraw(h)},showLoading:function(a){var b=this,c=b.options,e=b.loadingDiv,d=c.loading,h=function(){e&&r(e,{left:b.plotLeft+ +"px",top:b.plotTop+"px",width:b.plotWidth+"px",height:b.plotHeight+"px"})};e||(b.loadingDiv=e=G("div",{className:"highcharts-loading highcharts-loading-hidden"},null,b.container),b.loadingSpan=G("span",{className:"highcharts-loading-inner"},null,e),B(b,"redraw",h));e.className="highcharts-loading";b.loadingSpan.innerHTML=a||c.lang.loading;r(e,k(d.style,{zIndex:10}));r(b.loadingSpan,d.labelStyle);b.loadingShown||(r(e,{opacity:0,display:""}),A(e,{opacity:d.style.opacity||.5},{duration:d.showDuration|| +0}));b.loadingShown=!0;h()},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&(b.className="highcharts-loading highcharts-loading-hidden",A(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){r(b,{display:"none"})}}));this.loadingShown=!1},propsRequireDirtyBox:"backgroundColor borderColor borderWidth margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow".split(" "), +propsRequireUpdateSeries:"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions".split(" "),update:function(a,h){var e,k={credits:"addCredits",title:"setTitle",subtitle:"setSubtitle"},m=a.chart,p,n;if(m){z(!0,this.options.chart,m);"className"in m&&this.setClassName(m.className);if("inverted"in m||"polar"in m)this.propFromSeries(),p=!0;"alignTicks"in m&&(p=!0);for(e in m)m.hasOwnProperty(e)&&(-1!==d("chart."+e,this.propsRequireUpdateSeries)&&(n=!0),-1!==d(e,this.propsRequireDirtyBox)&& +(this.isDirtyBox=!0));"style"in m&&this.renderer.setStyle(m.style)}for(e in a){if(this[e]&&"function"===typeof this[e].update)this[e].update(a[e],!1);else if("function"===typeof this[k[e]])this[k[e]](a[e]);"chart"!==e&&-1!==d(e,this.propsRequireUpdateSeries)&&(n=!0)}a.colors&&(this.options.colors=a.colors);a.plotOptions&&z(!0,this.options.plotOptions,a.plotOptions);l(["xAxis","yAxis","series","colorAxis","pane"],function(b){a[b]&&l(w(a[b]),function(a,c){(c=f(a.id)&&this.get(a.id)||this[b][c])&&c.coll=== +b&&c.update(a,!1)},this)},this);p&&l(this.axes,function(a){a.update({},!1)});n&&l(this.series,function(a){a.update({},!1)});a.loading&&z(!0,this.options.loading,a.loading);e=m&&m.width;m=m&&m.height;c(e)&&e!==this.chartWidth||c(m)&&m!==this.chartHeight?this.setSize(e,m):b(h,!0)&&this.redraw()},setSubtitle:function(a){this.setTitle(void 0,a)}});k(p.prototype,{update:function(a,c,d,h){function e(){f.applyOptions(a);null===f.y&&p&&(f.graphic=p.destroy());n(a,!0)&&(p&&p.element&&a&&a.marker&&a.marker.symbol&& +(f.graphic=p.destroy()),a&&a.dataLabels&&f.dataLabel&&(f.dataLabel=f.dataLabel.destroy()));l=f.index;k.updateParallelArrays(f,l);t.data[l]=n(t.data[l],!0)||n(a,!0)?f.options:a;k.isDirty=k.isDirtyData=!0;!k.fixedBox&&k.hasCartesianSeries&&(g.isDirtyBox=!0);"point"===t.legendType&&(g.isDirtyLegend=!0);c&&g.redraw(d)}var f=this,k=f.series,p=f.graphic,l,g=k.chart,t=k.options;c=b(c,!0);!1===h?e():f.firePointEvent("update",{options:a},e)},remove:function(a,b){this.series.removePoint(d(this,this.series.data), +a,b)}});k(h.prototype,{addPoint:function(a,c,d,h){var e=this.options,f=this.data,k=this.chart,p=this.xAxis,p=p&&p.hasNames&&p.names,n=e.data,g,l,t=this.xData,q,w;c=b(c,!0);g={series:this};this.pointClass.prototype.applyOptions.apply(g,[a]);w=g.x;q=t.length;if(this.requireSorting&&w<t[q-1])for(l=!0;q&&t[q-1]>w;)q--;this.updateParallelArrays(g,"splice",q,0,0);this.updateParallelArrays(g,q);p&&g.name&&(p[w]=g.name);n.splice(q,0,a);l&&(this.data.splice(q,0,null),this.processData());"point"===e.legendType&& +this.generatePoints();d&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(g,"shift"),n.shift()));this.isDirtyData=this.isDirty=!0;c&&k.redraw(h)},removePoint:function(a,c,d){var e=this,h=e.data,f=h[a],k=e.points,p=e.chart,n=function(){k&&k.length===h.length&&k.splice(a,1);h.splice(a,1);e.options.data.splice(a,1);e.updateParallelArrays(f||{series:e},"splice",a,1);f&&f.destroy();e.isDirty=!0;e.isDirtyData=!0;c&&p.redraw()};D(d,p);c=b(c,!0);f?f.firePointEvent("remove",null,n): +n()},remove:function(a,c,d){function e(){h.destroy();f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();b(a,!0)&&f.redraw(c)}var h=this,f=h.chart;!1!==d?u(h,"remove",null,e):e()},update:function(a,c){var e=this,d=this.chart,h=this.userOptions,f=this.oldType||this.type,p=a.type||h.type||d.options.chart.type,n=t[f].prototype,q=["group","markerGroup","dataLabelsGroup"],g;if(p&&p!==f||void 0!==a.zIndex)q.length=0;l(q,function(a){q[a]=e[a];delete e[a]});a=z(h,{animation:!1,index:this.index,pointStart:this.xData[0]}, +{data:this.options.data},a);this.remove(!1,null,!1);for(g in n)this[g]=void 0;k(this,t[p||f].prototype);l(q,function(a){e[a]=q[a]});this.init(d,a);this.oldType=f;d.linkSeries();b(c,!0)&&d.redraw(!1)}});k(H.prototype,{update:function(a,c){var e=this.chart;a=e.options[this.coll][this.options.index]=z(this.userOptions,a);this.destroy(!0);this.init(e,k(a,{events:void 0}));e.isDirtyBox=!0;b(c,!0)&&e.redraw()},remove:function(a){for(var c=this.chart,e=this.coll,d=this.series,h=d.length;h--;)d[h]&&d[h].remove(!1); +q(c.axes,this);q(c[e],this);c.options[e].splice(this.options.index,1);l(c[e],function(a,b){a.options.index=b});this.destroy();c.isDirtyBox=!0;b(a,!0)&&c.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}})})(L);(function(a){var B=a.color,A=a.each,H=a.map,G=a.pick,r=a.Series,f=a.seriesType;f("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(){var a=[],f=[],k=this.xAxis,r=this.yAxis,d=r.stacks[this.stackKey], +c={},n=this.points,z=this.index,b=r.series,p=b.length,h,t=G(r.options.reversedStacks,!0)?1:-1,D,w;if(this.options.stacking){for(D=0;D<n.length;D++)c[n[D].x]=n[D];for(w in d)null!==d[w].total&&f.push(w);f.sort(function(a,b){return a-b});h=H(b,function(){return this.visible});A(f,function(b,n){var e=0,l,m;if(c[b]&&!c[b].isNull)a.push(c[b]),A([-1,1],function(a){var e=1===a?"rightNull":"leftNull",k=0,q=d[f[n+a]];if(q)for(D=z;0<=D&&D<p;)l=q.points[D],l||(D===z?c[b][e]=!0:h[D]&&(m=d[b].points[D])&&(k-= +m[1]-m[0])),D+=t;c[b][1===a?"rightCliff":"leftCliff"]=k});else{for(D=z;0<=D&&D<p;){if(l=d[b].points[D]){e=l[1];break}D+=t}e=r.translate(e,0,1,0,1);a.push({isNull:!0,plotX:k.translate(b,0,0,0,1),x:b,plotY:e,yBottom:e})}})}return a},getGraphPath:function(a){var f=r.prototype.getGraphPath,k=this.options,l=k.stacking,d=this.yAxis,c,n,z=[],b=[],p=this.index,h,t=d.stacks[this.stackKey],D=k.threshold,w=d.getThreshold(k.threshold),e,k=k.connectNulls||"percent"===l,x=function(c,e,f){var k=a[c];c=l&&t[k.x].points[p]; +var m=k[f+"Null"]||0;f=k[f+"Cliff"]||0;var n,q,k=!0;f||m?(n=(m?c[0]:c[1])+f,q=c[0]+f,k=!!m):!l&&a[e]&&a[e].isNull&&(n=q=D);void 0!==n&&(b.push({plotX:h,plotY:null===n?w:d.getThreshold(n),isNull:k,isCliff:!0}),z.push({plotX:h,plotY:null===q?w:d.getThreshold(q),doCurve:!1}))};a=a||this.points;l&&(a=this.getStackPoints());for(c=0;c<a.length;c++)if(n=a[c].isNull,h=G(a[c].rectPlotX,a[c].plotX),e=G(a[c].yBottom,w),!n||k)k||x(c,c-1,"left"),n&&!l&&k||(b.push(a[c]),z.push({x:c,plotX:h,plotY:e})),k||x(c,c+ +1,"right");c=f.call(this,b,!0,!0);z.reversed=!0;n=f.call(this,z,!0,!0);n.length&&(n[0]="L");n=c.concat(n);f=f.call(this,b,!1,k);n.xMap=c.xMap;this.areaPath=n;return f},drawGraph:function(){this.areaPath=[];r.prototype.drawGraph.apply(this);var a=this,f=this.areaPath,k=this.options,u=[["area","highcharts-area",this.color,k.fillColor]];A(this.zones,function(d,c){u.push(["zone-area-"+c,"highcharts-area highcharts-zone-area-"+c+" "+d.className,d.color||a.color,d.fillColor||k.fillColor])});A(u,function(d){var c= +d[0],n=a[c];n?(n.endX=f.xMap,n.animate({d:f})):(n=a[c]=a.chart.renderer.path(f).addClass(d[1]).attr({fill:G(d[3],B(d[2]).setOpacity(G(k.fillOpacity,.75)).get()),zIndex:0}).add(a.group),n.isArea=!0);n.startX=f.xMap;n.shiftUnit=k.step?2:1})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle})})(L);(function(a){var B=a.pick;a=a.seriesType;a("spline","line",{},{getPointSpline:function(a,H,G){var r=H.plotX,f=H.plotY,l=a[G-1];G=a[G+1];var q,k,u,d;if(l&&!l.isNull&&!1!==l.doCurve&&!H.isCliff&&G&&!G.isNull&& +!1!==G.doCurve&&!H.isCliff){a=l.plotY;u=G.plotX;G=G.plotY;var c=0;q=(1.5*r+l.plotX)/2.5;k=(1.5*f+a)/2.5;u=(1.5*r+u)/2.5;d=(1.5*f+G)/2.5;u!==q&&(c=(d-k)*(u-r)/(u-q)+f-d);k+=c;d+=c;k>a&&k>f?(k=Math.max(a,f),d=2*f-k):k<a&&k<f&&(k=Math.min(a,f),d=2*f-k);d>G&&d>f?(d=Math.max(G,f),k=2*f-d):d<G&&d<f&&(d=Math.min(G,f),k=2*f-d);H.rightContX=u;H.rightContY=d}H=["C",B(l.rightContX,l.plotX),B(l.rightContY,l.plotY),B(q,r),B(k,f),r,f];l.rightContX=l.rightContY=null;return H}})})(L);(function(a){var B=a.seriesTypes.area.prototype, +A=a.seriesType;A("areaspline","spline",a.defaultPlotOptions.area,{getStackPoints:B.getStackPoints,getGraphPath:B.getGraphPath,setStackCliffs:B.setStackCliffs,drawGraph:B.drawGraph,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle})})(L);(function(a){var B=a.animObject,A=a.color,H=a.each,G=a.extend,r=a.isNumber,f=a.merge,l=a.pick,q=a.Series,k=a.seriesType,u=a.svg;k("column","line",{borderRadius:0,crisp:!0,groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null, +states:{hover:{halo:!1,brightness:.1,shadow:!1},select:{color:"#cccccc",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},softThreshold:!1,startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0,borderColor:"#ffffff"},{cropShoulder:0,directTouch:!0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){q.prototype.init.apply(this,arguments);var a=this,c=a.chart;c.hasRendered&&H(c.series,function(c){c.type===a.type&&(c.isDirty=!0)})}, +getColumnMetrics:function(){var a=this,c=a.options,f=a.xAxis,k=a.yAxis,b=f.reversed,p,h={},t=0;!1===c.grouping?t=1:H(a.chart.series,function(b){var c=b.options,e=b.yAxis,d;b.type===a.type&&b.visible&&k.len===e.len&&k.pos===e.pos&&(c.stacking?(p=b.stackKey,void 0===h[p]&&(h[p]=t++),d=h[p]):!1!==c.grouping&&(d=t++),b.columnIndex=d)});var q=Math.min(Math.abs(f.transA)*(f.ordinalSlope||c.pointRange||f.closestPointRange||f.tickInterval||1),f.len),w=q*c.groupPadding,e=(q-2*w)/(t||1),c=Math.min(c.maxPointWidth|| +f.len,l(c.pointWidth,e*(1-2*c.pointPadding)));a.columnMetrics={width:c,offset:(e-c)/2+(w+((a.columnIndex||0)+(b?1:0))*e-q/2)*(b?-1:1)};return a.columnMetrics},crispCol:function(a,c,f,k){var b=this.chart,d=this.borderWidth,h=-(d%2?.5:0),d=d%2?.5:1;b.inverted&&b.renderer.isVML&&(d+=1);this.options.crisp&&(f=Math.round(a+f)+h,a=Math.round(a)+h,f-=a);k=Math.round(c+k)+d;h=.5>=Math.abs(c)&&.5<k;c=Math.round(c)+d;k-=c;h&&k&&(--c,k+=1);return{x:a,y:c,width:f,height:k}},translate:function(){var a=this,c= +a.chart,f=a.options,k=a.dense=2>a.closestPointRange*a.xAxis.transA,k=a.borderWidth=l(f.borderWidth,k?0:1),b=a.yAxis,p=a.translatedThreshold=b.getThreshold(f.threshold),h=l(f.minPointLength,5),t=a.getColumnMetrics(),r=t.width,w=a.barW=Math.max(r,1+2*k),e=a.pointXOffset=t.offset;c.inverted&&(p-=.5);f.pointPadding&&(w=Math.ceil(w));q.prototype.translate.apply(a);H(a.points,function(d){var f=l(d.yBottom,p),k=999+Math.abs(f),k=Math.min(Math.max(-k,d.plotY),b.len+k),m=d.plotX+e,n=w,t=Math.min(k,f),q,u= +Math.max(k,f)-t;Math.abs(u)<h&&h&&(u=h,q=!b.reversed&&!d.negative||b.reversed&&d.negative,t=Math.abs(t-p)>h?f-h:p-(q?h:0));d.barX=m;d.pointWidth=r;d.tooltipPos=c.inverted?[b.len+b.pos-c.plotLeft-k,a.xAxis.len-m-n/2,u]:[m+n/2,k+b.pos-c.plotTop,u];d.shapeType="rect";d.shapeArgs=a.crispCol.apply(a,d.isNull?[d.plotX,b.len/2,0,0]:[m,t,n,u])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")}, +pointAttribs:function(a,c){var d=this.options,k,b=this.pointAttrToOptions||{};k=b.stroke||"borderColor";var p=b["stroke-width"]||"borderWidth",h=a&&a.color||this.color,l=a[k]||d[k]||this.color||h,q=a[p]||d[p]||this[p]||0,b=d.dashStyle;a&&this.zones.length&&(h=(h=a.getZone())&&h.color||a.options.color||this.color);c&&(a=f(d.states[c],a.options.states&&a.options.states[c]||{}),c=a.brightness,h=a.color||void 0!==c&&A(h).brighten(a.brightness).get()||h,l=a[k]||l,q=a[p]||q,b=a.dashStyle||b);k={fill:h, +stroke:l,"stroke-width":q};d.borderRadius&&(k.r=d.borderRadius);b&&(k.dashstyle=b);return k},drawPoints:function(){var a=this,c=this.chart,k=a.options,l=c.renderer,b=k.animationLimit||250,p;H(a.points,function(d){var h=d.graphic;if(r(d.plotY)&&null!==d.y){p=d.shapeArgs;if(h)h[c.pointCount<b?"animate":"attr"](f(p));else d.graphic=h=l[d.shapeType](p).add(d.group||a.group);h.attr(a.pointAttribs(d,d.selected&&"select")).shadow(k.shadow,null,k.stacking&&!k.borderRadius);h.addClass(d.getClassName(),!0)}else h&& +(d.graphic=h.destroy())})},animate:function(a){var c=this,d=this.yAxis,f=c.options,b=this.chart.inverted,k={};u&&(a?(k.scaleY=.001,a=Math.min(d.pos+d.len,Math.max(d.pos,d.toPixels(f.threshold))),b?k.translateX=a-d.len:k.translateY=a,c.group.attr(k)):(k[b?"translateX":"translateY"]=d.pos,c.group.animate(k,G(B(c.options.animation),{step:function(a,b){c.group.attr({scaleY:Math.max(.001,b.pos)})}})),c.animate=null))},remove:function(){var a=this,c=a.chart;c.hasRendered&&H(c.series,function(c){c.type=== +a.type&&(c.isDirty=!0)});q.prototype.remove.apply(a,arguments)}})})(L);(function(a){a=a.seriesType;a("bar","column",null,{inverted:!0})})(L);(function(a){var B=a.Series;a=a.seriesType;a("scatter","line",{lineWidth:0,findNearestPointBy:"xy",marker:{enabled:!0},tooltip:{headerFormat:'\x3cspan style\x3d"color:{point.color}"\x3e\u25cf\x3c/span\x3e \x3cspan style\x3d"font-size: 0.85em"\x3e {series.name}\x3c/span\x3e\x3cbr/\x3e',pointFormat:"x: \x3cb\x3e{point.x}\x3c/b\x3e\x3cbr/\x3ey: \x3cb\x3e{point.y}\x3c/b\x3e\x3cbr/\x3e"}}, +{sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1,drawGraph:function(){this.options.lineWidth&&B.prototype.drawGraph.call(this)}})})(L);(function(a){var B=a.pick,A=a.relativeLength;a.CenteredSeriesMixin={getCenter:function(){var a=this.options,G=this.chart,r=2*(a.slicedOffset||0),f=G.plotWidth-2*r,G=G.plotHeight-2*r,l=a.center,l=[B(l[0],"50%"),B(l[1],"50%"),a.size||"100%",a.innerSize||0],q=Math.min(f,G),k,u;for(k=0;4>k;++k)u= +l[k],a=2>k||2===k&&/%$/.test(u),l[k]=A(u,[f,G,q,l[2]][k])+(a?r:0);l[3]>l[2]&&(l[3]=l[2]);return l}}})(L);(function(a){var B=a.addEvent,A=a.defined,H=a.each,G=a.extend,r=a.inArray,f=a.noop,l=a.pick,q=a.Point,k=a.Series,u=a.seriesType,d=a.setAnimation;u("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return null===this.y?void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10, +stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,states:{hover:{brightness:.1,shadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var c=this,d=c.points,b=c.startAngleRad;a||(H(d,function(a){var d=a.graphic,f=a.shapeArgs;d&&(d.attr({r:a.startR||c.center[3]/2,start:b,end:b}),d.animate({r:f.r,start:f.start,end:f.end}, +c.options.animation))}),c.animate=null)},updateTotals:function(){var a,d=0,f=this.points,b=f.length,k,h=this.options.ignoreHiddenPoint;for(a=0;a<b;a++)k=f[a],0>k.y&&(k.y=null),d+=h&&!k.visible?0:k.y;this.total=d;for(a=0;a<b;a++)k=f[a],k.percentage=0<d&&(k.visible||!h)?k.y/d*100:0,k.total=d},generatePoints:function(){k.prototype.generatePoints.call(this);this.updateTotals()},translate:function(a){this.generatePoints();var c=0,d=this.options,b=d.slicedOffset,f=b+(d.borderWidth||0),h,k,q,w=d.startAngle|| +0,e=this.startAngleRad=Math.PI/180*(w-90),w=(this.endAngleRad=Math.PI/180*(l(d.endAngle,w+360)-90))-e,r=this.points,u=d.dataLabels.distance,d=d.ignoreHiddenPoint,E,m=r.length,y;a||(this.center=a=this.getCenter());this.getX=function(b,c){q=Math.asin(Math.min((b-a[1])/(a[2]/2+u),1));return a[0]+(c?-1:1)*Math.cos(q)*(a[2]/2+u)};for(E=0;E<m;E++){y=r[E];h=e+c*w;if(!d||y.visible)c+=y.percentage/100;k=e+c*w;y.shapeType="arc";y.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:Math.round(1E3*h)/1E3,end:Math.round(1E3* +k)/1E3};q=(k+h)/2;q>1.5*Math.PI?q-=2*Math.PI:q<-Math.PI/2&&(q+=2*Math.PI);y.slicedTranslation={translateX:Math.round(Math.cos(q)*b),translateY:Math.round(Math.sin(q)*b)};h=Math.cos(q)*a[2]/2;k=Math.sin(q)*a[2]/2;y.tooltipPos=[a[0]+.7*h,a[1]+.7*k];y.half=q<-Math.PI/2||q>Math.PI/2?1:0;y.angle=q;f=Math.min(f,u/5);y.labelPos=[a[0]+h+Math.cos(q)*u,a[1]+k+Math.sin(q)*u,a[0]+h+Math.cos(q)*f,a[1]+k+Math.sin(q)*f,a[0]+h,a[1]+k,0>u?"center":y.half?"right":"left",q]}},drawGraph:null,drawPoints:function(){var a= +this,d=a.chart.renderer,f,b,k,h,l=a.options.shadow;l&&!a.shadowGroup&&(a.shadowGroup=d.g("shadow").add(a.group));H(a.points,function(c){if(null!==c.y){b=c.graphic;h=c.shapeArgs;f=c.getTranslate();var p=c.shadowGroup;l&&!p&&(p=c.shadowGroup=d.g("shadow").add(a.shadowGroup));p&&p.attr(f);k=a.pointAttribs(c,c.selected&&"select");b?b.setRadialReference(a.center).attr(k).animate(G(h,f)):(c.graphic=b=d[c.shapeType](h).setRadialReference(a.center).attr(f).add(a.group),c.visible||b.attr({visibility:"hidden"}), +b.attr(k).attr({"stroke-linejoin":"round"}).shadow(l,p));b.addClass(c.getClassName())}})},searchPoint:f,sortByAngle:function(a,d){a.sort(function(a,b){return void 0!==a.angle&&(b.angle-a.angle)*d})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:f},{init:function(){q.prototype.init.apply(this,arguments);var a=this,d;a.name=l(a.name,"Slice");d=function(c){a.slice("select"===c.type)};B(a,"select",d);B(a,"unselect",d);return a},setVisible:function(a, +d){var c=this,b=c.series,f=b.chart,h=b.options.ignoreHiddenPoint;d=l(d,h);a!==c.visible&&(c.visible=c.options.visible=a=void 0===a?!c.visible:a,b.options.data[r(c,b.data)]=c.options,H(["graphic","dataLabel","connector","shadowGroup"],function(b){if(c[b])c[b][a?"show":"hide"](!0)}),c.legendItem&&f.legend.colorizeItem(c,a),a||"hover"!==c.state||c.setState(""),h&&(b.isDirty=!0),d&&f.redraw())},slice:function(a,f,k){var b=this.series;d(k,b.chart);l(f,!0);this.sliced=this.options.sliced=A(a)?a:!this.sliced; +b.options.data[r(this,b.data)]=this.options;this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(a){var c=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.x,c.y,c.r+a,c.r+a,{innerR:this.shapeArgs.r,start:c.start,end:c.end})}})})(L);(function(a){var B=a.addEvent,A=a.arrayMax,H=a.defined,G=a.each, +r=a.extend,f=a.format,l=a.map,q=a.merge,k=a.noop,u=a.pick,d=a.relativeLength,c=a.Series,n=a.seriesTypes,z=a.stableSort;a.distribute=function(a,c){function b(a,b){return a.target-b.target}var d,f=!0,k=a,e=[],p;p=0;for(d=a.length;d--;)p+=a[d].size;if(p>c){z(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(p=d=0;p<=c;)p+=a[d].size,d++;e=a.splice(d-1,a.length)}z(a,b);for(a=l(a,function(a){return{size:a.size,targets:[a.target]}});f;){for(d=a.length;d--;)f=a[d],p=(Math.min.apply(0,f.targets)+Math.max.apply(0, +f.targets))/2,f.pos=Math.min(Math.max(0,p-f.size/2),c-f.size);d=a.length;for(f=!1;d--;)0<d&&a[d-1].pos+a[d-1].size>a[d].pos&&(a[d-1].size+=a[d].size,a[d-1].targets=a[d-1].targets.concat(a[d].targets),a[d-1].pos+a[d-1].size>c&&(a[d-1].pos=c-a[d-1].size),a.splice(d,1),f=!0)}d=0;G(a,function(a){var b=0;G(a.targets,function(){k[d].pos=a.pos+b;b+=k[d].size;d++})});k.push.apply(k,e);z(k,b)};c.prototype.drawDataLabels=function(){var a=this,c=a.options,d=c.dataLabels,k=a.points,l,n,e=a.hasRendered||0,r,C, +E=u(d.defer,!0),m=a.chart.renderer;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),C=a.plotGroup("dataLabelsGroup","data-labels",E&&!e?"hidden":"visible",d.zIndex||6),E&&(C.attr({opacity:+e}),e||B(a,"afterAnimate",function(){a.visible&&C.show(!0);C[c.animation?"animate":"attr"]({opacity:1},{duration:200})})),n=d,G(k,function(b){var e,h=b.dataLabel,k,g,p,t=b.connector,w=!h,x;l=b.dlOptions||b.options&&b.options.dataLabels;if(e=u(l&&l.enabled,n.enabled)&&null!==b.y)for(g in d= +q(n,l),k=b.getLabelConfig(),r=d.format?f(d.format,k):d.formatter.call(k,d),x=d.style,p=d.rotation,x.color=u(d.color,x.color,a.color,"#000000"),"contrast"===x.color&&(b.contrastColor=m.getContrast(b.color||a.color),x.color=d.inside||0>d.distance||c.stacking?b.contrastColor:"#000000"),c.cursor&&(x.cursor=c.cursor),k={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:p,padding:d.padding,zIndex:1},k)void 0===k[g]&&delete k[g];!h||e&&H(r)?e&&H(r)&&(h? +k.text=r:(h=b.dataLabel=m[p?"text":"label"](r,0,-9999,d.shape,null,null,d.useHTML,null,"data-label"),h.addClass("highcharts-data-label-color-"+b.colorIndex+" "+(d.className||"")+(d.useHTML?"highcharts-tracker":""))),h.attr(k),h.css(x).shadow(d.shadow),h.added||h.add(C),a.alignDataLabel(b,h,d,null,w)):(b.dataLabel=h.destroy(),t&&(b.connector=t.destroy()))})};c.prototype.alignDataLabel=function(a,c,d,f,k){var b=this.chart,e=b.inverted,h=u(a.plotX,-9999),l=u(a.plotY,-9999),p=c.getBBox(),m,n=d.rotation, +q=d.align,t=this.visible&&(a.series.forceDL||b.isInsidePlot(h,Math.round(l),e)||f&&b.isInsidePlot(h,e?f.x+1:f.y+f.height-1,e)),D="justify"===u(d.overflow,"justify");t&&(m=d.style.fontSize,m=b.renderer.fontMetrics(m,c).b,f=r({x:e?b.plotWidth-l:h,y:Math.round(e?b.plotHeight-h:l),width:0,height:0},f),r(d,{width:p.width,height:p.height}),n?(D=!1,e=b.renderer.rotCorr(m,n),e={x:f.x+d.x+f.width/2+e.x,y:f.y+d.y+{top:0,middle:.5,bottom:1}[d.verticalAlign]*f.height},c[k?"attr":"animate"](e).attr({align:q}), +h=(n+720)%360,h=180<h&&360>h,"left"===q?e.y-=h?p.height:0:"center"===q?(e.x-=p.width/2,e.y-=p.height/2):"right"===q&&(e.x-=p.width,e.y-=h?0:p.height)):(c.align(d,null,f),e=c.alignAttr),D?a.isLabelJustified=this.justifyDataLabel(c,d,e,p,f,k):u(d.crop,!0)&&(t=b.isInsidePlot(e.x,e.y)&&b.isInsidePlot(e.x+p.width,e.y+p.height)),d.shape&&!n&&c.attr({anchorX:a.plotX,anchorY:a.plotY}));t||(c.attr({y:-9999}),c.placed=!1)};c.prototype.justifyDataLabel=function(a,c,d,f,k,l){var b=this.chart,h=c.align,p=c.verticalAlign, +n,m,q=a.box?0:a.padding||0;n=d.x+q;0>n&&("right"===h?c.align="left":c.x=-n,m=!0);n=d.x+f.width-q;n>b.plotWidth&&("left"===h?c.align="right":c.x=b.plotWidth-n,m=!0);n=d.y+q;0>n&&("bottom"===p?c.verticalAlign="top":c.y=-n,m=!0);n=d.y+f.height-q;n>b.plotHeight&&("top"===p?c.verticalAlign="bottom":c.y=b.plotHeight-n,m=!0);m&&(a.placed=!l,a.align(c,null,k));return m};n.pie&&(n.pie.prototype.drawDataLabels=function(){var b=this,d=b.data,f,k=b.chart,n=b.options.dataLabels,q=u(n.connectorPadding,10),e=u(n.connectorWidth, +1),r=k.plotWidth,C=k.plotHeight,E,m=n.distance,y=b.center,z=y[2]/2,B=y[1],H=0<m,g,F,L,N,P=[[],[]],O,v,M,R,S=[0,0,0,0];b.visible&&(n.enabled||b._hasPointLabels)&&(G(d,function(a){a.dataLabel&&a.visible&&a.dataLabel.shortened&&(a.dataLabel.attr({width:"auto"}).css({width:"auto",textOverflow:"clip"}),a.dataLabel.shortened=!1)}),c.prototype.drawDataLabels.apply(b),G(d,function(a){a.dataLabel&&a.visible&&(P[a.half].push(a),a.dataLabel._pos=null)}),G(P,function(c,e){var d,h,p=c.length,t,w,u;if(p)for(b.sortByAngle(c, +e-.5),0<m&&(d=Math.max(0,B-z-m),h=Math.min(B+z+m,k.plotHeight),t=l(c,function(a){if(a.dataLabel)return u=a.dataLabel.getBBox().height||21,{target:a.labelPos[1]-d+u/2,size:u,rank:a.y}}),a.distribute(t,h+u-d)),R=0;R<p;R++)f=c[R],L=f.labelPos,g=f.dataLabel,M=!1===f.visible?"hidden":"inherit",w=L[1],t?void 0===t[R].pos?M="hidden":(N=t[R].size,v=d+t[R].pos):v=w,O=n.justify?y[0]+(e?-1:1)*(z+m):b.getX(v<d+2||v>h-2?w:v,e),g._attr={visibility:M,align:L[6]},g._pos={x:O+n.x+({left:q,right:-q}[L[6]]||0),y:v+ +n.y-10},L.x=O,L.y=v,null===b.options.size&&(F=g.getBBox().width,w=null,O-F<q?(w=Math.round(F-O+q),S[3]=Math.max(w,S[3])):O+F>r-q&&(w=Math.round(O+F-r+q),S[1]=Math.max(w,S[1])),0>v-N/2?S[0]=Math.max(Math.round(-v+N/2),S[0]):v+N/2>C&&(S[2]=Math.max(Math.round(v+N/2-C),S[2])),g.sideOverflow=w)}),0===A(S)||this.verifyDataLabelOverflow(S))&&(this.placeDataLabels(),H&&e&&G(this.points,function(a){var c;E=a.connector;if((g=a.dataLabel)&&g._pos&&a.visible){M=g._attr.visibility;if(c=!E)a.connector=E=k.renderer.path().addClass("highcharts-data-label-connector highcharts-color-"+ +a.colorIndex).add(b.dataLabelsGroup),E.attr({"stroke-width":e,stroke:n.connectorColor||a.color||"#666666"});E[c?"attr":"animate"]({d:b.connectorPath(a.labelPos)});E.attr("visibility",M)}else E&&(a.connector=E.destroy())}))},n.pie.prototype.connectorPath=function(a){var b=a.x,c=a.y;return u(this.options.dataLabels.softConnector,!0)?["M",b+("left"===a[6]?5:-5),c,"C",b,c,2*a[2]-a[4],2*a[3]-a[5],a[2],a[3],"L",a[4],a[5]]:["M",b+("left"===a[6]?5:-5),c,"L",a[2],a[3],"L",a[4],a[5]]},n.pie.prototype.placeDataLabels= +function(){G(this.points,function(a){var b=a.dataLabel;b&&a.visible&&((a=b._pos)?(b.sideOverflow&&(b._attr.width=b.getBBox().width-b.sideOverflow,b.css({width:b._attr.width+"px",textOverflow:"ellipsis"}),b.shortened=!0),b.attr(b._attr),b[b.moved?"animate":"attr"](a),b.moved=!0):b&&b.attr({y:-9999}))},this)},n.pie.prototype.alignDataLabel=k,n.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,f=c.center,k=c.minSize||80,l,e;null!==f[0]?l=Math.max(b[2]-Math.max(a[1],a[3]), +k):(l=Math.max(b[2]-a[1]-a[3],k),b[0]+=(a[3]-a[1])/2);null!==f[1]?l=Math.max(Math.min(l,b[2]-Math.max(a[0],a[2])),k):(l=Math.max(Math.min(l,b[2]-a[0]-a[2]),k),b[1]+=(a[0]-a[2])/2);l<b[2]?(b[2]=l,b[3]=Math.min(d(c.innerSize||0,l),l),this.translate(b),this.drawDataLabels&&this.drawDataLabels()):e=!0;return e});n.column&&(n.column.prototype.alignDataLabel=function(a,d,f,k,l){var b=this.chart.inverted,e=a.series,h=a.dlBox||a.shapeArgs,n=u(a.below,a.plotY>u(this.translatedThreshold,e.yAxis.len)),p=u(f.inside, +!!this.options.stacking);h&&(k=q(h),0>k.y&&(k.height+=k.y,k.y=0),h=k.y+k.height-e.yAxis.len,0<h&&(k.height-=h),b&&(k={x:e.yAxis.len-k.y-k.height,y:e.xAxis.len-k.x-k.width,width:k.height,height:k.width}),p||(b?(k.x+=n?0:k.width,k.width=0):(k.y+=n?k.height:0,k.height=0)));f.align=u(f.align,!b||p?"center":n?"right":"left");f.verticalAlign=u(f.verticalAlign,b||p?"middle":n?"top":"bottom");c.prototype.alignDataLabel.call(this,a,d,f,k,l);a.isLabelJustified&&a.contrastColor&&a.dataLabel.css({color:a.contrastColor})})})(L); +(function(a){var B=a.Chart,A=a.each,H=a.pick,G=a.addEvent;B.prototype.callbacks.push(function(a){function f(){var f=[];A(a.series||[],function(a){var k=a.options.dataLabels,l=a.dataLabelCollections||["dataLabel"];(k.enabled||a._hasPointLabels)&&!k.allowOverlap&&a.visible&&A(l,function(d){A(a.points,function(a){a[d]&&(a[d].labelrank=H(a.labelrank,a.shapeArgs&&a.shapeArgs.height),f.push(a[d]))})})});a.hideOverlappingLabels(f)}f();G(a,"redraw",f)});B.prototype.hideOverlappingLabels=function(a){var f= +a.length,l,q,k,r,d,c,n,z,b,p=function(a,b,c,d,e,f,k,l){return!(e>a+c||e+k<a||f>b+d||f+l<b)};for(q=0;q<f;q++)if(l=a[q])l.oldOpacity=l.opacity,l.newOpacity=1;a.sort(function(a,b){return(b.labelrank||0)-(a.labelrank||0)});for(q=0;q<f;q++)for(k=a[q],l=q+1;l<f;++l)if(r=a[l],k&&r&&k!==r&&k.placed&&r.placed&&0!==k.newOpacity&&0!==r.newOpacity&&(d=k.alignAttr,c=r.alignAttr,n=k.parentGroup,z=r.parentGroup,b=2*(k.box?0:k.padding),d=p(d.x+n.translateX,d.y+n.translateY,k.width-b,k.height-b,c.x+z.translateX,c.y+ +z.translateY,r.width-b,r.height-b)))(k.labelrank<r.labelrank?k:r).newOpacity=0;A(a,function(a){var b,c;a&&(c=a.newOpacity,a.oldOpacity!==c&&a.placed&&(c?a.show(!0):b=function(){a.hide()},a.alignAttr.opacity=c,a[a.isOld?"animate":"attr"](a.alignAttr,null,b)),a.isOld=!0)})}})(L);(function(a){var B=a.addEvent,A=a.Chart,H=a.createElement,G=a.css,r=a.defaultOptions,f=a.defaultPlotOptions,l=a.each,q=a.extend,k=a.fireEvent,u=a.hasTouch,d=a.inArray,c=a.isObject,n=a.Legend,z=a.merge,b=a.pick,p=a.Point,h=a.Series, +t=a.seriesTypes,D=a.svg;a=a.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart.pointer,c=function(a){var c=b.getPointFromEvent(a);if(void 0!==c)c.onMouseOver(a)};l(a.points,function(a){a.graphic&&(a.graphic.element.point=a);a.dataLabel&&(a.dataLabel.div?a.dataLabel.div.point=a:a.dataLabel.element.point=a)});a._hasTracking||(l(a.trackerGroups,function(e){if(a[e]){a[e].addClass("highcharts-tracker").on("mouseover",c).on("mouseout",function(a){b.onTrackerMouseOut(a)});if(u)a[e].on("touchstart", +c);a.options.cursor&&a[e].css(G).css({cursor:a.options.cursor})}}),a._hasTracking=!0)},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),f=d.length,h=a.chart,k=h.pointer,n=h.renderer,p=h.options.tooltip.snap,q=a.tracker,g,r=function(){if(h.hoverSeries!==a)a.onMouseOver()},t="rgba(192,192,192,"+(D?.0001:.002)+")";if(f&&!c)for(g=f+1;g--;)"M"===d[g]&&d.splice(g+1,0,d[g+1]-p,d[g+2],"L"),(g&&"M"===d[g]||g===f)&&d.splice(g,0,"L",d[g-2]+p,d[g-1]);q? +q.attr({d:d}):a.graph&&(a.tracker=n.path(d).attr({"stroke-linejoin":"round",visibility:a.visible?"visible":"hidden",stroke:t,fill:c?t:"none","stroke-width":a.graph.strokeWidth()+(c?0:2*p),zIndex:2}).add(a.group),l([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",r).on("mouseout",function(a){k.onTrackerMouseOut(a)});b.cursor&&a.css({cursor:b.cursor});if(u)a.on("touchstart",r)}))}};t.column&&(t.column.prototype.drawTracker=a.drawTrackerPoint);t.pie&&(t.pie.prototype.drawTracker= +a.drawTrackerPoint);t.scatter&&(t.scatter.prototype.drawTracker=a.drawTrackerPoint);q(n.prototype,{setItemEvents:function(a,b,c){var d=this,e=d.chart.renderer.boxWrapper,f="highcharts-legend-"+(a.series?"point":"series")+"-active";(c?b:a.legendGroup).on("mouseover",function(){a.setState("hover");e.addClass(f);b.css(d.options.itemHoverStyle)}).on("mouseout",function(){b.css(a.visible?d.itemStyle:d.itemHiddenStyle);e.removeClass(f);a.setState()}).on("click",function(b){var c=function(){a.setVisible&& +a.setVisible()};b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):k(a,"legendItemClick",b,c)})},createCheckboxForItem:function(a){a.checkbox=H("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);B(a.checkbox,"click",function(b){k(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}});r.legend.itemStyle.cursor="pointer";q(A.prototype,{showResetZoom:function(){var a= +this,b=r.lang,c=a.options.chart.resetZoomButton,d=c.theme,f=d.states,h="chart"===c.relativeTo?null:"plotBox";this.resetZoomButton=a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,f&&f.hover).attr({align:c.position.align,title:b.resetZoomTitle}).addClass("highcharts-reset-zoom").add().align(c.position,!1,h)},zoomOut:function(){var a=this;k(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var d,f=this.pointer,h=!1,k;!a||a.resetSelection?l(this.axes,function(a){d= +a.zoom()}):l(a.xAxis.concat(a.yAxis),function(a){var b=a.axis;f[b.isXAxis?"zoomX":"zoomY"]&&(d=b.zoom(a.min,a.max),b.displayBtn&&(h=!0))});k=this.resetZoomButton;h&&!k?this.showResetZoom():!h&&c(k)&&(this.resetZoomButton=k.destroy());d&&this.redraw(b(this.options.chart.animation,a&&a.animation,100>this.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&l(d,function(a){a.setState()});l("xy"===b?[1,0]:[1],function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,f=a[d?"chartX":"chartY"],d=d? +"mouseDownX":"mouseDownY",h=c[d],k=(b.pointRange||0)/2,g=b.getExtremes(),l=b.toValue(h-f,!0)+k,k=b.toValue(h+b.len-f,!0)-k,m=k<l,h=m?k:l,l=m?l:k,m=b.toValue(b.toPixels(g.min)-b.minPixelPadding),k=b.toValue(b.toPixels(g.max)+b.minPixelPadding),m=Math.min(g.dataMin,m)-h,g=l-Math.max(g.dataMax,k);b.series.length&&0>m&&0>g&&(b.setExtremes(h,l,!1,!1,{trigger:"pan"}),e=!0);c[d]=f});e&&c.redraw(!1);G(c.container,{cursor:"move"})}});q(p.prototype,{select:function(a,c){var e=this,f=e.series,h=f.chart;a=b(a, +!e.selected);e.firePointEvent(a?"select":"unselect",{accumulate:c},function(){e.selected=e.options.selected=a;f.options.data[d(e,f.data)]=e.options;e.setState(a&&"select");c||l(h.getSelectedPoints(),function(a){a.selected&&a!==e&&(a.selected=a.options.selected=!1,f.options.data[d(a,f.data)]=a.options,a.setState(""),a.firePointEvent("unselect"))})})},onMouseOver:function(a){var b=this.series.chart.pointer;this.firePointEvent("mouseOver");b.runPointActions(a,this)},onMouseOut:function(){var a=this.series.chart; +this.firePointEvent("mouseOut");l(a.hoverPoints||[],function(a){a.setState()});a.hoverPoints=a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=z(this.series.options.point,this.options).events,b;this.events=a;for(b in a)B(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,c){var d=Math.floor(this.plotX),e=this.plotY,h=this.series,k=h.options.states[a]||{},l=f[h.type].marker&&h.options.marker,n=l&&!1===l.enabled,p=l&&l.states&&l.states[a]||{},r=!1===p.enabled,g= +h.stateMarkerGraphic,t=this.marker||{},u=h.chart,w=h.halo,z,A=l&&h.markerAttribs;a=a||"";if(!(a===this.state&&!c||this.selected&&"select"!==a||!1===k.enabled||a&&(r||n&&!1===p.enabled)||a&&t.states&&t.states[a]&&!1===t.states[a].enabled)){A&&(z=h.markerAttribs(this,a));if(this.graphic)this.state&&this.graphic.removeClass("highcharts-point-"+this.state),a&&this.graphic.addClass("highcharts-point-"+a),this.graphic.attr(h.pointAttribs(this,a)),z&&this.graphic.animate(z,b(u.options.chart.animation,p.animation, +l.animation)),g&&g.hide();else{if(a&&p){l=t.symbol||h.symbol;g&&g.currentSymbol!==l&&(g=g.destroy());if(g)g[c?"animate":"attr"]({x:z.x,y:z.y});else l&&(h.stateMarkerGraphic=g=u.renderer.symbol(l,z.x,z.y,z.width,z.height).add(h.markerGroup),g.currentSymbol=l);g&&g.attr(h.pointAttribs(this,a))}g&&(g[a&&u.isInsidePlot(d,e,u.inverted)?"show":"hide"](),g.element.point=this)}(d=k.halo)&&d.size?(w||(h.halo=w=u.renderer.path().add(A?h.markerGroup:h.group)),w[c?"animate":"attr"]({d:this.haloPath(d.size)}), +w.attr({"class":"highcharts-halo highcharts-color-"+b(this.colorIndex,h.colorIndex)}),w.point=this,w.attr(q({fill:this.color||h.color,"fill-opacity":d.opacity,zIndex:-1},d.attributes))):w&&w.point&&w.point.haloPath&&w.animate({d:w.point.haloPath(0)});this.state=a}},haloPath:function(a){return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX)-a,this.plotY-a,2*a,2*a)}});q(h.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&& +k(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;b.hoverSeries=null;if(d)d.onMouseOut();this&&a.events.mouseOut&&k(this,"mouseOut");!c||this.stickyTracking||c.shared&&!this.noSharedTooltip||c.hide();this.setState()},setState:function(a){var c=this,d=c.options,f=c.graph,h=d.states,k=d.lineWidth,d=0;a=a||"";if(c.state!==a&&(l([c.group,c.markerGroup,c.dataLabelsGroup],function(b){b&&(c.state&&b.removeClass("highcharts-series-"+ +c.state),a&&b.addClass("highcharts-series-"+a))}),c.state=a,!h[a]||!1!==h[a].enabled)&&(a&&(k=h[a].lineWidth||k+(h[a].lineWidthPlus||0)),f&&!f.dashstyle))for(k={"stroke-width":k},f.animate(k,b(c.chart.options.chart.animation,h[a]&&h[a].animation));c["zone-graph-"+d];)c["zone-graph-"+d].attr(k),d+=1},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,h=d.options.chart.ignoreHiddenSeries,n=c.visible;f=(c.visible=a=c.options.visible=c.userOptions.visible=void 0===a?!n:a)?"show":"hide";l(["group", +"dataLabelsGroup","markerGroup","tracker","tt"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&l(d.series,function(a){a.options.stacking&&a.visible&&(a.isDirty=!0)});l(c.linkedSeries,function(b){b.setVisible(a,!1)});h&&(d.isDirtyBox=!0);!1!==b&&d.redraw();k(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=void 0=== +a?!this.selected:a;this.checkbox&&(this.checkbox.checked=a);k(this,a?"select":"unselect")},drawTracker:a.drawTrackerGraph})})(L);(function(a){var B=a.Chart,A=a.each,H=a.inArray,G=a.isArray,r=a.isObject,f=a.pick,l=a.splat;B.prototype.setResponsive=function(f){var k=this.options.responsive,l=[],d=this.currentResponsive;k&&k.rules&&A(k.rules,function(c){void 0===c._id&&(c._id=a.uniqueKey());this.matchResponsiveRule(c,l,f)},this);var c=a.merge.apply(0,a.map(l,function(c){return a.find(k.rules,function(a){return a._id=== +c}).chartOptions})),l=l.toString()||void 0;l!==(d&&d.ruleIds)&&(d&&this.update(d.undoOptions,f),l?(this.currentResponsive={ruleIds:l,mergedOptions:c,undoOptions:this.currentOptions(c)},this.update(c,f)):this.currentResponsive=void 0)};B.prototype.matchResponsiveRule=function(a,k){var l=a.condition;(l.callback||function(){return this.chartWidth<=f(l.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=f(l.maxHeight,Number.MAX_VALUE)&&this.chartWidth>=f(l.minWidth,0)&&this.chartHeight>=f(l.minHeight,0)}).call(this)&& +k.push(a._id)};B.prototype.currentOptions=function(a){function f(a,c,k,q){var b,d;for(b in a)if(!q&&-1<H(b,["series","xAxis","yAxis"]))for(a[b]=l(a[b]),k[b]=[],d=0;d<a[b].length;d++)c[b][d]&&(k[b][d]={},f(a[b][d],c[b][d],k[b][d],q+1));else r(a[b])?(k[b]=G(a[b])?[]:{},f(a[b],c[b]||{},k[b],q+1)):k[b]=c[b]||null}var q={};f(a,this.options,q,0);return q}})(L);return L}); diff --git a/plugins/highcharts/jquery-1.11.3.min.js b/plugins/highcharts/jquery-1.11.3.min.js new file mode 100644 index 0000000..0f60b7b --- /dev/null +++ b/plugins/highcharts/jquery-1.11.3.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){ +return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m}); diff --git a/plugins/highcharts/jquery.highchartTable.js b/plugins/highcharts/jquery.highchartTable.js new file mode 100644 index 0000000..7640084 --- /dev/null +++ b/plugins/highcharts/jquery.highchartTable.js @@ -0,0 +1,517 @@ +; + +(function($) { + $.fn.highchartTable = function() { + + var allowedGraphTypes = ['column', 'line', 'area', 'spline', 'pie']; + + var getCallable = function (table, attribute) { + var callback = $(table).data(attribute); + if (typeof callback != 'undefined') { + var infosCallback = callback.split('.'); + var callable = window[infosCallback[0]]; + for(var i = 1, infosCallbackLength = infosCallback.length; i < infosCallbackLength; i++) { + callable = callable[infosCallback[i]]; + } + return callable; + } + }; + + this.each(function() { + var table = $(this); + var $table = $(table); + var nbYaxis = 1; + + // Retrieve graph title from the table caption + var captions = $('caption', table); + var graphTitle = captions.length ? $(captions[0]).text() : ''; + + var graphContainer; + if ($table.data('graph-container-before') != 1) { + // Retrieve where the graph must be displayed from the graph-container attribute + var graphContainerSelector = $table.data('graph-container'); + if (!graphContainerSelector) { + throw "graph-container data attribute is mandatory"; + } + + if (graphContainerSelector[0] === '#' || graphContainerSelector.indexOf('..')===-1) { + // Absolute selector path + graphContainer = $(graphContainerSelector); + } else { + var referenceNode = table; + var currentGraphContainerSelector = graphContainerSelector; + + while (currentGraphContainerSelector.indexOf('..')!==-1) { + currentGraphContainerSelector = currentGraphContainerSelector.replace(/^.. /, ''); + referenceNode = referenceNode.parent(); + } + + graphContainer = $(currentGraphContainerSelector, referenceNode); + } + if (graphContainer.length !== 1) { + throw "graph-container is not available in this DOM or available multiple times"; + } + graphContainer = graphContainer[0]; + } else { + $table.before('<div></div>'); + graphContainer = $table.prev(); + graphContainer = graphContainer[0]; + } + + // Retrieve graph type from graph-type attribute + var globalGraphType = $table.data('graph-type'); + if (!globalGraphType) { + throw "graph-type data attribute is mandatory"; + } + if ($.inArray(globalGraphType, allowedGraphTypes) == -1) { + throw "graph-container data attribute must be one of " + allowedGraphTypes.join(', '); + } + + var stackingType = $table.data('graph-stacking'); + if (!stackingType) { + stackingType = 'normal'; + } + + var dataLabelsEnabled = $table.data('graph-datalabels-enabled'); + var isGraphInverted = $table.data('graph-inverted') == 1; + + // Retrieve series titles + var ths = $('thead th', table); + var columns = []; + var vlines = []; + var skippedColumns = 0; + var graphIsStacked = false; + ths.each(function(indexTh, th) { + var $th = $(th); + var columnScale = $th.data('graph-value-scale'); + + var serieGraphType = $th.data('graph-type'); + if($.inArray(serieGraphType, allowedGraphTypes) == -1) { + serieGraphType = globalGraphType; + } + + var serieStackGroup = $th.data('graph-stack-group'); + if(serieStackGroup) { + graphIsStacked = true; + } + + var serieDataLabelsEnabled = $th.data('graph-datalabels-enabled'); + if (typeof serieDataLabelsEnabled == 'undefined') { + serieDataLabelsEnabled = dataLabelsEnabled; + } + + var yaxis = $th.data('graph-yaxis'); + + if (typeof yaxis != 'undefined' && yaxis == '1') { + nbYaxis = 2; + } + + var isColumnSkipped = $th.data('graph-skip') == 1; + if (isColumnSkipped) + { + skippedColumns = skippedColumns + 1; + } + + var thGraphConfig = { + libelle: $th.text(), + skip: isColumnSkipped, + indexTd: indexTh - skippedColumns - 1, + color: $th.data('graph-color'), + visible: !$th.data('graph-hidden'), + yAxis: typeof yaxis != 'undefined' ? yaxis : 0, + dashStyle: $th.data('graph-dash-style') || 'solid', + dataLabelsEnabled: serieDataLabelsEnabled == 1, + dataLabelsColor: $th.data('graph-datalabels-color') || $table.data('graph-datalabels-color') + + }; + + var vlinex = $th.data('graph-vline-x'); + if (typeof vlinex == 'undefined') { + thGraphConfig.scale = typeof columnScale != 'undefined' ? parseFloat(columnScale) : 1; + thGraphConfig.graphType = serieGraphType == 'column' && isGraphInverted ? 'bar' : serieGraphType; + thGraphConfig.stack = serieStackGroup; + thGraphConfig.unit = $th.data('graph-unit'); + columns[indexTh] = thGraphConfig; + } else { + thGraphConfig.x = vlinex; + thGraphConfig.height = $th.data('graph-vline-height'); + thGraphConfig.name = $th.data('graph-vline-name'); + vlines[indexTh] = thGraphConfig; + } + }); + + var series = []; + $(columns).each(function(indexColumn, column) { + if(indexColumn!=0 && !column.skip) { + + var serieConfig = { + name: column.libelle + (column.unit ? ' (' + column.unit + ')' : ''), + data: [], + type: column.graphType, + stack: column.stack, + color: column.color, + visible: column.visible, + yAxis: column.yAxis, + dashStyle: column.dashStyle, + marker: { + enabled: false + }, + dataLabels: { + enabled: column.dataLabelsEnabled, + color: column.dataLabelsColor, + align: $table.data('graph-datalabels-align') || (globalGraphType == 'column' && isGraphInverted == 1 ? undefined : 'center') + } + }; + + if(column.dataLabelsEnabled) { + var callableSerieDataLabelsFormatter = getCallable(table, 'graph-datalabels-formatter'); + if (callableSerieDataLabelsFormatter) { + serieConfig.dataLabels.formatter = function () { + return callableSerieDataLabelsFormatter(this.y); + }; + } + } + series.push(serieConfig); + } + }); + + $(vlines).each(function(indexColumn, vline) { + if (typeof vline != 'undefined' && !vline.skip) { + series.push({ + name: vline.libelle, + data: [{x: vline.x, y:0, name: vline.name}, {x:vline.x, y:vline.height, name: vline.name}], + type: 'spline', + color: vline.color, + visible: vline.visible, + marker: { + enabled: false + } + }); + } + }); + + var xValues = []; + var callablePoint = getCallable(table, 'graph-point-callback'); + var isGraphDatetime = $table.data('graph-xaxis-type') == 'datetime'; + + var rows = $('tbody:first tr', table); + rows.each(function(indexRow, row) { + if (!!$(row).data('graph-skip')) { + return; + } + + var tds = $('td', row); + tds.each(function(indexTd, td) { + var cellValue; + var column = columns[indexTd]; + + if (column.skip) { + return; + } + var $td = $(td); + if (indexTd==0) { + cellValue = $td.text(); + xValues.push(cellValue); + } else { + var rawCellValue = $td.text(); + var serie = series[column.indexTd]; + + if (rawCellValue.length==0) { + if (!isGraphDatetime) { + serie.data.push(null); + } + } else { + var cleanedCellValue = rawCellValue.replace(/\s/g, '').replace(/,/, '.'); + var eventOptions = { + value: cleanedCellValue, + rawValue: rawCellValue, + td: $td, + tr: $(row), + indexTd: indexTd, + indexTr: indexRow + } + $table.trigger('highchartTable.cleanValue', eventOptions); + cellValue = Math.round(parseFloat(eventOptions.value) * column.scale * 100) / 100; + + var dataGraphX = $td.data('graph-x'); + + if (isGraphDatetime) { + dataGraphX = $('td', $(row)).first().text(); + var date = parseDate(dataGraphX); + dataGraphX = date.getTime() - date.getTimezoneOffset()*60*1000; + } + + var tdGraphName = $td.data('graph-name'); + var serieDataItem = { + name: typeof tdGraphName != 'undefined' ? tdGraphName : rawCellValue, + y: cellValue, + x: dataGraphX //undefined if no x defined in table + }; + + if (callablePoint) { + serieDataItem.events = { + click: function () { + return callablePoint(this); + } + }; + } + + if (column.graphType === 'pie') { + if ($td.data('graph-item-highlight')) { + serieDataItem.sliced = 1; + } + } + + var tdGraphItemColor = $td.data('graph-item-color'); + if (typeof tdGraphItemColor != 'undefined') { + serieDataItem.color = tdGraphItemColor; + } + + serie.data.push(serieDataItem); + } + } + }); + + }); + + var getYaxisAttr = function($table, yAxisNum, name) { + var oldConvention = $table.data('graph-yaxis-' + yAxisNum + '-' + name); + if (typeof oldConvention != 'undefined') { + return oldConvention; + } + + return $table.data('graph-yaxis' + yAxisNum + '-' + name); + }; + + var yAxisConfig = []; + var yAxisNum; + for (yAxisNum=1 ; yAxisNum <= nbYaxis ; yAxisNum++) { + var yAxisConfigCurrentAxis = { + title: { + text: typeof getYaxisAttr($table, yAxisNum, 'title-text') != 'undefined' ? getYaxisAttr($table, yAxisNum, 'title-text') : null + }, + max: typeof getYaxisAttr($table, yAxisNum, 'max') != 'undefined' ? getYaxisAttr($table, yAxisNum, 'max') : null, + min: typeof getYaxisAttr($table, yAxisNum, 'min') != 'undefined' ? getYaxisAttr($table, yAxisNum, 'min') : null, + reversed: getYaxisAttr($table, yAxisNum, 'reversed') == '1', + opposite: getYaxisAttr($table, yAxisNum, 'opposite') == '1', + tickInterval: getYaxisAttr($table, yAxisNum, 'tick-interval') || null, + labels: { + rotation: getYaxisAttr($table, yAxisNum, 'rotation') || 0 + }, + startOnTick: getYaxisAttr($table, yAxisNum, 'start-on-tick') != "0", + endOnTick: getYaxisAttr($table, yAxisNum, 'end-on-tick') != "0", + stackLabels : { + enabled: getYaxisAttr($table, yAxisNum, 'stacklabels-enabled') == '1' + }, + gridLineInterpolation: getYaxisAttr($table, yAxisNum, 'grid-line-interpolation') || null + }; + + var callableYAxisFormatter = getCallable(table, 'graph-yaxis-'+yAxisNum+'-formatter-callback'); + + if (!callableYAxisFormatter) { + callableYAxisFormatter = getCallable(table, 'graph-yaxis'+yAxisNum+'-formatter-callback'); + } + + if (callableYAxisFormatter) { + yAxisConfigCurrentAxis.labels.formatter = function () { + return callableYAxisFormatter(this.value); + }; + } + + yAxisConfig.push(yAxisConfigCurrentAxis); + } + + var defaultColors = [ + '#4572A7', + '#AA4643', + '#89A54E', + '#80699B', + '#3D96AE', + '#DB843D', + '#92A8CD', + '#A47D7C', + '#B5CA92' + ]; + var colors = []; + + var themeColors = typeof Highcharts.theme != 'undefined' && typeof Highcharts.theme.colors != 'undefined' ? Highcharts.theme.colors : []; + var lineShadow = $table.data('graph-line-shadow'); + var lineWidth = $table.data('graph-line-width') || 2; + + var nbOfColors = Math.max(defaultColors.length, themeColors.length); + for(var i=0; i < nbOfColors; i++) { + var dataname = 'graph-color-' + (i+1); + colors.push(typeof $table.data(dataname) != 'undefined' ? $table.data(dataname) : typeof themeColors[i] != 'undefined' ? themeColors[i] : defaultColors[i]); + } + + var marginTop = $table.data('graph-margin-top'); + var marginRight = $table.data('graph-margin-right'); + var marginBottom = $table.data('graph-margin-bottom'); + var marginLeft = $table.data('graph-margin-left'); + + var xAxisLabelsEnabled = $table.data('graph-xaxis-labels-enabled'); + + var xAxisLabelStyle = {}; + var xAxisLabelFontSize = $table.data('graph-xaxis-labels-font-size'); + + if (typeof xAxisLabelFontSize != 'undefined') + { + xAxisLabelStyle.fontSize = xAxisLabelFontSize; + } + + var highChartConfig = { + colors: colors, + chart: { + renderTo: graphContainer, + inverted: isGraphInverted, + marginTop: typeof marginTop != 'undefined' ? marginTop : null, + marginRight: typeof marginRight != 'undefined' ? marginRight : null, + marginBottom: typeof marginBottom != 'undefined' ? marginBottom : null, + marginLeft: typeof marginLeft != 'undefined' ? marginLeft : null, + spacingTop: $table.data('graph-spacing-top') || 10, + height: $table.data('graph-height') || null, + zoomType: $table.data('graph-zoom-type') || null, + polar: $table.data('graph-polar') || null + }, + title: { + text: graphTitle + }, + subtitle: { + text: $table.data('graph-subtitle-text') || '' + }, + legend: { + enabled: $table.data('graph-legend-disabled') != '1', + layout: $table.data('graph-legend-layout') || 'horizontal', + symbolWidth: $table.data('graph-legend-width') || 30, + x: $table.data('graph-legend-x') || 15, + y: $table.data('graph-legend-y') || 0 + }, + xAxis: { + categories: ($table.data('graph-xaxis-type') != 'datetime') ? xValues : undefined, + type: ($table.data('graph-xaxis-type') == 'datetime') ? 'datetime' : undefined, + reversed: $table.data('graph-xaxis-reversed') == '1', + opposite: $table.data('graph-xaxis-opposite') == '1', + showLastLabel: typeof $table.data('graph-xaxis-show-last-label') != 'undefined' ? $table.data('graph-xaxis-show-last-label') : true, + tickInterval: $table.data('graph-xaxis-tick-interval') || null, + dateTimeLabelFormats: { //by default, we display the day and month on the datetime graphs + second: '%e. %b', + minute: '%e. %b', + hour: '%e. %b', + day: '%e. %b', + week: '%e. %b', + month: '%e. %b', + year: '%e. %b' + }, + labels: + { + rotation: $table.data('graph-xaxis-rotation') || undefined, + align: $table.data('graph-xaxis-align') || undefined, + enabled: typeof xAxisLabelsEnabled != 'undefined' ? xAxisLabelsEnabled : true, + style: xAxisLabelStyle + }, + startOnTick: $table.data('graph-xaxis-start-on-tick'), + endOnTick: $table.data('graph-xaxis-end-on-tick'), + min: getXAxisMinMax(table, 'min'), + max: getXAxisMinMax(table, 'max'), + alternateGridColor: $table.data('graph-xaxis-alternateGridColor') || null, + title: { + text: $table.data('graph-xaxis-title-text') || null + }, + gridLineWidth: $table.data('graph-xaxis-gridLine-width') || 0, + gridLineDashStyle: $table.data('graph-xaxis-gridLine-style') || 'ShortDot', + tickmarkPlacement: $table.data('graph-xaxis-tickmark-placement') || 'between', + lineWidth: $table.data('graph-xaxis-line-width') || 0 + }, + yAxis: yAxisConfig, + tooltip: { + formatter: function() { + if ($table.data('graph-xaxis-type') == 'datetime') { + return '<b>'+ this.series.name +'</b><br/>'+ Highcharts.dateFormat('%e. %b', this.x) +' : '+ this.y; + } else { + var xValue = typeof xValues[this.point.x] != 'undefined' ? xValues[this.point.x] : this.point.x; + if (globalGraphType === 'pie') { + return '<strong>' + this.series.name + '</strong><br />' + xValue + ' : ' + this.point.y; + } + return '<strong>' + this.series.name + '</strong><br />' + xValue + ' : ' + this.point.name; + } + } + }, + credits: { + enabled: false + }, + plotOptions: { + line: { + dataLabels: { + enabled: true + }, + lineWidth: lineWidth + }, + area: { + lineWidth: lineWidth, + shadow: typeof lineShadow != 'undefined' ? lineShadow : true, + fillOpacity: $table.data('graph-area-fillOpacity') || 0.75 + }, + pie: { + allowPointSelect: true, + dataLabels: { + enabled: true + }, + showInLegend: $table.data('graph-pie-show-in-legend') == '1', + size: '80%' + }, + series: { + animation: false, + stickyTracking : false, + stacking: graphIsStacked ? stackingType : null, + groupPadding: $table.data('graph-group-padding') || 0 + } + }, + series: series, + exporting: { + filename: graphTitle.replace(/ /g, '_'), + buttons: { + exportButton: { + menuItems: null, + onclick: function() { + this.exportChart(); + } + } + } + } + }; + + $table.trigger('highchartTable.beforeRender', highChartConfig); + new Highcharts.Chart(highChartConfig); + + }); + //for fluent api + return this; + }; + + var getXAxisMinMax = function(table, minOrMax) { + var value = $(table).data('graph-xaxis-'+minOrMax); + if (typeof value != 'undefined') { + if ($(table).data('graph-xaxis-type') == 'datetime') { + var date = parseDate(value); + return date.getTime() - date.getTimezoneOffset()*60*1000; + } + return value; + } + return null; + }; + + var parseDate = function(datetime) { + var calculatedateInfos = datetime.split(' '); + var dateDayInfos = calculatedateInfos[0].split('-'); + var min = null; + var hour = null; + // If hour and minute are available in the datetime string + if(calculatedateInfos[1]) { + var dateHourInfos = calculatedateInfos[1].split(':'); + min = parseInt(dateHourInfos[0], 10); + hour = parseInt(dateHourInfos[1], 10); + } + return new Date(parseInt(dateDayInfos[0], 10), parseInt(dateDayInfos[1], 10)-1, parseInt(dateDayInfos[2], 10), min, hour); + }; + +})(jQuery); diff --git a/plugins/ion-rangeslider/Thumbs.db b/plugins/ion-rangeslider/Thumbs.db new file mode 100644 index 0000000..52269b4 Binary files /dev/null and b/plugins/ion-rangeslider/Thumbs.db differ diff --git a/plugins/ion-rangeslider/ion.rangeSlider.css b/plugins/ion-rangeslider/ion.rangeSlider.css new file mode 100644 index 0000000..68fd119 --- /dev/null +++ b/plugins/ion-rangeslider/ion.rangeSlider.css @@ -0,0 +1,150 @@ +/* Ion.RangeSlider +// css version 2.0.3 +// © 2013-2014 Denis Ineshin | IonDen.com +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// RangeSlider */ + +.irs { + position: relative; display: block; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + .irs-line { + position: relative; display: block; + overflow: hidden; + outline: none !important; + } + .irs-line-left, .irs-line-mid, .irs-line-right { + position: absolute; display: block; + top: 0; + } + .irs-line-left { + left: 0; width: 11%; + } + .irs-line-mid { + left: 9%; width: 82%; + } + .irs-line-right { + right: 0; width: 11%; + } + + .irs-bar { + position: absolute; display: block; + left: 0; width: 0; + } + .irs-bar-edge { + position: absolute; display: block; + top: 0; left: 0; + } + + .irs-shadow { + position: absolute; display: none; + left: 0; width: 0; + } + + .irs-slider { + position: absolute; display: block; + cursor: default; + z-index: 1; + } + .irs-slider.single { + + } + .irs-slider.from { + + } + .irs-slider.to { + + } + .irs-slider.type_last { + z-index: 2; + } + + .irs-min { + position: absolute; display: block; + left: 0; + cursor: default; + } + .irs-max { + position: absolute; display: block; + right: 0; + cursor: default; + } + + .irs-from, .irs-to, .irs-single { + position: absolute; display: block; + top: 0; left: 0; + cursor: default; + white-space: nowrap; + } + +.irs-grid { + position: absolute; display: none; + bottom: 0; left: 0; + width: 100%; height: 20px; +} +.irs-with-grid .irs-grid { + display: block; +} + .irs-grid-pol { + position: absolute; + top: 0; left: 0; + width: 1px; height: 8px; + background: #000; + } + .irs-grid-pol.small { + height: 4px; + } + .irs-grid-text { + position: absolute; + bottom: 0; left: 0; + white-space: nowrap; + text-align: center; + font-size: 9px; line-height: 9px; + padding: 0 3px; + color: #000; + } + +.irs-disable-mask { + position: absolute; display: block; + top: 0; left: -1%; + width: 102%; height: 100%; + cursor: default; + background: rgba(0,0,0,0.0); + z-index: 2; +} +.lt-ie9 .irs-disable-mask { + background: #000; + filter: alpha(opacity=0); + cursor: not-allowed; +} + +.irs-disabled { + opacity: 0.4; +} + + +.irs-hidden-input { + position: absolute !important; + display: block !important; + top: 0 !important; + left: 0 !important; + width: 0 !important; + height: 0 !important; + font-size: 0 !important; + line-height: 0 !important; + padding: 0 !important; + margin: 0 !important; + overflow: hidden; + outline: none !important; + z-index: -9999 !important; + background: none !important; + border-style: solid !important; + border-color: transparent !important; +} diff --git a/plugins/ion-rangeslider/ion.rangeSlider.min.js b/plugins/ion-rangeslider/ion.rangeSlider.min.js new file mode 100644 index 0000000..11ae97f --- /dev/null +++ b/plugins/ion-rangeslider/ion.rangeSlider.min.js @@ -0,0 +1,76 @@ +// Ion.RangeSlider | version 2.1.4 | https://github.com/IonDen/ion.rangeSlider +;(function(g){"function"===typeof define&&define.amd?define(["jquery"],function(q){g(q,document,window,navigator)}):g(jQuery,document,window,navigator)})(function(g,q,h,t,v){var u=0,p=function(){var a=t.userAgent,b=/msie\s\d+/i;return 0<a.search(b)&&(a=b.exec(a).toString(),a=a.split(" ")[1],9>a)?(g("html").addClass("lt-ie9"),!0):!1}();Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,d=[].slice;if("function"!=typeof b)throw new TypeError;var c=d.call(arguments,1),e=function(){if(this instanceof +e){var f=function(){};f.prototype=b.prototype;var f=new f,l=b.apply(f,c.concat(d.call(arguments)));return Object(l)===l?l:f}return b.apply(a,c.concat(d.call(arguments)))};return e});Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var d;if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),e=c.length>>>0;if(0===e)return-1;d=+b||0;Infinity===Math.abs(d)&&(d=0);if(d>=e)return-1;for(d=Math.max(0<=d?d:e-Math.abs(d),0);d<e;){if(d in c&&c[d]===a)return d;d++}return-1}); +var r=function(a,b,d){this.VERSION="2.1.4";this.input=a;this.plugin_count=d;this.old_to=this.old_from=this.update_tm=this.calc_count=this.current_plugin=0;this.raf_id=this.old_min_interval=null;this.is_update=this.is_key=this.no_diapason=this.force_redraw=this.dragging=!1;this.is_start=!0;this.is_click=this.is_resize=this.is_active=this.is_finish=!1;this.$cache={win:g(h),body:g(q.body),input:g(a),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null, +s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]};this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],big_x:[]};this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0, +p_single_fake:0,p_single_left:0};var c=this.$cache.input;a=c.prop("value");var e;d={type:"single",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:" ",prettify:null,force_edges:!1,keyboard:!1,keyboard_step:5,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:"", +postfix:"",max_postfix:"",decorate_both:!0,values_separator:" \u2014 ",input_values_separator:";",disable:!1,onStart:null,onChange:null,onFinish:null,onUpdate:null};c={type:c.data("type"),min:c.data("min"),max:c.data("max"),from:c.data("from"),to:c.data("to"),step:c.data("step"),min_interval:c.data("minInterval"),max_interval:c.data("maxInterval"),drag_interval:c.data("dragInterval"),values:c.data("values"),from_fixed:c.data("fromFixed"),from_min:c.data("fromMin"),from_max:c.data("fromMax"),from_shadow:c.data("fromShadow"), +to_fixed:c.data("toFixed"),to_min:c.data("toMin"),to_max:c.data("toMax"),to_shadow:c.data("toShadow"),prettify_enabled:c.data("prettifyEnabled"),prettify_separator:c.data("prettifySeparator"),force_edges:c.data("forceEdges"),keyboard:c.data("keyboard"),keyboard_step:c.data("keyboardStep"),grid:c.data("grid"),grid_margin:c.data("gridMargin"),grid_num:c.data("gridNum"),grid_snap:c.data("gridSnap"),hide_min_max:c.data("hideMinMax"),hide_from_to:c.data("hideFromTo"),prefix:c.data("prefix"),postfix:c.data("postfix"), +max_postfix:c.data("maxPostfix"),decorate_both:c.data("decorateBoth"),values_separator:c.data("valuesSeparator"),input_values_separator:c.data("inputValuesSeparator"),disable:c.data("disable")};c.values=c.values&&c.values.split(",");for(e in c)c.hasOwnProperty(e)&&(c[e]||0===c[e]||delete c[e]);a&&(a=a.split(c.input_values_separator||b.input_values_separator||";"),a[0]&&a[0]==+a[0]&&(a[0]=+a[0]),a[1]&&a[1]==+a[1]&&(a[1]=+a[1]),b&&b.values&&b.values.length?(d.from=a[0]&&b.values.indexOf(a[0]),d.to= +a[1]&&b.values.indexOf(a[1])):(d.from=a[0]&&+a[0],d.to=a[1]&&+a[1]));g.extend(d,b);g.extend(d,c);this.options=d;this.validate();this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null};this.init()};r.prototype={init:function(a){this.no_diapason=!1;this.coords.p_step=this.convertToPercent(this.options.step,!0);this.target="base";this.toggleInput();this.append();this.setMinMax(); +a?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart());this.updateScene()},append:function(){this.$cache.input.before('<span class="irs js-irs-'+this.plugin_count+'"></span>');this.$cache.input.prop("readonly",!0);this.$cache.cont=this.$cache.input.prev();this.result.slider=this.$cache.cont;this.$cache.cont.html('<span class="irs"><span class="irs-line" tabindex="-1"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span><span class="irs-bar"></span>'); +this.$cache.rs=this.$cache.cont.find(".irs");this.$cache.min=this.$cache.cont.find(".irs-min");this.$cache.max=this.$cache.cont.find(".irs-max");this.$cache.from=this.$cache.cont.find(".irs-from");this.$cache.to=this.$cache.cont.find(".irs-to");this.$cache.single=this.$cache.cont.find(".irs-single");this.$cache.bar=this.$cache.cont.find(".irs-bar");this.$cache.line=this.$cache.cont.find(".irs-line");this.$cache.grid=this.$cache.cont.find(".irs-grid");"single"===this.options.type?(this.$cache.cont.append('<span class="irs-bar-edge"></span><span class="irs-shadow shadow-single"></span><span class="irs-slider single"></span>'), +this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append('<span class="irs-shadow shadow-from"></span><span class="irs-shadow shadow-to"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'),this.$cache.s_from=this.$cache.cont.find(".from"), +this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler());this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none");this.appendGrid();this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.cont.removeClass("irs-disabled"),this.$cache.input[0].disabled= +!1,this.bindEvents());this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var a=this.options.max,b=this.options.to;this.options.from>this.options.min&&b===a?this.$cache.s_from.addClass("type_last"):b<a&&this.$cache.s_to.addClass("type_last")},changeLevel:function(a){switch(a){case "single":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake);break;case "from":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake); +this.$cache.s_from.addClass("state_hover");this.$cache.s_from.addClass("type_last");this.$cache.s_to.removeClass("type_last");break;case "to":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake);this.$cache.s_to.addClass("state_hover");this.$cache.s_to.addClass("type_last");this.$cache.s_from.removeClass("type_last");break;case "both":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake- +this.coords.p_pointer),this.$cache.s_to.removeClass("type_last"),this.$cache.s_from.removeClass("type_last")}},appendDisableMask:function(){this.$cache.cont.append('<span class="irs-disable-mask"></span>');this.$cache.cont.addClass("irs-disabled")},remove:function(){this.$cache.cont.remove();this.$cache.cont=null;this.$cache.line.off("keydown.irs_"+this.plugin_count);this.$cache.body.off("touchmove.irs_"+this.plugin_count);this.$cache.body.off("mousemove.irs_"+this.plugin_count);this.$cache.win.off("touchend.irs_"+ +this.plugin_count);this.$cache.win.off("mouseup.irs_"+this.plugin_count);p&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count));this.$cache.grid_labels=[];this.coords.big=[];this.coords.big_w=[];this.coords.big_p=[];this.coords.big_x=[];cancelAnimationFrame(this.raf_id)},bindEvents:function(){if(!this.no_diapason){this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this));this.$cache.body.on("mousemove.irs_"+this.plugin_count, +this.pointerMove.bind(this));this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.options.drag_interval&&"double"===this.options.type?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this, +"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));"single"===this.options.type?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")), +this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+ +this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")), +this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+ +this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));if(this.options.keyboard)this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard"));p&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this)))}}, +pointerMove:function(a){this.dragging&&(this.coords.x_pointer=(a.pageX||a.originalEvent.touches&&a.originalEvent.touches[0].pageX)-this.coords.x_gap,this.calc())},pointerUp:function(a){if(this.current_plugin===this.plugin_count&&this.is_active){this.is_active=!1;this.$cache.cont.find(".state_hover").removeClass("state_hover");this.force_redraw=!0;p&&g("*").prop("unselectable",!1);this.updateScene();this.restoreOriginalMinInterval();if(g.contains(this.$cache.cont[0],a.target)||this.dragging)this.is_finish= +!0,this.callOnFinish();this.dragging=!1}},pointerDown:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&("both"===a&&this.setTempMinInterval(),a||(a=this.target),this.current_plugin=this.plugin_count,this.target=a,this.dragging=this.is_active=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=d-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(a),p&&g("*").prop("unselectable",!0),this.$cache.line.trigger("focus"), +this.updateScene())},pointerClick:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&(this.current_plugin=this.plugin_count,this.target=a,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(d-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(a,b){if(!(this.current_plugin!==this.plugin_count||b.altKey||b.ctrlKey||b.shiftKey||b.metaKey)){switch(b.which){case 83:case 65:case 40:case 37:b.preventDefault(); +this.moveByKey(!1);break;case 87:case 68:case 38:case 39:b.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(a){var b=this.coords.p_pointer,b=a?b+this.options.keyboard_step:b-this.options.keyboard_step;this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*b);this.is_key=!0;this.calc()},setMinMax:function(){this.options&&(this.options.hide_min_max?(this.$cache.min[0].style.display="none",this.$cache.max[0].style.display="none"):(this.options.values.length?(this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])), +this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]))):(this.$cache.min.html(this.decorate(this._prettify(this.options.min),this.options.min)),this.$cache.max.html(this.decorate(this._prettify(this.options.max),this.options.max))),this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)))},setTempMinInterval:function(){var a=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval); +this.options.min_interval=a},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(a){if(this.options){this.calc_count++;if(10===this.calc_count||a)this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent();if(this.coords.w_rs){this.calcPointerPercent();a=this.getHandleX();"click"===this.target&&(this.coords.p_gap=this.coords.p_handle/2,a=this.getHandleX(),this.target= +this.options.drag_interval?"both_one":this.chooseHandle(a));switch(this.target){case "base":var b=(this.options.max-this.options.min)/100;a=(this.result.from-this.options.min)/b;b=(this.result.to-this.options.min)/b;this.coords.p_single_real=this.toFixed(a);this.coords.p_from_real=this.toFixed(a);this.coords.p_to_real=this.toFixed(b);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real, +this.options.from_min,this.options.from_max);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);this.target=null;break;case "single":if(this.options.from_fixed)break;this.coords.p_single_real=this.convertToRealPercent(a);this.coords.p_single_real= +this.calcWithStep(this.coords.p_single_real);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case "from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(a);this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real>this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real); +this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case "to":if(this.options.to_fixed)break;this.coords.p_to_real=this.convertToRealPercent(a);this.coords.p_to_real= +this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real); +break;case "both":if(this.options.from_fixed||this.options.to_fixed)break;a=this.toFixed(a+.1*this.coords.p_handle);this.coords.p_from_real=this.convertToRealPercent(a)-this.coords.p_gap_left;this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real); +this.coords.p_to_real=this.convertToRealPercent(a)+this.coords.p_gap_right;this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case "both_one":if(!this.options.from_fixed&&!this.options.to_fixed){var d=this.convertToRealPercent(a); +a=this.result.to_percent-this.result.from_percent;var c=a/2,b=d-c,d=d+c;0>b&&(b=0,d=b+a);100<d&&(d=100,b=d-a);this.coords.p_from_real=this.calcWithStep(b);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.calcWithStep(d);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_fake= +this.convertToFakePercent(this.coords.p_to_real)}}"single"===this.options.type?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake- +this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to]));this.calcMinMax();this.calcLabels()}}},calcPointerPercent:function(){this.coords.w_rs?(0>this.coords.x_pointer||isNaN(this.coords.x_pointer)? +this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(a){return a/(100-this.coords.p_handle)*100},convertToFakePercent:function(a){return a/100*(100-this.coords.p_handle)},getHandleX:function(){var a=100-this.coords.p_handle,b=this.toFixed(this.coords.p_pointer-this.coords.p_gap);0>b?b=0:b>a&&(b=a);return b},calcHandlePercent:function(){this.coords.w_handle= +"single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1);this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(a){return"single"===this.options.type?"single":a>=this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2?this.options.to_fixed?"from":"to":this.options.from_fixed?"to":"from"},calcMinMax:function(){this.coords.w_rs&&(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max= +this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){this.coords.w_rs&&!this.options.hide_from_to&&("single"===this.options.type?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/2-this.labels.p_single_fake/2):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left= +this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left= +this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=this.toFixed(this.labels.p_single_left)),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake))},updateScene:function(){this.raf_id&& +(cancelAnimationFrame(this.raf_id),this.raf_id=null);clearTimeout(this.update_tm);this.update_tm=null;this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1);if(this.coords.w_rs){this.coords.w_rs!==this.coords.w_rs_old&&(this.target="base",this.is_resize=!0);if(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)this.setMinMax(), +this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow();if(this.coords.w_rs&&(this.dragging||this.force_redraw||this.is_key)){if(this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||this.is_key){this.drawLabels();this.$cache.bar[0].style.left=this.coords.p_bar_x+"%";this.$cache.bar[0].style.width=this.coords.p_bar_w+"%";if("single"===this.options.type)this.$cache.s_single[0].style.left= +this.coords.p_single_fake+"%",this.$cache.single[0].style.left=this.labels.p_single_left+"%",this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from);else{this.$cache.s_from[0].style.left=this.coords.p_from_fake+"%";this.$cache.s_to[0].style.left=this.coords.p_to_fake+"%";if(this.old_from!==this.result.from||this.force_redraw)this.$cache.from[0].style.left=this.labels.p_from_left+ +"%";if(this.old_to!==this.result.to||this.force_redraw)this.$cache.to[0].style.left=this.labels.p_to_left+"%";this.$cache.single[0].style.left=this.labels.p_single_left+"%";this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to);this.$cache.input.data("from",this.result.from);this.$cache.input.data("to",this.result.to)}this.old_from=== +this.result.from&&this.old_to===this.result.to||this.is_start||this.$cache.input.trigger("change");this.old_from=this.result.from;this.old_to=this.result.to;this.is_resize||this.is_update||this.is_start||this.is_finish||this.callOnChange();if(this.is_key||this.is_click)this.is_click=this.is_key=!1,this.callOnFinish();this.is_finish=this.is_resize=this.is_update=!1}this.force_redraw=this.is_click=this.is_key=this.is_start=!1}}},drawLabels:function(){if(this.options){var a=this.options.values.length, +b=this.options.p_values,d;if(!this.options.hide_from_to)if("single"===this.options.type)a=a?this.decorate(b[this.result.from]):this.decorate(this._prettify(this.result.from),this.result.from),this.$cache.single.html(a),this.calcLabels(),this.$cache.min[0].style.visibility=this.labels.p_single_left<this.labels.p_min+1?"hidden":"visible",this.$cache.max[0].style.visibility=this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?"hidden":"visible";else{a?(this.options.decorate_both? +(a=this.decorate(b[this.result.from]),a+=this.options.values_separator,a+=this.decorate(b[this.result.to])):a=this.decorate(b[this.result.from]+this.options.values_separator+b[this.result.to]),d=this.decorate(b[this.result.from]),b=this.decorate(b[this.result.to])):(this.options.decorate_both?(a=this.decorate(this._prettify(this.result.from),this.result.from),a+=this.options.values_separator,a+=this.decorate(this._prettify(this.result.to),this.result.to)):a=this.decorate(this._prettify(this.result.from)+ +this.options.values_separator+this._prettify(this.result.to),this.result.to),d=this.decorate(this._prettify(this.result.from),this.result.from),b=this.decorate(this._prettify(this.result.to),this.result.to));this.$cache.single.html(a);this.$cache.from.html(d);this.$cache.to.html(b);this.calcLabels();b=Math.min(this.labels.p_single_left,this.labels.p_from_left);a=this.labels.p_single_left+this.labels.p_single_fake;d=this.labels.p_to_left+this.labels.p_to_fake;var c=Math.max(a,d);this.labels.p_from_left+ +this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",this.result.from===this.result.to?("from"===this.target?this.$cache.from[0].style.visibility="visible":"to"===this.target?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",c=d):(this.$cache.from[0].style.visibility= +"hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",c=Math.max(a,d))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden");this.$cache.min[0].style.visibility=b<this.labels.p_min+1?"hidden":"visible";this.$cache.max[0].style.visibility=c>100-this.labels.p_max-1?"hidden":"visible"}}},drawShadow:function(){var a=this.options,b=this.$cache,d="number"===typeof a.from_min&& +!isNaN(a.from_min),c="number"===typeof a.from_max&&!isNaN(a.from_max),e="number"===typeof a.to_min&&!isNaN(a.to_min),f="number"===typeof a.to_max&&!isNaN(a.to_max);"single"===a.type?a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_single[0].style.display="block",b.shad_single[0].style.left=d+"%",b.shad_single[0].style.width= +c+"%"):b.shad_single[0].style.display="none":(a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_from[0].style.display="block",b.shad_from[0].style.left=d+"%",b.shad_from[0].style.width=c+"%"):b.shad_from[0].style.display="none",a.to_shadow&&(e||f)?(e=this.convertToPercent(e?a.to_min:a.min),a=this.convertToPercent(f? +a.to_max:a.max)-e,e=this.toFixed(e-this.coords.p_handle/100*e),a=this.toFixed(a-this.coords.p_handle/100*a),e+=this.coords.p_handle/2,b.shad_to[0].style.display="block",b.shad_to[0].style.left=e+"%",b.shad_to[0].style.width=a+"%"):b.shad_to[0].style.display="none")},callOnStart:function(){if(this.options.onStart&&"function"===typeof this.options.onStart)this.options.onStart(this.result)},callOnChange:function(){if(this.options.onChange&&"function"===typeof this.options.onChange)this.options.onChange(this.result)}, +callOnFinish:function(){if(this.options.onFinish&&"function"===typeof this.options.onFinish)this.options.onFinish(this.result)},callOnUpdate:function(){if(this.options.onUpdate&&"function"===typeof this.options.onUpdate)this.options.onUpdate(this.result)},toggleInput:function(){this.$cache.input.toggleClass("irs-hidden-input")},convertToPercent:function(a,b){var d=this.options.max-this.options.min;return d?this.toFixed((b?a:a-this.options.min)/(d/100)):(this.no_diapason=!0,0)},convertToValue:function(a){var b= +this.options.min,d=this.options.max,c=b.toString().split(".")[1],e=d.toString().split(".")[1],f,l,g=0,k=0;if(0===a)return this.options.min;if(100===a)return this.options.max;c&&(g=f=c.length);e&&(g=l=e.length);f&&l&&(g=f>=l?f:l);0>b&&(k=Math.abs(b),b=+(b+k).toFixed(g),d=+(d+k).toFixed(g));a=(d-b)/100*a+b;(b=this.options.step.toString().split(".")[1])?a=+a.toFixed(b.length):(a/=this.options.step,a*=this.options.step,a=+a.toFixed(0));k&&(a-=k);k=b?+a.toFixed(b.length):this.toFixed(a);k<this.options.min? +k=this.options.min:k>this.options.max&&(k=this.options.max);return k},calcWithStep:function(a){var b=Math.round(a/this.coords.p_step)*this.coords.p_step;100<b&&(b=100);100===a&&(b=100);return this.toFixed(b)},checkMinInterval:function(a,b,d){var c=this.options;if(!c.min_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a<c.min_interval&&(a=b-c.min_interval):a-b<c.min_interval&&(a=b+c.min_interval);return this.convertToPercent(a)},checkMaxInterval:function(a,b,d){var c= +this.options;if(!c.max_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a>c.max_interval&&(a=b-c.max_interval):a-b>c.max_interval&&(a=b+c.max_interval);return this.convertToPercent(a)},checkDiapason:function(a,b,d){a=this.convertToValue(a);var c=this.options;"number"!==typeof b&&(b=c.min);"number"!==typeof d&&(d=c.max);a<b&&(a=b);a>d&&(a=d);return this.convertToPercent(a)},toFixed:function(a){a=a.toFixed(9);return+a},_prettify:function(a){return this.options.prettify_enabled? +this.options.prettify&&"function"===typeof this.options.prettify?this.options.prettify(a):this.prettify(a):a},prettify:function(a){return a.toString().replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,"$1"+this.options.prettify_separator)},checkEdges:function(a,b){if(!this.options.force_edges)return this.toFixed(a);0>a?a=0:a>100-b&&(a=100-b);return this.toFixed(a)},validate:function(){var a=this.options,b=this.result,d=a.values,c=d.length,e,f;"string"===typeof a.min&&(a.min=+a.min);"string"===typeof a.max&& +(a.max=+a.max);"string"===typeof a.from&&(a.from=+a.from);"string"===typeof a.to&&(a.to=+a.to);"string"===typeof a.step&&(a.step=+a.step);"string"===typeof a.from_min&&(a.from_min=+a.from_min);"string"===typeof a.from_max&&(a.from_max=+a.from_max);"string"===typeof a.to_min&&(a.to_min=+a.to_min);"string"===typeof a.to_max&&(a.to_max=+a.to_max);"string"===typeof a.keyboard_step&&(a.keyboard_step=+a.keyboard_step);"string"===typeof a.grid_num&&(a.grid_num=+a.grid_num);a.max<a.min&&(a.max=a.min);if(c)for(a.p_values= +[],a.min=0,a.max=c-1,a.step=1,a.grid_num=a.max,a.grid_snap=!0,f=0;f<c;f++)e=+d[f],isNaN(e)?e=d[f]:(d[f]=e,e=this._prettify(e)),a.p_values.push(e);if("number"!==typeof a.from||isNaN(a.from))a.from=a.min;if("number"!==typeof a.to||isNaN(a.from))a.to=a.max;if("single"===a.type)a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max);else{if(a.from<a.min||a.from>a.max)a.from=a.min;if(a.to>a.max||a.to<a.min)a.to=a.max;a.from>a.to&&(a.from=a.to)}if("number"!==typeof a.step||isNaN(a.step)||!a.step||0>a.step)a.step= +1;if("number"!==typeof a.keyboard_step||isNaN(a.keyboard_step)||!a.keyboard_step||0>a.keyboard_step)a.keyboard_step=5;"number"===typeof a.from_min&&a.from<a.from_min&&(a.from=a.from_min);"number"===typeof a.from_max&&a.from>a.from_max&&(a.from=a.from_max);"number"===typeof a.to_min&&a.to<a.to_min&&(a.to=a.to_min);"number"===typeof a.to_max&&a.from>a.to_max&&(a.to=a.to_max);if(b){b.min!==a.min&&(b.min=a.min);b.max!==a.max&&(b.max=a.max);if(b.from<b.min||b.from>b.max)b.from=a.from;if(b.to<b.min||b.to> +b.max)b.to=a.to}if("number"!==typeof a.min_interval||isNaN(a.min_interval)||!a.min_interval||0>a.min_interval)a.min_interval=0;if("number"!==typeof a.max_interval||isNaN(a.max_interval)||!a.max_interval||0>a.max_interval)a.max_interval=0;a.min_interval&&a.min_interval>a.max-a.min&&(a.min_interval=a.max-a.min);a.max_interval&&a.max_interval>a.max-a.min&&(a.max_interval=a.max-a.min)},decorate:function(a,b){var d="",c=this.options;c.prefix&&(d+=c.prefix);d+=a;c.max_postfix&&(c.values.length&&a===c.p_values[c.max]? +(d+=c.max_postfix,c.postfix&&(d+=" ")):b===c.max&&(d+=c.max_postfix,c.postfix&&(d+=" ")));c.postfix&&(d+=c.postfix);return d},updateFrom:function(){this.result.from=this.options.from;this.result.from_percent=this.convertToPercent(this.result.from);this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to;this.result.to_percent=this.convertToPercent(this.result.to);this.options.values&&(this.result.to_value=this.options.values[this.result.to])}, +updateResult:function(){this.result.min=this.options.min;this.result.max=this.options.max;this.updateFrom();this.updateTo()},appendGrid:function(){if(this.options.grid){var a=this.options,b,d;b=a.max-a.min;var c=a.grid_num,e=0,f=0,g=4,h,k,m=0,n="";this.calcGridMargin();a.grid_snap?(c=b/a.step,e=this.toFixed(a.step/(b/100))):e=this.toFixed(100/c);4<c&&(g=3);7<c&&(g=2);14<c&&(g=1);28<c&&(g=0);for(b=0;b<c+1;b++){h=g;f=this.toFixed(e*b);100<f&&(f=100,h-=2,0>h&&(h=0));this.coords.big[b]=f;k=(f-e*(b-1))/ +(h+1);for(d=1;d<=h&&0!==f;d++)m=this.toFixed(f-k*d),n+='<span class="irs-grid-pol small" style="left: '+m+'%"></span>';n+='<span class="irs-grid-pol" style="left: '+f+'%"></span>';m=this.convertToValue(f);m=a.values.length?a.p_values[m]:this._prettify(m);n+='<span class="irs-grid-text js-grid-text-'+b+'" style="left: '+f+'%">'+m+"</span>"}this.coords.big_num=Math.ceil(c+1);this.$cache.cont.addClass("irs-with-grid");this.$cache.grid.html(n);this.cacheGridLabels()}},cacheGridLabels:function(){var a, +b,d=this.coords.big_num;for(b=0;b<d;b++)a=this.$cache.grid.find(".js-grid-text-"+b),this.$cache.grid_labels.push(a);this.calcGridLabels()},calcGridLabels:function(){var a,b;b=[];var d=[],c=this.coords.big_num;for(a=0;a<c;a++)this.coords.big_w[a]=this.$cache.grid_labels[a].outerWidth(!1),this.coords.big_p[a]=this.toFixed(this.coords.big_w[a]/this.coords.w_rs*100),this.coords.big_x[a]=this.toFixed(this.coords.big_p[a]/2),b[a]=this.toFixed(this.coords.big[a]-this.coords.big_x[a]),d[a]=this.toFixed(b[a]+ +this.coords.big_p[a]);this.options.force_edges&&(b[0]<-this.coords.grid_gap&&(b[0]=-this.coords.grid_gap,d[0]=this.toFixed(b[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),d[c-1]>100+this.coords.grid_gap&&(d[c-1]=100+this.coords.grid_gap,b[c-1]=this.toFixed(d[c-1]-this.coords.big_p[c-1]),this.coords.big_x[c-1]=this.toFixed(this.coords.big_p[c-1]-this.coords.grid_gap)));this.calcGridCollision(2,b,d);this.calcGridCollision(4,b,d);for(a=0;a<c;a++)b=this.$cache.grid_labels[a][0], +b.style.marginLeft=-this.coords.big_x[a]+"%"},calcGridCollision:function(a,b,d){var c,e,f,g=this.coords.big_num;for(c=0;c<g;c+=a){e=c+a/2;if(e>=g)break;f=this.$cache.grid_labels[e][0];f.style.visibility=d[c]<=b[e]?"visible":"hidden"}},calcGridMargin:function(){this.options.grid_margin&&(this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&(this.coords.w_handle="single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1),this.coords.p_handle=this.toFixed(this.coords.w_handle/ +this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+"%",this.$cache.grid[0].style.left=this.coords.grid_gap+"%"))},update:function(a){this.input&&(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.options=g.extend(this.options,a),this.validate(),this.updateResult(a),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){this.input&&(this.updateResult(), +this.update())},destroy:function(){this.input&&(this.toggleInput(),this.$cache.input.prop("readonly",!1),g.data(this.input,"ionRangeSlider",null),this.remove(),this.options=this.input=null)}};g.fn.ionRangeSlider=function(a){return this.each(function(){g.data(this,"ionRangeSlider")||g.data(this,"ionRangeSlider",new r(this,a,u++))})};(function(){for(var a=0,b=["ms","moz","webkit","o"],d=0;d<b.length&&!h.requestAnimationFrame;++d)h.requestAnimationFrame=h[b[d]+"RequestAnimationFrame"],h.cancelAnimationFrame= +h[b[d]+"CancelAnimationFrame"]||h[b[d]+"CancelRequestAnimationFrame"];h.requestAnimationFrame||(h.requestAnimationFrame=function(b,d){var f=(new Date).getTime(),g=Math.max(0,16-(f-a)),p=h.setTimeout(function(){b(f+g)},g);a=f+g;return p});h.cancelAnimationFrame||(h.cancelAnimationFrame=function(a){clearTimeout(a)})})()}); diff --git a/plugins/ion-rangeslider/ion.rangeSlider.skinFlat.css b/plugins/ion-rangeslider/ion.rangeSlider.skinFlat.css new file mode 100644 index 0000000..e8687f6 --- /dev/null +++ b/plugins/ion-rangeslider/ion.rangeSlider.skinFlat.css @@ -0,0 +1,106 @@ +/* Ion.RangeSlider, Flat UI Skin +// css version 2.0.3 +// © Denis Ineshin, 2014 https://github.com/IonDen +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// Skin details */ + +.irs-line-mid, +.irs-line-left, +.irs-line-right, +.irs-bar, +.irs-bar-edge, +.irs-slider { + background: url(sprite-skin-flat.png) repeat-x; +} + +.irs { + height: 40px; +} +.irs-with-grid { + height: 60px; +} +.irs-line { + height: 12px; top: 25px; +} + .irs-line-left { + height: 12px; + background-position: 0 -30px; + } + .irs-line-mid { + height: 12px; + background-position: 0 0; + } + .irs-line-right { + height: 12px; + background-position: 100% -30px; + } + +.irs-bar { + height: 12px; top: 25px; + background-position: 0 -60px; +} + .irs-bar-edge { + top: 25px; + height: 12px; width: 9px; + background-position: 0 -90px; + } + +.irs-shadow { + height: 3px; top: 34px; + background: #000; + opacity: 0.25; +} +.lt-ie9 .irs-shadow { + filter: alpha(opacity=25); +} + +.irs-slider { + width: 16px; height: 18px; + top: 22px; + background-position: 0 -120px; +} +.irs-slider.state_hover, .irs-slider:hover { + background-position: 0 -150px; +} + +.irs-min, .irs-max { + color: #999; + font-size: 10px; line-height: 1.333; + text-shadow: none; + top: 0; padding: 1px 3px; + background: #e1e4e9; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.irs-from, .irs-to, .irs-single { + color: #fff; + font-size: 10px; line-height: 1.333; + text-shadow: none; + padding: 1px 5px; + background: #ed5565; + -moz-border-radius: 4px; + border-radius: 4px; +} +.irs-from:after, .irs-to:after, .irs-single:after { + position: absolute; display: block; content: ""; + bottom: -6px; left: 50%; + width: 0; height: 0; + margin-left: -3px; + overflow: hidden; + border: 3px solid transparent; + border-top-color: #ed5565; +} + + +.irs-grid-pol { + background: #e1e4e9; +} +.irs-grid-text { + color: #999; +} + +.irs-disabled { +} diff --git a/plugins/ion-rangeslider/ion.rangeSlider.skinModern.css b/plugins/ion-rangeslider/ion.rangeSlider.skinModern.css new file mode 100644 index 0000000..163cd40 --- /dev/null +++ b/plugins/ion-rangeslider/ion.rangeSlider.skinModern.css @@ -0,0 +1,116 @@ +/* Ion.RangeSlider, Modern Skin +// css version 2.0.3 +// © Denis Ineshin, 2014 https://github.com/IonDen +// ===================================================================================================================*/ + +/* ===================================================================================================================== +// Skin details */ + +.irs-line-mid, +.irs-line-left, +.irs-line-right, +.irs-bar, +.irs-bar-edge, +.irs-slider { + background: url(sprite-skin-modern.png) repeat-x; +} + +.irs { + height: 50px; +} +.irs-with-grid { + height: 70px; +} +.irs-line { + height: 6px; top: 25px; +} + .irs-line-left { + height: 6px; + background-position: 0 -30px; + } + .irs-line-mid { + height: 6px; + background-position: 0 0; + } + .irs-line-right { + height: 6px; + background-position: 100% -30px; + } + +.irs-bar { + height: 6px; top: 25px; + background-position: 0 -60px; +} + .irs-bar-edge { + top: 25px; + height: 6px; width: 6px; + background-position: 0 -90px; + } + +.irs-shadow { + height: 5px; top: 25px; + background: #000; + opacity: 0.25; +} +.lt-ie9 .irs-shadow { + filter: alpha(opacity=25); +} + +.irs-slider { + width: 11px; height: 18px; + top: 31px; + background-position: 0 -120px; +} +.irs-slider.state_hover, .irs-slider:hover { + background-position: 0 -150px; +} + +.irs-min, .irs-max { + color: #999; + font-size: 10px; line-height: 1.333; + text-shadow: none; + top: 0; padding: 1px 3px; + background: #e1e4e9; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.irs-from, .irs-to, .irs-single { + color: #fff; + font-size: 10px; line-height: 1.333; + text-shadow: none; + padding: 1px 5px; + background: #26a69a; + -moz-border-radius: 4px; + border-radius: 4px; +} +.irs-from:after, .irs-to:after, .irs-single:after { + position: absolute; display: block; content: ""; + bottom: -6px; left: 50%; + width: 0; height: 0; + margin-left: -3px; + overflow: hidden; + border: 3px solid transparent; + border-top-color: #26a69a; +} + +.irs-grid { + height: 34px; +} +.irs-grid-pol { + background: #c0c0c0; +} +.irs-grid-text { + bottom: 12px; + color: #c0c0c0; +} + +.irs-disable-mask { + +} +.irs-disabled { + +} +.lt-ie9 .irs-disabled { + +} diff --git a/plugins/ion-rangeslider/sprite-skin-flat.png b/plugins/ion-rangeslider/sprite-skin-flat.png new file mode 100644 index 0000000..40e2aa3 Binary files /dev/null and b/plugins/ion-rangeslider/sprite-skin-flat.png differ diff --git a/plugins/ion-rangeslider/sprite-skin-modern.png b/plugins/ion-rangeslider/sprite-skin-modern.png new file mode 100644 index 0000000..b32fae4 Binary files /dev/null and b/plugins/ion-rangeslider/sprite-skin-modern.png differ diff --git a/plugins/isotope/js/isotope.pkgd.min.js b/plugins/isotope/js/isotope.pkgd.min.js new file mode 100644 index 0000000..ae734b7 --- /dev/null +++ b/plugins/isotope/js/isotope.pkgd.min.js @@ -0,0 +1,12 @@ +/*! + * Isotope PACKAGED v3.0.1 + * + * Licensed GPLv3 for open source use + * or Isotope Commercial License for commercial use + * + * http://isotope.metafizzy.co + * Copyright 2016 Metafizzy + */ + +!function(t,e){"use strict";"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,s,a){function u(t,e,n){var o,s="$()."+i+'("'+e+'")';return t.each(function(t,u){var h=a.data(u,i);if(!h)return void r(i+" not initialized. Cannot call methods, i.e. "+s);var d=h[e];if(!d||"_"==e.charAt(0))return void r(s+" is not a valid method");var l=d.apply(h,n);o=void 0===o?l:o}),void 0!==o?o:t}function h(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new s(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(s.prototype.option||(s.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return u(this,t,e)}return h(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,s=t.console,r="undefined"==typeof s?function(){}:function(t){s.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=0,o=i[n];e=e||[];for(var s=this._onceEvents&&this._onceEvents[t];o;){var r=s&&s[o];r&&(this.off(t,o),delete s[o]),o.apply(this,e),n+=r?0:1,o=i[n]}return this}},t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("get-size/get-size",[],function(){return e()}):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;h>e;e++){var i=u[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s.isBoxSizeOuter=r=200==t(o.width),i.removeChild(e)}}function s(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var s=n(e);if("none"==s.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==s.boxSizing,l=0;h>l;l++){var f=u[l],c=s[f],m=parseFloat(c);a[f]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,y=a.paddingTop+a.paddingBottom,g=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,I=a.borderTopWidth+a.borderBottomWidth,z=d&&r,x=t(s.width);x!==!1&&(a.width=x+(z?0:p+_));var S=t(s.height);return S!==!1&&(a.height=S+(z?0:y+I)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(y+I),a.outerWidth=a.width+g,a.outerHeight=a.height+v,a}}var r,a="undefined"==typeof console?e:function(t){console.error(t)},u=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],h=u.length,d=!1;return s}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e},i.makeArray=function(t){var e=[];if(Array.isArray(t))e=t;else if(t&&"number"==typeof t.length)for(var i=0;i<t.length;i++)e.push(t[i]);else e.push(t);return e},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),s=0;s<i.length;s++)o.push(i[s])}}),o},i.debounceMethod=function(t,e,i){var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];t&&clearTimeout(t);var e=arguments,s=this;this[o]=setTimeout(function(){n.apply(s,e),delete s[o]},i||100)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?t():document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var n=t.console;return i.htmlInit=function(e,o){i.docReady(function(){var s=i.toDashed(o),r="data-"+s,a=document.querySelectorAll("["+r+"]"),u=document.querySelectorAll(".js-"+s),h=i.makeArray(a).concat(i.makeArray(u)),d=r+"-options",l=t.jQuery;h.forEach(function(t){var i,s=t.getAttribute(r)||t.getAttribute(d);try{i=s&&JSON.parse(s)}catch(a){return void(n&&n.error("Error parsing "+r+" on "+t.className+": "+a))}var u=new e(t,i);l&&l.data(t,o,u)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var s=document.documentElement.style,r="string"==typeof s.transition?"transition":"WebkitTransition",a="string"==typeof s.transform?"transform":"WebkitTransform",u={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[r],h={transform:a,transition:r,transitionDuration:r+"Duration",transitionProperty:r+"Property",transitionDelay:r+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=h[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],s=this.layout.size,r=-1!=n.indexOf("%")?parseFloat(n)/100*s.width:parseInt(n,10),a=-1!=o.indexOf("%")?parseFloat(o)/100*s.height:parseInt(o,10);r=isNaN(r)?0:r,a=isNaN(a)?0:a,r-=e?s.paddingLeft:s.paddingRight,a-=i?s.paddingTop:s.paddingBottom,this.position.x=r,this.position.y=a},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",s=i?"left":"right",r=i?"right":"left",a=this.position.x+t[o];e[s]=this.getXValue(a),e[r]="";var u=n?"paddingTop":"paddingBottom",h=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[u];e[h]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=parseInt(t,10),s=parseInt(e,10),r=o===this.position.x&&s===this.position.y;if(this.setPosition(t,e),r&&!this.isTransitioning)return void this.layoutPosition();var a=t-i,u=e-n,h={};h.transform=this.getTranslate(a,u),this.transition({to:h,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseInt(t,10),this.position.y=parseInt(e,10)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(u,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var f={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=f[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(u,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var c={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(c)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return r&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,s){return e(t,i,n,o,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function s(t,e){var i=n.getQueryElement(t);if(!i)return void(u&&u.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,h&&(this.$element=h(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,f[o]=this,this._create();var s=this._getOption("initLayout");s&&this.layout()}function r(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var u=t.console,h=t.jQuery,d=function(){},l=0,f={};s.namespace="outlayer",s.Item=o,s.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var c=s.prototype;n.extend(c,e.prototype),c.option=function(t){n.extend(this.options,t)},c._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},s.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},c._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},c.reloadItems=function(){this.items=this._itemize(this.element.children)},c._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var s=e[o],r=new i(s,this);n.push(r)}return n},c._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},c.getItemElements=function(){return this.items.map(function(t){return t.element})},c.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},c._init=c.layout,c._resetLayout=function(){this.getSize()},c.getSize=function(){this.size=i(this.element)},c._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},c.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},c._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},c._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},c._getItemLayoutPosition=function(){return{x:0,y:0}},c._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},c.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},c._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},c._postLayout=function(){this.resizeContainer()},c.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},c._getContainerSize=d,c._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},c._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){r++,r==s&&i()}var o=this,s=e.length;if(!e||!s)return void i();var r=0;e.forEach(function(e){e.once(t,n)})},c.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),h)if(this.$element=this.$element||h(this.element),e){var o=h.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},c.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},c.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},c.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},c.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},c._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},c._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},c._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},c._manageStamp=d,c._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),s={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return s},c.handleEvent=n.handleEvent,c.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},c.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},c.onresize=function(){this.resize()},n.debounceMethod(s,"onresize",100),c.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},c.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},c.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},c.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},c.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},c.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},c.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},c.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},c.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},c.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},c.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},c.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},c.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete f[e],delete this.element.outlayerGUID,h&&h.removeData(this.element,this.constructor.namespace)},s.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&f[e]},s.create=function(t,e){var i=r(s);return i.defaults=n.extend({},s.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},s.compatOptions),i.namespace=t,i.data=s.data,i.Item=r(o),n.htmlInit(i,t),h&&h.bridget&&h.bridget(t,i),i};var m={ms:1,s:1e3};return s.Item=o,s}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/item",["outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.Item=e(t.Outlayer))}(window,function(t){"use strict";function e(){t.Item.apply(this,arguments)}var i=e.prototype=Object.create(t.Item.prototype),n=i._create;i._create=function(){this.id=this.layout.itemGUID++,n.call(this),this.sortData={}},i.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var t=this.layout.options.getSortData,e=this.layout._sorters;for(var i in t){var n=e[i];this.sortData[i]=n(this.element,this)}}};var o=i.destroy;return i.destroy=function(){o.apply(this,arguments),this.css({display:""})},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-mode",["get-size/get-size","outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("get-size"),require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.LayoutMode=e(t.getSize,t.Outlayer))}(window,function(t,e){"use strict";function i(t){this.isotope=t,t&&(this.options=t.options[this.namespace],this.element=t.element,this.items=t.filteredItems,this.size=t.size)}var n=i.prototype,o=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout","_getOption"];return o.forEach(function(t){n[t]=function(){return e.prototype[t].apply(this.isotope,arguments)}}),n.needsVerticalResizeLayout=function(){var e=t(this.isotope.element),i=this.isotope.size&&e;return i&&e.innerHeight!=this.isotope.size.innerHeight},n._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},n.getColumnWidth=function(){this.getSegmentSize("column","Width")},n.getRowHeight=function(){this.getSegmentSize("row","Height")},n.getSegmentSize=function(t,e){var i=t+e,n="outer"+e;if(this._getMeasurement(i,n),!this[i]){var o=this.getFirstItemSize();this[i]=o&&o[n]||this.isotope.size["inner"+e]}},n.getFirstItemSize=function(){var e=this.isotope.filteredItems[0];return e&&e.element&&t(e.element)},n.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},n.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},i.modes={},i.create=function(t,e){function o(){i.apply(this,arguments)}return o.prototype=Object.create(n),o.prototype.constructor=o,e&&(o.options=e),o.prototype.namespace=t,i.modes[t]=o,o},i}),function(t,e){"function"==typeof define&&define.amd?define("masonry/masonry",["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");return i.compatOptions.fitWidth="isFitWidth",i.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0},i.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,s=o/n,r=n-o%n,a=r&&1>r?"round":"floor";s=Math[a](s),this.cols=Math.max(s,1)},i.prototype.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},i.prototype._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this._getColGroup(n),s=Math.min.apply(Math,o),r=o.indexOf(s),a={x:this.columnWidth*r,y:s},u=s+t.size.outerHeight,h=this.cols+1-o.length,d=0;h>d;d++)this.colYs[r+d]=u;return a},i.prototype._getColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++){var o=this.colYs.slice(n,n+t);e[n]=Math.max.apply(Math,o)}return e},i.prototype._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),s=o?n.left:n.right,r=s+i.outerWidth,a=Math.floor(s/this.columnWidth);a=Math.max(0,a);var u=Math.floor(r/this.columnWidth);u-=r%this.columnWidth?0:1,u=Math.min(this.cols-1,u);for(var h=this._getOption("originTop"),d=(h?n.top:n.bottom)+i.outerHeight,l=a;u>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},i.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},i.prototype._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},i.prototype.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/masonry",["../layout-mode","masonry/masonry"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode"),require("masonry-layout")):e(t.Isotope.LayoutMode,t.Masonry)}(window,function(t,e){"use strict";var i=t.create("masonry"),n=i.prototype,o={_getElementOffset:!0,layout:!0,_getMeasurement:!0};for(var s in e.prototype)o[s]||(n[s]=e.prototype[s]);var r=n.measureColumns;n.measureColumns=function(){this.items=this.isotope.filteredItems,r.call(this)};var a=n._getOption;return n._getOption=function(t){return"fitWidth"==t?void 0!==this.options.isFitWidth?this.options.isFitWidth:this.options.fitWidth:a.apply(this.isotope,arguments)},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/fit-rows",["../layout-mode"],e):"object"==typeof exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("fitRows"),i=e.prototype;return i._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth")},i._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth+this.gutter,i=this.isotope.size.innerWidth+this.gutter;0!==this.x&&e+this.x>i&&(this.x=0,this.y=this.maxY);var n={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+t.size.outerHeight),this.x+=e,n},i._getContainerSize=function(){return{height:this.maxY}},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope/js/layout-modes/vertical",["../layout-mode"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("vertical",{horizontalAlignment:0}),i=e.prototype;return i._resetLayout=function(){this.y=0},i._getItemLayoutPosition=function(t){t.getSize();var e=(this.isotope.size.innerWidth-t.size.outerWidth)*this.options.horizontalAlignment,i=this.y;return this.y+=t.size.outerHeight,{x:e,y:i}},i._getContainerSize=function(){return{height:this.y}},e}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","desandro-matches-selector/matches-selector","fizzy-ui-utils/utils","isotope/js/item","isotope/js/layout-mode","isotope/js/layout-modes/masonry","isotope/js/layout-modes/fit-rows","isotope/js/layout-modes/vertical"],function(i,n,o,s,r,a){return e(t,i,n,o,s,r,a)}):"object"==typeof module&&module.exports?module.exports=e(t,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("isotope/js/item"),require("isotope/js/layout-mode"),require("isotope/js/layout-modes/masonry"),require("isotope/js/layout-modes/fit-rows"),require("isotope/js/layout-modes/vertical")):t.Isotope=e(t,t.Outlayer,t.getSize,t.matchesSelector,t.fizzyUIUtils,t.Isotope.Item,t.Isotope.LayoutMode)}(window,function(t,e,i,n,o,s,r){function a(t,e){return function(i,n){for(var o=0;o<t.length;o++){var s=t[o],r=i.sortData[s],a=n.sortData[s];if(r>a||a>r){var u=void 0!==e[s]?e[s]:e,h=u?1:-1;return(r>a?1:-1)*h}}return 0}}var u=t.jQuery,h=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^\s+|\s+$/g,"")},d=e.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});d.Item=s,d.LayoutMode=r;var l=d.prototype;l._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),e.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var t in r.modes)this._initLayoutMode(t)},l.reloadItems=function(){this.itemGUID=0,e.prototype.reloadItems.call(this)},l._itemize=function(){for(var t=e.prototype._itemize.apply(this,arguments),i=0;i<t.length;i++){var n=t[i];n.id=this.itemGUID++}return this._updateItemsSortData(t),t},l._initLayoutMode=function(t){var e=r.modes[t],i=this.options[t]||{};this.options[t]=e.options?o.extend(e.options,i):i,this.modes[t]=new e(this)},l.layout=function(){return!this._isLayoutInited&&this._getOption("initLayout")?void this.arrange():void this._layout()},l._layout=function(){var t=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,t),this._isLayoutInited=!0},l.arrange=function(t){this.option(t),this._getIsInstant();var e=this._filter(this.items);this.filteredItems=e.matches,this._bindArrangeComplete(),this._isInstant?this._noTransition(this._hideReveal,[e]):this._hideReveal(e),this._sort(),this._layout()},l._init=l.arrange,l._hideReveal=function(t){this.reveal(t.needReveal),this.hide(t.needHide)},l._getIsInstant=function(){var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;return this._isInstant=e,e},l._bindArrangeComplete=function(){function t(){e&&i&&n&&o.dispatchEvent("arrangeComplete",null,[o.filteredItems])}var e,i,n,o=this;this.once("layoutComplete",function(){e=!0,t()}),this.once("hideComplete",function(){i=!0,t()}),this.once("revealComplete",function(){n=!0,t()})},l._filter=function(t){var e=this.options.filter;e=e||"*";for(var i=[],n=[],o=[],s=this._getFilterTest(e),r=0;r<t.length;r++){var a=t[r];if(!a.isIgnored){var u=s(a);u&&i.push(a),u&&a.isHidden?n.push(a):u||a.isHidden||o.push(a)}}return{matches:i,needReveal:n,needHide:o}},l._getFilterTest=function(t){return u&&this.options.isJQueryFiltering?function(e){return u(e.element).is(t)}:"function"==typeof t?function(e){return t(e.element)}:function(e){return n(e.element,t)}},l.updateSortData=function(t){var e;t?(t=o.makeArray(t),e=this.getItems(t)):e=this.items,this._getSorters(),this._updateItemsSortData(e)},l._getSorters=function(){var t=this.options.getSortData;for(var e in t){var i=t[e];this._sorters[e]=f(i)}},l._updateItemsSortData=function(t){for(var e=t&&t.length,i=0;e&&e>i;i++){var n=t[i];n.updateSortData()}};var f=function(){function t(t){if("string"!=typeof t)return t;var i=h(t).split(" "),n=i[0],o=n.match(/^\[(.+)\]$/),s=o&&o[1],r=e(s,n),a=d.sortDataParsers[i[1]]; +return t=a?function(t){return t&&a(r(t))}:function(t){return t&&r(t)}}function e(t,e){return t?function(e){return e.getAttribute(t)}:function(t){var i=t.querySelector(e);return i&&i.textContent}}return t}();d.sortDataParsers={parseInt:function(t){return parseInt(t,10)},parseFloat:function(t){return parseFloat(t)}},l._sort=function(){var t=this.options.sortBy;if(t){var e=[].concat.apply(t,this.sortHistory),i=a(e,this.options.sortAscending);this.filteredItems.sort(i),t!=this.sortHistory[0]&&this.sortHistory.unshift(t)}},l._mode=function(){var t=this.options.layoutMode,e=this.modes[t];if(!e)throw new Error("No layout mode: "+t);return e.options=this.options[t],e},l._resetLayout=function(){e.prototype._resetLayout.call(this),this._mode()._resetLayout()},l._getItemLayoutPosition=function(t){return this._mode()._getItemLayoutPosition(t)},l._manageStamp=function(t){this._mode()._manageStamp(t)},l._getContainerSize=function(){return this._mode()._getContainerSize()},l.needsResizeLayout=function(){return this._mode().needsResizeLayout()},l.appended=function(t){var e=this.addItems(t);if(e.length){var i=this._filterRevealAdded(e);this.filteredItems=this.filteredItems.concat(i)}},l.prepended=function(t){var e=this._itemize(t);if(e.length){this._resetLayout(),this._manageStamps();var i=this._filterRevealAdded(e);this.layoutItems(this.filteredItems),this.filteredItems=i.concat(this.filteredItems),this.items=e.concat(this.items)}},l._filterRevealAdded=function(t){var e=this._filter(t);return this.hide(e.needHide),this.reveal(e.matches),this.layoutItems(e.matches,!0),e.matches},l.insert=function(t){var e=this.addItems(t);if(e.length){var i,n,o=e.length;for(i=0;o>i;i++)n=e[i],this.element.appendChild(n.element);var s=this._filter(e).matches;for(i=0;o>i;i++)e[i].isLayoutInstant=!0;for(this.arrange(),i=0;o>i;i++)delete e[i].isLayoutInstant;this.reveal(s)}};var c=l.remove;return l.remove=function(t){t=o.makeArray(t);var e=this.getItems(t);c.call(this,t);for(var i=e&&e.length,n=0;i&&i>n;n++){var s=e[n];o.removeFrom(this.filteredItems,s)}},l.shuffle=function(){for(var t=0;t<this.items.length;t++){var e=this.items[t];e.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},l._noTransition=function(t,e){var i=this.options.transitionDuration;this.options.transitionDuration=0;var n=t.apply(this,e);return this.options.transitionDuration=i,n},l.getFilteredItemElements=function(){return this.filteredItems.map(function(t){return t.element})},d}); \ No newline at end of file diff --git a/plugins/jquery-datatables-editable/dataTables.bootstrap.js b/plugins/jquery-datatables-editable/dataTables.bootstrap.js new file mode 100644 index 0000000..2c6959d --- /dev/null +++ b/plugins/jquery-datatables-editable/dataTables.bootstrap.js @@ -0,0 +1,186 @@ +/*! DataTables Bootstrap 3 integration + * ©2011-2014 SpryMedia Ltd - datatables.net/license + */ + +/** + * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and + * DataTables 1.10 or newer. + * + * This file sets the defaults and adds options to DataTables to style its + * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap + * for further information. + */ +(function(window, document, undefined){ + +var factory = function( $, DataTable ) { +"use strict"; + + +/* Set the defaults for DataTables initialisation */ +$.extend( true, DataTable.defaults, { + dom: + "<'row'<'col-sm-6'l><'col-sm-6'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-6'i><'col-sm-6'p>>", + renderer: 'bootstrap' +} ); + + +/* Default class modification */ +$.extend( DataTable.ext.classes, { + sWrapper: "dataTables_wrapper form-inline dt-bootstrap", + sFilterInput: "form-control input-sm", + sLengthSelect: "form-control input-sm" +} ); + + +/* Bootstrap paging button renderer */ +DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { + var api = new DataTable.Api( settings ); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var btnDisplay, btnClass; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + e.preventDefault(); + if ( !$(e.currentTarget).hasClass('disabled') ) { + api.page( e.data.action ).draw( false ); + } + }; + + for ( i=0, ien=buttons.length ; i<ien ; i++ ) { + button = buttons[i]; + + if ( $.isArray( button ) ) { + attach( container, button ); + } + else { + btnDisplay = ''; + btnClass = ''; + + switch ( button ) { + case 'ellipsis': + btnDisplay = '&hellip;'; + btnClass = 'disabled'; + break; + + case 'first': + btnDisplay = lang.sFirst; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + 'active' : ''; + break; + } + + if ( btnDisplay ) { + node = $('<li>', { + 'class': classes.sPageButton+' '+btnClass, + 'aria-controls': settings.sTableId, + 'tabindex': settings.iTabIndex, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .append( $('<a>', { + 'href': '#' + } ) + .html( btnDisplay ) + ) + .appendTo( container ); + + settings.oApi._fnBindAction( + node, {action: button}, clickHandler + ); + } + } + } + }; + + attach( + $(host).empty().html('<ul class="pagination"/>').children('ul'), + buttons + ); +}; + + +/* + * TableTools Bootstrap compatibility + * Required TableTools 2.1+ + */ +if ( DataTable.TableTools ) { + // Set the classes that TableTools uses to something suitable for Bootstrap + $.extend( true, DataTable.TableTools.classes, { + "container": "DTTT btn-group", + "buttons": { + "normal": "btn btn-default", + "disabled": "disabled" + }, + "collection": { + "container": "DTTT_dropdown dropdown-menu", + "buttons": { + "normal": "", + "disabled": "disabled" + } + }, + "print": { + "info": "DTTT_print_info" + }, + "select": { + "row": "active" + } + } ); + + // Have the collection use a bootstrap compatible drop down + $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { + "collection": { + "container": "ul", + "button": "li", + "liner": "a" + } + } ); +} + +}; // /factory + + +// Define as an AMD module if possible +if ( typeof define === 'function' && define.amd ) { + define( ['jquery', 'datatables'], factory ); +} +else if ( typeof exports === 'object' ) { + // Node/CommonJS + factory( require('jquery'), require('datatables') ); +} +else if ( jQuery ) { + // Otherwise simply initialise as normal, stopping multiple evaluation + factory( jQuery, jQuery.fn.dataTable ); +} + + +})(window, document); + diff --git a/plugins/jquery-datatables-editable/datatables.css b/plugins/jquery-datatables-editable/datatables.css new file mode 100644 index 0000000..bb4ae7c --- /dev/null +++ b/plugins/jquery-datatables-editable/datatables.css @@ -0,0 +1,333 @@ +div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} + +div.dataTables_length select { + width: 75px; + display: inline-block; +} + +div.dataTables_filter { + text-align: right; +} + +div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} + +div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; +} + +div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} + +div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +@media screen and (max-width: 767px) { + div.dataTables_length, + div.dataTables_filter, + div.dataTables_info, + div.dataTables_paginate { + text-align: center; + } +} + + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} + +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after { + position: absolute; + top: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; /* sort-by-attributes-alt */ +} + +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +table.dataTable thead > tr > th { + padding-left: 8px; + padding-right: 30px; +} + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column + width calculations when using scrolling impossible to align columns. We have + to use separate + */ +table.table-bordered.dataTable { + border-collapse: separate !important; +} +table.table-bordered thead th, +table.table-bordered thead td { + border-left-width: 0; + border-top-width: 0; +} +table.table-bordered tbody th, +table.table-bordered tbody td { + border-left-width: 0; + border-bottom-width: 0; +} +table.table-bordered th:last-child, +table.table-bordered td:last-child { + border-right-width: 0; +} +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + + + + +/* + * TableTools styles + */ +.table.dataTable tbody tr.active td, +.table.dataTable tbody tr.active th { + background-color: #08C; + color: white; +} + +.table.dataTable tbody tr.active:hover td, +.table.dataTable tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table.dataTable tbody tr.active th > a, +.table.dataTable tbody tr.active td > a { + color: white; +} + +.table-striped.dataTable tbody tr.active:nth-child(odd) td, +.table-striped.dataTable tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ +div.DTTT_print_info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + height: 150px; + margin-left: -200px; + margin-top: -75px; + text-align: center; + color: #333; + padding: 10px 30px; + opacity: 0.95; + + background-color: white; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 60px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + padding-bottom: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); + background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); + background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); +} + + + +/* + * FixedColumns styles + */ +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; + margin-bottom: 0; +} + +div.DTFC_RightHeadWrapper table , +div.DTFC_LeftHeadWrapper table { + border-bottom: none !important; + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; + margin-top: 0 !important; +} + + +/* + * FixedHeader styles + */ +div.FixedHeader_Cloned table { + margin: 0 !important +} diff --git a/plugins/jquery-datatables-editable/jquery.dataTables.js b/plugins/jquery-datatables-editable/jquery.dataTables.js new file mode 100644 index 0000000..2a9bdb3 --- /dev/null +++ b/plugins/jquery-datatables-editable/jquery.dataTables.js @@ -0,0 +1,14951 @@ +/*! DataTables 1.10.7 + * ©2008-2014 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary DataTables + * @description Paginate, search and order HTML tables + * @version 1.10.7 + * @file jquery.dataTables.js + * @author SpryMedia Ltd (www.sprymedia.co.uk) + * @contact www.sprymedia.co.uk/contact + * @copyright Copyright 2008-2014 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +/*jslint evil: true, undef: true, browser: true */ +/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ + +(/** @lends <global> */function( window, document, undefined ) { + +(function( factory ) { + "use strict"; + + if ( typeof define === 'function' && define.amd ) { + // Define as an AMD module if possible + define( 'datatables', ['jquery'], factory ); + } + else if ( typeof exports === 'object' ) { + // Node/CommonJS + module.exports = factory( require( 'jquery' ) ); + } + else if ( jQuery && !jQuery.fn.dataTable ) { + // Define using browser globals otherwise + // Prevent multiple instantiations if the script is loaded twice + factory( jQuery ); + } +} +(/** @lends <global> */function( $ ) { + "use strict"; + + /** + * DataTables is a plug-in for the jQuery Javascript library. It is a highly + * flexible tool, based upon the foundations of progressive enhancement, + * which will add advanced interaction controls to any HTML table. For a + * full list of features please refer to + * [DataTables.net](href="http://datatables.net). + * + * Note that the `DataTable` object is not a global variable but is aliased + * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may + * be accessed. + * + * @class + * @param {object} [init={}] Configuration object for DataTables. Options + * are defined by {@link DataTable.defaults} + * @requires jQuery 1.7+ + * + * @example + * // Basic initialisation + * $(document).ready( function { + * $('#example').dataTable(); + * } ); + * + * @example + * // Initialisation with configuration options - in this case, disable + * // pagination and sorting. + * $(document).ready( function { + * $('#example').dataTable( { + * "paginate": false, + * "sort": false + * } ); + * } ); + */ + var DataTable; + + + /* + * It is useful to have variables which are scoped locally so only the + * DataTables functions can access them and they don't leak into global space. + * At the same time these functions are often useful over multiple files in the + * core and API, so we list, or at least document, all variables which are used + * by DataTables as private variables here. This also ensures that there is no + * clashing of variable names and that they can easily referenced for reuse. + */ + + + // Defined else where + // _selector_run + // _selector_opts + // _selector_first + // _selector_row_indexes + + var _ext; // DataTable.ext + var _Api; // DataTable.Api + var _api_register; // DataTable.Api.register + var _api_registerPlural; // DataTable.Api.registerPlural + + var _re_dic = {}; + var _re_new_lines = /[\r\n]/g; + var _re_html = /<.*?>/g; + var _re_date_start = /^[\w\+\-]/; + var _re_date_end = /[\w\+\-]$/; + + // Escape regular expression special characters + var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); + + // http://en.wikipedia.org/wiki/Foreign_exchange_market + // - \u20BD - Russian ruble. + // - \u20a9 - South Korean Won + // - \u20BA - Turkish Lira + // - \u20B9 - Indian Rupee + // - R - Brazil (R$) and South Africa + // - fr - Swiss Franc + // - kr - Swedish krona, Norwegian krone and Danish krone + // - \u2009 is thin space and \u202F is narrow no-break space, both used in many + // standards as thousands separators. + var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; + + + var _empty = function ( d ) { + return !d || d === true || d === '-' ? true : false; + }; + + + var _intVal = function ( s ) { + var integer = parseInt( s, 10 ); + return !isNaN(integer) && isFinite(s) ? integer : null; + }; + + // Convert from a formatted number with characters other than `.` as the + // decimal place, to a Javascript number + var _numToDecimal = function ( num, decimalPoint ) { + // Cache created regular expressions for speed as this function is called often + if ( ! _re_dic[ decimalPoint ] ) { + _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); + } + return typeof num === 'string' && decimalPoint !== '.' ? + num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : + num; + }; + + + var _isNumber = function ( d, decimalPoint, formatted ) { + var strType = typeof d === 'string'; + + // If empty return immediately so there must be a number if it is a + // formatted string (this stops the string "k", or "kr", etc being detected + // as a formatted number for currency + if ( _empty( d ) ) { + return true; + } + + if ( decimalPoint && strType ) { + d = _numToDecimal( d, decimalPoint ); + } + + if ( formatted && strType ) { + d = d.replace( _re_formatted_numeric, '' ); + } + + return !isNaN( parseFloat(d) ) && isFinite( d ); + }; + + + // A string without HTML in it can be considered to be HTML still + var _isHtml = function ( d ) { + return _empty( d ) || typeof d === 'string'; + }; + + + var _htmlNumeric = function ( d, decimalPoint, formatted ) { + if ( _empty( d ) ) { + return true; + } + + var html = _isHtml( d ); + return ! html ? + null : + _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? + true : + null; + }; + + + var _pluck = function ( a, prop, prop2 ) { + var out = []; + var i=0, ien=a.length; + + // Could have the test in the loop for slightly smaller code, but speed + // is essential here + if ( prop2 !== undefined ) { + for ( ; i<ien ; i++ ) { + if ( a[i] && a[i][ prop ] ) { + out.push( a[i][ prop ][ prop2 ] ); + } + } + } + else { + for ( ; i<ien ; i++ ) { + if ( a[i] ) { + out.push( a[i][ prop ] ); + } + } + } + + return out; + }; + + + // Basically the same as _pluck, but rather than looping over `a` we use `order` + // as the indexes to pick from `a` + var _pluck_order = function ( a, order, prop, prop2 ) + { + var out = []; + var i=0, ien=order.length; + + // Could have the test in the loop for slightly smaller code, but speed + // is essential here + if ( prop2 !== undefined ) { + for ( ; i<ien ; i++ ) { + if ( a[ order[i] ][ prop ] ) { + out.push( a[ order[i] ][ prop ][ prop2 ] ); + } + } + } + else { + for ( ; i<ien ; i++ ) { + out.push( a[ order[i] ][ prop ] ); + } + } + + return out; + }; + + + var _range = function ( len, start ) + { + var out = []; + var end; + + if ( start === undefined ) { + start = 0; + end = len; + } + else { + end = start; + start = len; + } + + for ( var i=start ; i<end ; i++ ) { + out.push( i ); + } + + return out; + }; + + + var _removeEmpty = function ( a ) + { + var out = []; + + for ( var i=0, ien=a.length ; i<ien ; i++ ) { + if ( a[i] ) { // careful - will remove all falsy values! + out.push( a[i] ); + } + } + + return out; + }; + + + var _stripHtml = function ( d ) { + return d.replace( _re_html, '' ); + }; + + + /** + * Find the unique elements in a source array. + * + * @param {array} src Source array + * @return {array} Array of unique items + * @ignore + */ + var _unique = function ( src ) + { + // A faster unique method is to use object keys to identify used values, + // but this doesn't work with arrays or objects, which we must also + // consider. See jsperf.com/compare-array-unique-versions/4 for more + // information. + var + out = [], + val, + i, ien=src.length, + j, k=0; + + again: for ( i=0 ; i<ien ; i++ ) { + val = src[i]; + + for ( j=0 ; j<k ; j++ ) { + if ( out[j] === val ) { + continue again; + } + } + + out.push( val ); + k++; + } + + return out; + }; + + + + /** + * Create a mapping object that allows camel case parameters to be looked up + * for their Hungarian counterparts. The mapping is stored in a private + * parameter called `_hungarianMap` which can be accessed on the source object. + * @param {object} o + * @memberof DataTable#oApi + */ + function _fnHungarianMap ( o ) + { + var + hungarian = 'a aa ai ao as b fn i m o s ', + match, + newKey, + map = {}; + + $.each( o, function (key, val) { + match = key.match(/^([^A-Z]+?)([A-Z])/); + + if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) + { + newKey = key.replace( match[0], match[2].toLowerCase() ); + map[ newKey ] = key; + + if ( match[1] === 'o' ) + { + _fnHungarianMap( o[key] ); + } + } + } ); + + o._hungarianMap = map; + } + + + /** + * Convert from camel case parameters to Hungarian, based on a Hungarian map + * created by _fnHungarianMap. + * @param {object} src The model object which holds all parameters that can be + * mapped. + * @param {object} user The object to convert from camel case to Hungarian. + * @param {boolean} force When set to `true`, properties which already have a + * Hungarian value in the `user` object will be overwritten. Otherwise they + * won't be. + * @memberof DataTable#oApi + */ + function _fnCamelToHungarian ( src, user, force ) + { + if ( ! src._hungarianMap ) { + _fnHungarianMap( src ); + } + + var hungarianKey; + + $.each( user, function (key, val) { + hungarianKey = src._hungarianMap[ key ]; + + if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) + { + // For objects, we need to buzz down into the object to copy parameters + if ( hungarianKey.charAt(0) === 'o' ) + { + // Copy the camelCase options over to the hungarian + if ( ! user[ hungarianKey ] ) { + user[ hungarianKey ] = {}; + } + $.extend( true, user[hungarianKey], user[key] ); + + _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); + } + else { + user[hungarianKey] = user[ key ]; + } + } + } ); + } + + + /** + * Language compatibility - when certain options are given, and others aren't, we + * need to duplicate the values over, in order to provide backwards compatibility + * with older language files. + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnLanguageCompat( lang ) + { + var defaults = DataTable.defaults.oLanguage; + var zeroRecords = lang.sZeroRecords; + + /* Backwards compatibility - if there is no sEmptyTable given, then use the same as + * sZeroRecords - assuming that is given. + */ + if ( ! lang.sEmptyTable && zeroRecords && + defaults.sEmptyTable === "No data available in table" ) + { + _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); + } + + /* Likewise with loading records */ + if ( ! lang.sLoadingRecords && zeroRecords && + defaults.sLoadingRecords === "Loading..." ) + { + _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); + } + + // Old parameter name of the thousands separator mapped onto the new + if ( lang.sInfoThousands ) { + lang.sThousands = lang.sInfoThousands; + } + + var decimal = lang.sDecimal; + if ( decimal ) { + _addNumericSort( decimal ); + } + } + + + /** + * Map one parameter onto another + * @param {object} o Object to map + * @param {*} knew The new parameter name + * @param {*} old The old parameter name + */ + var _fnCompatMap = function ( o, knew, old ) { + if ( o[ knew ] !== undefined ) { + o[ old ] = o[ knew ]; + } + }; + + + /** + * Provide backwards compatibility for the main DT options. Note that the new + * options are mapped onto the old parameters, so this is an external interface + * change only. + * @param {object} init Object to map + */ + function _fnCompatOpts ( init ) + { + _fnCompatMap( init, 'ordering', 'bSort' ); + _fnCompatMap( init, 'orderMulti', 'bSortMulti' ); + _fnCompatMap( init, 'orderClasses', 'bSortClasses' ); + _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' ); + _fnCompatMap( init, 'order', 'aaSorting' ); + _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' ); + _fnCompatMap( init, 'paging', 'bPaginate' ); + _fnCompatMap( init, 'pagingType', 'sPaginationType' ); + _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); + _fnCompatMap( init, 'searching', 'bFilter' ); + + // Column search objects are in an array, so it needs to be converted + // element by element + var searchCols = init.aoSearchCols; + + if ( searchCols ) { + for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { + if ( searchCols[i] ) { + _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] ); + } + } + } + } + + + /** + * Provide backwards compatibility for column options. Note that the new options + * are mapped onto the old parameters, so this is an external interface change + * only. + * @param {object} init Object to map + */ + function _fnCompatCols ( init ) + { + _fnCompatMap( init, 'orderable', 'bSortable' ); + _fnCompatMap( init, 'orderData', 'aDataSort' ); + _fnCompatMap( init, 'orderSequence', 'asSorting' ); + _fnCompatMap( init, 'orderDataType', 'sortDataType' ); + + // orderData can be given as an integer + var dataSort = init.aDataSort; + if ( dataSort && ! $.isArray( dataSort ) ) { + init.aDataSort = [ dataSort ]; + } + } + + + /** + * Browser feature detection for capabilities, quirks + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnBrowserDetect( settings ) + { + var browser = settings.oBrowser; + + // Scrolling feature / quirks detection + var n = $('<div/>') + .css( { + position: 'absolute', + top: 0, + left: 0, + height: 1, + width: 1, + overflow: 'hidden' + } ) + .append( + $('<div/>') + .css( { + position: 'absolute', + top: 1, + left: 1, + width: 100, + overflow: 'scroll' + } ) + .append( + $('<div class="test"/>') + .css( { + width: '100%', + height: 10 + } ) + ) + ) + .appendTo( 'body' ); + + var test = n.find('.test'); + + // IE6/7 will oversize a width 100% element inside a scrolling element, to + // include the width of the scrollbar, while other browsers ensure the inner + // element is contained without forcing scrolling + browser.bScrollOversize = test[0].offsetWidth === 100; + + // In rtl text layout, some browsers (most, but not all) will place the + // scrollbar on the left, rather than the right. + browser.bScrollbarLeft = Math.round( test.offset().left ) !== 1; + + n.remove(); + } + + + /** + * Array.prototype reduce[Right] method, used for browsers which don't support + * JS 1.6. Done this way to reduce code size, since we iterate either way + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnReduce ( that, fn, init, start, end, inc ) + { + var + i = start, + value, + isSet = false; + + if ( init !== undefined ) { + value = init; + isSet = true; + } + + while ( i !== end ) { + if ( ! that.hasOwnProperty(i) ) { + continue; + } + + value = isSet ? + fn( value, that[i], i, that ) : + that[i]; + + isSet = true; + i += inc; + } + + return value; + } + + /** + * Add a column to the list used for the table with default values + * @param {object} oSettings dataTables settings object + * @param {node} nTh The th element for this column + * @memberof DataTable#oApi + */ + function _fnAddColumn( oSettings, nTh ) + { + // Add column to aoColumns array + var oDefaults = DataTable.defaults.column; + var iCol = oSettings.aoColumns.length; + var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { + "nTh": nTh ? nTh : document.createElement('th'), + "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', + "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], + "mData": oDefaults.mData ? oDefaults.mData : iCol, + idx: iCol + } ); + oSettings.aoColumns.push( oCol ); + + // Add search object for column specific search. Note that the `searchCols[ iCol ]` + // passed into extend can be undefined. This allows the user to give a default + // with only some of the parameters defined, and also not give a default + var searchCols = oSettings.aoPreSearchCols; + searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); + + // Use the default column options function to initialise classes etc + _fnColumnOptions( oSettings, iCol, $(nTh).data() ); + } + + + /** + * Apply options for a column + * @param {object} oSettings dataTables settings object + * @param {int} iCol column index to consider + * @param {object} oOptions object with sType, bVisible and bSearchable etc + * @memberof DataTable#oApi + */ + function _fnColumnOptions( oSettings, iCol, oOptions ) + { + var oCol = oSettings.aoColumns[ iCol ]; + var oClasses = oSettings.oClasses; + var th = $(oCol.nTh); + + // Try to get width information from the DOM. We can't get it from CSS + // as we'd need to parse the CSS stylesheet. `width` option can override + if ( ! oCol.sWidthOrig ) { + // Width attribute + oCol.sWidthOrig = th.attr('width') || null; + + // Style attribute + var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); + if ( t ) { + oCol.sWidthOrig = t[1]; + } + } + + /* User specified column options */ + if ( oOptions !== undefined && oOptions !== null ) + { + // Backwards compatibility + _fnCompatCols( oOptions ); + + // Map camel case parameters to their Hungarian counterparts + _fnCamelToHungarian( DataTable.defaults.column, oOptions ); + + /* Backwards compatibility for mDataProp */ + if ( oOptions.mDataProp !== undefined && !oOptions.mData ) + { + oOptions.mData = oOptions.mDataProp; + } + + if ( oOptions.sType ) + { + oCol._sManualType = oOptions.sType; + } + + // `class` is a reserved word in Javascript, so we need to provide + // the ability to use a valid name for the camel case input + if ( oOptions.className && ! oOptions.sClass ) + { + oOptions.sClass = oOptions.className; + } + + $.extend( oCol, oOptions ); + _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); + + /* iDataSort to be applied (backwards compatibility), but aDataSort will take + * priority if defined + */ + if ( oOptions.iDataSort !== undefined ) + { + oCol.aDataSort = [ oOptions.iDataSort ]; + } + _fnMap( oCol, oOptions, "aDataSort" ); + } + + /* Cache the data get and set functions for speed */ + var mDataSrc = oCol.mData; + var mData = _fnGetObjectDataFn( mDataSrc ); + var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; + + var attrTest = function( src ) { + return typeof src === 'string' && src.indexOf('@') !== -1; + }; + oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( + attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) + ); + + oCol.fnGetData = function (rowData, type, meta) { + var innerData = mData( rowData, type, undefined, meta ); + + return mRender && type ? + mRender( innerData, type, rowData, meta ) : + innerData; + }; + oCol.fnSetData = function ( rowData, val, meta ) { + return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); + }; + + // Indicate if DataTables should read DOM data as an object or array + // Used in _fnGetRowElements + if ( typeof mDataSrc !== 'number' ) { + oSettings._rowReadObject = true; + } + + /* Feature sorting overrides column specific when off */ + if ( !oSettings.oFeatures.bSort ) + { + oCol.bSortable = false; + th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called + } + + /* Check that the class assignment is correct for sorting */ + var bAsc = $.inArray('asc', oCol.asSorting) !== -1; + var bDesc = $.inArray('desc', oCol.asSorting) !== -1; + if ( !oCol.bSortable || (!bAsc && !bDesc) ) + { + oCol.sSortingClass = oClasses.sSortableNone; + oCol.sSortingClassJUI = ""; + } + else if ( bAsc && !bDesc ) + { + oCol.sSortingClass = oClasses.sSortableAsc; + oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; + } + else if ( !bAsc && bDesc ) + { + oCol.sSortingClass = oClasses.sSortableDesc; + oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; + } + else + { + oCol.sSortingClass = oClasses.sSortable; + oCol.sSortingClassJUI = oClasses.sSortJUI; + } + } + + + /** + * Adjust the table column widths for new data. Note: you would probably want to + * do a redraw after calling this function! + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnAdjustColumnSizing ( settings ) + { + /* Not interested in doing column width calculation if auto-width is disabled */ + if ( settings.oFeatures.bAutoWidth !== false ) + { + var columns = settings.aoColumns; + + _fnCalculateColumnWidths( settings ); + for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) + { + columns[i].nTh.style.width = columns[i].sWidth; + } + } + + var scroll = settings.oScroll; + if ( scroll.sY !== '' || scroll.sX !== '') + { + _fnScrollDraw( settings ); + } + + _fnCallbackFire( settings, null, 'column-sizing', [settings] ); + } + + + /** + * Covert the index of a visible column to the index in the data array (take account + * of hidden columns) + * @param {object} oSettings dataTables settings object + * @param {int} iMatch Visible column index to lookup + * @returns {int} i the data index + * @memberof DataTable#oApi + */ + function _fnVisibleToColumnIndex( oSettings, iMatch ) + { + var aiVis = _fnGetColumns( oSettings, 'bVisible' ); + + return typeof aiVis[iMatch] === 'number' ? + aiVis[iMatch] : + null; + } + + + /** + * Covert the index of an index in the data array and convert it to the visible + * column index (take account of hidden columns) + * @param {int} iMatch Column index to lookup + * @param {object} oSettings dataTables settings object + * @returns {int} i the data index + * @memberof DataTable#oApi + */ + function _fnColumnIndexToVisible( oSettings, iMatch ) + { + var aiVis = _fnGetColumns( oSettings, 'bVisible' ); + var iPos = $.inArray( iMatch, aiVis ); + + return iPos !== -1 ? iPos : null; + } + + + /** + * Get the number of visible columns + * @param {object} oSettings dataTables settings object + * @returns {int} i the number of visible columns + * @memberof DataTable#oApi + */ + function _fnVisbleColumns( oSettings ) + { + return _fnGetColumns( oSettings, 'bVisible' ).length; + } + + + /** + * Get an array of column indexes that match a given property + * @param {object} oSettings dataTables settings object + * @param {string} sParam Parameter in aoColumns to look for - typically + * bVisible or bSearchable + * @returns {array} Array of indexes with matched properties + * @memberof DataTable#oApi + */ + function _fnGetColumns( oSettings, sParam ) + { + var a = []; + + $.map( oSettings.aoColumns, function(val, i) { + if ( val[sParam] ) { + a.push( i ); + } + } ); + + return a; + } + + + /** + * Calculate the 'type' of a column + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnColumnTypes ( settings ) + { + var columns = settings.aoColumns; + var data = settings.aoData; + var types = DataTable.ext.type.detect; + var i, ien, j, jen, k, ken; + var col, cell, detectedType, cache; + + // For each column, spin over the + for ( i=0, ien=columns.length ; i<ien ; i++ ) { + col = columns[i]; + cache = []; + + if ( ! col.sType && col._sManualType ) { + col.sType = col._sManualType; + } + else if ( ! col.sType ) { + for ( j=0, jen=types.length ; j<jen ; j++ ) { + for ( k=0, ken=data.length ; k<ken ; k++ ) { + // Use a cache array so we only need to get the type data + // from the formatter once (when using multiple detectors) + if ( cache[k] === undefined ) { + cache[k] = _fnGetCellData( settings, k, i, 'type' ); + } + + detectedType = types[j]( cache[k], settings ); + + // If null, then this type can't apply to this column, so + // rather than testing all cells, break out. There is an + // exception for the last type which is `html`. We need to + // scan all rows since it is possible to mix string and HTML + // types + if ( ! detectedType && j !== types.length-1 ) { + break; + } + + // Only a single match is needed for html type since it is + // bottom of the pile and very similar to string + if ( detectedType === 'html' ) { + break; + } + } + + // Type is valid for all data points in the column - use this + // type + if ( detectedType ) { + col.sType = detectedType; + break; + } + } + + // Fall back - if no type was detected, always use string + if ( ! col.sType ) { + col.sType = 'string'; + } + } + } + } + + + /** + * Take the column definitions and static columns arrays and calculate how + * they relate to column indexes. The callback function will then apply the + * definition found for a column to a suitable configuration object. + * @param {object} oSettings dataTables settings object + * @param {array} aoColDefs The aoColumnDefs array that is to be applied + * @param {array} aoCols The aoColumns array that defines columns individually + * @param {function} fn Callback function - takes two parameters, the calculated + * column index and the definition for that column. + * @memberof DataTable#oApi + */ + function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn ) + { + var i, iLen, j, jLen, k, kLen, def; + var columns = oSettings.aoColumns; + + // Column definitions with aTargets + if ( aoColDefs ) + { + /* Loop over the definitions array - loop in reverse so first instance has priority */ + for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) + { + def = aoColDefs[i]; + + /* Each definition can target multiple columns, as it is an array */ + var aTargets = def.targets !== undefined ? + def.targets : + def.aTargets; + + if ( ! $.isArray( aTargets ) ) + { + aTargets = [ aTargets ]; + } + + for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) + { + if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) + { + /* Add columns that we don't yet know about */ + while( columns.length <= aTargets[j] ) + { + _fnAddColumn( oSettings ); + } + + /* Integer, basic index */ + fn( aTargets[j], def ); + } + else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 ) + { + /* Negative integer, right to left column counting */ + fn( columns.length+aTargets[j], def ); + } + else if ( typeof aTargets[j] === 'string' ) + { + /* Class name matching on TH element */ + for ( k=0, kLen=columns.length ; k<kLen ; k++ ) + { + if ( aTargets[j] == "_all" || + $(columns[k].nTh).hasClass( aTargets[j] ) ) + { + fn( k, def ); + } + } + } + } + } + } + + // Statically defined columns array + if ( aoCols ) + { + for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) + { + fn( i, aoCols[i] ); + } + } + } + + /** + * Add a data array to the table, creating DOM node etc. This is the parallel to + * _fnGatherData, but for adding rows from a Javascript source, rather than a + * DOM source. + * @param {object} oSettings dataTables settings object + * @param {array} aData data array to be added + * @param {node} [nTr] TR element to add to the table - optional. If not given, + * DataTables will create a row automatically + * @param {array} [anTds] Array of TD|TH elements for the row - must be given + * if nTr is. + * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed + * @memberof DataTable#oApi + */ + function _fnAddData ( oSettings, aDataIn, nTr, anTds ) + { + /* Create the object for storing information about this new row */ + var iRow = oSettings.aoData.length; + var oData = $.extend( true, {}, DataTable.models.oRow, { + src: nTr ? 'dom' : 'data' + } ); + + oData._aData = aDataIn; + oSettings.aoData.push( oData ); + + /* Create the cells */ + var nTd, sThisType; + var columns = oSettings.aoColumns; + for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) + { + // When working with a row, the data source object must be populated. In + // all other cases, the data source object is already populated, so we + // don't overwrite it, which might break bindings etc + if ( nTr ) { + _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) ); + } + columns[i].sType = null; + } + + /* Add to the display array */ + oSettings.aiDisplayMaster.push( iRow ); + + /* Create the DOM information, or register it if already present */ + if ( nTr || ! oSettings.oFeatures.bDeferRender ) + { + _fnCreateTr( oSettings, iRow, nTr, anTds ); + } + + return iRow; + } + + + /** + * Add one or more TR elements to the table. Generally we'd expect to + * use this for reading data from a DOM sourced table, but it could be + * used for an TR element. Note that if a TR is given, it is used (i.e. + * it is not cloned). + * @param {object} settings dataTables settings object + * @param {array|node|jQuery} trs The TR element(s) to add to the table + * @returns {array} Array of indexes for the added rows + * @memberof DataTable#oApi + */ + function _fnAddTr( settings, trs ) + { + var row; + + // Allow an individual node to be passed in + if ( ! (trs instanceof $) ) { + trs = $(trs); + } + + return trs.map( function (i, el) { + row = _fnGetRowElements( settings, el ); + return _fnAddData( settings, row.data, el, row.cells ); + } ); + } + + + /** + * Take a TR element and convert it to an index in aoData + * @param {object} oSettings dataTables settings object + * @param {node} n the TR element to find + * @returns {int} index if the node is found, null if not + * @memberof DataTable#oApi + */ + function _fnNodeToDataIndex( oSettings, n ) + { + return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; + } + + + /** + * Take a TD element and convert it into a column data index (not the visible index) + * @param {object} oSettings dataTables settings object + * @param {int} iRow The row number the TD/TH can be found in + * @param {node} n The TD/TH element to find + * @returns {int} index if the node is found, -1 if not + * @memberof DataTable#oApi + */ + function _fnNodeToColumnIndex( oSettings, iRow, n ) + { + return $.inArray( n, oSettings.aoData[ iRow ].anCells ); + } + + + /** + * Get the data for a given cell from the internal cache, taking into account data mapping + * @param {object} settings dataTables settings object + * @param {int} rowIdx aoData row id + * @param {int} colIdx Column index + * @param {string} type data get type ('display', 'type' 'filter' 'sort') + * @returns {*} Cell data + * @memberof DataTable#oApi + */ + function _fnGetCellData( settings, rowIdx, colIdx, type ) + { + var draw = settings.iDraw; + var col = settings.aoColumns[colIdx]; + var rowData = settings.aoData[rowIdx]._aData; + var defaultContent = col.sDefaultContent; + var cellData = col.fnGetData( rowData, type, { + settings: settings, + row: rowIdx, + col: colIdx + } ); + + if ( cellData === undefined ) { + if ( settings.iDrawError != draw && defaultContent === null ) { + _fnLog( settings, 0, "Requested unknown parameter "+ + (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+ + " for row "+rowIdx, 4 ); + settings.iDrawError = draw; + } + return defaultContent; + } + + /* When the data source is null, we can use default column data */ + if ( (cellData === rowData || cellData === null) && defaultContent !== null ) { + cellData = defaultContent; + } + else if ( typeof cellData === 'function' ) { + // If the data source is a function, then we run it and use the return, + // executing in the scope of the data object (for instances) + return cellData.call( rowData ); + } + + if ( cellData === null && type == 'display' ) { + return ''; + } + return cellData; + } + + + /** + * Set the value for a specific cell, into the internal data cache + * @param {object} settings dataTables settings object + * @param {int} rowIdx aoData row id + * @param {int} colIdx Column index + * @param {*} val Value to set + * @memberof DataTable#oApi + */ + function _fnSetCellData( settings, rowIdx, colIdx, val ) + { + var col = settings.aoColumns[colIdx]; + var rowData = settings.aoData[rowIdx]._aData; + + col.fnSetData( rowData, val, { + settings: settings, + row: rowIdx, + col: colIdx + } ); + } + + + // Private variable that is used to match action syntax in the data property object + var __reArray = /\[.*?\]$/; + var __reFn = /\(\)$/; + + /** + * Split string on periods, taking into account escaped periods + * @param {string} str String to split + * @return {array} Split string + */ + function _fnSplitObjNotation( str ) + { + return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) { + return s.replace(/\\./g, '.'); + } ); + } + + + /** + * Return a function that can be used to get data from a source object, taking + * into account the ability to use nested objects as a source + * @param {string|int|function} mSource The data source for the object + * @returns {function} Data get function + * @memberof DataTable#oApi + */ + function _fnGetObjectDataFn( mSource ) + { + if ( $.isPlainObject( mSource ) ) + { + /* Build an object of get functions, and wrap them in a single call */ + var o = {}; + $.each( mSource, function (key, val) { + if ( val ) { + o[key] = _fnGetObjectDataFn( val ); + } + } ); + + return function (data, type, row, meta) { + var t = o[type] || o._; + return t !== undefined ? + t(data, type, row, meta) : + data; + }; + } + else if ( mSource === null ) + { + /* Give an empty string for rendering / sorting etc */ + return function (data) { // type, row and meta also passed, but not used + return data; + }; + } + else if ( typeof mSource === 'function' ) + { + return function (data, type, row, meta) { + return mSource( data, type, row, meta ); + }; + } + else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || + mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) + { + /* If there is a . in the source string then the data source is in a + * nested object so we loop over the data for each level to get the next + * level down. On each loop we test for undefined, and if found immediately + * return. This allows entire objects to be missing and sDefaultContent to + * be used if defined, rather than throwing an error + */ + var fetchData = function (data, type, src) { + var arrayNotation, funcNotation, out, innerSrc; + + if ( src !== "" ) + { + var a = _fnSplitObjNotation( src ); + + for ( var i=0, iLen=a.length ; i<iLen ; i++ ) + { + // Check if we are dealing with special notation + arrayNotation = a[i].match(__reArray); + funcNotation = a[i].match(__reFn); + + if ( arrayNotation ) + { + // Array notation + a[i] = a[i].replace(__reArray, ''); + + // Condition allows simply [] to be passed in + if ( a[i] !== "" ) { + data = data[ a[i] ]; + } + out = []; + + // Get the remainder of the nested object to get + a.splice( 0, i+1 ); + innerSrc = a.join('.'); + + // Traverse each entry in the array getting the properties requested + for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { + out.push( fetchData( data[j], type, innerSrc ) ); + } + + // If a string is given in between the array notation indicators, that + // is used to join the strings together, otherwise an array is returned + var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); + data = (join==="") ? out : out.join(join); + + // The inner call to fetchData has already traversed through the remainder + // of the source requested, so we exit from the loop + break; + } + else if ( funcNotation ) + { + // Function call + a[i] = a[i].replace(__reFn, ''); + data = data[ a[i] ](); + continue; + } + + if ( data === null || data[ a[i] ] === undefined ) + { + return undefined; + } + data = data[ a[i] ]; + } + } + + return data; + }; + + return function (data, type) { // row and meta also passed, but not used + return fetchData( data, type, mSource ); + }; + } + else + { + /* Array or flat object mapping */ + return function (data, type) { // row and meta also passed, but not used + return data[mSource]; + }; + } + } + + + /** + * Return a function that can be used to set data from a source object, taking + * into account the ability to use nested objects as a source + * @param {string|int|function} mSource The data source for the object + * @returns {function} Data set function + * @memberof DataTable#oApi + */ + function _fnSetObjectDataFn( mSource ) + { + if ( $.isPlainObject( mSource ) ) + { + /* Unlike get, only the underscore (global) option is used for for + * setting data since we don't know the type here. This is why an object + * option is not documented for `mData` (which is read/write), but it is + * for `mRender` which is read only. + */ + return _fnSetObjectDataFn( mSource._ ); + } + else if ( mSource === null ) + { + /* Nothing to do when the data source is null */ + return function () {}; + } + else if ( typeof mSource === 'function' ) + { + return function (data, val, meta) { + mSource( data, 'set', val, meta ); + }; + } + else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || + mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) + { + /* Like the get, we need to get data from a nested object */ + var setData = function (data, val, src) { + var a = _fnSplitObjNotation( src ), b; + var aLast = a[a.length-1]; + var arrayNotation, funcNotation, o, innerSrc; + + for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) + { + // Check if we are dealing with an array notation request + arrayNotation = a[i].match(__reArray); + funcNotation = a[i].match(__reFn); + + if ( arrayNotation ) + { + a[i] = a[i].replace(__reArray, ''); + data[ a[i] ] = []; + + // Get the remainder of the nested object to set so we can recurse + b = a.slice(); + b.splice( 0, i+1 ); + innerSrc = b.join('.'); + + // Traverse each entry in the array setting the properties requested + for ( var j=0, jLen=val.length ; j<jLen ; j++ ) + { + o = {}; + setData( o, val[j], innerSrc ); + data[ a[i] ].push( o ); + } + + // The inner call to setData has already traversed through the remainder + // of the source and has set the data, thus we can exit here + return; + } + else if ( funcNotation ) + { + // Function call + a[i] = a[i].replace(__reFn, ''); + data = data[ a[i] ]( val ); + } + + // If the nested object doesn't currently exist - since we are + // trying to set the value - create it + if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) + { + data[ a[i] ] = {}; + } + data = data[ a[i] ]; + } + + // Last item in the input - i.e, the actual set + if ( aLast.match(__reFn ) ) + { + // Function call + data = data[ aLast.replace(__reFn, '') ]( val ); + } + else + { + // If array notation is used, we just want to strip it and use the property name + // and assign the value. If it isn't used, then we get the result we want anyway + data[ aLast.replace(__reArray, '') ] = val; + } + }; + + return function (data, val) { // meta is also passed in, but not used + return setData( data, val, mSource ); + }; + } + else + { + /* Array or flat object mapping */ + return function (data, val) { // meta is also passed in, but not used + data[mSource] = val; + }; + } + } + + + /** + * Return an array with the full table data + * @param {object} oSettings dataTables settings object + * @returns array {array} aData Master data array + * @memberof DataTable#oApi + */ + function _fnGetDataMaster ( settings ) + { + return _pluck( settings.aoData, '_aData' ); + } + + + /** + * Nuke the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnClearTable( settings ) + { + settings.aoData.length = 0; + settings.aiDisplayMaster.length = 0; + settings.aiDisplay.length = 0; + } + + + /** + * Take an array of integers (index array) and remove a target integer (value - not + * the key!) + * @param {array} a Index array to target + * @param {int} iTarget value to find + * @memberof DataTable#oApi + */ + function _fnDeleteIndex( a, iTarget, splice ) + { + var iTargetIndex = -1; + + for ( var i=0, iLen=a.length ; i<iLen ; i++ ) + { + if ( a[i] == iTarget ) + { + iTargetIndex = i; + } + else if ( a[i] > iTarget ) + { + a[i]--; + } + } + + if ( iTargetIndex != -1 && splice === undefined ) + { + a.splice( iTargetIndex, 1 ); + } + } + + + /** + * Mark cached data as invalid such that a re-read of the data will occur when + * the cached data is next requested. Also update from the data source object. + * + * @param {object} settings DataTables settings object + * @param {int} rowIdx Row index to invalidate + * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom' + * or 'data' + * @param {int} [colIdx] Column index to invalidate. If undefined the whole + * row will be invalidated + * @memberof DataTable#oApi + * + * @todo For the modularisation of v1.11 this will need to become a callback, so + * the sort and filter methods can subscribe to it. That will required + * initialisation options for sorting, which is why it is not already baked in + */ + function _fnInvalidate( settings, rowIdx, src, colIdx ) + { + var row = settings.aoData[ rowIdx ]; + var i, ien; + var cellWrite = function ( cell, col ) { + // This is very frustrating, but in IE if you just write directly + // to innerHTML, and elements that are overwritten are GC'ed, + // even if there is a reference to them elsewhere + while ( cell.childNodes.length ) { + cell.removeChild( cell.firstChild ); + } + + cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); + }; + + // Are we reading last data from DOM or the data object? + if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { + // Read the data from the DOM + row._aData = _fnGetRowElements( + settings, row, colIdx, colIdx === undefined ? undefined : row._aData + ) + .data; + } + else { + // Reading from data object, update the DOM + var cells = row.anCells; + + if ( cells ) { + if ( colIdx !== undefined ) { + cellWrite( cells[colIdx], colIdx ); + } + else { + for ( i=0, ien=cells.length ; i<ien ; i++ ) { + cellWrite( cells[i], i ); + } + } + } + } + + // For both row and cell invalidation, the cached data for sorting and + // filtering is nulled out + row._aSortData = null; + row._aFilterData = null; + + // Invalidate the type for a specific column (if given) or all columns since + // the data might have changed + var cols = settings.aoColumns; + if ( colIdx !== undefined ) { + cols[ colIdx ].sType = null; + } + else { + for ( i=0, ien=cols.length ; i<ien ; i++ ) { + cols[i].sType = null; + } + + // Update DataTables special `DT_*` attributes for the row + _fnRowAttributes( row ); + } + } + + + /** + * Build a data source object from an HTML row, reading the contents of the + * cells that are in the row. + * + * @param {object} settings DataTables settings object + * @param {node|object} TR element from which to read data or existing row + * object from which to re-read the data from the cells + * @param {int} [colIdx] Optional column index + * @param {array|object} [d] Data source object. If `colIdx` is given then this + * parameter should also be given and will be used to write the data into. + * Only the column in question will be written + * @returns {object} Object with two parameters: `data` the data read, in + * document order, and `cells` and array of nodes (they can be useful to the + * caller, so rather than needing a second traversal to get them, just return + * them from here). + * @memberof DataTable#oApi + */ + function _fnGetRowElements( settings, row, colIdx, d ) + { + var + tds = [], + td = row.firstChild, + name, col, o, i=0, contents, + columns = settings.aoColumns, + objectRead = settings._rowReadObject; + + // Allow the data object to be passed in, or construct + d = d || objectRead ? {} : []; + + var attr = function ( str, td ) { + if ( typeof str === 'string' ) { + var idx = str.indexOf('@'); + + if ( idx !== -1 ) { + var attr = str.substring( idx+1 ); + var setter = _fnSetObjectDataFn( str ); + setter( d, td.getAttribute( attr ) ); + } + } + }; + + // Read data from a cell and store into the data object + var cellProcess = function ( cell ) { + if ( colIdx === undefined || colIdx === i ) { + col = columns[i]; + contents = $.trim(cell.innerHTML); + + if ( col && col._bAttrSrc ) { + var setter = _fnSetObjectDataFn( col.mData._ ); + setter( d, contents ); + + attr( col.mData.sort, cell ); + attr( col.mData.type, cell ); + attr( col.mData.filter, cell ); + } + else { + // Depending on the `data` option for the columns the data can + // be read to either an object or an array. + if ( objectRead ) { + if ( ! col._setter ) { + // Cache the setter function + col._setter = _fnSetObjectDataFn( col.mData ); + } + col._setter( d, contents ); + } + else { + d[i] = contents; + } + } + } + + i++; + }; + + if ( td ) { + // `tr` element was passed in + while ( td ) { + name = td.nodeName.toUpperCase(); + + if ( name == "TD" || name == "TH" ) { + cellProcess( td ); + tds.push( td ); + } + + td = td.nextSibling; + } + } + else { + // Existing row object passed in + tds = row.anCells; + + for ( var j=0, jen=tds.length ; j<jen ; j++ ) { + cellProcess( tds[j] ); + } + } + + return { + data: d, + cells: tds + }; + } + /** + * Create a new TR element (and it's TD children) for a row + * @param {object} oSettings dataTables settings object + * @param {int} iRow Row to consider + * @param {node} [nTrIn] TR element to add to the table - optional. If not given, + * DataTables will create a row automatically + * @param {array} [anTds] Array of TD|TH elements for the row - must be given + * if nTr is. + * @memberof DataTable#oApi + */ + function _fnCreateTr ( oSettings, iRow, nTrIn, anTds ) + { + var + row = oSettings.aoData[iRow], + rowData = row._aData, + cells = [], + nTr, nTd, oCol, + i, iLen; + + if ( row.nTr === null ) + { + nTr = nTrIn || document.createElement('tr'); + + row.nTr = nTr; + row.anCells = cells; + + /* Use a private property on the node to allow reserve mapping from the node + * to the aoData array for fast look up + */ + nTr._DT_RowIndex = iRow; + + /* Special parameters can be given by the data source to be used on the row */ + _fnRowAttributes( row ); + + /* Process each column */ + for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) + { + oCol = oSettings.aoColumns[i]; + + nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); + cells.push( nTd ); + + // Need to create the HTML if new, or if a rendering function is defined + if ( !nTrIn || oCol.mRender || oCol.mData !== i ) + { + nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); + } + + /* Add user defined class */ + if ( oCol.sClass ) + { + nTd.className += ' '+oCol.sClass; + } + + // Visibility - add or remove as required + if ( oCol.bVisible && ! nTrIn ) + { + nTr.appendChild( nTd ); + } + else if ( ! oCol.bVisible && nTrIn ) + { + nTd.parentNode.removeChild( nTd ); + } + + if ( oCol.fnCreatedCell ) + { + oCol.fnCreatedCell.call( oSettings.oInstance, + nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i + ); + } + } + + _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); + } + + // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved + // and deployed + row.nTr.setAttribute( 'role', 'row' ); + } + + + /** + * Add attributes to a row based on the special `DT_*` parameters in a data + * source object. + * @param {object} DataTables row object for the row to be modified + * @memberof DataTable#oApi + */ + function _fnRowAttributes( row ) + { + var tr = row.nTr; + var data = row._aData; + + if ( tr ) { + if ( data.DT_RowId ) { + tr.id = data.DT_RowId; + } + + if ( data.DT_RowClass ) { + // Remove any classes added by DT_RowClass before + var a = data.DT_RowClass.split(' '); + row.__rowc = row.__rowc ? + _unique( row.__rowc.concat( a ) ) : + a; + + $(tr) + .removeClass( row.__rowc.join(' ') ) + .addClass( data.DT_RowClass ); + } + + if ( data.DT_RowAttr ) { + $(tr).attr( data.DT_RowAttr ); + } + + if ( data.DT_RowData ) { + $(tr).data( data.DT_RowData ); + } + } + } + + + /** + * Create the HTML header for the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnBuildHead( oSettings ) + { + var i, ien, cell, row, column; + var thead = oSettings.nTHead; + var tfoot = oSettings.nTFoot; + var createHeader = $('th, td', thead).length === 0; + var classes = oSettings.oClasses; + var columns = oSettings.aoColumns; + + if ( createHeader ) { + row = $('<tr/>').appendTo( thead ); + } + + for ( i=0, ien=columns.length ; i<ien ; i++ ) { + column = columns[i]; + cell = $( column.nTh ).addClass( column.sClass ); + + if ( createHeader ) { + cell.appendTo( row ); + } + + // 1.11 move into sorting + if ( oSettings.oFeatures.bSort ) { + cell.addClass( column.sSortingClass ); + + if ( column.bSortable !== false ) { + cell + .attr( 'tabindex', oSettings.iTabIndex ) + .attr( 'aria-controls', oSettings.sTableId ); + + _fnSortAttachListener( oSettings, column.nTh, i ); + } + } + + if ( column.sTitle != cell.html() ) { + cell.html( column.sTitle ); + } + + _fnRenderer( oSettings, 'header' )( + oSettings, cell, column, classes + ); + } + + if ( createHeader ) { + _fnDetectHeader( oSettings.aoHeader, thead ); + } + + /* ARIA role for the rows */ + $(thead).find('>tr').attr('role', 'row'); + + /* Deal with the footer - add classes if required */ + $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); + $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); + + // Cache the footer cells. Note that we only take the cells from the first + // row in the footer. If there is more than one row the user wants to + // interact with, they need to use the table().foot() method. Note also this + // allows cells to be used for multiple columns using colspan + if ( tfoot !== null ) { + var cells = oSettings.aoFooter[0]; + + for ( i=0, ien=cells.length ; i<ien ; i++ ) { + column = columns[i]; + column.nTf = cells[i].cell; + + if ( column.sClass ) { + $(column.nTf).addClass( column.sClass ); + } + } + } + } + + + /** + * Draw the header (or footer) element based on the column visibility states. The + * methodology here is to use the layout array from _fnDetectHeader, modified for + * the instantaneous column visibility, to construct the new layout. The grid is + * traversed over cell at a time in a rows x columns grid fashion, although each + * cell insert can cover multiple elements in the grid - which is tracks using the + * aApplied array. Cell inserts in the grid will only occur where there isn't + * already a cell in that position. + * @param {object} oSettings dataTables settings object + * @param array {objects} aoSource Layout array from _fnDetectHeader + * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, + * @memberof DataTable#oApi + */ + function _fnDrawHead( oSettings, aoSource, bIncludeHidden ) + { + var i, iLen, j, jLen, k, kLen, n, nLocalTr; + var aoLocal = []; + var aApplied = []; + var iColumns = oSettings.aoColumns.length; + var iRowspan, iColspan; + + if ( ! aoSource ) + { + return; + } + + if ( bIncludeHidden === undefined ) + { + bIncludeHidden = false; + } + + /* Make a copy of the master layout array, but without the visible columns in it */ + for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) + { + aoLocal[i] = aoSource[i].slice(); + aoLocal[i].nTr = aoSource[i].nTr; + + /* Remove any columns which are currently hidden */ + for ( j=iColumns-1 ; j>=0 ; j-- ) + { + if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden ) + { + aoLocal[i].splice( j, 1 ); + } + } + + /* Prep the applied array - it needs an element for each row */ + aApplied.push( [] ); + } + + for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) + { + nLocalTr = aoLocal[i].nTr; + + /* All cells are going to be replaced, so empty out the row */ + if ( nLocalTr ) + { + while( (n = nLocalTr.firstChild) ) + { + nLocalTr.removeChild( n ); + } + } + + for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) + { + iRowspan = 1; + iColspan = 1; + + /* Check to see if there is already a cell (row/colspan) covering our target + * insert point. If there is, then there is nothing to do. + */ + if ( aApplied[i][j] === undefined ) + { + nLocalTr.appendChild( aoLocal[i][j].cell ); + aApplied[i][j] = 1; + + /* Expand the cell to cover as many rows as needed */ + while ( aoLocal[i+iRowspan] !== undefined && + aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) + { + aApplied[i+iRowspan][j] = 1; + iRowspan++; + } + + /* Expand the cell to cover as many columns as needed */ + while ( aoLocal[i][j+iColspan] !== undefined && + aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) + { + /* Must update the applied array over the rows for the columns */ + for ( k=0 ; k<iRowspan ; k++ ) + { + aApplied[i+k][j+iColspan] = 1; + } + iColspan++; + } + + /* Do the actual expansion in the DOM */ + $(aoLocal[i][j].cell) + .attr('rowspan', iRowspan) + .attr('colspan', iColspan); + } + } + } + } + + + /** + * Insert the required TR nodes into the table for display + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnDraw( oSettings ) + { + /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ + var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); + if ( $.inArray( false, aPreDraw ) !== -1 ) + { + _fnProcessingDisplay( oSettings, false ); + return; + } + + var i, iLen, n; + var anRows = []; + var iRowCount = 0; + var asStripeClasses = oSettings.asStripeClasses; + var iStripes = asStripeClasses.length; + var iOpenRows = oSettings.aoOpenRows.length; + var oLang = oSettings.oLanguage; + var iInitDisplayStart = oSettings.iInitDisplayStart; + var bServerSide = _fnDataSource( oSettings ) == 'ssp'; + var aiDisplay = oSettings.aiDisplay; + + oSettings.bDrawing = true; + + /* Check and see if we have an initial draw position from state saving */ + if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) + { + oSettings._iDisplayStart = bServerSide ? + iInitDisplayStart : + iInitDisplayStart >= oSettings.fnRecordsDisplay() ? + 0 : + iInitDisplayStart; + + oSettings.iInitDisplayStart = -1; + } + + var iDisplayStart = oSettings._iDisplayStart; + var iDisplayEnd = oSettings.fnDisplayEnd(); + + /* Server-side processing draw intercept */ + if ( oSettings.bDeferLoading ) + { + oSettings.bDeferLoading = false; + oSettings.iDraw++; + _fnProcessingDisplay( oSettings, false ); + } + else if ( !bServerSide ) + { + oSettings.iDraw++; + } + else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) + { + return; + } + + if ( aiDisplay.length !== 0 ) + { + var iStart = bServerSide ? 0 : iDisplayStart; + var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; + + for ( var j=iStart ; j<iEnd ; j++ ) + { + var iDataIndex = aiDisplay[j]; + var aoData = oSettings.aoData[ iDataIndex ]; + if ( aoData.nTr === null ) + { + _fnCreateTr( oSettings, iDataIndex ); + } + + var nRow = aoData.nTr; + + /* Remove the old striping classes and then add the new one */ + if ( iStripes !== 0 ) + { + var sStripe = asStripeClasses[ iRowCount % iStripes ]; + if ( aoData._sRowStripe != sStripe ) + { + $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe ); + aoData._sRowStripe = sStripe; + } + } + + // Row callback functions - might want to manipulate the row + // iRowCount and j are not currently documented. Are they at all + // useful? + _fnCallbackFire( oSettings, 'aoRowCallback', null, + [nRow, aoData._aData, iRowCount, j] ); + + anRows.push( nRow ); + iRowCount++; + } + } + else + { + /* Table is empty - create a row with an empty message in it */ + var sZero = oLang.sZeroRecords; + if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' ) + { + sZero = oLang.sLoadingRecords; + } + else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 ) + { + sZero = oLang.sEmptyTable; + } + + anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) + .append( $('<td />', { + 'valign': 'top', + 'colSpan': _fnVisbleColumns( oSettings ), + 'class': oSettings.oClasses.sRowEmpty + } ).html( sZero ) )[0]; + } + + /* Header and footer callbacks */ + _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], + _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); + + _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], + _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); + + var body = $(oSettings.nTBody); + + body.children().detach(); + body.append( $(anRows) ); + + /* Call all required callback functions for the end of a draw */ + _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); + + /* Draw is complete, sorting and filtering must be as well */ + oSettings.bSorted = false; + oSettings.bFiltered = false; + oSettings.bDrawing = false; + } + + + /** + * Redraw the table - taking account of the various features which are enabled + * @param {object} oSettings dataTables settings object + * @param {boolean} [holdPosition] Keep the current paging position. By default + * the paging is reset to the first page + * @memberof DataTable#oApi + */ + function _fnReDraw( settings, holdPosition ) + { + var + features = settings.oFeatures, + sort = features.bSort, + filter = features.bFilter; + + if ( sort ) { + _fnSort( settings ); + } + + if ( filter ) { + _fnFilterComplete( settings, settings.oPreviousSearch ); + } + else { + // No filtering, so we want to just use the display master + settings.aiDisplay = settings.aiDisplayMaster.slice(); + } + + if ( holdPosition !== true ) { + settings._iDisplayStart = 0; + } + + // Let any modules know about the draw hold position state (used by + // scrolling internally) + settings._drawHold = holdPosition; + + _fnDraw( settings ); + + settings._drawHold = false; + } + + + /** + * Add the options to the page HTML for the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnAddOptionsHtml ( oSettings ) + { + var classes = oSettings.oClasses; + var table = $(oSettings.nTable); + var holding = $('<div/>').insertBefore( table ); // Holding element for speed + var features = oSettings.oFeatures; + + // All DataTables are wrapped in a div + var insert = $('<div/>', { + id: oSettings.sTableId+'_wrapper', + 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) + } ); + + oSettings.nHolding = holding[0]; + oSettings.nTableWrapper = insert[0]; + oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; + + /* Loop over the user set positioning and place the elements as needed */ + var aDom = oSettings.sDom.split(''); + var featureNode, cOption, nNewNode, cNext, sAttr, j; + for ( var i=0 ; i<aDom.length ; i++ ) + { + featureNode = null; + cOption = aDom[i]; + + if ( cOption == '<' ) + { + /* New container div */ + nNewNode = $('<div/>')[0]; + + /* Check to see if we should append an id and/or a class name to the container */ + cNext = aDom[i+1]; + if ( cNext == "'" || cNext == '"' ) + { + sAttr = ""; + j = 2; + while ( aDom[i+j] != cNext ) + { + sAttr += aDom[i+j]; + j++; + } + + /* Replace jQuery UI constants @todo depreciated */ + if ( sAttr == "H" ) + { + sAttr = classes.sJUIHeader; + } + else if ( sAttr == "F" ) + { + sAttr = classes.sJUIFooter; + } + + /* The attribute can be in the format of "#id.class", "#id" or "class" This logic + * breaks the string into parts and applies them as needed + */ + if ( sAttr.indexOf('.') != -1 ) + { + var aSplit = sAttr.split('.'); + nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); + nNewNode.className = aSplit[1]; + } + else if ( sAttr.charAt(0) == "#" ) + { + nNewNode.id = sAttr.substr(1, sAttr.length-1); + } + else + { + nNewNode.className = sAttr; + } + + i += j; /* Move along the position array */ + } + + insert.append( nNewNode ); + insert = $(nNewNode); + } + else if ( cOption == '>' ) + { + /* End container div */ + insert = insert.parent(); + } + // @todo Move options into their own plugins? + else if ( cOption == 'l' && features.bPaginate && features.bLengthChange ) + { + /* Length */ + featureNode = _fnFeatureHtmlLength( oSettings ); + } + else if ( cOption == 'f' && features.bFilter ) + { + /* Filter */ + featureNode = _fnFeatureHtmlFilter( oSettings ); + } + else if ( cOption == 'r' && features.bProcessing ) + { + /* pRocessing */ + featureNode = _fnFeatureHtmlProcessing( oSettings ); + } + else if ( cOption == 't' ) + { + /* Table */ + featureNode = _fnFeatureHtmlTable( oSettings ); + } + else if ( cOption == 'i' && features.bInfo ) + { + /* Info */ + featureNode = _fnFeatureHtmlInfo( oSettings ); + } + else if ( cOption == 'p' && features.bPaginate ) + { + /* Pagination */ + featureNode = _fnFeatureHtmlPaginate( oSettings ); + } + else if ( DataTable.ext.feature.length !== 0 ) + { + /* Plug-in features */ + var aoFeatures = DataTable.ext.feature; + for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ ) + { + if ( cOption == aoFeatures[k].cFeature ) + { + featureNode = aoFeatures[k].fnInit( oSettings ); + break; + } + } + } + + /* Add to the 2D features array */ + if ( featureNode ) + { + var aanFeatures = oSettings.aanFeatures; + + if ( ! aanFeatures[cOption] ) + { + aanFeatures[cOption] = []; + } + + aanFeatures[cOption].push( featureNode ); + insert.append( featureNode ); + } + } + + /* Built our DOM structure - replace the holding div with what we want */ + holding.replaceWith( insert ); + } + + + /** + * Use the DOM source to create up an array of header cells. The idea here is to + * create a layout grid (array) of rows x columns, which contains a reference + * to the cell that that point in the grid (regardless of col/rowspan), such that + * any column / row could be removed and the new grid constructed + * @param array {object} aLayout Array to store the calculated layout in + * @param {node} nThead The header/footer element for the table + * @memberof DataTable#oApi + */ + function _fnDetectHeader ( aLayout, nThead ) + { + var nTrs = $(nThead).children('tr'); + var nTr, nCell; + var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; + var bUnique; + var fnShiftCol = function ( a, i, j ) { + var k = a[i]; + while ( k[j] ) { + j++; + } + return j; + }; + + aLayout.splice( 0, aLayout.length ); + + /* We know how many rows there are in the layout - so prep it */ + for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) + { + aLayout.push( [] ); + } + + /* Calculate a layout array */ + for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) + { + nTr = nTrs[i]; + iColumn = 0; + + /* For every cell in the row... */ + nCell = nTr.firstChild; + while ( nCell ) { + if ( nCell.nodeName.toUpperCase() == "TD" || + nCell.nodeName.toUpperCase() == "TH" ) + { + /* Get the col and rowspan attributes from the DOM and sanitise them */ + iColspan = nCell.getAttribute('colspan') * 1; + iRowspan = nCell.getAttribute('rowspan') * 1; + iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; + iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; + + /* There might be colspan cells already in this row, so shift our target + * accordingly + */ + iColShifted = fnShiftCol( aLayout, i, iColumn ); + + /* Cache calculation for unique columns */ + bUnique = iColspan === 1 ? true : false; + + /* If there is col / rowspan, copy the information into the layout grid */ + for ( l=0 ; l<iColspan ; l++ ) + { + for ( k=0 ; k<iRowspan ; k++ ) + { + aLayout[i+k][iColShifted+l] = { + "cell": nCell, + "unique": bUnique + }; + aLayout[i+k].nTr = nTr; + } + } + } + nCell = nCell.nextSibling; + } + } + } + + + /** + * Get an array of unique th elements, one for each column + * @param {object} oSettings dataTables settings object + * @param {node} nHeader automatically detect the layout from this node - optional + * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional + * @returns array {node} aReturn list of unique th's + * @memberof DataTable#oApi + */ + function _fnGetUniqueThs ( oSettings, nHeader, aLayout ) + { + var aReturn = []; + if ( !aLayout ) + { + aLayout = oSettings.aoHeader; + if ( nHeader ) + { + aLayout = []; + _fnDetectHeader( aLayout, nHeader ); + } + } + + for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) + { + for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) + { + if ( aLayout[i][j].unique && + (!aReturn[j] || !oSettings.bSortCellsTop) ) + { + aReturn[j] = aLayout[i][j].cell; + } + } + } + + return aReturn; + } + + /** + * Create an Ajax call based on the table's settings, taking into account that + * parameters can have multiple forms, and backwards compatibility. + * + * @param {object} oSettings dataTables settings object + * @param {array} data Data to send to the server, required by + * DataTables - may be augmented by developer callbacks + * @param {function} fn Callback function to run when data is obtained + */ + function _fnBuildAjax( oSettings, data, fn ) + { + // Compatibility with 1.9-, allow fnServerData and event to manipulate + _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); + + // Convert to object based for 1.10+ if using the old array scheme which can + // come from server-side processing or serverParams + if ( data && $.isArray(data) ) { + var tmp = {}; + var rbracket = /(.*?)\[\]$/; + + $.each( data, function (key, val) { + var match = val.name.match(rbracket); + + if ( match ) { + // Support for arrays + var name = match[0]; + + if ( ! tmp[ name ] ) { + tmp[ name ] = []; + } + tmp[ name ].push( val.value ); + } + else { + tmp[val.name] = val.value; + } + } ); + data = tmp; + } + + var ajaxData; + var ajax = oSettings.ajax; + var instance = oSettings.oInstance; + var callback = function ( json ) { + _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] ); + fn( json ); + }; + + if ( $.isPlainObject( ajax ) && ajax.data ) + { + ajaxData = ajax.data; + + var newData = $.isFunction( ajaxData ) ? + ajaxData( data, oSettings ) : // fn can manipulate data or return + ajaxData; // an object object or array to merge + + // If the function returned something, use that alone + data = $.isFunction( ajaxData ) && newData ? + newData : + $.extend( true, data, newData ); + + // Remove the data property as we've resolved it already and don't want + // jQuery to do it again (it is restored at the end of the function) + delete ajax.data; + } + + var baseAjax = { + "data": data, + "success": function (json) { + var error = json.error || json.sError; + if ( error ) { + _fnLog( oSettings, 0, error ); + } + + oSettings.json = json; + callback( json ); + }, + "dataType": "json", + "cache": false, + "type": oSettings.sServerMethod, + "error": function (xhr, error, thrown) { + var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] ); + + if ( $.inArray( true, ret ) === -1 ) { + if ( error == "parsererror" ) { + _fnLog( oSettings, 0, 'Invalid JSON response', 1 ); + } + else if ( xhr.readyState === 4 ) { + _fnLog( oSettings, 0, 'Ajax error', 7 ); + } + } + + _fnProcessingDisplay( oSettings, false ); + } + }; + + // Store the data submitted for the API + oSettings.oAjaxData = data; + + // Allow plug-ins and external processes to modify the data + _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); + + if ( oSettings.fnServerData ) + { + // DataTables 1.9- compatibility + oSettings.fnServerData.call( instance, + oSettings.sAjaxSource, + $.map( data, function (val, key) { // Need to convert back to 1.9 trad format + return { name: key, value: val }; + } ), + callback, + oSettings + ); + } + else if ( oSettings.sAjaxSource || typeof ajax === 'string' ) + { + // DataTables 1.9- compatibility + oSettings.jqXHR = $.ajax( $.extend( baseAjax, { + url: ajax || oSettings.sAjaxSource + } ) ); + } + else if ( $.isFunction( ajax ) ) + { + // Is a function - let the caller define what needs to be done + oSettings.jqXHR = ajax.call( instance, data, callback, oSettings ); + } + else + { + // Object to extend the base settings + oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); + + // Restore for next time around + ajax.data = ajaxData; + } + } + + + /** + * Update the table using an Ajax call + * @param {object} settings dataTables settings object + * @returns {boolean} Block the table drawing or not + * @memberof DataTable#oApi + */ + function _fnAjaxUpdate( settings ) + { + if ( settings.bAjaxDataGet ) { + settings.iDraw++; + _fnProcessingDisplay( settings, true ); + + _fnBuildAjax( + settings, + _fnAjaxParameters( settings ), + function(json) { + _fnAjaxUpdateDraw( settings, json ); + } + ); + + return false; + } + return true; + } + + + /** + * Build up the parameters in an object needed for a server-side processing + * request. Note that this is basically done twice, is different ways - a modern + * method which is used by default in DataTables 1.10 which uses objects and + * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if + * the sAjaxSource option is used in the initialisation, or the legacyAjax + * option is set. + * @param {object} oSettings dataTables settings object + * @returns {bool} block the table drawing or not + * @memberof DataTable#oApi + */ + function _fnAjaxParameters( settings ) + { + var + columns = settings.aoColumns, + columnCount = columns.length, + features = settings.oFeatures, + preSearch = settings.oPreviousSearch, + preColSearch = settings.aoPreSearchCols, + i, data = [], dataProp, column, columnSearch, + sort = _fnSortFlatten( settings ), + displayStart = settings._iDisplayStart, + displayLength = features.bPaginate !== false ? + settings._iDisplayLength : + -1; + + var param = function ( name, value ) { + data.push( { 'name': name, 'value': value } ); + }; + + // DataTables 1.9- compatible method + param( 'sEcho', settings.iDraw ); + param( 'iColumns', columnCount ); + param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); + param( 'iDisplayStart', displayStart ); + param( 'iDisplayLength', displayLength ); + + // DataTables 1.10+ method + var d = { + draw: settings.iDraw, + columns: [], + order: [], + start: displayStart, + length: displayLength, + search: { + value: preSearch.sSearch, + regex: preSearch.bRegex + } + }; + + for ( i=0 ; i<columnCount ; i++ ) { + column = columns[i]; + columnSearch = preColSearch[i]; + dataProp = typeof column.mData=="function" ? 'function' : column.mData ; + + d.columns.push( { + data: dataProp, + name: column.sName, + searchable: column.bSearchable, + orderable: column.bSortable, + search: { + value: columnSearch.sSearch, + regex: columnSearch.bRegex + } + } ); + + param( "mDataProp_"+i, dataProp ); + + if ( features.bFilter ) { + param( 'sSearch_'+i, columnSearch.sSearch ); + param( 'bRegex_'+i, columnSearch.bRegex ); + param( 'bSearchable_'+i, column.bSearchable ); + } + + if ( features.bSort ) { + param( 'bSortable_'+i, column.bSortable ); + } + } + + if ( features.bFilter ) { + param( 'sSearch', preSearch.sSearch ); + param( 'bRegex', preSearch.bRegex ); + } + + if ( features.bSort ) { + $.each( sort, function ( i, val ) { + d.order.push( { column: val.col, dir: val.dir } ); + + param( 'iSortCol_'+i, val.col ); + param( 'sSortDir_'+i, val.dir ); + } ); + + param( 'iSortingCols', sort.length ); + } + + // If the legacy.ajax parameter is null, then we automatically decide which + // form to use, based on sAjaxSource + var legacy = DataTable.ext.legacy.ajax; + if ( legacy === null ) { + return settings.sAjaxSource ? data : d; + } + + // Otherwise, if legacy has been specified then we use that to decide on the + // form + return legacy ? data : d; + } + + + /** + * Data the data from the server (nuking the old) and redraw the table + * @param {object} oSettings dataTables settings object + * @param {object} json json data return from the server. + * @param {string} json.sEcho Tracking flag for DataTables to match requests + * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering + * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering + * @param {array} json.aaData The data to display on this page + * @param {string} [json.sColumns] Column ordering (sName, comma separated) + * @memberof DataTable#oApi + */ + function _fnAjaxUpdateDraw ( settings, json ) + { + // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation. + // Support both + var compat = function ( old, modern ) { + return json[old] !== undefined ? json[old] : json[modern]; + }; + + var data = _fnAjaxDataSrc( settings, json ); + var draw = compat( 'sEcho', 'draw' ); + var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); + var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); + + if ( draw ) { + // Protect against out of sequence returns + if ( draw*1 < settings.iDraw ) { + return; + } + settings.iDraw = draw * 1; + } + + _fnClearTable( settings ); + settings._iRecordsTotal = parseInt(recordsTotal, 10); + settings._iRecordsDisplay = parseInt(recordsFiltered, 10); + + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + _fnAddData( settings, data[i] ); + } + settings.aiDisplay = settings.aiDisplayMaster.slice(); + + settings.bAjaxDataGet = false; + _fnDraw( settings ); + + if ( ! settings._bInitComplete ) { + _fnInitComplete( settings, json ); + } + + settings.bAjaxDataGet = true; + _fnProcessingDisplay( settings, false ); + } + + + /** + * Get the data from the JSON data source to use for drawing a table. Using + * `_fnGetObjectDataFn` allows the data to be sourced from a property of the + * source object, or from a processing function. + * @param {object} oSettings dataTables settings object + * @param {object} json Data source object / array from the server + * @return {array} Array of data to use + */ + function _fnAjaxDataSrc ( oSettings, json ) + { + var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? + oSettings.ajax.dataSrc : + oSettings.sAjaxDataProp; // Compatibility with 1.9-. + + // Compatibility with 1.9-. In order to read from aaData, check if the + // default has been changed, if not, check for aaData + if ( dataSrc === 'data' ) { + return json.aaData || json[dataSrc]; + } + + return dataSrc !== "" ? + _fnGetObjectDataFn( dataSrc )( json ) : + json; + } + + /** + * Generate the node required for filtering text + * @returns {node} Filter control element + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlFilter ( settings ) + { + var classes = settings.oClasses; + var tableId = settings.sTableId; + var language = settings.oLanguage; + var previousSearch = settings.oPreviousSearch; + var features = settings.aanFeatures; + var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; + + var str = language.sSearch; + str = str.match(/_INPUT_/) ? + str.replace('_INPUT_', input) : + str+input; + + var filter = $('<div/>', { + 'id': ! features.f ? tableId+'_filter' : null, + 'class': classes.sFilter + } ) + .append( $('<label/>' ).append( str ) ); + + var searchFn = function() { + /* Update all other filter input elements for the new display */ + var n = features.f; + var val = !this.value ? "" : this.value; // mental IE8 fix :-( + + /* Now do the filter */ + if ( val != previousSearch.sSearch ) { + _fnFilterComplete( settings, { + "sSearch": val, + "bRegex": previousSearch.bRegex, + "bSmart": previousSearch.bSmart , + "bCaseInsensitive": previousSearch.bCaseInsensitive + } ); + + // Need to redraw, without resorting + settings._iDisplayStart = 0; + _fnDraw( settings ); + } + }; + + var searchDelay = settings.searchDelay !== null ? + settings.searchDelay : + _fnDataSource( settings ) === 'ssp' ? + 400 : + 0; + + var jqFilter = $('input', filter) + .val( previousSearch.sSearch ) + .attr( 'placeholder', language.sSearchPlaceholder ) + .bind( + 'keyup.DT search.DT input.DT paste.DT cut.DT', + searchDelay ? + _fnThrottle( searchFn, searchDelay ) : + searchFn + ) + .bind( 'keypress.DT', function(e) { + /* Prevent form submission */ + if ( e.keyCode == 13 ) { + return false; + } + } ) + .attr('aria-controls', tableId); + + // Update the input elements whenever the table is filtered + $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { + if ( settings === s ) { + // IE9 throws an 'unknown error' if document.activeElement is used + // inside an iframe or frame... + try { + if ( jqFilter[0] !== document.activeElement ) { + jqFilter.val( previousSearch.sSearch ); + } + } + catch ( e ) {} + } + } ); + + return filter[0]; + } + + + /** + * Filter the table using both the global filter and column based filtering + * @param {object} oSettings dataTables settings object + * @param {object} oSearch search information + * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0) + * @memberof DataTable#oApi + */ + function _fnFilterComplete ( oSettings, oInput, iForce ) + { + var oPrevSearch = oSettings.oPreviousSearch; + var aoPrevSearch = oSettings.aoPreSearchCols; + var fnSaveFilter = function ( oFilter ) { + /* Save the filtering values */ + oPrevSearch.sSearch = oFilter.sSearch; + oPrevSearch.bRegex = oFilter.bRegex; + oPrevSearch.bSmart = oFilter.bSmart; + oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; + }; + var fnRegex = function ( o ) { + // Backwards compatibility with the bEscapeRegex option + return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; + }; + + // Resolve any column types that are unknown due to addition or invalidation + // @todo As per sort - can this be moved into an event handler? + _fnColumnTypes( oSettings ); + + /* In server-side processing all filtering is done by the server, so no point hanging around here */ + if ( _fnDataSource( oSettings ) != 'ssp' ) + { + /* Global filter */ + _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); + fnSaveFilter( oInput ); + + /* Now do the individual column filter */ + for ( var i=0 ; i<aoPrevSearch.length ; i++ ) + { + _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), + aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); + } + + /* Custom filtering */ + _fnFilterCustom( oSettings ); + } + else + { + fnSaveFilter( oInput ); + } + + /* Tell the draw function we have been filtering */ + oSettings.bFiltered = true; + _fnCallbackFire( oSettings, null, 'search', [oSettings] ); + } + + + /** + * Apply custom filtering functions + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnFilterCustom( settings ) + { + var filters = DataTable.ext.search; + var displayRows = settings.aiDisplay; + var row, rowIdx; + + for ( var i=0, ien=filters.length ; i<ien ; i++ ) { + var rows = []; + + // Loop over each row and see if it should be included + for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { + rowIdx = displayRows[ j ]; + row = settings.aoData[ rowIdx ]; + + if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { + rows.push( rowIdx ); + } + } + + // So the array reference doesn't break set the results into the + // existing array + displayRows.length = 0; + displayRows.push.apply( displayRows, rows ); + } + } + + + /** + * Filter the table on a per-column basis + * @param {object} oSettings dataTables settings object + * @param {string} sInput string to filter on + * @param {int} iColumn column to filter + * @param {bool} bRegex treat search string as a regular expression or not + * @param {bool} bSmart use smart filtering or not + * @param {bool} bCaseInsensitive Do case insenstive matching or not + * @memberof DataTable#oApi + */ + function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive ) + { + if ( searchStr === '' ) { + return; + } + + var data; + var display = settings.aiDisplay; + var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); + + for ( var i=display.length-1 ; i>=0 ; i-- ) { + data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; + + if ( ! rpSearch.test( data ) ) { + display.splice( i, 1 ); + } + } + } + + + /** + * Filter the data table based on user input and draw the table + * @param {object} settings dataTables settings object + * @param {string} input string to filter on + * @param {int} force optional - force a research of the master array (1) or not (undefined or 0) + * @param {bool} regex treat as a regular expression or not + * @param {bool} smart perform smart filtering or not + * @param {bool} caseInsensitive Do case insenstive matching or not + * @memberof DataTable#oApi + */ + function _fnFilter( settings, input, force, regex, smart, caseInsensitive ) + { + var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive ); + var prevSearch = settings.oPreviousSearch.sSearch; + var displayMaster = settings.aiDisplayMaster; + var display, invalidated, i; + + // Need to take account of custom filtering functions - always filter + if ( DataTable.ext.search.length !== 0 ) { + force = true; + } + + // Check if any of the rows were invalidated + invalidated = _fnFilterData( settings ); + + // If the input is blank - we just want the full data set + if ( input.length <= 0 ) { + settings.aiDisplay = displayMaster.slice(); + } + else { + // New search - start from the master array + if ( invalidated || + force || + prevSearch.length > input.length || + input.indexOf(prevSearch) !== 0 || + settings.bSorted // On resort, the display master needs to be + // re-filtered since indexes will have changed + ) { + settings.aiDisplay = displayMaster.slice(); + } + + // Search the display array + display = settings.aiDisplay; + + for ( i=display.length-1 ; i>=0 ; i-- ) { + if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { + display.splice( i, 1 ); + } + } + } + } + + + /** + * Build a regular expression object suitable for searching a table + * @param {string} sSearch string to search for + * @param {bool} bRegex treat as a regular expression or not + * @param {bool} bSmart perform smart filtering or not + * @param {bool} bCaseInsensitive Do case insensitive matching or not + * @returns {RegExp} constructed object + * @memberof DataTable#oApi + */ + function _fnFilterCreateSearch( search, regex, smart, caseInsensitive ) + { + search = regex ? + search : + _fnEscapeRegex( search ); + + if ( smart ) { + /* For smart filtering we want to allow the search to work regardless of + * word order. We also want double quoted text to be preserved, so word + * order is important - a la google. So this is what we want to + * generate: + * + * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ + */ + var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) { + if ( word.charAt(0) === '"' ) { + var m = word.match( /^"(.*)"$/ ); + word = m ? m[1] : word; + } + + return word.replace('"', ''); + } ); + + search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; + } + + return new RegExp( search, caseInsensitive ? 'i' : '' ); + } + + + /** + * Escape a string such that it can be used in a regular expression + * @param {string} sVal string to escape + * @returns {string} escaped string + * @memberof DataTable#oApi + */ + function _fnEscapeRegex ( sVal ) + { + return sVal.replace( _re_escape_regex, '\\$1' ); + } + + + + var __filter_div = $('<div>')[0]; + var __filter_div_textContent = __filter_div.textContent !== undefined; + + // Update the filtering data for each row if needed (by invalidation or first run) + function _fnFilterData ( settings ) + { + var columns = settings.aoColumns; + var column; + var i, j, ien, jen, filterData, cellData, row; + var fomatters = DataTable.ext.type.search; + var wasInvalidated = false; + + for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { + row = settings.aoData[i]; + + if ( ! row._aFilterData ) { + filterData = []; + + for ( j=0, jen=columns.length ; j<jen ; j++ ) { + column = columns[j]; + + if ( column.bSearchable ) { + cellData = _fnGetCellData( settings, i, j, 'filter' ); + + if ( fomatters[ column.sType ] ) { + cellData = fomatters[ column.sType ]( cellData ); + } + + // Search in DataTables 1.10 is string based. In 1.11 this + // should be altered to also allow strict type checking. + if ( cellData === null ) { + cellData = ''; + } + + if ( typeof cellData !== 'string' && cellData.toString ) { + cellData = cellData.toString(); + } + } + else { + cellData = ''; + } + + // If it looks like there is an HTML entity in the string, + // attempt to decode it so sorting works as expected. Note that + // we could use a single line of jQuery to do this, but the DOM + // method used here is much faster http://jsperf.com/html-decode + if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) { + __filter_div.innerHTML = cellData; + cellData = __filter_div_textContent ? + __filter_div.textContent : + __filter_div.innerText; + } + + if ( cellData.replace ) { + cellData = cellData.replace(/[\r\n]/g, ''); + } + + filterData.push( cellData ); + } + + row._aFilterData = filterData; + row._sFilterRow = filterData.join(' '); + wasInvalidated = true; + } + } + + return wasInvalidated; + } + + + /** + * Convert from the internal Hungarian notation to camelCase for external + * interaction + * @param {object} obj Object to convert + * @returns {object} Inverted object + * @memberof DataTable#oApi + */ + function _fnSearchToCamel ( obj ) + { + return { + search: obj.sSearch, + smart: obj.bSmart, + regex: obj.bRegex, + caseInsensitive: obj.bCaseInsensitive + }; + } + + + + /** + * Convert from camelCase notation to the internal Hungarian. We could use the + * Hungarian convert function here, but this is cleaner + * @param {object} obj Object to convert + * @returns {object} Inverted object + * @memberof DataTable#oApi + */ + function _fnSearchToHung ( obj ) + { + return { + sSearch: obj.search, + bSmart: obj.smart, + bRegex: obj.regex, + bCaseInsensitive: obj.caseInsensitive + }; + } + + /** + * Generate the node required for the info display + * @param {object} oSettings dataTables settings object + * @returns {node} Information element + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlInfo ( settings ) + { + var + tid = settings.sTableId, + nodes = settings.aanFeatures.i, + n = $('<div/>', { + 'class': settings.oClasses.sInfo, + 'id': ! nodes ? tid+'_info' : null + } ); + + if ( ! nodes ) { + // Update display on each draw + settings.aoDrawCallback.push( { + "fn": _fnUpdateInfo, + "sName": "information" + } ); + + n + .attr( 'role', 'status' ) + .attr( 'aria-live', 'polite' ); + + // Table is described by our info div + $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); + } + + return n[0]; + } + + + /** + * Update the information elements in the display + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnUpdateInfo ( settings ) + { + /* Show information about the table */ + var nodes = settings.aanFeatures.i; + if ( nodes.length === 0 ) { + return; + } + + var + lang = settings.oLanguage, + start = settings._iDisplayStart+1, + end = settings.fnDisplayEnd(), + max = settings.fnRecordsTotal(), + total = settings.fnRecordsDisplay(), + out = total ? + lang.sInfo : + lang.sInfoEmpty; + + if ( total !== max ) { + /* Record set after filtering */ + out += ' ' + lang.sInfoFiltered; + } + + // Convert the macros + out += lang.sInfoPostFix; + out = _fnInfoMacros( settings, out ); + + var callback = lang.fnInfoCallback; + if ( callback !== null ) { + out = callback.call( settings.oInstance, + settings, start, end, max, total, out + ); + } + + $(nodes).html( out ); + } + + + function _fnInfoMacros ( settings, str ) + { + // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only + // internally + var + formatter = settings.fnFormatNumber, + start = settings._iDisplayStart+1, + len = settings._iDisplayLength, + vis = settings.fnRecordsDisplay(), + all = len === -1; + + return str. + replace(/_START_/g, formatter.call( settings, start ) ). + replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). + replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ). + replace(/_TOTAL_/g, formatter.call( settings, vis ) ). + replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). + replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); + } + + + + /** + * Draw the table for the first time, adding all required features + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnInitialise ( settings ) + { + var i, iLen, iAjaxStart=settings.iInitDisplayStart; + var columns = settings.aoColumns, column; + var features = settings.oFeatures; + + /* Ensure that the table data is fully initialised */ + if ( ! settings.bInitialised ) { + setTimeout( function(){ _fnInitialise( settings ); }, 200 ); + return; + } + + /* Show the display HTML options */ + _fnAddOptionsHtml( settings ); + + /* Build and draw the header / footer for the table */ + _fnBuildHead( settings ); + _fnDrawHead( settings, settings.aoHeader ); + _fnDrawHead( settings, settings.aoFooter ); + + /* Okay to show that something is going on now */ + _fnProcessingDisplay( settings, true ); + + /* Calculate sizes for columns */ + if ( features.bAutoWidth ) { + _fnCalculateColumnWidths( settings ); + } + + for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { + column = columns[i]; + + if ( column.sWidth ) { + column.nTh.style.width = _fnStringToCss( column.sWidth ); + } + } + + // If there is default sorting required - let's do it. The sort function + // will do the drawing for us. Otherwise we draw the table regardless of the + // Ajax source - this allows the table to look initialised for Ajax sourcing + // data (show 'loading' message possibly) + _fnReDraw( settings ); + + // Server-side processing init complete is done by _fnAjaxUpdateDraw + var dataSrc = _fnDataSource( settings ); + if ( dataSrc != 'ssp' ) { + // if there is an ajax source load the data + if ( dataSrc == 'ajax' ) { + _fnBuildAjax( settings, [], function(json) { + var aData = _fnAjaxDataSrc( settings, json ); + + // Got the data - add it to the table + for ( i=0 ; i<aData.length ; i++ ) { + _fnAddData( settings, aData[i] ); + } + + // Reset the init display for cookie saving. We've already done + // a filter, and therefore cleared it before. So we need to make + // it appear 'fresh' + settings.iInitDisplayStart = iAjaxStart; + + _fnReDraw( settings ); + + _fnProcessingDisplay( settings, false ); + _fnInitComplete( settings, json ); + }, settings ); + } + else { + _fnProcessingDisplay( settings, false ); + _fnInitComplete( settings ); + } + } + } + + + /** + * Draw the table for the first time, adding all required features + * @param {object} oSettings dataTables settings object + * @param {object} [json] JSON from the server that completed the table, if using Ajax source + * with client-side processing (optional) + * @memberof DataTable#oApi + */ + function _fnInitComplete ( settings, json ) + { + settings._bInitComplete = true; + + // On an Ajax load we now have data and therefore want to apply the column + // sizing + if ( json ) { + _fnAdjustColumnSizing( settings ); + } + + _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); + } + + + function _fnLengthChange ( settings, val ) + { + var len = parseInt( val, 10 ); + settings._iDisplayLength = len; + + _fnLengthOverflow( settings ); + + // Fire length change event + _fnCallbackFire( settings, null, 'length', [settings, len] ); + } + + + /** + * Generate the node required for user display length changing + * @param {object} settings dataTables settings object + * @returns {node} Display length feature node + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlLength ( settings ) + { + var + classes = settings.oClasses, + tableId = settings.sTableId, + menu = settings.aLengthMenu, + d2 = $.isArray( menu[0] ), + lengths = d2 ? menu[0] : menu, + language = d2 ? menu[1] : menu; + + var select = $('<select/>', { + 'name': tableId+'_length', + 'aria-controls': tableId, + 'class': classes.sLengthSelect + } ); + + for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { + select[0][ i ] = new Option( language[i], lengths[i] ); + } + + var div = $('<div><label/></div>').addClass( classes.sLength ); + if ( ! settings.aanFeatures.l ) { + div[0].id = tableId+'_length'; + } + + div.children().append( + settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) + ); + + // Can't use `select` variable as user might provide their own and the + // reference is broken by the use of outerHTML + $('select', div) + .val( settings._iDisplayLength ) + .bind( 'change.DT', function(e) { + _fnLengthChange( settings, $(this).val() ); + _fnDraw( settings ); + } ); + + // Update node value whenever anything changes the table's length + $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) { + if ( settings === s ) { + $('select', div).val( len ); + } + } ); + + return div[0]; + } + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Note that most of the paging logic is done in + * DataTable.ext.pager + */ + + /** + * Generate the node required for default pagination + * @param {object} oSettings dataTables settings object + * @returns {node} Pagination feature node + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlPaginate ( settings ) + { + var + type = settings.sPaginationType, + plugin = DataTable.ext.pager[ type ], + modern = typeof plugin === 'function', + redraw = function( settings ) { + _fnDraw( settings ); + }, + node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], + features = settings.aanFeatures; + + if ( ! modern ) { + plugin.fnInit( settings, node, redraw ); + } + + /* Add a draw callback for the pagination on first instance, to update the paging display */ + if ( ! features.p ) + { + node.id = settings.sTableId+'_paginate'; + + settings.aoDrawCallback.push( { + "fn": function( settings ) { + if ( modern ) { + var + start = settings._iDisplayStart, + len = settings._iDisplayLength, + visRecords = settings.fnRecordsDisplay(), + all = len === -1, + page = all ? 0 : Math.ceil( start / len ), + pages = all ? 1 : Math.ceil( visRecords / len ), + buttons = plugin(page, pages), + i, ien; + + for ( i=0, ien=features.p.length ; i<ien ; i++ ) { + _fnRenderer( settings, 'pageButton' )( + settings, features.p[i], i, buttons, page, pages + ); + } + } + else { + plugin.fnUpdate( settings, redraw ); + } + }, + "sName": "pagination" + } ); + } + + return node; + } + + + /** + * Alter the display settings to change the page + * @param {object} settings DataTables settings object + * @param {string|int} action Paging action to take: "first", "previous", + * "next" or "last" or page number to jump to (integer) + * @param [bool] redraw Automatically draw the update or not + * @returns {bool} true page has changed, false - no change + * @memberof DataTable#oApi + */ + function _fnPageChange ( settings, action, redraw ) + { + var + start = settings._iDisplayStart, + len = settings._iDisplayLength, + records = settings.fnRecordsDisplay(); + + if ( records === 0 || len === -1 ) + { + start = 0; + } + else if ( typeof action === "number" ) + { + start = action * len; + + if ( start > records ) + { + start = 0; + } + } + else if ( action == "first" ) + { + start = 0; + } + else if ( action == "previous" ) + { + start = len >= 0 ? + start - len : + 0; + + if ( start < 0 ) + { + start = 0; + } + } + else if ( action == "next" ) + { + if ( start + len < records ) + { + start += len; + } + } + else if ( action == "last" ) + { + start = Math.floor( (records-1) / len) * len; + } + else + { + _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); + } + + var changed = settings._iDisplayStart !== start; + settings._iDisplayStart = start; + + if ( changed ) { + _fnCallbackFire( settings, null, 'page', [settings] ); + + if ( redraw ) { + _fnDraw( settings ); + } + } + + return changed; + } + + + + /** + * Generate the node required for the processing node + * @param {object} settings dataTables settings object + * @returns {node} Processing element + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlProcessing ( settings ) + { + return $('<div/>', { + 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null, + 'class': settings.oClasses.sProcessing + } ) + .html( settings.oLanguage.sProcessing ) + .insertBefore( settings.nTable )[0]; + } + + + /** + * Display or hide the processing indicator + * @param {object} settings dataTables settings object + * @param {bool} show Show the processing indicator (true) or not (false) + * @memberof DataTable#oApi + */ + function _fnProcessingDisplay ( settings, show ) + { + if ( settings.oFeatures.bProcessing ) { + $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); + } + + _fnCallbackFire( settings, null, 'processing', [settings, show] ); + } + + /** + * Add any control elements for the table - specifically scrolling + * @param {object} settings dataTables settings object + * @returns {node} Node to add to the DOM + * @memberof DataTable#oApi + */ + function _fnFeatureHtmlTable ( settings ) + { + var table = $(settings.nTable); + + // Add the ARIA grid role to the table + table.attr( 'role', 'grid' ); + + // Scrolling from here on in + var scroll = settings.oScroll; + + if ( scroll.sX === '' && scroll.sY === '' ) { + return settings.nTable; + } + + var scrollX = scroll.sX; + var scrollY = scroll.sY; + var classes = settings.oClasses; + var caption = table.children('caption'); + var captionSide = caption.length ? caption[0]._captionSide : null; + var headerClone = $( table[0].cloneNode(false) ); + var footerClone = $( table[0].cloneNode(false) ); + var footer = table.children('tfoot'); + var _div = '<div/>'; + var size = function ( s ) { + return !s ? null : _fnStringToCss( s ); + }; + + // This is fairly messy, but with x scrolling enabled, if the table has a + // width attribute, regardless of any width applied using the column width + // options, the browser will shrink or grow the table as needed to fit into + // that 100%. That would make the width options useless. So we remove it. + // This is okay, under the assumption that width:100% is applied to the + // table in CSS (it is in the default stylesheet) which will set the table + // width as appropriate (the attribute and css behave differently...) + if ( scroll.sX && table.attr('width') === '100%' ) { + table.removeAttr('width'); + } + + if ( ! footer.length ) { + footer = null; + } + + /* + * The HTML structure that we want to generate in this function is: + * div - scroller + * div - scroll head + * div - scroll head inner + * table - scroll head table + * thead - thead + * div - scroll body + * table - table (master table) + * thead - thead clone for sizing + * tbody - tbody + * div - scroll foot + * div - scroll foot inner + * table - scroll foot table + * tfoot - tfoot + */ + var scroller = $( _div, { 'class': classes.sScrollWrapper } ) + .append( + $(_div, { 'class': classes.sScrollHead } ) + .css( { + overflow: 'hidden', + position: 'relative', + border: 0, + width: scrollX ? size(scrollX) : '100%' + } ) + .append( + $(_div, { 'class': classes.sScrollHeadInner } ) + .css( { + 'box-sizing': 'content-box', + width: scroll.sXInner || '100%' + } ) + .append( + headerClone + .removeAttr('id') + .css( 'margin-left', 0 ) + .append( captionSide === 'top' ? caption : null ) + .append( + table.children('thead') + ) + ) + ) + ) + .append( + $(_div, { 'class': classes.sScrollBody } ) + .css( { + overflow: 'auto', + height: size( scrollY ), + width: size( scrollX ) + } ) + .append( table ) + ); + + if ( footer ) { + scroller.append( + $(_div, { 'class': classes.sScrollFoot } ) + .css( { + overflow: 'hidden', + border: 0, + width: scrollX ? size(scrollX) : '100%' + } ) + .append( + $(_div, { 'class': classes.sScrollFootInner } ) + .append( + footerClone + .removeAttr('id') + .css( 'margin-left', 0 ) + .append( captionSide === 'bottom' ? caption : null ) + .append( + table.children('tfoot') + ) + ) + ) + ); + } + + var children = scroller.children(); + var scrollHead = children[0]; + var scrollBody = children[1]; + var scrollFoot = footer ? children[2] : null; + + // When the body is scrolled, then we also want to scroll the headers + if ( scrollX ) { + $(scrollBody).on( 'scroll.DT', function (e) { + var scrollLeft = this.scrollLeft; + + scrollHead.scrollLeft = scrollLeft; + + if ( footer ) { + scrollFoot.scrollLeft = scrollLeft; + } + } ); + } + + settings.nScrollHead = scrollHead; + settings.nScrollBody = scrollBody; + settings.nScrollFoot = scrollFoot; + + // On redraw - align columns + settings.aoDrawCallback.push( { + "fn": _fnScrollDraw, + "sName": "scrolling" + } ); + + return scroller[0]; + } + + + + /** + * Update the header, footer and body tables for resizing - i.e. column + * alignment. + * + * Welcome to the most horrible function DataTables. The process that this + * function follows is basically: + * 1. Re-create the table inside the scrolling div + * 2. Take live measurements from the DOM + * 3. Apply the measurements to align the columns + * 4. Clean up + * + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnScrollDraw ( settings ) + { + // Given that this is such a monster function, a lot of variables are use + // to try and keep the minimised size as small as possible + var + scroll = settings.oScroll, + scrollX = scroll.sX, + scrollXInner = scroll.sXInner, + scrollY = scroll.sY, + barWidth = scroll.iBarWidth, + divHeader = $(settings.nScrollHead), + divHeaderStyle = divHeader[0].style, + divHeaderInner = divHeader.children('div'), + divHeaderInnerStyle = divHeaderInner[0].style, + divHeaderTable = divHeaderInner.children('table'), + divBodyEl = settings.nScrollBody, + divBody = $(divBodyEl), + divBodyStyle = divBodyEl.style, + divFooter = $(settings.nScrollFoot), + divFooterInner = divFooter.children('div'), + divFooterTable = divFooterInner.children('table'), + header = $(settings.nTHead), + table = $(settings.nTable), + tableEl = table[0], + tableStyle = tableEl.style, + footer = settings.nTFoot ? $(settings.nTFoot) : null, + browser = settings.oBrowser, + ie67 = browser.bScrollOversize, + headerTrgEls, footerTrgEls, + headerSrcEls, footerSrcEls, + headerCopy, footerCopy, + headerWidths=[], footerWidths=[], + headerContent=[], + idx, correction, sanityWidth, + zeroOut = function(nSizer) { + var style = nSizer.style; + style.paddingTop = "0"; + style.paddingBottom = "0"; + style.borderTopWidth = "0"; + style.borderBottomWidth = "0"; + style.height = 0; + }; + + /* + * 1. Re-create the table inside the scrolling div + */ + + // Remove the old minimised thead and tfoot elements in the inner table + table.children('thead, tfoot').remove(); + + // Clone the current header and footer elements and then place it into the inner table + headerCopy = header.clone().prependTo( table ); + headerTrgEls = header.find('tr'); // original header is in its own table + headerSrcEls = headerCopy.find('tr'); + headerCopy.find('th, td').removeAttr('tabindex'); + + if ( footer ) { + footerCopy = footer.clone().prependTo( table ); + footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized + footerSrcEls = footerCopy.find('tr'); + } + + + /* + * 2. Take live measurements from the DOM - do not alter the DOM itself! + */ + + // Remove old sizing and apply the calculated column widths + // Get the unique column headers in the newly created (cloned) header. We want to apply the + // calculated sizes to this header + if ( ! scrollX ) + { + divBodyStyle.width = '100%'; + divHeader[0].style.width = '100%'; + } + + $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { + idx = _fnVisibleToColumnIndex( settings, i ); + el.style.width = settings.aoColumns[idx].sWidth; + } ); + + if ( footer ) { + _fnApplyToChildren( function(n) { + n.style.width = ""; + }, footerSrcEls ); + } + + // If scroll collapse is enabled, when we put the headers back into the body for sizing, we + // will end up forcing the scrollbar to appear, making our measurements wrong for when we + // then hide it (end of this function), so add the header height to the body scroller. + if ( scroll.bCollapse && scrollY !== "" ) { + divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; + } + + // Size the table as a whole + sanityWidth = table.outerWidth(); + if ( scrollX === "" ) { + // No x scrolling + tableStyle.width = "100%"; + + // IE7 will make the width of the table when 100% include the scrollbar + // - which is shouldn't. When there is a scrollbar we need to take this + // into account. + if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight || + divBody.css('overflow-y') == "scroll") + ) { + tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); + } + } + else + { + // x scrolling + if ( scrollXInner !== "" ) { + // x scroll inner has been given - use it + tableStyle.width = _fnStringToCss(scrollXInner); + } + else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) { + // There is y-scrolling - try to take account of the y scroll bar + tableStyle.width = _fnStringToCss( sanityWidth-barWidth ); + if ( table.outerWidth() > sanityWidth-barWidth ) { + // Not possible to take account of it + tableStyle.width = _fnStringToCss( sanityWidth ); + } + } + else { + // When all else fails + tableStyle.width = _fnStringToCss( sanityWidth ); + } + } + + // Recalculate the sanity width - now that we've applied the required width, + // before it was a temporary variable. This is required because the column + // width calculation is done before this table DOM is created. + sanityWidth = table.outerWidth(); + + // Hidden header should have zero height, so remove padding and borders. Then + // set the width based on the real headers + + // Apply all styles in one pass + _fnApplyToChildren( zeroOut, headerSrcEls ); + + // Read all widths in next pass + _fnApplyToChildren( function(nSizer) { + headerContent.push( nSizer.innerHTML ); + headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); + }, headerSrcEls ); + + // Apply all widths in final pass + _fnApplyToChildren( function(nToSize, i) { + nToSize.style.width = headerWidths[i]; + }, headerTrgEls ); + + $(headerSrcEls).height(0); + + /* Same again with the footer if we have one */ + if ( footer ) + { + _fnApplyToChildren( zeroOut, footerSrcEls ); + + _fnApplyToChildren( function(nSizer) { + footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); + }, footerSrcEls ); + + _fnApplyToChildren( function(nToSize, i) { + nToSize.style.width = footerWidths[i]; + }, footerTrgEls ); + + $(footerSrcEls).height(0); + } + + + /* + * 3. Apply the measurements + */ + + // "Hide" the header and footer that we used for the sizing. We need to keep + // the content of the cell so that the width applied to the header and body + // both match, but we want to hide it completely. We want to also fix their + // width to what they currently are + _fnApplyToChildren( function(nSizer, i) { + nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; + nSizer.style.width = headerWidths[i]; + }, headerSrcEls ); + + if ( footer ) + { + _fnApplyToChildren( function(nSizer, i) { + nSizer.innerHTML = ""; + nSizer.style.width = footerWidths[i]; + }, footerSrcEls ); + } + + // Sanity check that the table is of a sensible width. If not then we are going to get + // misalignment - try to prevent this by not allowing the table to shrink below its min width + if ( table.outerWidth() < sanityWidth ) + { + // The min width depends upon if we have a vertical scrollbar visible or not */ + correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight || + divBody.css('overflow-y') == "scroll")) ? + sanityWidth+barWidth : + sanityWidth; + + // IE6/7 are a law unto themselves... + if ( ie67 && (divBodyEl.scrollHeight > + divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") + ) { + tableStyle.width = _fnStringToCss( correction-barWidth ); + } + + // And give the user a warning that we've stopped the table getting too small + if ( scrollX === "" || scrollXInner !== "" ) { + _fnLog( settings, 1, 'Possible column misalignment', 6 ); + } + } + else + { + correction = '100%'; + } + + // Apply to the container elements + divBodyStyle.width = _fnStringToCss( correction ); + divHeaderStyle.width = _fnStringToCss( correction ); + + if ( footer ) { + settings.nScrollFoot.style.width = _fnStringToCss( correction ); + } + + + /* + * 4. Clean up + */ + if ( ! scrollY ) { + /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting + * the scrollbar height from the visible display, rather than adding it on. We need to + * set the height in order to sort this. Don't want to do it in any other browsers. + */ + if ( ie67 ) { + divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); + } + } + + if ( scrollY && scroll.bCollapse ) { + divBodyStyle.height = _fnStringToCss( scrollY ); + + var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? + barWidth : + 0; + + if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { + divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); + } + } + + /* Finally set the width's of the header and footer tables */ + var iOuterWidth = table.outerWidth(); + divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); + divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); + + // Figure out if there are scrollbar present - if so then we need a the header and footer to + // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) + var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; + var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); + divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; + + if ( footer ) { + divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); + divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); + divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; + } + + /* Adjust the position of the header in case we loose the y-scrollbar */ + divBody.scroll(); + + // If sorting or filtering has occurred, jump the scrolling back to the top + // only if we aren't holding the position + if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { + divBodyEl.scrollTop = 0; + } + } + + + + /** + * Apply a given function to the display child nodes of an element array (typically + * TD children of TR rows + * @param {function} fn Method to apply to the objects + * @param array {nodes} an1 List of elements to look through for display children + * @param array {nodes} an2 Another list (identical structure to the first) - optional + * @memberof DataTable#oApi + */ + function _fnApplyToChildren( fn, an1, an2 ) + { + var index=0, i=0, iLen=an1.length; + var nNode1, nNode2; + + while ( i < iLen ) { + nNode1 = an1[i].firstChild; + nNode2 = an2 ? an2[i].firstChild : null; + + while ( nNode1 ) { + if ( nNode1.nodeType === 1 ) { + if ( an2 ) { + fn( nNode1, nNode2, index ); + } + else { + fn( nNode1, index ); + } + + index++; + } + + nNode1 = nNode1.nextSibling; + nNode2 = an2 ? nNode2.nextSibling : null; + } + + i++; + } + } + + + + var __re_html_remove = /<.*?>/g; + + + /** + * Calculate the width of columns for the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnCalculateColumnWidths ( oSettings ) + { + var + table = oSettings.nTable, + columns = oSettings.aoColumns, + scroll = oSettings.oScroll, + scrollY = scroll.sY, + scrollX = scroll.sX, + scrollXInner = scroll.sXInner, + columnCount = columns.length, + visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), + headerCells = $('th', oSettings.nTHead), + tableWidthAttr = table.getAttribute('width'), // from DOM element + tableContainer = table.parentNode, + userInputs = false, + i, column, columnIdx, width, outerWidth; + + var styleWidth = table.style.width; + if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { + tableWidthAttr = styleWidth; + } + + /* Convert any user input sizes into pixel sizes */ + for ( i=0 ; i<visibleColumns.length ; i++ ) { + column = columns[ visibleColumns[i] ]; + + if ( column.sWidth !== null ) { + column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); + + userInputs = true; + } + } + + /* If the number of columns in the DOM equals the number that we have to + * process in DataTables, then we can use the offsets that are created by + * the web- browser. No custom sizes can be set in order for this to happen, + * nor scrolling used + */ + if ( ! userInputs && ! scrollX && ! scrollY && + columnCount == _fnVisbleColumns( oSettings ) && + columnCount == headerCells.length + ) { + for ( i=0 ; i<columnCount ; i++ ) { + columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() ); + } + } + else + { + // Otherwise construct a single row, worst case, table with the widest + // node in the data, assign any user defined widths, then insert it into + // the DOM and allow the browser to do all the hard work of calculating + // table widths + var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table + .css( 'visibility', 'hidden' ) + .removeAttr( 'id' ); + + // Clean up the table body + tmpTable.find('tbody tr').remove(); + var tr = $('<tr/>').appendTo( tmpTable.find('tbody') ); + + // Remove any assigned widths from the footer (from scrolling) + tmpTable.find('tfoot th, tfoot td').css('width', ''); + + // Apply custom sizing to the cloned header + headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); + + for ( i=0 ; i<visibleColumns.length ; i++ ) { + column = columns[ visibleColumns[i] ]; + + headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? + _fnStringToCss( column.sWidthOrig ) : + ''; + } + + // Find the widest cell for each column and put it into the table + if ( oSettings.aoData.length ) { + for ( i=0 ; i<visibleColumns.length ; i++ ) { + columnIdx = visibleColumns[i]; + column = columns[ columnIdx ]; + + $( _fnGetWidestNode( oSettings, columnIdx ) ) + .clone( false ) + .append( column.sContentPadding ) + .appendTo( tr ); + } + } + + // Table has been built, attach to the document so we can work with it + tmpTable.appendTo( tableContainer ); + + // When scrolling (X or Y) we want to set the width of the table as + // appropriate. However, when not scrolling leave the table width as it + // is. This results in slightly different, but I think correct behaviour + if ( scrollX && scrollXInner ) { + tmpTable.width( scrollXInner ); + } + else if ( scrollX ) { + tmpTable.css( 'width', 'auto' ); + + if ( tmpTable.width() < tableContainer.offsetWidth ) { + tmpTable.width( tableContainer.offsetWidth ); + } + } + else if ( scrollY ) { + tmpTable.width( tableContainer.offsetWidth ); + } + else if ( tableWidthAttr ) { + tmpTable.width( tableWidthAttr ); + } + + // Take into account the y scrollbar + _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); + + // Browsers need a bit of a hand when a width is assigned to any columns + // when x-scrolling as they tend to collapse the table to the min-width, + // even if we sent the column widths. So we need to keep track of what + // the table width should be by summing the user given values, and the + // automatic values + if ( scrollX ) + { + var total = 0; + + for ( i=0 ; i<visibleColumns.length ; i++ ) { + column = columns[ visibleColumns[i] ]; + outerWidth = $(headerCells[i]).outerWidth(); + + total += column.sWidthOrig === null ? + outerWidth : + parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width(); + } + + tmpTable.width( _fnStringToCss( total ) ); + table.style.width = _fnStringToCss( total ); + } + + // Get the width of each column in the constructed table + for ( i=0 ; i<visibleColumns.length ; i++ ) { + column = columns[ visibleColumns[i] ]; + width = $(headerCells[i]).width(); + + if ( width ) { + column.sWidth = _fnStringToCss( width ); + } + } + + table.style.width = _fnStringToCss( tmpTable.css('width') ); + + // Finished with the table - ditch it + tmpTable.remove(); + } + + // If there is a width attr, we want to attach an event listener which + // allows the table sizing to automatically adjust when the window is + // resized. Use the width attr rather than CSS, since we can't know if the + // CSS is a relative value or absolute - DOM read is always px. + if ( tableWidthAttr ) { + table.style.width = _fnStringToCss( tableWidthAttr ); + } + + if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { + var bindResize = function () { + $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { + _fnAdjustColumnSizing( oSettings ); + } ) ); + }; + + // IE6/7 will crash if we bind a resize event handler on page load. + // To be removed in 1.11 which drops IE6/7 support + if ( oSettings.oBrowser.bScrollOversize ) { + setTimeout( bindResize, 1000 ); + } + else { + bindResize(); + } + + oSettings._reszEvt = true; + } + } + + + /** + * Throttle the calls to a function. Arguments and context are maintained for + * the throttled function + * @param {function} fn Function to be called + * @param {int} [freq=200] call frequency in mS + * @returns {function} wrapped function + * @memberof DataTable#oApi + */ + function _fnThrottle( fn, freq ) { + var + frequency = freq !== undefined ? freq : 200, + last, + timer; + + return function () { + var + that = this, + now = +new Date(), + args = arguments; + + if ( last && now < last + frequency ) { + clearTimeout( timer ); + + timer = setTimeout( function () { + last = undefined; + fn.apply( that, args ); + }, frequency ); + } + else { + last = now; + fn.apply( that, args ); + } + }; + } + + + /** + * Convert a CSS unit width to pixels (e.g. 2em) + * @param {string} width width to be converted + * @param {node} parent parent to get the with for (required for relative widths) - optional + * @returns {int} width in pixels + * @memberof DataTable#oApi + */ + function _fnConvertToWidth ( width, parent ) + { + if ( ! width ) { + return 0; + } + + var n = $('<div/>') + .css( 'width', _fnStringToCss( width ) ) + .appendTo( parent || document.body ); + + var val = n[0].offsetWidth; + n.remove(); + + return val; + } + + + /** + * Adjust a table's width to take account of vertical scroll bar + * @param {object} oSettings dataTables settings object + * @param {node} n table node + * @memberof DataTable#oApi + */ + + function _fnScrollingWidthAdjust ( settings, n ) + { + var scroll = settings.oScroll; + + if ( scroll.sX || scroll.sY ) { + // When y-scrolling only, we want to remove the width of the scroll bar + // so the table + scroll bar will fit into the area available, otherwise + // we fix the table at its current size with no adjustment + var correction = ! scroll.sX ? scroll.iBarWidth : 0; + n.style.width = _fnStringToCss( $(n).outerWidth() - correction ); + } + } + + + /** + * Get the widest node + * @param {object} settings dataTables settings object + * @param {int} colIdx column of interest + * @returns {node} widest table node + * @memberof DataTable#oApi + */ + function _fnGetWidestNode( settings, colIdx ) + { + var idx = _fnGetMaxLenString( settings, colIdx ); + if ( idx < 0 ) { + return null; + } + + var data = settings.aoData[ idx ]; + return ! data.nTr ? // Might not have been created when deferred rendering + $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : + data.anCells[ colIdx ]; + } + + + /** + * Get the maximum strlen for each data column + * @param {object} settings dataTables settings object + * @param {int} colIdx column of interest + * @returns {string} max string length for each column + * @memberof DataTable#oApi + */ + function _fnGetMaxLenString( settings, colIdx ) + { + var s, max=-1, maxIdx = -1; + + for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { + s = _fnGetCellData( settings, i, colIdx, 'display' )+''; + s = s.replace( __re_html_remove, '' ); + + if ( s.length > max ) { + max = s.length; + maxIdx = i; + } + } + + return maxIdx; + } + + + /** + * Append a CSS unit (only if required) to a string + * @param {string} value to css-ify + * @returns {string} value with css unit + * @memberof DataTable#oApi + */ + function _fnStringToCss( s ) + { + if ( s === null ) { + return '0px'; + } + + if ( typeof s == 'number' ) { + return s < 0 ? + '0px' : + s+'px'; + } + + // Check it has a unit character already + return s.match(/\d$/) ? + s+'px' : + s; + } + + + /** + * Get the width of a scroll bar in this browser being used + * @returns {int} width in pixels + * @memberof DataTable#oApi + */ + function _fnScrollBarWidth () + { + // On first run a static variable is set, since this is only needed once. + // Subsequent runs will just use the previously calculated value + var width = DataTable.__scrollbarWidth; + + if ( width === undefined ) { + var sizer = $('<p/>').css( { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: 150, + padding: 0, + overflow: 'scroll', + visibility: 'hidden' + } ) + .appendTo('body'); + + width = sizer[0].offsetWidth - sizer[0].clientWidth; + DataTable.__scrollbarWidth = width; + + sizer.remove(); + } + + return width; + } + + + + function _fnSortFlatten ( settings ) + { + var + i, iLen, k, kLen, + aSort = [], + aiOrig = [], + aoColumns = settings.aoColumns, + aDataSort, iCol, sType, srcCol, + fixed = settings.aaSortingFixed, + fixedObj = $.isPlainObject( fixed ), + nestedSort = [], + add = function ( a ) { + if ( a.length && ! $.isArray( a[0] ) ) { + // 1D array + nestedSort.push( a ); + } + else { + // 2D array + nestedSort.push.apply( nestedSort, a ); + } + }; + + // Build the sort array, with pre-fix and post-fix options if they have been + // specified + if ( $.isArray( fixed ) ) { + add( fixed ); + } + + if ( fixedObj && fixed.pre ) { + add( fixed.pre ); + } + + add( settings.aaSorting ); + + if (fixedObj && fixed.post ) { + add( fixed.post ); + } + + for ( i=0 ; i<nestedSort.length ; i++ ) + { + srcCol = nestedSort[i][0]; + aDataSort = aoColumns[ srcCol ].aDataSort; + + for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) + { + iCol = aDataSort[k]; + sType = aoColumns[ iCol ].sType || 'string'; + + if ( nestedSort[i]._idx === undefined ) { + nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); + } + + aSort.push( { + src: srcCol, + col: iCol, + dir: nestedSort[i][1], + index: nestedSort[i]._idx, + type: sType, + formatter: DataTable.ext.type.order[ sType+"-pre" ] + } ); + } + } + + return aSort; + } + + /** + * Change the order of the table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + * @todo This really needs split up! + */ + function _fnSort ( oSettings ) + { + var + i, ien, iLen, j, jLen, k, kLen, + sDataType, nTh, + aiOrig = [], + oExtSort = DataTable.ext.type.order, + aoData = oSettings.aoData, + aoColumns = oSettings.aoColumns, + aDataSort, data, iCol, sType, oSort, + formatters = 0, + sortCol, + displayMaster = oSettings.aiDisplayMaster, + aSort; + + // Resolve any column types that are unknown due to addition or invalidation + // @todo Can this be moved into a 'data-ready' handler which is called when + // data is going to be used in the table? + _fnColumnTypes( oSettings ); + + aSort = _fnSortFlatten( oSettings ); + + for ( i=0, ien=aSort.length ; i<ien ; i++ ) { + sortCol = aSort[i]; + + // Track if we can use the fast sort algorithm + if ( sortCol.formatter ) { + formatters++; + } + + // Load the data needed for the sort, for each cell + _fnSortData( oSettings, sortCol.col ); + } + + /* No sorting required if server-side or no sorting array */ + if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) + { + // Create a value - key array of the current row positions such that we can use their + // current position during the sort, if values match, in order to perform stable sorting + for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { + aiOrig[ displayMaster[i] ] = i; + } + + /* Do the sort - here we want multi-column sorting based on a given data source (column) + * and sorting function (from oSort) in a certain direction. It's reasonably complex to + * follow on it's own, but this is what we want (example two column sorting): + * fnLocalSorting = function(a,b){ + * var iTest; + * iTest = oSort['string-asc']('data11', 'data12'); + * if (iTest !== 0) + * return iTest; + * iTest = oSort['numeric-desc']('data21', 'data22'); + * if (iTest !== 0) + * return iTest; + * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); + * } + * Basically we have a test for each sorting column, if the data in that column is equal, + * test the next column. If all columns match, then we use a numeric sort on the row + * positions in the original data array to provide a stable sort. + * + * Note - I know it seems excessive to have two sorting methods, but the first is around + * 15% faster, so the second is only maintained for backwards compatibility with sorting + * methods which do not have a pre-sort formatting function. + */ + if ( formatters === aSort.length ) { + // All sort types have formatting functions + displayMaster.sort( function ( a, b ) { + var + x, y, k, test, sort, + len=aSort.length, + dataA = aoData[a]._aSortData, + dataB = aoData[b]._aSortData; + + for ( k=0 ; k<len ; k++ ) { + sort = aSort[k]; + + x = dataA[ sort.col ]; + y = dataB[ sort.col ]; + + test = x<y ? -1 : x>y ? 1 : 0; + if ( test !== 0 ) { + return sort.dir === 'asc' ? test : -test; + } + } + + x = aiOrig[a]; + y = aiOrig[b]; + return x<y ? -1 : x>y ? 1 : 0; + } ); + } + else { + // Depreciated - remove in 1.11 (providing a plug-in option) + // Not all sort types have formatting methods, so we have to call their sorting + // methods. + displayMaster.sort( function ( a, b ) { + var + x, y, k, l, test, sort, fn, + len=aSort.length, + dataA = aoData[a]._aSortData, + dataB = aoData[b]._aSortData; + + for ( k=0 ; k<len ; k++ ) { + sort = aSort[k]; + + x = dataA[ sort.col ]; + y = dataB[ sort.col ]; + + fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; + test = fn( x, y ); + if ( test !== 0 ) { + return test; + } + } + + x = aiOrig[a]; + y = aiOrig[b]; + return x<y ? -1 : x>y ? 1 : 0; + } ); + } + } + + /* Tell the draw function that we have sorted the data */ + oSettings.bSorted = true; + } + + + function _fnSortAria ( settings ) + { + var label; + var nextSort; + var columns = settings.aoColumns; + var aSort = _fnSortFlatten( settings ); + var oAria = settings.oLanguage.oAria; + + // ARIA attributes - need to loop all columns, to update all (removing old + // attributes as needed) + for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) + { + var col = columns[i]; + var asSorting = col.asSorting; + var sTitle = col.sTitle.replace( /<.*?>/g, "" ); + var th = col.nTh; + + // IE7 is throwing an error when setting these properties with jQuery's + // attr() and removeAttr() methods... + th.removeAttribute('aria-sort'); + + /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ + if ( col.bSortable ) { + if ( aSort.length > 0 && aSort[0].col == i ) { + th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" ); + nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0]; + } + else { + nextSort = asSorting[0]; + } + + label = sTitle + ( nextSort === "asc" ? + oAria.sSortAscending : + oAria.sSortDescending + ); + } + else { + label = sTitle; + } + + th.setAttribute('aria-label', label); + } + } + + + /** + * Function to run on user sort request + * @param {object} settings dataTables settings object + * @param {node} attachTo node to attach the handler to + * @param {int} colIdx column sorting index + * @param {boolean} [append=false] Append the requested sort to the existing + * sort if true (i.e. multi-column sort) + * @param {function} [callback] callback function + * @memberof DataTable#oApi + */ + function _fnSortListener ( settings, colIdx, append, callback ) + { + var col = settings.aoColumns[ colIdx ]; + var sorting = settings.aaSorting; + var asSorting = col.asSorting; + var nextSortIdx; + var next = function ( a, overflow ) { + var idx = a._idx; + if ( idx === undefined ) { + idx = $.inArray( a[1], asSorting ); + } + + return idx+1 < asSorting.length ? + idx+1 : + overflow ? + null : + 0; + }; + + // Convert to 2D array if needed + if ( typeof sorting[0] === 'number' ) { + sorting = settings.aaSorting = [ sorting ]; + } + + // If appending the sort then we are multi-column sorting + if ( append && settings.oFeatures.bSortMulti ) { + // Are we already doing some kind of sort on this column? + var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); + + if ( sortIdx !== -1 ) { + // Yes, modify the sort + nextSortIdx = next( sorting[sortIdx], true ); + + if ( nextSortIdx === null && sorting.length === 1 ) { + nextSortIdx = 0; // can't remove sorting completely + } + + if ( nextSortIdx === null ) { + sorting.splice( sortIdx, 1 ); + } + else { + sorting[sortIdx][1] = asSorting[ nextSortIdx ]; + sorting[sortIdx]._idx = nextSortIdx; + } + } + else { + // No sort on this column yet + sorting.push( [ colIdx, asSorting[0], 0 ] ); + sorting[sorting.length-1]._idx = 0; + } + } + else if ( sorting.length && sorting[0][0] == colIdx ) { + // Single column - already sorting on this column, modify the sort + nextSortIdx = next( sorting[0] ); + + sorting.length = 1; + sorting[0][1] = asSorting[ nextSortIdx ]; + sorting[0]._idx = nextSortIdx; + } + else { + // Single column - sort only on this column + sorting.length = 0; + sorting.push( [ colIdx, asSorting[0] ] ); + sorting[0]._idx = 0; + } + + // Run the sort by calling a full redraw + _fnReDraw( settings ); + + // callback used for async user interaction + if ( typeof callback == 'function' ) { + callback( settings ); + } + } + + + /** + * Attach a sort handler (click) to a node + * @param {object} settings dataTables settings object + * @param {node} attachTo node to attach the handler to + * @param {int} colIdx column sorting index + * @param {function} [callback] callback function + * @memberof DataTable#oApi + */ + function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) + { + var col = settings.aoColumns[ colIdx ]; + + _fnBindAction( attachTo, {}, function (e) { + /* If the column is not sortable - don't to anything */ + if ( col.bSortable === false ) { + return; + } + + // If processing is enabled use a timeout to allow the processing + // display to be shown - otherwise to it synchronously + if ( settings.oFeatures.bProcessing ) { + _fnProcessingDisplay( settings, true ); + + setTimeout( function() { + _fnSortListener( settings, colIdx, e.shiftKey, callback ); + + // In server-side processing, the draw callback will remove the + // processing display + if ( _fnDataSource( settings ) !== 'ssp' ) { + _fnProcessingDisplay( settings, false ); + } + }, 0 ); + } + else { + _fnSortListener( settings, colIdx, e.shiftKey, callback ); + } + } ); + } + + + /** + * Set the sorting classes on table's body, Note: it is safe to call this function + * when bSort and bSortClasses are false + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnSortingClasses( settings ) + { + var oldSort = settings.aLastSort; + var sortClass = settings.oClasses.sSortColumn; + var sort = _fnSortFlatten( settings ); + var features = settings.oFeatures; + var i, ien, colIdx; + + if ( features.bSort && features.bSortClasses ) { + // Remove old sorting classes + for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { + colIdx = oldSort[i].src; + + // Remove column sorting + $( _pluck( settings.aoData, 'anCells', colIdx ) ) + .removeClass( sortClass + (i<2 ? i+1 : 3) ); + } + + // Add new column sorting + for ( i=0, ien=sort.length ; i<ien ; i++ ) { + colIdx = sort[i].src; + + $( _pluck( settings.aoData, 'anCells', colIdx ) ) + .addClass( sortClass + (i<2 ? i+1 : 3) ); + } + } + + settings.aLastSort = sort; + } + + + // Get the data to sort a column, be it from cache, fresh (populating the + // cache), or from a sort formatter + function _fnSortData( settings, idx ) + { + // Custom sorting function - provided by the sort data type + var column = settings.aoColumns[ idx ]; + var customSort = DataTable.ext.order[ column.sSortDataType ]; + var customData; + + if ( customSort ) { + customData = customSort.call( settings.oInstance, settings, idx, + _fnColumnIndexToVisible( settings, idx ) + ); + } + + // Use / populate cache + var row, cellData; + var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; + + for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { + row = settings.aoData[i]; + + if ( ! row._aSortData ) { + row._aSortData = []; + } + + if ( ! row._aSortData[idx] || customSort ) { + cellData = customSort ? + customData[i] : // If there was a custom sort function, use data from there + _fnGetCellData( settings, i, idx, 'sort' ); + + row._aSortData[ idx ] = formatter ? + formatter( cellData ) : + cellData; + } + } + } + + + + /** + * Save the state of a table + * @param {object} oSettings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnSaveState ( settings ) + { + if ( !settings.oFeatures.bStateSave || settings.bDestroying ) + { + return; + } + + /* Store the interesting variables */ + var state = { + time: +new Date(), + start: settings._iDisplayStart, + length: settings._iDisplayLength, + order: $.extend( true, [], settings.aaSorting ), + search: _fnSearchToCamel( settings.oPreviousSearch ), + columns: $.map( settings.aoColumns, function ( col, i ) { + return { + visible: col.bVisible, + search: _fnSearchToCamel( settings.aoPreSearchCols[i] ) + }; + } ) + }; + + _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); + + settings.oSavedState = state; + settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); + } + + + /** + * Attempt to load a saved table state + * @param {object} oSettings dataTables settings object + * @param {object} oInit DataTables init object so we can override settings + * @memberof DataTable#oApi + */ + function _fnLoadState ( settings, oInit ) + { + var i, ien; + var columns = settings.aoColumns; + + if ( ! settings.oFeatures.bStateSave ) { + return; + } + + var state = settings.fnStateLoadCallback.call( settings.oInstance, settings ); + if ( ! state || ! state.time ) { + return; + } + + /* Allow custom and plug-in manipulation functions to alter the saved data set and + * cancelling of loading by returning false + */ + var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] ); + if ( $.inArray( false, abStateLoad ) !== -1 ) { + return; + } + + /* Reject old data */ + var duration = settings.iStateDuration; + if ( duration > 0 && state.time < +new Date() - (duration*1000) ) { + return; + } + + // Number of columns have changed - all bets are off, no restore of settings + if ( columns.length !== state.columns.length ) { + return; + } + + // Store the saved state so it might be accessed at any time + settings.oLoadedState = $.extend( true, {}, state ); + + // Restore key features - todo - for 1.11 this needs to be done by + // subscribed events + if ( state.start !== undefined ) { + settings._iDisplayStart = state.start; + settings.iInitDisplayStart = state.start; + } + if ( state.length !== undefined ) { + settings._iDisplayLength = state.length; + } + + // Order + if ( state.order !== undefined ) { + settings.aaSorting = []; + $.each( state.order, function ( i, col ) { + settings.aaSorting.push( col[0] >= columns.length ? + [ 0, col[1] ] : + col + ); + } ); + } + + // Search + if ( state.search !== undefined ) { + $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); + } + + // Columns + for ( i=0, ien=state.columns.length ; i<ien ; i++ ) { + var col = state.columns[i]; + + // Visibility + if ( col.visible !== undefined ) { + columns[i].bVisible = col.visible; + } + + // Search + if ( col.search !== undefined ) { + $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); + } + } + + _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] ); + } + + + /** + * Return the settings object for a particular table + * @param {node} table table we are using as a dataTable + * @returns {object} Settings object - or null if not found + * @memberof DataTable#oApi + */ + function _fnSettingsFromNode ( table ) + { + var settings = DataTable.settings; + var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); + + return idx !== -1 ? + settings[ idx ] : + null; + } + + + /** + * Log an error message + * @param {object} settings dataTables settings object + * @param {int} level log error messages, or display them to the user + * @param {string} msg error message + * @param {int} tn Technical note id to get more information about the error. + * @memberof DataTable#oApi + */ + function _fnLog( settings, level, msg, tn ) + { + msg = 'DataTables warning: '+ + (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg; + + if ( tn ) { + msg += '. For more information about this error, please see '+ + 'http://datatables.net/tn/'+tn; + } + + if ( ! level ) { + // Backwards compatibility pre 1.10 + var ext = DataTable.ext; + var type = ext.sErrMode || ext.errMode; + + _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] ); + + if ( type == 'alert' ) { + alert( msg ); + } + else if ( type == 'throw' ) { + throw new Error(msg); + } + else if ( typeof type == 'function' ) { + type( settings, tn, msg ); + } + } + else if ( window.console && console.log ) { + console.log( msg ); + } + } + + + /** + * See if a property is defined on one object, if so assign it to the other object + * @param {object} ret target object + * @param {object} src source object + * @param {string} name property + * @param {string} [mappedName] name to map too - optional, name used if not given + * @memberof DataTable#oApi + */ + function _fnMap( ret, src, name, mappedName ) + { + if ( $.isArray( name ) ) { + $.each( name, function (i, val) { + if ( $.isArray( val ) ) { + _fnMap( ret, src, val[0], val[1] ); + } + else { + _fnMap( ret, src, val ); + } + } ); + + return; + } + + if ( mappedName === undefined ) { + mappedName = name; + } + + if ( src[name] !== undefined ) { + ret[mappedName] = src[name]; + } + } + + + /** + * Extend objects - very similar to jQuery.extend, but deep copy objects, and + * shallow copy arrays. The reason we need to do this, is that we don't want to + * deep copy array init values (such as aaSorting) since the dev wouldn't be + * able to override them, but we do want to deep copy arrays. + * @param {object} out Object to extend + * @param {object} extender Object from which the properties will be applied to + * out + * @param {boolean} breakRefs If true, then arrays will be sliced to take an + * independent copy with the exception of the `data` or `aaData` parameters + * if they are present. This is so you can pass in a collection to + * DataTables and have that used as your data source without breaking the + * references + * @returns {object} out Reference, just for convenience - out === the return. + * @memberof DataTable#oApi + * @todo This doesn't take account of arrays inside the deep copied objects. + */ + function _fnExtend( out, extender, breakRefs ) + { + var val; + + for ( var prop in extender ) { + if ( extender.hasOwnProperty(prop) ) { + val = extender[prop]; + + if ( $.isPlainObject( val ) ) { + if ( ! $.isPlainObject( out[prop] ) ) { + out[prop] = {}; + } + $.extend( true, out[prop], val ); + } + else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) { + out[prop] = val.slice(); + } + else { + out[prop] = val; + } + } + } + + return out; + } + + + /** + * Bind an event handers to allow a click or return key to activate the callback. + * This is good for accessibility since a return on the keyboard will have the + * same effect as a click, if the element has focus. + * @param {element} n Element to bind the action to + * @param {object} oData Data object to pass to the triggered function + * @param {function} fn Callback function for when the event is triggered + * @memberof DataTable#oApi + */ + function _fnBindAction( n, oData, fn ) + { + $(n) + .bind( 'click.DT', oData, function (e) { + n.blur(); // Remove focus outline for mouse users + fn(e); + } ) + .bind( 'keypress.DT', oData, function (e){ + if ( e.which === 13 ) { + e.preventDefault(); + fn(e); + } + } ) + .bind( 'selectstart.DT', function () { + /* Take the brutal approach to cancelling text selection */ + return false; + } ); + } + + + /** + * Register a callback function. Easily allows a callback function to be added to + * an array store of callback functions that can then all be called together. + * @param {object} oSettings dataTables settings object + * @param {string} sStore Name of the array storage for the callbacks in oSettings + * @param {function} fn Function to be called back + * @param {string} sName Identifying name for the callback (i.e. a label) + * @memberof DataTable#oApi + */ + function _fnCallbackReg( oSettings, sStore, fn, sName ) + { + if ( fn ) + { + oSettings[sStore].push( { + "fn": fn, + "sName": sName + } ); + } + } + + + /** + * Fire callback functions and trigger events. Note that the loop over the + * callback array store is done backwards! Further note that you do not want to + * fire off triggers in time sensitive applications (for example cell creation) + * as its slow. + * @param {object} settings dataTables settings object + * @param {string} callbackArr Name of the array storage for the callbacks in + * oSettings + * @param {string} eventName Name of the jQuery custom event to trigger. If + * null no trigger is fired + * @param {array} args Array of arguments to pass to the callback function / + * trigger + * @memberof DataTable#oApi + */ + function _fnCallbackFire( settings, callbackArr, eventName, args ) + { + var ret = []; + + if ( callbackArr ) { + ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { + return val.fn.apply( settings.oInstance, args ); + } ); + } + + if ( eventName !== null ) { + var e = $.Event( eventName+'.dt' ); + + $(settings.nTable).trigger( e, args ); + + ret.push( e.result ); + } + + return ret; + } + + + function _fnLengthOverflow ( settings ) + { + var + start = settings._iDisplayStart, + end = settings.fnDisplayEnd(), + len = settings._iDisplayLength; + + /* If we have space to show extra rows (backing up from the end point - then do so */ + if ( start >= end ) + { + start = end - len; + } + + // Keep the start record on the current page + start -= (start % len); + + if ( len === -1 || start < 0 ) + { + start = 0; + } + + settings._iDisplayStart = start; + } + + + function _fnRenderer( settings, type ) + { + var renderer = settings.renderer; + var host = DataTable.ext.renderer[type]; + + if ( $.isPlainObject( renderer ) && renderer[type] ) { + // Specific renderer for this type. If available use it, otherwise use + // the default. + return host[renderer[type]] || host._; + } + else if ( typeof renderer === 'string' ) { + // Common renderer - if there is one available for this type use it, + // otherwise use the default + return host[renderer] || host._; + } + + // Use the default + return host._; + } + + + /** + * Detect the data source being used for the table. Used to simplify the code + * a little (ajax) and to make it compress a little smaller. + * + * @param {object} settings dataTables settings object + * @returns {string} Data source + * @memberof DataTable#oApi + */ + function _fnDataSource ( settings ) + { + if ( settings.oFeatures.bServerSide ) { + return 'ssp'; + } + else if ( settings.ajax || settings.sAjaxSource ) { + return 'ajax'; + } + return 'dom'; + } + + + DataTable = function( options ) + { + /** + * Perform a jQuery selector action on the table's TR elements (from the tbody) and + * return the resulting jQuery object. + * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on + * @param {object} [oOpts] Optional parameters for modifying the rows to be included + * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter + * criterion ("applied") or all TR elements (i.e. no filter). + * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. + * Can be either 'current', whereby the current sorting of the table is used, or + * 'original' whereby the original order the data was read into the table is used. + * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page + * ("current") or not ("all"). If 'current' is given, then order is assumed to be + * 'current' and filter is 'applied', regardless of what they might be given as. + * @returns {object} jQuery object, filtered by the given selector. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Highlight every second row + * oTable.$('tr:odd').css('backgroundColor', 'blue'); + * } ); + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Filter to rows with 'Webkit' in them, add a background colour and then + * // remove the filter, thus highlighting the 'Webkit' rows only. + * oTable.fnFilter('Webkit'); + * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); + * oTable.fnFilter(''); + * } ); + */ + this.$ = function ( sSelector, oOpts ) + { + return this.api(true).$( sSelector, oOpts ); + }; + + + /** + * Almost identical to $ in operation, but in this case returns the data for the matched + * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes + * rather than any descendants, so the data can be obtained for the row/cell. If matching + * rows are found, the data returned is the original data array/object that was used to + * create the row (or a generated array if from a DOM source). + * + * This method is often useful in-combination with $ where both functions are given the + * same parameters and the array indexes will match identically. + * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on + * @param {object} [oOpts] Optional parameters for modifying the rows to be included + * @param {string} [oOpts.filter=none] Select elements that meet the current filter + * criterion ("applied") or all elements (i.e. no filter). + * @param {string} [oOpts.order=current] Order of the data in the processed array. + * Can be either 'current', whereby the current sorting of the table is used, or + * 'original' whereby the original order the data was read into the table is used. + * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page + * ("current") or not ("all"). If 'current' is given, then order is assumed to be + * 'current' and filter is 'applied', regardless of what they might be given as. + * @returns {array} Data for the matched elements. If any elements, as a result of the + * selector, were not TR, TD or TH elements in the DataTable, they will have a null + * entry in the array. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Get the data from the first row in the table + * var data = oTable._('tr:first'); + * + * // Do something useful with the data + * alert( "First cell is: "+data[0] ); + * } ); + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Filter to 'Webkit' and get all data for + * oTable.fnFilter('Webkit'); + * var data = oTable._('tr', {"search": "applied"}); + * + * // Do something with the data + * alert( data.length+" rows matched the search" ); + * } ); + */ + this._ = function ( sSelector, oOpts ) + { + return this.api(true).rows( sSelector, oOpts ).data(); + }; + + + /** + * Create a DataTables Api instance, with the currently selected tables for + * the Api's context. + * @param {boolean} [traditional=false] Set the API instance's context to be + * only the table referred to by the `DataTable.ext.iApiIndex` option, as was + * used in the API presented by DataTables 1.9- (i.e. the traditional mode), + * or if all tables captured in the jQuery object should be used. + * @return {DataTables.Api} + */ + this.api = function ( traditional ) + { + return traditional ? + new _Api( + _fnSettingsFromNode( this[ _ext.iApiIndex ] ) + ) : + new _Api( this ); + }; + + + /** + * Add a single new row or multiple rows of data to the table. Please note + * that this is suitable for client-side processing only - if you are using + * server-side processing (i.e. "bServerSide": true), then to add data, you + * must add it to the data source, i.e. the server-side, through an Ajax call. + * @param {array|object} data The data to be added to the table. This can be: + * <ul> + * <li>1D array of data - add a single row with the data provided</li> + * <li>2D array of arrays - add multiple rows in a single call</li> + * <li>object - data object when using <i>mData</i></li> + * <li>array of objects - multiple data objects when using <i>mData</i></li> + * </ul> + * @param {bool} [redraw=true] redraw the table or not + * @returns {array} An array of integers, representing the list of indexes in + * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to + * the table. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Global var for counter + * var giCount = 2; + * + * $(document).ready(function() { + * $('#example').dataTable(); + * } ); + * + * function fnClickAddRow() { + * $('#example').dataTable().fnAddData( [ + * giCount+".1", + * giCount+".2", + * giCount+".3", + * giCount+".4" ] + * ); + * + * giCount++; + * } + */ + this.fnAddData = function( data, redraw ) + { + var api = this.api( true ); + + /* Check if we want to add multiple rows or not */ + var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? + api.rows.add( data ) : + api.row.add( data ); + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return rows.flatten().toArray(); + }; + + + /** + * This function will make DataTables recalculate the column sizes, based on the data + * contained in the table and the sizes applied to the columns (in the DOM, CSS or + * through the sWidth parameter). This can be useful when the width of the table's + * parent element changes (for example a window resize). + * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable( { + * "sScrollY": "200px", + * "bPaginate": false + * } ); + * + * $(window).bind('resize', function () { + * oTable.fnAdjustColumnSizing(); + * } ); + * } ); + */ + this.fnAdjustColumnSizing = function ( bRedraw ) + { + var api = this.api( true ).columns.adjust(); + var settings = api.settings()[0]; + var scroll = settings.oScroll; + + if ( bRedraw === undefined || bRedraw ) { + api.draw( false ); + } + else if ( scroll.sX !== "" || scroll.sY !== "" ) { + /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ + _fnScrollDraw( settings ); + } + }; + + + /** + * Quickly and simply clear a table + * @param {bool} [bRedraw=true] redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) + * oTable.fnClearTable(); + * } ); + */ + this.fnClearTable = function( bRedraw ) + { + var api = this.api( true ).clear(); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + }; + + + /** + * The exact opposite of 'opening' a row, this function will close any rows which + * are currently 'open'. + * @param {node} nTr the table row to 'close' + * @returns {int} 0 on success, or 1 if failed (can't find the row) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnClose = function( nTr ) + { + this.api( true ).row( nTr ).child.hide(); + }; + + + /** + * Remove a row for the table + * @param {mixed} target The index of the row from aoData to be deleted, or + * the TR element you want to delete + * @param {function|null} [callBack] Callback function + * @param {bool} [redraw=true] Redraw the table or not + * @returns {array} The row that was deleted + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately remove the first row + * oTable.fnDeleteRow( 0 ); + * } ); + */ + this.fnDeleteRow = function( target, callback, redraw ) + { + var api = this.api( true ); + var rows = api.rows( target ); + var settings = rows.settings()[0]; + var data = settings.aoData[ rows[0][0] ]; + + rows.remove(); + + if ( callback ) { + callback.call( this, settings, data ); + } + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return data; + }; + + + /** + * Restore the table to it's original state in the DOM by removing all of DataTables + * enhancements, alterations to the DOM structure of the table and event listeners. + * @param {boolean} [remove=false] Completely remove the table from the DOM + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * // This example is fairly pointless in reality, but shows how fnDestroy can be used + * var oTable = $('#example').dataTable(); + * oTable.fnDestroy(); + * } ); + */ + this.fnDestroy = function ( remove ) + { + this.api( true ).destroy( remove ); + }; + + + /** + * Redraw the table + * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) + * oTable.fnDraw(); + * } ); + */ + this.fnDraw = function( complete ) + { + // Note that this isn't an exact match to the old call to _fnDraw - it takes + // into account the new data, but can hold position. + this.api( true ).draw( complete ); + }; + + + /** + * Filter the input based on data + * @param {string} sInput String to filter the table on + * @param {int|null} [iColumn] Column to limit filtering to + * @param {bool} [bRegex=false] Treat as regular expression or not + * @param {bool} [bSmart=true] Perform smart filtering or not + * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) + * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sometime later - filter... + * oTable.fnFilter( 'test string' ); + * } ); + */ + this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) + { + var api = this.api( true ); + + if ( iColumn === null || iColumn === undefined ) { + api.search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + else { + api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + + api.draw(); + }; + + + /** + * Get the data for the whole table, an individual row or an individual cell based on the + * provided parameters. + * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as + * a TR node then the data source for the whole row will be returned. If given as a + * TD/TH cell node then iCol will be automatically calculated and the data for the + * cell returned. If given as an integer, then this is treated as the aoData internal + * data index for the row (see fnGetPosition) and the data for that row used. + * @param {int} [col] Optional column index that you want the data of. + * @returns {array|object|string} If mRow is undefined, then the data for all rows is + * returned. If mRow is defined, just data for that row, and is iCol is + * defined, only data for the designated cell is returned. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Row data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('tr').click( function () { + * var data = oTable.fnGetData( this ); + * // ... do something with the array / object of data for the row + * } ); + * } ); + * + * @example + * // Individual cell data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('td').click( function () { + * var sData = oTable.fnGetData( this ); + * alert( 'The cell clicked on had the value of '+sData ); + * } ); + * } ); + */ + this.fnGetData = function( src, col ) + { + var api = this.api( true ); + + if ( src !== undefined ) { + var type = src.nodeName ? src.nodeName.toLowerCase() : ''; + + return col !== undefined || type == 'td' || type == 'th' ? + api.cell( src, col ).data() : + api.row( src ).data() || null; + } + + return api.data().toArray(); + }; + + + /** + * Get an array of the TR nodes that are used in the table's body. Note that you will + * typically want to use the '$' API method in preference to this as it is more + * flexible. + * @param {int} [iRow] Optional row index for the TR element you want + * @returns {array|node} If iRow is undefined, returns an array of all TR elements + * in the table's body, or iRow is defined, just the TR element requested. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Get the nodes from the table + * var nNodes = oTable.fnGetNodes( ); + * } ); + */ + this.fnGetNodes = function( iRow ) + { + var api = this.api( true ); + + return iRow !== undefined ? + api.row( iRow ).node() : + api.rows().nodes().flatten().toArray(); + }; + + + /** + * Get the array indexes of a particular cell from it's DOM element + * and column index including hidden columns + * @param {node} node this can either be a TR, TD or TH in the table's body + * @returns {int} If nNode is given as a TR, then a single index is returned, or + * if given as a cell, an array of [row index, column index (visible), + * column index (all)] is given. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * $('#example tbody td').click( function () { + * // Get the position of the current data from the node + * var aPos = oTable.fnGetPosition( this ); + * + * // Get the data array for this row + * var aData = oTable.fnGetData( aPos[0] ); + * + * // Update the data array and return the value + * aData[ aPos[1] ] = 'clicked'; + * this.innerHTML = 'clicked'; + * } ); + * + * // Init DataTables + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnGetPosition = function( node ) + { + var api = this.api( true ); + var nodeName = node.nodeName.toUpperCase(); + + if ( nodeName == 'TR' ) { + return api.row( node ).index(); + } + else if ( nodeName == 'TD' || nodeName == 'TH' ) { + var cell = api.cell( node ).index(); + + return [ + cell.row, + cell.columnVisible, + cell.column + ]; + } + return null; + }; + + + /** + * Check to see if a row is 'open' or not. + * @param {node} nTr the table row to check + * @returns {boolean} true if the row is currently open, false otherwise + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnIsOpen = function( nTr ) + { + return this.api( true ).row( nTr ).child.isShown(); + }; + + + /** + * This function will place a new row directly after a row which is currently + * on display on the page, with the HTML contents that is passed into the + * function. This can be used, for example, to ask for confirmation that a + * particular record should be deleted. + * @param {node} nTr The table row to 'open' + * @param {string|node|jQuery} mHtml The HTML to put into the row + * @param {string} sClass Class to give the new TD cell + * @returns {node} The row opened. Note that if the table row passed in as the + * first parameter, is not found in the table, this method will silently + * return. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnOpen = function( nTr, mHtml, sClass ) + { + return this.api( true ) + .row( nTr ) + .child( mHtml, sClass ) + .show() + .child()[0]; + }; + + + /** + * Change the pagination - provides the internal logic for pagination in a simple API + * function. With this function you can have a DataTables table go to the next, + * previous, first or last pages. + * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" + * or page number to jump to (integer), note that page 0 is the first page. + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnPageChange( 'next' ); + * } ); + */ + this.fnPageChange = function ( mAction, bRedraw ) + { + var api = this.api( true ).page( mAction ); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(false); + } + }; + + + /** + * Show a particular column + * @param {int} iCol The column whose display should be changed + * @param {bool} bShow Show (true) or hide (false) the column + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Hide the second column after initialisation + * oTable.fnSetColumnVis( 1, false ); + * } ); + */ + this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) + { + var api = this.api( true ).column( iCol ).visible( bShow ); + + if ( bRedraw === undefined || bRedraw ) { + api.columns.adjust().draw(); + } + }; + + + /** + * Get the settings for a particular table for external manipulation + * @returns {object} DataTables settings object. See + * {@link DataTable.models.oSettings} + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * var oSettings = oTable.fnSettings(); + * + * // Show an example parameter from the settings + * alert( oSettings._iDisplayStart ); + * } ); + */ + this.fnSettings = function() + { + return _fnSettingsFromNode( this[_ext.iApiIndex] ); + }; + + + /** + * Sort the table by a particular column + * @param {int} iCol the data index to sort on. Note that this will not match the + * 'display index' if you have hidden data entries + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort immediately with columns 0 and 1 + * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); + * } ); + */ + this.fnSort = function( aaSort ) + { + this.api( true ).order( aaSort ).draw(); + }; + + + /** + * Attach a sort listener to an element for a given column + * @param {node} nNode the element to attach the sort listener to + * @param {int} iColumn the column that a click on this node will sort on + * @param {function} [fnCallback] callback function when sort is run + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort on column 1, when 'sorter' is clicked on + * oTable.fnSortListener( document.getElementById('sorter'), 1 ); + * } ); + */ + this.fnSortListener = function( nNode, iColumn, fnCallback ) + { + this.api( true ).order.listener( nNode, iColumn, fnCallback ); + }; + + + /** + * Update a table cell or row - this method will accept either a single value to + * update the cell with, an array of values with one element for each column or + * an object in the same format as the original data source. The function is + * self-referencing in order to make the multi column updates easier. + * @param {object|array|string} mData Data to update the cell/row with + * @param {node|int} mRow TR element you want to update or the aoData index + * @param {int} [iColumn] The column to update, give as null or undefined to + * update a whole row. + * @param {bool} [bRedraw=true] Redraw the table or not + * @param {bool} [bAction=true] Perform pre-draw actions or not + * @returns {int} 0 on success, 1 on error + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell + * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row + * } ); + */ + this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) + { + var api = this.api( true ); + + if ( iColumn === undefined || iColumn === null ) { + api.row( mRow ).data( mData ); + } + else { + api.cell( mRow, iColumn ).data( mData ); + } + + if ( bAction === undefined || bAction ) { + api.columns.adjust(); + } + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + return 0; + }; + + + /** + * Provide a common method for plug-ins to check the version of DataTables being used, in order + * to ensure compatibility. + * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the + * formats "X" and "X.Y" are also acceptable. + * @returns {boolean} true if this version of DataTables is greater or equal to the required + * version, or false if this version of DataTales is not suitable + * @method + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * alert( oTable.fnVersionCheck( '1.9.0' ) ); + * } ); + */ + this.fnVersionCheck = _ext.fnVersionCheck; + + + var _that = this; + var emptyInit = options === undefined; + var len = this.length; + + if ( emptyInit ) { + options = {}; + } + + this.oApi = this.internal = _ext.internal; + + // Extend with old style plug-in API methods + for ( var fn in DataTable.ext.internal ) { + if ( fn ) { + this[fn] = _fnExternApiFunc(fn); + } + } + + this.each(function() { + // For each initialisation we want to give it a clean initialisation + // object that can be bashed around + var o = {}; + var oInit = len > 1 ? // optimisation for single table case + _fnExtend( o, options, true ) : + options; + + /*global oInit,_that,emptyInit*/ + var i=0, iLen, j, jLen, k, kLen; + var sId = this.getAttribute( 'id' ); + var bInitHandedOff = false; + var defaults = DataTable.defaults; + var $this = $(this); + + + /* Sanity check */ + if ( this.nodeName.toLowerCase() != 'table' ) + { + _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); + return; + } + + /* Backwards compatibility for the defaults */ + _fnCompatOpts( defaults ); + _fnCompatCols( defaults.column ); + + /* Convert the camel-case defaults to Hungarian */ + _fnCamelToHungarian( defaults, defaults, true ); + _fnCamelToHungarian( defaults.column, defaults.column, true ); + + /* Setting up the initialisation object */ + _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); + + + + /* Check to see if we are re-initialising a table */ + var allSettings = DataTable.settings; + for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) + { + var s = allSettings[i]; + + /* Base check on table node */ + if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) + { + var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; + var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; + + if ( emptyInit || bRetrieve ) + { + return s.oInstance; + } + else if ( bDestroy ) + { + s.oInstance.fnDestroy(); + break; + } + else + { + _fnLog( s, 0, 'Cannot reinitialise DataTable', 3 ); + return; + } + } + + /* If the element we are initialising has the same ID as a table which was previously + * initialised, but the table nodes don't match (from before) then we destroy the old + * instance by simply deleting it. This is under the assumption that the table has been + * destroyed by other methods. Anyone using non-id selectors will need to do this manually + */ + if ( s.sTableId == this.id ) + { + allSettings.splice( i, 1 ); + break; + } + } + + /* Ensure the table has an ID - required for accessibility */ + if ( sId === null || sId === "" ) + { + sId = "DataTables_Table_"+(DataTable.ext._unique++); + this.id = sId; + } + + /* Create the settings object for this table and set some of the default parameters */ + var oSettings = $.extend( true, {}, DataTable.models.oSettings, { + "sDestroyWidth": $this[0].style.width, + "sInstance": sId, + "sTableId": sId + } ); + oSettings.nTable = this; + oSettings.oApi = _that.internal; + oSettings.oInit = oInit; + + allSettings.push( oSettings ); + + // Need to add the instance after the instance after the settings object has been added + // to the settings array, so we can self reference the table instance if more than one + oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable(); + + // Backwards compatibility, before we apply all the defaults + _fnCompatOpts( oInit ); + + if ( oInit.oLanguage ) + { + _fnLanguageCompat( oInit.oLanguage ); + } + + // If the length menu is given, but the init display length is not, use the length menu + if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) + { + oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? + oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; + } + + // Apply the defaults and init options to make a single init object will all + // options defined from defaults and instance options. + oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); + + + // Map the initialisation options onto the settings object + _fnMap( oSettings.oFeatures, oInit, [ + "bPaginate", + "bLengthChange", + "bFilter", + "bSort", + "bSortMulti", + "bInfo", + "bProcessing", + "bAutoWidth", + "bSortClasses", + "bServerSide", + "bDeferRender" + ] ); + _fnMap( oSettings, oInit, [ + "asStripeClasses", + "ajax", + "fnServerData", + "fnFormatNumber", + "sServerMethod", + "aaSorting", + "aaSortingFixed", + "aLengthMenu", + "sPaginationType", + "sAjaxSource", + "sAjaxDataProp", + "iStateDuration", + "sDom", + "bSortCellsTop", + "iTabIndex", + "fnStateLoadCallback", + "fnStateSaveCallback", + "renderer", + "searchDelay", + [ "iCookieDuration", "iStateDuration" ], // backwards compat + [ "oSearch", "oPreviousSearch" ], + [ "aoSearchCols", "aoPreSearchCols" ], + [ "iDisplayLength", "_iDisplayLength" ], + [ "bJQueryUI", "bJUI" ] + ] ); + _fnMap( oSettings.oScroll, oInit, [ + [ "sScrollX", "sX" ], + [ "sScrollXInner", "sXInner" ], + [ "sScrollY", "sY" ], + [ "bScrollCollapse", "bCollapse" ] + ] ); + _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); + + /* Callback functions which are array driven */ + _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); + _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); + _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' ); + _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' ); + _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' ); + _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' ); + _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' ); + _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' ); + _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); + _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); + _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); + + var oClasses = oSettings.oClasses; + + // @todo Remove in 1.11 + if ( oInit.bJQueryUI ) + { + /* Use the JUI classes object for display. You could clone the oStdClasses object if + * you want to have multiple tables with multiple independent classes + */ + $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses ); + + if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" ) + { + /* Set the DOM to use a layout suitable for jQuery UI's theming */ + oSettings.sDom = '<"H"lfr>t<"F"ip>'; + } + + if ( ! oSettings.renderer ) { + oSettings.renderer = 'jqueryui'; + } + else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) { + oSettings.renderer.header = 'jqueryui'; + } + } + else + { + $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); + } + $this.addClass( oClasses.sTable ); + + /* Calculate the scroll bar width and cache it for use later on */ + if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) + { + oSettings.oScroll.iBarWidth = _fnScrollBarWidth(); + } + if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling + oSettings.oScroll.sX = '100%'; + } + + if ( oSettings.iInitDisplayStart === undefined ) + { + /* Display start point, taking into account the save saving */ + oSettings.iInitDisplayStart = oInit.iDisplayStart; + oSettings._iDisplayStart = oInit.iDisplayStart; + } + + if ( oInit.iDeferLoading !== null ) + { + oSettings.bDeferLoading = true; + var tmp = $.isArray( oInit.iDeferLoading ); + oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; + oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; + } + + /* Language definitions */ + var oLanguage = oSettings.oLanguage; + $.extend( true, oLanguage, oInit.oLanguage ); + + if ( oLanguage.sUrl !== "" ) + { + /* Get the language definitions from a file - because this Ajax call makes the language + * get async to the remainder of this function we use bInitHandedOff to indicate that + * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor + */ + $.ajax( { + dataType: 'json', + url: oLanguage.sUrl, + success: function ( json ) { + _fnLanguageCompat( json ); + _fnCamelToHungarian( defaults.oLanguage, json ); + $.extend( true, oLanguage, json ); + _fnInitialise( oSettings ); + }, + error: function () { + // Error occurred loading language file, continue on as best we can + _fnInitialise( oSettings ); + } + } ); + bInitHandedOff = true; + } + + /* + * Stripes + */ + if ( oInit.asStripeClasses === null ) + { + oSettings.asStripeClasses =[ + oClasses.sStripeOdd, + oClasses.sStripeEven + ]; + } + + /* Remove row stripe classes if they are already on the table row */ + var stripeClasses = oSettings.asStripeClasses; + var rowOne = $this.children('tbody').find('tr').eq(0); + if ( $.inArray( true, $.map( stripeClasses, function(el, i) { + return rowOne.hasClass(el); + } ) ) !== -1 ) { + $('tbody tr', this).removeClass( stripeClasses.join(' ') ); + oSettings.asDestroyStripes = stripeClasses.slice(); + } + + /* + * Columns + * See if we should load columns automatically or use defined ones + */ + var anThs = []; + var aoColumnsInit; + var nThead = this.getElementsByTagName('thead'); + if ( nThead.length !== 0 ) + { + _fnDetectHeader( oSettings.aoHeader, nThead[0] ); + anThs = _fnGetUniqueThs( oSettings ); + } + + /* If not given a column array, generate one with nulls */ + if ( oInit.aoColumns === null ) + { + aoColumnsInit = []; + for ( i=0, iLen=anThs.length ; i<iLen ; i++ ) + { + aoColumnsInit.push( null ); + } + } + else + { + aoColumnsInit = oInit.aoColumns; + } + + /* Add the columns */ + for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) + { + _fnAddColumn( oSettings, anThs ? anThs[i] : null ); + } + + /* Apply the column definitions */ + _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { + _fnColumnOptions( oSettings, iCol, oDef ); + } ); + + /* HTML5 attribute detection - build an mData object automatically if the + * attributes are found + */ + if ( rowOne.length ) { + var a = function ( cell, name ) { + return cell.getAttribute( 'data-'+name ) !== null ? name : null; + }; + + $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) { + var col = oSettings.aoColumns[i]; + + if ( col.mData === i ) { + var sort = a( cell, 'sort' ) || a( cell, 'order' ); + var filter = a( cell, 'filter' ) || a( cell, 'search' ); + + if ( sort !== null || filter !== null ) { + col.mData = { + _: i+'.display', + sort: sort !== null ? i+'.@data-'+sort : undefined, + type: sort !== null ? i+'.@data-'+sort : undefined, + filter: filter !== null ? i+'.@data-'+filter : undefined + }; + + _fnColumnOptions( oSettings, i ); + } + } + } ); + } + + var features = oSettings.oFeatures; + + /* Must be done after everything which can be overridden by the state saving! */ + if ( oInit.bStateSave ) + { + features.bStateSave = true; + _fnLoadState( oSettings, oInit ); + _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); + } + + + /* + * Sorting + * @todo For modularisation (1.11) this needs to do into a sort start up handler + */ + + // If aaSorting is not defined, then we use the first indicator in asSorting + // in case that has been altered, so the default sort reflects that option + if ( oInit.aaSorting === undefined ) + { + var sorting = oSettings.aaSorting; + for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) + { + sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; + } + } + + /* Do a first pass on the sorting classes (allows any size changes to be taken into + * account, and also will apply sorting disabled classes if disabled + */ + _fnSortingClasses( oSettings ); + + if ( features.bSort ) + { + _fnCallbackReg( oSettings, 'aoDrawCallback', function () { + if ( oSettings.bSorted ) { + var aSort = _fnSortFlatten( oSettings ); + var sortedColumns = {}; + + $.each( aSort, function (i, val) { + sortedColumns[ val.src ] = val.dir; + } ); + + _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); + _fnSortAria( oSettings ); + } + } ); + } + + _fnCallbackReg( oSettings, 'aoDrawCallback', function () { + if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { + _fnSortingClasses( oSettings ); + } + }, 'sc' ); + + + /* + * Final init + * Cache the header, body and footer as required, creating them if needed + */ + + /* Browser support detection */ + _fnBrowserDetect( oSettings ); + + // Work around for Webkit bug 83867 - store the caption-side before removing from doc + var captions = $this.children('caption').each( function () { + this._captionSide = $this.css('caption-side'); + } ); + + var thead = $this.children('thead'); + if ( thead.length === 0 ) + { + thead = $('<thead/>').appendTo(this); + } + oSettings.nTHead = thead[0]; + + var tbody = $this.children('tbody'); + if ( tbody.length === 0 ) + { + tbody = $('<tbody/>').appendTo(this); + } + oSettings.nTBody = tbody[0]; + + var tfoot = $this.children('tfoot'); + if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) + { + // If we are a scrolling table, and no footer has been given, then we need to create + // a tfoot element for the caption element to be appended to + tfoot = $('<tfoot/>').appendTo(this); + } + + if ( tfoot.length === 0 || tfoot.children().length === 0 ) { + $this.addClass( oClasses.sNoFooter ); + } + else if ( tfoot.length > 0 ) { + oSettings.nTFoot = tfoot[0]; + _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); + } + + /* Check if there is data passing into the constructor */ + if ( oInit.aaData ) + { + for ( i=0 ; i<oInit.aaData.length ; i++ ) + { + _fnAddData( oSettings, oInit.aaData[ i ] ); + } + } + else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) + { + /* Grab the data from the page - only do this when deferred loading or no Ajax + * source since there is no point in reading the DOM data if we are then going + * to replace it with Ajax data + */ + _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); + } + + /* Copy the data index array */ + oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); + + /* Initialisation complete - table can be drawn */ + oSettings.bInitialised = true; + + /* Check if we need to initialise the table (it might not have been handed off to the + * language processor) + */ + if ( bInitHandedOff === false ) + { + _fnInitialise( oSettings ); + } + } ); + _that = null; + return this; + }; + + + + /** + * Computed structure of the DataTables API, defined by the options passed to + * `DataTable.Api.register()` when building the API. + * + * The structure is built in order to speed creation and extension of the Api + * objects since the extensions are effectively pre-parsed. + * + * The array is an array of objects with the following structure, where this + * base array represents the Api prototype base: + * + * [ + * { + * name: 'data' -- string - Property name + * val: function () {}, -- function - Api method (or undefined if just an object + * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result + * propExt: [ ... ] -- array - Array of Api object definitions to extend the property + * }, + * { + * name: 'row' + * val: {}, + * methodExt: [ ... ], + * propExt: [ + * { + * name: 'data' + * val: function () {}, + * methodExt: [ ... ], + * propExt: [ ... ] + * }, + * ... + * ] + * } + * ] + * + * @type {Array} + * @ignore + */ + var __apiStruct = []; + + + /** + * `Array.prototype` reference. + * + * @type object + * @ignore + */ + var __arrayProto = Array.prototype; + + + /** + * Abstraction for `context` parameter of the `Api` constructor to allow it to + * take several different forms for ease of use. + * + * Each of the input parameter types will be converted to a DataTables settings + * object where possible. + * + * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one + * of: + * + * * `string` - jQuery selector. Any DataTables' matching the given selector + * with be found and used. + * * `node` - `TABLE` node which has already been formed into a DataTable. + * * `jQuery` - A jQuery object of `TABLE` nodes. + * * `object` - DataTables settings object + * * `DataTables.Api` - API instance + * @return {array|null} Matching DataTables settings objects. `null` or + * `undefined` is returned if no matching DataTable is found. + * @ignore + */ + var _toSettings = function ( mixed ) + { + var idx, jq; + var settings = DataTable.settings; + var tables = $.map( settings, function (el, i) { + return el.nTable; + } ); + + if ( ! mixed ) { + return []; + } + else if ( mixed.nTable && mixed.oApi ) { + // DataTables settings object + return [ mixed ]; + } + else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) { + // Table node + idx = $.inArray( mixed, tables ); + return idx !== -1 ? [ settings[idx] ] : null; + } + else if ( mixed && typeof mixed.settings === 'function' ) { + return mixed.settings().toArray(); + } + else if ( typeof mixed === 'string' ) { + // jQuery selector + jq = $(mixed); + } + else if ( mixed instanceof $ ) { + // jQuery object (also DataTables instance) + jq = mixed; + } + + if ( jq ) { + return jq.map( function(i) { + idx = $.inArray( this, tables ); + return idx !== -1 ? settings[idx] : null; + } ).toArray(); + } + }; + + + /** + * DataTables API class - used to control and interface with one or more + * DataTables enhanced tables. + * + * The API class is heavily based on jQuery, presenting a chainable interface + * that you can use to interact with tables. Each instance of the API class has + * a "context" - i.e. the tables that it will operate on. This could be a single + * table, all tables on a page or a sub-set thereof. + * + * Additionally the API is designed to allow you to easily work with the data in + * the tables, retrieving and manipulating it as required. This is done by + * presenting the API class as an array like interface. The contents of the + * array depend upon the actions requested by each method (for example + * `rows().nodes()` will return an array of nodes, while `rows().data()` will + * return an array of objects or arrays depending upon your table's + * configuration). The API object has a number of array like methods (`push`, + * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`, + * `unique` etc) to assist your working with the data held in a table. + * + * Most methods (those which return an Api instance) are chainable, which means + * the return from a method call also has all of the methods available that the + * top level object had. For example, these two calls are equivalent: + * + * // Not chained + * api.row.add( {...} ); + * api.draw(); + * + * // Chained + * api.row.add( {...} ).draw(); + * + * @class DataTable.Api + * @param {array|object|string|jQuery} context DataTable identifier. This is + * used to define which DataTables enhanced tables this API will operate on. + * Can be one of: + * + * * `string` - jQuery selector. Any DataTables' matching the given selector + * with be found and used. + * * `node` - `TABLE` node which has already been formed into a DataTable. + * * `jQuery` - A jQuery object of `TABLE` nodes. + * * `object` - DataTables settings object + * @param {array} [data] Data to initialise the Api instance with. + * + * @example + * // Direct initialisation during DataTables construction + * var api = $('#example').DataTable(); + * + * @example + * // Initialisation using a DataTables jQuery object + * var api = $('#example').dataTable().api(); + * + * @example + * // Initialisation as a constructor + * var api = new $.fn.DataTable.Api( 'table.dataTable' ); + */ + _Api = function ( context, data ) + { + if ( ! (this instanceof _Api) ) { + return new _Api( context, data ); + } + + var settings = []; + var ctxSettings = function ( o ) { + var a = _toSettings( o ); + if ( a ) { + settings.push.apply( settings, a ); + } + }; + + if ( $.isArray( context ) ) { + for ( var i=0, ien=context.length ; i<ien ; i++ ) { + ctxSettings( context[i] ); + } + } + else { + ctxSettings( context ); + } + + // Remove duplicates + this.context = _unique( settings ); + + // Initial data + if ( data ) { + this.push.apply( this, data.toArray ? data.toArray() : data ); + } + + // selector + this.selector = { + rows: null, + cols: null, + opts: null + }; + + _Api.extend( this, this, __apiStruct ); + }; + + DataTable.Api = _Api; + + _Api.prototype = /** @lends DataTables.Api */{ + any: function () + { + return this.flatten().length !== 0; + }, + + + concat: __arrayProto.concat, + + + context: [], // array of table settings objects + + + each: function ( fn ) + { + for ( var i=0, ien=this.length ; i<ien; i++ ) { + fn.call( this, this[i], i, this ); + } + + return this; + }, + + + eq: function ( idx ) + { + var ctx = this.context; + + return ctx.length > idx ? + new _Api( ctx[idx], this[idx] ) : + null; + }, + + + filter: function ( fn ) + { + var a = []; + + if ( __arrayProto.filter ) { + a = __arrayProto.filter.call( this, fn, this ); + } + else { + // Compatibility for browsers without EMCA-252-5 (JS 1.6) + for ( var i=0, ien=this.length ; i<ien ; i++ ) { + if ( fn.call( this, this[i], i, this ) ) { + a.push( this[i] ); + } + } + } + + return new _Api( this.context, a ); + }, + + + flatten: function () + { + var a = []; + return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); + }, + + + join: __arrayProto.join, + + + indexOf: __arrayProto.indexOf || function (obj, start) + { + for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { + if ( this[i] === obj ) { + return i; + } + } + return -1; + }, + + iterator: function ( flatten, type, fn, alwaysNew ) { + var + a = [], ret, + i, ien, j, jen, + context = this.context, + rows, items, item, + selector = this.selector; + + // Argument shifting + if ( typeof flatten === 'string' ) { + alwaysNew = fn; + fn = type; + type = flatten; + flatten = false; + } + + for ( i=0, ien=context.length ; i<ien ; i++ ) { + var apiInst = new _Api( context[i] ); + + if ( type === 'table' ) { + ret = fn.call( apiInst, context[i], i ); + + if ( ret !== undefined ) { + a.push( ret ); + } + } + else if ( type === 'columns' || type === 'rows' ) { + // this has same length as context - one entry for each table + ret = fn.call( apiInst, context[i], this[i], i ); + + if ( ret !== undefined ) { + a.push( ret ); + } + } + else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) { + // columns and rows share the same structure. + // 'this' is an array of column indexes for each context + items = this[i]; + + if ( type === 'column-rows' ) { + rows = _selector_row_indexes( context[i], selector.opts ); + } + + for ( j=0, jen=items.length ; j<jen ; j++ ) { + item = items[j]; + + if ( type === 'cell' ) { + ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); + } + else { + ret = fn.call( apiInst, context[i], item, i, j, rows ); + } + + if ( ret !== undefined ) { + a.push( ret ); + } + } + } + } + + if ( a.length || alwaysNew ) { + var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); + var apiSelector = api.selector; + apiSelector.rows = selector.rows; + apiSelector.cols = selector.cols; + apiSelector.opts = selector.opts; + return api; + } + return this; + }, + + + lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) + { + // Bit cheeky... + return this.indexOf.apply( this.toArray.reverse(), arguments ); + }, + + + length: 0, + + + map: function ( fn ) + { + var a = []; + + if ( __arrayProto.map ) { + a = __arrayProto.map.call( this, fn, this ); + } + else { + // Compatibility for browsers without EMCA-252-5 (JS 1.6) + for ( var i=0, ien=this.length ; i<ien ; i++ ) { + a.push( fn.call( this, this[i], i ) ); + } + } + + return new _Api( this.context, a ); + }, + + + pluck: function ( prop ) + { + return this.map( function ( el ) { + return el[ prop ]; + } ); + }, + + pop: __arrayProto.pop, + + + push: __arrayProto.push, + + + // Does not return an API instance + reduce: __arrayProto.reduce || function ( fn, init ) + { + return _fnReduce( this, fn, init, 0, this.length, 1 ); + }, + + + reduceRight: __arrayProto.reduceRight || function ( fn, init ) + { + return _fnReduce( this, fn, init, this.length-1, -1, -1 ); + }, + + + reverse: __arrayProto.reverse, + + + // Object with rows, columns and opts + selector: null, + + + shift: __arrayProto.shift, + + + sort: __arrayProto.sort, // ? name - order? + + + splice: __arrayProto.splice, + + + toArray: function () + { + return __arrayProto.slice.call( this ); + }, + + + to$: function () + { + return $( this ); + }, + + + toJQuery: function () + { + return $( this ); + }, + + + unique: function () + { + return new _Api( this.context, _unique(this) ); + }, + + + unshift: __arrayProto.unshift + }; + + + _Api.extend = function ( scope, obj, ext ) + { + // Only extend API instances and static properties of the API + if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { + return; + } + + var + i, ien, + j, jen, + struct, inner, + methodScoping = function ( scope, fn, struc ) { + return function () { + var ret = fn.apply( scope, arguments ); + + // Method extension + _Api.extend( ret, ret, struc.methodExt ); + return ret; + }; + }; + + for ( i=0, ien=ext.length ; i<ien ; i++ ) { + struct = ext[i]; + + // Value + obj[ struct.name ] = typeof struct.val === 'function' ? + methodScoping( scope, struct.val, struct ) : + $.isPlainObject( struct.val ) ? + {} : + struct.val; + + obj[ struct.name ].__dt_wrapper = true; + + // Property extension + _Api.extend( scope, obj[ struct.name ], struct.propExt ); + } + }; + + + // @todo - Is there need for an augment function? + // _Api.augment = function ( inst, name ) + // { + // // Find src object in the structure from the name + // var parts = name.split('.'); + + // _Api.extend( inst, obj ); + // }; + + + // [ + // { + // name: 'data' -- string - Property name + // val: function () {}, -- function - Api method (or undefined if just an object + // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result + // propExt: [ ... ] -- array - Array of Api object definitions to extend the property + // }, + // { + // name: 'row' + // val: {}, + // methodExt: [ ... ], + // propExt: [ + // { + // name: 'data' + // val: function () {}, + // methodExt: [ ... ], + // propExt: [ ... ] + // }, + // ... + // ] + // } + // ] + + _Api.register = _api_register = function ( name, val ) + { + if ( $.isArray( name ) ) { + for ( var j=0, jen=name.length ; j<jen ; j++ ) { + _Api.register( name[j], val ); + } + return; + } + + var + i, ien, + heir = name.split('.'), + struct = __apiStruct, + key, method; + + var find = function ( src, name ) { + for ( var i=0, ien=src.length ; i<ien ; i++ ) { + if ( src[i].name === name ) { + return src[i]; + } + } + return null; + }; + + for ( i=0, ien=heir.length ; i<ien ; i++ ) { + method = heir[i].indexOf('()') !== -1; + key = method ? + heir[i].replace('()', '') : + heir[i]; + + var src = find( struct, key ); + if ( ! src ) { + src = { + name: key, + val: {}, + methodExt: [], + propExt: [] + }; + struct.push( src ); + } + + if ( i === ien-1 ) { + src.val = val; + } + else { + struct = method ? + src.methodExt : + src.propExt; + } + } + }; + + + _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { + _Api.register( pluralName, val ); + + _Api.register( singularName, function () { + var ret = val.apply( this, arguments ); + + if ( ret === this ) { + // Returned item is the API instance that was passed in, return it + return this; + } + else if ( ret instanceof _Api ) { + // New API instance returned, want the value from the first item + // in the returned array for the singular result. + return ret.length ? + $.isArray( ret[0] ) ? + new _Api( ret.context, ret[0] ) : // Array results are 'enhanced' + ret[0] : + undefined; + } + + // Non-API return - just fire it back + return ret; + } ); + }; + + + /** + * Selector for HTML tables. Apply the given selector to the give array of + * DataTables settings objects. + * + * @param {string|integer} [selector] jQuery selector string or integer + * @param {array} Array of DataTables settings objects to be filtered + * @return {array} + * @ignore + */ + var __table_selector = function ( selector, a ) + { + // Integer is used to pick out a table by index + if ( typeof selector === 'number' ) { + return [ a[ selector ] ]; + } + + // Perform a jQuery selector on the table nodes + var nodes = $.map( a, function (el, i) { + return el.nTable; + } ); + + return $(nodes) + .filter( selector ) + .map( function (i) { + // Need to translate back from the table node to the settings + var idx = $.inArray( this, nodes ); + return a[ idx ]; + } ) + .toArray(); + }; + + + + /** + * Context selector for the API's context (i.e. the tables the API instance + * refers to. + * + * @name DataTable.Api#tables + * @param {string|integer} [selector] Selector to pick which tables the iterator + * should operate on. If not given, all tables in the current context are + * used. This can be given as a jQuery selector (for example `':gt(0)'`) to + * select multiple tables or as an integer to select a single table. + * @returns {DataTable.Api} Returns a new API instance if a selector is given. + */ + _api_register( 'tables()', function ( selector ) { + // A new instance is created if there was a selector specified + return selector ? + new _Api( __table_selector( selector, this.context ) ) : + this; + } ); + + + _api_register( 'table()', function ( selector ) { + var tables = this.tables( selector ); + var ctx = tables.context; + + // Truncate to the first matched table + return ctx.length ? + new _Api( ctx[0] ) : + tables; + } ); + + + _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { + return this.iterator( 'table', function ( ctx ) { + return ctx.nTable; + }, 1 ); + } ); + + + _api_registerPlural( 'tables().body()', 'table().body()' , function () { + return this.iterator( 'table', function ( ctx ) { + return ctx.nTBody; + }, 1 ); + } ); + + + _api_registerPlural( 'tables().header()', 'table().header()' , function () { + return this.iterator( 'table', function ( ctx ) { + return ctx.nTHead; + }, 1 ); + } ); + + + _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { + return this.iterator( 'table', function ( ctx ) { + return ctx.nTFoot; + }, 1 ); + } ); + + + _api_registerPlural( 'tables().containers()', 'table().container()' , function () { + return this.iterator( 'table', function ( ctx ) { + return ctx.nTableWrapper; + }, 1 ); + } ); + + + + /** + * Redraw the tables in the current context. + * + * @param {boolean} [reset=true] Reset (default) or hold the current paging + * position. A full re-sort and re-filter is performed when this method is + * called, which is why the pagination reset is the default action. + * @returns {DataTables.Api} this + */ + _api_register( 'draw()', function ( resetPaging ) { + return this.iterator( 'table', function ( settings ) { + _fnReDraw( settings, resetPaging===false ); + } ); + } ); + + + + /** + * Get the current page index. + * + * @return {integer} Current page index (zero based) + *//** + * Set the current page. + * + * Note that if you attempt to show a page which does not exist, DataTables will + * not throw an error, but rather reset the paging. + * + * @param {integer|string} action The paging action to take. This can be one of: + * * `integer` - The page index to jump to + * * `string` - An action to take: + * * `first` - Jump to first page. + * * `next` - Jump to the next page + * * `previous` - Jump to previous page + * * `last` - Jump to the last page. + * @returns {DataTables.Api} this + */ + _api_register( 'page()', function ( action ) { + if ( action === undefined ) { + return this.page.info().page; // not an expensive call + } + + // else, have an action to take on all tables + return this.iterator( 'table', function ( settings ) { + _fnPageChange( settings, action ); + } ); + } ); + + + /** + * Paging information for the first table in the current context. + * + * If you require paging information for another table, use the `table()` method + * with a suitable selector. + * + * @return {object} Object with the following properties set: + * * `page` - Current page index (zero based - i.e. the first page is `0`) + * * `pages` - Total number of pages + * * `start` - Display index for the first record shown on the current page + * * `end` - Display index for the last record shown on the current page + * * `length` - Display length (number of records). Note that generally `start + * + length = end`, but this is not always true, for example if there are + * only 2 records to show on the final page, with a length of 10. + * * `recordsTotal` - Full data set length + * * `recordsDisplay` - Data set length once the current filtering criterion + * are applied. + */ + _api_register( 'page.info()', function ( action ) { + if ( this.context.length === 0 ) { + return undefined; + } + + var + settings = this.context[0], + start = settings._iDisplayStart, + len = settings._iDisplayLength, + visRecords = settings.fnRecordsDisplay(), + all = len === -1; + + return { + "page": all ? 0 : Math.floor( start / len ), + "pages": all ? 1 : Math.ceil( visRecords / len ), + "start": start, + "end": settings.fnDisplayEnd(), + "length": len, + "recordsTotal": settings.fnRecordsTotal(), + "recordsDisplay": visRecords + }; + } ); + + + /** + * Get the current page length. + * + * @return {integer} Current page length. Note `-1` indicates that all records + * are to be shown. + *//** + * Set the current page length. + * + * @param {integer} Page length to set. Use `-1` to show all records. + * @returns {DataTables.Api} this + */ + _api_register( 'page.len()', function ( len ) { + // Note that we can't call this function 'length()' because `length` + // is a Javascript property of functions which defines how many arguments + // the function expects. + if ( len === undefined ) { + return this.context.length !== 0 ? + this.context[0]._iDisplayLength : + undefined; + } + + // else, set the page length + return this.iterator( 'table', function ( settings ) { + _fnLengthChange( settings, len ); + } ); + } ); + + + + var __reload = function ( settings, holdPosition, callback ) { + // Use the draw event to trigger a callback + if ( callback ) { + var api = new _Api( settings ); + + api.one( 'draw', function () { + callback( api.ajax.json() ); + } ); + } + + if ( _fnDataSource( settings ) == 'ssp' ) { + _fnReDraw( settings, holdPosition ); + } + else { + // Trigger xhr + _fnProcessingDisplay( settings, true ); + + _fnBuildAjax( settings, [], function( json ) { + _fnClearTable( settings ); + + var data = _fnAjaxDataSrc( settings, json ); + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + _fnAddData( settings, data[i] ); + } + + _fnReDraw( settings, holdPosition ); + _fnProcessingDisplay( settings, false ); + } ); + } + }; + + + /** + * Get the JSON response from the last Ajax request that DataTables made to the + * server. Note that this returns the JSON from the first table in the current + * context. + * + * @return {object} JSON received from the server. + */ + _api_register( 'ajax.json()', function () { + var ctx = this.context; + + if ( ctx.length > 0 ) { + return ctx[0].json; + } + + // else return undefined; + } ); + + + /** + * Get the data submitted in the last Ajax request + */ + _api_register( 'ajax.params()', function () { + var ctx = this.context; + + if ( ctx.length > 0 ) { + return ctx[0].oAjaxData; + } + + // else return undefined; + } ); + + + /** + * Reload tables from the Ajax data source. Note that this function will + * automatically re-draw the table when the remote data has been loaded. + * + * @param {boolean} [reset=true] Reset (default) or hold the current paging + * position. A full re-sort and re-filter is performed when this method is + * called, which is why the pagination reset is the default action. + * @returns {DataTables.Api} this + */ + _api_register( 'ajax.reload()', function ( callback, resetPaging ) { + return this.iterator( 'table', function (settings) { + __reload( settings, resetPaging===false, callback ); + } ); + } ); + + + /** + * Get the current Ajax URL. Note that this returns the URL from the first + * table in the current context. + * + * @return {string} Current Ajax source URL + *//** + * Set the Ajax URL. Note that this will set the URL for all tables in the + * current context. + * + * @param {string} url URL to set. + * @returns {DataTables.Api} this + */ + _api_register( 'ajax.url()', function ( url ) { + var ctx = this.context; + + if ( url === undefined ) { + // get + if ( ctx.length === 0 ) { + return undefined; + } + ctx = ctx[0]; + + return ctx.ajax ? + $.isPlainObject( ctx.ajax ) ? + ctx.ajax.url : + ctx.ajax : + ctx.sAjaxSource; + } + + // set + return this.iterator( 'table', function ( settings ) { + if ( $.isPlainObject( settings.ajax ) ) { + settings.ajax.url = url; + } + else { + settings.ajax = url; + } + // No need to consider sAjaxSource here since DataTables gives priority + // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any + // value of `sAjaxSource` redundant. + } ); + } ); + + + /** + * Load data from the newly set Ajax URL. Note that this method is only + * available when `ajax.url()` is used to set a URL. Additionally, this method + * has the same effect as calling `ajax.reload()` but is provided for + * convenience when setting a new URL. Like `ajax.reload()` it will + * automatically redraw the table once the remote data has been loaded. + * + * @returns {DataTables.Api} this + */ + _api_register( 'ajax.url().load()', function ( callback, resetPaging ) { + // Same as a reload, but makes sense to present it for easy access after a + // url change + return this.iterator( 'table', function ( ctx ) { + __reload( ctx, resetPaging===false, callback ); + } ); + } ); + + + + + var _selector_run = function ( type, selector, selectFn, settings, opts ) + { + var + out = [], res, + a, i, ien, j, jen, + selectorType = typeof selector; + + // Can't just check for isArray here, as an API or jQuery instance might be + // given with their array like look + if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { + selector = [ selector ]; + } + + for ( i=0, ien=selector.length ; i<ien ; i++ ) { + a = selector[i] && selector[i].split ? + selector[i].split(',') : + [ selector[i] ]; + + for ( j=0, jen=a.length ; j<jen ; j++ ) { + res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); + + if ( res && res.length ) { + out.push.apply( out, res ); + } + } + } + + // selector extensions + var ext = _ext.selector[ type ]; + if ( ext.length ) { + for ( i=0, ien=ext.length ; i<ien ; i++ ) { + out = ext[i]( settings, opts, out ); + } + } + + return out; + }; + + + var _selector_opts = function ( opts ) + { + if ( ! opts ) { + opts = {}; + } + + // Backwards compatibility for 1.9- which used the terminology filter rather + // than search + if ( opts.filter && opts.search === undefined ) { + opts.search = opts.filter; + } + + return $.extend( { + search: 'none', + order: 'current', + page: 'all' + }, opts ); + }; + + + var _selector_first = function ( inst ) + { + // Reduce the API instance to the first item found + for ( var i=0, ien=inst.length ; i<ien ; i++ ) { + if ( inst[i].length > 0 ) { + // Assign the first element to the first item in the instance + // and truncate the instance and context + inst[0] = inst[i]; + inst[0].length = 1; + inst.length = 1; + inst.context = [ inst.context[i] ]; + + return inst; + } + } + + // Not found - return an empty instance + inst.length = 0; + return inst; + }; + + + var _selector_row_indexes = function ( settings, opts ) + { + var + i, ien, tmp, a=[], + displayFiltered = settings.aiDisplay, + displayMaster = settings.aiDisplayMaster; + + var + search = opts.search, // none, applied, removed + order = opts.order, // applied, current, index (original - compatibility with 1.9) + page = opts.page; // all, current + + if ( _fnDataSource( settings ) == 'ssp' ) { + // In server-side processing mode, most options are irrelevant since + // rows not shown don't exist and the index order is the applied order + // Removed is a special case - for consistency just return an empty + // array + return search === 'removed' ? + [] : + _range( 0, displayMaster.length ); + } + else if ( page == 'current' ) { + // Current page implies that order=current and fitler=applied, since it is + // fairly senseless otherwise, regardless of what order and search actually + // are + for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) { + a.push( displayFiltered[i] ); + } + } + else if ( order == 'current' || order == 'applied' ) { + a = search == 'none' ? + displayMaster.slice() : // no search + search == 'applied' ? + displayFiltered.slice() : // applied search + $.map( displayMaster, function (el, i) { // removed search + return $.inArray( el, displayFiltered ) === -1 ? el : null; + } ); + } + else if ( order == 'index' || order == 'original' ) { + for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { + if ( search == 'none' ) { + a.push( i ); + } + else { // applied | removed + tmp = $.inArray( i, displayFiltered ); + + if ((tmp === -1 && search == 'removed') || + (tmp >= 0 && search == 'applied') ) + { + a.push( i ); + } + } + } + } + + return a; + }; + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Rows + * + * {} - no selector - use all available rows + * {integer} - row aoData index + * {node} - TR node + * {string} - jQuery selector to apply to the TR elements + * {array} - jQuery array of nodes, or simply an array of TR nodes + * + */ + + + var __row_selector = function ( settings, selector, opts ) + { + var run = function ( sel ) { + var selInt = _intVal( sel ); + var i, ien; + + // Short cut - selector is a number and no options provided (default is + // all records, so no need to check if the index is in there, since it + // must be - dev error if the index doesn't exist). + if ( selInt !== null && ! opts ) { + return [ selInt ]; + } + + var rows = _selector_row_indexes( settings, opts ); + + if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { + // Selector - integer + return [ selInt ]; + } + else if ( ! sel ) { + // Selector - none + return rows; + } + + // Selector - function + if ( typeof sel === 'function' ) { + return $.map( rows, function (idx) { + var row = settings.aoData[ idx ]; + return sel( idx, row._aData, row.nTr ) ? idx : null; + } ); + } + + // Get nodes in the order from the `rows` array with null values removed + var nodes = _removeEmpty( + _pluck_order( settings.aoData, rows, 'nTr' ) + ); + + // Selector - node + if ( sel.nodeName ) { + if ( $.inArray( sel, nodes ) !== -1 ) { + return [ sel._DT_RowIndex ]; // sel is a TR node that is in the table + // and DataTables adds a prop for fast lookup + } + } + + // Selector - jQuery selector string, array of nodes or jQuery object/ + // As jQuery's .filter() allows jQuery objects to be passed in filter, + // it also allows arrays, so this will cope with all three options + return $(nodes) + .filter( sel ) + .map( function () { + return this._DT_RowIndex; + } ) + .toArray(); + }; + + return _selector_run( 'row', selector, run, settings, opts ); + }; + + + _api_register( 'rows()', function ( selector, opts ) { + // argument shifting + if ( selector === undefined ) { + selector = ''; + } + else if ( $.isPlainObject( selector ) ) { + opts = selector; + selector = ''; + } + + opts = _selector_opts( opts ); + + var inst = this.iterator( 'table', function ( settings ) { + return __row_selector( settings, selector, opts ); + }, 1 ); + + // Want argument shifting here and in __row_selector? + inst.selector.rows = selector; + inst.selector.opts = opts; + + return inst; + } ); + + _api_register( 'rows().nodes()', function () { + return this.iterator( 'row', function ( settings, row ) { + return settings.aoData[ row ].nTr || undefined; + }, 1 ); + } ); + + _api_register( 'rows().data()', function () { + return this.iterator( true, 'rows', function ( settings, rows ) { + return _pluck_order( settings.aoData, rows, '_aData' ); + }, 1 ); + } ); + + _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { + return this.iterator( 'row', function ( settings, row ) { + var r = settings.aoData[ row ]; + return type === 'search' ? r._aFilterData : r._aSortData; + }, 1 ); + } ); + + _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { + return this.iterator( 'row', function ( settings, row ) { + _fnInvalidate( settings, row, src ); + } ); + } ); + + _api_registerPlural( 'rows().indexes()', 'row().index()', function () { + return this.iterator( 'row', function ( settings, row ) { + return row; + }, 1 ); + } ); + + _api_registerPlural( 'rows().remove()', 'row().remove()', function () { + var that = this; + + return this.iterator( 'row', function ( settings, row, thatIdx ) { + var data = settings.aoData; + + data.splice( row, 1 ); + + // Update the _DT_RowIndex parameter on all rows in the table + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + if ( data[i].nTr !== null ) { + data[i].nTr._DT_RowIndex = i; + } + } + + // Remove the target row from the search array + var displayIndex = $.inArray( row, settings.aiDisplay ); + + // Delete from the display arrays + _fnDeleteIndex( settings.aiDisplayMaster, row ); + _fnDeleteIndex( settings.aiDisplay, row ); + _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes + + // Check for an 'overflow' they case for displaying the table + _fnLengthOverflow( settings ); + } ); + } ); + + + _api_register( 'rows.add()', function ( rows ) { + var newRows = this.iterator( 'table', function ( settings ) { + var row, i, ien; + var out = []; + + for ( i=0, ien=rows.length ; i<ien ; i++ ) { + row = rows[i]; + + if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { + out.push( _fnAddTr( settings, row )[0] ); + } + else { + out.push( _fnAddData( settings, row ) ); + } + } + + return out; + }, 1 ); + + // Return an Api.rows() extended instance, so rows().nodes() etc can be used + var modRows = this.rows( -1 ); + modRows.pop(); + modRows.push.apply( modRows, newRows.toArray() ); + + return modRows; + } ); + + + + + + /** + * + */ + _api_register( 'row()', function ( selector, opts ) { + return _selector_first( this.rows( selector, opts ) ); + } ); + + + _api_register( 'row().data()', function ( data ) { + var ctx = this.context; + + if ( data === undefined ) { + // Get + return ctx.length && this.length ? + ctx[0].aoData[ this[0] ]._aData : + undefined; + } + + // Set + ctx[0].aoData[ this[0] ]._aData = data; + + // Automatically invalidate + _fnInvalidate( ctx[0], this[0], 'data' ); + + return this; + } ); + + + _api_register( 'row().node()', function () { + var ctx = this.context; + + return ctx.length && this.length ? + ctx[0].aoData[ this[0] ].nTr || null : + null; + } ); + + + _api_register( 'row.add()', function ( row ) { + // Allow a jQuery object to be passed in - only a single row is added from + // it though - the first element in the set + if ( row instanceof $ && row.length ) { + row = row[0]; + } + + var rows = this.iterator( 'table', function ( settings ) { + if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { + return _fnAddTr( settings, row )[0]; + } + return _fnAddData( settings, row ); + } ); + + // Return an Api.rows() extended instance, with the newly added row selected + return this.row( rows[0] ); + } ); + + + + var __details_add = function ( ctx, row, data, klass ) + { + // Convert to array of TR elements + var rows = []; + var addRow = function ( r, k ) { + // Recursion to allow for arrays of jQuery objects + if ( $.isArray( r ) || r instanceof $ ) { + for ( var i=0, ien=r.length ; i<ien ; i++ ) { + addRow( r[i], k ); + } + return; + } + + // If we get a TR element, then just add it directly - up to the dev + // to add the correct number of columns etc + if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { + rows.push( r ); + } + else { + // Otherwise create a row with a wrapper + var created = $('<tr><td/></tr>').addClass( k ); + $('td', created) + .addClass( k ) + .html( r ) + [0].colSpan = _fnVisbleColumns( ctx ); + + rows.push( created[0] ); + } + }; + + addRow( data, klass ); + + if ( row._details ) { + row._details.remove(); + } + + row._details = $(rows); + + // If the children were already shown, that state should be retained + if ( row._detailsShow ) { + row._details.insertAfter( row.nTr ); + } + }; + + + var __details_remove = function ( api, idx ) + { + var ctx = api.context; + + if ( ctx.length ) { + var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; + + if ( row._details ) { + row._details.remove(); + + row._detailsShow = undefined; + row._details = undefined; + } + } + }; + + + var __details_display = function ( api, show ) { + var ctx = api.context; + + if ( ctx.length && api.length ) { + var row = ctx[0].aoData[ api[0] ]; + + if ( row._details ) { + row._detailsShow = show; + + if ( show ) { + row._details.insertAfter( row.nTr ); + } + else { + row._details.detach(); + } + + __details_events( ctx[0] ); + } + } + }; + + + var __details_events = function ( settings ) + { + var api = new _Api( settings ); + var namespace = '.dt.DT_details'; + var drawEvent = 'draw'+namespace; + var colvisEvent = 'column-visibility'+namespace; + var destroyEvent = 'destroy'+namespace; + var data = settings.aoData; + + api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); + + if ( _pluck( data, '_details' ).length > 0 ) { + // On each draw, insert the required elements into the document + api.on( drawEvent, function ( e, ctx ) { + if ( settings !== ctx ) { + return; + } + + api.rows( {page:'current'} ).eq(0).each( function (idx) { + // Internal data grab + var row = data[ idx ]; + + if ( row._detailsShow ) { + row._details.insertAfter( row.nTr ); + } + } ); + } ); + + // Column visibility change - update the colspan + api.on( colvisEvent, function ( e, ctx, idx, vis ) { + if ( settings !== ctx ) { + return; + } + + // Update the colspan for the details rows (note, only if it already has + // a colspan) + var row, visible = _fnVisbleColumns( ctx ); + + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + row = data[i]; + + if ( row._details ) { + row._details.children('td[colspan]').attr('colspan', visible ); + } + } + } ); + + // Table destroyed - nuke any child rows + api.on( destroyEvent, function ( e, ctx ) { + if ( settings !== ctx ) { + return; + } + + for ( var i=0, ien=data.length ; i<ien ; i++ ) { + if ( data[i]._details ) { + __details_remove( api, i ); + } + } + } ); + } + }; + + // Strings for the method names to help minification + var _emp = ''; + var _child_obj = _emp+'row().child'; + var _child_mth = _child_obj+'()'; + + // data can be: + // tr + // string + // jQuery or array of any of the above + _api_register( _child_mth, function ( data, klass ) { + var ctx = this.context; + + if ( data === undefined ) { + // get + return ctx.length && this.length ? + ctx[0].aoData[ this[0] ]._details : + undefined; + } + else if ( data === true ) { + // show + this.child.show(); + } + else if ( data === false ) { + // remove + __details_remove( this ); + } + else if ( ctx.length && this.length ) { + // set + __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); + } + + return this; + } ); + + + _api_register( [ + _child_obj+'.show()', + _child_mth+'.show()' // only when `child()` was called with parameters (without + ], function ( show ) { // it returns an object and this method is not executed) + __details_display( this, true ); + return this; + } ); + + + _api_register( [ + _child_obj+'.hide()', + _child_mth+'.hide()' // only when `child()` was called with parameters (without + ], function () { // it returns an object and this method is not executed) + __details_display( this, false ); + return this; + } ); + + + _api_register( [ + _child_obj+'.remove()', + _child_mth+'.remove()' // only when `child()` was called with parameters (without + ], function () { // it returns an object and this method is not executed) + __details_remove( this ); + return this; + } ); + + + _api_register( _child_obj+'.isShown()', function () { + var ctx = this.context; + + if ( ctx.length && this.length ) { + // _detailsShown as false or undefined will fall through to return false + return ctx[0].aoData[ this[0] ]._detailsShow || false; + } + return false; + } ); + + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Columns + * + * {integer} - column index (>=0 count from left, <0 count from right) + * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right) + * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right) + * "{string}:name" - column name + * "{string}" - jQuery selector on column header nodes + * + */ + + // can be an array of these items, comma separated list, or an array of comma + // separated lists + + var __re_column_selector = /^(.+):(name|visIdx|visible)$/; + + + // r1 and r2 are redundant - but it means that the parameters match for the + // iterator callback in columns().data() + var __columnData = function ( settings, column, r1, r2, rows ) { + var a = []; + for ( var row=0, ien=rows.length ; row<ien ; row++ ) { + a.push( _fnGetCellData( settings, rows[row], column ) ); + } + return a; + }; + + + var __column_selector = function ( settings, selector, opts ) + { + var + columns = settings.aoColumns, + names = _pluck( columns, 'sName' ), + nodes = _pluck( columns, 'nTh' ); + + var run = function ( s ) { + var selInt = _intVal( s ); + + // Selector - all + if ( s === '' ) { + return _range( columns.length ); + } + + // Selector - index + if ( selInt !== null ) { + return [ selInt >= 0 ? + selInt : // Count from left + columns.length + selInt // Count from right (+ because its a negative value) + ]; + } + + // Selector = function + if ( typeof s === 'function' ) { + var rows = _selector_row_indexes( settings, opts ); + + return $.map( columns, function (col, idx) { + return s( + idx, + __columnData( settings, idx, 0, 0, rows ), + nodes[ idx ] + ) ? idx : null; + } ); + } + + // jQuery or string selector + var match = typeof s === 'string' ? + s.match( __re_column_selector ) : + ''; + + if ( match ) { + switch( match[2] ) { + case 'visIdx': + case 'visible': + var idx = parseInt( match[1], 10 ); + // Visible index given, convert to column index + if ( idx < 0 ) { + // Counting from the right + var visColumns = $.map( columns, function (col,i) { + return col.bVisible ? i : null; + } ); + return [ visColumns[ visColumns.length + idx ] ]; + } + // Counting from the left + return [ _fnVisibleToColumnIndex( settings, idx ) ]; + + case 'name': + // match by name. `names` is column index complete and in order + return $.map( names, function (name, i) { + return name === match[1] ? i : null; + } ); + } + } + else { + // jQuery selector on the TH elements for the columns + return $( nodes ) + .filter( s ) + .map( function () { + return $.inArray( this, nodes ); // `nodes` is column index complete and in order + } ) + .toArray(); + } + }; + + return _selector_run( 'column', selector, run, settings, opts ); + }; + + + var __setColumnVis = function ( settings, column, vis, recalc ) { + var + cols = settings.aoColumns, + col = cols[ column ], + data = settings.aoData, + row, cells, i, ien, tr; + + // Get + if ( vis === undefined ) { + return col.bVisible; + } + + // Set + // No change + if ( col.bVisible === vis ) { + return; + } + + if ( vis ) { + // Insert column + // Need to decide if we should use appendChild or insertBefore + var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); + + for ( i=0, ien=data.length ; i<ien ; i++ ) { + tr = data[i].nTr; + cells = data[i].anCells; + + if ( tr ) { + // insertBefore can act like appendChild if 2nd arg is null + tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); + } + } + } + else { + // Remove column + $( _pluck( settings.aoData, 'anCells', column ) ).detach(); + } + + // Common actions + col.bVisible = vis; + _fnDrawHead( settings, settings.aoHeader ); + _fnDrawHead( settings, settings.aoFooter ); + + if ( recalc === undefined || recalc ) { + // Automatically adjust column sizing + _fnAdjustColumnSizing( settings ); + + // Realign columns for scrolling + if ( settings.oScroll.sX || settings.oScroll.sY ) { + _fnScrollDraw( settings ); + } + } + + _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] ); + + _fnSaveState( settings ); + }; + + + _api_register( 'columns()', function ( selector, opts ) { + // argument shifting + if ( selector === undefined ) { + selector = ''; + } + else if ( $.isPlainObject( selector ) ) { + opts = selector; + selector = ''; + } + + opts = _selector_opts( opts ); + + var inst = this.iterator( 'table', function ( settings ) { + return __column_selector( settings, selector, opts ); + }, 1 ); + + // Want argument shifting here and in _row_selector? + inst.selector.cols = selector; + inst.selector.opts = opts; + + return inst; + } ); + + _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { + return this.iterator( 'column', function ( settings, column ) { + return settings.aoColumns[column].nTh; + }, 1 ); + } ); + + _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { + return this.iterator( 'column', function ( settings, column ) { + return settings.aoColumns[column].nTf; + }, 1 ); + } ); + + _api_registerPlural( 'columns().data()', 'column().data()', function () { + return this.iterator( 'column-rows', __columnData, 1 ); + } ); + + _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { + return this.iterator( 'column', function ( settings, column ) { + return settings.aoColumns[column].mData; + }, 1 ); + } ); + + _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { + return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { + return _pluck_order( settings.aoData, rows, + type === 'search' ? '_aFilterData' : '_aSortData', column + ); + }, 1 ); + } ); + + _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { + return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { + return _pluck_order( settings.aoData, rows, 'anCells', column ) ; + }, 1 ); + } ); + + _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { + return this.iterator( 'column', function ( settings, column ) { + if ( vis === undefined ) { + return settings.aoColumns[ column ].bVisible; + } // else + __setColumnVis( settings, column, vis, calc ); + } ); + } ); + + _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { + return this.iterator( 'column', function ( settings, column ) { + return type === 'visible' ? + _fnColumnIndexToVisible( settings, column ) : + column; + }, 1 ); + } ); + + _api_register( 'columns.adjust()', function () { + return this.iterator( 'table', function ( settings ) { + _fnAdjustColumnSizing( settings ); + }, 1 ); + } ); + + _api_register( 'column.index()', function ( type, idx ) { + if ( this.context.length !== 0 ) { + var ctx = this.context[0]; + + if ( type === 'fromVisible' || type === 'toData' ) { + return _fnVisibleToColumnIndex( ctx, idx ); + } + else if ( type === 'fromData' || type === 'toVisible' ) { + return _fnColumnIndexToVisible( ctx, idx ); + } + } + } ); + + _api_register( 'column()', function ( selector, opts ) { + return _selector_first( this.columns( selector, opts ) ); + } ); + + + + + var __cell_selector = function ( settings, selector, opts ) + { + var data = settings.aoData; + var rows = _selector_row_indexes( settings, opts ); + var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) ); + var allCells = $( [].concat.apply([], cells) ); + var row; + var columns = settings.aoColumns.length; + var a, i, ien, j, o, host; + + var run = function ( s ) { + var fnSelector = typeof s === 'function'; + + if ( s === null || s === undefined || fnSelector ) { + // All cells and function selectors + a = []; + + for ( i=0, ien=rows.length ; i<ien ; i++ ) { + row = rows[i]; + + for ( j=0 ; j<columns ; j++ ) { + o = { + row: row, + column: j + }; + + if ( fnSelector ) { + // Selector - function + host = settings.aoData[ row ]; + + if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) { + a.push( o ); + } + } + else { + // Selector - all + a.push( o ); + } + } + } + + return a; + } + + // Selector - index + if ( $.isPlainObject( s ) ) { + return [s]; + } + + // Selector - jQuery filtered cells + return allCells + .filter( s ) + .map( function (i, el) { + row = el.parentNode._DT_RowIndex; + + return { + row: row, + column: $.inArray( el, data[ row ].anCells ) + }; + } ) + .toArray(); + }; + + return _selector_run( 'cell', selector, run, settings, opts ); + }; + + + + + _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { + // Argument shifting + if ( $.isPlainObject( rowSelector ) ) { + // Indexes + if ( rowSelector.row === undefined ) { + // Selector options in first parameter + opts = rowSelector; + rowSelector = null; + } + else { + // Cell index objects in first parameter + opts = columnSelector; + columnSelector = null; + } + } + if ( $.isPlainObject( columnSelector ) ) { + opts = columnSelector; + columnSelector = null; + } + + // Cell selector + if ( columnSelector === null || columnSelector === undefined ) { + return this.iterator( 'table', function ( settings ) { + return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); + } ); + } + + // Row + column selector + var columns = this.columns( columnSelector, opts ); + var rows = this.rows( rowSelector, opts ); + var a, i, ien, j, jen; + + var cells = this.iterator( 'table', function ( settings, idx ) { + a = []; + + for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { + for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { + a.push( { + row: rows[idx][i], + column: columns[idx][j] + } ); + } + } + + return a; + }, 1 ); + + $.extend( cells.selector, { + cols: columnSelector, + rows: rowSelector, + opts: opts + } ); + + return cells; + } ); + + + _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { + return this.iterator( 'cell', function ( settings, row, column ) { + var cells = settings.aoData[ row ].anCells; + return cells ? + cells[ column ] : + undefined; + }, 1 ); + } ); + + + _api_register( 'cells().data()', function () { + return this.iterator( 'cell', function ( settings, row, column ) { + return _fnGetCellData( settings, row, column ); + }, 1 ); + } ); + + + _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { + type = type === 'search' ? '_aFilterData' : '_aSortData'; + + return this.iterator( 'cell', function ( settings, row, column ) { + return settings.aoData[ row ][ type ][ column ]; + }, 1 ); + } ); + + + _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { + return this.iterator( 'cell', function ( settings, row, column ) { + return _fnGetCellData( settings, row, column, type ); + }, 1 ); + } ); + + + _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { + return this.iterator( 'cell', function ( settings, row, column ) { + return { + row: row, + column: column, + columnVisible: _fnColumnIndexToVisible( settings, column ) + }; + }, 1 ); + } ); + + + _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { + return this.iterator( 'cell', function ( settings, row, column ) { + _fnInvalidate( settings, row, src, column ); + } ); + } ); + + + + _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { + return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); + } ); + + + _api_register( 'cell().data()', function ( data ) { + var ctx = this.context; + var cell = this[0]; + + if ( data === undefined ) { + // Get + return ctx.length && cell.length ? + _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : + undefined; + } + + // Set + _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); + _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); + + return this; + } ); + + + + /** + * Get current ordering (sorting) that has been applied to the table. + * + * @returns {array} 2D array containing the sorting information for the first + * table in the current context. Each element in the parent array represents + * a column being sorted upon (i.e. multi-sorting with two columns would have + * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is + * the column index that the sorting condition applies to, the second is the + * direction of the sort (`desc` or `asc`) and, optionally, the third is the + * index of the sorting order from the `column.sorting` initialisation array. + *//** + * Set the ordering for the table. + * + * @param {integer} order Column index to sort upon. + * @param {string} direction Direction of the sort to be applied (`asc` or `desc`) + * @returns {DataTables.Api} this + *//** + * Set the ordering for the table. + * + * @param {array} order 1D array of sorting information to be applied. + * @param {array} [...] Optional additional sorting conditions + * @returns {DataTables.Api} this + *//** + * Set the ordering for the table. + * + * @param {array} order 2D array of sorting information to be applied. + * @returns {DataTables.Api} this + */ + _api_register( 'order()', function ( order, dir ) { + var ctx = this.context; + + if ( order === undefined ) { + // get + return ctx.length !== 0 ? + ctx[0].aaSorting : + undefined; + } + + // set + if ( typeof order === 'number' ) { + // Simple column / direction passed in + order = [ [ order, dir ] ]; + } + else if ( ! $.isArray( order[0] ) ) { + // Arguments passed in (list of 1D arrays) + order = Array.prototype.slice.call( arguments ); + } + // otherwise a 2D array was passed in + + return this.iterator( 'table', function ( settings ) { + settings.aaSorting = order.slice(); + } ); + } ); + + + /** + * Attach a sort listener to an element for a given column + * + * @param {node|jQuery|string} node Identifier for the element(s) to attach the + * listener to. This can take the form of a single DOM node, a jQuery + * collection of nodes or a jQuery selector which will identify the node(s). + * @param {integer} column the column that a click on this node will sort on + * @param {function} [callback] callback function when sort is run + * @returns {DataTables.Api} this + */ + _api_register( 'order.listener()', function ( node, column, callback ) { + return this.iterator( 'table', function ( settings ) { + _fnSortAttachListener( settings, node, column, callback ); + } ); + } ); + + + // Order by the selected column(s) + _api_register( [ + 'columns().order()', + 'column().order()' + ], function ( dir ) { + var that = this; + + return this.iterator( 'table', function ( settings, i ) { + var sort = []; + + $.each( that[i], function (j, col) { + sort.push( [ col, dir ] ); + } ); + + settings.aaSorting = sort; + } ); + } ); + + + + _api_register( 'search()', function ( input, regex, smart, caseInsen ) { + var ctx = this.context; + + if ( input === undefined ) { + // get + return ctx.length !== 0 ? + ctx[0].oPreviousSearch.sSearch : + undefined; + } + + // set + return this.iterator( 'table', function ( settings ) { + if ( ! settings.oFeatures.bFilter ) { + return; + } + + _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { + "sSearch": input+"", + "bRegex": regex === null ? false : regex, + "bSmart": smart === null ? true : smart, + "bCaseInsensitive": caseInsen === null ? true : caseInsen + } ), 1 ); + } ); + } ); + + + _api_registerPlural( + 'columns().search()', + 'column().search()', + function ( input, regex, smart, caseInsen ) { + return this.iterator( 'column', function ( settings, column ) { + var preSearch = settings.aoPreSearchCols; + + if ( input === undefined ) { + // get + return preSearch[ column ].sSearch; + } + + // set + if ( ! settings.oFeatures.bFilter ) { + return; + } + + $.extend( preSearch[ column ], { + "sSearch": input+"", + "bRegex": regex === null ? false : regex, + "bSmart": smart === null ? true : smart, + "bCaseInsensitive": caseInsen === null ? true : caseInsen + } ); + + _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); + } ); + } + ); + + /* + * State API methods + */ + + _api_register( 'state()', function () { + return this.context.length ? + this.context[0].oSavedState : + null; + } ); + + + _api_register( 'state.clear()', function () { + return this.iterator( 'table', function ( settings ) { + // Save an empty object + settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); + } ); + } ); + + + _api_register( 'state.loaded()', function () { + return this.context.length ? + this.context[0].oLoadedState : + null; + } ); + + + _api_register( 'state.save()', function () { + return this.iterator( 'table', function ( settings ) { + _fnSaveState( settings ); + } ); + } ); + + + + /** + * Provide a common method for plug-ins to check the version of DataTables being + * used, in order to ensure compatibility. + * + * @param {string} version Version string to check for, in the format "X.Y.Z". + * Note that the formats "X" and "X.Y" are also acceptable. + * @returns {boolean} true if this version of DataTables is greater or equal to + * the required version, or false if this version of DataTales is not + * suitable + * @static + * @dtopt API-Static + * + * @example + * alert( $.fn.dataTable.versionCheck( '1.9.0' ) ); + */ + DataTable.versionCheck = DataTable.fnVersionCheck = function( version ) + { + var aThis = DataTable.version.split('.'); + var aThat = version.split('.'); + var iThis, iThat; + + for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { + iThis = parseInt( aThis[i], 10 ) || 0; + iThat = parseInt( aThat[i], 10 ) || 0; + + // Parts are the same, keep comparing + if (iThis === iThat) { + continue; + } + + // Parts are different, return immediately + return iThis > iThat; + } + + return true; + }; + + + /** + * Check if a `<table>` node is a DataTable table already or not. + * + * @param {node|jquery|string} table Table node, jQuery object or jQuery + * selector for the table to test. Note that if more than more than one + * table is passed on, only the first will be checked + * @returns {boolean} true the table given is a DataTable, or false otherwise + * @static + * @dtopt API-Static + * + * @example + * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) { + * $('#example').dataTable(); + * } + */ + DataTable.isDataTable = DataTable.fnIsDataTable = function ( table ) + { + var t = $(table).get(0); + var is = false; + + $.each( DataTable.settings, function (i, o) { + var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null; + var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null; + + if ( o.nTable === t || head === t || foot === t ) { + is = true; + } + } ); + + return is; + }; + + + /** + * Get all DataTable tables that have been initialised - optionally you can + * select to get only currently visible tables. + * + * @param {boolean} [visible=false] Flag to indicate if you want all (default) + * or visible tables only. + * @returns {array} Array of `table` nodes (not DataTable instances) which are + * DataTables + * @static + * @dtopt API-Static + * + * @example + * $.each( $.fn.dataTable.tables(true), function () { + * $(table).DataTable().columns.adjust(); + * } ); + */ + DataTable.tables = DataTable.fnTables = function ( visible ) + { + return $.map( DataTable.settings, function (o) { + if ( !visible || (visible && $(o.nTable).is(':visible')) ) { + return o.nTable; + } + } ); + }; + + + /** + * DataTables utility methods + * + * This namespace provides helper methods that DataTables uses internally to + * create a DataTable, but which are not exclusively used only for DataTables. + * These methods can be used by extension authors to save the duplication of + * code. + * + * @namespace + */ + DataTable.util = { + /** + * Throttle the calls to a function. Arguments and context are maintained + * for the throttled function. + * + * @param {function} fn Function to be called + * @param {integer} freq Call frequency in mS + * @return {function} Wrapped function + */ + throttle: _fnThrottle, + + + /** + * Escape a string such that it can be used in a regular expression + * + * @param {string} sVal string to escape + * @returns {string} escaped string + */ + escapeRegex: _fnEscapeRegex + }; + + + /** + * Convert from camel case parameters to Hungarian notation. This is made public + * for the extensions to provide the same ability as DataTables core to accept + * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase + * parameters. + * + * @param {object} src The model object which holds all parameters that can be + * mapped. + * @param {object} user The object to convert from camel case to Hungarian. + * @param {boolean} force When set to `true`, properties which already have a + * Hungarian value in the `user` object will be overwritten. Otherwise they + * won't be. + */ + DataTable.camelToHungarian = _fnCamelToHungarian; + + + + /** + * + */ + _api_register( '$()', function ( selector, opts ) { + var + rows = this.rows( opts ).nodes(), // Get all rows + jqRows = $(rows); + + return $( [].concat( + jqRows.filter( selector ).toArray(), + jqRows.find( selector ).toArray() + ) ); + } ); + + + // jQuery functions to operate on the tables + $.each( [ 'on', 'one', 'off' ], function (i, key) { + _api_register( key+'()', function ( /* event, handler */ ) { + var args = Array.prototype.slice.call(arguments); + + // Add the `dt` namespace automatically if it isn't already present + if ( ! args[0].match(/\.dt\b/) ) { + args[0] += '.dt'; + } + + var inst = $( this.tables().nodes() ); + inst[key].apply( inst, args ); + return this; + } ); + } ); + + + _api_register( 'clear()', function () { + return this.iterator( 'table', function ( settings ) { + _fnClearTable( settings ); + } ); + } ); + + + _api_register( 'settings()', function () { + return new _Api( this.context, this.context ); + } ); + + + _api_register( 'init()', function () { + var ctx = this.context; + return ctx.length ? ctx[0].oInit : null; + } ); + + + _api_register( 'data()', function () { + return this.iterator( 'table', function ( settings ) { + return _pluck( settings.aoData, '_aData' ); + } ).flatten(); + } ); + + + _api_register( 'destroy()', function ( remove ) { + remove = remove || false; + + return this.iterator( 'table', function ( settings ) { + var orig = settings.nTableWrapper.parentNode; + var classes = settings.oClasses; + var table = settings.nTable; + var tbody = settings.nTBody; + var thead = settings.nTHead; + var tfoot = settings.nTFoot; + var jqTable = $(table); + var jqTbody = $(tbody); + var jqWrapper = $(settings.nTableWrapper); + var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); + var i, ien; + + // Flag to note that the table is currently being destroyed - no action + // should be taken + settings.bDestroying = true; + + // Fire off the destroy callbacks for plug-ins etc + _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); + + // If not being removed from the document, make all columns visible + if ( ! remove ) { + new _Api( settings ).columns().visible( true ); + } + + // Blitz all `DT` namespaced events (these are internal events, the + // lowercase, `dt` events are user subscribed and they are responsible + // for removing them + jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT'); + $(window).unbind('.DT-'+settings.sInstance); + + // When scrolling we had to break the table up - restore it + if ( table != thead.parentNode ) { + jqTable.children('thead').detach(); + jqTable.append( thead ); + } + + if ( tfoot && table != tfoot.parentNode ) { + jqTable.children('tfoot').detach(); + jqTable.append( tfoot ); + } + + // Remove the DataTables generated nodes, events and classes + jqTable.detach(); + jqWrapper.detach(); + + settings.aaSorting = []; + settings.aaSortingFixed = []; + _fnSortingClasses( settings ); + + $( rows ).removeClass( settings.asStripeClasses.join(' ') ); + + $('th, td', thead).removeClass( classes.sSortable+' '+ + classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone + ); + + if ( settings.bJUI ) { + $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach(); + $('th, td', thead).each( function () { + var wrapper = $('div.'+classes.sSortJUIWrapper, this); + $(this).append( wrapper.contents() ); + wrapper.detach(); + } ); + } + + if ( ! remove && orig ) { + // insertBefore acts like appendChild if !arg[1] + orig.insertBefore( table, settings.nTableReinsertBefore ); + } + + // Add the TR elements back into the table in their original order + jqTbody.children().detach(); + jqTbody.append( rows ); + + // Restore the width of the original table - was read from the style property, + // so we can restore directly to that + jqTable + .css( 'width', settings.sDestroyWidth ) + .removeClass( classes.sTable ); + + // If the were originally stripe classes - then we add them back here. + // Note this is not fool proof (for example if not all rows had stripe + // classes - but it's a good effort without getting carried away + ien = settings.asDestroyStripes.length; + + if ( ien ) { + jqTbody.children().each( function (i) { + $(this).addClass( settings.asDestroyStripes[i % ien] ); + } ); + } + + /* Remove the settings object from the settings array */ + var idx = $.inArray( settings, DataTable.settings ); + if ( idx !== -1 ) { + DataTable.settings.splice( idx, 1 ); + } + } ); + } ); + + + // Add the `every()` method for rows, columns and cells in a compact form + $.each( [ 'column', 'row', 'cell' ], function ( i, type ) { + _api_register( type+'s().every()', function ( fn ) { + return this.iterator( type, function ( settings, idx, idx2 ) { + // idx2 is undefined for rows and columns. + fn.call( new _Api( settings )[ type ]( idx, idx2 ) ); + } ); + } ); + } ); + + + // i18n method for extensions to be able to use the language object from the + // DataTable + _api_register( 'i18n()', function ( token, def, plural ) { + var ctx = this.context[0]; + var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage ); + + if ( resolved === undefined ) { + resolved = def; + } + + if ( plural !== undefined && $.isPlainObject( resolved ) ) { + resolved = resolved[ plural ] !== undefined ? + resolved[ plural ] : + resolved._; + } + + return resolved.replace( '%d', plural ); // nb: plural might be undefined, + } ); + + /** + * Version string for plug-ins to check compatibility. Allowed format is + * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used + * only for non-release builds. See http://semver.org/ for more information. + * @member + * @type string + * @default Version number + */ + DataTable.version = "1.10.7"; + + /** + * Private data store, containing all of the settings objects that are + * created for the tables on a given page. + * + * Note that the `DataTable.settings` object is aliased to + * `jQuery.fn.dataTableExt` through which it may be accessed and + * manipulated, or `jQuery.fn.dataTable.settings`. + * @member + * @type array + * @default [] + * @private + */ + DataTable.settings = []; + + /** + * Object models container, for the various models that DataTables has + * available to it. These models define the objects that are used to hold + * the active state and configuration of the table. + * @namespace + */ + DataTable.models = {}; + + + + /** + * Template object for the way in which DataTables holds information about + * search information for the global filter and individual column filters. + * @namespace + */ + DataTable.models.oSearch = { + /** + * Flag to indicate if the filtering should be case insensitive or not + * @type boolean + * @default true + */ + "bCaseInsensitive": true, + + /** + * Applied search term + * @type string + * @default <i>Empty string</i> + */ + "sSearch": "", + + /** + * Flag to indicate if the search term should be interpreted as a + * regular expression (true) or not (false) and therefore and special + * regex characters escaped. + * @type boolean + * @default false + */ + "bRegex": false, + + /** + * Flag to indicate if DataTables is to use its smart filtering or not. + * @type boolean + * @default true + */ + "bSmart": true + }; + + + + + /** + * Template object for the way in which DataTables holds information about + * each individual row. This is the object format used for the settings + * aoData array. + * @namespace + */ + DataTable.models.oRow = { + /** + * TR element for the row + * @type node + * @default null + */ + "nTr": null, + + /** + * Array of TD elements for each row. This is null until the row has been + * created. + * @type array nodes + * @default [] + */ + "anCells": null, + + /** + * Data object from the original data source for the row. This is either + * an array if using the traditional form of DataTables, or an object if + * using mData options. The exact type will depend on the passed in + * data from the data source, or will be an array if using DOM a data + * source. + * @type array|object + * @default [] + */ + "_aData": [], + + /** + * Sorting data cache - this array is ostensibly the same length as the + * number of columns (although each index is generated only as it is + * needed), and holds the data that is used for sorting each column in the + * row. We do this cache generation at the start of the sort in order that + * the formatting of the sort data need be done only once for each cell + * per sort. This array should not be read from or written to by anything + * other than the master sorting methods. + * @type array + * @default null + * @private + */ + "_aSortData": null, + + /** + * Per cell filtering data cache. As per the sort data cache, used to + * increase the performance of the filtering in DataTables + * @type array + * @default null + * @private + */ + "_aFilterData": null, + + /** + * Filtering data cache. This is the same as the cell filtering cache, but + * in this case a string rather than an array. This is easily computed with + * a join on `_aFilterData`, but is provided as a cache so the join isn't + * needed on every search (memory traded for performance) + * @type array + * @default null + * @private + */ + "_sFilterRow": null, + + /** + * Cache of the class name that DataTables has applied to the row, so we + * can quickly look at this variable rather than needing to do a DOM check + * on className for the nTr property. + * @type string + * @default <i>Empty string</i> + * @private + */ + "_sRowStripe": "", + + /** + * Denote if the original data source was from the DOM, or the data source + * object. This is used for invalidating data, so DataTables can + * automatically read data from the original source, unless uninstructed + * otherwise. + * @type string + * @default null + * @private + */ + "src": null + }; + + + /** + * Template object for the column information object in DataTables. This object + * is held in the settings aoColumns array and contains all the information that + * DataTables needs about each individual column. + * + * Note that this object is related to {@link DataTable.defaults.column} + * but this one is the internal data store for DataTables's cache of columns. + * It should NOT be manipulated outside of DataTables. Any configuration should + * be done through the initialisation options. + * @namespace + */ + DataTable.models.oColumn = { + /** + * Column index. This could be worked out on-the-fly with $.inArray, but it + * is faster to just hold it as a variable + * @type integer + * @default null + */ + "idx": null, + + /** + * A list of the columns that sorting should occur on when this column + * is sorted. That this property is an array allows multi-column sorting + * to be defined for a column (for example first name / last name columns + * would benefit from this). The values are integers pointing to the + * columns to be sorted on (typically it will be a single integer pointing + * at itself, but that doesn't need to be the case). + * @type array + */ + "aDataSort": null, + + /** + * Define the sorting directions that are applied to the column, in sequence + * as the column is repeatedly sorted upon - i.e. the first value is used + * as the sorting direction when the column if first sorted (clicked on). + * Sort it again (click again) and it will move on to the next index. + * Repeat until loop. + * @type array + */ + "asSorting": null, + + /** + * Flag to indicate if the column is searchable, and thus should be included + * in the filtering or not. + * @type boolean + */ + "bSearchable": null, + + /** + * Flag to indicate if the column is sortable or not. + * @type boolean + */ + "bSortable": null, + + /** + * Flag to indicate if the column is currently visible in the table or not + * @type boolean + */ + "bVisible": null, + + /** + * Store for manual type assignment using the `column.type` option. This + * is held in store so we can manipulate the column's `sType` property. + * @type string + * @default null + * @private + */ + "_sManualType": null, + + /** + * Flag to indicate if HTML5 data attributes should be used as the data + * source for filtering or sorting. True is either are. + * @type boolean + * @default false + * @private + */ + "_bAttrSrc": false, + + /** + * Developer definable function that is called whenever a cell is created (Ajax source, + * etc) or processed for input (DOM source). This can be used as a compliment to mRender + * allowing you to modify the DOM element (add background colour for example) when the + * element is available. + * @type function + * @param {element} nTd The TD node that has been created + * @param {*} sData The Data for the cell + * @param {array|object} oData The data for the whole row + * @param {int} iRow The row index for the aoData data store + * @default null + */ + "fnCreatedCell": null, + + /** + * Function to get data from a cell in a column. You should <b>never</b> + * access data directly through _aData internally in DataTables - always use + * the method attached to this property. It allows mData to function as + * required. This function is automatically assigned by the column + * initialisation method + * @type function + * @param {array|object} oData The data array/object for the array + * (i.e. aoData[]._aData) + * @param {string} sSpecific The specific data type you want to get - + * 'display', 'type' 'filter' 'sort' + * @returns {*} The data for the cell from the given row's data + * @default null + */ + "fnGetData": null, + + /** + * Function to set data for a cell in the column. You should <b>never</b> + * set the data directly to _aData internally in DataTables - always use + * this method. It allows mData to function as required. This function + * is automatically assigned by the column initialisation method + * @type function + * @param {array|object} oData The data array/object for the array + * (i.e. aoData[]._aData) + * @param {*} sValue Value to set + * @default null + */ + "fnSetData": null, + + /** + * Property to read the value for the cells in the column from the data + * source array / object. If null, then the default content is used, if a + * function is given then the return from the function is used. + * @type function|int|string|null + * @default null + */ + "mData": null, + + /** + * Partner property to mData which is used (only when defined) to get + * the data - i.e. it is basically the same as mData, but without the + * 'set' option, and also the data fed to it is the result from mData. + * This is the rendering method to match the data method of mData. + * @type function|int|string|null + * @default null + */ + "mRender": null, + + /** + * Unique header TH/TD element for this column - this is what the sorting + * listener is attached to (if sorting is enabled.) + * @type node + * @default null + */ + "nTh": null, + + /** + * Unique footer TH/TD element for this column (if there is one). Not used + * in DataTables as such, but can be used for plug-ins to reference the + * footer for each column. + * @type node + * @default null + */ + "nTf": null, + + /** + * The class to apply to all TD elements in the table's TBODY for the column + * @type string + * @default null + */ + "sClass": null, + + /** + * When DataTables calculates the column widths to assign to each column, + * it finds the longest string in each column and then constructs a + * temporary table and reads the widths from that. The problem with this + * is that "mmm" is much wider then "iiii", but the latter is a longer + * string - thus the calculation can go wrong (doing it properly and putting + * it into an DOM object and measuring that is horribly(!) slow). Thus as + * a "work around" we provide this option. It will append its value to the + * text that is found to be the longest string for the column - i.e. padding. + * @type string + */ + "sContentPadding": null, + + /** + * Allows a default value to be given for a column's data, and will be used + * whenever a null data source is encountered (this can be because mData + * is set to null, or because the data source itself is null). + * @type string + * @default null + */ + "sDefaultContent": null, + + /** + * Name for the column, allowing reference to the column by name as well as + * by index (needs a lookup to work by name). + * @type string + */ + "sName": null, + + /** + * Custom sorting data type - defines which of the available plug-ins in + * afnSortData the custom sorting will use - if any is defined. + * @type string + * @default std + */ + "sSortDataType": 'std', + + /** + * Class to be applied to the header element when sorting on this column + * @type string + * @default null + */ + "sSortingClass": null, + + /** + * Class to be applied to the header element when sorting on this column - + * when jQuery UI theming is used. + * @type string + * @default null + */ + "sSortingClassJUI": null, + + /** + * Title of the column - what is seen in the TH element (nTh). + * @type string + */ + "sTitle": null, + + /** + * Column sorting and filtering type + * @type string + * @default null + */ + "sType": null, + + /** + * Width of the column + * @type string + * @default null + */ + "sWidth": null, + + /** + * Width of the column when it was first "encountered" + * @type string + * @default null + */ + "sWidthOrig": null + }; + + + /* + * Developer note: The properties of the object below are given in Hungarian + * notation, that was used as the interface for DataTables prior to v1.10, however + * from v1.10 onwards the primary interface is camel case. In order to avoid + * breaking backwards compatibility utterly with this change, the Hungarian + * version is still, internally the primary interface, but is is not documented + * - hence the @name tags in each doc comment. This allows a Javascript function + * to create a map from Hungarian notation to camel case (going the other direction + * would require each property to be listed, which would at around 3K to the size + * of DataTables, while this method is about a 0.5K hit. + * + * Ultimately this does pave the way for Hungarian notation to be dropped + * completely, but that is a massive amount of work and will break current + * installs (therefore is on-hold until v2). + */ + + /** + * Initialisation options that can be given to DataTables at initialisation + * time. + * @namespace + */ + DataTable.defaults = { + /** + * An array of data to use for the table, passed in at initialisation which + * will be used in preference to any data which is already in the DOM. This is + * particularly useful for constructing tables purely in Javascript, for + * example with a custom Ajax call. + * @type array + * @default null + * + * @dtopt Option + * @name DataTable.defaults.data + * + * @example + * // Using a 2D array data source + * $(document).ready( function () { + * $('#example').dataTable( { + * "data": [ + * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], + * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], + * ], + * "columns": [ + * { "title": "Engine" }, + * { "title": "Browser" }, + * { "title": "Platform" }, + * { "title": "Version" }, + * { "title": "Grade" } + * ] + * } ); + * } ); + * + * @example + * // Using an array of objects as a data source (`data`) + * $(document).ready( function () { + * $('#example').dataTable( { + * "data": [ + * { + * "engine": "Trident", + * "browser": "Internet Explorer 4.0", + * "platform": "Win 95+", + * "version": 4, + * "grade": "X" + * }, + * { + * "engine": "Trident", + * "browser": "Internet Explorer 5.0", + * "platform": "Win 95+", + * "version": 5, + * "grade": "C" + * } + * ], + * "columns": [ + * { "title": "Engine", "data": "engine" }, + * { "title": "Browser", "data": "browser" }, + * { "title": "Platform", "data": "platform" }, + * { "title": "Version", "data": "version" }, + * { "title": "Grade", "data": "grade" } + * ] + * } ); + * } ); + */ + "aaData": null, + + + /** + * If ordering is enabled, then DataTables will perform a first pass sort on + * initialisation. You can define which column(s) the sort is performed + * upon, and the sorting direction, with this variable. The `sorting` array + * should contain an array for each column to be sorted initially containing + * the column's index and a direction string ('asc' or 'desc'). + * @type array + * @default [[0,'asc']] + * + * @dtopt Option + * @name DataTable.defaults.order + * + * @example + * // Sort by 3rd column first, and then 4th column + * $(document).ready( function() { + * $('#example').dataTable( { + * "order": [[2,'asc'], [3,'desc']] + * } ); + * } ); + * + * // No initial sorting + * $(document).ready( function() { + * $('#example').dataTable( { + * "order": [] + * } ); + * } ); + */ + "aaSorting": [[0,'asc']], + + + /** + * This parameter is basically identical to the `sorting` parameter, but + * cannot be overridden by user interaction with the table. What this means + * is that you could have a column (visible or hidden) which the sorting + * will always be forced on first - any sorting after that (from the user) + * will then be performed as required. This can be useful for grouping rows + * together. + * @type array + * @default null + * + * @dtopt Option + * @name DataTable.defaults.orderFixed + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "orderFixed": [[0,'asc']] + * } ); + * } ) + */ + "aaSortingFixed": [], + + + /** + * DataTables can be instructed to load data to display in the table from a + * Ajax source. This option defines how that Ajax call is made and where to. + * + * The `ajax` property has three different modes of operation, depending on + * how it is defined. These are: + * + * * `string` - Set the URL from where the data should be loaded from. + * * `object` - Define properties for `jQuery.ajax`. + * * `function` - Custom data get function + * + * `string` + * -------- + * + * As a string, the `ajax` property simply defines the URL from which + * DataTables will load data. + * + * `object` + * -------- + * + * As an object, the parameters in the object are passed to + * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control + * of the Ajax request. DataTables has a number of default parameters which + * you can override using this option. Please refer to the jQuery + * documentation for a full description of the options available, although + * the following parameters provide additional options in DataTables or + * require special consideration: + * + * * `data` - As with jQuery, `data` can be provided as an object, but it + * can also be used as a function to manipulate the data DataTables sends + * to the server. The function takes a single parameter, an object of + * parameters with the values that DataTables has readied for sending. An + * object may be returned which will be merged into the DataTables + * defaults, or you can add the items to the object that was passed in and + * not return anything from the function. This supersedes `fnServerParams` + * from DataTables 1.9-. + * + * * `dataSrc` - By default DataTables will look for the property `data` (or + * `aaData` for compatibility with DataTables 1.9-) when obtaining data + * from an Ajax source or for server-side processing - this parameter + * allows that property to be changed. You can use Javascript dotted + * object notation to get a data source for multiple levels of nesting, or + * it my be used as a function. As a function it takes a single parameter, + * the JSON returned from the server, which can be manipulated as + * required, with the returned value being that used by DataTables as the + * data source for the table. This supersedes `sAjaxDataProp` from + * DataTables 1.9-. + * + * * `success` - Should not be overridden it is used internally in + * DataTables. To manipulate / transform the data returned by the server + * use `ajax.dataSrc`, or use `ajax` as a function (see below). + * + * `function` + * ---------- + * + * As a function, making the Ajax call is left up to yourself allowing + * complete control of the Ajax request. Indeed, if desired, a method other + * than Ajax could be used to obtain the required data, such as Web storage + * or an AIR database. + * + * The function is given four parameters and no return is required. The + * parameters are: + * + * 1. _object_ - Data to send to the server + * 2. _function_ - Callback function that must be executed when the required + * data has been obtained. That data should be passed into the callback + * as the only parameter + * 3. _object_ - DataTables settings object for the table + * + * Note that this supersedes `fnServerData` from DataTables 1.9-. + * + * @type string|object|function + * @default null + * + * @dtopt Option + * @name DataTable.defaults.ajax + * @since 1.10.0 + * + * @example + * // Get JSON data from a file via Ajax. + * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). + * $('#example').dataTable( { + * "ajax": "data.json" + * } ); + * + * @example + * // Get JSON data from a file via Ajax, using `dataSrc` to change + * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) + * $('#example').dataTable( { + * "ajax": { + * "url": "data.json", + * "dataSrc": "tableData" + * } + * } ); + * + * @example + * // Get JSON data from a file via Ajax, using `dataSrc` to read data + * // from a plain array rather than an array in an object + * $('#example').dataTable( { + * "ajax": { + * "url": "data.json", + * "dataSrc": "" + * } + * } ); + * + * @example + * // Manipulate the data returned from the server - add a link to data + * // (note this can, should, be done using `render` for the column - this + * // is just a simple example of how the data can be manipulated). + * $('#example').dataTable( { + * "ajax": { + * "url": "data.json", + * "dataSrc": function ( json ) { + * for ( var i=0, ien=json.length ; i<ien ; i++ ) { + * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; + * } + * return json; + * } + * } + * } ); + * + * @example + * // Add data to the request + * $('#example').dataTable( { + * "ajax": { + * "url": "data.json", + * "data": function ( d ) { + * return { + * "extra_search": $('#extra').val() + * }; + * } + * } + * } ); + * + * @example + * // Send request as POST + * $('#example').dataTable( { + * "ajax": { + * "url": "data.json", + * "type": "POST" + * } + * } ); + * + * @example + * // Get the data from localStorage (could interface with a form for + * // adding, editing and removing rows). + * $('#example').dataTable( { + * "ajax": function (data, callback, settings) { + * callback( + * JSON.parse( localStorage.getItem('dataTablesData') ) + * ); + * } + * } ); + */ + "ajax": null, + + + /** + * This parameter allows you to readily specify the entries in the length drop + * down menu that DataTables shows when pagination is enabled. It can be + * either a 1D array of options which will be used for both the displayed + * option and the value, or a 2D array which will use the array in the first + * position as the value, and the array in the second position as the + * displayed options (useful for language strings such as 'All'). + * + * Note that the `pageLength` property will be automatically set to the + * first value given in this array, unless `pageLength` is also provided. + * @type array + * @default [ 10, 25, 50, 100 ] + * + * @dtopt Option + * @name DataTable.defaults.lengthMenu + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] + * } ); + * } ); + */ + "aLengthMenu": [ 10, 25, 50, 100 ], + + + /** + * The `columns` option in the initialisation parameter allows you to define + * details about the way individual columns behave. For a full list of + * column options that can be set, please see + * {@link DataTable.defaults.column}. Note that if you use `columns` to + * define your columns, you must have an entry in the array for every single + * column that you have in your table (these can be null if you don't which + * to specify any options). + * @member + * + * @name DataTable.defaults.column + */ + "aoColumns": null, + + /** + * Very similar to `columns`, `columnDefs` allows you to target a specific + * column, multiple columns, or all columns, using the `targets` property of + * each object in the array. This allows great flexibility when creating + * tables, as the `columnDefs` arrays can be of any length, targeting the + * columns you specifically want. `columnDefs` may use any of the column + * options available: {@link DataTable.defaults.column}, but it _must_ + * have `targets` defined in each object in the array. Values in the `targets` + * array may be: + * <ul> + * <li>a string - class name will be matched on the TH for the column</li> + * <li>0 or a positive integer - column index counting from the left</li> + * <li>a negative integer - column index counting from the right</li> + * <li>the string "_all" - all columns (i.e. assign a default)</li> + * </ul> + * @member + * + * @name DataTable.defaults.columnDefs + */ + "aoColumnDefs": null, + + + /** + * Basically the same as `search`, this parameter defines the individual column + * filtering state at initialisation time. The array must be of the same size + * as the number of columns, and each element be an object with the parameters + * `search` and `escapeRegex` (the latter is optional). 'null' is also + * accepted and the default will be used. + * @type array + * @default [] + * + * @dtopt Option + * @name DataTable.defaults.searchCols + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "searchCols": [ + * null, + * { "search": "My filter" }, + * null, + * { "search": "^[0-9]", "escapeRegex": false } + * ] + * } ); + * } ) + */ + "aoSearchCols": [], + + + /** + * An array of CSS classes that should be applied to displayed rows. This + * array may be of any length, and DataTables will apply each class + * sequentially, looping when required. + * @type array + * @default null <i>Will take the values determined by the `oClasses.stripe*` + * options</i> + * + * @dtopt Option + * @name DataTable.defaults.stripeClasses + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] + * } ); + * } ) + */ + "asStripeClasses": null, + + + /** + * Enable or disable automatic column width calculation. This can be disabled + * as an optimisation (it takes some time to calculate the widths) if the + * tables widths are passed in using `columns`. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.autoWidth + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "autoWidth": false + * } ); + * } ); + */ + "bAutoWidth": true, + + + /** + * Deferred rendering can provide DataTables with a huge speed boost when you + * are using an Ajax or JS data source for the table. This option, when set to + * true, will cause DataTables to defer the creation of the table elements for + * each row until they are needed for a draw - saving a significant amount of + * time. + * @type boolean + * @default false + * + * @dtopt Features + * @name DataTable.defaults.deferRender + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "ajax": "sources/arrays.txt", + * "deferRender": true + * } ); + * } ); + */ + "bDeferRender": false, + + + /** + * Replace a DataTable which matches the given selector and replace it with + * one which has the properties of the new initialisation object passed. If no + * table matches the selector, then the new DataTable will be constructed as + * per normal. + * @type boolean + * @default false + * + * @dtopt Options + * @name DataTable.defaults.destroy + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "srollY": "200px", + * "paginate": false + * } ); + * + * // Some time later.... + * $('#example').dataTable( { + * "filter": false, + * "destroy": true + * } ); + * } ); + */ + "bDestroy": false, + + + /** + * Enable or disable filtering of data. Filtering in DataTables is "smart" in + * that it allows the end user to input multiple words (space separated) and + * will match a row containing those words, even if not in the order that was + * specified (this allow matching across multiple columns). Note that if you + * wish to use filtering in DataTables this must remain 'true' - to remove the + * default filtering input box and retain filtering abilities, please use + * {@link DataTable.defaults.dom}. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.searching + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "searching": false + * } ); + * } ); + */ + "bFilter": true, + + + /** + * Enable or disable the table information display. This shows information + * about the data that is currently visible on the page, including information + * about filtered data if that action is being performed. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.info + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "info": false + * } ); + * } ); + */ + "bInfo": true, + + + /** + * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some + * slightly different and additional mark-up from what DataTables has + * traditionally used). + * @type boolean + * @default false + * + * @dtopt Features + * @name DataTable.defaults.jQueryUI + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "jQueryUI": true + * } ); + * } ); + */ + "bJQueryUI": false, + + + /** + * Allows the end user to select the size of a formatted page from a select + * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.lengthChange + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "lengthChange": false + * } ); + * } ); + */ + "bLengthChange": true, + + + /** + * Enable or disable pagination. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.paging + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "paging": false + * } ); + * } ); + */ + "bPaginate": true, + + + /** + * Enable or disable the display of a 'processing' indicator when the table is + * being processed (e.g. a sort). This is particularly useful for tables with + * large amounts of data where it can take a noticeable amount of time to sort + * the entries. + * @type boolean + * @default false + * + * @dtopt Features + * @name DataTable.defaults.processing + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "processing": true + * } ); + * } ); + */ + "bProcessing": false, + + + /** + * Retrieve the DataTables object for the given selector. Note that if the + * table has already been initialised, this parameter will cause DataTables + * to simply return the object that has already been set up - it will not take + * account of any changes you might have made to the initialisation object + * passed to DataTables (setting this parameter to true is an acknowledgement + * that you understand this). `destroy` can be used to reinitialise a table if + * you need. + * @type boolean + * @default false + * + * @dtopt Options + * @name DataTable.defaults.retrieve + * + * @example + * $(document).ready( function() { + * initTable(); + * tableActions(); + * } ); + * + * function initTable () + * { + * return $('#example').dataTable( { + * "scrollY": "200px", + * "paginate": false, + * "retrieve": true + * } ); + * } + * + * function tableActions () + * { + * var table = initTable(); + * // perform API operations with oTable + * } + */ + "bRetrieve": false, + + + /** + * When vertical (y) scrolling is enabled, DataTables will force the height of + * the table's viewport to the given height at all times (useful for layout). + * However, this can look odd when filtering data down to a small data set, + * and the footer is left "floating" further down. This parameter (when + * enabled) will cause DataTables to collapse the table's viewport down when + * the result set will fit within the given Y height. + * @type boolean + * @default false + * + * @dtopt Options + * @name DataTable.defaults.scrollCollapse + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "scrollY": "200", + * "scrollCollapse": true + * } ); + * } ); + */ + "bScrollCollapse": false, + + + /** + * Configure DataTables to use server-side processing. Note that the + * `ajax` parameter must also be given in order to give DataTables a + * source to obtain the required data for each draw. + * @type boolean + * @default false + * + * @dtopt Features + * @dtopt Server-side + * @name DataTable.defaults.serverSide + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "serverSide": true, + * "ajax": "xhr.php" + * } ); + * } ); + */ + "bServerSide": false, + + + /** + * Enable or disable sorting of columns. Sorting of individual columns can be + * disabled by the `sortable` option for each column. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.ordering + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "ordering": false + * } ); + * } ); + */ + "bSort": true, + + + /** + * Enable or display DataTables' ability to sort multiple columns at the + * same time (activated by shift-click by the user). + * @type boolean + * @default true + * + * @dtopt Options + * @name DataTable.defaults.orderMulti + * + * @example + * // Disable multiple column sorting ability + * $(document).ready( function () { + * $('#example').dataTable( { + * "orderMulti": false + * } ); + * } ); + */ + "bSortMulti": true, + + + /** + * Allows control over whether DataTables should use the top (true) unique + * cell that is found for a single column, or the bottom (false - default). + * This is useful when using complex headers. + * @type boolean + * @default false + * + * @dtopt Options + * @name DataTable.defaults.orderCellsTop + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "orderCellsTop": true + * } ); + * } ); + */ + "bSortCellsTop": false, + + + /** + * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and + * `sorting\_3` to the columns which are currently being sorted on. This is + * presented as a feature switch as it can increase processing time (while + * classes are removed and added) so for large data sets you might want to + * turn this off. + * @type boolean + * @default true + * + * @dtopt Features + * @name DataTable.defaults.orderClasses + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "orderClasses": false + * } ); + * } ); + */ + "bSortClasses": true, + + + /** + * Enable or disable state saving. When enabled HTML5 `localStorage` will be + * used to save table display information such as pagination information, + * display length, filtering and sorting. As such when the end user reloads + * the page the display display will match what thy had previously set up. + * + * Due to the use of `localStorage` the default state saving is not supported + * in IE6 or 7. If state saving is required in those browsers, use + * `stateSaveCallback` to provide a storage solution such as cookies. + * @type boolean + * @default false + * + * @dtopt Features + * @name DataTable.defaults.stateSave + * + * @example + * $(document).ready( function () { + * $('#example').dataTable( { + * "stateSave": true + * } ); + * } ); + */ + "bStateSave": false, + + + /** + * This function is called when a TR element is created (and all TD child + * elements have been inserted), or registered if using a DOM source, allowing + * manipulation of the TR element (adding classes etc). + * @type function + * @param {node} row "TR" element for the current row + * @param {array} data Raw data array for this row + * @param {int} dataIndex The index of this row in the internal aoData array + * + * @dtopt Callbacks + * @name DataTable.defaults.createdRow + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "createdRow": function( row, data, dataIndex ) { + * // Bold the grade for all 'A' grade browsers + * if ( data[4] == "A" ) + * { + * $('td:eq(4)', row).html( '<b>A</b>' ); + * } + * } + * } ); + * } ); + */ + "fnCreatedRow": null, + + + /** + * This function is called on every 'draw' event, and allows you to + * dynamically modify any aspect you want about the created DOM. + * @type function + * @param {object} settings DataTables settings object + * + * @dtopt Callbacks + * @name DataTable.defaults.drawCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "drawCallback": function( settings ) { + * alert( 'DataTables has redrawn the table' ); + * } + * } ); + * } ); + */ + "fnDrawCallback": null, + + + /** + * Identical to fnHeaderCallback() but for the table footer this function + * allows you to modify the table footer on every 'draw' event. + * @type function + * @param {node} foot "TR" element for the footer + * @param {array} data Full table data (as derived from the original HTML) + * @param {int} start Index for the current display starting point in the + * display array + * @param {int} end Index for the current display ending point in the + * display array + * @param {array int} display Index array to translate the visual position + * to the full data array + * + * @dtopt Callbacks + * @name DataTable.defaults.footerCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "footerCallback": function( tfoot, data, start, end, display ) { + * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; + * } + * } ); + * } ) + */ + "fnFooterCallback": null, + + + /** + * When rendering large numbers in the information element for the table + * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers + * to have a comma separator for the 'thousands' units (e.g. 1 million is + * rendered as "1,000,000") to help readability for the end user. This + * function will override the default method DataTables uses. + * @type function + * @member + * @param {int} toFormat number to be formatted + * @returns {string} formatted string for DataTables to show the number + * + * @dtopt Callbacks + * @name DataTable.defaults.formatNumber + * + * @example + * // Format a number using a single quote for the separator (note that + * // this can also be done with the language.thousands option) + * $(document).ready( function() { + * $('#example').dataTable( { + * "formatNumber": function ( toFormat ) { + * return toFormat.toString().replace( + * /\B(?=(\d{3})+(?!\d))/g, "'" + * ); + * }; + * } ); + * } ); + */ + "fnFormatNumber": function ( toFormat ) { + return toFormat.toString().replace( + /\B(?=(\d{3})+(?!\d))/g, + this.oLanguage.sThousands + ); + }, + + + /** + * This function is called on every 'draw' event, and allows you to + * dynamically modify the header row. This can be used to calculate and + * display useful information about the table. + * @type function + * @param {node} head "TR" element for the header + * @param {array} data Full table data (as derived from the original HTML) + * @param {int} start Index for the current display starting point in the + * display array + * @param {int} end Index for the current display ending point in the + * display array + * @param {array int} display Index array to translate the visual position + * to the full data array + * + * @dtopt Callbacks + * @name DataTable.defaults.headerCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "fheaderCallback": function( head, data, start, end, display ) { + * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; + * } + * } ); + * } ) + */ + "fnHeaderCallback": null, + + + /** + * The information element can be used to convey information about the current + * state of the table. Although the internationalisation options presented by + * DataTables are quite capable of dealing with most customisations, there may + * be times where you wish to customise the string further. This callback + * allows you to do exactly that. + * @type function + * @param {object} oSettings DataTables settings object + * @param {int} start Starting position in data for the draw + * @param {int} end End position in data for the draw + * @param {int} max Total number of rows in the table (regardless of + * filtering) + * @param {int} total Total number of rows in the data set, after filtering + * @param {string} pre The string that DataTables has formatted using it's + * own rules + * @returns {string} The string to be displayed in the information element. + * + * @dtopt Callbacks + * @name DataTable.defaults.infoCallback + * + * @example + * $('#example').dataTable( { + * "infoCallback": function( settings, start, end, max, total, pre ) { + * return start +" to "+ end; + * } + * } ); + */ + "fnInfoCallback": null, + + + /** + * Called when the table has been initialised. Normally DataTables will + * initialise sequentially and there will be no need for this function, + * however, this does not hold true when using external language information + * since that is obtained using an async XHR call. + * @type function + * @param {object} settings DataTables settings object + * @param {object} json The JSON object request from the server - only + * present if client-side Ajax sourced data is used + * + * @dtopt Callbacks + * @name DataTable.defaults.initComplete + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "initComplete": function(settings, json) { + * alert( 'DataTables has finished its initialisation.' ); + * } + * } ); + * } ) + */ + "fnInitComplete": null, + + + /** + * Called at the very start of each table draw and can be used to cancel the + * draw by returning false, any other return (including undefined) results in + * the full draw occurring). + * @type function + * @param {object} settings DataTables settings object + * @returns {boolean} False will cancel the draw, anything else (including no + * return) will allow it to complete. + * + * @dtopt Callbacks + * @name DataTable.defaults.preDrawCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "preDrawCallback": function( settings ) { + * if ( $('#test').val() == 1 ) { + * return false; + * } + * } + * } ); + * } ); + */ + "fnPreDrawCallback": null, + + + /** + * This function allows you to 'post process' each row after it have been + * generated for each table draw, but before it is rendered on screen. This + * function might be used for setting the row class name etc. + * @type function + * @param {node} row "TR" element for the current row + * @param {array} data Raw data array for this row + * @param {int} displayIndex The display index for the current table draw + * @param {int} displayIndexFull The index of the data in the full list of + * rows (after filtering) + * + * @dtopt Callbacks + * @name DataTable.defaults.rowCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { + * // Bold the grade for all 'A' grade browsers + * if ( data[4] == "A" ) { + * $('td:eq(4)', row).html( '<b>A</b>' ); + * } + * } + * } ); + * } ); + */ + "fnRowCallback": null, + + + /** + * __Deprecated__ The functionality provided by this parameter has now been + * superseded by that provided through `ajax`, which should be used instead. + * + * This parameter allows you to override the default function which obtains + * the data from the server so something more suitable for your application. + * For example you could use POST data, or pull information from a Gears or + * AIR database. + * @type function + * @member + * @param {string} source HTTP source to obtain the data from (`ajax`) + * @param {array} data A key/value pair object containing the data to send + * to the server + * @param {function} callback to be called on completion of the data get + * process that will draw the data on the page. + * @param {object} settings DataTables settings object + * + * @dtopt Callbacks + * @dtopt Server-side + * @name DataTable.defaults.serverData + * + * @deprecated 1.10. Please use `ajax` for this functionality now. + */ + "fnServerData": null, + + + /** + * __Deprecated__ The functionality provided by this parameter has now been + * superseded by that provided through `ajax`, which should be used instead. + * + * It is often useful to send extra data to the server when making an Ajax + * request - for example custom filtering information, and this callback + * function makes it trivial to send extra information to the server. The + * passed in parameter is the data set that has been constructed by + * DataTables, and you can add to this or modify it as you require. + * @type function + * @param {array} data Data array (array of objects which are name/value + * pairs) that has been constructed by DataTables and will be sent to the + * server. In the case of Ajax sourced data with server-side processing + * this will be an empty array, for server-side processing there will be a + * significant number of parameters! + * @returns {undefined} Ensure that you modify the data array passed in, + * as this is passed by reference. + * + * @dtopt Callbacks + * @dtopt Server-side + * @name DataTable.defaults.serverParams + * + * @deprecated 1.10. Please use `ajax` for this functionality now. + */ + "fnServerParams": null, + + + /** + * Load the table state. With this function you can define from where, and how, the + * state of a table is loaded. By default DataTables will load from `localStorage` + * but you might wish to use a server-side database or cookies. + * @type function + * @member + * @param {object} settings DataTables settings object + * @return {object} The DataTables state object to be loaded + * + * @dtopt Callbacks + * @name DataTable.defaults.stateLoadCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateLoadCallback": function (settings) { + * var o; + * + * // Send an Ajax request to the server to get the data. Note that + * // this is a synchronous request. + * $.ajax( { + * "url": "/state_load", + * "async": false, + * "dataType": "json", + * "success": function (json) { + * o = json; + * } + * } ); + * + * return o; + * } + * } ); + * } ); + */ + "fnStateLoadCallback": function ( settings ) { + try { + return JSON.parse( + (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( + 'DataTables_'+settings.sInstance+'_'+location.pathname + ) + ); + } catch (e) {} + }, + + + /** + * Callback which allows modification of the saved state prior to loading that state. + * This callback is called when the table is loading state from the stored data, but + * prior to the settings object being modified by the saved state. Note that for + * plug-in authors, you should use the `stateLoadParams` event to load parameters for + * a plug-in. + * @type function + * @param {object} settings DataTables settings object + * @param {object} data The state object that is to be loaded + * + * @dtopt Callbacks + * @name DataTable.defaults.stateLoadParams + * + * @example + * // Remove a saved filter, so filtering is never loaded + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateLoadParams": function (settings, data) { + * data.oSearch.sSearch = ""; + * } + * } ); + * } ); + * + * @example + * // Disallow state loading by returning false + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateLoadParams": function (settings, data) { + * return false; + * } + * } ); + * } ); + */ + "fnStateLoadParams": null, + + + /** + * Callback that is called when the state has been loaded from the state saving method + * and the DataTables settings object has been modified as a result of the loaded state. + * @type function + * @param {object} settings DataTables settings object + * @param {object} data The state object that was loaded + * + * @dtopt Callbacks + * @name DataTable.defaults.stateLoaded + * + * @example + * // Show an alert with the filtering value that was saved + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateLoaded": function (settings, data) { + * alert( 'Saved filter was: '+data.oSearch.sSearch ); + * } + * } ); + * } ); + */ + "fnStateLoaded": null, + + + /** + * Save the table state. This function allows you to define where and how the state + * information for the table is stored By default DataTables will use `localStorage` + * but you might wish to use a server-side database or cookies. + * @type function + * @member + * @param {object} settings DataTables settings object + * @param {object} data The state object to be saved + * + * @dtopt Callbacks + * @name DataTable.defaults.stateSaveCallback + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateSaveCallback": function (settings, data) { + * // Send an Ajax request to the server with the state object + * $.ajax( { + * "url": "/state_save", + * "data": data, + * "dataType": "json", + * "method": "POST" + * "success": function () {} + * } ); + * } + * } ); + * } ); + */ + "fnStateSaveCallback": function ( settings, data ) { + try { + (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( + 'DataTables_'+settings.sInstance+'_'+location.pathname, + JSON.stringify( data ) + ); + } catch (e) {} + }, + + + /** + * Callback which allows modification of the state to be saved. Called when the table + * has changed state a new state save is required. This method allows modification of + * the state saving object prior to actually doing the save, including addition or + * other state properties or modification. Note that for plug-in authors, you should + * use the `stateSaveParams` event to save parameters for a plug-in. + * @type function + * @param {object} settings DataTables settings object + * @param {object} data The state object to be saved + * + * @dtopt Callbacks + * @name DataTable.defaults.stateSaveParams + * + * @example + * // Remove a saved filter, so filtering is never saved + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateSave": true, + * "stateSaveParams": function (settings, data) { + * data.oSearch.sSearch = ""; + * } + * } ); + * } ); + */ + "fnStateSaveParams": null, + + + /** + * Duration for which the saved state information is considered valid. After this period + * has elapsed the state will be returned to the default. + * Value is given in seconds. + * @type int + * @default 7200 <i>(2 hours)</i> + * + * @dtopt Options + * @name DataTable.defaults.stateDuration + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "stateDuration": 60*60*24; // 1 day + * } ); + * } ) + */ + "iStateDuration": 7200, + + + /** + * When enabled DataTables will not make a request to the server for the first + * page draw - rather it will use the data already on the page (no sorting etc + * will be applied to it), thus saving on an XHR at load time. `deferLoading` + * is used to indicate that deferred loading is required, but it is also used + * to tell DataTables how many records there are in the full table (allowing + * the information element and pagination to be displayed correctly). In the case + * where a filtering is applied to the table on initial load, this can be + * indicated by giving the parameter as an array, where the first element is + * the number of records available after filtering and the second element is the + * number of records without filtering (allowing the table information element + * to be shown correctly). + * @type int | array + * @default null + * + * @dtopt Options + * @name DataTable.defaults.deferLoading + * + * @example + * // 57 records available in the table, no filtering applied + * $(document).ready( function() { + * $('#example').dataTable( { + * "serverSide": true, + * "ajax": "scripts/server_processing.php", + * "deferLoading": 57 + * } ); + * } ); + * + * @example + * // 57 records after filtering, 100 without filtering (an initial filter applied) + * $(document).ready( function() { + * $('#example').dataTable( { + * "serverSide": true, + * "ajax": "scripts/server_processing.php", + * "deferLoading": [ 57, 100 ], + * "search": { + * "search": "my_filter" + * } + * } ); + * } ); + */ + "iDeferLoading": null, + + + /** + * Number of rows to display on a single page when using pagination. If + * feature enabled (`lengthChange`) then the end user will be able to override + * this to a custom setting using a pop-up menu. + * @type int + * @default 10 + * + * @dtopt Options + * @name DataTable.defaults.pageLength + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "pageLength": 50 + * } ); + * } ) + */ + "iDisplayLength": 10, + + + /** + * Define the starting point for data display when using DataTables with + * pagination. Note that this parameter is the number of records, rather than + * the page number, so if you have 10 records per page and want to start on + * the third page, it should be "20". + * @type int + * @default 0 + * + * @dtopt Options + * @name DataTable.defaults.displayStart + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "displayStart": 20 + * } ); + * } ) + */ + "iDisplayStart": 0, + + + /** + * By default DataTables allows keyboard navigation of the table (sorting, paging, + * and filtering) by adding a `tabindex` attribute to the required elements. This + * allows you to tab through the controls and press the enter key to activate them. + * The tabindex is default 0, meaning that the tab follows the flow of the document. + * You can overrule this using this parameter if you wish. Use a value of -1 to + * disable built-in keyboard navigation. + * @type int + * @default 0 + * + * @dtopt Options + * @name DataTable.defaults.tabIndex + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "tabIndex": 1 + * } ); + * } ); + */ + "iTabIndex": 0, + + + /** + * Classes that DataTables assigns to the various components and features + * that it adds to the HTML table. This allows classes to be configured + * during initialisation in addition to through the static + * {@link DataTable.ext.oStdClasses} object). + * @namespace + * @name DataTable.defaults.classes + */ + "oClasses": {}, + + + /** + * All strings that DataTables uses in the user interface that it creates + * are defined in this object, allowing you to modified them individually or + * completely replace them all as required. + * @namespace + * @name DataTable.defaults.language + */ + "oLanguage": { + /** + * Strings that are used for WAI-ARIA labels and controls only (these are not + * actually visible on the page, but will be read by screenreaders, and thus + * must be internationalised as well). + * @namespace + * @name DataTable.defaults.language.aria + */ + "oAria": { + /** + * ARIA label that is added to the table headers when the column may be + * sorted ascending by activing the column (click or return when focused). + * Note that the column header is prefixed to this string. + * @type string + * @default : activate to sort column ascending + * + * @dtopt Language + * @name DataTable.defaults.language.aria.sortAscending + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "aria": { + * "sortAscending": " - click/return to sort ascending" + * } + * } + * } ); + * } ); + */ + "sSortAscending": ": activate to sort column ascending", + + /** + * ARIA label that is added to the table headers when the column may be + * sorted descending by activing the column (click or return when focused). + * Note that the column header is prefixed to this string. + * @type string + * @default : activate to sort column ascending + * + * @dtopt Language + * @name DataTable.defaults.language.aria.sortDescending + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "aria": { + * "sortDescending": " - click/return to sort descending" + * } + * } + * } ); + * } ); + */ + "sSortDescending": ": activate to sort column descending" + }, + + /** + * Pagination string used by DataTables for the built-in pagination + * control types. + * @namespace + * @name DataTable.defaults.language.paginate + */ + "oPaginate": { + /** + * Text to use when using the 'full_numbers' type of pagination for the + * button to take the user to the first page. + * @type string + * @default First + * + * @dtopt Language + * @name DataTable.defaults.language.paginate.first + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "paginate": { + * "first": "First page" + * } + * } + * } ); + * } ); + */ + "sFirst": "First", + + + /** + * Text to use when using the 'full_numbers' type of pagination for the + * button to take the user to the last page. + * @type string + * @default Last + * + * @dtopt Language + * @name DataTable.defaults.language.paginate.last + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "paginate": { + * "last": "Last page" + * } + * } + * } ); + * } ); + */ + "sLast": "Last", + + + /** + * Text to use for the 'next' pagination button (to take the user to the + * next page). + * @type string + * @default Next + * + * @dtopt Language + * @name DataTable.defaults.language.paginate.next + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "paginate": { + * "next": "Next page" + * } + * } + * } ); + * } ); + */ + "sNext": "Next", + + + /** + * Text to use for the 'previous' pagination button (to take the user to + * the previous page). + * @type string + * @default Previous + * + * @dtopt Language + * @name DataTable.defaults.language.paginate.previous + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "paginate": { + * "previous": "Previous page" + * } + * } + * } ); + * } ); + */ + "sPrevious": "Previous" + }, + + /** + * This string is shown in preference to `zeroRecords` when the table is + * empty of data (regardless of filtering). Note that this is an optional + * parameter - if it is not given, the value of `zeroRecords` will be used + * instead (either the default or given value). + * @type string + * @default No data available in table + * + * @dtopt Language + * @name DataTable.defaults.language.emptyTable + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "emptyTable": "No data available in table" + * } + * } ); + * } ); + */ + "sEmptyTable": "No data available in table", + + + /** + * This string gives information to the end user about the information + * that is current on display on the page. The following tokens can be + * used in the string and will be dynamically replaced as the table + * display updates. This tokens can be placed anywhere in the string, or + * removed as needed by the language requires: + * + * * `\_START\_` - Display index of the first record on the current page + * * `\_END\_` - Display index of the last record on the current page + * * `\_TOTAL\_` - Number of records in the table after filtering + * * `\_MAX\_` - Number of records in the table without filtering + * * `\_PAGE\_` - Current page number + * * `\_PAGES\_` - Total number of pages of data in the table + * + * @type string + * @default Showing _START_ to _END_ of _TOTAL_ entries + * + * @dtopt Language + * @name DataTable.defaults.language.info + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "info": "Showing page _PAGE_ of _PAGES_" + * } + * } ); + * } ); + */ + "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", + + + /** + * Display information string for when the table is empty. Typically the + * format of this string should match `info`. + * @type string + * @default Showing 0 to 0 of 0 entries + * + * @dtopt Language + * @name DataTable.defaults.language.infoEmpty + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "infoEmpty": "No entries to show" + * } + * } ); + * } ); + */ + "sInfoEmpty": "Showing 0 to 0 of 0 entries", + + + /** + * When a user filters the information in a table, this string is appended + * to the information (`info`) to give an idea of how strong the filtering + * is. The variable _MAX_ is dynamically updated. + * @type string + * @default (filtered from _MAX_ total entries) + * + * @dtopt Language + * @name DataTable.defaults.language.infoFiltered + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "infoFiltered": " - filtering from _MAX_ records" + * } + * } ); + * } ); + */ + "sInfoFiltered": "(filtered from _MAX_ total entries)", + + + /** + * If can be useful to append extra information to the info string at times, + * and this variable does exactly that. This information will be appended to + * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are + * being used) at all times. + * @type string + * @default <i>Empty string</i> + * + * @dtopt Language + * @name DataTable.defaults.language.infoPostFix + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "infoPostFix": "All records shown are derived from real information." + * } + * } ); + * } ); + */ + "sInfoPostFix": "", + + + /** + * This decimal place operator is a little different from the other + * language options since DataTables doesn't output floating point + * numbers, so it won't ever use this for display of a number. Rather, + * what this parameter does is modify the sort methods of the table so + * that numbers which are in a format which has a character other than + * a period (`.`) as a decimal place will be sorted numerically. + * + * Note that numbers with different decimal places cannot be shown in + * the same table and still be sortable, the table must be consistent. + * However, multiple different tables on the page can use different + * decimal place characters. + * @type string + * @default + * + * @dtopt Language + * @name DataTable.defaults.language.decimal + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "decimal": "," + * "thousands": "." + * } + * } ); + * } ); + */ + "sDecimal": "", + + + /** + * DataTables has a build in number formatter (`formatNumber`) which is + * used to format large numbers that are used in the table information. + * By default a comma is used, but this can be trivially changed to any + * character you wish with this parameter. + * @type string + * @default , + * + * @dtopt Language + * @name DataTable.defaults.language.thousands + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "thousands": "'" + * } + * } ); + * } ); + */ + "sThousands": ",", + + + /** + * Detail the action that will be taken when the drop down menu for the + * pagination length option is changed. The '_MENU_' variable is replaced + * with a default select list of 10, 25, 50 and 100, and can be replaced + * with a custom select box if required. + * @type string + * @default Show _MENU_ entries + * + * @dtopt Language + * @name DataTable.defaults.language.lengthMenu + * + * @example + * // Language change only + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "lengthMenu": "Display _MENU_ records" + * } + * } ); + * } ); + * + * @example + * // Language and options change + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "lengthMenu": 'Display <select>'+ + * '<option value="10">10</option>'+ + * '<option value="20">20</option>'+ + * '<option value="30">30</option>'+ + * '<option value="40">40</option>'+ + * '<option value="50">50</option>'+ + * '<option value="-1">All</option>'+ + * '</select> records' + * } + * } ); + * } ); + */ + "sLengthMenu": "Show _MENU_ entries", + + + /** + * When using Ajax sourced data and during the first draw when DataTables is + * gathering the data, this message is shown in an empty row in the table to + * indicate to the end user the the data is being loaded. Note that this + * parameter is not used when loading data by server-side processing, just + * Ajax sourced data with client-side processing. + * @type string + * @default Loading... + * + * @dtopt Language + * @name DataTable.defaults.language.loadingRecords + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "loadingRecords": "Please wait - loading..." + * } + * } ); + * } ); + */ + "sLoadingRecords": "Loading...", + + + /** + * Text which is displayed when the table is processing a user action + * (usually a sort command or similar). + * @type string + * @default Processing... + * + * @dtopt Language + * @name DataTable.defaults.language.processing + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "processing": "DataTables is currently busy" + * } + * } ); + * } ); + */ + "sProcessing": "Processing...", + + + /** + * Details the actions that will be taken when the user types into the + * filtering input text box. The variable "_INPUT_", if used in the string, + * is replaced with the HTML text box for the filtering input allowing + * control over where it appears in the string. If "_INPUT_" is not given + * then the input box is appended to the string automatically. + * @type string + * @default Search: + * + * @dtopt Language + * @name DataTable.defaults.language.search + * + * @example + * // Input text box will be appended at the end automatically + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "search": "Filter records:" + * } + * } ); + * } ); + * + * @example + * // Specify where the filter should appear + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "search": "Apply filter _INPUT_ to table" + * } + * } ); + * } ); + */ + "sSearch": "Search:", + + + /** + * Assign a `placeholder` attribute to the search `input` element + * @type string + * @default + * + * @dtopt Language + * @name DataTable.defaults.language.searchPlaceholder + */ + "sSearchPlaceholder": "", + + + /** + * All of the language information can be stored in a file on the + * server-side, which DataTables will look up if this parameter is passed. + * It must store the URL of the language file, which is in a JSON format, + * and the object has the same properties as the oLanguage object in the + * initialiser object (i.e. the above parameters). Please refer to one of + * the example language files to see how this works in action. + * @type string + * @default <i>Empty string - i.e. disabled</i> + * + * @dtopt Language + * @name DataTable.defaults.language.url + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt" + * } + * } ); + * } ); + */ + "sUrl": "", + + + /** + * Text shown inside the table records when the is no information to be + * displayed after filtering. `emptyTable` is shown when there is simply no + * information in the table at all (regardless of filtering). + * @type string + * @default No matching records found + * + * @dtopt Language + * @name DataTable.defaults.language.zeroRecords + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "language": { + * "zeroRecords": "No records to display" + * } + * } ); + * } ); + */ + "sZeroRecords": "No matching records found" + }, + + + /** + * This parameter allows you to have define the global filtering state at + * initialisation time. As an object the `search` parameter must be + * defined, but all other parameters are optional. When `regex` is true, + * the search string will be treated as a regular expression, when false + * (default) it will be treated as a straight string. When `smart` + * DataTables will use it's smart filtering methods (to word match at + * any point in the data), when false this will not be done. + * @namespace + * @extends DataTable.models.oSearch + * + * @dtopt Options + * @name DataTable.defaults.search + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "search": {"search": "Initial search"} + * } ); + * } ) + */ + "oSearch": $.extend( {}, DataTable.models.oSearch ), + + + /** + * __Deprecated__ The functionality provided by this parameter has now been + * superseded by that provided through `ajax`, which should be used instead. + * + * By default DataTables will look for the property `data` (or `aaData` for + * compatibility with DataTables 1.9-) when obtaining data from an Ajax + * source or for server-side processing - this parameter allows that + * property to be changed. You can use Javascript dotted object notation to + * get a data source for multiple levels of nesting. + * @type string + * @default data + * + * @dtopt Options + * @dtopt Server-side + * @name DataTable.defaults.ajaxDataProp + * + * @deprecated 1.10. Please use `ajax` for this functionality now. + */ + "sAjaxDataProp": "data", + + + /** + * __Deprecated__ The functionality provided by this parameter has now been + * superseded by that provided through `ajax`, which should be used instead. + * + * You can instruct DataTables to load data from an external + * source using this parameter (use aData if you want to pass data in you + * already have). Simply provide a url a JSON object can be obtained from. + * @type string + * @default null + * + * @dtopt Options + * @dtopt Server-side + * @name DataTable.defaults.ajaxSource + * + * @deprecated 1.10. Please use `ajax` for this functionality now. + */ + "sAjaxSource": null, + + + /** + * This initialisation variable allows you to specify exactly where in the + * DOM you want DataTables to inject the various controls it adds to the page + * (for example you might want the pagination controls at the top of the + * table). DIV elements (with or without a custom class) can also be added to + * aid styling. The follow syntax is used: + * <ul> + * <li>The following options are allowed: + * <ul> + * <li>'l' - Length changing</li> + * <li>'f' - Filtering input</li> + * <li>'t' - The table!</li> + * <li>'i' - Information</li> + * <li>'p' - Pagination</li> + * <li>'r' - pRocessing</li> + * </ul> + * </li> + * <li>The following constants are allowed: + * <ul> + * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> + * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> + * </ul> + * </li> + * <li>The following syntax is expected: + * <ul> + * <li>'&lt;' and '&gt;' - div elements</li> + * <li>'&lt;"class" and '&gt;' - div with a class</li> + * <li>'&lt;"#id" and '&gt;' - div with an ID</li> + * </ul> + * </li> + * <li>Examples: + * <ul> + * <li>'&lt;"wrapper"flipt&gt;'</li> + * <li>'&lt;lf&lt;t&gt;ip&gt;'</li> + * </ul> + * </li> + * </ul> + * @type string + * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> + * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> + * + * @dtopt Options + * @name DataTable.defaults.dom + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "dom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;' + * } ); + * } ); + */ + "sDom": "lfrtip", + + + /** + * Search delay option. This will throttle full table searches that use the + * DataTables provided search input element (it does not effect calls to + * `dt-api search()`, providing a delay before the search is made. + * @type integer + * @default 0 + * + * @dtopt Options + * @name DataTable.defaults.searchDelay + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "searchDelay": 200 + * } ); + * } ) + */ + "searchDelay": null, + + + /** + * DataTables features four different built-in options for the buttons to + * display for pagination control: + * + * * `simple` - 'Previous' and 'Next' buttons only + * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers + * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons + * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus + * page numbers + * + * Further methods can be added using {@link DataTable.ext.oPagination}. + * @type string + * @default simple_numbers + * + * @dtopt Options + * @name DataTable.defaults.pagingType + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "pagingType": "full_numbers" + * } ); + * } ) + */ + "sPaginationType": "simple_numbers", + + + /** + * Enable horizontal scrolling. When a table is too wide to fit into a + * certain layout, or you have a large number of columns in the table, you + * can enable x-scrolling to show the table in a viewport, which can be + * scrolled. This property can be `true` which will allow the table to + * scroll horizontally when needed, or any CSS unit, or a number (in which + * case it will be treated as a pixel measurement). Setting as simply `true` + * is recommended. + * @type boolean|string + * @default <i>blank string - i.e. disabled</i> + * + * @dtopt Features + * @name DataTable.defaults.scrollX + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "scrollX": true, + * "scrollCollapse": true + * } ); + * } ); + */ + "sScrollX": "", + + + /** + * This property can be used to force a DataTable to use more width than it + * might otherwise do when x-scrolling is enabled. For example if you have a + * table which requires to be well spaced, this parameter is useful for + * "over-sizing" the table, and thus forcing scrolling. This property can by + * any CSS unit, or a number (in which case it will be treated as a pixel + * measurement). + * @type string + * @default <i>blank string - i.e. disabled</i> + * + * @dtopt Options + * @name DataTable.defaults.scrollXInner + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "scrollX": "100%", + * "scrollXInner": "110%" + * } ); + * } ); + */ + "sScrollXInner": "", + + + /** + * Enable vertical scrolling. Vertical scrolling will constrain the DataTable + * to the given height, and enable scrolling for any data which overflows the + * current viewport. This can be used as an alternative to paging to display + * a lot of data in a small area (although paging and scrolling can both be + * enabled at the same time). This property can be any CSS unit, or a number + * (in which case it will be treated as a pixel measurement). + * @type string + * @default <i>blank string - i.e. disabled</i> + * + * @dtopt Features + * @name DataTable.defaults.scrollY + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "scrollY": "200px", + * "paginate": false + * } ); + * } ); + */ + "sScrollY": "", + + + /** + * __Deprecated__ The functionality provided by this parameter has now been + * superseded by that provided through `ajax`, which should be used instead. + * + * Set the HTTP method that is used to make the Ajax call for server-side + * processing or Ajax sourced data. + * @type string + * @default GET + * + * @dtopt Options + * @dtopt Server-side + * @name DataTable.defaults.serverMethod + * + * @deprecated 1.10. Please use `ajax` for this functionality now. + */ + "sServerMethod": "GET", + + + /** + * DataTables makes use of renderers when displaying HTML elements for + * a table. These renderers can be added or modified by plug-ins to + * generate suitable mark-up for a site. For example the Bootstrap + * integration plug-in for DataTables uses a paging button renderer to + * display pagination buttons in the mark-up required by Bootstrap. + * + * For further information about the renderers available see + * DataTable.ext.renderer + * @type string|object + * @default null + * + * @name DataTable.defaults.renderer + * + */ + "renderer": null + }; + + _fnHungarianMap( DataTable.defaults ); + + + + /* + * Developer note - See note in model.defaults.js about the use of Hungarian + * notation and camel case. + */ + + /** + * Column options that can be given to DataTables at initialisation time. + * @namespace + */ + DataTable.defaults.column = { + /** + * Define which column(s) an order will occur on for this column. This + * allows a column's ordering to take multiple columns into account when + * doing a sort or use the data from a different column. For example first + * name / last name columns make sense to do a multi-column sort over the + * two columns. + * @type array|int + * @default null <i>Takes the value of the column index automatically</i> + * + * @name DataTable.defaults.column.orderData + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, + * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, + * { "orderData": 2, "targets": [ 2 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "orderData": [ 0, 1 ] }, + * { "orderData": [ 1, 0 ] }, + * { "orderData": 2 }, + * null, + * null + * ] + * } ); + * } ); + */ + "aDataSort": null, + "iDataSort": -1, + + + /** + * You can control the default ordering direction, and even alter the + * behaviour of the sort handler (i.e. only allow ascending ordering etc) + * using this parameter. + * @type array + * @default [ 'asc', 'desc' ] + * + * @name DataTable.defaults.column.orderSequence + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, + * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, + * { "orderSequence": [ "desc" ], "targets": [ 3 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * null, + * { "orderSequence": [ "asc" ] }, + * { "orderSequence": [ "desc", "asc", "asc" ] }, + * { "orderSequence": [ "desc" ] }, + * null + * ] + * } ); + * } ); + */ + "asSorting": [ 'asc', 'desc' ], + + + /** + * Enable or disable filtering on the data in this column. + * @type boolean + * @default true + * + * @name DataTable.defaults.column.searchable + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "searchable": false, "targets": [ 0 ] } + * ] } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "searchable": false }, + * null, + * null, + * null, + * null + * ] } ); + * } ); + */ + "bSearchable": true, + + + /** + * Enable or disable ordering on this column. + * @type boolean + * @default true + * + * @name DataTable.defaults.column.orderable + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "orderable": false, "targets": [ 0 ] } + * ] } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "orderable": false }, + * null, + * null, + * null, + * null + * ] } ); + * } ); + */ + "bSortable": true, + + + /** + * Enable or disable the display of this column. + * @type boolean + * @default true + * + * @name DataTable.defaults.column.visible + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "visible": false, "targets": [ 0 ] } + * ] } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "visible": false }, + * null, + * null, + * null, + * null + * ] } ); + * } ); + */ + "bVisible": true, + + + /** + * Developer definable function that is called whenever a cell is created (Ajax source, + * etc) or processed for input (DOM source). This can be used as a compliment to mRender + * allowing you to modify the DOM element (add background colour for example) when the + * element is available. + * @type function + * @param {element} td The TD node that has been created + * @param {*} cellData The Data for the cell + * @param {array|object} rowData The data for the whole row + * @param {int} row The row index for the aoData data store + * @param {int} col The column index for aoColumns + * + * @name DataTable.defaults.column.createdCell + * @dtopt Columns + * + * @example + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [3], + * "createdCell": function (td, cellData, rowData, row, col) { + * if ( cellData == "1.7" ) { + * $(td).css('color', 'blue') + * } + * } + * } ] + * }); + * } ); + */ + "fnCreatedCell": null, + + + /** + * This parameter has been replaced by `data` in DataTables to ensure naming + * consistency. `dataProp` can still be used, as there is backwards + * compatibility in DataTables for this option, but it is strongly + * recommended that you use `data` in preference to `dataProp`. + * @name DataTable.defaults.column.dataProp + */ + + + /** + * This property can be used to read data from any data source property, + * including deeply nested objects / properties. `data` can be given in a + * number of different ways which effect its behaviour: + * + * * `integer` - treated as an array index for the data source. This is the + * default that DataTables uses (incrementally increased for each column). + * * `string` - read an object property from the data source. There are + * three 'special' options that can be used in the string to alter how + * DataTables reads the data from the source object: + * * `.` - Dotted Javascript notation. Just as you use a `.` in + * Javascript to read from nested objects, so to can the options + * specified in `data`. For example: `browser.version` or + * `browser.name`. If your object parameter name contains a period, use + * `\\` to escape it - i.e. `first\\.name`. + * * `[]` - Array notation. DataTables can automatically combine data + * from and array source, joining the data with the characters provided + * between the two brackets. For example: `name[, ]` would provide a + * comma-space separated list from the source array. If no characters + * are provided between the brackets, the original array source is + * returned. + * * `()` - Function notation. Adding `()` to the end of a parameter will + * execute a function of the name given. For example: `browser()` for a + * simple function on the data source, `browser.version()` for a + * function in a nested property or even `browser().version` to get an + * object property if the function called returns an object. Note that + * function notation is recommended for use in `render` rather than + * `data` as it is much simpler to use as a renderer. + * * `null` - use the original data source for the row rather than plucking + * data directly from it. This action has effects on two other + * initialisation options: + * * `defaultContent` - When null is given as the `data` option and + * `defaultContent` is specified for the column, the value defined by + * `defaultContent` will be used for the cell. + * * `render` - When null is used for the `data` option and the `render` + * option is specified for the column, the whole data source for the + * row is used for the renderer. + * * `function` - the function given will be executed whenever DataTables + * needs to set or get the data for a cell in the column. The function + * takes three parameters: + * * Parameters: + * * `{array|object}` The data source for the row + * * `{string}` The type call data requested - this will be 'set' when + * setting data or 'filter', 'display', 'type', 'sort' or undefined + * when gathering data. Note that when `undefined` is given for the + * type DataTables expects to get the raw data for the object back< + * * `{*}` Data to set when the second parameter is 'set'. + * * Return: + * * The return value from the function is not required when 'set' is + * the type of call, but otherwise the return is what will be used + * for the data requested. + * + * Note that `data` is a getter and setter option. If you just require + * formatting of data for output, you will likely want to use `render` which + * is simply a getter and thus simpler to use. + * + * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The + * name change reflects the flexibility of this property and is consistent + * with the naming of mRender. If 'mDataProp' is given, then it will still + * be used by DataTables, as it automatically maps the old name to the new + * if required. + * + * @type string|int|function|null + * @default null <i>Use automatically calculated column index</i> + * + * @name DataTable.defaults.column.data + * @dtopt Columns + * + * @example + * // Read table data from objects + * // JSON structure for each row: + * // { + * // "engine": {value}, + * // "browser": {value}, + * // "platform": {value}, + * // "version": {value}, + * // "grade": {value} + * // } + * $(document).ready( function() { + * $('#example').dataTable( { + * "ajaxSource": "sources/objects.txt", + * "columns": [ + * { "data": "engine" }, + * { "data": "browser" }, + * { "data": "platform" }, + * { "data": "version" }, + * { "data": "grade" } + * ] + * } ); + * } ); + * + * @example + * // Read information from deeply nested objects + * // JSON structure for each row: + * // { + * // "engine": {value}, + * // "browser": {value}, + * // "platform": { + * // "inner": {value} + * // }, + * // "details": [ + * // {value}, {value} + * // ] + * // } + * $(document).ready( function() { + * $('#example').dataTable( { + * "ajaxSource": "sources/deep.txt", + * "columns": [ + * { "data": "engine" }, + * { "data": "browser" }, + * { "data": "platform.inner" }, + * { "data": "platform.details.0" }, + * { "data": "platform.details.1" } + * ] + * } ); + * } ); + * + * @example + * // Using `data` as a function to provide different information for + * // sorting, filtering and display. In this case, currency (price) + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": function ( source, type, val ) { + * if (type === 'set') { + * source.price = val; + * // Store the computed dislay and filter values for efficiency + * source.price_display = val=="" ? "" : "$"+numberFormat(val); + * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; + * return; + * } + * else if (type === 'display') { + * return source.price_display; + * } + * else if (type === 'filter') { + * return source.price_filter; + * } + * // 'sort', 'type' and undefined all just use the integer + * return source.price; + * } + * } ] + * } ); + * } ); + * + * @example + * // Using default content + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": null, + * "defaultContent": "Click to edit" + * } ] + * } ); + * } ); + * + * @example + * // Using array notation - outputting a list from an array + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": "name[, ]" + * } ] + * } ); + * } ); + * + */ + "mData": null, + + + /** + * This property is the rendering partner to `data` and it is suggested that + * when you want to manipulate data for display (including filtering, + * sorting etc) without altering the underlying data for the table, use this + * property. `render` can be considered to be the the read only companion to + * `data` which is read / write (then as such more complex). Like `data` + * this option can be given in a number of different ways to effect its + * behaviour: + * + * * `integer` - treated as an array index for the data source. This is the + * default that DataTables uses (incrementally increased for each column). + * * `string` - read an object property from the data source. There are + * three 'special' options that can be used in the string to alter how + * DataTables reads the data from the source object: + * * `.` - Dotted Javascript notation. Just as you use a `.` in + * Javascript to read from nested objects, so to can the options + * specified in `data`. For example: `browser.version` or + * `browser.name`. If your object parameter name contains a period, use + * `\\` to escape it - i.e. `first\\.name`. + * * `[]` - Array notation. DataTables can automatically combine data + * from and array source, joining the data with the characters provided + * between the two brackets. For example: `name[, ]` would provide a + * comma-space separated list from the source array. If no characters + * are provided between the brackets, the original array source is + * returned. + * * `()` - Function notation. Adding `()` to the end of a parameter will + * execute a function of the name given. For example: `browser()` for a + * simple function on the data source, `browser.version()` for a + * function in a nested property or even `browser().version` to get an + * object property if the function called returns an object. + * * `object` - use different data for the different data types requested by + * DataTables ('filter', 'display', 'type' or 'sort'). The property names + * of the object is the data type the property refers to and the value can + * defined using an integer, string or function using the same rules as + * `render` normally does. Note that an `_` option _must_ be specified. + * This is the default value to use if you haven't specified a value for + * the data type requested by DataTables. + * * `function` - the function given will be executed whenever DataTables + * needs to set or get the data for a cell in the column. The function + * takes three parameters: + * * Parameters: + * * {array|object} The data source for the row (based on `data`) + * * {string} The type call data requested - this will be 'filter', + * 'display', 'type' or 'sort'. + * * {array|object} The full data source for the row (not based on + * `data`) + * * Return: + * * The return value from the function is what will be used for the + * data requested. + * + * @type string|int|function|object|null + * @default null Use the data source value. + * + * @name DataTable.defaults.column.render + * @dtopt Columns + * + * @example + * // Create a comma separated list from an array of objects + * $(document).ready( function() { + * $('#example').dataTable( { + * "ajaxSource": "sources/deep.txt", + * "columns": [ + * { "data": "engine" }, + * { "data": "browser" }, + * { + * "data": "platform", + * "render": "[, ].name" + * } + * ] + * } ); + * } ); + * + * @example + * // Execute a function to obtain data + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": null, // Use the full data source object for the renderer's source + * "render": "browserName()" + * } ] + * } ); + * } ); + * + * @example + * // As an object, extracting different data for the different types + * // This would be used with a data source such as: + * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } + * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` + * // (which has both forms) is used for filtering for if a user inputs either format, while + * // the formatted phone number is the one that is shown in the table. + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": null, // Use the full data source object for the renderer's source + * "render": { + * "_": "phone", + * "filter": "phone_filter", + * "display": "phone_display" + * } + * } ] + * } ); + * } ); + * + * @example + * // Use as a function to create a link from the data source + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "data": "download_link", + * "render": function ( data, type, full ) { + * return '<a href="'+data+'">Download</a>'; + * } + * } ] + * } ); + * } ); + */ + "mRender": null, + + + /** + * Change the cell type created for the column - either TD cells or TH cells. This + * can be useful as TH cells have semantic meaning in the table body, allowing them + * to act as a header for a row (you may wish to add scope='row' to the TH elements). + * @type string + * @default td + * + * @name DataTable.defaults.column.cellType + * @dtopt Columns + * + * @example + * // Make the first column use TH cells + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ { + * "targets": [ 0 ], + * "cellType": "th" + * } ] + * } ); + * } ); + */ + "sCellType": "td", + + + /** + * Class to give to each cell in this column. + * @type string + * @default <i>Empty string</i> + * + * @name DataTable.defaults.column.class + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "class": "my_class", "targets": [ 0 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "class": "my_class" }, + * null, + * null, + * null, + * null + * ] + * } ); + * } ); + */ + "sClass": "", + + /** + * When DataTables calculates the column widths to assign to each column, + * it finds the longest string in each column and then constructs a + * temporary table and reads the widths from that. The problem with this + * is that "mmm" is much wider then "iiii", but the latter is a longer + * string - thus the calculation can go wrong (doing it properly and putting + * it into an DOM object and measuring that is horribly(!) slow). Thus as + * a "work around" we provide this option. It will append its value to the + * text that is found to be the longest string for the column - i.e. padding. + * Generally you shouldn't need this! + * @type string + * @default <i>Empty string<i> + * + * @name DataTable.defaults.column.contentPadding + * @dtopt Columns + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * null, + * null, + * null, + * { + * "contentPadding": "mmm" + * } + * ] + * } ); + * } ); + */ + "sContentPadding": "", + + + /** + * Allows a default value to be given for a column's data, and will be used + * whenever a null data source is encountered (this can be because `data` + * is set to null, or because the data source itself is null). + * @type string + * @default null + * + * @name DataTable.defaults.column.defaultContent + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { + * "data": null, + * "defaultContent": "Edit", + * "targets": [ -1 ] + * } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * null, + * null, + * null, + * { + * "data": null, + * "defaultContent": "Edit" + * } + * ] + * } ); + * } ); + */ + "sDefaultContent": null, + + + /** + * This parameter is only used in DataTables' server-side processing. It can + * be exceptionally useful to know what columns are being displayed on the + * client side, and to map these to database fields. When defined, the names + * also allow DataTables to reorder information from the server if it comes + * back in an unexpected order (i.e. if you switch your columns around on the + * client-side, your server-side code does not also need updating). + * @type string + * @default <i>Empty string</i> + * + * @name DataTable.defaults.column.name + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "name": "engine", "targets": [ 0 ] }, + * { "name": "browser", "targets": [ 1 ] }, + * { "name": "platform", "targets": [ 2 ] }, + * { "name": "version", "targets": [ 3 ] }, + * { "name": "grade", "targets": [ 4 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "name": "engine" }, + * { "name": "browser" }, + * { "name": "platform" }, + * { "name": "version" }, + * { "name": "grade" } + * ] + * } ); + * } ); + */ + "sName": "", + + + /** + * Defines a data source type for the ordering which can be used to read + * real-time information from the table (updating the internally cached + * version) prior to ordering. This allows ordering to occur on user + * editable elements such as form inputs. + * @type string + * @default std + * + * @name DataTable.defaults.column.orderDataType + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, + * { "type": "numeric", "targets": [ 3 ] }, + * { "orderDataType": "dom-select", "targets": [ 4 ] }, + * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * null, + * null, + * { "orderDataType": "dom-text" }, + * { "orderDataType": "dom-text", "type": "numeric" }, + * { "orderDataType": "dom-select" }, + * { "orderDataType": "dom-checkbox" } + * ] + * } ); + * } ); + */ + "sSortDataType": "std", + + + /** + * The title of this column. + * @type string + * @default null <i>Derived from the 'TH' value for this column in the + * original HTML table.</i> + * + * @name DataTable.defaults.column.title + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "title": "My column title", "targets": [ 0 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "title": "My column title" }, + * null, + * null, + * null, + * null + * ] + * } ); + * } ); + */ + "sTitle": null, + + + /** + * The type allows you to specify how the data for this column will be + * ordered. Four types (string, numeric, date and html (which will strip + * HTML tags before ordering)) are currently available. Note that only date + * formats understood by Javascript's Date() object will be accepted as type + * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', + * 'numeric', 'date' or 'html' (by default). Further types can be adding + * through plug-ins. + * @type string + * @default null <i>Auto-detected from raw data</i> + * + * @name DataTable.defaults.column.type + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "type": "html", "targets": [ 0 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "type": "html" }, + * null, + * null, + * null, + * null + * ] + * } ); + * } ); + */ + "sType": null, + + + /** + * Defining the width of the column, this parameter may take any CSS value + * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not + * been given a specific width through this interface ensuring that the table + * remains readable. + * @type string + * @default null <i>Automatic</i> + * + * @name DataTable.defaults.column.width + * @dtopt Columns + * + * @example + * // Using `columnDefs` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columnDefs": [ + * { "width": "20%", "targets": [ 0 ] } + * ] + * } ); + * } ); + * + * @example + * // Using `columns` + * $(document).ready( function() { + * $('#example').dataTable( { + * "columns": [ + * { "width": "20%" }, + * null, + * null, + * null, + * null + * ] + * } ); + * } ); + */ + "sWidth": null + }; + + _fnHungarianMap( DataTable.defaults.column ); + + + + /** + * DataTables settings object - this holds all the information needed for a + * given table, including configuration, data and current application of the + * table options. DataTables does not have a single instance for each DataTable + * with the settings attached to that instance, but rather instances of the + * DataTable "class" are created on-the-fly as needed (typically by a + * $().dataTable() call) and the settings object is then applied to that + * instance. + * + * Note that this object is related to {@link DataTable.defaults} but this + * one is the internal data store for DataTables's cache of columns. It should + * NOT be manipulated outside of DataTables. Any configuration should be done + * through the initialisation options. + * @namespace + * @todo Really should attach the settings object to individual instances so we + * don't need to create new instances on each $().dataTable() call (if the + * table already exists). It would also save passing oSettings around and + * into every single function. However, this is a very significant + * architecture change for DataTables and will almost certainly break + * backwards compatibility with older installations. This is something that + * will be done in 2.0. + */ + DataTable.models.oSettings = { + /** + * Primary features of DataTables and their enablement state. + * @namespace + */ + "oFeatures": { + + /** + * Flag to say if DataTables should automatically try to calculate the + * optimum table and columns widths (true) or not (false). + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bAutoWidth": null, + + /** + * Delay the creation of TR and TD elements until they are actually + * needed by a driven page draw. This can give a significant speed + * increase for Ajax source and Javascript source data, but makes no + * difference at all fro DOM and server-side processing tables. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bDeferRender": null, + + /** + * Enable filtering on the table or not. Note that if this is disabled + * then there is no filtering at all on the table, including fnFilter. + * To just remove the filtering input use sDom and remove the 'f' option. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bFilter": null, + + /** + * Table information element (the 'Showing x of y records' div) enable + * flag. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bInfo": null, + + /** + * Present a user control allowing the end user to change the page size + * when pagination is enabled. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bLengthChange": null, + + /** + * Pagination enabled or not. Note that if this is disabled then length + * changing must also be disabled. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bPaginate": null, + + /** + * Processing indicator enable flag whenever DataTables is enacting a + * user request - typically an Ajax request for server-side processing. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bProcessing": null, + + /** + * Server-side processing enabled flag - when enabled DataTables will + * get all data from the server for every draw - there is no filtering, + * sorting or paging done on the client-side. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bServerSide": null, + + /** + * Sorting enablement flag. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bSort": null, + + /** + * Multi-column sorting + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bSortMulti": null, + + /** + * Apply a class to the columns which are being sorted to provide a + * visual highlight or not. This can slow things down when enabled since + * there is a lot of DOM interaction. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bSortClasses": null, + + /** + * State saving enablement flag. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bStateSave": null + }, + + + /** + * Scrolling settings for a table. + * @namespace + */ + "oScroll": { + /** + * When the table is shorter in height than sScrollY, collapse the + * table container down to the height of the table (when true). + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bCollapse": null, + + /** + * Width of the scrollbar for the web-browser's platform. Calculated + * during table initialisation. + * @type int + * @default 0 + */ + "iBarWidth": 0, + + /** + * Viewport width for horizontal scrolling. Horizontal scrolling is + * disabled if an empty string. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + */ + "sX": null, + + /** + * Width to expand the table to when using x-scrolling. Typically you + * should not need to use this. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + * @deprecated + */ + "sXInner": null, + + /** + * Viewport height for vertical scrolling. Vertical scrolling is disabled + * if an empty string. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + */ + "sY": null + }, + + /** + * Language information for the table. + * @namespace + * @extends DataTable.defaults.oLanguage + */ + "oLanguage": { + /** + * Information callback function. See + * {@link DataTable.defaults.fnInfoCallback} + * @type function + * @default null + */ + "fnInfoCallback": null + }, + + /** + * Browser support parameters + * @namespace + */ + "oBrowser": { + /** + * Indicate if the browser incorrectly calculates width:100% inside a + * scrolling element (IE6/7) + * @type boolean + * @default false + */ + "bScrollOversize": false, + + /** + * Determine if the vertical scrollbar is on the right or left of the + * scrolling container - needed for rtl language layout, although not + * all browsers move the scrollbar (Safari). + * @type boolean + * @default false + */ + "bScrollbarLeft": false + }, + + + "ajax": null, + + + /** + * Array referencing the nodes which are used for the features. The + * parameters of this object match what is allowed by sDom - i.e. + * <ul> + * <li>'l' - Length changing</li> + * <li>'f' - Filtering input</li> + * <li>'t' - The table!</li> + * <li>'i' - Information</li> + * <li>'p' - Pagination</li> + * <li>'r' - pRocessing</li> + * </ul> + * @type array + * @default [] + */ + "aanFeatures": [], + + /** + * Store data information - see {@link DataTable.models.oRow} for detailed + * information. + * @type array + * @default [] + */ + "aoData": [], + + /** + * Array of indexes which are in the current display (after filtering etc) + * @type array + * @default [] + */ + "aiDisplay": [], + + /** + * Array of indexes for display - no filtering + * @type array + * @default [] + */ + "aiDisplayMaster": [], + + /** + * Store information about each column that is in use + * @type array + * @default [] + */ + "aoColumns": [], + + /** + * Store information about the table's header + * @type array + * @default [] + */ + "aoHeader": [], + + /** + * Store information about the table's footer + * @type array + * @default [] + */ + "aoFooter": [], + + /** + * Store the applied global search information in case we want to force a + * research or compare the old search to a new one. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @namespace + * @extends DataTable.models.oSearch + */ + "oPreviousSearch": {}, + + /** + * Store the applied search for each column - see + * {@link DataTable.models.oSearch} for the format that is used for the + * filtering information for each column. + * @type array + * @default [] + */ + "aoPreSearchCols": [], + + /** + * Sorting that is applied to the table. Note that the inner arrays are + * used in the following manner: + * <ul> + * <li>Index 0 - column number</li> + * <li>Index 1 - current sorting direction</li> + * </ul> + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type array + * @todo These inner arrays should really be objects + */ + "aaSorting": null, + + /** + * Sorting that is always applied to the table (i.e. prefixed in front of + * aaSorting). + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type array + * @default [] + */ + "aaSortingFixed": [], + + /** + * Classes to use for the striping of a table. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type array + * @default [] + */ + "asStripeClasses": null, + + /** + * If restoring a table - we should restore its striping classes as well + * @type array + * @default [] + */ + "asDestroyStripes": [], + + /** + * If restoring a table - we should restore its width + * @type int + * @default 0 + */ + "sDestroyWidth": 0, + + /** + * Callback functions array for every time a row is inserted (i.e. on a draw). + * @type array + * @default [] + */ + "aoRowCallback": [], + + /** + * Callback functions for the header on each draw. + * @type array + * @default [] + */ + "aoHeaderCallback": [], + + /** + * Callback function for the footer on each draw. + * @type array + * @default [] + */ + "aoFooterCallback": [], + + /** + * Array of callback functions for draw callback functions + * @type array + * @default [] + */ + "aoDrawCallback": [], + + /** + * Array of callback functions for row created function + * @type array + * @default [] + */ + "aoRowCreatedCallback": [], + + /** + * Callback functions for just before the table is redrawn. A return of + * false will be used to cancel the draw. + * @type array + * @default [] + */ + "aoPreDrawCallback": [], + + /** + * Callback functions for when the table has been initialised. + * @type array + * @default [] + */ + "aoInitComplete": [], + + + /** + * Callbacks for modifying the settings to be stored for state saving, prior to + * saving state. + * @type array + * @default [] + */ + "aoStateSaveParams": [], + + /** + * Callbacks for modifying the settings that have been stored for state saving + * prior to using the stored values to restore the state. + * @type array + * @default [] + */ + "aoStateLoadParams": [], + + /** + * Callbacks for operating on the settings object once the saved state has been + * loaded + * @type array + * @default [] + */ + "aoStateLoaded": [], + + /** + * Cache the table ID for quick access + * @type string + * @default <i>Empty string</i> + */ + "sTableId": "", + + /** + * The TABLE node for the main table + * @type node + * @default null + */ + "nTable": null, + + /** + * Permanent ref to the thead element + * @type node + * @default null + */ + "nTHead": null, + + /** + * Permanent ref to the tfoot element - if it exists + * @type node + * @default null + */ + "nTFoot": null, + + /** + * Permanent ref to the tbody element + * @type node + * @default null + */ + "nTBody": null, + + /** + * Cache the wrapper node (contains all DataTables controlled elements) + * @type node + * @default null + */ + "nTableWrapper": null, + + /** + * Indicate if when using server-side processing the loading of data + * should be deferred until the second draw. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + * @default false + */ + "bDeferLoading": false, + + /** + * Indicate if all required information has been read in + * @type boolean + * @default false + */ + "bInitialised": false, + + /** + * Information about open rows. Each object in the array has the parameters + * 'nTr' and 'nParent' + * @type array + * @default [] + */ + "aoOpenRows": [], + + /** + * Dictate the positioning of DataTables' control elements - see + * {@link DataTable.model.oInit.sDom}. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + * @default null + */ + "sDom": null, + + /** + * Search delay (in mS) + * @type integer + * @default null + */ + "searchDelay": null, + + /** + * Which type of pagination should be used. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + * @default two_button + */ + "sPaginationType": "two_button", + + /** + * The state duration (for `stateSave`) in seconds. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type int + * @default 0 + */ + "iStateDuration": 0, + + /** + * Array of callback functions for state saving. Each array element is an + * object with the following parameters: + * <ul> + * <li>function:fn - function to call. Takes two parameters, oSettings + * and the JSON string to save that has been thus far created. Returns + * a JSON string to be inserted into a json object + * (i.e. '"param": [ 0, 1, 2]')</li> + * <li>string:sName - name of callback</li> + * </ul> + * @type array + * @default [] + */ + "aoStateSave": [], + + /** + * Array of callback functions for state loading. Each array element is an + * object with the following parameters: + * <ul> + * <li>function:fn - function to call. Takes two parameters, oSettings + * and the object stored. May return false to cancel state loading</li> + * <li>string:sName - name of callback</li> + * </ul> + * @type array + * @default [] + */ + "aoStateLoad": [], + + /** + * State that was saved. Useful for back reference + * @type object + * @default null + */ + "oSavedState": null, + + /** + * State that was loaded. Useful for back reference + * @type object + * @default null + */ + "oLoadedState": null, + + /** + * Source url for AJAX data for the table. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + * @default null + */ + "sAjaxSource": null, + + /** + * Property from a given object from which to read the table data from. This + * can be an empty string (when not server-side processing), in which case + * it is assumed an an array is given directly. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + */ + "sAjaxDataProp": null, + + /** + * Note if draw should be blocked while getting data + * @type boolean + * @default true + */ + "bAjaxDataGet": true, + + /** + * The last jQuery XHR object that was used for server-side data gathering. + * This can be used for working with the XHR information in one of the + * callbacks + * @type object + * @default null + */ + "jqXHR": null, + + /** + * JSON returned from the server in the last Ajax request + * @type object + * @default undefined + */ + "json": undefined, + + /** + * Data submitted as part of the last Ajax request + * @type object + * @default undefined + */ + "oAjaxData": undefined, + + /** + * Function to get the server-side data. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type function + */ + "fnServerData": null, + + /** + * Functions which are called prior to sending an Ajax request so extra + * parameters can easily be sent to the server + * @type array + * @default [] + */ + "aoServerParams": [], + + /** + * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if + * required). + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type string + */ + "sServerMethod": null, + + /** + * Format numbers for display. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type function + */ + "fnFormatNumber": null, + + /** + * List of options that can be used for the user selectable length menu. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type array + * @default [] + */ + "aLengthMenu": null, + + /** + * Counter for the draws that the table does. Also used as a tracker for + * server-side processing + * @type int + * @default 0 + */ + "iDraw": 0, + + /** + * Indicate if a redraw is being done - useful for Ajax + * @type boolean + * @default false + */ + "bDrawing": false, + + /** + * Draw index (iDraw) of the last error when parsing the returned data + * @type int + * @default -1 + */ + "iDrawError": -1, + + /** + * Paging display length + * @type int + * @default 10 + */ + "_iDisplayLength": 10, + + /** + * Paging start point - aiDisplay index + * @type int + * @default 0 + */ + "_iDisplayStart": 0, + + /** + * Server-side processing - number of records in the result set + * (i.e. before filtering), Use fnRecordsTotal rather than + * this property to get the value of the number of records, regardless of + * the server-side processing setting. + * @type int + * @default 0 + * @private + */ + "_iRecordsTotal": 0, + + /** + * Server-side processing - number of records in the current display set + * (i.e. after filtering). Use fnRecordsDisplay rather than + * this property to get the value of the number of records, regardless of + * the server-side processing setting. + * @type boolean + * @default 0 + * @private + */ + "_iRecordsDisplay": 0, + + /** + * Flag to indicate if jQuery UI marking and classes should be used. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bJUI": null, + + /** + * The classes to use for the table + * @type object + * @default {} + */ + "oClasses": {}, + + /** + * Flag attached to the settings object so you can check in the draw + * callback if filtering has been done in the draw. Deprecated in favour of + * events. + * @type boolean + * @default false + * @deprecated + */ + "bFiltered": false, + + /** + * Flag attached to the settings object so you can check in the draw + * callback if sorting has been done in the draw. Deprecated in favour of + * events. + * @type boolean + * @default false + * @deprecated + */ + "bSorted": false, + + /** + * Indicate that if multiple rows are in the header and there is more than + * one unique cell per column, if the top one (true) or bottom one (false) + * should be used for sorting / title by DataTables. + * Note that this parameter will be set by the initialisation routine. To + * set a default use {@link DataTable.defaults}. + * @type boolean + */ + "bSortCellsTop": null, + + /** + * Initialisation object that is used for the table + * @type object + * @default null + */ + "oInit": null, + + /** + * Destroy callback functions - for plug-ins to attach themselves to the + * destroy so they can clean up markup and events. + * @type array + * @default [] + */ + "aoDestroyCallback": [], + + + /** + * Get the number of records in the current record set, before filtering + * @type function + */ + "fnRecordsTotal": function () + { + return _fnDataSource( this ) == 'ssp' ? + this._iRecordsTotal * 1 : + this.aiDisplayMaster.length; + }, + + /** + * Get the number of records in the current record set, after filtering + * @type function + */ + "fnRecordsDisplay": function () + { + return _fnDataSource( this ) == 'ssp' ? + this._iRecordsDisplay * 1 : + this.aiDisplay.length; + }, + + /** + * Get the display end point - aiDisplay index + * @type function + */ + "fnDisplayEnd": function () + { + var + len = this._iDisplayLength, + start = this._iDisplayStart, + calc = start + len, + records = this.aiDisplay.length, + features = this.oFeatures, + paginate = features.bPaginate; + + if ( features.bServerSide ) { + return paginate === false || len === -1 ? + start + records : + Math.min( start+len, this._iRecordsDisplay ); + } + else { + return ! paginate || calc>records || len===-1 ? + records : + calc; + } + }, + + /** + * The DataTables object for this table + * @type object + * @default null + */ + "oInstance": null, + + /** + * Unique identifier for each instance of the DataTables object. If there + * is an ID on the table node, then it takes that value, otherwise an + * incrementing internal counter is used. + * @type string + * @default null + */ + "sInstance": null, + + /** + * tabindex attribute value that is added to DataTables control elements, allowing + * keyboard navigation of the table and its controls. + */ + "iTabIndex": 0, + + /** + * DIV container for the footer scrolling table if scrolling + */ + "nScrollHead": null, + + /** + * DIV container for the footer scrolling table if scrolling + */ + "nScrollFoot": null, + + /** + * Last applied sort + * @type array + * @default [] + */ + "aLastSort": [], + + /** + * Stored plug-in instances + * @type object + * @default {} + */ + "oPlugins": {} + }; + + /** + * Extension object for DataTables that is used to provide all extension + * options. + * + * Note that the `DataTable.ext` object is available through + * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is + * also aliased to `jQuery.fn.dataTableExt` for historic reasons. + * @namespace + * @extends DataTable.models.ext + */ + + + /** + * DataTables extensions + * + * This namespace acts as a collection area for plug-ins that can be used to + * extend DataTables capabilities. Indeed many of the build in methods + * use this method to provide their own capabilities (sorting methods for + * example). + * + * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy + * reasons + * + * @namespace + */ + DataTable.ext = _ext = { + /** + * Buttons. For use with the Buttons extension for DataTables. This is + * defined here so other extensions can define buttons regardless of load + * order. It is _not_ used by DataTables core. + * + * @type object + * @default {} + */ + buttons: {}, + + + /** + * Element class names + * + * @type object + * @default {} + */ + classes: {}, + + + /** + * Error reporting. + * + * How should DataTables report an error. Can take the value 'alert', + * 'throw', 'none' or a function. + * + * @type string|function + * @default alert + */ + errMode: "alert", + + + /** + * Feature plug-ins. + * + * This is an array of objects which describe the feature plug-ins that are + * available to DataTables. These feature plug-ins are then available for + * use through the `dom` initialisation option. + * + * Each feature plug-in is described by an object which must have the + * following properties: + * + * * `fnInit` - function that is used to initialise the plug-in, + * * `cFeature` - a character so the feature can be enabled by the `dom` + * instillation option. This is case sensitive. + * + * The `fnInit` function has the following input parameters: + * + * 1. `{object}` DataTables settings object: see + * {@link DataTable.models.oSettings} + * + * And the following return is expected: + * + * * {node|null} The element which contains your feature. Note that the + * return may also be void if your plug-in does not require to inject any + * DOM elements into DataTables control (`dom`) - for example this might + * be useful when developing a plug-in which allows table control via + * keyboard entry + * + * @type array + * + * @example + * $.fn.dataTable.ext.features.push( { + * "fnInit": function( oSettings ) { + * return new TableTools( { "oDTSettings": oSettings } ); + * }, + * "cFeature": "T" + * } ); + */ + feature: [], + + + /** + * Row searching. + * + * This method of searching is complimentary to the default type based + * searching, and a lot more comprehensive as it allows you complete control + * over the searching logic. Each element in this array is a function + * (parameters described below) that is called for every row in the table, + * and your logic decides if it should be included in the searching data set + * or not. + * + * Searching functions have the following input parameters: + * + * 1. `{object}` DataTables settings object: see + * {@link DataTable.models.oSettings} + * 2. `{array|object}` Data for the row to be processed (same as the + * original format that was passed in as the data source, or an array + * from a DOM data source + * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which + * can be useful to retrieve the `TR` element if you need DOM interaction. + * + * And the following return is expected: + * + * * {boolean} Include the row in the searched result set (true) or not + * (false) + * + * Note that as with the main search ability in DataTables, technically this + * is "filtering", since it is subtractive. However, for consistency in + * naming we call it searching here. + * + * @type array + * @default [] + * + * @example + * // The following example shows custom search being applied to the + * // fourth column (i.e. the data[3] index) based on two input values + * // from the end-user, matching the data in a certain range. + * $.fn.dataTable.ext.search.push( + * function( settings, data, dataIndex ) { + * var min = document.getElementById('min').value * 1; + * var max = document.getElementById('max').value * 1; + * var version = data[3] == "-" ? 0 : data[3]*1; + * + * if ( min == "" && max == "" ) { + * return true; + * } + * else if ( min == "" && version < max ) { + * return true; + * } + * else if ( min < version && "" == max ) { + * return true; + * } + * else if ( min < version && version < max ) { + * return true; + * } + * return false; + * } + * ); + */ + search: [], + + + /** + * Selector extensions + * + * The `selector` option can be used to extend the options available for the + * selector modifier options (`selector-modifier` object data type) that + * each of the three built in selector types offer (row, column and cell + + * their plural counterparts). For example the Select extension uses this + * mechanism to provide an option to select only rows, columns and cells + * that have been marked as selected by the end user (`{selected: true}`), + * which can be used in conjunction with the existing built in selector + * options. + * + * Each property is an array to which functions can be pushed. The functions + * take three attributes: + * + * * Settings object for the host table + * * Options object (`selector-modifier` object type) + * * Array of selected item indexes + * + * The return is an array of the resulting item indexes after the custom + * selector has been applied. + * + * @type object + */ + selector: { + cell: [], + column: [], + row: [] + }, + + + /** + * Internal functions, exposed for used in plug-ins. + * + * Please note that you should not need to use the internal methods for + * anything other than a plug-in (and even then, try to avoid if possible). + * The internal function may change between releases. + * + * @type object + * @default {} + */ + internal: {}, + + + /** + * Legacy configuration options. Enable and disable legacy options that + * are available in DataTables. + * + * @type object + */ + legacy: { + /** + * Enable / disable DataTables 1.9 compatible server-side processing + * requests + * + * @type boolean + * @default null + */ + ajax: null + }, + + + /** + * Pagination plug-in methods. + * + * Each entry in this object is a function and defines which buttons should + * be shown by the pagination rendering method that is used for the table: + * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the + * buttons are displayed in the document, while the functions here tell it + * what buttons to display. This is done by returning an array of button + * descriptions (what each button will do). + * + * Pagination types (the four built in options and any additional plug-in + * options defined here) can be used through the `paginationType` + * initialisation parameter. + * + * The functions defined take two parameters: + * + * 1. `{int} page` The current page index + * 2. `{int} pages` The number of pages in the table + * + * Each function is expected to return an array where each element of the + * array can be one of: + * + * * `first` - Jump to first page when activated + * * `last` - Jump to last page when activated + * * `previous` - Show previous page when activated + * * `next` - Show next page when activated + * * `{int}` - Show page of the index given + * * `{array}` - A nested array containing the above elements to add a + * containing 'DIV' element (might be useful for styling). + * + * Note that DataTables v1.9- used this object slightly differently whereby + * an object with two functions would be defined for each plug-in. That + * ability is still supported by DataTables 1.10+ to provide backwards + * compatibility, but this option of use is now decremented and no longer + * documented in DataTables 1.10+. + * + * @type object + * @default {} + * + * @example + * // Show previous, next and current page buttons only + * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { + * return [ 'previous', page, 'next' ]; + * }; + */ + pager: {}, + + + renderer: { + pageButton: {}, + header: {} + }, + + + /** + * Ordering plug-ins - custom data source + * + * The extension options for ordering of data available here is complimentary + * to the default type based ordering that DataTables typically uses. It + * allows much greater control over the the data that is being used to + * order a column, but is necessarily therefore more complex. + * + * This type of ordering is useful if you want to do ordering based on data + * live from the DOM (for example the contents of an 'input' element) rather + * than just the static string that DataTables knows of. + * + * The way these plug-ins work is that you create an array of the values you + * wish to be ordering for the column in question and then return that + * array. The data in the array much be in the index order of the rows in + * the table (not the currently ordering order!). Which order data gathering + * function is run here depends on the `dt-init columns.orderDataType` + * parameter that is used for the column (if any). + * + * The functions defined take two parameters: + * + * 1. `{object}` DataTables settings object: see + * {@link DataTable.models.oSettings} + * 2. `{int}` Target column index + * + * Each function is expected to return an array: + * + * * `{array}` Data for the column to be ordering upon + * + * @type array + * + * @example + * // Ordering using `input` node values + * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) + * { + * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { + * return $('input', td).val(); + * } ); + * } + */ + order: {}, + + + /** + * Type based plug-ins. + * + * Each column in DataTables has a type assigned to it, either by automatic + * detection or by direct assignment using the `type` option for the column. + * The type of a column will effect how it is ordering and search (plug-ins + * can also make use of the column type if required). + * + * @namespace + */ + type: { + /** + * Type detection functions. + * + * The functions defined in this object are used to automatically detect + * a column's type, making initialisation of DataTables super easy, even + * when complex data is in the table. + * + * The functions defined take two parameters: + * + * 1. `{*}` Data from the column cell to be analysed + * 2. `{settings}` DataTables settings object. This can be used to + * perform context specific type detection - for example detection + * based on language settings such as using a comma for a decimal + * place. Generally speaking the options from the settings will not + * be required + * + * Each function is expected to return: + * + * * `{string|null}` Data type detected, or null if unknown (and thus + * pass it on to the other type detection functions. + * + * @type array + * + * @example + * // Currency type detection plug-in: + * $.fn.dataTable.ext.type.detect.push( + * function ( data, settings ) { + * // Check the numeric part + * if ( ! $.isNumeric( data.substring(1) ) ) { + * return null; + * } + * + * // Check prefixed by currency + * if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) { + * return 'currency'; + * } + * return null; + * } + * ); + */ + detect: [], + + + /** + * Type based search formatting. + * + * The type based searching functions can be used to pre-format the + * data to be search on. For example, it can be used to strip HTML + * tags or to de-format telephone numbers for numeric only searching. + * + * Note that is a search is not defined for a column of a given type, + * no search formatting will be performed. + * + * Pre-processing of searching data plug-ins - When you assign the sType + * for a column (or have it automatically detected for you by DataTables + * or a type detection plug-in), you will typically be using this for + * custom sorting, but it can also be used to provide custom searching + * by allowing you to pre-processing the data and returning the data in + * the format that should be searched upon. This is done by adding + * functions this object with a parameter name which matches the sType + * for that target column. This is the corollary of <i>afnSortData</i> + * for searching data. + * + * The functions defined take a single parameter: + * + * 1. `{*}` Data from the column cell to be prepared for searching + * + * Each function is expected to return: + * + * * `{string|null}` Formatted string that will be used for the searching. + * + * @type object + * @default {} + * + * @example + * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { + * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); + * } + */ + search: {}, + + + /** + * Type based ordering. + * + * The column type tells DataTables what ordering to apply to the table + * when a column is sorted upon. The order for each type that is defined, + * is defined by the functions available in this object. + * + * Each ordering option can be described by three properties added to + * this object: + * + * * `{type}-pre` - Pre-formatting function + * * `{type}-asc` - Ascending order function + * * `{type}-desc` - Descending order function + * + * All three can be used together, only `{type}-pre` or only + * `{type}-asc` and `{type}-desc` together. It is generally recommended + * that only `{type}-pre` is used, as this provides the optimal + * implementation in terms of speed, although the others are provided + * for compatibility with existing Javascript sort functions. + * + * `{type}-pre`: Functions defined take a single parameter: + * + * 1. `{*}` Data from the column cell to be prepared for ordering + * + * And return: + * + * * `{*}` Data to be sorted upon + * + * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort + * functions, taking two parameters: + * + * 1. `{*}` Data to compare to the second parameter + * 2. `{*}` Data to compare to the first parameter + * + * And returning: + * + * * `{*}` Ordering match: <0 if first parameter should be sorted lower + * than the second parameter, ===0 if the two parameters are equal and + * >0 if the first parameter should be sorted height than the second + * parameter. + * + * @type object + * @default {} + * + * @example + * // Numeric ordering of formatted numbers with a pre-formatter + * $.extend( $.fn.dataTable.ext.type.order, { + * "string-pre": function(x) { + * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); + * return parseFloat( a ); + * } + * } ); + * + * @example + * // Case-sensitive string ordering, with no pre-formatting method + * $.extend( $.fn.dataTable.ext.order, { + * "string-case-asc": function(x,y) { + * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); + * }, + * "string-case-desc": function(x,y) { + * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); + * } + * } ); + */ + order: {} + }, + + /** + * Unique DataTables instance counter + * + * @type int + * @private + */ + _unique: 0, + + + // + // Depreciated + // The following properties are retained for backwards compatiblity only. + // The should not be used in new projects and will be removed in a future + // version + // + + /** + * Version check function. + * @type function + * @depreciated Since 1.10 + */ + fnVersionCheck: DataTable.fnVersionCheck, + + + /** + * Index for what 'this' index API functions should use + * @type int + * @deprecated Since v1.10 + */ + iApiIndex: 0, + + + /** + * jQuery UI class container + * @type object + * @deprecated Since v1.10 + */ + oJUIClasses: {}, + + + /** + * Software version + * @type string + * @deprecated Since v1.10 + */ + sVersion: DataTable.version + }; + + + // + // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts + // + $.extend( _ext, { + afnFiltering: _ext.search, + aTypes: _ext.type.detect, + ofnSearch: _ext.type.search, + oSort: _ext.type.order, + afnSortData: _ext.order, + aoFeatures: _ext.feature, + oApi: _ext.internal, + oStdClasses: _ext.classes, + oPagination: _ext.pager + } ); + + + $.extend( DataTable.ext.classes, { + "sTable": "dataTable", + "sNoFooter": "no-footer", + + /* Paging buttons */ + "sPageButton": "paginate_button", + "sPageButtonActive": "current", + "sPageButtonDisabled": "disabled", + + /* Striping classes */ + "sStripeOdd": "odd", + "sStripeEven": "even", + + /* Empty row */ + "sRowEmpty": "dataTables_empty", + + /* Features */ + "sWrapper": "dataTables_wrapper", + "sFilter": "dataTables_filter", + "sInfo": "dataTables_info", + "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ + "sLength": "dataTables_length", + "sProcessing": "dataTables_processing", + + /* Sorting */ + "sSortAsc": "sorting_asc", + "sSortDesc": "sorting_desc", + "sSortable": "sorting", /* Sortable in both directions */ + "sSortableAsc": "sorting_asc_disabled", + "sSortableDesc": "sorting_desc_disabled", + "sSortableNone": "sorting_disabled", + "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ + + /* Filtering */ + "sFilterInput": "", + + /* Page length */ + "sLengthSelect": "", + + /* Scrolling */ + "sScrollWrapper": "dataTables_scroll", + "sScrollHead": "dataTables_scrollHead", + "sScrollHeadInner": "dataTables_scrollHeadInner", + "sScrollBody": "dataTables_scrollBody", + "sScrollFoot": "dataTables_scrollFoot", + "sScrollFootInner": "dataTables_scrollFootInner", + + /* Misc */ + "sHeaderTH": "", + "sFooterTH": "", + + // Deprecated + "sSortJUIAsc": "", + "sSortJUIDesc": "", + "sSortJUI": "", + "sSortJUIAscAllowed": "", + "sSortJUIDescAllowed": "", + "sSortJUIWrapper": "", + "sSortIcon": "", + "sJUIHeader": "", + "sJUIFooter": "" + } ); + + + (function() { + + // Reused strings for better compression. Closure compiler appears to have a + // weird edge case where it is trying to expand strings rather than use the + // variable version. This results in about 200 bytes being added, for very + // little preference benefit since it this run on script load only. + var _empty = ''; + _empty = ''; + + var _stateDefault = _empty + 'ui-state-default'; + var _sortIcon = _empty + 'css_right ui-icon ui-icon-'; + var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix'; + + $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, { + /* Full numbers paging buttons */ + "sPageButton": "fg-button ui-button "+_stateDefault, + "sPageButtonActive": "ui-state-disabled", + "sPageButtonDisabled": "ui-state-disabled", + + /* Features */ + "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ + "ui-buttonset-multi paging_", /* Note that the type is postfixed */ + + /* Sorting */ + "sSortAsc": _stateDefault+" sorting_asc", + "sSortDesc": _stateDefault+" sorting_desc", + "sSortable": _stateDefault+" sorting", + "sSortableAsc": _stateDefault+" sorting_asc_disabled", + "sSortableDesc": _stateDefault+" sorting_desc_disabled", + "sSortableNone": _stateDefault+" sorting_disabled", + "sSortJUIAsc": _sortIcon+"triangle-1-n", + "sSortJUIDesc": _sortIcon+"triangle-1-s", + "sSortJUI": _sortIcon+"carat-2-n-s", + "sSortJUIAscAllowed": _sortIcon+"carat-1-n", + "sSortJUIDescAllowed": _sortIcon+"carat-1-s", + "sSortJUIWrapper": "DataTables_sort_wrapper", + "sSortIcon": "DataTables_sort_icon", + + /* Scrolling */ + "sScrollHead": "dataTables_scrollHead "+_stateDefault, + "sScrollFoot": "dataTables_scrollFoot "+_stateDefault, + + /* Misc */ + "sHeaderTH": _stateDefault, + "sFooterTH": _stateDefault, + "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr", + "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br" + } ); + + }()); + + + + var extPagination = DataTable.ext.pager; + + function _numbers ( page, pages ) { + var + numbers = [], + buttons = extPagination.numbers_length, + half = Math.floor( buttons / 2 ), + i = 1; + + if ( pages <= buttons ) { + numbers = _range( 0, pages ); + } + else if ( page <= half ) { + numbers = _range( 0, buttons-2 ); + numbers.push( 'ellipsis' ); + numbers.push( pages-1 ); + } + else if ( page >= pages - 1 - half ) { + numbers = _range( pages-(buttons-2), pages ); + numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6 + numbers.splice( 0, 0, 0 ); + } + else { + numbers = _range( page-half+2, page+half-1 ); + numbers.push( 'ellipsis' ); + numbers.push( pages-1 ); + numbers.splice( 0, 0, 'ellipsis' ); + numbers.splice( 0, 0, 0 ); + } + + numbers.DT_el = 'span'; + return numbers; + } + + + $.extend( extPagination, { + simple: function ( page, pages ) { + return [ 'previous', 'next' ]; + }, + + full: function ( page, pages ) { + return [ 'first', 'previous', 'next', 'last' ]; + }, + + simple_numbers: function ( page, pages ) { + return [ 'previous', _numbers(page, pages), 'next' ]; + }, + + full_numbers: function ( page, pages ) { + return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; + }, + + // For testing and plug-ins to use + _numbers: _numbers, + + // Number of number buttons (including ellipsis) to show. _Must be odd!_ + numbers_length: 7 + } ); + + + $.extend( true, DataTable.ext.renderer, { + pageButton: { + _: function ( settings, host, idx, buttons, page, pages ) { + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var btnDisplay, btnClass, counter=0; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + _fnPageChange( settings, e.data.action, true ); + }; + + for ( i=0, ien=buttons.length ; i<ien ; i++ ) { + button = buttons[i]; + + if ( $.isArray( button ) ) { + var inner = $( '<'+(button.DT_el || 'div')+'/>' ) + .appendTo( container ); + attach( inner, button ); + } + else { + btnDisplay = ''; + btnClass = ''; + + switch ( button ) { + case 'ellipsis': + container.append('<span class="ellipsis">&#x2026;</span>'); + break; + + case 'first': + btnDisplay = lang.sFirst; + btnClass = button + (page > 0 ? + '' : ' '+classes.sPageButtonDisabled); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' '+classes.sPageButtonDisabled); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' '+classes.sPageButtonDisabled); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' '+classes.sPageButtonDisabled); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + classes.sPageButtonActive : ''; + break; + } + + if ( btnDisplay ) { + node = $('<a>', { + 'class': classes.sPageButton+' '+btnClass, + 'aria-controls': settings.sTableId, + 'data-dt-idx': counter, + 'tabindex': settings.iTabIndex, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .html( btnDisplay ) + .appendTo( container ); + + _fnBindAction( + node, {action: button}, clickHandler + ); + + counter++; + } + } + } + }; + + // IE9 throws an 'unknown error' if document.activeElement is used + // inside an iframe or frame. Try / catch the error. Not good for + // accessibility, but neither are frames. + var activeEl; + + try { + // Because this approach is destroying and recreating the paging + // elements, focus is lost on the select button which is bad for + // accessibility. So we want to restore focus once the draw has + // completed + activeEl = $(document.activeElement).data('dt-idx'); + } + catch (e) {} + + attach( $(host).empty(), buttons ); + + if ( activeEl ) { + $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); + } + } + } + } ); + + + + // Built in type detection. See model.ext.aTypes for information about + // what is required from this methods. + $.extend( DataTable.ext.type.detect, [ + // Plain numbers - first since V8 detects some plain numbers as dates + // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). + function ( d, settings ) + { + var decimal = settings.oLanguage.sDecimal; + return _isNumber( d, decimal ) ? 'num'+decimal : null; + }, + + // Dates (only those recognised by the browser's Date.parse) + function ( d, settings ) + { + // V8 will remove any unknown characters at the start and end of the + // expression, leading to false matches such as `$245.12` or `10%` being + // a valid date. See forum thread 18941 for detail. + if ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) { + return null; + } + var parsed = Date.parse(d); + return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; + }, + + // Formatted numbers + function ( d, settings ) + { + var decimal = settings.oLanguage.sDecimal; + return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; + }, + + // HTML numeric + function ( d, settings ) + { + var decimal = settings.oLanguage.sDecimal; + return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; + }, + + // HTML numeric, formatted + function ( d, settings ) + { + var decimal = settings.oLanguage.sDecimal; + return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; + }, + + // HTML (this is strict checking - there must be html) + function ( d, settings ) + { + return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ? + 'html' : null; + } + ] ); + + + + // Filter formatting functions. See model.ext.ofnSearch for information about + // what is required from these methods. + // + // Note that additional search methods are added for the html numbers and + // html formatted numbers by `_addNumericSort()` when we know what the decimal + // place is + + + $.extend( DataTable.ext.type.search, { + html: function ( data ) { + return _empty(data) ? + data : + typeof data === 'string' ? + data + .replace( _re_new_lines, " " ) + .replace( _re_html, "" ) : + ''; + }, + + string: function ( data ) { + return _empty(data) ? + data : + typeof data === 'string' ? + data.replace( _re_new_lines, " " ) : + data; + } + } ); + + + + var __numericReplace = function ( d, decimalPlace, re1, re2 ) { + if ( d !== 0 && (!d || d === '-') ) { + return -Infinity; + } + + // If a decimal place other than `.` is used, it needs to be given to the + // function so we can detect it and replace with a `.` which is the only + // decimal place Javascript recognises - it is not locale aware. + if ( decimalPlace ) { + d = _numToDecimal( d, decimalPlace ); + } + + if ( d.replace ) { + if ( re1 ) { + d = d.replace( re1, '' ); + } + + if ( re2 ) { + d = d.replace( re2, '' ); + } + } + + return d * 1; + }; + + + // Add the numeric 'deformatting' functions for sorting and search. This is done + // in a function to provide an easy ability for the language options to add + // additional methods if a non-period decimal place is used. + function _addNumericSort ( decimalPlace ) { + $.each( + { + // Plain numbers + "num": function ( d ) { + return __numericReplace( d, decimalPlace ); + }, + + // Formatted numbers + "num-fmt": function ( d ) { + return __numericReplace( d, decimalPlace, _re_formatted_numeric ); + }, + + // HTML numeric + "html-num": function ( d ) { + return __numericReplace( d, decimalPlace, _re_html ); + }, + + // HTML numeric, formatted + "html-num-fmt": function ( d ) { + return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); + } + }, + function ( key, fn ) { + // Add the ordering method + _ext.type.order[ key+decimalPlace+'-pre' ] = fn; + + // For HTML types add a search formatter that will strip the HTML + if ( key.match(/^html\-/) ) { + _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; + } + } + ); + } + + + // Default sort methods + $.extend( _ext.type.order, { + // Dates + "date-pre": function ( d ) { + return Date.parse( d ) || 0; + }, + + // html + "html-pre": function ( a ) { + return _empty(a) ? + '' : + a.replace ? + a.replace( /<.*?>/g, "" ).toLowerCase() : + a+''; + }, + + // string + "string-pre": function ( a ) { + // This is a little complex, but faster than always calling toString, + // http://jsperf.com/tostring-v-check + return _empty(a) ? + '' : + typeof a === 'string' ? + a.toLowerCase() : + ! a.toString ? + '' : + a.toString(); + }, + + // string-asc and -desc are retained only for compatibility with the old + // sort methods + "string-asc": function ( x, y ) { + return ((x < y) ? -1 : ((x > y) ? 1 : 0)); + }, + + "string-desc": function ( x, y ) { + return ((x < y) ? 1 : ((x > y) ? -1 : 0)); + } + } ); + + + // Numeric sorting types - order doesn't matter here + _addNumericSort( '' ); + + + $.extend( true, DataTable.ext.renderer, { + header: { + _: function ( settings, cell, column, classes ) { + // No additional mark-up required + // Attach a sort listener to update on sort - note that using the + // `DT` namespace will allow the event to be removed automatically + // on destroy, while the `dt` namespaced event is the one we are + // listening for + $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { + if ( settings !== ctx ) { // need to check this this is the host + return; // table, not a nested one + } + + var colIdx = column.idx; + + cell + .removeClass( + column.sSortingClass +' '+ + classes.sSortAsc +' '+ + classes.sSortDesc + ) + .addClass( columns[ colIdx ] == 'asc' ? + classes.sSortAsc : columns[ colIdx ] == 'desc' ? + classes.sSortDesc : + column.sSortingClass + ); + } ); + }, + + jqueryui: function ( settings, cell, column, classes ) { + $('<div/>') + .addClass( classes.sSortJUIWrapper ) + .append( cell.contents() ) + .append( $('<span/>') + .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) + ) + .appendTo( cell ); + + // Attach a sort listener to update on sort + $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { + if ( settings !== ctx ) { + return; + } + + var colIdx = column.idx; + + cell + .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) + .addClass( columns[ colIdx ] == 'asc' ? + classes.sSortAsc : columns[ colIdx ] == 'desc' ? + classes.sSortDesc : + column.sSortingClass + ); + + cell + .find( 'span.'+classes.sSortIcon ) + .removeClass( + classes.sSortJUIAsc +" "+ + classes.sSortJUIDesc +" "+ + classes.sSortJUI +" "+ + classes.sSortJUIAscAllowed +" "+ + classes.sSortJUIDescAllowed + ) + .addClass( columns[ colIdx ] == 'asc' ? + classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ? + classes.sSortJUIDesc : + column.sSortingClassJUI + ); + } ); + } + } + } ); + + /* + * Public helper functions. These aren't used internally by DataTables, or + * called by any of the options passed into DataTables, but they can be used + * externally by developers working with DataTables. They are helper functions + * to make working with DataTables a little bit easier. + */ + + /** + * Helpers for `columns.render`. + * + * The options defined here can be used with the `columns.render` initialisation + * option to provide a display renderer. The following functions are defined: + * + * * `number` - Will format numeric data (defined by `columns.data`) for + * display, retaining the original unformatted data for sorting and filtering. + * It takes 4 parameters: + * * `string` - Thousands grouping separator + * * `string` - Decimal point indicator + * * `integer` - Number of decimal points to show + * * `string` (optional) - Prefix. + * + * @example + * // Column definition using the number renderer + * { + * data: "salary", + * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' ) + * } + * + * @namespace + */ + DataTable.render = { + number: function ( thousands, decimal, precision, prefix ) { + return { + display: function ( d ) { + if ( typeof d !== 'number' && typeof d !== 'string' ) { + return d; + } + + var negative = d < 0 ? '-' : ''; + d = Math.abs( parseFloat( d ) ); + + var intPart = parseInt( d, 10 ); + var floatPart = precision ? + decimal+(d - intPart).toFixed( precision ).substring( 2 ): + ''; + + return negative + (prefix||'') + + intPart.toString().replace( + /\B(?=(\d{3})+(?!\d))/g, thousands + ) + + floatPart; + } + }; + } + }; + + + /* + * This is really a good bit rubbish this method of exposing the internal methods + * publicly... - To be fixed in 2.0 using methods on the prototype + */ + + + /** + * Create a wrapper function for exporting an internal functions to an external API. + * @param {string} fn API function name + * @returns {function} wrapped function + * @memberof DataTable#internal + */ + function _fnExternApiFunc (fn) + { + return function() { + var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat( + Array.prototype.slice.call(arguments) + ); + return DataTable.ext.internal[fn].apply( this, args ); + }; + } + + + /** + * Reference to internal functions for use by plug-in developers. Note that + * these methods are references to internal functions and are considered to be + * private. If you use these methods, be aware that they are liable to change + * between versions. + * @namespace + */ + $.extend( DataTable.ext.internal, { + _fnExternApiFunc: _fnExternApiFunc, + _fnBuildAjax: _fnBuildAjax, + _fnAjaxUpdate: _fnAjaxUpdate, + _fnAjaxParameters: _fnAjaxParameters, + _fnAjaxUpdateDraw: _fnAjaxUpdateDraw, + _fnAjaxDataSrc: _fnAjaxDataSrc, + _fnAddColumn: _fnAddColumn, + _fnColumnOptions: _fnColumnOptions, + _fnAdjustColumnSizing: _fnAdjustColumnSizing, + _fnVisibleToColumnIndex: _fnVisibleToColumnIndex, + _fnColumnIndexToVisible: _fnColumnIndexToVisible, + _fnVisbleColumns: _fnVisbleColumns, + _fnGetColumns: _fnGetColumns, + _fnColumnTypes: _fnColumnTypes, + _fnApplyColumnDefs: _fnApplyColumnDefs, + _fnHungarianMap: _fnHungarianMap, + _fnCamelToHungarian: _fnCamelToHungarian, + _fnLanguageCompat: _fnLanguageCompat, + _fnBrowserDetect: _fnBrowserDetect, + _fnAddData: _fnAddData, + _fnAddTr: _fnAddTr, + _fnNodeToDataIndex: _fnNodeToDataIndex, + _fnNodeToColumnIndex: _fnNodeToColumnIndex, + _fnGetCellData: _fnGetCellData, + _fnSetCellData: _fnSetCellData, + _fnSplitObjNotation: _fnSplitObjNotation, + _fnGetObjectDataFn: _fnGetObjectDataFn, + _fnSetObjectDataFn: _fnSetObjectDataFn, + _fnGetDataMaster: _fnGetDataMaster, + _fnClearTable: _fnClearTable, + _fnDeleteIndex: _fnDeleteIndex, + _fnInvalidate: _fnInvalidate, + _fnGetRowElements: _fnGetRowElements, + _fnCreateTr: _fnCreateTr, + _fnBuildHead: _fnBuildHead, + _fnDrawHead: _fnDrawHead, + _fnDraw: _fnDraw, + _fnReDraw: _fnReDraw, + _fnAddOptionsHtml: _fnAddOptionsHtml, + _fnDetectHeader: _fnDetectHeader, + _fnGetUniqueThs: _fnGetUniqueThs, + _fnFeatureHtmlFilter: _fnFeatureHtmlFilter, + _fnFilterComplete: _fnFilterComplete, + _fnFilterCustom: _fnFilterCustom, + _fnFilterColumn: _fnFilterColumn, + _fnFilter: _fnFilter, + _fnFilterCreateSearch: _fnFilterCreateSearch, + _fnEscapeRegex: _fnEscapeRegex, + _fnFilterData: _fnFilterData, + _fnFeatureHtmlInfo: _fnFeatureHtmlInfo, + _fnUpdateInfo: _fnUpdateInfo, + _fnInfoMacros: _fnInfoMacros, + _fnInitialise: _fnInitialise, + _fnInitComplete: _fnInitComplete, + _fnLengthChange: _fnLengthChange, + _fnFeatureHtmlLength: _fnFeatureHtmlLength, + _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate, + _fnPageChange: _fnPageChange, + _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing, + _fnProcessingDisplay: _fnProcessingDisplay, + _fnFeatureHtmlTable: _fnFeatureHtmlTable, + _fnScrollDraw: _fnScrollDraw, + _fnApplyToChildren: _fnApplyToChildren, + _fnCalculateColumnWidths: _fnCalculateColumnWidths, + _fnThrottle: _fnThrottle, + _fnConvertToWidth: _fnConvertToWidth, + _fnScrollingWidthAdjust: _fnScrollingWidthAdjust, + _fnGetWidestNode: _fnGetWidestNode, + _fnGetMaxLenString: _fnGetMaxLenString, + _fnStringToCss: _fnStringToCss, + _fnScrollBarWidth: _fnScrollBarWidth, + _fnSortFlatten: _fnSortFlatten, + _fnSort: _fnSort, + _fnSortAria: _fnSortAria, + _fnSortListener: _fnSortListener, + _fnSortAttachListener: _fnSortAttachListener, + _fnSortingClasses: _fnSortingClasses, + _fnSortData: _fnSortData, + _fnSaveState: _fnSaveState, + _fnLoadState: _fnLoadState, + _fnSettingsFromNode: _fnSettingsFromNode, + _fnLog: _fnLog, + _fnMap: _fnMap, + _fnBindAction: _fnBindAction, + _fnCallbackReg: _fnCallbackReg, + _fnCallbackFire: _fnCallbackFire, + _fnLengthOverflow: _fnLengthOverflow, + _fnRenderer: _fnRenderer, + _fnDataSource: _fnDataSource, + _fnRowAttributes: _fnRowAttributes, + _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant + // in 1.10, so this dead-end function is + // added to prevent errors + } ); + + + // jQuery access + $.fn.dataTable = DataTable; + + // Legacy aliases + $.fn.dataTableSettings = DataTable.settings; + $.fn.dataTableExt = DataTable.ext; + + // With a capital `D` we return a DataTables API instance rather than a + // jQuery object + $.fn.DataTable = function ( opts ) { + return $(this).dataTable( opts ).api(); + }; + + // All properties that are available to $.fn.dataTable should also be + // available on $.fn.DataTable + $.each( DataTable, function ( prop, val ) { + $.fn.DataTable[ prop ] = val; + } ); + + + // Information about events fired by DataTables - for documentation. + /** + * Draw event, fired whenever the table is redrawn on the page, at the same + * point as fnDrawCallback. This may be useful for binding events or + * performing calculations when the table is altered at all. + * @name DataTable#draw.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * Search event, fired when the searching applied to the table (using the + * built-in global search, or column filters) is altered. + * @name DataTable#search.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * Page change event, fired when the paging of the table is altered. + * @name DataTable#page.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * Order event, fired when the ordering applied to the table is altered. + * @name DataTable#order.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * DataTables initialisation complete event, fired when the table is fully + * drawn, including Ajax data loaded, if Ajax data is required. + * @name DataTable#init.dt + * @event + * @param {event} e jQuery event object + * @param {object} oSettings DataTables settings object + * @param {object} json The JSON object request from the server - only + * present if client-side Ajax sourced data is used</li></ol> + */ + + /** + * State save event, fired when the table has changed state a new state save + * is required. This event allows modification of the state saving object + * prior to actually doing the save, including addition or other state + * properties (for plug-ins) or modification of a DataTables core property. + * @name DataTable#stateSaveParams.dt + * @event + * @param {event} e jQuery event object + * @param {object} oSettings DataTables settings object + * @param {object} json The state information to be saved + */ + + /** + * State load event, fired when the table is loading state from the stored + * data, but prior to the settings object being modified by the saved state + * - allowing modification of the saved state is required or loading of + * state for a plug-in. + * @name DataTable#stateLoadParams.dt + * @event + * @param {event} e jQuery event object + * @param {object} oSettings DataTables settings object + * @param {object} json The saved state information + */ + + /** + * State loaded event, fired when state has been loaded from stored data and + * the settings object has been modified by the loaded data. + * @name DataTable#stateLoaded.dt + * @event + * @param {event} e jQuery event object + * @param {object} oSettings DataTables settings object + * @param {object} json The saved state information + */ + + /** + * Processing event, fired when DataTables is doing some kind of processing + * (be it, order, searcg or anything else). It can be used to indicate to + * the end user that there is something happening, or that something has + * finished. + * @name DataTable#processing.dt + * @event + * @param {event} e jQuery event object + * @param {object} oSettings DataTables settings object + * @param {boolean} bShow Flag for if DataTables is doing processing or not + */ + + /** + * Ajax (XHR) event, fired whenever an Ajax request is completed from a + * request to made to the server for new data. This event is called before + * DataTables processed the returned data, so it can also be used to pre- + * process the data returned from the server, if needed. + * + * Note that this trigger is called in `fnServerData`, if you override + * `fnServerData` and which to use this event, you need to trigger it in you + * success function. + * @name DataTable#xhr.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + * @param {object} json JSON returned from the server + * + * @example + * // Use a custom property returned from the server in another DOM element + * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { + * $('#status').html( json.status ); + * } ); + * + * @example + * // Pre-process the data returned from the server + * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { + * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) { + * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two; + * } + * // Note no return - manipulate the data directly in the JSON object. + * } ); + */ + + /** + * Destroy event, fired when the DataTable is destroyed by calling fnDestroy + * or passing the bDestroy:true parameter in the initialisation object. This + * can be used to remove bound events, added DOM nodes, etc. + * @name DataTable#destroy.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * Page length change event, fired when number of records to show on each + * page (the length) is changed. + * @name DataTable#length.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + * @param {integer} len New length + */ + + /** + * Column sizing has changed. + * @name DataTable#column-sizing.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + */ + + /** + * Column visibility has changed. + * @name DataTable#column-visibility.dt + * @event + * @param {event} e jQuery event object + * @param {object} o DataTables settings object {@link DataTable.models.oSettings} + * @param {int} column Column index + * @param {bool} vis `false` if column now hidden, or `true` if visible + */ + + return $.fn.dataTable; +})); + +}(window, document)); + diff --git a/plugins/jquery-knob/excanvas.js b/plugins/jquery-knob/excanvas.js new file mode 100644 index 0000000..367764b --- /dev/null +++ b/plugins/jquery-knob/excanvas.js @@ -0,0 +1,924 @@ +// Copyright 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +// Known Issues: +// +// * Patterns are not implemented. +// * Radial gradient are not implemented. The VML version of these look very +// different from the canvas one. +// * Clipping paths are not implemented. +// * Coordsize. The width and height attribute have higher priority than the +// width and height style values which isn't correct. +// * Painting mode isn't implemented. +// * Canvas width/height should is using content-box by default. IE in +// Quirks mode will draw the canvas using border-box. Either change your +// doctype to HTML5 +// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) +// or use Box Sizing Behavior from WebFX +// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) +// * Non uniform scaling does not correctly scale strokes. +// * Optimize. There is always room for speed improvements. + +// Only add this code if we do not already have a canvas implementation +if (!document.createElement('canvas').getContext) { + +(function() { + + // alias some functions to make (compiled) code shorter + var m = Math; + var mr = m.round; + var ms = m.sin; + var mc = m.cos; + var abs = m.abs; + var sqrt = m.sqrt; + + // this is used for sub pixel precision + var Z = 10; + var Z2 = Z / 2; + + /** + * This funtion is assigned to the <canvas> elements as element.getContext(). + * @this {HTMLElement} + * @return {CanvasRenderingContext2D_} + */ + function getContext() { + return this.context_ || + (this.context_ = new CanvasRenderingContext2D_(this)); + } + + var slice = Array.prototype.slice; + + /** + * Binds a function to an object. The returned function will always use the + * passed in {@code obj} as {@code this}. + * + * Example: + * + * g = bind(f, obj, a, b) + * g(c, d) // will do f.call(obj, a, b, c, d) + * + * @param {Function} f The function to bind the object to + * @param {Object} obj The object that should act as this when the function + * is called + * @param {*} var_args Rest arguments that will be used as the initial + * arguments when the function is called + * @return {Function} A new function that has bound this + */ + function bind(f, obj, var_args) { + var a = slice.call(arguments, 2); + return function() { + return f.apply(obj, a.concat(slice.call(arguments))); + }; + } + + var G_vmlCanvasManager_ = { + init: function(opt_doc) { + if (/MSIE/.test(navigator.userAgent) && !window.opera) { + var doc = opt_doc || document; + // Create a dummy element so that IE will allow canvas elements to be + // recognized. + doc.createElement('canvas'); + doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); + } + }, + + init_: function(doc) { + // create xmlns + if (!doc.namespaces['g_vml_']) { + doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', + '#default#VML'); + + } + if (!doc.namespaces['g_o_']) { + doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', + '#default#VML'); + } + + // Setup default CSS. Only add one style sheet per document + if (!doc.styleSheets['ex_canvas_']) { + var ss = doc.createStyleSheet(); + ss.owningElement.id = 'ex_canvas_'; + ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + + // default size is 300x150 in Gecko and Opera + 'text-align:left;width:300px;height:150px}' + + 'g_vml_\\:*{behavior:url(#default#VML)}' + + 'g_o_\\:*{behavior:url(#default#VML)}'; + + } + + // find all canvas elements + var els = doc.getElementsByTagName('canvas'); + for (var i = 0; i < els.length; i++) { + this.initElement(els[i]); + } + }, + + /** + * Public initializes a canvas element so that it can be used as canvas + * element from now on. This is called automatically before the page is + * loaded but if you are creating elements using createElement you need to + * make sure this is called on the element. + * @param {HTMLElement} el The canvas element to initialize. + * @return {HTMLElement} the element that was created. + */ + initElement: function(el) { + if (!el.getContext) { + + el.getContext = getContext; + + // Remove fallback content. There is no way to hide text nodes so we + // just remove all childNodes. We could hide all elements and remove + // text nodes but who really cares about the fallback content. + el.innerHTML = ''; + + // do not use inline function because that will leak memory + el.attachEvent('onpropertychange', onPropertyChange); + el.attachEvent('onresize', onResize); + + var attrs = el.attributes; + if (attrs.width && attrs.width.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setWidth_(attrs.width.nodeValue); + el.style.width = attrs.width.nodeValue + 'px'; + } else { + el.width = el.clientWidth; + } + if (attrs.height && attrs.height.specified) { + // TODO: use runtimeStyle and coordsize + // el.getContext().setHeight_(attrs.height.nodeValue); + el.style.height = attrs.height.nodeValue + 'px'; + } else { + el.height = el.clientHeight; + } + //el.getContext().setCoordsize_() + } + return el; + } + }; + + function onPropertyChange(e) { + var el = e.srcElement; + + switch (e.propertyName) { + case 'width': + el.style.width = el.attributes.width.nodeValue + 'px'; + el.getContext().clearRect(); + break; + case 'height': + el.style.height = el.attributes.height.nodeValue + 'px'; + el.getContext().clearRect(); + break; + } + } + + function onResize(e) { + var el = e.srcElement; + if (el.firstChild) { + el.firstChild.style.width = el.clientWidth + 'px'; + el.firstChild.style.height = el.clientHeight + 'px'; + } + } + + G_vmlCanvasManager_.init(); + + // precompute "00" to "FF" + var dec2hex = []; + for (var i = 0; i < 16; i++) { + for (var j = 0; j < 16; j++) { + dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); + } + } + + function createMatrixIdentity() { + return [ + [1, 0, 0], + [0, 1, 0], + [0, 0, 1] + ]; + } + + function matrixMultiply(m1, m2) { + var result = createMatrixIdentity(); + + for (var x = 0; x < 3; x++) { + for (var y = 0; y < 3; y++) { + var sum = 0; + + for (var z = 0; z < 3; z++) { + sum += m1[x][z] * m2[z][y]; + } + + result[x][y] = sum; + } + } + return result; + } + + function copyState(o1, o2) { + o2.fillStyle = o1.fillStyle; + o2.lineCap = o1.lineCap; + o2.lineJoin = o1.lineJoin; + o2.lineWidth = o1.lineWidth; + o2.miterLimit = o1.miterLimit; + o2.shadowBlur = o1.shadowBlur; + o2.shadowColor = o1.shadowColor; + o2.shadowOffsetX = o1.shadowOffsetX; + o2.shadowOffsetY = o1.shadowOffsetY; + o2.strokeStyle = o1.strokeStyle; + o2.globalAlpha = o1.globalAlpha; + o2.arcScaleX_ = o1.arcScaleX_; + o2.arcScaleY_ = o1.arcScaleY_; + o2.lineScale_ = o1.lineScale_; + } + + function processStyle(styleString) { + var str, alpha = 1; + + styleString = String(styleString); + if (styleString.substring(0, 3) == 'rgb') { + var start = styleString.indexOf('(', 3); + var end = styleString.indexOf(')', start + 1); + var guts = styleString.substring(start + 1, end).split(','); + + str = '#'; + for (var i = 0; i < 3; i++) { + str += dec2hex[Number(guts[i])]; + } + + if (guts.length == 4 && styleString.substr(3, 1) == 'a') { + alpha = guts[3]; + } + } else { + str = styleString; + } + + return {color: str, alpha: alpha}; + } + + function processLineCap(lineCap) { + switch (lineCap) { + case 'butt': + return 'flat'; + case 'round': + return 'round'; + case 'square': + default: + return 'square'; + } + } + + /** + * This class implements CanvasRenderingContext2D interface as described by + * the WHATWG. + * @param {HTMLElement} surfaceElement The element that the 2D context should + * be associated with + */ + function CanvasRenderingContext2D_(surfaceElement) { + this.m_ = createMatrixIdentity(); + + this.mStack_ = []; + this.aStack_ = []; + this.currentPath_ = []; + + // Canvas context properties + this.strokeStyle = '#000'; + this.fillStyle = '#000'; + + this.lineWidth = 1; + this.lineJoin = 'miter'; + this.lineCap = 'butt'; + this.miterLimit = Z * 1; + this.globalAlpha = 1; + this.canvas = surfaceElement; + + var el = surfaceElement.ownerDocument.createElement('div'); + el.style.width = surfaceElement.clientWidth + 'px'; + el.style.height = surfaceElement.clientHeight + 'px'; + el.style.overflow = 'hidden'; + el.style.position = 'absolute'; + surfaceElement.appendChild(el); + + this.element_ = el; + this.arcScaleX_ = 1; + this.arcScaleY_ = 1; + this.lineScale_ = 1; + } + + var contextPrototype = CanvasRenderingContext2D_.prototype; + contextPrototype.clearRect = function() { + this.element_.innerHTML = ''; + }; + + contextPrototype.beginPath = function() { + // TODO: Branch current matrix so that save/restore has no effect + // as per safari docs. + this.currentPath_ = []; + }; + + contextPrototype.moveTo = function(aX, aY) { + var p = this.getCoords_(aX, aY); + this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.lineTo = function(aX, aY) { + var p = this.getCoords_(aX, aY); + this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); + + this.currentX_ = p.x; + this.currentY_ = p.y; + }; + + contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, + aCP2x, aCP2y, + aX, aY) { + var p = this.getCoords_(aX, aY); + var cp1 = this.getCoords_(aCP1x, aCP1y); + var cp2 = this.getCoords_(aCP2x, aCP2y); + bezierCurveTo(this, cp1, cp2, p); + }; + + // Helper function that takes the already fixed cordinates. + function bezierCurveTo(self, cp1, cp2, p) { + self.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: cp1.x, + cp1y: cp1.y, + cp2x: cp2.x, + cp2y: cp2.y, + x: p.x, + y: p.y + }); + self.currentX_ = p.x; + self.currentY_ = p.y; + } + + contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { + // the following is lifted almost directly from + // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes + + var cp = this.getCoords_(aCPx, aCPy); + var p = this.getCoords_(aX, aY); + + var cp1 = { + x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), + y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) + }; + var cp2 = { + x: cp1.x + (p.x - this.currentX_) / 3.0, + y: cp1.y + (p.y - this.currentY_) / 3.0 + }; + + bezierCurveTo(this, cp1, cp2, p); + }; + + contextPrototype.arc = function(aX, aY, aRadius, + aStartAngle, aEndAngle, aClockwise) { + aRadius *= Z; + var arcType = aClockwise ? 'at' : 'wa'; + + var xStart = aX + mc(aStartAngle) * aRadius - Z2; + var yStart = aY + ms(aStartAngle) * aRadius - Z2; + + var xEnd = aX + mc(aEndAngle) * aRadius - Z2; + var yEnd = aY + ms(aEndAngle) * aRadius - Z2; + + // IE won't render arches drawn counter clockwise if xStart == xEnd. + if (xStart == xEnd && !aClockwise) { + xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something + // that can be represented in binary + } + + var p = this.getCoords_(aX, aY); + var pStart = this.getCoords_(xStart, yStart); + var pEnd = this.getCoords_(xEnd, yEnd); + + this.currentPath_.push({type: arcType, + x: p.x, + y: p.y, + radius: aRadius, + xStart: pStart.x, + yStart: pStart.y, + xEnd: pEnd.x, + yEnd: pEnd.y}); + + }; + + contextPrototype.rect = function(aX, aY, aWidth, aHeight) { + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + }; + + contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.stroke(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { + var oldPath = this.currentPath_; + this.beginPath(); + + this.moveTo(aX, aY); + this.lineTo(aX + aWidth, aY); + this.lineTo(aX + aWidth, aY + aHeight); + this.lineTo(aX, aY + aHeight); + this.closePath(); + this.fill(); + + this.currentPath_ = oldPath; + }; + + contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { + var gradient = new CanvasGradient_('gradient'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + return gradient; + }; + + contextPrototype.createRadialGradient = function(aX0, aY0, aR0, + aX1, aY1, aR1) { + var gradient = new CanvasGradient_('gradientradial'); + gradient.x0_ = aX0; + gradient.y0_ = aY0; + gradient.r0_ = aR0; + gradient.x1_ = aX1; + gradient.y1_ = aY1; + gradient.r1_ = aR1; + return gradient; + }; + + contextPrototype.drawImage = function(image, var_args) { + var dx, dy, dw, dh, sx, sy, sw, sh; + + // to find the original width we overide the width and height + var oldRuntimeWidth = image.runtimeStyle.width; + var oldRuntimeHeight = image.runtimeStyle.height; + image.runtimeStyle.width = 'auto'; + image.runtimeStyle.height = 'auto'; + + // get the original size + var w = image.width; + var h = image.height; + + // and remove overides + image.runtimeStyle.width = oldRuntimeWidth; + image.runtimeStyle.height = oldRuntimeHeight; + + if (arguments.length == 3) { + dx = arguments[1]; + dy = arguments[2]; + sx = sy = 0; + sw = dw = w; + sh = dh = h; + } else if (arguments.length == 5) { + dx = arguments[1]; + dy = arguments[2]; + dw = arguments[3]; + dh = arguments[4]; + sx = sy = 0; + sw = w; + sh = h; + } else if (arguments.length == 9) { + sx = arguments[1]; + sy = arguments[2]; + sw = arguments[3]; + sh = arguments[4]; + dx = arguments[5]; + dy = arguments[6]; + dw = arguments[7]; + dh = arguments[8]; + } else { + throw Error('Invalid number of arguments'); + } + + var d = this.getCoords_(dx, dy); + + var w2 = sw / 2; + var h2 = sh / 2; + + var vmlStr = []; + + var W = 10; + var H = 10; + + // For some reason that I've now forgotten, using divs didn't work + vmlStr.push(' <g_vml_:group', + ' coordsize="', Z * W, ',', Z * H, '"', + ' coordorigin="0,0"' , + ' style="width:', W, 'px;height:', H, 'px;position:absolute;'); + + // If filters are necessary (rotation exists), create them + // filters are bog-slow, so only create them if abbsolutely necessary + // The following check doesn't account for skews (which don't exist + // in the canvas spec (yet) anyway. + + if (this.m_[0][0] != 1 || this.m_[0][1]) { + var filter = []; + + // Note the 12/21 reversal + filter.push('M11=', this.m_[0][0], ',', + 'M12=', this.m_[1][0], ',', + 'M21=', this.m_[0][1], ',', + 'M22=', this.m_[1][1], ',', + 'Dx=', mr(d.x / Z), ',', + 'Dy=', mr(d.y / Z), ''); + + // Bounding box calculation (need to minimize displayed area so that + // filters don't waste time on unused pixels. + var max = d; + var c2 = this.getCoords_(dx + dw, dy); + var c3 = this.getCoords_(dx, dy + dh); + var c4 = this.getCoords_(dx + dw, dy + dh); + + max.x = m.max(max.x, c2.x, c3.x, c4.x); + max.y = m.max(max.y, c2.y, c3.y, c4.y); + + vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), + 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', + filter.join(''), ", sizingmethod='clip');") + } else { + vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;'); + } + + vmlStr.push(' ">' , + '<g_vml_:image src="', image.src, '"', + ' style="width:', Z * dw, 'px;', + ' height:', Z * dh, 'px;"', + ' cropleft="', sx / w, '"', + ' croptop="', sy / h, '"', + ' cropright="', (w - sx - sw) / w, '"', + ' cropbottom="', (h - sy - sh) / h, '"', + ' />', + '</g_vml_:group>'); + + this.element_.insertAdjacentHTML('BeforeEnd', + vmlStr.join('')); + }; + + contextPrototype.stroke = function(aFill) { + var lineStr = []; + var lineOpen = false; + var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); + var color = a.color; + var opacity = a.alpha * this.globalAlpha; + + var W = 10; + var H = 10; + + lineStr.push('<g_vml_:shape', + ' filled="', !!aFill, '"', + ' style="position:absolute;width:', W, 'px;height:', H, 'px;"', + ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"', + ' stroked="', !aFill, '"', + ' path="'); + + var newSeq = false; + var min = {x: null, y: null}; + var max = {x: null, y: null}; + + for (var i = 0; i < this.currentPath_.length; i++) { + var p = this.currentPath_[i]; + var c; + + switch (p.type) { + case 'moveTo': + c = p; + lineStr.push(' m ', mr(p.x), ',', mr(p.y)); + break; + case 'lineTo': + lineStr.push(' l ', mr(p.x), ',', mr(p.y)); + break; + case 'close': + lineStr.push(' x '); + p = null; + break; + case 'bezierCurveTo': + lineStr.push(' c ', + mr(p.cp1x), ',', mr(p.cp1y), ',', + mr(p.cp2x), ',', mr(p.cp2y), ',', + mr(p.x), ',', mr(p.y)); + break; + case 'at': + case 'wa': + lineStr.push(' ', p.type, ' ', + mr(p.x - this.arcScaleX_ * p.radius), ',', + mr(p.y - this.arcScaleY_ * p.radius), ' ', + mr(p.x + this.arcScaleX_ * p.radius), ',', + mr(p.y + this.arcScaleY_ * p.radius), ' ', + mr(p.xStart), ',', mr(p.yStart), ' ', + mr(p.xEnd), ',', mr(p.yEnd)); + break; + } + + + // TODO: Following is broken for curves due to + // move to proper paths. + + // Figure out dimensions so we can do gradient fills + // properly + if (p) { + if (min.x == null || p.x < min.x) { + min.x = p.x; + } + if (max.x == null || p.x > max.x) { + max.x = p.x; + } + if (min.y == null || p.y < min.y) { + min.y = p.y; + } + if (max.y == null || p.y > max.y) { + max.y = p.y; + } + } + } + lineStr.push(' ">'); + + if (!aFill) { + var lineWidth = this.lineScale_ * this.lineWidth; + + // VML cannot correctly render a line if the width is less than 1px. + // In that case, we dilute the color to make the line look thinner. + if (lineWidth < 1) { + opacity *= lineWidth; + } + + lineStr.push( + '<g_vml_:stroke', + ' opacity="', opacity, '"', + ' joinstyle="', this.lineJoin, '"', + ' miterlimit="', this.miterLimit, '"', + ' endcap="', processLineCap(this.lineCap), '"', + ' weight="', lineWidth, 'px"', + ' color="', color, '" />' + ); + } else if (typeof this.fillStyle == 'object') { + var fillStyle = this.fillStyle; + var angle = 0; + var focus = {x: 0, y: 0}; + + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + + if (fillStyle.type_ == 'gradient') { + var x0 = fillStyle.x0_ / this.arcScaleX_; + var y0 = fillStyle.y0_ / this.arcScaleY_; + var x1 = fillStyle.x1_ / this.arcScaleX_; + var y1 = fillStyle.y1_ / this.arcScaleY_; + var p0 = this.getCoords_(x0, y0); + var p1 = this.getCoords_(x1, y1); + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } else { + var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); + var width = max.x - min.x; + var height = max.y - min.y; + focus = { + x: (p0.x - min.x) / width, + y: (p0.y - min.y) / height + }; + + width /= this.arcScaleX_ * Z; + height /= this.arcScaleY_ * Z; + var dimension = m.max(width, height); + shift = 2 * fillStyle.r0_ / dimension; + expansion = 2 * fillStyle.r1_ / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fillStyle.colors_; + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + var color1 = stops[0].color; + var color2 = stops[length - 1].color; + var opacity1 = stops[0].alpha * this.globalAlpha; + var opacity2 = stops[length - 1].alpha * this.globalAlpha; + + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + colors.push(stop.offset * expansion + shift + ' ' + stop.color); + } + + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', + ' method="none" focus="100%"', + ' color="', color1, '"', + ' color2="', color2, '"', + ' colors="', colors.join(','), '"', + ' opacity="', opacity2, '"', + ' g_o_:opacity2="', opacity1, '"', + ' angle="', angle, '"', + ' focusposition="', focus.x, ',', focus.y, '" />'); + } else { + lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, + '" />'); + } + + lineStr.push('</g_vml_:shape>'); + + this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); + }; + + contextPrototype.fill = function() { + this.stroke(true); + } + + contextPrototype.closePath = function() { + this.currentPath_.push({type: 'close'}); + }; + + /** + * @private + */ + contextPrototype.getCoords_ = function(aX, aY) { + var m = this.m_; + return { + x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, + y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 + } + }; + + contextPrototype.save = function() { + var o = {}; + copyState(this, o); + this.aStack_.push(o); + this.mStack_.push(this.m_); + this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); + }; + + contextPrototype.restore = function() { + copyState(this.aStack_.pop(), this); + this.m_ = this.mStack_.pop(); + }; + + function matrixIsFinite(m) { + for (var j = 0; j < 3; j++) { + for (var k = 0; k < 2; k++) { + if (!isFinite(m[j][k]) || isNaN(m[j][k])) { + return false; + } + } + } + return true; + } + + function setM(ctx, m, updateLineScale) { + if (!matrixIsFinite(m)) { + return; + } + ctx.m_ = m; + + if (updateLineScale) { + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; + ctx.lineScale_ = sqrt(abs(det)); + } + } + + contextPrototype.translate = function(aX, aY) { + var m1 = [ + [1, 0, 0], + [0, 1, 0], + [aX, aY, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.rotate = function(aRot) { + var c = mc(aRot); + var s = ms(aRot); + + var m1 = [ + [c, s, 0], + [-s, c, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), false); + }; + + contextPrototype.scale = function(aX, aY) { + this.arcScaleX_ *= aX; + this.arcScaleY_ *= aY; + var m1 = [ + [aX, 0, 0], + [0, aY, 0], + [0, 0, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { + var m1 = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, matrixMultiply(m1, this.m_), true); + }; + + contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { + var m = [ + [m11, m12, 0], + [m21, m22, 0], + [dx, dy, 1] + ]; + + setM(this, m, true); + }; + + /******** STUBS ********/ + contextPrototype.clip = function() { + // TODO: Implement + }; + + contextPrototype.arcTo = function() { + // TODO: Implement + }; + + contextPrototype.createPattern = function() { + return new CanvasPattern_; + }; + + // Gradient / Pattern Stubs + function CanvasGradient_(aType) { + this.type_ = aType; + this.x0_ = 0; + this.y0_ = 0; + this.r0_ = 0; + this.x1_ = 0; + this.y1_ = 0; + this.r1_ = 0; + this.colors_ = []; + } + + CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { + aColor = processStyle(aColor); + this.colors_.push({offset: aOffset, + color: aColor.color, + alpha: aColor.alpha}); + }; + + function CanvasPattern_() {} + + // set up externs + G_vmlCanvasManager = G_vmlCanvasManager_; + CanvasRenderingContext2D = CanvasRenderingContext2D_; + CanvasGradient = CanvasGradient_; + CanvasPattern = CanvasPattern_; + +})(); + +} // if diff --git a/plugins/jquery-knob/jquery.knob.js b/plugins/jquery-knob/jquery.knob.js new file mode 100644 index 0000000..8bae662 --- /dev/null +++ b/plugins/jquery-knob/jquery.knob.js @@ -0,0 +1,805 @@ +/*!jQuery Knob*/ +/** + * Downward compatible, touchable dial + * + * Version: 1.2.11 + * Requires: jQuery v1.7+ + * + * Copyright (c) 2012 Anthony Terrien + * Under MIT License (http://www.opensource.org/licenses/mit-license.php) + * + * Thanks to vor, eskimoblood, spiffistan, FabrizioC + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + /** + * Kontrol library + */ + "use strict"; + + /** + * Definition of globals and core + */ + var k = {}, // kontrol + max = Math.max, + min = Math.min; + + k.c = {}; + k.c.d = $(document); + k.c.t = function (e) { + return e.originalEvent.touches.length - 1; + }; + + /** + * Kontrol Object + * + * Definition of an abstract UI control + * + * Each concrete component must call this one. + * <code> + * k.o.call(this); + * </code> + */ + k.o = function () { + var s = this; + + this.o = null; // array of options + this.$ = null; // jQuery wrapped element + this.i = null; // mixed HTMLInputElement or array of HTMLInputElement + this.g = null; // deprecated 2D graphics context for 'pre-rendering' + this.v = null; // value ; mixed array or integer + this.cv = null; // change value ; not commited value + this.x = 0; // canvas x position + this.y = 0; // canvas y position + this.w = 0; // canvas width + this.h = 0; // canvas height + this.$c = null; // jQuery canvas element + this.c = null; // rendered canvas context + this.t = 0; // touches index + this.isInit = false; + this.fgColor = null; // main color + this.pColor = null; // previous color + this.dH = null; // draw hook + this.cH = null; // change hook + this.eH = null; // cancel hook + this.rH = null; // release hook + this.scale = 1; // scale factor + this.relative = false; + this.relativeWidth = false; + this.relativeHeight = false; + this.$div = null; // component div + + this.run = function () { + var cf = function (e, conf) { + var k; + for (k in conf) { + s.o[k] = conf[k]; + } + s._carve().init(); + s._configure() + ._draw(); + }; + + if (this.$.data('kontroled')) return; + this.$.data('kontroled', true); + + this.extend(); + this.o = $.extend({ + // Config + min: this.$.data('min') !== undefined ? this.$.data('min') : 0, + max: this.$.data('max') !== undefined ? this.$.data('max') : 100, + stopper: true, + readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), + + // UI + cursor: this.$.data('cursor') === true && 30 + || this.$.data('cursor') || 0, + thickness: this.$.data('thickness') + && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) + || 0.35, + lineCap: this.$.data('linecap') || 'butt', + width: this.$.data('width') || 200, + height: this.$.data('height') || 200, + displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'), + displayPrevious: this.$.data('displayprevious'), + fgColor: this.$.data('fgcolor') || '#87CEEB', + inputColor: this.$.data('inputcolor'), + font: this.$.data('font') || 'Arial', + fontWeight: this.$.data('font-weight') || 'bold', + inline: false, + step: this.$.data('step') || 1, + rotation: this.$.data('rotation'), + + // Hooks + draw: null, // function () {} + change: null, // function (value) {} + cancel: null, // function () {} + release: null, // function (value) {} + + // Output formatting, allows to add unit: %, ms ... + format: function(v) { + return v; + }, + parse: function (v) { + return parseFloat(v); + } + }, this.o + ); + + // finalize options + this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw'; + if (!this.o.inputColor) { + this.o.inputColor = this.o.fgColor; + } + + // routing value + if (this.$.is('fieldset')) { + + // fieldset = array of integer + this.v = {}; + this.i = this.$.find('input'); + this.i.each(function(k) { + var $this = $(this); + s.i[k] = $this; + s.v[k] = s.o.parse($this.val()); + + $this.bind( + 'change blur', + function () { + var val = {}; + val[k] = $this.val(); + s.val(s._validate(val)); + } + ); + }); + this.$.find('legend').remove(); + } else { + + // input = integer + this.i = this.$; + this.v = this.o.parse(this.$.val()); + this.v === '' && (this.v = this.o.min); + this.$.bind( + 'change blur', + function () { + s.val(s._validate(s.o.parse(s.$.val()))); + } + ); + + } + + !this.o.displayInput && this.$.hide(); + + // adds needed DOM elements (canvas, div) + this.$c = $(document.createElement('canvas')).attr({ + width: this.o.width, + height: this.o.height + }); + + // wraps all elements in a div + // add to DOM before Canvas init is triggered + this.$div = $('<div style="' + + (this.o.inline ? 'display:inline;' : '') + + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;' + + '"></div>'); + + this.$.wrap(this.$div).before(this.$c); + this.$div = this.$.parent(); + + if (typeof G_vmlCanvasManager !== 'undefined') { + G_vmlCanvasManager.initElement(this.$c[0]); + } + + this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; + + if (!this.c) { + throw { + name: "CanvasNotSupportedException", + message: "Canvas not supported. Please use excanvas on IE8.0.", + toString: function(){return this.name + ": " + this.message} + } + } + + // hdpi support + this.scale = (window.devicePixelRatio || 1) / ( + this.c.webkitBackingStorePixelRatio || + this.c.mozBackingStorePixelRatio || + this.c.msBackingStorePixelRatio || + this.c.oBackingStorePixelRatio || + this.c.backingStorePixelRatio || 1 + ); + + // detects relative width / height + this.relativeWidth = this.o.width % 1 !== 0 + && this.o.width.indexOf('%'); + this.relativeHeight = this.o.height % 1 !== 0 + && this.o.height.indexOf('%'); + this.relative = this.relativeWidth || this.relativeHeight; + + // computes size and carves the component + this._carve(); + + // prepares props for transaction + if (this.v instanceof Object) { + this.cv = {}; + this.copy(this.v, this.cv); + } else { + this.cv = this.v; + } + + // binds configure event + this.$ + .bind("configure", cf) + .parent() + .bind("configure", cf); + + // finalize init + this._listen() + ._configure() + ._xy() + .init(); + + this.isInit = true; + + this.$.val(this.o.format(this.v)); + this._draw(); + + return this; + }; + + this._carve = function() { + if (this.relative) { + var w = this.relativeWidth ? + this.$div.parent().width() * + parseInt(this.o.width) / 100 + : this.$div.parent().width(), + h = this.relativeHeight ? + this.$div.parent().height() * + parseInt(this.o.height) / 100 + : this.$div.parent().height(); + + // apply relative + this.w = this.h = Math.min(w, h); + } else { + this.w = this.o.width; + this.h = this.o.height; + } + + // finalize div + this.$div.css({ + 'width': this.w + 'px', + 'height': this.h + 'px' + }); + + // finalize canvas with computed width + this.$c.attr({ + width: this.w, + height: this.h + }); + + // scaling + if (this.scale !== 1) { + this.$c[0].width = this.$c[0].width * this.scale; + this.$c[0].height = this.$c[0].height * this.scale; + this.$c.width(this.w); + this.$c.height(this.h); + } + + return this; + }; + + this._draw = function () { + + // canvas pre-rendering + var d = true; + + s.g = s.c; + + s.clear(); + + s.dH && (d = s.dH()); + + d !== false && s.draw(); + }; + + this._touch = function (e) { + var touchMove = function (e) { + var v = s.xy2val( + e.originalEvent.touches[s.t].pageX, + e.originalEvent.touches[s.t].pageY + ); + + if (v == s.cv) return; + + if (s.cH && s.cH(v) === false) return; + + s.change(s._validate(v)); + s._draw(); + }; + + // get touches index + this.t = k.c.t(e); + + // First touch + touchMove(e); + + // Touch events listeners + k.c.d + .bind("touchmove.k", touchMove) + .bind( + "touchend.k", + function () { + k.c.d.unbind('touchmove.k touchend.k'); + s.val(s.cv); + } + ); + + return this; + }; + + this._mouse = function (e) { + var mouseMove = function (e) { + var v = s.xy2val(e.pageX, e.pageY); + + if (v == s.cv) return; + + if (s.cH && (s.cH(v) === false)) return; + + s.change(s._validate(v)); + s._draw(); + }; + + // First click + mouseMove(e); + + // Mouse events listeners + k.c.d + .bind("mousemove.k", mouseMove) + .bind( + // Escape key cancel current change + "keyup.k", + function (e) { + if (e.keyCode === 27) { + k.c.d.unbind("mouseup.k mousemove.k keyup.k"); + + if (s.eH && s.eH() === false) + return; + + s.cancel(); + } + } + ) + .bind( + "mouseup.k", + function (e) { + k.c.d.unbind('mousemove.k mouseup.k keyup.k'); + s.val(s.cv); + } + ); + + return this; + }; + + this._xy = function () { + var o = this.$c.offset(); + this.x = o.left; + this.y = o.top; + + return this; + }; + + this._listen = function () { + if (!this.o.readOnly) { + this.$c + .bind( + "mousedown", + function (e) { + e.preventDefault(); + s._xy()._mouse(e); + } + ) + .bind( + "touchstart", + function (e) { + e.preventDefault(); + s._xy()._touch(e); + } + ); + + this.listen(); + } else { + this.$.attr('readonly', 'readonly'); + } + + if (this.relative) { + $(window).resize(function() { + s._carve().init(); + s._draw(); + }); + } + + return this; + }; + + this._configure = function () { + + // Hooks + if (this.o.draw) this.dH = this.o.draw; + if (this.o.change) this.cH = this.o.change; + if (this.o.cancel) this.eH = this.o.cancel; + if (this.o.release) this.rH = this.o.release; + + if (this.o.displayPrevious) { + this.pColor = this.h2rgba(this.o.fgColor, "0.4"); + this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); + } else { + this.fgColor = this.o.fgColor; + } + + return this; + }; + + this._clear = function () { + this.$c[0].width = this.$c[0].width; + }; + + this._validate = function (v) { + var val = (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; + return Math.round(val * 100) / 100; + }; + + // Abstract methods + this.listen = function () {}; // on start, one time + this.extend = function () {}; // each time configure triggered + this.init = function () {}; // each time configure triggered + this.change = function (v) {}; // on change + this.val = function (v) {}; // on release + this.xy2val = function (x, y) {}; // + this.draw = function () {}; // on change / on release + this.clear = function () { this._clear(); }; + + // Utils + this.h2rgba = function (h, a) { + var rgb; + h = h.substring(1,7); + rgb = [ + parseInt(h.substring(0,2), 16), + parseInt(h.substring(2,4), 16), + parseInt(h.substring(4,6), 16) + ]; + + return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; + }; + + this.copy = function (f, t) { + for (var i in f) { + t[i] = f[i]; + } + }; + }; + + + /** + * k.Dial + */ + k.Dial = function () { + k.o.call(this); + + this.startAngle = null; + this.xy = null; + this.radius = null; + this.lineWidth = null; + this.cursorExt = null; + this.w2 = null; + this.PI2 = 2*Math.PI; + + this.extend = function () { + this.o = $.extend({ + bgColor: this.$.data('bgcolor') || '#EEEEEE', + angleOffset: this.$.data('angleoffset') || 0, + angleArc: this.$.data('anglearc') || 360, + inline: true + }, this.o); + }; + + this.val = function (v, triggerRelease) { + if (null != v) { + + // reverse format + v = this.o.parse(v); + + if (triggerRelease !== false + && v != this.v + && this.rH + && this.rH(v) === false) { return; } + + this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; + this.v = this.cv; + this.$.val(this.o.format(this.v)); + this._draw(); + } else { + return this.v; + } + }; + + this.xy2val = function (x, y) { + var a, ret; + + a = Math.atan2( + x - (this.x + this.w2), + - (y - this.y - this.w2) + ) - this.angleOffset; + + if (this.o.flip) { + a = this.angleArc - a - this.PI2; + } + + if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { + + // if isset angleArc option, set to min if .5 under min + a = 0; + } else if (a < 0) { + a += this.PI2; + } + + ret = (a * (this.o.max - this.o.min) / this.angleArc) + this.o.min; + + this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min)); + + return ret; + }; + + this.listen = function () { + + // bind MouseWheel + var s = this, mwTimerStop, + mwTimerRelease, + mw = function (e) { + e.preventDefault(); + + var ori = e.originalEvent, + deltaX = ori.detail || ori.wheelDeltaX, + deltaY = ori.detail || ori.wheelDeltaY, + v = s._validate(s.o.parse(s.$.val())) + + ( + deltaX > 0 || deltaY > 0 + ? s.o.step + : deltaX < 0 || deltaY < 0 ? -s.o.step : 0 + ); + + v = max(min(v, s.o.max), s.o.min); + + s.val(v, false); + + if (s.rH) { + // Handle mousewheel stop + clearTimeout(mwTimerStop); + mwTimerStop = setTimeout(function () { + s.rH(v); + mwTimerStop = null; + }, 100); + + // Handle mousewheel releases + if (!mwTimerRelease) { + mwTimerRelease = setTimeout(function () { + if (mwTimerStop) + s.rH(v); + mwTimerRelease = null; + }, 200); + } + } + }, + kval, + to, + m = 1, + kv = { + 37: -s.o.step, + 38: s.o.step, + 39: s.o.step, + 40: -s.o.step + }; + + this.$ + .bind( + "keydown", + function (e) { + var kc = e.keyCode; + + // numpad support + if (kc >= 96 && kc <= 105) { + kc = e.keyCode = kc - 48; + } + + kval = parseInt(String.fromCharCode(kc)); + + if (isNaN(kval)) { + (kc !== 13) // enter + && kc !== 8 // bs + && kc !== 9 // tab + && kc !== 189 // - + && (kc !== 190 + || s.$.val().match(/\./)) // . allowed once + && e.preventDefault(); + + // arrows + if ($.inArray(kc,[37,38,39,40]) > -1) { + e.preventDefault(); + + var v = s.o.parse(s.$.val()) + kv[kc] * m; + s.o.stopper && (v = max(min(v, s.o.max), s.o.min)); + + s.change(s._validate(v)); + s._draw(); + + // long time keydown speed-up + to = window.setTimeout(function () { + m *= 2; + }, 30); + } + } + } + ) + .bind( + "keyup", + function (e) { + if (isNaN(kval)) { + if (to) { + window.clearTimeout(to); + to = null; + m = 1; + s.val(s.$.val()); + } + } else { + // kval postcond + (s.$.val() > s.o.max && s.$.val(s.o.max)) + || (s.$.val() < s.o.min && s.$.val(s.o.min)); + } + } + ); + + this.$c.bind("mousewheel DOMMouseScroll", mw); + this.$.bind("mousewheel DOMMouseScroll", mw); + }; + + this.init = function () { + if (this.v < this.o.min + || this.v > this.o.max) { this.v = this.o.min; } + + this.$.val(this.v); + this.w2 = this.w / 2; + this.cursorExt = this.o.cursor / 100; + this.xy = this.w2 * this.scale; + this.lineWidth = this.xy * this.o.thickness; + this.lineCap = this.o.lineCap; + this.radius = this.xy - this.lineWidth / 2; + + this.o.angleOffset + && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); + + this.o.angleArc + && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); + + // deg to rad + this.angleOffset = this.o.angleOffset * Math.PI / 180; + this.angleArc = this.o.angleArc * Math.PI / 180; + + // compute start and end angles + this.startAngle = 1.5 * Math.PI + this.angleOffset; + this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; + + var s = max( + String(Math.abs(this.o.max)).length, + String(Math.abs(this.o.min)).length, + 2 + ) + 2; + + this.o.displayInput + && this.i.css({ + 'width' : ((this.w / 2 + 4) >> 0) + 'px', + 'height' : ((this.w / 3) >> 0) + 'px', + 'position' : 'absolute', + 'vertical-align' : 'middle', + 'margin-top' : ((this.w / 3) >> 0) + 'px', + 'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px', + 'border' : 0, + 'background' : 'none', + 'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font, + 'text-align' : 'center', + 'color' : this.o.inputColor || this.o.fgColor, + 'padding' : '0px', + '-webkit-appearance': 'none' + }) || this.i.css({ + 'width': '0px', + 'visibility': 'hidden' + }); + }; + + this.change = function (v) { + this.cv = v; + this.$.val(this.o.format(v)); + }; + + this.angle = function (v) { + return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); + }; + + this.arc = function (v) { + var sa, ea; + v = this.angle(v); + if (this.o.flip) { + sa = this.endAngle + 0.00001; + ea = sa - v - 0.00001; + } else { + sa = this.startAngle - 0.00001; + ea = sa + v + 0.00001; + } + this.o.cursor + && (sa = ea - this.cursorExt) + && (ea = ea + this.cursorExt); + + return { + s: sa, + e: ea, + d: this.o.flip && !this.o.cursor + }; + }; + + this.draw = function () { + var c = this.g, // context + a = this.arc(this.cv), // Arc + pa, // Previous arc + r = 1; + + c.lineWidth = this.lineWidth; + c.lineCap = this.lineCap; + + if (this.o.bgColor !== "none") { + c.beginPath(); + c.strokeStyle = this.o.bgColor; + c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); + c.stroke(); + } + + if (this.o.displayPrevious) { + pa = this.arc(this.v); + c.beginPath(); + c.strokeStyle = this.pColor; + c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); + c.stroke(); + r = this.cv == this.v; + } + + c.beginPath(); + c.strokeStyle = r ? this.o.fgColor : this.fgColor ; + c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); + c.stroke(); + }; + + this.cancel = function () { + this.val(this.v); + }; + }; + + $.fn.dial = $.fn.knob = function (o) { + return this.each( + function () { + var d = new k.Dial(); + d.o = o; + d.$ = $(this); + d.run(); + } + ).parent(); + }; + +})); diff --git a/plugins/jquery-mapael/jquery.mapael.js b/plugins/jquery-mapael/jquery.mapael.js new file mode 100644 index 0000000..a9b7ccd --- /dev/null +++ b/plugins/jquery-mapael/jquery.mapael.js @@ -0,0 +1,2249 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery, raphael.js and jquery.mousewheel + * + * Version: 2.0.0 + * + * Copyright (c) 2015 Vincent Brouté (http://www.vincentbroute.fr/mapael) + * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php). + * + * Thanks to Indigo744 + * + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('raphael'), require('mousewheel')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'raphael', 'mousewheel'], factory); + } else { + // Browser globals + factory(jQuery, Raphael, jQuery.fn.mousewheel); + } +}(function ($, Raphael, mousewheel, undefined) { + + "use strict"; + + // The plugin name (used on several places) + var pluginName = "mapael"; + + // Version number of jQuery Mapael. See http://semver.org/ for more information. + var version = "2.0.0-dev"; + + /* + * Mapael constructor + * Init instance vars and call init() + * @param container the DOM element on which to apply the plugin + * @param options the complete options to use + */ + var Mapael = function (container, options) { + var self = this; + + // the global container (DOM element object) + self.container = container; + + // the global container (jQuery object) + self.$container = $(container); + + // the global options + self.options = self.extendDefaultOptions(options); + + // Save initial HTML content (used by destroy method) + self.initialHTMLContent = self.$container.html(); + + // zoom TimeOut handler (used to set and clear) + self.zoomTO = 0; + + // zoom center coordinate (set at touchstart) + self.zoomCenterX = 0; + self.zoomCenterY = 0; + + // Zoom pinch (set at touchstart and touchmove) + self.previousPinchDist = 0; + + // Zoom data + self.zoomData = { + zoomLevel: 0, + zoomX: 0, + zoomY: 0, + panX: 0, + panY: 0 + }; + + // resize TimeOut handler (used to set and clear) + self.resizeTO = 0; + + // Panning: tell if panning action is in progress + self.panning = false; + + // Panning TimeOut handler (used to set and clear) + self.panningTO = 0; + + // Animate view box Interval handler (used to set and clear) + self.animationIntervalID = null; + + // Map subcontainer jQuery object + self.$map = {}; + + // The tooltip jQuery object + self.$tooltip = {}; + + // The paper Raphael object + self.paper = {}; + + // The areas object list + self.areas = {}; + + // The plots object list + self.plots = {}; + + // The links object list + self.links = {}; + + // The map configuration object (taken from map file) + self.mapConf = {}; + + // Let's start the initialization + self.init(); + }; + + /* + * Mapael Prototype + * Defines all methods and properties needed by Mapael + * Each mapael object inherits their properties and methods from this prototype + */ + Mapael.prototype = { + + /* + * Version number + */ + version: version, + + /* + * Initialize the plugin + * Called by the constructor + */ + init: function () { + var self = this; + + // Init check for class existence + if (self.options.map.cssClass === "" || $("." + self.options.map.cssClass, self.container).length === 0) { + throw new Error("The map class `" + self.options.map.cssClass + "` doesn't exists"); + } + + // Create the tooltip container + self.$tooltip = $("<div>").addClass(self.options.map.tooltip.cssClass).css("display", "none"); + + // Get the map container, empty it then append tooltip + self.$map = $("." + self.options.map.cssClass, self.container).empty().append(self.$tooltip); + + // Get the map from $.mapael or $.fn.mapael (backward compatibility) + if ($[pluginName] && $[pluginName].maps && $[pluginName].maps[self.options.map.name]) { + // Mapael version >= 2.x + self.mapConf = $[pluginName].maps[self.options.map.name]; + } else if ($.fn[pluginName] && $.fn[pluginName].maps && $.fn[pluginName].maps[self.options.map.name]) { + // Mapael version <= 1.x - DEPRECATED + self.mapConf = $.fn[pluginName].maps[self.options.map.name]; + if (window.console && window.console.warn) { + window.console.warn("Extending $.fn.mapael is deprecated (map '" + self.options.map.name + "')"); + } + } else { + throw new Error("Unknown map '" + self.options.map.name + "'"); + } + + // Create Raphael paper + self.paper = new Raphael(self.$map[0], self.mapConf.width, self.mapConf.height); + + // issue #135: Check for Raphael bug on text element boundaries + if (self.isRaphaelBBoxBugPresent() === true) { + self.destroy(); + throw new Error("Can't get boundary box for text (is your container hidden? See #135)"); + } + + // add plugin class name on element + self.$container.addClass(pluginName); + + if (self.options.map.tooltip.css) self.$tooltip.css(self.options.map.tooltip.css); + self.paper.setViewBox(0, 0, self.mapConf.width, self.mapConf.height, false); + + // Handle map size + if (self.options.map.width) { + // NOT responsive: map has a fixed width + self.paper.setSize(self.options.map.width, self.mapConf.height * (self.options.map.width / self.mapConf.width)); + + // Create the legends for plots taking into account the scale of the map + self.createLegends("plot", self.plots, (self.options.map.width / self.mapConf.width)); + } else { + // Responsive: handle resizing of the map + self.handleMapResizing(); + } + + // Draw map areas + $.each(self.mapConf.elems, function (id) { + var elemOptions = self.getElemOptions( + self.options.map.defaultArea, + (self.options.areas[id] ? self.options.areas[id] : {}), + self.options.legend.area + ); + self.areas[id] = {"mapElem": self.paper.path(self.mapConf.elems[id]).attr(elemOptions.attrs)}; + }); + + // Hook that allows to add custom processing on the map + if (self.options.map.beforeInit) self.options.map.beforeInit(self.$container, self.paper, self.options); + + // Init map areas in a second loop (prevent texts to be hidden by map elements) + $.each(self.mapConf.elems, function (id) { + var elemOptions = self.getElemOptions( + self.options.map.defaultArea, + (self.options.areas[id] ? self.options.areas[id] : {}), + self.options.legend.area + ); + self.initElem(self.areas[id], elemOptions, id); + }); + + // Draw links + self.links = self.drawLinksCollection(self.options.links); + + // Draw plots + $.each(self.options.plots, function (id) { + self.plots[id] = self.drawPlot(id); + }); + + // Attach zoom event + self.$container.on("zoom." + pluginName, function (e, zoomOptions) { + self.onZoomEvent(e, zoomOptions); + }); + + if (self.options.map.zoom.enabled) { + // Enable zoom + self.initZoom(self.mapConf.width, self.mapConf.height, self.options.map.zoom); + } + + // Set initial zoom + if (self.options.map.zoom.init !== undefined) { + if (self.options.map.zoom.init.animDuration === undefined) { + self.options.map.zoom.init.animDuration = 0; + } + self.$container.trigger("zoom." + pluginName, self.options.map.zoom.init); + } + + // Create the legends for areas + self.createLegends("area", self.areas, 1); + + // Attach update event + self.$container.on("update." + pluginName, function (e, opt) { + self.onUpdateEvent(e, opt); + }); + + // Attach showElementsInRange event + self.$container.on("showElementsInRange." + pluginName, function (e, opt) { + self.onShowElementsInRange(e, opt); + }); + + // Hook that allows to add custom processing on the map + if (self.options.map.afterInit) self.options.map.afterInit(self.$container, self.paper, self.areas, self.plots, self.options); + + $(self.paper.desc).append(" and Mapael " + self.version + " (http://www.vincentbroute.fr/mapael/)"); + }, + + /* + * Destroy mapael + * This function effectively detach mapael from the container + * - Set the container back to the way it was before mapael instanciation + * - Remove all data associated to it (memory can then be free'ed by browser) + * + * This method can be call directly by user: + * $(".mapcontainer").data("mapael").destroy(); + * + * This method is also automatically called if the user try to call mapael + * on a container already containing a mapael instance + */ + destroy: function () { + var self = this; + + // Detach all event listeners attached to the container + self.$container.off("." + pluginName); + + // Empty the container (this will also detach all event listeners) + self.$container.empty(); + // Detach the global resize event handler + if (self.onResizeEvent) $(window).off("resize." + pluginName, self.onResizeEvent); + // Replace initial HTML content + self.$container.html(self.initialHTMLContent); + // Remove mapael class + self.$container.removeClass(pluginName); + // Remove the data + self.$container.removeData(pluginName); + // Remove all internal reference + self.container = undefined; + self.$container = undefined; + self.options = undefined; + self.paper = undefined; + self.$map = undefined; + self.$tooltip = undefined; + self.mapConf = undefined; + self.areas = undefined; + self.plots = undefined; + self.links = undefined; + }, + + handleMapResizing: function () { + var self = this; + + // onResizeEvent: call when the window element trigger the resize event + // We create it inside this function (and not in the prototype) in order to have a closure + // Otherwise, in the prototype, 'this' when triggered is *not* the mapael object but the global window + self.onResizeEvent = function () { + // Clear any previous setTimeout (avoid too much triggering) + clearTimeout(self.resizeTO); + // setTimeout to wait for the user to finish its resizing + self.resizeTO = setTimeout(function () { + self.$map.trigger("resizeEnd." + pluginName); + }, 150); + }; + + // Attach resize handler + $(window).on("resize." + pluginName, self.onResizeEvent); + + // Attach resize end handler, and call it once + self.$map.on("resizeEnd." + pluginName, function () { + var containerWidth = self.$map.width(); + if (self.paper.width != containerWidth) { + var newScale = containerWidth / self.mapConf.width; + // Set new size + self.paper.setSize(containerWidth, self.mapConf.height * newScale); + // Create plots legend again to take into account the new scale + self.createLegends("plot", self.plots, newScale); + } + }).trigger("resizeEnd." + pluginName); + }, + + /* + * Extend the user option with the default one + * @param options the user options + * @return new options object + */ + extendDefaultOptions: function (options) { + + // Extend default options with user options + options = $.extend(true, {}, Mapael.prototype.defaultOptions, options); + + // Extend legend default options + $.each(options.legend, function (type) { + if ($.isArray(options.legend[type])) { + for (var i = 0; i < options.legend[type].length; ++i) + options.legend[type][i] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type][i]); + } else { + options.legend[type] = $.extend(true, {}, Mapael.prototype.legendDefaultOptions[type], options.legend[type]); + } + }); + + return options; + }, + + /* + * Init the element "elem" on the map (drawing, setting attributes, events, tooltip, ...) + */ + initElem: function (elem, elemOptions, id) { + var self = this; + var bbox = {}; + var textPosition = {}; + + // Assign value attribute to element + if (elemOptions.value !== undefined){ + elem.value = elemOptions.value; + } + + // Init the label related to the element + if (elemOptions.text && elemOptions.text.content !== undefined) { + // Set a text label in the area + bbox = elem.mapElem.getBBox(); + textPosition = self.getTextPosition(bbox, elemOptions.text.position, elemOptions.text.margin); + elemOptions.text.attrs["text-anchor"] = textPosition.textAnchor; + elem.textElem = self.paper.text(textPosition.x, textPosition.y, elemOptions.text.content).attr(elemOptions.text.attrs); + $(elem.textElem.node).attr("data-id", id); + } + + // Set user event handlers + if (elemOptions.eventHandlers) self.setEventHandlers(id, elemOptions, elem.mapElem, elem.textElem); + + // Set hover option for mapElem + self.setHoverOptions(elem.mapElem, elemOptions.attrs, elemOptions.attrsHover); + + // Set hover option for textElem + if (elem.textElem) self.setHoverOptions(elem.textElem, elemOptions.text.attrs, elemOptions.text.attrsHover); + + // Set hover behavior only if attrsHover is set for area or for text + if (($.isEmptyObject(elemOptions.attrsHover) === false) || + (elem.textElem && $.isEmptyObject(elemOptions.text.attrsHover) === false)) { + // Set hover behavior + self.setHover(elem.mapElem, elem.textElem); + } + + // Init the tooltip + if (elemOptions.tooltip) { + elem.mapElem.tooltip = elemOptions.tooltip; + self.setTooltip(elem.mapElem); + + if (elemOptions.text && elemOptions.text.content !== undefined) { + elem.textElem.tooltip = elemOptions.tooltip; + self.setTooltip(elem.textElem); + } + } + + // Init the link + if (elemOptions.href) { + elem.mapElem.href = elemOptions.href; + elem.mapElem.target = elemOptions.target; + self.setHref(elem.mapElem); + + if (elemOptions.text && elemOptions.text.content !== undefined) { + elem.textElem.href = elemOptions.href; + elem.textElem.target = elemOptions.target; + self.setHref(elem.textElem); + } + } + + $(elem.mapElem.node).attr("data-id", id); + }, + + /* + * Init zoom and panning for the map + * @param mapWidth + * @param mapHeight + * @param zoomOptions + */ + initZoom: function (mapWidth, mapHeight, zoomOptions) { + var self = this; + var mousedown = false; + var previousX = 0; + var previousY = 0; + var fnZoomButtons = { + "reset": function () { + self.$container.trigger("zoom." + pluginName, {"level": 0}); + }, + "in": function () { + self.$container.trigger("zoom." + pluginName, {"level": "+1"}); + }, + "out": function () { + self.$container.trigger("zoom." + pluginName, {"level": -1}); + } + }; + + // init Zoom data + $.extend(self.zoomData, { + zoomLevel: 0, + panX: 0, + panY: 0 + }); + + // init zoom buttons + $.each(zoomOptions.buttons, function(type, opt) { + if (fnZoomButtons[type] === undefined) throw new Error("Unknown zoom button '" + type + "'"); + // Create div with classes, contents and title (for tooltip) + var $button = $("<div>").addClass(opt.cssClass) + .html(opt.content) + .attr("title", opt.title); + // Assign click event + $button.on("click." + pluginName, fnZoomButtons[type]); + // Append to map + self.$map.append($button); + }); + + // Update the zoom level of the map on mousewheel + if (self.options.map.zoom.mousewheel) { + self.$map.on("mousewheel." + pluginName, function (e) { + var zoomLevel = (e.deltaY > 0) ? 1 : -1; + var coord = self.mapPagePositionToXY(e.pageX, e.pageY); + + self.$container.trigger("zoom." + pluginName, { + "fixedCenter": true, + "level": self.zoomData.zoomLevel + zoomLevel, + "x": coord.x, + "y": coord.y + }); + + return false; + }); + } + + // Update the zoom level of the map on touch pinch + if (self.options.map.zoom.touch) { + self.$map.on("touchstart." + pluginName, function (e) { + if (e.originalEvent.touches.length === 2) { + self.zoomCenterX = (e.originalEvent.touches[0].pageX + e.originalEvent.touches[1].pageX) / 2; + self.zoomCenterY = (e.originalEvent.touches[0].pageY + e.originalEvent.touches[1].pageY) / 2; + self.previousPinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2)); + } + }); + + self.$map.on("touchmove." + pluginName, function (e) { + var pinchDist = 0; + var zoomLevel = 0; + + if (e.originalEvent.touches.length === 2) { + pinchDist = Math.sqrt(Math.pow((e.originalEvent.touches[1].pageX - e.originalEvent.touches[0].pageX), 2) + Math.pow((e.originalEvent.touches[1].pageY - e.originalEvent.touches[0].pageY), 2)); + + if (Math.abs(pinchDist - self.previousPinchDist) > 15) { + var coord = self.mapPagePositionToXY(self.zoomCenterX, self.zoomCenterY); + zoomLevel = (pinchDist - self.previousPinchDist) / Math.abs(pinchDist - self.previousPinchDist); + self.$container.trigger("zoom." + pluginName, { + "fixedCenter": true, + "level": self.zoomData.zoomLevel + zoomLevel, + "x": coord.x, + "y": coord.y + }); + self.previousPinchDist = pinchDist; + } + return false; + } + }); + } + + // Panning + $("body").on("mouseup." + pluginName + (zoomOptions.touch ? " touchend" : ""), function () { + mousedown = false; + setTimeout(function () { + self.panning = false; + }, 50); + }); + + self.$map.on("mousedown." + pluginName + (zoomOptions.touch ? " touchstart" : ""), function (e) { + if (e.pageX !== undefined) { + mousedown = true; + previousX = e.pageX; + previousY = e.pageY; + } else { + if (e.originalEvent.touches.length === 1) { + mousedown = true; + previousX = e.originalEvent.touches[0].pageX; + previousY = e.originalEvent.touches[0].pageY; + } + } + }).on("mousemove." + pluginName + (zoomOptions.touch ? " touchmove" : ""), function (e) { + var currentLevel = self.zoomData.zoomLevel; + var pageX = 0; + var pageY = 0; + + if (e.pageX !== undefined) { + pageX = e.pageX; + pageY = e.pageY; + } else { + if (e.originalEvent.touches.length === 1) { + pageX = e.originalEvent.touches[0].pageX; + pageY = e.originalEvent.touches[0].pageY; + } else { + mousedown = false; + } + } + + if (mousedown && currentLevel !== 0) { + var offsetX = (previousX - pageX) / (1 + (currentLevel * zoomOptions.step)) * (mapWidth / self.paper.width); + var offsetY = (previousY - pageY) / (1 + (currentLevel * zoomOptions.step)) * (mapHeight / self.paper.height); + var panX = Math.min(Math.max(0, self.paper._viewBox[0] + offsetX), (mapWidth - self.paper._viewBox[2])); + var panY = Math.min(Math.max(0, self.paper._viewBox[1] + offsetY), (mapHeight - self.paper._viewBox[3])); + + if (Math.abs(offsetX) > 5 || Math.abs(offsetY) > 5) { + $.extend(self.zoomData, { + panX: panX, + panY: panY, + zoomX: panX + self.paper._viewBox[2] / 2, + zoomY: panY + self.paper._viewBox[3] / 2 + }); + self.paper.setViewBox(panX, panY, self.paper._viewBox[2], self.paper._viewBox[3]); + + clearTimeout(self.panningTO); + self.panningTO = setTimeout(function () { + self.$map.trigger("afterPanning", { + x1: panX, + y1: panY, + x2: (panX + self.paper._viewBox[2]), + y2: (panY + self.paper._viewBox[3]) + }); + }, 150); + + previousX = pageX; + previousY = pageY; + self.panning = true; + } + return false; + } + }); + }, + + /* + * Map a mouse position to a map position + * Transformation principle: + * ** start with (pageX, pageY) absolute mouse coordinate + * - Apply translation: take into accounts the map offset in the page + * ** from this point, we have relative mouse coordinate + * - Apply homothetic transformation: take into accounts initial factor of map sizing (fullWidth / actualWidth) + * - Apply homothetic transformation: take into accounts the zoom factor + * ** from this point, we have relative map coordinate + * - Apply translation: take into accounts the current panning of the map + * ** from this point, we have absolute map coordinate + * @param pageX: mouse client coordinate on X + * @param pageY: mouse client coordinate on Y + * @return map coordinate {x, y} + */ + mapPagePositionToXY: function(pageX, pageY) { + var self = this; + var offset = self.$map.offset(); + var initFactor = (self.options.map.width) ? (self.mapConf.width / self.options.map.width) : (self.mapConf.width / self.$map.width()); + var zoomFactor = 1 / (1 + (self.zoomData.zoomLevel * self.options.map.zoom.step)); + return { + x: (zoomFactor * initFactor * (pageX - offset.left)) + self.zoomData.panX, + y: (zoomFactor * initFactor * (pageY - offset.top)) + self.zoomData.panY + }; + }, + + /* + * Zoom on the map at a specific level focused on specific coordinates + * If no coordinates are specified, the zoom will be focused on the center of the map + * options : + * "level" : level of the zoom between minLevel and maxLevel + * "x" or "latitude" : x coordinate or latitude of the point to focus on + * "y" or "longitude" : y coordinate or longitude of the point to focus on + * "fixedCenter" : set to true in order to preserve the position of x,y in the canvas when zoomed + * "animDuration" : zoom duration + */ + onZoomEvent: function (e, zoomOptions) { + var self = this; + var newLevel = self.zoomData.zoomLevel; + var panX = 0; + var panY = 0; + var previousZoomLevel = (1 + self.zoomData.zoomLevel * self.options.map.zoom.step); + var zoomLevel = 0; + var animDuration = (zoomOptions.animDuration !== undefined) ? zoomOptions.animDuration : self.options.map.zoom.animDuration; + var offsetX = 0; + var offsetY = 0; + var coords = {}; + + // Get user defined zoom level + if (zoomOptions.level !== undefined) { + if (typeof zoomOptions.level === "string") { + // level is a string, either "n", "+n" or "-n" + if ((zoomOptions.level.slice(0, 1) === '+') || (zoomOptions.level.slice(0, 1) === '-')) { + // zoomLevel is relative + newLevel = self.zoomData.zoomLevel + parseInt(zoomOptions.level); + } else { + // zoomLevel is absolute + newLevel = parseInt(zoomOptions.level); + } + } else { + // level is integer + if (zoomOptions.level < 0) { + // zoomLevel is relative + newLevel = self.zoomData.zoomLevel + zoomOptions.level; + } else { + // zoomLevel is absolute + newLevel = zoomOptions.level; + } + } + // Make sure we stay in the boundaries + newLevel = Math.min(Math.max(newLevel, self.options.map.zoom.minLevel), self.options.map.zoom.maxLevel); + } + + zoomLevel = (1 + newLevel * self.options.map.zoom.step); + + if (zoomOptions.latitude !== undefined && zoomOptions.longitude !== undefined) { + coords = self.mapConf.getCoords(zoomOptions.latitude, zoomOptions.longitude); + zoomOptions.x = coords.x; + zoomOptions.y = coords.y; + } + + if (zoomOptions.x === undefined) + zoomOptions.x = self.paper._viewBox[0] + self.paper._viewBox[2] / 2; + + if (zoomOptions.y === undefined) + zoomOptions.y = (self.paper._viewBox[1] + self.paper._viewBox[3] / 2); + + if (newLevel === 0) { + panX = 0; + panY = 0; + } else if (zoomOptions.fixedCenter !== undefined && zoomOptions.fixedCenter === true) { + offsetX = self.zoomData.panX + ((zoomOptions.x - self.zoomData.panX) * (zoomLevel - previousZoomLevel)) / zoomLevel; + offsetY = self.zoomData.panY + ((zoomOptions.y - self.zoomData.panY) * (zoomLevel - previousZoomLevel)) / zoomLevel; + + panX = Math.min(Math.max(0, offsetX), (self.mapConf.width - (self.mapConf.width / zoomLevel))); + panY = Math.min(Math.max(0, offsetY), (self.mapConf.height - (self.mapConf.height / zoomLevel))); + } else { + panX = Math.min(Math.max(0, zoomOptions.x - (self.mapConf.width / zoomLevel) / 2), (self.mapConf.width - (self.mapConf.width / zoomLevel))); + panY = Math.min(Math.max(0, zoomOptions.y - (self.mapConf.height / zoomLevel) / 2), (self.mapConf.height - (self.mapConf.height / zoomLevel))); + } + + // Update zoom level of the map + if (zoomLevel == previousZoomLevel && panX == self.zoomData.panX && panY == self.zoomData.panY) return; + + if (animDuration > 0) { + self.animateViewBox(panX, panY, self.mapConf.width / zoomLevel, self.mapConf.height / zoomLevel, animDuration, self.options.map.zoom.animEasing); + } else { + self.paper.setViewBox(panX, panY, self.mapConf.width / zoomLevel, self.mapConf.height / zoomLevel); + clearTimeout(self.zoomTO); + self.zoomTO = setTimeout(function () { + self.$map.trigger("afterZoom", { + x1: panX, + y1: panY, + x2: (panX + (self.mapConf.width / zoomLevel)), + y2: (panY + (self.mapConf.height / zoomLevel)) + }); + }, 150); + } + + $.extend(self.zoomData, { + zoomLevel: newLevel, + panX: panX, + panY: panY, + zoomX: panX + self.paper._viewBox[2] / 2, + zoomY: panY + self.paper._viewBox[3] / 2 + }); + }, + + /* + * Show some element in range defined by user + * Triggered by user $(".mapcontainer").trigger("showElementsInRange", [opt]); + * + * @param opt the options + * opt.hiddenOpacity opacity for hidden element (default = 0.3) + * opt.animDuration animation duration in ms (default = 0) + * opt.afterShowRange callback + * opt.ranges the range to show: + * Example: + * opt.ranges = { + * 'plot' : { + * 0 : { // valueIndex + * 'min': 1000, + * 'max': 1200 + * }, + * 1 : { // valueIndex + * 'min': 10, + * 'max': 12 + * } + * }, + * 'area' : { + * {'min': 10, 'max': 20} // No valueIndex, only an object, use 0 as valueIndex (easy case) + * } + * } + */ + onShowElementsInRange: function(e, opt) { + var self = this; + + // set animDuration to default if not defined + if (opt.animDuration === undefined) { + opt.animDuration = 0; + } + + // set hiddenOpacity to default if not defined + if (opt.hiddenOpacity === undefined) { + opt.hiddenOpacity = 0.3; + } + + // handle area + if (opt.ranges && opt.ranges.area) { + self.showElemByRange(opt.ranges.area, self.areas, opt.hiddenOpacity, opt.animDuration); + } + + // handle plot + if (opt.ranges && opt.ranges.plot) { + self.showElemByRange(opt.ranges.plot, self.plots, opt.hiddenOpacity, opt.animDuration); + } + + // handle link + if (opt.ranges && opt.ranges.link) { + self.showElemByRange(opt.ranges.link, self.links, opt.hiddenOpacity, opt.animDuration); + } + + // Call user callback + if (opt.afterShowRange) opt.afterShowRange(); + }, + + /* + * Show some element in range + * @param ranges: the ranges + * @param elems: list of element on which to check against previous range + * @hiddenOpacity: the opacity when hidden + * @animDuration: the animation duration + */ + showElemByRange: function(ranges, elems, hiddenOpacity, animDuration) { + var self = this; + // Hold the final opacity value for all elements consolidated after applying each ranges + // This allow to set the opacity only once for each elements + var elemsFinalOpacity = {}; + + // set object with one valueIndex to 0 if we have directly the min/max + if (ranges.min !== undefined || ranges.max !== undefined) { + ranges = {0: ranges}; + } + + // Loop through each valueIndex + $.each(ranges, function (valueIndex) { + var range = ranges[valueIndex]; + // Check if user defined at least a min or max value + if (range.min === undefined && range.max === undefined) { + return true; // skip this iteration (each loop), goto next range + } + // Loop through each elements + $.each(elems, function (id) { + var elemValue = elems[id].value; + // set value with one valueIndex to 0 if not object + if (typeof elemValue !== "object") { + elemValue = [elemValue]; + } + // Check existence of this value index + if (elemValue[valueIndex] === undefined) { + return true; // skip this iteration (each loop), goto next element + } + // Check if in range + if ((range.min !== undefined && elemValue[valueIndex] < range.min) || + (range.max !== undefined && elemValue[valueIndex] > range.max)) { + // Element not in range + elemsFinalOpacity[id] = hiddenOpacity; + } else { + // Element in range + elemsFinalOpacity[id] = 1; + } + }); + }); + // Now that we looped through all ranges, we can really assign the final opacity + $.each(elemsFinalOpacity, function (id) { + self.setElementOpacity(elems[id], elemsFinalOpacity[id], animDuration); + }); + }, + + /* + * Set element opacity + * Handle elem.mapElem and elem.textElem + * @param elem the element + * @param opacity the opacity to apply + * @param animDuration the animation duration to use + */ + setElementOpacity: function(elem, opacity, animDuration) { + // Ensure no animation is running + //elem.mapElem.stop(); + //if (elem.textElem) elem.textElem.stop(); + + // If final opacity is not null, ensure element is shown before proceeding + if (opacity > 0) { + elem.mapElem.show(); + if (elem.textElem) elem.textElem.show(); + } + if (animDuration > 0) { + // Animate attribute + elem.mapElem.animate({"opacity": opacity}, animDuration, "linear", function () { + // If final attribute is 0, hide + if (opacity === 0) elem.mapElem.hide(); + }); + // Handle text element + if (elem.textElem) { + // Animate attribute + elem.textElem.animate({"opacity": opacity}, animDuration, "linear", function () { + // If final attribute is 0, hide + if (opacity === 0) elem.textElem.hide(); + }); + } + } else { + // Set attribute + elem.mapElem.attr({"opacity": opacity}); + // For null opacity, hide it + if (opacity === 0) elem.mapElem.hide(); + // Handle text elemen + if (elem.textElem) { + // Set attribute + elem.textElem.attr({"opacity": opacity}); + // For null opacity, hide it + if (opacity === 0) elem.textElem.hide(); + } + } + }, + + /* + * + * Update the current map + * Refresh attributes and tooltips for areas and plots + * @param opt option for the refresh : + * opt.mapOptions: options to update for plots and areas + * opt.replaceOptions: whether mapsOptions should entirely replace current map options, or just extend it + * opt.opt.newPlots new plots to add to the map + * opt.newLinks new links to add to the map + * opt.deletePlotKeys plots to delete from the map (array, or "all" to remove all plots) + * opt.deleteLinkKeys links to remove from the map (array, or "all" to remove all links) + * opt.setLegendElemsState the state of legend elements to be set : show (default) or hide + * opt.animDuration animation duration in ms (default = 0) + * opt.afterUpdate Hook that allows to add custom processing on the map + */ + onUpdateEvent: function (e, opt) { + var self = this; + // Abort if opt is undefined + if (typeof opt !== "object") return; + + var i = 0; + var animDuration = (opt.animDuration) ? opt.animDuration : 0; + + // This function remove an element using animation (or not, depending on animDuration) + // Used for deletePlotKeys and deleteLinkKeys + var fnRemoveElement = function (elem) { + // Unset all event handlers + self.unsetHover(elem.mapElem, elem.textElem); + if (animDuration > 0) { + elem.mapElem.animate({"opacity": 0}, animDuration, "linear", function () { + elem.mapElem.remove(); + }); + if (elem.textElem) { + elem.textElem.animate({"opacity": 0}, animDuration, "linear", function () { + elem.textElem.remove(); + }); + } + } else { + elem.mapElem.remove(); + if (elem.textElem) { + elem.textElem.remove(); + } + } + }; + + // This function show an element using animation + // Used for newPlots and newLinks + var fnShowElement = function (elem) { + // Starts with hidden elements + elem.mapElem.attr({opacity: 0}); + if (elem.textElem) elem.textElem.attr({opacity: 0}); + // Set final element opacity + self.setElementOpacity( + elem, + (elem.mapElem.originalAttrs.opacity !== undefined) ? elem.mapElem.originalAttrs.opacity : 1, + animDuration + ); + }; + + if (typeof opt.mapOptions === "object") { + if (opt.replaceOptions === true) self.options = self.extendDefaultOptions(opt.mapOptions); + else $.extend(true, self.options, opt.mapOptions); + + // IF we update areas, plots or legend, then reset all legend state to "show" + if (opt.mapOptions.areas !== undefined || opt.mapOptions.plots !== undefined || opt.mapOptions.legend !== undefined) { + $("[data-type='elem']", self.$container).each(function (id, elem) { + if ($(elem).attr('data-hidden') === "1") { + // Toggle state of element by clicking + $(elem).trigger("click." + pluginName, [false, animDuration]); + } + }); + } + } + + // Delete plots by name if deletePlotKeys is array + if (typeof opt.deletePlotKeys === "object") { + for (; i < opt.deletePlotKeys.length; i++) { + if (self.plots[opt.deletePlotKeys[i]] !== undefined) { + fnRemoveElement(self.plots[opt.deletePlotKeys[i]]); + delete self.plots[opt.deletePlotKeys[i]]; + } + } + // Delete ALL plots if deletePlotKeys is set to "all" + } else if (opt.deletePlotKeys === "all") { + $.each(self.plots, function (id, elem) { + fnRemoveElement(elem); + }); + // Empty plots object + self.plots = {}; + } + + // Delete links by name if deleteLinkKeys is array + if (typeof opt.deleteLinkKeys === "object") { + for (i = 0; i < opt.deleteLinkKeys.length; i++) { + if (self.links[opt.deleteLinkKeys[i]] !== undefined) { + fnRemoveElement(self.links[opt.deleteLinkKeys[i]]); + delete self.links[opt.deleteLinkKeys[i]]; + } + } + // Delete ALL links if deleteLinkKeys is set to "all" + } else if (opt.deleteLinkKeys === "all") { + $.each(self.links, function (id, elem) { + fnRemoveElement(elem); + }); + // Empty links object + self.links = {}; + } + + // New plots + if (typeof opt.newPlots === "object") { + $.each(opt.newPlots, function (id) { + if (self.plots[id] === undefined) { + self.options.plots[id] = opt.newPlots[id]; + self.plots[id] = self.drawPlot(id); + if (animDuration > 0) { + fnShowElement(self.plots[id]); + } + } + }); + } + + // New links + if (typeof opt.newLinks === "object") { + var newLinks = self.drawLinksCollection(opt.newLinks); + $.extend(self.links, newLinks); + $.extend(self.options.links, opt.newLinks); + if (animDuration > 0) { + $.each(newLinks, function (id) { + fnShowElement(newLinks[id]); + }); + } + } + + // Update areas attributes and tooltips + $.each(self.areas, function (id) { + // Avoid updating unchanged elements + if ((typeof opt.mapOptions === "object" && + ( + (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultArea === "object") + || (typeof opt.mapOptions.areas === "object" && typeof opt.mapOptions.areas[id] === "object") + || (typeof opt.mapOptions.legend === "object" && typeof opt.mapOptions.legend.area === "object") + )) + || opt.replaceOptions === true + ) { + var elemOptions = self.getElemOptions( + self.options.map.defaultArea, + (self.options.areas[id] ? self.options.areas[id] : {}), + self.options.legend.area + ); + + self.updateElem(elemOptions, self.areas[id], animDuration); + } + }); + + // Update plots attributes and tooltips + $.each(self.plots, function (id) { + // Avoid updating unchanged elements + if ((typeof opt.mapOptions ==="object" && + ( + (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultPlot === "object") + || (typeof opt.mapOptions.plots === "object" && typeof opt.mapOptions.plots[id] === "object") + || (typeof opt.mapOptions.legend === "object" && typeof opt.mapOptions.legend.plot === "object") + )) + || opt.replaceOptions === true + ) { + var elemOptions = self.getElemOptions( + self.options.map.defaultPlot, + (self.options.plots[id] ? self.options.plots[id] : {}), + self.options.legend.plot + ); + if (elemOptions.type == "square") { + elemOptions.attrs.width = elemOptions.size; + elemOptions.attrs.height = elemOptions.size; + elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.size - self.plots[id].mapElem.attrs.width) / 2; + elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.size - self.plots[id].mapElem.attrs.height) / 2; + } else if (elemOptions.type == "image") { + elemOptions.attrs.width = elemOptions.width; + elemOptions.attrs.height = elemOptions.height; + elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.width - self.plots[id].mapElem.attrs.width) / 2; + elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.height - self.plots[id].mapElem.attrs.height) / 2; + } else if (elemOptions.type == "svg") { + if (elemOptions.attrs.transform !== undefined) { + elemOptions.attrs.transform = self.plots[id].mapElem.baseTransform + elemOptions.attrs.transform; + } + }else { // Default : circle + elemOptions.attrs.r = elemOptions.size / 2; + } + + self.updateElem(elemOptions, self.plots[id], animDuration); + } + }); + + // Update links attributes and tooltips + $.each(self.links, function (id) { + // Avoid updating unchanged elements + if ((typeof opt.mapOptions === "object" && + ( + (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultLink === "object") + || (typeof opt.mapOptions.links === "object" && typeof opt.mapOptions.links[id] === "object") + )) + || opt.replaceOptions === true + ) { + var elemOptions = self.getElemOptions( + self.options.map.defaultLink, + (self.options.links[id] ? self.options.links[id] : {}), + {} + ); + + self.updateElem(elemOptions, self.links[id], animDuration); + } + }); + + // Update legends + if (opt.mapOptions && ( + (typeof opt.mapOptions.legend === "object") + || (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultArea === "object") + || (typeof opt.mapOptions.map === "object" && typeof opt.mapOptions.map.defaultPlot === "object") + )) { + // Show all elements on the map before updating the legends + $("[data-type='elem']", self.$container).each(function (id, elem) { + if ($(elem).attr('data-hidden') === "1") { + $(elem).trigger("click." + pluginName, [false, animDuration]); + } + }); + + self.createLegends("area", self.areas, 1); + if (self.options.map.width) { + self.createLegends("plot", self.plots, (self.options.map.width / self.mapConf.width)); + } else { + self.createLegends("plot", self.plots, (self.$map.width() / self.mapConf.width)); + } + } + + // Hide/Show all elements based on showlegendElems + // Toggle (i.e. click) only if: + // - slice legend is shown AND we want to hide + // - slice legend is hidden AND we want to show + if (typeof opt.setLegendElemsState === "object") { + // setLegendElemsState is an object listing the legend we want to hide/show + $.each(opt.setLegendElemsState, function (legendCSSClass, action) { + // Search for the legend + var $legend = self.$container.find("." + legendCSSClass)[0]; + if ($legend !== undefined) { + // Select all elem inside this legend + $("[data-type='elem']", $legend).each(function (id, elem) { + if (($(elem).attr('data-hidden') === "0" && action === "hide") || + ($(elem).attr('data-hidden') === "1" && action === "show")) { + // Toggle state of element by clicking + $(elem).trigger("click." + pluginName, [false, animDuration]); + } + }); + } + }); + } else { + // setLegendElemsState is a string, or is undefined + // Default : "show" + var action = (opt.setLegendElemsState === "hide") ? "hide" : "show"; + + $("[data-type='elem']", self.$container).each(function (id, elem) { + if (($(elem).attr('data-hidden') === "0" && action === "hide") || + ($(elem).attr('data-hidden') === "1" && action === "show")) { + // Toggle state of element by clicking + $(elem).trigger("click." + pluginName, [false, animDuration]); + } + }); + } + if (opt.afterUpdate) opt.afterUpdate(self.$container, self.paper, self.areas, self.plots, self.options); + }, + + /* + * Draw all links between plots on the paper + */ + drawLinksCollection: function (linksCollection) { + var self = this; + var p1 = {}; + var p2 = {}; + var coordsP1 = {}; + var coordsP2 = {}; + var links = {}; + + $.each(linksCollection, function (id) { + var elemOptions = self.getElemOptions(self.options.map.defaultLink, linksCollection[id], {}); + + if (typeof linksCollection[id].between[0] == 'string') { + p1 = self.options.plots[linksCollection[id].between[0]]; + } else { + p1 = linksCollection[id].between[0]; + } + + if (typeof linksCollection[id].between[1] == 'string') { + p2 = self.options.plots[linksCollection[id].between[1]]; + } else { + p2 = linksCollection[id].between[1]; + } + + if (p1.latitude !== undefined && p1.longitude !== undefined) { + coordsP1 = self.mapConf.getCoords(p1.latitude, p1.longitude); + } else { + coordsP1.x = p1.x; + coordsP1.y = p1.y; + } + + if (p2.latitude !== undefined && p2.longitude !== undefined) { + coordsP2 = self.mapConf.getCoords(p2.latitude, p2.longitude); + } else { + coordsP2.x = p2.x; + coordsP2.y = p2.y; + } + links[id] = self.drawLink(id, coordsP1.x, coordsP1.y, coordsP2.x, coordsP2.y, elemOptions); + }); + return links; + }, + + /* + * Draw a curved link between two couples of coordinates a(xa,ya) and b(xb, yb) on the paper + */ + drawLink: function (id, xa, ya, xb, yb, elemOptions) { + var self = this; + var elem = {}; + // Compute the "curveto" SVG point, d(x,y) + // c(xc, yc) is the center of (xa,ya) and (xb, yb) + var xc = (xa + xb) / 2; + var yc = (ya + yb) / 2; + + // Equation for (cd) : y = acd * x + bcd (d is the cure point) + var acd = -1 / ((yb - ya) / (xb - xa)); + var bcd = yc - acd * xc; + + // dist(c,d) = dist(a,b) (=abDist) + var abDist = Math.sqrt((xb - xa) * (xb - xa) + (yb - ya) * (yb - ya)); + + // Solution for equation dist(cd) = sqrt((xd - xc)² + (yd - yc)²) + // dist(c,d)² = (xd - xc)² + (yd - yc)² + // We assume that dist(c,d) = dist(a,b) + // so : (xd - xc)² + (yd - yc)² - dist(a,b)² = 0 + // With the factor : (xd - xc)² + (yd - yc)² - (factor*dist(a,b))² = 0 + // (xd - xc)² + (acd*xd + bcd - yc)² - (factor*dist(a,b))² = 0 + var a = 1 + acd * acd; + var b = -2 * xc + 2 * acd * bcd - 2 * acd * yc; + var c = xc * xc + bcd * bcd - bcd * yc - yc * bcd + yc * yc - ((elemOptions.factor * abDist) * (elemOptions.factor * abDist)); + var delta = b * b - 4 * a * c; + var x = 0; + var y = 0; + + // There are two solutions, we choose one or the other depending on the sign of the factor + if (elemOptions.factor > 0) { + x = (-b + Math.sqrt(delta)) / (2 * a); + y = acd * x + bcd; + } else { + x = (-b - Math.sqrt(delta)) / (2 * a); + y = acd * x + bcd; + } + + elem.mapElem = self.paper.path("m " + xa + "," + ya + " C " + x + "," + y + " " + xb + "," + yb + " " + xb + "," + yb + "").attr(elemOptions.attrs); + self.initElem(elem, elemOptions, id); + + return elem; + }, + + /* + * Update the element "elem" on the map with the new elemOptions options + */ + updateElem: function (elemOptions, elem, animDuration) { + var self = this; + var bbox = elem.mapElem.getBBox(); + var textPosition; + var plotOffsetX; + var plotOffsetY; + + if (elemOptions.value !== undefined) + elem.value = elemOptions.value; + + // Update the label + if (elem.textElem) { + if (elemOptions.text !== undefined && elemOptions.text.content !== undefined && elemOptions.text.content != elem.textElem.attrs.text) + elem.textElem.attr({text: elemOptions.text.content}); + + if (elemOptions.size || (elemOptions.width && elemOptions.height)) { + if (elemOptions.type == "image" || elemOptions.type == "svg") { + plotOffsetX = (elemOptions.width - bbox.width) / 2; + plotOffsetY = (elemOptions.height - bbox.height) / 2; + } else { + plotOffsetX = (elemOptions.size - bbox.width) / 2; + plotOffsetY = (elemOptions.size - bbox.height) / 2; + } + bbox.x -= plotOffsetX; + bbox.x2 += plotOffsetX; + bbox.y -= plotOffsetY; + bbox.y2 += plotOffsetY; + } + + textPosition = self.getTextPosition(bbox, elemOptions.text.position, elemOptions.text.margin); + if (textPosition.x != elem.textElem.attrs.x || textPosition.y != elem.textElem.attrs.y) { + if (animDuration > 0) { + elem.textElem.attr({"text-anchor": textPosition.textAnchor}); + elem.textElem.animate({x: textPosition.x, y: textPosition.y}, animDuration); + } else + elem.textElem.attr({ + x: textPosition.x, + y: textPosition.y, + "text-anchor": textPosition.textAnchor + }); + } + + self.setHoverOptions(elem.textElem, elemOptions.text.attrs, elemOptions.text.attrsHover); + if (animDuration > 0) + elem.textElem.animate(elemOptions.text.attrs, animDuration); + else + elem.textElem.attr(elemOptions.text.attrs); + } + + // Update elements attrs and attrsHover + self.setHoverOptions(elem.mapElem, elemOptions.attrs, elemOptions.attrsHover); + if (animDuration > 0) + elem.mapElem.animate(elemOptions.attrs, animDuration); + else + elem.mapElem.attr(elemOptions.attrs); + + // Update dimensions of SVG plots + if (elemOptions.type == "svg") { + elem.mapElem.transform("m" + (elemOptions.width / elem.mapElem.originalWidth) + ",0,0," + (elemOptions.height / elem.mapElem.originalHeight) + "," + bbox.x + "," + bbox.y); + } + + // Update the tooltip + if (elemOptions.tooltip) { + if (elem.mapElem.tooltip === undefined) { + self.setTooltip(elem.mapElem); + if (elem.textElem) self.setTooltip(elem.textElem); + } + elem.mapElem.tooltip = elemOptions.tooltip; + if (elem.textElem) elem.textElem.tooltip = elemOptions.tooltip; + } + + // Update the link + if (elemOptions.href !== undefined) { + if (elem.mapElem.href === undefined) { + self.setHref(elem.mapElem); + if (elem.textElem) self.setHref(elem.textElem); + } + elem.mapElem.href = elemOptions.href; + elem.mapElem.target = elemOptions.target; + if (elem.textElem) { + elem.textElem.href = elemOptions.href; + elem.textElem.target = elemOptions.target; + } + } + }, + + /* + * Draw the plot + */ + drawPlot: function (id) { + var self = this; + var plot = {}; + var coords = {}; + var elemOptions = self.getElemOptions( + self.options.map.defaultPlot, + (self.options.plots[id] ? self.options.plots[id] : {}), + self.options.legend.plot + ); + + if (elemOptions.x !== undefined && elemOptions.y !== undefined) + coords = {x: elemOptions.x, y: elemOptions.y}; + else + coords = self.mapConf.getCoords(elemOptions.latitude, elemOptions.longitude); + + if (elemOptions.type == "square") { + plot = { + "mapElem": self.paper.rect( + coords.x - (elemOptions.size / 2), + coords.y - (elemOptions.size / 2), + elemOptions.size, + elemOptions.size + ).attr(elemOptions.attrs) + }; + } else if (elemOptions.type == "image") { + plot = { + "mapElem": self.paper.image( + elemOptions.url, + coords.x - elemOptions.width / 2, + coords.y - elemOptions.height / 2, + elemOptions.width, + elemOptions.height + ).attr(elemOptions.attrs) + }; + } else if (elemOptions.type == "svg") { + if (elemOptions.attrs.transform === undefined) { + elemOptions.attrs.transform = ""; + } + + plot = {"mapElem": self.paper.path(elemOptions.path)}; + plot.mapElem.originalWidth = plot.mapElem.getBBox().width; + plot.mapElem.originalHeight = plot.mapElem.getBBox().height; + + plot.mapElem.baseTransform = "m" + (elemOptions.width / plot.mapElem.originalWidth) + ",0,0," + (elemOptions.height / plot.mapElem.originalHeight) + "," + (coords.x - elemOptions.width / 2) + "," + (coords.y - elemOptions.height / 2); + elemOptions.attrs.transform = plot.mapElem.baseTransform + elemOptions.attrs.transform; + plot.mapElem.attr(elemOptions.attrs); + } else { // Default = circle + plot = {"mapElem": self.paper.circle(coords.x, coords.y, elemOptions.size / 2).attr(elemOptions.attrs)}; + } + self.initElem(plot, elemOptions, id); + return plot; + }, + + /* + * Set target link on elem + */ + setHref: function (elem) { + var self = this; + elem.attr({cursor: "pointer"}); + $(elem.node).on("click." + pluginName, function () { + if (!self.panning && elem.href) + window.open(elem.href, elem.target); + }); + }, + + /* + * Set a tooltip for the areas and plots + * @param elem area or plot element + * @param content the content to set in the tooltip + */ + setTooltip: function (elem) { + var self = this; + var tooltipTO = 0; + var cssClass = self.$tooltip.attr('class'); + + + + var updateTooltipPosition = function (x, y) { + + var offsetLeft = 10; + var offsetTop = 20; + + if (typeof elem.tooltip.offset === "object") { + if (typeof elem.tooltip.offset.left !== "undefined") { + offsetLeft = elem.tooltip.offset.left; + } + if (typeof elem.tooltip.offset.top !== "undefined") { + offsetTop = elem.tooltip.offset.top; + } + } + + var tooltipPosition = { + "left": Math.min(self.$map.width() - self.$tooltip.outerWidth() - 5, x - self.$map.offset().left + offsetLeft), + "top": Math.min(self.$map.height() - self.$tooltip.outerHeight() - 5, y - self.$map.offset().top + offsetTop) + }; + + if (typeof elem.tooltip.overflow === "object") { + if (elem.tooltip.overflow.right === true) { + tooltipPosition.left = x - self.$map.offset().left + 10; + } + if (selem.tooltip.overflow.bottom === true) { + tooltipPosition.top = y - self.$map.offset().top + 20; + } + } + + self.$tooltip.css(tooltipPosition); + }; + + $(elem.node).on("mouseover." + pluginName, function (e) { + tooltipTO = setTimeout( + function () { + self.$tooltip.attr("class", cssClass); + if (elem.tooltip !== undefined) { + if (elem.tooltip.content !== undefined) { + // if tooltip.content is function, call it. Otherwise, assign it directly. + var content = (typeof elem.tooltip.content === "function") ? elem.tooltip.content(elem) : elem.tooltip.content; + self.$tooltip.html(content).css("display", "block"); + } + if (elem.tooltip.cssClass !== undefined) { + self.$tooltip.addClass(elem.tooltip.cssClass); + } + } + updateTooltipPosition(e.pageX, e.pageY); + }, 120 + ); + }).on("mouseout." + pluginName, function () { + clearTimeout(tooltipTO); + self.$tooltip.css("display", "none"); + }).on("mousemove." + pluginName, function (e) { + updateTooltipPosition(e.pageX, e.pageY); + }); + }, + + /* + * Set user defined handlers for events on areas and plots + * @param id the id of the element + * @param elemOptions the element parameters + * @param mapElem the map element to set callback on + * @param textElem the optional text within the map element + */ + setEventHandlers: function (id, elemOptions, mapElem, textElem) { + var self = this; + $.each(elemOptions.eventHandlers, function (event) { + (function (event) { + $(mapElem.node).on(event, function (e) { + if (!self.panning) elemOptions.eventHandlers[event](e, id, mapElem, textElem, elemOptions); + }); + if (textElem) { + $(textElem.node).on(event, function (e) { + if (!self.panning) elemOptions.eventHandlers[event](e, id, mapElem, textElem, elemOptions); + }); + } + })(event); + }); + }, + + /* + * Draw a legend for areas and / or plots + * @param legendOptions options for the legend to draw + * @param legendType the type of the legend : "area" or "plot" + * @param elems collection of plots or areas on the maps + * @param legendIndex index of the legend in the conf array + */ + drawLegend: function (legendOptions, legendType, elems, scale, legendIndex) { + var self = this; + var $legend = {}; + var legendPaper = {}; + var width = 0; + var height = 0; + var title = null; + var elem = {}; + var elemBBox = {}; + var label = {}; + var i = 0; + var x = 0; + var y = 0; + var yCenter = 0; + var sliceOptions = []; + var length = 0; + + $legend = $("." + legendOptions.cssClass, self.$container).empty(); + legendPaper = new Raphael($legend.get(0)); + // Set some data to object + $(legendPaper.canvas).attr({"data-type": legendType, "data-index": legendIndex}); + + height = width = 0; + + // Set the title of the legend + if (legendOptions.title && legendOptions.title !== "") { + title = legendPaper.text(legendOptions.marginLeftTitle, 0, legendOptions.title).attr(legendOptions.titleAttrs); + title.attr({y: 0.5 * title.getBBox().height}); + + width = legendOptions.marginLeftTitle + title.getBBox().width; + height += legendOptions.marginBottomTitle + title.getBBox().height; + } + + // Calculate attrs (and width, height and r (radius)) for legend elements, and yCenter for horizontal legends + + for (i = 0, length = legendOptions.slices.length; i < length; ++i) { + var yCenterCurrent = 0; + + sliceOptions[i] = $.extend(true, {}, (legendType == "plot") ? self.options.map.defaultPlot : self.options.map.defaultArea, legendOptions.slices[i]); + + if (legendOptions.slices[i].legendSpecificAttrs === undefined) { + legendOptions.slices[i].legendSpecificAttrs = {}; + } + + $.extend(true, sliceOptions[i].attrs, legendOptions.slices[i].legendSpecificAttrs); + + if (legendType == "area") { + if (sliceOptions[i].attrs.width === undefined) + sliceOptions[i].attrs.width = 30; + if (sliceOptions[i].attrs.height === undefined) + sliceOptions[i].attrs.height = 20; + } else if (sliceOptions[i].type == "square") { + if (sliceOptions[i].attrs.width === undefined) + sliceOptions[i].attrs.width = sliceOptions[i].size; + if (sliceOptions[i].attrs.height === undefined) + sliceOptions[i].attrs.height = sliceOptions[i].size; + } else if (sliceOptions[i].type == "image" || sliceOptions[i].type == "svg") { + if (sliceOptions[i].attrs.width === undefined) + sliceOptions[i].attrs.width = sliceOptions[i].width; + if (sliceOptions[i].attrs.height === undefined) + sliceOptions[i].attrs.height = sliceOptions[i].height; + } else { + if (sliceOptions[i].attrs.r === undefined) + sliceOptions[i].attrs.r = sliceOptions[i].size / 2; + } + + + + // Compute yCenter for this legend slice + yCenterCurrent = legendOptions.marginBottomTitle; + // Add title height if it exists + if (title) { + yCenterCurrent += title.getBBox().height; + } + if (legendType == "plot" && (sliceOptions[i].type === undefined || sliceOptions[i].type == "circle")) { + yCenterCurrent += scale * sliceOptions[i].attrs.r; + } else { + yCenterCurrent += scale * sliceOptions[i].attrs.height / 2; + } + // Update yCenter if current larger + yCenter = Math.max(yCenter, yCenterCurrent); + } + + if (legendOptions.mode == "horizontal") { + width = legendOptions.marginLeft; + } + + // Draw legend elements (circle, square or image in vertical or horizontal mode) + for (i = 0, length = sliceOptions.length; i < length; ++i) { + if (sliceOptions[i].display === undefined || sliceOptions[i].display === true) { + if (legendType == "area") { + if (legendOptions.mode == "horizontal") { + x = width + legendOptions.marginLeft; + y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); + } else { + x = legendOptions.marginLeft; + y = height; + } + + elem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height)); + } else if (sliceOptions[i].type == "square") { + if (legendOptions.mode == "horizontal") { + x = width + legendOptions.marginLeft; + y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); + } else { + x = legendOptions.marginLeft; + y = height; + } + + elem = legendPaper.rect(x, y, scale * (sliceOptions[i].attrs.width), scale * (sliceOptions[i].attrs.height)); + + } else if (sliceOptions[i].type == "image" || sliceOptions[i].type == "svg") { + if (legendOptions.mode == "horizontal") { + x = width + legendOptions.marginLeft; + y = yCenter - (0.5 * scale * sliceOptions[i].attrs.height); + } else { + x = legendOptions.marginLeft; + y = height; + } + + if (sliceOptions[i].type == "image") { + elem = legendPaper.image( + sliceOptions[i].url, x, y, scale * sliceOptions[i].attrs.width, scale * sliceOptions[i].attrs.height); + } else { + elem = legendPaper.path(sliceOptions[i].path); + + if (sliceOptions[i].attrs.transform === undefined) { + sliceOptions[i].attrs.transform = ""; + } + sliceOptions[i].attrs.transform = "m" + ((scale * sliceOptions[i].width) / elem.getBBox().width) + ",0,0," + ((scale * sliceOptions[i].height) / elem.getBBox().height) + "," + x + "," + y + sliceOptions[i].attrs.transform; + } + } else { + if (legendOptions.mode == "horizontal") { + x = width + legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r); + y = yCenter; + } else { + x = legendOptions.marginLeft + scale * (sliceOptions[i].attrs.r); + y = height + scale * (sliceOptions[i].attrs.r); + } + elem = legendPaper.circle(x, y, scale * (sliceOptions[i].attrs.r)); + } + + // Set attrs to the element drawn above + delete sliceOptions[i].attrs.width; + delete sliceOptions[i].attrs.height; + delete sliceOptions[i].attrs.r; + elem.attr(sliceOptions[i].attrs); + elemBBox = elem.getBBox(); + + // Draw the label associated with the element + if (legendOptions.mode == "horizontal") { + x = width + legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel; + y = yCenter; + } else { + x = legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel; + y = height + (elemBBox.height / 2); + } + + label = legendPaper.text(x, y, sliceOptions[i].label).attr(legendOptions.labelAttrs); + + // Update the width and height for the paper + if (legendOptions.mode == "horizontal") { + var currentHeight = legendOptions.marginBottom + elemBBox.height; + width += legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel + label.getBBox().width; + if (sliceOptions[i].type != "image" && legendType != "area") { + currentHeight += legendOptions.marginBottomTitle; + } + // Add title height if it exists + if (title) { + currentHeight += title.getBBox().height; + } + height = Math.max(height, currentHeight); + } else { + width = Math.max(width, legendOptions.marginLeft + elemBBox.width + legendOptions.marginLeftLabel + label.getBBox().width); + height += legendOptions.marginBottom + elemBBox.height; + } + + $(elem.node).attr({"data-type": "elem", "data-index": i, "data-hidden": 0}); + $(label.node).attr({"data-type": "label", "data-index": i, "data-hidden": 0}); + + // Hide map elements when the user clicks on a legend item + if (legendOptions.hideElemsOnClick.enabled) { + // Hide/show elements when user clicks on a legend element + label.attr({cursor: "pointer"}); + elem.attr({cursor: "pointer"}); + + self.setHoverOptions(elem, sliceOptions[i].attrs, sliceOptions[i].attrs); + self.setHoverOptions(label, legendOptions.labelAttrs, legendOptions.labelAttrsHover); + self.setHover(elem, label); + self.handleClickOnLegendElem(legendOptions, sliceOptions[i], label, elem, elems, legendIndex); + } + } + } + + // VMLWidth option allows you to set static width for the legend + // only for VML render because text.getBBox() returns wrong values on IE6/7 + if (Raphael.type != "SVG" && legendOptions.VMLWidth) + width = legendOptions.VMLWidth; + + legendPaper.setSize(width, height); + }, + + /* + * Allow to hide elements of the map when the user clicks on a related legend item + * @param legendOptions options for the legend to draw + * @param sliceOptions options of the slice + * @param label label of the legend item + * @param elem element of the legend item + * @param elems collection of plots or areas displayed on the map + * @param legendIndex index of the legend in the conf array + */ + handleClickOnLegendElem: function (legendOptions, sliceOptions, label, elem, elems, legendIndex) { + var self = this; + var hideMapElems = function (e, hideOtherElems, animDuration) { + var elemValue = 0; + var hidden = $(label.node).attr('data-hidden'); + var hiddenNewAttr = (hidden === '0') ? {"data-hidden": '1'} : {"data-hidden": '0'}; + + // Check animDuration: if not set, this is a regular click, use the value specified in options + if (animDuration === undefined) animDuration = legendOptions.hideElemsOnClick.animDuration; + + if (hidden === '0') { + if (animDuration > 0) label.animate({"opacity": 0.5}, animDuration); + else label.attr({"opacity": 0.5}); + } else { + if (animDuration > 0) label.animate({"opacity": 1}, animDuration); + else label.attr({"opacity": 1}); + } + + $.each(elems, function (id) { + // Retreive stored data of element + // 'hidden-by' contains the list of legendIndex that is hiding this element + var hiddenBy = elems[id].mapElem.data('hidden-by'); + // Set to empty object if undefined + if (hiddenBy === undefined) hiddenBy = {}; + + if ($.isArray(elems[id].value)) { + elemValue = elems[id].value[legendIndex]; + } else { + elemValue = elems[id].value; + } + + if ((sliceOptions.sliceValue !== undefined && elemValue == sliceOptions.sliceValue) + || ((sliceOptions.sliceValue === undefined) + && (sliceOptions.min === undefined || elemValue >= sliceOptions.min) + && (sliceOptions.max === undefined || elemValue <= sliceOptions.max)) + ) { + (function (id) { + if (hidden === '0') { // we want to hide this element + hiddenBy[legendIndex] = true; // add legendIndex to the data object for later use + self.setElementOpacity(elems[id], legendOptions.hideElemsOnClick.opacity, animDuration); + } else { // We want to show this element + delete hiddenBy[legendIndex]; // Remove this legendIndex from object + // Check if another legendIndex is defined + // We will show this element only if no legend is no longer hiding it + if ($.isEmptyObject(hiddenBy)) { + self.setElementOpacity( + elems[id], + elems[id].mapElem.originalAttrs.opacity !== undefined ? elems[id].mapElem.originalAttrs.opacity : 1, + animDuration + ); + } + } + // Update elem data with new values + elems[id].mapElem.data('hidden-by', hiddenBy); + })(id); + } + }); + + $(elem.node).attr(hiddenNewAttr); + $(label.node).attr(hiddenNewAttr); + + if ((hideOtherElems === undefined || hideOtherElems === true) + && legendOptions.exclusive !== undefined && legendOptions.exclusive === true + ) { + $("[data-type='elem'][data-hidden=0]", self.$container).each(function () { + if ($(this).attr('data-index') !== $(elem.node).attr('data-index')) { + $(this).trigger("click." + pluginName, false); + } + }); + } + }; + $(label.node).on("click." + pluginName, hideMapElems); + $(elem.node).on("click." + pluginName, hideMapElems); + + if (sliceOptions.clicked !== undefined && sliceOptions.clicked === true) { + $(elem.node).trigger("click." + pluginName, false); + } + }, + + /* + * Create all legends for a specified type (area or plot) + * @param legendType the type of the legend : "area" or "plot" + * @param elems collection of plots or areas displayed on the map + * @param scale scale ratio of the map + */ + createLegends: function (legendType, elems, scale) { + var self = this; + var legendsOptions = self.options.legend[legendType]; + + if (!$.isArray(self.options.legend[legendType])) { + legendsOptions = [self.options.legend[legendType]]; + } + + for (var j = 0; j < legendsOptions.length; ++j) { + // Check for class existence + if (legendsOptions[j].cssClass === "" || $("." + legendsOptions[j].cssClass, self.$container).length === 0) { + throw new Error("The legend class `" + legendsOptions[j].cssClass + "` doesn't exists."); + } + if (legendsOptions[j].display === true && $.isArray(legendsOptions[j].slices) && legendsOptions[j].slices.length > 0) { + self.drawLegend(legendsOptions[j], legendType, elems, scale, j); + } + } + }, + + /* + * Set the attributes on hover and the attributes to restore for a map element + * @param elem the map element + * @param originalAttrs the original attributes to restore on mouseout event + * @param attrsHover the attributes to set on mouseover event + */ + setHoverOptions: function (elem, originalAttrs, attrsHover) { + // Disable transform option on hover for VML (IE<9) because of several bugs + if (Raphael.type != "SVG") delete attrsHover.transform; + elem.attrsHover = attrsHover; + + if (elem.attrsHover.transform) elem.originalAttrs = $.extend({transform: "s1"}, originalAttrs); + else elem.originalAttrs = originalAttrs; + }, + + /* + * Set the hover behavior (mouseover & mouseout) for plots and areas + * @param mapElem the map element + * @param textElem the optional text element (within the map element) + */ + setHover: function (mapElem, textElem) { + var self = this; + var $mapElem = {}; + var $textElem = {}; + var mouseoverTimeout = 0; + var mouseoutTimeout = 0; + var overBehaviour = function () { + clearTimeout(mouseoutTimeout); + mouseoverTimeout = setTimeout(function () { + self.elemHover(mapElem, textElem); + }, 120); + }; + var outBehaviour = function () { + clearTimeout(mouseoverTimeout); + mouseoutTimeout = setTimeout(function(){ + self.elemOut(mapElem, textElem); + }, 120); + }; + + $mapElem = $(mapElem.node); + $mapElem.on("mouseover." + pluginName, overBehaviour); + $mapElem.on("mouseout." + pluginName, outBehaviour); + + if (textElem) { + $textElem = $(textElem.node); + $textElem.on("mouseover." + pluginName, overBehaviour); + $(textElem.node).on("mouseout." + pluginName, outBehaviour); + } + }, + + /* + * Remove the hover behavior for plots and areas + * @param mapElem the map element + * @param textElem the optional text element (within the map element) + */ + unsetHover: function (mapElem, textElem) { + $(mapElem.node).off("." + pluginName); + if (textElem) $(textElem.node).off("." + pluginName); + }, + + /* + * Set he behaviour for "mouseover" event + * @param mapElem mapElem the map element + * @param textElem the optional text element (within the map element) + */ + elemHover: function (mapElem, textElem) { + var self = this; + // Set mapElem + if (mapElem.attrsHover.animDuration > 0) mapElem.animate(mapElem.attrsHover, mapElem.attrsHover.animDuration); + else mapElem.attr(mapElem.attrsHover); + // Set textElem + if (textElem) { + if (textElem.attrsHover.animDuration > 0) textElem.animate(textElem.attrsHover, textElem.attrsHover.animDuration); + else textElem.attr(textElem.attrsHover); + } + // workaround for older version of Raphael + if (self.paper.safari) self.paper.safari(); + }, + + /* + * Set he behaviour for "mouseout" event + * @param mapElem the map element + * @param textElem the optional text element (within the map element) + */ + elemOut: function (mapElem, textElem) { + var self = this; + // Set mapElem + if (mapElem.attrsHover.animDuration > 0) mapElem.animate(mapElem.originalAttrs, mapElem.attrsHover.animDuration); + else mapElem.attr(mapElem.originalAttrs); + // Set textElem + if (textElem) { + if (textElem.attrsHover.animDuration > 0) textElem.animate(textElem.originalAttrs, textElem.attrsHover.animDuration); + else textElem.attr(textElem.originalAttrs); + } + + // workaround for older version of Raphael + if (self.paper.safari) self.paper.safari(); + }, + + /* + * Get element options by merging default options, element options and legend options + * @param defaultOptions + * @param elemOptions + * @param legendOptions + */ + getElemOptions: function (defaultOptions, elemOptions, legendOptions) { + var self = this; + var options = $.extend(true, {}, defaultOptions, elemOptions); + if (options.value !== undefined) { + if ($.isArray(legendOptions)) { + for (var i = 0, length = legendOptions.length; i < length; ++i) { + options = $.extend(true, {}, options, self.getLegendSlice(options.value[i], legendOptions[i])); + } + } else { + options = $.extend(true, {}, options, self.getLegendSlice(options.value, legendOptions)); + } + } + return options; + }, + + /* + * Get the coordinates of the text relative to a bbox and a position + * @param bbox the boundary box of the element + * @param textPosition the wanted text position (inner, right, left, top or bottom) + * @param margin number or object {x: val, y:val} margin between the bbox and the text + */ + getTextPosition: function (bbox, textPosition, margin) { + var textX = 0; + var textY = 0; + var textAnchor = ""; + + if (typeof margin === "number") { + if (textPosition === "bottom" || textPosition === "top") { + margin = {x: 0, y: margin}; + } else if (textPosition === "right" || textPosition === "left") { + margin = {x: margin, y: 0}; + } else { + margin = {x: 0, y: 0}; + } + } + + switch (textPosition) { + case "bottom" : + textX = ((bbox.x + bbox.x2) / 2) + margin.x; + textY = bbox.y2 + margin.y; + textAnchor = "middle"; + break; + case "top" : + textX = ((bbox.x + bbox.x2) / 2) + margin.x; + textY = bbox.y - margin.y; + textAnchor = "middle"; + break; + case "left" : + textX = bbox.x - margin.x; + textY = ((bbox.y + bbox.y2) / 2) + margin.y; + textAnchor = "end"; + break; + case "right" : + textX = bbox.x2 + margin.x; + textY = ((bbox.y + bbox.y2) / 2) + margin.y; + textAnchor = "start"; + break; + default : // "inner" position + textX = ((bbox.x + bbox.x2) / 2) + margin.x; + textY = ((bbox.y + bbox.y2) / 2) + margin.y; + textAnchor = "middle"; + } + return {"x": textX, "y": textY, "textAnchor": textAnchor}; + }, + + /* + * Get the legend conf matching with the value + * @param value the value to match with a slice in the legend + * @param legend the legend params object + * @return the legend slice matching with the value + */ + getLegendSlice: function (value, legend) { + for (var i = 0, length = legend.slices.length; i < length; ++i) { + if ((legend.slices[i].sliceValue !== undefined && value == legend.slices[i].sliceValue) + || ((legend.slices[i].sliceValue === undefined) + && (legend.slices[i].min === undefined || value >= legend.slices[i].min) + && (legend.slices[i].max === undefined || value <= legend.slices[i].max)) + ) { + return legend.slices[i]; + } + } + return {}; + }, + + /* + * Animated view box changes + * As from http://code.voidblossom.com/animating-viewbox-easing-formulas/, + * (from https://github.com/theshaun works on mapael) + * @param x coordinate of the point to focus on + * @param y coordinate of the point to focus on + * @param w map defined width + * @param h map defined height + * @param duration defined length of time for animation + * @param easingFunction defined Raphael supported easing_formula to use + * @param callback method when animated action is complete + */ + animateViewBox: function (x, y, w, h, duration, easingFunction) { + var self = this; + var cx = self.paper._viewBox ? self.paper._viewBox[0] : 0; + var dx = x - cx; + var cy = self.paper._viewBox ? self.paper._viewBox[1] : 0; + var dy = y - cy; + var cw = self.paper._viewBox ? self.paper._viewBox[2] : self.paper.width; + var dw = w - cw; + var ch = self.paper._viewBox ? self.paper._viewBox[3] : self.paper.height; + var dh = h - ch; + var interval = 25; + var steps = duration / interval; + var currentStep = 0; + var easingFormula; + + easingFunction = easingFunction || "linear"; + easingFormula = Raphael.easing_formulas[easingFunction]; + + clearInterval(self.animationIntervalID); + + self.animationIntervalID = setInterval(function () { + var ratio = currentStep / steps; + self.paper.setViewBox(cx + dx * easingFormula(ratio), + cy + dy * easingFormula(ratio), + cw + dw * easingFormula(ratio), + ch + dh * easingFormula(ratio), false); + if (currentStep++ >= steps) { + clearInterval(self.animationIntervalID); + clearTimeout(self.zoomTO); + self.zoomTO = setTimeout(function () { + self.$map.trigger("afterZoom", {x1: x, y1: y, x2: (x + w), y2: (y + h)}); + }, 150); + } + }, interval + ); + }, + + /* + * Check for Raphael bug regarding drawing while beeing hidden (under display:none) + * See https://github.com/neveldo/jQuery-Mapael/issues/135 + * @return true/false + * + * Wants to override this behavior? Use prototype overriding: + * $.mapael.prototype.isRaphaelBBoxBugPresent = function() {return false;}; + */ + isRaphaelBBoxBugPresent: function(){ + var self = this; + // Draw text, then get its boundaries + var text_elem = self.paper.text(-50, -50, "TEST"); + var text_elem_bbox = text_elem.getBBox(); + // remove element + text_elem.remove(); + // If it has no height and width, then the paper is hidden + return (text_elem_bbox.width === 0 && text_elem_bbox.height === 0); + }, + + // Default map options + defaultOptions: { + map: { + cssClass: "map", + tooltip: { + cssClass: "mapTooltip" + }, + defaultArea: { + attrs: { + fill: "#343434", + stroke: "#5d5d5d", + "stroke-width": 1, + "stroke-linejoin": "round" + }, + attrsHover: { + fill: "#f38a03", + animDuration: 300 + }, + text: { + position: "inner", + margin: 10, + attrs: { + "font-size": 15, + fill: "#c7c7c7" + }, + attrsHover: { + fill: "#eaeaea", + "animDuration": 300 + } + }, + target: "_self" + }, + defaultPlot: { + type: "circle", + size: 15, + attrs: { + fill: "#0088db", + stroke: "#fff", + "stroke-width": 0, + "stroke-linejoin": "round" + }, + attrsHover: { + "stroke-width": 3, + animDuration: 300 + }, + text: { + position: "right", + margin: 10, + attrs: { + "font-size": 15, + fill: "#c7c7c7" + }, + attrsHover: { + fill: "#eaeaea", + animDuration: 300 + } + }, + target: "_self" + }, + defaultLink: { + factor: 0.5, + attrs: { + stroke: "#0088db", + "stroke-width": 2 + }, + attrsHover: { + animDuration: 300 + }, + text: { + position: "inner", + margin: 10, + attrs: { + "font-size": 15, + fill: "#c7c7c7" + }, + attrsHover: { + fill: "#eaeaea", + animDuration: 300 + } + }, + target: "_self" + }, + zoom: { + enabled: false, + minLevel: 0, + maxLevel: 10, + step: 0.25, + mousewheel: true, + touch: true, + animDuration: 200, + animEasing: "linear", + buttons: { + "reset": { + cssClass: "zoomButton zoomReset", + content: "&#8226;", // bullet sign + title: "Reset zoom" + }, + "in": { + cssClass: "zoomButton zoomIn", + content: "+", + title: "Zoom in" + }, + "out": { + cssClass: "zoomButton zoomOut", + content: "&#8722;", // minus sign + title: "Zoom out" + } + } + } + }, + legend: { + area: [], + plot: [] + }, + areas: {}, + plots: {}, + links: {} + }, + + // Default legends option + legendDefaultOptions: { + area: { + cssClass: "areaLegend", + display: true, + marginLeft: 10, + marginLeftTitle: 5, + marginBottomTitle: 10, + marginLeftLabel: 10, + marginBottom: 10, + titleAttrs: { + "font-size": 16, + fill: "#343434", + "text-anchor": "start" + }, + labelAttrs: { + "font-size": 12, + fill: "#343434", + "text-anchor": "start" + }, + labelAttrsHover: { + fill: "#787878", + animDuration: 300 + }, + hideElemsOnClick: { + enabled: true, + opacity: 0.2, + animDuration: 300 + }, + slices: [], + mode: "vertical" + }, + plot: { + cssClass: "plotLegend", + display: true, + marginLeft: 10, + marginLeftTitle: 5, + marginBottomTitle: 10, + marginLeftLabel: 10, + marginBottom: 10, + titleAttrs: { + "font-size": 16, + fill: "#343434", + "text-anchor": "start" + }, + labelAttrs: { + "font-size": 12, + fill: "#343434", + "text-anchor": "start" + }, + labelAttrsHover: { + fill: "#787878", + animDuration: 300 + }, + hideElemsOnClick: { + enabled: true, + opacity: 0.2, + animDuration: 300 + }, + slices: [], + mode: "vertical" + } + } + + }; + + // Extend jQuery with Mapael + if ($[pluginName] === undefined) $[pluginName] = Mapael; + + // Add jQuery DOM function + $.fn[pluginName] = function (options) { + // Call Mapael on each element + return this.each(function () { + // Avoid leaking problem on multiple instanciation by removing an old mapael object on a container + if ($.data(this, pluginName)) { + $.data(this, pluginName).destroy(); + } + // Create Mapael and save it as jQuery data + // This allow external access to Mapael using $(".mapcontainer").data("mapael") + $.data(this, pluginName, new Mapael(this, options)); + }); + }; + +})); diff --git a/plugins/jquery-mapael/jquery.mapael.min.js b/plugins/jquery-mapael/jquery.mapael.min.js new file mode 100644 index 0000000..f8c15fd --- /dev/null +++ b/plugins/jquery-mapael/jquery.mapael.min.js @@ -0,0 +1,14 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery, raphael.js and jquery.mousewheel + * + * Version: 2.0.0 + * + * Copyright (c) 2015 Vincent Brouté (http://www.vincentbroute.fr/mapael) + * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php). + * + * Thanks to Indigo744 + * + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("raphael"),require("mousewheel")):"function"==typeof define&&define.amd?define(["jquery","raphael","mousewheel"],a):a(jQuery,Raphael,jQuery.fn.mousewheel)}(function(a,b,c,d){"use strict";var e="mapael",f="2.0.0-dev",g=function(b,c){var d=this;d.container=b,d.$container=a(b),d.options=d.extendDefaultOptions(c),d.initialHTMLContent=d.$container.html(),d.zoomTO=0,d.zoomCenterX=0,d.zoomCenterY=0,d.previousPinchDist=0,d.zoomData={zoomLevel:0,zoomX:0,zoomY:0,panX:0,panY:0},d.resizeTO=0,d.panning=!1,d.panningTO=0,d.animationIntervalID=null,d.$map={},d.$tooltip={},d.paper={},d.areas={},d.plots={},d.links={},d.mapConf={},d.init()};g.prototype={version:f,init:function(){var c=this;if(""===c.options.map.cssClass||0===a("."+c.options.map.cssClass,c.container).length)throw new Error("The map class `"+c.options.map.cssClass+"` doesn't exists");if(c.$tooltip=a("<div>").addClass(c.options.map.tooltip.cssClass).css("display","none"),c.$map=a("."+c.options.map.cssClass,c.container).empty().append(c.$tooltip),a[e]&&a[e].maps&&a[e].maps[c.options.map.name])c.mapConf=a[e].maps[c.options.map.name];else{if(!(a.fn[e]&&a.fn[e].maps&&a.fn[e].maps[c.options.map.name]))throw new Error("Unknown map '"+c.options.map.name+"'");c.mapConf=a.fn[e].maps[c.options.map.name],window.console&&window.console.warn&&window.console.warn("Extending $.fn.mapael is deprecated (map '"+c.options.map.name+"')")}if(c.paper=new b(c.$map[0],c.mapConf.width,c.mapConf.height),c.isRaphaelBBoxBugPresent()===!0)throw c.destroy(),new Error("Can't get boundary box for text (is your container hidden? See #135)");c.$container.addClass(e),c.options.map.tooltip.css&&c.$tooltip.css(c.options.map.tooltip.css),c.paper.setViewBox(0,0,c.mapConf.width,c.mapConf.height,!1),c.options.map.width?(c.paper.setSize(c.options.map.width,c.mapConf.height*(c.options.map.width/c.mapConf.width)),c.createLegends("plot",c.plots,c.options.map.width/c.mapConf.width)):c.handleMapResizing(),a.each(c.mapConf.elems,function(a){var b=c.getElemOptions(c.options.map.defaultArea,c.options.areas[a]?c.options.areas[a]:{},c.options.legend.area);c.areas[a]={mapElem:c.paper.path(c.mapConf.elems[a]).attr(b.attrs)}}),c.options.map.beforeInit&&c.options.map.beforeInit(c.$container,c.paper,c.options),a.each(c.mapConf.elems,function(a){var b=c.getElemOptions(c.options.map.defaultArea,c.options.areas[a]?c.options.areas[a]:{},c.options.legend.area);c.initElem(c.areas[a],b,a)}),c.links=c.drawLinksCollection(c.options.links),a.each(c.options.plots,function(a){c.plots[a]=c.drawPlot(a)}),c.$container.on("zoom."+e,function(a,b){c.onZoomEvent(a,b)}),c.options.map.zoom.enabled&&c.initZoom(c.mapConf.width,c.mapConf.height,c.options.map.zoom),c.options.map.zoom.init!==d&&(c.options.map.zoom.init.animDuration===d&&(c.options.map.zoom.init.animDuration=0),c.$container.trigger("zoom."+e,c.options.map.zoom.init)),c.createLegends("area",c.areas,1),c.$container.on("update."+e,function(a,b){c.onUpdateEvent(a,b)}),c.$container.on("showElementsInRange."+e,function(a,b){c.onShowElementsInRange(a,b)}),c.options.map.afterInit&&c.options.map.afterInit(c.$container,c.paper,c.areas,c.plots,c.options),a(c.paper.desc).append(" and Mapael "+c.version+" (http://www.vincentbroute.fr/mapael/)")},destroy:function(){var b=this;b.$container.off("."+e),b.$container.empty(),b.onResizeEvent&&a(window).off("resize."+e,b.onResizeEvent),b.$container.html(b.initialHTMLContent),b.$container.removeClass(e),b.$container.removeData(e),b.container=d,b.$container=d,b.options=d,b.paper=d,b.$map=d,b.$tooltip=d,b.mapConf=d,b.areas=d,b.plots=d,b.links=d},handleMapResizing:function(){var b=this;b.onResizeEvent=function(){clearTimeout(b.resizeTO),b.resizeTO=setTimeout(function(){b.$map.trigger("resizeEnd."+e)},150)},a(window).on("resize."+e,b.onResizeEvent),b.$map.on("resizeEnd."+e,function(){var a=b.$map.width();if(b.paper.width!=a){var c=a/b.mapConf.width;b.paper.setSize(a,b.mapConf.height*c),b.createLegends("plot",b.plots,c)}}).trigger("resizeEnd."+e)},extendDefaultOptions:function(b){return b=a.extend(!0,{},g.prototype.defaultOptions,b),a.each(b.legend,function(c){if(a.isArray(b.legend[c]))for(var d=0;d<b.legend[c].length;++d)b.legend[c][d]=a.extend(!0,{},g.prototype.legendDefaultOptions[c],b.legend[c][d]);else b.legend[c]=a.extend(!0,{},g.prototype.legendDefaultOptions[c],b.legend[c])}),b},initElem:function(b,c,e){var f=this,g={},h={};c.value!==d&&(b.value=c.value),c.text&&c.text.content!==d&&(g=b.mapElem.getBBox(),h=f.getTextPosition(g,c.text.position,c.text.margin),c.text.attrs["text-anchor"]=h.textAnchor,b.textElem=f.paper.text(h.x,h.y,c.text.content).attr(c.text.attrs),a(b.textElem.node).attr("data-id",e)),c.eventHandlers&&f.setEventHandlers(e,c,b.mapElem,b.textElem),f.setHoverOptions(b.mapElem,c.attrs,c.attrsHover),b.textElem&&f.setHoverOptions(b.textElem,c.text.attrs,c.text.attrsHover),(a.isEmptyObject(c.attrsHover)===!1||b.textElem&&a.isEmptyObject(c.text.attrsHover)===!1)&&f.setHover(b.mapElem,b.textElem),c.tooltip&&(b.mapElem.tooltip=c.tooltip,f.setTooltip(b.mapElem),c.text&&c.text.content!==d&&(b.textElem.tooltip=c.tooltip,f.setTooltip(b.textElem))),c.href&&(b.mapElem.href=c.href,b.mapElem.target=c.target,f.setHref(b.mapElem),c.text&&c.text.content!==d&&(b.textElem.href=c.href,b.textElem.target=c.target,f.setHref(b.textElem))),a(b.mapElem.node).attr("data-id",e)},initZoom:function(b,c,f){var g=this,h=!1,i=0,j=0,k={reset:function(){g.$container.trigger("zoom."+e,{level:0})},"in":function(){g.$container.trigger("zoom."+e,{level:"+1"})},out:function(){g.$container.trigger("zoom."+e,{level:-1})}};a.extend(g.zoomData,{zoomLevel:0,panX:0,panY:0}),a.each(f.buttons,function(b,c){if(k[b]===d)throw new Error("Unknown zoom button '"+b+"'");var f=a("<div>").addClass(c.cssClass).html(c.content).attr("title",c.title);f.on("click."+e,k[b]),g.$map.append(f)}),g.options.map.zoom.mousewheel&&g.$map.on("mousewheel."+e,function(a){var b=a.deltaY>0?1:-1,c=g.mapPagePositionToXY(a.pageX,a.pageY);return g.$container.trigger("zoom."+e,{fixedCenter:!0,level:g.zoomData.zoomLevel+b,x:c.x,y:c.y}),!1}),g.options.map.zoom.touch&&(g.$map.on("touchstart."+e,function(a){2===a.originalEvent.touches.length&&(g.zoomCenterX=(a.originalEvent.touches[0].pageX+a.originalEvent.touches[1].pageX)/2,g.zoomCenterY=(a.originalEvent.touches[0].pageY+a.originalEvent.touches[1].pageY)/2,g.previousPinchDist=Math.sqrt(Math.pow(a.originalEvent.touches[1].pageX-a.originalEvent.touches[0].pageX,2)+Math.pow(a.originalEvent.touches[1].pageY-a.originalEvent.touches[0].pageY,2)))}),g.$map.on("touchmove."+e,function(a){var b=0,c=0;if(2===a.originalEvent.touches.length){if(b=Math.sqrt(Math.pow(a.originalEvent.touches[1].pageX-a.originalEvent.touches[0].pageX,2)+Math.pow(a.originalEvent.touches[1].pageY-a.originalEvent.touches[0].pageY,2)),Math.abs(b-g.previousPinchDist)>15){var d=g.mapPagePositionToXY(g.zoomCenterX,g.zoomCenterY);c=(b-g.previousPinchDist)/Math.abs(b-g.previousPinchDist),g.$container.trigger("zoom."+e,{fixedCenter:!0,level:g.zoomData.zoomLevel+c,x:d.x,y:d.y}),g.previousPinchDist=b}return!1}})),a("body").on("mouseup."+e+(f.touch?" touchend":""),function(){h=!1,setTimeout(function(){g.panning=!1},50)}),g.$map.on("mousedown."+e+(f.touch?" touchstart":""),function(a){a.pageX!==d?(h=!0,i=a.pageX,j=a.pageY):1===a.originalEvent.touches.length&&(h=!0,i=a.originalEvent.touches[0].pageX,j=a.originalEvent.touches[0].pageY)}).on("mousemove."+e+(f.touch?" touchmove":""),function(e){var k=g.zoomData.zoomLevel,l=0,m=0;if(e.pageX!==d?(l=e.pageX,m=e.pageY):1===e.originalEvent.touches.length?(l=e.originalEvent.touches[0].pageX,m=e.originalEvent.touches[0].pageY):h=!1,h&&0!==k){var n=(i-l)/(1+k*f.step)*(b/g.paper.width),o=(j-m)/(1+k*f.step)*(c/g.paper.height),p=Math.min(Math.max(0,g.paper._viewBox[0]+n),b-g.paper._viewBox[2]),q=Math.min(Math.max(0,g.paper._viewBox[1]+o),c-g.paper._viewBox[3]);return(Math.abs(n)>5||Math.abs(o)>5)&&(a.extend(g.zoomData,{panX:p,panY:q,zoomX:p+g.paper._viewBox[2]/2,zoomY:q+g.paper._viewBox[3]/2}),g.paper.setViewBox(p,q,g.paper._viewBox[2],g.paper._viewBox[3]),clearTimeout(g.panningTO),g.panningTO=setTimeout(function(){g.$map.trigger("afterPanning",{x1:p,y1:q,x2:p+g.paper._viewBox[2],y2:q+g.paper._viewBox[3]})},150),i=l,j=m,g.panning=!0),!1}})},mapPagePositionToXY:function(a,b){var c=this,d=c.$map.offset(),e=c.options.map.width?c.mapConf.width/c.options.map.width:c.mapConf.width/c.$map.width(),f=1/(1+c.zoomData.zoomLevel*c.options.map.zoom.step);return{x:f*e*(a-d.left)+c.zoomData.panX,y:f*e*(b-d.top)+c.zoomData.panY}},onZoomEvent:function(b,c){var e=this,f=e.zoomData.zoomLevel,g=0,h=0,i=1+e.zoomData.zoomLevel*e.options.map.zoom.step,j=0,k=c.animDuration!==d?c.animDuration:e.options.map.zoom.animDuration,l=0,m=0,n={};c.level!==d&&(f="string"==typeof c.level?"+"===c.level.slice(0,1)||"-"===c.level.slice(0,1)?e.zoomData.zoomLevel+parseInt(c.level):parseInt(c.level):c.level<0?e.zoomData.zoomLevel+c.level:c.level,f=Math.min(Math.max(f,e.options.map.zoom.minLevel),e.options.map.zoom.maxLevel)),j=1+f*e.options.map.zoom.step,c.latitude!==d&&c.longitude!==d&&(n=e.mapConf.getCoords(c.latitude,c.longitude),c.x=n.x,c.y=n.y),c.x===d&&(c.x=e.paper._viewBox[0]+e.paper._viewBox[2]/2),c.y===d&&(c.y=e.paper._viewBox[1]+e.paper._viewBox[3]/2),0===f?(g=0,h=0):c.fixedCenter!==d&&c.fixedCenter===!0?(l=e.zoomData.panX+(c.x-e.zoomData.panX)*(j-i)/j,m=e.zoomData.panY+(c.y-e.zoomData.panY)*(j-i)/j,g=Math.min(Math.max(0,l),e.mapConf.width-e.mapConf.width/j),h=Math.min(Math.max(0,m),e.mapConf.height-e.mapConf.height/j)):(g=Math.min(Math.max(0,c.x-e.mapConf.width/j/2),e.mapConf.width-e.mapConf.width/j),h=Math.min(Math.max(0,c.y-e.mapConf.height/j/2),e.mapConf.height-e.mapConf.height/j)),j==i&&g==e.zoomData.panX&&h==e.zoomData.panY||(k>0?e.animateViewBox(g,h,e.mapConf.width/j,e.mapConf.height/j,k,e.options.map.zoom.animEasing):(e.paper.setViewBox(g,h,e.mapConf.width/j,e.mapConf.height/j),clearTimeout(e.zoomTO),e.zoomTO=setTimeout(function(){e.$map.trigger("afterZoom",{x1:g,y1:h,x2:g+e.mapConf.width/j,y2:h+e.mapConf.height/j})},150)),a.extend(e.zoomData,{zoomLevel:f,panX:g,panY:h,zoomX:g+e.paper._viewBox[2]/2,zoomY:h+e.paper._viewBox[3]/2}))},onShowElementsInRange:function(a,b){var c=this;b.animDuration===d&&(b.animDuration=0),b.hiddenOpacity===d&&(b.hiddenOpacity=.3),b.ranges&&b.ranges.area&&c.showElemByRange(b.ranges.area,c.areas,b.hiddenOpacity,b.animDuration),b.ranges&&b.ranges.plot&&c.showElemByRange(b.ranges.plot,c.plots,b.hiddenOpacity,b.animDuration),b.ranges&&b.ranges.link&&c.showElemByRange(b.ranges.link,c.links,b.hiddenOpacity,b.animDuration),b.afterShowRange&&b.afterShowRange()},showElemByRange:function(b,c,e,f){var g=this,h={};b.min===d&&b.max===d||(b={0:b}),a.each(b,function(f){var g=b[f];return g.min===d&&g.max===d?!0:void a.each(c,function(a){var b=c[a].value;return"object"!=typeof b&&(b=[b]),b[f]===d?!0:void(g.min!==d&&b[f]<g.min||g.max!==d&&b[f]>g.max?h[a]=e:h[a]=1)})}),a.each(h,function(a){g.setElementOpacity(c[a],h[a],f)})},setElementOpacity:function(a,b,c){b>0&&(a.mapElem.show(),a.textElem&&a.textElem.show()),c>0?(a.mapElem.animate({opacity:b},c,"linear",function(){0===b&&a.mapElem.hide()}),a.textElem&&a.textElem.animate({opacity:b},c,"linear",function(){0===b&&a.textElem.hide()})):(a.mapElem.attr({opacity:b}),0===b&&a.mapElem.hide(),a.textElem&&(a.textElem.attr({opacity:b}),0===b&&a.textElem.hide()))},onUpdateEvent:function(b,c){var f=this;if("object"==typeof c){var g=0,h=c.animDuration?c.animDuration:0,i=function(a){f.unsetHover(a.mapElem,a.textElem),h>0?(a.mapElem.animate({opacity:0},h,"linear",function(){a.mapElem.remove()}),a.textElem&&a.textElem.animate({opacity:0},h,"linear",function(){a.textElem.remove()})):(a.mapElem.remove(),a.textElem&&a.textElem.remove())},j=function(a){a.mapElem.attr({opacity:0}),a.textElem&&a.textElem.attr({opacity:0}),f.setElementOpacity(a,a.mapElem.originalAttrs.opacity!==d?a.mapElem.originalAttrs.opacity:1,h)};if("object"==typeof c.mapOptions&&(c.replaceOptions===!0?f.options=f.extendDefaultOptions(c.mapOptions):a.extend(!0,f.options,c.mapOptions),c.mapOptions.areas===d&&c.mapOptions.plots===d&&c.mapOptions.legend===d||a("[data-type='elem']",f.$container).each(function(b,c){"1"===a(c).attr("data-hidden")&&a(c).trigger("click."+e,[!1,h])})),"object"==typeof c.deletePlotKeys)for(;g<c.deletePlotKeys.length;g++)f.plots[c.deletePlotKeys[g]]!==d&&(i(f.plots[c.deletePlotKeys[g]]),delete f.plots[c.deletePlotKeys[g]]);else"all"===c.deletePlotKeys&&(a.each(f.plots,function(a,b){i(b)}),f.plots={});if("object"==typeof c.deleteLinkKeys)for(g=0;g<c.deleteLinkKeys.length;g++)f.links[c.deleteLinkKeys[g]]!==d&&(i(f.links[c.deleteLinkKeys[g]]),delete f.links[c.deleteLinkKeys[g]]);else"all"===c.deleteLinkKeys&&(a.each(f.links,function(a,b){i(b)}),f.links={});if("object"==typeof c.newPlots&&a.each(c.newPlots,function(a){f.plots[a]===d&&(f.options.plots[a]=c.newPlots[a],f.plots[a]=f.drawPlot(a),h>0&&j(f.plots[a]))}),"object"==typeof c.newLinks){var k=f.drawLinksCollection(c.newLinks);a.extend(f.links,k),a.extend(f.options.links,c.newLinks),h>0&&a.each(k,function(a){j(k[a])})}if(a.each(f.areas,function(a){if("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultArea||"object"==typeof c.mapOptions.areas&&"object"==typeof c.mapOptions.areas[a]||"object"==typeof c.mapOptions.legend&&"object"==typeof c.mapOptions.legend.area)||c.replaceOptions===!0){var b=f.getElemOptions(f.options.map.defaultArea,f.options.areas[a]?f.options.areas[a]:{},f.options.legend.area);f.updateElem(b,f.areas[a],h)}}),a.each(f.plots,function(a){if("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultPlot||"object"==typeof c.mapOptions.plots&&"object"==typeof c.mapOptions.plots[a]||"object"==typeof c.mapOptions.legend&&"object"==typeof c.mapOptions.legend.plot)||c.replaceOptions===!0){var b=f.getElemOptions(f.options.map.defaultPlot,f.options.plots[a]?f.options.plots[a]:{},f.options.legend.plot);"square"==b.type?(b.attrs.width=b.size,b.attrs.height=b.size,b.attrs.x=f.plots[a].mapElem.attrs.x-(b.size-f.plots[a].mapElem.attrs.width)/2,b.attrs.y=f.plots[a].mapElem.attrs.y-(b.size-f.plots[a].mapElem.attrs.height)/2):"image"==b.type?(b.attrs.width=b.width,b.attrs.height=b.height,b.attrs.x=f.plots[a].mapElem.attrs.x-(b.width-f.plots[a].mapElem.attrs.width)/2,b.attrs.y=f.plots[a].mapElem.attrs.y-(b.height-f.plots[a].mapElem.attrs.height)/2):"svg"==b.type?b.attrs.transform!==d&&(b.attrs.transform=f.plots[a].mapElem.baseTransform+b.attrs.transform):b.attrs.r=b.size/2,f.updateElem(b,f.plots[a],h)}}),a.each(f.links,function(a){if("object"==typeof c.mapOptions&&("object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultLink||"object"==typeof c.mapOptions.links&&"object"==typeof c.mapOptions.links[a])||c.replaceOptions===!0){var b=f.getElemOptions(f.options.map.defaultLink,f.options.links[a]?f.options.links[a]:{},{});f.updateElem(b,f.links[a],h)}}),c.mapOptions&&("object"==typeof c.mapOptions.legend||"object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultArea||"object"==typeof c.mapOptions.map&&"object"==typeof c.mapOptions.map.defaultPlot)&&(a("[data-type='elem']",f.$container).each(function(b,c){"1"===a(c).attr("data-hidden")&&a(c).trigger("click."+e,[!1,h])}),f.createLegends("area",f.areas,1),f.options.map.width?f.createLegends("plot",f.plots,f.options.map.width/f.mapConf.width):f.createLegends("plot",f.plots,f.$map.width()/f.mapConf.width)),"object"==typeof c.setLegendElemsState)a.each(c.setLegendElemsState,function(b,c){var g=f.$container.find("."+b)[0];g!==d&&a("[data-type='elem']",g).each(function(b,d){("0"===a(d).attr("data-hidden")&&"hide"===c||"1"===a(d).attr("data-hidden")&&"show"===c)&&a(d).trigger("click."+e,[!1,h])})});else{var l="hide"===c.setLegendElemsState?"hide":"show";a("[data-type='elem']",f.$container).each(function(b,c){("0"===a(c).attr("data-hidden")&&"hide"===l||"1"===a(c).attr("data-hidden")&&"show"===l)&&a(c).trigger("click."+e,[!1,h])})}c.afterUpdate&&c.afterUpdate(f.$container,f.paper,f.areas,f.plots,f.options)}},drawLinksCollection:function(b){var c=this,e={},f={},g={},h={},i={};return a.each(b,function(a){var j=c.getElemOptions(c.options.map.defaultLink,b[a],{});e="string"==typeof b[a].between[0]?c.options.plots[b[a].between[0]]:b[a].between[0],f="string"==typeof b[a].between[1]?c.options.plots[b[a].between[1]]:b[a].between[1],e.latitude!==d&&e.longitude!==d?g=c.mapConf.getCoords(e.latitude,e.longitude):(g.x=e.x,g.y=e.y),f.latitude!==d&&f.longitude!==d?h=c.mapConf.getCoords(f.latitude,f.longitude):(h.x=f.x,h.y=f.y),i[a]=c.drawLink(a,g.x,g.y,h.x,h.y,j)}),i},drawLink:function(a,b,c,d,e,f){var g=this,h={},i=(b+d)/2,j=(c+e)/2,k=-1/((e-c)/(d-b)),l=j-k*i,m=Math.sqrt((d-b)*(d-b)+(e-c)*(e-c)),n=1+k*k,o=-2*i+2*k*l-2*k*j,p=i*i+l*l-l*j-j*l+j*j-f.factor*m*(f.factor*m),q=o*o-4*n*p,r=0,s=0;return f.factor>0?(r=(-o+Math.sqrt(q))/(2*n),s=k*r+l):(r=(-o-Math.sqrt(q))/(2*n),s=k*r+l),h.mapElem=g.paper.path("m "+b+","+c+" C "+r+","+s+" "+d+","+e+" "+d+","+e).attr(f.attrs),g.initElem(h,f,a),h},updateElem:function(a,b,c){var e,f,g,h=this,i=b.mapElem.getBBox();a.value!==d&&(b.value=a.value),b.textElem&&(a.text!==d&&a.text.content!==d&&a.text.content!=b.textElem.attrs.text&&b.textElem.attr({text:a.text.content}),(a.size||a.width&&a.height)&&("image"==a.type||"svg"==a.type?(f=(a.width-i.width)/2,g=(a.height-i.height)/2):(f=(a.size-i.width)/2,g=(a.size-i.height)/2),i.x-=f,i.x2+=f,i.y-=g,i.y2+=g),e=h.getTextPosition(i,a.text.position,a.text.margin),e.x==b.textElem.attrs.x&&e.y==b.textElem.attrs.y||(c>0?(b.textElem.attr({"text-anchor":e.textAnchor}),b.textElem.animate({x:e.x,y:e.y},c)):b.textElem.attr({x:e.x,y:e.y,"text-anchor":e.textAnchor})),h.setHoverOptions(b.textElem,a.text.attrs,a.text.attrsHover),c>0?b.textElem.animate(a.text.attrs,c):b.textElem.attr(a.text.attrs)),h.setHoverOptions(b.mapElem,a.attrs,a.attrsHover),c>0?b.mapElem.animate(a.attrs,c):b.mapElem.attr(a.attrs),"svg"==a.type&&b.mapElem.transform("m"+a.width/b.mapElem.originalWidth+",0,0,"+a.height/b.mapElem.originalHeight+","+i.x+","+i.y),a.tooltip&&(b.mapElem.tooltip===d&&(h.setTooltip(b.mapElem),b.textElem&&h.setTooltip(b.textElem)),b.mapElem.tooltip=a.tooltip,b.textElem&&(b.textElem.tooltip=a.tooltip)),a.href!==d&&(b.mapElem.href===d&&(h.setHref(b.mapElem),b.textElem&&h.setHref(b.textElem)),b.mapElem.href=a.href,b.mapElem.target=a.target,b.textElem&&(b.textElem.href=a.href,b.textElem.target=a.target))},drawPlot:function(a){var b=this,c={},e={},f=b.getElemOptions(b.options.map.defaultPlot,b.options.plots[a]?b.options.plots[a]:{},b.options.legend.plot);return e=f.x!==d&&f.y!==d?{x:f.x,y:f.y}:b.mapConf.getCoords(f.latitude,f.longitude),"square"==f.type?c={mapElem:b.paper.rect(e.x-f.size/2,e.y-f.size/2,f.size,f.size).attr(f.attrs)}:"image"==f.type?c={mapElem:b.paper.image(f.url,e.x-f.width/2,e.y-f.height/2,f.width,f.height).attr(f.attrs)}:"svg"==f.type?(f.attrs.transform===d&&(f.attrs.transform=""),c={mapElem:b.paper.path(f.path)},c.mapElem.originalWidth=c.mapElem.getBBox().width,c.mapElem.originalHeight=c.mapElem.getBBox().height,c.mapElem.baseTransform="m"+f.width/c.mapElem.originalWidth+",0,0,"+f.height/c.mapElem.originalHeight+","+(e.x-f.width/2)+","+(e.y-f.height/2),f.attrs.transform=c.mapElem.baseTransform+f.attrs.transform,c.mapElem.attr(f.attrs)):c={mapElem:b.paper.circle(e.x,e.y,f.size/2).attr(f.attrs)},b.initElem(c,f,a),c},setHref:function(b){var c=this;b.attr({cursor:"pointer"}),a(b.node).on("click."+e,function(){!c.panning&&b.href&&window.open(b.href,b.target)})},setTooltip:function(b){var c=this,f=0,g=c.$tooltip.attr("class"),h=function(a,d){var e=10,f=20;"object"==typeof b.tooltip.offset&&("undefined"!=typeof b.tooltip.offset.left&&(e=b.tooltip.offset.left),"undefined"!=typeof b.tooltip.offset.top&&(f=b.tooltip.offset.top));var g={left:Math.min(c.$map.width()-c.$tooltip.outerWidth()-5,a-c.$map.offset().left+e),top:Math.min(c.$map.height()-c.$tooltip.outerHeight()-5,d-c.$map.offset().top+f)};"object"==typeof b.tooltip.overflow&&(b.tooltip.overflow.right===!0&&(g.left=a-c.$map.offset().left+10),selem.tooltip.overflow.bottom===!0&&(g.top=d-c.$map.offset().top+20)),c.$tooltip.css(g)};a(b.node).on("mouseover."+e,function(a){f=setTimeout(function(){if(c.$tooltip.attr("class",g),b.tooltip!==d){if(b.tooltip.content!==d){var e="function"==typeof b.tooltip.content?b.tooltip.content(b):b.tooltip.content;c.$tooltip.html(e).css("display","block")}b.tooltip.cssClass!==d&&c.$tooltip.addClass(b.tooltip.cssClass)}h(a.pageX,a.pageY)},120)}).on("mouseout."+e,function(){clearTimeout(f),c.$tooltip.css("display","none")}).on("mousemove."+e,function(a){h(a.pageX,a.pageY)})},setEventHandlers:function(b,c,d,e){var f=this;a.each(c.eventHandlers,function(g){!function(g){a(d.node).on(g,function(a){f.panning||c.eventHandlers[g](a,b,d,e,c)}),e&&a(e.node).on(g,function(a){f.panning||c.eventHandlers[g](a,b,d,e,c)})}(g)})},drawLegend:function(c,e,f,g,h){var i=this,j={},k={},l=0,m=0,n=null,o={},p={},q={},r=0,s=0,t=0,u=0,v=[],w=0;for(j=a("."+c.cssClass,i.$container).empty(),k=new b(j.get(0)),a(k.canvas).attr({"data-type":e,"data-index":h}),m=l=0,c.title&&""!==c.title&&(n=k.text(c.marginLeftTitle,0,c.title).attr(c.titleAttrs),n.attr({y:.5*n.getBBox().height}),l=c.marginLeftTitle+n.getBBox().width,m+=c.marginBottomTitle+n.getBBox().height),r=0,w=c.slices.length;w>r;++r){var x=0;v[r]=a.extend(!0,{},"plot"==e?i.options.map.defaultPlot:i.options.map.defaultArea,c.slices[r]),c.slices[r].legendSpecificAttrs===d&&(c.slices[r].legendSpecificAttrs={}),a.extend(!0,v[r].attrs,c.slices[r].legendSpecificAttrs),"area"==e?(v[r].attrs.width===d&&(v[r].attrs.width=30),v[r].attrs.height===d&&(v[r].attrs.height=20)):"square"==v[r].type?(v[r].attrs.width===d&&(v[r].attrs.width=v[r].size),v[r].attrs.height===d&&(v[r].attrs.height=v[r].size)):"image"==v[r].type||"svg"==v[r].type?(v[r].attrs.width===d&&(v[r].attrs.width=v[r].width),v[r].attrs.height===d&&(v[r].attrs.height=v[r].height)):v[r].attrs.r===d&&(v[r].attrs.r=v[r].size/2),x=c.marginBottomTitle,n&&(x+=n.getBBox().height),x+="plot"!=e||v[r].type!==d&&"circle"!=v[r].type?g*v[r].attrs.height/2:g*v[r].attrs.r,u=Math.max(u,x)}for("horizontal"==c.mode&&(l=c.marginLeft),r=0,w=v.length;w>r;++r)if(v[r].display===d||v[r].display===!0){if("area"==e?("horizontal"==c.mode?(s=l+c.marginLeft,t=u-.5*g*v[r].attrs.height):(s=c.marginLeft,t=m),o=k.rect(s,t,g*v[r].attrs.width,g*v[r].attrs.height)):"square"==v[r].type?("horizontal"==c.mode?(s=l+c.marginLeft,t=u-.5*g*v[r].attrs.height):(s=c.marginLeft,t=m),o=k.rect(s,t,g*v[r].attrs.width,g*v[r].attrs.height)):"image"==v[r].type||"svg"==v[r].type?("horizontal"==c.mode?(s=l+c.marginLeft,t=u-.5*g*v[r].attrs.height):(s=c.marginLeft,t=m),"image"==v[r].type?o=k.image(v[r].url,s,t,g*v[r].attrs.width,g*v[r].attrs.height):(o=k.path(v[r].path),v[r].attrs.transform===d&&(v[r].attrs.transform=""),v[r].attrs.transform="m"+g*v[r].width/o.getBBox().width+",0,0,"+g*v[r].height/o.getBBox().height+","+s+","+t+v[r].attrs.transform)):("horizontal"==c.mode?(s=l+c.marginLeft+g*v[r].attrs.r,t=u):(s=c.marginLeft+g*v[r].attrs.r,t=m+g*v[r].attrs.r),o=k.circle(s,t,g*v[r].attrs.r)),delete v[r].attrs.width,delete v[r].attrs.height,delete v[r].attrs.r,o.attr(v[r].attrs),p=o.getBBox(),"horizontal"==c.mode?(s=l+c.marginLeft+p.width+c.marginLeftLabel,t=u):(s=c.marginLeft+p.width+c.marginLeftLabel,t=m+p.height/2),q=k.text(s,t,v[r].label).attr(c.labelAttrs),"horizontal"==c.mode){var y=c.marginBottom+p.height;l+=c.marginLeft+p.width+c.marginLeftLabel+q.getBBox().width,"image"!=v[r].type&&"area"!=e&&(y+=c.marginBottomTitle),n&&(y+=n.getBBox().height),m=Math.max(m,y)}else l=Math.max(l,c.marginLeft+p.width+c.marginLeftLabel+q.getBBox().width),m+=c.marginBottom+p.height;a(o.node).attr({"data-type":"elem","data-index":r,"data-hidden":0}),a(q.node).attr({"data-type":"label","data-index":r,"data-hidden":0}),c.hideElemsOnClick.enabled&&(q.attr({cursor:"pointer"}),o.attr({cursor:"pointer"}),i.setHoverOptions(o,v[r].attrs,v[r].attrs),i.setHoverOptions(q,c.labelAttrs,c.labelAttrsHover),i.setHover(o,q),i.handleClickOnLegendElem(c,v[r],q,o,f,h))}"SVG"!=b.type&&c.VMLWidth&&(l=c.VMLWidth),k.setSize(l,m)},handleClickOnLegendElem:function(b,c,f,g,h,i){var j=this,k=function(k,l,m){var n=0,o=a(f.node).attr("data-hidden"),p="0"===o?{"data-hidden":"1"}:{"data-hidden":"0"};m===d&&(m=b.hideElemsOnClick.animDuration),"0"===o?m>0?f.animate({opacity:.5},m):f.attr({opacity:.5}):m>0?f.animate({opacity:1},m):f.attr({opacity:1}),a.each(h,function(e){var f=h[e].mapElem.data("hidden-by");f===d&&(f={}),n=a.isArray(h[e].value)?h[e].value[i]:h[e].value,(c.sliceValue!==d&&n==c.sliceValue||c.sliceValue===d&&(c.min===d||n>=c.min)&&(c.max===d||n<=c.max))&&!function(c){"0"===o?(f[i]=!0,j.setElementOpacity(h[c],b.hideElemsOnClick.opacity,m)):(delete f[i],a.isEmptyObject(f)&&j.setElementOpacity(h[c],h[c].mapElem.originalAttrs.opacity!==d?h[c].mapElem.originalAttrs.opacity:1,m)),h[c].mapElem.data("hidden-by",f)}(e)}),a(g.node).attr(p),a(f.node).attr(p),l!==d&&l!==!0||b.exclusive===d||b.exclusive!==!0||a("[data-type='elem'][data-hidden=0]",j.$container).each(function(){a(this).attr("data-index")!==a(g.node).attr("data-index")&&a(this).trigger("click."+e,!1)})};a(f.node).on("click."+e,k),a(g.node).on("click."+e,k),c.clicked!==d&&c.clicked===!0&&a(g.node).trigger("click."+e,!1)},createLegends:function(b,c,d){var e=this,f=e.options.legend[b];a.isArray(e.options.legend[b])||(f=[e.options.legend[b]]);for(var g=0;g<f.length;++g){if(""===f[g].cssClass||0===a("."+f[g].cssClass,e.$container).length)throw new Error("The legend class `"+f[g].cssClass+"` doesn't exists.");f[g].display===!0&&a.isArray(f[g].slices)&&f[g].slices.length>0&&e.drawLegend(f[g],b,c,d,g)}},setHoverOptions:function(c,d,e){"SVG"!=b.type&&delete e.transform,c.attrsHover=e,c.attrsHover.transform?c.originalAttrs=a.extend({transform:"s1"},d):c.originalAttrs=d},setHover:function(b,c){var d=this,f={},g={},h=0,i=0,j=function(){clearTimeout(i),h=setTimeout(function(){d.elemHover(b,c)},120)},k=function(){clearTimeout(h),i=setTimeout(function(){d.elemOut(b,c)},120)};f=a(b.node),f.on("mouseover."+e,j),f.on("mouseout."+e,k),c&&(g=a(c.node),g.on("mouseover."+e,j),a(c.node).on("mouseout."+e,k))},unsetHover:function(b,c){a(b.node).off("."+e),c&&a(c.node).off("."+e)},elemHover:function(a,b){var c=this;a.attrsHover.animDuration>0?a.animate(a.attrsHover,a.attrsHover.animDuration):a.attr(a.attrsHover),b&&(b.attrsHover.animDuration>0?b.animate(b.attrsHover,b.attrsHover.animDuration):b.attr(b.attrsHover)),c.paper.safari&&c.paper.safari()},elemOut:function(a,b){var c=this;a.attrsHover.animDuration>0?a.animate(a.originalAttrs,a.attrsHover.animDuration):a.attr(a.originalAttrs),b&&(b.attrsHover.animDuration>0?b.animate(b.originalAttrs,b.attrsHover.animDuration):b.attr(b.originalAttrs)),c.paper.safari&&c.paper.safari()},getElemOptions:function(b,c,e){var f=this,g=a.extend(!0,{},b,c);if(g.value!==d)if(a.isArray(e))for(var h=0,i=e.length;i>h;++h)g=a.extend(!0,{},g,f.getLegendSlice(g.value[h],e[h]));else g=a.extend(!0,{},g,f.getLegendSlice(g.value,e));return g},getTextPosition:function(a,b,c){var d=0,e=0,f="";switch("number"==typeof c&&(c="bottom"===b||"top"===b?{x:0,y:c}:"right"===b||"left"===b?{x:c,y:0}:{x:0,y:0}),b){case"bottom":d=(a.x+a.x2)/2+c.x,e=a.y2+c.y,f="middle";break;case"top":d=(a.x+a.x2)/2+c.x,e=a.y-c.y,f="middle";break;case"left":d=a.x-c.x,e=(a.y+a.y2)/2+c.y,f="end";break;case"right":d=a.x2+c.x,e=(a.y+a.y2)/2+c.y,f="start";break;default:d=(a.x+a.x2)/2+c.x,e=(a.y+a.y2)/2+c.y,f="middle"}return{x:d,y:e,textAnchor:f}},getLegendSlice:function(a,b){for(var c=0,e=b.slices.length;e>c;++c)if(b.slices[c].sliceValue!==d&&a==b.slices[c].sliceValue||b.slices[c].sliceValue===d&&(b.slices[c].min===d||a>=b.slices[c].min)&&(b.slices[c].max===d||a<=b.slices[c].max))return b.slices[c];return{}},animateViewBox:function(a,c,d,e,f,g){var h,i=this,j=i.paper._viewBox?i.paper._viewBox[0]:0,k=a-j,l=i.paper._viewBox?i.paper._viewBox[1]:0,m=c-l,n=i.paper._viewBox?i.paper._viewBox[2]:i.paper.width,o=d-n,p=i.paper._viewBox?i.paper._viewBox[3]:i.paper.height,q=e-p,r=25,s=f/r,t=0;g=g||"linear",h=b.easing_formulas[g],clearInterval(i.animationIntervalID),i.animationIntervalID=setInterval(function(){var b=t/s;i.paper.setViewBox(j+k*h(b),l+m*h(b),n+o*h(b),p+q*h(b),!1),t++>=s&&(clearInterval(i.animationIntervalID),clearTimeout(i.zoomTO),i.zoomTO=setTimeout(function(){i.$map.trigger("afterZoom",{x1:a,y1:c,x2:a+d,y2:c+e})},150))},r)},isRaphaelBBoxBugPresent:function(){var a=this,b=a.paper.text(-50,-50,"TEST"),c=b.getBBox();return b.remove(),0===c.width&&0===c.height},defaultOptions:{map:{cssClass:"map",tooltip:{cssClass:"mapTooltip"},defaultArea:{attrs:{fill:"#343434",stroke:"#5d5d5d","stroke-width":1,"stroke-linejoin":"round"},attrsHover:{fill:"#f38a03",animDuration:300},text:{position:"inner",margin:10,attrs:{"font-size":15,fill:"#c7c7c7"},attrsHover:{fill:"#eaeaea",animDuration:300}},target:"_self"},defaultPlot:{type:"circle",size:15,attrs:{fill:"#0088db",stroke:"#fff","stroke-width":0,"stroke-linejoin":"round"},attrsHover:{"stroke-width":3,animDuration:300},text:{position:"right",margin:10,attrs:{"font-size":15,fill:"#c7c7c7"},attrsHover:{fill:"#eaeaea",animDuration:300}},target:"_self"},defaultLink:{factor:.5,attrs:{stroke:"#0088db","stroke-width":2},attrsHover:{animDuration:300},text:{position:"inner",margin:10,attrs:{"font-size":15,fill:"#c7c7c7"},attrsHover:{fill:"#eaeaea",animDuration:300}},target:"_self"},zoom:{enabled:!1,minLevel:0,maxLevel:10,step:.25,mousewheel:!0,touch:!0,animDuration:200,animEasing:"linear",buttons:{reset:{cssClass:"zoomButton zoomReset",content:"&#8226;",title:"Reset zoom"},"in":{cssClass:"zoomButton zoomIn",content:"+",title:"Zoom in"},out:{cssClass:"zoomButton zoomOut",content:"&#8722;",title:"Zoom out"}}}},legend:{area:[],plot:[]},areas:{},plots:{},links:{}},legendDefaultOptions:{area:{cssClass:"areaLegend",display:!0,marginLeft:10,marginLeftTitle:5,marginBottomTitle:10,marginLeftLabel:10,marginBottom:10,titleAttrs:{"font-size":16,fill:"#343434","text-anchor":"start"},labelAttrs:{"font-size":12,fill:"#343434","text-anchor":"start"},labelAttrsHover:{fill:"#787878",animDuration:300},hideElemsOnClick:{enabled:!0,opacity:.2,animDuration:300},slices:[],mode:"vertical"},plot:{cssClass:"plotLegend",display:!0,marginLeft:10,marginLeftTitle:5,marginBottomTitle:10,marginLeftLabel:10,marginBottom:10,titleAttrs:{"font-size":16,fill:"#343434","text-anchor":"start"},labelAttrs:{"font-size":12,fill:"#343434","text-anchor":"start"},labelAttrsHover:{fill:"#787878",animDuration:300},hideElemsOnClick:{enabled:!0,opacity:.2,animDuration:300},slices:[],mode:"vertical"}}},a[e]===d&&(a[e]=g),a.fn[e]=function(b){return this.each(function(){a.data(this,e)&&a.data(this,e).destroy(),a.data(this,e,new g(this,b))})}}); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/README.txt b/plugins/jquery-mapael/maps/README.txt new file mode 100644 index 0000000..e2e4ba9 --- /dev/null +++ b/plugins/jquery-mapael/maps/README.txt @@ -0,0 +1,3 @@ +Additional maps are stored in the repository neveldo/mapael-maps + +Full link: https://github.com/neveldo/mapael-maps diff --git a/plugins/jquery-mapael/maps/france_departments.js b/plugins/jquery-mapael/maps/france_departments.js new file mode 100644 index 0000000..4283189 --- /dev/null +++ b/plugins/jquery-mapael/maps/france_departments.js @@ -0,0 +1,165 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of metropolitan France by department + * Equirectangular projection + * + * @author Vincent Brouté + * @source http://fr.m.wikipedia.org/wiki/Fichier:France_location_map-Departements.svg + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('mapael')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'mapael'], factory); + } else { + // Browser globals + factory(jQuery, jQuery.mapael); + } +}(function ($, Mapael) { + + "use strict"; + + $.extend(true, Mapael, + { + maps : { + france_departments : { + width : 600.08728, + height : 626.26221, + getCoords : function (lat, lon) { + var xfactor, + xoffset, + yfactor, + yoffset, + x, + y; + // Corse + if (lat < 43.15710 && lon > 8.17199) { + xfactor = 43.64246; + xoffset = 181.34520; + x = (lon * xfactor) + xoffset; + + yfactor = -65.77758; + yoffset = 3346.37839; + y = (lat * yfactor) + yoffset; + } else { + xfactor = 45.48385; + xoffset = 220.22005; + x = (lon * xfactor) + xoffset; + + yfactor = -65.97284; + yoffset = 3371.10748; + y = (lat * yfactor) + yoffset; + } + return {x : x, y : y}; + }, + elems : { + "department-29" : "m 37.28,156.11 c -1.42,1.23 -3.84,1.18 -3.99,3.49 -1.31,-2.24 -8,-0.27 -6.23,1.86 -0.83,0.29 -3.61,-0.09 -4.72,1.08 1.27,-3.15 -2.84,-2.76 -4.74,-1.32 -1.52,0.3 0.5,1.51 -1.67,1.26 -1.43,1.46 -5.78,-1.22 -5,1.7 2.01,2.28 -4.44,-1.17 -2.19,2.21 2.05,2.35 -1.91,-1.21 -3.2,0.17 -2.44,0.46 -5.9,3.28 -4.27,6.2 1.31,1.03 -2.45,2.79 -0.89,4.68 1.85,1.54 -1.54,4.66 1.85,4.99 2.29,0.7 2.49,-2.98 4.87,-0.96 3.08,0.74 5.89,-2.07 8.89,-2.74 1.93,-0.34 5.67,-2.04 6.34,-1.85 -2,1.78 -5.83,1.89 -6.41,4.93 -0.69,1.92 2.11,-0.67 2.33,1.07 1.34,-0.89 2.68,-1.87 3.94,-1.39 3.81,-2.03 -2.75,2.24 0.52,1.99 1.47,0.34 4.01,0.96 4.33,1.46 -1.94,0.3 -3.28,1.07 -4.57,-0.08 -2.38,0.71 -4.58,1.45 -6.63,0.05 -2.75,0.86 -5.75,0.61 -4.18,-2.84 -3.29,-0.24 -0.4,5.1 -3.79,3.67 -1.2,2.84 5.41,0.67 2.62,3.42 0.89,1.41 -0.15,5.78 1.86,2.76 0.83,-2.29 2.62,-4.57 5.09,-2.36 1.97,1.37 5.1,0.79 5.41,4 1.86,2.04 -0.29,6.23 -3,3.6 -3.95,0.62 -7.67,1.95 -11.58,2.45 -2.09,0.38 -5.98,-0.08 -4.41,2.7 2.53,0.06 4.87,1.62 7.03,1.82 2.62,-1.48 5.9,3.16 7.51,5.27 1.61,2.44 2.66,5.4 0.91,7.66 1.94,1.19 5.11,1.18 7.5,0.75 1.99,-0.45 3.16,-2.44 1.04,-3.28 -1.05,-1.98 0.82,-2.27 1.51,-0.45 3.34,0.23 -0.63,-4.11 0.69,-3.65 0.91,2.75 3.66,3.46 5.82,3.53 2.26,0.86 -0.02,-4.66 2.92,-2.01 2.11,1.7 2.69,4.22 4.57,6.13 2.01,0.11 4.17,0.12 6.01,-0.65 1.82,2.12 5.68,2.27 8.25,2.23 1.8,-1.51 -1.55,-4.66 0.95,-5.09 0.94,2.57 3.24,-0.19 3.58,-1.33 2.95,0.23 0.38,-3.13 2.08,-4.2 -0.21,-1.43 -0.64,-3.61 -2.53,-1.94 -1.44,2.09 -1.76,-1.59 -3.7,-1.52 -2.13,-1.41 -5.77,1.37 -6.1,-2.55 -0.44,-2.07 -2.04,-3.22 -2.32,-5.05 -2.23,-0.45 0.49,-4.53 2.59,-4.02 1.42,-1.43 5.76,-1.87 5.77,-3.15 -3.54,-1.5 2.53,-4.55 -0.88,-5.73 0.6,-1.35 -0.87,-3.79 -0.56,-5.72 -3.53,0.13 -1.65,-3.79 0.06,-4.6 -3.56,-1.53 -0.98,-4.21 0.33,-6.05 -1.3,-1.16 -2.22,-1.16 -1.99,-2.94 -3.12,-0.26 -3.41,-4.67 -2.3,-6.54 -0.38,-1.53 -3.23,-0.42 -4.45,-1.94 -2.01,-0.12 -5.18,-1.19 -4.7,2.29 -0.84,1.4 0.25,4.35 -1.82,2.22 -1.36,-0.49 -0.48,-3.38 -2.36,-1.3 -1.28,1.93 -1.52,-3.86 -1.99,-4.38 z m -9.88,28.66 0,0.02 0,-0.02 z", + "department-22" : "m 77.67,146.73 c -2.58,0.94 -4.37,2.6 -5.78,4.84 1.21,-2.76 0.01,-6.18 -2.26,-2.58 -2.86,-0.54 -4.85,2.02 -7.32,2.35 0.05,-2.38 -5.14,-2.89 -4.97,-0.27 -1.65,0.69 -2.79,2.55 -0.54,3.83 1.42,1.41 -3.19,1.12 -1.21,3.58 0.75,2.79 -2.62,-0.53 -2.95,1.74 -2.03,2.25 0.93,5.14 2.73,6.11 -0.89,1.81 3.77,1.87 0.94,3.62 -2.27,1.33 -1.69,4.1 0.71,4.68 -2.37,0.99 -3.54,4.66 -0.18,4.93 -0.75,1.8 0.34,4.07 1.35,3.89 -2.23,1.45 2.07,3.31 -1.02,4.81 -1.32,1.63 3.39,3.81 -0.37,3.46 -0,1.68 3.4,-0.17 4.6,0.64 2.17,-1.15 0.09,3.47 2.84,1.65 2.78,-2.51 5.12,2.28 8.16,0.11 1.28,-1.21 4.21,0.16 3.71,-2.72 2.36,-2.11 5.53,-0.32 6.55,2.07 3.1,-1.66 5.66,1.79 8.52,1.44 1.09,1.13 1.31,4.63 2.54,1.67 1.77,0.69 4.7,-2.67 4.36,1 -1.42,1.92 -0.06,5.98 2.29,3.25 2.15,-1.33 3.24,-3.52 3.71,-5.84 -1.55,-1.8 3.03,-1.29 4.1,-2.17 2.56,0.5 2.84,5.71 5.3,2.6 2.48,-0.52 4.76,-2.21 4.35,-5.23 2.66,1.35 0.38,-3.98 3.68,-3.07 2.3,0.76 0.88,-1.21 2.74,-1.68 0.93,-2.46 3.26,2.1 3.88,-0.74 2.87,-0.05 0.28,-3.49 2.75,-3.67 -0.67,-1.88 -0.1,-4.12 -0.62,-6.07 1.57,-1.46 2.25,-5.3 0.59,-6.78 -0.36,1.32 -2.86,3.56 -2.08,0.75 -0.58,-2.28 -2.24,-1.04 -3,-0.66 -0.39,-2.19 -3.7,-1.69 -4.26,-4.29 -2.01,-0.96 -0.92,3.96 -2.61,1.33 -0.93,2.11 -1.72,-1.85 -2.25,-2.64 -0.23,-2.69 -5.02,3.57 -3.11,-0.38 2.12,-1.4 -0.5,-4.55 -1.42,-1.9 -1.94,1.15 -2.92,1.92 -4.85,1.1 -2.9,-0.12 0.52,1.54 -2.1,2.49 -3.58,0.78 -5.19,5.69 -8.5,5.48 0.49,3.36 -2.74,-0.19 -2.06,-1.81 -2.95,-1.1 -4.73,-3.24 -4.7,-6.38 -2,-2 -5.44,-3.63 -5.11,-6.81 -0.95,-1.07 -6.79,-1.08 -3.38,-3.09 0.47,-2.76 -4.12,-1.19 -3.66,1.11 -0.44,1.73 -2.27,2.41 -0.65,0.39 1.33,-1.47 1.44,-4.62 0.53,-6.14 z", + "department-56" : "m 78.99,190.76 c -3.41,-1.13 -2.2,3.92 -5.32,2.9 -1.41,0.4 -1.19,1.61 -2.99,0.82 -1.13,0.79 -2.69,-0.38 -3.4,-0.47 -0.84,-2.28 -6.08,2.96 -4.76,-1.3 -1.92,-0.69 -4.61,-0.08 -6.81,-0.32 -2.56,1.49 -6.48,1.43 -6.89,4.97 1.66,0.45 1.27,1.18 1.54,2.72 2.29,1.28 1.38,6.71 5.21,4.85 2.27,-0.57 4.21,1.54 5.35,2.54 1.09,-1.75 3.9,-1.39 3.21,0.95 0.1,1.55 -1.11,2.84 -0.3,4.77 -2.2,-0.71 -3.03,4.58 -5.67,1.76 -1.43,0.94 1.23,2.98 -0.19,4.47 0.79,3.11 4.25,6.81 7.21,3.89 -1.96,-1.82 1.17,-1.04 2.08,-2.79 1.53,-1.34 1.85,-1.47 0.72,0.46 -0.96,1.01 -3.43,3.3 -0.38,3.09 1.49,0.45 3.45,4.36 4.77,2.88 -0.27,-2.53 3.83,-3.05 1.1,-5.44 1.05,0.63 2.71,-0.96 2.12,1.15 2.98,0.99 -0.94,3.03 -2.44,3.55 -2.08,3.14 3.5,3.77 1.75,6.92 -0.29,1.59 0.31,5.9 2.13,4.03 -1.68,-0.96 -1.89,-7.61 0.51,-4.94 -0.5,1.26 4.8,0.74 3.44,-1.25 0.35,-0.76 1.34,3.45 1.43,0.83 0.89,1.74 3.91,2.47 1.59,0.06 -0.51,-1.47 -0.02,-3.03 -0.87,-4.45 1.76,1.65 1.37,4.11 4.01,4.31 0.21,-1.28 1.88,-0.67 1.78,-2.23 1.83,0.46 2.89,-0.48 3.79,-0.93 2.28,0.82 -0.59,1.71 2.06,2.43 1.57,0.52 0.39,-4.11 1.62,-1.05 -0.46,2.03 -2.17,6.08 -4.56,4.17 -1.51,0.14 -2.97,0.56 -4.53,-0.67 -3.37,0.66 2.51,2.11 2.17,4.25 2.28,1.57 4.95,-1.33 7.46,-0.04 0.09,-2.03 1.34,-0.88 2.36,-1.71 -1.31,-1.38 4.01,-1.27 0.96,-0.1 0.22,1.93 4.41,-1.17 5.9,0.75 1.01,1.43 4.31,0.26 4.44,1.04 -2.33,0.43 -6.75,-0.69 -5.01,3.23 1.5,1.03 2.59,-3.6 4.01,-0.77 1.99,-0.12 4.3,0.38 4.4,-2.43 0.29,-2.58 2.25,-0.15 3.16,-0.22 1.19,-1.05 2.3,-1.01 2.74,0.42 1.6,-0.29 0.66,-3.06 3.03,-2.61 0.96,-1.59 -0.11,-4.05 1.01,-5.76 -1.21,-2.25 -1.75,-4.67 -1.62,-7.13 1.06,-1.01 4.05,-0.69 1.57,-1.96 -1.94,-0.06 -2.1,-1.17 -0.12,-1.66 0.89,-1.32 3.49,-4.07 1.04,-4.6 -2.47,1.93 -2.55,-3.4 -0.68,-4.04 -0.57,-3.25 -3.22,-4.81 -6.13,-5.41 -2.4,0.4 -4.25,0.1 -2.46,-2.49 0.6,-2.26 5.5,-0.56 4.09,-3.23 -1.75,-0.22 -3.84,2.7 -3.33,-0.63 0.01,-3.41 -3.32,-2.88 -4.84,-1.45 -0.88,-3.11 -3.48,-4.72 -6.36,-3.01 -2.15,-0.01 0.26,2.97 -2.05,3.88 -0.09,2.06 -3.87,4.92 -5.31,3.84 -1.21,-1.39 2.06,-7.27 -1.57,-5.21 -1.38,0.54 -2.88,0.33 -3.62,2.06 -0.18,-2.38 -1.59,-4.23 -4.05,-3.7 -1.5,-2.53 -4.89,-0.74 -6.39,-1.56 -0.77,-1.17 -1.33,-2.65 -3.1,-2.43 z", + "department-35" : "m 134.53,157.78 c -2.29,1.25 -4.29,0.31 -6.19,1.59 -0.35,1.67 -2.93,2.17 -1.16,4.31 0.18,1.71 3.99,2.25 1.51,3.04 0.71,1.27 0.98,3.59 2.33,1.22 1.69,2.12 0.9,4.75 -0.11,6.67 -1.16,1.66 0.84,3.78 -0.19,5.68 1.34,1.46 -2.11,1.58 -0.78,3.48 0.21,2.25 -2.03,-0.13 -2.56,2.08 -1.42,-0.68 -2.58,-1.61 -3.47,0.21 -1.19,0.31 -0.39,2.42 -2.44,1.14 -3.01,-0.11 -1.06,4.1 -3.56,3.46 -0.04,2.21 -0.64,4.46 -2.86,4.2 0.62,1.53 1.56,3.49 1.75,5.16 0.54,-2.03 5.23,-1.03 2.52,0.76 -2.33,-0.69 -5.1,2.03 -3.97,3.88 2.89,-0.33 6.41,0.27 7.93,3.03 1.44,1.66 0.87,2.99 -0.39,4.33 0.11,1.6 0.84,3.69 2.2,1.35 0.71,-0.77 0.83,2.07 1.01,2.45 -1.23,1.26 -2.05,2.91 -3.28,3.92 1.71,0.13 3.61,2.39 0.59,2.1 -2.68,1.22 0.26,4 -0.22,5.86 2.34,-0.34 4.15,-1.76 6.12,-3.07 0.06,2.7 3.03,-0.8 4.56,-0.57 2.43,-1.1 5.63,0.82 7.84,-0.63 3.6,0.5 2.72,-4.87 6.32,-4.78 1.62,-0.77 5.16,-0.84 3.73,-3.31 2.85,-0.62 4.57,1.21 6.54,2.5 1.91,0.57 5.04,2.11 4.63,-1.3 1.15,-1.21 0.6,-2.9 1.92,-3.9 0.7,-1.81 1.08,-4.73 2.39,-6.4 1.07,-2.4 6.58,0.52 5.22,-3.48 -0.09,-3.31 -1.44,-6.24 -2.22,-9.58 0.1,-2.96 -2.26,-6.23 0.02,-8.8 1.83,-2.19 0.74,-5.58 -0.28,-8.01 0.55,-2.21 1.33,-6.39 -2.22,-6.48 -2.56,-0.06 -6.32,-3.21 -7.21,0.93 -2.37,0.79 -4.8,5.49 -7.02,1.82 -2.57,-0.44 -4.28,-3.63 -3.95,-6.18 -0.99,-1.91 -2.39,-5.92 -4.86,-2.88 -3.41,0.04 -8.02,2.16 -10.43,-0.96 -1.67,-2.06 2.03,-3.1 0.24,-4.85 z", + "department-44" : "m 152.12,215.29 c 0.59,4.69 -7.52,2.23 -7.55,6.92 -2.45,2.92 -6.64,1.42 -9.84,1.79 -2.21,0.47 -4.62,2.21 -6.1,1.16 -2.15,1.71 -5.77,2.38 -4.86,5.66 -0.41,1.99 0.14,5.32 -2.78,5.46 0.29,3.39 -2.45,-0.35 -3.39,1.23 -1.97,-0.43 -3.4,-1.22 -3.87,1.43 -1.39,3.38 -7.86,-1.72 -6.53,3.45 1.04,0.36 3.95,1.27 1.26,1.45 -1.78,0.18 -4.38,-0.42 -5.51,2.1 0.81,1.67 6.76,3.88 3.55,5.8 -1.04,-0.85 -4.89,-1.36 -1.91,0.14 1.73,1.23 3.86,1.82 5.03,0.15 2.77,0.79 5.25,4.76 7.99,1.3 2.33,-2.98 5.67,-3.71 9.18,-3.56 3.26,1.31 7.02,1.76 9.14,4.89 0.59,1.56 5.82,2.63 2.15,2.16 -4.08,-0.08 -5.45,-5.45 -9.25,-4.42 -2.59,-1.44 -6.59,-0.45 -8.62,1.17 0.15,2.98 1.07,6.99 -2.64,7.63 1.56,2.78 6.83,0.77 8.69,4.16 2.99,2.74 4.83,7.09 8.9,8.42 0.9,1.88 5.53,0.57 5.08,3.59 3.08,0.7 6.82,2.86 9.67,1.11 2.13,-1.29 -2.55,-2.42 -0.14,-3.94 -2.91,-1.74 -0.81,-8.5 2.35,-5.93 0.6,2.44 -0.71,8.47 3.28,5.3 3.57,-0.9 -1,-7.35 3.9,-6.19 0.83,-0.5 2.39,-4.6 3.91,-1.32 1.06,2.31 6.94,2.33 4.03,-0.72 -1.16,-2.43 -6.27,-0.49 -4.19,-3.49 1.19,-2.09 4.14,-3.59 2.27,-6.58 -0.11,-2.99 -2.79,0.14 -3.66,-2.47 -0.42,-1.81 -2.18,-3.14 -3.54,-3 1.51,-3.16 6.07,-2.52 8.85,-3.95 3.12,-0.79 9.37,1.47 9.71,-3.23 -1.08,-2.47 -1.12,-5.9 -4.66,-5.46 -2.8,0.23 -7.97,-1.25 -5.65,-4.79 1.85,-0.34 7.04,1.35 6.32,-1.48 -2.96,-1.34 -7.7,-2.06 -7.06,-6.38 -0.89,-2.42 -4.47,-2.43 -3.18,-5.19 -2.78,-1.29 -5.51,-2.7 -8.1,-4.12 -0.73,-0.11 -1.47,-0.12 -2.19,-0.28 z", + "department-50" : "m 131.13,90.31 c -1.88,0.95 -0.8,4.82 1.86,4.23 3.56,1.9 1.73,6.62 0.2,9.04 2.05,2.45 3.1,5.7 3,9 0.14,1.74 2.63,0.2 3.07,2.34 0.75,1.03 1.85,2.12 2.19,0.36 1.37,1.6 -1.38,2.27 1.05,3.66 1.37,1.28 0.99,6.4 3.69,4.06 1.9,0.29 2.45,1.19 0.04,0.86 -1.6,1.67 0.46,4.57 0.89,5.74 -2.97,1.02 -0.03,4.32 -0.89,6.45 0.25,4.18 2.26,-2.3 3.97,0.71 -3,-1.64 -2.73,4.63 -1.52,5.52 -1.39,1.53 -0.75,4.59 -2.48,6.57 2.85,1.89 0.3,6.73 3.77,8.41 0.72,3.65 6.47,2.47 6.87,4.86 -3.09,-0.67 -6.13,1.28 -9.29,0.14 2.12,2.48 1.69,5.44 3.35,8.16 0.49,2.03 2.9,1.69 3.89,3.28 2.85,0.97 3.52,-2.95 6.22,-3.35 0.5,-4.19 4.83,-0.16 7.12,-0.52 2.46,0.21 4.49,2.11 6.88,1.58 1.14,-3.4 4.72,2.61 6.05,-1.83 2.14,-1.71 4.11,-4.11 4,-6.8 -2.86,-1.65 2.62,-4.05 -1.04,-4.65 -1.19,-1.03 -1.99,-2.17 -3.44,-2.39 0.65,-1.72 0.69,-2.24 -1.24,-1.46 -2.15,-1.56 -3.83,-1.87 -6.18,-1.16 -1.5,-0.55 -4.16,0.68 -4.02,-2.14 -1.26,-0.78 -4.15,-1.48 -1.38,-2.84 0.99,-1.27 1.76,-1.9 2.97,-1.76 1.12,-1.18 3.8,-4.02 0.24,-2.9 -1.76,-0.83 1.02,-4.16 2.87,-2.17 3.08,-0.43 3.89,-3.82 6.01,-5.35 -2.27,-0.59 1.2,-4.39 -1.22,-5.32 -2.09,1.3 -1,0.15 0.07,-0.89 -1.07,-1.07 -4.55,-2.49 -1.49,-2.88 2.17,-1.47 -0.09,-4.82 -1.5,-1.9 -3.17,0.81 -5.99,-2.78 -7.94,-5.02 -1.69,-1.95 2.34,-3.94 -0.73,-4.53 -0.02,-1.64 -2.94,0.31 -1.33,-2.17 1.04,-2.89 -2.27,-4.45 -3.47,-6.64 -1.37,-1.99 -4.59,-6.54 -0.56,-7.31 0.17,-1.79 2.56,-1.35 1.09,-3.59 -0.43,-3.65 -3.79,-3.85 -6.83,-3.94 -3.88,-1.03 -4.69,4.08 -8.52,3.07 -3.16,1.2 -5.48,-1.83 -8.81,-1.65 -2.47,0.02 -3.19,-2.65 -5.7,-1.92 -0.51,-0.38 -1.01,-1.1 -1.74,-0.94 z", + "department-53" : "m 208.55,167.1 c -1.01,1 0.05,3.16 -1.88,3.54 -1.52,-1.01 -2.64,-0.44 -3.16,1.13 -2.16,0.27 -4.3,-2.6 -6.35,-0.72 -2.51,0.71 -4.34,2.89 -6.91,3.52 -1.47,-0.07 -0.73,-3.05 -2.63,-1.24 -1.44,-0.25 -1.57,0.24 -1.23,1.52 -1.95,1.91 -3.12,-1.9 -4.31,-1.2 -0.57,-2.91 -4.17,-1.79 -5.68,-3.27 -1.71,1.43 -3.54,2.05 -5.24,0.23 -1.62,1.36 -0.04,4.11 -0.87,5.96 1,2.8 1.94,6.2 -0.3,8.68 -1.8,2.64 0.64,5.51 0.63,8.4 0.26,2.57 1.34,4.89 2.01,7.32 0.27,1.9 0.56,4.67 -2.4,4.46 -3.58,-1.21 -3.75,3.46 -4.8,5.71 -0.32,2.32 -3.14,4.44 -1.31,6.55 2.18,1.99 5.34,0.43 7.83,1.57 1.63,0.66 3.95,1.05 3.53,-1.27 2.64,-0.54 3.9,3.91 6.54,1.42 2.25,1.91 5.27,1.85 7.94,2.38 1.76,-0.55 3.96,-1.63 5.33,-1.8 0.74,-3.63 3.49,1.65 5.63,-0.72 3.1,-0.49 -0.69,-2.25 -1.75,-2.95 -1.24,-2.55 5.38,-2.7 2.17,-4.78 -2.1,-2.18 2.21,-3.41 3.9,-3.25 2.7,-2.12 -2.9,-5 -0.82,-7.18 1.54,-1.12 5.56,-0.07 4.23,-2.96 2.04,-1.51 -2.56,-3.7 0.57,-5.19 2.14,-0.95 4.31,-2.8 2.75,-5.2 0.4,-1.84 1.4,-3.83 0.29,-5.45 0.84,-2.27 2.74,-2.67 4.64,-3.69 0.49,-2.31 0.11,-5.38 -2.99,-3.91 -2.18,-0.9 -2.07,-4.02 -1.67,-5.52 -0.9,-1.11 -2.32,-1.86 -3.72,-2.1 z", + "department-49" : "m 163.22,217.21 c -0.83,2.37 -1.6,5.33 1.37,5.86 1.81,2.08 0.91,5.95 4.42,6.63 2.22,0.05 6.13,2.61 1.99,3.38 -1.68,0.33 -6.88,-1.51 -4.42,1.8 -0.28,3.95 5.62,1.28 7.64,2.98 2.45,0.74 1.41,5.07 2.67,6.48 -2.29,2.93 -6.35,1.4 -9.46,1.86 -2.75,1.47 -6.15,1.11 -8.63,2.95 -2.19,2.35 2.81,0.48 2.57,3.2 0.31,2.29 2.55,1.71 3.57,1.87 1.63,2.89 1.11,5.74 -1.65,7.56 -1.38,3.05 3.73,1.85 4.64,4.57 0.65,0.86 -1.19,3.33 1.44,2.98 2.09,1.51 5.06,-0.93 6.83,0.87 2.12,0.24 3.87,3.37 5.76,0.52 2.61,-0.75 5.23,0.76 7.87,-0.16 3.45,0.68 4.18,-2.89 4.98,-5 2.46,-1.53 5.74,1.7 7.32,-1.15 3.52,-0.32 7.2,-1.11 10.47,-0.77 1.05,1.17 -2.26,1.94 0.29,2.63 2.66,0.88 1.49,-3.86 4.67,-2.23 0.32,-1.55 1.08,-6.07 4.26,-4.7 1.02,-3.55 0.54,-7.68 3.15,-10.63 1.2,-1.75 2.78,-3.33 2.02,-5.32 0.89,-2.49 1.94,-4.87 2.33,-7.52 -2.3,-1.25 2.95,-6.06 -1.28,-5.83 -1.14,3.4 -4.78,-0.25 -6.77,-0.21 -1.89,-1.86 -5.83,-3.95 -7.59,-1.47 -2.9,0.48 -5.51,-3.13 -2.87,-5.2 -1.31,-0.36 -3.53,1.25 -5.3,-0.11 -1.96,-0.38 -3.12,0.57 -3.07,-1.96 -1.12,-2.87 -4.12,0.14 -5.77,-2.2 -1.77,-0.71 -0.8,2.61 -3.03,1.75 -3.13,1.53 -6.89,1.32 -10.17,-0.06 -1.72,-2.25 -3.57,1.59 -5.08,-1.25 -0.8,-0.99 -3.72,-1.84 -2.9,0.37 -3.4,0.17 -6.97,-0.89 -10.18,-1.14 -0.72,-0.44 -1.37,-0.99 -2.14,-1.36 z", + "department-85" : "m 161.28,265.2 c -0.97,1.7 -1.54,3.91 -3.7,2.64 -1.76,1.98 1.21,6.33 -3.05,6.68 -4.15,2.13 -1.3,-4.19 -2.86,-6.14 -3.81,-0.88 -3.43,4.2 -2.06,6.39 -1.18,1.59 2.88,3.89 -0.56,4.36 -2.8,1.01 -5.58,-1.25 -8.45,-1.27 -0.94,-1.21 -1.09,-3.22 -3.4,-2.64 -2.06,0.15 -1.35,-2.2 -3.49,-1.71 -2.48,-1.21 -5.24,-7.8 -7.15,-2.42 -0.59,3.85 -5.53,4.8 -4.91,9.21 0.37,4.17 5.72,4.87 7.16,8.67 2.67,2.58 4.99,5.43 6.65,8.8 0.87,1.89 0.24,6.13 2,6.75 0.16,-1.73 0.12,-2.45 1.07,-0.5 1.66,2.86 6.15,2.45 7.02,5.1 3.4,-0.42 6.93,0.3 7.04,4.36 1.27,2.81 4.49,-1.27 6.02,1.84 2.09,-0.13 3,3.11 4.96,3.02 -0.36,-3.97 4.41,-1.93 6.48,-3.3 1.71,-1.96 4.7,-2.5 6.81,-2.37 -1.17,1.68 -0.83,3.92 1.65,2.75 2.07,-0.36 4.04,-2.66 5.25,0.14 2.09,1.8 3.55,-0.97 5.61,-0.12 1.62,-1.38 3.3,-2.9 5.04,-3.72 0.18,-2.56 -3.47,-1.87 -3.87,-1.44 -0.63,-2.59 1.8,-5.29 -0.47,-7.7 0.94,-1.38 2.03,-1.54 1.08,-3.45 0.09,-2.1 -0.29,-4.13 -1.61,-5.22 0.65,-2.15 -1.16,-2.52 -0.79,-4.52 -1.57,-1.94 -3.3,-3.94 -1.89,-6.5 -1.72,-1.62 -5.39,-2.92 -5.22,-6.11 0.38,-2.29 -3.29,-2.9 -3.68,-5.31 -1.81,-2.01 -4.49,-1.74 -7.1,-1.32 -3.49,-1.03 -6.73,-2.66 -9.6,-4.96 z", + "department-79" : "m 211.41,263.54 c -3.47,1 -7.46,-0.24 -10.55,2.01 -1.54,0.87 -3.61,1.5 -3.45,-0.55 -2.89,-0.11 -3.46,3 -4.1,4.64 -2.76,1.84 -6.3,1.53 -9.35,1.02 -2.77,-0.37 -6.01,2.62 -2.55,4.27 1.05,2.29 0.26,5.24 3.5,6.22 3.7,1.27 0.35,4.83 3.08,6.91 1.95,2.46 1.89,5.88 3.13,8.43 0.79,2.29 0.53,5.23 -0.6,6.69 2.08,1.92 -1.04,5.98 0.79,6.87 2.26,-2.05 4.86,2.6 1.35,3.21 -1.82,2.1 -4.84,2.03 -7.01,3.55 -1.92,3.7 2.7,4.91 3.24,8.13 1.44,0.37 2.62,0.88 2.81,2.1 3.32,-0.93 5.83,3.57 8.63,3.01 2.89,1.17 6.03,0.6 8.47,3.22 3.7,-0.54 3.87,6.56 7.56,4.57 1.73,-2.11 1.24,-5.98 4.87,-5.81 1.63,-2.21 4.23,-2.49 6.45,-1.63 1.55,-1.48 2.11,-4.78 -0.83,-4.33 -3.29,-1.46 -1.71,-5.49 -0.5,-7.4 1.75,-0.97 0.56,-7.43 -1.84,-3.75 -2.3,2.89 -5.28,-1.21 -4.22,-3.39 -2.48,-2.03 -1.19,-5.37 -2.68,-7.99 1.33,-2.02 1.71,-4.55 3.11,-6.42 -0.55,-0.92 -2.28,-2.13 -2.08,-2.45 -3.66,1.58 0.19,-4.05 1.24,-5.25 2.3,-2.33 -3.14,-3.07 -0.93,-5.56 1.44,-1.85 -3.47,-1.82 -0.33,-2.92 3.33,-0.16 0.56,-1.18 -0.24,-2.53 0.5,-2.54 0.1,-5.85 -1.91,-7.36 -1.96,-0.52 -0.38,-5.88 -4.15,-4.77 -2.43,-0.12 2.22,-3.17 -0.9,-2.74 z", + "department-17" : "m 175.73,312.62 c -2.1,1.05 -4.89,0.98 -6.33,3.16 -2.59,0.12 1.24,4.72 -2.26,5.02 -2,0.79 -4.42,5.17 -2.11,6.01 2.93,0 2.49,3.17 4.17,4.84 0.72,1.37 3.67,5.65 0.03,4.87 -2.18,0.36 1.95,2.77 0.48,4.24 1.55,2.23 0.05,3.13 -1.55,3.46 -0.38,1.57 -2.23,1.63 -0.92,3.81 0.7,3.56 3.92,5.46 6.53,7.53 -3.66,-0.31 -5.1,-4.96 -7.98,-5.25 -3.89,-1.1 -3.52,4.91 -2.88,6.67 2.74,-1.46 4.76,2.94 7.48,3.54 3.34,1.31 3.69,5.42 7.19,6.15 4.09,3 7.55,7.17 8.5,12.27 0.26,3.76 5.67,2.29 7.12,1.56 -1.08,5.27 6.99,0.78 7.08,5.12 0.92,1.82 -0.24,5.87 1.93,6.53 3.38,-1.84 5.25,4.16 8.91,4.29 2.53,1.16 3.84,-3.72 5.99,-0.43 0.42,-1.35 1.41,-3.02 1.97,-3.79 -0.43,-1.67 1.72,-4.75 -1.44,-5.53 -1.82,-0.53 -4.59,0.36 -3.27,-2.54 -1.47,-1.11 -5.11,-3.27 -7.08,-1.29 -2.02,-1.16 -0.75,-3.34 0.78,-3.22 -1.02,-0.53 -4.64,-2.27 -1.19,-3.33 4.28,-0.66 -2.5,-4.27 0.56,-5.26 2.44,-2.46 -2.28,-2.77 -2.54,-4.29 2.17,-2.32 -2.75,-3.59 -3.55,-5.14 -2.87,0.92 -0.97,-2.62 0.33,-2.63 -2.65,-1.14 -0.44,-4.4 -1.57,-5.27 -2.89,0.77 -1.45,-2.34 0.53,-2.18 1.34,-1.34 4.68,-0.44 6.11,-2.14 2.35,-0.74 2.26,3.5 4.57,1.02 2.44,-0.29 1.26,-3.78 2.59,-5.17 -1.46,-1.93 -1.99,-4.68 1.15,-4.47 0.21,-2.43 -3.03,-4.09 -3.83,-6.1 -0.81,-1.69 -4.49,-0.9 -5.2,-3.54 -1.75,0.56 -3.25,0.45 -4.22,-0.82 -1.42,1.85 -1.72,-1.94 -2.91,-0.25 -3.3,-0.03 -3.97,-4.4 -7.72,-2.73 0.56,-2.08 -4.7,-2.08 -3.15,-4.59 -0.87,-1.66 -4.22,-2.08 -2.44,-4.29 -0.3,-2.54 -4.15,-5.59 -5.48,-2.93 -1.22,-0.57 -5.78,1.4 -3.85,-1.55 0.3,-0.71 0.63,-1.62 -0.55,-1.38 z m -24.48,7.33 c -2.5,0.03 -3.87,1.14 -1.7,3.09 3.95,0.17 7.19,2.31 10.9,3.68 3.89,-1.05 -3.64,-4.87 -5.82,-4.1 0.29,-2.41 -4.61,1.24 -3.83,-1.48 1.5,1.02 1.83,-1.02 0.46,-1.19 z m 4.27,13.72 c -0.7,1.54 2.03,3.7 0.87,5.86 3.02,2.81 6.53,5.8 7.08,10.16 2.32,-1.62 3.28,-6.49 0.08,-7.91 -0.51,-2.29 -0.47,-5.1 -3.54,-5.11 -1.46,-1 -2.65,-2.71 -4.49,-2.99 z", + "department-33" : "m 170.37,365.5 c -2.88,2.39 -3.66,6.38 -3.67,9.99 -0.06,6.47 -0.57,12.93 -1.99,19.26 -0.93,8.17 -1.59,16.38 -2.58,24.55 0.15,2.18 -1.38,7.44 -0.06,8.1 -0.08,-3.31 1.98,-7.54 4.36,-8.96 1.97,1.72 7.34,5.74 3.76,7.49 -2.73,1.04 -6.38,-2.36 -6.38,2.52 -1.52,2.69 -2.74,7 -1.06,9.24 2.84,-0.63 5.96,-2.27 7.61,-3.75 2.03,1.26 5.7,0.92 3.77,4.43 -2.89,4.65 3.5,-0.33 5.45,2.23 3.86,1.51 7.87,-3.74 11.26,-0.84 -1.42,4.09 4.44,3.2 5.19,6.56 1.94,1.37 4.07,0.77 4.89,3.31 2.18,0.86 -1.21,6.6 3.33,5.68 2.58,1.12 6.14,0.42 4.75,-3.03 1.75,-3.72 3.17,3 5.62,1.04 3.5,-1.1 3.84,-4.91 0.95,-7.06 1.78,-1.99 6.6,-1.58 3.43,-5.47 1.27,-2.35 -1.77,-5.16 1.09,-7.2 -1.95,-2.11 4.08,0.01 3.42,-3.48 2.15,-0.49 2.85,-2.17 2.61,-3.54 1.82,1.01 2.01,-3.15 -0.54,-1.86 -1.24,-1.31 -2.01,-2.64 0.2,-3.47 -0.33,-1.44 2,-1.21 2.56,-1.67 0.96,3.46 0.77,-3.24 2.88,-0.59 3.44,-0.12 -2.08,-5.38 2.19,-5.6 -0.3,-3.57 -4.29,-0.98 -5.16,1.24 -2.94,-0.94 -4.42,-0.02 -6.92,-0.52 -0.48,-1.95 -5.24,-0.86 -1.96,-2.84 3,-2.61 -1.26,-5.76 1.74,-8.21 0.18,-2.65 3.61,-7.86 -1.4,-8.03 -1.8,0.66 -3.02,1.85 -4.53,-0.13 -2.79,3.68 -7.23,0.65 -9.47,-1.85 -1.02,0.81 -2.89,-3.34 -3.74,-0.02 -1.83,-2.9 -1.15,-5.89 -1.94,-8.56 -2.49,-1.97 -7.58,0.6 -7.16,-4.13 -0.99,3.32 -7.86,-1.7 -5.65,3.47 1.12,5.25 -0.04,11.74 4.13,15.79 1.6,0.97 5.46,1.4 5.09,3.59 -1.14,-1.76 -5.95,-2.2 -2.42,0.16 0.89,1.86 0.32,4.86 0.46,6.96 -0.86,-3.57 -0.31,-7.65 -4.4,-9.5 -4,-3.65 -3.81,-9.3 -4.62,-14.2 -0.83,-4.14 -2.82,-8.05 -6.26,-10.61 -1.82,-3.68 -6.55,-3.9 -8.36,-7.63 -0.3,-0.84 1.03,-2.73 -0.47,-2.88 z", + "department-40" : "m 169.77,433.93 c -1.39,4.09 -9.03,1.92 -8.11,7.38 -1.02,7.04 -1.81,14.11 -3.21,21.09 -1.27,6.3 -2.02,12.7 -3.64,18.93 -1,6.23 -2.25,12.44 -3.8,18.55 2.58,-1.5 3.77,4.05 6.97,1.91 3.34,1.32 5.68,-3.95 8.44,-2.39 2.07,1.33 0.83,1.91 -0.48,2.62 2.25,0.71 3.66,-2.53 5.72,-0.83 1.43,1.01 3.09,-0.31 2.14,-1.78 2.65,0.58 4.62,-1.18 7.1,-0.71 0.89,-0.91 2.56,-0.97 3.4,-1.93 1.42,1.18 2.14,3.21 3.39,1.18 1.9,-0.75 2.12,-1.21 2.41,0.33 1.62,2.42 3.07,-1.23 4.2,0.55 1.35,-0.65 5.1,-4.97 5.14,-2 -2.25,3.45 3.32,-1.25 4.51,1.48 1.42,-0.66 5.29,-2.61 3.41,-4.06 -2.62,-1.1 2.2,-2.69 0.51,-4.53 -0.4,-2.09 3.75,-3.09 1.72,-4.6 0.25,-1.62 -1.17,-3.73 0.82,-4.32 -0.1,-1.59 -0.15,-2.99 -0.15,-4.15 -3.84,-1.04 1.14,-3.46 2.82,-3.81 1.4,0.08 1.6,0.86 2.46,-0.49 1.85,-0.5 2.29,-3.87 4,-0.74 -0.03,1.42 -1.08,2.56 1.12,3.35 3.85,1.54 0.42,-3.68 2.06,-5.19 -1.31,-3.01 1.52,-6.01 2.73,-8.67 -3.45,-0.68 -6.76,-2.36 -10.44,-2.46 -3.14,0.72 -0.38,-5.12 -3.37,-6.17 -1.68,-2.94 -3.31,0.33 -2.44,2.4 -1.45,2.03 -6.15,0.75 -7.76,-0.49 0.06,-2.43 0.64,-4.45 -1.66,-5.74 -0.75,-1.94 -4.67,-0.97 -4.92,-3.99 -2.01,-1.55 -5.69,-1.4 -4.21,-4.64 -1.24,-2.31 -3.79,0.2 -5.94,-0.34 -3.05,3.71 -7.01,-1.41 -10.49,1 -4.03,1.42 2.63,-4.52 -0.65,-5.54 -1.61,0.68 -2.43,-1.07 -3.83,-1.21 z", + "department-64" : "m 211.2,495.72 c -1.9,1.07 -4.71,-0.23 -5.99,2.39 -1.98,0.52 -4.11,-1.44 -6.18,0.45 -1.47,-0.65 2.04,-3.79 -1.1,-2.24 -1.84,1.1 -3.29,3.13 -5.1,2.48 -1.96,1.45 -5,-2.73 -6.29,0.37 -1.3,-1.42 -2.42,-3.2 -3.7,-1.06 -1.86,0.3 -2.9,1.44 -5.06,0.79 -0.86,1.97 -4.19,-0.71 -3.64,2.4 -2.25,0.68 -5.49,-1.09 -7.26,1.32 -3.27,-0.97 2.34,-1.26 -0.09,-2.53 -2.18,-3.25 -4.64,2.8 -7.39,1.71 -2.74,0.92 -5.67,0.14 -7,-2.21 -3.51,1.11 -4.76,4.93 -7.06,7.37 -1.86,2.09 -5.86,0.94 -7.14,3.17 0.39,1.82 2.63,2.08 2.45,4.31 2.16,-0.79 5.47,-0.83 4.92,2.37 1.44,2.55 2.98,-0.5 3.6,-1.51 2.37,0.53 4.98,1.17 7.12,1.91 1.21,3.15 -0.34,6.66 -1.84,9.39 -3.7,1.82 -0.21,5.81 2.82,5.62 2.52,-0.18 0.25,-6.64 4.3,-5.38 -2.77,2.45 0.66,4.77 3.15,4.41 2.76,1.62 4.75,2.53 7.73,3.53 2.51,0.74 4.11,3.68 7.28,2.92 2.81,1.52 7.35,-3.02 7.16,2.26 -1.02,2.96 3.25,2.28 4.34,4.46 1.78,1.41 3.01,6.8 5.13,3.41 1.29,-2.94 5.1,2.52 7.14,-0.85 1.53,-1.11 3.1,-1.71 2.2,-4.29 -2.14,-2.89 3.19,-3.06 1.08,-6.08 -0.73,-2.21 1.82,-2.45 1.78,-4.48 3.8,1.19 0.42,-4.25 3.06,-5 2.06,-1.26 1.63,-4.46 4.21,-4.01 0.61,-1.33 0.15,-2.87 1.47,-3.33 2.68,-2.17 -1.51,-4.94 1.51,-6.75 3.94,0.18 -1.17,-3.74 0.89,-5.91 -0.71,-3.82 -1.88,1.82 -3.23,0.54 -0.52,-1.85 0.16,-3.46 1.54,-4.09 -0.91,-1.78 -0.41,-4.39 -2.84,-4.92 0.66,-3.73 -2.6,-1.04 -3.99,-2.95 z", + "department-65" : "m 216.99,494.91 c -1.84,0.25 -2.8,4.03 -0.53,4.11 1.88,1.3 0.29,3.67 2.23,4.92 -1.93,0.09 -2.67,2 -1.81,3.38 0.3,1.54 2.42,-3.88 2.78,-0.62 0.04,1.77 -0.37,4.08 1.04,5.66 -0.74,1.52 -3.19,0.65 -3.23,3.06 1.46,1.22 1.22,2.8 0.07,4.31 -0.99,0.9 -1.52,1.78 -1.24,3.38 -1.18,1.4 -2.47,-0.59 -2.75,1.65 -0.31,2.34 -3.5,2.62 -2.83,5.08 -0.23,1.21 0.77,2.46 -1.27,2.75 -1.74,-1.03 -0.67,2.29 -2.47,2.46 -0.22,2.15 1.18,4.49 -1.44,5.52 0.13,2.35 0.39,5.58 3.33,6.26 1.51,1 2.85,2.84 4.69,1.37 -0.57,1.85 1.47,3.6 2.41,4.96 1.56,0.38 2.66,3.5 4.75,1.97 1.8,-0.64 3.96,-1.24 5.98,-1.71 2.21,-1.74 5.92,-0.18 6.53,2.47 2.16,1.45 2.84,-4.54 5.11,-1.48 1.05,2.42 6.1,0.26 2.72,-1.38 -0.47,-1.86 -0.16,-4.75 -0.08,-7.05 -0.01,-1.71 0.82,-4 2.68,-2.21 3.39,1.23 2.02,-4.26 4.56,-5.2 1.78,-1.39 -1.78,-2.01 -0.27,-3.71 -0.3,-0.99 -0.83,-2.98 -1.65,-1.25 -1.08,0.21 -3.2,2.39 -2.44,-0.12 -0.09,-1.57 2.08,-1.37 1.06,-3.26 -1.4,-1.24 -3.29,-2.47 -4.49,-3.12 -2.02,-2.1 3.51,-3.46 2.42,-5.76 0.93,-0.47 4.3,-0.56 1.96,-2.04 0.32,-1.95 5.47,-3.77 2.06,-5.05 -2.3,-1.28 -4.63,-0.69 -6.84,-1.39 -2.1,2.1 -2.26,-2.3 -4.28,-0.93 -1.76,1.3 -0.81,-1.74 -2.47,-1.53 -0.55,-2.46 -4.01,1.85 -5.67,-0.21 0.62,-1.85 -3.42,-2.4 -1.35,-4.21 1.51,-1.16 -1.9,-2.45 -1.19,-4.22 -1.14,-1.21 -3.48,-0.65 -4.39,-2.66 -2.13,-0.62 -0.57,-4.95 -3.7,-4.22 z", + "department-32" : "m 246.37,463.78 c -1.87,2.87 -5.69,0.08 -7.22,3.28 -1.88,1.49 -4.2,0.57 -5.81,2.33 -2.39,-0.54 -4.55,-3.39 -6.11,0.1 -0.16,1.89 -1.71,0.96 -1.7,-0.3 -2.5,0.36 -4.05,2.53 -2.63,4.96 0.01,3.29 -6.18,-0.5 -3.3,-1.85 -0.54,-2.21 -2.13,-1.97 -3.07,-0.29 -1.34,0.89 -1.71,2.04 -3.36,1.03 -1.68,0.34 -3.48,1.37 -4.38,2.76 1.22,0.28 3.13,1.71 1.37,2.42 1.01,1.6 0.51,3.2 -0.73,3.83 -0.07,2.44 2.42,4.6 -0.76,5.86 -1.18,1.63 0.66,4.33 -1.94,5.01 -0.42,1.69 2.27,1.13 1.62,3.13 2.18,-0.55 3.63,0.28 6.01,0.22 1.55,-0.54 3.47,-2.96 4.82,-0.45 0.15,2.77 2.68,4.35 4.51,5.25 2.48,-0.68 1.19,3.49 3.25,4.21 -0.48,0.88 -2.09,2.3 -0,3.14 1.28,0.27 0.25,2.29 2,2.07 2.01,0.08 3.81,-1.91 5.13,-0.1 0.83,0.3 0.34,2.73 2.13,1.32 1.65,-1.02 1.99,3.25 3.69,0.87 2.91,0.44 5.72,1.25 8.79,1.59 2.28,-1 2.83,-4 4.96,-4.85 -0.08,-1.97 1.2,-2.17 2.72,-1.09 2.04,-2.03 5.8,0.4 7.36,1.79 1.25,2.38 1.53,-1.44 1.56,-2.27 1.63,-0.08 0.78,-2.07 1.64,-3.14 -1.95,-1.43 1.97,-2.65 1.07,-4.39 -0.66,-1.2 0.97,-1.78 2.08,-0.85 0.33,-1.45 2.39,-1.29 3.2,-2.18 2.33,0.7 0.78,-3.33 -0.81,-2.33 -0.96,-0.86 -0.26,-2.97 -2.3,-2.06 -1.55,-0.33 0.33,-2.07 -1.76,-1.78 -1.88,-0.75 0.92,-3.18 -2.09,-3.14 -1.61,-1.44 -2.45,-4.37 -4.36,-5.15 -3.35,1.69 1.17,-3.08 -1.5,-3.24 0.76,-1.49 -1.03,-2.76 -0.22,-4.22 -1.16,-1.24 -2.92,-1.03 -4.29,-1.63 -2.35,1.17 -1.75,-1.94 -0.23,-2.55 1.5,-1.23 1.3,-2.73 1.39,-4.08 3.53,-0.83 -1.38,-2.38 -2.33,-0.22 -1.18,0.08 -0.41,-3.33 -2.53,-1.63 -1.28,0.69 -2.36,3.52 -3.35,0.81 -0.67,-0.82 -1.46,-1.92 -2.53,-2.18 z", + "department-47" : "m 230.07,418.5 c -0.81,0.77 -0.9,3.82 -1.83,1.38 -1.82,-0.02 -3.21,2.14 -3.88,3.3 1.04,0.9 2.08,1.66 3.3,1.8 -0.04,1.51 -1.7,2.55 -2.03,4.05 -1.55,0.64 -2.55,2.47 -3.24,3.29 -3.01,0.59 -4.44,4.14 -2.78,6.75 -1.33,1.76 2.46,5.68 -1.08,5.69 -2.16,-0.16 -3.67,2.4 -1.25,3.45 1.89,2.62 -1.53,5.28 -3.79,5.58 -0.01,1.94 -0.52,5.85 2.43,4.84 2.83,-0.58 4.82,1.94 7.53,1.7 1.96,-0.36 2.73,1.43 1.07,2.55 -0.51,2.08 -4.01,5.95 -0.67,6.93 1.39,-0.27 1.71,-1.54 2.32,0.34 1.42,0.2 1.56,-3.84 3.99,-2.43 2.21,2.53 4.49,0.26 7.07,0 2.57,-0.7 3.69,-3.71 6.77,-2.71 1.7,-0.39 3.39,-2.44 4.44,0.28 1.31,3.29 3.19,-0.23 4.88,-1.16 0.36,-1.62 1.13,-2.69 2.56,-3.54 -1.25,-2.97 5.51,1.65 4.18,-2.52 -0.96,-0.29 -2.25,-1.68 -0.22,-2.14 2.35,-0.03 2.05,-4.03 2.4,-5.78 -1.23,-1.07 -4.15,-1.71 -2.2,-3.71 -0.38,-1.68 1.32,-4.27 2.55,-1.77 1.53,0.85 4.19,-0.22 5.25,-0.41 0.48,-2.12 -0.42,-3.89 -1.57,-5.33 0.06,-1.97 -1.67,-5.18 -1.15,-6.13 2.23,0.07 5.01,-2.93 1.78,-3.93 -1.73,-2.48 -5.12,-2.94 -6.92,-0.28 -2.08,2.1 -3.89,-1.44 -2.14,-3.04 0.26,-1.39 -1.37,-4.01 -2.62,-1.92 -2.44,1.01 -5.83,0.37 -7,-0.95 -2.41,-0.18 -2.86,2.94 -5.17,1.62 -2.31,0.8 -5.39,2.91 -7.69,0.67 0.42,-2.17 -0.14,-6.16 -2.93,-6.02 -0.81,0.25 -1.86,0.44 -2.38,-0.43 z", + "department-31" : "m 290.02,474.31 c -1.06,1.38 -2.08,2.2 -3.14,1.27 -0.58,4.46 -6.27,-1.79 -5.29,3.06 -1.9,-0.93 -3.5,1.28 -0.64,0.98 2.48,2.1 -3.77,2.63 -4.93,4.19 -2.22,1.21 -0.1,-1.87 -2.62,-1.46 -1.27,-3.41 -2.92,1.42 -4.53,-1.01 -1.38,1.57 -7.9,0.39 -4.49,3.87 1.19,2.36 4.47,2.68 3.64,5.37 2.67,0.06 0.55,2.9 3.52,1.95 0.58,0.93 0.66,2.79 2.12,2.09 2.71,3.12 -2.63,3.32 -4.16,4.93 -1.1,-1.53 -1.56,1.15 -1.34,1.61 0.44,1.44 -2.97,2.2 -1.16,3.88 -0.09,2.59 -2.4,2.6 -1.68,5.18 -1.9,1.75 -3.41,-2.85 -6.25,-2.48 -1.97,-0.25 -2.83,1.49 -4.6,-0.2 -0.73,3 -3.35,2.98 -4.53,6.1 -1.7,0.77 -1.89,0.75 -1.75,2.05 -1.29,1.74 -3.85,2.87 -2.67,4.97 -1.64,0.77 -2.86,0.43 -2.8,2.37 -2.19,1.55 -3.92,4.34 -0.36,4.93 1.97,0.94 4.52,4.07 1.77,4.79 -1.3,4.88 3.7,-2.96 3.72,1.66 0.49,1.32 -0.65,2.24 1.07,3.28 -2.79,1.64 -2.18,9.05 -6.68,5.6 -1.73,2.41 -1.93,7.77 -0.38,10.18 1.27,3.59 5.97,0.17 8.88,1.83 2.51,-1.92 -1.95,-5.09 0.25,-7.4 -0.76,-3.42 2.9,-4.02 4.93,-2.32 1.62,-0.12 4.31,1.32 2.68,-1.53 -0.93,-1.79 -1.4,-4.59 1.53,-4.74 -1.15,-3.31 5.98,-1.18 5.47,-5.37 -2.22,-1.5 -0.83,-5.26 0.13,-6.33 2.45,2.03 0.85,-3.56 3.56,-1.87 1.66,-2.07 2.75,0.56 4.53,0.43 1.14,1.96 2.46,4.41 4.04,1.37 2.25,-2.5 -5.64,-2.56 -1.56,-4.98 1.91,-0.32 6.85,-0.7 5.84,-3.41 -3.62,0.11 -4.71,-4.72 -0.54,-4.92 1.7,1.78 3.23,3.99 3.46,6.31 3.43,1.14 2.88,-2.05 2.74,-4.44 1.24,-0.74 2.86,2.59 3.98,0.85 2.05,0.25 3.31,3.93 3.51,0.42 1.87,-1.02 3.37,-2.54 3.2,-4.86 1.65,-0.79 5.11,0.92 3.61,-2.58 0.23,-2.56 3.55,-6.11 4.18,-1.52 0.52,0.87 1.91,-3.3 3.78,-0.91 2.24,0.69 2.87,-1.22 1.62,-2.8 0.91,-0.95 2.23,-3.84 -0.03,-2.5 -1.07,2.43 -6.09,-0.82 -6.91,-3.1 -0.98,-3.43 -6.75,-3 -7.98,-6.29 2.91,-1.68 0.76,-3.48 -1.25,-4.16 3.26,-0.53 0.29,-2.11 -0.5,-3.7 0.64,-3.06 -3.23,-3.07 -3.17,-5.79 -1.79,-0.87 -1.06,-3.76 -1.85,-4.82 z", + "department-09" : "m 281,514.26 c -1.93,0.45 -2.81,3.42 -0.61,3.74 0.47,1.06 3.65,0.84 1.91,2.92 -1.78,0.48 -2.86,1.94 -5,1.65 -1.94,-0.47 -2.72,3.01 -0.2,2.59 2.24,0.58 1.95,2.32 0.27,3.21 -1.24,2.42 -2.69,-0.31 -3.19,-1.7 -1.18,-0.65 -2.35,-0.74 -3.49,-1.68 -1.21,1.5 -3.6,0.41 -3.5,3.08 -0.69,0.69 -2.14,-1.23 -2.07,0.85 0.78,1.23 -1.59,1.79 -0.08,3.25 -1.18,1.45 2.43,1.96 0.17,3.11 -0.33,2.96 -5.7,1.12 -4.88,4.08 -1,0.73 -3.51,0.76 -1.93,2.67 -0.14,2.58 1.36,4.98 3.85,6.04 1.3,1.43 2.44,-0.82 3.84,0.84 2.2,0.69 5.28,-0.08 6.42,2.49 -0.04,2.84 2.56,2.9 4.54,2 2.27,0.7 5.31,-0.62 6.28,1.97 2.47,1.03 1.46,6.42 4.53,5.84 0.33,-1.46 -0.02,-3.65 2.25,-2.77 2.58,-1.67 3.67,2.32 6.42,1.51 1.59,0.01 4.16,0.09 3.44,2.23 1.96,0.82 4.9,1.1 6.14,-0.77 0.17,-1.61 2.36,0.02 3.34,-1.21 1.09,-1.15 1.09,-3.64 3.34,-2.57 1.75,-1.21 4.32,-0.24 5.87,-0.95 0.4,-2.48 -3.41,-3.46 -4.42,-5.35 -2.08,0.81 -4.89,2.28 -6.69,-0.08 -1.29,-0.72 0.48,-2.24 -1.27,-3.27 -1.88,-0.45 -2.07,-2.21 -0.54,-3.2 2.84,0.11 5.65,-1.41 4.42,-4.62 -1.62,-0.54 -3.31,-2.15 -0.6,-2.68 1.86,-1.01 -0.44,-3.29 0.61,-4.77 -1.01,-0.87 -2.68,-1.46 -1.18,-2.69 -0.07,-1.43 -0.47,-4.45 -2.45,-3.41 -0.92,1.43 -0.96,-2.2 -2.67,-1.24 -2.3,-0.25 -5.38,-1.98 -6.1,-3.66 0.91,-1.6 -0.72,-3.91 -1.67,-5.05 -0.92,0.6 -1.38,4.39 -1.98,1.49 -1.2,-0.67 -2.47,-1.05 -3.16,-0.2 -0.47,-1.65 -2.24,-0.25 -2.45,-1.94 -1.91,1 1.34,4.52 -1.22,4.39 -1.46,2.03 -3.74,-0.79 -2.75,-2.52 -1.34,-0.95 -2.09,-3.13 -3.54,-3.63 z", + "department-11" : "m 322.74,505.07 c -2.05,0.87 -0.82,6.47 -3.43,3.37 -1.24,-1.83 -5.19,2.71 -5.61,-1.17 -0.96,-1.29 -3.24,1.91 -4.87,-0.09 -1.63,-0.8 -2.35,3.52 -2.64,0.63 -0.96,-2.44 -1.93,-1.82 -2.84,-0.31 -0.91,1.07 -1.52,2.84 -0.93,4.7 -1.36,0.65 -4.52,-0.56 -3.73,2 -2.59,1.87 -0.87,4.71 -0.49,7.11 -1.27,1.72 2.24,1.99 3.14,3.2 1.19,0.53 2.27,1.21 2.96,0.05 1.12,0.9 1.35,2.64 3.05,1.69 2.12,0.9 2.09,4.11 1.18,5.21 3.13,0.75 0.58,4.42 2.61,6.09 -0.39,0.99 -3.64,-0.55 -2.72,1.47 3.15,0.22 2.69,5.73 -0.43,5.57 -2.23,-0.56 -4.71,2.43 -1.69,3.29 1.21,1.07 1.25,2.2 0.94,3.14 2.17,2.52 4.98,0.67 7.49,0.33 1.51,2.48 4.82,3.48 4.44,6.58 1.77,-0.41 3.17,-3.16 4.49,-3.39 3.31,0.6 4.11,-3.13 3.04,-5.57 -1.83,-2.22 -0.3,-4.53 2.45,-3.77 2.55,1.09 4.79,-0.72 7.38,0.01 2.84,0.15 6.37,1.82 8.78,-0.17 0.65,-3.39 5.24,-6.04 7.54,-2.78 1.85,0.63 5.78,4.21 6.08,0.38 -0.45,-2.41 3.52,0.65 2.08,-2.31 -2.01,-0.09 -2.51,-4.47 -0.81,-3.38 -1.64,2.12 0.92,2.66 1.07,0.34 -0.46,-2.15 2.38,-4.6 1.05,-6.15 -2.36,0.27 -1.35,-5.67 0.64,-3.13 -2.54,0.73 1.01,4.03 1.12,0.84 1.32,-2.4 3.72,-4.96 4.13,-7.43 -1.48,-1.18 -2.13,-3.67 -4.25,-2.51 -1.21,-1.56 -3.82,-0.43 -5.13,-2.43 -2.87,1.08 -0.98,-4.2 -4.12,-2.08 -1.35,-0.41 -2.91,-0.78 -3.72,-1.82 -0.39,1.7 -3.42,0.2 -2.88,2.31 -1.03,1.88 -2.16,4.69 -4.29,2.05 -1.21,-0.21 -0.6,-4.63 -2.32,-1.66 -2.18,1.62 -3.12,-0.12 -3.87,-2.12 -3.09,-0.03 -1.41,-4.42 0.31,-5.1 -2.19,-1.27 -5.18,-2.28 -7.77,-1.42 -1.98,2 -4.51,-1.63 -6.72,-1.15 -0.21,-0.07 -0.4,-0.62 -0.72,-0.42 z", + "department-34" : "m 390.74,470.95 c -2.99,-0.26 -2.82,5.22 -4.91,4.05 -0.85,-0.82 -3.55,2.9 -1.7,3.78 -2.23,1.02 -3.63,-1.19 -4.2,-2.93 -1.16,0.9 -4.89,3.4 -3.25,0.24 -0.72,-2.79 -3.95,-1 -5.3,0 -2.69,-1.07 -4.43,1.99 -3.3,4.01 -2.19,2.21 -5.5,0.8 -7.8,-0.28 -1.78,1.11 -0.38,3.61 -0.42,5.05 -1.55,1.49 1.67,5.37 -2.24,4.09 -1.98,-1.46 -4.85,0.46 -4.95,2.6 -2.71,0.38 -5.15,2.58 -7.61,2.47 -1.2,-2.9 -5.65,-2.66 -5.41,0.83 -0.2,2.13 -0.02,4.29 2.09,5.91 -1.23,1.35 0.72,3.85 -1.77,4.6 -0.84,1.05 -3.22,1.42 -1.8,2.86 -2.1,0.55 -3.27,4.78 -0.38,4.9 0.41,3.09 3.29,3.1 4.71,0.7 1.12,1.12 0.35,3.34 2.55,3.76 2.97,1.15 1.66,-5.18 5.05,-4.27 1.09,-0.26 0.38,-2.58 1.62,-0.55 1.21,1.33 3.32,1.66 5.28,1.1 -0.81,3.2 2.64,2.34 4.33,4 1.73,-0.69 2.59,1.52 4.38,0.6 1.39,1.92 3.62,4.56 5.52,1.34 2.58,-2.15 5.39,-4.64 8.99,-3.22 1.68,-2.14 3.28,-4.7 5.33,-6.66 2.9,-0.94 5.12,-2.93 7.63,-4.62 1.32,-0.52 2.38,-2.93 0.36,-1.17 -0.86,0.97 -3.9,2.82 -4.09,1.95 2.86,-0.54 3.94,-3.18 5.35,-4.98 2.22,-0.89 3.15,-3.57 5.97,-3.69 2.76,-1.69 5.46,-2.2 8.14,-1.32 3.13,-2.28 2.15,-5.6 0.6,-8.52 -0.42,-1.85 -2.64,-1.51 -3.41,-3.24 -1.72,-0.64 -2.58,-4.02 -5.12,-2.47 -0.36,-1.17 1.06,-3.05 -1.22,-3.23 -1.16,-1.21 -1.48,-2.47 -3.51,-1.47 -2.48,1.54 -3.44,-1.7 -1.82,-3.25 0.15,-1.49 -1.98,-1.29 -2.11,-2.79 -0.5,-0.22 -1.04,-0.13 -1.56,-0.19 z", + "department-81" : "m 317.26,455.8 c -1.38,0.45 -1.96,1.61 -3.59,0.76 -0.3,1.95 -3.52,3.22 -5.56,2.27 -1.35,-1.6 -1.97,-0.02 -0.95,1.04 -0.95,0.36 -4.67,-1.27 -3.47,1.46 -0.16,1.66 -2.33,-1.92 -2.18,0.76 -1.1,0.98 -2.79,-1.57 -4.48,-0.74 -2.96,-0.67 -1.32,3.31 0.16,3.83 0.79,1.92 -1.89,3.01 -2.42,4.25 -1.32,0.93 -1.16,3.17 -3.54,1.88 -3.23,0.63 2.44,1.72 -0.33,3.16 -1.29,2.54 1.59,4.57 1.92,6.82 3.43,0.3 1.18,4.78 4.33,5.68 1.56,1.28 -3.01,2.06 -0.13,2.25 2.4,0.02 1.46,2.84 -0.02,3.51 0.41,1.89 3.59,2.46 5.14,3.73 3.27,0.27 2.72,5.06 6.14,5.64 1.57,0.82 3.54,1.72 3.47,-0.75 2.28,-0.44 1.4,2 0.21,3 0.06,1.82 2.22,2.93 2.93,4.31 2.14,0.3 3.89,-2.52 5.16,0.35 2.18,0.85 0.37,-3.47 2.64,-4.11 1.88,0.14 4.42,2.05 6.83,2.16 2.71,-2.86 6.35,1.58 9.11,-0.98 1.2,-0.64 2.07,-1.84 2.78,-2.36 -0.59,-1.87 0.29,-4.05 -1.8,-5.38 -0.4,-2.17 -0.06,-5.25 1.22,-6.85 1.68,0.37 3.78,1.08 4.87,2.68 2.13,-1.79 6.04,-1.49 7.35,-3.74 0.82,-2 0.39,-5.04 -2.37,-4.51 -1.51,-1.26 -3.19,-1.55 -4.19,0.39 -2.37,0.97 -5.11,-0.89 -6.55,-2.85 -1.52,-2.15 -3.76,-4.35 -2.85,-6.85 -1.52,-0.96 -0.28,-3.74 -2.85,-4.01 -0.47,-0.84 1.76,-2.39 -0.4,-3.07 -0.29,-2.52 -2.16,-4.07 -4.11,-4.88 -0.57,-2.53 -3.81,-3.32 -5.31,-4.22 -0.15,-2.48 -4.32,0.72 -4.86,-1.12 1.44,0.14 3.17,-1.78 0.74,-1.46 -0.91,0.39 -2.23,-1.71 -3,-2.06 z", + "department-82" : "m 270.52,443.01 c -2.14,1.16 -4.19,2.19 -6.63,2.16 -1.8,1.76 -1.62,-2.78 -3.54,-0.83 0.31,1.77 -1.92,4.88 1.19,4.85 2.39,1.55 0.09,4.21 -0.3,6.31 -0.44,1.21 -4,0.94 -1.6,2.01 1.97,0.84 -0.06,4.23 -1.88,2.4 -1.71,-1.22 -1.76,0.34 -2.14,1.6 -2.88,-0.32 -2.21,4.49 -0.81,4.92 0.76,-1.3 4.97,-1.27 3.43,0.36 -1.84,1.04 -0.66,3.8 -2.94,4.81 -1.25,0.84 -0.68,2.87 0.84,1.84 1.82,0.52 5.75,1.1 3.97,3.56 1.04,0.67 0.69,2.25 0.98,2.38 1.77,0.78 -1.98,4.07 1.01,3.39 2.26,-0.43 4.92,-0.42 6.74,-1.49 1.27,0.58 2.39,0.31 3.28,-0.35 1.56,0.75 2.53,2.41 3.56,2.88 1.74,-0.62 2.22,-2.04 4.12,-2 1.89,-0.5 1.91,-2.44 -0.22,-2.07 -1.95,-1.13 1.52,-1.46 1.74,-1.49 -0.38,-2.02 1.51,-2.5 2.7,-1.14 2.06,1 2.76,-3.06 4.11,-1.34 0.99,-1.05 2.54,-1.76 3.38,-2.23 -0.31,-0.89 -2.82,-2.03 -0.52,-2.27 3.19,1.02 3.39,-3.02 5.79,-4.18 1.52,-1.98 -2.9,-3.42 -1.35,-5.63 1.94,-1.07 4.17,0.24 5.66,0.61 0.71,-1.21 1.03,-1.65 2.08,-0.63 0.24,-1.33 0.21,-2.59 2.09,-1.85 1.1,0.24 2.24,0.41 1.15,-0.79 0.51,-1.8 4.19,2 3.66,-0.96 -0.31,-2.1 -2.39,0.61 -2.47,-1.31 -3.3,-1.19 0.65,-3.45 1.77,-4.89 0.21,-2.45 -4.44,-0.16 -4.38,-2.98 0.49,-1.88 -1.6,-1.91 -2.4,-1.54 -1.21,-0.58 -1.91,1.84 -3.15,0.41 -2.28,-0.21 -4.04,4.15 -5.85,2.74 -0.79,-2.47 -3.62,0.05 -1.56,1.51 0.31,2.35 -3.95,2.36 -3.07,-0.25 -2.24,-2.68 -3.51,1.69 -5.86,2.39 -1.45,2.53 -2.73,-0.71 -4.63,-0.48 -0.83,-1.02 1.91,-4.61 -0.86,-3.31 -1.97,2.14 -4.17,-0.81 -5.73,-2.04 -1.54,-0.03 -2.07,-2.27 -2.71,-3.05 0.48,-0.77 3.85,-1.24 1.34,-2.04 z", + "department-12" : "m 344.82,407.22 c -2.14,2.24 -4.92,3.53 -5.91,6.44 -0.2,3.05 -2.88,4.6 -2.81,7.85 -2.78,1.77 -2.83,6.44 -7.03,4.76 -2.85,0.81 -3.66,-2.92 -6.7,-0.63 -2.79,-0.18 -0.5,4.84 -3.68,4.44 -1,2.09 -4.35,0.18 -4.99,0.68 -2.27,1.36 -4.93,3.35 -6.47,5.56 -0.5,0.74 -1.33,-2.39 -1.72,0.49 -3.55,0.2 0.23,4.71 0.28,6.73 2.91,2.12 -2.27,3.27 -0.47,5.85 1.39,1.46 5.91,0.06 3.8,3.53 -3.1,-0.35 -2.94,5.1 0.37,3.8 0.84,2.24 2.93,2.1 3.97,0.28 0.64,-0.72 3.02,-0.92 4.38,-1.29 0.38,2.53 5.59,1.47 2.9,3.68 1.7,0.61 3.86,-0.93 4.36,1.52 3.19,-0.21 4.33,4.36 7.18,4.97 1.07,2.25 3.3,4.6 2.21,6.63 2.23,0.9 1.85,3.49 2.9,4.9 -1.38,2.72 2.8,5.25 4.08,7.58 2.19,1.85 5.01,1.88 6.77,-0.28 2.08,1.32 5.71,0.5 5.44,3.99 1.27,0.35 3.33,-1.02 4.93,0.31 1.97,-0.43 -0.03,-3.71 1.21,-5.08 -2.26,-3.18 1.08,-5.37 3.72,-2.96 2.82,0.94 5.31,-0.91 4.29,-3.64 1.04,-3.15 6.02,0.38 5.11,-4.28 0.93,-2.39 7.18,-5.33 2.04,-7.25 -1.51,-0.47 -2.97,-0.34 -3.42,-2.06 -1.73,1.9 -3.93,-2.51 -0.51,-1.95 0.48,-1.6 1.14,-3.68 2.65,-4.73 -0.68,-4.43 -9.42,2.3 -6.63,-3.08 -1.18,-1.25 -3.15,-1.32 -3.65,-2.81 -2.6,0.85 1.8,-4.01 -0.75,-5.21 -0.72,-3.41 2.21,-7.15 -2.14,-9.54 -0.76,-2.6 0.83,-5.86 -2.52,-7.49 -2.49,-2.83 -5.19,-5.99 -4.63,-9.9 -1,-0.3 1.62,-2.72 -0.79,-2.1 -2.92,-0.77 -0.83,-7.54 -5.15,-5.36 -2.76,2.56 0.68,-4.65 -2.57,-4.34 z", + "department-46" : "m 289.52,399.9 c -1.93,0.63 -3.22,2.08 -5.19,2.51 -0.55,2.48 1.91,5.04 0.2,6.77 1.53,1.17 0.68,2.13 -0.64,2.71 -0.49,1.39 -2.82,1.08 -2.03,3.22 -2.04,0.31 -3.93,1.87 -1.84,3.73 -0.63,1.48 -1.5,2.57 -2.96,3.19 -1.15,2.55 -6.2,0.92 -4.86,4.75 -0.81,1.54 -2.94,2.2 -2.41,4.25 -2.21,-0.14 -3.42,2.82 -5.02,1.78 1.06,2.16 1.42,4.31 1.76,6.68 1.42,0.87 1.66,2.27 1.65,3.98 1.08,0.06 4.12,-1.76 2.93,0.81 -1.71,0.25 -2.37,1.31 -0.78,2.24 0.3,2.25 3.42,1.16 3.62,3.37 1.9,1.69 3.3,-0.16 5.08,-0.35 0.72,1.57 -2.26,4.22 0.76,4.02 1.46,0.62 1.81,2.15 3.19,0.31 1.85,-0.6 3.07,-3.05 4.33,-3.46 2.43,-0.2 1.29,4.21 3.91,2.83 1.72,-1.05 -1.79,-4.67 1.45,-4.27 1,-0.03 1.35,3.17 2.11,1.18 -1.32,-1.83 1.53,0.24 1.9,-1.51 1.38,-1.16 3.1,-1.29 4.45,-0.92 0.2,-1.96 1.81,0.11 2.71,-1.11 1.67,0.1 4.18,-1.49 1.89,-2.9 -0.47,-2.26 -2.34,-4.82 -1.67,-6.85 1.76,-0.03 1.59,-1.88 3.42,-1.54 2.32,-1.45 3.8,-3.77 6.26,-4.75 1.66,-0.78 4.05,1.82 5.11,-0.84 2.37,0.13 1.47,-2.41 -0.05,-3.14 -0.16,-1.64 0.62,-3.82 -1.82,-3.9 0.88,-2.1 0.95,-4.43 1.69,-6.42 -0.75,-2.19 -3.06,-3.63 -3.78,-5.98 -0.22,-1.15 1.69,-2.17 -0.2,-3.09 0.38,-3.82 -4.01,-3.64 -6.05,-1.43 -0.4,-1.8 -2.37,-1.92 -3.03,-0.03 -1.66,0.66 -3.24,2.7 -4.53,1.71 -1.67,0.61 -1.38,-2.93 -3.39,-2.7 -0.94,-2.08 -2.85,-4.19 -5.2,-4.37 -1.54,-0.53 -2.13,1.38 -2.99,-0.49 z", + "department-24" : "m 247.71,356.64 c -1.33,1.72 -2.15,5.44 -4.37,3.98 -1.29,2.19 0.65,6.02 -2.78,7.22 -1.07,1.73 -1.22,3.17 -3.43,2.89 -1.35,1.3 -2.7,2.47 -3.69,2.4 1.31,1.44 -2.43,1.19 -1.92,3.33 -1.11,2.86 2.21,7.18 -2.16,7.82 -1.72,1.11 -2.1,4.21 -4.37,4.44 -1.83,-1.85 -4.84,-0.09 -5.58,2.19 -1.71,0.92 1.62,1.85 -0.97,2.36 -2.09,3.33 4.38,0.08 4.2,3.85 0.13,2.45 -1.7,4.67 -1.9,7.15 -2.34,1.81 1.75,4.57 -1.01,6.63 -1.98,1.62 -0.57,1.93 1.18,2.08 1.5,2.41 4.72,0.24 7.34,1.24 1.58,-2.14 3.57,-4.36 5.67,-1.25 -1.59,1.46 -2.98,1.82 -1.65,4.38 2.67,1.95 3.57,5.11 3.66,7.87 2.89,2.27 5.83,-2.31 8.31,-0.64 1.5,-0.14 1.73,-2.6 3.78,-2.17 1.74,-0.66 1.71,2.87 4.06,1.59 2.32,0.27 4.87,-3.2 5.62,0.33 1.53,0.48 -2.2,5.61 1.71,4.55 1.86,-2.63 5.57,-3.37 7.55,-0.26 1.61,0.15 2.83,4.14 2.8,0.73 3.09,-1.47 0.93,-6.06 5.03,-5.87 2.1,-1.49 4.63,-2.68 4.89,-5.07 -3.18,-2.94 3.24,-2.15 2.07,-5.03 1.39,-0.77 2.75,-1.97 3.62,-3.12 -2.55,-1.45 1.11,-2.89 -0.92,-4.95 -0.82,-1.88 -0.06,-3.23 0.88,-4.14 -1.12,-2.13 -3.92,-5.19 -1.35,-6.5 -1.47,-1.44 -7.7,-0.59 -6.45,-3.12 3.25,-2.31 -3.9,-1.43 -1.21,-3.75 2.08,-0.54 1.75,-2.32 -0.17,-2.44 -0.66,-1.42 -0.44,-4.25 1.4,-4.42 0.7,-1.32 4.27,-4.12 0.61,-3.76 -2.11,-1.25 -0.47,-1.95 0.2,-2.77 -1.16,-1.12 -2.39,-0.61 -3.26,-2.06 -1.89,0.78 -2.29,-1.48 -4.2,-1.06 -0.44,-1.95 3.54,-4.4 -0.69,-4.44 -2.48,1.66 -3.1,-3.01 -4.18,-4.31 -2.45,-0.69 -5.34,1.33 -6.92,-0.8 -0.28,1.94 -2.24,3.99 -3.3,1.71 -4.01,-0.32 1.3,-5.83 -3.25,-6.54 -2.23,1.7 -3.48,-1.31 -4.85,-0.28 z", + "department-16" : "m 252.54,327.65 c -2.29,0.72 -1.44,3.44 -4.4,2.98 -1.27,1.85 -4.05,0.47 -4.98,-1.39 -0.68,-3.54 -5.06,1.6 -1.79,2.2 -0.58,3.13 -3.4,1.11 -5.1,0.91 -3.14,1.37 -5.19,-1.3 -7.86,-1.81 -1.52,1.5 -2.93,-1.91 -4.66,0.15 -1.97,-0.37 -2.45,3.38 -5.06,2.24 -1.93,0.04 0.82,2.24 -1.2,2.74 0.87,2.68 -3.95,2.15 -2.09,4.68 -0.28,1.91 -3.6,0.31 -2.2,2.53 -0.11,1.44 2.16,2.96 -0.03,4.42 -0.09,1.53 -0.09,4.77 -2.18,3.4 -1.96,2.42 -3.18,-3.47 -5.22,-0.43 -2.04,1.16 -4.38,0.45 -6.15,1.89 -2.73,1.16 0.38,1.62 1.39,1.98 -2.76,2.08 2.9,5.14 -0.46,5.78 -1.46,1.75 0.17,2.05 1.51,1.62 1.01,2.19 5.21,3.29 2.97,5.77 2.34,0.08 4.85,3.05 1.84,4.29 -0.18,1.67 3.8,4.33 0.08,4.95 -3.11,0.84 0.04,2.57 1.34,2.89 -0.62,0.79 -3.1,1.95 -1.06,3.18 2.2,-2.04 4.86,0.36 7.25,0.92 -0.44,1.96 0.03,3.48 2.36,2.77 1.73,0.17 2.65,2.07 3.44,2.83 1.42,-1.43 3.54,-1.84 5.23,-0.38 1.69,-1.46 2.03,-3.29 3.72,-4.47 1.1,-1.12 3.55,-1.27 2.27,-3.69 -1.79,-2.79 1.03,-5.85 1.8,-7.57 0.23,-1.21 1.54,0.42 2.16,-1.12 1.02,-1.12 2.42,-1.8 3.66,-1.6 0.38,-3.16 4.03,-3.24 3.74,-6.43 -0.64,-1.42 -0.09,-4.56 1.85,-3.02 1.5,-1.35 2.27,-4.04 4,-5.85 1.03,-2.13 3.92,-2.7 3.46,-5.45 1.36,-0.67 3.4,1.91 3.05,-0.98 1.5,-1.75 2.07,-3.92 1.46,-6.01 -0.57,-2.93 3.18,0.64 4.34,-1.8 2.69,-1.02 0.69,-6.52 -1.66,-5.43 -1.88,-0.53 -3.24,-3.11 -1.94,-5.21 -0.3,-3.28 -2.38,-2.24 -4.88,-2.46 z", + "department-86" : "m 220.19,259.01 c -2.67,1.11 -1.14,6.66 -4.7,5.46 -1.12,2.67 -0.28,6.33 2.34,7.3 1.21,2.8 -0.12,6.86 2.81,8.58 -0.34,0.88 -4.74,0.94 -2.01,2.12 1.66,0.91 -1.21,4.66 1.86,5.01 0.17,2.88 -3.53,4.96 -3.39,7.51 2.34,-1.74 2.86,1.09 4.01,2.56 -2.36,1.41 -1.42,4.19 -3.11,6.09 1.11,2.79 0.46,6.03 2.68,8.32 -0.98,2.26 1.88,5.6 3.64,2.56 3.26,-2.86 4.22,4.09 1.42,5.44 -1.17,2.3 -1.1,6.6 2.78,6.31 1.76,0.42 -1.54,4.9 1.9,4.82 2.58,2.29 6.42,0.33 9.24,2 3.12,-1.13 -1.64,-3.61 1.54,-4.88 2.93,-0.45 3.66,4.64 7.15,2.55 2.65,-1.24 4.01,-4.64 7.5,-3.07 5.18,0.43 -2.68,-6.17 1.99,-6.32 0.93,-3.5 4.73,-3.96 7.28,-4.09 1.27,-2.3 2.21,-5.88 5.59,-4.54 3.05,-1.23 4.82,-4.66 1.43,-6.65 -0.96,-2.09 -0.63,-5.43 -4.09,-4.96 -2.4,-0.38 -3.1,-2.52 -5.49,-3.06 -4.32,-2.56 0.87,-7.41 -2.39,-10.17 -3.73,-2.36 -3.49,-7.19 -7.25,-9.59 -1.82,-2.65 -1.18,-7.21 -5.41,-7.83 -3.82,-1.6 1.37,4.35 -2.65,2.83 -3.22,-0.17 -6.05,2.2 -9.36,1.21 -5,0.41 0.09,-6.41 -3.44,-7.54 -1.02,-1.75 -5.86,1.14 -3.94,-2.42 -1.49,-2.05 -5.43,-1.78 -6.57,-4.86 -0.36,-0.36 -0.83,-0.61 -1.33,-0.67 z", + "department-37" : "m 248.48,223.77 c -1.42,3.62 -6.45,2.73 -8.2,5.37 -1.46,1.36 -3.9,-2.72 -3.72,0.4 1.37,1.11 1.66,4.33 -0.82,2.81 -1.82,-1.23 -6.06,-3.74 -5.96,0.05 -1.81,2.38 0.79,4.4 -1.19,6.79 -1.59,2.5 -0.38,5.84 -2.27,7.78 -1.62,2.49 -3.61,4.89 -3.44,8.06 -0.62,2.26 -1.45,6.53 1.54,7.19 1.25,-0.87 1.94,2.54 3.31,0.71 0.97,1.11 -0.63,5.21 2.13,3.2 1.8,-1.1 1.89,1.61 3.57,1.4 0.89,2.11 -1.82,7.48 2.05,6.94 1.94,-0.66 4.56,0.68 6.7,-0.98 1.61,-0.96 6.42,0.73 3.58,-2.33 -0.63,-2.85 4.7,0.45 5.56,1.73 0.59,2.71 0.86,5.99 3.94,7.28 1.95,1.88 1.63,7.78 6,6.31 1.43,1.23 2.54,1.03 3.52,-0.09 1.84,-0.7 -1.13,-3.48 0.89,-4.6 0.94,-2.88 0.5,-6.24 2.1,-8.75 -0.51,-3.01 1.88,-5.04 4.77,-5.05 2.3,-0.22 4.18,2.32 5.36,-0.8 1.09,-2.04 2.29,-3.59 3.83,-4.89 -0.17,-3.29 -2.68,-5.86 -4.09,-8.7 -1.3,-3.91 -5.06,-1e-4 -7.13,-2.72 -1.96,-2.54 1.63,-6.07 -1.07,-8.64 1.91,-0.4 1.97,-2.18 -0.13,-2.78 -0.17,-1.99 -3.11,-4.5 -0.71,-6.14 -0.62,-1.2 -2.55,-4.44 -3.27,-1.51 -0.57,-2.17 -2.63,-4.19 -4.63,-1.88 -3.07,2.82 -2.07,-3.8 -2.27,-4.29 -2.95,-0.2 -5.98,-1.05 -8.71,-0.82 -1.21,0.63 -0.51,-1.11 -1.23,-1.05 z", + "department-72" : "m 231.9,172.51 c -2.61,0.34 -4.43,1.91 -6.19,3.04 -1.38,0.48 -2.05,1.94 -3.42,2.6 -0.33,3.05 -3.2,-1.34 -4.33,0.83 -1.43,1.08 -5.63,0.06 -4.24,2.95 -3.08,-0.79 0.86,3.38 -1.37,4.58 -0.86,1.81 1.85,4.28 -0.94,5.2 -2.01,1.1 -4.73,3.07 -1.86,4.9 -0.99,1.29 0.02,2.59 -0.74,3.79 -2.44,-0.68 -6.78,1.67 -3.4,3.85 0.73,2.09 1.76,4.48 -1.53,4.5 -2.58,-0.44 -3.89,2.42 -1.36,3.52 0.5,2.29 -5.19,2.01 -2.45,4.82 3.47,-0.45 1.48,4.86 3.4,5.98 2.31,-1.32 4.91,2 6.78,-0.52 3.29,0.6 -2.46,2.42 0.25,4.06 0.74,1.66 3.87,2.49 4.49,0.08 2.3,1.12 4.71,0.48 6.02,2.83 1.69,1.36 4.05,0.33 5.35,2.19 1.62,-0.93 1.69,-2.65 3.94,-1.78 2.54,-0.05 4.67,2.82 7.14,2.4 0.9,-1.5 -2.93,-3.52 -0.02,-4.31 1.04,1.34 2.82,2.12 3.33,-0.2 2.31,-0.39 4.79,-1.35 6.51,-2.6 -2.85,-2.23 1.58,-5.3 3.79,-5.52 0.46,-1.4 2.4,-3.52 3.78,-4.83 -1.44,-1.85 -0.29,-6.03 1.78,-3.82 -1.09,-2.59 3.21,-2.96 0.58,-5.37 0.08,-1.7 1.43,-3.61 -1.11,-3.97 -1.64,-2.45 2.4,-1.51 1.74,-3.29 -2.05,-0.4 1.4,-1.62 0.89,-2.96 2.29,0.52 3.2,-1.49 0.55,-1.94 -2.01,-0.09 -3.25,-2.56 -5.32,-1.22 -2.38,-0.82 -2.49,-6.22 -5.36,-4.81 0.79,2.39 -2.74,0.17 -4.1,0.37 -1.11,-1.06 -2.58,-1.99 -2.45,-3.6 -1.86,0.23 -5.36,-0.71 -4.94,-3.08 -0.44,-3.4 0.09,-8.02 -4.58,-8.58 l -0.59,-0.08 2e-5,0 z", + "department-61" : "m 236.9,140.22 c -1.37,2.93 -4.44,0.95 -5.77,0.51 -0.7,2.09 -2.92,0.83 -4.24,2.34 -1.35,-2.77 -4.38,-0.25 -5.26,1.87 -3.09,0.73 -4.56,4.12 -8.22,4.12 0.6,2.97 -3.23,-1.05 -4.99,-0.78 -2.07,-0.19 -4.42,-1.53 -4.55,1.51 -1.86,-0.97 -4.38,-5.01 -6.99,-1.88 -2.67,0.7 -5.63,2.58 -8.38,0.81 -1.94,-0.21 0.58,2.41 -2,2.73 -2.21,0.79 -4.81,2.48 -5.8,4.18 1.64,0.47 4.03,2.64 4.89,3.81 -2.6,1.08 -0.04,3.17 -0.37,4.16 -0.1,3.46 -3.63,4.61 -4.76,7.47 1.29,1.59 1.78,3.06 3.56,2.81 -0.2,2.49 3.05,0.83 2.04,-0.77 2.19,0.16 3.37,-1.72 3.97,1.42 2.29,-1.26 4.74,-2.16 6.49,-3.76 2.15,-0.24 4.6,-0.72 6.51,1.02 1.07,-1.63 2.35,-2.41 3.95,-1.42 1.83,-1.07 -0.27,-4.47 3.02,-3.12 1.81,1.18 3.45,2.14 1.99,3.87 0.35,2.25 1.92,4.62 4.47,2.94 1.72,0.65 -0.84,6.99 2.46,4.03 1.16,0.36 3.03,2.09 3.43,-0.38 1.63,-0.81 2.66,-2.19 4.04,-2.85 0.28,-1.38 5.31,-3.16 7.52,-1.96 3.9,1.26 2.59,5.53 3.26,8.6 -0.11,2.92 4.56,1.76 5.41,3.53 -0.07,1.99 3.35,3.78 5.67,2.91 3.19,-3.99 3.88,7.21 7.66,3.4 3.17,-1.53 -1.64,-4 -0.17,-6.33 -3.57,-0.8 0.8,-4.69 3.13,-4.08 2.2,-1.01 6.03,-4.76 3.83,-6.66 -0.95,-2.15 2.33,-4.5 -0.88,-5.72 0.72,-2.4 -4.26,-1.56 -3.98,-4.43 -1.88,-0.39 0.25,-5.19 -3.06,-4.1 -0.43,-1.15 -0.37,-2.32 -1.89,-2.36 3.89,-2.53 -0.45,-5.72 -3.19,-6.87 -1.23,-0.78 -2.92,-1.32 -1.88,-2.86 -1.36,-1.19 -1.22,-3.67 -3.26,-1.5 -2.58,-0.67 -7.27,0.22 -7.13,-3.52 0.64,-0.73 0.75,-2.65 -0.53,-2.7 z", + "department-27" : "m 242.33,106.21 c -2.25,1.4 -4.46,3.12 -7.27,3.2 -3.13,0.01 -1.44,3.96 -0.97,5.79 -0.25,1.42 -0.2,3.07 0.05,4.32 1.56,-2.67 4.74,1.16 1.61,1.68 -3.49,1.51 3.09,2.25 1.65,4.56 -0.6,1.84 0.47,2.5 1.82,3.11 -1.56,1.19 -0.91,2.9 -0.68,4.31 -3.08,-0.3 -1.43,3.4 0.78,3.14 1.11,2.25 -1.15,5.22 -2.03,7.57 1.97,1.86 5.79,2.95 8.17,1.67 1.68,-0.94 2.06,2.46 2.78,2.55 -1.38,3.04 5.18,3.21 5.92,5.84 1.68,1.55 -0.55,2.63 -0.78,3.74 1.84,0.46 1,3.47 3.6,1.89 2.3,-0.06 2.09,-4.03 4.58,-2.4 2.21,-1.11 4.77,-0.84 6.52,-3.04 1.78,1 3.18,0.1 2.69,-1.95 1.73,0.3 3.34,2.1 5.52,1.18 1.73,0.91 5.58,0.54 5.97,-1.71 -2.26,-3.14 2.59,-4.24 4.24,-5.72 -0.13,-1.58 -1.51,-4.22 1.43,-3.88 0.74,-0.67 -0.33,-1.93 0.53,-2.57 -1.47,0.74 -2.69,-0.27 -1.44,-1.58 -1.04,-1.31 -2.12,-4.8 0.61,-3.44 1.11,-1.2 0.8,-1.98 2.49,-1.09 3.37,-0.07 4.6,-2.86 5.45,-5.81 0.13,-2.58 1.39,-4.89 2.52,-6.95 1.56,-1.59 3.56,2.74 3.6,-0.58 -1.93,-1.54 -0.62,-5.1 -2.69,-7.09 -0.94,-2.78 -3.12,-0.33 -5.23,-1.99 -1.74,0.33 -2.23,-3.11 -4.08,-1.45 -2.23,-1.34 -5.13,-1.37 -7.71,-1.23 -0.89,1.39 -2.82,1.34 -2.49,3.35 -1.48,1.47 -1.23,4.8 -4.4,3.5 -1.42,0.9 -3.69,0.83 -4.18,2.58 -2.63,-0.42 -3.44,1.09 -2.81,3.24 -1.76,0.32 -3.16,0.76 -4.2,-0.95 -1.28,0.44 -0.68,-4.41 -2.73,-1.94 -0.92,0.95 -1.47,-2.05 -3.03,-1.54 0.47,-2.75 5.09,0.66 3.34,-3.08 -0.36,-1.37 -2.02,1.31 -1.95,-1 -2.7,-0.13 -3.88,-2.85 -6.72,-1.29 -2.27,1 -3.56,-0.22 -5.16,-1.45 -2.66,0.51 -3.03,-3.16 -5.33,-3.52 z", + "department-14" : "m 231.23,109.9 c -4.06,0.09 -6.85,2.84 -9.55,5.38 -3.34,2.06 -7.05,3.56 -10.99,3.85 -1.95,1.92 -3.54,-1.01 -5.94,-1.28 -2.67,-1.83 -5.65,-1.96 -8.71,-2.47 -2.52,-0.48 -5.06,0.57 -7.64,-0.13 -3.42,-0.41 -7.08,-0.38 -10.19,-1.98 -1.94,-1.82 -4.91,-0.74 -7.32,-0.9 -3.6,0.27 -1.56,4.12 -3.38,5.89 0.35,2.42 2.43,4.3 4.66,5.41 1.29,2.26 4.25,1.82 4.95,-0.81 0.89,1.47 2.18,1.84 0.71,3.15 -2.85,2.72 2.74,3.63 1.8,6.79 0.25,1.58 -1.34,2.53 0.39,3.45 -2.56,1.47 -4.13,6.64 -7.82,4.57 -1.7,0.05 -2.56,3.86 0.25,2.27 1.68,0.8 -1.5,3.01 -2.33,3.69 -1.18,-0.64 -2.61,2.05 -3.44,2.77 1.51,0.52 3.07,1.11 2.99,2.92 1.94,0.53 4.35,0.57 6.32,-0.18 1.55,1.73 4.66,1.77 5.78,1.31 0.33,1.85 2.06,-2.55 3.65,-1.79 1.67,-0.4 2.88,-1.72 1.91,-3.16 2.07,-1.17 2.99,1.93 4.94,0.32 1.69,0.63 2.6,-1.47 4.44,-1.14 2.02,-2.53 4.71,-0.49 6.27,0.75 0.09,2.25 1.52,-0.03 1.58,-1.02 2.72,0.42 5.75,0.47 7.89,2.34 0.72,-2.21 4.15,-0.58 5.38,-3.06 1.98,-1.59 4.45,-2.16 5.53,-4.57 1.56,-0.47 2.62,-1.63 3.42,0.6 1.16,-0.33 2.13,-1.63 3.58,-1.13 0.5,-2.08 1.78,-0.88 2.61,-0.44 1.61,0.55 3,0.24 4,-1.29 0.95,1.22 2.59,1.22 2.01,-0.7 1.28,-2.16 0.25,-3.37 -2.04,-3.81 -1.78,-1.67 1.38,-2.37 1.39,-3.02 -1.93,-1.58 2.62,-4.1 -0.98,-4.39 -0.16,-2.06 0.6,-4.48 -2.13,-4.95 -3.24,-2.19 4.22,-2.19 0.79,-4.43 -0.9,-0.04 -3.11,2.04 -1.98,-0.25 -0.33,-1.14 -1.2,-1.29 -0.01,-2.61 -1.49,-1.67 0.64,-7.09 -2.8,-5.97 z", + "department-76" : "m 285.08,67.51 c -1.66,1.28 -3.92,-0.27 -5.32,2.21 -2.55,2.82 -5.75,4.75 -9.23,6.16 -2.69,2.07 -6.27,0.91 -9.1,2.49 -3.04,0.83 -5.97,2.2 -9.16,2.2 -4.64,-0.08 -8.38,2.85 -12.2,5.03 -3.19,1.24 -5.65,3.53 -8.97,4.44 -4.45,0.63 -4.32,5.58 -6.08,8.7 -1.33,2.41 -3.69,6.09 0.02,7.66 2.71,1.09 5.28,1.25 8.39,1.98 3.84,1.23 7.92,-4.2 10.87,-0.97 1.02,1.67 2.99,3.04 4.68,1.44 -0.81,3.45 3.88,2.23 5.92,1.74 1.25,0.7 1.48,-1.8 1.82,0.62 0.74,1.56 3.24,0.12 3.81,1.84 1.65,-0.96 2.48,4.22 -0.34,2.48 -3.28,0.03 0.21,1.48 0.51,2.68 2.73,-3.35 2.83,4.25 5.77,2.84 2.8,-0.27 -0.27,-3.85 3.3,-3.41 1.82,-0.28 2.83,-2.57 4.57,-2.23 0.36,-1.37 4.68,0.8 4.04,-2.57 1.27,-2.05 1.52,-4.08 4.3,-5.05 2.08,0.14 5.31,0.85 7.56,1.4 2.14,-0.45 3.59,3.15 6.18,2.19 2.06,0.69 2.28,-3.97 4.3,-4.86 1.52,-1.49 -0.75,-3.01 -1.45,-0.94 -2.42,-0.89 0.93,-2.53 -0.81,-3.95 0.3,-1.61 -2.27,-1.27 -1.03,-2.58 -0.73,-1.35 1.8,-2.21 -0.04,-3.48 1.02,-1.01 3.32,-5.11 0.67,-2.57 -2.48,-0.31 0.5,-3.34 1.11,-4.23 -0.07,-1.57 3.34,-0.34 1.01,-2.16 -2.4,-2.69 -1.34,-6.85 -4.28,-9.1 -3.65,-1.5 -5.37,-5.07 -8.6,-7.13 -2.03,-0.46 -0.42,-2.8 -2.2,-2.85 z", + "department-60" : "m 299.82,88.06 c -0.68,1.53 -2.52,3 -2.62,4.61 0.88,0.83 2.72,-2.26 2.36,0.47 -2.03,0.88 -1.5,2.81 -1.5,4.35 -1.65,1.28 0.75,1.64 0.2,3.03 0.54,1.64 1.83,2.54 0.02,4.14 0.78,1.65 2.88,-1.94 3.18,0.81 -0.81,1.88 -3.2,3.3 -3.32,5.72 1.83,-0.19 -0.44,1.38 1.38,2.1 1.48,2.13 0.75,4.92 2.41,6.82 0.2,2.27 -1.63,1.56 -2.48,0.39 -2.21,-0.34 -2.49,2.24 -0.48,2.81 -0.83,1.16 -0.47,2.78 1.13,3 2.38,-0.91 4.68,1.32 7.04,0.62 2.19,-0.63 4.26,-0.42 6.14,-1.88 1.82,-1.52 2.59,1.29 4.7,0.92 0.24,2.48 3.26,-1.11 3.69,1.4 -0.75,1.55 3.2,0.09 3.21,-1.39 1.69,-0.21 1.93,2.59 3.71,1.86 2.57,0.22 4.8,1.97 6.25,3.43 0.62,-1.34 1.71,-1.33 1.95,0.34 1.46,2.81 2.94,-2.02 4.79,0.35 1.09,0.96 1.32,2.68 2.73,1.05 0.38,2.06 2.62,0.41 2.41,-0.61 2.06,-2.04 3.56,2.74 5.7,0.23 1.37,0.79 3.07,-1.58 3.55,0.59 0.9,-2.08 4.02,0.32 3.84,-2.61 0.97,-1.2 1.9,-2.09 3.15,-2.84 -1.43,-0.2 -1,-3.93 -2.02,-1.23 0.12,2.36 -0.59,-0.15 -0.51,-1.14 -0.98,-0.34 -1.96,-0.8 -2.82,-1.45 1.46,-1.59 0.58,-5.08 -1.78,-5.51 -1.64,-1.93 1.32,-3.14 3,-2.37 2.78,-1.33 1.45,-5.56 2.96,-6.93 1.83,1.02 3.46,-1.08 0.88,-1.43 -2.12,-0.58 0.91,-1.96 -1.18,-3 -0.31,-1.21 1.9,-1.71 1.13,-3.46 1.11,-2.28 -2.26,-3.66 -0.83,-5.46 -1.28,-1.35 1.28,-1.82 0.48,-3.31 0.33,-2.37 -2.35,1.17 -1.98,-1.22 -1.06,0.07 -2.21,3.33 -3.26,0.83 -1.15,-1.16 -2.97,0.6 -2.46,1.87 -0.95,-1.04 -2.28,-2.96 -3.61,-2.19 0.98,1.2 1.14,2.51 -0.39,1.26 -0.14,2.4 -4.2,0.61 -3.1,3.55 -0.54,2.6 -5.29,-1.86 -5.5,1.9 0.32,2.24 -2.85,2.23 -2.21,0.03 -1.14,-1.83 -2.74,1.59 -3.58,-0.97 -1.21,-1.4 -2.44,-1.07 -3.66,-0.6 -0.85,-3.25 -4.16,-1.53 -6.1,-3.1 -0.93,-1.42 -3.34,-0.98 -4.87,-2.04 -2.87,-0.39 -5.38,1.28 -8.22,0.91 -0.21,-2.15 -3.87,-1.59 -4.92,-1.24 -1.09,-1.54 -2.79,1.74 -4.47,0.11 -1.06,-0.76 -1.06,-1.17 -0.69,-2.16 -0.99,-0.72 -2.08,-1.47 -3.42,-1.36 z", + "department-80" : "m 292.25,47.76 c -3.3,0.48 -3.7,7.09 -0.18,7.88 1.08,1.67 4.2,2.74 3.06,4.24 -2.73,-1.29 -6.63,-3.63 -7.9,0.8 -0.08,3.06 -3.29,5.38 -4.22,7.27 1.37,-0.11 3.64,-1.46 3.18,1.37 3.11,1.87 5.05,5.06 7.98,7.06 3.9,1.29 3.89,5.38 5.12,8.61 0.56,2.66 4.89,3.47 4.09,5.66 1.46,2.82 4.15,-0.88 5.54,0.73 2.25,-2 4.72,2.18 7.27,1.01 2.7,-0.93 5.98,-1.02 8.68,0.5 1.84,-0.03 3.1,2.73 5.49,1.65 1.93,0.79 2.11,3.17 3.94,1.57 2.03,0.38 2.41,3.33 4.24,1.67 1.8,-0.87 1.46,4.54 3.03,1.36 0.02,-3.92 4.11,-1.35 5.69,-2.17 -0.71,-2.24 0.89,-2.61 2.47,-2.96 0.23,-1.49 2.58,-0.96 0.98,-2.41 1.05,-1.53 0.91,1.46 2.09,-0.25 0.9,2.74 1.49,1.35 3.01,0.23 1.35,0.58 3.49,2.16 3.45,-0.59 1.21,0.66 3.53,0.99 2.21,-1.27 0.39,-2.05 -3.23,-2.65 -0.99,-4.12 0.13,-1.56 -2.17,-2.32 -0.06,-3.42 -0.06,-1.95 2.47,-2.66 2.02,-5.11 0.89,-1.27 2.86,-3.19 2.9,-4.11 -2.64,0.29 0.37,-2.52 -2.05,-2.42 -2.22,-1.41 -5.14,-3.16 -7.9,-1.23 -1.34,-2.15 -4.91,2.97 -5.09,0.51 1.42,-1.44 -0.8,-3.49 -2.15,-1.79 -0.94,1.46 -4.33,1.85 -2.41,-0.4 3.11,-2.33 -2.99,-5.63 -2.46,-2.07 1.41,1.98 -2.63,-0.12 -3.46,-0.4 -1.61,-0.21 -3.12,-0.74 -2.69,-2.12 -1.34,-0.69 -1.48,3.04 -2.43,0.22 -3.21,-2.44 -3.38,5.35 -5.85,1.64 -1.72,-1.93 1.49,-5.21 3.99,-5.44 1.33,-2.2 -4.48,-3.79 -5.35,-1.18 -0.74,-1.34 -1.37,-2.06 -1.64,-0.43 -2.88,-0.65 -5.6,0.07 -8.2,1.37 -1.11,-1.55 -3.47,0.2 -3.68,-2.58 1.41,-3.13 -8.2,-2.22 -4.92,-5.34 -0.16,-2.3 -3.14,1.95 -4.11,-1.07 -2.18,-2.39 -5.42,-2.15 -7.98,-0.54 -2.27,1.67 -2.44,-2.55 -4.75,-1.91 z", + "department-95" : "m 297.89,122.77 c -1.93,0.92 -1.82,3.28 -2.24,5.06 -0.18,1.39 -0.88,2.57 -1.71,3.66 -1.18,2.5 3.25,0.35 3.28,2.76 0.67,1.03 2.44,0.71 2.86,-0.15 1.62,0.83 1.89,-1.96 3.5,-0.67 1.15,0.5 1.54,1.3 0.91,2.4 0.05,1.46 1.28,0.91 1.47,-0.15 1.23,-1.85 1.56,1.36 3.2,0.93 1.81,-0.33 2.63,2.19 4.51,1.19 1,-0.65 2.03,-0.32 2.94,-0.74 0.27,0.84 -0.01,2.32 1.49,2.09 1.39,0.41 0.73,2.42 2.34,2.4 -0.26,0.82 -0.29,3.2 0.91,1.57 0.86,-1.05 2.61,-1.25 3.07,-2.57 1.17,0.19 2.33,0.34 3.34,-0.64 1.5,0.48 3.52,2.04 5,0.44 1.28,-0.6 2.07,-1.91 3.13,-2.67 -1.04,-1.28 1.15,-1.17 1.41,-2.36 0.47,-0.74 -0.21,-1.51 0.41,-2.34 -0.57,-0.87 -1.19,-1.72 -1.74,-2.51 -0.76,0.04 -0.35,1.66 -1.56,0.99 -1.63,0.01 0.09,-1.59 -1.48,-1.79 -0.96,-0.62 -1.98,-0.38 -2.67,-1.33 -1.15,-0.06 -2.21,-0.73 -3.09,-0.09 -0.52,-1.59 -2.64,-3.14 -3.11,-0.65 -0.81,0.43 -3.97,1.21 -2.53,-0.5 -0.87,-1.58 -3.19,1.28 -3.56,-1.01 -1.15,-0.35 -2.65,-0.19 -3.11,-1.46 -1.37,0.13 -2.53,1.17 -3.72,1.84 -1.32,-0.26 -2.69,0.49 -4.1,0.64 -1.33,0.67 -2.12,-0.84 -3.46,0.08 -0.96,-1.47 -2.91,-0.73 -4.2,-0.81 -0.5,-0.95 -2.12,-1.82 -0.57,-2.52 0.13,-0.53 -0.36,-1.09 -0.9,-1.1 z", + "department-78" : "m 292.32,132.84 c -1.68,0.81 -3.67,0.76 -5.14,1.83 -1.97,-1.3 -0.99,2.02 -0.1,2.67 0.55,0.79 -1.34,2.61 0.69,2.07 1.64,-0.39 0.59,0.65 0.37,1.44 0.56,0.92 0.3,2.44 1.88,2.64 -0.09,1.26 1.67,1.89 0.48,3.08 1.64,0.66 2.24,2.6 1.48,4.19 -1.03,2.01 0.99,3.08 1.85,4.34 -0.58,1.19 -2.9,3.12 -0.68,3.75 -0.47,1.26 0.09,2.42 1.54,2.47 0.18,1.99 1.68,2.21 3.27,2.53 -0.41,1.11 -0.51,2.96 1.4,2.43 1.42,0.39 2.18,2 1.59,3.43 0.23,1.67 0.57,3.89 2.53,3.87 0.36,1.68 3.78,2.12 3.77,0.29 -0.23,-1.35 1.17,-2.66 1.54,-4.05 1.67,-0.97 -2.33,-2.06 -0.18,-2.66 1.44,0.17 3.44,0.88 3.57,-1.25 0.08,-1.12 0.7,-1.71 1.35,-2.36 -0.8,-1.15 -2.97,-2.42 -1.13,-3.55 0.61,-1.71 3.54,-1.04 3.46,-3.33 -0.81,-1.48 0.7,-1.23 1.5,-1.61 0.73,-1.13 2.67,-0.43 2.55,-1.99 1.23,0.53 1.88,-0.53 0.53,-1.07 -0.97,-1.07 -3.27,-1.54 -2.66,-3.59 -0.02,-1.82 0.75,-3.53 2.25,-4.55 0.27,-1.43 0.56,-2.46 -1.03,-2.77 0.42,-2.23 -2.99,-1.71 -2.63,-3.73 -1.61,-0.09 -3.2,1.35 -4.8,0.6 -1.14,-1.79 -3.8,-0.64 -4.79,-2.64 -0.79,0.03 -1.9,3.2 -2.31,1.04 -0.6,-0.85 0.89,-2.23 -0.76,-2.51 -1.37,-1.91 -2.01,1.2 -3.59,0.52 -1.03,1.41 -3.22,0.49 -3.58,-1.01 -1.62,-1.22 -2.88,0.79 -4.21,-0.53 z", + "department-28" : "m 287.11,142.32 c -2.1,1.04 1.22,5.31 -2.55,5.04 -3.13,0.47 -2.25,4.05 -2.79,5.7 -2.08,1.39 -4.66,0.71 -6.89,0.79 -1.67,0.17 -4.55,-2.91 -4.14,0.39 -0.94,1.3 -4.08,-0.75 -3.86,1.85 -2.43,0.08 -5.51,1.27 -7.37,1.58 -1.08,1.71 -3.78,2.6 -2.33,4.99 0.77,3.5 4.78,4.24 6.38,7.09 -0.22,2.23 -1.98,4.13 0.4,5.86 -1.32,2.12 -2.68,4.96 -5.61,5.63 -2.31,-0.78 -5.36,3.02 -2.13,3.95 -1.7,2.27 2.62,5.08 0.17,6.87 0.96,1.32 5.87,1.56 4.27,3.23 -2.59,-0.41 -2.61,3.43 0.12,2 1.93,-0.18 2.86,0.02 4.27,-1.38 2.46,-1.17 2.35,1.12 0.44,1.89 0.94,1.94 5.72,-0.14 5.24,3.16 2.38,1.44 2.98,5.53 5.88,5 2.46,1.01 5.04,1.84 7.07,-0.1 2.12,0.96 1.21,-4.35 3.42,-1.33 2.91,1.91 0.9,-4.73 4.83,-2.76 1.99,-0.3 2.54,-3.35 5.19,-2.24 2.89,0.64 5.49,-1.07 8.22,-1.66 2.33,-1.48 0.35,-5.82 3.98,-5.14 -0.56,-1.06 0.03,-1.81 0.2,-2.18 -1.12,-2.33 1.98,-4.62 -0.13,-6.47 1.22,-2.57 0.51,-6.45 -1.46,-7.17 0.98,-3.67 -3.12,-0.53 -4.61,-2.82 -3.57,-1.35 -1.08,-6.34 -4.19,-7.79 -2.86,0.53 -0.05,-3.49 -3.13,-2.7 -2.21,-2.24 -5.44,-5.53 -2.5,-8.36 -1.41,-1.65 -2.75,-3.31 -1.37,-5.55 -0.35,-2.12 -1.91,-3.29 -1.97,-5.44 -0.63,-1.06 -1.8,-1.83 -3.04,-1.94 z", + "department-75" : "m 326.98,144.71 c -1.27,-0.06 -2.46,0.68 -3.27,1.54 -0.47,-0.15 -0.85,0.06 -1.23,0.25 -0.65,0.03 -1.66,1.18 -0.69,1.52 0.81,0.18 0.93,1.2 1.8,1.35 1.65,0.28 3.42,1.43 5.03,0.39 1.03,-0.88 2.21,0.62 3.32,0.28 0.54,-0.43 0.6,-1.27 -0.33,-1.23 -0.68,-0.16 -1.14,-0.33 -1.46,-0.06 -0.34,-1.13 -0.06,-2.23 -0.93,-3.14 -0.12,-1.14 -1.17,-0.96 -2.05,-0.92 l -0.18,0 -0.03,3e-4 z", + "department-93" : "m 336.5,137.58 c -0.46,0.33 -1.14,0.34 -1.42,0.97 -0.75,1.19 -2.15,1.71 -3.14,2.62 -0.82,-0.03 -1.72,-0.07 -2.53,-0.25 -0.64,-0.37 -1.29,-1.34 -2.07,-0.64 -0.6,0.3 -1.08,1.1 -1.81,0.59 -0.35,-0.19 -1.46,-0.42 -1.19,0.3 0.56,0.53 2.05,0.32 2.05,1.33 -0.06,0.69 -1.13,1.34 -0.68,2.02 1.05,0.43 2.37,-0.21 3.33,0.37 0.27,0.54 0.5,1.08 0.89,1.55 0.18,0.57 -0.13,1.72 0.86,1.53 1.07,-0.15 2.16,-1.04 3.23,-0.34 1.04,0.72 2.32,1.35 3.05,2.37 -0.11,0.74 1.41,0.94 1.04,0.05 -0.24,-0.71 -0.92,-1.55 -0.78,-2.26 0.67,-0.23 -0.04,-0.79 -0.4,-0.86 0.27,-0.43 -0.26,-0.81 -0.29,-1.14 0.41,-0.57 1.31,-0.71 1.23,-1.58 -0.09,-0.8 0.8,-1.4 0.35,-2.19 -0.23,-0.84 -1.06,-1.46 -1.25,-2.26 0.77,-0.61 0.45,-1.99 -0.49,-2.17 z", + "department-94" : "m 332.85,147.49 c -0.56,0.21 -2.03,0.43 -2.18,1.01 0.31,0.21 1.82,-0.09 1.77,0.51 0.02,0.58 -0.23,1.64 -1.05,1.16 -1.03,-0.16 -2.09,-1.01 -3.03,-0.14 -0.7,0.5 -1.59,0.2 -2.33,0.5 -0.4,1.12 0.01,2.46 -0.66,3.53 -0.23,0.79 0.87,0.44 1.11,0.99 0.42,0.39 0.99,0.13 1.33,-0.1 0.46,0.44 -0.1,1.74 0.84,1.68 0.59,-0.25 1.17,-0.38 1.79,-0.16 1.34,-0.05 2.64,-0.54 3.94,-0.71 0.51,0.63 0.39,1.61 1.15,2.11 0.31,0.19 0.6,0.29 0.75,0.66 0.59,0.31 1.26,-0.47 0.77,-0.99 -0.01,-0.93 1.56,-1.44 0.88,-2.44 0.49,-0.32 0.24,-1.11 0.85,-1.28 0.43,-0.58 -0.47,-0.6 -0.83,-0.71 -0.34,-0.52 0.66,-1.17 0.14,-1.69 0.12,-0.8 -1.11,-0.7 -1.2,-1.46 -1.03,-1.05 -2.25,-2.13 -3.71,-2.49 -0.1,-0.01 -0.2,-0.01 -0.31,0 z", + "department-92" : "m 324.24,141.53 c -2,0.52 -3.26,2.41 -5.06,3.32 -1.07,0.77 -1.1,2.2 -0.99,3.39 -0.4,0.4 -0.48,0.98 -0.25,1.53 0.01,0.71 0.73,0.52 1.15,0.65 0.16,0.65 0.67,1.01 1.28,1.14 0.25,0.33 0.49,0.67 0.86,0.85 0.32,0.72 0.72,1.57 1.66,1.53 0.78,-0.01 1.11,0.83 1.08,1.46 0.36,0.27 0.92,-0.2 1.18,0.31 0.73,-0.09 0.08,-1 0.1,-1.43 0.14,-0.72 0.7,-1.47 0.38,-2.22 -0.12,-0.62 0.28,-1.24 0.24,-1.78 -0.96,-0.79 -2.46,-0.33 -3.22,-1.42 -0.37,-0.47 -1.1,-0.68 -1.44,-1.08 0.22,-1.13 1.41,-1.83 2.5,-1.7 0.39,-0.7 1.58,-0.82 1.76,-1.68 -0.35,-0.89 1.37,-1.42 0.54,-2.3 -0.48,-0.39 -1.16,-0.56 -1.77,-0.58 z", + "department-91" : "m 320.25,153.32 c -0.58,0.51 -0.49,1.56 -1.65,1.15 -1.09,0.27 -1.38,1.31 -2.58,1.12 0.11,1.05 -0.02,2.93 -1.5,3.32 -1.61,-0.22 -1.97,1.45 -2.84,2.24 0.58,0.86 2.2,1.77 1.79,2.96 -1.64,0.36 -0.55,3.52 -2.55,3.44 -0.79,0.15 -3.39,-0.81 -2.43,0.71 1.02,0.53 2.16,1.11 0.51,1.61 -0.86,0.93 -0.75,2.41 -1.65,3.25 0.14,1.24 1.76,2.59 0.46,3.92 0.71,0.75 2.78,0.14 2.06,1.92 1.07,1.28 -0.54,2.43 0.19,3.85 0.08,0.92 -1.54,1.43 -0.06,2.16 1.67,1.02 3.4,-0.35 5.09,-0.44 0.79,-1.48 2.15,0.97 2.97,-0.44 -0.22,-1.14 1.58,-0.26 1.55,-1.49 0.43,-1.63 2.01,-0.33 2.65,0.23 -0.12,0.95 0.48,1.61 1.08,0.67 0.98,0.38 1.68,0 2.09,-1.03 1.19,-0.35 1.89,2.24 3.4,1.07 0.49,-0.63 -0.03,-1.81 1.37,-1.59 1.11,-0.46 0.12,-2.39 1.77,-2.49 0.99,-0.33 0.83,-1.84 2.2,-1.42 0.62,-0.47 2.15,-0.38 0.97,-1.39 -1.69,-0.77 -1.16,-2.85 -1,-4.34 0.63,-1.35 -0.62,-2.47 -0.1,-3.88 0.63,-1.33 0.75,-2.86 1.78,-3.97 -0.3,-0.67 -1.97,-1.85 -0.32,-2.16 1.12,-0.7 -0.81,-1.91 0.75,-2.52 1.46,0.63 1.85,-1.77 0.18,-1 -1.09,-0.51 -1.76,-1.71 -2.13,-2.88 -1.08,-0.05 -2.24,1 -2.98,0.91 -0.9,-0.56 -2.37,0.31 -3.35,-0.26 0.08,-0.81 -0.25,-1.5 -1.11,-1.09 -0.9,-1.03 -1.16,0.24 -1.83,0.61 -0.49,-0.5 -1.91,-0.11 -1.24,-1.2 -0.57,-1.05 -2.44,-1.17 -3.52,-1.52 z", + "department-45" : "m 320.43,181.91 c -1.93,3.75 -6.85,2.12 -9.9,4.16 -1.95,2.44 0.54,6.83 -3.34,8.04 -0.15,3.54 -2.85,4.96 -6.06,5.24 -2.92,1.1 -6.42,-0.72 -8.49,2.39 -1.57,0.69 -5.05,0.19 -3.17,3.06 1.8,0.69 1.81,1.21 0.63,2.66 -1.69,2.43 4.05,3.22 1.25,6.02 -2.34,2.28 -0.38,4.59 0.09,7.04 1.76,1.74 4.95,-1.17 6.29,2.07 1.03,2.45 2.79,7.52 5.89,3.78 1.72,-3.2 5.45,1.69 8.15,-0.49 3.31,-0.11 8.68,-1.55 10.42,2.55 3,0.8 5.42,3.73 8.74,2.17 2.13,1.16 4.32,2.3 6.96,2.83 1.97,1.01 3.09,6.61 5.84,4.26 -0,-3.62 2.76,-1.68 4.41,-0.43 2.59,0.81 2.19,-2.3 2.2,-3.37 1.94,-0.4 6.46,-0.48 3.87,-3.36 0.34,-3.56 -2.17,-6.48 -4.41,-8.39 0.34,-3.92 6.29,-1.58 7.84,-4.63 1.26,-2.84 -2.35,-5.65 1.12,-7.77 4,-1.7 4.51,-6.41 1.51,-9.33 -2.16,-2.35 -2.73,-6.91 -6.87,-6.87 -1.86,0.13 -5.92,3.75 -6.03,-0.07 -2.63,1.14 -5.36,4.25 -8.22,1.8 -2.17,-0.24 -6.58,1.49 -7.34,0.08 2.67,-1.6 4.53,-6.27 0.45,-7.38 -2.86,-1.04 -1.71,-5.28 -5.43,-4.57 -1.53,-1.38 -4.89,2.52 -5.34,-1.02 -0.33,-0.2 -0.71,-0.32 -1.06,-0.48 z", + "department-41" : "m 266.29,195.63 c -2.06,2.95 -7.43,0.3 -8.5,3.42 -1.9,1 -2.23,2.67 -0.22,3.62 0.19,3.26 0.26,5.82 -1.16,8.6 -4.07,-1.69 0.07,5.24 -3.5,5.91 -0.99,3.4 -6.81,3.06 -5.94,7 2.53,-0.22 6.07,1.21 9.36,0.87 2.33,-0.38 3.21,0.87 2.33,3.13 -0.6,3 2.08,2.14 3.12,0.52 2.68,-0.46 3,3.47 5.15,1.95 3.31,1.92 -0.52,5.3 2.24,7.5 2.87,2.54 0.27,5.57 1.51,8.9 -2.12,3.16 1.39,5.4 4.47,4.52 3.84,-0.06 2.69,7.22 7.32,5.56 1.87,-1.68 3.74,-3.34 6.46,-2 0.88,-3.66 5.55,-2.27 8.48,-2.51 2.88,0.7 4.8,4.16 8.08,3.56 2.17,-0.93 0.23,-5.2 4,-4.24 2.53,1.03 9.23,0.49 7.7,-3.24 -2.46,-1.98 -1.75,-6.33 1.55,-6.48 1.62,0.43 3.89,1.9 3.49,-1.2 0.4,-2.84 -2.55,-3.04 -1.96,-5.71 -0.66,-1.86 -5.5,-1.35 -2.85,-4.03 2.3,-0.71 6.5,-3.18 2.67,-5.2 -3.4,-0.6 -6.94,-0.37 -10.34,0.3 -2.3,0.89 -5.75,-3.14 -6.32,0.82 -3.73,2.59 -5.33,-2.8 -6.15,-5.3 -2.21,-2.59 -5.58,2.04 -6.3,-1.81 -0.8,-1.62 0.46,-2.55 -1.18,-3.79 1.15,-2.66 3.49,-5.56 -0.29,-7.32 0.2,-1.64 2.39,-4.45 -1.04,-3.94 -1.34,-0.61 -4.15,-1.65 -3.51,1.01 -2.97,0.88 -5.87,1.72 -8.76,0.26 -3.05,-0.48 -3.65,-3.81 -5.67,-5.58 -0.41,-3.18 -5.31,-0.86 -5.28,-3.08 0.5,-0.52 3.23,-1.6 1.02,-2.02 z", + "department-36" : "m 292.75,252.32 c -0.22,1.96 -4.71,0.36 -3.09,3.11 -2.43,-0.72 -5.02,-1.03 -6.59,1.34 -2.69,0.52 -2.88,2.56 -1.18,4.37 -0.27,2.79 -3.21,4.19 -4.35,6.82 -1.44,3.03 -4.42,-1.33 -6.53,0.46 -3.18,0.46 -2.88,3.92 -3.68,6.03 -1.05,3.06 -0.95,6.5 -2.13,9.41 1.56,2.64 -2,4.95 -4.07,2.91 -3.4,-0.16 1.5,2.15 0.47,4.03 -1.36,3.26 -0.89,7.48 3.29,8.02 1.63,1.02 1.82,2.51 4.05,2.13 3.15,0.49 2.87,3.8 3.42,5.86 3.01,0.61 1.99,2.49 1.57,4.47 1.47,-0.43 1.97,1.71 3.8,0.38 1.85,0.34 2.68,-2.93 4.56,-0.65 1.37,1.89 2.88,2.94 4.14,0.35 1.12,-1.38 3.37,-4.31 4.14,-1.21 1.33,-0.81 3.52,-2.34 3.35,0.47 1.47,0.6 2.78,-3.28 3.75,-0.32 2.88,0.93 1.17,-5.91 4.57,-3.2 2.52,2.22 5.64,-0.66 8.59,0.82 2.5,1.04 7.68,2.32 7.46,-1.55 4.04,-2.02 -1.08,-5.26 0.41,-8.47 1.23,-2.22 0.34,-4.16 -1.32,-5.77 1.29,-2.28 -5.15,-3.19 -2.63,-5.41 3.7,-2.03 -4.12,-5.08 0.13,-6.45 0.15,-1.85 5.09,-3.55 1.3,-4.36 -3.14,-0.2 -1.71,-2.81 -0.75,-4.45 0.55,-3.16 -4.43,-3.11 -2.28,-6.14 0.71,-2.59 -1.84,-0.34 -2.34,-2.38 -2.14,-1.4 -4.51,2.29 -6.97,0.12 -1.89,-0.3 -3.87,-1.35 -1.68,-3.08 2.9,-1.88 1.03,-5.37 -2,-5.37 -1.57,-1.11 -2.26,-2.41 -4.45,-1.38 -1.18,-0.07 -1.7,-1.07 -2.98,-0.88 z", + "department-18" : "m 323.87,229.07 c -2.35,0.13 -9.34,2.52 -5.77,4.83 3.63,-0.55 1.32,4.29 3.95,4.19 1.09,2.3 -0.24,7.95 -2.97,4.02 -2.53,0.84 -4.38,3.27 -2.23,5.76 1.94,2.35 0.54,4.87 -2.44,4.09 -2,0.97 -4.54,0.79 -6.09,-0.04 -3.26,0.8 0.48,4.8 -3.11,4.5 -2.3,-0.84 -0.78,2.92 -3.07,3.74 -2.13,3.21 4.52,3.78 6.54,2.69 2.19,-2.06 2.95,2.09 4.74,0.99 0.13,1.95 -1.78,4.73 1.47,5.08 2.39,1.98 -3.09,7.46 2.34,7.01 1.98,2.06 -4.63,4.48 -3.1,6.87 3.2,0.9 1.23,3.63 0.29,5.24 0.67,1.68 4.73,1.92 3.03,4.22 4.54,2.34 -0.65,6.57 2.07,9.85 1.42,2.13 -0.12,3.45 -1.35,4.8 0.97,3.01 6.38,2.02 6.61,-1.43 1.68,-1.43 2.79,-4.1 5.74,-3.71 2.61,-0.19 8.61,0.85 7.95,-3.28 -1.28,-1.97 -0.29,-4.02 -0.99,-5.76 1.11,-0.26 2.76,0.38 2.1,-1.66 2.77,0.03 3.8,-5.99 6.55,-2.38 4.02,-0.1 5.48,-4.84 9.43,-5.17 5.09,1.19 4.04,-5.2 3.91,-8.3 0.71,-2.84 1.27,-6.86 -1.24,-8.77 -0.49,-3.87 -0.61,-7.69 -2.18,-11.39 0.6,-4.25 -6.27,-4.24 -4.71,-8.26 2.14,-3.02 2.74,-7.4 -0.15,-10.16 -1.82,-0.35 -3.52,2.23 -5.06,-0.44 -2.66,-2.76 -1.08,3.94 -4.37,2.1 -2.06,-1.93 -3.82,-6.36 -7.51,-5.63 -1.58,-0.2 -3.8,-3.83 -5.86,-1.15 -1.78,-0.24 -2.82,-2.01 -4.51,-2.45 z", + "department-23" : "m 301.06,306.59 c -2.18,-0.09 -0.48,5.24 -3.46,3.84 -1.17,-2.86 -2.05,0.79 -3.59,0.42 -1.13,-0.79 -0,-3.31 -1.73,-1.25 -1.24,0.55 -2.36,1.38 -2.36,-0.7 -1.54,-0.88 -2.18,2.59 -3.79,3.02 -0.98,0.84 -2.88,2.44 -0.45,2.76 0.29,1.69 -1.79,2.6 -0.56,4.04 -2.11,0.16 0.28,2.07 -1.84,2.35 -1.71,2.37 1.37,3.88 3.12,3.98 -0.87,1.98 3.03,2.32 1.47,4.18 0.81,1.46 2.68,2.16 2.08,4.13 0.59,1.41 -1.07,3.49 1.38,3.72 1.8,2.32 -4.92,2.97 -1.35,4.46 1.26,1.18 3.64,-2.06 4.21,0.35 0.31,1.19 0.8,2.47 -1.06,2.08 -1.31,1.78 2.07,3.75 3.94,3.02 1.79,0.62 3.88,-3.62 3.75,-0.15 0.21,1.27 2.24,2.17 2.82,1.56 1.47,1.11 3.83,3.39 1.98,4.77 0.21,1.09 -0.08,4.28 1.82,2.42 1.13,0.08 1.99,-1.04 3.2,-0.95 0.33,-2.76 3.75,-2.96 4.66,-0.46 1.35,-0.17 2.6,0.94 3.34,-0.03 1.49,1.32 3.49,2.43 4.82,3.44 0.2,2.09 4,0.09 3.38,-1.73 2.36,-0.58 5.37,1.33 6.38,-2.1 -1.37,-1.09 -2.62,-1.96 -3.06,-3.78 -1.55,-1.24 -1.59,-2.93 0.65,-2.9 0.54,-1.38 1.04,-2.45 2.73,-1.85 0.62,-1.79 3.09,-2.23 2.56,-4.51 0.36,-1.75 3.84,-1.53 2.12,-3.52 1.2,-2.89 -2.25,-4.14 -2.04,-6.95 -0.08,-2.21 1.4,-4.81 -1.02,-6.11 0.02,-2.5 -1.86,-3.91 -2.39,-6.08 -1.13,-1.7 -3.1,0.63 -2.89,-2.06 -0.52,-1.65 -1.48,-0.92 -2.17,-0.16 -2.13,-0.72 -3.54,-2.45 -1.59,-4.12 -3.08,0.61 -1.54,-4.21 -4.75,-3.19 -2.85,-0.75 -5.52,1.57 -8.05,0.18 -2.39,-0.94 -4.83,-0.98 -7.12,-1.05 -1.87,0.89 -3.74,0.71 -4.87,-1.08 l -0.28,-0.01 10e-6,10e-5 z", + "department-87" : "m 281.04,310.22 c -0.51,0.05 -1.17,0.12 -1.14,0.78 -0.25,1 -1.41,1.2 -2.23,0.78 -0.91,-0.55 -1.46,0.97 -2.37,0.47 -0.41,-0.24 -0.15,-1.36 -0.88,-1.06 -0.15,0.36 -0.49,0.69 -0.87,0.31 -0.42,-0.56 -1.48,-0.46 -1.39,0.36 -0.29,0.51 -0.98,0.78 -0.95,1.46 -0.55,0.47 -1.05,-0.38 -1.56,-0.48 -1.22,-0.29 -2.83,0.17 -3.07,1.56 0.1,1.34 -1.16,2.36 -1.14,3.65 -1.12,-0.21 -2.43,-0.58 -3.48,-0.02 -0.57,-0.29 -1.43,-0.46 -1.55,0.41 -0.29,0.71 -1.42,0.57 -1.53,1.41 -0.45,0.32 -0.59,0.81 -0.41,1.28 -0.57,0.79 -2.14,-0.04 -2.35,1.21 -0.11,1.15 1.52,1.66 1.49,2.82 0.45,0.61 -0.22,1.55 0.51,2.07 0.3,0.78 -1.04,0.68 -1.22,1.21 0.1,0.73 1.16,1.32 0.57,2.1 -0.2,0.88 -0.43,1.82 -0.37,2.7 0.55,0.71 1.53,1.06 1.85,1.96 0.6,0.29 0.77,-1.11 1.42,-0.47 0.52,0.57 1.56,1 1.37,1.9 0.17,0.33 0.61,0.45 0.5,0.91 0.25,0.56 0.69,1.22 0.15,1.8 -0.4,0.33 -0.69,0.93 -0.79,1.33 -1.08,0.03 -1.62,1.44 -2.79,1.15 -0.74,0.09 -1.45,-0.83 -2.12,-0.41 -0.07,0.49 0.25,0.98 0.12,1.53 -0.13,0.54 0.63,1.01 0.41,1.49 -0.44,0.28 -0.27,0.69 -0.21,1.04 -0.23,1.22 -1.06,2.19 -1.62,3.25 -0.26,0.54 0.17,1.51 -0.39,1.85 -0.92,-0.16 -1.85,-1.49 -2.8,-0.78 -0.33,0.63 -0.36,1.44 0.03,2.02 -0.07,0.89 -1.28,0.52 -1.72,1.1 -0.39,0.39 -0.56,0.91 -1.06,1.2 -0.36,0.39 -0.09,1.12 -0.8,1.16 -0.53,0.7 0.73,1.29 1.05,1.78 1.12,0.48 2.72,-0.73 3.83,0.16 0.41,0.49 0.74,1.16 1.39,1.34 0.08,1.16 -0.5,2.25 -0.79,3.32 0.28,0.85 0.98,1.77 1.99,1.46 0.49,0.16 0.41,1.27 1.18,1.08 1.27,-0.42 1.02,-2.31 2.06,-2.9 0.55,0.27 0.58,1.69 1.39,1.27 0.5,-0.37 1.3,-0.2 1.85,-0.57 0.8,-0.12 1.59,0.64 2.37,0.08 1.2,-0.25 2.21,0.92 2.02,2.08 -0.09,0.92 0.66,1.5 1.35,1.88 0.41,0.32 0.61,1.42 1.32,0.86 0.49,-0.58 1.3,-0.68 1.86,-0.14 0.33,0.35 1.23,0.52 1.23,1.08 -0.69,0.87 -1.91,1.66 -1.92,2.87 0.34,0.84 1.26,0.35 1.87,0.21 0.56,0.26 0.58,0.97 0.93,1.33 0.84,-0.26 2.33,-0.56 2.49,0.7 0.19,0.63 0.87,0.23 0.77,-0.27 0.67,-0.31 0.04,-1.73 0.98,-1.81 0.57,0.07 0.21,-0.87 0.71,-0.67 0.95,0.21 1.74,1.1 2.68,1.15 0.76,-1.2 1.96,-2.1 2.52,-3.45 0.35,-0.6 1.02,-0.45 1.52,-0.23 0.86,-0.13 0.35,-1.3 0.75,-1.74 0.56,-0.03 0.98,-0.4 1.21,-0.85 0.63,0.05 0.58,1.16 1.29,0.85 0.37,-0.17 0.08,-0.99 0.68,-0.63 0.79,0.46 1.82,0.91 2.6,0.18 0.48,-0.4 0.34,-1.43 1.2,-1.3 1.25,0.1 2.05,-1.03 2.55,-1.98 0.73,-0.73 1.34,-1.82 2.34,-2.13 0.74,0.12 1.5,-0.28 1.86,-0.87 0.93,-0.17 1.13,-1.16 1.48,-1.85 0.37,-0.07 0.64,0.49 1.11,0.2 0.61,0.2 0.96,1.44 1.71,0.76 0.42,-0.5 1.1,0.52 1.33,-0.26 -0.03,-0.66 0.6,-0.53 1.03,-0.64 0.45,-0.2 0.16,-0.77 -0.12,-0.88 -0.02,-0.51 -0.84,-0.68 -0.83,-1.1 0.48,-0.35 0.14,-0.82 -0.21,-1.07 0.24,-0.6 0.41,-1.25 0.01,-1.83 -0.05,-0.55 1.2,0 0.86,-0.75 -0.45,-0.79 -0.3,-1.85 -1.25,-2.36 -0.47,-0.29 -0.97,-0.56 -1.37,-0.86 -0.42,0.28 -0.85,0.21 -1.19,-0.2 -0.57,-0.6 -1.85,-0.61 -1.72,-1.7 0.17,-0.43 0.1,-1.78 -0.62,-1.22 -0.17,0.44 -0.43,0.74 -0.89,0.86 -0.71,0.92 -2.04,0.24 -2.93,0.86 -0.49,0.28 -0.9,0.12 -1.15,-0.31 -0.68,-0.45 -1.84,-0.44 -2.21,-1.23 0.21,-0.61 -0.04,-1.24 -0.49,-1.61 0.25,-0.59 1.1,-0.28 1.36,-0.78 0.47,0.27 0.94,-0.21 0.51,-0.63 -0.6,-0.41 0.17,-1.39 -0.62,-1.58 -0.8,-0.29 -1.69,0.05 -2.03,0.8 -0.73,0.21 -1.51,-0.02 -1.97,-0.63 -0.45,-0.19 -1.31,-0.18 -0.96,-0.92 0.42,-1.4 2.91,-1.11 2.81,-2.77 -0.02,-0.79 -0.76,-1.12 -1.46,-1.02 -0.74,-0.49 -0.23,-1.62 0.01,-2.28 0.07,-0.84 -0.67,-1.62 -0.2,-2.45 -0.01,-0.95 -1.08,-1.21 -1.63,-1.75 -0.29,-0.44 -0.89,-1.12 -0.22,-1.54 0.59,-0.47 -0.22,-1.14 -0.7,-1.29 -0.29,-0.51 -0.96,-0.67 -1.32,-1.01 0.65,-0.4 0.49,-1.69 -0.42,-1.53 -0.93,0.06 -2.05,-0.18 -2.28,-1.2 -0.52,-0.39 -1.08,-1.35 -0.53,-1.94 0.31,-0.58 0.65,-1.21 1.38,-1.2 0.66,-0.47 -0.77,-0.84 -0.18,-1.34 0.43,-0.32 0.7,-0.79 0.48,-1.28 -0.02,-0.63 0.42,-1.1 0.86,-1.45 0.24,-0.83 0.18,-2.06 -0.9,-2.22 -0.7,-0.32 -0.2,-1.35 -0.83,-1.79 -0.85,-0.67 -1.34,-1.98 -2.45,-2.23 l -0.03,0.01 z", + "department-19" : "m 313.35,352.38 c -1.86,0.13 -2.22,1.42 -2.96,2.7 -1.7,-0.45 -2.02,1.25 -3.41,1.04 0.1,2.65 -3.23,3.39 -4.97,1.84 -1.53,1.04 -2.82,2.64 -4.95,2.95 -1.42,1.63 -2.47,3.68 -4.63,4.05 -0.78,2.4 -3.28,0.32 -4.72,1.32 -0.15,-2.02 -2.14,1.24 -2.3,2.01 -1.89,-1.15 -2.49,2.34 -3.89,3.21 -1.28,0.53 -3.65,-2.27 -4.12,0.75 -1.21,1.38 2.97,2.44 0.01,3.18 -0.68,2.09 4.29,0.8 2.12,3.47 -1.5,0.61 -1.7,2.64 -3.24,3.07 -0.37,1.74 -0.74,3.8 1.62,4.02 0.64,1.56 -3.73,2.47 -1.44,3.5 2.52,-0.79 2.31,2.08 0.75,2.84 2.1,1.86 4.91,0.57 6.95,2.2 -1.97,1.83 -0.08,4.96 1.55,6.77 1.57,0.57 3.76,-3.02 4.88,-0.71 2.49,-1.36 5.15,0.9 6.6,2.82 0.89,1.66 2.62,2.3 3.51,3.98 0.84,-0.76 2.22,0.94 2.83,-0.95 1.95,-0.25 4.19,-4.21 5.12,-0.84 2.18,-2.19 5.35,-1.42 8,-1.89 1.92,-1.72 -3.18,-4.39 -0.13,-5.96 1.44,-0.92 3.38,-0.83 2.82,-3.25 -0.27,-1.27 3.56,-2.56 1.06,-3.66 -2.12,-2.49 1.31,-4.07 2.09,-6.03 1.52,-1.54 3.08,-3.21 4.69,-4.48 0.47,-1.62 0.7,-3.32 -0.12,-4.93 2.48,-0.49 5.95,4.22 7.88,1.25 -2.68,-1.36 -0.86,-4.01 -0.65,-6.27 0.65,-2.61 -0.12,-4.5 -1.81,-6.42 -0.37,-1.09 0.41,-2.79 1.03,-3.68 2.2,0.41 0.72,-2.34 1.39,-3.43 -0.08,-1.62 -1.77,-3.7 -2.72,-1.42 -1.49,2.45 -5.53,-1.84 -5.69,2.21 -1.2,1.04 -3.48,1.86 -3.57,-0.45 -2.4,-0.22 -2.77,-1.54 -4.33,-2.87 -0.57,1 -2.92,0.03 -3.77,-0.11 0.11,-0.94 -1.07,-1.2 -1.5,-1.83 z", + "department-15" : "m 334.72,370.94 c -1.28,1.82 -1.55,4.58 0.43,5.9 -1.81,2.51 -4.37,0.04 -6.57,-1.17 -2.6,-1.06 0.22,2.76 -1.15,4.1 -0.02,1.86 -2.79,1.83 -3.22,3.86 -1.83,1.13 -3.51,3.59 -4.24,5.64 0.35,1.77 2.71,2.41 0.56,3.82 -1.95,0.87 -0.07,4.99 -2.89,4.16 -3.55,0.88 -0.82,4.03 -0.22,5.71 -0.43,1.88 -4.6,-0.03 -2.81,2.9 -0.04,1.62 2.21,2.57 0.46,3.91 0.13,3.08 4.46,4.57 3.6,7.69 -0.92,1.52 -0.85,3.76 -1.46,5.32 3.14,-0.54 0.43,4.14 3.05,4.94 0.99,0 -0.12,-3.03 2.23,-2.19 1.58,-0.83 4.01,-1.56 4.43,0.74 2.75,-0.34 6.48,0.85 7.12,-2.96 2.85,-1.73 1.71,-5.71 4.3,-7.33 -0.14,-2.33 1,-4.52 2.76,-5.39 0.66,-1.77 2.62,-2.11 3.53,-3.79 2.71,0.19 1.23,4.39 2.14,5.14 1.36,-1.39 4.37,-1.42 3.78,1.12 0.34,1.62 0.97,4.51 2.8,3.48 0.84,2.32 -0.52,5.11 1.01,7.65 0.5,1.69 1.9,2.45 2.17,0.12 0.35,-2.14 2.27,-2.85 1.68,-4.93 0.92,-1.91 0.56,-5.47 2.78,-5.83 -0.12,-1.77 1.65,-6.61 3.22,-3.03 1.26,2.36 3.56,-0.59 3.31,-2.05 0.59,-1.14 0.92,-2.65 1.95,-1.09 1.6,-1 4.29,-1.63 3.3,-3.81 1.88,-0.88 -1.23,-1.49 -1.31,-2.37 -2.47,-0.36 0.7,-4.16 -1.68,-4.86 0.04,-1.43 3.56,1.01 2.84,-0.76 -3.52,-0.25 -3.97,-3.78 -3.79,-6.72 -2.86,-0.25 -0.48,-5.68 -3.84,-4.2 -1,0.06 -0.92,-1.73 -2.53,-0.75 -1.83,0.05 -2.03,-0.79 -0.71,-1.66 -1.98,-0.82 1.54,-2.18 -0.51,-2.67 -1.63,1.16 -2.03,4.92 -4.8,3.76 -3.45,-0.77 -2.59,-5.89 -6.01,-5.8 -1.98,-1.95 -3.93,0.16 -6.22,-0.38 -1.82,0.76 -1.98,-2.81 -2.23,-3.3 -2,0.21 -2.37,-1.95 -4.2,-1.04 -0.86,-1.4 -2.85,0.57 -2.19,-1.65 -0.21,-0.26 -0.61,-0.13 -0.87,-0.22 z", + "department-30" : "m 402.45,438.56 c -1.2,2.08 -2.01,3.99 -4.41,4.18 -0.91,2.13 4,4.03 1.37,6.32 -0.45,1.86 3.55,2.45 0.94,3.7 -0.76,1.99 0.11,3.59 0.97,5.15 -2.84,-2.29 -3.24,4.22 -6.65,2.09 -2.84,1.31 -5.14,-3.82 -7.86,-2.71 -1.9,-0.09 0.68,4.12 -2.36,3.87 -3.59,-0.21 -7.54,0.01 -9.81,-3.3 -3.88,-0.94 -1.76,4.82 -5.2,4.63 -0.2,1.99 1.7,1.26 2.49,1.37 0.64,2.2 6.26,1.35 5.12,4.79 -0.92,1.9 -5.78,3.67 -3.13,5.83 2.48,-0.75 3.13,1.64 2.84,3.17 1.93,-1.62 4.32,-2.9 4.52,0.69 1.23,0.34 3.7,1.07 1.85,-0.84 1.05,-1.8 2.07,-3.7 4.36,-3.11 -0.01,-3.76 5,-4.67 6.38,-1.85 2.32,1.17 -2.54,5.3 1.82,4.76 1.89,-0.76 3.45,-1.45 3.7,1.02 2.53,0.02 1.7,2.08 1.81,3.51 2.89,-1.55 4.4,2.61 6.33,3.87 2.8,0.69 3.15,4.82 3.78,7.11 -0.67,2.22 -2.4,3.52 -4.18,3.93 1.03,2.15 2.04,4.41 2.86,6.75 1.85,2.05 3.54,0.51 3.74,-1.66 2.08,-0.46 3.52,-1.72 3.36,-3.55 0.97,2.31 4.15,-0.86 5.01,-1.94 1.98,0.27 2.78,-2.49 0.23,-2.01 -0.41,-2.17 1.81,-4.53 3.24,-5.76 1.92,-1.29 6.52,3.05 5.01,-1.07 0.59,-2.7 2.29,-5.32 1.74,-7.95 1.25,-0.84 -1.73,-1.91 0.74,-2.53 2.32,-1.47 3.71,-3.79 6.04,-5.21 0.4,-1.57 0.8,-2.1 2,-2.68 -1.38,-1.85 -2.67,-6.36 -5.46,-5.62 -1.54,-2.69 0.63,-6.1 -0.98,-8.69 -2.44,0.11 -1.5,-4.81 -4.22,-4.74 -2.14,-0.69 -5.48,-5.75 -7.17,-2.57 0.92,4.08 -4.49,2.27 -2.46,-0.85 -1.91,-1.19 -5.21,1.01 -5.19,3.34 -1.4,3.16 -4.03,-1.21 -5.4,-1.88 -1.7,0.52 -1.47,-2.53 -3.73,-1.05 -1.71,1.8 -2.68,-0.11 -1.46,-1.57 -0.15,-1.56 -0.74,-2.62 0.35,-3.62 -1.57,-1 -0.67,-2.78 -2.91,-3.32 z", + "department-48" : "m 373.48,404.94 c -1.47,0.89 -3.46,3.53 -5.12,1.98 -0.01,1.49 -1.57,1.93 -1.04,3.5 -1.43,1.81 -3.11,1.2 -3.88,-0.85 -2.88,-0.45 -1.07,4.27 -3.39,4.9 -1.4,1.6 -1.16,4.02 -1.76,5.9 0.45,1.49 -1.64,2.13 -1.6,3.92 -1.61,2.48 1.66,4.55 3.09,6.26 2.11,1.84 -1.38,5.67 2.08,6.72 1.92,1.77 1.3,4.27 0.7,6.32 -0.81,2.08 2.13,3.68 0.68,5.63 -1.2,1 -0.69,2.92 0.49,1.55 -0.34,2.49 4.49,1.53 3.22,4.04 -0.61,3.08 3.16,-0.47 4.71,0.57 2.33,-0.24 2.39,2.9 4.55,3.55 1.02,2.18 4.4,1.65 6.21,1.9 1.73,0.64 4.49,-0.1 3.28,-2.39 -0.17,-1.71 2.49,-2.35 3.14,-0.7 2.15,-0.14 3.4,3.16 5.36,2.3 1.4,-0.48 2.81,0.78 3.7,-1.01 1.48,-0.27 0.79,-2.83 2.56,-1.71 0.48,-1.13 -1.37,-1.78 -0.45,-3.23 -0.32,-1.45 2.55,-2.77 -0.12,-3.02 -0.49,-1.4 -1.27,-2.69 0.33,-3.79 -0.9,-1.25 -2.65,-3.18 -2.62,-4.42 1.46,-1.07 3.7,-0.89 3.95,-3.34 1.21,-1.8 0.03,-4.2 -0.54,-6.13 -0.14,-2.55 -3.1,-2.32 -3.01,-4.96 -0.51,-1.42 -0.74,-3.3 -1.23,-4.8 0.21,-0.99 -1.02,-2.2 -0.2,-3.43 -0.96,-0.75 -2.32,-0.83 -1.55,-2.36 -1.84,1.16 -1.86,-1.71 -3.45,-2.23 0.02,-3.18 -3.5,-0.79 -4.63,-2.01 2.18,-2.04 -3.67,-4.45 -2.82,-1.23 0.29,3.23 -3.33,0.7 -4.65,2.81 -2.12,0.38 -2.38,-3.83 -3.37,-5.42 -0.69,-1.57 0.03,-3.98 -2.15,-4.28 l -0.25,-0.51 -0.23,-0.01 -2.2e-4,-1e-4 z", + "department-63" : "m 350.25,319.87 c -2.41,0.1 -1.39,6.08 -4.36,2.69 -2.2,-1.55 -1.13,2.91 -3.36,2.6 -0.99,2.15 -2.4,5.06 -4.99,2.48 -3.53,1.71 0.74,5.9 1.02,8.31 0.33,2.26 -0.13,3.09 -1.85,4.34 -0.59,3.07 -2.87,5.1 -5.46,5.93 -0.78,1.08 -3.3,2.29 -0.7,4.14 1.84,2.94 6.68,6.33 3.76,10.01 -3.59,1.58 -0.37,5.2 0.63,7.47 -1.63,3.1 2.57,5.33 4.8,4.69 1.04,1.88 3.32,0.49 2.64,2.92 1.95,3.55 6.09,-0.43 8.67,2.01 3.48,0.74 2.44,6.76 6.82,5.67 2.39,-1.04 2.55,-4.68 5.97,-4.03 2.84,-0.11 5.33,-4.21 7.45,-3.45 1.17,-0.15 2.17,-1.54 3.06,0.31 2.88,1.39 5.17,-2.92 7.03,0.16 3.24,-0.64 2.05,6.51 5.21,2.85 1.13,-3.37 5.41,3.07 6.68,-1.35 0.83,-2.19 5.07,4.34 4.28,-0.59 0.72,-2.92 5.73,-4.1 3.45,-7.91 -0.98,-3.57 -2.63,-6.42 -6.17,-8.13 -2.69,-2.1 -1.82,-6.45 -4.74,-8.34 -0.45,-1.7 -2.19,-2.8 -0.35,-4.4 -0.69,-2.91 2.62,-4.84 -0.62,-6.96 -2.59,-1.57 -3.98,-4.12 -5.91,-6.12 -2.16,0.37 -6.24,1.62 -5.45,-1.98 -1.98,-2.68 -5.33,1.55 -7.73,-0.76 -2.66,-0.65 -5.11,0.01 -7.56,-0.72 -1.51,-1.52 -2.18,-2.56 -4.49,-2.07 -3.09,-0.49 -3.15,-3.91 -5.15,-5.29 0.27,-2.13 2.01,-5.11 -1.71,-4.35 l -0.47,-0.05 -0.43,-0.12 0,0 z", + "department-42" : "m 397.37,318.49 c -1.6,0.83 -3.4,1.29 -4.64,2.21 -1.3,0.59 1.02,2.59 0.48,3.98 0.61,1.85 -0.41,4.23 1.11,6.23 -1.61,2.5 2.37,7.25 -2.15,7.3 -1.09,-0.11 -1.49,1.09 -2.88,0.34 -2.32,2.56 2.22,3.36 1.74,5.81 -1.98,1.61 -0.24,4.65 -2.31,6.15 1.69,0.49 1.3,2.13 2.33,2.91 2.23,1.34 1.14,4.92 3.25,6.83 1.78,1.97 5.01,2.91 6.17,5.68 -1.24,2.45 2.85,3.93 0.67,5.95 0.89,3.06 -5.47,3.2 -3.23,7.04 0.42,3.41 2.25,-3.4 4.17,-0.43 0.87,1.44 1.19,2.02 2.38,0.77 1.23,1.18 1.39,0.75 2.25,-0.33 1.05,-0.89 3.38,0.13 2.65,-1.8 2.25,-0.56 4.93,-0.17 6.2,1.72 1.74,-1.96 5.45,1.48 2.47,2.65 0.55,1.23 1.98,1.3 0.84,2.91 0.86,2.54 3.62,-1.67 4.48,1.3 1.58,2.36 4.9,0.89 6.79,-0.08 -1.25,-1.91 1.2,-3.4 2.26,-5.02 1.49,-1.32 5.89,-1.48 4.47,-4.32 -0.52,-1.74 0.97,-3.48 -0.58,-5.25 -0.48,-1.69 -3.61,1.7 -3.93,-1.3 0.42,-2.1 -0.24,-3.68 -1.93,-4.86 -1.43,0.06 -2.67,-1.02 -4.29,-0.14 -2.32,-0.62 -2.91,-2.86 -5.1,-4.24 -1.42,-1.8 -2.51,-3.8 -0.78,-6.03 1.82,-2.31 -3.43,-0.74 -1.14,-3.43 0.94,-1.31 1.04,-3.98 1.15,-5.42 -2.5,-0.01 -3.12,-2.67 -2.32,-4.33 -1.63,-1.26 -2.43,-3.07 -4.07,-4.21 0.9,-0.54 3.97,0.36 2.35,-1.72 -1.31,0.09 -3.3,-2.79 -0.85,-2.47 1.97,-1.74 0.65,-5.53 4.11,-6 0.97,-0.45 2.45,1.37 2.78,-0.77 -0.25,-1.57 -2.38,-2.12 -0.65,-3.5 -1.51,-1.51 -2.16,1.22 -2.41,1.83 -1.97,-0.74 -4.16,3.26 -5.16,1 1.12,-2.05 -1.54,-0.14 -2.23,-1.49 -1.1,1.9 -3.25,0.89 -4.63,-0.3 -2.08,0.61 -5.43,3.53 -6.14,-0.27 -1.61,-0.39 -4.74,-0.44 -2.93,-2.93 0.29,-0.63 0.34,-2.13 -0.72,-1.99 z", + "department-69" : "m 433.73,316.51 c -1.23,0.46 -2.5,0.15 -2.78,2.07 -0.74,1.45 -2.37,-0.51 -2.67,-1.28 -0.69,1.49 -2.76,2.38 -3.71,0.45 -1.68,-1.33 -4.39,-0.82 -4.01,1.84 -0.71,1.65 0.63,2.41 1.38,3.48 -2.55,0.77 0.51,1.73 0.61,2.71 -0.41,1.66 -1.38,2.06 -2.7,1.09 -2.04,0.63 -3.43,2.17 -3.25,4.46 0.34,2.11 -3.89,1.45 -1.52,3.28 0.64,0.85 2.57,0.6 1.5,2.34 -0.59,0.49 -3.83,-0.49 -1.93,0.9 1.83,0.38 1.7,2.77 3.5,3.41 0.3,1.24 -1.23,2.13 0.17,3.34 0.85,1.23 3.47,0.4 1.96,2.6 -0.03,1.87 -0.27,3.49 -1.48,4.83 0.06,1.49 3.29,0.29 1.61,2.31 -1.06,1.85 -1.32,4.02 0.45,5.41 1.27,1.35 2.68,3.31 4.18,4.13 1.51,1.5 3.36,-0.41 4.88,1.05 1.7,-0.73 1.49,2.06 2.91,2.19 -1.19,1.71 0.21,5.2 2.42,3.21 1.24,-1.16 2.04,4.15 2.96,1.45 1.23,-1.41 3.83,-2.33 3.98,-4.32 -1.76,-0.7 -2.47,-2.54 -4.09,-3.51 1.84,-0.94 3.53,1.28 4.58,-0.77 1.51,-1.17 4.45,-0.14 5.27,-1.51 0.95,-0.25 2.74,0.97 2.03,-1.03 1.24,-1.85 2.79,-4.63 5.26,-4.54 0.24,-2.22 -3.33,-1.77 -3.23,-3.97 -1.59,-0.5 -1.14,-2.19 0.43,-1.77 0.7,-2.69 -4,-0.18 -5.55,-0.99 -1.61,0.21 -2.66,0.21 -2.4,-1.73 -0.63,-1.95 -1.32,-4.61 -3.64,-4.95 -0.96,0.68 -1.86,1.05 -1.38,-0.57 -0.83,-1.37 -2.55,-0.91 -3.49,-1.92 2.14,-2.03 -0.39,-5.26 0.95,-7.43 1.04,-0.99 -1.1,-2.32 0.59,-3.24 1.49,-1.45 2.32,-4.9 -0.84,-4.45 -2.61,-1.01 0.89,-5.07 -2.78,-5.24 -1.21,-1.33 2.19,-1.14 0.43,-2.68 -0.12,-0.26 -0.3,-0.58 -0.61,-0.66 z", + "department-43" : "m 379.31,374.73 c -1.62,2.39 -4.9,1.8 -6.71,0.33 -0.7,1.72 -0.87,1.21 -1.91,0.1 -0.8,1.98 -3.58,1.56 -4.38,3.23 -1.25,1.09 -2.57,1.35 -4.33,1.17 0.74,1.5 -1.58,1.78 -0.04,2.79 -2.08,1.77 1.79,1.15 2.36,1.2 -0.13,1.97 3.13,-0.54 2.89,1.98 -0.29,1.8 0.97,2.96 2.14,3.73 -0.86,2.28 -0.05,5.34 2.48,5.9 2.93,0.43 -0.37,2.07 -1.36,0.74 -1.49,0.56 1.82,1.51 0.26,2.94 -1.01,2.64 2.59,2.31 2.97,4.1 -2.04,1.24 0.26,1.73 1.03,2.74 1.8,0.69 0.7,3.92 2.11,5.44 0.56,1.74 1.53,5.67 3.68,3.09 2.13,0.18 4,-0.58 3.52,-3.06 1.72,-1.57 4.47,0.99 3.25,2.73 2.03,-0.35 4.24,-0.91 4.56,1.81 1.6,0.42 1.42,3.2 3.32,1.95 -0.31,0.86 -0.01,2.7 1.4,1.48 3.08,-0.04 2.22,-4.19 4.35,-5.07 0.8,1.72 0.74,-0.65 2.16,-0.3 0.91,-0.43 0.22,-3.47 2.51,-2.52 2.14,-0.66 5.33,0.63 5.55,-2.64 1.54,-1.36 1.15,-4.48 3.81,-3.54 1.57,0.05 2.24,-1.12 0.99,-2.15 -1.14,-2.94 5.69,-1.67 3.23,-3.83 -1.6,-1.11 -0.01,-3.44 1.47,-3.61 -1.01,-0.84 -1.65,-2.84 0.52,-2.06 0.75,0.25 1.93,2.57 1.79,0.63 -0.57,-2.5 2.93,-4.77 1.26,-7.19 -1.2,-1.98 -2.64,-2.48 -4.48,-1.26 -2.08,-0.82 0.53,-3 -1.95,-3.68 1.6,-1.09 1.44,-3.36 -0.89,-3.47 -2.17,2.19 -2.9,-2.58 -5.24,-0.98 -1.45,-1.18 -2.23,0.2 -2.36,1.14 -1.72,-0.24 -2.79,0.8 -3.72,1.87 -0.74,-1.86 -1.9,-0.59 -2.28,0.4 -0.52,-2.16 -2.78,-4.05 -4.23,-1.53 -0.3,1.52 -1.03,1.38 -1.49,0.05 -2.13,0.67 -3.37,-3.95 -4.67,-1.3 0.12,2.86 -4.25,0.82 -5.13,-0.4 -0.84,1.48 -2.99,4.23 -4.08,1.09 -0.06,-2.97 -3.34,-1.73 -4.39,-4.01 z", + "department-07" : "m 436.62,378.68 c -2.11,1.19 -5.05,1.82 -5.73,4.31 -0.61,0.74 -1.7,1.47 -0.63,2.83 -1.48,1.55 -5.39,0.21 -5.65,3.05 -0.4,2.17 -2.13,4.1 -1.51,6.11 -0.82,1.35 -2.2,-3.55 -3.34,-0.83 2.87,1.6 -1.37,1.64 -1.06,3.7 -0.07,1.01 2.58,2.11 0.3,2.78 -2.43,-0.04 -3.73,1.92 -2.22,3.92 -1.62,1.35 -4.39,-0.37 -4.36,2.53 -1.51,1.8 -1.89,5.12 -5.04,3.9 -1.64,0.68 -4.72,-0.35 -3.54,2.75 -1.69,0.44 -2.07,1.93 -3.57,0.7 -0.65,2.39 -1.67,4.38 -3.7,5.18 0.05,1.23 -0.23,2.66 0.56,3.58 -0.09,2.42 0.91,5.06 1.8,7.31 3.3,1.24 2.04,5.97 4.07,8.24 1.96,0.49 1.37,2.56 2.59,3.64 -1.74,0.94 0.2,3.57 -1,5.13 1.45,0.08 4.13,-2.2 4.71,0.49 2.27,-0.88 3.84,4.84 5.98,2.4 0.11,-2.69 3.06,-5.02 5.54,-4.01 -0.84,1.71 0.49,4.93 2.22,2.69 -1.12,-4.19 4.37,-2.87 5.2,-0.35 2.07,1.28 5.06,2.67 3.99,-1.18 -0.44,-2.49 0.5,-4.84 0.92,-7.23 2.57,-1.67 0.05,-4.72 1.41,-6.94 -1.34,-2.75 2.73,-3.36 2.63,-6.07 2.5,-3.08 -0.98,-6.81 0.47,-10.07 2,-1.59 2.83,-4.11 4.16,-6.22 -0.81,-2.28 2.55,-4.4 -0.11,-6.44 -1.37,-1.98 -0.41,-4.12 -0.17,-5.92 -1.82,-0.69 -0.96,-3.19 -2.25,-4.49 1.8,-2.26 -0.83,-5.08 0.05,-7.93 1.49,-3.08 -3.02,-4.17 -1.77,-7.12 l -0.36,-0.33 -0.59,-0.1 0,0 z", + "department-26" : "m 448.07,380.12 c -2.89,1.17 -5.09,3.5 -8.19,2.69 -0.39,2.66 -1.05,6.79 0.49,9.42 -1.96,1.97 0.32,3.64 0.34,5.76 2.35,1.37 -0.99,4.81 1.33,6.93 2.06,2.38 -0.62,5.13 -0.81,7.77 -1.22,2.58 -4.32,4.41 -3.69,7.71 1.66,3.46 0.06,6.59 -1.3,9.7 -3.02,0.93 -0.83,4.24 -2.03,6.3 0.95,3.33 -2.55,6.12 -1.92,9.81 1.2,3.03 7.51,-0.99 7.1,4.18 0.14,2.04 0.67,4.67 2.58,1.79 2.97,-0.92 6.04,-2.27 9.06,-3.52 1.12,3.67 4.14,-0.81 5.13,-0.14 -0.85,1.68 -0.59,3.54 -0.5,5.19 1.36,1.14 3.35,1.14 4.16,-0.1 1.72,1.86 4.28,0.89 5.95,1.95 0.03,1.94 0.09,3.52 2.41,3.44 1.06,4.04 4.77,0.96 6.47,-0.43 -1.58,-2.47 1.9,-2.75 3,-1.1 1.64,-1.37 2.06,-2.86 1.41,-5.21 1.53,-2.36 -2.87,-0.24 -1.73,-2.96 -1.59,-0.67 -0.77,-1.18 -0.59,-2.32 -2.51,0.48 -4.35,-1.04 -6.35,-0.89 -1.23,-1.45 -2.87,-1.53 -2.12,-3.69 -1.62,-1.67 -0.01,-2.82 1.69,-1.61 2.12,-0.83 -1.87,-1.85 -0.65,-3.64 -0.28,-2.93 4.33,0.48 6.05,0.59 1.73,0.39 1.15,-2.66 3.01,-2.35 -1.71,-1.67 -3.84,-2.97 -1.6,-5.43 1.79,-1.45 -0.55,-5.71 2.99,-3.98 1.94,0.82 3.33,-0.86 4.9,-1.06 1.29,-0.88 2.08,-3.19 -0.35,-2.44 -2.24,0.57 -3.91,-2.09 -6.41,-1.58 -1.16,-1.43 -2.84,-3.52 -4.34,-3.81 0.14,1.78 -6.09,-0.53 -3.44,-2.33 -1.37,-2.79 0.85,-6.84 0.11,-10.1 0.96,-2.47 -1.42,-5.35 0.09,-7.37 -2.07,0.93 -4.59,4.84 -6.88,1.6 -1.84,0.62 -4.04,-0.31 -5.88,-1.61 -1.29,0.02 -2.1,2.02 -3.13,0.34 2.95,-1.62 2.73,-5.57 1.54,-8.29 2.1,-1.71 -0.25,-3.63 -2.12,-2.9 0.27,-1.74 0.99,-4.37 -1.59,-2.47 -1.31,0.06 -1.04,-2.86 -3.02,-2.37 -0.42,-0.45 -0.36,-1.52 -1.19,-1.46 z m -1.27,60.35 c 2.68,0.18 1.93,3.2 4.79,3.14 -1.88,1.51 -2.98,3.63 -4.06,5.91 -1.76,-1.35 -5.66,0.15 -4.33,-3.15 -1.66,-0.66 1.47,-2.81 1.37,-4.36 0.67,-0.62 1.73,-0.72 2.23,-1.54 z", + "department-84" : "m 446.86,440.69 c -1.95,0.68 -2.59,2.23 -3.24,3.95 -1.54,1.08 0.24,1.84 -0.38,3.25 0.79,1.16 2.95,0.74 4.3,1.12 1.33,-1.76 1.41,-4.26 3.76,-4.92 -0.23,-0.92 -2.69,-0.73 -2.57,-2.42 -0.66,-0.27 -1.12,-0.97 -1.86,-0.99 z m -10.7,6.69 c -1.75,0.63 -4.36,-0.72 -3.75,2.23 -0.47,1.96 1.22,3.5 1.32,5.13 2.22,-0.26 1.8,3.29 1.6,4.89 -0.71,1.78 -0.16,4.41 1.97,3.57 1.39,1.79 2.8,3.83 3.94,5.76 0.11,1.52 -2.28,0.28 -1.54,2.26 -0.27,1.54 -4.74,2.54 -1.78,2.92 1.98,0.36 4.26,0.33 5.81,1.82 2.69,0.61 4.43,2.7 6.08,4.74 0.55,2.14 2.45,3.17 4.31,4.09 2.3,2.43 5.12,0.03 7.83,1.23 2.38,1.21 4.48,2.96 6.96,4.03 2.69,1.26 6.11,1.9 8.79,0.34 1.35,-1.61 3.7,-0.97 4.73,-3.09 0.97,-1.51 -1.94,-2.24 -1.96,-3.86 -1.56,-1.86 -3.42,-4.41 -6.24,-2.8 -2.07,0.95 -0.48,-2.95 0.61,-3.43 0.51,-1.33 1.55,-2.66 -0.1,-3.23 -0.29,-2.08 -4.3,-0.54 -3.06,-3.3 0.45,-2.01 1.86,-3.87 1.45,-6.01 -1.1,0.12 -2.63,0.07 -2.14,-1.74 0.53,-2.35 -2.66,-1.28 -2.71,-3.51 -1.05,-0.88 -3.35,-0.4 -2.48,-2.73 -0.01,-3.12 -4.03,-0.26 -5.3,-2.66 -1.51,-1.06 -0.98,1.74 -2.66,0.68 -2.01,-0.15 -3.06,-1.35 -2.27,-3.12 -1.69,-0.64 1.81,-3.73 -0.28,-2.95 -1.07,2.14 -3.56,1.91 -4.6,0.21 -2.41,0.78 -4.55,2.65 -7.11,2.79 -1.53,-0.33 -4,4.19 -3.94,0.55 -0.37,-2.16 -0.51,-5.06 -3.51,-4.81 z", + "department-13" : "m 436.6,474.08 c -0.74,1.85 -4.74,2.73 -4.06,4.51 1.26,0.66 -1.41,1.72 -0.12,3.06 0.08,2.7 -2.74,5.11 -1.37,7.86 -2.28,-0.28 -6.4,-2.34 -7.04,1.21 -2.02,1.17 -2.34,4.33 0.25,4.07 -0.26,2.18 -2.99,1.15 -3.24,3.2 -2.53,0.88 -3.65,1.48 -5.33,3.13 -3.12,0.45 -3.32,4.69 0.25,3.69 2.78,0.47 5.55,1.05 8.35,0.35 2.37,-0.45 7.29,1.42 4.55,4.28 -0.6,3.55 5.03,2.05 7.33,2.58 1.71,0.43 5.71,0.01 2.7,-2.11 -3.88,-1.35 -2.85,-5.16 -3.05,-8.31 -0.04,-1.21 -2.55,-5.59 -0.42,-2.89 1.89,2.36 1,5.34 0.95,8.05 0.88,2.13 3.62,3.05 5.46,4.22 1.53,-0.81 -2.25,-2.45 0.5,-3.11 1.91,-1.46 4.03,-0.52 5.49,0.58 3.35,0.39 4.55,-4.15 1.3,-5.2 -0.68,-1.48 -0.16,-6.09 1.79,-3.06 2.23,-0.56 2.91,0.56 2.79,2.29 1.26,2.1 3.09,1.09 4.71,0.38 1.06,3.09 -3.48,5.94 -6.44,5.14 -4.78,-0.48 -3.49,6.19 0.68,5.18 2.9,-0.06 6.07,0.58 8.6,-1.26 3.09,-1.75 3.91,2.83 3.27,4.72 2.03,1.28 -2.35,4.61 1.58,4.55 2.59,-0.26 5.17,0.78 7.33,0.32 0.97,2.95 3.72,1.97 5.67,1.14 -0.33,-3.01 1.95,-4.41 4.07,-5.87 -0.58,-2.14 -2.28,-2.58 -3.96,-3.03 2.56,-1.22 -1.49,-6.49 2.6,-5.65 1.54,0.73 3.39,-0.95 1.08,-1.75 -1.32,-1.96 -3.23,-3.39 -1.84,-5.73 2.26,-2.81 -4.73,-2.76 -1.41,-4.42 -0.82,-3.37 2.37,-4.88 5.13,-5.19 1.46,-1.69 -2.03,-5.66 -3.21,-2.42 -1.87,0.81 -3.79,1.87 -5.79,2.74 -4.96,0.73 -9.29,-2.44 -13.26,-4.94 -3.21,-1.31 -6.53,0.84 -9.27,-1.96 -2.79,-0.81 -2.96,-3.66 -4.98,-5.35 -1.7,-2.34 -4.64,-3.03 -7.08,-4.31 -1.52,-0.14 -3,-0.57 -4.52,-0.71 z", + "department-83" : "m 517.2,482.16 c -2.21,0.45 -4.51,0.15 -4.56,3.03 -1.71,2.89 -5.34,-0.75 -6.7,-2.47 -3.07,-2.54 -3.41,4.73 -6.6,3.29 -1.58,1.5 -2.96,3.5 -4.46,4.67 -1.25,-1.47 -1.71,-3.25 -3.55,-3.95 0.03,-1.86 -1.87,-1.86 -1.91,-0.09 -1.33,1.02 -2.66,0.95 -3.16,-0.75 -1.91,-1.9 -4.18,0.89 -2.09,2.04 0.53,1.23 1.97,1.94 0.53,3.38 -2.84,-0.21 -5.92,2 -4.84,5.1 -3.44,1.27 3.35,1.25 1.35,3.57 -0.22,1.94 -1.24,3.31 0.74,4.69 0.22,1.73 4.1,2.93 0.81,3.75 -2.63,-1.28 -3.72,1.11 -2.27,3.16 -1.33,1.63 -0.65,2.88 1.29,2.7 1.09,1.33 2.34,3.31 -0.22,3.83 -2.89,1.3 -2.33,4.54 -1.48,6.82 1.05,1.11 2.71,1.01 3.71,1.52 -0.45,1.28 3.17,1.21 0.61,2.02 -2.2,1.64 1.53,2.03 2.31,3.24 1.87,0.49 2.01,-2.69 4.02,-1.64 0.25,-1.17 -3.62,-2.32 -0.77,-2.94 1.5,-0.75 1.25,1.72 3.11,0.9 1.98,-0.44 2.88,1.82 4.97,0.72 2.49,0.17 1.79,3.18 -0.25,3.1 1.03,0.17 3.75,1.02 4.22,-0.22 -1.87,-1.01 -0.43,-5.47 2.18,-4.51 2.27,-1.02 4.3,0.74 5.47,2.2 2.95,0.7 -0.7,-3.95 2.56,-4.14 1.82,-1.17 4.32,-0.11 5.81,-1.82 1.19,-1.87 3.53,-0.69 3.91,0.87 1.83,-0.26 1.02,-2.97 3.25,-2.97 -1.94,-1.52 0.52,-2.56 0.71,-4.09 -0.88,-1.35 -6.14,0.84 -4.2,-1.29 1.98,-0.49 3.13,-1.3 3.41,-3.27 3.09,-0.38 1.58,-4.33 3.42,-5.76 2.02,1.51 4.49,0.53 6.29,-0.38 1.97,-1.45 2.07,-3.69 -0.21,-4.86 0.39,-1.48 -0.82,-2.76 0.73,-4.13 0.32,-1.33 0.43,-3.31 -1.68,-2.51 -2.08,-0.91 -4.86,-2.77 -4.6,-5.2 1.21,-2.45 -1.26,-3.59 -2.82,-4.44 -1.3,-0.4 -2.5,0.43 -2.84,-1.45 -0.36,-2.95 -3.06,-1.75 -4.46,-0.37 0.04,-0.84 -0.83,-2.43 -1.72,-1.38 z", + "department-06" : "m 534.65,445.17 c -2.26,1.07 -5.06,2.58 -4.36,5.66 -3,-0.21 -3.04,3.43 -4.06,5.54 -1.08,2.46 0.95,4.86 2.25,6.92 -1.14,3.22 2.36,4.62 4.05,6.69 0.63,2.61 3.53,3.37 4.77,5.63 -2.57,2.29 -4.92,-3.17 -6.86,-0.03 -0.74,2.32 -3.13,1.4 -4.56,1.36 1.15,1.61 -2.67,2.88 0.34,3.69 1.19,1.89 -4.95,1.17 -2.32,3.78 0.53,1.35 2.49,-0.04 3.3,1.63 2.89,-0.16 1.89,3.58 2.03,5.2 1.45,1.97 3.65,3.89 6.12,3.69 1.22,2.02 -1.58,4.04 -0.48,6.02 -0.26,2.6 3.76,2.43 2.74,-0.52 1.75,-2.03 4.78,-1.82 7.05,-2.83 2.15,2.34 0.79,-2.94 1.42,-4.1 0.35,-2.64 3.85,-1.42 4.44,-3.92 1.43,-0.64 4.04,-1.22 4.41,0.38 0.69,-1.18 0.32,-2.51 2.45,-2.28 -0.13,-1.76 1.58,-4.07 3.07,-2.16 1.7,0.06 1.19,-2.66 3.34,-2.27 -0.27,-2.4 -3,-5.81 0.3,-7.3 1.54,-1.45 0.99,-4.2 3.51,-4.76 2.78,-1.39 1.89,-4.43 4.17,-6.12 1.59,-2.77 -3.27,-4.24 -1.5,-7.3 -1.21,-2.71 -2.61,1.55 -4.47,0.73 -2.22,0.84 -4.68,1.32 -6.76,2.38 -2.04,0.2 -3.62,-0.51 -4.81,-1.86 -2.43,0.52 -3.44,-1.96 -5.53,-2.49 -1.15,-2.34 -3.58,-0.83 -4.96,-2.82 -1.54,-1.59 -4.78,0.61 -4.95,-2.66 -1.4,-1.9 -2.37,-3.95 -3.93,-5.85 l -0.23,-0.02 -1.8e-4,10e-5 z", + "department-04" : "m 536.03,425.47 c -1.91,1.96 -3.88,3.46 -6.49,4.44 -1.02,2.88 -4.75,3.12 -5.32,6.34 -1.11,1.83 -1.21,3.9 -4.02,3.07 -3.01,-0.06 -6.66,-0.3 -8.11,-3.08 -0.64,-1.8 -3.43,-1.98 -2.19,0.22 -0.26,3.25 -2.7,-0.14 -4.23,1.68 -1.44,0.61 2.06,5.8 -1.43,5.09 -2.1,-2.16 -2.71,-5.63 -6.09,-5.69 -0.87,3.33 -6.54,3.63 -7.12,7.81 -0.96,1.13 -2.01,2.66 -0.4,3.1 -0.61,1.4 0.72,5.52 -1.66,2.94 -0.44,-1.65 -2.49,-3.59 -2.83,-0.6 1.02,1.86 2.62,3.82 3.95,5.12 -2.91,0.83 -6.3,-2.29 -9.28,0.12 -0.78,0.38 -3.94,0.37 -2.37,1.8 0.52,0.59 -1.17,0.62 -1.27,-0.25 -1.21,-2.36 -3.58,-0.6 -2.43,1.22 -2.05,0.82 -5.12,3.55 -2.92,5.69 3.34,-0.23 0.15,4.71 -0.09,6.55 -0.21,2.32 3.26,0.85 3.55,3.17 2.24,1.52 -3.59,5.18 -1.33,6.48 2.81,-2.13 5.06,0.73 6.7,2.59 0.57,1.46 2.26,4.38 3.61,1.7 2.13,0.13 4.41,4.24 5.38,0.42 1.94,-1.62 1.55,2.48 3.59,2.29 0.43,1.7 2.31,4.04 2.93,1.23 2.03,-0.76 2.24,-3.96 4.52,-2.9 1.73,-1.32 3.93,-6.5 5.92,-2.58 1.76,2.61 6.67,4.01 6.46,-0.53 1.66,-0.48 3.88,-1.21 5.41,-0.9 0.99,2.9 3.19,-2.27 4.59,0.48 1.62,-0.3 5.25,-1.56 1.66,-2.44 0.5,-1.52 2.15,-2.44 0.07,-3.65 2.45,0.82 5.17,0.99 6.43,-1.88 1.98,-0.91 4.27,3.34 5.6,0.53 -2.39,-1.94 -3.94,-3.66 -5.54,-6.13 -1.97,-1.55 -3.7,-3.16 -3.01,-5.85 -1.63,-2.1 -3.46,-4.86 -1.89,-7.35 0.29,-2.57 2.02,-4.78 3.68,-5.75 -0.2,-4 5.64,-3.6 4.5,-7.78 -0.28,-2.01 3.78,-1.57 1.15,-3.33 -2.21,-1.59 -4,-5.51 -0.76,-7.08 1.56,-1.02 4.77,-6.03 1.11,-6.32 z", + "department-05" : "m 505.98,394.66 c -0.92,0.25 -1.63,1.24 -1.1,2.16 0.19,0.48 0.58,1.51 -0.28,1.51 -1.03,0.5 -0.62,1.96 -1.08,2.79 -0.5,0.85 0.81,1.35 1.44,1.52 1.22,0.46 2.5,-0.16 3.7,-0.25 0.54,0.61 -0.39,1.36 0.2,1.99 0.46,0.55 -0.24,1.49 0.61,1.76 1.28,0.11 1.04,1.22 0.99,2.19 0.04,1.33 -0.36,2.63 -0.12,3.94 -0.53,0.79 -1.69,0.39 -2,-0.4 -0.51,-1.19 -2.09,-0.47 -2.63,0.32 -1,0.97 -2.33,-0.4 -3.46,0.21 -0.85,0.38 -1.73,-1.03 -2.42,-0.12 -0.98,1 -2.08,1.88 -3.19,2.74 -0.6,-0.52 -1.36,-2.29 -1.99,-0.92 -0.19,0.45 -0.47,0.63 -0.95,0.63 -0.5,0.26 -1.64,0.37 -1.59,1.05 0.28,0.44 1.46,0.83 1.02,1.47 -0.54,0.3 -1.13,0.65 -1.29,1.26 -0.7,-0.05 -1.3,0.89 -1.97,0.42 -0.72,-0.21 -1.09,0.98 -1.85,0.43 -0.58,0.09 -1.28,-0.82 -1.74,-0.36 0.25,1.1 -0.94,2.04 -0.76,3.1 0.52,0.18 0.81,0.66 0.78,1.23 -0.53,0.61 -1.46,0.99 -1.58,1.94 -0.18,0.9 -1.25,0.06 -1.79,0.32 -0.68,0.37 -1.24,1.41 -2.12,0.79 -0.93,-0.21 -2.04,-0.85 -2.95,-0.39 -0.57,0.89 0.83,2.18 -0.26,2.82 -0.65,0.74 -0.7,1.84 -1.37,2.59 -0.33,0.63 -0.72,1.79 0.31,1.98 1.01,0.26 1.61,1.36 2.24,2.13 -0.07,0.59 -1.06,0.18 -1.47,0.37 -0.6,0.27 -0.26,1.22 -0.74,1.67 -0.29,0.65 -1.01,0.59 -1.49,0.18 -0.57,-0.34 -1.27,-0.05 -1.74,-0.61 -0.9,-0.62 -2,-0.67 -3.03,-0.83 -0.44,-0.35 -1.26,-0.9 -0.84,0.18 0.34,0.85 -0.18,1.94 0.35,2.71 0.46,0.27 1.64,0.66 1.06,1.38 -0.5,0.81 -1.41,0.3 -2.05,-0.05 -0.52,-0.37 -1.25,0.09 -0.87,0.7 0.33,0.77 0.86,1.66 0.62,2.5 -0.66,0.38 0.12,0.97 0.62,0.79 0.61,0.08 0.48,1.09 1.17,1.15 0.27,0.47 0.79,0.78 1.25,0.32 0.66,-0.57 1.26,0.29 1.64,0.72 1.26,0.36 2.77,-0.21 3.93,0.31 -0.15,0.66 -1.33,1.39 -0.16,1.75 0.4,0.17 0.78,0.55 0.44,0.97 -0.13,0.75 0.67,1.6 1.38,1.06 0.44,-0.36 1.29,0.39 0.73,0.76 -0.45,0.57 -0.47,1.41 -0.01,1.94 -0.06,0.96 -0.14,2.01 0.32,2.89 0.74,-0.36 1.48,-0.84 2.32,-1.03 0.89,-0.54 2.04,-0.3 3.03,-0.47 1.36,0.7 2.9,1.36 4.48,1.28 0.82,-0.57 -0.52,-1.06 -0.97,-1.25 -0.83,-0.92 -1,-2.37 -2.18,-3.02 -0.89,-0.61 -0.47,-1.72 -0.01,-2.44 0.2,-0.82 1.38,-0.21 1.78,0.12 0.44,0.5 0.07,1.39 0.76,1.79 0.27,0.34 1.29,1.11 1.39,0.28 -0.46,-0.7 -0.4,-1.72 0.04,-2.4 0.24,-0.63 -0.28,-0.96 -0.8,-0.99 -0.4,-0.58 -0.19,-1.66 0.53,-1.93 1.11,-0.98 1.03,-2.64 1.93,-3.7 0.84,-0.83 2.18,-1.02 2.91,-1.96 0.3,-0.69 1.08,-1.23 1.8,-1.37 0.77,0.34 0.76,-0.99 0.72,-1.47 0.2,-0.8 1.42,-0.33 1.96,-0.19 0.77,0.29 1.87,0.6 1.76,1.64 -0.03,0.5 0.41,0.7 0.8,0.64 0.65,1.23 1.63,2.21 2.33,3.38 0.67,0.53 1.08,-0.73 1.28,-1.18 0.53,-1.39 -0.98,-2.61 -0.83,-3.89 0.95,-0.06 1.68,-0.79 2.53,-1.06 0.55,0.33 1.53,1.41 2.02,0.36 0.44,-0.73 0.48,-1.61 -0.08,-2.27 0.17,-0.42 0.83,-0.77 1.24,-0.86 0.91,1 1.94,1.96 2.46,3.23 0.51,0.3 1.22,-0.11 1.7,0.41 0.56,0.61 1.25,1.09 2.14,1 1.98,0.14 3.96,0.2 5.94,0.29 0.53,-0.84 0.08,-2.27 1.05,-2.94 1.09,-0.75 1.13,-2.18 1.48,-3.28 1.39,0.19 2.51,-0.88 3.23,-1.94 0.77,-0.23 0.49,-1.3 1.27,-1.53 0.82,-0.72 1.93,-0.86 2.92,-1.25 0.49,-0.42 0.51,-1.23 1.32,-1.26 0.83,-0.36 1.14,-1.4 1.93,-1.78 0.77,0.27 1.79,0.29 2.08,-0.66 0.66,-1.38 2.4,-1.81 3.71,-1.06 0.39,0.18 1.29,0.5 1.12,-0.27 0.09,-1.44 -0.99,-2.46 -1.92,-3.38 -0.16,-1.25 0.2,-2.81 -0.7,-3.82 0.26,-0.63 1.23,-1.27 0.5,-1.95 -0.48,-0.56 -0.7,-1.27 -1.5,-1.47 -0.9,-0.29 -1.99,-1.36 -2.93,-0.65 -1.03,0.93 -2.61,0.14 -3.63,-0.46 -1.39,-1.22 -3.06,-2.05 -4.52,-3.16 -0.14,-0.64 0.04,-1.36 -0.18,-2.01 0.26,-0.67 0.64,-1.39 0.32,-2.14 -0.46,-0.77 -0.27,-1.65 -0.34,-2.48 -0.67,-1.47 -2.82,-0.12 -3.68,-1.29 -0.42,-1.05 0.19,-2.49 -0.93,-3.24 -0.45,-0.58 -0.89,-1.29 -0.84,-2.02 -0.58,-0.55 -1.68,-0.52 -2.38,-0.21 -0.4,0.9 -1.61,1.62 -2.44,0.8 -0.83,-0.16 -1.61,0.86 -1.3,1.66 0.16,0.65 0.15,1.68 -0.74,1.69 -0.9,0.39 -1.54,-0.53 -2.43,-0.47 -0.85,-0.07 -1.72,-0.21 -2.49,-0.62 0.67,-1.13 -0.23,-2.74 -1.37,-3.11 -0.83,0.45 -1.99,0.92 -2.79,0.12 -0.24,-0.12 -0.29,-0.52 -0.63,-0.43 z", + "department-38" : "m 464.21,344.5 c -2.79,1.9 -2.68,8.48 -7.27,6.99 -0.9,-2.78 -3.83,-2.24 -5.03,-0.76 -2.02,0.29 1.51,1.68 1.08,3.08 2.47,0.08 3.5,3.16 0.44,2.72 -1.73,1.6 -3.23,3.88 -3.85,5.57 -1.57,-1.3 -1.06,1.72 -2.92,0.29 -3.28,-0.47 -4.55,3.17 -7.48,1.48 -1.5,1.31 5.74,3.47 2.07,5.5 -2.26,2.06 -5.1,3.74 -4.23,6.93 0.77,2.57 -0.06,8.04 4.48,6.03 2.27,2 6.34,-5.1 8.45,-0.76 1.77,0.21 1.71,3.96 3.93,1.45 1.68,0.13 -1.09,4.61 1.72,3.03 1.9,0.92 2.02,2.4 0.5,3.24 1.61,2.88 0.73,6.17 -0.85,8.65 1.08,-0.16 3.1,-1.79 4.37,0.45 2.36,0.7 4.24,0.15 6.23,1.33 0.84,-0.27 3.02,-1.03 3.81,-2.77 2.64,0.63 -1.49,2.67 0.72,4.47 0.38,3.59 -0.09,7.56 -0.56,11.3 0.4,1.45 0.41,2.4 -0.01,3.62 1.24,0.79 4,2.16 3.74,0.13 2.61,1.83 4.3,5.05 7.54,4.72 2.17,2.94 5.3,0.26 5.21,-2.58 1.66,1.44 8.14,-0.42 5.75,-2.57 -0.07,-1 2.61,-2.26 3.54,-2.4 2.26,2.99 3.89,-3.83 6.67,-1.32 2.19,0.23 3.45,-0.22 5.31,-1.27 0.97,1.39 3.24,2.32 2.54,-0.45 1.1,-3.23 -1.77,-5.43 -1.86,-8.01 -3.37,1.84 -6.82,-1.82 -3.61,-4.41 -0.13,-1.84 0.52,-3.31 1.32,-4.86 -1.82,-0.13 -3.26,-1.51 -5.13,-0.74 1.43,-2.69 -1.8,-4.98 -0.71,-7.76 -0.38,-2.56 4.12,-3.93 2.03,-6.04 0.5,-3.14 -3.24,-5.89 -6.15,-5.13 -1.66,-1.14 -3.77,-5.23 -5.46,-1.87 -0.31,1.87 -0.63,3.21 -0.4,4.62 -2.15,1.23 -4.77,-3.87 -7.68,-2.52 -0.95,-2.94 -2.79,-6.19 -4.33,-9.02 -1.66,-2.41 -2.31,-5.84 -4.73,-7.23 -0.04,-3.77 -5.4,-5.53 -5.81,-9.3 0.88,-1.39 -2.2,-3.36 -3.39,-3.83 z", + "department-73" : "m 486.16,340.96 c -0.45,0.45 0.31,1.19 0.03,1.77 -0.43,2.29 -1.49,4.41 -1.88,6.69 -0.26,1.38 -0.01,2.88 -0.3,4.22 -0.62,0.31 0.02,1.17 -0.58,1.57 -0.45,1.17 -1.58,0.73 -2.55,0.64 -0.84,0.07 0.16,1.14 -0.18,1.7 -0.39,0.69 -1.23,1.27 -0.9,2.19 0.16,0.81 -0.73,0.85 -1.28,0.92 -0.46,0.22 -0.52,0.84 -0.99,1.02 -0.1,0.57 -0.89,1.04 -0.26,1.63 0.76,1.32 2.36,2.45 2.11,4.11 0.23,0.33 0.74,0.34 0.74,0.83 0.84,0.69 0.84,1.99 1.51,2.8 0.86,0.69 -0.26,2.79 1.33,2.79 0.69,-0.42 1.75,-0.43 2.21,0.36 0.86,0.8 2.15,0.9 3.12,1.6 0.57,0.15 0.69,0.71 1.06,1.03 0.59,0.02 1.32,-1.15 0.42,-1.31 -0.57,-0.83 0.26,-1.71 0.62,-2.42 0.32,-0.63 -0.18,-1.37 -0.02,-1.93 0.76,-0.47 1.65,-0.69 2.47,-1.04 0.43,0.56 1.01,1.07 1.58,1.38 0.13,0.76 0.39,1.57 1.25,1.79 0.96,0.51 2.24,-0.49 3,0.51 0.5,0.17 1.21,-0.47 1.46,0.31 0.64,1.59 2.48,2.51 2.66,4.29 -0.29,0.15 -0.79,0.54 -0.21,0.73 0.85,0.23 0.12,1.35 0.11,1.91 -0.05,0.98 -1.42,0.76 -1.63,1.63 -0.67,0.52 -0.97,1.32 -0.71,2.16 0.28,0.8 -0.51,1.41 -0.41,2.16 0.41,0.87 0.74,1.73 1.41,2.45 0.62,1.01 -0.59,1.95 -0.5,2.93 0.52,0.56 1.11,-0.22 1.49,-0.5 0.92,-0.1 1.37,0.91 2.13,1.15 0.63,-0.3 1.62,-0.2 1.66,0.68 -0.1,1.41 1.8,2.18 2.81,1.25 0.65,-0.79 1.23,0.33 1.67,0.84 0.46,0.64 0.68,1.43 0.45,2.15 0.54,0.74 1.75,0.36 2.53,0.62 0.86,0.16 1.92,1 2.66,0.13 0.38,-0.92 -0.65,-2.23 0.57,-2.71 0.35,-0.45 0.85,-0.56 1.27,-0.15 0.94,0.49 1.73,-0.4 2.13,-1.14 0.91,-0.24 1.86,0.12 2.72,0.29 0.81,-0.21 1.62,-0.66 2.1,-1.32 0.99,-0.68 2.46,0.1 3.22,-1.02 0.35,-0.43 0.97,-0.89 1.45,-0.3 0.85,0.52 2.11,0.47 2.52,1.51 0.72,0.63 1.87,0.09 2.61,-0.25 0.41,-0.56 -0.74,-1.63 0.24,-1.82 0.89,-0.31 2.18,-0.09 2.35,-1.31 0.28,-0.94 0.93,-1.7 1.94,-1.85 1,-0.19 1.96,-0.56 2.92,-0.94 0.28,0.29 0.54,1.02 1.07,0.58 0.47,-0.87 0.96,-2.03 2.06,-2.12 0.86,-0.78 0.12,-2.12 -0.06,-3.06 -0.11,-0.72 -1,-1.93 0.07,-2.33 0.68,-0.07 0.41,-0.73 0.59,-1.12 0.98,-0.99 1.63,-2.36 1.9,-3.7 -0.59,-0.97 -1.87,-1.22 -2.71,-1.86 -0.94,-0.95 -0.87,-3.04 -2.54,-3.15 -0.56,-0.01 -0.92,-0.42 -0.89,-0.96 -0.58,-0.7 -1.85,-0.56 -2.18,-1.57 -0.64,-1.44 -0.23,-3.2 -1.06,-4.6 -0.34,-1.1 0.49,-2.08 0.76,-3.02 -0.69,-0.83 -1.62,-1.51 -2.76,-1.31 -0.88,0.14 -0.91,-0.82 -1.25,-1.33 -0.99,-0.62 -2.63,-0.33 -3.11,-1.66 -0.83,-0.95 -1.39,-2.07 -1.33,-3.37 -0.05,-0.49 -0.09,-1.83 -0.91,-1.34 -0.91,0.06 -1.72,0.7 -1.99,1.6 -0.42,0.52 -0.86,1.4 -1.45,1.52 -0.4,-0.17 -1.27,-0.31 -0.7,-0.87 0.23,-0.66 -0.51,-1.2 -0.28,-1.88 -0.34,-0.89 -0.91,-2.04 -1.95,-2.2 -0.89,-0.13 -2.19,0.76 -2.83,-0.15 -0.09,-0.52 -0.37,-0.96 -0.88,-1.06 -0.72,-0.81 -1.07,-2.03 -1.15,-3.07 0.63,0.06 1.62,-0.31 1.26,-1.11 -0.35,-1.05 -1.53,-1.04 -2.36,-1.47 -0.67,-0.01 -0.86,0.94 -1.52,1.08 -0.85,0.88 -1.48,2.09 -1.51,3.29 -0.72,0.95 -0.91,2.24 -1.97,2.95 -0.76,0.61 -1.69,1.28 -1.54,2.39 -0.21,0.67 -0.99,1.04 -1.01,1.82 -0.44,0.97 -0.54,2.37 -1.86,2.41 -1.14,0.38 -2.33,0.53 -3.53,0.54 -0.06,-0.45 0.01,-1.66 -0.76,-1.32 -0.31,0.13 -0.76,0.69 -1.03,0.56 -0.25,-0.91 0.24,-2.16 -0.62,-2.79 -0.14,-0.81 -1.14,-1.57 -1.94,-1.34 -0.21,0.5 -0.78,0.26 -1.03,-0.06 -0.76,0.04 -0.24,1.32 -0.76,1.53 -0.34,-0.65 -1.25,-0.37 -1.8,-0.73 -0.47,-0.07 -0.73,0.7 -1.2,0.25 -0.48,-0.36 -1.21,-0.4 -1.7,-0.51 0.01,-0.61 -0.44,-1.04 -0.93,-1.29 0.04,-0.57 0.55,-1.77 -0.49,-1.68 -0.47,-0.1 -0.19,-0.97 -0.81,-1.05 -0.66,-0.37 -1.22,0.91 -1.76,0.14 -0.38,-0.36 -0.12,-1.3 -0.92,-1.18 -1.02,-0.5 -0.45,-1.96 -0.7,-2.86 -0.23,-1.29 -0.31,-2.65 -0.65,-3.91 -0.34,-0.35 -0.97,-0.38 -1.43,-0.38 z", + "department-74" : "m 522.73,306.41 c -1.97,0.51 -4.09,-0.11 -6.02,0.54 -1.69,0.88 -2.87,2.78 -4.92,2.88 -1.61,0.19 -3.71,0.06 -4.62,1.7 -1.07,1.16 -2.72,2.21 -2.73,3.97 0.1,0.69 1.48,0.71 0.93,1.55 -0.41,0.84 0.21,1.93 0.9,2.4 0.42,0.09 0.95,-0.58 1.26,0.01 0.37,0.53 0.48,1.32 -0.23,1.62 -1.53,1.19 -3.48,2.08 -4.62,3.7 0.15,0.96 -1.06,1.44 -1.7,1.89 -0.92,0.54 -2.12,0.67 -2.99,-0.02 -0.94,-0.11 -1.74,0.7 -2.72,0.57 -1.73,-0.1 -3.26,0.92 -4.93,1 -0.77,0.2 -1.52,0.85 -1.16,1.71 0.19,0.63 -0.32,1.15 -0.97,1 -0.99,0.19 -1.36,-0.93 -2.04,-1.36 -0.25,0.5 -0.16,1.27 -0.57,1.8 -0.32,1.76 -0.11,3.58 -0.18,5.37 -0.05,1.02 1.4,1.33 1.1,2.4 -0.08,0.89 -0.37,2.18 0.97,1.91 0.75,0.22 0.29,1.37 0.52,1.94 0.31,1.44 0.48,2.91 0.5,4.37 0.07,0.67 0.88,0.58 1.19,0.96 -0.06,0.61 0.65,1.43 1.18,0.8 0.34,-0.42 1.1,-0.12 1.48,0.06 -0.19,0.54 0.13,1.08 0.73,0.94 0.45,0.32 -0.03,1.12 0.02,1.58 0.26,0.43 0.87,0.53 0.99,1.06 0.58,0.39 1.43,1.09 2.13,0.73 0.22,-0.52 0.78,-0.22 1.09,0 0.59,0.21 1.53,0.05 1.32,-0.78 -0.01,-0.66 0.68,-0.27 0.9,0.03 0.57,0.28 0.97,-0.69 1.55,-0.21 0.84,0.25 1.11,1.08 1.58,1.67 0.61,0.22 0.16,1.19 0.32,1.69 -0.08,0.68 0.71,0.6 0.85,0.07 0.5,-0.09 1,0.52 0.86,1.04 0.4,0.69 1.5,0.24 2.16,0.27 0.76,-0.24 1.79,-0.22 2.32,-0.85 0.55,-0.82 0.59,-1.89 1.06,-2.69 0.59,-0.47 1.08,-1.17 0.58,-1.84 1.1,-1.12 2.6,-2.01 3.15,-3.59 0.44,-0.46 0.57,-1.04 0.46,-1.64 0.43,-1.24 1.14,-2.4 2.27,-3.1 0.24,-0.19 0.68,-1.23 1.02,-0.66 0.87,0.56 2.4,0.81 2.5,2.07 0.05,0.67 -0.39,0.98 -1.01,0.85 -0.65,0.38 0.05,1.31 0.13,1.86 0.25,0.92 1.4,1.05 1.58,2.03 0.48,0.87 1.65,0.01 2.41,0.12 0.73,-0.31 1.18,0.28 1.5,0.85 0.45,0.56 1.16,1.11 0.82,1.91 -0.09,0.58 0.7,0.95 0.24,1.52 -0.21,0.76 0.9,0.79 1.18,0.23 0.84,-0.71 0.9,-2.01 2.02,-2.43 1.02,-0.06 1.62,-1 1.61,-1.96 -0.09,-1.02 0.58,-2.66 1.85,-2.26 0.39,0.29 1.11,0.3 0.98,-0.35 0.01,-0.41 0.22,-0.99 0.72,-0.64 1.66,0.72 3.32,-0.42 4.67,-1.3 1.07,-1.02 1.17,-2.69 2.2,-3.72 0.24,-1.07 0.13,-2.38 -0.92,-2.98 -0.31,-0.29 0.4,-0.66 0.03,-1.04 -1.08,-1.72 -2.7,-3.09 -3.82,-4.78 -0.93,-0.47 -1.81,1.29 -2.7,0.56 -0.35,-0.84 0.72,-1.72 0.05,-2.53 0.03,-0.72 1.46,-1.61 0.49,-2.23 -0.76,-0.34 -1.61,-0.31 -2.36,-0.72 -0.84,-0.04 -2.06,-0.19 -2.06,-1.31 0.09,-1.22 0.81,-2.32 0.63,-3.59 0.03,-1.74 2.08,-2.69 2.14,-4.38 -0.61,-2.1 -2.81,-3.32 -3.41,-5.34 0.58,-0.82 1.83,-1.33 1.69,-2.56 0.1,-0.89 0.32,-2.26 -0.88,-2.5 -2.33,-0.82 -4.77,-1.84 -7.27,-1.85 z", + "department-71" : "m 412,260.36 c -2.93,0.55 -4.26,2.21 -6.96,2.68 -1.28,2.48 2.3,4.5 -0.5,6.99 -1.43,0.66 -3.07,3.09 -0.49,1.44 1.9,1.91 -1.31,5.49 2.35,6.61 2.41,2.48 -3.47,2.49 -1.06,5.02 0.77,3.39 -3.9,1.03 -5.18,3.67 -2.25,1.4 -4.63,2.62 -7.04,3.38 -0.31,-4.58 -4.86,-2.18 -7.6,-2.64 0.33,3.18 3.53,4.95 4.3,8.11 0.37,1.27 1.28,3.31 0.8,5.05 2.56,1.6 5.5,0.03 6.06,3.56 2.3,-0.67 6.83,0.19 5.63,3.81 -1.65,2.24 1.1,6.27 -0.41,7.48 -1.83,-0.26 -2.1,1.92 -4,2.06 1.17,2.28 -1.61,6.17 2.72,5.49 0.93,1.98 2.84,2.96 4.81,1.08 2.24,-1.83 4.53,2.66 6.18,-0.34 0.99,0.81 3.97,-0.12 2.52,2.07 1.82,0.5 3.17,-1.98 5.29,-1.84 0.91,-1.94 0.34,-5.84 2.53,-7.3 2.38,-0.25 4.64,4.02 6.14,0.44 0.69,1.02 2.58,2.86 3.18,0.21 1.5,-2.57 5.41,0.79 2.63,2.19 4.35,0.26 -0.17,5.73 3.79,5.35 1.63,-2.32 1.8,-5.62 3.02,-8.28 1.07,-3.54 2,-7.12 3.47,-10.47 -0.24,-4.22 3.76,-4.44 6.12,-2.01 2.73,0.91 5.4,-3.24 7.43,-0.63 0.71,4.46 5.42,3.07 8.23,1.96 3.48,-0.33 -0.18,-2.98 -1.2,-3.64 -0.19,-2.06 -0.14,-4 2.12,-4.12 -1.13,-2.06 2.54,-2.7 0.55,-4.54 0.27,-1.18 -1.25,-2.07 -0.87,-3.37 -1.29,-1.52 -2.14,-2.53 -0.54,-4.28 -1.91,-0.7 -4.07,-3.41 -0.68,-3.56 1.47,-0.64 5.77,0.15 2.85,-1.99 -1.77,-0.79 -1.54,-3.02 -3.84,-2.16 -2.27,0.63 -1.51,-5.03 -4.1,-2.86 0.12,-2.06 -1.07,-4.73 -3.5,-2.61 -2.78,0.86 -4.3,2.07 -6.4,-0.46 -1.94,0.4 -2.39,2.11 -4.89,0.86 -2.61,0.33 -5.24,2.44 -8.14,3.19 -1.76,-0.3 -4.71,2.29 -4.23,-1.06 -3.18,-0.15 -5.08,-3.48 -5.63,-5.52 -2.23,0.19 -4.16,-1.65 -6.41,-2.36 0.94,-2.91 -1.62,-1.37 -2.5,-0.96 0.79,-4 -4.82,-1.4 -5.2,-5.1 -0.71,0.24 -0.8,-0.59 -1.34,-0.6 z", + "department-03" : "m 355.26,283.59 c -2.47,0.46 -4.86,3.44 -6.02,4.72 -1.76,-0.99 -3.8,2.31 -4.59,-0.78 -1.76,0.08 -2.97,3.69 -5.04,3.94 1.97,2.84 -4.43,0.31 -1.55,2.39 0.4,1.42 -1.37,2.94 0.6,3.99 1.55,3.09 -3.65,5.08 -5.37,3.61 -2.24,1.35 -6.48,-0.24 -7.16,3.06 -1.54,1.23 -3.6,4.68 -1.43,6.74 2.23,0.25 1.54,1.18 0.45,2.24 0.46,1.75 3.06,2.36 3.77,1.35 1.79,0.78 0.58,3.48 2.71,2.33 2.32,1.7 3.03,4.85 4.13,7.52 1.59,1.1 1.36,3.94 4.21,3.81 2.2,-0.4 1.29,-4.32 4.06,-4.34 -0.38,-2.36 1.13,-2.81 2.64,-1.17 2.87,2.05 0.78,-4.7 4.25,-3.15 2.6,-0.56 4.31,1.53 2.01,3.27 -0.51,2.53 2.71,1.85 2.18,4.56 1.6,1.64 4.19,2.18 6.12,1.98 0.53,3.71 5.09,1.32 7.41,2.58 2.46,-0.35 4.25,2.07 6.4,-0.15 2.05,-0.87 3.81,1.48 3.14,3.62 2.97,-0.38 6.89,-1.86 7.42,2.51 1.3,0.31 3.13,3.55 3.29,0.55 1.79,-0.98 4.46,0.16 5.67,-2.24 -1.33,-3.25 -0.2,-6.45 -1.49,-9.65 1.17,-1.65 -1.28,-4.71 -0.7,-6.42 1.4,-0.12 2.34,-1.59 4.2,-1.58 1.27,-1.45 2.99,-2.22 4.25,-3.49 2.82,-0.46 -0.34,-5.16 1.28,-7.19 1.51,-3 -3.08,-4.88 -5.16,-3.65 -1.18,-1.3 -1.26,-3.58 -3.47,-2.38 -1.93,-1.04 -3.95,-1.45 -2.9,-4.14 -1.14,-2.8 -2.34,-5.73 -4.5,-8.23 0.48,-2.03 -3.61,-4.95 -2.1,-1.56 -0.34,1.45 -3.05,0.68 -1.66,2.91 -1.17,0.41 -2.72,0.17 -3.32,2.29 -3.21,0.75 -0.8,-5.19 -4.58,-3.84 -1.04,2.99 -3.56,1.08 -4.7,-0.26 -2.1,1.25 -4.73,3.83 -6.34,0.2 -2.17,-1.67 -4.84,-2.89 -5.84,-5.6 -0.73,-0.27 -1.51,-0.18 -2.26,-0.35 z", + "department-58" : "m 361.05,231.75 c -1.61,0.98 -3.32,2.58 -5.23,1.22 -1.54,0.66 -5.16,0.31 -5.72,1.84 1.58,2.33 4.2,5.39 3.03,8.27 -0.46,2.34 -4.01,5.74 -0.25,7.04 1.92,1.64 3.66,3.16 3.28,5.91 2.2,3.19 1.4,7.61 2.45,10.69 2.84,1.44 0.59,4.96 1.6,7.25 -1.99,2.66 1.02,5.99 -1.24,8.7 -1.75,2.29 0.81,5.12 3.16,5.53 1.64,1.06 3.28,4.95 5.39,2.27 1.52,-1.93 3.16,-1.38 4.16,0.57 1.96,0.7 3.24,-3.41 4.93,-1.11 0.68,1.01 0.94,1.95 1.13,3.28 1.84,0.37 2.58,-2.94 4.39,-2.04 -0.61,-1.82 -0.49,-2.4 1.36,-2.38 -0.2,-1.17 -0.22,-3.61 1.45,-1.97 2.29,2.03 7.01,-1.91 8.02,2.31 1.41,2.29 3.54,-1.84 5.75,-1.47 1.68,-2.02 4.85,-2.71 6.51,-3.23 -0.22,-2.14 -1.12,-3.85 1.59,-4.65 -0.2,-2.28 -4.24,-3.86 -1.97,-6.79 0.18,-2.41 -4.07,0.3 -1.77,-2.02 2.77,-1.18 2.72,-4.62 1.41,-6.48 -0.21,-2.71 3.29,-1.57 3.61,-3.64 2.41,0.12 4.36,-0.55 4.66,-3.1 0.33,-2.07 -2.28,-4.7 -4.14,-3.18 -2.16,-1.91 1.5,-6.7 -2.23,-6.47 -2.06,-0.11 -3.88,3.63 -5.15,0.03 -0.32,-1.35 -0.05,-4.35 -2.03,-2.79 -1.29,0.05 -2.91,2.04 -2.96,-0.58 1.08,-0.8 1.65,-3.07 -0.35,-2.77 -1.09,1.35 -0.9,4.62 -3.13,2.61 -0.88,-1.42 -3.65,0.48 -4.06,-2.21 -1.01,-1.24 -3.05,-2.54 -4.54,-2.45 -1.62,0.35 -0.42,-3.16 -2.49,-3.09 -1.47,-0.17 -1.9,-4.94 -2.3,-1.85 0.35,2 -0.34,3.67 -2.39,2.1 -2.63,-1.51 -3.86,4.14 -5.82,1.03 -1.87,-1.04 -4.17,1.13 -5,-2 -2.26,0.34 -4.45,-1.48 -4.25,-4 -0.17,-0.32 -0.55,-0.4 -0.88,-0.38 z", + "department-89" : "m 374.12,178.1 c -1.36,2.82 -5.36,0.91 -7.76,1.83 -2.91,0.12 -7.22,-0.23 -8.27,2.98 0.14,3.17 1.58,6.21 -2.22,8.02 -3.13,1.63 -1.03,2.94 1.17,4.04 2.28,2.02 1.91,5.48 4.92,6.98 0.09,2.23 1.57,5.13 -1.56,6.65 -2.34,1.36 -4.04,3.95 -2.14,6.31 -0.68,1.5 0.04,4.08 -2.76,4.29 -2.25,0.39 -7.34,0.64 -4.79,4.05 2.45,0.93 4.06,4.45 3.33,7.05 1.14,3.61 5.07,3.17 7.39,1.37 1.4,1.71 1.46,5.08 4.64,4.36 1.07,1.7 2.94,2.2 4.19,1.56 2.83,2.78 4.94,-2.42 8.04,-0.36 2.24,0.32 0.05,-5.91 2.11,-2.26 1.33,1.79 2.94,3.05 3.85,4.95 3.33,-1.09 4.42,4.4 7.1,3.73 1.63,0.4 3.4,2.47 3.61,-0.47 1.06,-2.78 3.75,-0.39 1.71,1.41 -0.27,3 5.9,-2.28 4.47,2.93 0.46,3.12 3.19,1.32 4.4,0.59 4.42,-0.6 -2.45,-5.06 1.49,-6.94 2.21,-1.57 -0.41,-5.47 2.78,-6.83 1.14,-2.73 3.9,-5.69 3.26,-8.58 1.88,-0.52 1.26,-1.92 0.64,-3.48 1.6,-1.09 4.66,-1.22 3.88,-4.34 0.07,-2.34 -0.26,-3.73 -2.7,-3.42 -3.53,-2.05 4.19,-4.69 -0.03,-5.12 -1.97,-0.1 -2.62,-5.1 -3.28,-1.27 -2.05,-2.67 -2.92,2.59 -5.45,0.23 -2.35,0.79 -5.27,0.01 -8.15,0.79 0.15,-1.59 0.88,-6.21 -1.65,-3.46 -2.36,-1.38 1.3,-2.55 -1.24,-3.58 -0.94,-2.75 -2.25,-5.79 -4.33,-7.09 0.87,-2.25 -1.27,-2.36 -1.7,-0.43 -3.07,1.65 -2.16,-4.29 -5.46,-2.45 0.07,-1.1 1.54,-2.74 1.12,-4.43 -0.2,-2.34 -3.48,-5.41 -5.2,-7.74 -2.07,-0.04 -3.97,0.46 -4.78,-1.75 -0.22,-0.05 -0.43,-0.1 -0.65,-0.14 z", + "department-77" : "m 360.11,130.7 c -0.75,1.23 -0.27,2.29 -2.33,1.67 -1.38,-0.38 -1.84,2.1 -2.56,0.07 -2.14,0.21 -4.49,1.91 -6.24,0.1 -2.04,-1.53 -3.2,3.4 -5.16,0.88 -1.56,1.65 -2.68,-3.86 -4.86,-1.22 -1.42,0.6 -1.4,2.29 -1.08,2.9 -0.79,0.91 -3.3,2.12 -0.93,2.41 0.92,1.64 0.15,3.36 1.66,4.95 -0.21,1.86 -2.5,3.75 -0.77,5.03 -0.42,1.69 1.07,3.83 0.45,5.54 1.88,0.5 -0.47,2.18 -0.41,3.35 -1.82,0.99 1.36,3.93 -1.65,3.64 -0.82,0.84 0.31,2.38 -1.22,3.04 1.7,1.22 -0.11,2.87 -0.29,4.11 -0.83,2.76 -0.35,5.7 -0.38,8.61 1.13,0.77 2.32,2.24 0.22,2.19 -1.67,0.77 -3.86,1.83 -3.71,4.1 -3.26,-0.23 0.46,3.05 -0.39,4.73 1.93,0.89 5.35,1.9 4.16,4.93 0.05,1.63 -0.21,2.35 -1.8,2.26 -2.59,2.58 2.06,2.09 3.18,0.95 1.95,0.94 4.16,-0.38 5.89,1.16 1.74,-0.08 3.98,-1.65 3.26,-2.69 2.16,-0.61 3.3,-0.11 2.62,2.03 1.99,0.05 3.64,-2.23 5.85,-2.23 1.28,-2.5 4.18,-3.1 5.17,-5.95 -1.75,-1.86 -0.91,-4.39 0.11,-6.51 2.23,0.08 3.58,-0.87 5.81,-1.29 2.4,1.59 4.47,-0.91 6.89,0.03 1.85,0.05 2.21,-2.32 4.09,-1.22 1.02,-1.56 -1.94,-1.95 -0.46,-3.63 -1.01,-1.71 -0.67,-2.54 1.28,-3.16 -0.64,-1.19 -1.85,-3.14 0.59,-2.27 3.2,-0.16 -0.39,-3.09 2.44,-3.84 0.11,-1.36 2.11,-1.25 2.34,-2.32 -1.35,-1.35 -2.61,-1.35 -4.33,-0.87 -0.83,-1.72 0,-2.93 0.73,-4.28 -0.27,-1.41 0.18,-2.58 -1.57,-2.81 -0.08,-1.26 -2.46,0.08 -1.43,-1.87 0.29,-0.92 3.06,-1.11 0.77,-1.96 -2,-1.6 4.65,-0.07 2.85,-3.04 -0.62,0.26 -2.18,0.96 -1.62,-0.5 -2.19,-0.35 -3.93,-1.72 -3.63,-4.09 -1.91,1.44 -2.54,-0.3 -3.11,-1.76 -2.53,1.6 -2.02,-2.84 -4.2,-3.33 -1.26,-1.06 -2.94,-1.79 -1.15,-3.4 -0.57,-2.97 -1.82,-4.38 -5.07,-4.44 z", + "department-10" : "m 415.76,157.34 c -2.6,0.51 -5.55,-0.05 -7.71,1.48 -2.64,-2.28 -2.21,2.93 -5.08,1.84 -1.93,0.67 -1.61,4.36 -4.3,3.88 -0.4,1.61 -1.36,1.64 -2.59,1.72 1.3,3.01 -1.42,4.79 -3.84,3.13 -2.09,-1.39 -6.82,1.14 -6.65,-2.55 -0.6,-0.93 -2.3,-0.55 -2.52,-2.29 -2.04,-2.28 -2.83,1.06 -4.5,1.77 -0.06,1.25 0.93,2.82 -1.41,3.08 -3.5,-1.29 1.33,2.83 -1.65,2.81 -1.9,0.54 0.78,2.64 -0.38,3.85 2.1,0.63 -0.62,5.56 2.52,3.51 3.16,-0.12 4.15,3.44 6.03,5.22 0.01,1.47 3.08,2.04 0.93,3.9 2.08,0.85 -3.12,4.07 0.15,3.27 2.29,-0.8 2.03,4.35 4.19,2.52 1.08,-0.14 0.3,-2.78 1.94,-1.13 0.93,0.76 -0.96,2.98 1.14,2.23 2.34,1.66 1.67,5.24 3.89,6.96 2.43,1.45 -2.11,1.84 0.59,3.02 0.73,-0.46 1.14,-2.22 1.92,-0.23 0.37,1.61 -1.44,4.62 1.62,3.35 1.95,0.01 2.99,-0.54 4.79,0.26 0.99,-3.03 2.57,1.82 4.01,-0.76 0.84,-1.92 1.99,-0.84 2.76,-0.15 -0.14,-1.03 0.29,-2.65 1.27,-1.4 -0.33,2.78 3.95,3.53 3.81,0.39 2.92,-0.59 5.93,0.14 8.85,-0.56 2.39,0.31 2.85,-0.77 1.49,-2.56 2.05,-2.2 4.43,-1.32 6.94,-0.84 2.63,-1.11 0.34,-3.51 -1.25,-4.11 2.37,-0.23 3.32,-3.91 6.03,-1.87 3.03,1.11 1.67,-2.97 2.47,-4.56 1.68,-1.76 -0.94,-2.47 -0.07,-3.99 1.1,-2.25 -0.53,-3.76 -1.25,-5.67 2.38,-2.25 -3.94,-1.43 -2.88,-4.17 -1.47,-0.37 -2.51,-0.25 -2.96,-1.8 0.24,-1.72 -4.18,-2.97 -1.75,-4.03 0.72,-2.19 1.43,-3.93 -1.16,-5.04 -2.33,-0.81 -3.68,3.05 -5.35,0.57 -2.15,0.43 -4.7,-0.92 -6.23,-2.52 -2.9,-1.25 -2.44,-3.78 -2.05,-6.39 -0.16,-1 -0.29,-2.51 -1.75,-2.14 z", + "department-51" : "m 405.08,111.51 c -1.06,0.78 -0.74,4.64 -2.69,2.03 -2.26,-0.62 -3.69,-3.04 -5.85,-0.46 -0.76,1.47 -0.53,3.07 -2.6,1.59 -2.67,0.5 -5.66,1.55 -7.69,3.27 1.02,2.06 1.46,4.73 0.89,6.32 2.55,-0.42 1.18,3.01 3.85,2.11 0.48,4.28 -5.3,-0.05 -6.19,3.06 -0.39,1.65 2.79,4.09 -0.6,4.59 -2.26,3.23 5.49,0.01 3.06,3.78 -2.35,0.83 -2.21,3.44 -4.02,4.55 -0.04,2.3 -3.69,1.38 -3.38,4.24 -1.75,1.12 0.58,4.63 -2.54,3.99 -2.46,-0.16 -1.14,0.3 -0.32,1.22 0.08,0.89 -3.17,1.69 -1.26,2.59 2.53,0.21 3.88,3.9 1.46,5.7 0.25,2.2 1.1,2.12 2.94,1.45 1.92,0.52 2.98,4.27 5.46,4.81 -0.12,4.68 6.56,0.97 8.91,3.79 3.18,-0.68 -0.17,-4.93 3.46,-4.46 0.45,-2.04 3.42,-1.33 3.65,-3.97 0.75,-2.28 4.33,-0.39 4.38,-3.49 1.36,-0.34 2.79,1.39 3.81,-0.56 2.71,0.28 5.46,-1.6 7.64,0.42 0.89,2.81 -1.6,6.2 2.08,7.6 1.6,3.05 5.89,1.61 7.51,3.56 1.84,-1.76 4.32,-2.12 5.98,-0.45 1.91,-1.07 7.38,1.87 5.1,-2.02 -2.42,-2.79 6.05,-2.46 2.44,-5.4 -1.35,-0.11 -4.14,-0.27 -1.58,-1.69 1.66,-0.63 3.72,1.24 5.25,-0.9 2.3,1.31 5.6,-0.99 4.11,-3.45 -1.93,-1.13 -3.33,-3.27 -5.05,-4.35 0.2,-1.89 3.07,-2.43 1.04,-4.46 -0.24,-2.76 1.96,-3.93 4.51,-4.61 2.25,-1.35 -0.39,-2.44 -0.39,-3.09 2.85,-0.57 0.54,-4.33 -1.51,-2.09 2.09,-1.98 1.44,-5.68 -0.12,-8.2 -0.96,-1.63 -1.81,-3.48 0.73,-4.04 -0.24,-1.82 -2.4,-2.81 -3.5,-3.66 -2.15,0.23 -1.49,3.78 -3.82,1.54 -2.45,0 -5.77,-1.84 -7.92,0.23 -2.68,0.36 -2.07,-5.98 -5.47,-3.2 -2.64,0.89 -6.12,0.77 -7.24,-2.32 -2.8,0.56 -4.24,-2.36 -6.09,-4.01 -2.61,-1.4 -5.28,-1.58 -8.44,-1.57 z", + "department-02" : "m 388.2,68.13 c -1.08,1.13 -2.82,3.24 -4.4,1.16 -2.84,-2.2 -4.67,3.68 -7.97,1.02 -2.67,-1.47 -4.82,2.26 -7.41,-0.08 -2.13,-0.29 -5.92,2.27 -2.52,2.96 -2.98,2.53 -3.74,6.36 -5.63,9.48 -1.75,0.96 2.24,2.4 -0.4,3.91 1.95,1.43 2.51,4.94 2.65,7.7 -1.5,0.24 -0.31,2.46 -1.01,3.2 2.8,2.14 0.67,5.53 0.21,7.42 1.3,1.39 -0.62,2.75 2.02,3.19 1.86,2.58 -4.01,-0.19 -2.57,2.99 0.21,2.78 -1.91,6.35 -4.84,5.03 -3.19,2.38 3.18,2.33 1.82,4.68 0.73,2 -0.93,3.6 1.68,4.15 1.16,1.34 2.5,-0.57 2.39,2.15 3.19,1.07 -5.03,3.79 0.04,3.92 2.54,0.03 3.91,4.01 2.15,5.73 2.04,1.28 3.84,3.72 5.3,5.32 1.97,-1.81 1.27,4.11 3.47,1.27 1.13,0.14 0.62,4.1 3.08,3.73 1.02,1.15 2.26,2.18 2.67,-0.16 1.3,-1.34 1.82,-3.4 3.99,-3.73 1.01,-2.49 2.46,-4.36 4.65,-6 0.1,-2.93 -6.07,0.28 -3.5,-3.33 4.06,-0.79 -1.61,-3.63 1.16,-5.63 1.74,-0.53 6.13,1.2 5.33,-1.72 -2.24,0.27 -1.72,-2.21 -3.92,-2.36 2.32,-2 -2.35,-5.73 0.53,-7.34 2.85,-0.42 5.37,-3.57 8.29,-1.65 -0.29,-1.73 3.19,-4.87 4.55,-2.85 1.43,0.76 4.63,3.46 4.24,0.06 0.75,-1.54 -0.52,-3.16 0.75,-4.21 -1.86,-2.09 0.18,-3.94 0.86,-5.41 -1.97,-0.87 0.95,-3.51 -1.67,-4.78 -1.57,-3.69 5.08,0.31 4.01,-3.96 1.21,-2.05 5.54,-3.68 5.14,-6.49 -2.5,-0.39 -0.05,-2.22 -0.82,-3.84 1.25,-2 2.5,-4.89 -0.05,-6.15 1.79,-3.26 -2.77,-4.61 -5.35,-3.57 -2.14,-1.09 -7,-0.34 -5.08,-4.21 -1.57,-0.94 -4.83,3.39 -5.36,0.08 -2.78,-0.3 -5.86,-1.9 -8.53,-1.67 z", + "department-59" : "m 335.57,0.12 c -3.45,1.43 -6.99,2.74 -10.76,2.39 -2.72,1.29 -8.66,1.44 -9.11,3.85 2.44,2.79 3.25,6.62 4.77,9.94 0.43,4.77 5.56,3.66 8.58,4.42 2.32,1.45 -4.63,1.65 -1.51,3.98 2.44,0.67 -1.2,3.42 2.07,2.61 2.93,3.85 6.72,1.92 9.95,3.5 2.19,-0.65 4.1,-0.87 5.68,0.87 0.41,-1.85 2.1,-1.38 0.62,-3.01 2.05,-2.57 7.25,2.09 2.69,2.82 -1.83,1.68 0.07,3.54 -0.61,5.52 2.34,0.14 3.9,-1 3.93,1.59 2.5,-1.01 7,0.2 5.64,3.54 1.27,0.39 3.92,-0.75 2.32,1.89 -3.74,0.21 -4.27,4.12 -0.66,5.49 2.67,1.86 -0.52,2.17 0.31,4.28 2.66,0.03 5.42,1.44 5.6,3.59 -3.49,-0.01 -0.66,2 -1.8,3.32 -2.94,0.76 0.82,2.08 -1.93,3.52 1.19,2.22 -2.19,4.81 1.75,6.08 2.76,1.37 5.33,-1.11 8.08,0.5 2.78,-2.8 7.12,1.76 9.94,-1.66 1.88,-2.21 4.77,3.11 6.2,-0.72 3.06,-1.45 6.64,0.94 9.78,1.44 0.46,3.12 6.54,-3.53 4.81,1.34 0,2.28 5.16,2.43 7.07,2.12 1.13,-1.37 -0.83,-4.12 2.33,-4.63 2.68,-0.88 0.57,-5.07 -0.84,-5.54 -3.3,1 -0.12,-4.14 0.06,-5.58 2.39,-1.25 2.41,-3.76 -0.41,-4.14 -0.6,4.11 -2.68,-3.09 -5.06,-3.38 -1.96,-3.39 -6.66,2.37 -9.45,-1.06 -3.02,-1.09 -5.18,0.58 -6.36,2.66 -3.42,-1.36 -0.95,-6.36 -2.22,-9.19 -1.09,-3.5 -4.72,-3.12 -7.3,-3.15 1.15,-5.24 -5.66,2.5 -7.97,-1.03 -3.9,-1.63 -1.34,-6.5 -3.82,-9.41 1.83,-3.67 -3.12,-4.71 -3.84,-8.29 -2.91,-1.52 -7.12,1 -10.06,2.09 -0.33,4.97 -4.26,1.63 -6.9,0.96 -1.64,-3.04 -3.74,-6.42 -7.35,-5.98 -1.29,-2.74 -2.17,-6.28 -0.14,-8.73 -2.25,-2.77 -2.84,-5.71 -4.09,-8.81 z m 28.08,54.5 0.01,0.01 -0.01,-0.01 z", + "department-62" : "m 313.33,5.46 c -4.94,0.63 -9.82,2.03 -14.3,4.19 -2.31,2.03 -4.44,4.39 -7.41,5.25 0.4,3 1.9,6.23 -0.01,9.07 -1.39,2.89 0.06,6.1 -0.08,9.15 0.12,1.92 1.85,2.89 0.02,4.03 0.23,3.04 -1.19,6.37 -0.33,9.17 2.74,1.63 4.65,4.95 7.93,2.3 3.81,-2.29 6.82,4.56 9.77,1.72 1.01,1.14 -1.99,2.68 0.88,2.9 2.1,1.36 5.3,1.26 4.69,4.15 0.88,1.54 2.94,0.71 3.92,1.37 1.81,-1.07 3.99,-1.33 5.74,-1.4 1.16,1.12 1.77,-0.42 1.57,-0.98 1.33,-0.36 1.77,3.47 2.74,0.75 1.51,-1.51 6.22,0.91 4.51,2.46 -2.54,0.07 -6.33,4.05 -3.27,5.63 1.73,2.15 1.55,-3.53 4.22,-2.43 1.09,-0.01 1.95,2.52 2.26,-0.06 2.83,-0.7 -0.14,2.46 2.59,2.02 1.28,-0.01 4.09,2 4.68,1.23 -1.22,-1.42 0.73,-3.47 2.15,-1.5 3.8,-0.04 -3.11,6.76 1.65,4.07 2.16,-2.39 3.64,-1.2 4.04,1.36 2.23,-1.54 4.16,-0.79 6.67,-1.69 1.7,0.68 3.25,0.84 2.92,-1.52 2.01,-0.93 -0.86,-3.26 1.69,-4.17 -3.08,-1.56 3.06,-1.88 0.19,-3.89 0.22,-1.46 4.13,-1.5 1.13,-2.69 -0.34,-2.78 -7.17,-0.62 -4.12,-4.27 0.8,-2.23 -5.36,-4.49 -3.06,-6.23 1.03,-0.79 5.01,-2.22 2.55,-3.36 -2.01,2.19 -1.83,-1.12 -1.83,-2.28 -1.69,-2.27 -3.83,-0.79 -5.87,-1.11 1.15,-3.86 -4.88,0.62 -3.97,-3.05 1.99,-1.08 -1.84,-2.64 0.61,-4.04 1.4,-1.06 3.51,-1.23 1.17,-2.9 -1.51,-1.43 -4.89,0 -2.23,1.47 -1.85,-0.59 -1.52,3.3 -3.1,0.89 -1.9,-1.78 -4.14,1.01 -6.2,-0.92 -1.66,1.28 -2.66,-1.12 -4.47,0.08 -1.69,-1.59 -4.29,-2.33 -5.63,-3.51 2,-1.35 -3.65,-3.85 0.56,-4.64 3.01,-2.03 -3.3,-1.35 -4.61,-1.78 -3.99,-1.02 -3.27,-5.59 -5.16,-8.44 -1.11,-2.34 -2,-6.31 -5.19,-6.38 z", + "department-08" : "m 440.07,60.88 c -1.81,2.16 -4.2,3.74 -5.88,5.87 0.42,3.23 -0.62,6.85 -4.6,6.61 -2.61,1.4 -5.4,3.78 -8.53,2.23 -2.57,-0.31 -6.87,-3.07 -8.21,0.49 -1.09,2.27 2.57,2.05 1.26,4.47 -0.9,1.91 -2.03,4.96 -1.4,6.42 2.68,1.57 -1.58,4.47 -2.94,5.51 -2.03,1.01 -1.06,5.37 -4.36,3.7 -3.54,0.85 2.51,3.79 -0.29,5.51 1.51,0.87 0.58,2.56 -0.65,3.44 -0.53,1.71 1.98,3.37 -0.03,4.16 0.01,4.05 5.16,0.95 6.98,2.81 3.3,0.55 4.18,4.27 7.37,4.91 1.8,0.07 3.13,4.15 6,2.59 2.07,-0.07 4.96,-2.29 5.47,0.74 0.38,2.71 2.61,2.41 4.09,0.8 2.57,1.18 5.4,0.24 7.56,1.64 0.31,-2.7 3.11,-2.45 4.13,-0.68 1.4,-1.13 3.89,-1.64 4.64,-3.09 -2.15,-1.79 -0.62,-5.71 2.04,-5.88 0.24,-1.22 -1.21,-1.95 0.54,-2.89 0.24,-2.32 -1.77,-3.52 -2.04,-5.72 1.86,-0.63 0.83,-2.98 2.1,-3.97 -0.49,-2.87 2.16,-0.91 2.97,0.03 2.69,-1.68 3.87,3.39 6.05,0.41 0.28,-2.43 4.57,-1.6 3.3,-4.01 -0.97,-0.75 -4.08,1.55 -3.04,-1.15 1.75,-1.77 -2.34,-4.79 -3.97,-3 -1.63,-0.09 -2.52,-1.03 -3.35,-1.82 -2.04,-0.2 -1.16,-4.65 -4.28,-3.56 -2.09,-0.97 -3.75,-3.12 -6.22,-1.46 -1.91,0.12 -3.56,-0.3 -2.44,-2.42 -2.07,-2.68 2.55,-6.08 -1.42,-8.03 -4.13,-0.79 1.05,-4.77 -0.06,-7.24 0.2,-2.35 3.01,-3.4 2.16,-5.95 -1.43,-0.71 -2.14,0.48 -2.93,-1.47 z", + "department-55" : "m 466.47,97.47 c -1.56,1.83 -3.96,2.91 -5.49,4.69 -1.73,-0.62 -3.36,-2.29 -5.13,-1.66 -3.57,-3.74 -2.07,3.57 -4.83,4.43 1.86,1.88 2.97,4.89 1.69,6.85 0.61,2.43 -4.88,3.04 -2.52,6.02 2.38,3.31 -6.19,2.92 -2.28,6.6 -4.21,1.78 0.99,5.9 0.55,8.83 -0.1,1.57 -1.24,3.24 0.94,2.92 1.75,1.64 -1.92,3.15 0.48,3.93 0.25,3.59 -6.19,2.07 -5.18,5.89 1.08,1.97 -0.23,3.47 -1.14,4.72 1.38,2.47 5.49,3.27 5.15,6.61 0.23,1.76 -1.52,5.98 0.78,6.29 1.9,-2.79 1.64,2.85 3.89,1.37 2.31,2.74 5.53,4.67 8.96,5.55 2.27,1.43 4.35,3.02 5.92,5.23 2.69,2.59 4.85,-1.27 7.77,-0.65 1.95,-0.75 1.99,-2.61 4.21,-1.43 3.14,0.06 4.5,-5.18 1.4,-6.29 -3.87,-2.46 6.35,-3.69 1.46,-4.42 -1.47,-2.21 0.74,-5.44 -1.65,-7.38 0.52,-3.01 3.49,-5.5 2.03,-8.71 1.74,-1.41 -2.37,-3.07 0.56,-4.22 1.59,-0.69 4.2,-1.75 1.55,-3.18 -1.32,-1.7 3.57,-5.15 -0.4,-5.57 1.51,-1.93 -0.24,-3.53 -1.91,-2.99 -2.09,-1.69 1.38,-6.16 -1.64,-5.8 -0.54,-2.63 -0.07,-4.79 1.7,-6.78 -2.19,-0.64 -1.63,-2.43 -1.84,-4.23 -1.39,-1.72 -2.89,-6.03 -5.8,-3.74 -2.4,-0.05 -3.98,1.51 -4.61,0.54 -0.96,-0.51 -0.02,-0.62 -1.25,-1.61 0.46,-1.47 -0.85,-2.06 -0.1,-2.7 -0.17,-2.17 1.28,-0.21 0.11,-1.81 -0.06,-2.69 -0.83,-5.88 -3.37,-7.28 z", + "department-54" : "m 483.26,101.56 c -1.75,2.39 -6.72,-0.76 -7.03,2.38 -2.62,-1.44 -7.36,1.12 -6.17,4.43 0.74,4.88 5.26,0.58 8.1,1.48 2.96,1.01 3.57,5.58 4.1,7.38 3.12,1.31 -1.93,3.72 -0.52,5.95 -0.87,2.35 2.62,1.44 1.12,3.56 0.09,2.56 -0.17,4.4 2.68,4.39 0.95,1.44 -0.85,2.5 1.32,3.1 0.08,2.43 -2.65,4.77 0.06,6.73 -1.86,1.53 -5.42,2.68 -2.94,4.96 -0.32,3.14 0.42,6.53 -2.29,8.78 0.3,2.26 1.85,3.57 0.92,5.93 -0.21,2.42 4.1,2.54 0.74,3.73 -2.75,0.52 -2.79,3.37 -0.09,3.76 0.33,2.01 0.1,5.32 3,2.95 5.39,-1.2 1.3,5.69 5.29,7.31 -0.38,3.55 5.14,2.54 6.11,0.87 0.8,0.45 2.56,2.67 3.02,-0.32 0.4,-3.41 3.98,0.7 5.58,-2.34 2.07,-1.7 2.85,1.78 5.26,0.83 2.41,0.96 5.78,-1.97 8.72,-1.33 -0.11,-2.51 2.69,-4.44 3.49,-1.11 1.87,2.12 5.7,3.02 8.46,2.03 1.11,-2.51 3,0.55 4.43,-2.06 1.4,-3.3 8.67,-2.58 5.72,-7.33 -1.28,-1.26 -2.12,-2.52 -2.84,-3.74 -2.12,0.62 -3.12,-2.23 -5.19,-0.6 -3.43,-1.47 -6.2,-3.18 -9.79,-3.87 -0.04,-2.22 -3.9,-2.63 -5.43,-4.68 -2.97,-0.67 -5.52,-2.5 -8.38,-2.2 -1.35,-2.37 -4.49,-3.45 -2.73,-6.5 1.93,-3.82 -4.9,-3.21 -7.26,-3.68 -1.33,-1.55 -2.62,-2.04 -4.55,-3.04 0.53,-3.54 -7.57,-4.55 -4.54,-8.33 3.1,1.07 1.22,-3.19 3.24,-3.88 -1.85,-1.34 -2.22,-2.92 0.05,-3.88 0.24,-1.64 -0.87,-4.88 -1.53,-5.53 -2.45,-0.97 -0.9,-3.36 -2.63,-4.79 -0.94,-2.62 2.2,-6.94 -2.47,-7.44 -1.91,-1.02 -2.61,-3.63 -5,-3.91 z", + "department-57" : "m 503.4,104.95 c -3.5,0.04 -5.26,4.42 -8.98,3.78 -1.89,-0.4 -2.66,-4.83 -4.84,-2.71 4.17,0.85 -0.69,5.81 2.03,8.08 0.95,1.12 1.47,1.12 0.16,1.85 2.72,1.47 3.97,5.18 2.78,8.12 -3.16,1.23 2.9,3.39 -0.76,4.28 0.68,2.17 0.05,3.22 -2.29,2.94 -2.22,3.61 4.41,3.78 4.47,6.79 0.32,2.5 4.34,1.92 4.61,4.09 2.63,0.22 7.9,-0.18 8.05,3.09 -1.51,2.09 -1.02,3.76 1.16,4.61 -0.07,2.41 2.71,3.1 4.16,2.64 2.31,1.86 5.93,1.31 7.61,4.01 3.25,1.89 6.08,3.97 9.68,5.11 1.62,1.34 4.4,1.49 5.37,1.07 1.15,1.63 4.32,0.61 3.99,3.06 2.04,2.55 6.14,5.26 8.81,1.93 1.69,-2.04 5.6,-6.38 2.03,-8.09 -0.63,-2.26 4.24,-5.88 0.71,-8.42 -2.28,-1.08 -5.5,-4.67 -6.48,-0.31 -1.32,2.17 -2.68,0.9 -2.94,-0.66 -3.5,-1.06 4.07,-2.79 -0.09,-3.01 -2.21,-1.11 -5.81,-2.3 -5.04,-4.57 1.13,0.06 2.3,-2.29 3.7,-2.54 0.74,-1.99 0.82,-7.28 3.45,-6.47 0.09,2.59 1.3,4.57 3.75,4.84 3.24,0.28 5.22,3.37 8.36,2.73 2.95,-1.6 5.64,0.34 8.22,0.72 1.73,-1.99 3.39,-5.75 3.26,-7.88 -3.15,-1.08 -5.79,-2.77 -6.37,-6.36 -2.47,-1.1 -4.98,-1.26 -6.78,1.45 -3.22,2.32 -7.72,1.44 -11.17,-0.38 -0.64,3.79 -3.96,0.62 -3.06,-1.79 -1.61,-2.56 -5.77,-3.52 -8.36,-2.33 2.56,4.39 -5.29,4.06 -5.55,1.2 0.78,-2.3 -2.24,-2.11 -2.29,-4.46 -1.24,-2.84 -6.04,-4.38 -3.87,-7.88 -2.52,-2.26 -3.82,-6.64 -8.27,-6.11 -4.17,1.53 -5.59,-3.04 -9.23,-2.45 z", + "department-67" : "m 544.44,133.33 c -2.55,1.2 -1.86,5.34 -3.54,7.57 -2.79,-0.45 -3.98,5.32 -0.38,4.93 0.87,1.03 5.75,1.83 2.14,2.53 -1.78,1.5 1.91,2.4 0.8,3.44 3.07,0.38 2.8,-5.61 5.59,-2.68 1.27,0.5 2.75,1.06 3.36,2.31 3.21,1.88 -0.45,5.47 -1.04,7.67 0.4,1.75 3.37,1.12 1.47,2.94 -0.9,2.92 -2.34,6.34 -5.54,7.14 -1.52,-0.27 -6.22,0.31 -2.38,1.08 1.92,0.81 -2.32,1.02 0.26,2.27 -0.26,2.11 -1.22,5.21 -0.98,7.34 -1.59,2.69 3.49,1.95 4.06,2.53 1.12,2.38 5.28,1.06 5.74,4.01 2.04,-0.84 -0.91,2.57 1.9,1.72 3.01,0.58 6.32,2.58 6.2,5.56 1.67,1.12 3.39,4.4 5.2,1.29 0.87,-3.2 3.75,-5.3 4.22,-8.66 0.15,-2.7 3.74,-3.64 2.22,-6.76 -0.27,-3.01 1.17,-6.05 2.5,-8.7 1.39,-2.29 -0.7,-5.94 1.56,-8.31 1.96,-2.54 5.71,-3.61 6.25,-7.2 0.97,-1.38 2.5,-0.59 3.09,-2.39 3.71,-1.2 3.61,-5.01 5.11,-7.95 0.24,-2.03 5.28,-4.42 1.59,-4.91 -3.51,-0.14 -6.34,-2.15 -9.28,-3.81 -2.69,-1.53 -5.76,0.29 -8.43,-1.4 -2.54,1.19 -6.23,-0.86 -8.22,1.79 -0.69,2.41 -2.45,7.76 -5.69,4.83 -2.43,-2.51 -5.76,1.35 -8.43,-0.25 -1.12,-1.59 -3.01,-2.5 -4.57,-2.09 -2.06,-1.13 -5.18,-2.13 -4.56,-5.04 0.33,-0.23 0.21,-0.84 -0.21,-0.81 z", + "department-88" : "m 543.7,170.72 c -3.31,1.38 -6.33,2.9 -8.64,5.73 -1.29,0.67 -1.97,-1.71 -3,0.67 -1.48,2.53 -4.46,-1.14 -6.53,-0.37 -3.07,0.39 -1.42,-5.29 -4.45,-2.86 -1.72,1.06 0.93,4.33 -2.07,2.2 -1.78,0.74 -4.05,0.76 -5.72,1.72 -1.57,1.83 -1.69,-1.56 -3.59,-0.23 -1.77,0.14 -2.17,-3.2 -3.48,-0.63 -1.05,2.66 -5.79,-1 -5.2,1.97 -0.89,2.75 -2.59,1.71 -3.28,0.37 -0.1,2.4 -3.59,0.58 -5.16,1.87 -1.7,-0.72 0.13,-3.65 -2.1,-3.15 -3.28,-1.76 1.05,-7.74 -3.76,-6.9 -1.91,1.57 -3.93,0.03 -4.94,2.56 -1.62,0.54 -3.6,-1.45 -4.31,0.83 -0.98,2.28 -4.98,-0.54 -5.76,2.63 -1.49,-1.12 -4.76,0.24 -4.44,1.84 2.72,-0.76 -1.5,4.16 1.48,2.83 2.58,-2.8 4.27,0.92 5.47,2.86 0.99,2.29 2.44,-0.84 3.66,1.62 0.19,1.46 -0.14,2.91 2.21,2.73 1.05,0.81 2.84,3.4 0.16,2.99 -1.16,2.1 -0.8,4.9 -2.74,6.18 0.01,1.72 3.18,0.08 3.76,2.45 2.71,0.96 3.73,3.61 3.02,6.15 1.1,2.31 3.31,-2.88 3.5,0.86 1.43,3.89 3.56,-4.88 4.18,-0.76 -1.87,1.59 0.22,2.12 0.99,0.26 2.44,-0.34 2.63,-4.83 6.01,-3.79 2.78,-2.08 1.94,3.16 3.04,3.81 1.67,1.1 3.1,2.11 4.88,0.16 2.8,0.02 6.14,-1.3 7.82,1.99 0.57,3.89 4.42,1.42 5.62,-0.82 2.89,-1.35 3.54,3.7 6.5,4.05 2.19,0.9 3.46,2.55 5.11,3.85 2.21,-0.74 5.19,-1.96 3.36,-4.73 1.56,-1.66 0.35,-4.44 1.89,-6.56 0.98,-1.7 3.7,-2.62 3.88,-5.25 1.52,-1.58 3,-3.43 1.6,-5.14 1.49,-2.96 3.07,-5.84 4.54,-8.75 0.95,-1.35 2.26,-2.99 0.28,-4.02 -1.87,1.29 -5.67,-0.97 -2.92,-2.78 -2.18,-1.78 1.85,-5.54 -0.21,-7.07 -0.57,-0.2 -0.01,-1.38 -0.66,-1.38 z", + "department-52" : "m 446.82,158.96 c -1.69,0.91 -3.13,-0.45 -4.82,1.2 -1.12,-0.83 -4.57,-0.69 -3.54,0.9 2.8,-1.2 4.68,3.32 1.31,3.37 -2.26,0.28 -2.04,1.83 -1.08,2.97 1.74,4.14 -5.82,-1.2 -5.38,2.99 -0.5,1.16 -1.78,3.02 -1.22,3.88 2.37,0.94 2.16,4.62 5.26,4.46 -0.97,2.99 5.41,1.68 2.86,4.7 2.62,1.68 0.37,4.97 1.38,6.77 1.02,1.49 -1.35,3.52 -0.54,5.29 0.17,4.44 -5.3,-1.1 -6.39,2.93 -2.48,1.02 2.31,2.62 0.41,4.4 1.49,1.78 5.61,0.36 3.83,3.87 2.37,-0.59 4.42,1.86 1.79,3.34 0.65,2.75 2.75,-2.78 3.64,0.5 0.65,2.55 3.6,4.14 3.33,6.7 -1.31,0.89 -4.49,2.9 -1.32,2.84 1.47,1.51 -1.34,5.58 1.92,4.46 1.63,-2.16 2.42,0.63 2.94,1.7 1.79,1.42 3.81,1.4 4.82,-0.8 0.79,0.32 -0.13,2.53 1.75,2.49 0.96,1.39 3.18,1.14 1.74,3.15 0.89,2.65 3.78,-3.01 5.24,-0.13 1.75,-1.89 1.15,-6.06 4.57,-5.11 1.28,-1.4 3.49,1.3 4.33,-1.4 1.59,-1.92 1.63,2.72 3.95,1.22 2.18,-0.12 2.71,-1.17 2.09,-3.01 0.93,-1.34 1.22,-2.86 -0.38,-3.56 -0.59,-2.58 1.37,-2.98 3.06,-3.3 -0.71,-3.1 2.46,-1.42 3.57,-1.95 -0.16,-2.01 1.36,-3.53 2.99,-3.36 -0.29,-2.42 -2.17,-4.47 -4.19,-2.78 -1.26,-1.95 0.41,-5.52 -3.04,-6.35 -1,-1.34 -2.58,-2.41 -4.02,-2.13 -1.13,-1.43 1.6,-1.92 0.97,-3.42 1.1,-1.79 0.88,-4.33 2.89,-4.52 -0.46,-2.76 -4.86,-1.71 -3.68,-4.79 -1.34,-2.4 -3.06,0.93 -3.95,-2 -1.16,-2.97 -3.69,-4.38 -6.2,-2.11 -0.59,-1.91 1.12,-3.24 -1.32,-3.92 1.85,-0.41 3.47,-2.52 0.93,-3.26 -0.38,-1.87 -1.16,-2.02 -2.78,-2.58 -1.73,-3.16 -6.41,-1.82 -8.19,-4.99 -2.15,-0.46 -2.78,-2.81 -5.04,-3 -0.12,-2.21 -1.01,-1.61 -2.26,-0.66 -2.79,-0.35 1.41,-5.66 -2.22,-4.93 z", + "department-70" : "m 499.88,202.89 c -2.63,0.3 -4.89,2.11 -5.97,4.12 -0.94,0.91 -3.97,2.32 -2.12,-0.03 0.13,-1.92 -1.88,-0.34 -1.76,0.64 -1.02,1.34 -0.98,3.88 -3.06,3.55 -0.55,1.66 -1.23,4.46 -3.43,2.67 -1.42,0.7 -1.13,3.58 -3.32,2.54 -2.26,2.15 1.83,3.96 -0.2,6.21 1.24,3.12 -4.32,4.77 -5.32,1.82 -0.58,-0.92 -2.73,2.87 -4.37,1.01 -1.22,1.14 -4.49,-0.07 -3.8,2.59 -2.11,1.09 0.1,3.94 1.06,1.41 2.21,-1.57 4.14,3.91 2.96,5.69 -0.66,2.07 -2.95,2.72 -4.23,3.24 1.21,1.06 -1.76,2.05 0.86,1.83 2.25,0.29 -0.16,6.1 3.34,4.24 1.79,2.16 -1.88,5.33 1.36,5.71 1.44,2.16 3.91,4.38 6.57,2.71 2.27,-0.86 4.59,0.16 6.71,-1.75 2.79,-1.14 5.72,-4.18 8.47,-2.76 2.5,-0.09 4.56,-1.97 5.85,-3.76 1.83,0.46 2.61,-0.36 2.86,-1.77 2.63,-0.46 5.27,-1.6 5.54,-4.7 2.29,-1.29 5.83,-3.32 7.88,-0.71 1.23,-0.95 5.65,1.5 4.64,-1.81 -0.18,-2.44 4.57,1.54 3.74,-2.01 -0.12,-2.68 3.06,0.48 4.42,0.6 2.85,1.79 2.94,-3.34 1.04,-4.6 1.68,-2.26 -0.76,-5 -0.83,-7.47 -0.79,-2.86 4.43,-4.21 1.79,-6.71 -2.08,-2.66 -6.24,-2.87 -7.71,-6.14 -2.5,-2.92 -3.93,3.02 -6.8,2.39 -1.62,-1.8 -2.57,-4.88 -5.66,-4.53 -2.96,-0.21 -6.08,3.12 -8.15,0.41 -2.4,-0.51 0.23,-4.03 -2.37,-4.63 z", + "department-21" : "m 430.26,202.39 c -2.98,-0.36 -2.28,3.5 -2.89,4.09 -3.52,0.85 -7.72,-0.28 -10.91,1.13 0.12,1.91 0.16,3.7 -1.78,4.39 -1.43,2.57 2.23,2.59 2.78,2.96 0.78,2.82 0.56,7.26 -3.23,7.04 -0.11,2.16 1.99,3.62 -1,3.9 0.72,2.94 -2.41,6.52 -3.86,9.44 -2.44,2.06 0.03,6.34 -3.4,7.86 -0.01,1.52 1.54,3.57 2.08,4.44 2.08,-1.74 -0.71,3.97 0.05,5.35 0.76,2.06 4.84,0.48 4.74,3.88 -1.32,3.42 1.69,6.38 5.01,6.9 1.3,1.42 0.65,2.78 2.51,1.23 2.03,0.22 0.19,2.75 2.63,2.77 2.7,1.39 5.44,1.37 6.15,4.62 1.34,1.99 4.7,1.98 4.57,4.24 2.88,-1.34 6.42,-1.22 9.16,-3.33 2.31,-0.8 6.07,-0.86 8.14,-1.17 2.91,2.58 6.21,-1.12 9.25,-0.89 2.24,-0.61 1.63,-2.43 0.75,-3.34 1.62,-2.89 6.07,-2.65 6.78,-6.47 1.41,-2.73 2.01,-5.54 2.73,-8.48 0.14,-1.92 1.96,-2.74 -0.25,-3.51 0.43,-2.24 1.54,-5.31 -1.69,-5.06 -0.44,-1.89 -1.3,-4.9 -2.86,-4.55 0.22,-3.37 5.14,-1.91 4.96,-5.91 0.76,-2.96 -2.67,-7.08 -4.51,-2.82 -2.22,-0.25 -3.54,-1.43 -5.3,0.74 -2.39,1.02 -0.78,-3.81 -3.53,-3.94 -1.77,-1.18 -0.62,-3.19 -2.39,-0.9 -3.64,2.12 -4.58,-4.93 -7.28,-2.21 -2.89,-0.45 0.78,-4.91 -3.01,-5.07 0.9,-1.64 5.08,-3.23 1.85,-5.04 -1.35,-1.96 -2.46,-6.59 -4.91,-3.77 -2.57,-0.44 2.15,-3.15 -0.94,-3.86 -1.96,-0.39 -2.06,-0.68 -1.78,-2.38 -2.58,-1.59 -5.78,-1.16 -8.59,-2.28 l 0,0 z", + "department-25" : "m 524.75,232.72 c 0.6,3.47 -5.06,1.11 -4.41,4.65 -1.59,0.18 -4.21,0.28 -5.1,0.07 -2.83,-2.93 -7.31,0.27 -8.34,3.45 -1.29,2.51 -4.23,1.18 -5.23,3.59 -1.44,0.48 -2.41,0.42 -2.71,1.78 -2.17,0.44 -3.6,3.16 -6.39,2.02 -3.22,-0.12 -5.72,2.6 -8.74,3.57 -3.03,0.32 -3.9,3.34 -1.23,5.03 3.1,1.51 4.18,4.87 1.57,7.47 0.1,1.6 -1.31,3.03 -1.29,4.53 1.26,1.41 2.75,-3.16 3.11,0.11 0.9,2.49 4.55,-0.29 4.63,2.13 3.8,0.81 1.81,4.9 4.19,7.22 0.91,2.91 5.17,1.46 6.56,4.25 3.53,2.93 0.14,6.33 -2.84,7.54 -1.4,1.89 0.42,3.62 -1.39,5.19 -0.75,2.81 3.69,5.73 3.76,1.72 2.39,-2.03 4.37,-4.58 7.12,-6.18 2.26,-1.76 5.45,-2.91 6.57,-5.72 -0.74,-2.93 1.48,-6 -0.08,-9.15 0.11,-4.19 6.86,-3.29 9.42,-5.9 2.72,-1.98 2.28,-6.41 5.92,-7.6 2.76,-2.22 4.53,-5.44 7.39,-7.56 -0.61,-3.67 3.46,-4.22 4.78,-6.73 -0.15,-3.82 -4.97,0.07 -7.07,-1.46 0.7,-1.9 3.21,-4.13 1.45,-6.71 -0.76,-1.48 -0.67,-2.19 0.61,-2.92 -0.66,-3.47 -5.22,-3.74 -7.78,-2.34 -1.29,-1.12 -3.19,-0.98 -4.5,-2.06 z", + "department-2B" : "m 591.47,517.82 c -3.8,0.59 0.96,5.58 -2.34,7.11 0.41,2.37 -1.56,4.36 0.27,6.51 0.91,2.65 0.16,5.25 -1.21,7.52 -1.7,1.4 -2.28,-3.59 -4.88,-2.82 -2.72,-0.68 -5.78,0.73 -6.51,3.55 -0.96,3.57 -5.53,1.85 -7.86,3.52 -1.89,1.06 -3.87,1.71 -4.61,3.96 -1.27,0.02 -3.62,-0.97 -3.17,1.52 -0.83,1.46 -4.01,3 -1.97,4.89 -0.74,1.76 -0.34,3.49 -2.71,3.49 -0.21,1.44 -2.22,2.88 0.58,2.71 2.53,1.11 5.12,2.12 7.69,3.24 1.52,0.72 3.8,-1.59 3.24,1.35 1.14,3.16 4.05,4.22 6.73,6.16 3.36,0.28 1.41,5.5 4.55,6.47 1.71,1.96 0.79,6.36 4.83,5.7 0.18,2.3 0.59,4.8 0.39,7.09 3.14,0.81 -1.89,5.25 2.18,4.96 1.78,0.52 2.82,0.98 4.16,-0.94 3.62,-1.36 0.49,-5.59 2.73,-7.46 1.3,-1.69 2.64,-3.75 1.77,-5.45 1.89,-0.05 4.02,-2.43 3.98,-4.66 -3.67,0.56 1.98,-2.55 0.4,-4.61 0.47,-4.5 -0.6,-8.88 -1.01,-13.3 -0.14,-3.75 0.34,-7.67 -0.54,-11.31 -2.55,0.11 -3.67,-4.24 -3.35,-6.45 -0.43,-3.66 1.56,-7.1 1.67,-10.65 -0.63,-3.67 -1.07,-7.33 -1.55,-11 -0.76,-1.12 -2.26,-1.12 -3.47,-1.1 z", + "department-2A" : "m 553.92,559.49 c -0.76,0.55 -0.1,3.85 1.13,1.96 1.53,-0.6 3.16,1.13 1.04,1.7 0.18,1.06 4.56,1.95 3.28,3.75 -1.7,0.83 -4.95,1.13 -5.71,2.43 1.47,0.55 1.4,3.03 1,3.92 1.78,0.17 -1.16,0.99 0.63,1.63 0.63,1.3 2.89,1.78 3.93,2.6 2.01,-0.69 1.72,2.93 3.31,3.71 -1.37,1.54 -4.97,1.78 -3.83,4.58 -1,1.17 -4.84,0.3 -2.28,2.46 0.58,1.07 -0.7,3.38 1.57,2.3 2.41,0.81 4.08,-2.02 6.12,-1.18 1.97,1.46 -0.22,3.37 0.14,5 -2.75,0 1.8,1.85 -1.02,2.54 -3.01,0.03 -0.83,3.83 -3.9,3.99 -1.68,0.23 1.57,0.7 1.54,1.65 1.76,-0.59 3.68,-1.62 3.39,1.11 1.89,0.2 4.59,0.62 6.1,1.72 -1.54,1.28 -2.78,3.54 -5.39,3.37 -1.08,2.57 -0.44,5.65 2.26,6.65 0.47,1.48 3.07,1.49 4.07,2.79 2.06,-0.18 4.37,2.72 5.98,1.13 0.61,-0.03 -0.33,2.68 1.6,1.9 1.78,0.68 -1.94,3.73 1.39,3.43 1.92,2.48 5.07,2.16 5.35,-1.31 -0.28,-1.01 -2.21,1.4 -1.26,-0.4 -1.13,-2.4 4.15,-2.95 2.21,-5.91 -0.37,-2.45 4.29,-3.07 3.59,-5.68 -1.11,-1.47 -3.9,2.07 -2.85,-0.95 0.15,-2.4 3.01,0.56 2.82,-1.99 2.59,-0.18 0.07,-3.36 2.35,-4.13 0.15,-3.28 0.23,-6.85 -0.14,-10.22 -1.57,-1.53 -3.07,3.01 -4.83,0.98 -2.75,0.63 -3.37,-1.87 -1.99,-3.78 0.22,-1.35 -2.56,-0.55 -1.08,-2.17 -0.85,-2.32 1.32,-7.41 -2.67,-6.39 -2.45,-0.98 -0.65,-4.44 -2.73,-5.65 -2.85,-1.24 -1.36,-6.19 -4.82,-6.53 -1.64,-1.96 -4.77,-2 -5.5,-4.65 -1.21,-1.02 -0.51,-3.66 -2.85,-2.55 -2.75,-0.46 -5.3,-1.82 -7.74,-2.91 -1.28,-0.57 -2.84,-0.72 -4.21,-0.9 z", + "department-66" : "m 350.33,540.74 c -2.96,0.38 -4.31,2.8 -5.6,5.05 -3.53,0.71 -7.2,-0.41 -10.77,-0.57 -2.35,1.71 -6.82,-1.75 -7.77,1.56 0.2,2.13 1.85,4.41 0.81,6.44 -1.56,1.89 -4.34,1.3 -5.68,3.47 -1.35,1.08 -2.18,1.99 -3.65,0.52 -2.39,0.04 -5.76,-0.02 -7.25,1.69 -0.99,2.71 -4.23,1.36 -5.45,3.77 -3.15,-0.36 -6.54,2.28 -5.14,5.7 2.43,0.62 5.15,0.58 6.86,2.76 2.19,0.36 3.92,1.1 3.79,3.75 0.25,2.56 3.21,3.71 5.32,2.52 1.96,-1.04 2.2,-4.45 4.97,-3.96 2.58,-0.15 5.03,-1.38 7.33,0.7 1.62,1.14 4.07,1.03 4.94,3.03 1.26,1.86 4.32,3.14 5.35,0.56 1.73,0.75 6.82,2.34 4.14,-1.14 0.71,-2.52 4.05,-2.95 6.3,-2.62 1.56,-1.63 3.48,-3.18 5.81,-2.8 0.99,-2.12 3.1,-0.12 4.88,-0.88 1.63,1.07 2.93,3.67 5.54,2.51 3.2,-0.39 -1.16,-3.71 -1.44,-5.38 -2.92,-1.29 -2.81,-4.63 -3.06,-7.37 0.78,-2.2 -2.64,-2.22 -1.43,-4.12 2.29,1.97 1.16,-2.93 1.55,-4.24 0.36,-2.22 -0.89,-3.89 -3.17,-3.82 -1.26,-1.48 0.41,-4.01 -2.35,-4.33 -1.89,-0.44 -3.32,-1.87 -4.85,-2.81 z", + "department-01" : "m 445.43,302.59 c -1.44,3.02 -1.75,6.16 -3.18,9.18 -0.78,3.16 -1.85,6.34 -2.91,9.5 -0.74,1.88 -1.31,3.79 -0.09,5.37 -0.73,2.05 -2.97,3.67 -1.95,5.9 -1.67,2.26 0.87,5.73 -1.18,7.83 1.88,0.01 3.46,1.61 3.99,2.62 2.16,-1.53 3.89,1.88 4.07,3.41 0.92,1.26 -0.03,3.77 2.46,2.77 2.89,0.46 5.98,-0.89 8.76,0.39 1.35,2.24 3.89,2.93 5.42,0.31 1.18,-1.7 1.66,-5.65 4.09,-5.27 2.02,1.24 3.75,2.88 3.08,4.98 1.95,2.32 3.67,4.97 5.93,6.73 1.33,1.23 0.17,0.8 -0.53,0.61 0.61,1.8 3.11,2.49 3.34,4.83 0.97,0.84 1.38,-1.89 2.87,-1.59 -0.3,-1.63 1.67,-2.68 0.77,-4.34 3.81,0.96 3.71,-3.34 3.75,-5.95 0.89,-3.44 1.98,-6.82 2.27,-10.31 -1.07,-2.3 -1.36,-4.85 -1.09,-7.47 0.3,-1.5 0.9,-3.58 2.27,-1.4 2.48,1.01 0.53,-3.51 3.59,-2.7 2.71,-0.13 3.55,-3.26 1.37,-4.78 1.32,-2.8 5.95,-1.73 6.82,-4.09 -1.66,-3.05 4.61,-7.07 -0.2,-9.19 -2.62,-2.47 -4.13,2.14 -6.1,3.38 -0.9,2.11 -2.5,3.05 -3.65,4.53 -1.99,2.56 -5.47,0.79 -8.11,1.25 0.84,-3.04 -2.73,-3.43 -3.76,-4.72 -2.02,1.65 -3.16,4.49 -6.19,4.68 -2.73,0.46 -1.81,-2.02 -1.56,-3.51 -1.42,0.56 -1.69,-0.36 -2.26,-1.49 -0.06,1.35 -0.96,2.99 -0.83,0.6 -1.4,-1.01 -1.59,-2.59 -1.58,-3.72 -1.32,-0.93 -3.93,-1.28 -2.29,-3.07 -1.76,-1.43 -5.48,-1.31 -5.42,-4.72 -2.13,-0.62 -4.08,0.9 -6.23,1.42 -1.93,-0.36 -3.28,-2.81 -5.2,-1.46 0.07,-0.1 -0.3,-0.68 -0.54,-0.51 z", + "department-39" : "m 472.04,250.64 c -2.16,1.79 -1.36,5.28 -2.94,7.45 0.09,2.73 -2.31,4.73 -3.53,7.05 -3.03,-0.47 -5.35,3.74 -3.19,4.71 -2.06,0.47 -3.73,5.36 -0.52,4.7 1.33,0.76 0.69,4.17 3.48,3.21 1.68,-0.66 1.23,2.18 3.27,2.09 2.46,1.35 -0.2,2.67 -1.91,2.03 -2.06,-0.51 -4.46,1.94 -1.6,2.77 2.43,1.33 -1.33,3.03 1.08,4.08 0.89,2.1 1.19,3.82 2.13,6.05 -2.12,0.95 -0.43,3.73 -3.06,3.72 -1.86,2.41 0.74,4.14 2.3,5.69 -0.13,2.93 -6.18,0.76 -4.86,4.67 0.41,1.69 3.59,1.72 2.72,3.84 0.3,1.7 2.14,1.5 2.39,1.42 0.16,2.17 2.98,0.53 1.91,2.98 -0.9,3.13 3.87,1.82 4.85,0.12 1.46,-0.55 2.58,-4.59 4.24,-1.99 2.29,0.06 2.46,3.2 3.09,3.77 2.93,-0.04 7.08,0.91 8.5,-2.49 2.02,-1.97 3.8,-4.92 6.21,-7.02 2.27,-1.54 0.39,-4.74 2.54,-6.4 1.4,-1.49 3.11,-3.84 -0.06,-3.89 -2.06,-1.17 -3.31,-3.74 -0.87,-5.29 0.4,-1.53 -1.44,-3.09 0.76,-4.19 2.73,-1.36 6.13,-4.43 2.26,-6.76 -1.6,-2.02 -3.91,-2.65 -5.92,-3.04 -1.27,-2 -1.73,-3.98 -2.6,-5.89 -0.82,-0.25 1.22,-2.33 -1.1,-2.27 -1.84,-1.29 -4.2,-1.14 -5.91,-2.76 -0.62,-1.82 -0.09,-1.2 -1.26,-0.03 -2.05,2.08 -3.47,-2.98 -0.74,-2.02 0.76,-1.1 -0.4,-3.36 1.4,-4.52 2.37,-3.1 -2.64,-4.46 -3.59,-6.62 -0.37,-1.97 -2.06,-4.51 -3.97,-2.34 -2.56,0.88 -4.13,-1.12 -5.49,-2.82 z", + "department-68" : "m 549.43,183.82 c -2.25,1 -2.94,3.73 -3.79,5.81 -0.9,2.15 -3.75,4.26 -2.11,6.74 -0.93,2.22 -2.92,4.25 -3.93,6.64 -2.43,1.18 -3.51,3.7 -3.19,6.38 0.13,1.69 -1.55,2.36 -0.44,3.95 0.77,2.64 -4.62,1.97 -2.6,4.52 2.13,1.91 5.37,1.9 7.52,3.96 0.67,1.81 1.6,4.32 0.06,6.09 -1.78,1.43 -0.08,4 1.85,2.88 1.83,0.98 2.47,3.66 3.32,5.16 -0.72,2.04 1.34,2.1 2.39,2.44 -0.32,1.38 -1.23,4 1.33,3.32 1.03,1.33 2.07,1.29 3.35,0.31 2.56,-0.08 5.85,0.35 7.17,-2.31 -0.73,-1.24 -0.96,-2.18 0.78,-1.43 2.66,0.8 0.35,-2.42 2.52,-2.38 0.82,-0.85 -1.99,-1.47 0.03,-2.05 1.88,-1.02 4.21,-2.78 2.05,-4.99 -1.7,-1.63 -3.7,-3.88 -1.43,-6.04 0.91,-2.16 -1.41,-4.57 0.56,-6.71 0.67,-2 0.44,-4 1.78,-5.83 -0.03,-2.09 3.45,-4.94 0.43,-6.95 -3.06,-1.46 0.88,-6.62 -2.19,-7 -1.65,-0.56 -1.53,-2.31 -3.25,-2.51 -0.17,-1.94 -0.33,-3.93 -2.69,-4.35 -2.09,-1.1 -4.78,-1.23 -5.71,-3.58 0.07,-2.15 -2.48,-1.52 -3.79,-2.06 z", + "department-90" : "m 532.37,216.22 c -0.55,0.23 -0.49,0.97 -0.95,1.33 -0.62,0.8 -1.51,1.36 -1.95,2.3 -0.77,0.99 -0.8,2.48 -0.08,3.5 -0.03,0.67 0.48,1.24 0.41,1.93 -0.01,0.83 -0.07,1.76 0.62,2.36 0.29,0.29 0.48,0.66 0.1,0.97 -0.14,0.38 -0.57,0.43 -0.76,0.72 -0.05,0.5 0.53,0.78 0.56,1.29 0.18,0.47 0.52,0.85 0.75,1.28 0.26,0.15 0.87,0.53 0.4,0.81 -0.7,0.47 -0.05,1.72 0.76,1.5 0.78,0.02 1.57,-0.19 2.27,-0.46 0.8,0.18 1.42,0.82 1.45,1.64 0.04,0.86 1.41,0.54 1.43,1.42 0.01,0.47 0.26,1.11 -0.01,1.5 -0.5,0.35 -0.45,-0.64 -0.86,-0.74 -0.5,-0.2 -0.94,0.42 -0.64,0.85 0.2,0.34 -0.18,0.93 0.34,1.04 0.43,0.61 0.84,1.44 0.71,2.19 -0.36,0.5 0.42,0.64 0.75,0.45 0.83,-0.18 1.47,-0.8 2.26,-1.07 0.62,-0.6 -0.22,-1.42 -0.38,-2.05 -0.12,-0.36 -0.45,-1.06 0.17,-1.13 0.42,-0.08 0.81,-0.3 1.15,-0.48 0.96,0.2 1.82,0.91 2.86,0.71 1.1,-0.11 2.47,-0.62 2.45,-1.94 0.16,-1 -0.69,-1.62 -1.41,-2.13 -0.16,-0.46 -0.02,-1.09 -0.52,-1.4 -0.45,-0.55 -0.43,-1.71 -1.38,-1.73 -0.72,-0.12 -1.46,0.05 -1.95,0.59 -0.4,0.24 -0.3,-0.53 -0.6,-0.62 -0.31,-0.79 -0.34,-1.73 0.1,-2.47 0.16,-0.36 0.01,-1.1 0.63,-0.98 0.41,0.01 0.38,-0.37 0.4,-0.64 0.61,-1 -0.15,-2.14 -0.3,-3.13 0.23,-0.47 0.38,-1.05 -0.1,-1.44 -0.8,-1.1 -2.3,-1.18 -3.29,-2.06 -0.38,-0.36 -0.84,-0.58 -1.33,-0.6 -0.84,-0.67 -2.13,-0.38 -2.92,-1.15 -0.45,-0.63 -0.74,-1.4 -0.95,-2.13 -0.05,-0.04 -0.12,-0.05 -0.18,-0.04 z" + } + } + } + } + ); + + return Mapael; + +})); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/france_departments.min.js b/plugins/jquery-mapael/maps/france_departments.min.js new file mode 100644 index 0000000..c615fe0 --- /dev/null +++ b/plugins/jquery-mapael/maps/france_departments.min.js @@ -0,0 +1,16 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of metropolitan France by department + * Equirectangular projection + * + * @author Vincent Brouté + * @source http://fr.m.wikipedia.org/wiki/Fichier:France_location_map-Departements.svg + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{france_departments:{width:600.08728,height:626.26221,getCoords:function(a,b){var c,d,e,f,g,h;return 43.1571>a&&b>8.17199?(c=43.64246,d=181.3452,g=b*c+d,e=-65.77758,f=3346.37839,h=a*e+f):(c=45.48385,d=220.22005,g=b*c+d,e=-65.97284,f=3371.10748,h=a*e+f),{x:g,y:h}},elems:{"department-29":"m 37.28,156.11 c -1.42,1.23 -3.84,1.18 -3.99,3.49 -1.31,-2.24 -8,-0.27 -6.23,1.86 -0.83,0.29 -3.61,-0.09 -4.72,1.08 1.27,-3.15 -2.84,-2.76 -4.74,-1.32 -1.52,0.3 0.5,1.51 -1.67,1.26 -1.43,1.46 -5.78,-1.22 -5,1.7 2.01,2.28 -4.44,-1.17 -2.19,2.21 2.05,2.35 -1.91,-1.21 -3.2,0.17 -2.44,0.46 -5.9,3.28 -4.27,6.2 1.31,1.03 -2.45,2.79 -0.89,4.68 1.85,1.54 -1.54,4.66 1.85,4.99 2.29,0.7 2.49,-2.98 4.87,-0.96 3.08,0.74 5.89,-2.07 8.89,-2.74 1.93,-0.34 5.67,-2.04 6.34,-1.85 -2,1.78 -5.83,1.89 -6.41,4.93 -0.69,1.92 2.11,-0.67 2.33,1.07 1.34,-0.89 2.68,-1.87 3.94,-1.39 3.81,-2.03 -2.75,2.24 0.52,1.99 1.47,0.34 4.01,0.96 4.33,1.46 -1.94,0.3 -3.28,1.07 -4.57,-0.08 -2.38,0.71 -4.58,1.45 -6.63,0.05 -2.75,0.86 -5.75,0.61 -4.18,-2.84 -3.29,-0.24 -0.4,5.1 -3.79,3.67 -1.2,2.84 5.41,0.67 2.62,3.42 0.89,1.41 -0.15,5.78 1.86,2.76 0.83,-2.29 2.62,-4.57 5.09,-2.36 1.97,1.37 5.1,0.79 5.41,4 1.86,2.04 -0.29,6.23 -3,3.6 -3.95,0.62 -7.67,1.95 -11.58,2.45 -2.09,0.38 -5.98,-0.08 -4.41,2.7 2.53,0.06 4.87,1.62 7.03,1.82 2.62,-1.48 5.9,3.16 7.51,5.27 1.61,2.44 2.66,5.4 0.91,7.66 1.94,1.19 5.11,1.18 7.5,0.75 1.99,-0.45 3.16,-2.44 1.04,-3.28 -1.05,-1.98 0.82,-2.27 1.51,-0.45 3.34,0.23 -0.63,-4.11 0.69,-3.65 0.91,2.75 3.66,3.46 5.82,3.53 2.26,0.86 -0.02,-4.66 2.92,-2.01 2.11,1.7 2.69,4.22 4.57,6.13 2.01,0.11 4.17,0.12 6.01,-0.65 1.82,2.12 5.68,2.27 8.25,2.23 1.8,-1.51 -1.55,-4.66 0.95,-5.09 0.94,2.57 3.24,-0.19 3.58,-1.33 2.95,0.23 0.38,-3.13 2.08,-4.2 -0.21,-1.43 -0.64,-3.61 -2.53,-1.94 -1.44,2.09 -1.76,-1.59 -3.7,-1.52 -2.13,-1.41 -5.77,1.37 -6.1,-2.55 -0.44,-2.07 -2.04,-3.22 -2.32,-5.05 -2.23,-0.45 0.49,-4.53 2.59,-4.02 1.42,-1.43 5.76,-1.87 5.77,-3.15 -3.54,-1.5 2.53,-4.55 -0.88,-5.73 0.6,-1.35 -0.87,-3.79 -0.56,-5.72 -3.53,0.13 -1.65,-3.79 0.06,-4.6 -3.56,-1.53 -0.98,-4.21 0.33,-6.05 -1.3,-1.16 -2.22,-1.16 -1.99,-2.94 -3.12,-0.26 -3.41,-4.67 -2.3,-6.54 -0.38,-1.53 -3.23,-0.42 -4.45,-1.94 -2.01,-0.12 -5.18,-1.19 -4.7,2.29 -0.84,1.4 0.25,4.35 -1.82,2.22 -1.36,-0.49 -0.48,-3.38 -2.36,-1.3 -1.28,1.93 -1.52,-3.86 -1.99,-4.38 z m -9.88,28.66 0,0.02 0,-0.02 z","department-22":"m 77.67,146.73 c -2.58,0.94 -4.37,2.6 -5.78,4.84 1.21,-2.76 0.01,-6.18 -2.26,-2.58 -2.86,-0.54 -4.85,2.02 -7.32,2.35 0.05,-2.38 -5.14,-2.89 -4.97,-0.27 -1.65,0.69 -2.79,2.55 -0.54,3.83 1.42,1.41 -3.19,1.12 -1.21,3.58 0.75,2.79 -2.62,-0.53 -2.95,1.74 -2.03,2.25 0.93,5.14 2.73,6.11 -0.89,1.81 3.77,1.87 0.94,3.62 -2.27,1.33 -1.69,4.1 0.71,4.68 -2.37,0.99 -3.54,4.66 -0.18,4.93 -0.75,1.8 0.34,4.07 1.35,3.89 -2.23,1.45 2.07,3.31 -1.02,4.81 -1.32,1.63 3.39,3.81 -0.37,3.46 -0,1.68 3.4,-0.17 4.6,0.64 2.17,-1.15 0.09,3.47 2.84,1.65 2.78,-2.51 5.12,2.28 8.16,0.11 1.28,-1.21 4.21,0.16 3.71,-2.72 2.36,-2.11 5.53,-0.32 6.55,2.07 3.1,-1.66 5.66,1.79 8.52,1.44 1.09,1.13 1.31,4.63 2.54,1.67 1.77,0.69 4.7,-2.67 4.36,1 -1.42,1.92 -0.06,5.98 2.29,3.25 2.15,-1.33 3.24,-3.52 3.71,-5.84 -1.55,-1.8 3.03,-1.29 4.1,-2.17 2.56,0.5 2.84,5.71 5.3,2.6 2.48,-0.52 4.76,-2.21 4.35,-5.23 2.66,1.35 0.38,-3.98 3.68,-3.07 2.3,0.76 0.88,-1.21 2.74,-1.68 0.93,-2.46 3.26,2.1 3.88,-0.74 2.87,-0.05 0.28,-3.49 2.75,-3.67 -0.67,-1.88 -0.1,-4.12 -0.62,-6.07 1.57,-1.46 2.25,-5.3 0.59,-6.78 -0.36,1.32 -2.86,3.56 -2.08,0.75 -0.58,-2.28 -2.24,-1.04 -3,-0.66 -0.39,-2.19 -3.7,-1.69 -4.26,-4.29 -2.01,-0.96 -0.92,3.96 -2.61,1.33 -0.93,2.11 -1.72,-1.85 -2.25,-2.64 -0.23,-2.69 -5.02,3.57 -3.11,-0.38 2.12,-1.4 -0.5,-4.55 -1.42,-1.9 -1.94,1.15 -2.92,1.92 -4.85,1.1 -2.9,-0.12 0.52,1.54 -2.1,2.49 -3.58,0.78 -5.19,5.69 -8.5,5.48 0.49,3.36 -2.74,-0.19 -2.06,-1.81 -2.95,-1.1 -4.73,-3.24 -4.7,-6.38 -2,-2 -5.44,-3.63 -5.11,-6.81 -0.95,-1.07 -6.79,-1.08 -3.38,-3.09 0.47,-2.76 -4.12,-1.19 -3.66,1.11 -0.44,1.73 -2.27,2.41 -0.65,0.39 1.33,-1.47 1.44,-4.62 0.53,-6.14 z","department-56":"m 78.99,190.76 c -3.41,-1.13 -2.2,3.92 -5.32,2.9 -1.41,0.4 -1.19,1.61 -2.99,0.82 -1.13,0.79 -2.69,-0.38 -3.4,-0.47 -0.84,-2.28 -6.08,2.96 -4.76,-1.3 -1.92,-0.69 -4.61,-0.08 -6.81,-0.32 -2.56,1.49 -6.48,1.43 -6.89,4.97 1.66,0.45 1.27,1.18 1.54,2.72 2.29,1.28 1.38,6.71 5.21,4.85 2.27,-0.57 4.21,1.54 5.35,2.54 1.09,-1.75 3.9,-1.39 3.21,0.95 0.1,1.55 -1.11,2.84 -0.3,4.77 -2.2,-0.71 -3.03,4.58 -5.67,1.76 -1.43,0.94 1.23,2.98 -0.19,4.47 0.79,3.11 4.25,6.81 7.21,3.89 -1.96,-1.82 1.17,-1.04 2.08,-2.79 1.53,-1.34 1.85,-1.47 0.72,0.46 -0.96,1.01 -3.43,3.3 -0.38,3.09 1.49,0.45 3.45,4.36 4.77,2.88 -0.27,-2.53 3.83,-3.05 1.1,-5.44 1.05,0.63 2.71,-0.96 2.12,1.15 2.98,0.99 -0.94,3.03 -2.44,3.55 -2.08,3.14 3.5,3.77 1.75,6.92 -0.29,1.59 0.31,5.9 2.13,4.03 -1.68,-0.96 -1.89,-7.61 0.51,-4.94 -0.5,1.26 4.8,0.74 3.44,-1.25 0.35,-0.76 1.34,3.45 1.43,0.83 0.89,1.74 3.91,2.47 1.59,0.06 -0.51,-1.47 -0.02,-3.03 -0.87,-4.45 1.76,1.65 1.37,4.11 4.01,4.31 0.21,-1.28 1.88,-0.67 1.78,-2.23 1.83,0.46 2.89,-0.48 3.79,-0.93 2.28,0.82 -0.59,1.71 2.06,2.43 1.57,0.52 0.39,-4.11 1.62,-1.05 -0.46,2.03 -2.17,6.08 -4.56,4.17 -1.51,0.14 -2.97,0.56 -4.53,-0.67 -3.37,0.66 2.51,2.11 2.17,4.25 2.28,1.57 4.95,-1.33 7.46,-0.04 0.09,-2.03 1.34,-0.88 2.36,-1.71 -1.31,-1.38 4.01,-1.27 0.96,-0.1 0.22,1.93 4.41,-1.17 5.9,0.75 1.01,1.43 4.31,0.26 4.44,1.04 -2.33,0.43 -6.75,-0.69 -5.01,3.23 1.5,1.03 2.59,-3.6 4.01,-0.77 1.99,-0.12 4.3,0.38 4.4,-2.43 0.29,-2.58 2.25,-0.15 3.16,-0.22 1.19,-1.05 2.3,-1.01 2.74,0.42 1.6,-0.29 0.66,-3.06 3.03,-2.61 0.96,-1.59 -0.11,-4.05 1.01,-5.76 -1.21,-2.25 -1.75,-4.67 -1.62,-7.13 1.06,-1.01 4.05,-0.69 1.57,-1.96 -1.94,-0.06 -2.1,-1.17 -0.12,-1.66 0.89,-1.32 3.49,-4.07 1.04,-4.6 -2.47,1.93 -2.55,-3.4 -0.68,-4.04 -0.57,-3.25 -3.22,-4.81 -6.13,-5.41 -2.4,0.4 -4.25,0.1 -2.46,-2.49 0.6,-2.26 5.5,-0.56 4.09,-3.23 -1.75,-0.22 -3.84,2.7 -3.33,-0.63 0.01,-3.41 -3.32,-2.88 -4.84,-1.45 -0.88,-3.11 -3.48,-4.72 -6.36,-3.01 -2.15,-0.01 0.26,2.97 -2.05,3.88 -0.09,2.06 -3.87,4.92 -5.31,3.84 -1.21,-1.39 2.06,-7.27 -1.57,-5.21 -1.38,0.54 -2.88,0.33 -3.62,2.06 -0.18,-2.38 -1.59,-4.23 -4.05,-3.7 -1.5,-2.53 -4.89,-0.74 -6.39,-1.56 -0.77,-1.17 -1.33,-2.65 -3.1,-2.43 z","department-35":"m 134.53,157.78 c -2.29,1.25 -4.29,0.31 -6.19,1.59 -0.35,1.67 -2.93,2.17 -1.16,4.31 0.18,1.71 3.99,2.25 1.51,3.04 0.71,1.27 0.98,3.59 2.33,1.22 1.69,2.12 0.9,4.75 -0.11,6.67 -1.16,1.66 0.84,3.78 -0.19,5.68 1.34,1.46 -2.11,1.58 -0.78,3.48 0.21,2.25 -2.03,-0.13 -2.56,2.08 -1.42,-0.68 -2.58,-1.61 -3.47,0.21 -1.19,0.31 -0.39,2.42 -2.44,1.14 -3.01,-0.11 -1.06,4.1 -3.56,3.46 -0.04,2.21 -0.64,4.46 -2.86,4.2 0.62,1.53 1.56,3.49 1.75,5.16 0.54,-2.03 5.23,-1.03 2.52,0.76 -2.33,-0.69 -5.1,2.03 -3.97,3.88 2.89,-0.33 6.41,0.27 7.93,3.03 1.44,1.66 0.87,2.99 -0.39,4.33 0.11,1.6 0.84,3.69 2.2,1.35 0.71,-0.77 0.83,2.07 1.01,2.45 -1.23,1.26 -2.05,2.91 -3.28,3.92 1.71,0.13 3.61,2.39 0.59,2.1 -2.68,1.22 0.26,4 -0.22,5.86 2.34,-0.34 4.15,-1.76 6.12,-3.07 0.06,2.7 3.03,-0.8 4.56,-0.57 2.43,-1.1 5.63,0.82 7.84,-0.63 3.6,0.5 2.72,-4.87 6.32,-4.78 1.62,-0.77 5.16,-0.84 3.73,-3.31 2.85,-0.62 4.57,1.21 6.54,2.5 1.91,0.57 5.04,2.11 4.63,-1.3 1.15,-1.21 0.6,-2.9 1.92,-3.9 0.7,-1.81 1.08,-4.73 2.39,-6.4 1.07,-2.4 6.58,0.52 5.22,-3.48 -0.09,-3.31 -1.44,-6.24 -2.22,-9.58 0.1,-2.96 -2.26,-6.23 0.02,-8.8 1.83,-2.19 0.74,-5.58 -0.28,-8.01 0.55,-2.21 1.33,-6.39 -2.22,-6.48 -2.56,-0.06 -6.32,-3.21 -7.21,0.93 -2.37,0.79 -4.8,5.49 -7.02,1.82 -2.57,-0.44 -4.28,-3.63 -3.95,-6.18 -0.99,-1.91 -2.39,-5.92 -4.86,-2.88 -3.41,0.04 -8.02,2.16 -10.43,-0.96 -1.67,-2.06 2.03,-3.1 0.24,-4.85 z","department-44":"m 152.12,215.29 c 0.59,4.69 -7.52,2.23 -7.55,6.92 -2.45,2.92 -6.64,1.42 -9.84,1.79 -2.21,0.47 -4.62,2.21 -6.1,1.16 -2.15,1.71 -5.77,2.38 -4.86,5.66 -0.41,1.99 0.14,5.32 -2.78,5.46 0.29,3.39 -2.45,-0.35 -3.39,1.23 -1.97,-0.43 -3.4,-1.22 -3.87,1.43 -1.39,3.38 -7.86,-1.72 -6.53,3.45 1.04,0.36 3.95,1.27 1.26,1.45 -1.78,0.18 -4.38,-0.42 -5.51,2.1 0.81,1.67 6.76,3.88 3.55,5.8 -1.04,-0.85 -4.89,-1.36 -1.91,0.14 1.73,1.23 3.86,1.82 5.03,0.15 2.77,0.79 5.25,4.76 7.99,1.3 2.33,-2.98 5.67,-3.71 9.18,-3.56 3.26,1.31 7.02,1.76 9.14,4.89 0.59,1.56 5.82,2.63 2.15,2.16 -4.08,-0.08 -5.45,-5.45 -9.25,-4.42 -2.59,-1.44 -6.59,-0.45 -8.62,1.17 0.15,2.98 1.07,6.99 -2.64,7.63 1.56,2.78 6.83,0.77 8.69,4.16 2.99,2.74 4.83,7.09 8.9,8.42 0.9,1.88 5.53,0.57 5.08,3.59 3.08,0.7 6.82,2.86 9.67,1.11 2.13,-1.29 -2.55,-2.42 -0.14,-3.94 -2.91,-1.74 -0.81,-8.5 2.35,-5.93 0.6,2.44 -0.71,8.47 3.28,5.3 3.57,-0.9 -1,-7.35 3.9,-6.19 0.83,-0.5 2.39,-4.6 3.91,-1.32 1.06,2.31 6.94,2.33 4.03,-0.72 -1.16,-2.43 -6.27,-0.49 -4.19,-3.49 1.19,-2.09 4.14,-3.59 2.27,-6.58 -0.11,-2.99 -2.79,0.14 -3.66,-2.47 -0.42,-1.81 -2.18,-3.14 -3.54,-3 1.51,-3.16 6.07,-2.52 8.85,-3.95 3.12,-0.79 9.37,1.47 9.71,-3.23 -1.08,-2.47 -1.12,-5.9 -4.66,-5.46 -2.8,0.23 -7.97,-1.25 -5.65,-4.79 1.85,-0.34 7.04,1.35 6.32,-1.48 -2.96,-1.34 -7.7,-2.06 -7.06,-6.38 -0.89,-2.42 -4.47,-2.43 -3.18,-5.19 -2.78,-1.29 -5.51,-2.7 -8.1,-4.12 -0.73,-0.11 -1.47,-0.12 -2.19,-0.28 z","department-50":"m 131.13,90.31 c -1.88,0.95 -0.8,4.82 1.86,4.23 3.56,1.9 1.73,6.62 0.2,9.04 2.05,2.45 3.1,5.7 3,9 0.14,1.74 2.63,0.2 3.07,2.34 0.75,1.03 1.85,2.12 2.19,0.36 1.37,1.6 -1.38,2.27 1.05,3.66 1.37,1.28 0.99,6.4 3.69,4.06 1.9,0.29 2.45,1.19 0.04,0.86 -1.6,1.67 0.46,4.57 0.89,5.74 -2.97,1.02 -0.03,4.32 -0.89,6.45 0.25,4.18 2.26,-2.3 3.97,0.71 -3,-1.64 -2.73,4.63 -1.52,5.52 -1.39,1.53 -0.75,4.59 -2.48,6.57 2.85,1.89 0.3,6.73 3.77,8.41 0.72,3.65 6.47,2.47 6.87,4.86 -3.09,-0.67 -6.13,1.28 -9.29,0.14 2.12,2.48 1.69,5.44 3.35,8.16 0.49,2.03 2.9,1.69 3.89,3.28 2.85,0.97 3.52,-2.95 6.22,-3.35 0.5,-4.19 4.83,-0.16 7.12,-0.52 2.46,0.21 4.49,2.11 6.88,1.58 1.14,-3.4 4.72,2.61 6.05,-1.83 2.14,-1.71 4.11,-4.11 4,-6.8 -2.86,-1.65 2.62,-4.05 -1.04,-4.65 -1.19,-1.03 -1.99,-2.17 -3.44,-2.39 0.65,-1.72 0.69,-2.24 -1.24,-1.46 -2.15,-1.56 -3.83,-1.87 -6.18,-1.16 -1.5,-0.55 -4.16,0.68 -4.02,-2.14 -1.26,-0.78 -4.15,-1.48 -1.38,-2.84 0.99,-1.27 1.76,-1.9 2.97,-1.76 1.12,-1.18 3.8,-4.02 0.24,-2.9 -1.76,-0.83 1.02,-4.16 2.87,-2.17 3.08,-0.43 3.89,-3.82 6.01,-5.35 -2.27,-0.59 1.2,-4.39 -1.22,-5.32 -2.09,1.3 -1,0.15 0.07,-0.89 -1.07,-1.07 -4.55,-2.49 -1.49,-2.88 2.17,-1.47 -0.09,-4.82 -1.5,-1.9 -3.17,0.81 -5.99,-2.78 -7.94,-5.02 -1.69,-1.95 2.34,-3.94 -0.73,-4.53 -0.02,-1.64 -2.94,0.31 -1.33,-2.17 1.04,-2.89 -2.27,-4.45 -3.47,-6.64 -1.37,-1.99 -4.59,-6.54 -0.56,-7.31 0.17,-1.79 2.56,-1.35 1.09,-3.59 -0.43,-3.65 -3.79,-3.85 -6.83,-3.94 -3.88,-1.03 -4.69,4.08 -8.52,3.07 -3.16,1.2 -5.48,-1.83 -8.81,-1.65 -2.47,0.02 -3.19,-2.65 -5.7,-1.92 -0.51,-0.38 -1.01,-1.1 -1.74,-0.94 z","department-53":"m 208.55,167.1 c -1.01,1 0.05,3.16 -1.88,3.54 -1.52,-1.01 -2.64,-0.44 -3.16,1.13 -2.16,0.27 -4.3,-2.6 -6.35,-0.72 -2.51,0.71 -4.34,2.89 -6.91,3.52 -1.47,-0.07 -0.73,-3.05 -2.63,-1.24 -1.44,-0.25 -1.57,0.24 -1.23,1.52 -1.95,1.91 -3.12,-1.9 -4.31,-1.2 -0.57,-2.91 -4.17,-1.79 -5.68,-3.27 -1.71,1.43 -3.54,2.05 -5.24,0.23 -1.62,1.36 -0.04,4.11 -0.87,5.96 1,2.8 1.94,6.2 -0.3,8.68 -1.8,2.64 0.64,5.51 0.63,8.4 0.26,2.57 1.34,4.89 2.01,7.32 0.27,1.9 0.56,4.67 -2.4,4.46 -3.58,-1.21 -3.75,3.46 -4.8,5.71 -0.32,2.32 -3.14,4.44 -1.31,6.55 2.18,1.99 5.34,0.43 7.83,1.57 1.63,0.66 3.95,1.05 3.53,-1.27 2.64,-0.54 3.9,3.91 6.54,1.42 2.25,1.91 5.27,1.85 7.94,2.38 1.76,-0.55 3.96,-1.63 5.33,-1.8 0.74,-3.63 3.49,1.65 5.63,-0.72 3.1,-0.49 -0.69,-2.25 -1.75,-2.95 -1.24,-2.55 5.38,-2.7 2.17,-4.78 -2.1,-2.18 2.21,-3.41 3.9,-3.25 2.7,-2.12 -2.9,-5 -0.82,-7.18 1.54,-1.12 5.56,-0.07 4.23,-2.96 2.04,-1.51 -2.56,-3.7 0.57,-5.19 2.14,-0.95 4.31,-2.8 2.75,-5.2 0.4,-1.84 1.4,-3.83 0.29,-5.45 0.84,-2.27 2.74,-2.67 4.64,-3.69 0.49,-2.31 0.11,-5.38 -2.99,-3.91 -2.18,-0.9 -2.07,-4.02 -1.67,-5.52 -0.9,-1.11 -2.32,-1.86 -3.72,-2.1 z","department-49":"m 163.22,217.21 c -0.83,2.37 -1.6,5.33 1.37,5.86 1.81,2.08 0.91,5.95 4.42,6.63 2.22,0.05 6.13,2.61 1.99,3.38 -1.68,0.33 -6.88,-1.51 -4.42,1.8 -0.28,3.95 5.62,1.28 7.64,2.98 2.45,0.74 1.41,5.07 2.67,6.48 -2.29,2.93 -6.35,1.4 -9.46,1.86 -2.75,1.47 -6.15,1.11 -8.63,2.95 -2.19,2.35 2.81,0.48 2.57,3.2 0.31,2.29 2.55,1.71 3.57,1.87 1.63,2.89 1.11,5.74 -1.65,7.56 -1.38,3.05 3.73,1.85 4.64,4.57 0.65,0.86 -1.19,3.33 1.44,2.98 2.09,1.51 5.06,-0.93 6.83,0.87 2.12,0.24 3.87,3.37 5.76,0.52 2.61,-0.75 5.23,0.76 7.87,-0.16 3.45,0.68 4.18,-2.89 4.98,-5 2.46,-1.53 5.74,1.7 7.32,-1.15 3.52,-0.32 7.2,-1.11 10.47,-0.77 1.05,1.17 -2.26,1.94 0.29,2.63 2.66,0.88 1.49,-3.86 4.67,-2.23 0.32,-1.55 1.08,-6.07 4.26,-4.7 1.02,-3.55 0.54,-7.68 3.15,-10.63 1.2,-1.75 2.78,-3.33 2.02,-5.32 0.89,-2.49 1.94,-4.87 2.33,-7.52 -2.3,-1.25 2.95,-6.06 -1.28,-5.83 -1.14,3.4 -4.78,-0.25 -6.77,-0.21 -1.89,-1.86 -5.83,-3.95 -7.59,-1.47 -2.9,0.48 -5.51,-3.13 -2.87,-5.2 -1.31,-0.36 -3.53,1.25 -5.3,-0.11 -1.96,-0.38 -3.12,0.57 -3.07,-1.96 -1.12,-2.87 -4.12,0.14 -5.77,-2.2 -1.77,-0.71 -0.8,2.61 -3.03,1.75 -3.13,1.53 -6.89,1.32 -10.17,-0.06 -1.72,-2.25 -3.57,1.59 -5.08,-1.25 -0.8,-0.99 -3.72,-1.84 -2.9,0.37 -3.4,0.17 -6.97,-0.89 -10.18,-1.14 -0.72,-0.44 -1.37,-0.99 -2.14,-1.36 z","department-85":"m 161.28,265.2 c -0.97,1.7 -1.54,3.91 -3.7,2.64 -1.76,1.98 1.21,6.33 -3.05,6.68 -4.15,2.13 -1.3,-4.19 -2.86,-6.14 -3.81,-0.88 -3.43,4.2 -2.06,6.39 -1.18,1.59 2.88,3.89 -0.56,4.36 -2.8,1.01 -5.58,-1.25 -8.45,-1.27 -0.94,-1.21 -1.09,-3.22 -3.4,-2.64 -2.06,0.15 -1.35,-2.2 -3.49,-1.71 -2.48,-1.21 -5.24,-7.8 -7.15,-2.42 -0.59,3.85 -5.53,4.8 -4.91,9.21 0.37,4.17 5.72,4.87 7.16,8.67 2.67,2.58 4.99,5.43 6.65,8.8 0.87,1.89 0.24,6.13 2,6.75 0.16,-1.73 0.12,-2.45 1.07,-0.5 1.66,2.86 6.15,2.45 7.02,5.1 3.4,-0.42 6.93,0.3 7.04,4.36 1.27,2.81 4.49,-1.27 6.02,1.84 2.09,-0.13 3,3.11 4.96,3.02 -0.36,-3.97 4.41,-1.93 6.48,-3.3 1.71,-1.96 4.7,-2.5 6.81,-2.37 -1.17,1.68 -0.83,3.92 1.65,2.75 2.07,-0.36 4.04,-2.66 5.25,0.14 2.09,1.8 3.55,-0.97 5.61,-0.12 1.62,-1.38 3.3,-2.9 5.04,-3.72 0.18,-2.56 -3.47,-1.87 -3.87,-1.44 -0.63,-2.59 1.8,-5.29 -0.47,-7.7 0.94,-1.38 2.03,-1.54 1.08,-3.45 0.09,-2.1 -0.29,-4.13 -1.61,-5.22 0.65,-2.15 -1.16,-2.52 -0.79,-4.52 -1.57,-1.94 -3.3,-3.94 -1.89,-6.5 -1.72,-1.62 -5.39,-2.92 -5.22,-6.11 0.38,-2.29 -3.29,-2.9 -3.68,-5.31 -1.81,-2.01 -4.49,-1.74 -7.1,-1.32 -3.49,-1.03 -6.73,-2.66 -9.6,-4.96 z","department-79":"m 211.41,263.54 c -3.47,1 -7.46,-0.24 -10.55,2.01 -1.54,0.87 -3.61,1.5 -3.45,-0.55 -2.89,-0.11 -3.46,3 -4.1,4.64 -2.76,1.84 -6.3,1.53 -9.35,1.02 -2.77,-0.37 -6.01,2.62 -2.55,4.27 1.05,2.29 0.26,5.24 3.5,6.22 3.7,1.27 0.35,4.83 3.08,6.91 1.95,2.46 1.89,5.88 3.13,8.43 0.79,2.29 0.53,5.23 -0.6,6.69 2.08,1.92 -1.04,5.98 0.79,6.87 2.26,-2.05 4.86,2.6 1.35,3.21 -1.82,2.1 -4.84,2.03 -7.01,3.55 -1.92,3.7 2.7,4.91 3.24,8.13 1.44,0.37 2.62,0.88 2.81,2.1 3.32,-0.93 5.83,3.57 8.63,3.01 2.89,1.17 6.03,0.6 8.47,3.22 3.7,-0.54 3.87,6.56 7.56,4.57 1.73,-2.11 1.24,-5.98 4.87,-5.81 1.63,-2.21 4.23,-2.49 6.45,-1.63 1.55,-1.48 2.11,-4.78 -0.83,-4.33 -3.29,-1.46 -1.71,-5.49 -0.5,-7.4 1.75,-0.97 0.56,-7.43 -1.84,-3.75 -2.3,2.89 -5.28,-1.21 -4.22,-3.39 -2.48,-2.03 -1.19,-5.37 -2.68,-7.99 1.33,-2.02 1.71,-4.55 3.11,-6.42 -0.55,-0.92 -2.28,-2.13 -2.08,-2.45 -3.66,1.58 0.19,-4.05 1.24,-5.25 2.3,-2.33 -3.14,-3.07 -0.93,-5.56 1.44,-1.85 -3.47,-1.82 -0.33,-2.92 3.33,-0.16 0.56,-1.18 -0.24,-2.53 0.5,-2.54 0.1,-5.85 -1.91,-7.36 -1.96,-0.52 -0.38,-5.88 -4.15,-4.77 -2.43,-0.12 2.22,-3.17 -0.9,-2.74 z","department-17":"m 175.73,312.62 c -2.1,1.05 -4.89,0.98 -6.33,3.16 -2.59,0.12 1.24,4.72 -2.26,5.02 -2,0.79 -4.42,5.17 -2.11,6.01 2.93,0 2.49,3.17 4.17,4.84 0.72,1.37 3.67,5.65 0.03,4.87 -2.18,0.36 1.95,2.77 0.48,4.24 1.55,2.23 0.05,3.13 -1.55,3.46 -0.38,1.57 -2.23,1.63 -0.92,3.81 0.7,3.56 3.92,5.46 6.53,7.53 -3.66,-0.31 -5.1,-4.96 -7.98,-5.25 -3.89,-1.1 -3.52,4.91 -2.88,6.67 2.74,-1.46 4.76,2.94 7.48,3.54 3.34,1.31 3.69,5.42 7.19,6.15 4.09,3 7.55,7.17 8.5,12.27 0.26,3.76 5.67,2.29 7.12,1.56 -1.08,5.27 6.99,0.78 7.08,5.12 0.92,1.82 -0.24,5.87 1.93,6.53 3.38,-1.84 5.25,4.16 8.91,4.29 2.53,1.16 3.84,-3.72 5.99,-0.43 0.42,-1.35 1.41,-3.02 1.97,-3.79 -0.43,-1.67 1.72,-4.75 -1.44,-5.53 -1.82,-0.53 -4.59,0.36 -3.27,-2.54 -1.47,-1.11 -5.11,-3.27 -7.08,-1.29 -2.02,-1.16 -0.75,-3.34 0.78,-3.22 -1.02,-0.53 -4.64,-2.27 -1.19,-3.33 4.28,-0.66 -2.5,-4.27 0.56,-5.26 2.44,-2.46 -2.28,-2.77 -2.54,-4.29 2.17,-2.32 -2.75,-3.59 -3.55,-5.14 -2.87,0.92 -0.97,-2.62 0.33,-2.63 -2.65,-1.14 -0.44,-4.4 -1.57,-5.27 -2.89,0.77 -1.45,-2.34 0.53,-2.18 1.34,-1.34 4.68,-0.44 6.11,-2.14 2.35,-0.74 2.26,3.5 4.57,1.02 2.44,-0.29 1.26,-3.78 2.59,-5.17 -1.46,-1.93 -1.99,-4.68 1.15,-4.47 0.21,-2.43 -3.03,-4.09 -3.83,-6.1 -0.81,-1.69 -4.49,-0.9 -5.2,-3.54 -1.75,0.56 -3.25,0.45 -4.22,-0.82 -1.42,1.85 -1.72,-1.94 -2.91,-0.25 -3.3,-0.03 -3.97,-4.4 -7.72,-2.73 0.56,-2.08 -4.7,-2.08 -3.15,-4.59 -0.87,-1.66 -4.22,-2.08 -2.44,-4.29 -0.3,-2.54 -4.15,-5.59 -5.48,-2.93 -1.22,-0.57 -5.78,1.4 -3.85,-1.55 0.3,-0.71 0.63,-1.62 -0.55,-1.38 z m -24.48,7.33 c -2.5,0.03 -3.87,1.14 -1.7,3.09 3.95,0.17 7.19,2.31 10.9,3.68 3.89,-1.05 -3.64,-4.87 -5.82,-4.1 0.29,-2.41 -4.61,1.24 -3.83,-1.48 1.5,1.02 1.83,-1.02 0.46,-1.19 z m 4.27,13.72 c -0.7,1.54 2.03,3.7 0.87,5.86 3.02,2.81 6.53,5.8 7.08,10.16 2.32,-1.62 3.28,-6.49 0.08,-7.91 -0.51,-2.29 -0.47,-5.1 -3.54,-5.11 -1.46,-1 -2.65,-2.71 -4.49,-2.99 z","department-33":"m 170.37,365.5 c -2.88,2.39 -3.66,6.38 -3.67,9.99 -0.06,6.47 -0.57,12.93 -1.99,19.26 -0.93,8.17 -1.59,16.38 -2.58,24.55 0.15,2.18 -1.38,7.44 -0.06,8.1 -0.08,-3.31 1.98,-7.54 4.36,-8.96 1.97,1.72 7.34,5.74 3.76,7.49 -2.73,1.04 -6.38,-2.36 -6.38,2.52 -1.52,2.69 -2.74,7 -1.06,9.24 2.84,-0.63 5.96,-2.27 7.61,-3.75 2.03,1.26 5.7,0.92 3.77,4.43 -2.89,4.65 3.5,-0.33 5.45,2.23 3.86,1.51 7.87,-3.74 11.26,-0.84 -1.42,4.09 4.44,3.2 5.19,6.56 1.94,1.37 4.07,0.77 4.89,3.31 2.18,0.86 -1.21,6.6 3.33,5.68 2.58,1.12 6.14,0.42 4.75,-3.03 1.75,-3.72 3.17,3 5.62,1.04 3.5,-1.1 3.84,-4.91 0.95,-7.06 1.78,-1.99 6.6,-1.58 3.43,-5.47 1.27,-2.35 -1.77,-5.16 1.09,-7.2 -1.95,-2.11 4.08,0.01 3.42,-3.48 2.15,-0.49 2.85,-2.17 2.61,-3.54 1.82,1.01 2.01,-3.15 -0.54,-1.86 -1.24,-1.31 -2.01,-2.64 0.2,-3.47 -0.33,-1.44 2,-1.21 2.56,-1.67 0.96,3.46 0.77,-3.24 2.88,-0.59 3.44,-0.12 -2.08,-5.38 2.19,-5.6 -0.3,-3.57 -4.29,-0.98 -5.16,1.24 -2.94,-0.94 -4.42,-0.02 -6.92,-0.52 -0.48,-1.95 -5.24,-0.86 -1.96,-2.84 3,-2.61 -1.26,-5.76 1.74,-8.21 0.18,-2.65 3.61,-7.86 -1.4,-8.03 -1.8,0.66 -3.02,1.85 -4.53,-0.13 -2.79,3.68 -7.23,0.65 -9.47,-1.85 -1.02,0.81 -2.89,-3.34 -3.74,-0.02 -1.83,-2.9 -1.15,-5.89 -1.94,-8.56 -2.49,-1.97 -7.58,0.6 -7.16,-4.13 -0.99,3.32 -7.86,-1.7 -5.65,3.47 1.12,5.25 -0.04,11.74 4.13,15.79 1.6,0.97 5.46,1.4 5.09,3.59 -1.14,-1.76 -5.95,-2.2 -2.42,0.16 0.89,1.86 0.32,4.86 0.46,6.96 -0.86,-3.57 -0.31,-7.65 -4.4,-9.5 -4,-3.65 -3.81,-9.3 -4.62,-14.2 -0.83,-4.14 -2.82,-8.05 -6.26,-10.61 -1.82,-3.68 -6.55,-3.9 -8.36,-7.63 -0.3,-0.84 1.03,-2.73 -0.47,-2.88 z","department-40":"m 169.77,433.93 c -1.39,4.09 -9.03,1.92 -8.11,7.38 -1.02,7.04 -1.81,14.11 -3.21,21.09 -1.27,6.3 -2.02,12.7 -3.64,18.93 -1,6.23 -2.25,12.44 -3.8,18.55 2.58,-1.5 3.77,4.05 6.97,1.91 3.34,1.32 5.68,-3.95 8.44,-2.39 2.07,1.33 0.83,1.91 -0.48,2.62 2.25,0.71 3.66,-2.53 5.72,-0.83 1.43,1.01 3.09,-0.31 2.14,-1.78 2.65,0.58 4.62,-1.18 7.1,-0.71 0.89,-0.91 2.56,-0.97 3.4,-1.93 1.42,1.18 2.14,3.21 3.39,1.18 1.9,-0.75 2.12,-1.21 2.41,0.33 1.62,2.42 3.07,-1.23 4.2,0.55 1.35,-0.65 5.1,-4.97 5.14,-2 -2.25,3.45 3.32,-1.25 4.51,1.48 1.42,-0.66 5.29,-2.61 3.41,-4.06 -2.62,-1.1 2.2,-2.69 0.51,-4.53 -0.4,-2.09 3.75,-3.09 1.72,-4.6 0.25,-1.62 -1.17,-3.73 0.82,-4.32 -0.1,-1.59 -0.15,-2.99 -0.15,-4.15 -3.84,-1.04 1.14,-3.46 2.82,-3.81 1.4,0.08 1.6,0.86 2.46,-0.49 1.85,-0.5 2.29,-3.87 4,-0.74 -0.03,1.42 -1.08,2.56 1.12,3.35 3.85,1.54 0.42,-3.68 2.06,-5.19 -1.31,-3.01 1.52,-6.01 2.73,-8.67 -3.45,-0.68 -6.76,-2.36 -10.44,-2.46 -3.14,0.72 -0.38,-5.12 -3.37,-6.17 -1.68,-2.94 -3.31,0.33 -2.44,2.4 -1.45,2.03 -6.15,0.75 -7.76,-0.49 0.06,-2.43 0.64,-4.45 -1.66,-5.74 -0.75,-1.94 -4.67,-0.97 -4.92,-3.99 -2.01,-1.55 -5.69,-1.4 -4.21,-4.64 -1.24,-2.31 -3.79,0.2 -5.94,-0.34 -3.05,3.71 -7.01,-1.41 -10.49,1 -4.03,1.42 2.63,-4.52 -0.65,-5.54 -1.61,0.68 -2.43,-1.07 -3.83,-1.21 z","department-64":"m 211.2,495.72 c -1.9,1.07 -4.71,-0.23 -5.99,2.39 -1.98,0.52 -4.11,-1.44 -6.18,0.45 -1.47,-0.65 2.04,-3.79 -1.1,-2.24 -1.84,1.1 -3.29,3.13 -5.1,2.48 -1.96,1.45 -5,-2.73 -6.29,0.37 -1.3,-1.42 -2.42,-3.2 -3.7,-1.06 -1.86,0.3 -2.9,1.44 -5.06,0.79 -0.86,1.97 -4.19,-0.71 -3.64,2.4 -2.25,0.68 -5.49,-1.09 -7.26,1.32 -3.27,-0.97 2.34,-1.26 -0.09,-2.53 -2.18,-3.25 -4.64,2.8 -7.39,1.71 -2.74,0.92 -5.67,0.14 -7,-2.21 -3.51,1.11 -4.76,4.93 -7.06,7.37 -1.86,2.09 -5.86,0.94 -7.14,3.17 0.39,1.82 2.63,2.08 2.45,4.31 2.16,-0.79 5.47,-0.83 4.92,2.37 1.44,2.55 2.98,-0.5 3.6,-1.51 2.37,0.53 4.98,1.17 7.12,1.91 1.21,3.15 -0.34,6.66 -1.84,9.39 -3.7,1.82 -0.21,5.81 2.82,5.62 2.52,-0.18 0.25,-6.64 4.3,-5.38 -2.77,2.45 0.66,4.77 3.15,4.41 2.76,1.62 4.75,2.53 7.73,3.53 2.51,0.74 4.11,3.68 7.28,2.92 2.81,1.52 7.35,-3.02 7.16,2.26 -1.02,2.96 3.25,2.28 4.34,4.46 1.78,1.41 3.01,6.8 5.13,3.41 1.29,-2.94 5.1,2.52 7.14,-0.85 1.53,-1.11 3.1,-1.71 2.2,-4.29 -2.14,-2.89 3.19,-3.06 1.08,-6.08 -0.73,-2.21 1.82,-2.45 1.78,-4.48 3.8,1.19 0.42,-4.25 3.06,-5 2.06,-1.26 1.63,-4.46 4.21,-4.01 0.61,-1.33 0.15,-2.87 1.47,-3.33 2.68,-2.17 -1.51,-4.94 1.51,-6.75 3.94,0.18 -1.17,-3.74 0.89,-5.91 -0.71,-3.82 -1.88,1.82 -3.23,0.54 -0.52,-1.85 0.16,-3.46 1.54,-4.09 -0.91,-1.78 -0.41,-4.39 -2.84,-4.92 0.66,-3.73 -2.6,-1.04 -3.99,-2.95 z","department-65":"m 216.99,494.91 c -1.84,0.25 -2.8,4.03 -0.53,4.11 1.88,1.3 0.29,3.67 2.23,4.92 -1.93,0.09 -2.67,2 -1.81,3.38 0.3,1.54 2.42,-3.88 2.78,-0.62 0.04,1.77 -0.37,4.08 1.04,5.66 -0.74,1.52 -3.19,0.65 -3.23,3.06 1.46,1.22 1.22,2.8 0.07,4.31 -0.99,0.9 -1.52,1.78 -1.24,3.38 -1.18,1.4 -2.47,-0.59 -2.75,1.65 -0.31,2.34 -3.5,2.62 -2.83,5.08 -0.23,1.21 0.77,2.46 -1.27,2.75 -1.74,-1.03 -0.67,2.29 -2.47,2.46 -0.22,2.15 1.18,4.49 -1.44,5.52 0.13,2.35 0.39,5.58 3.33,6.26 1.51,1 2.85,2.84 4.69,1.37 -0.57,1.85 1.47,3.6 2.41,4.96 1.56,0.38 2.66,3.5 4.75,1.97 1.8,-0.64 3.96,-1.24 5.98,-1.71 2.21,-1.74 5.92,-0.18 6.53,2.47 2.16,1.45 2.84,-4.54 5.11,-1.48 1.05,2.42 6.1,0.26 2.72,-1.38 -0.47,-1.86 -0.16,-4.75 -0.08,-7.05 -0.01,-1.71 0.82,-4 2.68,-2.21 3.39,1.23 2.02,-4.26 4.56,-5.2 1.78,-1.39 -1.78,-2.01 -0.27,-3.71 -0.3,-0.99 -0.83,-2.98 -1.65,-1.25 -1.08,0.21 -3.2,2.39 -2.44,-0.12 -0.09,-1.57 2.08,-1.37 1.06,-3.26 -1.4,-1.24 -3.29,-2.47 -4.49,-3.12 -2.02,-2.1 3.51,-3.46 2.42,-5.76 0.93,-0.47 4.3,-0.56 1.96,-2.04 0.32,-1.95 5.47,-3.77 2.06,-5.05 -2.3,-1.28 -4.63,-0.69 -6.84,-1.39 -2.1,2.1 -2.26,-2.3 -4.28,-0.93 -1.76,1.3 -0.81,-1.74 -2.47,-1.53 -0.55,-2.46 -4.01,1.85 -5.67,-0.21 0.62,-1.85 -3.42,-2.4 -1.35,-4.21 1.51,-1.16 -1.9,-2.45 -1.19,-4.22 -1.14,-1.21 -3.48,-0.65 -4.39,-2.66 -2.13,-0.62 -0.57,-4.95 -3.7,-4.22 z","department-32":"m 246.37,463.78 c -1.87,2.87 -5.69,0.08 -7.22,3.28 -1.88,1.49 -4.2,0.57 -5.81,2.33 -2.39,-0.54 -4.55,-3.39 -6.11,0.1 -0.16,1.89 -1.71,0.96 -1.7,-0.3 -2.5,0.36 -4.05,2.53 -2.63,4.96 0.01,3.29 -6.18,-0.5 -3.3,-1.85 -0.54,-2.21 -2.13,-1.97 -3.07,-0.29 -1.34,0.89 -1.71,2.04 -3.36,1.03 -1.68,0.34 -3.48,1.37 -4.38,2.76 1.22,0.28 3.13,1.71 1.37,2.42 1.01,1.6 0.51,3.2 -0.73,3.83 -0.07,2.44 2.42,4.6 -0.76,5.86 -1.18,1.63 0.66,4.33 -1.94,5.01 -0.42,1.69 2.27,1.13 1.62,3.13 2.18,-0.55 3.63,0.28 6.01,0.22 1.55,-0.54 3.47,-2.96 4.82,-0.45 0.15,2.77 2.68,4.35 4.51,5.25 2.48,-0.68 1.19,3.49 3.25,4.21 -0.48,0.88 -2.09,2.3 -0,3.14 1.28,0.27 0.25,2.29 2,2.07 2.01,0.08 3.81,-1.91 5.13,-0.1 0.83,0.3 0.34,2.73 2.13,1.32 1.65,-1.02 1.99,3.25 3.69,0.87 2.91,0.44 5.72,1.25 8.79,1.59 2.28,-1 2.83,-4 4.96,-4.85 -0.08,-1.97 1.2,-2.17 2.72,-1.09 2.04,-2.03 5.8,0.4 7.36,1.79 1.25,2.38 1.53,-1.44 1.56,-2.27 1.63,-0.08 0.78,-2.07 1.64,-3.14 -1.95,-1.43 1.97,-2.65 1.07,-4.39 -0.66,-1.2 0.97,-1.78 2.08,-0.85 0.33,-1.45 2.39,-1.29 3.2,-2.18 2.33,0.7 0.78,-3.33 -0.81,-2.33 -0.96,-0.86 -0.26,-2.97 -2.3,-2.06 -1.55,-0.33 0.33,-2.07 -1.76,-1.78 -1.88,-0.75 0.92,-3.18 -2.09,-3.14 -1.61,-1.44 -2.45,-4.37 -4.36,-5.15 -3.35,1.69 1.17,-3.08 -1.5,-3.24 0.76,-1.49 -1.03,-2.76 -0.22,-4.22 -1.16,-1.24 -2.92,-1.03 -4.29,-1.63 -2.35,1.17 -1.75,-1.94 -0.23,-2.55 1.5,-1.23 1.3,-2.73 1.39,-4.08 3.53,-0.83 -1.38,-2.38 -2.33,-0.22 -1.18,0.08 -0.41,-3.33 -2.53,-1.63 -1.28,0.69 -2.36,3.52 -3.35,0.81 -0.67,-0.82 -1.46,-1.92 -2.53,-2.18 z","department-47":"m 230.07,418.5 c -0.81,0.77 -0.9,3.82 -1.83,1.38 -1.82,-0.02 -3.21,2.14 -3.88,3.3 1.04,0.9 2.08,1.66 3.3,1.8 -0.04,1.51 -1.7,2.55 -2.03,4.05 -1.55,0.64 -2.55,2.47 -3.24,3.29 -3.01,0.59 -4.44,4.14 -2.78,6.75 -1.33,1.76 2.46,5.68 -1.08,5.69 -2.16,-0.16 -3.67,2.4 -1.25,3.45 1.89,2.62 -1.53,5.28 -3.79,5.58 -0.01,1.94 -0.52,5.85 2.43,4.84 2.83,-0.58 4.82,1.94 7.53,1.7 1.96,-0.36 2.73,1.43 1.07,2.55 -0.51,2.08 -4.01,5.95 -0.67,6.93 1.39,-0.27 1.71,-1.54 2.32,0.34 1.42,0.2 1.56,-3.84 3.99,-2.43 2.21,2.53 4.49,0.26 7.07,0 2.57,-0.7 3.69,-3.71 6.77,-2.71 1.7,-0.39 3.39,-2.44 4.44,0.28 1.31,3.29 3.19,-0.23 4.88,-1.16 0.36,-1.62 1.13,-2.69 2.56,-3.54 -1.25,-2.97 5.51,1.65 4.18,-2.52 -0.96,-0.29 -2.25,-1.68 -0.22,-2.14 2.35,-0.03 2.05,-4.03 2.4,-5.78 -1.23,-1.07 -4.15,-1.71 -2.2,-3.71 -0.38,-1.68 1.32,-4.27 2.55,-1.77 1.53,0.85 4.19,-0.22 5.25,-0.41 0.48,-2.12 -0.42,-3.89 -1.57,-5.33 0.06,-1.97 -1.67,-5.18 -1.15,-6.13 2.23,0.07 5.01,-2.93 1.78,-3.93 -1.73,-2.48 -5.12,-2.94 -6.92,-0.28 -2.08,2.1 -3.89,-1.44 -2.14,-3.04 0.26,-1.39 -1.37,-4.01 -2.62,-1.92 -2.44,1.01 -5.83,0.37 -7,-0.95 -2.41,-0.18 -2.86,2.94 -5.17,1.62 -2.31,0.8 -5.39,2.91 -7.69,0.67 0.42,-2.17 -0.14,-6.16 -2.93,-6.02 -0.81,0.25 -1.86,0.44 -2.38,-0.43 z","department-31":"m 290.02,474.31 c -1.06,1.38 -2.08,2.2 -3.14,1.27 -0.58,4.46 -6.27,-1.79 -5.29,3.06 -1.9,-0.93 -3.5,1.28 -0.64,0.98 2.48,2.1 -3.77,2.63 -4.93,4.19 -2.22,1.21 -0.1,-1.87 -2.62,-1.46 -1.27,-3.41 -2.92,1.42 -4.53,-1.01 -1.38,1.57 -7.9,0.39 -4.49,3.87 1.19,2.36 4.47,2.68 3.64,5.37 2.67,0.06 0.55,2.9 3.52,1.95 0.58,0.93 0.66,2.79 2.12,2.09 2.71,3.12 -2.63,3.32 -4.16,4.93 -1.1,-1.53 -1.56,1.15 -1.34,1.61 0.44,1.44 -2.97,2.2 -1.16,3.88 -0.09,2.59 -2.4,2.6 -1.68,5.18 -1.9,1.75 -3.41,-2.85 -6.25,-2.48 -1.97,-0.25 -2.83,1.49 -4.6,-0.2 -0.73,3 -3.35,2.98 -4.53,6.1 -1.7,0.77 -1.89,0.75 -1.75,2.05 -1.29,1.74 -3.85,2.87 -2.67,4.97 -1.64,0.77 -2.86,0.43 -2.8,2.37 -2.19,1.55 -3.92,4.34 -0.36,4.93 1.97,0.94 4.52,4.07 1.77,4.79 -1.3,4.88 3.7,-2.96 3.72,1.66 0.49,1.32 -0.65,2.24 1.07,3.28 -2.79,1.64 -2.18,9.05 -6.68,5.6 -1.73,2.41 -1.93,7.77 -0.38,10.18 1.27,3.59 5.97,0.17 8.88,1.83 2.51,-1.92 -1.95,-5.09 0.25,-7.4 -0.76,-3.42 2.9,-4.02 4.93,-2.32 1.62,-0.12 4.31,1.32 2.68,-1.53 -0.93,-1.79 -1.4,-4.59 1.53,-4.74 -1.15,-3.31 5.98,-1.18 5.47,-5.37 -2.22,-1.5 -0.83,-5.26 0.13,-6.33 2.45,2.03 0.85,-3.56 3.56,-1.87 1.66,-2.07 2.75,0.56 4.53,0.43 1.14,1.96 2.46,4.41 4.04,1.37 2.25,-2.5 -5.64,-2.56 -1.56,-4.98 1.91,-0.32 6.85,-0.7 5.84,-3.41 -3.62,0.11 -4.71,-4.72 -0.54,-4.92 1.7,1.78 3.23,3.99 3.46,6.31 3.43,1.14 2.88,-2.05 2.74,-4.44 1.24,-0.74 2.86,2.59 3.98,0.85 2.05,0.25 3.31,3.93 3.51,0.42 1.87,-1.02 3.37,-2.54 3.2,-4.86 1.65,-0.79 5.11,0.92 3.61,-2.58 0.23,-2.56 3.55,-6.11 4.18,-1.52 0.52,0.87 1.91,-3.3 3.78,-0.91 2.24,0.69 2.87,-1.22 1.62,-2.8 0.91,-0.95 2.23,-3.84 -0.03,-2.5 -1.07,2.43 -6.09,-0.82 -6.91,-3.1 -0.98,-3.43 -6.75,-3 -7.98,-6.29 2.91,-1.68 0.76,-3.48 -1.25,-4.16 3.26,-0.53 0.29,-2.11 -0.5,-3.7 0.64,-3.06 -3.23,-3.07 -3.17,-5.79 -1.79,-0.87 -1.06,-3.76 -1.85,-4.82 z","department-09":"m 281,514.26 c -1.93,0.45 -2.81,3.42 -0.61,3.74 0.47,1.06 3.65,0.84 1.91,2.92 -1.78,0.48 -2.86,1.94 -5,1.65 -1.94,-0.47 -2.72,3.01 -0.2,2.59 2.24,0.58 1.95,2.32 0.27,3.21 -1.24,2.42 -2.69,-0.31 -3.19,-1.7 -1.18,-0.65 -2.35,-0.74 -3.49,-1.68 -1.21,1.5 -3.6,0.41 -3.5,3.08 -0.69,0.69 -2.14,-1.23 -2.07,0.85 0.78,1.23 -1.59,1.79 -0.08,3.25 -1.18,1.45 2.43,1.96 0.17,3.11 -0.33,2.96 -5.7,1.12 -4.88,4.08 -1,0.73 -3.51,0.76 -1.93,2.67 -0.14,2.58 1.36,4.98 3.85,6.04 1.3,1.43 2.44,-0.82 3.84,0.84 2.2,0.69 5.28,-0.08 6.42,2.49 -0.04,2.84 2.56,2.9 4.54,2 2.27,0.7 5.31,-0.62 6.28,1.97 2.47,1.03 1.46,6.42 4.53,5.84 0.33,-1.46 -0.02,-3.65 2.25,-2.77 2.58,-1.67 3.67,2.32 6.42,1.51 1.59,0.01 4.16,0.09 3.44,2.23 1.96,0.82 4.9,1.1 6.14,-0.77 0.17,-1.61 2.36,0.02 3.34,-1.21 1.09,-1.15 1.09,-3.64 3.34,-2.57 1.75,-1.21 4.32,-0.24 5.87,-0.95 0.4,-2.48 -3.41,-3.46 -4.42,-5.35 -2.08,0.81 -4.89,2.28 -6.69,-0.08 -1.29,-0.72 0.48,-2.24 -1.27,-3.27 -1.88,-0.45 -2.07,-2.21 -0.54,-3.2 2.84,0.11 5.65,-1.41 4.42,-4.62 -1.62,-0.54 -3.31,-2.15 -0.6,-2.68 1.86,-1.01 -0.44,-3.29 0.61,-4.77 -1.01,-0.87 -2.68,-1.46 -1.18,-2.69 -0.07,-1.43 -0.47,-4.45 -2.45,-3.41 -0.92,1.43 -0.96,-2.2 -2.67,-1.24 -2.3,-0.25 -5.38,-1.98 -6.1,-3.66 0.91,-1.6 -0.72,-3.91 -1.67,-5.05 -0.92,0.6 -1.38,4.39 -1.98,1.49 -1.2,-0.67 -2.47,-1.05 -3.16,-0.2 -0.47,-1.65 -2.24,-0.25 -2.45,-1.94 -1.91,1 1.34,4.52 -1.22,4.39 -1.46,2.03 -3.74,-0.79 -2.75,-2.52 -1.34,-0.95 -2.09,-3.13 -3.54,-3.63 z","department-11":"m 322.74,505.07 c -2.05,0.87 -0.82,6.47 -3.43,3.37 -1.24,-1.83 -5.19,2.71 -5.61,-1.17 -0.96,-1.29 -3.24,1.91 -4.87,-0.09 -1.63,-0.8 -2.35,3.52 -2.64,0.63 -0.96,-2.44 -1.93,-1.82 -2.84,-0.31 -0.91,1.07 -1.52,2.84 -0.93,4.7 -1.36,0.65 -4.52,-0.56 -3.73,2 -2.59,1.87 -0.87,4.71 -0.49,7.11 -1.27,1.72 2.24,1.99 3.14,3.2 1.19,0.53 2.27,1.21 2.96,0.05 1.12,0.9 1.35,2.64 3.05,1.69 2.12,0.9 2.09,4.11 1.18,5.21 3.13,0.75 0.58,4.42 2.61,6.09 -0.39,0.99 -3.64,-0.55 -2.72,1.47 3.15,0.22 2.69,5.73 -0.43,5.57 -2.23,-0.56 -4.71,2.43 -1.69,3.29 1.21,1.07 1.25,2.2 0.94,3.14 2.17,2.52 4.98,0.67 7.49,0.33 1.51,2.48 4.82,3.48 4.44,6.58 1.77,-0.41 3.17,-3.16 4.49,-3.39 3.31,0.6 4.11,-3.13 3.04,-5.57 -1.83,-2.22 -0.3,-4.53 2.45,-3.77 2.55,1.09 4.79,-0.72 7.38,0.01 2.84,0.15 6.37,1.82 8.78,-0.17 0.65,-3.39 5.24,-6.04 7.54,-2.78 1.85,0.63 5.78,4.21 6.08,0.38 -0.45,-2.41 3.52,0.65 2.08,-2.31 -2.01,-0.09 -2.51,-4.47 -0.81,-3.38 -1.64,2.12 0.92,2.66 1.07,0.34 -0.46,-2.15 2.38,-4.6 1.05,-6.15 -2.36,0.27 -1.35,-5.67 0.64,-3.13 -2.54,0.73 1.01,4.03 1.12,0.84 1.32,-2.4 3.72,-4.96 4.13,-7.43 -1.48,-1.18 -2.13,-3.67 -4.25,-2.51 -1.21,-1.56 -3.82,-0.43 -5.13,-2.43 -2.87,1.08 -0.98,-4.2 -4.12,-2.08 -1.35,-0.41 -2.91,-0.78 -3.72,-1.82 -0.39,1.7 -3.42,0.2 -2.88,2.31 -1.03,1.88 -2.16,4.69 -4.29,2.05 -1.21,-0.21 -0.6,-4.63 -2.32,-1.66 -2.18,1.62 -3.12,-0.12 -3.87,-2.12 -3.09,-0.03 -1.41,-4.42 0.31,-5.1 -2.19,-1.27 -5.18,-2.28 -7.77,-1.42 -1.98,2 -4.51,-1.63 -6.72,-1.15 -0.21,-0.07 -0.4,-0.62 -0.72,-0.42 z","department-34":"m 390.74,470.95 c -2.99,-0.26 -2.82,5.22 -4.91,4.05 -0.85,-0.82 -3.55,2.9 -1.7,3.78 -2.23,1.02 -3.63,-1.19 -4.2,-2.93 -1.16,0.9 -4.89,3.4 -3.25,0.24 -0.72,-2.79 -3.95,-1 -5.3,0 -2.69,-1.07 -4.43,1.99 -3.3,4.01 -2.19,2.21 -5.5,0.8 -7.8,-0.28 -1.78,1.11 -0.38,3.61 -0.42,5.05 -1.55,1.49 1.67,5.37 -2.24,4.09 -1.98,-1.46 -4.85,0.46 -4.95,2.6 -2.71,0.38 -5.15,2.58 -7.61,2.47 -1.2,-2.9 -5.65,-2.66 -5.41,0.83 -0.2,2.13 -0.02,4.29 2.09,5.91 -1.23,1.35 0.72,3.85 -1.77,4.6 -0.84,1.05 -3.22,1.42 -1.8,2.86 -2.1,0.55 -3.27,4.78 -0.38,4.9 0.41,3.09 3.29,3.1 4.71,0.7 1.12,1.12 0.35,3.34 2.55,3.76 2.97,1.15 1.66,-5.18 5.05,-4.27 1.09,-0.26 0.38,-2.58 1.62,-0.55 1.21,1.33 3.32,1.66 5.28,1.1 -0.81,3.2 2.64,2.34 4.33,4 1.73,-0.69 2.59,1.52 4.38,0.6 1.39,1.92 3.62,4.56 5.52,1.34 2.58,-2.15 5.39,-4.64 8.99,-3.22 1.68,-2.14 3.28,-4.7 5.33,-6.66 2.9,-0.94 5.12,-2.93 7.63,-4.62 1.32,-0.52 2.38,-2.93 0.36,-1.17 -0.86,0.97 -3.9,2.82 -4.09,1.95 2.86,-0.54 3.94,-3.18 5.35,-4.98 2.22,-0.89 3.15,-3.57 5.97,-3.69 2.76,-1.69 5.46,-2.2 8.14,-1.32 3.13,-2.28 2.15,-5.6 0.6,-8.52 -0.42,-1.85 -2.64,-1.51 -3.41,-3.24 -1.72,-0.64 -2.58,-4.02 -5.12,-2.47 -0.36,-1.17 1.06,-3.05 -1.22,-3.23 -1.16,-1.21 -1.48,-2.47 -3.51,-1.47 -2.48,1.54 -3.44,-1.7 -1.82,-3.25 0.15,-1.49 -1.98,-1.29 -2.11,-2.79 -0.5,-0.22 -1.04,-0.13 -1.56,-0.19 z","department-81":"m 317.26,455.8 c -1.38,0.45 -1.96,1.61 -3.59,0.76 -0.3,1.95 -3.52,3.22 -5.56,2.27 -1.35,-1.6 -1.97,-0.02 -0.95,1.04 -0.95,0.36 -4.67,-1.27 -3.47,1.46 -0.16,1.66 -2.33,-1.92 -2.18,0.76 -1.1,0.98 -2.79,-1.57 -4.48,-0.74 -2.96,-0.67 -1.32,3.31 0.16,3.83 0.79,1.92 -1.89,3.01 -2.42,4.25 -1.32,0.93 -1.16,3.17 -3.54,1.88 -3.23,0.63 2.44,1.72 -0.33,3.16 -1.29,2.54 1.59,4.57 1.92,6.82 3.43,0.3 1.18,4.78 4.33,5.68 1.56,1.28 -3.01,2.06 -0.13,2.25 2.4,0.02 1.46,2.84 -0.02,3.51 0.41,1.89 3.59,2.46 5.14,3.73 3.27,0.27 2.72,5.06 6.14,5.64 1.57,0.82 3.54,1.72 3.47,-0.75 2.28,-0.44 1.4,2 0.21,3 0.06,1.82 2.22,2.93 2.93,4.31 2.14,0.3 3.89,-2.52 5.16,0.35 2.18,0.85 0.37,-3.47 2.64,-4.11 1.88,0.14 4.42,2.05 6.83,2.16 2.71,-2.86 6.35,1.58 9.11,-0.98 1.2,-0.64 2.07,-1.84 2.78,-2.36 -0.59,-1.87 0.29,-4.05 -1.8,-5.38 -0.4,-2.17 -0.06,-5.25 1.22,-6.85 1.68,0.37 3.78,1.08 4.87,2.68 2.13,-1.79 6.04,-1.49 7.35,-3.74 0.82,-2 0.39,-5.04 -2.37,-4.51 -1.51,-1.26 -3.19,-1.55 -4.19,0.39 -2.37,0.97 -5.11,-0.89 -6.55,-2.85 -1.52,-2.15 -3.76,-4.35 -2.85,-6.85 -1.52,-0.96 -0.28,-3.74 -2.85,-4.01 -0.47,-0.84 1.76,-2.39 -0.4,-3.07 -0.29,-2.52 -2.16,-4.07 -4.11,-4.88 -0.57,-2.53 -3.81,-3.32 -5.31,-4.22 -0.15,-2.48 -4.32,0.72 -4.86,-1.12 1.44,0.14 3.17,-1.78 0.74,-1.46 -0.91,0.39 -2.23,-1.71 -3,-2.06 z", +"department-82":"m 270.52,443.01 c -2.14,1.16 -4.19,2.19 -6.63,2.16 -1.8,1.76 -1.62,-2.78 -3.54,-0.83 0.31,1.77 -1.92,4.88 1.19,4.85 2.39,1.55 0.09,4.21 -0.3,6.31 -0.44,1.21 -4,0.94 -1.6,2.01 1.97,0.84 -0.06,4.23 -1.88,2.4 -1.71,-1.22 -1.76,0.34 -2.14,1.6 -2.88,-0.32 -2.21,4.49 -0.81,4.92 0.76,-1.3 4.97,-1.27 3.43,0.36 -1.84,1.04 -0.66,3.8 -2.94,4.81 -1.25,0.84 -0.68,2.87 0.84,1.84 1.82,0.52 5.75,1.1 3.97,3.56 1.04,0.67 0.69,2.25 0.98,2.38 1.77,0.78 -1.98,4.07 1.01,3.39 2.26,-0.43 4.92,-0.42 6.74,-1.49 1.27,0.58 2.39,0.31 3.28,-0.35 1.56,0.75 2.53,2.41 3.56,2.88 1.74,-0.62 2.22,-2.04 4.12,-2 1.89,-0.5 1.91,-2.44 -0.22,-2.07 -1.95,-1.13 1.52,-1.46 1.74,-1.49 -0.38,-2.02 1.51,-2.5 2.7,-1.14 2.06,1 2.76,-3.06 4.11,-1.34 0.99,-1.05 2.54,-1.76 3.38,-2.23 -0.31,-0.89 -2.82,-2.03 -0.52,-2.27 3.19,1.02 3.39,-3.02 5.79,-4.18 1.52,-1.98 -2.9,-3.42 -1.35,-5.63 1.94,-1.07 4.17,0.24 5.66,0.61 0.71,-1.21 1.03,-1.65 2.08,-0.63 0.24,-1.33 0.21,-2.59 2.09,-1.85 1.1,0.24 2.24,0.41 1.15,-0.79 0.51,-1.8 4.19,2 3.66,-0.96 -0.31,-2.1 -2.39,0.61 -2.47,-1.31 -3.3,-1.19 0.65,-3.45 1.77,-4.89 0.21,-2.45 -4.44,-0.16 -4.38,-2.98 0.49,-1.88 -1.6,-1.91 -2.4,-1.54 -1.21,-0.58 -1.91,1.84 -3.15,0.41 -2.28,-0.21 -4.04,4.15 -5.85,2.74 -0.79,-2.47 -3.62,0.05 -1.56,1.51 0.31,2.35 -3.95,2.36 -3.07,-0.25 -2.24,-2.68 -3.51,1.69 -5.86,2.39 -1.45,2.53 -2.73,-0.71 -4.63,-0.48 -0.83,-1.02 1.91,-4.61 -0.86,-3.31 -1.97,2.14 -4.17,-0.81 -5.73,-2.04 -1.54,-0.03 -2.07,-2.27 -2.71,-3.05 0.48,-0.77 3.85,-1.24 1.34,-2.04 z","department-12":"m 344.82,407.22 c -2.14,2.24 -4.92,3.53 -5.91,6.44 -0.2,3.05 -2.88,4.6 -2.81,7.85 -2.78,1.77 -2.83,6.44 -7.03,4.76 -2.85,0.81 -3.66,-2.92 -6.7,-0.63 -2.79,-0.18 -0.5,4.84 -3.68,4.44 -1,2.09 -4.35,0.18 -4.99,0.68 -2.27,1.36 -4.93,3.35 -6.47,5.56 -0.5,0.74 -1.33,-2.39 -1.72,0.49 -3.55,0.2 0.23,4.71 0.28,6.73 2.91,2.12 -2.27,3.27 -0.47,5.85 1.39,1.46 5.91,0.06 3.8,3.53 -3.1,-0.35 -2.94,5.1 0.37,3.8 0.84,2.24 2.93,2.1 3.97,0.28 0.64,-0.72 3.02,-0.92 4.38,-1.29 0.38,2.53 5.59,1.47 2.9,3.68 1.7,0.61 3.86,-0.93 4.36,1.52 3.19,-0.21 4.33,4.36 7.18,4.97 1.07,2.25 3.3,4.6 2.21,6.63 2.23,0.9 1.85,3.49 2.9,4.9 -1.38,2.72 2.8,5.25 4.08,7.58 2.19,1.85 5.01,1.88 6.77,-0.28 2.08,1.32 5.71,0.5 5.44,3.99 1.27,0.35 3.33,-1.02 4.93,0.31 1.97,-0.43 -0.03,-3.71 1.21,-5.08 -2.26,-3.18 1.08,-5.37 3.72,-2.96 2.82,0.94 5.31,-0.91 4.29,-3.64 1.04,-3.15 6.02,0.38 5.11,-4.28 0.93,-2.39 7.18,-5.33 2.04,-7.25 -1.51,-0.47 -2.97,-0.34 -3.42,-2.06 -1.73,1.9 -3.93,-2.51 -0.51,-1.95 0.48,-1.6 1.14,-3.68 2.65,-4.73 -0.68,-4.43 -9.42,2.3 -6.63,-3.08 -1.18,-1.25 -3.15,-1.32 -3.65,-2.81 -2.6,0.85 1.8,-4.01 -0.75,-5.21 -0.72,-3.41 2.21,-7.15 -2.14,-9.54 -0.76,-2.6 0.83,-5.86 -2.52,-7.49 -2.49,-2.83 -5.19,-5.99 -4.63,-9.9 -1,-0.3 1.62,-2.72 -0.79,-2.1 -2.92,-0.77 -0.83,-7.54 -5.15,-5.36 -2.76,2.56 0.68,-4.65 -2.57,-4.34 z","department-46":"m 289.52,399.9 c -1.93,0.63 -3.22,2.08 -5.19,2.51 -0.55,2.48 1.91,5.04 0.2,6.77 1.53,1.17 0.68,2.13 -0.64,2.71 -0.49,1.39 -2.82,1.08 -2.03,3.22 -2.04,0.31 -3.93,1.87 -1.84,3.73 -0.63,1.48 -1.5,2.57 -2.96,3.19 -1.15,2.55 -6.2,0.92 -4.86,4.75 -0.81,1.54 -2.94,2.2 -2.41,4.25 -2.21,-0.14 -3.42,2.82 -5.02,1.78 1.06,2.16 1.42,4.31 1.76,6.68 1.42,0.87 1.66,2.27 1.65,3.98 1.08,0.06 4.12,-1.76 2.93,0.81 -1.71,0.25 -2.37,1.31 -0.78,2.24 0.3,2.25 3.42,1.16 3.62,3.37 1.9,1.69 3.3,-0.16 5.08,-0.35 0.72,1.57 -2.26,4.22 0.76,4.02 1.46,0.62 1.81,2.15 3.19,0.31 1.85,-0.6 3.07,-3.05 4.33,-3.46 2.43,-0.2 1.29,4.21 3.91,2.83 1.72,-1.05 -1.79,-4.67 1.45,-4.27 1,-0.03 1.35,3.17 2.11,1.18 -1.32,-1.83 1.53,0.24 1.9,-1.51 1.38,-1.16 3.1,-1.29 4.45,-0.92 0.2,-1.96 1.81,0.11 2.71,-1.11 1.67,0.1 4.18,-1.49 1.89,-2.9 -0.47,-2.26 -2.34,-4.82 -1.67,-6.85 1.76,-0.03 1.59,-1.88 3.42,-1.54 2.32,-1.45 3.8,-3.77 6.26,-4.75 1.66,-0.78 4.05,1.82 5.11,-0.84 2.37,0.13 1.47,-2.41 -0.05,-3.14 -0.16,-1.64 0.62,-3.82 -1.82,-3.9 0.88,-2.1 0.95,-4.43 1.69,-6.42 -0.75,-2.19 -3.06,-3.63 -3.78,-5.98 -0.22,-1.15 1.69,-2.17 -0.2,-3.09 0.38,-3.82 -4.01,-3.64 -6.05,-1.43 -0.4,-1.8 -2.37,-1.92 -3.03,-0.03 -1.66,0.66 -3.24,2.7 -4.53,1.71 -1.67,0.61 -1.38,-2.93 -3.39,-2.7 -0.94,-2.08 -2.85,-4.19 -5.2,-4.37 -1.54,-0.53 -2.13,1.38 -2.99,-0.49 z","department-24":"m 247.71,356.64 c -1.33,1.72 -2.15,5.44 -4.37,3.98 -1.29,2.19 0.65,6.02 -2.78,7.22 -1.07,1.73 -1.22,3.17 -3.43,2.89 -1.35,1.3 -2.7,2.47 -3.69,2.4 1.31,1.44 -2.43,1.19 -1.92,3.33 -1.11,2.86 2.21,7.18 -2.16,7.82 -1.72,1.11 -2.1,4.21 -4.37,4.44 -1.83,-1.85 -4.84,-0.09 -5.58,2.19 -1.71,0.92 1.62,1.85 -0.97,2.36 -2.09,3.33 4.38,0.08 4.2,3.85 0.13,2.45 -1.7,4.67 -1.9,7.15 -2.34,1.81 1.75,4.57 -1.01,6.63 -1.98,1.62 -0.57,1.93 1.18,2.08 1.5,2.41 4.72,0.24 7.34,1.24 1.58,-2.14 3.57,-4.36 5.67,-1.25 -1.59,1.46 -2.98,1.82 -1.65,4.38 2.67,1.95 3.57,5.11 3.66,7.87 2.89,2.27 5.83,-2.31 8.31,-0.64 1.5,-0.14 1.73,-2.6 3.78,-2.17 1.74,-0.66 1.71,2.87 4.06,1.59 2.32,0.27 4.87,-3.2 5.62,0.33 1.53,0.48 -2.2,5.61 1.71,4.55 1.86,-2.63 5.57,-3.37 7.55,-0.26 1.61,0.15 2.83,4.14 2.8,0.73 3.09,-1.47 0.93,-6.06 5.03,-5.87 2.1,-1.49 4.63,-2.68 4.89,-5.07 -3.18,-2.94 3.24,-2.15 2.07,-5.03 1.39,-0.77 2.75,-1.97 3.62,-3.12 -2.55,-1.45 1.11,-2.89 -0.92,-4.95 -0.82,-1.88 -0.06,-3.23 0.88,-4.14 -1.12,-2.13 -3.92,-5.19 -1.35,-6.5 -1.47,-1.44 -7.7,-0.59 -6.45,-3.12 3.25,-2.31 -3.9,-1.43 -1.21,-3.75 2.08,-0.54 1.75,-2.32 -0.17,-2.44 -0.66,-1.42 -0.44,-4.25 1.4,-4.42 0.7,-1.32 4.27,-4.12 0.61,-3.76 -2.11,-1.25 -0.47,-1.95 0.2,-2.77 -1.16,-1.12 -2.39,-0.61 -3.26,-2.06 -1.89,0.78 -2.29,-1.48 -4.2,-1.06 -0.44,-1.95 3.54,-4.4 -0.69,-4.44 -2.48,1.66 -3.1,-3.01 -4.18,-4.31 -2.45,-0.69 -5.34,1.33 -6.92,-0.8 -0.28,1.94 -2.24,3.99 -3.3,1.71 -4.01,-0.32 1.3,-5.83 -3.25,-6.54 -2.23,1.7 -3.48,-1.31 -4.85,-0.28 z","department-16":"m 252.54,327.65 c -2.29,0.72 -1.44,3.44 -4.4,2.98 -1.27,1.85 -4.05,0.47 -4.98,-1.39 -0.68,-3.54 -5.06,1.6 -1.79,2.2 -0.58,3.13 -3.4,1.11 -5.1,0.91 -3.14,1.37 -5.19,-1.3 -7.86,-1.81 -1.52,1.5 -2.93,-1.91 -4.66,0.15 -1.97,-0.37 -2.45,3.38 -5.06,2.24 -1.93,0.04 0.82,2.24 -1.2,2.74 0.87,2.68 -3.95,2.15 -2.09,4.68 -0.28,1.91 -3.6,0.31 -2.2,2.53 -0.11,1.44 2.16,2.96 -0.03,4.42 -0.09,1.53 -0.09,4.77 -2.18,3.4 -1.96,2.42 -3.18,-3.47 -5.22,-0.43 -2.04,1.16 -4.38,0.45 -6.15,1.89 -2.73,1.16 0.38,1.62 1.39,1.98 -2.76,2.08 2.9,5.14 -0.46,5.78 -1.46,1.75 0.17,2.05 1.51,1.62 1.01,2.19 5.21,3.29 2.97,5.77 2.34,0.08 4.85,3.05 1.84,4.29 -0.18,1.67 3.8,4.33 0.08,4.95 -3.11,0.84 0.04,2.57 1.34,2.89 -0.62,0.79 -3.1,1.95 -1.06,3.18 2.2,-2.04 4.86,0.36 7.25,0.92 -0.44,1.96 0.03,3.48 2.36,2.77 1.73,0.17 2.65,2.07 3.44,2.83 1.42,-1.43 3.54,-1.84 5.23,-0.38 1.69,-1.46 2.03,-3.29 3.72,-4.47 1.1,-1.12 3.55,-1.27 2.27,-3.69 -1.79,-2.79 1.03,-5.85 1.8,-7.57 0.23,-1.21 1.54,0.42 2.16,-1.12 1.02,-1.12 2.42,-1.8 3.66,-1.6 0.38,-3.16 4.03,-3.24 3.74,-6.43 -0.64,-1.42 -0.09,-4.56 1.85,-3.02 1.5,-1.35 2.27,-4.04 4,-5.85 1.03,-2.13 3.92,-2.7 3.46,-5.45 1.36,-0.67 3.4,1.91 3.05,-0.98 1.5,-1.75 2.07,-3.92 1.46,-6.01 -0.57,-2.93 3.18,0.64 4.34,-1.8 2.69,-1.02 0.69,-6.52 -1.66,-5.43 -1.88,-0.53 -3.24,-3.11 -1.94,-5.21 -0.3,-3.28 -2.38,-2.24 -4.88,-2.46 z","department-86":"m 220.19,259.01 c -2.67,1.11 -1.14,6.66 -4.7,5.46 -1.12,2.67 -0.28,6.33 2.34,7.3 1.21,2.8 -0.12,6.86 2.81,8.58 -0.34,0.88 -4.74,0.94 -2.01,2.12 1.66,0.91 -1.21,4.66 1.86,5.01 0.17,2.88 -3.53,4.96 -3.39,7.51 2.34,-1.74 2.86,1.09 4.01,2.56 -2.36,1.41 -1.42,4.19 -3.11,6.09 1.11,2.79 0.46,6.03 2.68,8.32 -0.98,2.26 1.88,5.6 3.64,2.56 3.26,-2.86 4.22,4.09 1.42,5.44 -1.17,2.3 -1.1,6.6 2.78,6.31 1.76,0.42 -1.54,4.9 1.9,4.82 2.58,2.29 6.42,0.33 9.24,2 3.12,-1.13 -1.64,-3.61 1.54,-4.88 2.93,-0.45 3.66,4.64 7.15,2.55 2.65,-1.24 4.01,-4.64 7.5,-3.07 5.18,0.43 -2.68,-6.17 1.99,-6.32 0.93,-3.5 4.73,-3.96 7.28,-4.09 1.27,-2.3 2.21,-5.88 5.59,-4.54 3.05,-1.23 4.82,-4.66 1.43,-6.65 -0.96,-2.09 -0.63,-5.43 -4.09,-4.96 -2.4,-0.38 -3.1,-2.52 -5.49,-3.06 -4.32,-2.56 0.87,-7.41 -2.39,-10.17 -3.73,-2.36 -3.49,-7.19 -7.25,-9.59 -1.82,-2.65 -1.18,-7.21 -5.41,-7.83 -3.82,-1.6 1.37,4.35 -2.65,2.83 -3.22,-0.17 -6.05,2.2 -9.36,1.21 -5,0.41 0.09,-6.41 -3.44,-7.54 -1.02,-1.75 -5.86,1.14 -3.94,-2.42 -1.49,-2.05 -5.43,-1.78 -6.57,-4.86 -0.36,-0.36 -0.83,-0.61 -1.33,-0.67 z","department-37":"m 248.48,223.77 c -1.42,3.62 -6.45,2.73 -8.2,5.37 -1.46,1.36 -3.9,-2.72 -3.72,0.4 1.37,1.11 1.66,4.33 -0.82,2.81 -1.82,-1.23 -6.06,-3.74 -5.96,0.05 -1.81,2.38 0.79,4.4 -1.19,6.79 -1.59,2.5 -0.38,5.84 -2.27,7.78 -1.62,2.49 -3.61,4.89 -3.44,8.06 -0.62,2.26 -1.45,6.53 1.54,7.19 1.25,-0.87 1.94,2.54 3.31,0.71 0.97,1.11 -0.63,5.21 2.13,3.2 1.8,-1.1 1.89,1.61 3.57,1.4 0.89,2.11 -1.82,7.48 2.05,6.94 1.94,-0.66 4.56,0.68 6.7,-0.98 1.61,-0.96 6.42,0.73 3.58,-2.33 -0.63,-2.85 4.7,0.45 5.56,1.73 0.59,2.71 0.86,5.99 3.94,7.28 1.95,1.88 1.63,7.78 6,6.31 1.43,1.23 2.54,1.03 3.52,-0.09 1.84,-0.7 -1.13,-3.48 0.89,-4.6 0.94,-2.88 0.5,-6.24 2.1,-8.75 -0.51,-3.01 1.88,-5.04 4.77,-5.05 2.3,-0.22 4.18,2.32 5.36,-0.8 1.09,-2.04 2.29,-3.59 3.83,-4.89 -0.17,-3.29 -2.68,-5.86 -4.09,-8.7 -1.3,-3.91 -5.06,-1e-4 -7.13,-2.72 -1.96,-2.54 1.63,-6.07 -1.07,-8.64 1.91,-0.4 1.97,-2.18 -0.13,-2.78 -0.17,-1.99 -3.11,-4.5 -0.71,-6.14 -0.62,-1.2 -2.55,-4.44 -3.27,-1.51 -0.57,-2.17 -2.63,-4.19 -4.63,-1.88 -3.07,2.82 -2.07,-3.8 -2.27,-4.29 -2.95,-0.2 -5.98,-1.05 -8.71,-0.82 -1.21,0.63 -0.51,-1.11 -1.23,-1.05 z","department-72":"m 231.9,172.51 c -2.61,0.34 -4.43,1.91 -6.19,3.04 -1.38,0.48 -2.05,1.94 -3.42,2.6 -0.33,3.05 -3.2,-1.34 -4.33,0.83 -1.43,1.08 -5.63,0.06 -4.24,2.95 -3.08,-0.79 0.86,3.38 -1.37,4.58 -0.86,1.81 1.85,4.28 -0.94,5.2 -2.01,1.1 -4.73,3.07 -1.86,4.9 -0.99,1.29 0.02,2.59 -0.74,3.79 -2.44,-0.68 -6.78,1.67 -3.4,3.85 0.73,2.09 1.76,4.48 -1.53,4.5 -2.58,-0.44 -3.89,2.42 -1.36,3.52 0.5,2.29 -5.19,2.01 -2.45,4.82 3.47,-0.45 1.48,4.86 3.4,5.98 2.31,-1.32 4.91,2 6.78,-0.52 3.29,0.6 -2.46,2.42 0.25,4.06 0.74,1.66 3.87,2.49 4.49,0.08 2.3,1.12 4.71,0.48 6.02,2.83 1.69,1.36 4.05,0.33 5.35,2.19 1.62,-0.93 1.69,-2.65 3.94,-1.78 2.54,-0.05 4.67,2.82 7.14,2.4 0.9,-1.5 -2.93,-3.52 -0.02,-4.31 1.04,1.34 2.82,2.12 3.33,-0.2 2.31,-0.39 4.79,-1.35 6.51,-2.6 -2.85,-2.23 1.58,-5.3 3.79,-5.52 0.46,-1.4 2.4,-3.52 3.78,-4.83 -1.44,-1.85 -0.29,-6.03 1.78,-3.82 -1.09,-2.59 3.21,-2.96 0.58,-5.37 0.08,-1.7 1.43,-3.61 -1.11,-3.97 -1.64,-2.45 2.4,-1.51 1.74,-3.29 -2.05,-0.4 1.4,-1.62 0.89,-2.96 2.29,0.52 3.2,-1.49 0.55,-1.94 -2.01,-0.09 -3.25,-2.56 -5.32,-1.22 -2.38,-0.82 -2.49,-6.22 -5.36,-4.81 0.79,2.39 -2.74,0.17 -4.1,0.37 -1.11,-1.06 -2.58,-1.99 -2.45,-3.6 -1.86,0.23 -5.36,-0.71 -4.94,-3.08 -0.44,-3.4 0.09,-8.02 -4.58,-8.58 l -0.59,-0.08 2e-5,0 z","department-61":"m 236.9,140.22 c -1.37,2.93 -4.44,0.95 -5.77,0.51 -0.7,2.09 -2.92,0.83 -4.24,2.34 -1.35,-2.77 -4.38,-0.25 -5.26,1.87 -3.09,0.73 -4.56,4.12 -8.22,4.12 0.6,2.97 -3.23,-1.05 -4.99,-0.78 -2.07,-0.19 -4.42,-1.53 -4.55,1.51 -1.86,-0.97 -4.38,-5.01 -6.99,-1.88 -2.67,0.7 -5.63,2.58 -8.38,0.81 -1.94,-0.21 0.58,2.41 -2,2.73 -2.21,0.79 -4.81,2.48 -5.8,4.18 1.64,0.47 4.03,2.64 4.89,3.81 -2.6,1.08 -0.04,3.17 -0.37,4.16 -0.1,3.46 -3.63,4.61 -4.76,7.47 1.29,1.59 1.78,3.06 3.56,2.81 -0.2,2.49 3.05,0.83 2.04,-0.77 2.19,0.16 3.37,-1.72 3.97,1.42 2.29,-1.26 4.74,-2.16 6.49,-3.76 2.15,-0.24 4.6,-0.72 6.51,1.02 1.07,-1.63 2.35,-2.41 3.95,-1.42 1.83,-1.07 -0.27,-4.47 3.02,-3.12 1.81,1.18 3.45,2.14 1.99,3.87 0.35,2.25 1.92,4.62 4.47,2.94 1.72,0.65 -0.84,6.99 2.46,4.03 1.16,0.36 3.03,2.09 3.43,-0.38 1.63,-0.81 2.66,-2.19 4.04,-2.85 0.28,-1.38 5.31,-3.16 7.52,-1.96 3.9,1.26 2.59,5.53 3.26,8.6 -0.11,2.92 4.56,1.76 5.41,3.53 -0.07,1.99 3.35,3.78 5.67,2.91 3.19,-3.99 3.88,7.21 7.66,3.4 3.17,-1.53 -1.64,-4 -0.17,-6.33 -3.57,-0.8 0.8,-4.69 3.13,-4.08 2.2,-1.01 6.03,-4.76 3.83,-6.66 -0.95,-2.15 2.33,-4.5 -0.88,-5.72 0.72,-2.4 -4.26,-1.56 -3.98,-4.43 -1.88,-0.39 0.25,-5.19 -3.06,-4.1 -0.43,-1.15 -0.37,-2.32 -1.89,-2.36 3.89,-2.53 -0.45,-5.72 -3.19,-6.87 -1.23,-0.78 -2.92,-1.32 -1.88,-2.86 -1.36,-1.19 -1.22,-3.67 -3.26,-1.5 -2.58,-0.67 -7.27,0.22 -7.13,-3.52 0.64,-0.73 0.75,-2.65 -0.53,-2.7 z","department-27":"m 242.33,106.21 c -2.25,1.4 -4.46,3.12 -7.27,3.2 -3.13,0.01 -1.44,3.96 -0.97,5.79 -0.25,1.42 -0.2,3.07 0.05,4.32 1.56,-2.67 4.74,1.16 1.61,1.68 -3.49,1.51 3.09,2.25 1.65,4.56 -0.6,1.84 0.47,2.5 1.82,3.11 -1.56,1.19 -0.91,2.9 -0.68,4.31 -3.08,-0.3 -1.43,3.4 0.78,3.14 1.11,2.25 -1.15,5.22 -2.03,7.57 1.97,1.86 5.79,2.95 8.17,1.67 1.68,-0.94 2.06,2.46 2.78,2.55 -1.38,3.04 5.18,3.21 5.92,5.84 1.68,1.55 -0.55,2.63 -0.78,3.74 1.84,0.46 1,3.47 3.6,1.89 2.3,-0.06 2.09,-4.03 4.58,-2.4 2.21,-1.11 4.77,-0.84 6.52,-3.04 1.78,1 3.18,0.1 2.69,-1.95 1.73,0.3 3.34,2.1 5.52,1.18 1.73,0.91 5.58,0.54 5.97,-1.71 -2.26,-3.14 2.59,-4.24 4.24,-5.72 -0.13,-1.58 -1.51,-4.22 1.43,-3.88 0.74,-0.67 -0.33,-1.93 0.53,-2.57 -1.47,0.74 -2.69,-0.27 -1.44,-1.58 -1.04,-1.31 -2.12,-4.8 0.61,-3.44 1.11,-1.2 0.8,-1.98 2.49,-1.09 3.37,-0.07 4.6,-2.86 5.45,-5.81 0.13,-2.58 1.39,-4.89 2.52,-6.95 1.56,-1.59 3.56,2.74 3.6,-0.58 -1.93,-1.54 -0.62,-5.1 -2.69,-7.09 -0.94,-2.78 -3.12,-0.33 -5.23,-1.99 -1.74,0.33 -2.23,-3.11 -4.08,-1.45 -2.23,-1.34 -5.13,-1.37 -7.71,-1.23 -0.89,1.39 -2.82,1.34 -2.49,3.35 -1.48,1.47 -1.23,4.8 -4.4,3.5 -1.42,0.9 -3.69,0.83 -4.18,2.58 -2.63,-0.42 -3.44,1.09 -2.81,3.24 -1.76,0.32 -3.16,0.76 -4.2,-0.95 -1.28,0.44 -0.68,-4.41 -2.73,-1.94 -0.92,0.95 -1.47,-2.05 -3.03,-1.54 0.47,-2.75 5.09,0.66 3.34,-3.08 -0.36,-1.37 -2.02,1.31 -1.95,-1 -2.7,-0.13 -3.88,-2.85 -6.72,-1.29 -2.27,1 -3.56,-0.22 -5.16,-1.45 -2.66,0.51 -3.03,-3.16 -5.33,-3.52 z","department-14":"m 231.23,109.9 c -4.06,0.09 -6.85,2.84 -9.55,5.38 -3.34,2.06 -7.05,3.56 -10.99,3.85 -1.95,1.92 -3.54,-1.01 -5.94,-1.28 -2.67,-1.83 -5.65,-1.96 -8.71,-2.47 -2.52,-0.48 -5.06,0.57 -7.64,-0.13 -3.42,-0.41 -7.08,-0.38 -10.19,-1.98 -1.94,-1.82 -4.91,-0.74 -7.32,-0.9 -3.6,0.27 -1.56,4.12 -3.38,5.89 0.35,2.42 2.43,4.3 4.66,5.41 1.29,2.26 4.25,1.82 4.95,-0.81 0.89,1.47 2.18,1.84 0.71,3.15 -2.85,2.72 2.74,3.63 1.8,6.79 0.25,1.58 -1.34,2.53 0.39,3.45 -2.56,1.47 -4.13,6.64 -7.82,4.57 -1.7,0.05 -2.56,3.86 0.25,2.27 1.68,0.8 -1.5,3.01 -2.33,3.69 -1.18,-0.64 -2.61,2.05 -3.44,2.77 1.51,0.52 3.07,1.11 2.99,2.92 1.94,0.53 4.35,0.57 6.32,-0.18 1.55,1.73 4.66,1.77 5.78,1.31 0.33,1.85 2.06,-2.55 3.65,-1.79 1.67,-0.4 2.88,-1.72 1.91,-3.16 2.07,-1.17 2.99,1.93 4.94,0.32 1.69,0.63 2.6,-1.47 4.44,-1.14 2.02,-2.53 4.71,-0.49 6.27,0.75 0.09,2.25 1.52,-0.03 1.58,-1.02 2.72,0.42 5.75,0.47 7.89,2.34 0.72,-2.21 4.15,-0.58 5.38,-3.06 1.98,-1.59 4.45,-2.16 5.53,-4.57 1.56,-0.47 2.62,-1.63 3.42,0.6 1.16,-0.33 2.13,-1.63 3.58,-1.13 0.5,-2.08 1.78,-0.88 2.61,-0.44 1.61,0.55 3,0.24 4,-1.29 0.95,1.22 2.59,1.22 2.01,-0.7 1.28,-2.16 0.25,-3.37 -2.04,-3.81 -1.78,-1.67 1.38,-2.37 1.39,-3.02 -1.93,-1.58 2.62,-4.1 -0.98,-4.39 -0.16,-2.06 0.6,-4.48 -2.13,-4.95 -3.24,-2.19 4.22,-2.19 0.79,-4.43 -0.9,-0.04 -3.11,2.04 -1.98,-0.25 -0.33,-1.14 -1.2,-1.29 -0.01,-2.61 -1.49,-1.67 0.64,-7.09 -2.8,-5.97 z","department-76":"m 285.08,67.51 c -1.66,1.28 -3.92,-0.27 -5.32,2.21 -2.55,2.82 -5.75,4.75 -9.23,6.16 -2.69,2.07 -6.27,0.91 -9.1,2.49 -3.04,0.83 -5.97,2.2 -9.16,2.2 -4.64,-0.08 -8.38,2.85 -12.2,5.03 -3.19,1.24 -5.65,3.53 -8.97,4.44 -4.45,0.63 -4.32,5.58 -6.08,8.7 -1.33,2.41 -3.69,6.09 0.02,7.66 2.71,1.09 5.28,1.25 8.39,1.98 3.84,1.23 7.92,-4.2 10.87,-0.97 1.02,1.67 2.99,3.04 4.68,1.44 -0.81,3.45 3.88,2.23 5.92,1.74 1.25,0.7 1.48,-1.8 1.82,0.62 0.74,1.56 3.24,0.12 3.81,1.84 1.65,-0.96 2.48,4.22 -0.34,2.48 -3.28,0.03 0.21,1.48 0.51,2.68 2.73,-3.35 2.83,4.25 5.77,2.84 2.8,-0.27 -0.27,-3.85 3.3,-3.41 1.82,-0.28 2.83,-2.57 4.57,-2.23 0.36,-1.37 4.68,0.8 4.04,-2.57 1.27,-2.05 1.52,-4.08 4.3,-5.05 2.08,0.14 5.31,0.85 7.56,1.4 2.14,-0.45 3.59,3.15 6.18,2.19 2.06,0.69 2.28,-3.97 4.3,-4.86 1.52,-1.49 -0.75,-3.01 -1.45,-0.94 -2.42,-0.89 0.93,-2.53 -0.81,-3.95 0.3,-1.61 -2.27,-1.27 -1.03,-2.58 -0.73,-1.35 1.8,-2.21 -0.04,-3.48 1.02,-1.01 3.32,-5.11 0.67,-2.57 -2.48,-0.31 0.5,-3.34 1.11,-4.23 -0.07,-1.57 3.34,-0.34 1.01,-2.16 -2.4,-2.69 -1.34,-6.85 -4.28,-9.1 -3.65,-1.5 -5.37,-5.07 -8.6,-7.13 -2.03,-0.46 -0.42,-2.8 -2.2,-2.85 z","department-60":"m 299.82,88.06 c -0.68,1.53 -2.52,3 -2.62,4.61 0.88,0.83 2.72,-2.26 2.36,0.47 -2.03,0.88 -1.5,2.81 -1.5,4.35 -1.65,1.28 0.75,1.64 0.2,3.03 0.54,1.64 1.83,2.54 0.02,4.14 0.78,1.65 2.88,-1.94 3.18,0.81 -0.81,1.88 -3.2,3.3 -3.32,5.72 1.83,-0.19 -0.44,1.38 1.38,2.1 1.48,2.13 0.75,4.92 2.41,6.82 0.2,2.27 -1.63,1.56 -2.48,0.39 -2.21,-0.34 -2.49,2.24 -0.48,2.81 -0.83,1.16 -0.47,2.78 1.13,3 2.38,-0.91 4.68,1.32 7.04,0.62 2.19,-0.63 4.26,-0.42 6.14,-1.88 1.82,-1.52 2.59,1.29 4.7,0.92 0.24,2.48 3.26,-1.11 3.69,1.4 -0.75,1.55 3.2,0.09 3.21,-1.39 1.69,-0.21 1.93,2.59 3.71,1.86 2.57,0.22 4.8,1.97 6.25,3.43 0.62,-1.34 1.71,-1.33 1.95,0.34 1.46,2.81 2.94,-2.02 4.79,0.35 1.09,0.96 1.32,2.68 2.73,1.05 0.38,2.06 2.62,0.41 2.41,-0.61 2.06,-2.04 3.56,2.74 5.7,0.23 1.37,0.79 3.07,-1.58 3.55,0.59 0.9,-2.08 4.02,0.32 3.84,-2.61 0.97,-1.2 1.9,-2.09 3.15,-2.84 -1.43,-0.2 -1,-3.93 -2.02,-1.23 0.12,2.36 -0.59,-0.15 -0.51,-1.14 -0.98,-0.34 -1.96,-0.8 -2.82,-1.45 1.46,-1.59 0.58,-5.08 -1.78,-5.51 -1.64,-1.93 1.32,-3.14 3,-2.37 2.78,-1.33 1.45,-5.56 2.96,-6.93 1.83,1.02 3.46,-1.08 0.88,-1.43 -2.12,-0.58 0.91,-1.96 -1.18,-3 -0.31,-1.21 1.9,-1.71 1.13,-3.46 1.11,-2.28 -2.26,-3.66 -0.83,-5.46 -1.28,-1.35 1.28,-1.82 0.48,-3.31 0.33,-2.37 -2.35,1.17 -1.98,-1.22 -1.06,0.07 -2.21,3.33 -3.26,0.83 -1.15,-1.16 -2.97,0.6 -2.46,1.87 -0.95,-1.04 -2.28,-2.96 -3.61,-2.19 0.98,1.2 1.14,2.51 -0.39,1.26 -0.14,2.4 -4.2,0.61 -3.1,3.55 -0.54,2.6 -5.29,-1.86 -5.5,1.9 0.32,2.24 -2.85,2.23 -2.21,0.03 -1.14,-1.83 -2.74,1.59 -3.58,-0.97 -1.21,-1.4 -2.44,-1.07 -3.66,-0.6 -0.85,-3.25 -4.16,-1.53 -6.1,-3.1 -0.93,-1.42 -3.34,-0.98 -4.87,-2.04 -2.87,-0.39 -5.38,1.28 -8.22,0.91 -0.21,-2.15 -3.87,-1.59 -4.92,-1.24 -1.09,-1.54 -2.79,1.74 -4.47,0.11 -1.06,-0.76 -1.06,-1.17 -0.69,-2.16 -0.99,-0.72 -2.08,-1.47 -3.42,-1.36 z","department-80":"m 292.25,47.76 c -3.3,0.48 -3.7,7.09 -0.18,7.88 1.08,1.67 4.2,2.74 3.06,4.24 -2.73,-1.29 -6.63,-3.63 -7.9,0.8 -0.08,3.06 -3.29,5.38 -4.22,7.27 1.37,-0.11 3.64,-1.46 3.18,1.37 3.11,1.87 5.05,5.06 7.98,7.06 3.9,1.29 3.89,5.38 5.12,8.61 0.56,2.66 4.89,3.47 4.09,5.66 1.46,2.82 4.15,-0.88 5.54,0.73 2.25,-2 4.72,2.18 7.27,1.01 2.7,-0.93 5.98,-1.02 8.68,0.5 1.84,-0.03 3.1,2.73 5.49,1.65 1.93,0.79 2.11,3.17 3.94,1.57 2.03,0.38 2.41,3.33 4.24,1.67 1.8,-0.87 1.46,4.54 3.03,1.36 0.02,-3.92 4.11,-1.35 5.69,-2.17 -0.71,-2.24 0.89,-2.61 2.47,-2.96 0.23,-1.49 2.58,-0.96 0.98,-2.41 1.05,-1.53 0.91,1.46 2.09,-0.25 0.9,2.74 1.49,1.35 3.01,0.23 1.35,0.58 3.49,2.16 3.45,-0.59 1.21,0.66 3.53,0.99 2.21,-1.27 0.39,-2.05 -3.23,-2.65 -0.99,-4.12 0.13,-1.56 -2.17,-2.32 -0.06,-3.42 -0.06,-1.95 2.47,-2.66 2.02,-5.11 0.89,-1.27 2.86,-3.19 2.9,-4.11 -2.64,0.29 0.37,-2.52 -2.05,-2.42 -2.22,-1.41 -5.14,-3.16 -7.9,-1.23 -1.34,-2.15 -4.91,2.97 -5.09,0.51 1.42,-1.44 -0.8,-3.49 -2.15,-1.79 -0.94,1.46 -4.33,1.85 -2.41,-0.4 3.11,-2.33 -2.99,-5.63 -2.46,-2.07 1.41,1.98 -2.63,-0.12 -3.46,-0.4 -1.61,-0.21 -3.12,-0.74 -2.69,-2.12 -1.34,-0.69 -1.48,3.04 -2.43,0.22 -3.21,-2.44 -3.38,5.35 -5.85,1.64 -1.72,-1.93 1.49,-5.21 3.99,-5.44 1.33,-2.2 -4.48,-3.79 -5.35,-1.18 -0.74,-1.34 -1.37,-2.06 -1.64,-0.43 -2.88,-0.65 -5.6,0.07 -8.2,1.37 -1.11,-1.55 -3.47,0.2 -3.68,-2.58 1.41,-3.13 -8.2,-2.22 -4.92,-5.34 -0.16,-2.3 -3.14,1.95 -4.11,-1.07 -2.18,-2.39 -5.42,-2.15 -7.98,-0.54 -2.27,1.67 -2.44,-2.55 -4.75,-1.91 z","department-95":"m 297.89,122.77 c -1.93,0.92 -1.82,3.28 -2.24,5.06 -0.18,1.39 -0.88,2.57 -1.71,3.66 -1.18,2.5 3.25,0.35 3.28,2.76 0.67,1.03 2.44,0.71 2.86,-0.15 1.62,0.83 1.89,-1.96 3.5,-0.67 1.15,0.5 1.54,1.3 0.91,2.4 0.05,1.46 1.28,0.91 1.47,-0.15 1.23,-1.85 1.56,1.36 3.2,0.93 1.81,-0.33 2.63,2.19 4.51,1.19 1,-0.65 2.03,-0.32 2.94,-0.74 0.27,0.84 -0.01,2.32 1.49,2.09 1.39,0.41 0.73,2.42 2.34,2.4 -0.26,0.82 -0.29,3.2 0.91,1.57 0.86,-1.05 2.61,-1.25 3.07,-2.57 1.17,0.19 2.33,0.34 3.34,-0.64 1.5,0.48 3.52,2.04 5,0.44 1.28,-0.6 2.07,-1.91 3.13,-2.67 -1.04,-1.28 1.15,-1.17 1.41,-2.36 0.47,-0.74 -0.21,-1.51 0.41,-2.34 -0.57,-0.87 -1.19,-1.72 -1.74,-2.51 -0.76,0.04 -0.35,1.66 -1.56,0.99 -1.63,0.01 0.09,-1.59 -1.48,-1.79 -0.96,-0.62 -1.98,-0.38 -2.67,-1.33 -1.15,-0.06 -2.21,-0.73 -3.09,-0.09 -0.52,-1.59 -2.64,-3.14 -3.11,-0.65 -0.81,0.43 -3.97,1.21 -2.53,-0.5 -0.87,-1.58 -3.19,1.28 -3.56,-1.01 -1.15,-0.35 -2.65,-0.19 -3.11,-1.46 -1.37,0.13 -2.53,1.17 -3.72,1.84 -1.32,-0.26 -2.69,0.49 -4.1,0.64 -1.33,0.67 -2.12,-0.84 -3.46,0.08 -0.96,-1.47 -2.91,-0.73 -4.2,-0.81 -0.5,-0.95 -2.12,-1.82 -0.57,-2.52 0.13,-0.53 -0.36,-1.09 -0.9,-1.1 z","department-78":"m 292.32,132.84 c -1.68,0.81 -3.67,0.76 -5.14,1.83 -1.97,-1.3 -0.99,2.02 -0.1,2.67 0.55,0.79 -1.34,2.61 0.69,2.07 1.64,-0.39 0.59,0.65 0.37,1.44 0.56,0.92 0.3,2.44 1.88,2.64 -0.09,1.26 1.67,1.89 0.48,3.08 1.64,0.66 2.24,2.6 1.48,4.19 -1.03,2.01 0.99,3.08 1.85,4.34 -0.58,1.19 -2.9,3.12 -0.68,3.75 -0.47,1.26 0.09,2.42 1.54,2.47 0.18,1.99 1.68,2.21 3.27,2.53 -0.41,1.11 -0.51,2.96 1.4,2.43 1.42,0.39 2.18,2 1.59,3.43 0.23,1.67 0.57,3.89 2.53,3.87 0.36,1.68 3.78,2.12 3.77,0.29 -0.23,-1.35 1.17,-2.66 1.54,-4.05 1.67,-0.97 -2.33,-2.06 -0.18,-2.66 1.44,0.17 3.44,0.88 3.57,-1.25 0.08,-1.12 0.7,-1.71 1.35,-2.36 -0.8,-1.15 -2.97,-2.42 -1.13,-3.55 0.61,-1.71 3.54,-1.04 3.46,-3.33 -0.81,-1.48 0.7,-1.23 1.5,-1.61 0.73,-1.13 2.67,-0.43 2.55,-1.99 1.23,0.53 1.88,-0.53 0.53,-1.07 -0.97,-1.07 -3.27,-1.54 -2.66,-3.59 -0.02,-1.82 0.75,-3.53 2.25,-4.55 0.27,-1.43 0.56,-2.46 -1.03,-2.77 0.42,-2.23 -2.99,-1.71 -2.63,-3.73 -1.61,-0.09 -3.2,1.35 -4.8,0.6 -1.14,-1.79 -3.8,-0.64 -4.79,-2.64 -0.79,0.03 -1.9,3.2 -2.31,1.04 -0.6,-0.85 0.89,-2.23 -0.76,-2.51 -1.37,-1.91 -2.01,1.2 -3.59,0.52 -1.03,1.41 -3.22,0.49 -3.58,-1.01 -1.62,-1.22 -2.88,0.79 -4.21,-0.53 z","department-28":"m 287.11,142.32 c -2.1,1.04 1.22,5.31 -2.55,5.04 -3.13,0.47 -2.25,4.05 -2.79,5.7 -2.08,1.39 -4.66,0.71 -6.89,0.79 -1.67,0.17 -4.55,-2.91 -4.14,0.39 -0.94,1.3 -4.08,-0.75 -3.86,1.85 -2.43,0.08 -5.51,1.27 -7.37,1.58 -1.08,1.71 -3.78,2.6 -2.33,4.99 0.77,3.5 4.78,4.24 6.38,7.09 -0.22,2.23 -1.98,4.13 0.4,5.86 -1.32,2.12 -2.68,4.96 -5.61,5.63 -2.31,-0.78 -5.36,3.02 -2.13,3.95 -1.7,2.27 2.62,5.08 0.17,6.87 0.96,1.32 5.87,1.56 4.27,3.23 -2.59,-0.41 -2.61,3.43 0.12,2 1.93,-0.18 2.86,0.02 4.27,-1.38 2.46,-1.17 2.35,1.12 0.44,1.89 0.94,1.94 5.72,-0.14 5.24,3.16 2.38,1.44 2.98,5.53 5.88,5 2.46,1.01 5.04,1.84 7.07,-0.1 2.12,0.96 1.21,-4.35 3.42,-1.33 2.91,1.91 0.9,-4.73 4.83,-2.76 1.99,-0.3 2.54,-3.35 5.19,-2.24 2.89,0.64 5.49,-1.07 8.22,-1.66 2.33,-1.48 0.35,-5.82 3.98,-5.14 -0.56,-1.06 0.03,-1.81 0.2,-2.18 -1.12,-2.33 1.98,-4.62 -0.13,-6.47 1.22,-2.57 0.51,-6.45 -1.46,-7.17 0.98,-3.67 -3.12,-0.53 -4.61,-2.82 -3.57,-1.35 -1.08,-6.34 -4.19,-7.79 -2.86,0.53 -0.05,-3.49 -3.13,-2.7 -2.21,-2.24 -5.44,-5.53 -2.5,-8.36 -1.41,-1.65 -2.75,-3.31 -1.37,-5.55 -0.35,-2.12 -1.91,-3.29 -1.97,-5.44 -0.63,-1.06 -1.8,-1.83 -3.04,-1.94 z","department-75":"m 326.98,144.71 c -1.27,-0.06 -2.46,0.68 -3.27,1.54 -0.47,-0.15 -0.85,0.06 -1.23,0.25 -0.65,0.03 -1.66,1.18 -0.69,1.52 0.81,0.18 0.93,1.2 1.8,1.35 1.65,0.28 3.42,1.43 5.03,0.39 1.03,-0.88 2.21,0.62 3.32,0.28 0.54,-0.43 0.6,-1.27 -0.33,-1.23 -0.68,-0.16 -1.14,-0.33 -1.46,-0.06 -0.34,-1.13 -0.06,-2.23 -0.93,-3.14 -0.12,-1.14 -1.17,-0.96 -2.05,-0.92 l -0.18,0 -0.03,3e-4 z","department-93":"m 336.5,137.58 c -0.46,0.33 -1.14,0.34 -1.42,0.97 -0.75,1.19 -2.15,1.71 -3.14,2.62 -0.82,-0.03 -1.72,-0.07 -2.53,-0.25 -0.64,-0.37 -1.29,-1.34 -2.07,-0.64 -0.6,0.3 -1.08,1.1 -1.81,0.59 -0.35,-0.19 -1.46,-0.42 -1.19,0.3 0.56,0.53 2.05,0.32 2.05,1.33 -0.06,0.69 -1.13,1.34 -0.68,2.02 1.05,0.43 2.37,-0.21 3.33,0.37 0.27,0.54 0.5,1.08 0.89,1.55 0.18,0.57 -0.13,1.72 0.86,1.53 1.07,-0.15 2.16,-1.04 3.23,-0.34 1.04,0.72 2.32,1.35 3.05,2.37 -0.11,0.74 1.41,0.94 1.04,0.05 -0.24,-0.71 -0.92,-1.55 -0.78,-2.26 0.67,-0.23 -0.04,-0.79 -0.4,-0.86 0.27,-0.43 -0.26,-0.81 -0.29,-1.14 0.41,-0.57 1.31,-0.71 1.23,-1.58 -0.09,-0.8 0.8,-1.4 0.35,-2.19 -0.23,-0.84 -1.06,-1.46 -1.25,-2.26 0.77,-0.61 0.45,-1.99 -0.49,-2.17 z","department-94":"m 332.85,147.49 c -0.56,0.21 -2.03,0.43 -2.18,1.01 0.31,0.21 1.82,-0.09 1.77,0.51 0.02,0.58 -0.23,1.64 -1.05,1.16 -1.03,-0.16 -2.09,-1.01 -3.03,-0.14 -0.7,0.5 -1.59,0.2 -2.33,0.5 -0.4,1.12 0.01,2.46 -0.66,3.53 -0.23,0.79 0.87,0.44 1.11,0.99 0.42,0.39 0.99,0.13 1.33,-0.1 0.46,0.44 -0.1,1.74 0.84,1.68 0.59,-0.25 1.17,-0.38 1.79,-0.16 1.34,-0.05 2.64,-0.54 3.94,-0.71 0.51,0.63 0.39,1.61 1.15,2.11 0.31,0.19 0.6,0.29 0.75,0.66 0.59,0.31 1.26,-0.47 0.77,-0.99 -0.01,-0.93 1.56,-1.44 0.88,-2.44 0.49,-0.32 0.24,-1.11 0.85,-1.28 0.43,-0.58 -0.47,-0.6 -0.83,-0.71 -0.34,-0.52 0.66,-1.17 0.14,-1.69 0.12,-0.8 -1.11,-0.7 -1.2,-1.46 -1.03,-1.05 -2.25,-2.13 -3.71,-2.49 -0.1,-0.01 -0.2,-0.01 -0.31,0 z","department-92":"m 324.24,141.53 c -2,0.52 -3.26,2.41 -5.06,3.32 -1.07,0.77 -1.1,2.2 -0.99,3.39 -0.4,0.4 -0.48,0.98 -0.25,1.53 0.01,0.71 0.73,0.52 1.15,0.65 0.16,0.65 0.67,1.01 1.28,1.14 0.25,0.33 0.49,0.67 0.86,0.85 0.32,0.72 0.72,1.57 1.66,1.53 0.78,-0.01 1.11,0.83 1.08,1.46 0.36,0.27 0.92,-0.2 1.18,0.31 0.73,-0.09 0.08,-1 0.1,-1.43 0.14,-0.72 0.7,-1.47 0.38,-2.22 -0.12,-0.62 0.28,-1.24 0.24,-1.78 -0.96,-0.79 -2.46,-0.33 -3.22,-1.42 -0.37,-0.47 -1.1,-0.68 -1.44,-1.08 0.22,-1.13 1.41,-1.83 2.5,-1.7 0.39,-0.7 1.58,-0.82 1.76,-1.68 -0.35,-0.89 1.37,-1.42 0.54,-2.3 -0.48,-0.39 -1.16,-0.56 -1.77,-0.58 z","department-91":"m 320.25,153.32 c -0.58,0.51 -0.49,1.56 -1.65,1.15 -1.09,0.27 -1.38,1.31 -2.58,1.12 0.11,1.05 -0.02,2.93 -1.5,3.32 -1.61,-0.22 -1.97,1.45 -2.84,2.24 0.58,0.86 2.2,1.77 1.79,2.96 -1.64,0.36 -0.55,3.52 -2.55,3.44 -0.79,0.15 -3.39,-0.81 -2.43,0.71 1.02,0.53 2.16,1.11 0.51,1.61 -0.86,0.93 -0.75,2.41 -1.65,3.25 0.14,1.24 1.76,2.59 0.46,3.92 0.71,0.75 2.78,0.14 2.06,1.92 1.07,1.28 -0.54,2.43 0.19,3.85 0.08,0.92 -1.54,1.43 -0.06,2.16 1.67,1.02 3.4,-0.35 5.09,-0.44 0.79,-1.48 2.15,0.97 2.97,-0.44 -0.22,-1.14 1.58,-0.26 1.55,-1.49 0.43,-1.63 2.01,-0.33 2.65,0.23 -0.12,0.95 0.48,1.61 1.08,0.67 0.98,0.38 1.68,0 2.09,-1.03 1.19,-0.35 1.89,2.24 3.4,1.07 0.49,-0.63 -0.03,-1.81 1.37,-1.59 1.11,-0.46 0.12,-2.39 1.77,-2.49 0.99,-0.33 0.83,-1.84 2.2,-1.42 0.62,-0.47 2.15,-0.38 0.97,-1.39 -1.69,-0.77 -1.16,-2.85 -1,-4.34 0.63,-1.35 -0.62,-2.47 -0.1,-3.88 0.63,-1.33 0.75,-2.86 1.78,-3.97 -0.3,-0.67 -1.97,-1.85 -0.32,-2.16 1.12,-0.7 -0.81,-1.91 0.75,-2.52 1.46,0.63 1.85,-1.77 0.18,-1 -1.09,-0.51 -1.76,-1.71 -2.13,-2.88 -1.08,-0.05 -2.24,1 -2.98,0.91 -0.9,-0.56 -2.37,0.31 -3.35,-0.26 0.08,-0.81 -0.25,-1.5 -1.11,-1.09 -0.9,-1.03 -1.16,0.24 -1.83,0.61 -0.49,-0.5 -1.91,-0.11 -1.24,-1.2 -0.57,-1.05 -2.44,-1.17 -3.52,-1.52 z","department-45":"m 320.43,181.91 c -1.93,3.75 -6.85,2.12 -9.9,4.16 -1.95,2.44 0.54,6.83 -3.34,8.04 -0.15,3.54 -2.85,4.96 -6.06,5.24 -2.92,1.1 -6.42,-0.72 -8.49,2.39 -1.57,0.69 -5.05,0.19 -3.17,3.06 1.8,0.69 1.81,1.21 0.63,2.66 -1.69,2.43 4.05,3.22 1.25,6.02 -2.34,2.28 -0.38,4.59 0.09,7.04 1.76,1.74 4.95,-1.17 6.29,2.07 1.03,2.45 2.79,7.52 5.89,3.78 1.72,-3.2 5.45,1.69 8.15,-0.49 3.31,-0.11 8.68,-1.55 10.42,2.55 3,0.8 5.42,3.73 8.74,2.17 2.13,1.16 4.32,2.3 6.96,2.83 1.97,1.01 3.09,6.61 5.84,4.26 -0,-3.62 2.76,-1.68 4.41,-0.43 2.59,0.81 2.19,-2.3 2.2,-3.37 1.94,-0.4 6.46,-0.48 3.87,-3.36 0.34,-3.56 -2.17,-6.48 -4.41,-8.39 0.34,-3.92 6.29,-1.58 7.84,-4.63 1.26,-2.84 -2.35,-5.65 1.12,-7.77 4,-1.7 4.51,-6.41 1.51,-9.33 -2.16,-2.35 -2.73,-6.91 -6.87,-6.87 -1.86,0.13 -5.92,3.75 -6.03,-0.07 -2.63,1.14 -5.36,4.25 -8.22,1.8 -2.17,-0.24 -6.58,1.49 -7.34,0.08 2.67,-1.6 4.53,-6.27 0.45,-7.38 -2.86,-1.04 -1.71,-5.28 -5.43,-4.57 -1.53,-1.38 -4.89,2.52 -5.34,-1.02 -0.33,-0.2 -0.71,-0.32 -1.06,-0.48 z","department-41":"m 266.29,195.63 c -2.06,2.95 -7.43,0.3 -8.5,3.42 -1.9,1 -2.23,2.67 -0.22,3.62 0.19,3.26 0.26,5.82 -1.16,8.6 -4.07,-1.69 0.07,5.24 -3.5,5.91 -0.99,3.4 -6.81,3.06 -5.94,7 2.53,-0.22 6.07,1.21 9.36,0.87 2.33,-0.38 3.21,0.87 2.33,3.13 -0.6,3 2.08,2.14 3.12,0.52 2.68,-0.46 3,3.47 5.15,1.95 3.31,1.92 -0.52,5.3 2.24,7.5 2.87,2.54 0.27,5.57 1.51,8.9 -2.12,3.16 1.39,5.4 4.47,4.52 3.84,-0.06 2.69,7.22 7.32,5.56 1.87,-1.68 3.74,-3.34 6.46,-2 0.88,-3.66 5.55,-2.27 8.48,-2.51 2.88,0.7 4.8,4.16 8.08,3.56 2.17,-0.93 0.23,-5.2 4,-4.24 2.53,1.03 9.23,0.49 7.7,-3.24 -2.46,-1.98 -1.75,-6.33 1.55,-6.48 1.62,0.43 3.89,1.9 3.49,-1.2 0.4,-2.84 -2.55,-3.04 -1.96,-5.71 -0.66,-1.86 -5.5,-1.35 -2.85,-4.03 2.3,-0.71 6.5,-3.18 2.67,-5.2 -3.4,-0.6 -6.94,-0.37 -10.34,0.3 -2.3,0.89 -5.75,-3.14 -6.32,0.82 -3.73,2.59 -5.33,-2.8 -6.15,-5.3 -2.21,-2.59 -5.58,2.04 -6.3,-1.81 -0.8,-1.62 0.46,-2.55 -1.18,-3.79 1.15,-2.66 3.49,-5.56 -0.29,-7.32 0.2,-1.64 2.39,-4.45 -1.04,-3.94 -1.34,-0.61 -4.15,-1.65 -3.51,1.01 -2.97,0.88 -5.87,1.72 -8.76,0.26 -3.05,-0.48 -3.65,-3.81 -5.67,-5.58 -0.41,-3.18 -5.31,-0.86 -5.28,-3.08 0.5,-0.52 3.23,-1.6 1.02,-2.02 z","department-36":"m 292.75,252.32 c -0.22,1.96 -4.71,0.36 -3.09,3.11 -2.43,-0.72 -5.02,-1.03 -6.59,1.34 -2.69,0.52 -2.88,2.56 -1.18,4.37 -0.27,2.79 -3.21,4.19 -4.35,6.82 -1.44,3.03 -4.42,-1.33 -6.53,0.46 -3.18,0.46 -2.88,3.92 -3.68,6.03 -1.05,3.06 -0.95,6.5 -2.13,9.41 1.56,2.64 -2,4.95 -4.07,2.91 -3.4,-0.16 1.5,2.15 0.47,4.03 -1.36,3.26 -0.89,7.48 3.29,8.02 1.63,1.02 1.82,2.51 4.05,2.13 3.15,0.49 2.87,3.8 3.42,5.86 3.01,0.61 1.99,2.49 1.57,4.47 1.47,-0.43 1.97,1.71 3.8,0.38 1.85,0.34 2.68,-2.93 4.56,-0.65 1.37,1.89 2.88,2.94 4.14,0.35 1.12,-1.38 3.37,-4.31 4.14,-1.21 1.33,-0.81 3.52,-2.34 3.35,0.47 1.47,0.6 2.78,-3.28 3.75,-0.32 2.88,0.93 1.17,-5.91 4.57,-3.2 2.52,2.22 5.64,-0.66 8.59,0.82 2.5,1.04 7.68,2.32 7.46,-1.55 4.04,-2.02 -1.08,-5.26 0.41,-8.47 1.23,-2.22 0.34,-4.16 -1.32,-5.77 1.29,-2.28 -5.15,-3.19 -2.63,-5.41 3.7,-2.03 -4.12,-5.08 0.13,-6.45 0.15,-1.85 5.09,-3.55 1.3,-4.36 -3.14,-0.2 -1.71,-2.81 -0.75,-4.45 0.55,-3.16 -4.43,-3.11 -2.28,-6.14 0.71,-2.59 -1.84,-0.34 -2.34,-2.38 -2.14,-1.4 -4.51,2.29 -6.97,0.12 -1.89,-0.3 -3.87,-1.35 -1.68,-3.08 2.9,-1.88 1.03,-5.37 -2,-5.37 -1.57,-1.11 -2.26,-2.41 -4.45,-1.38 -1.18,-0.07 -1.7,-1.07 -2.98,-0.88 z","department-18":"m 323.87,229.07 c -2.35,0.13 -9.34,2.52 -5.77,4.83 3.63,-0.55 1.32,4.29 3.95,4.19 1.09,2.3 -0.24,7.95 -2.97,4.02 -2.53,0.84 -4.38,3.27 -2.23,5.76 1.94,2.35 0.54,4.87 -2.44,4.09 -2,0.97 -4.54,0.79 -6.09,-0.04 -3.26,0.8 0.48,4.8 -3.11,4.5 -2.3,-0.84 -0.78,2.92 -3.07,3.74 -2.13,3.21 4.52,3.78 6.54,2.69 2.19,-2.06 2.95,2.09 4.74,0.99 0.13,1.95 -1.78,4.73 1.47,5.08 2.39,1.98 -3.09,7.46 2.34,7.01 1.98,2.06 -4.63,4.48 -3.1,6.87 3.2,0.9 1.23,3.63 0.29,5.24 0.67,1.68 4.73,1.92 3.03,4.22 4.54,2.34 -0.65,6.57 2.07,9.85 1.42,2.13 -0.12,3.45 -1.35,4.8 0.97,3.01 6.38,2.02 6.61,-1.43 1.68,-1.43 2.79,-4.1 5.74,-3.71 2.61,-0.19 8.61,0.85 7.95,-3.28 -1.28,-1.97 -0.29,-4.02 -0.99,-5.76 1.11,-0.26 2.76,0.38 2.1,-1.66 2.77,0.03 3.8,-5.99 6.55,-2.38 4.02,-0.1 5.48,-4.84 9.43,-5.17 5.09,1.19 4.04,-5.2 3.91,-8.3 0.71,-2.84 1.27,-6.86 -1.24,-8.77 -0.49,-3.87 -0.61,-7.69 -2.18,-11.39 0.6,-4.25 -6.27,-4.24 -4.71,-8.26 2.14,-3.02 2.74,-7.4 -0.15,-10.16 -1.82,-0.35 -3.52,2.23 -5.06,-0.44 -2.66,-2.76 -1.08,3.94 -4.37,2.1 -2.06,-1.93 -3.82,-6.36 -7.51,-5.63 -1.58,-0.2 -3.8,-3.83 -5.86,-1.15 -1.78,-0.24 -2.82,-2.01 -4.51,-2.45 z","department-23":"m 301.06,306.59 c -2.18,-0.09 -0.48,5.24 -3.46,3.84 -1.17,-2.86 -2.05,0.79 -3.59,0.42 -1.13,-0.79 -0,-3.31 -1.73,-1.25 -1.24,0.55 -2.36,1.38 -2.36,-0.7 -1.54,-0.88 -2.18,2.59 -3.79,3.02 -0.98,0.84 -2.88,2.44 -0.45,2.76 0.29,1.69 -1.79,2.6 -0.56,4.04 -2.11,0.16 0.28,2.07 -1.84,2.35 -1.71,2.37 1.37,3.88 3.12,3.98 -0.87,1.98 3.03,2.32 1.47,4.18 0.81,1.46 2.68,2.16 2.08,4.13 0.59,1.41 -1.07,3.49 1.38,3.72 1.8,2.32 -4.92,2.97 -1.35,4.46 1.26,1.18 3.64,-2.06 4.21,0.35 0.31,1.19 0.8,2.47 -1.06,2.08 -1.31,1.78 2.07,3.75 3.94,3.02 1.79,0.62 3.88,-3.62 3.75,-0.15 0.21,1.27 2.24,2.17 2.82,1.56 1.47,1.11 3.83,3.39 1.98,4.77 0.21,1.09 -0.08,4.28 1.82,2.42 1.13,0.08 1.99,-1.04 3.2,-0.95 0.33,-2.76 3.75,-2.96 4.66,-0.46 1.35,-0.17 2.6,0.94 3.34,-0.03 1.49,1.32 3.49,2.43 4.82,3.44 0.2,2.09 4,0.09 3.38,-1.73 2.36,-0.58 5.37,1.33 6.38,-2.1 -1.37,-1.09 -2.62,-1.96 -3.06,-3.78 -1.55,-1.24 -1.59,-2.93 0.65,-2.9 0.54,-1.38 1.04,-2.45 2.73,-1.85 0.62,-1.79 3.09,-2.23 2.56,-4.51 0.36,-1.75 3.84,-1.53 2.12,-3.52 1.2,-2.89 -2.25,-4.14 -2.04,-6.95 -0.08,-2.21 1.4,-4.81 -1.02,-6.11 0.02,-2.5 -1.86,-3.91 -2.39,-6.08 -1.13,-1.7 -3.1,0.63 -2.89,-2.06 -0.52,-1.65 -1.48,-0.92 -2.17,-0.16 -2.13,-0.72 -3.54,-2.45 -1.59,-4.12 -3.08,0.61 -1.54,-4.21 -4.75,-3.19 -2.85,-0.75 -5.52,1.57 -8.05,0.18 -2.39,-0.94 -4.83,-0.98 -7.12,-1.05 -1.87,0.89 -3.74,0.71 -4.87,-1.08 l -0.28,-0.01 10e-6,10e-5 z", +"department-87":"m 281.04,310.22 c -0.51,0.05 -1.17,0.12 -1.14,0.78 -0.25,1 -1.41,1.2 -2.23,0.78 -0.91,-0.55 -1.46,0.97 -2.37,0.47 -0.41,-0.24 -0.15,-1.36 -0.88,-1.06 -0.15,0.36 -0.49,0.69 -0.87,0.31 -0.42,-0.56 -1.48,-0.46 -1.39,0.36 -0.29,0.51 -0.98,0.78 -0.95,1.46 -0.55,0.47 -1.05,-0.38 -1.56,-0.48 -1.22,-0.29 -2.83,0.17 -3.07,1.56 0.1,1.34 -1.16,2.36 -1.14,3.65 -1.12,-0.21 -2.43,-0.58 -3.48,-0.02 -0.57,-0.29 -1.43,-0.46 -1.55,0.41 -0.29,0.71 -1.42,0.57 -1.53,1.41 -0.45,0.32 -0.59,0.81 -0.41,1.28 -0.57,0.79 -2.14,-0.04 -2.35,1.21 -0.11,1.15 1.52,1.66 1.49,2.82 0.45,0.61 -0.22,1.55 0.51,2.07 0.3,0.78 -1.04,0.68 -1.22,1.21 0.1,0.73 1.16,1.32 0.57,2.1 -0.2,0.88 -0.43,1.82 -0.37,2.7 0.55,0.71 1.53,1.06 1.85,1.96 0.6,0.29 0.77,-1.11 1.42,-0.47 0.52,0.57 1.56,1 1.37,1.9 0.17,0.33 0.61,0.45 0.5,0.91 0.25,0.56 0.69,1.22 0.15,1.8 -0.4,0.33 -0.69,0.93 -0.79,1.33 -1.08,0.03 -1.62,1.44 -2.79,1.15 -0.74,0.09 -1.45,-0.83 -2.12,-0.41 -0.07,0.49 0.25,0.98 0.12,1.53 -0.13,0.54 0.63,1.01 0.41,1.49 -0.44,0.28 -0.27,0.69 -0.21,1.04 -0.23,1.22 -1.06,2.19 -1.62,3.25 -0.26,0.54 0.17,1.51 -0.39,1.85 -0.92,-0.16 -1.85,-1.49 -2.8,-0.78 -0.33,0.63 -0.36,1.44 0.03,2.02 -0.07,0.89 -1.28,0.52 -1.72,1.1 -0.39,0.39 -0.56,0.91 -1.06,1.2 -0.36,0.39 -0.09,1.12 -0.8,1.16 -0.53,0.7 0.73,1.29 1.05,1.78 1.12,0.48 2.72,-0.73 3.83,0.16 0.41,0.49 0.74,1.16 1.39,1.34 0.08,1.16 -0.5,2.25 -0.79,3.32 0.28,0.85 0.98,1.77 1.99,1.46 0.49,0.16 0.41,1.27 1.18,1.08 1.27,-0.42 1.02,-2.31 2.06,-2.9 0.55,0.27 0.58,1.69 1.39,1.27 0.5,-0.37 1.3,-0.2 1.85,-0.57 0.8,-0.12 1.59,0.64 2.37,0.08 1.2,-0.25 2.21,0.92 2.02,2.08 -0.09,0.92 0.66,1.5 1.35,1.88 0.41,0.32 0.61,1.42 1.32,0.86 0.49,-0.58 1.3,-0.68 1.86,-0.14 0.33,0.35 1.23,0.52 1.23,1.08 -0.69,0.87 -1.91,1.66 -1.92,2.87 0.34,0.84 1.26,0.35 1.87,0.21 0.56,0.26 0.58,0.97 0.93,1.33 0.84,-0.26 2.33,-0.56 2.49,0.7 0.19,0.63 0.87,0.23 0.77,-0.27 0.67,-0.31 0.04,-1.73 0.98,-1.81 0.57,0.07 0.21,-0.87 0.71,-0.67 0.95,0.21 1.74,1.1 2.68,1.15 0.76,-1.2 1.96,-2.1 2.52,-3.45 0.35,-0.6 1.02,-0.45 1.52,-0.23 0.86,-0.13 0.35,-1.3 0.75,-1.74 0.56,-0.03 0.98,-0.4 1.21,-0.85 0.63,0.05 0.58,1.16 1.29,0.85 0.37,-0.17 0.08,-0.99 0.68,-0.63 0.79,0.46 1.82,0.91 2.6,0.18 0.48,-0.4 0.34,-1.43 1.2,-1.3 1.25,0.1 2.05,-1.03 2.55,-1.98 0.73,-0.73 1.34,-1.82 2.34,-2.13 0.74,0.12 1.5,-0.28 1.86,-0.87 0.93,-0.17 1.13,-1.16 1.48,-1.85 0.37,-0.07 0.64,0.49 1.11,0.2 0.61,0.2 0.96,1.44 1.71,0.76 0.42,-0.5 1.1,0.52 1.33,-0.26 -0.03,-0.66 0.6,-0.53 1.03,-0.64 0.45,-0.2 0.16,-0.77 -0.12,-0.88 -0.02,-0.51 -0.84,-0.68 -0.83,-1.1 0.48,-0.35 0.14,-0.82 -0.21,-1.07 0.24,-0.6 0.41,-1.25 0.01,-1.83 -0.05,-0.55 1.2,0 0.86,-0.75 -0.45,-0.79 -0.3,-1.85 -1.25,-2.36 -0.47,-0.29 -0.97,-0.56 -1.37,-0.86 -0.42,0.28 -0.85,0.21 -1.19,-0.2 -0.57,-0.6 -1.85,-0.61 -1.72,-1.7 0.17,-0.43 0.1,-1.78 -0.62,-1.22 -0.17,0.44 -0.43,0.74 -0.89,0.86 -0.71,0.92 -2.04,0.24 -2.93,0.86 -0.49,0.28 -0.9,0.12 -1.15,-0.31 -0.68,-0.45 -1.84,-0.44 -2.21,-1.23 0.21,-0.61 -0.04,-1.24 -0.49,-1.61 0.25,-0.59 1.1,-0.28 1.36,-0.78 0.47,0.27 0.94,-0.21 0.51,-0.63 -0.6,-0.41 0.17,-1.39 -0.62,-1.58 -0.8,-0.29 -1.69,0.05 -2.03,0.8 -0.73,0.21 -1.51,-0.02 -1.97,-0.63 -0.45,-0.19 -1.31,-0.18 -0.96,-0.92 0.42,-1.4 2.91,-1.11 2.81,-2.77 -0.02,-0.79 -0.76,-1.12 -1.46,-1.02 -0.74,-0.49 -0.23,-1.62 0.01,-2.28 0.07,-0.84 -0.67,-1.62 -0.2,-2.45 -0.01,-0.95 -1.08,-1.21 -1.63,-1.75 -0.29,-0.44 -0.89,-1.12 -0.22,-1.54 0.59,-0.47 -0.22,-1.14 -0.7,-1.29 -0.29,-0.51 -0.96,-0.67 -1.32,-1.01 0.65,-0.4 0.49,-1.69 -0.42,-1.53 -0.93,0.06 -2.05,-0.18 -2.28,-1.2 -0.52,-0.39 -1.08,-1.35 -0.53,-1.94 0.31,-0.58 0.65,-1.21 1.38,-1.2 0.66,-0.47 -0.77,-0.84 -0.18,-1.34 0.43,-0.32 0.7,-0.79 0.48,-1.28 -0.02,-0.63 0.42,-1.1 0.86,-1.45 0.24,-0.83 0.18,-2.06 -0.9,-2.22 -0.7,-0.32 -0.2,-1.35 -0.83,-1.79 -0.85,-0.67 -1.34,-1.98 -2.45,-2.23 l -0.03,0.01 z","department-19":"m 313.35,352.38 c -1.86,0.13 -2.22,1.42 -2.96,2.7 -1.7,-0.45 -2.02,1.25 -3.41,1.04 0.1,2.65 -3.23,3.39 -4.97,1.84 -1.53,1.04 -2.82,2.64 -4.95,2.95 -1.42,1.63 -2.47,3.68 -4.63,4.05 -0.78,2.4 -3.28,0.32 -4.72,1.32 -0.15,-2.02 -2.14,1.24 -2.3,2.01 -1.89,-1.15 -2.49,2.34 -3.89,3.21 -1.28,0.53 -3.65,-2.27 -4.12,0.75 -1.21,1.38 2.97,2.44 0.01,3.18 -0.68,2.09 4.29,0.8 2.12,3.47 -1.5,0.61 -1.7,2.64 -3.24,3.07 -0.37,1.74 -0.74,3.8 1.62,4.02 0.64,1.56 -3.73,2.47 -1.44,3.5 2.52,-0.79 2.31,2.08 0.75,2.84 2.1,1.86 4.91,0.57 6.95,2.2 -1.97,1.83 -0.08,4.96 1.55,6.77 1.57,0.57 3.76,-3.02 4.88,-0.71 2.49,-1.36 5.15,0.9 6.6,2.82 0.89,1.66 2.62,2.3 3.51,3.98 0.84,-0.76 2.22,0.94 2.83,-0.95 1.95,-0.25 4.19,-4.21 5.12,-0.84 2.18,-2.19 5.35,-1.42 8,-1.89 1.92,-1.72 -3.18,-4.39 -0.13,-5.96 1.44,-0.92 3.38,-0.83 2.82,-3.25 -0.27,-1.27 3.56,-2.56 1.06,-3.66 -2.12,-2.49 1.31,-4.07 2.09,-6.03 1.52,-1.54 3.08,-3.21 4.69,-4.48 0.47,-1.62 0.7,-3.32 -0.12,-4.93 2.48,-0.49 5.95,4.22 7.88,1.25 -2.68,-1.36 -0.86,-4.01 -0.65,-6.27 0.65,-2.61 -0.12,-4.5 -1.81,-6.42 -0.37,-1.09 0.41,-2.79 1.03,-3.68 2.2,0.41 0.72,-2.34 1.39,-3.43 -0.08,-1.62 -1.77,-3.7 -2.72,-1.42 -1.49,2.45 -5.53,-1.84 -5.69,2.21 -1.2,1.04 -3.48,1.86 -3.57,-0.45 -2.4,-0.22 -2.77,-1.54 -4.33,-2.87 -0.57,1 -2.92,0.03 -3.77,-0.11 0.11,-0.94 -1.07,-1.2 -1.5,-1.83 z","department-15":"m 334.72,370.94 c -1.28,1.82 -1.55,4.58 0.43,5.9 -1.81,2.51 -4.37,0.04 -6.57,-1.17 -2.6,-1.06 0.22,2.76 -1.15,4.1 -0.02,1.86 -2.79,1.83 -3.22,3.86 -1.83,1.13 -3.51,3.59 -4.24,5.64 0.35,1.77 2.71,2.41 0.56,3.82 -1.95,0.87 -0.07,4.99 -2.89,4.16 -3.55,0.88 -0.82,4.03 -0.22,5.71 -0.43,1.88 -4.6,-0.03 -2.81,2.9 -0.04,1.62 2.21,2.57 0.46,3.91 0.13,3.08 4.46,4.57 3.6,7.69 -0.92,1.52 -0.85,3.76 -1.46,5.32 3.14,-0.54 0.43,4.14 3.05,4.94 0.99,0 -0.12,-3.03 2.23,-2.19 1.58,-0.83 4.01,-1.56 4.43,0.74 2.75,-0.34 6.48,0.85 7.12,-2.96 2.85,-1.73 1.71,-5.71 4.3,-7.33 -0.14,-2.33 1,-4.52 2.76,-5.39 0.66,-1.77 2.62,-2.11 3.53,-3.79 2.71,0.19 1.23,4.39 2.14,5.14 1.36,-1.39 4.37,-1.42 3.78,1.12 0.34,1.62 0.97,4.51 2.8,3.48 0.84,2.32 -0.52,5.11 1.01,7.65 0.5,1.69 1.9,2.45 2.17,0.12 0.35,-2.14 2.27,-2.85 1.68,-4.93 0.92,-1.91 0.56,-5.47 2.78,-5.83 -0.12,-1.77 1.65,-6.61 3.22,-3.03 1.26,2.36 3.56,-0.59 3.31,-2.05 0.59,-1.14 0.92,-2.65 1.95,-1.09 1.6,-1 4.29,-1.63 3.3,-3.81 1.88,-0.88 -1.23,-1.49 -1.31,-2.37 -2.47,-0.36 0.7,-4.16 -1.68,-4.86 0.04,-1.43 3.56,1.01 2.84,-0.76 -3.52,-0.25 -3.97,-3.78 -3.79,-6.72 -2.86,-0.25 -0.48,-5.68 -3.84,-4.2 -1,0.06 -0.92,-1.73 -2.53,-0.75 -1.83,0.05 -2.03,-0.79 -0.71,-1.66 -1.98,-0.82 1.54,-2.18 -0.51,-2.67 -1.63,1.16 -2.03,4.92 -4.8,3.76 -3.45,-0.77 -2.59,-5.89 -6.01,-5.8 -1.98,-1.95 -3.93,0.16 -6.22,-0.38 -1.82,0.76 -1.98,-2.81 -2.23,-3.3 -2,0.21 -2.37,-1.95 -4.2,-1.04 -0.86,-1.4 -2.85,0.57 -2.19,-1.65 -0.21,-0.26 -0.61,-0.13 -0.87,-0.22 z","department-30":"m 402.45,438.56 c -1.2,2.08 -2.01,3.99 -4.41,4.18 -0.91,2.13 4,4.03 1.37,6.32 -0.45,1.86 3.55,2.45 0.94,3.7 -0.76,1.99 0.11,3.59 0.97,5.15 -2.84,-2.29 -3.24,4.22 -6.65,2.09 -2.84,1.31 -5.14,-3.82 -7.86,-2.71 -1.9,-0.09 0.68,4.12 -2.36,3.87 -3.59,-0.21 -7.54,0.01 -9.81,-3.3 -3.88,-0.94 -1.76,4.82 -5.2,4.63 -0.2,1.99 1.7,1.26 2.49,1.37 0.64,2.2 6.26,1.35 5.12,4.79 -0.92,1.9 -5.78,3.67 -3.13,5.83 2.48,-0.75 3.13,1.64 2.84,3.17 1.93,-1.62 4.32,-2.9 4.52,0.69 1.23,0.34 3.7,1.07 1.85,-0.84 1.05,-1.8 2.07,-3.7 4.36,-3.11 -0.01,-3.76 5,-4.67 6.38,-1.85 2.32,1.17 -2.54,5.3 1.82,4.76 1.89,-0.76 3.45,-1.45 3.7,1.02 2.53,0.02 1.7,2.08 1.81,3.51 2.89,-1.55 4.4,2.61 6.33,3.87 2.8,0.69 3.15,4.82 3.78,7.11 -0.67,2.22 -2.4,3.52 -4.18,3.93 1.03,2.15 2.04,4.41 2.86,6.75 1.85,2.05 3.54,0.51 3.74,-1.66 2.08,-0.46 3.52,-1.72 3.36,-3.55 0.97,2.31 4.15,-0.86 5.01,-1.94 1.98,0.27 2.78,-2.49 0.23,-2.01 -0.41,-2.17 1.81,-4.53 3.24,-5.76 1.92,-1.29 6.52,3.05 5.01,-1.07 0.59,-2.7 2.29,-5.32 1.74,-7.95 1.25,-0.84 -1.73,-1.91 0.74,-2.53 2.32,-1.47 3.71,-3.79 6.04,-5.21 0.4,-1.57 0.8,-2.1 2,-2.68 -1.38,-1.85 -2.67,-6.36 -5.46,-5.62 -1.54,-2.69 0.63,-6.1 -0.98,-8.69 -2.44,0.11 -1.5,-4.81 -4.22,-4.74 -2.14,-0.69 -5.48,-5.75 -7.17,-2.57 0.92,4.08 -4.49,2.27 -2.46,-0.85 -1.91,-1.19 -5.21,1.01 -5.19,3.34 -1.4,3.16 -4.03,-1.21 -5.4,-1.88 -1.7,0.52 -1.47,-2.53 -3.73,-1.05 -1.71,1.8 -2.68,-0.11 -1.46,-1.57 -0.15,-1.56 -0.74,-2.62 0.35,-3.62 -1.57,-1 -0.67,-2.78 -2.91,-3.32 z","department-48":"m 373.48,404.94 c -1.47,0.89 -3.46,3.53 -5.12,1.98 -0.01,1.49 -1.57,1.93 -1.04,3.5 -1.43,1.81 -3.11,1.2 -3.88,-0.85 -2.88,-0.45 -1.07,4.27 -3.39,4.9 -1.4,1.6 -1.16,4.02 -1.76,5.9 0.45,1.49 -1.64,2.13 -1.6,3.92 -1.61,2.48 1.66,4.55 3.09,6.26 2.11,1.84 -1.38,5.67 2.08,6.72 1.92,1.77 1.3,4.27 0.7,6.32 -0.81,2.08 2.13,3.68 0.68,5.63 -1.2,1 -0.69,2.92 0.49,1.55 -0.34,2.49 4.49,1.53 3.22,4.04 -0.61,3.08 3.16,-0.47 4.71,0.57 2.33,-0.24 2.39,2.9 4.55,3.55 1.02,2.18 4.4,1.65 6.21,1.9 1.73,0.64 4.49,-0.1 3.28,-2.39 -0.17,-1.71 2.49,-2.35 3.14,-0.7 2.15,-0.14 3.4,3.16 5.36,2.3 1.4,-0.48 2.81,0.78 3.7,-1.01 1.48,-0.27 0.79,-2.83 2.56,-1.71 0.48,-1.13 -1.37,-1.78 -0.45,-3.23 -0.32,-1.45 2.55,-2.77 -0.12,-3.02 -0.49,-1.4 -1.27,-2.69 0.33,-3.79 -0.9,-1.25 -2.65,-3.18 -2.62,-4.42 1.46,-1.07 3.7,-0.89 3.95,-3.34 1.21,-1.8 0.03,-4.2 -0.54,-6.13 -0.14,-2.55 -3.1,-2.32 -3.01,-4.96 -0.51,-1.42 -0.74,-3.3 -1.23,-4.8 0.21,-0.99 -1.02,-2.2 -0.2,-3.43 -0.96,-0.75 -2.32,-0.83 -1.55,-2.36 -1.84,1.16 -1.86,-1.71 -3.45,-2.23 0.02,-3.18 -3.5,-0.79 -4.63,-2.01 2.18,-2.04 -3.67,-4.45 -2.82,-1.23 0.29,3.23 -3.33,0.7 -4.65,2.81 -2.12,0.38 -2.38,-3.83 -3.37,-5.42 -0.69,-1.57 0.03,-3.98 -2.15,-4.28 l -0.25,-0.51 -0.23,-0.01 -2.2e-4,-1e-4 z","department-63":"m 350.25,319.87 c -2.41,0.1 -1.39,6.08 -4.36,2.69 -2.2,-1.55 -1.13,2.91 -3.36,2.6 -0.99,2.15 -2.4,5.06 -4.99,2.48 -3.53,1.71 0.74,5.9 1.02,8.31 0.33,2.26 -0.13,3.09 -1.85,4.34 -0.59,3.07 -2.87,5.1 -5.46,5.93 -0.78,1.08 -3.3,2.29 -0.7,4.14 1.84,2.94 6.68,6.33 3.76,10.01 -3.59,1.58 -0.37,5.2 0.63,7.47 -1.63,3.1 2.57,5.33 4.8,4.69 1.04,1.88 3.32,0.49 2.64,2.92 1.95,3.55 6.09,-0.43 8.67,2.01 3.48,0.74 2.44,6.76 6.82,5.67 2.39,-1.04 2.55,-4.68 5.97,-4.03 2.84,-0.11 5.33,-4.21 7.45,-3.45 1.17,-0.15 2.17,-1.54 3.06,0.31 2.88,1.39 5.17,-2.92 7.03,0.16 3.24,-0.64 2.05,6.51 5.21,2.85 1.13,-3.37 5.41,3.07 6.68,-1.35 0.83,-2.19 5.07,4.34 4.28,-0.59 0.72,-2.92 5.73,-4.1 3.45,-7.91 -0.98,-3.57 -2.63,-6.42 -6.17,-8.13 -2.69,-2.1 -1.82,-6.45 -4.74,-8.34 -0.45,-1.7 -2.19,-2.8 -0.35,-4.4 -0.69,-2.91 2.62,-4.84 -0.62,-6.96 -2.59,-1.57 -3.98,-4.12 -5.91,-6.12 -2.16,0.37 -6.24,1.62 -5.45,-1.98 -1.98,-2.68 -5.33,1.55 -7.73,-0.76 -2.66,-0.65 -5.11,0.01 -7.56,-0.72 -1.51,-1.52 -2.18,-2.56 -4.49,-2.07 -3.09,-0.49 -3.15,-3.91 -5.15,-5.29 0.27,-2.13 2.01,-5.11 -1.71,-4.35 l -0.47,-0.05 -0.43,-0.12 0,0 z","department-42":"m 397.37,318.49 c -1.6,0.83 -3.4,1.29 -4.64,2.21 -1.3,0.59 1.02,2.59 0.48,3.98 0.61,1.85 -0.41,4.23 1.11,6.23 -1.61,2.5 2.37,7.25 -2.15,7.3 -1.09,-0.11 -1.49,1.09 -2.88,0.34 -2.32,2.56 2.22,3.36 1.74,5.81 -1.98,1.61 -0.24,4.65 -2.31,6.15 1.69,0.49 1.3,2.13 2.33,2.91 2.23,1.34 1.14,4.92 3.25,6.83 1.78,1.97 5.01,2.91 6.17,5.68 -1.24,2.45 2.85,3.93 0.67,5.95 0.89,3.06 -5.47,3.2 -3.23,7.04 0.42,3.41 2.25,-3.4 4.17,-0.43 0.87,1.44 1.19,2.02 2.38,0.77 1.23,1.18 1.39,0.75 2.25,-0.33 1.05,-0.89 3.38,0.13 2.65,-1.8 2.25,-0.56 4.93,-0.17 6.2,1.72 1.74,-1.96 5.45,1.48 2.47,2.65 0.55,1.23 1.98,1.3 0.84,2.91 0.86,2.54 3.62,-1.67 4.48,1.3 1.58,2.36 4.9,0.89 6.79,-0.08 -1.25,-1.91 1.2,-3.4 2.26,-5.02 1.49,-1.32 5.89,-1.48 4.47,-4.32 -0.52,-1.74 0.97,-3.48 -0.58,-5.25 -0.48,-1.69 -3.61,1.7 -3.93,-1.3 0.42,-2.1 -0.24,-3.68 -1.93,-4.86 -1.43,0.06 -2.67,-1.02 -4.29,-0.14 -2.32,-0.62 -2.91,-2.86 -5.1,-4.24 -1.42,-1.8 -2.51,-3.8 -0.78,-6.03 1.82,-2.31 -3.43,-0.74 -1.14,-3.43 0.94,-1.31 1.04,-3.98 1.15,-5.42 -2.5,-0.01 -3.12,-2.67 -2.32,-4.33 -1.63,-1.26 -2.43,-3.07 -4.07,-4.21 0.9,-0.54 3.97,0.36 2.35,-1.72 -1.31,0.09 -3.3,-2.79 -0.85,-2.47 1.97,-1.74 0.65,-5.53 4.11,-6 0.97,-0.45 2.45,1.37 2.78,-0.77 -0.25,-1.57 -2.38,-2.12 -0.65,-3.5 -1.51,-1.51 -2.16,1.22 -2.41,1.83 -1.97,-0.74 -4.16,3.26 -5.16,1 1.12,-2.05 -1.54,-0.14 -2.23,-1.49 -1.1,1.9 -3.25,0.89 -4.63,-0.3 -2.08,0.61 -5.43,3.53 -6.14,-0.27 -1.61,-0.39 -4.74,-0.44 -2.93,-2.93 0.29,-0.63 0.34,-2.13 -0.72,-1.99 z","department-69":"m 433.73,316.51 c -1.23,0.46 -2.5,0.15 -2.78,2.07 -0.74,1.45 -2.37,-0.51 -2.67,-1.28 -0.69,1.49 -2.76,2.38 -3.71,0.45 -1.68,-1.33 -4.39,-0.82 -4.01,1.84 -0.71,1.65 0.63,2.41 1.38,3.48 -2.55,0.77 0.51,1.73 0.61,2.71 -0.41,1.66 -1.38,2.06 -2.7,1.09 -2.04,0.63 -3.43,2.17 -3.25,4.46 0.34,2.11 -3.89,1.45 -1.52,3.28 0.64,0.85 2.57,0.6 1.5,2.34 -0.59,0.49 -3.83,-0.49 -1.93,0.9 1.83,0.38 1.7,2.77 3.5,3.41 0.3,1.24 -1.23,2.13 0.17,3.34 0.85,1.23 3.47,0.4 1.96,2.6 -0.03,1.87 -0.27,3.49 -1.48,4.83 0.06,1.49 3.29,0.29 1.61,2.31 -1.06,1.85 -1.32,4.02 0.45,5.41 1.27,1.35 2.68,3.31 4.18,4.13 1.51,1.5 3.36,-0.41 4.88,1.05 1.7,-0.73 1.49,2.06 2.91,2.19 -1.19,1.71 0.21,5.2 2.42,3.21 1.24,-1.16 2.04,4.15 2.96,1.45 1.23,-1.41 3.83,-2.33 3.98,-4.32 -1.76,-0.7 -2.47,-2.54 -4.09,-3.51 1.84,-0.94 3.53,1.28 4.58,-0.77 1.51,-1.17 4.45,-0.14 5.27,-1.51 0.95,-0.25 2.74,0.97 2.03,-1.03 1.24,-1.85 2.79,-4.63 5.26,-4.54 0.24,-2.22 -3.33,-1.77 -3.23,-3.97 -1.59,-0.5 -1.14,-2.19 0.43,-1.77 0.7,-2.69 -4,-0.18 -5.55,-0.99 -1.61,0.21 -2.66,0.21 -2.4,-1.73 -0.63,-1.95 -1.32,-4.61 -3.64,-4.95 -0.96,0.68 -1.86,1.05 -1.38,-0.57 -0.83,-1.37 -2.55,-0.91 -3.49,-1.92 2.14,-2.03 -0.39,-5.26 0.95,-7.43 1.04,-0.99 -1.1,-2.32 0.59,-3.24 1.49,-1.45 2.32,-4.9 -0.84,-4.45 -2.61,-1.01 0.89,-5.07 -2.78,-5.24 -1.21,-1.33 2.19,-1.14 0.43,-2.68 -0.12,-0.26 -0.3,-0.58 -0.61,-0.66 z","department-43":"m 379.31,374.73 c -1.62,2.39 -4.9,1.8 -6.71,0.33 -0.7,1.72 -0.87,1.21 -1.91,0.1 -0.8,1.98 -3.58,1.56 -4.38,3.23 -1.25,1.09 -2.57,1.35 -4.33,1.17 0.74,1.5 -1.58,1.78 -0.04,2.79 -2.08,1.77 1.79,1.15 2.36,1.2 -0.13,1.97 3.13,-0.54 2.89,1.98 -0.29,1.8 0.97,2.96 2.14,3.73 -0.86,2.28 -0.05,5.34 2.48,5.9 2.93,0.43 -0.37,2.07 -1.36,0.74 -1.49,0.56 1.82,1.51 0.26,2.94 -1.01,2.64 2.59,2.31 2.97,4.1 -2.04,1.24 0.26,1.73 1.03,2.74 1.8,0.69 0.7,3.92 2.11,5.44 0.56,1.74 1.53,5.67 3.68,3.09 2.13,0.18 4,-0.58 3.52,-3.06 1.72,-1.57 4.47,0.99 3.25,2.73 2.03,-0.35 4.24,-0.91 4.56,1.81 1.6,0.42 1.42,3.2 3.32,1.95 -0.31,0.86 -0.01,2.7 1.4,1.48 3.08,-0.04 2.22,-4.19 4.35,-5.07 0.8,1.72 0.74,-0.65 2.16,-0.3 0.91,-0.43 0.22,-3.47 2.51,-2.52 2.14,-0.66 5.33,0.63 5.55,-2.64 1.54,-1.36 1.15,-4.48 3.81,-3.54 1.57,0.05 2.24,-1.12 0.99,-2.15 -1.14,-2.94 5.69,-1.67 3.23,-3.83 -1.6,-1.11 -0.01,-3.44 1.47,-3.61 -1.01,-0.84 -1.65,-2.84 0.52,-2.06 0.75,0.25 1.93,2.57 1.79,0.63 -0.57,-2.5 2.93,-4.77 1.26,-7.19 -1.2,-1.98 -2.64,-2.48 -4.48,-1.26 -2.08,-0.82 0.53,-3 -1.95,-3.68 1.6,-1.09 1.44,-3.36 -0.89,-3.47 -2.17,2.19 -2.9,-2.58 -5.24,-0.98 -1.45,-1.18 -2.23,0.2 -2.36,1.14 -1.72,-0.24 -2.79,0.8 -3.72,1.87 -0.74,-1.86 -1.9,-0.59 -2.28,0.4 -0.52,-2.16 -2.78,-4.05 -4.23,-1.53 -0.3,1.52 -1.03,1.38 -1.49,0.05 -2.13,0.67 -3.37,-3.95 -4.67,-1.3 0.12,2.86 -4.25,0.82 -5.13,-0.4 -0.84,1.48 -2.99,4.23 -4.08,1.09 -0.06,-2.97 -3.34,-1.73 -4.39,-4.01 z","department-07":"m 436.62,378.68 c -2.11,1.19 -5.05,1.82 -5.73,4.31 -0.61,0.74 -1.7,1.47 -0.63,2.83 -1.48,1.55 -5.39,0.21 -5.65,3.05 -0.4,2.17 -2.13,4.1 -1.51,6.11 -0.82,1.35 -2.2,-3.55 -3.34,-0.83 2.87,1.6 -1.37,1.64 -1.06,3.7 -0.07,1.01 2.58,2.11 0.3,2.78 -2.43,-0.04 -3.73,1.92 -2.22,3.92 -1.62,1.35 -4.39,-0.37 -4.36,2.53 -1.51,1.8 -1.89,5.12 -5.04,3.9 -1.64,0.68 -4.72,-0.35 -3.54,2.75 -1.69,0.44 -2.07,1.93 -3.57,0.7 -0.65,2.39 -1.67,4.38 -3.7,5.18 0.05,1.23 -0.23,2.66 0.56,3.58 -0.09,2.42 0.91,5.06 1.8,7.31 3.3,1.24 2.04,5.97 4.07,8.24 1.96,0.49 1.37,2.56 2.59,3.64 -1.74,0.94 0.2,3.57 -1,5.13 1.45,0.08 4.13,-2.2 4.71,0.49 2.27,-0.88 3.84,4.84 5.98,2.4 0.11,-2.69 3.06,-5.02 5.54,-4.01 -0.84,1.71 0.49,4.93 2.22,2.69 -1.12,-4.19 4.37,-2.87 5.2,-0.35 2.07,1.28 5.06,2.67 3.99,-1.18 -0.44,-2.49 0.5,-4.84 0.92,-7.23 2.57,-1.67 0.05,-4.72 1.41,-6.94 -1.34,-2.75 2.73,-3.36 2.63,-6.07 2.5,-3.08 -0.98,-6.81 0.47,-10.07 2,-1.59 2.83,-4.11 4.16,-6.22 -0.81,-2.28 2.55,-4.4 -0.11,-6.44 -1.37,-1.98 -0.41,-4.12 -0.17,-5.92 -1.82,-0.69 -0.96,-3.19 -2.25,-4.49 1.8,-2.26 -0.83,-5.08 0.05,-7.93 1.49,-3.08 -3.02,-4.17 -1.77,-7.12 l -0.36,-0.33 -0.59,-0.1 0,0 z","department-26":"m 448.07,380.12 c -2.89,1.17 -5.09,3.5 -8.19,2.69 -0.39,2.66 -1.05,6.79 0.49,9.42 -1.96,1.97 0.32,3.64 0.34,5.76 2.35,1.37 -0.99,4.81 1.33,6.93 2.06,2.38 -0.62,5.13 -0.81,7.77 -1.22,2.58 -4.32,4.41 -3.69,7.71 1.66,3.46 0.06,6.59 -1.3,9.7 -3.02,0.93 -0.83,4.24 -2.03,6.3 0.95,3.33 -2.55,6.12 -1.92,9.81 1.2,3.03 7.51,-0.99 7.1,4.18 0.14,2.04 0.67,4.67 2.58,1.79 2.97,-0.92 6.04,-2.27 9.06,-3.52 1.12,3.67 4.14,-0.81 5.13,-0.14 -0.85,1.68 -0.59,3.54 -0.5,5.19 1.36,1.14 3.35,1.14 4.16,-0.1 1.72,1.86 4.28,0.89 5.95,1.95 0.03,1.94 0.09,3.52 2.41,3.44 1.06,4.04 4.77,0.96 6.47,-0.43 -1.58,-2.47 1.9,-2.75 3,-1.1 1.64,-1.37 2.06,-2.86 1.41,-5.21 1.53,-2.36 -2.87,-0.24 -1.73,-2.96 -1.59,-0.67 -0.77,-1.18 -0.59,-2.32 -2.51,0.48 -4.35,-1.04 -6.35,-0.89 -1.23,-1.45 -2.87,-1.53 -2.12,-3.69 -1.62,-1.67 -0.01,-2.82 1.69,-1.61 2.12,-0.83 -1.87,-1.85 -0.65,-3.64 -0.28,-2.93 4.33,0.48 6.05,0.59 1.73,0.39 1.15,-2.66 3.01,-2.35 -1.71,-1.67 -3.84,-2.97 -1.6,-5.43 1.79,-1.45 -0.55,-5.71 2.99,-3.98 1.94,0.82 3.33,-0.86 4.9,-1.06 1.29,-0.88 2.08,-3.19 -0.35,-2.44 -2.24,0.57 -3.91,-2.09 -6.41,-1.58 -1.16,-1.43 -2.84,-3.52 -4.34,-3.81 0.14,1.78 -6.09,-0.53 -3.44,-2.33 -1.37,-2.79 0.85,-6.84 0.11,-10.1 0.96,-2.47 -1.42,-5.35 0.09,-7.37 -2.07,0.93 -4.59,4.84 -6.88,1.6 -1.84,0.62 -4.04,-0.31 -5.88,-1.61 -1.29,0.02 -2.1,2.02 -3.13,0.34 2.95,-1.62 2.73,-5.57 1.54,-8.29 2.1,-1.71 -0.25,-3.63 -2.12,-2.9 0.27,-1.74 0.99,-4.37 -1.59,-2.47 -1.31,0.06 -1.04,-2.86 -3.02,-2.37 -0.42,-0.45 -0.36,-1.52 -1.19,-1.46 z m -1.27,60.35 c 2.68,0.18 1.93,3.2 4.79,3.14 -1.88,1.51 -2.98,3.63 -4.06,5.91 -1.76,-1.35 -5.66,0.15 -4.33,-3.15 -1.66,-0.66 1.47,-2.81 1.37,-4.36 0.67,-0.62 1.73,-0.72 2.23,-1.54 z","department-84":"m 446.86,440.69 c -1.95,0.68 -2.59,2.23 -3.24,3.95 -1.54,1.08 0.24,1.84 -0.38,3.25 0.79,1.16 2.95,0.74 4.3,1.12 1.33,-1.76 1.41,-4.26 3.76,-4.92 -0.23,-0.92 -2.69,-0.73 -2.57,-2.42 -0.66,-0.27 -1.12,-0.97 -1.86,-0.99 z m -10.7,6.69 c -1.75,0.63 -4.36,-0.72 -3.75,2.23 -0.47,1.96 1.22,3.5 1.32,5.13 2.22,-0.26 1.8,3.29 1.6,4.89 -0.71,1.78 -0.16,4.41 1.97,3.57 1.39,1.79 2.8,3.83 3.94,5.76 0.11,1.52 -2.28,0.28 -1.54,2.26 -0.27,1.54 -4.74,2.54 -1.78,2.92 1.98,0.36 4.26,0.33 5.81,1.82 2.69,0.61 4.43,2.7 6.08,4.74 0.55,2.14 2.45,3.17 4.31,4.09 2.3,2.43 5.12,0.03 7.83,1.23 2.38,1.21 4.48,2.96 6.96,4.03 2.69,1.26 6.11,1.9 8.79,0.34 1.35,-1.61 3.7,-0.97 4.73,-3.09 0.97,-1.51 -1.94,-2.24 -1.96,-3.86 -1.56,-1.86 -3.42,-4.41 -6.24,-2.8 -2.07,0.95 -0.48,-2.95 0.61,-3.43 0.51,-1.33 1.55,-2.66 -0.1,-3.23 -0.29,-2.08 -4.3,-0.54 -3.06,-3.3 0.45,-2.01 1.86,-3.87 1.45,-6.01 -1.1,0.12 -2.63,0.07 -2.14,-1.74 0.53,-2.35 -2.66,-1.28 -2.71,-3.51 -1.05,-0.88 -3.35,-0.4 -2.48,-2.73 -0.01,-3.12 -4.03,-0.26 -5.3,-2.66 -1.51,-1.06 -0.98,1.74 -2.66,0.68 -2.01,-0.15 -3.06,-1.35 -2.27,-3.12 -1.69,-0.64 1.81,-3.73 -0.28,-2.95 -1.07,2.14 -3.56,1.91 -4.6,0.21 -2.41,0.78 -4.55,2.65 -7.11,2.79 -1.53,-0.33 -4,4.19 -3.94,0.55 -0.37,-2.16 -0.51,-5.06 -3.51,-4.81 z","department-13":"m 436.6,474.08 c -0.74,1.85 -4.74,2.73 -4.06,4.51 1.26,0.66 -1.41,1.72 -0.12,3.06 0.08,2.7 -2.74,5.11 -1.37,7.86 -2.28,-0.28 -6.4,-2.34 -7.04,1.21 -2.02,1.17 -2.34,4.33 0.25,4.07 -0.26,2.18 -2.99,1.15 -3.24,3.2 -2.53,0.88 -3.65,1.48 -5.33,3.13 -3.12,0.45 -3.32,4.69 0.25,3.69 2.78,0.47 5.55,1.05 8.35,0.35 2.37,-0.45 7.29,1.42 4.55,4.28 -0.6,3.55 5.03,2.05 7.33,2.58 1.71,0.43 5.71,0.01 2.7,-2.11 -3.88,-1.35 -2.85,-5.16 -3.05,-8.31 -0.04,-1.21 -2.55,-5.59 -0.42,-2.89 1.89,2.36 1,5.34 0.95,8.05 0.88,2.13 3.62,3.05 5.46,4.22 1.53,-0.81 -2.25,-2.45 0.5,-3.11 1.91,-1.46 4.03,-0.52 5.49,0.58 3.35,0.39 4.55,-4.15 1.3,-5.2 -0.68,-1.48 -0.16,-6.09 1.79,-3.06 2.23,-0.56 2.91,0.56 2.79,2.29 1.26,2.1 3.09,1.09 4.71,0.38 1.06,3.09 -3.48,5.94 -6.44,5.14 -4.78,-0.48 -3.49,6.19 0.68,5.18 2.9,-0.06 6.07,0.58 8.6,-1.26 3.09,-1.75 3.91,2.83 3.27,4.72 2.03,1.28 -2.35,4.61 1.58,4.55 2.59,-0.26 5.17,0.78 7.33,0.32 0.97,2.95 3.72,1.97 5.67,1.14 -0.33,-3.01 1.95,-4.41 4.07,-5.87 -0.58,-2.14 -2.28,-2.58 -3.96,-3.03 2.56,-1.22 -1.49,-6.49 2.6,-5.65 1.54,0.73 3.39,-0.95 1.08,-1.75 -1.32,-1.96 -3.23,-3.39 -1.84,-5.73 2.26,-2.81 -4.73,-2.76 -1.41,-4.42 -0.82,-3.37 2.37,-4.88 5.13,-5.19 1.46,-1.69 -2.03,-5.66 -3.21,-2.42 -1.87,0.81 -3.79,1.87 -5.79,2.74 -4.96,0.73 -9.29,-2.44 -13.26,-4.94 -3.21,-1.31 -6.53,0.84 -9.27,-1.96 -2.79,-0.81 -2.96,-3.66 -4.98,-5.35 -1.7,-2.34 -4.64,-3.03 -7.08,-4.31 -1.52,-0.14 -3,-0.57 -4.52,-0.71 z","department-83":"m 517.2,482.16 c -2.21,0.45 -4.51,0.15 -4.56,3.03 -1.71,2.89 -5.34,-0.75 -6.7,-2.47 -3.07,-2.54 -3.41,4.73 -6.6,3.29 -1.58,1.5 -2.96,3.5 -4.46,4.67 -1.25,-1.47 -1.71,-3.25 -3.55,-3.95 0.03,-1.86 -1.87,-1.86 -1.91,-0.09 -1.33,1.02 -2.66,0.95 -3.16,-0.75 -1.91,-1.9 -4.18,0.89 -2.09,2.04 0.53,1.23 1.97,1.94 0.53,3.38 -2.84,-0.21 -5.92,2 -4.84,5.1 -3.44,1.27 3.35,1.25 1.35,3.57 -0.22,1.94 -1.24,3.31 0.74,4.69 0.22,1.73 4.1,2.93 0.81,3.75 -2.63,-1.28 -3.72,1.11 -2.27,3.16 -1.33,1.63 -0.65,2.88 1.29,2.7 1.09,1.33 2.34,3.31 -0.22,3.83 -2.89,1.3 -2.33,4.54 -1.48,6.82 1.05,1.11 2.71,1.01 3.71,1.52 -0.45,1.28 3.17,1.21 0.61,2.02 -2.2,1.64 1.53,2.03 2.31,3.24 1.87,0.49 2.01,-2.69 4.02,-1.64 0.25,-1.17 -3.62,-2.32 -0.77,-2.94 1.5,-0.75 1.25,1.72 3.11,0.9 1.98,-0.44 2.88,1.82 4.97,0.72 2.49,0.17 1.79,3.18 -0.25,3.1 1.03,0.17 3.75,1.02 4.22,-0.22 -1.87,-1.01 -0.43,-5.47 2.18,-4.51 2.27,-1.02 4.3,0.74 5.47,2.2 2.95,0.7 -0.7,-3.95 2.56,-4.14 1.82,-1.17 4.32,-0.11 5.81,-1.82 1.19,-1.87 3.53,-0.69 3.91,0.87 1.83,-0.26 1.02,-2.97 3.25,-2.97 -1.94,-1.52 0.52,-2.56 0.71,-4.09 -0.88,-1.35 -6.14,0.84 -4.2,-1.29 1.98,-0.49 3.13,-1.3 3.41,-3.27 3.09,-0.38 1.58,-4.33 3.42,-5.76 2.02,1.51 4.49,0.53 6.29,-0.38 1.97,-1.45 2.07,-3.69 -0.21,-4.86 0.39,-1.48 -0.82,-2.76 0.73,-4.13 0.32,-1.33 0.43,-3.31 -1.68,-2.51 -2.08,-0.91 -4.86,-2.77 -4.6,-5.2 1.21,-2.45 -1.26,-3.59 -2.82,-4.44 -1.3,-0.4 -2.5,0.43 -2.84,-1.45 -0.36,-2.95 -3.06,-1.75 -4.46,-0.37 0.04,-0.84 -0.83,-2.43 -1.72,-1.38 z","department-06":"m 534.65,445.17 c -2.26,1.07 -5.06,2.58 -4.36,5.66 -3,-0.21 -3.04,3.43 -4.06,5.54 -1.08,2.46 0.95,4.86 2.25,6.92 -1.14,3.22 2.36,4.62 4.05,6.69 0.63,2.61 3.53,3.37 4.77,5.63 -2.57,2.29 -4.92,-3.17 -6.86,-0.03 -0.74,2.32 -3.13,1.4 -4.56,1.36 1.15,1.61 -2.67,2.88 0.34,3.69 1.19,1.89 -4.95,1.17 -2.32,3.78 0.53,1.35 2.49,-0.04 3.3,1.63 2.89,-0.16 1.89,3.58 2.03,5.2 1.45,1.97 3.65,3.89 6.12,3.69 1.22,2.02 -1.58,4.04 -0.48,6.02 -0.26,2.6 3.76,2.43 2.74,-0.52 1.75,-2.03 4.78,-1.82 7.05,-2.83 2.15,2.34 0.79,-2.94 1.42,-4.1 0.35,-2.64 3.85,-1.42 4.44,-3.92 1.43,-0.64 4.04,-1.22 4.41,0.38 0.69,-1.18 0.32,-2.51 2.45,-2.28 -0.13,-1.76 1.58,-4.07 3.07,-2.16 1.7,0.06 1.19,-2.66 3.34,-2.27 -0.27,-2.4 -3,-5.81 0.3,-7.3 1.54,-1.45 0.99,-4.2 3.51,-4.76 2.78,-1.39 1.89,-4.43 4.17,-6.12 1.59,-2.77 -3.27,-4.24 -1.5,-7.3 -1.21,-2.71 -2.61,1.55 -4.47,0.73 -2.22,0.84 -4.68,1.32 -6.76,2.38 -2.04,0.2 -3.62,-0.51 -4.81,-1.86 -2.43,0.52 -3.44,-1.96 -5.53,-2.49 -1.15,-2.34 -3.58,-0.83 -4.96,-2.82 -1.54,-1.59 -4.78,0.61 -4.95,-2.66 -1.4,-1.9 -2.37,-3.95 -3.93,-5.85 l -0.23,-0.02 -1.8e-4,10e-5 z","department-04":"m 536.03,425.47 c -1.91,1.96 -3.88,3.46 -6.49,4.44 -1.02,2.88 -4.75,3.12 -5.32,6.34 -1.11,1.83 -1.21,3.9 -4.02,3.07 -3.01,-0.06 -6.66,-0.3 -8.11,-3.08 -0.64,-1.8 -3.43,-1.98 -2.19,0.22 -0.26,3.25 -2.7,-0.14 -4.23,1.68 -1.44,0.61 2.06,5.8 -1.43,5.09 -2.1,-2.16 -2.71,-5.63 -6.09,-5.69 -0.87,3.33 -6.54,3.63 -7.12,7.81 -0.96,1.13 -2.01,2.66 -0.4,3.1 -0.61,1.4 0.72,5.52 -1.66,2.94 -0.44,-1.65 -2.49,-3.59 -2.83,-0.6 1.02,1.86 2.62,3.82 3.95,5.12 -2.91,0.83 -6.3,-2.29 -9.28,0.12 -0.78,0.38 -3.94,0.37 -2.37,1.8 0.52,0.59 -1.17,0.62 -1.27,-0.25 -1.21,-2.36 -3.58,-0.6 -2.43,1.22 -2.05,0.82 -5.12,3.55 -2.92,5.69 3.34,-0.23 0.15,4.71 -0.09,6.55 -0.21,2.32 3.26,0.85 3.55,3.17 2.24,1.52 -3.59,5.18 -1.33,6.48 2.81,-2.13 5.06,0.73 6.7,2.59 0.57,1.46 2.26,4.38 3.61,1.7 2.13,0.13 4.41,4.24 5.38,0.42 1.94,-1.62 1.55,2.48 3.59,2.29 0.43,1.7 2.31,4.04 2.93,1.23 2.03,-0.76 2.24,-3.96 4.52,-2.9 1.73,-1.32 3.93,-6.5 5.92,-2.58 1.76,2.61 6.67,4.01 6.46,-0.53 1.66,-0.48 3.88,-1.21 5.41,-0.9 0.99,2.9 3.19,-2.27 4.59,0.48 1.62,-0.3 5.25,-1.56 1.66,-2.44 0.5,-1.52 2.15,-2.44 0.07,-3.65 2.45,0.82 5.17,0.99 6.43,-1.88 1.98,-0.91 4.27,3.34 5.6,0.53 -2.39,-1.94 -3.94,-3.66 -5.54,-6.13 -1.97,-1.55 -3.7,-3.16 -3.01,-5.85 -1.63,-2.1 -3.46,-4.86 -1.89,-7.35 0.29,-2.57 2.02,-4.78 3.68,-5.75 -0.2,-4 5.64,-3.6 4.5,-7.78 -0.28,-2.01 3.78,-1.57 1.15,-3.33 -2.21,-1.59 -4,-5.51 -0.76,-7.08 1.56,-1.02 4.77,-6.03 1.11,-6.32 z","department-05":"m 505.98,394.66 c -0.92,0.25 -1.63,1.24 -1.1,2.16 0.19,0.48 0.58,1.51 -0.28,1.51 -1.03,0.5 -0.62,1.96 -1.08,2.79 -0.5,0.85 0.81,1.35 1.44,1.52 1.22,0.46 2.5,-0.16 3.7,-0.25 0.54,0.61 -0.39,1.36 0.2,1.99 0.46,0.55 -0.24,1.49 0.61,1.76 1.28,0.11 1.04,1.22 0.99,2.19 0.04,1.33 -0.36,2.63 -0.12,3.94 -0.53,0.79 -1.69,0.39 -2,-0.4 -0.51,-1.19 -2.09,-0.47 -2.63,0.32 -1,0.97 -2.33,-0.4 -3.46,0.21 -0.85,0.38 -1.73,-1.03 -2.42,-0.12 -0.98,1 -2.08,1.88 -3.19,2.74 -0.6,-0.52 -1.36,-2.29 -1.99,-0.92 -0.19,0.45 -0.47,0.63 -0.95,0.63 -0.5,0.26 -1.64,0.37 -1.59,1.05 0.28,0.44 1.46,0.83 1.02,1.47 -0.54,0.3 -1.13,0.65 -1.29,1.26 -0.7,-0.05 -1.3,0.89 -1.97,0.42 -0.72,-0.21 -1.09,0.98 -1.85,0.43 -0.58,0.09 -1.28,-0.82 -1.74,-0.36 0.25,1.1 -0.94,2.04 -0.76,3.1 0.52,0.18 0.81,0.66 0.78,1.23 -0.53,0.61 -1.46,0.99 -1.58,1.94 -0.18,0.9 -1.25,0.06 -1.79,0.32 -0.68,0.37 -1.24,1.41 -2.12,0.79 -0.93,-0.21 -2.04,-0.85 -2.95,-0.39 -0.57,0.89 0.83,2.18 -0.26,2.82 -0.65,0.74 -0.7,1.84 -1.37,2.59 -0.33,0.63 -0.72,1.79 0.31,1.98 1.01,0.26 1.61,1.36 2.24,2.13 -0.07,0.59 -1.06,0.18 -1.47,0.37 -0.6,0.27 -0.26,1.22 -0.74,1.67 -0.29,0.65 -1.01,0.59 -1.49,0.18 -0.57,-0.34 -1.27,-0.05 -1.74,-0.61 -0.9,-0.62 -2,-0.67 -3.03,-0.83 -0.44,-0.35 -1.26,-0.9 -0.84,0.18 0.34,0.85 -0.18,1.94 0.35,2.71 0.46,0.27 1.64,0.66 1.06,1.38 -0.5,0.81 -1.41,0.3 -2.05,-0.05 -0.52,-0.37 -1.25,0.09 -0.87,0.7 0.33,0.77 0.86,1.66 0.62,2.5 -0.66,0.38 0.12,0.97 0.62,0.79 0.61,0.08 0.48,1.09 1.17,1.15 0.27,0.47 0.79,0.78 1.25,0.32 0.66,-0.57 1.26,0.29 1.64,0.72 1.26,0.36 2.77,-0.21 3.93,0.31 -0.15,0.66 -1.33,1.39 -0.16,1.75 0.4,0.17 0.78,0.55 0.44,0.97 -0.13,0.75 0.67,1.6 1.38,1.06 0.44,-0.36 1.29,0.39 0.73,0.76 -0.45,0.57 -0.47,1.41 -0.01,1.94 -0.06,0.96 -0.14,2.01 0.32,2.89 0.74,-0.36 1.48,-0.84 2.32,-1.03 0.89,-0.54 2.04,-0.3 3.03,-0.47 1.36,0.7 2.9,1.36 4.48,1.28 0.82,-0.57 -0.52,-1.06 -0.97,-1.25 -0.83,-0.92 -1,-2.37 -2.18,-3.02 -0.89,-0.61 -0.47,-1.72 -0.01,-2.44 0.2,-0.82 1.38,-0.21 1.78,0.12 0.44,0.5 0.07,1.39 0.76,1.79 0.27,0.34 1.29,1.11 1.39,0.28 -0.46,-0.7 -0.4,-1.72 0.04,-2.4 0.24,-0.63 -0.28,-0.96 -0.8,-0.99 -0.4,-0.58 -0.19,-1.66 0.53,-1.93 1.11,-0.98 1.03,-2.64 1.93,-3.7 0.84,-0.83 2.18,-1.02 2.91,-1.96 0.3,-0.69 1.08,-1.23 1.8,-1.37 0.77,0.34 0.76,-0.99 0.72,-1.47 0.2,-0.8 1.42,-0.33 1.96,-0.19 0.77,0.29 1.87,0.6 1.76,1.64 -0.03,0.5 0.41,0.7 0.8,0.64 0.65,1.23 1.63,2.21 2.33,3.38 0.67,0.53 1.08,-0.73 1.28,-1.18 0.53,-1.39 -0.98,-2.61 -0.83,-3.89 0.95,-0.06 1.68,-0.79 2.53,-1.06 0.55,0.33 1.53,1.41 2.02,0.36 0.44,-0.73 0.48,-1.61 -0.08,-2.27 0.17,-0.42 0.83,-0.77 1.24,-0.86 0.91,1 1.94,1.96 2.46,3.23 0.51,0.3 1.22,-0.11 1.7,0.41 0.56,0.61 1.25,1.09 2.14,1 1.98,0.14 3.96,0.2 5.94,0.29 0.53,-0.84 0.08,-2.27 1.05,-2.94 1.09,-0.75 1.13,-2.18 1.48,-3.28 1.39,0.19 2.51,-0.88 3.23,-1.94 0.77,-0.23 0.49,-1.3 1.27,-1.53 0.82,-0.72 1.93,-0.86 2.92,-1.25 0.49,-0.42 0.51,-1.23 1.32,-1.26 0.83,-0.36 1.14,-1.4 1.93,-1.78 0.77,0.27 1.79,0.29 2.08,-0.66 0.66,-1.38 2.4,-1.81 3.71,-1.06 0.39,0.18 1.29,0.5 1.12,-0.27 0.09,-1.44 -0.99,-2.46 -1.92,-3.38 -0.16,-1.25 0.2,-2.81 -0.7,-3.82 0.26,-0.63 1.23,-1.27 0.5,-1.95 -0.48,-0.56 -0.7,-1.27 -1.5,-1.47 -0.9,-0.29 -1.99,-1.36 -2.93,-0.65 -1.03,0.93 -2.61,0.14 -3.63,-0.46 -1.39,-1.22 -3.06,-2.05 -4.52,-3.16 -0.14,-0.64 0.04,-1.36 -0.18,-2.01 0.26,-0.67 0.64,-1.39 0.32,-2.14 -0.46,-0.77 -0.27,-1.65 -0.34,-2.48 -0.67,-1.47 -2.82,-0.12 -3.68,-1.29 -0.42,-1.05 0.19,-2.49 -0.93,-3.24 -0.45,-0.58 -0.89,-1.29 -0.84,-2.02 -0.58,-0.55 -1.68,-0.52 -2.38,-0.21 -0.4,0.9 -1.61,1.62 -2.44,0.8 -0.83,-0.16 -1.61,0.86 -1.3,1.66 0.16,0.65 0.15,1.68 -0.74,1.69 -0.9,0.39 -1.54,-0.53 -2.43,-0.47 -0.85,-0.07 -1.72,-0.21 -2.49,-0.62 0.67,-1.13 -0.23,-2.74 -1.37,-3.11 -0.83,0.45 -1.99,0.92 -2.79,0.12 -0.24,-0.12 -0.29,-0.52 -0.63,-0.43 z","department-38":"m 464.21,344.5 c -2.79,1.9 -2.68,8.48 -7.27,6.99 -0.9,-2.78 -3.83,-2.24 -5.03,-0.76 -2.02,0.29 1.51,1.68 1.08,3.08 2.47,0.08 3.5,3.16 0.44,2.72 -1.73,1.6 -3.23,3.88 -3.85,5.57 -1.57,-1.3 -1.06,1.72 -2.92,0.29 -3.28,-0.47 -4.55,3.17 -7.48,1.48 -1.5,1.31 5.74,3.47 2.07,5.5 -2.26,2.06 -5.1,3.74 -4.23,6.93 0.77,2.57 -0.06,8.04 4.48,6.03 2.27,2 6.34,-5.1 8.45,-0.76 1.77,0.21 1.71,3.96 3.93,1.45 1.68,0.13 -1.09,4.61 1.72,3.03 1.9,0.92 2.02,2.4 0.5,3.24 1.61,2.88 0.73,6.17 -0.85,8.65 1.08,-0.16 3.1,-1.79 4.37,0.45 2.36,0.7 4.24,0.15 6.23,1.33 0.84,-0.27 3.02,-1.03 3.81,-2.77 2.64,0.63 -1.49,2.67 0.72,4.47 0.38,3.59 -0.09,7.56 -0.56,11.3 0.4,1.45 0.41,2.4 -0.01,3.62 1.24,0.79 4,2.16 3.74,0.13 2.61,1.83 4.3,5.05 7.54,4.72 2.17,2.94 5.3,0.26 5.21,-2.58 1.66,1.44 8.14,-0.42 5.75,-2.57 -0.07,-1 2.61,-2.26 3.54,-2.4 2.26,2.99 3.89,-3.83 6.67,-1.32 2.19,0.23 3.45,-0.22 5.31,-1.27 0.97,1.39 3.24,2.32 2.54,-0.45 1.1,-3.23 -1.77,-5.43 -1.86,-8.01 -3.37,1.84 -6.82,-1.82 -3.61,-4.41 -0.13,-1.84 0.52,-3.31 1.32,-4.86 -1.82,-0.13 -3.26,-1.51 -5.13,-0.74 1.43,-2.69 -1.8,-4.98 -0.71,-7.76 -0.38,-2.56 4.12,-3.93 2.03,-6.04 0.5,-3.14 -3.24,-5.89 -6.15,-5.13 -1.66,-1.14 -3.77,-5.23 -5.46,-1.87 -0.31,1.87 -0.63,3.21 -0.4,4.62 -2.15,1.23 -4.77,-3.87 -7.68,-2.52 -0.95,-2.94 -2.79,-6.19 -4.33,-9.02 -1.66,-2.41 -2.31,-5.84 -4.73,-7.23 -0.04,-3.77 -5.4,-5.53 -5.81,-9.3 0.88,-1.39 -2.2,-3.36 -3.39,-3.83 z","department-73":"m 486.16,340.96 c -0.45,0.45 0.31,1.19 0.03,1.77 -0.43,2.29 -1.49,4.41 -1.88,6.69 -0.26,1.38 -0.01,2.88 -0.3,4.22 -0.62,0.31 0.02,1.17 -0.58,1.57 -0.45,1.17 -1.58,0.73 -2.55,0.64 -0.84,0.07 0.16,1.14 -0.18,1.7 -0.39,0.69 -1.23,1.27 -0.9,2.19 0.16,0.81 -0.73,0.85 -1.28,0.92 -0.46,0.22 -0.52,0.84 -0.99,1.02 -0.1,0.57 -0.89,1.04 -0.26,1.63 0.76,1.32 2.36,2.45 2.11,4.11 0.23,0.33 0.74,0.34 0.74,0.83 0.84,0.69 0.84,1.99 1.51,2.8 0.86,0.69 -0.26,2.79 1.33,2.79 0.69,-0.42 1.75,-0.43 2.21,0.36 0.86,0.8 2.15,0.9 3.12,1.6 0.57,0.15 0.69,0.71 1.06,1.03 0.59,0.02 1.32,-1.15 0.42,-1.31 -0.57,-0.83 0.26,-1.71 0.62,-2.42 0.32,-0.63 -0.18,-1.37 -0.02,-1.93 0.76,-0.47 1.65,-0.69 2.47,-1.04 0.43,0.56 1.01,1.07 1.58,1.38 0.13,0.76 0.39,1.57 1.25,1.79 0.96,0.51 2.24,-0.49 3,0.51 0.5,0.17 1.21,-0.47 1.46,0.31 0.64,1.59 2.48,2.51 2.66,4.29 -0.29,0.15 -0.79,0.54 -0.21,0.73 0.85,0.23 0.12,1.35 0.11,1.91 -0.05,0.98 -1.42,0.76 -1.63,1.63 -0.67,0.52 -0.97,1.32 -0.71,2.16 0.28,0.8 -0.51,1.41 -0.41,2.16 0.41,0.87 0.74,1.73 1.41,2.45 0.62,1.01 -0.59,1.95 -0.5,2.93 0.52,0.56 1.11,-0.22 1.49,-0.5 0.92,-0.1 1.37,0.91 2.13,1.15 0.63,-0.3 1.62,-0.2 1.66,0.68 -0.1,1.41 1.8,2.18 2.81,1.25 0.65,-0.79 1.23,0.33 1.67,0.84 0.46,0.64 0.68,1.43 0.45,2.15 0.54,0.74 1.75,0.36 2.53,0.62 0.86,0.16 1.92,1 2.66,0.13 0.38,-0.92 -0.65,-2.23 0.57,-2.71 0.35,-0.45 0.85,-0.56 1.27,-0.15 0.94,0.49 1.73,-0.4 2.13,-1.14 0.91,-0.24 1.86,0.12 2.72,0.29 0.81,-0.21 1.62,-0.66 2.1,-1.32 0.99,-0.68 2.46,0.1 3.22,-1.02 0.35,-0.43 0.97,-0.89 1.45,-0.3 0.85,0.52 2.11,0.47 2.52,1.51 0.72,0.63 1.87,0.09 2.61,-0.25 0.41,-0.56 -0.74,-1.63 0.24,-1.82 0.89,-0.31 2.18,-0.09 2.35,-1.31 0.28,-0.94 0.93,-1.7 1.94,-1.85 1,-0.19 1.96,-0.56 2.92,-0.94 0.28,0.29 0.54,1.02 1.07,0.58 0.47,-0.87 0.96,-2.03 2.06,-2.12 0.86,-0.78 0.12,-2.12 -0.06,-3.06 -0.11,-0.72 -1,-1.93 0.07,-2.33 0.68,-0.07 0.41,-0.73 0.59,-1.12 0.98,-0.99 1.63,-2.36 1.9,-3.7 -0.59,-0.97 -1.87,-1.22 -2.71,-1.86 -0.94,-0.95 -0.87,-3.04 -2.54,-3.15 -0.56,-0.01 -0.92,-0.42 -0.89,-0.96 -0.58,-0.7 -1.85,-0.56 -2.18,-1.57 -0.64,-1.44 -0.23,-3.2 -1.06,-4.6 -0.34,-1.1 0.49,-2.08 0.76,-3.02 -0.69,-0.83 -1.62,-1.51 -2.76,-1.31 -0.88,0.14 -0.91,-0.82 -1.25,-1.33 -0.99,-0.62 -2.63,-0.33 -3.11,-1.66 -0.83,-0.95 -1.39,-2.07 -1.33,-3.37 -0.05,-0.49 -0.09,-1.83 -0.91,-1.34 -0.91,0.06 -1.72,0.7 -1.99,1.6 -0.42,0.52 -0.86,1.4 -1.45,1.52 -0.4,-0.17 -1.27,-0.31 -0.7,-0.87 0.23,-0.66 -0.51,-1.2 -0.28,-1.88 -0.34,-0.89 -0.91,-2.04 -1.95,-2.2 -0.89,-0.13 -2.19,0.76 -2.83,-0.15 -0.09,-0.52 -0.37,-0.96 -0.88,-1.06 -0.72,-0.81 -1.07,-2.03 -1.15,-3.07 0.63,0.06 1.62,-0.31 1.26,-1.11 -0.35,-1.05 -1.53,-1.04 -2.36,-1.47 -0.67,-0.01 -0.86,0.94 -1.52,1.08 -0.85,0.88 -1.48,2.09 -1.51,3.29 -0.72,0.95 -0.91,2.24 -1.97,2.95 -0.76,0.61 -1.69,1.28 -1.54,2.39 -0.21,0.67 -0.99,1.04 -1.01,1.82 -0.44,0.97 -0.54,2.37 -1.86,2.41 -1.14,0.38 -2.33,0.53 -3.53,0.54 -0.06,-0.45 0.01,-1.66 -0.76,-1.32 -0.31,0.13 -0.76,0.69 -1.03,0.56 -0.25,-0.91 0.24,-2.16 -0.62,-2.79 -0.14,-0.81 -1.14,-1.57 -1.94,-1.34 -0.21,0.5 -0.78,0.26 -1.03,-0.06 -0.76,0.04 -0.24,1.32 -0.76,1.53 -0.34,-0.65 -1.25,-0.37 -1.8,-0.73 -0.47,-0.07 -0.73,0.7 -1.2,0.25 -0.48,-0.36 -1.21,-0.4 -1.7,-0.51 0.01,-0.61 -0.44,-1.04 -0.93,-1.29 0.04,-0.57 0.55,-1.77 -0.49,-1.68 -0.47,-0.1 -0.19,-0.97 -0.81,-1.05 -0.66,-0.37 -1.22,0.91 -1.76,0.14 -0.38,-0.36 -0.12,-1.3 -0.92,-1.18 -1.02,-0.5 -0.45,-1.96 -0.7,-2.86 -0.23,-1.29 -0.31,-2.65 -0.65,-3.91 -0.34,-0.35 -0.97,-0.38 -1.43,-0.38 z", +"department-74":"m 522.73,306.41 c -1.97,0.51 -4.09,-0.11 -6.02,0.54 -1.69,0.88 -2.87,2.78 -4.92,2.88 -1.61,0.19 -3.71,0.06 -4.62,1.7 -1.07,1.16 -2.72,2.21 -2.73,3.97 0.1,0.69 1.48,0.71 0.93,1.55 -0.41,0.84 0.21,1.93 0.9,2.4 0.42,0.09 0.95,-0.58 1.26,0.01 0.37,0.53 0.48,1.32 -0.23,1.62 -1.53,1.19 -3.48,2.08 -4.62,3.7 0.15,0.96 -1.06,1.44 -1.7,1.89 -0.92,0.54 -2.12,0.67 -2.99,-0.02 -0.94,-0.11 -1.74,0.7 -2.72,0.57 -1.73,-0.1 -3.26,0.92 -4.93,1 -0.77,0.2 -1.52,0.85 -1.16,1.71 0.19,0.63 -0.32,1.15 -0.97,1 -0.99,0.19 -1.36,-0.93 -2.04,-1.36 -0.25,0.5 -0.16,1.27 -0.57,1.8 -0.32,1.76 -0.11,3.58 -0.18,5.37 -0.05,1.02 1.4,1.33 1.1,2.4 -0.08,0.89 -0.37,2.18 0.97,1.91 0.75,0.22 0.29,1.37 0.52,1.94 0.31,1.44 0.48,2.91 0.5,4.37 0.07,0.67 0.88,0.58 1.19,0.96 -0.06,0.61 0.65,1.43 1.18,0.8 0.34,-0.42 1.1,-0.12 1.48,0.06 -0.19,0.54 0.13,1.08 0.73,0.94 0.45,0.32 -0.03,1.12 0.02,1.58 0.26,0.43 0.87,0.53 0.99,1.06 0.58,0.39 1.43,1.09 2.13,0.73 0.22,-0.52 0.78,-0.22 1.09,0 0.59,0.21 1.53,0.05 1.32,-0.78 -0.01,-0.66 0.68,-0.27 0.9,0.03 0.57,0.28 0.97,-0.69 1.55,-0.21 0.84,0.25 1.11,1.08 1.58,1.67 0.61,0.22 0.16,1.19 0.32,1.69 -0.08,0.68 0.71,0.6 0.85,0.07 0.5,-0.09 1,0.52 0.86,1.04 0.4,0.69 1.5,0.24 2.16,0.27 0.76,-0.24 1.79,-0.22 2.32,-0.85 0.55,-0.82 0.59,-1.89 1.06,-2.69 0.59,-0.47 1.08,-1.17 0.58,-1.84 1.1,-1.12 2.6,-2.01 3.15,-3.59 0.44,-0.46 0.57,-1.04 0.46,-1.64 0.43,-1.24 1.14,-2.4 2.27,-3.1 0.24,-0.19 0.68,-1.23 1.02,-0.66 0.87,0.56 2.4,0.81 2.5,2.07 0.05,0.67 -0.39,0.98 -1.01,0.85 -0.65,0.38 0.05,1.31 0.13,1.86 0.25,0.92 1.4,1.05 1.58,2.03 0.48,0.87 1.65,0.01 2.41,0.12 0.73,-0.31 1.18,0.28 1.5,0.85 0.45,0.56 1.16,1.11 0.82,1.91 -0.09,0.58 0.7,0.95 0.24,1.52 -0.21,0.76 0.9,0.79 1.18,0.23 0.84,-0.71 0.9,-2.01 2.02,-2.43 1.02,-0.06 1.62,-1 1.61,-1.96 -0.09,-1.02 0.58,-2.66 1.85,-2.26 0.39,0.29 1.11,0.3 0.98,-0.35 0.01,-0.41 0.22,-0.99 0.72,-0.64 1.66,0.72 3.32,-0.42 4.67,-1.3 1.07,-1.02 1.17,-2.69 2.2,-3.72 0.24,-1.07 0.13,-2.38 -0.92,-2.98 -0.31,-0.29 0.4,-0.66 0.03,-1.04 -1.08,-1.72 -2.7,-3.09 -3.82,-4.78 -0.93,-0.47 -1.81,1.29 -2.7,0.56 -0.35,-0.84 0.72,-1.72 0.05,-2.53 0.03,-0.72 1.46,-1.61 0.49,-2.23 -0.76,-0.34 -1.61,-0.31 -2.36,-0.72 -0.84,-0.04 -2.06,-0.19 -2.06,-1.31 0.09,-1.22 0.81,-2.32 0.63,-3.59 0.03,-1.74 2.08,-2.69 2.14,-4.38 -0.61,-2.1 -2.81,-3.32 -3.41,-5.34 0.58,-0.82 1.83,-1.33 1.69,-2.56 0.1,-0.89 0.32,-2.26 -0.88,-2.5 -2.33,-0.82 -4.77,-1.84 -7.27,-1.85 z","department-71":"m 412,260.36 c -2.93,0.55 -4.26,2.21 -6.96,2.68 -1.28,2.48 2.3,4.5 -0.5,6.99 -1.43,0.66 -3.07,3.09 -0.49,1.44 1.9,1.91 -1.31,5.49 2.35,6.61 2.41,2.48 -3.47,2.49 -1.06,5.02 0.77,3.39 -3.9,1.03 -5.18,3.67 -2.25,1.4 -4.63,2.62 -7.04,3.38 -0.31,-4.58 -4.86,-2.18 -7.6,-2.64 0.33,3.18 3.53,4.95 4.3,8.11 0.37,1.27 1.28,3.31 0.8,5.05 2.56,1.6 5.5,0.03 6.06,3.56 2.3,-0.67 6.83,0.19 5.63,3.81 -1.65,2.24 1.1,6.27 -0.41,7.48 -1.83,-0.26 -2.1,1.92 -4,2.06 1.17,2.28 -1.61,6.17 2.72,5.49 0.93,1.98 2.84,2.96 4.81,1.08 2.24,-1.83 4.53,2.66 6.18,-0.34 0.99,0.81 3.97,-0.12 2.52,2.07 1.82,0.5 3.17,-1.98 5.29,-1.84 0.91,-1.94 0.34,-5.84 2.53,-7.3 2.38,-0.25 4.64,4.02 6.14,0.44 0.69,1.02 2.58,2.86 3.18,0.21 1.5,-2.57 5.41,0.79 2.63,2.19 4.35,0.26 -0.17,5.73 3.79,5.35 1.63,-2.32 1.8,-5.62 3.02,-8.28 1.07,-3.54 2,-7.12 3.47,-10.47 -0.24,-4.22 3.76,-4.44 6.12,-2.01 2.73,0.91 5.4,-3.24 7.43,-0.63 0.71,4.46 5.42,3.07 8.23,1.96 3.48,-0.33 -0.18,-2.98 -1.2,-3.64 -0.19,-2.06 -0.14,-4 2.12,-4.12 -1.13,-2.06 2.54,-2.7 0.55,-4.54 0.27,-1.18 -1.25,-2.07 -0.87,-3.37 -1.29,-1.52 -2.14,-2.53 -0.54,-4.28 -1.91,-0.7 -4.07,-3.41 -0.68,-3.56 1.47,-0.64 5.77,0.15 2.85,-1.99 -1.77,-0.79 -1.54,-3.02 -3.84,-2.16 -2.27,0.63 -1.51,-5.03 -4.1,-2.86 0.12,-2.06 -1.07,-4.73 -3.5,-2.61 -2.78,0.86 -4.3,2.07 -6.4,-0.46 -1.94,0.4 -2.39,2.11 -4.89,0.86 -2.61,0.33 -5.24,2.44 -8.14,3.19 -1.76,-0.3 -4.71,2.29 -4.23,-1.06 -3.18,-0.15 -5.08,-3.48 -5.63,-5.52 -2.23,0.19 -4.16,-1.65 -6.41,-2.36 0.94,-2.91 -1.62,-1.37 -2.5,-0.96 0.79,-4 -4.82,-1.4 -5.2,-5.1 -0.71,0.24 -0.8,-0.59 -1.34,-0.6 z","department-03":"m 355.26,283.59 c -2.47,0.46 -4.86,3.44 -6.02,4.72 -1.76,-0.99 -3.8,2.31 -4.59,-0.78 -1.76,0.08 -2.97,3.69 -5.04,3.94 1.97,2.84 -4.43,0.31 -1.55,2.39 0.4,1.42 -1.37,2.94 0.6,3.99 1.55,3.09 -3.65,5.08 -5.37,3.61 -2.24,1.35 -6.48,-0.24 -7.16,3.06 -1.54,1.23 -3.6,4.68 -1.43,6.74 2.23,0.25 1.54,1.18 0.45,2.24 0.46,1.75 3.06,2.36 3.77,1.35 1.79,0.78 0.58,3.48 2.71,2.33 2.32,1.7 3.03,4.85 4.13,7.52 1.59,1.1 1.36,3.94 4.21,3.81 2.2,-0.4 1.29,-4.32 4.06,-4.34 -0.38,-2.36 1.13,-2.81 2.64,-1.17 2.87,2.05 0.78,-4.7 4.25,-3.15 2.6,-0.56 4.31,1.53 2.01,3.27 -0.51,2.53 2.71,1.85 2.18,4.56 1.6,1.64 4.19,2.18 6.12,1.98 0.53,3.71 5.09,1.32 7.41,2.58 2.46,-0.35 4.25,2.07 6.4,-0.15 2.05,-0.87 3.81,1.48 3.14,3.62 2.97,-0.38 6.89,-1.86 7.42,2.51 1.3,0.31 3.13,3.55 3.29,0.55 1.79,-0.98 4.46,0.16 5.67,-2.24 -1.33,-3.25 -0.2,-6.45 -1.49,-9.65 1.17,-1.65 -1.28,-4.71 -0.7,-6.42 1.4,-0.12 2.34,-1.59 4.2,-1.58 1.27,-1.45 2.99,-2.22 4.25,-3.49 2.82,-0.46 -0.34,-5.16 1.28,-7.19 1.51,-3 -3.08,-4.88 -5.16,-3.65 -1.18,-1.3 -1.26,-3.58 -3.47,-2.38 -1.93,-1.04 -3.95,-1.45 -2.9,-4.14 -1.14,-2.8 -2.34,-5.73 -4.5,-8.23 0.48,-2.03 -3.61,-4.95 -2.1,-1.56 -0.34,1.45 -3.05,0.68 -1.66,2.91 -1.17,0.41 -2.72,0.17 -3.32,2.29 -3.21,0.75 -0.8,-5.19 -4.58,-3.84 -1.04,2.99 -3.56,1.08 -4.7,-0.26 -2.1,1.25 -4.73,3.83 -6.34,0.2 -2.17,-1.67 -4.84,-2.89 -5.84,-5.6 -0.73,-0.27 -1.51,-0.18 -2.26,-0.35 z","department-58":"m 361.05,231.75 c -1.61,0.98 -3.32,2.58 -5.23,1.22 -1.54,0.66 -5.16,0.31 -5.72,1.84 1.58,2.33 4.2,5.39 3.03,8.27 -0.46,2.34 -4.01,5.74 -0.25,7.04 1.92,1.64 3.66,3.16 3.28,5.91 2.2,3.19 1.4,7.61 2.45,10.69 2.84,1.44 0.59,4.96 1.6,7.25 -1.99,2.66 1.02,5.99 -1.24,8.7 -1.75,2.29 0.81,5.12 3.16,5.53 1.64,1.06 3.28,4.95 5.39,2.27 1.52,-1.93 3.16,-1.38 4.16,0.57 1.96,0.7 3.24,-3.41 4.93,-1.11 0.68,1.01 0.94,1.95 1.13,3.28 1.84,0.37 2.58,-2.94 4.39,-2.04 -0.61,-1.82 -0.49,-2.4 1.36,-2.38 -0.2,-1.17 -0.22,-3.61 1.45,-1.97 2.29,2.03 7.01,-1.91 8.02,2.31 1.41,2.29 3.54,-1.84 5.75,-1.47 1.68,-2.02 4.85,-2.71 6.51,-3.23 -0.22,-2.14 -1.12,-3.85 1.59,-4.65 -0.2,-2.28 -4.24,-3.86 -1.97,-6.79 0.18,-2.41 -4.07,0.3 -1.77,-2.02 2.77,-1.18 2.72,-4.62 1.41,-6.48 -0.21,-2.71 3.29,-1.57 3.61,-3.64 2.41,0.12 4.36,-0.55 4.66,-3.1 0.33,-2.07 -2.28,-4.7 -4.14,-3.18 -2.16,-1.91 1.5,-6.7 -2.23,-6.47 -2.06,-0.11 -3.88,3.63 -5.15,0.03 -0.32,-1.35 -0.05,-4.35 -2.03,-2.79 -1.29,0.05 -2.91,2.04 -2.96,-0.58 1.08,-0.8 1.65,-3.07 -0.35,-2.77 -1.09,1.35 -0.9,4.62 -3.13,2.61 -0.88,-1.42 -3.65,0.48 -4.06,-2.21 -1.01,-1.24 -3.05,-2.54 -4.54,-2.45 -1.62,0.35 -0.42,-3.16 -2.49,-3.09 -1.47,-0.17 -1.9,-4.94 -2.3,-1.85 0.35,2 -0.34,3.67 -2.39,2.1 -2.63,-1.51 -3.86,4.14 -5.82,1.03 -1.87,-1.04 -4.17,1.13 -5,-2 -2.26,0.34 -4.45,-1.48 -4.25,-4 -0.17,-0.32 -0.55,-0.4 -0.88,-0.38 z","department-89":"m 374.12,178.1 c -1.36,2.82 -5.36,0.91 -7.76,1.83 -2.91,0.12 -7.22,-0.23 -8.27,2.98 0.14,3.17 1.58,6.21 -2.22,8.02 -3.13,1.63 -1.03,2.94 1.17,4.04 2.28,2.02 1.91,5.48 4.92,6.98 0.09,2.23 1.57,5.13 -1.56,6.65 -2.34,1.36 -4.04,3.95 -2.14,6.31 -0.68,1.5 0.04,4.08 -2.76,4.29 -2.25,0.39 -7.34,0.64 -4.79,4.05 2.45,0.93 4.06,4.45 3.33,7.05 1.14,3.61 5.07,3.17 7.39,1.37 1.4,1.71 1.46,5.08 4.64,4.36 1.07,1.7 2.94,2.2 4.19,1.56 2.83,2.78 4.94,-2.42 8.04,-0.36 2.24,0.32 0.05,-5.91 2.11,-2.26 1.33,1.79 2.94,3.05 3.85,4.95 3.33,-1.09 4.42,4.4 7.1,3.73 1.63,0.4 3.4,2.47 3.61,-0.47 1.06,-2.78 3.75,-0.39 1.71,1.41 -0.27,3 5.9,-2.28 4.47,2.93 0.46,3.12 3.19,1.32 4.4,0.59 4.42,-0.6 -2.45,-5.06 1.49,-6.94 2.21,-1.57 -0.41,-5.47 2.78,-6.83 1.14,-2.73 3.9,-5.69 3.26,-8.58 1.88,-0.52 1.26,-1.92 0.64,-3.48 1.6,-1.09 4.66,-1.22 3.88,-4.34 0.07,-2.34 -0.26,-3.73 -2.7,-3.42 -3.53,-2.05 4.19,-4.69 -0.03,-5.12 -1.97,-0.1 -2.62,-5.1 -3.28,-1.27 -2.05,-2.67 -2.92,2.59 -5.45,0.23 -2.35,0.79 -5.27,0.01 -8.15,0.79 0.15,-1.59 0.88,-6.21 -1.65,-3.46 -2.36,-1.38 1.3,-2.55 -1.24,-3.58 -0.94,-2.75 -2.25,-5.79 -4.33,-7.09 0.87,-2.25 -1.27,-2.36 -1.7,-0.43 -3.07,1.65 -2.16,-4.29 -5.46,-2.45 0.07,-1.1 1.54,-2.74 1.12,-4.43 -0.2,-2.34 -3.48,-5.41 -5.2,-7.74 -2.07,-0.04 -3.97,0.46 -4.78,-1.75 -0.22,-0.05 -0.43,-0.1 -0.65,-0.14 z","department-77":"m 360.11,130.7 c -0.75,1.23 -0.27,2.29 -2.33,1.67 -1.38,-0.38 -1.84,2.1 -2.56,0.07 -2.14,0.21 -4.49,1.91 -6.24,0.1 -2.04,-1.53 -3.2,3.4 -5.16,0.88 -1.56,1.65 -2.68,-3.86 -4.86,-1.22 -1.42,0.6 -1.4,2.29 -1.08,2.9 -0.79,0.91 -3.3,2.12 -0.93,2.41 0.92,1.64 0.15,3.36 1.66,4.95 -0.21,1.86 -2.5,3.75 -0.77,5.03 -0.42,1.69 1.07,3.83 0.45,5.54 1.88,0.5 -0.47,2.18 -0.41,3.35 -1.82,0.99 1.36,3.93 -1.65,3.64 -0.82,0.84 0.31,2.38 -1.22,3.04 1.7,1.22 -0.11,2.87 -0.29,4.11 -0.83,2.76 -0.35,5.7 -0.38,8.61 1.13,0.77 2.32,2.24 0.22,2.19 -1.67,0.77 -3.86,1.83 -3.71,4.1 -3.26,-0.23 0.46,3.05 -0.39,4.73 1.93,0.89 5.35,1.9 4.16,4.93 0.05,1.63 -0.21,2.35 -1.8,2.26 -2.59,2.58 2.06,2.09 3.18,0.95 1.95,0.94 4.16,-0.38 5.89,1.16 1.74,-0.08 3.98,-1.65 3.26,-2.69 2.16,-0.61 3.3,-0.11 2.62,2.03 1.99,0.05 3.64,-2.23 5.85,-2.23 1.28,-2.5 4.18,-3.1 5.17,-5.95 -1.75,-1.86 -0.91,-4.39 0.11,-6.51 2.23,0.08 3.58,-0.87 5.81,-1.29 2.4,1.59 4.47,-0.91 6.89,0.03 1.85,0.05 2.21,-2.32 4.09,-1.22 1.02,-1.56 -1.94,-1.95 -0.46,-3.63 -1.01,-1.71 -0.67,-2.54 1.28,-3.16 -0.64,-1.19 -1.85,-3.14 0.59,-2.27 3.2,-0.16 -0.39,-3.09 2.44,-3.84 0.11,-1.36 2.11,-1.25 2.34,-2.32 -1.35,-1.35 -2.61,-1.35 -4.33,-0.87 -0.83,-1.72 0,-2.93 0.73,-4.28 -0.27,-1.41 0.18,-2.58 -1.57,-2.81 -0.08,-1.26 -2.46,0.08 -1.43,-1.87 0.29,-0.92 3.06,-1.11 0.77,-1.96 -2,-1.6 4.65,-0.07 2.85,-3.04 -0.62,0.26 -2.18,0.96 -1.62,-0.5 -2.19,-0.35 -3.93,-1.72 -3.63,-4.09 -1.91,1.44 -2.54,-0.3 -3.11,-1.76 -2.53,1.6 -2.02,-2.84 -4.2,-3.33 -1.26,-1.06 -2.94,-1.79 -1.15,-3.4 -0.57,-2.97 -1.82,-4.38 -5.07,-4.44 z","department-10":"m 415.76,157.34 c -2.6,0.51 -5.55,-0.05 -7.71,1.48 -2.64,-2.28 -2.21,2.93 -5.08,1.84 -1.93,0.67 -1.61,4.36 -4.3,3.88 -0.4,1.61 -1.36,1.64 -2.59,1.72 1.3,3.01 -1.42,4.79 -3.84,3.13 -2.09,-1.39 -6.82,1.14 -6.65,-2.55 -0.6,-0.93 -2.3,-0.55 -2.52,-2.29 -2.04,-2.28 -2.83,1.06 -4.5,1.77 -0.06,1.25 0.93,2.82 -1.41,3.08 -3.5,-1.29 1.33,2.83 -1.65,2.81 -1.9,0.54 0.78,2.64 -0.38,3.85 2.1,0.63 -0.62,5.56 2.52,3.51 3.16,-0.12 4.15,3.44 6.03,5.22 0.01,1.47 3.08,2.04 0.93,3.9 2.08,0.85 -3.12,4.07 0.15,3.27 2.29,-0.8 2.03,4.35 4.19,2.52 1.08,-0.14 0.3,-2.78 1.94,-1.13 0.93,0.76 -0.96,2.98 1.14,2.23 2.34,1.66 1.67,5.24 3.89,6.96 2.43,1.45 -2.11,1.84 0.59,3.02 0.73,-0.46 1.14,-2.22 1.92,-0.23 0.37,1.61 -1.44,4.62 1.62,3.35 1.95,0.01 2.99,-0.54 4.79,0.26 0.99,-3.03 2.57,1.82 4.01,-0.76 0.84,-1.92 1.99,-0.84 2.76,-0.15 -0.14,-1.03 0.29,-2.65 1.27,-1.4 -0.33,2.78 3.95,3.53 3.81,0.39 2.92,-0.59 5.93,0.14 8.85,-0.56 2.39,0.31 2.85,-0.77 1.49,-2.56 2.05,-2.2 4.43,-1.32 6.94,-0.84 2.63,-1.11 0.34,-3.51 -1.25,-4.11 2.37,-0.23 3.32,-3.91 6.03,-1.87 3.03,1.11 1.67,-2.97 2.47,-4.56 1.68,-1.76 -0.94,-2.47 -0.07,-3.99 1.1,-2.25 -0.53,-3.76 -1.25,-5.67 2.38,-2.25 -3.94,-1.43 -2.88,-4.17 -1.47,-0.37 -2.51,-0.25 -2.96,-1.8 0.24,-1.72 -4.18,-2.97 -1.75,-4.03 0.72,-2.19 1.43,-3.93 -1.16,-5.04 -2.33,-0.81 -3.68,3.05 -5.35,0.57 -2.15,0.43 -4.7,-0.92 -6.23,-2.52 -2.9,-1.25 -2.44,-3.78 -2.05,-6.39 -0.16,-1 -0.29,-2.51 -1.75,-2.14 z","department-51":"m 405.08,111.51 c -1.06,0.78 -0.74,4.64 -2.69,2.03 -2.26,-0.62 -3.69,-3.04 -5.85,-0.46 -0.76,1.47 -0.53,3.07 -2.6,1.59 -2.67,0.5 -5.66,1.55 -7.69,3.27 1.02,2.06 1.46,4.73 0.89,6.32 2.55,-0.42 1.18,3.01 3.85,2.11 0.48,4.28 -5.3,-0.05 -6.19,3.06 -0.39,1.65 2.79,4.09 -0.6,4.59 -2.26,3.23 5.49,0.01 3.06,3.78 -2.35,0.83 -2.21,3.44 -4.02,4.55 -0.04,2.3 -3.69,1.38 -3.38,4.24 -1.75,1.12 0.58,4.63 -2.54,3.99 -2.46,-0.16 -1.14,0.3 -0.32,1.22 0.08,0.89 -3.17,1.69 -1.26,2.59 2.53,0.21 3.88,3.9 1.46,5.7 0.25,2.2 1.1,2.12 2.94,1.45 1.92,0.52 2.98,4.27 5.46,4.81 -0.12,4.68 6.56,0.97 8.91,3.79 3.18,-0.68 -0.17,-4.93 3.46,-4.46 0.45,-2.04 3.42,-1.33 3.65,-3.97 0.75,-2.28 4.33,-0.39 4.38,-3.49 1.36,-0.34 2.79,1.39 3.81,-0.56 2.71,0.28 5.46,-1.6 7.64,0.42 0.89,2.81 -1.6,6.2 2.08,7.6 1.6,3.05 5.89,1.61 7.51,3.56 1.84,-1.76 4.32,-2.12 5.98,-0.45 1.91,-1.07 7.38,1.87 5.1,-2.02 -2.42,-2.79 6.05,-2.46 2.44,-5.4 -1.35,-0.11 -4.14,-0.27 -1.58,-1.69 1.66,-0.63 3.72,1.24 5.25,-0.9 2.3,1.31 5.6,-0.99 4.11,-3.45 -1.93,-1.13 -3.33,-3.27 -5.05,-4.35 0.2,-1.89 3.07,-2.43 1.04,-4.46 -0.24,-2.76 1.96,-3.93 4.51,-4.61 2.25,-1.35 -0.39,-2.44 -0.39,-3.09 2.85,-0.57 0.54,-4.33 -1.51,-2.09 2.09,-1.98 1.44,-5.68 -0.12,-8.2 -0.96,-1.63 -1.81,-3.48 0.73,-4.04 -0.24,-1.82 -2.4,-2.81 -3.5,-3.66 -2.15,0.23 -1.49,3.78 -3.82,1.54 -2.45,0 -5.77,-1.84 -7.92,0.23 -2.68,0.36 -2.07,-5.98 -5.47,-3.2 -2.64,0.89 -6.12,0.77 -7.24,-2.32 -2.8,0.56 -4.24,-2.36 -6.09,-4.01 -2.61,-1.4 -5.28,-1.58 -8.44,-1.57 z","department-02":"m 388.2,68.13 c -1.08,1.13 -2.82,3.24 -4.4,1.16 -2.84,-2.2 -4.67,3.68 -7.97,1.02 -2.67,-1.47 -4.82,2.26 -7.41,-0.08 -2.13,-0.29 -5.92,2.27 -2.52,2.96 -2.98,2.53 -3.74,6.36 -5.63,9.48 -1.75,0.96 2.24,2.4 -0.4,3.91 1.95,1.43 2.51,4.94 2.65,7.7 -1.5,0.24 -0.31,2.46 -1.01,3.2 2.8,2.14 0.67,5.53 0.21,7.42 1.3,1.39 -0.62,2.75 2.02,3.19 1.86,2.58 -4.01,-0.19 -2.57,2.99 0.21,2.78 -1.91,6.35 -4.84,5.03 -3.19,2.38 3.18,2.33 1.82,4.68 0.73,2 -0.93,3.6 1.68,4.15 1.16,1.34 2.5,-0.57 2.39,2.15 3.19,1.07 -5.03,3.79 0.04,3.92 2.54,0.03 3.91,4.01 2.15,5.73 2.04,1.28 3.84,3.72 5.3,5.32 1.97,-1.81 1.27,4.11 3.47,1.27 1.13,0.14 0.62,4.1 3.08,3.73 1.02,1.15 2.26,2.18 2.67,-0.16 1.3,-1.34 1.82,-3.4 3.99,-3.73 1.01,-2.49 2.46,-4.36 4.65,-6 0.1,-2.93 -6.07,0.28 -3.5,-3.33 4.06,-0.79 -1.61,-3.63 1.16,-5.63 1.74,-0.53 6.13,1.2 5.33,-1.72 -2.24,0.27 -1.72,-2.21 -3.92,-2.36 2.32,-2 -2.35,-5.73 0.53,-7.34 2.85,-0.42 5.37,-3.57 8.29,-1.65 -0.29,-1.73 3.19,-4.87 4.55,-2.85 1.43,0.76 4.63,3.46 4.24,0.06 0.75,-1.54 -0.52,-3.16 0.75,-4.21 -1.86,-2.09 0.18,-3.94 0.86,-5.41 -1.97,-0.87 0.95,-3.51 -1.67,-4.78 -1.57,-3.69 5.08,0.31 4.01,-3.96 1.21,-2.05 5.54,-3.68 5.14,-6.49 -2.5,-0.39 -0.05,-2.22 -0.82,-3.84 1.25,-2 2.5,-4.89 -0.05,-6.15 1.79,-3.26 -2.77,-4.61 -5.35,-3.57 -2.14,-1.09 -7,-0.34 -5.08,-4.21 -1.57,-0.94 -4.83,3.39 -5.36,0.08 -2.78,-0.3 -5.86,-1.9 -8.53,-1.67 z","department-59":"m 335.57,0.12 c -3.45,1.43 -6.99,2.74 -10.76,2.39 -2.72,1.29 -8.66,1.44 -9.11,3.85 2.44,2.79 3.25,6.62 4.77,9.94 0.43,4.77 5.56,3.66 8.58,4.42 2.32,1.45 -4.63,1.65 -1.51,3.98 2.44,0.67 -1.2,3.42 2.07,2.61 2.93,3.85 6.72,1.92 9.95,3.5 2.19,-0.65 4.1,-0.87 5.68,0.87 0.41,-1.85 2.1,-1.38 0.62,-3.01 2.05,-2.57 7.25,2.09 2.69,2.82 -1.83,1.68 0.07,3.54 -0.61,5.52 2.34,0.14 3.9,-1 3.93,1.59 2.5,-1.01 7,0.2 5.64,3.54 1.27,0.39 3.92,-0.75 2.32,1.89 -3.74,0.21 -4.27,4.12 -0.66,5.49 2.67,1.86 -0.52,2.17 0.31,4.28 2.66,0.03 5.42,1.44 5.6,3.59 -3.49,-0.01 -0.66,2 -1.8,3.32 -2.94,0.76 0.82,2.08 -1.93,3.52 1.19,2.22 -2.19,4.81 1.75,6.08 2.76,1.37 5.33,-1.11 8.08,0.5 2.78,-2.8 7.12,1.76 9.94,-1.66 1.88,-2.21 4.77,3.11 6.2,-0.72 3.06,-1.45 6.64,0.94 9.78,1.44 0.46,3.12 6.54,-3.53 4.81,1.34 0,2.28 5.16,2.43 7.07,2.12 1.13,-1.37 -0.83,-4.12 2.33,-4.63 2.68,-0.88 0.57,-5.07 -0.84,-5.54 -3.3,1 -0.12,-4.14 0.06,-5.58 2.39,-1.25 2.41,-3.76 -0.41,-4.14 -0.6,4.11 -2.68,-3.09 -5.06,-3.38 -1.96,-3.39 -6.66,2.37 -9.45,-1.06 -3.02,-1.09 -5.18,0.58 -6.36,2.66 -3.42,-1.36 -0.95,-6.36 -2.22,-9.19 -1.09,-3.5 -4.72,-3.12 -7.3,-3.15 1.15,-5.24 -5.66,2.5 -7.97,-1.03 -3.9,-1.63 -1.34,-6.5 -3.82,-9.41 1.83,-3.67 -3.12,-4.71 -3.84,-8.29 -2.91,-1.52 -7.12,1 -10.06,2.09 -0.33,4.97 -4.26,1.63 -6.9,0.96 -1.64,-3.04 -3.74,-6.42 -7.35,-5.98 -1.29,-2.74 -2.17,-6.28 -0.14,-8.73 -2.25,-2.77 -2.84,-5.71 -4.09,-8.81 z m 28.08,54.5 0.01,0.01 -0.01,-0.01 z","department-62":"m 313.33,5.46 c -4.94,0.63 -9.82,2.03 -14.3,4.19 -2.31,2.03 -4.44,4.39 -7.41,5.25 0.4,3 1.9,6.23 -0.01,9.07 -1.39,2.89 0.06,6.1 -0.08,9.15 0.12,1.92 1.85,2.89 0.02,4.03 0.23,3.04 -1.19,6.37 -0.33,9.17 2.74,1.63 4.65,4.95 7.93,2.3 3.81,-2.29 6.82,4.56 9.77,1.72 1.01,1.14 -1.99,2.68 0.88,2.9 2.1,1.36 5.3,1.26 4.69,4.15 0.88,1.54 2.94,0.71 3.92,1.37 1.81,-1.07 3.99,-1.33 5.74,-1.4 1.16,1.12 1.77,-0.42 1.57,-0.98 1.33,-0.36 1.77,3.47 2.74,0.75 1.51,-1.51 6.22,0.91 4.51,2.46 -2.54,0.07 -6.33,4.05 -3.27,5.63 1.73,2.15 1.55,-3.53 4.22,-2.43 1.09,-0.01 1.95,2.52 2.26,-0.06 2.83,-0.7 -0.14,2.46 2.59,2.02 1.28,-0.01 4.09,2 4.68,1.23 -1.22,-1.42 0.73,-3.47 2.15,-1.5 3.8,-0.04 -3.11,6.76 1.65,4.07 2.16,-2.39 3.64,-1.2 4.04,1.36 2.23,-1.54 4.16,-0.79 6.67,-1.69 1.7,0.68 3.25,0.84 2.92,-1.52 2.01,-0.93 -0.86,-3.26 1.69,-4.17 -3.08,-1.56 3.06,-1.88 0.19,-3.89 0.22,-1.46 4.13,-1.5 1.13,-2.69 -0.34,-2.78 -7.17,-0.62 -4.12,-4.27 0.8,-2.23 -5.36,-4.49 -3.06,-6.23 1.03,-0.79 5.01,-2.22 2.55,-3.36 -2.01,2.19 -1.83,-1.12 -1.83,-2.28 -1.69,-2.27 -3.83,-0.79 -5.87,-1.11 1.15,-3.86 -4.88,0.62 -3.97,-3.05 1.99,-1.08 -1.84,-2.64 0.61,-4.04 1.4,-1.06 3.51,-1.23 1.17,-2.9 -1.51,-1.43 -4.89,0 -2.23,1.47 -1.85,-0.59 -1.52,3.3 -3.1,0.89 -1.9,-1.78 -4.14,1.01 -6.2,-0.92 -1.66,1.28 -2.66,-1.12 -4.47,0.08 -1.69,-1.59 -4.29,-2.33 -5.63,-3.51 2,-1.35 -3.65,-3.85 0.56,-4.64 3.01,-2.03 -3.3,-1.35 -4.61,-1.78 -3.99,-1.02 -3.27,-5.59 -5.16,-8.44 -1.11,-2.34 -2,-6.31 -5.19,-6.38 z","department-08":"m 440.07,60.88 c -1.81,2.16 -4.2,3.74 -5.88,5.87 0.42,3.23 -0.62,6.85 -4.6,6.61 -2.61,1.4 -5.4,3.78 -8.53,2.23 -2.57,-0.31 -6.87,-3.07 -8.21,0.49 -1.09,2.27 2.57,2.05 1.26,4.47 -0.9,1.91 -2.03,4.96 -1.4,6.42 2.68,1.57 -1.58,4.47 -2.94,5.51 -2.03,1.01 -1.06,5.37 -4.36,3.7 -3.54,0.85 2.51,3.79 -0.29,5.51 1.51,0.87 0.58,2.56 -0.65,3.44 -0.53,1.71 1.98,3.37 -0.03,4.16 0.01,4.05 5.16,0.95 6.98,2.81 3.3,0.55 4.18,4.27 7.37,4.91 1.8,0.07 3.13,4.15 6,2.59 2.07,-0.07 4.96,-2.29 5.47,0.74 0.38,2.71 2.61,2.41 4.09,0.8 2.57,1.18 5.4,0.24 7.56,1.64 0.31,-2.7 3.11,-2.45 4.13,-0.68 1.4,-1.13 3.89,-1.64 4.64,-3.09 -2.15,-1.79 -0.62,-5.71 2.04,-5.88 0.24,-1.22 -1.21,-1.95 0.54,-2.89 0.24,-2.32 -1.77,-3.52 -2.04,-5.72 1.86,-0.63 0.83,-2.98 2.1,-3.97 -0.49,-2.87 2.16,-0.91 2.97,0.03 2.69,-1.68 3.87,3.39 6.05,0.41 0.28,-2.43 4.57,-1.6 3.3,-4.01 -0.97,-0.75 -4.08,1.55 -3.04,-1.15 1.75,-1.77 -2.34,-4.79 -3.97,-3 -1.63,-0.09 -2.52,-1.03 -3.35,-1.82 -2.04,-0.2 -1.16,-4.65 -4.28,-3.56 -2.09,-0.97 -3.75,-3.12 -6.22,-1.46 -1.91,0.12 -3.56,-0.3 -2.44,-2.42 -2.07,-2.68 2.55,-6.08 -1.42,-8.03 -4.13,-0.79 1.05,-4.77 -0.06,-7.24 0.2,-2.35 3.01,-3.4 2.16,-5.95 -1.43,-0.71 -2.14,0.48 -2.93,-1.47 z","department-55":"m 466.47,97.47 c -1.56,1.83 -3.96,2.91 -5.49,4.69 -1.73,-0.62 -3.36,-2.29 -5.13,-1.66 -3.57,-3.74 -2.07,3.57 -4.83,4.43 1.86,1.88 2.97,4.89 1.69,6.85 0.61,2.43 -4.88,3.04 -2.52,6.02 2.38,3.31 -6.19,2.92 -2.28,6.6 -4.21,1.78 0.99,5.9 0.55,8.83 -0.1,1.57 -1.24,3.24 0.94,2.92 1.75,1.64 -1.92,3.15 0.48,3.93 0.25,3.59 -6.19,2.07 -5.18,5.89 1.08,1.97 -0.23,3.47 -1.14,4.72 1.38,2.47 5.49,3.27 5.15,6.61 0.23,1.76 -1.52,5.98 0.78,6.29 1.9,-2.79 1.64,2.85 3.89,1.37 2.31,2.74 5.53,4.67 8.96,5.55 2.27,1.43 4.35,3.02 5.92,5.23 2.69,2.59 4.85,-1.27 7.77,-0.65 1.95,-0.75 1.99,-2.61 4.21,-1.43 3.14,0.06 4.5,-5.18 1.4,-6.29 -3.87,-2.46 6.35,-3.69 1.46,-4.42 -1.47,-2.21 0.74,-5.44 -1.65,-7.38 0.52,-3.01 3.49,-5.5 2.03,-8.71 1.74,-1.41 -2.37,-3.07 0.56,-4.22 1.59,-0.69 4.2,-1.75 1.55,-3.18 -1.32,-1.7 3.57,-5.15 -0.4,-5.57 1.51,-1.93 -0.24,-3.53 -1.91,-2.99 -2.09,-1.69 1.38,-6.16 -1.64,-5.8 -0.54,-2.63 -0.07,-4.79 1.7,-6.78 -2.19,-0.64 -1.63,-2.43 -1.84,-4.23 -1.39,-1.72 -2.89,-6.03 -5.8,-3.74 -2.4,-0.05 -3.98,1.51 -4.61,0.54 -0.96,-0.51 -0.02,-0.62 -1.25,-1.61 0.46,-1.47 -0.85,-2.06 -0.1,-2.7 -0.17,-2.17 1.28,-0.21 0.11,-1.81 -0.06,-2.69 -0.83,-5.88 -3.37,-7.28 z","department-54":"m 483.26,101.56 c -1.75,2.39 -6.72,-0.76 -7.03,2.38 -2.62,-1.44 -7.36,1.12 -6.17,4.43 0.74,4.88 5.26,0.58 8.1,1.48 2.96,1.01 3.57,5.58 4.1,7.38 3.12,1.31 -1.93,3.72 -0.52,5.95 -0.87,2.35 2.62,1.44 1.12,3.56 0.09,2.56 -0.17,4.4 2.68,4.39 0.95,1.44 -0.85,2.5 1.32,3.1 0.08,2.43 -2.65,4.77 0.06,6.73 -1.86,1.53 -5.42,2.68 -2.94,4.96 -0.32,3.14 0.42,6.53 -2.29,8.78 0.3,2.26 1.85,3.57 0.92,5.93 -0.21,2.42 4.1,2.54 0.74,3.73 -2.75,0.52 -2.79,3.37 -0.09,3.76 0.33,2.01 0.1,5.32 3,2.95 5.39,-1.2 1.3,5.69 5.29,7.31 -0.38,3.55 5.14,2.54 6.11,0.87 0.8,0.45 2.56,2.67 3.02,-0.32 0.4,-3.41 3.98,0.7 5.58,-2.34 2.07,-1.7 2.85,1.78 5.26,0.83 2.41,0.96 5.78,-1.97 8.72,-1.33 -0.11,-2.51 2.69,-4.44 3.49,-1.11 1.87,2.12 5.7,3.02 8.46,2.03 1.11,-2.51 3,0.55 4.43,-2.06 1.4,-3.3 8.67,-2.58 5.72,-7.33 -1.28,-1.26 -2.12,-2.52 -2.84,-3.74 -2.12,0.62 -3.12,-2.23 -5.19,-0.6 -3.43,-1.47 -6.2,-3.18 -9.79,-3.87 -0.04,-2.22 -3.9,-2.63 -5.43,-4.68 -2.97,-0.67 -5.52,-2.5 -8.38,-2.2 -1.35,-2.37 -4.49,-3.45 -2.73,-6.5 1.93,-3.82 -4.9,-3.21 -7.26,-3.68 -1.33,-1.55 -2.62,-2.04 -4.55,-3.04 0.53,-3.54 -7.57,-4.55 -4.54,-8.33 3.1,1.07 1.22,-3.19 3.24,-3.88 -1.85,-1.34 -2.22,-2.92 0.05,-3.88 0.24,-1.64 -0.87,-4.88 -1.53,-5.53 -2.45,-0.97 -0.9,-3.36 -2.63,-4.79 -0.94,-2.62 2.2,-6.94 -2.47,-7.44 -1.91,-1.02 -2.61,-3.63 -5,-3.91 z","department-57":"m 503.4,104.95 c -3.5,0.04 -5.26,4.42 -8.98,3.78 -1.89,-0.4 -2.66,-4.83 -4.84,-2.71 4.17,0.85 -0.69,5.81 2.03,8.08 0.95,1.12 1.47,1.12 0.16,1.85 2.72,1.47 3.97,5.18 2.78,8.12 -3.16,1.23 2.9,3.39 -0.76,4.28 0.68,2.17 0.05,3.22 -2.29,2.94 -2.22,3.61 4.41,3.78 4.47,6.79 0.32,2.5 4.34,1.92 4.61,4.09 2.63,0.22 7.9,-0.18 8.05,3.09 -1.51,2.09 -1.02,3.76 1.16,4.61 -0.07,2.41 2.71,3.1 4.16,2.64 2.31,1.86 5.93,1.31 7.61,4.01 3.25,1.89 6.08,3.97 9.68,5.11 1.62,1.34 4.4,1.49 5.37,1.07 1.15,1.63 4.32,0.61 3.99,3.06 2.04,2.55 6.14,5.26 8.81,1.93 1.69,-2.04 5.6,-6.38 2.03,-8.09 -0.63,-2.26 4.24,-5.88 0.71,-8.42 -2.28,-1.08 -5.5,-4.67 -6.48,-0.31 -1.32,2.17 -2.68,0.9 -2.94,-0.66 -3.5,-1.06 4.07,-2.79 -0.09,-3.01 -2.21,-1.11 -5.81,-2.3 -5.04,-4.57 1.13,0.06 2.3,-2.29 3.7,-2.54 0.74,-1.99 0.82,-7.28 3.45,-6.47 0.09,2.59 1.3,4.57 3.75,4.84 3.24,0.28 5.22,3.37 8.36,2.73 2.95,-1.6 5.64,0.34 8.22,0.72 1.73,-1.99 3.39,-5.75 3.26,-7.88 -3.15,-1.08 -5.79,-2.77 -6.37,-6.36 -2.47,-1.1 -4.98,-1.26 -6.78,1.45 -3.22,2.32 -7.72,1.44 -11.17,-0.38 -0.64,3.79 -3.96,0.62 -3.06,-1.79 -1.61,-2.56 -5.77,-3.52 -8.36,-2.33 2.56,4.39 -5.29,4.06 -5.55,1.2 0.78,-2.3 -2.24,-2.11 -2.29,-4.46 -1.24,-2.84 -6.04,-4.38 -3.87,-7.88 -2.52,-2.26 -3.82,-6.64 -8.27,-6.11 -4.17,1.53 -5.59,-3.04 -9.23,-2.45 z","department-67":"m 544.44,133.33 c -2.55,1.2 -1.86,5.34 -3.54,7.57 -2.79,-0.45 -3.98,5.32 -0.38,4.93 0.87,1.03 5.75,1.83 2.14,2.53 -1.78,1.5 1.91,2.4 0.8,3.44 3.07,0.38 2.8,-5.61 5.59,-2.68 1.27,0.5 2.75,1.06 3.36,2.31 3.21,1.88 -0.45,5.47 -1.04,7.67 0.4,1.75 3.37,1.12 1.47,2.94 -0.9,2.92 -2.34,6.34 -5.54,7.14 -1.52,-0.27 -6.22,0.31 -2.38,1.08 1.92,0.81 -2.32,1.02 0.26,2.27 -0.26,2.11 -1.22,5.21 -0.98,7.34 -1.59,2.69 3.49,1.95 4.06,2.53 1.12,2.38 5.28,1.06 5.74,4.01 2.04,-0.84 -0.91,2.57 1.9,1.72 3.01,0.58 6.32,2.58 6.2,5.56 1.67,1.12 3.39,4.4 5.2,1.29 0.87,-3.2 3.75,-5.3 4.22,-8.66 0.15,-2.7 3.74,-3.64 2.22,-6.76 -0.27,-3.01 1.17,-6.05 2.5,-8.7 1.39,-2.29 -0.7,-5.94 1.56,-8.31 1.96,-2.54 5.71,-3.61 6.25,-7.2 0.97,-1.38 2.5,-0.59 3.09,-2.39 3.71,-1.2 3.61,-5.01 5.11,-7.95 0.24,-2.03 5.28,-4.42 1.59,-4.91 -3.51,-0.14 -6.34,-2.15 -9.28,-3.81 -2.69,-1.53 -5.76,0.29 -8.43,-1.4 -2.54,1.19 -6.23,-0.86 -8.22,1.79 -0.69,2.41 -2.45,7.76 -5.69,4.83 -2.43,-2.51 -5.76,1.35 -8.43,-0.25 -1.12,-1.59 -3.01,-2.5 -4.57,-2.09 -2.06,-1.13 -5.18,-2.13 -4.56,-5.04 0.33,-0.23 0.21,-0.84 -0.21,-0.81 z","department-88":"m 543.7,170.72 c -3.31,1.38 -6.33,2.9 -8.64,5.73 -1.29,0.67 -1.97,-1.71 -3,0.67 -1.48,2.53 -4.46,-1.14 -6.53,-0.37 -3.07,0.39 -1.42,-5.29 -4.45,-2.86 -1.72,1.06 0.93,4.33 -2.07,2.2 -1.78,0.74 -4.05,0.76 -5.72,1.72 -1.57,1.83 -1.69,-1.56 -3.59,-0.23 -1.77,0.14 -2.17,-3.2 -3.48,-0.63 -1.05,2.66 -5.79,-1 -5.2,1.97 -0.89,2.75 -2.59,1.71 -3.28,0.37 -0.1,2.4 -3.59,0.58 -5.16,1.87 -1.7,-0.72 0.13,-3.65 -2.1,-3.15 -3.28,-1.76 1.05,-7.74 -3.76,-6.9 -1.91,1.57 -3.93,0.03 -4.94,2.56 -1.62,0.54 -3.6,-1.45 -4.31,0.83 -0.98,2.28 -4.98,-0.54 -5.76,2.63 -1.49,-1.12 -4.76,0.24 -4.44,1.84 2.72,-0.76 -1.5,4.16 1.48,2.83 2.58,-2.8 4.27,0.92 5.47,2.86 0.99,2.29 2.44,-0.84 3.66,1.62 0.19,1.46 -0.14,2.91 2.21,2.73 1.05,0.81 2.84,3.4 0.16,2.99 -1.16,2.1 -0.8,4.9 -2.74,6.18 0.01,1.72 3.18,0.08 3.76,2.45 2.71,0.96 3.73,3.61 3.02,6.15 1.1,2.31 3.31,-2.88 3.5,0.86 1.43,3.89 3.56,-4.88 4.18,-0.76 -1.87,1.59 0.22,2.12 0.99,0.26 2.44,-0.34 2.63,-4.83 6.01,-3.79 2.78,-2.08 1.94,3.16 3.04,3.81 1.67,1.1 3.1,2.11 4.88,0.16 2.8,0.02 6.14,-1.3 7.82,1.99 0.57,3.89 4.42,1.42 5.62,-0.82 2.89,-1.35 3.54,3.7 6.5,4.05 2.19,0.9 3.46,2.55 5.11,3.85 2.21,-0.74 5.19,-1.96 3.36,-4.73 1.56,-1.66 0.35,-4.44 1.89,-6.56 0.98,-1.7 3.7,-2.62 3.88,-5.25 1.52,-1.58 3,-3.43 1.6,-5.14 1.49,-2.96 3.07,-5.84 4.54,-8.75 0.95,-1.35 2.26,-2.99 0.28,-4.02 -1.87,1.29 -5.67,-0.97 -2.92,-2.78 -2.18,-1.78 1.85,-5.54 -0.21,-7.07 -0.57,-0.2 -0.01,-1.38 -0.66,-1.38 z","department-52":"m 446.82,158.96 c -1.69,0.91 -3.13,-0.45 -4.82,1.2 -1.12,-0.83 -4.57,-0.69 -3.54,0.9 2.8,-1.2 4.68,3.32 1.31,3.37 -2.26,0.28 -2.04,1.83 -1.08,2.97 1.74,4.14 -5.82,-1.2 -5.38,2.99 -0.5,1.16 -1.78,3.02 -1.22,3.88 2.37,0.94 2.16,4.62 5.26,4.46 -0.97,2.99 5.41,1.68 2.86,4.7 2.62,1.68 0.37,4.97 1.38,6.77 1.02,1.49 -1.35,3.52 -0.54,5.29 0.17,4.44 -5.3,-1.1 -6.39,2.93 -2.48,1.02 2.31,2.62 0.41,4.4 1.49,1.78 5.61,0.36 3.83,3.87 2.37,-0.59 4.42,1.86 1.79,3.34 0.65,2.75 2.75,-2.78 3.64,0.5 0.65,2.55 3.6,4.14 3.33,6.7 -1.31,0.89 -4.49,2.9 -1.32,2.84 1.47,1.51 -1.34,5.58 1.92,4.46 1.63,-2.16 2.42,0.63 2.94,1.7 1.79,1.42 3.81,1.4 4.82,-0.8 0.79,0.32 -0.13,2.53 1.75,2.49 0.96,1.39 3.18,1.14 1.74,3.15 0.89,2.65 3.78,-3.01 5.24,-0.13 1.75,-1.89 1.15,-6.06 4.57,-5.11 1.28,-1.4 3.49,1.3 4.33,-1.4 1.59,-1.92 1.63,2.72 3.95,1.22 2.18,-0.12 2.71,-1.17 2.09,-3.01 0.93,-1.34 1.22,-2.86 -0.38,-3.56 -0.59,-2.58 1.37,-2.98 3.06,-3.3 -0.71,-3.1 2.46,-1.42 3.57,-1.95 -0.16,-2.01 1.36,-3.53 2.99,-3.36 -0.29,-2.42 -2.17,-4.47 -4.19,-2.78 -1.26,-1.95 0.41,-5.52 -3.04,-6.35 -1,-1.34 -2.58,-2.41 -4.02,-2.13 -1.13,-1.43 1.6,-1.92 0.97,-3.42 1.1,-1.79 0.88,-4.33 2.89,-4.52 -0.46,-2.76 -4.86,-1.71 -3.68,-4.79 -1.34,-2.4 -3.06,0.93 -3.95,-2 -1.16,-2.97 -3.69,-4.38 -6.2,-2.11 -0.59,-1.91 1.12,-3.24 -1.32,-3.92 1.85,-0.41 3.47,-2.52 0.93,-3.26 -0.38,-1.87 -1.16,-2.02 -2.78,-2.58 -1.73,-3.16 -6.41,-1.82 -8.19,-4.99 -2.15,-0.46 -2.78,-2.81 -5.04,-3 -0.12,-2.21 -1.01,-1.61 -2.26,-0.66 -2.79,-0.35 1.41,-5.66 -2.22,-4.93 z","department-70":"m 499.88,202.89 c -2.63,0.3 -4.89,2.11 -5.97,4.12 -0.94,0.91 -3.97,2.32 -2.12,-0.03 0.13,-1.92 -1.88,-0.34 -1.76,0.64 -1.02,1.34 -0.98,3.88 -3.06,3.55 -0.55,1.66 -1.23,4.46 -3.43,2.67 -1.42,0.7 -1.13,3.58 -3.32,2.54 -2.26,2.15 1.83,3.96 -0.2,6.21 1.24,3.12 -4.32,4.77 -5.32,1.82 -0.58,-0.92 -2.73,2.87 -4.37,1.01 -1.22,1.14 -4.49,-0.07 -3.8,2.59 -2.11,1.09 0.1,3.94 1.06,1.41 2.21,-1.57 4.14,3.91 2.96,5.69 -0.66,2.07 -2.95,2.72 -4.23,3.24 1.21,1.06 -1.76,2.05 0.86,1.83 2.25,0.29 -0.16,6.1 3.34,4.24 1.79,2.16 -1.88,5.33 1.36,5.71 1.44,2.16 3.91,4.38 6.57,2.71 2.27,-0.86 4.59,0.16 6.71,-1.75 2.79,-1.14 5.72,-4.18 8.47,-2.76 2.5,-0.09 4.56,-1.97 5.85,-3.76 1.83,0.46 2.61,-0.36 2.86,-1.77 2.63,-0.46 5.27,-1.6 5.54,-4.7 2.29,-1.29 5.83,-3.32 7.88,-0.71 1.23,-0.95 5.65,1.5 4.64,-1.81 -0.18,-2.44 4.57,1.54 3.74,-2.01 -0.12,-2.68 3.06,0.48 4.42,0.6 2.85,1.79 2.94,-3.34 1.04,-4.6 1.68,-2.26 -0.76,-5 -0.83,-7.47 -0.79,-2.86 4.43,-4.21 1.79,-6.71 -2.08,-2.66 -6.24,-2.87 -7.71,-6.14 -2.5,-2.92 -3.93,3.02 -6.8,2.39 -1.62,-1.8 -2.57,-4.88 -5.66,-4.53 -2.96,-0.21 -6.08,3.12 -8.15,0.41 -2.4,-0.51 0.23,-4.03 -2.37,-4.63 z","department-21":"m 430.26,202.39 c -2.98,-0.36 -2.28,3.5 -2.89,4.09 -3.52,0.85 -7.72,-0.28 -10.91,1.13 0.12,1.91 0.16,3.7 -1.78,4.39 -1.43,2.57 2.23,2.59 2.78,2.96 0.78,2.82 0.56,7.26 -3.23,7.04 -0.11,2.16 1.99,3.62 -1,3.9 0.72,2.94 -2.41,6.52 -3.86,9.44 -2.44,2.06 0.03,6.34 -3.4,7.86 -0.01,1.52 1.54,3.57 2.08,4.44 2.08,-1.74 -0.71,3.97 0.05,5.35 0.76,2.06 4.84,0.48 4.74,3.88 -1.32,3.42 1.69,6.38 5.01,6.9 1.3,1.42 0.65,2.78 2.51,1.23 2.03,0.22 0.19,2.75 2.63,2.77 2.7,1.39 5.44,1.37 6.15,4.62 1.34,1.99 4.7,1.98 4.57,4.24 2.88,-1.34 6.42,-1.22 9.16,-3.33 2.31,-0.8 6.07,-0.86 8.14,-1.17 2.91,2.58 6.21,-1.12 9.25,-0.89 2.24,-0.61 1.63,-2.43 0.75,-3.34 1.62,-2.89 6.07,-2.65 6.78,-6.47 1.41,-2.73 2.01,-5.54 2.73,-8.48 0.14,-1.92 1.96,-2.74 -0.25,-3.51 0.43,-2.24 1.54,-5.31 -1.69,-5.06 -0.44,-1.89 -1.3,-4.9 -2.86,-4.55 0.22,-3.37 5.14,-1.91 4.96,-5.91 0.76,-2.96 -2.67,-7.08 -4.51,-2.82 -2.22,-0.25 -3.54,-1.43 -5.3,0.74 -2.39,1.02 -0.78,-3.81 -3.53,-3.94 -1.77,-1.18 -0.62,-3.19 -2.39,-0.9 -3.64,2.12 -4.58,-4.93 -7.28,-2.21 -2.89,-0.45 0.78,-4.91 -3.01,-5.07 0.9,-1.64 5.08,-3.23 1.85,-5.04 -1.35,-1.96 -2.46,-6.59 -4.91,-3.77 -2.57,-0.44 2.15,-3.15 -0.94,-3.86 -1.96,-0.39 -2.06,-0.68 -1.78,-2.38 -2.58,-1.59 -5.78,-1.16 -8.59,-2.28 l 0,0 z","department-25":"m 524.75,232.72 c 0.6,3.47 -5.06,1.11 -4.41,4.65 -1.59,0.18 -4.21,0.28 -5.1,0.07 -2.83,-2.93 -7.31,0.27 -8.34,3.45 -1.29,2.51 -4.23,1.18 -5.23,3.59 -1.44,0.48 -2.41,0.42 -2.71,1.78 -2.17,0.44 -3.6,3.16 -6.39,2.02 -3.22,-0.12 -5.72,2.6 -8.74,3.57 -3.03,0.32 -3.9,3.34 -1.23,5.03 3.1,1.51 4.18,4.87 1.57,7.47 0.1,1.6 -1.31,3.03 -1.29,4.53 1.26,1.41 2.75,-3.16 3.11,0.11 0.9,2.49 4.55,-0.29 4.63,2.13 3.8,0.81 1.81,4.9 4.19,7.22 0.91,2.91 5.17,1.46 6.56,4.25 3.53,2.93 0.14,6.33 -2.84,7.54 -1.4,1.89 0.42,3.62 -1.39,5.19 -0.75,2.81 3.69,5.73 3.76,1.72 2.39,-2.03 4.37,-4.58 7.12,-6.18 2.26,-1.76 5.45,-2.91 6.57,-5.72 -0.74,-2.93 1.48,-6 -0.08,-9.15 0.11,-4.19 6.86,-3.29 9.42,-5.9 2.72,-1.98 2.28,-6.41 5.92,-7.6 2.76,-2.22 4.53,-5.44 7.39,-7.56 -0.61,-3.67 3.46,-4.22 4.78,-6.73 -0.15,-3.82 -4.97,0.07 -7.07,-1.46 0.7,-1.9 3.21,-4.13 1.45,-6.71 -0.76,-1.48 -0.67,-2.19 0.61,-2.92 -0.66,-3.47 -5.22,-3.74 -7.78,-2.34 -1.29,-1.12 -3.19,-0.98 -4.5,-2.06 z","department-2B":"m 591.47,517.82 c -3.8,0.59 0.96,5.58 -2.34,7.11 0.41,2.37 -1.56,4.36 0.27,6.51 0.91,2.65 0.16,5.25 -1.21,7.52 -1.7,1.4 -2.28,-3.59 -4.88,-2.82 -2.72,-0.68 -5.78,0.73 -6.51,3.55 -0.96,3.57 -5.53,1.85 -7.86,3.52 -1.89,1.06 -3.87,1.71 -4.61,3.96 -1.27,0.02 -3.62,-0.97 -3.17,1.52 -0.83,1.46 -4.01,3 -1.97,4.89 -0.74,1.76 -0.34,3.49 -2.71,3.49 -0.21,1.44 -2.22,2.88 0.58,2.71 2.53,1.11 5.12,2.12 7.69,3.24 1.52,0.72 3.8,-1.59 3.24,1.35 1.14,3.16 4.05,4.22 6.73,6.16 3.36,0.28 1.41,5.5 4.55,6.47 1.71,1.96 0.79,6.36 4.83,5.7 0.18,2.3 0.59,4.8 0.39,7.09 3.14,0.81 -1.89,5.25 2.18,4.96 1.78,0.52 2.82,0.98 4.16,-0.94 3.62,-1.36 0.49,-5.59 2.73,-7.46 1.3,-1.69 2.64,-3.75 1.77,-5.45 1.89,-0.05 4.02,-2.43 3.98,-4.66 -3.67,0.56 1.98,-2.55 0.4,-4.61 0.47,-4.5 -0.6,-8.88 -1.01,-13.3 -0.14,-3.75 0.34,-7.67 -0.54,-11.31 -2.55,0.11 -3.67,-4.24 -3.35,-6.45 -0.43,-3.66 1.56,-7.1 1.67,-10.65 -0.63,-3.67 -1.07,-7.33 -1.55,-11 -0.76,-1.12 -2.26,-1.12 -3.47,-1.1 z","department-2A":"m 553.92,559.49 c -0.76,0.55 -0.1,3.85 1.13,1.96 1.53,-0.6 3.16,1.13 1.04,1.7 0.18,1.06 4.56,1.95 3.28,3.75 -1.7,0.83 -4.95,1.13 -5.71,2.43 1.47,0.55 1.4,3.03 1,3.92 1.78,0.17 -1.16,0.99 0.63,1.63 0.63,1.3 2.89,1.78 3.93,2.6 2.01,-0.69 1.72,2.93 3.31,3.71 -1.37,1.54 -4.97,1.78 -3.83,4.58 -1,1.17 -4.84,0.3 -2.28,2.46 0.58,1.07 -0.7,3.38 1.57,2.3 2.41,0.81 4.08,-2.02 6.12,-1.18 1.97,1.46 -0.22,3.37 0.14,5 -2.75,0 1.8,1.85 -1.02,2.54 -3.01,0.03 -0.83,3.83 -3.9,3.99 -1.68,0.23 1.57,0.7 1.54,1.65 1.76,-0.59 3.68,-1.62 3.39,1.11 1.89,0.2 4.59,0.62 6.1,1.72 -1.54,1.28 -2.78,3.54 -5.39,3.37 -1.08,2.57 -0.44,5.65 2.26,6.65 0.47,1.48 3.07,1.49 4.07,2.79 2.06,-0.18 4.37,2.72 5.98,1.13 0.61,-0.03 -0.33,2.68 1.6,1.9 1.78,0.68 -1.94,3.73 1.39,3.43 1.92,2.48 5.07,2.16 5.35,-1.31 -0.28,-1.01 -2.21,1.4 -1.26,-0.4 -1.13,-2.4 4.15,-2.95 2.21,-5.91 -0.37,-2.45 4.29,-3.07 3.59,-5.68 -1.11,-1.47 -3.9,2.07 -2.85,-0.95 0.15,-2.4 3.01,0.56 2.82,-1.99 2.59,-0.18 0.07,-3.36 2.35,-4.13 0.15,-3.28 0.23,-6.85 -0.14,-10.22 -1.57,-1.53 -3.07,3.01 -4.83,0.98 -2.75,0.63 -3.37,-1.87 -1.99,-3.78 0.22,-1.35 -2.56,-0.55 -1.08,-2.17 -0.85,-2.32 1.32,-7.41 -2.67,-6.39 -2.45,-0.98 -0.65,-4.44 -2.73,-5.65 -2.85,-1.24 -1.36,-6.19 -4.82,-6.53 -1.64,-1.96 -4.77,-2 -5.5,-4.65 -1.21,-1.02 -0.51,-3.66 -2.85,-2.55 -2.75,-0.46 -5.3,-1.82 -7.74,-2.91 -1.28,-0.57 -2.84,-0.72 -4.21,-0.9 z","department-66":"m 350.33,540.74 c -2.96,0.38 -4.31,2.8 -5.6,5.05 -3.53,0.71 -7.2,-0.41 -10.77,-0.57 -2.35,1.71 -6.82,-1.75 -7.77,1.56 0.2,2.13 1.85,4.41 0.81,6.44 -1.56,1.89 -4.34,1.3 -5.68,3.47 -1.35,1.08 -2.18,1.99 -3.65,0.52 -2.39,0.04 -5.76,-0.02 -7.25,1.69 -0.99,2.71 -4.23,1.36 -5.45,3.77 -3.15,-0.36 -6.54,2.28 -5.14,5.7 2.43,0.62 5.15,0.58 6.86,2.76 2.19,0.36 3.92,1.1 3.79,3.75 0.25,2.56 3.21,3.71 5.32,2.52 1.96,-1.04 2.2,-4.45 4.97,-3.96 2.58,-0.15 5.03,-1.38 7.33,0.7 1.62,1.14 4.07,1.03 4.94,3.03 1.26,1.86 4.32,3.14 5.35,0.56 1.73,0.75 6.82,2.34 4.14,-1.14 0.71,-2.52 4.05,-2.95 6.3,-2.62 1.56,-1.63 3.48,-3.18 5.81,-2.8 0.99,-2.12 3.1,-0.12 4.88,-0.88 1.63,1.07 2.93,3.67 5.54,2.51 3.2,-0.39 -1.16,-3.71 -1.44,-5.38 -2.92,-1.29 -2.81,-4.63 -3.06,-7.37 0.78,-2.2 -2.64,-2.22 -1.43,-4.12 2.29,1.97 1.16,-2.93 1.55,-4.24 0.36,-2.22 -0.89,-3.89 -3.17,-3.82 -1.26,-1.48 0.41,-4.01 -2.35,-4.33 -1.89,-0.44 -3.32,-1.87 -4.85,-2.81 z", +"department-01":"m 445.43,302.59 c -1.44,3.02 -1.75,6.16 -3.18,9.18 -0.78,3.16 -1.85,6.34 -2.91,9.5 -0.74,1.88 -1.31,3.79 -0.09,5.37 -0.73,2.05 -2.97,3.67 -1.95,5.9 -1.67,2.26 0.87,5.73 -1.18,7.83 1.88,0.01 3.46,1.61 3.99,2.62 2.16,-1.53 3.89,1.88 4.07,3.41 0.92,1.26 -0.03,3.77 2.46,2.77 2.89,0.46 5.98,-0.89 8.76,0.39 1.35,2.24 3.89,2.93 5.42,0.31 1.18,-1.7 1.66,-5.65 4.09,-5.27 2.02,1.24 3.75,2.88 3.08,4.98 1.95,2.32 3.67,4.97 5.93,6.73 1.33,1.23 0.17,0.8 -0.53,0.61 0.61,1.8 3.11,2.49 3.34,4.83 0.97,0.84 1.38,-1.89 2.87,-1.59 -0.3,-1.63 1.67,-2.68 0.77,-4.34 3.81,0.96 3.71,-3.34 3.75,-5.95 0.89,-3.44 1.98,-6.82 2.27,-10.31 -1.07,-2.3 -1.36,-4.85 -1.09,-7.47 0.3,-1.5 0.9,-3.58 2.27,-1.4 2.48,1.01 0.53,-3.51 3.59,-2.7 2.71,-0.13 3.55,-3.26 1.37,-4.78 1.32,-2.8 5.95,-1.73 6.82,-4.09 -1.66,-3.05 4.61,-7.07 -0.2,-9.19 -2.62,-2.47 -4.13,2.14 -6.1,3.38 -0.9,2.11 -2.5,3.05 -3.65,4.53 -1.99,2.56 -5.47,0.79 -8.11,1.25 0.84,-3.04 -2.73,-3.43 -3.76,-4.72 -2.02,1.65 -3.16,4.49 -6.19,4.68 -2.73,0.46 -1.81,-2.02 -1.56,-3.51 -1.42,0.56 -1.69,-0.36 -2.26,-1.49 -0.06,1.35 -0.96,2.99 -0.83,0.6 -1.4,-1.01 -1.59,-2.59 -1.58,-3.72 -1.32,-0.93 -3.93,-1.28 -2.29,-3.07 -1.76,-1.43 -5.48,-1.31 -5.42,-4.72 -2.13,-0.62 -4.08,0.9 -6.23,1.42 -1.93,-0.36 -3.28,-2.81 -5.2,-1.46 0.07,-0.1 -0.3,-0.68 -0.54,-0.51 z","department-39":"m 472.04,250.64 c -2.16,1.79 -1.36,5.28 -2.94,7.45 0.09,2.73 -2.31,4.73 -3.53,7.05 -3.03,-0.47 -5.35,3.74 -3.19,4.71 -2.06,0.47 -3.73,5.36 -0.52,4.7 1.33,0.76 0.69,4.17 3.48,3.21 1.68,-0.66 1.23,2.18 3.27,2.09 2.46,1.35 -0.2,2.67 -1.91,2.03 -2.06,-0.51 -4.46,1.94 -1.6,2.77 2.43,1.33 -1.33,3.03 1.08,4.08 0.89,2.1 1.19,3.82 2.13,6.05 -2.12,0.95 -0.43,3.73 -3.06,3.72 -1.86,2.41 0.74,4.14 2.3,5.69 -0.13,2.93 -6.18,0.76 -4.86,4.67 0.41,1.69 3.59,1.72 2.72,3.84 0.3,1.7 2.14,1.5 2.39,1.42 0.16,2.17 2.98,0.53 1.91,2.98 -0.9,3.13 3.87,1.82 4.85,0.12 1.46,-0.55 2.58,-4.59 4.24,-1.99 2.29,0.06 2.46,3.2 3.09,3.77 2.93,-0.04 7.08,0.91 8.5,-2.49 2.02,-1.97 3.8,-4.92 6.21,-7.02 2.27,-1.54 0.39,-4.74 2.54,-6.4 1.4,-1.49 3.11,-3.84 -0.06,-3.89 -2.06,-1.17 -3.31,-3.74 -0.87,-5.29 0.4,-1.53 -1.44,-3.09 0.76,-4.19 2.73,-1.36 6.13,-4.43 2.26,-6.76 -1.6,-2.02 -3.91,-2.65 -5.92,-3.04 -1.27,-2 -1.73,-3.98 -2.6,-5.89 -0.82,-0.25 1.22,-2.33 -1.1,-2.27 -1.84,-1.29 -4.2,-1.14 -5.91,-2.76 -0.62,-1.82 -0.09,-1.2 -1.26,-0.03 -2.05,2.08 -3.47,-2.98 -0.74,-2.02 0.76,-1.1 -0.4,-3.36 1.4,-4.52 2.37,-3.1 -2.64,-4.46 -3.59,-6.62 -0.37,-1.97 -2.06,-4.51 -3.97,-2.34 -2.56,0.88 -4.13,-1.12 -5.49,-2.82 z","department-68":"m 549.43,183.82 c -2.25,1 -2.94,3.73 -3.79,5.81 -0.9,2.15 -3.75,4.26 -2.11,6.74 -0.93,2.22 -2.92,4.25 -3.93,6.64 -2.43,1.18 -3.51,3.7 -3.19,6.38 0.13,1.69 -1.55,2.36 -0.44,3.95 0.77,2.64 -4.62,1.97 -2.6,4.52 2.13,1.91 5.37,1.9 7.52,3.96 0.67,1.81 1.6,4.32 0.06,6.09 -1.78,1.43 -0.08,4 1.85,2.88 1.83,0.98 2.47,3.66 3.32,5.16 -0.72,2.04 1.34,2.1 2.39,2.44 -0.32,1.38 -1.23,4 1.33,3.32 1.03,1.33 2.07,1.29 3.35,0.31 2.56,-0.08 5.85,0.35 7.17,-2.31 -0.73,-1.24 -0.96,-2.18 0.78,-1.43 2.66,0.8 0.35,-2.42 2.52,-2.38 0.82,-0.85 -1.99,-1.47 0.03,-2.05 1.88,-1.02 4.21,-2.78 2.05,-4.99 -1.7,-1.63 -3.7,-3.88 -1.43,-6.04 0.91,-2.16 -1.41,-4.57 0.56,-6.71 0.67,-2 0.44,-4 1.78,-5.83 -0.03,-2.09 3.45,-4.94 0.43,-6.95 -3.06,-1.46 0.88,-6.62 -2.19,-7 -1.65,-0.56 -1.53,-2.31 -3.25,-2.51 -0.17,-1.94 -0.33,-3.93 -2.69,-4.35 -2.09,-1.1 -4.78,-1.23 -5.71,-3.58 0.07,-2.15 -2.48,-1.52 -3.79,-2.06 z","department-90":"m 532.37,216.22 c -0.55,0.23 -0.49,0.97 -0.95,1.33 -0.62,0.8 -1.51,1.36 -1.95,2.3 -0.77,0.99 -0.8,2.48 -0.08,3.5 -0.03,0.67 0.48,1.24 0.41,1.93 -0.01,0.83 -0.07,1.76 0.62,2.36 0.29,0.29 0.48,0.66 0.1,0.97 -0.14,0.38 -0.57,0.43 -0.76,0.72 -0.05,0.5 0.53,0.78 0.56,1.29 0.18,0.47 0.52,0.85 0.75,1.28 0.26,0.15 0.87,0.53 0.4,0.81 -0.7,0.47 -0.05,1.72 0.76,1.5 0.78,0.02 1.57,-0.19 2.27,-0.46 0.8,0.18 1.42,0.82 1.45,1.64 0.04,0.86 1.41,0.54 1.43,1.42 0.01,0.47 0.26,1.11 -0.01,1.5 -0.5,0.35 -0.45,-0.64 -0.86,-0.74 -0.5,-0.2 -0.94,0.42 -0.64,0.85 0.2,0.34 -0.18,0.93 0.34,1.04 0.43,0.61 0.84,1.44 0.71,2.19 -0.36,0.5 0.42,0.64 0.75,0.45 0.83,-0.18 1.47,-0.8 2.26,-1.07 0.62,-0.6 -0.22,-1.42 -0.38,-2.05 -0.12,-0.36 -0.45,-1.06 0.17,-1.13 0.42,-0.08 0.81,-0.3 1.15,-0.48 0.96,0.2 1.82,0.91 2.86,0.71 1.1,-0.11 2.47,-0.62 2.45,-1.94 0.16,-1 -0.69,-1.62 -1.41,-2.13 -0.16,-0.46 -0.02,-1.09 -0.52,-1.4 -0.45,-0.55 -0.43,-1.71 -1.38,-1.73 -0.72,-0.12 -1.46,0.05 -1.95,0.59 -0.4,0.24 -0.3,-0.53 -0.6,-0.62 -0.31,-0.79 -0.34,-1.73 0.1,-2.47 0.16,-0.36 0.01,-1.1 0.63,-0.98 0.41,0.01 0.38,-0.37 0.4,-0.64 0.61,-1 -0.15,-2.14 -0.3,-3.13 0.23,-0.47 0.38,-1.05 -0.1,-1.44 -0.8,-1.1 -2.3,-1.18 -3.29,-2.06 -0.38,-0.36 -0.84,-0.58 -1.33,-0.6 -0.84,-0.67 -2.13,-0.38 -2.92,-1.15 -0.45,-0.63 -0.74,-1.4 -0.95,-2.13 -0.05,-0.04 -0.12,-0.05 -0.18,-0.04 z"}}}}),b}); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/usa_states.js b/plugins/jquery-mapael/maps/usa_states.js new file mode 100644 index 0000000..7161ecf --- /dev/null +++ b/plugins/jquery-mapael/maps/usa_states.js @@ -0,0 +1,148 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of USA by state + * + * @source http://the55.net/_11/sketch/us_map + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('mapael')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'mapael'], factory); + } else { + // Browser globals + factory(jQuery, jQuery.mapael); + } +}(function ($, Mapael) { + + "use strict"; + + $.extend(true, Mapael, + { + maps :{ + usa_states : { + width : 959, + height : 593, + latLngToGrid: function(lat, lng, phi1, phi2, midLng, scale) { + var pi =Math.PI + , midLat = (phi1 + phi2) / 2 + , n, tmp1, tmp2, tmp3, x, y, p; + + n = (Math.sin(phi1 / 180 * pi) + Math.sin(phi2 / 180 * pi)) / 2; + tmp1 = Math.sqrt(Math.cos(phi1 / 180 * pi)) + 2 * n * Math.sin(phi1 / 180 * pi); + tmp2 = scale * Math.pow(tmp1 - 2 * n * Math.sin(midLat / 180 * pi),0.5) / n; + tmp3 = n * (lng - midLng); + p = scale * Math.pow(tmp1 - 2 * n * Math.sin(lat / 180 * pi),0.5) / n; + x = p * Math.sin(tmp3 / 180 * pi); + y = tmp2 - p * Math.cos(tmp3 / 180 * pi); + + return([x,y]); + }, + getCoords : function (lat, lon) { + var coords = {}, + xOffset, + yOffset, + scaleX, + scaleY, + phi1, + phi2, + midLng, + scale; + if(lat > 51) { // alaska + phi1= 15; + phi2= 105; + midLng = -134; + scale = 530; + coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale); + xOffset = 190; + yOffset = 543; + scaleX= 1; + scaleY= -1; + + } else if (lon < -140) { // hawaii + phi1= 0; + phi2= 26; + midLng = -166; + scale = 1280; + coords = this.latLngToGrid(lat, lon, phi1, phi2, midLng, scale); + xOffset = 115; + yOffset = 723; + scaleX= 1; + scaleY= -1; + } else { + xOffset = -17; + yOffset = -22; + scaleX = 10.05; + scaleY = 6.26; + + coords[0] = 50.0 + 124.03149777329222 * ((1.9694462586094064-(lat* Math.PI / 180)) * Math.sin(0.6010514667026994 * (lon + 96) * Math.PI / 180)); + coords[1] = 50.0 + 1.6155950752393982 * 124.03149777329222 * 0.02613325650382181 - 1.6155950752393982* 124.03149777329222 * (1.3236744353715044- (1.9694462586094064-(lat* Math.PI / 180)) * Math.cos(0.6010514667026994 * (lon + 96) * Math.PI / 180)); + } + return {x : (coords[0] * scaleX + xOffset), y : (coords[1] * scaleY + yOffset)}; + }, + elems : { + "HI" : "m 233.08751,519.30948 1.93993,-3.55655 2.26326,-0.32332 0.32332,0.8083 -2.1016,3.07157 -2.42491,0 z m 10.18466,-3.71821 6.14313,2.58657 2.10159,-0.32332 1.61661,-3.87987 -0.64664,-3.39488 -4.2032,-0.48498 -4.04153,1.77827 -0.96996,3.71821 z m 30.71563,10.023 3.7182,5.49647 2.42492,-0.32332 1.13163,-0.48498 1.45495,1.29329 3.71821,-0.16166 0.96997,-1.45495 -2.90991,-1.77827 -1.93993,-3.71822 -2.1016,-3.55654 -5.8198,2.9099 -0.64664,1.77828 z m 20.20765,8.89137 1.29329,-1.93994 4.68817,0.96996 0.64665,-0.48498 6.14312,0.64664 -0.32332,1.2933 -2.58658,1.45494 -4.36485,-0.32332 -5.49648,-1.6166 z m 5.33482,5.17315 1.93994,3.87987 3.07155,-1.13163 0.32333,-1.61662 -1.61661,-2.10159 -3.71821,-0.32332 0,1.29329 z m 6.95143,-1.13163 2.26326,-2.9099 4.68817,2.42492 4.36485,1.13163 4.36486,2.74824 0,1.93993 -3.55654,1.77828 -4.84985,0.96996 -2.42491,-1.45495 -4.84984,-6.62811 z m 16.65111,15.51947 1.61661,-1.29328 3.39489,1.61662 7.59807,3.55654 3.39489,2.10159 1.6166,2.42492 1.93994,4.36485 4.04153,2.58658 -0.32332,1.2933 -3.87987,3.23322 -4.20319,1.45495 -1.45495,-0.64664 -3.07157,1.77826 -2.42491,3.23323 -2.26326,2.9099 -1.77828,-0.16166 -3.55654,-2.58658 -0.32332,-4.52651 0.64664,-2.42492 -1.61661,-5.65814 -2.1016,-1.77828 -0.16166,-2.58658 2.26326,-0.96996 2.1016,-3.07156 0.48498,-0.96997 -1.61661,-1.77828 -0.32332,-2.1016 z", + "AK" : "m 158.07671,453.67502 -0.32332,85.35713 1.6166,0.96996 3.07157,0.16166 1.45494,-1.13162 2.58658,0 0.16167,2.9099 6.95143,6.78977 0.48499,2.58658 3.39488,-1.93994 0.64665,-0.16166 0.32332,-3.07156 1.45494,-1.61661 1.13164,-0.16166 1.93993,-1.45496 3.07156,2.1016 0.64665,2.90991 1.93993,1.13162 1.13163,2.42492 3.87988,1.77827 3.39488,5.98147 2.74823,3.87986 2.26326,2.74825 1.45496,3.7182 5.01149,1.77828 5.17317,2.10159 0.96996,4.36486 0.48498,3.07156 -0.96996,3.39489 -1.77828,2.26325 -1.61661,-0.8083 -1.45495,-3.07157 -2.74824,-1.45494 -1.77827,-1.13164 -0.80831,0.80831 1.45495,2.74825 0.16166,3.7182 -1.13163,0.48498 -1.93993,-1.93993 -2.10159,-1.29329 0.48498,1.61661 1.29328,1.77828 -0.8083,0.8083 c 0,0 -0.8083,-0.32332 -1.29328,-0.96997 -0.485,-0.64664 -2.1016,-3.39488 -2.1016,-3.39488 l -0.96997,-2.26326 c 0,0 -0.32332,1.29329 -0.96997,0.96996 -0.64665,-0.32332 -1.29329,-1.45494 -1.29329,-1.45494 l 1.77827,-1.93994 -1.45495,-1.45495 0,-5.0115 -0.8083,0 -0.8083,3.39488 -1.13164,0.485 -0.96996,-3.71822 -0.64665,-3.71821 -0.80831,-0.48498 0.32333,5.65815 0,1.13162 -1.45496,-1.29328 -3.55654,-5.98147 -2.1016,-0.48498 -0.64664,-3.71821 -1.61661,-2.9099 -1.61662,-1.13164 0,-2.26325 2.1016,-1.29329 -0.48498,-0.32332 -2.58658,0.64664 -3.39489,-2.42491 -2.58658,-2.90991 -4.84983,-2.58658 -4.04154,-2.58658 1.2933,-3.23322 0,-1.61661 -1.77828,1.61661 -2.9099,1.13163 -3.71821,-1.13163 -5.65815,-2.42491 -5.49647,0 -0.64664,0.48498 -6.46645,-3.87988 -2.1016,-0.32332 -2.74824,-5.8198 -3.55655,0.32332 -3.55655,1.45495 0.48499,4.52652 1.13162,-2.9099 0.96998,0.32332 -1.45496,4.36485 3.23322,-2.74824 0.64665,1.61661 -3.87987,4.36485 -1.29329,-0.32332 -0.48498,-1.93994 -1.29329,-0.8083 -1.29329,1.13163 -2.74824,-1.77827 -3.07157,2.1016 -1.77826,2.10159 -3.39489,2.1016 -4.68818,-0.16167 -0.48498,-2.10159 3.7182,-0.64665 0,-1.29328 -2.26326,-0.64666 0.96998,-2.42491 2.26325,-3.87987 0,-1.77827 0.16166,-0.80831 4.36486,-2.26326 0.96996,1.29329 2.74825,0 -1.29329,-2.58657 -3.71822,-0.32333 -5.01149,2.74824 -2.42492,3.39488 -1.77827,2.58659 -1.13163,2.26326 -4.20319,1.45494 -3.07157,2.58658 -0.323321,1.61662 2.263257,0.96997 0.808313,2.10158 -2.748249,3.23323 -6.466439,4.2032 -7.759747,4.20319 -2.101597,1.13162 -5.334818,1.13164 -5.334826,2.26325 1.778275,1.29329 -1.454954,1.45495 -0.484982,1.13163 -2.748238,-0.96997 -3.23322,0.16166 -0.808312,2.26326 -0.969963,0 0.323321,-2.42492 -3.556551,1.2933 -2.909899,0.96996 -3.394886,-1.29329 -2.909901,1.93993 -3.233224,0 -2.101597,1.2933 -1.616612,0.8083 -2.101595,-0.32332 -2.58658,-1.13163 -2.263257,0.64665 -0.969967,0.96996 -1.616613,-1.13162 0,-1.93994 3.071564,-1.29329 6.304787,0.64665 4.364853,-1.61662 2.101596,-2.10159 2.909902,-0.64665 1.778273,-0.80831 2.748241,0.16166 1.616612,1.2933 0.969963,-0.32332 2.263257,-2.74824 3.07157,-0.96998 3.39488,-0.64664 1.293294,-0.32332 0.646642,0.48498 0.808312,0 1.293284,-3.71821 4.041533,-1.45494 1.939936,-3.71821 2.263259,-4.52652 1.616615,-1.45495 0.323321,-2.58658 -1.616615,1.29329 -3.394893,0.64665 -0.646642,-2.42492 -1.293284,-0.32332 -0.969973,0.96996 -0.16166,2.90991 -1.454955,-0.16167 -1.454944,-5.8198 -1.293294,1.29328 -1.131624,-0.48498 -0.32332,-1.93993 -4.041533,0.16166 -2.101596,1.13163 -2.586578,-0.32332 1.454944,-1.45495 0.484981,-2.58658 -0.646641,-1.93994 1.454954,-0.96996 1.293284,-0.16166 -0.646642,-1.77828 0,-4.36485 -0.969963,-0.96997 -0.808312,1.45495 -6.143123,0 -1.454951,-1.29329 -0.646645,-3.87986 -2.101596,-3.55656 0,-0.96996 2.101596,-0.80831 0.161661,-2.1016 1.131628,-1.13162 -0.808305,-0.48498 -1.29329,0.48498 -1.131628,-2.74824 0.969967,-5.01151 4.526514,-3.23321 2.586575,-1.61662 1.939936,-3.7182 2.748249,-1.2933 2.586578,1.13164 0.323321,2.42492 2.424917,-0.32334 3.23322,-2.42491 1.616615,0.64665 0.969962,0.64664 1.616615,0 2.263259,-1.29329 0.808313,-4.36486 c 0,0 0.323321,-2.90989 0.969963,-3.39488 0.646642,-0.48498 0.969963,-0.96996 0.969963,-0.96996 l -1.131623,-1.93994 -2.58658,0.80831 -3.23323,0.8083 -1.939936,-0.48498 -3.556541,-1.77828 -5.011495,-0.16166 -3.556551,-3.7182 0.484981,-3.87987 0.646652,-2.42492 -2.101596,-1.77827 -1.939938,-3.71822 0.484983,-0.8083 6.789771,-0.48498 2.101596,0 0.969963,0.96996 0.646652,0 -0.16166,-1.61661 3.879862,-0.64664 2.586577,0.32332 1.454955,1.13163 -1.454955,2.1016 -0.484981,1.45494 2.748249,1.61662 5.011497,1.77827 1.778276,-0.96996 -2.263257,-4.36485 -0.969974,-3.23323 0.969974,-0.80831 -3.394891,-1.93993 -0.484983,-1.13164 0.484983,-1.6166 -0.808304,-3.87987 -2.909909,-4.68818 -2.424918,-4.20319 2.909909,-1.93994 3.233222,0 1.778276,0.64665 4.203192,-0.16166 3.718205,-3.55654 1.131633,-3.07157 3.718212,-2.42492 1.616604,0.96997 2.748239,-0.64665 3.718209,-2.1016 1.13164,-0.16166 0.96996,0.80832 4.52651,-0.16167 2.74824,-3.07156 1.13163,0 3.55655,2.42491 1.93993,2.1016 -0.48498,1.13163 0.64664,1.13163 1.61662,-1.61661 3.87987,0.32332 0.32332,3.7182 1.93994,1.45496 7.11309,0.64664 6.30479,4.20319 1.45494,-0.96996 5.17317,2.58658 2.10159,-0.64664 1.93994,-0.80832 4.84983,1.93994 4.36486,2.9099 z m -115.102797,28.93736 2.101596,5.33482 -0.161662,0.96997 -2.909902,-0.32333 -1.778273,-4.04153 -1.778273,-1.45494 -2.424919,0 -0.16166,-2.58659 1.778273,-2.42492 1.131629,2.42492 1.45495,1.45495 2.748241,0.64665 z m -2.58658,33.46387 3.718209,0.80831 3.718207,0.96996 0.808307,0.96998 -1.616612,3.7182 -3.071564,-0.16166 -3.394885,-3.55654 -0.161662,-2.74825 z m -20.692636,-14.06452 1.13163,2.58657 1.131628,1.61662 -1.131628,0.8083 -2.101597,-3.07156 0,-1.93993 0.969967,0 z m -13.7412027,73.07087 3.3948853,-2.26326 3.3948854,-0.96997 2.58658,0.32332 0.484983,1.61661 1.939935,0.48499 1.939934,-1.93993 -0.323322,-1.61661 2.748241,-0.64665 2.909902,2.58658 -1.131629,1.77827 -4.364852,1.13163 -2.748242,-0.48498 -3.718207,-1.13163 -4.3648533,1.45495 -1.616612,0.32332 -1.1316284,-0.64664 z m 48.9833487,-4.52651 1.616612,1.93993 2.101593,-1.61661 -1.454948,-1.2933 -2.263257,0.96998 z m 2.909902,3.07155 1.131624,-2.26325 2.101597,0.32332 -0.808303,1.93993 -2.424918,0 z m 23.602535,-1.93993 1.454954,1.77827 0.969974,-1.13162 -0.808313,-1.93994 -1.616615,1.29329 z m 8.72971,-12.44791 1.131633,5.8198 2.909899,0.80831 5.011495,-2.90991 4.364853,-2.58658 -1.6166,-2.42491 0.48498,-2.42492 -2.1016,1.29329 -2.909898,-0.80831 1.616605,-1.13162 1.939933,0.8083 3.87987,-1.77828 0.48499,-1.45494 -2.42492,-0.80831 0.8083,-1.93994 -2.74824,1.93994 -4.688172,3.55655 -4.849834,2.9099 -1.293294,1.13163 z m 42.35524,-19.88433 2.42492,-1.45495 -0.96997,-1.77828 -1.77827,0.96997 0.32332,2.26326 z", + "FL" : "m 759.8167,439.1428 2.26566,7.3186 3.7297,9.74226 5.33479,9.3763 3.71819,6.30476 4.84982,5.49646 4.04151,3.71819 1.6166,2.90989 -1.13162,1.29328 -0.8083,1.29328 2.90988,7.43639 2.90989,2.90988 2.58657,5.3348 3.55653,5.81978 4.52649,8.24468 1.29329,7.59804 0.48498,11.96288 0.64664,1.77826 -0.32332,3.39487 -2.42491,1.29329 0.32332,1.93992 -0.64664,1.93993 0.32332,2.4249 0.48498,1.93993 -2.74822,3.23321 -3.07155,1.45494 -3.87985,0.16166 -1.45495,1.61661 -2.4249,0.96996 -1.29329,-0.48498 -1.13162,-0.96996 -0.32332,-2.90989 -0.80831,-3.39487 -3.39487,-5.17314 -3.55653,-2.26324 -3.87985,-0.32332 -0.8083,1.29328 -3.07155,-4.36483 -0.64664,-3.55653 -2.58657,-4.04151 -1.77826,-1.13163 -1.61661,2.10159 -1.77826,-0.32332 -2.10159,-5.01148 -2.90989,-3.87985 -2.90989,-5.33479 -2.58656,-3.07155 -3.55653,-3.71819 2.10158,-2.42491 3.23321,-5.49646 -0.16166,-1.6166 -4.52649,-0.96996 -1.61661,0.64664 0.32333,0.64664 2.58656,0.96996 -1.45494,4.5265 -0.8083,0.48498 -1.77827,-4.04151 -1.29328,-4.84982 -0.32332,-2.74823 1.45494,-4.68815 0,-9.53797 -3.07155,-3.71819 -1.29328,-3.07155 -5.17314,-1.29328 -1.93992,-0.64664 -1.61661,-2.58657 -3.39487,-1.61661 -1.13162,-3.39487 -2.74823,-0.96996 -2.42491,-3.71819 -4.20317,-1.45494 -2.90989,-1.45495 -2.58656,0 -4.04152,0.80831 -0.16166,1.93992 0.80831,0.96996 -0.48499,1.13163 -3.07154,-0.16166 -3.71819,3.55653 -3.55654,1.93992 -3.87985,0 -3.23321,1.29329 -0.32332,-2.74823 -1.6166,-1.93993 -2.90989,-1.13162 -1.6166,-1.45495 -8.08303,-3.87985 -7.59804,-1.77826 -4.36483,0.64664 -5.98144,0.48498 -5.98144,2.10159 -3.47924,0.61296 -0.23792,-8.04975 -2.58657,-1.93992 -1.77827,-1.77827 0.32332,-3.07156 10.18462,-1.29328 25.5424,-2.90989 6.78975,-0.64664 5.436,0.28027 2.58657,3.87986 1.45494,1.45494 8.09816,0.51522 10.81975,-0.64664 21.51239,-1.29329 5.44572,-0.67437 5.10758,0.20451 0.42683,2.90989 2.233,0.8083 0.23494,-4.63 -1.52822,-4.17295 1.3084,-1.43983 5.55463,0.45475 5.17314,0.32332 z m 12.54541,132.40508 2.42492,-0.64664 1.29328,-0.24249 1.45496,-2.34409 2.34408,-1.61661 1.29329,0.48499 1.69744,0.32332 0.40415,1.05079 -3.4757,1.21246 -4.2032,1.45495 -2.34408,1.21246 -0.88914,-0.88914 z m 13.4987,-5.01149 1.21246,1.0508 2.74824,-2.10159 5.33481,-4.20319 3.7182,-3.87987 2.50575,-6.6281 0.96997,-1.69744 0.16166,-3.39488 -0.72748,0.48498 -0.96996,2.82907 -1.45496,4.60733 -3.23322,5.254 -4.36484,4.20318 -3.39488,1.93993 -2.50575,1.53578 z", + "NH" : "m 880.79902,142.42476 0.869,-1.0765 1.09022,-3.29102 -2.54308,-0.91347 -0.48499,-3.07156 -3.87985,-1.13162 -0.32332,-2.74824 -7.27475,-23.44082 -4.60142,-14.542988 -0.89708,-0.0051 -0.64664,1.616605 -0.64664,-0.484981 -0.96997,-0.969963 -1.45494,1.939925 -0.0485,5.032054 0.31165,5.667218 1.93992,2.74824 0,4.04152 -3.7182,5.06278 -2.58657,1.13164 0,1.13162 1.13163,1.77827 0,8.56802 -0.80831,9.21467 -0.16166,4.84982 0.96997,1.2933 -0.16166,4.52649 -0.48499,1.77828 0.96881,0.70922 16.78767,-4.42455 2.17487,-0.60245 1.84357,-2.77333 3.60523,-1.61312 z", + "MI" : "M581.61931,82.059006 L 583.4483,80.001402 L 585.62022,79.201221 L 590.99286,75.314624 L 593.27908,74.743065 L 593.73634,75.200319 L 588.59232,80.344339 L 585.27728,82.287628 L 583.21967,83.202124 L 581.61931,82.059006 z M 667.79369,114.18719 L 668.44033,116.69293 L 671.67355,116.85459 L 672.96684,115.64213 C 672.96684,115.64213 672.88601,114.18719 672.56269,114.02552 C 672.23936,113.86386 670.94608,112.16642 670.94608,112.16642 L 668.76366,112.40891 L 667.14704,112.57057 L 666.82372,113.7022 L 667.79369,114.18719 z M 567.49209,111.21318 L 568.20837,110.63278 L 570.9566,109.82447 L 574.51313,107.56123 L 574.51313,106.59126 L 575.15978,105.94462 L 581.14121,104.97466 L 583.56612,103.03473 L 587.93095,100.93315 L 588.09261,99.639864 L 590.03254,96.729975 L 591.8108,95.921673 L 593.10409,94.143408 L 595.36733,91.880161 L 599.73217,89.455254 L 604.42032,88.970273 L 605.55194,90.101896 L 605.22862,91.071859 L 601.51043,92.041822 L 600.05549,95.113371 L 597.79224,95.921673 L 597.30726,98.34658 L 594.88235,101.57979 L 594.55903,104.16636 L 595.36733,104.65134 L 596.3373,103.51972 L 599.89383,100.60983 L 601.18711,101.90311 L 603.45036,101.90311 L 606.68357,102.87307 L 608.13851,104.0047 L 609.59345,107.07625 L 612.34168,109.82447 L 616.22153,109.66281 L 617.67648,108.69285 L 619.29308,109.98613 L 620.90969,110.47112 L 622.20297,109.66281 L 623.33459,109.66281 L 624.9512,108.69285 L 628.99271,105.13632 L 632.38758,104.0047 L 639.01566,103.68138 L 643.54215,101.74145 L 646.12872,100.44817 L 647.58367,100.60983 L 647.58367,106.26794 L 648.06865,106.59126 L 650.97853,107.39957 L 652.91846,106.91458 L 659.06156,105.29798 L 660.19318,104.16636 L 661.64813,104.65134 L 661.64813,111.60274 L 664.88134,114.67429 L 666.17462,115.32093 L 667.4679,116.29089 L 666.17462,116.61421 L 665.36632,116.29089 L 661.64813,115.80591 L 659.54654,116.45255 L 657.28329,116.29089 L 654.05008,117.74584 L 652.27182,117.74584 L 646.45204,116.45255 L 641.27891,116.61421 L 639.33898,119.20078 L 632.38758,119.84742 L 629.96267,120.65572 L 628.83105,123.72727 L 627.53777,124.8589 L 627.05279,124.69724 L 625.59784,123.08063 L 621.07135,125.50554 L 620.42471,125.50554 L 619.29308,123.88893 L 618.48478,124.05059 L 616.54486,128.41543 L 615.57489,132.45694 L 612.39377,139.45774 L 611.21701,138.42347 L 609.84527,137.39215 L 607.90449,127.10413 L 604.36001,125.73408 L 602.30743,123.44785 L 590.18707,120.70437 L 587.3318,119.67473 L 579.10138,117.50199 L 571.21139,116.35887 L 567.49209,111.21318 z,M697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5 C 674.5,166.5 671.9,165.1 672.1,164.4 C 672.3,163.8 672.6,159.4 672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2z", + "VT" : "m 844.48416,154.05791 0.3167,-5.34563 -2.89071,-10.78417 -0.64664,-0.32332 -2.9099,-1.29329 0.8083,-2.90989 -0.8083,-2.10159 -2.70005,-4.63998 0.96997,-3.87986 -0.80831,-5.17315 -2.42491,-6.46644 -0.80557,-4.92251 26.41936,-6.73182 0.3087,5.52221 1.91626,2.74223 0,4.04152 -3.70715,5.05799 -2.58657,1.14267 -0.011,1.12057 1.30997,1.51912 -0.31093,8.09797 -0.60943,9.25886 -0.22795,5.55694 0.96996,1.29329 -0.16166,4.57069 -0.48498,1.68989 1.01418,0.72716 -7.43755,1.50671 -4.50174,0.72383 z", + "ME" : "m 922.83976,78.830719 1.93993,2.101586 2.26325,3.718191 0,1.939926 -2.10159,4.688153 -1.93993,0.646642 -3.39487,3.071549 -4.84981,5.496454 c 0,0 -0.64664,0 -1.29328,0 -0.64664,0 -0.96997,-2.101584 -0.96997,-2.101584 l -1.77826,0.16166 -0.96996,1.454944 -2.42491,1.45495 -0.96996,1.45494 1.6166,1.45494 -0.48498,0.64665 -0.48498,2.74822 -1.93993,-0.16166 0,-1.6166 -0.32332,-1.29329 -1.45494,0.32333 -1.77827,-3.23321 -2.10158,1.29328 1.29328,1.45494 0.32332,1.13163 -0.8083,1.29328 0.32332,3.07155 0.16166,1.6166 -1.6166,2.58657 -2.90989,0.48498 -0.32332,2.90989 -5.3348,3.07155 -1.29328,0.48498 -1.61661,-1.45494 -3.07155,3.55653 0.96997,3.23321 -1.45495,1.29328 -0.16166,4.36483 -1.12328,6.25936 -2.46225,-1.15595 -0.48499,-3.07156 -3.87985,-1.13163 -0.32332,-2.74824 -7.27475,-23.44082 -4.69858,-14.639742 1.42054,-0.118165 1.51379,0.409899 0,-2.586568 1.3083,-4.496456 2.58657,-4.688153 1.45495,-4.041512 -1.93993,-2.424907 0,-5.981437 0.8083,-0.969963 0.80831,-2.748228 -0.16166,-1.454944 -0.16167,-4.849814 1.77827,-4.849814 2.90989,-8.891326 2.10158,-4.203172 1.29329,0 1.29328,0.16166 0,1.131623 1.29329,2.263247 2.74822,0.646642 0.80831,-0.808303 0,-0.969962 4.04151,-2.909889 1.77826,-1.778265 1.45495,0.161661 5.98143,2.424907 1.93993,0.969962 9.05299,29.907187 5.98143,0 0.80831,1.939926 0.16166,4.849814 2.90988,2.263246 0.80831,0 0.16166,-0.484981 -0.48498,-1.131623 2.74822,-0.161661 z m -20.93175,30.147531 1.53578,-1.53578 1.37412,1.0508 0.56581,2.42492 -1.69744,0.88913 -1.77827,-2.82907 z m 6.70893,-5.90062 1.77827,1.8591 c 0,0 1.29329,0.0808 1.29329,-0.2425 0,-0.32332 0.24249,-2.02076 0.24249,-2.02076 l 0.88914,-0.8083 -0.80831,-1.77828 -2.02076,0.72748 -1.37412,2.26326 z", + "RI" : "m 874.07001,178.89536 -3.69579,-14.95599 6.26928,-1.84514 2.19113,1.92712 3.30649,4.32065 2.6879,4.40209 -2.99934,1.62479 -1.29328,-0.16166 -1.13162,1.77827 -2.42491,1.93992 -2.90986,0.96995 z", + "NY" : "m 830.37944,188.7456 -1.13163,-0.96996 -2.58658,-0.16166 -2.26324,-1.93992 -1.63061,-6.12913 -3.45846,0.0905 -2.44371,-2.7082 -19.38532,4.38194 -43.00178,8.72969 -7.52965,1.22799 -0.73816,-6.46834 1.4281,-1.12538 1.29328,-1.13162 0.96997,-1.61661 1.77826,-1.13162 1.93993,-1.77827 0.48498,-1.6166 2.10158,-2.74823 1.13163,-0.96996 -0.16166,-0.96997 -1.29329,-3.07154 -1.77826,-0.16166 -1.93993,-6.1431 2.90989,-1.77827 4.36483,-1.45494 4.04152,-1.29329 3.23321,-0.48498 6.30475,-0.16166 1.93993,1.29329 1.6166,0.16166 2.10159,-1.29329 2.58657,-1.13162 5.17313,-0.48498 2.10159,-1.77827 1.77826,-3.23321 1.61661,-1.93992 2.10158,0 1.93993,-1.13163 0.16166,-2.26324 -1.45494,-2.10159 -0.32332,-1.45494 1.13162,-2.10159 0,-1.45494 -1.77827,0 -1.77826,-0.8083 -0.8083,-1.13163 -0.16166,-2.58657 5.81977,-5.49645 0.64664,-0.8083 1.45495,-2.90989 2.90989,-4.5265 2.74823,-3.71819 2.10158,-2.4249 2.4151,-1.82561 3.08136,-1.24594 5.49645,-1.29329 3.23321,0.16166 4.5265,-1.45494 7.56519,-2.07117 0.51979,4.97967 2.42492,6.46644 0.8083,5.17315 -0.96996,3.87986 2.58657,4.5265 0.8083,2.10159 -0.8083,2.9099 2.9099,1.29328 0.64664,0.32332 3.07156,10.99294 -0.53629,5.05967 -0.48498,10.83127 0.8083,5.49647 0.8083,3.55654 1.45495,7.27474 0,8.08304 -1.13163,2.26325 1.83933,1.99279 0.79655,1.67842 -1.93992,1.77827 0.32332,1.29328 1.29328,-0.32332 1.45495,-1.29328 2.26324,-2.58657 1.13163,-0.64664 1.6166,0.64664 2.26325,0.16166 7.92136,-3.87985 2.90989,-2.74823 1.29328,-1.45494 4.20317,1.6166 -3.39487,3.55653 -3.87985,2.90989 -7.11306,5.33479 -2.58656,0.96997 -5.81978,1.93992 -4.04151,1.13163 -1.17474,-0.53293 -0.24402,-3.68853 0.48498,-2.74824 -0.16166,-2.10158 -2.81351,-1.699 -4.5265,-0.96997 -3.87986,-1.13162 -3.7182,-1.77828 z", + "PA" : "m 825.1237,224.69205 1.30842,-0.271 2.32953,-1.25325 1.21188,-2.48307 1.61661,-2.26325 3.23321,-3.07156 0,-0.8083 -2.42491,-1.6166 -3.55654,-2.42492 -0.96996,-2.58657 -2.74824,-0.32332 -0.16166,-1.13163 -0.8083,-2.74823 2.26326,-1.13162 0.16166,-2.42492 -1.2933,-1.29329 0.16166,-1.61661 1.93994,-3.07155 0,-3.07156 2.69763,-2.64588 -0.92028,-0.67498 -2.52408,-0.19291 -2.29449,-1.93992 -1.54992,-6.11606 -3.50458,0.10052 -2.45523,-2.70333 -18.09099,4.19777 -43.00178,8.72969 -8.89135,1.45494 -0.62067,-6.52139 -5.36253,5.06765 -1.29329,0.48498 -4.20229,3.00889 2.91076,19.13745 2.48166,9.72936 3.5718,19.26149 3.26931,-0.63768 11.94358,-1.50247 37.92663,-7.6652 14.87621,-2.82332 8.30035,-1.62236 0.26711,-0.23853 2.1016,-1.61662 2.10158,-0.68084 z", + "NJ" : "m 829.67942,188.46016 -2.32255,2.73427 0,3.07156 -1.93994,3.07155 -0.16166,1.61662 1.2933,1.29328 -0.16166,2.42492 -2.26326,1.13162 0.8083,2.74823 0.16166,1.13163 2.74824,0.32332 0.96996,2.58657 3.55654,2.42492 2.42491,1.6166 0,0.80831 -2.98321,2.69656 -1.61661,2.26324 -1.45495,2.74824 -2.26325,1.29328 -0.46245,1.60248 -0.2425,1.21246 -0.60923,2.60674 1.09227,2.24419 3.23321,2.90989 4.84981,2.26325 4.04151,0.64664 0.16166,1.45494 -0.8083,0.96996 0.32332,2.74823 0.8083,0 2.10159,-2.4249 0.8083,-4.84982 2.74823,-4.04151 3.07155,-6.46642 1.13162,-5.49645 -0.64664,-1.13163 -0.16166,-9.37631 -1.61661,-3.39486 -1.13162,0.8083 -2.74823,0.32332 -0.48498,-0.48498 1.13163,-0.96997 2.10158,-1.93992 0.0631,-1.09383 -0.38439,-3.43384 0.57337,-2.74824 -0.11747,-1.96901 -2.80754,-1.75035 -5.09214,-1.17576 -4.13744,-1.38163 -3.58563,-1.64569 z", + "DE" : "m 825.6261,228.2791 0.36831,-2.14689 0.37507,-1.69105 -1.623,0.39776 -1.61546,0.46756 -2.20626,1.7643 1.72012,5.04288 2.26326,5.65812 2.10158,9.69965 1.61662,6.30478 5.01148,-0.16166 6.14212,-1.18068 -2.26423,-7.38627 -0.96997,0.48498 -3.55653,-2.4249 -1.77826,-4.68816 -1.93993,-3.55653 -3.14712,-2.87031 -0.86416,-2.09812 0.36636,-1.61546 z", + "MD" : "m 839.79175,252.41476 -6.00855,1.20384 -5.1429,0.11746 -1.84356,-6.92233 -1.92481,-9.16932 -2.57262,-6.18845 -1.28838,-4.39833 -7.50602,1.62236 -14.87621,2.82332 -37.45143,7.5509 1.1313,5.01166 0.96996,5.65811 0.32332,-0.32332 2.1016,-2.4249 2.26324,-2.61766 2.42491,-0.61556 1.45496,-1.45495 1.77826,-2.58657 1.29328,0.64665 2.90989,-0.32333 2.58658,-2.10158 2.00689,-1.45327 1.84523,-0.48498 1.64435,1.12995 2.90989,1.45494 1.93992,1.77827 1.21246,1.53578 4.12235,1.69743 0,2.90989 5.49646,1.29329 1.14444,0.54198 1.4119,-2.02832 2.88197,1.97016 -1.27817,2.48193 -0.76527,3.98566 -1.77826,2.58657 0,2.10159 0.64664,1.77827 5.06395,1.35569 4.3111,-0.0617 3.07154,0.96997 2.10159,0.32332 0.96996,-2.10159 -1.45494,-2.10158 0,-1.77827 -2.42491,-2.10159 -2.10158,-5.49645 1.29328,-5.3348 -0.16166,-2.10158 -1.29328,-1.29329 c 0,0 1.45494,-1.6166 1.45494,-2.26324 0,-0.64665 0.48498,-2.10159 0.48498,-2.10159 l 1.93993,-1.29328 1.93992,-1.61661 0.48498,0.96997 -1.45494,1.6166 -1.29328,3.71819 0.32332,1.13162 1.77826,0.32332 0.48498,5.49646 -2.10158,0.96996 0.32332,3.55653 0.48498,-0.16166 1.13162,-1.93992 1.61661,1.77826 -1.61661,1.29329 -0.32332,3.39487 2.58657,3.39487 3.87985,0.48498 1.61661,-0.8083 3.23655,4.18293 1.35835,0.5363 6.65367,-2.79695 2.00758,-4.02387 -0.43596,-4.90798 z m -15.96958,9.02872 1.13162,2.50575 0.16166,1.77827 1.13163,1.8591 c 0,0 0.88914,-0.88914 0.88914,-1.21246 0,-0.32332 -0.72747,-3.07156 -0.72747,-3.07156 l -0.72748,-2.34409 -1.8591,0.48499 z", + "VA" : "m 831.63885,266.06892 -0.14391,-1.94703 6.45343,-2.54988 -0.77041,3.21784 -2.91995,3.77911 -0.41809,4.58582 0.46175,3.39044 -1.82797,4.97816 -2.16427,1.91614 -1.47034,-4.64081 0.44589,-5.44911 1.587,-4.18307 0.76687,-3.09761 z m 3.34019,28.30136 -58.17418,12.57543 -37.42697,5.27907 -6.67833,-0.37518 -2.58525,1.92638 -7.33913,0.22069 -8.38211,0.97767 -10.91496,1.61462 10.46943,-5.6112 -0.0131,-2.07493 1.52005,-2.14613 10.55378,-11.50143 3.94672,4.47746 3.78301,0.96398 2.54346,-1.14032 2.23722,-1.31116 2.53661,1.34352 3.91417,-1.42776 1.87673,-4.55634 2.60092,0.54002 2.85524,-2.13125 1.79927,0.4936 2.82721,-3.67657 0.34825,-2.08311 -0.96366,-1.27557 1.00277,-1.86663 5.27427,-12.27715 0.61677,-5.73508 1.22889,-0.52354 2.17853,2.44287 3.93586,-0.30117 1.92921,-7.57363 2.79399,-0.56086 1.04975,-2.74107 2.57982,-2.34688 2.77183,-5.69519 0.0849,-5.06755 9.82151,3.82282 c 0.68085,0.34042 0.83288,-5.04915 0.83288,-5.04915 l 3.65256,1.59833 0.0683,2.93816 5.78425,1.29949 2.13295,1.1762 1.65992,2.05569 -0.65455,3.64867 -1.94744,2.59098 0.10985,2.05907 0.58896,1.85291 4.97875,1.26843 4.45127,0.0399 3.06883,0.95864 1.94351,0.3093 0.71481,3.08846 3.19044,0.40253 0.86807,1.20002 -0.43949,4.69008 1.37473,1.10255 -0.47895,1.93039 1.22941,0.78977 -0.2218,1.3846 -2.69399,-0.0949 0.089,1.61552 2.28099,1.54287 0.12154,1.4119 1.77311,1.78538 0.49179,2.52413 -2.55304,1.38131 1.57222,1.4943 5.80102,-1.68583 3.60762,6.01193 z", + "WV" : "m 761.18551,238.96731 1.11201,4.94453 1.08344,6.03133 2.13029,-2.58034 2.26324,-3.07156 2.53838,-0.61555 1.45495,-1.45494 1.77827,-2.58657 1.44498,0.64664 2.90989,-0.32332 2.58658,-2.10159 2.00689,-1.45326 1.84523,-0.48499 1.30392,1.01647 3.64325,1.82163 1.93993,1.77827 1.37412,1.29328 -0.76172,5.55494 -5.83491,-2.54122 -4.24525,-1.62202 -0.10114,5.17843 -2.74764,5.53673 -2.53003,2.42666 -1.19209,2.74939 -2.64358,0.5001 -0.89784,3.60188 -1.04323,3.94967 -3.96824,0.34074 -2.32373,-2.43888 -1.07115,0.55941 -0.63268,5.4697 -1.35029,3.5345 -4.9584,10.95497 0.89669,1.1607 -0.20586,1.90854 -2.80869,3.88447 -1.8085,-0.54429 -2.96805,2.15974 -2.54238,-0.57221 -1.99923,4.55557 c 0,0 -3.25931,1.43022 -3.92291,1.36772 -0.16051,-0.0151 -2.4691,-1.2491 -2.4691,-1.2491 l -2.33652,1.37937 -2.4098,1.0444 -3.74469,-0.88912 -1.1214,-1.16828 -2.19222,-3.02336 -3.14259,-1.98812 -1.71157,-3.62324 -4.28488,-3.46819 -0.64665,-2.26325 -2.58657,-1.45495 -0.80831,-1.6166 -0.24249,-5.25398 2.18242,-0.0808 1.93994,-0.8083 0.16166,-2.74823 1.6166,-1.45495 0.16166,-5.01148 0.96996,-3.87986 1.29329,-0.64664 1.29328,1.13162 0.48499,1.77827 1.77827,-0.96997 0.48498,-1.6166 -1.13162,-1.77827 0,-2.42491 0.96996,-1.29329 2.26325,-3.39487 1.29328,-1.45494 2.1016,0.48498 2.26324,-1.61662 3.07155,-3.39487 2.26326,-3.87986 0.32332,-5.65811 0.48498,-5.01149 0,-4.68816 -1.13162,-3.07155 0.96996,-1.45496 1.28348,-1.29328 3.49125,19.82712 4.63101,-0.75115 12.42832,-1.79965 z", + "OH" : "m 735.32497,193.32832 -6.09354,4.05335 -3.87985,2.26325 -3.39487,3.71819 -4.04151,3.87985 -3.23321,0.8083 -2.90989,0.48498 -5.49646,2.58657 -2.10158,0.16166 -3.39487,-3.07155 -5.17314,0.64665 -2.58656,-1.45495 -2.38107,-1.35083 -4.89257,0.70341 -10.18462,1.61661 -11.20687,2.18473 1.29329,14.63028 1.77827,13.74117 2.58656,23.4408 0.56582,4.83117 4.12235,-0.12902 2.42491,-0.80831 3.3638,1.50314 2.07049,4.36483 5.13894,-0.0171 1.89174,2.1187 1.76117,-0.0653 2.53839,-1.34146 2.50417,0.3715 5.42128,0.48268 1.72697,-2.13268 2.34565,-1.29328 2.07049,-0.68085 0.64664,2.74824 1.77828,0.96996 3.47569,2.34407 2.18242,-0.0808 1.33312,-0.49248 0.18471,-2.76153 1.58536,-1.45496 0.0992,-4.79272 c 0,0 1.02396,-4.10906 1.02396,-4.10906 l 1.29927,-0.60128 1.32135,1.14774 0.53815,1.69702 1.71913,-1.03742 0.43898,-1.46075 -1.11669,-1.90306 0.0663,-2.31443 0.749,-1.07231 2.15276,-3.30648 1.05022,-1.54334 2.10159,0.48498 2.26325,-1.61661 3.07155,-3.39487 2.77149,-4.07873 0.32033,-5.05551 0.48498,-5.01149 -0.17678,-5.30688 -0.95484,-2.89478 0.35124,-1.18978 1.80439,-1.75011 -2.28879,-9.04733 -2.90989,-19.36177 z", + "IN" : "m 619.56954,299.97132 0.0653,-2.85858 0.48499,-4.52651 2.26324,-2.90988 1.77828,-3.87987 2.58656,-4.20317 -0.48498,-5.81979 -1.77826,-2.74823 -0.32332,-3.23321 0.8083,-5.49647 -0.48498,-6.95141 -1.2933,-16.00441 -1.29328,-15.35776 -0.97047,-11.72002 3.07106,0.88951 1.45495,0.96996 1.13162,-0.32332 2.10159,-1.93992 2.82957,-1.61699 5.0928,-0.16204 21.98587,-2.26326 5.57573,-0.53316 1.50314,15.95621 4.25135,36.84155 0.59846,5.7716 -0.3715,2.26325 1.22798,1.79537 0.0964,1.37255 -2.52129,1.59951 -3.53943,1.55131 -3.20213,0.55028 -0.59846,4.86693 -4.57469,3.31247 -2.79642,4.01044 0.32332,2.37673 -0.58134,1.5342 -3.32647,0 -1.58553,-1.6166 -2.49331,1.2622 -2.68296,1.50314 0.16167,3.05445 -1.19379,0.25803 -0.46788,-1.01814 -2.16688,-1.50314 -3.25032,1.34148 -1.55131,3.00625 -1.43784,-0.8083 -1.45495,-1.59951 -4.46434,0.48499 -5.59283,0.96996 -2.90989,1.55132 z", + "IL" : "m 619.54145,300.34244 0.0312,-3.22971 0.56739,-4.64596 2.33253,-2.91586 1.86665,-4.07576 2.23302,-3.99533 -0.3715,-5.2524 -2.00521,-3.54257 -0.0964,-3.34668 0.69483,-5.26951 -0.82541,-7.17837 -1.06634,-15.77745 -1.29328,-15.01734 -0.92228,-11.6392 -0.27251,-0.92139 -0.8083,-2.58657 -1.29328,-3.71819 -1.61661,-1.77827 -1.45494,-2.58656 -0.23357,-5.48896 -45.79643,2.59825 0.22862,2.37195 2.28623,0.68587 0.91448,1.14311 0.45725,1.82898 3.88658,3.42934 0.68588,2.28623 -0.68588,3.42934 -1.82898,3.65796 -0.68586,2.51484 -2.28623,1.82899 -1.82898,0.68587 -5.25832,1.37173 -0.68587,1.82898 -0.68587,2.05761 0.68587,1.37174 1.82898,1.60036 -0.22862,4.1152 -1.82899,1.60036 -0.68586,1.60036 0,2.74347 -1.82898,0.45724 -1.60036,1.14312 -0.22862,1.37174 0.22862,2.0576 -1.71467,1.31457 -1.0288,2.80064 0.45724,3.65795 2.28623,7.31593 7.31593,7.54455 5.48693,3.65796 -0.22862,4.34383 0.9145,1.37174 6.40143,0.45724 2.74347,1.37174 -0.68586,3.65796 -2.28623,5.94419 -0.68587,3.20072 2.28622,3.88658 6.40144,5.25832 4.57246,0.68587 2.05759,5.0297 2.05761,3.20071 -0.91449,2.97209 1.60036,4.11521 1.82898,2.05761 1.41403,-0.88069 0.90766,-2.07479 2.21308,-1.7472 2.13147,-0.6144 2.60253,1.1798 3.62699,1.3757 1.18895,-0.29823 0.19987,-2.25845 -1.2873,-2.41179 0.30422,-2.37672 1.8384,-1.34745 3.02254,-0.81029 1.2609,-0.45852 -0.61261,-1.38688 -0.79137,-2.35437 1.4326,-0.98096 1.15747,-3.21403 z", + "CT" : "m 874.06831,178.86288 -3.67743,-14.87881 -4.71882,0.92031 -21.22878,4.74309 1.00019,3.22567 1.45495,7.27474 0.17678,8.96692 -1.22002,2.17487 1.92079,1.93234 4.27153,-3.90564 3.55653,-3.23321 1.93992,-2.10159 0.80831,0.64664 2.74822,-1.45494 5.17314,-1.13162 7.79469,-3.17877 z", + "WI" : "m 615.06589,197.36866 -0.0667,-3.15742 -1.17911,-4.5265 -0.64664,-6.14309 -1.13162,-2.42491 0.96996,-3.07155 0.8083,-2.90989 1.45495,-2.58656 -0.64665,-3.39487 -0.64664,-3.55653 0.48498,-1.77827 1.93993,-2.42491 0.16166,-2.74823 -0.8083,-1.29328 0.64664,-2.58657 -0.45252,-4.17071 2.74823,-5.65811 2.90989,-6.78974 0.16166,-2.26325 -0.32332,-0.96996 -0.80831,0.48498 -4.20317,6.30476 -2.74823,4.04151 -1.93992,1.77827 -0.8083,2.26324 -1.95495,0.8083 -1.13162,1.93993 -1.45495,-0.32332 -0.16166,-1.77827 1.29329,-2.4249 2.10158,-4.68816 1.77827,-1.6166 0.99083,-2.35785 -2.56045,-1.90134 -1.97482,-10.36699 -3.54747,-1.34198 -1.94626,-2.30833 -12.12971,-2.72164 -2.87589,-1.01205 -8.21312,-2.16729 -7.91792,-1.15875 -3.76516,-5.13067 -0.7504,0.55401 -1.19791,-0.16166 -0.64665,-1.13162 -1.33401,0.29655 -1.13163,0.16166 -1.77826,0.96996 -0.96997,-0.64664 0.64665,-1.93993 1.93992,-3.07155 1.13162,-1.13162 -1.93992,-1.45494 -2.10159,0.8083 -2.90989,1.93992 -7.43638,3.23321 -2.90989,0.64664 -2.90988,-0.48498 -0.98173,-0.87825 -2.1167,2.83518 -0.22862,2.74347 0,8.45903 -1.14312,1.60037 -5.25832,3.88657 -2.28622,5.94419 0.45724,0.22862 2.51485,2.05761 0.68586,3.20072 -1.82898,3.20071 0,3.88659 0.45725,6.63005 2.97209,2.9721 3.42935,0 1.82898,3.20072 3.42933,0.45724 3.88659,5.71557 7.0873,4.11521 2.0576,2.74347 0.9145,7.43024 0.68586,3.31502 2.28623,1.60036 0.22862,1.37174 -2.0576,3.42933 0.22862,3.20073 2.51485,3.88658 2.51485,1.14311 2.97209,0.45724 1.34234,1.38012 45.29836,-2.66945 z", + "NC" : "m 834.98153,294.31554 2.085,4.91735 3.55653,6.46642 2.4249,2.42491 0.64664,2.26325 -2.4249,0.16166 0.8083,0.64664 -0.32332,4.20317 -2.58657,1.29328 -0.64664,2.10159 -1.29328,2.90989 -3.7182,1.6166 -2.4249,-0.32332 -1.45495,-0.16166 -1.6166,-1.29328 0.32332,1.29328 0,0.96997 1.93993,0 0.8083,1.29328 -1.93993,6.30476 4.20317,0 0.64665,1.6166 2.26324,-2.26324 1.29329,-0.48499 -1.93993,3.55653 -3.07155,4.84982 -1.29328,0 -1.13163,-0.48498 -2.74822,0.64664 -5.17314,2.42491 -6.46642,5.33479 -3.39487,4.68815 -1.93992,6.46642 -0.48498,2.42491 -4.68816,0.48498 -5.45313,1.33666 -9.94641,-8.20253 -12.60954,-7.59805 -2.90989,-0.80831 -12.60953,1.45495 -4.27646,0.75015 -1.6166,-3.23322 -2.97036,-2.1167 -16.48939,0.48498 -7.27474,0.8083 -9.05299,4.52651 -6.14311,2.58656 -21.17755,2.58658 0.50009,-4.05433 1.77827,-1.45494 2.74824,-0.64665 0.64664,-3.7182 4.20318,-2.74822 3.87985,-1.45496 4.20319,-3.55653 4.36483,-2.10159 0.64664,-3.07156 3.87986,-3.87985 0.64664,-0.16166 c 0,0 0,1.13163 0.80831,1.13163 0.8083,0 1.93993,0.32332 1.93993,0.32332 l 2.26325,-3.55654 2.10159,-0.64665 2.26324,0.32333 1.61662,-3.55653 2.90989,-2.58658 0.48498,-2.10159 0.1875,-3.64819 4.2765,-0.0225 7.19859,-0.85579 15.75723,-2.25243 15.13604,-2.08657 21.64048,-4.71935 19.98332,-4.25857 11.17694,-2.40581 5.04998,-1.15688 z m 4.27046,33.20657 2.58658,-2.50575 3.15238,-2.58658 1.53578,-0.64664 0.16166,-2.02076 -0.64664,-6.14312 -1.45495,-2.34408 -0.64665,-1.8591 0.72748,-0.2425 2.74824,5.49648 0.40415,4.44567 -0.16166,3.39489 -3.39488,1.53577 -2.82907,2.42492 -1.13162,1.21246 -1.0508,-0.16166 z", + "DC" : "m 805.81945,250.84384 -1.85828,-1.82417 -1.23263,-0.68629 1.44301,-2.02247 2.88909,1.9485 -1.24119,2.58443 z", + "MA" : "m 899.62349,173.25394 2.17192,-0.68588 0.45726,-1.71467 1.0288,0.11431 1.0288,2.28624 -1.25742,0.45724 -3.8866,0.11432 0.45724,-0.57156 z m -9.37354,0.80018 2.28622,-2.62917 1.60037,0 1.82899,1.48605 -2.40054,1.0288 -2.17192,1.0288 -1.14312,-0.91448 z m -34.79913,-21.98819 17.64687,-4.64068 2.26326,-0.64664 1.91408,-2.79571 3.73677,-1.66331 2.88924,4.41284 -2.42491,5.17314 -0.32332,1.45494 1.93993,2.58657 1.13162,-0.8083 1.77827,0 2.26324,2.58656 3.87986,5.98144 3.55653,0.48498 2.26324,-0.96996 1.77827,-1.77827 -0.80831,-2.74822 -2.10158,-1.61661 -1.45495,0.8083 -0.96996,-1.29328 0.48498,-0.48498 2.10159,-0.16166 1.77826,0.8083 1.93993,2.42491 0.96996,2.90989 0.32332,2.4249 -4.20317,1.45495 -3.87985,1.93992 -3.87985,4.5265 -1.93993,1.45494 0,-0.96996 2.42491,-1.45495 0.48498,-1.77826 -0.8083,-3.07155 -2.90989,1.45494 -0.8083,1.45495 0.48498,2.26324 -2.06633,1.00043 -2.7472,-4.52713 -3.39488,-4.36484 -2.0705,-1.81247 -6.53327,1.8762 -5.09233,1.05079 -20.67516,4.59221 -0.66776,-4.76785 0.64664,-10.58877 4.28927,-0.88914 6.78975,-1.2933 z", + "TN" : "m 696.67788,318.25411 -51.89309,5.01149 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22097,4.10083 -8.18538,0.26401 -6.95141,0.64664 -8.09083,-0.12386 -1.41378,7.07286 -1.69623,5.48005 -3.29317,2.75084 -1.34874,4.38106 -0.32332,2.58657 -4.04152,2.26324 1.45494,3.55654 -0.96996,4.36484 -0.96838,0.78965 108.15855,-10.40755 0.40327,-3.95494 1.81073,-1.49039 2.83415,-0.74945 0.67193,-3.71698 4.0986,-2.70496 4.04693,-1.49403 4.08358,-3.57033 4.43609,-2.02546 0.52126,-3.06735 4.0646,-3.98499 0.5508,-0.11417 c 0,0 0.0312,1.13162 0.83955,1.13162 0.8083,0 1.93993,0.35457 1.93993,0.35457 l 2.26325,-3.58779 2.07034,-0.64664 2.27511,0.29521 1.59831,-3.53286 2.95525,-2.64391 0.42168,-1.93911 0.30896,-3.71115 -2.14655,-0.19977 -2.60168,2.02833 -6.99331,0.0291 -18.35929,2.38682 -8.06109,1.9082 z", + "AR" : "m 593.82477,343.05296 -3.97988,0.7167 -5.11215,-0.63403 0.4207,-1.60207 2.97975,-2.56669 0.94338,-3.65625 -1.82898,-2.9721 -78.41757,2.51485 1.60036,6.85869 -1e-5,8.23042 1.37175,10.97399 0.22862,37.83693 2.28623,1.94329 2.97209,-1.37173 2.74348,1.14311 0.68034,6.5733 55.62126,-1.1406 1.14563,-2.09037 -0.28662,-3.54951 -1.82563,-2.9721 1.59869,-1.48521 -1.59869,-2.5115 0.6842,-2.50983 1.36839,-5.60543 2.51819,-2.06263 -0.68587,-2.28456 3.65797,-5.37179 2.74347,-1.36839 -0.11348,-1.49358 -0.34544,-1.82564 2.85695,-5.59873 2.40304,-1.25659 0.38413,-3.42763 1.77067,-1.2417 -3.14352,-0.48427 -1.34146,-4.01044 2.80408,-2.37671 0.55026,-2.0192 1.27948,-4.04661 1.06619,-3.25539 z", + "MO" : "m 558.44022,248.11316 -2.51987,-3.08725 -1.14312,-2.28623 -64.35723,2.40054 -2.28626,0.11431 1.25743,2.51485 -0.22862,2.28622 2.51484,3.88659 3.0864,4.11521 3.08641,2.74347 2.16123,0.22862 1.49673,0.9145 0,2.97209 -1.82897,1.60036 -0.45726,2.28622 2.05761,3.42935 2.51486,2.97209 2.51484,1.82898 1.37173,11.65975 0.31414,36.07221 0.22862,4.68675 0.45724,5.38351 22.43299,-0.86682 23.20603,-0.68587 20.80466,-0.80101 11.65474,-0.2303 2.1694,3.426 -0.68419,3.3075 -3.08725,2.40304 -0.57239,1.83734 5.37849,0.45726 3.89496,-0.68588 1.71718,-5.49363 0.65142,-5.85679 2.09803,-2.55516 2.59603,-1.48689 0.0514,-3.05024 1.01602,-1.93648 -1.69423,-2.54377 -1.33093,0.98426 -1.99262,-2.22724 -1.28503,-4.759 0.80101,-2.5182 -1.94413,-3.42766 -1.83064,-4.5758 -4.79941,-0.79934 -6.9688,-5.59875 -1.71886,-4.11353 0.79935,-3.20072 2.05927,-6.05767 0.45892,-2.86363 -1.94914,-1.03131 -6.85534,-0.79767 -1.02797,-1.71216 -0.1118,-4.23036 -5.48694,-3.43101 -6.97551,-7.7715 -2.28622,-7.31593 -0.23029,-4.22532 0.80101,-2.2879 z", + "GA" : "m 672.29229,355.5518 0,2.18242 0.16166,2.1016 0.64664,3.39487 3.39488,7.92137 2.42491,9.86131 1.45494,6.14311 1.61661,4.84981 1.45495,6.95141 2.10159,6.30477 2.58657,3.39488 0.48498,3.39487 1.93993,0.8083 0.16166,2.1016 -1.77827,4.84981 -0.48498,3.23322 -0.16166,1.93993 1.61661,4.36484 0.32332,5.3348 -0.80831,2.42491 0.64665,0.80831 1.45495,0.8083 0.2047,3.21809 2.23301,3.34953 2.25044,2.16205 7.92138,0.16166 10.81975,-0.64664 21.51239,-1.29328 5.44572,-0.67437 4.57725,0.0277 0.16166,2.90989 2.58657,0.8083 0.32332,-4.36484 -1.61661,-4.5265 1.13163,-1.6166 5.81978,0.8083 4.97741,0.31778 -0.77542,-6.29879 2.26324,-10.02295 1.45495,-4.20318 -0.48499,-2.58656 3.33441,-6.2443 -0.5103,-1.35168 -1.91341,0.70458 -2.58656,-1.2933 -0.64665,-2.10159 -1.29328,-3.55653 -2.26326,-2.10159 -2.58656,-0.64664 -1.61661,-4.84982 -2.92501,-6.335 -4.20317,-1.93993 -2.1016,-1.93993 -1.29329,-2.58657 -2.10158,-1.93993 -2.26325,-1.29329 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.42491,-2.90989 -0.48498,-1.45495 -3.39488,-4.97048 -3.51987,0.0992 -3.75491,-2.35614 -1.41828,-1.29328 -0.32332,-1.77827 0.8708,-1.93992 2.22664,-1.11014 -0.63394,-2.09722 -41.86975,4.98893 z", + "SC" : "m 764.94328,408.16488 -1.77706,0.9695 -2.58657,-1.29329 -0.64664,-2.10159 -1.29328,-3.55653 -2.26326,-2.1016 -2.58657,-0.64664 -1.6166,-4.84981 -2.74824,-5.98145 -4.20317,-1.93994 -2.1016,-1.93992 -1.29328,-2.58657 -2.10159,-1.93994 -2.26325,-1.29328 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.4249,-2.90989 -0.48499,-1.45496 -3.39488,-5.17313 -3.39487,0.16166 -4.04152,-2.42492 -1.29328,-1.29328 -0.32332,-1.77827 0.8083,-1.93992 2.26325,-0.96998 -0.51082,-2.28908 5.7681,-2.33657 9.1155,-4.589 7.77473,-0.80831 16.1144,-0.42248 2.63825,1.87743 1.6791,3.35822 4.30235,-0.60998 12.60953,-1.45496 2.90989,0.80831 12.60954,7.59806 10.10808,8.12168 -5.42117,5.45834 -2.58657,6.1431 -0.48498,6.30476 -1.6166,0.8083 -1.13163,2.74823 -2.4249,0.64664 -2.10159,3.55653 -2.74823,2.74823 -2.26324,3.39487 -1.61661,0.8083 -3.55653,3.39487 -2.90989,0.16166 0.96997,3.23321 -5.01148,5.49646 -2.10159,1.29328 z", + "KY" : "m 725.9944,295.2707 -2.29332,2.40168 -3.57819,3.99404 -4.92455,5.46467 -1.21577,1.71577 -0.0625,2.10158 -4.37986,2.16409 -5.65812,3.39488 -7.23187,1.79885 -51.86789,4.89886 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22695,4.22028 -8.17941,0.14456 -6.95141,0.64664 -7.98748,-0.0602 1.20778,-1.32008 2.49954,-1.54085 0.22863,-3.20073 0.91449,-1.82898 -1.60682,-2.5389 0.80183,-1.90681 2.26326,-1.77826 2.10158,-0.64665 2.74823,1.29329 3.55654,1.29328 1.13163,-0.32332 0.16166,-2.26325 -1.29329,-2.42491 0.32332,-2.26325 1.93993,-1.45494 2.58658,-0.64665 1.6166,-0.64664 -0.8083,-1.77827 -0.64664,-1.93993 1.50662,-0.9958 c 0.003,-0.0371 1.25396,-3.52229 1.23829,-3.65781 l 3.05322,-1.47868 5.31979,-0.96996 4.49404,-0.48498 1.39244,1.62743 1.52827,0.8708 1.59077,-3.10821 3.18708,-1.28262 2.20509,1.48403 0.41056,0.99904 1.17352,-0.26401 -0.16167,-2.95293 3.13087,-1.74919 2.14809,-1.07348 1.52936,1.66081 3.31815,-0.0442 0.58733,-1.57125 -0.36751,-2.26324 2.60053,-3.9985 4.77655,-3.4379 0.70595,-4.83586 2.92502,-0.45591 3.79146,-1.64568 2.44332,-1.70824 -0.19833,-1.56493 -1.14245,-1.45494 0.56582,-2.99491 4.18485,-0.1175 2.29991,-0.7458 3.34739,1.4291 2.05411,4.36484 5.13229,0.0108 2.05101,2.20819 1.61545,-0.1477 2.60169,-1.27817 5.23706,0.57337 2.57492,0.21751 1.68758,-2.05624 2.61795,-1.42588 1.88178,-0.7071 0.64664,2.83663 2.04343,1.05834 2.64276,2.08249 0.11747,5.67324 0.8083,1.57241 2.58972,1.55628 0.77164,2.29451 4.15989,3.43694 1.80531,3.62324 2.45655,1.65852 z", + "AL" : "m 631.30647,460.41572 -1.4906,-14.3215 -2.74824,-18.75264 0.16166,-14.06449 0.8083,-31.03885 -0.16166,-16.65106 0.16509,-6.41906 44.48448,-3.61945 -0.1478,2.18242 0.16166,2.1016 0.64665,3.39487 3.39488,7.92137 2.4249,9.86131 1.45495,6.14311 1.6166,4.84982 1.45496,6.95141 2.10158,6.30476 2.58657,3.39489 0.48498,3.39486 1.93994,0.80831 0.16166,2.10159 -1.77828,4.84982 -0.48498,3.23322 -0.16166,1.93992 1.61662,4.36485 0.32332,5.33479 -0.80832,2.42492 0.64666,0.8083 1.45494,0.8083 0.32814,2.88882 -5.59766,-0.35355 -6.78975,0.64665 -25.5424,2.90988 -10.41156,1.40677 -0.22138,2.8774 1.77827,1.77827 2.58657,1.93992 0.58086,7.93544 -5.54206,2.5729 -2.74822,-0.32332 2.74822,-1.93993 0,-0.96996 -3.07154,-5.98144 -2.26325,-0.64664 -1.45495,4.36483 -1.29328,2.74823 -0.64664,-0.16166 -2.74823,0 z", + "LA" : "m 607.96706,459.16125 -3.28461,-3.16614 1.00991,-5.50023 -0.66135,-0.89308 -9.26167,1.00656 -25.02832,0.45892 -0.68419,-2.39468 0.91281,-8.4557 3.31588,-5.94585 5.03136,-8.69102 -0.57407,-2.39802 1.25659,-0.68085 0.45893,-1.95249 -2.28624,-2.05593 -0.11179,-1.94245 -1.83066,-4.34551 -0.14705,-6.3386 -55.47379,0.92397 0.0286,9.57357 0.68587,9.37353 0.68587,3.88658 2.51485,4.11521 0.91449,5.02971 4.34383,5.48693 0.22862,3.20072 0.68587,0.68587 -0.68587,8.45904 -2.97209,5.02969 1.60036,2.05761 -0.68588,2.51484 -0.68586,7.31593 -1.37174,3.20071 0.12246,3.61645 4.68648,-1.52015 12.11335,0.20701 10.34627,3.55653 6.46642,1.13163 3.71819,-1.45495 3.23321,1.13163 3.23321,0.96996 0.8083,-2.10159 -3.23321,-1.13162 -2.58657,0.48498 -2.74823,-1.6166 c 0,0 0.16167,-1.29329 0.80831,-1.45495 0.64664,-0.16166 3.07155,-0.96996 3.07155,-0.96996 l 1.77826,1.45494 1.77827,-0.96996 3.23321,0.64664 1.45494,2.42491 0.32332,2.26325 4.52649,0.32332 1.77827,1.77826 -0.8083,1.61661 -1.29329,0.8083 1.61661,1.6166 8.40634,3.55653 3.55653,-1.29328 0.96997,-2.42491 2.58656,-0.64664 1.77827,-1.45494 1.29328,0.96996 0.8083,2.90989 -2.26324,0.8083 0.64664,0.64664 3.39487,-1.29328 2.26325,-3.39487 0.8083,-0.48498 -2.10159,-0.32332 0.8083,-1.61661 -0.16166,-1.45494 2.10159,-0.48498 1.13162,-1.29329 0.64664,0.8083 c 0,0 -0.16166,3.07155 0.64665,3.07155 0.8083,0 4.20317,0.64665 4.20317,0.64665 l 4.04151,1.93992 0.96996,1.45495 2.90989,0 1.13163,0.96996 2.26324,-3.07155 0,-1.45495 -1.29328,0 -3.39487,-2.74822 -5.81978,-0.80831 -3.23321,-2.26324 1.13163,-2.74823 2.26324,0.32332 0.16166,-0.64664 -1.77826,-0.96996 0,-0.48499 3.23321,0 1.77826,-3.07154 -1.29328,-1.93993 -0.32332,-2.74823 -1.45495,0.16166 -1.93992,2.10159 -0.64664,2.58657 -3.07155,-0.64665 -0.96997,-1.77826 1.77827,-1.93993 1.90333,-3.4456 -1.0611,-2.41227 -1.16564,-3.98133 z", + "MS" : "m 631.55882,459.34458 -0.25426,1.25615 -5.17314,0 -1.45494,-0.8083 -2.10159,-0.32332 -6.78974,1.93992 -1.77826,-0.8083 -2.58657,4.20317 -1.10254,0.77802 -1.12383,-2.48798 -1.14312,-3.88659 -3.42933,-3.20071 1.1431,-5.54455 -0.68586,-0.91449 -1.82898,0.22862 -7.91792,0.87337 -24.5465,0.37337 -0.76974,-2.22536 0.87337,-8.3768 3.11684,-5.67281 5.22707,-9.1449 -0.44574,-2.4326 1.23686,-0.65625 0.43587,-1.91947 -2.31748,-2.07898 -0.11512,-2.14148 -1.83572,-4.12109 -0.109,-5.96277 1.32753,-2.48097 -0.2233,-3.41575 -1.76949,-3.08259 1.52642,-1.48221 -1.57061,-2.49954 0.45725,-1.65221 1.5774,-6.52637 2.48595,-2.03635 -0.64167,-2.36697 3.65797,-5.30253 2.83186,-1.35642 -0.22097,-1.67516 -0.28813,-1.6811 2.87606,-5.56767 2.34572,-1.23151 0.15163,-0.89301 37.34348,-3.88117 0.18486,6.28333 0.16166,16.65106 -0.8083,31.03885 -0.16166,14.06449 2.74824,18.75264 1.48437,13.39529 z", + "IA" : "m 569.19154,199.5843 0.26438,2.7862 2.22372,0.57726 0.95394,1.22533 0.50001,1.85536 3.79284,3.35865 0.68587,2.3915 -0.67434,3.42447 -1.58231,3.23198 -0.79934,2.74179 -2.17275,1.60204 -1.71551,0.5724 -5.57902,1.8602 -1.39146,3.84869 0.72864,1.37174 1.84051,1.68259 -0.28293,4.03629 -1.76315,1.53786 -0.77141,1.64314 0.12722,2.77632 -1.88631,0.45724 -1.62545,1.10491 -0.27879,1.35263 0.27879,2.11492 -1.55102,1.11607 -2.47053,-3.13328 -1.26257,-2.44987 -65.73582,2.51485 -0.91803,0.16544 -2.0524,-4.51596 -0.22862,-6.63007 -1.60036,-4.11521 -0.68586,-5.25831 -2.28623,-3.65797 -0.91448,-4.80107 -2.74348,-7.54455 -1.14311,-5.37264 -1.37174,-2.17191 -1.60036,-2.74346 1.95398,-4.84383 1.37174,-5.71557 -2.74347,-2.05761 -0.45725,-2.74347 0.9145,-2.51485 1.71467,0 82.654,-1.26948 0.83426,4.18312 2.25218,1.56097 0.25671,1.42309 -2.02954,3.38931 0.19041,3.20552 2.51486,3.7982 2.52679,1.29362 3.07928,0.50305 0.65834,0.83236 z", + "MN" : "m 475.23781,128.82439 -0.45725,-8.45904 -1.82898,-7.31592 -1.82898,-13.488725 -0.45725,-9.830778 -1.82898,-3.429343 -1.60036,-5.029695 0,-10.28802 0.68586,-3.886587 -1.82093,-5.451667 30.13242,0.03527 0.32332,-8.244684 0.64664,-0.161661 2.26325,0.484982 1.93992,0.808302 0.8083,5.496456 1.45495,6.143098 1.6166,1.616605 4.84982,0 0.32332,1.454944 6.30476,0.323321 0,2.101586 4.84981,0 0.32332,-1.293284 1.13162,-1.131623 2.26325,-0.646642 1.29328,0.969963 2.90989,0 3.87985,2.586567 5.3348,2.424907 2.42491,0.484982 0.48498,-0.969963 1.45494,-0.484982 0.48498,2.909889 2.58657,1.293284 0.48498,-0.484982 1.29329,0.161661 0,2.101586 2.58656,0.969963 3.07155,0 1.61661,-0.808303 3.23321,-3.233209 2.58656,-0.484981 0.80831,1.778265 0.48498,1.293283 0.96996,0 0.96996,-0.808302 8.89133,-0.323321 1.77826,3.071549 0.64665,0 0.71361,-1.084279 4.43991,-0.370665 -0.6121,2.279459 -3.93872,1.837125 -9.24578,4.061128 -4.77474,2.006897 -3.07155,2.586568 -2.42491,3.55653 -2.26324,3.879851 -1.77827,0.808304 -4.52649,5.01147 -1.29329,0.16166 -4.32778,2.75712 -2.46288,3.20511 -0.22862,3.19139 0.0944,8.04335 -1.37604,1.68875 -5.08154,3.75997 -2.23008,5.98241 2.87175,2.23371 0.67989,3.22698 -1.85524,3.23893 0.17079,3.74802 0.36886,6.7304 3.02825,3.00199 3.329,0 1.89111,3.1326 3.37917,0.50327 3.85916,5.67147 7.08729,4.11675 2.14315,2.87512 0.67115,6.43951 -81.2115,1.14479 -0.33792,-35.67685 -0.45724,-2.97209 -4.11521,-3.42934 -1.14312,-1.82898 0,-1.60037 2.0576,-1.60035 1.37174,-1.37174 0.22863,-3.20072 z", + "OK" : "m 380.34313,320.82146 -16.68418,-1.27331 -0.88022,10.95243 20.46538,1.15688 32.05555,1.3036 -2.3346,24.41865 -0.45725,17.83257 0.22863,1.60036 4.34383,3.65796 2.0576,1.14311 0.68587,-0.22862 0.68587,-2.05761 1.37174,1.82899 2.0576,0 0,-1.37174 2.74347,1.37174 -0.45724,3.88658 4.11521,0.22862 2.51484,1.14312 4.11521,0.68587 2.51485,1.82898 2.28623,-2.0576 3.42934,0.68586 2.51485,3.42934 0.91448,0 0,2.28623 2.28623,0.68586 2.28622,-2.28622 1.82899,0.68586 2.51484,0 0.9145,2.51486 6.30107,2.07897 1.37174,-0.68586 1.82898,-4.11521 1.14311,0 1.14312,2.0576 4.11521,0.68587 3.65795,1.37174 2.9721,0.91449 1.82899,-0.91449 0.68586,-2.51485 4.34383,0 2.0576,0.91449 2.74347,-2.05761 1.14312,0 0.68587,1.60036 4.1152,0 1.60036,-2.0576 1.82899,0.45724 2.0576,2.51486 3.20071,1.82897 3.20073,0.9145 1.94108,1.11893 -0.3891,-37.21701 -1.37175,-10.97398 -0.16046,-8.87234 -1.43989,-6.53773 -0.7782,-7.17964 -0.0681,-3.81622 -12.13684,0.31874 -46.41004,-0.45724 -45.03891,-2.05762 -24.2912,-1.37173 z", + "TX" : "m 361.46423,330.57358 22.69079,1.08594 31.09269,1.14312 -2.33461,23.4558 -0.29676,18.15352 0.0681,2.08179 4.34383,3.81843 1.98665,1.44716 1.18421,-0.55969 0.37337,-1.81772 1.14032,1.80362 2.11164,0.0439 -0.003,-1.44709 1.66994,0.96727 1.1387,0.40887 -0.35927,3.96765 4.08819,0.0935 2.92532,1.19717 3.95474,0.52538 2.38138,2.07898 2.1241,-2.07617 3.72494,0.61491 2.22091,3.22494 1.07496,0.32096 -0.16047,1.96527 2.21361,0.79229 2.33015,-2.0548 2.13302,0.61492 2.22938,0.0355 0.93307,2.43544 6.32809,2.11445 1.59305,-0.76693 1.48947,-4.17771 0.34072,0 0.90649,0.0816 1.22905,2.06863 3.92988,0.66528 3.337,1.12288 3.42563,1.19597 1.84058,-0.975 0.71376,-2.51484 4.45322,0.0442 1.80874,0.93078 2.79925,-2.10651 1.10364,0.0442 0.85104,1.60507 4.05472,0 1.51887,-2.02862 1.86737,0.40724 1.94603,2.40328 3.52057,2.04415 2.85876,0.80981 1.51362,0.79984 2.4467,1.99732 3.04304,-1.32779 2.69109,1.13888 0.56381,6.10594 -0.0398,9.70217 0.68586,9.53401 0.70218,3.60511 2.67533,4.41986 0.89818,4.95073 4.21595,5.53802 0.19602,3.14494 0.74637,0.78584 -0.73007,8.38007 -2.8721,5.0065 1.53297,2.15287 -0.63008,2.33808 -0.66957,7.40432 -1.50432,3.338 0.29488,3.50235 -5.66488,1.58518 -9.86129,4.5265 -0.96996,1.93992 -2.58657,1.93993 -2.10158,1.45494 -1.29329,0.8083 -5.65811,5.3348 -2.74823,2.10159 -5.3348,3.2332 -5.65811,2.42491 -6.30476,3.39487 -1.77826,1.45495 -5.81978,3.55653 -3.39487,0.64664 -3.87985,5.49645 -4.04151,0.32333 -0.96997,1.93992 2.26325,1.93993 -1.45495,5.49645 -1.29328,4.5265 -1.13162,3.87985 -0.8083,4.52649 0.8083,2.42491 1.77826,6.9514 0.96997,6.14309 1.77826,2.74823 -0.96996,1.45495 -3.07155,1.93992 -5.65812,-3.87985 -5.49645,-1.13162 -1.29329,0.48498 -3.23321,-0.64664 -4.20317,-3.07155 -5.17313,-1.13162 -7.59805,-3.39487 -2.10158,-3.87986 -1.29329,-6.46641 -3.2332,-1.93993 -0.64665,-2.26325 0.64665,-0.64664 0.32332,-3.39487 -1.29329,-0.64664 -0.64664,-0.96996 1.29328,-4.36484 -1.6166,-2.26324 -3.23321,-1.29329 -3.39487,-4.36483 -3.55653,-6.62808 -4.20317,-2.58657 0.16166,-1.93992 -5.3348,-12.2862 -0.8083,-4.20317 -1.77826,-1.93992 -0.16166,-1.45495 -5.98144,-5.33479 -2.58657,-3.07155 0,-1.13163 -2.58657,-2.10158 -6.78974,-1.13163 -7.43638,-0.64664 -3.07155,-2.26324 -4.52649,1.77826 -3.55653,1.45495 -2.26325,3.2332 -0.96996,3.7182 -4.36483,6.14309 -2.42491,2.42491 -2.58657,-0.96996 -1.77826,-1.13163 -1.93993,-0.64664 -3.87985,-2.26324 0,-0.64665 -1.77826,-1.93992 -5.17314,-2.10159 -7.43638,-7.7597 -2.26325,-4.68815 0,-8.08303 -3.23321,-6.46642 -0.48498,-2.74822 -1.6166,-0.96997 -1.13163,-2.10158 -5.01147,-2.10159 -1.29328,-1.6166 -7.11307,-7.92137 -1.29328,-3.23321 -4.68816,-2.26325 -1.45495,-4.36487 -2.58659,-2.90987 -1.93991,-0.48496 -0.64923,-4.67764 8.00187,0.68589 29.03499,2.74345 29.03508,1.60036 2.23353,-19.46182 3.88655,-55.55502 1.60039,-18.74732 1.37174,0.0286 m 99.02935,229.66274 -0.56581,-7.11308 -2.74824,-7.19392 -0.56582,-7.03225 1.53578,-8.24471 3.31406,-6.87059 3.4757,-5.41565 3.1524,-3.55655 0.64664,0.2425 -4.769,6.6281 -4.36484,6.54728 -2.02077,6.62809 -0.32332,5.17316 0.88913,6.14312 2.58658,7.19392 0.48498,5.17314 0.16166,1.45496 -0.88913,0.24248 z", + "NM" : "m 288.15255,424.01315 -0.77541,-4.7481 8.64378,0.5254 30.17176,2.9459 27.26816,1.68989 2.21527,-18.70747 3.85736,-55.87597 1.73768,-19.38923 1.5717,0.12856 0.8254,-11.16339 -104.00445,-10.63595 -17.49735,120.43481 15.46067,1.98915 1.29328,-10.02295 29.23215,2.82935 z", + "KS" : "m 507.88059,324.38028 -12.61826,0.20443 -46.08909,-0.45723 -44.55748,-2.05763 -24.62974,-1.25741 3.89379,-64.59497 22.08346,0.67517 40.28913,0.8414 44.30124,0.98758 5.09563,0 2.1844,2.1624 2.01766,-0.0214 1.6403,1.01247 -0.0625,3.00923 -1.82898,1.72537 -0.33225,2.23217 1.84308,3.40233 2.95236,3.19506 2.32735,1.61446 1.30077,11.24082 0.18913,36.08573 z", + "NE" : "m 486.09787,240.70058 3.23061,7.01991 -0.12863,2.30252 3.45922,5.49388 2.71929,3.15234 -5.04948,0 -43.48256,-0.93868 -40.78686,-0.8903 -22.25222,-0.78387 1.07277,-21.32785 -32.31824,-2.92025 4.34383,-44.00986 15.54633,1.02881 20.11879,1.1431 17.83257,1.14312 23.77676,1.14311 10.74526,-0.45724 2.0576,2.28622 4.80108,2.9721 1.14311,0.91449 4.34383,-1.37174 3.88659,-0.45724 2.74347,-0.22863 1.82898,1.37174 4.05743,1.60036 2.97209,1.60036 0.45725,1.60036 0.91449,2.0576 1.82898,0 0.79798,0.0462 0.89423,4.68182 2.92026,8.46792 0.57253,3.75671 2.52349,3.77425 0.56959,5.11414 1.60724,4.24037 0.25234,6.47426 z", + "SD" : "m 476.44687,204.02465 -0.0474,-0.58087 -2.89571,-4.84544 1.86023,-4.71211 1.49273,-5.88654 -2.78187,-2.07971 -0.38516,-2.74346 0.7924,-2.55435 3.18851,0.0152 -0.12308,-5.00614 -0.3333,-30.17425 -0.61773,-3.76758 -4.07232,-3.33093 -0.98263,-1.67696 -0.0625,-1.60882 2.02212,-1.5294 1.53222,-1.66567 0.24496,-2.65679 -58.25709,-1.60035 -54.79921,-3.44909 -5.32527,63.69119 14.59027,0.9038 19.94985,1.20561 17.74305,0.92859 23.77676,1.30358 11.9827,-0.42464 1.9663,2.24518 5.19464,3.25335 0.76389,0.72275 4.54144,-1.45281 6.54054,-0.61491 1.6753,1.33627 4.20451,1.59613 2.94506,1.63583 0.39898,1.48381 1.03949,2.24088 2.23737,-0.20136 z", + "ND" : "m 475.30528,128.91846 -0.61491,-8.43367 -1.67695,-6.81592 -1.89149,-13.02422 -0.45724,-10.987026 -1.73946,-3.077142 -1.75661,-5.194396 0.0312,-10.44427 0.62336,-3.824087 -1.8341,-5.467761 -28.64225,-0.564027 -18.59095,-0.646642 -26.51232,-1.293284 -22.94634,-2.133869 -6.99324,67.176834 54.93224,3.34365 58.06901,1.38583 z", + "WY" : "m 360.37668,143.27587 -106.7426,-13.45706 -14.08348,88.45803 113.26461,13.58549 7.56147,-88.58646 z", + "MT" : "M 369.20952,56.969133 338.5352,54.1613 l -29.26055,-3.55653 -29.26054,-4.041512 -32.3321,-5.334795 -18.42929,-3.39487 -32.72365,-6.932736 -4.47902,21.347532 3.42934,7.544541 -1.37174,4.572452 1.82898,4.572451 3.20073,1.371739 4.62082,10.769453 2.6951,3.176523 0.45724,1.143118 3.42934,1.143118 0.45725,2.057593 -7.0873,17.603953 0,2.51485 2.51485,3.20071 0.91448,0 4.80107,-2.97209 0.68588,-1.14312 1.60036,0.68587 -0.22863,5.25832 2.74348,12.57425 2.97209,2.51484 0.91448,0.68587 1.82899,2.28622 -0.45725,3.42935 0.68587,3.42933 1.14312,0.9145 2.28622,-2.28623 2.74347,0 3.20072,1.60036 2.51485,-0.91449 4.11521,0 3.65795,1.60036 2.74348,-0.45725 0.45724,-2.9721 2.97209,-0.68586 1.37174,1.37174 0.45725,3.20071 1.42587,0.83464 1.88695,-11.03474 106.74567,13.42892 8.80221,-86.299157 z", + "CO" : "m 380.03242,320.96457 4.90324,-86.32496 -113.38856,-12.64396 -12.21382,87.93916 120.69914,11.02976 z", + "ID" : "m 148.47881,176.48395 8.77087,-35.22072 1.37174,-4.22952 2.51484,-5.94418 -1.25742,-2.28623 -2.51486,0.11431 -0.80017,-1.0288 0.45725,-1.14311 0.34292,-3.08641 4.45815,-5.48695 1.82898,-0.45724 1.14311,-1.14311 0.57156,-3.20072 0.91448,-0.68586 3.88659,-5.82988 3.88659,-4.34383 0.22862,-3.772268 -3.42934,-2.629163 -1.53555,-4.400983 13.62491,-63.341691 13.51759,2.528111 -4.40808,21.383013 3.56035,7.485352 -1.58111,4.66084 1.96985,4.641233 3.13822,1.255191 3.83534,9.556588 3.51269,4.437154 0.50725,1.143118 3.34095,1.143118 0.36885,2.097075 -6.97101,17.376092 -0.16518,2.56593 2.63112,3.3217 0.90508,-0.0489 4.91129,-3.0256 0.67742,-1.09497 1.56231,0.65886 -0.27844,5.35372 2.73925,12.58271 3.91783,3.17791 1.68118,2.16545 -0.71661,4.08386 1.06622,2.80741 1.06163,1.09128 2.47929,-2.35142 2.84816,0.0489 2.91925,1.3352 2.78002,-0.68193 3.79426,-0.16048 3.9789,1.60036 2.74348,-0.29676 0.49674,-3.03731 2.93259,-0.76483 1.26017,1.51591 0.44093,2.94496 1.42434,1.21321 -8.386,53.60866 c 0,0 -87.96599,-16.70061 -94.95939,-18.20435 z", + "UT" : "m 259.49836,310.10509 -83.74903,-11.87225 20.58761,-112.54135 46.78031,8.74514 -1.4848,10.63042 -2.31162,13.17266 7.80769,0.92837 16.40652,1.80479 8.21097,0.85564 -12.24765,88.27658 z", + "AZ" : "m 144.9112,382.62909 -2.62701,2.15833 -0.32332,1.45495 0.48498,0.96996 18.91427,10.66959 12.12454,7.59804 14.7111,8.56801 16.81269,10.02295 12.2862,2.42491 24.95116,2.70491 17.25561,-119.12707 -83.73563,-11.91725 -3.09239,16.41246 -1.60629,0.0153 -1.71467,2.62916 -2.51485,-0.11432 -1.25742,-2.74347 -2.74347,-0.34293 -0.9145,-1.14311 -0.91448,0 -0.9145,0.57156 -1.94329,1.0288 -0.1143,6.97298 -0.22864,1.71467 -0.57154,12.57424 -1.48605,2.17191 -0.57156,3.31503 2.74347,4.91539 1.25742,5.82988 0.80019,1.0288 1.0288,0.57156 -0.11432,2.28622 -1.60035,1.37173 -3.42934,1.71467 -1.94329,1.9433 -1.48605,3.65795 -0.57156,4.91539 -2.85778,2.74347 -2.0576,0.68587 0.13569,0.82988 -0.45725,1.71467 0.45725,0.80018 3.65796,0.57154 -0.57156,2.74348 -1.48605,2.17191 -3.77227,0.91449 z", + "NV" : "m 196.39273,185.57552 -23.63891,128.82275 -1.83224,0.34915 -1.57276,2.40618 -2.37294,0.0107 -1.47195,-2.74347 -2.61847,-0.37842 -0.77092,-1.10763 -1.03783,-0.054 -2.77837,1.64429 -0.31026,6.78548 -0.36209,5.77717 -0.34857,8.59281 -1.4471,2.08916 -2.43892,-1.07403 -69.079886,-104.20119 18.989116,-67.58491 93.0921,20.66601 z", + "OR" : "m 148.72184,175.53153 8.8497,-34.80151 1.05079,-4.22952 2.35437,-5.62323 -0.61551,-1.16288 -2.51486,-0.0462 -1.2816,-1.6707 0.45724,-1.46407 0.50341,-3.24688 4.45815,-5.48695 1.82898,-1.09915 1.14311,-1.14311 1.48604,-3.56563 4.04706,-5.6694 3.56563,-3.8624 0.22862,-3.451314 -3.26886,-2.468682 -1.78341,-4.642625 -12.66377,-3.61197 -15.08909,-3.54365 -15.43202,0.114306 -0.45724,-1.371729 -5.48695,2.057604 -4.45814,-0.571559 -2.40054,-1.600361 -1.25742,0.685875 -4.68676,-0.228632 -1.71467,-1.371729 -5.25832,-2.057604 -0.800182,0.114316 -4.34383,-1.486056 -1.943291,1.828983 -6.172812,-0.342927 -5.944183,-4.115209 0.685865,-0.80018 0.228621,-7.773173 -2.286225,-3.886577 -4.115208,-0.571559 -0.685865,-2.514847 -2.353932,-0.466565 -5.798525,2.058784 -2.263247,6.466418 -3.233209,10.022949 -3.23321,6.466419 -5.011474,14.064461 -6.466419,13.579473 -8.083023,12.60952 -1.939926,2.90989 -0.808302,8.568 0.386095,12.08023 112.578342,26.32133 z", + "WA" : "m 102.07324,7.6117734 4.36483,1.4549443 9.69963,2.7482283 8.568,1.939925 20.0459,5.658117 22.95579,5.658116 15.22312,3.207173 -13.63236,63.585811 -12.445,-3.525318 -15.50801,-3.570679 -15.22929,0.03324 -0.45557,-1.344699 -5.59922,2.179293 -4.59543,-0.736744 -2.14697,-1.584054 -1.31321,0.657976 -4.73566,-0.140243 -1.69836,-1.349633 -5.26304,-2.112303 -0.734971,0.146918 -4.389122,-1.524448 -1.893298,1.817379 -6.265906,-0.298733 -5.925698,-4.125702 0.778957,-0.932763 0.121223,-7.677452 -2.281999,-3.839701 -4.115208,-0.60704 -0.67741,-2.510616 -2.275512,-0.456932 -3.554948,1.230576 -2.263247,-3.219247 0.323321,-2.909889 2.748228,-0.323321 1.616605,-4.041511 -2.586568,-1.131624 0.161661,-3.718191 4.364833,-0.646641 -2.748228,-2.748228 -1.454945,-7.113061 0.646642,-2.909888 0,-7.921363 -1.778265,-3.23321 2.263247,-9.376307 2.101586,0.484981 2.424907,2.909889 2.748228,2.586567 3.233209,1.939926 4.526493,2.101586 3.071551,0.646642 2.909889,1.454944 3.394873,0.969963 2.263246,-0.16166 0,-2.424908 1.293284,-1.131623 2.101582,-1.293284 0.32333,1.131624 0.32332,1.778265 -2.263251,0.484981 -0.323321,2.101586 1.778262,1.454945 1.13163,2.424907 0.64664,1.939925 1.45494,-0.16166 0.16166,-1.293284 -0.96996,-1.293284 -0.48498,-3.233209 0.8083,-1.778265 -0.64664,-1.454944 0,-2.263247 1.77827,-3.55653 -1.13163,-2.586568 -2.42491,-4.8498139 0.32333,-0.8083023 1.13162,-0.8083024 z m -9.456692,5.9789646 2.020764,-0.16166 0.484982,1.374119 1.535779,-1.616615 2.344082,0 0.808303,1.535779 -1.53578,1.69744 0.646652,0.808313 -0.727477,2.020761 -1.374119,0.404146 c 0,0 -0.889138,0.08084 -0.889138,-0.242485 0,-0.323321 1.454955,-2.586578 1.454955,-2.586578 l -1.69744,-0.565817 -0.323321,1.454954 -0.727478,0.646642 -1.535782,-2.263257 -0.484982,-2.505742 z", + "CA" : "m 144.69443,382.19813 3.94008,-0.48862 1.48604,-2.01144 0.54454,-2.94109 -3.55152,-0.59012 -0.51417,-0.66822 0.4775,-2.03231 -0.15928,-0.58967 1.92257,-0.61959 3.04278,-2.83268 0.58156,-4.9951 1.3799,-3.40211 1.94329,-2.16626 3.51887,-1.58967 1.65439,-1.60483 0.0687,-2.10884 -0.99333,-0.58001 -1.02315,-1.07273 -1.15522,-5.84845 -2.6852,-4.83009 0.56581,-3.505 -2.41958,-1.02931 -69.061322,-104.1784 18.902112,-67.60149 -67.079863,-15.69796 -1.506896,4.73324 -0.161661,7.43638 -5.173135,11.80121 -3.071548,2.58657 -0.323321,1.13162 -1.778266,0.80831 -1.454944,4.20317 -0.808302,3.23321 2.748228,4.20317 1.616605,4.20317 1.131623,3.55653 -0.323321,6.46642 -1.778265,3.07155 -0.646642,5.81978 -0.969963,3.71819 1.778265,3.87985 2.748228,4.52649 2.263247,4.84982 1.293283,4.04151 -0.32332,3.23321 -0.323321,0.48498 0,2.10158 5.658116,6.30476 -0.484981,2.42491 -0.646642,2.26325 -0.646642,1.93992 0.16166,8.24469 2.101586,3.71819 1.939926,2.58656 2.748228,0.48499 0.969963,2.74822 -1.131623,3.55653 -2.101587,1.61661 -1.131623,0 -0.808302,3.87985 0.484981,2.90989 3.23321,4.36483 1.616604,5.3348 1.454944,4.68815 1.293284,3.07155 3.39487,5.81978 1.454944,2.58656 0.484982,2.90989 1.616604,0.96996 0,2.42491 -0.808302,1.93993 -1.778265,7.11306 -0.484982,1.93992 2.424908,2.74823 4.203172,0.48498 4.526493,1.77827 3.879851,2.10158 2.909889,0 2.909888,3.07155 2.586567,4.84982 1.131624,2.26324 3.879851,2.10159 4.849814,0.8083 1.454944,2.10159 0.646642,3.23321 -1.454944,0.64664 0.323321,0.96996 3.233211,0.8083 2.748228,0.16167 3.159889,-1.68685 3.879854,4.20317 0.808302,2.26325 2.586572,4.20317 0.32332,3.23321 0,9.37631 0.48498,1.77826 10.02295,1.45495 19.72257,2.74822 13.84504,1.3497 z m -88.135212,-43.71668 1.293288,1.53578 -0.16166,1.29329 -3.233221,-0.0808 -0.565814,-1.21246 -0.646644,-1.45495 3.314051,-0.0808 z m 1.939932,0 1.212458,-0.64664 3.556543,2.10159 3.07156,1.21245 -0.889136,0.64666 -4.526509,-0.2425 -1.61661,-1.61661 -0.808306,-1.45495 z m 20.692614,19.80348 1.778265,2.34408 0.808313,0.96997 1.535779,0.56581 0.565807,-1.45495 -0.969963,-1.77827 -2.667403,-2.02076 -1.050798,0.16166 0,1.21246 z m -1.454955,8.64886 1.778276,3.15239 1.212458,1.93994 -1.454954,0.24248 -1.293284,-1.21245 c 0,0 -0.727477,-1.45495 -0.727477,-1.85911 0,-0.40414 0,-2.18242 0,-2.18242 l 0.484981,-0.0808 z" + } + } + } + } + ); + + return Mapael; + +})); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/usa_states.min.js b/plugins/jquery-mapael/maps/usa_states.min.js new file mode 100644 index 0000000..871268e --- /dev/null +++ b/plugins/jquery-mapael/maps/usa_states.min.js @@ -0,0 +1,11 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of USA by state + * + * @source http://the55.net/_11/sketch/us_map + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{usa_states:{width:959,height:593,latLngToGrid:function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n=Math.PI,o=(c+d)/2;return g=(Math.sin(c/180*n)+Math.sin(d/180*n))/2,h=Math.sqrt(Math.cos(c/180*n))+2*g*Math.sin(c/180*n),i=f*Math.pow(h-2*g*Math.sin(o/180*n),.5)/g,j=g*(b-e),m=f*Math.pow(h-2*g*Math.sin(a/180*n),.5)/g,k=m*Math.sin(j/180*n),l=i-m*Math.cos(j/180*n),[k,l]},getCoords:function(a,b){var c,d,e,f,g,h,i,j,k={};return a>51?(g=15,h=105,i=-134,j=530,k=this.latLngToGrid(a,b,g,h,i,j),c=190,d=543,e=1,f=-1):-140>b?(g=0,h=26,i=-166,j=1280,k=this.latLngToGrid(a,b,g,h,i,j),c=115,d=723,e=1,f=-1):(c=-17,d=-22,e=10.05,f=6.26,k[0]=50+124.03149777329222*((1.9694462586094064-a*Math.PI/180)*Math.sin(.6010514667026994*(b+96)*Math.PI/180)),k[1]=55.23670416287796-200.38467697709729*(1.3236744353715044-(1.9694462586094064-a*Math.PI/180)*Math.cos(.6010514667026994*(b+96)*Math.PI/180))),{x:k[0]*e+c,y:k[1]*f+d}},elems:{HI:"m 233.08751,519.30948 1.93993,-3.55655 2.26326,-0.32332 0.32332,0.8083 -2.1016,3.07157 -2.42491,0 z m 10.18466,-3.71821 6.14313,2.58657 2.10159,-0.32332 1.61661,-3.87987 -0.64664,-3.39488 -4.2032,-0.48498 -4.04153,1.77827 -0.96996,3.71821 z m 30.71563,10.023 3.7182,5.49647 2.42492,-0.32332 1.13163,-0.48498 1.45495,1.29329 3.71821,-0.16166 0.96997,-1.45495 -2.90991,-1.77827 -1.93993,-3.71822 -2.1016,-3.55654 -5.8198,2.9099 -0.64664,1.77828 z m 20.20765,8.89137 1.29329,-1.93994 4.68817,0.96996 0.64665,-0.48498 6.14312,0.64664 -0.32332,1.2933 -2.58658,1.45494 -4.36485,-0.32332 -5.49648,-1.6166 z m 5.33482,5.17315 1.93994,3.87987 3.07155,-1.13163 0.32333,-1.61662 -1.61661,-2.10159 -3.71821,-0.32332 0,1.29329 z m 6.95143,-1.13163 2.26326,-2.9099 4.68817,2.42492 4.36485,1.13163 4.36486,2.74824 0,1.93993 -3.55654,1.77828 -4.84985,0.96996 -2.42491,-1.45495 -4.84984,-6.62811 z m 16.65111,15.51947 1.61661,-1.29328 3.39489,1.61662 7.59807,3.55654 3.39489,2.10159 1.6166,2.42492 1.93994,4.36485 4.04153,2.58658 -0.32332,1.2933 -3.87987,3.23322 -4.20319,1.45495 -1.45495,-0.64664 -3.07157,1.77826 -2.42491,3.23323 -2.26326,2.9099 -1.77828,-0.16166 -3.55654,-2.58658 -0.32332,-4.52651 0.64664,-2.42492 -1.61661,-5.65814 -2.1016,-1.77828 -0.16166,-2.58658 2.26326,-0.96996 2.1016,-3.07156 0.48498,-0.96997 -1.61661,-1.77828 -0.32332,-2.1016 z",AK:"m 158.07671,453.67502 -0.32332,85.35713 1.6166,0.96996 3.07157,0.16166 1.45494,-1.13162 2.58658,0 0.16167,2.9099 6.95143,6.78977 0.48499,2.58658 3.39488,-1.93994 0.64665,-0.16166 0.32332,-3.07156 1.45494,-1.61661 1.13164,-0.16166 1.93993,-1.45496 3.07156,2.1016 0.64665,2.90991 1.93993,1.13162 1.13163,2.42492 3.87988,1.77827 3.39488,5.98147 2.74823,3.87986 2.26326,2.74825 1.45496,3.7182 5.01149,1.77828 5.17317,2.10159 0.96996,4.36486 0.48498,3.07156 -0.96996,3.39489 -1.77828,2.26325 -1.61661,-0.8083 -1.45495,-3.07157 -2.74824,-1.45494 -1.77827,-1.13164 -0.80831,0.80831 1.45495,2.74825 0.16166,3.7182 -1.13163,0.48498 -1.93993,-1.93993 -2.10159,-1.29329 0.48498,1.61661 1.29328,1.77828 -0.8083,0.8083 c 0,0 -0.8083,-0.32332 -1.29328,-0.96997 -0.485,-0.64664 -2.1016,-3.39488 -2.1016,-3.39488 l -0.96997,-2.26326 c 0,0 -0.32332,1.29329 -0.96997,0.96996 -0.64665,-0.32332 -1.29329,-1.45494 -1.29329,-1.45494 l 1.77827,-1.93994 -1.45495,-1.45495 0,-5.0115 -0.8083,0 -0.8083,3.39488 -1.13164,0.485 -0.96996,-3.71822 -0.64665,-3.71821 -0.80831,-0.48498 0.32333,5.65815 0,1.13162 -1.45496,-1.29328 -3.55654,-5.98147 -2.1016,-0.48498 -0.64664,-3.71821 -1.61661,-2.9099 -1.61662,-1.13164 0,-2.26325 2.1016,-1.29329 -0.48498,-0.32332 -2.58658,0.64664 -3.39489,-2.42491 -2.58658,-2.90991 -4.84983,-2.58658 -4.04154,-2.58658 1.2933,-3.23322 0,-1.61661 -1.77828,1.61661 -2.9099,1.13163 -3.71821,-1.13163 -5.65815,-2.42491 -5.49647,0 -0.64664,0.48498 -6.46645,-3.87988 -2.1016,-0.32332 -2.74824,-5.8198 -3.55655,0.32332 -3.55655,1.45495 0.48499,4.52652 1.13162,-2.9099 0.96998,0.32332 -1.45496,4.36485 3.23322,-2.74824 0.64665,1.61661 -3.87987,4.36485 -1.29329,-0.32332 -0.48498,-1.93994 -1.29329,-0.8083 -1.29329,1.13163 -2.74824,-1.77827 -3.07157,2.1016 -1.77826,2.10159 -3.39489,2.1016 -4.68818,-0.16167 -0.48498,-2.10159 3.7182,-0.64665 0,-1.29328 -2.26326,-0.64666 0.96998,-2.42491 2.26325,-3.87987 0,-1.77827 0.16166,-0.80831 4.36486,-2.26326 0.96996,1.29329 2.74825,0 -1.29329,-2.58657 -3.71822,-0.32333 -5.01149,2.74824 -2.42492,3.39488 -1.77827,2.58659 -1.13163,2.26326 -4.20319,1.45494 -3.07157,2.58658 -0.323321,1.61662 2.263257,0.96997 0.808313,2.10158 -2.748249,3.23323 -6.466439,4.2032 -7.759747,4.20319 -2.101597,1.13162 -5.334818,1.13164 -5.334826,2.26325 1.778275,1.29329 -1.454954,1.45495 -0.484982,1.13163 -2.748238,-0.96997 -3.23322,0.16166 -0.808312,2.26326 -0.969963,0 0.323321,-2.42492 -3.556551,1.2933 -2.909899,0.96996 -3.394886,-1.29329 -2.909901,1.93993 -3.233224,0 -2.101597,1.2933 -1.616612,0.8083 -2.101595,-0.32332 -2.58658,-1.13163 -2.263257,0.64665 -0.969967,0.96996 -1.616613,-1.13162 0,-1.93994 3.071564,-1.29329 6.304787,0.64665 4.364853,-1.61662 2.101596,-2.10159 2.909902,-0.64665 1.778273,-0.80831 2.748241,0.16166 1.616612,1.2933 0.969963,-0.32332 2.263257,-2.74824 3.07157,-0.96998 3.39488,-0.64664 1.293294,-0.32332 0.646642,0.48498 0.808312,0 1.293284,-3.71821 4.041533,-1.45494 1.939936,-3.71821 2.263259,-4.52652 1.616615,-1.45495 0.323321,-2.58658 -1.616615,1.29329 -3.394893,0.64665 -0.646642,-2.42492 -1.293284,-0.32332 -0.969973,0.96996 -0.16166,2.90991 -1.454955,-0.16167 -1.454944,-5.8198 -1.293294,1.29328 -1.131624,-0.48498 -0.32332,-1.93993 -4.041533,0.16166 -2.101596,1.13163 -2.586578,-0.32332 1.454944,-1.45495 0.484981,-2.58658 -0.646641,-1.93994 1.454954,-0.96996 1.293284,-0.16166 -0.646642,-1.77828 0,-4.36485 -0.969963,-0.96997 -0.808312,1.45495 -6.143123,0 -1.454951,-1.29329 -0.646645,-3.87986 -2.101596,-3.55656 0,-0.96996 2.101596,-0.80831 0.161661,-2.1016 1.131628,-1.13162 -0.808305,-0.48498 -1.29329,0.48498 -1.131628,-2.74824 0.969967,-5.01151 4.526514,-3.23321 2.586575,-1.61662 1.939936,-3.7182 2.748249,-1.2933 2.586578,1.13164 0.323321,2.42492 2.424917,-0.32334 3.23322,-2.42491 1.616615,0.64665 0.969962,0.64664 1.616615,0 2.263259,-1.29329 0.808313,-4.36486 c 0,0 0.323321,-2.90989 0.969963,-3.39488 0.646642,-0.48498 0.969963,-0.96996 0.969963,-0.96996 l -1.131623,-1.93994 -2.58658,0.80831 -3.23323,0.8083 -1.939936,-0.48498 -3.556541,-1.77828 -5.011495,-0.16166 -3.556551,-3.7182 0.484981,-3.87987 0.646652,-2.42492 -2.101596,-1.77827 -1.939938,-3.71822 0.484983,-0.8083 6.789771,-0.48498 2.101596,0 0.969963,0.96996 0.646652,0 -0.16166,-1.61661 3.879862,-0.64664 2.586577,0.32332 1.454955,1.13163 -1.454955,2.1016 -0.484981,1.45494 2.748249,1.61662 5.011497,1.77827 1.778276,-0.96996 -2.263257,-4.36485 -0.969974,-3.23323 0.969974,-0.80831 -3.394891,-1.93993 -0.484983,-1.13164 0.484983,-1.6166 -0.808304,-3.87987 -2.909909,-4.68818 -2.424918,-4.20319 2.909909,-1.93994 3.233222,0 1.778276,0.64665 4.203192,-0.16166 3.718205,-3.55654 1.131633,-3.07157 3.718212,-2.42492 1.616604,0.96997 2.748239,-0.64665 3.718209,-2.1016 1.13164,-0.16166 0.96996,0.80832 4.52651,-0.16167 2.74824,-3.07156 1.13163,0 3.55655,2.42491 1.93993,2.1016 -0.48498,1.13163 0.64664,1.13163 1.61662,-1.61661 3.87987,0.32332 0.32332,3.7182 1.93994,1.45496 7.11309,0.64664 6.30479,4.20319 1.45494,-0.96996 5.17317,2.58658 2.10159,-0.64664 1.93994,-0.80832 4.84983,1.93994 4.36486,2.9099 z m -115.102797,28.93736 2.101596,5.33482 -0.161662,0.96997 -2.909902,-0.32333 -1.778273,-4.04153 -1.778273,-1.45494 -2.424919,0 -0.16166,-2.58659 1.778273,-2.42492 1.131629,2.42492 1.45495,1.45495 2.748241,0.64665 z m -2.58658,33.46387 3.718209,0.80831 3.718207,0.96996 0.808307,0.96998 -1.616612,3.7182 -3.071564,-0.16166 -3.394885,-3.55654 -0.161662,-2.74825 z m -20.692636,-14.06452 1.13163,2.58657 1.131628,1.61662 -1.131628,0.8083 -2.101597,-3.07156 0,-1.93993 0.969967,0 z m -13.7412027,73.07087 3.3948853,-2.26326 3.3948854,-0.96997 2.58658,0.32332 0.484983,1.61661 1.939935,0.48499 1.939934,-1.93993 -0.323322,-1.61661 2.748241,-0.64665 2.909902,2.58658 -1.131629,1.77827 -4.364852,1.13163 -2.748242,-0.48498 -3.718207,-1.13163 -4.3648533,1.45495 -1.616612,0.32332 -1.1316284,-0.64664 z m 48.9833487,-4.52651 1.616612,1.93993 2.101593,-1.61661 -1.454948,-1.2933 -2.263257,0.96998 z m 2.909902,3.07155 1.131624,-2.26325 2.101597,0.32332 -0.808303,1.93993 -2.424918,0 z m 23.602535,-1.93993 1.454954,1.77827 0.969974,-1.13162 -0.808313,-1.93994 -1.616615,1.29329 z m 8.72971,-12.44791 1.131633,5.8198 2.909899,0.80831 5.011495,-2.90991 4.364853,-2.58658 -1.6166,-2.42491 0.48498,-2.42492 -2.1016,1.29329 -2.909898,-0.80831 1.616605,-1.13162 1.939933,0.8083 3.87987,-1.77828 0.48499,-1.45494 -2.42492,-0.80831 0.8083,-1.93994 -2.74824,1.93994 -4.688172,3.55655 -4.849834,2.9099 -1.293294,1.13163 z m 42.35524,-19.88433 2.42492,-1.45495 -0.96997,-1.77828 -1.77827,0.96997 0.32332,2.26326 z",FL:"m 759.8167,439.1428 2.26566,7.3186 3.7297,9.74226 5.33479,9.3763 3.71819,6.30476 4.84982,5.49646 4.04151,3.71819 1.6166,2.90989 -1.13162,1.29328 -0.8083,1.29328 2.90988,7.43639 2.90989,2.90988 2.58657,5.3348 3.55653,5.81978 4.52649,8.24468 1.29329,7.59804 0.48498,11.96288 0.64664,1.77826 -0.32332,3.39487 -2.42491,1.29329 0.32332,1.93992 -0.64664,1.93993 0.32332,2.4249 0.48498,1.93993 -2.74822,3.23321 -3.07155,1.45494 -3.87985,0.16166 -1.45495,1.61661 -2.4249,0.96996 -1.29329,-0.48498 -1.13162,-0.96996 -0.32332,-2.90989 -0.80831,-3.39487 -3.39487,-5.17314 -3.55653,-2.26324 -3.87985,-0.32332 -0.8083,1.29328 -3.07155,-4.36483 -0.64664,-3.55653 -2.58657,-4.04151 -1.77826,-1.13163 -1.61661,2.10159 -1.77826,-0.32332 -2.10159,-5.01148 -2.90989,-3.87985 -2.90989,-5.33479 -2.58656,-3.07155 -3.55653,-3.71819 2.10158,-2.42491 3.23321,-5.49646 -0.16166,-1.6166 -4.52649,-0.96996 -1.61661,0.64664 0.32333,0.64664 2.58656,0.96996 -1.45494,4.5265 -0.8083,0.48498 -1.77827,-4.04151 -1.29328,-4.84982 -0.32332,-2.74823 1.45494,-4.68815 0,-9.53797 -3.07155,-3.71819 -1.29328,-3.07155 -5.17314,-1.29328 -1.93992,-0.64664 -1.61661,-2.58657 -3.39487,-1.61661 -1.13162,-3.39487 -2.74823,-0.96996 -2.42491,-3.71819 -4.20317,-1.45494 -2.90989,-1.45495 -2.58656,0 -4.04152,0.80831 -0.16166,1.93992 0.80831,0.96996 -0.48499,1.13163 -3.07154,-0.16166 -3.71819,3.55653 -3.55654,1.93992 -3.87985,0 -3.23321,1.29329 -0.32332,-2.74823 -1.6166,-1.93993 -2.90989,-1.13162 -1.6166,-1.45495 -8.08303,-3.87985 -7.59804,-1.77826 -4.36483,0.64664 -5.98144,0.48498 -5.98144,2.10159 -3.47924,0.61296 -0.23792,-8.04975 -2.58657,-1.93992 -1.77827,-1.77827 0.32332,-3.07156 10.18462,-1.29328 25.5424,-2.90989 6.78975,-0.64664 5.436,0.28027 2.58657,3.87986 1.45494,1.45494 8.09816,0.51522 10.81975,-0.64664 21.51239,-1.29329 5.44572,-0.67437 5.10758,0.20451 0.42683,2.90989 2.233,0.8083 0.23494,-4.63 -1.52822,-4.17295 1.3084,-1.43983 5.55463,0.45475 5.17314,0.32332 z m 12.54541,132.40508 2.42492,-0.64664 1.29328,-0.24249 1.45496,-2.34409 2.34408,-1.61661 1.29329,0.48499 1.69744,0.32332 0.40415,1.05079 -3.4757,1.21246 -4.2032,1.45495 -2.34408,1.21246 -0.88914,-0.88914 z m 13.4987,-5.01149 1.21246,1.0508 2.74824,-2.10159 5.33481,-4.20319 3.7182,-3.87987 2.50575,-6.6281 0.96997,-1.69744 0.16166,-3.39488 -0.72748,0.48498 -0.96996,2.82907 -1.45496,4.60733 -3.23322,5.254 -4.36484,4.20318 -3.39488,1.93993 -2.50575,1.53578 z",NH:"m 880.79902,142.42476 0.869,-1.0765 1.09022,-3.29102 -2.54308,-0.91347 -0.48499,-3.07156 -3.87985,-1.13162 -0.32332,-2.74824 -7.27475,-23.44082 -4.60142,-14.542988 -0.89708,-0.0051 -0.64664,1.616605 -0.64664,-0.484981 -0.96997,-0.969963 -1.45494,1.939925 -0.0485,5.032054 0.31165,5.667218 1.93992,2.74824 0,4.04152 -3.7182,5.06278 -2.58657,1.13164 0,1.13162 1.13163,1.77827 0,8.56802 -0.80831,9.21467 -0.16166,4.84982 0.96997,1.2933 -0.16166,4.52649 -0.48499,1.77828 0.96881,0.70922 16.78767,-4.42455 2.17487,-0.60245 1.84357,-2.77333 3.60523,-1.61312 z",MI:"M581.61931,82.059006 L 583.4483,80.001402 L 585.62022,79.201221 L 590.99286,75.314624 L 593.27908,74.743065 L 593.73634,75.200319 L 588.59232,80.344339 L 585.27728,82.287628 L 583.21967,83.202124 L 581.61931,82.059006 z M 667.79369,114.18719 L 668.44033,116.69293 L 671.67355,116.85459 L 672.96684,115.64213 C 672.96684,115.64213 672.88601,114.18719 672.56269,114.02552 C 672.23936,113.86386 670.94608,112.16642 670.94608,112.16642 L 668.76366,112.40891 L 667.14704,112.57057 L 666.82372,113.7022 L 667.79369,114.18719 z M 567.49209,111.21318 L 568.20837,110.63278 L 570.9566,109.82447 L 574.51313,107.56123 L 574.51313,106.59126 L 575.15978,105.94462 L 581.14121,104.97466 L 583.56612,103.03473 L 587.93095,100.93315 L 588.09261,99.639864 L 590.03254,96.729975 L 591.8108,95.921673 L 593.10409,94.143408 L 595.36733,91.880161 L 599.73217,89.455254 L 604.42032,88.970273 L 605.55194,90.101896 L 605.22862,91.071859 L 601.51043,92.041822 L 600.05549,95.113371 L 597.79224,95.921673 L 597.30726,98.34658 L 594.88235,101.57979 L 594.55903,104.16636 L 595.36733,104.65134 L 596.3373,103.51972 L 599.89383,100.60983 L 601.18711,101.90311 L 603.45036,101.90311 L 606.68357,102.87307 L 608.13851,104.0047 L 609.59345,107.07625 L 612.34168,109.82447 L 616.22153,109.66281 L 617.67648,108.69285 L 619.29308,109.98613 L 620.90969,110.47112 L 622.20297,109.66281 L 623.33459,109.66281 L 624.9512,108.69285 L 628.99271,105.13632 L 632.38758,104.0047 L 639.01566,103.68138 L 643.54215,101.74145 L 646.12872,100.44817 L 647.58367,100.60983 L 647.58367,106.26794 L 648.06865,106.59126 L 650.97853,107.39957 L 652.91846,106.91458 L 659.06156,105.29798 L 660.19318,104.16636 L 661.64813,104.65134 L 661.64813,111.60274 L 664.88134,114.67429 L 666.17462,115.32093 L 667.4679,116.29089 L 666.17462,116.61421 L 665.36632,116.29089 L 661.64813,115.80591 L 659.54654,116.45255 L 657.28329,116.29089 L 654.05008,117.74584 L 652.27182,117.74584 L 646.45204,116.45255 L 641.27891,116.61421 L 639.33898,119.20078 L 632.38758,119.84742 L 629.96267,120.65572 L 628.83105,123.72727 L 627.53777,124.8589 L 627.05279,124.69724 L 625.59784,123.08063 L 621.07135,125.50554 L 620.42471,125.50554 L 619.29308,123.88893 L 618.48478,124.05059 L 616.54486,128.41543 L 615.57489,132.45694 L 612.39377,139.45774 L 611.21701,138.42347 L 609.84527,137.39215 L 607.90449,127.10413 L 604.36001,125.73408 L 602.30743,123.44785 L 590.18707,120.70437 L 587.3318,119.67473 L 579.10138,117.50199 L 571.21139,116.35887 L 567.49209,111.21318 z,M697.8,177.2L694.6,168.9L692.3,159.9L689.9,156.7L687.3,154.9L685.7,156L681.8,157.8L679.9,162.8L677.1,166.5L676,167.2L674.5,166.5 C 674.5,166.5 671.9,165.1 672.1,164.4 C 672.3,163.8 672.6,159.4 672.6,159.4L676,158.1L676.8,154.7L677.4,152.1L679.9,150.5L679.5,140.5L677.9,138.2L676.6,137.4L675.8,135.3L676.6,134.5L678.2,134.8L678.4,133.2L676,131L674.7,128.4L672.1,128.4L667.6,126.9L662.1,123.5L659.3,123.5L658.7,124.2L657.7,123.7L654.6,121.4L651.7,123.2L648.8,125.5L649.2,129L650.1,129.3L652.2,129.8L652.7,130.6L650.1,131.4L647.5,131.8L646.1,133.5L645.8,135.6L646.1,137.3L646.4,142.8L642.8,144.9L642.2,144.7L642.2,140.5L643.5,138.1L644.1,135.6L643.3,134.8L641.4,135.6L640.4,139.8L637.7,141L635.9,142.9L635.7,143.9L636.4,144.7L635.7,147.3L633.5,147.8L633.5,148.9L634.3,151.3L633.1,157.5L631.5,161.5L632.2,166.2L632.7,167.3L631.9,169.8L631.5,170.6L631.2,173.3L634.8,179.3L637.7,185.8L639.1,190.6L638.3,195.3L637.3,201.3L634.9,206.4L634.6,209.2L631.3,212.3L635.8,212.1L657.2,209.9L664.4,208.9L664.5,210.5L671.4,209.3L681.7,207.8L685.5,207.4L685.7,206.8L685.8,205.3L687.9,201.6L689.9,199.9L689.7,194.8L691.3,193.2L692.4,192.9L692.6,189.3L694.2,186.3L695.2,186.9L695.4,187.5L696.2,187.7L698.1,186.7L697.8,177.2z",VT:"m 844.48416,154.05791 0.3167,-5.34563 -2.89071,-10.78417 -0.64664,-0.32332 -2.9099,-1.29329 0.8083,-2.90989 -0.8083,-2.10159 -2.70005,-4.63998 0.96997,-3.87986 -0.80831,-5.17315 -2.42491,-6.46644 -0.80557,-4.92251 26.41936,-6.73182 0.3087,5.52221 1.91626,2.74223 0,4.04152 -3.70715,5.05799 -2.58657,1.14267 -0.011,1.12057 1.30997,1.51912 -0.31093,8.09797 -0.60943,9.25886 -0.22795,5.55694 0.96996,1.29329 -0.16166,4.57069 -0.48498,1.68989 1.01418,0.72716 -7.43755,1.50671 -4.50174,0.72383 z",ME:"m 922.83976,78.830719 1.93993,2.101586 2.26325,3.718191 0,1.939926 -2.10159,4.688153 -1.93993,0.646642 -3.39487,3.071549 -4.84981,5.496454 c 0,0 -0.64664,0 -1.29328,0 -0.64664,0 -0.96997,-2.101584 -0.96997,-2.101584 l -1.77826,0.16166 -0.96996,1.454944 -2.42491,1.45495 -0.96996,1.45494 1.6166,1.45494 -0.48498,0.64665 -0.48498,2.74822 -1.93993,-0.16166 0,-1.6166 -0.32332,-1.29329 -1.45494,0.32333 -1.77827,-3.23321 -2.10158,1.29328 1.29328,1.45494 0.32332,1.13163 -0.8083,1.29328 0.32332,3.07155 0.16166,1.6166 -1.6166,2.58657 -2.90989,0.48498 -0.32332,2.90989 -5.3348,3.07155 -1.29328,0.48498 -1.61661,-1.45494 -3.07155,3.55653 0.96997,3.23321 -1.45495,1.29328 -0.16166,4.36483 -1.12328,6.25936 -2.46225,-1.15595 -0.48499,-3.07156 -3.87985,-1.13163 -0.32332,-2.74824 -7.27475,-23.44082 -4.69858,-14.639742 1.42054,-0.118165 1.51379,0.409899 0,-2.586568 1.3083,-4.496456 2.58657,-4.688153 1.45495,-4.041512 -1.93993,-2.424907 0,-5.981437 0.8083,-0.969963 0.80831,-2.748228 -0.16166,-1.454944 -0.16167,-4.849814 1.77827,-4.849814 2.90989,-8.891326 2.10158,-4.203172 1.29329,0 1.29328,0.16166 0,1.131623 1.29329,2.263247 2.74822,0.646642 0.80831,-0.808303 0,-0.969962 4.04151,-2.909889 1.77826,-1.778265 1.45495,0.161661 5.98143,2.424907 1.93993,0.969962 9.05299,29.907187 5.98143,0 0.80831,1.939926 0.16166,4.849814 2.90988,2.263246 0.80831,0 0.16166,-0.484981 -0.48498,-1.131623 2.74822,-0.161661 z m -20.93175,30.147531 1.53578,-1.53578 1.37412,1.0508 0.56581,2.42492 -1.69744,0.88913 -1.77827,-2.82907 z m 6.70893,-5.90062 1.77827,1.8591 c 0,0 1.29329,0.0808 1.29329,-0.2425 0,-0.32332 0.24249,-2.02076 0.24249,-2.02076 l 0.88914,-0.8083 -0.80831,-1.77828 -2.02076,0.72748 -1.37412,2.26326 z",RI:"m 874.07001,178.89536 -3.69579,-14.95599 6.26928,-1.84514 2.19113,1.92712 3.30649,4.32065 2.6879,4.40209 -2.99934,1.62479 -1.29328,-0.16166 -1.13162,1.77827 -2.42491,1.93992 -2.90986,0.96995 z",NY:"m 830.37944,188.7456 -1.13163,-0.96996 -2.58658,-0.16166 -2.26324,-1.93992 -1.63061,-6.12913 -3.45846,0.0905 -2.44371,-2.7082 -19.38532,4.38194 -43.00178,8.72969 -7.52965,1.22799 -0.73816,-6.46834 1.4281,-1.12538 1.29328,-1.13162 0.96997,-1.61661 1.77826,-1.13162 1.93993,-1.77827 0.48498,-1.6166 2.10158,-2.74823 1.13163,-0.96996 -0.16166,-0.96997 -1.29329,-3.07154 -1.77826,-0.16166 -1.93993,-6.1431 2.90989,-1.77827 4.36483,-1.45494 4.04152,-1.29329 3.23321,-0.48498 6.30475,-0.16166 1.93993,1.29329 1.6166,0.16166 2.10159,-1.29329 2.58657,-1.13162 5.17313,-0.48498 2.10159,-1.77827 1.77826,-3.23321 1.61661,-1.93992 2.10158,0 1.93993,-1.13163 0.16166,-2.26324 -1.45494,-2.10159 -0.32332,-1.45494 1.13162,-2.10159 0,-1.45494 -1.77827,0 -1.77826,-0.8083 -0.8083,-1.13163 -0.16166,-2.58657 5.81977,-5.49645 0.64664,-0.8083 1.45495,-2.90989 2.90989,-4.5265 2.74823,-3.71819 2.10158,-2.4249 2.4151,-1.82561 3.08136,-1.24594 5.49645,-1.29329 3.23321,0.16166 4.5265,-1.45494 7.56519,-2.07117 0.51979,4.97967 2.42492,6.46644 0.8083,5.17315 -0.96996,3.87986 2.58657,4.5265 0.8083,2.10159 -0.8083,2.9099 2.9099,1.29328 0.64664,0.32332 3.07156,10.99294 -0.53629,5.05967 -0.48498,10.83127 0.8083,5.49647 0.8083,3.55654 1.45495,7.27474 0,8.08304 -1.13163,2.26325 1.83933,1.99279 0.79655,1.67842 -1.93992,1.77827 0.32332,1.29328 1.29328,-0.32332 1.45495,-1.29328 2.26324,-2.58657 1.13163,-0.64664 1.6166,0.64664 2.26325,0.16166 7.92136,-3.87985 2.90989,-2.74823 1.29328,-1.45494 4.20317,1.6166 -3.39487,3.55653 -3.87985,2.90989 -7.11306,5.33479 -2.58656,0.96997 -5.81978,1.93992 -4.04151,1.13163 -1.17474,-0.53293 -0.24402,-3.68853 0.48498,-2.74824 -0.16166,-2.10158 -2.81351,-1.699 -4.5265,-0.96997 -3.87986,-1.13162 -3.7182,-1.77828 z",PA:"m 825.1237,224.69205 1.30842,-0.271 2.32953,-1.25325 1.21188,-2.48307 1.61661,-2.26325 3.23321,-3.07156 0,-0.8083 -2.42491,-1.6166 -3.55654,-2.42492 -0.96996,-2.58657 -2.74824,-0.32332 -0.16166,-1.13163 -0.8083,-2.74823 2.26326,-1.13162 0.16166,-2.42492 -1.2933,-1.29329 0.16166,-1.61661 1.93994,-3.07155 0,-3.07156 2.69763,-2.64588 -0.92028,-0.67498 -2.52408,-0.19291 -2.29449,-1.93992 -1.54992,-6.11606 -3.50458,0.10052 -2.45523,-2.70333 -18.09099,4.19777 -43.00178,8.72969 -8.89135,1.45494 -0.62067,-6.52139 -5.36253,5.06765 -1.29329,0.48498 -4.20229,3.00889 2.91076,19.13745 2.48166,9.72936 3.5718,19.26149 3.26931,-0.63768 11.94358,-1.50247 37.92663,-7.6652 14.87621,-2.82332 8.30035,-1.62236 0.26711,-0.23853 2.1016,-1.61662 2.10158,-0.68084 z",NJ:"m 829.67942,188.46016 -2.32255,2.73427 0,3.07156 -1.93994,3.07155 -0.16166,1.61662 1.2933,1.29328 -0.16166,2.42492 -2.26326,1.13162 0.8083,2.74823 0.16166,1.13163 2.74824,0.32332 0.96996,2.58657 3.55654,2.42492 2.42491,1.6166 0,0.80831 -2.98321,2.69656 -1.61661,2.26324 -1.45495,2.74824 -2.26325,1.29328 -0.46245,1.60248 -0.2425,1.21246 -0.60923,2.60674 1.09227,2.24419 3.23321,2.90989 4.84981,2.26325 4.04151,0.64664 0.16166,1.45494 -0.8083,0.96996 0.32332,2.74823 0.8083,0 2.10159,-2.4249 0.8083,-4.84982 2.74823,-4.04151 3.07155,-6.46642 1.13162,-5.49645 -0.64664,-1.13163 -0.16166,-9.37631 -1.61661,-3.39486 -1.13162,0.8083 -2.74823,0.32332 -0.48498,-0.48498 1.13163,-0.96997 2.10158,-1.93992 0.0631,-1.09383 -0.38439,-3.43384 0.57337,-2.74824 -0.11747,-1.96901 -2.80754,-1.75035 -5.09214,-1.17576 -4.13744,-1.38163 -3.58563,-1.64569 z",DE:"m 825.6261,228.2791 0.36831,-2.14689 0.37507,-1.69105 -1.623,0.39776 -1.61546,0.46756 -2.20626,1.7643 1.72012,5.04288 2.26326,5.65812 2.10158,9.69965 1.61662,6.30478 5.01148,-0.16166 6.14212,-1.18068 -2.26423,-7.38627 -0.96997,0.48498 -3.55653,-2.4249 -1.77826,-4.68816 -1.93993,-3.55653 -3.14712,-2.87031 -0.86416,-2.09812 0.36636,-1.61546 z",MD:"m 839.79175,252.41476 -6.00855,1.20384 -5.1429,0.11746 -1.84356,-6.92233 -1.92481,-9.16932 -2.57262,-6.18845 -1.28838,-4.39833 -7.50602,1.62236 -14.87621,2.82332 -37.45143,7.5509 1.1313,5.01166 0.96996,5.65811 0.32332,-0.32332 2.1016,-2.4249 2.26324,-2.61766 2.42491,-0.61556 1.45496,-1.45495 1.77826,-2.58657 1.29328,0.64665 2.90989,-0.32333 2.58658,-2.10158 2.00689,-1.45327 1.84523,-0.48498 1.64435,1.12995 2.90989,1.45494 1.93992,1.77827 1.21246,1.53578 4.12235,1.69743 0,2.90989 5.49646,1.29329 1.14444,0.54198 1.4119,-2.02832 2.88197,1.97016 -1.27817,2.48193 -0.76527,3.98566 -1.77826,2.58657 0,2.10159 0.64664,1.77827 5.06395,1.35569 4.3111,-0.0617 3.07154,0.96997 2.10159,0.32332 0.96996,-2.10159 -1.45494,-2.10158 0,-1.77827 -2.42491,-2.10159 -2.10158,-5.49645 1.29328,-5.3348 -0.16166,-2.10158 -1.29328,-1.29329 c 0,0 1.45494,-1.6166 1.45494,-2.26324 0,-0.64665 0.48498,-2.10159 0.48498,-2.10159 l 1.93993,-1.29328 1.93992,-1.61661 0.48498,0.96997 -1.45494,1.6166 -1.29328,3.71819 0.32332,1.13162 1.77826,0.32332 0.48498,5.49646 -2.10158,0.96996 0.32332,3.55653 0.48498,-0.16166 1.13162,-1.93992 1.61661,1.77826 -1.61661,1.29329 -0.32332,3.39487 2.58657,3.39487 3.87985,0.48498 1.61661,-0.8083 3.23655,4.18293 1.35835,0.5363 6.65367,-2.79695 2.00758,-4.02387 -0.43596,-4.90798 z m -15.96958,9.02872 1.13162,2.50575 0.16166,1.77827 1.13163,1.8591 c 0,0 0.88914,-0.88914 0.88914,-1.21246 0,-0.32332 -0.72747,-3.07156 -0.72747,-3.07156 l -0.72748,-2.34409 -1.8591,0.48499 z",VA:"m 831.63885,266.06892 -0.14391,-1.94703 6.45343,-2.54988 -0.77041,3.21784 -2.91995,3.77911 -0.41809,4.58582 0.46175,3.39044 -1.82797,4.97816 -2.16427,1.91614 -1.47034,-4.64081 0.44589,-5.44911 1.587,-4.18307 0.76687,-3.09761 z m 3.34019,28.30136 -58.17418,12.57543 -37.42697,5.27907 -6.67833,-0.37518 -2.58525,1.92638 -7.33913,0.22069 -8.38211,0.97767 -10.91496,1.61462 10.46943,-5.6112 -0.0131,-2.07493 1.52005,-2.14613 10.55378,-11.50143 3.94672,4.47746 3.78301,0.96398 2.54346,-1.14032 2.23722,-1.31116 2.53661,1.34352 3.91417,-1.42776 1.87673,-4.55634 2.60092,0.54002 2.85524,-2.13125 1.79927,0.4936 2.82721,-3.67657 0.34825,-2.08311 -0.96366,-1.27557 1.00277,-1.86663 5.27427,-12.27715 0.61677,-5.73508 1.22889,-0.52354 2.17853,2.44287 3.93586,-0.30117 1.92921,-7.57363 2.79399,-0.56086 1.04975,-2.74107 2.57982,-2.34688 2.77183,-5.69519 0.0849,-5.06755 9.82151,3.82282 c 0.68085,0.34042 0.83288,-5.04915 0.83288,-5.04915 l 3.65256,1.59833 0.0683,2.93816 5.78425,1.29949 2.13295,1.1762 1.65992,2.05569 -0.65455,3.64867 -1.94744,2.59098 0.10985,2.05907 0.58896,1.85291 4.97875,1.26843 4.45127,0.0399 3.06883,0.95864 1.94351,0.3093 0.71481,3.08846 3.19044,0.40253 0.86807,1.20002 -0.43949,4.69008 1.37473,1.10255 -0.47895,1.93039 1.22941,0.78977 -0.2218,1.3846 -2.69399,-0.0949 0.089,1.61552 2.28099,1.54287 0.12154,1.4119 1.77311,1.78538 0.49179,2.52413 -2.55304,1.38131 1.57222,1.4943 5.80102,-1.68583 3.60762,6.01193 z",WV:"m 761.18551,238.96731 1.11201,4.94453 1.08344,6.03133 2.13029,-2.58034 2.26324,-3.07156 2.53838,-0.61555 1.45495,-1.45494 1.77827,-2.58657 1.44498,0.64664 2.90989,-0.32332 2.58658,-2.10159 2.00689,-1.45326 1.84523,-0.48499 1.30392,1.01647 3.64325,1.82163 1.93993,1.77827 1.37412,1.29328 -0.76172,5.55494 -5.83491,-2.54122 -4.24525,-1.62202 -0.10114,5.17843 -2.74764,5.53673 -2.53003,2.42666 -1.19209,2.74939 -2.64358,0.5001 -0.89784,3.60188 -1.04323,3.94967 -3.96824,0.34074 -2.32373,-2.43888 -1.07115,0.55941 -0.63268,5.4697 -1.35029,3.5345 -4.9584,10.95497 0.89669,1.1607 -0.20586,1.90854 -2.80869,3.88447 -1.8085,-0.54429 -2.96805,2.15974 -2.54238,-0.57221 -1.99923,4.55557 c 0,0 -3.25931,1.43022 -3.92291,1.36772 -0.16051,-0.0151 -2.4691,-1.2491 -2.4691,-1.2491 l -2.33652,1.37937 -2.4098,1.0444 -3.74469,-0.88912 -1.1214,-1.16828 -2.19222,-3.02336 -3.14259,-1.98812 -1.71157,-3.62324 -4.28488,-3.46819 -0.64665,-2.26325 -2.58657,-1.45495 -0.80831,-1.6166 -0.24249,-5.25398 2.18242,-0.0808 1.93994,-0.8083 0.16166,-2.74823 1.6166,-1.45495 0.16166,-5.01148 0.96996,-3.87986 1.29329,-0.64664 1.29328,1.13162 0.48499,1.77827 1.77827,-0.96997 0.48498,-1.6166 -1.13162,-1.77827 0,-2.42491 0.96996,-1.29329 2.26325,-3.39487 1.29328,-1.45494 2.1016,0.48498 2.26324,-1.61662 3.07155,-3.39487 2.26326,-3.87986 0.32332,-5.65811 0.48498,-5.01149 0,-4.68816 -1.13162,-3.07155 0.96996,-1.45496 1.28348,-1.29328 3.49125,19.82712 4.63101,-0.75115 12.42832,-1.79965 z",OH:"m 735.32497,193.32832 -6.09354,4.05335 -3.87985,2.26325 -3.39487,3.71819 -4.04151,3.87985 -3.23321,0.8083 -2.90989,0.48498 -5.49646,2.58657 -2.10158,0.16166 -3.39487,-3.07155 -5.17314,0.64665 -2.58656,-1.45495 -2.38107,-1.35083 -4.89257,0.70341 -10.18462,1.61661 -11.20687,2.18473 1.29329,14.63028 1.77827,13.74117 2.58656,23.4408 0.56582,4.83117 4.12235,-0.12902 2.42491,-0.80831 3.3638,1.50314 2.07049,4.36483 5.13894,-0.0171 1.89174,2.1187 1.76117,-0.0653 2.53839,-1.34146 2.50417,0.3715 5.42128,0.48268 1.72697,-2.13268 2.34565,-1.29328 2.07049,-0.68085 0.64664,2.74824 1.77828,0.96996 3.47569,2.34407 2.18242,-0.0808 1.33312,-0.49248 0.18471,-2.76153 1.58536,-1.45496 0.0992,-4.79272 c 0,0 1.02396,-4.10906 1.02396,-4.10906 l 1.29927,-0.60128 1.32135,1.14774 0.53815,1.69702 1.71913,-1.03742 0.43898,-1.46075 -1.11669,-1.90306 0.0663,-2.31443 0.749,-1.07231 2.15276,-3.30648 1.05022,-1.54334 2.10159,0.48498 2.26325,-1.61661 3.07155,-3.39487 2.77149,-4.07873 0.32033,-5.05551 0.48498,-5.01149 -0.17678,-5.30688 -0.95484,-2.89478 0.35124,-1.18978 1.80439,-1.75011 -2.28879,-9.04733 -2.90989,-19.36177 z",IN:"m 619.56954,299.97132 0.0653,-2.85858 0.48499,-4.52651 2.26324,-2.90988 1.77828,-3.87987 2.58656,-4.20317 -0.48498,-5.81979 -1.77826,-2.74823 -0.32332,-3.23321 0.8083,-5.49647 -0.48498,-6.95141 -1.2933,-16.00441 -1.29328,-15.35776 -0.97047,-11.72002 3.07106,0.88951 1.45495,0.96996 1.13162,-0.32332 2.10159,-1.93992 2.82957,-1.61699 5.0928,-0.16204 21.98587,-2.26326 5.57573,-0.53316 1.50314,15.95621 4.25135,36.84155 0.59846,5.7716 -0.3715,2.26325 1.22798,1.79537 0.0964,1.37255 -2.52129,1.59951 -3.53943,1.55131 -3.20213,0.55028 -0.59846,4.86693 -4.57469,3.31247 -2.79642,4.01044 0.32332,2.37673 -0.58134,1.5342 -3.32647,0 -1.58553,-1.6166 -2.49331,1.2622 -2.68296,1.50314 0.16167,3.05445 -1.19379,0.25803 -0.46788,-1.01814 -2.16688,-1.50314 -3.25032,1.34148 -1.55131,3.00625 -1.43784,-0.8083 -1.45495,-1.59951 -4.46434,0.48499 -5.59283,0.96996 -2.90989,1.55132 z",IL:"m 619.54145,300.34244 0.0312,-3.22971 0.56739,-4.64596 2.33253,-2.91586 1.86665,-4.07576 2.23302,-3.99533 -0.3715,-5.2524 -2.00521,-3.54257 -0.0964,-3.34668 0.69483,-5.26951 -0.82541,-7.17837 -1.06634,-15.77745 -1.29328,-15.01734 -0.92228,-11.6392 -0.27251,-0.92139 -0.8083,-2.58657 -1.29328,-3.71819 -1.61661,-1.77827 -1.45494,-2.58656 -0.23357,-5.48896 -45.79643,2.59825 0.22862,2.37195 2.28623,0.68587 0.91448,1.14311 0.45725,1.82898 3.88658,3.42934 0.68588,2.28623 -0.68588,3.42934 -1.82898,3.65796 -0.68586,2.51484 -2.28623,1.82899 -1.82898,0.68587 -5.25832,1.37173 -0.68587,1.82898 -0.68587,2.05761 0.68587,1.37174 1.82898,1.60036 -0.22862,4.1152 -1.82899,1.60036 -0.68586,1.60036 0,2.74347 -1.82898,0.45724 -1.60036,1.14312 -0.22862,1.37174 0.22862,2.0576 -1.71467,1.31457 -1.0288,2.80064 0.45724,3.65795 2.28623,7.31593 7.31593,7.54455 5.48693,3.65796 -0.22862,4.34383 0.9145,1.37174 6.40143,0.45724 2.74347,1.37174 -0.68586,3.65796 -2.28623,5.94419 -0.68587,3.20072 2.28622,3.88658 6.40144,5.25832 4.57246,0.68587 2.05759,5.0297 2.05761,3.20071 -0.91449,2.97209 1.60036,4.11521 1.82898,2.05761 1.41403,-0.88069 0.90766,-2.07479 2.21308,-1.7472 2.13147,-0.6144 2.60253,1.1798 3.62699,1.3757 1.18895,-0.29823 0.19987,-2.25845 -1.2873,-2.41179 0.30422,-2.37672 1.8384,-1.34745 3.02254,-0.81029 1.2609,-0.45852 -0.61261,-1.38688 -0.79137,-2.35437 1.4326,-0.98096 1.15747,-3.21403 z",CT:"m 874.06831,178.86288 -3.67743,-14.87881 -4.71882,0.92031 -21.22878,4.74309 1.00019,3.22567 1.45495,7.27474 0.17678,8.96692 -1.22002,2.17487 1.92079,1.93234 4.27153,-3.90564 3.55653,-3.23321 1.93992,-2.10159 0.80831,0.64664 2.74822,-1.45494 5.17314,-1.13162 7.79469,-3.17877 z",WI:"m 615.06589,197.36866 -0.0667,-3.15742 -1.17911,-4.5265 -0.64664,-6.14309 -1.13162,-2.42491 0.96996,-3.07155 0.8083,-2.90989 1.45495,-2.58656 -0.64665,-3.39487 -0.64664,-3.55653 0.48498,-1.77827 1.93993,-2.42491 0.16166,-2.74823 -0.8083,-1.29328 0.64664,-2.58657 -0.45252,-4.17071 2.74823,-5.65811 2.90989,-6.78974 0.16166,-2.26325 -0.32332,-0.96996 -0.80831,0.48498 -4.20317,6.30476 -2.74823,4.04151 -1.93992,1.77827 -0.8083,2.26324 -1.95495,0.8083 -1.13162,1.93993 -1.45495,-0.32332 -0.16166,-1.77827 1.29329,-2.4249 2.10158,-4.68816 1.77827,-1.6166 0.99083,-2.35785 -2.56045,-1.90134 -1.97482,-10.36699 -3.54747,-1.34198 -1.94626,-2.30833 -12.12971,-2.72164 -2.87589,-1.01205 -8.21312,-2.16729 -7.91792,-1.15875 -3.76516,-5.13067 -0.7504,0.55401 -1.19791,-0.16166 -0.64665,-1.13162 -1.33401,0.29655 -1.13163,0.16166 -1.77826,0.96996 -0.96997,-0.64664 0.64665,-1.93993 1.93992,-3.07155 1.13162,-1.13162 -1.93992,-1.45494 -2.10159,0.8083 -2.90989,1.93992 -7.43638,3.23321 -2.90989,0.64664 -2.90988,-0.48498 -0.98173,-0.87825 -2.1167,2.83518 -0.22862,2.74347 0,8.45903 -1.14312,1.60037 -5.25832,3.88657 -2.28622,5.94419 0.45724,0.22862 2.51485,2.05761 0.68586,3.20072 -1.82898,3.20071 0,3.88659 0.45725,6.63005 2.97209,2.9721 3.42935,0 1.82898,3.20072 3.42933,0.45724 3.88659,5.71557 7.0873,4.11521 2.0576,2.74347 0.9145,7.43024 0.68586,3.31502 2.28623,1.60036 0.22862,1.37174 -2.0576,3.42933 0.22862,3.20073 2.51485,3.88658 2.51485,1.14311 2.97209,0.45724 1.34234,1.38012 45.29836,-2.66945 z",NC:"m 834.98153,294.31554 2.085,4.91735 3.55653,6.46642 2.4249,2.42491 0.64664,2.26325 -2.4249,0.16166 0.8083,0.64664 -0.32332,4.20317 -2.58657,1.29328 -0.64664,2.10159 -1.29328,2.90989 -3.7182,1.6166 -2.4249,-0.32332 -1.45495,-0.16166 -1.6166,-1.29328 0.32332,1.29328 0,0.96997 1.93993,0 0.8083,1.29328 -1.93993,6.30476 4.20317,0 0.64665,1.6166 2.26324,-2.26324 1.29329,-0.48499 -1.93993,3.55653 -3.07155,4.84982 -1.29328,0 -1.13163,-0.48498 -2.74822,0.64664 -5.17314,2.42491 -6.46642,5.33479 -3.39487,4.68815 -1.93992,6.46642 -0.48498,2.42491 -4.68816,0.48498 -5.45313,1.33666 -9.94641,-8.20253 -12.60954,-7.59805 -2.90989,-0.80831 -12.60953,1.45495 -4.27646,0.75015 -1.6166,-3.23322 -2.97036,-2.1167 -16.48939,0.48498 -7.27474,0.8083 -9.05299,4.52651 -6.14311,2.58656 -21.17755,2.58658 0.50009,-4.05433 1.77827,-1.45494 2.74824,-0.64665 0.64664,-3.7182 4.20318,-2.74822 3.87985,-1.45496 4.20319,-3.55653 4.36483,-2.10159 0.64664,-3.07156 3.87986,-3.87985 0.64664,-0.16166 c 0,0 0,1.13163 0.80831,1.13163 0.8083,0 1.93993,0.32332 1.93993,0.32332 l 2.26325,-3.55654 2.10159,-0.64665 2.26324,0.32333 1.61662,-3.55653 2.90989,-2.58658 0.48498,-2.10159 0.1875,-3.64819 4.2765,-0.0225 7.19859,-0.85579 15.75723,-2.25243 15.13604,-2.08657 21.64048,-4.71935 19.98332,-4.25857 11.17694,-2.40581 5.04998,-1.15688 z m 4.27046,33.20657 2.58658,-2.50575 3.15238,-2.58658 1.53578,-0.64664 0.16166,-2.02076 -0.64664,-6.14312 -1.45495,-2.34408 -0.64665,-1.8591 0.72748,-0.2425 2.74824,5.49648 0.40415,4.44567 -0.16166,3.39489 -3.39488,1.53577 -2.82907,2.42492 -1.13162,1.21246 -1.0508,-0.16166 z", +DC:"m 805.81945,250.84384 -1.85828,-1.82417 -1.23263,-0.68629 1.44301,-2.02247 2.88909,1.9485 -1.24119,2.58443 z",MA:"m 899.62349,173.25394 2.17192,-0.68588 0.45726,-1.71467 1.0288,0.11431 1.0288,2.28624 -1.25742,0.45724 -3.8866,0.11432 0.45724,-0.57156 z m -9.37354,0.80018 2.28622,-2.62917 1.60037,0 1.82899,1.48605 -2.40054,1.0288 -2.17192,1.0288 -1.14312,-0.91448 z m -34.79913,-21.98819 17.64687,-4.64068 2.26326,-0.64664 1.91408,-2.79571 3.73677,-1.66331 2.88924,4.41284 -2.42491,5.17314 -0.32332,1.45494 1.93993,2.58657 1.13162,-0.8083 1.77827,0 2.26324,2.58656 3.87986,5.98144 3.55653,0.48498 2.26324,-0.96996 1.77827,-1.77827 -0.80831,-2.74822 -2.10158,-1.61661 -1.45495,0.8083 -0.96996,-1.29328 0.48498,-0.48498 2.10159,-0.16166 1.77826,0.8083 1.93993,2.42491 0.96996,2.90989 0.32332,2.4249 -4.20317,1.45495 -3.87985,1.93992 -3.87985,4.5265 -1.93993,1.45494 0,-0.96996 2.42491,-1.45495 0.48498,-1.77826 -0.8083,-3.07155 -2.90989,1.45494 -0.8083,1.45495 0.48498,2.26324 -2.06633,1.00043 -2.7472,-4.52713 -3.39488,-4.36484 -2.0705,-1.81247 -6.53327,1.8762 -5.09233,1.05079 -20.67516,4.59221 -0.66776,-4.76785 0.64664,-10.58877 4.28927,-0.88914 6.78975,-1.2933 z",TN:"m 696.67788,318.25411 -51.89309,5.01149 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22097,4.10083 -8.18538,0.26401 -6.95141,0.64664 -8.09083,-0.12386 -1.41378,7.07286 -1.69623,5.48005 -3.29317,2.75084 -1.34874,4.38106 -0.32332,2.58657 -4.04152,2.26324 1.45494,3.55654 -0.96996,4.36484 -0.96838,0.78965 108.15855,-10.40755 0.40327,-3.95494 1.81073,-1.49039 2.83415,-0.74945 0.67193,-3.71698 4.0986,-2.70496 4.04693,-1.49403 4.08358,-3.57033 4.43609,-2.02546 0.52126,-3.06735 4.0646,-3.98499 0.5508,-0.11417 c 0,0 0.0312,1.13162 0.83955,1.13162 0.8083,0 1.93993,0.35457 1.93993,0.35457 l 2.26325,-3.58779 2.07034,-0.64664 2.27511,0.29521 1.59831,-3.53286 2.95525,-2.64391 0.42168,-1.93911 0.30896,-3.71115 -2.14655,-0.19977 -2.60168,2.02833 -6.99331,0.0291 -18.35929,2.38682 -8.06109,1.9082 z",AR:"m 593.82477,343.05296 -3.97988,0.7167 -5.11215,-0.63403 0.4207,-1.60207 2.97975,-2.56669 0.94338,-3.65625 -1.82898,-2.9721 -78.41757,2.51485 1.60036,6.85869 -1e-5,8.23042 1.37175,10.97399 0.22862,37.83693 2.28623,1.94329 2.97209,-1.37173 2.74348,1.14311 0.68034,6.5733 55.62126,-1.1406 1.14563,-2.09037 -0.28662,-3.54951 -1.82563,-2.9721 1.59869,-1.48521 -1.59869,-2.5115 0.6842,-2.50983 1.36839,-5.60543 2.51819,-2.06263 -0.68587,-2.28456 3.65797,-5.37179 2.74347,-1.36839 -0.11348,-1.49358 -0.34544,-1.82564 2.85695,-5.59873 2.40304,-1.25659 0.38413,-3.42763 1.77067,-1.2417 -3.14352,-0.48427 -1.34146,-4.01044 2.80408,-2.37671 0.55026,-2.0192 1.27948,-4.04661 1.06619,-3.25539 z",MO:"m 558.44022,248.11316 -2.51987,-3.08725 -1.14312,-2.28623 -64.35723,2.40054 -2.28626,0.11431 1.25743,2.51485 -0.22862,2.28622 2.51484,3.88659 3.0864,4.11521 3.08641,2.74347 2.16123,0.22862 1.49673,0.9145 0,2.97209 -1.82897,1.60036 -0.45726,2.28622 2.05761,3.42935 2.51486,2.97209 2.51484,1.82898 1.37173,11.65975 0.31414,36.07221 0.22862,4.68675 0.45724,5.38351 22.43299,-0.86682 23.20603,-0.68587 20.80466,-0.80101 11.65474,-0.2303 2.1694,3.426 -0.68419,3.3075 -3.08725,2.40304 -0.57239,1.83734 5.37849,0.45726 3.89496,-0.68588 1.71718,-5.49363 0.65142,-5.85679 2.09803,-2.55516 2.59603,-1.48689 0.0514,-3.05024 1.01602,-1.93648 -1.69423,-2.54377 -1.33093,0.98426 -1.99262,-2.22724 -1.28503,-4.759 0.80101,-2.5182 -1.94413,-3.42766 -1.83064,-4.5758 -4.79941,-0.79934 -6.9688,-5.59875 -1.71886,-4.11353 0.79935,-3.20072 2.05927,-6.05767 0.45892,-2.86363 -1.94914,-1.03131 -6.85534,-0.79767 -1.02797,-1.71216 -0.1118,-4.23036 -5.48694,-3.43101 -6.97551,-7.7715 -2.28622,-7.31593 -0.23029,-4.22532 0.80101,-2.2879 z",GA:"m 672.29229,355.5518 0,2.18242 0.16166,2.1016 0.64664,3.39487 3.39488,7.92137 2.42491,9.86131 1.45494,6.14311 1.61661,4.84981 1.45495,6.95141 2.10159,6.30477 2.58657,3.39488 0.48498,3.39487 1.93993,0.8083 0.16166,2.1016 -1.77827,4.84981 -0.48498,3.23322 -0.16166,1.93993 1.61661,4.36484 0.32332,5.3348 -0.80831,2.42491 0.64665,0.80831 1.45495,0.8083 0.2047,3.21809 2.23301,3.34953 2.25044,2.16205 7.92138,0.16166 10.81975,-0.64664 21.51239,-1.29328 5.44572,-0.67437 4.57725,0.0277 0.16166,2.90989 2.58657,0.8083 0.32332,-4.36484 -1.61661,-4.5265 1.13163,-1.6166 5.81978,0.8083 4.97741,0.31778 -0.77542,-6.29879 2.26324,-10.02295 1.45495,-4.20318 -0.48499,-2.58656 3.33441,-6.2443 -0.5103,-1.35168 -1.91341,0.70458 -2.58656,-1.2933 -0.64665,-2.10159 -1.29328,-3.55653 -2.26326,-2.10159 -2.58656,-0.64664 -1.61661,-4.84982 -2.92501,-6.335 -4.20317,-1.93993 -2.1016,-1.93993 -1.29329,-2.58657 -2.10158,-1.93993 -2.26325,-1.29329 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.42491,-2.90989 -0.48498,-1.45495 -3.39488,-4.97048 -3.51987,0.0992 -3.75491,-2.35614 -1.41828,-1.29328 -0.32332,-1.77827 0.8708,-1.93992 2.22664,-1.11014 -0.63394,-2.09722 -41.86975,4.98893 z",SC:"m 764.94328,408.16488 -1.77706,0.9695 -2.58657,-1.29329 -0.64664,-2.10159 -1.29328,-3.55653 -2.26326,-2.1016 -2.58657,-0.64664 -1.6166,-4.84981 -2.74824,-5.98145 -4.20317,-1.93994 -2.1016,-1.93992 -1.29328,-2.58657 -2.10159,-1.93994 -2.26325,-1.29328 -2.26325,-2.90989 -3.07155,-2.26324 -4.52651,-1.77828 -0.48498,-1.45494 -2.4249,-2.90989 -0.48499,-1.45496 -3.39488,-5.17313 -3.39487,0.16166 -4.04152,-2.42492 -1.29328,-1.29328 -0.32332,-1.77827 0.8083,-1.93992 2.26325,-0.96998 -0.51082,-2.28908 5.7681,-2.33657 9.1155,-4.589 7.77473,-0.80831 16.1144,-0.42248 2.63825,1.87743 1.6791,3.35822 4.30235,-0.60998 12.60953,-1.45496 2.90989,0.80831 12.60954,7.59806 10.10808,8.12168 -5.42117,5.45834 -2.58657,6.1431 -0.48498,6.30476 -1.6166,0.8083 -1.13163,2.74823 -2.4249,0.64664 -2.10159,3.55653 -2.74823,2.74823 -2.26324,3.39487 -1.61661,0.8083 -3.55653,3.39487 -2.90989,0.16166 0.96997,3.23321 -5.01148,5.49646 -2.10159,1.29328 z",KY:"m 725.9944,295.2707 -2.29332,2.40168 -3.57819,3.99404 -4.92455,5.46467 -1.21577,1.71577 -0.0625,2.10158 -4.37986,2.16409 -5.65812,3.39488 -7.23187,1.79885 -51.86789,4.89886 -15.75956,1.77826 -4.6212,0.51271 -3.86835,-0.0277 -0.22695,4.22028 -8.17941,0.14456 -6.95141,0.64664 -7.98748,-0.0602 1.20778,-1.32008 2.49954,-1.54085 0.22863,-3.20073 0.91449,-1.82898 -1.60682,-2.5389 0.80183,-1.90681 2.26326,-1.77826 2.10158,-0.64665 2.74823,1.29329 3.55654,1.29328 1.13163,-0.32332 0.16166,-2.26325 -1.29329,-2.42491 0.32332,-2.26325 1.93993,-1.45494 2.58658,-0.64665 1.6166,-0.64664 -0.8083,-1.77827 -0.64664,-1.93993 1.50662,-0.9958 c 0.003,-0.0371 1.25396,-3.52229 1.23829,-3.65781 l 3.05322,-1.47868 5.31979,-0.96996 4.49404,-0.48498 1.39244,1.62743 1.52827,0.8708 1.59077,-3.10821 3.18708,-1.28262 2.20509,1.48403 0.41056,0.99904 1.17352,-0.26401 -0.16167,-2.95293 3.13087,-1.74919 2.14809,-1.07348 1.52936,1.66081 3.31815,-0.0442 0.58733,-1.57125 -0.36751,-2.26324 2.60053,-3.9985 4.77655,-3.4379 0.70595,-4.83586 2.92502,-0.45591 3.79146,-1.64568 2.44332,-1.70824 -0.19833,-1.56493 -1.14245,-1.45494 0.56582,-2.99491 4.18485,-0.1175 2.29991,-0.7458 3.34739,1.4291 2.05411,4.36484 5.13229,0.0108 2.05101,2.20819 1.61545,-0.1477 2.60169,-1.27817 5.23706,0.57337 2.57492,0.21751 1.68758,-2.05624 2.61795,-1.42588 1.88178,-0.7071 0.64664,2.83663 2.04343,1.05834 2.64276,2.08249 0.11747,5.67324 0.8083,1.57241 2.58972,1.55628 0.77164,2.29451 4.15989,3.43694 1.80531,3.62324 2.45655,1.65852 z",AL:"m 631.30647,460.41572 -1.4906,-14.3215 -2.74824,-18.75264 0.16166,-14.06449 0.8083,-31.03885 -0.16166,-16.65106 0.16509,-6.41906 44.48448,-3.61945 -0.1478,2.18242 0.16166,2.1016 0.64665,3.39487 3.39488,7.92137 2.4249,9.86131 1.45495,6.14311 1.6166,4.84982 1.45496,6.95141 2.10158,6.30476 2.58657,3.39489 0.48498,3.39486 1.93994,0.80831 0.16166,2.10159 -1.77828,4.84982 -0.48498,3.23322 -0.16166,1.93992 1.61662,4.36485 0.32332,5.33479 -0.80832,2.42492 0.64666,0.8083 1.45494,0.8083 0.32814,2.88882 -5.59766,-0.35355 -6.78975,0.64665 -25.5424,2.90988 -10.41156,1.40677 -0.22138,2.8774 1.77827,1.77827 2.58657,1.93992 0.58086,7.93544 -5.54206,2.5729 -2.74822,-0.32332 2.74822,-1.93993 0,-0.96996 -3.07154,-5.98144 -2.26325,-0.64664 -1.45495,4.36483 -1.29328,2.74823 -0.64664,-0.16166 -2.74823,0 z",LA:"m 607.96706,459.16125 -3.28461,-3.16614 1.00991,-5.50023 -0.66135,-0.89308 -9.26167,1.00656 -25.02832,0.45892 -0.68419,-2.39468 0.91281,-8.4557 3.31588,-5.94585 5.03136,-8.69102 -0.57407,-2.39802 1.25659,-0.68085 0.45893,-1.95249 -2.28624,-2.05593 -0.11179,-1.94245 -1.83066,-4.34551 -0.14705,-6.3386 -55.47379,0.92397 0.0286,9.57357 0.68587,9.37353 0.68587,3.88658 2.51485,4.11521 0.91449,5.02971 4.34383,5.48693 0.22862,3.20072 0.68587,0.68587 -0.68587,8.45904 -2.97209,5.02969 1.60036,2.05761 -0.68588,2.51484 -0.68586,7.31593 -1.37174,3.20071 0.12246,3.61645 4.68648,-1.52015 12.11335,0.20701 10.34627,3.55653 6.46642,1.13163 3.71819,-1.45495 3.23321,1.13163 3.23321,0.96996 0.8083,-2.10159 -3.23321,-1.13162 -2.58657,0.48498 -2.74823,-1.6166 c 0,0 0.16167,-1.29329 0.80831,-1.45495 0.64664,-0.16166 3.07155,-0.96996 3.07155,-0.96996 l 1.77826,1.45494 1.77827,-0.96996 3.23321,0.64664 1.45494,2.42491 0.32332,2.26325 4.52649,0.32332 1.77827,1.77826 -0.8083,1.61661 -1.29329,0.8083 1.61661,1.6166 8.40634,3.55653 3.55653,-1.29328 0.96997,-2.42491 2.58656,-0.64664 1.77827,-1.45494 1.29328,0.96996 0.8083,2.90989 -2.26324,0.8083 0.64664,0.64664 3.39487,-1.29328 2.26325,-3.39487 0.8083,-0.48498 -2.10159,-0.32332 0.8083,-1.61661 -0.16166,-1.45494 2.10159,-0.48498 1.13162,-1.29329 0.64664,0.8083 c 0,0 -0.16166,3.07155 0.64665,3.07155 0.8083,0 4.20317,0.64665 4.20317,0.64665 l 4.04151,1.93992 0.96996,1.45495 2.90989,0 1.13163,0.96996 2.26324,-3.07155 0,-1.45495 -1.29328,0 -3.39487,-2.74822 -5.81978,-0.80831 -3.23321,-2.26324 1.13163,-2.74823 2.26324,0.32332 0.16166,-0.64664 -1.77826,-0.96996 0,-0.48499 3.23321,0 1.77826,-3.07154 -1.29328,-1.93993 -0.32332,-2.74823 -1.45495,0.16166 -1.93992,2.10159 -0.64664,2.58657 -3.07155,-0.64665 -0.96997,-1.77826 1.77827,-1.93993 1.90333,-3.4456 -1.0611,-2.41227 -1.16564,-3.98133 z",MS:"m 631.55882,459.34458 -0.25426,1.25615 -5.17314,0 -1.45494,-0.8083 -2.10159,-0.32332 -6.78974,1.93992 -1.77826,-0.8083 -2.58657,4.20317 -1.10254,0.77802 -1.12383,-2.48798 -1.14312,-3.88659 -3.42933,-3.20071 1.1431,-5.54455 -0.68586,-0.91449 -1.82898,0.22862 -7.91792,0.87337 -24.5465,0.37337 -0.76974,-2.22536 0.87337,-8.3768 3.11684,-5.67281 5.22707,-9.1449 -0.44574,-2.4326 1.23686,-0.65625 0.43587,-1.91947 -2.31748,-2.07898 -0.11512,-2.14148 -1.83572,-4.12109 -0.109,-5.96277 1.32753,-2.48097 -0.2233,-3.41575 -1.76949,-3.08259 1.52642,-1.48221 -1.57061,-2.49954 0.45725,-1.65221 1.5774,-6.52637 2.48595,-2.03635 -0.64167,-2.36697 3.65797,-5.30253 2.83186,-1.35642 -0.22097,-1.67516 -0.28813,-1.6811 2.87606,-5.56767 2.34572,-1.23151 0.15163,-0.89301 37.34348,-3.88117 0.18486,6.28333 0.16166,16.65106 -0.8083,31.03885 -0.16166,14.06449 2.74824,18.75264 1.48437,13.39529 z",IA:"m 569.19154,199.5843 0.26438,2.7862 2.22372,0.57726 0.95394,1.22533 0.50001,1.85536 3.79284,3.35865 0.68587,2.3915 -0.67434,3.42447 -1.58231,3.23198 -0.79934,2.74179 -2.17275,1.60204 -1.71551,0.5724 -5.57902,1.8602 -1.39146,3.84869 0.72864,1.37174 1.84051,1.68259 -0.28293,4.03629 -1.76315,1.53786 -0.77141,1.64314 0.12722,2.77632 -1.88631,0.45724 -1.62545,1.10491 -0.27879,1.35263 0.27879,2.11492 -1.55102,1.11607 -2.47053,-3.13328 -1.26257,-2.44987 -65.73582,2.51485 -0.91803,0.16544 -2.0524,-4.51596 -0.22862,-6.63007 -1.60036,-4.11521 -0.68586,-5.25831 -2.28623,-3.65797 -0.91448,-4.80107 -2.74348,-7.54455 -1.14311,-5.37264 -1.37174,-2.17191 -1.60036,-2.74346 1.95398,-4.84383 1.37174,-5.71557 -2.74347,-2.05761 -0.45725,-2.74347 0.9145,-2.51485 1.71467,0 82.654,-1.26948 0.83426,4.18312 2.25218,1.56097 0.25671,1.42309 -2.02954,3.38931 0.19041,3.20552 2.51486,3.7982 2.52679,1.29362 3.07928,0.50305 0.65834,0.83236 z",MN:"m 475.23781,128.82439 -0.45725,-8.45904 -1.82898,-7.31592 -1.82898,-13.488725 -0.45725,-9.830778 -1.82898,-3.429343 -1.60036,-5.029695 0,-10.28802 0.68586,-3.886587 -1.82093,-5.451667 30.13242,0.03527 0.32332,-8.244684 0.64664,-0.161661 2.26325,0.484982 1.93992,0.808302 0.8083,5.496456 1.45495,6.143098 1.6166,1.616605 4.84982,0 0.32332,1.454944 6.30476,0.323321 0,2.101586 4.84981,0 0.32332,-1.293284 1.13162,-1.131623 2.26325,-0.646642 1.29328,0.969963 2.90989,0 3.87985,2.586567 5.3348,2.424907 2.42491,0.484982 0.48498,-0.969963 1.45494,-0.484982 0.48498,2.909889 2.58657,1.293284 0.48498,-0.484982 1.29329,0.161661 0,2.101586 2.58656,0.969963 3.07155,0 1.61661,-0.808303 3.23321,-3.233209 2.58656,-0.484981 0.80831,1.778265 0.48498,1.293283 0.96996,0 0.96996,-0.808302 8.89133,-0.323321 1.77826,3.071549 0.64665,0 0.71361,-1.084279 4.43991,-0.370665 -0.6121,2.279459 -3.93872,1.837125 -9.24578,4.061128 -4.77474,2.006897 -3.07155,2.586568 -2.42491,3.55653 -2.26324,3.879851 -1.77827,0.808304 -4.52649,5.01147 -1.29329,0.16166 -4.32778,2.75712 -2.46288,3.20511 -0.22862,3.19139 0.0944,8.04335 -1.37604,1.68875 -5.08154,3.75997 -2.23008,5.98241 2.87175,2.23371 0.67989,3.22698 -1.85524,3.23893 0.17079,3.74802 0.36886,6.7304 3.02825,3.00199 3.329,0 1.89111,3.1326 3.37917,0.50327 3.85916,5.67147 7.08729,4.11675 2.14315,2.87512 0.67115,6.43951 -81.2115,1.14479 -0.33792,-35.67685 -0.45724,-2.97209 -4.11521,-3.42934 -1.14312,-1.82898 0,-1.60037 2.0576,-1.60035 1.37174,-1.37174 0.22863,-3.20072 z",OK:"m 380.34313,320.82146 -16.68418,-1.27331 -0.88022,10.95243 20.46538,1.15688 32.05555,1.3036 -2.3346,24.41865 -0.45725,17.83257 0.22863,1.60036 4.34383,3.65796 2.0576,1.14311 0.68587,-0.22862 0.68587,-2.05761 1.37174,1.82899 2.0576,0 0,-1.37174 2.74347,1.37174 -0.45724,3.88658 4.11521,0.22862 2.51484,1.14312 4.11521,0.68587 2.51485,1.82898 2.28623,-2.0576 3.42934,0.68586 2.51485,3.42934 0.91448,0 0,2.28623 2.28623,0.68586 2.28622,-2.28622 1.82899,0.68586 2.51484,0 0.9145,2.51486 6.30107,2.07897 1.37174,-0.68586 1.82898,-4.11521 1.14311,0 1.14312,2.0576 4.11521,0.68587 3.65795,1.37174 2.9721,0.91449 1.82899,-0.91449 0.68586,-2.51485 4.34383,0 2.0576,0.91449 2.74347,-2.05761 1.14312,0 0.68587,1.60036 4.1152,0 1.60036,-2.0576 1.82899,0.45724 2.0576,2.51486 3.20071,1.82897 3.20073,0.9145 1.94108,1.11893 -0.3891,-37.21701 -1.37175,-10.97398 -0.16046,-8.87234 -1.43989,-6.53773 -0.7782,-7.17964 -0.0681,-3.81622 -12.13684,0.31874 -46.41004,-0.45724 -45.03891,-2.05762 -24.2912,-1.37173 z",TX:"m 361.46423,330.57358 22.69079,1.08594 31.09269,1.14312 -2.33461,23.4558 -0.29676,18.15352 0.0681,2.08179 4.34383,3.81843 1.98665,1.44716 1.18421,-0.55969 0.37337,-1.81772 1.14032,1.80362 2.11164,0.0439 -0.003,-1.44709 1.66994,0.96727 1.1387,0.40887 -0.35927,3.96765 4.08819,0.0935 2.92532,1.19717 3.95474,0.52538 2.38138,2.07898 2.1241,-2.07617 3.72494,0.61491 2.22091,3.22494 1.07496,0.32096 -0.16047,1.96527 2.21361,0.79229 2.33015,-2.0548 2.13302,0.61492 2.22938,0.0355 0.93307,2.43544 6.32809,2.11445 1.59305,-0.76693 1.48947,-4.17771 0.34072,0 0.90649,0.0816 1.22905,2.06863 3.92988,0.66528 3.337,1.12288 3.42563,1.19597 1.84058,-0.975 0.71376,-2.51484 4.45322,0.0442 1.80874,0.93078 2.79925,-2.10651 1.10364,0.0442 0.85104,1.60507 4.05472,0 1.51887,-2.02862 1.86737,0.40724 1.94603,2.40328 3.52057,2.04415 2.85876,0.80981 1.51362,0.79984 2.4467,1.99732 3.04304,-1.32779 2.69109,1.13888 0.56381,6.10594 -0.0398,9.70217 0.68586,9.53401 0.70218,3.60511 2.67533,4.41986 0.89818,4.95073 4.21595,5.53802 0.19602,3.14494 0.74637,0.78584 -0.73007,8.38007 -2.8721,5.0065 1.53297,2.15287 -0.63008,2.33808 -0.66957,7.40432 -1.50432,3.338 0.29488,3.50235 -5.66488,1.58518 -9.86129,4.5265 -0.96996,1.93992 -2.58657,1.93993 -2.10158,1.45494 -1.29329,0.8083 -5.65811,5.3348 -2.74823,2.10159 -5.3348,3.2332 -5.65811,2.42491 -6.30476,3.39487 -1.77826,1.45495 -5.81978,3.55653 -3.39487,0.64664 -3.87985,5.49645 -4.04151,0.32333 -0.96997,1.93992 2.26325,1.93993 -1.45495,5.49645 -1.29328,4.5265 -1.13162,3.87985 -0.8083,4.52649 0.8083,2.42491 1.77826,6.9514 0.96997,6.14309 1.77826,2.74823 -0.96996,1.45495 -3.07155,1.93992 -5.65812,-3.87985 -5.49645,-1.13162 -1.29329,0.48498 -3.23321,-0.64664 -4.20317,-3.07155 -5.17313,-1.13162 -7.59805,-3.39487 -2.10158,-3.87986 -1.29329,-6.46641 -3.2332,-1.93993 -0.64665,-2.26325 0.64665,-0.64664 0.32332,-3.39487 -1.29329,-0.64664 -0.64664,-0.96996 1.29328,-4.36484 -1.6166,-2.26324 -3.23321,-1.29329 -3.39487,-4.36483 -3.55653,-6.62808 -4.20317,-2.58657 0.16166,-1.93992 -5.3348,-12.2862 -0.8083,-4.20317 -1.77826,-1.93992 -0.16166,-1.45495 -5.98144,-5.33479 -2.58657,-3.07155 0,-1.13163 -2.58657,-2.10158 -6.78974,-1.13163 -7.43638,-0.64664 -3.07155,-2.26324 -4.52649,1.77826 -3.55653,1.45495 -2.26325,3.2332 -0.96996,3.7182 -4.36483,6.14309 -2.42491,2.42491 -2.58657,-0.96996 -1.77826,-1.13163 -1.93993,-0.64664 -3.87985,-2.26324 0,-0.64665 -1.77826,-1.93992 -5.17314,-2.10159 -7.43638,-7.7597 -2.26325,-4.68815 0,-8.08303 -3.23321,-6.46642 -0.48498,-2.74822 -1.6166,-0.96997 -1.13163,-2.10158 -5.01147,-2.10159 -1.29328,-1.6166 -7.11307,-7.92137 -1.29328,-3.23321 -4.68816,-2.26325 -1.45495,-4.36487 -2.58659,-2.90987 -1.93991,-0.48496 -0.64923,-4.67764 8.00187,0.68589 29.03499,2.74345 29.03508,1.60036 2.23353,-19.46182 3.88655,-55.55502 1.60039,-18.74732 1.37174,0.0286 m 99.02935,229.66274 -0.56581,-7.11308 -2.74824,-7.19392 -0.56582,-7.03225 1.53578,-8.24471 3.31406,-6.87059 3.4757,-5.41565 3.1524,-3.55655 0.64664,0.2425 -4.769,6.6281 -4.36484,6.54728 -2.02077,6.62809 -0.32332,5.17316 0.88913,6.14312 2.58658,7.19392 0.48498,5.17314 0.16166,1.45496 -0.88913,0.24248 z",NM:"m 288.15255,424.01315 -0.77541,-4.7481 8.64378,0.5254 30.17176,2.9459 27.26816,1.68989 2.21527,-18.70747 3.85736,-55.87597 1.73768,-19.38923 1.5717,0.12856 0.8254,-11.16339 -104.00445,-10.63595 -17.49735,120.43481 15.46067,1.98915 1.29328,-10.02295 29.23215,2.82935 z",KS:"m 507.88059,324.38028 -12.61826,0.20443 -46.08909,-0.45723 -44.55748,-2.05763 -24.62974,-1.25741 3.89379,-64.59497 22.08346,0.67517 40.28913,0.8414 44.30124,0.98758 5.09563,0 2.1844,2.1624 2.01766,-0.0214 1.6403,1.01247 -0.0625,3.00923 -1.82898,1.72537 -0.33225,2.23217 1.84308,3.40233 2.95236,3.19506 2.32735,1.61446 1.30077,11.24082 0.18913,36.08573 z",NE:"m 486.09787,240.70058 3.23061,7.01991 -0.12863,2.30252 3.45922,5.49388 2.71929,3.15234 -5.04948,0 -43.48256,-0.93868 -40.78686,-0.8903 -22.25222,-0.78387 1.07277,-21.32785 -32.31824,-2.92025 4.34383,-44.00986 15.54633,1.02881 20.11879,1.1431 17.83257,1.14312 23.77676,1.14311 10.74526,-0.45724 2.0576,2.28622 4.80108,2.9721 1.14311,0.91449 4.34383,-1.37174 3.88659,-0.45724 2.74347,-0.22863 1.82898,1.37174 4.05743,1.60036 2.97209,1.60036 0.45725,1.60036 0.91449,2.0576 1.82898,0 0.79798,0.0462 0.89423,4.68182 2.92026,8.46792 0.57253,3.75671 2.52349,3.77425 0.56959,5.11414 1.60724,4.24037 0.25234,6.47426 z",SD:"m 476.44687,204.02465 -0.0474,-0.58087 -2.89571,-4.84544 1.86023,-4.71211 1.49273,-5.88654 -2.78187,-2.07971 -0.38516,-2.74346 0.7924,-2.55435 3.18851,0.0152 -0.12308,-5.00614 -0.3333,-30.17425 -0.61773,-3.76758 -4.07232,-3.33093 -0.98263,-1.67696 -0.0625,-1.60882 2.02212,-1.5294 1.53222,-1.66567 0.24496,-2.65679 -58.25709,-1.60035 -54.79921,-3.44909 -5.32527,63.69119 14.59027,0.9038 19.94985,1.20561 17.74305,0.92859 23.77676,1.30358 11.9827,-0.42464 1.9663,2.24518 5.19464,3.25335 0.76389,0.72275 4.54144,-1.45281 6.54054,-0.61491 1.6753,1.33627 4.20451,1.59613 2.94506,1.63583 0.39898,1.48381 1.03949,2.24088 2.23737,-0.20136 z",ND:"m 475.30528,128.91846 -0.61491,-8.43367 -1.67695,-6.81592 -1.89149,-13.02422 -0.45724,-10.987026 -1.73946,-3.077142 -1.75661,-5.194396 0.0312,-10.44427 0.62336,-3.824087 -1.8341,-5.467761 -28.64225,-0.564027 -18.59095,-0.646642 -26.51232,-1.293284 -22.94634,-2.133869 -6.99324,67.176834 54.93224,3.34365 58.06901,1.38583 z",WY:"m 360.37668,143.27587 -106.7426,-13.45706 -14.08348,88.45803 113.26461,13.58549 7.56147,-88.58646 z",MT:"M 369.20952,56.969133 338.5352,54.1613 l -29.26055,-3.55653 -29.26054,-4.041512 -32.3321,-5.334795 -18.42929,-3.39487 -32.72365,-6.932736 -4.47902,21.347532 3.42934,7.544541 -1.37174,4.572452 1.82898,4.572451 3.20073,1.371739 4.62082,10.769453 2.6951,3.176523 0.45724,1.143118 3.42934,1.143118 0.45725,2.057593 -7.0873,17.603953 0,2.51485 2.51485,3.20071 0.91448,0 4.80107,-2.97209 0.68588,-1.14312 1.60036,0.68587 -0.22863,5.25832 2.74348,12.57425 2.97209,2.51484 0.91448,0.68587 1.82899,2.28622 -0.45725,3.42935 0.68587,3.42933 1.14312,0.9145 2.28622,-2.28623 2.74347,0 3.20072,1.60036 2.51485,-0.91449 4.11521,0 3.65795,1.60036 2.74348,-0.45725 0.45724,-2.9721 2.97209,-0.68586 1.37174,1.37174 0.45725,3.20071 1.42587,0.83464 1.88695,-11.03474 106.74567,13.42892 8.80221,-86.299157 z",CO:"m 380.03242,320.96457 4.90324,-86.32496 -113.38856,-12.64396 -12.21382,87.93916 120.69914,11.02976 z",ID:"m 148.47881,176.48395 8.77087,-35.22072 1.37174,-4.22952 2.51484,-5.94418 -1.25742,-2.28623 -2.51486,0.11431 -0.80017,-1.0288 0.45725,-1.14311 0.34292,-3.08641 4.45815,-5.48695 1.82898,-0.45724 1.14311,-1.14311 0.57156,-3.20072 0.91448,-0.68586 3.88659,-5.82988 3.88659,-4.34383 0.22862,-3.772268 -3.42934,-2.629163 -1.53555,-4.400983 13.62491,-63.341691 13.51759,2.528111 -4.40808,21.383013 3.56035,7.485352 -1.58111,4.66084 1.96985,4.641233 3.13822,1.255191 3.83534,9.556588 3.51269,4.437154 0.50725,1.143118 3.34095,1.143118 0.36885,2.097075 -6.97101,17.376092 -0.16518,2.56593 2.63112,3.3217 0.90508,-0.0489 4.91129,-3.0256 0.67742,-1.09497 1.56231,0.65886 -0.27844,5.35372 2.73925,12.58271 3.91783,3.17791 1.68118,2.16545 -0.71661,4.08386 1.06622,2.80741 1.06163,1.09128 2.47929,-2.35142 2.84816,0.0489 2.91925,1.3352 2.78002,-0.68193 3.79426,-0.16048 3.9789,1.60036 2.74348,-0.29676 0.49674,-3.03731 2.93259,-0.76483 1.26017,1.51591 0.44093,2.94496 1.42434,1.21321 -8.386,53.60866 c 0,0 -87.96599,-16.70061 -94.95939,-18.20435 z",UT:"m 259.49836,310.10509 -83.74903,-11.87225 20.58761,-112.54135 46.78031,8.74514 -1.4848,10.63042 -2.31162,13.17266 7.80769,0.92837 16.40652,1.80479 8.21097,0.85564 -12.24765,88.27658 z",AZ:"m 144.9112,382.62909 -2.62701,2.15833 -0.32332,1.45495 0.48498,0.96996 18.91427,10.66959 12.12454,7.59804 14.7111,8.56801 16.81269,10.02295 12.2862,2.42491 24.95116,2.70491 17.25561,-119.12707 -83.73563,-11.91725 -3.09239,16.41246 -1.60629,0.0153 -1.71467,2.62916 -2.51485,-0.11432 -1.25742,-2.74347 -2.74347,-0.34293 -0.9145,-1.14311 -0.91448,0 -0.9145,0.57156 -1.94329,1.0288 -0.1143,6.97298 -0.22864,1.71467 -0.57154,12.57424 -1.48605,2.17191 -0.57156,3.31503 2.74347,4.91539 1.25742,5.82988 0.80019,1.0288 1.0288,0.57156 -0.11432,2.28622 -1.60035,1.37173 -3.42934,1.71467 -1.94329,1.9433 -1.48605,3.65795 -0.57156,4.91539 -2.85778,2.74347 -2.0576,0.68587 0.13569,0.82988 -0.45725,1.71467 0.45725,0.80018 3.65796,0.57154 -0.57156,2.74348 -1.48605,2.17191 -3.77227,0.91449 z",NV:"m 196.39273,185.57552 -23.63891,128.82275 -1.83224,0.34915 -1.57276,2.40618 -2.37294,0.0107 -1.47195,-2.74347 -2.61847,-0.37842 -0.77092,-1.10763 -1.03783,-0.054 -2.77837,1.64429 -0.31026,6.78548 -0.36209,5.77717 -0.34857,8.59281 -1.4471,2.08916 -2.43892,-1.07403 -69.079886,-104.20119 18.989116,-67.58491 93.0921,20.66601 z",OR:"m 148.72184,175.53153 8.8497,-34.80151 1.05079,-4.22952 2.35437,-5.62323 -0.61551,-1.16288 -2.51486,-0.0462 -1.2816,-1.6707 0.45724,-1.46407 0.50341,-3.24688 4.45815,-5.48695 1.82898,-1.09915 1.14311,-1.14311 1.48604,-3.56563 4.04706,-5.6694 3.56563,-3.8624 0.22862,-3.451314 -3.26886,-2.468682 -1.78341,-4.642625 -12.66377,-3.61197 -15.08909,-3.54365 -15.43202,0.114306 -0.45724,-1.371729 -5.48695,2.057604 -4.45814,-0.571559 -2.40054,-1.600361 -1.25742,0.685875 -4.68676,-0.228632 -1.71467,-1.371729 -5.25832,-2.057604 -0.800182,0.114316 -4.34383,-1.486056 -1.943291,1.828983 -6.172812,-0.342927 -5.944183,-4.115209 0.685865,-0.80018 0.228621,-7.773173 -2.286225,-3.886577 -4.115208,-0.571559 -0.685865,-2.514847 -2.353932,-0.466565 -5.798525,2.058784 -2.263247,6.466418 -3.233209,10.022949 -3.23321,6.466419 -5.011474,14.064461 -6.466419,13.579473 -8.083023,12.60952 -1.939926,2.90989 -0.808302,8.568 0.386095,12.08023 112.578342,26.32133 z",WA:"m 102.07324,7.6117734 4.36483,1.4549443 9.69963,2.7482283 8.568,1.939925 20.0459,5.658117 22.95579,5.658116 15.22312,3.207173 -13.63236,63.585811 -12.445,-3.525318 -15.50801,-3.570679 -15.22929,0.03324 -0.45557,-1.344699 -5.59922,2.179293 -4.59543,-0.736744 -2.14697,-1.584054 -1.31321,0.657976 -4.73566,-0.140243 -1.69836,-1.349633 -5.26304,-2.112303 -0.734971,0.146918 -4.389122,-1.524448 -1.893298,1.817379 -6.265906,-0.298733 -5.925698,-4.125702 0.778957,-0.932763 0.121223,-7.677452 -2.281999,-3.839701 -4.115208,-0.60704 -0.67741,-2.510616 -2.275512,-0.456932 -3.554948,1.230576 -2.263247,-3.219247 0.323321,-2.909889 2.748228,-0.323321 1.616605,-4.041511 -2.586568,-1.131624 0.161661,-3.718191 4.364833,-0.646641 -2.748228,-2.748228 -1.454945,-7.113061 0.646642,-2.909888 0,-7.921363 -1.778265,-3.23321 2.263247,-9.376307 2.101586,0.484981 2.424907,2.909889 2.748228,2.586567 3.233209,1.939926 4.526493,2.101586 3.071551,0.646642 2.909889,1.454944 3.394873,0.969963 2.263246,-0.16166 0,-2.424908 1.293284,-1.131623 2.101582,-1.293284 0.32333,1.131624 0.32332,1.778265 -2.263251,0.484981 -0.323321,2.101586 1.778262,1.454945 1.13163,2.424907 0.64664,1.939925 1.45494,-0.16166 0.16166,-1.293284 -0.96996,-1.293284 -0.48498,-3.233209 0.8083,-1.778265 -0.64664,-1.454944 0,-2.263247 1.77827,-3.55653 -1.13163,-2.586568 -2.42491,-4.8498139 0.32333,-0.8083023 1.13162,-0.8083024 z m -9.456692,5.9789646 2.020764,-0.16166 0.484982,1.374119 1.535779,-1.616615 2.344082,0 0.808303,1.535779 -1.53578,1.69744 0.646652,0.808313 -0.727477,2.020761 -1.374119,0.404146 c 0,0 -0.889138,0.08084 -0.889138,-0.242485 0,-0.323321 1.454955,-2.586578 1.454955,-2.586578 l -1.69744,-0.565817 -0.323321,1.454954 -0.727478,0.646642 -1.535782,-2.263257 -0.484982,-2.505742 z",CA:"m 144.69443,382.19813 3.94008,-0.48862 1.48604,-2.01144 0.54454,-2.94109 -3.55152,-0.59012 -0.51417,-0.66822 0.4775,-2.03231 -0.15928,-0.58967 1.92257,-0.61959 3.04278,-2.83268 0.58156,-4.9951 1.3799,-3.40211 1.94329,-2.16626 3.51887,-1.58967 1.65439,-1.60483 0.0687,-2.10884 -0.99333,-0.58001 -1.02315,-1.07273 -1.15522,-5.84845 -2.6852,-4.83009 0.56581,-3.505 -2.41958,-1.02931 -69.061322,-104.1784 18.902112,-67.60149 -67.079863,-15.69796 -1.506896,4.73324 -0.161661,7.43638 -5.173135,11.80121 -3.071548,2.58657 -0.323321,1.13162 -1.778266,0.80831 -1.454944,4.20317 -0.808302,3.23321 2.748228,4.20317 1.616605,4.20317 1.131623,3.55653 -0.323321,6.46642 -1.778265,3.07155 -0.646642,5.81978 -0.969963,3.71819 1.778265,3.87985 2.748228,4.52649 2.263247,4.84982 1.293283,4.04151 -0.32332,3.23321 -0.323321,0.48498 0,2.10158 5.658116,6.30476 -0.484981,2.42491 -0.646642,2.26325 -0.646642,1.93992 0.16166,8.24469 2.101586,3.71819 1.939926,2.58656 2.748228,0.48499 0.969963,2.74822 -1.131623,3.55653 -2.101587,1.61661 -1.131623,0 -0.808302,3.87985 0.484981,2.90989 3.23321,4.36483 1.616604,5.3348 1.454944,4.68815 1.293284,3.07155 3.39487,5.81978 1.454944,2.58656 0.484982,2.90989 1.616604,0.96996 0,2.42491 -0.808302,1.93993 -1.778265,7.11306 -0.484982,1.93992 2.424908,2.74823 4.203172,0.48498 4.526493,1.77827 3.879851,2.10158 2.909889,0 2.909888,3.07155 2.586567,4.84982 1.131624,2.26324 3.879851,2.10159 4.849814,0.8083 1.454944,2.10159 0.646642,3.23321 -1.454944,0.64664 0.323321,0.96996 3.233211,0.8083 2.748228,0.16167 3.159889,-1.68685 3.879854,4.20317 0.808302,2.26325 2.586572,4.20317 0.32332,3.23321 0,9.37631 0.48498,1.77826 10.02295,1.45495 19.72257,2.74822 13.84504,1.3497 z m -88.135212,-43.71668 1.293288,1.53578 -0.16166,1.29329 -3.233221,-0.0808 -0.565814,-1.21246 -0.646644,-1.45495 3.314051,-0.0808 z m 1.939932,0 1.212458,-0.64664 3.556543,2.10159 3.07156,1.21245 -0.889136,0.64666 -4.526509,-0.2425 -1.61661,-1.61661 -0.808306,-1.45495 z m 20.692614,19.80348 1.778265,2.34408 0.808313,0.96997 1.535779,0.56581 0.565807,-1.45495 -0.969963,-1.77827 -2.667403,-2.02076 -1.050798,0.16166 0,1.21246 z m -1.454955,8.64886 1.778276,3.15239 1.212458,1.93994 -1.454954,0.24248 -1.293284,-1.21245 c 0,0 -0.727477,-1.45495 -0.727477,-1.85911 0,-0.40414 0,-2.18242 0,-2.18242 l 0.484981,-0.0808 z"}}}}),b}); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/world_countries.js b/plugins/jquery-mapael/maps/world_countries.js new file mode 100644 index 0000000..222326c --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries.js @@ -0,0 +1,229 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of World by country + * + * @source http://backspace.com/mapapp/javascript_world/ + */ + +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('mapael')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'mapael'], factory); + } else { + // Browser globals + factory(jQuery, jQuery.mapael); + } +}(function ($, Mapael) { + + "use strict"; + + $.extend(true, Mapael, + { + maps : { + world_countries : { + width : 1000, + height : 400, + getCoords : function (lat, lon) { + var xfactor = 2.752; + var xoffset = 473.75; + var x = (lon * xfactor) + xoffset; + + var yfactor = -2.753; + var yoffset = 231; + var y = (lat * yfactor) + yoffset; + + return {x : x, y : y}; + }, + 'elems': { + "AE" : "M615.622,164.177l0.582,0.000l0.000,0.580l2.324,-0.289l2.326,0.000l1.455,0.000l2.033,-1.743l2.034,-1.743l1.745,-1.742l0.583,0.871l0.291,2.324l-1.456,0.000l-0.289,1.742l0.581,0.291l-1.163,0.580l0.000,1.161l-0.873,1.162l0.000,1.162l-0.580,0.580l-8.430,-1.452l-0.872,-2.613l0.291,0.871z", + "AF" : "M642.364,132.815l2.617,1.162l2.034,-0.291l0.581,-1.452l2.325,-0.291l1.454,-0.870l0.583,-2.323l2.326,-0.291l0.580,-1.162l1.164,0.871l0.871,0.000l1.453,0.000l2.035,0.582l0.871,0.290l2.036,-0.872l0.872,0.582l0.872,-1.162l1.745,0.000l0.289,-0.291l0.290,-1.161l1.455,-1.161l1.454,0.871l-0.291,0.871l0.581,0.000l0.000,2.323l0.873,0.872l1.161,-0.581l1.162,-0.291l1.744,-1.162l1.745,0.290l2.909,0.000l0.580,0.582l-1.743,0.290l-1.454,0.581l-2.907,0.291l-3.197,0.580l-1.454,1.161l0.581,1.162l0.289,1.452l-1.450,1.161l0.289,1.162l-0.872,0.871l-2.616,0.000l1.161,1.743l-1.742,0.580l-1.162,1.743l0.000,1.743l-0.875,0.580l-1.160,0.000l-2.036,0.290l-0.292,0.581l-2.034,0.000l-1.452,1.742l-0.291,2.323l-3.488,1.161l-2.035,-0.289l-0.581,0.580l-1.455,-0.291l-2.907,0.291l-4.649,-1.452l2.615,-2.323l-0.289,-1.742l-2.036,-0.581l-0.290,-1.743l-0.873,-2.032l1.163,-1.742l-1.163,-0.291l0.873,-2.032l-1.161,3.485z", + "AL" : "M530.451,115.973l-0.289,0.871l0.289,1.161l1.165,0.581l0.000,0.872l-0.873,0.291l-0.292,0.869l-1.160,1.453l-0.583,-0.291l0.000,-0.580l-1.454,-0.871l-0.292,-1.452l0.292,-1.742l0.292,-0.872l-0.584,-0.580l0.000,-0.872l1.163,-1.162l0.292,0.291l0.582,0.000l0.581,0.581l0.582,0.290l-0.289,-1.162z", + "AM" : "M593.82,118.005l3.780,-0.580l0.581,0.870l0.871,0.291l-0.289,0.872l1.452,0.871l-0.871,0.871l1.163,0.871l1.162,0.290l0.000,2.032l-0.873,0.000l-1.163,-1.451l0.000,-0.581l-1.160,0.000l-0.873,-0.581l-0.582,0.000l-1.162,-0.871l-2.036,-0.580l0.292,-1.452l0.292,0.872z", + "AO" : "M518.825,247.227l0.582,2.032l0.871,1.453l0.581,0.87l0.874,1.452h2.033l0.873-0.581l1.452,0.581l0.582-0.871l0.581-1.451l1.744-0.291v-0.29h1.452l-0.289,0.871h3.488v1.742l0.579,1.161l-0.579,1.453l0.29,1.74l0.873,1.162v3.195l0.581-0.292h1.162l1.745-0.29h1.161l0.291,0.871l-0.291,1.452l0.583,1.161l-0.292,1.161v0.873h-5.524l-0.289,8.711l2.034,2.322l1.745,1.744l-5.232,1.161l-6.396-0.582l-2.033-1.161h-11.047l-0.581,0.291l-1.745-1.161l-1.743-0.292l-1.455,0.581l-1.452,0.581l-0.29-1.742l0.581-2.612l0.871-2.324v-1.161l0.874-2.613l0.871-1.163l1.452-1.742l0.873-1.16l0.292-2.033v-1.451l-0.874-1.162l-0.871-1.742l-0.581-1.452v-0.581l0.872-1.161l-0.872-2.613l-0.291-1.742l-1.455-1.741l0.292-0.582l1.163-0.581l0.581,0.291l1.162-0.581L518.825,247.227zM508.071,246.646l-0.874,0.291l-0.581-2.031l1.163-1.163l0.87-0.581l0.874,0.871l-0.874,0.58l-0.578,0.872V246.646z", + "AR" : "M293.546,382.836h-2.616l-1.454-0.87h-1.745h-2.907v-6.389l1.163,1.45l1.163,2.033l3.779,1.744l3.778,0.58L293.546,382.836zM295,291.656l1.452,2.033l1.163-2.323l3.198,0.29l0.291,0.581l5.232,4.356l2.326,0.29l3.198,2.033l2.906,1.161l0.291,1.162l-2.617,4.354l2.617,0.58l3.197,0.581l2.326-0.581l2.326-2.032l0.582-2.322l1.163-0.58l1.454,1.45v2.324l-2.325,1.45l-1.745,1.163l-3.198,2.612l-3.779,3.777l-0.582,2.321l-0.872,2.613l0.291,2.905l-0.872,0.58v1.741l-0.29,1.452l3.487,2.323l-0.291,2.033l1.745,1.161l-0.291,1.162l-2.616,3.773l-4.07,1.455l-5.522,0.579l-2.907-0.29l0.582,1.451l-0.582,2.033l0.291,1.452l-1.454,0.871l-2.907,0.58l-2.616-1.161l-1.163,0.871l0.583,2.613l1.744,0.872l1.452-0.872l0.873,1.453l-2.617,0.87l-2.035,1.743l-0.582,2.613l-0.58,1.451h-2.617l-2.035,1.451l-0.873,2.033l2.617,2.032l2.615,0.582l-0.872,2.613l-3.197,1.452l-1.744,3.194l-2.616,1.161l-1.163,1.163l0.872,2.902l2.035,1.742l-1.163-0.291l-2.617-0.29l-6.685-0.58l-1.163-1.453v-2.03h-1.744l-0.873-0.873l-0.291-2.904l2.035-1.161l0.873-1.741l-0.292-1.453l1.455-2.323l0.872-3.775l-0.291-1.451l1.452-0.58l-0.29-1.162l-1.454-0.289l0.873-1.162l-1.162-1.162l-0.582-3.194l1.164-0.581l-0.582-3.193l0.582-2.904l0.872-2.613l1.453-0.87l-0.581-2.615l-0.292-2.613l2.326-1.742l-0.29-2.323l1.744-2.613v-2.613l-0.873-0.58l-1.163-4.646l1.744-2.904l-0.291-2.612l0.872-2.614l2.035-2.324l1.744-1.741l-0.872-1.163l0.582-0.87v-4.646l2.907-1.451l1.163-2.613l-0.291-0.872l2.034-2.324L295,291.656z", + "AT" : "M520.57,98.549l-0.292,1.162l-1.453,0.000l0.582,0.581l-1.164,1.742l-0.291,0.580l-2.616,0.000l-1.162,0.582l-2.326,-0.291l-4.069,-0.580l-0.582,-0.872l-2.615,0.292l-0.291,0.580l-1.746,-0.291l-1.452,0.000l-1.162,-0.581l0.289,-0.581l0.000,-0.580l0.873,-0.291l1.452,0.871l0.292,-0.871l2.326,0.291l2.034,-0.581l1.452,0.000l0.584,0.581l0.290,-0.291l-0.290,-1.742l0.872,-0.580l1.162,-1.162l2.035,0.871l1.453,-1.162l0.871,0.000l2.326,0.581l1.163,0.000l1.455,0.581l-0.292,0.291l-0.292,-0.870z", + "AU" : "M874.039,343.054l2.616,0.871l1.454-0.29l2.325-0.581l1.453,0.291l0.291,3.193l-0.87,0.872l-0.293,2.321l-1.162-0.579l-1.744,1.741h-0.582l-1.743-0.289l-1.745-2.324l-0.289-1.742l-1.744-2.323l0.29-1.451L874.039,343.054zM868.806,268.715l1.163,2.324l1.744-1.163l0.873,1.163l1.452,1.161l-0.289,1.161l0.58,2.324l0.291,1.45l0.873,0.29l0.579,2.323l-0.289,1.453l0.871,1.741l3.198,1.453l1.744,1.451l2.034,1.161l-0.582,0.581l1.745,1.742l0.87,2.904l1.165-0.581l1.163,1.452l0.581-0.581l0.579,2.904l2.036,1.742l1.163,1.161l2.034,2.033l0.873,2.322v1.452v1.742l1.163,2.323v2.323l-0.582,1.452l-0.581,2.323v1.742l-0.582,2.033l-1.162,2.322l-2.034,1.453l-1.163,2.031l-0.872,1.453l-0.872,2.322l-0.871,1.451l-0.873,2.033l-0.292,1.743v0.87l-1.452,1.163h-3.198l-2.326,1.159l-1.452,1.163l-1.454,1.161l-2.325-1.45l-1.743-0.293l0.289-1.45l-1.452,0.58l-2.325,1.744l-2.326-0.581l-1.743-0.582h-1.454l-2.616-0.871l-1.744-1.743l-0.582-2.032l-0.58-1.452l-1.456-1.162l-2.614-0.29l0.873-1.161l-0.581-2.033l-1.455,1.744l-2.326,0.579l1.455-1.452l0.292-1.74l1.161-1.453l-0.291-2.032l-2.324,2.612l-1.745,0.873l-0.873,2.03l-2.323-1.161l0.29-1.452l-1.744-1.741l-1.455-1.161l0.583-0.581l-3.779-1.743h-1.744l-2.616-1.45l-4.942,0.29l-3.778,0.871l-2.907,1.162l-2.615-0.292l-2.908,1.451l-2.616,0.581l-0.289,1.452l-1.163,1.161h-2.325l-1.744,0.291l-2.325-0.581l-2.036,0.29l-2.034,0.291l-1.455,1.452l-0.871-0.291l-1.452,0.871l-1.163,0.873h-2.036h-2.034l-2.906-1.744l-1.452-0.58v-1.742l1.452-0.291l0.581-0.58l-0.29-1.161l0.58-1.743l-0.29-1.741l-1.454-2.614l-0.579-1.742v-1.452l-0.873-1.743l-0.29-0.87l-1.163-1.162l-0.292-2.033l-1.454-2.323l-0.579-1.161l1.163,1.161l-0.874-2.321l1.455,0.58l0.873,1.161v-1.451l-1.454-2.033l-0.292-0.87l-0.582-0.872l0.29-1.742l0.584-0.581l0.289-1.451l-0.289-1.453l1.162-2.032l0.292,2.032l1.161-1.743l2.034-1.159l1.454-1.162l2.034-0.872l1.454-0.29l0.581,0.29l2.325-0.871l1.455-0.29l0.579-0.58l0.582-0.291h1.744l2.616-0.871l1.745-1.161l0.579-1.452l1.744-1.452v-1.162v-1.45l2.036-2.324l1.163,2.324l1.163-0.292l-0.871-1.45l0.871-1.453l1.163,0.871l0.289-2.322l1.454-1.162l0.58-1.162l1.454-0.58v-0.581l1.163,0.291l0.291-0.872l1.163-0.291l1.163-0.289l2.034,1.161l1.743,1.742h1.453l1.744,0.291l-0.581-1.742l1.454-2.032l1.163-0.873l-0.291-0.581l1.162-1.452l1.744-1.161l1.165,0.291l2.323-0.291v-1.452l-2.034-0.87l1.453-0.58l2.035,0.869l1.453,1.163l2.326,0.581l0.581-0.29l1.744,0.87l1.744-0.87l0.871,0.29l0.872-0.581l1.164,1.451l-0.873,1.453l-0.872,1.16h-0.873l0.292,1.162l-0.873,1.452l-1.163,1.161l0.292,0.872l2.325,1.452l2.034,0.87l1.454,0.871l2.034,1.742h0.581l1.452,0.582l0.582,0.87l2.617,1.161l1.745-1.161l0.581-1.452l0.581-1.161l0.29-1.452l0.873-2.322l-0.291-1.161v-0.872l-0.291-1.452l0.291-2.322l0.581-0.29l-0.29-1.163l0.581-1.451l0.582-1.452v-0.872l1.163-0.869l0.58,1.45l0.291,1.743l0.581,0.291l0.291,1.16l0.871,1.163l0.292,1.74L868.806,268.715z", + "AZ" : "M597.6,121.78l0.873,0.581h1.16v0.581l1.163,1.451l-2.033-0.29l-1.163-1.453l-0.582-0.871H597.6zM604.285,117.715h1.165l0.29-0.581l1.744-1.162l1.452,1.452l1.453,2.033h1.165l0.87,0.871h-2.325l-0.292,2.322l-0.579,0.873l-0.873,0.58v1.452l-0.582,0.291l-1.743-1.453l0.871-1.451l-0.871-0.871l-0.872,0.291l-3.488,2.032v-2.032l-1.162-0.291l-1.163-0.871l0.871-0.871l-1.452-0.871l0.289-0.871l-0.871-0.291l-0.581-0.871l0.581-0.29l2.034,0.581l1.454,0.29l0.582-0.29l-1.455-1.453l0.582-0.29h0.873L604.285,117.715z", + "BA" : "M526.091,107.552l0.871,0.000l-0.581,1.161l1.455,1.162l-0.582,1.161l-0.581,0.291l-0.582,0.290l-0.872,0.581l-0.291,1.451l-2.614,-1.161l-0.874,-1.161l-1.162,-0.581l-1.163,-0.871l-0.579,-0.872l-1.454,-1.451l0.581,-0.872l1.162,0.581l0.582,-0.581l1.163,0.000l2.325,0.291l2.033,0.000l-1.163,-0.581z", + "BD" : "M728.989,170.275l-0.292,2.033l-0.871,-0.291l0.291,2.033l-0.872,-1.452l-0.292,-1.452l-0.290,-1.162l-1.163,-1.742l-2.615,0.000l0.289,1.161l-0.873,1.453l-1.161,-0.581l-0.581,0.581l-0.582,-0.292l-1.164,-0.289l-0.290,-2.324l-1.160,-2.032l0.579,-1.742l-1.744,-0.582l0.582,-1.160l1.743,-0.873l-2.034,-1.451l1.163,-2.032l2.034,1.451l1.454,0.000l0.291,2.032l2.616,0.291l2.327,0.000l1.743,0.291l-1.454,2.324l-1.163,0.289l-0.872,1.452l1.454,1.452l0.581,-1.742l0.872,0.000l-1.454,-4.356z", + "BE" : "M482.78,89.837l2.034,0.000l2.617,-0.580l1.745,1.451l1.452,0.582l-0.290,1.742l-0.583,0.291l-0.290,1.451l-2.615,-1.161l-1.162,0.000l-2.036,-1.162l-1.163,-1.161l-1.452,0.000l-0.293,-0.872l-2.036,0.581z", + "BF" : "M465.919,204.54l-1.744,-0.872l-1.452,0.291l-0.872,0.581l-1.164,-0.581l-0.579,-0.871l-1.165,-0.582l-0.290,-1.741l0.873,-1.161l0.000,-0.871l2.034,-2.324l0.291,-1.742l0.872,-0.871l1.452,0.581l1.163,-0.581l0.291,-0.872l2.035,-1.161l0.582,-0.871l2.617,-1.162l1.452,-0.290l0.582,0.581l2.035,0.000l-0.292,1.161l0.292,1.162l1.453,2.033l0.291,1.161l3.198,0.581l-0.291,2.032l-0.583,0.872l-1.161,0.290l-0.584,1.162l-0.870,0.290l-2.616,0.000l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-4.942,0.000l0.000,1.452l-0.290,-2.323z", + "BG" : "M536.265,109.294l0.581,1.162l1.164,-0.291l2.035,0.581l4.071,0.000l1.452,-0.581l3.196,-0.581l2.035,0.872l1.454,0.290l-1.163,1.161l-1.163,2.033l0.872,1.452l-2.324,-0.290l-2.907,0.871l0.000,1.452l-2.326,0.000l-2.034,-0.872l-2.326,0.872l-2.036,-0.290l0.000,-1.743l-1.452,-0.871l0.290,-0.292l-0.290,-0.289l0.580,-0.871l1.164,-0.871l-1.454,-1.162l-0.290,-1.161l-0.871,0.581z", + "BI" : "M554.579,243.451l-0.290,-3.484l-0.583,-1.161l1.743,0.290l0.874,-1.743l1.454,0.291l0.000,0.871l0.582,0.871l0.000,0.872l-0.582,0.580l-1.163,1.454l-0.872,0.870l1.163,-0.289z", + "BJ" : "M481.037,213.833l-2.037,0.290l-0.872,-2.033l0.290,-6.388l-0.579,-0.289l-0.291,-1.454l-0.872,-0.871l-0.873,-0.871l0.582,-1.452l0.870,-0.290l0.584,-1.162l1.161,-0.290l0.583,-0.872l1.161,-0.871l0.874,0.000l2.034,1.453l0.000,1.160l0.580,1.453l-0.580,1.160l0.291,0.873l-1.454,1.452l-0.582,0.871l-0.581,1.743l0.000,1.741l0.289,-4.647z", + "BN" : "M787.998,218.479l1.163,-0.872l2.324,-1.741l0.000,1.451l-0.291,1.743l-1.163,0.000l-0.580,0.870l1.453,1.451z", + "BO" : "M300.812,291.656l-3.197,-0.290l-1.163,2.323l-1.452,-2.033l-3.781,-0.582l-2.033,2.324l-2.036,0.582l-1.163,-4.065l-1.453,-2.906l0.872,-2.612l-1.453,-1.163l-0.291,-2.031l-1.454,-2.033l1.745,-2.904l-1.163,-2.324l0.582,-0.869l-0.582,-0.872l1.163,-1.452l0.000,-2.323l0.290,-2.033l0.582,-0.873l-2.326,-4.355l2.035,0.000l1.163,0.000l0.872,-0.870l2.326,-0.872l1.453,-1.162l3.487,-0.580l-0.289,2.031l0.289,1.163l0.000,1.743l2.909,2.612l3.196,0.290l0.872,1.162l2.035,0.581l1.163,0.872l1.744,0.000l1.453,0.580l0.000,1.743l0.582,0.871l0.000,1.162l-0.582,0.000l0.872,3.195l5.233,0.000l-0.291,1.740l0.291,0.873l1.453,0.871l0.872,1.742l-0.581,2.032l-0.873,1.453l0.291,1.451l-0.872,0.580l0.000,-0.871l-2.615,-1.451l-2.616,0.000l-4.652,0.871l-1.453,2.324l0.000,1.451l-1.163,3.485l0.291,0.581z", + "BR" : "M315.056,314.017l3.778,-3.777l3.198,-2.613l1.745,-1.163l2.325,-1.450l0.000,-2.324l-1.454,-1.450l-1.162,0.580l0.580,-1.742l0.292,-1.454l0.000,-1.741l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-0.290,-1.162l-0.291,-2.613l-0.291,-0.581l-2.035,-0.871l-1.163,0.581l-2.907,-0.581l0.291,-3.776l-0.872,-1.452l0.872,-0.580l-0.291,-1.451l0.873,-1.453l0.581,-2.032l-0.872,-1.742l-1.453,-0.871l-0.291,-0.873l0.291,-1.740l-5.233,0.000l-0.872,-3.195l0.582,0.000l0.000,-1.162l-0.582,-0.871l0.000,-1.743l-1.453,-0.580l-1.744,0.000l-1.163,-0.872l-2.035,-0.581l-0.872,-1.162l-3.196,-0.290l-2.909,-2.612l0.000,-1.743l-0.289,-1.163l0.289,-2.031l-3.487,0.580l-1.453,1.162l-2.326,0.872l-0.872,0.870l-1.163,0.000l-2.035,0.000l-1.744,0.292l-1.163,-0.292l0.292,-4.066l-2.326,1.453l-2.616,0.000l-0.872,-1.453l-1.744,0.000l0.581,-1.451l-1.744,-1.451l-1.163,-2.614l0.872,-0.581l0.000,-1.162l1.744,-0.581l-0.290,-1.451l0.581,-1.162l0.291,-1.161l3.198,-2.034l2.033,-0.289l0.583,-0.580l2.324,0.290l1.163,-7.551l0.291,-1.161l-0.582,-1.743l-1.162,-0.871l0.000,-2.033l1.453,-0.581l0.582,0.290l0.291,-0.871l-1.745,-0.290l0.000,-1.742l5.233,0.000l0.871,-0.871l0.873,0.871l0.582,1.452l0.581,-0.290l1.452,1.451l2.036,-0.289l0.580,-0.582l2.036,-0.870l1.162,-0.291l0.291,-1.162l2.035,-0.871l-0.291,-0.581l-2.324,-0.289l-0.292,-1.744l0.000,-1.741l-1.163,-0.872l0.582,0.000l2.034,0.290l2.326,0.582l0.581,-0.582l2.035,-0.580l3.198,-0.871l0.872,-1.162l-0.291,-0.580l1.453,-0.291l0.582,0.582l-0.290,1.451l0.872,0.290l0.580,1.161l-0.580,1.162l-0.582,2.324l0.582,1.451l0.291,1.162l1.743,1.162l1.454,0.290l0.290,-0.581l0.872,0.000l1.163,-0.581l0.871,-0.871l1.454,0.290l0.872,0.000l1.454,0.291l0.290,-0.581l-0.581,-0.581l0.291,-0.870l1.163,0.289l1.162,-0.289l1.745,0.581l1.161,0.581l0.873,-0.873l0.582,0.292l0.290,0.581l1.453,0.000l0.872,-1.162l0.872,-2.034l1.745,-2.323l0.872,-0.290l0.581,1.452l1.744,4.936l1.453,0.291l0.000,2.032l-2.034,2.323l0.872,0.872l4.942,0.290l0.000,2.904l2.034,-2.033l3.489,1.163l4.650,1.741l1.163,1.453l-0.290,1.451l3.197,-0.872l5.232,1.453l4.070,0.000l4.069,2.322l3.780,3.196l2.034,0.582l2.326,0.289l0.872,0.870l1.162,3.485l0.291,1.452l-1.162,4.646l-1.163,1.742l-4.070,3.775l-1.744,3.194l-2.035,2.323l-0.581,0.290l-0.873,2.034l0.291,4.936l-0.872,4.357l-0.290,1.742l-0.873,1.162l-0.581,3.774l-2.615,3.483l-0.583,2.906l-2.034,1.161l-0.872,1.453l-2.907,0.000l-4.360,1.160l-1.745,1.162l-3.197,0.871l-3.198,2.324l-2.325,2.613l-0.581,2.032l0.581,1.452l-0.581,2.904l-0.581,1.163l-2.035,1.742l-2.907,4.645l-2.325,2.323l-2.036,1.162l-1.162,2.615l-1.744,1.740l-0.872,-1.740l1.163,-1.164l-1.454,-2.032l-2.325,-1.451l-2.907,-1.743l-0.872,0.000l-2.907,-2.033l1.744,-0.292z", + "BS" : "M260.408,165.628h-0.872l-0.581-1.452l-1.163-0.871l0.872-1.743l0.581,0.291l1.164,2.033V165.628zM259.536,157.788l-2.907,0.581l-0.291-1.162l1.454-0.29l1.744,0.29V157.788zM261.86,157.788l-0.58,2.032l-0.583-0.29l0.291-1.451l-1.453-1.162v-0.291L261.86,157.788z", + "BT" : "M726.082,154.594l1.163,0.871l0.000,1.742l-2.326,0.000l-2.326,-0.290l-1.744,0.581l-2.615,-1.162l0.000,-0.581l1.743,-2.033l1.454,-0.580l2.035,0.580l1.453,0.000l-1.163,-0.872z", + "BW" : "M544.405,281.784l0.582,0.580l0.870,1.742l2.907,2.903l1.455,0.292l0.000,0.870l0.580,1.744l2.326,0.579l1.745,1.162l-4.071,2.033l-2.324,2.032l-0.871,1.742l-0.874,1.161l-1.452,0.293l-0.584,1.161l-0.289,0.870l-1.744,0.582l-2.327,0.000l-1.162,-0.872l-1.162,-0.290l-1.454,0.580l-0.582,1.453l-1.452,0.870l-1.164,1.162l-2.033,0.290l-0.582,-0.872l0.289,-1.741l-1.741,-2.613l-0.874,-0.580l0.000,-7.843l2.908,-0.289l0.000,-9.582l2.033,-0.291l4.361,-0.871l0.871,1.162l1.744,-1.162l0.874,0.000l1.743,-0.582l0.291,0.291l-1.163,-2.034z", + "BY" : "M538.301,82.579l2.907,0.000l2.908,-0.872l0.578,-1.452l2.326,-1.162l-0.290,-1.160l1.745,-0.291l2.906,-1.162l2.908,0.581l0.290,0.872l1.454,-0.291l2.615,0.581l0.289,1.161l-0.578,0.871l1.743,1.743l1.163,0.581l-0.292,0.290l2.036,0.580l0.872,0.872l-1.163,0.580l-2.326,-0.290l-0.581,0.290l0.871,0.872l0.583,2.033l-2.328,0.000l-0.870,0.580l-0.290,1.451l-0.873,-0.289l-2.615,0.000l-0.583,-0.581l-1.162,0.581l-1.163,-0.291l-2.036,-0.290l-3.196,-0.581l-2.615,-0.291l-2.035,0.291l-1.746,0.581l-1.163,0.000l0.000,-1.161l-0.871,-1.162l1.453,-0.582l0.000,-1.161l-0.582,-0.870l0.289,1.452z", + "BZ" : "M228.433,181.89l0.000,-0.290l0.290,-0.290l0.582,0.580l0.872,-1.742l0.580,0.000l0.000,0.290l0.581,0.000l-0.289,0.872l-0.292,1.162l0.292,0.289l-0.292,1.162l0.000,0.291l-0.290,1.161l-0.582,0.872l-0.291,0.000l-0.581,0.870l-0.872,0.000l0.292,-2.903l0.000,2.324z", + "CA" : "M298.487,102.905l2.035,0.291h2.617l-1.454,1.162l-0.872,0.29l-3.488-1.162l-0.873-1.161l1.163-0.872L298.487,102.905zM303.719,95.937h-1.454l-3.488-0.872l-2.616-1.162l0.872-0.291l3.779,0.581l2.616,1.162L303.719,95.937zM133.669,97.679l-1.163,0.291l-4.651-1.162l-0.872-1.162l-2.324-0.871l-0.582-0.871l-2.907-0.581l-0.872-1.452V91.29l2.907,0.581l1.744,0.58l2.617,0.291l0.872,0.872l1.454,1.162l2.615,1.162L133.669,97.679zM319.125,91.581l-1.744,2.323l1.744-0.871l2.035,0.581l-1.163,0.871l2.617,0.873l1.163-0.582l2.906,0.871l-0.872,1.742l1.744-0.291l0.292,1.452l0.872,1.742l-1.164,2.323h-1.162l-1.744-0.29l0.582-2.323l-0.872-0.29l-3.198,2.323h-1.453l1.744-1.452l-2.617-0.581h-2.907h-5.232l-0.58-0.872l1.744-0.871l-1.164-0.871l2.326-1.451l2.906-4.356l1.745-1.743l2.325-0.87h1.163l-0.582,0.87L319.125,91.581zM108.38,82.289l2.616-0.291l-0.58,3.195l2.324,2.323h-1.163l-1.744-1.453l-0.871-1.161l-1.454-0.871l-0.582-1.162l0.291-0.871L108.38,82.289zM255.466,59.928l-0.872,1.453l-1.453-0.291l-0.582-0.58v-0.291l1.163-0.872h1.163L255.466,59.928zM248.198,58.477l-3.197,1.451h-1.744l-0.581-0.581l2.034-1.452h3.779L248.198,58.477zM239.478,50.346l0.291,1.161l1.454-0.29l1.744,0.581l2.906,1.162l3.198,0.871l0.29,1.162l2.035-0.29l1.745,0.871l-2.326,0.872l-4.361-0.581l-1.453-1.161l-2.617,1.452l-4.069,1.451l-0.872-1.742l-3.779,0.291l2.325-1.162l0.291-2.323l1.163-2.613L239.478,50.346zM265.058,46.28l-3.198,0.291l-0.58-1.453l1.162-1.451l2.326-0.581l2.326,0.871v1.161l-0.291,0.292L265.058,46.28zM210.41,40.763l-1.744,1.162l-3.488-0.872l-2.325,0.291l-3.779-1.162l2.325-0.872l2.035-1.162l2.907,0.581l1.744,0.581l0.581,0.581L210.41,40.763zM224.653,39.891v2.614l3.488-2.032l3.197,1.742l-0.581,2.033l2.616,2.032l2.907-2.032l2.035-2.324v-3.195l4.069,0.292l4.07,0.29l3.488,1.452l0.291,1.452l-2.035,1.452l1.744,1.451l-0.291,1.162l-5.231,2.033l-3.779,0.291l-2.907-0.581l-0.872,1.161l-2.617,2.323l-0.872,1.453l-3.196,1.743l-3.78,0.29l-2.325,1.162l-0.292,1.741l-3.197,0.291l-3.198,2.324l-2.907,2.904l-1.162,2.323l-0.292,3.194l4.07,0.291l1.454,2.614l1.163,2.033l3.779-0.582l5.232,1.453l2.616,0.871l2.035,1.452l3.489,0.582l2.907,1.162l4.651,0.29l2.906,0.291l-0.581,2.323l0.872,2.614l2.035,3.194l4.07,2.613l2.326-0.871l1.452-2.903l-1.452-4.357l-2.035-1.452l4.36-1.162l3.197-2.033l1.455-1.742l-0.292-2.032l-1.744-2.324L257.5,69.22l3.489-2.904l-1.162-2.323l-1.163-4.355l2.034-0.582l4.651,0.582l2.907,0.29l2.326-0.581l2.616,0.872l3.198,1.451l0.872,1.162l4.941,0.291v2.323l0.872,3.484l2.616,0.291l1.745,1.742l4.07-1.742l2.616-2.904l1.744-1.161l2.325,2.323l3.488,3.484l3.198,3.195l-1.163,1.742l3.487,1.742l2.616,1.451l4.36,0.872l1.744,0.871l1.163,2.324l2.035,0.29l1.163,0.872l0.291,3.194l-2.035,1.161l-2.035,0.872l-4.65,0.871l-3.198,2.323l-4.942,0.582l-5.814-0.582h-4.07h-2.906l-2.326,2.033l-3.488,1.162l-3.779,3.775l-3.197,2.613l2.325-0.58l4.36-3.486l5.814-2.322l4.069-0.291l2.326,1.162l-2.616,2.032l0.872,2.905l0.872,2.032l3.779,1.452l4.361-0.581l2.906-2.903l0.292,2.032l1.744,0.871l-3.489,1.742l-6.104,1.743l-2.616,1.161l-3.198,2.033l-2.034-0.291l-0.29-2.323l4.94-2.324h-4.36l-3.197,0.291l-1.744-1.452v-3.775l-1.163-0.87l-2.035,0.581l-0.872-0.581l-2.035,2.032l-0.873,2.033l-0.872,1.162l-1.162,0.58h-0.872l-0.292,0.871h-5.232h-4.07l-1.163,0.581l-2.907,1.743l-0.291,0.29l-0.872,1.162h-2.616h-2.616l-1.454,0.291l0.582,0.581l0.291,0.871l-0.291,0.291l-3.488,1.453l-2.907,0.29l-3.197,1.452h-0.581l-0.872-0.29l-0.292-0.581v-0.29l0.581-0.873l1.163-1.451l0.872-1.742l-0.58-2.323l-0.583-2.613l-2.906-1.162l0.581-0.581l-0.581-0.29h-0.581l-0.583-0.291l-0.29-0.871l-0.583,0.291h-0.58v-0.291l-0.582-0.291l-0.291-0.58l-2.035-0.871l-2.326-0.872l-2.616-1.162l-2.617-1.161l-2.326,0.87h-0.872l-3.488-0.581l-2.325,0.291l-2.616-0.871l-2.907-0.291l-1.744-0.291l-0.871-0.581l-0.582-1.452h-0.873v1.161h-5.813h-9.302h-9.302h-8.43h-8.138h-8.14h-8.43h-2.616h-8.139h-7.849h-0.582l-5.231-2.613l-2.036-1.452l-4.941-0.871l-1.454-2.614l0.291-1.742l-3.488-1.161l-0.291-2.033l-3.488-2.033v-1.452l1.454-1.452v-1.743l-4.65-1.742l-2.908-2.903l-1.744-2.033l-2.616-1.162l-1.744-1.162l-1.454-1.451l-2.616,0.871L95.3,68.93l-2.326-1.741l-2.035-1.162l-2.616-0.872h-2.616V49.475V39.311l5.232,0.581l4.069,1.453h2.907l2.616-0.871l3.198-0.871l4.07,0.29l4.069-1.162l4.651-0.87l1.744,1.162l2.035-0.581l0.872-1.452l1.744,0.29l4.651,2.613l3.778-1.742l0.292,2.033l3.487-0.581l0.872-0.872l3.487,0.292l4.071,1.161l6.395,0.871l3.779,0.582l2.907-0.291l3.488,1.452l-3.779,1.453l4.94,0.581l7.559-0.291l2.325-0.581l2.906,1.742l2.908-1.451l-2.616-1.162l1.744-0.871l3.196-0.291l2.326-0.29l2.035,0.871l2.907,1.452l3.197-0.291l4.65,1.162l4.361-0.291h4.07l-0.291-1.742l2.326-0.581l4.36,1.162v2.614l1.744-2.324h2.035l1.454-2.614l-3.198-1.742l-3.196-1.162l0.291-2.903l3.198-2.033l3.778,0.29l2.617,1.453l3.779,2.904l-2.326,1.451L224.653,39.891zM159.54,29.728l-1.453,1.453l6.104-0.871l3.779,1.451l3.197-1.451l2.617,0.871l2.035,2.613l1.454-1.161l-1.745-2.615l2.327-0.581l2.615,0.581l3.198,1.162l1.744,2.613l0.872,2.033l4.651,1.162l4.941,1.452l-0.29,1.162l-4.651,0.29l1.744,0.872l-0.873,1.162l-4.941-0.581l-4.651-0.581h-3.198l-5.231,1.162l-6.977,0.291l-4.941,0.29l-1.454-1.452l-3.778-0.58l-2.617,0.29l-3.198-2.323l1.744-0.291l4.36-0.29h3.778l3.488-0.291l-5.233-0.871l-5.813,0.291h-4.069l-1.454-1.162l6.396-0.871h-4.07l-4.941-0.872l2.325-2.033l2.036-1.162l7.267-1.452L159.54,29.728zM185.993,29.147l-2.326,1.742l-4.361-2.032l1.163-0.291h3.488L185.993,29.147zM263.604,30.018l0.291,0.582h-2.907h-2.906l-3.197,0.29l-0.582-0.29l-3.198-1.452l0.291-0.872l1.163-0.291l6.396,0.291L263.604,30.018zM235.409,29.728l2.325,1.743l2.326-2.323l6.977-0.872l4.941,2.614l-0.582,2.033l5.523-0.871l2.616-1.162l6.104,1.451l3.78,1.162l0.29,1.162l5.233-0.581l2.906,1.742l6.687,1.162l2.326,1.161l2.616,2.614l-5.233,1.162l6.687,1.742l4.359,0.582l3.779,2.613l4.36,0.29l-0.872,1.743l-4.651,3.194l-3.488-1.162l-4.36-2.613l-3.488,0.291l-0.291,1.742l2.907,1.452l3.778,1.452l0.872,0.581l2.036,2.904l-1.164,1.743l-3.488-0.582l-6.685-2.323l3.779,2.323l2.906,1.743l0.292,0.871l-7.268-0.871l-6.104-1.743l-3.198-1.161l0.872-0.871l-4.07-1.451l-4.07-1.453v0.871l-7.848,0.582L257.5,53.25l1.745-2.033h5.232l5.814-0.291l-1.163-0.871l1.163-1.452l3.488-2.613l-0.872-1.162l-0.873-1.162l-4.36-1.162l-5.522-1.161l1.743-0.581l-2.907-1.742h-2.325l-2.326-1.162l-1.453,0.87l-4.942,0.292l-9.883-0.581l-5.814-0.581l-4.651-0.582l-2.325-0.871l2.908-1.451h-3.78l-0.872-2.615l2.036-2.613l2.906-0.87l6.977-0.872L235.409,29.728zM197.62,27.985l3.198,0.582l4.942-0.582l0.582,0.872l-2.617,1.452l4.361,1.162l-0.582,2.323l-4.361,1.162l-2.907-0.291l-1.744-0.871l-6.976-2.323l0.29-0.871l5.523,0.29l-3.196-1.742L197.62,27.985zM217.096,30.89l-2.907,2.033h-3.197l-1.454-2.613v-1.452l1.454-1.162l2.616-0.581h5.814l5.232,0.871l-4.069,2.324L217.096,30.89zM142.099,34.665l-7.267,1.162l-1.453-1.162l-6.396-1.452l1.455-1.162l1.743-2.033l2.326-1.742l-2.615-1.742l9.301-0.29l4.07,0.581h6.976l2.616,0.871l2.907,1.162l-3.488,0.87l-6.686,1.743l-3.488,2.032V34.665zM216.224,24.792l-1.744,1.162l-3.778-0.291l-3.489-0.871l1.453-1.162l4.07-0.58l2.326,0.871L216.224,24.792zM202.562,19.855l2.035,1.452l0.291,1.452l-1.454,2.033l-4.36,0.291l-2.908-0.582v-1.452h-4.65v-2.033h2.906l4.07-0.871l4.07,0.291V19.855zM175.819,21.307l1.163,1.162l2.324-0.582l2.907,0.291l0.582,1.161l-1.745,1.453l-9.301,0.291l-6.977,1.162h-4.07l-0.291-0.873l5.523-1.16l-12.208,0.29l-4.07-0.29l3.779-2.904l2.616-0.581l7.848,0.871l4.942,1.453l4.651,0.29l-3.779-2.613l2.326-0.871l2.907,0.29L175.819,21.307zM213.026,18.984l3.198,0.872h5.523l2.326,0.871l-0.582,1.161l2.906,0.582l1.744,0.58h3.779l4.069,0.29l4.361-0.58l5.522-0.29l4.651,0.29l2.907,0.871l0.582,1.162l-1.744,0.871l-4.07,0.582l-3.488-0.291l-7.848,0.291h-5.813l-4.36-0.291l-7.268-0.871l-0.872-1.453l-0.582-1.451l-2.617-1.162l-5.814-0.291l-3.196-0.871l1.163-1.162L213.026,18.984zM154.018,17.532l-0.582,2.033l-2.035,0.871l-2.616,0.29l-4.941,1.161l-4.65,0.291l-3.488-0.582l4.651-2.032l5.523-1.742h4.36L154.018,17.532zM215.351,17.823h-1.163l-5.231-0.291l-0.582-0.581h5.522l1.744,0.581L215.351,17.823zM170.586,17.243l-5.232,0.87l-4.071-0.87l2.326-0.873l3.779-0.29l4.07,0.29L170.586,17.243zM172.04,14.919l-3.488,0.291H163.9v-0.291l2.907-0.872l1.453,0.29L172.04,14.919zM210.12,16.37l-4.07,0.581l-2.326-0.87l-1.163-0.871l-0.291-1.162h3.488l1.744,0.29l3.198,0.872L210.12,16.37zM198.201,15.499l1.163,1.162l-4.361-0.291l-4.65-0.871h-6.104l2.616-0.871l-3.198-0.581l-0.291-1.162l5.524,0.291l7.266,1.161L198.201,15.499zM234.246,12.015l3.198,0.871l-3.779,0.582l-4.942,2.322h-4.942l-5.813-0.291l-2.907-1.162v-0.87l2.325-0.872h-4.941l-3.198-0.872l-1.744-1.162l2.034-1.161l1.744-0.871l2.907-0.291l-1.163-0.581l6.395-0.29l3.489,1.452l4.651,0.871l4.36,0.29L234.246,12.015zM285.116,2.432l7.558,0.29l5.813,0.291l4.942,0.58v0.873l-6.685,1.161l-6.687,0.581l-2.616,0.582h6.104L287.15,8.53l-4.651,0.581l-4.651,2.324l-5.813,0.58l-1.744,0.581l-8.139,0.291l3.778,0.291l-2.035,0.58l2.326,1.162l-2.616,1.162l-4.36,0.581l-1.162,1.162l-3.779,0.871l0.291,0.581h4.65v0.581l-7.267,1.741l-7.268-0.871l-7.848,0.291l-4.361-0.291h-4.941l-0.581-1.452l5.231-0.581l-1.454-2.033h1.744l7.268,1.162l-3.779-1.742l-4.36-0.582l2.326-1.162l4.651-0.581l0.872-0.871l-3.779-1.162l-1.163-1.451h7.558l2.034,0.29l4.361-0.87l-6.105-0.291h-9.883L227.85,8.53l-2.325-1.162l-3.197-0.581l-0.582-1.162l4.07-0.291l3.197-0.29l5.232-0.291l4.07-1.162l3.488,0.291l2.906,0.582l2.327-1.453l3.487-0.291l4.942-0.29l8.429-0.291l1.454,0.291l7.849-0.291h6.104L285.116,2.432z", + "CD" : "M558.648,221.382l-0.289,3.196l1.162,0.289l-0.873,0.871l-0.871,0.872l-1.163,1.451l-0.581,1.161l-0.291,2.324l-0.582,0.871l0.000,2.324l-0.871,0.580l0.000,1.742l-0.290,0.290l-0.293,1.453l0.583,1.161l0.290,3.484l0.581,2.324l-0.290,1.452l0.290,1.742l1.744,1.452l1.455,3.485l-1.163,-0.290l-3.490,0.581l-0.873,0.290l-0.873,1.742l0.873,1.161l-0.580,3.195l-0.293,2.904l0.584,0.291l2.035,1.160l0.581,-0.581l0.289,2.904l-2.033,0.000l-1.163,-1.451l-0.872,-1.162l-2.325,-0.291l-0.581,-1.452l-1.745,0.873l-2.036,-0.291l-0.871,-1.452l-1.743,-0.291l-1.454,0.291l0.000,-0.872l-1.164,-0.290l-1.161,0.000l-1.745,0.290l-1.162,0.000l-0.581,0.292l0.000,-3.196l-0.873,-1.162l-0.290,-1.740l0.579,-1.453l-0.579,-1.161l0.000,-1.743l-3.488,0.000l0.289,-0.871l-1.452,0.000l0.000,0.290l-1.745,0.291l-0.581,1.452l-0.582,0.871l-1.452,-0.581l-0.873,0.581l-2.033,0.000l-0.874,-1.452l-0.581,-0.871l-0.871,-1.453l-0.582,-2.032l-8.140,-0.290l-1.162,0.581l-0.581,-0.291l-1.163,0.581l-0.582,-0.871l0.874,-0.291l0.000,-1.161l0.578,-0.872l0.874,-0.580l0.871,0.291l0.873,-0.873l1.452,0.000l0.292,0.582l0.871,0.580l1.744,-1.741l1.456,-1.454l0.870,-0.870l-0.289,-2.033l1.162,-2.903l1.453,-1.162l1.746,-1.452l0.290,-0.871l0.000,-1.162l0.581,-0.871l-0.292,-1.451l0.292,-2.614l0.579,-1.451l0.874,-1.744l0.291,-1.452l0.289,-2.032l0.874,-1.452l1.452,-0.870l2.326,0.870l1.745,1.162l2.033,0.290l2.036,0.580l0.871,-1.742l0.291,-0.290l1.454,0.290l2.907,-1.160l1.163,0.579l0.871,-0.290l0.291,-0.580l1.163,-0.291l2.034,0.291l1.744,0.000l0.873,-0.291l1.743,2.323l1.161,0.291l0.873,-0.291l1.166,0.000l1.450,-0.581l0.874,1.162l-2.325,-2.032z", + "CF" : "M515.918,210.638l2.325,-0.290l0.293,-0.871l0.579,0.291l0.582,0.580l3.488,-1.162l1.163,-1.161l1.454,-0.872l-0.292,-0.870l0.871,-0.291l2.618,0.291l2.617,-1.452l2.034,-2.905l1.452,-1.161l1.744,-0.581l0.292,1.162l1.452,1.742l0.000,1.162l-0.289,1.163l0.000,0.870l0.871,0.870l2.327,1.162l1.452,1.162l0.000,0.871l1.743,1.452l1.163,1.161l0.873,1.743l2.034,0.871l0.292,0.871l-0.873,0.291l-1.744,0.000l-2.034,-0.291l-1.163,0.291l-0.291,0.580l-0.871,0.290l-1.163,-0.579l-2.907,1.160l-1.454,-0.290l-0.291,0.290l-0.871,1.742l-2.036,-0.580l-2.033,-0.290l-1.745,-1.162l-2.326,-0.870l-1.452,0.870l-0.874,1.452l-0.289,2.032l-1.744,-0.290l-2.036,-0.290l-1.452,1.451l-1.455,2.325l-0.289,-0.581l-0.292,-1.453l-1.163,-0.872l-1.161,-1.452l0.000,-0.870l-1.454,-1.452l0.289,-0.870l-0.289,-1.162l0.289,-2.033l0.581,-0.581l-1.455,2.614z", + "CG" : "M509.523,244.033l-0.874,-0.871l-0.870,0.581l-1.163,1.163l-2.325,-2.906l2.035,-1.742l-0.872,-1.743l0.872,-0.580l1.745,-0.291l0.289,-1.451l1.454,1.451l2.616,0.000l0.581,-1.162l0.582,-1.741l-0.291,-2.324l-1.454,-1.452l1.163,-3.194l-0.581,-0.580l-2.036,0.000l-0.871,-1.162l0.291,-1.451l3.488,0.289l2.034,0.581l2.327,0.871l0.289,-1.741l1.455,-2.325l1.452,-1.451l2.036,0.290l1.744,0.290l-0.291,1.452l-0.874,1.744l-0.579,1.451l-0.292,2.614l0.292,1.451l-0.581,0.871l0.000,1.162l-0.290,0.871l-1.746,1.452l-1.453,1.162l-1.162,2.903l0.289,2.033l-0.870,0.870l-1.456,1.454l-1.744,1.741l-0.871,-0.580l-0.292,-0.582l-1.452,0.000l-0.873,0.873l0.871,0.291z", + "CH" : "M500.22,100.292l0.000,0.580l-0.289,0.581l1.162,0.581l1.452,0.000l-0.289,1.162l-1.163,0.290l-2.034,-0.290l-0.583,1.161l-1.453,0.000l-0.291,-0.290l-1.744,0.871l-1.160,0.000l-1.165,-0.581l-0.871,-1.161l-1.454,0.580l0.000,-1.451l2.034,-1.453l0.000,-0.580l1.163,0.291l0.873,-0.582l2.324,0.000l0.582,-0.580l-2.906,-0.871z", + "CI" : "M465.919,217.317l-1.162,0.000l-2.034,-0.580l-1.744,0.000l-3.197,0.580l-2.036,0.581l-2.615,1.162l-0.582,0.000l0.289,-2.323l0.293,-0.291l-0.293,-1.162l-1.162,-1.161l-0.871,-0.290l-0.582,-0.581l0.582,-1.452l-0.291,-1.162l0.000,-0.870l0.581,0.000l0.000,-1.162l-0.290,-0.581l0.290,-0.290l1.162,-0.290l-0.871,-2.323l-0.581,-1.163l0.290,-0.871l0.581,-0.290l0.292,-0.292l0.870,0.582l2.037,0.000l0.582,-0.871l0.581,0.000l0.582,-0.291l0.579,1.162l0.583,-0.290l1.161,-0.292l1.165,0.582l0.579,0.871l1.164,0.581l0.872,-0.581l1.452,-0.291l1.744,0.872l0.874,3.775l-1.164,2.323l-0.872,3.195l1.162,2.323l0.000,-1.161z", + "CL" : "M284.825,375.578v6.389h2.907h1.745l-0.872,1.162l-2.326,0.87l-1.454-0.291l-1.744-0.289l-1.744-0.582l-2.907-0.58l-3.487-1.451l-2.907-1.453l-3.779-3.193l2.326,0.58l3.778,2.033l3.78,0.87l1.453-1.16l0.872-2.033l2.326-1.162L284.825,375.578zM285.987,289.915l1.163,4.065l2.035-0.582l0.291,0.872l-1.163,2.613l-2.907,1.451v4.646l-0.582,0.87l0.872,1.163l-1.744,1.741l-2.035,2.324l-0.872,2.614l0.291,2.612l-1.744,2.904l1.163,4.646l0.873,0.58v2.613l-1.744,2.613l0.29,2.323l-2.326,1.742l0.292,2.613l0.581,2.615l-1.453,0.87l-0.872,2.613l-0.582,2.904l0.582,3.193l-1.164,0.581l0.582,3.194l1.162,1.162l-0.873,1.162l1.454,0.289l0.29,1.162l-1.452,0.58l0.291,1.451l-0.872,3.775l-1.455,2.323l0.292,1.453l-0.873,1.741l-2.035,1.161l0.291,2.904l0.873,0.873h1.744v2.03l1.163,1.453l6.685,0.58l2.617,0.29h-2.617l-1.163,0.581l-2.616,1.162l-0.291,2.612h-1.162l-3.198-0.87l-3.198-2.032l-3.488-1.453l-0.872-1.74l0.872-1.744l-1.454-1.742l-0.291-4.646l1.163-2.614l2.907-2.323l-4.07-0.581l2.617-2.612l0.872-4.357l2.907,0.873l1.453-5.808l-1.744-0.581l-0.872,3.484l-1.744-0.582l0.872-3.773l0.872-5.228l1.454-1.742l-0.872-2.905l-0.291-2.902l1.163-0.29l1.744-4.356l1.744-4.356l1.162-4.064l-0.581-4.065l0.872-2.323l-0.292-3.485l1.744-3.192l0.292-5.518l0.872-5.519l0.871-6.388v-4.356l-0.582-3.774l1.163-0.872l0.872-1.45l1.454,2.032l0.291,2.031l1.454,1.163l-0.872,2.612L285.987,289.915z", + "CM" : "M509.814,224.578l-0.291,0.000l-1.744,0.289l-1.744,-0.289l-1.163,0.000l-4.652,0.000l0.582,-2.034l-1.163,-1.742l-1.163,-0.582l-0.581,-1.160l-0.872,-0.581l0.000,-0.581l0.872,-2.032l1.164,-2.614l0.872,0.000l1.743,-1.743l0.871,0.000l1.746,1.161l1.744,-0.870l0.291,-1.162l0.580,-1.161l0.581,-1.452l1.455,-1.161l0.581,-1.742l0.582,-0.582l0.289,-1.452l0.873,-1.742l2.326,-2.323l0.000,-0.872l0.289,-0.580l-1.163,-0.871l0.292,-0.871l0.582,-0.291l1.162,1.742l0.292,1.743l-0.292,2.032l1.453,2.324l-1.453,0.000l-0.581,0.289l-1.455,-0.289l-0.579,1.161l1.742,1.743l1.165,0.581l0.289,1.161l0.872,1.743l-0.290,0.870l-1.455,2.614l-0.581,0.581l-0.289,2.033l0.289,1.162l-0.289,0.870l1.454,1.452l0.000,0.870l1.161,1.452l1.163,0.872l0.292,1.453l0.289,0.581l-0.289,1.741l-2.327,-0.871l-2.034,-0.581l3.488,0.289z", + "CN" : "M777.533,179.567l-2.325,1.451l-2.326-0.871v-2.323l1.163-1.453l3.196-0.581h1.455l0.581,0.872l-1.163,1.451L777.533,179.567zM825.204,94.194l4.651,0.871l3.488,1.742l0.871,2.614h4.361l2.325-0.872l4.651-0.871l-1.454,2.323l-1.163,1.162l-0.871,2.904l-2.034,2.613l-3.198-0.291l-2.325,0.871l0.581,2.324l-0.29,3.194l-1.454,0.291v1.161l-1.744-1.451l-1.163,1.451l-4.067,1.162l0.289,1.453h-2.325l-1.452-0.872l-1.745,2.032l-3.198,1.453l-2.033,1.742l-3.781,0.871l-2.033,1.162l-3.197,0.871l1.452-1.453l-0.58-1.16l2.325-1.742l-1.455-1.453l-2.324,1.162l-3.197,1.742l-1.745,1.742l-2.615,0.291l-1.452,1.16l1.452,1.743l2.326,0.581v1.162l2.325,0.872l2.906-2.033l2.616,1.162h1.744l0.289,1.452l-3.777,0.871l-1.454,1.452l-2.615,1.453l-1.453,1.742l3.196,1.742l0.872,2.614l1.743,2.613l1.745,2.033v2.033l-1.745,0.581l0.873,1.453l1.455,0.87l-0.292,2.324l-0.873,2.323h-1.452l-2.034,3.194l-2.326,3.484l-2.327,3.195l-3.778,2.613l-4.069,2.323l-2.905,0.291l-1.744,1.162l-0.873-0.871l-1.743,1.452l-3.779,1.451l-2.906,0.291l-0.872,2.904l-1.454,0.29l-0.873-2.033l0.584-1.162l-3.488-0.872l-1.455,0.581l-2.615-0.87l-1.454-0.873l0.581-1.742l-2.615-0.581l-1.452-0.871l-2.328,1.451l-2.615,0.291h-2.034l-1.454,0.58l-1.453,0.582l0.29,2.903h-1.455l-0.289-0.581v-1.161l-2.034,0.87l-1.163-0.581l-2.035-1.162l0.872-2.033l-1.743-0.581l-0.873-2.613l-2.905,0.58l0.29-3.484l2.615-2.323l0.291-2.033l-0.291-2.323l-1.161-0.581l-0.873-1.452h-1.455l-3.194-0.291l1.161-1.161l-1.455-1.743l-2.034,1.162l-2.033-0.581l-3.198,1.742l-2.615,2.033l-2.326,0.29l-1.162-0.872h-1.453l-2.035-0.58l-1.454,0.58l-1.743,2.033l-0.292-2.033l-1.744,0.582L713,154.013l-2.906-0.581l-2.326-1.162l-2.034-0.581l-1.162-1.452l-1.454-0.291l-2.615-1.742l-2.326-0.871l-1.162,0.581l-3.781-2.033l-2.615-1.742l-0.873-2.904l2.036,0.291v-1.453l-1.163-1.161l0.293-2.324l-2.908-3.194l-4.361-1.161l-0.87-2.033l-2.036-1.451l-0.58-0.582l-0.292-1.742v-1.161l-1.743-0.582l-0.874,0.291l-0.579-2.324l0.579-0.871l-0.289-0.581l2.615-1.162l2.036-0.58l2.906,0.291l0.871-1.744l3.489-0.29l1.162-1.162l4.362-1.451l0.289-0.581l-0.289-1.743l2.033-0.581l-2.617-4.646l5.524-1.162l1.452-0.58l2.034-4.938l5.232,0.873l1.744-1.162v-2.904l2.328-0.291l2.033-1.742l1.163-0.29l0.581,2.032l2.326,1.452l4.067,0.872l1.746,2.323l-0.873,3.194l0.873,1.162l3.197,0.582l3.778,0.29l3.488,1.742l1.743,0.291l1.163,2.613l1.455,1.453h3.196l5.522,0.58l3.78-0.291l2.615,0.291l4.069,1.743h3.489l1.162,0.871l3.197-1.451l4.361-0.873l4.359-0.29l3.198-0.871l1.745-1.452l2.033-0.871l-0.581-0.872l-0.873-1.161l1.454-1.742l1.745,0.29l2.614,0.581l2.908-1.452l4.069-1.162l2.034-1.742l2.035-0.872l4.07-0.29l2.034,0.29l0.291-1.162l-2.325-1.741l-2.326-0.872l-2.036,0.872l-2.904-0.291l-1.455,0.291l-0.581-1.162l1.744-2.613l1.453-2.324l3.197,1.162l4.068-1.742v-1.162l2.328-2.903l1.452-0.872v-1.452l-1.452-0.871l2.325-1.162l3.486-0.58h3.491l4.067,0.58l2.617,1.162l1.744,2.903l0.871,1.161l0.874,1.453L825.204,94.194z", + "CO" : "M266.221,231.256l-1.163,-0.582l-1.163,-0.870l-0.871,0.290l-2.326,-0.290l-0.582,-1.161l-0.580,0.000l-2.907,-1.452l-0.291,-0.872l1.162,-0.290l-0.290,-1.451l0.582,-0.873l1.452,-0.289l1.164,-1.744l1.161,-1.452l-1.161,-0.580l0.580,-1.452l-0.580,-2.613l0.580,-0.580l-0.580,-2.325l-1.164,-1.451l0.582,-1.451l0.872,0.289l0.582,-0.871l-0.872,-1.741l0.290,-0.292l1.454,0.000l2.034,-2.031l1.163,-0.291l0.000,-0.872l0.581,-2.322l1.744,-1.162l1.745,0.000l0.000,-0.582l2.325,0.291l2.035,-1.451l1.163,-0.582l1.454,-1.451l0.872,0.290l0.580,0.581l-0.290,0.871l-2.035,0.581l-0.581,1.452l-1.163,0.580l-0.581,1.162l-0.582,2.033l-0.581,1.452l1.453,0.290l0.291,1.161l0.580,0.582l0.292,1.161l-0.292,1.161l0.000,0.581l0.583,0.000l0.872,1.162l3.488,-0.291l1.453,0.291l2.035,2.323l1.163,-0.290l2.034,0.290l1.454,-0.290l0.872,0.290l-0.291,1.452l-0.872,0.871l0.000,2.033l0.581,2.033l0.582,0.580l0.291,0.580l-1.454,1.453l0.872,0.580l0.873,1.162l0.872,2.614l-0.581,0.290l-0.582,-1.452l-0.873,-0.871l-0.871,0.871l-5.233,0.000l0.000,1.742l1.745,0.290l-0.291,0.871l-0.582,-0.290l-1.453,0.581l0.000,2.033l1.162,0.871l0.582,1.743l-0.291,1.161l-1.163,7.551l-1.452,-1.454l-0.582,-0.290l1.744,-2.613l-2.326,-1.452l-1.452,0.290l-1.164,-0.579l-1.453,0.870l-2.035,-0.291l-1.744,-2.903l-1.163,-0.870l-0.872,-1.163l-1.744,-1.452l0.872,-0.291z", + "CR" : "M245.292,208.315l-1.453,-0.580l-0.582,-0.582l0.291,-0.580l0.000,-0.581l-0.872,-0.579l-0.872,-0.582l-1.163,-0.291l0.000,-0.872l-0.872,-0.580l0.291,0.871l-0.582,0.581l-0.581,-0.581l-0.872,-0.291l-0.291,-0.580l0.000,-0.871l0.291,-0.871l-0.872,-0.291l0.581,-0.580l0.581,-0.291l1.745,0.581l0.581,-0.290l0.871,0.290l0.583,0.581l0.872,0.000l0.581,-0.581l0.580,1.452l1.164,1.162l1.162,1.161l-0.872,0.291l0.000,1.161l0.583,0.291l-0.583,0.581l0.291,0.289l-0.291,0.582l0.290,-0.580z", + "CU" : "M247.326,167.081l2.326,0.290l2.326,0.000l2.325,0.871l1.163,1.161l2.616,-0.290l0.873,0.581l2.325,1.743l1.744,1.161l0.871,0.000l1.744,0.581l-0.290,0.871l2.035,0.000l2.325,1.161l-0.581,0.581l-1.744,0.291l-1.745,0.290l-2.035,-0.290l-3.778,0.290l1.743,-1.452l-1.161,-0.871l-1.744,0.000l-0.872,-0.871l-0.582,-1.742l-1.744,0.289l-2.616,-0.870l-0.582,-0.581l-3.779,-0.291l-0.872,-0.581l0.872,-0.580l-2.616,-0.290l-2.034,1.451l-1.163,0.000l-0.292,0.580l-1.452,0.292l-1.163,0.000l1.454,-0.872l0.581,-1.161l1.453,-0.581l1.163,-0.581l2.325,-0.290l-0.581,0.290z", + "CY" : "M567.37,134.557l0.000,0.291l-2.909,1.161l-1.162,-0.581l-0.874,-1.161l1.456,0.000l0.580,0.290l0.582,-0.290l0.582,0.000l0.290,0.290l0.581,0.000l0.581,0.000l-0.293,0.000z", + "CZ" : "M520.57,97.388l-1.455,-0.581l-1.163,0.000l-2.326,-0.581l-0.871,0.000l-1.453,1.162l-2.035,-0.871l-1.744,-1.161l-1.163,-0.582l-0.289,-1.161l-0.584,-0.872l2.036,-0.580l0.871,-0.871l2.036,-0.291l0.581,-0.581l0.871,0.290l1.165,-0.290l1.453,0.872l2.036,0.291l-0.293,0.580l1.454,0.580l0.581,-0.580l1.746,0.290l0.290,0.872l2.034,0.290l1.454,1.161l-0.874,0.000l-0.580,0.582l-0.582,0.000l-0.292,0.581l-0.289,0.289l-0.290,0.291l-0.871,0.290l-1.165,0.000l0.289,-0.581z", + "DE" : "M501.093,79.674l0.000,1.161l2.906,0.582l0.000,0.872l2.617,-0.291l1.744,-0.872l2.907,1.163l1.452,0.870l0.583,1.452l-0.872,0.581l1.163,1.162l0.581,1.452l-0.292,0.870l1.165,1.742l-1.165,0.290l-0.871,-0.290l-0.581,0.581l-2.036,0.291l-0.871,0.871l-2.036,0.580l0.584,0.872l0.289,1.161l1.163,0.582l1.744,1.161l-1.162,1.162l-0.872,0.580l0.290,1.742l-0.290,0.291l-0.584,-0.581l-1.452,0.000l-2.034,0.581l-2.326,-0.291l-0.292,0.871l-1.452,-0.871l-0.873,0.291l-2.906,-0.871l-0.582,0.580l-2.324,0.000l0.290,-2.032l1.455,-1.743l-4.070,-0.580l-1.166,-0.581l0.000,-1.452l-0.579,-0.581l0.290,-1.742l-0.290,-2.904l1.454,0.000l0.871,-1.162l0.581,-2.323l-0.581,-1.161l0.581,-0.581l2.327,0.000l0.582,0.581l1.742,-1.451l-0.581,-0.872l0.000,-1.743l2.035,0.581l-1.744,0.581z", + "DJ" : "M592.368,196.119l0.581,0.871l0.000,1.161l-1.453,0.582l1.161,0.580l-1.161,1.452l-0.583,-0.290l-0.581,0.000l-1.743,0.000l0.000,-0.871l0.000,-0.581l0.871,-1.452l0.872,-1.162l1.164,0.291l-0.872,0.581z", + "DK" : "M508.649,77.933l-1.743,2.323l-2.615-1.452l-0.582-1.162l4.07-0.872L508.649,77.933zM503.708,75.609l-0.581,1.162l-0.871-0.291l-2.036,2.033l0.873,1.161l-1.744,0.582l-2.035-0.582l-1.161-1.451v-2.904l0.289-0.581l0.872-0.871h2.325l1.163-0.871l2.035-0.871v1.453l-0.872,0.87l0.291,0.871L503.708,75.609z", + "DO" : "M276.396,176.664l0.290,-0.291l2.034,0.000l1.744,0.580l0.872,0.000l0.291,0.872l1.454,0.000l0.000,0.871l1.162,0.000l1.454,1.162l-0.872,1.161l-1.453,-0.871l-1.164,0.290l-0.872,-0.290l-0.581,0.581l-1.163,0.290l-0.290,-0.871l-0.873,0.581l-1.161,1.743l-0.872,-0.291l0.000,-0.871l0.000,-0.872l-0.582,-0.580l0.582,-0.582l0.290,-1.161l0.290,1.451z", + "DZ" : "M506.906,166.5l-9.592,5.226l-7.849,5.227l-4.070,1.453l-2.906,0.000l0.000,-1.742l-1.452,-0.291l-1.454,-0.872l-0.873,-1.161l-9.301,-6.098l-9.301,-6.098l-10.176,-6.679l0.000,-0.291l0.000,-0.290l0.000,-3.194l4.361,-2.032l2.906,-0.581l2.036,-0.581l1.162,-1.452l3.197,-1.162l0.000,-2.032l1.744,-0.291l1.162,-0.870l3.782,-0.582l0.289,-0.871l-0.582,-0.580l-0.871,-2.905l-0.291,-1.742l-1.163,-1.742l2.907,-1.452l2.907,-0.581l1.744,-1.161l2.617,-0.872l4.650,-0.289l4.651,-0.291l1.162,0.291l2.615,-1.162l2.911,0.000l1.160,0.871l2.035,-0.290l-0.581,1.451l0.290,2.614l-0.579,2.323l-1.745,1.451l0.290,2.034l2.325,1.742l0.000,0.581l1.745,1.162l1.163,4.936l0.871,2.322l0.000,1.453l-0.291,2.033l0.000,1.451l-0.291,1.452l0.291,1.743l-1.162,1.161l1.744,2.033l0.000,1.162l1.163,1.451l1.163,-0.580l2.035,1.451l-1.452,-1.743z", + "EC" : "M252.85,240.258l1.453,-2.033l-0.581,-1.162l-1.163,1.162l-1.744,-1.162l0.581,-0.581l-0.291,-2.613l0.873,-0.580l0.581,-1.454l0.872,-2.031l0.000,-0.872l1.454,-0.581l1.744,-1.160l2.907,1.452l0.580,0.000l0.582,1.161l2.326,0.290l0.871,-0.290l1.163,0.870l1.163,0.582l0.581,2.324l-0.872,1.741l-3.198,2.904l-3.196,0.871l-1.744,2.613l-0.582,1.742l-1.454,1.162l-1.162,-1.451l-1.163,-0.290l-1.163,0.290l0.000,-1.162l0.873,-0.582l0.291,1.160z", + "EE" : "M540.626,72.125l0.291,-1.743l-0.872,0.290l-1.744,-0.870l-0.291,-1.743l3.489,-0.581l3.488,-0.582l2.906,0.582l2.906,0.000l0.291,0.291l-1.745,1.742l0.582,2.614l-1.163,0.871l-2.034,0.000l-2.614,-1.162l-1.165,-0.290l2.325,-0.581z", + "EG" : "M569.987,149.947l-0.874,0.872l-0.581,2.323l-0.873,1.162l-0.582,0.580l-0.870,-0.871l-1.164,-1.161l-2.034,-4.066l-0.291,0.291l1.163,2.903l1.744,2.904l2.034,4.065l0.873,1.743l0.871,1.452l2.618,2.904l-0.584,0.580l0.000,1.743l3.198,2.613l0.581,0.580l-10.755,0.000l-10.755,0.000l-11.045,0.000l0.000,-10.162l0.000,-9.873l-0.871,-2.324l0.579,-1.451l-0.289,-1.162l0.871,-1.452l3.779,0.000l2.615,0.581l2.615,0.871l1.456,0.580l2.033,-0.870l1.165,-0.872l2.323,-0.290l2.036,0.290l0.872,1.452l0.580,-0.870l2.036,0.580l2.327,0.290l1.161,-0.870l-2.038,-4.935z", + "ER" : "M590.332,196.409l-0.872,-0.871l-1.162,-1.452l-1.163,-1.162l-0.871,-0.870l-2.326,-1.162l-1.744,0.000l-0.873,-0.580l-1.453,0.870l-1.743,-1.452l-0.873,2.033l-3.198,-0.581l-0.290,-0.870l1.161,-4.065l0.291,-2.033l0.874,-0.873l2.035,-0.289l1.454,-1.742l1.452,3.193l0.871,2.614l1.454,1.452l3.779,2.613l1.454,1.453l1.453,1.742l0.871,0.871l1.455,0.871l-0.872,0.581l1.164,0.291z", + "ES" : "M448.769,115.683l0.292,-1.743l-1.163,-1.452l3.778,-1.742l3.489,0.290l3.778,0.000l2.908,0.581l2.324,-0.290l4.362,0.290l1.163,0.871l4.940,1.452l1.163,-0.580l2.907,1.161l3.197,-0.292l0.292,1.454l-2.616,2.032l-3.489,0.580l-0.291,0.872l-1.744,1.451l-1.162,2.324l1.162,1.451l-1.453,1.162l-0.581,1.742l-2.325,0.581l-1.744,2.323l-3.489,0.000l-2.616,0.000l-1.743,0.872l-1.165,1.161l-1.452,-0.291l-0.871,-0.870l-0.874,-1.742l-2.615,-0.291l0.000,-1.162l0.871,-0.871l0.291,-0.871l-0.873,-0.581l0.873,-2.032l-1.162,-1.452l1.162,-0.291l0.000,-1.451l0.582,-0.291l0.000,-2.033l1.163,-0.870l-0.581,-1.452l-1.746,0.000l-0.291,0.290l-1.744,0.000l-0.581,-1.162l-1.163,0.291l1.163,-0.581z", + "ET" : "M578.125,189.73l1.743,1.452l1.453,-0.870l0.873,0.580l1.744,0.000l2.326,1.162l0.871,0.870l1.163,1.162l1.162,1.452l0.872,0.871l-0.872,1.162l-0.871,1.452l0.000,0.581l0.000,0.871l1.743,0.000l0.581,0.000l0.583,0.290l-0.583,1.161l1.163,1.453l0.873,1.452l1.163,0.871l9.010,3.194l2.328,0.000l-7.850,8.421l-3.780,0.000l-2.324,2.033l-1.744,0.000l-0.874,0.870l-1.743,0.000l-1.161,-0.870l-2.618,1.162l-0.581,1.160l-2.036,-0.290l-0.580,-0.290l-0.580,0.000l-0.874,0.000l-3.489,-2.323l-2.033,0.000l-0.873,-0.871l0.000,-1.742l-1.452,-0.290l-1.455,-3.196l-1.454,-0.580l-0.290,-1.161l-1.452,-1.161l-1.746,-0.291l0.872,-1.452l1.455,0.000l0.582,-0.872l0.000,-2.613l0.579,-2.903l1.454,-0.582l0.292,-1.162l1.163,-2.322l1.743,-1.162l0.872,-2.904l0.581,-2.323l3.198,0.581l-0.873,2.033z", + "FI" : "M552.544,41.053l-0.584,2.033l4.363,1.743l-2.617,2.032l3.198,3.194l-1.744,2.324l2.325,2.033l-1.162,1.742l4.069,2.032l-0.871,1.161l-2.617,1.742l-5.814,3.485l-4.941,0.291l-4.941,0.871l-4.362,0.580l-1.744,-1.451l-2.615,-0.871l0.581,-2.614l-1.452,-2.613l1.452,-1.453l2.616,-1.742l6.106,-3.193l2.033,-0.582l-0.289,-1.160l-4.072,-1.162l-0.872,-1.162l0.000,-4.065l-4.361,-2.033l-3.486,-1.452l1.453,-0.581l3.198,1.452l3.488,0.000l2.908,0.581l2.615,-1.162l1.452,-2.032l4.362,-1.162l3.487,1.162l1.162,-2.032z", + "FJ" : "M964.732,278.588l0.873,0.871l-0.292,1.452l-1.744,0.291l-1.452-0.291l-0.292-1.162l0.873-0.87l1.455,0.291L964.732,278.588zM969.382,276.557l-1.741,0.579l-2.036,0.582l-0.292-1.161l1.455-0.291l0.873-0.291l1.741-0.871h-0.01h0.58l-0.29,1.162l-0.29,0.291H969.382z", + "FK" : "M305.173,373.544l3.488,-1.741l2.326,0.870l1.744,-1.161l2.034,1.161l-0.872,0.871l-3.778,0.872l-1.164,-0.872l-2.325,1.162l1.453,1.162z", + "FR" : "M329.008,223.997l-0.873,1.162h-1.453l-0.29-0.581l-0.582-0.292l-0.872,0.873l-1.162-0.581l0.581-1.162l0.291-1.162l0.582-1.161l-1.164-1.742l-0.289-1.743l1.453-2.612l0.872,0.289l2.034,0.872l2.907,2.323l0.582,1.161l-1.744,2.323L329.008,223.997zM500.22,115.102l-1.161,2.033l-1.164-0.582l-0.581-1.742l0.581-1.162l1.744-0.871L500.22,115.102zM483.652,92.451l2.036,1.162h1.162l2.615,1.162l0.581,0.291h0.871l1.165,0.581l4.07,0.58l-1.455,1.744l-0.29,2.032l-0.873,0.581l-1.163-0.291v0.581l-2.033,1.453v1.452l1.453-0.581l0.871,1.162l-0.291,0.871l0.872,1.162l-0.872,0.871l0.582,2.033l1.454,0.291l-0.291,1.162l-2.325,1.452l-5.523-0.581l-4.069,0.872l-0.292,1.741l-3.196,0.292l-2.907-1.162l-1.163,0.58l-4.94-1.452l-1.163-0.872l1.452-1.742l0.582-5.517l-2.907-2.905l-2.034-1.451l-4.36-0.872v-2.033l3.488-0.581l4.651,0.581l-0.872-2.903l2.615,1.162l6.396-2.324l0.87-2.324l2.325-0.29l0.293,0.872h1.452L483.652,92.451z", + "GA" : "M504.291,242l-2.908,-2.904l-1.744,-2.322l-1.744,-2.905l0.291,-0.871l0.582,-0.871l0.581,-2.033l0.582,-2.033l0.871,0.000l4.070,0.000l0.000,-3.483l1.163,0.000l1.744,0.289l1.744,-0.289l0.291,0.000l-0.291,1.451l0.871,1.162l2.036,0.000l0.581,0.580l-1.163,3.194l1.454,1.452l0.291,2.324l-0.582,1.741l-0.581,1.162l-2.616,0.000l-1.454,-1.451l-0.289,1.451l-1.745,0.291l-0.872,0.580l0.872,1.743l2.035,-1.742z", + "GB" : "M458.072,80.835l-1.452,2.033l-2.036-0.58h-1.745l0.582-1.453l-0.582-1.451l2.326-0.291L458.072,80.835zM465.629,69.802l-3.198,2.903l2.907-0.289h2.907l-0.582,2.032l-2.615,2.613h2.907l0.29,0.291l2.325,3.484l2.035,0.291l1.745,3.195l0.581,1.161l3.486,0.291l-0.29,2.033l-1.452,0.58l1.163,1.452l-2.617,1.453h-3.488l-4.94,0.871l-1.164-0.581l-1.744,1.161l-2.616-0.291l-2.034,1.162l-1.453-0.581l4.069-2.904l2.616-0.581l-4.359-0.581l-0.873-0.872l2.906-0.871l-1.454-1.451l0.582-2.033l4.069,0.291l0.291-1.452l-1.744-1.743l-3.488-0.58l-0.582-0.871l0.872-1.162l-0.872-0.581l-1.452,1.162V76.19l-1.454-1.453l0.873-2.904l2.326-2.032h2.033H465.629z", + "GE" : "M588.298,116.844l0.291,-1.161l-0.582,-2.034l-1.743,-0.871l-1.455,-0.580l-1.162,-0.581l0.581,-0.581l2.325,0.581l3.779,0.581l3.780,1.162l0.581,0.580l1.745,-0.580l2.614,0.580l0.581,1.162l1.745,0.871l-0.582,0.290l1.455,1.452l-0.582,0.290l-1.454,-0.290l-2.034,-0.580l-0.581,0.290l-3.780,0.580l-2.615,-1.452l2.907,-0.291z", + "GH" : "M476.676,214.704l-4.361,1.452l-1.452,1.161l-2.617,0.581l-2.327,-0.581l0.000,-1.161l-1.162,-2.323l0.872,-3.195l1.164,-2.323l-0.874,-3.775l-0.290,-2.323l0.000,-1.452l4.942,0.000l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,0.872l0.871,1.161l0.000,2.033l0.292,2.322l0.871,0.872l-0.581,2.613l0.000,1.162l0.872,1.742l-0.582,-1.162z", + "GL" : "M344.996,3.593l9.302,-1.451l9.593,0.000l3.488,-0.871l9.883,-0.291l21.800,0.291l17.442,2.322l-5.232,0.872l-10.465,0.290l-14.824,0.291l1.453,0.289l9.593,-0.289l8.429,0.871l5.232,-0.582l2.326,0.872l-2.907,1.452l6.977,-0.871l13.370,-1.162l8.139,0.581l1.455,1.162l-11.047,2.032l-1.743,0.580l-8.721,0.581l6.395,0.000l-3.196,2.033l-2.326,1.742l0.290,3.195l3.198,1.742l-4.361,0.000l-4.361,0.872l4.943,1.451l0.581,2.323l-2.908,0.291l3.781,2.323l-6.106,0.291l2.906,1.160l-0.871,0.872l-3.780,0.581l-3.777,0.000l3.488,1.742l0.000,1.161l-5.522,-1.161l-1.455,0.871l3.778,0.582l3.488,1.741l1.163,2.324l-4.940,0.580l-2.034,-1.162l-3.489,-1.742l0.871,2.033l-3.197,1.452l7.267,0.000l3.780,0.290l-7.269,2.324l-7.557,2.322l-7.848,0.872l-3.198,0.000l-2.907,0.871l-3.779,2.903l-5.814,2.034l-2.034,0.290l-3.489,0.581l-4.069,0.580l-2.326,1.742l0.000,2.034l-1.453,1.742l-4.360,2.033l0.872,2.323l-1.162,2.323l-1.454,2.613l-3.779,0.000l-4.069,-2.033l-5.524,0.000l-2.615,-1.742l-2.036,-2.614l-4.650,-3.484l-1.454,-1.742l-0.291,-2.324l-3.778,-2.613l0.872,-2.033l-1.744,-0.871l2.617,-3.194l4.359,-1.162l0.872,-1.161l0.582,-2.034l-3.198,0.873l-1.454,0.289l-2.325,0.582l-3.488,-0.871l0.000,-2.034l0.871,-1.452l2.617,0.000l5.523,0.872l-4.651,-1.742l-2.325,-1.162l-2.907,0.581l-2.326,-0.872l3.198,-2.322l-1.744,-1.162l-2.035,-2.033l-3.489,-2.904l-3.488,-0.871l0.000,-1.162l-7.266,-1.742l-5.814,0.000l-7.558,0.000l-6.685,0.290l-3.199,-0.870l-4.649,-1.743l7.266,-0.871l5.523,-0.291l-11.917,-0.580l-6.105,-1.162l0.291,-1.161l10.464,-1.162l10.173,-1.452l0.872,-0.871l-7.266,-1.162l2.326,-1.161l9.592,-1.742l4.070,-0.290l-1.163,-1.162l6.395,-0.872l8.429,-0.289l8.430,0.000l3.199,0.580l7.266,-1.453l6.395,1.162l4.070,0.291l5.523,0.871l-6.395,-1.451l-0.290,1.453z", + "GM" : "M427.549,194.667l0.291,-1.162l2.909,0.000l0.581,-0.581l0.871,0.000l1.163,0.581l0.873,0.000l0.870,-0.581l0.582,0.872l-1.163,0.581l-1.162,0.000l-1.163,-0.581l-1.163,0.581l-0.582,0.000l-0.580,0.581l2.327,0.291z", + "GN" : "M450.514,209.768l-0.871,0.000l-0.582,1.161l-0.581,0.000l-0.582,-0.581l0.290,-1.162l-1.162,-1.741l-0.872,0.290l-0.581,0.000l-0.581,0.290l0.000,-1.161l-0.582,-0.581l0.000,-0.870l-0.581,-1.163l-0.582,-0.871l-2.326,0.000l-0.581,0.580l-0.871,0.000l-0.292,0.581l-0.289,0.582l-1.455,1.451l-1.453,-1.742l-0.873,-1.163l-0.870,-0.289l-0.582,-0.581l-0.291,-1.161l-0.582,-0.582l-0.581,-0.580l1.163,-1.162l0.873,0.000l0.581,-0.580l0.582,0.000l0.580,-0.291l-0.291,-0.871l0.291,-0.291l0.000,-0.871l1.453,0.000l2.036,0.581l0.581,0.000l0.000,-0.290l1.744,0.290l0.289,-0.290l0.293,1.162l0.290,0.000l0.581,-0.582l0.582,0.291l0.871,0.580l1.165,0.291l0.579,-0.580l0.873,-0.582l0.871,-0.290l0.581,0.000l0.582,0.581l0.292,0.871l1.162,1.162l-0.582,0.580l-0.291,1.162l0.582,-0.291l0.581,0.291l-0.290,0.871l0.871,0.581l-0.581,0.290l-0.290,0.871l0.581,1.163l0.871,2.323l-1.162,0.290l-0.290,0.290l0.290,0.581l0.000,1.162l0.581,0.000z", + "GQ" : "M499.931,228.061l-0.582,-0.290l0.871,-3.193l4.652,0.000l0.000,3.483l-4.070,0.000l0.871,0.000z", + "GR" : "M538.882,132.815l1.744,0.871l2.034-0.29l2.033,0.29v0.582l1.455-0.291l-0.292,0.581l-4.067,0.291v-0.291l-3.199-0.581L538.882,132.815zM547.02,116.553l-0.871,1.742l-0.581,0.291h-1.745l-1.454-0.291l-3.196,0.872l1.744,1.451l-1.454,0.291h-1.452l-1.454-1.16l-0.582,0.58l0.582,1.452l1.454,1.453l-0.872,0.58l1.452,1.162l1.455,0.871v1.452l-2.617-0.581l0.873,1.452l-1.745,0.291l0.872,2.323h-1.744l-2.326-1.161l-0.871-2.324l-0.581-1.742l-1.163-1.162l-1.452-1.742v-0.58l1.16-1.453l0.292-0.87l0.873-0.291v-0.871l1.742-0.291l1.164-0.58h1.452l0.582-0.291l0.29-0.29l2.036,0.29l2.325-0.872l2.034,0.872h2.326v-1.452L547.02,116.553z", + "GT" : "M225.816,193.215l-1.453,-0.580l-1.744,0.000l-1.163,-0.581l-1.454,-1.162l0.000,-0.871l0.291,-0.581l-0.291,-0.580l1.164,-2.033l3.487,0.000l0.292,-0.871l-0.582,-0.291l-0.291,-0.581l-1.162,-0.581l-0.872,-0.870l1.163,0.000l0.000,-1.743l2.615,0.000l2.617,0.000l0.000,2.324l-0.292,2.903l0.872,0.000l0.872,0.581l0.292,-0.291l0.872,0.291l-1.455,1.162l-1.161,0.580l-0.292,0.581l0.292,0.581l-0.583,0.580l-0.581,0.291l0.000,0.290l-0.580,0.291l-0.873,0.581l0.000,-0.580z", + "GW" : "M432.201,200.475l-1.452,-1.162l-1.164,0.000l-0.582,-0.871l0.000,-0.291l-0.871,-0.580l-0.292,-0.581l1.453,-0.581l0.874,0.000l0.871,-0.290l4.942,0.290l0.000,0.871l-0.291,0.291l0.291,0.871l-0.580,0.291l-0.582,0.000l-0.581,0.580l-0.873,0.000l1.163,-1.162z", + "GY" : "M309.243,208.025l1.744,0.871l1.744,1.742l0.000,1.452l1.162,0.000l1.453,1.452l1.163,0.873l-0.582,2.613l-1.453,0.579l0.000,0.872l-0.581,1.161l1.453,2.032l0.872,0.000l0.291,1.744l1.744,2.322l-0.872,0.000l-1.454,-0.290l-0.871,0.871l-1.163,0.581l-0.872,0.000l-0.290,0.581l-1.454,-0.290l-1.743,-1.162l-0.291,-1.162l-0.582,-1.451l0.582,-2.324l0.580,-1.162l-0.580,-1.161l-0.872,-0.290l0.290,-1.451l-0.582,-0.582l-1.453,0.291l-2.035,-2.322l0.873,-0.582l0.000,-1.163l1.743,-0.580l0.582,-0.581l-0.872,-0.871l0.290,-1.161l-2.036,1.452z", + "HN" : "M233.374,195.248l-0.291,-0.871l-0.872,-0.291l0.000,-1.162l-0.291,-0.289l-0.582,0.000l-1.161,0.289l0.000,-0.289l-0.872,-0.581l-0.582,-0.581l-0.873,-0.291l0.583,-0.580l-0.292,-0.581l0.292,-0.581l1.161,-0.580l1.455,-1.162l0.289,0.000l0.582,-0.291l0.581,0.000l0.291,0.000l0.582,0.000l1.163,0.291l1.162,-0.291l0.873,-0.290l0.581,-0.290l0.872,0.290l0.581,0.000l0.582,0.000l0.581,-0.290l1.454,0.580l0.289,0.000l0.872,0.582l0.873,0.580l0.871,0.291l0.873,0.870l-1.162,0.000l-0.291,0.291l-0.872,0.291l-0.872,0.000l-0.581,0.290l-0.582,0.000l-0.290,-0.290l-0.291,0.000l-0.291,0.580l-0.291,0.000l0.000,0.581l-1.163,0.871l-0.581,0.291l-0.291,0.289l-0.581,-0.580l-0.581,0.871l-0.582,-0.291l-0.871,0.291l0.290,1.162l-0.581,0.000l-0.291,0.871l0.872,0.000z", + "HR" : "M525.51,104.647l0.871,1.163l0.873,0.870l-1.163,0.872l-1.163,-0.581l-2.033,0.000l-2.325,-0.291l-1.163,0.000l-0.582,0.581l-1.162,-0.581l-0.581,0.872l1.454,1.451l0.579,0.872l1.163,0.871l1.162,0.581l0.874,1.161l2.614,1.161l-0.289,0.580l-2.615,-1.160l-1.746,-0.871l-2.326,-0.871l-2.326,-2.033l0.582,-0.291l-1.453,-1.162l0.000,-0.870l-1.744,-0.291l-0.871,1.161l-0.873,-1.161l0.292,-0.870l1.743,0.000l0.580,-0.291l0.873,0.291l1.163,0.000l0.000,-0.582l0.871,-0.290l0.293,-1.162l2.325,-0.580l0.871,0.290l2.036,1.161l2.325,0.581l-0.871,0.581z", + "HT" : "M272.326,176.083l1.744,0.290l2.326,0.291l0.290,1.451l-0.290,1.161l-0.582,0.582l0.582,0.580l0.000,0.872l-1.745,-0.581l-1.453,0.290l-1.744,-0.290l-1.163,0.581l-1.454,-0.872l0.291,-0.871l2.326,0.291l2.325,0.290l0.872,-0.581l-1.163,-1.161l0.000,-1.161l-1.744,-0.292l-0.582,0.870z", + "HU" : "M518.243,102.034l1.164,-1.742l-0.582,-0.581l1.453,0.000l0.292,-1.162l1.454,0.872l0.871,0.290l2.324,-0.581l0.291,-0.291l1.163,-0.290l1.163,-0.290l0.289,0.000l1.455,-0.290l0.582,-0.581l0.870,-0.291l2.908,0.872l0.582,-0.290l1.452,0.870l0.291,0.581l-1.743,0.581l-1.164,2.034l-1.742,1.741l-2.325,0.581l-1.455,0.000l-2.326,0.580l-0.871,0.581l-2.325,-0.581l-2.036,-1.161l-0.871,-0.290l-0.582,-1.162l0.582,0.000z", + "ID" : "M806.019,259.132h-1.163l-3.488-2.033l2.326-0.289l1.454,0.58l1.162,0.871L806.019,259.132zM816.193,258.842l-2.323,0.581l-0.292-0.291l0.292-0.871l1.16-1.742l2.617-1.16l0.29,0.58l0.29,0.871L816.193,258.842zM798.17,253.326l1.163,0.58l1.745-0.29l0.581,1.161l-3.198,0.582l-1.745,0.58l-1.743-0.291l1.162-1.451h1.455L798.17,253.326zM812.123,253.326l-0.579,1.451l-4.072,0.871l-3.486-0.58v-0.871l2.034-0.581l1.745,0.871l1.743-0.29L812.123,253.326zM772.881,249.55l5.232,0.29l0.582-1.161l4.94,1.452l1.163,1.742l4.07,0.58l3.487,1.452l-3.196,1.162l-3.199-1.162h-2.325h-2.907l-2.615-0.58l-3.199-1.162l-2.033-0.29l-1.163,0.29l-4.942-0.871l-0.58-1.452h-2.325l1.745-2.613h3.488l2.033,1.163l1.162,0.289L772.881,249.55zM844.679,248.098l-1.452,1.742l-0.292-2.032l0.583-0.871l0.58-1.162l0.581,0.871V248.098zM824.043,240.548l-1.163,0.87l-1.745-0.58l-0.581-1.162h2.907L824.043,240.548zM833.053,239.386l0.871,2.032l-2.325-0.87l-2.324-0.29h-1.454h-2.034l0.582-1.452l3.486-0.291L833.053,239.386zM842.935,234.16l0.874,4.355l2.906,1.743l2.325-2.905l3.199-1.741h2.323l2.326,0.87l2.033,1.162l2.909,0.581v8.712l0.29,9.002l-2.615-2.323l-2.91-0.29l-0.578,0.58l-3.489,0.291l1.161-2.323l1.744-0.871l-0.579-2.904l-1.454-2.323l-5.233-2.324l-2.323-0.289l-4.069-2.613L840.901,242l-1.162,0.292l-0.581-1.163v-1.161l-2.034-1.161l2.906-1.162h2.034l-0.289-0.581h-4.072l-1.161-1.742l-2.327-0.58l-1.161-1.161l3.778-0.872l1.455-0.872l4.359,1.162L842.935,234.16zM818.518,226.9l-2.325,2.904l-2.034,0.58l-2.615-0.58h-4.651l-2.325,0.58l-0.292,2.033l2.326,2.323l1.454-1.161l5.23-0.872l-0.29,1.161l-1.162-0.289l-1.163,1.451l-2.326,1.162l2.615,3.483l-0.581,0.872l2.326,3.194v1.742l-1.452,0.872l-0.874-0.872l1.165-2.323l-2.617,1.162l-0.871-0.873l0.579-0.869l-2.033-1.743l0.291-2.613l-2.036,0.871l0.292,3.195v3.773l-1.744,0.581l-1.165-0.871l0.874-2.613l-0.291-2.613h-1.162l-0.871-2.033l1.161-1.741l0.289-2.033l1.455-4.356l0.581-0.871l2.326-2.032l2.033,0.58l3.488,0.582l3.199-0.292l2.615-2.032L818.518,226.9zM828.111,227.771l-0.29,2.323h-1.452l-0.292,1.452l1.162,1.451l-0.87,0.291l-1.165-1.742l-0.871-3.485l0.581-2.032l0.873-1.162l0.29,1.452l1.744,0.291L828.111,227.771zM798.17,226.029l3.197,2.322l-3.197,0.292l-1.162,2.031l0.292,2.614l-2.618,1.742v2.613L793.52,242l-0.581-0.871l-2.908,1.163l-1.161-1.743l-2.034-0.29l-1.163-0.872l-3.488,1.162l-0.871-1.452l-1.744,0.29l-2.328-0.29l-0.581-3.775l-1.163-0.871l-1.452-2.322l-0.292-2.323l0.292-2.613l1.452-1.743l0.584,1.743l2.033,1.741l1.744-0.581h1.744l1.453-1.16l1.454-0.291l2.615,0.581l2.036-0.581l1.452-3.774l1.163-0.872l0.871-3.193h3.198l2.325,0.58l-1.454,2.323l2.036,2.614L798.17,226.029zM765.034,246.937l-2.907,0.29l-2.325-2.321l-3.779-2.324l-1.162-1.743l-2.033-2.323l-1.165-2.033l-2.325-3.774l-2.326-2.323l-0.871-2.323l-0.873-2.032l-2.615-1.743l-1.454-2.322l-2.034-1.743l-2.908-2.903l-0.289-1.451h1.745l4.358,0.58l2.618,2.614l2.033,2.032l1.453,1.161l2.615,2.905h2.908l2.325,2.032l1.454,2.322l2.033,1.161l-0.871,2.323l1.454,0.871h0.872l0.581,2.033l0.873,1.451l2.034,0.291l1.452,1.742l-0.871,3.485V246.937z", + "IE" : "M456.62,82.869l0.579,2.032l-2.034,2.323l-4.942,1.743l-3.779,-0.581l2.036,-2.904l-1.454,-2.613l3.779,-2.323l2.033,-1.162l0.582,1.451l-0.582,1.454l1.745,0.000l-2.037,-0.580z", + "IL" : "M572.021,140.946l-0.293,0.870l-1.163,-0.289l-0.578,1.743l0.871,0.289l-0.871,0.581l0.000,0.581l1.160,-0.291l0.000,0.872l-1.160,4.645l-2.038,-4.935l0.873,-0.872l0.581,-1.451l0.584,-2.033l0.289,-0.582l0.289,0.000l0.872,0.000l0.291,-0.580l0.582,0.000l0.000,1.162l-0.289,0.290l0.000,0.000z", + "IN" : "M688.002,133.396l2.909,3.194l-0.293,2.324l1.163,1.160l0.000,1.453l-2.036,-0.291l0.873,2.904l2.615,1.742l3.781,2.034l-1.745,1.161l-1.163,2.613l2.908,1.162l2.614,1.161l3.490,1.742l3.779,0.291l1.453,1.452l2.325,0.290l3.197,0.581l2.326,0.000l0.291,-1.162l-0.291,-1.742l0.000,-1.161l1.744,-0.582l0.292,2.033l0.000,0.581l2.615,1.162l1.744,-0.581l2.326,0.290l2.326,0.000l0.000,-1.742l-1.163,-0.871l2.326,-0.290l2.615,-2.033l3.198,-1.742l2.033,0.580l2.035,-1.162l1.455,1.743l-1.161,1.162l3.194,0.290l0.000,1.162l-0.871,0.580l0.291,1.452l-2.034,-0.290l-3.489,1.742l0.000,1.742l-1.453,2.323l-0.292,1.162l-1.163,2.322l-2.033,-0.580l-0.290,2.904l-0.583,0.872l0.291,1.161l-1.162,0.581l-1.454,-4.356l-0.872,0.000l-0.581,1.742l-1.454,-1.452l0.872,-1.452l1.163,-0.289l1.454,-2.324l-1.743,-0.291l-2.327,0.000l-2.616,-0.291l-0.291,-2.032l-1.454,0.000l-2.034,-1.451l-1.163,2.032l2.034,1.451l-1.743,0.873l-0.582,1.160l1.744,0.582l-0.579,1.742l1.160,2.032l0.290,2.324l-0.290,1.162l-2.034,-0.291l-3.197,0.580l0.000,2.033l-1.455,1.742l-4.069,1.744l-2.904,3.484l-2.038,1.743l-2.906,1.742l0.000,1.161l-1.163,0.581l-2.615,1.161l-1.162,0.000l-0.874,2.323l0.582,3.484l0.000,2.324l-1.163,2.614l0.000,4.644l-1.454,0.000l-1.160,2.325l0.870,0.871l-2.615,0.581l-0.874,2.032l-1.163,0.581l-2.615,-2.323l-1.163,-4.067l-1.162,-2.613l-0.874,-1.451l-1.452,-2.613l-0.581,-3.485l-0.581,-1.742l-2.618,-3.775l-1.161,-5.227l-0.584,-3.485l0.000,-3.194l-0.581,-2.613l-4.068,1.451l-2.035,-0.290l-3.488,-3.194l1.454,-1.162l-0.873,-0.871l-3.198,-2.323l1.745,-2.033l6.106,0.000l-0.583,-2.324l-1.455,-1.451l-0.579,-2.032l-1.745,-1.162l3.197,-2.904l3.199,0.291l2.904,-2.904l1.745,-2.904l2.618,-2.614l0.000,-2.032l2.325,-1.743l-2.325,-1.161l-0.874,-2.032l-1.160,-2.324l1.453,-1.162l4.069,0.581l3.196,-0.290l-2.617,2.323z", + "IQ" : "M598.763,131.943l1.744,0.872l0.289,1.742l-1.452,0.871l-0.581,2.033l2.033,2.613l3.200,1.453l1.454,2.323l-0.292,1.742l0.872,0.000l0.000,1.742l1.454,1.452l-1.744,-0.290l-1.744,-0.291l-2.037,2.614l-5.230,0.000l-7.561,-5.517l-4.067,-2.032l-3.488,-0.873l-1.163,-3.193l6.103,-2.904l1.163,-3.195l-0.292,-2.032l1.454,-0.872l1.454,-1.742l1.164,-0.291l3.197,0.291l0.873,0.872l1.452,-0.581l-1.745,-3.193z", + "IR" : "M622.309,128.75l2.323,-0.582l2.036,-1.742l1.745,0.291l1.162,-0.581l2.034,0.290l2.907,1.452l2.325,0.290l3.200,2.324l2.034,0.000l0.289,2.323l-1.161,3.485l-0.873,2.032l1.163,0.291l-1.163,1.742l0.873,2.032l0.290,1.743l2.036,0.581l0.289,1.742l-2.615,2.323l1.453,1.452l1.162,1.742l2.617,1.162l0.000,2.613l1.453,0.291l0.290,1.452l-4.070,1.162l-1.161,3.193l-4.943,-0.580l-3.197,-0.871l-2.906,-0.291l-1.454,-3.194l-1.163,-0.581l-2.034,0.581l-2.908,1.162l-3.196,-0.872l-2.907,-2.033l-2.617,-0.870l-1.745,-2.614l-2.034,-3.774l-1.744,0.580l-1.744,-0.871l-0.871,1.161l-1.454,-1.452l0.000,-1.742l-0.872,0.000l0.292,-1.742l-1.454,-2.323l-3.200,-1.453l-2.033,-2.613l0.581,-2.033l1.452,-0.871l-0.289,-1.742l-1.744,-0.872l-1.745,-3.193l-1.452,-2.324l0.579,-0.871l-0.870,-2.904l1.743,-0.871l0.582,0.871l1.163,1.453l2.033,0.289l0.873,0.000l3.489,-2.032l0.872,-0.290l0.871,0.871l-0.871,1.451l1.743,1.453l0.582,-0.291l0.873,2.033l2.615,0.580l1.744,1.453l4.069,0.291l4.360,-0.581l-0.293,0.581z", + "IS" : "M433.944,48.313l-0.870,1.742l3.196,1.742l-3.488,2.033l-8.138,2.033l-2.326,0.581l-3.488,-0.581l-7.849,-0.871l2.906,-1.162l-6.103,-1.451l4.940,-0.291l0.000,-0.871l-5.811,-0.580l1.744,-2.033l4.067,-0.291l4.362,1.742l4.360,-1.451l3.198,0.871l4.649,-1.452l-4.651,-0.290z", + "IT" : "M516.5,125.846l-0.873,2.033l0.292,0.872l-0.582,1.451l-2.034-0.871l-1.454-0.291l-3.777-1.451l0.289-1.452l3.199,0.29l2.904-0.29L516.5,125.846zM499.059,117.715l1.743,1.742l-0.291,3.775l-1.452-0.291l-1.164,0.871l-0.872-0.58l-0.291-3.195l-0.579-1.742l1.452,0.291L499.059,117.715zM507.779,102.325l4.069,0.581l-0.289,1.452l0.581,1.161l-2.326-0.291l-2.035,0.872v1.452l-0.292,0.871l0.873,1.162l2.615,1.452l1.455,2.324l2.906,2.323h2.326l0.58,0.58l-0.872,0.582l2.617,0.871l2.036,0.871l2.324,1.451l0.291,0.581l-0.581,0.873l-1.455-1.453l-2.325-0.289l-1.163,1.742l2.036,1.16l-0.581,1.453h-0.873l-1.745,2.323l-0.87,0.291v-0.871l0.289-1.453l0.872-0.58l-1.161-1.742l-0.873-1.162l-1.161-0.58l-0.873-1.162l-1.744-0.29l-1.163-1.162l-2.034-0.291l-2.036-1.162l-2.615-1.741l-1.744-1.743l-0.872-2.614l-1.454-0.29l-2.325-0.872l-1.163,0.291l-1.743,1.162l-1.163,0.291l0.291-1.162l-1.454-0.291l-0.582-2.033l0.872-0.871l-0.872-1.162l0.291-0.871l1.165,0.581h1.16l1.744-0.871l0.291,0.29h1.453l0.583-1.162l2.034,0.29l1.163-0.29l0.289-1.162l1.745,0.291l0.291-0.58l2.615-0.292L507.779,102.325z", + "JM" : "M260.116,180.148l2.036,0.290l1.452,0.581l0.291,0.871l-1.743,0.000l-0.872,0.291l-1.454,-0.291l-1.744,-1.161l0.290,-0.581l1.164,-0.290l-0.580,-0.290z", + "JO" : "M571.728,141.816l0.293,-0.870l3.195,1.161l5.234,-2.903l1.163,3.193l-0.582,0.582l-5.522,1.451l2.905,2.614l-0.872,0.581l-0.581,0.871l-2.036,0.290l-0.581,1.161l-1.161,0.582l-3.196,-0.291l0.000,-0.291l1.160,-4.645l0.000,-0.872l0.581,-0.871l0.000,1.743z", + "JP" : "M844.39,137.17l0.289,0.871l-1.452,1.742l-1.163-1.161l-1.454,0.871l-0.58,1.452l-2.035-0.581l0.292-1.452l1.452-1.743l1.452,0.291l1.165-1.161L844.39,137.17zM861.832,128.75l-1.165,2.323l0.584,1.162l-1.455,2.033l-3.488,1.452h-4.94l-3.78,3.195l-1.742-1.162l-0.292-2.033l-4.651,0.582l-3.488,1.451h-3.198l2.909,2.032l-1.745,4.646l-1.743,1.162l-1.454-1.162l0.582-2.323l-1.745-0.871l-1.163-1.742l2.617-0.871l1.452-1.742l2.907-1.453l2.035-2.033l5.523-0.581l2.907,0.291l2.904-4.646l1.746,1.162l4.07-2.614l1.452-1.161l1.744-3.484l-0.292-2.904l1.164-1.742l2.906-0.581l1.454,3.774v2.324l-2.615,2.613V128.75zM869.969,109.584l1.744,0.58l2.036-1.162l0.58,2.904l-4.068,0.871l-2.326,2.613l-4.36-1.742l-1.453,2.904h-3.199l-0.29-2.613l1.454-2.033l2.906-0.291l0.873-3.775l0.581-2.032l3.488,2.613L869.969,109.584z", + "KE" : "M586.553,233.289l1.745,2.323l-2.034,1.162l-0.582,1.161l-1.163,0.000l-0.291,2.032l-0.872,1.161l-0.581,1.744l-1.162,0.871l-3.780,-2.615l-0.291,-1.742l-9.883,-5.517l-0.582,-0.289l0.000,-2.906l0.872,-1.161l1.164,-1.742l1.163,-2.033l-1.163,-3.194l-0.291,-1.452l-1.452,-1.742l1.743,-1.743l1.745,-1.741l1.452,0.290l0.000,1.742l0.873,0.871l2.033,0.000l3.489,2.323l0.874,0.000l0.580,0.000l0.580,0.290l2.036,0.290l0.581,-1.160l2.618,-1.162l1.161,0.870l1.743,0.000l-2.325,3.196l0.000,-9.873z", + "KG" : "M669.108,114.811l0.581,-1.162l1.745,-0.580l4.649,0.871l0.292,-1.452l1.745,-0.581l3.779,1.162l1.161,-0.291l4.361,0.000l4.068,0.291l1.455,0.871l1.744,0.581l-0.289,0.581l-4.362,1.451l-1.162,1.162l-3.490,0.290l-0.871,1.744l-2.906,-0.291l-2.036,0.580l-2.615,1.162l0.289,0.580l-0.579,0.871l-5.233,0.291l-3.488,-0.871l-2.908,0.290l0.291,-1.743l2.906,0.582l0.873,-0.871l2.326,0.289l3.488,-2.032l-3.199,-1.451l-2.034,0.580l-2.035,-0.871l2.326,-1.742l0.872,0.291z", + "KH" : "M758.638,201.637l-1.162,-1.453l-1.454,-2.613l-0.580,-3.485l1.741,-2.323l3.781,-0.581l2.326,0.581l2.326,0.872l1.160,-1.743l2.617,0.871l0.581,2.033l-0.289,3.194l-4.651,2.033l1.162,1.742l-2.906,0.290l-2.326,1.162l2.326,0.580z", + "KO" : "M531.032,115.392l-0.289,0.581l-0.292,0.000l-0.289,-1.162l-0.582,-0.290l-0.581,-0.581l0.581,-0.871l0.582,0.000l0.289,-0.871l0.581,-0.291l0.293,0.291l0.581,0.290l0.290,0.581l0.583,0.000l0.579,0.580l0.292,0.000l-0.292,0.580l-0.290,0.292l0.000,0.290l-0.581,0.000l1.455,-0.581z", + "KP" : "M833.343,114.229l0.292,0.582l-0.872,0.000l-1.164,0.872l-0.872,0.870l0.000,2.033l-1.452,0.581l-0.291,0.582l-1.163,0.580l-1.744,0.580l-1.163,0.582l-0.292,1.451l-0.289,0.291l1.163,0.290l1.452,1.161l-0.290,0.871l-1.162,0.000l-2.035,0.291l-0.874,1.161l-1.452,0.000l-1.454,-0.290l-0.289,0.290l-0.874,0.290l0.000,-0.580l-0.581,0.000l-0.871,-0.581l0.871,-1.161l0.581,-0.291l-0.291,-0.580l0.583,-1.453l0.000,-0.580l-1.744,-0.291l-1.162,-0.580l2.033,-1.742l3.198,-1.453l1.745,-2.032l1.453,0.871l2.325,0.000l-0.289,-1.452l4.067,-1.163l1.163,-1.451l-1.744,-1.451z", + "KR" : "M826.948,124.684l2.617,3.194l0.582,2.034l0.000,2.903l-1.163,1.742l-2.326,0.582l-2.325,0.870l-2.326,0.291l-0.292,-1.452l0.292,-2.033l-1.163,-2.903l2.036,-0.291l-1.745,-2.614l1.452,0.000l0.874,-1.161l2.035,-0.291l1.162,0.000l-0.290,0.871z", + "KW" : "M605.74,148.496l0.581,1.162l-0.291,0.580l0.871,2.323l-1.743,0.000l-0.873,-1.452l-2.326,-0.290l2.037,-2.614l-1.744,-0.291z", + "KZ" : "M669.108,114.811l-1.454,0.291l-3.779,2.033l-1.163,2.032l-1.163,0.000l-0.580,-1.452l-3.489,0.000l-0.581,-2.323l-1.453,0.000l0.290,-2.614l-3.196,-2.032l-4.944,0.290l-3.196,0.291l-2.618,-2.614l-2.324,-0.872l-4.071,-2.031l-0.580,-0.291l-6.976,1.742l0.000,10.164l-1.455,0.000l-1.744,-2.033l-2.034,-0.871l-3.199,0.581l-1.160,0.871l0.000,-0.581l0.582,-1.163l-0.582,-0.869l-3.197,-1.162l-1.165,-2.323l-1.453,-0.581l-0.291,-1.161l2.909,0.289l0.000,-2.032l2.324,-0.290l2.326,0.290l0.581,-2.614l-0.581,-1.742l-2.616,0.291l-2.326,-0.872l-3.196,1.452l-2.618,0.581l-1.452,-0.581l0.289,-1.452l-1.743,-1.742l-2.034,0.000l-2.327,-1.742l1.453,-2.323l-0.580,-0.290l2.036,-3.195l2.906,1.742l0.289,-2.032l5.814,-3.195l4.362,0.000l5.812,2.032l3.489,1.163l2.906,-1.163l4.360,-0.290l3.488,1.453l0.871,-0.872l3.781,0.291l0.581,-1.453l-4.362,-1.742l2.618,-1.451l-0.581,-0.582l2.617,-0.870l-2.036,-1.743l1.454,-1.160l10.172,-0.872l1.454,-0.582l6.976,-1.161l2.326,-1.161l4.942,0.580l0.872,2.905l2.906,-0.581l3.488,0.872l-0.290,1.451l2.618,0.000l6.974,-2.614l-0.871,0.872l3.488,2.033l6.104,6.968l1.453,-1.451l3.780,1.742l4.070,-0.872l1.455,0.581l1.160,1.452l2.034,0.581l1.163,1.162l3.488,-0.291l1.455,1.743l-2.034,1.742l-2.328,0.291l0.000,2.904l-1.744,1.162l-5.232,-0.873l-2.034,4.938l-1.453,0.580l-5.524,1.162l2.617,4.646l-2.033,0.580l0.289,1.743l-1.744,-0.581l-1.455,-0.871l-4.068,-0.291l-4.361,0.000l-1.161,0.291l-3.779,-1.162l-1.745,0.581l-0.292,1.452l-4.649,-0.871l-1.745,0.580l0.581,-1.162z", + "LA" : "M763.29,191.763l0.872,-1.451l0.291,-2.323l-2.327,-2.324l0.000,-2.613l-2.325,-2.323l-2.036,0.000l-0.582,0.871l-1.452,0.000l-0.871,-0.581l-2.907,1.742l0.000,-2.323l0.579,-2.904l-1.743,-0.289l-0.290,-1.744l-1.163,-0.580l0.581,-1.162l2.326,-1.742l0.289,0.581l1.455,0.000l-0.290,-2.904l1.453,-0.581l1.454,2.324l1.161,2.322l3.488,0.000l1.165,2.614l-1.747,0.580l-0.870,0.872l3.197,1.742l2.325,3.194l1.745,2.614l2.036,1.742l0.870,2.032l-0.581,2.614l-2.617,-0.871l-1.160,1.743l2.326,0.872z", + "LB" : "M572.31,139.494l-0.582,0.000l-0.291,0.580l-0.872,0.000l0.872,-2.323l1.454,-2.032l1.163,0.000l0.581,1.162l-1.452,1.161l0.873,-1.452z", + "LK" : "M699.047,210.348l-0.579,2.904l-1.165,0.581l-2.323,0.582l-1.455,-2.034l-0.292,-4.066l1.166,-4.356l2.033,1.454l1.162,2.032l-1.453,-2.903z", + "LR" : "M452.549,219.06l-0.873,0.000l-2.615,-1.453l-2.617,-2.032l-2.324,-1.452l-1.744,-1.742l0.580,-0.872l0.000,-0.871l1.454,-1.452l1.163,-1.451l0.581,0.000l0.872,-0.290l1.162,1.741l-0.290,1.162l0.582,0.581l0.581,0.000l0.582,-1.161l0.871,0.000l0.000,0.870l0.291,1.162l-0.582,1.452l0.582,0.581l0.871,0.290l1.162,1.161l0.293,1.162l-0.293,0.291l0.289,-2.323z", + "LS" : "M553.416,310.531l1.163,0.872l-0.873,1.451l-0.581,0.871l-1.454,0.292l-0.581,0.869l-0.871,0.291l-2.036,-2.032l1.454,-1.742l1.453,-1.163l1.163,-0.579l-1.163,-0.870z", + "LT" : "M536.265,81.417l-0.291,-0.582l0.582,-0.870l-1.454,-0.291l-2.906,-0.581l-0.580,-2.322l3.197,-0.871l4.649,0.290l2.618,-0.290l0.581,0.580l1.455,0.291l2.614,1.162l0.290,1.160l-2.326,1.162l-0.578,1.452l-2.908,0.872l-2.907,0.000l-0.582,-0.872l1.454,0.290z", + "LU" : "M490.338,93.032l0.579,0.581l0.000,1.452l-0.871,0.000l-0.581,-0.291l0.290,-1.451l-0.583,0.291z", + "LV" : "M531.616,76.771l0.290,-2.033l1.162,-1.742l2.616,-0.871l2.326,2.033l2.035,0.000l0.581,-2.033l2.325,-0.581l1.165,0.290l2.614,1.162l2.034,0.000l1.455,0.581l0.291,1.161l0.871,1.742l-2.906,1.162l-1.745,0.291l-2.614,-1.162l-1.455,-0.291l-0.581,-0.580l-2.618,0.290l-4.649,-0.290l3.197,-0.871z", + "LY" : "M514.755,167.951l-2.036,1.162l-1.452,-1.452l-4.361,-1.161l-1.452,-1.743l-2.035,-1.451l-1.163,0.580l-1.163,-1.451l0.000,-1.162l-1.744,-2.033l1.162,-1.161l-0.291,-1.743l0.291,-1.452l0.000,-1.451l0.291,-2.033l0.000,-1.453l-0.871,-2.322l1.162,-0.581l0.290,-1.162l-0.290,-1.161l2.034,-1.162l0.872,-0.870l1.164,-0.873l0.291,-2.032l3.195,0.872l1.165,0.000l2.326,0.290l3.486,1.161l1.456,2.614l2.325,0.581l4.067,1.161l2.907,1.162l1.165,-0.581l1.453,-1.452l-0.582,-2.033l0.874,-1.162l1.741,-1.451l2.036,-0.290l3.778,0.580l0.873,1.161l1.163,0.000l0.871,0.582l2.616,0.291l0.582,0.870l-0.871,1.452l0.289,1.162l-0.579,1.451l0.871,2.324l0.000,9.873l0.000,10.162l0.000,5.228l-3.199,0.291l0.000,0.870l-11.045,-5.227l-11.046,-5.226l2.616,-1.451z", + "MA" : "M459.526,132.525l1.743,1.161l2.616,0.000l2.615,0.581l1.164,0.000l1.163,1.742l0.291,1.742l0.871,2.905l0.582,0.580l-0.289,0.871l-3.782,0.582l-1.162,0.870l-1.744,0.291l0.000,2.032l-3.197,1.162l-1.162,1.452l-2.036,0.581l-2.906,0.581l-4.361,2.032l0.000,3.194l-0.581,0.000l0.292,1.452l-1.745,0.000l-0.872,0.871l-1.161,0.000l-1.165,-0.581l-2.324,0.291l-0.873,2.323l-0.872,0.000l-1.162,3.485l-4.069,3.194l-0.874,3.775l-1.162,1.162l-0.290,0.870l-6.107,0.291l0.000,-1.161l1.165,-0.872l0.871,-1.451l-0.291,-0.872l1.164,-2.033l1.454,-1.742l0.871,-0.291l0.873,-1.742l0.000,-1.451l0.870,-1.742l2.036,-0.872l1.745,-2.904l1.452,-1.162l2.326,-0.289l2.326,-1.743l1.452,-0.871l2.036,-2.323l-0.582,-3.194l1.163,-2.323l0.290,-1.452l1.744,-2.033l2.906,-1.162l2.037,-1.162l1.745,-2.903l0.871,-1.742l-2.035,0.000z", + "MD" : "M547.02,98.259l0.584,-0.290l2.033,-0.290l2.034,0.870l1.162,0.000l1.166,0.872l-0.293,0.871l1.164,0.580l0.290,1.162l0.873,0.580l0.000,0.291l0.290,0.291l-0.581,0.290l-1.743,0.000l-0.293,-0.581l-0.581,0.291l0.291,0.580l-0.872,0.871l-0.291,0.872l-0.872,0.291l-0.291,-1.163l0.291,-1.161l-0.291,-1.161l-1.453,-1.742l-0.873,-1.162l-0.871,-0.872l0.873,0.290z", + "ME" : "M528.417,113.94l-0.292,-0.291l-1.163,1.162l0.000,0.872l-0.581,0.000l-0.579,-0.872l-1.163,-0.582l0.289,-0.580l0.291,-1.451l0.872,-0.581l0.582,-0.290l0.873,0.290l0.290,0.581l0.872,0.290l1.162,0.581l-0.290,0.000l-0.581,0.871l0.582,0.000z", + "MG" : "M610.099,265.23l0.873,1.163l0.582,1.742l0.579,3.485l0.584,1.160l-0.293,1.454l-0.581,0.579l-0.871,-1.451l-0.583,0.872l0.583,2.032l-0.291,1.160l-0.582,0.581l-0.292,2.325l-1.162,3.194l-1.161,3.775l-1.744,5.226l-1.162,3.775l-1.165,3.195l-2.325,0.581l-2.325,1.162l-1.455,-0.582l-2.324,-0.871l-0.872,-1.453l0.000,-2.613l-1.163,-2.032l0.000,-2.033l0.292,-2.032l1.452,-0.582l0.000,-0.871l1.163,-2.032l0.289,-1.742l-0.579,-1.453l-0.582,-1.451l-0.291,-2.614l1.163,-1.743l0.289,-1.742l1.455,0.000l1.452,-0.581l0.872,-0.579l1.454,0.000l1.455,-1.454l2.325,-1.740l0.872,-1.454l-0.580,-1.160l1.161,0.289l1.744,-1.743l0.000,-1.742l0.873,-1.160l-0.871,-1.160z", + "MK" : "M530.451,115.973l0.292,0.000l0.289,-0.581l1.455,-0.581l0.581,0.000l1.161,-0.290l1.165,0.000l1.452,0.871l0.000,1.743l-0.290,0.290l-0.582,0.290l-1.452,0.000l-1.164,0.580l-1.742,0.291l-1.165,-0.581l-0.289,-1.161l-0.289,0.871z", + "ML" : "M440.34,190.602l0.871,-0.290l0.583,-1.743l0.872,0.000l1.744,0.871l1.455,-0.580l1.161,0.000l0.581,-0.581l11.046,0.000l0.582,-2.032l-0.582,-0.291l-1.454,-11.906l-1.161,-11.615l4.070,-0.291l9.301,6.098l9.301,6.098l0.873,1.161l1.454,0.872l1.452,0.291l0.000,1.742l2.906,0.000l0.000,6.097l-1.452,2.034l-0.291,1.452l-2.326,0.580l-3.778,0.291l-0.872,0.870l-1.744,0.291l-2.035,0.000l-0.582,-0.581l-1.452,0.290l-2.617,1.162l-0.582,0.871l-2.035,1.161l-0.291,0.872l-1.163,0.581l-1.452,-0.581l-0.872,0.871l-0.291,1.742l-2.034,2.324l0.000,0.871l-0.873,1.161l0.290,1.741l-1.161,0.292l-0.583,0.290l-0.579,-1.162l-0.582,0.291l-0.581,0.000l-0.582,0.871l-2.037,0.000l-0.870,-0.582l-0.292,0.292l-0.871,-0.581l0.290,-0.871l-0.581,-0.291l-0.582,0.291l0.291,-1.162l0.582,-0.580l-1.162,-1.162l-0.292,-0.871l-0.582,-0.581l-0.581,0.000l-0.871,0.290l-0.873,0.582l-0.579,0.580l-1.165,-0.291l-0.871,-0.580l-0.582,-0.291l-0.581,0.582l-0.290,0.000l-0.293,-1.162l0.000,-0.871l0.000,-1.162l-1.162,-0.581l-0.581,-1.742l0.000,1.742z", + "MM" : "M747.882,175.501l-1.743,1.163l-2.034,0.000l-1.163,3.194l-1.165,0.290l1.455,2.613l1.744,1.742l1.163,2.034l-1.163,2.323l-0.871,0.580l0.582,1.162l1.741,2.322l0.582,1.453l-0.290,1.452l1.162,2.322l-1.454,2.614l-1.452,2.903l-0.289,-2.031l0.870,-2.033l-0.870,-1.742l0.289,-2.904l-1.163,-1.453l-0.871,-3.484l-0.581,-3.484l-1.164,-2.034l-1.743,1.162l-3.200,2.033l-1.454,-0.291l-1.741,-0.580l0.870,-3.486l-0.579,-2.612l-2.036,-2.904l0.290,-1.161l-1.744,-0.291l-1.743,-2.323l-0.291,-2.033l0.871,0.291l0.292,-2.033l1.162,-0.581l-0.291,-1.161l0.583,-0.872l0.290,-2.904l2.033,0.580l1.163,-2.322l0.292,-1.162l1.453,-2.323l0.000,-1.742l3.489,-1.742l2.034,0.290l-0.291,-1.452l0.871,-0.580l0.000,-1.162l1.455,0.000l0.873,1.452l1.161,0.580l0.291,2.324l-0.291,2.032l-2.615,2.323l-0.290,3.484l2.905,-0.580l0.873,2.614l1.743,0.580l-0.872,2.033l2.035,1.162l1.163,0.580l2.035,-0.870l0.000,1.161l-2.326,1.742l-0.581,1.162l1.454,-0.580z", + "MN" : "M715.327,95.356l2.907,-0.582l5.232,-2.323l4.069,-1.161l2.616,0.871l2.908,0.000l1.741,1.162l2.617,0.290l4.071,0.581l2.617,-2.033l-1.163,-1.453l2.907,-2.902l3.196,1.161l2.327,0.290l3.488,0.580l0.290,2.324l4.069,1.162l2.617,-0.582l3.487,-0.290l2.618,0.290l2.615,1.162l1.743,1.453l2.616,0.000l3.490,0.581l2.616,-0.872l3.488,-0.291l4.070,-2.033l1.745,0.291l1.452,0.871l3.197,-0.290l-1.453,2.324l-1.744,2.612l0.581,1.162l1.455,-0.290l2.904,0.290l2.036,-0.872l2.327,0.872l2.325,1.742l-0.291,1.161l-2.034,-0.289l-4.071,0.289l-2.035,0.872l-2.034,1.742l-4.069,1.162l-2.909,1.451l-2.614,-0.580l-1.745,-0.290l-1.454,1.742l0.873,1.162l0.581,0.871l-2.033,0.871l-1.745,1.452l-3.199,0.871l-4.359,0.289l-4.361,0.873l-3.197,1.451l-1.163,-0.870l-3.489,0.000l-4.069,-1.743l-2.615,-0.291l-3.781,0.291l-5.522,-0.580l-3.196,0.000l-1.456,-1.453l-1.163,-2.613l-1.743,-0.291l-3.488,-1.742l-3.778,-0.290l-3.198,-0.581l-0.873,-1.162l0.873,-3.194l-1.746,-2.323l-4.067,-0.872l-2.326,-1.451l0.581,2.032z", + "MR" : "M440.34,190.602l-2.034,-1.742l-1.454,-2.033l-2.034,-0.580l-1.163,-0.872l-1.454,0.000l-1.452,0.581l-1.456,-0.291l-0.871,0.872l-0.290,-1.453l0.871,-1.451l0.290,-2.614l-0.290,-2.613l-0.291,-1.453l0.291,-1.161l-0.871,-1.452l-1.454,-1.161l0.582,-0.871l11.046,0.000l-0.581,-4.066l0.581,-1.451l2.615,0.000l0.000,-7.261l9.011,0.290l0.000,-4.355l10.176,6.679l-4.070,0.291l1.161,11.615l1.454,11.906l0.582,0.291l-0.582,2.032l-11.046,0.000l-0.581,0.581l-1.161,0.000l-1.455,0.580l-1.744,-0.871l-0.872,0.000l-0.583,1.743l0.871,-0.290z", + "MW" : "M568.822,262.618l-0.582,2.032l0.582,3.776l1.165,-0.291l0.871,0.871l1.163,2.034l0.289,3.483l-1.163,0.581l-0.871,2.032l-1.744,-1.742l-0.292,-2.032l0.582,-1.161l-0.290,-1.161l-0.873,-0.582l-0.871,0.291l-1.455,-1.454l-1.452,-0.580l0.580,-2.612l0.872,-0.873l-0.290,-2.323l0.290,-2.322l0.582,-0.582l-0.582,-2.322l-1.452,-1.452l2.907,0.581l0.289,0.871l1.163,1.161l-0.582,-3.776z", + "MX" : "M206.341,159.82l-1.163,2.324l-0.291,2.033l-0.290,3.774l-0.291,1.162l0.581,1.743l0.872,1.161l0.582,2.033l1.744,2.323l0.581,1.452l1.163,1.451l2.906,0.582l1.163,1.161l2.326,-0.871l2.034,-0.290l2.035,-0.291l1.745,-0.581l1.743,-1.161l0.872,-1.452l0.000,-2.323l0.582,-0.871l2.034,-0.581l2.908,-0.872l2.324,0.291l1.745,-0.291l0.582,0.582l0.000,1.161l-1.454,1.742l-0.873,1.742l0.582,0.581l-0.291,1.162l-0.872,2.033l-0.582,-0.581l-0.581,0.000l-0.580,0.000l-0.872,1.742l-0.582,-0.580l-0.290,0.290l0.000,0.290l-2.617,0.000l-2.615,0.000l0.000,1.743l-1.163,0.000l0.872,0.870l1.162,0.581l0.291,0.581l0.582,0.291l-0.292,0.871l-3.487,0.000l-1.164,2.033l0.291,0.580l-0.291,0.581l0.000,0.871l-3.197,-2.903l-1.454,-0.872l-2.325,-0.870l-1.453,0.290l-2.325,1.161l-1.163,0.291l-2.035,-0.872l-2.035,-0.580l-2.617,-1.162l-2.034,-0.291l-3.198,-1.451l-2.325,-1.161l-0.582,-0.872l-1.453,0.000l-2.906,-0.871l-1.163,-1.453l-2.907,-1.451l-1.454,-1.742l-0.581,-1.453l0.872,-0.290l-0.291,-0.581l0.582,-0.871l0.000,-0.871l-0.873,-1.161l-0.290,-1.162l-0.872,-1.452l-2.325,-2.614l-2.908,-2.322l-1.453,-1.453l-2.325,-1.161l-0.290,-0.872l0.290,-1.451l-1.454,-0.871l-1.453,-1.162l-0.872,-2.032l-1.454,-0.291l-1.453,-1.452l-1.454,-1.161l0.000,-0.871l-1.453,-2.033l-1.162,-2.324l0.290,-0.870l-2.035,-1.162l-0.872,0.000l-1.744,-0.581l-0.290,1.162l0.290,1.161l0.290,2.034l0.872,1.161l2.036,2.032l0.581,0.581l0.291,0.290l0.581,0.872l0.291,0.000l0.581,1.742l0.872,0.580l0.581,1.162l1.745,1.162l0.872,2.613l0.872,1.162l0.872,1.452l0.000,1.452l1.453,0.000l0.872,1.160l1.164,1.454l0.000,0.290l-1.164,1.161l-0.581,0.000l-0.581,-1.742l-2.035,-1.452l-1.744,-1.453l-1.454,-0.580l0.000,-2.033l-0.291,-1.452l-1.453,-0.870l-1.744,-1.453l-0.581,0.581l-0.582,-0.871l-1.743,-0.581l-1.745,-1.742l0.291,0.000l1.163,0.000l1.162,-0.872l0.000,-1.451l-2.034,-1.742l-1.744,-0.871l-0.873,-1.742l-1.162,-1.744l-1.163,-2.322l-1.163,-2.323l3.198,-0.291l3.487,-0.290l-0.290,0.581l4.070,1.452l6.395,1.742l5.232,0.000l2.326,0.000l0.000,-1.162l4.650,0.000l1.163,1.162l1.453,0.871l1.454,1.162l0.872,1.451l0.872,1.453l1.454,0.871l2.325,0.871l1.744,-2.323l2.035,0.000l2.034,1.161l1.454,1.742l0.872,1.742l1.744,1.452l0.582,2.033l0.581,1.162l2.326,0.871l1.744,0.580l-1.163,0.000z", + "MY" : "M751.953,213.833l0.29,1.451l1.744-0.289l0.873-1.162l0.582,0.29l1.741,1.743l1.165,1.741l0.29,1.743l-0.29,1.452v0.87l0.29,1.453l0.871,0.871l1.162,2.322v1.162h-2.033l-2.616-2.033l-3.195-2.032l-0.295-1.452l-1.452-1.743l-0.581-2.322l-0.871-1.452l0.289-2.031l-0.58-1.162l0.291-0.582L751.953,213.833zM800.205,218.769l-2.034,0.871l-2.325-0.58h-3.198l-0.871,3.193l-1.163,0.872l-1.452,3.774l-2.036,0.581l-2.615-0.581l-1.454,0.291l-1.453,1.16h-1.744l-1.744,0.581l-2.033-1.741l-0.584-1.743l2.036,0.871l2.325-0.581l0.581-2.322l1.163-0.29l3.197-0.581l2.036-2.324l1.162-1.741l1.453,1.451l0.58-0.87h1.163l0.291-1.743v-1.451l2.327-1.743l1.161-2.322h1.162l1.455,1.452v1.162l2.034,0.869l2.325,0.872l-0.29,0.872l-1.744,0.289L800.205,218.769z", + "MZ" : "M568.822,262.618l2.036,-0.292l3.486,0.872l0.581,-0.291l2.036,-0.289l0.872,-0.581l1.746,0.000l2.907,-1.162l2.323,-1.452l0.292,1.162l0.000,2.613l0.289,2.614l0.000,4.064l0.584,1.453l-0.873,2.033l-0.873,1.742l-1.742,1.742l-2.618,1.161l-3.199,1.163l-2.905,3.194l-1.163,0.290l-2.036,2.033l-1.162,0.580l0.000,2.034l1.162,2.032l0.582,1.741l0.000,0.874l0.581,-0.292l-0.291,2.614l-0.290,1.451l0.581,0.290l-0.291,1.162l-1.161,1.161l-2.327,0.873l-3.198,1.451l-1.452,1.162l0.289,1.161l0.873,0.000l-0.291,1.452l-2.034,0.000l-0.291,-1.162l-0.580,-1.161l0.000,-1.162l0.290,-2.904l-0.582,-2.033l-1.452,-3.774l2.904,-3.195l0.874,-2.033l0.289,-0.290l0.293,-1.452l-0.293,-0.870l0.000,-2.033l0.582,-2.032l0.000,-3.486l-1.452,-0.871l-1.163,-0.289l-0.582,-0.582l-1.452,-0.581l-2.325,0.000l0.000,-0.870l-0.292,-2.033l8.429,-2.325l1.455,1.454l0.871,-0.291l0.873,0.582l0.290,1.161l-0.582,1.161l0.292,2.032l1.744,1.742l0.871,-2.032l1.163,-0.581l-0.289,-3.483l-1.163,-2.034l-0.871,-0.871l-1.165,0.291l-0.582,-3.776l-0.582,2.032z", + "NA" : "M518.825,309.661l-2.036,-2.325l-1.163,-2.033l-0.579,-2.613l-0.584,-2.032l-1.161,-4.065l0.000,-3.485l-0.291,-1.452l-1.163,-1.162l-1.454,-2.034l-1.452,-3.483l-0.582,-1.743l-2.034,-2.613l-0.291,-2.033l1.452,-0.581l1.455,-0.581l1.743,0.292l1.745,1.161l0.581,-0.291l11.047,0.000l2.033,1.162l6.396,0.582l5.232,-1.162l2.326,-0.582l1.745,0.000l0.871,0.582l0.290,0.289l-1.743,0.582l-0.874,0.000l-1.744,1.162l-0.871,-1.162l-4.361,0.871l-2.033,0.291l0.000,9.582l-2.908,0.289l0.000,7.843l0.000,10.163l-2.326,1.451l-1.452,0.290l-1.744,-0.581l-1.162,-0.290l-0.582,-1.162l-1.163,-0.580l1.163,-1.453z", + "NC" : "M930.142,289.042l2.325,1.452l1.452,1.454l-1.162,0.579l-1.453,-0.871l-2.036,-1.162l-1.744,-1.452l-1.742,-1.741l-0.582,-1.162l1.161,0.000l1.745,1.162l1.162,0.870l-0.874,-0.871z", + "NCY" : "M563.881,134.267l0.289,0.000l0.291,-0.581l2.035,0.000l2.326,-0.871l-1.745,1.162l0.293,0.580l-0.293,0.000l-0.581,0.000l-0.581,0.000l-0.290,-0.290l-0.582,0.000l-0.582,0.290l0.580,0.290z", + "NE" : "M479.583,198.151l0.291,-2.032l-3.198,-0.581l-0.291,-1.161l-1.453,-2.033l-0.292,-1.162l0.292,-1.161l1.744,-0.291l0.872,-0.870l3.778,-0.291l2.326,-0.580l0.291,-1.452l1.452,-2.034l0.000,-6.097l4.070,-1.453l7.849,-5.227l9.592,-5.226l4.361,1.161l1.452,1.452l2.036,-1.162l0.581,4.357l1.164,0.871l0.000,0.871l1.163,0.871l-0.581,1.162l-1.164,5.517l-0.292,3.484l-3.486,2.614l-1.165,3.775l1.165,0.871l0.000,1.742l1.742,0.291l-0.289,1.161l-0.582,0.291l-0.292,0.871l-0.289,0.000l-2.036,-2.904l-0.580,-0.291l-2.327,1.453l-2.033,-0.581l-1.455,-0.291l-0.872,0.291l-1.453,0.000l-1.743,1.161l-1.455,0.000l-3.196,-1.161l-1.452,0.581l-1.165,0.000l-1.163,-1.162l-2.617,-0.872l-3.195,0.291l-0.582,0.581l-0.292,1.452l-0.871,1.161l-0.291,2.324l-2.034,-1.453l-0.874,0.000l1.161,-0.871z", + "NG" : "M497.023,217.898l-2.615,0.871l-1.164,0.000l-1.161,0.581l-2.037,0.000l-1.452,-1.743l-0.873,-2.032l-2.033,-1.742l-2.036,0.000l-2.615,0.000l0.289,-4.647l0.000,-1.741l0.581,-1.743l0.582,-0.871l1.454,-1.452l-0.291,-0.873l0.580,-1.160l-0.580,-1.453l0.000,-1.160l0.291,-2.324l0.871,-1.161l0.292,-1.452l0.582,-0.581l3.195,-0.291l2.617,0.872l1.163,1.162l1.165,0.000l1.452,-0.581l3.196,1.161l1.455,0.000l1.743,-1.161l1.453,0.000l0.872,-0.291l1.455,0.291l2.033,0.581l2.327,-1.453l0.580,0.291l2.036,2.904l0.289,0.000l1.163,0.871l-0.289,0.580l0.000,0.872l-2.326,2.323l-0.873,1.742l-0.289,1.452l-0.582,0.582l-0.581,1.742l-1.455,1.161l-0.581,1.452l-0.580,1.161l-0.291,1.162l-1.744,0.870l-1.746,-1.161l-0.871,0.000l-1.743,1.743l-0.872,0.000l-1.164,2.614l0.872,-2.032z", + "NI" : "M237.734,200.475l-0.872,-0.871l-1.163,-1.162l-0.581,-0.871l-1.163,-0.871l-1.454,-1.162l0.291,-0.580l0.291,0.580l0.291,-0.290l0.872,0.000l0.291,-0.871l0.581,0.000l-0.290,-1.162l0.871,-0.291l0.582,0.291l0.581,-0.871l0.581,0.580l0.291,-0.289l0.581,-0.291l1.163,-0.871l0.000,-0.581l0.291,0.000l0.291,-0.580l0.291,0.000l0.290,0.290l0.582,0.000l0.581,-0.290l0.872,0.000l0.872,-0.291l0.291,-0.291l1.162,0.000l-0.291,0.291l-0.290,0.581l0.290,0.871l-0.582,1.162l-0.289,0.870l0.000,1.453l0.000,0.580l0.289,1.162l-0.580,0.290l-0.291,1.161l0.291,0.872l-0.581,0.581l0.000,0.871l0.581,0.290l-0.581,0.581l-0.872,0.000l-0.583,-0.581l-0.871,-0.290l-0.581,0.290l-1.745,-0.581l0.581,-0.291z", + "NL" : "M490.628,83.74l2.035,0.000l0.581,1.161l-0.581,2.323l-0.871,1.162l-1.454,0.000l0.290,2.904l-1.452,-0.582l-1.745,-1.451l-2.617,0.580l-2.034,0.000l1.452,-0.870l2.618,-4.066l-3.778,1.161z", + "NO" : "M551.381,35.246l8.43,2.032l-3.488,0.582l3.198,1.742l-4.942,1.161l-2.034,0.29l1.161-2.032l-3.486-1.162l-4.362,1.162l-1.452,2.032l-2.615,1.162l-2.907-0.581h-3.488l-3.198-1.452l-1.453,0.581l-1.744,0.29l-0.582,1.743l-5.231-0.291l-0.582,1.452h-2.615l-1.745,2.033l-2.906,2.903l-4.361,3.775l1.165,1.162l-0.873,0.872h-2.907l-1.744,2.613l0.29,3.775l1.743,1.162l-1.162,3.484l-2.033,1.742l-1.455,1.742l-1.742-1.742l-5.524,3.194l-3.488,0.582l-3.778-1.452l-1.163-2.905l-0.871-6.387l2.615-1.743l7.268-2.323l5.523-2.904l4.941-3.774l6.685-5.228l4.651-2.033l7.559-3.484l5.813-1.162h4.651l4.069-2.324l5.231,0.291L551.381,35.246zM541.79,16.951l-6.105,1.162l-4.941-0.87l2.036-0.582l-1.747-0.872l5.814-0.58l0.873,1.161L541.79,16.951zM524.058,11.724l9.01,2.033l-6.977,1.162l-1.452,2.032l-2.325,0.581l-1.455,2.324h-3.196l-6.104-1.743l2.615-0.87l-4.069-0.873l-5.523-2.323l-2.036-2.033l7.56-1.162l1.454,1.162l3.777-0.291l1.163-0.871h4.07L524.058,11.724zM543.823,9.692l5.522,1.161l-4.358,1.452l-7.849,0.29l-8.14-0.581l-0.582-0.58h-3.777l-3.199-1.453l8.722-0.58l3.778,0.58l2.906-0.871L543.823,9.692z", + "NP" : "M716.198,154.304l0.000,1.161l0.291,1.742l-0.291,1.162l-2.326,0.000l-3.197,-0.581l-2.325,-0.290l-1.453,-1.452l-3.779,-0.291l-3.490,-1.742l-2.614,-1.161l-2.908,-1.162l1.163,-2.613l1.745,-1.161l1.162,-0.582l2.326,0.871l2.616,1.742l1.454,0.291l1.162,1.452l2.034,0.581l2.326,1.162l2.906,0.580l-3.198,-0.291z", + "NZ" : "M949.907,343.345l0.873,1.161l1.745-1.161l0.87,1.161v1.161l-0.87,1.452l-2.036,2.033l-1.163,1.161l0.873,1.162h-2.034l-2.327,1.162l-0.871,1.74l-1.455,2.904l-2.323,1.161l-1.165,0.871l-2.615-0.289l-1.742-0.872h-3.198l-0.292-1.162l1.453-2.033l3.49-2.613l1.744-0.58l2.034-1.16l2.325-1.452l1.744-1.453l1.162-2.032l0.872-0.58l0.58-1.452l1.745-1.451L949.907,343.345zM954.559,330.277l1.743,2.904l0.292-1.743l1.16,0.58l0.293,2.324l2.324,0.872h1.745l1.743-0.872l1.453,0.289l-0.871,2.326l-0.873,1.74h-2.033l-0.582,0.581v1.452l-0.289,0.291l-1.165,1.452l-1.163,2.032l-2.325,1.161l-0.29-0.87l-1.162-0.291l1.452-2.322l-0.871-1.453l-2.907-1.16v-0.873l2.035-1.159l0.58-2.034l-0.289-1.743l-1.164-1.743l0.292-0.58l-1.454-1.161l-2.034-2.323l-1.162-2.032l0.87-0.291l1.455,1.453l2.325,0.87L954.559,330.277z", + "OM" : "M635.678,172.888l-0.871,1.742h-1.163l-0.58,0.581l-0.582,1.452l0.29,1.742l-0.29,0.581l-1.163-0.29l-1.744,1.162l-0.291,1.452l-0.58,0.581h-1.743l-1.165,0.582v1.162l-1.163,0.581l-1.452-0.291l-2.034,1.162h-1.163l-0.873-1.743l-2.325-4.645l8.431-2.613l1.745-5.519l-1.165-2.032v-1.162l0.873-1.162v-1.161l1.162-0.581l-0.581-0.291l0.289-1.742h1.456l1.161,1.742l1.745,1.161l2.036,0.291l1.45,0.581l1.165,1.452l0.871,0.872l0.872,0.58v0.582l-0.872,1.451l-0.582,0.872L635.678,172.888zM628.995,159.82l-0.291,0.291l-0.583-0.871l0.874-0.872l0.289,0.291L628.995,159.82z", + "PA" : "M259.244,211.219l-0.872,-0.871l-0.580,-1.452l0.872,-0.871l-0.872,-0.290l-0.582,-0.871l-1.163,-0.581l-1.162,0.000l-0.582,1.162l-1.162,0.580l-0.582,0.000l-0.291,0.581l1.163,1.451l-0.581,0.581l-0.582,0.291l-1.163,0.290l-0.581,-1.742l-0.291,0.291l-0.872,0.000l-0.581,-1.162l-1.163,-0.291l-0.580,-0.290l-1.164,0.000l-0.291,0.581l-0.290,-0.291l0.290,-0.580l0.291,-0.582l-0.291,-0.289l0.583,-0.581l-0.583,-0.291l0.000,-1.161l0.872,-0.291l1.163,1.162l0.000,0.581l0.872,0.000l0.291,-0.291l0.872,0.872l1.163,-0.291l1.163,-0.581l1.744,-0.579l0.872,-0.873l1.744,0.000l-0.291,0.291l1.745,0.291l1.163,0.291l0.871,0.870l0.872,0.870l-0.290,0.292l0.872,1.741l-0.582,0.871l-0.872,-0.289l0.582,-1.451z", + "PE" : "M282.208,279.17l-0.872,1.451l-1.163,0.872l-2.905,-1.743l-0.292,-1.162l-5.232,-2.613l-4.942,-3.195l-2.325,-1.451l-1.163,-2.323l0.581,-0.871l-2.326,-3.485l-2.905,-5.227l-2.326,-5.517l-1.163,-1.161l-0.872,-2.033l-2.325,-1.743l-1.745,-1.161l0.872,-1.162l-1.453,-2.613l0.872,-2.033l2.326,-1.742l0.291,1.160l-0.873,0.582l0.000,1.162l1.163,-0.290l1.163,0.290l1.162,1.451l1.454,-1.162l0.582,-1.742l1.744,-2.613l3.196,-0.871l3.198,-2.904l0.872,-1.741l-0.581,-2.324l0.872,-0.291l1.744,1.452l0.872,1.163l1.163,0.870l1.744,2.903l2.035,0.291l1.453,-0.870l1.164,0.579l1.452,-0.290l2.326,1.452l-1.744,2.613l0.582,0.290l1.452,1.454l-2.324,-0.290l-0.583,0.580l-2.033,0.289l-3.198,2.034l-0.291,1.161l-0.581,1.162l0.290,1.451l-1.744,0.581l0.000,1.162l-0.872,0.581l1.163,2.614l1.744,1.451l-0.581,1.451l1.744,0.000l0.872,1.453l2.616,0.000l2.326,-1.453l-0.292,4.066l1.163,0.292l1.744,-0.292l2.326,4.355l-0.582,0.873l-0.290,2.033l0.000,2.323l-1.163,1.452l0.582,0.872l-0.582,0.869l1.163,2.324l1.745,-2.904z", + "PG" : "M902.817,249.55l-0.873,0.29l-1.163-0.871l-1.162-1.742l-0.581-2.032l0.581-0.289l0.29,0.579l0.583,0.872l1.452,1.741l1.163,0.871L902.817,249.55zM892.063,246.065l-1.455,0.292l-0.29,0.58l-1.454,0.871l-1.452,0.582h-1.452l-2.328-0.872l-1.453-0.872v-0.871l2.616,0.582l1.454-0.292l0.289-1.159l0.582-0.293l0.292,1.452h1.452l0.873-1.159l1.452-0.873l-0.289-1.741h1.741l0.584,0.58l-0.291,1.452L892.063,246.065zM878.982,251.292l2.326,1.742l1.741,2.904h1.745v1.16l2.035,0.582l-0.87,0.291l2.904,1.16l-0.29,0.871l-1.744,0.292l-0.87-0.872l-2.328-0.291l-2.616-0.29l-2.325-1.743l-1.452-1.451l-1.454-2.613l-3.488-1.161l-2.326,0.871l-1.744,0.871l0.292,2.032l-2.034,0.871l-1.744-0.29l-2.617-0.29l-0.29-9.002v-8.712l4.94,1.742l4.941,1.451l2.036,1.453l1.452,1.452l0.292,1.741l4.649,1.743l0.583,1.451l-2.328,0.291L878.982,251.292zM895.259,243.451l-0.873,0.582l-0.582-1.741l-0.579-0.873l-1.162-0.87l-1.455-1.162l-2.034-0.871l0.579-0.58l1.455,0.58l1.163,0.581l1.163,0.871l0.87,1.161l1.165,0.871L895.259,243.451z", + "PH" : "M821.715,207.735l0.292,2.033v1.451l-0.872,2.322l-0.871-2.612l-1.454,1.452l0.871,2.033l-0.871,1.16l-3.199-1.452l-0.581-2.032l0.874-1.452l-1.745-1.161l-0.873,1.161l-1.452-0.29l-2.034,1.742l-0.292-0.871l0.871-2.323l1.744-0.871l1.455-0.872l1.163,1.162l2.035-0.87l0.29-1.162h2.033v-2.323l2.036,1.453l0.29,1.451L821.715,207.735zM815.03,202.798l-0.871,0.87l-0.873,1.744l-0.871,0.579l-1.744-1.741l0.582-0.871l0.581-0.581l0.289-1.743l1.455-0.29l-0.292,2.033l2.036-2.614L815.03,202.798zM799.916,205.413l-3.488,2.612l1.163-2.033l2.034-1.741l1.743-1.744l1.454-2.902l0.291,2.322l-1.745,1.453L799.916,205.413zM809.216,198.151l1.743,0.872h1.745v1.161l-1.452,1.162l-1.745,0.871v-1.162l0.292-1.451L809.216,198.151zM819.099,197.571l0.874,2.904l-2.036-0.582v0.872l0.581,1.741l-1.162,0.582l-0.29-2.033h-0.584l-0.578-1.742l1.743,0.291v-1.162l-1.743-2.033h2.614L819.099,197.571zM808.344,194.958l-0.873,2.323l-1.161-1.162l-1.454-2.323l2.615,0.291L808.344,194.958zM807.764,180.148l1.743,0.581l0.871-0.581v0.581l-0.289,1.162l0.87,2.033l-0.581,2.324l-1.744,0.87l-0.29,2.323l0.582,2.033l1.452,0.29l1.165-0.29l3.486,1.451l-0.289,1.743l0.87,0.581l-0.289,1.161l-2.036-1.161l-1.163-1.452l-0.579,0.871l-1.744-1.743l-2.617,0.581l-1.454-0.581l0.291-1.162l0.873-0.871l-0.873-0.58l-0.291,1.162l-1.453-1.743l-0.29-1.161l-0.291-2.613l1.162,0.871l0.292-4.355l0.871-2.324H807.764z", + "PK" : "M680.735,128.75l2.036,1.451l0.870,2.033l4.361,1.162l-2.617,2.323l-3.196,0.290l-4.069,-0.581l-1.453,1.162l1.160,2.324l0.874,2.032l2.325,1.161l-2.325,1.743l0.000,2.032l-2.618,2.614l-1.745,2.904l-2.904,2.904l-3.199,-0.291l-3.197,2.904l1.745,1.162l0.579,2.032l1.455,1.451l0.583,2.324l-6.106,0.000l-1.745,2.033l-2.033,-0.871l-0.873,-2.033l-2.034,-2.033l-5.234,0.580l-4.360,0.000l-4.068,0.291l1.161,-3.193l4.070,-1.162l-0.290,-1.452l-1.453,-0.291l0.000,-2.613l-2.617,-1.162l-1.162,-1.742l-1.453,-1.452l4.649,1.452l2.907,-0.291l1.455,0.291l0.581,-0.580l2.035,0.289l3.488,-1.161l0.291,-2.323l1.452,-1.742l2.034,0.000l0.292,-0.581l2.036,-0.290l1.160,0.000l0.875,-0.580l0.000,-1.743l1.162,-1.743l1.742,-0.580l-1.161,-1.743l2.616,0.000l0.872,-0.871l-0.289,-1.162l1.450,-1.161l-0.289,-1.452l-0.581,-1.162l1.454,-1.161l3.197,-0.580l2.907,-0.291l1.454,-0.581l-1.743,0.290z", + "PL" : "M515.047,90.418l-1.165,-1.742l0.292,-0.870l-0.581,-1.452l-1.163,-1.162l0.872,-0.581l-0.583,-1.452l1.744,-0.870l4.362,-1.163l3.489,-1.161l2.614,0.581l0.291,0.580l2.617,0.291l3.489,0.290l4.940,-0.290l1.454,0.290l0.582,0.872l0.289,1.452l0.582,0.870l0.000,1.161l-1.453,0.582l0.871,1.162l0.000,1.161l1.455,2.614l-0.292,0.580l-1.452,0.580l-2.617,2.033l0.872,1.452l-0.582,-0.289l-2.616,-1.163l-2.033,0.582l-1.455,-0.291l-1.453,0.581l-1.455,-1.163l-1.160,0.582l0.000,-0.291l-1.454,-1.161l-2.034,-0.290l-0.290,-0.872l-1.746,-0.290l-0.581,0.580l-1.454,-0.580l0.293,-0.580l-2.036,-0.291l1.453,0.872z", + "PR" : "M291.219,180.148l1.455,0.000l0.581,0.581l-0.872,0.871l-2.035,0.000l-1.453,0.000l-0.291,-1.162l0.582,-0.290l-2.033,0.000z", + "PS" : "M571.728,141.816l0.000,1.743l-0.581,0.871l-1.160,0.291l0.000,-0.581l0.871,-0.581l-0.871,-0.289l0.578,-1.743l-1.163,-0.289z", + "PT" : "M448.769,115.683l1.163,-0.581l1.163,-0.291l0.581,1.162l1.744,0.000l0.291,-0.290l1.746,0.000l0.581,1.452l-1.163,0.870l0.000,2.033l-0.582,0.291l0.000,1.451l-1.162,0.291l1.162,1.452l-0.873,2.032l0.873,0.581l-0.291,0.871l-0.871,0.871l0.000,1.162l-0.874,0.581l-1.452,-0.290l-1.454,0.290l0.292,-2.324l-0.292,-1.451l-1.163,-0.291l-0.581,-1.162l0.291,-1.742l0.871,-1.160l0.292,-0.873l0.582,-1.741l0.000,-1.162l-0.582,-0.871l0.292,1.161z", + "PY" : "M301.103,292.237l1.163,-3.485l0.000,-1.451l1.453,-2.324l4.652,-0.871l2.616,0.000l2.615,1.451l0.000,0.871l0.872,1.452l-0.291,3.776l2.907,0.581l1.163,-0.581l2.035,0.871l0.291,0.581l0.291,2.613l0.290,1.162l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,1.741l-0.292,1.454l-0.580,1.742l-0.582,2.322l-2.325,2.032l-2.326,0.581l-3.197,-0.581l-2.617,-0.580l2.617,-4.354l-0.291,-1.162l-2.906,-1.161l-3.198,-2.034l-2.326,-0.290l5.232,4.356z", + "QA" : "M613.587,162.725l0.000,-1.743l0.582,-1.452l0.873,-0.290l0.871,0.871l0.000,1.451l-0.581,1.744l-0.872,0.000l0.873,0.581z", + "RO" : "M536.265,99.13l1.163,-0.581l1.744,0.581l1.745,0.000l1.163,0.581l1.162,-0.581l2.036,-0.291l0.579,-0.580l1.163,0.000l0.873,0.290l0.871,0.872l0.873,1.162l1.453,1.742l0.291,1.161l-0.291,1.161l0.291,1.163l1.452,0.580l1.166,-0.580l1.161,0.580l0.289,0.581l-1.450,0.581l-0.874,0.000l-0.872,3.194l-1.454,-0.290l-2.035,-0.872l-3.196,0.581l-1.452,0.581l-4.071,0.000l-2.035,-0.581l-1.164,0.291l-0.581,-1.162l-0.581,-0.581l0.581,-0.291l-0.581,-0.289l-0.871,0.580l-1.745,-0.872l-0.289,-1.161l-1.454,-0.580l-0.293,-0.872l-1.741,-1.161l2.325,-0.581l1.742,-1.741l1.164,-2.034l-1.743,0.581z", + "RS" : "M531.325,106.1l1.454,0.580l0.289,1.161l1.745,0.872l0.871,-0.580l0.581,0.289l-0.581,0.291l0.581,0.581l-0.871,0.581l0.290,1.161l1.454,1.162l-1.164,0.871l-0.580,0.871l0.290,0.289l-0.290,0.292l-1.165,0.000l-1.161,0.290l0.000,-0.290l0.290,-0.292l0.292,-0.580l-0.292,0.000l-0.579,-0.580l-0.583,0.000l-0.290,-0.581l-0.581,-0.290l-0.293,-0.291l-0.581,0.291l-0.289,0.871l-0.582,0.000l0.290,0.000l-1.162,-0.581l-0.872,-0.290l-0.290,-0.581l-0.873,-0.290l0.581,-0.291l0.582,-1.161l-1.455,-1.162l0.581,-1.161l-0.871,0.000l1.163,-0.872l-0.873,-0.870l-0.871,-1.163l2.326,-0.580l1.455,0.000l1.741,1.161l-0.293,-0.872z", + "RU" : "M869.098,91.29l2.907,4.936l-4.07-0.87l-1.743,4.065l2.614,2.613v2.033l-2.034-1.743l-1.743,2.323l-0.582-2.323l0.292-2.904l-0.292-2.904l0.582-2.033v-3.775l-1.454-2.613l0.291-3.774l2.326-1.162l-0.872-1.452l1.163-0.29l0.58,1.742l1.162,2.614l-0.29,2.903L869.098,91.29zM536.265,81.417l-4.94,0.29l-3.488-0.29l0.58-1.452l3.779-0.872l2.906,0.581l1.454,0.291l-0.582,0.871L536.265,81.417zM969.382,36.116l-3.196,0.291l-0.581-0.871l3.777-1.162h-0.01l0.58-0.29h2.326l3.779,0.872v0.29l-2.907,0.871h-3.778H969.382zM869.098,29.728h-4.069l-5.814-0.29l-0.582-0.29l2.618-1.162h3.488l4.067,0.872L869.098,29.728zM888.574,24.501l-3.198,1.162l-4.36-0.291l-4.942-1.16l0.582-0.873l5.232,0.291L888.574,24.501zM873.167,23.049l-2.324,2.033h-9.884l-4.651,0.58l-5.521-1.742l1.454-1.742l3.778-0.582h7.266L873.167,23.049zM632.19,36.407l-1.743,0.291l-9.012-0.291l-0.581-1.161l-4.941-0.872l-0.581-1.452l2.907-0.582V30.89l5.232-2.323l-2.325-0.291l6.393-2.613l-0.578-1.162l6.104-1.452l9.011-1.742l9.3-0.581l4.653-0.871l5.23-0.581l2.036,1.162l-1.745,0.871l-9.883,1.452l-8.43,1.162l-8.43,2.613l-4.069,2.614l-4.361,2.904l0.584,2.033L632.19,36.407zM969.382,52.379h-0.291l-3.486,1.161l-3.488-0.29l2.615,1.452l1.454,2.323l1.455,0.58l0.289,1.162l-0.873,0.872l-4.94-0.582l-7.849,2.033l-2.325,0.291l-4.362,2.033l-4.069,1.742l-0.871,1.161l-4.069-2.033l-6.977,2.324l-1.452-1.162l-2.618,1.162l-3.488-0.291l-0.871,1.742l-3.486,2.613l0.29,1.162l2.906,0.582l-0.291,4.064h-2.615l-1.163,2.324l1.163,1.161l-4.651,1.452l-1.163,3.194l-4.07,0.582l-0.87,2.903l-3.781,2.613l-1.162-2.032l-1.163-3.775l-1.454-6.389l1.164-3.775l2.324-1.453l0.291-1.451l4.36-0.581l4.942-3.484l4.649-2.904l4.943-2.033l2.326-3.775h-3.489l-1.744,2.324l-6.977,3.194l-2.034-3.485l-7.269,0.872l-6.975,4.646l2.325,1.742l-6.105,0.58l-4.359,0.291l0.291-2.032l-4.358-0.292l-3.199,1.453l-8.431-0.581l-9.01,0.871l-9.013,5.227l-10.463,6.679l4.357,0.29l1.165,1.743l2.615,0.581l1.744-1.452l3.196,0.291l3.78,2.904l0.29,2.323l-2.326,2.904v3.194l-1.452,4.356l-4.07,4.066l-0.87,1.741l-3.781,3.194l-3.777,3.194l-1.744,1.742l-3.488,1.452l-1.744,0.291l-1.744-1.453l-3.78,2.033l-0.579,0.871l-0.292-0.582v-1.161l1.454-0.291l0.29-3.194l-0.581-2.324l2.325-0.871l3.198,0.291l2.034-2.613l0.871-2.904l1.163-1.162l1.454-2.323l-4.651,0.871l-2.325,0.872h-4.361l-0.871-2.614l-3.488-1.742l-4.651-0.871l-1.16-2.904l-0.874-1.453l-0.871-1.161l-1.744-2.903l-2.617-1.162l-4.067-0.58h-3.491l-3.486,0.58l-2.325,1.162l1.452,0.871v1.452l-1.452,0.872l-2.328,2.903v1.162l-4.068,1.742l-3.197-1.162l-3.197,0.291l-1.452-0.871l-1.745-0.291l-4.069,2.033l-3.488,0.291l-2.616,0.872l-3.49-0.581h-2.615l-1.743-1.453l-2.615-1.162l-2.618-0.291l-3.486,0.291l-2.617,0.582l-4.069-1.162l-0.29-2.324l-3.488-0.58l-2.326-0.29l-3.196-1.162l-2.907,2.903l1.163,1.453l-2.617,2.033l-4.07-0.581l-2.617-0.29l-1.741-1.162h-2.908l-2.616-0.871l-4.068,1.161l-5.232,2.324l-2.907,0.582l-1.163,0.29l-1.454-1.742l-3.488,0.291l-1.163-1.162l-2.034-0.582l-1.16-1.452l-1.455-0.581l-4.069,0.872l-3.78-1.742l-1.453,1.451l-6.104-6.968l-3.488-2.033l0.871-0.871l-6.975,2.613h-2.617l0.29-1.451l-3.488-0.872l-2.906,0.581l-0.872-2.904l-4.941-0.581l-2.326,1.161l-6.977,1.162l-1.454,0.582l-10.172,0.872l-1.454,1.161l2.036,1.743l-2.617,0.87l0.581,0.581l-2.617,1.452l4.361,1.742l-0.581,1.453l-3.78-0.291l-0.871,0.872l-3.488-1.452l-4.36,0.29l-2.906,1.162l-3.488-1.162l-5.812-2.032h-4.361l-5.814,3.194l-0.289,2.033l-2.906-1.742l-2.036,3.195l0.58,0.29l-1.452,2.324l2.326,1.742h2.034l1.743,1.741l-0.289,1.453l1.452,0.581l-1.163,1.452l-2.906,0.581l-2.615,2.614l2.615,2.613l-0.289,2.032l2.906,3.194l-1.744,1.162l-0.29,0.581h-1.165l-2.033-1.743h-0.873l-1.745-0.871l-0.581-1.162l-2.614-0.58l-1.745,0.58l-0.581-0.58l-3.78-1.162l-3.778-0.581l-2.325-0.581l-0.581,0.581l-3.488-2.323l-3.197-1.161l-2.326-1.743l2.034-0.29l2.328-2.324l-1.455-1.162l4.07-1.162l-0.292-0.581l-2.323,0.581v-1.161l1.452-0.871l2.615-0.291l0.582-0.871l-0.582-1.452l1.163-1.451l-0.29-0.873l-4.07-0.871h-1.454l-1.744-1.162l-2.034,0.291l-3.488-0.871V91.29l-0.871-1.162h-2.327l-0.29-0.871l0.873-0.581l-1.744-1.742l-2.906,0.29h-0.872l-0.584,0.582h-1.16l-0.583-2.033l-0.871-0.872l0.581-0.291l2.326,0.291l1.163-0.58l-0.872-0.872l-2.036-0.581l0.292-0.29l-1.163-0.581l-1.743-1.742l0.578-0.871l-0.289-1.162l-2.615-0.581l-1.454,0.291l-0.29-0.872l-2.907-0.581l-0.871-1.742l-0.291-1.161l-1.455-0.582l1.163-0.871l-0.582-2.613l1.745-1.742l-0.291-0.291l3.199-1.742l-2.908-1.162l5.813-3.485l2.617-1.742l0.871-1.162l-4.069-2.032l1.162-1.742l-2.325-2.033l1.744-2.324l-3.198-3.194l2.617-2.033l-4.362-1.743l0.584-2.033l2.034-0.29l4.942-1.161l2.615-0.872l4.651,1.743l7.557,0.58l10.465,3.195l2.035,1.162v1.741l-2.906,1.453l-4.651,0.871l-12.21-2.033l-2.033,0.291l4.651,2.033v1.161l0.292,2.904l3.486,0.872l2.036,0.58l0.581-1.161l-1.746-1.162l1.746-1.162l6.685,1.742l2.326-0.581l-1.745-2.033l6.396-2.903l2.323,0.29l2.617,0.871l1.745-1.742l-2.326-1.742l1.163-1.742l-2.034-1.452l7.848,0.872l1.453,1.452l-3.489,0.289v1.453l2.326,1.162l4.361-0.582l0.581-2.033l5.812-1.161l9.594-2.323h2.034l-2.907,1.742l3.488,0.29l2.034-0.871h5.232l4.069-1.161l3.197,1.452l2.906-1.742l-2.906-1.453l1.454-1.162l8.14,0.872l3.778,0.871l10.176,3.194l1.742-1.452l-2.907-1.452v-0.581l-3.197-0.291l0.874-1.162l-1.455-2.323v-0.871l4.943-2.323l1.742-2.613l2.035-0.582l7.268,0.872l0.581,1.451l-2.615,2.324l1.743,0.871l0.872,1.742l-0.581,3.775l3.198,1.743l-1.165,1.742l-5.521,4.066l3.197,0.29l1.161-0.871l2.907-0.872l0.874-1.161l2.325-1.453l-1.744-1.452l1.454-1.742l-3.198-0.291l-0.582-1.451l2.326-2.904l-3.778-2.324l4.94-1.741l-0.581-2.033h1.453l1.454,1.452l-1.163,2.613l2.907,0.581l-1.162-2.033l4.65-0.872l5.522-0.29l5.232,1.451l-2.617-2.032l-0.29-3.195l4.94-0.291h6.688l5.812-0.29l-2.324-1.451l3.197-1.743l3.197-0.29l5.521-1.162l7.27-0.58l0.872-0.582l7.268-0.291l2.325,0.582l6.104-1.452h4.94l0.873-1.161l2.615-1.162l6.396-1.161l4.651,0.87l-3.489,0.872l6.104,0.291l0.874,1.452l2.324-0.871h8.141l6.104,1.452l2.325,1.162l-0.873,1.451l-2.907,0.581l-7.267,1.743l-2.036,0.581l3.49,0.58l4.068,0.581l2.326-0.581l1.452,1.743l1.165-0.581l4.359-0.582l9.013,0.582l0.579,1.161l11.628,0.582v-2.033l5.814,0.291h4.359l4.651,1.451l1.163,1.742l-1.745,1.162l3.488,2.323l4.36,1.161l2.615-2.904l4.653,1.162l4.65-0.871l5.233,0.871l2.034-0.581l4.648,0.29l-2.033-2.614l3.488-1.161l24.998,1.741l2.327,1.743l7.267,2.032l11.045-0.581l5.524,0.581l2.324,1.162l-0.58,2.033l3.486,0.581l3.78-0.581h4.941l4.94,0.581l5.234-0.29l4.938,2.323l3.488-0.872l-2.322-1.742l1.162-1.162l8.721,0.872l5.812-0.292l7.848,1.453l4.069,1.162h-0.01l6.976,2.033l6.977,2.614v1.742l1.744,0.871l-0.581-2.033l7.559,0.291l5.231,2.613l-2.616,1.162l-4.651,0.29v2.613l-1.161,0.581h-2.617l-2.034-0.871l-3.779-0.871l-0.582-1.162l-2.615-0.58l-3.199,0.58l-1.452-1.162l0.581-0.872l-3.198,0.582l1.165,1.452l-1.745,1.162H969.382zM762.998,15.499l-15.406,1.162l4.94-3.484l2.328-0.291h2.034l6.977,1.742L762.998,15.499zM614.46,9.401l-3.488,0.291l-2.617,0.29l-0.289,0.581l-3.199,0.291l-3.197-0.581l1.743-0.871h-6.104l5.233-0.581h4.359l0.291,0.581l1.744-0.581l2.618-0.291l4.067,0.581L614.46,9.401zM748.754,14.047l-5.812,0.29l-7.85-0.87l-4.359-0.872l-2.325-2.033l-3.779-0.581l7.268-1.742L738,7.369l5.232,1.452l6.396,2.614L748.754,14.047z", + "RW" : "M557.485,234.16l1.163,1.452l-0.289,1.741l-0.582,0.291l-1.454,-0.291l-0.874,1.743l-1.743,-0.290l0.293,-1.453l0.290,-0.290l0.000,-1.742l0.871,-0.580l0.582,0.290l-1.743,0.871z", + "SA" : "M591.496,185.956l-0.291,-1.162l-0.873,-0.871l-0.290,-1.162l-1.453,-0.871l-1.454,-2.323l-0.582,-2.322l-2.034,-1.744l-1.163,-0.580l-1.743,-2.613l-0.292,-1.744l0.000,-1.741l-1.453,-2.904l-1.454,-1.162l-1.453,-0.580l-0.871,-1.452l0.000,-0.872l-0.581,-1.451l-0.874,-0.582l-1.162,-2.032l-1.452,-2.033l-1.456,-2.033l-1.452,0.000l0.290,-1.451l0.292,-0.871l0.292,-1.162l3.196,0.291l1.161,-0.582l0.581,-1.161l2.036,-0.290l0.581,-0.871l0.872,-0.581l-2.905,-2.614l5.522,-1.451l0.582,-0.582l3.488,0.873l4.067,2.032l7.561,5.517l5.230,0.000l2.326,0.290l0.873,1.452l1.743,0.000l1.165,2.323l1.452,0.581l0.289,0.871l2.036,1.162l0.290,1.162l-0.290,0.870l0.290,0.872l0.584,0.871l0.578,0.871l0.292,0.581l0.873,0.581l0.872,0.000l0.290,0.871l0.291,0.871l0.872,2.613l8.430,1.452l0.580,-0.580l1.165,2.031l-1.745,5.519l-8.430,2.613l-7.849,1.162l-2.615,1.161l-2.036,2.904l-1.163,0.291l-0.580,-0.873l-1.164,0.292l-2.615,-0.292l-0.582,-0.289l-3.197,0.000l-0.582,0.289l-1.161,-0.869l-0.873,1.451l0.289,1.161l1.161,-0.872z", + "SB" : "M919.968,259.712l0.871,0.873h-2.034l-0.873-1.453l1.452,0.58H919.968zM916.48,257.972l-0.874,0.289l-1.743-0.289l-0.58-0.582v-1.161l2.034,0.581l0.873,0.58L916.48,257.972zM918.805,257.39l-0.291,0.582l-2.034-2.613l-0.582-1.453h0.871l0.873,2.033L918.805,257.39zM913.863,253.906v0.581l-2.034-1.161l-1.454-1.162l-1.161-0.871l0.579-0.29l1.164,0.871l2.326,1.161L913.863,253.906zM907.468,251.002l-0.581,0.29l-1.162-0.58l-1.163-1.162v-0.581l1.744,1.162L907.468,251.002z", + "SD" : "M567.37,204.831l-0.582,0.000l0.000,-1.452l-0.292,-0.873l-1.453,-1.160l-0.292,-1.742l0.292,-2.033l-1.162,-0.291l-0.293,0.582l-1.452,0.289l0.582,0.582l0.291,1.742l-1.454,1.451l-1.453,2.033l-1.454,0.291l-2.325,-1.744l-1.163,0.582l0.000,0.871l-1.454,0.581l-0.290,0.582l-2.617,0.000l-0.289,-0.582l-2.035,0.000l-1.164,0.291l-0.581,-0.291l-1.452,-1.452l-0.584,-0.871l-2.033,0.581l-0.581,1.161l-0.872,2.324l-0.874,0.581l-0.872,0.289l-0.290,0.000l-0.871,-0.870l0.000,-0.870l0.289,-1.163l0.000,-1.162l-1.452,-1.742l-0.292,-1.162l0.000,-0.580l-1.162,-0.871l0.000,-1.453l-0.582,-1.161l-0.873,0.290l0.293,-1.161l0.580,-1.162l-0.289,-1.162l0.871,-0.870l-0.582,-0.581l0.872,-1.743l1.164,-2.032l2.324,0.291l0.000,-11.036l0.000,-0.870l3.199,-0.291l0.000,-5.228l11.045,0.000l10.755,0.000l10.755,0.000l0.874,2.615l-0.581,0.580l0.289,2.614l1.163,3.485l1.164,0.580l1.454,0.872l-1.454,1.742l-2.035,0.289l-0.874,0.873l-0.291,2.033l-1.161,4.065l0.290,0.870l-0.581,2.323l-0.872,2.904l-1.743,1.162l-1.163,2.322l-0.292,1.162l-1.454,0.582l-0.579,2.903l0.000,-0.291z", + "SE" : "M534.813,50.346l-2.617,1.742l0.291,1.742l-4.362,2.324l-5.230,2.323l-2.036,3.774l2.036,2.033l2.615,1.452l-2.615,3.194l-2.907,0.581l-0.873,4.647l-1.744,2.613l-3.197,-0.291l-1.455,2.033l-3.196,0.291l-0.874,-2.614l-2.323,-3.194l-2.327,-3.776l1.455,-1.742l2.033,-1.742l1.162,-3.485l-1.743,-1.162l-0.290,-3.775l1.744,-2.612l2.907,0.000l0.873,-0.872l-1.165,-1.162l4.361,-3.774l2.907,-2.904l1.745,-2.033l2.615,0.000l0.582,-1.452l5.232,0.290l0.582,-1.742l1.744,-0.290l3.486,1.452l4.361,2.033l0.000,4.065l0.872,1.162l4.649,-0.871z", + "SI" : "M511.848,102.905l2.326,0.291l1.162,-0.582l2.616,0.000l0.291,-0.580l0.582,0.000l0.582,1.162l-2.325,0.580l-0.293,1.162l-0.871,0.290l0.000,0.582l-1.163,0.000l-0.873,-0.291l-0.580,0.291l-1.743,0.000l0.581,-0.291l-0.581,-1.162l-0.289,1.452z", + "SK" : "M525.802,94.774l0.000,0.291l1.160,-0.582l1.455,1.163l1.453,-0.581l1.455,0.291l2.033,-0.582l2.616,1.163l-0.872,0.870l-0.580,0.872l-0.582,0.290l-2.908,-0.872l-0.870,0.291l-0.582,0.581l-1.455,0.290l-0.289,0.000l-1.163,0.290l-1.163,0.290l-0.291,0.291l-2.324,0.581l-0.871,-0.290l-1.454,-0.872l-0.292,-0.870l0.292,-0.291l0.289,-0.581l1.165,0.000l0.871,-0.290l0.290,-0.291l0.289,-0.289l0.292,-0.581l0.582,0.000l0.580,-0.582l-0.874,0.000z", + "SL" : "M442.376,212.381l-0.873,-0.291l-2.034,-1.161l-1.455,-1.452l-0.289,-0.871l-0.292,-2.033l1.455,-1.451l0.289,-0.582l0.292,-0.581l0.871,0.000l0.581,-0.580l2.326,0.000l0.582,0.871l0.581,1.163l0.000,0.870l0.582,0.581l0.000,1.161l0.581,-0.290l-1.163,1.451l-1.454,1.452l0.000,0.871l0.580,-0.872z", + "SN" : "M427.84,193.505l-1.162,-2.032l-1.454,-1.161l1.164,-0.291l1.452,-2.032l0.582,-1.452l0.871,-0.872l1.456,0.291l1.452,-0.581l1.454,0.000l1.163,0.872l2.034,0.580l1.454,2.033l2.034,1.742l0.000,1.742l0.581,1.742l1.162,0.581l0.000,1.162l0.000,0.871l-0.289,0.290l-1.744,-0.290l0.000,0.290l-0.581,0.000l-2.036,-0.581l-1.453,0.000l-4.942,-0.290l-0.871,0.290l-0.874,0.000l-1.453,0.581l-0.291,-2.323l2.327,0.291l0.580,-0.581l0.582,0.000l1.163,-0.581l1.163,0.581l1.162,0.000l1.163,-0.581l-0.582,-0.872l-0.870,0.581l-0.873,0.000l-1.163,-0.581l-0.871,0.000l-0.581,0.581l2.909,0.000z", + "SO" : "M610.681,199.023l1.452,-0.290l1.162,-0.871l1.165,0.000l0.000,0.871l-0.291,1.451l0.000,1.453l-0.582,1.161l-0.581,2.904l-1.452,2.904l-1.747,3.484l-2.323,4.066l-2.326,3.194l-3.199,3.775l-2.907,2.323l-4.068,2.613l-2.616,2.033l-2.908,3.486l-0.582,1.451l-0.580,0.581l-1.745,-2.323l0.000,-9.873l2.325,-3.196l0.874,-0.870l1.744,0.000l2.324,-2.033l3.780,0.000l7.850,-8.421l1.742,-2.323l1.163,-1.742l0.000,-1.452l0.000,-2.614l0.000,-1.161l0.290,0.000l0.873,0.000l-1.163,0.581z", + "SOL" : "M608.355,204.831l-1.163,1.742l-1.742,2.323l-2.328,0.000l-9.010,-3.194l-1.163,-0.871l-0.873,-1.452l-1.163,-1.453l0.583,-1.161l1.161,-1.452l0.873,0.580l0.582,1.162l1.163,1.162l1.163,0.000l2.614,-0.580l3.199,-0.582l2.327,-0.580l1.452,-0.291l0.871,-0.580l1.744,0.000l-0.290,0.000l0.000,1.161l0.000,2.614l0.000,-1.452z", + "SR" : "M316.509,214.415l3.198,0.580l0.290,-0.291l2.326,-0.289l2.907,0.580l-1.453,2.612l0.289,1.743l1.164,1.742l-0.582,1.161l-0.290,1.163l-0.581,1.162l-1.745,-0.581l-1.162,0.289l-1.163,-0.289l-0.291,0.870l0.581,0.581l-0.290,0.581l-1.454,-0.291l-1.744,-2.322l-0.291,-1.744l-0.872,0.000l-1.453,-2.032l0.581,-1.161l0.000,-0.872l1.453,-0.579l-0.582,2.613z", + "SS" : "M567.37,204.831l0.000,2.322l-0.582,0.872l-1.455,0.000l-0.872,1.452l1.746,0.291l1.452,1.161l0.290,1.161l1.454,0.580l1.455,3.196l-1.745,1.741l-1.743,1.743l-1.745,1.162l-1.744,0.000l-2.326,0.580l-1.744,-0.580l-1.163,0.870l-2.325,-2.032l-0.874,-1.162l-1.450,0.581l-1.166,0.000l-0.873,0.291l-1.161,-0.291l-1.743,-2.323l-0.292,-0.871l-2.034,-0.871l-0.873,-1.743l-1.163,-1.161l-1.743,-1.452l0.000,-0.871l-1.452,-1.162l-2.037,-1.162l0.872,-0.289l0.874,-0.581l0.872,-2.324l0.581,-1.161l2.033,-0.581l0.584,0.871l1.452,1.452l0.581,0.291l1.164,-0.291l2.035,0.000l0.289,0.582l2.617,0.000l0.290,-0.582l1.454,-0.581l0.000,-0.871l1.163,-0.582l2.325,1.744l1.454,-0.291l1.453,-2.033l1.454,-1.451l-0.291,-1.742l-0.582,-0.582l1.452,-0.289l0.293,-0.582l1.162,0.291l-0.292,2.033l0.292,1.742l1.453,1.160l0.292,0.873l0.000,1.452l-0.582,0.000z", + "SV" : "M232.211,194.086l-0.291,0.581l-1.743,0.000l-0.872,-0.290l-1.164,-0.581l-1.452,0.000l-0.873,-0.581l0.000,-0.580l0.873,-0.581l0.580,-0.291l0.000,-0.290l0.581,-0.291l0.873,0.291l0.582,0.581l0.872,0.581l0.000,0.289l1.161,-0.289l0.582,0.000l0.291,0.289l0.000,-1.162z", + "SY" : "M580.45,139.204l-5.234,2.903l-3.195,-1.161l0.289,-0.290l0.000,-1.162l0.873,-1.452l1.452,-1.161l-0.581,-1.162l-1.163,0.000l-0.290,-2.033l0.582,-1.161l0.871,-0.582l0.581,-0.580l0.290,-1.742l0.873,0.580l2.907,-0.870l1.454,0.581l2.327,0.000l3.196,-0.872l1.453,0.000l3.197,-0.581l-1.454,1.742l-1.454,0.872l0.292,2.032l-1.163,3.195l6.103,-2.904z", + "SZ" : "M562.136,304.433l-0.581,1.161l-1.744,0.290l-1.452,-1.451l-0.292,-0.871l0.870,-1.161l0.293,-0.581l0.872,-0.290l1.163,0.580l0.580,1.161l-0.291,-1.162z", + "TD" : "M513.593,195.538l0.289,-1.161l-1.742,-0.291l0.000,-1.742l-1.165,-0.871l1.165,-3.775l3.486,-2.614l0.292,-3.484l1.164,-5.517l0.581,-1.162l-1.163,-0.871l0.000,-0.871l-1.164,-0.871l-0.581,-4.357l2.616,-1.451l11.046,5.226l11.045,5.227l0.000,11.036l-2.324,-0.291l-1.164,2.032l-0.872,1.743l0.582,0.581l-0.871,0.870l0.289,1.162l-0.580,1.162l-0.293,1.161l0.873,-0.290l0.582,1.161l0.000,1.453l1.162,0.871l0.000,0.580l-1.744,0.581l-1.452,1.161l-2.034,2.905l-2.617,1.452l-2.618,-0.291l-0.871,0.291l0.292,0.870l-1.454,0.872l-1.163,1.161l-3.488,1.162l-0.582,-0.580l-0.579,-0.291l-0.293,0.871l-2.325,0.290l0.290,-0.870l-0.872,-1.743l-0.289,-1.161l-1.165,-0.581l-1.742,-1.743l0.579,-1.161l1.455,0.289l0.581,-0.289l1.453,0.000l-1.453,-2.324l0.292,-2.032l-0.292,-1.743l1.162,1.742z", + "TF" : "M663.583,364.542l1.746,0.872l2.617,0.581l0.000,0.291l-0.584,1.452l-4.360,0.000l0.000,-1.452l0.292,-1.161l-0.289,0.583z", + "TG" : "M479,214.123l-2.324,0.581l-0.582,-1.162l-0.872,-1.742l0.000,-1.162l0.581,-2.613l-0.871,-0.872l-0.292,-2.322l0.000,-2.033l-0.871,-1.161l0.000,-0.872l2.616,0.000l-0.582,1.452l0.873,0.871l0.872,0.871l0.291,1.454l0.579,0.289l-0.290,6.388l-0.872,-2.033z", + "TH" : "M756.022,197.571l-2.325,-1.452l-2.325,0.000l0.290,-2.033l-2.326,0.000l-0.291,2.904l-1.454,4.065l-0.871,2.613l0.290,1.745l1.744,0.289l1.163,2.323l0.291,2.613l1.745,1.452l1.453,0.291l1.454,1.452l-0.873,1.162l-1.744,0.289l-0.290,-1.451l-2.326,-1.163l-0.291,0.582l-1.163,-1.162l-0.582,-1.452l-1.452,-1.452l-1.163,-1.161l-0.582,1.452l-0.581,-1.452l0.292,-1.742l0.871,-2.615l1.452,-2.903l1.454,-2.614l-1.162,-2.322l0.290,-1.452l-0.582,-1.453l-1.741,-2.322l-0.582,-1.162l0.871,-0.580l1.163,-2.323l-1.163,-2.034l-1.744,-1.742l-1.455,-2.613l1.165,-0.290l1.163,-3.194l2.034,0.000l1.743,-1.163l1.454,-0.580l1.163,0.580l0.290,1.744l1.743,0.289l-0.579,2.904l0.000,2.323l2.907,-1.742l0.871,0.581l1.452,0.000l0.582,-0.871l2.036,0.000l2.325,2.323l0.000,2.613l2.327,2.324l-0.291,2.323l-0.872,1.451l-2.326,-0.581l-3.781,0.581l-1.741,2.323l-0.580,-3.485z", + "TJ" : "M669.108,120.329l-0.873,0.871l-2.906,-0.582l-0.291,1.743l2.908,-0.290l3.488,0.871l5.233,-0.291l0.579,2.324l0.874,-0.291l1.743,0.582l0.000,1.160l0.292,1.742l-2.909,0.000l-1.745,-0.290l-1.744,1.162l-1.162,0.291l-1.161,0.581l-0.873,-0.872l0.000,-2.323l-0.581,0.000l0.291,-0.871l-1.454,-0.871l-1.455,1.161l-0.290,1.161l-0.289,0.291l-1.745,0.000l-0.872,1.162l-0.872,-0.582l-2.036,0.872l-0.871,-0.290l1.744,-2.614l-0.582,-2.032l-2.033,-0.871l0.579,-1.162l2.328,0.290l1.452,-1.743l0.872,-1.741l3.488,-0.582l-0.581,1.163l0.581,0.871l-0.873,0.000z", + "TL" : "M817.647,255.359l0.580,-0.582l2.327,-0.580l1.744,-0.291l0.871,-0.290l1.164,0.290l-1.164,0.871l-2.905,1.162l-2.037,0.871l-0.290,-0.871l0.290,0.580z", + "TM" : "M642.364,132.815l-0.289,-2.323l-2.034,0.000l-3.200,-2.324l-2.325,-0.290l-2.907,-1.452l-2.034,-0.290l-1.162,0.581l-1.745,-0.291l-2.036,1.742l-2.323,0.582l-0.582,-2.033l0.289,-2.904l-2.033,-0.871l0.581,-2.033l-1.743,0.000l0.578,-2.323l2.617,0.581l2.326,-0.872l-2.033,-1.742l-0.582,-1.451l-2.328,0.581l-0.289,2.032l-0.871,-1.742l1.160,-0.871l3.199,-0.581l2.034,0.871l1.744,2.033l1.455,0.000l3.199,0.000l-0.583,-1.452l2.325,-0.871l2.325,-1.742l3.778,1.451l0.292,2.324l1.163,0.580l2.907,-0.290l0.871,0.580l1.455,2.904l2.906,1.742l2.034,1.453l2.909,1.162l3.487,1.160l0.000,1.742l-0.871,0.000l-1.164,-0.871l-0.580,1.162l-2.326,0.291l-0.583,2.323l-1.454,0.870l-2.325,0.291l-0.581,1.452l-2.034,0.291l2.617,1.162z", + "TN" : "M499.931,147.625l-1.163,-4.936l-1.745,-1.162l0.000,-0.581l-2.325,-1.742l-0.290,-2.034l1.745,-1.451l0.579,-2.323l-0.290,-2.614l0.581,-1.451l2.908,-1.163l2.034,0.291l-0.291,1.453l2.325,-0.872l0.292,0.291l-1.454,1.451l0.000,1.161l1.162,0.872l-0.580,2.324l-1.745,1.451l0.582,1.452l1.452,0.000l0.583,1.452l1.163,0.290l-0.291,2.032l-1.164,0.873l-0.872,0.870l-2.034,1.162l0.290,1.161l-0.290,1.162l1.162,-0.581z", + "TR" : "M575.509,117.135l3.777,1.161l3.199-0.291l2.323,0.291l3.489-1.451l2.906-0.291l2.615,1.452l0.292,0.872l-0.292,1.452l2.036,0.58l1.162,0.872l-1.743,0.871l0.87,2.904l-0.579,0.871l1.452,2.324l-1.452,0.581l-0.873-0.872l-3.197-0.291l-1.164,0.291l-3.196,0.581h-1.453l-3.196,0.872h-2.327l-1.454-0.581l-2.906,0.871l-0.873-0.58l-0.29,1.742l-0.581,0.58l-0.871,0.582l-0.873-1.452l0.873-0.872l-1.455,0.291l-2.325-0.871l-2.033,1.742l-4.07,0.29l-2.326-1.452h-2.906l-0.582,1.162l-2.036,0.29l-2.615-1.452h-2.906l-1.744-2.904l-2.034-1.452l1.455-2.033l-1.747-1.452l2.907-2.613h4.361l1.163-2.033l5.232,0.29l3.197-1.742l3.196-0.871h4.65L575.509,117.135zM548.764,119.167l-2.325,1.451l-0.871-1.451v-0.581l0.581-0.291l0.871-1.742l-1.452-0.581l2.907-0.871l2.324,0.29l0.291,1.162l2.615,0.872l-0.58,0.58l-3.198,0.291L548.764,119.167z", + "TT" : "M304.01,201.346l1.454,-0.291l0.581,0.000l0.000,2.033l-2.326,0.291l-0.581,-0.291l0.872,-0.582l0.000,1.160z", + "TW" : "M808.926,163.886l-1.744,4.356l-1.163,2.322l-1.452,-2.322l-0.292,-2.033l1.744,-2.614l2.325,-2.322l1.163,0.871l0.581,-1.742z", + "TZ" : "M567.077,233.58l0.582,0.289l9.883,5.517l0.291,1.742l3.780,2.615l-1.163,3.484l0.000,1.452l1.744,1.161l0.292,0.581l-0.873,1.743l0.289,0.871l-0.289,1.162l0.873,1.742l1.161,2.903l1.162,0.581l-2.323,1.452l-2.907,1.162l-1.746,0.000l-0.872,0.581l-2.036,0.289l-0.581,0.291l-3.486,-0.872l-2.036,0.292l-0.582,-3.776l-1.163,-1.161l-0.289,-0.871l-2.907,-0.581l-1.456,-0.870l-1.743,-0.291l-1.161,-0.581l-1.162,-0.581l-1.455,-3.485l-1.744,-1.452l-0.290,-1.742l0.290,-1.452l-0.581,-2.324l1.163,-0.289l0.872,-0.870l1.163,-1.454l0.582,-0.580l0.000,-0.872l-0.582,-0.871l0.000,-0.871l0.582,-0.291l0.289,-1.741l-1.163,-1.452l0.874,-0.291l3.196,0.000l-5.522,0.289z", + "UA" : "M561.265,87.806l1.160,0.000l0.584,-0.582l0.872,0.000l2.907,-0.290l1.744,1.742l-0.873,0.581l0.290,0.871l2.327,0.000l0.871,1.162l0.000,0.581l3.488,0.870l2.034,-0.290l1.745,1.162l1.454,0.000l4.070,0.870l0.290,0.873l-1.163,1.451l0.582,1.452l-0.582,0.871l-2.615,0.291l-1.452,0.871l0.000,1.161l-2.329,0.292l-1.744,0.869l-2.615,0.000l-2.323,1.162l0.289,1.743l1.161,0.581l2.907,-0.290l-0.580,1.161l-2.906,0.290l-3.781,1.742l-1.452,-0.581l0.582,-1.451l-3.198,-0.581l0.579,-0.580l2.619,-0.872l-0.874,-0.581l-4.068,-0.871l-0.292,-0.872l-2.614,0.291l-0.874,1.452l-2.325,2.033l-1.161,-0.580l-1.166,0.580l-1.452,-0.580l0.872,-0.291l0.291,-0.872l0.872,-0.871l-0.291,-0.580l0.581,-0.291l0.293,0.581l1.743,0.000l0.581,-0.290l-0.290,-0.291l0.000,-0.291l-0.873,-0.580l-0.290,-1.162l-1.164,-0.580l0.293,-0.871l-1.166,-0.872l-1.162,0.000l-2.034,-0.870l-2.033,0.290l-0.584,0.290l-1.163,0.000l-0.579,0.580l-2.036,0.291l-1.162,0.581l-1.163,-0.581l-1.745,0.000l-1.744,-0.581l-1.163,0.581l-0.291,-0.581l-1.452,-0.870l0.580,-0.872l0.872,-0.870l0.582,0.289l-0.872,-1.452l2.617,-2.033l1.452,-0.580l0.292,-0.580l-1.455,-2.614l1.163,0.000l1.746,-0.581l2.035,-0.291l2.615,0.291l3.196,0.581l2.036,0.290l1.163,0.291l1.162,-0.581l0.583,0.581l2.615,0.000l0.873,0.289l0.290,-1.451l0.870,-0.580l-2.328,0.000z", + "UG" : "M561.555,233.869l-3.196,0.000l-0.874,0.291l-1.743,0.871l-0.582,-0.290l0.000,-2.324l0.582,-0.871l0.291,-2.324l0.581,-1.161l1.163,-1.451l0.871,-0.872l0.873,-0.871l-1.162,-0.289l0.289,-3.196l1.163,-0.870l1.744,0.580l2.326,-0.580l1.744,0.000l1.745,-1.162l1.452,1.742l0.291,1.452l1.163,3.194l-1.163,2.033l-1.164,1.742l-0.872,1.161l0.000,2.906l5.522,-0.289z", + "US" : "M45.593,178.406l-0.292,0.581l-0.873-0.581l0.292-0.581l-0.582-1.162l0.29-0.291l0.292-0.29l-0.292-0.582l0.292-0.29h0.291l0.872,0.581l0.582,0.291l0.581,0.29l0.582,0.872v0.29l-1.162,0.581L45.593,178.406zM44.14,174.05l-0.872,0.29l-0.582-0.581l-0.292-0.29l0.292-0.291l0.872,0.291l0.872,0.29L44.14,174.05zM42.395,172.598l-0.29,0.291h-1.453l0.29-0.291H42.395zM39.779,172.308v0.29l-0.291-0.29h-0.873l-0.582-0.582l0.873-0.581v0.291L39.779,172.308zM35.128,170.564l-0.291,0.292l-0.872-0.582v-0.291l0.581-0.29l0.582,0.29V170.564zM212.735,95.065l0.582,1.452l0.871,0.581l1.744,0.291l2.907,0.291l2.616,0.871l2.325-0.291l3.488,0.581h0.872l2.326-0.87l2.617,1.161l2.616,1.162l2.326,0.872l2.035,0.871l0.291,0.58l0.582,0.291v0.291h0.58l0.583-0.291l0.29,0.871l0.583,0.291h0.581l0.581,0.29l-0.581,0.581l2.906,1.162l0.583,2.613l0.58,2.323l-0.872,1.742l-1.163,1.451l-0.581,0.873v0.29l0.292,0.581l0.872,0.29h0.581l3.197-1.452l2.907-0.29l3.488-1.453l0.291-0.291l-0.291-0.871l-0.582-0.581l1.454-0.291h2.616h2.616l0.872-1.162l0.291-0.29l2.907-1.743l1.163-0.581h4.07h5.232l0.292-0.871h0.872l1.162-0.58l0.872-1.162l0.873-2.033l2.035-2.032l0.872,0.581l2.035-0.581l1.163,0.87v3.775l1.744,1.452l0.582,1.161l-2.907,1.162l-2.907,0.872l-2.907,0.872l-1.453,1.742l-0.582,0.581v1.453l0.872,1.451h1.163l-0.291-0.871l0.872,0.581l-0.291,0.871l-1.744,0.291h-1.162l-2.036,0.581h-1.452l-1.454,0.291l-2.326,0.58l4.07-0.291l0.872,0.291l-4.07,0.872H270l0.291-0.29l-0.872,0.872h0.872l-0.582,2.032l-2.035,2.033l-0.291-0.58l-0.582-0.291l-0.872-0.581l0.582,1.452l0.582,0.58v0.873l-0.873,1.161l-1.453,2.033h-0.291l0.873-1.742l-1.454-1.162l-0.291-2.322l-0.58,1.16l0.58,1.743l-1.744-0.291l1.744,0.871l0.291,2.614l0.873,0.291l0.291,0.871l0.291,2.613l-1.745,2.033l-2.907,0.871l-1.743,1.742H257.5l-1.452,1.162l-0.291,0.87l-2.907,1.744l-1.744,1.451l-1.163,1.452l-0.582,2.033l0.582,1.742l0.873,2.614l1.163,1.742v1.161l1.453,3.195v2.032l-0.29,0.871l-0.582,1.742l-0.873,0.291l-1.453-0.291l-0.291-1.161l-1.163-0.582l-1.454-2.323l-1.162-2.032l-0.583-1.161l0.583-1.743l-0.583-1.742l-2.325-2.323l-0.873-0.291l-2.906,1.162h-0.581l-1.163-1.451l-1.744-0.581l-3.197,0.29l-2.326-0.29l-2.326,0.29l-0.872,0.291l0.292,0.87v1.162l0.581,0.582l-0.581,0.29l-0.872-0.581l-1.164,0.581h-2.034l-2.035-1.452l-2.325,0.291l-2.035-0.581l-1.745,0.29l-2.325,0.581l-2.325,2.033l-2.908,1.162l-1.452,1.162l-0.582,1.451v1.742v1.452l0.582,0.871h-1.163l-1.744-0.58l-2.326-0.872l-0.581-1.162l-0.582-2.033l-1.744-1.452l-0.873-1.742l-1.453-1.742l-2.034-1.162h-2.036l-1.743,2.323l-2.326-0.871l-1.454-0.871l-0.872-1.453l-0.872-1.451l-1.454-1.162l-1.454-0.871l-1.163-1.162h-4.65v1.162h-2.326h-5.232l-6.395-1.742l-4.07-1.451l0.29-0.582l-3.487,0.291l-3.198,0.291l-0.581-1.453l-1.744-1.451l-1.163-0.582l-0.291-0.58l-1.743-0.291l-0.872-0.581l-2.616-0.29l-0.582-0.582l-0.291-1.452l-2.908-2.904l-2.034-3.775v-0.582l-1.163-0.871l-2.326-2.323l-0.291-2.322l-1.454-1.453l0.582-2.322v-2.324l-0.872-2.032l0.872-2.614l0.582-2.613l0.291-2.323l-0.581-3.775l-0.873-2.323l-0.872-1.162l0.291-0.58l4.069,0.87l1.454,2.613l0.581-0.87l-0.291-2.033l-0.872-2.324h7.849h8.139h2.616h8.43h8.14h8.138h8.43h9.302h9.302h5.813v-1.161H212.735zM52.569,73.867l-2.616,1.162l-1.454-0.871l-0.581-1.162l2.616-1.162l1.454-0.29l1.744,0.29l1.163,0.871L52.569,73.867zM17.978,66.316l-1.744,0.291l-1.745-0.581l-1.744-0.582l2.907-0.581l2.035,0.291L17.978,66.316zM1.118,55.572l1.744,0.582l1.744-0.291l2.035,0.581l2.907,0.581l-0.291,0.29l-2.035,0.581l-2.326-0.87l-0.872-0.291H1.409l-0.582-0.29L1.118,55.572zM47.046,35.246l1.744,1.161l1.453-0.291h4.651l-0.291,0.582l4.36,0.58l2.617-0.29l5.813,0.871l5.232,0.29l2.326,0.291l3.488-0.291l4.36,0.581l2.907,0.581v10.164v15.681h2.616l2.616,0.872l2.035,1.162L95.3,68.93l2.906-1.452l2.616-0.871l1.454,1.451l1.744,1.162l2.616,1.162l1.744,2.033l2.908,2.903l4.65,1.742v1.743l-1.454,1.452l-1.454-1.162l-2.615-0.871l-0.583-2.323l-3.778-2.323l-1.454-2.324l-2.616-0.291h-4.361l-3.197-0.871l-5.814-2.903l-2.616-0.581l-4.651-0.872l-3.778,0.291l-5.523-1.453l-3.198-1.161l-3.197,0.581l0.581,2.033l-1.454,0.29l-3.196,0.58l-2.326,0.873l-3.198,0.581l-0.291-1.742l1.163-2.614l2.907-0.871l-0.582-0.581l-3.488,1.452l-2.035,1.742l-4.07,2.033l2.035,1.161l-2.617,2.033l-2.907,1.162l-2.616,0.871l-0.872,1.162l-4.07,1.451l-0.872,1.452l-3.198,1.162l-2.035-0.29l-2.615,0.871l-2.617,0.87l-2.326,0.872l-4.65,0.871l-0.581-0.582l2.907-1.162l2.906-0.87l2.907-1.453l3.489-0.291l1.163-1.161l3.779-1.742l0.582-0.581l2.035-0.873l0.58-2.033l1.455-1.742l-3.198,0.872l-0.872-0.582L36,70.382l-1.745-1.453l-0.872,0.872l-1.162-1.162l-2.617,0.871h-1.743l-0.292-1.453l0.581-1.162l-1.744-0.87l-3.487,0.581l-2.326-1.452l-2.035-0.581v-1.452l-2.035-1.162l1.163-1.742l2.035-1.452l1.163-1.452l2.035-0.29l2.034,0.58l2.036-1.451l2.035,0.29l2.326-0.872l-0.583-1.161l-1.743-0.582l2.034-1.162h-1.453l-2.906,0.871l-0.873,0.581l-2.325-0.581l-3.779,0.291l-4.07-0.871l-1.163-0.871l-3.487-1.742l3.778-1.162l6.105-1.451h2.325l-0.29,1.451h5.814l-2.327-1.742l-3.197-1.162l-2.034-1.162l-2.616-1.161l-3.779-0.871l1.455-1.452l4.941-0.291l3.488-1.162l0.582-1.453l2.906-1.161l2.617-0.291L36,36.116h2.616l4.07-1.452L47.046,35.246z", + "UY" : "M315.056,314.017l1.744,-0.292l2.907,2.033l0.872,0.000l2.907,1.743l2.325,1.451l1.454,2.032l-1.163,1.164l0.872,1.740l-1.453,1.742l-2.907,1.453l-2.035,-0.582l-1.454,0.291l-2.616,-1.162l-2.035,0.000l-1.453,-1.452l0.000,-1.741l0.872,-0.580l-0.291,-2.905l0.872,-2.614l-0.582,2.321z", + "UZ" : "M656.899,128.168l0.000,-1.742l-3.487,-1.160l-2.909,-1.162l-2.034,-1.453l-2.906,-1.742l-1.455,-2.904l-0.871,-0.580l-2.907,0.290l-1.163,-0.580l-0.292,-2.324l-3.778,-1.451l-2.325,1.742l-2.325,0.871l0.583,1.452l-3.199,0.000l0.000,-10.164l6.976,-1.742l0.580,0.291l4.071,2.031l2.324,0.872l2.618,2.614l3.196,-0.291l4.944,-0.290l3.196,2.032l-0.290,2.614l1.453,0.000l0.581,2.323l3.489,0.000l0.580,1.452l1.163,0.000l1.163,-2.032l3.779,-2.033l1.454,-0.291l0.872,0.291l-2.326,1.742l2.035,0.871l2.034,-0.580l3.199,1.451l-3.488,2.032l-2.326,-0.289l-0.873,0.000l-0.581,-0.871l0.581,-1.163l-3.488,0.582l-0.872,1.741l-1.452,1.743l-2.328,-0.290l-0.579,1.162l2.033,0.871l0.582,2.032l-1.744,2.614l-2.035,-0.582l1.453,0.000z", + "VE" : "M277.558,198.442l-0.290,0.871l-1.454,0.291l0.872,1.161l0.000,1.452l-1.454,1.451l1.164,2.324l1.162,-0.290l0.582,-1.743l-0.872,-1.161l0.000,-2.033l3.487,-1.161l-0.582,-1.162l1.163,-0.871l0.872,1.742l2.035,0.291l1.744,1.451l0.000,0.871l2.617,0.000l2.907,-0.289l1.452,1.161l2.326,0.290l1.455,-0.582l0.000,-0.869l3.487,0.000l3.198,-0.291l-2.326,0.871l0.872,1.451l2.326,0.000l2.034,1.454l0.291,2.323l1.453,-0.292l1.164,0.872l-2.036,1.452l-0.290,1.161l0.872,0.871l-0.582,0.581l-1.743,0.580l0.000,1.163l-0.873,0.582l2.035,2.322l0.291,0.580l-0.872,1.162l-3.198,0.871l-2.035,0.580l-0.581,0.582l-2.326,-0.582l-2.034,-0.290l-0.582,0.000l1.163,0.872l0.000,1.741l0.292,1.744l2.324,0.289l0.291,0.581l-2.035,0.871l-0.291,1.162l-1.162,0.291l-2.036,0.870l-0.580,0.582l-2.036,0.289l-1.452,-1.451l-0.872,-2.614l-0.873,-1.162l-0.872,-0.580l1.454,-1.453l-0.291,-0.580l-0.582,-0.580l-0.581,-2.033l0.000,-2.033l0.872,-0.871l0.291,-1.452l-0.872,-0.290l-1.454,0.290l-2.034,-0.290l-1.163,0.290l-2.035,-2.323l-1.453,-0.291l-3.488,0.291l-0.872,-1.162l-0.583,0.000l0.000,-0.581l0.292,-1.161l-0.292,-1.161l-0.580,-0.582l-0.291,-1.161l-1.453,-0.290l0.581,-1.452l0.582,-2.033l0.581,-1.162l1.163,-0.580l0.581,-1.452l-2.035,0.581z", + "VN" : "M771.137,171.726l-3.488,2.324l-2.326,2.614l-0.581,1.742l2.034,2.904l2.617,3.774l2.325,1.743l1.744,2.033l1.163,5.226l-0.290,4.647l-2.327,2.032l-3.195,1.741l-2.037,2.325l-3.486,2.322l-1.164,-1.740l0.872,-1.745l-2.034,-1.451l2.326,-1.162l2.906,-0.290l-1.162,-1.742l4.651,-2.033l0.289,-3.194l-0.581,-2.033l0.581,-2.614l-0.870,-2.032l-2.036,-1.742l-1.745,-2.614l-2.325,-3.194l-3.197,-1.742l0.870,-0.872l1.747,-0.580l-1.165,-2.614l-3.488,0.000l-1.161,-2.322l-1.454,-2.324l1.454,-0.580l2.034,0.000l2.615,-0.291l2.329,-1.451l1.452,0.870l2.615,0.581l-0.581,1.742l1.454,0.872l-2.615,-0.870z", + "VU" : "M935.666,276.266l-0.872,0.291l-0.874-1.163v-0.871L935.666,276.266zM933.628,271.91l0.583,2.324l-0.874-0.292h-0.58l-0.29-0.58v-2.322L933.628,271.91z", + "WS" : "M449.643,156.336l-0.292,-1.452l0.581,0.000l0.000,0.290l0.000,0.291l0.000,4.355l-9.011,-0.290l0.000,7.261l-2.615,0.000l-0.581,1.451l0.581,4.066l-11.046,0.000l-0.582,0.871l0.289,-1.162l6.107,-0.291l0.290,-0.870l1.162,-1.162l0.874,-3.775l4.069,-3.194l1.162,-3.485l0.872,0.000l0.873,-2.323l2.324,-0.291l1.165,0.581l1.161,0.000l0.872,-0.871l-1.745,0.000z", + "YE" : "M619.983,185.084l-2.034,0.872l-0.583,1.161l0.000,0.872l-2.616,1.160l-4.651,1.453l-2.326,1.742l-1.162,0.291l-0.871,-0.291l-1.744,1.161l-1.745,0.581l-2.327,0.291l-0.580,0.000l-0.581,0.871l-0.582,0.000l-0.581,0.871l-1.455,-0.290l-0.870,0.580l-1.745,-0.290l-0.873,-1.452l0.292,-1.452l-0.581,-0.871l-0.581,-2.032l-0.874,-1.163l0.583,-0.289l-0.291,-1.162l0.582,-0.581l-0.291,-1.161l1.161,-0.872l-0.289,-1.161l0.873,-1.451l1.161,0.869l0.582,-0.289l3.197,0.000l0.582,0.289l2.615,0.292l1.164,-0.292l0.580,0.873l1.163,-0.291l2.036,-2.904l2.615,-1.161l7.849,-1.162l2.325,4.645l-0.873,-1.743z", + "ZA" : "M560.392,311.403l-0.29,0.291l-1.165,1.451l-0.87,1.451l-1.453,2.034l-3.198,2.902l-2.034,1.451l-2.036,1.453l-2.906,0.871l-1.452,0.29l-0.293,0.58l-1.743-0.29l-1.161,0.581l-3.199-0.581l-1.452,0.29h-1.164l-2.906,0.872l-2.325,0.58l-1.744,0.871l-1.162,0.29l-1.163-1.161h-0.871l-1.454-1.161v0.292l-0.29-0.583v-1.741l-0.873-1.742l0.873-0.581v-2.032l-2.034-2.613l-1.165-2.323l-2.034-3.484l1.163-1.453l1.163,0.58l0.582,1.162l1.162,0.29l1.744,0.581l1.452-0.29l2.325-1.451v-10.163l0.874,0.58l1.741,2.613l-0.289,1.741l0.582,0.872l2.033-0.29l1.164-1.162l1.452-0.87l0.582-1.453l1.454-0.58l1.162,0.29l1.162,0.872h2.326l1.744-0.582l0.289-0.87l0.584-1.161l1.452-0.293l0.874-1.16l0.871-1.742l2.324-2.032l4.07-2.033h1.163l1.163,0.581l0.871-0.289l1.454,0.289l1.452,3.774l0.582,2.033l-0.29,2.903v1.162l-1.163-0.58l-0.872,0.29l-0.293,0.581l-0.87,1.161l0.292,0.871l1.452,1.451l1.744-0.29l0.581-1.161h2.034l-0.582,2.031l-0.579,2.323l-0.584,1.162L560.392,311.403zM553.416,310.531l-1.162-0.87l-1.163,0.579l-1.453,1.163l-1.454,1.742l2.036,2.032l0.871-0.291l0.581-0.869l1.454-0.292l0.58-0.871l0.873-1.451L553.416,310.531z", + "ZM" : "M563.881,256.229l1.452,1.452l0.582,2.322l-0.582,0.582l-0.290,2.322l0.290,2.323l-0.872,0.873l-0.580,2.612l1.452,0.580l-8.429,2.325l0.292,2.033l-2.036,0.289l-1.744,1.162l-0.291,0.871l-0.872,0.291l-2.616,2.322l-1.454,1.744l-0.872,0.000l-0.872,-0.291l-3.197,-0.291l-0.291,-0.291l-0.290,-0.289l-0.871,-0.582l-1.745,0.000l-2.326,0.582l-1.745,-1.744l-2.034,-2.322l0.289,-8.711l5.524,0.000l0.000,-0.873l0.292,-1.161l-0.583,-1.161l0.291,-1.452l-0.291,-0.871l1.164,0.290l0.000,0.872l1.454,-0.291l1.743,0.291l0.871,1.452l2.036,0.291l1.745,-0.873l0.581,1.452l2.325,0.291l0.872,1.162l1.163,1.451l2.033,0.000l-0.289,-2.904l-0.581,0.581l-2.035,-1.160l-0.584,-0.291l0.293,-2.904l0.580,-3.195l-0.873,-1.161l0.873,-1.742l0.873,-0.290l3.490,-0.581l1.163,0.290l1.162,0.581l1.161,0.581l1.743,0.291l-1.456,-0.870z", + "ZW" : "M559.521,292.237l-1.454,-0.289l-0.871,0.289l-1.163,-0.581l-1.163,0.000l-1.745,-1.162l-2.326,-0.579l-0.580,-1.744l0.000,-0.870l-1.455,-0.292l-2.907,-2.903l-0.870,-1.742l-0.582,-0.580l-1.163,-2.034l3.197,0.291l0.872,0.291l0.872,0.000l1.454,-1.744l2.616,-2.322l0.872,-0.291l0.291,-0.871l1.744,-1.162l2.036,-0.289l0.000,0.870l2.325,0.000l1.452,0.581l0.582,0.582l1.163,0.289l1.452,0.871l0.000,3.486l-0.582,2.032l0.000,2.033l0.293,0.870l-0.293,1.452l-0.289,0.290l-0.874,2.033l2.904,-3.195z" + + } + } + } + } + ); + + return Mapael; + +})); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/world_countries.min.js b/plugins/jquery-mapael/maps/world_countries.min.js new file mode 100644 index 0000000..65fd8db --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries.min.js @@ -0,0 +1,13 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires jQuery and Mapael + * + * Map of World by country + * + * @source http://backspace.com/mapapp/javascript_world/ + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries:{width:1e3,height:400,getCoords:function(a,b){var c=2.752,d=473.75,e=b*c+d,f=-2.753,g=231,h=a*f+g;return{x:e,y:h}},elems:{AE:"M615.622,164.177l0.582,0.000l0.000,0.580l2.324,-0.289l2.326,0.000l1.455,0.000l2.033,-1.743l2.034,-1.743l1.745,-1.742l0.583,0.871l0.291,2.324l-1.456,0.000l-0.289,1.742l0.581,0.291l-1.163,0.580l0.000,1.161l-0.873,1.162l0.000,1.162l-0.580,0.580l-8.430,-1.452l-0.872,-2.613l0.291,0.871z",AF:"M642.364,132.815l2.617,1.162l2.034,-0.291l0.581,-1.452l2.325,-0.291l1.454,-0.870l0.583,-2.323l2.326,-0.291l0.580,-1.162l1.164,0.871l0.871,0.000l1.453,0.000l2.035,0.582l0.871,0.290l2.036,-0.872l0.872,0.582l0.872,-1.162l1.745,0.000l0.289,-0.291l0.290,-1.161l1.455,-1.161l1.454,0.871l-0.291,0.871l0.581,0.000l0.000,2.323l0.873,0.872l1.161,-0.581l1.162,-0.291l1.744,-1.162l1.745,0.290l2.909,0.000l0.580,0.582l-1.743,0.290l-1.454,0.581l-2.907,0.291l-3.197,0.580l-1.454,1.161l0.581,1.162l0.289,1.452l-1.450,1.161l0.289,1.162l-0.872,0.871l-2.616,0.000l1.161,1.743l-1.742,0.580l-1.162,1.743l0.000,1.743l-0.875,0.580l-1.160,0.000l-2.036,0.290l-0.292,0.581l-2.034,0.000l-1.452,1.742l-0.291,2.323l-3.488,1.161l-2.035,-0.289l-0.581,0.580l-1.455,-0.291l-2.907,0.291l-4.649,-1.452l2.615,-2.323l-0.289,-1.742l-2.036,-0.581l-0.290,-1.743l-0.873,-2.032l1.163,-1.742l-1.163,-0.291l0.873,-2.032l-1.161,3.485z",AL:"M530.451,115.973l-0.289,0.871l0.289,1.161l1.165,0.581l0.000,0.872l-0.873,0.291l-0.292,0.869l-1.160,1.453l-0.583,-0.291l0.000,-0.580l-1.454,-0.871l-0.292,-1.452l0.292,-1.742l0.292,-0.872l-0.584,-0.580l0.000,-0.872l1.163,-1.162l0.292,0.291l0.582,0.000l0.581,0.581l0.582,0.290l-0.289,-1.162z",AM:"M593.82,118.005l3.780,-0.580l0.581,0.870l0.871,0.291l-0.289,0.872l1.452,0.871l-0.871,0.871l1.163,0.871l1.162,0.290l0.000,2.032l-0.873,0.000l-1.163,-1.451l0.000,-0.581l-1.160,0.000l-0.873,-0.581l-0.582,0.000l-1.162,-0.871l-2.036,-0.580l0.292,-1.452l0.292,0.872z",AO:"M518.825,247.227l0.582,2.032l0.871,1.453l0.581,0.87l0.874,1.452h2.033l0.873-0.581l1.452,0.581l0.582-0.871l0.581-1.451l1.744-0.291v-0.29h1.452l-0.289,0.871h3.488v1.742l0.579,1.161l-0.579,1.453l0.29,1.74l0.873,1.162v3.195l0.581-0.292h1.162l1.745-0.29h1.161l0.291,0.871l-0.291,1.452l0.583,1.161l-0.292,1.161v0.873h-5.524l-0.289,8.711l2.034,2.322l1.745,1.744l-5.232,1.161l-6.396-0.582l-2.033-1.161h-11.047l-0.581,0.291l-1.745-1.161l-1.743-0.292l-1.455,0.581l-1.452,0.581l-0.29-1.742l0.581-2.612l0.871-2.324v-1.161l0.874-2.613l0.871-1.163l1.452-1.742l0.873-1.16l0.292-2.033v-1.451l-0.874-1.162l-0.871-1.742l-0.581-1.452v-0.581l0.872-1.161l-0.872-2.613l-0.291-1.742l-1.455-1.741l0.292-0.582l1.163-0.581l0.581,0.291l1.162-0.581L518.825,247.227zM508.071,246.646l-0.874,0.291l-0.581-2.031l1.163-1.163l0.87-0.581l0.874,0.871l-0.874,0.58l-0.578,0.872V246.646z",AR:"M293.546,382.836h-2.616l-1.454-0.87h-1.745h-2.907v-6.389l1.163,1.45l1.163,2.033l3.779,1.744l3.778,0.58L293.546,382.836zM295,291.656l1.452,2.033l1.163-2.323l3.198,0.29l0.291,0.581l5.232,4.356l2.326,0.29l3.198,2.033l2.906,1.161l0.291,1.162l-2.617,4.354l2.617,0.58l3.197,0.581l2.326-0.581l2.326-2.032l0.582-2.322l1.163-0.58l1.454,1.45v2.324l-2.325,1.45l-1.745,1.163l-3.198,2.612l-3.779,3.777l-0.582,2.321l-0.872,2.613l0.291,2.905l-0.872,0.58v1.741l-0.29,1.452l3.487,2.323l-0.291,2.033l1.745,1.161l-0.291,1.162l-2.616,3.773l-4.07,1.455l-5.522,0.579l-2.907-0.29l0.582,1.451l-0.582,2.033l0.291,1.452l-1.454,0.871l-2.907,0.58l-2.616-1.161l-1.163,0.871l0.583,2.613l1.744,0.872l1.452-0.872l0.873,1.453l-2.617,0.87l-2.035,1.743l-0.582,2.613l-0.58,1.451h-2.617l-2.035,1.451l-0.873,2.033l2.617,2.032l2.615,0.582l-0.872,2.613l-3.197,1.452l-1.744,3.194l-2.616,1.161l-1.163,1.163l0.872,2.902l2.035,1.742l-1.163-0.291l-2.617-0.29l-6.685-0.58l-1.163-1.453v-2.03h-1.744l-0.873-0.873l-0.291-2.904l2.035-1.161l0.873-1.741l-0.292-1.453l1.455-2.323l0.872-3.775l-0.291-1.451l1.452-0.58l-0.29-1.162l-1.454-0.289l0.873-1.162l-1.162-1.162l-0.582-3.194l1.164-0.581l-0.582-3.193l0.582-2.904l0.872-2.613l1.453-0.87l-0.581-2.615l-0.292-2.613l2.326-1.742l-0.29-2.323l1.744-2.613v-2.613l-0.873-0.58l-1.163-4.646l1.744-2.904l-0.291-2.612l0.872-2.614l2.035-2.324l1.744-1.741l-0.872-1.163l0.582-0.87v-4.646l2.907-1.451l1.163-2.613l-0.291-0.872l2.034-2.324L295,291.656z",AT:"M520.57,98.549l-0.292,1.162l-1.453,0.000l0.582,0.581l-1.164,1.742l-0.291,0.580l-2.616,0.000l-1.162,0.582l-2.326,-0.291l-4.069,-0.580l-0.582,-0.872l-2.615,0.292l-0.291,0.580l-1.746,-0.291l-1.452,0.000l-1.162,-0.581l0.289,-0.581l0.000,-0.580l0.873,-0.291l1.452,0.871l0.292,-0.871l2.326,0.291l2.034,-0.581l1.452,0.000l0.584,0.581l0.290,-0.291l-0.290,-1.742l0.872,-0.580l1.162,-1.162l2.035,0.871l1.453,-1.162l0.871,0.000l2.326,0.581l1.163,0.000l1.455,0.581l-0.292,0.291l-0.292,-0.870z",AU:"M874.039,343.054l2.616,0.871l1.454-0.29l2.325-0.581l1.453,0.291l0.291,3.193l-0.87,0.872l-0.293,2.321l-1.162-0.579l-1.744,1.741h-0.582l-1.743-0.289l-1.745-2.324l-0.289-1.742l-1.744-2.323l0.29-1.451L874.039,343.054zM868.806,268.715l1.163,2.324l1.744-1.163l0.873,1.163l1.452,1.161l-0.289,1.161l0.58,2.324l0.291,1.45l0.873,0.29l0.579,2.323l-0.289,1.453l0.871,1.741l3.198,1.453l1.744,1.451l2.034,1.161l-0.582,0.581l1.745,1.742l0.87,2.904l1.165-0.581l1.163,1.452l0.581-0.581l0.579,2.904l2.036,1.742l1.163,1.161l2.034,2.033l0.873,2.322v1.452v1.742l1.163,2.323v2.323l-0.582,1.452l-0.581,2.323v1.742l-0.582,2.033l-1.162,2.322l-2.034,1.453l-1.163,2.031l-0.872,1.453l-0.872,2.322l-0.871,1.451l-0.873,2.033l-0.292,1.743v0.87l-1.452,1.163h-3.198l-2.326,1.159l-1.452,1.163l-1.454,1.161l-2.325-1.45l-1.743-0.293l0.289-1.45l-1.452,0.58l-2.325,1.744l-2.326-0.581l-1.743-0.582h-1.454l-2.616-0.871l-1.744-1.743l-0.582-2.032l-0.58-1.452l-1.456-1.162l-2.614-0.29l0.873-1.161l-0.581-2.033l-1.455,1.744l-2.326,0.579l1.455-1.452l0.292-1.74l1.161-1.453l-0.291-2.032l-2.324,2.612l-1.745,0.873l-0.873,2.03l-2.323-1.161l0.29-1.452l-1.744-1.741l-1.455-1.161l0.583-0.581l-3.779-1.743h-1.744l-2.616-1.45l-4.942,0.29l-3.778,0.871l-2.907,1.162l-2.615-0.292l-2.908,1.451l-2.616,0.581l-0.289,1.452l-1.163,1.161h-2.325l-1.744,0.291l-2.325-0.581l-2.036,0.29l-2.034,0.291l-1.455,1.452l-0.871-0.291l-1.452,0.871l-1.163,0.873h-2.036h-2.034l-2.906-1.744l-1.452-0.58v-1.742l1.452-0.291l0.581-0.58l-0.29-1.161l0.58-1.743l-0.29-1.741l-1.454-2.614l-0.579-1.742v-1.452l-0.873-1.743l-0.29-0.87l-1.163-1.162l-0.292-2.033l-1.454-2.323l-0.579-1.161l1.163,1.161l-0.874-2.321l1.455,0.58l0.873,1.161v-1.451l-1.454-2.033l-0.292-0.87l-0.582-0.872l0.29-1.742l0.584-0.581l0.289-1.451l-0.289-1.453l1.162-2.032l0.292,2.032l1.161-1.743l2.034-1.159l1.454-1.162l2.034-0.872l1.454-0.29l0.581,0.29l2.325-0.871l1.455-0.29l0.579-0.58l0.582-0.291h1.744l2.616-0.871l1.745-1.161l0.579-1.452l1.744-1.452v-1.162v-1.45l2.036-2.324l1.163,2.324l1.163-0.292l-0.871-1.45l0.871-1.453l1.163,0.871l0.289-2.322l1.454-1.162l0.58-1.162l1.454-0.58v-0.581l1.163,0.291l0.291-0.872l1.163-0.291l1.163-0.289l2.034,1.161l1.743,1.742h1.453l1.744,0.291l-0.581-1.742l1.454-2.032l1.163-0.873l-0.291-0.581l1.162-1.452l1.744-1.161l1.165,0.291l2.323-0.291v-1.452l-2.034-0.87l1.453-0.58l2.035,0.869l1.453,1.163l2.326,0.581l0.581-0.29l1.744,0.87l1.744-0.87l0.871,0.29l0.872-0.581l1.164,1.451l-0.873,1.453l-0.872,1.16h-0.873l0.292,1.162l-0.873,1.452l-1.163,1.161l0.292,0.872l2.325,1.452l2.034,0.87l1.454,0.871l2.034,1.742h0.581l1.452,0.582l0.582,0.87l2.617,1.161l1.745-1.161l0.581-1.452l0.581-1.161l0.29-1.452l0.873-2.322l-0.291-1.161v-0.872l-0.291-1.452l0.291-2.322l0.581-0.29l-0.29-1.163l0.581-1.451l0.582-1.452v-0.872l1.163-0.869l0.58,1.45l0.291,1.743l0.581,0.291l0.291,1.16l0.871,1.163l0.292,1.74L868.806,268.715z",AZ:"M597.6,121.78l0.873,0.581h1.16v0.581l1.163,1.451l-2.033-0.29l-1.163-1.453l-0.582-0.871H597.6zM604.285,117.715h1.165l0.29-0.581l1.744-1.162l1.452,1.452l1.453,2.033h1.165l0.87,0.871h-2.325l-0.292,2.322l-0.579,0.873l-0.873,0.58v1.452l-0.582,0.291l-1.743-1.453l0.871-1.451l-0.871-0.871l-0.872,0.291l-3.488,2.032v-2.032l-1.162-0.291l-1.163-0.871l0.871-0.871l-1.452-0.871l0.289-0.871l-0.871-0.291l-0.581-0.871l0.581-0.29l2.034,0.581l1.454,0.29l0.582-0.29l-1.455-1.453l0.582-0.29h0.873L604.285,117.715z",BA:"M526.091,107.552l0.871,0.000l-0.581,1.161l1.455,1.162l-0.582,1.161l-0.581,0.291l-0.582,0.290l-0.872,0.581l-0.291,1.451l-2.614,-1.161l-0.874,-1.161l-1.162,-0.581l-1.163,-0.871l-0.579,-0.872l-1.454,-1.451l0.581,-0.872l1.162,0.581l0.582,-0.581l1.163,0.000l2.325,0.291l2.033,0.000l-1.163,-0.581z",BD:"M728.989,170.275l-0.292,2.033l-0.871,-0.291l0.291,2.033l-0.872,-1.452l-0.292,-1.452l-0.290,-1.162l-1.163,-1.742l-2.615,0.000l0.289,1.161l-0.873,1.453l-1.161,-0.581l-0.581,0.581l-0.582,-0.292l-1.164,-0.289l-0.290,-2.324l-1.160,-2.032l0.579,-1.742l-1.744,-0.582l0.582,-1.160l1.743,-0.873l-2.034,-1.451l1.163,-2.032l2.034,1.451l1.454,0.000l0.291,2.032l2.616,0.291l2.327,0.000l1.743,0.291l-1.454,2.324l-1.163,0.289l-0.872,1.452l1.454,1.452l0.581,-1.742l0.872,0.000l-1.454,-4.356z",BE:"M482.78,89.837l2.034,0.000l2.617,-0.580l1.745,1.451l1.452,0.582l-0.290,1.742l-0.583,0.291l-0.290,1.451l-2.615,-1.161l-1.162,0.000l-2.036,-1.162l-1.163,-1.161l-1.452,0.000l-0.293,-0.872l-2.036,0.581z",BF:"M465.919,204.54l-1.744,-0.872l-1.452,0.291l-0.872,0.581l-1.164,-0.581l-0.579,-0.871l-1.165,-0.582l-0.290,-1.741l0.873,-1.161l0.000,-0.871l2.034,-2.324l0.291,-1.742l0.872,-0.871l1.452,0.581l1.163,-0.581l0.291,-0.872l2.035,-1.161l0.582,-0.871l2.617,-1.162l1.452,-0.290l0.582,0.581l2.035,0.000l-0.292,1.161l0.292,1.162l1.453,2.033l0.291,1.161l3.198,0.581l-0.291,2.032l-0.583,0.872l-1.161,0.290l-0.584,1.162l-0.870,0.290l-2.616,0.000l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-4.942,0.000l0.000,1.452l-0.290,-2.323z",BG:"M536.265,109.294l0.581,1.162l1.164,-0.291l2.035,0.581l4.071,0.000l1.452,-0.581l3.196,-0.581l2.035,0.872l1.454,0.290l-1.163,1.161l-1.163,2.033l0.872,1.452l-2.324,-0.290l-2.907,0.871l0.000,1.452l-2.326,0.000l-2.034,-0.872l-2.326,0.872l-2.036,-0.290l0.000,-1.743l-1.452,-0.871l0.290,-0.292l-0.290,-0.289l0.580,-0.871l1.164,-0.871l-1.454,-1.162l-0.290,-1.161l-0.871,0.581z",BI:"M554.579,243.451l-0.290,-3.484l-0.583,-1.161l1.743,0.290l0.874,-1.743l1.454,0.291l0.000,0.871l0.582,0.871l0.000,0.872l-0.582,0.580l-1.163,1.454l-0.872,0.870l1.163,-0.289z",BJ:"M481.037,213.833l-2.037,0.290l-0.872,-2.033l0.290,-6.388l-0.579,-0.289l-0.291,-1.454l-0.872,-0.871l-0.873,-0.871l0.582,-1.452l0.870,-0.290l0.584,-1.162l1.161,-0.290l0.583,-0.872l1.161,-0.871l0.874,0.000l2.034,1.453l0.000,1.160l0.580,1.453l-0.580,1.160l0.291,0.873l-1.454,1.452l-0.582,0.871l-0.581,1.743l0.000,1.741l0.289,-4.647z",BN:"M787.998,218.479l1.163,-0.872l2.324,-1.741l0.000,1.451l-0.291,1.743l-1.163,0.000l-0.580,0.870l1.453,1.451z",BO:"M300.812,291.656l-3.197,-0.290l-1.163,2.323l-1.452,-2.033l-3.781,-0.582l-2.033,2.324l-2.036,0.582l-1.163,-4.065l-1.453,-2.906l0.872,-2.612l-1.453,-1.163l-0.291,-2.031l-1.454,-2.033l1.745,-2.904l-1.163,-2.324l0.582,-0.869l-0.582,-0.872l1.163,-1.452l0.000,-2.323l0.290,-2.033l0.582,-0.873l-2.326,-4.355l2.035,0.000l1.163,0.000l0.872,-0.870l2.326,-0.872l1.453,-1.162l3.487,-0.580l-0.289,2.031l0.289,1.163l0.000,1.743l2.909,2.612l3.196,0.290l0.872,1.162l2.035,0.581l1.163,0.872l1.744,0.000l1.453,0.580l0.000,1.743l0.582,0.871l0.000,1.162l-0.582,0.000l0.872,3.195l5.233,0.000l-0.291,1.740l0.291,0.873l1.453,0.871l0.872,1.742l-0.581,2.032l-0.873,1.453l0.291,1.451l-0.872,0.580l0.000,-0.871l-2.615,-1.451l-2.616,0.000l-4.652,0.871l-1.453,2.324l0.000,1.451l-1.163,3.485l0.291,0.581z",BR:"M315.056,314.017l3.778,-3.777l3.198,-2.613l1.745,-1.163l2.325,-1.450l0.000,-2.324l-1.454,-1.450l-1.162,0.580l0.580,-1.742l0.292,-1.454l0.000,-1.741l-1.163,-0.290l-0.872,0.290l-1.163,0.000l-0.290,-1.162l-0.291,-2.613l-0.291,-0.581l-2.035,-0.871l-1.163,0.581l-2.907,-0.581l0.291,-3.776l-0.872,-1.452l0.872,-0.580l-0.291,-1.451l0.873,-1.453l0.581,-2.032l-0.872,-1.742l-1.453,-0.871l-0.291,-0.873l0.291,-1.740l-5.233,0.000l-0.872,-3.195l0.582,0.000l0.000,-1.162l-0.582,-0.871l0.000,-1.743l-1.453,-0.580l-1.744,0.000l-1.163,-0.872l-2.035,-0.581l-0.872,-1.162l-3.196,-0.290l-2.909,-2.612l0.000,-1.743l-0.289,-1.163l0.289,-2.031l-3.487,0.580l-1.453,1.162l-2.326,0.872l-0.872,0.870l-1.163,0.000l-2.035,0.000l-1.744,0.292l-1.163,-0.292l0.292,-4.066l-2.326,1.453l-2.616,0.000l-0.872,-1.453l-1.744,0.000l0.581,-1.451l-1.744,-1.451l-1.163,-2.614l0.872,-0.581l0.000,-1.162l1.744,-0.581l-0.290,-1.451l0.581,-1.162l0.291,-1.161l3.198,-2.034l2.033,-0.289l0.583,-0.580l2.324,0.290l1.163,-7.551l0.291,-1.161l-0.582,-1.743l-1.162,-0.871l0.000,-2.033l1.453,-0.581l0.582,0.290l0.291,-0.871l-1.745,-0.290l0.000,-1.742l5.233,0.000l0.871,-0.871l0.873,0.871l0.582,1.452l0.581,-0.290l1.452,1.451l2.036,-0.289l0.580,-0.582l2.036,-0.870l1.162,-0.291l0.291,-1.162l2.035,-0.871l-0.291,-0.581l-2.324,-0.289l-0.292,-1.744l0.000,-1.741l-1.163,-0.872l0.582,0.000l2.034,0.290l2.326,0.582l0.581,-0.582l2.035,-0.580l3.198,-0.871l0.872,-1.162l-0.291,-0.580l1.453,-0.291l0.582,0.582l-0.290,1.451l0.872,0.290l0.580,1.161l-0.580,1.162l-0.582,2.324l0.582,1.451l0.291,1.162l1.743,1.162l1.454,0.290l0.290,-0.581l0.872,0.000l1.163,-0.581l0.871,-0.871l1.454,0.290l0.872,0.000l1.454,0.291l0.290,-0.581l-0.581,-0.581l0.291,-0.870l1.163,0.289l1.162,-0.289l1.745,0.581l1.161,0.581l0.873,-0.873l0.582,0.292l0.290,0.581l1.453,0.000l0.872,-1.162l0.872,-2.034l1.745,-2.323l0.872,-0.290l0.581,1.452l1.744,4.936l1.453,0.291l0.000,2.032l-2.034,2.323l0.872,0.872l4.942,0.290l0.000,2.904l2.034,-2.033l3.489,1.163l4.650,1.741l1.163,1.453l-0.290,1.451l3.197,-0.872l5.232,1.453l4.070,0.000l4.069,2.322l3.780,3.196l2.034,0.582l2.326,0.289l0.872,0.870l1.162,3.485l0.291,1.452l-1.162,4.646l-1.163,1.742l-4.070,3.775l-1.744,3.194l-2.035,2.323l-0.581,0.290l-0.873,2.034l0.291,4.936l-0.872,4.357l-0.290,1.742l-0.873,1.162l-0.581,3.774l-2.615,3.483l-0.583,2.906l-2.034,1.161l-0.872,1.453l-2.907,0.000l-4.360,1.160l-1.745,1.162l-3.197,0.871l-3.198,2.324l-2.325,2.613l-0.581,2.032l0.581,1.452l-0.581,2.904l-0.581,1.163l-2.035,1.742l-2.907,4.645l-2.325,2.323l-2.036,1.162l-1.162,2.615l-1.744,1.740l-0.872,-1.740l1.163,-1.164l-1.454,-2.032l-2.325,-1.451l-2.907,-1.743l-0.872,0.000l-2.907,-2.033l1.744,-0.292z",BS:"M260.408,165.628h-0.872l-0.581-1.452l-1.163-0.871l0.872-1.743l0.581,0.291l1.164,2.033V165.628zM259.536,157.788l-2.907,0.581l-0.291-1.162l1.454-0.29l1.744,0.29V157.788zM261.86,157.788l-0.58,2.032l-0.583-0.29l0.291-1.451l-1.453-1.162v-0.291L261.86,157.788z",BT:"M726.082,154.594l1.163,0.871l0.000,1.742l-2.326,0.000l-2.326,-0.290l-1.744,0.581l-2.615,-1.162l0.000,-0.581l1.743,-2.033l1.454,-0.580l2.035,0.580l1.453,0.000l-1.163,-0.872z",BW:"M544.405,281.784l0.582,0.580l0.870,1.742l2.907,2.903l1.455,0.292l0.000,0.870l0.580,1.744l2.326,0.579l1.745,1.162l-4.071,2.033l-2.324,2.032l-0.871,1.742l-0.874,1.161l-1.452,0.293l-0.584,1.161l-0.289,0.870l-1.744,0.582l-2.327,0.000l-1.162,-0.872l-1.162,-0.290l-1.454,0.580l-0.582,1.453l-1.452,0.870l-1.164,1.162l-2.033,0.290l-0.582,-0.872l0.289,-1.741l-1.741,-2.613l-0.874,-0.580l0.000,-7.843l2.908,-0.289l0.000,-9.582l2.033,-0.291l4.361,-0.871l0.871,1.162l1.744,-1.162l0.874,0.000l1.743,-0.582l0.291,0.291l-1.163,-2.034z",BY:"M538.301,82.579l2.907,0.000l2.908,-0.872l0.578,-1.452l2.326,-1.162l-0.290,-1.160l1.745,-0.291l2.906,-1.162l2.908,0.581l0.290,0.872l1.454,-0.291l2.615,0.581l0.289,1.161l-0.578,0.871l1.743,1.743l1.163,0.581l-0.292,0.290l2.036,0.580l0.872,0.872l-1.163,0.580l-2.326,-0.290l-0.581,0.290l0.871,0.872l0.583,2.033l-2.328,0.000l-0.870,0.580l-0.290,1.451l-0.873,-0.289l-2.615,0.000l-0.583,-0.581l-1.162,0.581l-1.163,-0.291l-2.036,-0.290l-3.196,-0.581l-2.615,-0.291l-2.035,0.291l-1.746,0.581l-1.163,0.000l0.000,-1.161l-0.871,-1.162l1.453,-0.582l0.000,-1.161l-0.582,-0.870l0.289,1.452z",BZ:"M228.433,181.89l0.000,-0.290l0.290,-0.290l0.582,0.580l0.872,-1.742l0.580,0.000l0.000,0.290l0.581,0.000l-0.289,0.872l-0.292,1.162l0.292,0.289l-0.292,1.162l0.000,0.291l-0.290,1.161l-0.582,0.872l-0.291,0.000l-0.581,0.870l-0.872,0.000l0.292,-2.903l0.000,2.324z",CA:"M298.487,102.905l2.035,0.291h2.617l-1.454,1.162l-0.872,0.29l-3.488-1.162l-0.873-1.161l1.163-0.872L298.487,102.905zM303.719,95.937h-1.454l-3.488-0.872l-2.616-1.162l0.872-0.291l3.779,0.581l2.616,1.162L303.719,95.937zM133.669,97.679l-1.163,0.291l-4.651-1.162l-0.872-1.162l-2.324-0.871l-0.582-0.871l-2.907-0.581l-0.872-1.452V91.29l2.907,0.581l1.744,0.58l2.617,0.291l0.872,0.872l1.454,1.162l2.615,1.162L133.669,97.679zM319.125,91.581l-1.744,2.323l1.744-0.871l2.035,0.581l-1.163,0.871l2.617,0.873l1.163-0.582l2.906,0.871l-0.872,1.742l1.744-0.291l0.292,1.452l0.872,1.742l-1.164,2.323h-1.162l-1.744-0.29l0.582-2.323l-0.872-0.29l-3.198,2.323h-1.453l1.744-1.452l-2.617-0.581h-2.907h-5.232l-0.58-0.872l1.744-0.871l-1.164-0.871l2.326-1.451l2.906-4.356l1.745-1.743l2.325-0.87h1.163l-0.582,0.87L319.125,91.581zM108.38,82.289l2.616-0.291l-0.58,3.195l2.324,2.323h-1.163l-1.744-1.453l-0.871-1.161l-1.454-0.871l-0.582-1.162l0.291-0.871L108.38,82.289zM255.466,59.928l-0.872,1.453l-1.453-0.291l-0.582-0.58v-0.291l1.163-0.872h1.163L255.466,59.928zM248.198,58.477l-3.197,1.451h-1.744l-0.581-0.581l2.034-1.452h3.779L248.198,58.477zM239.478,50.346l0.291,1.161l1.454-0.29l1.744,0.581l2.906,1.162l3.198,0.871l0.29,1.162l2.035-0.29l1.745,0.871l-2.326,0.872l-4.361-0.581l-1.453-1.161l-2.617,1.452l-4.069,1.451l-0.872-1.742l-3.779,0.291l2.325-1.162l0.291-2.323l1.163-2.613L239.478,50.346zM265.058,46.28l-3.198,0.291l-0.58-1.453l1.162-1.451l2.326-0.581l2.326,0.871v1.161l-0.291,0.292L265.058,46.28zM210.41,40.763l-1.744,1.162l-3.488-0.872l-2.325,0.291l-3.779-1.162l2.325-0.872l2.035-1.162l2.907,0.581l1.744,0.581l0.581,0.581L210.41,40.763zM224.653,39.891v2.614l3.488-2.032l3.197,1.742l-0.581,2.033l2.616,2.032l2.907-2.032l2.035-2.324v-3.195l4.069,0.292l4.07,0.29l3.488,1.452l0.291,1.452l-2.035,1.452l1.744,1.451l-0.291,1.162l-5.231,2.033l-3.779,0.291l-2.907-0.581l-0.872,1.161l-2.617,2.323l-0.872,1.453l-3.196,1.743l-3.78,0.29l-2.325,1.162l-0.292,1.741l-3.197,0.291l-3.198,2.324l-2.907,2.904l-1.162,2.323l-0.292,3.194l4.07,0.291l1.454,2.614l1.163,2.033l3.779-0.582l5.232,1.453l2.616,0.871l2.035,1.452l3.489,0.582l2.907,1.162l4.651,0.29l2.906,0.291l-0.581,2.323l0.872,2.614l2.035,3.194l4.07,2.613l2.326-0.871l1.452-2.903l-1.452-4.357l-2.035-1.452l4.36-1.162l3.197-2.033l1.455-1.742l-0.292-2.032l-1.744-2.324L257.5,69.22l3.489-2.904l-1.162-2.323l-1.163-4.355l2.034-0.582l4.651,0.582l2.907,0.29l2.326-0.581l2.616,0.872l3.198,1.451l0.872,1.162l4.941,0.291v2.323l0.872,3.484l2.616,0.291l1.745,1.742l4.07-1.742l2.616-2.904l1.744-1.161l2.325,2.323l3.488,3.484l3.198,3.195l-1.163,1.742l3.487,1.742l2.616,1.451l4.36,0.872l1.744,0.871l1.163,2.324l2.035,0.29l1.163,0.872l0.291,3.194l-2.035,1.161l-2.035,0.872l-4.65,0.871l-3.198,2.323l-4.942,0.582l-5.814-0.582h-4.07h-2.906l-2.326,2.033l-3.488,1.162l-3.779,3.775l-3.197,2.613l2.325-0.58l4.36-3.486l5.814-2.322l4.069-0.291l2.326,1.162l-2.616,2.032l0.872,2.905l0.872,2.032l3.779,1.452l4.361-0.581l2.906-2.903l0.292,2.032l1.744,0.871l-3.489,1.742l-6.104,1.743l-2.616,1.161l-3.198,2.033l-2.034-0.291l-0.29-2.323l4.94-2.324h-4.36l-3.197,0.291l-1.744-1.452v-3.775l-1.163-0.87l-2.035,0.581l-0.872-0.581l-2.035,2.032l-0.873,2.033l-0.872,1.162l-1.162,0.58h-0.872l-0.292,0.871h-5.232h-4.07l-1.163,0.581l-2.907,1.743l-0.291,0.29l-0.872,1.162h-2.616h-2.616l-1.454,0.291l0.582,0.581l0.291,0.871l-0.291,0.291l-3.488,1.453l-2.907,0.29l-3.197,1.452h-0.581l-0.872-0.29l-0.292-0.581v-0.29l0.581-0.873l1.163-1.451l0.872-1.742l-0.58-2.323l-0.583-2.613l-2.906-1.162l0.581-0.581l-0.581-0.29h-0.581l-0.583-0.291l-0.29-0.871l-0.583,0.291h-0.58v-0.291l-0.582-0.291l-0.291-0.58l-2.035-0.871l-2.326-0.872l-2.616-1.162l-2.617-1.161l-2.326,0.87h-0.872l-3.488-0.581l-2.325,0.291l-2.616-0.871l-2.907-0.291l-1.744-0.291l-0.871-0.581l-0.582-1.452h-0.873v1.161h-5.813h-9.302h-9.302h-8.43h-8.138h-8.14h-8.43h-2.616h-8.139h-7.849h-0.582l-5.231-2.613l-2.036-1.452l-4.941-0.871l-1.454-2.614l0.291-1.742l-3.488-1.161l-0.291-2.033l-3.488-2.033v-1.452l1.454-1.452v-1.743l-4.65-1.742l-2.908-2.903l-1.744-2.033l-2.616-1.162l-1.744-1.162l-1.454-1.451l-2.616,0.871L95.3,68.93l-2.326-1.741l-2.035-1.162l-2.616-0.872h-2.616V49.475V39.311l5.232,0.581l4.069,1.453h2.907l2.616-0.871l3.198-0.871l4.07,0.29l4.069-1.162l4.651-0.87l1.744,1.162l2.035-0.581l0.872-1.452l1.744,0.29l4.651,2.613l3.778-1.742l0.292,2.033l3.487-0.581l0.872-0.872l3.487,0.292l4.071,1.161l6.395,0.871l3.779,0.582l2.907-0.291l3.488,1.452l-3.779,1.453l4.94,0.581l7.559-0.291l2.325-0.581l2.906,1.742l2.908-1.451l-2.616-1.162l1.744-0.871l3.196-0.291l2.326-0.29l2.035,0.871l2.907,1.452l3.197-0.291l4.65,1.162l4.361-0.291h4.07l-0.291-1.742l2.326-0.581l4.36,1.162v2.614l1.744-2.324h2.035l1.454-2.614l-3.198-1.742l-3.196-1.162l0.291-2.903l3.198-2.033l3.778,0.29l2.617,1.453l3.779,2.904l-2.326,1.451L224.653,39.891zM159.54,29.728l-1.453,1.453l6.104-0.871l3.779,1.451l3.197-1.451l2.617,0.871l2.035,2.613l1.454-1.161l-1.745-2.615l2.327-0.581l2.615,0.581l3.198,1.162l1.744,2.613l0.872,2.033l4.651,1.162l4.941,1.452l-0.29,1.162l-4.651,0.29l1.744,0.872l-0.873,1.162l-4.941-0.581l-4.651-0.581h-3.198l-5.231,1.162l-6.977,0.291l-4.941,0.29l-1.454-1.452l-3.778-0.58l-2.617,0.29l-3.198-2.323l1.744-0.291l4.36-0.29h3.778l3.488-0.291l-5.233-0.871l-5.813,0.291h-4.069l-1.454-1.162l6.396-0.871h-4.07l-4.941-0.872l2.325-2.033l2.036-1.162l7.267-1.452L159.54,29.728zM185.993,29.147l-2.326,1.742l-4.361-2.032l1.163-0.291h3.488L185.993,29.147zM263.604,30.018l0.291,0.582h-2.907h-2.906l-3.197,0.29l-0.582-0.29l-3.198-1.452l0.291-0.872l1.163-0.291l6.396,0.291L263.604,30.018zM235.409,29.728l2.325,1.743l2.326-2.323l6.977-0.872l4.941,2.614l-0.582,2.033l5.523-0.871l2.616-1.162l6.104,1.451l3.78,1.162l0.29,1.162l5.233-0.581l2.906,1.742l6.687,1.162l2.326,1.161l2.616,2.614l-5.233,1.162l6.687,1.742l4.359,0.582l3.779,2.613l4.36,0.29l-0.872,1.743l-4.651,3.194l-3.488-1.162l-4.36-2.613l-3.488,0.291l-0.291,1.742l2.907,1.452l3.778,1.452l0.872,0.581l2.036,2.904l-1.164,1.743l-3.488-0.582l-6.685-2.323l3.779,2.323l2.906,1.743l0.292,0.871l-7.268-0.871l-6.104-1.743l-3.198-1.161l0.872-0.871l-4.07-1.451l-4.07-1.453v0.871l-7.848,0.582L257.5,53.25l1.745-2.033h5.232l5.814-0.291l-1.163-0.871l1.163-1.452l3.488-2.613l-0.872-1.162l-0.873-1.162l-4.36-1.162l-5.522-1.161l1.743-0.581l-2.907-1.742h-2.325l-2.326-1.162l-1.453,0.87l-4.942,0.292l-9.883-0.581l-5.814-0.581l-4.651-0.582l-2.325-0.871l2.908-1.451h-3.78l-0.872-2.615l2.036-2.613l2.906-0.87l6.977-0.872L235.409,29.728zM197.62,27.985l3.198,0.582l4.942-0.582l0.582,0.872l-2.617,1.452l4.361,1.162l-0.582,2.323l-4.361,1.162l-2.907-0.291l-1.744-0.871l-6.976-2.323l0.29-0.871l5.523,0.29l-3.196-1.742L197.62,27.985zM217.096,30.89l-2.907,2.033h-3.197l-1.454-2.613v-1.452l1.454-1.162l2.616-0.581h5.814l5.232,0.871l-4.069,2.324L217.096,30.89zM142.099,34.665l-7.267,1.162l-1.453-1.162l-6.396-1.452l1.455-1.162l1.743-2.033l2.326-1.742l-2.615-1.742l9.301-0.29l4.07,0.581h6.976l2.616,0.871l2.907,1.162l-3.488,0.87l-6.686,1.743l-3.488,2.032V34.665zM216.224,24.792l-1.744,1.162l-3.778-0.291l-3.489-0.871l1.453-1.162l4.07-0.58l2.326,0.871L216.224,24.792zM202.562,19.855l2.035,1.452l0.291,1.452l-1.454,2.033l-4.36,0.291l-2.908-0.582v-1.452h-4.65v-2.033h2.906l4.07-0.871l4.07,0.291V19.855zM175.819,21.307l1.163,1.162l2.324-0.582l2.907,0.291l0.582,1.161l-1.745,1.453l-9.301,0.291l-6.977,1.162h-4.07l-0.291-0.873l5.523-1.16l-12.208,0.29l-4.07-0.29l3.779-2.904l2.616-0.581l7.848,0.871l4.942,1.453l4.651,0.29l-3.779-2.613l2.326-0.871l2.907,0.29L175.819,21.307zM213.026,18.984l3.198,0.872h5.523l2.326,0.871l-0.582,1.161l2.906,0.582l1.744,0.58h3.779l4.069,0.29l4.361-0.58l5.522-0.29l4.651,0.29l2.907,0.871l0.582,1.162l-1.744,0.871l-4.07,0.582l-3.488-0.291l-7.848,0.291h-5.813l-4.36-0.291l-7.268-0.871l-0.872-1.453l-0.582-1.451l-2.617-1.162l-5.814-0.291l-3.196-0.871l1.163-1.162L213.026,18.984zM154.018,17.532l-0.582,2.033l-2.035,0.871l-2.616,0.29l-4.941,1.161l-4.65,0.291l-3.488-0.582l4.651-2.032l5.523-1.742h4.36L154.018,17.532zM215.351,17.823h-1.163l-5.231-0.291l-0.582-0.581h5.522l1.744,0.581L215.351,17.823zM170.586,17.243l-5.232,0.87l-4.071-0.87l2.326-0.873l3.779-0.29l4.07,0.29L170.586,17.243zM172.04,14.919l-3.488,0.291H163.9v-0.291l2.907-0.872l1.453,0.29L172.04,14.919zM210.12,16.37l-4.07,0.581l-2.326-0.87l-1.163-0.871l-0.291-1.162h3.488l1.744,0.29l3.198,0.872L210.12,16.37zM198.201,15.499l1.163,1.162l-4.361-0.291l-4.65-0.871h-6.104l2.616-0.871l-3.198-0.581l-0.291-1.162l5.524,0.291l7.266,1.161L198.201,15.499zM234.246,12.015l3.198,0.871l-3.779,0.582l-4.942,2.322h-4.942l-5.813-0.291l-2.907-1.162v-0.87l2.325-0.872h-4.941l-3.198-0.872l-1.744-1.162l2.034-1.161l1.744-0.871l2.907-0.291l-1.163-0.581l6.395-0.29l3.489,1.452l4.651,0.871l4.36,0.29L234.246,12.015zM285.116,2.432l7.558,0.29l5.813,0.291l4.942,0.58v0.873l-6.685,1.161l-6.687,0.581l-2.616,0.582h6.104L287.15,8.53l-4.651,0.581l-4.651,2.324l-5.813,0.58l-1.744,0.581l-8.139,0.291l3.778,0.291l-2.035,0.58l2.326,1.162l-2.616,1.162l-4.36,0.581l-1.162,1.162l-3.779,0.871l0.291,0.581h4.65v0.581l-7.267,1.741l-7.268-0.871l-7.848,0.291l-4.361-0.291h-4.941l-0.581-1.452l5.231-0.581l-1.454-2.033h1.744l7.268,1.162l-3.779-1.742l-4.36-0.582l2.326-1.162l4.651-0.581l0.872-0.871l-3.779-1.162l-1.163-1.451h7.558l2.034,0.29l4.361-0.87l-6.105-0.291h-9.883L227.85,8.53l-2.325-1.162l-3.197-0.581l-0.582-1.162l4.07-0.291l3.197-0.29l5.232-0.291l4.07-1.162l3.488,0.291l2.906,0.582l2.327-1.453l3.487-0.291l4.942-0.29l8.429-0.291l1.454,0.291l7.849-0.291h6.104L285.116,2.432z",CD:"M558.648,221.382l-0.289,3.196l1.162,0.289l-0.873,0.871l-0.871,0.872l-1.163,1.451l-0.581,1.161l-0.291,2.324l-0.582,0.871l0.000,2.324l-0.871,0.580l0.000,1.742l-0.290,0.290l-0.293,1.453l0.583,1.161l0.290,3.484l0.581,2.324l-0.290,1.452l0.290,1.742l1.744,1.452l1.455,3.485l-1.163,-0.290l-3.490,0.581l-0.873,0.290l-0.873,1.742l0.873,1.161l-0.580,3.195l-0.293,2.904l0.584,0.291l2.035,1.160l0.581,-0.581l0.289,2.904l-2.033,0.000l-1.163,-1.451l-0.872,-1.162l-2.325,-0.291l-0.581,-1.452l-1.745,0.873l-2.036,-0.291l-0.871,-1.452l-1.743,-0.291l-1.454,0.291l0.000,-0.872l-1.164,-0.290l-1.161,0.000l-1.745,0.290l-1.162,0.000l-0.581,0.292l0.000,-3.196l-0.873,-1.162l-0.290,-1.740l0.579,-1.453l-0.579,-1.161l0.000,-1.743l-3.488,0.000l0.289,-0.871l-1.452,0.000l0.000,0.290l-1.745,0.291l-0.581,1.452l-0.582,0.871l-1.452,-0.581l-0.873,0.581l-2.033,0.000l-0.874,-1.452l-0.581,-0.871l-0.871,-1.453l-0.582,-2.032l-8.140,-0.290l-1.162,0.581l-0.581,-0.291l-1.163,0.581l-0.582,-0.871l0.874,-0.291l0.000,-1.161l0.578,-0.872l0.874,-0.580l0.871,0.291l0.873,-0.873l1.452,0.000l0.292,0.582l0.871,0.580l1.744,-1.741l1.456,-1.454l0.870,-0.870l-0.289,-2.033l1.162,-2.903l1.453,-1.162l1.746,-1.452l0.290,-0.871l0.000,-1.162l0.581,-0.871l-0.292,-1.451l0.292,-2.614l0.579,-1.451l0.874,-1.744l0.291,-1.452l0.289,-2.032l0.874,-1.452l1.452,-0.870l2.326,0.870l1.745,1.162l2.033,0.290l2.036,0.580l0.871,-1.742l0.291,-0.290l1.454,0.290l2.907,-1.160l1.163,0.579l0.871,-0.290l0.291,-0.580l1.163,-0.291l2.034,0.291l1.744,0.000l0.873,-0.291l1.743,2.323l1.161,0.291l0.873,-0.291l1.166,0.000l1.450,-0.581l0.874,1.162l-2.325,-2.032z",CF:"M515.918,210.638l2.325,-0.290l0.293,-0.871l0.579,0.291l0.582,0.580l3.488,-1.162l1.163,-1.161l1.454,-0.872l-0.292,-0.870l0.871,-0.291l2.618,0.291l2.617,-1.452l2.034,-2.905l1.452,-1.161l1.744,-0.581l0.292,1.162l1.452,1.742l0.000,1.162l-0.289,1.163l0.000,0.870l0.871,0.870l2.327,1.162l1.452,1.162l0.000,0.871l1.743,1.452l1.163,1.161l0.873,1.743l2.034,0.871l0.292,0.871l-0.873,0.291l-1.744,0.000l-2.034,-0.291l-1.163,0.291l-0.291,0.580l-0.871,0.290l-1.163,-0.579l-2.907,1.160l-1.454,-0.290l-0.291,0.290l-0.871,1.742l-2.036,-0.580l-2.033,-0.290l-1.745,-1.162l-2.326,-0.870l-1.452,0.870l-0.874,1.452l-0.289,2.032l-1.744,-0.290l-2.036,-0.290l-1.452,1.451l-1.455,2.325l-0.289,-0.581l-0.292,-1.453l-1.163,-0.872l-1.161,-1.452l0.000,-0.870l-1.454,-1.452l0.289,-0.870l-0.289,-1.162l0.289,-2.033l0.581,-0.581l-1.455,2.614z",CG:"M509.523,244.033l-0.874,-0.871l-0.870,0.581l-1.163,1.163l-2.325,-2.906l2.035,-1.742l-0.872,-1.743l0.872,-0.580l1.745,-0.291l0.289,-1.451l1.454,1.451l2.616,0.000l0.581,-1.162l0.582,-1.741l-0.291,-2.324l-1.454,-1.452l1.163,-3.194l-0.581,-0.580l-2.036,0.000l-0.871,-1.162l0.291,-1.451l3.488,0.289l2.034,0.581l2.327,0.871l0.289,-1.741l1.455,-2.325l1.452,-1.451l2.036,0.290l1.744,0.290l-0.291,1.452l-0.874,1.744l-0.579,1.451l-0.292,2.614l0.292,1.451l-0.581,0.871l0.000,1.162l-0.290,0.871l-1.746,1.452l-1.453,1.162l-1.162,2.903l0.289,2.033l-0.870,0.870l-1.456,1.454l-1.744,1.741l-0.871,-0.580l-0.292,-0.582l-1.452,0.000l-0.873,0.873l0.871,0.291z",CH:"M500.22,100.292l0.000,0.580l-0.289,0.581l1.162,0.581l1.452,0.000l-0.289,1.162l-1.163,0.290l-2.034,-0.290l-0.583,1.161l-1.453,0.000l-0.291,-0.290l-1.744,0.871l-1.160,0.000l-1.165,-0.581l-0.871,-1.161l-1.454,0.580l0.000,-1.451l2.034,-1.453l0.000,-0.580l1.163,0.291l0.873,-0.582l2.324,0.000l0.582,-0.580l-2.906,-0.871z",CI:"M465.919,217.317l-1.162,0.000l-2.034,-0.580l-1.744,0.000l-3.197,0.580l-2.036,0.581l-2.615,1.162l-0.582,0.000l0.289,-2.323l0.293,-0.291l-0.293,-1.162l-1.162,-1.161l-0.871,-0.290l-0.582,-0.581l0.582,-1.452l-0.291,-1.162l0.000,-0.870l0.581,0.000l0.000,-1.162l-0.290,-0.581l0.290,-0.290l1.162,-0.290l-0.871,-2.323l-0.581,-1.163l0.290,-0.871l0.581,-0.290l0.292,-0.292l0.870,0.582l2.037,0.000l0.582,-0.871l0.581,0.000l0.582,-0.291l0.579,1.162l0.583,-0.290l1.161,-0.292l1.165,0.582l0.579,0.871l1.164,0.581l0.872,-0.581l1.452,-0.291l1.744,0.872l0.874,3.775l-1.164,2.323l-0.872,3.195l1.162,2.323l0.000,-1.161z",CL:"M284.825,375.578v6.389h2.907h1.745l-0.872,1.162l-2.326,0.87l-1.454-0.291l-1.744-0.289l-1.744-0.582l-2.907-0.58l-3.487-1.451l-2.907-1.453l-3.779-3.193l2.326,0.58l3.778,2.033l3.78,0.87l1.453-1.16l0.872-2.033l2.326-1.162L284.825,375.578zM285.987,289.915l1.163,4.065l2.035-0.582l0.291,0.872l-1.163,2.613l-2.907,1.451v4.646l-0.582,0.87l0.872,1.163l-1.744,1.741l-2.035,2.324l-0.872,2.614l0.291,2.612l-1.744,2.904l1.163,4.646l0.873,0.58v2.613l-1.744,2.613l0.29,2.323l-2.326,1.742l0.292,2.613l0.581,2.615l-1.453,0.87l-0.872,2.613l-0.582,2.904l0.582,3.193l-1.164,0.581l0.582,3.194l1.162,1.162l-0.873,1.162l1.454,0.289l0.29,1.162l-1.452,0.58l0.291,1.451l-0.872,3.775l-1.455,2.323l0.292,1.453l-0.873,1.741l-2.035,1.161l0.291,2.904l0.873,0.873h1.744v2.03l1.163,1.453l6.685,0.58l2.617,0.29h-2.617l-1.163,0.581l-2.616,1.162l-0.291,2.612h-1.162l-3.198-0.87l-3.198-2.032l-3.488-1.453l-0.872-1.74l0.872-1.744l-1.454-1.742l-0.291-4.646l1.163-2.614l2.907-2.323l-4.07-0.581l2.617-2.612l0.872-4.357l2.907,0.873l1.453-5.808l-1.744-0.581l-0.872,3.484l-1.744-0.582l0.872-3.773l0.872-5.228l1.454-1.742l-0.872-2.905l-0.291-2.902l1.163-0.29l1.744-4.356l1.744-4.356l1.162-4.064l-0.581-4.065l0.872-2.323l-0.292-3.485l1.744-3.192l0.292-5.518l0.872-5.519l0.871-6.388v-4.356l-0.582-3.774l1.163-0.872l0.872-1.45l1.454,2.032l0.291,2.031l1.454,1.163l-0.872,2.612L285.987,289.915z",CM:"M509.814,224.578l-0.291,0.000l-1.744,0.289l-1.744,-0.289l-1.163,0.000l-4.652,0.000l0.582,-2.034l-1.163,-1.742l-1.163,-0.582l-0.581,-1.160l-0.872,-0.581l0.000,-0.581l0.872,-2.032l1.164,-2.614l0.872,0.000l1.743,-1.743l0.871,0.000l1.746,1.161l1.744,-0.870l0.291,-1.162l0.580,-1.161l0.581,-1.452l1.455,-1.161l0.581,-1.742l0.582,-0.582l0.289,-1.452l0.873,-1.742l2.326,-2.323l0.000,-0.872l0.289,-0.580l-1.163,-0.871l0.292,-0.871l0.582,-0.291l1.162,1.742l0.292,1.743l-0.292,2.032l1.453,2.324l-1.453,0.000l-0.581,0.289l-1.455,-0.289l-0.579,1.161l1.742,1.743l1.165,0.581l0.289,1.161l0.872,1.743l-0.290,0.870l-1.455,2.614l-0.581,0.581l-0.289,2.033l0.289,1.162l-0.289,0.870l1.454,1.452l0.000,0.870l1.161,1.452l1.163,0.872l0.292,1.453l0.289,0.581l-0.289,1.741l-2.327,-0.871l-2.034,-0.581l3.488,0.289z",CN:"M777.533,179.567l-2.325,1.451l-2.326-0.871v-2.323l1.163-1.453l3.196-0.581h1.455l0.581,0.872l-1.163,1.451L777.533,179.567zM825.204,94.194l4.651,0.871l3.488,1.742l0.871,2.614h4.361l2.325-0.872l4.651-0.871l-1.454,2.323l-1.163,1.162l-0.871,2.904l-2.034,2.613l-3.198-0.291l-2.325,0.871l0.581,2.324l-0.29,3.194l-1.454,0.291v1.161l-1.744-1.451l-1.163,1.451l-4.067,1.162l0.289,1.453h-2.325l-1.452-0.872l-1.745,2.032l-3.198,1.453l-2.033,1.742l-3.781,0.871l-2.033,1.162l-3.197,0.871l1.452-1.453l-0.58-1.16l2.325-1.742l-1.455-1.453l-2.324,1.162l-3.197,1.742l-1.745,1.742l-2.615,0.291l-1.452,1.16l1.452,1.743l2.326,0.581v1.162l2.325,0.872l2.906-2.033l2.616,1.162h1.744l0.289,1.452l-3.777,0.871l-1.454,1.452l-2.615,1.453l-1.453,1.742l3.196,1.742l0.872,2.614l1.743,2.613l1.745,2.033v2.033l-1.745,0.581l0.873,1.453l1.455,0.87l-0.292,2.324l-0.873,2.323h-1.452l-2.034,3.194l-2.326,3.484l-2.327,3.195l-3.778,2.613l-4.069,2.323l-2.905,0.291l-1.744,1.162l-0.873-0.871l-1.743,1.452l-3.779,1.451l-2.906,0.291l-0.872,2.904l-1.454,0.29l-0.873-2.033l0.584-1.162l-3.488-0.872l-1.455,0.581l-2.615-0.87l-1.454-0.873l0.581-1.742l-2.615-0.581l-1.452-0.871l-2.328,1.451l-2.615,0.291h-2.034l-1.454,0.58l-1.453,0.582l0.29,2.903h-1.455l-0.289-0.581v-1.161l-2.034,0.87l-1.163-0.581l-2.035-1.162l0.872-2.033l-1.743-0.581l-0.873-2.613l-2.905,0.58l0.29-3.484l2.615-2.323l0.291-2.033l-0.291-2.323l-1.161-0.581l-0.873-1.452h-1.455l-3.194-0.291l1.161-1.161l-1.455-1.743l-2.034,1.162l-2.033-0.581l-3.198,1.742l-2.615,2.033l-2.326,0.29l-1.162-0.872h-1.453l-2.035-0.58l-1.454,0.58l-1.743,2.033l-0.292-2.033l-1.744,0.582L713,154.013l-2.906-0.581l-2.326-1.162l-2.034-0.581l-1.162-1.452l-1.454-0.291l-2.615-1.742l-2.326-0.871l-1.162,0.581l-3.781-2.033l-2.615-1.742l-0.873-2.904l2.036,0.291v-1.453l-1.163-1.161l0.293-2.324l-2.908-3.194l-4.361-1.161l-0.87-2.033l-2.036-1.451l-0.58-0.582l-0.292-1.742v-1.161l-1.743-0.582l-0.874,0.291l-0.579-2.324l0.579-0.871l-0.289-0.581l2.615-1.162l2.036-0.58l2.906,0.291l0.871-1.744l3.489-0.29l1.162-1.162l4.362-1.451l0.289-0.581l-0.289-1.743l2.033-0.581l-2.617-4.646l5.524-1.162l1.452-0.58l2.034-4.938l5.232,0.873l1.744-1.162v-2.904l2.328-0.291l2.033-1.742l1.163-0.29l0.581,2.032l2.326,1.452l4.067,0.872l1.746,2.323l-0.873,3.194l0.873,1.162l3.197,0.582l3.778,0.29l3.488,1.742l1.743,0.291l1.163,2.613l1.455,1.453h3.196l5.522,0.58l3.78-0.291l2.615,0.291l4.069,1.743h3.489l1.162,0.871l3.197-1.451l4.361-0.873l4.359-0.29l3.198-0.871l1.745-1.452l2.033-0.871l-0.581-0.872l-0.873-1.161l1.454-1.742l1.745,0.29l2.614,0.581l2.908-1.452l4.069-1.162l2.034-1.742l2.035-0.872l4.07-0.29l2.034,0.29l0.291-1.162l-2.325-1.741l-2.326-0.872l-2.036,0.872l-2.904-0.291l-1.455,0.291l-0.581-1.162l1.744-2.613l1.453-2.324l3.197,1.162l4.068-1.742v-1.162l2.328-2.903l1.452-0.872v-1.452l-1.452-0.871l2.325-1.162l3.486-0.58h3.491l4.067,0.58l2.617,1.162l1.744,2.903l0.871,1.161l0.874,1.453L825.204,94.194z", +CO:"M266.221,231.256l-1.163,-0.582l-1.163,-0.870l-0.871,0.290l-2.326,-0.290l-0.582,-1.161l-0.580,0.000l-2.907,-1.452l-0.291,-0.872l1.162,-0.290l-0.290,-1.451l0.582,-0.873l1.452,-0.289l1.164,-1.744l1.161,-1.452l-1.161,-0.580l0.580,-1.452l-0.580,-2.613l0.580,-0.580l-0.580,-2.325l-1.164,-1.451l0.582,-1.451l0.872,0.289l0.582,-0.871l-0.872,-1.741l0.290,-0.292l1.454,0.000l2.034,-2.031l1.163,-0.291l0.000,-0.872l0.581,-2.322l1.744,-1.162l1.745,0.000l0.000,-0.582l2.325,0.291l2.035,-1.451l1.163,-0.582l1.454,-1.451l0.872,0.290l0.580,0.581l-0.290,0.871l-2.035,0.581l-0.581,1.452l-1.163,0.580l-0.581,1.162l-0.582,2.033l-0.581,1.452l1.453,0.290l0.291,1.161l0.580,0.582l0.292,1.161l-0.292,1.161l0.000,0.581l0.583,0.000l0.872,1.162l3.488,-0.291l1.453,0.291l2.035,2.323l1.163,-0.290l2.034,0.290l1.454,-0.290l0.872,0.290l-0.291,1.452l-0.872,0.871l0.000,2.033l0.581,2.033l0.582,0.580l0.291,0.580l-1.454,1.453l0.872,0.580l0.873,1.162l0.872,2.614l-0.581,0.290l-0.582,-1.452l-0.873,-0.871l-0.871,0.871l-5.233,0.000l0.000,1.742l1.745,0.290l-0.291,0.871l-0.582,-0.290l-1.453,0.581l0.000,2.033l1.162,0.871l0.582,1.743l-0.291,1.161l-1.163,7.551l-1.452,-1.454l-0.582,-0.290l1.744,-2.613l-2.326,-1.452l-1.452,0.290l-1.164,-0.579l-1.453,0.870l-2.035,-0.291l-1.744,-2.903l-1.163,-0.870l-0.872,-1.163l-1.744,-1.452l0.872,-0.291z",CR:"M245.292,208.315l-1.453,-0.580l-0.582,-0.582l0.291,-0.580l0.000,-0.581l-0.872,-0.579l-0.872,-0.582l-1.163,-0.291l0.000,-0.872l-0.872,-0.580l0.291,0.871l-0.582,0.581l-0.581,-0.581l-0.872,-0.291l-0.291,-0.580l0.000,-0.871l0.291,-0.871l-0.872,-0.291l0.581,-0.580l0.581,-0.291l1.745,0.581l0.581,-0.290l0.871,0.290l0.583,0.581l0.872,0.000l0.581,-0.581l0.580,1.452l1.164,1.162l1.162,1.161l-0.872,0.291l0.000,1.161l0.583,0.291l-0.583,0.581l0.291,0.289l-0.291,0.582l0.290,-0.580z",CU:"M247.326,167.081l2.326,0.290l2.326,0.000l2.325,0.871l1.163,1.161l2.616,-0.290l0.873,0.581l2.325,1.743l1.744,1.161l0.871,0.000l1.744,0.581l-0.290,0.871l2.035,0.000l2.325,1.161l-0.581,0.581l-1.744,0.291l-1.745,0.290l-2.035,-0.290l-3.778,0.290l1.743,-1.452l-1.161,-0.871l-1.744,0.000l-0.872,-0.871l-0.582,-1.742l-1.744,0.289l-2.616,-0.870l-0.582,-0.581l-3.779,-0.291l-0.872,-0.581l0.872,-0.580l-2.616,-0.290l-2.034,1.451l-1.163,0.000l-0.292,0.580l-1.452,0.292l-1.163,0.000l1.454,-0.872l0.581,-1.161l1.453,-0.581l1.163,-0.581l2.325,-0.290l-0.581,0.290z",CY:"M567.37,134.557l0.000,0.291l-2.909,1.161l-1.162,-0.581l-0.874,-1.161l1.456,0.000l0.580,0.290l0.582,-0.290l0.582,0.000l0.290,0.290l0.581,0.000l0.581,0.000l-0.293,0.000z",CZ:"M520.57,97.388l-1.455,-0.581l-1.163,0.000l-2.326,-0.581l-0.871,0.000l-1.453,1.162l-2.035,-0.871l-1.744,-1.161l-1.163,-0.582l-0.289,-1.161l-0.584,-0.872l2.036,-0.580l0.871,-0.871l2.036,-0.291l0.581,-0.581l0.871,0.290l1.165,-0.290l1.453,0.872l2.036,0.291l-0.293,0.580l1.454,0.580l0.581,-0.580l1.746,0.290l0.290,0.872l2.034,0.290l1.454,1.161l-0.874,0.000l-0.580,0.582l-0.582,0.000l-0.292,0.581l-0.289,0.289l-0.290,0.291l-0.871,0.290l-1.165,0.000l0.289,-0.581z",DE:"M501.093,79.674l0.000,1.161l2.906,0.582l0.000,0.872l2.617,-0.291l1.744,-0.872l2.907,1.163l1.452,0.870l0.583,1.452l-0.872,0.581l1.163,1.162l0.581,1.452l-0.292,0.870l1.165,1.742l-1.165,0.290l-0.871,-0.290l-0.581,0.581l-2.036,0.291l-0.871,0.871l-2.036,0.580l0.584,0.872l0.289,1.161l1.163,0.582l1.744,1.161l-1.162,1.162l-0.872,0.580l0.290,1.742l-0.290,0.291l-0.584,-0.581l-1.452,0.000l-2.034,0.581l-2.326,-0.291l-0.292,0.871l-1.452,-0.871l-0.873,0.291l-2.906,-0.871l-0.582,0.580l-2.324,0.000l0.290,-2.032l1.455,-1.743l-4.070,-0.580l-1.166,-0.581l0.000,-1.452l-0.579,-0.581l0.290,-1.742l-0.290,-2.904l1.454,0.000l0.871,-1.162l0.581,-2.323l-0.581,-1.161l0.581,-0.581l2.327,0.000l0.582,0.581l1.742,-1.451l-0.581,-0.872l0.000,-1.743l2.035,0.581l-1.744,0.581z",DJ:"M592.368,196.119l0.581,0.871l0.000,1.161l-1.453,0.582l1.161,0.580l-1.161,1.452l-0.583,-0.290l-0.581,0.000l-1.743,0.000l0.000,-0.871l0.000,-0.581l0.871,-1.452l0.872,-1.162l1.164,0.291l-0.872,0.581z",DK:"M508.649,77.933l-1.743,2.323l-2.615-1.452l-0.582-1.162l4.07-0.872L508.649,77.933zM503.708,75.609l-0.581,1.162l-0.871-0.291l-2.036,2.033l0.873,1.161l-1.744,0.582l-2.035-0.582l-1.161-1.451v-2.904l0.289-0.581l0.872-0.871h2.325l1.163-0.871l2.035-0.871v1.453l-0.872,0.87l0.291,0.871L503.708,75.609z",DO:"M276.396,176.664l0.290,-0.291l2.034,0.000l1.744,0.580l0.872,0.000l0.291,0.872l1.454,0.000l0.000,0.871l1.162,0.000l1.454,1.162l-0.872,1.161l-1.453,-0.871l-1.164,0.290l-0.872,-0.290l-0.581,0.581l-1.163,0.290l-0.290,-0.871l-0.873,0.581l-1.161,1.743l-0.872,-0.291l0.000,-0.871l0.000,-0.872l-0.582,-0.580l0.582,-0.582l0.290,-1.161l0.290,1.451z",DZ:"M506.906,166.5l-9.592,5.226l-7.849,5.227l-4.070,1.453l-2.906,0.000l0.000,-1.742l-1.452,-0.291l-1.454,-0.872l-0.873,-1.161l-9.301,-6.098l-9.301,-6.098l-10.176,-6.679l0.000,-0.291l0.000,-0.290l0.000,-3.194l4.361,-2.032l2.906,-0.581l2.036,-0.581l1.162,-1.452l3.197,-1.162l0.000,-2.032l1.744,-0.291l1.162,-0.870l3.782,-0.582l0.289,-0.871l-0.582,-0.580l-0.871,-2.905l-0.291,-1.742l-1.163,-1.742l2.907,-1.452l2.907,-0.581l1.744,-1.161l2.617,-0.872l4.650,-0.289l4.651,-0.291l1.162,0.291l2.615,-1.162l2.911,0.000l1.160,0.871l2.035,-0.290l-0.581,1.451l0.290,2.614l-0.579,2.323l-1.745,1.451l0.290,2.034l2.325,1.742l0.000,0.581l1.745,1.162l1.163,4.936l0.871,2.322l0.000,1.453l-0.291,2.033l0.000,1.451l-0.291,1.452l0.291,1.743l-1.162,1.161l1.744,2.033l0.000,1.162l1.163,1.451l1.163,-0.580l2.035,1.451l-1.452,-1.743z",EC:"M252.85,240.258l1.453,-2.033l-0.581,-1.162l-1.163,1.162l-1.744,-1.162l0.581,-0.581l-0.291,-2.613l0.873,-0.580l0.581,-1.454l0.872,-2.031l0.000,-0.872l1.454,-0.581l1.744,-1.160l2.907,1.452l0.580,0.000l0.582,1.161l2.326,0.290l0.871,-0.290l1.163,0.870l1.163,0.582l0.581,2.324l-0.872,1.741l-3.198,2.904l-3.196,0.871l-1.744,2.613l-0.582,1.742l-1.454,1.162l-1.162,-1.451l-1.163,-0.290l-1.163,0.290l0.000,-1.162l0.873,-0.582l0.291,1.160z",EE:"M540.626,72.125l0.291,-1.743l-0.872,0.290l-1.744,-0.870l-0.291,-1.743l3.489,-0.581l3.488,-0.582l2.906,0.582l2.906,0.000l0.291,0.291l-1.745,1.742l0.582,2.614l-1.163,0.871l-2.034,0.000l-2.614,-1.162l-1.165,-0.290l2.325,-0.581z",EG:"M569.987,149.947l-0.874,0.872l-0.581,2.323l-0.873,1.162l-0.582,0.580l-0.870,-0.871l-1.164,-1.161l-2.034,-4.066l-0.291,0.291l1.163,2.903l1.744,2.904l2.034,4.065l0.873,1.743l0.871,1.452l2.618,2.904l-0.584,0.580l0.000,1.743l3.198,2.613l0.581,0.580l-10.755,0.000l-10.755,0.000l-11.045,0.000l0.000,-10.162l0.000,-9.873l-0.871,-2.324l0.579,-1.451l-0.289,-1.162l0.871,-1.452l3.779,0.000l2.615,0.581l2.615,0.871l1.456,0.580l2.033,-0.870l1.165,-0.872l2.323,-0.290l2.036,0.290l0.872,1.452l0.580,-0.870l2.036,0.580l2.327,0.290l1.161,-0.870l-2.038,-4.935z",ER:"M590.332,196.409l-0.872,-0.871l-1.162,-1.452l-1.163,-1.162l-0.871,-0.870l-2.326,-1.162l-1.744,0.000l-0.873,-0.580l-1.453,0.870l-1.743,-1.452l-0.873,2.033l-3.198,-0.581l-0.290,-0.870l1.161,-4.065l0.291,-2.033l0.874,-0.873l2.035,-0.289l1.454,-1.742l1.452,3.193l0.871,2.614l1.454,1.452l3.779,2.613l1.454,1.453l1.453,1.742l0.871,0.871l1.455,0.871l-0.872,0.581l1.164,0.291z",ES:"M448.769,115.683l0.292,-1.743l-1.163,-1.452l3.778,-1.742l3.489,0.290l3.778,0.000l2.908,0.581l2.324,-0.290l4.362,0.290l1.163,0.871l4.940,1.452l1.163,-0.580l2.907,1.161l3.197,-0.292l0.292,1.454l-2.616,2.032l-3.489,0.580l-0.291,0.872l-1.744,1.451l-1.162,2.324l1.162,1.451l-1.453,1.162l-0.581,1.742l-2.325,0.581l-1.744,2.323l-3.489,0.000l-2.616,0.000l-1.743,0.872l-1.165,1.161l-1.452,-0.291l-0.871,-0.870l-0.874,-1.742l-2.615,-0.291l0.000,-1.162l0.871,-0.871l0.291,-0.871l-0.873,-0.581l0.873,-2.032l-1.162,-1.452l1.162,-0.291l0.000,-1.451l0.582,-0.291l0.000,-2.033l1.163,-0.870l-0.581,-1.452l-1.746,0.000l-0.291,0.290l-1.744,0.000l-0.581,-1.162l-1.163,0.291l1.163,-0.581z",ET:"M578.125,189.73l1.743,1.452l1.453,-0.870l0.873,0.580l1.744,0.000l2.326,1.162l0.871,0.870l1.163,1.162l1.162,1.452l0.872,0.871l-0.872,1.162l-0.871,1.452l0.000,0.581l0.000,0.871l1.743,0.000l0.581,0.000l0.583,0.290l-0.583,1.161l1.163,1.453l0.873,1.452l1.163,0.871l9.010,3.194l2.328,0.000l-7.850,8.421l-3.780,0.000l-2.324,2.033l-1.744,0.000l-0.874,0.870l-1.743,0.000l-1.161,-0.870l-2.618,1.162l-0.581,1.160l-2.036,-0.290l-0.580,-0.290l-0.580,0.000l-0.874,0.000l-3.489,-2.323l-2.033,0.000l-0.873,-0.871l0.000,-1.742l-1.452,-0.290l-1.455,-3.196l-1.454,-0.580l-0.290,-1.161l-1.452,-1.161l-1.746,-0.291l0.872,-1.452l1.455,0.000l0.582,-0.872l0.000,-2.613l0.579,-2.903l1.454,-0.582l0.292,-1.162l1.163,-2.322l1.743,-1.162l0.872,-2.904l0.581,-2.323l3.198,0.581l-0.873,2.033z",FI:"M552.544,41.053l-0.584,2.033l4.363,1.743l-2.617,2.032l3.198,3.194l-1.744,2.324l2.325,2.033l-1.162,1.742l4.069,2.032l-0.871,1.161l-2.617,1.742l-5.814,3.485l-4.941,0.291l-4.941,0.871l-4.362,0.580l-1.744,-1.451l-2.615,-0.871l0.581,-2.614l-1.452,-2.613l1.452,-1.453l2.616,-1.742l6.106,-3.193l2.033,-0.582l-0.289,-1.160l-4.072,-1.162l-0.872,-1.162l0.000,-4.065l-4.361,-2.033l-3.486,-1.452l1.453,-0.581l3.198,1.452l3.488,0.000l2.908,0.581l2.615,-1.162l1.452,-2.032l4.362,-1.162l3.487,1.162l1.162,-2.032z",FJ:"M964.732,278.588l0.873,0.871l-0.292,1.452l-1.744,0.291l-1.452-0.291l-0.292-1.162l0.873-0.87l1.455,0.291L964.732,278.588zM969.382,276.557l-1.741,0.579l-2.036,0.582l-0.292-1.161l1.455-0.291l0.873-0.291l1.741-0.871h-0.01h0.58l-0.29,1.162l-0.29,0.291H969.382z",FK:"M305.173,373.544l3.488,-1.741l2.326,0.870l1.744,-1.161l2.034,1.161l-0.872,0.871l-3.778,0.872l-1.164,-0.872l-2.325,1.162l1.453,1.162z",FR:"M329.008,223.997l-0.873,1.162h-1.453l-0.29-0.581l-0.582-0.292l-0.872,0.873l-1.162-0.581l0.581-1.162l0.291-1.162l0.582-1.161l-1.164-1.742l-0.289-1.743l1.453-2.612l0.872,0.289l2.034,0.872l2.907,2.323l0.582,1.161l-1.744,2.323L329.008,223.997zM500.22,115.102l-1.161,2.033l-1.164-0.582l-0.581-1.742l0.581-1.162l1.744-0.871L500.22,115.102zM483.652,92.451l2.036,1.162h1.162l2.615,1.162l0.581,0.291h0.871l1.165,0.581l4.07,0.58l-1.455,1.744l-0.29,2.032l-0.873,0.581l-1.163-0.291v0.581l-2.033,1.453v1.452l1.453-0.581l0.871,1.162l-0.291,0.871l0.872,1.162l-0.872,0.871l0.582,2.033l1.454,0.291l-0.291,1.162l-2.325,1.452l-5.523-0.581l-4.069,0.872l-0.292,1.741l-3.196,0.292l-2.907-1.162l-1.163,0.58l-4.94-1.452l-1.163-0.872l1.452-1.742l0.582-5.517l-2.907-2.905l-2.034-1.451l-4.36-0.872v-2.033l3.488-0.581l4.651,0.581l-0.872-2.903l2.615,1.162l6.396-2.324l0.87-2.324l2.325-0.29l0.293,0.872h1.452L483.652,92.451z",GA:"M504.291,242l-2.908,-2.904l-1.744,-2.322l-1.744,-2.905l0.291,-0.871l0.582,-0.871l0.581,-2.033l0.582,-2.033l0.871,0.000l4.070,0.000l0.000,-3.483l1.163,0.000l1.744,0.289l1.744,-0.289l0.291,0.000l-0.291,1.451l0.871,1.162l2.036,0.000l0.581,0.580l-1.163,3.194l1.454,1.452l0.291,2.324l-0.582,1.741l-0.581,1.162l-2.616,0.000l-1.454,-1.451l-0.289,1.451l-1.745,0.291l-0.872,0.580l0.872,1.743l2.035,-1.742z",GB:"M458.072,80.835l-1.452,2.033l-2.036-0.58h-1.745l0.582-1.453l-0.582-1.451l2.326-0.291L458.072,80.835zM465.629,69.802l-3.198,2.903l2.907-0.289h2.907l-0.582,2.032l-2.615,2.613h2.907l0.29,0.291l2.325,3.484l2.035,0.291l1.745,3.195l0.581,1.161l3.486,0.291l-0.29,2.033l-1.452,0.58l1.163,1.452l-2.617,1.453h-3.488l-4.94,0.871l-1.164-0.581l-1.744,1.161l-2.616-0.291l-2.034,1.162l-1.453-0.581l4.069-2.904l2.616-0.581l-4.359-0.581l-0.873-0.872l2.906-0.871l-1.454-1.451l0.582-2.033l4.069,0.291l0.291-1.452l-1.744-1.743l-3.488-0.58l-0.582-0.871l0.872-1.162l-0.872-0.581l-1.452,1.162V76.19l-1.454-1.453l0.873-2.904l2.326-2.032h2.033H465.629z",GE:"M588.298,116.844l0.291,-1.161l-0.582,-2.034l-1.743,-0.871l-1.455,-0.580l-1.162,-0.581l0.581,-0.581l2.325,0.581l3.779,0.581l3.780,1.162l0.581,0.580l1.745,-0.580l2.614,0.580l0.581,1.162l1.745,0.871l-0.582,0.290l1.455,1.452l-0.582,0.290l-1.454,-0.290l-2.034,-0.580l-0.581,0.290l-3.780,0.580l-2.615,-1.452l2.907,-0.291z",GH:"M476.676,214.704l-4.361,1.452l-1.452,1.161l-2.617,0.581l-2.327,-0.581l0.000,-1.161l-1.162,-2.323l0.872,-3.195l1.164,-2.323l-0.874,-3.775l-0.290,-2.323l0.000,-1.452l4.942,0.000l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,0.872l0.871,1.161l0.000,2.033l0.292,2.322l0.871,0.872l-0.581,2.613l0.000,1.162l0.872,1.742l-0.582,-1.162z",GL:"M344.996,3.593l9.302,-1.451l9.593,0.000l3.488,-0.871l9.883,-0.291l21.800,0.291l17.442,2.322l-5.232,0.872l-10.465,0.290l-14.824,0.291l1.453,0.289l9.593,-0.289l8.429,0.871l5.232,-0.582l2.326,0.872l-2.907,1.452l6.977,-0.871l13.370,-1.162l8.139,0.581l1.455,1.162l-11.047,2.032l-1.743,0.580l-8.721,0.581l6.395,0.000l-3.196,2.033l-2.326,1.742l0.290,3.195l3.198,1.742l-4.361,0.000l-4.361,0.872l4.943,1.451l0.581,2.323l-2.908,0.291l3.781,2.323l-6.106,0.291l2.906,1.160l-0.871,0.872l-3.780,0.581l-3.777,0.000l3.488,1.742l0.000,1.161l-5.522,-1.161l-1.455,0.871l3.778,0.582l3.488,1.741l1.163,2.324l-4.940,0.580l-2.034,-1.162l-3.489,-1.742l0.871,2.033l-3.197,1.452l7.267,0.000l3.780,0.290l-7.269,2.324l-7.557,2.322l-7.848,0.872l-3.198,0.000l-2.907,0.871l-3.779,2.903l-5.814,2.034l-2.034,0.290l-3.489,0.581l-4.069,0.580l-2.326,1.742l0.000,2.034l-1.453,1.742l-4.360,2.033l0.872,2.323l-1.162,2.323l-1.454,2.613l-3.779,0.000l-4.069,-2.033l-5.524,0.000l-2.615,-1.742l-2.036,-2.614l-4.650,-3.484l-1.454,-1.742l-0.291,-2.324l-3.778,-2.613l0.872,-2.033l-1.744,-0.871l2.617,-3.194l4.359,-1.162l0.872,-1.161l0.582,-2.034l-3.198,0.873l-1.454,0.289l-2.325,0.582l-3.488,-0.871l0.000,-2.034l0.871,-1.452l2.617,0.000l5.523,0.872l-4.651,-1.742l-2.325,-1.162l-2.907,0.581l-2.326,-0.872l3.198,-2.322l-1.744,-1.162l-2.035,-2.033l-3.489,-2.904l-3.488,-0.871l0.000,-1.162l-7.266,-1.742l-5.814,0.000l-7.558,0.000l-6.685,0.290l-3.199,-0.870l-4.649,-1.743l7.266,-0.871l5.523,-0.291l-11.917,-0.580l-6.105,-1.162l0.291,-1.161l10.464,-1.162l10.173,-1.452l0.872,-0.871l-7.266,-1.162l2.326,-1.161l9.592,-1.742l4.070,-0.290l-1.163,-1.162l6.395,-0.872l8.429,-0.289l8.430,0.000l3.199,0.580l7.266,-1.453l6.395,1.162l4.070,0.291l5.523,0.871l-6.395,-1.451l-0.290,1.453z",GM:"M427.549,194.667l0.291,-1.162l2.909,0.000l0.581,-0.581l0.871,0.000l1.163,0.581l0.873,0.000l0.870,-0.581l0.582,0.872l-1.163,0.581l-1.162,0.000l-1.163,-0.581l-1.163,0.581l-0.582,0.000l-0.580,0.581l2.327,0.291z",GN:"M450.514,209.768l-0.871,0.000l-0.582,1.161l-0.581,0.000l-0.582,-0.581l0.290,-1.162l-1.162,-1.741l-0.872,0.290l-0.581,0.000l-0.581,0.290l0.000,-1.161l-0.582,-0.581l0.000,-0.870l-0.581,-1.163l-0.582,-0.871l-2.326,0.000l-0.581,0.580l-0.871,0.000l-0.292,0.581l-0.289,0.582l-1.455,1.451l-1.453,-1.742l-0.873,-1.163l-0.870,-0.289l-0.582,-0.581l-0.291,-1.161l-0.582,-0.582l-0.581,-0.580l1.163,-1.162l0.873,0.000l0.581,-0.580l0.582,0.000l0.580,-0.291l-0.291,-0.871l0.291,-0.291l0.000,-0.871l1.453,0.000l2.036,0.581l0.581,0.000l0.000,-0.290l1.744,0.290l0.289,-0.290l0.293,1.162l0.290,0.000l0.581,-0.582l0.582,0.291l0.871,0.580l1.165,0.291l0.579,-0.580l0.873,-0.582l0.871,-0.290l0.581,0.000l0.582,0.581l0.292,0.871l1.162,1.162l-0.582,0.580l-0.291,1.162l0.582,-0.291l0.581,0.291l-0.290,0.871l0.871,0.581l-0.581,0.290l-0.290,0.871l0.581,1.163l0.871,2.323l-1.162,0.290l-0.290,0.290l0.290,0.581l0.000,1.162l0.581,0.000z",GQ:"M499.931,228.061l-0.582,-0.290l0.871,-3.193l4.652,0.000l0.000,3.483l-4.070,0.000l0.871,0.000z",GR:"M538.882,132.815l1.744,0.871l2.034-0.29l2.033,0.29v0.582l1.455-0.291l-0.292,0.581l-4.067,0.291v-0.291l-3.199-0.581L538.882,132.815zM547.02,116.553l-0.871,1.742l-0.581,0.291h-1.745l-1.454-0.291l-3.196,0.872l1.744,1.451l-1.454,0.291h-1.452l-1.454-1.16l-0.582,0.58l0.582,1.452l1.454,1.453l-0.872,0.58l1.452,1.162l1.455,0.871v1.452l-2.617-0.581l0.873,1.452l-1.745,0.291l0.872,2.323h-1.744l-2.326-1.161l-0.871-2.324l-0.581-1.742l-1.163-1.162l-1.452-1.742v-0.58l1.16-1.453l0.292-0.87l0.873-0.291v-0.871l1.742-0.291l1.164-0.58h1.452l0.582-0.291l0.29-0.29l2.036,0.29l2.325-0.872l2.034,0.872h2.326v-1.452L547.02,116.553z",GT:"M225.816,193.215l-1.453,-0.580l-1.744,0.000l-1.163,-0.581l-1.454,-1.162l0.000,-0.871l0.291,-0.581l-0.291,-0.580l1.164,-2.033l3.487,0.000l0.292,-0.871l-0.582,-0.291l-0.291,-0.581l-1.162,-0.581l-0.872,-0.870l1.163,0.000l0.000,-1.743l2.615,0.000l2.617,0.000l0.000,2.324l-0.292,2.903l0.872,0.000l0.872,0.581l0.292,-0.291l0.872,0.291l-1.455,1.162l-1.161,0.580l-0.292,0.581l0.292,0.581l-0.583,0.580l-0.581,0.291l0.000,0.290l-0.580,0.291l-0.873,0.581l0.000,-0.580z",GW:"M432.201,200.475l-1.452,-1.162l-1.164,0.000l-0.582,-0.871l0.000,-0.291l-0.871,-0.580l-0.292,-0.581l1.453,-0.581l0.874,0.000l0.871,-0.290l4.942,0.290l0.000,0.871l-0.291,0.291l0.291,0.871l-0.580,0.291l-0.582,0.000l-0.581,0.580l-0.873,0.000l1.163,-1.162z",GY:"M309.243,208.025l1.744,0.871l1.744,1.742l0.000,1.452l1.162,0.000l1.453,1.452l1.163,0.873l-0.582,2.613l-1.453,0.579l0.000,0.872l-0.581,1.161l1.453,2.032l0.872,0.000l0.291,1.744l1.744,2.322l-0.872,0.000l-1.454,-0.290l-0.871,0.871l-1.163,0.581l-0.872,0.000l-0.290,0.581l-1.454,-0.290l-1.743,-1.162l-0.291,-1.162l-0.582,-1.451l0.582,-2.324l0.580,-1.162l-0.580,-1.161l-0.872,-0.290l0.290,-1.451l-0.582,-0.582l-1.453,0.291l-2.035,-2.322l0.873,-0.582l0.000,-1.163l1.743,-0.580l0.582,-0.581l-0.872,-0.871l0.290,-1.161l-2.036,1.452z",HN:"M233.374,195.248l-0.291,-0.871l-0.872,-0.291l0.000,-1.162l-0.291,-0.289l-0.582,0.000l-1.161,0.289l0.000,-0.289l-0.872,-0.581l-0.582,-0.581l-0.873,-0.291l0.583,-0.580l-0.292,-0.581l0.292,-0.581l1.161,-0.580l1.455,-1.162l0.289,0.000l0.582,-0.291l0.581,0.000l0.291,0.000l0.582,0.000l1.163,0.291l1.162,-0.291l0.873,-0.290l0.581,-0.290l0.872,0.290l0.581,0.000l0.582,0.000l0.581,-0.290l1.454,0.580l0.289,0.000l0.872,0.582l0.873,0.580l0.871,0.291l0.873,0.870l-1.162,0.000l-0.291,0.291l-0.872,0.291l-0.872,0.000l-0.581,0.290l-0.582,0.000l-0.290,-0.290l-0.291,0.000l-0.291,0.580l-0.291,0.000l0.000,0.581l-1.163,0.871l-0.581,0.291l-0.291,0.289l-0.581,-0.580l-0.581,0.871l-0.582,-0.291l-0.871,0.291l0.290,1.162l-0.581,0.000l-0.291,0.871l0.872,0.000z",HR:"M525.51,104.647l0.871,1.163l0.873,0.870l-1.163,0.872l-1.163,-0.581l-2.033,0.000l-2.325,-0.291l-1.163,0.000l-0.582,0.581l-1.162,-0.581l-0.581,0.872l1.454,1.451l0.579,0.872l1.163,0.871l1.162,0.581l0.874,1.161l2.614,1.161l-0.289,0.580l-2.615,-1.160l-1.746,-0.871l-2.326,-0.871l-2.326,-2.033l0.582,-0.291l-1.453,-1.162l0.000,-0.870l-1.744,-0.291l-0.871,1.161l-0.873,-1.161l0.292,-0.870l1.743,0.000l0.580,-0.291l0.873,0.291l1.163,0.000l0.000,-0.582l0.871,-0.290l0.293,-1.162l2.325,-0.580l0.871,0.290l2.036,1.161l2.325,0.581l-0.871,0.581z",HT:"M272.326,176.083l1.744,0.290l2.326,0.291l0.290,1.451l-0.290,1.161l-0.582,0.582l0.582,0.580l0.000,0.872l-1.745,-0.581l-1.453,0.290l-1.744,-0.290l-1.163,0.581l-1.454,-0.872l0.291,-0.871l2.326,0.291l2.325,0.290l0.872,-0.581l-1.163,-1.161l0.000,-1.161l-1.744,-0.292l-0.582,0.870z",HU:"M518.243,102.034l1.164,-1.742l-0.582,-0.581l1.453,0.000l0.292,-1.162l1.454,0.872l0.871,0.290l2.324,-0.581l0.291,-0.291l1.163,-0.290l1.163,-0.290l0.289,0.000l1.455,-0.290l0.582,-0.581l0.870,-0.291l2.908,0.872l0.582,-0.290l1.452,0.870l0.291,0.581l-1.743,0.581l-1.164,2.034l-1.742,1.741l-2.325,0.581l-1.455,0.000l-2.326,0.580l-0.871,0.581l-2.325,-0.581l-2.036,-1.161l-0.871,-0.290l-0.582,-1.162l0.582,0.000z",ID:"M806.019,259.132h-1.163l-3.488-2.033l2.326-0.289l1.454,0.58l1.162,0.871L806.019,259.132zM816.193,258.842l-2.323,0.581l-0.292-0.291l0.292-0.871l1.16-1.742l2.617-1.16l0.29,0.58l0.29,0.871L816.193,258.842zM798.17,253.326l1.163,0.58l1.745-0.29l0.581,1.161l-3.198,0.582l-1.745,0.58l-1.743-0.291l1.162-1.451h1.455L798.17,253.326zM812.123,253.326l-0.579,1.451l-4.072,0.871l-3.486-0.58v-0.871l2.034-0.581l1.745,0.871l1.743-0.29L812.123,253.326zM772.881,249.55l5.232,0.29l0.582-1.161l4.94,1.452l1.163,1.742l4.07,0.58l3.487,1.452l-3.196,1.162l-3.199-1.162h-2.325h-2.907l-2.615-0.58l-3.199-1.162l-2.033-0.29l-1.163,0.29l-4.942-0.871l-0.58-1.452h-2.325l1.745-2.613h3.488l2.033,1.163l1.162,0.289L772.881,249.55zM844.679,248.098l-1.452,1.742l-0.292-2.032l0.583-0.871l0.58-1.162l0.581,0.871V248.098zM824.043,240.548l-1.163,0.87l-1.745-0.58l-0.581-1.162h2.907L824.043,240.548zM833.053,239.386l0.871,2.032l-2.325-0.87l-2.324-0.29h-1.454h-2.034l0.582-1.452l3.486-0.291L833.053,239.386zM842.935,234.16l0.874,4.355l2.906,1.743l2.325-2.905l3.199-1.741h2.323l2.326,0.87l2.033,1.162l2.909,0.581v8.712l0.29,9.002l-2.615-2.323l-2.91-0.29l-0.578,0.58l-3.489,0.291l1.161-2.323l1.744-0.871l-0.579-2.904l-1.454-2.323l-5.233-2.324l-2.323-0.289l-4.069-2.613L840.901,242l-1.162,0.292l-0.581-1.163v-1.161l-2.034-1.161l2.906-1.162h2.034l-0.289-0.581h-4.072l-1.161-1.742l-2.327-0.58l-1.161-1.161l3.778-0.872l1.455-0.872l4.359,1.162L842.935,234.16zM818.518,226.9l-2.325,2.904l-2.034,0.58l-2.615-0.58h-4.651l-2.325,0.58l-0.292,2.033l2.326,2.323l1.454-1.161l5.23-0.872l-0.29,1.161l-1.162-0.289l-1.163,1.451l-2.326,1.162l2.615,3.483l-0.581,0.872l2.326,3.194v1.742l-1.452,0.872l-0.874-0.872l1.165-2.323l-2.617,1.162l-0.871-0.873l0.579-0.869l-2.033-1.743l0.291-2.613l-2.036,0.871l0.292,3.195v3.773l-1.744,0.581l-1.165-0.871l0.874-2.613l-0.291-2.613h-1.162l-0.871-2.033l1.161-1.741l0.289-2.033l1.455-4.356l0.581-0.871l2.326-2.032l2.033,0.58l3.488,0.582l3.199-0.292l2.615-2.032L818.518,226.9zM828.111,227.771l-0.29,2.323h-1.452l-0.292,1.452l1.162,1.451l-0.87,0.291l-1.165-1.742l-0.871-3.485l0.581-2.032l0.873-1.162l0.29,1.452l1.744,0.291L828.111,227.771zM798.17,226.029l3.197,2.322l-3.197,0.292l-1.162,2.031l0.292,2.614l-2.618,1.742v2.613L793.52,242l-0.581-0.871l-2.908,1.163l-1.161-1.743l-2.034-0.29l-1.163-0.872l-3.488,1.162l-0.871-1.452l-1.744,0.29l-2.328-0.29l-0.581-3.775l-1.163-0.871l-1.452-2.322l-0.292-2.323l0.292-2.613l1.452-1.743l0.584,1.743l2.033,1.741l1.744-0.581h1.744l1.453-1.16l1.454-0.291l2.615,0.581l2.036-0.581l1.452-3.774l1.163-0.872l0.871-3.193h3.198l2.325,0.58l-1.454,2.323l2.036,2.614L798.17,226.029zM765.034,246.937l-2.907,0.29l-2.325-2.321l-3.779-2.324l-1.162-1.743l-2.033-2.323l-1.165-2.033l-2.325-3.774l-2.326-2.323l-0.871-2.323l-0.873-2.032l-2.615-1.743l-1.454-2.322l-2.034-1.743l-2.908-2.903l-0.289-1.451h1.745l4.358,0.58l2.618,2.614l2.033,2.032l1.453,1.161l2.615,2.905h2.908l2.325,2.032l1.454,2.322l2.033,1.161l-0.871,2.323l1.454,0.871h0.872l0.581,2.033l0.873,1.451l2.034,0.291l1.452,1.742l-0.871,3.485V246.937z",IE:"M456.62,82.869l0.579,2.032l-2.034,2.323l-4.942,1.743l-3.779,-0.581l2.036,-2.904l-1.454,-2.613l3.779,-2.323l2.033,-1.162l0.582,1.451l-0.582,1.454l1.745,0.000l-2.037,-0.580z",IL:"M572.021,140.946l-0.293,0.870l-1.163,-0.289l-0.578,1.743l0.871,0.289l-0.871,0.581l0.000,0.581l1.160,-0.291l0.000,0.872l-1.160,4.645l-2.038,-4.935l0.873,-0.872l0.581,-1.451l0.584,-2.033l0.289,-0.582l0.289,0.000l0.872,0.000l0.291,-0.580l0.582,0.000l0.000,1.162l-0.289,0.290l0.000,0.000z",IN:"M688.002,133.396l2.909,3.194l-0.293,2.324l1.163,1.160l0.000,1.453l-2.036,-0.291l0.873,2.904l2.615,1.742l3.781,2.034l-1.745,1.161l-1.163,2.613l2.908,1.162l2.614,1.161l3.490,1.742l3.779,0.291l1.453,1.452l2.325,0.290l3.197,0.581l2.326,0.000l0.291,-1.162l-0.291,-1.742l0.000,-1.161l1.744,-0.582l0.292,2.033l0.000,0.581l2.615,1.162l1.744,-0.581l2.326,0.290l2.326,0.000l0.000,-1.742l-1.163,-0.871l2.326,-0.290l2.615,-2.033l3.198,-1.742l2.033,0.580l2.035,-1.162l1.455,1.743l-1.161,1.162l3.194,0.290l0.000,1.162l-0.871,0.580l0.291,1.452l-2.034,-0.290l-3.489,1.742l0.000,1.742l-1.453,2.323l-0.292,1.162l-1.163,2.322l-2.033,-0.580l-0.290,2.904l-0.583,0.872l0.291,1.161l-1.162,0.581l-1.454,-4.356l-0.872,0.000l-0.581,1.742l-1.454,-1.452l0.872,-1.452l1.163,-0.289l1.454,-2.324l-1.743,-0.291l-2.327,0.000l-2.616,-0.291l-0.291,-2.032l-1.454,0.000l-2.034,-1.451l-1.163,2.032l2.034,1.451l-1.743,0.873l-0.582,1.160l1.744,0.582l-0.579,1.742l1.160,2.032l0.290,2.324l-0.290,1.162l-2.034,-0.291l-3.197,0.580l0.000,2.033l-1.455,1.742l-4.069,1.744l-2.904,3.484l-2.038,1.743l-2.906,1.742l0.000,1.161l-1.163,0.581l-2.615,1.161l-1.162,0.000l-0.874,2.323l0.582,3.484l0.000,2.324l-1.163,2.614l0.000,4.644l-1.454,0.000l-1.160,2.325l0.870,0.871l-2.615,0.581l-0.874,2.032l-1.163,0.581l-2.615,-2.323l-1.163,-4.067l-1.162,-2.613l-0.874,-1.451l-1.452,-2.613l-0.581,-3.485l-0.581,-1.742l-2.618,-3.775l-1.161,-5.227l-0.584,-3.485l0.000,-3.194l-0.581,-2.613l-4.068,1.451l-2.035,-0.290l-3.488,-3.194l1.454,-1.162l-0.873,-0.871l-3.198,-2.323l1.745,-2.033l6.106,0.000l-0.583,-2.324l-1.455,-1.451l-0.579,-2.032l-1.745,-1.162l3.197,-2.904l3.199,0.291l2.904,-2.904l1.745,-2.904l2.618,-2.614l0.000,-2.032l2.325,-1.743l-2.325,-1.161l-0.874,-2.032l-1.160,-2.324l1.453,-1.162l4.069,0.581l3.196,-0.290l-2.617,2.323z",IQ:"M598.763,131.943l1.744,0.872l0.289,1.742l-1.452,0.871l-0.581,2.033l2.033,2.613l3.200,1.453l1.454,2.323l-0.292,1.742l0.872,0.000l0.000,1.742l1.454,1.452l-1.744,-0.290l-1.744,-0.291l-2.037,2.614l-5.230,0.000l-7.561,-5.517l-4.067,-2.032l-3.488,-0.873l-1.163,-3.193l6.103,-2.904l1.163,-3.195l-0.292,-2.032l1.454,-0.872l1.454,-1.742l1.164,-0.291l3.197,0.291l0.873,0.872l1.452,-0.581l-1.745,-3.193z",IR:"M622.309,128.75l2.323,-0.582l2.036,-1.742l1.745,0.291l1.162,-0.581l2.034,0.290l2.907,1.452l2.325,0.290l3.200,2.324l2.034,0.000l0.289,2.323l-1.161,3.485l-0.873,2.032l1.163,0.291l-1.163,1.742l0.873,2.032l0.290,1.743l2.036,0.581l0.289,1.742l-2.615,2.323l1.453,1.452l1.162,1.742l2.617,1.162l0.000,2.613l1.453,0.291l0.290,1.452l-4.070,1.162l-1.161,3.193l-4.943,-0.580l-3.197,-0.871l-2.906,-0.291l-1.454,-3.194l-1.163,-0.581l-2.034,0.581l-2.908,1.162l-3.196,-0.872l-2.907,-2.033l-2.617,-0.870l-1.745,-2.614l-2.034,-3.774l-1.744,0.580l-1.744,-0.871l-0.871,1.161l-1.454,-1.452l0.000,-1.742l-0.872,0.000l0.292,-1.742l-1.454,-2.323l-3.200,-1.453l-2.033,-2.613l0.581,-2.033l1.452,-0.871l-0.289,-1.742l-1.744,-0.872l-1.745,-3.193l-1.452,-2.324l0.579,-0.871l-0.870,-2.904l1.743,-0.871l0.582,0.871l1.163,1.453l2.033,0.289l0.873,0.000l3.489,-2.032l0.872,-0.290l0.871,0.871l-0.871,1.451l1.743,1.453l0.582,-0.291l0.873,2.033l2.615,0.580l1.744,1.453l4.069,0.291l4.360,-0.581l-0.293,0.581z",IS:"M433.944,48.313l-0.870,1.742l3.196,1.742l-3.488,2.033l-8.138,2.033l-2.326,0.581l-3.488,-0.581l-7.849,-0.871l2.906,-1.162l-6.103,-1.451l4.940,-0.291l0.000,-0.871l-5.811,-0.580l1.744,-2.033l4.067,-0.291l4.362,1.742l4.360,-1.451l3.198,0.871l4.649,-1.452l-4.651,-0.290z",IT:"M516.5,125.846l-0.873,2.033l0.292,0.872l-0.582,1.451l-2.034-0.871l-1.454-0.291l-3.777-1.451l0.289-1.452l3.199,0.29l2.904-0.29L516.5,125.846zM499.059,117.715l1.743,1.742l-0.291,3.775l-1.452-0.291l-1.164,0.871l-0.872-0.58l-0.291-3.195l-0.579-1.742l1.452,0.291L499.059,117.715zM507.779,102.325l4.069,0.581l-0.289,1.452l0.581,1.161l-2.326-0.291l-2.035,0.872v1.452l-0.292,0.871l0.873,1.162l2.615,1.452l1.455,2.324l2.906,2.323h2.326l0.58,0.58l-0.872,0.582l2.617,0.871l2.036,0.871l2.324,1.451l0.291,0.581l-0.581,0.873l-1.455-1.453l-2.325-0.289l-1.163,1.742l2.036,1.16l-0.581,1.453h-0.873l-1.745,2.323l-0.87,0.291v-0.871l0.289-1.453l0.872-0.58l-1.161-1.742l-0.873-1.162l-1.161-0.58l-0.873-1.162l-1.744-0.29l-1.163-1.162l-2.034-0.291l-2.036-1.162l-2.615-1.741l-1.744-1.743l-0.872-2.614l-1.454-0.29l-2.325-0.872l-1.163,0.291l-1.743,1.162l-1.163,0.291l0.291-1.162l-1.454-0.291l-0.582-2.033l0.872-0.871l-0.872-1.162l0.291-0.871l1.165,0.581h1.16l1.744-0.871l0.291,0.29h1.453l0.583-1.162l2.034,0.29l1.163-0.29l0.289-1.162l1.745,0.291l0.291-0.58l2.615-0.292L507.779,102.325z",JM:"M260.116,180.148l2.036,0.290l1.452,0.581l0.291,0.871l-1.743,0.000l-0.872,0.291l-1.454,-0.291l-1.744,-1.161l0.290,-0.581l1.164,-0.290l-0.580,-0.290z",JO:"M571.728,141.816l0.293,-0.870l3.195,1.161l5.234,-2.903l1.163,3.193l-0.582,0.582l-5.522,1.451l2.905,2.614l-0.872,0.581l-0.581,0.871l-2.036,0.290l-0.581,1.161l-1.161,0.582l-3.196,-0.291l0.000,-0.291l1.160,-4.645l0.000,-0.872l0.581,-0.871l0.000,1.743z",JP:"M844.39,137.17l0.289,0.871l-1.452,1.742l-1.163-1.161l-1.454,0.871l-0.58,1.452l-2.035-0.581l0.292-1.452l1.452-1.743l1.452,0.291l1.165-1.161L844.39,137.17zM861.832,128.75l-1.165,2.323l0.584,1.162l-1.455,2.033l-3.488,1.452h-4.94l-3.78,3.195l-1.742-1.162l-0.292-2.033l-4.651,0.582l-3.488,1.451h-3.198l2.909,2.032l-1.745,4.646l-1.743,1.162l-1.454-1.162l0.582-2.323l-1.745-0.871l-1.163-1.742l2.617-0.871l1.452-1.742l2.907-1.453l2.035-2.033l5.523-0.581l2.907,0.291l2.904-4.646l1.746,1.162l4.07-2.614l1.452-1.161l1.744-3.484l-0.292-2.904l1.164-1.742l2.906-0.581l1.454,3.774v2.324l-2.615,2.613V128.75zM869.969,109.584l1.744,0.58l2.036-1.162l0.58,2.904l-4.068,0.871l-2.326,2.613l-4.36-1.742l-1.453,2.904h-3.199l-0.29-2.613l1.454-2.033l2.906-0.291l0.873-3.775l0.581-2.032l3.488,2.613L869.969,109.584z",KE:"M586.553,233.289l1.745,2.323l-2.034,1.162l-0.582,1.161l-1.163,0.000l-0.291,2.032l-0.872,1.161l-0.581,1.744l-1.162,0.871l-3.780,-2.615l-0.291,-1.742l-9.883,-5.517l-0.582,-0.289l0.000,-2.906l0.872,-1.161l1.164,-1.742l1.163,-2.033l-1.163,-3.194l-0.291,-1.452l-1.452,-1.742l1.743,-1.743l1.745,-1.741l1.452,0.290l0.000,1.742l0.873,0.871l2.033,0.000l3.489,2.323l0.874,0.000l0.580,0.000l0.580,0.290l2.036,0.290l0.581,-1.160l2.618,-1.162l1.161,0.870l1.743,0.000l-2.325,3.196l0.000,-9.873z",KG:"M669.108,114.811l0.581,-1.162l1.745,-0.580l4.649,0.871l0.292,-1.452l1.745,-0.581l3.779,1.162l1.161,-0.291l4.361,0.000l4.068,0.291l1.455,0.871l1.744,0.581l-0.289,0.581l-4.362,1.451l-1.162,1.162l-3.490,0.290l-0.871,1.744l-2.906,-0.291l-2.036,0.580l-2.615,1.162l0.289,0.580l-0.579,0.871l-5.233,0.291l-3.488,-0.871l-2.908,0.290l0.291,-1.743l2.906,0.582l0.873,-0.871l2.326,0.289l3.488,-2.032l-3.199,-1.451l-2.034,0.580l-2.035,-0.871l2.326,-1.742l0.872,0.291z",KH:"M758.638,201.637l-1.162,-1.453l-1.454,-2.613l-0.580,-3.485l1.741,-2.323l3.781,-0.581l2.326,0.581l2.326,0.872l1.160,-1.743l2.617,0.871l0.581,2.033l-0.289,3.194l-4.651,2.033l1.162,1.742l-2.906,0.290l-2.326,1.162l2.326,0.580z",KO:"M531.032,115.392l-0.289,0.581l-0.292,0.000l-0.289,-1.162l-0.582,-0.290l-0.581,-0.581l0.581,-0.871l0.582,0.000l0.289,-0.871l0.581,-0.291l0.293,0.291l0.581,0.290l0.290,0.581l0.583,0.000l0.579,0.580l0.292,0.000l-0.292,0.580l-0.290,0.292l0.000,0.290l-0.581,0.000l1.455,-0.581z",KP:"M833.343,114.229l0.292,0.582l-0.872,0.000l-1.164,0.872l-0.872,0.870l0.000,2.033l-1.452,0.581l-0.291,0.582l-1.163,0.580l-1.744,0.580l-1.163,0.582l-0.292,1.451l-0.289,0.291l1.163,0.290l1.452,1.161l-0.290,0.871l-1.162,0.000l-2.035,0.291l-0.874,1.161l-1.452,0.000l-1.454,-0.290l-0.289,0.290l-0.874,0.290l0.000,-0.580l-0.581,0.000l-0.871,-0.581l0.871,-1.161l0.581,-0.291l-0.291,-0.580l0.583,-1.453l0.000,-0.580l-1.744,-0.291l-1.162,-0.580l2.033,-1.742l3.198,-1.453l1.745,-2.032l1.453,0.871l2.325,0.000l-0.289,-1.452l4.067,-1.163l1.163,-1.451l-1.744,-1.451z",KR:"M826.948,124.684l2.617,3.194l0.582,2.034l0.000,2.903l-1.163,1.742l-2.326,0.582l-2.325,0.870l-2.326,0.291l-0.292,-1.452l0.292,-2.033l-1.163,-2.903l2.036,-0.291l-1.745,-2.614l1.452,0.000l0.874,-1.161l2.035,-0.291l1.162,0.000l-0.290,0.871z",KW:"M605.74,148.496l0.581,1.162l-0.291,0.580l0.871,2.323l-1.743,0.000l-0.873,-1.452l-2.326,-0.290l2.037,-2.614l-1.744,-0.291z",KZ:"M669.108,114.811l-1.454,0.291l-3.779,2.033l-1.163,2.032l-1.163,0.000l-0.580,-1.452l-3.489,0.000l-0.581,-2.323l-1.453,0.000l0.290,-2.614l-3.196,-2.032l-4.944,0.290l-3.196,0.291l-2.618,-2.614l-2.324,-0.872l-4.071,-2.031l-0.580,-0.291l-6.976,1.742l0.000,10.164l-1.455,0.000l-1.744,-2.033l-2.034,-0.871l-3.199,0.581l-1.160,0.871l0.000,-0.581l0.582,-1.163l-0.582,-0.869l-3.197,-1.162l-1.165,-2.323l-1.453,-0.581l-0.291,-1.161l2.909,0.289l0.000,-2.032l2.324,-0.290l2.326,0.290l0.581,-2.614l-0.581,-1.742l-2.616,0.291l-2.326,-0.872l-3.196,1.452l-2.618,0.581l-1.452,-0.581l0.289,-1.452l-1.743,-1.742l-2.034,0.000l-2.327,-1.742l1.453,-2.323l-0.580,-0.290l2.036,-3.195l2.906,1.742l0.289,-2.032l5.814,-3.195l4.362,0.000l5.812,2.032l3.489,1.163l2.906,-1.163l4.360,-0.290l3.488,1.453l0.871,-0.872l3.781,0.291l0.581,-1.453l-4.362,-1.742l2.618,-1.451l-0.581,-0.582l2.617,-0.870l-2.036,-1.743l1.454,-1.160l10.172,-0.872l1.454,-0.582l6.976,-1.161l2.326,-1.161l4.942,0.580l0.872,2.905l2.906,-0.581l3.488,0.872l-0.290,1.451l2.618,0.000l6.974,-2.614l-0.871,0.872l3.488,2.033l6.104,6.968l1.453,-1.451l3.780,1.742l4.070,-0.872l1.455,0.581l1.160,1.452l2.034,0.581l1.163,1.162l3.488,-0.291l1.455,1.743l-2.034,1.742l-2.328,0.291l0.000,2.904l-1.744,1.162l-5.232,-0.873l-2.034,4.938l-1.453,0.580l-5.524,1.162l2.617,4.646l-2.033,0.580l0.289,1.743l-1.744,-0.581l-1.455,-0.871l-4.068,-0.291l-4.361,0.000l-1.161,0.291l-3.779,-1.162l-1.745,0.581l-0.292,1.452l-4.649,-0.871l-1.745,0.580l0.581,-1.162z",LA:"M763.29,191.763l0.872,-1.451l0.291,-2.323l-2.327,-2.324l0.000,-2.613l-2.325,-2.323l-2.036,0.000l-0.582,0.871l-1.452,0.000l-0.871,-0.581l-2.907,1.742l0.000,-2.323l0.579,-2.904l-1.743,-0.289l-0.290,-1.744l-1.163,-0.580l0.581,-1.162l2.326,-1.742l0.289,0.581l1.455,0.000l-0.290,-2.904l1.453,-0.581l1.454,2.324l1.161,2.322l3.488,0.000l1.165,2.614l-1.747,0.580l-0.870,0.872l3.197,1.742l2.325,3.194l1.745,2.614l2.036,1.742l0.870,2.032l-0.581,2.614l-2.617,-0.871l-1.160,1.743l2.326,0.872z", +LB:"M572.31,139.494l-0.582,0.000l-0.291,0.580l-0.872,0.000l0.872,-2.323l1.454,-2.032l1.163,0.000l0.581,1.162l-1.452,1.161l0.873,-1.452z",LK:"M699.047,210.348l-0.579,2.904l-1.165,0.581l-2.323,0.582l-1.455,-2.034l-0.292,-4.066l1.166,-4.356l2.033,1.454l1.162,2.032l-1.453,-2.903z",LR:"M452.549,219.06l-0.873,0.000l-2.615,-1.453l-2.617,-2.032l-2.324,-1.452l-1.744,-1.742l0.580,-0.872l0.000,-0.871l1.454,-1.452l1.163,-1.451l0.581,0.000l0.872,-0.290l1.162,1.741l-0.290,1.162l0.582,0.581l0.581,0.000l0.582,-1.161l0.871,0.000l0.000,0.870l0.291,1.162l-0.582,1.452l0.582,0.581l0.871,0.290l1.162,1.161l0.293,1.162l-0.293,0.291l0.289,-2.323z",LS:"M553.416,310.531l1.163,0.872l-0.873,1.451l-0.581,0.871l-1.454,0.292l-0.581,0.869l-0.871,0.291l-2.036,-2.032l1.454,-1.742l1.453,-1.163l1.163,-0.579l-1.163,-0.870z",LT:"M536.265,81.417l-0.291,-0.582l0.582,-0.870l-1.454,-0.291l-2.906,-0.581l-0.580,-2.322l3.197,-0.871l4.649,0.290l2.618,-0.290l0.581,0.580l1.455,0.291l2.614,1.162l0.290,1.160l-2.326,1.162l-0.578,1.452l-2.908,0.872l-2.907,0.000l-0.582,-0.872l1.454,0.290z",LU:"M490.338,93.032l0.579,0.581l0.000,1.452l-0.871,0.000l-0.581,-0.291l0.290,-1.451l-0.583,0.291z",LV:"M531.616,76.771l0.290,-2.033l1.162,-1.742l2.616,-0.871l2.326,2.033l2.035,0.000l0.581,-2.033l2.325,-0.581l1.165,0.290l2.614,1.162l2.034,0.000l1.455,0.581l0.291,1.161l0.871,1.742l-2.906,1.162l-1.745,0.291l-2.614,-1.162l-1.455,-0.291l-0.581,-0.580l-2.618,0.290l-4.649,-0.290l3.197,-0.871z",LY:"M514.755,167.951l-2.036,1.162l-1.452,-1.452l-4.361,-1.161l-1.452,-1.743l-2.035,-1.451l-1.163,0.580l-1.163,-1.451l0.000,-1.162l-1.744,-2.033l1.162,-1.161l-0.291,-1.743l0.291,-1.452l0.000,-1.451l0.291,-2.033l0.000,-1.453l-0.871,-2.322l1.162,-0.581l0.290,-1.162l-0.290,-1.161l2.034,-1.162l0.872,-0.870l1.164,-0.873l0.291,-2.032l3.195,0.872l1.165,0.000l2.326,0.290l3.486,1.161l1.456,2.614l2.325,0.581l4.067,1.161l2.907,1.162l1.165,-0.581l1.453,-1.452l-0.582,-2.033l0.874,-1.162l1.741,-1.451l2.036,-0.290l3.778,0.580l0.873,1.161l1.163,0.000l0.871,0.582l2.616,0.291l0.582,0.870l-0.871,1.452l0.289,1.162l-0.579,1.451l0.871,2.324l0.000,9.873l0.000,10.162l0.000,5.228l-3.199,0.291l0.000,0.870l-11.045,-5.227l-11.046,-5.226l2.616,-1.451z",MA:"M459.526,132.525l1.743,1.161l2.616,0.000l2.615,0.581l1.164,0.000l1.163,1.742l0.291,1.742l0.871,2.905l0.582,0.580l-0.289,0.871l-3.782,0.582l-1.162,0.870l-1.744,0.291l0.000,2.032l-3.197,1.162l-1.162,1.452l-2.036,0.581l-2.906,0.581l-4.361,2.032l0.000,3.194l-0.581,0.000l0.292,1.452l-1.745,0.000l-0.872,0.871l-1.161,0.000l-1.165,-0.581l-2.324,0.291l-0.873,2.323l-0.872,0.000l-1.162,3.485l-4.069,3.194l-0.874,3.775l-1.162,1.162l-0.290,0.870l-6.107,0.291l0.000,-1.161l1.165,-0.872l0.871,-1.451l-0.291,-0.872l1.164,-2.033l1.454,-1.742l0.871,-0.291l0.873,-1.742l0.000,-1.451l0.870,-1.742l2.036,-0.872l1.745,-2.904l1.452,-1.162l2.326,-0.289l2.326,-1.743l1.452,-0.871l2.036,-2.323l-0.582,-3.194l1.163,-2.323l0.290,-1.452l1.744,-2.033l2.906,-1.162l2.037,-1.162l1.745,-2.903l0.871,-1.742l-2.035,0.000z",MD:"M547.02,98.259l0.584,-0.290l2.033,-0.290l2.034,0.870l1.162,0.000l1.166,0.872l-0.293,0.871l1.164,0.580l0.290,1.162l0.873,0.580l0.000,0.291l0.290,0.291l-0.581,0.290l-1.743,0.000l-0.293,-0.581l-0.581,0.291l0.291,0.580l-0.872,0.871l-0.291,0.872l-0.872,0.291l-0.291,-1.163l0.291,-1.161l-0.291,-1.161l-1.453,-1.742l-0.873,-1.162l-0.871,-0.872l0.873,0.290z",ME:"M528.417,113.94l-0.292,-0.291l-1.163,1.162l0.000,0.872l-0.581,0.000l-0.579,-0.872l-1.163,-0.582l0.289,-0.580l0.291,-1.451l0.872,-0.581l0.582,-0.290l0.873,0.290l0.290,0.581l0.872,0.290l1.162,0.581l-0.290,0.000l-0.581,0.871l0.582,0.000z",MG:"M610.099,265.23l0.873,1.163l0.582,1.742l0.579,3.485l0.584,1.160l-0.293,1.454l-0.581,0.579l-0.871,-1.451l-0.583,0.872l0.583,2.032l-0.291,1.160l-0.582,0.581l-0.292,2.325l-1.162,3.194l-1.161,3.775l-1.744,5.226l-1.162,3.775l-1.165,3.195l-2.325,0.581l-2.325,1.162l-1.455,-0.582l-2.324,-0.871l-0.872,-1.453l0.000,-2.613l-1.163,-2.032l0.000,-2.033l0.292,-2.032l1.452,-0.582l0.000,-0.871l1.163,-2.032l0.289,-1.742l-0.579,-1.453l-0.582,-1.451l-0.291,-2.614l1.163,-1.743l0.289,-1.742l1.455,0.000l1.452,-0.581l0.872,-0.579l1.454,0.000l1.455,-1.454l2.325,-1.740l0.872,-1.454l-0.580,-1.160l1.161,0.289l1.744,-1.743l0.000,-1.742l0.873,-1.160l-0.871,-1.160z",MK:"M530.451,115.973l0.292,0.000l0.289,-0.581l1.455,-0.581l0.581,0.000l1.161,-0.290l1.165,0.000l1.452,0.871l0.000,1.743l-0.290,0.290l-0.582,0.290l-1.452,0.000l-1.164,0.580l-1.742,0.291l-1.165,-0.581l-0.289,-1.161l-0.289,0.871z",ML:"M440.34,190.602l0.871,-0.290l0.583,-1.743l0.872,0.000l1.744,0.871l1.455,-0.580l1.161,0.000l0.581,-0.581l11.046,0.000l0.582,-2.032l-0.582,-0.291l-1.454,-11.906l-1.161,-11.615l4.070,-0.291l9.301,6.098l9.301,6.098l0.873,1.161l1.454,0.872l1.452,0.291l0.000,1.742l2.906,0.000l0.000,6.097l-1.452,2.034l-0.291,1.452l-2.326,0.580l-3.778,0.291l-0.872,0.870l-1.744,0.291l-2.035,0.000l-0.582,-0.581l-1.452,0.290l-2.617,1.162l-0.582,0.871l-2.035,1.161l-0.291,0.872l-1.163,0.581l-1.452,-0.581l-0.872,0.871l-0.291,1.742l-2.034,2.324l0.000,0.871l-0.873,1.161l0.290,1.741l-1.161,0.292l-0.583,0.290l-0.579,-1.162l-0.582,0.291l-0.581,0.000l-0.582,0.871l-2.037,0.000l-0.870,-0.582l-0.292,0.292l-0.871,-0.581l0.290,-0.871l-0.581,-0.291l-0.582,0.291l0.291,-1.162l0.582,-0.580l-1.162,-1.162l-0.292,-0.871l-0.582,-0.581l-0.581,0.000l-0.871,0.290l-0.873,0.582l-0.579,0.580l-1.165,-0.291l-0.871,-0.580l-0.582,-0.291l-0.581,0.582l-0.290,0.000l-0.293,-1.162l0.000,-0.871l0.000,-1.162l-1.162,-0.581l-0.581,-1.742l0.000,1.742z",MM:"M747.882,175.501l-1.743,1.163l-2.034,0.000l-1.163,3.194l-1.165,0.290l1.455,2.613l1.744,1.742l1.163,2.034l-1.163,2.323l-0.871,0.580l0.582,1.162l1.741,2.322l0.582,1.453l-0.290,1.452l1.162,2.322l-1.454,2.614l-1.452,2.903l-0.289,-2.031l0.870,-2.033l-0.870,-1.742l0.289,-2.904l-1.163,-1.453l-0.871,-3.484l-0.581,-3.484l-1.164,-2.034l-1.743,1.162l-3.200,2.033l-1.454,-0.291l-1.741,-0.580l0.870,-3.486l-0.579,-2.612l-2.036,-2.904l0.290,-1.161l-1.744,-0.291l-1.743,-2.323l-0.291,-2.033l0.871,0.291l0.292,-2.033l1.162,-0.581l-0.291,-1.161l0.583,-0.872l0.290,-2.904l2.033,0.580l1.163,-2.322l0.292,-1.162l1.453,-2.323l0.000,-1.742l3.489,-1.742l2.034,0.290l-0.291,-1.452l0.871,-0.580l0.000,-1.162l1.455,0.000l0.873,1.452l1.161,0.580l0.291,2.324l-0.291,2.032l-2.615,2.323l-0.290,3.484l2.905,-0.580l0.873,2.614l1.743,0.580l-0.872,2.033l2.035,1.162l1.163,0.580l2.035,-0.870l0.000,1.161l-2.326,1.742l-0.581,1.162l1.454,-0.580z",MN:"M715.327,95.356l2.907,-0.582l5.232,-2.323l4.069,-1.161l2.616,0.871l2.908,0.000l1.741,1.162l2.617,0.290l4.071,0.581l2.617,-2.033l-1.163,-1.453l2.907,-2.902l3.196,1.161l2.327,0.290l3.488,0.580l0.290,2.324l4.069,1.162l2.617,-0.582l3.487,-0.290l2.618,0.290l2.615,1.162l1.743,1.453l2.616,0.000l3.490,0.581l2.616,-0.872l3.488,-0.291l4.070,-2.033l1.745,0.291l1.452,0.871l3.197,-0.290l-1.453,2.324l-1.744,2.612l0.581,1.162l1.455,-0.290l2.904,0.290l2.036,-0.872l2.327,0.872l2.325,1.742l-0.291,1.161l-2.034,-0.289l-4.071,0.289l-2.035,0.872l-2.034,1.742l-4.069,1.162l-2.909,1.451l-2.614,-0.580l-1.745,-0.290l-1.454,1.742l0.873,1.162l0.581,0.871l-2.033,0.871l-1.745,1.452l-3.199,0.871l-4.359,0.289l-4.361,0.873l-3.197,1.451l-1.163,-0.870l-3.489,0.000l-4.069,-1.743l-2.615,-0.291l-3.781,0.291l-5.522,-0.580l-3.196,0.000l-1.456,-1.453l-1.163,-2.613l-1.743,-0.291l-3.488,-1.742l-3.778,-0.290l-3.198,-0.581l-0.873,-1.162l0.873,-3.194l-1.746,-2.323l-4.067,-0.872l-2.326,-1.451l0.581,2.032z",MR:"M440.34,190.602l-2.034,-1.742l-1.454,-2.033l-2.034,-0.580l-1.163,-0.872l-1.454,0.000l-1.452,0.581l-1.456,-0.291l-0.871,0.872l-0.290,-1.453l0.871,-1.451l0.290,-2.614l-0.290,-2.613l-0.291,-1.453l0.291,-1.161l-0.871,-1.452l-1.454,-1.161l0.582,-0.871l11.046,0.000l-0.581,-4.066l0.581,-1.451l2.615,0.000l0.000,-7.261l9.011,0.290l0.000,-4.355l10.176,6.679l-4.070,0.291l1.161,11.615l1.454,11.906l0.582,0.291l-0.582,2.032l-11.046,0.000l-0.581,0.581l-1.161,0.000l-1.455,0.580l-1.744,-0.871l-0.872,0.000l-0.583,1.743l0.871,-0.290z",MW:"M568.822,262.618l-0.582,2.032l0.582,3.776l1.165,-0.291l0.871,0.871l1.163,2.034l0.289,3.483l-1.163,0.581l-0.871,2.032l-1.744,-1.742l-0.292,-2.032l0.582,-1.161l-0.290,-1.161l-0.873,-0.582l-0.871,0.291l-1.455,-1.454l-1.452,-0.580l0.580,-2.612l0.872,-0.873l-0.290,-2.323l0.290,-2.322l0.582,-0.582l-0.582,-2.322l-1.452,-1.452l2.907,0.581l0.289,0.871l1.163,1.161l-0.582,-3.776z",MX:"M206.341,159.82l-1.163,2.324l-0.291,2.033l-0.290,3.774l-0.291,1.162l0.581,1.743l0.872,1.161l0.582,2.033l1.744,2.323l0.581,1.452l1.163,1.451l2.906,0.582l1.163,1.161l2.326,-0.871l2.034,-0.290l2.035,-0.291l1.745,-0.581l1.743,-1.161l0.872,-1.452l0.000,-2.323l0.582,-0.871l2.034,-0.581l2.908,-0.872l2.324,0.291l1.745,-0.291l0.582,0.582l0.000,1.161l-1.454,1.742l-0.873,1.742l0.582,0.581l-0.291,1.162l-0.872,2.033l-0.582,-0.581l-0.581,0.000l-0.580,0.000l-0.872,1.742l-0.582,-0.580l-0.290,0.290l0.000,0.290l-2.617,0.000l-2.615,0.000l0.000,1.743l-1.163,0.000l0.872,0.870l1.162,0.581l0.291,0.581l0.582,0.291l-0.292,0.871l-3.487,0.000l-1.164,2.033l0.291,0.580l-0.291,0.581l0.000,0.871l-3.197,-2.903l-1.454,-0.872l-2.325,-0.870l-1.453,0.290l-2.325,1.161l-1.163,0.291l-2.035,-0.872l-2.035,-0.580l-2.617,-1.162l-2.034,-0.291l-3.198,-1.451l-2.325,-1.161l-0.582,-0.872l-1.453,0.000l-2.906,-0.871l-1.163,-1.453l-2.907,-1.451l-1.454,-1.742l-0.581,-1.453l0.872,-0.290l-0.291,-0.581l0.582,-0.871l0.000,-0.871l-0.873,-1.161l-0.290,-1.162l-0.872,-1.452l-2.325,-2.614l-2.908,-2.322l-1.453,-1.453l-2.325,-1.161l-0.290,-0.872l0.290,-1.451l-1.454,-0.871l-1.453,-1.162l-0.872,-2.032l-1.454,-0.291l-1.453,-1.452l-1.454,-1.161l0.000,-0.871l-1.453,-2.033l-1.162,-2.324l0.290,-0.870l-2.035,-1.162l-0.872,0.000l-1.744,-0.581l-0.290,1.162l0.290,1.161l0.290,2.034l0.872,1.161l2.036,2.032l0.581,0.581l0.291,0.290l0.581,0.872l0.291,0.000l0.581,1.742l0.872,0.580l0.581,1.162l1.745,1.162l0.872,2.613l0.872,1.162l0.872,1.452l0.000,1.452l1.453,0.000l0.872,1.160l1.164,1.454l0.000,0.290l-1.164,1.161l-0.581,0.000l-0.581,-1.742l-2.035,-1.452l-1.744,-1.453l-1.454,-0.580l0.000,-2.033l-0.291,-1.452l-1.453,-0.870l-1.744,-1.453l-0.581,0.581l-0.582,-0.871l-1.743,-0.581l-1.745,-1.742l0.291,0.000l1.163,0.000l1.162,-0.872l0.000,-1.451l-2.034,-1.742l-1.744,-0.871l-0.873,-1.742l-1.162,-1.744l-1.163,-2.322l-1.163,-2.323l3.198,-0.291l3.487,-0.290l-0.290,0.581l4.070,1.452l6.395,1.742l5.232,0.000l2.326,0.000l0.000,-1.162l4.650,0.000l1.163,1.162l1.453,0.871l1.454,1.162l0.872,1.451l0.872,1.453l1.454,0.871l2.325,0.871l1.744,-2.323l2.035,0.000l2.034,1.161l1.454,1.742l0.872,1.742l1.744,1.452l0.582,2.033l0.581,1.162l2.326,0.871l1.744,0.580l-1.163,0.000z",MY:"M751.953,213.833l0.29,1.451l1.744-0.289l0.873-1.162l0.582,0.29l1.741,1.743l1.165,1.741l0.29,1.743l-0.29,1.452v0.87l0.29,1.453l0.871,0.871l1.162,2.322v1.162h-2.033l-2.616-2.033l-3.195-2.032l-0.295-1.452l-1.452-1.743l-0.581-2.322l-0.871-1.452l0.289-2.031l-0.58-1.162l0.291-0.582L751.953,213.833zM800.205,218.769l-2.034,0.871l-2.325-0.58h-3.198l-0.871,3.193l-1.163,0.872l-1.452,3.774l-2.036,0.581l-2.615-0.581l-1.454,0.291l-1.453,1.16h-1.744l-1.744,0.581l-2.033-1.741l-0.584-1.743l2.036,0.871l2.325-0.581l0.581-2.322l1.163-0.29l3.197-0.581l2.036-2.324l1.162-1.741l1.453,1.451l0.58-0.87h1.163l0.291-1.743v-1.451l2.327-1.743l1.161-2.322h1.162l1.455,1.452v1.162l2.034,0.869l2.325,0.872l-0.29,0.872l-1.744,0.289L800.205,218.769z",MZ:"M568.822,262.618l2.036,-0.292l3.486,0.872l0.581,-0.291l2.036,-0.289l0.872,-0.581l1.746,0.000l2.907,-1.162l2.323,-1.452l0.292,1.162l0.000,2.613l0.289,2.614l0.000,4.064l0.584,1.453l-0.873,2.033l-0.873,1.742l-1.742,1.742l-2.618,1.161l-3.199,1.163l-2.905,3.194l-1.163,0.290l-2.036,2.033l-1.162,0.580l0.000,2.034l1.162,2.032l0.582,1.741l0.000,0.874l0.581,-0.292l-0.291,2.614l-0.290,1.451l0.581,0.290l-0.291,1.162l-1.161,1.161l-2.327,0.873l-3.198,1.451l-1.452,1.162l0.289,1.161l0.873,0.000l-0.291,1.452l-2.034,0.000l-0.291,-1.162l-0.580,-1.161l0.000,-1.162l0.290,-2.904l-0.582,-2.033l-1.452,-3.774l2.904,-3.195l0.874,-2.033l0.289,-0.290l0.293,-1.452l-0.293,-0.870l0.000,-2.033l0.582,-2.032l0.000,-3.486l-1.452,-0.871l-1.163,-0.289l-0.582,-0.582l-1.452,-0.581l-2.325,0.000l0.000,-0.870l-0.292,-2.033l8.429,-2.325l1.455,1.454l0.871,-0.291l0.873,0.582l0.290,1.161l-0.582,1.161l0.292,2.032l1.744,1.742l0.871,-2.032l1.163,-0.581l-0.289,-3.483l-1.163,-2.034l-0.871,-0.871l-1.165,0.291l-0.582,-3.776l-0.582,2.032z",NA:"M518.825,309.661l-2.036,-2.325l-1.163,-2.033l-0.579,-2.613l-0.584,-2.032l-1.161,-4.065l0.000,-3.485l-0.291,-1.452l-1.163,-1.162l-1.454,-2.034l-1.452,-3.483l-0.582,-1.743l-2.034,-2.613l-0.291,-2.033l1.452,-0.581l1.455,-0.581l1.743,0.292l1.745,1.161l0.581,-0.291l11.047,0.000l2.033,1.162l6.396,0.582l5.232,-1.162l2.326,-0.582l1.745,0.000l0.871,0.582l0.290,0.289l-1.743,0.582l-0.874,0.000l-1.744,1.162l-0.871,-1.162l-4.361,0.871l-2.033,0.291l0.000,9.582l-2.908,0.289l0.000,7.843l0.000,10.163l-2.326,1.451l-1.452,0.290l-1.744,-0.581l-1.162,-0.290l-0.582,-1.162l-1.163,-0.580l1.163,-1.453z",NC:"M930.142,289.042l2.325,1.452l1.452,1.454l-1.162,0.579l-1.453,-0.871l-2.036,-1.162l-1.744,-1.452l-1.742,-1.741l-0.582,-1.162l1.161,0.000l1.745,1.162l1.162,0.870l-0.874,-0.871z",NCY:"M563.881,134.267l0.289,0.000l0.291,-0.581l2.035,0.000l2.326,-0.871l-1.745,1.162l0.293,0.580l-0.293,0.000l-0.581,0.000l-0.581,0.000l-0.290,-0.290l-0.582,0.000l-0.582,0.290l0.580,0.290z",NE:"M479.583,198.151l0.291,-2.032l-3.198,-0.581l-0.291,-1.161l-1.453,-2.033l-0.292,-1.162l0.292,-1.161l1.744,-0.291l0.872,-0.870l3.778,-0.291l2.326,-0.580l0.291,-1.452l1.452,-2.034l0.000,-6.097l4.070,-1.453l7.849,-5.227l9.592,-5.226l4.361,1.161l1.452,1.452l2.036,-1.162l0.581,4.357l1.164,0.871l0.000,0.871l1.163,0.871l-0.581,1.162l-1.164,5.517l-0.292,3.484l-3.486,2.614l-1.165,3.775l1.165,0.871l0.000,1.742l1.742,0.291l-0.289,1.161l-0.582,0.291l-0.292,0.871l-0.289,0.000l-2.036,-2.904l-0.580,-0.291l-2.327,1.453l-2.033,-0.581l-1.455,-0.291l-0.872,0.291l-1.453,0.000l-1.743,1.161l-1.455,0.000l-3.196,-1.161l-1.452,0.581l-1.165,0.000l-1.163,-1.162l-2.617,-0.872l-3.195,0.291l-0.582,0.581l-0.292,1.452l-0.871,1.161l-0.291,2.324l-2.034,-1.453l-0.874,0.000l1.161,-0.871z",NG:"M497.023,217.898l-2.615,0.871l-1.164,0.000l-1.161,0.581l-2.037,0.000l-1.452,-1.743l-0.873,-2.032l-2.033,-1.742l-2.036,0.000l-2.615,0.000l0.289,-4.647l0.000,-1.741l0.581,-1.743l0.582,-0.871l1.454,-1.452l-0.291,-0.873l0.580,-1.160l-0.580,-1.453l0.000,-1.160l0.291,-2.324l0.871,-1.161l0.292,-1.452l0.582,-0.581l3.195,-0.291l2.617,0.872l1.163,1.162l1.165,0.000l1.452,-0.581l3.196,1.161l1.455,0.000l1.743,-1.161l1.453,0.000l0.872,-0.291l1.455,0.291l2.033,0.581l2.327,-1.453l0.580,0.291l2.036,2.904l0.289,0.000l1.163,0.871l-0.289,0.580l0.000,0.872l-2.326,2.323l-0.873,1.742l-0.289,1.452l-0.582,0.582l-0.581,1.742l-1.455,1.161l-0.581,1.452l-0.580,1.161l-0.291,1.162l-1.744,0.870l-1.746,-1.161l-0.871,0.000l-1.743,1.743l-0.872,0.000l-1.164,2.614l0.872,-2.032z",NI:"M237.734,200.475l-0.872,-0.871l-1.163,-1.162l-0.581,-0.871l-1.163,-0.871l-1.454,-1.162l0.291,-0.580l0.291,0.580l0.291,-0.290l0.872,0.000l0.291,-0.871l0.581,0.000l-0.290,-1.162l0.871,-0.291l0.582,0.291l0.581,-0.871l0.581,0.580l0.291,-0.289l0.581,-0.291l1.163,-0.871l0.000,-0.581l0.291,0.000l0.291,-0.580l0.291,0.000l0.290,0.290l0.582,0.000l0.581,-0.290l0.872,0.000l0.872,-0.291l0.291,-0.291l1.162,0.000l-0.291,0.291l-0.290,0.581l0.290,0.871l-0.582,1.162l-0.289,0.870l0.000,1.453l0.000,0.580l0.289,1.162l-0.580,0.290l-0.291,1.161l0.291,0.872l-0.581,0.581l0.000,0.871l0.581,0.290l-0.581,0.581l-0.872,0.000l-0.583,-0.581l-0.871,-0.290l-0.581,0.290l-1.745,-0.581l0.581,-0.291z",NL:"M490.628,83.74l2.035,0.000l0.581,1.161l-0.581,2.323l-0.871,1.162l-1.454,0.000l0.290,2.904l-1.452,-0.582l-1.745,-1.451l-2.617,0.580l-2.034,0.000l1.452,-0.870l2.618,-4.066l-3.778,1.161z",NO:"M551.381,35.246l8.43,2.032l-3.488,0.582l3.198,1.742l-4.942,1.161l-2.034,0.29l1.161-2.032l-3.486-1.162l-4.362,1.162l-1.452,2.032l-2.615,1.162l-2.907-0.581h-3.488l-3.198-1.452l-1.453,0.581l-1.744,0.29l-0.582,1.743l-5.231-0.291l-0.582,1.452h-2.615l-1.745,2.033l-2.906,2.903l-4.361,3.775l1.165,1.162l-0.873,0.872h-2.907l-1.744,2.613l0.29,3.775l1.743,1.162l-1.162,3.484l-2.033,1.742l-1.455,1.742l-1.742-1.742l-5.524,3.194l-3.488,0.582l-3.778-1.452l-1.163-2.905l-0.871-6.387l2.615-1.743l7.268-2.323l5.523-2.904l4.941-3.774l6.685-5.228l4.651-2.033l7.559-3.484l5.813-1.162h4.651l4.069-2.324l5.231,0.291L551.381,35.246zM541.79,16.951l-6.105,1.162l-4.941-0.87l2.036-0.582l-1.747-0.872l5.814-0.58l0.873,1.161L541.79,16.951zM524.058,11.724l9.01,2.033l-6.977,1.162l-1.452,2.032l-2.325,0.581l-1.455,2.324h-3.196l-6.104-1.743l2.615-0.87l-4.069-0.873l-5.523-2.323l-2.036-2.033l7.56-1.162l1.454,1.162l3.777-0.291l1.163-0.871h4.07L524.058,11.724zM543.823,9.692l5.522,1.161l-4.358,1.452l-7.849,0.29l-8.14-0.581l-0.582-0.58h-3.777l-3.199-1.453l8.722-0.58l3.778,0.58l2.906-0.871L543.823,9.692z",NP:"M716.198,154.304l0.000,1.161l0.291,1.742l-0.291,1.162l-2.326,0.000l-3.197,-0.581l-2.325,-0.290l-1.453,-1.452l-3.779,-0.291l-3.490,-1.742l-2.614,-1.161l-2.908,-1.162l1.163,-2.613l1.745,-1.161l1.162,-0.582l2.326,0.871l2.616,1.742l1.454,0.291l1.162,1.452l2.034,0.581l2.326,1.162l2.906,0.580l-3.198,-0.291z",NZ:"M949.907,343.345l0.873,1.161l1.745-1.161l0.87,1.161v1.161l-0.87,1.452l-2.036,2.033l-1.163,1.161l0.873,1.162h-2.034l-2.327,1.162l-0.871,1.74l-1.455,2.904l-2.323,1.161l-1.165,0.871l-2.615-0.289l-1.742-0.872h-3.198l-0.292-1.162l1.453-2.033l3.49-2.613l1.744-0.58l2.034-1.16l2.325-1.452l1.744-1.453l1.162-2.032l0.872-0.58l0.58-1.452l1.745-1.451L949.907,343.345zM954.559,330.277l1.743,2.904l0.292-1.743l1.16,0.58l0.293,2.324l2.324,0.872h1.745l1.743-0.872l1.453,0.289l-0.871,2.326l-0.873,1.74h-2.033l-0.582,0.581v1.452l-0.289,0.291l-1.165,1.452l-1.163,2.032l-2.325,1.161l-0.29-0.87l-1.162-0.291l1.452-2.322l-0.871-1.453l-2.907-1.16v-0.873l2.035-1.159l0.58-2.034l-0.289-1.743l-1.164-1.743l0.292-0.58l-1.454-1.161l-2.034-2.323l-1.162-2.032l0.87-0.291l1.455,1.453l2.325,0.87L954.559,330.277z",OM:"M635.678,172.888l-0.871,1.742h-1.163l-0.58,0.581l-0.582,1.452l0.29,1.742l-0.29,0.581l-1.163-0.29l-1.744,1.162l-0.291,1.452l-0.58,0.581h-1.743l-1.165,0.582v1.162l-1.163,0.581l-1.452-0.291l-2.034,1.162h-1.163l-0.873-1.743l-2.325-4.645l8.431-2.613l1.745-5.519l-1.165-2.032v-1.162l0.873-1.162v-1.161l1.162-0.581l-0.581-0.291l0.289-1.742h1.456l1.161,1.742l1.745,1.161l2.036,0.291l1.45,0.581l1.165,1.452l0.871,0.872l0.872,0.58v0.582l-0.872,1.451l-0.582,0.872L635.678,172.888zM628.995,159.82l-0.291,0.291l-0.583-0.871l0.874-0.872l0.289,0.291L628.995,159.82z",PA:"M259.244,211.219l-0.872,-0.871l-0.580,-1.452l0.872,-0.871l-0.872,-0.290l-0.582,-0.871l-1.163,-0.581l-1.162,0.000l-0.582,1.162l-1.162,0.580l-0.582,0.000l-0.291,0.581l1.163,1.451l-0.581,0.581l-0.582,0.291l-1.163,0.290l-0.581,-1.742l-0.291,0.291l-0.872,0.000l-0.581,-1.162l-1.163,-0.291l-0.580,-0.290l-1.164,0.000l-0.291,0.581l-0.290,-0.291l0.290,-0.580l0.291,-0.582l-0.291,-0.289l0.583,-0.581l-0.583,-0.291l0.000,-1.161l0.872,-0.291l1.163,1.162l0.000,0.581l0.872,0.000l0.291,-0.291l0.872,0.872l1.163,-0.291l1.163,-0.581l1.744,-0.579l0.872,-0.873l1.744,0.000l-0.291,0.291l1.745,0.291l1.163,0.291l0.871,0.870l0.872,0.870l-0.290,0.292l0.872,1.741l-0.582,0.871l-0.872,-0.289l0.582,-1.451z",PE:"M282.208,279.17l-0.872,1.451l-1.163,0.872l-2.905,-1.743l-0.292,-1.162l-5.232,-2.613l-4.942,-3.195l-2.325,-1.451l-1.163,-2.323l0.581,-0.871l-2.326,-3.485l-2.905,-5.227l-2.326,-5.517l-1.163,-1.161l-0.872,-2.033l-2.325,-1.743l-1.745,-1.161l0.872,-1.162l-1.453,-2.613l0.872,-2.033l2.326,-1.742l0.291,1.160l-0.873,0.582l0.000,1.162l1.163,-0.290l1.163,0.290l1.162,1.451l1.454,-1.162l0.582,-1.742l1.744,-2.613l3.196,-0.871l3.198,-2.904l0.872,-1.741l-0.581,-2.324l0.872,-0.291l1.744,1.452l0.872,1.163l1.163,0.870l1.744,2.903l2.035,0.291l1.453,-0.870l1.164,0.579l1.452,-0.290l2.326,1.452l-1.744,2.613l0.582,0.290l1.452,1.454l-2.324,-0.290l-0.583,0.580l-2.033,0.289l-3.198,2.034l-0.291,1.161l-0.581,1.162l0.290,1.451l-1.744,0.581l0.000,1.162l-0.872,0.581l1.163,2.614l1.744,1.451l-0.581,1.451l1.744,0.000l0.872,1.453l2.616,0.000l2.326,-1.453l-0.292,4.066l1.163,0.292l1.744,-0.292l2.326,4.355l-0.582,0.873l-0.290,2.033l0.000,2.323l-1.163,1.452l0.582,0.872l-0.582,0.869l1.163,2.324l1.745,-2.904z",PG:"M902.817,249.55l-0.873,0.29l-1.163-0.871l-1.162-1.742l-0.581-2.032l0.581-0.289l0.29,0.579l0.583,0.872l1.452,1.741l1.163,0.871L902.817,249.55zM892.063,246.065l-1.455,0.292l-0.29,0.58l-1.454,0.871l-1.452,0.582h-1.452l-2.328-0.872l-1.453-0.872v-0.871l2.616,0.582l1.454-0.292l0.289-1.159l0.582-0.293l0.292,1.452h1.452l0.873-1.159l1.452-0.873l-0.289-1.741h1.741l0.584,0.58l-0.291,1.452L892.063,246.065zM878.982,251.292l2.326,1.742l1.741,2.904h1.745v1.16l2.035,0.582l-0.87,0.291l2.904,1.16l-0.29,0.871l-1.744,0.292l-0.87-0.872l-2.328-0.291l-2.616-0.29l-2.325-1.743l-1.452-1.451l-1.454-2.613l-3.488-1.161l-2.326,0.871l-1.744,0.871l0.292,2.032l-2.034,0.871l-1.744-0.29l-2.617-0.29l-0.29-9.002v-8.712l4.94,1.742l4.941,1.451l2.036,1.453l1.452,1.452l0.292,1.741l4.649,1.743l0.583,1.451l-2.328,0.291L878.982,251.292zM895.259,243.451l-0.873,0.582l-0.582-1.741l-0.579-0.873l-1.162-0.87l-1.455-1.162l-2.034-0.871l0.579-0.58l1.455,0.58l1.163,0.581l1.163,0.871l0.87,1.161l1.165,0.871L895.259,243.451z",PH:"M821.715,207.735l0.292,2.033v1.451l-0.872,2.322l-0.871-2.612l-1.454,1.452l0.871,2.033l-0.871,1.16l-3.199-1.452l-0.581-2.032l0.874-1.452l-1.745-1.161l-0.873,1.161l-1.452-0.29l-2.034,1.742l-0.292-0.871l0.871-2.323l1.744-0.871l1.455-0.872l1.163,1.162l2.035-0.87l0.29-1.162h2.033v-2.323l2.036,1.453l0.29,1.451L821.715,207.735zM815.03,202.798l-0.871,0.87l-0.873,1.744l-0.871,0.579l-1.744-1.741l0.582-0.871l0.581-0.581l0.289-1.743l1.455-0.29l-0.292,2.033l2.036-2.614L815.03,202.798zM799.916,205.413l-3.488,2.612l1.163-2.033l2.034-1.741l1.743-1.744l1.454-2.902l0.291,2.322l-1.745,1.453L799.916,205.413zM809.216,198.151l1.743,0.872h1.745v1.161l-1.452,1.162l-1.745,0.871v-1.162l0.292-1.451L809.216,198.151zM819.099,197.571l0.874,2.904l-2.036-0.582v0.872l0.581,1.741l-1.162,0.582l-0.29-2.033h-0.584l-0.578-1.742l1.743,0.291v-1.162l-1.743-2.033h2.614L819.099,197.571zM808.344,194.958l-0.873,2.323l-1.161-1.162l-1.454-2.323l2.615,0.291L808.344,194.958zM807.764,180.148l1.743,0.581l0.871-0.581v0.581l-0.289,1.162l0.87,2.033l-0.581,2.324l-1.744,0.87l-0.29,2.323l0.582,2.033l1.452,0.29l1.165-0.29l3.486,1.451l-0.289,1.743l0.87,0.581l-0.289,1.161l-2.036-1.161l-1.163-1.452l-0.579,0.871l-1.744-1.743l-2.617,0.581l-1.454-0.581l0.291-1.162l0.873-0.871l-0.873-0.58l-0.291,1.162l-1.453-1.743l-0.29-1.161l-0.291-2.613l1.162,0.871l0.292-4.355l0.871-2.324H807.764z",PK:"M680.735,128.75l2.036,1.451l0.870,2.033l4.361,1.162l-2.617,2.323l-3.196,0.290l-4.069,-0.581l-1.453,1.162l1.160,2.324l0.874,2.032l2.325,1.161l-2.325,1.743l0.000,2.032l-2.618,2.614l-1.745,2.904l-2.904,2.904l-3.199,-0.291l-3.197,2.904l1.745,1.162l0.579,2.032l1.455,1.451l0.583,2.324l-6.106,0.000l-1.745,2.033l-2.033,-0.871l-0.873,-2.033l-2.034,-2.033l-5.234,0.580l-4.360,0.000l-4.068,0.291l1.161,-3.193l4.070,-1.162l-0.290,-1.452l-1.453,-0.291l0.000,-2.613l-2.617,-1.162l-1.162,-1.742l-1.453,-1.452l4.649,1.452l2.907,-0.291l1.455,0.291l0.581,-0.580l2.035,0.289l3.488,-1.161l0.291,-2.323l1.452,-1.742l2.034,0.000l0.292,-0.581l2.036,-0.290l1.160,0.000l0.875,-0.580l0.000,-1.743l1.162,-1.743l1.742,-0.580l-1.161,-1.743l2.616,0.000l0.872,-0.871l-0.289,-1.162l1.450,-1.161l-0.289,-1.452l-0.581,-1.162l1.454,-1.161l3.197,-0.580l2.907,-0.291l1.454,-0.581l-1.743,0.290z",PL:"M515.047,90.418l-1.165,-1.742l0.292,-0.870l-0.581,-1.452l-1.163,-1.162l0.872,-0.581l-0.583,-1.452l1.744,-0.870l4.362,-1.163l3.489,-1.161l2.614,0.581l0.291,0.580l2.617,0.291l3.489,0.290l4.940,-0.290l1.454,0.290l0.582,0.872l0.289,1.452l0.582,0.870l0.000,1.161l-1.453,0.582l0.871,1.162l0.000,1.161l1.455,2.614l-0.292,0.580l-1.452,0.580l-2.617,2.033l0.872,1.452l-0.582,-0.289l-2.616,-1.163l-2.033,0.582l-1.455,-0.291l-1.453,0.581l-1.455,-1.163l-1.160,0.582l0.000,-0.291l-1.454,-1.161l-2.034,-0.290l-0.290,-0.872l-1.746,-0.290l-0.581,0.580l-1.454,-0.580l0.293,-0.580l-2.036,-0.291l1.453,0.872z",PR:"M291.219,180.148l1.455,0.000l0.581,0.581l-0.872,0.871l-2.035,0.000l-1.453,0.000l-0.291,-1.162l0.582,-0.290l-2.033,0.000z",PS:"M571.728,141.816l0.000,1.743l-0.581,0.871l-1.160,0.291l0.000,-0.581l0.871,-0.581l-0.871,-0.289l0.578,-1.743l-1.163,-0.289z",PT:"M448.769,115.683l1.163,-0.581l1.163,-0.291l0.581,1.162l1.744,0.000l0.291,-0.290l1.746,0.000l0.581,1.452l-1.163,0.870l0.000,2.033l-0.582,0.291l0.000,1.451l-1.162,0.291l1.162,1.452l-0.873,2.032l0.873,0.581l-0.291,0.871l-0.871,0.871l0.000,1.162l-0.874,0.581l-1.452,-0.290l-1.454,0.290l0.292,-2.324l-0.292,-1.451l-1.163,-0.291l-0.581,-1.162l0.291,-1.742l0.871,-1.160l0.292,-0.873l0.582,-1.741l0.000,-1.162l-0.582,-0.871l0.292,1.161z",PY:"M301.103,292.237l1.163,-3.485l0.000,-1.451l1.453,-2.324l4.652,-0.871l2.616,0.000l2.615,1.451l0.000,0.871l0.872,1.452l-0.291,3.776l2.907,0.581l1.163,-0.581l2.035,0.871l0.291,0.581l0.291,2.613l0.290,1.162l1.163,0.000l0.872,-0.290l1.163,0.290l0.000,1.741l-0.292,1.454l-0.580,1.742l-0.582,2.322l-2.325,2.032l-2.326,0.581l-3.197,-0.581l-2.617,-0.580l2.617,-4.354l-0.291,-1.162l-2.906,-1.161l-3.198,-2.034l-2.326,-0.290l5.232,4.356z",QA:"M613.587,162.725l0.000,-1.743l0.582,-1.452l0.873,-0.290l0.871,0.871l0.000,1.451l-0.581,1.744l-0.872,0.000l0.873,0.581z",RO:"M536.265,99.13l1.163,-0.581l1.744,0.581l1.745,0.000l1.163,0.581l1.162,-0.581l2.036,-0.291l0.579,-0.580l1.163,0.000l0.873,0.290l0.871,0.872l0.873,1.162l1.453,1.742l0.291,1.161l-0.291,1.161l0.291,1.163l1.452,0.580l1.166,-0.580l1.161,0.580l0.289,0.581l-1.450,0.581l-0.874,0.000l-0.872,3.194l-1.454,-0.290l-2.035,-0.872l-3.196,0.581l-1.452,0.581l-4.071,0.000l-2.035,-0.581l-1.164,0.291l-0.581,-1.162l-0.581,-0.581l0.581,-0.291l-0.581,-0.289l-0.871,0.580l-1.745,-0.872l-0.289,-1.161l-1.454,-0.580l-0.293,-0.872l-1.741,-1.161l2.325,-0.581l1.742,-1.741l1.164,-2.034l-1.743,0.581z",RS:"M531.325,106.1l1.454,0.580l0.289,1.161l1.745,0.872l0.871,-0.580l0.581,0.289l-0.581,0.291l0.581,0.581l-0.871,0.581l0.290,1.161l1.454,1.162l-1.164,0.871l-0.580,0.871l0.290,0.289l-0.290,0.292l-1.165,0.000l-1.161,0.290l0.000,-0.290l0.290,-0.292l0.292,-0.580l-0.292,0.000l-0.579,-0.580l-0.583,0.000l-0.290,-0.581l-0.581,-0.290l-0.293,-0.291l-0.581,0.291l-0.289,0.871l-0.582,0.000l0.290,0.000l-1.162,-0.581l-0.872,-0.290l-0.290,-0.581l-0.873,-0.290l0.581,-0.291l0.582,-1.161l-1.455,-1.162l0.581,-1.161l-0.871,0.000l1.163,-0.872l-0.873,-0.870l-0.871,-1.163l2.326,-0.580l1.455,0.000l1.741,1.161l-0.293,-0.872z",RU:"M869.098,91.29l2.907,4.936l-4.07-0.87l-1.743,4.065l2.614,2.613v2.033l-2.034-1.743l-1.743,2.323l-0.582-2.323l0.292-2.904l-0.292-2.904l0.582-2.033v-3.775l-1.454-2.613l0.291-3.774l2.326-1.162l-0.872-1.452l1.163-0.29l0.58,1.742l1.162,2.614l-0.29,2.903L869.098,91.29zM536.265,81.417l-4.94,0.29l-3.488-0.29l0.58-1.452l3.779-0.872l2.906,0.581l1.454,0.291l-0.582,0.871L536.265,81.417zM969.382,36.116l-3.196,0.291l-0.581-0.871l3.777-1.162h-0.01l0.58-0.29h2.326l3.779,0.872v0.29l-2.907,0.871h-3.778H969.382zM869.098,29.728h-4.069l-5.814-0.29l-0.582-0.29l2.618-1.162h3.488l4.067,0.872L869.098,29.728zM888.574,24.501l-3.198,1.162l-4.36-0.291l-4.942-1.16l0.582-0.873l5.232,0.291L888.574,24.501zM873.167,23.049l-2.324,2.033h-9.884l-4.651,0.58l-5.521-1.742l1.454-1.742l3.778-0.582h7.266L873.167,23.049zM632.19,36.407l-1.743,0.291l-9.012-0.291l-0.581-1.161l-4.941-0.872l-0.581-1.452l2.907-0.582V30.89l5.232-2.323l-2.325-0.291l6.393-2.613l-0.578-1.162l6.104-1.452l9.011-1.742l9.3-0.581l4.653-0.871l5.23-0.581l2.036,1.162l-1.745,0.871l-9.883,1.452l-8.43,1.162l-8.43,2.613l-4.069,2.614l-4.361,2.904l0.584,2.033L632.19,36.407zM969.382,52.379h-0.291l-3.486,1.161l-3.488-0.29l2.615,1.452l1.454,2.323l1.455,0.58l0.289,1.162l-0.873,0.872l-4.94-0.582l-7.849,2.033l-2.325,0.291l-4.362,2.033l-4.069,1.742l-0.871,1.161l-4.069-2.033l-6.977,2.324l-1.452-1.162l-2.618,1.162l-3.488-0.291l-0.871,1.742l-3.486,2.613l0.29,1.162l2.906,0.582l-0.291,4.064h-2.615l-1.163,2.324l1.163,1.161l-4.651,1.452l-1.163,3.194l-4.07,0.582l-0.87,2.903l-3.781,2.613l-1.162-2.032l-1.163-3.775l-1.454-6.389l1.164-3.775l2.324-1.453l0.291-1.451l4.36-0.581l4.942-3.484l4.649-2.904l4.943-2.033l2.326-3.775h-3.489l-1.744,2.324l-6.977,3.194l-2.034-3.485l-7.269,0.872l-6.975,4.646l2.325,1.742l-6.105,0.58l-4.359,0.291l0.291-2.032l-4.358-0.292l-3.199,1.453l-8.431-0.581l-9.01,0.871l-9.013,5.227l-10.463,6.679l4.357,0.29l1.165,1.743l2.615,0.581l1.744-1.452l3.196,0.291l3.78,2.904l0.29,2.323l-2.326,2.904v3.194l-1.452,4.356l-4.07,4.066l-0.87,1.741l-3.781,3.194l-3.777,3.194l-1.744,1.742l-3.488,1.452l-1.744,0.291l-1.744-1.453l-3.78,2.033l-0.579,0.871l-0.292-0.582v-1.161l1.454-0.291l0.29-3.194l-0.581-2.324l2.325-0.871l3.198,0.291l2.034-2.613l0.871-2.904l1.163-1.162l1.454-2.323l-4.651,0.871l-2.325,0.872h-4.361l-0.871-2.614l-3.488-1.742l-4.651-0.871l-1.16-2.904l-0.874-1.453l-0.871-1.161l-1.744-2.903l-2.617-1.162l-4.067-0.58h-3.491l-3.486,0.58l-2.325,1.162l1.452,0.871v1.452l-1.452,0.872l-2.328,2.903v1.162l-4.068,1.742l-3.197-1.162l-3.197,0.291l-1.452-0.871l-1.745-0.291l-4.069,2.033l-3.488,0.291l-2.616,0.872l-3.49-0.581h-2.615l-1.743-1.453l-2.615-1.162l-2.618-0.291l-3.486,0.291l-2.617,0.582l-4.069-1.162l-0.29-2.324l-3.488-0.58l-2.326-0.29l-3.196-1.162l-2.907,2.903l1.163,1.453l-2.617,2.033l-4.07-0.581l-2.617-0.29l-1.741-1.162h-2.908l-2.616-0.871l-4.068,1.161l-5.232,2.324l-2.907,0.582l-1.163,0.29l-1.454-1.742l-3.488,0.291l-1.163-1.162l-2.034-0.582l-1.16-1.452l-1.455-0.581l-4.069,0.872l-3.78-1.742l-1.453,1.451l-6.104-6.968l-3.488-2.033l0.871-0.871l-6.975,2.613h-2.617l0.29-1.451l-3.488-0.872l-2.906,0.581l-0.872-2.904l-4.941-0.581l-2.326,1.161l-6.977,1.162l-1.454,0.582l-10.172,0.872l-1.454,1.161l2.036,1.743l-2.617,0.87l0.581,0.581l-2.617,1.452l4.361,1.742l-0.581,1.453l-3.78-0.291l-0.871,0.872l-3.488-1.452l-4.36,0.29l-2.906,1.162l-3.488-1.162l-5.812-2.032h-4.361l-5.814,3.194l-0.289,2.033l-2.906-1.742l-2.036,3.195l0.58,0.29l-1.452,2.324l2.326,1.742h2.034l1.743,1.741l-0.289,1.453l1.452,0.581l-1.163,1.452l-2.906,0.581l-2.615,2.614l2.615,2.613l-0.289,2.032l2.906,3.194l-1.744,1.162l-0.29,0.581h-1.165l-2.033-1.743h-0.873l-1.745-0.871l-0.581-1.162l-2.614-0.58l-1.745,0.58l-0.581-0.58l-3.78-1.162l-3.778-0.581l-2.325-0.581l-0.581,0.581l-3.488-2.323l-3.197-1.161l-2.326-1.743l2.034-0.29l2.328-2.324l-1.455-1.162l4.07-1.162l-0.292-0.581l-2.323,0.581v-1.161l1.452-0.871l2.615-0.291l0.582-0.871l-0.582-1.452l1.163-1.451l-0.29-0.873l-4.07-0.871h-1.454l-1.744-1.162l-2.034,0.291l-3.488-0.871V91.29l-0.871-1.162h-2.327l-0.29-0.871l0.873-0.581l-1.744-1.742l-2.906,0.29h-0.872l-0.584,0.582h-1.16l-0.583-2.033l-0.871-0.872l0.581-0.291l2.326,0.291l1.163-0.58l-0.872-0.872l-2.036-0.581l0.292-0.29l-1.163-0.581l-1.743-1.742l0.578-0.871l-0.289-1.162l-2.615-0.581l-1.454,0.291l-0.29-0.872l-2.907-0.581l-0.871-1.742l-0.291-1.161l-1.455-0.582l1.163-0.871l-0.582-2.613l1.745-1.742l-0.291-0.291l3.199-1.742l-2.908-1.162l5.813-3.485l2.617-1.742l0.871-1.162l-4.069-2.032l1.162-1.742l-2.325-2.033l1.744-2.324l-3.198-3.194l2.617-2.033l-4.362-1.743l0.584-2.033l2.034-0.29l4.942-1.161l2.615-0.872l4.651,1.743l7.557,0.58l10.465,3.195l2.035,1.162v1.741l-2.906,1.453l-4.651,0.871l-12.21-2.033l-2.033,0.291l4.651,2.033v1.161l0.292,2.904l3.486,0.872l2.036,0.58l0.581-1.161l-1.746-1.162l1.746-1.162l6.685,1.742l2.326-0.581l-1.745-2.033l6.396-2.903l2.323,0.29l2.617,0.871l1.745-1.742l-2.326-1.742l1.163-1.742l-2.034-1.452l7.848,0.872l1.453,1.452l-3.489,0.289v1.453l2.326,1.162l4.361-0.582l0.581-2.033l5.812-1.161l9.594-2.323h2.034l-2.907,1.742l3.488,0.29l2.034-0.871h5.232l4.069-1.161l3.197,1.452l2.906-1.742l-2.906-1.453l1.454-1.162l8.14,0.872l3.778,0.871l10.176,3.194l1.742-1.452l-2.907-1.452v-0.581l-3.197-0.291l0.874-1.162l-1.455-2.323v-0.871l4.943-2.323l1.742-2.613l2.035-0.582l7.268,0.872l0.581,1.451l-2.615,2.324l1.743,0.871l0.872,1.742l-0.581,3.775l3.198,1.743l-1.165,1.742l-5.521,4.066l3.197,0.29l1.161-0.871l2.907-0.872l0.874-1.161l2.325-1.453l-1.744-1.452l1.454-1.742l-3.198-0.291l-0.582-1.451l2.326-2.904l-3.778-2.324l4.94-1.741l-0.581-2.033h1.453l1.454,1.452l-1.163,2.613l2.907,0.581l-1.162-2.033l4.65-0.872l5.522-0.29l5.232,1.451l-2.617-2.032l-0.29-3.195l4.94-0.291h6.688l5.812-0.29l-2.324-1.451l3.197-1.743l3.197-0.29l5.521-1.162l7.27-0.58l0.872-0.582l7.268-0.291l2.325,0.582l6.104-1.452h4.94l0.873-1.161l2.615-1.162l6.396-1.161l4.651,0.87l-3.489,0.872l6.104,0.291l0.874,1.452l2.324-0.871h8.141l6.104,1.452l2.325,1.162l-0.873,1.451l-2.907,0.581l-7.267,1.743l-2.036,0.581l3.49,0.58l4.068,0.581l2.326-0.581l1.452,1.743l1.165-0.581l4.359-0.582l9.013,0.582l0.579,1.161l11.628,0.582v-2.033l5.814,0.291h4.359l4.651,1.451l1.163,1.742l-1.745,1.162l3.488,2.323l4.36,1.161l2.615-2.904l4.653,1.162l4.65-0.871l5.233,0.871l2.034-0.581l4.648,0.29l-2.033-2.614l3.488-1.161l24.998,1.741l2.327,1.743l7.267,2.032l11.045-0.581l5.524,0.581l2.324,1.162l-0.58,2.033l3.486,0.581l3.78-0.581h4.941l4.94,0.581l5.234-0.29l4.938,2.323l3.488-0.872l-2.322-1.742l1.162-1.162l8.721,0.872l5.812-0.292l7.848,1.453l4.069,1.162h-0.01l6.976,2.033l6.977,2.614v1.742l1.744,0.871l-0.581-2.033l7.559,0.291l5.231,2.613l-2.616,1.162l-4.651,0.29v2.613l-1.161,0.581h-2.617l-2.034-0.871l-3.779-0.871l-0.582-1.162l-2.615-0.58l-3.199,0.58l-1.452-1.162l0.581-0.872l-3.198,0.582l1.165,1.452l-1.745,1.162H969.382zM762.998,15.499l-15.406,1.162l4.94-3.484l2.328-0.291h2.034l6.977,1.742L762.998,15.499zM614.46,9.401l-3.488,0.291l-2.617,0.29l-0.289,0.581l-3.199,0.291l-3.197-0.581l1.743-0.871h-6.104l5.233-0.581h4.359l0.291,0.581l1.744-0.581l2.618-0.291l4.067,0.581L614.46,9.401zM748.754,14.047l-5.812,0.29l-7.85-0.87l-4.359-0.872l-2.325-2.033l-3.779-0.581l7.268-1.742L738,7.369l5.232,1.452l6.396,2.614L748.754,14.047z", +RW:"M557.485,234.16l1.163,1.452l-0.289,1.741l-0.582,0.291l-1.454,-0.291l-0.874,1.743l-1.743,-0.290l0.293,-1.453l0.290,-0.290l0.000,-1.742l0.871,-0.580l0.582,0.290l-1.743,0.871z",SA:"M591.496,185.956l-0.291,-1.162l-0.873,-0.871l-0.290,-1.162l-1.453,-0.871l-1.454,-2.323l-0.582,-2.322l-2.034,-1.744l-1.163,-0.580l-1.743,-2.613l-0.292,-1.744l0.000,-1.741l-1.453,-2.904l-1.454,-1.162l-1.453,-0.580l-0.871,-1.452l0.000,-0.872l-0.581,-1.451l-0.874,-0.582l-1.162,-2.032l-1.452,-2.033l-1.456,-2.033l-1.452,0.000l0.290,-1.451l0.292,-0.871l0.292,-1.162l3.196,0.291l1.161,-0.582l0.581,-1.161l2.036,-0.290l0.581,-0.871l0.872,-0.581l-2.905,-2.614l5.522,-1.451l0.582,-0.582l3.488,0.873l4.067,2.032l7.561,5.517l5.230,0.000l2.326,0.290l0.873,1.452l1.743,0.000l1.165,2.323l1.452,0.581l0.289,0.871l2.036,1.162l0.290,1.162l-0.290,0.870l0.290,0.872l0.584,0.871l0.578,0.871l0.292,0.581l0.873,0.581l0.872,0.000l0.290,0.871l0.291,0.871l0.872,2.613l8.430,1.452l0.580,-0.580l1.165,2.031l-1.745,5.519l-8.430,2.613l-7.849,1.162l-2.615,1.161l-2.036,2.904l-1.163,0.291l-0.580,-0.873l-1.164,0.292l-2.615,-0.292l-0.582,-0.289l-3.197,0.000l-0.582,0.289l-1.161,-0.869l-0.873,1.451l0.289,1.161l1.161,-0.872z",SB:"M919.968,259.712l0.871,0.873h-2.034l-0.873-1.453l1.452,0.58H919.968zM916.48,257.972l-0.874,0.289l-1.743-0.289l-0.58-0.582v-1.161l2.034,0.581l0.873,0.58L916.48,257.972zM918.805,257.39l-0.291,0.582l-2.034-2.613l-0.582-1.453h0.871l0.873,2.033L918.805,257.39zM913.863,253.906v0.581l-2.034-1.161l-1.454-1.162l-1.161-0.871l0.579-0.29l1.164,0.871l2.326,1.161L913.863,253.906zM907.468,251.002l-0.581,0.29l-1.162-0.58l-1.163-1.162v-0.581l1.744,1.162L907.468,251.002z",SD:"M567.37,204.831l-0.582,0.000l0.000,-1.452l-0.292,-0.873l-1.453,-1.160l-0.292,-1.742l0.292,-2.033l-1.162,-0.291l-0.293,0.582l-1.452,0.289l0.582,0.582l0.291,1.742l-1.454,1.451l-1.453,2.033l-1.454,0.291l-2.325,-1.744l-1.163,0.582l0.000,0.871l-1.454,0.581l-0.290,0.582l-2.617,0.000l-0.289,-0.582l-2.035,0.000l-1.164,0.291l-0.581,-0.291l-1.452,-1.452l-0.584,-0.871l-2.033,0.581l-0.581,1.161l-0.872,2.324l-0.874,0.581l-0.872,0.289l-0.290,0.000l-0.871,-0.870l0.000,-0.870l0.289,-1.163l0.000,-1.162l-1.452,-1.742l-0.292,-1.162l0.000,-0.580l-1.162,-0.871l0.000,-1.453l-0.582,-1.161l-0.873,0.290l0.293,-1.161l0.580,-1.162l-0.289,-1.162l0.871,-0.870l-0.582,-0.581l0.872,-1.743l1.164,-2.032l2.324,0.291l0.000,-11.036l0.000,-0.870l3.199,-0.291l0.000,-5.228l11.045,0.000l10.755,0.000l10.755,0.000l0.874,2.615l-0.581,0.580l0.289,2.614l1.163,3.485l1.164,0.580l1.454,0.872l-1.454,1.742l-2.035,0.289l-0.874,0.873l-0.291,2.033l-1.161,4.065l0.290,0.870l-0.581,2.323l-0.872,2.904l-1.743,1.162l-1.163,2.322l-0.292,1.162l-1.454,0.582l-0.579,2.903l0.000,-0.291z",SE:"M534.813,50.346l-2.617,1.742l0.291,1.742l-4.362,2.324l-5.230,2.323l-2.036,3.774l2.036,2.033l2.615,1.452l-2.615,3.194l-2.907,0.581l-0.873,4.647l-1.744,2.613l-3.197,-0.291l-1.455,2.033l-3.196,0.291l-0.874,-2.614l-2.323,-3.194l-2.327,-3.776l1.455,-1.742l2.033,-1.742l1.162,-3.485l-1.743,-1.162l-0.290,-3.775l1.744,-2.612l2.907,0.000l0.873,-0.872l-1.165,-1.162l4.361,-3.774l2.907,-2.904l1.745,-2.033l2.615,0.000l0.582,-1.452l5.232,0.290l0.582,-1.742l1.744,-0.290l3.486,1.452l4.361,2.033l0.000,4.065l0.872,1.162l4.649,-0.871z",SI:"M511.848,102.905l2.326,0.291l1.162,-0.582l2.616,0.000l0.291,-0.580l0.582,0.000l0.582,1.162l-2.325,0.580l-0.293,1.162l-0.871,0.290l0.000,0.582l-1.163,0.000l-0.873,-0.291l-0.580,0.291l-1.743,0.000l0.581,-0.291l-0.581,-1.162l-0.289,1.452z",SK:"M525.802,94.774l0.000,0.291l1.160,-0.582l1.455,1.163l1.453,-0.581l1.455,0.291l2.033,-0.582l2.616,1.163l-0.872,0.870l-0.580,0.872l-0.582,0.290l-2.908,-0.872l-0.870,0.291l-0.582,0.581l-1.455,0.290l-0.289,0.000l-1.163,0.290l-1.163,0.290l-0.291,0.291l-2.324,0.581l-0.871,-0.290l-1.454,-0.872l-0.292,-0.870l0.292,-0.291l0.289,-0.581l1.165,0.000l0.871,-0.290l0.290,-0.291l0.289,-0.289l0.292,-0.581l0.582,0.000l0.580,-0.582l-0.874,0.000z",SL:"M442.376,212.381l-0.873,-0.291l-2.034,-1.161l-1.455,-1.452l-0.289,-0.871l-0.292,-2.033l1.455,-1.451l0.289,-0.582l0.292,-0.581l0.871,0.000l0.581,-0.580l2.326,0.000l0.582,0.871l0.581,1.163l0.000,0.870l0.582,0.581l0.000,1.161l0.581,-0.290l-1.163,1.451l-1.454,1.452l0.000,0.871l0.580,-0.872z",SN:"M427.84,193.505l-1.162,-2.032l-1.454,-1.161l1.164,-0.291l1.452,-2.032l0.582,-1.452l0.871,-0.872l1.456,0.291l1.452,-0.581l1.454,0.000l1.163,0.872l2.034,0.580l1.454,2.033l2.034,1.742l0.000,1.742l0.581,1.742l1.162,0.581l0.000,1.162l0.000,0.871l-0.289,0.290l-1.744,-0.290l0.000,0.290l-0.581,0.000l-2.036,-0.581l-1.453,0.000l-4.942,-0.290l-0.871,0.290l-0.874,0.000l-1.453,0.581l-0.291,-2.323l2.327,0.291l0.580,-0.581l0.582,0.000l1.163,-0.581l1.163,0.581l1.162,0.000l1.163,-0.581l-0.582,-0.872l-0.870,0.581l-0.873,0.000l-1.163,-0.581l-0.871,0.000l-0.581,0.581l2.909,0.000z",SO:"M610.681,199.023l1.452,-0.290l1.162,-0.871l1.165,0.000l0.000,0.871l-0.291,1.451l0.000,1.453l-0.582,1.161l-0.581,2.904l-1.452,2.904l-1.747,3.484l-2.323,4.066l-2.326,3.194l-3.199,3.775l-2.907,2.323l-4.068,2.613l-2.616,2.033l-2.908,3.486l-0.582,1.451l-0.580,0.581l-1.745,-2.323l0.000,-9.873l2.325,-3.196l0.874,-0.870l1.744,0.000l2.324,-2.033l3.780,0.000l7.850,-8.421l1.742,-2.323l1.163,-1.742l0.000,-1.452l0.000,-2.614l0.000,-1.161l0.290,0.000l0.873,0.000l-1.163,0.581z",SOL:"M608.355,204.831l-1.163,1.742l-1.742,2.323l-2.328,0.000l-9.010,-3.194l-1.163,-0.871l-0.873,-1.452l-1.163,-1.453l0.583,-1.161l1.161,-1.452l0.873,0.580l0.582,1.162l1.163,1.162l1.163,0.000l2.614,-0.580l3.199,-0.582l2.327,-0.580l1.452,-0.291l0.871,-0.580l1.744,0.000l-0.290,0.000l0.000,1.161l0.000,2.614l0.000,-1.452z",SR:"M316.509,214.415l3.198,0.580l0.290,-0.291l2.326,-0.289l2.907,0.580l-1.453,2.612l0.289,1.743l1.164,1.742l-0.582,1.161l-0.290,1.163l-0.581,1.162l-1.745,-0.581l-1.162,0.289l-1.163,-0.289l-0.291,0.870l0.581,0.581l-0.290,0.581l-1.454,-0.291l-1.744,-2.322l-0.291,-1.744l-0.872,0.000l-1.453,-2.032l0.581,-1.161l0.000,-0.872l1.453,-0.579l-0.582,2.613z",SS:"M567.37,204.831l0.000,2.322l-0.582,0.872l-1.455,0.000l-0.872,1.452l1.746,0.291l1.452,1.161l0.290,1.161l1.454,0.580l1.455,3.196l-1.745,1.741l-1.743,1.743l-1.745,1.162l-1.744,0.000l-2.326,0.580l-1.744,-0.580l-1.163,0.870l-2.325,-2.032l-0.874,-1.162l-1.450,0.581l-1.166,0.000l-0.873,0.291l-1.161,-0.291l-1.743,-2.323l-0.292,-0.871l-2.034,-0.871l-0.873,-1.743l-1.163,-1.161l-1.743,-1.452l0.000,-0.871l-1.452,-1.162l-2.037,-1.162l0.872,-0.289l0.874,-0.581l0.872,-2.324l0.581,-1.161l2.033,-0.581l0.584,0.871l1.452,1.452l0.581,0.291l1.164,-0.291l2.035,0.000l0.289,0.582l2.617,0.000l0.290,-0.582l1.454,-0.581l0.000,-0.871l1.163,-0.582l2.325,1.744l1.454,-0.291l1.453,-2.033l1.454,-1.451l-0.291,-1.742l-0.582,-0.582l1.452,-0.289l0.293,-0.582l1.162,0.291l-0.292,2.033l0.292,1.742l1.453,1.160l0.292,0.873l0.000,1.452l-0.582,0.000z",SV:"M232.211,194.086l-0.291,0.581l-1.743,0.000l-0.872,-0.290l-1.164,-0.581l-1.452,0.000l-0.873,-0.581l0.000,-0.580l0.873,-0.581l0.580,-0.291l0.000,-0.290l0.581,-0.291l0.873,0.291l0.582,0.581l0.872,0.581l0.000,0.289l1.161,-0.289l0.582,0.000l0.291,0.289l0.000,-1.162z",SY:"M580.45,139.204l-5.234,2.903l-3.195,-1.161l0.289,-0.290l0.000,-1.162l0.873,-1.452l1.452,-1.161l-0.581,-1.162l-1.163,0.000l-0.290,-2.033l0.582,-1.161l0.871,-0.582l0.581,-0.580l0.290,-1.742l0.873,0.580l2.907,-0.870l1.454,0.581l2.327,0.000l3.196,-0.872l1.453,0.000l3.197,-0.581l-1.454,1.742l-1.454,0.872l0.292,2.032l-1.163,3.195l6.103,-2.904z",SZ:"M562.136,304.433l-0.581,1.161l-1.744,0.290l-1.452,-1.451l-0.292,-0.871l0.870,-1.161l0.293,-0.581l0.872,-0.290l1.163,0.580l0.580,1.161l-0.291,-1.162z",TD:"M513.593,195.538l0.289,-1.161l-1.742,-0.291l0.000,-1.742l-1.165,-0.871l1.165,-3.775l3.486,-2.614l0.292,-3.484l1.164,-5.517l0.581,-1.162l-1.163,-0.871l0.000,-0.871l-1.164,-0.871l-0.581,-4.357l2.616,-1.451l11.046,5.226l11.045,5.227l0.000,11.036l-2.324,-0.291l-1.164,2.032l-0.872,1.743l0.582,0.581l-0.871,0.870l0.289,1.162l-0.580,1.162l-0.293,1.161l0.873,-0.290l0.582,1.161l0.000,1.453l1.162,0.871l0.000,0.580l-1.744,0.581l-1.452,1.161l-2.034,2.905l-2.617,1.452l-2.618,-0.291l-0.871,0.291l0.292,0.870l-1.454,0.872l-1.163,1.161l-3.488,1.162l-0.582,-0.580l-0.579,-0.291l-0.293,0.871l-2.325,0.290l0.290,-0.870l-0.872,-1.743l-0.289,-1.161l-1.165,-0.581l-1.742,-1.743l0.579,-1.161l1.455,0.289l0.581,-0.289l1.453,0.000l-1.453,-2.324l0.292,-2.032l-0.292,-1.743l1.162,1.742z",TF:"M663.583,364.542l1.746,0.872l2.617,0.581l0.000,0.291l-0.584,1.452l-4.360,0.000l0.000,-1.452l0.292,-1.161l-0.289,0.583z",TG:"M479,214.123l-2.324,0.581l-0.582,-1.162l-0.872,-1.742l0.000,-1.162l0.581,-2.613l-0.871,-0.872l-0.292,-2.322l0.000,-2.033l-0.871,-1.161l0.000,-0.872l2.616,0.000l-0.582,1.452l0.873,0.871l0.872,0.871l0.291,1.454l0.579,0.289l-0.290,6.388l-0.872,-2.033z",TH:"M756.022,197.571l-2.325,-1.452l-2.325,0.000l0.290,-2.033l-2.326,0.000l-0.291,2.904l-1.454,4.065l-0.871,2.613l0.290,1.745l1.744,0.289l1.163,2.323l0.291,2.613l1.745,1.452l1.453,0.291l1.454,1.452l-0.873,1.162l-1.744,0.289l-0.290,-1.451l-2.326,-1.163l-0.291,0.582l-1.163,-1.162l-0.582,-1.452l-1.452,-1.452l-1.163,-1.161l-0.582,1.452l-0.581,-1.452l0.292,-1.742l0.871,-2.615l1.452,-2.903l1.454,-2.614l-1.162,-2.322l0.290,-1.452l-0.582,-1.453l-1.741,-2.322l-0.582,-1.162l0.871,-0.580l1.163,-2.323l-1.163,-2.034l-1.744,-1.742l-1.455,-2.613l1.165,-0.290l1.163,-3.194l2.034,0.000l1.743,-1.163l1.454,-0.580l1.163,0.580l0.290,1.744l1.743,0.289l-0.579,2.904l0.000,2.323l2.907,-1.742l0.871,0.581l1.452,0.000l0.582,-0.871l2.036,0.000l2.325,2.323l0.000,2.613l2.327,2.324l-0.291,2.323l-0.872,1.451l-2.326,-0.581l-3.781,0.581l-1.741,2.323l-0.580,-3.485z",TJ:"M669.108,120.329l-0.873,0.871l-2.906,-0.582l-0.291,1.743l2.908,-0.290l3.488,0.871l5.233,-0.291l0.579,2.324l0.874,-0.291l1.743,0.582l0.000,1.160l0.292,1.742l-2.909,0.000l-1.745,-0.290l-1.744,1.162l-1.162,0.291l-1.161,0.581l-0.873,-0.872l0.000,-2.323l-0.581,0.000l0.291,-0.871l-1.454,-0.871l-1.455,1.161l-0.290,1.161l-0.289,0.291l-1.745,0.000l-0.872,1.162l-0.872,-0.582l-2.036,0.872l-0.871,-0.290l1.744,-2.614l-0.582,-2.032l-2.033,-0.871l0.579,-1.162l2.328,0.290l1.452,-1.743l0.872,-1.741l3.488,-0.582l-0.581,1.163l0.581,0.871l-0.873,0.000z",TL:"M817.647,255.359l0.580,-0.582l2.327,-0.580l1.744,-0.291l0.871,-0.290l1.164,0.290l-1.164,0.871l-2.905,1.162l-2.037,0.871l-0.290,-0.871l0.290,0.580z",TM:"M642.364,132.815l-0.289,-2.323l-2.034,0.000l-3.200,-2.324l-2.325,-0.290l-2.907,-1.452l-2.034,-0.290l-1.162,0.581l-1.745,-0.291l-2.036,1.742l-2.323,0.582l-0.582,-2.033l0.289,-2.904l-2.033,-0.871l0.581,-2.033l-1.743,0.000l0.578,-2.323l2.617,0.581l2.326,-0.872l-2.033,-1.742l-0.582,-1.451l-2.328,0.581l-0.289,2.032l-0.871,-1.742l1.160,-0.871l3.199,-0.581l2.034,0.871l1.744,2.033l1.455,0.000l3.199,0.000l-0.583,-1.452l2.325,-0.871l2.325,-1.742l3.778,1.451l0.292,2.324l1.163,0.580l2.907,-0.290l0.871,0.580l1.455,2.904l2.906,1.742l2.034,1.453l2.909,1.162l3.487,1.160l0.000,1.742l-0.871,0.000l-1.164,-0.871l-0.580,1.162l-2.326,0.291l-0.583,2.323l-1.454,0.870l-2.325,0.291l-0.581,1.452l-2.034,0.291l2.617,1.162z",TN:"M499.931,147.625l-1.163,-4.936l-1.745,-1.162l0.000,-0.581l-2.325,-1.742l-0.290,-2.034l1.745,-1.451l0.579,-2.323l-0.290,-2.614l0.581,-1.451l2.908,-1.163l2.034,0.291l-0.291,1.453l2.325,-0.872l0.292,0.291l-1.454,1.451l0.000,1.161l1.162,0.872l-0.580,2.324l-1.745,1.451l0.582,1.452l1.452,0.000l0.583,1.452l1.163,0.290l-0.291,2.032l-1.164,0.873l-0.872,0.870l-2.034,1.162l0.290,1.161l-0.290,1.162l1.162,-0.581z",TR:"M575.509,117.135l3.777,1.161l3.199-0.291l2.323,0.291l3.489-1.451l2.906-0.291l2.615,1.452l0.292,0.872l-0.292,1.452l2.036,0.58l1.162,0.872l-1.743,0.871l0.87,2.904l-0.579,0.871l1.452,2.324l-1.452,0.581l-0.873-0.872l-3.197-0.291l-1.164,0.291l-3.196,0.581h-1.453l-3.196,0.872h-2.327l-1.454-0.581l-2.906,0.871l-0.873-0.58l-0.29,1.742l-0.581,0.58l-0.871,0.582l-0.873-1.452l0.873-0.872l-1.455,0.291l-2.325-0.871l-2.033,1.742l-4.07,0.29l-2.326-1.452h-2.906l-0.582,1.162l-2.036,0.29l-2.615-1.452h-2.906l-1.744-2.904l-2.034-1.452l1.455-2.033l-1.747-1.452l2.907-2.613h4.361l1.163-2.033l5.232,0.29l3.197-1.742l3.196-0.871h4.65L575.509,117.135zM548.764,119.167l-2.325,1.451l-0.871-1.451v-0.581l0.581-0.291l0.871-1.742l-1.452-0.581l2.907-0.871l2.324,0.29l0.291,1.162l2.615,0.872l-0.58,0.58l-3.198,0.291L548.764,119.167z",TT:"M304.01,201.346l1.454,-0.291l0.581,0.000l0.000,2.033l-2.326,0.291l-0.581,-0.291l0.872,-0.582l0.000,1.160z",TW:"M808.926,163.886l-1.744,4.356l-1.163,2.322l-1.452,-2.322l-0.292,-2.033l1.744,-2.614l2.325,-2.322l1.163,0.871l0.581,-1.742z",TZ:"M567.077,233.58l0.582,0.289l9.883,5.517l0.291,1.742l3.780,2.615l-1.163,3.484l0.000,1.452l1.744,1.161l0.292,0.581l-0.873,1.743l0.289,0.871l-0.289,1.162l0.873,1.742l1.161,2.903l1.162,0.581l-2.323,1.452l-2.907,1.162l-1.746,0.000l-0.872,0.581l-2.036,0.289l-0.581,0.291l-3.486,-0.872l-2.036,0.292l-0.582,-3.776l-1.163,-1.161l-0.289,-0.871l-2.907,-0.581l-1.456,-0.870l-1.743,-0.291l-1.161,-0.581l-1.162,-0.581l-1.455,-3.485l-1.744,-1.452l-0.290,-1.742l0.290,-1.452l-0.581,-2.324l1.163,-0.289l0.872,-0.870l1.163,-1.454l0.582,-0.580l0.000,-0.872l-0.582,-0.871l0.000,-0.871l0.582,-0.291l0.289,-1.741l-1.163,-1.452l0.874,-0.291l3.196,0.000l-5.522,0.289z",UA:"M561.265,87.806l1.160,0.000l0.584,-0.582l0.872,0.000l2.907,-0.290l1.744,1.742l-0.873,0.581l0.290,0.871l2.327,0.000l0.871,1.162l0.000,0.581l3.488,0.870l2.034,-0.290l1.745,1.162l1.454,0.000l4.070,0.870l0.290,0.873l-1.163,1.451l0.582,1.452l-0.582,0.871l-2.615,0.291l-1.452,0.871l0.000,1.161l-2.329,0.292l-1.744,0.869l-2.615,0.000l-2.323,1.162l0.289,1.743l1.161,0.581l2.907,-0.290l-0.580,1.161l-2.906,0.290l-3.781,1.742l-1.452,-0.581l0.582,-1.451l-3.198,-0.581l0.579,-0.580l2.619,-0.872l-0.874,-0.581l-4.068,-0.871l-0.292,-0.872l-2.614,0.291l-0.874,1.452l-2.325,2.033l-1.161,-0.580l-1.166,0.580l-1.452,-0.580l0.872,-0.291l0.291,-0.872l0.872,-0.871l-0.291,-0.580l0.581,-0.291l0.293,0.581l1.743,0.000l0.581,-0.290l-0.290,-0.291l0.000,-0.291l-0.873,-0.580l-0.290,-1.162l-1.164,-0.580l0.293,-0.871l-1.166,-0.872l-1.162,0.000l-2.034,-0.870l-2.033,0.290l-0.584,0.290l-1.163,0.000l-0.579,0.580l-2.036,0.291l-1.162,0.581l-1.163,-0.581l-1.745,0.000l-1.744,-0.581l-1.163,0.581l-0.291,-0.581l-1.452,-0.870l0.580,-0.872l0.872,-0.870l0.582,0.289l-0.872,-1.452l2.617,-2.033l1.452,-0.580l0.292,-0.580l-1.455,-2.614l1.163,0.000l1.746,-0.581l2.035,-0.291l2.615,0.291l3.196,0.581l2.036,0.290l1.163,0.291l1.162,-0.581l0.583,0.581l2.615,0.000l0.873,0.289l0.290,-1.451l0.870,-0.580l-2.328,0.000z",UG:"M561.555,233.869l-3.196,0.000l-0.874,0.291l-1.743,0.871l-0.582,-0.290l0.000,-2.324l0.582,-0.871l0.291,-2.324l0.581,-1.161l1.163,-1.451l0.871,-0.872l0.873,-0.871l-1.162,-0.289l0.289,-3.196l1.163,-0.870l1.744,0.580l2.326,-0.580l1.744,0.000l1.745,-1.162l1.452,1.742l0.291,1.452l1.163,3.194l-1.163,2.033l-1.164,1.742l-0.872,1.161l0.000,2.906l5.522,-0.289z",US:"M45.593,178.406l-0.292,0.581l-0.873-0.581l0.292-0.581l-0.582-1.162l0.29-0.291l0.292-0.29l-0.292-0.582l0.292-0.29h0.291l0.872,0.581l0.582,0.291l0.581,0.29l0.582,0.872v0.29l-1.162,0.581L45.593,178.406zM44.14,174.05l-0.872,0.29l-0.582-0.581l-0.292-0.29l0.292-0.291l0.872,0.291l0.872,0.29L44.14,174.05zM42.395,172.598l-0.29,0.291h-1.453l0.29-0.291H42.395zM39.779,172.308v0.29l-0.291-0.29h-0.873l-0.582-0.582l0.873-0.581v0.291L39.779,172.308zM35.128,170.564l-0.291,0.292l-0.872-0.582v-0.291l0.581-0.29l0.582,0.29V170.564zM212.735,95.065l0.582,1.452l0.871,0.581l1.744,0.291l2.907,0.291l2.616,0.871l2.325-0.291l3.488,0.581h0.872l2.326-0.87l2.617,1.161l2.616,1.162l2.326,0.872l2.035,0.871l0.291,0.58l0.582,0.291v0.291h0.58l0.583-0.291l0.29,0.871l0.583,0.291h0.581l0.581,0.29l-0.581,0.581l2.906,1.162l0.583,2.613l0.58,2.323l-0.872,1.742l-1.163,1.451l-0.581,0.873v0.29l0.292,0.581l0.872,0.29h0.581l3.197-1.452l2.907-0.29l3.488-1.453l0.291-0.291l-0.291-0.871l-0.582-0.581l1.454-0.291h2.616h2.616l0.872-1.162l0.291-0.29l2.907-1.743l1.163-0.581h4.07h5.232l0.292-0.871h0.872l1.162-0.58l0.872-1.162l0.873-2.033l2.035-2.032l0.872,0.581l2.035-0.581l1.163,0.87v3.775l1.744,1.452l0.582,1.161l-2.907,1.162l-2.907,0.872l-2.907,0.872l-1.453,1.742l-0.582,0.581v1.453l0.872,1.451h1.163l-0.291-0.871l0.872,0.581l-0.291,0.871l-1.744,0.291h-1.162l-2.036,0.581h-1.452l-1.454,0.291l-2.326,0.58l4.07-0.291l0.872,0.291l-4.07,0.872H270l0.291-0.29l-0.872,0.872h0.872l-0.582,2.032l-2.035,2.033l-0.291-0.58l-0.582-0.291l-0.872-0.581l0.582,1.452l0.582,0.58v0.873l-0.873,1.161l-1.453,2.033h-0.291l0.873-1.742l-1.454-1.162l-0.291-2.322l-0.58,1.16l0.58,1.743l-1.744-0.291l1.744,0.871l0.291,2.614l0.873,0.291l0.291,0.871l0.291,2.613l-1.745,2.033l-2.907,0.871l-1.743,1.742H257.5l-1.452,1.162l-0.291,0.87l-2.907,1.744l-1.744,1.451l-1.163,1.452l-0.582,2.033l0.582,1.742l0.873,2.614l1.163,1.742v1.161l1.453,3.195v2.032l-0.29,0.871l-0.582,1.742l-0.873,0.291l-1.453-0.291l-0.291-1.161l-1.163-0.582l-1.454-2.323l-1.162-2.032l-0.583-1.161l0.583-1.743l-0.583-1.742l-2.325-2.323l-0.873-0.291l-2.906,1.162h-0.581l-1.163-1.451l-1.744-0.581l-3.197,0.29l-2.326-0.29l-2.326,0.29l-0.872,0.291l0.292,0.87v1.162l0.581,0.582l-0.581,0.29l-0.872-0.581l-1.164,0.581h-2.034l-2.035-1.452l-2.325,0.291l-2.035-0.581l-1.745,0.29l-2.325,0.581l-2.325,2.033l-2.908,1.162l-1.452,1.162l-0.582,1.451v1.742v1.452l0.582,0.871h-1.163l-1.744-0.58l-2.326-0.872l-0.581-1.162l-0.582-2.033l-1.744-1.452l-0.873-1.742l-1.453-1.742l-2.034-1.162h-2.036l-1.743,2.323l-2.326-0.871l-1.454-0.871l-0.872-1.453l-0.872-1.451l-1.454-1.162l-1.454-0.871l-1.163-1.162h-4.65v1.162h-2.326h-5.232l-6.395-1.742l-4.07-1.451l0.29-0.582l-3.487,0.291l-3.198,0.291l-0.581-1.453l-1.744-1.451l-1.163-0.582l-0.291-0.58l-1.743-0.291l-0.872-0.581l-2.616-0.29l-0.582-0.582l-0.291-1.452l-2.908-2.904l-2.034-3.775v-0.582l-1.163-0.871l-2.326-2.323l-0.291-2.322l-1.454-1.453l0.582-2.322v-2.324l-0.872-2.032l0.872-2.614l0.582-2.613l0.291-2.323l-0.581-3.775l-0.873-2.323l-0.872-1.162l0.291-0.58l4.069,0.87l1.454,2.613l0.581-0.87l-0.291-2.033l-0.872-2.324h7.849h8.139h2.616h8.43h8.14h8.138h8.43h9.302h9.302h5.813v-1.161H212.735zM52.569,73.867l-2.616,1.162l-1.454-0.871l-0.581-1.162l2.616-1.162l1.454-0.29l1.744,0.29l1.163,0.871L52.569,73.867zM17.978,66.316l-1.744,0.291l-1.745-0.581l-1.744-0.582l2.907-0.581l2.035,0.291L17.978,66.316zM1.118,55.572l1.744,0.582l1.744-0.291l2.035,0.581l2.907,0.581l-0.291,0.29l-2.035,0.581l-2.326-0.87l-0.872-0.291H1.409l-0.582-0.29L1.118,55.572zM47.046,35.246l1.744,1.161l1.453-0.291h4.651l-0.291,0.582l4.36,0.58l2.617-0.29l5.813,0.871l5.232,0.29l2.326,0.291l3.488-0.291l4.36,0.581l2.907,0.581v10.164v15.681h2.616l2.616,0.872l2.035,1.162L95.3,68.93l2.906-1.452l2.616-0.871l1.454,1.451l1.744,1.162l2.616,1.162l1.744,2.033l2.908,2.903l4.65,1.742v1.743l-1.454,1.452l-1.454-1.162l-2.615-0.871l-0.583-2.323l-3.778-2.323l-1.454-2.324l-2.616-0.291h-4.361l-3.197-0.871l-5.814-2.903l-2.616-0.581l-4.651-0.872l-3.778,0.291l-5.523-1.453l-3.198-1.161l-3.197,0.581l0.581,2.033l-1.454,0.29l-3.196,0.58l-2.326,0.873l-3.198,0.581l-0.291-1.742l1.163-2.614l2.907-0.871l-0.582-0.581l-3.488,1.452l-2.035,1.742l-4.07,2.033l2.035,1.161l-2.617,2.033l-2.907,1.162l-2.616,0.871l-0.872,1.162l-4.07,1.451l-0.872,1.452l-3.198,1.162l-2.035-0.29l-2.615,0.871l-2.617,0.87l-2.326,0.872l-4.65,0.871l-0.581-0.582l2.907-1.162l2.906-0.87l2.907-1.453l3.489-0.291l1.163-1.161l3.779-1.742l0.582-0.581l2.035-0.873l0.58-2.033l1.455-1.742l-3.198,0.872l-0.872-0.582L36,70.382l-1.745-1.453l-0.872,0.872l-1.162-1.162l-2.617,0.871h-1.743l-0.292-1.453l0.581-1.162l-1.744-0.87l-3.487,0.581l-2.326-1.452l-2.035-0.581v-1.452l-2.035-1.162l1.163-1.742l2.035-1.452l1.163-1.452l2.035-0.29l2.034,0.58l2.036-1.451l2.035,0.29l2.326-0.872l-0.583-1.161l-1.743-0.582l2.034-1.162h-1.453l-2.906,0.871l-0.873,0.581l-2.325-0.581l-3.779,0.291l-4.07-0.871l-1.163-0.871l-3.487-1.742l3.778-1.162l6.105-1.451h2.325l-0.29,1.451h5.814l-2.327-1.742l-3.197-1.162l-2.034-1.162l-2.616-1.161l-3.779-0.871l1.455-1.452l4.941-0.291l3.488-1.162l0.582-1.453l2.906-1.161l2.617-0.291L36,36.116h2.616l4.07-1.452L47.046,35.246z",UY:"M315.056,314.017l1.744,-0.292l2.907,2.033l0.872,0.000l2.907,1.743l2.325,1.451l1.454,2.032l-1.163,1.164l0.872,1.740l-1.453,1.742l-2.907,1.453l-2.035,-0.582l-1.454,0.291l-2.616,-1.162l-2.035,0.000l-1.453,-1.452l0.000,-1.741l0.872,-0.580l-0.291,-2.905l0.872,-2.614l-0.582,2.321z",UZ:"M656.899,128.168l0.000,-1.742l-3.487,-1.160l-2.909,-1.162l-2.034,-1.453l-2.906,-1.742l-1.455,-2.904l-0.871,-0.580l-2.907,0.290l-1.163,-0.580l-0.292,-2.324l-3.778,-1.451l-2.325,1.742l-2.325,0.871l0.583,1.452l-3.199,0.000l0.000,-10.164l6.976,-1.742l0.580,0.291l4.071,2.031l2.324,0.872l2.618,2.614l3.196,-0.291l4.944,-0.290l3.196,2.032l-0.290,2.614l1.453,0.000l0.581,2.323l3.489,0.000l0.580,1.452l1.163,0.000l1.163,-2.032l3.779,-2.033l1.454,-0.291l0.872,0.291l-2.326,1.742l2.035,0.871l2.034,-0.580l3.199,1.451l-3.488,2.032l-2.326,-0.289l-0.873,0.000l-0.581,-0.871l0.581,-1.163l-3.488,0.582l-0.872,1.741l-1.452,1.743l-2.328,-0.290l-0.579,1.162l2.033,0.871l0.582,2.032l-1.744,2.614l-2.035,-0.582l1.453,0.000z",VE:"M277.558,198.442l-0.290,0.871l-1.454,0.291l0.872,1.161l0.000,1.452l-1.454,1.451l1.164,2.324l1.162,-0.290l0.582,-1.743l-0.872,-1.161l0.000,-2.033l3.487,-1.161l-0.582,-1.162l1.163,-0.871l0.872,1.742l2.035,0.291l1.744,1.451l0.000,0.871l2.617,0.000l2.907,-0.289l1.452,1.161l2.326,0.290l1.455,-0.582l0.000,-0.869l3.487,0.000l3.198,-0.291l-2.326,0.871l0.872,1.451l2.326,0.000l2.034,1.454l0.291,2.323l1.453,-0.292l1.164,0.872l-2.036,1.452l-0.290,1.161l0.872,0.871l-0.582,0.581l-1.743,0.580l0.000,1.163l-0.873,0.582l2.035,2.322l0.291,0.580l-0.872,1.162l-3.198,0.871l-2.035,0.580l-0.581,0.582l-2.326,-0.582l-2.034,-0.290l-0.582,0.000l1.163,0.872l0.000,1.741l0.292,1.744l2.324,0.289l0.291,0.581l-2.035,0.871l-0.291,1.162l-1.162,0.291l-2.036,0.870l-0.580,0.582l-2.036,0.289l-1.452,-1.451l-0.872,-2.614l-0.873,-1.162l-0.872,-0.580l1.454,-1.453l-0.291,-0.580l-0.582,-0.580l-0.581,-2.033l0.000,-2.033l0.872,-0.871l0.291,-1.452l-0.872,-0.290l-1.454,0.290l-2.034,-0.290l-1.163,0.290l-2.035,-2.323l-1.453,-0.291l-3.488,0.291l-0.872,-1.162l-0.583,0.000l0.000,-0.581l0.292,-1.161l-0.292,-1.161l-0.580,-0.582l-0.291,-1.161l-1.453,-0.290l0.581,-1.452l0.582,-2.033l0.581,-1.162l1.163,-0.580l0.581,-1.452l-2.035,0.581z",VN:"M771.137,171.726l-3.488,2.324l-2.326,2.614l-0.581,1.742l2.034,2.904l2.617,3.774l2.325,1.743l1.744,2.033l1.163,5.226l-0.290,4.647l-2.327,2.032l-3.195,1.741l-2.037,2.325l-3.486,2.322l-1.164,-1.740l0.872,-1.745l-2.034,-1.451l2.326,-1.162l2.906,-0.290l-1.162,-1.742l4.651,-2.033l0.289,-3.194l-0.581,-2.033l0.581,-2.614l-0.870,-2.032l-2.036,-1.742l-1.745,-2.614l-2.325,-3.194l-3.197,-1.742l0.870,-0.872l1.747,-0.580l-1.165,-2.614l-3.488,0.000l-1.161,-2.322l-1.454,-2.324l1.454,-0.580l2.034,0.000l2.615,-0.291l2.329,-1.451l1.452,0.870l2.615,0.581l-0.581,1.742l1.454,0.872l-2.615,-0.870z",VU:"M935.666,276.266l-0.872,0.291l-0.874-1.163v-0.871L935.666,276.266zM933.628,271.91l0.583,2.324l-0.874-0.292h-0.58l-0.29-0.58v-2.322L933.628,271.91z",WS:"M449.643,156.336l-0.292,-1.452l0.581,0.000l0.000,0.290l0.000,0.291l0.000,4.355l-9.011,-0.290l0.000,7.261l-2.615,0.000l-0.581,1.451l0.581,4.066l-11.046,0.000l-0.582,0.871l0.289,-1.162l6.107,-0.291l0.290,-0.870l1.162,-1.162l0.874,-3.775l4.069,-3.194l1.162,-3.485l0.872,0.000l0.873,-2.323l2.324,-0.291l1.165,0.581l1.161,0.000l0.872,-0.871l-1.745,0.000z",YE:"M619.983,185.084l-2.034,0.872l-0.583,1.161l0.000,0.872l-2.616,1.160l-4.651,1.453l-2.326,1.742l-1.162,0.291l-0.871,-0.291l-1.744,1.161l-1.745,0.581l-2.327,0.291l-0.580,0.000l-0.581,0.871l-0.582,0.000l-0.581,0.871l-1.455,-0.290l-0.870,0.580l-1.745,-0.290l-0.873,-1.452l0.292,-1.452l-0.581,-0.871l-0.581,-2.032l-0.874,-1.163l0.583,-0.289l-0.291,-1.162l0.582,-0.581l-0.291,-1.161l1.161,-0.872l-0.289,-1.161l0.873,-1.451l1.161,0.869l0.582,-0.289l3.197,0.000l0.582,0.289l2.615,0.292l1.164,-0.292l0.580,0.873l1.163,-0.291l2.036,-2.904l2.615,-1.161l7.849,-1.162l2.325,4.645l-0.873,-1.743z",ZA:"M560.392,311.403l-0.29,0.291l-1.165,1.451l-0.87,1.451l-1.453,2.034l-3.198,2.902l-2.034,1.451l-2.036,1.453l-2.906,0.871l-1.452,0.29l-0.293,0.58l-1.743-0.29l-1.161,0.581l-3.199-0.581l-1.452,0.29h-1.164l-2.906,0.872l-2.325,0.58l-1.744,0.871l-1.162,0.29l-1.163-1.161h-0.871l-1.454-1.161v0.292l-0.29-0.583v-1.741l-0.873-1.742l0.873-0.581v-2.032l-2.034-2.613l-1.165-2.323l-2.034-3.484l1.163-1.453l1.163,0.58l0.582,1.162l1.162,0.29l1.744,0.581l1.452-0.29l2.325-1.451v-10.163l0.874,0.58l1.741,2.613l-0.289,1.741l0.582,0.872l2.033-0.29l1.164-1.162l1.452-0.87l0.582-1.453l1.454-0.58l1.162,0.29l1.162,0.872h2.326l1.744-0.582l0.289-0.87l0.584-1.161l1.452-0.293l0.874-1.16l0.871-1.742l2.324-2.032l4.07-2.033h1.163l1.163,0.581l0.871-0.289l1.454,0.289l1.452,3.774l0.582,2.033l-0.29,2.903v1.162l-1.163-0.58l-0.872,0.29l-0.293,0.581l-0.87,1.161l0.292,0.871l1.452,1.451l1.744-0.29l0.581-1.161h2.034l-0.582,2.031l-0.579,2.323l-0.584,1.162L560.392,311.403zM553.416,310.531l-1.162-0.87l-1.163,0.579l-1.453,1.163l-1.454,1.742l2.036,2.032l0.871-0.291l0.581-0.869l1.454-0.292l0.58-0.871l0.873-1.451L553.416,310.531z",ZM:"M563.881,256.229l1.452,1.452l0.582,2.322l-0.582,0.582l-0.290,2.322l0.290,2.323l-0.872,0.873l-0.580,2.612l1.452,0.580l-8.429,2.325l0.292,2.033l-2.036,0.289l-1.744,1.162l-0.291,0.871l-0.872,0.291l-2.616,2.322l-1.454,1.744l-0.872,0.000l-0.872,-0.291l-3.197,-0.291l-0.291,-0.291l-0.290,-0.289l-0.871,-0.582l-1.745,0.000l-2.326,0.582l-1.745,-1.744l-2.034,-2.322l0.289,-8.711l5.524,0.000l0.000,-0.873l0.292,-1.161l-0.583,-1.161l0.291,-1.452l-0.291,-0.871l1.164,0.290l0.000,0.872l1.454,-0.291l1.743,0.291l0.871,1.452l2.036,0.291l1.745,-0.873l0.581,1.452l2.325,0.291l0.872,1.162l1.163,1.451l2.033,0.000l-0.289,-2.904l-0.581,0.581l-2.035,-1.160l-0.584,-0.291l0.293,-2.904l0.580,-3.195l-0.873,-1.161l0.873,-1.742l0.873,-0.290l3.490,-0.581l1.163,0.290l1.162,0.581l1.161,0.581l1.743,0.291l-1.456,-0.870z",ZW:"M559.521,292.237l-1.454,-0.289l-0.871,0.289l-1.163,-0.581l-1.163,0.000l-1.745,-1.162l-2.326,-0.579l-0.580,-1.744l0.000,-0.870l-1.455,-0.292l-2.907,-2.903l-0.870,-1.742l-0.582,-0.580l-1.163,-2.034l3.197,0.291l0.872,0.291l0.872,0.000l1.454,-1.744l2.616,-2.322l0.872,-0.291l0.291,-0.871l1.744,-1.162l2.036,-0.289l0.000,0.870l2.325,0.000l1.452,0.581l0.582,0.582l1.163,0.289l1.452,0.871l0.000,3.486l-0.582,2.032l0.000,2.033l0.293,0.870l-0.293,1.452l-0.289,0.290l-0.874,2.033l2.904,-3.195z"}}}}),b}); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/world_countries_mercator.js b/plugins/jquery-mapael/maps/world_countries_mercator.js new file mode 100644 index 0000000..050be7c --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries_mercator.js @@ -0,0 +1,285 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires Mapael + * + * Map of World by country + * Mercator projection + * + * @source http://www.amcharts.com/svg-maps/?map=world + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('mapael')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'mapael'], factory); + } else { + // Browser globals + factory(jQuery, jQuery.mapael); + } +}(function ($, Mapael) { + + "use strict"; + + $.extend(true, Mapael, { + maps: { + world_countries_mercator: { + /* + * map-specific constants + * (set by user) + */ + // Width of the map, in pixel + width: 1008.77, + // Height of the map, in pixel + height: 651.44, + // Longitude of the left side of the map, in degree + leftLongitude: -169.6, + // Longitude of the right side of the map, in degree + rightLongitude: 190.25, + // Latitude of the top of the map, in degree + topLatitude: 83.68, + // Latitude of the bottom of the map, in degree + bottomLatitude: -55.55, + /* + * Transform a longitude coordinate into projection-specific x' coordinate + * Note: this is not in pixel + * + * @param lon longitude value in degree + * @return x' projection-specific value + */ + _projectLongitude: function (lon) { + // Compute longitude in radian + return lon * Math.PI / 180; + }, + /* + * Transform a latitude coordinate into projection-specific y' coordinate + * Note: this is not in pixel + * + * @param lat latitude value in degree + * @return y' projection-specific value + */ + _projectLatitude: function (lat) { + // Compute latitude in radian and get its SINUS + var latRadSinus = Math.sin(lat * Math.PI / 180); + return 0.5 * Math.log((1 + latRadSinus) / (1 - latRadSinus)); + }, + /* + * Get x,y point from lat,lon coordinate + * + * Principle: + * (lat, lon) are inputs + * Projection(lat, lon) = (x', y') + * Transformation(x', y') = (x, y) + * + * Source: http://jkwiens.com/2009/01/23/miller-projection/ + * + * @param lat latitude value in degree + * @param lon longitude value in degree + * @return {x, y} coordinate in pixel + */ + getCoords: function (lat, lon) { + var self = this; + + // Project map boundaries with projection (only once for performance) + if (self._xLeftPrime === undefined) self._xLeftPrime = self._projectLongitude(self.leftLongitude); + if (self._xRightPrime === undefined) self._xRightPrime = self._projectLongitude(self.rightLongitude); + if (self._yTopPrime === undefined) self._yTopPrime = self._projectLatitude(self.topLatitude); + if (self._yBottomPrime === undefined) self._yBottomPrime = self._projectLatitude(self.bottomLatitude); + + // Compute x' and y' (projection-specific value) + var xPrime = self._projectLongitude(lon); + var yPrime = self._projectLatitude(lat); + + // Compute x and y + var x = (xPrime - self._xLeftPrime) * (self.width / (self._xRightPrime - self._xLeftPrime)); + var y = (self._yTopPrime - yPrime) * (self.height / (self._yTopPrime - self._yBottomPrime)); + + return {x: x, y: y}; + }, + elems: { + "AE": "m 620.12,393.97 0.5,-0.15 0.11,0.84 2.19,-0.48 2.32,0.08 1.69,0.09 1.92,-2.07 2.1,-1.98 1.77,-1.9 0.53,1.05 0.38,2.44 -1.43,0.01 -0.23,2 0.5,0.42 -1.27,0.6 -0.01,1.25 -0.82,1.26 -0.07,1.21 -0.57,0.64 -8.42,-1.52 -1.08,-3.08 z", + "AF": "m 647.13,357.15 2.86,1.3 2.11,-0.46 0.59,-1.55 2.21,-0.52 1.58,-1.05 0.56,-2.79 2.36,-0.68 0.44,-1.25 1.33,0.94 0.84,0.11 1.56,0.03 2.12,0.74 0.85,0.42 2.03,-1.12 0.95,0.67 0.9,-1.6 1.68,0.07 0.43,-0.52 0.3,-1.43 1.21,-1.23 1.51,0.8 -0.3,1.09 0.85,0.17 -0.27,2.95 1.11,1.15 0.98,-0.74 1.25,-0.34 1.74,-1.57 1.93,0.26 2.9,0 0.5,1.01 -1.64,0.39 -1.42,0.65 -3.22,0.4 -3.01,0.73 -1.64,1.51 0.66,1.46 0.33,1.7 -1.4,1.43 0.12,1.3 -0.77,1.22 -2.67,-0.11 1.1,2.22 -1.78,0.85 -1.19,2 0.15,1.98 -1.1,0.92 -1.03,-0.3 -2.15,0.43 -0.3,0.91 -2.09,0 -1.56,1.84 -0.1,2.75 -3.65,1.33 -1.95,-0.28 -0.57,0.7 -1.67,-0.4 -2.81,0.48 -4.69,-1.64 2.54,-2.93 -0.23,-2.1 -2.12,-0.55 -0.22,-2.09 -0.92,-2.64 1.2,-1.83 -1.22,-0.49 0.77,-2.45 z", + "AL": "m 533.23,334.91 -0.35,1.27 0.4,1.59 1.16,0.9 -0.06,0.97 -0.91,0.54 -0.17,1.19 -1.3,1.76 -0.48,-0.25 -0.05,-0.8 -1.56,-1.23 -0.24,-1.75 0.24,-2.53 0.38,-1.16 -0.47,-0.59 -0.19,-1.19 1.22,-1.87 0.17,0.72 0.76,-0.34 0.6,1.02 0.67,0.38 z", + "AM": "m 597.7,337.75 3.9,-0.58 0.58,0.98 1.07,0.64 -0.57,0.92 1.5,1.26 -0.79,1.16 1.19,0.99 1.26,0.59 0.06,2.5 -1.02,0.1 -1.14,-2.08 0.01,-0.55 -1.24,0.01 -0.83,-0.98 -0.58,0.1 -1.11,-1.06 -2.08,-0.91 0.27,-1.79 z", + "AO": "m 521.28,480.03 0.69,2.09 0.8,1.68 0.64,0.91 1.07,1.47 1.85,-0.23 0.93,-0.4 1.55,0.4 0.42,-0.7 0.7,-1.64 1.74,-0.11 0.15,-0.49 1.43,-0.01 -0.24,1.01 3.4,-0.02 0.05,1.77 0.57,1.09 -0.41,1.7 0.21,1.74 0.94,1.05 -0.15,3.37 0.69,-0.26 1.22,0.07 1.74,-0.42 1.28,0.17 0.3,0.88 -0.32,1.38 0.49,1.34 -0.42,1.07 0.24,0.99 -5.84,-0.04 -0.13,9.16 1.89,2.38 1.83,1.82 -5.15,1.19 -6.79,-0.41 -1.94,-1.4 -11.37,0.13 -0.42,0.21 -1.67,-1.32 -1.82,-0.09 -1.68,0.5 -1.35,0.56 -0.26,-1.83 0.39,-2.55 0.97,-2.65 0.15,-1.24 0.91,-2.59 0.67,-1.17 1.61,-1.87 0.9,-1.27 0.29,-2.11 -0.15,-1.61 -0.84,-1.01 -0.75,-1.72 -0.69,-1.69 0.15,-0.59 0.86,-1.12 -0.85,-2.72 -0.57,-1.88 -1.4,-1.77 0.27,-0.54 1.16,-0.38 0.81,0.05 0.98,-0.34 8.27,0.01 z m -10.91,-0.54 -0.71,0.3 -0.75,-2.1 1.13,-1.21 0.85,-0.47 1.05,0.96 -1.02,0.59 -0.46,0.72 -0.09,1.21 z", + "AR": "m 291.85,649.16 -2.66,0.25 -1.43,-1.73 -1.69,-0.13 -3,0 0,-10.57 1.08,2.15 1.4,3.53 3.65,2.87 3.93,1.21 -1.28,2.42 z m 1.5,-122.44 1.65,2.18 1.09,-2.43 3.2,0.12 0.45,0.64 5.15,4.94 2.29,0.46 3.43,2.26 2.89,1.2 0.4,1.36 -2.76,4.73 2.83,0.85 3.15,0.48 2.22,-0.5 2.54,-2.4 0.46,-2.74 1.39,-0.59 1.41,1.79 -0.06,2.49 -2.36,1.73 -1.88,1.28 -3.16,3.08 -3.74,4.37 -0.7,2.59 -0.75,3.37 0.03,3.3 -0.61,0.74 -0.22,2.17 -0.19,1.76 3.56,2.91 -0.38,2.37 1.75,1.51 -0.14,1.7 -2.69,4.52 -4.16,1.91 -5.62,0.75 -3.08,-0.36 0.59,2.15 -0.57,2.72 0.52,1.85 -1.68,1.3 -2.87,0.51 -2.7,-1.35 -1.08,0.97 0.39,3.71 1.89,1.14 1.54,-1.19 0.84,1.96 -2.58,1.18 -2.25,2.38 -0.41,3.91 -0.66,2.11 -2.65,0.01 -2.2,2.04 -0.8,3.01 2.76,2.98 2.68,0.83 -0.96,3.73 -3.31,2.38 -1.82,5.03 -2.56,1.72 -1.15,2.06 0.91,4.64 1.87,2.63 -1.18,-0.23 -2.6,-0.71 -6.78,-0.61 -1.16,-2.63 0.05,-3.33 -1.87,0.28 -0.99,-1.6 -0.25,-4.6 2.15,-1.88 0.89,-2.68 -0.33,-2.11 1.49,-3.52 1.02,-5.35 -0.3,-2.33 1.22,-0.75 -0.3,-1.48 -1.3,-0.78 0.92,-1.63 -1.27,-1.46 -0.65,-4.4 1.13,-0.77 -0.47,-4.54 0.66,-3.75 0.75,-3.22 1.68,-1.3 -0.85,-3.46 -0.01,-3.22 2.12,-2.26 -0.06,-2.87 1.6,-3.31 0.01,-3.09 -0.73,-0.61 -1.29,-5.69 1.73,-3.34 -0.27,-3.11 1,-2.9 1.84,-2.96 1.98,-1.95 -0.84,-1.23 0.59,-1 -0.09,-5.14 3.05,-1.51 0.96,-3.16 -0.34,-0.76 2.34,-2.72 3.62,0.72 z", + "AT": "m 523.11,310.1 -0.21,1.71 -1.58,0.01 0.54,0.89 -0.93,2.65 -0.53,0.69 -2.45,0.1 -1.42,0.92 -2.32,-0.31 -4.01,-1.05 -0.62,-1.43 -2.77,0.72 -0.33,0.77 -1.7,-0.58 -1.43,-0.11 -1.27,-0.74 0.43,-1.01 -0.11,-0.74 0.85,-0.22 1.42,1.14 0.4,-1.09 2.47,0.18 2.01,-0.74 1.34,0.12 0.87,0.85 0.27,-0.7 -0.4,-2.72 1.01,-0.54 0.98,-1.95 2.09,1.37 1.57,-1.74 0.99,-0.32 2.18,1.3 1.31,-0.22 1.3,0.8 -0.23,0.54 z", + "AU": "m 883.18,588.41 2.71,1.28 1.53,-0.51 2.19,-0.71 1.68,0.25 0.2,4.43 -0.96,1.3 -0.29,3.06 -0.98,-1.05 -1.95,2.67 -0.58,-0.21 -1.72,-0.12 -1.73,-3.28 -0.38,-2.5 -1.62,-3.25 0.07,-1.7 1.83,0.34 z m -5.15,-86.06 1.01,2.25 1.8,-1.08 0.93,1.22 1.35,1.13 -0.29,1.28 0.6,2.48 0.43,1.45 0.71,0.35 0.76,2.5 -0.27,1.52 0.91,1.99 3.04,1.54 1.98,1.41 1.88,1.29 -0.37,0.72 1.6,1.87 1.09,3.25 1.12,-0.66 1.14,1.31 0.69,-0.46 0.48,3.21 1.99,1.87 1.3,1.17 2.19,2.49 0.79,2.49 0.07,1.77 -0.19,1.94 1.34,2.68 -0.16,2.81 -0.49,1.48 -0.76,2.87 0.06,1.86 -0.55,2.34 -1.24,3 -2.08,1.63 -1.02,2.59 -0.94,1.67 -0.83,2.93 -1.08,1.71 -0.71,2.58 -0.36,2.4 0.14,1.11 -1.61,1.22 -3.14,0.13 -2.59,1.45 -1.29,1.38 -1.69,1.54 -2.32,-1.58 -1.72,-0.63 0.44,-1.85 -1.53,0.67 -2.46,2.58 -2.42,-0.97 -1.59,-0.56 -1.6,-0.25 -2.71,-1.03 -1.81,-2.18 -0.52,-2.66 -0.65,-1.75 -1.38,-1.4 -2.7,-0.41 0.92,-1.66 -0.68,-2.52 -1.37,2.35 -2.5,0.63 1.47,-1.88 0.42,-1.95 1.08,-1.65 -0.22,-2.47 -2.28,2.85 -1.75,1.15 -1.07,2.69 -2.19,-1.4 0.09,-1.79 -1.75,-2.43 -1.48,-1.25 0.53,-0.77 -3.6,-2 -1.97,-0.09 -2.7,-1.6 -5.02,0.31 -3.63,1.18 -3.19,1.1 -2.68,-0.22 -2.97,1.7 -2.43,0.77 -0.54,1.75 -1.04,1.36 -2.38,0.08 -1.76,0.3 -2.48,-0.61 -2.02,0.37 -1.92,0.15 -1.67,1.8 -0.82,-0.15 -1.41,0.96 -1.35,1.08 -2.05,-0.13 -1.88,0 -2.97,-2.17 -1.51,-0.64 0.06,-1.93 1.39,-0.46 0.48,-0.76 -0.1,-1.2 0.34,-2.3 -0.31,-1.95 -1.48,-3.29 -0.46,-1.85 0.12,-1.83 -1.12,-2.08 -0.07,-0.93 -1.24,-1.26 -0.35,-2.47 -1.6,-2.48 -0.39,-1.33 1.23,1.35 -0.95,-2.88 1.39,0.9 0.83,1.2 -0.05,-1.59 -1.39,-2.43 -0.27,-0.97 -0.65,-0.92 0.3,-1.77 0.57,-0.75 0.38,-1.52 -0.3,-1.77 1.16,-2.17 0.21,2.29 1.18,-2.07 2.28,-1 1.37,-1.28 2.14,-1.1 1.27,-0.23 0.77,0.37 2.21,-1.11 1.7,-0.33 0.42,-0.65 0.74,-0.27 1.55,0.07 2.95,-0.87 1.52,-1.31 0.72,-1.58 1.64,-1.49 0.13,-1.17 0.07,-1.59 1.96,-2.47 1.18,2.51 1.19,-0.58 -1,-1.38 0.88,-1.41 1.24,0.63 0.34,-2.21 1.53,-1.42 0.68,-1.14 1.41,-0.49 0.04,-0.8 1.23,0.34 0.05,-0.72 1.23,-0.41 1.36,-0.39 2.07,1.32 1.56,1.71 1.75,0.02 1.78,0.27 -0.59,-1.58 1.34,-2.3 1.26,-0.75 -0.44,-0.71 1.22,-1.63 1.7,-1.01 1.43,0.34 2.36,-0.54 -0.05,-1.45 -2.05,-0.94 1.49,-0.41 1.86,0.7 1.49,1.17 2.36,0.73 0.8,-0.29 1.74,0.88 1.64,-0.82 1.05,0.25 0.66,-0.55 1.29,1.41 -0.75,1.53 -1.06,1.16 -0.96,0.1 0.33,1.15 -0.82,1.43 -1,1.41 0.2,0.81 2.23,1.6 2.16,0.93 1.44,1 2.03,1.72 0.79,0 1.47,0.75 0.43,0.9 2.68,0.99 1.85,-1 0.55,-1.57 0.57,-1.29 0.35,-1.59 0.85,-2.3 -0.39,-1.39 0.2,-0.84 -0.32,-1.64 0.37,-2.16 0.54,-0.58 -0.44,-0.95 0.68,-1.51 0.53,-1.56 0.07,-0.81 1.04,-1.06 0.79,1.39 0.19,1.78 0.7,0.34 0.12,1.2 1.02,1.45 0.21,1.62 -0.08,1.01 z", + "AZ": "m 601.68,342.71 0.83,0.97 1.24,-0.01 -0.01,0.56 1.14,2.08 -1.92,-0.48 -1.42,-1.66 -0.44,-1.37 0.58,-0.09 z m 6.65,-5.43 1.24,0.25 0.48,-0.95 1.67,-1.51 1.47,1.97 1.43,2.62 1.31,0.17 0.86,0.99 -2.31,0.29 -0.49,2.82 -0.48,1.26 -1.03,0.84 0.08,1.77 -0.7,0.18 -1.75,-1.87 0.97,-1.78 -0.83,-1.06 -1.05,0.27 -3.31,2.66 -0.06,-2.5 -1.26,-0.59 -1.19,-0.99 0.79,-1.16 -1.49,-1.26 0.56,-0.92 -1.07,-0.64 -0.58,-0.97 0.69,-0.61 2.09,1.07 1.51,0.22 0.38,-0.43 -1.38,-2.02 0.73,-0.52 0.79,0.13 1.93,2.27 z", + "BA": "m 528.79,323.36 1.02,-0.01 -0.7,1.72 1.35,1.5 -0.41,1.82 -0.66,0.17 -0.53,0.36 -0.91,0.89 -0.41,2.1 -2.48,-1.44 -1.06,-1.61 -1.07,-0.85 -1.29,-1.45 -0.6,-1.21 -1.38,-1.83 0.59,-1.64 1.01,0.91 0.6,-0.82 1.31,-0.09 2.41,0.66 1.94,-0.06 z", + "BD": "m 735.34,400.66 -0.05,2.15 -0.98,-0.46 0.18,2.41 -0.8,-1.56 -0.16,-1.52 -0.54,-1.45 -1.17,-1.76 -2.58,-0.12 0.26,1.25 -0.88,1.67 -1.2,-0.61 -0.41,0.55 -0.79,-0.33 -1.08,-0.27 -0.44,-2.48 -0.97,-2.28 0.47,-1.84 -1.72,-0.82 0.62,-1.12 1.75,-1.15 -2.02,-1.63 0.99,-2.11 2.22,1.34 1.34,0.16 0.25,2.15 2.66,0.42 2.61,-0.05 1.61,0.53 -1.29,2.59 -1.26,0.18 -0.86,1.73 1.53,1.58 0.46,-1.94 0.78,-0.01 z", + "BE": "m 484.8,296.16 2.05,0.35 2.6,-0.93 1.77,1.95 1.55,1.04 -0.32,2.97 -0.73,0.16 -0.31,2.43 -2.45,-1.97 -1.44,0.34 -1.96,-2.06 -1.3,-1.77 -1.3,-0.07 -0.41,-1.56 z", + "BF": "m 467.58,436.65 -1.92,-0.73 -1.32,0.11 -0.98,0.71 -1.26,-0.6 -0.49,-0.93 -1.26,-0.62 -0.19,-1.64 0.77,-1.21 -0.07,-0.96 2.23,-2.36 0.41,-1.96 0.77,-0.7 1.36,0.38 1.17,-0.58 0.38,-0.74 2.18,-1.28 0.53,-0.9 2.62,-1.2 1.55,-0.41 0.7,0.55 1.79,-0.01 -0.22,1.4 0.38,1.31 1.58,1.87 0.08,1.38 3.24,0.65 -0.07,1.95 -0.61,0.86 -1.37,0.26 -0.57,1.24 -0.96,0.32 -2.46,-0.06 -1.3,-0.22 -0.9,0.46 -1.24,-0.21 -4.87,0.13 -0.07,1.61 z", + "BG": "m 539.03,325.81 0.81,1.6 1.08,-0.29 2.16,0.61 4.12,0.2 1.39,-0.99 3.3,-0.9 2.04,1.41 1.65,0.41 -1.46,1.59 -1.02,2.73 0.9,2.16 -2.41,-0.51 -2.86,1.18 -0.03,1.86 -2.55,0.35 -1.97,-1.3 -2.25,1.03 -2.07,-0.11 -0.2,-2.47 -1.41,-1.21 0.47,-0.54 -0.31,-0.45 0.47,-1.21 1.07,-1.19 -1.36,-1.66 -0.25,-1.42 z", + "BI": "m 557.77,476.18 -0.18,-3.37 -0.71,-1.26 1.71,0.22 0.86,-1.59 1.49,0.18 0.16,1.1 0.6,0.63 0.03,0.91 -0.69,0.58 -1.1,1.46 -1.01,1.01 z", + "BJ": "m 483.05,446.17 -2.32,0.33 -0.69,-1.94 0.13,-6.46 -0.57,-0.58 -0.1,-1.39 -0.98,-0.99 -0.85,-0.83 0.36,-1.5 0.96,-0.32 0.57,-1.24 1.37,-0.26 0.61,-0.86 0.94,-0.83 1.01,-0.01 2.14,1.64 -0.11,0.95 0.63,1.68 -0.55,1.14 0.29,0.76 -1.36,1.75 -0.86,0.87 -0.53,1.77 0.07,1.79 z", + "BN": "m 795.71,451.02 1.11,-1.05 2.39,-1.53 -0.13,1.38 -0.16,1.78 -1.34,-0.09 -0.59,0.95 z", + "BO": "m 299.29,526.6 -3.2,-0.13 -1.09,2.43 -1.65,-2.18 -3.67,-0.73 -2.33,2.72 -2.03,0.41 -1.1,-4.15 -1.5,-3.34 0.88,-2.87 -1.47,-1.25 -0.37,-2.12 -1.38,-2 1.77,-3.14 -1.21,-2.44 0.65,-0.97 -0.51,-1.07 1.1,-1.44 0.06,-2.44 0.13,-2.02 0.61,-0.96 -2.43,-4.58 2.09,0.24 1.44,-0.07 0.63,-0.85 2.45,-1.15 1.47,-1.06 3.67,-0.48 -0.29,2.12 0.34,1.09 -0.23,1.9 3.05,2.55 3.14,0.47 1.1,1.07 1.9,0.57 1.16,0.83 1.76,-0.03 1.63,0.85 0.12,1.66 0.55,0.84 0.04,1.25 -0.82,0.04 1.08,3.37 5.37,0.12 -0.41,1.68 0.3,1.15 1.53,0.82 0.67,1.82 -0.5,2.32 -0.77,1.29 0.27,1.69 -0.88,0.61 -0.04,-0.91 -2.62,-1.51 -2.6,-0.05 -4.89,0.86 -1.34,2.62 -0.07,1.6 -1.11,3.59 z", + "BR": "m 313.93,552.04 3.74,-4.37 3.17,-3.08 1.88,-1.28 2.36,-1.73 0.06,-2.49 -1.41,-1.79 -1.39,0.59 0.55,-1.78 0.38,-1.82 0,-1.68 -1.01,-0.55 -1.05,0.49 -1.04,-0.13 -0.33,-1.18 -0.26,-2.77 -0.53,-0.9 -1.89,-0.82 -1.14,0.59 -2.96,-0.58 0.18,-4.06 -0.83,-1.66 0.88,-0.61 -0.27,-1.69 0.77,-1.29 0.5,-2.32 -0.67,-1.82 -1.53,-0.82 -0.3,-1.15 0.41,-1.68 -5.37,-0.12 -1.08,-3.37 0.82,-0.04 -0.04,-1.25 -0.55,-0.84 -0.12,-1.66 -1.63,-0.85 -1.76,0.03 -1.16,-0.83 -1.9,-0.57 -1.1,-1.07 -3.14,-0.47 -3.05,-2.55 0.23,-1.9 -0.34,-1.09 0.29,-2.12 -3.67,0.48 -1.47,1.06 -2.45,1.15 -0.63,0.85 -1.44,0.07 -2.09,-0.24 -1.58,0.49 -1.28,-0.33 0.19,-4.3 -2.3,1.66 -2.47,-0.07 -1.06,-1.51 -1.86,-0.16 0.59,-1.21 -1.56,-1.72 -1.17,-2.53 0.74,-0.51 0,-1.19 1.7,-0.81 -0.28,-1.51 0.71,-0.98 0.21,-1.3 3.2,-1.91 2.3,-0.53 0.37,-0.42 2.53,0.13 1.26,-7.65 0.07,-1.21 -0.44,-1.59 -1.24,-1.02 0.01,-2.02 1.58,-0.46 0.56,0.29 0.09,-1.07 -1.64,-0.29 -0.03,-1.74 5.46,0.06 0.93,-0.96 0.78,0.88 0.54,1.65 0.53,-0.35 1.55,1.48 2.18,-0.18 0.54,-0.86 2.08,-0.65 1.16,-0.45 0.32,-1.18 2.01,-0.8 -0.16,-0.58 -2.37,-0.24 -0.39,-1.76 0.11,-1.87 -1.25,-0.72 0.52,-0.26 2.08,0.36 2.23,0.7 0.81,-0.66 2.01,-0.44 3.14,-1.04 1.03,-1.07 -0.38,-0.79 1.46,-0.12 0.66,0.64 -0.37,1.23 0.96,0.42 0.65,1.3 -0.78,0.98 -0.45,2.38 0.72,1.41 0.2,1.29 1.73,1.3 1.38,0.14 0.31,-0.54 0.88,-0.12 1.27,-0.49 0.91,-0.74 1.55,0.23 0.68,-0.1 1.53,0.23 0.25,-0.57 -0.47,-0.55 0.28,-0.81 1.13,0.25 1.33,-0.29 1.6,0.59 1.23,0.58 0.87,-0.76 0.62,0.12 0.39,0.79 1.34,-0.2 1.07,-1.06 0.86,-2.06 1.66,-2.55 0.96,-0.13 0.69,1.54 1.57,4.88 1.5,0.46 0.08,1.92 -2.11,2.29 0.87,0.84 4.96,0.44 0.1,2.79 2.13,-1.83 3.53,1.01 4.65,1.7 1.37,1.63 -0.46,1.54 3.26,-0.86 5.46,1.48 4.19,-0.11 4.14,2.31 3.58,3.13 2.16,0.8 2.4,0.12 1.02,0.88 0.95,3.57 0.47,1.69 -1.12,4.66 -1.43,1.84 -3.95,3.94 -1.79,3.21 -2.07,2.48 -0.7,0.06 -0.79,2.1 0.2,5.4 -0.78,4.48 -0.3,1.93 -0.88,1.15 -0.5,3.94 -2.84,3.88 -0.48,3.09 -2.27,1.31 -0.66,1.81 -3.04,-0.01 -4.41,1.17 -1.98,1.35 -3.14,0.89 -3.3,2.44 -2.37,3.06 -0.41,2.32 0.47,1.73 -0.53,3.18 -0.63,1.55 -1.96,1.75 -3.11,5.68 -2.47,2.59 -1.91,1.54 -1.27,3.16 -1.86,1.91 -0.78,-1.9 1.24,-1.57 -1.62,-2.25 -2.2,-1.82 -2.89,-2.08 -1.04,0.09 -2.81,-2.5 z", + "BS": "m 258.11,395.45 -0.69,0.15 -0.71,-1.76 -1.05,-0.89 0.61,-1.95 0.84,0.12 0.98,2.55 0.02,1.78 z m -0.8,-8.69 -3.06,0.5 -0.2,-1.15 1.32,-0.25 1.85,0.09 0.09,0.81 z m 2.3,-0.03 -0.48,2.21 -0.52,-0.4 0.05,-1.63 -1.26,-1.23 -0.01,-0.36 2.22,1.41 z", + "BT": "m 732.61,383.03 1.14,1 -0.2,1.93 -2.29,0.09 -2.36,-0.21 -1.77,0.49 -2.55,-1.19 -0.05,-0.63 1.85,-2.34 1.51,-0.8 2.01,0.73 1.48,0.08 z", + "BW": "m 547.42,516.2 0.56,0.52 0.89,1.71 3.17,3.25 1.2,0.32 0.01,1.05 0.82,1.9 2.17,0.46 1.79,1.36 -3.97,2.22 -2.52,2.26 -0.93,2.03 -0.84,1.15 -1.53,0.25 -0.49,1.47 -0.29,0.96 -1.79,0.72 -2.28,-0.15 -1.34,-0.86 -1.18,-0.38 -1.37,0.72 -0.69,1.48 -1.33,0.93 -1.4,1.39 -2.01,0.32 -0.62,-1.09 0.26,-1.9 -1.67,-2.93 -0.75,-0.46 0,-8.86 2.76,-0.11 0.08,-10.57 2.09,-0.09 4.32,-1.03 1.08,1.21 1.78,-1.15 0.86,-0.01 1.58,-0.66 0.5,0.22 z", + "BY": "m 541.35,284.32 2.71,0.04 3.04,-1.8 0.65,-2.72 2.3,-1.57 -0.26,-2.2 1.7,-0.84 3.02,-1.93 2.95,1.26 0.4,1.23 1.47,-0.59 2.74,1.18 0.27,2.31 -0.6,1.32 1.76,3.15 1.14,0.87 -0.17,0.86 1.89,0.83 0.81,1.25 -1.09,1.02 -2.26,-0.16 -0.54,0.44 0.66,1.54 0.69,2.93 -2.41,0.27 -0.86,1 -0.19,2.26 -1.11,-0.43 -2.53,0.22 -0.74,-1.05 -1.05,0.78 -1.05,-0.65 -2.21,-0.09 -3.13,-1.08 -2.83,-0.36 -2.17,0.1 -1.54,1.23 -1.34,0.17 -0.05,-2.01 -0.87,-2.12 1.68,-0.94 0.02,-1.85 -0.78,-1.78 z", + "BZ": "m 225.56,413.21 -0.02,-0.43 0.34,-0.14 0.51,0.35 1,-1.77 0.53,-0.04 0.01,0.43 0.53,0.01 -0.04,0.8 -0.46,1.27 0.25,0.45 -0.29,1.05 0.17,0.27 -0.32,1.47 -0.55,0.78 -0.51,0.09 -0.56,1 -0.83,0 0.22,-3.28 z", + "CA": "m 199.18,96.48 -0.22,-5.9 3.63,0.58 1.63,0.96 3.35,4.92 -0.76,4.97 -4.15,2.77 -2.28,-3.12 -1.2,-5.18 z m 13.21,12.65 0.33,-1.49 -1.97,-2.45 -5.65,-0.19 0.75,3.68 5.25,0.83 1.29,-0.38 z m 36.35,46.95 3.08,5.1 0.81,0.57 3.07,-1.27 3.02,0.2 2.98,0.28 -0.25,-2.64 -4.84,-5.38 -6.42,-1.08 -1.35,0.67 -0.1,3.55 z m -65.43,-62.7 -2.71,4.19 6.24,0.52 4.61,4.44 4.58,1.5 -1.09,-5.68 -2.14,-6.73 -7.58,-5.35 -5.5,-2.04 0.2,5.69 3.39,3.46 z m 25.9,-10.24 5.13,-0.12 -2.22,4 -0.04,5.3 3.01,5.76 5.81,1.77 4.96,-0.99 5.18,-10.73 3.85,-4.45 -3.38,-4.97 -2.21,-10.65 -4.6,-3.19 -4.72,-3.68 -3.58,-9.56 -6.52,0.94 1.23,4.15 -2.87,1.25 -1.94,5.32 -1.94,7.46 1.78,7.26 3.07,5.13 z m -63.75,53.38 3.92,1.95 12.67,-1.3 -5.82,4.77 0.36,3.43 4.26,-0.24 7.07,-4.58 9.5,-1.67 1.71,-5.22 -0.49,-5.57 -2.94,-0.5 -2.5,1.93 -1.1,-4.13 -0.95,-5.7 -2.9,-1.42 -2.57,4.41 4.01,11.05 -4.9,-0.85 -4.98,-6.79 -7.89,-4 -2.64,3.32 -3.82,11.11 z m 22.56,-42.06 -3.65,-2.9 -1.5,-0.66 -2.88,4.28 -0.05,2 4.66,0.01 3.42,-2.73 z m -1.46,12.35 0.93,-3.99 -3.95,-2.12 -4.09,1.39 -2.27,4.26 4.16,4.21 5.22,-3.75 z m 29.09,33.24 4.62,-1.11 1.28,-8.25 -0.09,-5.95 -2.14,-5.56 -0.22,1.6 -3.94,-0.7 -4.22,4.09 -3.02,-0.37 0.18,8.92 4.6,-0.87 -0.06,6.47 3.01,1.73 z m -3.28,45.61 -5.06,-3.93 -4.71,-4.21 -0.87,-6.18 -1.76,-8.92 -3.14,-3.84 -2.79,-1.55 -2.47,1.42 1.99,9.59 -1.41,3.73 -2.29,-8.98 -2.56,-3.11 -3.17,4.81 -3.9,-4.76 -6.24,2.87 1.4,-4.46 -2.87,-1.87 -7.51,5.84 -1.95,3.71 -2.35,6.77 4.9,2.32 4.33,-0.12 -6.5,3.46 1.48,3.13 3.98,0.17 5.99,-0.67 5.42,1.96 -3.66,1.44 -3.95,-0.37 -4.33,1.41 -1.87,0.87 3.45,6.35 2.49,-0.88 3.83,2.15 1.52,3.65 4.99,-0.73 7.1,-1.16 5.26,-2.65 3.26,-0.48 4.82,2.12 5.07,1.22 0.94,-2.86 -1.79,-3.05 4.6,-0.64 0.33,-3.57 z m 7.74,-0.98 -1.96,3.54 -2.47,2.49 3.83,3.54 2.28,-0.85 3.78,2.36 1.74,-2.73 -1.71,-3.03 -0.84,-1.53 -1.68,-1.46 -2.97,-2.33 z m -17.61,-29.45 -2.13,-2.17 -3.76,0.4 -0.95,1.38 4.37,6.75 2.47,-6.36 z m 28.69,13.17 3.01,-6.93 3.34,-1.85 4.19,-8.74 -5.36,-2.47 -5.84,-0.36 -2.78,2.77 -1.47,4.23 -0.04,4.82 1.75,8.19 3.2,0.34 z m 17.15,-23 5.76,-0.18 8.04,-1.61 3.59,1.28 4.18,-2.26 1.75,-2.84 -0.63,-4.52 -3,-4.23 -4.56,-0.8 -5.71,0.97 -4.46,2.44 -4.09,-0.94 -3.78,-0.5 -1.78,-2.7 -3.22,-2.61 0.64,-4.43 -2.42,-3.98 -5.52,0.03 -3.11,-3.99 -5.78,-0.8 -1.06,5.1 3.25,3.74 5.8,1.45 2.81,5.09 0.34,5.6 0.97,5.99 7.45,3.42 4.54,1.28 z m -89.02,-18.27 5.21,-5.05 2.62,-0.59 2.16,-4.23 0.38,-9.77 -3.85,1.91 -4.3,-0.18 -5.76,8.19 -4.76,8.98 3.8,2.51 4.5,-1.77 z m 72.18,16.17 1.53,-4.14 -1.02,-3.46 -2.45,-3.92 -4.03,3.02 -1.49,4.92 3.4,2.79 4.06,0.79 z m -8.31,11.44 -0.73,-2.88 -5,1.26 -3.34,-2.11 -3.32,4.8 3.09,6.28 -5.72,-1.17 -0.06,3.01 6.97,7.05 1.94,3.38 2.7,0.73 4.6,-3.41 0.5,-8.21 -4.24,-4.07 2.61,-4.66 z m -73.99,153.74 -1.16,-2.34 -2.8,-1.77 -1.39,-2.05 -0.95,-1.5 -2.64,-0.46 -1.72,-0.67 -2.94,-0.96 -0.24,1.02 1.08,2.38 2.89,0.78 0.5,1.23 2.51,1.5 0.84,1.51 4.6,1.92 1.42,-0.59 z m 121.7,-77.63 -2,-2.11 -2.06,0.5 -0.25,-3.06 -3.21,-2.04 -3.07,-2.27 -1.63,-1.75 -1.43,1.03 -0.52,-2.96 -2.03,-0.55 -0.96,6.13 -0.36,5.11 -2.44,3.14 3.8,-0.6 0.96,3.65 3.99,-3.23 2.78,-3.38 1.57,2.86 4.36,1.51 2.5,-1.98 z m -120.53,-52.55 7.38,-4.18 v -3.87 l 3.48,-6.41 6.88,-6.69 3.52,-2.47 -3.01,-4.2 -2.72,-2.95 -7.16,-0.57 -4,-2.16 -9.48,1.63 2.74,6.23 -2.43,6.43 -1.94,6.87 -1.2,3.86 6.47,4.69 1.47,3.79 z m 134.24,27.31 0.32,-1.01 -0.03,-3.17 -2.19,-2.08 -2.57,1.05 -1.19,4.17 0.7,3.56 3.14,-0.36 1.82,-2.16 z m 23.82,7.54 4.41,6.6 3.45,2.85 4.92,-7.87 0.87,-4.93 -4.41,-0.47 -4.03,-6.7 -4.45,-1.64 -6.6,-4.97 5.15,-3.63 -2.65,-7.54 -2.44,-3.35 -6.77,-3.35 -2.92,-5.55 -5.21,1.99 -0.36,-3.86 -3.86,-4.32 -6.22,-4.71 -2.65,3.71 -5.55,2.66 0.42,-6.06 -4.81,-10.05 -7.11,4.06 -2.59,7.7 -2.21,-5.92 2.06,-6.37 -7.24,2.65 -2.88,3.99 -2.15,8.42 0.89,9.05 3.98,0.04 -2.93,3.92 2.33,2.96 4.55,1.25 5.93,2.42 10.2,1.82 5.08,-1.04 1.5,-2.42 2.21,2.79 2.47,0.46 2.97,4.96 -1.8,1.98 5.68,2.63 4.29,3.68 1.08,2.55 0.77,3.24 -3.63,6.93 -0.98,3.44 0.94,2.42 -5.77,0.86 -5.27,0.12 -1.85,4.87 2.37,2.23 8.11,-1.03 -0.04,-1.89 4.08,3.15 4.18,3.28 -0.98,1.77 3.4,3.02 6.02,3.53 7.6,2.39 -0.46,-2.09 -2.92,-3.67 -3.96,-5.37 7.03,5 3.54,1.66 0.97,-4.44 -1.82,-6.3 -1.16,-1.73 -3.81,-3.03 -2.95,-3.91 0.35,-3.94 3.64,-0.9 z M 222.6,51.59 l 2.34,7.29 4.96,5.88 9.81,-1.09 6.31,1.97 -4.38,6.05 -2.21,-1.78 -7.66,-0.71 1.19,8.31 3.96,6.04 -0.8,5.2 -4.97,3.46 -2.27,5.47 4.55,2.65 3.82,8.55 -7.5,-5.7 -1.71,0.94 1.38,9.38 -5.18,2.83 0.35,5.85 5.3,0.63 4.17,1.44 8.24,-1.84 7.33,3.27 7.49,-7.19 -0.06,-3.02 -4.79,0.48 -0.39,-2.84 3.92,-3.83 1.33,-5.15 4.33,-3.83 2.66,-4.76 -2.32,-7.1 1.94,-2.65 -3.86,-1.89 8.49,-1.63 1.79,-3.15 5.78,-2.6 4.8,-13.47 4.57,-4.94 6.62,-11.12 -6.1,0.1 2.54,-4.3 6.78,-3.99 6.84,-8.9 0.12,-5.73 -5.13,-6.04 -6.02,-2.93 -7.49,-1.82 -6.07,-1.49 -6.07,-1.5 -8.1,3.98 -1.49,-2.53 -8.57,0.98 -5.03,2.57 -3.7,3.65 -2.13,11.74 -3.06,-6.01 -3.48,-1.14 -4.12,7.97 -5.5,3.35 -3.27,0.66 -4.17,3.84 0.61,6.65 3.28,5.49 z m 74.4,265 -0.98,-1.98 -1.06,1.26 0.7,1.36 3.56,1.71 1.04,-0.26 1.38,-1.66 -2.6,0.11 -2.04,-0.54 z m -57,-77.86 0.61,1.63 1.98,0.14 3.28,-3.34 0.06,-1.19 -3.85,-0.06 -2.08,2.82 z m 62.13,66.44 -2.87,-1.8 -3.69,-1.09 -0.97,0.37 2.61,2.04 3.63,1.34 1.36,-0.08 -0.07,-0.78 z m 24.88,4.79 -0.36,-2.24 -1.96,0.72 0.87,-3.11 -2.8,-1.32 -1.29,1.05 -2.49,-1.18 0.98,-1.51 -1.88,-0.93 -1.83,1.47 1.86,-3.82 1.5,-2.8 0.54,-1.22 -1.3,-0.2 -2.43,1.55 -1.74,2.53 -2.9,6.92 -2.35,2.56 1.22,1.14 -1.75,1.47 0.43,1.23 5.44,0.13 3.01,-0.25 2.69,1.01 -1.98,1.93 1.67,0.14 3.25,-3.58 0.78,0.53 -0.61,3.37 1.84,0.77 1.27,-0.15 1.18,-3.61 -0.86,-2.6 z m -21.19,4.76 -2.81,4.56 -4.63,0.58 -3.64,-2.01 -0.92,-3.07 -0.89,-4.46 2.65,-2.83 -2.48,-2.09 -4.19,0.43 -5.88,3.53 -4.5,5.45 -2.38,0.67 3.23,-3.8 4.04,-5.57 3.57,-1.9 2.35,-3.11 2.9,-0.3 4.21,0.03 6,0.92 4.74,-0.71 3.53,-3.62 4.62,-1.59 2.01,-1.58 2.04,-1.71 -0.2,-5.19 -1.13,-1.77 -2.18,-0.63 -1.11,-4.05 -1.8,-1.55 -4.47,-1.26 -2.52,-2.82 -3.73,-2.83 1.13,-3.2 -3.1,-6.26 -3.65,-6.89 -2.18,-4.98 -1.86,2.61 -2.68,6.05 -4.06,2.97 -2.03,-3.16 -2.56,-0.85 -0.93,-6.99 0.08,-4.8 -5,-0.44 -0.85,-2.27 -3.45,-3.44 -2.61,-2.04 -2.32,1.58 -2.88,-0.58 -4.81,-1.65 -1.95,1.4 0.94,9.18 1.22,5.12 -3.31,5.75 3.41,4.02 1.9,4.44 0.23,3.42 -1.55,3.5 -3.18,3.46 -4.49,2.28 1.98,2.53 1.46,7.4 -1.52,4.68 -2.16,1.46 -4.17,-4.28 -2.03,-5.17 -0.87,-4.76 0.46,-4.19 -3.05,-0.47 -4.63,-0.28 -2.97,-2.08 -3.51,-1.37 -2.01,-2.38 -2.8,-1.94 -5.21,-2.23 -3.92,1.02 -1.31,-3.95 -1.26,-4.99 -4.12,-0.9 0.15,-6.41 1.09,-4.48 3.04,-6.6 3.43,-4.9 3.26,-0.77 0.19,-4.05 2.21,-2.68 4.01,-0.42 3.25,-4.39 0.82,-2.9 2.7,-5.73 0.84,-3.5 2.9,2.11 3.9,-1.08 5.49,-4.96 0.36,-3.54 -1.98,-3.98 2.09,-4.06 -0.17,-3.87 -3.76,-3.95 -4.14,-1.19 -3.98,-0.62 -0.15,8.71 -2.04,6.56 -2.93,5.3 -2.71,-4.95 0.84,-5.61 -3.35,-5.02 -3.75,6.09 0.01,-7.99 -5.21,-1.63 2.49,-4.01 -3.81,-9.59 -2.84,-3.91 -3.7,-1.44 -3.32,6.43 -0.22,9.34 3.27,3.29 3,4.91 -1.27,7.71 -2.26,-0.2 -1.78,5.88 0.02,-7 -4.34,-2.58 -2.49,1.33 0.32,4.67 -4.09,-0.18 -4.35,1.17 -4.95,-3.35 -3.13,0.6 -2.82,-4.11 -2.26,-1.84 -2.24,0.77 -3.41,0.35 -1.81,2.61 2.86,3.19 -3.05,3.72 -2.99,-4.42 -2.39,1.3 -7.57,0.87 -5.07,-1.59 3.94,-3.74 -3.78,-3.9 -2.75,0.5 -3.86,-1.32 -6.56,-2.89 -4.29,-3.37 -3.4,-0.47 -1.06,2.36 -3.44,1.31 -0.38,-6.15 -3.73,5.5 -4.74,-7.32 -1.94,-0.89 -0.63,3.91 -2.09,1.9 -1.93,-3.39 -4.59,2.05 -4.2,3.55 -4.17,-0.98 -3.4,2.5 -2.46,3.28 -2.92,-0.72 -4.41,-3.8 -5.23,-1.94 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.56,2.35 0.06,2.48 3.39,3.45 0.49,3.76 3.59,1.96 -0.4,2.79 1.56,3.96 5.08,1.82 2,1.89 5.43,4.23 0.38,0.01 h 7.96 8.32 2.76 8.55 8.27 8.41 l 8.42,0 9.53,0 9.59,0 5.8,0 0.01,-1.64 0.95,-0.02 0.5,2.35 0.87,0.72 1.96,0.26 2.86,0.67 2.72,1.3 2.27,-0.55 3.45,1.09 1.14,-1.66 1.59,-0.66 0.62,-1.03 0.63,-0.55 2.61,0.86 1.93,0.1 0.67,0.57 0.94,2.38 3.15,0.63 -0.49,1.18 1.11,1.21 -0.48,1.56 1.18,0.51 -0.59,1.37 0.75,0.13 0.53,-0.6 0.55,0.9 2.1,0.5 2.13,0.04 2.27,0.41 2.51,0.78 0.91,1.26 1.82,3.04 -0.9,1.3 -2.28,-0.54 -1.42,-2.44 0.36,2.49 -1.34,2.17 0.15,1.84 -0.23,1.07 -1.81,1.27 -1.32,2.09 -0.62,1.32 1.54,0.24 2.08,-1.2 1.23,-1.06 0.83,-0.17 1.54,0.38 0.75,-0.59 1.37,-0.48 2.44,-0.47 v 0 l 0,0 -0.25,-1.15 -0.13,0.04 -0.86,0.2 -1.12,-0.36 0.84,-1.32 0.85,-0.46 1.98,-0.56 2.37,-0.53 1.24,0.73 0.78,-0.85 0.89,-0.54 0.6,0.29 0.03,0.06 2.87,-2.73 1.27,-0.73 4.26,-0.03 5.17,0 0.28,-0.98 0.9,-0.2 1.19,-0.62 1,-1.82 0.86,-3.15 2.14,-3.1 0.93,1.08 1.88,-0.7 1.25,1.19 0,5.52 1.83,2.25 3.12,-0.48 4.49,-0.13 -4.87,3.26 0.11,3.29 2.13,0.28 3.13,-2.79 2.78,-1.58 6.21,-2.35 3.47,-2.62 -1.81,-1.46 -0.29,-2.92 z m -53.66,-71.1 1.1,-3.12 -0.71,-1.23 -1.15,-0.13 -1.08,1.8 -0.13,0.41 0.74,1.77 1.23,0.5 z m -142.66,36.43 0,0 1.56,-2.35 -1.56,2.35 z m -3.4,3.29 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z", + "CD": "m 561.96,453.86 -0.17,3.26 1.12,0.37 -0.9,0.99 -1.08,0.74 -1.07,1.46 -0.59,1.29 -0.16,2.24 -0.65,1.06 -0.02,2.1 -0.81,0.78 -0.1,1.66 -0.39,0.21 -0.26,1.53 0.71,1.26 0.18,3.37 0.5,2.57 -0.28,1.46 0.56,1.62 1.63,1.57 1.51,3.55 -1.1,-0.29 -3.77,0.48 -0.75,0.33 -0.8,1.8 0.63,1.25 -0.5,3.35 -0.35,2.85 0.76,0.51 1.96,1.1 0.77,-0.51 0.24,3.08 -2.15,-0.03 -1.15,-1.57 -1.03,-1.22 -2.15,-0.4 -0.63,-1.49 -1.72,0.9 -2.24,-0.4 -0.94,-1.29 -1.78,-0.26 -1.31,0.07 -0.16,-0.88 -0.97,-0.07 -1.28,-0.17 -1.73,0.42 -1.22,-0.07 -0.7,0.26 0.15,-3.37 -0.93,-1.05 -0.21,-1.73 0.41,-1.7 -0.56,-1.09 -0.05,-1.76 -3.41,0.02 0.25,-1.01 -1.43,0.01 -0.15,0.49 -1.74,0.11 -0.71,1.63 -0.42,0.71 -1.55,-0.4 -0.92,0.4 -1.86,0.22 -1.07,-1.47 -0.64,-0.91 -0.81,-1.68 -0.69,-2.09 -8.27,-0.03 -0.99,0.33 -0.81,-0.05 -1.16,0.38 -0.39,-0.87 0.71,-0.3 0.09,-1.22 0.46,-0.72 1.02,-0.58 0.74,0.28 0.96,-1.07 1.52,0.03 0.18,0.79 1.05,0.5 1.65,-1.76 1.63,-1.36 0.71,-0.89 -0.09,-2.3 1.22,-2.71 1.28,-1.43 1.85,-1.34 0.32,-0.89 0.07,-1.02 0.46,-0.97 -0.15,-1.58 0.35,-2.47 0.55,-1.74 0.84,-1.49 0.16,-1.68 0.25,-1.95 1.1,-1.42 1.5,-0.9 2.31,0.95 1.78,1.03 2.05,0.28 2.09,0.54 0.84,-1.68 0.39,-0.22 1.27,0.28 3.13,-1.39 1.1,0.59 0.91,-0.08 0.42,-0.68 1.04,-0.24 2.11,0.29 1.8,0.06 0.93,-0.29 1.69,2.31 1.26,0.33 0.75,-0.47 1.3,0.19 1.56,-0.59 0.67,1.19 z", + "CF": "m 518.34,442.91 2.32,-0.22 0.52,-0.72 0.46,0.06 0.7,0.63 3.53,-1.07 1.19,-1.1 1.47,-0.99 -0.28,-0.99 0.79,-0.26 2.71,0.18 2.64,-1.31 2.02,-3.09 1.43,-1.14 1.77,-0.49 0.32,1.22 1.62,1.77 0,1.15 -0.45,1.18 0.18,0.87 0.97,0.81 2.14,1.24 1.53,1.13 0.03,0.92 1.88,1.46 1.17,1.21 0.71,1.68 2.1,1.11 0.45,0.89 -0.93,0.29 -1.8,-0.06 -2.11,-0.29 -1.04,0.24 -0.42,0.68 -0.91,0.08 -1.1,-0.59 -3.13,1.39 -1.27,-0.28 -0.39,0.22 -0.84,1.68 -2.09,-0.54 -2.05,-0.28 -1.78,-1.03 -2.31,-0.95 -1.5,0.9 -1.1,1.42 -0.25,1.95 -1.8,-0.16 -1.9,-0.47 -1.67,1.48 -1.47,2.6 -0.3,-0.81 -0.12,-1.27 -1.28,-0.9 -1.04,-1.44 -0.24,-1 -1.32,-1.46 0.22,-0.83 -0.28,-1.18 0.22,-2.17 0.67,-0.51 z", + "CG": "m 511.94,476.97 -1.05,-0.96 -0.85,0.47 -1.13,1.2 -2.3,-2.95 2.13,-1.54 -1.05,-1.85 0.96,-0.7 1.89,-0.34 0.22,-1.24 1.5,1.34 2.48,0.12 0.86,-1.32 0.35,-1.85 -0.31,-2.18 -1.32,-1.64 1.21,-3.23 -0.7,-0.55 -2.08,0.22 -0.79,-1.43 0.21,-1.22 3.53,0.11 2.27,0.73 2.23,0.66 0.2,-1.5 1.47,-2.6 1.67,-1.48 1.9,0.47 1.8,0.16 -0.16,1.68 -0.84,1.49 -0.55,1.74 -0.35,2.47 0.15,1.58 -0.46,0.97 -0.07,1.02 -0.32,0.89 -1.85,1.34 -1.28,1.43 -1.22,2.71 0.09,2.3 -0.71,0.89 -1.63,1.36 -1.65,1.76 -1.05,-0.5 -0.18,-0.79 -1.52,-0.03 -0.96,1.07 z", + "CH": "m 502.4,312.59 0.11,0.74 -0.43,1.01 1.27,0.74 1.43,0.11 -0.22,1.67 -1.23,0.69 -2.08,-0.51 -0.61,1.63 -1.33,0.13 -0.49,-0.64 -1.57,1.36 -1.35,0.19 -1.21,-0.86 -0.96,-1.77 -1.34,0.64 0.04,-1.84 2.05,-2.31 -0.09,-1.05 1.28,0.39 0.77,-0.71 2.38,0.03 0.58,-0.9 z", + "CI": "m 467.49,449.71 -1.27,0.03 -1.96,-0.55 -1.79,0.03 -3.33,0.49 -1.94,0.81 -2.78,1.02 -0.54,-0.07 0.21,-2.3 0.27,-0.35 -0.08,-1.11 -1.19,-1.17 -0.89,-0.19 -0.82,-0.77 0.61,-1.24 -0.28,-1.36 0.13,-0.82 0.45,0 0.16,-1.23 -0.22,-0.54 0.27,-0.39 1.04,-0.34 -0.69,-2.26 -0.65,-1.16 0.23,-0.97 0.56,-0.21 0.36,-0.26 0.78,0.42 2.16,0.03 0.52,-0.83 0.48,0.06 0.81,-0.32 0.44,1.21 0.65,-0.36 1.16,-0.42 1.26,0.62 0.49,0.93 1.26,0.6 0.98,-0.71 1.32,-0.11 1.92,0.73 0.74,4.01 -1.18,2.36 -0.73,3.17 1.21,2.41 z", + "CL": "m 283.06,636.98 0,10.57 3,0 1.69,0.13 -0.93,1.98 -2.4,1.53 -1.38,-0.16 -1.66,-0.4 -2.04,-1.48 -2.94,-0.71 -3.53,-2.71 -2.86,-2.57 -3.86,-5.25 2.31,0.97 3.94,3.13 3.72,1.7 1.45,-2.17 0.91,-3.2 2.58,-1.91 2,0.55 z m 1.16,-112.01 1.1,4.15 2.02,-0.41 0.34,0.76 -0.96,3.16 -3.05,1.51 0.09,5.14 -0.59,1 0.84,1.23 -1.98,1.95 -1.84,2.96 -1,2.9 0.27,3.11 -1.73,3.34 1.29,5.69 0.73,0.61 -0.01,3.09 -1.6,3.31 0.06,2.87 -2.12,2.26 0.01,3.22 0.85,3.46 -1.68,1.3 -0.75,3.22 -0.66,3.75 0.47,4.54 -1.13,0.77 0.65,4.4 1.27,1.46 -0.92,1.63 1.3,0.78 0.3,1.48 -1.22,0.75 0.3,2.33 -1.02,5.35 -1.49,3.52 0.33,2.11 -0.89,2.68 -2.15,1.88 0.25,4.6 0.99,1.6 1.87,-0.28 -0.05,3.33 1.16,2.63 6.78,0.61 2.6,0.71 -2.49,-0.03 -1.35,1.13 -2.53,1.67 -0.45,4.38 -1.19,0.11 -3.16,-1.54 -3.21,-3.25 0,0 -3.49,-2.63 -0.88,-2.87 0.79,-2.62 -1.41,-2.94 -0.36,-7.34 1.19,-4.03 2.96,-3.19 -4.26,-1.19 2.67,-3.57 0.95,-6.56 3.12,1.37 1.46,-7.97 -1.88,-1 -0.88,4.75 -1.77,-0.54 0.88,-5.42 0.96,-6.84 1.29,-2.48 -0.81,-3.5 -0.23,-3.98 1.18,-0.11 1.72,-5.6 1.94,-5.43 1.19,-4.97 -0.65,-4.91 0.84,-2.67 -0.34,-3.96 1.64,-3.87 0.51,-6.04 0.9,-6.37 0.88,-6.75 -0.21,-4.87 -0.58,-4.15 1.44,-0.75 0.75,-1.5 1.37,1.99 0.37,2.12 1.47,1.25 -0.88,2.87 1.51,3.34 z", + "CM": "m 512.17,457.32 -0.35,-0.15 -1.66,0.36 -1.71,-0.38 -1.33,0.19 -4.56,-0.07 0.41,-2.2 -1.1,-1.84 -1.28,-0.48 -0.57,-1.25 -0.72,-0.4 0.04,-0.77 0.72,-1.98 1.33,-2.7 0.81,-0.03 1.67,-1.64 1.07,-0.04 1.57,1.15 1.93,-0.95 0.26,-1.16 0.63,-1.14 0.43,-1.42 1.5,-1.16 0.57,-1.97 0.59,-0.63 0.4,-1.47 0.74,-1.81 2.36,-2.2 0.15,-0.95 0.31,-0.51 -1.11,-1.14 0.09,-0.9 0.79,-0.17 1.11,1.83 0.19,1.89 -0.1,1.89 1.52,2.57 -1.56,-0.03 -0.79,0.2 -1.28,-0.28 -0.61,1.33 1.65,1.65 1.22,0.48 0.4,1.17 0.88,1.93 -0.44,0.77 -1.41,2.84 -0.67,0.51 -0.22,2.17 0.28,1.18 -0.22,0.83 1.32,1.46 0.24,1 1.04,1.44 1.28,0.9 0.12,1.27 0.3,0.81 -0.2,1.5 -2.23,-0.66 -2.27,-0.73 z", + "CN": "m 784.88,410.66 -2.42,1.41 -2.3,-0.91 -0.08,-2.53 1.38,-1.34 3.06,-0.83 1.61,0.07 0.63,1.13 -1.23,1.3 -0.65,1.7 z m 48.56,-107.52 4.88,1.38 3.32,3.03 1.13,3.95 4.26,0 2.43,-1.65 4.63,-1.24 -1.47,3.76 -1.09,1.51 -0.96,4.46 -1.89,3.89 -3.4,-0.7 -2.41,1.4 0.74,3.36 -0.4,4.55 -1.43,0.1 0.02,1.93 -1.81,-2.24 -1.11,2.13 -4.33,1.62 0.44,1.97 -2.42,-0.14 -1.33,-1.17 -1.93,2.64 -3.09,1.98 -2.28,2.35 -3.92,1.06 -2.06,1.69 -3.02,0.98 1.49,-1.67 -0.59,-1.41 2.22,-2.45 -1.48,-1.93 -2.44,1.3 -3.17,2.54 -1.73,2.34 -2.75,0.17 -1.43,1.68 1.48,2.41 2.29,0.58 0.09,1.58 2.22,1.02 3.14,-2.51 2.49,1.37 1.81,0.09 0.46,1.84 -3.97,0.97 -1.31,1.87 -2.73,1.73 -1.44,2.39 3.02,1.86 1.1,3.31 1.71,3.05 1.9,2.53 -0.05,2.43 -1.76,0.89 0.67,1.73 1.65,1 -0.43,2.61 -0.71,2.52 -1.57,0.28 -2.05,3.41 -2.27,4.09 -2.6,3.68 -3.86,2.82 -3.9,2.55 -3.16,0.35 -1.71,1.34 -0.97,-0.98 -1.59,1.5 -3.92,1.5 -2.97,0.46 -0.96,3.15 -1.55,0.17 -0.74,-2.16 0.66,-1.16 -3.76,-0.96 -1.33,0.49 -2.82,-0.78 -1.33,-1.22 0.44,-1.74 -2.56,-0.55 -1.35,-1.14 -2.39,1.62 -2.73,0.35 -2.24,-0.02 -1.5,0.74 -1.45,0.44 0.42,3.43 -1.5,-0.08 -0.25,-0.7 -0.08,-1.24 -2.06,0.87 -1.21,-0.55 -2.08,-1.13 0.82,-2.51 -1.78,-0.59 -0.67,-2.8 -2.96,0.51 0.34,-3.63 2.66,-2.58 0.11,-2.57 -0.08,-2.4 -1.22,-0.75 -0.94,-1.86 -1.64,0.24 -3.02,-0.47 0.95,-1.33 -1.31,-1.99 -2,1.35 -2.36,-0.78 -3.23,2.03 -2.55,2.36 -2.26,0.39 -1.23,-0.85 -1.48,-0.08 -2,-0.73 -1.51,0.8 -1.85,2.34 -0.24,-2.48 -1.71,0.66 -3.27,-0.31 -3.17,-0.73 -2.28,-1.39 -2.18,-0.63 -0.94,-1.53 -1.58,-0.46 -2.83,-2.09 -2.25,-0.99 -1.16,0.77 -3.9,-2.26 -2.75,-2.07 -0.79,-3.63 2.01,0.44 0.09,-1.69 -1.12,-1.71 0.28,-2.74 -3.01,-3.99 -4.61,-1.39 -0.83,-2.66 -2.07,-1.63 -0.5,-1.01 -0.42,-2.01 0.1,-1.38 -1.7,-0.81 -0.92,0.36 -0.71,-3.32 0.8,-0.83 -0.39,-0.85 2.68,-1.73 1.94,-0.72 2.97,0.49 1.06,-2.35 3.6,-0.44 1,-1.48 4.42,-2.03 0.39,-0.85 -0.22,-2.17 1.92,-1 -2.52,-6.75 5.55,-1.58 1.44,-0.89 2.02,-7.26 5.56,1.35 1.56,-1.86 0.13,-4.19 2.33,-0.39 2.13,-2.83 1.1,-0.35 0.74,2.97 2.36,2.23 4,1.57 1.93,3.32 -1.08,4.73 1.01,1.73 3.33,0.68 3.78,0.55 3.39,2.45 1.73,0.43 1.28,3.57 1.65,2.27 3.09,-0.09 5.79,0.85 3.73,-0.53 2.77,0.57 4.15,2.29 3.39,0 1.24,1.16 3.26,-2.01 4.53,-1.31 4.2,-0.14 3.28,-1.34 2.01,-2.05 1.96,-1.3 -0.45,-1.28 -0.9,-1.5 1.47,-2.54 1.58,0.36 2.88,0.8 2.79,-2.1 4.28,-1.55 2.05,-2.66 1.97,-1.16 4.07,-0.54 2.21,0.46 0.31,-1.45 -2.54,-2.89 -2.25,-1.33 -2.16,1.54 -2.77,-0.65 -1.59,0.53 -0.72,-1.71 1.98,-4.23 1.37,-3.25 3.37,1.63 3.95,-2.74 -0.03,-1.93 2.53,-4.73 1.56,-1.45 -0.04,-2.52 -1.54,-1.1 2.32,-2.31 3.48,-0.84 3.72,-0.13 4.2,1.39 2.46,1.71 1.73,4.61 1.05,1.94 0.98,2.73 1.05,4.31 z", + "CO": "m 264.17,464.06 -1.2,-0.66 -1.38,-0.92 -0.8,0.44 -2.38,-0.39 -0.68,-1.2 -0.52,0.05 -2.81,-1.59 -0.38,-0.87 1.05,-0.21 -0.12,-1.39 0.65,-1.01 1.39,-0.19 1.19,-1.75 1.07,-1.46 -1.04,-0.67 0.53,-1.62 -0.63,-2.56 0.6,-0.73 -0.44,-2.37 -1.14,-1.5 0.36,-1.36 0.91,0.2 0.53,-0.84 -0.65,-1.65 0.34,-0.42 1.44,0.09 2.11,-1.97 1.15,-0.3 0.03,-0.93 0.52,-2.39 1.61,-1.32 1.76,-0.05 0.22,-0.59 2.2,0.23 2.21,-1.43 1.09,-0.64 1.35,-1.37 1,0.17 0.73,0.75 -0.54,0.96 -1.8,0.48 -0.71,1.42 -1.09,0.81 -0.81,1.06 -0.35,2.01 -0.77,1.66 1.44,0.18 0.36,1.3 0.62,0.62 0.22,1.13 -0.33,1.04 0.1,0.59 0.69,0.23 0.67,0.98 3.6,-0.27 1.63,0.36 1.98,2.41 1.13,-0.3 2.02,0.15 1.6,-0.32 0.99,0.49 -0.51,1.5 -0.62,0.94 -0.22,2.01 0.56,1.85 0.8,0.83 0.09,0.63 -1.42,1.39 1.02,0.61 0.75,0.98 0.85,2.77 -0.53,0.35 -0.54,-1.65 -0.78,-0.88 -0.93,0.96 -5.46,-0.06 0.03,1.74 1.64,0.29 -0.09,1.07 -0.56,-0.29 -1.58,0.46 -0.01,2.02 1.24,1.02 0.44,1.59 -0.07,1.21 -1.26,7.65 -1.4,-1.49 -0.84,-0.06 1.81,-2.84 -2.15,-1.31 -1.68,0.24 -1.01,-0.48 -1.55,0.74 -2.09,-0.35 -1.65,-2.92 -1.3,-0.72 -0.89,-1.32 -1.86,-1.32 z", + "CR": "m 242.88,440.65 -1.52,-0.63 -0.57,-0.59 0.32,-0.49 -0.1,-0.62 -0.78,-0.68 -1.1,-0.55 -0.97,-0.36 -0.18,-0.83 -0.74,-0.51 0.18,0.83 -0.56,0.67 -0.64,-0.78 -0.9,-0.28 -0.38,-0.57 0.02,-0.86 0.37,-0.9 -0.79,-0.4 0.64,-0.54 0.42,-0.37 1.85,0.75 0.64,-0.37 0.89,0.24 0.47,0.58 0.82,0.19 0.67,-0.6 0.72,1.54 1.08,1.14 1.32,1.21 -1.09,0.25 0.02,1.13 0.58,0.42 -0.42,0.34 0.11,0.51 -0.23,0.57 z", + "CU": "m 244.83,397.19 2.43,0.22 2.2,0.03 2.63,1.03 1.12,1.11 2.62,-0.34 0.99,0.7 2.38,1.87 1.74,1.35 0.92,-0.04 1.68,0.61 -0.21,0.84 2.07,0.12 2.12,1.22 -0.33,0.69 -1.87,0.38 -1.89,0.15 -1.93,-0.24 -4.01,0.29 1.88,-1.66 -1.14,-0.77 -1.81,-0.2 -0.97,-0.86 -0.67,-1.7 -1.58,0.11 -2.62,-0.8 -0.84,-0.63 -3.65,-0.47 -0.98,-0.59 1.05,-0.75 -2.75,-0.15 -2.01,1.56 -1.17,0.04 -0.4,0.74 -1.38,0.33 -1.2,-0.29 1.48,-0.93 0.6,-1.09 1.27,-0.67 1.43,-0.59 2.13,-0.29 z", + "CY": "m 570.56,358.54 1.89,-1.46 -2.55,1.02 -2.02,-0.05 -0.4,0.83 -0.2,0.02 -1.33,0.12 0.65,1.37 1.37,0.44 2.88,-1.38 -0.09,-0.27 z", + "CZ": "m 523.06,308.11 -1.3,-0.8 -1.31,0.22 -2.18,-1.3 -0.99,0.32 -1.57,1.74 -2.09,-1.37 -1.58,-1.83 -1.43,-1.04 -0.3,-1.82 -0.49,-1.3 2.04,-0.95 1.04,-1.1 2.01,-0.86 0.71,-0.84 0.74,0.51 1.25,-0.47 1.33,1.43 2.09,0.39 -0.17,1.21 1.52,0.9 0.42,-1.13 1.92,0.49 0.27,1.37 2.08,0.26 1.29,2.13 -0.83,0.01 -0.44,0.77 -0.64,0.19 -0.18,0.97 -0.54,0.21 -0.08,0.39 -0.95,0.44 -1.25,-0.07 z", + "DE": "m 503.32,279.17 0.05,1.88 2.84,1.12 -0.03,1.7 2.85,-0.9 1.57,-1.31 3.17,1.89 1.32,1.51 0.66,2.39 -0.78,1.25 1.01,1.65 0.7,2.45 -0.22,1.56 1.15,2.86 -1.25,0.47 -0.74,-0.51 -0.71,0.84 -2.01,0.86 -1.04,1.1 -2.04,0.95 0.49,1.3 0.3,1.82 1.43,1.04 1.58,1.83 -0.98,1.95 -1.01,0.54 0.4,2.72 -0.27,0.7 -0.87,-0.85 -1.34,-0.12 -2.01,0.74 -2.47,-0.18 -0.4,1.09 -1.42,-1.14 -0.85,0.22 -3,-1.26 -0.58,0.9 -2.38,-0.03 0.35,-2.98 1.42,-2.9 -4.04,-0.78 -1.32,-1.13 0.16,-1.89 -0.56,-0.98 0.32,-2.97 -0.48,-4.69 1.69,0 0.71,-1.71 0.7,-4.23 -0.53,-1.58 0.55,-1 2.34,-0.26 0.52,1.04 1.91,-2.33 -0.64,-1.79 -0.13,-2.75 2.12,0.64 z", + "DJ": "m 596.3,427.97 0.66,0.88 -0.09,1.19 -1.6,0.68 1.21,0.77 -1.04,1.52 -0.62,-0.5 -0.67,0.2 -1.57,-0.05 -0.05,-0.86 -0.21,-0.79 0.94,-1.33 0.99,-1.26 1.2,0.25 z", + "DK": "m 511.08,276.09 -1.68,3.97 -2.93,-2.76 -0.39,-2.05 4.11,-1.66 0.89,2.5 z m -4.98,-4.25 -0.69,1.9 -0.83,-0.55 -2.02,3.59 0.76,2.39 -1.79,0.74 -2.12,-0.64 -1.14,-2.72 -0.08,-5.12 0.47,-1.38 0.8,-1.54 2.47,-0.32 0.98,-1.43 2.26,-1.47 -0.1,2.68 -0.83,1.68 0.34,1.43 1.52,0.76 z", + "DO": "m 274.43,407.6 0.35,-0.51 2.19,0.02 1.66,0.76 0.74,-0.08 0.51,1.05 1.53,-0.06 -0.09,0.88 1.25,0.11 1.38,1.08 -1.04,1.2 -1.34,-0.64 -1.28,0.12 -0.92,-0.14 -0.51,0.54 -1.08,0.18 -0.42,-0.72 -0.93,0.43 -1.12,2 -0.72,-0.46 -0.15,-0.84 0.06,-0.8 -0.72,-0.88 0.68,-0.5 0.22,-1.13 z", + "DZ": "m 509.15,396.33 -9.61,5.75 -8.12,5.85 -3.95,1.32 -3.11,0.29 -0.03,-1.88 -1.3,-0.48 -1.75,-0.85 -0.66,-1.39 -9.46,-6.55 -9.46,-6.65 -10.55,-7.53 0.06,-0.61 0,-0.21 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 2.69,-1.87 3.04,-0.6 1.77,-1.43 2.7,-1.05 4.75,-0.62 4.64,-0.29 1.41,0.52 2.64,-1.37 3,-0.03 1.14,0.81 1.91,-0.21 -0.57,1.79 0.45,3.28 -0.66,2.82 -1.73,1.88 0.25,2.53 2.29,1.98 0.03,0.81 1.72,1.33 1.2,5.86 0.91,2.84 0.15,1.48 -0.49,2.59 0.2,1.44 -0.36,1.72 0.25,1.97 -1.12,1.29 1.66,2.26 0.11,1.32 0.99,1.71 1.31,-0.56 2.22,1.42 z", + "EC": "m 250.35,473.12 1.49,-2.08 -0.61,-1.22 -1.07,1.3 -1.68,-1.23 0.57,-0.78 -0.47,-2.53 0.98,-0.42 0.52,-1.73 1.06,-1.8 -0.2,-1.13 1.54,-0.6 1.92,-1.11 2.81,1.59 0.52,-0.05 0.68,1.2 2.38,0.39 0.8,-0.44 1.38,0.92 1.2,0.66 0.39,2.11 -0.87,1.81 -3.06,2.92 -3.37,1.1 -1.72,2.43 -0.53,1.88 -1.59,1.15 -1.17,-1.41 -1.14,-0.3 -1.16,0.22 -0.07,-1.02 0.8,-0.66 z", + "EE": "m 543.67,264.96 0.33,-3.12 -1.03,0.67 -1.78,-1.9 -0.25,-3.11 3.55,-1.53 3.53,-0.81 3.04,0.92 2.9,-0.17 0.42,0.96 -1.99,3.14 0.83,4.96 -1.2,1.66 -2.32,-0.01 -2.41,-1.94 -1.23,-0.65 z", + "EG": "m 573.42,377.53 -0.79,1.29 -0.6,2.4 -0.76,1.64 -0.66,0.56 -0.93,-1.02 -1.27,-1.42 -2,-4.57 -0.28,0.29 1.16,3.37 1.72,3.18 2.12,4.88 1.03,1.68 0.9,1.74 2.52,3.4 -0.56,0.53 0.09,1.97 3.27,2.71 0.49,0.62 -11.12,0 -10.88,0 -11.27,0 0,-11.23 0,-11.18 -0.84,-2.58 0.72,-2 -0.43,-1.39 1.01,-1.57 3.73,-0.05 2.7,0.86 2.78,0.97 1.3,0.5 2.16,-1.03 1.15,-0.93 2.48,-0.27 1.99,0.41 0.77,1.62 0.65,-1.07 2.24,0.77 2.19,0.19 1.38,-0.82 z", + "EH": "m 438.82,383.31 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 -0.11,0.09 -0.05,0.04 -1.78,3.2 -1.86,1.14 -1.02,1.91 -0.06,1.65 -0.75,1.79 -0.94,0.49 -1.56,1.94 -0.96,2.15 0.18,1.02 -0.92,1.57 -1.08,0.82 -0.13,1.39 -0.12,1.27 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 0.06,-0.61 0,-0.21 z", + "ER": "m 594.25,428.42 -0.96,-0.93 -1.15,-1.67 -1.24,-0.92 -0.73,-1 -2.44,-1.15 -1.92,-0.03 -0.68,-0.61 -1.64,0.68 -1.7,-1.31 -0.88,2.15 -3.26,-0.6 -0.3,-1.15 1.21,-4.25 0.27,-1.93 0.88,-0.9 2.07,-0.48 1.42,-1.67 1.63,3.38 0.77,2.67 1.54,1.41 3.82,2.72 1.56,1.64 1.52,1.66 0.88,0.98 1.38,0.86 -0.85,0.7 z", + "ES": "m 450.17,334.81 0.14,-2.68 -1.14,-1.66 3.96,-2.77 3.43,0.7 3.77,-0.03 2.98,0.66 2.33,-0.2 4.53,0.12 1.12,1.49 5.16,1.73 1.02,-0.82 3.16,1.72 3.25,-0.49 0.15,2.19 -2.66,2.49 -3.59,0.78 -0.25,1.24 -1.73,2.03 -1.08,2.96 1.09,2.05 -1.62,1.6 -0.6,2.3 -2.12,0.7 -1.99,2.69 -3.55,0.05 -2.68,-0.06 -1.75,1.22 -1.07,1.31 -1.38,-0.29 -1.03,-1.17 -0.8,-2 -2.62,-0.54 -0.23,-1.16 1.04,-1.32 0.38,-0.96 -0.96,-1.06 0.77,-2.35 -1.12,-2.17 1.21,-0.3 0.11,-1.72 0.46,-0.53 0.03,-2.88 1.3,-1 -0.78,-1.88 -1.64,-0.13 -0.48,0.47 -1.65,0.01 -0.71,-1.84 -1.14,0.55 z", + "ET": "m 581.79,421.48 1.7,1.31 1.64,-0.68 0.68,0.61 1.92,0.03 2.44,1.15 0.73,1 1.24,0.92 1.15,1.67 0.96,0.93 -0.99,1.26 -0.94,1.33 0.21,0.79 0.05,0.86 1.57,0.05 0.67,-0.2 0.62,0.5 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -1.92,0 -1.13,-0.94 -2.56,1.17 -0.83,1.16 -1.87,-0.22 -0.62,-0.32 -0.66,0.07 -0.88,-0.02 -3.55,-2.38 -1.95,0 -0.96,-0.91 0,-1.57 -1.46,-0.47 -1.65,-3.05 -1.28,-0.65 -0.5,-1.12 -1.42,-1.37 -1.72,-0.2 0.96,-1.61 1.48,-0.07 0.42,-0.86 -0.03,-2.53 0.83,-2.96 1.32,-0.8 0.29,-1.16 1.2,-2.17 1.69,-1.42 1.14,-2.81 0.45,-2.47 3.26,0.6 z", + "FK": "m 303.91,633.38 3.36,-2.69 2.39,1.12 1.68,-1.79 2.24,2.01 -0.84,1.58 -3.79,1.36 -1.26,-1.59 -2.38,2.05 z", + "FI": "m 555.67,193.35 -0.41,5.4 4.3,4.99 -2.59,5.48 3.26,7.96 -1.89,5.76 2.53,4.86 -1.15,4.14 4.15,4.26 -1.06,3.1 -2.6,3.45 -6,7.41 -5.09,0.45 -4.93,2.07 -4.56,1.18 -1.63,-3.07 -2.71,-1.87 0.62,-5.72 -1.36,-5.41 1.34,-3.58 2.54,-3.94 6.41,-7.02 1.88,-1.39 -0.3,-2.84 -3.9,-3.22 -0.94,-2.7 -0.08,-11.12 -4.37,-5.15 -3.74,-3.81 1.68,-2.08 3.12,4.15 3.66,-0.39 3.01,1.87 2.67,-3.44 1.38,-5.85 4.35,-2.78 3.6,3.26 z", + "FJ": "m 980.78,508.86 -0.35,1.4 -0.23,0.16 -1.78,0.72 -1.79,0.61 -0.36,-1.09 1.4,-0.6 0.89,-0.16 1.64,-0.91 0.58,-0.13 z m -5.84,4.31 -1.27,-0.36 -1.08,1 0.27,1.29 1.55,0.36 1.74,-0.4 0.46,-1.53 -0.96,-0.84 -0.71,0.48 z", + "FR": "m 502.31,333.79 -0.93,2.89 -1.27,-0.76 -0.65,-2.53 0.57,-1.41 1.81,-1.45 0.47,3.26 z m -16.75,-33.35 1.96,2.06 1.44,-0.34 2.45,1.97 0.63,0.37 0.81,-0.09 1.32,1.12 4.04,0.79 -1.42,2.9 -0.36,2.98 -0.77,0.71 -1.28,-0.38 0.09,1.05 -2.05,2.3 -0.04,1.84 1.34,-0.63 0.96,1.77 -0.12,1.13 0.83,1.5 -0.97,1.21 0.72,3.04 1.52,0.49 -0.32,1.68 -2.54,2.17 -5.53,-1.04 -4.08,1.24 -0.32,2.29 -3.25,0.49 -3.15,-1.72 -1.02,0.82 -5.16,-1.73 -1.12,-1.49 1.45,-2.32 0.53,-7.88 -2.89,-4.26 -2.07,-2.09 -4.29,-1.6 -0.28,-3.07 3.64,-0.92 4.71,1.09 -0.89,-4.84 2.65,1.85 6.53,-3.37 0.84,-3.61 2.45,-0.9 0.41,1.56 1.3,0.07 1.3,1.79 z", + "GA": "m 506.61,474.73 -2.88,-2.82 -1.86,-2.3 -1.7,-2.88 0.09,-0.92 0.61,-0.9 0.68,-2.02 0.57,-2.07 0.95,-0.16 4.07,0.03 -0.02,-3.35 1.33,-0.19 1.71,0.38 1.66,-0.36 0.35,0.15 -0.21,1.22 0.79,1.43 2.08,-0.22 0.7,0.55 -1.21,3.23 1.32,1.64 0.31,2.18 -0.35,1.85 -0.86,1.32 -2.48,-0.12 -1.5,-1.34 -0.22,1.24 -1.89,0.34 -0.96,0.7 1.05,1.85 z", + "GB": "m 459.63,281.25 -1.5,3.29 -2.12,-0.98 -1.73,0.07 0.58,-2.57 -0.58,-2.6 2.35,-0.2 3,2.99 z m 7.45,-20.76 -3,5.73 2.86,-0.72 3.07,0.03 -0.73,4.22 -2.52,4.53 2.9,0.32 0.22,0.52 2.5,5.79 1.92,0.77 1.73,5.41 0.8,1.84 3.4,0.88 -0.34,2.93 -1.43,1.33 1.12,2.33 -2.52,2.33 -3.75,-0.04 -4.77,1.21 -1.31,-0.87 -1.85,2.06 -2.59,-0.5 -1.97,1.67 -1.49,-0.87 4.11,-4.64 2.51,-0.97 -0.02,0 -4.38,-0.75 -0.79,-1.8 2.93,-1.41 -1.54,-2.48 0.53,-3.06 4.17,0.42 0,0 0.41,-2.74 -1.88,-2.95 -0.04,-0.07 -3.4,-0.85 -0.67,-1.32 1.02,-2.2 -0.92,-1.37 -1.51,2.34 -0.16,-4.8 -1.42,-2.59 1.02,-5.36 2.18,-4.31 2.24,0.42 3.36,-0.41 z", + "GE": "m 592.01,336.1 0.42,-1.6 -0.7,-2.57 -1.62,-1.41 -1.55,-0.44 -1.03,-1.17 0.34,-0.46 2.37,0.66 4.13,0.62 3.82,1.83 0.49,0.71 1.7,-0.6 2.62,0.8 0.85,1.55 1.77,0.87 -0.73,0.51 1.38,2.02 -0.38,0.43 -1.51,-0.22 -2.09,-1.06 -0.69,0.6 -3.9,0.58 -2.7,-1.82 z", + "GF": "m 328.14,456.66 -1.07,1.06 -1.34,0.2 -0.38,-0.78 -0.63,-0.12 -0.87,0.76 -1.22,-0.57 0.71,-1.19 0.24,-1.27 0.48,-1.2 -1.09,-1.65 -0.22,-1.91 1.46,-2.41 0.95,0.31 2.06,0.66 2.97,2.36 0.46,1.14 -1.66,2.55 -0.85,2.06 z", + "GH": "m 478.48,447.09 -4.4,1.64 -1.56,0.96 -2.53,0.81 -2.5,-0.79 0.13,-1.11 -1.21,-2.41 0.73,-3.17 1.18,-2.36 -0.74,-4.01 -0.39,-2.13 0.07,-1.61 4.87,-0.13 1.24,0.21 0.9,-0.46 1.3,0.22 -0.21,0.89 1.17,1.46 0,2.05 0.27,2.22 0.7,1.03 -0.62,2.53 0.22,1.4 0.75,1.78 z", + "GL": "m 344.38,24.16 9.42,-13.61 9.84,1.07 3.57,-8.95 9.91,-2.42 22.4,3.15 17.54,18.59 -5.18,8.3 -10.73,0.93 -15.09,2.03 1.41,3.64 9.93,-2.24 8.44,6.91 5.45,-6.12 2.33,7.15 -3.08,10.97 7.14,-6.93 13.61,-7.55 8.41,3.81 1.57,8.12 -11.43,12.66 -1.58,3.9 -8.96,2.86 6.49,0.79 -3.28,11.51 -2.26,9.59 0.09,15.26 3.37,8.34 -4.38,0.51 -4.61,3.88 5.17,6.3 0.66,9.62 -3,1.02 3.63,9.15 -6.22,0.75 3.25,4.14 -0.92,3.51 -3.95,1.51 -3.91,0.03 3.51,6.48 0.04,4.13 -5.55,-3.83 -1.44,2.49 3.78,2.29 3.68,5.48 1.06,6.95 -5,1.62 -2.16,-3.26 -3.47,-4.98 0.96,5.87 -3.25,4.41 7.38,0.35 3.87,0.45 -7.52,7.03 -7.62,6.13 -8.2,2.61 -3.09,0.04 -2.9,2.87 -3.9,7.63 -6.03,4.89 -1.94,0.29 -3.74,1.67 -4.02,1.59 -2.41,4.12 -0.04,4.56 -1.41,4.16 -4.58,4.95 1.13,4.71 -1.26,4.85 -1.43,5.56 -3.95,0.34 -4.14,-4.63 -5.61,-0.03 -2.72,-3.18 -1.87,-5.8 -4.86,-7.68 -1.42,-4.15 -0.38,-5.89 -3.89,-6.27 1.01,-5.17 -1.87,-2.53 2.77,-8.65 4.22,-2.85 1.11,-3.26 0.59,-6.26 -3.21,2.86 -1.52,1.19 -2.52,1.14 -3.44,-2.61 -0.19,-5.55 1.1,-4.48 2.6,-0.12 5.72,2.25 -4.82,-5.43 -2.51,-3.01 -2.79,1.24 -2.34,-2.19 3.13,-8.5 -1.7,-3.53 -2.23,-6.74 -3.37,-10.91 -3.57,-4.17 0.03,-4.63 -7.53,-6.69 -5.95,-0.85 -7.49,0.47 -6.84,0.86 -3.26,-3.75 -4.87,-7.66 7.36,-3.97 5.65,-0.68 -12,-3.36 -6.32,-5.44 0.39,-5.34 10.61,-6.87 10.27,-7.16 1.08,-5.64 -7.56,-5.76 2.44,-6.64 9.71,-12.33 4.08,-1.98 -1.17,-8.57 6.64,-5.24 8.62,-3.21 8.62,-0.18 3.06,6.3 7.44,-11.32 6.69,7.78 3.93,1.59 5.83,6.41 L 344,33.25 z", + "GM": "m 428.28,426.68 0.36,-1.27 3.05,-0.09 0.64,-0.67 0.89,-0.05 1.1,0.71 0.87,0.01 0.93,-0.48 0.56,0.82 -1.21,0.65 -1.22,-0.05 -1.2,-0.61 -1.04,0.66 -0.5,0.03 -0.68,0.4 z", + "GN": "m 451.84,442.16 -0.79,-0.07 -0.57,1.13 -0.8,-0.01 -0.54,-0.6 0.18,-1.13 -1.17,-1.72 -0.73,0.31 -0.6,0.07 -0.77,0.16 0.03,-1.03 -0.45,-0.74 0.09,-0.82 -0.61,-1.19 -0.78,-1.01 -2.24,0 -0.65,0.53 -0.78,0.06 -0.48,0.61 -0.32,0.79 -1.5,1.24 -1.23,-1.67 -1.09,-1.11 -0.72,-0.36 -0.7,-0.57 -0.31,-1.25 -0.41,-0.62 -0.82,-0.47 1.25,-1.38 0.85,0.05 0.73,-0.48 0.62,0 0.44,-0.38 -0.24,-0.94 0.31,-0.3 0.05,-0.97 1.35,0.03 2.02,0.7 0.62,-0.07 0.21,-0.31 1.52,0.22 0.41,-0.16 0.16,1.05 0.45,-0.01 0.73,-0.38 0.46,0.1 0.78,0.72 1.2,0.23 0.77,-0.62 0.91,-0.38 0.67,-0.4 0.56,0.08 0.62,0.62 0.34,0.79 1.15,1.19 -0.58,0.73 -0.11,0.92 0.6,-0.28 0.35,0.34 -0.15,0.84 0.86,0.82 -0.56,0.21 -0.23,0.97 0.65,1.16 0.69,2.26 -1.04,0.34 -0.27,0.39 0.22,0.54 -0.16,1.23 z", + "GQ": "m 502.12,460.82 -0.53,-0.42 0.97,-3.13 4.56,0.07 0.02,3.35 -4.07,-0.03 z", + "GR": "m 541.95,356.96 1.53,1.16 2.18,-0.19 2.09,0.24 -0.07,0.6 1.53,-0.41 -0.35,1.01 -4.04,0.29 0.03,-0.56 -3.42,-0.67 0.52,-1.47 z m 8.15,-20.96 -0.87,2.33 -0.67,0.41 -1.71,-0.1 -1.46,-0.35 -3.4,0.96 1.94,2.06 -1.42,0.59 -1.56,0 -1.48,-1.88 -0.53,0.8 0.63,2.18 1.4,1.7 -1.06,0.79 1.56,1.65 1.39,1.03 0.04,2 -1.36,-1.15 -1.24,0.21 0.83,1.8 -0.92,0.19 -1,-0.69 1.2,3.95 -0.58,0 -0.45,-1.25 -0.57,-0.02 -0.26,1.32 -0.45,-0.3 0.1,-0.74 -0.56,-1.04 H 537 l 0.12,0.84 -0.25,0.27 -0.62,-0.54 -0.38,-1.01 0.52,-0.57 -0.36,-0.74 -0.41,-0.38 -0.42,-0.09 -0.49,-0.94 0.58,-0.52 0.36,-0.48 0.56,0.1 0.25,-0.41 0.59,-0.16 0.68,0.46 0.55,0.17 0.39,-0.62 -0.94,-0.08 -0.56,-0.19 -1.25,0.28 -1.22,0.05 -1.09,-1.64 -0.18,-0.25 0.17,-0.64 -1.42,-1.15 -0.19,-1.03 1.3,-1.76 0.17,-1.19 0.91,-0.53 0.06,-0.97 1.83,-0.33 1.07,-0.81 1.52,0.07 0.46,-0.65 0.53,-0.12 2.07,0.11 2.25,-1.02 1.98,1.3 2.55,-0.35 0.03,-1.86 1.38,0.93 z", + "GT": "m 222.89,425 -1.44,-0.5 -1.75,-0.05 -1.28,-0.57 -1.51,-1.18 0.07,-0.84 0.32,-0.68 -0.39,-0.54 1.35,-2.36 3.59,-0.01 0.08,-0.98 -0.46,-0.18 -0.31,-0.63 -1.04,-0.67 -1.04,-0.98 1.27,0 0,-1.65 2.62,0 2.59,0.03 -0.02,2.31 -0.22,3.28 0.83,0 0.92,0.53 0.24,-0.44 0.82,0.37 -1.27,1.11 -1.33,0.81 -0.2,0.55 0.22,0.56 -0.58,0.74 -0.66,0.17 0.15,0.34 -0.52,0.32 -0.96,0.72 z", + "GW": "m 433.08,432.69 -1.5,-1.19 -1.18,-0.18 -0.64,-0.81 0.01,-0.43 -0.85,-0.6 -0.18,-0.61 1.49,-0.47 0.93,0.09 0.75,-0.32 5.18,0.12 -0.05,0.97 -0.31,0.3 0.24,0.94 -0.44,0.38 -0.62,0 -0.73,0.48 -0.85,-0.05 z", + "GY": "m 307.95,440.25 1.84,1.03 1.74,1.83 0.07,1.45 1.06,0.07 1.5,1.36 1.11,0.98 -0.45,2.52 -1.7,0.73 0.15,0.65 -0.52,1.45 1.25,2.02 0.89,0.01 0.37,1.57 1.71,2.42 -0.68,0.1 -1.55,-0.23 -0.91,0.74 -1.27,0.49 -0.88,0.12 -0.31,0.54 -1.38,-0.14 -1.73,-1.3 -0.2,-1.29 -0.72,-1.41 0.45,-2.38 0.78,-0.98 -0.65,-1.3 -0.96,-0.42 0.37,-1.23 -0.66,-0.64 -1.46,0.12 -1.89,-2.12 0.76,-0.77 -0.06,-1.3 1.73,-0.45 0.69,-0.52 -0.96,-1.04 0.25,-1.03 z", + "HN": "m 230.68,427.15 -0.48,-0.89 -0.86,-0.25 0.2,-1.15 -0.38,-0.31 -0.58,-0.2 -1.23,0.34 -0.1,-0.39 -0.85,-0.46 -0.6,-0.57 -0.83,-0.24 0.58,-0.74 -0.22,-0.56 0.2,-0.55 1.33,-0.81 1.27,-1.11 0.29,0.12 0.62,-0.51 0.8,-0.04 0.26,0.23 0.44,-0.14 1.3,0.26 1.3,-0.08 0.9,-0.32 0.33,-0.32 0.89,0.15 0.67,0.2 0.73,-0.07 0.56,-0.25 1.28,0.4 0.45,0.06 0.85,0.54 0.81,0.65 1.02,0.44 0.74,0.8 -0.96,-0.06 -0.39,0.39 -0.97,0.38 -0.71,0 -0.62,0.37 -0.56,-0.13 -0.48,-0.44 -0.29,0.08 -0.36,0.69 -0.27,-0.03 -0.05,0.6 -0.98,0.79 -0.51,0.34 -0.29,0.36 -0.83,-0.58 -0.6,0.76 -0.59,-0.02 -0.66,0.07 0.06,1.41 -0.41,0.02 -0.35,0.66 z", + "HR": "m 528.3,319.18 0.68,1.55 0.89,1.14 -1.08,1.49 -1.27,-0.88 -1.94,0.06 -2.41,-0.66 -1.31,0.09 -0.6,0.82 -1.01,-0.91 -0.59,1.64 1.38,1.83 0.6,1.21 1.29,1.45 1.07,0.85 1.06,1.61 2.48,1.44 -0.31,0.64 -2.63,-1.4 -1.63,-1.38 -2.56,-1.14 -2.36,-2.85 0.57,-0.3 -1.28,-1.64 -0.06,-1.34 -1.8,-0.62 -0.86,1.71 -0.83,-1.33 0.07,-1.38 0.1,-0.06 1.95,0.14 0.52,-0.68 0.95,0.65 1.1,0.08 -0.01,-1.12 0.97,-0.41 0.28,-1.62 2.23,-1.08 0.89,0.5 2.1,1.73 2.31,0.77 z", + "HT": "m 270.29,407 1.71,0.13 2.43,0.47 0.25,1.61 -0.22,1.13 -0.68,0.5 0.72,0.88 -0.06,0.8 -1.86,-0.5 -1.32,0.2 -1.71,-0.21 -1.31,0.55 -1.51,-0.92 0.25,-0.95 2.58,0.41 2.12,0.24 1.01,-0.66 -1.28,-1.27 0.02,-1.13 -1.77,-0.46 z", + "HU": "m 520.93,315.36 0.93,-2.65 -0.54,-0.89 1.58,-0.01 0.21,-1.71 1.43,1.07 1.03,0.46 2.36,-0.51 0.22,-0.84 1.12,-0.13 1.36,-0.65 0.3,0.27 1.32,-0.52 0.66,-1 0.92,-0.25 3,1.28 0.6,-0.43 1.55,1.14 0.2,1.12 -1.71,0.87 -1.33,2.8 -1.69,2.76 -2.25,0.76 -1.75,-0.17 -2.15,1.05 -1.05,0.6 -2.31,-0.77 -2.1,-1.73 -0.89,-0.5 -0.55,-1.37 z", + "ID": "m 813.97,492.31 -1.18,0.05 -3.72,-1.98 2.61,-0.56 1.47,0.86 0.98,0.86 -0.16,0.77 z m 10.43,-0.28 -2.4,0.62 -0.34,-0.34 0.25,-0.96 1.21,-1.72 2.77,-1.12 0.28,0.56 0.05,0.86 -1.82,2.1 z m -18.32,-5.77 1.01,0.75 1.73,-0.23 0.7,1.2 -3.24,0.57 -1.94,0.38 -1.51,-0.02 0.96,-1.62 1.54,-0.02 0.75,-1.01 z m 14.03,-0.01 -0.41,1.56 -4.21,0.8 -3.73,-0.35 -0.01,-1.03 2.23,-0.59 1.76,0.84 1.87,-0.21 2.5,-1.02 z m -40.04,-3.69 5.37,0.28 0.62,-1.16 5.2,1.35 1.02,1.82 4.21,0.51 3.44,1.67 -3.2,1.07 -3.08,-1.13 -2.54,0.08 -2.91,-0.21 -2.62,-0.51 -3.25,-1.07 -2.06,-0.28 -1.17,0.35 -5.11,-1.16 -0.49,-1.21 -2.57,-0.21 1.92,-2.68 3.4,0.17 2.26,1.09 1.16,0.21 0.4,1.02 z m 73.18,-1.58 -1.44,1.91 -0.27,-2.11 0.5,-1.01 0.59,-0.95 0.64,0.82 -0.02,1.34 z m -20.96,-7.71 -1.05,0.93 -1.94,-0.51 -0.55,-1.2 2.84,-0.13 0.7,0.91 z m 9.04,-1.01 1.02,2.13 -2.37,-1.15 -2.34,-0.23 -1.58,0.18 -1.94,-0.1 0.67,-1.53 3.46,-0.12 3.08,0.82 z m 10.29,-5.42 0.78,4.51 2.9,1.67 2.34,-2.96 3.22,-1.68 2.49,0 2.4,0.97 2.08,1 3.01,0.53 0.05,9.1 0.05,9.16 -2.5,-2.31 -2.85,-0.57 -0.69,0.8 -3.55,0.09 1.19,-2.29 1.77,-0.78 -0.73,-3.05 -1.35,-2.35 -5.44,-2.37 -2.31,-0.23 -4.21,-2.58 -0.83,1.36 -1.08,0.25 -0.64,-1.02 -0.01,-1.21 -2.14,-1.37 3.02,-1 2,0.05 -0.24,-0.74 -4.1,-0.01 -1.11,-1.66 -2.5,-0.51 -1.19,-1.38 3.78,-0.67 1.44,-0.91 4.5,1.14 0.45,1.02 z m -24.96,-7.16 -2.25,2.76 -2.11,0.54 -2.7,-0.54 -4.67,0.14 -2.45,0.4 -0.4,2.11 2.51,2.48 1.51,-1.26 5.23,-0.95 -0.23,1.28 -1.22,-0.4 -1.22,1.63 -2.47,1.08 2.65,3.57 -0.51,0.96 2.52,3.22 -0.02,1.84 -1.5,0.82 -1.1,-0.98 1.36,-2.29 -2.75,1.08 -0.7,-0.77 0.36,-1.08 -2.02,-1.64 0.21,-2.72 -1.87,0.85 0.24,3.25 0.11,4 -1.78,0.41 -1.2,-0.82 0.8,-2.57 -0.43,-2.69 -1.18,-0.02 -0.87,-1.91 1.16,-1.83 0.4,-2.21 1.41,-4.2 0.59,-1.15 2.38,-2.07 2.19,0.82 3.54,0.39 3.22,-0.12 2.77,-2.02 0.49,0.61 z m 9.67,0.8 -0.15,2.43 -1.45,-0.27 -0.43,1.69 1.16,1.47 -0.79,0.33 -1.13,-1.76 -0.83,-3.56 0.56,-2.23 0.93,-1.01 0.2,1.52 1.66,0.24 0.27,1.15 z m -30.32,-1.94 3.14,2.58 -3.32,0.33 -0.94,1.9 0.12,2.52 -2.7,1.91 -0.06,2.77 -1.08,4.27 -0.41,-0.99 -3.19,1.26 -1.11,-1.71 -2,-0.16 -1.4,-0.89 -3.33,1 -1.02,-1.35 -1.84,0.15 -2.31,-0.32 -0.43,-3.74 -1.4,-0.77 -1.35,-2.38 -0.39,-2.44 0.33,-2.58 1.67,-1.85 0.47,1.86 1.92,1.57 1.81,-0.57 1.79,0.2 1.63,-1.41 1.34,-0.24 2.65,0.78 2.29,-0.59 1.44,-3.88 1.08,-0.97 0.97,-3.17 3.22,0 2.43,0.47 -1.59,2.52 2.06,2.64 -0.49,1.28 z m -33.81,21.42 -3.1,0.06 -2.36,-2.34 -3.6,-2.28 -1.2,-1.69 -2.12,-2.27 -1.39,-2.09 -2.13,-3.9 -2.46,-2.32 -0.82,-2.39 -1.03,-2.17 -2.53,-1.75 -1.47,-2.39 -2.11,-1.56 -2.92,-3.08 -0.25,-1.42 1.81,0.11 4.34,0.54 2.48,2.73 2.17,1.89 1.55,1.16 2.66,3 2.85,0.04 2.36,1.91 1.62,2.33 2.13,1.27 -1.12,2.27 1.61,0.97 1.01,0.07 0.48,1.94 0.98,1.56 2.06,0.25 1.36,1.76 -0.7,3.47 -0.16,4.32 z", + "IE": "m 458.13,284.54 0.46,3.36 -2.12,4.12 -4.97,2.68 -3.97,-0.68 2.27,-4.78 -1.46,-4.77 3.81,-3.75 2.12,-2.27 0.58,2.6 -0.58,2.57 1.74,-0.06 z", + "IL": "m 575.66,367.07 -0.49,1.05 -1.02,-0.46 -0.58,2.2 0.7,0.36 -0.71,0.46 -0.13,0.86 1.32,-0.45 0.07,1.27 -1.4,5.17 -1.84,-5.55 0.81,-1.08 -0.19,-0.19 0.74,-1.53 0.57,-2.5 0.4,-0.84 0.08,-0.03 0.94,0 0.26,-0.58 0.75,-0.05 0.04,1.37 -0.38,0.5 z", + "IN": "m 693.75,357.69 3.01,3.99 -0.28,2.74 1.11,1.71 -0.09,1.69 -2.01,-0.44 0.79,3.63 2.75,2.06 3.9,2.27 -1.78,1.46 -1.09,2.99 2.72,1.2 2.64,1.55 3.66,1.77 3.84,0.41 1.62,1.59 2.16,0.29 3.38,0.73 2.33,-0.05 0.32,-1.24 -0.37,-1.99 0.22,-1.35 1.71,-0.67 0.24,2.48 0.05,0.63 2.55,1.19 1.77,-0.49 2.36,0.21 2.29,-0.09 0.2,-1.93 -1.14,-1 2.26,-0.4 2.55,-2.35 3.23,-2.03 2.35,0.78 2,-1.34 1.32,1.98 -0.95,1.34 3.02,0.47 0.22,1.2 -0.99,0.58 0.23,1.93 -2,-0.57 -3.63,2.16 0.08,1.78 -1.54,2.6 -0.15,1.5 -1.25,2.52 -2.19,-0.7 -0.11,3.15 -0.63,1.03 0.3,1.28 -1.39,0.72 -1.47,-4.8 -0.78,0.01 -0.46,1.94 -1.53,-1.58 0.86,-1.73 1.26,-0.18 1.29,-2.59 -1.61,-0.53 -2.61,0.05 -2.66,-0.42 -0.25,-2.15 -1.34,-0.16 -2.22,-1.34 -0.99,2.11 2.02,1.63 -1.75,1.15 -0.62,1.12 1.72,0.82 -0.47,1.84 0.97,2.28 0.44,2.48 -0.41,1.1 -1.9,-0.04 -3.46,0.62 0.16,2.25 -1.5,1.76 -4.03,2 -3.14,3.46 -2.11,1.85 -2.79,1.91 0,1.34 -1.4,0.72 -2.53,1.03 -1.31,0.16 -0.84,2.2 0.58,3.75 0.15,2.37 -1.18,2.71 -0.02,4.83 -1.45,0.14 -1.27,2.15 0.85,0.93 -2.56,0.8 -0.94,1.92 -1.13,0.81 -2.65,-2.63 -1.3,-3.96 -1.08,-2.86 -0.98,-1.34 -1.49,-2.74 -0.69,-3.58 -0.49,-1.8 -2.55,-3.97 -1.16,-5.64 -0.84,-3.77 0.01,-3.58 -0.54,-2.8 -4.08,1.79 -1.98,-0.36 -3.66,-3.63 1.35,-1.09 -0.83,-1.18 -3.29,-2.58 1.87,-2.04 6.17,0.01 -0.56,-2.64 -1.57,-1.56 -0.32,-2.39 -1.84,-1.4 3.09,-3.3 3.26,0.24 2.93,-3.32 1.76,-3.26 2.72,-3.24 -0.04,-2.33 2.39,-1.91 -2.27,-1.63 -0.97,-2.25 -0.99,-2.95 1.37,-1.46 4.26,0.83 3.12,-0.51 z", + "IQ": "m 602.86,356.02 1.83,1.04 0.22,2 -1.42,1.17 -0.65,2.64 1.95,3.18 3.43,1.82 1.45,2.5 -0.46,2.37 0.89,0 0.03,1.73 1.55,1.69 -1.66,-0.15 -1.89,-0.27 -2.06,3.08 -5.21,-0.26 -7.9,-6.49 -4.18,-2.29 -3.38,-0.89 -1.13,-4.04 6.21,-3.5 1.06,-4.12 -0.27,-2.52 1.54,-0.86 1.44,-2.18 1.2,-0.55 3.26,0.46 0.99,0.89 1.34,-0.59 z", + "IR": "m 626.69,351.78 2.47,-0.68 1.99,-2.02 1.87,0.1 1.23,-0.66 2,0.33 3.1,1.79 2.24,0.39 3.2,3.09 2.09,0.12 0.25,2.91 -1.14,4.25 -0.77,2.45 1.22,0.49 -1.2,1.83 0.92,2.64 0.22,2.09 2.12,0.55 0.23,2.1 -2.54,2.93 1.38,1.68 1.13,1.93 2.68,1.4 0.08,2.77 1.34,0.51 0.23,1.44 -4.04,1.61 -1.06,3.6 -5.27,-0.93 -3.06,-0.71 -3.16,-0.41 -1.2,-3.81 -1.34,-0.56 -2.16,0.56 -2.82,1.51 -3.43,-1.03 -2.83,-2.41 -2.7,-0.9 -1.87,-3.01 -2.07,-4.27 -1.51,0.52 -1.78,-1.07 -1.05,1.26 -1.55,-1.69 -0.03,-1.73 -0.89,0 0.46,-2.37 -1.45,-2.5 -3.43,-1.82 -1.95,-3.18 0.65,-2.64 1.42,-1.17 -0.22,-2 -1.83,-1.04 -1.82,-4.14 -1.53,-2.83 0.54,-1.09 -0.87,-4.12 1.92,-1.03 0.44,1.37 1.42,1.66 1.92,0.47 1.02,-0.1 3.31,-2.66 1.05,-0.27 0.82,1.07 -0.96,1.78 1.75,1.86 0.69,-0.17 0.89,2.61 2.66,0.73 1.95,1.76 3.98,0.6 4.38,-0.92 z", + "IS": "m 434.82,212.68 -0.64,4.48 3.16,4.6 -3.64,5.01 -8.09,4.38 -2.42,1.15 -3.69,-0.93 -7.82,-2.01 2.76,-2.84 -6.1,-3.2 4.96,-1.28 -0.12,-1.97 -5.88,-1.57 1.89,-4.47 4.25,-1.03 4.37,4.68 4.26,-3.75 3.53,1.96 4.57,-3.71 z", + "IT": "m 519.02,348.13 -1.01,2.78 0.42,1.09 -0.59,1.79 -2.14,-1.31 -1.43,-0.38 -3.91,-1.79 0.39,-1.82 3.28,0.32 2.86,-0.39 2.13,-0.29 z m -17.69,-10.82 1.68,2.62 -0.39,4.81 -1.27,-0.23 -1.14,1.2 -1.06,-0.95 -0.11,-4.38 -0.64,-2.1 1.54,0.19 1.39,-1.16 z m 8.87,-21.6 4.01,1.05 -0.3,1.99 0.67,1.71 -2.23,-0.58 -2.28,1.42 0.16,1.97 -0.34,1.12 0.92,1.99 2.63,1.95 1.41,3.17 3.12,3.05 2.2,-0.02 0.68,0.83 -0.79,0.74 2.51,1.35 2.06,1.12 2.4,1.92 0.29,0.68 -0.52,1.31 -1.56,-1.7 -2.44,-0.6 -1.18,2.36 2.03,1.34 -0.33,1.88 -1.17,0.21 -1.5,3.06 -1.17,0.27 0.01,-1.08 0.57,-1.91 0.61,-0.77 -1.09,-2.09 -0.86,-1.83 -1.16,-0.46 -0.83,-1.58 -1.8,-0.67 -1.21,-1.49 -2.07,-0.24 -2.19,-1.68 -2.56,-2.45 -1.91,-2.19 -0.87,-3.8 -1.4,-0.45 -2.28,-1.29 -1.29,0.53 -1.62,1.8 -1.17,0.28 0.32,-1.68 -1.52,-0.49 -0.72,-3.04 0.97,-1.21 -0.83,-1.5 0.12,-1.13 1.21,0.86 1.35,-0.19 1.57,-1.36 0.49,0.64 1.34,-0.13 0.61,-1.63 2.07,0.51 1.24,-0.68 0.22,-1.67 1.7,0.58 0.33,-0.78 2.77,-0.71 0.6,1.39 z", + "JM": "m 258.01,411.21 1.89,0.26 1.49,0.71 0.46,0.8 -1.97,0.05 -0.85,0.49 -1.57,-0.47 -1.6,-1.07 0.33,-0.67 1.18,-0.2 z", + "JO": "m 575.17,368.12 0.49,-1.05 3.12,1.32 5.49,-3.54 1.13,4.04 -0.53,0.49 -5.62,1.65 2.8,3.26 -0.93,0.54 -0.46,1.09 -2.14,0.44 -0.67,1.16 -1.22,0.98 -3.12,-0.51 -0.09,-0.46 1.4,-5.17 -0.07,-1.27 0.42,-0.96 z", + "JP": "m 853.01,362.26 0.36,1.15 -1.58,2.03 -1.15,-1.07 -1.44,0.78 -0.74,1.95 -1.83,-0.95 0.02,-1.58 1.55,-2 1.59,0.39 1.15,-1.42 2.07,0.72 z m 17.77,-10.28 -1.06,2.78 0.49,1.73 -1.46,2.42 -3.58,1.6 -4.93,0.21 -4,3.84 -1.88,-1.29 -0.11,-2.52 -4.88,0.75 -3.32,1.59 -3.28,0.06 2.84,2.46 -1.87,5.61 -1.81,1.37 -1.36,-1.27 0.69,-2.96 -1.77,-0.96 -1.14,-2.28 2.65,-1.03 1.47,-2.11 2.82,-1.75 2.06,-2.33 5.58,-1.02 3,0.7 2.93,-6.17 1.87,1.67 4.11,-3.51 1.59,-1.38 1.76,-4.38 -0.48,-4.1 1.18,-2.33 2.98,-0.68 1.53,5.11 -0.08,2.94 -2.59,3.6 0.05,3.63 z m 8.23,-25.93 1.97,0.83 1.98,-1.65 0.62,4.35 -4.16,1.05 -2.46,3.76 -4.41,-2.58 -1.53,4.12 -3.12,0.06 -0.39,-3.74 1.39,-2.94 3,-0.21 0.82,-5.38 0.83,-3.09 3.29,4.12 2.17,1.3 z", + "KE": "m 590.44,466.03 1.66,2.29 -1.96,1.12 -0.69,1.16 -1.06,0.2 -0.39,1.97 -0.9,1.12 -0.55,1.86 -1.13,0.92 -4.02,-2.79 -0.2,-1.62 -10.16,-5.67 -0.48,-0.31 -0.02,-2.95 0.8,-1.13 1.38,-1.84 1.02,-2.03 -1.23,-3.2 -0.33,-1.4 -1.33,-1.94 1.72,-1.67 1.9,-1.84 1.46,0.47 0,1.57 0.96,0.91 1.95,0 3.55,2.38 0.88,0.02 0.66,-0.07 0.62,0.32 1.87,0.22 0.83,-1.16 2.56,-1.17 1.13,0.94 1.92,0 -2.45,3.17 z", + "KG": "m 674.47,333.36 0.63,-1.66 1.84,-0.54 4.62,1.31 0.43,-2.24 1.59,-0.8 4,1.61 1.02,-0.42 4.65,0.1 4.16,0.4 1.4,1.37 1.73,0.55 -0.39,0.86 -4.42,2.03 -1,1.48 -3.6,0.44 -1.06,2.35 -2.97,-0.49 -1.93,0.72 -2.68,1.72 0.39,0.85 -0.8,0.83 -5.3,0.55 -3.47,-1.17 -3.04,0.28 0.27,-2.1 3.05,0.61 1.03,-1.13 2.13,0.36 3.59,-2.64 -3.32,-1.96 -2,0.93 -2.07,-1.4 2.35,-2.43 z", + "KH": "m 765.69,433.85 -1.14,-1.48 -1.41,-2.94 -0.67,-3.45 1.8,-2.38 3.62,-0.55 2.63,0.41 2.31,1.13 1.27,-1.99 2.49,1.06 0.65,1.92 -0.35,3.42 -4.71,2.19 1.23,1.73 -2.94,0.2 -2.43,1.14 z", + "KP": "m 841.8,332.87 0.39,0.67 -1.06,-0.23 -1.22,1.27 -0.84,1.28 0.11,2.67 -1.45,0.81 -0.5,0.65 -1.06,1.08 -1.87,0.6 -1.21,0.98 -0.09,1.57 -0.33,0.4 1.12,0.58 1.59,1.58 -0.41,0.86 -1.19,0.23 -1.98,0.17 -1.09,1.6 -1.26,-0.12 -0.17,0.32 -1.36,-0.67 -0.34,0.66 -0.82,0.29 -0.1,-0.66 -0.73,-0.32 -0.75,-0.57 0.77,-1.57 0.66,-0.42 -0.25,-0.65 0.71,-1.94 -0.19,-0.59 -1.63,-0.4 -1.32,-0.97 2.28,-2.35 3.09,-1.98 1.93,-2.65 1.33,1.17 2.42,0.14 -0.44,-1.97 4.33,-1.63 1.12,-2.13 z", + "KR": "m 835.38,346.78 2.42,4.18 0.69,2.27 0.02,3.98 -1.05,1.88 -2.54,0.66 -2.24,1.41 -2.53,0.29 -0.31,-1.85 0.52,-2.57 -1.24,-3.6 2.08,-0.59 -1.92,-3 0.17,-0.32 1.26,0.12 1.09,-1.6 1.98,-0.17 1.19,-0.23 z", + "XK": "m 533.72,334.17 -0.13,0.77 -0.36,-0.03 -0.18,-1.37 -0.67,-0.38 -0.6,-1.02 0.52,-0.85 0.67,-0.28 0.39,-1.26 0.5,-0.22 0.4,0.54 0.53,0.24 0.36,0.61 0.46,0.18 0.55,0.7 0.4,-0.02 -0.32,0.93 -0.33,0.45 0.09,0.28 -0.63,0.14 z", + "KW": "m 610.02,376.01 0.58,1.41 -0.25,0.73 0.9,2.41 -1.98,0.08 -0.7,-1.51 -2.5,-0.31 2.06,-3.08 z", + "KZ": "m 674.47,333.36 -1.61,0.7 -3.69,2.61 -1.23,2.65 -1.05,0.02 -0.76,-1.75 -3.57,-0.12 -0.57,-3.06 -1.37,-0.03 0.21,-3.8 -3.35,-2.8 -4.81,0.3 -3.29,0.56 -2.68,-3.5 -2.29,-1.48 -4.35,-2.84 -0.52,-0.35 -7.22,2.35 0.11,14.13 -1.44,0.18 -1.96,-2.93 -1.9,-1.06 -3.18,0.79 -1.24,1.25 -0.16,-0.92 0.69,-1.57 -0.53,-1.32 -3.25,-1.3 -1.27,-3.47 -1.54,-0.98 -0.1,-1.28 2.73,0.37 0.11,-2.88 2.38,-0.64 2.45,0.59 0.51,-3.91 -0.5,-2.51 -2.81,0.2 -2.38,-1 -3.25,1.79 -2.61,0.86 -1.43,-0.66 0.29,-2.1 -1.79,-2.76 -2.08,0.11 -2.38,-2.83 1.62,-3.22 -0.82,-0.87 2.23,-4.77 2.89,2.53 0.35,-3.19 5.78,-4.85 4.38,-0.12 6.19,3.1 3.31,1.79 2.98,-1.87 4.44,-0.08 3.59,2.29 0.82,-1.31 3.93,0.19 0.71,-2.11 -4.55,-3.09 2.69,-2.23 -0.52,-1.25 2.69,-1.21 -2.02,-3.2 1.28,-1.62 10.49,-1.66 1.37,-1.19 7.02,-1.79 2.52,-2.04 5.04,1.06 0.88,5.01 2.93,-1.16 3.6,1.63 -0.23,2.58 2.69,-0.27 7.02,-4.49 -1.02,1.5 3.58,3.66 6.26,11.58 1.5,-2.33 3.86,2.56 4.03,-1.14 1.54,0.8 1.35,2.55 1.96,0.84 1.2,1.85 3.61,-0.58 1.49,2.63 -2.14,2.83 -2.33,0.4 -0.13,4.18 -1.56,1.86 -5.56,-1.35 -2.02,7.26 -1.44,0.89 -5.55,1.58 2.52,6.75 -1.92,1 0.22,2.16 -1.73,-0.55 -1.4,-1.37 -4.16,-0.4 -4.65,-0.1 -1.02,0.42 -4,-1.61 -1.59,0.8 -0.43,2.24 -4.62,-1.31 -1.84,0.54 z", + "LA": "m 770.52,423.46 0.91,-1.3 0.13,-2.44 -2.27,-2.53 -0.18,-2.87 -2.13,-2.38 -2.12,-0.2 -0.56,1.02 -1.65,0.08 -0.84,-0.51 -2.95,1.74 -0.07,-2.62 0.69,-3.11 -1.89,-0.13 -0.16,-1.78 -1.22,-0.92 0.6,-1.1 2.39,-1.94 0.25,0.7 1.49,0.08 -0.42,-3.43 1.45,-0.44 1.64,2.37 1.26,2.72 3.45,0.03 1.09,2.59 -1.79,0.77 -0.81,1.07 3.36,1.76 2.33,3.46 1.77,2.57 2.12,2.02 0.71,2.04 -0.51,2.88 -2.49,-1.06 -1.27,1.99 z", + "LB": "m 575.94,365.18 -0.75,0.05 -0.26,0.58 -0.94,0 1,-2.73 1.39,-2.38 0.06,-0.12 1.26,0.18 0.46,1.32 -1.53,1.27 z", + "LK": "m 704.82,442.62 -0.42,2.92 -1.17,0.8 -2.44,0.64 -1.34,-2.23 -0.49,-4.03 1.27,-4.58 1.93,1.57 1.31,1.98 z", + "LR": "m 453.88,451.47 -0.74,0.02 -2.89,-1.33 -2.54,-2.13 -2.39,-1.53 -1.89,-1.81 0.67,-0.9 0.15,-0.81 1.26,-1.53 1.31,-1.31 0.6,-0.07 0.73,-0.31 1.17,1.72 -0.18,1.13 0.54,0.6 0.8,0.01 0.57,-1.13 0.79,0.07 -0.13,0.82 0.28,1.36 -0.61,1.24 0.82,0.77 0.89,0.19 1.19,1.17 0.08,1.11 -0.27,0.35 z", + "LS": "m 556.75,548 0.98,0.96 -0.86,1.56 -0.48,1.05 -1.56,0.5 -0.52,1.04 -1,0.32 -2.1,-2.49 1.49,-2.03 1.52,-1.25 1.31,-0.64 z", + "LT": "m 539.24,282.34 -0.23,-1.22 0.3,-1.33 -1.24,-0.77 -2.93,-0.86 -0.6,-4.16 3.21,-1.55 4.7,0.33 2.76,-0.5 0.39,1.05 1.49,0.32 2.7,2.42 0.26,2.2 -2.3,1.57 -0.65,2.72 -3.04,1.8 -2.71,-0.04 -0.67,-1.46 z", + "LU": "m 492.45,301.54 0.56,0.98 -0.16,1.89 -0.81,0.1 -0.63,-0.38 0.31,-2.43 z", + "LV": "m 534.54,274 0.1,-3.81 1.38,-3.24 2.64,-1.78 2.22,3.88 2.25,-0.1 0.54,-3.99 2.39,-0.93 1.23,0.65 2.41,1.94 2.32,0.01 1.35,1.19 0.23,2.49 0.91,2.99 -3.02,1.93 -1.7,0.84 -2.7,-2.42 -1.49,-0.32 -0.39,-1.05 -2.76,0.5 -4.7,-0.33 z", + "LY": "m 517.14,398.18 -1.98,1.12 -1.58,-1.66 -4.43,-1.31 -1.23,-1.91 -2.22,-1.42 -1.31,0.56 -0.99,-1.71 -0.11,-1.32 -1.66,-2.26 1.12,-1.29 -0.25,-1.97 0.36,-1.72 -0.2,-1.44 0.49,-2.59 -0.15,-1.48 -0.91,-2.84 1.37,-0.75 0.24,-1.38 -0.3,-1.35 1.93,-1.26 0.86,-1.05 1.37,-0.95 0.16,-2.55 3.29,1.15 1.18,-0.29 2.34,0.56 3.72,1.47 1.31,2.92 2.52,0.64 3.95,1.36 2.99,1.61 1.37,-0.84 1.34,-1.49 -0.65,-2.51 0.88,-1.6 2.02,-1.55 1.93,-0.45 3.79,0.68 0.96,1.48 1.04,0.01 0.89,0.56 2.79,0.39 0.68,1.08 -1.01,1.57 0.43,1.39 -0.72,2 0.84,2.58 0,11.18 0,11.23 0,5.96 -3.22,0.01 -0.04,1.24 -11.18,-5.7 -11.19,-5.77 z", + "MA": "m 451.21,383.39 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 -1.22,-0.04 -2.9,-0.75 -2.67,0.24 -1.69,-1.46 -2.06,-0.02 -0.89,2.11 -1.87,3.51 -2.08,1.39 -2.81,1.53 -1.8,2.24 -0.38,1.74 -1.07,2.82 0.7,4.03 -2.34,2.68 -1.4,0.85 -2.21,2.17 -2.61,0.35 -1.3,1.12 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 z", + "MD": "m 550.14,309.7 0.67,-0.62 1.86,-0.42 2.07,1.31 1.15,0.16 1.27,1.12 -0.2,1.41 1.02,0.67 0.4,1.72 0.98,1.04 -0.19,0.6 0.52,0.42 -0.74,0.29 -1.66,-0.11 -0.27,-0.57 -0.59,0.33 0.2,0.72 -0.77,1.29 -0.49,1.37 -0.7,0.44 -0.51,-1.83 0.3,-1.72 -0.09,-1.79 -1.62,-2.44 -0.89,-1.75 -0.87,-1.24 z", + "ME": "m 531.02,332.48 -0.17,-0.72 -1.22,1.87 0.19,1.19 -0.59,-0.29 -0.78,-1.23 -1.22,-0.75 0.31,-0.64 0.41,-2.1 0.91,-0.89 0.53,-0.36 0.74,0.66 0.41,0.54 0.92,0.41 1.07,0.79 -0.23,0.33 -0.52,0.85 z", + "MG": "m 614.42,498.65 0.74,1.21 0.69,1.89 0.46,3.46 0.72,1.35 -0.28,1.38 -0.49,0.86 -0.96,-1.7 -0.52,0.86 0.53,2.14 -0.25,1.24 -0.77,0.67 -0.18,2.48 -1.1,3.42 -1.38,4.09 -1.74,5.67 -1.07,4.21 -1.27,3.55 -2.28,0.73 -2.45,1.31 -1.61,-0.79 -2.23,-1.1 -0.77,-1.62 -0.19,-2.71 -0.98,-2.42 -0.26,-2.17 0.5,-2.16 1.29,-0.52 0.01,-0.99 1.34,-2.26 0.25,-1.88 -0.65,-1.4 -0.53,-1.85 -0.22,-2.7 0.98,-1.63 0.37,-1.85 1.4,-0.1 1.57,-0.6 1.03,-0.52 1.24,-0.04 1.59,-1.65 2.31,-1.78 0.84,-1.44 -0.38,-1.23 1.19,0.35 1.55,-1.99 0.05,-1.72 0.93,-1.28 z", + "MK": "m 533.23,334.91 0.36,0.03 0.13,-0.77 1.65,-0.59 0.63,-0.14 0.96,-0.22 1.29,-0.06 1.41,1.21 0.2,2.47 -0.54,0.12 -0.46,0.65 -1.52,-0.07 -1.07,0.81 -1.83,0.32 -1.16,-0.9 -0.4,-1.59 z", + "ML": "m 441.38,422.47 0.94,-0.52 0.47,-1.7 0.89,-0.07 1.96,0.8 1.58,-0.57 1.08,0.19 0.43,-0.64 11.25,-0.04 0.62,-2.03 -0.49,-0.36 -1.35,-12.68 -1.35,-13.06 4.29,-0.05 9.46,6.65 9.46,6.55 0.66,1.39 1.75,0.85 1.3,0.48 0.03,1.88 3.11,-0.29 0.01,6.75 -1.54,1.94 -0.24,1.79 -2.49,0.45 -3.82,0.25 -1.04,1.03 -1.8,0.11 -1.79,0.01 -0.7,-0.55 -1.55,0.41 -2.62,1.2 -0.53,0.9 -2.18,1.28 -0.38,0.74 -1.17,0.58 -1.36,-0.38 -0.77,0.7 -0.41,1.96 -2.23,2.36 0.07,0.96 -0.77,1.21 0.19,1.64 -1.16,0.42 -0.65,0.36 -0.44,-1.21 -0.81,0.32 -0.48,-0.06 -0.52,0.83 -2.16,-0.03 -0.78,-0.42 -0.36,0.26 -0.86,-0.82 0.15,-0.84 -0.35,-0.34 -0.6,0.28 0.11,-0.92 0.58,-0.73 -1.15,-1.19 -0.34,-0.79 -0.62,-0.62 -0.56,-0.08 -0.67,0.4 -0.91,0.38 -0.77,0.62 -1.2,-0.23 -0.78,-0.72 -0.46,-0.1 -0.73,0.38 -0.45,0.01 -0.16,-1.05 0.13,-0.89 -0.24,-1.1 -1.05,-0.81 -0.55,-1.64 z", + "MM": "m 754.61,406.2 -1.64,1.28 -1.98,0.14 -1.28,3.19 -1.18,0.53 1.36,2.57 1.78,2.13 1.14,1.92 -1.02,2.52 -0.97,0.53 0.67,1.45 1.87,2.28 0.32,1.6 -0.05,1.33 1.1,2.6 -1.54,2.65 -1.36,2.91 -0.27,-2.1 0.86,-2.18 -0.94,-1.68 0.23,-3.11 -1.14,-1.48 -0.91,-3.44 -0.51,-3.66 -1.21,-2.4 -1.85,1.46 -3.19,2.06 -1.57,-0.26 -1.74,-0.67 0.97,-3.61 -0.58,-2.74 -2.2,-3.39 0.34,-1.07 -1.64,-0.38 -1.99,-2.42 -0.18,-2.41 0.98,0.46 0.05,-2.15 1.39,-0.72 -0.3,-1.28 0.63,-1.03 0.11,-3.15 2.19,0.7 1.25,-2.52 0.15,-1.5 1.54,-2.6 -0.08,-1.78 3.63,-2.16 2,0.57 -0.23,-1.93 0.99,-0.58 -0.22,-1.2 1.64,-0.24 0.94,1.86 1.22,0.75 0.09,2.4 -0.12,2.57 -2.65,2.58 -0.34,3.63 2.96,-0.5 0.67,2.8 1.78,0.59 -0.82,2.5 2.08,1.13 1.22,0.55 2.05,-0.87 0.09,1.24 -2.39,1.94 -0.6,1.1 z", + "MN": "m 721.54,305.13 2.96,-0.74 5.35,-3.74 4.27,-2.07 2.43,1.35 2.93,0.06 1.87,2.05 2.8,0.15 4.06,1.09 2.72,-3.03 -1.14,-2.6 2.91,-4.66 3.14,1.87 2.54,0.53 3.3,1.15 0.53,3.32 3.99,1.84 2.65,-0.81 3.54,-0.57 2.81,0.58 2.75,2.09 1.7,2.2 2.6,-0.04 3.53,0.69 2.58,-1.06 3.69,-0.71 4.11,-3.06 1.68,0.47 1.47,1.46 3.34,-0.36 -1.36,3.25 -1.98,4.22 0.72,1.71 1.59,-0.53 2.76,0.65 2.16,-1.54 2.25,1.33 2.54,2.89 -0.31,1.45 -2.21,-0.46 -4.07,0.54 -1.98,1.16 -2.05,2.66 -4.28,1.55 -2.79,2.1 -2.88,-0.8 -1.58,-0.36 -1.47,2.54 0.89,1.5 0.46,1.28 -1.97,1.3 -2.01,2.05 -3.27,1.33 -4.21,0.15 -4.53,1.31 -3.26,2.01 -1.24,-1.16 -3.39,0 -4.15,-2.29 -2.77,-0.57 -3.73,0.53 -5.79,-0.85 -3.09,0.09 -1.64,-2.27 -1.28,-3.57 -1.73,-0.43 -3.39,-2.45 -3.78,-0.55 -3.33,-0.68 -1.01,-1.73 1.08,-4.73 -1.93,-3.31 -4,-1.57 -2.36,-2.23 z", + "MR": "m 441.38,422.47 -1.85,-1.98 -1.7,-2.13 -1.86,-0.77 -1.34,-0.85 -1.57,0.03 -1.36,0.63 -1.4,-0.25 -0.96,0.93 -0.24,-1.56 0.78,-1.44 0.35,-2.75 -0.31,-2.91 -0.34,-1.47 0.28,-1.47 -0.72,-1.42 -1.48,-1.28 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 10.55,7.53 -4.29,0.05 1.35,13.06 1.35,12.68 0.49,0.36 -0.62,2.03 -11.25,0.04 -0.43,0.64 -1.08,-0.19 -1.58,0.57 -1.96,-0.8 -0.89,0.07 -0.47,1.7 z", + "MW": "m 572.4,495.94 -0.78,2.16 0.78,3.72 0.98,-0.04 1.01,0.92 1.17,2.08 0.24,3.72 -1.21,0.61 -0.86,2.01 -1.83,-1.79 -0.2,-2.04 0.59,-1.35 -0.17,-1.15 -1.1,-0.73 -0.78,0.26 -1.61,-1.38 -1.47,-0.74 0.85,-2.66 0.88,-0.99 -0.54,-2.36 0.56,-2.3 0.48,-0.77 -0.71,-2.4 -1.32,-1.26 2.74,0.52 0.57,0.78 0.95,1.32 z", + "MX": "m 203.14,388.97 -1.09,2.71 -0.49,2.21 -0.21,4.08 -0.27,1.47 0.49,1.64 0.87,1.47 0.56,2.31 1.86,2.21 0.65,1.69 1.1,1.45 2.98,0.79 1.16,1.22 2.46,-0.82 2.13,-0.29 2.1,-0.53 1.77,-0.51 1.78,-1.2 0.67,-1.73 0.23,-2.49 0.49,-0.87 1.89,-0.79 2.97,-0.69 2.48,0.1 1.7,-0.25 0.67,0.63 -0.09,1.44 -1.51,1.77 -0.66,1.81 0.51,0.51 -0.42,1.28 -0.7,2.29 -0.71,-0.75 -0.59,0.05 -0.53,0.04 -1,1.77 -0.51,-0.35 -0.34,0.14 0.02,0.43 -2.59,-0.03 -2.62,0 0,1.65 -1.27,0 1.04,0.98 1.04,0.67 0.31,0.63 0.46,0.18 -0.08,0.98 -3.59,0.01 -1.35,2.36 0.39,0.54 -0.32,0.68 -0.07,0.84 -3.17,-3.11 -1.45,-0.94 -2.29,-0.76 -1.56,0.21 -2.26,1.09 -1.41,0.29 -1.98,-0.76 -2.1,-0.56 -2.62,-1.33 -2.1,-0.41 -3.18,-1.35 -2.34,-1.4 -0.71,-0.78 -1.57,-0.17 -2.87,-0.93 -1.17,-1.34 -3.01,-1.67 -1.4,-1.87 -0.67,-1.45 0.93,-0.29 -0.29,-0.85 0.65,-0.77 0.01,-1.04 -0.94,-1.34 -0.26,-1.2 -0.94,-1.52 -2.47,-3.02 -2.82,-2.39 -1.36,-1.91 -2.41,-1.26 -0.51,-0.76 0.43,-1.92 -1.43,-0.73 -1.66,-1.52 -0.7,-2.19 -1.51,-0.26 -1.62,-1.66 -1.32,-1.55 -0.12,-1 -1.51,-2.42 -0.99,-2.48 0.04,-1.25 -2.03,-1.29 -0.93,0.14 -1.6,-0.9 -0.45,1.33 0.46,1.56 0.27,2.43 0.97,1.33 2.08,2.21 0.46,0.75 0.43,0.22 0.36,1.1 0.5,-0.05 0.57,2.04 0.85,0.8 0.59,1.11 1.77,1.6 0.93,2.89 0.83,1.35 0.78,1.44 0.15,1.62 1.35,0.1 1.13,1.39 1.02,1.36 -0.07,0.54 -1.18,1.11 -0.5,-0.01 -0.74,-1.85 -1.83,-1.73 -2.02,-1.48 -1.44,-0.78 0.09,-2.25 -0.42,-1.68 -1.34,-0.96 -1.93,-1.39 -0.37,0.4 -0.7,-0.82 -1.73,-0.75 -1.65,-1.83 0.2,-0.24 1.15,0.18 1.04,-1.18 0.11,-1.43 -2.16,-2.27 -1.64,-0.89 -1.04,-2.01 -1.04,-2.12 -1.3,-2.61 -1.14,-2.96 3.19,-0.25 3.56,-0.36 -0.26,0.64 4.23,1.61 6.4,2.31 5.58,-0.03 2.22,0 0,-1.35 4.86,0 1.02,1.17 1.44,1.03 1.66,1.43 0.93,1.69 0.7,1.76 1.45,0.97 2.33,0.96 1.76,-2.53 2.3,-0.06 1.97,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.18,0.96 1.99,0.68 z", + "MY": "m 758.9,446.32 0.22,1.44 1.85,-0.33 0.92,-1.15 0.64,0.26 1.66,1.69 1.18,1.87 0.16,1.88 -0.3,1.27 0.27,0.96 0.21,1.65 0.99,0.77 1.1,2.46 -0.05,0.94 -1.99,0.19 -2.65,-2.06 -3.32,-2.21 -0.33,-1.42 -1.62,-1.87 -0.39,-2.31 -1.01,-1.52 0.31,-2.04 -0.62,-1.19 0.49,-0.5 2.28,1.22 z m 49.19,4.83 -2.06,0.95 -2.43,-0.47 -3.22,0 -0.97,3.17 -1.08,0.97 -1.44,3.88 -2.29,0.59 -2.65,-0.78 -1.34,0.24 -1.63,1.41 -1.79,-0.2 -1.81,0.57 -1.92,-1.57 -0.47,-1.86 2.05,0.96 2.17,-0.52 0.56,-2.36 1.2,-0.53 3.36,-0.6 2.01,-2.21 1.38,-1.77 1.28,1.45 0.59,-0.95 1.34,0.09 0.16,-1.78 0.13,-1.38 2.16,-1.95 1.41,-2.19 1.13,-0.01 1.44,1.42 0.13,1.22 1.85,0.78 2.34,0.84 -0.2,1.1 -1.88,0.14 0.49,1.35 z", + "MZ": "m 572.4,495.94 2.11,-0.23 3.37,0.8 0.74,-0.36 1.95,-0.07 1,-0.85 1.68,0.04 3.06,-1.1 2.23,-1.64 0.46,1.27 -0.12,2.83 0.35,2.5 0.11,4.48 0.49,1.4 -0.83,2.07 -1.09,2.01 -1.79,1.8 -2.56,1.11 -3.16,1.41 -3.17,3.15 -1.08,0.54 -1.96,2.09 -1.15,0.69 -0.24,2.12 1.33,2.25 0.55,1.76 0.04,0.9 0.49,-0.15 -0.08,2.96 -0.45,1.41 0.66,0.52 -0.42,1.27 -1.17,1.09 -2.31,1.04 -3.37,1.66 -1.23,1.15 0.24,1.3 0.71,0.21 -0.24,1.64 -2.12,-0.02 -0.24,-1.38 -0.42,-1.39 -0.24,-1.11 0.5,-3.43 -0.73,-2.17 -1.34,-4.26 2.95,-3.41 0.74,-2.15 0.43,-0.27 0.31,-1.74 -0.45,-0.88 0.12,-2.2 0.55,-2.04 -0.01,-3.69 -1.45,-0.94 -1.34,-0.21 -0.6,-0.72 -1.3,-0.61 -2.34,0.06 -0.18,-1.08 -0.27,-2.05 8.51,-2.38 1.61,1.38 0.78,-0.26 1.1,0.73 0.17,1.15 -0.59,1.35 0.2,2.04 1.83,1.79 0.86,-2.01 1.21,-0.61 -0.24,-3.72 -1.17,-2.08 -1.01,-0.92 -0.98,0.04 -0.78,-3.72 z", + "NA": "m 521.33,546.79 -2.08,-2.39 -1.1,-2.3 -0.62,-3.03 -0.69,-2.25 -0.94,-4.72 -0.06,-3.63 -0.36,-1.64 -1.09,-1.24 -1.45,-2.47 -1.47,-3.57 -0.61,-1.85 -2.29,-2.87 -0.17,-2.25 1.35,-0.55 1.68,-0.5 1.82,0.09 1.67,1.32 0.42,-0.21 11.37,-0.12 1.94,1.4 6.79,0.41 5.15,-1.19 2.3,-0.67 1.82,0.17 1.1,0.66 0.03,0.24 -1.58,0.66 -0.86,0.01 -1.78,1.15 -1.08,-1.21 -4.32,1.03 -2.09,0.09 -0.08,10.57 -2.76,0.11 0,8.86 -0.01,11.52 -2.5,1.63 -1.5,0.23 -1.77,-0.6 -1.26,-0.23 -0.47,-1.36 -1.11,-0.87 z", + "NC": "m 940.33,523.73 2.3,1.86 1.45,1.38 -1.06,0.73 -1.55,-0.82 -2,-1.35 -1.81,-1.59 -1.85,-2.1 -0.39,-1.01 1.2,0.05 1.58,1.01 1.23,1.01 z", + "NE": "m 481.54,430.13 0.07,-1.95 -3.24,-0.65 -0.08,-1.38 -1.58,-1.87 -0.38,-1.31 0.22,-1.4 1.8,-0.11 1.04,-1.03 3.82,-0.25 2.49,-0.45 0.24,-1.79 1.54,-1.94 -0.01,-6.75 3.95,-1.32 8.12,-5.85 9.61,-5.75 4.43,1.31 1.58,1.66 1.98,-1.12 0.69,4.67 1.05,0.78 0.05,0.95 1.16,1.02 -0.61,1.28 -1.08,5.98 -0.14,3.79 -3.58,2.74 -1.21,3.8 1.17,1.06 -0.01,1.85 1.8,0.07 -0.28,1.34 -0.79,0.17 -0.09,0.9 -0.53,0.07 -1.89,-3.13 -0.66,-0.12 -2.19,1.6 -2.17,-0.83 -1.51,-0.17 -0.81,0.4 -1.65,-0.08 -1.65,1.22 -1.43,0.07 -3.39,-1.48 -1.33,0.7 -1.43,-0.05 -1.05,-1.08 -2.82,-1.07 -3.01,0.34 -0.73,0.62 -0.39,1.65 -0.81,1.15 -0.19,2.54 -2.14,-1.64 -1.01,0.01 z", + "NG": "m 499.34,450.33 -2.91,1 -1.07,-0.14 -1.08,0.62 -2.24,-0.06 -1.5,-1.75 -0.92,-2.02 -1.99,-1.84 -2.11,0.03 -2.47,0 0.16,-4.53 -0.07,-1.79 0.53,-1.77 0.86,-0.87 1.36,-1.75 -0.29,-0.76 0.55,-1.14 -0.63,-1.68 0.11,-0.95 0.19,-2.54 0.81,-1.15 0.39,-1.65 0.73,-0.62 3.01,-0.34 2.82,1.07 1.05,1.08 1.43,0.05 1.33,-0.7 3.39,1.48 1.43,-0.07 1.65,-1.22 1.65,0.08 0.81,-0.4 1.51,0.17 2.17,0.83 2.19,-1.6 0.66,0.12 1.89,3.13 0.53,-0.07 1.11,1.14 -0.31,0.51 -0.15,0.95 -2.36,2.2 -0.74,1.81 -0.4,1.47 -0.59,0.63 -0.57,1.97 -1.5,1.16 -0.43,1.42 -0.63,1.14 -0.26,1.16 -1.93,0.95 -1.57,-1.15 -1.07,0.04 -1.67,1.64 -0.81,0.03 -1.33,2.7 z", + "NI": "m 235.18,432.56 -0.97,-0.9 -1.31,-1.15 -0.62,-0.96 -1.18,-0.89 -1.41,-1.29 0.31,-0.44 0.47,0.43 0.21,-0.21 0.87,-0.11 0.35,-0.66 0.41,-0.02 -0.06,-1.41 0.66,-0.07 0.59,0.02 0.6,-0.76 0.83,0.58 0.29,-0.36 0.51,-0.34 0.98,-0.79 0.05,-0.6 0.27,0.03 0.36,-0.69 0.29,-0.08 0.48,0.44 0.56,0.13 0.62,-0.37 0.71,0 0.97,-0.38 0.39,-0.39 0.96,0.06 -0.24,0.28 -0.14,0.64 0.28,1.05 -0.64,0.98 -0.3,1.15 -0.1,1.27 0.16,0.73 0.07,1.29 -0.43,0.28 -0.26,1.22 0.19,0.75 -0.58,0.73 0.14,0.76 0.42,0.47 -0.67,0.6 -0.82,-0.19 -0.47,-0.58 -0.89,-0.24 -0.64,0.37 -1.85,-0.75 z", + "NL": "m 492.53,286.23 2.33,0.13 0.53,1.58 -0.7,4.23 -0.71,1.71 -1.69,0 0.48,4.69 -1.55,-1.04 -1.77,-1.95 -2.6,0.93 -2.05,-0.35 1.44,-1.24 2.46,-6.74 z", + "NO": "m 554.48,175.86 8.77,6.24 -3.61,2.23 3.07,5.11 -4.77,3.19 -2.26,0.72 1.19,-5.59 -3.6,-3.25 -4.35,2.78 -1.38,5.85 -2.67,3.44 -3.01,-1.87 -3.66,0.38 -3.12,-4.15 -1.68,2.09 -1.74,0.32 -0.41,5.08 -5.28,-1.22 -0.74,4.22 -2.69,-0.03 -1.85,5.24 -2.8,7.87 -4.35,9.5 1.02,2.23 -0.98,2.55 -2.78,-0.11 -1.82,5.91 0.17,8.04 1.79,2.98 -0.93,6.73 -2.33,3.81 -1.24,3.15 -1.88,-3.35 -5.54,6.27 -3.74,1.24 -3.88,-2.71 -1,-5.86 -0.89,-13.26 2.58,-3.88 7.4,-5.18 5.54,-6.59 5.13,-9.3 6.74,-13.76 4.7,-5.67 7.71,-9.89 6.15,-3.59 4.61,0.44 4.27,-6.99 5.11,0.38 5.03,-1.74 z", + "NP": "m 722.58,382.7 -0.22,1.35 0.37,1.99 -0.32,1.24 -2.33,0.05 -3.38,-0.73 -2.16,-0.29 -1.62,-1.59 -3.84,-0.41 -3.66,-1.77 -2.64,-1.55 -2.72,-1.2 1.09,-2.99 1.78,-1.46 1.16,-0.78 2.25,1 2.83,2.09 1.57,0.46 0.94,1.53 2.18,0.63 2.28,1.39 3.17,0.73 z", + "NZ": "m 960.63,588.88 0.64,1.53 1.99,-1.5 0.81,1.57 0,1.57 -1.04,1.74 -1.83,2.8 -1.43,1.54 1.03,1.86 -2.16,0.05 -2.4,1.46 -0.75,2.57 -1.59,4.03 -2.2,1.8 -1.4,1.16 -2.58,-0.09 -1.82,-1.34 -3.05,-0.28 -0.47,-1.48 1.51,-2.96 3.53,-3.87 1.81,-0.73 2.01,-1.47 2.4,-2.01 1.68,-1.98 1.25,-2.81 1.06,-0.95 0.42,-2.07 1.97,-1.7 0.61,1.56 z m 4.46,-17.02 2.03,3.67 0.06,-2.38 1.27,0.95 0.42,2.65 2.26,1.15 1.89,0.28 1.6,-1.35 1.42,0.41 -0.68,3.15 -0.85,2.09 -2.14,-0.07 -0.75,1.1 0.26,1.56 -0.41,0.68 -1.06,1.97 -1.39,2.53 -2.17,1.49 -0.48,-0.98 -1.17,-0.54 1.62,-3.04 -0.92,-2.01 -3.02,-1.45 0.08,-1.31 2.03,-1.25 0.47,-2.74 -0.13,-2.28 -1.14,-2.34 0.08,-0.61 -1.34,-1.43 -2.21,-3.04 -1.17,-2.41 1.04,-0.27 1.53,1.89 2.18,0.89 0.79,3.04 z", + "OM": "m 640.54,403.43 -1.05,2.04 -1.27,-0.16 -0.58,0.71 -0.45,1.5 0.34,1.98 -0.26,0.36 -1.29,-0.01 -1.75,1.1 -0.27,1.43 -0.64,0.62 -1.74,-0.02 -1.1,0.74 0.01,1.18 -1.36,0.81 -1.55,-0.27 -1.88,0.98 -1.3,0.16 -0.92,-2.04 -2.19,-4.84 8.41,-2.96 1.87,-5.97 -1.29,-2.14 0.07,-1.22 0.82,-1.26 0.01,-1.25 1.27,-0.6 -0.5,-0.42 0.23,-2 1.43,-0.01 1.26,2.09 1.57,1.11 2.06,0.4 1.66,0.55 1.27,1.74 0.76,1 1,0.38 -0.01,0.67 -1.02,1.79 -0.45,0.84 -1.17,0.99 z m -6.92,-14.54 -0.37,0.56 -0.53,-1.06 0.82,-1.06 0.35,0.27 -0.27,1.29 z", + "PA": "m 257.13,443.46 -0.93,-0.81 -0.6,-1.52 0.69,-0.75 -0.71,-0.19 -0.52,-0.93 -1.4,-0.78 -1.23,0.18 -0.56,0.98 -1.14,0.7 -0.61,0.1 -0.27,0.59 1.33,1.52 -0.76,0.36 -0.41,0.42 -1.3,0.14 -0.49,-1.68 -0.36,0.48 -0.93,-0.16 -0.56,-1.14 -1.15,-0.18 -0.73,-0.33 -1.2,0 -0.09,0.61 -0.32,-0.42 0.15,-0.56 0.23,-0.57 -0.11,-0.51 0.42,-0.34 -0.58,-0.42 -0.02,-1.13 1.09,-0.25 1,1.01 -0.06,0.6 1.12,0.12 0.27,-0.23 0.77,0.7 1.38,-0.21 1.19,-0.71 1.7,-0.57 0.96,-0.84 1.55,0.16 -0.11,0.28 1.57,0.1 1.25,0.49 0.91,0.84 1.06,0.78 -0.34,0.42 0.65,1.65 -0.53,0.84 -0.91,-0.2 z", + "PE": "m 280.38,513.39 -0.75,1.51 -1.44,0.74 -2.81,-1.68 -0.25,-1.2 -5.55,-2.92 -5.03,-3.17 -2.17,-1.78 -1.16,-2.37 0.46,-0.83 -2.37,-3.75 -2.77,-5.24 -2.64,-5.62 -1.15,-1.29 -0.88,-2.06 -2.18,-1.84 -2,-1.13 0.91,-1.25 -1.36,-2.67 0.87,-1.95 2.24,-1.77 0.33,1.17 -0.8,0.66 0.07,1.02 1.16,-0.22 1.14,0.3 1.17,1.41 1.59,-1.15 0.53,-1.88 1.72,-2.43 3.37,-1.1 3.06,-2.92 0.87,-1.81 -0.39,-2.11 0.75,-0.27 1.86,1.32 0.89,1.32 1.3,0.72 1.65,2.92 2.09,0.35 1.55,-0.74 1.01,0.48 1.68,-0.24 2.15,1.31 -1.81,2.84 0.84,0.06 1.4,1.49 -2.53,-0.13 -0.37,0.42 -2.3,0.53 -3.2,1.91 -0.21,1.3 -0.71,0.98 0.28,1.51 -1.7,0.81 0,1.19 -0.74,0.51 1.17,2.53 1.56,1.72 -0.59,1.21 1.86,0.16 1.06,1.51 2.47,0.07 2.3,-1.66 -0.19,4.3 1.28,0.33 1.58,-0.49 2.43,4.58 -0.61,0.96 -0.13,2.02 -0.06,2.44 -1.1,1.44 0.51,1.07 -0.65,0.97 1.21,2.44 z", + "PG": "m 912.57,482.67 -0.79,0.28 -1.21,-1.08 -1.23,-1.78 -0.6,-2.13 0.39,-0.27 0.3,0.83 0.85,0.63 1.36,1.77 1.32,0.95 -0.39,0.8 z m -10.93,-3.75 -1.47,0.23 -0.44,0.79 -1.53,0.68 -1.44,0.66 -1.49,0 -2.3,-0.81 -1.6,-0.78 0.23,-0.87 2.51,0.41 1.53,-0.22 0.42,-1.34 0.4,-0.07 0.27,1.49 1.6,-0.21 0.79,-0.96 1.57,-1 -0.31,-1.65 1.68,-0.05 0.57,0.46 -0.06,1.55 -0.93,1.69 z m -13.43,5.35 2.5,1.84 1.82,2.99 1.61,-0.09 -0.11,1.25 2.17,0.48 -0.84,0.53 2.98,1.19 -0.31,0.82 -1.86,0.2 -0.69,-0.73 -2.41,-0.32 -2.83,-0.43 -2.18,-1.8 -1.59,-1.55 -1.46,-2.46 -3.66,-1.23 -2.38,0.8 -1.71,0.93 0.36,2.08 -2.2,0.97 -1.57,-0.47 -2.9,-0.12 -0.05,-9.16 -0.05,-9.1 4.87,1.92 5.18,1.6 1.93,1.43 1.56,1.41 0.43,1.65 4.67,1.73 0.68,1.49 -2.58,0.3 0.62,1.85 z m 16.67,-8.09 -0.88,0.74 -0.53,-1.65 -0.65,-1.08 -1.27,-0.91 -1.6,-1.19 -2.02,-0.82 0.78,-0.67 1.51,0.78 0.95,0.61 1.18,0.67 1.12,1.17 1.07,0.89 0.34,1.46 z", + "PH": "m 829.84,440.11 0.29,1.87 0.17,1.58 -0.96,2.57 -1.02,-2.86 -1.31,1.42 0.9,2.06 -0.8,1.31 -3.3,-1.63 -0.79,-2.03 0.86,-1.33 -1.78,-1.33 -0.88,1.17 -1.32,-0.11 -2.08,1.57 -0.46,-0.82 1.1,-2.37 1.77,-0.79 1.53,-1.06 0.99,1.27 2.13,-0.77 0.46,-1.26 1.98,-0.08 -0.17,-2.18 2.27,1.34 0.24,1.42 0.18,1.04 z m -6.71,-5.26 -1.01,0.93 -0.88,1.79 -0.88,0.84 -1.73,-1.95 0.58,-0.76 0.7,-0.79 0.31,-1.76 1.55,-0.17 -0.45,1.91 2.08,-2.74 -0.27,2.7 z m -15.36,2.72 -3.73,2.67 1.38,-1.97 2.03,-1.74 1.68,-1.96 1.47,-2.82 0.5,2.31 -1.85,1.56 -1.48,1.95 z m 9.48,-7.3 1.68,0.88 1.78,0 -0.05,1.19 -1.3,1.2 -1.78,0.85 -0.1,-1.32 0.2,-1.45 -0.43,-1.35 z m 10.14,-0.77 0.79,3.18 -2.16,-0.75 0.06,0.95 0.69,1.75 -1.33,0.63 -0.12,-1.99 -0.84,-0.15 -0.44,-1.72 1.65,0.23 -0.04,-1.08 -1.71,-2.18 2.69,0.06 0.76,1.07 z m -11.14,-2.59 -0.74,2.47 -1.2,-1.42 -1.43,-2.18 2.4,0.1 0.97,1.03 z m -0.58,-15.74 1.73,0.84 0.86,-0.76 0.25,0.75 -0.46,1.22 0.96,2.09 -0.74,2.42 -1.65,0.96 -0.44,2.33 0.63,2.29 1.49,0.32 1.24,-0.34 3.5,1.59 -0.27,1.56 0.92,0.69 -0.29,1.32 -2.18,-1.4 -1.04,-1.5 -0.72,1.05 -1.79,-1.72 -2.55,0.42 -1.4,-0.63 0.14,-1.19 0.88,-0.73 -0.84,-0.67 -0.36,1.04 -1.38,-1.65 -0.42,-1.26 -0.1,-2.77 1.13,0.96 0.29,-4.55 0.91,-2.66 1.7,-0.02 z", + "PL": "m 517.61,297.22 -1.15,-2.86 0.22,-1.56 -0.7,-2.45 -1.01,-1.65 0.78,-1.25 -0.66,-2.39 1.92,-1.39 4.37,-2.22 3.54,-1.64 2.79,0.82 0.21,1.18 2.71,0.06 3.45,0.55 5.16,-0.08 1.44,0.52 0.67,1.46 0.12,2.09 0.78,1.78 -0.02,1.85 -1.68,0.94 0.87,2.12 0.05,2.01 1.41,3.89 -0.3,1.24 -1.39,0.51 -2.55,3.61 0.72,1.92 -0.61,-0.25 -2.66,-1.64 -2.02,0.6 -1.32,-0.44 -1.66,0.92 -1.41,-1.52 -1.16,0.58 -0.16,-0.26 -1.29,-2.13 -2.08,-0.26 -0.27,-1.37 -1.92,-0.49 -0.42,1.13 -1.52,-0.9 0.17,-1.21 -2.09,-0.39 z", + "PK": "m 686.24,352.01 2.07,1.63 0.83,2.66 4.61,1.39 -2.71,2.86 -3.12,0.51 -4.26,-0.83 -1.37,1.46 0.99,2.95 0.97,2.25 2.27,1.63 -2.39,1.91 0.04,2.33 -2.72,3.24 -1.76,3.26 -2.93,3.32 -3.26,-0.24 -3.09,3.3 1.84,1.4 0.32,2.39 1.57,1.56 0.56,2.64 -6.17,-0.01 -1.87,2.04 -2.05,-0.77 -0.84,-2.2 -2.17,-2.34 -5.16,0.58 -4.56,0.05 -3.95,0.44 1.06,-3.6 4.04,-1.61 -0.23,-1.44 -1.34,-0.51 -0.08,-2.77 -2.68,-1.4 -1.13,-1.93 -1.38,-1.68 4.69,1.64 2.81,-0.48 1.67,0.4 0.57,-0.7 1.95,0.28 3.65,-1.33 0.1,-2.75 1.56,-1.84 2.09,0 0.3,-0.91 2.15,-0.43 1.03,0.3 1.1,-0.92 -0.15,-1.98 1.19,-2 1.78,-0.85 -1.1,-2.22 2.67,0.11 0.77,-1.22 -0.12,-1.3 1.4,-1.43 -0.33,-1.7 -0.66,-1.46 1.64,-1.51 3.01,-0.73 3.22,-0.4 1.42,-0.65 z", + "PR": "m 289.66,411.14 1.43,0.26 0.51,0.58 -0.72,0.74 -2.11,-0.02 -1.64,0.1 -0.16,-1.25 0.39,-0.43 z", + "PS": "m 575.17,368.12 0,2.01 -0.42,0.96 -1.32,0.45 0.13,-0.86 0.71,-0.46 -0.7,-0.36 0.58,-2.2 z", + "PT": "m 450.17,334.81 1.02,-0.95 1.14,-0.55 0.71,1.84 1.65,-0.01 0.48,-0.47 1.64,0.13 0.78,1.88 -1.3,1 -0.03,2.88 -0.46,0.53 -0.11,1.72 -1.21,0.3 1.12,2.17 -0.77,2.35 0.96,1.06 -0.38,0.96 -1.04,1.32 0.23,1.16 -1.12,0.91 -1.48,-0.49 -1.45,0.38 0.43,-2.74 -0.26,-2.18 -1.26,-0.33 -0.67,-1.35 0.23,-2.36 1.11,-1.31 0.2,-1.47 0.59,-2.21 -0.07,-1.57 -0.56,-1.34 z", + "PY": "m 299.74,527.24 1.11,-3.59 0.07,-1.6 1.34,-2.62 4.89,-0.86 2.6,0.05 2.62,1.51 0.04,0.91 0.83,1.66 -0.18,4.06 2.96,0.58 1.14,-0.59 1.89,0.82 0.53,0.9 0.26,2.77 0.33,1.18 1.04,0.13 1.05,-0.49 1.01,0.55 0,1.68 -0.38,1.82 -0.55,1.78 -0.46,2.75 -2.54,2.4 -2.22,0.5 -3.15,-0.48 -2.82,-0.85 2.76,-4.73 -0.41,-1.37 -2.88,-1.2 -3.43,-2.26 -2.29,-0.46 z", + "QA": "m 617.97,392.41 -0.19,-2.24 0.76,-1.62 0.76,-0.34 0.85,0.97 0.05,1.81 -0.61,1.81 -0.78,0.22 z", + "RO": "m 539.18,311.11 1.21,-0.89 1.74,0.46 1.79,0.02 1.3,1.01 0.96,-0.64 2.07,-0.4 0.71,-0.98 1.18,0.01 0.85,0.4 0.87,1.24 0.89,1.75 1.62,2.44 0.09,1.79 -0.3,1.72 0.51,1.83 1.25,0.73 1.31,-0.64 1.28,0.68 0.06,1.03 -1.36,0.84 -0.85,-0.36 -0.78,4.71 -1.65,-0.41 -2.04,-1.41 -3.3,0.9 -1.39,0.99 -4.12,-0.2 -2.16,-0.61 -1.08,0.29 -0.81,-1.6 -0.51,-0.68 0.65,-0.66 -0.7,-0.49 -0.88,0.88 -1.63,-1.14 -0.22,-1.63 -1.71,-0.94 -0.31,-1.27 -1.52,-1.58 2.25,-0.76 1.69,-2.76 1.33,-2.8 z", + "RS": "m 534.03,321.15 1.71,0.94 0.22,1.63 1.63,1.14 0.88,-0.88 0.7,0.49 -0.65,0.66 0.51,0.68 -0.69,0.88 0.25,1.42 1.36,1.66 -1.07,1.19 -0.47,1.21 0.31,0.45 -0.47,0.54 -1.29,0.06 -0.96,0.22 -0.09,-0.28 0.33,-0.45 0.32,-0.93 -0.4,0.02 -0.55,-0.7 -0.46,-0.18 -0.36,-0.61 -0.53,-0.24 -0.4,-0.54 -0.5,0.22 -0.39,1.26 -0.67,0.28 0.23,-0.33 -1.07,-0.79 -0.92,-0.41 -0.41,-0.54 -0.74,-0.66 0.66,-0.17 0.41,-1.82 -1.35,-1.5 0.7,-1.72 -1.02,0.01 1.08,-1.49 -0.89,-1.14 -0.68,-1.55 2.15,-1.05 1.75,0.17 1.52,1.58 z", + "RU": "m 1008.52,216 -2.78,2.97 -4.6,0.7 -0.07,6.46 -1.12,1.35 -2.63,-0.19 -2.14,-2.26 -3.73,-1.92 -0.63,-2.89 -2.85,-1.1 -3.19,0.87 -1.52,-2.37 0.61,-2.55 -3.36,1.64 1.26,3.19 -1.59,2.83 -0.02,0.04 -3.6,2.89 -3.63,-0.48 2.53,3.44 1.67,5.2 1.29,1.67 0.33,2.53 -0.72,1.6 -5.23,-1.32 -7.84,4.51 -2.49,0.69 -4.29,4.1 -4.07,3.5 -1.03,2.55 -4.01,-3.9 -7.31,4.42 -1.28,-2.08 -2.7,2.39 -3.75,-0.76 -0.9,3.63 -3.36,5.22 0.1,2.14 3.19,1.17 -0.38,7.46 -2.6,0.19 -1.2,4.15 1.17,2.1 -4.9,2.47 -0.97,5.4 -4.18,1.14 -0.84,4.66 -4.04,4.18 -1.04,-3.08 -1.2,-6.69 -1.56,-10.65 1.35,-6.95 2.37,-3.07 0.15,-2.44 4.36,-1.18 5.01,-6.78 4.83,-5.73 5.04,-4.57 2.25,-8.37 -3.41,0.51 -1.68,4.92 -7.11,6.36 -2.3,-7.14 -7.24,2 -7.02,9.56 2.32,3.38 -6.26,1.42 -4.33,0.56 0.2,-3.95 -4.36,-0.84 -3.47,2.7 -8.57,-0.94 -9.22,1.62 -9.08,10.33 -10.75,11.78 4.42,0.61 1.38,3 2.72,1.05 1.79,-2.38 3.08,0.31 4.05,5.19 0.09,3.92 -2.19,4.51 -0.24,5.27 -1.26,6.85 -4.23,6.01 -0.94,2.82 -3.81,4.66 -3.78,4.53 -1.81,2.28 -3.74,2.25 -1.77,0.05 -1.76,-1.86 -3.76,2.79 -0.44,1.26 -0.39,-0.66 -0.02,-1.93 1.43,-0.1 0.4,-4.55 -0.74,-3.36 2.41,-1.4 3.4,0.7 1.89,-3.89 0.96,-4.46 1.09,-1.51 1.47,-3.76 -4.63,1.24 -2.43,1.65 -4.26,0 -1.13,-3.95 -3.32,-3.03 -4.88,-1.38 -1.04,-4.28 -0.98,-2.73 -1.05,-1.94 -1.73,-4.61 -2.46,-1.71 -4.2,-1.39 -3.72,0.13 -3.48,0.84 -2.32,2.31 1.54,1.1 0.04,2.52 -1.56,1.45 -2.53,4.72 0.03,1.93 -3.95,2.74 -3.37,-1.63 -3.35,0.36 -1.47,-1.46 -1.68,-0.47 -4.11,3.06 -3.69,0.71 -2.58,1.06 -3.53,-0.7 -2.6,0.04 -1.7,-2.2 -2.75,-2.09 -2.81,-0.58 -3.55,0.57 -2.65,0.81 -3.98,-1.84 -0.53,-3.32 -3.3,-1.15 -2.54,-0.53 -3.14,-1.87 -2.9,4.66 1.14,2.6 -2.73,3.03 -4.05,-1.09 -2.8,-0.16 -1.87,-2.04 -2.92,-0.06 -2.44,-1.35 -4.26,2.07 -5.35,3.74 -2.96,0.74 -1.1,0.35 -1.49,-2.63 -3.61,0.58 -1.19,-1.84 -1.96,-0.85 -1.35,-2.55 -1.55,-0.8 -4.03,1.14 -3.86,-2.57 -1.49,2.33 -6.27,-11.58 -3.58,-3.66 1.03,-1.5 -7.03,4.49 -2.69,0.27 0.23,-2.58 -3.6,-1.63 -2.93,1.17 -0.88,-5.01 -5.04,-1.06 -2.52,2.03 -7.02,1.79 -1.37,1.19 -10.49,1.66 -1.29,1.62 2.02,3.21 -2.69,1.2 0.53,1.25 -2.69,2.22 4.54,3.1 -0.7,2.11 -3.94,-0.19 -0.81,1.31 -3.59,-2.29 -4.45,0.09 -2.98,1.87 -3.32,-1.79 -6.18,-3.1 -4.38,0.12 -5.79,4.85 -0.35,3.19 -2.88,-2.53 -2.24,4.77 0.82,0.87 -1.62,3.21 2.38,2.84 2.08,-0.12 1.79,2.76 -0.28,2.1 1.42,0.66 -1.28,2.39 -2.72,0.66 -2.79,4.09 2.55,3.7 -0.28,2.59 3.06,4.46 -1.67,1.51 -0.48,0.95 -1.24,-0.25 -1.93,-2.27 -0.79,-0.13 -1.76,-0.87 -0.86,-1.55 -2.62,-0.79 -1.7,0.6 -0.49,-0.71 -3.82,-1.83 -4.13,-0.62 -2.37,-0.66 -0.34,0.45 -3.57,-3.27 -3.2,-1.48 -2.42,-2.32 2.04,-0.64 2.33,-3.35 -1.57,-1.6 4.13,-1.67 -0.07,-0.9 -2.52,0.66 0.09,-1.83 1.45,-1.16 2.71,-0.31 0.44,-1.4 -0.62,-2.33 1.14,-2.23 -0.03,-1.26 -4.13,-1.41 -1.64,0.05 -1.73,-2.04 -2.15,0.69 -3.56,-1.54 0.06,-0.87 -1,-1.93 -2.24,-0.22 -0.23,-1.39 0.7,-0.91 -1.79,-2.58 -2.91,0.44 -0.85,-0.23 -0.71,1.04 -1.05,-0.18 -0.69,-2.94 -0.66,-1.54 0.54,-0.44 2.26,0.16 1.09,-1.02 -0.81,-1.25 -1.89,-0.83 0.17,-0.86 -1.14,-0.87 -1.76,-3.15 0.6,-1.31 -0.27,-2.31 -2.74,-1.18 -1.47,0.59 -0.4,-1.24 -2.95,-1.26 -0.9,-2.99 -0.24,-2.49 -1.35,-1.19 1.2,-1.66 -0.83,-4.96 2,-3.13 -0.42,-0.96 3.19,-3.07 -2.94,-2.68 6,-7.41 2.6,-3.45 1.05,-3.1 -4.15,-4.26 1.15,-4.15 -2.52,-4.85 1.89,-5.76 -3.26,-7.96 2.59,-5.48 -4.29,-4.99 0.41,-5.4 2.26,-0.72 4.77,-3.19 2.89,-2.81 4.61,4.86 7.68,1.88 10.59,8.65 2.15,3.51 0.19,4.8 -3.11,3.69 -4.58,1.85 -12.52,-5.31 -2.06,0.9 4.57,5.1 0.18,3.15 0.18,6.75 3.61,1.97 2.19,1.66 0.36,-3.11 -1.69,-2.8 1.78,-2.51 6.78,4.1 2.36,-1.59 -1.89,-4.88 6.53,-6.74 2.59,0.4 2.62,2.43 1.63,-4.81 -2.34,-4.28 1.37,-4.41 -2.06,-4.69 7.84,2.44 1.6,4.18 -3.55,0.91 0.02,4.04 2.21,2.44 4.33,-1.54 0.69,-4.61 5.86,-3.52 9.79,-6.54 2.11,0.38 -2.76,4.64 3.48,0.78 2.01,-2.58 5.25,-0.21 4.16,-3.19 3.2,4.62 3.19,-5.09 -2.94,-4.58 1.46,-2.66 8.28,2.44 3.88,2.49 10.16,8.8 1.88,-3.97 -2.85,-4.11 -0.08,-1.68 -3.38,-0.78 0.92,-3.83 -1.5,-6.49 -0.08,-2.74 5.17,-7.99 1.84,-8.42 2.08,-1.88 7.42,2.51 0.58,5.18 -2.66,7.28 1.74,2.78 0.9,5.94 -0.64,11.07 3.09,4.73 -1.2,5.01 -5.49,10.2 3.21,1.02 1.12,-2.51 3.08,-1.82 0.74,-3.55 2.43,-3.49 -1.63,-4.26 1.31,-5.08 -3.07,-0.64 -0.67,-4.42 2.24,-8.28 -3.64,-7.03 5.02,-6.04 -0.65,-6.62 1.4,-0.22 1.47,5.19 -1.11,8.67 3,1.59 -1.28,-6.37 4.69,-3.58 5.82,-0.49 5.18,5.18 -2.49,-7.62 -0.28,-10.28 4.88,-2.02 6.74,0.44 6.08,-1.32 -2.28,-5.38 3.25,-7.02 3.22,-0.3 5.45,-5.51 7.4,-1.51 0.94,-3.15 7.36,-1.08 2.29,2.61 6.29,-6.24 5.15,0.2 0.77,-5.24 2.68,-5.33 6.62,-5.31 4.81,4.21 -3.82,3.13 6.35,1.92 0.76,6.03 2.56,-2.94 8.2,0.16 6.32,5.84 2.25,4.35 -0.7,5.85 -3.1,3.24 -7.37,5.92 -2.11,3.08 3.48,1.43 4.15,2.55 2.52,-1.91 1.43,6.39 1.23,-2.56 4.48,-1.57 9,1.65 0.68,4.58 11.72,1.43 0.16,-7.47 5.95,1.74 4.48,-0.05 4.53,5.14 1.29,6.04 -1.66,3.84 3.52,6.98 4.41,3.49 2.71,-9.18 4.5,4 4.78,-2.38 5.43,2.72 2.07,-2.47 4.59,1.24 -2.02,-8.4 3.7,-4.07 25.32,6.06 2.39,5.35 7.34,6.65 11.32,-1.62 5.58,1.41 2.33,3.5 -0.34,6.02 3.45,2.29 3.75,-1.64 4.97,-0.21 5.29,1.57 5.31,-0.89 4.88,6.99 3.47,-2.48 -2.27,-5.07 1.25,-3.62 8.95,2.29 5.83,-0.49 8.06,3.84 3.92,3.44 6.87,5.86 7.35,7.34 -0.24,4.44 1.89,1.74 -0.65,-5.15 7.61,1.07 5.55,6.53 z m -127.43,90.5 -2.82,-7.68 -1.16,-4.51 0.07,-4.5 -0.97,-4.5 -0.73,-3.15 -1.25,0.67 1.11,2.21 -2.59,2.17 -0.25,6.3 1.64,4.41 -0.12,5.85 -0.65,3.24 0.32,4.54 -0.31,4.01 0.52,3.4 1.84,-3.13 2.13,2.44 0.08,-2.84 -2.73,-4.23 1.72,-6.11 4.15,1.41 z m -343.02,-27.48 -2.94,-0.86 -3.87,1.58 -0.64,2.13 3.45,0.55 5.16,-0.07 -0.22,-1.23 0.3,-1.33 -1.24,-0.77 z M 980.2,178.9 l 3.66,-0.52 2.89,-2.06 0.24,-1.19 -4.06,-2.51 -2.38,-0.02 -0.36,0.37 -3.57,3.64 0.5,2.73 3.08,-0.44 z m -109.88,-27.09 -2.66,3.92 0.49,0.52 5.75,1.08 4.25,-0.07 -0.34,-2.57 -3.98,-3.81 -3.51,0.93 z m 24.57,-9.53 3.24,-4.25 -7.04,-2.88 -5.23,-1.68 -0.67,3.59 5.21,4.27 4.49,0.95 z m -25.13,-1.69 10.33,0.3 2.21,-8.14 -10.13,-6.07 -7.4,-0.51 -3.7,2.18 -1.51,7.75 5.55,7.01 4.65,-2.52 z m -247.12,25.94 -2.87,1.96 0.41,4.83 5.08,2.35 0.74,3.82 9.16,1.1 1.66,-0.74 -5.36,-7.11 -0.57,-7.52 4.39,-9.14 4.18,-9.82 8.71,-10.17 8.56,-5.34 9.93,-5.74 1.88,-3.71 -1.95,-4.83 -5.46,1.6 -4.8,4.49 -9.33,2.22 -9.26,7.41 -6.27,5.85 0.76,4.87 -6.71,9.03 2.58,1.22 -5.56,8.27 0.1,5.1 z m 147.48,-67.94 0.83,-5.72 -7.11,-8.34 -2.11,-0.98 -2.3,1.7 -5.12,18.6 15.81,-5.26 z m -164.23,-29.31 3.04,3.88 3.28,-2.69 0.39,-2.72 2.52,-1.27 3.76,-2.23 1.08,-2.62 -4.16,-3.85 -2.64,2.9 -1.61,4.12 -0.57,-4.65 -4.26,0.21 -5.47,3.14 6.24,0.52 -1.6,5.26 z m 131.25,13.04 4.65,5.73 7.81,4.2 6.12,-1.8 0.69,-13.62 -6.46,-16.04 -5.45,-9.02 -6.07,4.11 -7.28,11.83 3.83,3.27 2.16,11.34 z", + "RW": "m 560.79,466.8 1.12,1.57 -0.17,1.64 -0.8,0.35 -1.49,-0.18 -0.86,1.59 -1.71,-0.22 0.26,-1.53 0.39,-0.21 0.1,-1.66 0.81,-0.78 0.68,0.29 z", + "SA": "m 595.45,417.47 -0.36,-1.24 -0.85,-0.88 -0.22,-1.17 -1.44,-1.04 -1.5,-2.46 -0.79,-2.41 -1.94,-2.04 -1.25,-0.48 -1.86,-2.85 -0.32,-2.08 0.12,-1.79 -1.61,-3.36 -1.31,-1.19 -1.52,-0.63 -0.92,-1.76 0.15,-0.69 -0.78,-1.6 -0.82,-0.69 -1.09,-2.32 -1.71,-2.52 -1.43,-2.16 -1.39,0.01 0.43,-1.74 0.13,-1.11 0.34,-1.28 3.12,0.51 1.22,-0.98 0.67,-1.16 2.14,-0.44 0.46,-1.09 0.93,-0.54 -2.8,-3.26 5.62,-1.65 0.53,-0.49 3.38,0.89 4.18,2.29 7.9,6.49 5.21,0.26 2.5,0.31 0.7,1.51 1.98,-0.08 1.1,2.73 1.38,0.71 0.48,1.11 1.91,1.31 0.17,1.29 -0.28,1.03 0.36,1.04 0.8,0.87 0.38,1.01 0.42,0.75 0.84,0.61 0.78,-0.22 0.53,1.17 0.11,0.71 1.08,3.08 8.42,1.52 0.57,-0.64 1.28,2.14 -1.87,5.97 -8.41,2.96 -8.08,1.13 -2.62,1.32 -2.01,3.07 -1.31,0.48 -0.7,-0.97 -1.07,0.15 -2.71,-0.29 -0.52,-0.3 -3.23,0.07 -0.76,0.27 -1.15,-0.76 -0.75,1.43 0.29,1.23 z", + "SB": "m 930.06,493 0.78,0.97 -1.96,-0.02 -1.07,-1.74 1.67,0.69 0.58,0.1 z m -3.55,-1.73 -1.09,0.06 -1.72,-0.29 -0.59,-0.44 0.18,-1.12 1.85,0.44 0.91,0.59 0.46,0.76 z m 2.32,-0.77 -0.42,0.52 -2.08,-2.45 -0.58,-1.68 h 0.95 l 1.01,2.25 1.12,1.36 z m -5.06,-3.56 0.12,0.57 -2.2,-1.19 -1.54,-1.01 -1.05,-0.94 0.42,-0.29 1.29,0.67 2.3,1.29 0.66,0.9 z m -6.55,-2.78 -0.56,0.16 -1.23,-0.64 -1.15,-1.15 0.14,-0.47 1.67,1.18 1.13,0.92 z", + "SD": "m 570.73,437.15 -0.39,-0.05 0.05,-1.41 -0.34,-0.97 -1.44,-1.12 -0.34,-2.05 0.34,-2.1 -1.3,-0.19 -0.19,0.63 -1.69,0.15 0.68,0.83 0.24,1.71 -1.54,1.56 -1.4,2.04 -1.44,0.29 -2.36,-1.65 -1.06,0.58 -0.29,0.83 -1.44,0.53 -0.1,0.58 -2.79,0 -0.39,-0.58 -2.02,-0.1 -1.01,0.49 -0.77,-0.25 -1.44,-1.65 -0.48,-0.77 -2.03,0.39 -0.77,1.31 -0.72,2.52 -0.96,0.53 -0.86,0.31 -0.23,-0.14 -0.97,-0.81 -0.18,-0.87 0.45,-1.18 0,-1.15 -1.62,-1.77 -0.32,-1.22 0.03,-0.69 -1.03,-0.83 -0.03,-1.66 -0.58,-1.1 -0.99,0.17 0.28,-1.05 0.73,-1.2 -0.32,-1.18 0.92,-0.88 -0.58,-0.67 0.74,-1.78 1.28,-2.13 2.42,0.2 -0.14,-11.61 0.04,-1.24 3.22,-0.01 0,-5.96 11.27,0 10.88,0 11.12,0 0.9,2.94 -0.61,0.54 0.41,3.06 1.03,3.52 1.06,0.73 1.54,1.08 -1.42,1.67 -2.07,0.48 -0.88,0.9 -0.27,1.93 -1.21,4.25 0.3,1.15 -0.45,2.47 -1.14,2.81 -1.69,1.42 -1.2,2.17 -0.29,1.16 -1.32,0.8 -0.83,2.96 z", + "SE": "m 537.7,217.74 -2.72,4.69 0.44,4.02 -4.46,5.13 -5.41,5.34 -2.05,8.41 2,4.07 2.68,3.14 -2.57,6.23 -2.92,1.26 -1.07,8.84 -1.59,4.76 -3.4,-0.49 -1.59,3.95 -3.25,0.23 -0.89,-4.71 -2.35,-5.81 -2.13,-7.5 1.24,-3.15 2.33,-3.81 0.93,-6.73 -1.79,-2.98 -0.18,-8.04 1.83,-5.91 2.78,0.11 0.97,-2.55 -1.02,-2.23 4.35,-9.5 2.81,-7.87 1.85,-5.24 2.69,0.02 0.75,-4.21 5.28,1.22 0.41,-5.08 1.74,-0.33 3.74,3.81 4.37,5.15 0.08,11.12 0.94,2.7 z", + "SI": "m 514.21,316.76 2.32,0.31 1.42,-0.92 2.45,-0.1 0.53,-0.69 0.47,0.05 0.55,1.37 -2.23,1.08 -0.28,1.62 -0.97,0.41 0.01,1.12 -1.1,-0.08 -0.95,-0.65 -0.52,0.68 -1.95,-0.14 0.62,-0.36 -0.67,-1.71 z", + "SJ": "m 544.83,104.74 -6.26,5.36 -4.95,-3.02 1.94,-3.42 -1.69,-4.34 5.81,-2.78 1.11,5.18 4.04,3.02 z m -18.15,-26.68 9.23,11.29 -7.06,5.66 -1.56,10.09 -2.46,2.49 -1.33,10.51 -3.38,0.48 -6.03,-7.64 2.54,-4.62 -4.2,-3.86 -5.46,-11.82 -2.18,-11.79 7.64,-5.69 1.54,5.56 3.99,-0.22 1.06,-5.43 4.12,-0.56 3.54,5.55 z m 20.17,-11.46 5.5,5.8 -4.16,8.52 -8.13,1.81 -8.27,-2.56 -0.5,-4.32 -4.02,-0.28 -3.07,-7.48 8.66,-4.72 4.07,4.08 2.84,-5.09 7.08,4.24 z", + "SK": "m 528.36,304.27 0.16,0.26 1.16,-0.58 1.41,1.52 1.66,-0.92 1.32,0.44 2.02,-0.6 2.66,1.64 -0.77,1.11 -0.55,1.71 -0.6,0.43 -3,-1.28 -0.92,0.25 -0.66,1 -1.32,0.52 -0.3,-0.27 -1.36,0.65 -1.12,0.13 -0.22,0.84 -2.36,0.51 -1.03,-0.46 -1.43,-1.07 -0.28,-1.45 0.23,-0.54 0.39,-0.93 1.25,0.07 0.95,-0.44 0.08,-0.39 0.54,-0.21 0.18,-0.97 0.64,-0.19 0.44,-0.77 z", + "SL": "m 443.43,444.69 -0.76,-0.21 -2.01,-1.13 -1.46,-1.5 -0.49,-1.03 -0.35,-2.08 1.5,-1.24 0.32,-0.79 0.48,-0.61 0.78,-0.06 0.65,-0.53 2.24,0 0.78,1.01 0.61,1.19 -0.09,0.82 0.45,0.74 -0.03,1.03 0.77,-0.16 -1.31,1.31 -1.26,1.53 -0.15,0.81 z", + "SN": "m 428.64,425.41 -1.16,-2.24 -1.4,-1.02 1.24,-0.55 1.36,-2.03 0.66,-1.49 0.96,-0.93 1.4,0.25 1.36,-0.63 1.57,-0.03 1.34,0.85 1.86,0.77 1.7,2.13 1.85,1.98 0.13,1.79 0.55,1.64 1.05,0.81 0.24,1.1 -0.13,0.89 -0.41,0.16 -1.52,-0.22 -0.21,0.31 -0.62,0.07 -2.02,-0.7 -1.35,-0.03 -5.18,-0.12 -0.75,0.32 -0.93,-0.09 -1.49,0.47 -0.46,-2.19 2.55,0.06 0.68,-0.4 0.5,-0.03 1.04,-0.66 1.2,0.61 1.22,0.05 1.21,-0.65 -0.56,-0.82 -0.93,0.48 -0.87,-0.01 -1.1,-0.71 -0.89,0.05 -0.64,0.67 z", + "SO": "m 618.88,430.68 -0.07,-0.79 -1.06,0.01 -1.33,0.98 -1.49,0.28 -1.29,0.42 -0.89,0.06 -1.6,0.1 -1,0.52 -1.39,0.19 -2.47,0.88 -3.05,0.33 -2.65,0.73 -1.39,-0.01 -1.26,-1.19 -0.55,-1.17 -0.91,-0.53 -1.04,1.52 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -2.45,3.17 0.03,10.15 1.66,2.29 0.63,-0.66 0.65,-1.46 3.07,-3.38 2.61,-2.12 4.2,-2.76 2.8,-2.26 3.3,-3.81 2.39,-3.13 2.41,-4.1 1.73,-3.59 1.35,-3.15 0.79,-3.05 0.6,-1.02 -0.01,-1.5 z", + "SR": "m 315.27,446.97 3.36,0.56 0.3,-0.51 2.27,-0.2 3.01,0.76 -1.46,2.4 0.22,1.91 1.11,1.66 -0.49,1.2 -0.25,1.27 -0.72,1.17 -1.6,-0.59 -1.33,0.29 -1.13,-0.25 -0.28,0.81 0.47,0.55 -0.25,0.57 -1.53,-0.23 -1.71,-2.42 -0.37,-1.57 -0.89,-0.01 -1.25,-2.02 0.52,-1.45 -0.15,-0.65 1.7,-0.73 z", + "SS": "m 570.73,437.15 0.03,2.2 -0.42,0.86 -1.48,0.07 -0.96,1.61 1.72,0.2 1.42,1.37 0.5,1.12 1.28,0.65 1.65,3.05 -1.9,1.84 -1.72,1.67 -1.73,1.28 -1.97,0 -2.26,0.65 -1.78,-0.63 -1.15,0.77 -2.47,-1.86 -0.67,-1.19 -1.56,0.59 -1.3,-0.19 -0.75,0.47 -1.26,-0.33 -1.69,-2.31 -0.45,-0.89 -2.1,-1.11 -0.71,-1.68 -1.17,-1.21 -1.88,-1.46 -0.03,-0.92 -1.53,-1.13 -1.91,-1.1 0.86,-0.31 0.96,-0.53 0.72,-2.52 0.77,-1.31 2.03,-0.39 0.48,0.77 1.44,1.65 0.77,0.25 1.01,-0.49 2.02,0.1 0.39,0.58 2.79,0 0.1,-0.58 1.44,-0.53 0.29,-0.83 1.06,-0.58 2.36,1.65 1.44,-0.29 1.4,-2.04 1.54,-1.56 -0.24,-1.71 -0.68,-0.83 1.69,-0.15 0.19,-0.63 1.3,0.19 -0.34,2.1 0.34,2.05 1.44,1.12 0.34,0.97 -0.05,1.41 z", + "SV": "m 229.34,426.01 -0.31,0.67 -1.62,-0.04 -1.01,-0.27 -1.16,-0.57 -1.56,-0.18 -0.79,-0.62 0.09,-0.42 0.96,-0.72 0.52,-0.32 -0.15,-0.34 0.66,-0.17 0.83,0.24 0.6,0.57 0.85,0.46 0.1,0.39 1.23,-0.34 0.58,0.2 0.38,0.31 z", + "SY": "m 584.27,364.85 -5.49,3.54 -3.12,-1.32 -0.06,-0.02 0.38,-0.5 -0.04,-1.37 0.69,-1.83 1.53,-1.27 -0.46,-1.32 -1.26,-0.18 -0.26,-2.61 0.68,-1.41 0.75,-0.75 0.75,-0.76 0.16,-1.94 0.91,0.68 3.09,-0.97 1.49,0.65 2.31,-0.01 3.22,-1.31 1.52,0.06 3.19,-0.54 -1.44,2.18 -1.54,0.86 0.27,2.52 -1.06,4.12 z", + "SZ": "m 565.43,540.99 -0.57,1.39 -1.64,0.33 -1.68,-1.69 -0.02,-1.08 0.76,-1.17 0.27,-0.9 0.81,-0.22 1.41,0.57 0.42,1.39 z", + "TD": "m 516.15,427.51 0.28,-1.34 -1.8,-0.07 0.01,-1.85 -1.17,-1.06 1.21,-3.8 3.58,-2.74 0.14,-3.79 1.08,-5.98 0.61,-1.28 -1.16,-1.02 -0.05,-0.95 -1.05,-0.78 -0.69,-4.67 2.83,-1.66 11.19,5.77 11.18,5.7 0.14,11.61 -2.42,-0.2 -1.28,2.13 -0.74,1.78 0.58,0.67 -0.92,0.88 0.32,1.18 -0.73,1.2 -0.28,1.05 0.99,-0.17 0.58,1.1 0.03,1.66 1.03,0.83 -0.03,0.69 -1.77,0.49 -1.43,1.14 -2.02,3.09 -2.64,1.31 -2.71,-0.18 -0.79,0.26 0.28,0.99 -1.47,0.99 -1.19,1.1 -3.53,1.07 -0.7,-0.63 -0.46,-0.06 -0.52,0.72 -2.32,0.22 0.44,-0.77 -0.88,-1.93 -0.4,-1.17 -1.22,-0.48 -1.65,-1.65 0.61,-1.33 1.28,0.28 0.79,-0.2 1.56,0.03 -1.52,-2.57 0.1,-1.89 -0.19,-1.89 z", + "TF": "m 668.79,619.28 1.8,1.33 2.65,0.54 0.1,0.81 -0.78,1.96 -4.31,0.28 -0.07,-2.29 0.42,-1.76 z", + "TG": "m 480.73,446.5 -2.25,0.59 -0.63,-0.98 -0.75,-1.78 -0.22,-1.4 0.62,-2.53 -0.7,-1.03 -0.27,-2.22 0,-2.05 -1.17,-1.46 0.21,-0.89 2.46,0.06 -0.36,1.5 0.85,0.83 0.98,0.99 0.1,1.39 0.57,0.58 -0.13,6.46 z", + "TH": "m 763.14,429.43 -2.52,-1.31 -2.4,0.06 0.41,-2.25 -2.47,0.02 -0.22,3.14 -1.51,4.15 -0.91,2.5 0.19,2.05 1.82,0.09 1.14,2.57 0.51,2.43 1.56,1.61 1.7,0.33 1.45,1.45 -0.91,1.15 -1.86,0.34 -0.22,-1.44 -2.28,-1.23 -0.49,0.5 -1.11,-1.07 -0.48,-1.39 -1.49,-1.59 -1.36,-1.33 -0.46,1.65 -0.53,-1.56 0.31,-1.76 0.82,-2.71 1.36,-2.91 1.54,-2.65 -1.1,-2.6 0.05,-1.33 -0.32,-1.6 -1.87,-2.28 -0.67,-1.45 0.97,-0.53 1.02,-2.52 -1.14,-1.92 -1.78,-2.13 -1.36,-2.57 1.18,-0.53 1.28,-3.19 1.98,-0.14 1.64,-1.28 1.6,-0.69 1.22,0.92 0.16,1.78 1.89,0.13 -0.69,3.11 0.07,2.62 2.95,-1.74 0.84,0.51 1.65,-0.08 0.56,-1.02 2.12,0.2 2.13,2.38 0.18,2.87 2.27,2.53 -0.13,2.44 -0.91,1.3 -2.63,-0.41 -3.62,0.55 -1.8,2.38 z", + "TJ": "m 674.62,340.87 -1.03,1.13 -3.05,-0.61 -0.27,2.1 3.04,-0.28 3.47,1.17 5.3,-0.55 0.71,3.33 0.92,-0.36 1.7,0.81 -0.09,1.38 0.42,2.01 -2.9,0 -1.93,-0.26 -1.74,1.57 -1.25,0.34 -0.98,0.74 -1.11,-1.15 0.27,-2.95 -0.85,-0.17 0.3,-1.09 -1.51,-0.8 -1.21,1.23 -0.3,1.43 -0.43,0.52 -1.68,-0.07 -0.9,1.6 -0.95,-0.67 -2.03,1.12 -0.85,-0.42 1.57,-3.57 -0.6,-2.66 -2.06,-0.86 0.73,-1.59 2.34,0.17 1.33,-2.01 0.89,-2.35 3.75,-0.86 -0.58,1.71 0.4,1.02 z", + "TL": "m 825.9,488.5 0.33,-0.66 2.41,-0.63 1.96,-0.1 0.87,-0.35 1.06,0.35 -1.03,0.76 -2.92,1.23 -2.35,0.82 -0.05,-0.86 z", + "TM": "m 647.13,357.15 -0.25,-2.91 -2.09,-0.12 -3.2,-3.09 -2.24,-0.39 -3.1,-1.79 -2,-0.33 -1.23,0.66 -1.87,-0.1 -1.99,2.02 -2.47,0.68 -0.52,-2.49 0.41,-3.73 -2.19,-1.22 0.72,-2.48 -1.86,-0.22 0.62,-3.09 2.64,0.91 2.47,-1.19 -2.05,-2.23 -0.8,-2.14 -2.26,0.96 -0.28,2.73 -0.88,-2.41 1.24,-1.25 3.18,-0.79 1.9,1.06 1.96,2.93 1.44,-0.18 3.16,-0.05 -0.46,-1.88 2.4,-1.3 2.36,-2.2 3.78,2 0.3,2.99 1.07,0.77 3.03,-0.17 0.94,0.67 1.38,3.79 3.21,2.51 1.83,1.69 2.93,1.75 3.73,1.52 -0.08,2.16 -0.84,-0.11 -1.33,-0.94 -0.44,1.25 -2.36,0.68 -0.56,2.79 -1.58,1.05 -2.21,0.52 -0.59,1.55 -2.11,0.46 z", + "TN": "m 502.09,374.94 -1.2,-5.86 -1.72,-1.33 -0.03,-0.81 -2.29,-1.98 -0.25,-2.53 1.73,-1.88 0.66,-2.82 -0.45,-3.28 0.57,-1.79 3.06,-1.41 1.96,0.42 -0.08,1.77 2.38,-1.29 0.2,0.67 -1.41,1.71 -0.01,1.6 0.97,0.85 -0.37,2.96 -1.85,1.71 0.53,1.83 1.45,0.06 0.71,1.59 1.07,0.52 -0.16,2.55 -1.37,0.95 -0.86,1.05 -1.93,1.26 0.3,1.35 -0.24,1.38 z", + "TR": "m 579,336.85 4.02,1.43 3.27,-0.57 2.41,0.33 3.31,-1.94 2.99,-0.18 2.7,1.83 0.48,1.3 -0.27,1.79 2.08,0.91 1.1,1.06 -1.92,1.03 0.88,4.11 -0.55,1.1 1.53,2.82 -1.34,0.59 -0.98,-0.89 -3.26,-0.45 -1.2,0.55 -3.19,0.54 -1.51,-0.06 -3.23,1.31 -2.31,0.01 -1.49,-0.66 -3.09,0.97 -0.92,-0.68 -0.15,1.94 -0.75,0.76 -0.75,0.76 -1.03,-1.57 1.06,-1.3 -1.71,0.3 -2.35,-0.8 -1.93,2 -4.26,0.39 -2.27,-1.86 -3.02,-0.12 -0.65,1.44 -1.94,0.41 -2.71,-1.85 -3.06,0.06 -1.66,-3.48 -2.05,-1.96 1.36,-2.78 -1.78,-1.72 3.11,-3.48 4.32,-0.15 1.18,-2.81 5.34,0.49 3.37,-2.42 3.27,-1.06 4.64,-0.08 4.91,2.64 z m -27.25,2.39 -2.34,1.98 -0.88,-1.71 0.04,-0.76 0.67,-0.41 0.87,-2.33 -1.37,-0.99 2.86,-1.18 2.41,0.5 0.33,1.44 2.45,1.2 -0.51,0.91 -3.33,0.2 -1.2,1.15 z", + "TT": "m 302.56,433.49 1.61,-0.37 0.59,0.1 -0.11,2.11 -2.34,0.31 -0.51,-0.25 0.82,-0.78 z", + "TW": "m 816.95,393.52 -1.69,4.87 -1.2,2.48 -1.48,-2.55 -0.32,-2.25 1.65,-3 2.25,-2.32 1.28,0.91 z", + "TZ": "m 570.56,466.28 0.48,0.31 10.16,5.67 0.2,1.62 4.02,2.79 -1.29,3.45 0.16,1.59 1.8,1.02 0.08,0.73 -0.77,1.7 0.16,0.85 -0.18,1.35 0.98,1.76 1.16,2.79 1.02,0.62 -2.23,1.64 -3.06,1.1 -1.68,-0.04 -1,0.85 -1.95,0.07 -0.74,0.36 -3.37,-0.8 -2.11,0.23 -0.78,-3.86 -0.95,-1.32 -0.57,-0.78 -2.74,-0.52 -1.6,-0.85 -1.78,-0.47 -1.12,-0.48 -1.17,-0.71 -1.51,-3.55 -1.63,-1.57 -0.56,-1.62 0.28,-1.46 -0.5,-2.57 1.16,-0.13 1.01,-1.01 1.1,-1.46 0.69,-0.58 -0.03,-0.91 -0.6,-0.63 -0.16,-1.1 0.8,-0.35 0.17,-1.64 -1.12,-1.57 0.99,-0.34 3.07,0.04 z", + "UA": "m 564.63,292.74 1.04,0.19 0.71,-1.04 0.85,0.23 2.91,-0.44 1.79,2.57 -0.7,0.92 0.23,1.39 2.24,0.21 1,1.93 -0.06,0.87 3.56,1.54 2.15,-0.69 1.73,2.04 1.64,-0.04 4.13,1.4 0.03,1.27 -1.13,2.23 0.61,2.33 -0.44,1.39 -2.71,0.31 -1.44,1.16 -0.09,1.83 -2.24,0.33 -1.87,1.32 -2.62,0.21 -2.42,1.52 -1.32,1.03 1.49,1.47 1.37,0.96 2.86,-0.24 -0.55,1.42 -3.07,0.68 -3.81,2.27 -1.55,-0.79 0.61,-1.85 -3.06,-1.16 0.5,-0.77 3.16,-1.63 -0.4,-0.81 -0.45,0.41 -0.44,-0.22 -4.36,-1.02 -0.19,-1.51 -2.6,0.5 -1.04,2.23 -2.17,2.95 -1.28,-0.68 -1.31,0.64 -1.25,-0.73 0.7,-0.44 0.49,-1.37 0.77,-1.29 -0.2,-0.72 0.59,-0.32 0.27,0.56 1.66,0.11 0.74,-0.29 -0.52,-0.42 0.19,-0.6 -0.98,-1.04 -0.4,-1.72 -1.02,-0.67 0.2,-1.41 -1.27,-1.12 -1.15,-0.16 -2.07,-1.31 -1.86,0.42 -0.67,0.62 -1.18,-0.01 -0.71,0.98 -2.07,0.4 -0.95,0.64 -1.31,-1.01 -1.79,-0.02 -1.74,-0.46 -1.21,0.89 -0.2,-1.12 -1.55,-1.14 0.55,-1.71 0.77,-1.1 0.62,0.24 -0.73,-1.92 2.55,-3.61 1.39,-0.51 0.3,-1.24 -1.41,-3.89 1.34,-0.17 1.54,-1.23 2.17,-0.1 2.83,0.36 3.13,1.08 2.21,0.09 1.05,0.65 1.05,-0.78 0.74,1.05 2.53,-0.22 1.11,0.43 0.19,-2.26 0.86,-1 z", + "UG": "m 564.85,466.5 -3.07,-0.04 -0.99,0.34 -1.67,0.86 -0.68,-0.29 0.02,-2.1 0.65,-1.06 0.16,-2.24 0.59,-1.29 1.07,-1.46 1.08,-0.74 0.9,-0.99 -1.12,-0.37 0.17,-3.26 1.15,-0.77 1.78,0.63 2.26,-0.65 1.97,0 1.73,-1.28 1.33,1.94 0.33,1.4 1.23,3.2 -1.02,2.03 -1.38,1.84 -0.8,1.13 0.02,2.95 z", + "US": "m 109.5,280.05 0,0 -1.54,-1.83 -2.47,-1.57 -0.79,-4.36 -3.61,-4.13 -1.51,-4.94 -2.69,-0.34 -4.46,-0.13 -3.29,-1.54 -5.8,-5.64 -2.68,-1.05 -4.9,-1.99 -3.88,0.48 -5.51,-2.59 -3.33,-2.43 -3.11,1.21 0.58,3.93 -1.55,0.36 -3.24,1.16 -2.47,1.86 -3.11,1.16 -0.4,-3.24 1.26,-5.53 2.98,-1.77 -0.77,-1.46 -3.57,3.22 -1.91,3.77 -4.04,3.95 2.05,2.65 -2.65,3.85 -3.01,2.21 -2.81,1.59 -0.69,2.29 -4.38,2.63 -0.89,2.36 -3.28,2.13 -1.92,-0.38 -2.62,1.38 -2.85,1.67 -2.33,1.63 -4.81,1.38 -0.44,-0.81 3.07,-2.27 2.74,-1.51 2.99,-2.71 3.48,-0.56 1.38,-2.06 3.89,-3.05 0.63,-1.03 2.07,-1.83 0.48,-4 1.43,-3.17 -3.23,1.64 -0.9,-0.93 -1.52,1.95 -1.83,-2.73 -0.76,1.94 -1.05,-2.7 -2.8,2.17 -1.72,0 -0.24,-3.23 0.51,-2.02 -1.81,-1.98 -3.65,1.07 -2.37,-2.63 -1.92,-1.36 -0.01,-3.25 -2.16,-2.48 1.08,-3.41 2.29,-3.37 1,-3.15 2.27,-0.45 1.92,0.99 2.26,-3.01 2.04,0.54 2.14,-1.96 -0.52,-2.92 -1.57,-1.16 2.08,-2.52 -1.72,0.07 -2.98,1.43 -0.85,1.43 -2.21,-1.43 -3.97,0.73 -4.11,-1.56 -1.18,-2.65 -3.55,-3.91 3.94,-2.87 6.25,-3.41 h 2.31 l -0.38,3.48 5.92,-0.27 -2.28,-4.34 -3.45,-2.72 -1.99,-3.64 -2.69,-3.17 -3.85,-2.38 1.57,-4.03 4.97,-0.25 3.54,-3.58 0.67,-3.92 2.86,-3.91 2.73,-0.95 5.31,-3.76 2.58,0.57 4.31,-4.61 4.24,1.83 2.03,3.87 1.25,-1.65 4.74,0.51 -0.17,1.95 4.29,1.43 2.86,-0.84 5.91,2.64 5.39,0.78 2.16,1.07 3.73,-1.34 4.25,2.46 3.05,1.13 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.6,2.32 z m 175.93,34.43 -1.25,-1.19 -1.88,0.7 -0.93,-1.08 -2.14,3.1 -0.86,3.15 -1,1.82 -1.19,0.62 -0.9,0.2 -0.28,0.98 -5.17,0 -4.26,0.03 -1.27,0.73 -2.87,2.73 0.29,0.54 0.17,1.51 -2.1,1.27 -2.3,-0.32 -2.2,-0.14 -1.33,0.44 0.25,1.15 0,0 0.05,0.37 -2.42,2.27 -2.11,1.09 -1.44,0.51 -1.66,1.03 -2.03,0.5 -1.4,-0.19 -1.73,-0.77 0.96,-1.45 0.62,-1.32 1.32,-2.09 -0.14,-1.57 -0.5,-2.24 -1.04,-0.39 -1.74,1.7 -0.56,-0.03 -0.14,-0.97 1.54,-1.56 0.26,-1.79 -0.23,-1.79 -2.08,-1.55 -2.38,-0.8 -0.39,1.52 -0.62,0.4 -0.5,1.95 -0.26,-1.33 -1.12,0.95 -0.7,1.32 -0.73,1.92 -0.14,1.64 0.93,2.38 -0.08,2.51 -1.14,1.84 -0.57,0.52 -0.76,0.41 -0.95,0.02 -0.26,-0.25 -0.76,-1.98 -0.02,-0.98 0.08,-0.94 -0.35,-1.87 0.53,-2.18 0.63,-2.71 1.46,-3.03 -0.42,0.01 -2.06,2.54 -0.38,-0.46 1.1,-1.42 1.67,-2.57 1.91,-0.36 2.19,-0.8 2.21,0.42 0.09,0.02 2.47,-0.36 -1.4,-1.61 -0.75,-0.13 -0.86,-0.16 -0.59,-1.14 -2.75,0.36 -2.49,0.9 -1.97,-1.55 -1.59,-0.52 0.9,-2.17 -2.48,1.37 -2.25,1.33 -2.16,1.04 -1.72,-1.4 -2.81,0.85 0.01,-0.6 1.9,-1.73 1.99,-1.65 2.86,-1.37 -3.45,-1.09 -2.27,0.55 -2.72,-1.3 -2.86,-0.67 -1.96,-0.26 -0.87,-0.72 -0.5,-2.35 -0.95,0.02 -0.01,1.64 -5.8,0 -9.59,0 -9.53,0 -8.42,0 h -8.41 -8.27 -8.55 -2.76 -8.32 -7.96 l 0.95,3.47 0.45,3.41 -0.69,1.09 -1.49,-3.91 -4.05,-1.42 -0.34,0.82 0.82,1.94 0.89,3.53 0.51,5.42 -0.34,3.59 -0.34,3.54 -1.1,3.61 0.9,2.9 0.1,3.2 -0.61,3.05 1.49,1.99 0.39,2.95 2.17,2.99 1.24,1.17 -0.1,0.82 2.34,4.85 2.72,3.45 0.34,1.87 0.71,0.55 2.6,0.33 1,0.91 1.57,0.17 0.31,0.96 1.31,0.4 1.82,1.92 0.47,1.7 3.19,-0.25 3.56,-0.36 -0.26,0.65 4.23,1.6 6.4,2.31 5.58,-0.02 2.22,0 0.01,-1.35 4.86,0 1.02,1.16 1.43,1.03 1.67,1.43 0.93,1.69 0.7,1.77 1.45,0.97 2.33,0.96 1.77,-2.53 2.29,-0.06 1.98,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.19,0.96 1.99,0.68 1.09,-0.09 -0.53,-1.06 -0.14,-1.5 0.03,-2.16 0.65,-1.42 1.53,-1.51 2.79,-1.37 2.55,-2.37 2.36,-0.75 1.74,-0.23 2.04,0.74 2.45,-0.4 2.09,1.69 2.03,0.1 1.05,-0.61 1.04,0.47 0.53,-0.42 -0.6,-0.63 0.05,-1.3 -0.5,-0.86 1.16,-0.5 2.14,-0.22 2.49,0.36 3.17,-0.41 1.76,0.8 1.36,1.5 0.5,0.16 2.83,-1.46 1.09,0.49 2.19,2.68 0.79,1.75 -0.58,2.1 0.42,1.23 1.3,2.4 1.49,2.68 1.07,0.71 0.44,1.35 1.38,0.37 0.84,-0.39 0.7,-1.89 0.12,-1.21 0.09,-2.1 -1.33,-3.65 -0.02,-1.37 -1.25,-2.25 -0.94,-2.75 -0.5,-2.25 0.43,-2.31 1.32,-1.94 1.58,-1.57 3.08,-2.16 0.4,-1.12 1.42,-1.23 1.4,-0.22 1.84,-1.98 2.9,-1.01 1.78,-2.53 -0.39,-3.46 -0.29,-1.21 -0.8,-0.24 -0.12,-3.35 -1.93,-1.14 1.85,0.56 -0.6,-2.26 0.54,-1.55 0.33,2.97 1.43,1.36 -0.87,2.4 0.26,0.14 1.58,-2.81 0.9,-1.38 -0.04,-1.35 -0.7,-0.64 -0.58,-1.94 0.92,0.9 0.62,0.19 0.21,0.92 2.04,-2.78 0.61,-2.62 -0.83,-0.17 0.85,-1.02 -0.08,0.45 1.79,-0.01 3.93,-1.11 -0.83,-0.7 -4.12,0.7 2.34,-1.07 1.63,-0.18 1.22,-0.19 2.07,-0.65 1.35,0.07 1.89,-0.61 0.22,-1.07 -0.84,-0.84 0.29,1.37 -1.16,-0.09 -0.93,-1.99 0.03,-2.01 0.48,-0.86 1.48,-2.28 2.96,-1.15 2.88,-1.34 2.99,-1.9 -0.48,-1.29 -1.83,-2.25 -0.03,-5.56 z m -239.56,-50.44 -1.5,0.8 -2.55,1.86 0.43,2.42 1.43,1.32 2.8,-1.95 2.43,-2.47 -1.19,-1.63 -1.85,-0.35 z m -45.62,-28.57 2.04,-1.26 0.23,-0.68 -2.27,-0.67 v 2.61 z m 8.5,15.37 -2.77,0.97 1.7,1.52 1.84,1.04 1.72,-0.87 -0.27,-2.15 -2.22,-0.51 z m 97.35,32.5 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z m -68.72,120.68 -1,-0.28 -0.27,0.26 0.02,0.19 0.32,0.24 0.48,0.63 0.94,-0.21 0.23,-0.36 -0.72,-0.47 z m -2.99,-0.54 1.5,0.09 0.09,-0.32 -1.38,-0.13 -0.21,0.36 z m 5.89,3.29 -0.5,-0.26 -1.07,-0.5 -0.21,-0.06 -0.16,0.28 0.19,0.58 -0.49,0.48 -0.14,0.33 0.46,1.08 -0.08,0.83 0.7,0.42 0.41,-0.49 0.9,-0.46 1.1,-0.63 0.07,-0.16 -0.71,-1.04 -0.47,-0.4 z m -7.86,-5.14 -0.75,0.41 0.11,0.12 0.36,0.68 0.98,0.11 0.2,0.04 0.15,-0.17 -0.81,-0.99 -0.24,-0.2 z m -4.4,-1.56 -0.43,0.3 -0.15,0.22 0.94,0.55 0.33,-0.3 -0.06,-0.7 -0.63,-0.07 z", + "UY": "m 313.93,552.04 1.82,-0.34 2.81,2.5 1.04,-0.09 2.89,2.08 2.2,1.82 1.62,2.25 -1.24,1.57 0.78,1.9 -1.21,2.12 -3.17,1.88 -2.07,-0.68 -1.52,0.37 -2.59,-1.46 -1.9,0.11 -1.71,-1.87 0.22,-2.16 0.61,-0.74 -0.03,-3.3 0.75,-3.37 z", + "UZ": "m 662.01,351.2 0.08,-2.16 -3.73,-1.52 -2.93,-1.75 -1.83,-1.69 -3.21,-2.51 -1.38,-3.79 -0.94,-0.67 -3.03,0.17 -1.07,-0.77 -0.3,-2.99 -3.78,-2 -2.36,2.2 -2.4,1.3 0.46,1.88 -3.16,0.05 -0.11,-14.13 7.22,-2.35 0.52,0.35 4.35,2.84 2.29,1.48 2.68,3.5 3.29,-0.56 4.81,-0.3 3.35,2.8 -0.21,3.8 1.37,0.03 0.57,3.06 3.57,0.12 0.76,1.75 1.05,-0.02 1.23,-2.65 3.69,-2.61 1.61,-0.7 0.83,0.37 -2.35,2.43 2.07,1.4 2,-0.93 3.32,1.96 -3.59,2.64 -2.13,-0.36 -1.16,0.1 -0.4,-1.02 0.58,-1.71 -3.75,0.86 -0.89,2.35 -1.33,2.01 -2.34,-0.17 -0.73,1.59 2.06,0.86 0.6,2.66 -1.57,3.57 -2.12,-0.74 z", + "VE": "m 275.5,430.6 -0.08,0.67 -1.65,0.33 0.92,1.29 -0.04,1.49 -1.23,1.64 1.06,2.24 1.21,-0.18 0.63,-2.04 -0.87,-1 -0.14,-2.14 3.49,-1.16 -0.39,-1.34 0.98,-0.9 1.01,2 1.97,0.05 1.82,1.58 0.11,0.94 2.51,0.02 3,-0.29 1.61,1.27 2.14,0.35 1.57,-0.88 0.03,-0.72 3.48,-0.17 3.36,-0.04 -2.38,0.84 0.95,1.34 2.25,0.21 2.12,1.39 0.45,2.26 1.46,-0.07 1.1,0.67 -2.22,1.65 -0.25,1.03 0.96,1.04 -0.69,0.52 -1.73,0.45 0.06,1.3 -0.76,0.77 1.89,2.12 0.38,0.79 -1.03,1.07 -3.14,1.04 -2.01,0.44 -0.81,0.66 -2.23,-0.7 -2.08,-0.36 -0.52,0.26 1.25,0.72 -0.11,1.87 0.39,1.76 2.37,0.24 0.16,0.58 -2.01,0.8 -0.32,1.18 -1.16,0.45 -2.08,0.65 -0.54,0.86 -2.18,0.18 -1.55,-1.48 -0.85,-2.77 -0.75,-0.98 -1.02,-0.61 1.42,-1.39 -0.09,-0.63 -0.8,-0.83 -0.56,-1.85 0.22,-2.01 0.62,-0.94 0.51,-1.5 -0.99,-0.49 -1.6,0.32 -2.02,-0.15 -1.13,0.3 -1.98,-2.41 -1.63,-0.36 -3.6,0.27 -0.67,-0.98 -0.69,-0.23 -0.1,-0.59 0.33,-1.04 -0.22,-1.13 -0.62,-0.62 -0.36,-1.3 -1.44,-0.18 0.77,-1.66 0.35,-2.01 0.81,-1.06 1.09,-0.81 0.71,-1.42 z", + "VN": "m 778.46,402.12 -3.74,2.56 -2.34,2.81 -0.62,2.05 2.15,3.09 2.62,3.82 2.54,1.79 1.71,2.33 1.28,5.32 -0.38,5.02 -2.33,1.87 -3.22,1.83 -2.28,2.36 -3.5,2.62 -1.02,-1.81 0.79,-1.91 -2.08,-1.61 2.43,-1.14 2.94,-0.2 -1.23,-1.73 4.71,-2.19 0.35,-3.42 -0.65,-1.92 0.51,-2.88 -0.71,-2.04 -2.12,-2.02 -1.77,-2.57 -2.33,-3.46 -3.36,-1.76 0.81,-1.07 1.79,-0.77 -1.09,-2.59 -3.45,-0.03 -1.26,-2.72 -1.64,-2.37 1.51,-0.74 2.23,0.02 2.73,-0.35 2.39,-1.62 1.35,1.14 2.57,0.55 -0.45,1.74 1.34,1.22 z", + "VU": "m 946.12,510.15 -0.92,0.38 -0.94,-1.27 0.1,-0.78 1.76,1.67 z m -2.07,-4.44 0.46,2.33 -0.75,-0.36 -0.58,0.16 -0.4,-0.8 -0.06,-2.21 1.33,0.88 z", + "YE": "m 624.41,416.58 -2.03,0.79 -0.54,1.28 -0.07,0.99 -2.79,1.22 -4.48,1.35 -2.51,2.03 -1.23,0.15 -0.84,-0.17 -1.64,1.2 -1.79,0.55 -2.35,0.15 -0.71,0.16 -0.61,0.75 -0.74,0.21 -0.43,0.73 -1.39,-0.06 -0.9,0.38 -1.94,-0.14 -0.73,-1.67 0.08,-1.57 -0.45,-0.85 -0.55,-2.12 -0.81,-1.19 0.56,-0.14 -0.29,-1.32 0.34,-0.56 -0.12,-1.26 1.23,-0.93 -0.29,-1.23 0.75,-1.43 1.15,0.76 0.76,-0.27 3.23,-0.07 0.52,0.3 2.71,0.29 1.07,-0.15 0.7,0.97 1.31,-0.48 2.01,-3.07 2.62,-1.32 8.08,-1.13 2.2,4.84 z", + "ZA": "m 563.88,548.96 -0.55,0.46 -1.19,1.63 -0.78,1.66 -1.59,2.33 -3.17,3.38 -1.98,1.98 -2.12,1.51 -2.93,1.3 -1.43,0.17 -0.36,0.93 -1.7,-0.5 -1.39,0.64 -3.04,-0.65 -1.7,0.41 -1.16,-0.18 -2.89,1.33 -2.39,0.54 -1.73,1.28 -1.28,0.08 -1.19,-1.21 -0.95,-0.06 -1.21,-1.51 -0.13,0.47 -0.37,-0.91 0.02,-1.96 -0.91,-2.23 0.9,-0.6 -0.07,-2.53 -1.84,-3.05 -1.41,-2.74 0,-0.01 -2.01,-4.15 1.34,-1.57 1.11,0.87 0.47,1.36 1.26,0.23 1.76,0.6 1.51,-0.23 2.5,-1.63 0,-11.52 0.76,0.46 1.66,2.93 -0.26,1.89 0.63,1.1 2.01,-0.32 1.4,-1.39 1.33,-0.93 0.69,-1.48 1.37,-0.72 1.18,0.38 1.34,0.87 2.28,0.15 1.79,-0.72 0.28,-0.96 0.49,-1.47 1.53,-0.25 0.84,-1.15 0.93,-2.03 2.52,-2.26 3.97,-2.22 1.14,0.03 1.36,0.51 0.94,-0.36 1.49,0.3 1.34,4.26 0.73,2.17 -0.5,3.43 0.24,1.11 -1.42,-0.57 -0.81,0.22 -0.26,0.9 -0.77,1.17 0.03,1.08 1.67,1.7 1.64,-0.34 0.57,-1.39 2.13,0.03 -0.7,2.28 -0.33,2.62 -0.73,1.43 -1.9,1.62 z m -7.13,-0.96 -1.22,-0.98 -1.31,0.65 -1.52,1.25 -1.5,2.03 2.1,2.48 1,-0.32 0.52,-1.03 1.56,-0.5 0.48,-1.05 0.86,-1.56 -0.97,-0.97 z", + "ZM": "m 567.36,489.46 1.32,1.26 0.71,2.4 -0.48,0.77 -0.56,2.3 0.54,2.36 -0.88,0.99 -0.85,2.66 1.47,0.74 -8.51,2.38 0.27,2.05 -2.13,0.4 -1.59,1.15 -0.34,1.01 -1.01,0.22 -2.44,2.4 -1.55,1.89 -0.95,0.07 -0.91,-0.34 -3.13,-0.32 -0.5,-0.22 -0.03,-0.24 -1.1,-0.66 -1.82,-0.17 -2.3,0.67 -1.83,-1.82 -1.89,-2.38 0.13,-9.16 5.84,0.04 -0.24,-0.99 0.42,-1.07 -0.49,-1.33 0.32,-1.38 -0.3,-0.88 0.97,0.07 0.16,0.88 1.31,-0.07 1.78,0.26 0.94,1.29 2.24,0.4 1.72,-0.9 0.63,1.49 2.15,0.4 1.03,1.22 1.15,1.57 2.15,0.03 -0.24,-3.08 -0.77,0.51 -1.96,-1.1 -0.76,-0.51 0.35,-2.85 0.5,-3.35 -0.63,-1.25 0.8,-1.8 0.75,-0.33 3.77,-0.48 1.1,0.29 1.17,0.71 1.12,0.48 1.78,0.47 z", + "ZW": "m 562.96,527.25 -1.49,-0.3 -0.95,0.36 -1.35,-0.51 -1.14,-0.03 -1.79,-1.36 -2.17,-0.46 -0.82,-1.9 -0.01,-1.05 -1.2,-0.32 -3.17,-3.25 -0.89,-1.71 -0.56,-0.52 -1.08,-2.35 3.13,0.32 0.91,0.34 0.95,-0.07 1.55,-1.89 2.44,-2.4 1.01,-0.22 0.34,-1.01 1.59,-1.15 2.13,-0.4 0.18,1.08 2.34,-0.06 1.3,0.61 0.6,0.72 1.34,0.21 1.45,0.94 0.01,3.69 -0.55,2.04 -0.12,2.2 0.45,0.88 -0.31,1.74 -0.43,0.27 -0.74,2.15 z" + } + } + } + }); + + return Mapael; + +})); diff --git a/plugins/jquery-mapael/maps/world_countries_mercator.min.js b/plugins/jquery-mapael/maps/world_countries_mercator.min.js new file mode 100644 index 0000000..a0ed050 --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries_mercator.min.js @@ -0,0 +1,14 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires Mapael + * + * Map of World by country + * Mercator projection + * + * @source http://www.amcharts.com/svg-maps/?map=world + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries_mercator:{width:1008.77,height:651.44,leftLongitude:-169.6,rightLongitude:190.25,topLatitude:83.68,bottomLatitude:-55.55,_projectLongitude:function(a){return a*Math.PI/180},_projectLatitude:function(a){var b=Math.sin(a*Math.PI/180);return.5*Math.log((1+b)/(1-b))},getCoords:function(a,b){var c=this;void 0===c._xLeftPrime&&(c._xLeftPrime=c._projectLongitude(c.leftLongitude)),void 0===c._xRightPrime&&(c._xRightPrime=c._projectLongitude(c.rightLongitude)),void 0===c._yTopPrime&&(c._yTopPrime=c._projectLatitude(c.topLatitude)),void 0===c._yBottomPrime&&(c._yBottomPrime=c._projectLatitude(c.bottomLatitude));var d=c._projectLongitude(b),e=c._projectLatitude(a),f=(d-c._xLeftPrime)*(c.width/(c._xRightPrime-c._xLeftPrime)),g=(c._yTopPrime-e)*(c.height/(c._yTopPrime-c._yBottomPrime));return{x:f,y:g}},elems:{AE:"m 620.12,393.97 0.5,-0.15 0.11,0.84 2.19,-0.48 2.32,0.08 1.69,0.09 1.92,-2.07 2.1,-1.98 1.77,-1.9 0.53,1.05 0.38,2.44 -1.43,0.01 -0.23,2 0.5,0.42 -1.27,0.6 -0.01,1.25 -0.82,1.26 -0.07,1.21 -0.57,0.64 -8.42,-1.52 -1.08,-3.08 z",AF:"m 647.13,357.15 2.86,1.3 2.11,-0.46 0.59,-1.55 2.21,-0.52 1.58,-1.05 0.56,-2.79 2.36,-0.68 0.44,-1.25 1.33,0.94 0.84,0.11 1.56,0.03 2.12,0.74 0.85,0.42 2.03,-1.12 0.95,0.67 0.9,-1.6 1.68,0.07 0.43,-0.52 0.3,-1.43 1.21,-1.23 1.51,0.8 -0.3,1.09 0.85,0.17 -0.27,2.95 1.11,1.15 0.98,-0.74 1.25,-0.34 1.74,-1.57 1.93,0.26 2.9,0 0.5,1.01 -1.64,0.39 -1.42,0.65 -3.22,0.4 -3.01,0.73 -1.64,1.51 0.66,1.46 0.33,1.7 -1.4,1.43 0.12,1.3 -0.77,1.22 -2.67,-0.11 1.1,2.22 -1.78,0.85 -1.19,2 0.15,1.98 -1.1,0.92 -1.03,-0.3 -2.15,0.43 -0.3,0.91 -2.09,0 -1.56,1.84 -0.1,2.75 -3.65,1.33 -1.95,-0.28 -0.57,0.7 -1.67,-0.4 -2.81,0.48 -4.69,-1.64 2.54,-2.93 -0.23,-2.1 -2.12,-0.55 -0.22,-2.09 -0.92,-2.64 1.2,-1.83 -1.22,-0.49 0.77,-2.45 z",AL:"m 533.23,334.91 -0.35,1.27 0.4,1.59 1.16,0.9 -0.06,0.97 -0.91,0.54 -0.17,1.19 -1.3,1.76 -0.48,-0.25 -0.05,-0.8 -1.56,-1.23 -0.24,-1.75 0.24,-2.53 0.38,-1.16 -0.47,-0.59 -0.19,-1.19 1.22,-1.87 0.17,0.72 0.76,-0.34 0.6,1.02 0.67,0.38 z",AM:"m 597.7,337.75 3.9,-0.58 0.58,0.98 1.07,0.64 -0.57,0.92 1.5,1.26 -0.79,1.16 1.19,0.99 1.26,0.59 0.06,2.5 -1.02,0.1 -1.14,-2.08 0.01,-0.55 -1.24,0.01 -0.83,-0.98 -0.58,0.1 -1.11,-1.06 -2.08,-0.91 0.27,-1.79 z",AO:"m 521.28,480.03 0.69,2.09 0.8,1.68 0.64,0.91 1.07,1.47 1.85,-0.23 0.93,-0.4 1.55,0.4 0.42,-0.7 0.7,-1.64 1.74,-0.11 0.15,-0.49 1.43,-0.01 -0.24,1.01 3.4,-0.02 0.05,1.77 0.57,1.09 -0.41,1.7 0.21,1.74 0.94,1.05 -0.15,3.37 0.69,-0.26 1.22,0.07 1.74,-0.42 1.28,0.17 0.3,0.88 -0.32,1.38 0.49,1.34 -0.42,1.07 0.24,0.99 -5.84,-0.04 -0.13,9.16 1.89,2.38 1.83,1.82 -5.15,1.19 -6.79,-0.41 -1.94,-1.4 -11.37,0.13 -0.42,0.21 -1.67,-1.32 -1.82,-0.09 -1.68,0.5 -1.35,0.56 -0.26,-1.83 0.39,-2.55 0.97,-2.65 0.15,-1.24 0.91,-2.59 0.67,-1.17 1.61,-1.87 0.9,-1.27 0.29,-2.11 -0.15,-1.61 -0.84,-1.01 -0.75,-1.72 -0.69,-1.69 0.15,-0.59 0.86,-1.12 -0.85,-2.72 -0.57,-1.88 -1.4,-1.77 0.27,-0.54 1.16,-0.38 0.81,0.05 0.98,-0.34 8.27,0.01 z m -10.91,-0.54 -0.71,0.3 -0.75,-2.1 1.13,-1.21 0.85,-0.47 1.05,0.96 -1.02,0.59 -0.46,0.72 -0.09,1.21 z",AR:"m 291.85,649.16 -2.66,0.25 -1.43,-1.73 -1.69,-0.13 -3,0 0,-10.57 1.08,2.15 1.4,3.53 3.65,2.87 3.93,1.21 -1.28,2.42 z m 1.5,-122.44 1.65,2.18 1.09,-2.43 3.2,0.12 0.45,0.64 5.15,4.94 2.29,0.46 3.43,2.26 2.89,1.2 0.4,1.36 -2.76,4.73 2.83,0.85 3.15,0.48 2.22,-0.5 2.54,-2.4 0.46,-2.74 1.39,-0.59 1.41,1.79 -0.06,2.49 -2.36,1.73 -1.88,1.28 -3.16,3.08 -3.74,4.37 -0.7,2.59 -0.75,3.37 0.03,3.3 -0.61,0.74 -0.22,2.17 -0.19,1.76 3.56,2.91 -0.38,2.37 1.75,1.51 -0.14,1.7 -2.69,4.52 -4.16,1.91 -5.62,0.75 -3.08,-0.36 0.59,2.15 -0.57,2.72 0.52,1.85 -1.68,1.3 -2.87,0.51 -2.7,-1.35 -1.08,0.97 0.39,3.71 1.89,1.14 1.54,-1.19 0.84,1.96 -2.58,1.18 -2.25,2.38 -0.41,3.91 -0.66,2.11 -2.65,0.01 -2.2,2.04 -0.8,3.01 2.76,2.98 2.68,0.83 -0.96,3.73 -3.31,2.38 -1.82,5.03 -2.56,1.72 -1.15,2.06 0.91,4.64 1.87,2.63 -1.18,-0.23 -2.6,-0.71 -6.78,-0.61 -1.16,-2.63 0.05,-3.33 -1.87,0.28 -0.99,-1.6 -0.25,-4.6 2.15,-1.88 0.89,-2.68 -0.33,-2.11 1.49,-3.52 1.02,-5.35 -0.3,-2.33 1.22,-0.75 -0.3,-1.48 -1.3,-0.78 0.92,-1.63 -1.27,-1.46 -0.65,-4.4 1.13,-0.77 -0.47,-4.54 0.66,-3.75 0.75,-3.22 1.68,-1.3 -0.85,-3.46 -0.01,-3.22 2.12,-2.26 -0.06,-2.87 1.6,-3.31 0.01,-3.09 -0.73,-0.61 -1.29,-5.69 1.73,-3.34 -0.27,-3.11 1,-2.9 1.84,-2.96 1.98,-1.95 -0.84,-1.23 0.59,-1 -0.09,-5.14 3.05,-1.51 0.96,-3.16 -0.34,-0.76 2.34,-2.72 3.62,0.72 z",AT:"m 523.11,310.1 -0.21,1.71 -1.58,0.01 0.54,0.89 -0.93,2.65 -0.53,0.69 -2.45,0.1 -1.42,0.92 -2.32,-0.31 -4.01,-1.05 -0.62,-1.43 -2.77,0.72 -0.33,0.77 -1.7,-0.58 -1.43,-0.11 -1.27,-0.74 0.43,-1.01 -0.11,-0.74 0.85,-0.22 1.42,1.14 0.4,-1.09 2.47,0.18 2.01,-0.74 1.34,0.12 0.87,0.85 0.27,-0.7 -0.4,-2.72 1.01,-0.54 0.98,-1.95 2.09,1.37 1.57,-1.74 0.99,-0.32 2.18,1.3 1.31,-0.22 1.3,0.8 -0.23,0.54 z",AU:"m 883.18,588.41 2.71,1.28 1.53,-0.51 2.19,-0.71 1.68,0.25 0.2,4.43 -0.96,1.3 -0.29,3.06 -0.98,-1.05 -1.95,2.67 -0.58,-0.21 -1.72,-0.12 -1.73,-3.28 -0.38,-2.5 -1.62,-3.25 0.07,-1.7 1.83,0.34 z m -5.15,-86.06 1.01,2.25 1.8,-1.08 0.93,1.22 1.35,1.13 -0.29,1.28 0.6,2.48 0.43,1.45 0.71,0.35 0.76,2.5 -0.27,1.52 0.91,1.99 3.04,1.54 1.98,1.41 1.88,1.29 -0.37,0.72 1.6,1.87 1.09,3.25 1.12,-0.66 1.14,1.31 0.69,-0.46 0.48,3.21 1.99,1.87 1.3,1.17 2.19,2.49 0.79,2.49 0.07,1.77 -0.19,1.94 1.34,2.68 -0.16,2.81 -0.49,1.48 -0.76,2.87 0.06,1.86 -0.55,2.34 -1.24,3 -2.08,1.63 -1.02,2.59 -0.94,1.67 -0.83,2.93 -1.08,1.71 -0.71,2.58 -0.36,2.4 0.14,1.11 -1.61,1.22 -3.14,0.13 -2.59,1.45 -1.29,1.38 -1.69,1.54 -2.32,-1.58 -1.72,-0.63 0.44,-1.85 -1.53,0.67 -2.46,2.58 -2.42,-0.97 -1.59,-0.56 -1.6,-0.25 -2.71,-1.03 -1.81,-2.18 -0.52,-2.66 -0.65,-1.75 -1.38,-1.4 -2.7,-0.41 0.92,-1.66 -0.68,-2.52 -1.37,2.35 -2.5,0.63 1.47,-1.88 0.42,-1.95 1.08,-1.65 -0.22,-2.47 -2.28,2.85 -1.75,1.15 -1.07,2.69 -2.19,-1.4 0.09,-1.79 -1.75,-2.43 -1.48,-1.25 0.53,-0.77 -3.6,-2 -1.97,-0.09 -2.7,-1.6 -5.02,0.31 -3.63,1.18 -3.19,1.1 -2.68,-0.22 -2.97,1.7 -2.43,0.77 -0.54,1.75 -1.04,1.36 -2.38,0.08 -1.76,0.3 -2.48,-0.61 -2.02,0.37 -1.92,0.15 -1.67,1.8 -0.82,-0.15 -1.41,0.96 -1.35,1.08 -2.05,-0.13 -1.88,0 -2.97,-2.17 -1.51,-0.64 0.06,-1.93 1.39,-0.46 0.48,-0.76 -0.1,-1.2 0.34,-2.3 -0.31,-1.95 -1.48,-3.29 -0.46,-1.85 0.12,-1.83 -1.12,-2.08 -0.07,-0.93 -1.24,-1.26 -0.35,-2.47 -1.6,-2.48 -0.39,-1.33 1.23,1.35 -0.95,-2.88 1.39,0.9 0.83,1.2 -0.05,-1.59 -1.39,-2.43 -0.27,-0.97 -0.65,-0.92 0.3,-1.77 0.57,-0.75 0.38,-1.52 -0.3,-1.77 1.16,-2.17 0.21,2.29 1.18,-2.07 2.28,-1 1.37,-1.28 2.14,-1.1 1.27,-0.23 0.77,0.37 2.21,-1.11 1.7,-0.33 0.42,-0.65 0.74,-0.27 1.55,0.07 2.95,-0.87 1.52,-1.31 0.72,-1.58 1.64,-1.49 0.13,-1.17 0.07,-1.59 1.96,-2.47 1.18,2.51 1.19,-0.58 -1,-1.38 0.88,-1.41 1.24,0.63 0.34,-2.21 1.53,-1.42 0.68,-1.14 1.41,-0.49 0.04,-0.8 1.23,0.34 0.05,-0.72 1.23,-0.41 1.36,-0.39 2.07,1.32 1.56,1.71 1.75,0.02 1.78,0.27 -0.59,-1.58 1.34,-2.3 1.26,-0.75 -0.44,-0.71 1.22,-1.63 1.7,-1.01 1.43,0.34 2.36,-0.54 -0.05,-1.45 -2.05,-0.94 1.49,-0.41 1.86,0.7 1.49,1.17 2.36,0.73 0.8,-0.29 1.74,0.88 1.64,-0.82 1.05,0.25 0.66,-0.55 1.29,1.41 -0.75,1.53 -1.06,1.16 -0.96,0.1 0.33,1.15 -0.82,1.43 -1,1.41 0.2,0.81 2.23,1.6 2.16,0.93 1.44,1 2.03,1.72 0.79,0 1.47,0.75 0.43,0.9 2.68,0.99 1.85,-1 0.55,-1.57 0.57,-1.29 0.35,-1.59 0.85,-2.3 -0.39,-1.39 0.2,-0.84 -0.32,-1.64 0.37,-2.16 0.54,-0.58 -0.44,-0.95 0.68,-1.51 0.53,-1.56 0.07,-0.81 1.04,-1.06 0.79,1.39 0.19,1.78 0.7,0.34 0.12,1.2 1.02,1.45 0.21,1.62 -0.08,1.01 z",AZ:"m 601.68,342.71 0.83,0.97 1.24,-0.01 -0.01,0.56 1.14,2.08 -1.92,-0.48 -1.42,-1.66 -0.44,-1.37 0.58,-0.09 z m 6.65,-5.43 1.24,0.25 0.48,-0.95 1.67,-1.51 1.47,1.97 1.43,2.62 1.31,0.17 0.86,0.99 -2.31,0.29 -0.49,2.82 -0.48,1.26 -1.03,0.84 0.08,1.77 -0.7,0.18 -1.75,-1.87 0.97,-1.78 -0.83,-1.06 -1.05,0.27 -3.31,2.66 -0.06,-2.5 -1.26,-0.59 -1.19,-0.99 0.79,-1.16 -1.49,-1.26 0.56,-0.92 -1.07,-0.64 -0.58,-0.97 0.69,-0.61 2.09,1.07 1.51,0.22 0.38,-0.43 -1.38,-2.02 0.73,-0.52 0.79,0.13 1.93,2.27 z",BA:"m 528.79,323.36 1.02,-0.01 -0.7,1.72 1.35,1.5 -0.41,1.82 -0.66,0.17 -0.53,0.36 -0.91,0.89 -0.41,2.1 -2.48,-1.44 -1.06,-1.61 -1.07,-0.85 -1.29,-1.45 -0.6,-1.21 -1.38,-1.83 0.59,-1.64 1.01,0.91 0.6,-0.82 1.31,-0.09 2.41,0.66 1.94,-0.06 z",BD:"m 735.34,400.66 -0.05,2.15 -0.98,-0.46 0.18,2.41 -0.8,-1.56 -0.16,-1.52 -0.54,-1.45 -1.17,-1.76 -2.58,-0.12 0.26,1.25 -0.88,1.67 -1.2,-0.61 -0.41,0.55 -0.79,-0.33 -1.08,-0.27 -0.44,-2.48 -0.97,-2.28 0.47,-1.84 -1.72,-0.82 0.62,-1.12 1.75,-1.15 -2.02,-1.63 0.99,-2.11 2.22,1.34 1.34,0.16 0.25,2.15 2.66,0.42 2.61,-0.05 1.61,0.53 -1.29,2.59 -1.26,0.18 -0.86,1.73 1.53,1.58 0.46,-1.94 0.78,-0.01 z",BE:"m 484.8,296.16 2.05,0.35 2.6,-0.93 1.77,1.95 1.55,1.04 -0.32,2.97 -0.73,0.16 -0.31,2.43 -2.45,-1.97 -1.44,0.34 -1.96,-2.06 -1.3,-1.77 -1.3,-0.07 -0.41,-1.56 z",BF:"m 467.58,436.65 -1.92,-0.73 -1.32,0.11 -0.98,0.71 -1.26,-0.6 -0.49,-0.93 -1.26,-0.62 -0.19,-1.64 0.77,-1.21 -0.07,-0.96 2.23,-2.36 0.41,-1.96 0.77,-0.7 1.36,0.38 1.17,-0.58 0.38,-0.74 2.18,-1.28 0.53,-0.9 2.62,-1.2 1.55,-0.41 0.7,0.55 1.79,-0.01 -0.22,1.4 0.38,1.31 1.58,1.87 0.08,1.38 3.24,0.65 -0.07,1.95 -0.61,0.86 -1.37,0.26 -0.57,1.24 -0.96,0.32 -2.46,-0.06 -1.3,-0.22 -0.9,0.46 -1.24,-0.21 -4.87,0.13 -0.07,1.61 z",BG:"m 539.03,325.81 0.81,1.6 1.08,-0.29 2.16,0.61 4.12,0.2 1.39,-0.99 3.3,-0.9 2.04,1.41 1.65,0.41 -1.46,1.59 -1.02,2.73 0.9,2.16 -2.41,-0.51 -2.86,1.18 -0.03,1.86 -2.55,0.35 -1.97,-1.3 -2.25,1.03 -2.07,-0.11 -0.2,-2.47 -1.41,-1.21 0.47,-0.54 -0.31,-0.45 0.47,-1.21 1.07,-1.19 -1.36,-1.66 -0.25,-1.42 z",BI:"m 557.77,476.18 -0.18,-3.37 -0.71,-1.26 1.71,0.22 0.86,-1.59 1.49,0.18 0.16,1.1 0.6,0.63 0.03,0.91 -0.69,0.58 -1.1,1.46 -1.01,1.01 z",BJ:"m 483.05,446.17 -2.32,0.33 -0.69,-1.94 0.13,-6.46 -0.57,-0.58 -0.1,-1.39 -0.98,-0.99 -0.85,-0.83 0.36,-1.5 0.96,-0.32 0.57,-1.24 1.37,-0.26 0.61,-0.86 0.94,-0.83 1.01,-0.01 2.14,1.64 -0.11,0.95 0.63,1.68 -0.55,1.14 0.29,0.76 -1.36,1.75 -0.86,0.87 -0.53,1.77 0.07,1.79 z",BN:"m 795.71,451.02 1.11,-1.05 2.39,-1.53 -0.13,1.38 -0.16,1.78 -1.34,-0.09 -0.59,0.95 z",BO:"m 299.29,526.6 -3.2,-0.13 -1.09,2.43 -1.65,-2.18 -3.67,-0.73 -2.33,2.72 -2.03,0.41 -1.1,-4.15 -1.5,-3.34 0.88,-2.87 -1.47,-1.25 -0.37,-2.12 -1.38,-2 1.77,-3.14 -1.21,-2.44 0.65,-0.97 -0.51,-1.07 1.1,-1.44 0.06,-2.44 0.13,-2.02 0.61,-0.96 -2.43,-4.58 2.09,0.24 1.44,-0.07 0.63,-0.85 2.45,-1.15 1.47,-1.06 3.67,-0.48 -0.29,2.12 0.34,1.09 -0.23,1.9 3.05,2.55 3.14,0.47 1.1,1.07 1.9,0.57 1.16,0.83 1.76,-0.03 1.63,0.85 0.12,1.66 0.55,0.84 0.04,1.25 -0.82,0.04 1.08,3.37 5.37,0.12 -0.41,1.68 0.3,1.15 1.53,0.82 0.67,1.82 -0.5,2.32 -0.77,1.29 0.27,1.69 -0.88,0.61 -0.04,-0.91 -2.62,-1.51 -2.6,-0.05 -4.89,0.86 -1.34,2.62 -0.07,1.6 -1.11,3.59 z",BR:"m 313.93,552.04 3.74,-4.37 3.17,-3.08 1.88,-1.28 2.36,-1.73 0.06,-2.49 -1.41,-1.79 -1.39,0.59 0.55,-1.78 0.38,-1.82 0,-1.68 -1.01,-0.55 -1.05,0.49 -1.04,-0.13 -0.33,-1.18 -0.26,-2.77 -0.53,-0.9 -1.89,-0.82 -1.14,0.59 -2.96,-0.58 0.18,-4.06 -0.83,-1.66 0.88,-0.61 -0.27,-1.69 0.77,-1.29 0.5,-2.32 -0.67,-1.82 -1.53,-0.82 -0.3,-1.15 0.41,-1.68 -5.37,-0.12 -1.08,-3.37 0.82,-0.04 -0.04,-1.25 -0.55,-0.84 -0.12,-1.66 -1.63,-0.85 -1.76,0.03 -1.16,-0.83 -1.9,-0.57 -1.1,-1.07 -3.14,-0.47 -3.05,-2.55 0.23,-1.9 -0.34,-1.09 0.29,-2.12 -3.67,0.48 -1.47,1.06 -2.45,1.15 -0.63,0.85 -1.44,0.07 -2.09,-0.24 -1.58,0.49 -1.28,-0.33 0.19,-4.3 -2.3,1.66 -2.47,-0.07 -1.06,-1.51 -1.86,-0.16 0.59,-1.21 -1.56,-1.72 -1.17,-2.53 0.74,-0.51 0,-1.19 1.7,-0.81 -0.28,-1.51 0.71,-0.98 0.21,-1.3 3.2,-1.91 2.3,-0.53 0.37,-0.42 2.53,0.13 1.26,-7.65 0.07,-1.21 -0.44,-1.59 -1.24,-1.02 0.01,-2.02 1.58,-0.46 0.56,0.29 0.09,-1.07 -1.64,-0.29 -0.03,-1.74 5.46,0.06 0.93,-0.96 0.78,0.88 0.54,1.65 0.53,-0.35 1.55,1.48 2.18,-0.18 0.54,-0.86 2.08,-0.65 1.16,-0.45 0.32,-1.18 2.01,-0.8 -0.16,-0.58 -2.37,-0.24 -0.39,-1.76 0.11,-1.87 -1.25,-0.72 0.52,-0.26 2.08,0.36 2.23,0.7 0.81,-0.66 2.01,-0.44 3.14,-1.04 1.03,-1.07 -0.38,-0.79 1.46,-0.12 0.66,0.64 -0.37,1.23 0.96,0.42 0.65,1.3 -0.78,0.98 -0.45,2.38 0.72,1.41 0.2,1.29 1.73,1.3 1.38,0.14 0.31,-0.54 0.88,-0.12 1.27,-0.49 0.91,-0.74 1.55,0.23 0.68,-0.1 1.53,0.23 0.25,-0.57 -0.47,-0.55 0.28,-0.81 1.13,0.25 1.33,-0.29 1.6,0.59 1.23,0.58 0.87,-0.76 0.62,0.12 0.39,0.79 1.34,-0.2 1.07,-1.06 0.86,-2.06 1.66,-2.55 0.96,-0.13 0.69,1.54 1.57,4.88 1.5,0.46 0.08,1.92 -2.11,2.29 0.87,0.84 4.96,0.44 0.1,2.79 2.13,-1.83 3.53,1.01 4.65,1.7 1.37,1.63 -0.46,1.54 3.26,-0.86 5.46,1.48 4.19,-0.11 4.14,2.31 3.58,3.13 2.16,0.8 2.4,0.12 1.02,0.88 0.95,3.57 0.47,1.69 -1.12,4.66 -1.43,1.84 -3.95,3.94 -1.79,3.21 -2.07,2.48 -0.7,0.06 -0.79,2.1 0.2,5.4 -0.78,4.48 -0.3,1.93 -0.88,1.15 -0.5,3.94 -2.84,3.88 -0.48,3.09 -2.27,1.31 -0.66,1.81 -3.04,-0.01 -4.41,1.17 -1.98,1.35 -3.14,0.89 -3.3,2.44 -2.37,3.06 -0.41,2.32 0.47,1.73 -0.53,3.18 -0.63,1.55 -1.96,1.75 -3.11,5.68 -2.47,2.59 -1.91,1.54 -1.27,3.16 -1.86,1.91 -0.78,-1.9 1.24,-1.57 -1.62,-2.25 -2.2,-1.82 -2.89,-2.08 -1.04,0.09 -2.81,-2.5 z",BS:"m 258.11,395.45 -0.69,0.15 -0.71,-1.76 -1.05,-0.89 0.61,-1.95 0.84,0.12 0.98,2.55 0.02,1.78 z m -0.8,-8.69 -3.06,0.5 -0.2,-1.15 1.32,-0.25 1.85,0.09 0.09,0.81 z m 2.3,-0.03 -0.48,2.21 -0.52,-0.4 0.05,-1.63 -1.26,-1.23 -0.01,-0.36 2.22,1.41 z",BT:"m 732.61,383.03 1.14,1 -0.2,1.93 -2.29,0.09 -2.36,-0.21 -1.77,0.49 -2.55,-1.19 -0.05,-0.63 1.85,-2.34 1.51,-0.8 2.01,0.73 1.48,0.08 z",BW:"m 547.42,516.2 0.56,0.52 0.89,1.71 3.17,3.25 1.2,0.32 0.01,1.05 0.82,1.9 2.17,0.46 1.79,1.36 -3.97,2.22 -2.52,2.26 -0.93,2.03 -0.84,1.15 -1.53,0.25 -0.49,1.47 -0.29,0.96 -1.79,0.72 -2.28,-0.15 -1.34,-0.86 -1.18,-0.38 -1.37,0.72 -0.69,1.48 -1.33,0.93 -1.4,1.39 -2.01,0.32 -0.62,-1.09 0.26,-1.9 -1.67,-2.93 -0.75,-0.46 0,-8.86 2.76,-0.11 0.08,-10.57 2.09,-0.09 4.32,-1.03 1.08,1.21 1.78,-1.15 0.86,-0.01 1.58,-0.66 0.5,0.22 z",BY:"m 541.35,284.32 2.71,0.04 3.04,-1.8 0.65,-2.72 2.3,-1.57 -0.26,-2.2 1.7,-0.84 3.02,-1.93 2.95,1.26 0.4,1.23 1.47,-0.59 2.74,1.18 0.27,2.31 -0.6,1.32 1.76,3.15 1.14,0.87 -0.17,0.86 1.89,0.83 0.81,1.25 -1.09,1.02 -2.26,-0.16 -0.54,0.44 0.66,1.54 0.69,2.93 -2.41,0.27 -0.86,1 -0.19,2.26 -1.11,-0.43 -2.53,0.22 -0.74,-1.05 -1.05,0.78 -1.05,-0.65 -2.21,-0.09 -3.13,-1.08 -2.83,-0.36 -2.17,0.1 -1.54,1.23 -1.34,0.17 -0.05,-2.01 -0.87,-2.12 1.68,-0.94 0.02,-1.85 -0.78,-1.78 z",BZ:"m 225.56,413.21 -0.02,-0.43 0.34,-0.14 0.51,0.35 1,-1.77 0.53,-0.04 0.01,0.43 0.53,0.01 -0.04,0.8 -0.46,1.27 0.25,0.45 -0.29,1.05 0.17,0.27 -0.32,1.47 -0.55,0.78 -0.51,0.09 -0.56,1 -0.83,0 0.22,-3.28 z",CA:"m 199.18,96.48 -0.22,-5.9 3.63,0.58 1.63,0.96 3.35,4.92 -0.76,4.97 -4.15,2.77 -2.28,-3.12 -1.2,-5.18 z m 13.21,12.65 0.33,-1.49 -1.97,-2.45 -5.65,-0.19 0.75,3.68 5.25,0.83 1.29,-0.38 z m 36.35,46.95 3.08,5.1 0.81,0.57 3.07,-1.27 3.02,0.2 2.98,0.28 -0.25,-2.64 -4.84,-5.38 -6.42,-1.08 -1.35,0.67 -0.1,3.55 z m -65.43,-62.7 -2.71,4.19 6.24,0.52 4.61,4.44 4.58,1.5 -1.09,-5.68 -2.14,-6.73 -7.58,-5.35 -5.5,-2.04 0.2,5.69 3.39,3.46 z m 25.9,-10.24 5.13,-0.12 -2.22,4 -0.04,5.3 3.01,5.76 5.81,1.77 4.96,-0.99 5.18,-10.73 3.85,-4.45 -3.38,-4.97 -2.21,-10.65 -4.6,-3.19 -4.72,-3.68 -3.58,-9.56 -6.52,0.94 1.23,4.15 -2.87,1.25 -1.94,5.32 -1.94,7.46 1.78,7.26 3.07,5.13 z m -63.75,53.38 3.92,1.95 12.67,-1.3 -5.82,4.77 0.36,3.43 4.26,-0.24 7.07,-4.58 9.5,-1.67 1.71,-5.22 -0.49,-5.57 -2.94,-0.5 -2.5,1.93 -1.1,-4.13 -0.95,-5.7 -2.9,-1.42 -2.57,4.41 4.01,11.05 -4.9,-0.85 -4.98,-6.79 -7.89,-4 -2.64,3.32 -3.82,11.11 z m 22.56,-42.06 -3.65,-2.9 -1.5,-0.66 -2.88,4.28 -0.05,2 4.66,0.01 3.42,-2.73 z m -1.46,12.35 0.93,-3.99 -3.95,-2.12 -4.09,1.39 -2.27,4.26 4.16,4.21 5.22,-3.75 z m 29.09,33.24 4.62,-1.11 1.28,-8.25 -0.09,-5.95 -2.14,-5.56 -0.22,1.6 -3.94,-0.7 -4.22,4.09 -3.02,-0.37 0.18,8.92 4.6,-0.87 -0.06,6.47 3.01,1.73 z m -3.28,45.61 -5.06,-3.93 -4.71,-4.21 -0.87,-6.18 -1.76,-8.92 -3.14,-3.84 -2.79,-1.55 -2.47,1.42 1.99,9.59 -1.41,3.73 -2.29,-8.98 -2.56,-3.11 -3.17,4.81 -3.9,-4.76 -6.24,2.87 1.4,-4.46 -2.87,-1.87 -7.51,5.84 -1.95,3.71 -2.35,6.77 4.9,2.32 4.33,-0.12 -6.5,3.46 1.48,3.13 3.98,0.17 5.99,-0.67 5.42,1.96 -3.66,1.44 -3.95,-0.37 -4.33,1.41 -1.87,0.87 3.45,6.35 2.49,-0.88 3.83,2.15 1.52,3.65 4.99,-0.73 7.1,-1.16 5.26,-2.65 3.26,-0.48 4.82,2.12 5.07,1.22 0.94,-2.86 -1.79,-3.05 4.6,-0.64 0.33,-3.57 z m 7.74,-0.98 -1.96,3.54 -2.47,2.49 3.83,3.54 2.28,-0.85 3.78,2.36 1.74,-2.73 -1.71,-3.03 -0.84,-1.53 -1.68,-1.46 -2.97,-2.33 z m -17.61,-29.45 -2.13,-2.17 -3.76,0.4 -0.95,1.38 4.37,6.75 2.47,-6.36 z m 28.69,13.17 3.01,-6.93 3.34,-1.85 4.19,-8.74 -5.36,-2.47 -5.84,-0.36 -2.78,2.77 -1.47,4.23 -0.04,4.82 1.75,8.19 3.2,0.34 z m 17.15,-23 5.76,-0.18 8.04,-1.61 3.59,1.28 4.18,-2.26 1.75,-2.84 -0.63,-4.52 -3,-4.23 -4.56,-0.8 -5.71,0.97 -4.46,2.44 -4.09,-0.94 -3.78,-0.5 -1.78,-2.7 -3.22,-2.61 0.64,-4.43 -2.42,-3.98 -5.52,0.03 -3.11,-3.99 -5.78,-0.8 -1.06,5.1 3.25,3.74 5.8,1.45 2.81,5.09 0.34,5.6 0.97,5.99 7.45,3.42 4.54,1.28 z m -89.02,-18.27 5.21,-5.05 2.62,-0.59 2.16,-4.23 0.38,-9.77 -3.85,1.91 -4.3,-0.18 -5.76,8.19 -4.76,8.98 3.8,2.51 4.5,-1.77 z m 72.18,16.17 1.53,-4.14 -1.02,-3.46 -2.45,-3.92 -4.03,3.02 -1.49,4.92 3.4,2.79 4.06,0.79 z m -8.31,11.44 -0.73,-2.88 -5,1.26 -3.34,-2.11 -3.32,4.8 3.09,6.28 -5.72,-1.17 -0.06,3.01 6.97,7.05 1.94,3.38 2.7,0.73 4.6,-3.41 0.5,-8.21 -4.24,-4.07 2.61,-4.66 z m -73.99,153.74 -1.16,-2.34 -2.8,-1.77 -1.39,-2.05 -0.95,-1.5 -2.64,-0.46 -1.72,-0.67 -2.94,-0.96 -0.24,1.02 1.08,2.38 2.89,0.78 0.5,1.23 2.51,1.5 0.84,1.51 4.6,1.92 1.42,-0.59 z m 121.7,-77.63 -2,-2.11 -2.06,0.5 -0.25,-3.06 -3.21,-2.04 -3.07,-2.27 -1.63,-1.75 -1.43,1.03 -0.52,-2.96 -2.03,-0.55 -0.96,6.13 -0.36,5.11 -2.44,3.14 3.8,-0.6 0.96,3.65 3.99,-3.23 2.78,-3.38 1.57,2.86 4.36,1.51 2.5,-1.98 z m -120.53,-52.55 7.38,-4.18 v -3.87 l 3.48,-6.41 6.88,-6.69 3.52,-2.47 -3.01,-4.2 -2.72,-2.95 -7.16,-0.57 -4,-2.16 -9.48,1.63 2.74,6.23 -2.43,6.43 -1.94,6.87 -1.2,3.86 6.47,4.69 1.47,3.79 z m 134.24,27.31 0.32,-1.01 -0.03,-3.17 -2.19,-2.08 -2.57,1.05 -1.19,4.17 0.7,3.56 3.14,-0.36 1.82,-2.16 z m 23.82,7.54 4.41,6.6 3.45,2.85 4.92,-7.87 0.87,-4.93 -4.41,-0.47 -4.03,-6.7 -4.45,-1.64 -6.6,-4.97 5.15,-3.63 -2.65,-7.54 -2.44,-3.35 -6.77,-3.35 -2.92,-5.55 -5.21,1.99 -0.36,-3.86 -3.86,-4.32 -6.22,-4.71 -2.65,3.71 -5.55,2.66 0.42,-6.06 -4.81,-10.05 -7.11,4.06 -2.59,7.7 -2.21,-5.92 2.06,-6.37 -7.24,2.65 -2.88,3.99 -2.15,8.42 0.89,9.05 3.98,0.04 -2.93,3.92 2.33,2.96 4.55,1.25 5.93,2.42 10.2,1.82 5.08,-1.04 1.5,-2.42 2.21,2.79 2.47,0.46 2.97,4.96 -1.8,1.98 5.68,2.63 4.29,3.68 1.08,2.55 0.77,3.24 -3.63,6.93 -0.98,3.44 0.94,2.42 -5.77,0.86 -5.27,0.12 -1.85,4.87 2.37,2.23 8.11,-1.03 -0.04,-1.89 4.08,3.15 4.18,3.28 -0.98,1.77 3.4,3.02 6.02,3.53 7.6,2.39 -0.46,-2.09 -2.92,-3.67 -3.96,-5.37 7.03,5 3.54,1.66 0.97,-4.44 -1.82,-6.3 -1.16,-1.73 -3.81,-3.03 -2.95,-3.91 0.35,-3.94 3.64,-0.9 z M 222.6,51.59 l 2.34,7.29 4.96,5.88 9.81,-1.09 6.31,1.97 -4.38,6.05 -2.21,-1.78 -7.66,-0.71 1.19,8.31 3.96,6.04 -0.8,5.2 -4.97,3.46 -2.27,5.47 4.55,2.65 3.82,8.55 -7.5,-5.7 -1.71,0.94 1.38,9.38 -5.18,2.83 0.35,5.85 5.3,0.63 4.17,1.44 8.24,-1.84 7.33,3.27 7.49,-7.19 -0.06,-3.02 -4.79,0.48 -0.39,-2.84 3.92,-3.83 1.33,-5.15 4.33,-3.83 2.66,-4.76 -2.32,-7.1 1.94,-2.65 -3.86,-1.89 8.49,-1.63 1.79,-3.15 5.78,-2.6 4.8,-13.47 4.57,-4.94 6.62,-11.12 -6.1,0.1 2.54,-4.3 6.78,-3.99 6.84,-8.9 0.12,-5.73 -5.13,-6.04 -6.02,-2.93 -7.49,-1.82 -6.07,-1.49 -6.07,-1.5 -8.1,3.98 -1.49,-2.53 -8.57,0.98 -5.03,2.57 -3.7,3.65 -2.13,11.74 -3.06,-6.01 -3.48,-1.14 -4.12,7.97 -5.5,3.35 -3.27,0.66 -4.17,3.84 0.61,6.65 3.28,5.49 z m 74.4,265 -0.98,-1.98 -1.06,1.26 0.7,1.36 3.56,1.71 1.04,-0.26 1.38,-1.66 -2.6,0.11 -2.04,-0.54 z m -57,-77.86 0.61,1.63 1.98,0.14 3.28,-3.34 0.06,-1.19 -3.85,-0.06 -2.08,2.82 z m 62.13,66.44 -2.87,-1.8 -3.69,-1.09 -0.97,0.37 2.61,2.04 3.63,1.34 1.36,-0.08 -0.07,-0.78 z m 24.88,4.79 -0.36,-2.24 -1.96,0.72 0.87,-3.11 -2.8,-1.32 -1.29,1.05 -2.49,-1.18 0.98,-1.51 -1.88,-0.93 -1.83,1.47 1.86,-3.82 1.5,-2.8 0.54,-1.22 -1.3,-0.2 -2.43,1.55 -1.74,2.53 -2.9,6.92 -2.35,2.56 1.22,1.14 -1.75,1.47 0.43,1.23 5.44,0.13 3.01,-0.25 2.69,1.01 -1.98,1.93 1.67,0.14 3.25,-3.58 0.78,0.53 -0.61,3.37 1.84,0.77 1.27,-0.15 1.18,-3.61 -0.86,-2.6 z m -21.19,4.76 -2.81,4.56 -4.63,0.58 -3.64,-2.01 -0.92,-3.07 -0.89,-4.46 2.65,-2.83 -2.48,-2.09 -4.19,0.43 -5.88,3.53 -4.5,5.45 -2.38,0.67 3.23,-3.8 4.04,-5.57 3.57,-1.9 2.35,-3.11 2.9,-0.3 4.21,0.03 6,0.92 4.74,-0.71 3.53,-3.62 4.62,-1.59 2.01,-1.58 2.04,-1.71 -0.2,-5.19 -1.13,-1.77 -2.18,-0.63 -1.11,-4.05 -1.8,-1.55 -4.47,-1.26 -2.52,-2.82 -3.73,-2.83 1.13,-3.2 -3.1,-6.26 -3.65,-6.89 -2.18,-4.98 -1.86,2.61 -2.68,6.05 -4.06,2.97 -2.03,-3.16 -2.56,-0.85 -0.93,-6.99 0.08,-4.8 -5,-0.44 -0.85,-2.27 -3.45,-3.44 -2.61,-2.04 -2.32,1.58 -2.88,-0.58 -4.81,-1.65 -1.95,1.4 0.94,9.18 1.22,5.12 -3.31,5.75 3.41,4.02 1.9,4.44 0.23,3.42 -1.55,3.5 -3.18,3.46 -4.49,2.28 1.98,2.53 1.46,7.4 -1.52,4.68 -2.16,1.46 -4.17,-4.28 -2.03,-5.17 -0.87,-4.76 0.46,-4.19 -3.05,-0.47 -4.63,-0.28 -2.97,-2.08 -3.51,-1.37 -2.01,-2.38 -2.8,-1.94 -5.21,-2.23 -3.92,1.02 -1.31,-3.95 -1.26,-4.99 -4.12,-0.9 0.15,-6.41 1.09,-4.48 3.04,-6.6 3.43,-4.9 3.26,-0.77 0.19,-4.05 2.21,-2.68 4.01,-0.42 3.25,-4.39 0.82,-2.9 2.7,-5.73 0.84,-3.5 2.9,2.11 3.9,-1.08 5.49,-4.96 0.36,-3.54 -1.98,-3.98 2.09,-4.06 -0.17,-3.87 -3.76,-3.95 -4.14,-1.19 -3.98,-0.62 -0.15,8.71 -2.04,6.56 -2.93,5.3 -2.71,-4.95 0.84,-5.61 -3.35,-5.02 -3.75,6.09 0.01,-7.99 -5.21,-1.63 2.49,-4.01 -3.81,-9.59 -2.84,-3.91 -3.7,-1.44 -3.32,6.43 -0.22,9.34 3.27,3.29 3,4.91 -1.27,7.71 -2.26,-0.2 -1.78,5.88 0.02,-7 -4.34,-2.58 -2.49,1.33 0.32,4.67 -4.09,-0.18 -4.35,1.17 -4.95,-3.35 -3.13,0.6 -2.82,-4.11 -2.26,-1.84 -2.24,0.77 -3.41,0.35 -1.81,2.61 2.86,3.19 -3.05,3.72 -2.99,-4.42 -2.39,1.3 -7.57,0.87 -5.07,-1.59 3.94,-3.74 -3.78,-3.9 -2.75,0.5 -3.86,-1.32 -6.56,-2.89 -4.29,-3.37 -3.4,-0.47 -1.06,2.36 -3.44,1.31 -0.38,-6.15 -3.73,5.5 -4.74,-7.32 -1.94,-0.89 -0.63,3.91 -2.09,1.9 -1.93,-3.39 -4.59,2.05 -4.2,3.55 -4.17,-0.98 -3.4,2.5 -2.46,3.28 -2.92,-0.72 -4.41,-3.8 -5.23,-1.94 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.56,2.35 0.06,2.48 3.39,3.45 0.49,3.76 3.59,1.96 -0.4,2.79 1.56,3.96 5.08,1.82 2,1.89 5.43,4.23 0.38,0.01 h 7.96 8.32 2.76 8.55 8.27 8.41 l 8.42,0 9.53,0 9.59,0 5.8,0 0.01,-1.64 0.95,-0.02 0.5,2.35 0.87,0.72 1.96,0.26 2.86,0.67 2.72,1.3 2.27,-0.55 3.45,1.09 1.14,-1.66 1.59,-0.66 0.62,-1.03 0.63,-0.55 2.61,0.86 1.93,0.1 0.67,0.57 0.94,2.38 3.15,0.63 -0.49,1.18 1.11,1.21 -0.48,1.56 1.18,0.51 -0.59,1.37 0.75,0.13 0.53,-0.6 0.55,0.9 2.1,0.5 2.13,0.04 2.27,0.41 2.51,0.78 0.91,1.26 1.82,3.04 -0.9,1.3 -2.28,-0.54 -1.42,-2.44 0.36,2.49 -1.34,2.17 0.15,1.84 -0.23,1.07 -1.81,1.27 -1.32,2.09 -0.62,1.32 1.54,0.24 2.08,-1.2 1.23,-1.06 0.83,-0.17 1.54,0.38 0.75,-0.59 1.37,-0.48 2.44,-0.47 v 0 l 0,0 -0.25,-1.15 -0.13,0.04 -0.86,0.2 -1.12,-0.36 0.84,-1.32 0.85,-0.46 1.98,-0.56 2.37,-0.53 1.24,0.73 0.78,-0.85 0.89,-0.54 0.6,0.29 0.03,0.06 2.87,-2.73 1.27,-0.73 4.26,-0.03 5.17,0 0.28,-0.98 0.9,-0.2 1.19,-0.62 1,-1.82 0.86,-3.15 2.14,-3.1 0.93,1.08 1.88,-0.7 1.25,1.19 0,5.52 1.83,2.25 3.12,-0.48 4.49,-0.13 -4.87,3.26 0.11,3.29 2.13,0.28 3.13,-2.79 2.78,-1.58 6.21,-2.35 3.47,-2.62 -1.81,-1.46 -0.29,-2.92 z m -53.66,-71.1 1.1,-3.12 -0.71,-1.23 -1.15,-0.13 -1.08,1.8 -0.13,0.41 0.74,1.77 1.23,0.5 z m -142.66,36.43 0,0 1.56,-2.35 -1.56,2.35 z m -3.4,3.29 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z",CD:"m 561.96,453.86 -0.17,3.26 1.12,0.37 -0.9,0.99 -1.08,0.74 -1.07,1.46 -0.59,1.29 -0.16,2.24 -0.65,1.06 -0.02,2.1 -0.81,0.78 -0.1,1.66 -0.39,0.21 -0.26,1.53 0.71,1.26 0.18,3.37 0.5,2.57 -0.28,1.46 0.56,1.62 1.63,1.57 1.51,3.55 -1.1,-0.29 -3.77,0.48 -0.75,0.33 -0.8,1.8 0.63,1.25 -0.5,3.35 -0.35,2.85 0.76,0.51 1.96,1.1 0.77,-0.51 0.24,3.08 -2.15,-0.03 -1.15,-1.57 -1.03,-1.22 -2.15,-0.4 -0.63,-1.49 -1.72,0.9 -2.24,-0.4 -0.94,-1.29 -1.78,-0.26 -1.31,0.07 -0.16,-0.88 -0.97,-0.07 -1.28,-0.17 -1.73,0.42 -1.22,-0.07 -0.7,0.26 0.15,-3.37 -0.93,-1.05 -0.21,-1.73 0.41,-1.7 -0.56,-1.09 -0.05,-1.76 -3.41,0.02 0.25,-1.01 -1.43,0.01 -0.15,0.49 -1.74,0.11 -0.71,1.63 -0.42,0.71 -1.55,-0.4 -0.92,0.4 -1.86,0.22 -1.07,-1.47 -0.64,-0.91 -0.81,-1.68 -0.69,-2.09 -8.27,-0.03 -0.99,0.33 -0.81,-0.05 -1.16,0.38 -0.39,-0.87 0.71,-0.3 0.09,-1.22 0.46,-0.72 1.02,-0.58 0.74,0.28 0.96,-1.07 1.52,0.03 0.18,0.79 1.05,0.5 1.65,-1.76 1.63,-1.36 0.71,-0.89 -0.09,-2.3 1.22,-2.71 1.28,-1.43 1.85,-1.34 0.32,-0.89 0.07,-1.02 0.46,-0.97 -0.15,-1.58 0.35,-2.47 0.55,-1.74 0.84,-1.49 0.16,-1.68 0.25,-1.95 1.1,-1.42 1.5,-0.9 2.31,0.95 1.78,1.03 2.05,0.28 2.09,0.54 0.84,-1.68 0.39,-0.22 1.27,0.28 3.13,-1.39 1.1,0.59 0.91,-0.08 0.42,-0.68 1.04,-0.24 2.11,0.29 1.8,0.06 0.93,-0.29 1.69,2.31 1.26,0.33 0.75,-0.47 1.3,0.19 1.56,-0.59 0.67,1.19 z",CF:"m 518.34,442.91 2.32,-0.22 0.52,-0.72 0.46,0.06 0.7,0.63 3.53,-1.07 1.19,-1.1 1.47,-0.99 -0.28,-0.99 0.79,-0.26 2.71,0.18 2.64,-1.31 2.02,-3.09 1.43,-1.14 1.77,-0.49 0.32,1.22 1.62,1.77 0,1.15 -0.45,1.18 0.18,0.87 0.97,0.81 2.14,1.24 1.53,1.13 0.03,0.92 1.88,1.46 1.17,1.21 0.71,1.68 2.1,1.11 0.45,0.89 -0.93,0.29 -1.8,-0.06 -2.11,-0.29 -1.04,0.24 -0.42,0.68 -0.91,0.08 -1.1,-0.59 -3.13,1.39 -1.27,-0.28 -0.39,0.22 -0.84,1.68 -2.09,-0.54 -2.05,-0.28 -1.78,-1.03 -2.31,-0.95 -1.5,0.9 -1.1,1.42 -0.25,1.95 -1.8,-0.16 -1.9,-0.47 -1.67,1.48 -1.47,2.6 -0.3,-0.81 -0.12,-1.27 -1.28,-0.9 -1.04,-1.44 -0.24,-1 -1.32,-1.46 0.22,-0.83 -0.28,-1.18 0.22,-2.17 0.67,-0.51 z",CG:"m 511.94,476.97 -1.05,-0.96 -0.85,0.47 -1.13,1.2 -2.3,-2.95 2.13,-1.54 -1.05,-1.85 0.96,-0.7 1.89,-0.34 0.22,-1.24 1.5,1.34 2.48,0.12 0.86,-1.32 0.35,-1.85 -0.31,-2.18 -1.32,-1.64 1.21,-3.23 -0.7,-0.55 -2.08,0.22 -0.79,-1.43 0.21,-1.22 3.53,0.11 2.27,0.73 2.23,0.66 0.2,-1.5 1.47,-2.6 1.67,-1.48 1.9,0.47 1.8,0.16 -0.16,1.68 -0.84,1.49 -0.55,1.74 -0.35,2.47 0.15,1.58 -0.46,0.97 -0.07,1.02 -0.32,0.89 -1.85,1.34 -1.28,1.43 -1.22,2.71 0.09,2.3 -0.71,0.89 -1.63,1.36 -1.65,1.76 -1.05,-0.5 -0.18,-0.79 -1.52,-0.03 -0.96,1.07 z",CH:"m 502.4,312.59 0.11,0.74 -0.43,1.01 1.27,0.74 1.43,0.11 -0.22,1.67 -1.23,0.69 -2.08,-0.51 -0.61,1.63 -1.33,0.13 -0.49,-0.64 -1.57,1.36 -1.35,0.19 -1.21,-0.86 -0.96,-1.77 -1.34,0.64 0.04,-1.84 2.05,-2.31 -0.09,-1.05 1.28,0.39 0.77,-0.71 2.38,0.03 0.58,-0.9 z",CI:"m 467.49,449.71 -1.27,0.03 -1.96,-0.55 -1.79,0.03 -3.33,0.49 -1.94,0.81 -2.78,1.02 -0.54,-0.07 0.21,-2.3 0.27,-0.35 -0.08,-1.11 -1.19,-1.17 -0.89,-0.19 -0.82,-0.77 0.61,-1.24 -0.28,-1.36 0.13,-0.82 0.45,0 0.16,-1.23 -0.22,-0.54 0.27,-0.39 1.04,-0.34 -0.69,-2.26 -0.65,-1.16 0.23,-0.97 0.56,-0.21 0.36,-0.26 0.78,0.42 2.16,0.03 0.52,-0.83 0.48,0.06 0.81,-0.32 0.44,1.21 0.65,-0.36 1.16,-0.42 1.26,0.62 0.49,0.93 1.26,0.6 0.98,-0.71 1.32,-0.11 1.92,0.73 0.74,4.01 -1.18,2.36 -0.73,3.17 1.21,2.41 z",CL:"m 283.06,636.98 0,10.57 3,0 1.69,0.13 -0.93,1.98 -2.4,1.53 -1.38,-0.16 -1.66,-0.4 -2.04,-1.48 -2.94,-0.71 -3.53,-2.71 -2.86,-2.57 -3.86,-5.25 2.31,0.97 3.94,3.13 3.72,1.7 1.45,-2.17 0.91,-3.2 2.58,-1.91 2,0.55 z m 1.16,-112.01 1.1,4.15 2.02,-0.41 0.34,0.76 -0.96,3.16 -3.05,1.51 0.09,5.14 -0.59,1 0.84,1.23 -1.98,1.95 -1.84,2.96 -1,2.9 0.27,3.11 -1.73,3.34 1.29,5.69 0.73,0.61 -0.01,3.09 -1.6,3.31 0.06,2.87 -2.12,2.26 0.01,3.22 0.85,3.46 -1.68,1.3 -0.75,3.22 -0.66,3.75 0.47,4.54 -1.13,0.77 0.65,4.4 1.27,1.46 -0.92,1.63 1.3,0.78 0.3,1.48 -1.22,0.75 0.3,2.33 -1.02,5.35 -1.49,3.52 0.33,2.11 -0.89,2.68 -2.15,1.88 0.25,4.6 0.99,1.6 1.87,-0.28 -0.05,3.33 1.16,2.63 6.78,0.61 2.6,0.71 -2.49,-0.03 -1.35,1.13 -2.53,1.67 -0.45,4.38 -1.19,0.11 -3.16,-1.54 -3.21,-3.25 0,0 -3.49,-2.63 -0.88,-2.87 0.79,-2.62 -1.41,-2.94 -0.36,-7.34 1.19,-4.03 2.96,-3.19 -4.26,-1.19 2.67,-3.57 0.95,-6.56 3.12,1.37 1.46,-7.97 -1.88,-1 -0.88,4.75 -1.77,-0.54 0.88,-5.42 0.96,-6.84 1.29,-2.48 -0.81,-3.5 -0.23,-3.98 1.18,-0.11 1.72,-5.6 1.94,-5.43 1.19,-4.97 -0.65,-4.91 0.84,-2.67 -0.34,-3.96 1.64,-3.87 0.51,-6.04 0.9,-6.37 0.88,-6.75 -0.21,-4.87 -0.58,-4.15 1.44,-0.75 0.75,-1.5 1.37,1.99 0.37,2.12 1.47,1.25 -0.88,2.87 1.51,3.34 z",CM:"m 512.17,457.32 -0.35,-0.15 -1.66,0.36 -1.71,-0.38 -1.33,0.19 -4.56,-0.07 0.41,-2.2 -1.1,-1.84 -1.28,-0.48 -0.57,-1.25 -0.72,-0.4 0.04,-0.77 0.72,-1.98 1.33,-2.7 0.81,-0.03 1.67,-1.64 1.07,-0.04 1.57,1.15 1.93,-0.95 0.26,-1.16 0.63,-1.14 0.43,-1.42 1.5,-1.16 0.57,-1.97 0.59,-0.63 0.4,-1.47 0.74,-1.81 2.36,-2.2 0.15,-0.95 0.31,-0.51 -1.11,-1.14 0.09,-0.9 0.79,-0.17 1.11,1.83 0.19,1.89 -0.1,1.89 1.52,2.57 -1.56,-0.03 -0.79,0.2 -1.28,-0.28 -0.61,1.33 1.65,1.65 1.22,0.48 0.4,1.17 0.88,1.93 -0.44,0.77 -1.41,2.84 -0.67,0.51 -0.22,2.17 0.28,1.18 -0.22,0.83 1.32,1.46 0.24,1 1.04,1.44 1.28,0.9 0.12,1.27 0.3,0.81 -0.2,1.5 -2.23,-0.66 -2.27,-0.73 z",CN:"m 784.88,410.66 -2.42,1.41 -2.3,-0.91 -0.08,-2.53 1.38,-1.34 3.06,-0.83 1.61,0.07 0.63,1.13 -1.23,1.3 -0.65,1.7 z m 48.56,-107.52 4.88,1.38 3.32,3.03 1.13,3.95 4.26,0 2.43,-1.65 4.63,-1.24 -1.47,3.76 -1.09,1.51 -0.96,4.46 -1.89,3.89 -3.4,-0.7 -2.41,1.4 0.74,3.36 -0.4,4.55 -1.43,0.1 0.02,1.93 -1.81,-2.24 -1.11,2.13 -4.33,1.62 0.44,1.97 -2.42,-0.14 -1.33,-1.17 -1.93,2.64 -3.09,1.98 -2.28,2.35 -3.92,1.06 -2.06,1.69 -3.02,0.98 1.49,-1.67 -0.59,-1.41 2.22,-2.45 -1.48,-1.93 -2.44,1.3 -3.17,2.54 -1.73,2.34 -2.75,0.17 -1.43,1.68 1.48,2.41 2.29,0.58 0.09,1.58 2.22,1.02 3.14,-2.51 2.49,1.37 1.81,0.09 0.46,1.84 -3.97,0.97 -1.31,1.87 -2.73,1.73 -1.44,2.39 3.02,1.86 1.1,3.31 1.71,3.05 1.9,2.53 -0.05,2.43 -1.76,0.89 0.67,1.73 1.65,1 -0.43,2.61 -0.71,2.52 -1.57,0.28 -2.05,3.41 -2.27,4.09 -2.6,3.68 -3.86,2.82 -3.9,2.55 -3.16,0.35 -1.71,1.34 -0.97,-0.98 -1.59,1.5 -3.92,1.5 -2.97,0.46 -0.96,3.15 -1.55,0.17 -0.74,-2.16 0.66,-1.16 -3.76,-0.96 -1.33,0.49 -2.82,-0.78 -1.33,-1.22 0.44,-1.74 -2.56,-0.55 -1.35,-1.14 -2.39,1.62 -2.73,0.35 -2.24,-0.02 -1.5,0.74 -1.45,0.44 0.42,3.43 -1.5,-0.08 -0.25,-0.7 -0.08,-1.24 -2.06,0.87 -1.21,-0.55 -2.08,-1.13 0.82,-2.51 -1.78,-0.59 -0.67,-2.8 -2.96,0.51 0.34,-3.63 2.66,-2.58 0.11,-2.57 -0.08,-2.4 -1.22,-0.75 -0.94,-1.86 -1.64,0.24 -3.02,-0.47 0.95,-1.33 -1.31,-1.99 -2,1.35 -2.36,-0.78 -3.23,2.03 -2.55,2.36 -2.26,0.39 -1.23,-0.85 -1.48,-0.08 -2,-0.73 -1.51,0.8 -1.85,2.34 -0.24,-2.48 -1.71,0.66 -3.27,-0.31 -3.17,-0.73 -2.28,-1.39 -2.18,-0.63 -0.94,-1.53 -1.58,-0.46 -2.83,-2.09 -2.25,-0.99 -1.16,0.77 -3.9,-2.26 -2.75,-2.07 -0.79,-3.63 2.01,0.44 0.09,-1.69 -1.12,-1.71 0.28,-2.74 -3.01,-3.99 -4.61,-1.39 -0.83,-2.66 -2.07,-1.63 -0.5,-1.01 -0.42,-2.01 0.1,-1.38 -1.7,-0.81 -0.92,0.36 -0.71,-3.32 0.8,-0.83 -0.39,-0.85 2.68,-1.73 1.94,-0.72 2.97,0.49 1.06,-2.35 3.6,-0.44 1,-1.48 4.42,-2.03 0.39,-0.85 -0.22,-2.17 1.92,-1 -2.52,-6.75 5.55,-1.58 1.44,-0.89 2.02,-7.26 5.56,1.35 1.56,-1.86 0.13,-4.19 2.33,-0.39 2.13,-2.83 1.1,-0.35 0.74,2.97 2.36,2.23 4,1.57 1.93,3.32 -1.08,4.73 1.01,1.73 3.33,0.68 3.78,0.55 3.39,2.45 1.73,0.43 1.28,3.57 1.65,2.27 3.09,-0.09 5.79,0.85 3.73,-0.53 2.77,0.57 4.15,2.29 3.39,0 1.24,1.16 3.26,-2.01 4.53,-1.31 4.2,-0.14 3.28,-1.34 2.01,-2.05 1.96,-1.3 -0.45,-1.28 -0.9,-1.5 1.47,-2.54 1.58,0.36 2.88,0.8 2.79,-2.1 4.28,-1.55 2.05,-2.66 1.97,-1.16 4.07,-0.54 2.21,0.46 0.31,-1.45 -2.54,-2.89 -2.25,-1.33 -2.16,1.54 -2.77,-0.65 -1.59,0.53 -0.72,-1.71 1.98,-4.23 1.37,-3.25 3.37,1.63 3.95,-2.74 -0.03,-1.93 2.53,-4.73 1.56,-1.45 -0.04,-2.52 -1.54,-1.1 2.32,-2.31 3.48,-0.84 3.72,-0.13 4.2,1.39 2.46,1.71 1.73,4.61 1.05,1.94 0.98,2.73 1.05,4.31 z",CO:"m 264.17,464.06 -1.2,-0.66 -1.38,-0.92 -0.8,0.44 -2.38,-0.39 -0.68,-1.2 -0.52,0.05 -2.81,-1.59 -0.38,-0.87 1.05,-0.21 -0.12,-1.39 0.65,-1.01 1.39,-0.19 1.19,-1.75 1.07,-1.46 -1.04,-0.67 0.53,-1.62 -0.63,-2.56 0.6,-0.73 -0.44,-2.37 -1.14,-1.5 0.36,-1.36 0.91,0.2 0.53,-0.84 -0.65,-1.65 0.34,-0.42 1.44,0.09 2.11,-1.97 1.15,-0.3 0.03,-0.93 0.52,-2.39 1.61,-1.32 1.76,-0.05 0.22,-0.59 2.2,0.23 2.21,-1.43 1.09,-0.64 1.35,-1.37 1,0.17 0.73,0.75 -0.54,0.96 -1.8,0.48 -0.71,1.42 -1.09,0.81 -0.81,1.06 -0.35,2.01 -0.77,1.66 1.44,0.18 0.36,1.3 0.62,0.62 0.22,1.13 -0.33,1.04 0.1,0.59 0.69,0.23 0.67,0.98 3.6,-0.27 1.63,0.36 1.98,2.41 1.13,-0.3 2.02,0.15 1.6,-0.32 0.99,0.49 -0.51,1.5 -0.62,0.94 -0.22,2.01 0.56,1.85 0.8,0.83 0.09,0.63 -1.42,1.39 1.02,0.61 0.75,0.98 0.85,2.77 -0.53,0.35 -0.54,-1.65 -0.78,-0.88 -0.93,0.96 -5.46,-0.06 0.03,1.74 1.64,0.29 -0.09,1.07 -0.56,-0.29 -1.58,0.46 -0.01,2.02 1.24,1.02 0.44,1.59 -0.07,1.21 -1.26,7.65 -1.4,-1.49 -0.84,-0.06 1.81,-2.84 -2.15,-1.31 -1.68,0.24 -1.01,-0.48 -1.55,0.74 -2.09,-0.35 -1.65,-2.92 -1.3,-0.72 -0.89,-1.32 -1.86,-1.32 z", +CR:"m 242.88,440.65 -1.52,-0.63 -0.57,-0.59 0.32,-0.49 -0.1,-0.62 -0.78,-0.68 -1.1,-0.55 -0.97,-0.36 -0.18,-0.83 -0.74,-0.51 0.18,0.83 -0.56,0.67 -0.64,-0.78 -0.9,-0.28 -0.38,-0.57 0.02,-0.86 0.37,-0.9 -0.79,-0.4 0.64,-0.54 0.42,-0.37 1.85,0.75 0.64,-0.37 0.89,0.24 0.47,0.58 0.82,0.19 0.67,-0.6 0.72,1.54 1.08,1.14 1.32,1.21 -1.09,0.25 0.02,1.13 0.58,0.42 -0.42,0.34 0.11,0.51 -0.23,0.57 z",CU:"m 244.83,397.19 2.43,0.22 2.2,0.03 2.63,1.03 1.12,1.11 2.62,-0.34 0.99,0.7 2.38,1.87 1.74,1.35 0.92,-0.04 1.68,0.61 -0.21,0.84 2.07,0.12 2.12,1.22 -0.33,0.69 -1.87,0.38 -1.89,0.15 -1.93,-0.24 -4.01,0.29 1.88,-1.66 -1.14,-0.77 -1.81,-0.2 -0.97,-0.86 -0.67,-1.7 -1.58,0.11 -2.62,-0.8 -0.84,-0.63 -3.65,-0.47 -0.98,-0.59 1.05,-0.75 -2.75,-0.15 -2.01,1.56 -1.17,0.04 -0.4,0.74 -1.38,0.33 -1.2,-0.29 1.48,-0.93 0.6,-1.09 1.27,-0.67 1.43,-0.59 2.13,-0.29 z",CY:"m 570.56,358.54 1.89,-1.46 -2.55,1.02 -2.02,-0.05 -0.4,0.83 -0.2,0.02 -1.33,0.12 0.65,1.37 1.37,0.44 2.88,-1.38 -0.09,-0.27 z",CZ:"m 523.06,308.11 -1.3,-0.8 -1.31,0.22 -2.18,-1.3 -0.99,0.32 -1.57,1.74 -2.09,-1.37 -1.58,-1.83 -1.43,-1.04 -0.3,-1.82 -0.49,-1.3 2.04,-0.95 1.04,-1.1 2.01,-0.86 0.71,-0.84 0.74,0.51 1.25,-0.47 1.33,1.43 2.09,0.39 -0.17,1.21 1.52,0.9 0.42,-1.13 1.92,0.49 0.27,1.37 2.08,0.26 1.29,2.13 -0.83,0.01 -0.44,0.77 -0.64,0.19 -0.18,0.97 -0.54,0.21 -0.08,0.39 -0.95,0.44 -1.25,-0.07 z",DE:"m 503.32,279.17 0.05,1.88 2.84,1.12 -0.03,1.7 2.85,-0.9 1.57,-1.31 3.17,1.89 1.32,1.51 0.66,2.39 -0.78,1.25 1.01,1.65 0.7,2.45 -0.22,1.56 1.15,2.86 -1.25,0.47 -0.74,-0.51 -0.71,0.84 -2.01,0.86 -1.04,1.1 -2.04,0.95 0.49,1.3 0.3,1.82 1.43,1.04 1.58,1.83 -0.98,1.95 -1.01,0.54 0.4,2.72 -0.27,0.7 -0.87,-0.85 -1.34,-0.12 -2.01,0.74 -2.47,-0.18 -0.4,1.09 -1.42,-1.14 -0.85,0.22 -3,-1.26 -0.58,0.9 -2.38,-0.03 0.35,-2.98 1.42,-2.9 -4.04,-0.78 -1.32,-1.13 0.16,-1.89 -0.56,-0.98 0.32,-2.97 -0.48,-4.69 1.69,0 0.71,-1.71 0.7,-4.23 -0.53,-1.58 0.55,-1 2.34,-0.26 0.52,1.04 1.91,-2.33 -0.64,-1.79 -0.13,-2.75 2.12,0.64 z",DJ:"m 596.3,427.97 0.66,0.88 -0.09,1.19 -1.6,0.68 1.21,0.77 -1.04,1.52 -0.62,-0.5 -0.67,0.2 -1.57,-0.05 -0.05,-0.86 -0.21,-0.79 0.94,-1.33 0.99,-1.26 1.2,0.25 z",DK:"m 511.08,276.09 -1.68,3.97 -2.93,-2.76 -0.39,-2.05 4.11,-1.66 0.89,2.5 z m -4.98,-4.25 -0.69,1.9 -0.83,-0.55 -2.02,3.59 0.76,2.39 -1.79,0.74 -2.12,-0.64 -1.14,-2.72 -0.08,-5.12 0.47,-1.38 0.8,-1.54 2.47,-0.32 0.98,-1.43 2.26,-1.47 -0.1,2.68 -0.83,1.68 0.34,1.43 1.52,0.76 z",DO:"m 274.43,407.6 0.35,-0.51 2.19,0.02 1.66,0.76 0.74,-0.08 0.51,1.05 1.53,-0.06 -0.09,0.88 1.25,0.11 1.38,1.08 -1.04,1.2 -1.34,-0.64 -1.28,0.12 -0.92,-0.14 -0.51,0.54 -1.08,0.18 -0.42,-0.72 -0.93,0.43 -1.12,2 -0.72,-0.46 -0.15,-0.84 0.06,-0.8 -0.72,-0.88 0.68,-0.5 0.22,-1.13 z",DZ:"m 509.15,396.33 -9.61,5.75 -8.12,5.85 -3.95,1.32 -3.11,0.29 -0.03,-1.88 -1.3,-0.48 -1.75,-0.85 -0.66,-1.39 -9.46,-6.55 -9.46,-6.65 -10.55,-7.53 0.06,-0.61 0,-0.21 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 2.69,-1.87 3.04,-0.6 1.77,-1.43 2.7,-1.05 4.75,-0.62 4.64,-0.29 1.41,0.52 2.64,-1.37 3,-0.03 1.14,0.81 1.91,-0.21 -0.57,1.79 0.45,3.28 -0.66,2.82 -1.73,1.88 0.25,2.53 2.29,1.98 0.03,0.81 1.72,1.33 1.2,5.86 0.91,2.84 0.15,1.48 -0.49,2.59 0.2,1.44 -0.36,1.72 0.25,1.97 -1.12,1.29 1.66,2.26 0.11,1.32 0.99,1.71 1.31,-0.56 2.22,1.42 z",EC:"m 250.35,473.12 1.49,-2.08 -0.61,-1.22 -1.07,1.3 -1.68,-1.23 0.57,-0.78 -0.47,-2.53 0.98,-0.42 0.52,-1.73 1.06,-1.8 -0.2,-1.13 1.54,-0.6 1.92,-1.11 2.81,1.59 0.52,-0.05 0.68,1.2 2.38,0.39 0.8,-0.44 1.38,0.92 1.2,0.66 0.39,2.11 -0.87,1.81 -3.06,2.92 -3.37,1.1 -1.72,2.43 -0.53,1.88 -1.59,1.15 -1.17,-1.41 -1.14,-0.3 -1.16,0.22 -0.07,-1.02 0.8,-0.66 z",EE:"m 543.67,264.96 0.33,-3.12 -1.03,0.67 -1.78,-1.9 -0.25,-3.11 3.55,-1.53 3.53,-0.81 3.04,0.92 2.9,-0.17 0.42,0.96 -1.99,3.14 0.83,4.96 -1.2,1.66 -2.32,-0.01 -2.41,-1.94 -1.23,-0.65 z",EG:"m 573.42,377.53 -0.79,1.29 -0.6,2.4 -0.76,1.64 -0.66,0.56 -0.93,-1.02 -1.27,-1.42 -2,-4.57 -0.28,0.29 1.16,3.37 1.72,3.18 2.12,4.88 1.03,1.68 0.9,1.74 2.52,3.4 -0.56,0.53 0.09,1.97 3.27,2.71 0.49,0.62 -11.12,0 -10.88,0 -11.27,0 0,-11.23 0,-11.18 -0.84,-2.58 0.72,-2 -0.43,-1.39 1.01,-1.57 3.73,-0.05 2.7,0.86 2.78,0.97 1.3,0.5 2.16,-1.03 1.15,-0.93 2.48,-0.27 1.99,0.41 0.77,1.62 0.65,-1.07 2.24,0.77 2.19,0.19 1.38,-0.82 z",EH:"m 438.82,383.31 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 -0.11,0.09 -0.05,0.04 -1.78,3.2 -1.86,1.14 -1.02,1.91 -0.06,1.65 -0.75,1.79 -0.94,0.49 -1.56,1.94 -0.96,2.15 0.18,1.02 -0.92,1.57 -1.08,0.82 -0.13,1.39 -0.12,1.27 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 0.06,-0.61 0,-0.21 z",ER:"m 594.25,428.42 -0.96,-0.93 -1.15,-1.67 -1.24,-0.92 -0.73,-1 -2.44,-1.15 -1.92,-0.03 -0.68,-0.61 -1.64,0.68 -1.7,-1.31 -0.88,2.15 -3.26,-0.6 -0.3,-1.15 1.21,-4.25 0.27,-1.93 0.88,-0.9 2.07,-0.48 1.42,-1.67 1.63,3.38 0.77,2.67 1.54,1.41 3.82,2.72 1.56,1.64 1.52,1.66 0.88,0.98 1.38,0.86 -0.85,0.7 z",ES:"m 450.17,334.81 0.14,-2.68 -1.14,-1.66 3.96,-2.77 3.43,0.7 3.77,-0.03 2.98,0.66 2.33,-0.2 4.53,0.12 1.12,1.49 5.16,1.73 1.02,-0.82 3.16,1.72 3.25,-0.49 0.15,2.19 -2.66,2.49 -3.59,0.78 -0.25,1.24 -1.73,2.03 -1.08,2.96 1.09,2.05 -1.62,1.6 -0.6,2.3 -2.12,0.7 -1.99,2.69 -3.55,0.05 -2.68,-0.06 -1.75,1.22 -1.07,1.31 -1.38,-0.29 -1.03,-1.17 -0.8,-2 -2.62,-0.54 -0.23,-1.16 1.04,-1.32 0.38,-0.96 -0.96,-1.06 0.77,-2.35 -1.12,-2.17 1.21,-0.3 0.11,-1.72 0.46,-0.53 0.03,-2.88 1.3,-1 -0.78,-1.88 -1.64,-0.13 -0.48,0.47 -1.65,0.01 -0.71,-1.84 -1.14,0.55 z",ET:"m 581.79,421.48 1.7,1.31 1.64,-0.68 0.68,0.61 1.92,0.03 2.44,1.15 0.73,1 1.24,0.92 1.15,1.67 0.96,0.93 -0.99,1.26 -0.94,1.33 0.21,0.79 0.05,0.86 1.57,0.05 0.67,-0.2 0.62,0.5 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -1.92,0 -1.13,-0.94 -2.56,1.17 -0.83,1.16 -1.87,-0.22 -0.62,-0.32 -0.66,0.07 -0.88,-0.02 -3.55,-2.38 -1.95,0 -0.96,-0.91 0,-1.57 -1.46,-0.47 -1.65,-3.05 -1.28,-0.65 -0.5,-1.12 -1.42,-1.37 -1.72,-0.2 0.96,-1.61 1.48,-0.07 0.42,-0.86 -0.03,-2.53 0.83,-2.96 1.32,-0.8 0.29,-1.16 1.2,-2.17 1.69,-1.42 1.14,-2.81 0.45,-2.47 3.26,0.6 z",FK:"m 303.91,633.38 3.36,-2.69 2.39,1.12 1.68,-1.79 2.24,2.01 -0.84,1.58 -3.79,1.36 -1.26,-1.59 -2.38,2.05 z",FI:"m 555.67,193.35 -0.41,5.4 4.3,4.99 -2.59,5.48 3.26,7.96 -1.89,5.76 2.53,4.86 -1.15,4.14 4.15,4.26 -1.06,3.1 -2.6,3.45 -6,7.41 -5.09,0.45 -4.93,2.07 -4.56,1.18 -1.63,-3.07 -2.71,-1.87 0.62,-5.72 -1.36,-5.41 1.34,-3.58 2.54,-3.94 6.41,-7.02 1.88,-1.39 -0.3,-2.84 -3.9,-3.22 -0.94,-2.7 -0.08,-11.12 -4.37,-5.15 -3.74,-3.81 1.68,-2.08 3.12,4.15 3.66,-0.39 3.01,1.87 2.67,-3.44 1.38,-5.85 4.35,-2.78 3.6,3.26 z",FJ:"m 980.78,508.86 -0.35,1.4 -0.23,0.16 -1.78,0.72 -1.79,0.61 -0.36,-1.09 1.4,-0.6 0.89,-0.16 1.64,-0.91 0.58,-0.13 z m -5.84,4.31 -1.27,-0.36 -1.08,1 0.27,1.29 1.55,0.36 1.74,-0.4 0.46,-1.53 -0.96,-0.84 -0.71,0.48 z",FR:"m 502.31,333.79 -0.93,2.89 -1.27,-0.76 -0.65,-2.53 0.57,-1.41 1.81,-1.45 0.47,3.26 z m -16.75,-33.35 1.96,2.06 1.44,-0.34 2.45,1.97 0.63,0.37 0.81,-0.09 1.32,1.12 4.04,0.79 -1.42,2.9 -0.36,2.98 -0.77,0.71 -1.28,-0.38 0.09,1.05 -2.05,2.3 -0.04,1.84 1.34,-0.63 0.96,1.77 -0.12,1.13 0.83,1.5 -0.97,1.21 0.72,3.04 1.52,0.49 -0.32,1.68 -2.54,2.17 -5.53,-1.04 -4.08,1.24 -0.32,2.29 -3.25,0.49 -3.15,-1.72 -1.02,0.82 -5.16,-1.73 -1.12,-1.49 1.45,-2.32 0.53,-7.88 -2.89,-4.26 -2.07,-2.09 -4.29,-1.6 -0.28,-3.07 3.64,-0.92 4.71,1.09 -0.89,-4.84 2.65,1.85 6.53,-3.37 0.84,-3.61 2.45,-0.9 0.41,1.56 1.3,0.07 1.3,1.79 z",GA:"m 506.61,474.73 -2.88,-2.82 -1.86,-2.3 -1.7,-2.88 0.09,-0.92 0.61,-0.9 0.68,-2.02 0.57,-2.07 0.95,-0.16 4.07,0.03 -0.02,-3.35 1.33,-0.19 1.71,0.38 1.66,-0.36 0.35,0.15 -0.21,1.22 0.79,1.43 2.08,-0.22 0.7,0.55 -1.21,3.23 1.32,1.64 0.31,2.18 -0.35,1.85 -0.86,1.32 -2.48,-0.12 -1.5,-1.34 -0.22,1.24 -1.89,0.34 -0.96,0.7 1.05,1.85 z",GB:"m 459.63,281.25 -1.5,3.29 -2.12,-0.98 -1.73,0.07 0.58,-2.57 -0.58,-2.6 2.35,-0.2 3,2.99 z m 7.45,-20.76 -3,5.73 2.86,-0.72 3.07,0.03 -0.73,4.22 -2.52,4.53 2.9,0.32 0.22,0.52 2.5,5.79 1.92,0.77 1.73,5.41 0.8,1.84 3.4,0.88 -0.34,2.93 -1.43,1.33 1.12,2.33 -2.52,2.33 -3.75,-0.04 -4.77,1.21 -1.31,-0.87 -1.85,2.06 -2.59,-0.5 -1.97,1.67 -1.49,-0.87 4.11,-4.64 2.51,-0.97 -0.02,0 -4.38,-0.75 -0.79,-1.8 2.93,-1.41 -1.54,-2.48 0.53,-3.06 4.17,0.42 0,0 0.41,-2.74 -1.88,-2.95 -0.04,-0.07 -3.4,-0.85 -0.67,-1.32 1.02,-2.2 -0.92,-1.37 -1.51,2.34 -0.16,-4.8 -1.42,-2.59 1.02,-5.36 2.18,-4.31 2.24,0.42 3.36,-0.41 z",GE:"m 592.01,336.1 0.42,-1.6 -0.7,-2.57 -1.62,-1.41 -1.55,-0.44 -1.03,-1.17 0.34,-0.46 2.37,0.66 4.13,0.62 3.82,1.83 0.49,0.71 1.7,-0.6 2.62,0.8 0.85,1.55 1.77,0.87 -0.73,0.51 1.38,2.02 -0.38,0.43 -1.51,-0.22 -2.09,-1.06 -0.69,0.6 -3.9,0.58 -2.7,-1.82 z",GF:"m 328.14,456.66 -1.07,1.06 -1.34,0.2 -0.38,-0.78 -0.63,-0.12 -0.87,0.76 -1.22,-0.57 0.71,-1.19 0.24,-1.27 0.48,-1.2 -1.09,-1.65 -0.22,-1.91 1.46,-2.41 0.95,0.31 2.06,0.66 2.97,2.36 0.46,1.14 -1.66,2.55 -0.85,2.06 z",GH:"m 478.48,447.09 -4.4,1.64 -1.56,0.96 -2.53,0.81 -2.5,-0.79 0.13,-1.11 -1.21,-2.41 0.73,-3.17 1.18,-2.36 -0.74,-4.01 -0.39,-2.13 0.07,-1.61 4.87,-0.13 1.24,0.21 0.9,-0.46 1.3,0.22 -0.21,0.89 1.17,1.46 0,2.05 0.27,2.22 0.7,1.03 -0.62,2.53 0.22,1.4 0.75,1.78 z",GL:"m 344.38,24.16 9.42,-13.61 9.84,1.07 3.57,-8.95 9.91,-2.42 22.4,3.15 17.54,18.59 -5.18,8.3 -10.73,0.93 -15.09,2.03 1.41,3.64 9.93,-2.24 8.44,6.91 5.45,-6.12 2.33,7.15 -3.08,10.97 7.14,-6.93 13.61,-7.55 8.41,3.81 1.57,8.12 -11.43,12.66 -1.58,3.9 -8.96,2.86 6.49,0.79 -3.28,11.51 -2.26,9.59 0.09,15.26 3.37,8.34 -4.38,0.51 -4.61,3.88 5.17,6.3 0.66,9.62 -3,1.02 3.63,9.15 -6.22,0.75 3.25,4.14 -0.92,3.51 -3.95,1.51 -3.91,0.03 3.51,6.48 0.04,4.13 -5.55,-3.83 -1.44,2.49 3.78,2.29 3.68,5.48 1.06,6.95 -5,1.62 -2.16,-3.26 -3.47,-4.98 0.96,5.87 -3.25,4.41 7.38,0.35 3.87,0.45 -7.52,7.03 -7.62,6.13 -8.2,2.61 -3.09,0.04 -2.9,2.87 -3.9,7.63 -6.03,4.89 -1.94,0.29 -3.74,1.67 -4.02,1.59 -2.41,4.12 -0.04,4.56 -1.41,4.16 -4.58,4.95 1.13,4.71 -1.26,4.85 -1.43,5.56 -3.95,0.34 -4.14,-4.63 -5.61,-0.03 -2.72,-3.18 -1.87,-5.8 -4.86,-7.68 -1.42,-4.15 -0.38,-5.89 -3.89,-6.27 1.01,-5.17 -1.87,-2.53 2.77,-8.65 4.22,-2.85 1.11,-3.26 0.59,-6.26 -3.21,2.86 -1.52,1.19 -2.52,1.14 -3.44,-2.61 -0.19,-5.55 1.1,-4.48 2.6,-0.12 5.72,2.25 -4.82,-5.43 -2.51,-3.01 -2.79,1.24 -2.34,-2.19 3.13,-8.5 -1.7,-3.53 -2.23,-6.74 -3.37,-10.91 -3.57,-4.17 0.03,-4.63 -7.53,-6.69 -5.95,-0.85 -7.49,0.47 -6.84,0.86 -3.26,-3.75 -4.87,-7.66 7.36,-3.97 5.65,-0.68 -12,-3.36 -6.32,-5.44 0.39,-5.34 10.61,-6.87 10.27,-7.16 1.08,-5.64 -7.56,-5.76 2.44,-6.64 9.71,-12.33 4.08,-1.98 -1.17,-8.57 6.64,-5.24 8.62,-3.21 8.62,-0.18 3.06,6.3 7.44,-11.32 6.69,7.78 3.93,1.59 5.83,6.41 L 344,33.25 z",GM:"m 428.28,426.68 0.36,-1.27 3.05,-0.09 0.64,-0.67 0.89,-0.05 1.1,0.71 0.87,0.01 0.93,-0.48 0.56,0.82 -1.21,0.65 -1.22,-0.05 -1.2,-0.61 -1.04,0.66 -0.5,0.03 -0.68,0.4 z",GN:"m 451.84,442.16 -0.79,-0.07 -0.57,1.13 -0.8,-0.01 -0.54,-0.6 0.18,-1.13 -1.17,-1.72 -0.73,0.31 -0.6,0.07 -0.77,0.16 0.03,-1.03 -0.45,-0.74 0.09,-0.82 -0.61,-1.19 -0.78,-1.01 -2.24,0 -0.65,0.53 -0.78,0.06 -0.48,0.61 -0.32,0.79 -1.5,1.24 -1.23,-1.67 -1.09,-1.11 -0.72,-0.36 -0.7,-0.57 -0.31,-1.25 -0.41,-0.62 -0.82,-0.47 1.25,-1.38 0.85,0.05 0.73,-0.48 0.62,0 0.44,-0.38 -0.24,-0.94 0.31,-0.3 0.05,-0.97 1.35,0.03 2.02,0.7 0.62,-0.07 0.21,-0.31 1.52,0.22 0.41,-0.16 0.16,1.05 0.45,-0.01 0.73,-0.38 0.46,0.1 0.78,0.72 1.2,0.23 0.77,-0.62 0.91,-0.38 0.67,-0.4 0.56,0.08 0.62,0.62 0.34,0.79 1.15,1.19 -0.58,0.73 -0.11,0.92 0.6,-0.28 0.35,0.34 -0.15,0.84 0.86,0.82 -0.56,0.21 -0.23,0.97 0.65,1.16 0.69,2.26 -1.04,0.34 -0.27,0.39 0.22,0.54 -0.16,1.23 z",GQ:"m 502.12,460.82 -0.53,-0.42 0.97,-3.13 4.56,0.07 0.02,3.35 -4.07,-0.03 z",GR:"m 541.95,356.96 1.53,1.16 2.18,-0.19 2.09,0.24 -0.07,0.6 1.53,-0.41 -0.35,1.01 -4.04,0.29 0.03,-0.56 -3.42,-0.67 0.52,-1.47 z m 8.15,-20.96 -0.87,2.33 -0.67,0.41 -1.71,-0.1 -1.46,-0.35 -3.4,0.96 1.94,2.06 -1.42,0.59 -1.56,0 -1.48,-1.88 -0.53,0.8 0.63,2.18 1.4,1.7 -1.06,0.79 1.56,1.65 1.39,1.03 0.04,2 -1.36,-1.15 -1.24,0.21 0.83,1.8 -0.92,0.19 -1,-0.69 1.2,3.95 -0.58,0 -0.45,-1.25 -0.57,-0.02 -0.26,1.32 -0.45,-0.3 0.1,-0.74 -0.56,-1.04 H 537 l 0.12,0.84 -0.25,0.27 -0.62,-0.54 -0.38,-1.01 0.52,-0.57 -0.36,-0.74 -0.41,-0.38 -0.42,-0.09 -0.49,-0.94 0.58,-0.52 0.36,-0.48 0.56,0.1 0.25,-0.41 0.59,-0.16 0.68,0.46 0.55,0.17 0.39,-0.62 -0.94,-0.08 -0.56,-0.19 -1.25,0.28 -1.22,0.05 -1.09,-1.64 -0.18,-0.25 0.17,-0.64 -1.42,-1.15 -0.19,-1.03 1.3,-1.76 0.17,-1.19 0.91,-0.53 0.06,-0.97 1.83,-0.33 1.07,-0.81 1.52,0.07 0.46,-0.65 0.53,-0.12 2.07,0.11 2.25,-1.02 1.98,1.3 2.55,-0.35 0.03,-1.86 1.38,0.93 z",GT:"m 222.89,425 -1.44,-0.5 -1.75,-0.05 -1.28,-0.57 -1.51,-1.18 0.07,-0.84 0.32,-0.68 -0.39,-0.54 1.35,-2.36 3.59,-0.01 0.08,-0.98 -0.46,-0.18 -0.31,-0.63 -1.04,-0.67 -1.04,-0.98 1.27,0 0,-1.65 2.62,0 2.59,0.03 -0.02,2.31 -0.22,3.28 0.83,0 0.92,0.53 0.24,-0.44 0.82,0.37 -1.27,1.11 -1.33,0.81 -0.2,0.55 0.22,0.56 -0.58,0.74 -0.66,0.17 0.15,0.34 -0.52,0.32 -0.96,0.72 z",GW:"m 433.08,432.69 -1.5,-1.19 -1.18,-0.18 -0.64,-0.81 0.01,-0.43 -0.85,-0.6 -0.18,-0.61 1.49,-0.47 0.93,0.09 0.75,-0.32 5.18,0.12 -0.05,0.97 -0.31,0.3 0.24,0.94 -0.44,0.38 -0.62,0 -0.73,0.48 -0.85,-0.05 z",GY:"m 307.95,440.25 1.84,1.03 1.74,1.83 0.07,1.45 1.06,0.07 1.5,1.36 1.11,0.98 -0.45,2.52 -1.7,0.73 0.15,0.65 -0.52,1.45 1.25,2.02 0.89,0.01 0.37,1.57 1.71,2.42 -0.68,0.1 -1.55,-0.23 -0.91,0.74 -1.27,0.49 -0.88,0.12 -0.31,0.54 -1.38,-0.14 -1.73,-1.3 -0.2,-1.29 -0.72,-1.41 0.45,-2.38 0.78,-0.98 -0.65,-1.3 -0.96,-0.42 0.37,-1.23 -0.66,-0.64 -1.46,0.12 -1.89,-2.12 0.76,-0.77 -0.06,-1.3 1.73,-0.45 0.69,-0.52 -0.96,-1.04 0.25,-1.03 z",HN:"m 230.68,427.15 -0.48,-0.89 -0.86,-0.25 0.2,-1.15 -0.38,-0.31 -0.58,-0.2 -1.23,0.34 -0.1,-0.39 -0.85,-0.46 -0.6,-0.57 -0.83,-0.24 0.58,-0.74 -0.22,-0.56 0.2,-0.55 1.33,-0.81 1.27,-1.11 0.29,0.12 0.62,-0.51 0.8,-0.04 0.26,0.23 0.44,-0.14 1.3,0.26 1.3,-0.08 0.9,-0.32 0.33,-0.32 0.89,0.15 0.67,0.2 0.73,-0.07 0.56,-0.25 1.28,0.4 0.45,0.06 0.85,0.54 0.81,0.65 1.02,0.44 0.74,0.8 -0.96,-0.06 -0.39,0.39 -0.97,0.38 -0.71,0 -0.62,0.37 -0.56,-0.13 -0.48,-0.44 -0.29,0.08 -0.36,0.69 -0.27,-0.03 -0.05,0.6 -0.98,0.79 -0.51,0.34 -0.29,0.36 -0.83,-0.58 -0.6,0.76 -0.59,-0.02 -0.66,0.07 0.06,1.41 -0.41,0.02 -0.35,0.66 z",HR:"m 528.3,319.18 0.68,1.55 0.89,1.14 -1.08,1.49 -1.27,-0.88 -1.94,0.06 -2.41,-0.66 -1.31,0.09 -0.6,0.82 -1.01,-0.91 -0.59,1.64 1.38,1.83 0.6,1.21 1.29,1.45 1.07,0.85 1.06,1.61 2.48,1.44 -0.31,0.64 -2.63,-1.4 -1.63,-1.38 -2.56,-1.14 -2.36,-2.85 0.57,-0.3 -1.28,-1.64 -0.06,-1.34 -1.8,-0.62 -0.86,1.71 -0.83,-1.33 0.07,-1.38 0.1,-0.06 1.95,0.14 0.52,-0.68 0.95,0.65 1.1,0.08 -0.01,-1.12 0.97,-0.41 0.28,-1.62 2.23,-1.08 0.89,0.5 2.1,1.73 2.31,0.77 z",HT:"m 270.29,407 1.71,0.13 2.43,0.47 0.25,1.61 -0.22,1.13 -0.68,0.5 0.72,0.88 -0.06,0.8 -1.86,-0.5 -1.32,0.2 -1.71,-0.21 -1.31,0.55 -1.51,-0.92 0.25,-0.95 2.58,0.41 2.12,0.24 1.01,-0.66 -1.28,-1.27 0.02,-1.13 -1.77,-0.46 z",HU:"m 520.93,315.36 0.93,-2.65 -0.54,-0.89 1.58,-0.01 0.21,-1.71 1.43,1.07 1.03,0.46 2.36,-0.51 0.22,-0.84 1.12,-0.13 1.36,-0.65 0.3,0.27 1.32,-0.52 0.66,-1 0.92,-0.25 3,1.28 0.6,-0.43 1.55,1.14 0.2,1.12 -1.71,0.87 -1.33,2.8 -1.69,2.76 -2.25,0.76 -1.75,-0.17 -2.15,1.05 -1.05,0.6 -2.31,-0.77 -2.1,-1.73 -0.89,-0.5 -0.55,-1.37 z",ID:"m 813.97,492.31 -1.18,0.05 -3.72,-1.98 2.61,-0.56 1.47,0.86 0.98,0.86 -0.16,0.77 z m 10.43,-0.28 -2.4,0.62 -0.34,-0.34 0.25,-0.96 1.21,-1.72 2.77,-1.12 0.28,0.56 0.05,0.86 -1.82,2.1 z m -18.32,-5.77 1.01,0.75 1.73,-0.23 0.7,1.2 -3.24,0.57 -1.94,0.38 -1.51,-0.02 0.96,-1.62 1.54,-0.02 0.75,-1.01 z m 14.03,-0.01 -0.41,1.56 -4.21,0.8 -3.73,-0.35 -0.01,-1.03 2.23,-0.59 1.76,0.84 1.87,-0.21 2.5,-1.02 z m -40.04,-3.69 5.37,0.28 0.62,-1.16 5.2,1.35 1.02,1.82 4.21,0.51 3.44,1.67 -3.2,1.07 -3.08,-1.13 -2.54,0.08 -2.91,-0.21 -2.62,-0.51 -3.25,-1.07 -2.06,-0.28 -1.17,0.35 -5.11,-1.16 -0.49,-1.21 -2.57,-0.21 1.92,-2.68 3.4,0.17 2.26,1.09 1.16,0.21 0.4,1.02 z m 73.18,-1.58 -1.44,1.91 -0.27,-2.11 0.5,-1.01 0.59,-0.95 0.64,0.82 -0.02,1.34 z m -20.96,-7.71 -1.05,0.93 -1.94,-0.51 -0.55,-1.2 2.84,-0.13 0.7,0.91 z m 9.04,-1.01 1.02,2.13 -2.37,-1.15 -2.34,-0.23 -1.58,0.18 -1.94,-0.1 0.67,-1.53 3.46,-0.12 3.08,0.82 z m 10.29,-5.42 0.78,4.51 2.9,1.67 2.34,-2.96 3.22,-1.68 2.49,0 2.4,0.97 2.08,1 3.01,0.53 0.05,9.1 0.05,9.16 -2.5,-2.31 -2.85,-0.57 -0.69,0.8 -3.55,0.09 1.19,-2.29 1.77,-0.78 -0.73,-3.05 -1.35,-2.35 -5.44,-2.37 -2.31,-0.23 -4.21,-2.58 -0.83,1.36 -1.08,0.25 -0.64,-1.02 -0.01,-1.21 -2.14,-1.37 3.02,-1 2,0.05 -0.24,-0.74 -4.1,-0.01 -1.11,-1.66 -2.5,-0.51 -1.19,-1.38 3.78,-0.67 1.44,-0.91 4.5,1.14 0.45,1.02 z m -24.96,-7.16 -2.25,2.76 -2.11,0.54 -2.7,-0.54 -4.67,0.14 -2.45,0.4 -0.4,2.11 2.51,2.48 1.51,-1.26 5.23,-0.95 -0.23,1.28 -1.22,-0.4 -1.22,1.63 -2.47,1.08 2.65,3.57 -0.51,0.96 2.52,3.22 -0.02,1.84 -1.5,0.82 -1.1,-0.98 1.36,-2.29 -2.75,1.08 -0.7,-0.77 0.36,-1.08 -2.02,-1.64 0.21,-2.72 -1.87,0.85 0.24,3.25 0.11,4 -1.78,0.41 -1.2,-0.82 0.8,-2.57 -0.43,-2.69 -1.18,-0.02 -0.87,-1.91 1.16,-1.83 0.4,-2.21 1.41,-4.2 0.59,-1.15 2.38,-2.07 2.19,0.82 3.54,0.39 3.22,-0.12 2.77,-2.02 0.49,0.61 z m 9.67,0.8 -0.15,2.43 -1.45,-0.27 -0.43,1.69 1.16,1.47 -0.79,0.33 -1.13,-1.76 -0.83,-3.56 0.56,-2.23 0.93,-1.01 0.2,1.52 1.66,0.24 0.27,1.15 z m -30.32,-1.94 3.14,2.58 -3.32,0.33 -0.94,1.9 0.12,2.52 -2.7,1.91 -0.06,2.77 -1.08,4.27 -0.41,-0.99 -3.19,1.26 -1.11,-1.71 -2,-0.16 -1.4,-0.89 -3.33,1 -1.02,-1.35 -1.84,0.15 -2.31,-0.32 -0.43,-3.74 -1.4,-0.77 -1.35,-2.38 -0.39,-2.44 0.33,-2.58 1.67,-1.85 0.47,1.86 1.92,1.57 1.81,-0.57 1.79,0.2 1.63,-1.41 1.34,-0.24 2.65,0.78 2.29,-0.59 1.44,-3.88 1.08,-0.97 0.97,-3.17 3.22,0 2.43,0.47 -1.59,2.52 2.06,2.64 -0.49,1.28 z m -33.81,21.42 -3.1,0.06 -2.36,-2.34 -3.6,-2.28 -1.2,-1.69 -2.12,-2.27 -1.39,-2.09 -2.13,-3.9 -2.46,-2.32 -0.82,-2.39 -1.03,-2.17 -2.53,-1.75 -1.47,-2.39 -2.11,-1.56 -2.92,-3.08 -0.25,-1.42 1.81,0.11 4.34,0.54 2.48,2.73 2.17,1.89 1.55,1.16 2.66,3 2.85,0.04 2.36,1.91 1.62,2.33 2.13,1.27 -1.12,2.27 1.61,0.97 1.01,0.07 0.48,1.94 0.98,1.56 2.06,0.25 1.36,1.76 -0.7,3.47 -0.16,4.32 z",IE:"m 458.13,284.54 0.46,3.36 -2.12,4.12 -4.97,2.68 -3.97,-0.68 2.27,-4.78 -1.46,-4.77 3.81,-3.75 2.12,-2.27 0.58,2.6 -0.58,2.57 1.74,-0.06 z",IL:"m 575.66,367.07 -0.49,1.05 -1.02,-0.46 -0.58,2.2 0.7,0.36 -0.71,0.46 -0.13,0.86 1.32,-0.45 0.07,1.27 -1.4,5.17 -1.84,-5.55 0.81,-1.08 -0.19,-0.19 0.74,-1.53 0.57,-2.5 0.4,-0.84 0.08,-0.03 0.94,0 0.26,-0.58 0.75,-0.05 0.04,1.37 -0.38,0.5 z",IN:"m 693.75,357.69 3.01,3.99 -0.28,2.74 1.11,1.71 -0.09,1.69 -2.01,-0.44 0.79,3.63 2.75,2.06 3.9,2.27 -1.78,1.46 -1.09,2.99 2.72,1.2 2.64,1.55 3.66,1.77 3.84,0.41 1.62,1.59 2.16,0.29 3.38,0.73 2.33,-0.05 0.32,-1.24 -0.37,-1.99 0.22,-1.35 1.71,-0.67 0.24,2.48 0.05,0.63 2.55,1.19 1.77,-0.49 2.36,0.21 2.29,-0.09 0.2,-1.93 -1.14,-1 2.26,-0.4 2.55,-2.35 3.23,-2.03 2.35,0.78 2,-1.34 1.32,1.98 -0.95,1.34 3.02,0.47 0.22,1.2 -0.99,0.58 0.23,1.93 -2,-0.57 -3.63,2.16 0.08,1.78 -1.54,2.6 -0.15,1.5 -1.25,2.52 -2.19,-0.7 -0.11,3.15 -0.63,1.03 0.3,1.28 -1.39,0.72 -1.47,-4.8 -0.78,0.01 -0.46,1.94 -1.53,-1.58 0.86,-1.73 1.26,-0.18 1.29,-2.59 -1.61,-0.53 -2.61,0.05 -2.66,-0.42 -0.25,-2.15 -1.34,-0.16 -2.22,-1.34 -0.99,2.11 2.02,1.63 -1.75,1.15 -0.62,1.12 1.72,0.82 -0.47,1.84 0.97,2.28 0.44,2.48 -0.41,1.1 -1.9,-0.04 -3.46,0.62 0.16,2.25 -1.5,1.76 -4.03,2 -3.14,3.46 -2.11,1.85 -2.79,1.91 0,1.34 -1.4,0.72 -2.53,1.03 -1.31,0.16 -0.84,2.2 0.58,3.75 0.15,2.37 -1.18,2.71 -0.02,4.83 -1.45,0.14 -1.27,2.15 0.85,0.93 -2.56,0.8 -0.94,1.92 -1.13,0.81 -2.65,-2.63 -1.3,-3.96 -1.08,-2.86 -0.98,-1.34 -1.49,-2.74 -0.69,-3.58 -0.49,-1.8 -2.55,-3.97 -1.16,-5.64 -0.84,-3.77 0.01,-3.58 -0.54,-2.8 -4.08,1.79 -1.98,-0.36 -3.66,-3.63 1.35,-1.09 -0.83,-1.18 -3.29,-2.58 1.87,-2.04 6.17,0.01 -0.56,-2.64 -1.57,-1.56 -0.32,-2.39 -1.84,-1.4 3.09,-3.3 3.26,0.24 2.93,-3.32 1.76,-3.26 2.72,-3.24 -0.04,-2.33 2.39,-1.91 -2.27,-1.63 -0.97,-2.25 -0.99,-2.95 1.37,-1.46 4.26,0.83 3.12,-0.51 z",IQ:"m 602.86,356.02 1.83,1.04 0.22,2 -1.42,1.17 -0.65,2.64 1.95,3.18 3.43,1.82 1.45,2.5 -0.46,2.37 0.89,0 0.03,1.73 1.55,1.69 -1.66,-0.15 -1.89,-0.27 -2.06,3.08 -5.21,-0.26 -7.9,-6.49 -4.18,-2.29 -3.38,-0.89 -1.13,-4.04 6.21,-3.5 1.06,-4.12 -0.27,-2.52 1.54,-0.86 1.44,-2.18 1.2,-0.55 3.26,0.46 0.99,0.89 1.34,-0.59 z",IR:"m 626.69,351.78 2.47,-0.68 1.99,-2.02 1.87,0.1 1.23,-0.66 2,0.33 3.1,1.79 2.24,0.39 3.2,3.09 2.09,0.12 0.25,2.91 -1.14,4.25 -0.77,2.45 1.22,0.49 -1.2,1.83 0.92,2.64 0.22,2.09 2.12,0.55 0.23,2.1 -2.54,2.93 1.38,1.68 1.13,1.93 2.68,1.4 0.08,2.77 1.34,0.51 0.23,1.44 -4.04,1.61 -1.06,3.6 -5.27,-0.93 -3.06,-0.71 -3.16,-0.41 -1.2,-3.81 -1.34,-0.56 -2.16,0.56 -2.82,1.51 -3.43,-1.03 -2.83,-2.41 -2.7,-0.9 -1.87,-3.01 -2.07,-4.27 -1.51,0.52 -1.78,-1.07 -1.05,1.26 -1.55,-1.69 -0.03,-1.73 -0.89,0 0.46,-2.37 -1.45,-2.5 -3.43,-1.82 -1.95,-3.18 0.65,-2.64 1.42,-1.17 -0.22,-2 -1.83,-1.04 -1.82,-4.14 -1.53,-2.83 0.54,-1.09 -0.87,-4.12 1.92,-1.03 0.44,1.37 1.42,1.66 1.92,0.47 1.02,-0.1 3.31,-2.66 1.05,-0.27 0.82,1.07 -0.96,1.78 1.75,1.86 0.69,-0.17 0.89,2.61 2.66,0.73 1.95,1.76 3.98,0.6 4.38,-0.92 z",IS:"m 434.82,212.68 -0.64,4.48 3.16,4.6 -3.64,5.01 -8.09,4.38 -2.42,1.15 -3.69,-0.93 -7.82,-2.01 2.76,-2.84 -6.1,-3.2 4.96,-1.28 -0.12,-1.97 -5.88,-1.57 1.89,-4.47 4.25,-1.03 4.37,4.68 4.26,-3.75 3.53,1.96 4.57,-3.71 z",IT:"m 519.02,348.13 -1.01,2.78 0.42,1.09 -0.59,1.79 -2.14,-1.31 -1.43,-0.38 -3.91,-1.79 0.39,-1.82 3.28,0.32 2.86,-0.39 2.13,-0.29 z m -17.69,-10.82 1.68,2.62 -0.39,4.81 -1.27,-0.23 -1.14,1.2 -1.06,-0.95 -0.11,-4.38 -0.64,-2.1 1.54,0.19 1.39,-1.16 z m 8.87,-21.6 4.01,1.05 -0.3,1.99 0.67,1.71 -2.23,-0.58 -2.28,1.42 0.16,1.97 -0.34,1.12 0.92,1.99 2.63,1.95 1.41,3.17 3.12,3.05 2.2,-0.02 0.68,0.83 -0.79,0.74 2.51,1.35 2.06,1.12 2.4,1.92 0.29,0.68 -0.52,1.31 -1.56,-1.7 -2.44,-0.6 -1.18,2.36 2.03,1.34 -0.33,1.88 -1.17,0.21 -1.5,3.06 -1.17,0.27 0.01,-1.08 0.57,-1.91 0.61,-0.77 -1.09,-2.09 -0.86,-1.83 -1.16,-0.46 -0.83,-1.58 -1.8,-0.67 -1.21,-1.49 -2.07,-0.24 -2.19,-1.68 -2.56,-2.45 -1.91,-2.19 -0.87,-3.8 -1.4,-0.45 -2.28,-1.29 -1.29,0.53 -1.62,1.8 -1.17,0.28 0.32,-1.68 -1.52,-0.49 -0.72,-3.04 0.97,-1.21 -0.83,-1.5 0.12,-1.13 1.21,0.86 1.35,-0.19 1.57,-1.36 0.49,0.64 1.34,-0.13 0.61,-1.63 2.07,0.51 1.24,-0.68 0.22,-1.67 1.7,0.58 0.33,-0.78 2.77,-0.71 0.6,1.39 z",JM:"m 258.01,411.21 1.89,0.26 1.49,0.71 0.46,0.8 -1.97,0.05 -0.85,0.49 -1.57,-0.47 -1.6,-1.07 0.33,-0.67 1.18,-0.2 z",JO:"m 575.17,368.12 0.49,-1.05 3.12,1.32 5.49,-3.54 1.13,4.04 -0.53,0.49 -5.62,1.65 2.8,3.26 -0.93,0.54 -0.46,1.09 -2.14,0.44 -0.67,1.16 -1.22,0.98 -3.12,-0.51 -0.09,-0.46 1.4,-5.17 -0.07,-1.27 0.42,-0.96 z",JP:"m 853.01,362.26 0.36,1.15 -1.58,2.03 -1.15,-1.07 -1.44,0.78 -0.74,1.95 -1.83,-0.95 0.02,-1.58 1.55,-2 1.59,0.39 1.15,-1.42 2.07,0.72 z m 17.77,-10.28 -1.06,2.78 0.49,1.73 -1.46,2.42 -3.58,1.6 -4.93,0.21 -4,3.84 -1.88,-1.29 -0.11,-2.52 -4.88,0.75 -3.32,1.59 -3.28,0.06 2.84,2.46 -1.87,5.61 -1.81,1.37 -1.36,-1.27 0.69,-2.96 -1.77,-0.96 -1.14,-2.28 2.65,-1.03 1.47,-2.11 2.82,-1.75 2.06,-2.33 5.58,-1.02 3,0.7 2.93,-6.17 1.87,1.67 4.11,-3.51 1.59,-1.38 1.76,-4.38 -0.48,-4.1 1.18,-2.33 2.98,-0.68 1.53,5.11 -0.08,2.94 -2.59,3.6 0.05,3.63 z m 8.23,-25.93 1.97,0.83 1.98,-1.65 0.62,4.35 -4.16,1.05 -2.46,3.76 -4.41,-2.58 -1.53,4.12 -3.12,0.06 -0.39,-3.74 1.39,-2.94 3,-0.21 0.82,-5.38 0.83,-3.09 3.29,4.12 2.17,1.3 z",KE:"m 590.44,466.03 1.66,2.29 -1.96,1.12 -0.69,1.16 -1.06,0.2 -0.39,1.97 -0.9,1.12 -0.55,1.86 -1.13,0.92 -4.02,-2.79 -0.2,-1.62 -10.16,-5.67 -0.48,-0.31 -0.02,-2.95 0.8,-1.13 1.38,-1.84 1.02,-2.03 -1.23,-3.2 -0.33,-1.4 -1.33,-1.94 1.72,-1.67 1.9,-1.84 1.46,0.47 0,1.57 0.96,0.91 1.95,0 3.55,2.38 0.88,0.02 0.66,-0.07 0.62,0.32 1.87,0.22 0.83,-1.16 2.56,-1.17 1.13,0.94 1.92,0 -2.45,3.17 z",KG:"m 674.47,333.36 0.63,-1.66 1.84,-0.54 4.62,1.31 0.43,-2.24 1.59,-0.8 4,1.61 1.02,-0.42 4.65,0.1 4.16,0.4 1.4,1.37 1.73,0.55 -0.39,0.86 -4.42,2.03 -1,1.48 -3.6,0.44 -1.06,2.35 -2.97,-0.49 -1.93,0.72 -2.68,1.72 0.39,0.85 -0.8,0.83 -5.3,0.55 -3.47,-1.17 -3.04,0.28 0.27,-2.1 3.05,0.61 1.03,-1.13 2.13,0.36 3.59,-2.64 -3.32,-1.96 -2,0.93 -2.07,-1.4 2.35,-2.43 z",KH:"m 765.69,433.85 -1.14,-1.48 -1.41,-2.94 -0.67,-3.45 1.8,-2.38 3.62,-0.55 2.63,0.41 2.31,1.13 1.27,-1.99 2.49,1.06 0.65,1.92 -0.35,3.42 -4.71,2.19 1.23,1.73 -2.94,0.2 -2.43,1.14 z",KP:"m 841.8,332.87 0.39,0.67 -1.06,-0.23 -1.22,1.27 -0.84,1.28 0.11,2.67 -1.45,0.81 -0.5,0.65 -1.06,1.08 -1.87,0.6 -1.21,0.98 -0.09,1.57 -0.33,0.4 1.12,0.58 1.59,1.58 -0.41,0.86 -1.19,0.23 -1.98,0.17 -1.09,1.6 -1.26,-0.12 -0.17,0.32 -1.36,-0.67 -0.34,0.66 -0.82,0.29 -0.1,-0.66 -0.73,-0.32 -0.75,-0.57 0.77,-1.57 0.66,-0.42 -0.25,-0.65 0.71,-1.94 -0.19,-0.59 -1.63,-0.4 -1.32,-0.97 2.28,-2.35 3.09,-1.98 1.93,-2.65 1.33,1.17 2.42,0.14 -0.44,-1.97 4.33,-1.63 1.12,-2.13 z",KR:"m 835.38,346.78 2.42,4.18 0.69,2.27 0.02,3.98 -1.05,1.88 -2.54,0.66 -2.24,1.41 -2.53,0.29 -0.31,-1.85 0.52,-2.57 -1.24,-3.6 2.08,-0.59 -1.92,-3 0.17,-0.32 1.26,0.12 1.09,-1.6 1.98,-0.17 1.19,-0.23 z",XK:"m 533.72,334.17 -0.13,0.77 -0.36,-0.03 -0.18,-1.37 -0.67,-0.38 -0.6,-1.02 0.52,-0.85 0.67,-0.28 0.39,-1.26 0.5,-0.22 0.4,0.54 0.53,0.24 0.36,0.61 0.46,0.18 0.55,0.7 0.4,-0.02 -0.32,0.93 -0.33,0.45 0.09,0.28 -0.63,0.14 z",KW:"m 610.02,376.01 0.58,1.41 -0.25,0.73 0.9,2.41 -1.98,0.08 -0.7,-1.51 -2.5,-0.31 2.06,-3.08 z",KZ:"m 674.47,333.36 -1.61,0.7 -3.69,2.61 -1.23,2.65 -1.05,0.02 -0.76,-1.75 -3.57,-0.12 -0.57,-3.06 -1.37,-0.03 0.21,-3.8 -3.35,-2.8 -4.81,0.3 -3.29,0.56 -2.68,-3.5 -2.29,-1.48 -4.35,-2.84 -0.52,-0.35 -7.22,2.35 0.11,14.13 -1.44,0.18 -1.96,-2.93 -1.9,-1.06 -3.18,0.79 -1.24,1.25 -0.16,-0.92 0.69,-1.57 -0.53,-1.32 -3.25,-1.3 -1.27,-3.47 -1.54,-0.98 -0.1,-1.28 2.73,0.37 0.11,-2.88 2.38,-0.64 2.45,0.59 0.51,-3.91 -0.5,-2.51 -2.81,0.2 -2.38,-1 -3.25,1.79 -2.61,0.86 -1.43,-0.66 0.29,-2.1 -1.79,-2.76 -2.08,0.11 -2.38,-2.83 1.62,-3.22 -0.82,-0.87 2.23,-4.77 2.89,2.53 0.35,-3.19 5.78,-4.85 4.38,-0.12 6.19,3.1 3.31,1.79 2.98,-1.87 4.44,-0.08 3.59,2.29 0.82,-1.31 3.93,0.19 0.71,-2.11 -4.55,-3.09 2.69,-2.23 -0.52,-1.25 2.69,-1.21 -2.02,-3.2 1.28,-1.62 10.49,-1.66 1.37,-1.19 7.02,-1.79 2.52,-2.04 5.04,1.06 0.88,5.01 2.93,-1.16 3.6,1.63 -0.23,2.58 2.69,-0.27 7.02,-4.49 -1.02,1.5 3.58,3.66 6.26,11.58 1.5,-2.33 3.86,2.56 4.03,-1.14 1.54,0.8 1.35,2.55 1.96,0.84 1.2,1.85 3.61,-0.58 1.49,2.63 -2.14,2.83 -2.33,0.4 -0.13,4.18 -1.56,1.86 -5.56,-1.35 -2.02,7.26 -1.44,0.89 -5.55,1.58 2.52,6.75 -1.92,1 0.22,2.16 -1.73,-0.55 -1.4,-1.37 -4.16,-0.4 -4.65,-0.1 -1.02,0.42 -4,-1.61 -1.59,0.8 -0.43,2.24 -4.62,-1.31 -1.84,0.54 z",LA:"m 770.52,423.46 0.91,-1.3 0.13,-2.44 -2.27,-2.53 -0.18,-2.87 -2.13,-2.38 -2.12,-0.2 -0.56,1.02 -1.65,0.08 -0.84,-0.51 -2.95,1.74 -0.07,-2.62 0.69,-3.11 -1.89,-0.13 -0.16,-1.78 -1.22,-0.92 0.6,-1.1 2.39,-1.94 0.25,0.7 1.49,0.08 -0.42,-3.43 1.45,-0.44 1.64,2.37 1.26,2.72 3.45,0.03 1.09,2.59 -1.79,0.77 -0.81,1.07 3.36,1.76 2.33,3.46 1.77,2.57 2.12,2.02 0.71,2.04 -0.51,2.88 -2.49,-1.06 -1.27,1.99 z",LB:"m 575.94,365.18 -0.75,0.05 -0.26,0.58 -0.94,0 1,-2.73 1.39,-2.38 0.06,-0.12 1.26,0.18 0.46,1.32 -1.53,1.27 z",LK:"m 704.82,442.62 -0.42,2.92 -1.17,0.8 -2.44,0.64 -1.34,-2.23 -0.49,-4.03 1.27,-4.58 1.93,1.57 1.31,1.98 z",LR:"m 453.88,451.47 -0.74,0.02 -2.89,-1.33 -2.54,-2.13 -2.39,-1.53 -1.89,-1.81 0.67,-0.9 0.15,-0.81 1.26,-1.53 1.31,-1.31 0.6,-0.07 0.73,-0.31 1.17,1.72 -0.18,1.13 0.54,0.6 0.8,0.01 0.57,-1.13 0.79,0.07 -0.13,0.82 0.28,1.36 -0.61,1.24 0.82,0.77 0.89,0.19 1.19,1.17 0.08,1.11 -0.27,0.35 z",LS:"m 556.75,548 0.98,0.96 -0.86,1.56 -0.48,1.05 -1.56,0.5 -0.52,1.04 -1,0.32 -2.1,-2.49 1.49,-2.03 1.52,-1.25 1.31,-0.64 z",LT:"m 539.24,282.34 -0.23,-1.22 0.3,-1.33 -1.24,-0.77 -2.93,-0.86 -0.6,-4.16 3.21,-1.55 4.7,0.33 2.76,-0.5 0.39,1.05 1.49,0.32 2.7,2.42 0.26,2.2 -2.3,1.57 -0.65,2.72 -3.04,1.8 -2.71,-0.04 -0.67,-1.46 z",LU:"m 492.45,301.54 0.56,0.98 -0.16,1.89 -0.81,0.1 -0.63,-0.38 0.31,-2.43 z",LV:"m 534.54,274 0.1,-3.81 1.38,-3.24 2.64,-1.78 2.22,3.88 2.25,-0.1 0.54,-3.99 2.39,-0.93 1.23,0.65 2.41,1.94 2.32,0.01 1.35,1.19 0.23,2.49 0.91,2.99 -3.02,1.93 -1.7,0.84 -2.7,-2.42 -1.49,-0.32 -0.39,-1.05 -2.76,0.5 -4.7,-0.33 z",LY:"m 517.14,398.18 -1.98,1.12 -1.58,-1.66 -4.43,-1.31 -1.23,-1.91 -2.22,-1.42 -1.31,0.56 -0.99,-1.71 -0.11,-1.32 -1.66,-2.26 1.12,-1.29 -0.25,-1.97 0.36,-1.72 -0.2,-1.44 0.49,-2.59 -0.15,-1.48 -0.91,-2.84 1.37,-0.75 0.24,-1.38 -0.3,-1.35 1.93,-1.26 0.86,-1.05 1.37,-0.95 0.16,-2.55 3.29,1.15 1.18,-0.29 2.34,0.56 3.72,1.47 1.31,2.92 2.52,0.64 3.95,1.36 2.99,1.61 1.37,-0.84 1.34,-1.49 -0.65,-2.51 0.88,-1.6 2.02,-1.55 1.93,-0.45 3.79,0.68 0.96,1.48 1.04,0.01 0.89,0.56 2.79,0.39 0.68,1.08 -1.01,1.57 0.43,1.39 -0.72,2 0.84,2.58 0,11.18 0,11.23 0,5.96 -3.22,0.01 -0.04,1.24 -11.18,-5.7 -11.19,-5.77 z",MA:"m 451.21,383.39 -0.03,-3.75 4.53,-2.36 2.8,-0.49 2.29,-0.86 1.08,-1.62 3.28,-1.29 0.12,-2.41 1.62,-0.29 1.27,-1.21 3.67,-0.56 0.51,-1.28 -0.74,-0.71 -0.97,-3.53 -0.16,-2.05 -1.06,-2.18 -1.22,-0.04 -2.9,-0.75 -2.67,0.24 -1.69,-1.46 -2.06,-0.02 -0.89,2.11 -1.87,3.51 -2.08,1.39 -2.81,1.53 -1.8,2.24 -0.38,1.74 -1.07,2.82 0.7,4.03 -2.34,2.68 -1.4,0.85 -2.21,2.17 -2.61,0.35 -1.3,1.12 3.62,0.01 8.75,0.03 0,0 0,0 -8.75,-0.03 -3.62,-0.01 z",MD:"m 550.14,309.7 0.67,-0.62 1.86,-0.42 2.07,1.31 1.15,0.16 1.27,1.12 -0.2,1.41 1.02,0.67 0.4,1.72 0.98,1.04 -0.19,0.6 0.52,0.42 -0.74,0.29 -1.66,-0.11 -0.27,-0.57 -0.59,0.33 0.2,0.72 -0.77,1.29 -0.49,1.37 -0.7,0.44 -0.51,-1.83 0.3,-1.72 -0.09,-1.79 -1.62,-2.44 -0.89,-1.75 -0.87,-1.24 z",ME:"m 531.02,332.48 -0.17,-0.72 -1.22,1.87 0.19,1.19 -0.59,-0.29 -0.78,-1.23 -1.22,-0.75 0.31,-0.64 0.41,-2.1 0.91,-0.89 0.53,-0.36 0.74,0.66 0.41,0.54 0.92,0.41 1.07,0.79 -0.23,0.33 -0.52,0.85 z",MG:"m 614.42,498.65 0.74,1.21 0.69,1.89 0.46,3.46 0.72,1.35 -0.28,1.38 -0.49,0.86 -0.96,-1.7 -0.52,0.86 0.53,2.14 -0.25,1.24 -0.77,0.67 -0.18,2.48 -1.1,3.42 -1.38,4.09 -1.74,5.67 -1.07,4.21 -1.27,3.55 -2.28,0.73 -2.45,1.31 -1.61,-0.79 -2.23,-1.1 -0.77,-1.62 -0.19,-2.71 -0.98,-2.42 -0.26,-2.17 0.5,-2.16 1.29,-0.52 0.01,-0.99 1.34,-2.26 0.25,-1.88 -0.65,-1.4 -0.53,-1.85 -0.22,-2.7 0.98,-1.63 0.37,-1.85 1.4,-0.1 1.57,-0.6 1.03,-0.52 1.24,-0.04 1.59,-1.65 2.31,-1.78 0.84,-1.44 -0.38,-1.23 1.19,0.35 1.55,-1.99 0.05,-1.72 0.93,-1.28 z",MK:"m 533.23,334.91 0.36,0.03 0.13,-0.77 1.65,-0.59 0.63,-0.14 0.96,-0.22 1.29,-0.06 1.41,1.21 0.2,2.47 -0.54,0.12 -0.46,0.65 -1.52,-0.07 -1.07,0.81 -1.83,0.32 -1.16,-0.9 -0.4,-1.59 z",ML:"m 441.38,422.47 0.94,-0.52 0.47,-1.7 0.89,-0.07 1.96,0.8 1.58,-0.57 1.08,0.19 0.43,-0.64 11.25,-0.04 0.62,-2.03 -0.49,-0.36 -1.35,-12.68 -1.35,-13.06 4.29,-0.05 9.46,6.65 9.46,6.55 0.66,1.39 1.75,0.85 1.3,0.48 0.03,1.88 3.11,-0.29 0.01,6.75 -1.54,1.94 -0.24,1.79 -2.49,0.45 -3.82,0.25 -1.04,1.03 -1.8,0.11 -1.79,0.01 -0.7,-0.55 -1.55,0.41 -2.62,1.2 -0.53,0.9 -2.18,1.28 -0.38,0.74 -1.17,0.58 -1.36,-0.38 -0.77,0.7 -0.41,1.96 -2.23,2.36 0.07,0.96 -0.77,1.21 0.19,1.64 -1.16,0.42 -0.65,0.36 -0.44,-1.21 -0.81,0.32 -0.48,-0.06 -0.52,0.83 -2.16,-0.03 -0.78,-0.42 -0.36,0.26 -0.86,-0.82 0.15,-0.84 -0.35,-0.34 -0.6,0.28 0.11,-0.92 0.58,-0.73 -1.15,-1.19 -0.34,-0.79 -0.62,-0.62 -0.56,-0.08 -0.67,0.4 -0.91,0.38 -0.77,0.62 -1.2,-0.23 -0.78,-0.72 -0.46,-0.1 -0.73,0.38 -0.45,0.01 -0.16,-1.05 0.13,-0.89 -0.24,-1.1 -1.05,-0.81 -0.55,-1.64 z",MM:"m 754.61,406.2 -1.64,1.28 -1.98,0.14 -1.28,3.19 -1.18,0.53 1.36,2.57 1.78,2.13 1.14,1.92 -1.02,2.52 -0.97,0.53 0.67,1.45 1.87,2.28 0.32,1.6 -0.05,1.33 1.1,2.6 -1.54,2.65 -1.36,2.91 -0.27,-2.1 0.86,-2.18 -0.94,-1.68 0.23,-3.11 -1.14,-1.48 -0.91,-3.44 -0.51,-3.66 -1.21,-2.4 -1.85,1.46 -3.19,2.06 -1.57,-0.26 -1.74,-0.67 0.97,-3.61 -0.58,-2.74 -2.2,-3.39 0.34,-1.07 -1.64,-0.38 -1.99,-2.42 -0.18,-2.41 0.98,0.46 0.05,-2.15 1.39,-0.72 -0.3,-1.28 0.63,-1.03 0.11,-3.15 2.19,0.7 1.25,-2.52 0.15,-1.5 1.54,-2.6 -0.08,-1.78 3.63,-2.16 2,0.57 -0.23,-1.93 0.99,-0.58 -0.22,-1.2 1.64,-0.24 0.94,1.86 1.22,0.75 0.09,2.4 -0.12,2.57 -2.65,2.58 -0.34,3.63 2.96,-0.5 0.67,2.8 1.78,0.59 -0.82,2.5 2.08,1.13 1.22,0.55 2.05,-0.87 0.09,1.24 -2.39,1.94 -0.6,1.1 z",MN:"m 721.54,305.13 2.96,-0.74 5.35,-3.74 4.27,-2.07 2.43,1.35 2.93,0.06 1.87,2.05 2.8,0.15 4.06,1.09 2.72,-3.03 -1.14,-2.6 2.91,-4.66 3.14,1.87 2.54,0.53 3.3,1.15 0.53,3.32 3.99,1.84 2.65,-0.81 3.54,-0.57 2.81,0.58 2.75,2.09 1.7,2.2 2.6,-0.04 3.53,0.69 2.58,-1.06 3.69,-0.71 4.11,-3.06 1.68,0.47 1.47,1.46 3.34,-0.36 -1.36,3.25 -1.98,4.22 0.72,1.71 1.59,-0.53 2.76,0.65 2.16,-1.54 2.25,1.33 2.54,2.89 -0.31,1.45 -2.21,-0.46 -4.07,0.54 -1.98,1.16 -2.05,2.66 -4.28,1.55 -2.79,2.1 -2.88,-0.8 -1.58,-0.36 -1.47,2.54 0.89,1.5 0.46,1.28 -1.97,1.3 -2.01,2.05 -3.27,1.33 -4.21,0.15 -4.53,1.31 -3.26,2.01 -1.24,-1.16 -3.39,0 -4.15,-2.29 -2.77,-0.57 -3.73,0.53 -5.79,-0.85 -3.09,0.09 -1.64,-2.27 -1.28,-3.57 -1.73,-0.43 -3.39,-2.45 -3.78,-0.55 -3.33,-0.68 -1.01,-1.73 1.08,-4.73 -1.93,-3.31 -4,-1.57 -2.36,-2.23 z", +MR:"m 441.38,422.47 -1.85,-1.98 -1.7,-2.13 -1.86,-0.77 -1.34,-0.85 -1.57,0.03 -1.36,0.63 -1.4,-0.25 -0.96,0.93 -0.24,-1.56 0.78,-1.44 0.35,-2.75 -0.31,-2.91 -0.34,-1.47 0.28,-1.47 -0.72,-1.42 -1.48,-1.28 0.61,-1 10.98,0.02 -0.53,-4.35 0.69,-1.55 2.62,-0.27 -0.09,-7.86 9.21,0.17 0,-4.73 10.55,7.53 -4.29,0.05 1.35,13.06 1.35,12.68 0.49,0.36 -0.62,2.03 -11.25,0.04 -0.43,0.64 -1.08,-0.19 -1.58,0.57 -1.96,-0.8 -0.89,0.07 -0.47,1.7 z",MW:"m 572.4,495.94 -0.78,2.16 0.78,3.72 0.98,-0.04 1.01,0.92 1.17,2.08 0.24,3.72 -1.21,0.61 -0.86,2.01 -1.83,-1.79 -0.2,-2.04 0.59,-1.35 -0.17,-1.15 -1.1,-0.73 -0.78,0.26 -1.61,-1.38 -1.47,-0.74 0.85,-2.66 0.88,-0.99 -0.54,-2.36 0.56,-2.3 0.48,-0.77 -0.71,-2.4 -1.32,-1.26 2.74,0.52 0.57,0.78 0.95,1.32 z",MX:"m 203.14,388.97 -1.09,2.71 -0.49,2.21 -0.21,4.08 -0.27,1.47 0.49,1.64 0.87,1.47 0.56,2.31 1.86,2.21 0.65,1.69 1.1,1.45 2.98,0.79 1.16,1.22 2.46,-0.82 2.13,-0.29 2.1,-0.53 1.77,-0.51 1.78,-1.2 0.67,-1.73 0.23,-2.49 0.49,-0.87 1.89,-0.79 2.97,-0.69 2.48,0.1 1.7,-0.25 0.67,0.63 -0.09,1.44 -1.51,1.77 -0.66,1.81 0.51,0.51 -0.42,1.28 -0.7,2.29 -0.71,-0.75 -0.59,0.05 -0.53,0.04 -1,1.77 -0.51,-0.35 -0.34,0.14 0.02,0.43 -2.59,-0.03 -2.62,0 0,1.65 -1.27,0 1.04,0.98 1.04,0.67 0.31,0.63 0.46,0.18 -0.08,0.98 -3.59,0.01 -1.35,2.36 0.39,0.54 -0.32,0.68 -0.07,0.84 -3.17,-3.11 -1.45,-0.94 -2.29,-0.76 -1.56,0.21 -2.26,1.09 -1.41,0.29 -1.98,-0.76 -2.1,-0.56 -2.62,-1.33 -2.1,-0.41 -3.18,-1.35 -2.34,-1.4 -0.71,-0.78 -1.57,-0.17 -2.87,-0.93 -1.17,-1.34 -3.01,-1.67 -1.4,-1.87 -0.67,-1.45 0.93,-0.29 -0.29,-0.85 0.65,-0.77 0.01,-1.04 -0.94,-1.34 -0.26,-1.2 -0.94,-1.52 -2.47,-3.02 -2.82,-2.39 -1.36,-1.91 -2.41,-1.26 -0.51,-0.76 0.43,-1.92 -1.43,-0.73 -1.66,-1.52 -0.7,-2.19 -1.51,-0.26 -1.62,-1.66 -1.32,-1.55 -0.12,-1 -1.51,-2.42 -0.99,-2.48 0.04,-1.25 -2.03,-1.29 -0.93,0.14 -1.6,-0.9 -0.45,1.33 0.46,1.56 0.27,2.43 0.97,1.33 2.08,2.21 0.46,0.75 0.43,0.22 0.36,1.1 0.5,-0.05 0.57,2.04 0.85,0.8 0.59,1.11 1.77,1.6 0.93,2.89 0.83,1.35 0.78,1.44 0.15,1.62 1.35,0.1 1.13,1.39 1.02,1.36 -0.07,0.54 -1.18,1.11 -0.5,-0.01 -0.74,-1.85 -1.83,-1.73 -2.02,-1.48 -1.44,-0.78 0.09,-2.25 -0.42,-1.68 -1.34,-0.96 -1.93,-1.39 -0.37,0.4 -0.7,-0.82 -1.73,-0.75 -1.65,-1.83 0.2,-0.24 1.15,0.18 1.04,-1.18 0.11,-1.43 -2.16,-2.27 -1.64,-0.89 -1.04,-2.01 -1.04,-2.12 -1.3,-2.61 -1.14,-2.96 3.19,-0.25 3.56,-0.36 -0.26,0.64 4.23,1.61 6.4,2.31 5.58,-0.03 2.22,0 0,-1.35 4.86,0 1.02,1.17 1.44,1.03 1.66,1.43 0.93,1.69 0.7,1.76 1.45,0.97 2.33,0.96 1.76,-2.53 2.3,-0.06 1.97,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.18,0.96 1.99,0.68 z",MY:"m 758.9,446.32 0.22,1.44 1.85,-0.33 0.92,-1.15 0.64,0.26 1.66,1.69 1.18,1.87 0.16,1.88 -0.3,1.27 0.27,0.96 0.21,1.65 0.99,0.77 1.1,2.46 -0.05,0.94 -1.99,0.19 -2.65,-2.06 -3.32,-2.21 -0.33,-1.42 -1.62,-1.87 -0.39,-2.31 -1.01,-1.52 0.31,-2.04 -0.62,-1.19 0.49,-0.5 2.28,1.22 z m 49.19,4.83 -2.06,0.95 -2.43,-0.47 -3.22,0 -0.97,3.17 -1.08,0.97 -1.44,3.88 -2.29,0.59 -2.65,-0.78 -1.34,0.24 -1.63,1.41 -1.79,-0.2 -1.81,0.57 -1.92,-1.57 -0.47,-1.86 2.05,0.96 2.17,-0.52 0.56,-2.36 1.2,-0.53 3.36,-0.6 2.01,-2.21 1.38,-1.77 1.28,1.45 0.59,-0.95 1.34,0.09 0.16,-1.78 0.13,-1.38 2.16,-1.95 1.41,-2.19 1.13,-0.01 1.44,1.42 0.13,1.22 1.85,0.78 2.34,0.84 -0.2,1.1 -1.88,0.14 0.49,1.35 z",MZ:"m 572.4,495.94 2.11,-0.23 3.37,0.8 0.74,-0.36 1.95,-0.07 1,-0.85 1.68,0.04 3.06,-1.1 2.23,-1.64 0.46,1.27 -0.12,2.83 0.35,2.5 0.11,4.48 0.49,1.4 -0.83,2.07 -1.09,2.01 -1.79,1.8 -2.56,1.11 -3.16,1.41 -3.17,3.15 -1.08,0.54 -1.96,2.09 -1.15,0.69 -0.24,2.12 1.33,2.25 0.55,1.76 0.04,0.9 0.49,-0.15 -0.08,2.96 -0.45,1.41 0.66,0.52 -0.42,1.27 -1.17,1.09 -2.31,1.04 -3.37,1.66 -1.23,1.15 0.24,1.3 0.71,0.21 -0.24,1.64 -2.12,-0.02 -0.24,-1.38 -0.42,-1.39 -0.24,-1.11 0.5,-3.43 -0.73,-2.17 -1.34,-4.26 2.95,-3.41 0.74,-2.15 0.43,-0.27 0.31,-1.74 -0.45,-0.88 0.12,-2.2 0.55,-2.04 -0.01,-3.69 -1.45,-0.94 -1.34,-0.21 -0.6,-0.72 -1.3,-0.61 -2.34,0.06 -0.18,-1.08 -0.27,-2.05 8.51,-2.38 1.61,1.38 0.78,-0.26 1.1,0.73 0.17,1.15 -0.59,1.35 0.2,2.04 1.83,1.79 0.86,-2.01 1.21,-0.61 -0.24,-3.72 -1.17,-2.08 -1.01,-0.92 -0.98,0.04 -0.78,-3.72 z",NA:"m 521.33,546.79 -2.08,-2.39 -1.1,-2.3 -0.62,-3.03 -0.69,-2.25 -0.94,-4.72 -0.06,-3.63 -0.36,-1.64 -1.09,-1.24 -1.45,-2.47 -1.47,-3.57 -0.61,-1.85 -2.29,-2.87 -0.17,-2.25 1.35,-0.55 1.68,-0.5 1.82,0.09 1.67,1.32 0.42,-0.21 11.37,-0.12 1.94,1.4 6.79,0.41 5.15,-1.19 2.3,-0.67 1.82,0.17 1.1,0.66 0.03,0.24 -1.58,0.66 -0.86,0.01 -1.78,1.15 -1.08,-1.21 -4.32,1.03 -2.09,0.09 -0.08,10.57 -2.76,0.11 0,8.86 -0.01,11.52 -2.5,1.63 -1.5,0.23 -1.77,-0.6 -1.26,-0.23 -0.47,-1.36 -1.11,-0.87 z",NC:"m 940.33,523.73 2.3,1.86 1.45,1.38 -1.06,0.73 -1.55,-0.82 -2,-1.35 -1.81,-1.59 -1.85,-2.1 -0.39,-1.01 1.2,0.05 1.58,1.01 1.23,1.01 z",NE:"m 481.54,430.13 0.07,-1.95 -3.24,-0.65 -0.08,-1.38 -1.58,-1.87 -0.38,-1.31 0.22,-1.4 1.8,-0.11 1.04,-1.03 3.82,-0.25 2.49,-0.45 0.24,-1.79 1.54,-1.94 -0.01,-6.75 3.95,-1.32 8.12,-5.85 9.61,-5.75 4.43,1.31 1.58,1.66 1.98,-1.12 0.69,4.67 1.05,0.78 0.05,0.95 1.16,1.02 -0.61,1.28 -1.08,5.98 -0.14,3.79 -3.58,2.74 -1.21,3.8 1.17,1.06 -0.01,1.85 1.8,0.07 -0.28,1.34 -0.79,0.17 -0.09,0.9 -0.53,0.07 -1.89,-3.13 -0.66,-0.12 -2.19,1.6 -2.17,-0.83 -1.51,-0.17 -0.81,0.4 -1.65,-0.08 -1.65,1.22 -1.43,0.07 -3.39,-1.48 -1.33,0.7 -1.43,-0.05 -1.05,-1.08 -2.82,-1.07 -3.01,0.34 -0.73,0.62 -0.39,1.65 -0.81,1.15 -0.19,2.54 -2.14,-1.64 -1.01,0.01 z",NG:"m 499.34,450.33 -2.91,1 -1.07,-0.14 -1.08,0.62 -2.24,-0.06 -1.5,-1.75 -0.92,-2.02 -1.99,-1.84 -2.11,0.03 -2.47,0 0.16,-4.53 -0.07,-1.79 0.53,-1.77 0.86,-0.87 1.36,-1.75 -0.29,-0.76 0.55,-1.14 -0.63,-1.68 0.11,-0.95 0.19,-2.54 0.81,-1.15 0.39,-1.65 0.73,-0.62 3.01,-0.34 2.82,1.07 1.05,1.08 1.43,0.05 1.33,-0.7 3.39,1.48 1.43,-0.07 1.65,-1.22 1.65,0.08 0.81,-0.4 1.51,0.17 2.17,0.83 2.19,-1.6 0.66,0.12 1.89,3.13 0.53,-0.07 1.11,1.14 -0.31,0.51 -0.15,0.95 -2.36,2.2 -0.74,1.81 -0.4,1.47 -0.59,0.63 -0.57,1.97 -1.5,1.16 -0.43,1.42 -0.63,1.14 -0.26,1.16 -1.93,0.95 -1.57,-1.15 -1.07,0.04 -1.67,1.64 -0.81,0.03 -1.33,2.7 z",NI:"m 235.18,432.56 -0.97,-0.9 -1.31,-1.15 -0.62,-0.96 -1.18,-0.89 -1.41,-1.29 0.31,-0.44 0.47,0.43 0.21,-0.21 0.87,-0.11 0.35,-0.66 0.41,-0.02 -0.06,-1.41 0.66,-0.07 0.59,0.02 0.6,-0.76 0.83,0.58 0.29,-0.36 0.51,-0.34 0.98,-0.79 0.05,-0.6 0.27,0.03 0.36,-0.69 0.29,-0.08 0.48,0.44 0.56,0.13 0.62,-0.37 0.71,0 0.97,-0.38 0.39,-0.39 0.96,0.06 -0.24,0.28 -0.14,0.64 0.28,1.05 -0.64,0.98 -0.3,1.15 -0.1,1.27 0.16,0.73 0.07,1.29 -0.43,0.28 -0.26,1.22 0.19,0.75 -0.58,0.73 0.14,0.76 0.42,0.47 -0.67,0.6 -0.82,-0.19 -0.47,-0.58 -0.89,-0.24 -0.64,0.37 -1.85,-0.75 z",NL:"m 492.53,286.23 2.33,0.13 0.53,1.58 -0.7,4.23 -0.71,1.71 -1.69,0 0.48,4.69 -1.55,-1.04 -1.77,-1.95 -2.6,0.93 -2.05,-0.35 1.44,-1.24 2.46,-6.74 z",NO:"m 554.48,175.86 8.77,6.24 -3.61,2.23 3.07,5.11 -4.77,3.19 -2.26,0.72 1.19,-5.59 -3.6,-3.25 -4.35,2.78 -1.38,5.85 -2.67,3.44 -3.01,-1.87 -3.66,0.38 -3.12,-4.15 -1.68,2.09 -1.74,0.32 -0.41,5.08 -5.28,-1.22 -0.74,4.22 -2.69,-0.03 -1.85,5.24 -2.8,7.87 -4.35,9.5 1.02,2.23 -0.98,2.55 -2.78,-0.11 -1.82,5.91 0.17,8.04 1.79,2.98 -0.93,6.73 -2.33,3.81 -1.24,3.15 -1.88,-3.35 -5.54,6.27 -3.74,1.24 -3.88,-2.71 -1,-5.86 -0.89,-13.26 2.58,-3.88 7.4,-5.18 5.54,-6.59 5.13,-9.3 6.74,-13.76 4.7,-5.67 7.71,-9.89 6.15,-3.59 4.61,0.44 4.27,-6.99 5.11,0.38 5.03,-1.74 z",NP:"m 722.58,382.7 -0.22,1.35 0.37,1.99 -0.32,1.24 -2.33,0.05 -3.38,-0.73 -2.16,-0.29 -1.62,-1.59 -3.84,-0.41 -3.66,-1.77 -2.64,-1.55 -2.72,-1.2 1.09,-2.99 1.78,-1.46 1.16,-0.78 2.25,1 2.83,2.09 1.57,0.46 0.94,1.53 2.18,0.63 2.28,1.39 3.17,0.73 z",NZ:"m 960.63,588.88 0.64,1.53 1.99,-1.5 0.81,1.57 0,1.57 -1.04,1.74 -1.83,2.8 -1.43,1.54 1.03,1.86 -2.16,0.05 -2.4,1.46 -0.75,2.57 -1.59,4.03 -2.2,1.8 -1.4,1.16 -2.58,-0.09 -1.82,-1.34 -3.05,-0.28 -0.47,-1.48 1.51,-2.96 3.53,-3.87 1.81,-0.73 2.01,-1.47 2.4,-2.01 1.68,-1.98 1.25,-2.81 1.06,-0.95 0.42,-2.07 1.97,-1.7 0.61,1.56 z m 4.46,-17.02 2.03,3.67 0.06,-2.38 1.27,0.95 0.42,2.65 2.26,1.15 1.89,0.28 1.6,-1.35 1.42,0.41 -0.68,3.15 -0.85,2.09 -2.14,-0.07 -0.75,1.1 0.26,1.56 -0.41,0.68 -1.06,1.97 -1.39,2.53 -2.17,1.49 -0.48,-0.98 -1.17,-0.54 1.62,-3.04 -0.92,-2.01 -3.02,-1.45 0.08,-1.31 2.03,-1.25 0.47,-2.74 -0.13,-2.28 -1.14,-2.34 0.08,-0.61 -1.34,-1.43 -2.21,-3.04 -1.17,-2.41 1.04,-0.27 1.53,1.89 2.18,0.89 0.79,3.04 z",OM:"m 640.54,403.43 -1.05,2.04 -1.27,-0.16 -0.58,0.71 -0.45,1.5 0.34,1.98 -0.26,0.36 -1.29,-0.01 -1.75,1.1 -0.27,1.43 -0.64,0.62 -1.74,-0.02 -1.1,0.74 0.01,1.18 -1.36,0.81 -1.55,-0.27 -1.88,0.98 -1.3,0.16 -0.92,-2.04 -2.19,-4.84 8.41,-2.96 1.87,-5.97 -1.29,-2.14 0.07,-1.22 0.82,-1.26 0.01,-1.25 1.27,-0.6 -0.5,-0.42 0.23,-2 1.43,-0.01 1.26,2.09 1.57,1.11 2.06,0.4 1.66,0.55 1.27,1.74 0.76,1 1,0.38 -0.01,0.67 -1.02,1.79 -0.45,0.84 -1.17,0.99 z m -6.92,-14.54 -0.37,0.56 -0.53,-1.06 0.82,-1.06 0.35,0.27 -0.27,1.29 z",PA:"m 257.13,443.46 -0.93,-0.81 -0.6,-1.52 0.69,-0.75 -0.71,-0.19 -0.52,-0.93 -1.4,-0.78 -1.23,0.18 -0.56,0.98 -1.14,0.7 -0.61,0.1 -0.27,0.59 1.33,1.52 -0.76,0.36 -0.41,0.42 -1.3,0.14 -0.49,-1.68 -0.36,0.48 -0.93,-0.16 -0.56,-1.14 -1.15,-0.18 -0.73,-0.33 -1.2,0 -0.09,0.61 -0.32,-0.42 0.15,-0.56 0.23,-0.57 -0.11,-0.51 0.42,-0.34 -0.58,-0.42 -0.02,-1.13 1.09,-0.25 1,1.01 -0.06,0.6 1.12,0.12 0.27,-0.23 0.77,0.7 1.38,-0.21 1.19,-0.71 1.7,-0.57 0.96,-0.84 1.55,0.16 -0.11,0.28 1.57,0.1 1.25,0.49 0.91,0.84 1.06,0.78 -0.34,0.42 0.65,1.65 -0.53,0.84 -0.91,-0.2 z",PE:"m 280.38,513.39 -0.75,1.51 -1.44,0.74 -2.81,-1.68 -0.25,-1.2 -5.55,-2.92 -5.03,-3.17 -2.17,-1.78 -1.16,-2.37 0.46,-0.83 -2.37,-3.75 -2.77,-5.24 -2.64,-5.62 -1.15,-1.29 -0.88,-2.06 -2.18,-1.84 -2,-1.13 0.91,-1.25 -1.36,-2.67 0.87,-1.95 2.24,-1.77 0.33,1.17 -0.8,0.66 0.07,1.02 1.16,-0.22 1.14,0.3 1.17,1.41 1.59,-1.15 0.53,-1.88 1.72,-2.43 3.37,-1.1 3.06,-2.92 0.87,-1.81 -0.39,-2.11 0.75,-0.27 1.86,1.32 0.89,1.32 1.3,0.72 1.65,2.92 2.09,0.35 1.55,-0.74 1.01,0.48 1.68,-0.24 2.15,1.31 -1.81,2.84 0.84,0.06 1.4,1.49 -2.53,-0.13 -0.37,0.42 -2.3,0.53 -3.2,1.91 -0.21,1.3 -0.71,0.98 0.28,1.51 -1.7,0.81 0,1.19 -0.74,0.51 1.17,2.53 1.56,1.72 -0.59,1.21 1.86,0.16 1.06,1.51 2.47,0.07 2.3,-1.66 -0.19,4.3 1.28,0.33 1.58,-0.49 2.43,4.58 -0.61,0.96 -0.13,2.02 -0.06,2.44 -1.1,1.44 0.51,1.07 -0.65,0.97 1.21,2.44 z",PG:"m 912.57,482.67 -0.79,0.28 -1.21,-1.08 -1.23,-1.78 -0.6,-2.13 0.39,-0.27 0.3,0.83 0.85,0.63 1.36,1.77 1.32,0.95 -0.39,0.8 z m -10.93,-3.75 -1.47,0.23 -0.44,0.79 -1.53,0.68 -1.44,0.66 -1.49,0 -2.3,-0.81 -1.6,-0.78 0.23,-0.87 2.51,0.41 1.53,-0.22 0.42,-1.34 0.4,-0.07 0.27,1.49 1.6,-0.21 0.79,-0.96 1.57,-1 -0.31,-1.65 1.68,-0.05 0.57,0.46 -0.06,1.55 -0.93,1.69 z m -13.43,5.35 2.5,1.84 1.82,2.99 1.61,-0.09 -0.11,1.25 2.17,0.48 -0.84,0.53 2.98,1.19 -0.31,0.82 -1.86,0.2 -0.69,-0.73 -2.41,-0.32 -2.83,-0.43 -2.18,-1.8 -1.59,-1.55 -1.46,-2.46 -3.66,-1.23 -2.38,0.8 -1.71,0.93 0.36,2.08 -2.2,0.97 -1.57,-0.47 -2.9,-0.12 -0.05,-9.16 -0.05,-9.1 4.87,1.92 5.18,1.6 1.93,1.43 1.56,1.41 0.43,1.65 4.67,1.73 0.68,1.49 -2.58,0.3 0.62,1.85 z m 16.67,-8.09 -0.88,0.74 -0.53,-1.65 -0.65,-1.08 -1.27,-0.91 -1.6,-1.19 -2.02,-0.82 0.78,-0.67 1.51,0.78 0.95,0.61 1.18,0.67 1.12,1.17 1.07,0.89 0.34,1.46 z",PH:"m 829.84,440.11 0.29,1.87 0.17,1.58 -0.96,2.57 -1.02,-2.86 -1.31,1.42 0.9,2.06 -0.8,1.31 -3.3,-1.63 -0.79,-2.03 0.86,-1.33 -1.78,-1.33 -0.88,1.17 -1.32,-0.11 -2.08,1.57 -0.46,-0.82 1.1,-2.37 1.77,-0.79 1.53,-1.06 0.99,1.27 2.13,-0.77 0.46,-1.26 1.98,-0.08 -0.17,-2.18 2.27,1.34 0.24,1.42 0.18,1.04 z m -6.71,-5.26 -1.01,0.93 -0.88,1.79 -0.88,0.84 -1.73,-1.95 0.58,-0.76 0.7,-0.79 0.31,-1.76 1.55,-0.17 -0.45,1.91 2.08,-2.74 -0.27,2.7 z m -15.36,2.72 -3.73,2.67 1.38,-1.97 2.03,-1.74 1.68,-1.96 1.47,-2.82 0.5,2.31 -1.85,1.56 -1.48,1.95 z m 9.48,-7.3 1.68,0.88 1.78,0 -0.05,1.19 -1.3,1.2 -1.78,0.85 -0.1,-1.32 0.2,-1.45 -0.43,-1.35 z m 10.14,-0.77 0.79,3.18 -2.16,-0.75 0.06,0.95 0.69,1.75 -1.33,0.63 -0.12,-1.99 -0.84,-0.15 -0.44,-1.72 1.65,0.23 -0.04,-1.08 -1.71,-2.18 2.69,0.06 0.76,1.07 z m -11.14,-2.59 -0.74,2.47 -1.2,-1.42 -1.43,-2.18 2.4,0.1 0.97,1.03 z m -0.58,-15.74 1.73,0.84 0.86,-0.76 0.25,0.75 -0.46,1.22 0.96,2.09 -0.74,2.42 -1.65,0.96 -0.44,2.33 0.63,2.29 1.49,0.32 1.24,-0.34 3.5,1.59 -0.27,1.56 0.92,0.69 -0.29,1.32 -2.18,-1.4 -1.04,-1.5 -0.72,1.05 -1.79,-1.72 -2.55,0.42 -1.4,-0.63 0.14,-1.19 0.88,-0.73 -0.84,-0.67 -0.36,1.04 -1.38,-1.65 -0.42,-1.26 -0.1,-2.77 1.13,0.96 0.29,-4.55 0.91,-2.66 1.7,-0.02 z",PL:"m 517.61,297.22 -1.15,-2.86 0.22,-1.56 -0.7,-2.45 -1.01,-1.65 0.78,-1.25 -0.66,-2.39 1.92,-1.39 4.37,-2.22 3.54,-1.64 2.79,0.82 0.21,1.18 2.71,0.06 3.45,0.55 5.16,-0.08 1.44,0.52 0.67,1.46 0.12,2.09 0.78,1.78 -0.02,1.85 -1.68,0.94 0.87,2.12 0.05,2.01 1.41,3.89 -0.3,1.24 -1.39,0.51 -2.55,3.61 0.72,1.92 -0.61,-0.25 -2.66,-1.64 -2.02,0.6 -1.32,-0.44 -1.66,0.92 -1.41,-1.52 -1.16,0.58 -0.16,-0.26 -1.29,-2.13 -2.08,-0.26 -0.27,-1.37 -1.92,-0.49 -0.42,1.13 -1.52,-0.9 0.17,-1.21 -2.09,-0.39 z",PK:"m 686.24,352.01 2.07,1.63 0.83,2.66 4.61,1.39 -2.71,2.86 -3.12,0.51 -4.26,-0.83 -1.37,1.46 0.99,2.95 0.97,2.25 2.27,1.63 -2.39,1.91 0.04,2.33 -2.72,3.24 -1.76,3.26 -2.93,3.32 -3.26,-0.24 -3.09,3.3 1.84,1.4 0.32,2.39 1.57,1.56 0.56,2.64 -6.17,-0.01 -1.87,2.04 -2.05,-0.77 -0.84,-2.2 -2.17,-2.34 -5.16,0.58 -4.56,0.05 -3.95,0.44 1.06,-3.6 4.04,-1.61 -0.23,-1.44 -1.34,-0.51 -0.08,-2.77 -2.68,-1.4 -1.13,-1.93 -1.38,-1.68 4.69,1.64 2.81,-0.48 1.67,0.4 0.57,-0.7 1.95,0.28 3.65,-1.33 0.1,-2.75 1.56,-1.84 2.09,0 0.3,-0.91 2.15,-0.43 1.03,0.3 1.1,-0.92 -0.15,-1.98 1.19,-2 1.78,-0.85 -1.1,-2.22 2.67,0.11 0.77,-1.22 -0.12,-1.3 1.4,-1.43 -0.33,-1.7 -0.66,-1.46 1.64,-1.51 3.01,-0.73 3.22,-0.4 1.42,-0.65 z",PR:"m 289.66,411.14 1.43,0.26 0.51,0.58 -0.72,0.74 -2.11,-0.02 -1.64,0.1 -0.16,-1.25 0.39,-0.43 z",PS:"m 575.17,368.12 0,2.01 -0.42,0.96 -1.32,0.45 0.13,-0.86 0.71,-0.46 -0.7,-0.36 0.58,-2.2 z",PT:"m 450.17,334.81 1.02,-0.95 1.14,-0.55 0.71,1.84 1.65,-0.01 0.48,-0.47 1.64,0.13 0.78,1.88 -1.3,1 -0.03,2.88 -0.46,0.53 -0.11,1.72 -1.21,0.3 1.12,2.17 -0.77,2.35 0.96,1.06 -0.38,0.96 -1.04,1.32 0.23,1.16 -1.12,0.91 -1.48,-0.49 -1.45,0.38 0.43,-2.74 -0.26,-2.18 -1.26,-0.33 -0.67,-1.35 0.23,-2.36 1.11,-1.31 0.2,-1.47 0.59,-2.21 -0.07,-1.57 -0.56,-1.34 z",PY:"m 299.74,527.24 1.11,-3.59 0.07,-1.6 1.34,-2.62 4.89,-0.86 2.6,0.05 2.62,1.51 0.04,0.91 0.83,1.66 -0.18,4.06 2.96,0.58 1.14,-0.59 1.89,0.82 0.53,0.9 0.26,2.77 0.33,1.18 1.04,0.13 1.05,-0.49 1.01,0.55 0,1.68 -0.38,1.82 -0.55,1.78 -0.46,2.75 -2.54,2.4 -2.22,0.5 -3.15,-0.48 -2.82,-0.85 2.76,-4.73 -0.41,-1.37 -2.88,-1.2 -3.43,-2.26 -2.29,-0.46 z",QA:"m 617.97,392.41 -0.19,-2.24 0.76,-1.62 0.76,-0.34 0.85,0.97 0.05,1.81 -0.61,1.81 -0.78,0.22 z",RO:"m 539.18,311.11 1.21,-0.89 1.74,0.46 1.79,0.02 1.3,1.01 0.96,-0.64 2.07,-0.4 0.71,-0.98 1.18,0.01 0.85,0.4 0.87,1.24 0.89,1.75 1.62,2.44 0.09,1.79 -0.3,1.72 0.51,1.83 1.25,0.73 1.31,-0.64 1.28,0.68 0.06,1.03 -1.36,0.84 -0.85,-0.36 -0.78,4.71 -1.65,-0.41 -2.04,-1.41 -3.3,0.9 -1.39,0.99 -4.12,-0.2 -2.16,-0.61 -1.08,0.29 -0.81,-1.6 -0.51,-0.68 0.65,-0.66 -0.7,-0.49 -0.88,0.88 -1.63,-1.14 -0.22,-1.63 -1.71,-0.94 -0.31,-1.27 -1.52,-1.58 2.25,-0.76 1.69,-2.76 1.33,-2.8 z",RS:"m 534.03,321.15 1.71,0.94 0.22,1.63 1.63,1.14 0.88,-0.88 0.7,0.49 -0.65,0.66 0.51,0.68 -0.69,0.88 0.25,1.42 1.36,1.66 -1.07,1.19 -0.47,1.21 0.31,0.45 -0.47,0.54 -1.29,0.06 -0.96,0.22 -0.09,-0.28 0.33,-0.45 0.32,-0.93 -0.4,0.02 -0.55,-0.7 -0.46,-0.18 -0.36,-0.61 -0.53,-0.24 -0.4,-0.54 -0.5,0.22 -0.39,1.26 -0.67,0.28 0.23,-0.33 -1.07,-0.79 -0.92,-0.41 -0.41,-0.54 -0.74,-0.66 0.66,-0.17 0.41,-1.82 -1.35,-1.5 0.7,-1.72 -1.02,0.01 1.08,-1.49 -0.89,-1.14 -0.68,-1.55 2.15,-1.05 1.75,0.17 1.52,1.58 z",RU:"m 1008.52,216 -2.78,2.97 -4.6,0.7 -0.07,6.46 -1.12,1.35 -2.63,-0.19 -2.14,-2.26 -3.73,-1.92 -0.63,-2.89 -2.85,-1.1 -3.19,0.87 -1.52,-2.37 0.61,-2.55 -3.36,1.64 1.26,3.19 -1.59,2.83 -0.02,0.04 -3.6,2.89 -3.63,-0.48 2.53,3.44 1.67,5.2 1.29,1.67 0.33,2.53 -0.72,1.6 -5.23,-1.32 -7.84,4.51 -2.49,0.69 -4.29,4.1 -4.07,3.5 -1.03,2.55 -4.01,-3.9 -7.31,4.42 -1.28,-2.08 -2.7,2.39 -3.75,-0.76 -0.9,3.63 -3.36,5.22 0.1,2.14 3.19,1.17 -0.38,7.46 -2.6,0.19 -1.2,4.15 1.17,2.1 -4.9,2.47 -0.97,5.4 -4.18,1.14 -0.84,4.66 -4.04,4.18 -1.04,-3.08 -1.2,-6.69 -1.56,-10.65 1.35,-6.95 2.37,-3.07 0.15,-2.44 4.36,-1.18 5.01,-6.78 4.83,-5.73 5.04,-4.57 2.25,-8.37 -3.41,0.51 -1.68,4.92 -7.11,6.36 -2.3,-7.14 -7.24,2 -7.02,9.56 2.32,3.38 -6.26,1.42 -4.33,0.56 0.2,-3.95 -4.36,-0.84 -3.47,2.7 -8.57,-0.94 -9.22,1.62 -9.08,10.33 -10.75,11.78 4.42,0.61 1.38,3 2.72,1.05 1.79,-2.38 3.08,0.31 4.05,5.19 0.09,3.92 -2.19,4.51 -0.24,5.27 -1.26,6.85 -4.23,6.01 -0.94,2.82 -3.81,4.66 -3.78,4.53 -1.81,2.28 -3.74,2.25 -1.77,0.05 -1.76,-1.86 -3.76,2.79 -0.44,1.26 -0.39,-0.66 -0.02,-1.93 1.43,-0.1 0.4,-4.55 -0.74,-3.36 2.41,-1.4 3.4,0.7 1.89,-3.89 0.96,-4.46 1.09,-1.51 1.47,-3.76 -4.63,1.24 -2.43,1.65 -4.26,0 -1.13,-3.95 -3.32,-3.03 -4.88,-1.38 -1.04,-4.28 -0.98,-2.73 -1.05,-1.94 -1.73,-4.61 -2.46,-1.71 -4.2,-1.39 -3.72,0.13 -3.48,0.84 -2.32,2.31 1.54,1.1 0.04,2.52 -1.56,1.45 -2.53,4.72 0.03,1.93 -3.95,2.74 -3.37,-1.63 -3.35,0.36 -1.47,-1.46 -1.68,-0.47 -4.11,3.06 -3.69,0.71 -2.58,1.06 -3.53,-0.7 -2.6,0.04 -1.7,-2.2 -2.75,-2.09 -2.81,-0.58 -3.55,0.57 -2.65,0.81 -3.98,-1.84 -0.53,-3.32 -3.3,-1.15 -2.54,-0.53 -3.14,-1.87 -2.9,4.66 1.14,2.6 -2.73,3.03 -4.05,-1.09 -2.8,-0.16 -1.87,-2.04 -2.92,-0.06 -2.44,-1.35 -4.26,2.07 -5.35,3.74 -2.96,0.74 -1.1,0.35 -1.49,-2.63 -3.61,0.58 -1.19,-1.84 -1.96,-0.85 -1.35,-2.55 -1.55,-0.8 -4.03,1.14 -3.86,-2.57 -1.49,2.33 -6.27,-11.58 -3.58,-3.66 1.03,-1.5 -7.03,4.49 -2.69,0.27 0.23,-2.58 -3.6,-1.63 -2.93,1.17 -0.88,-5.01 -5.04,-1.06 -2.52,2.03 -7.02,1.79 -1.37,1.19 -10.49,1.66 -1.29,1.62 2.02,3.21 -2.69,1.2 0.53,1.25 -2.69,2.22 4.54,3.1 -0.7,2.11 -3.94,-0.19 -0.81,1.31 -3.59,-2.29 -4.45,0.09 -2.98,1.87 -3.32,-1.79 -6.18,-3.1 -4.38,0.12 -5.79,4.85 -0.35,3.19 -2.88,-2.53 -2.24,4.77 0.82,0.87 -1.62,3.21 2.38,2.84 2.08,-0.12 1.79,2.76 -0.28,2.1 1.42,0.66 -1.28,2.39 -2.72,0.66 -2.79,4.09 2.55,3.7 -0.28,2.59 3.06,4.46 -1.67,1.51 -0.48,0.95 -1.24,-0.25 -1.93,-2.27 -0.79,-0.13 -1.76,-0.87 -0.86,-1.55 -2.62,-0.79 -1.7,0.6 -0.49,-0.71 -3.82,-1.83 -4.13,-0.62 -2.37,-0.66 -0.34,0.45 -3.57,-3.27 -3.2,-1.48 -2.42,-2.32 2.04,-0.64 2.33,-3.35 -1.57,-1.6 4.13,-1.67 -0.07,-0.9 -2.52,0.66 0.09,-1.83 1.45,-1.16 2.71,-0.31 0.44,-1.4 -0.62,-2.33 1.14,-2.23 -0.03,-1.26 -4.13,-1.41 -1.64,0.05 -1.73,-2.04 -2.15,0.69 -3.56,-1.54 0.06,-0.87 -1,-1.93 -2.24,-0.22 -0.23,-1.39 0.7,-0.91 -1.79,-2.58 -2.91,0.44 -0.85,-0.23 -0.71,1.04 -1.05,-0.18 -0.69,-2.94 -0.66,-1.54 0.54,-0.44 2.26,0.16 1.09,-1.02 -0.81,-1.25 -1.89,-0.83 0.17,-0.86 -1.14,-0.87 -1.76,-3.15 0.6,-1.31 -0.27,-2.31 -2.74,-1.18 -1.47,0.59 -0.4,-1.24 -2.95,-1.26 -0.9,-2.99 -0.24,-2.49 -1.35,-1.19 1.2,-1.66 -0.83,-4.96 2,-3.13 -0.42,-0.96 3.19,-3.07 -2.94,-2.68 6,-7.41 2.6,-3.45 1.05,-3.1 -4.15,-4.26 1.15,-4.15 -2.52,-4.85 1.89,-5.76 -3.26,-7.96 2.59,-5.48 -4.29,-4.99 0.41,-5.4 2.26,-0.72 4.77,-3.19 2.89,-2.81 4.61,4.86 7.68,1.88 10.59,8.65 2.15,3.51 0.19,4.8 -3.11,3.69 -4.58,1.85 -12.52,-5.31 -2.06,0.9 4.57,5.1 0.18,3.15 0.18,6.75 3.61,1.97 2.19,1.66 0.36,-3.11 -1.69,-2.8 1.78,-2.51 6.78,4.1 2.36,-1.59 -1.89,-4.88 6.53,-6.74 2.59,0.4 2.62,2.43 1.63,-4.81 -2.34,-4.28 1.37,-4.41 -2.06,-4.69 7.84,2.44 1.6,4.18 -3.55,0.91 0.02,4.04 2.21,2.44 4.33,-1.54 0.69,-4.61 5.86,-3.52 9.79,-6.54 2.11,0.38 -2.76,4.64 3.48,0.78 2.01,-2.58 5.25,-0.21 4.16,-3.19 3.2,4.62 3.19,-5.09 -2.94,-4.58 1.46,-2.66 8.28,2.44 3.88,2.49 10.16,8.8 1.88,-3.97 -2.85,-4.11 -0.08,-1.68 -3.38,-0.78 0.92,-3.83 -1.5,-6.49 -0.08,-2.74 5.17,-7.99 1.84,-8.42 2.08,-1.88 7.42,2.51 0.58,5.18 -2.66,7.28 1.74,2.78 0.9,5.94 -0.64,11.07 3.09,4.73 -1.2,5.01 -5.49,10.2 3.21,1.02 1.12,-2.51 3.08,-1.82 0.74,-3.55 2.43,-3.49 -1.63,-4.26 1.31,-5.08 -3.07,-0.64 -0.67,-4.42 2.24,-8.28 -3.64,-7.03 5.02,-6.04 -0.65,-6.62 1.4,-0.22 1.47,5.19 -1.11,8.67 3,1.59 -1.28,-6.37 4.69,-3.58 5.82,-0.49 5.18,5.18 -2.49,-7.62 -0.28,-10.28 4.88,-2.02 6.74,0.44 6.08,-1.32 -2.28,-5.38 3.25,-7.02 3.22,-0.3 5.45,-5.51 7.4,-1.51 0.94,-3.15 7.36,-1.08 2.29,2.61 6.29,-6.24 5.15,0.2 0.77,-5.24 2.68,-5.33 6.62,-5.31 4.81,4.21 -3.82,3.13 6.35,1.92 0.76,6.03 2.56,-2.94 8.2,0.16 6.32,5.84 2.25,4.35 -0.7,5.85 -3.1,3.24 -7.37,5.92 -2.11,3.08 3.48,1.43 4.15,2.55 2.52,-1.91 1.43,6.39 1.23,-2.56 4.48,-1.57 9,1.65 0.68,4.58 11.72,1.43 0.16,-7.47 5.95,1.74 4.48,-0.05 4.53,5.14 1.29,6.04 -1.66,3.84 3.52,6.98 4.41,3.49 2.71,-9.18 4.5,4 4.78,-2.38 5.43,2.72 2.07,-2.47 4.59,1.24 -2.02,-8.4 3.7,-4.07 25.32,6.06 2.39,5.35 7.34,6.65 11.32,-1.62 5.58,1.41 2.33,3.5 -0.34,6.02 3.45,2.29 3.75,-1.64 4.97,-0.21 5.29,1.57 5.31,-0.89 4.88,6.99 3.47,-2.48 -2.27,-5.07 1.25,-3.62 8.95,2.29 5.83,-0.49 8.06,3.84 3.92,3.44 6.87,5.86 7.35,7.34 -0.24,4.44 1.89,1.74 -0.65,-5.15 7.61,1.07 5.55,6.53 z m -127.43,90.5 -2.82,-7.68 -1.16,-4.51 0.07,-4.5 -0.97,-4.5 -0.73,-3.15 -1.25,0.67 1.11,2.21 -2.59,2.17 -0.25,6.3 1.64,4.41 -0.12,5.85 -0.65,3.24 0.32,4.54 -0.31,4.01 0.52,3.4 1.84,-3.13 2.13,2.44 0.08,-2.84 -2.73,-4.23 1.72,-6.11 4.15,1.41 z m -343.02,-27.48 -2.94,-0.86 -3.87,1.58 -0.64,2.13 3.45,0.55 5.16,-0.07 -0.22,-1.23 0.3,-1.33 -1.24,-0.77 z M 980.2,178.9 l 3.66,-0.52 2.89,-2.06 0.24,-1.19 -4.06,-2.51 -2.38,-0.02 -0.36,0.37 -3.57,3.64 0.5,2.73 3.08,-0.44 z m -109.88,-27.09 -2.66,3.92 0.49,0.52 5.75,1.08 4.25,-0.07 -0.34,-2.57 -3.98,-3.81 -3.51,0.93 z m 24.57,-9.53 3.24,-4.25 -7.04,-2.88 -5.23,-1.68 -0.67,3.59 5.21,4.27 4.49,0.95 z m -25.13,-1.69 10.33,0.3 2.21,-8.14 -10.13,-6.07 -7.4,-0.51 -3.7,2.18 -1.51,7.75 5.55,7.01 4.65,-2.52 z m -247.12,25.94 -2.87,1.96 0.41,4.83 5.08,2.35 0.74,3.82 9.16,1.1 1.66,-0.74 -5.36,-7.11 -0.57,-7.52 4.39,-9.14 4.18,-9.82 8.71,-10.17 8.56,-5.34 9.93,-5.74 1.88,-3.71 -1.95,-4.83 -5.46,1.6 -4.8,4.49 -9.33,2.22 -9.26,7.41 -6.27,5.85 0.76,4.87 -6.71,9.03 2.58,1.22 -5.56,8.27 0.1,5.1 z m 147.48,-67.94 0.83,-5.72 -7.11,-8.34 -2.11,-0.98 -2.3,1.7 -5.12,18.6 15.81,-5.26 z m -164.23,-29.31 3.04,3.88 3.28,-2.69 0.39,-2.72 2.52,-1.27 3.76,-2.23 1.08,-2.62 -4.16,-3.85 -2.64,2.9 -1.61,4.12 -0.57,-4.65 -4.26,0.21 -5.47,3.14 6.24,0.52 -1.6,5.26 z m 131.25,13.04 4.65,5.73 7.81,4.2 6.12,-1.8 0.69,-13.62 -6.46,-16.04 -5.45,-9.02 -6.07,4.11 -7.28,11.83 3.83,3.27 2.16,11.34 z",RW:"m 560.79,466.8 1.12,1.57 -0.17,1.64 -0.8,0.35 -1.49,-0.18 -0.86,1.59 -1.71,-0.22 0.26,-1.53 0.39,-0.21 0.1,-1.66 0.81,-0.78 0.68,0.29 z",SA:"m 595.45,417.47 -0.36,-1.24 -0.85,-0.88 -0.22,-1.17 -1.44,-1.04 -1.5,-2.46 -0.79,-2.41 -1.94,-2.04 -1.25,-0.48 -1.86,-2.85 -0.32,-2.08 0.12,-1.79 -1.61,-3.36 -1.31,-1.19 -1.52,-0.63 -0.92,-1.76 0.15,-0.69 -0.78,-1.6 -0.82,-0.69 -1.09,-2.32 -1.71,-2.52 -1.43,-2.16 -1.39,0.01 0.43,-1.74 0.13,-1.11 0.34,-1.28 3.12,0.51 1.22,-0.98 0.67,-1.16 2.14,-0.44 0.46,-1.09 0.93,-0.54 -2.8,-3.26 5.62,-1.65 0.53,-0.49 3.38,0.89 4.18,2.29 7.9,6.49 5.21,0.26 2.5,0.31 0.7,1.51 1.98,-0.08 1.1,2.73 1.38,0.71 0.48,1.11 1.91,1.31 0.17,1.29 -0.28,1.03 0.36,1.04 0.8,0.87 0.38,1.01 0.42,0.75 0.84,0.61 0.78,-0.22 0.53,1.17 0.11,0.71 1.08,3.08 8.42,1.52 0.57,-0.64 1.28,2.14 -1.87,5.97 -8.41,2.96 -8.08,1.13 -2.62,1.32 -2.01,3.07 -1.31,0.48 -0.7,-0.97 -1.07,0.15 -2.71,-0.29 -0.52,-0.3 -3.23,0.07 -0.76,0.27 -1.15,-0.76 -0.75,1.43 0.29,1.23 z",SB:"m 930.06,493 0.78,0.97 -1.96,-0.02 -1.07,-1.74 1.67,0.69 0.58,0.1 z m -3.55,-1.73 -1.09,0.06 -1.72,-0.29 -0.59,-0.44 0.18,-1.12 1.85,0.44 0.91,0.59 0.46,0.76 z m 2.32,-0.77 -0.42,0.52 -2.08,-2.45 -0.58,-1.68 h 0.95 l 1.01,2.25 1.12,1.36 z m -5.06,-3.56 0.12,0.57 -2.2,-1.19 -1.54,-1.01 -1.05,-0.94 0.42,-0.29 1.29,0.67 2.3,1.29 0.66,0.9 z m -6.55,-2.78 -0.56,0.16 -1.23,-0.64 -1.15,-1.15 0.14,-0.47 1.67,1.18 1.13,0.92 z",SD:"m 570.73,437.15 -0.39,-0.05 0.05,-1.41 -0.34,-0.97 -1.44,-1.12 -0.34,-2.05 0.34,-2.1 -1.3,-0.19 -0.19,0.63 -1.69,0.15 0.68,0.83 0.24,1.71 -1.54,1.56 -1.4,2.04 -1.44,0.29 -2.36,-1.65 -1.06,0.58 -0.29,0.83 -1.44,0.53 -0.1,0.58 -2.79,0 -0.39,-0.58 -2.02,-0.1 -1.01,0.49 -0.77,-0.25 -1.44,-1.65 -0.48,-0.77 -2.03,0.39 -0.77,1.31 -0.72,2.52 -0.96,0.53 -0.86,0.31 -0.23,-0.14 -0.97,-0.81 -0.18,-0.87 0.45,-1.18 0,-1.15 -1.62,-1.77 -0.32,-1.22 0.03,-0.69 -1.03,-0.83 -0.03,-1.66 -0.58,-1.1 -0.99,0.17 0.28,-1.05 0.73,-1.2 -0.32,-1.18 0.92,-0.88 -0.58,-0.67 0.74,-1.78 1.28,-2.13 2.42,0.2 -0.14,-11.61 0.04,-1.24 3.22,-0.01 0,-5.96 11.27,0 10.88,0 11.12,0 0.9,2.94 -0.61,0.54 0.41,3.06 1.03,3.52 1.06,0.73 1.54,1.08 -1.42,1.67 -2.07,0.48 -0.88,0.9 -0.27,1.93 -1.21,4.25 0.3,1.15 -0.45,2.47 -1.14,2.81 -1.69,1.42 -1.2,2.17 -0.29,1.16 -1.32,0.8 -0.83,2.96 z",SE:"m 537.7,217.74 -2.72,4.69 0.44,4.02 -4.46,5.13 -5.41,5.34 -2.05,8.41 2,4.07 2.68,3.14 -2.57,6.23 -2.92,1.26 -1.07,8.84 -1.59,4.76 -3.4,-0.49 -1.59,3.95 -3.25,0.23 -0.89,-4.71 -2.35,-5.81 -2.13,-7.5 1.24,-3.15 2.33,-3.81 0.93,-6.73 -1.79,-2.98 -0.18,-8.04 1.83,-5.91 2.78,0.11 0.97,-2.55 -1.02,-2.23 4.35,-9.5 2.81,-7.87 1.85,-5.24 2.69,0.02 0.75,-4.21 5.28,1.22 0.41,-5.08 1.74,-0.33 3.74,3.81 4.37,5.15 0.08,11.12 0.94,2.7 z",SI:"m 514.21,316.76 2.32,0.31 1.42,-0.92 2.45,-0.1 0.53,-0.69 0.47,0.05 0.55,1.37 -2.23,1.08 -0.28,1.62 -0.97,0.41 0.01,1.12 -1.1,-0.08 -0.95,-0.65 -0.52,0.68 -1.95,-0.14 0.62,-0.36 -0.67,-1.71 z",SJ:"m 544.83,104.74 -6.26,5.36 -4.95,-3.02 1.94,-3.42 -1.69,-4.34 5.81,-2.78 1.11,5.18 4.04,3.02 z m -18.15,-26.68 9.23,11.29 -7.06,5.66 -1.56,10.09 -2.46,2.49 -1.33,10.51 -3.38,0.48 -6.03,-7.64 2.54,-4.62 -4.2,-3.86 -5.46,-11.82 -2.18,-11.79 7.64,-5.69 1.54,5.56 3.99,-0.22 1.06,-5.43 4.12,-0.56 3.54,5.55 z m 20.17,-11.46 5.5,5.8 -4.16,8.52 -8.13,1.81 -8.27,-2.56 -0.5,-4.32 -4.02,-0.28 -3.07,-7.48 8.66,-4.72 4.07,4.08 2.84,-5.09 7.08,4.24 z",SK:"m 528.36,304.27 0.16,0.26 1.16,-0.58 1.41,1.52 1.66,-0.92 1.32,0.44 2.02,-0.6 2.66,1.64 -0.77,1.11 -0.55,1.71 -0.6,0.43 -3,-1.28 -0.92,0.25 -0.66,1 -1.32,0.52 -0.3,-0.27 -1.36,0.65 -1.12,0.13 -0.22,0.84 -2.36,0.51 -1.03,-0.46 -1.43,-1.07 -0.28,-1.45 0.23,-0.54 0.39,-0.93 1.25,0.07 0.95,-0.44 0.08,-0.39 0.54,-0.21 0.18,-0.97 0.64,-0.19 0.44,-0.77 z",SL:"m 443.43,444.69 -0.76,-0.21 -2.01,-1.13 -1.46,-1.5 -0.49,-1.03 -0.35,-2.08 1.5,-1.24 0.32,-0.79 0.48,-0.61 0.78,-0.06 0.65,-0.53 2.24,0 0.78,1.01 0.61,1.19 -0.09,0.82 0.45,0.74 -0.03,1.03 0.77,-0.16 -1.31,1.31 -1.26,1.53 -0.15,0.81 z",SN:"m 428.64,425.41 -1.16,-2.24 -1.4,-1.02 1.24,-0.55 1.36,-2.03 0.66,-1.49 0.96,-0.93 1.4,0.25 1.36,-0.63 1.57,-0.03 1.34,0.85 1.86,0.77 1.7,2.13 1.85,1.98 0.13,1.79 0.55,1.64 1.05,0.81 0.24,1.1 -0.13,0.89 -0.41,0.16 -1.52,-0.22 -0.21,0.31 -0.62,0.07 -2.02,-0.7 -1.35,-0.03 -5.18,-0.12 -0.75,0.32 -0.93,-0.09 -1.49,0.47 -0.46,-2.19 2.55,0.06 0.68,-0.4 0.5,-0.03 1.04,-0.66 1.2,0.61 1.22,0.05 1.21,-0.65 -0.56,-0.82 -0.93,0.48 -0.87,-0.01 -1.1,-0.71 -0.89,0.05 -0.64,0.67 z",SO:"m 618.88,430.68 -0.07,-0.79 -1.06,0.01 -1.33,0.98 -1.49,0.28 -1.29,0.42 -0.89,0.06 -1.6,0.1 -1,0.52 -1.39,0.19 -2.47,0.88 -3.05,0.33 -2.65,0.73 -1.39,-0.01 -1.26,-1.19 -0.55,-1.17 -0.91,-0.53 -1.04,1.52 -0.61,1.01 1.04,1.56 1.03,1.36 1.07,1.01 9.17,3.34 2.36,-0.02 -7.93,8.42 -3.65,0.12 -2.5,1.97 -1.79,0.05 -0.77,0.88 -2.45,3.17 0.03,10.15 1.66,2.29 0.63,-0.66 0.65,-1.46 3.07,-3.38 2.61,-2.12 4.2,-2.76 2.8,-2.26 3.3,-3.81 2.39,-3.13 2.41,-4.1 1.73,-3.59 1.35,-3.15 0.79,-3.05 0.6,-1.02 -0.01,-1.5 z",SR:"m 315.27,446.97 3.36,0.56 0.3,-0.51 2.27,-0.2 3.01,0.76 -1.46,2.4 0.22,1.91 1.11,1.66 -0.49,1.2 -0.25,1.27 -0.72,1.17 -1.6,-0.59 -1.33,0.29 -1.13,-0.25 -0.28,0.81 0.47,0.55 -0.25,0.57 -1.53,-0.23 -1.71,-2.42 -0.37,-1.57 -0.89,-0.01 -1.25,-2.02 0.52,-1.45 -0.15,-0.65 1.7,-0.73 z",SS:"m 570.73,437.15 0.03,2.2 -0.42,0.86 -1.48,0.07 -0.96,1.61 1.72,0.2 1.42,1.37 0.5,1.12 1.28,0.65 1.65,3.05 -1.9,1.84 -1.72,1.67 -1.73,1.28 -1.97,0 -2.26,0.65 -1.78,-0.63 -1.15,0.77 -2.47,-1.86 -0.67,-1.19 -1.56,0.59 -1.3,-0.19 -0.75,0.47 -1.26,-0.33 -1.69,-2.31 -0.45,-0.89 -2.1,-1.11 -0.71,-1.68 -1.17,-1.21 -1.88,-1.46 -0.03,-0.92 -1.53,-1.13 -1.91,-1.1 0.86,-0.31 0.96,-0.53 0.72,-2.52 0.77,-1.31 2.03,-0.39 0.48,0.77 1.44,1.65 0.77,0.25 1.01,-0.49 2.02,0.1 0.39,0.58 2.79,0 0.1,-0.58 1.44,-0.53 0.29,-0.83 1.06,-0.58 2.36,1.65 1.44,-0.29 1.4,-2.04 1.54,-1.56 -0.24,-1.71 -0.68,-0.83 1.69,-0.15 0.19,-0.63 1.3,0.19 -0.34,2.1 0.34,2.05 1.44,1.12 0.34,0.97 -0.05,1.41 z",SV:"m 229.34,426.01 -0.31,0.67 -1.62,-0.04 -1.01,-0.27 -1.16,-0.57 -1.56,-0.18 -0.79,-0.62 0.09,-0.42 0.96,-0.72 0.52,-0.32 -0.15,-0.34 0.66,-0.17 0.83,0.24 0.6,0.57 0.85,0.46 0.1,0.39 1.23,-0.34 0.58,0.2 0.38,0.31 z",SY:"m 584.27,364.85 -5.49,3.54 -3.12,-1.32 -0.06,-0.02 0.38,-0.5 -0.04,-1.37 0.69,-1.83 1.53,-1.27 -0.46,-1.32 -1.26,-0.18 -0.26,-2.61 0.68,-1.41 0.75,-0.75 0.75,-0.76 0.16,-1.94 0.91,0.68 3.09,-0.97 1.49,0.65 2.31,-0.01 3.22,-1.31 1.52,0.06 3.19,-0.54 -1.44,2.18 -1.54,0.86 0.27,2.52 -1.06,4.12 z",SZ:"m 565.43,540.99 -0.57,1.39 -1.64,0.33 -1.68,-1.69 -0.02,-1.08 0.76,-1.17 0.27,-0.9 0.81,-0.22 1.41,0.57 0.42,1.39 z",TD:"m 516.15,427.51 0.28,-1.34 -1.8,-0.07 0.01,-1.85 -1.17,-1.06 1.21,-3.8 3.58,-2.74 0.14,-3.79 1.08,-5.98 0.61,-1.28 -1.16,-1.02 -0.05,-0.95 -1.05,-0.78 -0.69,-4.67 2.83,-1.66 11.19,5.77 11.18,5.7 0.14,11.61 -2.42,-0.2 -1.28,2.13 -0.74,1.78 0.58,0.67 -0.92,0.88 0.32,1.18 -0.73,1.2 -0.28,1.05 0.99,-0.17 0.58,1.1 0.03,1.66 1.03,0.83 -0.03,0.69 -1.77,0.49 -1.43,1.14 -2.02,3.09 -2.64,1.31 -2.71,-0.18 -0.79,0.26 0.28,0.99 -1.47,0.99 -1.19,1.1 -3.53,1.07 -0.7,-0.63 -0.46,-0.06 -0.52,0.72 -2.32,0.22 0.44,-0.77 -0.88,-1.93 -0.4,-1.17 -1.22,-0.48 -1.65,-1.65 0.61,-1.33 1.28,0.28 0.79,-0.2 1.56,0.03 -1.52,-2.57 0.1,-1.89 -0.19,-1.89 z",TF:"m 668.79,619.28 1.8,1.33 2.65,0.54 0.1,0.81 -0.78,1.96 -4.31,0.28 -0.07,-2.29 0.42,-1.76 z",TG:"m 480.73,446.5 -2.25,0.59 -0.63,-0.98 -0.75,-1.78 -0.22,-1.4 0.62,-2.53 -0.7,-1.03 -0.27,-2.22 0,-2.05 -1.17,-1.46 0.21,-0.89 2.46,0.06 -0.36,1.5 0.85,0.83 0.98,0.99 0.1,1.39 0.57,0.58 -0.13,6.46 z",TH:"m 763.14,429.43 -2.52,-1.31 -2.4,0.06 0.41,-2.25 -2.47,0.02 -0.22,3.14 -1.51,4.15 -0.91,2.5 0.19,2.05 1.82,0.09 1.14,2.57 0.51,2.43 1.56,1.61 1.7,0.33 1.45,1.45 -0.91,1.15 -1.86,0.34 -0.22,-1.44 -2.28,-1.23 -0.49,0.5 -1.11,-1.07 -0.48,-1.39 -1.49,-1.59 -1.36,-1.33 -0.46,1.65 -0.53,-1.56 0.31,-1.76 0.82,-2.71 1.36,-2.91 1.54,-2.65 -1.1,-2.6 0.05,-1.33 -0.32,-1.6 -1.87,-2.28 -0.67,-1.45 0.97,-0.53 1.02,-2.52 -1.14,-1.92 -1.78,-2.13 -1.36,-2.57 1.18,-0.53 1.28,-3.19 1.98,-0.14 1.64,-1.28 1.6,-0.69 1.22,0.92 0.16,1.78 1.89,0.13 -0.69,3.11 0.07,2.62 2.95,-1.74 0.84,0.51 1.65,-0.08 0.56,-1.02 2.12,0.2 2.13,2.38 0.18,2.87 2.27,2.53 -0.13,2.44 -0.91,1.3 -2.63,-0.41 -3.62,0.55 -1.8,2.38 z",TJ:"m 674.62,340.87 -1.03,1.13 -3.05,-0.61 -0.27,2.1 3.04,-0.28 3.47,1.17 5.3,-0.55 0.71,3.33 0.92,-0.36 1.7,0.81 -0.09,1.38 0.42,2.01 -2.9,0 -1.93,-0.26 -1.74,1.57 -1.25,0.34 -0.98,0.74 -1.11,-1.15 0.27,-2.95 -0.85,-0.17 0.3,-1.09 -1.51,-0.8 -1.21,1.23 -0.3,1.43 -0.43,0.52 -1.68,-0.07 -0.9,1.6 -0.95,-0.67 -2.03,1.12 -0.85,-0.42 1.57,-3.57 -0.6,-2.66 -2.06,-0.86 0.73,-1.59 2.34,0.17 1.33,-2.01 0.89,-2.35 3.75,-0.86 -0.58,1.71 0.4,1.02 z",TL:"m 825.9,488.5 0.33,-0.66 2.41,-0.63 1.96,-0.1 0.87,-0.35 1.06,0.35 -1.03,0.76 -2.92,1.23 -2.35,0.82 -0.05,-0.86 z",TM:"m 647.13,357.15 -0.25,-2.91 -2.09,-0.12 -3.2,-3.09 -2.24,-0.39 -3.1,-1.79 -2,-0.33 -1.23,0.66 -1.87,-0.1 -1.99,2.02 -2.47,0.68 -0.52,-2.49 0.41,-3.73 -2.19,-1.22 0.72,-2.48 -1.86,-0.22 0.62,-3.09 2.64,0.91 2.47,-1.19 -2.05,-2.23 -0.8,-2.14 -2.26,0.96 -0.28,2.73 -0.88,-2.41 1.24,-1.25 3.18,-0.79 1.9,1.06 1.96,2.93 1.44,-0.18 3.16,-0.05 -0.46,-1.88 2.4,-1.3 2.36,-2.2 3.78,2 0.3,2.99 1.07,0.77 3.03,-0.17 0.94,0.67 1.38,3.79 3.21,2.51 1.83,1.69 2.93,1.75 3.73,1.52 -0.08,2.16 -0.84,-0.11 -1.33,-0.94 -0.44,1.25 -2.36,0.68 -0.56,2.79 -1.58,1.05 -2.21,0.52 -0.59,1.55 -2.11,0.46 z",TN:"m 502.09,374.94 -1.2,-5.86 -1.72,-1.33 -0.03,-0.81 -2.29,-1.98 -0.25,-2.53 1.73,-1.88 0.66,-2.82 -0.45,-3.28 0.57,-1.79 3.06,-1.41 1.96,0.42 -0.08,1.77 2.38,-1.29 0.2,0.67 -1.41,1.71 -0.01,1.6 0.97,0.85 -0.37,2.96 -1.85,1.71 0.53,1.83 1.45,0.06 0.71,1.59 1.07,0.52 -0.16,2.55 -1.37,0.95 -0.86,1.05 -1.93,1.26 0.3,1.35 -0.24,1.38 z",TR:"m 579,336.85 4.02,1.43 3.27,-0.57 2.41,0.33 3.31,-1.94 2.99,-0.18 2.7,1.83 0.48,1.3 -0.27,1.79 2.08,0.91 1.1,1.06 -1.92,1.03 0.88,4.11 -0.55,1.1 1.53,2.82 -1.34,0.59 -0.98,-0.89 -3.26,-0.45 -1.2,0.55 -3.19,0.54 -1.51,-0.06 -3.23,1.31 -2.31,0.01 -1.49,-0.66 -3.09,0.97 -0.92,-0.68 -0.15,1.94 -0.75,0.76 -0.75,0.76 -1.03,-1.57 1.06,-1.3 -1.71,0.3 -2.35,-0.8 -1.93,2 -4.26,0.39 -2.27,-1.86 -3.02,-0.12 -0.65,1.44 -1.94,0.41 -2.71,-1.85 -3.06,0.06 -1.66,-3.48 -2.05,-1.96 1.36,-2.78 -1.78,-1.72 3.11,-3.48 4.32,-0.15 1.18,-2.81 5.34,0.49 3.37,-2.42 3.27,-1.06 4.64,-0.08 4.91,2.64 z m -27.25,2.39 -2.34,1.98 -0.88,-1.71 0.04,-0.76 0.67,-0.41 0.87,-2.33 -1.37,-0.99 2.86,-1.18 2.41,0.5 0.33,1.44 2.45,1.2 -0.51,0.91 -3.33,0.2 -1.2,1.15 z", +TT:"m 302.56,433.49 1.61,-0.37 0.59,0.1 -0.11,2.11 -2.34,0.31 -0.51,-0.25 0.82,-0.78 z",TW:"m 816.95,393.52 -1.69,4.87 -1.2,2.48 -1.48,-2.55 -0.32,-2.25 1.65,-3 2.25,-2.32 1.28,0.91 z",TZ:"m 570.56,466.28 0.48,0.31 10.16,5.67 0.2,1.62 4.02,2.79 -1.29,3.45 0.16,1.59 1.8,1.02 0.08,0.73 -0.77,1.7 0.16,0.85 -0.18,1.35 0.98,1.76 1.16,2.79 1.02,0.62 -2.23,1.64 -3.06,1.1 -1.68,-0.04 -1,0.85 -1.95,0.07 -0.74,0.36 -3.37,-0.8 -2.11,0.23 -0.78,-3.86 -0.95,-1.32 -0.57,-0.78 -2.74,-0.52 -1.6,-0.85 -1.78,-0.47 -1.12,-0.48 -1.17,-0.71 -1.51,-3.55 -1.63,-1.57 -0.56,-1.62 0.28,-1.46 -0.5,-2.57 1.16,-0.13 1.01,-1.01 1.1,-1.46 0.69,-0.58 -0.03,-0.91 -0.6,-0.63 -0.16,-1.1 0.8,-0.35 0.17,-1.64 -1.12,-1.57 0.99,-0.34 3.07,0.04 z",UA:"m 564.63,292.74 1.04,0.19 0.71,-1.04 0.85,0.23 2.91,-0.44 1.79,2.57 -0.7,0.92 0.23,1.39 2.24,0.21 1,1.93 -0.06,0.87 3.56,1.54 2.15,-0.69 1.73,2.04 1.64,-0.04 4.13,1.4 0.03,1.27 -1.13,2.23 0.61,2.33 -0.44,1.39 -2.71,0.31 -1.44,1.16 -0.09,1.83 -2.24,0.33 -1.87,1.32 -2.62,0.21 -2.42,1.52 -1.32,1.03 1.49,1.47 1.37,0.96 2.86,-0.24 -0.55,1.42 -3.07,0.68 -3.81,2.27 -1.55,-0.79 0.61,-1.85 -3.06,-1.16 0.5,-0.77 3.16,-1.63 -0.4,-0.81 -0.45,0.41 -0.44,-0.22 -4.36,-1.02 -0.19,-1.51 -2.6,0.5 -1.04,2.23 -2.17,2.95 -1.28,-0.68 -1.31,0.64 -1.25,-0.73 0.7,-0.44 0.49,-1.37 0.77,-1.29 -0.2,-0.72 0.59,-0.32 0.27,0.56 1.66,0.11 0.74,-0.29 -0.52,-0.42 0.19,-0.6 -0.98,-1.04 -0.4,-1.72 -1.02,-0.67 0.2,-1.41 -1.27,-1.12 -1.15,-0.16 -2.07,-1.31 -1.86,0.42 -0.67,0.62 -1.18,-0.01 -0.71,0.98 -2.07,0.4 -0.95,0.64 -1.31,-1.01 -1.79,-0.02 -1.74,-0.46 -1.21,0.89 -0.2,-1.12 -1.55,-1.14 0.55,-1.71 0.77,-1.1 0.62,0.24 -0.73,-1.92 2.55,-3.61 1.39,-0.51 0.3,-1.24 -1.41,-3.89 1.34,-0.17 1.54,-1.23 2.17,-0.1 2.83,0.36 3.13,1.08 2.21,0.09 1.05,0.65 1.05,-0.78 0.74,1.05 2.53,-0.22 1.11,0.43 0.19,-2.26 0.86,-1 z",UG:"m 564.85,466.5 -3.07,-0.04 -0.99,0.34 -1.67,0.86 -0.68,-0.29 0.02,-2.1 0.65,-1.06 0.16,-2.24 0.59,-1.29 1.07,-1.46 1.08,-0.74 0.9,-0.99 -1.12,-0.37 0.17,-3.26 1.15,-0.77 1.78,0.63 2.26,-0.65 1.97,0 1.73,-1.28 1.33,1.94 0.33,1.4 1.23,3.2 -1.02,2.03 -1.38,1.84 -0.8,1.13 0.02,2.95 z",US:"m 109.5,280.05 0,0 -1.54,-1.83 -2.47,-1.57 -0.79,-4.36 -3.61,-4.13 -1.51,-4.94 -2.69,-0.34 -4.46,-0.13 -3.29,-1.54 -5.8,-5.64 -2.68,-1.05 -4.9,-1.99 -3.88,0.48 -5.51,-2.59 -3.33,-2.43 -3.11,1.21 0.58,3.93 -1.55,0.36 -3.24,1.16 -2.47,1.86 -3.11,1.16 -0.4,-3.24 1.26,-5.53 2.98,-1.77 -0.77,-1.46 -3.57,3.22 -1.91,3.77 -4.04,3.95 2.05,2.65 -2.65,3.85 -3.01,2.21 -2.81,1.59 -0.69,2.29 -4.38,2.63 -0.89,2.36 -3.28,2.13 -1.92,-0.38 -2.62,1.38 -2.85,1.67 -2.33,1.63 -4.81,1.38 -0.44,-0.81 3.07,-2.27 2.74,-1.51 2.99,-2.71 3.48,-0.56 1.38,-2.06 3.89,-3.05 0.63,-1.03 2.07,-1.83 0.48,-4 1.43,-3.17 -3.23,1.64 -0.9,-0.93 -1.52,1.95 -1.83,-2.73 -0.76,1.94 -1.05,-2.7 -2.8,2.17 -1.72,0 -0.24,-3.23 0.51,-2.02 -1.81,-1.98 -3.65,1.07 -2.37,-2.63 -1.92,-1.36 -0.01,-3.25 -2.16,-2.48 1.08,-3.41 2.29,-3.37 1,-3.15 2.27,-0.45 1.92,0.99 2.26,-3.01 2.04,0.54 2.14,-1.96 -0.52,-2.92 -1.57,-1.16 2.08,-2.52 -1.72,0.07 -2.98,1.43 -0.85,1.43 -2.21,-1.43 -3.97,0.73 -4.11,-1.56 -1.18,-2.65 -3.55,-3.91 3.94,-2.87 6.25,-3.41 h 2.31 l -0.38,3.48 5.92,-0.27 -2.28,-4.34 -3.45,-2.72 -1.99,-3.64 -2.69,-3.17 -3.85,-2.38 1.57,-4.03 4.97,-0.25 3.54,-3.58 0.67,-3.92 2.86,-3.91 2.73,-0.95 5.31,-3.76 2.58,0.57 4.31,-4.61 4.24,1.83 2.03,3.87 1.25,-1.65 4.74,0.51 -0.17,1.95 4.29,1.43 2.86,-0.84 5.91,2.64 5.39,0.78 2.16,1.07 3.73,-1.34 4.25,2.46 3.05,1.13 -0.02,27.65 -0.01,35.43 2.76,0.17 2.73,1.56 1.96,2.44 2.49,3.6 2.73,-3.05 2.81,-1.79 1.49,2.85 1.89,2.23 2.57,2.42 1.75,3.79 2.87,5.88 4.77,3.2 0.08,3.12 -1.6,2.32 z m 175.93,34.43 -1.25,-1.19 -1.88,0.7 -0.93,-1.08 -2.14,3.1 -0.86,3.15 -1,1.82 -1.19,0.62 -0.9,0.2 -0.28,0.98 -5.17,0 -4.26,0.03 -1.27,0.73 -2.87,2.73 0.29,0.54 0.17,1.51 -2.1,1.27 -2.3,-0.32 -2.2,-0.14 -1.33,0.44 0.25,1.15 0,0 0.05,0.37 -2.42,2.27 -2.11,1.09 -1.44,0.51 -1.66,1.03 -2.03,0.5 -1.4,-0.19 -1.73,-0.77 0.96,-1.45 0.62,-1.32 1.32,-2.09 -0.14,-1.57 -0.5,-2.24 -1.04,-0.39 -1.74,1.7 -0.56,-0.03 -0.14,-0.97 1.54,-1.56 0.26,-1.79 -0.23,-1.79 -2.08,-1.55 -2.38,-0.8 -0.39,1.52 -0.62,0.4 -0.5,1.95 -0.26,-1.33 -1.12,0.95 -0.7,1.32 -0.73,1.92 -0.14,1.64 0.93,2.38 -0.08,2.51 -1.14,1.84 -0.57,0.52 -0.76,0.41 -0.95,0.02 -0.26,-0.25 -0.76,-1.98 -0.02,-0.98 0.08,-0.94 -0.35,-1.87 0.53,-2.18 0.63,-2.71 1.46,-3.03 -0.42,0.01 -2.06,2.54 -0.38,-0.46 1.1,-1.42 1.67,-2.57 1.91,-0.36 2.19,-0.8 2.21,0.42 0.09,0.02 2.47,-0.36 -1.4,-1.61 -0.75,-0.13 -0.86,-0.16 -0.59,-1.14 -2.75,0.36 -2.49,0.9 -1.97,-1.55 -1.59,-0.52 0.9,-2.17 -2.48,1.37 -2.25,1.33 -2.16,1.04 -1.72,-1.4 -2.81,0.85 0.01,-0.6 1.9,-1.73 1.99,-1.65 2.86,-1.37 -3.45,-1.09 -2.27,0.55 -2.72,-1.3 -2.86,-0.67 -1.96,-0.26 -0.87,-0.72 -0.5,-2.35 -0.95,0.02 -0.01,1.64 -5.8,0 -9.59,0 -9.53,0 -8.42,0 h -8.41 -8.27 -8.55 -2.76 -8.32 -7.96 l 0.95,3.47 0.45,3.41 -0.69,1.09 -1.49,-3.91 -4.05,-1.42 -0.34,0.82 0.82,1.94 0.89,3.53 0.51,5.42 -0.34,3.59 -0.34,3.54 -1.1,3.61 0.9,2.9 0.1,3.2 -0.61,3.05 1.49,1.99 0.39,2.95 2.17,2.99 1.24,1.17 -0.1,0.82 2.34,4.85 2.72,3.45 0.34,1.87 0.71,0.55 2.6,0.33 1,0.91 1.57,0.17 0.31,0.96 1.31,0.4 1.82,1.92 0.47,1.7 3.19,-0.25 3.56,-0.36 -0.26,0.65 4.23,1.6 6.4,2.31 5.58,-0.02 2.22,0 0.01,-1.35 4.86,0 1.02,1.16 1.43,1.03 1.67,1.43 0.93,1.69 0.7,1.77 1.45,0.97 2.33,0.96 1.77,-2.53 2.29,-0.06 1.98,1.28 1.41,2.18 0.97,1.86 1.65,1.8 0.62,2.19 0.79,1.47 2.19,0.96 1.99,0.68 1.09,-0.09 -0.53,-1.06 -0.14,-1.5 0.03,-2.16 0.65,-1.42 1.53,-1.51 2.79,-1.37 2.55,-2.37 2.36,-0.75 1.74,-0.23 2.04,0.74 2.45,-0.4 2.09,1.69 2.03,0.1 1.05,-0.61 1.04,0.47 0.53,-0.42 -0.6,-0.63 0.05,-1.3 -0.5,-0.86 1.16,-0.5 2.14,-0.22 2.49,0.36 3.17,-0.41 1.76,0.8 1.36,1.5 0.5,0.16 2.83,-1.46 1.09,0.49 2.19,2.68 0.79,1.75 -0.58,2.1 0.42,1.23 1.3,2.4 1.49,2.68 1.07,0.71 0.44,1.35 1.38,0.37 0.84,-0.39 0.7,-1.89 0.12,-1.21 0.09,-2.1 -1.33,-3.65 -0.02,-1.37 -1.25,-2.25 -0.94,-2.75 -0.5,-2.25 0.43,-2.31 1.32,-1.94 1.58,-1.57 3.08,-2.16 0.4,-1.12 1.42,-1.23 1.4,-0.22 1.84,-1.98 2.9,-1.01 1.78,-2.53 -0.39,-3.46 -0.29,-1.21 -0.8,-0.24 -0.12,-3.35 -1.93,-1.14 1.85,0.56 -0.6,-2.26 0.54,-1.55 0.33,2.97 1.43,1.36 -0.87,2.4 0.26,0.14 1.58,-2.81 0.9,-1.38 -0.04,-1.35 -0.7,-0.64 -0.58,-1.94 0.92,0.9 0.62,0.19 0.21,0.92 2.04,-2.78 0.61,-2.62 -0.83,-0.17 0.85,-1.02 -0.08,0.45 1.79,-0.01 3.93,-1.11 -0.83,-0.7 -4.12,0.7 2.34,-1.07 1.63,-0.18 1.22,-0.19 2.07,-0.65 1.35,0.07 1.89,-0.61 0.22,-1.07 -0.84,-0.84 0.29,1.37 -1.16,-0.09 -0.93,-1.99 0.03,-2.01 0.48,-0.86 1.48,-2.28 2.96,-1.15 2.88,-1.34 2.99,-1.9 -0.48,-1.29 -1.83,-2.25 -0.03,-5.56 z m -239.56,-50.44 -1.5,0.8 -2.55,1.86 0.43,2.42 1.43,1.32 2.8,-1.95 2.43,-2.47 -1.19,-1.63 -1.85,-0.35 z m -45.62,-28.57 2.04,-1.26 0.23,-0.68 -2.27,-0.67 v 2.61 z m 8.5,15.37 -2.77,0.97 1.7,1.52 1.84,1.04 1.72,-0.87 -0.27,-2.15 -2.22,-0.51 z m 97.35,32.5 -2.69,0.38 -1.32,-0.62 -0.17,1.52 0.52,2.07 1.42,1.46 1.04,2.13 1.69,2.1 1.12,0.01 -2.44,-3.7 0.83,-5.35 z m -68.72,120.68 -1,-0.28 -0.27,0.26 0.02,0.19 0.32,0.24 0.48,0.63 0.94,-0.21 0.23,-0.36 -0.72,-0.47 z m -2.99,-0.54 1.5,0.09 0.09,-0.32 -1.38,-0.13 -0.21,0.36 z m 5.89,3.29 -0.5,-0.26 -1.07,-0.5 -0.21,-0.06 -0.16,0.28 0.19,0.58 -0.49,0.48 -0.14,0.33 0.46,1.08 -0.08,0.83 0.7,0.42 0.41,-0.49 0.9,-0.46 1.1,-0.63 0.07,-0.16 -0.71,-1.04 -0.47,-0.4 z m -7.86,-5.14 -0.75,0.41 0.11,0.12 0.36,0.68 0.98,0.11 0.2,0.04 0.15,-0.17 -0.81,-0.99 -0.24,-0.2 z m -4.4,-1.56 -0.43,0.3 -0.15,0.22 0.94,0.55 0.33,-0.3 -0.06,-0.7 -0.63,-0.07 z",UY:"m 313.93,552.04 1.82,-0.34 2.81,2.5 1.04,-0.09 2.89,2.08 2.2,1.82 1.62,2.25 -1.24,1.57 0.78,1.9 -1.21,2.12 -3.17,1.88 -2.07,-0.68 -1.52,0.37 -2.59,-1.46 -1.9,0.11 -1.71,-1.87 0.22,-2.16 0.61,-0.74 -0.03,-3.3 0.75,-3.37 z",UZ:"m 662.01,351.2 0.08,-2.16 -3.73,-1.52 -2.93,-1.75 -1.83,-1.69 -3.21,-2.51 -1.38,-3.79 -0.94,-0.67 -3.03,0.17 -1.07,-0.77 -0.3,-2.99 -3.78,-2 -2.36,2.2 -2.4,1.3 0.46,1.88 -3.16,0.05 -0.11,-14.13 7.22,-2.35 0.52,0.35 4.35,2.84 2.29,1.48 2.68,3.5 3.29,-0.56 4.81,-0.3 3.35,2.8 -0.21,3.8 1.37,0.03 0.57,3.06 3.57,0.12 0.76,1.75 1.05,-0.02 1.23,-2.65 3.69,-2.61 1.61,-0.7 0.83,0.37 -2.35,2.43 2.07,1.4 2,-0.93 3.32,1.96 -3.59,2.64 -2.13,-0.36 -1.16,0.1 -0.4,-1.02 0.58,-1.71 -3.75,0.86 -0.89,2.35 -1.33,2.01 -2.34,-0.17 -0.73,1.59 2.06,0.86 0.6,2.66 -1.57,3.57 -2.12,-0.74 z",VE:"m 275.5,430.6 -0.08,0.67 -1.65,0.33 0.92,1.29 -0.04,1.49 -1.23,1.64 1.06,2.24 1.21,-0.18 0.63,-2.04 -0.87,-1 -0.14,-2.14 3.49,-1.16 -0.39,-1.34 0.98,-0.9 1.01,2 1.97,0.05 1.82,1.58 0.11,0.94 2.51,0.02 3,-0.29 1.61,1.27 2.14,0.35 1.57,-0.88 0.03,-0.72 3.48,-0.17 3.36,-0.04 -2.38,0.84 0.95,1.34 2.25,0.21 2.12,1.39 0.45,2.26 1.46,-0.07 1.1,0.67 -2.22,1.65 -0.25,1.03 0.96,1.04 -0.69,0.52 -1.73,0.45 0.06,1.3 -0.76,0.77 1.89,2.12 0.38,0.79 -1.03,1.07 -3.14,1.04 -2.01,0.44 -0.81,0.66 -2.23,-0.7 -2.08,-0.36 -0.52,0.26 1.25,0.72 -0.11,1.87 0.39,1.76 2.37,0.24 0.16,0.58 -2.01,0.8 -0.32,1.18 -1.16,0.45 -2.08,0.65 -0.54,0.86 -2.18,0.18 -1.55,-1.48 -0.85,-2.77 -0.75,-0.98 -1.02,-0.61 1.42,-1.39 -0.09,-0.63 -0.8,-0.83 -0.56,-1.85 0.22,-2.01 0.62,-0.94 0.51,-1.5 -0.99,-0.49 -1.6,0.32 -2.02,-0.15 -1.13,0.3 -1.98,-2.41 -1.63,-0.36 -3.6,0.27 -0.67,-0.98 -0.69,-0.23 -0.1,-0.59 0.33,-1.04 -0.22,-1.13 -0.62,-0.62 -0.36,-1.3 -1.44,-0.18 0.77,-1.66 0.35,-2.01 0.81,-1.06 1.09,-0.81 0.71,-1.42 z",VN:"m 778.46,402.12 -3.74,2.56 -2.34,2.81 -0.62,2.05 2.15,3.09 2.62,3.82 2.54,1.79 1.71,2.33 1.28,5.32 -0.38,5.02 -2.33,1.87 -3.22,1.83 -2.28,2.36 -3.5,2.62 -1.02,-1.81 0.79,-1.91 -2.08,-1.61 2.43,-1.14 2.94,-0.2 -1.23,-1.73 4.71,-2.19 0.35,-3.42 -0.65,-1.92 0.51,-2.88 -0.71,-2.04 -2.12,-2.02 -1.77,-2.57 -2.33,-3.46 -3.36,-1.76 0.81,-1.07 1.79,-0.77 -1.09,-2.59 -3.45,-0.03 -1.26,-2.72 -1.64,-2.37 1.51,-0.74 2.23,0.02 2.73,-0.35 2.39,-1.62 1.35,1.14 2.57,0.55 -0.45,1.74 1.34,1.22 z",VU:"m 946.12,510.15 -0.92,0.38 -0.94,-1.27 0.1,-0.78 1.76,1.67 z m -2.07,-4.44 0.46,2.33 -0.75,-0.36 -0.58,0.16 -0.4,-0.8 -0.06,-2.21 1.33,0.88 z",YE:"m 624.41,416.58 -2.03,0.79 -0.54,1.28 -0.07,0.99 -2.79,1.22 -4.48,1.35 -2.51,2.03 -1.23,0.15 -0.84,-0.17 -1.64,1.2 -1.79,0.55 -2.35,0.15 -0.71,0.16 -0.61,0.75 -0.74,0.21 -0.43,0.73 -1.39,-0.06 -0.9,0.38 -1.94,-0.14 -0.73,-1.67 0.08,-1.57 -0.45,-0.85 -0.55,-2.12 -0.81,-1.19 0.56,-0.14 -0.29,-1.32 0.34,-0.56 -0.12,-1.26 1.23,-0.93 -0.29,-1.23 0.75,-1.43 1.15,0.76 0.76,-0.27 3.23,-0.07 0.52,0.3 2.71,0.29 1.07,-0.15 0.7,0.97 1.31,-0.48 2.01,-3.07 2.62,-1.32 8.08,-1.13 2.2,4.84 z",ZA:"m 563.88,548.96 -0.55,0.46 -1.19,1.63 -0.78,1.66 -1.59,2.33 -3.17,3.38 -1.98,1.98 -2.12,1.51 -2.93,1.3 -1.43,0.17 -0.36,0.93 -1.7,-0.5 -1.39,0.64 -3.04,-0.65 -1.7,0.41 -1.16,-0.18 -2.89,1.33 -2.39,0.54 -1.73,1.28 -1.28,0.08 -1.19,-1.21 -0.95,-0.06 -1.21,-1.51 -0.13,0.47 -0.37,-0.91 0.02,-1.96 -0.91,-2.23 0.9,-0.6 -0.07,-2.53 -1.84,-3.05 -1.41,-2.74 0,-0.01 -2.01,-4.15 1.34,-1.57 1.11,0.87 0.47,1.36 1.26,0.23 1.76,0.6 1.51,-0.23 2.5,-1.63 0,-11.52 0.76,0.46 1.66,2.93 -0.26,1.89 0.63,1.1 2.01,-0.32 1.4,-1.39 1.33,-0.93 0.69,-1.48 1.37,-0.72 1.18,0.38 1.34,0.87 2.28,0.15 1.79,-0.72 0.28,-0.96 0.49,-1.47 1.53,-0.25 0.84,-1.15 0.93,-2.03 2.52,-2.26 3.97,-2.22 1.14,0.03 1.36,0.51 0.94,-0.36 1.49,0.3 1.34,4.26 0.73,2.17 -0.5,3.43 0.24,1.11 -1.42,-0.57 -0.81,0.22 -0.26,0.9 -0.77,1.17 0.03,1.08 1.67,1.7 1.64,-0.34 0.57,-1.39 2.13,0.03 -0.7,2.28 -0.33,2.62 -0.73,1.43 -1.9,1.62 z m -7.13,-0.96 -1.22,-0.98 -1.31,0.65 -1.52,1.25 -1.5,2.03 2.1,2.48 1,-0.32 0.52,-1.03 1.56,-0.5 0.48,-1.05 0.86,-1.56 -0.97,-0.97 z",ZM:"m 567.36,489.46 1.32,1.26 0.71,2.4 -0.48,0.77 -0.56,2.3 0.54,2.36 -0.88,0.99 -0.85,2.66 1.47,0.74 -8.51,2.38 0.27,2.05 -2.13,0.4 -1.59,1.15 -0.34,1.01 -1.01,0.22 -2.44,2.4 -1.55,1.89 -0.95,0.07 -0.91,-0.34 -3.13,-0.32 -0.5,-0.22 -0.03,-0.24 -1.1,-0.66 -1.82,-0.17 -2.3,0.67 -1.83,-1.82 -1.89,-2.38 0.13,-9.16 5.84,0.04 -0.24,-0.99 0.42,-1.07 -0.49,-1.33 0.32,-1.38 -0.3,-0.88 0.97,0.07 0.16,0.88 1.31,-0.07 1.78,0.26 0.94,1.29 2.24,0.4 1.72,-0.9 0.63,1.49 2.15,0.4 1.03,1.22 1.15,1.57 2.15,0.03 -0.24,-3.08 -0.77,0.51 -1.96,-1.1 -0.76,-0.51 0.35,-2.85 0.5,-3.35 -0.63,-1.25 0.8,-1.8 0.75,-0.33 3.77,-0.48 1.1,0.29 1.17,0.71 1.12,0.48 1.78,0.47 z",ZW:"m 562.96,527.25 -1.49,-0.3 -0.95,0.36 -1.35,-0.51 -1.14,-0.03 -1.79,-1.36 -2.17,-0.46 -0.82,-1.9 -0.01,-1.05 -1.2,-0.32 -3.17,-3.25 -0.89,-1.71 -0.56,-0.52 -1.08,-2.35 3.13,0.32 0.91,0.34 0.95,-0.07 1.55,-1.89 2.44,-2.4 1.01,-0.22 0.34,-1.01 1.59,-1.15 2.13,-0.4 0.18,1.08 2.34,-0.06 1.3,0.61 0.6,0.72 1.34,0.21 1.45,0.94 0.01,3.69 -0.55,2.04 -0.12,2.2 0.45,0.88 -0.31,1.74 -0.43,0.27 -0.74,2.15 z"}}}}),b}); \ No newline at end of file diff --git a/plugins/jquery-mapael/maps/world_countries_miller.js b/plugins/jquery-mapael/maps/world_countries_miller.js new file mode 100644 index 0000000..639782b --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries_miller.js @@ -0,0 +1,322 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires Mapael + * + * Map of World by country + * Miller projection + * + * @source http://code.highcharts.com/mapdata/ + */ +(function (factory) { + if (typeof exports === 'object') { + // CommonJS + module.exports = factory(require('jquery'), require('mapael')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery', 'mapael'], factory); + } else { + // Browser globals + factory(jQuery, jQuery.mapael); + } +}(function ($, Mapael) { + + "use strict"; + + $.extend(true, Mapael, { + maps: { + world_countries_miller: { + /* + * map-specific constants + * (set by user) + */ + // Width of the map, in pixel + width : 700.9375, + // Height of the map, in pixel + height : 337.375, + // Longitude of the left side of the map, in degree + leftLongitude: -175.0, + // Longitude of the right side of the map, in degree + rightLongitude: 190.0, + // Latitude of the top of the map, in degree + topLatitude: 84.0, + // Latitude of the bottom of the map, in degree + bottomLatitude: -56.0, + /* + * Transform a longitude coordinate into projection-specific x' coordinate + * Note: this is not in pixel + * + * @param lon longitude value in degree + * @return x' projection-specific value + */ + _projectLongitude: function (lon) { + // Compute longitude in radian + return lon * Math.PI / 180; + }, + /* + * Transform a latitude coordinate into projection-specific y' coordinate + * Note: this is not in pixel + * + * @param lat latitude value in degree + * @return y' projection-specific value + */ + _projectLatitude: function (lat) { + // Compute latitude in radian + var latRad = lat * Math.PI / 180; + return 1.25 * Math.log( Math.tan( Math.PI / 4 + 0.4 * latRad ) ); + }, + /* + * Get x,y point from lat,lon coordinate + * + * Principle: + * (lat, lon) are inputs + * Projection(lat, lon) = (x', y') + * Transformation(x', y') = (x, y) + * + * Source: http://jkwiens.com/2009/01/23/miller-projection/ + * + * @param lat latitude value in degree + * @param lon longitude value in degree + * @return {x, y} coordinate in pixel + */ + getCoords: function (lat, lon) { + var self = this; + + // Project map boundaries with projection (only once for performance) + if (self._xLeftPrime === undefined) self._xLeftPrime = self._projectLongitude(self.leftLongitude); + if (self._xRightPrime === undefined) self._xRightPrime = self._projectLongitude(self.rightLongitude); + if (self._yTopPrime === undefined) self._yTopPrime = self._projectLatitude(self.topLatitude); + if (self._yBottomPrime === undefined) self._yBottomPrime = self._projectLatitude(self.bottomLatitude); + + // Compute x' and y' (projection-specific value) + var xPrime = self._projectLongitude(lon); + var yPrime = self._projectLatitude(lat); + + // Compute x and y + var x = (xPrime - self._xLeftPrime) * (self.width / (self._xRightPrime - self._xLeftPrime)); + var y = (self._yTopPrime - yPrime) * (self.height / (self._yTopPrime - self._yBottomPrime)); + + return {x: x, y: y}; + }, + elems: { + "FO" : "m 322.53,80.19 0.9,0.8 0,0.3 -1,-0.7 z", + "UM" : "m 26.03,206.59 0,0 -0.1,0 0.1,0 z", + "US" : "m 100.93,117.39 0.2,0.1 -0.6,-0.2 0,-0.3 z m 0.2,-0.6 0.2,0.1 -0.3,0.2 -0.3,-0.1 z m -19,-15.8 0.2,0 0,0.4 -0.3,-0.4 z m -0.1,-0.7 0.3,0.3 -0.2,0.2 -0.2,-0.1 z m -0.5,0 0.8,1.3 -0.9,-0.7 -0.1,-0.7 z m 3.3,0.1 -0.1,0.3 -0.4,0 0.1,-0.7 z m -3.7,-0.5 0.1,0.3 -0.4,0 0,-0.3 z m 2.8,-0.3 0.3,0.4 -0.2,0.4 -0.2,-0.6 z m -3.5,-0.1 0.4,-0.1 0,0.3 -0.4,0.3 z m 0.7,0.1 -0.1,0 -0.2,-0.3 0.3,0 z m -1.1,-1.3 0.3,-0.4 0.8,-0.2 -0.2,0.3 z m 2.6,-0.8 0.8,0.3 -0.4,0.5 -0.7,-0.4 z m -0.3,-0.6 0,0.4 -0.8,-0.2 0.3,-0.3 z m 1,0.2 0.1,0.6 -0.5,-0.4 0,-0.6 z m -1.4,-1.2 0.6,0.6 -0.4,0.2 -0.3,0 z m -1.7,-0.8 1.5,0.5 -0.3,1.2 -1,0 z m -3.5,-0.4 -0.1,0.6 -0.4,0.1 0.2,-0.5 z m -1.5,-2.1 -0.2,0.4 -0.2,-0.2 0.2,-0.5 z m 91.6,25.5 -0.2,0.4 -1,0.5 -0.1,-0.2 z m 3,6.8 -0.2,0.6 -0.4,0.7 -0.2,-0.4 z m 2.8,-1 0,0.4 -0.3,0 0.2,-0.4 z m 3.7,-0.7 0.1,0.3 -0.6,0 0.3,-0.2 z m -96.8,-24.9 -0.6,-2.5 0.8,-0.1 0.6,0.7 z m -61.3,4.8 -0.9,1.5 -2.4,0.4 -2.2,1.3 1.2,-1.5 2.3,0 0,-1 z m 59.3,-7.9 -0.4,-1.4 1,0.8 0.4,3 z m -0.7,-2.2 -0.3,1.3 -1.4,-1.2 1.1,-1.3 z m 1.1,-1.2 1.4,0.4 0.5,2.3 -1,-0.2 z m -66.2,-14.8 1.6,0.2 -2,1.1 -1.9,-1.3 -2.2,-0.4 3,-0.6 z m 89,39.1 -0.1,0.1 0,-0.1 z m 45.7,49.9 -0.1,-0.8 -0.5,-0.2 -1.5,-2.5 -1.5,-2.5 -0.2,-0.1 -0.1,-0.1 -2.1,-0.7 -1.6,1.9 -2.6,-1.4 -0.7,-1.8 -3.2,-2.6 -3.2,0 0,0.9 -5.5,0 -7.2,-2.4 0.2,-0.5 -4.6,0.4 -0.3,-1.2 -2.4,-2 -2.5,-0.1 -1.5,-1.1 -3.4,-5.7 -0.2,-1.3 -2.3,-2.5 -0.3,-2 -1,-1.4 0.6,-2.3 -0.9,-3.2 0.8,-2.4 0.5,-4 -1.3,-6.7 3.6,0.6 -0.1,-0.2 0.7,0.6 -0.7,-0.7 0,0 0.3,-0.4 -0.3,0.3 0,-1.8 52.8,0 4.8,1.2 2.3,1.2 3.6,0.1 -2.8,1.2 -2,1.7 2.5,-0.2 0.6,0.7 3.5,-1.6 0.1,0.1 -0.1,-0.1 1.1,-0.6 0.6,0.1 -1.1,0.9 1.8,1.4 4.6,-0.7 0.9,0.8 0.7,-0.2 0,0.5 -1.2,1.1 -4.3,-0.1 -2,3.2 1.4,-0.6 -1.1,3.6 0.1,2.3 1,1.5 1.3,-0.6 0.8,-2.5 -0.6,-1.5 0.5,-2.5 3.2,-2.7 2.1,1.1 0.3,2.4 -1,0.8 2.3,0.2 0.5,2.1 -0.2,0.9 -0.3,0.2 -0.3,-0.3 -0.5,0.8 -0.7,1.4 1.8,0.7 1.6,-0.3 4.8,-2.4 0.5,-0.8 -0.3,-0.4 0,-0.4 4.5,-0.1 1.8,-2.7 1,-0.9 1,-0.3 0,0 6.2,-0.1 2.3,-2 0.5,-2 1.5,-1.8 2.7,0.9 0,3.2 0.4,0.3 0.4,0 -0.1,0.8 0.6,0.2 0.3,0.9 -2.4,1 0.1,0.1 -0.4,0.4 0,-0.3 0,0 -0.7,0.3 0.3,-0.1 0,0.4 -0.3,0 -0.1,-0.3 -0.4,0.2 -2.9,1.8 -0.1,3.7 -4.4,1.1 -2.2,1.4 -0.1,1.9 -2.9,4 -1.5,-2.8 0.3,3 -0.4,2.2 0.9,-0.1 0.5,2.8 -1.5,2.2 -1.2,-0.1 -1.6,1.8 -2.3,1.4 -3.8,3.1 -0.6,2.1 1.8,4.7 0.9,3.4 -0.6,3.4 -1.4,0 -2,-2.7 -1.3,-2.9 0.4,-2.1 -2.7,-2.5 -1.8,1 -2.1,-1.4 -5.3,-0.3 -1.5,0.6 0.9,2.4 -1.6,-0.9 -1.3,0.8 -1.9,-1.4 -1.3,0.4 -3.4,-0.3 -4.6,2.8 -2,3.1 0.8,1.7 -2.1,-0.2 z m -65.4,-67.3 -0.3,0.2 -0.2,-0.4 0.5,0 0,0 0.3,-1.3 2.3,3 -0.1,1.4 -1.6,-1.8 -1,-0.7 z m -43.4,79.5 -0.5,-0.5 0,0 0.5,0.2 0,0.3 0,0 z m 0,0 2.3,2 -2.1,0.9 -0.2,-2.9 0,0 z m 47.3,-77.4 -0.1,0.3 -0.3,-0.2 0.4,-0.1 0,0 z m -5.8,-8.9 0.1,0.1 -0.6,-0.1 0,-0.2 -0.3,-0.2 -3.7,0.5 -3.1,-2.4 -3,-1.3 -5.6,-1.7 -2.8,-0.1 -3.5,-0.9 0,-1.1 -3.5,0 0.4,2.5 -3.2,0 -0.7,0.9 -4.1,1.5 1.3,-1.3 -1.3,-0.4 0.9,-2.8 1.8,-0.9 -0.2,-0.9 -3.4,2.4 -0.7,1.7 -2.7,1.5 1.5,1.3 -1.9,2.4 -3.6,1.6 -2.1,2.7 -0.9,-0.5 -2.1,2.2 -1.9,0.1 -3.2,1.2 -1.6,1.4 -4.7,1.2 0.5,-1.3 2.4,-0.6 3.7,-2.2 2.2,0.3 -0.3,-1.2 2.8,-1.5 2.2,-2 1.3,-3.7 -3.7,1.3 -2.5,-1.8 -2.7,1.4 0.1,-2.6 -1.2,-1.8 -2.5,0.9 -2.6,-1.5 -1.1,1 -2.1,0.4 -1.5,-1 3.4,-0.3 2.1,-1.6 -3,-1.9 0.7,-1.5 3.1,-3.7 1.5,0.7 1.8,-1.2 3.1,-1 -1.2,-2.1 0.5,-1.6 -3.8,1.7 -5.8,-0.6 -3.6,-3.5 5.3,-2.3 3,-0.5 0.1,1.6 3.5,0.3 0.3,-3.3 -3.9,-0.3 -0.8,-1.6 -4.8,-2.4 0.8,-1.8 3.6,-0.2 2.4,-1.5 -0.1,-0.9 2.4,-2.4 2,0 2.3,-1.6 3.1,-0.1 2.3,-1.7 3.3,0.7 1.9,1.2 3.4,-0.3 0.7,1.4 5.3,-0.3 4,1.3 4.8,0.7 2.5,-0.5 4.4,1.6 0,29.2 3.5,0.6 3,2.4 0.4,1 2,-2 1.7,-0.6 1,1.5 3,2.5 3,5 3.4,1.8 0.1,1.7 0,0 -1.8,1.3 0.1,-2.4 -0.3,-0.1 -0.3,-0.6 -0.4,0.4 -0.6,-0.2 -0.5,-1.3 -2.1,-2 -2.2,-3.1 z m -38.1,3.7 -1.1,-1.2 3,-2 1.7,-1.6 0.4,2.8 -2.9,1.7 -3.7,3.4 z m -3.9,82.1 -3,-1 2.1,0.2 0.9,0.8 z m 47.8,-76.9 0.1,-0.2 0,0.2 -0.1,0 0,0 z", + "JP" : "m 606.33,125.09 0,-0.1 0.6,0.4 -0.3,0.1 z m -15.5,25.1 -1.3,0.7 -2.1,-0.3 2.8,-3.2 3.7,-0.5 2.2,0.3 3,-4.4 -0.5,1.4 2.4,-0.6 0.4,-1.6 1.8,-0.6 1.1,-2.6 -0.4,-1.2 1.1,-3.2 0.7,1 1.3,-0.7 1.2,3.9 -1.8,2.3 -0.1,2.2 -0.9,2.4 0.5,1.2 -1.7,1.8 -0.3,-1.4 -3,1.8 -3.2,0.3 0.7,0.7 -1.8,1.4 -1.7,-0.6 0.6,-1.7 -3.2,0.3 -1.5,0.9 1.1,0.3 1.3,-1.2 0.9,0.5 -0.9,2.3 -0.9,-0.6 -2.2,1.7 -0.5,-1.6 z m -6.8,2 -0.4,-2 1.3,1.7 1.2,-1.1 2.4,0.6 0.6,1.3 -1.4,3.4 -2.1,0.2 -0.1,-3.3 z m 21.7,-19.1 -1,1 -0.6,-2.9 1.1,-1.6 1.9,0 0.9,-5.1 3.6,3.2 2.4,0.9 0.9,1.4 -2.6,0.5 -1.8,2.4 -2.7,-1.5 -2.9,0.7 z", + "SC" : "m 442.43,226.39 0.2,0.3 -0.1,0.2 -0.5,-0.7 z", + "IN" : "m 504.93,175.49 0.1,0 0,0.5 -0.2,-0.1 z m 0.1,-12.1 1.3,-0.3 0.2,1.4 1.7,1.2 4.4,-0.4 -0.9,-1.7 1.9,-0.4 3.9,-2.9 1.2,0.6 1.6,-0.7 2.3,2.4 -1.2,1.8 -3.2,1.8 0,1.5 -1.8,3.8 -1.5,-0.3 -0.2,3.3 -1.2,0.8 -0.8,-3.5 -1.1,1.5 -0.8,-1.3 2.5,-2.7 -0.8,-0.5 -3.2,0.1 -1,-1.7 -2.7,-1 -0.7,1.2 1.6,1.5 -1.7,1 1.4,0.7 -0.4,1.4 1,3 -1.6,1.1 -0.1,-1 -1.9,1 -1.6,3.2 -1.7,0.1 -2.6,3.2 -3.5,2.5 0.1,0.8 -3.9,1.8 -0.5,1.3 0.6,3.2 -0.9,2.6 0,3.3 -4.5,4.3 -1.9,-1.6 -1.3,-4.2 -2,-3.4 -0.9,-3.3 -1.7,-3 -1.5,-7.4 0.4,-1.3 -1,-3.6 -0.5,2.2 -2.1,1 -1.3,-0.4 -2.1,-2.1 1.8,-1.2 -2.9,-1.2 -0.9,-1.4 1.3,-0.8 2.1,0.2 2.1,-1.1 -3,-4.3 1.9,-2.5 2.7,0.2 2,-2.3 0.9,-1.8 2.2,-2.5 -0.1,-1.3 1.5,-0.9 -2.4,-2.2 -0.5,-2.5 1.1,-0.9 2.8,0.6 2.4,-1.3 1.4,-0.9 0.9,1.8 1.3,0.7 -0.3,1.7 1.4,1.7 -2.2,0.5 0.7,2.5 4.4,2.4 -1.3,0.9 -0.6,1.9 5.2,2.8 3.5,0.3 2.4,1.6 2.9,0.4 1.6,-0.7 z", + "FR" : "m 228.83,121.39 -0.4,0.1 -0.1,-0.8 0.2,0.5 z m 125.6,9.9 -0.5,2.9 -0.8,-0.5 -0.1,-2.3 z m 301.9,127.2 -0.6,2.6 -3,-1.6 -1.7,-1.7 -0.4,-1.4 4.2,3.2 z m -187.7,60.9 2.7,0.3 -0.8,1.5 -2.5,0 z m -253.1,-136.4 0.1,-0.1 0,0.2 z m 135.1,-54.4 0,0.1 -0.1,0 0,0 -0.1,0.1 -2.4,1.4 -4.2,-1 -1.7,1.4 0.3,1.2 -1.3,0.2 -1,-0.3 -0.1,0 0,0 -0.5,-0.1 0.1,-0.3 -0.6,0.1 -2.8,-0.2 -3.4,-1.7 0.6,-0.4 0.9,-5.8 -1.8,-2.4 -1.6,-1.1 -3.6,-1.4 -0.1,-1.2 3.2,-0.8 0.7,0.9 2.5,-0.3 -1,-2.7 3.3,1.1 0.7,-1 2.7,-1.3 0,-1.7 1.8,-0.5 3.1,2.8 3.2,1.1 0.3,0.2 0.7,0 3.6,1.2 -1.2,3.4 -2.8,2.4 0.2,0.7 0.1,-0.2 0.2,0 0.8,-0.1 -0.1,0.7 0.5,0.5 -0.8,1.9 z m -118,79 0.4,-0.8 1.9,0.6 2.4,2.7 -2.5,3.5 -3.1,-0.3 1.2,-2.1 -0.9,-2.8 z", + "FM" : "m 639.23,204.49 0.2,0.1 0,0.2 -0.2,0 z", + "CN" : "m 544.43,180.89 1.7,-1.7 2.1,-0.3 0.6,0.9 -1.1,2 -1.4,1 -1.9,-0.7 z m -37.9,-16.4 -0.2,-1.4 -1.3,0.3 -3,-0.5 -1.1,0.4 -1.7,-0.9 -1.9,-1.9 -1.1,0.1 -2.8,-2.4 -2,0.3 -4.4,-2.4 -0.7,-2.5 2.2,-0.5 -1.4,-1.7 0.3,-1.7 -1.3,-0.7 -0.9,-1.8 -0.8,0.1 -1.1,-0.4 -1.6,-1.8 -2.7,-1.2 -0.3,-0.2 1,-0.3 -0.3,-2.8 -1.8,-0.1 -0.3,-2 0.6,-1.3 3,-1.3 0.3,0.7 2.1,-1.4 2.5,-0.3 0.5,-0.7 3.5,-1.9 1.2,-2.2 -1.4,-4.4 4.2,-1.2 1.4,-4 3.3,0.9 1.5,-0.5 0.5,-3.3 3,-1.7 0.3,-0.1 0.6,-0.1 0.3,1.4 2.1,1.5 2.4,0.8 1.4,2.6 -0.3,3.3 5,0.6 3.6,1.5 1.9,3.7 10.1,0.5 0.7,0.7 3.3,1 2.8,0 3,-1.2 5.2,-0.4 4.7,-2.9 -1,-1.7 1.1,-1.5 3.1,0.8 1.8,-1.5 2.1,-0.2 1.8,-2 3.2,-1 2.7,0.3 0.4,-0.8 -2.6,-2.6 -1.5,0 -0.1,0.1 -0.3,0.4 -3.2,0.2 -0.7,-1.1 2.3,-4.1 2,0.7 2.8,-1.2 -0.1,-0.9 1.8,-3.3 1.3,-1.1 -1.4,-1.7 1.5,-1.3 4.7,-0.8 4.7,1.5 4.5,8.8 2.5,0.3 2.8,2.7 0.4,1.6 2.7,-0.1 3.7,-1.7 0.7,1.7 -1.2,1.1 -0.5,2.4 -2,2.8 -0.5,-0.6 -1.1,0.2 -2,0.9 0.6,1.9 -0.5,2.8 -0.9,0.7 -1.3,-1 -0.3,1.2 -3.2,1.1 0.2,1.4 -2.9,-0.7 -1.2,1.8 -3.1,1.8 -3.6,1.5 -2.6,1.5 0.3,-1.4 1.9,-2.5 -2.1,-1 -1.4,1.7 -1.8,0.6 -1,1.6 -2.4,0.2 0.7,2.1 1.4,0 1.2,2.3 2.4,-1.6 1.7,0.9 2.1,0.1 -3.7,2 -3,3.1 2,1.6 1.2,3.5 1.8,1.5 0.3,2.2 -1.9,0.8 2.7,1.5 -1.5,1.1 0.1,2 -1.3,0.7 -2.9,4.1 0.6,1.2 -1.8,0.6 -4.5,4.4 -3.3,0.2 -1.1,1.2 -1.1,-1.6 -0.1,1.8 -5.5,1.5 -1.5,2.2 -0.3,-2.4 -2.5,-0.8 -0.9,0.8 -2.7,-1.8 0.4,-0.8 -2.8,-1.2 -2.6,1.7 -2.8,-0.5 -0.7,0.7 -1.2,0.3 0.4,2.3 -1,-0.9 -1.9,0.3 -0.5,-1.3 -1.5,-0.2 0.7,-1.8 -1.2,-0.2 -0.6,-1.8 -1.8,0.4 0.1,-2.4 1.9,-1.7 0,-3.5 -2.2,-1.9 -0.4,0.6 -2.3,-2.4 -1.6,0.7 -1.2,-0.6 -3.9,2.9 -1.9,0.4 -2.7,-1.3 z", + "PT" : "m 322.13,143.49 -3.1,0.4 0.5,-2.6 -1.4,-1.1 1.5,-4.7 -0.1,-2.7 4.2,0.1 0.7,0.8 -1.4,1.3 -0.1,4.5 z", + "SW" : "m 185.73,187.29 0,0 0,0 z", + "SH" : "m 561.73,188.69 0,0 0,0 0,0 z", + "BR" : "m 241.13,217.99 2.5,0.3 -0.8,2.2 -3.4,0.6 -0.4,-2.2 z m -7.3,66.1 0.8,-1.6 -0.1,-0.3 -4.7,-3.8 -0.8,0.5 -1.5,-2.1 -1.5,0.2 3.5,-4.1 3.7,-2.2 -0.1,-3.1 -1.4,-0.1 0.1,-0.1 -0.1,-0.2 0.7,-1.5 0,-1.3 -2.2,-0.2 -0.4,-2.6 -1.5,-1.1 -3,-0.1 0.3,-2.2 -0.7,-1.6 1.2,-3.9 -1.6,-1.8 -0.2,-1.8 -3.2,-0.1 -0.6,-4.8 -2.6,-0.5 -2.4,-1.7 -2.5,-0.4 -1.9,-2.5 -0.1,-2.9 -2.3,0.5 -3.2,2 -2.4,0 -2.1,0.1 0.3,-3 -1.3,0.9 -1.9,0.2 -3.5,-4.8 1.7,-2.2 0.4,-2.4 4.1,-1.8 1.5,0.1 1,-5.3 -1.2,-2.4 0.4,-3.6 3.3,0 1.5,-0.7 0.9,1.6 2.6,1.1 2.7,-1.7 1.5,-1.6 -1.3,-0.1 -1.2,-2.9 5.9,-0.5 1.6,-1.8 1.4,0.2 0.9,2.2 -0.9,2.3 0.5,1.6 1.8,1.3 3.2,-1.6 1.2,0.2 1,-1.1 2.6,0.3 3.1,0.3 2.5,-3.5 1.2,0.3 0.7,3.2 1.5,1 0.2,3.1 -3,0.9 1.4,2.6 2.7,0.3 2.9,-2.7 5.2,1.5 0.7,2.6 1.8,-0.8 4,1.2 3.1,-0.1 2.9,1.6 2.5,2.3 3.1,0.4 1.5,3.9 -1,3.9 -3.1,3 -2.2,3.6 -1.7,1.2 0.2,5.1 -0.6,3.5 -0.9,1.1 -0.1,2.3 -2.7,4.2 0.2,0.9 -2,2 -4.4,0 -5,2.7 -1.7,1.3 -1.5,2.3 0.4,2.7 -0.7,2.3 -2,2 -1,2.1 -1.7,-0.6 -0.4,1.9 -1.5,1.4 -0.8,2.9 -1.4,1.3 -0.3,-0.2 z", + "KI" : "m 34.93,213.89 0.2,0.4 0.2,0.2 -0.4,-0.1 z", + "PH" : "m 574.43,195.49 1.3,-0.2 -1.5,-1.5 1.7,-0.1 1.1,2.8 -1.3,-0.2 -0.5,1.8 z m -8.8,0.5 0.2,-1.8 0.9,0.5 -1.1,1.3 z m -0.4,0.4 0,0 0.4,-0.4 0,0 0,0 -0.4,0.4 z m 4.6,1.5 0.1,-3.5 2.2,1.5 -0.4,1.1 2.1,-0.8 -0.1,1.8 -1.9,2.5 -1.2,-1.5 0.4,-1.7 z m 4.4,5.8 -1.6,-0.8 -1.8,0.2 -1,2.5 0.2,-2.6 2.5,-1.9 1,1.1 1.7,-1.7 1.4,0.1 0,-2 1.6,2.3 0.5,3 -0.7,1 -0.9,-1.1 -0.8,1.3 0.1,2 -2.2,-1.1 z m 0.3,-12.1 -0.7,3.8 -1.2,-1 -0.5,-2.4 -1.2,-1 0.1,1.6 -1.7,-1.6 -1,1.1 1,0.9 -0.9,1.4 -1.6,-2.5 1.2,-0.1 -1.8,-2.4 -0.5,-3 1.1,0.4 -0.1,-2.8 1.6,-2.9 -0.2,0.8 2.3,0.8 0.5,2.2 -0.7,1.7 -1.2,0.6 0.3,3.4 1.5,-0.3 z m -9.3,4.8 0.3,1.3 -4.6,3.9 4.3,-5.2 z", + "MX" : "m 170.23,178.09 -0.5,0.6 0,-0.3 0.1,-0.3 z m -38.2,-2.3 0.3,0.1 0.6,0.8 -0.5,-0.4 z m -10.1,-5.6 0.3,0 0.2,0.3 0,0.1 z m -0.4,-1 -0.1,0.4 -0.1,0 0.1,-0.4 z m -5.8,-6.3 -0.1,0.1 -0.2,-0.2 0.3,-0.5 z m -5.8,-1.7 -0.1,0 -0.1,-0.5 0.2,0.2 z m 10.9,0.4 0.2,-1 0.5,0.4 -0.3,0.5 z m -1.8,-1.7 0.6,0.5 0.1,0.6 -0.9,-0.8 z m 23.5,-0.1 -0.1,0.2 0.4,0 1.5,2.5 1.5,2.5 0.4,0.5 0.2,0.5 1.8,1 2.1,0.2 -1,3 -0.4,4 1.4,3.7 2.5,3.8 2.6,1.2 5,-1 1.8,-1 1.1,-3.7 4.2,-1.2 2.7,0.7 -1.3,2.1 -0.8,3.9 -0.9,-0.5 -1.1,1.2 -0.5,0.1 -3.5,0 -0.9,1.1 2,1.8 -2.6,0.6 -0.9,2.9 -3.2,-3 -1.8,-0.7 -3.3,1.5 -4.2,-1.7 -4.4,-1.4 -1.4,-1.2 -3.3,-0.9 -2.8,-2 -1.4,-2.1 1,-2.1 -1.2,-2.3 -4.8,-5.3 -2.2,-1.1 0,-1.9 -2.1,-1.3 -3,-3.4 -1.9,-3.8 0.1,-0.7 -2.9,-1.3 -0.2,3.3 2,1.9 6,9 -0.2,1.3 1.6,0.2 0.6,1.9 -0.8,0.7 -0.8,-1.4 -3.5,-2.6 -0.2,-2.4 -2.6,-1.4 -2.8,-2.3 1.7,-0.2 0.2,-1.1 -3.1,-2.7 -0.7,-2.2 -2.1,-3.6 4.6,-0.4 -0.2,0.5 7.2,2.4 5.5,0 0,-0.9 3.2,0 3.2,2.6 0.7,1.8 2.6,1.4 1.6,-1.9 z m 7,8.5 -0.4,1 0.2,0.8 0.5,-1.8 z", + "ES" : "m 306.83,163.39 -2,-0.6 -1.3,0.1 1.9,-1 z m 23.8,-15.8 0.1,0.1 -0.1,0 0,-0.1 z m -4.7,-1.3 0.2,0.1 0,0.1 -0.1,-0.1 z m 0.1,-0.5 -1.5,-0.3 -0.7,-1.5 -1.7,-0.5 0.8,-4 0.1,-4.5 1.4,-1.3 -0.7,-0.8 -4.2,-0.1 -0.9,-2.7 2.5,-1.4 1.3,0.4 7,0.1 3.4,0.3 3.4,1.7 2.8,0.2 0.2,0.4 0.3,-0.2 0.5,0.1 0,0 0,-0.1 0.1,0.1 0,0 1,0.3 1.3,-0.2 0.1,1 -2.3,1.6 -2,0.5 -2.5,3.5 1,1.6 -1.4,1 -0.4,1.6 -1.8,0.6 -0.8,1.2 -4.5,0.2 -1.7,1.2 z", + "BU" : "m 183.13,187.49 0,0 0,0 0,0 z", + "MV" : "m 476.83,206.89 0.5,0.7 -0.6,0 0.2,-0.4 z", + "SP" : "m 558.13,197.09 0,0 -0.1,0 0.1,0 z", + "GB" : "m 330.13,90.09 0.1,0.2 -0.2,0.1 -0.3,-0.3 z m 0.2,-0.8 0,0.5 0.3,0.1 -0.8,-0.1 z m 0.5,-0.2 -0.4,-0.2 0.8,0.3 -0.2,0.2 z m 3.5,-3.1 -0.5,1.4 -0.1,-1 -0.6,-0.3 z m 0.2,-0.9 0.3,0.1 -0.8,0.2 0.2,-0.5 z m 0.3,-0.4 -0.1,0.3 -0.3,0 0.1,-0.4 z m -154.3,95.9 0.1,-0.1 0.4,0.1 -0.3,0.1 z m 18.7,-4.9 -0.4,0 -0.1,-0.2 0.3,0.1 z m -1,-0.2 -0.1,0.2 -0.3,0 0.3,-0.1 z m 124.5,-81.9 0,-1.5 1.6,-0.9 -0.2,1.3 z m -100.7,234.1 1.4,-2.7 2,0.4 0.3,0.8 z m 179.2,-179.3 -0.1,0 -0.1,0 -0.1,-0.1 0,0 0.1,0.1 -0.2,0 0,-0.1 0,0 0,-0.1 0.1,0 0.3,0 0,0 -0.2,0 z m -0.3,-0.1 0,0 0,0 z m -74.8,-2.5 -0.1,0.1 0,-0.1 z m 73.4,3.3 -0.2,0 -0.3,0 0.1,-0.1 z m -77.1,-48.5 1.8,-0.6 1.5,1.7 -1.4,1.4 -2,0 -1.7,-0.9 z m 2.3,-6.2 2,-3.6 3.8,0 -2,2 1.1,0.6 3,0.1 0.3,0.6 -2.7,3.8 3,1.3 0.8,2.5 2.1,1.4 0.8,2.7 -0.6,0.5 3.2,0.3 -0.2,1.8 -1.7,1.5 1.3,0.9 -2.1,1 -7.1,0.3 -3.8,1 2.4,-2.5 2.1,0 -2.5,-1.5 -1.8,-0.2 2.1,-1 0.1,-2.5 1.9,-0.4 0.6,-2.1 -1.5,-0.9 0.5,-0.9 -2,-0.1 0.1,1.3 -1.4,-1.1 0.9,-1.8 -2,-2.4 -1.7,-0.7 1.5,-0.4 -1.9,-1.8 z", + "GR" : "m 386.63,147.99 -3,0.5 -2.3,-0.8 1.3,-0.6 z m 2.5,-2.3 1.2,-0.6 -0.3,0.8 -0.5,0.5 z m -0.8,-0.9 -0.4,-0.2 0.4,-0.4 -0.1,0.3 z m -0.5,-1 0.2,0.1 -0.2,0.2 0.1,-0.2 z m -3.3,0.2 0.7,-0.5 0.1,0.4 -0.4,0.8 z m 2.2,-1.4 -0.5,0.2 -0.2,-0.1 0.2,-0.1 z m 1.2,-0.3 0.2,0.1 -0.5,0.1 -0.4,-0.2 z m -1.7,-1.8 0.2,0.6 -0.4,-0.1 -0.2,-0.5 z m -1.2,-3.3 -0.4,0.1 0.4,-1.1 0.4,0 z m -8.5,-1.5 0.2,-0.1 -0.2,0.1 -0.1,-0.1 0,-0.1 0.1,-0.1 0.2,0 1.5,-0.6 2,-0.5 3,-0.6 1.4,0.8 2.1,-1.1 0.6,0.7 -1.2,1.5 -1.9,-0.6 -2.5,0.8 1.3,1.1 -3.4,-0.7 -0.1,1 5.4,5.8 -2.8,-1.9 0.3,1.3 -1.7,-0.6 -0.9,0.9 0.9,2.5 -2.5,-0.6 -1,-3.3 -2.6,-3.3 0.7,-0.3 z m 10.4,3.3 0.3,0.4 -0.3,0.2 -1.2,-0.5 1.1,-0.3 0,0 z", + "AS" : "m 9.63,245.09 -0.1,0 -0.1,0.2 -0.2,-0.1 z", + "DK" : "m 357.83,100.89 1,0.8 -0.6,0 -0.8,-0.3 z m -1.7,0.1 0.3,0.1 -0.2,0.1 -0.4,-0.4 z m 4.2,-0.3 -0.7,0.4 0,-0.3 0.3,-0.1 z m -5.3,-0.2 0.5,0.4 -0.1,0.2 -0.4,-0.1 z m 2,0.4 -0.2,0.5 -0.2,-0.2 0.7,-0.9 z m 3.4,-2 -1.2,2.7 -1.7,-2.6 2.2,-1.3 z m -6.1,2.4 -1.1,-0.3 -0.3,0 -1.1,-4.4 3.2,-1.5 1.6,-1.8 -0.7,2.3 1.4,1.3 -0.9,0.9 0.6,2.3 -2.4,-0.5 z", + "GL" : "m 234.93,60.89 0.2,0.2 -0.5,0.1 -0.2,-0.2 z m 1.5,-0.8 -1.8,0.4 0.2,-0.2 0.7,-0.2 z m -4.8,-5.7 -0.5,0 -0.2,-0.4 0.5,0.1 z m 2.2,-2.3 -0.9,-0.3 0.7,-0.7 0.5,0.7 z m -2.9,-4.6 -0.9,0.6 -0.2,-0.3 1.1,-0.5 z m -1.2,-1.6 -0.4,0.4 -0.7,-0.2 0.5,-0.2 z m 1.3,-0.1 -1.1,0.9 -0.1,-0.8 0.7,-0.2 z m -1.8,-2.8 0.9,0.5 -0.3,0 -1,-0.5 z m -0.7,-1.2 0.6,0.1 -1.2,0.1 0,-0.4 z m -0.4,-2.3 -1.1,0 -0.9,0 1.6,-0.3 z m -25.1,-8 -0.8,0 0.1,-0.2 0.8,-0.1 z m -5,-3.6 1.6,0.3 -0.6,0.2 -1.6,-0.3 z m 2.5,-0.2 1.3,0.4 -1.6,0 -0.4,-0.3 z m 102.6,-10.6 -2.2,1.3 -1.8,-0.7 3.2,-1.1 z m -94.9,-3 0.6,0.2 -0.4,0.1 -0.2,-0.1 z m 30,-6 -1.7,-0.1 -2.1,-0.5 0.8,-1 z m -4.8,50.1 0.6,-0.6 -3,-0.9 0.3,-1.7 3,0 2.4,1.4 -0.3,1.1 z m 1.4,12.1 -0.3,0 0,-0.2 0,-0.1 -0.2,-0.1 -0.7,-2.6 2.6,-1.4 -3.2,-0.5 1.5,-3.6 3.8,-1.2 0.7,-3.9 -1.2,-0.9 -4.6,-1.4 -1.4,-1.2 4.1,0.1 3.4,1.3 -1.5,-2.1 -2,-1.1 -0.3,0.2 -0.9,-0.1 0.3,-0.6 0.2,0 -0.3,-0.2 2.3,-0.6 -1.9,-0.2 -0.8,0.5 -0.5,-0.5 0.8,0 0.2,0 -2.2,-0.2 0.3,1 -2.6,0.2 -1.2,-1.1 0.6,-0.6 -0.3,-0.2 0.4,-0.1 0.1,0.1 1.2,-1.2 0.5,-2.1 -1,-0.4 0.1,-0.1 -0.8,-0.3 -0.1,0 -0.2,-0.1 0.8,-1.2 -1.5,-0.9 0.7,-0.9 -1.4,-0.7 0.5,-1.1 -1.8,-2.2 -2.1,-0.5 -0.9,-1.2 0.4,-1.4 -4.7,-1.7 -5,-0.8 -1,0.9 -4.2,-0.5 -0.5,1.3 -3.7,-0.5 -2.4,-1.3 3.2,-1.2 -4.6,-0.4 -1.8,-0.8 0.8,-0.8 4.9,-0.8 3,0.1 1,-1 -5.7,0.6 -0.5,-0.9 -3.5,-0.4 -3,-1.6 0.6,-1.5 6.2,-1.2 2.5,-1.2 4,-0.1 2.1,-1.7 -0.4,-2.3 -3.8,-0.1 -0.8,-1.3 4.5,-1.9 0.6,-1 3.5,-1 2.7,0.7 1.5,-2 -1.3,-1.1 5.5,-1.7 7.9,-1.2 1.7,1.2 -0.4,2.6 1.6,-2.3 3,0.7 3.7,-0.2 -2.2,-1 -1,-1.7 4,0.3 5.8,1.9 1.6,1.2 1.8,-0.3 -1.4,-0.9 0.4,-0.3 -4.1,-1.2 -2.8,-2 1.3,0.7 2.6,-0.2 3.6,1.3 -0.6,1.4 2,-1.4 -3.9,-1.8 9.1,0.1 -8.9,-0.5 -2.3,-0.5 1.5,-0.6 1.8,0.5 0.9,-0.9 4.8,-0.3 4.4,0.2 1.9,0.1 0.3,-1.2 3.7,-0.5 8.2,-0.5 3.5,0.2 9.6,1.4 -0.8,0.5 -9,0.3 -8,1.1 5.9,-0.4 3.4,-0.6 5.2,0.3 4.1,-0.5 1.4,1.3 3.5,0.4 2.5,0.9 -2.1,1.3 -14.2,1 -5.6,1.3 2.1,0.1 7.5,-1.1 6,0.4 -0.1,0.9 -3.1,0.8 -0.1,0.9 5,-1.5 1.1,-1.3 3.4,-0.3 0.3,2.6 -3.6,2.7 2.2,-0.4 6.4,-3.7 3,1.2 2.4,-1.2 3.6,0.1 3.6,0.8 1.3,0.8 -3.8,2 -2.3,0.1 0.5,1 -2.1,0.6 -3.2,-0.1 2.4,1.2 -1.2,0.8 -4.5,0.5 -3,0.9 2.2,0.8 -0.7,1.4 1.2,1 -1.8,0.6 0.9,1.3 -2,-0.6 -1.6,2.5 -0.2,1.6 4.2,-0.2 -0.3,0.8 2.9,0.4 -2.9,0.4 -2.8,-0.5 0.7,1.1 4.1,0.7 -0.8,2.8 0.4,2.3 -1.1,-2.1 0.7,-1.2 -3.4,-0.7 -2.3,1.2 0,1.6 3.4,-0.1 1.1,3.4 3.9,1.4 -2.1,0.2 -1.8,2.7 -3.6,0.7 1.3,2.4 -1.9,-0.1 -1.4,0.8 -3.3,-1.2 -4.1,1.3 1.1,0.3 -0.2,-0.1 2.3,-0.9 2.4,1.3 2.5,0.6 0.1,0.8 -2,-0.3 1.8,1 -1.3,0.1 0.9,1.2 -4.2,-1.7 -0.2,-0.8 1.5,0 -1.6,-0.3 -1.2,-0.5 -1,0.5 2.2,1.8 3.9,1.8 -1.1,0.7 2.4,1.6 0.7,2.5 -3.6,0.4 -1.8,-2.3 -3,-1.7 0.5,1.4 -4.5,1 -0.6,1.8 1.8,-0.2 -1.5,0 0.8,-1.1 4.5,-1.1 0,1.4 -1.7,0.7 -1.2,0 -2,1.3 1.1,0.3 3.8,-1.4 3.4,1 2.2,0 -1.6,1.6 -1.7,0.4 -4.1,2.8 -3.4,0.5 -2.6,1.2 -5,0.5 -2.6,1.6 0.2,0.8 -2.7,3 -3.3,1.7 -2.8,0.8 -0.3,-2.1 -1,1.8 -3.1,0.7 1.3,0.4 -1.5,1 -1.1,2 0.6,2 -3.1,3.4 -0.9,5 -1.6,1.2 0.4,1.5 -2.1,0.2 -2,-0.9 -0.2,-1.3 -4.7,-0.6 -2.1,-1.6 -0.5,-2.2 -1.9,-1 0.3,-1.4 -2.4,-1.6 0.2,-2.8 -1.5,0.8 0.1,-2.6 z", + "GU" : "m 613.53,191.99 -0.2,0.4 -0.1,-0.3 0.5,-0.5 z", + "MP" : "m 615.13,188.99 0.1,-0.4 0.3,-0.1 -0.2,0.3 z", + "PR" : "m 211.33,182.59 -1.8,0.7 -1.7,0 0,-1.2 z", + "VI" : "m 212.33,183.59 0.4,0 -0.7,0.2 0.1,-0.2 z", + "CA" : "m 175.63,27.69 -3.1,-0.2 0.9,-2.2 -2.3,-0.5 -2.3,0.3 0,-1.4 1.7,-1.5 2.6,-0.5 3.9,0.5 2.7,-0.3 -4.8,-0.3 -1.4,-2.9 -2.7,-0.6 0,-2.5 5.1,0.3 3.1,1.7 0.9,1.2 0.4,-1.6 -3.3,-1.5 9.9,-1.3 -3.7,-0.1 6.4,-1.3 -5.8,0.4 -6.3,1.3 -1.8,-1 -1,1.1 -4.5,-0.4 1.2,-1.8 -2.2,1.7 -4.1,-1.2 5.2,-0.5 0.3,-0.6 -6.3,0.5 -1,-0.7 3.7,-1.9 -4,1 1.8,-1.2 -4.6,0 1.8,-1 5.7,-1.2 6.3,0.6 -3.8,-0.7 2.7,-0.7 -0.8,-0.9 5.3,0.8 5.7,1.6 -5.2,-2 1.2,-1.4 2.9,0.6 -1.9,-1.1 3.2,0.1 -0.5,-0.8 5.8,0.3 1.9,-0.9 3.7,0.3 0.7,0.6 1.7,-1 6.3,-0.2 0.1,0.6 6.2,0.5 -4.3,1.2 2.3,-0.1 5.2,-1.2 3.4,1.9 2.6,0.1 0.5,1.4 -5.9,2.2 -1.9,-0.2 -2.4,1.2 -6.6,1.6 10.6,-1.8 -7.2,3.6 -4.5,2.7 -1.6,1.8 -3.6,-0.2 0.4,1.1 -5.3,0.8 -2.8,-0.5 0.1,0.8 5.5,0.2 0,0.8 -3.2,-0.4 -3.4,0.3 4.1,0.3 2.2,0.9 -0.3,0.8 -3.3,0.2 2.7,0.7 -0.9,1.1 -3.9,1.2 -1.3,1.8 -4.8,0.2 3.4,1 -0.7,0.7 2.8,-0.2 0.3,1.2 -2.9,1.4 0.8,1.8 -1.7,-0.1 0.8,-1.6 -3.3,0.7 0.5,-1.2 -6,-0.2 -0.9,0.6 -5.8,-0.5 -5.1,-0.2 -0.9,-0.9 4.3,-1.7 1.2,-0.9 -1,-1.8 1.9,-0.4 2.4,0.8 0.3,1.1 z m 0,0 0,0 0,0 0,0 0,0 0,0 1,-0.1 1.2,-2.1 -2.2,2.2 0,0 0,0 0,0 z m 9.3,102.5 0,0.2 0.3,0.2 -4.7,0.7 -2.4,1.4 -0.9,-0.7 1.2,0 -0.4,-0.5 0.3,-0.2 0.2,-0.9 1.3,-0.8 0.8,-4.4 2.3,1.8 0.7,-0.7 -1.9,-2.7 -6.5,-1 0,-0.5 -0.7,0.2 -0.7,-3.5 -1.9,-0.2 -1.1,-1.9 -3.1,-0.6 -2.9,2.5 -3.6,-0.1 -2.3,-1.2 -4.8,-1.2 -52.8,0 -0.4,-0.2 -0.2,0.2 -0.1,0 -0.4,-0.9 -2.7,-1.5 0.2,-0.7 -0.4,-0.1 0,0.1 0.3,0.2 -0.3,0.1 -0.2,-0.4 -0.5,-0.1 0,-0.1 -0.2,-0.2 -0.1,0.2 -0.6,-0.1 -0.1,0 -0.6,-0.1 0.5,0.1 0,0 -0.3,0 0.3,0.1 0.1,0 0.4,0.1 0.4,0.4 -0.1,0.1 0.3,0.3 0,0 1.2,1.6 2,1.6 -0.1,-0.5 0.5,0.3 0.5,0 -0.8,0.2 0.3,0.3 -0.5,0.7 -2.1,-0.6 -3.7,-2.1 -0.1,-0.5 0.1,-0.1 -0.3,-0.5 0,0 -0.1,-0.2 -1.9,-0.4 -1.2,-1.7 1,-0.3 2.6,0.8 0.1,-0.1 -0.2,-0.1 0.6,0 0.2,-0.2 -0.2,-0.2 -0.6,0.4 -2.3,-1.3 -0.3,-2.3 -0.3,0.8 -0.3,-0.3 0.2,-0.4 0.4,-0.1 0,0 0,-0.1 0.1,-0.2 -0.2,0.1 0,-0.1 0.2,0 -0.1,-0.3 -0.1,0.1 -0.2,-1.3 -1,-0.9 -0.5,1.2 -0.6,-0.9 0.1,-0.3 -0.3,0 0,-0.3 0.3,-0.2 0,0.4 0.1,-0.4 0.7,0.3 -0.2,-0.2 0.4,-2 -0.8,1 0.4,-0.1 -0.1,0.3 -0.4,0.2 -0.1,-0.2 -0.3,0.5 -2.2,-2.4 0.9,-1.9 0,-0.7 -0.1,-1.7 -3.4,-1.8 -3,-5 -3,-2.5 -1,-1.5 -1.7,0.6 -2,2 -0.4,-1 -3,-2.4 -3.5,-0.6 0,-29.2 3.6,0.5 3.6,1.9 2.6,0.1 0.1,-1.3 3.9,-0.7 1.1,0.3 5.4,-2.6 1.7,0.5 -4.7,1.7 -1.7,1.6 3.1,-1.8 0.6,1.1 1.1,-1.4 6.2,-2 0.9,1.8 2.3,1.4 1.8,-2.7 0.2,2.6 2.4,-0.5 0.4,-1.2 2.9,0.3 2.2,1.2 4.3,1.3 3.9,0.7 0.1,-0.6 3.4,1.5 0.2,1 -1.7,-0.1 -1.1,1.1 3.2,0.8 4.4,-0.1 2.3,-0.8 2.3,0.7 0.6,1.3 1.6,0.3 0.8,2.4 0.7,-1.9 -1.5,-1.9 4.5,-3.1 -3.8,1.6 -2.3,-0.4 1.1,-1.1 4.7,-0.9 0.9,1.8 1.6,1 2.2,0.1 3.5,1.1 1.6,-0.6 4.5,0.2 1.5,0.7 -2.2,-2.6 2.8,-0.3 0.8,1.4 1.8,-0.9 -1.1,2.7 2.2,1.9 -0.3,-3.8 1.2,0.1 2.4,-2.7 -2,0.3 0.6,-2.3 -3.6,-1.4 -0.7,-1.7 0.2,-3.3 2.4,-2.3 1.1,-0.2 -1,0.1 0,-1.8 -1.1,-1.2 0,-3.1 0.9,-1.4 3,-0.6 2.7,0.7 4,0.3 -3.2,3.9 -1,0.5 -3.4,-0.2 1.3,1.1 -1.2,1.6 -0.8,0.1 2.5,1.9 0.3,2.1 2.9,2.5 -2.5,1.5 2,0.7 2.6,2.1 0.3,2.1 1.2,-2.7 1.4,-0.6 1.9,1.7 -0.9,1.5 1.7,3.8 3.1,-3.1 0.5,-2.2 1.8,-1 -1.5,-0.8 0,-1.7 2.2,-0.3 0.9,0.2 0,-0.1 0.6,0.1 -0.1,0.1 1.9,0.4 2.4,1.5 -0.9,1 1.1,0.9 -2.7,0.6 2.7,3.3 -0.5,1.5 -3.5,2.1 -2,-2 1.3,2.5 -3,-0.3 -0.4,-0.9 -2.5,0.4 1.8,0.9 -2.9,2.6 -1.1,0 -3.3,-1.9 1.2,1.9 3.8,0.3 -1.8,3.2 -2,0.8 -1.8,-0.7 -0.4,1.6 -1.5,0.2 0,0.1 0.6,0.2 -0.1,0.1 -0.1,-0.2 -0.4,-0.1 0.6,1.5 -3.9,1.7 -3.2,4.8 -0.9,2.6 0.8,3.5 2.4,-0.1 1.4,3.6 -0.5,1.4 3.2,-0.9 4.1,1.1 2.5,2.2 5.7,2.2 4.4,0.5 0.3,3.3 -0.3,2.2 4.9,4.7 2.4,-3.1 -0.9,-1.8 -0.3,-2.9 -1.2,-1.3 3.8,-1.7 2.1,-2 0.3,-2.1 -1.1,-3.2 -2.8,-1.8 2.4,-3.4 -1.7,-3 1.2,-1.8 -1.2,-2.4 1.3,-0.9 5.2,1.3 2.1,-1 3.8,2.4 -0.2,0.9 4.6,1.7 -0.8,0.7 0.7,4.7 1.3,-0.1 2.1,2.3 3.6,-2.1 0.5,-2.5 1.3,-1.8 0.9,0.4 0.4,1.4 0.2,-0.4 0.2,0.3 -0.3,0.2 -0.1,-0.1 0.2,1 1.3,0.3 0.9,1.9 3,4.2 -1.1,1.3 4.1,4 4.8,1.7 -1.4,0.7 1.7,1.3 2.5,0.7 0.4,3.2 -2.6,2 -3.1,0.6 -2.4,2.2 -3.6,0.6 -1.2,-0.5 -7.8,0 -1.8,2.4 -3.2,1.4 -1.7,2.4 -2.7,2.5 -3.2,1.3 -3.3,2.9 -1,0.3 -1,0.9 -6.1,1.4 -1.6,1.3 1.4,0.1 0,0.2 z m -90.5,-17.9 0,0 0,0 z m 5.8,2.8 -0.1,-0.3 -0.2,0.1 0,0.1 z m -7.8,-7.2 0.3,-0.4 -1,0.4 -0.3,0.8 z m 57.5,-44.6 -0.4,0.1 0.1,0.3 0.3,-0.2 z m -54.8,52.4 0.3,0.1 0,-0.2 -0.1,-0.1 z m -0.2,-0.3 -0.1,-0.2 -0.2,0 0,0.2 z m 117.6,-39.5 0,2.5 -1.1,0.4 -2.5,-0.6 -1.9,-1.4 -0.2,1.1 3.2,2.7 -0.6,1 -4.4,-1.2 -2,-1.2 -4,-1.6 0.3,-1.2 -2.1,-0.8 -1.6,-2.4 -2.3,0.8 -2.2,-0.8 -1.7,1.3 -2.2,-0.5 -0.5,-1.8 1.3,-1.6 3.2,0.8 3,-1 1.4,0.2 -1.9,-2.2 2.9,-1.9 1.5,-1.7 -1.6,-3.2 -1.6,-0.3 -3.1,-2.3 -2.2,1.2 0,-1.2 1.9,-0.7 -4,-2 0,-1.2 -2.4,-0.5 0.3,1.5 -5.7,-0.9 -0.7,1.2 -7.9,-1.1 -4.6,-1.2 -1.7,-2.2 4.2,0.5 -1.4,-0.9 -3.3,-0.4 -0.5,-2.1 1,-3.2 1.2,-1.8 2.2,-1.6 2.1,-0.5 3,0.2 -3,3.6 0.5,3 3,2.6 -1.2,-3.6 1.9,0.6 -2.3,-1.9 1,-2.2 4.5,-1.9 2.5,0.1 2.4,3.6 -1.1,2.8 2,-1.9 1.7,1.7 0.9,-2 1.6,-0.6 4.6,0.9 -0.2,1.3 2,0.2 0,1.2 2.3,1.7 1.1,-1.4 2.6,1.4 -1.8,0.6 -0.1,0.4 0.6,-0.3 0.6,0.4 1.3,-0.6 -0.8,1.9 2.5,-1.1 3,1.1 2.4,2.9 -1.4,0.2 0.2,0.1 -0.4,0.3 0.4,0.1 0.4,-0.3 0.4,0.2 -0.5,0.2 0.7,0.1 0.8,1.1 -1.8,0.4 -0.7,0.8 -0.2,0 -0.4,-0.1 0.5,0.2 -0.4,0.5 2.8,0.6 0.6,0.8 0.2,-0.2 0.4,0 0,0.3 -0.6,-0.1 0.6,0.8 2.5,-0.4 2,2.5 0.2,0 0.4,-0.1 0.5,0.1 -0.1,0 0.8,0.1 -0.7,1.2 2.6,-0.4 1,2.1 -2.1,0.5 -0.1,1.7 -2,0.7 0.2,1.7 -1.9,-0.6 -4.4,-4.5 -2,0.2 1.5,1.5 -1.6,1.4 4.5,2.5 -0.2,0.8 2,1.6 0,0.2 0,0 0.1,0.4 0.3,0.3 z m -14.4,-23.2 -0.1,0.3 0.6,-0.2 -0.3,0.1 z m 8,4.1 -1.4,0.1 0.8,0.2 z m -5.8,64.5 -0.2,0 0.5,-0.4 0,0.2 z m -100.9,-5.5 0.3,0.4 0.4,0.2 -0.3,-0.1 z m 114.1,-2 4.3,1.4 -0.7,0.7 -2.6,-0.8 z m -116.5,-0.2 -0.2,-0.3 0.2,-0.1 0.2,0.3 z m -5.6,-3.7 -0.4,0 -0.1,-0.4 0.3,-0.2 z m 93.5,-1.6 -0.5,0.3 -0.6,0.2 0,-0.3 z m -99.5,0 -0.1,0.1 -0.1,0.2 0,-0.4 z m 5.4,0.2 -0.2,-0.2 0.2,-0.2 0.1,0 z m -0.1,-0.5 -0.1,0.2 -0.4,0 0.2,-0.2 z m -0.8,-0.7 0.1,0.4 -0.1,0.2 -0.2,-0.5 z m 0.3,-0.3 0.1,0.3 -0.1,0.2 -0.4,-0.4 z m -6,-0.3 0.4,0 0,0.2 -0.3,0.1 z m 6.3,0.9 -0.2,-0.6 0.2,-0.5 0.2,0.8 z m -1.8,-1.1 0.7,0.5 0,0.3 -0.3,-0.2 z m 2,0.5 0,-0.2 -0.1,-0.2 0.3,0 z m -2.5,-1.2 0.1,0.3 -0.2,0 -0.2,-0.4 z m 0.3,-0.2 0.2,0.4 -0.2,0 -0.2,-0.5 z m 91.9,-0.2 0.6,0.1 0.8,1.3 -2.6,-0.9 z m 3,0.2 0.1,0.1 -0.3,0.1 0.1,-0.3 z m -94,-0.5 -0.3,0.1 -0.1,-0.1 0.3,-0.5 z m -3.1,-0.3 0.1,-0.5 1.2,0.7 -0.1,0.6 z m 0.9,-0.4 -0.5,0 -0.1,-0.2 0.4,-0.2 z m 0.6,-0.1 0.9,0.8 -0.5,0.3 -1.4,-1.6 z m -1.7,-1.2 0.6,0.1 0.2,0.3 -0.7,0.4 z m -0.8,-1.3 0.7,0 0.1,0.6 -0.6,-0.2 z m 99.2,-0.8 -0.6,0.2 -0.1,-0.1 1.2,-0.2 z m -98,0.4 0,-0.1 0.5,-0.6 -0.1,0.5 z m 98.6,-3.5 0.4,-1 0.2,0 -0.1,0.7 z m -1.2,-1.5 0,0.5 -0.7,0.6 0.6,-0.6 z m -0.5,-0.7 -0.2,0.1 0.2,-0.3 0.2,0.3 z m 23.6,-3.9 -0.3,-0.1 0.1,-0.2 0.1,0 z m -2.9,-2 -0.6,0.1 0,-0.5 0.5,0 z m -21.7,-1.9 0.3,-0.2 0.1,0.2 -0.2,0.1 z m 0.7,-0.6 0.2,0.1 -0.2,0.2 -0.3,0.1 z m 29.3,-2 0.5,0.8 -0.5,-0.2 -0.2,-0.3 z m -6.5,0 0.5,0.3 -0.3,0.5 -0.8,0 z m -19.4,-0.8 -0.2,0.2 -0.7,0.2 0.2,-0.2 z m 25.7,-2.3 -0.1,0.9 -1.2,-0.8 0.8,-0.3 z m -1.9,-0.6 0.2,0.3 -0.5,-0.2 0.3,-0.2 z m -51.8,-0.3 -0.4,0.3 -0.3,-0.2 0.4,0 z m 53.2,0 0.5,0.5 -0.7,0 -0.2,-0.3 z m -27.5,-1.3 0.2,1.2 -0.8,1.2 -0.9,-1.7 z m -24.8,0 0.1,-0.1 0.4,0 -0.2,0.2 z m 53,-0.5 0.6,0 -0.4,0.5 -0.6,-0.1 z m -25.1,0 -0.5,-0.1 0.9,0 -0.3,0.1 z m 24.8,0 -0.5,0 0.2,-0.1 0.2,-0.1 z m -18.4,-0.5 0.8,0.1 0.2,0.2 -0.8,-0.1 z m 7,-0.4 1.2,0.8 -1.1,0.1 -0.9,-1 z m -21.6,-0.4 0.3,0.9 -2.3,1.5 -1.5,-0.9 1.2,-1.3 z m 29.3,0.1 0,0.1 -0.5,-0.5 0.2,0.1 z m -22.3,-1.6 1.4,0.1 0.3,0.8 -0.7,0.3 z m 27.3,-0.4 -0.2,0.4 0,0.5 -0.4,-0.9 z m -24.8,-0.2 1.1,0.6 -0.8,0.2 -0.9,-0.5 z m 24.7,-0.3 -0.2,0 0,-0.2 0.3,0.1 z m -25.5,-0.7 -0.4,0.2 -0.4,-0.1 0,-0.1 z m 24.1,-0.6 -0.1,0 -0.1,-0.4 0.3,0.2 z m -16.4,-0.9 -0.1,0.6 -0.1,-0.1 -0.1,-0.6 z m 15.8,-0.7 0.1,0.3 -0.8,0.4 0.4,-0.6 z m 5.4,-3.2 0.4,0 0.2,0.3 -0.6,-0.1 z m -39.9,-0.3 -0.4,0.1 -0.1,-0.2 0.4,0 z m -3.4,-0.7 0.6,0.6 0.1,1 -0.8,-0.7 z m 1.4,-0.2 1.1,0.5 0.7,1.1 -1.4,-0.5 z m 2.3,-0.6 0.4,0.1 -0.1,0.3 -0.6,-0.3 z m 39.7,-2.8 0.1,0 -0.9,0.5 0.3,-0.5 z m -86.1,0.3 -0.3,0 -0.2,-0.3 0.1,-0.1 z m -1,-1 -0.1,0.3 -0.3,-0.4 0.4,-0.2 z m -1,-0.5 0.2,0 -0.1,0.3 -0.3,-0.3 z m 85.4,0.1 -0.4,0 0.1,-0.4 0.3,0.3 z m -84.5,-0.1 -0.4,0 0.1,-0.4 0.2,0 z m -10.1,-1.2 -0.4,0 0.9,-0.1 0,0.1 z m 9.9,0.1 -0.4,0 0.1,-0.2 0.2,-0.1 z m -2.1,-0.3 0.5,0.1 -0.1,0.2 -0.4,-0.2 z m -0.4,-0.2 0.1,0.2 -0.3,-0.2 0,-0.2 z m -1,-0.4 0.5,-0.2 -0.6,0.4 -0.6,0.2 z m 68.2,0.3 1.6,0.3 0,0.7 -1.9,-0.1 z m -23.2,0.4 -0.4,0.7 -0.7,-0.6 0.4,-1.3 z m -48.4,-0.9 -0.2,0 0.1,-0.3 0.3,0 z m 69,-0.3 0.9,0.2 0.2,2.3 -1.6,1 -2.1,0 -0.7,-1.5 1.2,-1.8 z m -6.5,0.4 -0.3,-0.1 0,-0.4 0.7,0.2 z m -5.9,-0.6 0.2,0.1 -0.2,0.1 -0.3,-0.2 z m 15.2,0.4 -0.5,-0.6 0.3,0 0.3,0.3 z m -70.1,-1.1 0,0.1 0.1,0.2 -0.7,0 z m 11.9,0.6 -1,-0.5 0.8,-0.1 0.4,0.2 z m 49.7,-0.8 -0.1,0.5 -0.6,0 0.5,-0.4 z m 7.8,0.3 -0.5,0 -0.2,-0.3 0.2,-0.1 z m -0.7,0 0.1,0.7 -1.1,-0.6 0.3,-0.7 z m -51.5,-0.8 -0.1,0.7 -1,-0.4 0.6,-0.4 z m 3.1,-0.4 -0.5,0.6 -0.4,-0.1 0,-0.8 z m 0.3,-0.1 -0.4,-0.2 0.2,-0.5 0.2,0.2 z m -69,-0.6 0.1,0.1 -0.4,-0.1 0,-0.2 z m 65.8,0.1 0.1,-0.5 0.2,0.1 -0.1,0.3 z m 21.3,-0.9 0.2,0.4 -0.3,0.1 -0.1,-0.5 z m 23.2,-0.1 0,0.5 -0.8,1.1 -1.1,-0.1 z m -109.4,-0.7 0.3,-0.2 -0.3,0.7 -0.5,-0.2 z m 103.1,0.5 0.4,0.1 0.1,0.2 -0.8,-0.2 z m -16.2,0.2 -0.3,0.5 -0.3,-0.3 0.3,-0.3 z m 25.2,-0.1 0.7,0.1 -0.9,0.9 -0.5,-0.5 z m -46.4,-0.5 0.6,0.3 -0.5,0.3 -0.2,-0.2 z m 8.8,0 1,0 0,0.7 -0.8,-0.4 z m 1.9,-0.2 0.6,0.3 -0.7,0.7 0,-0.8 z m -82.7,0.1 -0.5,0.2 -0.2,-0.2 0.2,-0.2 z m 116.6,-0.3 -1.1,0.7 -0.6,-0.1 1.1,-0.8 z m -3.3,-0.5 0.3,0.7 -2.3,-0.2 1,-0.4 z m -5.4,0.2 -0.1,0.1 -0.5,-0.2 0.3,-0.1 z m -17.8,-0.2 0.1,-0.2 0.5,0.2 -0.1,0.3 z m -10.6,-0.3 -0.2,0 -0.1,-0.1 0.3,0 z m 19.8,-0.7 0.8,0 -0.4,0.5 -1.1,-0.5 z m -47.2,-0.7 -0.9,0.1 -0.3,-0.3 0.8,0.2 z m -9.2,-0.8 0.6,0 -0.9,0.2 -0.3,-0.2 z m -0.8,0 -0.7,0 -0.1,-0.1 0.1,-0.1 z m -21.5,-0.2 -0.3,0 -0.2,0.2 0.3,-0.4 z m 52.5,-0.3 0.4,0 0.5,0.8 -0.8,-0.3 z m 52.7,-2.6 0.7,-0.1 -0.4,0.5 -0.5,-0.2 z m 0.8,-0.4 -0.5,0 0.2,-0.4 0.3,0 z m -61,-6.4 -1.3,1.7 -2.3,-2.1 -0.2,-1.1 2.7,-0.1 z m 0.4,-11.5 0.7,-1.4 2.5,1.4 0.7,1.2 -2.6,0.5 z m 27,-5.3 1.2,1.2 -0.8,0.5 -2.1,-0.8 z m -28.2,0.9 1.1,1.1 -1.5,-0.1 -1.6,-2.3 z m 37.2,91.2 -0.2,0 -0.5,0 0.2,-0.2 z m -4.1,-2.7 0.2,0.2 -0.7,0 0.1,-0.3 z m 10.5,6.8 0.6,0.1 0.2,1.1 -2.7,-0.8 z m -2,0.2 -0.1,0.2 -0.3,-0.1 0.2,-0.2 z m -1.4,-0.8 0.5,0.2 -0.4,0.3 -0.2,-0.3 z m 14.7,5 -0.3,0.1 0.1,-0.2 0.5,0 z m -36.9,-101.2 4.6,0.2 -0.5,1.1 -4.8,-0.1 z m 68.6,96.9 -2.3,1.3 -1,-1.4 1.8,-2.4 0.3,1.8 z m -4.3,-3 0.1,1.9 -1.1,1.2 -1.3,-1.1 2.2,-0.2 z m -134.6,-14.3 -0.4,-0.5 1.4,-0.3 0.2,1.5 z m -1.3,-3.2 2.6,0.1 -0.7,2.3 -1.6,-0.5 z m 102.4,-5 -0.9,0.4 1.4,-2 0.4,0.6 z m -29,-63.2 2.3,1.8 -0.2,2.4 -2.9,-0.2 -2.9,-1.1 0.8,-1.8 z m -28.2,-10.5 -3.3,-0.2 -3.7,0.4 -0.3,-0.5 5.4,-1.5 1.7,0.7 z m 25.9,-0.7 2,0.6 -0.1,1 -3.8,1.4 -1.7,-1.1 -1.2,-1.9 0.5,-1.4 3.8,0.9 z m 55,101.8 -0.6,-0.2 0.1,-0.8 -0.5,-0.1 -0.3,-0.2 0,-3.2 -2.7,-0.9 -1.5,1.8 -0.5,2 -2.3,2 -6.2,0.1 2.3,-1 0.7,-1.5 5,-2.3 2.9,-3 5.4,-2.4 2.4,0 1.4,0.8 -0.2,1.1 -2.1,1.1 -2.1,-0.3 1.7,1.1 2.2,-0.5 -1.2,1.6 2,2.8 3.1,1 1,-0.6 1.8,1.3 -4,1.5 -1.5,0 -3.3,2.9 -1.2,-1.5 0.4,-1.1 2.2,-1.4 0.6,-1.8 -2.6,1.7 z m -12.4,-1 0.3,-0.2 -0.1,0.4 -0.1,0.2 -0.8,0 0.5,-0.3 -0.2,0.1 0.2,-0.3 0.3,-0.1 z m -96.9,-9.5 -0.8,-0.5 0.6,0.1 0.2,0.4 0,0 z m 7.2,-80.5 -0.7,-1.4 -0.9,1.1 -2.1,-0.1 -0.8,-1.2 2.5,-0.8 5.2,-3.7 4.6,-0.8 1.9,1 -1.6,0.5 0.7,2 -2.3,0.7 -0.7,1.7 -2.2,2.3 -1.5,-0.4 3.3,-2 -0.1,-2.6 -1.5,0.2 -1.1,2.5 z m 127.6,85 1.8,-1 0.5,1.4 -0.6,1.8 -2.4,-0.3 0.8,-1.2 -2.2,0.2 -1.5,1.1 0.1,-2 -6.7,0.3 -0.5,-0.8 1.4,-1.6 3.8,-6.9 2.1,0.9 -2.1,2.3 2.4,0.3 -0.4,1.4 3,-0.9 1.2,1.2 -0.8,1.7 1.6,0.3 z m -60.8,-43.2 -3,0.3 1.8,-1.5 -0.4,-1.6 0.9,-3.7 0.9,-0.5 1.3,2.2 0.4,-0.8 4.3,2.3 1.6,1.6 2.5,1.3 -1.5,1.1 -4.9,-2 -0.2,1 -3.1,2 z m -23.8,-20 2.2,1.3 2,2.1 1.2,0.1 -2.5,1.3 -1.8,-0.3 -4.1,-1.6 2.3,-1.1 z m -11.4,-3 4.7,2.2 1.2,1.1 -2.9,-0.1 -0.8,1.5 1.5,-0.3 0.3,1.4 -2.9,0.9 -5.8,-1.3 -0.1,-1.1 -1.6,1.6 -3.1,1 -8.2,0.9 -0.9,-2.5 -4.4,-0.3 -2.8,-2.4 0.9,-0.4 5.4,-0.7 5.1,0.2 -1.3,-0.8 -3.5,-0.8 -3.9,0.6 -3,-0.2 -1.5,-1.5 4.4,-1.2 0.5,-0.6 -4.5,0.6 0.2,-1 -1.9,0.1 0,-1 1.8,-1.1 -0.9,-0.8 2.4,-1.7 5.3,-1.8 1.2,0.9 0.4,2 1.4,-1.5 3.4,1.1 -0.8,1.5 2,-1.1 1.6,0.4 -1.8,-1.9 1.2,0.1 2.8,1.5 1.7,3.4 0.9,-1 -1,-0.8 -0.6,-2.3 0.2,-2.9 1.6,1.3 1.3,-0.1 2.1,1.6 0.2,1.2 1.8,3.2 -0.5,1.8 z m 49.5,-10.5 3.6,2.1 -0.1,1 -7.1,-0.1 -1.5,-1.6 -0.1,-1.7 z m -35.2,6.4 -3.1,0.9 -1.2,1.4 -3.6,-3.3 -2.3,-0.5 -1.8,-1.8 1.6,-1 1.2,1.4 1.7,-0.1 0.4,-1.4 -2.7,-1.4 1,-0.9 5.6,-1.3 0.8,-1.5 -0.5,2.1 1.5,0.3 0.2,1.7 -2.3,1.3 2.1,0.3 0.8,-0.8 1,2.7 z m -48,-9.7 2.7,1 4,0 2.3,0.7 3,2.3 -7.4,3.1 -1.9,1.7 -0.9,2.4 -4.7,1.4 -1.9,-2.1 -3.5,-1 2,-4 2.1,-2.6 -1.9,-2.2 z m 40.7,-1.8 -0.8,-1.6 1.8,-0.9 -5.4,0.6 -1.4,-1 2.2,-0.9 0.7,-1.9 3.9,2.1 -2.6,-2.5 0.4,-0.7 6.3,1 0.5,4 -1.2,1.8 z m -18.6,-3.4 1.4,-0.8 -2.1,-0.8 3.1,-2.3 0.5,3.3 2.8,0.6 0.9,-0.7 2.1,0.7 0,1.3 3.7,1.5 -2,0.5 -2,-1.2 -0.7,1.1 -4.6,0.6 -0.8,-0.6 -5.4,2.2 -3.9,0.2 -1.4,-1 3.1,-1.1 2,0 1.6,-1 -5.8,0.7 -0.2,-1.2 -1.7,1.6 -4.9,-0.9 3.1,-4.5 1.9,-0.7 0,-1 0.9,0.2 0.9,2.1 1.8,-0.3 3,1.7 0.4,1.2 4.5,0.2 0.1,-0.9 z m 58.7,3.9 -1.5,1 -3.1,0.6 -3.3,-0.4 -7.9,0.4 -2.3,-0.8 -2.1,0.5 -4,-0.9 -0.9,-1.7 0.7,-2.5 -1.9,-2 -1.8,0.4 -3.4,-0.5 -1.9,-2.4 2,-0.3 4,0.6 1.2,1.2 3.1,-0.3 4,2 -1.6,0.5 3.8,2.1 4.2,0 4.4,-1.2 5,0.2 2.8,1.2 0,1.2 -1.5,0.5 z m -59.1,-10.4 -3.6,0.8 -2.1,-0.9 -0.7,-1.2 -1.1,0.5 -1.8,-1.1 1.5,-0.5 2.1,0.8 4.8,-0.9 2,0.6 z m 12.5,-7.8 2.5,1.5 1.5,-0.3 4,2.1 -0.6,0.6 1.6,2.3 -4.2,0.2 0.3,-1.5 -3.3,0 0.1,-0.7 -3.3,0.4 -1.1,-0.9 2.8,0 -1,-2.1 -2.8,-0.1 0.3,-1.4 z m 24.9,-5.3 2.7,0.2 0.5,1.5 1.1,-1.1 1.5,0.1 1.4,2.2 -0.4,1.5 3.1,0 1.2,1.2 -3,1 -4.8,3.8 -5.8,-0.2 -4.3,-3.2 2,-0.9 2.6,0.1 -1.4,-1.3 -2.6,0.9 -3.5,-0.7 -1.8,-3.2 3.6,0.4 -3.3,-1 1,-1.3 1.6,-0.2 -0.6,-0.8 1.3,-1.2 3.2,-0.1 -2.4,-0.8 2.2,-0.5 2.8,1 z m -64.2,100.3 0.2,0.1 -0.1,0.1 -0.1,-0.2 0,0 z", + "ST" : "m 348.93,217.59 -0.3,-0.3 0.4,-0.3 0.2,0.3 z", + "CV" : "m 290.83,188.39 0.5,0.4 0,0.4 -0.5,-0.2 z", + "DM" : "m 218.73,187.89 0.3,0.3 -0.2,0.4 -0.2,-0.5 z", + "NL" : "m 346.93,104.89 -0.7,0.2 0.1,-0.2 0.8,-0.1 z m -131.3,78.2 -0.1,0 0,-0.1 z m 127.1,-72.9 0.8,0 0.9,0 -0.8,0.4 z m 7.4,-4.8 -0.4,2.6 -1.2,1 -0.7,2.7 -1.9,-1.8 -1.5,0.3 -0.8,-0.6 2.4,-3.5 2.6,-1.6 z", + "JM" : "m 188.03,182.19 2.4,1.1 -2,0.4 -2.2,-1.1 z", + "WS" : "m 6.43,243.59 0.1,0.6 -0.5,0 -0.5,-0.6 z", + "OM" : "m 444.03,168.69 -0.1,0.1 0,-0.2 0.3,0 z m -0.4,-1.7 0.6,-0.6 -0.2,1.5 -0.2,-0.1 z m -7.8,14.2 5.7,-2 1.3,-3.9 -0.9,-1.5 1.2,-4.4 1.1,-0.2 1.5,2.1 3.1,0.8 2,2.7 -4.1,5 0.3,1.3 -2.2,0.9 -0.6,1.3 -1.8,0.2 -0.8,1.6 -3.7,0.7 -0.7,-1.3 z", + "VC" : "m 219.13,192.79 -0.1,-0.3 0.2,-0.3 0,0.3 z", + "TR" : "m 386.03,136.89 -0.4,0.2 -0.2,-0.1 0.5,-0.3 z m 3.9,-4.1 2.1,1.7 -3,0.6 -0.7,0.8 -2.2,-0.3 1.2,-1.5 -0.6,-0.7 1.4,-0.8 z m 32.2,5.3 -1.6,0.6 0.5,3.1 1,1.8 -3.9,-0.4 -0.7,0.5 -0.3,-0.5 -4.7,1.3 -2.9,-0.3 -3.1,0.1 -1.4,2 0.2,-2.2 -1.3,0.8 -1.5,-0.4 -3.3,1.6 -1.5,-1.2 -2.6,-0.7 -0.5,1.4 -1.4,0.3 -2.6,-2.1 -2.2,-0.6 0.1,-1.4 -1.9,-0.7 1.6,-1.3 -1.2,-0.8 -0.1,-0.2 -0.5,-0.3 1.2,-2.1 4.6,-0.1 0.1,-1.8 3.9,0.3 4,-2.1 5,0.6 3,1.6 3.7,-0.1 1.3,0.4 2.7,-1.3 2.4,-0.2 1.2,1.1 0.5,2.2 2.1,1 z", + "BD" : "m 512.93,177.09 -1.5,-3.5 -2.5,2 -2.1,-0.6 -1,-3 0.4,-1.4 -1.4,-0.7 1.7,-1 -1.6,-1.5 0.7,-1.2 2.7,1 1,1.7 3.2,-0.1 0.8,0.5 -2.5,2.7 0.8,1.3 1.1,-1.5 0.8,3.5 0.1,1.3 z", + "LC" : "m 219.63,191.49 -0.3,-0.3 0.3,-0.4 0.1,0.3 z", + "NR" : "m 655.93,218.79 0,0 -0.1,-0.1 0.1,0 z", + "NO" : "m 376.13,55.29 -0.4,0.2 -0.4,-0.2 0.4,-0.4 z m -1.5,0.3 -0.5,-0.2 -0.4,-0.6 1.2,0.5 z m 5.1,-1.2 0.6,0.4 -1.1,-0.1 0.1,-0.3 z m 1.6,-0.8 0.3,0.5 -1.1,0.6 -0.5,-0.4 z m 0.6,-0.4 0.6,0.4 -0.8,0.3 -0.2,-0.6 z m -0.8,-0.4 -0.6,0.9 -1.8,0.3 0.7,-0.8 z m 1.3,-0.6 0,0.3 -0.3,-0.1 0.1,-0.3 z m 3,-0.5 0.6,0.5 -0.8,0.3 -0.5,-0.4 z m -8,-28.6 1.5,1.4 -2.3,0.2 -1.7,-1.2 z m 10.1,-0.2 -0.6,-0.3 0.3,-0.4 0.5,0.4 z m 4.4,-1.2 -1.8,0.4 -0.5,-0.1 1.1,-0.5 z m -16.9,-0.9 1.2,0.3 -0.9,0.3 -0.6,-0.2 z m -0.1,-1 -0.9,0.1 -0.1,-0.2 0.1,-0.1 z m 25.8,-3.7 -1.6,0.4 -2.3,0.2 -0.2,-0.2 z m -17.7,-0.8 -0.5,0.1 0.1,-0.3 0,-0.1 z m -0.4,-0.5 0.2,0.1 -0.2,0.1 -0.4,-0.1 z m -8.1,0.1 -0.2,-0.1 0.2,-0.1 0.3,0.1 z m 2.6,-0.9 -0.4,0.1 -0.2,-0.1 0.4,-0.1 z m -1,0.2 0,-0.3 -0.5,-0.3 0.8,0.2 z m -4.7,43 1.2,0 2.3,-1.3 0.6,0.6 0.2,-0.1 0.1,0 0.1,-0.2 0.3,-0.3 -0.2,-0.2 0.4,-0.1 0.1,0 1.1,-1 0.2,0 0,0.1 0.1,0.1 0,-0.1 2.3,0.3 3.2,-2 2.5,-0.3 -1.6,1.3 0.1,1.4 3,-3 -0.4,2 2.1,-2.5 4.6,1.3 2.1,1.5 -1.8,0.8 -2.7,-0.4 4,1.3 -1.7,1.5 -1.9,1.1 0.8,-1.5 -2.8,-2 -3.6,1.3 -0.8,2.7 -1.4,1.1 -1.8,-0.9 -2.9,0.4 -1.4,-1.9 -2,0.8 -1.3,2.3 -3.5,-0.6 -0.5,1.8 -1.1,-0.4 -2.2,2.2 0.5,1.2 -3.6,3 0,2.5 -1.7,2.3 0.6,1.8 -2.4,0.2 -1.4,2 0.7,3 -0.3,1.6 1.3,1.1 -1.2,1.1 0.5,2.5 -1.2,0.7 -0.8,2.5 -1.9,-0.7 -3.7,2.8 -1.8,0.6 -2,-0.2 -2.5,-2.9 0.8,-2.6 -1.9,-2.9 1.3,-1.5 -1,-0.8 1.5,-1.5 2.6,-1.1 -0.1,-0.6 3.6,-1.3 -1.9,-0.2 1.9,-1.2 2.5,1.5 2.6,-1.5 -2.9,0.9 -0.7,-0.8 3.2,-3.2 1.5,-0.8 0.3,-1.2 2.7,-4.7 3.8,-2.7 -1.5,-0.2 3.2,-1.3 -0.7,-0.6 2.2,-1.1 -0.8,-1.1 1,-1.6 1.8,-0.1 1.4,-1 -0.1,-1 0.9,1 z m 22.4,-0.9 -0.3,-0.3 -0.3,0.5 0.7,-0.2 z m -9.5,-24.6 0,-0.2 1,-0.7 -1,0.9 0,0 z m -20.5,28.4 2,-0.6 1.3,-1.5 0.9,2.1 -1.8,1.3 -4.3,0.8 0.2,-0.6 3.4,-0.7 z m 17,-31.5 -1.3,-0.8 -3.2,0.1 1.4,-2 -1.4,-0.7 3.9,-0.7 1.3,1.6 1.5,0.2 z m -14.5,-10.2 1.6,-1.6 4.5,2.7 0.1,1.2 5,1.3 -4.9,1.6 -1.5,4.1 -0.9,0.1 -1.7,3.6 -4.7,-2.5 -0.9,-1.4 5.5,-1.4 -5.9,0.4 -0.2,-1.2 2.8,-0.2 1.4,-1 -1.9,-1.6 -0.1,1.4 -3.3,0.8 -1.9,-1.7 0.3,1.7 -2.1,-1 -1.2,-1.9 1.7,-0.3 -1.2,-2.5 0.6,-0.6 2.1,0.1 3.2,-0.9 0.2,1.4 1.2,-1.1 1.5,0.9 2,2.9 z m 15.5,-2.7 5.8,0.6 0.7,1.4 -2.3,1.5 -3.7,1.4 -2.1,-0.2 -0.1,-0.8 -4,0.2 -2.2,-1.1 4.2,-0.4 0.1,-0.5 -6,0.5 0.1,-1.4 -1.9,-0.4 0.6,-0.7 2.3,0.8 2,-1.4 1,0.9 1.8,-0.3 1,1.2 0.7,-2.2 0.5,1.5 z m 2.5,16 -0.2,0.2 0.1,-0.2 0.1,0 0,0 z", + "KN" : "m 216.43,184.69 -0.5,-0.3 0.1,-0.1 0.2,0.2 z", + "BH" : "m 432.93,166.69 0.3,0.1 -0.1,0.8 -0.2,-0.4 z", + "TO" : "m 1.43,258.89 -0.1,0.1 -0.7,-0.3 0.4,-0.1 z", + "FI" : "m 375.83,86.59 -0.1,0.3 -0.6,0.1 0.3,-0.2 z m -0.8,0.1 0.1,-0.1 -0.2,0.4 -0.3,-0.2 z m 0.3,-0.5 -0.6,0.5 -0.9,-0.5 0.9,-0.3 z m 2.3,0.1 0,0.2 0.7,-0.1 -0.8,0.3 z m 1.6,0.7 0.1,-0.6 0.7,0.2 -0.6,0.7 z m -2.2,-1.7 0.1,0.3 -0.1,0.3 0,-0.4 z m 0,-8.1 0.2,0.3 -0.3,0.2 -0.2,-0.3 z m 6.9,-5.4 -0.5,0.3 -0.1,-0.2 0.2,-0.1 z m -5.9,13.9 -0.3,-0.1 -0.8,-4.4 0.5,-3.7 1.7,-0.3 4.6,-4.7 0.9,0.1 0.2,-2.2 -2.3,-0.9 -1,-2 0.7,-1.2 -1.1,-2.2 0.4,-1.6 -5.7,-3.5 2,-0.8 1.4,1.9 2.9,-0.4 1.8,0.9 1.4,-1.1 0.8,-2.7 3.6,-1.3 2.8,2 -0.8,1.5 -1,1.7 0.5,1 2.5,1.8 -1.7,2.7 1.5,2.3 -0.6,3.6 1.9,3 -1.1,0.8 3,2.5 -0.6,1.2 -3.9,3.8 -2.7,2 -7.7,1.6 -2.6,-0.9 0.1,-0.1 -0.3,0 0,0 -0.8,-0.2 0.2,0.1 -0.1,0.2 -0.3,-0.3 z", + "ID" : "m 593.33,228.59 1,0 -1.1,2.3 -0.1,-1.6 -1.9,-1.3 z m -51.2,-5.5 -1.9,0.6 -1.4,-1.8 0.5,-1.1 1.1,2.5 z m 19.2,10.6 2.9,-0.2 0,0.7 -3.9,0.9 -2.2,-0.5 1,-1.2 z m 20.3,-20.3 -0.2,1.9 1.6,2 -1.7,-0.4 -0.5,3.4 -1.2,-2 1.1,-0.1 -0.5,-2.7 z m -7.9,22.2 0.5,0.3 0.3,-0.6 0.3,-0.1 0.6,-0.3 0.1,0.4 0.2,0.6 -1.1,1.2 -1.9,0.5 z m -11.7,-25.7 -0.4,0.3 0,-0.4 z m 44.2,12.8 0,8.2 0,4.2 -1.8,-1.9 -4.6,0.6 0.7,-1.5 1.6,-0.6 -2,-3.9 -3.5,-1.5 -1.5,-0.1 -3,-1.8 -1.4,1.2 -1.3,-2.7 3.4,-0.6 -2.5,-0.1 -3.5,-1.9 -1.1,-2.3 1.9,1.3 2.8,-0.8 2.4,0.6 0.3,2.8 1.6,2.2 2.5,-1.5 -0.2,-1.7 3.2,-0.3 3.9,1.7 z m -39.3,14.7 -2.9,-1.4 1.4,-0.4 1,-2 4,0.6 1.3,-0.8 5.4,-0.4 -3.3,1.1 -0.5,-0.5 -3.9,1.1 -3.5,-0.1 1.7,2.2 z m -23.2,-4.7 -3.5,-0.8 -2,-1.2 1.1,-1.7 4.4,0.7 0.5,0.9 3.6,0.4 0.9,-1 2.2,0.9 6,-0.1 0,3.8 -3.8,-1 -1.1,0.3 -3.7,-0.5 -2.6,-0.9 z m 37.9,-9.1 -2.7,1.5 -1.4,-0.9 -0.1,-1.9 0.3,1.4 1.9,0.5 1.7,-0.9 3,-0.2 2,0.6 0.4,1.4 z m -10.2,5 -1.6,-0.4 1.8,-1.9 -2.7,0.3 0.2,-1.1 -2.3,-1.5 -0.2,4.3 -1.8,-0.3 0.5,-2 -1.6,-3.2 1.1,-1.3 1.3,-5.1 1.7,-1.2 1.3,0.5 4.4,0.5 2.3,-1.8 -1.2,2.5 -8,0.1 -0.6,1.2 1.3,2.2 1.9,-1.7 3.3,0.3 -0.2,2.1 -1.1,-1.2 -2.2,1.5 1.8,2.4 1,2.3 z m -10,-18.7 -0.4,1.6 1.4,1.9 -0.5,0.8 2.2,1.6 -2.4,0.6 -0.6,2.4 -1.6,1.7 0,1.4 -1.2,2.7 -2.6,1.1 -0.7,-1.5 -2.3,-0.4 -2.4,0.7 -0.1,-1.5 -2.8,0.5 -0.6,-3.6 -0.9,0.3 -1.2,-4 1.5,-2.4 1.7,2.3 4.7,-1.3 2.9,0.2 1.8,-3 0.8,-2.6 z m -37,-0.1 2.9,1.9 2.3,2.5 1.3,-0.5 4,3.6 -0.7,1.9 1.9,0.5 0.7,2.6 1.7,0 0.8,1.7 -0.4,4.5 -2.1,0.5 -6,-5.1 -1.5,-2 -1,-2.6 -1.8,-2 -1.8,0.5 1.6,3.3 -0.7,-0.1 -1.1,-3.2 1.5,-1.2 -1.1,-2.5 -2.3,-0.2 1.2,2 -0.5,0.8 -1,-2.9 -1.4,-0.5 1.7,0.3 0.5,-1.3 -4.1,-3.7 -0.3,-1.9 2.2,1.1 2,0 z", + "MU" : "m 446.83,256.49 -0.1,0.8 -0.6,0 0.3,-0.9 z", + "SE" : "m 371.43,89.89 0,0 0.1,-0.3 0.2,-0.1 z m 7.4,-19.2 0,-0.4 0.3,0.2 0,0.2 z m 3.7,-1.2 -4.4,0.9 -1.3,2.7 0.8,0.7 -1.5,1.7 -3.4,2.1 -2.3,2.1 -1.4,3.2 0.4,1.9 1.2,0.4 2.2,2.5 -1.2,1.7 -3.3,1.5 -0.6,2 0.6,2.7 0.7,-1.2 1.9,0.2 1.3,-1.8 -0.1,1.9 -3.1,0 -1.2,2.7 -3.4,0.3 -1,2 -2.3,0 -1.2,-4.1 -1.5,-2.9 0.2,0 0.2,-0.3 -0.5,0.1 0,0.2 -0.5,-1.1 0.4,-1.8 0.8,-2.5 1.2,-0.7 -0.5,-2.5 1.2,-1.1 -1.3,-1.1 0.3,-1.6 -0.7,-3 1.4,-2 2.4,-0.2 -0.6,-1.8 1.7,-2.3 0,-2.5 3.6,-3 -0.5,-1.2 2.2,-2.2 1.1,0.4 0.5,-1.8 3.5,0.6 1.3,-2.3 5.7,3.5 -0.4,1.6 1.1,2.2 -0.7,1.2 z m -23.7,22.4 -0.6,0.2 0.1,0.3 0.6,-0.2 z", + "TT" : "m 219.73,197.09 -0.2,1.3 -0.9,-0.3 -0.4,-0.8 z", + "MY" : "m 528.33,207.39 0,0.4 -0.2,-0.1 0,-0.3 z m 33.7,2.5 -0.4,-0.1 0.1,0 -0.3,0.1 -3.3,-0.5 -0.8,2.6 -1.8,3 -2.9,-0.2 -4.7,1.3 -1.7,-2.3 2.6,1 0.6,-1.6 0.2,0 0,-0.3 0,-0.2 3,-0.9 1.9,-2.8 1.2,1.1 0.7,-1.6 0.1,-0.1 0,0.2 0.6,1 -0.4,-1.2 1.9,-2.3 2.2,-1 3.8,2.8 -2.1,0.6 0.8,1 -1.4,0.3 z m -34,-4.4 1.8,0.4 0.1,1.2 1.8,-1.2 2.6,2.7 0,3.6 1.6,3 -1.7,-0.4 -4,-2.5 -1.1,-1.9 z", + "PA" : "m 187.13,203.99 -1.2,-2.6 -2,-0.7 -1.7,1.7 0.9,1.2 -3.4,0.4 0.1,-1.8 -2.2,0.3 -0.3,-0.6 0,-0.1 0,0 0,0 0,0 0.9,-2.3 0.9,1.2 2,0.3 2.7,-1.6 2.3,0.4 2,1.4 0.4,1.4 z", + "PW" : "m 593.83,203.79 0,-0.2 0.1,-0.3 0.2,0 z", + "TV" : "m 679.43,233.99 0,0 0,-0.1 0,0.1 z", + "MH" : "m 663.83,204.19 0.3,0.1 0.1,0 -0.1,0 z", + "CL" : "m 195.93,330.49 2.3,1.1 -1.4,0.9 -1.8,-1.9 z m -3.3,-14 1,2.1 0.1,3.2 -2.2,-0.8 1.3,-0.9 -1.3,-1 0.1,-1.9 z m 2.9,-12.8 -0.4,2.3 -2,0.7 1.1,-1.6 0.3,-2.5 z m 9.4,24.9 0,5.6 -0.2,0 0.2,0.1 -0.1,0.2 -2.5,-0.3 -1.1,1.1 -1.4,-2.5 1.6,-1.8 0.2,2 2.6,0.3 -2.1,-0.9 -0.6,-2.8 1.9,-1.5 z m -3.4,-75.6 0.8,-0.1 0.9,-1.5 1,2.8 1,1 -0.6,2 1.1,1.7 0.6,3 1.3,0 -0.3,2.4 -2.3,1.6 0.5,4.3 -1,0.5 -1.6,2.6 -1.8,6.6 1.6,3.8 -1.2,3.9 0,1.9 -1.2,1 -0.3,2.6 0.6,2.2 -1,0.5 -1.1,4.1 0.4,3.1 -0.8,2.1 1,2.1 -0.8,2 1.4,1.3 -1.1,4.6 -1.2,1.7 0.5,1 -2.5,3 0.8,3 1.6,-0.3 -0.2,2.3 1,1.1 3.7,0.1 2.9,0.9 -1.3,-0.4 -3,1.4 -0.6,2.7 -4.2,-1.4 0.5,-1.1 -2.2,-0.3 -0.6,-1.5 1.4,0.3 -0.3,-2.5 -2.4,-1.2 1.6,-0.9 -0.3,-4.5 -0.6,-2.2 0.9,-2.3 -2.2,-0.3 1.8,-2.9 0.9,1.4 1.5,-1.7 -0.3,-1.1 -2,-0.1 1.1,-2.4 0.5,2.3 2.1,-6.3 -0.9,-1.3 -1.5,0.6 -0.4,-1.8 1.3,-3.3 -0.8,-3.9 0.9,-1.3 1.1,-3.4 0.8,-1 1.6,-5.9 -0.5,-4.5 0.7,-0.6 -0.5,-2.1 1.2,-2.7 0.9,-4.6 -0.3,-4.6 1,-3.3 z m 6.1,81.7 1.3,0.8 -4,-0.3 3,2 -1.4,0 -2,-1.9 -1.9,0.6 -0.2,-1 4.7,-0.3 0.3,0 z", + "TH" : "m 532.13,194.49 0.1,0.1 0.2,0.3 -0.3,0 z m -0.4,11.4 -1.8,1.2 -0.1,-1.2 -1.8,-0.4 -1.6,-2.3 -2.1,-1.7 1,-3.5 1.7,-2.8 -0.9,-3.7 -1.7,-2.1 1.1,-2.6 -2.7,-4.6 1.2,-2.6 0.9,0.3 3,-1.3 0.7,1.6 1.5,0 -0.2,4 1.8,-1.5 1,0.8 1.5,-1.2 1.2,0.2 1.6,1.9 -0.2,1.6 1.7,1.6 -0.8,2.7 -3,-0.2 -2.5,1.7 1.1,3.7 -2.1,-2 -1.6,0.2 0,-1.7 -1.8,0.1 0,2.4 -1.4,3 -0.1,2.7 1.2,-0.2 1.1,4.1 2.1,0.6 z", + "GD" : "m 218.33,194.79 -0.2,0 0,-0.3 0.2,-0.1 z", + "EE" : "m 379.63,90.99 0.8,0.6 -1.6,0.6 -0.7,-1 z m 1.4,-0.1 -0.3,0.2 -0.3,-0.2 0.2,-0.2 z m -0.3,-1.2 0.3,0 0,0.2 -0.4,0 z m -0.9,0.1 0.6,0.4 -1,0.5 -0.9,-0.7 z m 9.5,0 -1.4,0.6 1.3,2.2 -0.2,0.5 -0.4,0.8 -1.6,0 -2.3,-1.5 -1.9,0.6 -1.5,-2 -0.1,-1.8 4.8,-1.2 3.9,0.4 0.2,0.2 0.1,0.2 -0.1,0 -0.2,0.1 0,0 0.1,0 0,0 0.1,0 -0.1,0 -0.2,0 -0.2,0.4 z", + "AG" : "m 218.03,184.89 0.2,0.2 -0.3,0 -0.1,-0.2 z", + "TW" : "m 565.23,172.19 1,0 1.9,-3.1 1.6,-0.1 -1,3.9 -1.1,2.5 z", + "BB" : "m 222.33,192.79 -0.2,-0.1 0.1,-0.4 0.3,0.3 z", + "IT" : "m 359.93,141.89 6.3,-0.8 -0.8,1.2 -0.2,2.4 -1.2,-0.3 z m -5.6,-7.3 0.8,1.5 -0.5,3.1 -2.2,0.4 0.1,-3 -0.5,-1.3 z m -3.7,-6 -1.7,-3.1 0.8,-1.9 2,-0.8 1.5,0.4 2.2,-0.7 0.9,-1.2 3.3,-0.5 0.4,0.9 2.5,0.4 -0.6,0.6 0.6,1.7 -0.9,-0.5 -2.1,1.1 0.5,2.6 2.3,1.6 0.9,2.2 2.1,1.5 1.7,0 -0.2,1 4,1.9 0.9,1.2 -2.8,-0.9 -1,1.9 1.2,0.6 -2.1,3.3 0.3,-1.9 -1.1,-2.9 -3.7,-2.6 -1.2,0 -3.6,-3 -2.1,-3.4 -2.5,-1 z m 9.5,4.4 0,0 0,0 0,0 z m 0,-4.6 0.1,-0.2 -0.1,0 -0.1,0.1 z", + "MT" : "m 363.63,146.09 0.5,0.2 0,0.3 -0.3,-0.1 z", + "VU" : "m 656.83,245.19 1.4,1.2 0.7,3.8 -1.7,-0.8 -1.6,-2.6 z", + "SG" : "m 535.13,214.99 0.3,0.2 -0.3,0.2 -0.4,-0.1 z", + "CY" : "m 400.93,148.29 0,0 0,0 z m 0.5,-0.1 0.2,0.2 -0.4,0 -0.2,-0.2 0.2,0 0.2,0 z m -0.5,0.1 0,0 0.1,0.1 0,0 z m -0.1,0.1 -0.2,0.3 -1.1,0.4 -0.4,-0.1 -0.1,0.1 -0.9,-0.9 0.6,-0.3 0.1,0.1 0,-0.1 0.1,0 0,0 0.1,0 0,0 0,0 0,0 1.3,0.1 0.5,0.3 z", + "LK" : "m 489.33,199.29 1.6,0.6 2,3.4 -0.1,1.9 -2.2,1.3 -1,-0.4 -0.6,-3.7 0.8,-2.7 z", + "KM" : "m 419.53,240.59 -0.5,-0.4 0.1,-0.7 0.3,0 z", + "FJ" : "m 675.43,250.99 2.2,0.1 0,-1 3.1,-1.2 -3.2,2.4 0.9,0.5 -0.4,2.4 -0.7,-1.3 -1.5,-0.3 z", + "RU" : "m 621.23,124.99 -2.1,0.7 -1.5,1.4 -2.9,1.4 1.3,-1.6 4.8,-2.3 z m -189,-65.8 -2.9,0.8 -0.5,-1.8 1.8,-0.8 1.7,0.8 z m 17.7,-4.7 2.2,1.5 -1.8,0.7 -1.9,-1.3 z m 22.6,-10.7 1,0.4 -3.4,0.7 0.1,-1.3 z m 80.8,-3.8 -1.1,1 -2.5,-0.9 1,-0.8 z m -107.6,-23.8 -2.8,0.4 0.6,-1 4.7,-0.6 0.7,2.5 z m -4.8,-1.3 -0.5,1.2 -3.3,0.2 0.5,-1.1 2.8,0.6 z m 2.9,-2.7 4.8,0.2 -3.3,1.7 -2.1,0.2 -3.5,-0.8 z m 16.4,-0.5 1.4,1.2 -4.5,1.1 -1.1,-0.7 2.9,-0.6 z m -13.1,-2.3 1,1 -1.4,1.6 -3.5,-0.2 z m -34.3,120.1 -1.9,-1.7 -4.6,-2.5 1.8,-0.4 0.6,-2.6 2.8,-1.3 -2.1,-0.3 1.2,-1.8 1.8,0.1 -0.1,-2.3 0.8,-1.2 -1.8,-1.5 -3.4,-1.4 -3.4,0.2 -1.1,-2.2 -1.7,-0.1 0.5,-1.3 -1.2,-1.5 -3.9,0.6 -1,-2.3 2.8,-1.1 -1.8,-1 -1.7,-4.8 -5.2,-1.4 -1,-1.9 -0.6,-1.9 0.4,-0.8 0.2,-0.5 0.4,-1.3 -0.3,-1.5 0.3,-0.5 0.2,-0.3 0.2,-0.1 0,0 -0.1,0 0,0 0,0 0.1,0 0.2,-0.1 -0.1,-0.2 -0.2,-0.2 0.2,-0.9 3.3,-1 -3.9,-1.1 2.7,-2 3.9,-3.8 0.6,-1.2 -3,-2.5 1.1,-0.8 -1.9,-3 0.6,-3.6 -1.5,-2.3 1.7,-2.7 -2.5,-1.8 -0.5,-1 1,-1.7 1.9,-1.1 1.7,-1.5 2.3,-0.6 2.1,0.8 -2.1,0.6 7.5,1.3 9.8,5 0.6,1.5 -1.8,2.6 -2.1,0.9 -2.7,0.1 -8.5,-2 -2.4,-1.3 5.2,4.5 -0.9,1.1 0.9,1.6 1.5,-1 2.4,0 4.9,1.9 1.7,-0.8 -1.2,-2.5 2.9,-1.4 2.4,-2.3 3.1,2.9 0.6,-2.6 -1.3,-1.6 0.8,-3.5 -1.8,-1.2 5,0.5 1.5,2 -2.6,0.4 -0.8,1.3 1.7,1.4 3.7,-0.3 0.5,-2.1 1.5,-0.3 4.5,-2.5 4.4,-1.4 1,1.9 1.4,0.5 2.5,-1.6 2.5,0.4 3,-1.5 1.5,2.2 2.4,-2.6 -1.5,-1.6 1.2,-0.9 6.5,1 2.9,1.6 3,0.9 2,1.6 1.6,-2 -1.2,-0.1 -0.9,-1.8 -2.3,-0.3 1,-3.9 -1.7,0.1 0.9,-2.1 3,-1.9 0.9,-3.1 1.2,-0.7 3.8,-0.1 2.4,0.7 0.1,1.6 -2,2.6 1.6,1.5 -0.4,2.9 0.2,4.6 2.1,1.4 -1,2.6 -1.1,0.4 -1.9,3.1 -2.3,1 3.3,0.3 2.7,-1.8 2.4,-2.8 -0.6,-3.4 3.7,-1 1.8,1.6 -0.4,2.5 1.9,-1.6 -0.8,-2.1 -4.2,-1.3 -3.3,0.2 -0.5,-1.8 1.6,-2.7 -2.5,-3.2 0.9,-1.4 2.7,-1 -0.4,-2.9 1.8,-2.4 2.1,0.3 -2.3,2.7 0.4,1.8 -1,3 4.9,0.9 0.9,-0.4 -3.7,-1 -0.6,-1.3 1.8,-0.5 1.2,0.8 0.6,-1.7 2.4,-2.9 0.5,2.6 4.5,2.5 2.9,-0.1 -1.9,1.5 1.1,1 0.7,2.4 1.1,-0.5 -1.2,-2.7 0.9,-1.4 -2.8,-2.3 -2.8,-1 -0.7,-2.4 0.4,-1.4 12.5,-1.1 -0.5,-1.1 -2.8,-2.2 3.1,0.5 -0.5,-1.3 2.1,-0.2 4.1,-2.2 6.9,-1.1 -1.2,-0.7 3.2,-0.1 2.3,-0.9 -0.9,-1.5 1.6,-1.3 0.5,2.6 -1.1,0.8 1.2,1.1 2.6,-0.5 2,-2.1 3.8,-0.1 0.6,-2.2 4,-2.3 2.8,-0.2 2.2,0.6 -1.3,1.5 4.3,1.2 -2,1.5 2.8,-0.1 0.1,-0.8 6.2,0 2.6,0.5 0.2,1.6 1.4,0 0.6,2.5 -2.1,-1.1 2,2.3 -7,3.6 -3.6,2.6 -1.8,0.1 -1.5,1.5 2.6,0.1 6.1,-1.9 -2.5,-0.1 0.8,-1.1 4.5,1.2 1.5,-0.7 0.6,1.4 3.7,-0.8 5.9,0.5 -0.2,1.1 3.6,1.1 5.2,0.4 1.1,-1.3 -0.5,-1.2 2.5,-1.3 0.3,0.7 3.2,1.1 1.2,-0.5 4.6,2 -1,3.4 -2,-1.3 3.6,4.6 2.2,1.4 1.2,-0.5 1.9,-3.5 2.2,1.6 1.6,0.2 2.8,-0.9 2,0.3 3.3,-0.3 2.5,0.6 -1.6,-2.5 0.6,-1.2 3.9,-1 7.4,0.8 2.9,0.9 -2,0.4 0.5,1.3 2,-1.8 4.6,0.6 0.9,0.9 -2,0.7 4.7,1.4 1.4,1.5 2.8,0.1 4.3,-0.8 5,0.4 2.2,1.1 0.8,1.5 -0.8,1.2 2.7,1.5 5.6,-1.1 1.6,0.7 4,0.2 2.5,-1.8 2.3,0.5 -0.5,1 -2.1,-0.4 0.5,1.6 2.4,1.5 2.6,-0.9 -0.7,-3.6 9.4,0.9 3.5,0.8 7.3,2.9 0.3,0.7 6.5,2.9 1.6,3.7 0.8,-1.4 4.4,0 3.9,2.7 -1.6,1.6 -3.1,0.3 -0.9,2.6 0.8,0.9 -2.2,0.3 -2.6,-1.6 -2.2,-0.6 -0.1,-1.2 -2,-0.7 -3,0.3 -2.2,-2.1 0.8,1.8 -0.8,1.5 -4,1.5 -3.5,-0.6 3.1,2 0.5,-0.5 2.6,5 -1,1.3 -2,-0.8 -2.6,0.2 -6.2,2.7 -2.8,2.1 -2.7,1.2 -0.4,1.4 -2.2,-1.8 -4.4,0.8 -1.6,1.3 0.6,-1.8 -3.1,2 -2.2,-0.8 -0.9,1.6 1.2,1.7 1.6,0.1 -2.2,1.2 -0.8,-1.5 -2.1,2.5 2.6,1 -1.1,2.6 1.2,1.6 -2.4,0.1 -0.7,1.4 0.7,2 -4,1.8 -0.8,2.4 -1.9,1 -1.7,3.4 -3.8,3.5 -1,-0.1 2.9,-1.9 -1.2,-5 -1.1,-6.2 0.9,-4 2.8,-2.9 2.9,-1.7 1.7,-2 3.8,-3 0.1,-0.6 4,-2.7 0.2,-2.7 2.1,-0.4 -1.2,-0.9 -2.5,0.5 -0.6,2.1 -5.4,3.6 -0.7,-1 1.1,-3 -5.5,0.5 -4.9,4.1 -1.6,2.5 2.1,0.9 -3.5,-0.2 -3.8,1.1 -1.2,-1.8 -2.2,-0.8 -1.6,1.5 -9.3,-0.5 -2.5,0.6 -3.2,2.3 -0.8,1.5 -3.5,2.4 -2.1,2.4 -4.5,3.2 2.5,0.8 0.3,-1 2.7,-0.1 -1.5,2.6 1.1,1.2 1.6,-1.9 2,0 3.2,3 -1.9,6.7 0.2,2.4 -0.7,2.7 -1.8,1.7 -2.2,3.7 -4.3,4.4 -1.4,2.1 -3.8,1.9 -2.6,-1.5 -2.1,2.4 -0.1,-0.3 -0.2,-0.3 0.9,-0.7 0.5,-2.8 -0.6,-1.9 2,-0.9 0.7,1.7 0.9,-1.3 2,-2.8 0.5,-2.4 1.2,-1.1 -0.7,-1.7 -3.7,1.7 -2.7,0.1 -0.4,-1.6 -2.8,-2.7 -2.5,-0.3 -4.5,-8.8 -4.7,-1.5 -4.7,0.8 -1.5,1.3 1.4,1.7 -1.3,1.1 -1.8,3.3 0.1,0.9 -2.8,1.2 -2,-0.7 -2.5,-0.2 -2.1,-1 -2.4,1.7 -4.4,1.2 -4.2,-0.5 -1.2,-1.5 -5,-1.4 -3.1,0.9 -2.7,-1.2 -0.2,-1.8 -6.3,-2.1 -2.1,2.9 1,1.2 -1.9,2 -5.2,-0.7 -0.7,-1.4 -3.6,-0.7 -8.7,4.2 -0.6,0.1 -0.3,0.1 -1.4,-1.3 -2.6,0.1 -3.5,-3.6 -3.8,0.7 -1.4,-1.4 -1.4,1.2 -4,-6.3 -2.6,-1.8 0.3,-1.3 -4.7,2.3 -1.4,-1 -4.5,-0.4 -0.6,-3.1 -4.9,0.2 -0.2,0.7 -5.7,1.6 -8.1,1.2 0.5,1.6 1.6,0.4 -2.7,1.1 0.7,0.9 -1.7,1.2 2.6,1.1 -0.2,1.7 -2.7,-0.2 -0.4,0.8 -2.2,-1.2 -4,-0.1 -1.7,1.3 -2.2,-0.8 -2.2,-1.7 -5.3,-0.3 -3.6,2.7 -0.5,1.9 -1.7,-1.6 -1.2,1.6 0.2,1.5 -1,2 1.2,1.4 1.8,0.1 2.2,3.5 -3,1.5 -1.8,2.5 1.7,2.1 -0.3,1.7 2.2,2.7 -1.6,1.5 -2.5,-1.6 -3.1,-1.9 -1.7,0.4 -2.1,-1.4 z m 271.5,-79 1.5,0.9 -0.9,0.7 -4,0.2 -2.3,0.6 0.2,-1.5 2.6,-1.2 z m -78.8,-8.9 2.7,0.1 2.6,1.4 -0.4,1.3 -5.1,-1.1 z m -92.9,-23.7 -1.9,-1.1 5,0.6 -2.1,1.1 z m -86.5,-4.2 2.6,-0.3 -4.2,1.7 -1.9,-0.9 z m 25.7,-0.9 2.6,-0.7 1.1,1.5 -2.3,1.7 -2.6,-0.1 -0.9,-1 z m -77.7,89.4 1.2,-0.6 -1.5,0.6 0,0 0.6,-1.2 1.9,-1 0.2,0 -0.9,0.9 1.4,-0.8 3,1 -0.1,1.4 -0.2,0 z m 144,-85.5 -1.4,0.2 -1,0.2 -4.2,-1.3 2.4,-1 0.5,-2.2 5.2,-1.3 4.2,2.6 -1.4,0.3 0,1.8 -3.6,0.6 4.3,-0.3 1.5,1.3 1.6,-0.8 1.4,1.6 -1,3.7 -3.2,0.1 -1.8,-0.8 -3.4,-0.2 -2.4,-2.2 z m 92.4,98.5 -1.3,3.3 1.6,3.6 -1.8,-0.2 -0.7,1.7 -0.5,-1.7 0.7,-3.3 -0.4,-2.1 0.5,-5.8 -1.1,-1.5 0.2,-4.2 2,-0.8 -0.5,-1.6 1.4,3 0.3,4.2 1.6,5.7 z m -166.2,-71 -2,3.4 1.4,3.7 2.9,1.9 -0.9,0.8 -3.3,-0.9 -0.5,0.7 -3.6,-1.1 0.6,-1.2 -1.3,-0.6 0.2,1.2 -2.9,-1.9 -0.1,-1.3 1.8,-0.5 1.4,-3.7 3.5,-1.2 z m 173.7,-7.9 2.4,-0.4 1.4,0.6 3.3,0.6 -0.5,0.9 -4.6,0.3 -4.1,-1.7 0.7,-1.3 z m -11.1,-3.4 2.3,1.3 2.7,0.1 2.7,1.3 -2.6,1.9 -2.9,-1.4 0.3,1.1 2,0.6 -2.6,0.4 -1,-0.6 -5.4,1.3 -2.1,-0.8 -2,-1.9 -1.6,-0.4 -1.1,0.3 0.4,-1.9 2.6,1 0.8,-1.4 2.8,-1 4,2.4 z m -141.2,-3.3 2.3,0.6 0.3,1.2 -3.5,1.9 -11,3 -4.3,3.4 -1.8,-0.5 0.1,1.4 -2.8,3.5 -3.4,-0.7 -1.5,0.5 -1.1,-1.7 2.2,-0.8 1.4,-2.5 2.9,-2.9 2.2,-0.7 1,-1.2 4.5,-0.8 0,-0.7 2.5,0.3 3.2,-0.5 z m 63.7,-7.4 0.3,-1.4 2.4,-1.3 1.6,0.5 -0.4,1.2 1.7,-0.5 2.4,1.3 2,2.5 -1.7,-0.9 -2.9,0.9 -4.7,0.3 -2.3,0.9 -1.5,-0.3 z m -103.8,-6.5 5.7,-1.5 -1.2,-0.6 2.6,-1.1 2.6,1.5 -3.8,0.9 0.9,2.2 -1.3,-0.7 z", + "VA" : "m 360.13,132.99 0,0 0,0 0,0 z", + "SM" : "m 360.13,128.39 -0.1,-0.1 0.1,-0.1 0.1,0 z", + "KZ" : "m 451.63,123.39 -2.1,0.7 0.6,1.3 -1.4,-0.8 0.4,-0.3 -0.6,0.2 -5.1,1.3 0.1,8.5 -0.9,0.1 -2.6,-2.4 -1.3,0.5 0,0 0,0 0,0 -0.8,0.3 0,0 0,0 0,0 -1.2,0.5 0.5,-2.2 -1.5,-0.3 -3.1,-4.2 2.1,-1.6 2.1,-0.2 1.1,-1.4 0,-2.1 -1.8,0.1 -1.8,-0.7 -3.8,1.9 -2.2,-3.5 -1.8,-0.1 -1.2,-1.4 1,-2 -0.2,-1.5 1.2,-1.6 1.7,1.6 0.5,-1.9 3.6,-2.7 5.3,0.3 2.2,1.7 2.2,0.8 1.7,-1.3 4,0.1 2.2,1.2 0.4,-0.8 2.7,0.2 0.2,-1.7 -2.6,-1.1 1.7,-1.2 -0.7,-0.9 2.7,-1.1 -1.6,-0.4 -0.5,-1.6 8.1,-1.2 5.7,-1.6 0.2,-0.7 4.9,-0.2 0.6,3.1 4.5,0.4 1.4,1 4.7,-2.3 -0.3,1.3 2.6,1.8 4,6.3 1.4,-1.2 1.4,1.4 3.8,-0.7 3.5,3.6 2.6,-0.1 1.4,1.3 -3,1.7 -0.5,3.3 -1.5,0.5 -3.3,-0.9 -1.4,4 -4.2,1.2 1.4,4.4 -1.2,2.2 -3.4,-1.6 -6.2,0.1 -1.9,-1 -1.3,2 -3.2,-1 -1.7,1.4 -3.6,2 -0.9,1.7 -1.3,-1.3 -2.3,0 -0.4,-1.8 -0.9,-0.1 -0.5,-2 -1.6,-1.9 -5.6,0.5 -1.9,-2.1 -1.8,-1.1 -0.7,-2 1.3,-0.5 z m 0.3,0 0.1,0 0,0.1 1.5,-0.7 z m -19.5,2.7 -0.4,-0.2 0.1,-0.3 0.6,0 z", + "AZ" : "m 422.53,134.89 -0.1,0.1 0,-0.1 0.1,0 z m 0.4,0.2 -0.1,0 0,-0.1 0,0 z m 0.5,0.8 0,-0.1 0.1,0 -0.1,0.1 z m -1.3,2.2 -0.1,-0.1 1.9,0.3 0.7,1.5 -1.3,-0.3 z m 3.1,-5.1 2.5,1.6 1.6,-1.5 1.9,2.8 -1.3,4.9 -1.7,-0.9 -0.1,-2 -2.8,1.9 -1.6,-2.6 0.6,-0.4 -1.9,-2.4 2.9,0.5 z", + "TJ" : "m 471.53,135.09 0,0.1 -0.1,-0.2 0,0 z m 0,2.5 0.1,0.1 -0.2,0.1 -0.2,-0.2 z m 5.8,0.9 0.3,2 1.8,0.1 0.3,2.8 -3.1,-0.5 -3.2,1.7 0,-2.6 -2,-1 -0.9,1.8 -1.6,0.9 -2.9,-0.2 1.1,-2.3 -0.4,-1.6 -1.5,-0.6 2.1,-0.7 1.9,-2.8 2,-0.5 0.9,1.8 -1.9,0 -1.2,1.6 4.1,-0.2 1.5,0.9 z", + "LS" : "m 390.23,273.89 0.9,-0.3 1.5,1.6 -2.6,2.8 -2,-2.2 z", + "UZ" : "m 473.73,137.49 -0.2,0 0,-0.1 0.2,-0.1 z m -1.2,-0.3 0.1,0.3 -0.3,0.1 -0.2,-0.5 z m -22.4,-11.8 -0.5,1 1.4,1.2 0.3,-1.5 1.8,1.1 1.9,2.1 5.6,-0.5 1.6,1.9 0.5,2 0.9,0.1 0.4,1.8 2.3,0 1.3,1.3 0.9,-1.7 3.6,-2 -1.5,1.5 2.4,1 0.6,-0.7 2.7,1.5 -2.8,1.5 -1.4,-0.2 -0.9,-1.8 -2,0.5 -1.9,2.8 -2.1,0.7 1.5,0.6 0.4,1.6 -1.1,2.3 -1,0 -1.4,-0.3 0.1,-1.5 -1.8,-0.5 -6.1,-3.9 -0.9,-2.3 -3.6,-0.9 -0.4,-2.1 -2.5,-1.1 -1.8,1.5 -0.4,-0.4 -0.7,0.9 -0.1,1.5 -1.9,-0.1 -0.1,-8.5 5.1,-1.3 -0.6,2.6 0.8,-2.5 z m 21.4,9.7 -0.1,-0.1 0,0 0.1,0.2 z", + "MA" : "m 330.63,147.69 0.1,0 0.1,0.3 1.2,0.1 0.9,0.8 0.2,3.2 1.2,1.5 -0.4,0.9 -2.4,-0.1 -2.2,1.1 0,1.9 -4,2.3 -3.7,0.5 -1.9,1.5 0,2.1 -0.3,1.1 -1.8,0.5 -3.1,0 -1.3,1.7 -0.7,2.4 -3.1,2.9 -0.3,2.2 -1.2,1.7 -4.2,0.1 2.7,-5.2 1.4,-1.4 0.7,-2.9 1.7,-1.1 1.3,-2.6 2.8,-0.8 1.7,-1.4 1.9,-2.9 -0.5,-2.1 1.1,-2.5 1.4,-1.5 3.3,-1.6 1.7,-3.8 1,-0.3 0.1,0.1 0.1,0.1 1.8,1.5 2.7,-0.4 0,0 z", + "CO" : "m 185.43,214.99 0.2,-1.4 1.6,-1 1.4,-2.2 -0.4,-1.1 0,-4 -1.1,-1.3 1.4,-1.4 -0.4,-1.4 0.9,0.3 2.5,-1.8 0.2,-2.1 2.7,-1.5 1.6,0.1 3.4,-2.2 0.3,1.1 -1.2,0.4 -1.8,2.4 -0.2,2.1 1.2,1.8 0.5,2.5 3.8,0.2 1.3,1.6 3.8,-0.1 -0.8,3.1 1.1,2.2 -1,1 1.2,0.9 0.6,2.2 -0.9,-1.6 -1.5,0.7 -3.3,0 -0.4,3.6 1.2,2.4 -1,5.3 -1.5,-0.8 1.4,-2.1 -1.9,-1 -2.6,0.5 -1.6,-0.4 -0.8,-1.8 -3.2,-2.2 -1.9,-1.1 -2.2,-0.4 z", + "TL" : "m 573.73,235.59 0.4,-0.2 0.4,-0.1 -0.3,0.6 z m 1.7,-0.7 0.5,-0.7 3.5,-0.6 -1,1.2 -2.7,1.1 -0.2,-0.6 z", + "TZ" : "m 403.23,239.89 0,-0.2 -0.1,-0.1 0,-0.1 -0.3,-0.1 0,-0.1 0,0 0,-0.1 -0.5,-2.5 -0.4,-0.4 -0.2,-0.2 0,0 -0.2,-0.2 0,0 0,0 -0.2,0.1 -0.1,0.3 -1,-0.2 -0.9,-0.4 -1.8,-0.6 -1.6,-1 -2.3,-5.1 -0.5,-2.8 2.2,-2.3 -0.5,-1.6 0.5,-1.5 -0.7,-1 0.7,-0.1 1.8,0 0,0.1 0.1,-0.1 0,0 0.2,2.7 2.5,0.1 1.6,-2.7 6.9,3.8 0.2,1.1 2.7,2 1.3,1.1 -1.1,0.9 0.5,1.3 -0.4,4.4 2.1,3.4 -5.7,2.4 z", + "AR" : "m 204.93,334.29 0.1,0.2 -0.2,0 z m 26.8,-66.8 1.4,0.1 0.1,3.1 -3.7,2.2 -3.5,4.1 -1.2,3.6 0,1.2 -0.7,3.9 2.8,2.5 -0.5,0.9 1.4,2.2 -1.8,2.8 -2.8,1.2 -3.5,0.7 -2.3,-0.2 -0.5,4.4 -2.8,0.7 -2.1,-1.1 -0.3,2.9 0.9,1.1 1.6,-0.8 0.3,1.5 -1.6,-0.5 0,1 -1.7,1.6 -0.5,3.2 -1.2,0 -2.1,1.4 -0.6,1.3 1.6,2.1 1.6,0.1 0,2.4 -3.1,2.4 -0.6,2.4 -1.9,0.8 -0.6,1.7 1.4,3.5 -2.9,-0.9 -3.7,-0.1 -1,-1.1 0.2,-2.3 -1.6,0.3 -0.8,-3 2.5,-3 -0.5,-1 1.2,-1.7 1.1,-4.6 -1.4,-1.3 0.8,-2 -1,-2.1 0.8,-2.1 -0.4,-3.1 1.1,-4.1 1,-0.5 -0.6,-2.2 0.3,-2.6 1.2,-1 0,-1.9 1.2,-3.9 -1.6,-3.8 1.8,-6.6 1.6,-2.6 1,-0.5 -0.5,-4.3 2.3,-1.6 0.3,-2.4 1.9,-2 3.1,0.8 0.5,1.3 0.8,-1.7 2.4,0.5 3.2,3.1 1.8,0.4 4.8,2.9 -2,3.9 5.4,0.2 1.9,-1.6 z m -26.8,66.7 0,-5.6 0.3,1.7 2.2,2 2.8,1.6 2.4,0.6 -3.7,0.4 -1.3,-0.2 -0.5,-0.1 z", + "SA" : "m 429.03,161.99 0.9,1.9 2.4,1.9 0,1.9 1.3,2 0.3,0.4 0.4,-0.1 0.2,0.6 0.5,0.1 1.9,2.7 5,0.4 0.9,1.5 -1.3,3.9 -5.7,2 -5.5,0.8 -1.8,0.9 -1.4,2 -4.4,-0.6 -3.8,0.2 -0.7,1.9 -3,-4.6 -0.5,-1.6 -2.5,-1.9 -1.1,-1.7 0,-2.5 -1.2,-2.4 -1.8,-1 -0.5,-1.9 -3.9,-5.8 -1.2,-0.2 0.7,-2.5 2.1,0.3 3.7,-2.7 -2,-2.1 4.2,-1.3 2.5,0.4 3.1,1.8 5,3.9 3.6,0.2 1.7,0.2 z", + "PK" : "m 479.03,143.89 2.7,1.2 1.6,1.8 0.5,1.2 -2.4,1.3 -2.8,-0.6 -1.1,0.9 0.5,2.5 2.4,2.2 -1.5,0.9 0.1,1.3 -2.2,2.5 -0.9,1.8 -2,2.3 -2.7,-0.2 -1.9,2.5 3,4.3 -2.1,1.1 -2.1,-0.2 -1.3,0.8 -1.6,-0.4 -1.9,-2.8 -5.4,0.5 -3.7,0 0.5,-2.1 2.4,-0.8 -0.7,-3.3 -1.6,-0.7 -2,-2.7 3.1,1 3.1,0 4,-0.9 0.3,-2.3 3.4,-1.9 2.3,-0.2 0.4,-2.5 1.5,-0.5 -0.6,-1.5 2,-0.1 1.1,-2.4 -0.9,-1.9 2.7,-1.7 z", + "YE" : "m 435.83,181.19 1.4,3.3 0.7,1.3 -1.6,2 -5.1,1.7 -1.7,1.4 -1.3,0 -2.5,1.2 -1.7,0.1 -3.6,1.5 -0.9,-0.5 -1.4,-5.3 0.1,-1.5 0.7,-1.9 3.8,-0.2 4.4,0.6 1.4,-2 1.8,-0.9 z", + "AE" : "m 444.03,167.89 0.2,0.2 0,1.1 -1.1,0.2 -1.2,4.4 -5,-0.4 -1.9,-2.7 4.9,0.2 3.7,-3.9 0.2,0.8 z m 0,0.8 0.2,-0.1 -0.3,0 0,0.2 z", + "KE" : "m 411.33,226.69 -2.7,-2 -0.2,-1.1 -6.9,-3.8 0.3,-1.6 -0.4,-0.9 1.8,-2.7 -0.1,-1.5 -1.8,-3.4 2.8,-1.5 1,0.8 1.7,0.3 2.4,1.6 2.8,0.4 2.3,-1.7 2.2,0.6 -1.8,2.2 0,7 1.1,1.6 -2.6,2 z", + "PE" : "m 192.13,217.99 3.2,2.2 0.8,1.8 1.6,0.4 2.6,-0.5 1.9,1 -1.4,2.1 1.5,0.8 -1.5,-0.1 -4.1,1.8 -0.4,2.4 -1.7,2.2 3.5,4.8 1.9,-0.2 1.3,-0.9 -0.3,3 2.1,-0.1 1.7,3 -0.8,2.2 0.4,1 -0.9,2.6 -1.3,0.6 1.8,0.8 0.1,0 0.1,0 -0.2,0.5 0.1,0.1 -1.2,1.5 0.3,0.4 -0.9,1.5 -0.8,0.1 -2.1,-2 -7.1,-3.8 -2.1,-2.5 0.1,-1.4 -2.7,-4 -2.5,-5.9 -1.9,-2.7 -2.2,-1.4 -0.3,-3.5 1.8,-1.6 -0.4,1.3 2.8,1.8 1.4,-3.1 3.2,-1.5 2.1,-2 z", + "DO" : "m 198.63,182.19 0,0 -0.1,-0.1 0,0 -0.1,-0.1 0.6,-0.3 -0.1,-1.9 1.4,-0.5 2.1,0.6 0.6,1.1 2.4,0.9 -1.1,0.4 -3.4,0 -1.4,1.6 -0.6,-0.8 0.1,-0.6 z", + "HT" : "m 198.63,182.19 0,0 -0.1,-0.1 0,0 z m 0.3,-2.4 0.1,1.9 -0.6,0.3 0.1,0.2 0.1,0 0.4,0.3 -0.1,0.6 -3,-0.4 -1.1,0.4 -0.7,-1.3 3,0.5 -0.1,-2 -1.3,-0.7 z", + "PG" : "m 606.23,235.09 0,-4.2 0,-8.2 5.8,2.3 1,0 2.4,2 -0.1,1.2 3.3,0.9 0.8,1.4 -1.8,0.1 0.5,1.4 1.8,1.1 2.1,2.8 3.3,0.2 -0.5,1.8 -5.2,-0.7 -1.7,-1.4 -1.9,-2.6 -4.5,-1 -0.7,2.7 -1.4,0.7 z m 17.2,-12.6 -0.6,-1.7 1.1,1.5 3.5,1.6 2.1,2 -0.5,1.1 -1.2,-2.4 z m -0.6,7.3 -3,-1.1 5.6,-0.6 1.2,-0.9 -0.2,-1.5 1.7,0.3 -0.5,2 -3.2,1.7 z", + "AO" : "m 359.73,228.69 0,-0.5 -0.4,-0.9 1.4,-1.2 0.6,0.5 -1.2,0.8 z m 21.3,23 -4.9,0.7 -3.9,-0.5 -0.6,-0.7 -8.6,0 -1.5,-0.9 -2.7,0.6 0,-2.8 1.4,-4.6 2.2,-2.3 0.2,-3 -1.4,-3.1 0.7,-1.4 -2.1,-4.3 1.7,-0.5 6.6,0.1 0.7,2.7 1.2,1.5 3.3,-0.2 0.4,-1.9 4.3,0.5 0,4.1 0.7,1 0.2,2.6 3.3,-0.8 0,4.1 -3.8,0 0,6.2 z", + "KH" : "m 542.13,189.59 0,4.6 -3.4,2.5 -2.4,1.2 -1.6,-0.2 -1.4,-2.2 -1.1,-3.7 2.5,-1.7 3,0.2 3.1,0.1 z", + "VN" : "m 536.33,197.89 2.4,-1.2 3.4,-2.5 0,-4.6 0.3,-1.1 -2.2,-3.4 -3.4,-3.5 -1.7,-1 2.1,-1.5 -1.7,-1.8 -1.8,0.2 -0.3,-1.4 -1.6,-1.7 0.7,-0.7 2.8,0.5 2.6,-1.7 2.8,1.2 -0.4,0.8 2.7,1.8 -2,1.1 -1.7,1.8 -0.8,2 1.9,3 4.1,4.1 1.4,4.8 -0.9,3 -3.3,1.9 -1.1,-0.3 -0.4,1.9 -3.3,1.4 0,-2.7 z", + "MZ" : "m 403.03,243.59 -0.3,-2.5 0.5,-1.2 4.8,0.3 5.7,-2.4 0.8,8.3 -1.8,3.2 -5.4,2.8 -4.2,4 -0.5,1.1 1.6,3.3 -0.7,5 -2.6,1 -2.4,1.8 0.8,1.8 -1.1,0 -0.4,0 -0.2,-1.2 -0.2,-0.6 0.1,-3.1 -1.3,-4.1 2.1,-2.2 1.2,-2.5 -0.5,-1.1 0.5,-2.2 -0.1,-3.3 -4.9,-2 -0.4,-1.3 5.7,-1.9 0.9,1.1 1.3,-0.4 -0.2,2.9 1.7,1.3 1.3,-1 0.1,-2.7 z", + "CR" : "m 176.13,196.89 0.4,0.8 1.7,1.8 -0.9,2.3 0,0 -0.3,-0.5 -5.1,-3.3 0.3,-1.4 2.6,0.2 z m 1.5,5.6 -0.3,-0.6 0,-0.1 0,0 z", + "BJ" : "m 343.23,195.39 0.4,2.1 -2,3 -0.1,5.1 -1.6,0.2 -0.5,0.1 -0.1,-5.4 -1.3,-3.7 1,-0.9 1.9,-0.9 0.8,-0.9 z", + "NG" : "m 341.53,205.59 0.1,-5.1 2,-3 -0.4,-2.1 1,-3.4 2.6,-0.8 2.8,1.7 1.7,-0.7 3.4,1 1,-0.8 2.5,-0.2 2,0.6 2.1,-1.3 0.9,1.3 1.2,1.7 -4.7,7.4 -1.8,3.6 -1.4,-1.3 -3.3,2.5 -0.5,1.9 -4.6,1 -1.1,-0.7 -2.3,-3.2 z", + "IR" : "m 422.03,143.59 -1,-1.8 -0.5,-3.1 1.6,-0.6 1.2,1.4 1.3,0.3 0.5,-0.1 0.2,0.1 2.8,-1.9 0.1,2 1.7,0.9 0.2,1.5 2.3,0.8 1.7,1.4 1.6,0.4 4,-0.6 -0.2,-1.1 2.9,-1.6 3.4,-0.4 0.3,0.6 2.8,0.6 2.9,2.4 1.6,0.1 0.2,2.1 -1.4,5.5 0.5,3.3 1.7,0.2 0.2,1.1 -1.8,2.1 2,2.7 1.6,0.7 0.7,3.3 -2.4,0.8 -0.5,2.1 -3.2,-0.3 -5,-0.9 -0.5,-2.2 -1.3,-0.7 -3,1.5 -6.5,-3 -2.6,-4.7 -2.1,-0.4 -0.8,0.9 -1.6,-2.2 0.3,-1.6 -0.9,-1.3 -2.1,-1.2 -1.7,-2.2 1.8,-3.9 -2,-0.4 z", + "SV" : "m 168.13,192.09 -1.8,0.3 -2.5,-0.9 -0.1,-0.2 1.5,-1.1 3.2,1.1 z", + "SL" : "m 314.33,204.59 -2.8,-1.3 -0.7,-2.8 1.5,-1.5 2.4,-0.3 1.9,2.9 -0.6,1.4 z", + "GW" : "m 307.53,196.79 -1.7,-0.5 -1.6,-2.1 3,-0.7 2.8,0 0,1.9 -1.9,0.4 z", + "HR" : "m 371.73,131.79 -1.3,-0.9 -0.3,-0.2 0.4,0.2 1.1,0.6 0,0.1 z m -9.4,-7.2 3.3,0.1 0.6,-1.8 1.7,-0.7 1.6,1.3 3,0.1 0.2,1.8 0,0.7 -4,-1 -2.2,0.3 0.8,2.2 2.6,3 -1.7,-0.4 -3.5,-2.5 0,-2.2 -1.7,0.7 z", + "BZ" : "m 165.63,183.49 0.5,-0.1 1.1,-1.2 0.2,3 -1.4,2.1 -0.6,0 z", + "ZA" : "m 397.83,270.09 0.4,0 1.1,0 -1,3.5 -2.3,2.1 -1.5,2.7 -2.9,3 -3.4,2.7 -4.3,1.4 -4.4,-0.4 -1.3,0.7 -4.3,0.9 -2.2,-2 -1.3,-2.1 0.9,-0.4 -0.2,-2 -1.7,-2.9 -1.6,-3.6 1.2,-1.2 0.6,1.4 3.3,0.5 1.6,-1.1 0,-7.5 1.7,2.8 -0.3,1.6 1.9,-0.1 2,-1.8 0.6,-1.4 3.4,1.1 1.5,-0.4 0.5,-1.8 1.9,-0.9 0.3,-1.3 2.3,-2 2.2,-0.9 1.9,0.3 1.8,0.1 1.3,4.1 -0.1,3.1 -1,-0.5 -1.1,1.4 0.6,1.6 z m -7.6,3.8 -2.2,1.9 2,2.2 2.6,-2.8 -1.5,-1.6 z", + "CF" : "m 380.03,196.89 1.5,2.1 -0.3,2 1.4,0.2 2.2,2.6 2,1.3 0.1,1.1 1.9,1.9 -3.5,-0.6 -5.9,2.3 -3.7,-0.4 -1.7,-1.4 -2.2,1.5 0.1,1.7 -2.2,-0.5 -1.7,0.5 -0.7,2.3 -0.2,-1.1 -1.8,-1.8 -1.5,-4.3 2.1,-2.9 2.5,0 3.5,-1 0.9,-1.8 2.6,-0.3 3.9,-3.5 z", + "SD" : "m 382.63,201.19 -1.4,-0.2 0.3,-2 -1.5,-2.1 -1.2,-3.5 -0.3,-2 0.9,-0.7 1.1,-3 1.7,-0.1 0,-7.4 0,-1 1.9,0 0,-4 12,0 10.8,0 0.8,2.4 0.4,4.2 2.1,1.4 -3.1,1.8 -1.1,3.8 0.2,1.7 -0.8,3 -0.8,0.1 -1.6,3.7 -0.5,-0.3 -1,2.7 -1.7,-2.6 0.1,-2.7 -2.2,0.4 0.6,1.9 -2.2,2.4 -2.4,-0.9 -2.2,1.8 -4.4,-0.4 -1.4,-1.7 -1.4,0.2 z", + "CD" : "m 392.23,224.09 -0.2,3.3 0.8,3.1 2,2.9 -3.2,0.5 -1.1,1.2 0.4,0.6 0.3,0.8 -0.6,3.1 1.3,1.8 1.4,-0.4 0,2.5 -1.1,0 -3.9,-3.6 -0.9,0.8 -2.6,-0.7 -0.1,-0.9 -1.9,0.4 -0.6,-1 -3.3,0.8 -0.2,-2.6 -0.7,-1 0,-4.1 -4.3,-0.5 -0.4,1.9 -3.3,0.2 -1.2,-1.5 -0.7,-2.7 -6.6,-0.1 -1.4,0.4 -0.4,-0.6 0.4,-1.3 1.2,-0.8 2.5,-0.7 0.9,1 2.6,-2.8 0.1,-2.3 2.9,-3 0.6,-5.1 1,-2.5 -0.1,-1.7 2.2,-1.5 1.7,1.4 3.7,0.4 5.9,-2.3 3.5,0.6 1.8,1.5 2.7,-0.5 2,2 -0.2,2 1,0.5 -1.4,1.3 -0.1,0.5 -1,0.8 -0.5,1.7 -0.7,0.8 0.6,0 -0.1,0.8 0,0.9 -0.4,0.3 -0.3,0.3 -0.5,0.5 -0.1,1 0,0.3 0.2,0.1 0.4,0.7 z", + "KW" : "m 429.03,161.99 -1.9,-1 -1.7,-0.2 1.1,-1.8 1.6,-0.1 0.3,1.4 z", + "DE" : "m 353.93,119.39 0,0 0,0 z m -1,-18.4 0.3,0 1.1,0.3 3.9,2.3 2,-1.5 2.2,-0.3 0.7,1.4 0.4,0.4 -0.1,0 0.1,0.1 -0.3,-0.3 0.4,0.8 -0.3,2.2 1,0.7 0.3,4.4 -4.4,1.2 -0.2,1.6 2.7,2.4 -2,1.6 0.5,1.5 -1.6,-0.5 -2.3,0.7 -2.4,-0.3 -1.3,-0.7 0.3,0.4 -1.4,0.2 -1.7,0 1.2,-3.4 -3.6,-1.2 0.3,-0.9 -0.7,-0.8 0.5,-0.4 -0.7,-1.2 0.7,-2.7 1.2,-1 0.4,-2.6 0.2,-1.3 2.4,0.5 0.8,-0.9 z", + "BE" : "m 347.83,111.69 0.7,1.2 -0.5,0.4 -0.8,0.6 0.2,0.9 -3.2,-1.1 -3.1,-2.8 1.2,-0.6 0.4,-0.1 0.9,0.4 0.8,-0.4 0.1,0.1 -0.1,-0.1 1.5,-0.3 z", + "IE" : "m 322.43,100.59 -1.8,1.6 1.7,0.9 2,0 0.5,3 -0.7,2 -2.3,0.3 -2.2,1.3 -2.1,0.3 -1.2,-1.2 2.9,-3.5 -2.1,-0.3 0.3,-2.5 2.4,0.2 0.6,-2.4 z", + "KP" : "m 586.53,132.09 -2,1.7 0.1,1.6 -4.2,2.5 -0.1,1.3 1.7,1.2 -2.3,0.7 -0.9,1 -2.1,-0.4 -0.4,0.8 -1.1,-1.9 1.3,-1.8 -2.1,-1.7 3.1,-1.8 1.2,-1.8 2.9,0.7 -0.2,-1.4 3.2,-1.1 0.3,-1.2 1.3,1 0.2,0.3 z", + "KR" : "m 578.83,142.09 0.9,-1 2.3,-0.7 1.9,2.9 0.2,3.9 -1.6,1.7 -1,-0.4 -1.1,1.1 -2.2,-0.4 z", + "GY" : "m 221.43,201.49 1.7,1 3.7,3.7 -0.1,1.1 -1.6,2.5 3,4.3 -1.2,-0.2 -3.2,1.6 -1.8,-1.3 -0.5,-1.6 0.9,-2.3 -0.9,-2.2 -1.4,-0.2 -1.2,-1.4 0.3,-1.2 1.7,-1.1 -0.4,-1.3 z", + "HN" : "m 167.43,187.59 4.4,-0.5 3.1,0.3 2.2,1.6 -3.2,0.4 -1.8,1.6 -1.9,0.4 -1.1,1.5 -0.4,-0.5 -0.6,-0.3 0.3,-0.8 -3.2,-1.1 0.4,-1.3 z", + "MM" : "m 512.93,177.09 0.7,-0.5 -0.1,-1.3 1.2,-0.8 0.2,-3.3 1.5,0.3 1.8,-3.8 0,-1.5 3.2,-1.8 1.2,-1.8 0.4,-0.6 2.2,1.9 0,3.5 -1.9,1.7 -0.1,2.4 1.8,-0.4 0.6,1.8 1.2,0.2 -0.7,1.8 1.5,0.2 0.5,1.3 1.9,-0.3 -0.9,0.5 -1.2,2 -3,1.3 -0.9,-0.3 -1.2,2.6 2.7,4.6 -1.1,2.6 1.7,2.1 0.9,3.7 -1.7,2.8 -0.3,-5.5 -1.5,-3.2 -0.3,-2.8 -0.8,-1.4 -3.4,2.5 -2.4,-0.6 0.8,-2.9 -1.2,-3.7 -1.8,-1.2 z", + "GA" : "m 355.03,215.89 3,0 0,-2.3 0,-0.2 3.7,0.3 -0.1,1.7 2.4,0.6 -1.2,2.2 1.2,0.7 -0.7,3.6 -3.2,-1.1 -1.7,0.8 0.5,2.6 -1.3,0.5 -3.6,-4 -1.1,-2.4 1.1,-0.3 0.1,-1.9 z", + "GQ" : "m 358.03,213.59 0,2.3 -3,0 -0.8,-0.4 0.8,-2.2 0.4,0.3 z", + "NI" : "m 172.23,196.59 -3.7,-3.4 0.6,-0.3 1.1,-1.5 1.9,-0.4 1.8,-1.6 3.2,-0.4 -1.4,7 0.4,0.9 -1.3,-0.1 z", + "LV" : "m 388.63,93.89 0.6,1.9 1,1.9 -1.1,0.9 -1.9,0.4 -3.3,-2.1 -0.8,0.5 -4.5,-0.5 -2,1 0,-2.1 1.3,-2 1.7,-0.5 2,2.1 1.4,-0.7 -0.2,-1.7 1.9,-0.6 2.3,1.5 z", + "UG" : "m 397.23,219.69 0,-0.1 0,0.1 z m -4.3,0.7 0,-0.9 0.1,-0.8 0.5,-0.6 -0.4,-0.2 0.5,-1.7 1,-0.8 1.8,-1.3 -0.3,-0.5 -1,-0.5 0.2,-2 5.1,-0.5 0.9,-0.9 1.8,3.4 0.1,1.5 -1.8,2.7 -2.7,0.2 -1.6,2.2 -1.8,0 -0.7,0.1 -1,0.8 z", + "MW" : "m 403.13,239.59 0,-0.1 0,0 z m -0.3,-0.3 0,0 0,-0.1 0,0.1 z m -0.9,-3 -0.2,-0.2 0,0 z m -0.4,-0.4 0,0 0,0 z m -2.2,-0.2 0.9,0.4 1,0.2 0.8,3.8 0,3.2 1,0.3 1.9,2.2 -0.1,2.7 -1.3,1 -1.7,-1.3 0.2,-2.9 -1.3,0.4 -0.9,-1.1 -0.7,-0.6 1,-2.3 -0.2,-3.2 0.8,-0.5 z", + "AM" : "m 425.33,139.79 -0.2,-0.1 -0.5,0.1 -0.7,-1.5 -1.9,-0.3 -2.1,-1 -0.5,-2.2 1.5,-0.3 1.5,-0.1 1.9,2.4 -0.6,0.4 z m -2.8,-4.9 0,0 -0.1,0 0,0.1 z m 0.4,0.2 -0.1,-0.1 0,0 0,0.1 z m 0.5,0.8 0,0 0.1,-0.1 -0.1,0 z", + "SX" : "m 419.13,195.79 1.9,2 2.9,-0.8 1.3,0.4 1.8,-1 3,-0.1 0,3.4 -1.9,2.8 -1.9,0 -5.6,-1.9 -2.7,-3.1 0.6,-0.7 z", + "TM" : "m 445.53,132.89 1.5,0.6 -0.4,-1.1 1.8,-1.5 2.5,1.1 0.4,2.1 3.6,0.9 0.9,2.3 6.1,3.9 1.8,0.5 -0.1,1.5 -1.4,-0.5 -1.9,1.1 -0.6,1.8 -4.2,2.4 -1.9,-1 -0.2,-2.1 -1.6,-0.1 -2.9,-2.4 -2.8,-0.6 -0.3,-0.6 -3.4,0.4 -2.9,1.6 0.1,-3.5 -0.8,-2.3 -1.6,-0.2 0.4,-2.1 1.5,0.8 1.9,-1.1 -1.5,-2.2 -0.8,-0.1 0,0 1.3,-0.5 2.6,2.4 0.9,-0.1 1.9,0.1 z m -7.6,-0.1 0.2,-0.3 0.6,0 0,0 -0.8,0.3 0,0 z m 0,0 -0.5,1.3 -0.7,-0.8 1.2,-0.5 0,0 z", + "ZM" : "m 390.93,235.69 1.2,-1.4 -0.5,-0.4 3.2,-0.5 0.9,1.1 0.2,-0.4 1.6,1 1.8,0.6 1.4,2.3 -0.8,0.5 0.2,3.2 -1,2.3 0.7,0.6 -5.7,1.9 0.4,1.3 -3,0.8 -0.2,0.9 -1.2,0.6 -1.1,0.6 -1,1.6 -0.6,0.2 -2.8,-0.5 -2,-0.6 -1.6,0.3 -2.6,-2.9 0,-6.2 3.8,0 0,-4.1 0.6,1 1.9,-0.4 0.1,0.9 2.6,0.7 0.9,-0.8 3.9,3.6 1.1,0 0,-2.5 -1.4,0.4 -1.3,-1.8 0.6,-3.1 z", + "NC" : "m 401.23,148.19 -0.3,0 -0.1,0 -0.6,-0.3 -1.2,0 0,0 0,0 0,0 -0.1,0 0,0 3.6,-1.1 -1.1,1.4 z m -2.5,-0.3 0.1,0 -0.1,0.1 z", + "MR" : "m 319.73,164.49 6,3.8 1.3,0.9 -3.3,0 2,18.9 -10,0.1 -1.9,-0.2 -1,1.5 -4,-3.7 -3.8,0.4 -0.4,1.2 1,-4.2 -1,-2.8 0.7,-1.6 -1.7,-1.1 0.2,-1.1 7.6,0 0,-3.4 1.9,-0.9 0,-5.1 6.3,0 z", + "DZ" : "m 327.03,169.19 -1.3,-0.9 -6,-3.8 0,-0.7 0,-2.1 1.9,-1.5 3.7,-0.5 4,-2.3 0,-1.9 2.2,-1.1 2.4,0.1 0.4,-0.9 -1.2,-1.5 -0.2,-3.2 -0.9,-0.8 6.3,-3 3.6,-0.7 3.5,-0.2 0.9,0.5 4.1,-0.9 2.3,0.3 -0.4,1.1 -0.3,3.9 -1.4,1.6 1.6,2.9 1.4,1 0.9,3.8 0.6,2.3 0,5.4 -0.8,0.8 1.2,2.6 2.9,1.1 0.8,1.6 -8.6,5.3 -3.2,2.8 -3,0.6 -2.2,0 0.2,-1.3 -2.5,-0.8 -1.4,-1.8 z", + "LT" : "m 377.03,100.09 -0.2,-1.2 -0.2,-1 2,-1 4.5,0.5 0.8,-0.5 3.3,2.1 0.3,0.9 -1.7,1 -0.8,1.7 -2,1.1 -1.8,-0.1 0,-0.6 -1.3,-0.5 0.1,-1.4 z m -0.7,-0.1 0.3,-0.6 -0.1,0.6 z", + "ET" : "m 416.33,196.19 -0.2,0.2 0.2,0.2 0.3,0.3 1.9,-0.1 -0.6,0.7 2.7,3.1 5.6,1.9 1.9,0 -5.8,5.9 -1.8,-0.1 -4,1.9 -2.2,-0.6 -2.3,1.7 -2.8,-0.4 -2.4,-1.6 -1.7,-0.3 -2.3,-3.9 -2,-1.9 -1.2,-0.3 0.3,-1.3 1.4,0.1 0.2,-2 1,-2.7 0.5,0.3 1.6,-3.7 0.8,-0.1 0.8,-3 2.6,-1.2 5.7,1.5 2.9,3.1 -1.2,1.8 z", + "ER" : "m 417.43,193.89 -2.9,-3.1 -5.7,-1.5 -2.6,1.2 -0.2,-1.7 1.1,-3.8 3.1,-1.8 2.1,5.6 2.8,0.9 3.7,3.8 -0.8,0.6 z", + "GH" : "m 338.53,206.19 -6.2,2.6 -2,-0.7 0,-0.1 0.3,0.1 0.2,-0.1 -0.7,-3.3 1.4,-2.6 -0.4,-2.4 -0.1,-2.9 5,-0.3 1,1.8 0.3,6.4 z", + "SI" : "m 362.33,124.59 0,-0.1 0.2,-0.1 -0.6,-1.7 0.6,-0.6 1.6,0.4 3,-1.2 0.3,0 0.5,0.9 -1.7,0.7 -0.6,1.8 z", + "GT" : "m 166.03,187.29 0.6,0.3 0.8,0 -1.8,1.3 -0.4,1.3 -1.5,1.1 0.1,0.2 -2.4,-0.4 -1.7,-1.2 0.9,-2.9 2.6,-0.6 -2,-1.8 0.9,-1.1 3.5,0 -0.2,3.8 z", + "BA" : "m 370.13,130.69 -0.2,-0.1 0,0 -2.6,-3 -0.8,-2.2 2.2,-0.3 4,1 0.7,-0.1 -0.4,3.2 -1.4,1.3 0,1 -1.1,-0.6 z", + "JO" : "m 404.13,156.59 0.2,-0.2 -0.2,-0.1 -0.1,0 0.1,-0.2 0.2,0 0.1,-0.9 0,-1.8 0.3,-0.3 2,1 3.8,-2.3 0.6,1.9 0.1,0.8 -4.2,1.3 2,2.1 -3.7,2.7 -2.1,-0.3 0.1,-0.4 -0.1,-0.1 0.4,-1.8 z", + "SY" : "m 410.53,151.79 -3.8,2.3 -2,-1 0.3,-0.4 -0.1,-1 1.5,-1.7 -1.3,-0.9 -0.1,-1.7 0,-1.1 1.4,-2 3.1,-0.1 2.9,0.3 4.7,-1.3 0.3,0.5 -1.9,1.3 -0.3,3.8 -1,1 z", + "MC" : "m 350.53,128.69 0,0.1 -0.1,0 0.1,-0.1 z", + "AL" : "m 376.43,135.29 0,0 0,-0.1 z m -3,-2.8 0,-0.3 0,-0.2 0.6,-0.8 0.7,0.3 0.8,0.8 0.2,0.7 -0.3,0.8 0.4,1 0,0.4 0.2,0 0.2,0 0.2,0 -0.1,0.1 0.1,0 0,0.1 -0.1,0.1 0.1,0 0,0.1 0.1,0.1 0,0.1 0,-0.1 -1.2,2 -0.7,0.3 -1.4,-2.2 0.2,-2.7 -0.1,-0.3 z m 0,-0.4 0,0 -0.1,0 z", + "UY" : "m 234.53,282.19 -0.9,1 0.2,0.9 0,0.2 0.3,0.2 -0.8,1.4 -2.2,1.2 -2.3,0 -3.3,-1 -1,-1.2 0.3,-3.1 0,-1.2 1.2,-3.6 1.5,-0.2 1.5,2.1 0.8,-0.5 z", + "CNM" : "m 401.43,148.19 0,0 0,0 -0.2,0 0,0 z m -2.7,-0.3 0,0 0,0.1 0.1,-0.1 0,0 0,0.1 z m 0.2,0 0,0 0,0 0.1,0 0,0 z m 1.9,0.3 0,0.1 0,0 -0.5,-0.3 -1.3,-0.1 0,0 1.2,0 z", + "MN" : "m 561.33,119.09 0.7,-0.2 -0.3,-0.3 1.5,0 2.6,2.6 -0.4,0.8 -2.7,-0.3 -3.2,1 -1.8,2 -2.1,0.2 -1.8,1.5 -3.1,-0.8 -1.1,1.5 1,1.7 -4.7,2.9 -5.2,0.4 -3,1.2 -2.8,0 -3.3,-1 -0.7,-0.7 -10.1,-0.5 -1.9,-3.7 -3.6,-1.5 -5,-0.6 0.3,-3.3 -1.4,-2.6 -2.4,-0.8 -2.1,-1.5 -0.3,-1.4 8.7,-4.2 3.6,0.7 0.7,1.4 5.2,0.7 1.9,-2 -1,-1.2 2.1,-2.9 6.3,2.1 0.2,1.8 2.7,1.2 3.1,-0.9 5,1.4 1.2,1.5 4.2,0.5 4.4,-1.2 2.4,-1.7 2.1,1 2.5,0.2 -2.3,4.1 0.7,1.1 z", + "RW" : "m 391.83,222.89 -0.2,-0.1 0,-0.3 0.9,-0.9 -0.3,-0.6 0.3,-0.3 0.4,-0.3 0.7,0.2 1,-0.8 0.7,1 -0.5,1.5 -1.3,0.5 z", + "SO" : "m 416.53,210.19 4,-1.9 1.8,0.1 5.8,-5.9 1.9,-2.8 0,-3.4 4.5,-1.1 -0.9,4.5 -5.5,9.6 -3.7,3.8 -4.9,3.5 -3.7,4.4 -1.1,-1.6 0,-7 z", + "BO" : "m 204.03,248.89 -0.1,-0.3 0.3,0.3 -0.1,0 z m -0.8,2.5 -0.3,-0.4 1.2,-1.5 0.9,-0.4 -1.5,-1.6 0.9,-2.6 -0.4,-1 0.8,-2.2 -1.7,-3 2.4,0 3.2,-2 2.3,-0.5 0.1,2.9 1.9,2.5 2.5,0.4 2.4,1.7 2.6,0.5 0.6,4.8 3.2,0.1 0.2,1.8 1.6,1.8 -1.2,3.9 -1.8,-1.7 -5.1,0.7 -0.9,1.8 -0.8,3.4 -2.4,-0.5 -0.8,1.7 -0.5,-1.3 -3.1,-0.8 -1.9,2 -1.3,0 -0.6,-3 -1.1,-1.7 0.6,-2 -1,-1 z", + "CM" : "m 361.73,213.69 -3.7,-0.3 0,0.2 -2.6,0 -0.4,-0.3 -0.3,-2.9 -2,-1.8 0.5,-1.9 3.3,-2.5 1.4,1.3 1.8,-3.6 4.7,-7.4 -1.2,-1.7 0.5,-0.1 -0.1,0.4 0.4,-0.1 1.3,2.7 -0.2,1.5 1.2,1.5 -2.9,0 -0.4,0.7 2.3,2.2 0.6,1.8 -2.1,2.9 1.5,4.3 1.8,1.8 0.2,1.1 -0.1,1 -3,-0.9 z m 2.1,-21 0,0.1 0,-0.1 z", + "CG" : "m 361.73,213.69 2.5,-0.1 3,0.9 0.1,-1 0.7,-2.3 1.7,-0.5 2.2,0.5 -1,2.5 -0.6,5.1 -2.9,3 -0.1,2.3 -2.6,2.8 -0.9,-1 -2.5,0.7 -0.6,-0.5 -1.4,1.2 -0.4,-0.8 -1.3,-1.2 1.3,-0.5 -0.5,-2.6 1.7,-0.8 3.2,1.1 0.7,-3.6 -1.2,-0.7 1.2,-2.2 -2.4,-0.6 z", + "EH" : "m 303.63,177.69 -0.1,-0.2 0.2,-1.1 4.2,-0.1 1.2,-1.7 0.3,-2.2 3.1,-2.9 0.7,-2.4 1.3,-1.7 3.1,0 1.8,-0.5 0.3,-1.1 0,0.7 -0.1,2.7 -6.3,0 0,5.1 -1.9,0.9 0,3.4 -7.6,0 z", + "RS" : "m 373.03,129.19 0.4,-3.2 -0.7,0.1 0,-0.7 -0.2,-1.8 1.2,-0.6 1.3,0.1 2.4,2.3 -0.2,0.9 2.5,1.3 -0.6,1 1.1,1.6 -1.1,1.8 -0.8,0 -0.7,0.2 0.3,-1 -1.9,-1.4 -0.8,1 -1.4,-0.8 z", + "ME" : "m 373.03,129.19 0.8,0.8 1.4,0.8 -0.6,0.3 0.1,0.4 -0.7,-0.3 -0.6,0.8 0,0.1 -0.1,0 -0.4,0 0.5,0.4 -0.1,0.3 0.1,0.3 -1.2,-1 -0.5,-0.3 -0.1,-0.2 0,-0.1 0,-1 z", + "TG" : "m 338.03,196.79 1.3,3.7 0.1,5.4 -0.4,0.1 -0.5,0.2 -1.2,-1.5 -0.3,-6.4 -1,-1.8 1.2,0.3 z", + "LA" : "m 542.13,189.59 -1.3,0.8 -3.1,-0.1 0.8,-2.7 -1.7,-1.6 0.2,-1.6 -1.6,-1.9 -1.2,-0.2 -1.5,1.2 -1,-0.8 -1.8,1.5 0.2,-4 -1.5,0 -0.7,-1.6 1.2,-2 0.9,-0.5 1,0.9 -0.4,-2.3 1.2,-0.3 1.6,1.7 0.3,1.4 1.8,-0.2 1.7,1.8 -2.1,1.5 1.7,1 3.4,3.5 2.2,3.4 z", + "AF" : "m 479.73,143.39 -1,0.3 0.3,0.2 -3.8,0.4 -2.7,1.7 0.9,1.9 -1.1,2.4 -2,0.1 0.6,1.5 -1.5,0.5 -0.4,2.5 -2.3,0.2 -3.4,1.9 -0.3,2.3 -4,0.9 -3.1,0 -3.1,-1 1.8,-2.1 -0.2,-1.1 -1.7,-0.2 -0.5,-3.3 1.4,-5.5 1.9,1 4.2,-2.4 0.6,-1.8 1.9,-1.1 1.4,0.5 1.4,0.3 1,0 2.9,0.2 1.6,-0.9 0.9,-1.8 2,1 0,2.6 3.2,-1.7 z", + "UA" : "m 378.73,117.59 0.3,-0.7 0.4,-1 0.2,-1.1 2.8,-2.5 -0.9,-2.5 1.5,-0.9 2.6,-0.1 2.9,0.8 3.9,0.6 2.3,-0.5 0.8,-1.3 1.6,-0.1 3.9,-0.6 1.2,1.5 -0.5,1.3 1.7,0.1 1.1,2.2 3.4,-0.2 3.4,1.4 1.8,1.5 -0.8,1.2 0.1,2.3 -1.8,-0.1 -1.2,1.8 -4.4,1.1 -2.1,1.2 1.5,2.5 -3.1,1.7 -2.1,-2.9 1.7,-0.7 -3.9,-0.7 1.2,-0.6 -2.3,-0.4 -2.6,2.4 -0.2,1 -1.7,-0.1 -1.1,-0.5 1.4,-2.4 2.2,0.2 -1.9,-2.8 0.3,-0.8 -2.9,-1.4 -2.2,0.4 -2.6,0.9 -4.5,-0.1 -0.5,-0.4 z m 15.3,4.9 0.5,0.7 0.2,-0.2 -0.6,-0.6 z m 7.4,0.7 1.8,1 -0.3,-0.9 -1.2,-0.6 z", + "SK" : "m 379.43,115.89 -0.4,1 -0.3,0.7 -3.2,-0.3 -1.1,0.9 -4,1 -1.3,-0.6 -0.6,-0.9 0.2,-0.6 2.2,-1.2 1.4,-1.1 5.8,0.4 z", + "JK" : "m 485.23,147.19 -1.4,0.9 -0.5,-1.2 1.1,0.4 z", + "BG" : "m 391.03,128.69 -1.7,3.1 0.6,1 -1.8,-0.2 -1.4,0.8 -2.1,1.1 -1.4,-0.8 -3,0.6 0.1,-1 -1.2,-1.3 1.1,-1.8 -1.1,-1.6 0.6,-1 1.2,0.8 3.9,0.5 3.2,-1.2 z", + "QA" : "m 433.63,169.69 -0.2,-1.5 1.6,-0.8 -0.7,2.6 -0.4,0.1 z", + "LI" : "m 354.53,120.39 0.2,0.3 -0.1,0.2 -0.2,-0.1 z", + "AT" : "m 354.63,120.89 0.1,-0.2 -0.2,-0.3 0.3,-0.4 -0.2,-0.2 0.2,0 0.1,-0.1 2.4,0.3 2.3,-0.7 1.6,0.5 -0.5,-1.5 2,-1.6 1.7,0.4 0.5,-0.9 3.8,0.9 -0.2,0.6 0.6,0.9 -1.1,0.6 -0.9,2.1 -3,1.2 -1.6,-0.4 -2.5,-0.4 -0.4,-0.9 -3.3,0.5 -0.7,0.1 z", + "SZ" : "m 397.43,268.29 0.2,0.6 0.2,1.2 -1.9,0.7 -0.6,-1.6 1.1,-1.4 z", + "HU" : "m 378.73,117.59 0.9,0.7 0.5,0.4 -1.7,1.1 -1.6,2.9 -1.8,0.4 -1.3,-0.1 -1.2,0.6 -3,-0.1 -1.6,-1.3 -0.5,-0.9 -0.3,0 0.9,-2.1 1.1,-0.6 1.3,0.6 4,-1 1.1,-0.9 z", + "RO" : "m 379.73,127.59 -2.5,-1.3 0.2,-0.9 -2.4,-2.3 1.8,-0.4 1.6,-2.9 1.7,-1.1 4.5,0.1 2.6,-0.9 0.8,0.3 2.4,3.7 -0.1,2.8 1.1,0.5 1.7,0.1 -2,2.1 -0.1,1.3 -3,-1 -3.2,1.2 -3.9,-0.5 z", + "NE" : "m 343.23,195.39 -1.5,-1.3 -0.8,0.9 -0.4,-1.3 -2.3,-0.9 -1.5,-3.6 2.1,-0.7 4.2,-0.2 1.3,-2 0.1,-5.4 3,-0.6 3.2,-2.8 8.6,-5.3 2.9,0.7 1.4,1.1 1.5,-0.8 0.3,3.1 1.6,2.2 -0.5,0.9 -0.5,5.9 -3.9,4.9 0.3,1.3 -2.1,1.3 -2,-0.6 -2.5,0.2 -1,0.8 -3.4,-1 -1.7,0.7 -2.8,-1.7 -2.6,0.8 z", + "LU" : "m 348.43,114.99 -0.7,0 -0.3,-0.2 -0.2,-0.9 0.8,-0.6 0.7,0.8 z", + "AD" : "m 339.03,131.39 0.6,-0.1 -0.1,0.3 -0.3,0.2 z", + "CI" : "m 331.13,199.69 0.4,2.4 -1.4,2.6 0.7,3.3 -5.7,0.2 -3.3,1.3 0.1,-2.8 -2.1,-1.3 0.2,-2 1.2,-3.6 -0.2,-1.4 3.3,-0.2 1.4,-0.3 1.6,1.4 2.8,-0.5 z m -0.8,8.4 -0.3,-0.1 0.3,0 z", + "LR" : "m 320.03,203.39 -0.2,2 2.1,1.3 -0.1,2.8 -3.3,-1.5 -4.2,-3.4 1.7,-1.6 0.6,-1.4 1.5,0.3 0.7,2.2 z", + "BN" : "m 556.53,208.59 0.2,-0.1 0,-0.1 0.4,1.2 z m -2,0.4 1.1,-0.2 0.8,-0.3 -0.7,1.6 z", + "IQ" : "m 429.23,158.99 -0.8,-0.2 -0.3,0.1 -1.6,0.1 -1.1,1.8 -3.6,-0.2 -5,-3.9 -3.1,-1.8 -2.5,-0.4 -0.1,-0.8 -0.6,-1.9 3.7,-2 1,-1 0.3,-3.8 1.9,-1.3 0.7,-0.5 3.9,0.4 1,2.6 2,0.4 -1.8,3.9 1.7,2.2 2.1,1.2 0.9,1.3 -0.3,1.6 z", + "GE" : "m 422.43,134.39 -1.5,0.1 -1.5,0.3 -1.2,-1.1 -2.4,0.2 -0.1,-2.6 -2.9,-1.8 5.5,0.6 2.1,1.4 1.7,-0.4 3.1,1.9 0.1,1.9 z", + "GM" : "m 304.23,192.79 -0.1,-0.6 0.5,-0.4 3.2,-0.4 -1.8,1.2 z", + "CH" : "m 353.93,119.39 0,0 0,0 0,0 0.6,0.4 0.1,0 0.2,0.2 -0.3,0.4 -0.1,0.4 0.2,0.1 1,0.5 0.7,-0.1 -0.9,1.2 -2.2,0.7 -1.5,-0.4 -2,0.8 -0.5,-0.5 0.1,-0.7 -0.3,-0.3 -0.5,0.4 -0.3,0.2 -0.2,-0.7 2.8,-2.4 1.7,0 z", + "TD" : "m 364.03,192.99 0.6,-0.2 -0.8,-0.1 0,0 -0.2,-0.1 0.1,0.1 -0.5,0.1 -0.9,-1.3 -0.3,-1.3 3.9,-4.9 0.5,-5.9 0.5,-0.9 -1.6,-2.2 -0.3,-3.1 1.9,-0.9 15.3,7.9 0,7.4 -1.7,0.1 -1.1,3 -0.9,0.7 0.3,2 1.2,3.5 -0.7,-0.1 -3.9,3.5 -2.6,0.3 -0.9,1.8 -3.5,1 -2.5,0 -0.6,-1.8 -2.3,-2.2 0.4,-0.7 2.9,0 -1.2,-1.5 0.2,-1.5 z", + "KV" : "m 375.73,132.99 -0.2,-0.7 -0.8,-0.8 -0.1,-0.4 0.6,-0.3 0.8,-1 1.9,1.4 -0.3,1 -0.9,0.1 z", + "LB" : "m 403.53,152.39 0.9,-1.7 0.7,-1.6 1.3,0.9 -1.5,1.7 -0.7,0.7 z", + "DJ" : "m 418.53,196.79 -1.9,0.1 -0.3,-0.3 0.2,-0.2 -0.2,-0.2 -0.1,-0.5 1.2,-1.8 0.6,0.2 0.8,-0.6 0.5,1.4 -0.2,0.9 z", + "BI" : "m 393.13,226.19 -0.6,-1 -0.3,-1.1 0,-0.5 -0.4,-0.7 1.7,-0.1 1.3,-0.5 0.5,1.6 z", + "SR" : "m 231.73,213.29 -2.6,-0.3 -1,1.1 -3,-4.3 1.6,-2.5 0.5,-1 5.6,0.4 -0.2,0.9 -0.6,0.8 0.9,2.8 z", + "IL" : "m 401.83,156.19 1.2,-2.1 0.5,-1.7 0.7,0 0.7,-0.7 0.1,1 -0.3,0.4 -0.3,0.3 0,1.8 -0.4,0.5 0.1,0.4 -0.1,0.2 0.1,0 -0.1,0.2 0.1,0.1 -0.5,1.4 -0.4,1.8 -0.1,0.2 0,0 -0.1,-0.5 z", + "ML" : "m 325.73,197.89 -1.4,0.3 -3.3,0.2 -0.8,-2.3 -1.5,-2.2 -2.9,1.1 -1.3,-0.9 -1.4,-2.6 -0.3,-2 1,-1.5 1.9,0.2 10,-0.1 -2,-18.9 3.3,0 11.5,7.8 1.4,1.8 2.5,0.8 -0.2,1.3 2.2,0 -0.1,5.4 -1.3,2 -4.2,0.2 -2.1,0.7 -1.8,-0.3 -2.7,1.8 -1.4,0.2 -1.3,1.7 -1,-0.5 -1,2.4 -1.1,0.4 z", + "SN" : "m 304.23,194.19 -0.1,-0.9 0.1,-0.5 1.8,-0.2 1.8,-1.2 -3.2,0.4 -1.1,-2.6 1.1,-1.8 0.4,-1.2 3.8,-0.4 4,3.7 0.3,2 1.4,2.6 -1.9,0.1 -2.6,-0.7 -2.8,0 z", + "GN" : "m 314.53,194.09 1.3,0.9 2.9,-1.1 1.5,2.2 0.8,2.3 0.2,1.4 -1.2,3.6 -1.2,0.7 -0.7,-2.2 -1.5,-0.3 -1.9,-2.9 -2.4,0.3 -1.5,1.5 -1,-1.5 -2.3,-2.2 0.6,-1 1.9,-0.4 0,-1.9 2.6,0.7 z", + "ZW" : "m 384.63,251.99 2.8,0.5 0.6,-0.2 2.1,-2.2 0,0 1.2,-0.6 0.2,-0.9 3,-0.8 4.9,2 0.1,3.3 -0.5,2.2 0.5,1.1 -1.2,2.5 -2.1,2.2 -1.8,-0.1 -1.9,-0.3 -2.6,-1.2 -0.6,-2.2 -3,-2 z", + "PL" : "m 373.83,102.19 -0.4,0.5 0.7,-0.5 5.6,0.3 0.2,0 1.3,0.5 0,0.6 0.8,3.3 -1.4,0.9 0.9,2 0.9,2.5 -2.8,2.5 -0.2,1.1 -1.3,-0.7 -5.8,-0.4 -0.5,-0.9 -4.1,-1.7 -3.1,-0.7 -0.3,-4.4 -1,-0.7 0.3,-2.2 0.7,-0.4 -0.8,-0.1 -0.1,-0.1 0.1,0 3.7,-1 0.8,-0.7 3.3,-0.7 0.6,1.1 1.9,-0.1 z", + "MK" : "m 376.43,135.29 0,0 0,0.1 z m 2.7,-3.3 1.2,1.3 -0.1,1 -2,0.5 -1.5,0.6 -0.3,-0.4 0,0.3 0,-0.1 0,0 -0.2,0 -0.2,0 0.1,-0.4 -0.3,0 -0.4,-1 0.3,-0.8 1,-0.7 0.9,-0.1 0.7,-0.2 z", + "PY" : "m 232.43,264.39 -0.3,0.8 -0.4,2 0.1,0.2 -0.1,0.1 -0.3,2.2 -1.9,1.6 -5.4,-0.2 2,-3.9 -4.8,-2.9 -1.8,-0.4 -3.2,-3.1 0.8,-3.4 0.9,-1.8 5.1,-0.7 1.8,1.7 0.7,1.6 -0.3,2.2 3,0.1 1.5,1.1 0.4,2.6 z", + "BY" : "m 381.53,109.79 -0.9,-2 1.4,-0.9 -0.8,-3.3 1.8,0.1 2,-1.1 0.8,-1.7 1.7,-1 -0.3,-0.9 1.9,-0.4 1.1,-0.9 5.2,1.4 1.7,4.8 1.8,1 -2.8,1.1 1,2.3 -1.6,0.1 -0.8,1.3 -2.3,0.5 -3.9,-0.6 -2.9,-0.8 -2.6,0.1 z", + "CZ" : "m 372.33,114.79 -1.4,1.1 -2.2,1.2 -3.8,-0.9 -0.5,0.9 -1.7,-0.4 -2.7,-2.4 0.2,-1.6 4.4,-1.2 3.1,0.7 4.1,1.7 z", + "BF" : "m 338.03,196.79 -0.8,0 -1.2,-0.3 -5,0.3 0.1,2.9 -1,-0.9 -2.8,0.5 -1.6,-1.4 0.7,-3 1.1,-0.4 1,-2.4 1,0.5 1.3,-1.7 1.4,-0.2 2.7,-1.8 1.8,0.3 1.5,3.6 2.3,0.9 0.4,1.3 -1.9,0.9 z", + "NA" : "m 381.03,251.69 1.6,-0.3 2,0.6 -3.2,1.3 -0.5,-0.9 -4.5,0.6 0.1,7.2 -2,0.1 0,5.5 0,7.5 -1.6,1.1 -3.3,-0.5 -0.6,-1.4 -1.2,1.2 -2.2,-2.6 -1.4,-5.6 -0.4,-4.6 -1.9,-2.9 -1.6,-3.5 -1,-1.1 -0.5,-2.5 2.7,-0.6 1.5,0.9 8.6,0 0.6,0.7 3.9,0.5 z", + "LY" : "m 365.03,173.19 -1.5,0.8 -1.4,-1.1 -2.9,-0.7 -0.8,-1.6 -2.9,-1.1 -1.2,-2.6 0.8,-0.8 0,-5.4 -0.6,-2.3 1.4,-1.4 -0.3,-1.1 2.8,-2.2 -0.1,-1.5 1.6,0.8 1.9,-0.2 3.5,1.1 1.7,2.3 2.5,0.4 3.3,1.8 1.3,-0.5 0.3,-2.7 1.2,-1.7 2.1,-0.8 2.8,0.7 0,0.6 3.6,0.8 0.3,0.6 -0.9,3.1 0.6,2.1 0,14.6 0,4 -1.9,0 0,1 -15.3,-7.9 z", + "TN" : "m 358.33,152.19 0.1,1.5 -2.8,2.2 0.3,1.1 -1.4,1.4 -0.9,-3.8 -1.4,-1 -1.6,-2.9 1.4,-1.6 0.3,-3.9 0.4,-1.1 2.2,-0.9 2.7,4.6 -1.9,2 0.4,1.3 1.4,-0.2 z", + "BT" : "m 506.53,164.49 2.5,-2.2 2.7,1.3 0.9,1.7 -4.4,0.4 z", + "MD" : "m 390.33,124.69 0.1,-2.8 -2.4,-3.7 -0.8,-0.3 2.2,-0.4 2.9,1.4 -0.3,0.8 1.9,2.8 -2.2,-0.2 z", + "SS" : "m 401.33,209.69 -0.9,0.9 -5.1,0.5 -2,-2 -2.7,0.5 -1.8,-1.5 -1.9,-1.9 -0.1,-1.1 -2,-1.3 -2.2,-2.6 1.7,-3.1 1.4,-0.2 1.4,1.7 4.4,0.4 2.2,-1.8 2.4,0.9 2.2,-2.4 -0.6,-1.9 2.2,-0.4 -0.1,2.7 1.7,2.6 -0.2,2 -1.4,-0.1 -0.3,1.3 1.2,0.3 2,1.9 2.3,3.9 -1,-0.8 z", + "BW" : "m 384.63,251.99 1.7,3.3 3,2 0.6,2.2 2.6,1.2 -2.2,0.9 -2.3,2 -0.3,1.3 -1.9,0.9 -0.5,1.8 -1.5,0.4 -3.4,-1.1 -0.6,1.4 -2,1.8 -1.9,0.1 0.3,-1.6 -1.7,-2.8 0,-5.5 2,-0.1 -0.1,-7.2 4.5,-0.6 0.5,0.9 z", + "BS" : "m 191.33,169.99 -1.3,-1.4 0,0 0,0 0.5,0.3 0.8,1.1 z m 0,0 0.8,0.9 0.5,2.1 4.4,1.5 -4,-1 -2.2,-1.6 1.1,-1.1 -0.6,-0.8 z m -1.3,-1.4 -1.6,-1.2 -1.4,1.5 0.7,2.9 -1.3,-1.9 0.1,-1.1 1.9,-1.9 1.6,1.7 0,0 z", + "NZ" : "m 661.13,313.49 -2.7,-0.1 -0.2,1.4 -0.8,-2.2 -1.8,0.1 -0.6,-1 0.9,-1.6 2.7,-2.6 2.6,-1.1 2.7,-2.2 1.9,-3.9 1.2,-0.9 0.7,1.8 1.4,-0.9 0.7,2.2 -3.4,4.3 -2.1,1.3 -1.3,3.3 z m 12.3,-12.7 -1.6,1.1 -1.2,-0.7 1.2,-2.3 -2.8,-2 1.6,-1.3 0.4,-2.3 -0.9,-2.5 -2.4,-3.1 1.5,-0.5 2.4,2.7 1.4,1.1 0.2,2 2.8,0.7 2.2,-0.5 -1.4,3 -0.9,-0.1 z", + "CU" : "m 188.73,178.29 -3,-0.4 -1.1,-1.8 -2.4,-1 -2.6,-0.2 -0.1,-1 -1.7,-0.1 -3.3,1.9 0.2,-1.2 2.2,-1.3 2.3,-0.4 3.8,0.3 1.6,1.4 0.9,-0.3 0.8,0 3.4,2.7 3.5,1.1 0.9,1.1 -6.6,0.5 z", + "EC" : "m 182.53,224.19 1,-1.4 -2.1,-0.6 0,-2.4 1.6,-2.1 -0.1,-1.3 2.5,-1.4 2.6,1.5 2.2,0.4 1.9,1.1 -0.5,2.7 -2.1,2 -3.2,1.5 -1.4,3.1 -2.8,-1.8 z", + "AU" : "m 617.53,306.39 -1.6,0 -1.5,-2.2 -1.1,-3.5 0,-1.4 -1.2,-0.9 4.1,2.5 3.8,-1.3 0.1,2.7 -0.5,3.3 -0.9,-0.8 z m -1.4,-54.7 0.6,2.8 5.1,2.8 0.9,3.5 2.3,0.9 0.2,1.8 1.9,1.1 1.4,2.1 1.4,-0.3 -0.6,1.6 1,3.3 0.1,3 -2.1,7.5 -1.4,0.9 -3.1,6.5 -0.4,3.5 -3.2,0.7 -3.5,2 -2.9,-0.5 0.1,-1.3 -2.8,2.1 -2.2,-1.1 -3.3,-0.7 -1.8,-1.9 -0.3,-2.6 -1.1,-1 -4.4,1.1 1.2,-1 -0.6,-1.5 2,-3.8 -1.2,0 -3.4,3.9 -0.9,-2.3 -1.7,-1.5 -0.3,-1.5 -3.7,-0.9 -2.1,-1.2 -4.1,0.5 -3.2,1.2 -2.1,-0.1 -4,2 -1.1,1.6 -6.8,0 -3,2.1 -2.4,0.4 -2.3,-0.5 -1.9,-1.6 1.3,-1.7 0.1,-3.5 -1.4,-3 0,-1.6 -1.5,-2.8 -0.3,-1.6 -2.1,-3.2 1.1,-0.5 1.1,1.9 0.1,-1.4 -1.3,-2.5 0.4,-3.9 4.3,-3.1 3.5,-0.8 6.2,-2 2.6,-2.9 -0.3,-1.8 1.5,-1.3 1.1,1.8 0.1,-2.6 1.6,0.3 0,-2.1 1.3,-1.2 2.9,-0.8 0.6,-1 2.4,1.9 2.8,0.8 -0.6,-1.3 3.1,-4.8 -1.8,-0.3 0.7,-1.1 2,0.1 0,2 2.4,-0.3 -0.2,-2.2 1.1,1.3 3.7,1.1 2.7,-0.9 0.8,1 -1.9,2.8 -0.9,2.2 2.1,1.6 4.7,2.3 1.9,1.6 1.6,-0.5 1.6,-4.6 -0.1,-5 0.7,-0.9 0.3,-3.6 0.9,1.1 1.8,5.8 0.8,1.5 1,-0.7 1.7,1.5 0.1,2.7 z", + "VE" : "m 199.73,195.09 -1.1,0.5 0.6,1.7 -1,1.7 1.2,1.5 0.9,-1.3 -1.1,-2.1 2.8,-1.2 2.4,0 1.8,1.9 3.2,-0.4 2.9,1.1 1.6,-1 2.3,-0.3 0.9,1.4 2.8,1.3 -0.2,0.9 1.7,0.7 -1,1.4 0.4,1.3 -1.7,1.1 -0.3,1.2 1.2,1.4 -1.6,1.8 -5.9,0.5 1.2,2.9 1.3,0.1 -1.5,1.6 -2.7,1.7 -2.6,-1.1 -0.6,-2.2 -1.2,-0.9 1,-1 -1.1,-2.2 0.8,-3.1 -3.8,0.1 -1.3,-1.6 -3.8,-0.2 -0.5,-2.5 -1.2,-1.8 0.2,-2.1 1.8,-2.4 z", + "SB" : "m 644.23,236.59 -1.9,-0.1 0,-2.4 -2.9,-1.9 -1.4,0.8 1.2,1.3 -2.6,-1.1 0.1,-1.7 3.3,0.7 2.3,1.4 0.5,1.4 1.7,-0.8 z", + "MG" : "m 431.73,249.49 -4.3,14.5 -1,2.3 -3.7,1.2 -2.1,-1.2 -0.5,-3.1 -1.1,-2.4 0.6,-1.9 1.8,-2.6 -1,-5 1,-2.5 2.2,-0.4 3.6,-1.7 1.4,-3.3 0.9,0.1 1.1,-2.9 1.3,2.1 1,4.7 -1.6,0.2 z", + "IS" : "m 290.23,72.39 4.3,-0.5 -0.3,-1.1 -2.3,-0.6 -2.6,0.2 1.5,-0.8 0.6,-1.4 1.9,0.4 -0.2,-1.2 2.4,1.5 -0.4,1.4 1.1,0.6 1.6,-2.4 3.4,-0.2 1.4,0.7 2.1,-0.7 -0.1,-1 3.6,1.4 -0.3,1 2,0.7 0.5,1.4 -2,2.1 -6.1,2.1 -1.9,1 -2.8,-0.5 -1.9,-1 -2.9,0.1 1.9,-1.7 -1.4,-1.3 z", + "EG" : "m 403.13,159.99 -1.2,3.6 -2,-1.7 -1.4,-2.9 0.2,2.1 1.9,2.4 0.8,2.4 2.9,5.4 0.3,2.1 2.3,1.8 -10.8,0 -12,0 0,-14.6 -0.6,-2.1 0.9,-3.1 4.2,0.7 3.3,1.1 2.5,-1.4 2.3,0.1 1,0.8 4.1,-0.5 1.2,3.3 z", + "KG" : "m 477.33,138.49 -2.7,0.6 -1.5,-0.9 -4.1,0.2 1.2,-1.6 1.9,0 1.4,0.2 2.8,-1.5 -2.7,-1.5 -0.6,0.7 -2.4,-1 1.5,-1.5 1.7,-1.4 3.2,1 1.3,-2 1.9,1 6.2,-0.1 3.4,1.6 -3.5,1.9 -0.5,0.7 -2.5,0.3 -2.1,1.4 -0.3,-0.7 -3,1.3 z m -5.8,-0.9 -0.3,0 0.2,0.2 0.2,-0.1 z m 2.2,-0.1 0,-0.2 -0.2,0.1 0,0.1 z m -1.2,-0.3 -0.4,-0.1 0.2,0.5 0.3,-0.1 z", + "NP" : "m 505.03,163.39 0.1,2.3 -1.6,0.7 -2.9,-0.4 -2.4,-1.6 -3.5,-0.3 -5.2,-2.8 0.6,-1.9 1.3,-0.9 2,-0.3 2.8,2.4 1.1,-0.1 1.9,1.9 1.7,0.9 1.1,-0.4 z" + } + } + } + }); + + return Mapael; + +})); diff --git a/plugins/jquery-mapael/maps/world_countries_miller.min.js b/plugins/jquery-mapael/maps/world_countries_miller.min.js new file mode 100644 index 0000000..be9d3d1 --- /dev/null +++ b/plugins/jquery-mapael/maps/world_countries_miller.min.js @@ -0,0 +1,13 @@ +/*! + * + * Jquery Mapael - Dynamic maps jQuery plugin (based on raphael.js) + * Requires Mapael + * + * Map of World by country + * Miller projection + * + * @source http://code.highcharts.com/mapdata/ + */ +!function(a){"object"==typeof exports?module.exports=a(require("jquery"),require("mapael")):"function"==typeof define&&define.amd?define(["jquery","mapael"],a):a(jQuery,jQuery.mapael)}(function(a,b){"use strict";return a.extend(!0,b,{maps:{world_countries_miller:{width:700.9375,height:337.375,leftLongitude:-175,rightLongitude:190,topLatitude:84,bottomLatitude:-56,_projectLongitude:function(a){return a*Math.PI/180},_projectLatitude:function(a){var b=a*Math.PI/180;return 1.25*Math.log(Math.tan(Math.PI/4+.4*b))},getCoords:function(a,b){var c=this;void 0===c._xLeftPrime&&(c._xLeftPrime=c._projectLongitude(c.leftLongitude)),void 0===c._xRightPrime&&(c._xRightPrime=c._projectLongitude(c.rightLongitude)),void 0===c._yTopPrime&&(c._yTopPrime=c._projectLatitude(c.topLatitude)),void 0===c._yBottomPrime&&(c._yBottomPrime=c._projectLatitude(c.bottomLatitude));var d=c._projectLongitude(b),e=c._projectLatitude(a),f=(d-c._xLeftPrime)*(c.width/(c._xRightPrime-c._xLeftPrime)),g=(c._yTopPrime-e)*(c.height/(c._yTopPrime-c._yBottomPrime));return{x:f,y:g}},elems:{FO:"m 322.53,80.19 0.9,0.8 0,0.3 -1,-0.7 z",UM:"m 26.03,206.59 0,0 -0.1,0 0.1,0 z",US:"m 100.93,117.39 0.2,0.1 -0.6,-0.2 0,-0.3 z m 0.2,-0.6 0.2,0.1 -0.3,0.2 -0.3,-0.1 z m -19,-15.8 0.2,0 0,0.4 -0.3,-0.4 z m -0.1,-0.7 0.3,0.3 -0.2,0.2 -0.2,-0.1 z m -0.5,0 0.8,1.3 -0.9,-0.7 -0.1,-0.7 z m 3.3,0.1 -0.1,0.3 -0.4,0 0.1,-0.7 z m -3.7,-0.5 0.1,0.3 -0.4,0 0,-0.3 z m 2.8,-0.3 0.3,0.4 -0.2,0.4 -0.2,-0.6 z m -3.5,-0.1 0.4,-0.1 0,0.3 -0.4,0.3 z m 0.7,0.1 -0.1,0 -0.2,-0.3 0.3,0 z m -1.1,-1.3 0.3,-0.4 0.8,-0.2 -0.2,0.3 z m 2.6,-0.8 0.8,0.3 -0.4,0.5 -0.7,-0.4 z m -0.3,-0.6 0,0.4 -0.8,-0.2 0.3,-0.3 z m 1,0.2 0.1,0.6 -0.5,-0.4 0,-0.6 z m -1.4,-1.2 0.6,0.6 -0.4,0.2 -0.3,0 z m -1.7,-0.8 1.5,0.5 -0.3,1.2 -1,0 z m -3.5,-0.4 -0.1,0.6 -0.4,0.1 0.2,-0.5 z m -1.5,-2.1 -0.2,0.4 -0.2,-0.2 0.2,-0.5 z m 91.6,25.5 -0.2,0.4 -1,0.5 -0.1,-0.2 z m 3,6.8 -0.2,0.6 -0.4,0.7 -0.2,-0.4 z m 2.8,-1 0,0.4 -0.3,0 0.2,-0.4 z m 3.7,-0.7 0.1,0.3 -0.6,0 0.3,-0.2 z m -96.8,-24.9 -0.6,-2.5 0.8,-0.1 0.6,0.7 z m -61.3,4.8 -0.9,1.5 -2.4,0.4 -2.2,1.3 1.2,-1.5 2.3,0 0,-1 z m 59.3,-7.9 -0.4,-1.4 1,0.8 0.4,3 z m -0.7,-2.2 -0.3,1.3 -1.4,-1.2 1.1,-1.3 z m 1.1,-1.2 1.4,0.4 0.5,2.3 -1,-0.2 z m -66.2,-14.8 1.6,0.2 -2,1.1 -1.9,-1.3 -2.2,-0.4 3,-0.6 z m 89,39.1 -0.1,0.1 0,-0.1 z m 45.7,49.9 -0.1,-0.8 -0.5,-0.2 -1.5,-2.5 -1.5,-2.5 -0.2,-0.1 -0.1,-0.1 -2.1,-0.7 -1.6,1.9 -2.6,-1.4 -0.7,-1.8 -3.2,-2.6 -3.2,0 0,0.9 -5.5,0 -7.2,-2.4 0.2,-0.5 -4.6,0.4 -0.3,-1.2 -2.4,-2 -2.5,-0.1 -1.5,-1.1 -3.4,-5.7 -0.2,-1.3 -2.3,-2.5 -0.3,-2 -1,-1.4 0.6,-2.3 -0.9,-3.2 0.8,-2.4 0.5,-4 -1.3,-6.7 3.6,0.6 -0.1,-0.2 0.7,0.6 -0.7,-0.7 0,0 0.3,-0.4 -0.3,0.3 0,-1.8 52.8,0 4.8,1.2 2.3,1.2 3.6,0.1 -2.8,1.2 -2,1.7 2.5,-0.2 0.6,0.7 3.5,-1.6 0.1,0.1 -0.1,-0.1 1.1,-0.6 0.6,0.1 -1.1,0.9 1.8,1.4 4.6,-0.7 0.9,0.8 0.7,-0.2 0,0.5 -1.2,1.1 -4.3,-0.1 -2,3.2 1.4,-0.6 -1.1,3.6 0.1,2.3 1,1.5 1.3,-0.6 0.8,-2.5 -0.6,-1.5 0.5,-2.5 3.2,-2.7 2.1,1.1 0.3,2.4 -1,0.8 2.3,0.2 0.5,2.1 -0.2,0.9 -0.3,0.2 -0.3,-0.3 -0.5,0.8 -0.7,1.4 1.8,0.7 1.6,-0.3 4.8,-2.4 0.5,-0.8 -0.3,-0.4 0,-0.4 4.5,-0.1 1.8,-2.7 1,-0.9 1,-0.3 0,0 6.2,-0.1 2.3,-2 0.5,-2 1.5,-1.8 2.7,0.9 0,3.2 0.4,0.3 0.4,0 -0.1,0.8 0.6,0.2 0.3,0.9 -2.4,1 0.1,0.1 -0.4,0.4 0,-0.3 0,0 -0.7,0.3 0.3,-0.1 0,0.4 -0.3,0 -0.1,-0.3 -0.4,0.2 -2.9,1.8 -0.1,3.7 -4.4,1.1 -2.2,1.4 -0.1,1.9 -2.9,4 -1.5,-2.8 0.3,3 -0.4,2.2 0.9,-0.1 0.5,2.8 -1.5,2.2 -1.2,-0.1 -1.6,1.8 -2.3,1.4 -3.8,3.1 -0.6,2.1 1.8,4.7 0.9,3.4 -0.6,3.4 -1.4,0 -2,-2.7 -1.3,-2.9 0.4,-2.1 -2.7,-2.5 -1.8,1 -2.1,-1.4 -5.3,-0.3 -1.5,0.6 0.9,2.4 -1.6,-0.9 -1.3,0.8 -1.9,-1.4 -1.3,0.4 -3.4,-0.3 -4.6,2.8 -2,3.1 0.8,1.7 -2.1,-0.2 z m -65.4,-67.3 -0.3,0.2 -0.2,-0.4 0.5,0 0,0 0.3,-1.3 2.3,3 -0.1,1.4 -1.6,-1.8 -1,-0.7 z m -43.4,79.5 -0.5,-0.5 0,0 0.5,0.2 0,0.3 0,0 z m 0,0 2.3,2 -2.1,0.9 -0.2,-2.9 0,0 z m 47.3,-77.4 -0.1,0.3 -0.3,-0.2 0.4,-0.1 0,0 z m -5.8,-8.9 0.1,0.1 -0.6,-0.1 0,-0.2 -0.3,-0.2 -3.7,0.5 -3.1,-2.4 -3,-1.3 -5.6,-1.7 -2.8,-0.1 -3.5,-0.9 0,-1.1 -3.5,0 0.4,2.5 -3.2,0 -0.7,0.9 -4.1,1.5 1.3,-1.3 -1.3,-0.4 0.9,-2.8 1.8,-0.9 -0.2,-0.9 -3.4,2.4 -0.7,1.7 -2.7,1.5 1.5,1.3 -1.9,2.4 -3.6,1.6 -2.1,2.7 -0.9,-0.5 -2.1,2.2 -1.9,0.1 -3.2,1.2 -1.6,1.4 -4.7,1.2 0.5,-1.3 2.4,-0.6 3.7,-2.2 2.2,0.3 -0.3,-1.2 2.8,-1.5 2.2,-2 1.3,-3.7 -3.7,1.3 -2.5,-1.8 -2.7,1.4 0.1,-2.6 -1.2,-1.8 -2.5,0.9 -2.6,-1.5 -1.1,1 -2.1,0.4 -1.5,-1 3.4,-0.3 2.1,-1.6 -3,-1.9 0.7,-1.5 3.1,-3.7 1.5,0.7 1.8,-1.2 3.1,-1 -1.2,-2.1 0.5,-1.6 -3.8,1.7 -5.8,-0.6 -3.6,-3.5 5.3,-2.3 3,-0.5 0.1,1.6 3.5,0.3 0.3,-3.3 -3.9,-0.3 -0.8,-1.6 -4.8,-2.4 0.8,-1.8 3.6,-0.2 2.4,-1.5 -0.1,-0.9 2.4,-2.4 2,0 2.3,-1.6 3.1,-0.1 2.3,-1.7 3.3,0.7 1.9,1.2 3.4,-0.3 0.7,1.4 5.3,-0.3 4,1.3 4.8,0.7 2.5,-0.5 4.4,1.6 0,29.2 3.5,0.6 3,2.4 0.4,1 2,-2 1.7,-0.6 1,1.5 3,2.5 3,5 3.4,1.8 0.1,1.7 0,0 -1.8,1.3 0.1,-2.4 -0.3,-0.1 -0.3,-0.6 -0.4,0.4 -0.6,-0.2 -0.5,-1.3 -2.1,-2 -2.2,-3.1 z m -38.1,3.7 -1.1,-1.2 3,-2 1.7,-1.6 0.4,2.8 -2.9,1.7 -3.7,3.4 z m -3.9,82.1 -3,-1 2.1,0.2 0.9,0.8 z m 47.8,-76.9 0.1,-0.2 0,0.2 -0.1,0 0,0 z",JP:"m 606.33,125.09 0,-0.1 0.6,0.4 -0.3,0.1 z m -15.5,25.1 -1.3,0.7 -2.1,-0.3 2.8,-3.2 3.7,-0.5 2.2,0.3 3,-4.4 -0.5,1.4 2.4,-0.6 0.4,-1.6 1.8,-0.6 1.1,-2.6 -0.4,-1.2 1.1,-3.2 0.7,1 1.3,-0.7 1.2,3.9 -1.8,2.3 -0.1,2.2 -0.9,2.4 0.5,1.2 -1.7,1.8 -0.3,-1.4 -3,1.8 -3.2,0.3 0.7,0.7 -1.8,1.4 -1.7,-0.6 0.6,-1.7 -3.2,0.3 -1.5,0.9 1.1,0.3 1.3,-1.2 0.9,0.5 -0.9,2.3 -0.9,-0.6 -2.2,1.7 -0.5,-1.6 z m -6.8,2 -0.4,-2 1.3,1.7 1.2,-1.1 2.4,0.6 0.6,1.3 -1.4,3.4 -2.1,0.2 -0.1,-3.3 z m 21.7,-19.1 -1,1 -0.6,-2.9 1.1,-1.6 1.9,0 0.9,-5.1 3.6,3.2 2.4,0.9 0.9,1.4 -2.6,0.5 -1.8,2.4 -2.7,-1.5 -2.9,0.7 z",SC:"m 442.43,226.39 0.2,0.3 -0.1,0.2 -0.5,-0.7 z",IN:"m 504.93,175.49 0.1,0 0,0.5 -0.2,-0.1 z m 0.1,-12.1 1.3,-0.3 0.2,1.4 1.7,1.2 4.4,-0.4 -0.9,-1.7 1.9,-0.4 3.9,-2.9 1.2,0.6 1.6,-0.7 2.3,2.4 -1.2,1.8 -3.2,1.8 0,1.5 -1.8,3.8 -1.5,-0.3 -0.2,3.3 -1.2,0.8 -0.8,-3.5 -1.1,1.5 -0.8,-1.3 2.5,-2.7 -0.8,-0.5 -3.2,0.1 -1,-1.7 -2.7,-1 -0.7,1.2 1.6,1.5 -1.7,1 1.4,0.7 -0.4,1.4 1,3 -1.6,1.1 -0.1,-1 -1.9,1 -1.6,3.2 -1.7,0.1 -2.6,3.2 -3.5,2.5 0.1,0.8 -3.9,1.8 -0.5,1.3 0.6,3.2 -0.9,2.6 0,3.3 -4.5,4.3 -1.9,-1.6 -1.3,-4.2 -2,-3.4 -0.9,-3.3 -1.7,-3 -1.5,-7.4 0.4,-1.3 -1,-3.6 -0.5,2.2 -2.1,1 -1.3,-0.4 -2.1,-2.1 1.8,-1.2 -2.9,-1.2 -0.9,-1.4 1.3,-0.8 2.1,0.2 2.1,-1.1 -3,-4.3 1.9,-2.5 2.7,0.2 2,-2.3 0.9,-1.8 2.2,-2.5 -0.1,-1.3 1.5,-0.9 -2.4,-2.2 -0.5,-2.5 1.1,-0.9 2.8,0.6 2.4,-1.3 1.4,-0.9 0.9,1.8 1.3,0.7 -0.3,1.7 1.4,1.7 -2.2,0.5 0.7,2.5 4.4,2.4 -1.3,0.9 -0.6,1.9 5.2,2.8 3.5,0.3 2.4,1.6 2.9,0.4 1.6,-0.7 z",FR:"m 228.83,121.39 -0.4,0.1 -0.1,-0.8 0.2,0.5 z m 125.6,9.9 -0.5,2.9 -0.8,-0.5 -0.1,-2.3 z m 301.9,127.2 -0.6,2.6 -3,-1.6 -1.7,-1.7 -0.4,-1.4 4.2,3.2 z m -187.7,60.9 2.7,0.3 -0.8,1.5 -2.5,0 z m -253.1,-136.4 0.1,-0.1 0,0.2 z m 135.1,-54.4 0,0.1 -0.1,0 0,0 -0.1,0.1 -2.4,1.4 -4.2,-1 -1.7,1.4 0.3,1.2 -1.3,0.2 -1,-0.3 -0.1,0 0,0 -0.5,-0.1 0.1,-0.3 -0.6,0.1 -2.8,-0.2 -3.4,-1.7 0.6,-0.4 0.9,-5.8 -1.8,-2.4 -1.6,-1.1 -3.6,-1.4 -0.1,-1.2 3.2,-0.8 0.7,0.9 2.5,-0.3 -1,-2.7 3.3,1.1 0.7,-1 2.7,-1.3 0,-1.7 1.8,-0.5 3.1,2.8 3.2,1.1 0.3,0.2 0.7,0 3.6,1.2 -1.2,3.4 -2.8,2.4 0.2,0.7 0.1,-0.2 0.2,0 0.8,-0.1 -0.1,0.7 0.5,0.5 -0.8,1.9 z m -118,79 0.4,-0.8 1.9,0.6 2.4,2.7 -2.5,3.5 -3.1,-0.3 1.2,-2.1 -0.9,-2.8 z",FM:"m 639.23,204.49 0.2,0.1 0,0.2 -0.2,0 z",CN:"m 544.43,180.89 1.7,-1.7 2.1,-0.3 0.6,0.9 -1.1,2 -1.4,1 -1.9,-0.7 z m -37.9,-16.4 -0.2,-1.4 -1.3,0.3 -3,-0.5 -1.1,0.4 -1.7,-0.9 -1.9,-1.9 -1.1,0.1 -2.8,-2.4 -2,0.3 -4.4,-2.4 -0.7,-2.5 2.2,-0.5 -1.4,-1.7 0.3,-1.7 -1.3,-0.7 -0.9,-1.8 -0.8,0.1 -1.1,-0.4 -1.6,-1.8 -2.7,-1.2 -0.3,-0.2 1,-0.3 -0.3,-2.8 -1.8,-0.1 -0.3,-2 0.6,-1.3 3,-1.3 0.3,0.7 2.1,-1.4 2.5,-0.3 0.5,-0.7 3.5,-1.9 1.2,-2.2 -1.4,-4.4 4.2,-1.2 1.4,-4 3.3,0.9 1.5,-0.5 0.5,-3.3 3,-1.7 0.3,-0.1 0.6,-0.1 0.3,1.4 2.1,1.5 2.4,0.8 1.4,2.6 -0.3,3.3 5,0.6 3.6,1.5 1.9,3.7 10.1,0.5 0.7,0.7 3.3,1 2.8,0 3,-1.2 5.2,-0.4 4.7,-2.9 -1,-1.7 1.1,-1.5 3.1,0.8 1.8,-1.5 2.1,-0.2 1.8,-2 3.2,-1 2.7,0.3 0.4,-0.8 -2.6,-2.6 -1.5,0 -0.1,0.1 -0.3,0.4 -3.2,0.2 -0.7,-1.1 2.3,-4.1 2,0.7 2.8,-1.2 -0.1,-0.9 1.8,-3.3 1.3,-1.1 -1.4,-1.7 1.5,-1.3 4.7,-0.8 4.7,1.5 4.5,8.8 2.5,0.3 2.8,2.7 0.4,1.6 2.7,-0.1 3.7,-1.7 0.7,1.7 -1.2,1.1 -0.5,2.4 -2,2.8 -0.5,-0.6 -1.1,0.2 -2,0.9 0.6,1.9 -0.5,2.8 -0.9,0.7 -1.3,-1 -0.3,1.2 -3.2,1.1 0.2,1.4 -2.9,-0.7 -1.2,1.8 -3.1,1.8 -3.6,1.5 -2.6,1.5 0.3,-1.4 1.9,-2.5 -2.1,-1 -1.4,1.7 -1.8,0.6 -1,1.6 -2.4,0.2 0.7,2.1 1.4,0 1.2,2.3 2.4,-1.6 1.7,0.9 2.1,0.1 -3.7,2 -3,3.1 2,1.6 1.2,3.5 1.8,1.5 0.3,2.2 -1.9,0.8 2.7,1.5 -1.5,1.1 0.1,2 -1.3,0.7 -2.9,4.1 0.6,1.2 -1.8,0.6 -4.5,4.4 -3.3,0.2 -1.1,1.2 -1.1,-1.6 -0.1,1.8 -5.5,1.5 -1.5,2.2 -0.3,-2.4 -2.5,-0.8 -0.9,0.8 -2.7,-1.8 0.4,-0.8 -2.8,-1.2 -2.6,1.7 -2.8,-0.5 -0.7,0.7 -1.2,0.3 0.4,2.3 -1,-0.9 -1.9,0.3 -0.5,-1.3 -1.5,-0.2 0.7,-1.8 -1.2,-0.2 -0.6,-1.8 -1.8,0.4 0.1,-2.4 1.9,-1.7 0,-3.5 -2.2,-1.9 -0.4,0.6 -2.3,-2.4 -1.6,0.7 -1.2,-0.6 -3.9,2.9 -1.9,0.4 -2.7,-1.3 z",PT:"m 322.13,143.49 -3.1,0.4 0.5,-2.6 -1.4,-1.1 1.5,-4.7 -0.1,-2.7 4.2,0.1 0.7,0.8 -1.4,1.3 -0.1,4.5 z",SW:"m 185.73,187.29 0,0 0,0 z",SH:"m 561.73,188.69 0,0 0,0 0,0 z",BR:"m 241.13,217.99 2.5,0.3 -0.8,2.2 -3.4,0.6 -0.4,-2.2 z m -7.3,66.1 0.8,-1.6 -0.1,-0.3 -4.7,-3.8 -0.8,0.5 -1.5,-2.1 -1.5,0.2 3.5,-4.1 3.7,-2.2 -0.1,-3.1 -1.4,-0.1 0.1,-0.1 -0.1,-0.2 0.7,-1.5 0,-1.3 -2.2,-0.2 -0.4,-2.6 -1.5,-1.1 -3,-0.1 0.3,-2.2 -0.7,-1.6 1.2,-3.9 -1.6,-1.8 -0.2,-1.8 -3.2,-0.1 -0.6,-4.8 -2.6,-0.5 -2.4,-1.7 -2.5,-0.4 -1.9,-2.5 -0.1,-2.9 -2.3,0.5 -3.2,2 -2.4,0 -2.1,0.1 0.3,-3 -1.3,0.9 -1.9,0.2 -3.5,-4.8 1.7,-2.2 0.4,-2.4 4.1,-1.8 1.5,0.1 1,-5.3 -1.2,-2.4 0.4,-3.6 3.3,0 1.5,-0.7 0.9,1.6 2.6,1.1 2.7,-1.7 1.5,-1.6 -1.3,-0.1 -1.2,-2.9 5.9,-0.5 1.6,-1.8 1.4,0.2 0.9,2.2 -0.9,2.3 0.5,1.6 1.8,1.3 3.2,-1.6 1.2,0.2 1,-1.1 2.6,0.3 3.1,0.3 2.5,-3.5 1.2,0.3 0.7,3.2 1.5,1 0.2,3.1 -3,0.9 1.4,2.6 2.7,0.3 2.9,-2.7 5.2,1.5 0.7,2.6 1.8,-0.8 4,1.2 3.1,-0.1 2.9,1.6 2.5,2.3 3.1,0.4 1.5,3.9 -1,3.9 -3.1,3 -2.2,3.6 -1.7,1.2 0.2,5.1 -0.6,3.5 -0.9,1.1 -0.1,2.3 -2.7,4.2 0.2,0.9 -2,2 -4.4,0 -5,2.7 -1.7,1.3 -1.5,2.3 0.4,2.7 -0.7,2.3 -2,2 -1,2.1 -1.7,-0.6 -0.4,1.9 -1.5,1.4 -0.8,2.9 -1.4,1.3 -0.3,-0.2 z",KI:"m 34.93,213.89 0.2,0.4 0.2,0.2 -0.4,-0.1 z",PH:"m 574.43,195.49 1.3,-0.2 -1.5,-1.5 1.7,-0.1 1.1,2.8 -1.3,-0.2 -0.5,1.8 z m -8.8,0.5 0.2,-1.8 0.9,0.5 -1.1,1.3 z m -0.4,0.4 0,0 0.4,-0.4 0,0 0,0 -0.4,0.4 z m 4.6,1.5 0.1,-3.5 2.2,1.5 -0.4,1.1 2.1,-0.8 -0.1,1.8 -1.9,2.5 -1.2,-1.5 0.4,-1.7 z m 4.4,5.8 -1.6,-0.8 -1.8,0.2 -1,2.5 0.2,-2.6 2.5,-1.9 1,1.1 1.7,-1.7 1.4,0.1 0,-2 1.6,2.3 0.5,3 -0.7,1 -0.9,-1.1 -0.8,1.3 0.1,2 -2.2,-1.1 z m 0.3,-12.1 -0.7,3.8 -1.2,-1 -0.5,-2.4 -1.2,-1 0.1,1.6 -1.7,-1.6 -1,1.1 1,0.9 -0.9,1.4 -1.6,-2.5 1.2,-0.1 -1.8,-2.4 -0.5,-3 1.1,0.4 -0.1,-2.8 1.6,-2.9 -0.2,0.8 2.3,0.8 0.5,2.2 -0.7,1.7 -1.2,0.6 0.3,3.4 1.5,-0.3 z m -9.3,4.8 0.3,1.3 -4.6,3.9 4.3,-5.2 z",MX:"m 170.23,178.09 -0.5,0.6 0,-0.3 0.1,-0.3 z m -38.2,-2.3 0.3,0.1 0.6,0.8 -0.5,-0.4 z m -10.1,-5.6 0.3,0 0.2,0.3 0,0.1 z m -0.4,-1 -0.1,0.4 -0.1,0 0.1,-0.4 z m -5.8,-6.3 -0.1,0.1 -0.2,-0.2 0.3,-0.5 z m -5.8,-1.7 -0.1,0 -0.1,-0.5 0.2,0.2 z m 10.9,0.4 0.2,-1 0.5,0.4 -0.3,0.5 z m -1.8,-1.7 0.6,0.5 0.1,0.6 -0.9,-0.8 z m 23.5,-0.1 -0.1,0.2 0.4,0 1.5,2.5 1.5,2.5 0.4,0.5 0.2,0.5 1.8,1 2.1,0.2 -1,3 -0.4,4 1.4,3.7 2.5,3.8 2.6,1.2 5,-1 1.8,-1 1.1,-3.7 4.2,-1.2 2.7,0.7 -1.3,2.1 -0.8,3.9 -0.9,-0.5 -1.1,1.2 -0.5,0.1 -3.5,0 -0.9,1.1 2,1.8 -2.6,0.6 -0.9,2.9 -3.2,-3 -1.8,-0.7 -3.3,1.5 -4.2,-1.7 -4.4,-1.4 -1.4,-1.2 -3.3,-0.9 -2.8,-2 -1.4,-2.1 1,-2.1 -1.2,-2.3 -4.8,-5.3 -2.2,-1.1 0,-1.9 -2.1,-1.3 -3,-3.4 -1.9,-3.8 0.1,-0.7 -2.9,-1.3 -0.2,3.3 2,1.9 6,9 -0.2,1.3 1.6,0.2 0.6,1.9 -0.8,0.7 -0.8,-1.4 -3.5,-2.6 -0.2,-2.4 -2.6,-1.4 -2.8,-2.3 1.7,-0.2 0.2,-1.1 -3.1,-2.7 -0.7,-2.2 -2.1,-3.6 4.6,-0.4 -0.2,0.5 7.2,2.4 5.5,0 0,-0.9 3.2,0 3.2,2.6 0.7,1.8 2.6,1.4 1.6,-1.9 z m 7,8.5 -0.4,1 0.2,0.8 0.5,-1.8 z",ES:"m 306.83,163.39 -2,-0.6 -1.3,0.1 1.9,-1 z m 23.8,-15.8 0.1,0.1 -0.1,0 0,-0.1 z m -4.7,-1.3 0.2,0.1 0,0.1 -0.1,-0.1 z m 0.1,-0.5 -1.5,-0.3 -0.7,-1.5 -1.7,-0.5 0.8,-4 0.1,-4.5 1.4,-1.3 -0.7,-0.8 -4.2,-0.1 -0.9,-2.7 2.5,-1.4 1.3,0.4 7,0.1 3.4,0.3 3.4,1.7 2.8,0.2 0.2,0.4 0.3,-0.2 0.5,0.1 0,0 0,-0.1 0.1,0.1 0,0 1,0.3 1.3,-0.2 0.1,1 -2.3,1.6 -2,0.5 -2.5,3.5 1,1.6 -1.4,1 -0.4,1.6 -1.8,0.6 -0.8,1.2 -4.5,0.2 -1.7,1.2 z",BU:"m 183.13,187.49 0,0 0,0 0,0 z",MV:"m 476.83,206.89 0.5,0.7 -0.6,0 0.2,-0.4 z",SP:"m 558.13,197.09 0,0 -0.1,0 0.1,0 z",GB:"m 330.13,90.09 0.1,0.2 -0.2,0.1 -0.3,-0.3 z m 0.2,-0.8 0,0.5 0.3,0.1 -0.8,-0.1 z m 0.5,-0.2 -0.4,-0.2 0.8,0.3 -0.2,0.2 z m 3.5,-3.1 -0.5,1.4 -0.1,-1 -0.6,-0.3 z m 0.2,-0.9 0.3,0.1 -0.8,0.2 0.2,-0.5 z m 0.3,-0.4 -0.1,0.3 -0.3,0 0.1,-0.4 z m -154.3,95.9 0.1,-0.1 0.4,0.1 -0.3,0.1 z m 18.7,-4.9 -0.4,0 -0.1,-0.2 0.3,0.1 z m -1,-0.2 -0.1,0.2 -0.3,0 0.3,-0.1 z m 124.5,-81.9 0,-1.5 1.6,-0.9 -0.2,1.3 z m -100.7,234.1 1.4,-2.7 2,0.4 0.3,0.8 z m 179.2,-179.3 -0.1,0 -0.1,0 -0.1,-0.1 0,0 0.1,0.1 -0.2,0 0,-0.1 0,0 0,-0.1 0.1,0 0.3,0 0,0 -0.2,0 z m -0.3,-0.1 0,0 0,0 z m -74.8,-2.5 -0.1,0.1 0,-0.1 z m 73.4,3.3 -0.2,0 -0.3,0 0.1,-0.1 z m -77.1,-48.5 1.8,-0.6 1.5,1.7 -1.4,1.4 -2,0 -1.7,-0.9 z m 2.3,-6.2 2,-3.6 3.8,0 -2,2 1.1,0.6 3,0.1 0.3,0.6 -2.7,3.8 3,1.3 0.8,2.5 2.1,1.4 0.8,2.7 -0.6,0.5 3.2,0.3 -0.2,1.8 -1.7,1.5 1.3,0.9 -2.1,1 -7.1,0.3 -3.8,1 2.4,-2.5 2.1,0 -2.5,-1.5 -1.8,-0.2 2.1,-1 0.1,-2.5 1.9,-0.4 0.6,-2.1 -1.5,-0.9 0.5,-0.9 -2,-0.1 0.1,1.3 -1.4,-1.1 0.9,-1.8 -2,-2.4 -1.7,-0.7 1.5,-0.4 -1.9,-1.8 z",GR:"m 386.63,147.99 -3,0.5 -2.3,-0.8 1.3,-0.6 z m 2.5,-2.3 1.2,-0.6 -0.3,0.8 -0.5,0.5 z m -0.8,-0.9 -0.4,-0.2 0.4,-0.4 -0.1,0.3 z m -0.5,-1 0.2,0.1 -0.2,0.2 0.1,-0.2 z m -3.3,0.2 0.7,-0.5 0.1,0.4 -0.4,0.8 z m 2.2,-1.4 -0.5,0.2 -0.2,-0.1 0.2,-0.1 z m 1.2,-0.3 0.2,0.1 -0.5,0.1 -0.4,-0.2 z m -1.7,-1.8 0.2,0.6 -0.4,-0.1 -0.2,-0.5 z m -1.2,-3.3 -0.4,0.1 0.4,-1.1 0.4,0 z m -8.5,-1.5 0.2,-0.1 -0.2,0.1 -0.1,-0.1 0,-0.1 0.1,-0.1 0.2,0 1.5,-0.6 2,-0.5 3,-0.6 1.4,0.8 2.1,-1.1 0.6,0.7 -1.2,1.5 -1.9,-0.6 -2.5,0.8 1.3,1.1 -3.4,-0.7 -0.1,1 5.4,5.8 -2.8,-1.9 0.3,1.3 -1.7,-0.6 -0.9,0.9 0.9,2.5 -2.5,-0.6 -1,-3.3 -2.6,-3.3 0.7,-0.3 z m 10.4,3.3 0.3,0.4 -0.3,0.2 -1.2,-0.5 1.1,-0.3 0,0 z",AS:"m 9.63,245.09 -0.1,0 -0.1,0.2 -0.2,-0.1 z",DK:"m 357.83,100.89 1,0.8 -0.6,0 -0.8,-0.3 z m -1.7,0.1 0.3,0.1 -0.2,0.1 -0.4,-0.4 z m 4.2,-0.3 -0.7,0.4 0,-0.3 0.3,-0.1 z m -5.3,-0.2 0.5,0.4 -0.1,0.2 -0.4,-0.1 z m 2,0.4 -0.2,0.5 -0.2,-0.2 0.7,-0.9 z m 3.4,-2 -1.2,2.7 -1.7,-2.6 2.2,-1.3 z m -6.1,2.4 -1.1,-0.3 -0.3,0 -1.1,-4.4 3.2,-1.5 1.6,-1.8 -0.7,2.3 1.4,1.3 -0.9,0.9 0.6,2.3 -2.4,-0.5 z",GL:"m 234.93,60.89 0.2,0.2 -0.5,0.1 -0.2,-0.2 z m 1.5,-0.8 -1.8,0.4 0.2,-0.2 0.7,-0.2 z m -4.8,-5.7 -0.5,0 -0.2,-0.4 0.5,0.1 z m 2.2,-2.3 -0.9,-0.3 0.7,-0.7 0.5,0.7 z m -2.9,-4.6 -0.9,0.6 -0.2,-0.3 1.1,-0.5 z m -1.2,-1.6 -0.4,0.4 -0.7,-0.2 0.5,-0.2 z m 1.3,-0.1 -1.1,0.9 -0.1,-0.8 0.7,-0.2 z m -1.8,-2.8 0.9,0.5 -0.3,0 -1,-0.5 z m -0.7,-1.2 0.6,0.1 -1.2,0.1 0,-0.4 z m -0.4,-2.3 -1.1,0 -0.9,0 1.6,-0.3 z m -25.1,-8 -0.8,0 0.1,-0.2 0.8,-0.1 z m -5,-3.6 1.6,0.3 -0.6,0.2 -1.6,-0.3 z m 2.5,-0.2 1.3,0.4 -1.6,0 -0.4,-0.3 z m 102.6,-10.6 -2.2,1.3 -1.8,-0.7 3.2,-1.1 z m -94.9,-3 0.6,0.2 -0.4,0.1 -0.2,-0.1 z m 30,-6 -1.7,-0.1 -2.1,-0.5 0.8,-1 z m -4.8,50.1 0.6,-0.6 -3,-0.9 0.3,-1.7 3,0 2.4,1.4 -0.3,1.1 z m 1.4,12.1 -0.3,0 0,-0.2 0,-0.1 -0.2,-0.1 -0.7,-2.6 2.6,-1.4 -3.2,-0.5 1.5,-3.6 3.8,-1.2 0.7,-3.9 -1.2,-0.9 -4.6,-1.4 -1.4,-1.2 4.1,0.1 3.4,1.3 -1.5,-2.1 -2,-1.1 -0.3,0.2 -0.9,-0.1 0.3,-0.6 0.2,0 -0.3,-0.2 2.3,-0.6 -1.9,-0.2 -0.8,0.5 -0.5,-0.5 0.8,0 0.2,0 -2.2,-0.2 0.3,1 -2.6,0.2 -1.2,-1.1 0.6,-0.6 -0.3,-0.2 0.4,-0.1 0.1,0.1 1.2,-1.2 0.5,-2.1 -1,-0.4 0.1,-0.1 -0.8,-0.3 -0.1,0 -0.2,-0.1 0.8,-1.2 -1.5,-0.9 0.7,-0.9 -1.4,-0.7 0.5,-1.1 -1.8,-2.2 -2.1,-0.5 -0.9,-1.2 0.4,-1.4 -4.7,-1.7 -5,-0.8 -1,0.9 -4.2,-0.5 -0.5,1.3 -3.7,-0.5 -2.4,-1.3 3.2,-1.2 -4.6,-0.4 -1.8,-0.8 0.8,-0.8 4.9,-0.8 3,0.1 1,-1 -5.7,0.6 -0.5,-0.9 -3.5,-0.4 -3,-1.6 0.6,-1.5 6.2,-1.2 2.5,-1.2 4,-0.1 2.1,-1.7 -0.4,-2.3 -3.8,-0.1 -0.8,-1.3 4.5,-1.9 0.6,-1 3.5,-1 2.7,0.7 1.5,-2 -1.3,-1.1 5.5,-1.7 7.9,-1.2 1.7,1.2 -0.4,2.6 1.6,-2.3 3,0.7 3.7,-0.2 -2.2,-1 -1,-1.7 4,0.3 5.8,1.9 1.6,1.2 1.8,-0.3 -1.4,-0.9 0.4,-0.3 -4.1,-1.2 -2.8,-2 1.3,0.7 2.6,-0.2 3.6,1.3 -0.6,1.4 2,-1.4 -3.9,-1.8 9.1,0.1 -8.9,-0.5 -2.3,-0.5 1.5,-0.6 1.8,0.5 0.9,-0.9 4.8,-0.3 4.4,0.2 1.9,0.1 0.3,-1.2 3.7,-0.5 8.2,-0.5 3.5,0.2 9.6,1.4 -0.8,0.5 -9,0.3 -8,1.1 5.9,-0.4 3.4,-0.6 5.2,0.3 4.1,-0.5 1.4,1.3 3.5,0.4 2.5,0.9 -2.1,1.3 -14.2,1 -5.6,1.3 2.1,0.1 7.5,-1.1 6,0.4 -0.1,0.9 -3.1,0.8 -0.1,0.9 5,-1.5 1.1,-1.3 3.4,-0.3 0.3,2.6 -3.6,2.7 2.2,-0.4 6.4,-3.7 3,1.2 2.4,-1.2 3.6,0.1 3.6,0.8 1.3,0.8 -3.8,2 -2.3,0.1 0.5,1 -2.1,0.6 -3.2,-0.1 2.4,1.2 -1.2,0.8 -4.5,0.5 -3,0.9 2.2,0.8 -0.7,1.4 1.2,1 -1.8,0.6 0.9,1.3 -2,-0.6 -1.6,2.5 -0.2,1.6 4.2,-0.2 -0.3,0.8 2.9,0.4 -2.9,0.4 -2.8,-0.5 0.7,1.1 4.1,0.7 -0.8,2.8 0.4,2.3 -1.1,-2.1 0.7,-1.2 -3.4,-0.7 -2.3,1.2 0,1.6 3.4,-0.1 1.1,3.4 3.9,1.4 -2.1,0.2 -1.8,2.7 -3.6,0.7 1.3,2.4 -1.9,-0.1 -1.4,0.8 -3.3,-1.2 -4.1,1.3 1.1,0.3 -0.2,-0.1 2.3,-0.9 2.4,1.3 2.5,0.6 0.1,0.8 -2,-0.3 1.8,1 -1.3,0.1 0.9,1.2 -4.2,-1.7 -0.2,-0.8 1.5,0 -1.6,-0.3 -1.2,-0.5 -1,0.5 2.2,1.8 3.9,1.8 -1.1,0.7 2.4,1.6 0.7,2.5 -3.6,0.4 -1.8,-2.3 -3,-1.7 0.5,1.4 -4.5,1 -0.6,1.8 1.8,-0.2 -1.5,0 0.8,-1.1 4.5,-1.1 0,1.4 -1.7,0.7 -1.2,0 -2,1.3 1.1,0.3 3.8,-1.4 3.4,1 2.2,0 -1.6,1.6 -1.7,0.4 -4.1,2.8 -3.4,0.5 -2.6,1.2 -5,0.5 -2.6,1.6 0.2,0.8 -2.7,3 -3.3,1.7 -2.8,0.8 -0.3,-2.1 -1,1.8 -3.1,0.7 1.3,0.4 -1.5,1 -1.1,2 0.6,2 -3.1,3.4 -0.9,5 -1.6,1.2 0.4,1.5 -2.1,0.2 -2,-0.9 -0.2,-1.3 -4.7,-0.6 -2.1,-1.6 -0.5,-2.2 -1.9,-1 0.3,-1.4 -2.4,-1.6 0.2,-2.8 -1.5,0.8 0.1,-2.6 z",GU:"m 613.53,191.99 -0.2,0.4 -0.1,-0.3 0.5,-0.5 z",MP:"m 615.13,188.99 0.1,-0.4 0.3,-0.1 -0.2,0.3 z",PR:"m 211.33,182.59 -1.8,0.7 -1.7,0 0,-1.2 z",VI:"m 212.33,183.59 0.4,0 -0.7,0.2 0.1,-0.2 z",CA:"m 175.63,27.69 -3.1,-0.2 0.9,-2.2 -2.3,-0.5 -2.3,0.3 0,-1.4 1.7,-1.5 2.6,-0.5 3.9,0.5 2.7,-0.3 -4.8,-0.3 -1.4,-2.9 -2.7,-0.6 0,-2.5 5.1,0.3 3.1,1.7 0.9,1.2 0.4,-1.6 -3.3,-1.5 9.9,-1.3 -3.7,-0.1 6.4,-1.3 -5.8,0.4 -6.3,1.3 -1.8,-1 -1,1.1 -4.5,-0.4 1.2,-1.8 -2.2,1.7 -4.1,-1.2 5.2,-0.5 0.3,-0.6 -6.3,0.5 -1,-0.7 3.7,-1.9 -4,1 1.8,-1.2 -4.6,0 1.8,-1 5.7,-1.2 6.3,0.6 -3.8,-0.7 2.7,-0.7 -0.8,-0.9 5.3,0.8 5.7,1.6 -5.2,-2 1.2,-1.4 2.9,0.6 -1.9,-1.1 3.2,0.1 -0.5,-0.8 5.8,0.3 1.9,-0.9 3.7,0.3 0.7,0.6 1.7,-1 6.3,-0.2 0.1,0.6 6.2,0.5 -4.3,1.2 2.3,-0.1 5.2,-1.2 3.4,1.9 2.6,0.1 0.5,1.4 -5.9,2.2 -1.9,-0.2 -2.4,1.2 -6.6,1.6 10.6,-1.8 -7.2,3.6 -4.5,2.7 -1.6,1.8 -3.6,-0.2 0.4,1.1 -5.3,0.8 -2.8,-0.5 0.1,0.8 5.5,0.2 0,0.8 -3.2,-0.4 -3.4,0.3 4.1,0.3 2.2,0.9 -0.3,0.8 -3.3,0.2 2.7,0.7 -0.9,1.1 -3.9,1.2 -1.3,1.8 -4.8,0.2 3.4,1 -0.7,0.7 2.8,-0.2 0.3,1.2 -2.9,1.4 0.8,1.8 -1.7,-0.1 0.8,-1.6 -3.3,0.7 0.5,-1.2 -6,-0.2 -0.9,0.6 -5.8,-0.5 -5.1,-0.2 -0.9,-0.9 4.3,-1.7 1.2,-0.9 -1,-1.8 1.9,-0.4 2.4,0.8 0.3,1.1 z m 0,0 0,0 0,0 0,0 0,0 0,0 1,-0.1 1.2,-2.1 -2.2,2.2 0,0 0,0 0,0 z m 9.3,102.5 0,0.2 0.3,0.2 -4.7,0.7 -2.4,1.4 -0.9,-0.7 1.2,0 -0.4,-0.5 0.3,-0.2 0.2,-0.9 1.3,-0.8 0.8,-4.4 2.3,1.8 0.7,-0.7 -1.9,-2.7 -6.5,-1 0,-0.5 -0.7,0.2 -0.7,-3.5 -1.9,-0.2 -1.1,-1.9 -3.1,-0.6 -2.9,2.5 -3.6,-0.1 -2.3,-1.2 -4.8,-1.2 -52.8,0 -0.4,-0.2 -0.2,0.2 -0.1,0 -0.4,-0.9 -2.7,-1.5 0.2,-0.7 -0.4,-0.1 0,0.1 0.3,0.2 -0.3,0.1 -0.2,-0.4 -0.5,-0.1 0,-0.1 -0.2,-0.2 -0.1,0.2 -0.6,-0.1 -0.1,0 -0.6,-0.1 0.5,0.1 0,0 -0.3,0 0.3,0.1 0.1,0 0.4,0.1 0.4,0.4 -0.1,0.1 0.3,0.3 0,0 1.2,1.6 2,1.6 -0.1,-0.5 0.5,0.3 0.5,0 -0.8,0.2 0.3,0.3 -0.5,0.7 -2.1,-0.6 -3.7,-2.1 -0.1,-0.5 0.1,-0.1 -0.3,-0.5 0,0 -0.1,-0.2 -1.9,-0.4 -1.2,-1.7 1,-0.3 2.6,0.8 0.1,-0.1 -0.2,-0.1 0.6,0 0.2,-0.2 -0.2,-0.2 -0.6,0.4 -2.3,-1.3 -0.3,-2.3 -0.3,0.8 -0.3,-0.3 0.2,-0.4 0.4,-0.1 0,0 0,-0.1 0.1,-0.2 -0.2,0.1 0,-0.1 0.2,0 -0.1,-0.3 -0.1,0.1 -0.2,-1.3 -1,-0.9 -0.5,1.2 -0.6,-0.9 0.1,-0.3 -0.3,0 0,-0.3 0.3,-0.2 0,0.4 0.1,-0.4 0.7,0.3 -0.2,-0.2 0.4,-2 -0.8,1 0.4,-0.1 -0.1,0.3 -0.4,0.2 -0.1,-0.2 -0.3,0.5 -2.2,-2.4 0.9,-1.9 0,-0.7 -0.1,-1.7 -3.4,-1.8 -3,-5 -3,-2.5 -1,-1.5 -1.7,0.6 -2,2 -0.4,-1 -3,-2.4 -3.5,-0.6 0,-29.2 3.6,0.5 3.6,1.9 2.6,0.1 0.1,-1.3 3.9,-0.7 1.1,0.3 5.4,-2.6 1.7,0.5 -4.7,1.7 -1.7,1.6 3.1,-1.8 0.6,1.1 1.1,-1.4 6.2,-2 0.9,1.8 2.3,1.4 1.8,-2.7 0.2,2.6 2.4,-0.5 0.4,-1.2 2.9,0.3 2.2,1.2 4.3,1.3 3.9,0.7 0.1,-0.6 3.4,1.5 0.2,1 -1.7,-0.1 -1.1,1.1 3.2,0.8 4.4,-0.1 2.3,-0.8 2.3,0.7 0.6,1.3 1.6,0.3 0.8,2.4 0.7,-1.9 -1.5,-1.9 4.5,-3.1 -3.8,1.6 -2.3,-0.4 1.1,-1.1 4.7,-0.9 0.9,1.8 1.6,1 2.2,0.1 3.5,1.1 1.6,-0.6 4.5,0.2 1.5,0.7 -2.2,-2.6 2.8,-0.3 0.8,1.4 1.8,-0.9 -1.1,2.7 2.2,1.9 -0.3,-3.8 1.2,0.1 2.4,-2.7 -2,0.3 0.6,-2.3 -3.6,-1.4 -0.7,-1.7 0.2,-3.3 2.4,-2.3 1.1,-0.2 -1,0.1 0,-1.8 -1.1,-1.2 0,-3.1 0.9,-1.4 3,-0.6 2.7,0.7 4,0.3 -3.2,3.9 -1,0.5 -3.4,-0.2 1.3,1.1 -1.2,1.6 -0.8,0.1 2.5,1.9 0.3,2.1 2.9,2.5 -2.5,1.5 2,0.7 2.6,2.1 0.3,2.1 1.2,-2.7 1.4,-0.6 1.9,1.7 -0.9,1.5 1.7,3.8 3.1,-3.1 0.5,-2.2 1.8,-1 -1.5,-0.8 0,-1.7 2.2,-0.3 0.9,0.2 0,-0.1 0.6,0.1 -0.1,0.1 1.9,0.4 2.4,1.5 -0.9,1 1.1,0.9 -2.7,0.6 2.7,3.3 -0.5,1.5 -3.5,2.1 -2,-2 1.3,2.5 -3,-0.3 -0.4,-0.9 -2.5,0.4 1.8,0.9 -2.9,2.6 -1.1,0 -3.3,-1.9 1.2,1.9 3.8,0.3 -1.8,3.2 -2,0.8 -1.8,-0.7 -0.4,1.6 -1.5,0.2 0,0.1 0.6,0.2 -0.1,0.1 -0.1,-0.2 -0.4,-0.1 0.6,1.5 -3.9,1.7 -3.2,4.8 -0.9,2.6 0.8,3.5 2.4,-0.1 1.4,3.6 -0.5,1.4 3.2,-0.9 4.1,1.1 2.5,2.2 5.7,2.2 4.4,0.5 0.3,3.3 -0.3,2.2 4.9,4.7 2.4,-3.1 -0.9,-1.8 -0.3,-2.9 -1.2,-1.3 3.8,-1.7 2.1,-2 0.3,-2.1 -1.1,-3.2 -2.8,-1.8 2.4,-3.4 -1.7,-3 1.2,-1.8 -1.2,-2.4 1.3,-0.9 5.2,1.3 2.1,-1 3.8,2.4 -0.2,0.9 4.6,1.7 -0.8,0.7 0.7,4.7 1.3,-0.1 2.1,2.3 3.6,-2.1 0.5,-2.5 1.3,-1.8 0.9,0.4 0.4,1.4 0.2,-0.4 0.2,0.3 -0.3,0.2 -0.1,-0.1 0.2,1 1.3,0.3 0.9,1.9 3,4.2 -1.1,1.3 4.1,4 4.8,1.7 -1.4,0.7 1.7,1.3 2.5,0.7 0.4,3.2 -2.6,2 -3.1,0.6 -2.4,2.2 -3.6,0.6 -1.2,-0.5 -7.8,0 -1.8,2.4 -3.2,1.4 -1.7,2.4 -2.7,2.5 -3.2,1.3 -3.3,2.9 -1,0.3 -1,0.9 -6.1,1.4 -1.6,1.3 1.4,0.1 0,0.2 z m -90.5,-17.9 0,0 0,0 z m 5.8,2.8 -0.1,-0.3 -0.2,0.1 0,0.1 z m -7.8,-7.2 0.3,-0.4 -1,0.4 -0.3,0.8 z m 57.5,-44.6 -0.4,0.1 0.1,0.3 0.3,-0.2 z m -54.8,52.4 0.3,0.1 0,-0.2 -0.1,-0.1 z m -0.2,-0.3 -0.1,-0.2 -0.2,0 0,0.2 z m 117.6,-39.5 0,2.5 -1.1,0.4 -2.5,-0.6 -1.9,-1.4 -0.2,1.1 3.2,2.7 -0.6,1 -4.4,-1.2 -2,-1.2 -4,-1.6 0.3,-1.2 -2.1,-0.8 -1.6,-2.4 -2.3,0.8 -2.2,-0.8 -1.7,1.3 -2.2,-0.5 -0.5,-1.8 1.3,-1.6 3.2,0.8 3,-1 1.4,0.2 -1.9,-2.2 2.9,-1.9 1.5,-1.7 -1.6,-3.2 -1.6,-0.3 -3.1,-2.3 -2.2,1.2 0,-1.2 1.9,-0.7 -4,-2 0,-1.2 -2.4,-0.5 0.3,1.5 -5.7,-0.9 -0.7,1.2 -7.9,-1.1 -4.6,-1.2 -1.7,-2.2 4.2,0.5 -1.4,-0.9 -3.3,-0.4 -0.5,-2.1 1,-3.2 1.2,-1.8 2.2,-1.6 2.1,-0.5 3,0.2 -3,3.6 0.5,3 3,2.6 -1.2,-3.6 1.9,0.6 -2.3,-1.9 1,-2.2 4.5,-1.9 2.5,0.1 2.4,3.6 -1.1,2.8 2,-1.9 1.7,1.7 0.9,-2 1.6,-0.6 4.6,0.9 -0.2,1.3 2,0.2 0,1.2 2.3,1.7 1.1,-1.4 2.6,1.4 -1.8,0.6 -0.1,0.4 0.6,-0.3 0.6,0.4 1.3,-0.6 -0.8,1.9 2.5,-1.1 3,1.1 2.4,2.9 -1.4,0.2 0.2,0.1 -0.4,0.3 0.4,0.1 0.4,-0.3 0.4,0.2 -0.5,0.2 0.7,0.1 0.8,1.1 -1.8,0.4 -0.7,0.8 -0.2,0 -0.4,-0.1 0.5,0.2 -0.4,0.5 2.8,0.6 0.6,0.8 0.2,-0.2 0.4,0 0,0.3 -0.6,-0.1 0.6,0.8 2.5,-0.4 2,2.5 0.2,0 0.4,-0.1 0.5,0.1 -0.1,0 0.8,0.1 -0.7,1.2 2.6,-0.4 1,2.1 -2.1,0.5 -0.1,1.7 -2,0.7 0.2,1.7 -1.9,-0.6 -4.4,-4.5 -2,0.2 1.5,1.5 -1.6,1.4 4.5,2.5 -0.2,0.8 2,1.6 0,0.2 0,0 0.1,0.4 0.3,0.3 z m -14.4,-23.2 -0.1,0.3 0.6,-0.2 -0.3,0.1 z m 8,4.1 -1.4,0.1 0.8,0.2 z m -5.8,64.5 -0.2,0 0.5,-0.4 0,0.2 z m -100.9,-5.5 0.3,0.4 0.4,0.2 -0.3,-0.1 z m 114.1,-2 4.3,1.4 -0.7,0.7 -2.6,-0.8 z m -116.5,-0.2 -0.2,-0.3 0.2,-0.1 0.2,0.3 z m -5.6,-3.7 -0.4,0 -0.1,-0.4 0.3,-0.2 z m 93.5,-1.6 -0.5,0.3 -0.6,0.2 0,-0.3 z m -99.5,0 -0.1,0.1 -0.1,0.2 0,-0.4 z m 5.4,0.2 -0.2,-0.2 0.2,-0.2 0.1,0 z m -0.1,-0.5 -0.1,0.2 -0.4,0 0.2,-0.2 z m -0.8,-0.7 0.1,0.4 -0.1,0.2 -0.2,-0.5 z m 0.3,-0.3 0.1,0.3 -0.1,0.2 -0.4,-0.4 z m -6,-0.3 0.4,0 0,0.2 -0.3,0.1 z m 6.3,0.9 -0.2,-0.6 0.2,-0.5 0.2,0.8 z m -1.8,-1.1 0.7,0.5 0,0.3 -0.3,-0.2 z m 2,0.5 0,-0.2 -0.1,-0.2 0.3,0 z m -2.5,-1.2 0.1,0.3 -0.2,0 -0.2,-0.4 z m 0.3,-0.2 0.2,0.4 -0.2,0 -0.2,-0.5 z m 91.9,-0.2 0.6,0.1 0.8,1.3 -2.6,-0.9 z m 3,0.2 0.1,0.1 -0.3,0.1 0.1,-0.3 z m -94,-0.5 -0.3,0.1 -0.1,-0.1 0.3,-0.5 z m -3.1,-0.3 0.1,-0.5 1.2,0.7 -0.1,0.6 z m 0.9,-0.4 -0.5,0 -0.1,-0.2 0.4,-0.2 z m 0.6,-0.1 0.9,0.8 -0.5,0.3 -1.4,-1.6 z m -1.7,-1.2 0.6,0.1 0.2,0.3 -0.7,0.4 z m -0.8,-1.3 0.7,0 0.1,0.6 -0.6,-0.2 z m 99.2,-0.8 -0.6,0.2 -0.1,-0.1 1.2,-0.2 z m -98,0.4 0,-0.1 0.5,-0.6 -0.1,0.5 z m 98.6,-3.5 0.4,-1 0.2,0 -0.1,0.7 z m -1.2,-1.5 0,0.5 -0.7,0.6 0.6,-0.6 z m -0.5,-0.7 -0.2,0.1 0.2,-0.3 0.2,0.3 z m 23.6,-3.9 -0.3,-0.1 0.1,-0.2 0.1,0 z m -2.9,-2 -0.6,0.1 0,-0.5 0.5,0 z m -21.7,-1.9 0.3,-0.2 0.1,0.2 -0.2,0.1 z m 0.7,-0.6 0.2,0.1 -0.2,0.2 -0.3,0.1 z m 29.3,-2 0.5,0.8 -0.5,-0.2 -0.2,-0.3 z m -6.5,0 0.5,0.3 -0.3,0.5 -0.8,0 z m -19.4,-0.8 -0.2,0.2 -0.7,0.2 0.2,-0.2 z m 25.7,-2.3 -0.1,0.9 -1.2,-0.8 0.8,-0.3 z m -1.9,-0.6 0.2,0.3 -0.5,-0.2 0.3,-0.2 z m -51.8,-0.3 -0.4,0.3 -0.3,-0.2 0.4,0 z m 53.2,0 0.5,0.5 -0.7,0 -0.2,-0.3 z m -27.5,-1.3 0.2,1.2 -0.8,1.2 -0.9,-1.7 z m -24.8,0 0.1,-0.1 0.4,0 -0.2,0.2 z m 53,-0.5 0.6,0 -0.4,0.5 -0.6,-0.1 z m -25.1,0 -0.5,-0.1 0.9,0 -0.3,0.1 z m 24.8,0 -0.5,0 0.2,-0.1 0.2,-0.1 z m -18.4,-0.5 0.8,0.1 0.2,0.2 -0.8,-0.1 z m 7,-0.4 1.2,0.8 -1.1,0.1 -0.9,-1 z m -21.6,-0.4 0.3,0.9 -2.3,1.5 -1.5,-0.9 1.2,-1.3 z m 29.3,0.1 0,0.1 -0.5,-0.5 0.2,0.1 z m -22.3,-1.6 1.4,0.1 0.3,0.8 -0.7,0.3 z m 27.3,-0.4 -0.2,0.4 0,0.5 -0.4,-0.9 z m -24.8,-0.2 1.1,0.6 -0.8,0.2 -0.9,-0.5 z m 24.7,-0.3 -0.2,0 0,-0.2 0.3,0.1 z m -25.5,-0.7 -0.4,0.2 -0.4,-0.1 0,-0.1 z m 24.1,-0.6 -0.1,0 -0.1,-0.4 0.3,0.2 z m -16.4,-0.9 -0.1,0.6 -0.1,-0.1 -0.1,-0.6 z m 15.8,-0.7 0.1,0.3 -0.8,0.4 0.4,-0.6 z m 5.4,-3.2 0.4,0 0.2,0.3 -0.6,-0.1 z m -39.9,-0.3 -0.4,0.1 -0.1,-0.2 0.4,0 z m -3.4,-0.7 0.6,0.6 0.1,1 -0.8,-0.7 z m 1.4,-0.2 1.1,0.5 0.7,1.1 -1.4,-0.5 z m 2.3,-0.6 0.4,0.1 -0.1,0.3 -0.6,-0.3 z m 39.7,-2.8 0.1,0 -0.9,0.5 0.3,-0.5 z m -86.1,0.3 -0.3,0 -0.2,-0.3 0.1,-0.1 z m -1,-1 -0.1,0.3 -0.3,-0.4 0.4,-0.2 z m -1,-0.5 0.2,0 -0.1,0.3 -0.3,-0.3 z m 85.4,0.1 -0.4,0 0.1,-0.4 0.3,0.3 z m -84.5,-0.1 -0.4,0 0.1,-0.4 0.2,0 z m -10.1,-1.2 -0.4,0 0.9,-0.1 0,0.1 z m 9.9,0.1 -0.4,0 0.1,-0.2 0.2,-0.1 z m -2.1,-0.3 0.5,0.1 -0.1,0.2 -0.4,-0.2 z m -0.4,-0.2 0.1,0.2 -0.3,-0.2 0,-0.2 z m -1,-0.4 0.5,-0.2 -0.6,0.4 -0.6,0.2 z m 68.2,0.3 1.6,0.3 0,0.7 -1.9,-0.1 z m -23.2,0.4 -0.4,0.7 -0.7,-0.6 0.4,-1.3 z m -48.4,-0.9 -0.2,0 0.1,-0.3 0.3,0 z m 69,-0.3 0.9,0.2 0.2,2.3 -1.6,1 -2.1,0 -0.7,-1.5 1.2,-1.8 z m -6.5,0.4 -0.3,-0.1 0,-0.4 0.7,0.2 z m -5.9,-0.6 0.2,0.1 -0.2,0.1 -0.3,-0.2 z m 15.2,0.4 -0.5,-0.6 0.3,0 0.3,0.3 z m -70.1,-1.1 0,0.1 0.1,0.2 -0.7,0 z m 11.9,0.6 -1,-0.5 0.8,-0.1 0.4,0.2 z m 49.7,-0.8 -0.1,0.5 -0.6,0 0.5,-0.4 z m 7.8,0.3 -0.5,0 -0.2,-0.3 0.2,-0.1 z m -0.7,0 0.1,0.7 -1.1,-0.6 0.3,-0.7 z m -51.5,-0.8 -0.1,0.7 -1,-0.4 0.6,-0.4 z m 3.1,-0.4 -0.5,0.6 -0.4,-0.1 0,-0.8 z m 0.3,-0.1 -0.4,-0.2 0.2,-0.5 0.2,0.2 z m -69,-0.6 0.1,0.1 -0.4,-0.1 0,-0.2 z m 65.8,0.1 0.1,-0.5 0.2,0.1 -0.1,0.3 z m 21.3,-0.9 0.2,0.4 -0.3,0.1 -0.1,-0.5 z m 23.2,-0.1 0,0.5 -0.8,1.1 -1.1,-0.1 z m -109.4,-0.7 0.3,-0.2 -0.3,0.7 -0.5,-0.2 z m 103.1,0.5 0.4,0.1 0.1,0.2 -0.8,-0.2 z m -16.2,0.2 -0.3,0.5 -0.3,-0.3 0.3,-0.3 z m 25.2,-0.1 0.7,0.1 -0.9,0.9 -0.5,-0.5 z m -46.4,-0.5 0.6,0.3 -0.5,0.3 -0.2,-0.2 z m 8.8,0 1,0 0,0.7 -0.8,-0.4 z m 1.9,-0.2 0.6,0.3 -0.7,0.7 0,-0.8 z m -82.7,0.1 -0.5,0.2 -0.2,-0.2 0.2,-0.2 z m 116.6,-0.3 -1.1,0.7 -0.6,-0.1 1.1,-0.8 z m -3.3,-0.5 0.3,0.7 -2.3,-0.2 1,-0.4 z m -5.4,0.2 -0.1,0.1 -0.5,-0.2 0.3,-0.1 z m -17.8,-0.2 0.1,-0.2 0.5,0.2 -0.1,0.3 z m -10.6,-0.3 -0.2,0 -0.1,-0.1 0.3,0 z m 19.8,-0.7 0.8,0 -0.4,0.5 -1.1,-0.5 z m -47.2,-0.7 -0.9,0.1 -0.3,-0.3 0.8,0.2 z m -9.2,-0.8 0.6,0 -0.9,0.2 -0.3,-0.2 z m -0.8,0 -0.7,0 -0.1,-0.1 0.1,-0.1 z m -21.5,-0.2 -0.3,0 -0.2,0.2 0.3,-0.4 z m 52.5,-0.3 0.4,0 0.5,0.8 -0.8,-0.3 z m 52.7,-2.6 0.7,-0.1 -0.4,0.5 -0.5,-0.2 z m 0.8,-0.4 -0.5,0 0.2,-0.4 0.3,0 z m -61,-6.4 -1.3,1.7 -2.3,-2.1 -0.2,-1.1 2.7,-0.1 z m 0.4,-11.5 0.7,-1.4 2.5,1.4 0.7,1.2 -2.6,0.5 z m 27,-5.3 1.2,1.2 -0.8,0.5 -2.1,-0.8 z m -28.2,0.9 1.1,1.1 -1.5,-0.1 -1.6,-2.3 z m 37.2,91.2 -0.2,0 -0.5,0 0.2,-0.2 z m -4.1,-2.7 0.2,0.2 -0.7,0 0.1,-0.3 z m 10.5,6.8 0.6,0.1 0.2,1.1 -2.7,-0.8 z m -2,0.2 -0.1,0.2 -0.3,-0.1 0.2,-0.2 z m -1.4,-0.8 0.5,0.2 -0.4,0.3 -0.2,-0.3 z m 14.7,5 -0.3,0.1 0.1,-0.2 0.5,0 z m -36.9,-101.2 4.6,0.2 -0.5,1.1 -4.8,-0.1 z m 68.6,96.9 -2.3,1.3 -1,-1.4 1.8,-2.4 0.3,1.8 z m -4.3,-3 0.1,1.9 -1.1,1.2 -1.3,-1.1 2.2,-0.2 z m -134.6,-14.3 -0.4,-0.5 1.4,-0.3 0.2,1.5 z m -1.3,-3.2 2.6,0.1 -0.7,2.3 -1.6,-0.5 z m 102.4,-5 -0.9,0.4 1.4,-2 0.4,0.6 z m -29,-63.2 2.3,1.8 -0.2,2.4 -2.9,-0.2 -2.9,-1.1 0.8,-1.8 z m -28.2,-10.5 -3.3,-0.2 -3.7,0.4 -0.3,-0.5 5.4,-1.5 1.7,0.7 z m 25.9,-0.7 2,0.6 -0.1,1 -3.8,1.4 -1.7,-1.1 -1.2,-1.9 0.5,-1.4 3.8,0.9 z m 55,101.8 -0.6,-0.2 0.1,-0.8 -0.5,-0.1 -0.3,-0.2 0,-3.2 -2.7,-0.9 -1.5,1.8 -0.5,2 -2.3,2 -6.2,0.1 2.3,-1 0.7,-1.5 5,-2.3 2.9,-3 5.4,-2.4 2.4,0 1.4,0.8 -0.2,1.1 -2.1,1.1 -2.1,-0.3 1.7,1.1 2.2,-0.5 -1.2,1.6 2,2.8 3.1,1 1,-0.6 1.8,1.3 -4,1.5 -1.5,0 -3.3,2.9 -1.2,-1.5 0.4,-1.1 2.2,-1.4 0.6,-1.8 -2.6,1.7 z m -12.4,-1 0.3,-0.2 -0.1,0.4 -0.1,0.2 -0.8,0 0.5,-0.3 -0.2,0.1 0.2,-0.3 0.3,-0.1 z m -96.9,-9.5 -0.8,-0.5 0.6,0.1 0.2,0.4 0,0 z m 7.2,-80.5 -0.7,-1.4 -0.9,1.1 -2.1,-0.1 -0.8,-1.2 2.5,-0.8 5.2,-3.7 4.6,-0.8 1.9,1 -1.6,0.5 0.7,2 -2.3,0.7 -0.7,1.7 -2.2,2.3 -1.5,-0.4 3.3,-2 -0.1,-2.6 -1.5,0.2 -1.1,2.5 z m 127.6,85 1.8,-1 0.5,1.4 -0.6,1.8 -2.4,-0.3 0.8,-1.2 -2.2,0.2 -1.5,1.1 0.1,-2 -6.7,0.3 -0.5,-0.8 1.4,-1.6 3.8,-6.9 2.1,0.9 -2.1,2.3 2.4,0.3 -0.4,1.4 3,-0.9 1.2,1.2 -0.8,1.7 1.6,0.3 z m -60.8,-43.2 -3,0.3 1.8,-1.5 -0.4,-1.6 0.9,-3.7 0.9,-0.5 1.3,2.2 0.4,-0.8 4.3,2.3 1.6,1.6 2.5,1.3 -1.5,1.1 -4.9,-2 -0.2,1 -3.1,2 z m -23.8,-20 2.2,1.3 2,2.1 1.2,0.1 -2.5,1.3 -1.8,-0.3 -4.1,-1.6 2.3,-1.1 z m -11.4,-3 4.7,2.2 1.2,1.1 -2.9,-0.1 -0.8,1.5 1.5,-0.3 0.3,1.4 -2.9,0.9 -5.8,-1.3 -0.1,-1.1 -1.6,1.6 -3.1,1 -8.2,0.9 -0.9,-2.5 -4.4,-0.3 -2.8,-2.4 0.9,-0.4 5.4,-0.7 5.1,0.2 -1.3,-0.8 -3.5,-0.8 -3.9,0.6 -3,-0.2 -1.5,-1.5 4.4,-1.2 0.5,-0.6 -4.5,0.6 0.2,-1 -1.9,0.1 0,-1 1.8,-1.1 -0.9,-0.8 2.4,-1.7 5.3,-1.8 1.2,0.9 0.4,2 1.4,-1.5 3.4,1.1 -0.8,1.5 2,-1.1 1.6,0.4 -1.8,-1.9 1.2,0.1 2.8,1.5 1.7,3.4 0.9,-1 -1,-0.8 -0.6,-2.3 0.2,-2.9 1.6,1.3 1.3,-0.1 2.1,1.6 0.2,1.2 1.8,3.2 -0.5,1.8 z m 49.5,-10.5 3.6,2.1 -0.1,1 -7.1,-0.1 -1.5,-1.6 -0.1,-1.7 z m -35.2,6.4 -3.1,0.9 -1.2,1.4 -3.6,-3.3 -2.3,-0.5 -1.8,-1.8 1.6,-1 1.2,1.4 1.7,-0.1 0.4,-1.4 -2.7,-1.4 1,-0.9 5.6,-1.3 0.8,-1.5 -0.5,2.1 1.5,0.3 0.2,1.7 -2.3,1.3 2.1,0.3 0.8,-0.8 1,2.7 z m -48,-9.7 2.7,1 4,0 2.3,0.7 3,2.3 -7.4,3.1 -1.9,1.7 -0.9,2.4 -4.7,1.4 -1.9,-2.1 -3.5,-1 2,-4 2.1,-2.6 -1.9,-2.2 z m 40.7,-1.8 -0.8,-1.6 1.8,-0.9 -5.4,0.6 -1.4,-1 2.2,-0.9 0.7,-1.9 3.9,2.1 -2.6,-2.5 0.4,-0.7 6.3,1 0.5,4 -1.2,1.8 z m -18.6,-3.4 1.4,-0.8 -2.1,-0.8 3.1,-2.3 0.5,3.3 2.8,0.6 0.9,-0.7 2.1,0.7 0,1.3 3.7,1.5 -2,0.5 -2,-1.2 -0.7,1.1 -4.6,0.6 -0.8,-0.6 -5.4,2.2 -3.9,0.2 -1.4,-1 3.1,-1.1 2,0 1.6,-1 -5.8,0.7 -0.2,-1.2 -1.7,1.6 -4.9,-0.9 3.1,-4.5 1.9,-0.7 0,-1 0.9,0.2 0.9,2.1 1.8,-0.3 3,1.7 0.4,1.2 4.5,0.2 0.1,-0.9 z m 58.7,3.9 -1.5,1 -3.1,0.6 -3.3,-0.4 -7.9,0.4 -2.3,-0.8 -2.1,0.5 -4,-0.9 -0.9,-1.7 0.7,-2.5 -1.9,-2 -1.8,0.4 -3.4,-0.5 -1.9,-2.4 2,-0.3 4,0.6 1.2,1.2 3.1,-0.3 4,2 -1.6,0.5 3.8,2.1 4.2,0 4.4,-1.2 5,0.2 2.8,1.2 0,1.2 -1.5,0.5 z m -59.1,-10.4 -3.6,0.8 -2.1,-0.9 -0.7,-1.2 -1.1,0.5 -1.8,-1.1 1.5,-0.5 2.1,0.8 4.8,-0.9 2,0.6 z m 12.5,-7.8 2.5,1.5 1.5,-0.3 4,2.1 -0.6,0.6 1.6,2.3 -4.2,0.2 0.3,-1.5 -3.3,0 0.1,-0.7 -3.3,0.4 -1.1,-0.9 2.8,0 -1,-2.1 -2.8,-0.1 0.3,-1.4 z m 24.9,-5.3 2.7,0.2 0.5,1.5 1.1,-1.1 1.5,0.1 1.4,2.2 -0.4,1.5 3.1,0 1.2,1.2 -3,1 -4.8,3.8 -5.8,-0.2 -4.3,-3.2 2,-0.9 2.6,0.1 -1.4,-1.3 -2.6,0.9 -3.5,-0.7 -1.8,-3.2 3.6,0.4 -3.3,-1 1,-1.3 1.6,-0.2 -0.6,-0.8 1.3,-1.2 3.2,-0.1 -2.4,-0.8 2.2,-0.5 2.8,1 z m -64.2,100.3 0.2,0.1 -0.1,0.1 -0.1,-0.2 0,0 z",ST:"m 348.93,217.59 -0.3,-0.3 0.4,-0.3 0.2,0.3 z",CV:"m 290.83,188.39 0.5,0.4 0,0.4 -0.5,-0.2 z",DM:"m 218.73,187.89 0.3,0.3 -0.2,0.4 -0.2,-0.5 z",NL:"m 346.93,104.89 -0.7,0.2 0.1,-0.2 0.8,-0.1 z m -131.3,78.2 -0.1,0 0,-0.1 z m 127.1,-72.9 0.8,0 0.9,0 -0.8,0.4 z m 7.4,-4.8 -0.4,2.6 -1.2,1 -0.7,2.7 -1.9,-1.8 -1.5,0.3 -0.8,-0.6 2.4,-3.5 2.6,-1.6 z",JM:"m 188.03,182.19 2.4,1.1 -2,0.4 -2.2,-1.1 z",WS:"m 6.43,243.59 0.1,0.6 -0.5,0 -0.5,-0.6 z",OM:"m 444.03,168.69 -0.1,0.1 0,-0.2 0.3,0 z m -0.4,-1.7 0.6,-0.6 -0.2,1.5 -0.2,-0.1 z m -7.8,14.2 5.7,-2 1.3,-3.9 -0.9,-1.5 1.2,-4.4 1.1,-0.2 1.5,2.1 3.1,0.8 2,2.7 -4.1,5 0.3,1.3 -2.2,0.9 -0.6,1.3 -1.8,0.2 -0.8,1.6 -3.7,0.7 -0.7,-1.3 z",VC:"m 219.13,192.79 -0.1,-0.3 0.2,-0.3 0,0.3 z",TR:"m 386.03,136.89 -0.4,0.2 -0.2,-0.1 0.5,-0.3 z m 3.9,-4.1 2.1,1.7 -3,0.6 -0.7,0.8 -2.2,-0.3 1.2,-1.5 -0.6,-0.7 1.4,-0.8 z m 32.2,5.3 -1.6,0.6 0.5,3.1 1,1.8 -3.9,-0.4 -0.7,0.5 -0.3,-0.5 -4.7,1.3 -2.9,-0.3 -3.1,0.1 -1.4,2 0.2,-2.2 -1.3,0.8 -1.5,-0.4 -3.3,1.6 -1.5,-1.2 -2.6,-0.7 -0.5,1.4 -1.4,0.3 -2.6,-2.1 -2.2,-0.6 0.1,-1.4 -1.9,-0.7 1.6,-1.3 -1.2,-0.8 -0.1,-0.2 -0.5,-0.3 1.2,-2.1 4.6,-0.1 0.1,-1.8 3.9,0.3 4,-2.1 5,0.6 3,1.6 3.7,-0.1 1.3,0.4 2.7,-1.3 2.4,-0.2 1.2,1.1 0.5,2.2 2.1,1 z", +BD:"m 512.93,177.09 -1.5,-3.5 -2.5,2 -2.1,-0.6 -1,-3 0.4,-1.4 -1.4,-0.7 1.7,-1 -1.6,-1.5 0.7,-1.2 2.7,1 1,1.7 3.2,-0.1 0.8,0.5 -2.5,2.7 0.8,1.3 1.1,-1.5 0.8,3.5 0.1,1.3 z",LC:"m 219.63,191.49 -0.3,-0.3 0.3,-0.4 0.1,0.3 z",NR:"m 655.93,218.79 0,0 -0.1,-0.1 0.1,0 z",NO:"m 376.13,55.29 -0.4,0.2 -0.4,-0.2 0.4,-0.4 z m -1.5,0.3 -0.5,-0.2 -0.4,-0.6 1.2,0.5 z m 5.1,-1.2 0.6,0.4 -1.1,-0.1 0.1,-0.3 z m 1.6,-0.8 0.3,0.5 -1.1,0.6 -0.5,-0.4 z m 0.6,-0.4 0.6,0.4 -0.8,0.3 -0.2,-0.6 z m -0.8,-0.4 -0.6,0.9 -1.8,0.3 0.7,-0.8 z m 1.3,-0.6 0,0.3 -0.3,-0.1 0.1,-0.3 z m 3,-0.5 0.6,0.5 -0.8,0.3 -0.5,-0.4 z m -8,-28.6 1.5,1.4 -2.3,0.2 -1.7,-1.2 z m 10.1,-0.2 -0.6,-0.3 0.3,-0.4 0.5,0.4 z m 4.4,-1.2 -1.8,0.4 -0.5,-0.1 1.1,-0.5 z m -16.9,-0.9 1.2,0.3 -0.9,0.3 -0.6,-0.2 z m -0.1,-1 -0.9,0.1 -0.1,-0.2 0.1,-0.1 z m 25.8,-3.7 -1.6,0.4 -2.3,0.2 -0.2,-0.2 z m -17.7,-0.8 -0.5,0.1 0.1,-0.3 0,-0.1 z m -0.4,-0.5 0.2,0.1 -0.2,0.1 -0.4,-0.1 z m -8.1,0.1 -0.2,-0.1 0.2,-0.1 0.3,0.1 z m 2.6,-0.9 -0.4,0.1 -0.2,-0.1 0.4,-0.1 z m -1,0.2 0,-0.3 -0.5,-0.3 0.8,0.2 z m -4.7,43 1.2,0 2.3,-1.3 0.6,0.6 0.2,-0.1 0.1,0 0.1,-0.2 0.3,-0.3 -0.2,-0.2 0.4,-0.1 0.1,0 1.1,-1 0.2,0 0,0.1 0.1,0.1 0,-0.1 2.3,0.3 3.2,-2 2.5,-0.3 -1.6,1.3 0.1,1.4 3,-3 -0.4,2 2.1,-2.5 4.6,1.3 2.1,1.5 -1.8,0.8 -2.7,-0.4 4,1.3 -1.7,1.5 -1.9,1.1 0.8,-1.5 -2.8,-2 -3.6,1.3 -0.8,2.7 -1.4,1.1 -1.8,-0.9 -2.9,0.4 -1.4,-1.9 -2,0.8 -1.3,2.3 -3.5,-0.6 -0.5,1.8 -1.1,-0.4 -2.2,2.2 0.5,1.2 -3.6,3 0,2.5 -1.7,2.3 0.6,1.8 -2.4,0.2 -1.4,2 0.7,3 -0.3,1.6 1.3,1.1 -1.2,1.1 0.5,2.5 -1.2,0.7 -0.8,2.5 -1.9,-0.7 -3.7,2.8 -1.8,0.6 -2,-0.2 -2.5,-2.9 0.8,-2.6 -1.9,-2.9 1.3,-1.5 -1,-0.8 1.5,-1.5 2.6,-1.1 -0.1,-0.6 3.6,-1.3 -1.9,-0.2 1.9,-1.2 2.5,1.5 2.6,-1.5 -2.9,0.9 -0.7,-0.8 3.2,-3.2 1.5,-0.8 0.3,-1.2 2.7,-4.7 3.8,-2.7 -1.5,-0.2 3.2,-1.3 -0.7,-0.6 2.2,-1.1 -0.8,-1.1 1,-1.6 1.8,-0.1 1.4,-1 -0.1,-1 0.9,1 z m 22.4,-0.9 -0.3,-0.3 -0.3,0.5 0.7,-0.2 z m -9.5,-24.6 0,-0.2 1,-0.7 -1,0.9 0,0 z m -20.5,28.4 2,-0.6 1.3,-1.5 0.9,2.1 -1.8,1.3 -4.3,0.8 0.2,-0.6 3.4,-0.7 z m 17,-31.5 -1.3,-0.8 -3.2,0.1 1.4,-2 -1.4,-0.7 3.9,-0.7 1.3,1.6 1.5,0.2 z m -14.5,-10.2 1.6,-1.6 4.5,2.7 0.1,1.2 5,1.3 -4.9,1.6 -1.5,4.1 -0.9,0.1 -1.7,3.6 -4.7,-2.5 -0.9,-1.4 5.5,-1.4 -5.9,0.4 -0.2,-1.2 2.8,-0.2 1.4,-1 -1.9,-1.6 -0.1,1.4 -3.3,0.8 -1.9,-1.7 0.3,1.7 -2.1,-1 -1.2,-1.9 1.7,-0.3 -1.2,-2.5 0.6,-0.6 2.1,0.1 3.2,-0.9 0.2,1.4 1.2,-1.1 1.5,0.9 2,2.9 z m 15.5,-2.7 5.8,0.6 0.7,1.4 -2.3,1.5 -3.7,1.4 -2.1,-0.2 -0.1,-0.8 -4,0.2 -2.2,-1.1 4.2,-0.4 0.1,-0.5 -6,0.5 0.1,-1.4 -1.9,-0.4 0.6,-0.7 2.3,0.8 2,-1.4 1,0.9 1.8,-0.3 1,1.2 0.7,-2.2 0.5,1.5 z m 2.5,16 -0.2,0.2 0.1,-0.2 0.1,0 0,0 z",KN:"m 216.43,184.69 -0.5,-0.3 0.1,-0.1 0.2,0.2 z",BH:"m 432.93,166.69 0.3,0.1 -0.1,0.8 -0.2,-0.4 z",TO:"m 1.43,258.89 -0.1,0.1 -0.7,-0.3 0.4,-0.1 z",FI:"m 375.83,86.59 -0.1,0.3 -0.6,0.1 0.3,-0.2 z m -0.8,0.1 0.1,-0.1 -0.2,0.4 -0.3,-0.2 z m 0.3,-0.5 -0.6,0.5 -0.9,-0.5 0.9,-0.3 z m 2.3,0.1 0,0.2 0.7,-0.1 -0.8,0.3 z m 1.6,0.7 0.1,-0.6 0.7,0.2 -0.6,0.7 z m -2.2,-1.7 0.1,0.3 -0.1,0.3 0,-0.4 z m 0,-8.1 0.2,0.3 -0.3,0.2 -0.2,-0.3 z m 6.9,-5.4 -0.5,0.3 -0.1,-0.2 0.2,-0.1 z m -5.9,13.9 -0.3,-0.1 -0.8,-4.4 0.5,-3.7 1.7,-0.3 4.6,-4.7 0.9,0.1 0.2,-2.2 -2.3,-0.9 -1,-2 0.7,-1.2 -1.1,-2.2 0.4,-1.6 -5.7,-3.5 2,-0.8 1.4,1.9 2.9,-0.4 1.8,0.9 1.4,-1.1 0.8,-2.7 3.6,-1.3 2.8,2 -0.8,1.5 -1,1.7 0.5,1 2.5,1.8 -1.7,2.7 1.5,2.3 -0.6,3.6 1.9,3 -1.1,0.8 3,2.5 -0.6,1.2 -3.9,3.8 -2.7,2 -7.7,1.6 -2.6,-0.9 0.1,-0.1 -0.3,0 0,0 -0.8,-0.2 0.2,0.1 -0.1,0.2 -0.3,-0.3 z",ID:"m 593.33,228.59 1,0 -1.1,2.3 -0.1,-1.6 -1.9,-1.3 z m -51.2,-5.5 -1.9,0.6 -1.4,-1.8 0.5,-1.1 1.1,2.5 z m 19.2,10.6 2.9,-0.2 0,0.7 -3.9,0.9 -2.2,-0.5 1,-1.2 z m 20.3,-20.3 -0.2,1.9 1.6,2 -1.7,-0.4 -0.5,3.4 -1.2,-2 1.1,-0.1 -0.5,-2.7 z m -7.9,22.2 0.5,0.3 0.3,-0.6 0.3,-0.1 0.6,-0.3 0.1,0.4 0.2,0.6 -1.1,1.2 -1.9,0.5 z m -11.7,-25.7 -0.4,0.3 0,-0.4 z m 44.2,12.8 0,8.2 0,4.2 -1.8,-1.9 -4.6,0.6 0.7,-1.5 1.6,-0.6 -2,-3.9 -3.5,-1.5 -1.5,-0.1 -3,-1.8 -1.4,1.2 -1.3,-2.7 3.4,-0.6 -2.5,-0.1 -3.5,-1.9 -1.1,-2.3 1.9,1.3 2.8,-0.8 2.4,0.6 0.3,2.8 1.6,2.2 2.5,-1.5 -0.2,-1.7 3.2,-0.3 3.9,1.7 z m -39.3,14.7 -2.9,-1.4 1.4,-0.4 1,-2 4,0.6 1.3,-0.8 5.4,-0.4 -3.3,1.1 -0.5,-0.5 -3.9,1.1 -3.5,-0.1 1.7,2.2 z m -23.2,-4.7 -3.5,-0.8 -2,-1.2 1.1,-1.7 4.4,0.7 0.5,0.9 3.6,0.4 0.9,-1 2.2,0.9 6,-0.1 0,3.8 -3.8,-1 -1.1,0.3 -3.7,-0.5 -2.6,-0.9 z m 37.9,-9.1 -2.7,1.5 -1.4,-0.9 -0.1,-1.9 0.3,1.4 1.9,0.5 1.7,-0.9 3,-0.2 2,0.6 0.4,1.4 z m -10.2,5 -1.6,-0.4 1.8,-1.9 -2.7,0.3 0.2,-1.1 -2.3,-1.5 -0.2,4.3 -1.8,-0.3 0.5,-2 -1.6,-3.2 1.1,-1.3 1.3,-5.1 1.7,-1.2 1.3,0.5 4.4,0.5 2.3,-1.8 -1.2,2.5 -8,0.1 -0.6,1.2 1.3,2.2 1.9,-1.7 3.3,0.3 -0.2,2.1 -1.1,-1.2 -2.2,1.5 1.8,2.4 1,2.3 z m -10,-18.7 -0.4,1.6 1.4,1.9 -0.5,0.8 2.2,1.6 -2.4,0.6 -0.6,2.4 -1.6,1.7 0,1.4 -1.2,2.7 -2.6,1.1 -0.7,-1.5 -2.3,-0.4 -2.4,0.7 -0.1,-1.5 -2.8,0.5 -0.6,-3.6 -0.9,0.3 -1.2,-4 1.5,-2.4 1.7,2.3 4.7,-1.3 2.9,0.2 1.8,-3 0.8,-2.6 z m -37,-0.1 2.9,1.9 2.3,2.5 1.3,-0.5 4,3.6 -0.7,1.9 1.9,0.5 0.7,2.6 1.7,0 0.8,1.7 -0.4,4.5 -2.1,0.5 -6,-5.1 -1.5,-2 -1,-2.6 -1.8,-2 -1.8,0.5 1.6,3.3 -0.7,-0.1 -1.1,-3.2 1.5,-1.2 -1.1,-2.5 -2.3,-0.2 1.2,2 -0.5,0.8 -1,-2.9 -1.4,-0.5 1.7,0.3 0.5,-1.3 -4.1,-3.7 -0.3,-1.9 2.2,1.1 2,0 z",MU:"m 446.83,256.49 -0.1,0.8 -0.6,0 0.3,-0.9 z",SE:"m 371.43,89.89 0,0 0.1,-0.3 0.2,-0.1 z m 7.4,-19.2 0,-0.4 0.3,0.2 0,0.2 z m 3.7,-1.2 -4.4,0.9 -1.3,2.7 0.8,0.7 -1.5,1.7 -3.4,2.1 -2.3,2.1 -1.4,3.2 0.4,1.9 1.2,0.4 2.2,2.5 -1.2,1.7 -3.3,1.5 -0.6,2 0.6,2.7 0.7,-1.2 1.9,0.2 1.3,-1.8 -0.1,1.9 -3.1,0 -1.2,2.7 -3.4,0.3 -1,2 -2.3,0 -1.2,-4.1 -1.5,-2.9 0.2,0 0.2,-0.3 -0.5,0.1 0,0.2 -0.5,-1.1 0.4,-1.8 0.8,-2.5 1.2,-0.7 -0.5,-2.5 1.2,-1.1 -1.3,-1.1 0.3,-1.6 -0.7,-3 1.4,-2 2.4,-0.2 -0.6,-1.8 1.7,-2.3 0,-2.5 3.6,-3 -0.5,-1.2 2.2,-2.2 1.1,0.4 0.5,-1.8 3.5,0.6 1.3,-2.3 5.7,3.5 -0.4,1.6 1.1,2.2 -0.7,1.2 z m -23.7,22.4 -0.6,0.2 0.1,0.3 0.6,-0.2 z",TT:"m 219.73,197.09 -0.2,1.3 -0.9,-0.3 -0.4,-0.8 z",MY:"m 528.33,207.39 0,0.4 -0.2,-0.1 0,-0.3 z m 33.7,2.5 -0.4,-0.1 0.1,0 -0.3,0.1 -3.3,-0.5 -0.8,2.6 -1.8,3 -2.9,-0.2 -4.7,1.3 -1.7,-2.3 2.6,1 0.6,-1.6 0.2,0 0,-0.3 0,-0.2 3,-0.9 1.9,-2.8 1.2,1.1 0.7,-1.6 0.1,-0.1 0,0.2 0.6,1 -0.4,-1.2 1.9,-2.3 2.2,-1 3.8,2.8 -2.1,0.6 0.8,1 -1.4,0.3 z m -34,-4.4 1.8,0.4 0.1,1.2 1.8,-1.2 2.6,2.7 0,3.6 1.6,3 -1.7,-0.4 -4,-2.5 -1.1,-1.9 z",PA:"m 187.13,203.99 -1.2,-2.6 -2,-0.7 -1.7,1.7 0.9,1.2 -3.4,0.4 0.1,-1.8 -2.2,0.3 -0.3,-0.6 0,-0.1 0,0 0,0 0,0 0.9,-2.3 0.9,1.2 2,0.3 2.7,-1.6 2.3,0.4 2,1.4 0.4,1.4 z",PW:"m 593.83,203.79 0,-0.2 0.1,-0.3 0.2,0 z",TV:"m 679.43,233.99 0,0 0,-0.1 0,0.1 z",MH:"m 663.83,204.19 0.3,0.1 0.1,0 -0.1,0 z",CL:"m 195.93,330.49 2.3,1.1 -1.4,0.9 -1.8,-1.9 z m -3.3,-14 1,2.1 0.1,3.2 -2.2,-0.8 1.3,-0.9 -1.3,-1 0.1,-1.9 z m 2.9,-12.8 -0.4,2.3 -2,0.7 1.1,-1.6 0.3,-2.5 z m 9.4,24.9 0,5.6 -0.2,0 0.2,0.1 -0.1,0.2 -2.5,-0.3 -1.1,1.1 -1.4,-2.5 1.6,-1.8 0.2,2 2.6,0.3 -2.1,-0.9 -0.6,-2.8 1.9,-1.5 z m -3.4,-75.6 0.8,-0.1 0.9,-1.5 1,2.8 1,1 -0.6,2 1.1,1.7 0.6,3 1.3,0 -0.3,2.4 -2.3,1.6 0.5,4.3 -1,0.5 -1.6,2.6 -1.8,6.6 1.6,3.8 -1.2,3.9 0,1.9 -1.2,1 -0.3,2.6 0.6,2.2 -1,0.5 -1.1,4.1 0.4,3.1 -0.8,2.1 1,2.1 -0.8,2 1.4,1.3 -1.1,4.6 -1.2,1.7 0.5,1 -2.5,3 0.8,3 1.6,-0.3 -0.2,2.3 1,1.1 3.7,0.1 2.9,0.9 -1.3,-0.4 -3,1.4 -0.6,2.7 -4.2,-1.4 0.5,-1.1 -2.2,-0.3 -0.6,-1.5 1.4,0.3 -0.3,-2.5 -2.4,-1.2 1.6,-0.9 -0.3,-4.5 -0.6,-2.2 0.9,-2.3 -2.2,-0.3 1.8,-2.9 0.9,1.4 1.5,-1.7 -0.3,-1.1 -2,-0.1 1.1,-2.4 0.5,2.3 2.1,-6.3 -0.9,-1.3 -1.5,0.6 -0.4,-1.8 1.3,-3.3 -0.8,-3.9 0.9,-1.3 1.1,-3.4 0.8,-1 1.6,-5.9 -0.5,-4.5 0.7,-0.6 -0.5,-2.1 1.2,-2.7 0.9,-4.6 -0.3,-4.6 1,-3.3 z m 6.1,81.7 1.3,0.8 -4,-0.3 3,2 -1.4,0 -2,-1.9 -1.9,0.6 -0.2,-1 4.7,-0.3 0.3,0 z",TH:"m 532.13,194.49 0.1,0.1 0.2,0.3 -0.3,0 z m -0.4,11.4 -1.8,1.2 -0.1,-1.2 -1.8,-0.4 -1.6,-2.3 -2.1,-1.7 1,-3.5 1.7,-2.8 -0.9,-3.7 -1.7,-2.1 1.1,-2.6 -2.7,-4.6 1.2,-2.6 0.9,0.3 3,-1.3 0.7,1.6 1.5,0 -0.2,4 1.8,-1.5 1,0.8 1.5,-1.2 1.2,0.2 1.6,1.9 -0.2,1.6 1.7,1.6 -0.8,2.7 -3,-0.2 -2.5,1.7 1.1,3.7 -2.1,-2 -1.6,0.2 0,-1.7 -1.8,0.1 0,2.4 -1.4,3 -0.1,2.7 1.2,-0.2 1.1,4.1 2.1,0.6 z",GD:"m 218.33,194.79 -0.2,0 0,-0.3 0.2,-0.1 z",EE:"m 379.63,90.99 0.8,0.6 -1.6,0.6 -0.7,-1 z m 1.4,-0.1 -0.3,0.2 -0.3,-0.2 0.2,-0.2 z m -0.3,-1.2 0.3,0 0,0.2 -0.4,0 z m -0.9,0.1 0.6,0.4 -1,0.5 -0.9,-0.7 z m 9.5,0 -1.4,0.6 1.3,2.2 -0.2,0.5 -0.4,0.8 -1.6,0 -2.3,-1.5 -1.9,0.6 -1.5,-2 -0.1,-1.8 4.8,-1.2 3.9,0.4 0.2,0.2 0.1,0.2 -0.1,0 -0.2,0.1 0,0 0.1,0 0,0 0.1,0 -0.1,0 -0.2,0 -0.2,0.4 z",AG:"m 218.03,184.89 0.2,0.2 -0.3,0 -0.1,-0.2 z",TW:"m 565.23,172.19 1,0 1.9,-3.1 1.6,-0.1 -1,3.9 -1.1,2.5 z",BB:"m 222.33,192.79 -0.2,-0.1 0.1,-0.4 0.3,0.3 z",IT:"m 359.93,141.89 6.3,-0.8 -0.8,1.2 -0.2,2.4 -1.2,-0.3 z m -5.6,-7.3 0.8,1.5 -0.5,3.1 -2.2,0.4 0.1,-3 -0.5,-1.3 z m -3.7,-6 -1.7,-3.1 0.8,-1.9 2,-0.8 1.5,0.4 2.2,-0.7 0.9,-1.2 3.3,-0.5 0.4,0.9 2.5,0.4 -0.6,0.6 0.6,1.7 -0.9,-0.5 -2.1,1.1 0.5,2.6 2.3,1.6 0.9,2.2 2.1,1.5 1.7,0 -0.2,1 4,1.9 0.9,1.2 -2.8,-0.9 -1,1.9 1.2,0.6 -2.1,3.3 0.3,-1.9 -1.1,-2.9 -3.7,-2.6 -1.2,0 -3.6,-3 -2.1,-3.4 -2.5,-1 z m 9.5,4.4 0,0 0,0 0,0 z m 0,-4.6 0.1,-0.2 -0.1,0 -0.1,0.1 z",MT:"m 363.63,146.09 0.5,0.2 0,0.3 -0.3,-0.1 z",VU:"m 656.83,245.19 1.4,1.2 0.7,3.8 -1.7,-0.8 -1.6,-2.6 z",SG:"m 535.13,214.99 0.3,0.2 -0.3,0.2 -0.4,-0.1 z",CY:"m 400.93,148.29 0,0 0,0 z m 0.5,-0.1 0.2,0.2 -0.4,0 -0.2,-0.2 0.2,0 0.2,0 z m -0.5,0.1 0,0 0.1,0.1 0,0 z m -0.1,0.1 -0.2,0.3 -1.1,0.4 -0.4,-0.1 -0.1,0.1 -0.9,-0.9 0.6,-0.3 0.1,0.1 0,-0.1 0.1,0 0,0 0.1,0 0,0 0,0 0,0 1.3,0.1 0.5,0.3 z",LK:"m 489.33,199.29 1.6,0.6 2,3.4 -0.1,1.9 -2.2,1.3 -1,-0.4 -0.6,-3.7 0.8,-2.7 z",KM:"m 419.53,240.59 -0.5,-0.4 0.1,-0.7 0.3,0 z",FJ:"m 675.43,250.99 2.2,0.1 0,-1 3.1,-1.2 -3.2,2.4 0.9,0.5 -0.4,2.4 -0.7,-1.3 -1.5,-0.3 z",RU:"m 621.23,124.99 -2.1,0.7 -1.5,1.4 -2.9,1.4 1.3,-1.6 4.8,-2.3 z m -189,-65.8 -2.9,0.8 -0.5,-1.8 1.8,-0.8 1.7,0.8 z m 17.7,-4.7 2.2,1.5 -1.8,0.7 -1.9,-1.3 z m 22.6,-10.7 1,0.4 -3.4,0.7 0.1,-1.3 z m 80.8,-3.8 -1.1,1 -2.5,-0.9 1,-0.8 z m -107.6,-23.8 -2.8,0.4 0.6,-1 4.7,-0.6 0.7,2.5 z m -4.8,-1.3 -0.5,1.2 -3.3,0.2 0.5,-1.1 2.8,0.6 z m 2.9,-2.7 4.8,0.2 -3.3,1.7 -2.1,0.2 -3.5,-0.8 z m 16.4,-0.5 1.4,1.2 -4.5,1.1 -1.1,-0.7 2.9,-0.6 z m -13.1,-2.3 1,1 -1.4,1.6 -3.5,-0.2 z m -34.3,120.1 -1.9,-1.7 -4.6,-2.5 1.8,-0.4 0.6,-2.6 2.8,-1.3 -2.1,-0.3 1.2,-1.8 1.8,0.1 -0.1,-2.3 0.8,-1.2 -1.8,-1.5 -3.4,-1.4 -3.4,0.2 -1.1,-2.2 -1.7,-0.1 0.5,-1.3 -1.2,-1.5 -3.9,0.6 -1,-2.3 2.8,-1.1 -1.8,-1 -1.7,-4.8 -5.2,-1.4 -1,-1.9 -0.6,-1.9 0.4,-0.8 0.2,-0.5 0.4,-1.3 -0.3,-1.5 0.3,-0.5 0.2,-0.3 0.2,-0.1 0,0 -0.1,0 0,0 0,0 0.1,0 0.2,-0.1 -0.1,-0.2 -0.2,-0.2 0.2,-0.9 3.3,-1 -3.9,-1.1 2.7,-2 3.9,-3.8 0.6,-1.2 -3,-2.5 1.1,-0.8 -1.9,-3 0.6,-3.6 -1.5,-2.3 1.7,-2.7 -2.5,-1.8 -0.5,-1 1,-1.7 1.9,-1.1 1.7,-1.5 2.3,-0.6 2.1,0.8 -2.1,0.6 7.5,1.3 9.8,5 0.6,1.5 -1.8,2.6 -2.1,0.9 -2.7,0.1 -8.5,-2 -2.4,-1.3 5.2,4.5 -0.9,1.1 0.9,1.6 1.5,-1 2.4,0 4.9,1.9 1.7,-0.8 -1.2,-2.5 2.9,-1.4 2.4,-2.3 3.1,2.9 0.6,-2.6 -1.3,-1.6 0.8,-3.5 -1.8,-1.2 5,0.5 1.5,2 -2.6,0.4 -0.8,1.3 1.7,1.4 3.7,-0.3 0.5,-2.1 1.5,-0.3 4.5,-2.5 4.4,-1.4 1,1.9 1.4,0.5 2.5,-1.6 2.5,0.4 3,-1.5 1.5,2.2 2.4,-2.6 -1.5,-1.6 1.2,-0.9 6.5,1 2.9,1.6 3,0.9 2,1.6 1.6,-2 -1.2,-0.1 -0.9,-1.8 -2.3,-0.3 1,-3.9 -1.7,0.1 0.9,-2.1 3,-1.9 0.9,-3.1 1.2,-0.7 3.8,-0.1 2.4,0.7 0.1,1.6 -2,2.6 1.6,1.5 -0.4,2.9 0.2,4.6 2.1,1.4 -1,2.6 -1.1,0.4 -1.9,3.1 -2.3,1 3.3,0.3 2.7,-1.8 2.4,-2.8 -0.6,-3.4 3.7,-1 1.8,1.6 -0.4,2.5 1.9,-1.6 -0.8,-2.1 -4.2,-1.3 -3.3,0.2 -0.5,-1.8 1.6,-2.7 -2.5,-3.2 0.9,-1.4 2.7,-1 -0.4,-2.9 1.8,-2.4 2.1,0.3 -2.3,2.7 0.4,1.8 -1,3 4.9,0.9 0.9,-0.4 -3.7,-1 -0.6,-1.3 1.8,-0.5 1.2,0.8 0.6,-1.7 2.4,-2.9 0.5,2.6 4.5,2.5 2.9,-0.1 -1.9,1.5 1.1,1 0.7,2.4 1.1,-0.5 -1.2,-2.7 0.9,-1.4 -2.8,-2.3 -2.8,-1 -0.7,-2.4 0.4,-1.4 12.5,-1.1 -0.5,-1.1 -2.8,-2.2 3.1,0.5 -0.5,-1.3 2.1,-0.2 4.1,-2.2 6.9,-1.1 -1.2,-0.7 3.2,-0.1 2.3,-0.9 -0.9,-1.5 1.6,-1.3 0.5,2.6 -1.1,0.8 1.2,1.1 2.6,-0.5 2,-2.1 3.8,-0.1 0.6,-2.2 4,-2.3 2.8,-0.2 2.2,0.6 -1.3,1.5 4.3,1.2 -2,1.5 2.8,-0.1 0.1,-0.8 6.2,0 2.6,0.5 0.2,1.6 1.4,0 0.6,2.5 -2.1,-1.1 2,2.3 -7,3.6 -3.6,2.6 -1.8,0.1 -1.5,1.5 2.6,0.1 6.1,-1.9 -2.5,-0.1 0.8,-1.1 4.5,1.2 1.5,-0.7 0.6,1.4 3.7,-0.8 5.9,0.5 -0.2,1.1 3.6,1.1 5.2,0.4 1.1,-1.3 -0.5,-1.2 2.5,-1.3 0.3,0.7 3.2,1.1 1.2,-0.5 4.6,2 -1,3.4 -2,-1.3 3.6,4.6 2.2,1.4 1.2,-0.5 1.9,-3.5 2.2,1.6 1.6,0.2 2.8,-0.9 2,0.3 3.3,-0.3 2.5,0.6 -1.6,-2.5 0.6,-1.2 3.9,-1 7.4,0.8 2.9,0.9 -2,0.4 0.5,1.3 2,-1.8 4.6,0.6 0.9,0.9 -2,0.7 4.7,1.4 1.4,1.5 2.8,0.1 4.3,-0.8 5,0.4 2.2,1.1 0.8,1.5 -0.8,1.2 2.7,1.5 5.6,-1.1 1.6,0.7 4,0.2 2.5,-1.8 2.3,0.5 -0.5,1 -2.1,-0.4 0.5,1.6 2.4,1.5 2.6,-0.9 -0.7,-3.6 9.4,0.9 3.5,0.8 7.3,2.9 0.3,0.7 6.5,2.9 1.6,3.7 0.8,-1.4 4.4,0 3.9,2.7 -1.6,1.6 -3.1,0.3 -0.9,2.6 0.8,0.9 -2.2,0.3 -2.6,-1.6 -2.2,-0.6 -0.1,-1.2 -2,-0.7 -3,0.3 -2.2,-2.1 0.8,1.8 -0.8,1.5 -4,1.5 -3.5,-0.6 3.1,2 0.5,-0.5 2.6,5 -1,1.3 -2,-0.8 -2.6,0.2 -6.2,2.7 -2.8,2.1 -2.7,1.2 -0.4,1.4 -2.2,-1.8 -4.4,0.8 -1.6,1.3 0.6,-1.8 -3.1,2 -2.2,-0.8 -0.9,1.6 1.2,1.7 1.6,0.1 -2.2,1.2 -0.8,-1.5 -2.1,2.5 2.6,1 -1.1,2.6 1.2,1.6 -2.4,0.1 -0.7,1.4 0.7,2 -4,1.8 -0.8,2.4 -1.9,1 -1.7,3.4 -3.8,3.5 -1,-0.1 2.9,-1.9 -1.2,-5 -1.1,-6.2 0.9,-4 2.8,-2.9 2.9,-1.7 1.7,-2 3.8,-3 0.1,-0.6 4,-2.7 0.2,-2.7 2.1,-0.4 -1.2,-0.9 -2.5,0.5 -0.6,2.1 -5.4,3.6 -0.7,-1 1.1,-3 -5.5,0.5 -4.9,4.1 -1.6,2.5 2.1,0.9 -3.5,-0.2 -3.8,1.1 -1.2,-1.8 -2.2,-0.8 -1.6,1.5 -9.3,-0.5 -2.5,0.6 -3.2,2.3 -0.8,1.5 -3.5,2.4 -2.1,2.4 -4.5,3.2 2.5,0.8 0.3,-1 2.7,-0.1 -1.5,2.6 1.1,1.2 1.6,-1.9 2,0 3.2,3 -1.9,6.7 0.2,2.4 -0.7,2.7 -1.8,1.7 -2.2,3.7 -4.3,4.4 -1.4,2.1 -3.8,1.9 -2.6,-1.5 -2.1,2.4 -0.1,-0.3 -0.2,-0.3 0.9,-0.7 0.5,-2.8 -0.6,-1.9 2,-0.9 0.7,1.7 0.9,-1.3 2,-2.8 0.5,-2.4 1.2,-1.1 -0.7,-1.7 -3.7,1.7 -2.7,0.1 -0.4,-1.6 -2.8,-2.7 -2.5,-0.3 -4.5,-8.8 -4.7,-1.5 -4.7,0.8 -1.5,1.3 1.4,1.7 -1.3,1.1 -1.8,3.3 0.1,0.9 -2.8,1.2 -2,-0.7 -2.5,-0.2 -2.1,-1 -2.4,1.7 -4.4,1.2 -4.2,-0.5 -1.2,-1.5 -5,-1.4 -3.1,0.9 -2.7,-1.2 -0.2,-1.8 -6.3,-2.1 -2.1,2.9 1,1.2 -1.9,2 -5.2,-0.7 -0.7,-1.4 -3.6,-0.7 -8.7,4.2 -0.6,0.1 -0.3,0.1 -1.4,-1.3 -2.6,0.1 -3.5,-3.6 -3.8,0.7 -1.4,-1.4 -1.4,1.2 -4,-6.3 -2.6,-1.8 0.3,-1.3 -4.7,2.3 -1.4,-1 -4.5,-0.4 -0.6,-3.1 -4.9,0.2 -0.2,0.7 -5.7,1.6 -8.1,1.2 0.5,1.6 1.6,0.4 -2.7,1.1 0.7,0.9 -1.7,1.2 2.6,1.1 -0.2,1.7 -2.7,-0.2 -0.4,0.8 -2.2,-1.2 -4,-0.1 -1.7,1.3 -2.2,-0.8 -2.2,-1.7 -5.3,-0.3 -3.6,2.7 -0.5,1.9 -1.7,-1.6 -1.2,1.6 0.2,1.5 -1,2 1.2,1.4 1.8,0.1 2.2,3.5 -3,1.5 -1.8,2.5 1.7,2.1 -0.3,1.7 2.2,2.7 -1.6,1.5 -2.5,-1.6 -3.1,-1.9 -1.7,0.4 -2.1,-1.4 z m 271.5,-79 1.5,0.9 -0.9,0.7 -4,0.2 -2.3,0.6 0.2,-1.5 2.6,-1.2 z m -78.8,-8.9 2.7,0.1 2.6,1.4 -0.4,1.3 -5.1,-1.1 z m -92.9,-23.7 -1.9,-1.1 5,0.6 -2.1,1.1 z m -86.5,-4.2 2.6,-0.3 -4.2,1.7 -1.9,-0.9 z m 25.7,-0.9 2.6,-0.7 1.1,1.5 -2.3,1.7 -2.6,-0.1 -0.9,-1 z m -77.7,89.4 1.2,-0.6 -1.5,0.6 0,0 0.6,-1.2 1.9,-1 0.2,0 -0.9,0.9 1.4,-0.8 3,1 -0.1,1.4 -0.2,0 z m 144,-85.5 -1.4,0.2 -1,0.2 -4.2,-1.3 2.4,-1 0.5,-2.2 5.2,-1.3 4.2,2.6 -1.4,0.3 0,1.8 -3.6,0.6 4.3,-0.3 1.5,1.3 1.6,-0.8 1.4,1.6 -1,3.7 -3.2,0.1 -1.8,-0.8 -3.4,-0.2 -2.4,-2.2 z m 92.4,98.5 -1.3,3.3 1.6,3.6 -1.8,-0.2 -0.7,1.7 -0.5,-1.7 0.7,-3.3 -0.4,-2.1 0.5,-5.8 -1.1,-1.5 0.2,-4.2 2,-0.8 -0.5,-1.6 1.4,3 0.3,4.2 1.6,5.7 z m -166.2,-71 -2,3.4 1.4,3.7 2.9,1.9 -0.9,0.8 -3.3,-0.9 -0.5,0.7 -3.6,-1.1 0.6,-1.2 -1.3,-0.6 0.2,1.2 -2.9,-1.9 -0.1,-1.3 1.8,-0.5 1.4,-3.7 3.5,-1.2 z m 173.7,-7.9 2.4,-0.4 1.4,0.6 3.3,0.6 -0.5,0.9 -4.6,0.3 -4.1,-1.7 0.7,-1.3 z m -11.1,-3.4 2.3,1.3 2.7,0.1 2.7,1.3 -2.6,1.9 -2.9,-1.4 0.3,1.1 2,0.6 -2.6,0.4 -1,-0.6 -5.4,1.3 -2.1,-0.8 -2,-1.9 -1.6,-0.4 -1.1,0.3 0.4,-1.9 2.6,1 0.8,-1.4 2.8,-1 4,2.4 z m -141.2,-3.3 2.3,0.6 0.3,1.2 -3.5,1.9 -11,3 -4.3,3.4 -1.8,-0.5 0.1,1.4 -2.8,3.5 -3.4,-0.7 -1.5,0.5 -1.1,-1.7 2.2,-0.8 1.4,-2.5 2.9,-2.9 2.2,-0.7 1,-1.2 4.5,-0.8 0,-0.7 2.5,0.3 3.2,-0.5 z m 63.7,-7.4 0.3,-1.4 2.4,-1.3 1.6,0.5 -0.4,1.2 1.7,-0.5 2.4,1.3 2,2.5 -1.7,-0.9 -2.9,0.9 -4.7,0.3 -2.3,0.9 -1.5,-0.3 z m -103.8,-6.5 5.7,-1.5 -1.2,-0.6 2.6,-1.1 2.6,1.5 -3.8,0.9 0.9,2.2 -1.3,-0.7 z",VA:"m 360.13,132.99 0,0 0,0 0,0 z",SM:"m 360.13,128.39 -0.1,-0.1 0.1,-0.1 0.1,0 z",KZ:"m 451.63,123.39 -2.1,0.7 0.6,1.3 -1.4,-0.8 0.4,-0.3 -0.6,0.2 -5.1,1.3 0.1,8.5 -0.9,0.1 -2.6,-2.4 -1.3,0.5 0,0 0,0 0,0 -0.8,0.3 0,0 0,0 0,0 -1.2,0.5 0.5,-2.2 -1.5,-0.3 -3.1,-4.2 2.1,-1.6 2.1,-0.2 1.1,-1.4 0,-2.1 -1.8,0.1 -1.8,-0.7 -3.8,1.9 -2.2,-3.5 -1.8,-0.1 -1.2,-1.4 1,-2 -0.2,-1.5 1.2,-1.6 1.7,1.6 0.5,-1.9 3.6,-2.7 5.3,0.3 2.2,1.7 2.2,0.8 1.7,-1.3 4,0.1 2.2,1.2 0.4,-0.8 2.7,0.2 0.2,-1.7 -2.6,-1.1 1.7,-1.2 -0.7,-0.9 2.7,-1.1 -1.6,-0.4 -0.5,-1.6 8.1,-1.2 5.7,-1.6 0.2,-0.7 4.9,-0.2 0.6,3.1 4.5,0.4 1.4,1 4.7,-2.3 -0.3,1.3 2.6,1.8 4,6.3 1.4,-1.2 1.4,1.4 3.8,-0.7 3.5,3.6 2.6,-0.1 1.4,1.3 -3,1.7 -0.5,3.3 -1.5,0.5 -3.3,-0.9 -1.4,4 -4.2,1.2 1.4,4.4 -1.2,2.2 -3.4,-1.6 -6.2,0.1 -1.9,-1 -1.3,2 -3.2,-1 -1.7,1.4 -3.6,2 -0.9,1.7 -1.3,-1.3 -2.3,0 -0.4,-1.8 -0.9,-0.1 -0.5,-2 -1.6,-1.9 -5.6,0.5 -1.9,-2.1 -1.8,-1.1 -0.7,-2 1.3,-0.5 z m 0.3,0 0.1,0 0,0.1 1.5,-0.7 z m -19.5,2.7 -0.4,-0.2 0.1,-0.3 0.6,0 z",AZ:"m 422.53,134.89 -0.1,0.1 0,-0.1 0.1,0 z m 0.4,0.2 -0.1,0 0,-0.1 0,0 z m 0.5,0.8 0,-0.1 0.1,0 -0.1,0.1 z m -1.3,2.2 -0.1,-0.1 1.9,0.3 0.7,1.5 -1.3,-0.3 z m 3.1,-5.1 2.5,1.6 1.6,-1.5 1.9,2.8 -1.3,4.9 -1.7,-0.9 -0.1,-2 -2.8,1.9 -1.6,-2.6 0.6,-0.4 -1.9,-2.4 2.9,0.5 z",TJ:"m 471.53,135.09 0,0.1 -0.1,-0.2 0,0 z m 0,2.5 0.1,0.1 -0.2,0.1 -0.2,-0.2 z m 5.8,0.9 0.3,2 1.8,0.1 0.3,2.8 -3.1,-0.5 -3.2,1.7 0,-2.6 -2,-1 -0.9,1.8 -1.6,0.9 -2.9,-0.2 1.1,-2.3 -0.4,-1.6 -1.5,-0.6 2.1,-0.7 1.9,-2.8 2,-0.5 0.9,1.8 -1.9,0 -1.2,1.6 4.1,-0.2 1.5,0.9 z",LS:"m 390.23,273.89 0.9,-0.3 1.5,1.6 -2.6,2.8 -2,-2.2 z",UZ:"m 473.73,137.49 -0.2,0 0,-0.1 0.2,-0.1 z m -1.2,-0.3 0.1,0.3 -0.3,0.1 -0.2,-0.5 z m -22.4,-11.8 -0.5,1 1.4,1.2 0.3,-1.5 1.8,1.1 1.9,2.1 5.6,-0.5 1.6,1.9 0.5,2 0.9,0.1 0.4,1.8 2.3,0 1.3,1.3 0.9,-1.7 3.6,-2 -1.5,1.5 2.4,1 0.6,-0.7 2.7,1.5 -2.8,1.5 -1.4,-0.2 -0.9,-1.8 -2,0.5 -1.9,2.8 -2.1,0.7 1.5,0.6 0.4,1.6 -1.1,2.3 -1,0 -1.4,-0.3 0.1,-1.5 -1.8,-0.5 -6.1,-3.9 -0.9,-2.3 -3.6,-0.9 -0.4,-2.1 -2.5,-1.1 -1.8,1.5 -0.4,-0.4 -0.7,0.9 -0.1,1.5 -1.9,-0.1 -0.1,-8.5 5.1,-1.3 -0.6,2.6 0.8,-2.5 z m 21.4,9.7 -0.1,-0.1 0,0 0.1,0.2 z",MA:"m 330.63,147.69 0.1,0 0.1,0.3 1.2,0.1 0.9,0.8 0.2,3.2 1.2,1.5 -0.4,0.9 -2.4,-0.1 -2.2,1.1 0,1.9 -4,2.3 -3.7,0.5 -1.9,1.5 0,2.1 -0.3,1.1 -1.8,0.5 -3.1,0 -1.3,1.7 -0.7,2.4 -3.1,2.9 -0.3,2.2 -1.2,1.7 -4.2,0.1 2.7,-5.2 1.4,-1.4 0.7,-2.9 1.7,-1.1 1.3,-2.6 2.8,-0.8 1.7,-1.4 1.9,-2.9 -0.5,-2.1 1.1,-2.5 1.4,-1.5 3.3,-1.6 1.7,-3.8 1,-0.3 0.1,0.1 0.1,0.1 1.8,1.5 2.7,-0.4 0,0 z",CO:"m 185.43,214.99 0.2,-1.4 1.6,-1 1.4,-2.2 -0.4,-1.1 0,-4 -1.1,-1.3 1.4,-1.4 -0.4,-1.4 0.9,0.3 2.5,-1.8 0.2,-2.1 2.7,-1.5 1.6,0.1 3.4,-2.2 0.3,1.1 -1.2,0.4 -1.8,2.4 -0.2,2.1 1.2,1.8 0.5,2.5 3.8,0.2 1.3,1.6 3.8,-0.1 -0.8,3.1 1.1,2.2 -1,1 1.2,0.9 0.6,2.2 -0.9,-1.6 -1.5,0.7 -3.3,0 -0.4,3.6 1.2,2.4 -1,5.3 -1.5,-0.8 1.4,-2.1 -1.9,-1 -2.6,0.5 -1.6,-0.4 -0.8,-1.8 -3.2,-2.2 -1.9,-1.1 -2.2,-0.4 z",TL:"m 573.73,235.59 0.4,-0.2 0.4,-0.1 -0.3,0.6 z m 1.7,-0.7 0.5,-0.7 3.5,-0.6 -1,1.2 -2.7,1.1 -0.2,-0.6 z",TZ:"m 403.23,239.89 0,-0.2 -0.1,-0.1 0,-0.1 -0.3,-0.1 0,-0.1 0,0 0,-0.1 -0.5,-2.5 -0.4,-0.4 -0.2,-0.2 0,0 -0.2,-0.2 0,0 0,0 -0.2,0.1 -0.1,0.3 -1,-0.2 -0.9,-0.4 -1.8,-0.6 -1.6,-1 -2.3,-5.1 -0.5,-2.8 2.2,-2.3 -0.5,-1.6 0.5,-1.5 -0.7,-1 0.7,-0.1 1.8,0 0,0.1 0.1,-0.1 0,0 0.2,2.7 2.5,0.1 1.6,-2.7 6.9,3.8 0.2,1.1 2.7,2 1.3,1.1 -1.1,0.9 0.5,1.3 -0.4,4.4 2.1,3.4 -5.7,2.4 z",AR:"m 204.93,334.29 0.1,0.2 -0.2,0 z m 26.8,-66.8 1.4,0.1 0.1,3.1 -3.7,2.2 -3.5,4.1 -1.2,3.6 0,1.2 -0.7,3.9 2.8,2.5 -0.5,0.9 1.4,2.2 -1.8,2.8 -2.8,1.2 -3.5,0.7 -2.3,-0.2 -0.5,4.4 -2.8,0.7 -2.1,-1.1 -0.3,2.9 0.9,1.1 1.6,-0.8 0.3,1.5 -1.6,-0.5 0,1 -1.7,1.6 -0.5,3.2 -1.2,0 -2.1,1.4 -0.6,1.3 1.6,2.1 1.6,0.1 0,2.4 -3.1,2.4 -0.6,2.4 -1.9,0.8 -0.6,1.7 1.4,3.5 -2.9,-0.9 -3.7,-0.1 -1,-1.1 0.2,-2.3 -1.6,0.3 -0.8,-3 2.5,-3 -0.5,-1 1.2,-1.7 1.1,-4.6 -1.4,-1.3 0.8,-2 -1,-2.1 0.8,-2.1 -0.4,-3.1 1.1,-4.1 1,-0.5 -0.6,-2.2 0.3,-2.6 1.2,-1 0,-1.9 1.2,-3.9 -1.6,-3.8 1.8,-6.6 1.6,-2.6 1,-0.5 -0.5,-4.3 2.3,-1.6 0.3,-2.4 1.9,-2 3.1,0.8 0.5,1.3 0.8,-1.7 2.4,0.5 3.2,3.1 1.8,0.4 4.8,2.9 -2,3.9 5.4,0.2 1.9,-1.6 z m -26.8,66.7 0,-5.6 0.3,1.7 2.2,2 2.8,1.6 2.4,0.6 -3.7,0.4 -1.3,-0.2 -0.5,-0.1 z",SA:"m 429.03,161.99 0.9,1.9 2.4,1.9 0,1.9 1.3,2 0.3,0.4 0.4,-0.1 0.2,0.6 0.5,0.1 1.9,2.7 5,0.4 0.9,1.5 -1.3,3.9 -5.7,2 -5.5,0.8 -1.8,0.9 -1.4,2 -4.4,-0.6 -3.8,0.2 -0.7,1.9 -3,-4.6 -0.5,-1.6 -2.5,-1.9 -1.1,-1.7 0,-2.5 -1.2,-2.4 -1.8,-1 -0.5,-1.9 -3.9,-5.8 -1.2,-0.2 0.7,-2.5 2.1,0.3 3.7,-2.7 -2,-2.1 4.2,-1.3 2.5,0.4 3.1,1.8 5,3.9 3.6,0.2 1.7,0.2 z",PK:"m 479.03,143.89 2.7,1.2 1.6,1.8 0.5,1.2 -2.4,1.3 -2.8,-0.6 -1.1,0.9 0.5,2.5 2.4,2.2 -1.5,0.9 0.1,1.3 -2.2,2.5 -0.9,1.8 -2,2.3 -2.7,-0.2 -1.9,2.5 3,4.3 -2.1,1.1 -2.1,-0.2 -1.3,0.8 -1.6,-0.4 -1.9,-2.8 -5.4,0.5 -3.7,0 0.5,-2.1 2.4,-0.8 -0.7,-3.3 -1.6,-0.7 -2,-2.7 3.1,1 3.1,0 4,-0.9 0.3,-2.3 3.4,-1.9 2.3,-0.2 0.4,-2.5 1.5,-0.5 -0.6,-1.5 2,-0.1 1.1,-2.4 -0.9,-1.9 2.7,-1.7 z",YE:"m 435.83,181.19 1.4,3.3 0.7,1.3 -1.6,2 -5.1,1.7 -1.7,1.4 -1.3,0 -2.5,1.2 -1.7,0.1 -3.6,1.5 -0.9,-0.5 -1.4,-5.3 0.1,-1.5 0.7,-1.9 3.8,-0.2 4.4,0.6 1.4,-2 1.8,-0.9 z",AE:"m 444.03,167.89 0.2,0.2 0,1.1 -1.1,0.2 -1.2,4.4 -5,-0.4 -1.9,-2.7 4.9,0.2 3.7,-3.9 0.2,0.8 z m 0,0.8 0.2,-0.1 -0.3,0 0,0.2 z",KE:"m 411.33,226.69 -2.7,-2 -0.2,-1.1 -6.9,-3.8 0.3,-1.6 -0.4,-0.9 1.8,-2.7 -0.1,-1.5 -1.8,-3.4 2.8,-1.5 1,0.8 1.7,0.3 2.4,1.6 2.8,0.4 2.3,-1.7 2.2,0.6 -1.8,2.2 0,7 1.1,1.6 -2.6,2 z",PE:"m 192.13,217.99 3.2,2.2 0.8,1.8 1.6,0.4 2.6,-0.5 1.9,1 -1.4,2.1 1.5,0.8 -1.5,-0.1 -4.1,1.8 -0.4,2.4 -1.7,2.2 3.5,4.8 1.9,-0.2 1.3,-0.9 -0.3,3 2.1,-0.1 1.7,3 -0.8,2.2 0.4,1 -0.9,2.6 -1.3,0.6 1.8,0.8 0.1,0 0.1,0 -0.2,0.5 0.1,0.1 -1.2,1.5 0.3,0.4 -0.9,1.5 -0.8,0.1 -2.1,-2 -7.1,-3.8 -2.1,-2.5 0.1,-1.4 -2.7,-4 -2.5,-5.9 -1.9,-2.7 -2.2,-1.4 -0.3,-3.5 1.8,-1.6 -0.4,1.3 2.8,1.8 1.4,-3.1 3.2,-1.5 2.1,-2 z",DO:"m 198.63,182.19 0,0 -0.1,-0.1 0,0 -0.1,-0.1 0.6,-0.3 -0.1,-1.9 1.4,-0.5 2.1,0.6 0.6,1.1 2.4,0.9 -1.1,0.4 -3.4,0 -1.4,1.6 -0.6,-0.8 0.1,-0.6 z",HT:"m 198.63,182.19 0,0 -0.1,-0.1 0,0 z m 0.3,-2.4 0.1,1.9 -0.6,0.3 0.1,0.2 0.1,0 0.4,0.3 -0.1,0.6 -3,-0.4 -1.1,0.4 -0.7,-1.3 3,0.5 -0.1,-2 -1.3,-0.7 z",PG:"m 606.23,235.09 0,-4.2 0,-8.2 5.8,2.3 1,0 2.4,2 -0.1,1.2 3.3,0.9 0.8,1.4 -1.8,0.1 0.5,1.4 1.8,1.1 2.1,2.8 3.3,0.2 -0.5,1.8 -5.2,-0.7 -1.7,-1.4 -1.9,-2.6 -4.5,-1 -0.7,2.7 -1.4,0.7 z m 17.2,-12.6 -0.6,-1.7 1.1,1.5 3.5,1.6 2.1,2 -0.5,1.1 -1.2,-2.4 z m -0.6,7.3 -3,-1.1 5.6,-0.6 1.2,-0.9 -0.2,-1.5 1.7,0.3 -0.5,2 -3.2,1.7 z",AO:"m 359.73,228.69 0,-0.5 -0.4,-0.9 1.4,-1.2 0.6,0.5 -1.2,0.8 z m 21.3,23 -4.9,0.7 -3.9,-0.5 -0.6,-0.7 -8.6,0 -1.5,-0.9 -2.7,0.6 0,-2.8 1.4,-4.6 2.2,-2.3 0.2,-3 -1.4,-3.1 0.7,-1.4 -2.1,-4.3 1.7,-0.5 6.6,0.1 0.7,2.7 1.2,1.5 3.3,-0.2 0.4,-1.9 4.3,0.5 0,4.1 0.7,1 0.2,2.6 3.3,-0.8 0,4.1 -3.8,0 0,6.2 z",KH:"m 542.13,189.59 0,4.6 -3.4,2.5 -2.4,1.2 -1.6,-0.2 -1.4,-2.2 -1.1,-3.7 2.5,-1.7 3,0.2 3.1,0.1 z",VN:"m 536.33,197.89 2.4,-1.2 3.4,-2.5 0,-4.6 0.3,-1.1 -2.2,-3.4 -3.4,-3.5 -1.7,-1 2.1,-1.5 -1.7,-1.8 -1.8,0.2 -0.3,-1.4 -1.6,-1.7 0.7,-0.7 2.8,0.5 2.6,-1.7 2.8,1.2 -0.4,0.8 2.7,1.8 -2,1.1 -1.7,1.8 -0.8,2 1.9,3 4.1,4.1 1.4,4.8 -0.9,3 -3.3,1.9 -1.1,-0.3 -0.4,1.9 -3.3,1.4 0,-2.7 z",MZ:"m 403.03,243.59 -0.3,-2.5 0.5,-1.2 4.8,0.3 5.7,-2.4 0.8,8.3 -1.8,3.2 -5.4,2.8 -4.2,4 -0.5,1.1 1.6,3.3 -0.7,5 -2.6,1 -2.4,1.8 0.8,1.8 -1.1,0 -0.4,0 -0.2,-1.2 -0.2,-0.6 0.1,-3.1 -1.3,-4.1 2.1,-2.2 1.2,-2.5 -0.5,-1.1 0.5,-2.2 -0.1,-3.3 -4.9,-2 -0.4,-1.3 5.7,-1.9 0.9,1.1 1.3,-0.4 -0.2,2.9 1.7,1.3 1.3,-1 0.1,-2.7 z",CR:"m 176.13,196.89 0.4,0.8 1.7,1.8 -0.9,2.3 0,0 -0.3,-0.5 -5.1,-3.3 0.3,-1.4 2.6,0.2 z m 1.5,5.6 -0.3,-0.6 0,-0.1 0,0 z",BJ:"m 343.23,195.39 0.4,2.1 -2,3 -0.1,5.1 -1.6,0.2 -0.5,0.1 -0.1,-5.4 -1.3,-3.7 1,-0.9 1.9,-0.9 0.8,-0.9 z",NG:"m 341.53,205.59 0.1,-5.1 2,-3 -0.4,-2.1 1,-3.4 2.6,-0.8 2.8,1.7 1.7,-0.7 3.4,1 1,-0.8 2.5,-0.2 2,0.6 2.1,-1.3 0.9,1.3 1.2,1.7 -4.7,7.4 -1.8,3.6 -1.4,-1.3 -3.3,2.5 -0.5,1.9 -4.6,1 -1.1,-0.7 -2.3,-3.2 z",IR:"m 422.03,143.59 -1,-1.8 -0.5,-3.1 1.6,-0.6 1.2,1.4 1.3,0.3 0.5,-0.1 0.2,0.1 2.8,-1.9 0.1,2 1.7,0.9 0.2,1.5 2.3,0.8 1.7,1.4 1.6,0.4 4,-0.6 -0.2,-1.1 2.9,-1.6 3.4,-0.4 0.3,0.6 2.8,0.6 2.9,2.4 1.6,0.1 0.2,2.1 -1.4,5.5 0.5,3.3 1.7,0.2 0.2,1.1 -1.8,2.1 2,2.7 1.6,0.7 0.7,3.3 -2.4,0.8 -0.5,2.1 -3.2,-0.3 -5,-0.9 -0.5,-2.2 -1.3,-0.7 -3,1.5 -6.5,-3 -2.6,-4.7 -2.1,-0.4 -0.8,0.9 -1.6,-2.2 0.3,-1.6 -0.9,-1.3 -2.1,-1.2 -1.7,-2.2 1.8,-3.9 -2,-0.4 z",SV:"m 168.13,192.09 -1.8,0.3 -2.5,-0.9 -0.1,-0.2 1.5,-1.1 3.2,1.1 z",SL:"m 314.33,204.59 -2.8,-1.3 -0.7,-2.8 1.5,-1.5 2.4,-0.3 1.9,2.9 -0.6,1.4 z",GW:"m 307.53,196.79 -1.7,-0.5 -1.6,-2.1 3,-0.7 2.8,0 0,1.9 -1.9,0.4 z",HR:"m 371.73,131.79 -1.3,-0.9 -0.3,-0.2 0.4,0.2 1.1,0.6 0,0.1 z m -9.4,-7.2 3.3,0.1 0.6,-1.8 1.7,-0.7 1.6,1.3 3,0.1 0.2,1.8 0,0.7 -4,-1 -2.2,0.3 0.8,2.2 2.6,3 -1.7,-0.4 -3.5,-2.5 0,-2.2 -1.7,0.7 z",BZ:"m 165.63,183.49 0.5,-0.1 1.1,-1.2 0.2,3 -1.4,2.1 -0.6,0 z",ZA:"m 397.83,270.09 0.4,0 1.1,0 -1,3.5 -2.3,2.1 -1.5,2.7 -2.9,3 -3.4,2.7 -4.3,1.4 -4.4,-0.4 -1.3,0.7 -4.3,0.9 -2.2,-2 -1.3,-2.1 0.9,-0.4 -0.2,-2 -1.7,-2.9 -1.6,-3.6 1.2,-1.2 0.6,1.4 3.3,0.5 1.6,-1.1 0,-7.5 1.7,2.8 -0.3,1.6 1.9,-0.1 2,-1.8 0.6,-1.4 3.4,1.1 1.5,-0.4 0.5,-1.8 1.9,-0.9 0.3,-1.3 2.3,-2 2.2,-0.9 1.9,0.3 1.8,0.1 1.3,4.1 -0.1,3.1 -1,-0.5 -1.1,1.4 0.6,1.6 z m -7.6,3.8 -2.2,1.9 2,2.2 2.6,-2.8 -1.5,-1.6 z",CF:"m 380.03,196.89 1.5,2.1 -0.3,2 1.4,0.2 2.2,2.6 2,1.3 0.1,1.1 1.9,1.9 -3.5,-0.6 -5.9,2.3 -3.7,-0.4 -1.7,-1.4 -2.2,1.5 0.1,1.7 -2.2,-0.5 -1.7,0.5 -0.7,2.3 -0.2,-1.1 -1.8,-1.8 -1.5,-4.3 2.1,-2.9 2.5,0 3.5,-1 0.9,-1.8 2.6,-0.3 3.9,-3.5 z",SD:"m 382.63,201.19 -1.4,-0.2 0.3,-2 -1.5,-2.1 -1.2,-3.5 -0.3,-2 0.9,-0.7 1.1,-3 1.7,-0.1 0,-7.4 0,-1 1.9,0 0,-4 12,0 10.8,0 0.8,2.4 0.4,4.2 2.1,1.4 -3.1,1.8 -1.1,3.8 0.2,1.7 -0.8,3 -0.8,0.1 -1.6,3.7 -0.5,-0.3 -1,2.7 -1.7,-2.6 0.1,-2.7 -2.2,0.4 0.6,1.9 -2.2,2.4 -2.4,-0.9 -2.2,1.8 -4.4,-0.4 -1.4,-1.7 -1.4,0.2 z",CD:"m 392.23,224.09 -0.2,3.3 0.8,3.1 2,2.9 -3.2,0.5 -1.1,1.2 0.4,0.6 0.3,0.8 -0.6,3.1 1.3,1.8 1.4,-0.4 0,2.5 -1.1,0 -3.9,-3.6 -0.9,0.8 -2.6,-0.7 -0.1,-0.9 -1.9,0.4 -0.6,-1 -3.3,0.8 -0.2,-2.6 -0.7,-1 0,-4.1 -4.3,-0.5 -0.4,1.9 -3.3,0.2 -1.2,-1.5 -0.7,-2.7 -6.6,-0.1 -1.4,0.4 -0.4,-0.6 0.4,-1.3 1.2,-0.8 2.5,-0.7 0.9,1 2.6,-2.8 0.1,-2.3 2.9,-3 0.6,-5.1 1,-2.5 -0.1,-1.7 2.2,-1.5 1.7,1.4 3.7,0.4 5.9,-2.3 3.5,0.6 1.8,1.5 2.7,-0.5 2,2 -0.2,2 1,0.5 -1.4,1.3 -0.1,0.5 -1,0.8 -0.5,1.7 -0.7,0.8 0.6,0 -0.1,0.8 0,0.9 -0.4,0.3 -0.3,0.3 -0.5,0.5 -0.1,1 0,0.3 0.2,0.1 0.4,0.7 z",KW:"m 429.03,161.99 -1.9,-1 -1.7,-0.2 1.1,-1.8 1.6,-0.1 0.3,1.4 z",DE:"m 353.93,119.39 0,0 0,0 z m -1,-18.4 0.3,0 1.1,0.3 3.9,2.3 2,-1.5 2.2,-0.3 0.7,1.4 0.4,0.4 -0.1,0 0.1,0.1 -0.3,-0.3 0.4,0.8 -0.3,2.2 1,0.7 0.3,4.4 -4.4,1.2 -0.2,1.6 2.7,2.4 -2,1.6 0.5,1.5 -1.6,-0.5 -2.3,0.7 -2.4,-0.3 -1.3,-0.7 0.3,0.4 -1.4,0.2 -1.7,0 1.2,-3.4 -3.6,-1.2 0.3,-0.9 -0.7,-0.8 0.5,-0.4 -0.7,-1.2 0.7,-2.7 1.2,-1 0.4,-2.6 0.2,-1.3 2.4,0.5 0.8,-0.9 z",BE:"m 347.83,111.69 0.7,1.2 -0.5,0.4 -0.8,0.6 0.2,0.9 -3.2,-1.1 -3.1,-2.8 1.2,-0.6 0.4,-0.1 0.9,0.4 0.8,-0.4 0.1,0.1 -0.1,-0.1 1.5,-0.3 z",IE:"m 322.43,100.59 -1.8,1.6 1.7,0.9 2,0 0.5,3 -0.7,2 -2.3,0.3 -2.2,1.3 -2.1,0.3 -1.2,-1.2 2.9,-3.5 -2.1,-0.3 0.3,-2.5 2.4,0.2 0.6,-2.4 z",KP:"m 586.53,132.09 -2,1.7 0.1,1.6 -4.2,2.5 -0.1,1.3 1.7,1.2 -2.3,0.7 -0.9,1 -2.1,-0.4 -0.4,0.8 -1.1,-1.9 1.3,-1.8 -2.1,-1.7 3.1,-1.8 1.2,-1.8 2.9,0.7 -0.2,-1.4 3.2,-1.1 0.3,-1.2 1.3,1 0.2,0.3 z",KR:"m 578.83,142.09 0.9,-1 2.3,-0.7 1.9,2.9 0.2,3.9 -1.6,1.7 -1,-0.4 -1.1,1.1 -2.2,-0.4 z",GY:"m 221.43,201.49 1.7,1 3.7,3.7 -0.1,1.1 -1.6,2.5 3,4.3 -1.2,-0.2 -3.2,1.6 -1.8,-1.3 -0.5,-1.6 0.9,-2.3 -0.9,-2.2 -1.4,-0.2 -1.2,-1.4 0.3,-1.2 1.7,-1.1 -0.4,-1.3 z",HN:"m 167.43,187.59 4.4,-0.5 3.1,0.3 2.2,1.6 -3.2,0.4 -1.8,1.6 -1.9,0.4 -1.1,1.5 -0.4,-0.5 -0.6,-0.3 0.3,-0.8 -3.2,-1.1 0.4,-1.3 z",MM:"m 512.93,177.09 0.7,-0.5 -0.1,-1.3 1.2,-0.8 0.2,-3.3 1.5,0.3 1.8,-3.8 0,-1.5 3.2,-1.8 1.2,-1.8 0.4,-0.6 2.2,1.9 0,3.5 -1.9,1.7 -0.1,2.4 1.8,-0.4 0.6,1.8 1.2,0.2 -0.7,1.8 1.5,0.2 0.5,1.3 1.9,-0.3 -0.9,0.5 -1.2,2 -3,1.3 -0.9,-0.3 -1.2,2.6 2.7,4.6 -1.1,2.6 1.7,2.1 0.9,3.7 -1.7,2.8 -0.3,-5.5 -1.5,-3.2 -0.3,-2.8 -0.8,-1.4 -3.4,2.5 -2.4,-0.6 0.8,-2.9 -1.2,-3.7 -1.8,-1.2 z",GA:"m 355.03,215.89 3,0 0,-2.3 0,-0.2 3.7,0.3 -0.1,1.7 2.4,0.6 -1.2,2.2 1.2,0.7 -0.7,3.6 -3.2,-1.1 -1.7,0.8 0.5,2.6 -1.3,0.5 -3.6,-4 -1.1,-2.4 1.1,-0.3 0.1,-1.9 z",GQ:"m 358.03,213.59 0,2.3 -3,0 -0.8,-0.4 0.8,-2.2 0.4,0.3 z",NI:"m 172.23,196.59 -3.7,-3.4 0.6,-0.3 1.1,-1.5 1.9,-0.4 1.8,-1.6 3.2,-0.4 -1.4,7 0.4,0.9 -1.3,-0.1 z",LV:"m 388.63,93.89 0.6,1.9 1,1.9 -1.1,0.9 -1.9,0.4 -3.3,-2.1 -0.8,0.5 -4.5,-0.5 -2,1 0,-2.1 1.3,-2 1.7,-0.5 2,2.1 1.4,-0.7 -0.2,-1.7 1.9,-0.6 2.3,1.5 z",UG:"m 397.23,219.69 0,-0.1 0,0.1 z m -4.3,0.7 0,-0.9 0.1,-0.8 0.5,-0.6 -0.4,-0.2 0.5,-1.7 1,-0.8 1.8,-1.3 -0.3,-0.5 -1,-0.5 0.2,-2 5.1,-0.5 0.9,-0.9 1.8,3.4 0.1,1.5 -1.8,2.7 -2.7,0.2 -1.6,2.2 -1.8,0 -0.7,0.1 -1,0.8 z",MW:"m 403.13,239.59 0,-0.1 0,0 z m -0.3,-0.3 0,0 0,-0.1 0,0.1 z m -0.9,-3 -0.2,-0.2 0,0 z m -0.4,-0.4 0,0 0,0 z m -2.2,-0.2 0.9,0.4 1,0.2 0.8,3.8 0,3.2 1,0.3 1.9,2.2 -0.1,2.7 -1.3,1 -1.7,-1.3 0.2,-2.9 -1.3,0.4 -0.9,-1.1 -0.7,-0.6 1,-2.3 -0.2,-3.2 0.8,-0.5 z",AM:"m 425.33,139.79 -0.2,-0.1 -0.5,0.1 -0.7,-1.5 -1.9,-0.3 -2.1,-1 -0.5,-2.2 1.5,-0.3 1.5,-0.1 1.9,2.4 -0.6,0.4 z m -2.8,-4.9 0,0 -0.1,0 0,0.1 z m 0.4,0.2 -0.1,-0.1 0,0 0,0.1 z m 0.5,0.8 0,0 0.1,-0.1 -0.1,0 z",SX:"m 419.13,195.79 1.9,2 2.9,-0.8 1.3,0.4 1.8,-1 3,-0.1 0,3.4 -1.9,2.8 -1.9,0 -5.6,-1.9 -2.7,-3.1 0.6,-0.7 z",TM:"m 445.53,132.89 1.5,0.6 -0.4,-1.1 1.8,-1.5 2.5,1.1 0.4,2.1 3.6,0.9 0.9,2.3 6.1,3.9 1.8,0.5 -0.1,1.5 -1.4,-0.5 -1.9,1.1 -0.6,1.8 -4.2,2.4 -1.9,-1 -0.2,-2.1 -1.6,-0.1 -2.9,-2.4 -2.8,-0.6 -0.3,-0.6 -3.4,0.4 -2.9,1.6 0.1,-3.5 -0.8,-2.3 -1.6,-0.2 0.4,-2.1 1.5,0.8 1.9,-1.1 -1.5,-2.2 -0.8,-0.1 0,0 1.3,-0.5 2.6,2.4 0.9,-0.1 1.9,0.1 z m -7.6,-0.1 0.2,-0.3 0.6,0 0,0 -0.8,0.3 0,0 z m 0,0 -0.5,1.3 -0.7,-0.8 1.2,-0.5 0,0 z",ZM:"m 390.93,235.69 1.2,-1.4 -0.5,-0.4 3.2,-0.5 0.9,1.1 0.2,-0.4 1.6,1 1.8,0.6 1.4,2.3 -0.8,0.5 0.2,3.2 -1,2.3 0.7,0.6 -5.7,1.9 0.4,1.3 -3,0.8 -0.2,0.9 -1.2,0.6 -1.1,0.6 -1,1.6 -0.6,0.2 -2.8,-0.5 -2,-0.6 -1.6,0.3 -2.6,-2.9 0,-6.2 3.8,0 0,-4.1 0.6,1 1.9,-0.4 0.1,0.9 2.6,0.7 0.9,-0.8 3.9,3.6 1.1,0 0,-2.5 -1.4,0.4 -1.3,-1.8 0.6,-3.1 z",NC:"m 401.23,148.19 -0.3,0 -0.1,0 -0.6,-0.3 -1.2,0 0,0 0,0 0,0 -0.1,0 0,0 3.6,-1.1 -1.1,1.4 z m -2.5,-0.3 0.1,0 -0.1,0.1 z",MR:"m 319.73,164.49 6,3.8 1.3,0.9 -3.3,0 2,18.9 -10,0.1 -1.9,-0.2 -1,1.5 -4,-3.7 -3.8,0.4 -0.4,1.2 1,-4.2 -1,-2.8 0.7,-1.6 -1.7,-1.1 0.2,-1.1 7.6,0 0,-3.4 1.9,-0.9 0,-5.1 6.3,0 z",DZ:"m 327.03,169.19 -1.3,-0.9 -6,-3.8 0,-0.7 0,-2.1 1.9,-1.5 3.7,-0.5 4,-2.3 0,-1.9 2.2,-1.1 2.4,0.1 0.4,-0.9 -1.2,-1.5 -0.2,-3.2 -0.9,-0.8 6.3,-3 3.6,-0.7 3.5,-0.2 0.9,0.5 4.1,-0.9 2.3,0.3 -0.4,1.1 -0.3,3.9 -1.4,1.6 1.6,2.9 1.4,1 0.9,3.8 0.6,2.3 0,5.4 -0.8,0.8 1.2,2.6 2.9,1.1 0.8,1.6 -8.6,5.3 -3.2,2.8 -3,0.6 -2.2,0 0.2,-1.3 -2.5,-0.8 -1.4,-1.8 z",LT:"m 377.03,100.09 -0.2,-1.2 -0.2,-1 2,-1 4.5,0.5 0.8,-0.5 3.3,2.1 0.3,0.9 -1.7,1 -0.8,1.7 -2,1.1 -1.8,-0.1 0,-0.6 -1.3,-0.5 0.1,-1.4 z m -0.7,-0.1 0.3,-0.6 -0.1,0.6 z",ET:"m 416.33,196.19 -0.2,0.2 0.2,0.2 0.3,0.3 1.9,-0.1 -0.6,0.7 2.7,3.1 5.6,1.9 1.9,0 -5.8,5.9 -1.8,-0.1 -4,1.9 -2.2,-0.6 -2.3,1.7 -2.8,-0.4 -2.4,-1.6 -1.7,-0.3 -2.3,-3.9 -2,-1.9 -1.2,-0.3 0.3,-1.3 1.4,0.1 0.2,-2 1,-2.7 0.5,0.3 1.6,-3.7 0.8,-0.1 0.8,-3 2.6,-1.2 5.7,1.5 2.9,3.1 -1.2,1.8 z",ER:"m 417.43,193.89 -2.9,-3.1 -5.7,-1.5 -2.6,1.2 -0.2,-1.7 1.1,-3.8 3.1,-1.8 2.1,5.6 2.8,0.9 3.7,3.8 -0.8,0.6 z",GH:"m 338.53,206.19 -6.2,2.6 -2,-0.7 0,-0.1 0.3,0.1 0.2,-0.1 -0.7,-3.3 1.4,-2.6 -0.4,-2.4 -0.1,-2.9 5,-0.3 1,1.8 0.3,6.4 z",SI:"m 362.33,124.59 0,-0.1 0.2,-0.1 -0.6,-1.7 0.6,-0.6 1.6,0.4 3,-1.2 0.3,0 0.5,0.9 -1.7,0.7 -0.6,1.8 z",GT:"m 166.03,187.29 0.6,0.3 0.8,0 -1.8,1.3 -0.4,1.3 -1.5,1.1 0.1,0.2 -2.4,-0.4 -1.7,-1.2 0.9,-2.9 2.6,-0.6 -2,-1.8 0.9,-1.1 3.5,0 -0.2,3.8 z",BA:"m 370.13,130.69 -0.2,-0.1 0,0 -2.6,-3 -0.8,-2.2 2.2,-0.3 4,1 0.7,-0.1 -0.4,3.2 -1.4,1.3 0,1 -1.1,-0.6 z",JO:"m 404.13,156.59 0.2,-0.2 -0.2,-0.1 -0.1,0 0.1,-0.2 0.2,0 0.1,-0.9 0,-1.8 0.3,-0.3 2,1 3.8,-2.3 0.6,1.9 0.1,0.8 -4.2,1.3 2,2.1 -3.7,2.7 -2.1,-0.3 0.1,-0.4 -0.1,-0.1 0.4,-1.8 z",SY:"m 410.53,151.79 -3.8,2.3 -2,-1 0.3,-0.4 -0.1,-1 1.5,-1.7 -1.3,-0.9 -0.1,-1.7 0,-1.1 1.4,-2 3.1,-0.1 2.9,0.3 4.7,-1.3 0.3,0.5 -1.9,1.3 -0.3,3.8 -1,1 z",MC:"m 350.53,128.69 0,0.1 -0.1,0 0.1,-0.1 z",AL:"m 376.43,135.29 0,0 0,-0.1 z m -3,-2.8 0,-0.3 0,-0.2 0.6,-0.8 0.7,0.3 0.8,0.8 0.2,0.7 -0.3,0.8 0.4,1 0,0.4 0.2,0 0.2,0 0.2,0 -0.1,0.1 0.1,0 0,0.1 -0.1,0.1 0.1,0 0,0.1 0.1,0.1 0,0.1 0,-0.1 -1.2,2 -0.7,0.3 -1.4,-2.2 0.2,-2.7 -0.1,-0.3 z m 0,-0.4 0,0 -0.1,0 z",UY:"m 234.53,282.19 -0.9,1 0.2,0.9 0,0.2 0.3,0.2 -0.8,1.4 -2.2,1.2 -2.3,0 -3.3,-1 -1,-1.2 0.3,-3.1 0,-1.2 1.2,-3.6 1.5,-0.2 1.5,2.1 0.8,-0.5 z",CNM:"m 401.43,148.19 0,0 0,0 -0.2,0 0,0 z m -2.7,-0.3 0,0 0,0.1 0.1,-0.1 0,0 0,0.1 z m 0.2,0 0,0 0,0 0.1,0 0,0 z m 1.9,0.3 0,0.1 0,0 -0.5,-0.3 -1.3,-0.1 0,0 1.2,0 z", +MN:"m 561.33,119.09 0.7,-0.2 -0.3,-0.3 1.5,0 2.6,2.6 -0.4,0.8 -2.7,-0.3 -3.2,1 -1.8,2 -2.1,0.2 -1.8,1.5 -3.1,-0.8 -1.1,1.5 1,1.7 -4.7,2.9 -5.2,0.4 -3,1.2 -2.8,0 -3.3,-1 -0.7,-0.7 -10.1,-0.5 -1.9,-3.7 -3.6,-1.5 -5,-0.6 0.3,-3.3 -1.4,-2.6 -2.4,-0.8 -2.1,-1.5 -0.3,-1.4 8.7,-4.2 3.6,0.7 0.7,1.4 5.2,0.7 1.9,-2 -1,-1.2 2.1,-2.9 6.3,2.1 0.2,1.8 2.7,1.2 3.1,-0.9 5,1.4 1.2,1.5 4.2,0.5 4.4,-1.2 2.4,-1.7 2.1,1 2.5,0.2 -2.3,4.1 0.7,1.1 z",RW:"m 391.83,222.89 -0.2,-0.1 0,-0.3 0.9,-0.9 -0.3,-0.6 0.3,-0.3 0.4,-0.3 0.7,0.2 1,-0.8 0.7,1 -0.5,1.5 -1.3,0.5 z",SO:"m 416.53,210.19 4,-1.9 1.8,0.1 5.8,-5.9 1.9,-2.8 0,-3.4 4.5,-1.1 -0.9,4.5 -5.5,9.6 -3.7,3.8 -4.9,3.5 -3.7,4.4 -1.1,-1.6 0,-7 z",BO:"m 204.03,248.89 -0.1,-0.3 0.3,0.3 -0.1,0 z m -0.8,2.5 -0.3,-0.4 1.2,-1.5 0.9,-0.4 -1.5,-1.6 0.9,-2.6 -0.4,-1 0.8,-2.2 -1.7,-3 2.4,0 3.2,-2 2.3,-0.5 0.1,2.9 1.9,2.5 2.5,0.4 2.4,1.7 2.6,0.5 0.6,4.8 3.2,0.1 0.2,1.8 1.6,1.8 -1.2,3.9 -1.8,-1.7 -5.1,0.7 -0.9,1.8 -0.8,3.4 -2.4,-0.5 -0.8,1.7 -0.5,-1.3 -3.1,-0.8 -1.9,2 -1.3,0 -0.6,-3 -1.1,-1.7 0.6,-2 -1,-1 z",CM:"m 361.73,213.69 -3.7,-0.3 0,0.2 -2.6,0 -0.4,-0.3 -0.3,-2.9 -2,-1.8 0.5,-1.9 3.3,-2.5 1.4,1.3 1.8,-3.6 4.7,-7.4 -1.2,-1.7 0.5,-0.1 -0.1,0.4 0.4,-0.1 1.3,2.7 -0.2,1.5 1.2,1.5 -2.9,0 -0.4,0.7 2.3,2.2 0.6,1.8 -2.1,2.9 1.5,4.3 1.8,1.8 0.2,1.1 -0.1,1 -3,-0.9 z m 2.1,-21 0,0.1 0,-0.1 z",CG:"m 361.73,213.69 2.5,-0.1 3,0.9 0.1,-1 0.7,-2.3 1.7,-0.5 2.2,0.5 -1,2.5 -0.6,5.1 -2.9,3 -0.1,2.3 -2.6,2.8 -0.9,-1 -2.5,0.7 -0.6,-0.5 -1.4,1.2 -0.4,-0.8 -1.3,-1.2 1.3,-0.5 -0.5,-2.6 1.7,-0.8 3.2,1.1 0.7,-3.6 -1.2,-0.7 1.2,-2.2 -2.4,-0.6 z",EH:"m 303.63,177.69 -0.1,-0.2 0.2,-1.1 4.2,-0.1 1.2,-1.7 0.3,-2.2 3.1,-2.9 0.7,-2.4 1.3,-1.7 3.1,0 1.8,-0.5 0.3,-1.1 0,0.7 -0.1,2.7 -6.3,0 0,5.1 -1.9,0.9 0,3.4 -7.6,0 z",RS:"m 373.03,129.19 0.4,-3.2 -0.7,0.1 0,-0.7 -0.2,-1.8 1.2,-0.6 1.3,0.1 2.4,2.3 -0.2,0.9 2.5,1.3 -0.6,1 1.1,1.6 -1.1,1.8 -0.8,0 -0.7,0.2 0.3,-1 -1.9,-1.4 -0.8,1 -1.4,-0.8 z",ME:"m 373.03,129.19 0.8,0.8 1.4,0.8 -0.6,0.3 0.1,0.4 -0.7,-0.3 -0.6,0.8 0,0.1 -0.1,0 -0.4,0 0.5,0.4 -0.1,0.3 0.1,0.3 -1.2,-1 -0.5,-0.3 -0.1,-0.2 0,-0.1 0,-1 z",TG:"m 338.03,196.79 1.3,3.7 0.1,5.4 -0.4,0.1 -0.5,0.2 -1.2,-1.5 -0.3,-6.4 -1,-1.8 1.2,0.3 z",LA:"m 542.13,189.59 -1.3,0.8 -3.1,-0.1 0.8,-2.7 -1.7,-1.6 0.2,-1.6 -1.6,-1.9 -1.2,-0.2 -1.5,1.2 -1,-0.8 -1.8,1.5 0.2,-4 -1.5,0 -0.7,-1.6 1.2,-2 0.9,-0.5 1,0.9 -0.4,-2.3 1.2,-0.3 1.6,1.7 0.3,1.4 1.8,-0.2 1.7,1.8 -2.1,1.5 1.7,1 3.4,3.5 2.2,3.4 z",AF:"m 479.73,143.39 -1,0.3 0.3,0.2 -3.8,0.4 -2.7,1.7 0.9,1.9 -1.1,2.4 -2,0.1 0.6,1.5 -1.5,0.5 -0.4,2.5 -2.3,0.2 -3.4,1.9 -0.3,2.3 -4,0.9 -3.1,0 -3.1,-1 1.8,-2.1 -0.2,-1.1 -1.7,-0.2 -0.5,-3.3 1.4,-5.5 1.9,1 4.2,-2.4 0.6,-1.8 1.9,-1.1 1.4,0.5 1.4,0.3 1,0 2.9,0.2 1.6,-0.9 0.9,-1.8 2,1 0,2.6 3.2,-1.7 z",UA:"m 378.73,117.59 0.3,-0.7 0.4,-1 0.2,-1.1 2.8,-2.5 -0.9,-2.5 1.5,-0.9 2.6,-0.1 2.9,0.8 3.9,0.6 2.3,-0.5 0.8,-1.3 1.6,-0.1 3.9,-0.6 1.2,1.5 -0.5,1.3 1.7,0.1 1.1,2.2 3.4,-0.2 3.4,1.4 1.8,1.5 -0.8,1.2 0.1,2.3 -1.8,-0.1 -1.2,1.8 -4.4,1.1 -2.1,1.2 1.5,2.5 -3.1,1.7 -2.1,-2.9 1.7,-0.7 -3.9,-0.7 1.2,-0.6 -2.3,-0.4 -2.6,2.4 -0.2,1 -1.7,-0.1 -1.1,-0.5 1.4,-2.4 2.2,0.2 -1.9,-2.8 0.3,-0.8 -2.9,-1.4 -2.2,0.4 -2.6,0.9 -4.5,-0.1 -0.5,-0.4 z m 15.3,4.9 0.5,0.7 0.2,-0.2 -0.6,-0.6 z m 7.4,0.7 1.8,1 -0.3,-0.9 -1.2,-0.6 z",SK:"m 379.43,115.89 -0.4,1 -0.3,0.7 -3.2,-0.3 -1.1,0.9 -4,1 -1.3,-0.6 -0.6,-0.9 0.2,-0.6 2.2,-1.2 1.4,-1.1 5.8,0.4 z",JK:"m 485.23,147.19 -1.4,0.9 -0.5,-1.2 1.1,0.4 z",BG:"m 391.03,128.69 -1.7,3.1 0.6,1 -1.8,-0.2 -1.4,0.8 -2.1,1.1 -1.4,-0.8 -3,0.6 0.1,-1 -1.2,-1.3 1.1,-1.8 -1.1,-1.6 0.6,-1 1.2,0.8 3.9,0.5 3.2,-1.2 z",QA:"m 433.63,169.69 -0.2,-1.5 1.6,-0.8 -0.7,2.6 -0.4,0.1 z",LI:"m 354.53,120.39 0.2,0.3 -0.1,0.2 -0.2,-0.1 z",AT:"m 354.63,120.89 0.1,-0.2 -0.2,-0.3 0.3,-0.4 -0.2,-0.2 0.2,0 0.1,-0.1 2.4,0.3 2.3,-0.7 1.6,0.5 -0.5,-1.5 2,-1.6 1.7,0.4 0.5,-0.9 3.8,0.9 -0.2,0.6 0.6,0.9 -1.1,0.6 -0.9,2.1 -3,1.2 -1.6,-0.4 -2.5,-0.4 -0.4,-0.9 -3.3,0.5 -0.7,0.1 z",SZ:"m 397.43,268.29 0.2,0.6 0.2,1.2 -1.9,0.7 -0.6,-1.6 1.1,-1.4 z",HU:"m 378.73,117.59 0.9,0.7 0.5,0.4 -1.7,1.1 -1.6,2.9 -1.8,0.4 -1.3,-0.1 -1.2,0.6 -3,-0.1 -1.6,-1.3 -0.5,-0.9 -0.3,0 0.9,-2.1 1.1,-0.6 1.3,0.6 4,-1 1.1,-0.9 z",RO:"m 379.73,127.59 -2.5,-1.3 0.2,-0.9 -2.4,-2.3 1.8,-0.4 1.6,-2.9 1.7,-1.1 4.5,0.1 2.6,-0.9 0.8,0.3 2.4,3.7 -0.1,2.8 1.1,0.5 1.7,0.1 -2,2.1 -0.1,1.3 -3,-1 -3.2,1.2 -3.9,-0.5 z",NE:"m 343.23,195.39 -1.5,-1.3 -0.8,0.9 -0.4,-1.3 -2.3,-0.9 -1.5,-3.6 2.1,-0.7 4.2,-0.2 1.3,-2 0.1,-5.4 3,-0.6 3.2,-2.8 8.6,-5.3 2.9,0.7 1.4,1.1 1.5,-0.8 0.3,3.1 1.6,2.2 -0.5,0.9 -0.5,5.9 -3.9,4.9 0.3,1.3 -2.1,1.3 -2,-0.6 -2.5,0.2 -1,0.8 -3.4,-1 -1.7,0.7 -2.8,-1.7 -2.6,0.8 z",LU:"m 348.43,114.99 -0.7,0 -0.3,-0.2 -0.2,-0.9 0.8,-0.6 0.7,0.8 z",AD:"m 339.03,131.39 0.6,-0.1 -0.1,0.3 -0.3,0.2 z",CI:"m 331.13,199.69 0.4,2.4 -1.4,2.6 0.7,3.3 -5.7,0.2 -3.3,1.3 0.1,-2.8 -2.1,-1.3 0.2,-2 1.2,-3.6 -0.2,-1.4 3.3,-0.2 1.4,-0.3 1.6,1.4 2.8,-0.5 z m -0.8,8.4 -0.3,-0.1 0.3,0 z",LR:"m 320.03,203.39 -0.2,2 2.1,1.3 -0.1,2.8 -3.3,-1.5 -4.2,-3.4 1.7,-1.6 0.6,-1.4 1.5,0.3 0.7,2.2 z",BN:"m 556.53,208.59 0.2,-0.1 0,-0.1 0.4,1.2 z m -2,0.4 1.1,-0.2 0.8,-0.3 -0.7,1.6 z",IQ:"m 429.23,158.99 -0.8,-0.2 -0.3,0.1 -1.6,0.1 -1.1,1.8 -3.6,-0.2 -5,-3.9 -3.1,-1.8 -2.5,-0.4 -0.1,-0.8 -0.6,-1.9 3.7,-2 1,-1 0.3,-3.8 1.9,-1.3 0.7,-0.5 3.9,0.4 1,2.6 2,0.4 -1.8,3.9 1.7,2.2 2.1,1.2 0.9,1.3 -0.3,1.6 z",GE:"m 422.43,134.39 -1.5,0.1 -1.5,0.3 -1.2,-1.1 -2.4,0.2 -0.1,-2.6 -2.9,-1.8 5.5,0.6 2.1,1.4 1.7,-0.4 3.1,1.9 0.1,1.9 z",GM:"m 304.23,192.79 -0.1,-0.6 0.5,-0.4 3.2,-0.4 -1.8,1.2 z",CH:"m 353.93,119.39 0,0 0,0 0,0 0.6,0.4 0.1,0 0.2,0.2 -0.3,0.4 -0.1,0.4 0.2,0.1 1,0.5 0.7,-0.1 -0.9,1.2 -2.2,0.7 -1.5,-0.4 -2,0.8 -0.5,-0.5 0.1,-0.7 -0.3,-0.3 -0.5,0.4 -0.3,0.2 -0.2,-0.7 2.8,-2.4 1.7,0 z",TD:"m 364.03,192.99 0.6,-0.2 -0.8,-0.1 0,0 -0.2,-0.1 0.1,0.1 -0.5,0.1 -0.9,-1.3 -0.3,-1.3 3.9,-4.9 0.5,-5.9 0.5,-0.9 -1.6,-2.2 -0.3,-3.1 1.9,-0.9 15.3,7.9 0,7.4 -1.7,0.1 -1.1,3 -0.9,0.7 0.3,2 1.2,3.5 -0.7,-0.1 -3.9,3.5 -2.6,0.3 -0.9,1.8 -3.5,1 -2.5,0 -0.6,-1.8 -2.3,-2.2 0.4,-0.7 2.9,0 -1.2,-1.5 0.2,-1.5 z",KV:"m 375.73,132.99 -0.2,-0.7 -0.8,-0.8 -0.1,-0.4 0.6,-0.3 0.8,-1 1.9,1.4 -0.3,1 -0.9,0.1 z",LB:"m 403.53,152.39 0.9,-1.7 0.7,-1.6 1.3,0.9 -1.5,1.7 -0.7,0.7 z",DJ:"m 418.53,196.79 -1.9,0.1 -0.3,-0.3 0.2,-0.2 -0.2,-0.2 -0.1,-0.5 1.2,-1.8 0.6,0.2 0.8,-0.6 0.5,1.4 -0.2,0.9 z",BI:"m 393.13,226.19 -0.6,-1 -0.3,-1.1 0,-0.5 -0.4,-0.7 1.7,-0.1 1.3,-0.5 0.5,1.6 z",SR:"m 231.73,213.29 -2.6,-0.3 -1,1.1 -3,-4.3 1.6,-2.5 0.5,-1 5.6,0.4 -0.2,0.9 -0.6,0.8 0.9,2.8 z",IL:"m 401.83,156.19 1.2,-2.1 0.5,-1.7 0.7,0 0.7,-0.7 0.1,1 -0.3,0.4 -0.3,0.3 0,1.8 -0.4,0.5 0.1,0.4 -0.1,0.2 0.1,0 -0.1,0.2 0.1,0.1 -0.5,1.4 -0.4,1.8 -0.1,0.2 0,0 -0.1,-0.5 z",ML:"m 325.73,197.89 -1.4,0.3 -3.3,0.2 -0.8,-2.3 -1.5,-2.2 -2.9,1.1 -1.3,-0.9 -1.4,-2.6 -0.3,-2 1,-1.5 1.9,0.2 10,-0.1 -2,-18.9 3.3,0 11.5,7.8 1.4,1.8 2.5,0.8 -0.2,1.3 2.2,0 -0.1,5.4 -1.3,2 -4.2,0.2 -2.1,0.7 -1.8,-0.3 -2.7,1.8 -1.4,0.2 -1.3,1.7 -1,-0.5 -1,2.4 -1.1,0.4 z",SN:"m 304.23,194.19 -0.1,-0.9 0.1,-0.5 1.8,-0.2 1.8,-1.2 -3.2,0.4 -1.1,-2.6 1.1,-1.8 0.4,-1.2 3.8,-0.4 4,3.7 0.3,2 1.4,2.6 -1.9,0.1 -2.6,-0.7 -2.8,0 z",GN:"m 314.53,194.09 1.3,0.9 2.9,-1.1 1.5,2.2 0.8,2.3 0.2,1.4 -1.2,3.6 -1.2,0.7 -0.7,-2.2 -1.5,-0.3 -1.9,-2.9 -2.4,0.3 -1.5,1.5 -1,-1.5 -2.3,-2.2 0.6,-1 1.9,-0.4 0,-1.9 2.6,0.7 z",ZW:"m 384.63,251.99 2.8,0.5 0.6,-0.2 2.1,-2.2 0,0 1.2,-0.6 0.2,-0.9 3,-0.8 4.9,2 0.1,3.3 -0.5,2.2 0.5,1.1 -1.2,2.5 -2.1,2.2 -1.8,-0.1 -1.9,-0.3 -2.6,-1.2 -0.6,-2.2 -3,-2 z",PL:"m 373.83,102.19 -0.4,0.5 0.7,-0.5 5.6,0.3 0.2,0 1.3,0.5 0,0.6 0.8,3.3 -1.4,0.9 0.9,2 0.9,2.5 -2.8,2.5 -0.2,1.1 -1.3,-0.7 -5.8,-0.4 -0.5,-0.9 -4.1,-1.7 -3.1,-0.7 -0.3,-4.4 -1,-0.7 0.3,-2.2 0.7,-0.4 -0.8,-0.1 -0.1,-0.1 0.1,0 3.7,-1 0.8,-0.7 3.3,-0.7 0.6,1.1 1.9,-0.1 z",MK:"m 376.43,135.29 0,0 0,0.1 z m 2.7,-3.3 1.2,1.3 -0.1,1 -2,0.5 -1.5,0.6 -0.3,-0.4 0,0.3 0,-0.1 0,0 -0.2,0 -0.2,0 0.1,-0.4 -0.3,0 -0.4,-1 0.3,-0.8 1,-0.7 0.9,-0.1 0.7,-0.2 z",PY:"m 232.43,264.39 -0.3,0.8 -0.4,2 0.1,0.2 -0.1,0.1 -0.3,2.2 -1.9,1.6 -5.4,-0.2 2,-3.9 -4.8,-2.9 -1.8,-0.4 -3.2,-3.1 0.8,-3.4 0.9,-1.8 5.1,-0.7 1.8,1.7 0.7,1.6 -0.3,2.2 3,0.1 1.5,1.1 0.4,2.6 z",BY:"m 381.53,109.79 -0.9,-2 1.4,-0.9 -0.8,-3.3 1.8,0.1 2,-1.1 0.8,-1.7 1.7,-1 -0.3,-0.9 1.9,-0.4 1.1,-0.9 5.2,1.4 1.7,4.8 1.8,1 -2.8,1.1 1,2.3 -1.6,0.1 -0.8,1.3 -2.3,0.5 -3.9,-0.6 -2.9,-0.8 -2.6,0.1 z",CZ:"m 372.33,114.79 -1.4,1.1 -2.2,1.2 -3.8,-0.9 -0.5,0.9 -1.7,-0.4 -2.7,-2.4 0.2,-1.6 4.4,-1.2 3.1,0.7 4.1,1.7 z",BF:"m 338.03,196.79 -0.8,0 -1.2,-0.3 -5,0.3 0.1,2.9 -1,-0.9 -2.8,0.5 -1.6,-1.4 0.7,-3 1.1,-0.4 1,-2.4 1,0.5 1.3,-1.7 1.4,-0.2 2.7,-1.8 1.8,0.3 1.5,3.6 2.3,0.9 0.4,1.3 -1.9,0.9 z",NA:"m 381.03,251.69 1.6,-0.3 2,0.6 -3.2,1.3 -0.5,-0.9 -4.5,0.6 0.1,7.2 -2,0.1 0,5.5 0,7.5 -1.6,1.1 -3.3,-0.5 -0.6,-1.4 -1.2,1.2 -2.2,-2.6 -1.4,-5.6 -0.4,-4.6 -1.9,-2.9 -1.6,-3.5 -1,-1.1 -0.5,-2.5 2.7,-0.6 1.5,0.9 8.6,0 0.6,0.7 3.9,0.5 z",LY:"m 365.03,173.19 -1.5,0.8 -1.4,-1.1 -2.9,-0.7 -0.8,-1.6 -2.9,-1.1 -1.2,-2.6 0.8,-0.8 0,-5.4 -0.6,-2.3 1.4,-1.4 -0.3,-1.1 2.8,-2.2 -0.1,-1.5 1.6,0.8 1.9,-0.2 3.5,1.1 1.7,2.3 2.5,0.4 3.3,1.8 1.3,-0.5 0.3,-2.7 1.2,-1.7 2.1,-0.8 2.8,0.7 0,0.6 3.6,0.8 0.3,0.6 -0.9,3.1 0.6,2.1 0,14.6 0,4 -1.9,0 0,1 -15.3,-7.9 z",TN:"m 358.33,152.19 0.1,1.5 -2.8,2.2 0.3,1.1 -1.4,1.4 -0.9,-3.8 -1.4,-1 -1.6,-2.9 1.4,-1.6 0.3,-3.9 0.4,-1.1 2.2,-0.9 2.7,4.6 -1.9,2 0.4,1.3 1.4,-0.2 z",BT:"m 506.53,164.49 2.5,-2.2 2.7,1.3 0.9,1.7 -4.4,0.4 z",MD:"m 390.33,124.69 0.1,-2.8 -2.4,-3.7 -0.8,-0.3 2.2,-0.4 2.9,1.4 -0.3,0.8 1.9,2.8 -2.2,-0.2 z",SS:"m 401.33,209.69 -0.9,0.9 -5.1,0.5 -2,-2 -2.7,0.5 -1.8,-1.5 -1.9,-1.9 -0.1,-1.1 -2,-1.3 -2.2,-2.6 1.7,-3.1 1.4,-0.2 1.4,1.7 4.4,0.4 2.2,-1.8 2.4,0.9 2.2,-2.4 -0.6,-1.9 2.2,-0.4 -0.1,2.7 1.7,2.6 -0.2,2 -1.4,-0.1 -0.3,1.3 1.2,0.3 2,1.9 2.3,3.9 -1,-0.8 z",BW:"m 384.63,251.99 1.7,3.3 3,2 0.6,2.2 2.6,1.2 -2.2,0.9 -2.3,2 -0.3,1.3 -1.9,0.9 -0.5,1.8 -1.5,0.4 -3.4,-1.1 -0.6,1.4 -2,1.8 -1.9,0.1 0.3,-1.6 -1.7,-2.8 0,-5.5 2,-0.1 -0.1,-7.2 4.5,-0.6 0.5,0.9 z",BS:"m 191.33,169.99 -1.3,-1.4 0,0 0,0 0.5,0.3 0.8,1.1 z m 0,0 0.8,0.9 0.5,2.1 4.4,1.5 -4,-1 -2.2,-1.6 1.1,-1.1 -0.6,-0.8 z m -1.3,-1.4 -1.6,-1.2 -1.4,1.5 0.7,2.9 -1.3,-1.9 0.1,-1.1 1.9,-1.9 1.6,1.7 0,0 z",NZ:"m 661.13,313.49 -2.7,-0.1 -0.2,1.4 -0.8,-2.2 -1.8,0.1 -0.6,-1 0.9,-1.6 2.7,-2.6 2.6,-1.1 2.7,-2.2 1.9,-3.9 1.2,-0.9 0.7,1.8 1.4,-0.9 0.7,2.2 -3.4,4.3 -2.1,1.3 -1.3,3.3 z m 12.3,-12.7 -1.6,1.1 -1.2,-0.7 1.2,-2.3 -2.8,-2 1.6,-1.3 0.4,-2.3 -0.9,-2.5 -2.4,-3.1 1.5,-0.5 2.4,2.7 1.4,1.1 0.2,2 2.8,0.7 2.2,-0.5 -1.4,3 -0.9,-0.1 z",CU:"m 188.73,178.29 -3,-0.4 -1.1,-1.8 -2.4,-1 -2.6,-0.2 -0.1,-1 -1.7,-0.1 -3.3,1.9 0.2,-1.2 2.2,-1.3 2.3,-0.4 3.8,0.3 1.6,1.4 0.9,-0.3 0.8,0 3.4,2.7 3.5,1.1 0.9,1.1 -6.6,0.5 z",EC:"m 182.53,224.19 1,-1.4 -2.1,-0.6 0,-2.4 1.6,-2.1 -0.1,-1.3 2.5,-1.4 2.6,1.5 2.2,0.4 1.9,1.1 -0.5,2.7 -2.1,2 -3.2,1.5 -1.4,3.1 -2.8,-1.8 z",AU:"m 617.53,306.39 -1.6,0 -1.5,-2.2 -1.1,-3.5 0,-1.4 -1.2,-0.9 4.1,2.5 3.8,-1.3 0.1,2.7 -0.5,3.3 -0.9,-0.8 z m -1.4,-54.7 0.6,2.8 5.1,2.8 0.9,3.5 2.3,0.9 0.2,1.8 1.9,1.1 1.4,2.1 1.4,-0.3 -0.6,1.6 1,3.3 0.1,3 -2.1,7.5 -1.4,0.9 -3.1,6.5 -0.4,3.5 -3.2,0.7 -3.5,2 -2.9,-0.5 0.1,-1.3 -2.8,2.1 -2.2,-1.1 -3.3,-0.7 -1.8,-1.9 -0.3,-2.6 -1.1,-1 -4.4,1.1 1.2,-1 -0.6,-1.5 2,-3.8 -1.2,0 -3.4,3.9 -0.9,-2.3 -1.7,-1.5 -0.3,-1.5 -3.7,-0.9 -2.1,-1.2 -4.1,0.5 -3.2,1.2 -2.1,-0.1 -4,2 -1.1,1.6 -6.8,0 -3,2.1 -2.4,0.4 -2.3,-0.5 -1.9,-1.6 1.3,-1.7 0.1,-3.5 -1.4,-3 0,-1.6 -1.5,-2.8 -0.3,-1.6 -2.1,-3.2 1.1,-0.5 1.1,1.9 0.1,-1.4 -1.3,-2.5 0.4,-3.9 4.3,-3.1 3.5,-0.8 6.2,-2 2.6,-2.9 -0.3,-1.8 1.5,-1.3 1.1,1.8 0.1,-2.6 1.6,0.3 0,-2.1 1.3,-1.2 2.9,-0.8 0.6,-1 2.4,1.9 2.8,0.8 -0.6,-1.3 3.1,-4.8 -1.8,-0.3 0.7,-1.1 2,0.1 0,2 2.4,-0.3 -0.2,-2.2 1.1,1.3 3.7,1.1 2.7,-0.9 0.8,1 -1.9,2.8 -0.9,2.2 2.1,1.6 4.7,2.3 1.9,1.6 1.6,-0.5 1.6,-4.6 -0.1,-5 0.7,-0.9 0.3,-3.6 0.9,1.1 1.8,5.8 0.8,1.5 1,-0.7 1.7,1.5 0.1,2.7 z",VE:"m 199.73,195.09 -1.1,0.5 0.6,1.7 -1,1.7 1.2,1.5 0.9,-1.3 -1.1,-2.1 2.8,-1.2 2.4,0 1.8,1.9 3.2,-0.4 2.9,1.1 1.6,-1 2.3,-0.3 0.9,1.4 2.8,1.3 -0.2,0.9 1.7,0.7 -1,1.4 0.4,1.3 -1.7,1.1 -0.3,1.2 1.2,1.4 -1.6,1.8 -5.9,0.5 1.2,2.9 1.3,0.1 -1.5,1.6 -2.7,1.7 -2.6,-1.1 -0.6,-2.2 -1.2,-0.9 1,-1 -1.1,-2.2 0.8,-3.1 -3.8,0.1 -1.3,-1.6 -3.8,-0.2 -0.5,-2.5 -1.2,-1.8 0.2,-2.1 1.8,-2.4 z",SB:"m 644.23,236.59 -1.9,-0.1 0,-2.4 -2.9,-1.9 -1.4,0.8 1.2,1.3 -2.6,-1.1 0.1,-1.7 3.3,0.7 2.3,1.4 0.5,1.4 1.7,-0.8 z",MG:"m 431.73,249.49 -4.3,14.5 -1,2.3 -3.7,1.2 -2.1,-1.2 -0.5,-3.1 -1.1,-2.4 0.6,-1.9 1.8,-2.6 -1,-5 1,-2.5 2.2,-0.4 3.6,-1.7 1.4,-3.3 0.9,0.1 1.1,-2.9 1.3,2.1 1,4.7 -1.6,0.2 z",IS:"m 290.23,72.39 4.3,-0.5 -0.3,-1.1 -2.3,-0.6 -2.6,0.2 1.5,-0.8 0.6,-1.4 1.9,0.4 -0.2,-1.2 2.4,1.5 -0.4,1.4 1.1,0.6 1.6,-2.4 3.4,-0.2 1.4,0.7 2.1,-0.7 -0.1,-1 3.6,1.4 -0.3,1 2,0.7 0.5,1.4 -2,2.1 -6.1,2.1 -1.9,1 -2.8,-0.5 -1.9,-1 -2.9,0.1 1.9,-1.7 -1.4,-1.3 z",EG:"m 403.13,159.99 -1.2,3.6 -2,-1.7 -1.4,-2.9 0.2,2.1 1.9,2.4 0.8,2.4 2.9,5.4 0.3,2.1 2.3,1.8 -10.8,0 -12,0 0,-14.6 -0.6,-2.1 0.9,-3.1 4.2,0.7 3.3,1.1 2.5,-1.4 2.3,0.1 1,0.8 4.1,-0.5 1.2,3.3 z",KG:"m 477.33,138.49 -2.7,0.6 -1.5,-0.9 -4.1,0.2 1.2,-1.6 1.9,0 1.4,0.2 2.8,-1.5 -2.7,-1.5 -0.6,0.7 -2.4,-1 1.5,-1.5 1.7,-1.4 3.2,1 1.3,-2 1.9,1 6.2,-0.1 3.4,1.6 -3.5,1.9 -0.5,0.7 -2.5,0.3 -2.1,1.4 -0.3,-0.7 -3,1.3 z m -5.8,-0.9 -0.3,0 0.2,0.2 0.2,-0.1 z m 2.2,-0.1 0,-0.2 -0.2,0.1 0,0.1 z m -1.2,-0.3 -0.4,-0.1 0.2,0.5 0.3,-0.1 z",NP:"m 505.03,163.39 0.1,2.3 -1.6,0.7 -2.9,-0.4 -2.4,-1.6 -3.5,-0.3 -5.2,-2.8 0.6,-1.9 1.3,-0.9 2,-0.3 2.8,2.4 1.1,-0.1 1.9,1.9 1.7,0.9 1.1,-0.4 z"}}}}),b}); \ No newline at end of file diff --git a/plugins/jquery-mapael/raphael-min.js b/plugins/jquery-mapael/raphael-min.js new file mode 100644 index 0000000..1f8a305 --- /dev/null +++ b/plugins/jquery-mapael/raphael-min.js @@ -0,0 +1,11 @@ +// ┌────────────────────────────────────────────────────────────────────┐ \\ +// │ Raphaël 2.1.4 - JavaScript Vector Library │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\ +// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\ +// └────────────────────────────────────────────────────────────────────┘ \\ +!function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g="*",h=function(){},i=function(a,b){return a-b},j={n:{}},k=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=k.listeners(a),j=0,l=[],m={},n=[],o=b;b=a,c=0;for(var p=0,q=h.length;q>p;p++)"zIndex"in h[p]&&(l.push(h[p].zIndex),h[p].zIndex<0&&(m[h[p].zIndex]=h[p]));for(l.sort(i);l[j]<0;)if(e=m[l[j++]],n.push(e.apply(d,g)),c)return c=f,n;for(p=0;q>p;p++)if(e=h[p],"zIndex"in e)if(e.zIndex==l[j]){if(n.push(e.apply(d,g)),c)break;do if(j++,e=m[l[j]],e&&n.push(e.apply(d,g)),c)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),c)break;return c=f,b=o,n.length?n:null};k._events=j,k.listeners=function(a){var b,c,d,e,h,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,h=m.length;h>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[g]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},k.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(f),d=j,e=0,g=c.length;g>e;e++)d=d.n,d=d.hasOwnProperty(c[e])&&d[c[e]]||(d[c[e]]={n:{}});for(d.f=d.f||[],e=0,g=d.f.length;g>e;e++)if(d.f[e]==b)return h;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},k.f=function(a){var b=[].slice.call(arguments,1);return function(){k.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},k.stop=function(){c=1},k.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},k.nts=function(){return b.split(f)},k.off=k.unbind=function(a,b){if(!a)return void(k._events=j={n:{}});var c,d,h,i,l,m,n,o=a.split(f),p=[j];for(i=0,l=o.length;l>i;i++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[i]!=g)c[o[i]]&&h.push(c[o[i]]);else for(d in c)c[e](d)&&h.push(c[d]);p.splice.apply(p,h)}for(i=0,l=p.length;l>i;i++)for(c=p[i];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(d in c.n)if(c.n[e](d)&&c.n[d].f){var q=c.n[d].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[d].f}}else{delete c.f;for(d in c.n)c.n[e](d)&&c.n[d].f&&delete c.n[d].f}c=c.n}},k.once=function(a,b){var c=function(){return k.unbind(a,c),b.apply(this,arguments)};return k.on(a,c)},k.version=d,k.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=k:"undefined"!=typeof define?define("eve",[],function(){return k}):a.eve=k}(window||this),function(a,b){"function"==typeof define&&define.amd?define(["eve"],function(c){return b(a,c)}):b(a,a.eve||"function"==typeof require&&require("eve"))}(this,function(a,b){function c(a){if(c.is(a,"function"))return u?a():b.on("raphael.DOMload",a);if(c.is(a,V))return c._engine.create[D](c,a.splice(0,3+c.is(a[0],T))).add(a);var d=Array.prototype.slice.call(arguments,0);if(c.is(d[d.length-1],"function")){var e=d.pop();return u?e.call(c._engine.create[D](c,d)):b.on("raphael.DOMload",function(){e.call(c._engine.create[D](c,d))})}return c._engine.create[D](c,arguments)}function d(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[z](c)&&(b[c]=d(a[c]));return b}function e(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function f(a,b,c){function d(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];return h[z](g)?(e(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[D](b,f),c?c(h[g]):h[g])}return d}function g(){return this.hex}function h(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function i(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function j(a,b,c,d,e,f,g,h,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=i(q,a,c,e,g),s=i(q,b,d,f,h),t=r*r+s*s;o+=n[p]*N.sqrt(t)}return k*o}function k(a,b,c,d,e,f,g,h,i){if(!(0>i||j(a,b,c,d,e,f,g,h)<i)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=j(a,b,c,d,e,f,g,h,n);Q(k-i)>o;)m/=2,n+=(i>k?1:-1)*m,k=j(a,b,c,d,e,f,g,h,n);return n}}function l(a,b,c,d,e,f,g,h){if(!(O(a,c)<P(e,g)||P(a,c)>O(e,g)||O(b,d)<P(f,h)||P(b,d)>O(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+P(a,c).toFixed(2)||n>+O(a,c).toFixed(2)||n<+P(e,g).toFixed(2)||n>+O(e,g).toFixed(2)||o<+P(b,d).toFixed(2)||o>+O(b,d).toFixed(2)||o<+P(f,h).toFixed(2)||o>+O(f,h).toFixed(2)))return{x:l,y:m}}}}function m(a,b,d){var e=c.bezierBBox(a),f=c.bezierBBox(b);if(!c.isBBoxIntersect(e,f))return d?0:[];for(var g=j.apply(0,a),h=j.apply(0,b),i=O(~~(g/5),1),k=O(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;i+1>q;q++){var r=c.findDotsAtSegment.apply(c,a.concat(q/i));m.push({x:r.x,y:r.y,t:q/i})}for(q=0;k+1>q;q++)r=c.findDotsAtSegment.apply(c,b.concat(q/k)),n.push({x:r.x,y:r.y,t:q/k});for(q=0;i>q;q++)for(var s=0;k>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=Q(u.x-t.x)<.001?"y":"x",y=Q(w.x-v.x)<.001?"y":"x",z=l(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+Q((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+Q((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:P(A,1),t2:P(B,1)}))}}return p}function n(a,b,d){a=c._path2curve(a),b=c._path2curve(b);for(var e,f,g,h,i,j,k,l,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=b.length;u>t;t++){var v=b[t];if("M"==v[0])g=k=v[1],h=l=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,l,k,l],g=k,h=l);var w=m(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function o(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function p(){return this.x+H+this.y+H+this.width+" × "+this.height}function q(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,Q(f)<b)return e;if(h=(3*l*e+2*k)*e+j,Q(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),Q(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function r(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[z](e)&&(d[_(e)]=a[e],c.push(_(e)));c.sort(lb)}this.anim=d,this.top=c[c.length-1],this.percents=c}function s(a,d,e,f,g,h){e=_(e);var i,j,k,l,m,n,p=a.ms,r={},s={},t={};if(f)for(v=0,x=ic.length;x>v;v++){var u=ic[v];if(u.el.id==d.id&&u.anim==a){u.percent!=e?(ic.splice(v,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var v=0,x=a.percents.length;x>v;v++){if(a.percents[v]==e||a.percents[v]>f*a.top){e=a.percents[v],m=a.percents[v-1]||0,p=p/a.top*(e-m),l=a.percents[v+1],i=a.anim[e];break}f&&d.attr(a.anim[a.percents[v]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var y in i)if(i[z](y)&&(db[z](y)||d.paper.customAttributes[z](y)))switch(r[y]=d.attr(y),null==r[y]&&(r[y]=cb[y]),s[y]=i[y],db[y]){case T:t[y]=(s[y]-r[y])/p;break;case"colour":r[y]=c.getRGB(r[y]);var A=c.getRGB(s[y]);t[y]={r:(A.r-r[y].r)/p,g:(A.g-r[y].g)/p,b:(A.b-r[y].b)/p};break;case"path":var B=Kb(r[y],s[y]),C=B[1];for(r[y]=B[0],t[y]=[],v=0,x=r[y].length;x>v;v++){t[y][v]=[0];for(var D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(C[v][D]-r[y][v][D])/p}break;case"transform":var G=d._,H=Pb(G[y],s[y]);if(H)for(r[y]=H.from,s[y]=H.to,t[y]=[],t[y].real=!0,v=0,x=r[y].length;x>v;v++)for(t[y][v]=[r[y][v][0]],D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(s[y][v][D]-r[y][v][D])/p;else{var K=d.matrix||new o,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[y]=[K.a,K.b,K.c,K.d,K.e,K.f],Nb(L,s[y]),s[y]=L._.transform,t[y]=[(L.matrix.a-K.a)/p,(L.matrix.b-K.b)/p,(L.matrix.c-K.c)/p,(L.matrix.d-K.d)/p,(L.matrix.e-K.e)/p,(L.matrix.f-K.f)/p]}break;case"csv":var M=I(i[y])[J](w),N=I(r[y])[J](w);if("clip-rect"==y)for(r[y]=N,t[y]=[],v=N.length;v--;)t[y][v]=(M[v]-r[y][v])/p;s[y]=M;break;default:for(M=[][E](i[y]),N=[][E](r[y]),t[y]=[],v=d.paper.customAttributes[y].length;v--;)t[y][v]=((M[v]||0)-(N[v]||0))/p}var O=i.easing,P=c.easing_formulas[O];if(!P)if(P=I(O).match(Z),P&&5==P.length){var Q=P;P=function(a){return q(a,+Q[1],+Q[2],+Q[3],+Q[4],p)}}else P=nb;if(n=i.start||a.start||+new Date,u={anim:a,percent:e,timestamp:n,start:n+(a.del||0),status:0,initstatus:f||0,stop:!1,ms:p,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||a.times,origin:d.attr(),totalOrigin:g},ic.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-p*f,1==ic.length))return kc();k&&(u.start=new Date-u.ms*f),1==ic.length&&jc(kc)}b("raphael.anim.start."+d.id,d,a)}}function t(a){for(var b=0;b<ic.length;b++)ic[b].el.paper==a&&ic.splice(b--,1)}c.version="2.1.2",c.eve=b;var u,v,w=/[, ]+/,x={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},y=/\{(\d+)\}/g,z="hasOwnProperty",A={doc:document,win:a},B={was:Object.prototype[z].call(A.win,"Raphael"),is:A.win.Raphael},C=function(){this.ca=this.customAttributes={}},D="apply",E="concat",F="ontouchstart"in A.win||A.win.DocumentTouch&&A.doc instanceof DocumentTouch,G="",H=" ",I=String,J="split",K="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[J](H),L={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},M=I.prototype.toLowerCase,N=Math,O=N.max,P=N.min,Q=N.abs,R=N.pow,S=N.PI,T="number",U="string",V="array",W=Object.prototype.toString,X=(c._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),Y={NaN:1,Infinity:1,"-Infinity":1},Z=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,$=N.round,_=parseFloat,ab=parseInt,bb=I.prototype.toUpperCase,cb=c._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},db=c._availableAnimAttrs={blur:T,"clip-rect":"csv",cx:T,cy:T,fill:"colour","fill-opacity":T,"font-size":T,height:T,opacity:T,path:"path",r:T,rx:T,ry:T,stroke:"colour","stroke-opacity":T,"stroke-width":T,transform:"transform",width:T,x:T,y:T},eb=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,fb={hs:1,rg:1},gb=/,?([achlmqrstvxz]),?/gi,hb=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ib=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,jb=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,kb=(c._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),lb=function(a,b){return _(a)-_(b)},mb=function(){},nb=function(a){return a},ob=c._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},pb=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},qb=c._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)}},rb=c.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Kb(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(c._g=A,c.type=A.win.SVGAngle||A.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==c.type){var sb,tb=A.doc.createElement("div");if(tb.innerHTML='<v:shape adj="1"/>',sb=tb.firstChild,sb.style.behavior="url(#default#VML)",!sb||"object"!=typeof sb.adj)return c.type=G;tb=null}c.svg=!(c.vml="VML"==c.type),c._Paper=C,c.fn=v=C.prototype=c.prototype,c._id=0,c._oid=0,c.is=function(a,b){return b=M.call(b),"finite"==b?!Y[z](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||W.call(a).slice(8,-1).toLowerCase()==b},c.angle=function(a,b,d,e,f,g){if(null==f){var h=a-d,i=b-e;return h||i?(180+180*N.atan2(-i,-h)/S+360)%360:0}return c.angle(a,b,f,g)-c.angle(d,e,f,g)},c.rad=function(a){return a%360*S/180},c.deg=function(a){return Math.round(180*a/S%360*1e3)/1e3},c.snapTo=function(a,b,d){if(d=c.is(d,"finite")?d:10,c.is(a,V)){for(var e=a.length;e--;)if(Q(a[e]-b)<=d)return a[e]}else{a=+a;var f=b%a;if(d>f)return b-f;if(f>a-d)return b-f+a}return b};c.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*N.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});c.setWindow=function(a){b("raphael.setWindow",c,A.win,a),A.win=a,A.doc=A.win.document,c._engine.initWin&&c._engine.initWin(A.win)};var ub=function(a){if(c.vml){var b,d=/^\s+|\s+$/g;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),b=e.body}catch(g){b=createPopup().document.body}var h=b.createTextRange();ub=f(function(a){try{b.style.color=I(a).replace(d,G);var c=h.queryCommandValue("ForeColor");return c=(255&c)<<16|65280&c|(16711680&c)>>>16,"#"+("000000"+c.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=A.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",A.doc.body.appendChild(i),ub=f(function(a){return i.style.color=a,A.doc.defaultView.getComputedStyle(i,G).getPropertyValue("color")})}return ub(a)},vb=function(){return"hsb("+[this.h,this.s,this.b]+")"},wb=function(){return"hsl("+[this.h,this.s,this.l]+")"},xb=function(){return this.hex},yb=function(a,b,d){if(null==b&&c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,b=a.g,a=a.r),null==b&&c.is(a,U)){var e=c.getRGB(a);a=e.r,b=e.g,d=e.b}return(a>1||b>1||d>1)&&(a/=255,b/=255,d/=255),[a,b,d]},zb=function(a,b,d,e){a*=255,b*=255,d*=255;var f={r:a,g:b,b:d,hex:c.rgb(a,b,d),toString:xb};return c.is(e,"finite")&&(f.opacity=e),f};c.color=function(a){var b;return c.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(b=c.hsb2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):c.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(b=c.hsl2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):(c.is(a,"string")&&(a=c.getRGB(a)),c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(b=c.rgb2hsl(a),a.h=b.h,a.s=b.s,a.l=b.l,b=c.rgb2hsb(a),a.v=b.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=xb,a},c.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Q(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-Q(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.rgb2hsb=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=O(a,b,c),g=f-P(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:vb}},c.rgb2hsl=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=O(a,b,c),h=P(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:wb}},c._path2string=function(){return this.join(",").replace(gb,"$1")};c._preload=function(a,b){var c=A.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,A.doc.body.removeChild(this)},c.onerror=function(){A.doc.body.removeChild(this)},A.doc.body.appendChild(c),c.src=a};c.getRGB=f(function(a){if(!a||(a=I(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:g};!(fb[z](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=ub(a));var b,d,e,f,h,i,j=a.match(X);return j?(j[2]&&(e=ab(j[2].substring(5),16),d=ab(j[2].substring(3,5),16),b=ab(j[2].substring(1,3),16)),j[3]&&(e=ab((h=j[3].charAt(3))+h,16),d=ab((h=j[3].charAt(2))+h,16),b=ab((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100)),j[5]?(i=j[5][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsb2rgb(b,d,e,f)):j[6]?(i=j[6][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsl2rgb(b,d,e,f)):(j={r:b,g:d,b:e,toString:g},j.hex="#"+(16777216|e|d<<8|b<<16).toString(16).slice(1),c.is(f,"finite")&&(j.opacity=f),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g}},c),c.hsb=f(function(a,b,d){return c.hsb2rgb(a,b,d).hex}),c.hsl=f(function(a,b,d){return c.hsl2rgb(a,b,d).hex}),c.rgb=f(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),c.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},c.getColor.reset=function(){delete this.start},c.parsePathString=function(a){if(!a)return null;var b=Ab(a);if(b.arr)return Cb(b.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return c.is(a,V)&&c.is(a[0],V)&&(e=Cb(a)),e.length||I(a).replace(hb,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(jb,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][E](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][E](f));else for(;f.length>=d[g]&&(e.push([b][E](f.splice(0,d[g]))),d[g]););}),e.toString=c._path2string,b.arr=Cb(e),e},c.parseTransformString=f(function(a){if(!a)return null;var b=[];return c.is(a,V)&&c.is(a[0],V)&&(b=Cb(a)),b.length||I(a).replace(ib,function(a,c,d){{var e=[];M.call(c)}d.replace(jb,function(a,b){b&&e.push(+b)}),b.push([c][E](e))}),b.toString=c._path2string,b});var Ab=function(a){var b=Ab.ps=Ab.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[z](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};c.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=R(j,3),l=R(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*N.atan2(q-s,r-t)/S;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},c.bezierBBox=function(a,b,d,e,f,g,h,i){c.is(a,"array")||(a=[a,b,d,e,f,g,h,i]);var j=Jb.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},c.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},c.isBBoxIntersect=function(a,b){var d=c.isPointInsideBBox;return d(b,a.x,a.y)||d(b,a.x2,a.y)||d(b,a.x,a.y2)||d(b,a.x2,a.y2)||d(a,b.x,b.y)||d(a,b.x2,b.y)||d(a,b.x,b.y2)||d(a,b.x2,b.y2)||(a.x<b.x2&&a.x>b.x||b.x<a.x2&&b.x>a.x)&&(a.y<b.y2&&a.y>b.y||b.y<a.y2&&b.y>a.y)},c.pathIntersection=function(a,b){return n(a,b)},c.pathIntersectionNumber=function(a,b){return n(a,b,1)},c.isPointInsidePath=function(a,b,d){var e=c.pathBBox(a);return c.isPointInsideBBox(e,b,d)&&n(a,[["M",b,d],["H",e.x2+10]],1)%2==1},c._removedFactory=function(a){return function(){b("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var Bb=c.pathBBox=function(a){var b=Ab(a);if(b.bbox)return d(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Kb(a);for(var c,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(c=a[i],"M"==c[0])e=c[1],f=c[2],g.push(e),h.push(f);else{var k=Jb(e,f,c[1],c[2],c[3],c[4],c[5],c[6]);g=g[E](k.min.x,k.max.x),h=h[E](k.min.y,k.max.y),e=c[5],f=c[6]}var l=P[D](0,g),m=P[D](0,h),n=O[D](0,g),o=O[D](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=d(r),r},Cb=function(a){var b=d(a);return b.toString=c._path2string,b},Db=c._pathToRelative=function(a){var b=Ab(a);if(b.rel)return Cb(b.rel);c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=M.call(m[0]))switch(l[0]=M.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=c._path2string,b.rel=Cb(d),d},Eb=c._pathToAbsolute=function(a){var b=Ab(a);if(b.abs)return Cb(b.abs);if(c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],g=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=bb.call(l[0]))switch(k[0]=bb.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][E](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[E](h(p,m));break;case"M":g=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][E](l.slice(1)),d.pop(),d=d[E](h(p,m)),k=["R"][E](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=c._path2string,b.abs=Cb(d),d},Fb=function(a,b,c,d){return[a,b,c,d,c,d]},Gb=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Hb=function(a,b,c,d,e,g,h,i,j,k){var l,m=120*S/180,n=S/180*(+e||0),o=[],p=f(function(a,b,c){var d=a*N.cos(c)-b*N.sin(c),e=a*N.sin(c)+b*N.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(N.cos(S/180*e),N.sin(S/180*e),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=N.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*N.sqrt(Q((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=N.asin(((b-x)/d).toFixed(9)),z=N.asin(((j-x)/d).toFixed(9));y=w>a?S-y:y,z=w>i?S-z:z,0>y&&(y=2*S+y),0>z&&(z=2*S+z),h&&y>z&&(y-=2*S),!h&&z>y&&(z-=2*S)}var A=z-y;if(Q(A)>m){var B=z,C=i,D=j;z=y+m*(h&&z>y?1:-1),i=w+c*N.cos(z),j=x+d*N.sin(z),o=Hb(i,j,c,d,e,0,h,C,D,[z,B,w,x])}A=z-y;var F=N.cos(y),G=N.sin(y),H=N.cos(z),I=N.sin(z),K=N.tan(A/4),L=4/3*c*K,M=4/3*d*K,O=[a,b],P=[a+L*G,b-M*F],R=[i+L*I,j-M*H],T=[i,j];if(P[0]=2*O[0]-P[0],P[1]=2*O[1]-P[1],k)return[P,R,T][E](o);o=[P,R,T][E](o).join()[J](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ib=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:R(j,3)*a+3*R(j,2)*i*c+3*j*i*i*e+R(i,3)*g,y:R(j,3)*b+3*R(j,2)*i*d+3*j*i*i*f+R(i,3)*h}},Jb=f(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:P[D](0,p),y:P[D](0,o)},max:{x:O[D](0,p),y:O[D](0,o)}}}),Kb=c._path2curve=f(function(a,b){var c=!b&&Ab(a);if(!b&&c.curve)return Cb(c.curve);for(var d=Eb(a),e=b&&Eb(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][E](Hb[D](0,[b.x,b.y][E](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][E](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][E](Gb(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][E](Gb(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][E](Fb(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][E](Fb(b.x,b.y,a[1],b.y));break;case"V":a=["C"][E](Fb(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][E](Fb(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][E](c.splice(0,6)));a.splice(b,1),p=O(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=O(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=O(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=_(q[s-4])||f.x,f.by=_(q[s-3])||f.y,g.bx=e&&(_(r[t-4])||g.x),g.by=e&&(_(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Cb(d)),e?[d,e]:d},null,Cb),Lb=(c._parseDots=f(function(a){for(var b=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=c.getRGB(g[1]),f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),b.push(f)}for(d=1,e=b.length-1;e>d;d++)if(!b[d].offset){for(var h=_(b[d-1].offset||0),i=0,j=d+1;e>j;j++)if(b[j].offset){i=b[j].offset;break}i||(i=100,j=e),i=_(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,b[d].offset=h+"%"}return b}),c._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Mb=(c._tofront=function(a,b){b.top!==a&&(Lb(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},c._toback=function(a,b){b.bottom!==a&&(Lb(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},c._insertafter=function(a,b,c){Lb(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},c._insertbefore=function(a,b,c){Lb(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},c.toMatrix=function(a,b){var c=Bb(a),d={_:{transform:G},getBBox:function(){return c}};return Nb(d,b),d.matrix}),Nb=(c.transformPath=function(a,b){return rb(a,Mb(a,b))},c._extractTransform=function(a,b){if(null==b)return a._.transform;b=I(b).replace(/\.{3}|\u2026/g,a._.transform||G);var d=c.parseTransformString(b),e=0,f=0,g=0,h=1,i=1,j=a._,k=new o;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var n,p,q,r,s,t=d[l],u=t.length,v=I(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(n=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-n,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ob=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Pb=c._equaliseTransform=function(a,b){b=I(b).replace(/\.{3}|\u2026/g,a),a=c.parseTransformString(a)||[],b=c.parseTransformString(b)||[]; +for(var d,e,f,g,h=O(a.length,b.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ob(b[k]),g=b[k]||Ob(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=O(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};c._getContainer=function(a,b,d,e){var f;return f=null!=e||c.is(a,"object")?a:A.doc.getElementById(a),null!=f?f.tagName?null==b?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:b,height:d}:{container:1,x:a,y:b,width:d,height:e}:void 0},c.pathToRelative=Db,c._engine={},c.path2curve=Kb,c.matrix=function(a,b,c,d,e,f){return new o(a,b,c,d,e,f)},function(a){function b(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var c=N.sqrt(b(a));a[0]&&(a[0]/=c),a[1]&&(a[1]/=c)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof o&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new o(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new o(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,b,d){a=c.rad(a),b=b||0,d=d||0;var e=+N.cos(a).toFixed(9),f=+N.sin(a).toFixed(9);this.add(e,f,-f,e,b,d),this.add(1,0,0,1,-b,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[I.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return c.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=N.sqrt(b(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=N.sqrt(b(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=c.deg(N.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=c.deg(N.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[J]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:G)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:G)+(b.rotate?"r"+[b.rotate,0,0]:G)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(o.prototype);var Qb=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);v.safari="Apple Computer, Inc."==navigator.vendor&&(Qb&&Qb[1]<4||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&Qb&&Qb[1]<8?function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:mb;for(var Rb=function(){this.returnValue=!1},Sb=function(){return this.originalEvent.preventDefault()},Tb=function(){this.cancelBubble=!0},Ub=function(){return this.originalEvent.stopPropagation()},Vb=function(a){var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,c=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Wb=function(){return A.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Vb(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),F&&L[b]){var f=function(b){for(var e=Vb(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Sb,b.stopPropagation=Ub;break}return c.call(d,b,e.x,e.y)};a.addEventListener(L[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),F&&L[b]&&a.removeEventListener(L[b],f,!1),!0}}:A.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||A.win.event;var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,e=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Rb,a.stopPropagation=a.stopPropagation||Tb,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Xb=[],Yb=function(a){for(var c,d=a.clientX,e=a.clientY,f=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,g=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,h=Xb.length;h--;){if(c=Xb[h],F&&a.touches){for(var i,j=a.touches.length;j--;)if(i=a.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;A.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,A.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&b("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,b("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,a)}},Zb=function(a){c.unmousemove(Yb).unmouseup(Zb);for(var d,e=Xb.length;e--;)d=Xb[e],d.el._drag={},b("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,a);Xb=[]},$b=c.el={},_b=K.length;_b--;)!function(a){c[a]=$b[a]=function(b,d){return c.is(b,"function")&&(this.events=this.events||[],this.events.push({name:a,f:b,unbind:Wb(this.shape||this.node||A.doc,a,b,d||this)})),this},c["un"+a]=$b["un"+a]=function(b){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!c.is(b,"undefined")&&d[e].f!=b||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(K[_b]);$b.data=function(a,d){var e=kb[this.id]=kb[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(c.is(a,"object")){for(var f in a)a[z](f)&&this.data(f,a[f]);return this}return b("raphael.data.get."+this.id,this,e[a],a),e[a]}return e[a]=d,b("raphael.data.set."+this.id,this,d,a),this},$b.removeData=function(a){return null==a?kb[this.id]={}:kb[this.id]&&delete kb[this.id][a],this},$b.getData=function(){return d(kb[this.id]||{})},$b.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},$b.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var ac=[];$b.drag=function(a,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,m=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;if(this._drag.id=i.identifier,F&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Xb.length&&c.mousemove(Yb).mouseup(Zb),Xb.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&b.on("raphael.drag.start."+this.id,d),a&&b.on("raphael.drag.move."+this.id,a),e&&b.on("raphael.drag.end."+this.id,e),b("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},ac.push({el:this,start:i}),this.mousedown(i),this},$b.onDragOver=function(a){a?b.on("raphael.drag.over."+this.id,a):b.unbind("raphael.drag.over."+this.id)},$b.undrag=function(){for(var a=ac.length;a--;)ac[a].el==this&&(this.unmousedown(ac[a].start),ac.splice(a,1),b.unbind("raphael.drag.*."+this.id));!ac.length&&c.unmousemove(Yb).unmouseup(Zb),Xb=[]},v.circle=function(a,b,d){var e=c._engine.circle(this,a||0,b||0,d||0);return this.__set__&&this.__set__.push(e),e},v.rect=function(a,b,d,e,f){var g=c._engine.rect(this,a||0,b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.ellipse=function(a,b,d,e){var f=c._engine.ellipse(this,a||0,b||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},v.path=function(a){a&&!c.is(a,U)&&!c.is(a[0],V)&&(a+=G);var b=c._engine.path(c.format[D](c,arguments),this);return this.__set__&&this.__set__.push(b),b},v.image=function(a,b,d,e,f){var g=c._engine.image(this,a||"about:blank",b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.text=function(a,b,d){var e=c._engine.text(this,a||0,b||0,I(d));return this.__set__&&this.__set__.push(e),e},v.set=function(a){!c.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var b=new mc(a);return this.__set__&&this.__set__.push(b),b.paper=this,b.type="set",b},v.setStart=function(a){this.__set__=a||this.set()},v.setFinish=function(){var a=this.__set__;return delete this.__set__,a},v.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},v.setSize=function(a,b){return c._engine.setSize.call(this,a,b)},v.setViewBox=function(a,b,d,e,f){return c._engine.setViewBox.call(this,a,b,d,e,f)},v.top=v.bottom=null,v.raphael=c;var bc=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(A.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(A.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};v.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=A.doc.elementFromPoint(a,b);if(A.win.opera&&"svg"==e.tagName){var f=bc(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},v.getElementsByBBox=function(a){var b=this.set();return this.forEach(function(d){c.isBBoxIntersect(d.getBBox(),a)&&b.push(d)}),b},v.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},v.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},v.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},$b.isPointInside=function(a,b){var d=this.realPath=qb[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=c.transformPath(d,this.attr("transform"))),c.isPointInsidePath(d,a,b)},$b.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=qb[this.type](this),b.bboxwt=Bb(this.realPath),b.bboxwt.toString=p,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=qb[this.type](this)),b.bbox=Bb(rb(this.realPath,this.matrix)),b.bbox.toString=p,b.dirty=b.dirtyT=0),b.bbox)},$b.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},$b.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||qb[this.type](this);f=this.matrix?rb(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cc=function(a,b,d,e,f,g,h,i,l){return null==l?j(a,b,d,e,f,g,h,i):c.findDotsAtSegment(a,b,d,e,f,g,h,i,k(a,b,d,e,f,g,h,i,l))},dc=function(a,b){return function(d,e,f){d=Kb(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(b&&!m.start){if(k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!b)return k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:b?m:c.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},ec=dc(1),fc=dc(),gc=dc(0,1);c.getTotalLength=ec,c.getPointAtLength=fc,c.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return gc(a,b).end;var d=gc(a,c,1);return b?gc(d,b).end:d},$b.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():ec(a)},$b.getPointAtLength=function(a){var b=this.getPath();if(b)return fc(b,a)},$b.getPath=function(){var a,b=c._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return b&&(a=b(this)),a},$b.getSubpath=function(a,b){var d=this.getPath();if(d)return c.getSubpath(d,a,b)};var hc=c.easing_formulas={linear:function(a){return a},"<":function(a){return R(a,1.7)},">":function(a){return R(a,.48)},"<>":function(a){var b=.48-a/1.04,c=N.sqrt(.1734+b*b),d=c-b,e=R(Q(d),1/3)*(0>d?-1:1),f=-c-b,g=R(Q(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:R(2,-10*a)*N.sin(2*(a-.075)*S/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};hc.easeIn=hc["ease-in"]=hc["<"],hc.easeOut=hc["ease-out"]=hc[">"],hc.easeInOut=hc["ease-in-out"]=hc["<>"],hc["back-in"]=hc.backIn,hc["back-out"]=hc.backOut;var ic=[],jc=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){setTimeout(a,16)},kc=function(){for(var a=+new Date,d=0;d<ic.length;d++){var e=ic[d];if(!e.el.removed&&!e.paused){var f,g,h=a-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&ic.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var r in k)if(k[z](r)){switch(db[r]){case T:f=+k[r]+q*i*l[r];break;case"colour":f="rgb("+[lc($(k[r].r+q*i*l[r].r)),lc($(k[r].g+q*i*l[r].g)),lc($(k[r].b+q*i*l[r].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[r].length;u>t;t++){f[t]=[k[r][t][0]];for(var v=1,w=k[r][t].length;w>v;v++)f[t][v]=+k[r][t][v]+q*i*l[r][t][v];f[t]=f[t].join(H)}f=f.join(H);break;case"transform":if(l[r].real)for(f=[],t=0,u=k[r].length;u>t;t++)for(f[t]=[k[r][t][0]],v=1,w=k[r][t].length;w>v;v++)f[t][v]=k[r][t][v]+q*i*l[r][t][v];else{var x=function(a){return+k[r][a]+q*i*l[r][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==r)for(f=[],t=4;t--;)f[t]=+k[r][t]+q*i*l[r][t];break;default:var y=[][E](k[r]);for(f=[],t=n.paper.customAttributes[r].length;t--;)f[t]=+y[t]+q*i*l[r][t]}o[r]=f}n.attr(o),function(a,c,d){setTimeout(function(){b("raphael.anim.frame."+a,c,d)})}(n.id,n,e.anim)}else{if(function(a,d,e){setTimeout(function(){b("raphael.anim.frame."+d.id,d,e),b("raphael.anim.finish."+d.id,d,e),c.is(a,"function")&&a.call(d)})}(e.callback,n,e.anim),n.attr(m),ic.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[z](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),s(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&s(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}c.svg&&n&&n.paper&&n.paper.safari(),ic.length&&jc(kc)},lc=function(a){return a>255?255:0>a?0:a};$b.animateWith=function(a,b,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof r?d:c.animation(d,e,f,g);s(i,h,i.percents[0],null,h.attr());for(var j=0,k=ic.length;k>j;j++)if(ic[j].anim==b&&ic[j].el==a){ic[k-1].start=ic[j].start;break}return h},$b.onAnimation=function(a){return a?b.on("raphael.anim.frame."+this.id,a):b.unbind("raphael.anim.frame."+this.id),this},r.prototype.delay=function(a){var b=new r(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},r.prototype.repeat=function(a){var b=new r(this.anim,this.ms);return b.del=this.del,b.times=N.floor(O(a,0))||1,b},c.animation=function(a,b,d,e){if(a instanceof r)return a;(c.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),b=+b||0;var f,g,h={};for(g in a)a[z](g)&&_(g)!=g&&_(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new r({100:h},b);if(e){var i=0;for(var j in a){var k=ab(j);a[z](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new r(a,b)},$b.animate=function(a,b,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof r?a:c.animation(a,b,d,e);return s(g,f,g.percents[0],null,f.attr()),f},$b.setTime=function(a,b){return a&&null!=b&&this.status(a,P(b,a.ms)/a.ms),this},$b.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return s(a,this,-1,P(b,1)),this;for(c=ic.length;c>f;f++)if(d=ic[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},$b.pause=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.pause."+this.id,this,ic[c].anim)!==!1&&(ic[c].paused=!0);return this},$b.resume=function(a){for(var c=0;c<ic.length;c++)if(ic[c].el.id==this.id&&(!a||ic[c].anim==a)){var d=ic[c];b("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},$b.stop=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.stop."+this.id,this,ic[c].anim)!==!1&&ic.splice(c--,1);return this},b.on("raphael.remove",t),b.on("raphael.clear",t),$b.toString=function(){return"Raphaël’s object"};var mc=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=$b.constructor&&a[b].constructor!=mc||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},nc=mc.prototype;nc.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=$b.constructor&&a.constructor!=mc||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},nc.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},nc.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var oc in $b)$b[z](oc)&&(nc[oc]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][D](c,b)})}}(oc));return nc.attr=function(a,b){if(a&&c.is(a,V)&&c.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,b);return this},nc.clear=function(){for(;this.length;)this.pop()},nc.splice=function(a,b){a=0>a?O(this.length+a,0):a,b=O(0,P(this.length-a,b));var c,d=[],e=[],f=[];for(c=2;c<arguments.length;c++)f.push(arguments[c]);for(c=0;b>c;c++)e.push(this[a+c]);for(;c<this.length-a;c++)d.push(this[a+c]);var g=f.length;for(c=0;c<g+d.length;c++)this.items[a+c]=this[a+c]=g>c?f[c]:d[c-g];for(c=this.items.length=this.length-=b-g;this[c];)delete this[c++];return new mc(e)},nc.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},nc.animate=function(a,b,d,e){(c.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=c.is(d,U)?d:g;var k=c.animation(a,b,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},nc.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},nc.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=P[D](0,a),b=P[D](0,b),c=O[D](0,c),d=O[D](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},nc.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},nc.toString=function(){return"Raphaël‘s set"},nc.glow=function(a){var b=this.paper.set();return this.forEach(function(c){var d=c.glow(a);null!=d&&d.forEach(function(a){b.push(a)})}),b},nc.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},c.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[z](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=ab(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[z](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[z](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},v.getFont=function(a,b,d,e){if(e=e||"normal",d=d||"normal",b=+b||{normal:400,bold:700,lighter:300,bolder:800}[b]||400,c.fonts){var f=c.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,G)+"(\\s|$)","i");for(var h in c.fonts)if(c.fonts[z](h)&&g.test(h)){f=c.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=b||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},v.print=function(a,b,d,e,f,g,h,i){g=g||"middle",h=O(P(h||0,1),-1),i=O(P(i||1,3),1);var j,k=I(d)[J](G),l=0,m=0,n=G;if(c.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[J](w),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var v=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(v.w||e.w)+(v.k&&v.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=c.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(b-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},v.add=function(a){if(c.is(a,"array"))for(var b,d=this.set(),e=0,f=a.length;f>e;e++)b=a[e]||{},x[z](b.type)&&d.push(this[b.type]().attr(b));return d},c.format=function(a,b){var d=c.is(b,V)?[0][E](b):arguments;return a&&c.is(a,U)&&d.length-1&&(a=a.replace(y,function(a,b){return null==d[++b]?G:d[b]})),a||G},c.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),c.ninja=function(){return B.was?A.win.Raphael=B.is:delete Raphael,c},c.st=nc,b.on("raphael.DOMload",function(){u=!0}),function(a,b,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):c.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(b,d=function(){a.removeEventListener(b,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),function(){if(c.svg){var a="hasOwnProperty",b=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=c.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};c.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[a](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),b(e[f])):d.setAttribute(f,b(e[f])))}else d=c._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(a,e){var j="linear",k=a.id+e,m=.5,n=.5,o=a.node,p=a.paper,r=o.style,s=c._g.doc.getElementById(k);if(!s){if(e=b(e).replace(c._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(c.rad(t)),f.sin(c.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=c._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),a.gradient&&k!=a.gradient.id&&(p.defs.removeChild(a.gradient),delete a.gradient),!a.gradient){s=q(j+"Gradient",{id:k}),a.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:a.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}return q(o,{fill:"url('"+document.location+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=b(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;c._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=c._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-E*u):(g=E*u,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=c.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-g):(g=0,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:c.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[a](k)&&!p[k]){var F=c._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,c,d){if(c=u[b(c).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=c.length;h--;)g[h]=c[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[a](o)){if(!c._availableAttrs[a](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=c._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=b(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=c.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=c._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=c._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=b(p).match(c._ISURL);if(F){B=q("pattern");var G=q("image");B.id=c.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(a){c._preload(F[1],function(){var b=this.offsetWidth,c=this.offsetHeight;q(a,{width:b,height:c}),q(G,{width:b,height:c}),d.paper.safari()})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=c.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!c.is(k.opacity,"undefined")&&c.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!c.is(k["fill-opacity"],"undefined")&&c.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[a]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=c.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[a]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p);break; +case"opacity":k.gradient&&!k[a]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[a]("text")||f[a]("font")||f[a]("font-size")||f[a]("x")||f[a]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(c._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[a]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=b(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(c._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&c.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.matrix=c.matrix(),this.realPath=null,this.paper=b,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},B=c.el;A.prototype=B,B.constructor=A,c._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,c,e){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,c,e]])),this},B.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this},B.translate=function(a,c){return this.removed?this:(a=b(a).split(j),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this.transform(this._.transform.concat([["t",a,c]])),this)},B.transform=function(b){var d=this._;if(null==b)return d.transform;if(c._extractTransform(this,b),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[a]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return!this.removed&&this.paper.safari(this.node.style.display="none"),this},B.show=function(){return!this.removed&&this.paper.safari(this.node.style.display=""),this},B.remove=function(){var a=z(this.node);if(!this.removed&&a.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),c._tear(this,b),a.parentNode.removeChild(a),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?c._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==b)return this._.transform;for(var g=b.split(j),h={},i=0,l=g.length;l>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return l-1?h:h[g[0]]}if(null==d&&c.is(b,"array")){for(h={},i=0,l=b.length;l>i;i++)h[b[i]]=this.attr(b[i]);return h}if(null!=d){var m={};m[b]=d}else null!=b&&c.is(b,"object")&&(m=b);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[a](n)&&m[a](n)&&c.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[a](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var a=z(this.node);a.parentNode.appendChild(a);var b=this.paper;return b.top!=this&&c._tofront(this,b),this},B.toBack=function(){if(this.removed)return this;var a=z(this.node),b=a.parentNode;b.insertBefore(a,b.firstChild),c._toback(this,this.paper);this.paper;return this},B.insertAfter=function(a){if(this.removed||!a)return this;var b=z(this.node),d=z(a.node||a[a.length-1].node);return d.nextSibling?d.parentNode.insertBefore(b,d.nextSibling):d.parentNode.appendChild(b),c._insertafter(this,a,this.paper),this},B.insertBefore=function(a){if(this.removed||!a)return this;var b=z(this.node),d=z(a.node||a[0].node);return d.parentNode.insertBefore(b,d),c._insertbefore(this,a,this.paper),this},B.blur=function(a){var b=this;if(0!==+a){var d=q("filter"),e=q("feGaussianBlur");b.attrs.blur=a,d.id=c.createUUID(),q(e,{stdDeviation:+a||1.5}),d.appendChild(e),b.paper.defs.appendChild(d),b._blur=d,q(b.node,{filter:"url(#"+d.id+")"})}else b._blur&&(b._blur.parentNode.removeChild(b._blur),delete b._blur,delete b.attrs.blur),b.node.removeAttribute("filter");return b},c._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},c._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},c._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},c._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},c._engine.text=function(a,b,d,e){var f=q("text");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={x:b,y:d,"text-anchor":"middle",text:e,"font-family":c._availableAttrs["font-family"],"font-size":c._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},c._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a&&a.container,d=a.x,e=a.y,f=a.width,g=a.height;if(!b)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==b?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",c._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i)),b=new c._Paper,b.width=f,b.height=g,b.canvas=i,b.clear(),b._left=b._top=0,h&&(b.renderfix=function(){}),b.renderfix(),b},c._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},c.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},c.prototype.clear=function(){c.eve("raphael.clear",this);for(var a=this.canvas;a.firstChild;)a.removeChild(a.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(c._g.doc.createTextNode("Created with Raphaël "+c.version)),a.appendChild(this.desc),a.appendChild(this.defs=q("defs"))},c.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null};var C=c.st;for(var D in B)B[a](D)&&!C[a](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}(),function(){if(c.vml){var a="hasOwnProperty",b=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=c.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(a){var d=/[ahqstv]/gi,e=c._pathToAbsolute;if(b(a).match(d)&&(e=c._path2curve),d=/[clmz]/g,e==c._pathToAbsolute&&!b(a).match(d)){var g=b(a).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(a);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(a,b,d){var e=c.matrix();return e.rotate(-a,.5,.5),{dx:e.x(b,d),dy:e.y(b,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};c.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,c,d){for(var e=b(c).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[a](t)&&(m[t]=i[t]);if(q&&(m.path=c._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~b(m.path).toLowerCase().indexOf("r")?c._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=c.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=b(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||c._g.doc.createElement("div"),I=H.style;I.clip=c.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=b(i.fill).match(c._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],c._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=c.getRGB(i.fill).hex,K.src=o,K.type="solid",c.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=b(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+c.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=c.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[a](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=b(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=c.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(a,f,g){a.attrs=a.attrs||{};var h=(a.attrs,Math.pow),i="linear",j=".5 .5";if(a.attrs.gradient=f,f=b(f).replace(c._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=c._parseDots(f);if(!l)return null;if(a=a.shape||a.node,l.length){a.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),a.appendChild(g)}return 1},D=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=b,this.matrix=c.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},E=c.el;D.prototype=E,E.constructor=D,E.transform=function(a){if(null==a)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=a=b(a).replace(/\.{3}|\u2026/g,this._.transform||o)),c._extractTransform(this,f+a);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~b(this.attrs.fill).indexOf("-"),l=!b(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=b(h),i.offset=h.offset();return null!==d&&(this._.transform=d,c._extractTransform(this,d)),this},E.rotate=function(a,c,e){if(this.removed)return this;if(null!=a){if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,c,e]])),this}},E.translate=function(a,c){return this.removed?this:(a=b(a).split(k),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=c),this.transform(this._.transform.concat([["t",a,c]])),this)},E.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=c.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),c.eve.unbind("raphael.*.*."+this.id),c._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;this.removed=!0}},E.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if(b==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=b.split(k),h={},i=0,m=g.length;m>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&c.is(b,"array")){for(h={},i=0,m=b.length;m>i;i++)h[b[i]]=this.attr(b[i]);return h}var n;null!=d&&(n={},n[b]=d),null==d&&c.is(b,"object")&&(n=b);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[a](o)&&n[a](o)&&c.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[a](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&c._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),c._toback(this,this.paper)),this)},E.insertAfter=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[a.length-1]),a.node.nextSibling?a.node.parentNode.insertBefore(this.node,a.node.nextSibling):a.node.parentNode.appendChild(this.node),c._insertafter(this,a,this.paper),this)},E.insertBefore=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[0]),a.node.parentNode.insertBefore(this.node,a.node),c._insertbefore(this,a,this.paper),this)},E.blur=function(a){var b=this.node.runtimeStyle,d=b.filter;return d=d.replace(r,o),0!==+a?(this.attrs.blur=a,b.filter=d+n+m+".Blur(pixelradius="+(+a||1.5)+")",b.margin=c.format("-{0}px 0 0 -{0}px",f(+a||1.5))):(b.filter=d,b.margin=0,delete this.attrs.blur),this},c._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},c._engine.rect=function(a,b,d,e,f,g){var h=c._rectPath(b,d,e,f,g),i=a.path(h),j=i.attrs;return i.X=j.x=b,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},c._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},c._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},c._engine.image=function(a,b,d,e,f,g){var h=c._rectPath(d,e,f,g),i=a.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=b,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=b,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},c._engine.text=function(a,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=c.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=b(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,a),l={fill:"#000",stroke:"none",font:c._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=b(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),a.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},c._engine.setSize=function(a,b){var d=this.canvas.style;return this.width=a,this.height=b,a==+a&&(a+="px"),b==+b&&(b+="px"),d.width=a,d.height=b,d.clip="rect(0 "+a+" "+b+" 0)",this._viewBox&&c._engine.setViewBox.apply(this,this._viewBox),this},c._engine.setViewBox=function(a,b,d,e,f){c.eve("raphael.setViewBox",this,this._viewBox,[a,b,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(a-=(j-d*g)/2/g),k>e*h&&(b-=(k-e*h)/2/h)),this._viewBox=[a,b,d,e,!!f],this._viewBoxShift={dx:-a,dy:-b,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;c._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},c._engine.initWin(c._g.win),c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a.container,d=a.height,e=a.width,f=a.x,g=a.y;if(!b)throw new Error("VML container not found.");var h=new c._Paper,i=h.canvas=c._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=c._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=c.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==b?(c._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i),h.renderfix=function(){},h},c.prototype.clear=function(){c.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=c._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},c.prototype.remove=function(){c.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;return!0};var G=c.st;for(var H in E)E[a](H)&&!G[a](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}}(),B.was?A.win.Raphael=c:Raphael=c,"object"==typeof exports&&(module.exports=c),c}); \ No newline at end of file diff --git a/plugins/jquery-mousewheel/jquery.mousewheel.min.js b/plugins/jquery-mousewheel/jquery.mousewheel.min.js new file mode 100644 index 0000000..03bfd60 --- /dev/null +++ b/plugins/jquery-mousewheel/jquery.mousewheel.min.js @@ -0,0 +1,8 @@ +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright 2015 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); \ No newline at end of file diff --git a/plugins/jquery-quicksearch/jquery.quicksearch.js b/plugins/jquery-quicksearch/jquery.quicksearch.js new file mode 100644 index 0000000..543d828 --- /dev/null +++ b/plugins/jquery-quicksearch/jquery.quicksearch.js @@ -0,0 +1,181 @@ +(function($, window, document, undefined) { + $.fn.quicksearch = function (target, opt) { + + var timeout, cache, rowcache, jq_results, val = '', e = this, options = $.extend({ + delay: 100, + selector: null, + stripeRows: null, + loader: null, + noResults: '', + matchedResultsCount: 0, + bind: 'keyup', + onBefore: function () { + return; + }, + onAfter: function () { + return; + }, + show: function () { + this.style.display = ""; + }, + hide: function () { + this.style.display = "none"; + }, + prepareQuery: function (val) { + return val.toLowerCase().split(' '); + }, + testQuery: function (query, txt, _row) { + for (var i = 0; i < query.length; i += 1) { + if (txt.indexOf(query[i]) === -1) { + return false; + } + } + return true; + } + }, opt); + + this.go = function () { + + var i = 0, + numMatchedRows = 0, + noresults = true, + query = options.prepareQuery(val), + val_empty = (val.replace(' ', '').length === 0); + + for (var i = 0, len = rowcache.length; i < len; i++) { + if (val_empty || options.testQuery(query, cache[i], rowcache[i])) { + options.show.apply(rowcache[i]); + noresults = false; + numMatchedRows++; + } else { + options.hide.apply(rowcache[i]); + } + } + + if (noresults) { + this.results(false); + } else { + this.results(true); + this.stripe(); + } + + this.matchedResultsCount = numMatchedRows; + this.loader(false); + options.onAfter(); + + return this; + }; + + /* + * External API so that users can perform search programatically. + * */ + this.search = function (submittedVal) { + val = submittedVal; + e.trigger(); + }; + + /* + * External API to get the number of matched results as seen in + * https://github.com/ruiz107/quicksearch/commit/f78dc440b42d95ce9caed1d087174dd4359982d6 + * */ + this.currentMatchedResults = function() { + return this.matchedResultsCount; + }; + + this.stripe = function () { + + if (typeof options.stripeRows === "object" && options.stripeRows !== null) + { + var joined = options.stripeRows.join(' '); + var stripeRows_length = options.stripeRows.length; + + jq_results.not(':hidden').each(function (i) { + $(this).removeClass(joined).addClass(options.stripeRows[i % stripeRows_length]); + }); + } + + return this; + }; + + this.strip_html = function (input) { + var output = input.replace(new RegExp('<[^<]+\>', 'g'), ""); + output = $.trim(output.toLowerCase()); + return output; + }; + + this.results = function (bool) { + if (typeof options.noResults === "string" && options.noResults !== "") { + if (bool) { + $(options.noResults).hide(); + } else { + $(options.noResults).show(); + } + } + return this; + }; + + this.loader = function (bool) { + if (typeof options.loader === "string" && options.loader !== "") { + (bool) ? $(options.loader).show() : $(options.loader).hide(); + } + return this; + }; + + this.cache = function () { + + jq_results = $(target); + + if (typeof options.noResults === "string" && options.noResults !== "") { + jq_results = jq_results.not(options.noResults); + } + + var t = (typeof options.selector === "string") ? jq_results.find(options.selector) : $(target).not(options.noResults); + cache = t.map(function () { + return e.strip_html(this.innerHTML); + }); + + rowcache = jq_results.map(function () { + return this; + }); + + /* + * Modified fix for sync-ing "val". + * Original fix https://github.com/michaellwest/quicksearch/commit/4ace4008d079298a01f97f885ba8fa956a9703d1 + * */ + val = val || this.val() || ""; + + return this.go(); + }; + + this.trigger = function () { + this.loader(true); + options.onBefore(); + + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + e.go(); + }, options.delay); + + return this; + }; + + this.cache(); + this.results(true); + this.stripe(); + this.loader(false); + + return this.each(function () { + + /* + * Changed from .bind to .on. + * */ + $(this).on(options.bind, function () { + + val = $(this).val(); + e.trigger(); + }); + }); + + }; + +}(jQuery, this, document)); diff --git a/plugins/jquery-sparkline/jquery.sparkline.min.js b/plugins/jquery-sparkline/jquery.sparkline.min.js new file mode 100644 index 0000000..fa616bf --- /dev/null +++ b/plugins/jquery-sparkline/jquery.sparkline.min.js @@ -0,0 +1,5 @@ +/* jquery.sparkline 2.1.2 - http://omnipotent.net/jquery.sparkline/ +** Licensed under the New BSD License - see above site for details */ + +(function(a,b,c){(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.sparkline&&a(jQuery)})(function(d){"use strict";var e={},f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L=0;f=function(){return{common:{type:"line",lineColor:"#00f",fillColor:"#cdf",defaultPixelsPerValue:3,width:"auto",height:"auto",composite:!1,tagValuesAttribute:"values",tagOptionsPrefix:"spark",enableTagOptions:!1,enableHighlight:!0,highlightLighten:1.4,tooltipSkipNull:!0,tooltipPrefix:"",tooltipSuffix:"",disableHiddenCheck:!1,numberFormatter:!1,numberDigitGroupCount:3,numberDigitGroupSep:",",numberDecimalMark:".",disableTooltips:!1,disableInteraction:!1},line:{spotColor:"#f80",highlightSpotColor:"#5f5",highlightLineColor:"#f22",spotRadius:1.5,minSpotColor:"#f80",maxSpotColor:"#f80",lineWidth:1,normalRangeMin:c,normalRangeMax:c,normalRangeColor:"#ccc",drawNormalOnTop:!1,chartRangeMin:c,chartRangeMax:c,chartRangeMinX:c,chartRangeMaxX:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')},bar:{barColor:"#3366cc",negBarColor:"#f44",stackedBarColor:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],zeroColor:c,nullColor:c,zeroAxis:!0,barWidth:4,barSpacing:1,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,colorMap:c,tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')},tristate:{barWidth:4,barSpacing:1,posBarColor:"#6f6",negBarColor:"#f44",zeroBarColor:"#999",colorMap:{},tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),tooltipValueLookups:{map:{"-1":"Loss",0:"Draw",1:"Win"}}},discrete:{lineHeight:"auto",thresholdColor:c,thresholdValue:0,chartRangeMax:c,chartRangeMin:c,chartRangeClip:!1,tooltipFormat:new h("{{prefix}}{{value}}{{suffix}}")},bullet:{targetColor:"#f33",targetWidth:3,performanceColor:"#33f",rangeColors:["#d3dafe","#a8b6ff","#7f94ff"],base:c,tooltipFormat:new h("{{fieldkey:fields}} - {{value}}"),tooltipValueLookups:{fields:{r:"Range",p:"Performance",t:"Target"}}},pie:{offset:0,sliceColors:["#3366cc","#dc3912","#ff9900","#109618","#66aa00","#dd4477","#0099c6","#990099"],borderWidth:0,borderColor:"#000",tooltipFormat:new h('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')},box:{raw:!1,boxLineColor:"#000",boxFillColor:"#cdf",whiskerColor:"#000",outlierLineColor:"#333",outlierFillColor:"#fff",medianColor:"#f00",showOutliers:!0,outlierIQR:1.5,spotRadius:1.5,target:c,targetColor:"#4a2",chartRangeMax:c,chartRangeMin:c,tooltipFormat:new h("{{field:fields}}: {{value}}"),tooltipFormatFieldlistKey:"field",tooltipValueLookups:{fields:{lq:"Lower Quartile",med:"Median",uq:"Upper Quartile",lo:"Left Outlier",ro:"Right Outlier",lw:"Left Whisker",rw:"Right Whisker"}}}}},E='.jqstooltip { position: absolute;left: 0px;top: 0px;visibility: hidden;background: rgb(0, 0, 0) transparent;background-color: rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";color: white;font: 10px arial, san serif;text-align: left;white-space: nowrap;padding: 5px;border: 1px solid white;z-index: 10000;}.jqsfield { color: white;font: 10px arial, san serif;text-align: left;}',g=function(){var a,b;return a=function(){this.init.apply(this,arguments)},arguments.length>1?(arguments[0]?(a.prototype=d.extend(new arguments[0],arguments[arguments.length-1]),a._super=arguments[0].prototype):a.prototype=arguments[arguments.length-1],arguments.length>2&&(b=Array.prototype.slice.call(arguments,1,-1),b.unshift(a.prototype),d.extend.apply(d,b))):a.prototype=arguments[0],a.prototype.cls=a,a},d.SPFormatClass=h=g({fre:/\{\{([\w.]+?)(:(.+?))?\}\}/g,precre:/(\w+)\.(\d+)/,init:function(a,b){this.format=a,this.fclass=b},render:function(a,b,d){var e=this,f=a,g,h,i,j,k;return this.format.replace(this.fre,function(){var a;return h=arguments[1],i=arguments[3],g=e.precre.exec(h),g?(k=g[2],h=g[1]):k=!1,j=f[h],j===c?"":i&&b&&b[i]?(a=b[i],a.get?b[i].get(j)||j:b[i][j]||j):(n(j)&&(d.get("numberFormatter")?j=d.get("numberFormatter")(j):j=s(j,k,d.get("numberDigitGroupCount"),d.get("numberDigitGroupSep"),d.get("numberDecimalMark"))),j)})}}),d.spformat=function(a,b){return new h(a,b)},i=function(a,b,c){return a<b?b:a>c?c:a},j=function(a,c){var d;return c===2?(d=b.floor(a.length/2),a.length%2?a[d]:(a[d-1]+a[d])/2):a.length%2?(d=(a.length*c+c)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1]):(d=(a.length*c+2)/4,d%1?(a[b.floor(d)]+a[b.floor(d)-1])/2:a[d-1])},k=function(a){var b;switch(a){case"undefined":a=c;break;case"null":a=null;break;case"true":a=!0;break;case"false":a=!1;break;default:b=parseFloat(a),a==b&&(a=b)}return a},l=function(a){var b,c=[];for(b=a.length;b--;)c[b]=k(a[b]);return c},m=function(a,b){var c,d,e=[];for(c=0,d=a.length;c<d;c++)a[c]!==b&&e.push(a[c]);return e},n=function(a){return!isNaN(parseFloat(a))&&isFinite(a)},s=function(a,b,c,e,f){var g,h;a=(b===!1?parseFloat(a).toString():a.toFixed(b)).split(""),g=(g=d.inArray(".",a))<0?a.length:g,g<a.length&&(a[g]=f);for(h=g-c;h>0;h-=c)a.splice(h,0,e);return a.join("")},o=function(a,b,c){var d;for(d=b.length;d--;){if(c&&b[d]===null)continue;if(b[d]!==a)return!1}return!0},p=function(a){var b=0,c;for(c=a.length;c--;)b+=typeof a[c]=="number"?a[c]:0;return b},r=function(a){return d.isArray(a)?a:[a]},q=function(b){var c;a.createStyleSheet?a.createStyleSheet().cssText=b:(c=a.createElement("style"),c.type="text/css",a.getElementsByTagName("head")[0].appendChild(c),c[typeof a.body.style.WebkitAppearance=="string"?"innerText":"innerHTML"]=b)},d.fn.simpledraw=function(b,e,f,g){var h,i;if(f&&(h=this.data("_jqs_vcanvas")))return h;if(d.fn.sparkline.canvas===!1)return!1;if(d.fn.sparkline.canvas===c){var j=a.createElement("canvas");if(!j.getContext||!j.getContext("2d")){if(!a.namespaces||!!a.namespaces.v)return d.fn.sparkline.canvas=!1,!1;a.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML"),d.fn.sparkline.canvas=function(a,b,c,d){return new J(a,b,c)}}else d.fn.sparkline.canvas=function(a,b,c,d){return new I(a,b,c,d)}}return b===c&&(b=d(this).innerWidth()),e===c&&(e=d(this).innerHeight()),h=d.fn.sparkline.canvas(b,e,this,g),i=d(this).data("_jqs_mhandler"),i&&i.registerCanvas(h),h},d.fn.cleardraw=function(){var a=this.data("_jqs_vcanvas");a&&a.reset()},d.RangeMapClass=t=g({init:function(a){var b,c,d=[];for(b in a)a.hasOwnProperty(b)&&typeof b=="string"&&b.indexOf(":")>-1&&(c=b.split(":"),c[0]=c[0].length===0?-Infinity:parseFloat(c[0]),c[1]=c[1].length===0?Infinity:parseFloat(c[1]),c[2]=a[b],d.push(c));this.map=a,this.rangelist=d||!1},get:function(a){var b=this.rangelist,d,e,f;if((f=this.map[a])!==c)return f;if(b)for(d=b.length;d--;){e=b[d];if(e[0]<=a&&e[1]>=a)return e[2]}return c}}),d.range_map=function(a){return new t(a)},u=g({init:function(a,b){var c=d(a);this.$el=c,this.options=b,this.currentPageX=0,this.currentPageY=0,this.el=a,this.splist=[],this.tooltip=null,this.over=!1,this.displayTooltips=!b.get("disableTooltips"),this.highlightEnabled=!b.get("disableHighlight")},registerSparkline:function(a){this.splist.push(a),this.over&&this.updateDisplay()},registerCanvas:function(a){var b=d(a.canvas);this.canvas=a,this.$canvas=b,b.mouseenter(d.proxy(this.mouseenter,this)),b.mouseleave(d.proxy(this.mouseleave,this)),b.click(d.proxy(this.mouseclick,this))},reset:function(a){this.splist=[],this.tooltip&&a&&(this.tooltip.remove(),this.tooltip=c)},mouseclick:function(a){var b=d.Event("sparklineClick");b.originalEvent=a,b.sparklines=this.splist,this.$el.trigger(b)},mouseenter:function(b){d(a.body).unbind("mousemove.jqs"),d(a.body).bind("mousemove.jqs",d.proxy(this.mousemove,this)),this.over=!0,this.currentPageX=b.pageX,this.currentPageY=b.pageY,this.currentEl=b.target,!this.tooltip&&this.displayTooltips&&(this.tooltip=new v(this.options),this.tooltip.updatePosition(b.pageX,b.pageY)),this.updateDisplay()},mouseleave:function(){d(a.body).unbind("mousemove.jqs");var b=this.splist,c=b.length,e=!1,f,g;this.over=!1,this.currentEl=null,this.tooltip&&(this.tooltip.remove(),this.tooltip=null);for(g=0;g<c;g++)f=b[g],f.clearRegionHighlight()&&(e=!0);e&&this.canvas.render()},mousemove:function(a){this.currentPageX=a.pageX,this.currentPageY=a.pageY,this.currentEl=a.target,this.tooltip&&this.tooltip.updatePosition(a.pageX,a.pageY),this.updateDisplay()},updateDisplay:function(){var a=this.splist,b=a.length,c=!1,e=this.$canvas.offset(),f=this.currentPageX-e.left,g=this.currentPageY-e.top,h,i,j,k,l;if(!this.over)return;for(j=0;j<b;j++)i=a[j],k=i.setRegionHighlight(this.currentEl,f,g),k&&(c=!0);if(c){l=d.Event("sparklineRegionChange"),l.sparklines=this.splist,this.$el.trigger(l);if(this.tooltip){h="";for(j=0;j<b;j++)i=a[j],h+=i.getCurrentRegionTooltip();this.tooltip.setContent(h)}this.disableHighlight||this.canvas.render()}k===null&&this.mouseleave()}}),v=g({sizeStyle:"position: static !important;display: block !important;visibility: hidden !important;float: left !important;",init:function(b){var c=b.get("tooltipClassname","jqstooltip"),e=this.sizeStyle,f;this.container=b.get("tooltipContainer")||a.body,this.tooltipOffsetX=b.get("tooltipOffsetX",10),this.tooltipOffsetY=b.get("tooltipOffsetY",12),d("#jqssizetip").remove(),d("#jqstooltip").remove(),this.sizetip=d("<div/>",{id:"jqssizetip",style:e,"class":c}),this.tooltip=d("<div/>",{id:"jqstooltip","class":c}).appendTo(this.container),f=this.tooltip.offset(),this.offsetLeft=f.left,this.offsetTop=f.top,this.hidden=!0,d(window).unbind("resize.jqs scroll.jqs"),d(window).bind("resize.jqs scroll.jqs",d.proxy(this.updateWindowDims,this)),this.updateWindowDims()},updateWindowDims:function(){this.scrollTop=d(window).scrollTop(),this.scrollLeft=d(window).scrollLeft(),this.scrollRight=this.scrollLeft+d(window).width(),this.updatePosition()},getSize:function(a){this.sizetip.html(a).appendTo(this.container),this.width=this.sizetip.width()+1,this.height=this.sizetip.height(),this.sizetip.remove()},setContent:function(a){if(!a){this.tooltip.css("visibility","hidden"),this.hidden=!0;return}this.getSize(a),this.tooltip.html(a).css({width:this.width,height:this.height,visibility:"visible"}),this.hidden&&(this.hidden=!1,this.updatePosition())},updatePosition:function(a,b){if(a===c){if(this.mousex===c)return;a=this.mousex-this.offsetLeft,b=this.mousey-this.offsetTop}else this.mousex=a-=this.offsetLeft,this.mousey=b-=this.offsetTop;if(!this.height||!this.width||this.hidden)return;b-=this.height+this.tooltipOffsetY,a+=this.tooltipOffsetX,b<this.scrollTop&&(b=this.scrollTop),a<this.scrollLeft?a=this.scrollLeft:a+this.width>this.scrollRight&&(a=this.scrollRight-this.width),this.tooltip.css({left:a,top:b})},remove:function(){this.tooltip.remove(),this.sizetip.remove(),this.sizetip=this.tooltip=c,d(window).unbind("resize.jqs scroll.jqs")}}),F=function(){q(E)},d(F),K=[],d.fn.sparkline=function(b,e){return this.each(function(){var f=new d.fn.sparkline.options(this,e),g=d(this),h,i;h=function(){var e,h,i,j,k,l,m;if(b==="html"||b===c){m=this.getAttribute(f.get("tagValuesAttribute"));if(m===c||m===null)m=g.html();e=m.replace(/(^\s*<!--)|(-->\s*$)|\s+/g,"").split(",")}else e=b;h=f.get("width")==="auto"?e.length*f.get("defaultPixelsPerValue"):f.get("width");if(f.get("height")==="auto"){if(!f.get("composite")||!d.data(this,"_jqs_vcanvas"))j=a.createElement("span"),j.innerHTML="a",g.html(j),i=d(j).innerHeight()||d(j).height(),d(j).remove(),j=null}else i=f.get("height");f.get("disableInteraction")?k=!1:(k=d.data(this,"_jqs_mhandler"),k?f.get("composite")||k.reset():(k=new u(this,f),d.data(this,"_jqs_mhandler",k)));if(f.get("composite")&&!d.data(this,"_jqs_vcanvas")){d.data(this,"_jqs_errnotify")||(alert("Attempted to attach a composite sparkline to an element with no existing sparkline"),d.data(this,"_jqs_errnotify",!0));return}l=new(d.fn.sparkline[f.get("type")])(this,e,f,h,i),l.render(),k&&k.registerSparkline(l)};if(d(this).html()&&!f.get("disableHiddenCheck")&&d(this).is(":hidden")||!d(this).parents("body").length){if(!f.get("composite")&&d.data(this,"_jqs_pending"))for(i=K.length;i;i--)K[i-1][0]==this&&K.splice(i-1,1);K.push([this,h]),d.data(this,"_jqs_pending",!0)}else h.call(this)})},d.fn.sparkline.defaults=f(),d.sparkline_display_visible=function(){var a,b,c,e=[];for(b=0,c=K.length;b<c;b++)a=K[b][0],d(a).is(":visible")&&!d(a).parents().is(":hidden")?(K[b][1].call(a),d.data(K[b][0],"_jqs_pending",!1),e.push(b)):!d(a).closest("html").length&&!d.data(a,"_jqs_pending")&&(d.data(K[b][0],"_jqs_pending",!1),e.push(b));for(b=e.length;b;b--)K.splice(e[b-1],1)},d.fn.sparkline.options=g({init:function(a,b){var c,f,g,h;this.userOptions=b=b||{},this.tag=a,this.tagValCache={},f=d.fn.sparkline.defaults,g=f.common,this.tagOptionsPrefix=b.enableTagOptions&&(b.tagOptionsPrefix||g.tagOptionsPrefix),h=this.getTagSetting("type"),h===e?c=f[b.type||g.type]:c=f[h],this.mergedOptions=d.extend({},g,c,b)},getTagSetting:function(a){var b=this.tagOptionsPrefix,d,f,g,h;if(b===!1||b===c)return e;if(this.tagValCache.hasOwnProperty(a))d=this.tagValCache.key;else{d=this.tag.getAttribute(b+a);if(d===c||d===null)d=e;else if(d.substr(0,1)==="["){d=d.substr(1,d.length-2).split(",");for(f=d.length;f--;)d[f]=k(d[f].replace(/(^\s*)|(\s*$)/g,""))}else if(d.substr(0,1)==="{"){g=d.substr(1,d.length-2).split(","),d={};for(f=g.length;f--;)h=g[f].split(":",2),d[h[0].replace(/(^\s*)|(\s*$)/g,"")]=k(h[1].replace(/(^\s*)|(\s*$)/g,""))}else d=k(d);this.tagValCache.key=d}return d},get:function(a,b){var d=this.getTagSetting(a),f;return d!==e?d:(f=this.mergedOptions[a])===c?b:f}}),d.fn.sparkline._base=g({disabled:!1,init:function(a,b,e,f,g){this.el=a,this.$el=d(a),this.values=b,this.options=e,this.width=f,this.height=g,this.currentRegion=c},initTarget:function(){var a=!this.options.get("disableInteraction");(this.target=this.$el.simpledraw(this.width,this.height,this.options.get("composite"),a))?(this.canvasWidth=this.target.pixelWidth,this.canvasHeight=this.target.pixelHeight):this.disabled=!0},render:function(){return this.disabled?(this.el.innerHTML="",!1):!0},getRegion:function(a,b){},setRegionHighlight:function(a,b,d){var e=this.currentRegion,f=!this.options.get("disableHighlight"),g;return b>this.canvasWidth||d>this.canvasHeight||b<0||d<0?null:(g=this.getRegion(a,b,d),e!==g?(e!==c&&f&&this.removeHighlight(),this.currentRegion=g,g!==c&&f&&this.renderHighlight(),!0):!1)},clearRegionHighlight:function(){return this.currentRegion!==c?(this.removeHighlight(),this.currentRegion=c,!0):!1},renderHighlight:function(){this.changeHighlight(!0)},removeHighlight:function(){this.changeHighlight(!1)},changeHighlight:function(a){},getCurrentRegionTooltip:function(){var a=this.options,b="",e=[],f,g,i,j,k,l,m,n,o,p,q,r,s,t;if(this.currentRegion===c)return"";f=this.getCurrentRegionFields(),q=a.get("tooltipFormatter");if(q)return q(this,a,f);a.get("tooltipChartTitle")&&(b+='<div class="jqs jqstitle">'+a.get("tooltipChartTitle")+"</div>\n"),g=this.options.get("tooltipFormat");if(!g)return"";d.isArray(g)||(g=[g]),d.isArray(f)||(f=[f]),m=this.options.get("tooltipFormatFieldlist"),n=this.options.get("tooltipFormatFieldlistKey");if(m&&n){o=[];for(l=f.length;l--;)p=f[l][n],(t=d.inArray(p,m))!=-1&&(o[t]=f[l]);f=o}i=g.length,s=f.length;for(l=0;l<i;l++){r=g[l],typeof r=="string"&&(r=new h(r)),j=r.fclass||"jqsfield";for(t=0;t<s;t++)if(!f[t].isNull||!a.get("tooltipSkipNull"))d.extend(f[t],{prefix:a.get("tooltipPrefix"),suffix:a.get("tooltipSuffix")}),k=r.render(f[t],a.get("tooltipValueLookups"),a),e.push('<div class="'+j+'">'+k+"</div>")}return e.length?b+e.join("\n"):""},getCurrentRegionFields:function(){},calcHighlightColor:function(a,c){var d=c.get("highlightColor"),e=c.get("highlightLighten"),f,g,h,j;if(d)return d;if(e){f=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(a)||/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(a);if(f){h=[],g=a.length===4?16:1;for(j=0;j<3;j++)h[j]=i(b.round(parseInt(f[j+1],16)*g*e),0,255);return"rgb("+h.join(",")+")"}}return a}}),w={changeHighlight:function(a){var b=this.currentRegion,c=this.target,e=this.regionShapes[b],f;e&&(f=this.renderRegion(b,a),d.isArray(f)||d.isArray(e)?(c.replaceWithShapes(e,f),this.regionShapes[b]=d.map(f,function(a){return a.id})):(c.replaceWithShape(e,f),this.regionShapes[b]=f.id))},render:function(){var a=this.values,b=this.target,c=this.regionShapes,e,f,g,h;if(!this.cls._super.render.call(this))return;for(g=a.length;g--;){e=this.renderRegion(g);if(e)if(d.isArray(e)){f=[];for(h=e.length;h--;)e[h].append(),f.push(e[h].id);c[g]=f}else e.append(),c[g]=e.id;else c[g]=null}b.render()}},d.fn.sparkline.line=x=g(d.fn.sparkline._base,{type:"line",init:function(a,b,c,d,e){x._super.init.call(this,a,b,c,d,e),this.vertices=[],this.regionMap=[],this.xvalues=[],this.yvalues=[],this.yminmax=[],this.hightlightSpotId=null,this.lastShapeId=null,this.initTarget()},getRegion:function(a,b,d){var e,f=this.regionMap;for(e=f.length;e--;)if(f[e]!==null&&b>=f[e][0]&&b<=f[e][1])return f[e][2];return c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.yvalues[a]===null,x:this.xvalues[a],y:this.yvalues[a],color:this.options.get("lineColor"),fillColor:this.options.get("fillColor"),offset:a}},renderHighlight:function(){var a=this.currentRegion,b=this.target,d=this.vertices[a],e=this.options,f=e.get("spotRadius"),g=e.get("highlightSpotColor"),h=e.get("highlightLineColor"),i,j;if(!d)return;f&&g&&(i=b.drawCircle(d[0],d[1],f,c,g),this.highlightSpotId=i.id,b.insertAfterShape(this.lastShapeId,i)),h&&(j=b.drawLine(d[0],this.canvasTop,d[0],this.canvasTop+this.canvasHeight,h),this.highlightLineId=j.id,b.insertAfterShape(this.lastShapeId,j))},removeHighlight:function(){var a=this.target;this.highlightSpotId&&(a.removeShapeId(this.highlightSpotId),this.highlightSpotId=null),this.highlightLineId&&(a.removeShapeId(this.highlightLineId),this.highlightLineId=null)},scanValues:function(){var a=this.values,c=a.length,d=this.xvalues,e=this.yvalues,f=this.yminmax,g,h,i,j,k;for(g=0;g<c;g++)h=a[g],i=typeof a[g]=="string",j=typeof a[g]=="object"&&a[g]instanceof Array,k=i&&a[g].split(":"),i&&k.length===2?(d.push(Number(k[0])),e.push(Number(k[1])),f.push(Number(k[1]))):j?(d.push(h[0]),e.push(h[1]),f.push(h[1])):(d.push(g),a[g]===null||a[g]==="null"?e.push(null):(e.push(Number(h)),f.push(Number(h))));this.options.get("xvalues")&&(d=this.options.get("xvalues")),this.maxy=this.maxyorg=b.max.apply(b,f),this.miny=this.minyorg=b.min.apply(b,f),this.maxx=b.max.apply(b,d),this.minx=b.min.apply(b,d),this.xvalues=d,this.yvalues=e,this.yminmax=f},processRangeOptions:function(){var a=this.options,b=a.get("normalRangeMin"),d=a.get("normalRangeMax");b!==c&&(b<this.miny&&(this.miny=b),d>this.maxy&&(this.maxy=d)),a.get("chartRangeMin")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMin")<this.miny)&&(this.miny=a.get("chartRangeMin")),a.get("chartRangeMax")!==c&&(a.get("chartRangeClip")||a.get("chartRangeMax")>this.maxy)&&(this.maxy=a.get("chartRangeMax")),a.get("chartRangeMinX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMinX")<this.minx)&&(this.minx=a.get("chartRangeMinX")),a.get("chartRangeMaxX")!==c&&(a.get("chartRangeClipX")||a.get("chartRangeMaxX")>this.maxx)&&(this.maxx=a.get("chartRangeMaxX"))},drawNormalRange:function(a,d,e,f,g){var h=this.options.get("normalRangeMin"),i=this.options.get("normalRangeMax"),j=d+b.round(e-e*((i-this.miny)/g)),k=b.round(e*(i-h)/g);this.target.drawRect(a,j,f,k,c,this.options.get("normalRangeColor")).append()},render:function(){var a=this.options,e=this.target,f=this.canvasWidth,g=this.canvasHeight,h=this.vertices,i=a.get("spotRadius"),j=this.regionMap,k,l,m,n,o,p,q,r,s,u,v,w,y,z,A,B,C,D,E,F,G,H,I,J,K;if(!x._super.render.call(this))return;this.scanValues(),this.processRangeOptions(),I=this.xvalues,J=this.yvalues;if(!this.yminmax.length||this.yvalues.length<2)return;n=o=0,k=this.maxx-this.minx===0?1:this.maxx-this.minx,l=this.maxy-this.miny===0?1:this.maxy-this.miny,m=this.yvalues.length-1,i&&(f<i*4||g<i*4)&&(i=0);if(i){G=a.get("highlightSpotColor")&&!a.get("disableInteraction");if(G||a.get("minSpotColor")||a.get("spotColor")&&J[m]===this.miny)g-=b.ceil(i);if(G||a.get("maxSpotColor")||a.get("spotColor")&&J[m]===this.maxy)g-=b.ceil(i),n+=b.ceil(i);if(G||(a.get("minSpotColor")||a.get("maxSpotColor"))&&(J[0]===this.miny||J[0]===this.maxy))o+=b.ceil(i),f-=b.ceil(i);if(G||a.get("spotColor")||a.get("minSpotColor")||a.get("maxSpotColor")&&(J[m]===this.miny||J[m]===this.maxy))f-=b.ceil(i)}g--,a.get("normalRangeMin")!==c&&!a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),q=[],r=[q],z=A=null,B=J.length;for(K=0;K<B;K++)s=I[K],v=I[K+1],u=J[K],w=o+b.round((s-this.minx)*(f/k)),y=K<B-1?o+b.round((v-this.minx)*(f/k)):f,A=w+(y-w)/2,j[K]=[z||0,A,K],z=A,u===null?K&&(J[K-1]!==null&&(q=[],r.push(q)),h.push(null)):(u<this.miny&&(u=this.miny),u>this.maxy&&(u=this.maxy),q.length||q.push([w,n+g]),p=[w,n+b.round(g-g*((u-this.miny)/l))],q.push(p),h.push(p));C=[],D=[],E=r.length;for(K=0;K<E;K++)q=r[K],q.length&&(a.get("fillColor")&&(q.push([q[q.length-1][0],n+g]),D.push(q.slice(0)),q.pop()),q.length>2&&(q[0]=[q[0][0],q[1][1]]),C.push(q));E=D.length;for(K=0;K<E;K++)e.drawShape(D[K],a.get("fillColor"),a.get("fillColor")).append();a.get("normalRangeMin")!==c&&a.get("drawNormalOnTop")&&this.drawNormalRange(o,n,g,f,l),E=C.length;for(K=0;K<E;K++)e.drawShape(C[K],a.get("lineColor"),c,a.get("lineWidth")).append();if(i&&a.get("valueSpots")){F=a.get("valueSpots"),F.get===c&&(F=new t(F));for(K=0;K<B;K++)H=F.get(J[K]),H&&e.drawCircle(o+b.round((I[K]-this.minx)*(f/k)),n+b.round(g-g*((J[K]-this.miny)/l)),i,c,H).append()}i&&a.get("spotColor")&&J[m]!==null&&e.drawCircle(o+b.round((I[I.length-1]-this.minx)*(f/k)),n+b.round(g-g*((J[m]-this.miny)/l)),i,c,a.get("spotColor")).append(),this.maxy!==this.minyorg&&(i&&a.get("minSpotColor")&&(s=I[d.inArray(this.minyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.minyorg-this.miny)/l)),i,c,a.get("minSpotColor")).append()),i&&a.get("maxSpotColor")&&(s=I[d.inArray(this.maxyorg,J)],e.drawCircle(o+b.round((s-this.minx)*(f/k)),n+b.round(g-g*((this.maxyorg-this.miny)/l)),i,c,a.get("maxSpotColor")).append())),this.lastShapeId=e.getLastShapeId(),this.canvasTop=n,e.render()}}),d.fn.sparkline.bar=y=g(d.fn.sparkline._base,w,{type:"bar",init:function(a,e,f,g,h){var j=parseInt(f.get("barWidth"),10),n=parseInt(f.get("barSpacing"),10),o=f.get("chartRangeMin"),p=f.get("chartRangeMax"),q=f.get("chartRangeClip"),r=Infinity,s=-Infinity,u,v,w,x,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R;y._super.init.call(this,a,e,f,g,h);for(A=0,B=e.length;A<B;A++){O=e[A],u=typeof O=="string"&&O.indexOf(":")>-1;if(u||d.isArray(O))J=!0,u&&(O=e[A]=l(O.split(":"))),O=m(O,null),v=b.min.apply(b,O),w=b.max.apply(b,O),v<r&&(r=v),w>s&&(s=w)}this.stacked=J,this.regionShapes={},this.barWidth=j,this.barSpacing=n,this.totalBarWidth=j+n,this.width=g=e.length*j+(e.length-1)*n,this.initTarget(),q&&(H=o===c?-Infinity:o,I=p===c?Infinity:p),z=[],x=J?[]:z;var S=[],T=[];for(A=0,B=e.length;A<B;A++)if(J){K=e[A],e[A]=N=[],S[A]=0,x[A]=T[A]=0;for(L=0,M=K.length;L<M;L++)O=N[L]=q?i(K[L],H,I):K[L],O!==null&&(O>0&&(S[A]+=O),r<0&&s>0?O<0?T[A]+=b.abs(O):x[A]+=O:x[A]+=b.abs(O-(O<0?s:r)),z.push(O))}else O=q?i(e[A],H,I):e[A],O=e[A]=k(O),O!==null&&z.push(O);this.max=G=b.max.apply(b,z),this.min=F=b.min.apply(b,z),this.stackMax=s=J?b.max.apply(b,S):G,this.stackMin=r=J?b.min.apply(b,z):F,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<F)&&(F=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>G)&&(G=f.get("chartRangeMax")),this.zeroAxis=D=f.get("zeroAxis",!0),F<=0&&G>=0&&D?E=0:D==0?E=F:F>0?E=F:E=G,this.xaxisOffset=E,C=J?b.max.apply(b,x)+b.max.apply(b,T):G-F,this.canvasHeightEf=D&&F<0?this.canvasHeight-2:this.canvasHeight-1,F<E?(Q=J&&G>=0?s:G,P=(Q-E)/C*this.canvasHeight,P!==b.ceil(P)&&(this.canvasHeightEf-=2,P=b.ceil(P))):P=this.canvasHeight,this.yoffset=P,d.isArray(f.get("colorMap"))?(this.colorMapByIndex=f.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=f.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.range=C},getRegion:function(a,d,e){var f=b.floor(d/this.totalBarWidth);return f<0||f>=this.values.length?c:f},getCurrentRegionFields:function(){var a=this.currentRegion,b=r(this.values[a]),c=[],d,e;for(e=b.length;e--;)d=b[e],c.push({isNull:d===null,value:d,color:this.calcColor(e,d,a),offset:a});return c},calcColor:function(a,b,e){var f=this.colorMapByIndex,g=this.colorMapByValue,h=this.options,i,j;return this.stacked?i=h.get("stackedBarColor"):i=b<0?h.get("negBarColor"):h.get("barColor"),b===0&&h.get("zeroColor")!==c&&(i=h.get("zeroColor")),g&&(j=g.get(b))?i=j:f&&f.length>e&&(i=f[e]),d.isArray(i)?i[a%i.length]:i},renderRegion:function(a,e){var f=this.values[a],g=this.options,h=this.xaxisOffset,i=[],j=this.range,k=this.stacked,l=this.target,m=a*this.totalBarWidth,n=this.canvasHeightEf,p=this.yoffset,q,r,s,t,u,v,w,x,y,z;f=d.isArray(f)?f:[f],w=f.length,x=f[0],t=o(null,f),z=o(h,f,!0);if(t)return g.get("nullColor")?(s=e?g.get("nullColor"):this.calcHighlightColor(g.get("nullColor"),g),q=p>0?p-1:p,l.drawRect(m,q,this.barWidth-1,0,s,s)):c;u=p;for(v=0;v<w;v++){x=f[v];if(k&&x===h){if(!z||y)continue;y=!0}j>0?r=b.floor(n*(b.abs(x-h)/j))+1:r=1,x<h||x===h&&p===0?(q=u,u+=r):(q=p-r,p-=r),s=this.calcColor(v,x,a),e&&(s=this.calcHighlightColor(s,g)),i.push(l.drawRect(m,q,this.barWidth-1,r-1,s,s))}return i.length===1?i[0]:i}}),d.fn.sparkline.tristate=z=g(d.fn.sparkline._base,w,{type:"tristate",init:function(a,b,e,f,g){var h=parseInt(e.get("barWidth"),10),i=parseInt(e.get("barSpacing"),10);z._super.init.call(this,a,b,e,f,g),this.regionShapes={},this.barWidth=h,this.barSpacing=i,this.totalBarWidth=h+i,this.values=d.map(b,Number),this.width=f=b.length*h+(b.length-1)*i,d.isArray(e.get("colorMap"))?(this.colorMapByIndex=e.get("colorMap"),this.colorMapByValue=null):(this.colorMapByIndex=null,this.colorMapByValue=e.get("colorMap"),this.colorMapByValue&&this.colorMapByValue.get===c&&(this.colorMapByValue=new t(this.colorMapByValue))),this.initTarget()},getRegion:function(a,c,d){return b.floor(c/this.totalBarWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],color:this.calcColor(this.values[a],a),offset:a}},calcColor:function(a,b){var c=this.values,d=this.options,e=this.colorMapByIndex,f=this.colorMapByValue,g,h;return f&&(h=f.get(a))?g=h:e&&e.length>b?g=e[b]:c[b]<0?g=d.get("negBarColor"):c[b]>0?g=d.get("posBarColor"):g=d.get("zeroBarColor"),g},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.target,g,h,i,j,k,l;g=f.pixelHeight,i=b.round(g/2),j=a*this.totalBarWidth,d[a]<0?(k=i,h=i-1):d[a]>0?(k=0,h=i-1):(k=i-1,h=2),l=this.calcColor(d[a],a);if(l===null)return;return c&&(l=this.calcHighlightColor(l,e)),f.drawRect(j,k,this.barWidth-1,h-1,l,l)}}),d.fn.sparkline.discrete=A=g(d.fn.sparkline._base,w,{type:"discrete",init:function(a,e,f,g,h){A._super.init.call(this,a,e,f,g,h),this.regionShapes={},this.values=e=d.map(e,Number),this.min=b.min.apply(b,e),this.max=b.max.apply(b,e),this.range=this.max-this.min,this.width=g=f.get("width")==="auto"?e.length*2:this.width,this.interval=b.floor(g/e.length),this.itemWidth=g/e.length,f.get("chartRangeMin")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMin")<this.min)&&(this.min=f.get("chartRangeMin")),f.get("chartRangeMax")!==c&&(f.get("chartRangeClip")||f.get("chartRangeMax")>this.max)&&(this.max=f.get("chartRangeMax")),this.initTarget(),this.target&&(this.lineHeight=f.get("lineHeight")==="auto"?b.round(this.canvasHeight*.3):f.get("lineHeight"))},getRegion:function(a,c,d){return b.floor(c/this.itemWidth)},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],offset:a}},renderRegion:function(a,c){var d=this.values,e=this.options,f=this.min,g=this.max,h=this.range,j=this.interval,k=this.target,l=this.canvasHeight,m=this.lineHeight,n=l-m,o,p,q,r;return p=i(d[a],f,g),r=a*j,o=b.round(n-n*((p-f)/h)),q=e.get("thresholdColor")&&p<e.get("thresholdValue")?e.get("thresholdColor"):e.get("lineColor"),c&&(q=this.calcHighlightColor(q,e)),k.drawLine(r,o,r,o+m,q)}}),d.fn.sparkline.bullet=B=g(d.fn.sparkline._base,{type:"bullet",init:function(a,d,e,f,g){var h,i,j;B._super.init.call(this,a,d,e,f,g),this.values=d=l(d),j=d.slice(),j[0]=j[0]===null?j[2]:j[0],j[1]=d[1]===null?j[2]:j[1],h=b.min.apply(b,d),i=b.max.apply(b,d),e.get("base")===c?h=h<0?h:0:h=e.get("base"),this.min=h,this.max=i,this.range=i-h,this.shapes={},this.valueShapes={},this.regiondata={},this.width=f=e.get("width")==="auto"?"4.0em":f,this.target=this.$el.simpledraw(f,g,e.get("composite")),d.length||(this.disabled=!0),this.initTarget()},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{fieldkey:a.substr(0,1),value:this.values[a.substr(1)],region:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.valueShapes[b],d;delete this.shapes[c];switch(b.substr(0,1)){case"r":d=this.renderRange(b.substr(1),a);break;case"p":d=this.renderPerformance(a);break;case"t":d=this.renderTarget(a)}this.valueShapes[b]=d.id,this.shapes[d.id]=b,this.target.replaceWithShape(c,d)},renderRange:function(a,c){var d=this.values[a],e=b.round(this.canvasWidth*((d-this.min)/this.range)),f=this.options.get("rangeColors")[a-2];return c&&(f=this.calcHighlightColor(f,this.options)),this.target.drawRect(0,0,e-1,this.canvasHeight-1,f,f)},renderPerformance:function(a){var c=this.values[1],d=b.round(this.canvasWidth*((c-this.min)/this.range)),e=this.options.get("performanceColor");return a&&(e=this.calcHighlightColor(e,this.options)),this.target.drawRect(0,b.round(this.canvasHeight*.3),d-1,b.round(this.canvasHeight*.4)-1,e,e)},renderTarget:function(a){var c=this.values[0],d=b.round(this.canvasWidth*((c-this.min)/this.range)-this.options.get("targetWidth")/2),e=b.round(this.canvasHeight*.1),f=this.canvasHeight-e*2,g=this.options.get("targetColor");return a&&(g=this.calcHighlightColor(g,this.options)),this.target.drawRect(d,e,this.options.get("targetWidth")-1,f-1,g,g)},render:function(){var a=this.values.length,b=this.target,c,d;if(!B._super.render.call(this))return;for(c=2;c<a;c++)d=this.renderRange(c).append(),this.shapes[d.id]="r"+c,this.valueShapes["r"+c]=d.id;this.values[1]!==null&&(d=this.renderPerformance().append(),this.shapes[d.id]="p1",this.valueShapes.p1=d.id),this.values[0]!==null&&(d=this.renderTarget().append(),this.shapes[d.id]="t0",this.valueShapes.t0=d.id),b.render()}}),d.fn.sparkline.pie=C=g(d.fn.sparkline._base,{type:"pie",init:function(a,c,e,f,g){var h=0,i;C._super.init.call(this,a,c,e,f,g),this.shapes={},this.valueShapes={},this.values=c=d.map(c,Number),e.get("width")==="auto"&&(this.width=this.height);if(c.length>0)for(i=c.length;i--;)h+=c[i];this.total=h,this.initTarget(),this.radius=b.floor(b.min(this.canvasWidth,this.canvasHeight)/2)},getRegion:function(a,b,d){var e=this.target.getShapeAt(a,b,d);return e!==c&&this.shapes[e]!==c?this.shapes[e]:c},getCurrentRegionFields:function(){var a=this.currentRegion;return{isNull:this.values[a]===c,value:this.values[a],percent:this.values[a]/this.total*100,color:this.options.get("sliceColors")[a%this.options.get("sliceColors").length],offset:a}},changeHighlight:function(a){var b=this.currentRegion,c=this.renderSlice(b,a),d=this.valueShapes[b];delete this.shapes[d],this.target.replaceWithShape(d,c),this.valueShapes[b]=c.id,this.shapes[c.id]=b},renderSlice:function(a,d){var e=this.target,f=this.options,g=this.radius,h=f.get("borderWidth"),i=f.get("offset"),j=2*b.PI,k=this.values,l=this.total,m=i?2*b.PI*(i/360):0,n,o,p,q,r;q=k.length;for(p=0;p<q;p++){n=m,o=m,l>0&&(o=m+j*(k[p]/l));if(a===p)return r=f.get("sliceColors")[p%f.get("sliceColors").length],d&&(r=this.calcHighlightColor(r,f)),e.drawPieSlice(g,g,g-h,n,o,c,r);m=o}},render:function(){var a=this.target,d=this.values,e=this.options,f=this.radius,g=e.get("borderWidth"),h,i;if(!C._super.render.call(this))return;g&&a.drawCircle(f,f,b.floor(f-g/2),e.get("borderColor"),c,g).append();for(i=d.length;i--;)d[i]&&(h=this.renderSlice(i).append(),this.valueShapes[i]=h.id,this.shapes[h.id]=i);a.render()}}),d.fn.sparkline.box=D=g(d.fn.sparkline._base,{type:"box",init:function(a,b,c,e,f){D._super.init.call(this,a,b,c,e,f),this.values=d.map(b,Number),this.width=c.get("width")==="auto"?"4.0em":e,this.initTarget(),this.values.length||(this.disabled=1)},getRegion:function(){return 1},getCurrentRegionFields:function(){var a=[{field:"lq",value:this.quartiles[0]},{field:"med",value:this.quartiles +[1]},{field:"uq",value:this.quartiles[2]}];return this.loutlier!==c&&a.push({field:"lo",value:this.loutlier}),this.routlier!==c&&a.push({field:"ro",value:this.routlier}),this.lwhisker!==c&&a.push({field:"lw",value:this.lwhisker}),this.rwhisker!==c&&a.push({field:"rw",value:this.rwhisker}),a},render:function(){var a=this.target,d=this.values,e=d.length,f=this.options,g=this.canvasWidth,h=this.canvasHeight,i=f.get("chartRangeMin")===c?b.min.apply(b,d):f.get("chartRangeMin"),k=f.get("chartRangeMax")===c?b.max.apply(b,d):f.get("chartRangeMax"),l=0,m,n,o,p,q,r,s,t,u,v,w;if(!D._super.render.call(this))return;if(f.get("raw"))f.get("showOutliers")&&d.length>5?(n=d[0],m=d[1],p=d[2],q=d[3],r=d[4],s=d[5],t=d[6]):(m=d[0],p=d[1],q=d[2],r=d[3],s=d[4]);else{d.sort(function(a,b){return a-b}),p=j(d,1),q=j(d,2),r=j(d,3),o=r-p;if(f.get("showOutliers")){m=s=c;for(u=0;u<e;u++)m===c&&d[u]>p-o*f.get("outlierIQR")&&(m=d[u]),d[u]<r+o*f.get("outlierIQR")&&(s=d[u]);n=d[0],t=d[e-1]}else m=d[0],s=d[e-1]}this.quartiles=[p,q,r],this.lwhisker=m,this.rwhisker=s,this.loutlier=n,this.routlier=t,w=g/(k-i+1),f.get("showOutliers")&&(l=b.ceil(f.get("spotRadius")),g-=2*b.ceil(f.get("spotRadius")),w=g/(k-i+1),n<m&&a.drawCircle((n-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append(),t>s&&a.drawCircle((t-i)*w+l,h/2,f.get("spotRadius"),f.get("outlierLineColor"),f.get("outlierFillColor")).append()),a.drawRect(b.round((p-i)*w+l),b.round(h*.1),b.round((r-p)*w),b.round(h*.8),f.get("boxLineColor"),f.get("boxFillColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/2),b.round((p-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((m-i)*w+l),b.round(h/4),b.round((m-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/2),b.round((r-i)*w+l),b.round(h/2),f.get("lineColor")).append(),a.drawLine(b.round((s-i)*w+l),b.round(h/4),b.round((s-i)*w+l),b.round(h-h/4),f.get("whiskerColor")).append(),a.drawLine(b.round((q-i)*w+l),b.round(h*.1),b.round((q-i)*w+l),b.round(h*.9),f.get("medianColor")).append(),f.get("target")&&(v=b.ceil(f.get("spotRadius")),a.drawLine(b.round((f.get("target")-i)*w+l),b.round(h/2-v),b.round((f.get("target")-i)*w+l),b.round(h/2+v),f.get("targetColor")).append(),a.drawLine(b.round((f.get("target")-i)*w+l-v),b.round(h/2),b.round((f.get("target")-i)*w+l+v),b.round(h/2),f.get("targetColor")).append()),a.render()}}),G=g({init:function(a,b,c,d){this.target=a,this.id=b,this.type=c,this.args=d},append:function(){return this.target.appendShape(this),this}}),H=g({_pxregex:/(\d+)(px)?\s*$/i,init:function(a,b,c){if(!a)return;this.width=a,this.height=b,this.target=c,this.lastShapeId=null,c[0]&&(c=c[0]),d.data(c,"_jqs_vcanvas",this)},drawLine:function(a,b,c,d,e,f){return this.drawShape([[a,b],[c,d]],e,f)},drawShape:function(a,b,c,d){return this._genShape("Shape",[a,b,c,d])},drawCircle:function(a,b,c,d,e,f){return this._genShape("Circle",[a,b,c,d,e,f])},drawPieSlice:function(a,b,c,d,e,f,g){return this._genShape("PieSlice",[a,b,c,d,e,f,g])},drawRect:function(a,b,c,d,e,f){return this._genShape("Rect",[a,b,c,d,e,f])},getElement:function(){return this.canvas},getLastShapeId:function(){return this.lastShapeId},reset:function(){alert("reset not implemented")},_insert:function(a,b){d(b).html(a)},_calculatePixelDims:function(a,b,c){var e;e=this._pxregex.exec(b),e?this.pixelHeight=e[1]:this.pixelHeight=d(c).height(),e=this._pxregex.exec(a),e?this.pixelWidth=e[1]:this.pixelWidth=d(c).width()},_genShape:function(a,b){var c=L++;return b.unshift(c),new G(this,c,a,b)},appendShape:function(a){alert("appendShape not implemented")},replaceWithShape:function(a,b){alert("replaceWithShape not implemented")},insertAfterShape:function(a,b){alert("insertAfterShape not implemented")},removeShapeId:function(a){alert("removeShapeId not implemented")},getShapeAt:function(a,b,c){alert("getShapeAt not implemented")},render:function(){alert("render not implemented")}}),I=g(H,{init:function(b,e,f,g){I._super.init.call(this,b,e,f),this.canvas=a.createElement("canvas"),f[0]&&(f=f[0]),d.data(f,"_jqs_vcanvas",this),d(this.canvas).css({display:"inline-block",width:b,height:e,verticalAlign:"top"}),this._insert(this.canvas,f),this._calculatePixelDims(b,e,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,this.interact=g,this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c,d(this.canvas).css({width:this.pixelWidth,height:this.pixelHeight})},_getContext:function(a,b,d){var e=this.canvas.getContext("2d");return a!==c&&(e.strokeStyle=a),e.lineWidth=d===c?1:d,b!==c&&(e.fillStyle=b),e},reset:function(){var a=this._getContext();a.clearRect(0,0,this.pixelWidth,this.pixelHeight),this.shapes={},this.shapeseq=[],this.currentTargetShapeId=c},_drawShape:function(a,b,d,e,f){var g=this._getContext(d,e,f),h,i;g.beginPath(),g.moveTo(b[0][0]+.5,b[0][1]+.5);for(h=1,i=b.length;h<i;h++)g.lineTo(b[h][0]+.5,b[h][1]+.5);d!==c&&g.stroke(),e!==c&&g.fill(),this.targetX!==c&&this.targetY!==c&&g.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawCircle:function(a,d,e,f,g,h,i){var j=this._getContext(g,h,i);j.beginPath(),j.arc(d,e,f,0,2*b.PI,!1),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a),g!==c&&j.stroke(),h!==c&&j.fill()},_drawPieSlice:function(a,b,d,e,f,g,h,i){var j=this._getContext(h,i);j.beginPath(),j.moveTo(b,d),j.arc(b,d,e,f,g,!1),j.lineTo(b,d),j.closePath(),h!==c&&j.stroke(),i&&j.fill(),this.targetX!==c&&this.targetY!==c&&j.isPointInPath(this.targetX,this.targetY)&&(this.currentTargetShapeId=a)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b+d,c],[b+d,c+e],[b,c+e],[b,c]],f,g)},appendShape:function(a){return this.shapes[a.id]=a,this.shapeseq.push(a.id),this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=this.shapeseq,d;this.shapes[b.id]=b;for(d=c.length;d--;)c[d]==a&&(c[d]=b.id);delete this.shapes[a]},replaceWithShapes:function(a,b){var c=this.shapeseq,d={},e,f,g;for(f=a.length;f--;)d[a[f]]=!0;for(f=c.length;f--;)e=c[f],d[e]&&(c.splice(f,1),delete this.shapes[e],g=f);for(f=b.length;f--;)c.splice(g,0,b[f].id),this.shapes[b[f].id]=b[f]},insertAfterShape:function(a,b){var c=this.shapeseq,d;for(d=c.length;d--;)if(c[d]===a){c.splice(d+1,0,b.id),this.shapes[b.id]=b;return}},removeShapeId:function(a){var b=this.shapeseq,c;for(c=b.length;c--;)if(b[c]===a){b.splice(c,1);break}delete this.shapes[a]},getShapeAt:function(a,b,c){return this.targetX=b,this.targetY=c,this.render(),this.currentTargetShapeId},render:function(){var a=this.shapeseq,b=this.shapes,c=a.length,d=this._getContext(),e,f,g;d.clearRect(0,0,this.pixelWidth,this.pixelHeight);for(g=0;g<c;g++)e=a[g],f=b[e],this["_draw"+f.type].apply(this,f.args);this.interact||(this.shapes={},this.shapeseq=[])}}),J=g(H,{init:function(b,c,e){var f;J._super.init.call(this,b,c,e),e[0]&&(e=e[0]),d.data(e,"_jqs_vcanvas",this),this.canvas=a.createElement("span"),d(this.canvas).css({display:"inline-block",position:"relative",overflow:"hidden",width:b,height:c,margin:"0px",padding:"0px",verticalAlign:"top"}),this._insert(this.canvas,e),this._calculatePixelDims(b,c,this.canvas),this.canvas.width=this.pixelWidth,this.canvas.height=this.pixelHeight,f='<v:group coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'"'+' style="position:absolute;top:0;left:0;width:'+this.pixelWidth+"px;height="+this.pixelHeight+'px;"></v:group>',this.canvas.insertAdjacentHTML("beforeEnd",f),this.group=d(this.canvas).children()[0],this.rendered=!1,this.prerender=""},_drawShape:function(a,b,d,e,f){var g=[],h,i,j,k,l,m,n;for(n=0,m=b.length;n<m;n++)g[n]=""+b[n][0]+","+b[n][1];return h=g.splice(0,1),f=f===c?1:f,i=d===c?' stroked="false" ':' strokeWeight="'+f+'px" strokeColor="'+d+'" ',j=e===c?' filled="false"':' fillColor="'+e+'" filled="true" ',k=g[0]===g[g.length-1]?"x ":"",l='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+i+j+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+h+" l "+g.join(", ")+" "+k+'e">'+" </v:shape>",l},_drawCircle:function(a,b,d,e,f,g,h){var i,j,k;return b-=e,d-=e,i=f===c?' stroked="false" ':' strokeWeight="'+h+'px" strokeColor="'+f+'" ',j=g===c?' filled="false"':' fillColor="'+g+'" filled="true" ',k='<v:oval id="jqsshape'+a+'" '+i+j+' style="position:absolute;top:'+d+"px; left:"+b+"px; width:"+e*2+"px; height:"+e*2+'px"></v:oval>',k},_drawPieSlice:function(a,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r;if(g===h)return"";h-g===2*b.PI&&(g=0,h=2*b.PI),l=d+b.round(b.cos(g)*f),m=e+b.round(b.sin(g)*f),n=d+b.round(b.cos(h)*f),o=e+b.round(b.sin(h)*f);if(l===n&&m===o){if(h-g<b.PI)return"";l=n=d+f,m=o=e}return l===n&&m===o&&h-g<b.PI?"":(k=[d-f,e-f,d+f,e+f,l,m,n,o],p=i===c?' stroked="false" ':' strokeWeight="1px" strokeColor="'+i+'" ',q=j===c?' filled="false"':' fillColor="'+j+'" filled="true" ',r='<v:shape coordorigin="0 0" coordsize="'+this.pixelWidth+" "+this.pixelHeight+'" '+' id="jqsshape'+a+'" '+p+q+' style="position:absolute;left:0px;top:0px;height:'+this.pixelHeight+"px;width:"+this.pixelWidth+'px;padding:0px;margin:0px;" '+' path="m '+d+","+e+" wa "+k.join(", ")+' x e">'+" </v:shape>",r)},_drawRect:function(a,b,c,d,e,f,g){return this._drawShape(a,[[b,c],[b,c+e],[b+d,c+e],[b+d,c],[b,c]],f,g)},reset:function(){this.group.innerHTML=""},appendShape:function(a){var b=this["_draw"+a.type].apply(this,a.args);return this.rendered?this.group.insertAdjacentHTML("beforeEnd",b):this.prerender+=b,this.lastShapeId=a.id,a.id},replaceWithShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].outerHTML=e},replaceWithShapes:function(a,b){var c=d("#jqsshape"+a[0]),e="",f=b.length,g;for(g=0;g<f;g++)e+=this["_draw"+b[g].type].apply(this,b[g].args);c[0].outerHTML=e;for(g=1;g<a.length;g++)d("#jqsshape"+a[g]).remove()},insertAfterShape:function(a,b){var c=d("#jqsshape"+a),e=this["_draw"+b.type].apply(this,b.args);c[0].insertAdjacentHTML("afterEnd",e)},removeShapeId:function(a){var b=d("#jqsshape"+a);this.group.removeChild(b[0])},getShapeAt:function(a,b,c){var d=a.id.substr(8);return d},render:function(){this.rendered||(this.group.innerHTML=this.prerender,this.rendered=!0)}})})})(document,Math); \ No newline at end of file diff --git a/plugins/jquery-ui/jquery-ui.min.css b/plugins/jquery-ui/jquery-ui.min.css new file mode 100644 index 0000000..efccc47 --- /dev/null +++ b/plugins/jquery-ui/jquery-ui.min.css @@ -0,0 +1,7 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px} \ No newline at end of file diff --git a/plugins/jquery-ui/jquery-ui.min.js b/plugins/jquery-ui/jquery-ui.min.js new file mode 100644 index 0000000..5824d12 --- /dev/null +++ b/plugins/jquery-ui/jquery-ui.min.js @@ -0,0 +1,13 @@ +/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ + +(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget); +i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target); +return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) +},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0; +if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()}; +f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this)); +return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels; +this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})}); \ No newline at end of file diff --git a/plugins/jquery-validation/js/jquery.validate.min.js b/plugins/jquery-validation/js/jquery.validate.min.js new file mode 100644 index 0000000..643837b --- /dev/null +++ b/plugins/jquery-validation/js/jquery.validate.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.14.0 - 6/30/2015 + * http://jqueryvalidation.org/ + * Copyright (c) 2015 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,d=d.concat(c.errorList)}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b===this.lastElement)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors();var b,c=this.elements().removeData("previousValue").removeAttr("aria-invalid");if(this.settings.unhighlight)for(b=0;c[b];b++)this.settings.unhighlight.call(this,c[b],this.settings.errorClass,"");else c.removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?this.findByName(b.name).filter(":checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j instanceof TypeError&&(j.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a];return void 0},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c],"<strong>Warning: No message defined for "+b.name+"</strong>")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id").replace(/(:|\.|\[|\]|\$)/g,"\\$1"),i?i.match(new RegExp("\\b"+f+"\\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.name],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.off(".validate-equalTo").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})}); \ No newline at end of file diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer-preview.html b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer-preview.html new file mode 100644 index 0000000..5e9fa8a --- /dev/null +++ b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer-preview.html @@ -0,0 +1,924 @@ +<!DOCTYPE html> +<html> + <head> + <title>jquery-filer glyphs preview</title> + + <style> + /* Page Styles */ + + * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; + } + + body { + background: #fff; + color: #444; + font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; + } + + a, + a:visited { + color: #888; + text-decoration: underline; + } + a:hover, + a:focus { color: #000; } + + header { + border-bottom: 2px solid #ddd; + margin-bottom: 20px; + overflow: hidden; + padding: 20px 0; + } + + header h1 { + color: #888; + float: left; + font-size: 36px; + font-weight: 300; + } + + header a { + float: right; + font-size: 14px; + } + + .container { + margin: 0 auto; + max-width: 1200px; + min-width: 960px; + padding: 0 40px; + width: 90%; + } + + .glyph { + border-bottom: 1px dotted #ccc; + padding: 10px 0 20px; + margin-bottom: 20px; + } + + .preview-glyphs { vertical-align: bottom; } + + .preview-scale { + color: #888; + font-size: 12px; + margin-top: 5px; + } + + .step { + display: inline-block; + line-height: 1; + position: relative; + width: 10%; + } + + .step .letters, + .step i { + -webkit-transition: opacity .3s; + -moz-transition: opacity .3s; + -ms-transition: opacity .3s; + -o-transition: opacity .3s; + transition: opacity .3s; + } + + .step:hover .letters { opacity: 1; } + .step:hover i { opacity: .3; } + + .letters { + opacity: .3; + position: absolute; + } + + .characters-off .letters { display: none; } + .characters-off .step:hover i { opacity: 1; } + + + .size-12 { font-size: 12px; } + + .size-14 { font-size: 14px; } + + .size-16 { font-size: 16px; } + + .size-18 { font-size: 18px; } + + .size-21 { font-size: 21px; } + + .size-24 { font-size: 24px; } + + .size-36 { font-size: 36px; } + + .size-48 { font-size: 48px; } + + .size-60 { font-size: 60px; } + + .size-72 { font-size: 72px; } + + + .usage { margin-top: 10px; } + + .usage input { + font-family: monospace; + margin-right: 3px; + padding: 2px 5px; + text-align: center; + } + + .usage .point { width: 150px; } + + .usage .class { width: 250px; } + + footer { + color: #888; + font-size: 12px; + padding: 20px 0; + } + + /* Icon Font: jquery-filer */ + + @font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.eot"); + src: url("./jquery-filer.eot?#iefix") format("embedded-opentype"), + url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABY8AA0AAAAAJGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAWIAAAABoAAAAcbgWsnk9TLzIAAAGgAAAASgAAAGBDMGCrY21hcAAAAjgAAAB2AAABir/jw6BjdnQgAAACsAAAAAQAAAAEABEBRGdhc3AAABYYAAAACAAAAAj//wADZ2x5ZgAAAxwAABDDAAAbVDwbM1RoZWFkAAABMAAAADAAAAA2AudKS2hoZWEAAAFgAAAAIAAAACQD8QHEaG10eAAAAewAAABLAAAAbgpuBLZsb2NhAAACtAAAAGgAAABonHCkGm1heHAAAAGAAAAAIAAAACAAgQDCbmFtZQAAE+AAAAFmAAACwZhqioJwb3N0AAAVSAAAAM8AAAIIqeejRXjaY2BkYGAA4ogbscvj+W2+MnAzMYDAhScsz2H0////9zMxMh4EcjkYwNIAbNUNrHjaY2BkYGA8+H8/gx4Tw///DAxMjAxAERTAAgB/egS4AAEAAAAzAJEADAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYWJg/MLAysDA6MOYxsDA4A6lvzJIMrQwMDAxsHEywIEAgskQkOaawnDg07fPLowH/h9g0GM8yOAIFGZEUqLAwAgAW4ENdAAAeNpjYmAQZAACJgi2Y1BgcAAyVYC4ASQO5IFEHBiyweI2QNIGzFIAQgaGE0C2CpClzCAHhBD1DgwLwKQDQyBQbAZYNQTYAAC2kQkrAHja3YxNCoNADIXfOGUUnEDtQlwobnuQHqYH6Xm7yAMRReLUigvpCfpBEt4PAeDxnRYOH15JuU1f8Ey3xjU5QUedCXrmFN7YsOfDDNBBZ7XNL1mxZse7mYiUUkgQL4hLnOIQ3/v/H7iAI3RZWtm5gL9nBYpEIu8AAAARAUQAAAAqACoAKgBSAJ4AvgEGAUQBfAGqAkACeAKyAwwDPAN+A7gEDASUBLIE8gUgBVgFmgX8BjYGhga2BvoHSAeeB/AIHAhiCLII5AkcCYIJwgoSCi4KWgqyCuALNguYDGwMvAzwDUINqnjanVl7jNzGeZ+Pr1lyd0nuckne7d5x38t7P3aXy3vsPSRLOkknyVIiy3q4tlzbkuw6tRoHidTW8cVwYBVF28SxdQ5gNIpTCwWaJrJRGW5go+fHH0VRIEbkPwo0CGQjRV0kQa0U7R+tQfUbcu+0d3KMonviPD7OcGa+5+8bEY6kCCHfhrsITygZewXIePtVKpBf1V+RxJ+2X+U5bJJXeEYWGflVKsEn7VeB0RupRsptpMqpC185dQruCv4qBQ38GpB5Uoa3YT+xsJfROKk0ztWaC9Cq58FnBbxNr5ZohpZOUMrqvX/BOtCXkV4rSRJSsUfp3pexjV/gSYEU4Dos4l6LZJKQas21zIxUqnlNX6IO1Fu1Zq1cksyMVW95zVajbmWoCqWaW2v681C3bFirTWvb79muTdeKD33poW9RMT9KFepY4j+L5S8//eWyGFVXZvuzztj27WNOtn+2MTf3pwodzYuUipazT5dndu6alnV5etfOGRKec5EYsAZfYDzEVUw86jjUwg3YLbhrZKH4XDy+6iyMeIUCfGFhdLRwMR7/dn54dGFoKJxPyBGOwG5SZ3ySyqVxaJZddpKM1aj7pm/TMlJr4Qe9PCCxxQ6qgesjiSNLk9MVgC/kBqueVx3J9do9UJmZXFqa9CrcY7lhRh3I9dt9FX8S4MFdwwDPON5erwR5Iz+y68GlAeD+qIiE/opRGSQiqdz8OXwALxGFqCSN0svjJpGVQH2UnQ227/qdx27hSXEjNryfTAb//udNSCXcRPA3xuxMevHlBXPBWngkHh8SkoK1CI8kazjG+w6kcOyLRmamZ+HlRXPRWjTZEMFaIIQj5OZPkBc/wHWrhPhlr2HOAwrSpmOADKENu2GWPRXbNdd38E3LL1+96thPHLhzxew3Htu55/f0Jy9uJfz46h/uuefk/tgdh+/Z1e5q43orRIcVOEuSJEdIJaMBaikgq2dRnTLSMGpPR2NhRTwrJvBRpOuSEhYR4SIjsqZyJKEoUYfpBXfz5s01DmCNjJNThIhm0ZsH30NtdGstvzYHbZjn/AkfC5SrRSV8sMQ/0wGxOAbj4PmtBWhM4LSWR/2WW8O6Ngwq4CAV+iGTB9eyrTxn5cFECkcCAmePmKoqU14BUTFVXlSy6dhRU6Ax3EsqHtPV9OHHgiKsyQ/uVqWUysc5AXiV5wBbyTtoKiEoKZ1yvA68KMqcakjJPacmNW3+XrVmDNKM3k8VOa5qvWqCE5REHGbjaTMjJ7WSHaumh5L3jY3vkrnPiYlBhadCTIIeTezro+BCTDaAS+cTSd0SJCnOcbHhpHAI5F2ocwR5RVDn4kQjBrFJGXWukSqmGqgB+FAsivhAqtgLRa+MShA+cPl4QI6fuHhiLh98nIfloA3vtrHbhqdZ08FfG3/BcUgG/wHDvzWHPyYbtFmCNrsSrVRtRmrssgL9R2hjCzAPGXQfY9BkzgO+JlpiUjw1hYUlisdFiYrPiAvNo2eONbA4+lFMQPJDUyK+pVQ4LuLbNL5rHDtztNkM1yzcvI7+6yRa1Cz2Syqgp8ozWaKUbVxxHpo1K8OU22VqwHS82aot8POiPwZetIvGqWPNSgH1JF5z4lpKaxxrNg+3T8+l0/VtSR0ECQA44DgugYoa49zR9unfPw2L5dlSXyOd7LFMPadwXHl2x+zk0T3D3IgucKIIApvBcaqoJtKKta02smd4eN23FeAS8olxyWQGYUZWMcdMcA6YoXihtVj9zE7hkqqcUZUJRT2jqF3Nj26jsGaXHMpoJaTqNVG9w6Ik9TODRx23ZhmfmD3OAeNRt0zOKtKiIhUkZZGZ5Ebz4IZUrtz2jjX3dssFyO+QHDwPO9kZ1z0AjdzAAqpEd8SyMszXPSeVYhlp714pE8M4hfWW/n0Ytz6Nvt7v1r9h4kf6h6bNtDB062EZ6iG9pY32p+jkfeLoaKhwEmugRqIK3ka5f4MbFz5rWIfyeDdvKLNLlP8a2uUo7nQb2U+OkYcIKUTCZ1LPGGEplVORZnip2xTDRcuNhGqgSUfCNMIgVgyDXLrra1ZXG1xVllX5YNIwktXc9VyVNU7iv6SxclKmi1ReC64byetJQ6eyTIM1Vt4dzlkKS5mGpDUKXzGShaQR4DeqOSiEnQL7WkHX2dzgYSgE+B0D9svhzGBtY+6tAjFIG/nxLvJDQN4kUYY2Hsg2G1BMMW9U/m5w7sYDwT/AvtWrsHYpuMSR5gPBVRhdjWReQJmfJDoZCJGCBiqHHKih2FuNql1s+UyqszDDOZztAOMd/CBBIQGcEgveScQgCTQBR7ngLzmBU3hlWZZiPC9xiUTqz2IUSEz5kRRDFX9dUSaL5hClPM9RPiFKzJalLXtPEZP0bj2Bje6W4uPis+k0r88MnT00svlMTz76qDA2lm80kC+RPj9FZIzcJabRLmUejaM+KjPzdJWMypXGuOY8V3cALlhvlAb66hXrv98sDVYXKrDbaS4dWGo6UfXWQPENy6o0xt+wKwvVwYMHdjedfGN3NCD0pYRMYby4G1cbCnmJ+ldkSLBlM7xgt+wNjMSAVKdCVYMVb3nZCz4cnG4P6rtHZoZ6swMzMwM9djxWalRn40KSCn0DA30wtfzwvpmBoRlusD4U/2D60HRCkt2RSpKDgSmXRP4cV74OXyMxsoRYBQERdTEm+QwCoiV4TMtR7ctu02t2bULj1MihmeVww3644RDl4Ly34nuXE76+WhqfKD10v5Bza33a7FDfZFJS5bjey4Ns9Y04J07UmqUcX7LUhDpdmtgJb8SXl+OtX//aapRKk7rb1zcENDk4U8gmJdHWZT7m9uRHdK/qjMuWIzmVHRPAhb5vPSZVme/bCD3SlsjDMdd+fSPMCHRrlKm0Pzc2d/qX6yEFpNtjSqE93Dscye7mRyi7b5Ex5vtIyKvGp4trg0kdqTbqPOOyj2rKkWXv85/vkl1bWZfdY491Sde7XDePHDFR6YYeWXamD80kJXlglMnRnRpwpgcHmYQH48FfR8P+Dff392inU+ibNYZ8qxsBL/JmBu24OTfqwwRGlDCsSEosFlWKdJDKZ6YYlRXArbEmK8I8Zt33xxFzjhKSxr11nHrL2Ah+kZf0/KbLCBgH7Ijyj8w1hw79+4IwgRCNnxAEgeP5KTR2QRTGBAFWwgHMiwefREOwOPZiKA/uRU4QSLiPCu7jp3AJz1kkjfXo+1lru4aFKJMZGkJRI4xAhejjrBDQKU3hE22CX5NlUYsFKzFNlOU1QUtruzf2cv8XEXPyIHyR5/lfBpc0PYY/XYOTMVlety2W610iLlm4XQYs3HTvdJ3us3Rwc/COZLQy5LznDA05V5BVwhW9p0d/T+8RBF0QTiJiH/keL/F9PP+9EdTmFUl5/SAbixPCEeHYHv0gznwfX7LROFhioxNMoAIph9j1b1FbhhHFoE4bYipMUaKMrWpO9HHm5C0KxazFC/OZjGWIXjXNlB87V2EZGpVKs1kp9gY3uHql0mhgc8YuclzRtkulx0ALbrw5USpNFOH1bcF3KvXGnqb9J97raItQnmzsaVh/kLclu1AaL4HhHfOCZRxanMA9Ojd/Bh8ivmb5fRw9PzGKqWIVMbWHtUhd9ocZnQPvIm6+HJyDC/icNfeML5/qferAALwUtBFJn4DR/7KW6k8/n3rzj5kts+/+HZ59DXF0EU8/FsUTL4wlJvNoKeqmQixg+B3UbhvratbwMezc993gAhxf/YlqZPfuy6X1XAExe3FaltqSfPzaA2HEcTDYOFkjCC4+D7yRRTi//cprr13ZDnOSLEujv/0A6fiVT8IcokIQ41f9lPsbsKoZAku2O9ujXoRCtgBNeOb8+azxsZHVjFzOGMkZly9T+UMje+K8LAXvMzQwKksfS/J/Hg7eO7wjnculL+fSbSOnpXOOLGk541/eOPwEG4aneJdt8qsbOc4aSaDFZZBj/SG3MMf1omwGo3C1gewzzAZfZDQ4d2H1/PmLzrVdQf3dZ4Kr13b9D2jnVmHtq8E/OTfO5+f8bQ424Xe3BTdunO/kNet3ESyDwow51DMGIhnArLm330/0jcWVsf5aK7v6XH+rtvm24t5Cb2+h5VZzL1zMuW5L23p5cQvHNsmeMIJwLGupYULTalg2S9DnueYYx1J3luJ2jNhv5YE5dAfoJsvuAEZYyzeW3OEDOVTrEs8LXNpzsuPlTKY8nu0ZS5VigqicRWeq0GJ2Z9Vdaj4lCMw8hanQYP+VwYRKEXFRiQeuJ4vTmjg7rZcpzpHOKqIQK/T25Ru1s2wSzjiKFZ7lEvqcRTyLw/R4s8/xyt3eB1WH3+KSYDF0HYqk66w8KSlYF26FhoMF1sDiZFgq0jcUyE6wxkQUFrriAlt/5rZsqBMNN5yeu8VdW92JwSL6rQ5TenpYiUctYLxgTSwubaQEuwcEYYVRB8LhWAo/H+j0hYnNedIiuYS5AEHtDbnD4gA7fqMY5X3Beyyrw3gYZnthnqduyrU1dseyJcrcls+th8rNOVzEtC152yEC8EN4MowQ0b1ZpNWYMJmdfkf32ZVZJ72K+uaW8fBD1yn1vNPnD7j9q7wu8NwLRjZbNd7WM7qpPSvJVKGnQvppvd+0tG/27nLc3rf73QG/7wWOF3T+BaOWzRrvaCbO+KYkx2LS6ZB+SjfNfv3ZHuSDg/j7w9BX5sIdR/DPDuFgCBXZlZabKqfgw6//6OsP7qd33P34S4/ffQfd/+A156V7n3763jufSDnaozsOPf74oR2Pav36Ez8OrsEo4/ELqLtPIo7TSPv2eOlnVJ6q0EVF0BmCUob1GCPGgF0lOhxMSEJbkMLizpicjiuKyjpiIaMlbC2lyGle5PlBNKyBfZmBYubU+mjpWdXWNCpKpiTEZDFuVtEPxuM6lWyBy/NU2K5nq5v1XEMt33U77vCbzGdRKRSb32IbY/KKbrwiZMIOIHYrTpduL/YNWnMFQSoi+zk1FksmDCWhZ8N38VhMVmPSyVvqvz5L+L5Vy3iS2At8SpKSshyXaH9KZm9FTRTEZCKt3dI+oePL38JoqpE7yDcYirOYRJtWJ5hjak1tibpS50rRpSjeWoRLWr6Lcm9FFwuW7Vs2tdjlAvUxVfDGORy2wGa4tXG+VC6VNY5BYvwexeyhD0wcmweKE20rz89AY4FjN0gtn90i+B/Mj4zMj0yhNtayMHxAlGtpe7ee7tH6tJ60vttO12TxAMf9phdn9s7o6CAp7RfEHaqqaWKaAcu0qGmqukMQKxTd7969bEjl1giJxwF6Ut0hCv0UR0BihG1jX5ZtQwk/b7jr67qGvZT67A1ZKDshLei4ptrqLKrNzmpdy+oWT3krXBQHxKgo6DMzuiDSGA7wNDWp38IE/79cI0znGCz6P+caX6o7LI347FRjrf6LX9StI0dwP7ENTBDhsujuM8fyjjnALNxseH7DLDPoBF7Utzv1taur565hgaiAta6u/or1Vp1rziqjsXZUMptL4Do/+9R1yoiwGWpFPGiGeJDiUzWLHmzU0Xr8lnoVHg5WYTm45mDjKoziE9XOuePt450H1s4harx2Dpvt4Mb581iB3ul1E6M9dt9PRLcT/Ygqq2QQs6TQU2y+q2Bo0g65E91XlNl/Daz3sbaY20ArLDHcbTP/Gom51X2x0XZOzDnhr71RifVyTMsLXG/lbiHdm0oleW3zxYeDXO7MOJHPs8Zb5V5NzQnluktpIp3uSXP/CyLCXdEAeNqNkc1qwkAUhc/4By1S2lVdztKCiZOAm2wFxV1X7lOdaCQkmkwQX0P6GKX7PkuhT9AH6LIncSh20WKGmfudMzd37jAAbvAKgdM3w7NlgS6+LDfQFneWm+iL2HILXfFiuY1b8W65g26jw0zRuqI61n9VLNDDh+UGrkXbchOP4t5yCz1xtNyGFG+WO/Q/MUYOjRCG6xISTzhwnaFEgph+SjVlTLCgLrkO6iGxpzZYkybImGfqmGPFShI+XCjGPjMMxxYBhhyRzY1+cl0UVC5dTf8BGOc6NHopnw5yViZxmMppmCzicjEYDOQ+Nms5yVIzyfKVlr6rZH9tzDYYDiO6UeW6ReSm2rDUBjv2rHnSAQ5PiXmPSmGzK3V+cKI40VRnG9b570oB51+FT7s+8xx4nBV5GLHgr5YDed4Apa8cz/GVN7q453ltFtzO6kdS9UluHasuMdd5EWepVMpzlVLy0srfppZ9qgAAeNpdzkdSw1AUBVG1CCbnZJLJOUj/fWwzxID2woQZ+2NnQIlmgianStKrvkVZtM/XZ9H9geL/E+3bkpIxxplgkg5TTDPDLHPMs8AiSyyzwiprrLPBJlt02WaHXfbYp8cBhxxxzAmnnHHOBZdccc0Nt9xxT0Xd+Xh/a1LT14EOdaRNa1SVhg50pM/68mtda9K+elcP9e//V7WX/J4e9UntJXvJ++R98j7cG+4Id4T7I+uDui/cF/bDftgP+2E/7If9sJ/tZ/vZfraf8zcFz3IYAAAAAAH//wACeNpjYGBgZACCM7aLzoPoC09YnsNoAFB9B7oAAA==), + url("./jquery-filer.woff") format("woff"), + url("./jquery-filer.ttf") format("truetype"), + url("./jquery-filer.svg#jquery-filer") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.svg#jquery-filer") format("svg"); + } +} + + [data-icon]:before { content: attr(data-icon); } + + [data-icon]:before, + .icon-jfi-ban:before, +.icon-jfi-calendar:before, +.icon-jfi-check:before, +.icon-jfi-check-circle:before, +.icon-jfi-cloud-o:before, +.icon-jfi-cloud-up-o:before, +.icon-jfi-comment:before, +.icon-jfi-comment-o:before, +.icon-jfi-download-o:before, +.icon-jfi-exclamation:before, +.icon-jfi-exclamation-circle:before, +.icon-jfi-exclamation-triangle:before, +.icon-jfi-external-link:before, +.icon-jfi-eye:before, +.icon-jfi-file:before, +.icon-jfi-file-audio:before, +.icon-jfi-file-image:before, +.icon-jfi-file-o:before, +.icon-jfi-file-text:before, +.icon-jfi-file-video:before, +.icon-jfi-files-o:before, +.icon-jfi-folder:before, +.icon-jfi-heart:before, +.icon-jfi-heart-o:before, +.icon-jfi-history:before, +.icon-jfi-infinite:before, +.icon-jfi-info:before, +.icon-jfi-info-circle:before, +.icon-jfi-minus:before, +.icon-jfi-minus-circle:before, +.icon-jfi-paperclip:before, +.icon-jfi-pencil:before, +.icon-jfi-plus:before, +.icon-jfi-plus-circle:before, +.icon-jfi-power-off:before, +.icon-jfi-question:before, +.icon-jfi-question-circle:before, +.icon-jfi-reload:before, +.icon-jfi-settings:before, +.icon-jfi-sort:before, +.icon-jfi-times:before, +.icon-jfi-times-circle:before, +.icon-jfi-trash:before, +.icon-jfi-upload-o:before, +.icon-jfi-user:before, +.icon-jfi-view-grid:before, +.icon-jfi-view-list:before, +.icon-jfi-zip:before { + display: inline-block; + font-family: "jquery-filer"; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + } + + .icon-jfi-ban:before { content: "\f328"; } +.icon-jfi-calendar:before { content: "\f30b"; } +.icon-jfi-check:before { content: "\f2f6"; } +.icon-jfi-check-circle:before { content: "\f30c"; } +.icon-jfi-cloud-o:before { content: "\f329"; } +.icon-jfi-cloud-up-o:before { content: "\f32a"; } +.icon-jfi-comment:before { content: "\f32b"; } +.icon-jfi-comment-o:before { content: "\f30d"; } +.icon-jfi-download-o:before { content: "\f32c"; } +.icon-jfi-exclamation:before { content: "\f32d"; } +.icon-jfi-exclamation-circle:before { content: "\f32e"; } +.icon-jfi-exclamation-triangle:before { content: "\f32f"; } +.icon-jfi-external-link:before { content: "\f330"; } +.icon-jfi-eye:before { content: "\f2f7"; } +.icon-jfi-file:before { content: "\f31f"; } +.icon-jfi-file-audio:before { content: "\f331"; } +.icon-jfi-file-image:before { content: "\f332"; } +.icon-jfi-file-o:before { content: "\f31d"; } +.icon-jfi-file-text:before { content: "\f333"; } +.icon-jfi-file-video:before { content: "\f334"; } +.icon-jfi-files-o:before { content: "\f335"; } +.icon-jfi-folder:before { content: "\f31e"; } +.icon-jfi-heart:before { content: "\f2f8"; } +.icon-jfi-heart-o:before { content: "\f336"; } +.icon-jfi-history:before { content: "\f337"; } +.icon-jfi-infinite:before { content: "\f2fb"; } +.icon-jfi-info:before { content: "\f338"; } +.icon-jfi-info-circle:before { content: "\f339"; } +.icon-jfi-minus:before { content: "\f33a"; } +.icon-jfi-minus-circle:before { content: "\f33b"; } +.icon-jfi-paperclip:before { content: "\f33c"; } +.icon-jfi-pencil:before { content: "\f2ff"; } +.icon-jfi-plus:before { content: "\f311"; } +.icon-jfi-plus-circle:before { content: "\f312"; } +.icon-jfi-power-off:before { content: "\f33d"; } +.icon-jfi-question:before { content: "\f33e"; } +.icon-jfi-question-circle:before { content: "\f33f"; } +.icon-jfi-reload:before { content: "\f300"; } +.icon-jfi-settings:before { content: "\f340"; } +.icon-jfi-sort:before { content: "\f303"; } +.icon-jfi-times:before { content: "\f316"; } +.icon-jfi-times-circle:before { content: "\f317"; } +.icon-jfi-trash:before { content: "\f318"; } +.icon-jfi-upload-o:before { content: "\f341"; } +.icon-jfi-user:before { content: "\f307"; } +.icon-jfi-view-grid:before { content: "\f342"; } +.icon-jfi-view-list:before { content: "\f343"; } +.icon-jfi-zip:before { content: "\f344"; } + </style> + + <!--[if lte IE 8]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> + + <script> + function toggleCharacters() { + var body = document.getElementsByTagName('body')[0]; + body.className = body.className === 'characters-off' ? '' : 'characters-off'; + } + </script> + </head> + + <body class="characters-off"> + <div id="page" class="container"> + <header> + <h1>jquery-filer contains 48 glyphs:</h1> + <a onclick="toggleCharacters(); return false;" href="#">Toggle Preview Characters</a> + </header> + + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-ban" class="icon-jfi-ban"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-ban" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf328;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-calendar" class="icon-jfi-calendar"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-calendar" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf30b;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-check" class="icon-jfi-check"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-check" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf2f6;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-check-circle" class="icon-jfi-check-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-check-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf30c;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-cloud-o" class="icon-jfi-cloud-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-cloud-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf329;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-cloud-up-o" class="icon-jfi-cloud-up-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-cloud-up-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32a;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-comment" class="icon-jfi-comment"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-comment" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32b;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-comment-o" class="icon-jfi-comment-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-comment-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf30d;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-download-o" class="icon-jfi-download-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-download-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32c;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-exclamation" class="icon-jfi-exclamation"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-exclamation" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32d;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-exclamation-circle" class="icon-jfi-exclamation-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-exclamation-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32e;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-exclamation-triangle" class="icon-jfi-exclamation-triangle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-exclamation-triangle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf32f;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-external-link" class="icon-jfi-external-link"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-external-link" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf330;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-eye" class="icon-jfi-eye"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-eye" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf2f7;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file" class="icon-jfi-file"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf31f;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file-audio" class="icon-jfi-file-audio"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file-audio" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf331;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file-image" class="icon-jfi-file-image"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file-image" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf332;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file-o" class="icon-jfi-file-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf31d;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file-text" class="icon-jfi-file-text"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file-text" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf333;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-file-video" class="icon-jfi-file-video"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-file-video" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf334;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-files-o" class="icon-jfi-files-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-files-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf335;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-folder" class="icon-jfi-folder"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-folder" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf31e;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-heart" class="icon-jfi-heart"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-heart" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf2f8;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-heart-o" class="icon-jfi-heart-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-heart-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf336;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-history" class="icon-jfi-history"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-history" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf337;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-infinite" class="icon-jfi-infinite"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-infinite" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf2fb;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-info" class="icon-jfi-info"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-info" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf338;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-info-circle" class="icon-jfi-info-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-info-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf339;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-minus" class="icon-jfi-minus"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-minus" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33a;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-minus-circle" class="icon-jfi-minus-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-minus-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33b;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-paperclip" class="icon-jfi-paperclip"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-paperclip" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33c;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-pencil" class="icon-jfi-pencil"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-pencil" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf2ff;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-plus" class="icon-jfi-plus"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-plus" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf311;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-plus-circle" class="icon-jfi-plus-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-plus-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf312;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-power-off" class="icon-jfi-power-off"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-power-off" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33d;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-question" class="icon-jfi-question"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-question" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33e;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-question-circle" class="icon-jfi-question-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-question-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf33f;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-reload" class="icon-jfi-reload"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-reload" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf300;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-settings" class="icon-jfi-settings"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-settings" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf340;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-sort" class="icon-jfi-sort"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-sort" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf303;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-times" class="icon-jfi-times"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-times" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf316;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-times-circle" class="icon-jfi-times-circle"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-times-circle" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf317;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-trash" class="icon-jfi-trash"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-trash" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf318;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-upload-o" class="icon-jfi-upload-o"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-upload-o" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf341;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-user" class="icon-jfi-user"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-user" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf307;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-view-grid" class="icon-jfi-view-grid"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-view-grid" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf342;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-view-list" class="icon-jfi-view-list"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-view-list" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf343;" /> + </div> + </div> + + <div class="glyph"> + <div class="preview-glyphs"> + <span class="step size-12"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-14"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-16"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-18"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-21"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-24"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-36"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-48"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-60"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span><span class="step size-72"><span class="letters">Pp</span><i id="icon-jfi-zip" class="icon-jfi-zip"></i></span> + </div> + <div class="preview-scale"> + <span class="step">12</span><span class="step">14</span><span class="step">16</span><span class="step">18</span><span class="step">21</span><span class="step">24</span><span class="step">36</span><span class="step">48</span><span class="step">60</span><span class="step">72</span> + </div> + <div class="usage"> + <input class="class" type="text" readonly="readonly" onClick="this.select();" value=".icon-jfi-zip" /> + <input class="point" type="text" readonly="readonly" onClick="this.select();" value="&amp;#xf344;" /> + </div> + </div> + + + <footer> + Made with love using <a href="http://fontcustom.com">Font Custom</a>. + </footer> + </div> + </body> +</html> diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.css b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.css new file mode 100644 index 0000000..e64e034 --- /dev/null +++ b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.css @@ -0,0 +1,135 @@ +/* + Icon Font: jquery-filer +*/ + +@font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.eot"); + src: url("./jquery-filer.eot?#iefix") format("embedded-opentype"), + url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABY8AA0AAAAAJGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAWIAAAABoAAAAcbgWsnk9TLzIAAAGgAAAASgAAAGBDMGCrY21hcAAAAjgAAAB2AAABir/jw6BjdnQgAAACsAAAAAQAAAAEABEBRGdhc3AAABYYAAAACAAAAAj//wADZ2x5ZgAAAxwAABDDAAAbVDwbM1RoZWFkAAABMAAAADAAAAA2AudKS2hoZWEAAAFgAAAAIAAAACQD8QHEaG10eAAAAewAAABLAAAAbgpuBLZsb2NhAAACtAAAAGgAAABonHCkGm1heHAAAAGAAAAAIAAAACAAgQDCbmFtZQAAE+AAAAFmAAACwZhqioJwb3N0AAAVSAAAAM8AAAIIqeejRXjaY2BkYGAA4ogbscvj+W2+MnAzMYDAhScsz2H0////9zMxMh4EcjkYwNIAbNUNrHjaY2BkYGA8+H8/gx4Tw///DAxMjAxAERTAAgB/egS4AAEAAAAzAJEADAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYWJg/MLAysDA6MOYxsDA4A6lvzJIMrQwMDAxsHEywIEAgskQkOaawnDg07fPLowH/h9g0GM8yOAIFGZEUqLAwAgAW4ENdAAAeNpjYmAQZAACJgi2Y1BgcAAyVYC4ASQO5IFEHBiyweI2QNIGzFIAQgaGE0C2CpClzCAHhBD1DgwLwKQDQyBQbAZYNQTYAAC2kQkrAHja3YxNCoNADIXfOGUUnEDtQlwobnuQHqYH6Xm7yAMRReLUigvpCfpBEt4PAeDxnRYOH15JuU1f8Ey3xjU5QUedCXrmFN7YsOfDDNBBZ7XNL1mxZse7mYiUUkgQL4hLnOIQ3/v/H7iAI3RZWtm5gL9nBYpEIu8AAAARAUQAAAAqACoAKgBSAJ4AvgEGAUQBfAGqAkACeAKyAwwDPAN+A7gEDASUBLIE8gUgBVgFmgX8BjYGhga2BvoHSAeeB/AIHAhiCLII5AkcCYIJwgoSCi4KWgqyCuALNguYDGwMvAzwDUINqnjanVl7jNzGeZ+Pr1lyd0nuckne7d5x38t7P3aXy3vsPSRLOkknyVIiy3q4tlzbkuw6tRoHidTW8cVwYBVF28SxdQ5gNIpTCwWaJrJRGW5go+fHH0VRIEbkPwo0CGQjRV0kQa0U7R+tQfUbcu+0d3KMonviPD7OcGa+5+8bEY6kCCHfhrsITygZewXIePtVKpBf1V+RxJ+2X+U5bJJXeEYWGflVKsEn7VeB0RupRsptpMqpC185dQruCv4qBQ38GpB5Uoa3YT+xsJfROKk0ztWaC9Cq58FnBbxNr5ZohpZOUMrqvX/BOtCXkV4rSRJSsUfp3pexjV/gSYEU4Dos4l6LZJKQas21zIxUqnlNX6IO1Fu1Zq1cksyMVW95zVajbmWoCqWaW2v681C3bFirTWvb79muTdeKD33poW9RMT9KFepY4j+L5S8//eWyGFVXZvuzztj27WNOtn+2MTf3pwodzYuUipazT5dndu6alnV5etfOGRKec5EYsAZfYDzEVUw86jjUwg3YLbhrZKH4XDy+6iyMeIUCfGFhdLRwMR7/dn54dGFoKJxPyBGOwG5SZ3ySyqVxaJZddpKM1aj7pm/TMlJr4Qe9PCCxxQ6qgesjiSNLk9MVgC/kBqueVx3J9do9UJmZXFqa9CrcY7lhRh3I9dt9FX8S4MFdwwDPON5erwR5Iz+y68GlAeD+qIiE/opRGSQiqdz8OXwALxGFqCSN0svjJpGVQH2UnQ227/qdx27hSXEjNryfTAb//udNSCXcRPA3xuxMevHlBXPBWngkHh8SkoK1CI8kazjG+w6kcOyLRmamZ+HlRXPRWjTZEMFaIIQj5OZPkBc/wHWrhPhlr2HOAwrSpmOADKENu2GWPRXbNdd38E3LL1+96thPHLhzxew3Htu55/f0Jy9uJfz46h/uuefk/tgdh+/Z1e5q43orRIcVOEuSJEdIJaMBaikgq2dRnTLSMGpPR2NhRTwrJvBRpOuSEhYR4SIjsqZyJKEoUYfpBXfz5s01DmCNjJNThIhm0ZsH30NtdGstvzYHbZjn/AkfC5SrRSV8sMQ/0wGxOAbj4PmtBWhM4LSWR/2WW8O6Ngwq4CAV+iGTB9eyrTxn5cFECkcCAmePmKoqU14BUTFVXlSy6dhRU6Ax3EsqHtPV9OHHgiKsyQ/uVqWUysc5AXiV5wBbyTtoKiEoKZ1yvA68KMqcakjJPacmNW3+XrVmDNKM3k8VOa5qvWqCE5REHGbjaTMjJ7WSHaumh5L3jY3vkrnPiYlBhadCTIIeTezro+BCTDaAS+cTSd0SJCnOcbHhpHAI5F2ocwR5RVDn4kQjBrFJGXWukSqmGqgB+FAsivhAqtgLRa+MShA+cPl4QI6fuHhiLh98nIfloA3vtrHbhqdZ08FfG3/BcUgG/wHDvzWHPyYbtFmCNrsSrVRtRmrssgL9R2hjCzAPGXQfY9BkzgO+JlpiUjw1hYUlisdFiYrPiAvNo2eONbA4+lFMQPJDUyK+pVQ4LuLbNL5rHDtztNkM1yzcvI7+6yRa1Cz2Syqgp8ozWaKUbVxxHpo1K8OU22VqwHS82aot8POiPwZetIvGqWPNSgH1JF5z4lpKaxxrNg+3T8+l0/VtSR0ECQA44DgugYoa49zR9unfPw2L5dlSXyOd7LFMPadwXHl2x+zk0T3D3IgucKIIApvBcaqoJtKKta02smd4eN23FeAS8olxyWQGYUZWMcdMcA6YoXihtVj9zE7hkqqcUZUJRT2jqF3Nj26jsGaXHMpoJaTqNVG9w6Ik9TODRx23ZhmfmD3OAeNRt0zOKtKiIhUkZZGZ5Ebz4IZUrtz2jjX3dssFyO+QHDwPO9kZ1z0AjdzAAqpEd8SyMszXPSeVYhlp714pE8M4hfWW/n0Ytz6Nvt7v1r9h4kf6h6bNtDB062EZ6iG9pY32p+jkfeLoaKhwEmugRqIK3ka5f4MbFz5rWIfyeDdvKLNLlP8a2uUo7nQb2U+OkYcIKUTCZ1LPGGEplVORZnip2xTDRcuNhGqgSUfCNMIgVgyDXLrra1ZXG1xVllX5YNIwktXc9VyVNU7iv6SxclKmi1ReC64byetJQ6eyTIM1Vt4dzlkKS5mGpDUKXzGShaQR4DeqOSiEnQL7WkHX2dzgYSgE+B0D9svhzGBtY+6tAjFIG/nxLvJDQN4kUYY2Hsg2G1BMMW9U/m5w7sYDwT/AvtWrsHYpuMSR5gPBVRhdjWReQJmfJDoZCJGCBiqHHKih2FuNql1s+UyqszDDOZztAOMd/CBBIQGcEgveScQgCTQBR7ngLzmBU3hlWZZiPC9xiUTqz2IUSEz5kRRDFX9dUSaL5hClPM9RPiFKzJalLXtPEZP0bj2Bje6W4uPis+k0r88MnT00svlMTz76qDA2lm80kC+RPj9FZIzcJabRLmUejaM+KjPzdJWMypXGuOY8V3cALlhvlAb66hXrv98sDVYXKrDbaS4dWGo6UfXWQPENy6o0xt+wKwvVwYMHdjedfGN3NCD0pYRMYby4G1cbCnmJ+ldkSLBlM7xgt+wNjMSAVKdCVYMVb3nZCz4cnG4P6rtHZoZ6swMzMwM9djxWalRn40KSCn0DA30wtfzwvpmBoRlusD4U/2D60HRCkt2RSpKDgSmXRP4cV74OXyMxsoRYBQERdTEm+QwCoiV4TMtR7ctu02t2bULj1MihmeVww3644RDl4Ly34nuXE76+WhqfKD10v5Bza33a7FDfZFJS5bjey4Ns9Y04J07UmqUcX7LUhDpdmtgJb8SXl+OtX//aapRKk7rb1zcENDk4U8gmJdHWZT7m9uRHdK/qjMuWIzmVHRPAhb5vPSZVme/bCD3SlsjDMdd+fSPMCHRrlKm0Pzc2d/qX6yEFpNtjSqE93Dscye7mRyi7b5Ex5vtIyKvGp4trg0kdqTbqPOOyj2rKkWXv85/vkl1bWZfdY491Sde7XDePHDFR6YYeWXamD80kJXlglMnRnRpwpgcHmYQH48FfR8P+Dff392inU+ibNYZ8qxsBL/JmBu24OTfqwwRGlDCsSEosFlWKdJDKZ6YYlRXArbEmK8I8Zt33xxFzjhKSxr11nHrL2Ah+kZf0/KbLCBgH7Ijyj8w1hw79+4IwgRCNnxAEgeP5KTR2QRTGBAFWwgHMiwefREOwOPZiKA/uRU4QSLiPCu7jp3AJz1kkjfXo+1lru4aFKJMZGkJRI4xAhejjrBDQKU3hE22CX5NlUYsFKzFNlOU1QUtruzf2cv8XEXPyIHyR5/lfBpc0PYY/XYOTMVlety2W610iLlm4XQYs3HTvdJ3us3Rwc/COZLQy5LznDA05V5BVwhW9p0d/T+8RBF0QTiJiH/keL/F9PP+9EdTmFUl5/SAbixPCEeHYHv0gznwfX7LROFhioxNMoAIph9j1b1FbhhHFoE4bYipMUaKMrWpO9HHm5C0KxazFC/OZjGWIXjXNlB87V2EZGpVKs1kp9gY3uHql0mhgc8YuclzRtkulx0ALbrw5USpNFOH1bcF3KvXGnqb9J97raItQnmzsaVh/kLclu1AaL4HhHfOCZRxanMA9Ojd/Bh8ivmb5fRw9PzGKqWIVMbWHtUhd9ocZnQPvIm6+HJyDC/icNfeML5/qferAALwUtBFJn4DR/7KW6k8/n3rzj5kts+/+HZ59DXF0EU8/FsUTL4wlJvNoKeqmQixg+B3UbhvratbwMezc993gAhxf/YlqZPfuy6X1XAExe3FaltqSfPzaA2HEcTDYOFkjCC4+D7yRRTi//cprr13ZDnOSLEujv/0A6fiVT8IcokIQ41f9lPsbsKoZAku2O9ujXoRCtgBNeOb8+azxsZHVjFzOGMkZly9T+UMje+K8LAXvMzQwKksfS/J/Hg7eO7wjnculL+fSbSOnpXOOLGk541/eOPwEG4aneJdt8qsbOc4aSaDFZZBj/SG3MMf1omwGo3C1gewzzAZfZDQ4d2H1/PmLzrVdQf3dZ4Kr13b9D2jnVmHtq8E/OTfO5+f8bQ424Xe3BTdunO/kNet3ESyDwow51DMGIhnArLm330/0jcWVsf5aK7v6XH+rtvm24t5Cb2+h5VZzL1zMuW5L23p5cQvHNsmeMIJwLGupYULTalg2S9DnueYYx1J3luJ2jNhv5YE5dAfoJsvuAEZYyzeW3OEDOVTrEs8LXNpzsuPlTKY8nu0ZS5VigqicRWeq0GJ2Z9Vdaj4lCMw8hanQYP+VwYRKEXFRiQeuJ4vTmjg7rZcpzpHOKqIQK/T25Ru1s2wSzjiKFZ7lEvqcRTyLw/R4s8/xyt3eB1WH3+KSYDF0HYqk66w8KSlYF26FhoMF1sDiZFgq0jcUyE6wxkQUFrriAlt/5rZsqBMNN5yeu8VdW92JwSL6rQ5TenpYiUctYLxgTSwubaQEuwcEYYVRB8LhWAo/H+j0hYnNedIiuYS5AEHtDbnD4gA7fqMY5X3Beyyrw3gYZnthnqduyrU1dseyJcrcls+th8rNOVzEtC152yEC8EN4MowQ0b1ZpNWYMJmdfkf32ZVZJ72K+uaW8fBD1yn1vNPnD7j9q7wu8NwLRjZbNd7WM7qpPSvJVKGnQvppvd+0tG/27nLc3rf73QG/7wWOF3T+BaOWzRrvaCbO+KYkx2LS6ZB+SjfNfv3ZHuSDg/j7w9BX5sIdR/DPDuFgCBXZlZabKqfgw6//6OsP7qd33P34S4/ffQfd/+A156V7n3763jufSDnaozsOPf74oR2Pav36Ez8OrsEo4/ELqLtPIo7TSPv2eOlnVJ6q0EVF0BmCUob1GCPGgF0lOhxMSEJbkMLizpicjiuKyjpiIaMlbC2lyGle5PlBNKyBfZmBYubU+mjpWdXWNCpKpiTEZDFuVtEPxuM6lWyBy/NU2K5nq5v1XEMt33U77vCbzGdRKRSb32IbY/KKbrwiZMIOIHYrTpduL/YNWnMFQSoi+zk1FksmDCWhZ8N38VhMVmPSyVvqvz5L+L5Vy3iS2At8SpKSshyXaH9KZm9FTRTEZCKt3dI+oePL38JoqpE7yDcYirOYRJtWJ5hjak1tibpS50rRpSjeWoRLWr6Lcm9FFwuW7Vs2tdjlAvUxVfDGORy2wGa4tXG+VC6VNY5BYvwexeyhD0wcmweKE20rz89AY4FjN0gtn90i+B/Mj4zMj0yhNtayMHxAlGtpe7ee7tH6tJ60vttO12TxAMf9phdn9s7o6CAp7RfEHaqqaWKaAcu0qGmqukMQKxTd7969bEjl1giJxwF6Ut0hCv0UR0BihG1jX5ZtQwk/b7jr67qGvZT67A1ZKDshLei4ptrqLKrNzmpdy+oWT3krXBQHxKgo6DMzuiDSGA7wNDWp38IE/79cI0znGCz6P+caX6o7LI347FRjrf6LX9StI0dwP7ENTBDhsujuM8fyjjnALNxseH7DLDPoBF7Utzv1taur565hgaiAta6u/or1Vp1rziqjsXZUMptL4Do/+9R1yoiwGWpFPGiGeJDiUzWLHmzU0Xr8lnoVHg5WYTm45mDjKoziE9XOuePt450H1s4harx2Dpvt4Mb581iB3ul1E6M9dt9PRLcT/Ygqq2QQs6TQU2y+q2Bo0g65E91XlNl/Daz3sbaY20ArLDHcbTP/Gom51X2x0XZOzDnhr71RifVyTMsLXG/lbiHdm0oleW3zxYeDXO7MOJHPs8Zb5V5NzQnluktpIp3uSXP/CyLCXdEAeNqNkc1qwkAUhc/4By1S2lVdztKCiZOAm2wFxV1X7lOdaCQkmkwQX0P6GKX7PkuhT9AH6LIncSh20WKGmfudMzd37jAAbvAKgdM3w7NlgS6+LDfQFneWm+iL2HILXfFiuY1b8W65g26jw0zRuqI61n9VLNDDh+UGrkXbchOP4t5yCz1xtNyGFG+WO/Q/MUYOjRCG6xISTzhwnaFEgph+SjVlTLCgLrkO6iGxpzZYkybImGfqmGPFShI+XCjGPjMMxxYBhhyRzY1+cl0UVC5dTf8BGOc6NHopnw5yViZxmMppmCzicjEYDOQ+Nms5yVIzyfKVlr6rZH9tzDYYDiO6UeW6ReSm2rDUBjv2rHnSAQ5PiXmPSmGzK3V+cKI40VRnG9b570oB51+FT7s+8xx4nBV5GLHgr5YDed4Apa8cz/GVN7q453ltFtzO6kdS9UluHasuMdd5EWepVMpzlVLy0srfppZ9qgAAeNpdzkdSw1AUBVG1CCbnZJLJOUj/fWwzxID2woQZ+2NnQIlmgianStKrvkVZtM/XZ9H9geL/E+3bkpIxxplgkg5TTDPDLHPMs8AiSyyzwiprrLPBJlt02WaHXfbYp8cBhxxxzAmnnHHOBZdccc0Nt9xxT0Xd+Xh/a1LT14EOdaRNa1SVhg50pM/68mtda9K+elcP9e//V7WX/J4e9UntJXvJ++R98j7cG+4Id4T7I+uDui/cF/bDftgP+2E/7If9sJ/tZ/vZfraf8zcFz3IYAAAAAAH//wACeNpjYGBgZACCM7aLzoPoC09YnsNoAFB9B7oAAA==), + url("./jquery-filer.woff") format("woff"), + url("./jquery-filer.ttf") format("truetype"), + url("./jquery-filer.svg#jquery-filer") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "jquery-filer"; + src: url("./jquery-filer.svg#jquery-filer") format("svg"); + } +} + +[data-icon]:before { content: attr(data-icon); } + +[data-icon]:before, +.icon-jfi-ban:before, +.icon-jfi-calendar:before, +.icon-jfi-check:before, +.icon-jfi-check-circle:before, +.icon-jfi-cloud-o:before, +.icon-jfi-cloud-up-o:before, +.icon-jfi-comment:before, +.icon-jfi-comment-o:before, +.icon-jfi-download-o:before, +.icon-jfi-exclamation:before, +.icon-jfi-exclamation-circle:before, +.icon-jfi-exclamation-triangle:before, +.icon-jfi-external-link:before, +.icon-jfi-eye:before, +.icon-jfi-file:before, +.icon-jfi-file-audio:before, +.icon-jfi-file-image:before, +.icon-jfi-file-o:before, +.icon-jfi-file-text:before, +.icon-jfi-file-video:before, +.icon-jfi-files-o:before, +.icon-jfi-folder:before, +.icon-jfi-heart:before, +.icon-jfi-heart-o:before, +.icon-jfi-history:before, +.icon-jfi-infinite:before, +.icon-jfi-info:before, +.icon-jfi-info-circle:before, +.icon-jfi-minus:before, +.icon-jfi-minus-circle:before, +.icon-jfi-paperclip:before, +.icon-jfi-pencil:before, +.icon-jfi-plus:before, +.icon-jfi-plus-circle:before, +.icon-jfi-power-off:before, +.icon-jfi-question:before, +.icon-jfi-question-circle:before, +.icon-jfi-reload:before, +.icon-jfi-settings:before, +.icon-jfi-sort:before, +.icon-jfi-times:before, +.icon-jfi-times-circle:before, +.icon-jfi-trash:before, +.icon-jfi-upload-o:before, +.icon-jfi-user:before, +.icon-jfi-view-grid:before, +.icon-jfi-view-list:before, +.icon-jfi-zip:before { + display: inline-block; + font-family: "jquery-filer"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-decoration: inherit; + text-rendering: optimizeLegibility; + text-transform: none; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; +} + +.icon-jfi-ban:before { content: "\f328"; } +.icon-jfi-calendar:before { content: "\f30b"; } +.icon-jfi-check:before { content: "\f2f6"; } +.icon-jfi-check-circle:before { content: "\f30c"; } +.icon-jfi-cloud-o:before { content: "\f329"; } +.icon-jfi-cloud-up-o:before { content: "\f32a"; } +.icon-jfi-comment:before { content: "\f32b"; } +.icon-jfi-comment-o:before { content: "\f30d"; } +.icon-jfi-download-o:before { content: "\f32c"; } +.icon-jfi-exclamation:before { content: "\f32d"; } +.icon-jfi-exclamation-circle:before { content: "\f32e"; } +.icon-jfi-exclamation-triangle:before { content: "\f32f"; } +.icon-jfi-external-link:before { content: "\f330"; } +.icon-jfi-eye:before { content: "\f2f7"; } +.icon-jfi-file:before { content: "\f31f"; } +.icon-jfi-file-audio:before { content: "\f331"; } +.icon-jfi-file-image:before { content: "\f332"; } +.icon-jfi-file-o:before { content: "\f31d"; } +.icon-jfi-file-text:before { content: "\f333"; } +.icon-jfi-file-video:before { content: "\f334"; } +.icon-jfi-files-o:before { content: "\f335"; } +.icon-jfi-folder:before { content: "\f31e"; } +.icon-jfi-heart:before { content: "\f2f8"; } +.icon-jfi-heart-o:before { content: "\f336"; } +.icon-jfi-history:before { content: "\f337"; } +.icon-jfi-infinite:before { content: "\f2fb"; } +.icon-jfi-info:before { content: "\f338"; } +.icon-jfi-info-circle:before { content: "\f339"; } +.icon-jfi-minus:before { content: "\f33a"; } +.icon-jfi-minus-circle:before { content: "\f33b"; } +.icon-jfi-paperclip:before { content: "\f33c"; } +.icon-jfi-pencil:before { content: "\f2ff"; } +.icon-jfi-plus:before { content: "\f311"; } +.icon-jfi-plus-circle:before { content: "\f312"; } +.icon-jfi-power-off:before { content: "\f33d"; } +.icon-jfi-question:before { content: "\f33e"; } +.icon-jfi-question-circle:before { content: "\f33f"; } +.icon-jfi-reload:before { content: "\f300"; } +.icon-jfi-settings:before { content: "\f340"; } +.icon-jfi-sort:before { content: "\f303"; } +.icon-jfi-times:before { content: "\f316"; } +.icon-jfi-times-circle:before { content: "\f317"; } +.icon-jfi-trash:before { content: "\f318"; } +.icon-jfi-upload-o:before { content: "\f341"; } +.icon-jfi-user:before { content: "\f307"; } +.icon-jfi-view-grid:before { content: "\f342"; } +.icon-jfi-view-list:before { content: "\f343"; } +.icon-jfi-zip:before { content: "\f344"; } diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.eot b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.eot new file mode 100644 index 0000000..74adf90 Binary files /dev/null and b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.eot differ diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.svg b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.svg new file mode 100644 index 0000000..e6e9377 --- /dev/null +++ b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.svg @@ -0,0 +1,283 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2015-1-20: Created. +--> +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +Created by FontForge 20120731 at Tue Jan 20 14:13:11 2015 + By Iulian Galciuc,,, +Created by Iulian Galciuc,,, with FontForge 2.0 (http://fontforge.sf.net) +</metadata> +<defs> +<font id="jquery-filer" horiz-adv-x="512" > + <font-face + font-family="jquery-filer" + font-weight="500" + font-stretch="normal" + units-per-em="512" + panose-1="2 0 6 9 0 0 0 0 0 0" + ascent="448" + descent="-64" + bbox="-0.361328 -64.8438 512.331 448.844" + underline-thickness="25.6" + underline-position="-51.2" + unicode-range="U+F2F6-F344" + /> + <missing-glyph /> + <glyph glyph-name="uniF32B" unicode="&#xf32b;" +d="M480 192c0 -29 -10 -55.7917 -30 -80.375c-20 -24.5833 -47.1667 -44 -81.5 -58.25s-71.8333 -21.375 -112.5 -21.375c-11.6667 0 -23.75 0.666668 -36.25 2c-33 -29.1667 -71.3333 -49.3333 -115 -60.5c-8.16666 -2.33333 -17.6667 -4.16667 -28.5 -5.5 +c-2.83334 -0.333454 -5.375 0.416546 -7.625 2.25c-2.25 1.83333 -3.70834 4.25 -4.375 7.25v0.25c-0.5 0.666666 -0.541668 1.66667 -0.125 3c0.416664 1.3333 0.583336 2.16663 0.5 2.5c-0.0833359 0.333303 0.291664 1.12497 1.125 2.375l1.5 2.25l1.75 2.125l2 2.25 +c1.16666 1.33333 3.75 4.20833 7.75 8.625s6.875 7.58333 8.625 9.5s4.33334 5.20833 7.75 9.875s6.125 8.91667 8.125 12.75c2 3.83333 4.25 8.75 6.75 14.75s4.66666 12.3333 6.5 19c-26.1667 14.8334 -46.7917 33.1667 -61.875 55 +c-15.0833 21.8333 -22.625 45.25 -22.625 70.25c0 21.6667 5.91667 42.375 17.75 62.125s27.75 36.7917 47.75 51.125c20.0001 14.3333 43.8334 25.7083 71.5 34.125c27.6667 8.41666 56.6667 12.625 87 12.625c40.6667 0 78.1667 -7.125 112.5 -21.375 +s61.5 -33.6667 81.5 -58.25c20 -24.5833 30 -51.375 30 -80.375z" /> + <glyph glyph-name="uniF30C" unicode="&#xf30c;" +d="M385 232.5c0 4.66667 -1.5 8.5 -4.5 11.5l-22.75 22.5c-3.16666 3.16666 -6.91666 4.75 -11.25 4.75s-8.08334 -1.58334 -11.25 -4.75l-102 -101.75l-56.5 56.5c-3.16667 3.16667 -6.91667 4.75 -11.25 4.75s-8.08333 -1.58333 -11.25 -4.75l-22.75 -22.5 +c-3 -3 -4.5 -6.83333 -4.5 -11.5c0 -4.5 1.5 -8.25 4.5 -11.25l90.5 -90.5c3.16667 -3.16666 6.91667 -4.75 11.25 -4.75c4.5 0 8.33333 1.58334 11.5 4.75l135.75 135.75c3 3 4.5 6.75 4.5 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375 +c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375 +c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF33F" unicode="&#xf33f;" +d="M288 72v48c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-48c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-48c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75 +zM352 240c0 14.6667 -4.625 28.25 -13.875 40.75s-20.7917 22.1667 -34.625 29s-28 10.25 -42.5 10.25c-40.5 0 -71.4167 -17.75 -92.75 -53.25c-2.5 -4 -1.83333 -7.5 2 -10.5l33 -25c1.16667 -1 2.75 -1.5 4.75 -1.5c2.66667 0 4.75 1 6.25 3 +c8.83333 11.3333 16 19 21.5 23c5.66713 4 12.8338 6 21.5 6c8 0 15.125 -2.16666 21.375 -6.5c6.25 -4.33333 9.375 -9.25 9.375 -14.75c0 -6.33356 -1.66666 -11.4169 -5 -15.25c-3.33334 -3.83333 -9 -7.58333 -17 -11.25 +c-10.5 -4.66667 -20.125 -11.875 -28.875 -21.625s-13.125 -20.2083 -13.125 -31.375v-9c0 -2.33333 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41667 2.25 5.75c0 3.16667 1.79166 7.29167 5.375 12.375 +s8.125 9.20833 13.625 12.375c5.33572 3 9.41907 5.375 12.25 7.125c2.83456 1.75 6.66791 4.66667 11.5 8.75c4.83591 4.08333 8.54425 8.08333 11.125 12c2.58859 3.91747 4.92194 8.95914 7 15.125c2.08334 6.16667 3.125 12.9167 3.125 20.25zM448 192 +c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875 +c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875 +c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF2F8" unicode="&#xf2f8;" +d="M340.8 365v0c59.1006 0 107.2 -48.2998 107.2 -107.7c0 -29.5996 -11.7998 -57.2002 -32.7998 -77.5l-148.3 -149.8l-10.9004 -11l-10.9004 11l-151.199 152.7c-19.3008 20.2002 -29.9004 46.7002 -29.9004 74.5996c0 59.4004 48.0996 107.7 107.2 107.7 +c33.7998 0 64.7998 -15.7998 84.7998 -41.7998c20 26 51 41.7998 84.7998 41.7998z" /> + <glyph glyph-name="uniF30D" unicode="&#xf30d;" +d="M256 320c-34 0 -65.7917 -5.79166 -95.375 -17.375c-29.5834 -11.5833 -53.0834 -27.2083 -70.5 -46.875c-17.4167 -19.6667 -26.125 -40.9167 -26.125 -63.75c0 -18.6667 5.95834 -36.4583 17.875 -53.375c11.9167 -16.9167 28.7083 -31.5417 50.375 -43.875 +l21.75 -12.5l-6.75 -24c-4 -15.1667 -9.83333 -29.5 -17.5 -43c25.3333 10.5 48.25 24.75 68.75 42.75l10.75 9.5l14.25 -1.5c11.5 -1.33334 22.3333 -2 32.5 -2c34 -3.8147e-06 65.7917 5.79166 95.375 17.375s53.0833 27.2083 70.5 46.875 +c17.4167 19.6667 26.125 40.9167 26.125 63.75s-8.70834 44.0833 -26.125 63.75c-17.4167 19.6667 -40.9167 35.2917 -70.5 46.875s-61.375 17.375 -95.375 17.375zM480 192c0 -29 -10 -55.7917 -30 -80.375c-20 -24.5833 -47.1667 -44 -81.5 -58.25 +s-71.8333 -21.375 -112.5 -21.375c-11.6667 0 -23.75 0.666668 -36.25 2c-33 -29.1667 -71.3333 -49.3333 -115 -60.5c-8.16666 -2.33333 -17.6667 -4.16667 -28.5 -5.5h-1.25c-2.5 0 -4.75 0.875 -6.75 2.625s-3.33334 4.04167 -4 6.875v0.25 +c-0.5 0.666666 -0.541668 1.66667 -0.125 3c0.416664 1.3333 0.583336 2.16663 0.5 2.5c-0.0833359 0.333303 0.291664 1.12497 1.125 2.375l1.5 2.25l1.75 2.125l2 2.25c1.16666 1.33333 3.75 4.20833 7.75 8.625s6.875 7.58333 8.625 9.5s4.33334 5.20833 7.75 9.875 +s6.125 8.91667 8.125 12.75c2 3.83333 4.25 8.75 6.75 14.75s4.66666 12.3333 6.5 19c-26.1667 14.8334 -46.7917 33.1667 -61.875 55c-15.0833 21.8333 -22.625 45.25 -22.625 70.25c0 29 10 55.7917 30 80.375c20 24.5833 47.1667 44 81.5 58.25 +s71.8333 21.375 112.5 21.375c40.6667 0 78.1667 -7.125 112.5 -21.375s61.5 -33.6667 81.5 -58.25c20 -24.5833 30 -51.375 30 -80.375z" /> + <glyph glyph-name="uniF330" unicode="&#xf330;" +d="M384 184v-80c0 -19.8333 -7.04166 -36.7917 -21.125 -50.875s-31.0417 -21.125 -50.875 -21.125h-208c-19.8333 0 -36.7917 7.04167 -50.875 21.125c-14.0833 14.0834 -21.125 31.0417 -21.125 50.875v208c0 19.834 7.04167 36.7923 21.125 50.875 +c14.0834 14.0833 31.0417 21.125 50.875 21.125h176c2.33334 0 4.25 -0.75 5.75 -2.25s2.25 -3.41666 2.25 -5.75v-16c0 -2.33334 -0.75 -4.25 -2.25 -5.75s-3.41666 -2.25 -5.75 -2.25h-176c-11 0 -20.4167 -3.91666 -28.25 -11.75s-11.75 -17.25 -11.75 -28.25v-208 +c-3.8147e-06 -11 3.91666 -20.4167 11.75 -28.25s17.25 -11.75 28.25 -11.75h208c11 -3.8147e-06 20.4167 3.91666 28.25 11.75s11.75 17.25 11.75 28.25v80c0 2.33333 0.75 4.25 2.25 5.75s3.41666 2.25 5.75 2.25h16c2.33334 0 4.25 -0.75 5.75 -2.25 +s2.25 -3.41667 2.25 -5.75zM480 400v-128c0 -4.33334 -1.58334 -8.08334 -4.75 -11.25c-3.16666 -3.16669 -6.91666 -4.75002 -11.25 -4.75c-4.33334 0 -8.08334 1.58334 -11.25 4.75l-44 44l-163 -163c-1.66667 -1.66667 -3.58333 -2.5 -5.75 -2.5 +s-4.08333 0.833328 -5.75 2.5l-28.5 28.5c-1.66667 1.66798 -2.5 3.58466 -2.5 5.75c0 2.16803 0.833328 4.0847 2.5 5.75l163 163l-44 44c-3.16666 3.16666 -4.75 6.91666 -4.75 11.25s1.58334 8.08334 4.75 11.25s6.91666 4.75 11.25 4.75h128 +c4.33334 0 8.08334 -1.58334 11.25 -4.75s4.75 -6.91666 4.75 -11.25z" /> + <glyph glyph-name="uniF342" unicode="&#xf342;" +d="M0 237.177v210.823h210.823v-210.823h-210.823zM30.1172 417.883v-150.589h150.589v150.589h-150.589zM301.177 448h210.823v-210.823h-210.823v210.823zM481.883 267.294v150.589h-150.589v-150.589h150.589zM0 -64v210.823h210.823v-210.823h-210.823zM30.1172 116.706 +v-150.589h150.589v150.589h-150.589zM301.177 -64v210.823h210.823v-210.823h-210.823zM331.294 116.706v-150.589h150.589v150.589h-150.589z" /> + <glyph glyph-name="uniF31F" unicode="&#xf31f;" +d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-180.706v-451.766zM273.581 291.056v108.06h58.3184v-108.06h-58.3184zM289.876 286.768v46.3115h112.349 +v-46.3115h-112.349zM320.75 317.642v51.457h44.5967v-51.457h-44.5967z" /> + <glyph glyph-name="uniF30B" unicode="&#xf30b;" +d="M421.647 387.765h90.3525v-451.765h-512v451.765h90.3525v30.1182h90.3535v-30.1182h150.588v30.1182h90.3535v-30.1182zM361.412 387.765v-60.2354h30.1172v60.2354h-30.1172zM120.471 387.765v-60.2354h30.1172v60.2354h-30.1172zM481.883 -33.8828v268.68h-451.766 +v-268.68h451.766zM30.1172 264.915h451.766v92.7324h-60.2354v-60.2354h-90.3535v60.2354h-150.588v-60.2354h-90.3535v60.2354h-60.2354v-92.7324z" /> + <glyph glyph-name="uniF307" unicode="&#xf307;" +d="M512 -48.5801l0.331055 -15.4199h-512.692l0.361328 15.4199c1.89746 81.8604 84.9014 151.673 199.288 169.412v38.6406c-16.6846 14.9082 -28.1895 38.8818 -35.5088 59.1816c-8.94434 4.90918 -16.9863 14.3662 -22.5576 26.8652 +c-9.78809 22.0459 -7.40918 43.2783 5.39062 52.3135c-0.511719 6.62598 -0.782227 13.0713 -0.782227 19.2451l-0.0908203 11.1143c-0.391602 34.2734 -0.842773 76.9199 50.7178 81.5283c0 0.150391 1.3252 2.68066 2.31934 4.54785 +c7.95117 15.5107 19.8174 32.165 59.3623 33.5811l7.95117 0.150391c56.9521 0 95.6533 -21.1123 108.965 -59.4521c3.70508 -10.6621 0 -20.1191 -3.19238 -28.4609c-3.88477 -9.93945 -8.22168 -21.2334 -5.84277 -41.2012 +c0.933594 -7.28809 0.391602 -14.6074 -0.451172 -21.7754c10.6006 -9.21582 13.3721 -28.3408 6.2041 -49.0615c-5.12012 -14.9688 -13.915 -26.1123 -23.9141 -31.1113c-6.89648 -18.8535 -17.4375 -40.96 -32.2559 -55.2061v-41.3818 +c112.73 -18.3711 194.5 -88.0029 196.397 -168.93zM31.7441 -33.8828v-0.0292969h448.542c-11.7158 62.3135 -84.9014 114.176 -181.609 126.253l-13.1914 1.65625v82.1006l5.96289 4.51758c10.8125 8.16211 21.8652 27.5576 30.3887 53.248l3.43359 10.3008h10.8428 +c-0.151367 0.481445 4.21582 4.96875 7.1377 13.6729c2.13867 6.11426 2.5 11.084 2.25879 14.2158l-13.2822 -1.44531l2.68066 24.2441c0.994141 7.55957 1.92773 14.668 1.20508 20.3301c-3.31348 27.5273 3.28223 44.5439 7.64941 55.8076 +c1.14453 2.95117 2.71094 6.9873 2.71094 8.28223c-11.7461 33.5215 -55.417 38.6113 -80.3838 38.6113l-6.83691 -0.121094c-25.2988 -0.933594 -29.2139 -8.49316 -33.7324 -17.2871c-3.73438 -7.22852 -9.96875 -19.3057 -26.3828 -20.751 +c-21.7451 -1.95801 -23.7324 -10.7822 -23.2803 -51.1699l0.0898438 -11.4453c0 -9.00488 0.663086 -18.6729 1.92773 -28.6113l2.89062 -22.5586l-15.3594 4.30762c0.241211 -3.10254 1.11426 -7.43945 3.37305 -12.499c3.6748 -8.28223 8.34277 -12.3184 9.93848 -12.8906 +l8.85449 -1.53613l2.5 -8.46289c9.00586 -27.2266 20.9922 -47.5557 32.8281 -55.748l6.50586 -4.51758v-80.293l-13.2822 -1.56641c-98.2734 -11.5352 -172.574 -63.5488 -184.38 -126.615z" /> + <glyph glyph-name="uniF2F6" unicode="&#xf2f6;" +d="M449.75 274.5c0 -6.6687 -2.33334 -12.3354 -7 -17l-181 -181l-34 -34c-4.66667 -4.66667 -10.3333 -7 -17 -7s-12.3333 2.33333 -17 7l-34 34l-90.5 90.5c-4.66679 4.66733 -7.00012 10.334 -7 17c0 6.6674 2.33334 12.3341 7 17l34 34c4.66666 4.66667 10.3333 7 17 7 +s12.3333 -2.33333 17 -7l73.5 -73.75l164 164.25c4.66666 4.66666 10.3333 7 17 7s12.3333 -2.33334 17 -7l34 -34c4.66666 -4.66776 7 -10.3344 7 -17z" /> + <glyph glyph-name="uniF32D" unicode="&#xf32d;" +d="M304 104v-56c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25s-6.91666 -4.75 -11.25 -4.75h-64c-4.33333 -1.90735e-06 -8.08333 1.58333 -11.25 4.75s-4.75 6.91667 -4.75 11.25v56c0 4.33334 1.58333 8.08334 4.75 11.25s6.91667 4.75 11.25 4.75h64 +c4.33334 0 8.08334 -1.58334 11.25 -4.75s4.75 -6.91666 4.75 -11.25zM311.5 368l-7 -192c-0.166656 -4.33333 -1.875 -8.08333 -5.125 -11.25s-7.04166 -4.75 -11.375 -4.75h-64c-4.33333 0 -8.125 1.58333 -11.375 4.75s-4.95833 6.91667 -5.125 11.25l-7 192 +c-0.166672 4.33334 1.29167 8.08334 4.375 11.25s6.79167 4.75 11.125 4.75h80c4.33563 0 8.04398 -1.58334 11.125 -4.75c3.08807 -3.16666 4.54642 -6.91666 4.375 -11.25z" /> + <glyph glyph-name="uniF33D" unicode="&#xf33d;" +d="M481.883 161.883c0 -124.567 -101.316 -225.883 -225.883 -225.883s-225.883 101.315 -225.883 225.883c0 105.352 74.5713 198.144 177.333 220.642l6.44531 -29.4248c-89.0273 -19.4863 -153.66 -99.9004 -153.66 -191.217 +c0 -107.942 87.8232 -195.766 195.765 -195.766s195.765 87.8232 195.765 195.766c0 91.1953 -64.542 171.61 -153.479 191.187l6.47559 29.4248c102.641 -22.6182 177.122 -115.381 177.122 -220.611zM271.059 448v-301.177h-30.1172v301.177h30.1172z" /> + <glyph glyph-name="uniF2F7" unicode="&#xf2f7;" +d="M448 176c-25.3333 39.3333 -57.0833 68.75 -95.25 88.25c10.1667 -17.3333 15.25 -36.0833 15.25 -56.25c0 -30.8333 -10.9583 -57.2083 -32.875 -79.125c-21.9167 -21.9167 -48.2917 -32.875 -79.125 -32.875c-30.8333 0 -57.2083 10.9583 -79.125 32.875 +c-21.9167 21.9167 -32.875 48.2917 -32.875 79.125c0 20.1667 5.08333 38.9167 15.25 56.25c-38.1667 -19.5 -69.9167 -48.9167 -95.25 -88.25c22.1667 -34.1667 49.9583 -61.375 83.375 -81.625s69.625 -30.375 108.625 -30.375s75.2083 10.125 108.625 30.375 +c33.4167 20.2501 61.2083 47.4584 83.375 81.625zM268 272c0 3.33755 -1.16666 6.1709 -3.5 8.5c-2.33334 2.33334 -5.16666 3.5 -8.5 3.5c-20.8333 0 -38.7083 -7.45834 -53.625 -22.375c-14.9167 -14.9167 -22.375 -32.7917 -22.375 -53.625 +c0 -3.33488 1.16667 -6.16821 3.5 -8.5c2.33333 -2.33333 5.16667 -3.5 8.5 -3.5s6.16667 1.16667 8.5 3.5s3.5 5.16667 3.5 8.5c0 14.3333 5.08333 26.5833 15.25 36.75s22.4167 15.25 36.75 15.25c3.33731 0 6.17065 1.16666 8.5 3.5c2.33334 2.3374 3.5 5.17075 3.5 8.5z +M480 176c0 -5.66667 -1.66666 -11.4167 -5 -17.25c-23.3333 -38.3333 -54.7083 -69.0417 -94.125 -92.125s-81.0417 -34.625 -124.875 -34.625c-43.8333 0 -85.4583 11.5833 -124.875 34.75s-70.7917 53.8333 -94.125 92c-3.33334 5.83333 -5 11.5833 -5 17.25 +c0 5.66667 1.66667 11.4167 5 17.25c23.3334 38.1667 54.7084 68.8333 94.125 92c39.4167 23.1667 81.0417 34.75 124.875 34.75c43.8333 0 85.4583 -11.5833 124.875 -34.75s70.7917 -53.8333 94.125 -92c3.33334 -5.83333 5 -11.5833 5 -17.25z" /> + <glyph glyph-name="uniF344" unicode="&#xf344;" +d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-60.2354v-30.1182h-30.1172v30.1182h-90.3535v-451.766zM150.588 207.059h30.1182v-30.1172h-30.1182v30.1172z +M180.706 207.059v30.1182h30.1172v-30.1182h-30.1172zM180.706 267.294v30.1182h30.1172v-30.1182h-30.1172zM150.588 267.294h30.1182v-30.1172h-30.1182v30.1172zM150.588 327.529h30.1182v-30.1172h-30.1182v30.1172zM180.706 327.529v30.1182h30.1172v-30.1182h-30.1172 +zM150.588 387.765h30.1182v-30.1172h-30.1182v30.1172zM180.706 165.226c33.2197 0 60.2354 -27.0156 60.2354 -60.2354c0 -9.93848 -2.53027 -19.6064 -7.5293 -28.7324c-9.42676 -17.1973 -26.6543 -28.7627 -46.1104 -30.9004 +c-2.95117 -0.391602 -4.72852 -0.602539 -6.5957 -0.602539c-33.2197 0 -60.2354 27.0156 -60.2354 60.2354s27.0156 60.2354 60.2354 60.2354zM206.999 90.6846c2.5293 4.66797 3.82422 9.48633 3.82422 14.2754c0 16.5947 -13.5225 30.1182 -30.1172 30.1182 +s-30.1182 -13.5234 -30.1182 -30.1182s13.4932 -30.1172 30.0879 -30.1172l3.37305 0.420898c9.66797 1.05469 18.251 6.83691 22.9502 15.4209z" /> + <glyph glyph-name="uniF32E" unicode="&#xf32e;" +d="M256 384c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875 +c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375 +s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75zM288 72.25v47.5c0 2.3338 -0.75 4.29214 -2.25 5.875c-1.5 1.58334 -3.33334 2.375 -5.5 2.375h-48c-2.16667 0 -4.08333 -0.833336 -5.75 -2.5c-1.66667 -1.66714 -2.5 -3.5838 -2.5 -5.75v-47.5 +c0 -2.16693 0.833328 -4.0836 2.5 -5.75c1.66841 -1.66667 3.58508 -2.5 5.75 -2.5h48c2.16666 -3.8147e-06 4 0.791664 5.5 2.375c1.5 1.5836 2.25 3.54193 2.25 5.875zM287.5 158.25l4.5 155.25c0 2 -0.833344 3.5 -2.5 4.5c-1.66666 1.33334 -3.66666 2 -6 2h-55 +c-2.33333 0 -4.33333 -0.666656 -6 -2c-1.66667 -1 -2.5 -2.5 -2.5 -4.5l4.25 -155.25c0 -1.66667 0.833328 -3.125 2.5 -4.375s3.66667 -1.875 6 -1.875h46.25c2.33765 0 4.29599 0.625 5.875 1.875c1.58334 1.25 2.45834 2.70833 2.625 4.375z" /> + <glyph glyph-name="uniF33E" unicode="&#xf33e;" +d="M304 102v-60c0 -2.66667 -1 -5 -3 -7s-4.33334 -3 -7 -3h-60c-2.66667 0 -5 1 -7 3s-3 4.33333 -3 7v60c0 2.66666 1 5 3 7s4.33333 3 7 3h60c2.66666 0 5 -1 7 -3s3 -4.33334 3 -7zM383 252c0 -9 -1.29166 -17.4167 -3.875 -25.25s-5.5 -14.2083 -8.75 -19.125 +s-7.83334 -9.875 -13.75 -14.875c-5.918 -5 -10.7097 -8.625 -14.375 -10.875c-3.66666 -2.25 -8.75 -5.20833 -15.25 -8.875c-6.83334 -3.83333 -12.5417 -9.25 -17.125 -16.25s-6.875 -12.5833 -6.875 -16.75c0 -2.83347 -1 -5.54179 -3 -8.125 +c-2 -2.58334 -4.33334 -3.87501 -7 -3.875h-60c-2.5 0 -4.625 1.54167 -6.375 4.625s-2.625 6.20833 -2.625 9.375v11.25c0 13.8333 5.41667 26.875 16.25 39.125s22.75 21.2917 35.75 27.125c9.83334 4.5 16.8333 9.16667 21 14s6.25 11.1667 6.25 19 +c0 7 -3.875 13.1667 -11.625 18.5s-16.7083 8 -26.875 8c-10.8333 0 -19.8333 -2.41666 -27 -7.25c-5.83333 -4.16666 -14.75 -13.75 -26.75 -28.75c-2.16667 -2.66667 -4.75 -4 -7.75 -4c-2 0 -4.08333 0.666672 -6.25 2l-41 31.25 +c-2.16667 1.66666 -3.45833 3.75 -3.875 6.25s0.0416718 4.83334 1.375 7c26.6668 44.3333 65.3334 66.5 116 66.5c13.3333 0 26.75 -2.58334 40.25 -7.75c13.5 -5.16699 25.6667 -12.0836 36.5 -20.75c10.8347 -8.66666 19.6681 -19.2917 26.5 -31.875 +c6.83334 -12.5833 10.25 -25.7917 10.25 -39.625z" /> + <glyph glyph-name="uniF343" unicode="&#xf343;" +d="M150.588 448h361.412v-120.471h-361.412v120.471zM481.883 357.647v60.2354h-301.177v-60.2354h301.177zM150.588 146.823v120.471h361.412v-120.471h-361.412zM180.706 237.177v-60.2354h301.177v60.2354h-301.177zM150.588 -33.8828v120.471h361.412v-120.471h-361.412 +zM180.706 56.4707v-60.2354h301.177v60.2354h-301.177zM0 327.529v120.471h120.471v-120.471h-120.471zM30.1172 417.883v-60.2354h60.2354v60.2354h-60.2354zM0 146.823v120.471h120.471v-120.471h-120.471zM30.1172 237.177v-60.2354h60.2354v60.2354h-60.2354z +M0 -33.8828v120.471h120.471v-120.471h-120.471zM30.1172 56.4707v-60.2354h60.2354v60.2354h-60.2354z" /> + <glyph glyph-name="uniF33C" unicode="&#xf33c;" +d="M431 69.75c0 -19.5 -6.58334 -35.8333 -19.75 -49c-13.1667 -13.1667 -29.5 -19.75 -49 -19.75c-22.5 0 -42.0833 8.33333 -58.75 25l-194.25 194c-18.8333 19.1667 -28.25 41.75 -28.25 67.75c0 26.5 9.16666 49 27.5 67.5s40.75 27.75 67.25 27.75 +c26.3333 0 49.0833 -9.41666 68.25 -28.25l151.25 -151.5c1.66666 -1.66667 2.5 -3.5 2.5 -5.5c0 -2.66667 -2.54166 -6.54167 -7.625 -11.625s-8.95834 -7.625 -11.625 -7.625c-2.17239 0 -4.08905 0.833328 -5.75 2.5l-151.5 151.75 +c-13.1667 12.8333 -28.25 19.25 -45.25 19.25c-17.6667 0 -32.5833 -6.25 -44.75 -18.75c-12.1667 -12.5 -18.25 -27.5833 -18.25 -45.25c0 -17.5 6.33334 -32.5833 19 -45.25l194 -194.25c10.5 -10.5 22.5833 -15.75 36.25 -15.75c10.6667 0 19.5 3.5 26.5 10.5 +s10.5 15.8333 10.5 26.5c0 13.6667 -5.25 25.75 -15.75 36.25l-145.25 145.25c-4.33333 4 -9.33333 6 -15 6c-4.83333 0 -8.83333 -1.58333 -12 -4.75s-4.75 -7.16667 -4.75 -12c0 -5.33333 2.08333 -10.25 6.25 -14.75l102.5 -102.5c1.66666 -1.66666 2.5 -3.5 2.5 -5.5 +c0 -2.66689 -2.58334 -6.58355 -7.75 -11.75c-5.16898 -5.16666 -9.08563 -7.75 -11.75 -7.75c-2 0 -3.83334 0.833336 -5.5 2.5l-102.5 102.5c-10.5 10.1671 -15.75 22.5838 -15.75 37.25c0 13.6667 4.75 25.25 14.25 34.75s21.0833 14.25 34.75 14.25 +c14.6671 0 27.0838 -5.25 37.25 -15.75l145.25 -145.25c16.6667 -16.3333 25 -35.9167 25 -58.75z" /> + <glyph glyph-name="uniF31E" unicode="&#xf31e;" +d="M430.1 256c17.7002 0 18.6006 -7 17.7002 -18.2002l-12.0996 -185.3c-1 -11.2998 -3.10059 -20.5 -21.1006 -20.5h-316.199c-17.6006 0 -20.2002 9.2998 -21.1006 20.5l-13 183c-1 11.2998 -0.0996094 20.5 17.6006 20.5h348.199zM426.2 304.7l1.59961 -32.7002h-343.399 +c0.5 6.2002 4 46.7002 5.5 63.4004c1.59961 18.0996 7.7998 16.5996 25.1992 16.5996h75.3008c28.2998 0 22.8994 0.200195 36.5996 -14.5996c16.5 -17.7002 19.0996 -17.4004 40.9004 -17.4004h143.199c10.6006 0 14.6006 -2.90039 15.1006 -15.2998z" /> + <glyph glyph-name="uniF318" unicode="&#xf318;" +d="M288 0c-8.83203 0 -16 7.16797 -16 16v192c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16zM384 384c17.6797 0 32 -14.3203 32 -32v-32c0 -17.6641 -14.3203 -32 -32 -32v-288c0 -35.3438 -28.6562 -64 -64 -64h-224 +c-35.3438 0 -64 28.6562 -64 64v288c-17.6797 0 -32 14.3359 -32 32v32c0 17.6797 14.3203 32 32 32h96v32c0 17.6797 14.3203 32 32 32h96c17.6797 0 32 -14.3203 32 -32v-32h96zM160 400v-16h96v16c0 8.83203 -7.16797 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16z +M352 0v288h-288v-288c0 -17.6641 14.3203 -32 32 -32h224c17.6797 0 32 14.3359 32 32zM368 320c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-320c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h320zM128 0c-8.83203 0 -16 7.16797 -16 16v192 +c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16zM208 0c-8.83203 0 -16 7.16797 -16 16v192c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-192c0 -8.83203 -7.16797 -16 -16 -16z" /> + <glyph glyph-name="uniF331" unicode="&#xf331;" +d="M180.706 440.019l331.294 -64.8125v-353.461l-0.210938 0.0605469c-1.05371 -47.4658 -39.8154 -85.8057 -87.5518 -85.8057c-48.3994 0 -87.7627 39.3936 -87.7627 87.7627s39.3633 87.7627 87.7627 87.7627c22.166 0 42.1943 -8.52344 57.6455 -22.1064v140.529 +l-271.06 53.0371v-183.537c0.0302734 -1.02344 0.271484 -1.95703 0.271484 -3.04199c0 -1.08398 -0.271484 -2.04785 -0.301758 -3.07129v-0.180664v0c-1.74609 -46.8633 -40.1465 -84.541 -87.4307 -84.541c-48.3994 0 -87.7637 39.3945 -87.7637 87.7637 +c0 48.3682 39.3643 87.7627 87.7637 87.7627c22.0156 0 41.9229 -8.43359 57.3438 -21.8662v277.745zM123.362 38.7314c30.75 0 55.7168 24.2441 57.3438 54.6035v6.11328c-1.62695 30.3291 -26.5938 54.5732 -57.3438 54.5732 +c-31.8047 0 -57.6455 -25.8408 -57.6455 -57.6445c0 -31.8047 25.8408 -57.6455 57.6455 -57.6455zM210.823 313.646l271.06 -53.0078v89.751l-271.06 53.0674v-89.8105zM424.237 -33.8828c31.8037 0 57.6455 25.8418 57.6455 57.6455 +c0 31.8047 -25.8418 57.6455 -57.6455 57.6455c-31.8047 0 -57.6455 -25.8408 -57.6455 -57.6455c0 -31.8037 25.8408 -57.6455 57.6455 -57.6455z" /> + <glyph glyph-name="uniF303" unicode="&#xf303;" +d="M384 144c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25l-112 -112c-3.16666 -3.16667 -6.91666 -4.75 -11.25 -4.75c-4.33333 0 -8.08333 1.58333 -11.25 4.75l-112 112c-3.16667 3.16667 -4.75 6.91667 -4.75 11.25c-7.62939e-06 4.33333 1.58333 8.08333 4.75 11.25 +s6.91667 4.75 11.25 4.75h224c4.33334 0 8.08334 -1.58333 11.25 -4.75s4.75 -6.91667 4.75 -11.25zM384 240c0 -4.33333 -1.58334 -8.08333 -4.75 -11.25s-6.91666 -4.75 -11.25 -4.75h-224c-4.33333 0 -8.08333 1.58333 -11.25 4.75s-4.75 6.91667 -4.75 11.25 +c-7.62939e-06 4.33333 1.58333 8.08333 4.75 11.25l112 112c3.16667 3.16666 6.91667 4.75 11.25 4.75c4.33334 0 8.08334 -1.58334 11.25 -4.75l112 -112c3.16666 -3.16667 4.75 -6.91667 4.75 -11.25z" /> + <glyph glyph-name="uniF2FF" unicode="&#xf2ff;" +d="M467.697 361.954c17.6182 -17.6191 17.6182 -46.291 -0.0302734 -63.8799l-272.716 -272.745l-158.057 -53.1582l51.8623 159.263l272.775 272.806c17.0771 17.0459 46.8936 17.0459 63.9092 0zM93.1836 47.6162l18.5527 -18.5527l59.1211 19.8779l-58.2471 58.2773z +M131.162 131.223l63.5488 -63.5781l165.466 165.466l-63.5781 63.5488zM317.892 317.982l63.5781 -63.5488l21.9561 21.9561l-63.5781 63.5479zM446.403 319.367c5.87305 5.87305 5.87305 15.3906 -0.0292969 21.2939l-42.2559 42.2852 +c-5.69141 5.69141 -15.6006 5.69141 -21.293 0l-21.6846 -21.7148l63.5781 -63.5488z" /> + <glyph glyph-name="uniF339" unicode="&#xf339;" +d="M320 72v40c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-24v128c0 2.33333 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-80c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41667 -2.25 -5.75v-40c0 -2.33333 0.75 -4.25 2.25 -5.75 +s3.41667 -2.25 5.75 -2.25h24v-80h-24c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-40c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h112c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75zM288 296v40 +c0 2.33334 -0.75 4.25 -2.25 5.75s-3.41666 2.25 -5.75 2.25h-48c-2.33333 0 -4.25 -0.75 -5.75 -2.25s-2.25 -3.41666 -2.25 -5.75v-40c0 -2.33334 0.75 -4.25 2.25 -5.75s3.41667 -2.25 5.75 -2.25h48c2.33334 0 4.25 0.75 5.75 2.25s2.25 3.41666 2.25 5.75zM448 192 +c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875 +c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875 +c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF317" unicode="&#xf317;" +d="M351.25 135.5c0 4.33333 -1.58334 8.08333 -4.75 11.25l-45.25 45.25l45.25 45.25c3.16666 3.16667 4.75 6.91667 4.75 11.25c0 4.5 -1.58334 8.33334 -4.75 11.5l-22.5 22.5c-3.16666 3.16666 -7 4.75 -11.5 4.75c-4.33334 0 -8.08334 -1.58334 -11.25 -4.75 +l-45.25 -45.25l-45.25 45.25c-3.16667 3.16666 -6.91667 4.75 -11.25 4.75c-4.5 0 -8.33333 -1.58334 -11.5 -4.75l-22.5 -22.5c-3.16667 -3.16763 -4.75 -7.00096 -4.75 -11.5c0 -4.33333 1.58333 -8.08333 4.75 -11.25l45.25 -45.25l-45.25 -45.25 +c-3.16667 -3.16667 -4.75 -6.91667 -4.75 -11.25c0 -4.5 1.58333 -8.33334 4.75 -11.5l22.5 -22.5c3.16667 -3.16666 7 -4.75 11.5 -4.75c4.33333 0 8.08333 1.58334 11.25 4.75l45.25 45.25l45.25 -45.25c3.16666 -3.16666 6.91666 -4.75 11.25 -4.75 +c4.5 0 8.33334 1.58334 11.5 4.75l22.5 22.5c3.16666 3.16666 4.75 7 4.75 11.5zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75 +c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75 +c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF336" unicode="&#xf336;" +d="M340.8 349.6c-38.2002 0 -71 -23.5 -84.7002 -56.7998c-13.8994 33.4004 -46.5996 56.7998 -84.7998 56.7998c-50.7998 0 -91.8994 -41.2998 -91.8994 -92.2998c0 -24.7998 9.7998 -47.2998 25.5996 -63.8994l151 -152.5l148.4 149.8 +c17.3994 16.7998 28.2998 40.3994 28.2998 66.5996c0 51 -41.2002 92.2998 -91.9004 92.2998zM340.8 365v0c59.1006 0 107.2 -48.2998 107.2 -107.7c0 -29.5996 -11.7998 -57.2002 -32.7998 -77.5l-148.3 -149.8l-10.9004 -11l-10.9004 11l-151.199 152.7 +c-19.3008 20.2002 -29.9004 46.7002 -29.9004 74.5996c0 59.4004 48.0996 107.7 107.2 107.7c33.7998 0 64.7998 -15.7998 84.7998 -41.7998c20 26 51 41.7998 84.7998 41.7998z" /> + <glyph glyph-name="uniF312" unicode="&#xf312;" +d="M368 176v32c0 4.33333 -1.58334 8.08333 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-64v64c0 4.33334 -1.58334 8.08334 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-32c-4.33333 0 -8.08333 -1.58334 -11.25 -4.75s-4.75 -6.91666 -4.75 -11.25v-64h-64 +c-4.33333 0 -8.08333 -1.58333 -11.25 -4.75s-4.75 -6.91667 -4.75 -11.25v-32c0 -4.33333 1.58333 -8.08333 4.75 -11.25s6.91667 -4.75 11.25 -4.75h64v-64c0 -4.33334 1.58333 -8.08334 4.75 -11.25s6.91667 -4.75 11.25 -4.75h32c4.33334 0 8.08334 1.58334 11.25 4.75 +s4.75 6.91666 4.75 11.25v64h64c4.33334 0 8.08334 1.58333 11.25 4.75s4.75 6.91667 4.75 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75 +c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75 +c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF333" unicode="&#xf333;" +d="M351.383 448l160.617 -159.864v-352.136h-376.471v30.1172h346.354v301.177h-150.589v150.589h-210.342v-29.6367h14.126c24.9072 0 45.1758 -20.2686 45.1758 -45.1758v-258.561l-74.21 -149.354l-75.9268 149.264v258.65c0 24.9072 20.2695 45.1758 45.1768 45.1758 +h15.541v59.7539h260.548zM117.7 26.293l32.4062 65.2646v176.219h-29.6357v-181.52h-30.1182v181.52h-30.1172v-176.128l33.25 -65.3555h24.2148zM150.106 343.07c0 8.28223 -6.74609 15.0586 -15.0586 15.0586h-59.7539c-8.28223 0 -15.0586 -6.77637 -15.0586 -15.0586 +v-45.1768h89.8711v45.1768zM361.412 395.535v-98.123h98.5742z" /> + <glyph glyph-name="uniF328" unicode="&#xf328;" +d="M392 192.75c0 26.8333 -7.25 51.4167 -21.75 73.75l-188.5 -188.25c22.8333 -14.8333 47.5833 -22.25 74.25 -22.25c18.5 0 36.125 3.625 52.875 10.875s31.2083 16.9583 43.375 29.125s21.8333 26.7083 29 43.625c7.16666 16.9167 10.75 34.625 10.75 53.125z +M142.25 118l188.75 188.5c-22.5 15.1667 -47.5 22.75 -75 22.75c-24.6667 0 -47.4167 -6.08334 -68.25 -18.25s-37.3333 -28.75 -49.5 -49.75c-12.1667 -21 -18.25 -43.8333 -18.25 -68.5c0 -27 7.41666 -51.9167 22.25 -74.75zM448 192.75 +c0 -26.1667 -5.08334 -51.1667 -15.25 -75c-10.1667 -23.8333 -23.7917 -44.3333 -40.875 -61.5c-17.0833 -17.1667 -37.5 -30.8333 -61.25 -41c-23.75 -10.1667 -48.625 -15.25 -74.625 -15.25c-26 -4.76837e-07 -50.875 5.08333 -74.625 15.25 +c-23.75 10.1667 -44.1667 23.8333 -61.25 41c-17.0833 17.1667 -30.7083 37.6667 -40.875 61.5c-10.1667 23.8333 -15.25 48.8333 -15.25 75c0 26.1667 5.08334 51.125 15.25 74.875s23.7917 44.2083 40.875 61.375c17.0833 17.1667 37.5 30.8333 61.25 41 +s48.625 15.25 74.625 15.25s50.875 -5.08334 74.625 -15.25c23.75 -10.1668 44.1667 -23.8335 61.25 -41c17.0833 -17.1667 30.7083 -37.625 40.875 -61.375s15.25 -48.7083 15.25 -74.875z" /> + <glyph glyph-name="uniF335" unicode="&#xf335;" +d="M376.38 448l135.62 -125.952v-295.695h-151.101v30.1182h120.983v240.941h-120.471v120.471h-150.589v-30.4189h-30.1172v60.5361h195.674zM391.529 392.824v-65.2949h70.3252zM0 357.647h195.675l135.619 -125.952v-295.695h-331.294v421.647zM210.823 302.472v-65.2949 +h70.3252zM30.1172 -33.8828h271.06v240.941h-120.471v120.471h-150.589v-361.412z" /> + <glyph glyph-name="uniF2FB" unicode="&#xf2fb;" +d="M512 207.059c0 -66.4395 -54.0312 -120.471 -120.471 -120.471c-36.0508 0 -69.5713 16.0225 -92.582 43.7314l-0.0595703 -0.0302734l-0.421875 0.541992c-0.331055 0.421875 -0.783203 0.692383 -1.14453 1.14453l0.120117 0.0898438l-109.447 134.987 +c-17.1367 19.2754 -41.7432 30.3594 -67.5234 30.3594c-49.8145 0 -90.3535 -40.5391 -90.3535 -90.3535s40.5391 -90.3525 90.3535 -90.3525c27.5576 0 53.2783 12.3477 70.5352 33.8818l0.271484 -0.210938l24.6055 30.4795l23.4316 -18.9141l-24.7861 -30.6895 +l-0.301758 0.240234c-22.9795 -28.5205 -57.1328 -44.9053 -93.7559 -44.9053c-66.4395 0 -120.471 54.0312 -120.471 120.471s54.0312 120.471 120.471 120.471c33.7314 0 65.8369 -14.3662 88.6357 -39.1826l0.241211 0.180664l1.26465 -1.56641l111.375 -137.337 +c17.2578 -20.8711 42.4365 -32.918 69.542 -32.918c49.8145 0 90.3535 40.5381 90.3535 90.3525s-40.5391 90.3535 -90.3535 90.3535c-25.4795 0 -49.6943 -10.9033 -66.8613 -29.7871l-28.5518 -35.3877l-23.4307 18.9141l28.5508 35.3877l-0.120117 0.0908203 +c22.8896 25.9912 55.8682 40.8994 90.4131 40.8994c66.4395 0 120.471 -54.0312 120.471 -120.471z" /> + <glyph glyph-name="uniF329" unicode="&#xf329;" +d="M384 312.471c70.5654 0 128 -57.4346 128 -128s-57.4346 -128 -128 -128h-286.117c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 55.0254 46.6826 100.051 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131 +c37.165 0 72.8848 -14.8779 99.6592 -41.1709c16.4141 7.34863 33.5205 11.0537 50.9287 11.0537zM384 86.5879c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0527 0 -31.834 -4.24609 -46.9834 -12.5889l-10.6621 -5.87305 +l-7.98047 9.21582c-21.6553 24.998 -52.6465 39.3643 -84.9619 39.3643c-50.0254 0 -93.3047 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16895c-3.58398 0.571289 -7.16797 1.14355 -10.9326 1.14355c-37.376 0 -67.7656 -30.3887 -67.7656 -67.7646 +s30.3896 -67.7646 67.7656 -67.7646h286.117z" /> + <glyph glyph-name="uniF338" unicode="&#xf338;" +d="M320 80v-32c0 -4.33301 -1.58301 -8.08301 -4.75 -11.25s-6.91699 -4.75 -11.25 -4.75h-128c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v32c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h16v96h-16 +c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v32c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h96c4.33301 0 8.08301 -1.58301 11.25 -4.75s4.75 -6.91699 4.75 -11.25v-144h16c4.33301 0 8.08301 -1.58301 11.25 -4.75 +s4.75 -6.91699 4.75 -11.25zM288 368v-48c0 -4.33301 -1.58301 -8.08301 -4.75 -11.25s-6.91699 -4.75 -11.25 -4.75h-64c-4.33301 0 -8.08301 1.58301 -11.25 4.75s-4.75 6.91699 -4.75 11.25v48c0 4.33301 1.58301 8.08301 4.75 11.25s6.91699 4.75 11.25 4.75h64 +c4.33301 0 8.08301 -1.58301 11.25 -4.75s4.75 -6.91699 4.75 -11.25z" /> + <glyph glyph-name="uniF33B" unicode="&#xf33b;" +d="M368 176v32c0 4.33333 -1.58334 8.08333 -4.75 11.25s-6.91666 4.75 -11.25 4.75h-192c-4.33333 0 -8.08333 -1.58333 -11.25 -4.75s-4.75 -6.91667 -4.75 -11.25v-32c0 -4.33333 1.58333 -8.08333 4.75 -11.25s6.91667 -4.75 11.25 -4.75h192 +c4.33334 0 8.08334 1.58333 11.25 4.75s4.75 6.91667 4.75 11.25zM448 192c0 -34.8333 -8.58334 -66.9583 -25.75 -96.375c-17.1674 -29.4167 -40.4591 -52.7083 -69.875 -69.875c-29.4167 -17.1667 -61.5417 -25.75 -96.375 -25.75 +c-34.8333 0 -66.9583 8.58333 -96.375 25.75c-29.4167 17.1667 -52.7083 40.4583 -69.875 69.875c-17.1667 29.4167 -25.75 61.5417 -25.75 96.375c0 34.8333 8.58334 66.9583 25.75 96.375s40.4583 52.7083 69.875 69.875s61.5417 25.75 96.375 25.75 +c34.8333 0 66.9583 -8.58334 96.375 -25.75c29.4167 -17.1673 52.7083 -40.459 69.875 -69.875c17.1667 -29.4168 25.75 -61.5418 25.75 -96.375z" /> + <glyph glyph-name="uniF341" unicode="&#xf341;" +d="M512 244.706c0 -70.5654 -57.4043 -128 -128 -128h-83.0342v30.1172h83.0342c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0225 0 -31.834 -4.24609 -46.9834 -12.5586l-10.6621 -5.87305l-7.98047 9.21582 +c-21.6553 24.9678 -52.6465 39.334 -84.9619 39.334c-50.0254 0 -93.335 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16797c-3.58398 0.572266 -7.16797 1.14453 -10.9326 1.14453c-37.3467 0 -67.7656 -30.3887 -67.7656 -67.7646 +s30.4189 -67.7646 67.7656 -67.7646h111.404v-30.1172h-111.404c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 54.9951 46.0498 100.442 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131c37.165 0 72.8848 -14.8779 99.6592 -41.1709 +c16.4443 7.34863 33.5205 11.0537 50.9287 11.0537c70.5957 0 128 -57.4346 128 -128zM320.633 181.338l-49.5742 49.6045v-234.707h-30.1172v234.707l-49.6035 -49.5742l-21.2939 21.2939l85.9561 85.9248l85.9258 -85.9551z" /> + <glyph glyph-name="uniF32F" unicode="&#xf32f;" +d="M288 72.25v47.5c0 2.3338 -0.791656 4.29214 -2.375 5.875c-1.58334 1.58334 -3.45834 2.375 -5.625 2.375h-48c-2.16667 0 -4.04167 -0.791664 -5.625 -2.375s-2.375 -3.54166 -2.375 -5.875v-47.5c0 -2.33334 0.791672 -4.29166 2.375 -5.875 +s3.45833 -2.375 5.625 -2.375h48c2.16666 -3.8147e-06 4.04166 0.791664 5.625 2.375c1.58334 1.5836 2.375 3.54193 2.375 5.875zM287.5 165.75l4.5 114.75c0 2 -0.833344 3.58334 -2.5 4.75c-2.16666 1.83334 -4.16666 2.75 -6 2.75h-55 +c-1.83333 0 -3.83333 -0.916656 -6 -2.75c-1.66667 -1.16666 -2.5 -2.91666 -2.5 -5.25l4.25 -114.25c0 -1.66667 0.833328 -3.04167 2.5 -4.125s3.66667 -1.625 6 -1.625h46.25c2.33765 0 4.29599 0.541672 5.875 1.625c1.58334 1.08333 2.45834 2.45833 2.625 4.125z +M284 399.25l192 -352c5.83331 -10.5 5.66666 -21 -0.5 -31.5c-2.83334 -4.83333 -6.70834 -8.66667 -11.625 -11.5c-4.91754 -2.83333 -10.2092 -4.25 -15.875 -4.25h-384c-5.66667 0 -10.9583 1.41667 -15.875 4.25c-4.91667 2.83333 -8.79167 6.66667 -11.625 11.5 +c-6.16678 10.5 -6.33345 21 -0.5 31.5l192 352c2.83333 5.16666 6.75 9.25 11.75 12.25s10.4167 4.5 16.25 4.5c5.83334 0 11.25 -1.5 16.25 -4.5s8.91666 -7.08334 11.75 -12.25z" /> + <glyph glyph-name="uniF340" unicode="&#xf340;" +d="M256 268.138c41.502 0 75.2939 -33.792 75.2939 -75.2939c0 -41.5029 -33.792 -75.2949 -75.2939 -75.2949s-75.2939 33.792 -75.2939 75.2949c0 41.502 33.792 75.2939 75.2939 75.2939zM256 147.667c24.9072 0 45.1768 20.2686 45.1768 45.1768 +c0 24.9072 -20.2695 45.1758 -45.1768 45.1758s-45.1768 -20.2686 -45.1768 -45.1758c0 -24.9082 20.2695 -45.1768 45.1768 -45.1768zM510.193 163.509l-77.9453 -23.3711c-3.61328 -12.1074 -8.37207 -23.7334 -14.2754 -34.6357l38.4902 -71.5596 +c-12.2275 -15.3896 -26.1719 -29.334 -41.5625 -41.5928l-71.5596 38.5205c-10.9023 -5.90234 -22.5273 -10.6611 -34.6348 -14.2754l-23.3711 -77.9443c-9.6377 -1.11426 -19.4258 -1.80664 -29.335 -1.80664c-9.9082 0 -19.667 0.692383 -29.335 1.80664l-23.3711 77.9443 +c-12.1074 3.61426 -23.7324 8.37305 -34.6348 14.2754l-71.5898 -38.5205c-15.3906 12.2285 -29.335 26.1729 -41.5625 41.5625l38.5205 71.5596c-5.90332 10.9033 -10.6621 22.5283 -14.2754 34.666l-77.9453 23.3711c-1.11426 9.6377 -1.80664 19.3955 -1.80664 29.335 +c0 9.93848 0.692383 19.6963 1.80664 29.334l77.9746 23.4316c3.61426 12.1074 8.37305 23.7324 14.2764 34.6357l-38.5205 71.5293c12.1973 15.3896 26.1416 29.334 41.5322 41.5625l71.5898 -38.5508c10.8721 5.93262 22.4971 10.7217 34.6348 14.3057l23.3711 77.9443 +c9.6377 1.11426 19.3965 1.80762 29.335 1.80762s19.6973 -0.693359 29.335 -1.80762l23.3711 -77.9443c12.1074 -3.61426 23.7021 -8.37305 34.6348 -14.2754l71.5898 38.5498c15.3906 -12.2578 29.335 -26.2021 41.5625 -41.5615l-38.5205 -71.5898 +c5.90332 -10.9023 10.6914 -22.498 14.2754 -34.6055l77.9453 -23.4316c1.11426 -9.66797 1.80664 -19.4258 1.80664 -29.334c0 -9.90918 -0.692383 -19.667 -1.80664 -29.335zM408.034 164.322l73.7275 22.1064c0.0908203 2.16797 0.121094 4.30664 0.121094 6.41504 +c0 2.10742 -0.0302734 4.24609 -0.0605469 6.41504l-58.1875 17.498l-15.6006 4.66797l-4.63867 15.6016c-3.01172 10.0889 -6.9873 19.7871 -11.8965 28.8223l-7.74023 14.3057l7.68066 14.3057l28.7021 53.3086c-2.98242 3.16211 -6.08398 6.23438 -9.2168 9.21582 +l-67.584 -36.3818l-14.3057 7.67969c-9.06543 4.90918 -18.8232 8.91504 -28.9131 11.9268l-15.6006 4.6377l-4.66797 15.6016l-17.4385 58.1875c-2.16895 0.0595703 -4.30664 0.0898438 -6.41504 0.0898438s-4.24609 -0.0302734 -6.44531 -0.0605469l-17.4375 -58.1865 +l-4.66895 -15.6016l-15.6006 -4.6377c-10.1494 -3.01172 -19.8477 -7.01758 -28.793 -11.8965l-14.3359 -7.80078l-67.6738 36.4424c-3.13281 -2.98145 -6.2041 -6.08398 -9.18652 -9.21582l36.3828 -67.6143l-7.70996 -14.3057 +c-4.90918 -9.00488 -8.91504 -18.7334 -11.9268 -28.8828l-4.63867 -15.6006l-73.7275 -22.1064c-0.0908203 -2.16895 -0.121094 -4.30762 -0.121094 -6.41504c0 -2.07812 0.0302734 -4.2168 0.121094 -6.38574l73.7578 -22.1064l4.6084 -15.5703 +c3.04199 -10.1494 7.04688 -19.8779 11.9268 -28.9131l7.70996 -14.3057l-36.3828 -67.584c2.98242 -3.16211 6.08398 -6.23438 9.2168 -9.21582l67.6133 36.3516l14.3066 -7.70996c9.03516 -4.90918 18.7627 -8.91504 28.8828 -11.9268l15.6006 -4.6377l4.66797 -15.6016 +l17.4385 -58.1865c2.16895 -0.0605469 4.30664 -0.0908203 6.41504 -0.0908203s4.24707 0.0302734 6.41504 0.0908203l17.4385 58.1865l4.66797 15.6016l15.6006 4.6377c10.1201 3.04199 19.8477 7.01758 28.9131 11.9268l14.3057 7.70996l67.5547 -36.4121 +c3.16211 2.98145 6.23438 6.05371 9.21582 9.21582l-28.6719 53.3086l-7.68066 14.3057l7.70996 14.3057c4.90918 9.00586 8.91504 18.7334 11.9268 28.8828z" /> + <glyph glyph-name="uniF332" unicode="&#xf332;" +d="M30.1172 417.883h451.766v-451.766h-451.766v451.766zM451.765 -3.76465v60.2354h-391.529v-60.2354h391.529zM60.2354 86.5879h391.529v301.177h-391.529v-301.177zM427.761 141.854l-20.9922 -21.5947l-72.7939 70.7461l-46.8027 -50.4766l-74.873 132.969 +l-102.43 -149.835l-24.877 16.9863l129.807 189.831l78.4268 -139.203l39.665 42.8271z" /> + <glyph glyph-name="uniF316" unicode="&#xf316;" +d="M404.5 85.5c0 -6.66674 -2.33334 -12.3334 -7 -17l-34 -34c-4.66803 -4.66667 -10.3347 -7 -17 -7c-6.66925 0 -12.3359 2.33333 -17 7l-73.5 73.5l-73.5 -73.5c-4.66667 -4.66667 -10.3333 -7 -17 -7s-12.3333 2.33333 -17 7l-34 34c-4.66666 4.66666 -7 10.3333 -7 17 +s2.33334 12.3333 7 17l73.5 73.5l-73.5 73.5c-4.66666 4.66667 -7 10.3333 -7 17s2.33334 12.3333 7 17l34 34c4.66696 4.66666 10.3336 7 17 7c6.66733 0 12.334 -2.33334 17 -7l73.5 -73.5l73.5 73.5c4.66666 4.66666 10.3333 7 17 7s12.3333 -2.33334 17 -7l34 -34 +c4.66666 -4.66772 7 -10.3344 7 -17c0 -6.66666 -2.33334 -12.3333 -7 -17l-73.5 -73.5l73.5 -73.5c4.66666 -4.66685 7 -10.3335 7 -17z" /> + <glyph glyph-name="uniF300" unicode="&#xf300;" +d="M180.706 207.059h-180.706v180.706h30.1172v-123.753c30.5098 96.165 121.556 165.165 225.883 165.165c105.593 0 199.409 -71.0781 228.111 -172.846l-29.0039 -8.16211c-25.0576 88.8477 -106.947 150.92 -199.107 150.92 +c-97.1592 -0.0302734 -181.188 -68.5479 -202.029 -161.912h126.735v-30.1182zM331.294 176.941h180.706v-180.706h-30.1172v123.724c-30.8711 -96.4375 -121.706 -165.105 -225.883 -165.105c-105.623 0 -199.439 71.0781 -228.111 172.846l29.0039 8.16113 +c25.0273 -88.8467 106.887 -150.919 199.107 -150.919c97.25 0 181.157 68.4873 202.029 161.882h-126.735v30.1182z" /> + <glyph glyph-name="uniF32C" unicode="&#xf32c;" +d="M512 244.706c0 -70.5654 -57.4043 -128 -128 -128h-83.0342v30.1172h83.0342c53.9707 0 97.8828 43.9121 97.8828 97.8828s-43.9121 97.8818 -97.8828 97.8818c-16.0225 0 -31.834 -4.24609 -46.9834 -12.5586l-10.6621 -5.87305l-7.98047 9.21582 +c-21.6553 24.9678 -52.6465 39.334 -84.9619 39.334c-50.0254 0 -93.335 -32.5273 -107.701 -80.9561l-3.79492 -12.71l-13.1006 2.16797c-3.58398 0.572266 -7.16797 1.14453 -10.9326 1.14453c-37.3467 0 -67.7656 -30.3887 -67.7656 -67.7646 +s30.4189 -67.7646 67.7656 -67.7646h111.404v-30.1172h-111.404c-53.9717 0 -97.8828 43.9111 -97.8828 97.8818c0 54.9951 45.5078 100.442 100.984 97.8223c21.4736 54.5732 73.2158 90.4131 132.428 90.4131c37.165 0 72.8848 -14.8779 99.6592 -41.1709 +c16.4443 7.34863 33.5205 11.0537 50.9287 11.0537c70.5957 0 128 -57.4346 128 -128zM271.059 34.4844l49.6035 49.6045l21.2939 -21.2939l-85.9561 -85.9551l-85.9258 85.9258l21.293 21.293l49.5742 -49.5742v232.81h30.1172v-232.81z" /> + <glyph glyph-name="uniF311" unicode="&#xf311;" +d="M416 232v-48c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66992 -4.66699 -10.3369 -7 -17 -7h-104v-104c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66895 -4.66699 -10.3359 -7 -17 -7h-48c-6.66699 0 -12.333 2.33301 -17 7s-7 10.333 -7 17v104h-104 +c-6.66699 0 -12.334 2.33301 -17 7c-4.66699 4.66699 -7 10.334 -7 17v48c0 6.66797 2.33301 12.334 7 17c4.66699 4.66699 10.333 7 17 7h104v104c0 6.66699 2.33301 12.333 7 17c4.66797 4.66699 10.334 7 17 7h48c6.66699 0 12.333 -2.33301 17 -7 +c4.66699 -4.66992 7 -10.3359 7 -17v-104h104c6.66699 0 12.333 -2.33301 17 -7s7 -10.333 7 -17z" /> + <glyph glyph-name="uniF31D" unicode="&#xf31d;" +d="M291.147 448l160.617 -159.864v-352.136h-391.529v512h230.912zM301.177 395.535v-98.123h98.5752zM90.3525 -33.8828h331.295v301.177h-150.589v150.589h-180.706v-451.766z" /> + <glyph glyph-name="uniF32A" unicode="&#xf32a;" +d="M193.3 187.6l-11.5996 11.6006l74.5 74.2998l74.5 -74.2998l-11.7002 -11.6006l-54.5996 54.6006v-241.8h-16.5v241.8zM399.3 264.4c45.2002 -0.100586 80.7002 -40.1006 80.7002 -85.6006s-37 -82.7998 -82 -82.7998v0h-101v16h97.2998h3.2002 +c36.7002 0.200195 66.5 30.2998 66.5 67.0996c0 36.9004 -29 69.8008 -65.5996 70.3008l-15.2002 0.0996094s0.200195 7 0.200195 20.2998c0 55.6006 -45.6006 98.9004 -100.9 98.9004c-38.2998 0 -73.7998 -22.5 -90.4004 -57.4004l-6.5 -13.7002l-13.5 6.80078 +c-6.19922 3.19922 -13 4.7998 -19.8994 4.7998c-21.7998 0 -40.2998 -17.7002 -43.9004 -39.2998l-1.5 -8.80078l-8.39941 -2.89941c-30 -10.4004 -50.2002 -39.7998 -50.2002 -71.6006c0 -41.0996 33.2998 -74.5996 74.2002 -74.5996h90.5996v-16h-91.4004 +c-49.5 0 -89.5996 40.5 -89.5996 90.2002c0 39.5996 25.4004 74.2002 60.5996 86.2998c4.80078 28.4004 29.3008 52 58.9004 52c9.7002 0 18.7002 -2.2998 26.7998 -6.40039c18.6006 39.2002 58.2998 66.3008 104.4 66.3008c64 0 116.8 -52.1006 116.8 -116.4 +c0 -1.2002 -0.200195 -2.40039 -0.200195 -3.59961z" /> + <glyph glyph-name="uniF334" unicode="&#xf334;" +d="M391.259 244.706l120.741 83.8174v-303.134l-120.712 83.8174v-67.7949c0 -24.9072 -20.4189 -45.1768 -45.5371 -45.1768h-239.857c-24.9072 0 -45.1768 20.2695 -45.1768 45.1768v165.616h-15.1787c-25.1182 0 -45.5381 20.2695 -45.5381 45.1768v60.2656 +c0 24.9072 20.4199 45.1768 45.5381 45.1768h44.8145v15.0586c0 24.9072 20.2695 45.1768 45.1768 45.1768h166.882v-30.1182h-166.882c-8.28223 0 -15.0586 -6.74609 -15.0586 -15.0586v-15.0586h225.25c25.1182 0 45.5381 -20.2695 45.5381 -45.1768v-67.7646z +M481.883 82.9443v187.994l-120.712 -83.8477v125.38c0 8.3125 -6.92676 15.0586 -15.4199 15.0586h-300.213c-8.52344 0 -15.4209 -6.74609 -15.4209 -15.0586v-60.2656c0 -8.3125 6.89746 -15.0586 15.4209 -15.0586h45.2969v-195.734 +c0 -8.3125 6.77637 -15.0596 15.0586 -15.0596h239.827c8.52344 0 15.4199 6.74707 15.4199 15.0596v125.35z" /> + <glyph glyph-name="uniF33A" unicode="&#xf33a;" +d="M416 232v-48c0 -6.66699 -2.33301 -12.333 -7 -17c-4.66992 -4.66699 -10.3369 -7 -17 -7h-304c-6.66699 0 -12.334 2.33301 -17 7c-4.66699 4.66699 -7 10.334 -7 17v48c0 6.66797 2.33301 12.334 7 17c4.66699 4.66699 10.333 7 17 7h304 +c6.66699 0 12.333 -2.33301 17 -7s7 -10.333 7 -17z" /> + <glyph glyph-name="uniF337" unicode="&#xf337;" +d="M448 192c0 -26 -5.08334 -50.8333 -15.25 -74.5c-10.1669 -23.6667 -23.8335 -44.0834 -41 -61.25c-17.1674 -17.1667 -37.584 -30.8333 -61.25 -41c-23.6667 -10.1667 -48.5 -15.25 -74.5 -15.25c-28.6667 0 -55.9167 6.04167 -81.75 18.125 +c-25.8333 12.0833 -47.8333 29.125 -66 51.125c-1.1683 1.66666 -1.70996 3.54166 -1.625 5.625c0.0837402 2.08363 0.792076 3.79196 2.125 5.125l34.25 34.5c1.66667 1.5 3.75 2.25 6.25 2.25c2.66783 -0.333336 4.5845 -1.33334 5.75 -3 +c12.1668 -15.8333 27.0835 -28.0833 44.75 -36.75c17.6667 -8.66667 36.4167 -13 56.25 -13c17.3333 0 33.875 3.375 49.625 10.125s29.375 15.875 40.875 27.375s20.625 25.125 27.375 40.875s10.125 32.2917 10.125 49.625s-3.375 33.875 -10.125 49.625 +s-15.875 29.375 -27.375 40.875s-25.125 20.625 -40.875 27.375s-32.2917 10.125 -49.625 10.125c-16.3333 0 -32 -2.95834 -47 -8.875s-28.3333 -14.375 -40 -25.375l34.25 -34.5c5.16826 -5 6.33493 -10.75 3.5 -17.25c-2.83333 -6.66667 -7.75 -10 -14.75 -10h-112 +c-4.33334 0 -8.08334 1.58333 -11.25 4.75c-3.16667 3.16667 -4.75 6.91667 -4.75 11.25v112c0 7 3.33334 11.9167 10 14.75c6.5 2.8277 12.25 1.66104 17.25 -3.5l32.5 -32.25c17.8333 16.8333 38.2083 29.875 61.125 39.125s46.625 13.875 71.125 13.875 +c26 0 50.8333 -5.08334 74.5 -15.25c23.6667 -10.1668 44.0833 -23.8335 61.25 -41c17.1667 -17.1672 30.8333 -37.5839 41 -61.25c10.1667 -23.6667 15.25 -48.5 15.25 -74.5zM288 264v-112c0 -2.33333 -0.75 -4.25 -2.25 -5.75s-3.41666 -2.25 -5.75 -2.25h-80 +c-2.33333 0 -4.25 0.75 -5.75 2.25s-2.25 3.41667 -2.25 5.75v16c0 2.33333 0.75 4.25 2.25 5.75s3.41667 2.25 5.75 2.25h56v88c0 2.33334 0.75 4.25 2.25 5.75s3.41666 2.25 5.75 2.25h16c2.33334 0 4.25 -0.75 5.75 -2.25s2.25 -3.41666 2.25 -5.75z" /> + </font> +</defs></svg> diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.ttf b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.ttf new file mode 100644 index 0000000..3140fce Binary files /dev/null and b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.ttf differ diff --git a/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.woff b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.woff new file mode 100644 index 0000000..0f4b5f7 Binary files /dev/null and b/plugins/jquery.filer/assets/fonts/jquery.filer-icons/jquery-filer.woff differ diff --git a/plugins/jquery.filer/css/jquery.filer.css b/plugins/jquery.filer/css/jquery.filer.css new file mode 100644 index 0000000..1e7e5a1 --- /dev/null +++ b/plugins/jquery.filer/css/jquery.filer.css @@ -0,0 +1,438 @@ +/*! + * CSS jQuery.filer + * Copyright (c) 2015 CreativeDream + * Version: 1.0.5 (19-Nov-2015) +*/ +@import url('../assets/fonts/jquery.filer-icons/jquery-filer.css'); + +/*------------------------- + Basic configurations +-------------------------*/ +.jFiler * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.jFiler { + font-family: sans-serif; + font-size: 14px; + color: #494949; +} + +/* Helpers */ +.jFiler ul.list-inline li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +.jFiler .pull-left { + float: left; +} + +.jFiler .pull-right { + float: right; +} + +/* File Icons */ +span.jFiler-icon-file { + position: relative; + width: 57px; + height: 70px; + display: inline-block; + line-height: 70px; + text-align: center; + border-radius: 3px; + color: #fff; + font-family: sans-serif; + font-size: 13px; + font-weight: bold; + overflow: hidden; + box-shadow: 42px -55px 0 0 #A4A7AC inset; +} + +span.jFiler-icon-file:after { + position: absolute; + top: -1px; + right: -1px; + display: inline-block; + content: ''; + border-style: solid; + border-width: 16px 0 0 16px; + border-color: transparent transparent transparent #DADDE1; +} + +span.jFiler-icon-file i[class*="icon-jfi-"] { + font-size: 24px; +} + +span.jFiler-icon-file.f-image { + box-shadow: 42px -55px 0 0 #e15955 inset; +} + +span.jFiler-icon-file.f-image:after { + border-left-color: #c6393f; +} + +span.jFiler-icon-file.f-video { + box-shadow: 42px -55px 0 0 #4183d7 inset; +} + +span.jFiler-icon-file.f-video:after { + border-left-color: #446cb3; +} + +span.jFiler-icon-file.f-audio { + box-shadow: 42px -55px 0 0 #5bab6e inset; +} + +span.jFiler-icon-file.f-audio:after { + border-left-color: #448353; +} + + +/* Progress Bar */ +.jFiler-jProgressBar { + height: 8px; + background: #f1f1f1; + margin-top: 3px; + margin-bottom: 0; + overflow: hidden; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.jFiler-jProgressBar .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #50A1E9; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-transition: width 0.3s ease; + -moz-transition: width 0.3s ease; + -o-transition: width 0.3s ease; + transition: width 0.3s ease; +} + +.jFiler-jProgressBar .bar.dark { + background-color: #555; +} + +.jFiler-jProgressBar .bar.blue { + background-color: #428bca; +} + +.jFiler-jProgressBar .bar.green { + background-color: #5cb85c; +} + +.jFiler-jProgressBar .bar.orange { + background-color: #f7a923; +} + +.jFiler-jProgressBar .bar.red { + background-color: #d9534f; +} + +/* Thumbs */ +.jFiler-row:after, +.jFiler-item:after { + display: table; + line-height: 0; + content: ""; + clear: both; +} + +.jFiler-items ul { + margin: 0; + padding: 0; + list-style: none; +} + +/*------------------------- + Default Theme +-------------------------*/ +.jFiler-theme-default .jFiler-input { + position: relative; + display: block; + width: 400px; + height: 35px; + margin: 0 0 15px 0; + background: #fefefe; + border: 1px solid #cecece; + font-size: 12px; + font-family: sans-serif; + color: #888; + border-radius: 4px; + cursor: pointer; + overflow: hidden; + -webkit-box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; + -moz-box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; + box-shadow: rgba(0,0,0,.25) 0 4px 5px -5px inset; +} + +.jFiler-theme-default .jFiler-input.focused { + outline: none; + -webkit-box-shadow: 0 0 7px rgba(0,0,0,0.1); + -moz-box-shadow: 0 0 7px rgba(0,0,0,0.1); + box-shadow: 0 0 7px rgba(0,0,0,0.1); +} + +.jFiler-theme-default .jFiler.dragged .jFiler-input { + border: 1px dashed #aaaaaa; + background: #f9f9f9; +} + +.jFiler-theme-default .jFiler.dragged .jFiler-input:hover { + background: #FFF8D0; +} + +.jFiler-theme-default .jFiler.dragged .jFiler-input * { + pointer-events: none; +} + +.jFiler-theme-default .jFiler.dragged .jFiler-input .jFiler-input-caption { + width: 100%; + text-align: center; +} + +.jFiler-theme-default .jFiler.dragged .jFiler-input .jFiler-input-button { + display: none; +} + +.jFiler-theme-default .jFiler-input-caption { + display: block; + float: left; + height: 100%; + padding-top: 8px; + padding-left: 10px; + text-overflow: ellipsis; + overflow: hidden; +} + +.jFiler-theme-default .jFiler-input-button { + display: block; + float: right; + height: 100%; + padding-top: 8px; + padding-left: 15px; + padding-right: 15px; + border-left: 1px solid #ccc; + color: #666666; + text-align: center; + background-color: #fefefe; + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fefefe),to(#f1f1f1)); + background-image: -webkit-linear-gradient(top,#fefefe,#f1f1f1); + background-image: -o-linear-gradient(top,#fefefe,#f1f1f1); + background-image: linear-gradient(to bottom,#fefefe,#f1f1f1); + background-image: -moz-linear-gradient(top,#fefefe,#f1f1f1); + -webkit-transition: all .1s ease-out; + -moz-transition: all .1s ease-out; + -o-transition: all .1s ease-out; + transition: all .1s ease-out; +} + +.jFiler-theme-default .jFiler-input-button:hover { + -moz-box-shadow: inset 0 0 10px rgba(0,0,0,0.07); + -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,0.07); + box-shadow: inset 0 0 10px rgba(0,0,0,0.07); +} + +.jFiler-theme-default .jFiler-input-button:active { + background-image: -webkit-gradient(linear,0 0,0 100%,from(#f1f1f1),to(#fefefe)); + background-image: -webkit-linear-gradient(top,#f1f1f1,#fefefe); + background-image: -o-linear-gradient(top,#f1f1f1,#fefefe); + background-image: linear-gradient(to bottom,#f1f1f1,#fefefe); + background-image: -moz-linear-gradient(top,#f1f1f1,#fefefe); +} + +/*------------------------- + Thumbnails +-------------------------*/ +.jFiler-items-default .jFiler-items { + +} + +.jFiler-items-default .jFiler-item { + position: relative; + padding: 16px; + margin-bottom: 16px; + background: #f7f7f7; + color: #4d4d4c; +} + + +.jFiler-items-default .jFiler-item .jFiler-item-icon { + font-size: 32px; + color: #f5871f; + + margin-right: 15px; + margin-top: -3px; +} + +.jFiler-items-default .jFiler-item .jFiler-item-title { + font-weight: bold; +} + +.jFiler-items-default .jFiler-item .jFiler-item-others { + font-size: 12px; + color: #777; + margin-left: -5px; + margin-right: -5px; +} + +.jFiler-items-default .jFiler-item .jFiler-item-others span { + padding-left: 5px; + padding-right: 5px; +} + +.jFiler-items-default .jFiler-item-assets { + position: absolute; + display: block; + right: 16px; + top: 50%; + margin-top: -10px; +} + +.jFiler-items-default .jFiler-item-assets a { + padding: 8px 9px 8px 12px; + cursor: pointer; + background: #fafafa; + color: #777; + border-radius: 4px; + border: 1px solid #e3e3e3 +} + +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:hover, +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:active { + color: #d9534f; +} + +.jFiler-items-default .jFiler-item-assets .jFiler-item-trash-action:active { + background: transparent; +} + +/* Thumbnails: Grid */ +.jFiler-items-grid .jFiler-item { + float: left; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container { + position: relative; + margin: 0 20px 30px 0; + padding: 10px; + border: 1px solid #e1e1e1; + border-radius: 3px; + background: #fff; + -webkit-box-shadow: 0px 0px 3px rgba(0,0,0,0.06); + -moz-box-shadow: 0px 0px 3px rgba(0,0,0,0.06); + box-shadow: 0px 0px 3px rgba(0,0,0,0.06); +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb { + position: relative; + width: 160px; + height: 115px; + min-height: 115px; + border: 1px solid #e1e1e1; + overflow: hidden; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb .jFiler-item-thumb-image { + width: 100%; + height: 100%; + text-align: center; +} + +.jFiler-item .jFiler-item-container .jFiler-item-thumb img { + max-width: none; + max-height: 100%; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb span.jFiler-icon-file { + margin-top: 20px; +} + +.jFiler-items-grid .jFiler-item-thumb-image.fi-loading { + background: url('data:image/gif;base64,R0lGODlhIwAjAMQAAP////f39+/v7+bm5t7e3tbW1s7OzsXFxb29vbW1ta2traWlpZycnJSUlIyMjISEhHt7e3Nzc2tra2NjY1paWlJSUkpKSkJCQjo6OjExMSkpKRkZGRAQEAAAAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBAAeACwAAAAAIwAjAAAF5CAgjmRpnmiqrmzrvnAsz3Rto4Fwm4EYLIweQHcTKAiAQOPRI0QKRcYiEGA4qI8K9HZoGAIOSOBgCdIGBeLCMUgoBJSJjsBAxAiKRSFAQBCVBwMKGRsNQi8DBwsJhyQVGxMKjTCJk0kPjDI5AlQqBAcICFstBQqmmScFGh0dHBaWKAIEBQQDKQEKDxEQCTMBA5Y/o5oDoZYCHB1PMgIHCQacwCPACRStDTEDBrYABQg5wAgGIg4YYjQCogEGB3wI3J2+oD0G42PfN2Pc7D2JRDb/+In4t8MHwYIIEypcyLChQ4YhAAAh+QQFBAAeACwIAAgAEwATAAAFlqAnjiKSjAFJBscgLos4NIQ6JggAKLHXSDWbp6CoLRgeg0ShGwkIKQ9iITggPJFHaqA4eAYIRK0a9SwK0spl0TQkvEIJJnIlCdDCRk4lEJIGBgcHRn4jBBkciROFKgkNDg51jCJBJJU2ARocD4xNAQsGCBMcGz2FAxwZKQwVDYVwEhwOI02MAxsceJMeOgwaJ7skCX0jIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwJAAcAEgAVAAAFjqAnjmJAnihgHChqCACAJKMyoMHBeggSJ40baoC4zTwFB6IlOiwLhkCDMUIYUAUSgiA4RCZLAXPkoDQOsfFosVNjDYaBQiRmWjaaDMTdXDAYbWMJQnwiGBoOBEwmIwVeGhhzKAJ+BBsXIgoSVCcEAxkbAw8enEwAARkaYqluAqliChlLY64aQrNjAT2MKCEAIfkEBQQAHgAsBwAIABQAFAAABZqgJ45jUQBkqorGgQqIsKqteCjyTLbAsBg6UoBA8CgSIoGhGGQNAoXG4zAaNBcPxalJQhS4KwGhUCQgRYHZQGKxVBpgD8CQUCiAYEQTpZpcGFYrBgw5HgkEBg4XFHoqFx10CwMZFCIIDwl8IwscFAQXGR4NGQo6BBocRRUYHgIWGEwqBxoPHgEWoYYXVCsBCTIBqzkHaVwHvCshACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAVABQAAAWaoCeOpDECZKqKgRcY7bqanoHI6+EKSIHjCJ2oMPidCgIPQbHwGUkIBoLwJAEM1OpqQBgkC0yjwBGRRBQokfdXOASzo0MjqTrQUwQIpwM/QSYJKQoaHRUKHgtQSgwTEUIeDRcPSRQcHgiBFREiB1IkdAkaEgMUGAILFoE4AxkaRRIVLRIURTIGGQ0iExWcEzQyBzGwI05PV78rIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAgAFAAUAAAFlaAnjmRBnmgqCip6kEGbDnJqvmJAsLVIDwgEoTc6JAy0k05VSIoKiSgipgoIaIFKZ8tBVBeNBgORkEwkDt6sYECSBosUwJRybDiqxuOgTmTwCAUKIwAHAwMJDw10CxUNMRIaBQcIAmhPCgYjVAcZDx4REx5lOCoWGCIPER4Bqi0FFwwiEBIxBg9DKpqpEVS5PQUFACohACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAUABQAAAWRoCeOpEGeaCoGKmqOQlvKXgId4usR6DA+HA6kQDsxMB0Nr0hSTHxFAgJxIABogpiEI9rgVAiF2ICARCANVovAjsESKoKaNGBkMqrEojA/WDYSHgMIJAVZBwsKSwoSCyIOFx4FJg4LVwQHRCgVDQIOEAEHDi9XJwISFAIADA4iDJ1xEwoiDa2SDFA0rCO5NGwtIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAgAEwAUAAAFj6AnisNonqeBLWg7GpwmtAENcc8s6ifyGKJMp1DyIFqNjecxUEiKLpGi4slATcBW4hkdDQ6HbHd048TELtah8XCwxqjAsXXdKSyWuuiAILwmGBBABzUiBDUFCQglCBAJIgsTBAQFAQpzAwZ1BREsCwweBQt+Lg8QNQpvCAqFJwMQc6mGjy6kHrI7cB4DeiIhACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcABwASABUAAAWXoCeOI0GQaBpUl5CSRZV4QrYN71hoWBBkGpdISAI4No2BhoNLHRijy8YQmQwOpJMC2BAgIh5fgJZKSDYWYg4FWZMMhkLT7XHYeAW6wrBgLGZ0KQZjgR4IEhFqJIAeBQ8UDQUCeSNzIwcNCCIJDwMDJwgGawSZAQgzBAiWIwELDSIHmh6xOQyiAKciV4oeAHO0IwB0ArweIQAh+QQFBAAeACwAAAAAAQABAAAFA6AXAgAh+QQFBAAeACwHAAcAEAAVAAAFjKAnjuMwkKgnjFJVosSEeMGVrcc1j8TlehVMIIDh7EaMzMKDuTE4k4DHsCiIKJnCI0LYcE6ehMWyPDxGgshyZL5MUqID6uCAowsEwsouWlTGFAR8HgUJCglHgyNWigF0dXYzBAwPCoJgcAUKBnELAgKYcAObHgdyfIYiBQcAdgIJjAanrq0AsoojQyghACH5BAUEAB4ALAAAAAABAAEAAAUDoBcCACH5BAUEAB4ALAcACAAUABQAAAWYoCeKwQhF5aiqA3SIlDVW7yoOlCRKlVhtNZtHYUkIKBfPYoNaFRADUUTWeAwyGYHHAFmIDhIJImBorBIFB6cDSZUnEGEA08k0UiPDQrsSTB58HgEDhEIqAHgIERESVoY2BAcIBwaPlh5Rl04KCnhnKwMJDFCelgMIBAAeT3hBNqoeAggFIgiaX7ZblZoBB5lbqoG3wzbCKyEAIfkEBQQAHgAsBwAHABUAEwAABZygJ46jIJBoSjZPqa6GGEmBZ0zx60Gt90QiSSb3QkgOHskkkMj0UAOkyCEhLBiey2X0SIwMLKRVAPAEHggCY8N5egiKB6OGAmwtC1UhQScFIgt9JAKCKQUICQkxBw2NCycqBhsdlBgBAwUGBgRlKgMPExMSgSSdKmQvBAgIOqwoAgeKkDopBgMiMbOutCgGSLe8IlIeSKbBI1LAKCEAIfkEBQQAHgAsAAAAAAEAAQAABQOgFwIAIfkEBQQAHgAsAAAAAAEAAQAABQOgFwIAIfkECQQAHgAsAAAAACMAIwAABbWgJ45kaZ5oqq5s675wLM90baPBvS6MTgoKgqjxEBEihZuAsRAxHKJHJXk7NAwBB8RzsPRqBYFo4RgkFALKxMhAxAiKBdXtAXgah4Eis2nIBgcLCSgVGxMKNYAoD4MzAgI5KgQHCAhULQUKmgmRJgUaIhwWLwIEBQQDKQEKDxEQCXYxnSUBcjapKAIcHUg+JgkUHRx+YB6zIw4YEMc2QiMBzDB0HgbGvifR19rb3N3e3+Dh4ikhADs=') no-repeat center; + width: 100%; + height: 100%; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info { + position: absolute; + bottom: -10%; + left: 0; + width: 100%; + color: #fff; + padding: 6px 10px; + background: -moz-linear-gradient(bottom,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%); + background: -webkit-linear-gradient(bottom,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%); + background: -o-linear-gradient(bottom,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%); + background: -ms-linear-gradient(bottom,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%); + background: linear-gradient(to top,rgba(0,0,0,1) 0,rgba(0,0,0,0) 100%); + z-index: 9; + opacity: 0; + filter: alpha(opacity(0)); + -webkit-transition: all 0.12s; + -moz-transition: all 0.12s; + transition: all 0.12s; +} + +.jFiler-items-grid .jFiler-no-thumbnail.jFiler-item .jFiler-item-container .jFiler-item-info { + background: rgba(0,0,0,0.55); +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-thumb:hover .jFiler-item-info { + bottom: 0; + opacity: 1; + filter: aplpha(opacity(100)); +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info .jFiler-item-title { + display: block; + font-weight: bold; + word-break: break-all; + line-height: 1; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-info .jFiler-item-others { + display: inline-block; + font-size: 10px; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets { + margin-top: 10px; + color: #999; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .text-success { + color: #3C763D +} + +.jFiler-items-grid .jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .text-error { + color: #A94442 +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .jFiler-jProgressBar { + width: 120px; + margin-left: -5px; +} + +.jFiler-items-grid .jFiler-item .jFiler-item-container .jFiler-item-assets .jFiler-item-others { + font-size: 12px; +} + +.jFiler-items-grid .jFiler-item-trash-action:hover { + cursor: pointer; + color: #d9534f; +} \ No newline at end of file diff --git a/plugins/jquery.filer/css/themes/jquery.filer-dragdropbox-theme.css b/plugins/jquery.filer/css/themes/jquery.filer-dragdropbox-theme.css new file mode 100644 index 0000000..13cebe6 --- /dev/null +++ b/plugins/jquery.filer/css/themes/jquery.filer-dragdropbox-theme.css @@ -0,0 +1,192 @@ +/*! + * CSS jQuery.filer + * Theme: DragDropBox + * Copyright (c) 2015 CreativeDream + * Version: 1.0.5 (15-Nov-2015) +*/ + +/*------------------------- + Input +-------------------------*/ +.jFiler-input-dragDrop { + display: block; + width: 343px; + margin: 0 auto 25px auto; + padding: 25px; + color: #8d9499; + color: #97A1A8; + background: #fff; + border: 2px dashed #C8CBCE; + text-align: center; + -webkit-transition: box-shadow 0.3s, + border-color 0.3s; + -moz-transition: box-shadow 0.3s, + border-color 0.3s; + transition: box-shadow 0.3s, + border-color 0.3s; +} + +.jFiler.dragged .jFiler-input-dragDrop { + border-color: #aaa; + box-shadow: inset 0 0 20px rgba(0,0,0,.08); +} + +.jFiler.dragged .jFiler-input-dragDrop * { + pointer-events: none; +} + +.jFiler.dragged .jFiler-input-icon { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.jFiler.dragged .jFiler-input-text, +.jFiler.dragged .jFiler-input-choose-btn { + filter: alpha(opacity=30); + opacity: 0.3; +} + +.jFiler-input-dragDrop .jFiler-input-icon { + font-size: 48px; + margin-top: -10px; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + transition: all 0.3s ease; +} + +.jFiler-input-text h3 { + margin: 0; + font-size: 18px; +} + +.jFiler-input-text span { + font-size: 12px; +} + +.jFiler-input-choose-btn { + display: inline-block; + padding: 8px 14px; + outline: none; + cursor: pointer; + text-decoration: none; + text-align: center; + white-space: nowrap; + font-size: 12px; + font-weight: bold; + color: #8d9496; + border-radius: 3px; + border: 1px solid #c6c6c6; + vertical-align: middle; + background-color: #fff; + box-shadow: 0px 1px 5px rgba(0,0,0,0.05); + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + transition: all 0.2s; +} + +.jFiler-input-choose-btn:hover, +.jFiler-input-choose-btn:active { + color: inherit; +} + +.jFiler-input-choose-btn:active { + background-color: #f5f5f5; +} + +/* gray */ +.jFiler-input-choose-btn.gray { + background-image: -webkit-gradient(linear,0 0,0 100%,from(#fcfcfc),to(#f5f5f5)); + background-image: -webkit-linear-gradient(top,#fcfcfc,#f5f5f5); + background-image: -o-linear-gradient(top,#fcfcfc,#f5f5f5); + background-image: linear-gradient(to bottom,#fcfcfc,#f5f5f5); + background-image: -moz-linear-gradient(top,#fcfcfc,#f5f5f5); +} + +.jFiler-input-choose-btn.gray:hover { + filter: alpha(opacity=87); + opacity: 0.87; +} + +.jFiler-input-choose-btn.gray:active { + background-color: #f5f5f5; + background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#fcfcfc)); + background-image: -webkit-linear-gradient(top,#f5f5f5,#fcfcfc); + background-image: -o-linear-gradient(top,#f5f5f5,#fcfcfc); + background-image: linear-gradient(to bottom,#f5f5f5,#fcfcfc); + background-image: -moz-linear-gradient(top,#f5f5f5,#fcfcfc); +} + +/* blue */ +.jFiler-input-choose-btn.blue { + color: #008BFF; + border: 1px solid #008BFF; +} + +.jFiler-input-choose-btn.blue:hover { + background: #008BFF; +} + +.jFiler-input-choose-btn.blue:active { + background: #008BFF; +} + +/* green */ +.jFiler-input-choose-btn.green { + color: #27ae60; + border: 1px solid #27ae60; +} + +.jFiler-input-choose-btn.green:hover { + background: #27ae60; +} + +.jFiler-input-choose-btn.green:active { + background: #27ae60; +} + +/* red */ +.jFiler-input-choose-btn.red { + color: #ed5a5a; + border: 1px solid #ed5a5a; +} + +.jFiler-input-choose-btn.red:hover { + background: #ed5a5a; +} + +.jFiler-input-choose-btn.red:active { + background: #E05252; +} + +/* black */ +.jFiler-input-choose-btn.black { + color: #555; + border: 1px solid #555; +} + +.jFiler-input-choose-btn.black:hover { + background: #555; +} + +.jFiler-input-choose-btn.black:active { + background: #333; +} + +.jFiler-input-choose-btn.blue:hover, +.jFiler-input-choose-btn.green:hover, +.jFiler-input-choose-btn.red:hover, +.jFiler-input-choose-btn.black:hover { + border-color: transparent; + color: #fff; +} + +.jFiler-input-choose-btn.blue:active, +.jFiler-input-choose-btn.green:active, +.jFiler-input-choose-btn.red:active, +.jFiler-input-choose-btn.black:active { + border-color: transparent; + color: #fff; + filter: alpha(opacity=87); + opacity: 0.87; +} \ No newline at end of file diff --git a/plugins/jquery.filer/js/custom.js b/plugins/jquery.filer/js/custom.js new file mode 100644 index 0000000..a3dbaae --- /dev/null +++ b/plugins/jquery.filer/js/custom.js @@ -0,0 +1,130 @@ +$(document).ready(function() { + + //Example 1 + $('#filer_input').filer({ + showThumbs: true + }); + + //Example 2 + $("#filer_input2").filer({ + limit: null, + maxSize: null, + extensions: null, + changeInput: '<div class="jFiler-input-dragDrop"><div class="jFiler-input-inner"><div class="jFiler-input-icon"><i class="icon-jfi-cloud-up-o"></i></div><div class="jFiler-input-text"><h3>Drag&Drop files here</h3> <span style="display:inline-block; margin: 15px 0">or</span></div><a class="jFiler-input-choose-btn blue">Browse Files</a></div></div>', + showThumbs: true, + theme: "dragdropbox", + templates: { + box: '<ul class="jFiler-items-list jFiler-items-grid"></ul>', + item: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li>{{fi-progressBar}}</li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + itemAppend: '<li class="jFiler-item">\ + <div class="jFiler-item-container">\ + <div class="jFiler-item-inner">\ + <div class="jFiler-item-thumb">\ + <div class="jFiler-item-status"></div>\ + <div class="jFiler-item-info">\ + <span class="jFiler-item-title"><b title="{{fi-name}}">{{fi-name | limitTo: 25}}</b></span>\ + <span class="jFiler-item-others">{{fi-size2}}</span>\ + </div>\ + {{fi-image}}\ + </div>\ + <div class="jFiler-item-assets jFiler-row">\ + <ul class="list-inline pull-left">\ + <li><span class="jFiler-item-others">{{fi-icon}}</span></li>\ + </ul>\ + <ul class="list-inline pull-right">\ + <li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li>\ + </ul>\ + </div>\ + </div>\ + </div>\ + </li>', + progressBar: '<div class="bar"></div>', + itemAppendToEnd: false, + removeConfirmation: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + dragDrop: { + dragEnter: null, + dragLeave: null, + drop: null, + }, + uploadFile: { + url: "./php/upload.php", + data: null, + type: 'POST', + enctype: 'multipart/form-data', + beforeSend: function(){}, + success: function(data, el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-success\"><i class=\"icon-jfi-check-circle\"></i> Success</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + error: function(el){ + var parent = el.find(".jFiler-jProgressBar").parent(); + el.find(".jFiler-jProgressBar").fadeOut("slow", function(){ + $("<div class=\"jFiler-item-others text-error\"><i class=\"icon-jfi-minus-circle\"></i> Error</div>").hide().appendTo(parent).fadeIn("slow"); + }); + }, + statusCode: null, + onProgress: null, + onComplete: null + }, + files: null, + addMore: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + afterShow: null, + onRemove: function(itemEl, file, id, listEl, boxEl, newInputEl, inputEl){ + var file = file.name; + $.post('./php/remove_file.php', {file: file}); + }, + onEmpty: null, + options: null, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB." + } + } + }); + +}); diff --git a/plugins/jquery.filer/js/jquery.filer.js b/plugins/jquery.filer/js/jquery.filer.js new file mode 100644 index 0000000..c8a292e --- /dev/null +++ b/plugins/jquery.filer/js/jquery.filer.js @@ -0,0 +1,991 @@ +/*! + * jQuery.filer + * Copyright (c) 2015 CreativeDream + * Website: https://github.com/CreativeDream/jquery.filer + * Version: 1.0.5 (19-Nov-2015) + * Requires: jQuery v1.7.1 or later + */ +(function($) { + "use strict"; + $.fn.filer = function(q) { + return this.each(function(t, r) { + var s = $(r), + b = '.jFiler', + p = $(), + o = $(), + l = $(), + sl = [], + n_f = $.isFunction(q) ? q(s, $.fn.filer.defaults) : q, + n = n_f && $.isPlainObject(n_f) ? $.extend(true, {}, $.fn.filer.defaults, n_f) : $.fn.filer.defaults, + f = { + init: function() { + s.wrap('<div class="jFiler"></div>'); + f._set('props'); + s.prop("jFiler").boxEl = p = s.closest(b); + f._changeInput(); + }, + _bindInput: function() { + if(n.changeInput && o.size() > 0) { + o.bind("click", f._clickHandler); + } + s.on({ + "focus": function() { + o.addClass('focused'); + }, + "blur": function() { + o.removeClass('focused'); + }, + "change": function() { + f._onChange(); + } + }); + if(n.dragDrop) { + (o.length > 0 ? o : s) + .bind("drop", f._dragDrop.drop) + .bind("dragover", f._dragDrop.dragEnter) + .bind("dragleave", f._dragDrop.dragLeave); + } + if(n.uploadFile && n.clipBoardPaste) { + $(window) + .on("paste", f._clipboardPaste); + } + }, + _unbindInput: function() { + if(n.changeInput && o.size() > 0) { + o.unbind("click", f._clickHandler); + } + }, + _clickHandler: function() { + s.click() + }, + _applyAttrSettings: function() { + var d = ["name", "limit", "maxSize", "extensions", "changeInput", "showThumbs", "appendTo", "theme", "addMore", "excludeName", "files", "uploadUrl", "uploadData", "options"]; + for(var k in d) { + var j = "data-jfiler-" + d[k]; + if(f._assets.hasAttr(j)) { + switch(d[k]) { + case "changeInput": + case "showThumbs": + case "addMore": + n[d[k]] = (["true", "false"].indexOf(s.attr(j)) > -1 ? s.attr(j) == "true" : s.attr(j)); + break; + case "extensions": + n[d[k]] = s.attr(j) + .replace(/ /g, '') + .split(","); + break; + case "uploadUrl": + if(n.uploadFile) n.uploadFile.url = s.attr(j); + break; + case "uploadData": + if(n.uploadFile) n.uploadFile.data = JSON.parse(s.attr(j)); + break; + case "files": + case "options": + n[d[k]] = JSON.parse(s.attr(j)); + break; + default: + n[d[k]] = s.attr(j); + } + s.removeAttr(j); + } + } + }, + _changeInput: function() { + f._applyAttrSettings(); + n.beforeRender != null && typeof n.beforeRender == "function" ? n.beforeRender(p, s) : null; + if(n.theme) { + p.addClass('jFiler-theme-' + n.theme); + } + if(s.get(0) + .tagName.toLowerCase() != "input" && s.get(0) + .type != "file") { + o = s; + s = $("<input type=\"file\" name=\"" + n.name + "\" />"); + s.css({ + position: "absolute", + left: "-9999px", + top: "-9999px", + "z-index": "-9999" + }); + p.prepend(s); + f._isGn = s; + } else { + if(n.changeInput) { + switch(typeof n.changeInput) { + case "boolean": + o = $('<div class="jFiler-input"><div class="jFiler-input-caption"><span>' + n.captions.feedback + '</span></div><div class="jFiler-input-button">' + n.captions.button + '</div></div>"'); + break; + case "string": + case "object": + o = $(n.changeInput); + break; + case "function": + o = $(n.changeInput(p, s, n)); + break; + } + s.after(o); + s.css({ + position: "absolute", + left: "-9999px", + top: "-9999px", + "z-index": "-9999" + }); + } + } + s.prop("jFiler").newInputEl = o; + if(!n.limit || (n.limit && n.limit >= 2)) { + s.attr("multiple", "multiple"); + s.attr("name") + .slice(-2) != "[]" ? s.attr("name", s.attr("name") + "[]") : null; + } + f._bindInput(); + if(n.files) { + f._append(false, { + files: n.files + }); + } + n.afterRender != null && typeof n.afterRender == "function" ? n.afterRender(l, p, o, s) : null; + }, + _clear: function() { + f.files = null; + s.prop("jFiler") + .files = null; + if(!n.uploadFile && !n.addMore) { + f._reset(); + } + f._set('feedback', (f._itFl && f._itFl.length > 0 ? f._itFl.length + ' ' + n.captions.feedback2 : n.captions.feedback)); + n.onEmpty != null && typeof n.onEmpty == "function" ? n.onEmpty(p, o, s) : null + }, + _reset: function(a) { + if(!a) { + if(!n.uploadFile && n.addMore) { + for(var i = 0; i < sl.length; i++) { + sl[i].remove(); + } + sl = []; + f._unbindInput(); + if(f._isGn) { + s = f._isGn; + } else { + s = $(r); + } + f._bindInput(); + } + f._set('input', ''); + } + f._itFl = []; + f._itFc = null; + f._ajFc = 0; + f._set('props'); + s.prop("jFiler") + .files_list = f._itFl; + s.prop("jFiler") + .current_file = f._itFc; + if(!f._prEr) { + f._itFr = []; + p.find("input[name^='jfiler-items-exclude-']:hidden") + .remove(); + } + l.fadeOut("fast", function() { + $(this) + .remove(); + }); + s.prop("jFiler").listEl = l = $(); + }, + _set: function(element, value) { + switch(element) { + case 'input': + s.val(""); + break; + case 'feedback': + if(o.length > 0) { + o.find('.jFiler-input-caption span') + .html(value); + } + break; + case 'props': + if(!s.prop("jFiler")){ + s.prop("jFiler", { + options: n, + listEl: l, + boxEl: p, + newInputEl: o, + inputEl: s, + files: f.files, + files_list: f._itFl, + current_file: f._itFc, + append: function(data) { + return f._append(false, { + files: [data] + }); + }, + remove: function(id) { + f._remove(null, { + binded: true, + data: { + id: id + } + }); + return true; + }, + reset: function() { + f._reset(); + f._clear(); + return true; + }, + retry: function(data) { + return f._retryUpload(data); + } + }) + } + } + }, + _filesCheck: function() { + var s = 0; + if(n.limit && f.files.length + f._itFl.length > n.limit) { + alert(f._assets.textParse(n.captions.errors.filesLimit)); + return false + } + for(var t = 0; t < f.files.length; t++) { + var x = f.files[t].name.split(".") + .pop() + .toLowerCase(), + file = f.files[t], + m = { + name: file.name, + size: file.size, + size2: f._assets.bytesToSize(file.size), + type: file.type, + ext: x + }; + if(n.extensions != null && $.inArray(x, n.extensions) == -1) { + alert(f._assets.textParse(n.captions.errors.filesType, m)); + return false; + break + } + if(n.maxSize != null && f.files[t].size > n.maxSize * 1048576) { + alert(f._assets.textParse(n.captions.errors.filesSize, m)); + return false; + break + } + if(file.size == 4096 && file.type.length == 0) { + return false; + break + } + s += f.files[t].size + } + if(n.maxSize != null && s >= Math.round(n.maxSize * 1048576)) { + alert(f._assets.textParse(n.captions.errors.filesSizeAll)); + return false + } + if((n.addMore || n.uploadFile)) { + var m = f._itFl.filter(function(a, b) { + if(a.file.name == file.name && a.file.size == file.size && a.file.type == file.type && (file.lastModified ? a.file.lastModified == file.lastModified : true)) { + return true; + } + }); + if(m.length > 0) { + return false + } + } + return true; + }, + _thumbCreator: { + create: function(i) { + var file = f.files[i], + id = (f._itFc ? f._itFc.id : i), + name = file.name, + size = file.size, + type = file.type.split("/", 1) + .toString() + .toLowerCase(), + ext = name.indexOf(".") != -1 ? name.split(".") + .pop() + .toLowerCase() : "", + progressBar = n.uploadFile ? '<div class="jFiler-jProgressBar">' + n.templates.progressBar + '</div>' : '', + opts = { + id: id, + name: name, + size: size, + size2: f._assets.bytesToSize(size), + type: type, + extension: ext, + icon: f._assets.getIcon(ext, type), + icon2: f._thumbCreator.generateIcon({ + type: type, + extension: ext + }), + image: '<div class="jFiler-item-thumb-image fi-loading"></div>', + progressBar: progressBar, + _appended: file._appended + }, + html = ""; + if(file.opts) { + opts = $.extend({}, file.opts, opts); + } + html = $(f._thumbCreator.renderContent(opts)) + .attr("data-jfiler-index", id); + html.get(0) + .jfiler_id = id; + f._thumbCreator.renderFile(file, html, opts); + if(file.forList) { + return html; + } + f._itFc.html = html; + html.hide()[n.templates.itemAppendToEnd ? "appendTo" : "prependTo"](l.find(n.templates._selectors.list)) + .show(); + if(!file._appended) { + f._onSelect(i); + } + }, + renderContent: function(opts) { + return f._assets.textParse((opts._appended ? n.templates.itemAppend : n.templates.item), opts); + }, + renderFile: function(file, html, opts) { + if(html.find('.jFiler-item-thumb-image') + .size() == 0) { + return false; + } + if(file.file && opts.type == "image") { + var g = '<img src="' + file.file + '" draggable="false" />', + m = html.find('.jFiler-item-thumb-image.fi-loading'); + $(g) + .error(function() { + g = f._thumbCreator.generateIcon(opts); + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(g); + }) + .load(function() { + m.removeClass('fi-loading') + .html(g); + }); + return true; + } + if(window.File && window.FileList && window.FileReader && opts.type == "image" && opts.size < 6e+6) { + var y = new FileReader; + y.onload = function(e) { + var g = '<img src="' + e.target.result + '" draggable="false" />', + m = html.find('.jFiler-item-thumb-image.fi-loading'); + $(g) + .error(function() { + g = f._thumbCreator.generateIcon(opts); + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(g); + }) + .load(function() { + m.removeClass('fi-loading') + .html(g); + }); + }; + y.readAsDataURL(file); + } else { + var g = f._thumbCreator.generateIcon(opts), + m = html.find('.jFiler-item-thumb-image.fi-loading'); + html.addClass('jFiler-no-thumbnail'); + m.removeClass('fi-loading') + .html(g); + } + }, + generateIcon: function(obj) { + var m = new Array(3); + if(obj && obj.type && obj.extension) { + switch(obj.type) { + case "image": + m[0] = "f-image"; + m[1] = "<i class=\"icon-jfi-file-image\"></i>" + break; + case "video": + m[0] = "f-video"; + m[1] = "<i class=\"icon-jfi-file-video\"></i>" + break; + case "audio": + m[0] = "f-audio"; + m[1] = "<i class=\"icon-jfi-file-audio\"></i>" + break; + default: + m[0] = "f-file f-file-ext-" + obj.extension; + m[1] = (obj.extension.length > 0 ? "." + obj.extension : ""); + m[2] = 1 + } + } else { + m[0] = "f-file"; + m[1] = (obj.extension && obj.extension.length > 0 ? "." + obj.extension : ""); + m[2] = 1 + } + var el = '<span class="jFiler-icon-file ' + m[0] + '">' + m[1] + '</span>'; + if(m[2] == 1) { + var c = f._assets.text2Color(obj.extension); + if(c) { + var j = $(el) + .appendTo("body"), + h = j.css("box-shadow"); + h = c + h.substring(h.replace(/^.*(rgba?\([^)]+\)).*$/, '$1') + .length, h.length); + j.css({ + '-webkit-box-shadow': h, + '-moz-box-shadow': h, + 'box-shadow': h + }) + .attr('style', '-webkit-box-shadow: ' + h + '; -moz-box-shadow: ' + h + '; box-shadow: ' + h + ';'); + el = j.prop('outerHTML'); + j.remove(); + } + } + return el; + }, + _box: function(params) { + if(n.beforeShow != null && typeof n.beforeShow == "function" ? !n.beforeShow(f.files, l, p, o, s) : false) { + return false + } + if(l.length < 1) { + if(n.appendTo) { + var appendTo = $(n.appendTo); + } else { + var appendTo = p; + } + appendTo.find('.jFiler-items') + .remove(); + l = $('<div class="jFiler-items jFiler-row"></div>'); + s.prop("jFiler").listEl = l; + l.append(f._assets.textParse(n.templates.box)) + .appendTo(appendTo); + l.on('click', n.templates._selectors.remove, function(e) { + e.preventDefault(); + var cf = n.templates.removeConfirmation ? confirm(n.captions.removeConfirmation) : true; + if(cf) { + f._remove(params ? params.remove.event : e, params ? params.remove.el : $(this) + .closest(n.templates._selectors.item)); + } + }); + } + for(var i = 0; i < f.files.length; i++) { + if(!f.files[i]._appended) f.files[i]._choosed = true; + f._addToMemory(i); + f._thumbCreator.create(i); + } + } + }, + _upload: function(i) { + var el = f._itFc.html, + formData = new FormData(); + formData.append(s.attr('name'), f._itFc.file, (f._itFc.file.name ? f._itFc.file.name : false)); + if(n.uploadFile.data != null && $.isPlainObject(n.uploadFile.data)) { + for(var k in n.uploadFile.data) { + formData.append(k, n.uploadFile.data[k]) + } + } + f._ajax.send(el, formData, f._itFc); + }, + _ajax: { + send: function(el, formData, c) { + c.ajax = $.ajax({ + url: n.uploadFile.url, + data: formData, + type: n.uploadFile.type, + enctype: n.uploadFile.enctype, + xhr: function() { + var myXhr = $.ajaxSettings.xhr(); + if(myXhr.upload) { + myXhr.upload.addEventListener("progress", function(e) { + f._ajax.progressHandling(e, el) + }, false) + } + return myXhr + }, + complete: function(jqXHR, textStatus) { + c.ajax = false; + f._ajFc++; + if(f._ajFc >= f.files.length) { + f._ajFc = 0; + n.uploadFile.onComplete != null && typeof n.uploadFile.onComplete == "function" ? n.uploadFile.onComplete(l, p, o, s, jqXHR, textStatus) : null; + } + }, + beforeSend: function(jqXHR, settings) { + return n.uploadFile.beforeSend != null && typeof n.uploadFile.beforeSend == "function" ? n.uploadFile.beforeSend(el, l, p, o, s, c.id, jqXHR, settings) : true; + }, + success: function(data, textStatus, jqXHR) { + c.uploaded = true; + n.uploadFile.success != null && typeof n.uploadFile.success == "function" ? n.uploadFile.success(data, el, l, p, o, s, c.id, textStatus, jqXHR) : null + }, + error: function(jqXHR, textStatus, errorThrown) { + c.uploaded = false; + n.uploadFile.error != null && typeof n.uploadFile.error == "function" ? n.uploadFile.error(el, l, p, o, s, c.id, jqXHR, textStatus, errorThrown) : null + }, + statusCode: n.uploadFile.statusCode, + cache: false, + contentType: false, + processData: false + }); + return c.ajax; + }, + progressHandling: function(e, el) { + if(e.lengthComputable) { + var t = Math.round(e.loaded * 100 / e.total) + .toString(); + n.uploadFile.onProgress != null && typeof n.uploadFile.onProgress == "function" ? n.uploadFile.onProgress(t, el, l, p, o, s) : null; + el.find('.jFiler-jProgressBar') + .find(n.templates._selectors.progressBar) + .css("width", t + "%") + } + } + }, + _dragDrop: { + dragEnter: function(e) { + e.preventDefault(); + e.stopPropagation(); + p.addClass('dragged'); + f._set('feedback', n.captions.drop); + n.dragDrop.dragEnter != null && typeof n.dragDrop.dragEnter == "function" ? n.dragDrop.dragEnter(e, o, s, p) : null; + }, + dragLeave: function(e) { + e.preventDefault(); + e.stopPropagation(); + if(!f._dragDrop._dragLeaveCheck(e)) { + return false + } + p.removeClass('dragged'); + f._set('feedback', n.captions.feedback); + n.dragDrop.dragLeave != null && typeof n.dragDrop.dragLeave == "function" ? n.dragDrop.dragLeave(e, o, s, p) : null; + }, + drop: function(e) { + e.preventDefault(); + p.removeClass('dragged'); + f._set('feedback', n.captions.feedback); + if(e && e.originalEvent && e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files.length > 0) { + f._onChange(e, e.originalEvent.dataTransfer.files); + } + n.dragDrop.drop != null && typeof n.dragDrop.drop == "function" ? n.dragDrop.drop(e.originalEvent.dataTransfer.files, e, o, s, p) : null; + }, + _dragLeaveCheck: function(e) { + var related = e.relatedTarget, + inside = false; + if(related !== o) { + if(related) { + inside = $.contains(o, related); + } + if(inside) { + return false; + } + } + return true; + } + }, + _clipboardPaste: function(e, fromDrop) { + if(!fromDrop && (!e.originalEvent.clipboardData && !e.originalEvent.clipboardData.items)) { + return + } + if(fromDrop && (!e.originalEvent.dataTransfer && !e.originalEvent.dataTransfer.items)) { + return + } + if(f._clPsePre) { + return + } + var items = (fromDrop ? e.originalEvent.dataTransfer.items : e.originalEvent.clipboardData.items), + b64toBlob = function(b64Data, contentType, sliceSize) { + contentType = contentType || ''; + sliceSize = sliceSize || 512; + var byteCharacters = atob(b64Data); + var byteArrays = []; + for(var offset = 0; offset < byteCharacters.length; offset += sliceSize) { + var slice = byteCharacters.slice(offset, offset + sliceSize); + var byteNumbers = new Array(slice.length); + for(var i = 0; i < slice.length; i++) { + byteNumbers[i] = slice.charCodeAt(i); + } + var byteArray = new Uint8Array(byteNumbers); + byteArrays.push(byteArray); + } + var blob = new Blob(byteArrays, { + type: contentType + }); + return blob; + }; + if(items) { + for(var i = 0; i < items.length; i++) { + if(items[i].type.indexOf("image") !== -1 || items[i].type.indexOf("text/uri-list") !== -1) { + if(fromDrop) { + try { + window.atob(e.originalEvent.dataTransfer.getData("text/uri-list") + .toString() + .split(',')[1]); + } catch(e) { + return; + } + } + var blob = (fromDrop ? b64toBlob(e.originalEvent.dataTransfer.getData("text/uri-list") + .toString() + .split(',')[1], "image/png") : items[i].getAsFile()); + blob.name = Math.random() + .toString(36) + .substring(5); + blob.name += blob.type.indexOf("/") != -1 ? "." + blob.type.split("/")[1].toString() + .toLowerCase() : ".png"; + f._onChange(e, [blob]); + f._clPsePre = setTimeout(function() { + delete f._clPsePre + }, 1000); + } + } + } + }, + _onSelect: function(i) { + if(n.uploadFile && !$.isEmptyObject(n.uploadFile)) { + f._upload(i) + } + n.onSelect != null && typeof n.onSelect == "function" ? n.onSelect(f.files[i], f._itFc.html, l, p, o, s) : null; + if(i + 1 >= f.files.length) { + n.afterShow != null && typeof n.afterShow == "function" ? n.afterShow(l, p, o, s) : null + } + }, + _onChange: function(e, d) { + if(!d) { + if(!s.get(0) + .files || typeof s.get(0) + .files == "undefined" || s.get(0) + .files.length == 0) { + if(!n.uploadFile && !n.addMore) { + f._set('input', ''); + f._clear(); + } + return false + } + f.files = s.get(0) + .files; + } else { + if(!d || d.length == 0) { + f._set('input', ''); + f._clear(); + return false + } + f.files = d; + } + if(!n.uploadFile && !n.addMore) { + f._reset(true); + } + s.prop("jFiler") + .files = f.files; + if(!f._filesCheck() || (n.beforeSelect != null && typeof n.beforeSelect == "function" ? !n.beforeSelect(f.files, l, p, o, s) : false)) { + f._set('input', ''); + f._clear(); + return false + } + f._set('feedback', f.files.length + f._itFl.length + ' ' + n.captions.feedback2); + if(n.showThumbs) { + f._thumbCreator._box(); + } else { + for(var i = 0; i < f.files.length; i++) { + f.files[i]._choosed = true; + f._addToMemory(i); + f._onSelect(i); + } + } + if(!n.uploadFile && n.addMore) { + var elem = $('<input type="file" />'); + var attributes = s.prop("attributes"); + $.each(attributes, function() { + elem.attr(this.name, this.value); + }); + s.after(elem); + f._unbindInput(); + sl.push(elem); + s = elem; + f._bindInput(); + f._set('props'); + } + }, + _append: function(e, data) { + var files = (!data ? false : data.files); + if(!files || files.length <= 0) { + return; + } + f.files = files; + s.prop("jFiler") + .files = f.files; + if(n.showThumbs) { + for(var i = 0; i < f.files.length; i++) { + f.files[i]._appended = true; + } + f._thumbCreator._box(); + } + }, + _getList: function(e, data) { + var files = (!data ? false : data.files); + if(!files || files.length <= 0) { + return; + } + f.files = files; + s.prop("jFiler") + .files = f.files; + if(n.showThumbs) { + var returnData = []; + for(var i = 0; i < f.files.length; i++) { + f.files[i].forList = true; + returnData.push(f._thumbCreator.create(i)); + } + if(data.callback) { + data.callback(returnData, l, p, o, s); + } + } + }, + _retryUpload: function(e, data) { + var id = parseInt(typeof data == "object" ? data.attr("data-jfiler-index") : data), + obj = f._itFl.filter(function(value, key) { + return value.id == id; + }); + if(obj.length > 0) { + if(n.uploadFile && !$.isEmptyObject(n.uploadFile) && !obj[0].uploaded) { + f._itFc = obj[0]; + s.prop("jFiler") + .current_file = f._itFc; + f._upload(id); + return true; + } + } else { + return false; + } + }, + _remove: function(e, el) { + if(el.binded) { + if(typeof(el.data.id) != "undefined") { + el = l.find(n.templates._selectors.item + "[data-jfiler-index='" + el.data.id + "']"); + if(el.size() == 0) { + return false + } + } + if(el.data.el) { + el = el.data.el; + } + } + var attrId = el.get(0) + .jfiler_id || el.attr('data-jfiler-index'), + id = null, + excl_input = function(id) { + var input = p.find("input[name^='jfiler-items-exclude-']:hidden") + .first(), + item = f._itFl[id], + val = []; + if(input.size() == 0) { + input = $('<input type="hidden" name="jfiler-items-exclude-' + (n.excludeName ? n.excludeName : (s.attr("name") + .slice(-2) != "[]" ? s.attr("name") : s.attr("name") + .substring(0, s.attr("name") + .length - 2)) + "-" + t) + '">'); + input.appendTo(p); + } + if(item.file._choosed || item.file._appended || item.uploaded) { + f._prEr = true; + f._itFr.push(item); + if(n.addMore) { + var current_input = item.input, + count_same_input = 0; + f._itFl.filter(function(val, index) { + if(val.file._choosed && val.input.get(0) == current_input.get(0)) count_same_input++; + }); + if(count_same_input == 1) { + f._itFr = f._itFr.filter(function(val, index) { + return val.file._choosed ? val.input.get(0) != current_input.get(0) : true; + }); + current_input.val(""); + f._prEr = false; + } + } + for(var i = 0; i < f._itFr.length; i++) { + val.push(f._itFr[i].file.name); + } + val = JSON.stringify(val); + input.val(val); + } + }, + callback = function(el, id) { + excl_input(id); + f._itFl.splice(id, 1); + if(f._itFl.length < 1) { + f._reset(); + f._clear(); + } else { + f._set('feedback', f._itFl.length + ' ' + n.captions.feedback2); + } + el.fadeOut("fast", function() { + $(this) + .remove(); + }); + }; + for(var key in f._itFl) { + if(key === 'length' || !f._itFl.hasOwnProperty(key)) continue; + if(f._itFl[key].id == attrId) { + id = key; + } + } + if(!f._itFl.hasOwnProperty(id)) { + return false + } + if(f._itFl[id].ajax) { + f._itFl[id].ajax.abort(); + callback(el, id); + return; + } + n.onRemove != null && typeof n.onRemove == "function" ? n.onRemove(el, f._itFl[id].file, id, l, p, o, s) : null; + callback(el, id); + }, + _addToMemory: function(i) { + f._itFl.push({ + id: f._itFl.length, + file: f.files[i], + html: $(), + ajax: false, + uploaded: false, + }); + if(n.addMore && !f.files[i]._appended) f._itFl[f._itFl.length - 1].input = s; + f._itFc = f._itFl[f._itFl.length - 1]; + s.prop("jFiler") + .files_list = f._itFl; + s.prop("jFiler") + .current_file = f._itFc; + }, + _assets: { + bytesToSize: function(bytes) { + if(bytes == 0) return '0 Byte'; + var k = 1000; + var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + var i = Math.floor(Math.log(bytes) / Math.log(k)); + return(bytes / Math.pow(k, i)) + .toPrecision(3) + ' ' + sizes[i]; + }, + hasAttr: function(attr, el) { + var el = (!el ? s : el), + a = el.attr(attr); + if(!a || typeof a == "undefined") { + return false; + } else { + return true; + } + }, + getIcon: function(ext, type) { + var types = ["audio", "image", "text", "video"]; + if($.inArray(type, types) > -1) { + return '<i class="icon-jfi-file-' + type + ' jfi-file-ext-' + ext + '"></i>'; + } + return '<i class="icon-jfi-file-o jfi-file-type-' + type + ' jfi-file-ext-' + ext + '"></i>'; + }, + textParse: function(text, opts) { + opts = $.extend({}, { + limit: n.limit, + maxSize: n.maxSize, + extensions: n.extensions ? n.extensions.join(',') : null, + }, (opts && $.isPlainObject(opts) ? opts : {}), n.options); + switch(typeof(text)) { + case "string": + return text.replace(/\{\{fi-(.*?)\}\}/g, function(match, a) { + a = a.replace(/ /g, ''); + if(a.match(/(.*?)\|limitTo\:(\d+)/)) { + return a.replace(/(.*?)\|limitTo\:(\d+)/, function(match, a, b) { + var a = (opts[a] ? opts[a] : ""), + str = a.substring(0, b); + str = (a.length > str.length ? str.substring(0, str.length - 3) + "..." : str); + return str; + }); + } else { + return(opts[a] ? opts[a] : ""); + } + }); + break; + case "function": + return text(opts); + break; + default: + return text; + } + }, + text2Color: function(str) { + if(!str || str.length == 0) { + return false + } + for(var i = 0, hash = 0; i < str.length; hash = str.charCodeAt(i++) + ((hash << 5) - hash)); + for(var i = 0, colour = "#"; i < 3; colour += ("00" + ((hash >> i++ * 2) & 0xFF) + .toString(16)) + .slice(-2)); + return colour; + } + }, + files: null, + _itFl: [], + _itFc: null, + _itFr: [], + _ajFc: 0, + _prEr: false + } + + s.on("filer.append", function(e, data) { + f._append(e, data) + }).on("filer.remove", function(e, data) { + data.binded = true; + f._remove(e, data); + }).on("filer.reset", function(e) { + f._reset(); + f._clear(); + return true; + }).on("filer.generateList", function(e, data) { + return f._getList(e, data) + }).on("filer.retry", function(e, data) { + return f._retryUpload(e, data) + }); + + f.init(); + + return this; + }); + }; + $.fn.filer.defaults = { + limit: null, + maxSize: null, + extensions: null, + changeInput: true, + showThumbs: false, + appendTo: null, + theme: 'default', + templates: { + box: '<ul class="jFiler-items-list jFiler-items-default"></ul>', + item: '<li class="jFiler-item"><div class="jFiler-item-container"><div class="jFiler-item-inner"><div class="jFiler-item-icon pull-left">{{fi-icon}}</div><div class="jFiler-item-info pull-left"><div class="jFiler-item-title" title="{{fi-name}}">{{fi-name | limitTo:30}}</div><div class="jFiler-item-others"><span>size: {{fi-size2}}</span><span>type: {{fi-extension}}</span><span class="jFiler-item-status">{{fi-progressBar}}</span></div><div class="jFiler-item-assets"><ul class="list-inline"><li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li></ul></div></div></div></div></li>', + itemAppend: '<li class="jFiler-item"><div class="jFiler-item-container"><div class="jFiler-item-inner"><div class="jFiler-item-icon pull-left">{{fi-icon}}</div><div class="jFiler-item-info pull-left"><div class="jFiler-item-title">{{fi-name | limitTo:35}}</div><div class="jFiler-item-others"><span>size: {{fi-size2}}</span><span>type: {{fi-extension}}</span><span class="jFiler-item-status"></span></div><div class="jFiler-item-assets"><ul class="list-inline"><li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li></ul></div></div></div></div></li>', + progressBar: '<div class="bar"></div>', + itemAppendToEnd: false, + removeConfirmation: true, + _selectors: { + list: '.jFiler-items-list', + item: '.jFiler-item', + progressBar: '.bar', + remove: '.jFiler-item-trash-action' + } + }, + files: null, + uploadFile: null, + dragDrop: null, + addMore: false, + clipBoardPaste: true, + excludeName: null, + beforeRender: null, + afterRender: null, + beforeShow: null, + beforeSelect: null, + onSelect: null, + afterShow: null, + onRemove: null, + onEmpty: null, + options: null, + captions: { + button: "Choose Files", + feedback: "Choose files To Upload", + feedback2: "files were chosen", + drop: "Drop file here to Upload", + removeConfirmation: "Are you sure you want to remove this file?", + errors: { + filesLimit: "Only {{fi-limit}} files are allowed to be uploaded.", + filesType: "Only Images are allowed to be uploaded.", + filesSize: "{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.", + filesSizeAll: "Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB." + } + } + } +})(jQuery); \ No newline at end of file diff --git a/plugins/jquery.filer/js/jquery.filer.min.js b/plugins/jquery.filer/js/jquery.filer.min.js new file mode 100644 index 0000000..ce233d1 --- /dev/null +++ b/plugins/jquery.filer/js/jquery.filer.min.js @@ -0,0 +1,8 @@ +/*! + * jQuery.filer + * Copyright (c) 2015 CreativeDream + * Website: https://github.com/CreativeDream/jquery.filer + * Version: 1.0.5 (19-Nov-2015) + * Requires: jQuery v1.7.1 or later + */ +!function(e){"use strict";e.fn.filer=function(i){return this.each(function(t,n){var l=e(n),a=".jFiler",r=e(),o=e(),s=e(),d=[],f=e.isFunction(i)?i(l,e.fn.filer.defaults):i,p=f&&e.isPlainObject(f)?e.extend(!0,{},e.fn.filer.defaults,f):e.fn.filer.defaults,u={init:function(){l.wrap('<div class="jFiler"></div>'),u._set("props"),l.prop("jFiler").boxEl=r=l.closest(a),u._changeInput()},_bindInput:function(){p.changeInput&&o.size()>0&&o.bind("click",u._clickHandler),l.on({focus:function(){o.addClass("focused")},blur:function(){o.removeClass("focused")},change:function(){u._onChange()}}),p.dragDrop&&(o.length>0?o:l).bind("drop",u._dragDrop.drop).bind("dragover",u._dragDrop.dragEnter).bind("dragleave",u._dragDrop.dragLeave),p.uploadFile&&p.clipBoardPaste&&e(window).on("paste",u._clipboardPaste)},_unbindInput:function(){p.changeInput&&o.size()>0&&o.unbind("click",u._clickHandler)},_clickHandler:function(){l.click()},_applyAttrSettings:function(){var e=["name","limit","maxSize","extensions","changeInput","showThumbs","appendTo","theme","addMore","excludeName","files","uploadUrl","uploadData","options"];for(var i in e){var t="data-jfiler-"+e[i];if(u._assets.hasAttr(t)){switch(e[i]){case"changeInput":case"showThumbs":case"addMore":p[e[i]]=["true","false"].indexOf(l.attr(t))>-1?"true"==l.attr(t):l.attr(t);break;case"extensions":p[e[i]]=l.attr(t).replace(/ /g,"").split(",");break;case"uploadUrl":p.uploadFile&&(p.uploadFile.url=l.attr(t));break;case"uploadData":p.uploadFile&&(p.uploadFile.data=JSON.parse(l.attr(t)));break;case"files":case"options":p[e[i]]=JSON.parse(l.attr(t));break;default:p[e[i]]=l.attr(t)}l.removeAttr(t)}}},_changeInput:function(){if(u._applyAttrSettings(),null!=p.beforeRender&&"function"==typeof p.beforeRender?p.beforeRender(r,l):null,p.theme&&r.addClass("jFiler-theme-"+p.theme),"input"!=l.get(0).tagName.toLowerCase()&&"file"!=l.get(0).type)o=l,l=e('<input type="file" name="'+p.name+'" />'),l.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"}),r.prepend(l),u._isGn=l;else if(p.changeInput){switch(typeof p.changeInput){case"boolean":o=e('<div class="jFiler-input"><div class="jFiler-input-caption"><span>'+p.captions.feedback+'</span></div><div class="jFiler-input-button">'+p.captions.button+'</div></div>"');break;case"string":case"object":o=e(p.changeInput);break;case"function":o=e(p.changeInput(r,l,p))}l.after(o),l.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"})}l.prop("jFiler").newInputEl=o,(!p.limit||p.limit&&p.limit>=2)&&(l.attr("multiple","multiple"),"[]"!=l.attr("name").slice(-2)?l.attr("name",l.attr("name")+"[]"):null),u._bindInput(),p.files&&u._append(!1,{files:p.files}),null!=p.afterRender&&"function"==typeof p.afterRender?p.afterRender(s,r,o,l):null},_clear:function(){u.files=null,l.prop("jFiler").files=null,p.uploadFile||p.addMore||u._reset(),u._set("feedback",u._itFl&&u._itFl.length>0?u._itFl.length+" "+p.captions.feedback2:p.captions.feedback),null!=p.onEmpty&&"function"==typeof p.onEmpty?p.onEmpty(r,o,l):null},_reset:function(i){if(!i){if(!p.uploadFile&&p.addMore){for(var t=0;t<d.length;t++)d[t].remove();d=[],u._unbindInput(),l=u._isGn?u._isGn:e(n),u._bindInput()}u._set("input","")}u._itFl=[],u._itFc=null,u._ajFc=0,u._set("props"),l.prop("jFiler").files_list=u._itFl,l.prop("jFiler").current_file=u._itFc,u._prEr||(u._itFr=[],r.find("input[name^='jfiler-items-exclude-']:hidden").remove()),s.fadeOut("fast",function(){e(this).remove()}),l.prop("jFiler").listEl=s=e()},_set:function(e,i){switch(e){case"input":l.val("");break;case"feedback":o.length>0&&o.find(".jFiler-input-caption span").html(i);break;case"props":l.prop("jFiler")||l.prop("jFiler",{options:p,listEl:s,boxEl:r,newInputEl:o,inputEl:l,files:u.files,files_list:u._itFl,current_file:u._itFc,append:function(e){return u._append(!1,{files:[e]})},remove:function(e){return u._remove(null,{binded:!0,data:{id:e}}),!0},reset:function(){return u._reset(),u._clear(),!0},retry:function(e){return u._retryUpload(e)}})}},_filesCheck:function(){var i=0;if(p.limit&&u.files.length+u._itFl.length>p.limit)return alert(u._assets.textParse(p.captions.errors.filesLimit)),!1;for(var t=0;t<u.files.length;t++){var n=u.files[t].name.split(".").pop().toLowerCase(),l=u.files[t],a={name:l.name,size:l.size,size2:u._assets.bytesToSize(l.size),type:l.type,ext:n};if(null!=p.extensions&&-1==e.inArray(n,p.extensions))return alert(u._assets.textParse(p.captions.errors.filesType,a)),!1;if(null!=p.maxSize&&u.files[t].size>1048576*p.maxSize)return alert(u._assets.textParse(p.captions.errors.filesSize,a)),!1;if(4096==l.size&&0==l.type.length)return!1;i+=u.files[t].size}if(null!=p.maxSize&&i>=Math.round(1048576*p.maxSize))return alert(u._assets.textParse(p.captions.errors.filesSizeAll)),!1;if(p.addMore||p.uploadFile){var a=u._itFl.filter(function(e,i){return e.file.name!=l.name||e.file.size!=l.size||e.file.type!=l.type||(l.lastModified?e.file.lastModified!=l.lastModified:0)?void 0:!0});if(a.length>0)return!1}return!0},_thumbCreator:{create:function(i){var t=u.files[i],n=u._itFc?u._itFc.id:i,l=t.name,a=t.size,r=t.type.split("/",1).toString().toLowerCase(),o=-1!=l.indexOf(".")?l.split(".").pop().toLowerCase():"",d=p.uploadFile?'<div class="jFiler-jProgressBar">'+p.templates.progressBar+"</div>":"",f={id:n,name:l,size:a,size2:u._assets.bytesToSize(a),type:r,extension:o,icon:u._assets.getIcon(o,r),icon2:u._thumbCreator.generateIcon({type:r,extension:o}),image:'<div class="jFiler-item-thumb-image fi-loading"></div>',progressBar:d,_appended:t._appended},c="";return t.opts&&(f=e.extend({},t.opts,f)),c=e(u._thumbCreator.renderContent(f)).attr("data-jfiler-index",n),c.get(0).jfiler_id=n,u._thumbCreator.renderFile(t,c,f),t.forList?c:(u._itFc.html=c,c.hide()[p.templates.itemAppendToEnd?"appendTo":"prependTo"](s.find(p.templates._selectors.list)).show(),void(t._appended||u._onSelect(i)))},renderContent:function(e){return u._assets.textParse(e._appended?p.templates.itemAppend:p.templates.item,e)},renderFile:function(i,t,n){if(0==t.find(".jFiler-item-thumb-image").size())return!1;if(i.file&&"image"==n.type){var l='<img src="'+i.file+'" draggable="false" />',a=t.find(".jFiler-item-thumb-image.fi-loading");return e(l).error(function(){l=u._thumbCreator.generateIcon(n),t.addClass("jFiler-no-thumbnail"),a.removeClass("fi-loading").html(l)}).load(function(){a.removeClass("fi-loading").html(l)}),!0}if(window.File&&window.FileList&&window.FileReader&&"image"==n.type&&n.size<6e6){var r=new FileReader;r.onload=function(i){var l='<img src="'+i.target.result+'" draggable="false" />',a=t.find(".jFiler-item-thumb-image.fi-loading");e(l).error(function(){l=u._thumbCreator.generateIcon(n),t.addClass("jFiler-no-thumbnail"),a.removeClass("fi-loading").html(l)}).load(function(){a.removeClass("fi-loading").html(l)})},r.readAsDataURL(i)}else{var l=u._thumbCreator.generateIcon(n),a=t.find(".jFiler-item-thumb-image.fi-loading");t.addClass("jFiler-no-thumbnail"),a.removeClass("fi-loading").html(l)}},generateIcon:function(i){var t=new Array(3);if(i&&i.type&&i.extension)switch(i.type){case"image":t[0]="f-image",t[1]='<i class="icon-jfi-file-image"></i>';break;case"video":t[0]="f-video",t[1]='<i class="icon-jfi-file-video"></i>';break;case"audio":t[0]="f-audio",t[1]='<i class="icon-jfi-file-audio"></i>';break;default:t[0]="f-file f-file-ext-"+i.extension,t[1]=i.extension.length>0?"."+i.extension:"",t[2]=1}else t[0]="f-file",t[1]=i.extension&&i.extension.length>0?"."+i.extension:"",t[2]=1;var n='<span class="jFiler-icon-file '+t[0]+'">'+t[1]+"</span>";if(1==t[2]){var l=u._assets.text2Color(i.extension);if(l){var a=e(n).appendTo("body"),r=a.css("box-shadow");r=l+r.substring(r.replace(/^.*(rgba?\([^)]+\)).*$/,"$1").length,r.length),a.css({"-webkit-box-shadow":r,"-moz-box-shadow":r,"box-shadow":r}).attr("style","-webkit-box-shadow: "+r+"; -moz-box-shadow: "+r+"; box-shadow: "+r+";"),n=a.prop("outerHTML"),a.remove()}}return n},_box:function(i){if(null!=p.beforeShow&&"function"==typeof p.beforeShow?!p.beforeShow(u.files,s,r,o,l):!1)return!1;if(s.length<1){if(p.appendTo)var t=e(p.appendTo);else var t=r;t.find(".jFiler-items").remove(),s=e('<div class="jFiler-items jFiler-row"></div>'),l.prop("jFiler").listEl=s,s.append(u._assets.textParse(p.templates.box)).appendTo(t),s.on("click",p.templates._selectors.remove,function(t){t.preventDefault();var n=p.templates.removeConfirmation?confirm(p.captions.removeConfirmation):!0;n&&u._remove(i?i.remove.event:t,i?i.remove.el:e(this).closest(p.templates._selectors.item))})}for(var n=0;n<u.files.length;n++)u.files[n]._appended||(u.files[n]._choosed=!0),u._addToMemory(n),u._thumbCreator.create(n)}},_upload:function(i){var t=u._itFc.html,n=new FormData;if(n.append(l.attr("name"),u._itFc.file,u._itFc.file.name?u._itFc.file.name:!1),null!=p.uploadFile.data&&e.isPlainObject(p.uploadFile.data))for(var a in p.uploadFile.data)n.append(a,p.uploadFile.data[a]);u._ajax.send(t,n,u._itFc)},_ajax:{send:function(i,t,n){return n.ajax=e.ajax({url:p.uploadFile.url,data:t,type:p.uploadFile.type,enctype:p.uploadFile.enctype,xhr:function(){var t=e.ajaxSettings.xhr();return t.upload&&t.upload.addEventListener("progress",function(e){u._ajax.progressHandling(e,i)},!1),t},complete:function(e,i){n.ajax=!1,u._ajFc++,u._ajFc>=u.files.length&&(u._ajFc=0,null!=p.uploadFile.onComplete&&"function"==typeof p.uploadFile.onComplete?p.uploadFile.onComplete(s,r,o,l,e,i):null)},beforeSend:function(e,t){return null!=p.uploadFile.beforeSend&&"function"==typeof p.uploadFile.beforeSend?p.uploadFile.beforeSend(i,s,r,o,l,n.id,e,t):!0},success:function(e,t,a){n.uploaded=!0,null!=p.uploadFile.success&&"function"==typeof p.uploadFile.success?p.uploadFile.success(e,i,s,r,o,l,n.id,t,a):null},error:function(e,t,a){n.uploaded=!1,null!=p.uploadFile.error&&"function"==typeof p.uploadFile.error?p.uploadFile.error(i,s,r,o,l,n.id,e,t,a):null},statusCode:p.uploadFile.statusCode,cache:!1,contentType:!1,processData:!1}),n.ajax},progressHandling:function(e,i){if(e.lengthComputable){var t=Math.round(100*e.loaded/e.total).toString();null!=p.uploadFile.onProgress&&"function"==typeof p.uploadFile.onProgress?p.uploadFile.onProgress(t,i,s,r,o,l):null,i.find(".jFiler-jProgressBar").find(p.templates._selectors.progressBar).css("width",t+"%")}}},_dragDrop:{dragEnter:function(e){e.preventDefault(),e.stopPropagation(),r.addClass("dragged"),u._set("feedback",p.captions.drop),null!=p.dragDrop.dragEnter&&"function"==typeof p.dragDrop.dragEnter?p.dragDrop.dragEnter(e,o,l,r):null},dragLeave:function(e){return e.preventDefault(),e.stopPropagation(),u._dragDrop._dragLeaveCheck(e)?(r.removeClass("dragged"),u._set("feedback",p.captions.feedback),void(null!=p.dragDrop.dragLeave&&"function"==typeof p.dragDrop.dragLeave?p.dragDrop.dragLeave(e,o,l,r):null)):!1},drop:function(e){e.preventDefault(),r.removeClass("dragged"),u._set("feedback",p.captions.feedback),e&&e.originalEvent&&e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.files&&e.originalEvent.dataTransfer.files.length>0&&u._onChange(e,e.originalEvent.dataTransfer.files),null!=p.dragDrop.drop&&"function"==typeof p.dragDrop.drop?p.dragDrop.drop(e.originalEvent.dataTransfer.files,e,o,l,r):null},_dragLeaveCheck:function(i){var t=i.relatedTarget,n=!1;return t!==o&&(t&&(n=e.contains(o,t)),n)?!1:!0}},_clipboardPaste:function(e,i){if((i||e.originalEvent.clipboardData||e.originalEvent.clipboardData.items)&&(!i||e.originalEvent.dataTransfer||e.originalEvent.dataTransfer.items)&&!u._clPsePre){var t=i?e.originalEvent.dataTransfer.items:e.originalEvent.clipboardData.items,n=function(e,i,t){i=i||"",t=t||512;for(var n=atob(e),l=[],a=0;a<n.length;a+=t){for(var r=n.slice(a,a+t),o=new Array(r.length),s=0;s<r.length;s++)o[s]=r.charCodeAt(s);var d=new Uint8Array(o);l.push(d)}var f=new Blob(l,{type:i});return f};if(t)for(var l=0;l<t.length;l++)if(-1!==t[l].type.indexOf("image")||-1!==t[l].type.indexOf("text/uri-list")){if(i)try{window.atob(e.originalEvent.dataTransfer.getData("text/uri-list").toString().split(",")[1])}catch(e){return}var a=i?n(e.originalEvent.dataTransfer.getData("text/uri-list").toString().split(",")[1],"image/png"):t[l].getAsFile();a.name=Math.random().toString(36).substring(5),a.name+=-1!=a.type.indexOf("/")?"."+a.type.split("/")[1].toString().toLowerCase():".png",u._onChange(e,[a]),u._clPsePre=setTimeout(function(){delete u._clPsePre},1e3)}}},_onSelect:function(i){p.uploadFile&&!e.isEmptyObject(p.uploadFile)&&u._upload(i),null!=p.onSelect&&"function"==typeof p.onSelect?p.onSelect(u.files[i],u._itFc.html,s,r,o,l):null,i+1>=u.files.length&&(null!=p.afterShow&&"function"==typeof p.afterShow?p.afterShow(s,r,o,l):null)},_onChange:function(i,t){if(t){if(!t||0==t.length)return u._set("input",""),u._clear(),!1;u.files=t}else{if(!l.get(0).files||"undefined"==typeof l.get(0).files||0==l.get(0).files.length)return p.uploadFile||p.addMore||(u._set("input",""),u._clear()),!1;u.files=l.get(0).files}if(p.uploadFile||p.addMore||u._reset(!0),l.prop("jFiler").files=u.files,!u._filesCheck()||(null!=p.beforeSelect&&"function"==typeof p.beforeSelect?!p.beforeSelect(u.files,s,r,o,l):!1))return u._set("input",""),u._clear(),!1;if(u._set("feedback",u.files.length+u._itFl.length+" "+p.captions.feedback2),p.showThumbs)u._thumbCreator._box();else for(var n=0;n<u.files.length;n++)u.files[n]._choosed=!0,u._addToMemory(n),u._onSelect(n);if(!p.uploadFile&&p.addMore){var a=e('<input type="file" />'),f=l.prop("attributes");e.each(f,function(){a.attr(this.name,this.value)}),l.after(a),u._unbindInput(),d.push(a),l=a,u._bindInput(),u._set("props")}},_append:function(e,i){var t=i?i.files:!1;if(t&&!(t.length<=0)&&(u.files=t,l.prop("jFiler").files=u.files,p.showThumbs)){for(var n=0;n<u.files.length;n++)u.files[n]._appended=!0;u._thumbCreator._box()}},_getList:function(e,i){var t=i?i.files:!1;if(t&&!(t.length<=0)&&(u.files=t,l.prop("jFiler").files=u.files,p.showThumbs)){for(var n=[],a=0;a<u.files.length;a++)u.files[a].forList=!0,n.push(u._thumbCreator.create(a));i.callback&&i.callback(n,s,r,o,l)}},_retryUpload:function(i,t){var n=parseInt("object"==typeof t?t.attr("data-jfiler-index"):t),a=u._itFl.filter(function(e,i){return e.id==n});return a.length>0?!p.uploadFile||e.isEmptyObject(p.uploadFile)||a[0].uploaded?void 0:(u._itFc=a[0],l.prop("jFiler").current_file=u._itFc,u._upload(n),!0):!1},_remove:function(i,n){if(n.binded){if("undefined"!=typeof n.data.id&&(n=s.find(p.templates._selectors.item+"[data-jfiler-index='"+n.data.id+"']"),0==n.size()))return!1;n.data.el&&(n=n.data.el)}var a=n.get(0).jfiler_id||n.attr("data-jfiler-index"),d=null,f=function(i){var n=r.find("input[name^='jfiler-items-exclude-']:hidden").first(),a=u._itFl[i],o=[];if(0==n.size()&&(n=e('<input type="hidden" name="jfiler-items-exclude-'+(p.excludeName?p.excludeName:("[]"!=l.attr("name").slice(-2)?l.attr("name"):l.attr("name").substring(0,l.attr("name").length-2))+"-"+t)+'">'),n.appendTo(r)),a.file._choosed||a.file._appended||a.uploaded){if(u._prEr=!0,u._itFr.push(a),p.addMore){var s=a.input,d=0;u._itFl.filter(function(e,i){e.file._choosed&&e.input.get(0)==s.get(0)&&d++}),1==d&&(u._itFr=u._itFr.filter(function(e,i){return e.file._choosed?e.input.get(0)!=s.get(0):!0}),s.val(""),u._prEr=!1)}for(var f=0;f<u._itFr.length;f++)o.push(u._itFr[f].file.name);o=JSON.stringify(o),n.val(o)}},c=function(i,t){f(t),u._itFl.splice(t,1),u._itFl.length<1?(u._reset(),u._clear()):u._set("feedback",u._itFl.length+" "+p.captions.feedback2),i.fadeOut("fast",function(){e(this).remove()})};for(var m in u._itFl)"length"!==m&&u._itFl.hasOwnProperty(m)&&u._itFl[m].id==a&&(d=m);return u._itFl.hasOwnProperty(d)?u._itFl[d].ajax?(u._itFl[d].ajax.abort(),void c(n,d)):(null!=p.onRemove&&"function"==typeof p.onRemove?p.onRemove(n,u._itFl[d].file,d,s,r,o,l):null,void c(n,d)):!1},_addToMemory:function(i){u._itFl.push({id:u._itFl.length,file:u.files[i],html:e(),ajax:!1,uploaded:!1}),p.addMore&&!u.files[i]._appended&&(u._itFl[u._itFl.length-1].input=l),u._itFc=u._itFl[u._itFl.length-1],l.prop("jFiler").files_list=u._itFl,l.prop("jFiler").current_file=u._itFc},_assets:{bytesToSize:function(e){if(0==e)return"0 Byte";var i=1e3,t=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=Math.floor(Math.log(e)/Math.log(i));return(e/Math.pow(i,n)).toPrecision(3)+" "+t[n]},hasAttr:function(e,i){var i=i?i:l,t=i.attr(e);return t&&"undefined"!=typeof t?!0:!1},getIcon:function(i,t){var n=["audio","image","text","video"];return e.inArray(t,n)>-1?'<i class="icon-jfi-file-'+t+" jfi-file-ext-"+i+'"></i>':'<i class="icon-jfi-file-o jfi-file-type-'+t+" jfi-file-ext-"+i+'"></i>'},textParse:function(i,t){switch(t=e.extend({},{limit:p.limit,maxSize:p.maxSize,extensions:p.extensions?p.extensions.join(","):null},t&&e.isPlainObject(t)?t:{},p.options),typeof i){case"string":return i.replace(/\{\{fi-(.*?)\}\}/g,function(e,i){return i=i.replace(/ /g,""),i.match(/(.*?)\|limitTo\:(\d+)/)?i.replace(/(.*?)\|limitTo\:(\d+)/,function(e,i,n){var i=t[i]?t[i]:"",l=i.substring(0,n);return l=i.length>l.length?l.substring(0,l.length-3)+"...":l}):t[i]?t[i]:""});case"function":return i(t);default:return i}},text2Color:function(e){if(!e||0==e.length)return!1;for(var i=0,t=0;i<e.length;t=e.charCodeAt(i++)+((t<<5)-t));for(var i=0,n="#";3>i;n+=("00"+(t>>2*i++&255).toString(16)).slice(-2));return n}},files:null,_itFl:[],_itFc:null,_itFr:[],_ajFc:0,_prEr:!1};return l.on("filer.append",function(e,i){u._append(e,i)}).on("filer.remove",function(e,i){i.binded=!0,u._remove(e,i)}).on("filer.reset",function(e){return u._reset(),u._clear(),!0}).on("filer.generateList",function(e,i){return u._getList(e,i)}).on("filer.retry",function(e,i){return u._retryUpload(e,i)}),u.init(),this})},e.fn.filer.defaults={limit:null,maxSize:null,extensions:null,changeInput:!0,showThumbs:!1,appendTo:null,theme:"default",templates:{box:'<ul class="jFiler-items-list jFiler-items-default"></ul>',item:'<li class="jFiler-item"><div class="jFiler-item-container"><div class="jFiler-item-inner"><div class="jFiler-item-icon pull-left">{{fi-icon}}</div><div class="jFiler-item-info pull-left"><div class="jFiler-item-title" title="{{fi-name}}">{{fi-name | limitTo:30}}</div><div class="jFiler-item-others"><span>size: {{fi-size2}}</span><span>type: {{fi-extension}}</span><span class="jFiler-item-status">{{fi-progressBar}}</span></div><div class="jFiler-item-assets"><ul class="list-inline"><li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li></ul></div></div></div></div></li>',itemAppend:'<li class="jFiler-item"><div class="jFiler-item-container"><div class="jFiler-item-inner"><div class="jFiler-item-icon pull-left">{{fi-icon}}</div><div class="jFiler-item-info pull-left"><div class="jFiler-item-title">{{fi-name | limitTo:35}}</div><div class="jFiler-item-others"><span>size: {{fi-size2}}</span><span>type: {{fi-extension}}</span><span class="jFiler-item-status"></span></div><div class="jFiler-item-assets"><ul class="list-inline"><li><a class="icon-jfi-trash jFiler-item-trash-action"></a></li></ul></div></div></div></div></li>',progressBar:'<div class="bar"></div>',itemAppendToEnd:!1,removeConfirmation:!0,_selectors:{list:".jFiler-items-list",item:".jFiler-item",progressBar:".bar",remove:".jFiler-item-trash-action"}},files:null,uploadFile:null,dragDrop:null,addMore:!1,clipBoardPaste:!0,excludeName:null,beforeRender:null,afterRender:null,beforeShow:null,beforeSelect:null,onSelect:null,afterShow:null,onRemove:null,onEmpty:null,options:null,captions:{button:"Choose Files",feedback:"Choose files To Upload",feedback2:"files were chosen",drop:"Drop file here to Upload",removeConfirmation:"Are you sure you want to remove this file?",errors:{filesLimit:"Only {{fi-limit}} files are allowed to be uploaded.",filesType:"Only Images are allowed to be uploaded.",filesSize:"{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.",filesSizeAll:"Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB."}}}}(jQuery); \ No newline at end of file diff --git a/plugins/jquery.filer/php/class.uploader.php b/plugins/jquery.filer/php/class.uploader.php new file mode 100644 index 0000000..9350b90 --- /dev/null +++ b/plugins/jquery.filer/php/class.uploader.php @@ -0,0 +1,437 @@ +<?php +# ======================================================================== # +# +# Title [PHP] Uploader +# Author: CreativeDream +# Website: https://github.com/CreativeDream/php-uploader +# Version: 0.2 +# Date: 26-Aug-2015 +# Purpose: Validate, Remove, Upload, Download files to server. +# +# ======================================================================== # + +class Uploader { + + protected $options = array( + 'limit' => 10, + 'maxSize' => 10, + 'extensions' => null, + 'required' => false, + 'uploadDir' => 'uploads/', + 'title' => array('auto', 10), + 'removeFiles' => true, + 'perms' => null, + 'onCheck' => null, + 'onError' => null, + 'onSuccess' => null, + 'onUpload' => null, + 'onComplete' => null, + 'onRemove' => null + ); + + public $error_messages = array( + 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini.", + 2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.", + 3 => "The uploaded file was only partially uploaded.", + 4 => "No file was uploaded.", + 6 => "Missing a temporary folder.", + 7 => "Failed to write file to disk.", + 8 => "A PHP extension stopped the file upload.", + 'accept_file_types' => "Filetype not allowed", + 'file_uploads' => "File uploading option in disabled in php.ini", + 'post_max_size' => "The uploaded file exceeds the post_max_size directive in php.ini", + 'max_file_size' => "File is too big", + 'max_number_of_files' => "Maximum number of files exceeded", + 'required_and_no_file' => "No file was choosed. Please select one.", + 'no_download_content' => "File could't be download." + ); + + private $field = null; + private $data = array( + "hasErrors" => false, + "hasWarnings" => false, + "isSuccess" => false, + "isComplete" => false, + "data" => array( + "files" => array(), + "metas" => array() + ) + ); + + public function __construct(){ + // __construct function + + $this->cache_data = $this->data; + } + + /** + * upload method + * + * Return the initialize method + * @param $field {Array, String} + * @param $options {Array, null} + * @return array + */ + public function upload($field, $options = null){ + $this->data = $this->cache_data; + return $this->initialize($field, $options); + } + + /** + * initialize method + * + * Initialize field values and properties. + * Merge options + * Prepare files + * @param $field {Array, String} + * @param $options {Array, null} + * @return array + */ + private function initialize($field, $options){ + if(is_array($field) && in_array($field, $_FILES)){ + $this->field = $field; + $this->field['Field_Name'] = array_search($field, $_FILES); + $this->field['Field_Type'] = 'input'; + + if(!is_array($this->field['name'])){ + $this->field = array_merge($this->field, array("name" => array($this->field['name']), "tmp_name"=>array($this->field['tmp_name']), "type"=>array($this->field['type']), "error"=>array($this->field['error']), "size"=>array($this->field['size']))); + } + + foreach($this->field['name'] as $key=>$value){ if(empty($value)){ unset($this->field['name'][$key]); unset($this->field['type'][$key]); unset($this->field['tmp_name'][$key]); unset($this->field['error'][$key]); unset($this->field['size'][$key]); } } + + $this->field['length'] = count($this->field['name']); + }elseif(is_string($field) && $this->isURL($field)){ + $this->field = array("name" => array($field), "size"=>array(), "type"=>array(), "error"=>array()); + $this->field['Field_Type'] = 'link'; + $this->field['length'] = 1; + }else{ + return false; + } + + if($options != null){ + $this->setOptions($options); + } + + return $this->prepareFiles(); + } + + /** + * setOptions method + * + * Merge options + * @param $options {Array} + */ + private function setOptions($options){ + if(!is_array($options)){return false;} + $this->options = array_merge($this->options, $options); + } + + /** + * validation method + * + * Check the field and files + * @return boolean + */ + private function validate($file = null){ + $field = $this->field; + $errors = array(); + $options = $this->options; + + if($file == null){ + $ini = array(ini_get('file_uploads'),((int) ini_get('upload_max_filesize')),((int) ini_get('post_max_size')), ((int) ini_get('max_file_uploads'))); + + if(!isset($field) || empty($field)) return false; + if(!$ini[0]) $errors[] = $this->error_messages['file_uploads']; + + if($options['required'] && $field['length'] == 0) $errors[] = $this->error_messages['required_and_no_file']; + if(($options['limit'] && $field['length'] > $options['limit']) || ($field['length']) > $ini[3]) $errors[] = $this->error_messages['max_number_of_files']; + if(!file_exists($options['uploadDir']) && !is_dir($options['uploadDir']) && mkdir($options['uploadDir'], 750, true)){ + $this->data['hasWarnings'] = true; + $this->data['warnings'] = "A new directory was created in " . realpath($options['uploadDir']); + } + if(!is_writable($options['uploadDir'])) @chmod($options['uploadDir'], 750); + + if($field['Field_Type'] == "input"){ + $total_size = 0; foreach($this->field['size'] as $key=>$value){ $total_size += $value; } $total_size = $total_size/1048576; + if($options['maxSize'] && $total_size > $options['maxSize']) $errors[] = $this->error_messages['max_file_size']; + + if($total_size > $ini[1]) $errors[] = $this->error_messages[1]; + if($total_size > $ini[2]) $errors[] = $this->error_messages['post_max_size']; + } + }else{ + if(@$field['error'][$file['index']] > 0 && array_key_exists($field['error'][$file['index']], $this->error_messages)) $errors[] = $this->error_messages[$field['error'][$file['index']]]; + if($options['extensions'] && !in_array($file['extension'], $options['extensions'])) $errors[] = $this->error_messages['accept_file_types']; + if($file['type'][0] == "image" && @!is_array(getimagesize($file['tmp']))) $errors[] = $this->error_messages['accept_file_types']; + if($options['maxSize'] && $file['size'][0] > $options['maxSize']) $errors[] = $this->error_messages['max_file_size']; + + if($field['Field_Type'] == 'link' && empty($this->cache_download_content)) $errors[] = ""; + } + + $custom = $this->_onCheck($file); if($custom) $errors = array_merge($errors, $custom); + + if(!empty($errors)){ + $this->data['hasErrors'] = true; + if(!isset($this->data['errors'])) $this->data['errors'] = array(); + + $this->data['errors'][] = $errors; + $custom = $this->_onError($errors, $file); + + return false; + }else{ + return true; + } + } + + /** + * prepareFiles method + * + * Prepare files for upload/download and generate meta infos + * @return $this->data + */ + private function prepareFiles(){ + $field = $this->field; + $validate = $this->validate(); + + if($validate){ + $files = array(); + $removed_files = $this->removeFiles(); + + for($i = 0; $i < count($field['name']); $i++){ + + $metas = array(); + + if($field['Field_Type'] == 'input'){ + $tmp_name = $field['tmp_name'][$i]; + }elseif($field['Field_Type'] == 'link'){ + $link = $this->downloadFile($field['name'][0], false, true); + + $tmp_name = $field['name'][0]; + $field['name'][0] = pathinfo($field['name'][0], PATHINFO_BASENAME); + $field['type'][0] = $link['type']; + $field['size'][0] = $link['size']; + $field['error'][0] = 0; + } + + $metas['extension'] = substr(strrchr(strtolower($field['name'][$i]), "."),1); + $metas['type'] = preg_split('[/]', $field['type'][$i]); + $metas['extension'] = $field['Field_Type'] == 'link' && empty($metas['extension']) ? $metas['type'][1] : $metas['extension']; + $metas['old_name'] = substr($field['name'][$i], 0, -(strlen(strrchr($field['name'][$i], $metas['extension']))+1)); + $metas['size'] = $field['size'][$i]; + $metas['size2'] = $this->formatSize($metas['size']); + $metas['name'] = $this->generateFileName($this->options['title'], array('name'=>$metas['old_name'], 'size'=>$metas['size'])) . (!empty($metas['extension']) ? "." . $metas['extension'] : ""); + $metas['file'] = $this->options['uploadDir'] . $metas['name']; + $metas['replaced'] = file_exists($metas['file']); + $metas['date'] = date('r'); + + if(!in_array($field['name'][$i], $removed_files) && $this->validate(array_merge($metas, array('index'=>$i, 'tmp'=>$tmp_name))) && $this->uploadFile($tmp_name, $metas['file'])){ + if($this->options['perms']) @chmod($metas['file'], $this->options['perms']); + + $custom = $this->_onUpload($metas, $this->field); if($custom && is_array($custom)) $metas = array_merge($custom, $metas); + + ksort($metas); + + $files[] = $metas['file']; + $this->data['data']['metas'][] = $metas; + } + } + + $this->data['isSuccess'] = count($field['name']) - count($removed_files) == count($files); + $this->data['data']['files'] = $files; + + if($this->data['isSuccess']) $custom = $this->_onSuccess($this->data['data']['files'], $this->data['data']['metas']); + + $this->data['isComplete'] = true; + $custom = $this->_onComplete($this->data['data']['files'], $this->data['data']['metas']); + } + + return $this->data; + } + + /** + * uploadFile method + * + * Upload/Download files to server + * @return boolean + */ + private function uploadFile($source, $destination){ + if($this->field['Field_Type'] == 'input'){ + return @move_uploaded_file($source, $destination); + }elseif($this->field['Field_Type'] == 'link'){ + return $this->downloadFile($source, $destination); + } + } + + /** + * removeFiles method + * + * Remove files or cancel upload for them + * @return array + */ + private function removeFiles(){ + $removed_files = array(); + if($this->options['removeFiles'] !== false){ + foreach($_POST as $key=>$value){ + preg_match((is_string($this->options['removeFiles']) ? $this->options['removeFiles'] : '/jfiler-items-exclude-'.$this->field['Field_Name'].'-(\d+)/'), $key, $matches); + + if(isset($matches) && !empty($matches)){ + $input = $_POST[$matches[0]]; + if($this->isJson($input)) $removed_files = json_decode($input, true); + + $custom = $this->_onRemove($removed_files, $this->field); if($custom && is_array($custom)) $removed_files = $custom; + } + } + } + return $removed_files; + } + + /** + * downloadFile method + * + * Download file to server + * @return boolean + */ + private function downloadFile($source, $destination, $info = false){ + set_time_limit(80); + + $forInfo = array( + "size" => 1, + "type" => "text/plain" + ); + + if(!isset($this->cache_download_content)){ + $file_content = file_get_contents($source); + if($info){ + $headers = implode(" ", $http_response_header); + if(preg_match('/Content-Length: (\d+)/', $headers, $matches)) $forInfo['size'] = $matches[1]; + if(preg_match('/Content-Type: (\w+\/\w+)/', $headers, $matches)) $forInfo['type'] = $matches[1]; + + $this->cache_download_content = $file_content; + + return $forInfo; + } + }else{ + $file_content = $this->cache_download_content; + } + + $downloaded_file = @fopen($destination, 'w'); + $written = @fwrite($downloaded_file, $file_content); + @fclose($downloaded_file); + + return $written; + } + + /** + * generateFileName method + * + * Generated a file name by uploading + * @return boolean + */ + private function generateFileName($conf, $file){ + $type = is_array($conf) && isset($conf[0]) ? $conf[0] : $conf; + $type = $type ? $type : 'name'; + $length = is_array($conf) && isset($conf[1]) ? $conf[1] : null; + $random_string = substr(str_shuffle("_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length ? $length : 10); + $string = ""; + + switch($type){ + case "auto": + $string = $random_string; + break; + case "name": + $string = $file['name']; + break; + default: + $string = $type; + + if(strpos($string, "{{random}}") !== false){ + $string = str_replace("{{random}}", $random_string, $string); + } + if(strpos($string, "{{file_name}}") !== false){ + $string = str_replace("{{file_name}}", $file['name'], $string); + } + if(strpos($string, "{{file_size}}") !== false){ + $string = str_replace("{{file_size}}", $file['size'], $string); + } + if(strpos($string, "{{timestamp}}") !== false){ + $string = str_replace("{{timestamp}}", time(), $string); + } + if(strpos($string, "{{date}}") !== false){ + $string = str_replace("{{date}}", date('Y-n-d_H:i:s'), $string); + } + } + + return $string; + } + + /** + * isJson method + * + * Check if string is a valid json + * @return boolean + */ + function isJson($string) { + json_decode($string); + return (json_last_error() == JSON_ERROR_NONE); + } + + /** + * isURL method + * + * Check if string $url is a link + * @return boolean + */ + private function isURL($url){ + return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url); + } + + /** + * formatSize method + * + * Convert file size + * @return float + */ + private function formatSize($bytes){ + if ($bytes >= 1073741824){ + $bytes = number_format($bytes / 1073741824, 2) . ' GB'; + }elseif ($bytes >= 1048576){ + $bytes = number_format($bytes / 1048576, 2) . ' MB'; + }elseif ($bytes > 0){ + $bytes = number_format($bytes / 1024, 2) . ' KB'; + }else{ + $bytes = '0 bytes'; + } + + return $bytes; + } + + private function _onCheck(){ + $arguments = func_get_args(); + return $this->options['onCheck'] != null && function_exists($this->options['onCheck']) ? $this->options['onCheck'](@$arguments[0]) : null; + } + + private function _onSuccess(){ + $arguments = func_get_args(); + return $this->options['onSuccess'] != null && function_exists($this->options['onSuccess']) ? $this->options['onSuccess'](@$arguments[0], @$arguments[1]) : null; + } + + private function _onError(){ + $arguments = func_get_args(); + return $this->options['onError'] && function_exists($this->options['onError']) ? $this->options['onError'](@$arguments[0], @$arguments[1]) : null; + } + + private function _onUpload(){ + $arguments = func_get_args(); + return $this->options['onUpload'] && function_exists($this->options['onUpload']) ? $this->options['onUpload'](@$arguments[0], @$arguments[1]) : null; + } + + private function _onComplete(){ + $arguments = func_get_args(); + return $this->options['onComplete'] != null && function_exists($this->options['onComplete']) ? $this->options['onComplete'](@$arguments[0], @$arguments[1]) : null; + } + + private function _onRemove(){ + $arguments = func_get_args(); + return $this->options['onRemove'] && function_exists($this->options['onRemove']) ? $this->options['onRemove'](@$arguments[0], @$arguments[1]) : null; + } +} +?> diff --git a/plugins/jquery.filer/php/readme.txt b/plugins/jquery.filer/php/readme.txt new file mode 100644 index 0000000..37d2d8b --- /dev/null +++ b/plugins/jquery.filer/php/readme.txt @@ -0,0 +1,2 @@ +[PHP] Uploader 0.2 +https://github.com/CreativeDream/php-uploader diff --git a/plugins/jquery.filer/php/remove_file.php b/plugins/jquery.filer/php/remove_file.php new file mode 100644 index 0000000..1266810 --- /dev/null +++ b/plugins/jquery.filer/php/remove_file.php @@ -0,0 +1,8 @@ +<?php +if(isset($_POST['file'])){ + $file = '../uploads/' . $_POST['file']; + if(file_exists($file)){ + unlink($file); + } +} +?> \ No newline at end of file diff --git a/plugins/jquery.filer/php/upload.php b/plugins/jquery.filer/php/upload.php new file mode 100644 index 0000000..ec4aedc --- /dev/null +++ b/plugins/jquery.filer/php/upload.php @@ -0,0 +1,42 @@ +<?php + include('class.uploader.php'); + + $uploader = new Uploader(); + $data = $uploader->upload($_FILES['files'], array( + 'limit' => 10, //Maximum Limit of files. {null, Number} + 'maxSize' => 10, //Maximum Size of files {null, Number(in MB's)} + 'extensions' => null, //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))} + 'required' => false, //Minimum one file is required for upload {Boolean} + 'uploadDir' => '../uploads/', //Upload directory {String} + 'title' => array('name'), //New file name {null, String, Array} *please read documentation in README.md + 'removeFiles' => true, //Enable file exclusion {Boolean(extra for jQuery.filer), String($_POST field name containing json data with file names)} + 'perms' => null, //Uploaded file permisions {null, Number} + 'onCheck' => null, //A callback function name to be called by checking a file for errors (must return an array) | ($file) | Callback + 'onError' => null, //A callback function name to be called if an error occured (must return an array) | ($errors, $file) | Callback + 'onSuccess' => null, //A callback function name to be called if all files were successfully uploaded | ($files, $metas) | Callback + 'onUpload' => null, //A callback function name to be called if all files were successfully uploaded (must return an array) | ($file) | Callback + 'onComplete' => null, //A callback function name to be called when upload is complete | ($file) | Callback + 'onRemove' => 'onFilesRemoveCallback' //A callback function name to be called by removing files (must return an array) | ($removed_files) | Callback + )); + + if($data['isComplete']){ + $files = $data['data']; + print_r($files); + } + + if($data['hasErrors']){ + $errors = $data['errors']; + print_r($errors); + } + + function onFilesRemoveCallback($removed_files){ + foreach($removed_files as $key=>$value){ + $file = '../uploads/' . $value; + if(file_exists($file)){ + unlink($file); + } + } + + return $removed_files; + } +?> diff --git a/plugins/jquery.filer/uploads/1.jpg b/plugins/jquery.filer/uploads/1.jpg new file mode 100644 index 0000000..db141dd Binary files /dev/null and b/plugins/jquery.filer/uploads/1.jpg differ diff --git a/plugins/jquery.filer/uploads/14446093_1235665729817975_2749627712063560271_n.jpg b/plugins/jquery.filer/uploads/14446093_1235665729817975_2749627712063560271_n.jpg new file mode 100644 index 0000000..eb05f24 Binary files /dev/null and b/plugins/jquery.filer/uploads/14446093_1235665729817975_2749627712063560271_n.jpg differ diff --git a/plugins/jquery.filer/uploads/2.jpg b/plugins/jquery.filer/uploads/2.jpg new file mode 100644 index 0000000..e41d8db Binary files /dev/null and b/plugins/jquery.filer/uploads/2.jpg differ diff --git a/plugins/jquery.filer/uploads/3.jpg b/plugins/jquery.filer/uploads/3.jpg new file mode 100644 index 0000000..b9eae7b Binary files /dev/null and b/plugins/jquery.filer/uploads/3.jpg differ diff --git a/plugins/jquery.filer/uploads/5.jpg b/plugins/jquery.filer/uploads/5.jpg new file mode 100644 index 0000000..5b8e428 Binary files /dev/null and b/plugins/jquery.filer/uploads/5.jpg differ diff --git a/plugins/jquery.filer/uploads/6.jpg b/plugins/jquery.filer/uploads/6.jpg new file mode 100644 index 0000000..4bb7017 Binary files /dev/null and b/plugins/jquery.filer/uploads/6.jpg differ diff --git a/plugins/jquery.filer/uploads/7.jpg b/plugins/jquery.filer/uploads/7.jpg new file mode 100644 index 0000000..241d127 Binary files /dev/null and b/plugins/jquery.filer/uploads/7.jpg differ diff --git a/plugins/jquery.filer/uploads/8.jpg b/plugins/jquery.filer/uploads/8.jpg new file mode 100644 index 0000000..4e3c163 Binary files /dev/null and b/plugins/jquery.filer/uploads/8.jpg differ diff --git a/plugins/jquery.filer/uploads/AppleSansAdjectives..ttf b/plugins/jquery.filer/uploads/AppleSansAdjectives..ttf new file mode 100644 index 0000000..80388d7 Binary files /dev/null and b/plugins/jquery.filer/uploads/AppleSansAdjectives..ttf differ diff --git a/plugins/jquery.filer/uploads/AppleSansAdjectives.eot b/plugins/jquery.filer/uploads/AppleSansAdjectives.eot new file mode 100644 index 0000000..ed10daa Binary files /dev/null and b/plugins/jquery.filer/uploads/AppleSansAdjectives.eot differ diff --git a/plugins/jquery.filer/uploads/AppleSansAdjectives.woff b/plugins/jquery.filer/uploads/AppleSansAdjectives.woff new file mode 100644 index 0000000..c64c625 Binary files /dev/null and b/plugins/jquery.filer/uploads/AppleSansAdjectives.woff differ diff --git a/plugins/jquery.filer/uploads/Designlazy-Macbook-iphone-mockup.png b/plugins/jquery.filer/uploads/Designlazy-Macbook-iphone-mockup.png new file mode 100644 index 0000000..28e23d2 Binary files /dev/null and b/plugins/jquery.filer/uploads/Designlazy-Macbook-iphone-mockup.png differ diff --git a/plugins/jquery.filer/uploads/Hardik_Pro.jpg b/plugins/jquery.filer/uploads/Hardik_Pro.jpg new file mode 100644 index 0000000..1753d1a Binary files /dev/null and b/plugins/jquery.filer/uploads/Hardik_Pro.jpg differ diff --git a/plugins/jquery.filer/uploads/brandlistingpagecontentidea-revised.png b/plugins/jquery.filer/uploads/brandlistingpagecontentidea-revised.png new file mode 100644 index 0000000..f1cbc6e Binary files /dev/null and b/plugins/jquery.filer/uploads/brandlistingpagecontentidea-revised.png differ diff --git a/plugins/jquery.filer/uploads/css_1.png b/plugins/jquery.filer/uploads/css_1.png new file mode 100644 index 0000000..0c8d4aa Binary files /dev/null and b/plugins/jquery.filer/uploads/css_1.png differ diff --git a/plugins/jquery.filer/uploads/cubana_590.png b/plugins/jquery.filer/uploads/cubana_590.png new file mode 100644 index 0000000..16fd1b2 Binary files /dev/null and b/plugins/jquery.filer/uploads/cubana_590.png differ diff --git a/plugins/jquery.filer/uploads/cubana_750.png b/plugins/jquery.filer/uploads/cubana_750.png new file mode 100644 index 0000000..c242319 Binary files /dev/null and b/plugins/jquery.filer/uploads/cubana_750.png differ diff --git a/plugins/jquery.filer/uploads/cubana_80.png b/plugins/jquery.filer/uploads/cubana_80.png new file mode 100644 index 0000000..7d94044 Binary files /dev/null and b/plugins/jquery.filer/uploads/cubana_80.png differ diff --git a/plugins/jquery.filer/uploads/desktop_hd.png b/plugins/jquery.filer/uploads/desktop_hd.png new file mode 100644 index 0000000..4067794 Binary files /dev/null and b/plugins/jquery.filer/uploads/desktop_hd.png differ diff --git a/plugins/jquery.filer/uploads/favicon_1.png b/plugins/jquery.filer/uploads/favicon_1.png new file mode 100644 index 0000000..c6295af Binary files /dev/null and b/plugins/jquery.filer/uploads/favicon_1.png differ diff --git a/plugins/jquery.filer/uploads/features.png b/plugins/jquery.filer/uploads/features.png new file mode 100644 index 0000000..5d5a05a Binary files /dev/null and b/plugins/jquery.filer/uploads/features.png differ diff --git a/plugins/jquery.filer/uploads/flacto_WB.png b/plugins/jquery.filer/uploads/flacto_WB.png new file mode 100644 index 0000000..7016afd Binary files /dev/null and b/plugins/jquery.filer/uploads/flacto_WB.png differ diff --git a/plugins/jquery.filer/uploads/landing.jpg b/plugins/jquery.filer/uploads/landing.jpg new file mode 100644 index 0000000..851df2d Binary files /dev/null and b/plugins/jquery.filer/uploads/landing.jpg differ diff --git a/plugins/jquery.filer/uploads/preview.html b/plugins/jquery.filer/uploads/preview.html new file mode 100644 index 0000000..bc398f7 --- /dev/null +++ b/plugins/jquery.filer/uploads/preview.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html> +<head> +<title> +AppleSansAdjectives + - Web font preview +</title> +<style type='text/css'> + +@font-face { + font-family: 'AppleSansAdjectives'; + src: url('AppleSansAdjectives.eot?#iefix') format('embedded-opentype'), url('AppleSansAdjectives.woff') format('woff'), url('AppleSansAdjectives.ttf') format('truetype'), url('AppleSansAdjectives.svg#AppleSansAdjectives') format('svg'); + font-weight: normal; + font-style: normal; +} + +body { font-family: 'AppleSansAdjectives' !important; } +h1, h2, h3, h4 { font-weight: normal; } +.reg { color:black; background:white; } +.inverse { color:white; background:black; } +div { padding: 10px 15px; } +.right { background:white; width:30%; float: right; font-family: sans-serif; border: 1px solid black; border-width: 0 0 1px 1px;} +</style> +</head> +<body> +<div class='right'> +<h3>How to Install</h3> +<h4>Step 1</h4> +<div> +Upload contents of the zip file to your web server's public directory. For example: +<code>www.yourdomain.com/css/webfont/</code> +</div> +<h4>Step 2</h4> +<div> +Add contents of +<code>styles.css</code> +to your site's style sheet. +</div> +<h4>Step 3</h4> +<div> +Make sure you adjust the paths in code from +<code>styles.css</code> +to reflect the relative path on your server. +</div> +<div> +For this example you need to prepend +<code>/css/webfont/</code> +to all +<code>src url</code> +definitions. Like this: +</div> +<div> +<code style='font-size:11px;'>@font-face { + font-family: 'AppleSansAdjectives'; + src: url('/css/webfont/AppleSansAdjectives.eot?#iefix') format('embedded-opentype'), url('/css/webfont/AppleSansAdjectives.woff') format('woff'), url('/css/webfont/AppleSansAdjectives.ttf') format('truetype'), url('/css/webfont/AppleSansAdjectives.svg#AppleSansAdjectives') format('svg'); + font-weight: normal; + font-style: normal; +}</code> +</div> +</div> +<div class='reg'> +<h1> +H1 +AppleSansAdjectives +</h1> +<h2> +H2 +Donec lacinia, felis nec sagittis feugiat +</h2> +<h3> +H3 +Sed ullamcorper tincidunt libero, sed tempus sem rhoncus non. +</h3> +<h4> +H4 +Etiam in nulla eros, quis laoreet orci. Morbi ullamcorper tempor nunc sed ullamcorper. +</h4> +<div> +DEFAULT +In hac habitasse platea dictumst. Sed hendrerit scelerisque pellentesque. Suspendisse id eros quis sem tristique varius sed eget velit. Phasellus pellentesque ipsum non quam vulputate euismod. Nullam eget viverra lorem. Ut eu tortor metus. Mauris eget quam nulla, eu suscipit magna. Nullam vitae lectus quam, a consequat tortor. Ut sed arcu arcu. Aliquam aliquet lacinia lorem, id tristique nunc pulvinar eget. +</div> +<div> +SMALL +<small> +Proin volutpat, magna at vehicula blandit, massa lectus aliquam dolor, ut porta magna odio eu nunc. Nam nisi diam, commodo vitae hendrerit non, consequat sed est. Proin fringilla, nunc non vulputate hendrerit, turpis purus vestibulum diam, a venenatis nunc lectus nec quam. Quisque euismod fermentum mauris, at accumsan mi pulvinar in. Fusce libero lectus, fringilla non congue vel, cursus nec metus. Nunc ac ante quam. +</small> +</div> +<div> +BIG +<big> +Curabitur auctor orci vel felis sodales porttitor. Aenean non neque auctor tellus suscipit vulputate ut quis nunc. Integer tellus purus, venenatis a cursus nec, vestibulum eget turpis. Nulla pulvinar dictum elit, vulputate sodales nunc laoreet eget. Aliquam vitae urna ac risus scelerisque iaculis. +</big> +</div> + +</div> +<div class='inverse'> +<h1> +H1 +AppleSansAdjectives +</h1> +<h2> +H2 +Donec lacinia, felis nec sagittis feugiat +</h2> +<h3> +H3 +Sed ullamcorper tincidunt libero, sed tempus sem rhoncus non. +</h3> +<h4> +H4 +Etiam in nulla eros, quis laoreet orci. Morbi ullamcorper tempor nunc sed ullamcorper. +</h4> +<div> +DEFAULT +In hac habitasse platea dictumst. Sed hendrerit scelerisque pellentesque. Suspendisse id eros quis sem tristique varius sed eget velit. Phasellus pellentesque ipsum non quam vulputate euismod. Nullam eget viverra lorem. Ut eu tortor metus. Mauris eget quam nulla, eu suscipit magna. Nullam vitae lectus quam, a consequat tortor. Ut sed arcu arcu. Aliquam aliquet lacinia lorem, id tristique nunc pulvinar eget. +</div> +<div> +SMALL +<small> +Proin volutpat, magna at vehicula blandit, massa lectus aliquam dolor, ut porta magna odio eu nunc. Nam nisi diam, commodo vitae hendrerit non, consequat sed est. Proin fringilla, nunc non vulputate hendrerit, turpis purus vestibulum diam, a venenatis nunc lectus nec quam. Quisque euismod fermentum mauris, at accumsan mi pulvinar in. Fusce libero lectus, fringilla non congue vel, cursus nec metus. Nunc ac ante quam. +</small> +</div> +<div> +BIG +<big> +Curabitur auctor orci vel felis sodales porttitor. Aenean non neque auctor tellus suscipit vulputate ut quis nunc. Integer tellus purus, venenatis a cursus nec, vestibulum eget turpis. Nulla pulvinar dictum elit, vulputate sodales nunc laoreet eget. Aliquam vitae urna ac risus scelerisque iaculis. +</big> +</div> + +</div> +</body> +</html> diff --git a/plugins/jquery.filer/uploads/screenshot-themeforest.net 2016-09-18 20-05-16.png b/plugins/jquery.filer/uploads/screenshot-themeforest.net 2016-09-18 20-05-16.png new file mode 100644 index 0000000..82e2f8d Binary files /dev/null and b/plugins/jquery.filer/uploads/screenshot-themeforest.net 2016-09-18 20-05-16.png differ diff --git a/plugins/jquery.filer/uploads/styles.css b/plugins/jquery.filer/uploads/styles.css new file mode 100644 index 0000000..05cb176 --- /dev/null +++ b/plugins/jquery.filer/uploads/styles.css @@ -0,0 +1,7 @@ + +@font-face { + font-family: 'AppleSansAdjectives'; + src: url('AppleSansAdjectives.eot?#iefix') format('embedded-opentype'), url('AppleSansAdjectives.woff') format('woff'), url('AppleSansAdjectives.ttf') format('truetype'), url('AppleSansAdjectives.svg#AppleSansAdjectives') format('svg'); + font-weight: normal; + font-style: normal; +} diff --git a/plugins/jquery.steps/css/jquery.steps.css b/plugins/jquery.steps/css/jquery.steps.css new file mode 100644 index 0000000..ad9f1c1 --- /dev/null +++ b/plugins/jquery.steps/css/jquery.steps.css @@ -0,0 +1,382 @@ +/* + Common +*/ + +.wizard, +.tabcontrol +{ + display: block; + width: 100%; + overflow: hidden; +} + +.wizard a, +.tabcontrol a +{ + outline: 0; +} + +.wizard ul, +.tabcontrol ul +{ + list-style: none !important; + padding: 0; + margin: 0; +} + +.wizard ul > li, +.tabcontrol ul > li +{ + display: block; + padding: 0; +} + +/* Accessibility */ +.wizard > .steps .current-info, +.tabcontrol > .steps .current-info +{ + position: absolute; + left: -999em; +} + +.wizard > .content > .title, +.tabcontrol > .content > .title +{ + position: absolute; + left: -999em; +} + + + +/* + Wizard +*/ + +.wizard > .steps +{ + position: relative; + display: block; + width: 100%; +} + +.wizard.vertical > .steps +{ + display: inline; + float: left; + width: 30%; +} + +.wizard > .steps .number +{ + font-size: 1.429em; +} + +.wizard > .steps > ul > li +{ + width: 25%; +} + +.wizard > .steps > ul > li, +.wizard > .actions > ul > li +{ + float: left; +} + +.wizard.vertical > .steps > ul > li +{ + float: none; + width: 100%; +} + +.wizard > .steps a, +.wizard > .steps a:hover, +.wizard > .steps a:active +{ + display: block; + width: auto; + margin: 0 0.5em 0.5em; + padding: 1em 1em; + text-decoration: none; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.wizard > .steps .disabled a, +.wizard > .steps .disabled a:hover, +.wizard > .steps .disabled a:active +{ + background: #eee; + color: #aaa; + cursor: default; +} + +.wizard > .steps .current a, +.wizard > .steps .current a:hover, +.wizard > .steps .current a:active +{ + background: #2184be; + color: #fff; + cursor: default; +} + +.wizard > .steps .done a, +.wizard > .steps .done a:hover, +.wizard > .steps .done a:active +{ + background: #9dc8e2; + color: #fff; +} + +.wizard > .steps .error a, +.wizard > .steps .error a:hover, +.wizard > .steps .error a:active +{ + background: #ff3111; + color: #fff; +} + +.wizard > .content +{ + background: #eee; + display: block; + margin: 0.5em; + min-height: 35em; + overflow: hidden; + position: relative; + width: auto; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.wizard.vertical > .content +{ + display: inline; + float: left; + margin: 0 2.5% 0.5em 2.5%; + width: 65%; +} + +.wizard > .content > .body +{ + float: left; + position: absolute; + width: 95%; + height: 95%; + padding: 2.5%; +} + +.wizard > .content > .body ul +{ + list-style: disc !important; +} + +.wizard > .content > .body ul > li +{ + display: list-item; +} + +.wizard > .content > .body > iframe +{ + border: 0 none; + width: 100%; + height: 100%; +} + +.wizard > .content > .body input +{ + display: block; + border: 1px solid #ccc; +} + +.wizard > .content > .body input[type="checkbox"] +{ + display: inline-block; +} + +.wizard > .content > .body input.error +{ + background: rgb(251, 227, 228); + border: 1px solid #fbc2c4; + color: #8a1f11; +} + +.wizard > .content > .body label +{ + display: inline-block; + margin-bottom: 0.5em; +} + +.wizard > .content > .body label.error +{ + color: #8a1f11; + display: inline-block; + margin-left: 1.5em; +} + +.wizard > .actions +{ + position: relative; + display: block; + text-align: right; + width: 100%; +} + +.wizard.vertical > .actions +{ + display: inline; + float: right; + margin: 0 2.5%; + width: 95%; +} + +.wizard > .actions > ul +{ + display: inline-block; + text-align: right; +} + +.wizard > .actions > ul > li +{ + margin: 0 0.5em; +} + +.wizard.vertical > .actions > ul > li +{ + margin: 0 0 0 1em; +} + +.wizard > .actions a, +.wizard > .actions a:hover, +.wizard > .actions a:active +{ + background: #2184be; + color: #fff; + display: block; + padding: 0.5em 1em; + text-decoration: none; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.wizard > .actions .disabled a, +.wizard > .actions .disabled a:hover, +.wizard > .actions .disabled a:active +{ + background: #eee; + color: #aaa; +} + +.wizard > .loading +{ +} + +.wizard > .loading .spinner +{ +} + + + +/* + Tabcontrol +*/ + +.tabcontrol > .steps +{ + position: relative; + display: block; + width: 100%; +} + +.tabcontrol > .steps > ul +{ + position: relative; + margin: 6px 0 0 0; + top: 1px; + z-index: 1; +} + +.tabcontrol > .steps > ul > li +{ + float: left; + margin: 5px 2px 0 0; + padding: 1px; + + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +.tabcontrol > .steps > ul > li:hover +{ + background: #edecec; + border: 1px solid #bbb; + padding: 0; +} + +.tabcontrol > .steps > ul > li.current +{ + background: #fff; + border: 1px solid #bbb; + border-bottom: 0 none; + padding: 0 0 1px 0; + margin-top: 0; +} + +.tabcontrol > .steps > ul > li > a +{ + color: #5f5f5f; + display: inline-block; + border: 0 none; + margin: 0; + padding: 10px 30px; + text-decoration: none; +} + +.tabcontrol > .steps > ul > li > a:hover +{ + text-decoration: none; +} + +.tabcontrol > .steps > ul > li.current > a +{ + padding: 15px 30px 10px 30px; +} + +.tabcontrol > .content +{ + position: relative; + display: inline-block; + width: 100%; + height: 35em; + overflow: hidden; + border-top: 1px solid #bbb; + padding-top: 20px; +} + +.tabcontrol > .content > .body +{ + float: left; + position: absolute; + width: 95%; + height: 95%; + padding: 2.5%; +} + +.tabcontrol > .content > .body ul +{ + list-style: disc !important; +} + +.tabcontrol > .content > .body ul > li +{ + display: list-item; +} \ No newline at end of file diff --git a/plugins/jquery.steps/js/jquery.steps.min.js b/plugins/jquery.steps/js/jquery.steps.min.js new file mode 100644 index 0000000..755aedf --- /dev/null +++ b/plugins/jquery.steps/js/jquery.steps.min.js @@ -0,0 +1,6 @@ +/*! + * jQuery Steps v1.1.0 - 09/04/2014 + * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com) + * Licensed under MIT http://www.opensource.org/licenses/MIT + */ +!function(a,b){function c(a,b){o(a).push(b)}function d(d,e,f){var g=d.children(e.headerTag),h=d.children(e.bodyTag);g.length>h.length?R(Z,"contents"):g.length<h.length&&R(Z,"titles");var i=e.startIndex;if(f.stepCount=g.length,e.saveState&&a.cookie){var j=a.cookie(U+q(d)),k=parseInt(j,0);!isNaN(k)&&k<f.stepCount&&(i=k)}f.currentIndex=i,g.each(function(e){var f=a(this),g=h.eq(e),i=g.data("mode"),j=null==i?$.html:r($,/^\s*$/.test(i)||isNaN(i)?i:parseInt(i,0)),k=j===$.html||g.data("url")===b?"":g.data("url"),l=j!==$.html&&"1"===g.data("loaded"),m=a.extend({},bb,{title:f.html(),content:j===$.html?g.html():"",contentUrl:k,contentMode:j,contentLoaded:l});c(d,m)})}function e(a){a.triggerHandler("canceled")}function f(a,b){return a.currentIndex-b}function g(b,c){var d=i(b);b.unbind(d).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(d),b.removeClass(c.clearFixCssClass+" vertical");var e=b.find(".content > *");e.removeData("loaded").removeData("mode").removeData("url"),e.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"),b.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();var f=a('<{0} class="{1}"></{0}>'.format(b.get(0).tagName,b.attr("class"))),g=b._id();return null!=g&&""!==g&&f._id(g),f.html(b.find(".content").html()),b.after(f),b.remove(),f}function h(a,b){var c=a.find(".steps li").eq(b.currentIndex);a.triggerHandler("finishing",[b.currentIndex])?(c.addClass("done").removeClass("error"),a.triggerHandler("finished",[b.currentIndex])):c.addClass("error")}function i(a){var b=a.data("eventNamespace");return null==b&&(b="."+q(a),a.data("eventNamespace",b)),b}function j(a,b){var c=q(a);return a.find("#"+c+V+b)}function k(a,b){var c=q(a);return a.find("#"+c+W+b)}function l(a,b){var c=q(a);return a.find("#"+c+X+b)}function m(a){return a.data("options")}function n(a){return a.data("state")}function o(a){return a.data("steps")}function p(a,b){var c=o(a);return(0>b||b>=c.length)&&R(Y),c[b]}function q(a){var b=a.data("uid");return null==b&&(b=a._id(),null==b&&(b="steps-uid-".concat(T),a._id(b)),T++,a.data("uid",b)),b}function r(a,c){if(S("enumType",a),S("keyOrValue",c),"string"==typeof c){var d=a[c];return d===b&&R("The enum key '{0}' does not exist.",c),d}if("number"==typeof c){for(var e in a)if(a[e]===c)return c;R("Invalid enum value '{0}'.",c)}else R("Invalid key or value type.")}function s(a,b,c){return B(a,b,c,v(c,1))}function t(a,b,c){return B(a,b,c,f(c,1))}function u(a,b,c,d){if((0>d||d>=c.stepCount)&&R(Y),!(b.forceMoveForward&&d<c.currentIndex)){var e=c.currentIndex;return a.triggerHandler("stepChanging",[c.currentIndex,d])?(c.currentIndex=d,O(a,b,c),E(a,b,c,e),D(a,b,c),A(a,b,c),P(a,b,c,d,e,function(){a.triggerHandler("stepChanged",[d,e])})):a.find(".steps li").eq(e).addClass("error"),!0}}function v(a,b){return a.currentIndex+b}function w(b){var c=a.extend(!0,{},cb,b);return this.each(function(){var b=a(this),e={currentIndex:c.startIndex,currentStep:null,stepCount:0,transitionElement:null};b.data("options",c),b.data("state",e),b.data("steps",[]),d(b,c,e),J(b,c,e),G(b,c),c.autoFocus&&0===T&&j(b,c.startIndex).focus(),b.triggerHandler("init",[c.startIndex])})}function x(b,c,d,e,f){(0>e||e>d.stepCount)&&R(Y),f=a.extend({},bb,f),y(b,e,f),d.currentIndex!==d.stepCount&&d.currentIndex>=e&&(d.currentIndex++,O(b,c,d)),d.stepCount++;var g=b.find(".content"),h=a("<{0}>{1}</{0}>".format(c.headerTag,f.title)),i=a("<{0}></{0}>".format(c.bodyTag));return(null==f.contentMode||f.contentMode===$.html)&&i.html(f.content),0===e?g.prepend(i).prepend(h):k(b,e-1).after(i).after(h),K(b,d,i,e),N(b,c,d,h,e),F(b,c,d,e),e===d.currentIndex&&E(b,c,d),D(b,c,d),b}function y(a,b,c){o(a).splice(b,0,c)}function z(b){var c=a(this),d=m(c),e=n(c);if(d.suppressPaginationOnFocus&&c.find(":focus").is(":input"))return b.preventDefault(),!1;var f={left:37,right:39};b.keyCode===f.left?(b.preventDefault(),t(c,d,e)):b.keyCode===f.right&&(b.preventDefault(),s(c,d,e))}function A(b,c,d){if(d.stepCount>0){var e=d.currentIndex,f=p(b,e);if(!c.enableContentCache||!f.contentLoaded)switch(r($,f.contentMode)){case $.iframe:b.find(".content > .body").eq(d.currentIndex).empty().html('<iframe src="'+f.contentUrl+'" frameborder="0" scrolling="no" />').data("loaded","1");break;case $.async:var g=k(b,e)._aria("busy","true").empty().append(M(c.loadingTemplate,{text:c.labels.loading}));a.ajax({url:f.contentUrl,cache:!1}).done(function(a){g.empty().html(a)._aria("busy","false").data("loaded","1"),b.triggerHandler("contentLoaded",[e])})}}}function B(a,b,c,d){var e=c.currentIndex;if(d>=0&&d<c.stepCount&&!(b.forceMoveForward&&d<c.currentIndex)){var f=j(a,d),g=f.parent(),h=g.hasClass("disabled");return g._enableAria(),f.click(),e===c.currentIndex&&h?(g._enableAria(!1),!1):!0}return!1}function C(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),f=m(d),g=n(d),i=c.attr("href");switch(i.substring(i.lastIndexOf("#")+1)){case"cancel":e(d);break;case"finish":h(d,g);break;case"next":s(d,f,g);break;case"previous":t(d,f,g)}}function D(a,b,c){if(b.enablePagination){var d=a.find(".actions a[href$='#finish']").parent(),e=a.find(".actions a[href$='#next']").parent();if(!b.forceMoveForward){var f=a.find(".actions a[href$='#previous']").parent();f._enableAria(c.currentIndex>0)}b.enableFinishButton&&b.showFinishButtonAlways?(d._enableAria(c.stepCount>0),e._enableAria(c.stepCount>1&&c.stepCount>c.currentIndex+1)):(d._showAria(b.enableFinishButton&&c.stepCount===c.currentIndex+1),e._showAria(0===c.stepCount||c.stepCount>c.currentIndex+1)._enableAria(c.stepCount>c.currentIndex+1||!b.enableFinishButton))}}function E(b,c,d,e){var f=j(b,d.currentIndex),g=a('<span class="current-info audible">'+c.labels.current+" </span>"),h=b.find(".content > .title");if(null!=e){var i=j(b,e);i.parent().addClass("done").removeClass("error")._selectAria(!1),h.eq(e).removeClass("current").next(".body").removeClass("current"),g=i.find(".current-info"),f.focus()}f.prepend(g).parent()._selectAria().removeClass("done")._enableAria(),h.eq(d.currentIndex).addClass("current").next(".body").addClass("current")}function F(a,b,c,d){for(var e=q(a),f=d;f<c.stepCount;f++){var g=e+V+f,h=e+W+f,i=e+X+f,j=a.find(".title").eq(f)._id(i);a.find(".steps a").eq(f)._id(g)._aria("controls",h).attr("href","#"+i).html(M(b.titleTemplate,{index:f+1,title:j.html()})),a.find(".body").eq(f)._id(h)._aria("labelledby",i)}}function G(a,b){var c=i(a);a.bind("canceled"+c,b.onCanceled),a.bind("contentLoaded"+c,b.onContentLoaded),a.bind("finishing"+c,b.onFinishing),a.bind("finished"+c,b.onFinished),a.bind("init"+c,b.onInit),a.bind("stepChanging"+c,b.onStepChanging),a.bind("stepChanged"+c,b.onStepChanged),b.enableKeyNavigation&&a.bind("keyup"+c,z),a.find(".actions a").bind("click"+c,C)}function H(a,b,c,d){return 0>d||d>=c.stepCount||c.currentIndex===d?!1:(I(a,d),c.currentIndex>d&&(c.currentIndex--,O(a,b,c)),c.stepCount--,l(a,d).remove(),k(a,d).remove(),j(a,d).parent().remove(),0===d&&a.find(".steps li").first().addClass("first"),d===c.stepCount&&a.find(".steps li").eq(d).addClass("last"),F(a,b,c,d),D(a,b,c),!0)}function I(a,b){o(a).splice(b,1)}function J(b,c,d){var e='<{0} class="{1}">{2}</{0}>',f=r(_,c.stepsOrientation),g=f===_.vertical?" vertical":"",h=a(e.format(c.contentContainerTag,"content "+c.clearFixCssClass,b.html())),i=a(e.format(c.stepsContainerTag,"steps "+c.clearFixCssClass,'<ul role="tablist"></ul>')),j=h.children(c.headerTag),k=h.children(c.bodyTag);b.attr("role","application").empty().append(i).append(h).addClass(c.cssClass+" "+c.clearFixCssClass+g),k.each(function(c){K(b,d,a(this),c)}),j.each(function(e){N(b,c,d,a(this),e)}),E(b,c,d),L(b,c,d)}function K(a,b,c,d){var e=q(a),f=e+W+d,g=e+X+d;c._id(f).attr("role","tabpanel")._aria("labelledby",g).addClass("body")._showAria(b.currentIndex===d)}function L(a,b,c){if(b.enablePagination){var d='<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>',e='<li><a href="#{0}" role="menuitem">{1}</a></li>',f="";b.forceMoveForward||(f+=e.format("previous",b.labels.previous)),f+=e.format("next",b.labels.next),b.enableFinishButton&&(f+=e.format("finish",b.labels.finish)),b.enableCancelButton&&(f+=e.format("cancel",b.labels.cancel)),a.append(d.format(b.actionContainerTag,b.clearFixCssClass,b.labels.pagination,f)),D(a,b,c),A(a,b,c)}}function M(a,c){for(var d=a.match(/#([a-z]*)#/gi),e=0;e<d.length;e++){var f=d[e],g=f.substring(1,f.length-1);c[g]===b&&R("The key '{0}' does not exist in the substitute collection!",g),a=a.replace(f,c[g])}return a}function N(b,c,d,e,f){var g=q(b),h=g+V+f,j=g+W+f,k=g+X+f,l=b.find(".steps > ul"),m=M(c.titleTemplate,{index:f+1,title:e.html()}),n=a('<li role="tab"><a id="'+h+'" href="#'+k+'" aria-controls="'+j+'">'+m+"</a></li>");n._enableAria(c.enableAllSteps||d.currentIndex>f),d.currentIndex>f&&n.addClass("done"),e._id(k).attr("tabindex","-1").addClass("title"),0===f?l.prepend(n):l.find("li").eq(f-1).after(n),0===f&&l.find("li").removeClass("first").eq(f).addClass("first"),f===d.stepCount-1&&l.find("li").removeClass("last").eq(f).addClass("last"),n.children("a").bind("click"+i(b),Q)}function O(b,c,d){c.saveState&&a.cookie&&a.cookie(U+q(b),d.currentIndex)}function P(b,c,d,e,f,g){var h=b.find(".content > .body"),i=r(ab,c.transitionEffect),j=c.transitionEffectSpeed,k=h.eq(e),l=h.eq(f);switch(i){case ab.fade:case ab.slide:var m=i===ab.fade?"fadeOut":"slideUp",o=i===ab.fade?"fadeIn":"slideDown";d.transitionElement=k,l[m](j,function(){var b=a(this)._showAria(!1).parent().parent(),c=n(b);c.transitionElement&&(c.transitionElement[o](j,function(){a(this)._showAria()}).promise().done(g),c.transitionElement=null)});break;case ab.slideLeft:var p=l.outerWidth(!0),q=e>f?-p:p,s=e>f?p:-p;a.when(l.animate({left:q},j,function(){a(this)._showAria(!1)}),k.css("left",s+"px")._showAria().animate({left:0},j)).done(g);break;default:a.when(l._showAria(!1),k._showAria()).done(g)}}function Q(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),e=m(d),f=n(d),g=f.currentIndex;if(c.parent().is(":not(.disabled):not(.current)")){var h=c.attr("href"),i=parseInt(h.substring(h.lastIndexOf("-")+1),0);u(d,e,f,i)}return g===f.currentIndex?(j(d,g).focus(),!1):void 0}function R(a){throw arguments.length>1&&(a=a.format(Array.prototype.slice.call(arguments,1))),new Error(a)}function S(a,b){null==b&&R("The argument '{0}' is null or undefined.",a)}a.fn.extend({_aria:function(a,b){return this.attr("aria-"+a,b)},_removeAria:function(a){return this.removeAttr("aria-"+a)},_enableAria:function(a){return null==a||a?this.removeClass("disabled")._aria("disabled","false"):this.addClass("disabled")._aria("disabled","true")},_showAria:function(a){return null==a||a?this.show()._aria("hidden","false"):this.hide()._aria("hidden","true")},_selectAria:function(a){return null==a||a?this.addClass("current")._aria("selected","true"):this.removeClass("current")._aria("selected","false")},_id:function(a){return a?this.attr("id",a):this.attr("id")}}),String.prototype.format||(String.prototype.format=function(){for(var b=1===arguments.length&&a.isArray(arguments[0])?arguments[0]:arguments,c=this,d=0;d<b.length;d++){var e=new RegExp("\\{"+d+"\\}","gm");c=c.replace(e,b[d])}return c});var T=0,U="jQu3ry_5teps_St@te_",V="-t-",W="-p-",X="-h-",Y="Index out of range.",Z="One or more corresponding step {0} are missing.";a.fn.steps=function(b){return a.fn.steps[b]?a.fn.steps[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.steps"):w.apply(this,arguments)},a.fn.steps.add=function(a){var b=n(this);return x(this,m(this),b,b.stepCount,a)},a.fn.steps.destroy=function(){return g(this,m(this))},a.fn.steps.finish=function(){h(this,n(this))},a.fn.steps.getCurrentIndex=function(){return n(this).currentIndex},a.fn.steps.getCurrentStep=function(){return p(this,n(this).currentIndex)},a.fn.steps.getStep=function(a){return p(this,a)},a.fn.steps.insert=function(a,b){return x(this,m(this),n(this),a,b)},a.fn.steps.next=function(){return s(this,m(this),n(this))},a.fn.steps.previous=function(){return t(this,m(this),n(this))},a.fn.steps.remove=function(a){return H(this,m(this),n(this),a)},a.fn.steps.setStep=function(){throw new Error("Not yet implemented!")},a.fn.steps.skip=function(){throw new Error("Not yet implemented!")};var $=a.fn.steps.contentMode={html:0,iframe:1,async:2},_=a.fn.steps.stepsOrientation={horizontal:0,vertical:1},ab=a.fn.steps.transitionEffect={none:0,fade:1,slide:2,slideLeft:3},bb=a.fn.steps.stepModel={title:"",content:"",contentUrl:"",contentMode:$.html,contentLoaded:!1},cb=a.fn.steps.defaults={headerTag:"h1",bodyTag:"div",contentContainerTag:"div",actionContainerTag:"div",stepsContainerTag:"div",cssClass:"wizard",clearFixCssClass:"clearfix",stepsOrientation:_.horizontal,titleTemplate:'<span class="number">#index#.</span> #title#',loadingTemplate:'<span class="spinner"></span> #text#',autoFocus:!1,enableAllSteps:!1,enableKeyNavigation:!0,enablePagination:!0,suppressPaginationOnFocus:!0,enableContentCache:!0,enableCancelButton:!1,enableFinishButton:!0,preloadContent:!1,showFinishButtonAlways:!1,forceMoveForward:!1,saveState:!1,startIndex:0,transitionEffect:ab.none,transitionEffectSpeed:200,onStepChanging:function(){return!0},onStepChanged:function(){},onCanceled:function(){},onFinishing:function(){return!0},onFinished:function(){},onContentLoaded:function(){},onInit:function(){},labels:{cancel:"Cancel",current:"current step:",pagination:"Pagination",finish:"Finish",next:"Next",previous:"Previous",loading:"Loading ..."}}}(jQuery); \ No newline at end of file diff --git a/plugins/jvectormap/gdp-data.js b/plugins/jvectormap/gdp-data.js new file mode 100644 index 0000000..169f564 --- /dev/null +++ b/plugins/jvectormap/gdp-data.js @@ -0,0 +1,185 @@ +var gdpData = { + "AF": 16.63, + "AL": 11.58, + "DZ": 158.97, + "AO": 85.81, + "AG": 1.1, + "AR": 351.02, + "AM": 8.83, + "AU": 1219.72, + "AT": 366.26, + "AZ": 52.17, + "BS": 7.54, + "BH": 21.73, + "BD": 105.4, + "BB": 3.96, + "BY": 52.89, + "BE": 461.33, + "BZ": 1.43, + "BJ": 6.49, + "BT": 1.4, + "BO": 19.18, + "BA": 16.2, + "BW": 12.5, + "BR": 2023.53, + "BN": 11.96, + "BG": 44.84, + "BF": 8.67, + "BI": 1.47, + "KH": 11.36, + "CM": 21.88, + "CA": 1563.66, + "CV": 1.57, + "CF": 2.11, + "TD": 7.59, + "CL": 199.18, + "CN": 5745.13, + "CO": 283.11, + "KM": 0.56, + "CD": 12.6, + "CG": 11.88, + "CR": 35.02, + "CI": 22.38, + "HR": 59.92, + "CY": 22.75, + "CZ": 195.23, + "DK": 304.56, + "DJ": 1.14, + "DM": 0.38, + "DO": 50.87, + "EC": 61.49, + "EG": 216.83, + "SV": 21.8, + "GQ": 14.55, + "ER": 2.25, + "EE": 19.22, + "ET": 30.94, + "FJ": 3.15, + "FI": 231.98, + "FR": 2555.44, + "GA": 12.56, + "GM": 1.04, + "GE": 11.23, + "DE": 3305.9, + "GH": 18.06, + "GR": 305.01, + "GD": 0.65, + "GT": 40.77, + "GN": 4.34, + "GW": 0.83, + "GY": 2.2, + "HT": 6.5, + "HN": 15.34, + "HK": 226.49, + "HU": 132.28, + "IS": 12.77, + "IN": 1430.02, + "ID": 695.06, + "IR": 337.9, + "IQ": 84.14, + "IE": 204.14, + "IL": 201.25, + "IT": 2036.69, + "JM": 13.74, + "JP": 5390.9, + "JO": 27.13, + "KZ": 129.76, + "KE": 32.42, + "KI": 0.15, + "KR": 986.26, + "UNDEFINED": 5.73, + "KW": 117.32, + "KG": 4.44, + "LA": 6.34, + "LV": 23.39, + "LB": 39.15, + "LS": 1.8, + "LR": 0.98, + "LY": 77.91, + "LT": 35.73, + "LU": 52.43, + "MK": 9.58, + "MG": 8.33, + "MW": 5.04, + "MY": 218.95, + "MV": 1.43, + "ML": 9.08, + "MT": 7.8, + "MR": 3.49, + "MU": 9.43, + "MX": 1004.04, + "MD": 5.36, + "MN": 5.81, + "ME": 3.88, + "MA": 91.7, + "MZ": 10.21, + "MM": 35.65, + "NA": 11.45, + "NP": 15.11, + "NL": 770.31, + "NZ": 138, + "NI": 6.38, + "NE": 5.6, + "NG": 206.66, + "NO": 413.51, + "OM": 53.78, + "PK": 174.79, + "PA": 27.2, + "PG": 8.81, + "PY": 17.17, + "PE": 153.55, + "PH": 189.06, + "PL": 438.88, + "PT": 223.7, + "QA": 126.52, + "RO": 158.39, + "RU": 1476.91, + "RW": 5.69, + "WS": 0.55, + "ST": 0.19, + "SA": 434.44, + "SN": 12.66, + "RS": 38.92, + "SC": 0.92, + "SL": 1.9, + "SG": 217.38, + "SK": 86.26, + "SI": 46.44, + "SB": 0.67, + "ZA": 354.41, + "ES": 1374.78, + "LK": 48.24, + "KN": 0.56, + "LC": 1, + "VC": 0.58, + "SD": 65.93, + "SR": 3.3, + "SZ": 3.17, + "SE": 444.59, + "CH": 522.44, + "SY": 59.63, + "TW": 426.98, + "TJ": 5.58, + "TZ": 22.43, + "TH": 312.61, + "TL": 0.62, + "TG": 3.07, + "TO": 0.3, + "TT": 21.2, + "TN": 43.86, + "TR": 729.05, + "TM": 0, + "UG": 17.12, + "UA": 136.56, + "AE": 239.65, + "GB": 2258.57, + "US": 14624.18, + "UY": 40.71, + "UZ": 37.72, + "VU": 0.72, + "VE": 285.21, + "VN": 101.99, + "YE": 30.02, + "ZM": 15.69, + "ZW": 5.57 +}; \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-2.0.2.css b/plugins/jvectormap/jquery-jvectormap-2.0.2.css new file mode 100644 index 0000000..0238297 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-2.0.2.css @@ -0,0 +1,130 @@ +.jvectormap-container { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; +} + +.jvectormap-tip { + position: absolute; + display: none; + border: solid 1px #CDCDCD; + border-radius: 3px; + background: #292929; + color: white; + font-family: sans-serif, Verdana; + font-size: smaller; + padding: 3px; +} + +.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback { + position: absolute; + left: 10px; + border-radius: 3px; + background: #292929; + padding: 5px; + color: white; + cursor: pointer; + line-height: 20px; + text-align: center; + box-sizing: content-box; +} + +.jvectormap-zoomin, .jvectormap-zoomout { + width: 20px; + height: 20px; +} + +.jvectormap-zoomin { + top: 10px; +} + +.jvectormap-zoomout { + top: 50px; +} + +.jvectormap-goback { + bottom: 10px; + z-index: 1000; + padding: 6px; +} + +.jvectormap-spinner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: center no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==); +} + +.jvectormap-legend-title { + font-weight: bold; + font-size: 14px; + text-align: center; +} + +.jvectormap-legend-cnt { + position: absolute; +} + +.jvectormap-legend-cnt-h { + bottom: 0; + right: 0; +} + +.jvectormap-legend-cnt-v { + top: 0; + right: 0; +} + +.jvectormap-legend { + background: black; + color: white; + border-radius: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend { + float: left; + margin: 0 10px 10px 0; + padding: 3px 3px 1px 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick { + float: left; +} + +.jvectormap-legend-cnt-v .jvectormap-legend { + margin: 10px 10px 0 0; + padding: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick { + width: 40px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample { + height: 15px; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample { + height: 20px; + width: 20px; + display: inline-block; + vertical-align: middle; +} + +.jvectormap-legend-tick-text { + font-size: 12px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-text { + text-align: center; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-text { + display: inline-block; + vertical-align: middle; + line-height: 20px; + padding-left: 3px; +} \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-2.0.2.min.js b/plugins/jvectormap/jquery-jvectormap-2.0.2.min.js new file mode 100644 index 0000000..c35d850 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-2.0.2.min.js @@ -0,0 +1,3328 @@ +/** + * jVectorMap version 2.0.2 + * + * Copyright 2011-2014, Kirill Lebedev + * + */ + +(function( $ ){ + var apiParams = { + set: { + colors: 1, + values: 1, + backgroundColor: 1, + scaleColors: 1, + normalizeFunction: 1, + focus: 1 + }, + get: { + selectedRegions: 1, + selectedMarkers: 1, + mapObject: 1, + regionName: 1 + } + }; + + $.fn.vectorMap = function(options) { + var map, + methodName, + map = this.children('.jvectormap-container').data('mapObject'); + + if (options === 'addMap') { + jvm.Map.maps[arguments[1]] = arguments[2]; + } else if ((options === 'set' || options === 'get') && apiParams[options][arguments[1]]) { + methodName = arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1); + return map[options+methodName].apply(map, Array.prototype.slice.call(arguments, 2)); + } else { + options = options || {}; + options.container = this; + map = new jvm.Map(options); + } + + return this; + }; +})( jQuery ); +/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh) + * Licensed under the MIT License (LICENSE.txt). + * + * Version: 3.1.9 + * + * Requires: jQuery 1.2.2+ + */ + +(function (factory) { + if ( typeof define === 'function' && define.amd ) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS style for Browserify + module.exports = factory; + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], + slice = Array.prototype.slice, + nullLowestDeltaTimeout, lowestDelta; + + if ( $.event.fixHooks ) { + for ( var i = toFix.length; i; ) { + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; + } + } + + var special = $.event.special.mousewheel = { + version: '3.1.9', + + setup: function() { + if ( this.addEventListener ) { + for ( var i = toBind.length; i; ) { + this.addEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + // Store the line height and page height for this particular element + $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); + $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i = toBind.length; i; ) { + this.removeEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + }, + + getLineHeight: function(elem) { + return parseInt($(elem)['offsetParent' in $.fn ? 'offsetParent' : 'parent']().css('fontSize'), 10); + }, + + getPageHeight: function(elem) { + return $(elem).height(); + }, + + settings: { + adjustOldDeltas: true + } + }; + + $.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); + }, + + unmousewheel: function(fn) { + return this.unbind('mousewheel', fn); + } + }); + + + function handler(event) { + var orgEvent = event || window.event, + args = slice.call(arguments, 1), + delta = 0, + deltaX = 0, + deltaY = 0, + absDelta = 0; + event = $.event.fix(orgEvent); + event.type = 'mousewheel'; + + // Old school scrollwheel delta + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } + + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaX = deltaY * -1; + deltaY = 0; + } + + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy + delta = deltaY === 0 ? deltaX : deltaY; + + // New school wheel delta (wheel event) + if ( 'deltaY' in orgEvent ) { + deltaY = orgEvent.deltaY * -1; + delta = deltaY; + } + if ( 'deltaX' in orgEvent ) { + deltaX = orgEvent.deltaX; + if ( deltaY === 0 ) { delta = deltaX * -1; } + } + + // No change actually happened, no reason to go any further + if ( deltaY === 0 && deltaX === 0 ) { return; } + + // Need to convert lines and pages to pixels if we aren't already in pixels + // There are three delta modes: + // * deltaMode 0 is by pixels, nothing to do + // * deltaMode 1 is by lines + // * deltaMode 2 is by pages + if ( orgEvent.deltaMode === 1 ) { + var lineHeight = $.data(this, 'mousewheel-line-height'); + delta *= lineHeight; + deltaY *= lineHeight; + deltaX *= lineHeight; + } else if ( orgEvent.deltaMode === 2 ) { + var pageHeight = $.data(this, 'mousewheel-page-height'); + delta *= pageHeight; + deltaY *= pageHeight; + deltaX *= pageHeight; + } + + // Store lowest absolute delta to normalize the delta values + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); + + if ( !lowestDelta || absDelta < lowestDelta ) { + lowestDelta = absDelta; + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + lowestDelta /= 40; + } + } + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + // Divide all the things by 40! + delta /= 40; + deltaX /= 40; + deltaY /= 40; + } + + // Get a whole, normalized value for the deltas + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); + + // Add information to the event object + event.deltaX = deltaX; + event.deltaY = deltaY; + event.deltaFactor = lowestDelta; + // Go ahead and set deltaMode to 0 since we converted to pixels + // Although this is a little odd since we overwrite the deltaX/Y + // properties with normalized deltas. + event.deltaMode = 0; + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + // Clearout lowestDelta after sometime to better + // handle multiple device types that give different + // a different lowestDelta + // Ex: trackpad = 3 and mouse wheel = 120 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); + + return ($.event.dispatch || $.event.handle).apply(this, args); + } + + function nullLowestDelta() { + lowestDelta = null; + } + + function shouldAdjustOldDeltas(orgEvent, absDelta) { + // If this is an older event and the delta is divisable by 120, + // then we are assuming that the browser is treating this as an + // older mouse wheel event and that we should divide the deltas + // by 40 to try and get a more usable deltaFactor. + // Side note, this actually impacts the reported scroll distance + // in older browsers and can cause scrolling to be slower than native. + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; + } + +}));/** + * @namespace jvm Holds core methods and classes used by jVectorMap. + */ +var jvm = { + + /** + * Inherits child's prototype from the parent's one. + * @param {Function} child + * @param {Function} parent + */ + inherits: function(child, parent) { + function temp() {} + temp.prototype = parent.prototype; + child.prototype = new temp(); + child.prototype.constructor = child; + child.parentClass = parent; + }, + + /** + * Mixes in methods from the source constructor to the target one. + * @param {Function} target + * @param {Function} source + */ + mixin: function(target, source){ + var prop; + + for (prop in source.prototype) { + if (source.prototype.hasOwnProperty(prop)) { + target.prototype[prop] = source.prototype[prop]; + } + } + }, + + min: function(values){ + var min = Number.MAX_VALUE, + i; + + if (values instanceof Array) { + for (i = 0; i < values.length; i++) { + if (values[i] < min) { + min = values[i]; + } + } + } else { + for (i in values) { + if (values[i] < min) { + min = values[i]; + } + } + } + return min; + }, + + max: function(values){ + var max = Number.MIN_VALUE, + i; + + if (values instanceof Array) { + for (i = 0; i < values.length; i++) { + if (values[i] > max) { + max = values[i]; + } + } + } else { + for (i in values) { + if (values[i] > max) { + max = values[i]; + } + } + } + return max; + }, + + keys: function(object){ + var keys = [], + key; + + for (key in object) { + keys.push(key); + } + return keys; + }, + + values: function(object){ + var values = [], + key, + i; + + for (i = 0; i < arguments.length; i++) { + object = arguments[i]; + for (key in object) { + values.push(object[key]); + } + } + return values; + }, + + whenImageLoaded: function(url){ + var deferred = new jvm.$.Deferred(), + img = jvm.$('<img/>'); + + img.error(function(){ + deferred.reject(); + }).load(function(){ + deferred.resolve(img); + }); + img.attr('src', url); + + return deferred; + }, + + isImageUrl: function(s){ + return /\.\w{3,4}$/.test(s); + } +}; + +jvm.$ = jQuery; + +/** + * indexOf polyfill for IE < 9 + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf + */ +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (searchElement, fromIndex) { + + var k; + + // 1. Let O be the result of calling ToObject passing + // the this value as the argument. + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + + var O = Object(this); + + // 2. Let lenValue be the result of calling the Get + // internal method of O with the argument "length". + // 3. Let len be ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. If len is 0, return -1. + if (len === 0) { + return -1; + } + + // 5. If argument fromIndex was passed let n be + // ToInteger(fromIndex); else let n be 0. + var n = +fromIndex || 0; + + if (Math.abs(n) === Infinity) { + n = 0; + } + + // 6. If n >= len, return -1. + if (n >= len) { + return -1; + } + + // 7. If n >= 0, then Let k be n. + // 8. Else, n<0, Let k be len - abs(n). + // If k is less than 0, then let k be 0. + k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + + // 9. Repeat, while k < len + while (k < len) { + // a. Let Pk be ToString(k). + // This is implicit for LHS operands of the in operator + // b. Let kPresent be the result of calling the + // HasProperty internal method of O with argument Pk. + // This step can be combined with c + // c. If kPresent is true, then + // i. Let elementK be the result of calling the Get + // internal method of O with the argument ToString(k). + // ii. Let same be the result of applying the + // Strict Equality Comparison Algorithm to + // searchElement and elementK. + // iii. If same is true, return k. + if (k in O && O[k] === searchElement) { + return k; + } + k++; + } + return -1; + }; +}/** + * Basic wrapper for DOM element. + * @constructor + * @param {String} name Tag name of the element + * @param {Object} config Set of parameters to initialize element with + */ +jvm.AbstractElement = function(name, config){ + /** + * Underlying DOM element + * @type {DOMElement} + * @private + */ + this.node = this.createElement(name); + + /** + * Name of underlying element + * @type {String} + * @private + */ + this.name = name; + + /** + * Internal store of attributes + * @type {Object} + * @private + */ + this.properties = {}; + + if (config) { + this.set(config); + } +}; + +/** + * Set attribute of the underlying DOM element. + * @param {String} name Name of attribute + * @param {Number|String} config Set of parameters to initialize element with + */ +jvm.AbstractElement.prototype.set = function(property, value){ + var key; + + if (typeof property === 'object') { + for (key in property) { + this.properties[key] = property[key]; + this.applyAttr(key, property[key]); + } + } else { + this.properties[property] = value; + this.applyAttr(property, value); + } +}; + +/** + * Returns value of attribute. + * @param {String} name Name of attribute + */ +jvm.AbstractElement.prototype.get = function(property){ + return this.properties[property]; +}; + +/** + * Applies attribute value to the underlying DOM element. + * @param {String} name Name of attribute + * @param {Number|String} config Value of attribute to apply + * @private + */ +jvm.AbstractElement.prototype.applyAttr = function(property, value){ + this.node.setAttribute(property, value); +}; + +jvm.AbstractElement.prototype.remove = function(){ + jvm.$(this.node).remove(); +};/** + * Implements abstract vector canvas. + * @constructor + * @param {HTMLElement} container Container to put element to. + * @param {Number} width Width of canvas. + * @param {Number} height Height of canvas. + */ +jvm.AbstractCanvasElement = function(container, width, height){ + this.container = container; + this.setSize(width, height); + this.rootElement = new jvm[this.classPrefix+'GroupElement'](); + this.node.appendChild( this.rootElement.node ); + this.container.appendChild(this.node); +} + +/** + * Add element to the certain group inside of the canvas. + * @param {HTMLElement} element Element to add to canvas. + * @param {HTMLElement} group Group to add element into or into root group if not provided. + */ +jvm.AbstractCanvasElement.prototype.add = function(element, group){ + group = group || this.rootElement; + group.add(element); + element.canvas = this; +} + +/** + * Create path and add it to the canvas. + * @param {Object} config Parameters of path to create. + * @param {Object} style Styles of the path to create. + * @param {HTMLElement} group Group to add path into. + */ +jvm.AbstractCanvasElement.prototype.addPath = function(config, style, group){ + var el = new jvm[this.classPrefix+'PathElement'](config, style); + + this.add(el, group); + return el; +}; + +/** + * Create circle and add it to the canvas. + * @param {Object} config Parameters of path to create. + * @param {Object} style Styles of the path to create. + * @param {HTMLElement} group Group to add circle into. + */ +jvm.AbstractCanvasElement.prototype.addCircle = function(config, style, group){ + var el = new jvm[this.classPrefix+'CircleElement'](config, style); + + this.add(el, group); + return el; +}; + +/** + * Create circle and add it to the canvas. + * @param {Object} config Parameters of path to create. + * @param {Object} style Styles of the path to create. + * @param {HTMLElement} group Group to add circle into. + */ +jvm.AbstractCanvasElement.prototype.addImage = function(config, style, group){ + var el = new jvm[this.classPrefix+'ImageElement'](config, style); + + this.add(el, group); + return el; +}; + +/** + * Create text and add it to the canvas. + * @param {Object} config Parameters of path to create. + * @param {Object} style Styles of the path to create. + * @param {HTMLElement} group Group to add circle into. + */ +jvm.AbstractCanvasElement.prototype.addText = function(config, style, group){ + var el = new jvm[this.classPrefix+'TextElement'](config, style); + + this.add(el, group); + return el; +}; + +/** + * Add group to the another group inside of the canvas. + * @param {HTMLElement} group Group to add circle into or root group if not provided. + */ +jvm.AbstractCanvasElement.prototype.addGroup = function(parentGroup){ + var el = new jvm[this.classPrefix+'GroupElement'](); + + if (parentGroup) { + parentGroup.node.appendChild(el.node); + } else { + this.node.appendChild(el.node); + } + el.canvas = this; + return el; +};/** + * Abstract shape element. Shape element represents some visual vector or raster object. + * @constructor + * @param {String} name Tag name of the element. + * @param {Object} config Set of parameters to initialize element with. + * @param {Object} style Object with styles to set on element initialization. + */ +jvm.AbstractShapeElement = function(name, config, style){ + this.style = style || {}; + this.style.current = this.style.current || {}; + this.isHovered = false; + this.isSelected = false; + this.updateStyle(); +}; + +/** + * Set element's style. + * @param {Object|String} property Could be string to set only one property or object to set several style properties at once. + * @param {String} value Value to set in case only one property should be set. + */ +jvm.AbstractShapeElement.prototype.setStyle = function(property, value){ + var styles = {}; + + if (typeof property === 'object') { + styles = property; + } else { + styles[property] = value; + } + jvm.$.extend(this.style.current, styles); + this.updateStyle(); +}; + + +jvm.AbstractShapeElement.prototype.updateStyle = function(){ + var attrs = {}; + + jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial); + jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current); + if (this.isHovered) { + jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover); + } + if (this.isSelected) { + jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected); + if (this.isHovered) { + jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover); + } + } + this.set(attrs); +}; + +jvm.AbstractShapeElement.mergeStyles = function(styles, newStyles){ + var key; + + newStyles = newStyles || {}; + for (key in newStyles) { + if (newStyles[key] === null) { + delete styles[key]; + } else { + styles[key] = newStyles[key]; + } + } +}/** + * Wrapper for SVG element. + * @constructor + * @extends jvm.AbstractElement + * @param {String} name Tag name of the element + * @param {Object} config Set of parameters to initialize element with + */ + +jvm.SVGElement = function(name, config){ + jvm.SVGElement.parentClass.apply(this, arguments); +} + +jvm.inherits(jvm.SVGElement, jvm.AbstractElement); + +jvm.SVGElement.svgns = "http://www.w3.org/2000/svg"; + +/** + * Creates DOM element. + * @param {String} tagName Name of element + * @private + * @returns DOMElement + */ +jvm.SVGElement.prototype.createElement = function( tagName ){ + return document.createElementNS( jvm.SVGElement.svgns, tagName ); +}; + +/** + * Adds CSS class for underlying DOM element. + * @param {String} className Name of CSS class name + */ +jvm.SVGElement.prototype.addClass = function( className ){ + this.node.setAttribute('class', className); +}; + +/** + * Returns constructor for element by name prefixed with 'VML'. + * @param {String} ctr Name of basic constructor to return + * proper implementation for. + * @returns Function + * @private + */ +jvm.SVGElement.prototype.getElementCtr = function( ctr ){ + return jvm['SVG'+ctr]; +}; + +jvm.SVGElement.prototype.getBBox = function(){ + return this.node.getBBox(); +};jvm.SVGGroupElement = function(){ + jvm.SVGGroupElement.parentClass.call(this, 'g'); +} + +jvm.inherits(jvm.SVGGroupElement, jvm.SVGElement); + +jvm.SVGGroupElement.prototype.add = function(element){ + this.node.appendChild( element.node ); +};jvm.SVGCanvasElement = function(container, width, height){ + this.classPrefix = 'SVG'; + jvm.SVGCanvasElement.parentClass.call(this, 'svg'); + + this.defsElement = new jvm.SVGElement('defs'); + this.node.appendChild( this.defsElement.node ); + + jvm.AbstractCanvasElement.apply(this, arguments); +} + +jvm.inherits(jvm.SVGCanvasElement, jvm.SVGElement); +jvm.mixin(jvm.SVGCanvasElement, jvm.AbstractCanvasElement); + +jvm.SVGCanvasElement.prototype.setSize = function(width, height){ + this.width = width; + this.height = height; + this.node.setAttribute('width', width); + this.node.setAttribute('height', height); +}; + +jvm.SVGCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) { + this.scale = scale; + this.transX = transX; + this.transY = transY; + this.rootElement.node.setAttribute('transform', 'scale('+scale+') translate('+transX+', '+transY+')'); +};jvm.SVGShapeElement = function(name, config, style){ + jvm.SVGShapeElement.parentClass.call(this, name, config); + jvm.AbstractShapeElement.apply(this, arguments); +}; + +jvm.inherits(jvm.SVGShapeElement, jvm.SVGElement); +jvm.mixin(jvm.SVGShapeElement, jvm.AbstractShapeElement); + +jvm.SVGShapeElement.prototype.applyAttr = function(attr, value){ + var patternEl, + imageEl, + that = this; + + if (attr === 'fill' && jvm.isImageUrl(value)) { + if (!jvm.SVGShapeElement.images[value]) { + jvm.whenImageLoaded(value).then(function(img){ + imageEl = new jvm.SVGElement('image'); + imageEl.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value); + imageEl.applyAttr('x', '0'); + imageEl.applyAttr('y', '0'); + imageEl.applyAttr('width', img[0].width); + imageEl.applyAttr('height', img[0].height); + + patternEl = new jvm.SVGElement('pattern'); + patternEl.applyAttr('id', 'image'+jvm.SVGShapeElement.imageCounter); + patternEl.applyAttr('x', 0); + patternEl.applyAttr('y', 0); + patternEl.applyAttr('width', img[0].width / 2); + patternEl.applyAttr('height', img[0].height / 2); + patternEl.applyAttr('viewBox', '0 0 '+img[0].width+' '+img[0].height); + patternEl.applyAttr('patternUnits', 'userSpaceOnUse'); + patternEl.node.appendChild( imageEl.node ); + + that.canvas.defsElement.node.appendChild( patternEl.node ); + + jvm.SVGShapeElement.images[value] = jvm.SVGShapeElement.imageCounter++; + + that.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')'); + }); + } else { + this.applyAttr('fill', 'url(#image'+jvm.SVGShapeElement.images[value]+')'); + } + } else { + jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this, arguments); + } +}; + +jvm.SVGShapeElement.imageCounter = 1; +jvm.SVGShapeElement.images = {};jvm.SVGPathElement = function(config, style){ + jvm.SVGPathElement.parentClass.call(this, 'path', config, style); + this.node.setAttribute('fill-rule', 'evenodd'); +} + +jvm.inherits(jvm.SVGPathElement, jvm.SVGShapeElement);jvm.SVGCircleElement = function(config, style){ + jvm.SVGCircleElement.parentClass.call(this, 'circle', config, style); +}; + +jvm.inherits(jvm.SVGCircleElement, jvm.SVGShapeElement);jvm.SVGImageElement = function(config, style){ + jvm.SVGImageElement.parentClass.call(this, 'image', config, style); +}; + +jvm.inherits(jvm.SVGImageElement, jvm.SVGShapeElement); + +jvm.SVGImageElement.prototype.applyAttr = function(attr, value){ + var that = this; + + if (attr == 'image') { + jvm.whenImageLoaded(value).then(function(img){ + that.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', value); + that.width = img[0].width; + that.height = img[0].height; + that.applyAttr('width', that.width); + that.applyAttr('height', that.height); + + that.applyAttr('x', that.cx - that.width / 2); + that.applyAttr('y', that.cy - that.height / 2); + + jvm.$(that.node).trigger('imageloaded', [img]); + }); + } else if(attr == 'cx') { + this.cx = value; + if (this.width) { + this.applyAttr('x', value - this.width / 2); + } + } else if(attr == 'cy') { + this.cy = value; + if (this.height) { + this.applyAttr('y', value - this.height / 2); + } + } else { + jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this, arguments); + } +};jvm.SVGTextElement = function(config, style){ + jvm.SVGTextElement.parentClass.call(this, 'text', config, style); +} + +jvm.inherits(jvm.SVGTextElement, jvm.SVGShapeElement); + +jvm.SVGTextElement.prototype.applyAttr = function(attr, value){ + if (attr === 'text') { + this.node.textContent = value; + } else { + jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this, arguments); + } +};/** + * Wrapper for VML element. + * @constructor + * @extends jvm.AbstractElement + * @param {String} name Tag name of the element + * @param {Object} config Set of parameters to initialize element with + */ + +jvm.VMLElement = function(name, config){ + if (!jvm.VMLElement.VMLInitialized) { + jvm.VMLElement.initializeVML(); + } + + jvm.VMLElement.parentClass.apply(this, arguments); +}; + +jvm.inherits(jvm.VMLElement, jvm.AbstractElement); + +/** + * Shows if VML was already initialized for the current document or not. + * @static + * @private + * @type {Boolean} + */ +jvm.VMLElement.VMLInitialized = false; + +/** + * Initializes VML handling before creating the first element + * (adds CSS class and creates namespace). Adds one of two forms + * of createElement method depending of support by browser. + * @static + * @private + */ + + // The following method of VML handling is borrowed from the + // Raphael library by Dmitry Baranovsky. + +jvm.VMLElement.initializeVML = function(){ + try { + if (!document.namespaces.rvml) { + document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"); + } + /** + * Creates DOM element. + * @param {String} tagName Name of element + * @private + * @returns DOMElement + */ + jvm.VMLElement.prototype.createElement = function (tagName) { + return document.createElement('<rvml:' + tagName + ' class="rvml">'); + }; + } catch (e) { + /** + * @private + */ + jvm.VMLElement.prototype.createElement = function (tagName) { + return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'); + }; + } + document.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)"); + jvm.VMLElement.VMLInitialized = true; +}; + +/** + * Returns constructor for element by name prefixed with 'VML'. + * @param {String} ctr Name of basic constructor to return + * proper implementation for. + * @returns Function + * @private + */ +jvm.VMLElement.prototype.getElementCtr = function( ctr ){ + return jvm['VML'+ctr]; +}; + +/** + * Adds CSS class for underlying DOM element. + * @param {String} className Name of CSS class name + */ +jvm.VMLElement.prototype.addClass = function( className ){ + jvm.$(this.node).addClass(className); +}; + +/** + * Applies attribute value to the underlying DOM element. + * @param {String} name Name of attribute + * @param {Number|String} config Value of attribute to apply + * @private + */ +jvm.VMLElement.prototype.applyAttr = function( attr, value ){ + this.node[attr] = value; +}; + +/** + * Returns boundary box for the element. + * @returns {Object} Boundary box with numeric fields: x, y, width, height + * @override + */ +jvm.VMLElement.prototype.getBBox = function(){ + var node = jvm.$(this.node); + + return { + x: node.position().left / this.canvas.scale, + y: node.position().top / this.canvas.scale, + width: node.width() / this.canvas.scale, + height: node.height() / this.canvas.scale + }; +};jvm.VMLGroupElement = function(){ + jvm.VMLGroupElement.parentClass.call(this, 'group'); + + this.node.style.left = '0px'; + this.node.style.top = '0px'; + this.node.coordorigin = "0 0"; +}; + +jvm.inherits(jvm.VMLGroupElement, jvm.VMLElement); + +jvm.VMLGroupElement.prototype.add = function(element){ + this.node.appendChild( element.node ); +};jvm.VMLCanvasElement = function(container, width, height){ + this.classPrefix = 'VML'; + jvm.VMLCanvasElement.parentClass.call(this, 'group'); + jvm.AbstractCanvasElement.apply(this, arguments); + this.node.style.position = 'absolute'; +}; + +jvm.inherits(jvm.VMLCanvasElement, jvm.VMLElement); +jvm.mixin(jvm.VMLCanvasElement, jvm.AbstractCanvasElement); + +jvm.VMLCanvasElement.prototype.setSize = function(width, height){ + var paths, + groups, + i, + l; + + this.width = width; + this.height = height; + this.node.style.width = width + "px"; + this.node.style.height = height + "px"; + this.node.coordsize = width+' '+height; + this.node.coordorigin = "0 0"; + if (this.rootElement) { + paths = this.rootElement.node.getElementsByTagName('shape'); + for(i = 0, l = paths.length; i < l; i++) { + paths[i].coordsize = width+' '+height; + paths[i].style.width = width+'px'; + paths[i].style.height = height+'px'; + } + groups = this.node.getElementsByTagName('group'); + for(i = 0, l = groups.length; i < l; i++) { + groups[i].coordsize = width+' '+height; + groups[i].style.width = width+'px'; + groups[i].style.height = height+'px'; + } + } +}; + +jvm.VMLCanvasElement.prototype.applyTransformParams = function(scale, transX, transY) { + this.scale = scale; + this.transX = transX; + this.transY = transY; + this.rootElement.node.coordorigin = (this.width-transX-this.width/100)+','+(this.height-transY-this.height/100); + this.rootElement.node.coordsize = this.width/scale+','+this.height/scale; +};jvm.VMLShapeElement = function(name, config){ + jvm.VMLShapeElement.parentClass.call(this, name, config); + + this.fillElement = new jvm.VMLElement('fill'); + this.strokeElement = new jvm.VMLElement('stroke'); + this.node.appendChild(this.fillElement.node); + this.node.appendChild(this.strokeElement.node); + this.node.stroked = false; + + jvm.AbstractShapeElement.apply(this, arguments); +}; + +jvm.inherits(jvm.VMLShapeElement, jvm.VMLElement); +jvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement); + +jvm.VMLShapeElement.prototype.applyAttr = function(attr, value){ + switch (attr) { + case 'fill': + this.node.fillcolor = value; + break; + case 'fill-opacity': + this.fillElement.node.opacity = Math.round(value*100)+'%'; + break; + case 'stroke': + if (value === 'none') { + this.node.stroked = false; + } else { + this.node.stroked = true; + } + this.node.strokecolor = value; + break; + case 'stroke-opacity': + this.strokeElement.node.opacity = Math.round(value*100)+'%'; + break; + case 'stroke-width': + if (parseInt(value, 10) === 0) { + this.node.stroked = false; + } else { + this.node.stroked = true; + } + this.node.strokeweight = value; + break; + case 'd': + this.node.path = jvm.VMLPathElement.pathSvgToVml(value); + break; + default: + jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments); + } +};jvm.VMLPathElement = function(config, style){ + var scale = new jvm.VMLElement('skew'); + + jvm.VMLPathElement.parentClass.call(this, 'shape', config, style); + + this.node.coordorigin = "0 0"; + + scale.node.on = true; + scale.node.matrix = '0.01,0,0,0.01,0,0'; + scale.node.offset = '0,0'; + + this.node.appendChild(scale.node); +}; + +jvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement); + +jvm.VMLPathElement.prototype.applyAttr = function(attr, value){ + if (attr === 'd') { + this.node.path = jvm.VMLPathElement.pathSvgToVml(value); + } else { + jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value); + } +}; + +jvm.VMLPathElement.pathSvgToVml = function(path) { + var cx = 0, cy = 0, ctrlx, ctrly; + + path = path.replace(/(-?\d+)e(-?\d+)/g, '0'); + return path.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g, function(segment, letter, coords, index){ + coords = coords.replace(/(\d)-/g, '$1,-') + .replace(/^\s+/g, '') + .replace(/\s+$/g, '') + .replace(/\s+/g, ',').split(','); + if (!coords[0]) coords.shift(); + for (var i=0, l=coords.length; i<l; i++) { + coords[i] = Math.round(100*coords[i]); + } + switch (letter) { + case 'm': + cx += coords[0]; + cy += coords[1]; + return 't'+coords.join(','); + case 'M': + cx = coords[0]; + cy = coords[1]; + return 'm'+coords.join(','); + case 'l': + cx += coords[0]; + cy += coords[1]; + return 'r'+coords.join(','); + case 'L': + cx = coords[0]; + cy = coords[1]; + return 'l'+coords.join(','); + case 'h': + cx += coords[0]; + return 'r'+coords[0]+',0'; + case 'H': + cx = coords[0]; + return 'l'+cx+','+cy; + case 'v': + cy += coords[0]; + return 'r0,'+coords[0]; + case 'V': + cy = coords[0]; + return 'l'+cx+','+cy; + case 'c': + ctrlx = cx + coords[coords.length-4]; + ctrly = cy + coords[coords.length-3]; + cx += coords[coords.length-2]; + cy += coords[coords.length-1]; + return 'v'+coords.join(','); + case 'C': + ctrlx = coords[coords.length-4]; + ctrly = coords[coords.length-3]; + cx = coords[coords.length-2]; + cy = coords[coords.length-1]; + return 'c'+coords.join(','); + case 's': + coords.unshift(cy-ctrly); + coords.unshift(cx-ctrlx); + ctrlx = cx + coords[coords.length-4]; + ctrly = cy + coords[coords.length-3]; + cx += coords[coords.length-2]; + cy += coords[coords.length-1]; + return 'v'+coords.join(','); + case 'S': + coords.unshift(cy+cy-ctrly); + coords.unshift(cx+cx-ctrlx); + ctrlx = coords[coords.length-4]; + ctrly = coords[coords.length-3]; + cx = coords[coords.length-2]; + cy = coords[coords.length-1]; + return 'c'+coords.join(','); + } + return ''; + }).replace(/z/g, 'e'); +};jvm.VMLCircleElement = function(config, style){ + jvm.VMLCircleElement.parentClass.call(this, 'oval', config, style); +}; + +jvm.inherits(jvm.VMLCircleElement, jvm.VMLShapeElement); + +jvm.VMLCircleElement.prototype.applyAttr = function(attr, value){ + switch (attr) { + case 'r': + this.node.style.width = value*2+'px'; + this.node.style.height = value*2+'px'; + this.applyAttr('cx', this.get('cx') || 0); + this.applyAttr('cy', this.get('cy') || 0); + break; + case 'cx': + if (!value) return; + this.node.style.left = value - (this.get('r') || 0) + 'px'; + break; + case 'cy': + if (!value) return; + this.node.style.top = value - (this.get('r') || 0) + 'px'; + break; + default: + jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this, attr, value); + } +};/** + * Class for vector images manipulations. + * @constructor + * @param {DOMElement} container to place canvas to + * @param {Number} width + * @param {Number} height + */ +jvm.VectorCanvas = function(container, width, height) { + this.mode = window.SVGAngle ? 'svg' : 'vml'; + + if (this.mode == 'svg') { + this.impl = new jvm.SVGCanvasElement(container, width, height); + } else { + this.impl = new jvm.VMLCanvasElement(container, width, height); + } + this.impl.mode = this.mode; + return this.impl; +};jvm.SimpleScale = function(scale){ + this.scale = scale; +}; + +jvm.SimpleScale.prototype.getValue = function(value){ + return value; +};jvm.OrdinalScale = function(scale){ + this.scale = scale; +}; + +jvm.OrdinalScale.prototype.getValue = function(value){ + return this.scale[value]; +}; + +jvm.OrdinalScale.prototype.getTicks = function(){ + var ticks = [], + key; + + for (key in this.scale) { + ticks.push({ + label: key, + value: this.scale[key] + }); + } + + return ticks; +};jvm.NumericScale = function(scale, normalizeFunction, minValue, maxValue) { + this.scale = []; + + normalizeFunction = normalizeFunction || 'linear'; + + if (scale) this.setScale(scale); + if (normalizeFunction) this.setNormalizeFunction(normalizeFunction); + if (typeof minValue !== 'undefined' ) this.setMin(minValue); + if (typeof maxValue !== 'undefined' ) this.setMax(maxValue); +}; + +jvm.NumericScale.prototype = { + setMin: function(min) { + this.clearMinValue = min; + if (typeof this.normalize === 'function') { + this.minValue = this.normalize(min); + } else { + this.minValue = min; + } + }, + + setMax: function(max) { + this.clearMaxValue = max; + if (typeof this.normalize === 'function') { + this.maxValue = this.normalize(max); + } else { + this.maxValue = max; + } + }, + + setScale: function(scale) { + var i; + + this.scale = []; + for (i = 0; i < scale.length; i++) { + this.scale[i] = [scale[i]]; + } + }, + + setNormalizeFunction: function(f) { + if (f === 'polynomial') { + this.normalize = function(value) { + return Math.pow(value, 0.2); + } + } else if (f === 'linear') { + delete this.normalize; + } else { + this.normalize = f; + } + this.setMin(this.clearMinValue); + this.setMax(this.clearMaxValue); + }, + + getValue: function(value) { + var lengthes = [], + fullLength = 0, + l, + i = 0, + c; + + if (typeof this.normalize === 'function') { + value = this.normalize(value); + } + for (i = 0; i < this.scale.length-1; i++) { + l = this.vectorLength(this.vectorSubtract(this.scale[i+1], this.scale[i])); + lengthes.push(l); + fullLength += l; + } + + c = (this.maxValue - this.minValue) / fullLength; + for (i=0; i<lengthes.length; i++) { + lengthes[i] *= c; + } + + i = 0; + value -= this.minValue; + while (value - lengthes[i] >= 0) { + value -= lengthes[i]; + i++; + } + + if (i == this.scale.length - 1) { + value = this.vectorToNum(this.scale[i]) + } else { + value = ( + this.vectorToNum( + this.vectorAdd(this.scale[i], + this.vectorMult( + this.vectorSubtract(this.scale[i+1], this.scale[i]), + (value) / (lengthes[i]) + ) + ) + ) + ); + } + + return value; + }, + + vectorToNum: function(vector) { + var num = 0, + i; + + for (i = 0; i < vector.length; i++) { + num += Math.round(vector[i])*Math.pow(256, vector.length-i-1); + } + return num; + }, + + vectorSubtract: function(vector1, vector2) { + var vector = [], + i; + + for (i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] - vector2[i]; + } + return vector; + }, + + vectorAdd: function(vector1, vector2) { + var vector = [], + i; + + for (i = 0; i < vector1.length; i++) { + vector[i] = vector1[i] + vector2[i]; + } + return vector; + }, + + vectorMult: function(vector, num) { + var result = [], + i; + + for (i = 0; i < vector.length; i++) { + result[i] = vector[i] * num; + } + return result; + }, + + vectorLength: function(vector) { + var result = 0, + i; + for (i = 0; i < vector.length; i++) { + result += vector[i] * vector[i]; + } + return Math.sqrt(result); + }, + + /* Derived from d3 implementation https://github.com/mbostock/d3/blob/master/src/scale/linear.js#L94 */ + getTicks: function(){ + var m = 5, + extent = [this.clearMinValue, this.clearMaxValue], + span = extent[1] - extent[0], + step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), + err = m / span * step, + ticks = [], + tick, + v; + + if (err <= .15) step *= 10; + else if (err <= .35) step *= 5; + else if (err <= .75) step *= 2; + + extent[0] = Math.floor(extent[0] / step) * step; + extent[1] = Math.ceil(extent[1] / step) * step; + + tick = extent[0]; + while (tick <= extent[1]) { + if (tick == extent[0]) { + v = this.clearMinValue; + } else if (tick == extent[1]) { + v = this.clearMaxValue; + } else { + v = tick; + } + ticks.push({ + label: tick, + value: this.getValue(v) + }); + tick += step; + } + + return ticks; + } +}; +jvm.ColorScale = function(colors, normalizeFunction, minValue, maxValue) { + jvm.ColorScale.parentClass.apply(this, arguments); +} + +jvm.inherits(jvm.ColorScale, jvm.NumericScale); + +jvm.ColorScale.prototype.setScale = function(scale) { + var i; + + for (i = 0; i < scale.length; i++) { + this.scale[i] = jvm.ColorScale.rgbToArray(scale[i]); + } +}; + +jvm.ColorScale.prototype.getValue = function(value) { + return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this, value)); +}; + +jvm.ColorScale.arrayToRgb = function(ar) { + var rgb = '#', + d, + i; + + for (i = 0; i < ar.length; i++) { + d = ar[i].toString(16); + rgb += d.length == 1 ? '0'+d : d; + } + return rgb; +}; + +jvm.ColorScale.numToRgb = function(num) { + num = num.toString(16); + + while (num.length < 6) { + num = '0' + num; + } + + return '#'+num; +}; + +jvm.ColorScale.rgbToArray = function(rgb) { + rgb = rgb.substr(1); + return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)]; +};/** + * Represents map legend. + * @constructor + * @param {Object} params Configuration parameters. + * @param {String} params.cssClass Additional CSS class to apply to legend element. + * @param {Boolean} params.vertical If <code>true</code> legend will be rendered as vertical. + * @param {String} params.title Legend title. + * @param {Function} params.labelRender Method to convert series values to legend labels. + */ +jvm.Legend = function(params) { + this.params = params || {}; + this.map = this.params.map; + this.series = this.params.series; + this.body = jvm.$('<div/>'); + this.body.addClass('jvectormap-legend'); + if (this.params.cssClass) { + this.body.addClass(this.params.cssClass); + } + + if (params.vertical) { + this.map.legendCntVertical.append( this.body ); + } else { + this.map.legendCntHorizontal.append( this.body ); + } + + this.render(); +} + +jvm.Legend.prototype.render = function(){ + var ticks = this.series.scale.getTicks(), + i, + inner = jvm.$('<div/>').addClass('jvectormap-legend-inner'), + tick, + sample, + label; + + this.body.html(''); + if (this.params.title) { + this.body.append( + jvm.$('<div/>').addClass('jvectormap-legend-title').html(this.params.title) + ); + } + this.body.append(inner); + + for (i = 0; i < ticks.length; i++) { + tick = jvm.$('<div/>').addClass('jvectormap-legend-tick'); + sample = jvm.$('<div/>').addClass('jvectormap-legend-tick-sample'); + + switch (this.series.params.attribute) { + case 'fill': + if (jvm.isImageUrl(ticks[i].value)) { + sample.css('background', 'url('+ticks[i].value+')'); + } else { + sample.css('background', ticks[i].value); + } + break; + case 'stroke': + sample.css('background', ticks[i].value); + break; + case 'image': + sample.css('background', 'url('+ticks[i].value+') no-repeat center center'); + break; + case 'r': + jvm.$('<div/>').css({ + 'border-radius': ticks[i].value, + border: this.map.params.markerStyle.initial['stroke-width']+'px '+ + this.map.params.markerStyle.initial['stroke']+' solid', + width: ticks[i].value * 2 + 'px', + height: ticks[i].value * 2 + 'px', + background: this.map.params.markerStyle.initial['fill'] + }).appendTo(sample); + break; + } + tick.append( sample ); + label = ticks[i].label; + if (this.params.labelRender) { + label = this.params.labelRender(label); + } + tick.append( jvm.$('<div>'+label+' </div>').addClass('jvectormap-legend-tick-text') ); + inner.append(tick); + } + inner.append( jvm.$('<div/>').css('clear', 'both') ); +}/** + * Creates data series. + * @constructor + * @param {Object} params Parameters to initialize series with. + * @param {Array} params.values The data set to visualize. + * @param {String} params.attribute Numberic or color attribute to use for data visualization. This could be: <code>fill</code>, <code>stroke</code>, <code>fill-opacity</code>, <code>stroke-opacity</code> for markers and regions and <code>r</code> (radius) for markers only. + * @param {Array} params.scale Values used to map a dimension of data to a visual representation. The first value sets visualization for minimum value from the data set and the last value sets visualization for the maximum value. There also could be intermidiate values. Default value is <code>['#C8EEFF', '#0071A4']</code> + * @param {Function|String} params.normalizeFunction The function used to map input values to the provided scale. This parameter could be provided as function or one of the strings: <code>'linear'</code> or <code>'polynomial'</code>, while <code>'linear'</code> is used by default. The function provided takes value from the data set as an input and returns corresponding value from the scale. + * @param {Number} params.min Minimum value of the data set. Could be calculated automatically if not provided. + * @param {Number} params.min Maximum value of the data set. Could be calculated automatically if not provided. + */ +jvm.DataSeries = function(params, elements, map) { + var scaleConstructor; + + params = params || {}; + params.attribute = params.attribute || 'fill'; + + this.elements = elements; + this.params = params; + this.map = map; + + if (params.attributes) { + this.setAttributes(params.attributes); + } + + if (jvm.$.isArray(params.scale)) { + scaleConstructor = (params.attribute === 'fill' || params.attribute === 'stroke') ? jvm.ColorScale : jvm.NumericScale; + this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max); + } else if (params.scale) { + this.scale = new jvm.OrdinalScale(params.scale); + } else { + this.scale = new jvm.SimpleScale(params.scale); + } + + this.values = params.values || {}; + this.setValues(this.values); + + if (this.params.legend) { + this.legend = new jvm.Legend($.extend({ + map: this.map, + series: this + }, this.params.legend)) + } +}; + +jvm.DataSeries.prototype = { + setAttributes: function(key, attr){ + var attrs = key, + code; + + if (typeof key == 'string') { + if (this.elements[key]) { + this.elements[key].setStyle(this.params.attribute, attr); + } + } else { + for (code in attrs) { + if (this.elements[code]) { + this.elements[code].element.setStyle(this.params.attribute, attrs[code]); + } + } + } + }, + + /** + * Set values for the data set. + * @param {Object} values Object which maps codes of regions or markers to values. + */ + setValues: function(values) { + var max = -Number.MAX_VALUE, + min = Number.MAX_VALUE, + val, + cc, + attrs = {}; + + if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) { + // we have a color scale as an array + if (typeof this.params.min === 'undefined' || typeof this.params.max === 'undefined') { + // min and/or max are not defined, so calculate them + for (cc in values) { + val = parseFloat(values[cc]); + if (val > max) max = val; + if (val < min) min = val; + } + } + + if (typeof this.params.min === 'undefined') { + this.scale.setMin(min); + this.params.min = min; + } else { + this.scale.setMin(this.params.min); + } + + if (typeof this.params.max === 'undefined') { + this.scale.setMax(max); + this.params.max = max; + } else { + this.scale.setMax(this.params.max); + } + + for (cc in values) { + if (cc != 'indexOf') { + val = parseFloat(values[cc]); + if (!isNaN(val)) { + attrs[cc] = this.scale.getValue(val); + } else { + attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute]; + } + } + } + } else { + for (cc in values) { + if (values[cc]) { + attrs[cc] = this.scale.getValue(values[cc]); + } else { + attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute]; + } + } + } + + this.setAttributes(attrs); + jvm.$.extend(this.values, values); + }, + + clear: function(){ + var key, + attrs = {}; + + for (key in this.values) { + if (this.elements[key]) { + attrs[key] = this.elements[key].element.shape.style.initial[this.params.attribute]; + } + } + this.setAttributes(attrs); + this.values = {}; + }, + + /** + * Set scale of the data series. + * @param {Array} scale Values representing scale. + */ + setScale: function(scale) { + this.scale.setScale(scale); + if (this.values) { + this.setValues(this.values); + } + }, + + /** + * Set normalize function of the data series. + * @param {Function|String} normilizeFunction. + */ + setNormalizeFunction: function(f) { + this.scale.setNormalizeFunction(f); + if (this.values) { + this.setValues(this.values); + } + } +}; +/** + * Contains methods for transforming point on sphere to + * Cartesian coordinates using various projections. + * @class + */ +jvm.Proj = { + degRad: 180 / Math.PI, + radDeg: Math.PI / 180, + radius: 6381372, + + sgn: function(n){ + if (n > 0) { + return 1; + } else if (n < 0) { + return -1; + } else { + return n; + } + }, + + /** + * Converts point on sphere to the Cartesian coordinates using Miller projection + * @param {Number} lat Latitude in degrees + * @param {Number} lng Longitude in degrees + * @param {Number} c Central meridian in degrees + */ + mill: function(lat, lng, c){ + return { + x: this.radius * (lng - c) * this.radDeg, + y: - this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8 + }; + }, + + /** + * Inverse function of mill() + * Converts Cartesian coordinates to point on sphere using Miller projection + * @param {Number} x X of point in Cartesian system as integer + * @param {Number} y Y of point in Cartesian system as integer + * @param {Number} c Central meridian in degrees + */ + mill_inv: function(x, y, c){ + return { + lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad, + lng: (c * this.radDeg + x / this.radius) * this.degRad + }; + }, + + /** + * Converts point on sphere to the Cartesian coordinates using Mercator projection + * @param {Number} lat Latitude in degrees + * @param {Number} lng Longitude in degrees + * @param {Number} c Central meridian in degrees + */ + merc: function(lat, lng, c){ + return { + x: this.radius * (lng - c) * this.radDeg, + y: - this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)) + }; + }, + + /** + * Inverse function of merc() + * Converts Cartesian coordinates to point on sphere using Mercator projection + * @param {Number} x X of point in Cartesian system as integer + * @param {Number} y Y of point in Cartesian system as integer + * @param {Number} c Central meridian in degrees + */ + merc_inv: function(x, y, c){ + return { + lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad, + lng: (c * this.radDeg + x / this.radius) * this.degRad + }; + }, + + /** + * Converts point on sphere to the Cartesian coordinates using Albers Equal-Area Conic + * projection + * @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a> + * @param {Number} lat Latitude in degrees + * @param {Number} lng Longitude in degrees + * @param {Number} c Central meridian in degrees + */ + aea: function(lat, lng, c){ + var fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 29.5 * this.radDeg, + fi2 = 45.5 * this.radDeg, + fi = lat * this.radDeg, + lambda = lng * this.radDeg, + n = (Math.sin(fi1)+Math.sin(fi2)) / 2, + C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1), + theta = n*(lambda-lambda0), + ro = Math.sqrt(C-2*n*Math.sin(fi))/n, + ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n; + + return { + x: ro * Math.sin(theta) * this.radius, + y: - (ro0 - ro * Math.cos(theta)) * this.radius + }; + }, + + /** + * Converts Cartesian coordinates to the point on sphere using Albers Equal-Area Conic + * projection + * @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a> + * @param {Number} x X of point in Cartesian system as integer + * @param {Number} y Y of point in Cartesian system as integer + * @param {Number} c Central meridian in degrees + */ + aea_inv: function(xCoord, yCoord, c){ + var x = xCoord / this.radius, + y = yCoord / this.radius, + fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 29.5 * this.radDeg, + fi2 = 45.5 * this.radDeg, + n = (Math.sin(fi1)+Math.sin(fi2)) / 2, + C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1), + ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n, + ro = Math.sqrt(x*x+(ro0-y)*(ro0-y)), + theta = Math.atan( x / (ro0 - y) ); + + return { + lat: (Math.asin((C - ro * ro * n * n) / (2 * n))) * this.degRad, + lng: (lambda0 + theta / n) * this.degRad + }; + }, + + /** + * Converts point on sphere to the Cartesian coordinates using Lambert conformal + * conic projection + * @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a> + * @param {Number} lat Latitude in degrees + * @param {Number} lng Longitude in degrees + * @param {Number} c Central meridian in degrees + */ + lcc: function(lat, lng, c){ + var fi0 = 0, + lambda0 = c * this.radDeg, + lambda = lng * this.radDeg, + fi1 = 33 * this.radDeg, + fi2 = 45 * this.radDeg, + fi = lat * this.radDeg, + n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ), + F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n, + ro = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi / 2 ), n ), + ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n ); + + return { + x: ro * Math.sin( n * (lambda - lambda0) ) * this.radius, + y: - (ro0 - ro * Math.cos( n * (lambda - lambda0) ) ) * this.radius + }; + }, + + /** + * Converts Cartesian coordinates to the point on sphere using Lambert conformal conic + * projection + * @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a> + * @param {Number} x X of point in Cartesian system as integer + * @param {Number} y Y of point in Cartesian system as integer + * @param {Number} c Central meridian in degrees + */ + lcc_inv: function(xCoord, yCoord, c){ + var x = xCoord / this.radius, + y = yCoord / this.radius, + fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 33 * this.radDeg, + fi2 = 45 * this.radDeg, + n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ), + F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n, + ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n ), + ro = this.sgn(n) * Math.sqrt(x*x+(ro0-y)*(ro0-y)), + theta = Math.atan( x / (ro0 - y) ); + + return { + lat: (2 * Math.atan(Math.pow(F/ro, 1/n)) - Math.PI / 2) * this.degRad, + lng: (lambda0 + theta / n) * this.degRad + }; + } +};jvm.MapObject = function(config){}; + +jvm.MapObject.prototype.getLabelText = function(key){ + var text; + + if (this.config.label) { + if (typeof this.config.label.render === 'function') { + text = this.config.label.render(key); + } else { + text = key; + } + } else { + text = null; + } + return text; +} + +jvm.MapObject.prototype.getLabelOffsets = function(key){ + var offsets; + + if (this.config.label) { + if (typeof this.config.label.offsets === 'function') { + offsets = this.config.label.offsets(key); + } else if (typeof this.config.label.offsets === 'object') { + offsets = this.config.label.offsets[key]; + } + } + return offsets || [0, 0]; +} + +/** + * Set hovered state to the element. Hovered state means mouse cursor is over element. Styles will be updates respectively. + * @param {Boolean} isHovered <code>true</code> to make element hovered, <code>false</code> otherwise. + */ +jvm.MapObject.prototype.setHovered = function(isHovered){ + if (this.isHovered !== isHovered) { + this.isHovered = isHovered; + this.shape.isHovered = isHovered; + this.shape.updateStyle(); + if (this.label) { + this.label.isHovered = isHovered; + this.label.updateStyle(); + } + } +}; + +/** + * Set selected state to the element. Styles will be updates respectively. + * @param {Boolean} isSelected <code>true</code> to make element selected, <code>false</code> otherwise. + */ +jvm.MapObject.prototype.setSelected = function(isSelected){ + if (this.isSelected !== isSelected) { + this.isSelected = isSelected; + this.shape.isSelected = isSelected; + this.shape.updateStyle(); + if (this.label) { + this.label.isSelected = isSelected; + this.label.updateStyle(); + } + jvm.$(this.shape).trigger('selected', [isSelected]); + } +}; + +jvm.MapObject.prototype.setStyle = function(){ + this.shape.setStyle.apply(this.shape, arguments); +}; + +jvm.MapObject.prototype.remove = function(){ + this.shape.remove(); + if (this.label) { + this.label.remove(); + } +};jvm.Region = function(config){ + var bbox, + text, + offsets, + labelDx, + labelDy; + + this.config = config; + this.map = this.config.map; + + this.shape = config.canvas.addPath({ + d: config.path, + 'data-code': config.code + }, config.style, config.canvas.rootElement); + this.shape.addClass('jvectormap-region jvectormap-element'); + + bbox = this.shape.getBBox(); + + text = this.getLabelText(config.code); + if (this.config.label && text) { + offsets = this.getLabelOffsets(config.code); + this.labelX = bbox.x + bbox.width / 2 + offsets[0]; + this.labelY = bbox.y + bbox.height / 2 + offsets[1]; + this.label = config.canvas.addText({ + text: text, + 'text-anchor': 'middle', + 'alignment-baseline': 'central', + x: this.labelX, + y: this.labelY, + 'data-code': config.code + }, config.labelStyle, config.labelsGroup); + this.label.addClass('jvectormap-region jvectormap-element'); + } +}; + +jvm.inherits(jvm.Region, jvm.MapObject); + +jvm.Region.prototype.updateLabelPosition = function(){ + if (this.label) { + this.label.set({ + x: this.labelX * this.map.scale + this.map.transX * this.map.scale, + y: this.labelY * this.map.scale + this.map.transY * this.map.scale + }); + } +};jvm.Marker = function(config){ + var text, + offsets; + + this.config = config; + this.map = this.config.map; + + this.isImage = !!this.config.style.initial.image; + this.createShape(); + + text = this.getLabelText(config.index); + if (this.config.label && text) { + this.offsets = this.getLabelOffsets(config.index); + this.labelX = config.cx / this.map.scale - this.map.transX; + this.labelY = config.cy / this.map.scale - this.map.transY; + this.label = config.canvas.addText({ + text: text, + 'data-index': config.index, + dy: "0.6ex", + x: this.labelX, + y: this.labelY + }, config.labelStyle, config.labelsGroup); + + this.label.addClass('jvectormap-marker jvectormap-element'); + } +}; + +jvm.inherits(jvm.Marker, jvm.MapObject); + +jvm.Marker.prototype.createShape = function(){ + var that = this; + + if (this.shape) { + this.shape.remove(); + } + this.shape = this.config.canvas[this.isImage ? 'addImage' : 'addCircle']({ + "data-index": this.config.index, + cx: this.config.cx, + cy: this.config.cy + }, this.config.style, this.config.group); + + this.shape.addClass('jvectormap-marker jvectormap-element'); + + if (this.isImage) { + jvm.$(this.shape.node).on('imageloaded', function(){ + that.updateLabelPosition(); + }); + } +}; + +jvm.Marker.prototype.updateLabelPosition = function(){ + if (this.label) { + this.label.set({ + x: this.labelX * this.map.scale + this.offsets[0] + + this.map.transX * this.map.scale + 5 + (this.isImage ? (this.shape.width || 0) / 2 : this.shape.properties.r), + y: this.labelY * this.map.scale + this.map.transY * this.map.scale + this.offsets[1] + }); + } +}; + +jvm.Marker.prototype.setStyle = function(property, value){ + var isImage; + + jvm.Marker.parentClass.prototype.setStyle.apply(this, arguments); + + if (property === 'r') { + this.updateLabelPosition(); + } + + isImage = !!this.shape.get('image'); + if (isImage != this.isImage) { + this.isImage = isImage; + this.config.style = jvm.$.extend(true, {}, this.shape.style); + this.createShape(); + } +};/** + * Creates map, draws paths, binds events. + * @constructor + * @param {Object} params Parameters to initialize map with. + * @param {String} params.map Name of the map in the format <code>territory_proj_lang</code> where <code>territory</code> is a unique code or name of the territory which the map represents (ISO 3166 standard is used where possible), <code>proj</code> is a name of projection used to generate representation of the map on the plane (projections are named according to the conventions of proj4 utility) and <code>lang</code> is a code of the language, used for the names of regions. + * @param {String} params.backgroundColor Background color of the map in CSS format. + * @param {Boolean} params.zoomOnScroll When set to true map could be zoomed using mouse scroll. Default value is <code>true</code>. + * @param {Boolean} params.zoomOnScrollSpeed Mouse scroll speed. Number from 1 to 10. Default value is <code>3</code>. + * @param {Boolean} params.panOnDrag When set to true, the map pans when being dragged. Default value is <code>true</code>. + * @param {Number} params.zoomMax Indicates the maximum zoom ratio which could be reached zooming the map. Default value is <code>8</code>. + * @param {Number} params.zoomMin Indicates the minimum zoom ratio which could be reached zooming the map. Default value is <code>1</code>. + * @param {Number} params.zoomStep Indicates the multiplier used to zoom map with +/- buttons. Default value is <code>1.6</code>. + * @param {Boolean} params.zoomAnimate Indicates whether or not to animate changing of map zoom with zoom buttons. + * @param {Boolean} params.regionsSelectable When set to true regions of the map could be selected. Default value is <code>false</code>. + * @param {Boolean} params.regionsSelectableOne Allow only one region to be selected at the moment. Default value is <code>false</code>. + * @param {Boolean} params.markersSelectable When set to true markers on the map could be selected. Default value is <code>false</code>. + * @param {Boolean} params.markersSelectableOne Allow only one marker to be selected at the moment. Default value is <code>false</code>. + * @param {Object} params.regionStyle Set the styles for the map's regions. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is: +<pre>{ + initial: { + fill: 'white', + "fill-opacity": 1, + stroke: 'none', + "stroke-width": 0, + "stroke-opacity": 1 + }, + hover: { + "fill-opacity": 0.8, + cursor: 'pointer' + }, + selected: { + fill: 'yellow' + }, + selectedHover: { + } +}</pre> +* @param {Object} params.regionLabelStyle Set the styles for the regions' labels. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it's selected simultaneously). Styles could be set for each of this states. Default value for that parameter is: +<pre>{ + initial: { + 'font-family': 'Verdana', + 'font-size': '12', + 'font-weight': 'bold', + cursor: 'default', + fill: 'black' + }, + hover: { + cursor: 'pointer' + } +}</pre> + * @param {Object} params.markerStyle Set the styles for the map's markers. Any parameter suitable for <code>regionStyle</code> could be used as well as numeric parameter <code>r</code> to set the marker's radius. Default value for that parameter is: +<pre>{ + initial: { + fill: 'grey', + stroke: '#505050', + "fill-opacity": 1, + "stroke-width": 1, + "stroke-opacity": 1, + r: 5 + }, + hover: { + stroke: 'black', + "stroke-width": 2, + cursor: 'pointer' + }, + selected: { + fill: 'blue' + }, + selectedHover: { + } +}</pre> + * @param {Object} params.markerLabelStyle Set the styles for the markers' labels. Default value for that parameter is: +<pre>{ + initial: { + 'font-family': 'Verdana', + 'font-size': '12', + 'font-weight': 'bold', + cursor: 'default', + fill: 'black' + }, + hover: { + cursor: 'pointer' + } +}</pre> + * @param {Object|Array} params.markers Set of markers to add to the map during initialization. In case of array is provided, codes of markers will be set as string representations of array indexes. Each marker is represented by <code>latLng</code> (array of two numeric values), <code>name</code> (string which will be show on marker's tip) and any marker styles. + * @param {Object} params.series Object with two keys: <code>markers</code> and <code>regions</code>. Each of which is an array of series configs to be applied to the respective map elements. See <a href="jvm.DataSeries.html">DataSeries</a> description for a list of parameters available. + * @param {Object|String} params.focusOn This parameter sets the initial position and scale of the map viewport. See <code>setFocus</code> docuemntation for possible parameters. + * @param {Object} params.labels Defines parameters for rendering static labels. Object could contain two keys: <code>regions</code> and <code>markers</code>. Each key value defines configuration object with the following possible options: +<ul> + <li><code>render {Function}</code> - defines method for converting region code or marker index to actual label value.</li> + <li><code>offsets {Object|Function}</code> - provides method or object which could be used to define label offset by region code or marker index.</li> +</ul> +<b>Plase note: static labels feature is not supported in Internet Explorer 8 and below.</b> + * @param {Array|Object|String} params.selectedRegions Set initially selected regions. + * @param {Array|Object|String} params.selectedMarkers Set initially selected markers. + * @param {Function} params.onRegionTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the region tip is going to be shown. + * @param {Function} params.onRegionOver <code>(Event e, String code)</code> Will be called on region mouse over event. + * @param {Function} params.onRegionOut <code>(Event e, String code)</code> Will be called on region mouse out event. + * @param {Function} params.onRegionClick <code>(Event e, String code)</code> Will be called on region click event. + * @param {Function} params.onRegionSelected <code>(Event e, String code, Boolean isSelected, Array selectedRegions)</code> Will be called when region is (de)selected. <code>isSelected</code> parameter of the callback indicates whether region is selected or not. <code>selectedRegions</code> contains codes of all currently selected regions. + * @param {Function} params.onMarkerTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the marker tip is going to be shown. + * @param {Function} params.onMarkerOver <code>(Event e, String code)</code> Will be called on marker mouse over event. + * @param {Function} params.onMarkerOut <code>(Event e, String code)</code> Will be called on marker mouse out event. + * @param {Function} params.onMarkerClick <code>(Event e, String code)</code> Will be called on marker click event. + * @param {Function} params.onMarkerSelected <code>(Event e, String code, Boolean isSelected, Array selectedMarkers)</code> Will be called when marker is (de)selected. <code>isSelected</code> parameter of the callback indicates whether marker is selected or not. <code>selectedMarkers</code> contains codes of all currently selected markers. + * @param {Function} params.onViewportChange <code>(Event e, Number scale)</code> Triggered when the map's viewport is changed (map was panned or zoomed). + */ +jvm.Map = function(params) { + var map = this, + e; + + this.params = jvm.$.extend(true, {}, jvm.Map.defaultParams, params); + + if (!jvm.Map.maps[this.params.map]) { + throw new Error('Attempt to use map which was not loaded: '+this.params.map); + } + + this.mapData = jvm.Map.maps[this.params.map]; + this.markers = {}; + this.regions = {}; + this.regionsColors = {}; + this.regionsData = {}; + + this.container = jvm.$('<div>').addClass('jvectormap-container'); + if (this.params.container) { + this.params.container.append( this.container ); + } + this.container.data('mapObject', this); + + this.defaultWidth = this.mapData.width; + this.defaultHeight = this.mapData.height; + + this.setBackgroundColor(this.params.backgroundColor); + + this.onResize = function(){ + map.updateSize(); + } + jvm.$(window).resize(this.onResize); + + for (e in jvm.Map.apiEvents) { + if (this.params[e]) { + this.container.bind(jvm.Map.apiEvents[e]+'.jvectormap', this.params[e]); + } + } + + this.canvas = new jvm.VectorCanvas(this.container[0], this.width, this.height); + + if ( ('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch) ) { + if (this.params.bindTouchEvents) { + this.bindContainerTouchEvents(); + } + } + this.bindContainerEvents(); + this.bindElementEvents(); + this.createTip(); + if (this.params.zoomButtons) { + this.bindZoomButtons(); + } + + this.createRegions(); + this.createMarkers(this.params.markers || {}); + + this.updateSize(); + + if (this.params.focusOn) { + if (typeof this.params.focusOn === 'string') { + this.params.focusOn = {region: this.params.focusOn}; + } else if (jvm.$.isArray(this.params.focusOn)) { + this.params.focusOn = {regions: this.params.focusOn}; + } + this.setFocus(this.params.focusOn); + } + + if (this.params.selectedRegions) { + this.setSelectedRegions(this.params.selectedRegions); + } + if (this.params.selectedMarkers) { + this.setSelectedMarkers(this.params.selectedMarkers); + } + + this.legendCntHorizontal = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-h'); + this.legendCntVertical = jvm.$('<div/>').addClass('jvectormap-legend-cnt jvectormap-legend-cnt-v'); + this.container.append(this.legendCntHorizontal); + this.container.append(this.legendCntVertical); + + if (this.params.series) { + this.createSeries(); + } +}; + +jvm.Map.prototype = { + transX: 0, + transY: 0, + scale: 1, + baseTransX: 0, + baseTransY: 0, + baseScale: 1, + + width: 0, + height: 0, + + /** + * Set background color of the map. + * @param {String} backgroundColor Background color in CSS format. + */ + setBackgroundColor: function(backgroundColor) { + this.container.css('background-color', backgroundColor); + }, + + resize: function() { + var curBaseScale = this.baseScale; + if (this.width / this.height > this.defaultWidth / this.defaultHeight) { + this.baseScale = this.height / this.defaultHeight; + this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale); + } else { + this.baseScale = this.width / this.defaultWidth; + this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale); + } + this.scale *= this.baseScale / curBaseScale; + this.transX *= this.baseScale / curBaseScale; + this.transY *= this.baseScale / curBaseScale; + }, + + /** + * Synchronize the size of the map with the size of the container. Suitable in situations where the size of the container is changed programmatically or container is shown after it became visible. + */ + updateSize: function(){ + this.width = this.container.width(); + this.height = this.container.height(); + this.resize(); + this.canvas.setSize(this.width, this.height); + this.applyTransform(); + }, + + /** + * Reset all the series and show the map with the initial zoom. + */ + reset: function() { + var key, + i; + + for (key in this.series) { + for (i = 0; i < this.series[key].length; i++) { + this.series[key][i].clear(); + } + } + this.scale = this.baseScale; + this.transX = this.baseTransX; + this.transY = this.baseTransY; + this.applyTransform(); + }, + + applyTransform: function() { + var maxTransX, + maxTransY, + minTransX, + minTransY; + + if (this.defaultWidth * this.scale <= this.width) { + maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale); + } else { + maxTransX = 0; + minTransX = (this.width - this.defaultWidth * this.scale) / this.scale; + } + + if (this.defaultHeight * this.scale <= this.height) { + maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale); + } else { + maxTransY = 0; + minTransY = (this.height - this.defaultHeight * this.scale) / this.scale; + } + + if (this.transY > maxTransY) { + this.transY = maxTransY; + } else if (this.transY < minTransY) { + this.transY = minTransY; + } + if (this.transX > maxTransX) { + this.transX = maxTransX; + } else if (this.transX < minTransX) { + this.transX = minTransX; + } + + this.canvas.applyTransformParams(this.scale, this.transX, this.transY); + + if (this.markers) { + this.repositionMarkers(); + } + + this.repositionLabels(); + + this.container.trigger('viewportChange', [this.scale/this.baseScale, this.transX, this.transY]); + }, + + bindContainerEvents: function(){ + var mouseDown = false, + oldPageX, + oldPageY, + map = this; + + if (this.params.panOnDrag) { + this.container.mousemove(function(e){ + if (mouseDown) { + map.transX -= (oldPageX - e.pageX) / map.scale; + map.transY -= (oldPageY - e.pageY) / map.scale; + + map.applyTransform(); + + oldPageX = e.pageX; + oldPageY = e.pageY; + } + return false; + }).mousedown(function(e){ + mouseDown = true; + oldPageX = e.pageX; + oldPageY = e.pageY; + return false; + }); + + this.onContainerMouseUp = function(){ + mouseDown = false; + }; + jvm.$('body').mouseup(this.onContainerMouseUp); + } + + if (this.params.zoomOnScroll) { + this.container.mousewheel(function(event, delta, deltaX, deltaY) { + var offset = jvm.$(map.container).offset(), + centerX = event.pageX - offset.left, + centerY = event.pageY - offset.top, + zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, event.deltaFactor * event.deltaY); + + map.tip.hide(); + + map.setScale(map.scale * zoomStep, centerX, centerY); + event.preventDefault(); + }); + } + }, + + bindContainerTouchEvents: function(){ + var touchStartScale, + touchStartDistance, + map = this, + touchX, + touchY, + centerTouchX, + centerTouchY, + lastTouchesLength, + handleTouchEvent = function(e){ + var touches = e.originalEvent.touches, + offset, + scale, + transXOld, + transYOld; + + if (e.type == 'touchstart') { + lastTouchesLength = 0; + } + + if (touches.length == 1) { + if (lastTouchesLength == 1) { + transXOld = map.transX; + transYOld = map.transY; + map.transX -= (touchX - touches[0].pageX) / map.scale; + map.transY -= (touchY - touches[0].pageY) / map.scale; + map.applyTransform(); + map.tip.hide(); + if (transXOld != map.transX || transYOld != map.transY) { + e.preventDefault(); + } + } + touchX = touches[0].pageX; + touchY = touches[0].pageY; + } else if (touches.length == 2) { + if (lastTouchesLength == 2) { + scale = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ) / touchStartDistance; + map.setScale( + touchStartScale * scale, + centerTouchX, + centerTouchY + ) + map.tip.hide(); + e.preventDefault(); + } else { + offset = jvm.$(map.container).offset(); + if (touches[0].pageX > touches[1].pageX) { + centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2; + } else { + centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2; + } + if (touches[0].pageY > touches[1].pageY) { + centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2; + } else { + centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2; + } + centerTouchX -= offset.left; + centerTouchY -= offset.top; + touchStartScale = map.scale; + touchStartDistance = Math.sqrt( + Math.pow(touches[0].pageX - touches[1].pageX, 2) + + Math.pow(touches[0].pageY - touches[1].pageY, 2) + ); + } + } + + lastTouchesLength = touches.length; + }; + + jvm.$(this.container).bind('touchstart', handleTouchEvent); + jvm.$(this.container).bind('touchmove', handleTouchEvent); + }, + + bindElementEvents: function(){ + var map = this, + mouseMoved; + + this.container.mousemove(function(){ + mouseMoved = true; + }); + + /* Can not use common class selectors here because of the bug in jQuery + SVG handling, use with caution. */ + this.container.delegate("[class~='jvectormap-element']", 'mouseover mouseout', function(e){ + var baseVal = jvm.$(this).attr('class').baseVal || jvm.$(this).attr('class'), + type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region', + code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'), + element = type == 'region' ? map.regions[code].element : map.markers[code].element, + tipText = type == 'region' ? map.mapData.paths[code].name : (map.markers[code].config.name || ''), + tipShowEvent = jvm.$.Event(type+'TipShow.jvectormap'), + overEvent = jvm.$.Event(type+'Over.jvectormap'); + + if (e.type == 'mouseover') { + map.container.trigger(overEvent, [code]); + if (!overEvent.isDefaultPrevented()) { + element.setHovered(true); + } + + map.tip.text(tipText); + map.container.trigger(tipShowEvent, [map.tip, code]); + if (!tipShowEvent.isDefaultPrevented()) { + map.tip.show(); + map.tipWidth = map.tip.width(); + map.tipHeight = map.tip.height(); + } + } else { + element.setHovered(false); + map.tip.hide(); + map.container.trigger(type+'Out.jvectormap', [code]); + } + }); + + /* Can not use common class selectors here because of the bug in jQuery + SVG handling, use with caution. */ + this.container.delegate("[class~='jvectormap-element']", 'mousedown', function(){ + mouseMoved = false; + }); + + /* Can not use common class selectors here because of the bug in jQuery + SVG handling, use with caution. */ + this.container.delegate("[class~='jvectormap-element']", 'mouseup', function(){ + var baseVal = jvm.$(this).attr('class').baseVal ? jvm.$(this).attr('class').baseVal : jvm.$(this).attr('class'), + type = baseVal.indexOf('jvectormap-region') === -1 ? 'marker' : 'region', + code = type == 'region' ? jvm.$(this).attr('data-code') : jvm.$(this).attr('data-index'), + clickEvent = jvm.$.Event(type+'Click.jvectormap'), + element = type == 'region' ? map.regions[code].element : map.markers[code].element; + + if (!mouseMoved) { + map.container.trigger(clickEvent, [code]); + if ((type === 'region' && map.params.regionsSelectable) || (type === 'marker' && map.params.markersSelectable)) { + if (!clickEvent.isDefaultPrevented()) { + if (map.params[type+'sSelectableOne']) { + map.clearSelected(type+'s'); + } + element.setSelected(!element.isSelected); + } + } + } + }); + }, + + bindZoomButtons: function() { + var map = this; + + jvm.$('<div/>').addClass('jvectormap-zoomin').text('+').appendTo(this.container); + jvm.$('<div/>').addClass('jvectormap-zoomout').html('&#x2212;').appendTo(this.container); + + this.container.find('.jvectormap-zoomin').click(function(){ + map.setScale(map.scale * map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate); + }); + this.container.find('.jvectormap-zoomout').click(function(){ + map.setScale(map.scale / map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate); + }); + }, + + createTip: function(){ + var map = this; + + this.tip = jvm.$('<div/>').addClass('jvectormap-tip').appendTo(jvm.$('body')); + + this.container.mousemove(function(e){ + var left = e.pageX-15-map.tipWidth, + top = e.pageY-15-map.tipHeight; + + if (left < 5) { + left = e.pageX + 15; + } + if (top < 5) { + top = e.pageY + 15; + } + + map.tip.css({ + left: left, + top: top + }); + }); + }, + + setScale: function(scale, anchorX, anchorY, isCentered, animate) { + var viewportChangeEvent = jvm.$.Event('zoom.jvectormap'), + interval, + that = this, + i = 0, + count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))), + scaleStart, + scaleDiff, + transXStart, + transXDiff, + transYStart, + transYDiff, + transX, + transY, + deferred = new jvm.$.Deferred(); + + if (scale > this.params.zoomMax * this.baseScale) { + scale = this.params.zoomMax * this.baseScale; + } else if (scale < this.params.zoomMin * this.baseScale) { + scale = this.params.zoomMin * this.baseScale; + } + + if (typeof anchorX != 'undefined' && typeof anchorY != 'undefined') { + zoomStep = scale / this.scale; + if (isCentered) { + transX = anchorX + this.defaultWidth * (this.width / (this.defaultWidth * scale)) / 2; + transY = anchorY + this.defaultHeight * (this.height / (this.defaultHeight * scale)) / 2; + } else { + transX = this.transX - (zoomStep - 1) / scale * anchorX; + transY = this.transY - (zoomStep - 1) / scale * anchorY; + } + } + + if (animate && count > 0) { + scaleStart = this.scale; + scaleDiff = (scale - scaleStart) / count; + transXStart = this.transX * this.scale; + transYStart = this.transY * this.scale; + transXDiff = (transX * scale - transXStart) / count; + transYDiff = (transY * scale - transYStart) / count; + interval = setInterval(function(){ + i += 1; + that.scale = scaleStart + scaleDiff * i; + that.transX = (transXStart + transXDiff * i) / that.scale; + that.transY = (transYStart + transYDiff * i) / that.scale; + that.applyTransform(); + if (i == count) { + clearInterval(interval); + that.container.trigger(viewportChangeEvent, [scale/that.baseScale]); + deferred.resolve(); + } + }, 10); + } else { + this.transX = transX; + this.transY = transY; + this.scale = scale; + this.applyTransform(); + this.container.trigger(viewportChangeEvent, [scale/this.baseScale]); + deferred.resolve(); + } + + return deferred; + }, + + /** + * Set the map's viewport to the specific point and set zoom of the map to the specific level. Point and zoom level could be defined in two ways: using the code of some region to focus on or a central point and zoom level as numbers. + * @param This method takes a configuration object as the single argument. The options passed to it are the following: + * @param {Array} params.regions Array of region codes to zoom to. + * @param {String} params.region Region code to zoom to. + * @param {Number} params.scale Map scale to set. + * @param {Number} params.lat Latitude to set viewport to. + * @param {Number} params.lng Longitude to set viewport to. + * @param {Number} params.x Number from 0 to 1 specifying the horizontal coordinate of the central point of the viewport. + * @param {Number} params.y Number from 0 to 1 specifying the vertical coordinate of the central point of the viewport. + * @param {Boolean} params.animate Indicates whether or not to animate the scale change and transition. + */ + setFocus: function(config){ + var bbox, + itemBbox, + newBbox, + codes, + i, + point; + + config = config || {}; + + if (config.region) { + codes = [config.region]; + } else if (config.regions) { + codes = config.regions; + } + + if (codes) { + for (i = 0; i < codes.length; i++) { + if (this.regions[codes[i]]) { + itemBbox = this.regions[codes[i]].element.shape.getBBox(); + if (itemBbox) { + if (typeof bbox == 'undefined') { + bbox = itemBbox; + } else { + newBbox = { + x: Math.min(bbox.x, itemBbox.x), + y: Math.min(bbox.y, itemBbox.y), + width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x), + height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y) + } + bbox = newBbox; + } + } + } + } + return this.setScale( + Math.min(this.width / bbox.width, this.height / bbox.height), + - (bbox.x + bbox.width / 2), + - (bbox.y + bbox.height / 2), + true, + config.animate + ); + } else { + if (config.lat && config.lng) { + point = this.latLngToPoint(config.lat, config.lng); + config.x = this.transX - point.x / this.scale; + config.y = this.transY - point.y / this.scale; + } else if (config.x && config.y) { + config.x *= -this.defaultWidth; + config.y *= -this.defaultHeight; + } + return this.setScale(config.scale * this.baseScale, config.x, config.y, true, config.animate); + } + }, + + getSelected: function(type){ + var key, + selected = []; + + for (key in this[type]) { + if (this[type][key].element.isSelected) { + selected.push(key); + } + } + return selected; + }, + + /** + * Return the codes of currently selected regions. + * @returns {Array} + */ + getSelectedRegions: function(){ + return this.getSelected('regions'); + }, + + /** + * Return the codes of currently selected markers. + * @returns {Array} + */ + getSelectedMarkers: function(){ + return this.getSelected('markers'); + }, + + setSelected: function(type, keys){ + var i; + + if (typeof keys != 'object') { + keys = [keys]; + } + + if (jvm.$.isArray(keys)) { + for (i = 0; i < keys.length; i++) { + this[type][keys[i]].element.setSelected(true); + } + } else { + for (i in keys) { + this[type][i].element.setSelected(!!keys[i]); + } + } + }, + + /** + * Set or remove selected state for the regions. + * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the region(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of regions, state of which should be changed. Selected state will be set if value is true, removed otherwise. + */ + setSelectedRegions: function(keys){ + this.setSelected('regions', keys); + }, + + /** + * Set or remove selected state for the markers. + * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the marker(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of markers, state of which should be changed. Selected state will be set if value is true, removed otherwise. + */ + setSelectedMarkers: function(keys){ + this.setSelected('markers', keys); + }, + + clearSelected: function(type){ + var select = {}, + selected = this.getSelected(type), + i; + + for (i = 0; i < selected.length; i++) { + select[selected[i]] = false; + }; + + this.setSelected(type, select); + }, + + /** + * Remove the selected state from all the currently selected regions. + */ + clearSelectedRegions: function(){ + this.clearSelected('regions'); + }, + + /** + * Remove the selected state from all the currently selected markers. + */ + clearSelectedMarkers: function(){ + this.clearSelected('markers'); + }, + + /** + * Return the instance of Map. Useful when instantiated as a jQuery plug-in. + * @returns {Map} + */ + getMapObject: function(){ + return this; + }, + + /** + * Return the name of the region by region code. + * @returns {String} + */ + getRegionName: function(code){ + return this.mapData.paths[code].name; + }, + + createRegions: function(){ + var key, + region, + map = this; + + this.regionLabelsGroup = this.regionLabelsGroup || this.canvas.addGroup(); + + for (key in this.mapData.paths) { + region = new jvm.Region({ + map: this, + path: this.mapData.paths[key].path, + code: key, + style: jvm.$.extend(true, {}, this.params.regionStyle), + labelStyle: jvm.$.extend(true, {}, this.params.regionLabelStyle), + canvas: this.canvas, + labelsGroup: this.regionLabelsGroup, + label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.regions) : null + }); + + jvm.$(region.shape).bind('selected', function(e, isSelected){ + map.container.trigger('regionSelected.jvectormap', [jvm.$(this.node).attr('data-code'), isSelected, map.getSelectedRegions()]); + }); + this.regions[key] = { + element: region, + config: this.mapData.paths[key] + }; + } + }, + + createMarkers: function(markers) { + var i, + marker, + point, + markerConfig, + markersArray, + map = this; + + this.markersGroup = this.markersGroup || this.canvas.addGroup(); + this.markerLabelsGroup = this.markerLabelsGroup || this.canvas.addGroup(); + + if (jvm.$.isArray(markers)) { + markersArray = markers.slice(); + markers = {}; + for (i = 0; i < markersArray.length; i++) { + markers[i] = markersArray[i]; + } + } + + for (i in markers) { + markerConfig = markers[i] instanceof Array ? {latLng: markers[i]} : markers[i]; + point = this.getMarkerPosition( markerConfig ); + + if (point !== false) { + marker = new jvm.Marker({ + map: this, + style: jvm.$.extend(true, {}, this.params.markerStyle, {initial: markerConfig.style || {}}), + labelStyle: jvm.$.extend(true, {}, this.params.markerLabelStyle), + index: i, + cx: point.x, + cy: point.y, + group: this.markersGroup, + canvas: this.canvas, + labelsGroup: this.markerLabelsGroup, + label: this.canvas.mode != 'vml' ? (this.params.labels && this.params.labels.markers) : null + }); + + jvm.$(marker.shape).bind('selected', function(e, isSelected){ + map.container.trigger('markerSelected.jvectormap', [jvm.$(this.node).attr('data-index'), isSelected, map.getSelectedMarkers()]); + }); + if (this.markers[i]) { + this.removeMarkers([i]); + } + this.markers[i] = {element: marker, config: markerConfig}; + } + } + }, + + repositionMarkers: function() { + var i, + point; + + for (i in this.markers) { + point = this.getMarkerPosition( this.markers[i].config ); + if (point !== false) { + this.markers[i].element.setStyle({cx: point.x, cy: point.y}); + } + } + }, + + repositionLabels: function() { + var key; + + for (key in this.regions) { + this.regions[key].element.updateLabelPosition(); + } + + for (key in this.markers) { + this.markers[key].element.updateLabelPosition(); + } + }, + + getMarkerPosition: function(markerConfig) { + if (jvm.Map.maps[this.params.map].projection) { + return this.latLngToPoint.apply(this, markerConfig.latLng || [0, 0]); + } else { + return { + x: markerConfig.coords[0]*this.scale + this.transX*this.scale, + y: markerConfig.coords[1]*this.scale + this.transY*this.scale + }; + } + }, + + /** + * Add one marker to the map. + * @param {String} key Marker unique code. + * @param {Object} marker Marker configuration parameters. + * @param {Array} seriesData Values to add to the data series. + */ + addMarker: function(key, marker, seriesData){ + var markers = {}, + data = [], + values, + i, + seriesData = seriesData || []; + + markers[key] = marker; + + for (i = 0; i < seriesData.length; i++) { + values = {}; + if (typeof seriesData[i] !== 'undefined') { + values[key] = seriesData[i]; + } + data.push(values); + } + this.addMarkers(markers, data); + }, + + /** + * Add set of marker to the map. + * @param {Object|Array} markers Markers to add to the map. In case of array is provided, codes of markers will be set as string representations of array indexes. + * @param {Array} seriesData Values to add to the data series. + */ + addMarkers: function(markers, seriesData){ + var i; + + seriesData = seriesData || []; + + this.createMarkers(markers); + for (i = 0; i < seriesData.length; i++) { + this.series.markers[i].setValues(seriesData[i] || {}); + }; + }, + + /** + * Remove some markers from the map. + * @param {Array} markers Array of marker codes to be removed. + */ + removeMarkers: function(markers){ + var i; + + for (i = 0; i < markers.length; i++) { + this.markers[ markers[i] ].element.remove(); + delete this.markers[ markers[i] ]; + }; + }, + + /** + * Remove all markers from the map. + */ + removeAllMarkers: function(){ + var i, + markers = []; + + for (i in this.markers) { + markers.push(i); + } + this.removeMarkers(markers) + }, + + /** + * Converts coordinates expressed as latitude and longitude to the coordinates in pixels on the map. + * @param {Number} lat Latitide of point in degrees. + * @param {Number} lng Longitude of point in degrees. + */ + latLngToPoint: function(lat, lng) { + var point, + proj = jvm.Map.maps[this.params.map].projection, + centralMeridian = proj.centralMeridian, + inset, + bbox; + + if (lng < (-180 + centralMeridian)) { + lng += 360; + } + + point = jvm.Proj[proj.type](lat, lng, centralMeridian); + + inset = this.getInsetForPoint(point.x, point.y); + if (inset) { + bbox = inset.bbox; + + point.x = (point.x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale; + point.y = (point.y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale; + + return { + x: point.x + this.transX*this.scale + inset.left*this.scale, + y: point.y + this.transY*this.scale + inset.top*this.scale + }; + } else { + return false; + } + }, + + /** + * Converts cartesian coordinates into coordinates expressed as latitude and longitude. + * @param {Number} x X-axis of point on map in pixels. + * @param {Number} y Y-axis of point on map in pixels. + */ + pointToLatLng: function(x, y) { + var proj = jvm.Map.maps[this.params.map].projection, + centralMeridian = proj.centralMeridian, + insets = jvm.Map.maps[this.params.map].insets, + i, + inset, + bbox, + nx, + ny; + + for (i = 0; i < insets.length; i++) { + inset = insets[i]; + bbox = inset.bbox; + + nx = x - (this.transX*this.scale + inset.left*this.scale); + ny = y - (this.transY*this.scale + inset.top*this.scale); + + nx = (nx / (inset.width * this.scale)) * (bbox[1].x - bbox[0].x) + bbox[0].x; + ny = (ny / (inset.height * this.scale)) * (bbox[1].y - bbox[0].y) + bbox[0].y; + + if (nx > bbox[0].x && nx < bbox[1].x && ny > bbox[0].y && ny < bbox[1].y) { + return jvm.Proj[proj.type + '_inv'](nx, -ny, centralMeridian); + } + } + + return false; + }, + + getInsetForPoint: function(x, y){ + var insets = jvm.Map.maps[this.params.map].insets, + i, + bbox; + + for (i = 0; i < insets.length; i++) { + bbox = insets[i].bbox; + if (x > bbox[0].x && x < bbox[1].x && y > bbox[0].y && y < bbox[1].y) { + return insets[i]; + } + } + }, + + createSeries: function(){ + var i, + key; + + this.series = { + markers: [], + regions: [] + }; + + for (key in this.params.series) { + for (i = 0; i < this.params.series[key].length; i++) { + this.series[key][i] = new jvm.DataSeries( + this.params.series[key][i], + this[key], + this + ); + } + } + }, + + /** + * Gracefully remove the map and and all its accessories, unbind event handlers. + */ + remove: function(){ + this.tip.remove(); + this.container.remove(); + jvm.$(window).unbind('resize', this.onResize); + jvm.$('body').unbind('mouseup', this.onContainerMouseUp); + } +}; + +jvm.Map.maps = {}; +jvm.Map.defaultParams = { + map: 'world_mill_en', + backgroundColor: '#505050', + zoomButtons: true, + zoomOnScroll: true, + zoomOnScrollSpeed: 3, + panOnDrag: true, + zoomMax: 8, + zoomMin: 1, + zoomStep: 1.6, + zoomAnimate: true, + regionsSelectable: false, + markersSelectable: false, + bindTouchEvents: true, + regionStyle: { + initial: { + fill: 'white', + "fill-opacity": 1, + stroke: 'none', + "stroke-width": 0, + "stroke-opacity": 1 + }, + hover: { + "fill-opacity": 0.8, + cursor: 'pointer' + }, + selected: { + fill: 'yellow' + }, + selectedHover: { + } + }, + regionLabelStyle: { + initial: { + 'font-family': 'Verdana', + 'font-size': '12', + 'font-weight': 'bold', + cursor: 'default', + fill: 'black' + }, + hover: { + cursor: 'pointer' + } + }, + markerStyle: { + initial: { + fill: 'grey', + stroke: '#505050', + "fill-opacity": 1, + "stroke-width": 1, + "stroke-opacity": 1, + r: 5 + }, + hover: { + stroke: 'black', + "stroke-width": 2, + cursor: 'pointer' + }, + selected: { + fill: 'blue' + }, + selectedHover: { + } + }, + markerLabelStyle: { + initial: { + 'font-family': 'Verdana', + 'font-size': '12', + 'font-weight': 'bold', + cursor: 'default', + fill: 'black' + }, + hover: { + cursor: 'pointer' + } + } +}; +jvm.Map.apiEvents = { + onRegionTipShow: 'regionTipShow', + onRegionOver: 'regionOver', + onRegionOut: 'regionOut', + onRegionClick: 'regionClick', + onRegionSelected: 'regionSelected', + onMarkerTipShow: 'markerTipShow', + onMarkerOver: 'markerOver', + onMarkerOut: 'markerOut', + onMarkerClick: 'markerClick', + onMarkerSelected: 'markerSelected', + onViewportChange: 'viewportChange' +}; +/** + * Creates map with drill-down functionality. + * @constructor + * @param {Object} params Parameters to initialize map with. + * @param {Number} params.maxLevel Maximum number of levels user can go through + * @param {Object} params.main Config of the main map. See <a href="./jvm-map/">jvm.Map</a> for more information. + * @param {Function} params.mapNameByCode Function go generate map name by region code. Default value is: +<pre> +function(code, multiMap) { + return code.toLowerCase()+'_'+ + multiMap.defaultProjection+'_en'; +} +</pre> + * @param {Function} params.mapUrlByCode Function to generate map url by region code. Default value is: +<pre> +function(code, multiMap){ + return 'jquery-jvectormap-data-'+ + code.toLowerCase()+'-'+ + multiMap.defaultProjection+'-en.js'; +} +</pre> + */ +jvm.MultiMap = function(params) { + var that = this; + + this.maps = {}; + this.params = jvm.$.extend(true, {}, jvm.MultiMap.defaultParams, params); + this.params.maxLevel = this.params.maxLevel || Number.MAX_VALUE; + this.params.main = this.params.main || {}; + this.params.main.multiMapLevel = 0; + this.history = [ this.addMap(this.params.main.map, this.params.main) ]; + this.defaultProjection = this.history[0].mapData.projection.type; + this.mapsLoaded = {}; + + this.params.container.css({position: 'relative'}); + this.backButton = jvm.$('<div/>').addClass('jvectormap-goback').text('Back').appendTo(this.params.container); + this.backButton.hide(); + this.backButton.click(function(){ + that.goBack(); + }); + + this.spinner = jvm.$('<div/>').addClass('jvectormap-spinner').appendTo(this.params.container); + this.spinner.hide(); +}; + +jvm.MultiMap.prototype = { + addMap: function(name, config){ + var cnt = jvm.$('<div/>').css({ + width: '100%', + height: '100%' + }); + + this.params.container.append(cnt); + + this.maps[name] = new jvm.Map(jvm.$.extend(config, {container: cnt})); + if (this.params.maxLevel > config.multiMapLevel) { + this.maps[name].container.on('regionClick.jvectormap', {scope: this}, function(e, code){ + var multimap = e.data.scope, + mapName = multimap.params.mapNameByCode(code, multimap); + + if (!multimap.drillDownPromise || multimap.drillDownPromise.state() !== 'pending') { + multimap.drillDown(mapName, code); + } + }); + } + + + return this.maps[name]; + }, + + downloadMap: function(code){ + var that = this, + deferred = jvm.$.Deferred(); + + if (!this.mapsLoaded[code]) { + jvm.$.get(this.params.mapUrlByCode(code, this)).then(function(){ + that.mapsLoaded[code] = true; + deferred.resolve(); + }, function(){ + deferred.reject(); + }); + } else { + deferred.resolve(); + } + return deferred; + }, + + drillDown: function(name, code){ + var currentMap = this.history[this.history.length - 1], + that = this, + focusPromise = currentMap.setFocus({region: code, animate: true}), + downloadPromise = this.downloadMap(code); + + focusPromise.then(function(){ + if (downloadPromise.state() === 'pending') { + that.spinner.show(); + } + }); + downloadPromise.always(function(){ + that.spinner.hide(); + }); + this.drillDownPromise = jvm.$.when(downloadPromise, focusPromise); + this.drillDownPromise.then(function(){ + currentMap.params.container.hide(); + if (!that.maps[name]) { + that.addMap(name, {map: name, multiMapLevel: currentMap.params.multiMapLevel + 1}); + } else { + that.maps[name].params.container.show(); + } + that.history.push( that.maps[name] ); + that.backButton.show(); + }); + }, + + goBack: function(){ + var currentMap = this.history.pop(), + prevMap = this.history[this.history.length - 1], + that = this; + + currentMap.setFocus({scale: 1, x: 0.5, y: 0.5, animate: true}).then(function(){ + currentMap.params.container.hide(); + prevMap.params.container.show(); + prevMap.updateSize(); + if (that.history.length === 1) { + that.backButton.hide(); + } + prevMap.setFocus({scale: 1, x: 0.5, y: 0.5, animate: true}); + }); + } +}; + +jvm.MultiMap.defaultParams = { + mapNameByCode: function(code, multiMap){ + return code.toLowerCase()+'_'+multiMap.defaultProjection+'_en'; + }, + mapUrlByCode: function(code, multiMap){ + return 'jquery-jvectormap-data-'+code.toLowerCase()+'-'+multiMap.defaultProjection+'-en.js'; + } +} diff --git a/plugins/jvectormap/jquery-jvectormap-asia-mill.js b/plugins/jvectormap/jquery-jvectormap-asia-mill.js new file mode 100644 index 0000000..8be274a --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-asia-mill.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'asia_mill',{"insets": [{"width": 900, "top": 0, "height": 555.5409752358405, "bbox": [{"y": -6895749.143810256, "x": 2858903.2260101754}, {"y": 1365383.966806244, "x": 16242290.106516164}], "left": 0}], "paths": {"BD": {"path": "M468.23,273.61l0.71,0.28l0.58,-0.17l1.03,-2.27l3.07,-0.06l0.75,-0.99l-1.01,-0.97l-0.42,-1.03l-2.11,-0.48l-1.82,-1.98l-1.04,-0.37l0.36,-1.52l2.2,-2.38l-0.03,-0.74l-0.59,-0.55l1.28,0.98l0.67,1.23l1.03,0.3l1.31,0.04l0.39,-0.56l-0.29,-0.74l1.12,2.32l1.6,0.95l1.55,0.0l0.55,-0.72l0.06,-0.94l0.91,1.84l-0.18,4.52l0.45,0.95l4.71,1.15l12.05,-0.09l2.87,1.64l-1.68,-0.08l-1.11,3.94l-1.09,0.36l-0.53,1.16l-0.92,-0.13l-1.3,0.83l-1.65,0.27l-1.04,1.45l-0.55,2.17l1.25,4.63l0.87,0.36l0.23,-0.76l0.39,0.99l1.03,0.54l1.43,-0.82l0.06,-1.92l1.33,-1.61l-0.02,-1.25l1.1,-0.2l0.56,0.3l0.57,2.45l0.21,3.12l0.98,1.98l0.95,10.27l-1.52,-0.91l-0.91,0.13l-0.83,1.18l0.19,1.46l-0.37,-0.53l-0.38,-4.02l-1.31,-4.1l0.26,-0.9l-0.55,-0.43l-0.24,0.13l-1.76,-2.79l-0.59,-1.56l-2.33,1.96l-1.63,0.27l-1.96,-3.12l-0.37,-4.39l-0.56,-0.29l-0.45,0.36l-0.06,0.92l-1.76,-0.24l-0.44,0.23l0.12,0.48l0.92,0.7l1.01,0.22l0.34,0.42l0.02,0.68l-0.97,0.9l0.32,0.89l-0.51,0.67l-0.05,0.75l0.49,1.55l0.74,1.1l-0.04,1.05l-1.67,1.56l-1.04,1.67l-0.41,-0.63l0.95,-1.34l0.03,-0.48l-0.94,-0.02l-1.11,0.67l-0.25,-1.52l0.63,-1.15l-0.09,-0.5l-0.51,-0.01l-0.91,0.83l-0.49,3.08l-1.12,0.91l-0.6,-3.09l-0.39,-0.32l-0.5,0.81l0.23,2.33l-0.91,1.25l-0.47,0.01l-0.88,-0.99l-0.34,-3.13l-0.94,-2.74l-0.52,-3.11l0.52,-1.04l-0.11,-0.49l-1.5,-0.56l0.17,-1.34l-1.2,-1.65l0.96,-2.52l0.18,-2.32l-0.78,-0.65l-1.19,-0.22l-1.51,-1.02l-0.65,0.08l-0.78,-0.54l-0.29,-0.57l0.77,-1.7ZM492.82,292.48l0.02,0.04l-0.02,-0.03l0.0,-0.01ZM490.12,294.53l0.06,-0.71l0.06,0.24l-0.11,0.47ZM486.34,295.46l0.98,-1.76l-0.25,-1.76l-0.63,-0.69l-0.22,-1.31l1.7,2.68l-0.27,2.27l-0.25,0.35l-1.07,0.23Z", "name": "Bangladesh"}, "MN": {"path": "M465.38,65.23l0.89,-0.91l-0.34,-1.28l0.62,-0.06l1.36,-0.89l0.63,-1.89l2.96,-0.29l1.6,0.36l0.59,-0.65l0.58,0.39l1.04,-0.28l0.59,-0.33l0.38,-0.81l1.04,0.09l2.05,-1.05l0.37,-0.57l-0.19,-1.38l2.27,-0.66l0.58,-1.07l4.59,-1.32l0.78,-0.78l1.87,-1.05l2.78,-0.49l3.01,-2.22l2.88,-0.07l1.04,-1.55l2.11,1.67l0.67,-0.01l0.8,-0.92l0.67,0.01l0.42,1.04l1.07,0.72l8.35,0.44l0.71,3.17l2.29,2.08l2.21,-0.2l1.29,1.02l2.11,-0.02l1.12,0.3l2.16,-0.99l1.09,0.49l0.76,-0.36l1.92,0.95l4.87,0.16l1.67,1.45l1.56,-0.13l1.37,-1.0l0.41,-0.68l1.71,-0.25l1.36,-0.75l0.85,-0.75l1.1,-2.2l0.25,-2.54l-1.91,-1.23l-0.53,-1.95l-0.94,-1.28l0.05,-0.46l0.57,-1.2l0.23,-1.64l0.63,-0.95l1.29,-0.51l0.99,-2.1l2.22,-0.91l1.25,-1.62l0.49,-1.34l0.6,0.61l2.94,1.23l2.31,0.52l1.62,1.19l4.13,0.3l6.74,2.7l1.5,-0.12l3.88,1.08l0.63,4.99l0.71,1.02l-0.09,1.5l0.6,0.53l0.85,0.15l1.69,1.38l3.6,0.96l1.12,0.89l2.42,0.6l1.42,-0.35l2.09,0.2l0.92,-0.22l2.0,-1.27l4.65,-0.82l2.11,-0.81l3.62,0.66l2.55,0.98l3.66,-0.08l3.83,3.12l5.14,0.45l-0.06,2.11l0.27,0.58l3.44,2.64l1.66,0.76l4.72,-0.1l7.17,1.59l1.72,-0.47l1.38,0.73l0.9,-0.0l4.66,-2.03l5.53,-0.68l3.09,-1.04l1.45,0.23l1.07,-0.2l1.83,-0.89l0.96,-1.85l2.96,-1.98l5.22,-2.55l3.2,0.36l1.84,0.88l2.02,1.84l1.38,0.6l2.35,0.12l3.03,-1.24l1.43,0.3l1.44,0.54l0.71,0.62l-4.84,9.93l-1.54,2.03l-0.25,2.98l-1.78,1.03l-0.19,0.39l0.24,1.78l0.55,0.9l2.15,1.83l1.08,-0.17l1.76,-1.38l1.99,0.18l1.85,-0.29l2.16,0.57l2.17,1.49l3.44,-3.22l2.57,-0.35l2.54,0.41l1.8,2.03l2.38,0.99l0.65,1.24l0.93,0.52l1.8,2.04l1.36,0.99l0.52,1.52l0.76,1.05l-0.01,1.06l-1.13,0.84l-2.67,-0.08l-3.79,-1.36l-0.93,0.6l-2.89,-0.2l-1.99,0.49l-1.2,0.45l-1.18,0.92l-1.41,-0.65l-1.01,0.08l-0.42,0.37l-0.4,1.72l-3.39,-0.28l-2.33,0.96l-2.4,3.23l-0.39,0.71l-0.06,1.29l-1.88,0.99l-1.87,1.53l-3.74,0.61l-1.74,0.11l-1.43,-0.38l-1.43,0.3l-1.21,1.84l-2.52,2.13l-3.44,1.97l-6.46,-1.24l-2.32,-1.64l-3.93,-0.05l-1.35,1.02l-0.99,1.34l-1.71,4.41l0.96,1.92l2.38,2.38l0.66,1.54l-1.14,0.39l-1.55,1.43l-4.17,1.53l-4.52,5.09l-7.72,2.96l-4.84,0.2l-3.84,-0.28l-10.6,1.44l-11.84,4.97l-1.46,1.22l-0.95,-0.4l-2.3,-0.1l0.0,-1.59l-0.48,-0.39l-5.77,1.1l-4.75,-2.26l-6.83,-1.36l-1.26,-0.48l-2.32,-2.54l-1.39,-0.42l-3.06,-0.12l-8.31,-1.14l-3.92,0.98l-16.87,-2.0l-6.05,0.61l-0.42,-1.63l-3.28,-3.13l-0.15,-1.01l-2.38,-5.24l-1.45,-0.72l0.29,-1.8l-0.2,-0.51l-2.52,0.02l-2.39,-0.79l-2.56,-1.53l-1.19,-1.11l-1.93,-0.36l-2.15,-2.01l-1.23,-0.49l-5.48,-0.85l-2.76,0.24l-2.97,-0.55l-3.26,-0.07l-1.18,-0.45l-0.88,0.06l-1.89,-0.9l-1.14,0.11l-1.48,-2.67l0.33,-1.69l2.14,-2.77l0.03,-0.89l-0.63,-1.57l0.87,-2.78l-0.36,-1.84l-0.87,-1.94l-1.26,-0.64l-1.54,-2.5l-0.52,-2.03l-0.88,-1.72l-1.6,-0.72l-0.81,-1.38l-0.52,-0.08l-1.29,0.57l-1.61,-1.67l-1.89,-0.23l-1.51,0.36l-3.73,-2.07l-0.11,-0.9l-0.63,-0.83l-3.77,-1.57l0.57,-0.74l-0.01,-0.67l-1.71,-0.88l-0.5,-0.67Z", "name": "Mongolia"}, "BN": {"path": "M669.68,427.4l0.73,0.87l0.54,2.47l-0.75,-0.21l-0.52,-3.13ZM663.3,429.66l2.55,-1.0l3.15,-2.12l-2.11,1.53l0.21,2.24l0.34,0.55l-0.41,1.43l-0.75,0.81l-1.24,-1.48l-0.84,-0.24l-0.9,-1.73Z", "name": "Brunei"}, "BH": {"path": "M186.05,263.08l0.03,-0.01l0.0,0.12l-0.03,-0.12ZM186.08,263.2l0.33,0.5l-0.01,1.54l-0.25,-0.46l-0.07,-1.59Z", "name": "Bahrain"}, "BT": {"path": "M479.26,258.41l-0.68,-0.6l-1.59,-0.42l-1.49,0.21l-0.67,-0.33l-1.21,-0.69l-0.18,-0.78l-0.61,-0.7l0.98,-0.78l0.47,-1.27l1.11,-1.01l0.49,-1.02l2.35,-2.77l2.96,-1.79l1.35,-0.05l1.57,0.4l-0.19,0.88l0.51,0.52l2.68,0.07l2.39,0.83l1.8,-0.86l2.35,0.97l-0.39,2.29l0.21,0.81l1.39,1.06l1.61,-0.11l0.49,0.91l-0.62,1.49l0.57,1.2l-0.19,0.44l-2.46,0.43l-0.91,-0.03l-0.85,-0.49l-1.14,0.61l-4.0,0.16l-3.09,-0.93l-1.21,0.46l-0.53,0.64l-3.27,0.27Z", "name": "Bhutan"}, "HK": {"path": "M661.58,292.96l0.56,-0.57l0.79,-0.15l0.37,0.12l0.23,0.69l-0.18,0.38l-1.77,-0.47Z", "name": "Hong Kong"}, "JO": {"path": "M73.44,221.31l0.32,-1.94l0.71,-1.81l-0.18,-2.7l0.4,-4.54l0.81,-0.34l0.91,0.11l1.09,1.36l1.36,0.46l1.2,0.92l3.65,0.53l14.19,-8.55l1.88,6.47l-0.46,0.56l0.45,1.39l0.49,0.26l1.18,-0.3l0.12,0.32l-2.13,1.8l-14.99,4.17l-0.18,0.66l7.3,7.79l-2.14,1.24l-1.23,2.64l-5.25,1.04l-0.54,0.35l-1.77,2.81l-2.92,2.3l-7.72,-1.2l0.79,-4.67l0.53,-1.3l0.03,-2.42l2.2,-5.75l-0.11,-1.66Z", "name": "Jordan"}, "PS": {"path": "M69.37,220.61l0.5,-1.44l1.93,-1.52l-0.75,-0.82l-0.89,-0.22l-0.2,-2.28l0.38,-1.39l0.34,-0.86l0.71,-0.46l1.04,0.19l1.21,0.91l0.0,4.78l-0.74,2.04l-2.36,0.96l-1.18,0.1ZM64.36,221.37l0.26,-0.24l-0.2,0.39l-0.05,-0.15Z", "name": "Palestine"}, "LB": {"path": "M71.41,206.16l3.41,-7.3l0.31,-1.87l1.06,-1.44l1.32,-0.97l0.1,-0.56l2.44,-0.29l-0.58,1.07l1.36,0.72l0.51,1.51l-0.27,0.54l-1.73,1.43l-0.21,0.89l-1.1,0.06l-1.03,0.79l-0.41,0.85l0.43,0.87l-1.83,1.74l-1.46,0.66l-0.46,1.19l-0.37,0.22l-1.46,-0.12Z", "name": "Lebanon"}, "LA": {"path": "M558.12,308.97l0.8,-2.48l0.9,-0.56l1.21,-0.03l0.58,-0.32l0.14,-0.59l-0.68,-0.32l0.06,-0.31l0.54,-0.46l0.92,-1.8l1.27,-0.46l1.32,-0.98l0.33,1.83l0.41,0.49l2.23,-0.25l1.45,0.64l0.79,-0.52l0.23,-0.51l-0.59,-0.81l0.09,-3.9l-1.05,-1.43l-0.46,-1.67l1.09,-1.67l0.5,0.65l1.96,-0.09l2.85,3.44l0.75,0.49l0.74,1.87l0.55,0.12l0.79,-0.61l0.59,0.27l-0.72,3.25l2.08,3.11l4.25,1.55l3.34,-1.92l3.23,2.09l-1.48,1.18l0.07,0.59l1.87,0.54l0.4,1.12l1.34,0.22l0.42,0.91l-1.29,1.97l-1.05,0.95l-2.28,-0.55l-2.03,0.27l-0.16,0.6l0.32,1.04l-1.08,0.87l-0.12,0.82l6.31,4.01l3.0,0.99l-0.42,1.03l0.28,0.95l1.72,1.75l0.92,0.28l0.85,1.15l0.86,2.02l2.37,2.5l1.98,1.54l1.67,1.97l0.28,2.13l0.96,1.49l0.83,0.4l0.66,-0.34l0.63,1.05l3.36,2.31l-1.56,1.09l-0.2,0.64l0.94,1.54l2.13,1.74l0.53,0.81l-1.24,1.92l0.26,2.05l-0.64,0.9l-0.88,-0.18l-1.3,1.28l-0.72,0.04l-0.59,0.63l-0.63,0.09l-2.18,-1.88l-0.59,0.03l-0.89,0.79l-0.78,-0.14l-0.68,0.79l-1.22,0.15l-0.43,0.59l1.04,2.11l-0.26,0.59l-0.82,-0.02l-1.24,-1.21l-1.56,-0.54l-1.34,0.34l-0.62,-0.55l-0.32,-0.6l1.56,-0.89l0.71,-1.11l0.39,-2.8l-0.42,-2.39l0.93,-1.73l0.17,-1.54l-0.28,-0.5l-1.57,-0.92l-0.05,-1.29l-2.57,-1.25l-0.75,-1.37l-0.96,-0.96l-0.46,-1.25l-0.05,-1.74l0.51,-3.38l-0.65,-1.35l-2.34,-1.84l-3.57,-4.78l-1.35,-0.09l-2.3,-0.79l-1.67,0.07l-0.48,0.38l-0.07,0.74l-1.19,1.15l-0.3,0.82l-1.62,0.51l-1.04,0.72l-0.47,-0.8l-1.53,-0.65l-1.54,-1.23l-0.79,-0.06l-1.18,1.01l-1.29,0.38l-0.67,1.12l-2.05,1.33l-1.8,1.65l-1.16,-0.32l1.6,-4.28l-0.05,-1.21l-0.67,-1.09l0.86,-1.3l0.92,-2.92l-0.66,-2.72l0.1,-1.75l-0.63,-0.53l-1.54,-0.29l-1.85,0.75l-0.71,0.09l-0.67,-0.33l-0.57,-0.57l-0.12,-0.62l1.05,-2.53l-0.19,-0.97l-1.62,-1.77l-0.72,-0.02l-0.52,0.36Z", "name": "Lao PDR"}, "TW": {"path": "M709.3,291.82l-1.83,-4.59l0.51,-1.89l-0.08,-2.0l3.67,-6.43l3.03,-4.34l3.7,-1.83l2.14,1.56l0.09,0.35l-0.77,1.26l0.06,2.28l-1.59,3.77l-1.03,5.01l-0.91,2.74l-2.57,3.52l-0.85,1.94l-0.35,3.19l-0.44,-0.46l-0.11,-1.02l-0.74,-1.59l-1.92,-1.47Z", "name": "Taiwan"}, "TR": {"path": "M7.99,161.66l1.03,0.22l1.78,-0.37l0.63,-0.86l-1.88,-0.41l-0.87,-1.59l0.93,-0.42l0.78,-0.97l-0.38,-0.84l-1.04,-0.26l0.22,-1.4l-1.11,-1.38l1.53,-1.64l-0.01,-0.66l-0.98,-0.39l-5.01,0.73l0.43,-1.17l0.14,-2.62l0.96,-0.37l3.02,-3.17l1.89,0.03l0.94,-0.5l0.88,-0.02l0.41,0.66l1.26,0.53l2.03,-0.11l0.96,-0.5l0.06,-0.48l0.2,0.52l0.44,0.12l2.4,-0.29l5.37,0.12l0.62,-0.4l-0.05,-0.64l-1.48,-0.65l0.7,-0.47l6.52,-0.93l0.35,-0.33l-0.36,-0.66l-4.21,-0.72l-1.38,-1.17l0.51,-1.42l5.55,0.63l3.22,-0.4l3.54,0.99l3.33,-0.2l1.01,-0.65l0.77,-1.35l4.6,-2.35l1.66,-1.26l7.24,-2.43l10.86,0.44l1.96,-0.93l0.54,0.16l-0.03,1.2l1.48,1.59l2.21,0.87l2.62,-0.69l0.67,0.19l0.96,2.25l1.79,1.43l0.93,0.16l1.2,-0.81l0.79,-0.08l1.41,0.69l0.74,0.89l5.19,0.94l1.14,0.69l3.53,0.69l7.87,-1.6l2.82,1.08l2.54,0.35l1.02,-0.16l6.24,-2.71l2.51,-1.47l0.64,-0.71l2.14,0.68l0.98,-0.56l3.85,0.49l1.25,-1.25l0.91,0.03l0.44,0.73l2.22,1.53l0.02,0.52l0.51,0.51l1.61,0.31l0.22,0.85l1.28,1.16l0.57,2.17l-1.04,1.78l0.93,2.48l-0.04,0.84l2.19,0.95l2.59,-0.14l2.28,1.66l-1.27,0.98l-0.54,2.14l-2.31,0.12l-0.46,0.66l0.51,1.54l0.64,0.58l-0.24,1.25l0.2,0.53l0.71,0.9l0.23,3.83l1.0,0.49l-1.64,3.72l0.43,0.51l0.73,0.06l1.56,1.01l-0.24,0.46l0.21,1.92l1.62,1.39l-0.23,0.51l-0.93,-0.02l-2.34,1.61l-0.2,-2.01l-0.87,-0.72l-0.84,-0.11l-1.42,0.77l-1.09,-0.03l-4.28,-1.2l-1.3,0.34l-1.32,-0.37l-2.72,2.18l-0.63,-1.23l-0.91,-0.31l-1.16,0.82l-3.93,0.97l-6.05,-0.08l-5.27,2.36l-4.83,1.22l-4.33,-0.1l-2.35,-1.43l-1.98,-0.36l-5.77,2.22l-2.57,-0.08l-0.96,-0.89l-2.18,-0.39l-0.64,0.48l-0.7,2.82l0.69,1.64l-1.76,0.56l-0.32,1.45l-0.99,0.56l-0.34,0.73l-1.01,-0.55l0.15,-0.53l-1.01,-2.49l2.77,-3.03l-0.16,-1.54l-1.04,-0.94l-0.43,-0.04l-2.94,1.62l-0.88,1.05l-0.89,0.15l-4.31,-1.91l-1.02,-0.13l-3.12,1.87l-2.57,2.64l-1.88,0.93l-5.61,0.72l-1.03,0.48l-1.75,-0.5l-1.08,-0.65l-2.65,-2.99l-5.1,-2.34l-5.46,-0.6l-0.89,0.96l-0.17,2.23l-0.71,2.0l-1.51,-0.37l-3.86,1.25l-3.28,-1.34l-0.48,-0.5l-0.77,-2.47l-0.76,-0.44l-1.22,0.32l-2.38,-1.06l-1.51,-0.11l-1.53,1.41l0.18,-0.25l-0.34,-0.64l-0.34,0.02l1.78,-1.56l0.13,-0.28l-0.36,-0.57l-7.0,0.23l0.11,-0.26l1.71,-0.35l0.29,-0.44l-0.31,-1.03l-2.07,-1.09l-0.87,-2.1l0.93,-0.51l0.06,-2.34l-2.86,-1.01l-1.45,-1.17l-1.04,0.34l-1.56,-0.72l0.81,-0.68l0.07,-0.85l-0.38,-1.15l0.83,0.48l0.08,1.22l0.49,0.71l0.25,0.15l0.66,-0.5ZM15.22,175.57l-0.41,0.2l-0.33,-0.03l0.31,-0.13l0.43,-0.04ZM16.6,143.61l0.01,-0.05l-0.46,-0.47l0.7,0.08l-0.24,0.44ZM3.34,140.98l2.15,-2.44l-0.15,-2.09l1.72,-0.87l0.46,-0.67l-0.31,-2.04l-1.93,-1.23l1.34,-0.44l0.56,-1.08l2.01,-0.26l1.03,-0.61l1.74,-0.22l1.82,1.43l3.3,-0.46l-0.1,0.85l0.47,1.13l1.24,1.74l1.18,0.83l5.0,2.06l-0.52,1.31l-1.07,0.25l-4.52,-0.94l-1.96,0.79l-1.34,-0.18l-1.86,0.36l-1.98,2.61l-3.22,1.51l0.3,-0.41l-0.33,-0.64l-4.89,0.12l-0.18,-0.41ZM7.44,143.02l-1.73,1.59l-1.03,1.2l0.09,-1.2l1.25,-0.99l1.41,-0.61ZM0.74,145.85l0.89,-0.3l0.19,0.13l-1.08,0.17Z", "name": "Turkey"}, "LK": {"path": "M405.27,403.82l0.63,-0.48l0.31,-2.67l0.69,-2.19l-0.1,-1.45l1.26,-2.36l0.05,-2.28l1.32,0.61l0.71,-0.1l0.29,-0.53l1.52,1.26l1.62,2.89l0.68,0.41l1.3,1.94l0.18,1.09l1.12,0.66l0.37,2.11l1.82,2.76l1.26,2.7l0.27,0.91l-0.09,2.77l-1.05,2.78l-2.37,1.92l-4.81,1.92l-1.57,0.21l-1.55,-0.41l-1.15,-0.96l-1.7,-4.93l-1.0,-8.59ZM409.2,391.24l-1.76,-0.39l-0.41,-0.44l1.57,0.08l0.6,0.76Z", "name": "Sri Lanka"}, "TL": {"path": "M743.75,531.36l1.77,-2.37l1.4,-0.5l3.12,-0.62l6.11,-0.25l2.56,-1.05l1.81,0.43l-2.38,1.79l-1.88,0.51l-1.38,1.0l-2.37,0.62l-1.6,0.93l-4.02,1.15l-2.18,1.48l-0.65,-1.32l0.98,-0.19l0.44,-1.35l-0.59,-0.65l-1.14,0.38ZM737.32,534.04l0.79,-0.42l1.17,-0.31l-0.74,0.83l-1.22,-0.09Z", "name": "Timor-Leste"}, "TM": {"path": "M203.1,134.81l-0.97,-1.38l-0.75,-1.96l2.58,-2.29l1.35,-0.76l-1.16,0.96l-1.2,2.45l0.48,0.84l-0.32,2.14ZM206.04,128.16l3.88,-1.05l3.1,-0.34l5.29,3.23l2.91,4.49l1.91,1.78l0.68,0.13l2.88,-0.54l8.07,0.54l1.16,-1.25l-0.76,-0.98l-0.26,-2.09l0.85,0.12l1.5,1.43l2.63,-0.58l1.07,-0.61l0.51,-0.81l-0.12,-0.87l-1.1,-0.81l-0.57,-1.62l1.36,-0.37l1.43,-2.54l1.56,0.47l0.76,1.14l1.07,0.04l0.16,-0.96l-2.22,-2.29l2.06,-0.02l0.81,-0.77l1.85,1.68l2.07,0.43l0.74,1.24l0.76,0.47l3.79,0.28l0.85,0.67l-0.35,2.11l1.55,0.99l-0.65,0.67l0.44,1.43l-0.5,1.54l0.38,0.61l2.88,1.63l3.07,-0.24l2.91,0.53l0.65,-0.05l1.18,-0.72l1.0,0.29l1.8,1.21l1.39,3.57l2.06,3.05l0.85,3.23l7.75,5.38l1.95,1.91l3.03,1.84l1.19,-0.12l2.24,1.84l7.43,4.52l2.76,-0.01l3.1,1.66l1.36,0.35l0.19,0.22l-0.77,1.34l-0.06,3.42l-2.52,-0.56l-2.87,-1.32l-1.09,1.01l-0.59,1.71l-3.23,0.11l-2.21,0.96l-2.42,6.9l-1.05,0.9l-1.93,0.94l-0.56,0.81l-1.11,0.03l-4.14,1.3l-1.34,0.12l-0.43,0.76l0.37,0.94l-0.74,1.84l-2.56,1.51l-1.65,0.02l-1.01,0.51l-0.49,-0.76l-1.74,-1.33l-2.84,0.04l-1.86,-1.54l-0.71,-0.1l0.1,-1.7l-0.68,-1.07l0.38,-0.89l-0.32,-4.03l-0.44,-0.84l-6.02,-0.15l-1.99,-2.71l-4.53,-2.48l-0.55,-0.59l-0.67,-1.69l-3.71,-1.53l-1.3,0.25l-0.99,-0.27l-1.02,0.41l-0.75,-0.21l-2.17,-1.45l-4.57,-1.19l-0.25,-1.22l-1.0,-0.91l-5.86,-0.35l-1.13,0.6l-0.29,0.89l-5.02,-0.19l-1.6,0.44l-3.74,2.45l-1.46,2.63l-3.62,1.13l-1.71,-0.08l-0.61,-4.69l0.33,-8.95l-1.59,-2.61l-2.68,-1.14l-1.3,0.25l0.55,-1.59l1.9,0.43l0.79,-0.12l0.32,-0.51l-0.29,-0.73l-0.73,-0.5l0.06,-2.12l-0.93,-0.58l-3.08,-0.24l-0.51,0.58l-0.94,-2.3l-0.07,-1.47l1.32,-4.71l1.22,1.25l1.6,0.4l1.86,-0.34l0.99,1.22l1.24,0.3l2.26,-0.61l1.46,0.23l0.32,-0.57l-0.35,-0.92l1.37,0.24l1.14,-0.41l0.37,-0.43l0.06,-1.24l-0.39,-1.08l-0.65,-0.72l-2.36,-1.57l-1.3,-1.27l-1.97,-5.25l-1.88,-0.49l-3.37,0.39Z", "name": "Turkmenistan"}, "TJ": {"path": "M312.6,153.86l0.49,-1.67l0.75,-0.73l1.15,-0.49l4.28,0.72l1.47,-0.06l0.98,-0.92l0.43,-1.72l0.68,-0.04l1.02,-0.65l0.05,-0.52l-0.48,-0.67l1.1,-0.28l0.2,-0.47l-0.55,-0.7l2.53,0.2l0.5,-1.43l-0.62,-2.01l0.6,-0.54l0.29,-1.15l0.59,0.04l1.33,0.95l0.68,0.04l4.34,-2.09l0.69,-1.18l1.41,1.4l0.16,0.81l0.48,0.2l-2.49,2.0l-0.24,0.95l0.31,0.46l1.01,0.36l0.69,1.04l0.79,0.09l-0.57,0.34l-0.55,1.08l-0.56,-0.81l-3.63,-1.35l-3.51,0.92l-0.7,0.87l0.01,0.65l-0.71,-0.36l-0.52,0.2l-0.23,0.5l-0.38,1.42l0.51,2.2l0.44,0.36l2.29,-0.43l2.59,0.18l1.71,-0.22l0.58,0.29l1.77,-0.37l0.57,0.13l0.89,1.24l0.85,0.31l1.54,-0.15l0.69,-0.8l2.64,-0.87l0.14,1.01l1.56,0.42l-0.06,0.72l0.58,0.64l0.59,0.04l1.42,-0.63l1.34,1.18l0.41,0.04l0.98,-1.13l1.43,-0.33l4.05,0.14l2.7,-0.86l0.79,0.04l-0.15,1.79l1.41,2.05l-0.78,0.93l0.93,2.59l1.55,0.72l0.72,-0.27l0.58,-0.82l0.9,0.0l3.72,1.57l-0.34,2.11l1.2,3.66l-0.24,1.67l1.57,1.55l-1.23,0.9l-1.56,-1.23l-3.22,-0.24l-0.9,0.78l-2.94,0.8l0.31,-0.94l-0.4,-0.66l-2.66,-0.38l-3.85,1.77l-1.04,0.82l-0.75,1.19l-2.16,0.4l-4.14,2.46l-0.73,-0.02l-0.79,-1.05l-0.7,-2.31l1.11,-6.72l-0.64,-0.61l-1.63,0.26l0.38,-1.82l-0.6,-1.47l-1.67,-1.13l-1.62,-0.38l-1.22,0.38l-0.9,0.77l-1.53,2.3l-1.6,1.44l0.26,2.26l-0.36,0.54l-0.71,0.2l-0.83,-0.46l-0.97,-0.08l-2.56,0.51l-0.8,0.87l-0.03,2.31l-0.63,0.6l-2.15,-1.75l-0.7,-0.14l-0.87,0.62l-0.93,0.03l-2.25,1.1l-0.9,0.97l-1.34,0.56l-0.57,-0.13l-1.25,-1.25l0.38,-2.72l3.53,-4.61l0.49,-1.81l-1.99,-2.39l-0.27,-1.51l0.72,-1.85l-0.39,-1.0l-0.72,-0.35l-2.42,-0.06l-0.36,-1.16l-2.04,-0.68Z", "name": "Tajikistan"}, "TH": {"path": "M537.74,324.01l2.04,-0.59l0.45,-0.42l-0.28,-2.76l0.73,-1.57l0.08,-2.38l1.18,-1.35l0.27,-0.79l1.75,0.63l4.69,-0.67l0.85,-0.91l0.34,-1.57l0.78,-0.19l1.13,0.28l1.04,-0.35l0.57,-0.75l-0.14,-0.95l1.52,0.11l1.48,-0.7l0.99,0.61l0.38,0.69l0.44,-0.05l0.96,-0.98l1.39,1.65l-1.06,2.91l0.28,1.07l0.7,0.71l1.17,0.53l1.0,-0.15l1.15,-0.68l1.82,0.3l-0.13,1.56l0.65,2.57l-0.87,2.67l-0.9,1.41l0.67,1.48l0.03,0.9l-1.74,4.23l0.45,0.78l1.2,0.54l0.78,-0.12l4.07,-3.13l0.69,-1.12l1.14,-0.27l1.06,-0.94l1.58,1.2l1.52,0.65l0.32,0.84l0.8,0.31l1.15,-1.0l1.89,-0.68l0.79,-1.54l0.91,-0.51l0.04,-0.84l1.24,-0.05l2.26,0.78l1.17,0.08l2.58,3.67l3.09,2.7l0.49,1.06l-0.52,3.18l0.05,1.82l0.54,1.52l1.05,1.09l0.81,1.45l2.36,1.1l-0.1,0.63l0.34,0.79l1.66,1.09l-0.17,1.07l-0.78,1.05l-0.17,0.77l0.4,2.55l-0.48,2.9l-2.18,1.37l-0.64,0.74l-0.46,-1.02l-1.49,-0.49l-6.07,0.52l-2.88,-0.48l-3.04,0.68l-1.37,0.65l-1.02,0.96l-1.4,2.3l-1.3,1.31l-0.09,0.53l-1.54,0.29l-0.11,2.45l0.98,2.09l0.27,2.51l1.86,1.89l-0.26,1.54l-0.86,-0.06l-0.14,0.32l-1.06,-0.8l-0.59,-1.02l-0.56,0.06l-1.2,-1.2l-2.43,-1.27l-2.27,0.49l-2.58,-0.4l-1.21,0.26l0.58,-5.56l-0.62,-0.66l-2.72,-0.77l-0.4,0.33l-3.09,0.59l-1.02,0.94l-0.2,0.84l0.71,1.59l-0.91,2.64l0.19,3.93l-1.05,1.63l-0.35,1.5l-1.27,2.17l-1.08,4.38l-1.47,2.35l-0.92,2.27l-0.07,4.25l0.92,2.45l-0.22,1.06l0.22,0.41l1.15,0.42l2.57,-0.74l0.54,0.13l1.06,5.07l1.12,1.35l0.69,-0.03l1.1,4.65l-0.71,-0.32l-0.96,0.72l0.38,1.87l1.85,2.56l1.25,0.14l3.14,2.29l2.99,-0.24l1.37,0.96l1.45,2.16l1.99,1.54l-0.2,0.8l-1.73,2.19l-0.57,0.01l-0.62,-0.83l-0.58,-0.14l-2.26,0.9l-0.77,1.07l-0.71,-0.69l0.68,-1.21l-0.18,-2.32l-0.75,-0.38l-0.78,0.05l-0.54,-1.24l-0.66,-0.46l-0.85,0.18l-1.85,-0.67l-0.86,-1.07l-1.03,0.3l-0.26,1.05l-1.38,-1.7l-1.18,-0.89l0.16,-1.5l-1.21,-0.97l0.27,-0.83l-0.53,-0.49l-1.31,-0.03l-0.73,-1.83l-0.6,-0.75l-0.9,-0.15l-0.12,-1.17l-1.94,-1.31l-0.71,-1.5l-1.29,-0.72l-0.59,0.2l-0.76,0.98l-0.68,-1.48l0.03,-2.42l0.63,-1.55l0.33,-2.39l2.81,-8.01l0.09,-2.34l3.14,-3.22l3.28,-5.36l-1.16,-3.29l-0.48,-2.8l-1.36,-1.43l-0.7,-2.18l0.42,-1.38l-0.33,-3.85l-1.57,-2.62l-2.74,-2.39l-2.36,-3.38l-0.3,-1.14l-0.11,-1.46l2.77,-1.37l0.24,-5.08l1.99,-1.43l0.23,-1.3l-0.53,-0.67l-0.48,0.01l-0.77,0.61l-1.26,-2.81l-0.32,-1.92l-5.49,-6.4l0.28,-0.94l-0.82,-2.56l-0.24,-0.48l-0.82,-0.09l-0.57,-0.75ZM559.45,406.63l0.01,0.05l-0.04,-0.01l0.03,-0.04ZM556.62,392.44l0.03,-0.28l0.21,0.01l-0.06,0.19l-0.18,0.08ZM544.21,404.66l-0.1,-0.43l0.18,-0.99l0.21,0.06l-0.29,1.36Z", "name": "Thailand"}, "XC": {"path": "M54.11,189.32l0.71,-1.69l3.58,0.38l4.65,-1.22l-1.47,1.07l-0.12,1.43l-1.57,0.62l-1.16,-0.11l-0.33,-0.76l-0.7,-0.35l-1.48,-0.08l-2.13,0.7Z", "name": "N. Cyprus"}, "NP": {"path": "M410.28,243.11l-2.55,-1.76l0.5,-1.57l0.84,-0.96l0.17,-1.86l0.43,-1.13l1.67,-2.57l2.53,-2.12l0.36,0.0l0.71,0.97l1.05,0.04l0.69,-0.55l1.13,-1.86l1.45,-0.35l2.74,0.45l1.31,2.1l2.04,1.05l2.81,2.14l1.2,0.53l1.08,0.07l3.06,3.39l1.08,0.07l1.86,-0.7l0.91,0.36l1.07,2.57l4.26,2.86l2.43,-0.32l-0.44,1.39l0.29,0.76l0.99,0.39l3.39,0.13l2.33,2.94l1.09,-0.49l0.13,-1.05l0.41,0.62l1.7,0.81l1.0,-0.37l0.52,-1.03l3.86,2.13l3.7,0.19l1.83,-0.58l1.62,0.11l-1.18,5.52l0.99,1.89l0.33,1.4l-0.85,2.37l-1.11,-0.4l-1.63,0.3l-1.53,-0.18l-1.06,0.47l-1.13,-0.44l-0.63,-1.02l-2.53,0.89l-2.42,-1.08l-2.71,-0.61l-1.59,0.35l-0.56,-1.32l-0.61,-0.49l-0.81,-0.06l-2.2,0.7l-0.76,-0.85l-3.21,-1.41l-0.5,-1.97l-1.16,-0.57l-2.9,-1.14l-1.72,0.42l-0.54,0.41l-2.88,-0.65l-1.06,0.69l-3.82,-1.07l-0.63,-1.31l-1.72,-0.01l-3.45,-1.93l-1.06,0.34l-3.87,-2.4l-1.13,-1.33l-4.32,-2.53l-0.65,-0.19l-0.62,0.45Z", "name": "Nepal"}, "PK": {"path": "M269.48,270.83l0.52,-4.2l0.67,-0.75l0.57,-2.85l2.01,-1.0l0.97,-0.08l0.52,-1.04l0.77,-0.46l2.52,-0.65l2.87,-0.06l0.36,-0.47l0.11,-1.17l0.45,-0.39l-0.03,-1.58l0.47,-0.86l-0.52,-0.74l-0.77,-0.41l-2.77,0.13l0.39,-1.76l-0.54,-4.07l0.04,-2.2l-1.6,-0.09l-1.51,-1.37l-3.47,-1.08l-1.91,-1.91l-2.05,-3.71l-0.19,-0.94l-2.65,-2.99l10.89,3.26l8.22,-0.72l3.87,0.84l2.43,-1.24l5.25,-0.12l8.22,-2.31l1.17,-1.25l-0.51,-1.27l0.49,-1.74l-0.13,-2.39l0.42,-1.5l0.32,-0.75l1.44,-0.87l1.7,-1.97l1.13,-0.25l0.74,0.48l1.28,0.21l1.43,-0.15l2.17,-0.92l0.23,-0.41l-0.28,-0.62l-0.84,-0.53l0.92,-0.14l2.08,-1.08l1.11,-1.01l1.85,0.42l1.11,-0.38l1.19,1.17l1.06,0.19l1.7,-0.92l1.54,-1.71l-0.18,-4.32l1.19,-1.99l0.71,-2.75l2.97,-0.66l2.75,-1.73l0.12,-0.99l-1.13,-2.12l-1.89,-2.23l0.09,-0.52l0.46,-0.22l2.4,0.73l2.52,0.08l1.59,-0.27l1.74,-0.77l0.34,-0.78l0.03,-2.08l-0.91,-1.17l2.28,-2.78l1.25,-0.9l1.26,-1.87l-0.52,-1.21l0.4,-0.97l-0.21,-1.16l-1.35,-2.98l-1.47,-1.22l2.92,-2.92l1.05,0.02l3.08,-2.38l3.32,-1.04l8.46,-0.5l2.11,0.54l4.23,-1.81l1.89,0.66l1.45,-0.23l1.96,0.57l0.66,1.53l1.84,-0.02l1.15,0.7l0.89,2.05l-0.04,1.63l-0.48,0.91l0.16,0.54l1.26,0.65l0.79,1.44l0.87,0.06l1.8,-0.54l0.21,0.8l1.45,0.92l1.99,4.42l-0.25,0.7l-1.59,0.77l-1.22,1.27l-1.07,-0.14l-2.06,0.72l-1.13,0.04l-2.35,1.35l-1.72,-0.27l-2.12,-0.88l-1.69,-0.06l-5.08,-0.99l-2.74,1.13l-1.28,2.39l0.11,0.68l1.22,0.82l-0.53,0.92l0.26,0.83l0.45,0.32l1.89,0.13l-1.7,1.09l-0.33,0.76l0.06,0.8l1.21,1.19l-0.19,0.79l-0.96,1.3l0.16,0.78l1.0,1.03l1.2,0.61l0.09,1.56l0.37,0.35l2.14,0.21l0.01,1.64l0.32,0.43l1.07,0.42l1.4,-0.03l1.71,0.69l0.54,0.53l-0.41,0.71l-3.79,1.57l-1.57,1.26l-0.36,1.18l0.6,1.91l-0.55,2.25l0.18,0.66l0.63,0.48l-2.05,1.08l-3.26,3.73l-0.26,0.91l0.35,1.04l-0.24,0.33l-0.5,0.49l-3.35,1.5l-1.12,3.11l-2.36,4.12l-4.24,2.31l-1.61,3.3l-1.4,1.47l-0.56,1.59l-2.17,0.66l-2.71,0.32l-2.75,0.97l-0.54,-0.33l-0.39,-1.18l-0.59,-0.61l-0.85,-0.41l-0.84,0.03l-2.03,1.49l-1.89,3.07l-2.77,2.99l-0.51,2.6l0.37,0.82l1.92,1.06l2.4,0.39l0.41,0.36l-0.14,2.08l-0.42,1.24l0.25,1.53l1.41,1.76l2.65,0.16l0.04,1.91l2.84,5.54l-0.51,1.0l0.38,1.32l-1.88,0.98l-0.72,-0.22l-0.2,-0.99l-0.83,-0.16l-3.03,1.01l-0.66,0.78l-1.39,0.17l-1.84,-0.86l-5.29,0.01l-0.66,-0.31l-0.65,0.61l-0.06,2.13l-3.01,0.31l-1.21,1.0l-0.25,-0.26l-0.77,0.04l-0.58,-0.5l-1.41,0.59l-0.05,-0.45l-0.57,-0.33l-0.36,0.17l-0.45,-0.88l-1.14,-1.08l-1.04,-4.6l-0.84,-0.57l-2.73,-0.5l-0.04,-2.81l-1.28,-2.11l-0.79,-0.73l-0.95,-0.3l-1.12,0.15l-0.56,0.45l-0.14,0.63l-3.17,0.73l-1.97,-0.15l-2.65,0.5l-2.1,0.03l-0.99,0.92l-3.43,-1.07l-0.78,-0.57l-1.09,0.44l-1.53,-0.33l-1.4,0.26l-0.65,0.55l-0.13,0.54l-5.86,-0.39l-2.45,0.99l-1.15,-0.64l-0.84,0.54l-1.21,0.17l-1.92,-0.28Z", "name": "Pakistan"}, "PH": {"path": "M728.0,406.82l-0.36,-1.38l-0.85,-0.45l-0.93,0.16l-1.15,1.02l-2.46,5.15l-0.73,-0.16l-0.33,-0.59l0.11,-0.69l0.93,-1.32l0.61,-3.27l0.76,-0.92l0.9,-0.65l4.06,-0.9l0.64,-0.48l0.18,-1.27l0.58,-0.71l1.78,-0.64l0.67,-0.86l1.5,0.51l1.05,1.19l0.18,1.61l-0.78,0.77l0.18,0.69l0.35,0.07l3.3,-1.43l1.49,-2.74l1.27,0.56l1.14,-0.29l0.99,-3.03l1.85,0.74l0.43,-0.17l0.47,-1.0l1.03,0.24l0.92,-0.17l0.58,-1.41l-0.86,-3.85l0.23,-0.35l2.55,1.76l0.99,1.46l0.61,0.45l0.63,0.02l0.02,0.82l0.91,1.89l-1.33,1.93l0.36,0.57l1.35,0.53l0.09,1.0l0.58,1.01l-0.17,2.72l1.02,1.26l0.13,2.5l-1.03,2.12l-1.88,1.25l0.29,1.17l-0.14,1.8l-0.55,-2.81l-1.64,-3.69l-0.84,-0.17l-0.91,0.67l-0.34,1.13l-1.8,2.36l-0.19,0.91l0.45,0.91l1.14,1.03l0.58,1.69l-0.02,1.68l-1.46,2.17l-0.55,0.33l-0.44,-1.09l0.26,-1.7l-0.39,-0.57l-0.86,0.04l-1.06,1.35l-0.53,-0.03l-5.2,-2.61l-0.91,-1.16l-0.67,-4.15l1.48,-1.94l0.23,-0.75l-0.31,-1.0l-1.65,-1.77l-2.44,-1.24l-0.93,-0.12l-0.84,0.47l-0.61,2.56l-1.07,-0.63l-0.58,-1.24l-0.67,0.04l-0.67,0.99l-0.69,0.09ZM751.98,389.95l-0.18,-0.26l0.18,-0.69l0.14,0.94l-0.14,0.0ZM745.51,369.73l0.42,0.49l0.16,1.05l1.39,0.75l-0.5,1.78l0.06,1.37l0.32,1.81l0.73,1.51l-0.22,0.62l0.63,0.5l-2.56,-0.11l-0.47,-0.75l-0.93,-0.6l-0.74,-1.33l0.4,-0.56l0.14,-1.09l-0.98,-0.39l-1.49,-1.79l-1.73,-1.01l-0.94,-2.42l1.55,0.24l4.29,-0.34l0.49,0.25ZM748.54,386.17l-0.11,0.68l0.34,1.55l-0.61,-0.86l0.39,-1.37ZM739.46,377.82l1.66,1.21l0.85,-0.07l0.75,-0.56l0.45,0.12l0.62,1.05l-0.07,3.26l1.13,1.12l0.7,2.2l-0.69,0.15l-0.74,-0.82l-0.65,0.35l0.22,1.71l-0.96,-0.38l0.05,-1.08l-0.37,-0.87l0.42,-1.7l-0.12,-1.02l-0.99,-1.46l-0.64,-0.13l-0.92,0.39l-0.72,-3.46ZM741.83,394.7l0.21,0.21l0.02,0.05l-0.32,-0.14l0.09,-0.12ZM738.84,387.8l1.52,0.83l0.11,1.43l-0.73,0.19l-0.69,0.75l-1.65,0.22l-1.56,-0.43l-0.3,-0.72l0.22,-0.29l1.36,-0.84l0.84,-1.0l0.88,-0.14ZM740.7,376.89l-0.46,0.02l-0.5,-0.74l0.4,0.01l0.56,0.71ZM738.03,358.15l1.13,1.2l-0.08,1.14l-1.32,0.79l-0.56,-0.45l0.53,-0.81l0.29,-1.86ZM705.26,340.87l2.47,2.04l1.41,-0.15l0.67,-0.97l-0.6,-3.01l0.11,-1.65l0.63,-1.44l0.12,-1.17l0.03,-2.73l-0.49,-1.5l1.77,-6.46l1.32,-0.62l2.0,-0.1l3.6,1.82l2.76,0.73l1.03,-0.47l0.93,-1.16l0.42,0.95l-1.01,1.96l-0.19,3.22l0.71,1.92l0.97,0.75l0.23,1.08l0.76,0.5l-2.68,6.69l-2.48,0.82l-1.67,1.35l-0.26,0.82l0.33,1.21l-1.44,2.23l-0.12,1.02l2.1,3.92l-0.4,0.52l0.02,0.84l1.09,3.29l1.19,1.24l2.47,0.77l0.97,-1.01l-0.57,-0.9l1.81,-1.08l0.87,0.03l2.06,0.87l0.92,1.55l-0.08,1.24l0.44,0.57l1.57,-0.04l0.57,-0.88l-0.17,-1.26l0.65,0.61l2.8,0.96l-1.64,0.38l-0.5,0.9l1.98,2.8l-0.23,0.96l0.4,0.54l1.09,0.06l1.14,0.57l-0.03,1.33l-0.44,1.29l-0.68,-0.57l0.47,-1.43l-0.11,-0.49l-0.54,-0.26l-1.98,0.22l-2.2,-0.99l-0.07,-1.15l-1.0,-1.74l-2.27,-1.38l-2.18,-2.32l-0.91,-0.19l-0.54,0.57l0.27,1.97l1.2,2.03l-0.11,0.92l-1.4,-2.27l-2.36,-2.11l-2.3,-1.17l-1.29,0.2l-1.17,0.64l-0.51,1.04l-1.37,0.37l-1.88,-0.91l-0.84,-0.94l-1.27,0.09l-0.06,-1.93l2.25,-2.25l0.18,-1.37l-0.61,-0.85l-1.39,-0.49l-0.76,-0.67l-0.69,0.13l-0.29,1.08l0.3,1.96l-0.52,-0.01l-1.22,-2.35l-1.29,-0.55l-1.08,-4.3l-0.32,-3.15l-0.92,-1.36l0.09,-1.8ZM730.9,372.85l0.47,-2.32l-0.19,-0.94l1.67,0.72l2.65,2.11l0.94,1.95l-1.57,-0.81l-0.13,-0.48l-2.08,-1.69l-0.86,0.3l-0.91,1.16ZM731.8,392.09l0.51,-3.17l2.34,-3.7l1.75,-4.53l0.06,3.43l-0.31,1.27l-2.26,2.03l-1.54,4.05l-0.54,0.62ZM733.28,394.82l0.52,-0.32l0.02,0.02l0.03,0.32l-0.57,-0.03ZM729.86,395.26l-0.73,0.04l-0.95,-1.93l-2.17,-1.16l-1.04,-1.46l-0.07,-0.78l0.39,-0.76l1.78,-0.22l1.23,-0.96l0.09,-1.64l-0.32,-1.54l0.97,-1.36l0.18,-1.36l1.68,-0.66l1.65,0.46l0.3,0.71l-3.01,6.84l-0.11,2.09l1.29,2.24l-0.6,1.16l-0.53,0.31ZM721.54,384.46l0.08,-2.36l0.65,-1.73l0.41,-4.26l-0.36,-0.84l-1.14,-0.42l0.2,-0.25l2.11,0.9l2.44,1.59l1.7,-0.22l0.29,0.21l-0.12,0.52l0.57,0.41l1.39,-0.68l-0.56,1.97l-1.94,1.45l-0.31,1.24l-1.72,0.97l-2.45,0.54l-1.25,0.95ZM725.79,384.74l0.1,-0.57l0.69,-0.72l-0.33,1.11l-0.47,0.17ZM725.34,370.08l0.51,0.0l0.32,0.32l-0.09,0.37l-0.74,-0.68ZM720.66,414.08l1.28,-0.48l1.17,0.52l-0.4,0.68l-1.29,0.41l-0.76,-1.13ZM721.62,371.25l-0.28,-0.34l0.74,-1.88l-0.26,1.6l-0.2,0.62ZM720.72,362.06l1.2,0.4l0.06,0.49l-0.5,0.8l-0.89,-0.63l0.12,-1.06ZM720.92,351.28l-0.31,-0.65l0.56,-0.04l0.08,0.05l-0.33,0.63ZM709.61,362.34l0.4,-0.1l2.09,0.38l1.26,-0.21l1.33,0.83l0.82,-0.23l2.08,2.06l-0.43,1.29l0.47,2.2l-1.03,2.1l-0.97,0.66l-0.4,-0.1l-1.19,-1.44l-0.47,-1.51l-0.77,-0.79l-0.21,-1.61l-0.66,-1.28l-1.3,-1.01l-0.48,-1.08l-0.55,-0.15ZM714.98,418.53l0.26,0.35l-0.6,0.22l-1.1,-0.11l0.83,-0.57l0.6,0.1ZM716.05,419.0l0.09,-0.02l0.4,0.07l-0.27,0.16l-0.22,-0.21ZM705.98,371.66l1.18,0.87l0.96,-0.01l0.47,0.43l-1.79,0.03l-0.83,-1.33ZM705.87,425.31l0.15,-0.09l-0.05,0.07l-0.1,0.02ZM707.64,424.35l0.2,-0.16l0.09,0.18l-0.07,0.15l-0.22,-0.17ZM706.04,374.1l0.59,0.45l-0.2,0.86l-0.04,-0.42l-0.35,-0.89ZM705.7,384.54l-0.46,0.12l-0.04,-0.14l0.31,-0.32l0.42,0.15l-0.23,0.19ZM686.27,399.97l0.72,-1.41l1.79,-1.9l2.11,-1.98l0.99,-0.21l0.79,-0.65l6.81,-7.61l1.57,-1.03l0.72,-1.72l-0.35,-1.29l1.36,-3.0l-0.17,2.33l1.17,3.14l-0.52,0.53l-1.72,0.64l-0.72,0.68l-0.59,1.28l-3.03,1.1l-0.35,0.57l0.08,0.83l-2.38,3.62l-2.22,1.15l-1.14,1.74l-2.96,1.68l-0.61,0.88l-1.33,0.63ZM684.24,404.1l0.0,0.29l-0.02,-0.03l0.01,-0.26Z", "name": "Philippines"}, "-99": {"path": "M383.52,185.67l4.19,1.15l0.92,0.04l-3.62,2.11l-1.48,-3.3Z", "name": "Siachen Glacier"}, "AE": {"path": "M194.39,278.76l0.73,0.08l0.22,1.31l1.15,0.87l2.69,-0.08l2.96,-1.26l9.41,0.59l3.95,-1.73l2.56,-4.17l2.65,-1.86l3.18,-3.64l3.09,-2.34l1.07,-2.06l-0.1,2.81l0.48,0.5l1.07,0.36l0.03,1.78l-0.57,-0.2l-0.39,0.23l-0.21,0.84l0.56,0.47l0.63,-0.33l0.03,1.52l-1.79,1.71l-0.31,-0.4l0.09,-0.97l-0.49,-0.37l-1.04,0.15l-0.73,0.82l-0.26,3.17l0.28,1.09l-0.3,0.77l0.18,0.5l1.19,0.25l0.25,0.52l-2.94,0.49l-0.73,0.46l0.14,1.92l-2.3,5.42l-0.13,2.62l-0.3,0.38l-18.8,-2.42l-7.07,-8.89l-0.12,-0.91ZM210.56,279.01l0.06,-0.02l-0.04,0.02l-0.02,-0.0ZM210.81,278.92l0.07,-0.02l0.01,0.01l-0.07,0.02Z", "name": "United Arab Emirates"}, "CN": {"path": "M365.41,172.16l1.93,-0.79l0.8,0.45l0.58,-0.03l1.6,-1.06l0.43,-0.78l-0.29,-0.77l-1.35,-1.08l0.27,-1.56l-1.1,-2.86l-0.11,-1.26l0.45,-1.34l-0.29,-0.65l-2.33,-1.28l-1.95,-0.56l-1.36,0.09l-0.9,1.0l-0.98,-0.49l-0.3,-0.68l-0.39,-1.26l0.69,-0.6l0.09,-0.46l-1.45,-2.26l0.19,-1.53l1.3,-0.4l0.68,-0.85l0.11,-0.56l-0.57,-1.51l1.04,-1.95l2.98,-0.74l2.05,-1.55l1.31,-0.33l-0.07,-1.23l1.05,0.36l1.84,-0.28l2.1,-1.29l0.52,2.3l0.55,0.54l1.46,0.02l2.76,-1.01l0.79,0.52l1.36,-1.01l1.34,-2.89l1.67,-2.04l4.86,0.3l1.85,-0.56l2.31,-0.19l1.9,-1.96l0.18,-0.83l2.68,-1.58l4.03,-1.95l3.58,-1.07l0.68,-0.91l2.92,-0.44l0.25,-0.55l-0.22,-0.96l0.32,-0.57l-0.71,-3.75l0.51,-0.97l2.29,-0.97l-0.24,-0.77l-0.99,-0.5l1.46,-0.67l1.2,0.13l0.41,-0.8l-0.89,-1.63l0.26,-0.97l-0.41,-1.27l-2.18,-4.85l-0.02,-3.97l0.89,-1.82l-0.41,-0.45l-1.46,-0.56l-2.01,0.06l-0.52,-0.32l1.06,-0.83l4.21,-1.09l1.68,-0.04l6.15,-1.96l0.53,1.0l1.26,0.66l2.52,-0.51l1.4,0.82l0.8,-0.08l0.85,-1.74l-0.07,-1.41l-2.19,-1.08l-0.03,-0.33l1.78,-5.22l3.14,-7.6l0.39,-1.94l4.63,1.67l2.32,0.49l2.47,-0.24l2.33,0.22l0.45,0.9l0.68,0.43l1.8,-0.78l1.62,-1.17l2.02,-0.37l1.39,-2.04l0.08,-0.98l-0.6,-1.42l-0.45,-3.93l1.19,-3.6l0.77,-0.73l3.25,-0.45l2.36,-0.85l1.29,-1.65l0.29,-3.02l0.79,-0.62l2.36,-0.13l1.58,0.27l2.52,-0.84l0.3,1.27l-0.63,0.38l-0.25,0.6l0.94,1.34l1.39,0.54l-0.65,1.04l0.38,0.7l2.38,0.77l1.49,0.83l0.5,1.57l3.63,2.12l1.18,0.22l2.09,-0.46l2.1,1.87l0.74,0.07l1.12,-0.53l0.57,1.23l1.53,0.67l1.28,3.58l1.64,2.65l1.19,0.55l0.79,1.76l0.33,1.76l-0.89,2.6l0.67,2.13l-2.13,2.76l-0.41,2.07l1.63,3.21l0.63,0.31l0.99,-0.22l1.89,0.9l1.02,-0.03l1.13,0.44l3.3,0.07l3.02,0.55l2.72,-0.24l5.34,0.82l0.96,0.37l2.24,2.07l1.85,0.32l1.15,1.07l2.73,1.63l2.56,0.85l1.99,-0.13l-0.13,2.0l1.51,0.81l2.29,5.05l0.18,1.08l3.31,3.2l0.69,1.92l6.41,-0.51l16.91,2.0l3.94,-0.98l8.21,1.13l3.03,0.12l1.08,0.31l2.26,2.49l1.52,0.61l6.88,1.38l4.74,2.27l5.67,-1.01l0.0,1.47l0.37,0.4l2.66,0.14l1.13,0.41l1.7,-1.31l11.66,-4.91l10.41,-1.41l3.86,0.28l4.94,-0.21l7.99,-3.04l4.65,-5.2l4.07,-1.44l1.61,-1.47l0.83,-0.18l0.58,-0.54l-0.07,-1.24l-0.79,-1.18l-2.28,-2.25l-0.82,-1.48l1.58,-3.99l1.88,-2.0l3.55,0.07l1.21,1.17l1.03,0.45l6.82,1.27l3.8,-2.14l2.62,-2.22l0.93,-1.63l1.11,-0.23l1.42,0.38l1.82,-0.11l4.12,-0.73l1.86,-1.53l2.09,-1.18l0.37,-0.81l-0.17,-0.73l0.97,-1.75l1.14,-1.01l0.39,-0.77l1.9,-0.8l3.64,0.23l0.44,-0.45l0.38,-1.65l2.28,0.62l2.45,-1.39l1.7,-0.45l3.01,0.22l0.98,-0.62l2.2,1.09l1.38,0.27l2.89,0.08l1.36,-0.66l0.42,-0.79l-0.01,-1.52l-0.83,-1.16l-0.58,-1.61l-1.47,-1.11l-1.85,-2.1l-0.88,-0.45l-0.64,-1.25l-2.39,-0.99l-1.95,-2.14l-2.92,-0.51l-2.87,0.4l-3.15,3.15l-1.88,-1.41l-2.46,-0.62l-1.86,0.29l-2.09,-0.18l-2.41,1.59l-1.87,-1.6l-0.37,-0.56l-0.2,-1.43l1.92,-1.29l0.24,-3.01l1.51,-1.96l4.75,-9.76l3.9,1.76l1.78,0.17l3.07,0.94l4.54,-3.28l2.18,-1.11l2.92,-0.5l1.09,-0.71l0.55,-1.02l0.15,-1.22l-0.37,-0.95l-0.7,-0.36l0.55,-1.35l1.21,-1.37l0.54,-1.66l1.7,-2.34l0.5,-1.58l1.13,-1.51l0.76,-1.79l4.55,-3.66l0.6,-1.37l-0.01,-1.26l-0.61,-1.07l0.23,-1.97l-0.32,-0.74l-1.34,-0.73l-2.61,0.11l-0.48,-0.19l-0.1,-0.51l4.76,-4.34l1.99,-1.08l3.13,-0.33l6.78,-1.67l1.46,0.26l1.76,-0.12l3.07,-0.78l3.35,0.02l3.91,1.85l0.58,-0.06l1.7,1.35l1.37,0.23l1.22,0.74l0.7,0.1l0.53,-0.55l0.9,-0.2l3.43,1.55l0.68,0.02l0.53,1.46l1.13,0.28l1.21,1.21l-0.23,1.29l1.31,0.91l1.03,1.41l1.33,4.47l1.4,2.18l0.09,1.43l0.69,0.57l0.23,1.91l0.73,2.23l2.84,3.84l0.26,1.27l-0.31,1.03l0.33,1.29l1.69,1.29l-0.63,2.16l0.49,1.84l1.34,1.43l2.23,1.04l1.9,0.12l3.44,-0.39l0.69,1.23l1.5,0.44l0.48,0.5l2.05,0.2l1.04,-0.33l0.28,0.55l1.11,0.51l2.6,2.84l1.28,0.86l2.66,0.35l0.27,0.48l-0.44,1.57l1.87,2.66l-0.63,1.79l0.12,1.26l0.95,1.05l0.8,2.01l0.48,0.35l2.6,-0.29l1.75,0.43l1.71,0.01l5.1,-0.34l0.97,-0.59l0.99,-1.59l1.3,-0.37l1.9,-1.17l2.51,0.05l2.79,-1.68l3.24,-0.92l1.8,0.44l0.68,0.74l-0.82,1.93l1.31,2.75l-1.38,1.91l-1.77,0.61l-1.07,1.16l0.13,1.79l-0.94,1.69l-0.37,2.24l-1.12,1.92l0.19,1.39l-0.26,1.0l-1.13,0.94l-0.42,1.75l-1.06,0.82l-0.49,2.38l-1.96,1.19l-0.56,1.69l-0.04,1.63l-0.95,0.67l-0.5,-0.19l-0.1,-0.71l-0.73,-0.85l-2.53,-0.96l-1.5,0.01l-1.59,0.8l-1.29,-0.76l-1.5,1.14l-1.57,2.05l-2.71,0.69l-0.86,0.69l-0.15,0.9l0.85,1.78l1.22,4.66l-0.58,3.36l0.06,1.87l0.53,0.57l0.03,0.49l-0.58,2.05l-0.7,1.11l-0.07,0.94l-4.14,1.05l-0.65,0.58l-0.03,0.7l-0.59,-0.73l-0.01,-1.18l-0.31,-0.41l-1.13,-0.73l-1.86,-0.14l-0.96,2.12l-0.46,2.74l-0.99,0.52l-0.82,-0.43l-1.06,0.26l-0.85,1.04l-0.2,0.87l-1.83,1.42l-4.49,0.11l-2.3,0.6l-0.07,1.14l1.87,2.53l-0.82,1.45l-0.79,-0.53l-2.49,0.07l-3.67,-0.8l-0.72,-1.27l-1.0,-0.87l-0.72,-0.04l-1.3,0.54l-1.1,0.89l-0.72,2.33l-3.69,4.02l-2.02,0.41l-2.24,1.77l-2.61,1.03l-0.65,0.71l-0.77,0.09l-3.8,3.18l-0.88,1.57l-1.07,0.65l-2.36,0.15l-0.71,-0.45l-0.52,0.08l-0.5,0.75l-1.65,0.2l-0.91,0.64l-1.3,0.1l-1.6,0.69l-3.78,2.06l-2.63,2.74l-0.86,0.47l-1.56,0.08l-0.33,0.43l0.11,0.72l-2.19,0.42l-0.92,0.53l-0.13,-0.29l-0.07,-0.57l4.01,-1.54l0.22,-0.52l-0.31,-0.79l1.22,-1.18l-0.06,-0.68l-0.47,-0.17l-3.25,0.2l-0.06,-0.93l1.74,-0.99l-0.29,-1.01l0.19,-0.48l2.16,-1.03l2.89,-3.56l0.71,-1.79l-1.18,-1.72l-1.96,-1.27l-0.15,-1.0l-0.5,-0.33l-0.86,1.13l-4.24,-0.41l-3.06,2.81l-2.15,3.11l-6.55,2.87l-1.62,1.4l-1.06,1.8l-0.29,1.35l-1.66,1.8l-2.61,0.05l-2.19,0.87l-0.95,-0.95l-1.18,-0.38l-1.31,0.31l-0.87,0.71l-1.75,3.93l0.04,0.86l0.74,1.75l0.99,1.17l1.99,1.17l3.96,0.77l1.87,-0.27l0.87,0.6l0.96,2.56l-0.66,0.56l-0.29,2.76l1.44,1.5l2.65,0.69l2.41,-0.26l1.17,-0.95l0.09,-0.91l3.1,-2.29l0.03,-0.55l2.97,-1.14l2.03,0.85l1.23,1.04l1.38,0.26l1.86,1.0l2.57,0.17l0.84,-0.7l0.59,0.59l1.26,0.44l1.79,-0.09l-0.29,0.5l0.08,0.95l-0.94,0.91l-0.01,0.5l0.48,0.56l-1.09,0.82l-1.15,-1.08l-1.81,-0.01l-6.7,3.02l-1.68,-0.21l-0.45,0.45l0.75,1.29l-0.79,-0.14l-0.62,0.55l-0.37,2.19l-1.61,0.56l-0.14,-1.17l-0.39,-0.27l-1.33,0.32l-0.74,0.8l0.02,0.46l0.97,1.03l-1.13,0.58l-0.68,1.11l-0.81,0.79l-1.15,0.53l-1.43,1.93l-0.66,0.44l-0.69,1.69l-1.07,1.0l-0.38,1.38l0.27,1.08l0.38,0.28l1.03,-0.01l1.65,1.37l2.88,1.15l2.1,1.34l1.78,5.33l2.69,5.12l0.01,3.15l1.12,0.84l2.52,1.12l0.31,0.31l0.11,1.46l0.69,0.76l1.93,1.05l0.68,1.25l0.04,0.49l-0.31,0.01l-3.09,-1.32l-2.66,-0.06l-1.4,-1.34l-2.11,-0.64l-3.93,1.47l0.15,0.72l1.17,0.25l2.43,-0.92l1.32,0.24l0.62,1.36l2.02,0.84l2.18,1.92l2.25,1.33l0.86,1.19l0.56,1.61l-3.15,0.91l-0.86,0.76l-2.29,1.14l-1.2,1.61l-2.92,-0.2l-1.6,0.91l-0.46,0.83l1.46,0.15l1.0,-0.36l1.22,1.3l2.19,-0.28l1.82,-1.1l1.07,0.13l2.4,2.39l2.18,0.81l-3.43,2.67l-0.11,0.47l0.43,0.23l1.38,-0.22l1.47,-0.89l-0.17,3.07l-1.0,-0.86l-1.54,0.12l-0.7,0.55l-0.3,0.5l0.27,0.6l1.37,0.93l-0.97,0.15l0.14,0.48l0.67,0.48l-1.27,1.36l0.88,2.44l-1.79,0.73l-0.3,-0.73l-1.02,-0.07l-0.61,0.52l-0.97,1.92l-1.31,0.12l-0.34,0.56l0.6,0.64l-1.69,2.36l0.04,1.5l-1.57,1.94l-0.86,0.57l-1.09,1.77l-0.4,1.67l-0.76,0.38l-0.45,-0.81l0.02,-0.72l-0.56,-0.43l-0.78,0.86l-0.61,-0.34l-0.62,0.35l0.39,1.4l1.15,0.72l0.58,1.26l-2.78,2.07l-2.21,-0.53l-0.42,0.18l0.03,0.46l1.09,1.3l1.33,0.19l1.18,-0.41l-0.7,2.87l0.55,1.27l-1.1,-0.57l-2.04,0.21l-0.33,0.69l0.86,1.11l-1.36,-0.12l-0.71,0.28l-0.47,0.66l0.03,1.46l-1.86,0.71l-0.31,0.44l0.55,0.71l-0.3,0.65l-2.35,0.26l-1.61,-0.4l-0.83,0.65l-0.15,0.55l-0.9,0.02l-0.35,0.45l0.13,0.53l0.5,0.44l0.87,0.1l0.09,0.53l-1.42,1.61l-0.81,0.11l-0.79,1.15l-1.32,0.28l-0.25,1.38l-0.67,-0.56l-1.52,1.02l-1.31,-0.48l-0.47,0.3l-0.34,1.39l-1.77,0.94l0.48,0.64l-1.03,0.52l-0.45,1.76l-1.73,-0.15l-0.55,0.62l-2.18,0.65l-1.7,-0.36l-0.59,0.23l-0.53,0.81l-2.2,-0.75l-2.07,1.04l-0.44,0.51l-0.39,-0.04l-0.21,-0.64l-0.71,-0.39l-0.84,0.55l-0.46,1.11l-1.09,-0.4l-0.68,0.36l-1.01,-0.14l-1.26,0.3l-2.13,-2.38l-0.23,-1.15l0.2,-0.62l-0.46,-0.57l-0.87,0.25l-0.56,0.37l-0.12,0.91l-0.62,0.17l-0.28,0.49l1.65,2.52l0.24,1.88l-0.75,0.82l-1.87,0.83l-0.33,-0.77l-0.67,-0.1l-0.7,0.91l-0.26,1.4l-1.03,-0.33l-1.55,1.19l-0.69,-0.45l-0.17,-0.81l-0.8,-0.23l-0.35,0.51l0.19,1.14l-0.28,0.19l-2.61,-0.83l-0.77,1.07l-0.81,0.08l-1.15,1.15l-1.48,0.18l-0.61,0.37l-2.15,-0.19l-0.49,0.72l-1.63,0.37l-1.41,1.26l-0.31,-0.01l-0.52,-0.93l-0.57,0.3l-0.23,1.14l-1.23,0.94l-0.45,1.17l0.53,0.96l1.17,0.14l-0.41,0.45l0.04,0.79l1.36,1.09l-0.39,0.78l-0.62,0.37l-1.52,0.22l-1.17,-0.21l0.5,-0.6l-0.12,-0.35l-0.9,-0.7l-0.38,-0.62l0.04,-0.8l-1.0,-1.46l0.15,-1.56l0.65,-1.38l1.11,-0.59l0.07,-0.82l-0.39,-0.44l-0.58,-0.02l-0.41,-0.47l-0.65,0.09l-0.66,-1.03l-0.75,-0.24l-0.42,0.45l0.13,0.95l-2.47,0.67l0.17,-0.72l-0.39,-0.5l-0.73,-0.33l-1.8,-0.04l-0.98,-0.95l0.02,-0.73l-0.49,-0.43l-0.85,-0.03l-0.41,0.4l0.28,1.81l-1.09,-0.56l-0.72,1.04l-1.76,0.38l-1.62,-1.11l-2.08,0.41l-0.94,-0.16l-0.4,-0.55l-1.64,-0.72l-0.67,-1.01l-2.21,-0.67l-0.05,-1.66l-0.85,-1.11l0.23,-1.03l0.85,-0.53l0.68,-1.22l-0.12,-0.55l-1.84,-1.05l-2.07,0.36l-0.61,-0.73l-1.03,-0.2l-1.55,0.41l-2.03,-1.1l-0.83,-1.24l-1.34,-0.95l-3.55,1.72l-0.4,0.52l-0.2,1.34l-0.59,0.51l-1.18,0.15l-1.14,0.75l-1.15,-0.81l-1.33,0.5l-0.71,1.62l-2.1,-1.83l-0.89,0.42l-0.34,0.84l-0.66,-0.95l-0.63,-0.28l-2.47,2.5l-0.96,-1.02l-2.81,-1.34l-0.72,0.28l-1.91,2.51l-0.8,-0.35l-1.25,0.29l-0.63,-0.68l-0.72,0.09l-1.52,2.27l0.6,2.11l0.99,1.28l-0.12,3.86l0.49,0.66l-0.21,0.19l-1.25,-0.61l-1.95,0.36l-0.72,-3.85l-0.68,-0.58l-2.1,0.82l-1.69,1.42l-1.7,-0.24l-1.38,0.2l-0.21,-1.14l-1.18,-0.84l0.08,-1.61l-0.3,-0.58l-2.69,-0.64l-2.81,-0.24l1.23,-2.56l0.32,-2.41l0.95,-1.33l-0.39,-0.85l-0.53,-0.32l-3.83,-0.86l0.06,-1.37l-0.58,-1.01l0.2,-0.92l-1.13,-2.02l1.18,-1.77l-0.43,-0.41l-1.68,0.35l-0.79,-0.3l-2.18,0.04l-1.61,0.4l-2.81,1.32l0.84,-1.22l0.22,-0.96l-0.41,-1.54l-0.9,-0.73l-0.01,-0.93l0.33,-0.93l1.19,-0.86l-0.14,-1.39l0.61,-1.38l0.71,0.03l0.73,-0.48l0.79,-1.13l0.31,-1.17l1.26,-0.02l1.09,-1.65l1.23,-0.37l0.32,-0.55l-0.67,-1.69l0.86,-0.76l0.43,-4.22l-0.66,-7.13l-1.8,-1.02l-0.57,0.17l-0.4,0.7l-1.44,-4.65l-1.61,-1.77l-0.96,-0.11l-0.91,-1.15l-1.37,0.09l-1.35,2.06l-1.61,-1.06l-0.9,0.21l-1.36,-0.21l-1.36,-0.76l-1.94,0.67l0.2,-0.69l1.76,-1.77l0.1,-0.45l-1.17,-2.46l-1.06,0.09l-1.05,0.71l-0.08,-0.57l1.44,-0.92l0.25,-0.5l-0.29,-0.57l-0.99,-0.04l-1.3,-1.5l-1.5,0.45l-2.8,1.52l-0.86,1.33l-4.2,-1.08l-0.75,-0.94l-0.89,-0.16l-2.52,1.41l-1.3,1.3l-0.57,0.11l-1.02,1.34l-1.01,0.57l-3.9,0.88l-1.06,1.91l-3.46,2.48l0.09,1.15l-1.65,0.89l-1.35,-0.09l-1.97,0.85l-2.08,-0.24l-0.06,-1.23l-2.85,-1.31l-0.73,0.08l-1.25,0.75l-2.26,-0.8l-2.52,-0.06l0.13,-0.91l-0.36,-0.43l-1.9,-0.49l-1.67,0.07l-3.31,1.99l-2.43,2.86l-0.47,0.99l-1.06,0.94l-0.36,0.83l-0.47,-0.95l0.7,-3.01l-0.46,-1.27l-1.45,-0.74l-3.94,1.17l-0.48,0.51l-1.46,-0.05l-1.76,0.57l-3.44,-0.17l-0.89,-0.71l-1.94,-0.74l-0.44,-0.54l-0.79,-0.17l-0.62,0.16l-0.51,1.14l-0.41,0.1l-1.18,-0.63l-0.68,-0.79l-0.42,-0.01l-0.64,0.58l-0.21,0.98l-0.87,-1.65l-1.27,-1.21l-4.14,-0.33l0.41,-1.76l-0.28,-0.52l-0.91,-0.15l-1.8,0.4l-4.06,-2.75l-1.11,-2.6l-1.55,-0.5l-2.33,0.75l-3.12,-3.41l-2.3,-0.61l-2.71,-2.08l-2.01,-1.02l-1.48,-2.22l-3.04,-0.5l-1.83,0.42l-1.42,2.12l-0.6,0.33l-0.93,-1.59l-2.82,-1.74l-2.92,-0.99l0.03,-1.27l-0.49,-0.51l-0.64,-0.03l-2.05,-1.46l-1.84,0.08l-1.16,-0.84l-2.21,-2.86l-0.78,-0.2l-0.62,0.71l-1.06,0.34l-0.1,-1.14l0.46,-0.91l-0.04,-0.48l-0.73,-0.9l0.3,-1.79l-1.83,-2.23l-0.67,-2.27l1.73,-0.24l0.39,0.91l1.42,1.02l1.21,-0.27l1.4,-1.33l-0.13,-3.73l-0.73,-0.85l0.2,-1.15l-2.48,-2.76l-0.55,-4.19l1.72,-1.52l0.09,-0.95l-0.44,-0.7l-1.95,-1.37l-2.81,-1.04l-1.98,-4.96l0.26,-1.64l-0.3,-0.58l-1.28,0.21l-0.77,-0.36l-2.5,0.16l-2.61,-0.64l-3.32,-1.46l-0.35,-0.26l-0.07,-0.79l-0.48,-0.35l-2.59,0.64l-0.62,-1.33l-1.12,-0.49l0.45,-0.83l0.03,-1.94l-0.34,-1.28l-0.81,-1.23l-1.46,-0.87l-1.58,0.1l-0.77,-1.56l-2.25,-0.65l-1.24,0.26l-1.4,-0.66l-1.17,0.05l-0.72,-0.59ZM784.71,123.62l0.4,0.07l0.21,0.23l-0.36,-0.13l-0.25,-0.17ZM723.42,232.07l-1.54,-0.41l-0.17,-0.27l0.52,0.01l1.19,0.67ZM716.28,217.72l0.89,0.27l0.35,0.57l1.35,0.76l-2.09,-1.02l-0.5,-0.58ZM715.46,247.46l0.02,-0.03l0.0,0.02l-0.02,0.01ZM704.67,268.77l-0.0,-0.09l0.08,-0.21l0.02,0.22l-0.1,0.07ZM704.8,268.19l-0.02,-0.24l-0.07,-0.11l0.19,0.14l-0.1,0.2ZM626.1,313.41l0.45,-0.31l1.5,-0.02l0.99,-0.61l1.85,0.16l1.43,-0.24l0.73,-0.47l0.93,0.1l0.73,0.49l0.25,-0.45l0.9,0.43l0.57,-0.36l0.13,-0.8l1.76,1.26l0.46,1.85l-1.34,0.72l-1.36,2.07l-0.57,1.05l-0.86,3.16l-2.89,1.77l-0.1,0.61l-1.5,0.17l-1.06,1.16l-1.01,0.2l-3.6,-1.12l-2.23,-1.17l-0.45,-2.39l0.16,-3.13l4.5,-3.46l0.1,-0.45l-0.47,-0.24Z", "name": "China"}, "AF": {"path": "M263.13,194.66l1.33,-0.91l1.1,-1.84l0.56,-2.35l-0.33,-1.15l0.64,-0.51l0.68,-2.24l2.02,1.52l2.71,-0.08l1.58,1.21l0.79,1.07l1.38,-0.62l1.85,-0.09l2.97,-1.9l0.83,-2.18l-0.38,-0.98l1.1,-0.05l4.17,-1.31l1.19,-0.03l0.71,-0.9l1.92,-0.94l1.23,-1.03l2.34,-6.82l1.81,-0.8l3.41,-0.11l1.57,-2.69l2.48,1.27l2.72,0.6l2.73,-0.22l1.64,0.29l0.86,0.78l1.11,0.31l1.4,-0.46l1.44,0.32l0.85,1.3l0.93,0.79l0.99,0.28l1.84,-0.67l0.82,-0.97l2.16,-1.04l1.07,-0.09l0.54,-0.51l2.73,1.92l1.42,-1.18l-0.1,-1.72l0.51,-0.98l2.24,-0.43l2.22,0.57l0.76,-0.4l0.65,-1.03l-0.33,-2.03l1.5,-1.31l1.47,-2.23l0.78,-0.67l0.88,-0.24l1.13,0.29l1.38,0.87l0.46,0.95l-0.35,1.35l0.2,1.16l0.51,0.18l1.53,-0.27l-1.09,6.68l0.76,2.5l0.5,0.96l0.78,0.52l1.31,-0.02l4.09,-2.44l2.19,-0.39l1.93,-2.11l3.52,-1.63l2.11,0.32l-0.71,0.81l0.06,0.5l1.16,0.37l3.23,-0.85l0.78,-0.74l3.04,0.38l-2.53,1.09l-0.19,0.6l0.87,0.8l-3.12,1.43l-1.91,-0.55l-8.59,0.51l-3.63,1.14l-2.93,2.3l-1.2,0.04l-2.87,2.67l-0.48,0.82l0.3,0.78l1.32,1.02l1.26,2.8l0.16,0.92l-0.39,1.09l0.52,0.89l-1.08,1.56l-1.15,0.81l-2.41,2.82l-0.1,0.83l0.86,1.05l-0.03,1.85l-0.18,0.37l-2.73,0.74l-2.35,-0.07l-2.43,-0.75l-1.31,0.69l-0.06,1.27l1.94,2.25l1.04,1.99l-0.09,0.34l-2.33,1.35l-2.61,0.41l-0.64,0.44l-0.88,3.06l-1.19,2.0l0.24,4.16l-0.58,0.69l-0.74,0.79l-1.38,0.76l-1.78,-1.33l-1.45,0.33l-2.07,-0.39l-1.26,1.1l-3.3,1.43l0.0,0.89l0.73,0.66l-0.53,0.31l-2.14,0.46l-1.14,-0.18l-0.79,-0.49l-1.68,0.34l-1.85,2.08l-1.41,0.83l-0.55,1.09l-0.47,1.65l0.12,2.44l-0.5,1.81l0.43,1.28l-0.65,0.55l-7.99,2.23l-4.32,-0.04l-1.96,0.48l-1.27,0.86l-3.88,-0.8l-8.12,0.73l-11.54,-3.48l6.64,-7.54l0.32,-2.24l-0.46,-1.86l-1.04,-1.1l-5.98,-0.83l-0.21,-2.89l0.3,-3.19l-1.99,-7.16l2.65,-3.31l-0.38,-0.57l-2.37,-0.37l-0.45,-0.7l0.29,-1.15l-0.29,-1.99l0.97,-1.49l1.66,-0.09l0.29,-0.64l-0.98,-1.34Z", "name": "Afghanistan"}, "IQ": {"path": "M125.37,172.77l1.95,-1.22l0.78,-0.94l1.16,0.37l1.24,-0.35l4.35,1.19l1.2,0.03l1.46,-0.77l0.5,0.07l0.44,0.53l0.09,1.72l0.79,0.56l2.58,-1.7l0.69,0.07l0.9,2.88l1.07,0.96l0.23,1.88l0.57,0.71l0.86,0.33l1.15,3.11l1.42,0.29l1.68,1.36l3.14,0.13l-1.41,0.56l-0.54,1.37l0.08,0.71l0.99,1.29l0.2,1.22l-1.54,0.83l-1.82,1.95l-0.25,1.77l-0.74,-0.06l-0.45,0.37l-0.45,1.3l0.76,1.82l-1.02,2.28l2.56,3.1l1.08,-0.0l-0.11,0.57l0.29,0.52l0.85,0.46l0.87,1.45l-0.48,1.1l0.35,1.36l2.11,0.33l5.49,3.81l1.79,0.29l1.01,2.18l2.3,2.86l-1.06,3.07l-0.02,3.42l0.38,0.4l2.1,0.09l0.03,3.94l1.72,1.49l0.78,0.29l0.81,2.06l-1.95,-0.76l-1.42,0.35l-2.08,-0.8l-2.62,0.13l-0.97,0.37l-0.93,0.76l-1.6,3.52l-2.66,3.43l-1.13,0.23l-12.17,-1.05l-19.68,-15.44l-12.8,-7.12l-8.45,-1.44l0.59,-0.87l-0.34,-0.89l-0.45,-0.25l-1.2,0.28l-0.2,-0.63l0.45,-0.55l-2.04,-7.04l14.03,-7.89l1.79,-0.45l0.56,-0.45l1.68,-3.13l0.16,-4.4l1.03,-3.03l-0.03,-1.6l-0.78,-2.18l0.35,-2.43l0.73,-0.93l2.85,-0.77l4.37,-4.38Z", "name": "Iraq"}, "JP": {"path": "M869.1,98.66l1.75,-0.84l3.26,3.32l3.55,4.25l6.71,5.04l2.54,0.27l2.9,1.4l1.9,0.2l1.33,-0.56l3.0,-2.78l-1.69,3.31l-0.21,1.25l1.8,4.23l1.68,0.42l-1.41,0.23l-3.12,1.57l-2.16,0.49l-3.23,-0.24l-1.9,0.92l-2.95,2.59l-1.18,1.68l-1.26,3.56l-5.13,-2.24l-4.91,-2.89l-3.56,0.24l-3.12,1.79l-1.8,-1.77l-2.05,-0.12l-1.27,1.37l-0.29,0.99l0.17,0.69l1.58,1.52l1.6,0.19l2.73,2.36l-1.19,0.22l-2.17,-0.56l-1.32,1.32l-0.75,1.34l-1.78,0.69l-0.46,-0.91l0.82,-3.12l-0.47,-1.54l-1.58,-1.77l0.18,-2.51l0.16,-0.42l2.41,-1.29l1.69,-1.6l0.38,-1.25l-0.63,-1.01l-0.05,-0.81l0.91,0.01l1.81,0.98l2.53,0.25l1.29,-0.2l0.83,-0.99l0.3,-1.08l-0.11,-2.27l1.83,-3.39l0.14,-2.29l0.75,-2.08l0.15,-2.27l-0.5,-2.16l-0.97,-1.91l0.52,-1.84ZM797.15,199.72l-2.57,-1.61l-2.21,0.27l-1.69,0.57l-1.02,-0.53l-1.02,0.12l-0.16,-1.76l0.63,-0.77l2.7,-0.24l1.86,-1.68l1.91,-0.98l3.04,-2.52l2.67,-2.39l0.63,-0.98l1.51,-0.69l2.29,-0.37l1.09,0.82l1.69,-0.43l2.79,0.03l1.83,-0.29l1.79,-0.74l3.12,-0.29l2.19,-0.7l0.26,0.06l-0.18,1.1l0.85,0.68l2.74,0.22l1.11,-0.42l2.39,-1.97l-0.57,-2.1l0.4,-0.94l2.14,-2.04l2.55,-3.28l0.45,-1.95l-0.2,-2.13l0.78,-1.34l3.05,-1.07l-1.26,1.28l-1.65,0.92l-0.36,0.67l0.73,1.13l0.3,1.76l0.95,0.6l1.0,0.19l1.03,-0.3l1.18,-1.46l6.0,-2.29l1.79,-1.56l1.26,-1.52l1.25,-2.38l2.64,-1.4l1.29,-1.28l0.94,-3.21l2.1,-3.3l0.85,-3.08l0.92,-1.59l0.24,-1.99l-0.07,-1.16l-0.49,-1.08l-0.5,-0.42l-0.89,-0.06l0.74,-0.65l0.81,-2.26l-0.66,-2.93l0.62,-0.94l1.24,-0.36l0.75,-0.77l0.52,-1.54l-0.08,-1.59l1.48,0.12l0.32,2.43l0.68,0.84l0.91,-0.09l0.69,-0.8l1.64,0.42l0.94,-1.16l0.28,-1.02l-0.12,-1.08l-0.8,-0.68l-2.52,0.82l0.41,-1.91l0.27,-0.42l2.22,1.27l1.07,-0.21l-0.29,2.18l0.24,3.4l0.32,1.16l1.4,1.26l1.05,1.5l1.42,4.28l-0.1,3.09l-0.56,2.58l-1.66,1.14l-0.97,2.0l-0.54,2.99l-2.66,0.62l-1.2,1.82l-0.27,1.84l0.81,4.19l-0.25,2.97l-0.22,0.85l-1.25,1.25l-0.55,1.12l-0.77,1.97l-0.42,2.39l0.41,1.75l1.51,2.46l-1.28,0.42l-1.4,1.32l-0.76,2.79l-3.37,2.17l0.16,-2.7l1.76,-1.96l0.18,-0.57l-0.98,-1.12l-0.81,-0.07l-0.86,0.22l-0.46,0.57l-0.11,0.87l-0.77,0.64l0.28,2.04l-1.35,-1.19l-1.76,0.18l-0.84,0.66l-0.47,1.16l-0.21,2.14l-1.23,1.57l-0.41,-0.3l0.29,-2.03l0.55,-0.31l0.08,-0.64l-1.53,-0.93l-1.49,0.44l-2.44,3.02l-0.4,0.92l-2.16,-0.39l-4.01,0.1l0.08,-0.5l-0.5,-0.63l-1.57,0.08l-0.59,-0.56l-0.49,0.08l0.01,-1.77l-1.08,-0.14l-1.03,0.73l-1.2,2.64l0.69,1.14l1.89,1.24l-0.11,0.44l-2.17,0.49l-1.78,0.83l-3.03,5.07l-1.4,0.53l-1.55,-0.48l-2.28,-3.54l-0.16,-2.19l1.06,-0.6l0.93,-1.05l0.29,-0.62l-0.14,-0.95l-0.68,-0.38l-2.31,0.19l-2.27,-1.13l-3.88,0.47l-2.11,1.59l-3.9,0.79l-2.17,1.03l-0.97,-0.18l-2.53,0.68l-1.6,-0.83l-1.15,0.19l-0.84,1.15l-0.63,2.77ZM865.75,100.56l-0.16,0.02l-0.34,-0.3l0.21,-0.05l0.29,0.33ZM852.34,128.05l-0.01,-0.06l0.07,-0.12l-0.06,0.17ZM843.87,165.83l0.27,-1.03l-0.54,-0.64l0.99,-1.22l-0.26,1.06l0.73,0.5l-0.33,0.78l-0.86,0.54ZM817.81,195.39l0.11,0.97l-0.91,0.42l-0.18,-0.21l0.98,-1.19ZM799.43,203.31l2.14,-1.59l1.03,-2.45l0.92,-0.71l1.41,1.39l3.48,-0.79l0.56,-0.72l0.01,-1.08l2.1,-0.96l0.82,-0.08l3.06,1.19l0.79,-0.04l0.42,2.93l-2.28,1.59l-1.02,1.44l-0.37,1.1l-1.12,-1.23l-0.91,-0.46l-2.01,-0.15l-2.79,1.49l-1.02,2.25l-0.9,0.74l-0.38,1.27l-0.61,0.55l-0.91,-0.13l0.24,-0.55l-0.3,-0.55l-1.28,-0.14l-0.37,-0.85l0.5,-1.92l-0.78,-0.48l0.04,-0.61l-0.46,-0.44ZM806.3,180.01l-0.4,0.05l-0.11,-0.36l0.22,-0.13l0.29,0.44ZM779.3,207.59l0.61,0.97l1.43,0.4l0.37,-0.57l-0.55,-1.19l-2.44,-2.04l0.11,-0.44l1.3,0.29l0.51,-0.3l-0.03,-0.87l1.56,-0.56l0.61,-0.58l1.53,-0.34l1.02,-1.74l1.24,-0.61l1.69,0.3l0.71,1.52l1.14,0.82l1.52,0.28l1.66,-0.66l0.51,0.26l0.05,0.4l-1.27,1.89l0.29,0.6l2.08,0.18l-0.1,0.69l0.71,0.75l-0.05,0.84l0.5,0.31l-1.93,2.27l-0.62,1.2l-1.5,4.83l-0.01,1.79l-0.79,1.89l-1.25,-0.29l-0.84,0.25l-0.28,0.85l0.34,0.72l-1.19,0.96l-0.58,0.29l0.35,-1.29l-0.62,-2.27l0.59,-0.38l0.08,-0.63l-0.47,-0.69l-1.31,0.06l-0.77,1.34l-0.24,1.11l0.7,1.77l-2.46,-0.77l-0.16,-0.39l0.94,-0.5l0.22,-1.32l-0.96,-1.54l0.01,-2.43l0.83,-0.31l0.6,-0.67l1.88,-3.4l-0.33,-0.56l-0.48,-0.05l0.3,-0.59l-0.17,-0.81l-1.26,-2.24l-1.27,-0.93l-1.28,0.67l0.23,2.45l0.36,0.37l0.9,-0.08l-0.06,0.75l-1.61,-0.78l-1.42,0.81l-1.2,-2.07ZM788.9,226.85l0.01,-0.11l0.07,-0.14l-0.02,0.14l-0.05,0.1ZM785.8,229.65l-0.74,0.03l-0.25,-0.58l0.36,-0.28l0.79,0.45l-0.17,0.38ZM781.9,213.3l-0.19,-0.64l0.25,-1.01l0.49,-0.07l0.06,1.08l-0.6,0.64ZM776.05,246.41l0.46,-0.51l1.07,-0.27l-0.66,0.48l-0.27,0.75l-0.59,-0.45ZM776.4,195.67l0.0,0.07l-0.02,-0.02l0.02,-0.04ZM776.72,194.79l0.02,-0.76l0.3,-0.22l0.03,0.45l-0.35,0.53ZM775.75,197.51l0.11,-0.75l0.18,0.13l-0.28,0.62ZM774.64,207.53l0.05,-0.12l0.05,0.07l-0.1,0.05ZM773.52,250.21l0.09,0.15l-0.02,0.05l-0.05,-0.02l-0.03,-0.18ZM771.75,209.72l0.65,-0.12l0.16,0.27l-0.66,0.42l-0.16,-0.58ZM764.44,262.78l0.09,0.4l-0.31,0.21l0.02,-0.29l0.2,-0.32ZM764.79,261.99l0.01,-0.59l0.25,-0.07l0.06,0.35l-0.31,0.3ZM766.32,260.11l-0.04,-0.54l0.94,0.06l-0.09,0.16l-0.81,0.33ZM767.58,259.28l0.76,-0.83l0.14,-0.26l-0.37,0.82l-0.53,0.27ZM737.71,277.3l0.12,0.01l0.12,-0.02l-0.11,0.13l-0.12,-0.12ZM734.91,277.92l0.11,-0.19l0.44,0.15l-0.29,0.11l-0.26,-0.06Z", "name": "Japan"}, "IR": {"path": "M137.98,152.91l1.82,0.03l0.6,-0.28l0.67,-2.32l0.59,-0.59l1.55,0.95l2.35,3.38l2.65,2.25l5.45,1.21l1.03,-0.36l1.99,-0.04l2.17,-2.07l1.11,-0.37l1.44,-1.36l4.32,-2.67l1.33,-0.27l2.06,2.03l-1.19,0.63l-0.3,0.88l0.19,0.73l1.15,0.75l0.06,0.33l-1.67,0.54l-0.47,0.49l0.0,0.74l2.41,2.2l0.82,0.23l1.45,1.6l1.81,-0.16l0.68,4.4l1.03,2.14l2.34,1.36l5.61,0.96l1.48,2.17l4.46,2.95l1.55,0.63l4.82,1.1l3.39,-0.06l10.69,-2.45l0.21,0.44l0.67,0.3l1.71,0.03l0.55,-0.35l0.21,-0.71l-0.72,-3.44l1.67,0.06l3.89,-1.22l0.54,-0.48l1.08,-2.26l3.46,-2.28l1.38,-0.39l4.89,0.22l0.66,-0.25l0.51,-1.1l2.06,-0.24l1.77,0.38l2.05,-0.02l0.63,0.56l0.52,1.51l4.7,1.24l2.54,1.59l3.86,-0.27l3.36,1.38l0.49,1.51l0.66,0.7l4.56,2.51l2.11,2.82l5.87,0.06l0.51,3.54l-0.43,1.67l0.74,1.14l-0.1,1.69l0.31,1.07l-0.64,1.6l-0.71,0.64l0.34,1.44l-0.5,1.97l-0.93,1.56l-1.67,1.22l0.81,1.48l-1.39,0.22l-1.2,1.82l0.15,4.16l1.31,0.92l1.52,0.1l-2.39,2.82l-0.07,0.91l2.0,6.8l-0.31,3.03l0.25,3.24l0.59,0.43l5.89,0.81l0.55,0.62l0.38,2.82l-0.16,0.53l-6.99,7.93l0.0,0.53l3.52,3.93l0.14,0.86l2.14,3.86l2.05,2.06l3.58,1.15l1.47,1.37l1.37,-0.01l-0.16,1.7l0.53,3.99l-0.38,2.1l0.61,0.45l0.9,0.12l1.9,-0.26l0.6,0.48l-0.4,0.47l0.03,1.5l-0.45,0.44l-0.12,1.22l-2.53,-0.02l-2.68,0.69l-1.06,0.62l-0.58,0.96l-0.53,-0.06l-2.39,1.21l-0.42,0.76l-0.4,2.49l-0.69,0.76l-0.48,4.16l-1.09,0.73l-5.32,-1.37l-0.4,-0.8l-0.83,-0.45l-1.11,0.94l-2.58,-0.53l-0.97,0.15l-2.07,-0.31l-1.4,-0.61l-2.88,0.49l-1.9,-1.09l-4.44,-0.29l-1.86,-0.74l-1.13,0.19l-0.55,-0.51l-2.79,-0.5l-0.83,-1.7l-0.06,-1.04l-0.7,-1.65l-0.54,-3.52l-1.01,-1.66l-1.57,-1.19l-2.93,-0.59l-1.84,0.47l-1.36,0.86l-2.28,0.55l-1.54,1.56l-1.04,-0.07l-3.01,1.85l-1.55,0.34l-3.03,-1.5l-1.33,-0.29l-2.66,0.07l-1.33,-0.91l-0.5,-0.81l-3.55,-1.61l-2.09,-1.4l-0.66,-1.36l-1.1,-1.09l-2.08,-0.8l-1.34,-0.91l-2.73,-0.17l-0.9,-0.43l-1.66,-1.66l-0.08,-0.75l-1.31,-2.27l-0.3,-1.86l-1.47,-1.22l-0.02,-1.62l-1.45,-0.7l-0.17,-2.14l-3.57,-4.08l-1.03,-2.45l-0.88,-0.06l-2.97,1.37l-3.63,-2.19l0.69,0.2l0.8,-0.36l0.15,-0.46l-0.39,-0.73l-1.84,-0.31l-0.29,0.69l-0.72,0.48l-0.21,0.77l0.19,1.5l-0.24,0.32l-1.22,0.16l-0.84,0.51l-0.58,-0.43l-0.21,-1.14l-0.59,-0.91l-2.27,-1.56l-0.03,-3.98l-0.38,-0.4l-2.1,-0.09l0.0,-2.84l1.05,-3.56l-2.38,-2.97l-1.03,-2.21l-0.83,-0.6l-1.27,0.02l-5.5,-3.8l-1.96,-0.28l0.44,-1.85l-1.0,-1.8l-0.91,-0.72l-0.27,-1.04l-1.1,-0.07l-2.2,-2.72l0.96,-1.89l-0.74,-1.81l0.4,-0.91l1.01,-0.19l0.31,-1.89l1.71,-1.83l1.74,-1.07l0.13,-0.86l-0.38,-1.15l-0.94,-1.18l0.13,-0.84l0.21,-0.37l1.58,-0.58l0.3,-0.49l-0.2,-0.48l-0.95,-0.45l-3.11,-0.08l-1.23,-1.19l-1.38,-0.31l-0.92,-2.84l-1.37,-0.93l-0.23,-1.89l-1.06,-0.97l-0.82,-2.74l0.21,-1.31l-1.65,-1.47l-0.19,-1.57l0.23,-0.78l-1.97,-1.48l-0.74,-0.13l1.74,-3.57l-0.44,-0.59l-0.74,-0.15l-0.16,-3.61l-0.8,-1.09l0.1,-1.67l-0.76,-0.8l-0.29,-1.01ZM225.11,258.62l0.64,-0.41l0.16,-0.69l0.73,0.1l1.56,-0.62l-1.41,1.46l-0.78,-0.16l-0.9,0.32Z", "name": "Iran"}, "AM": {"path": "M133.7,137.72l5.31,-0.87l4.6,0.01l0.35,-0.5l0.62,-0.08l0.81,0.74l-1.29,0.59l0.3,0.87l0.61,0.07l0.36,-0.45l2.27,0.69l1.11,1.07l-1.31,0.9l-0.18,1.02l1.58,2.09l2.78,1.54l-0.52,1.31l-1.74,0.0l-0.63,0.66l4.82,3.73l1.1,-0.1l0.87,0.4l-0.9,0.95l0.15,0.5l1.2,1.02l-0.8,0.03l-0.28,0.45l0.61,0.92l0.05,1.15l-2.11,0.32l-1.07,-2.31l0.02,-0.85l-1.37,-0.97l0.06,-1.45l-0.44,-0.43l-0.76,-0.06l-1.65,0.57l-1.24,-0.74l-0.65,-0.01l-0.29,-0.86l-0.79,-0.69l-1.99,0.45l-1.49,-1.5l-2.11,-1.4l-2.29,0.19l-1.95,-0.72l-0.84,-2.96l0.94,-1.34l0.1,-0.93l-0.76,-2.01l-1.14,-1.0Z", "name": "Armenia"}, "SY": {"path": "M76.3,209.24l0.78,-1.3l-0.28,-1.24l0.26,-0.62l-0.51,-1.46l0.2,-0.69l1.24,-1.34l-0.07,-0.47l-0.54,-0.44l0.11,-0.31l0.73,-0.65l2.14,-0.14l0.12,-0.49l-0.59,-0.51l1.79,-1.52l0.45,-1.13l-0.6,-1.78l-1.0,-0.69l0.39,-0.45l-0.39,-0.91l-0.84,-0.28l-0.58,0.38l-1.63,0.02l-0.56,-2.32l0.4,-2.21l-0.29,-1.85l-0.99,-1.32l0.72,-2.42l1.8,0.68l0.65,-1.04l1.15,-0.75l0.19,-1.28l1.65,-0.36l0.34,-0.34l-0.72,-2.03l0.63,-2.49l1.73,0.32l1.19,0.96l2.75,0.08l5.74,-2.21l1.65,0.3l2.47,1.47l4.61,0.11l4.99,-1.25l5.14,-2.33l4.7,0.24l4.18,-0.76l1.3,-0.43l0.93,-0.75l0.49,0.36l0.27,1.06l-1.9,1.93l-2.13,1.89l-2.86,0.78l-1.02,1.32l-0.39,2.74l0.81,2.35l0.01,1.26l-1.03,3.02l-0.16,4.36l-1.75,2.99l-1.84,0.48l-14.35,8.07l-14.53,8.74l-3.06,-0.53l-1.12,-0.87l-1.17,-0.34l-0.76,-1.06l-1.01,-0.56Z", "name": "Syria"}, "VN": {"path": "M576.93,298.51l-0.51,-1.64l-0.78,-0.54l-2.47,-2.91l1.98,-2.57l2.48,1.12l1.27,1.17l1.55,-0.8l1.17,-1.62l1.09,1.31l0.65,-0.23l0.5,-1.12l1.92,1.68l0.6,0.06l0.44,-0.27l0.57,-1.49l0.49,-0.28l1.54,0.77l1.39,-0.82l1.27,-0.19l0.96,-0.95l0.37,-1.53l2.86,-1.51l1.3,1.08l0.6,0.99l2.08,1.11l2.44,-0.29l0.92,0.86l2.07,-0.36l1.29,0.73l-0.37,0.74l-0.94,0.61l-0.37,1.51l0.14,0.59l0.74,0.75l0.07,2.04l2.56,0.79l0.53,0.89l0.93,0.65l0.72,0.11l0.48,0.65l1.26,0.24l2.14,-0.43l0.58,0.42l-3.39,1.7l-0.6,1.9l-1.14,0.67l-0.66,-0.37l-1.43,0.37l-1.44,-0.38l-0.4,0.33l0.48,2.03l-1.38,1.48l0.04,1.26l-0.31,0.6l-2.5,2.19l-0.82,0.09l-0.73,0.54l-1.27,2.74l-0.21,2.38l-1.13,1.84l-0.08,0.98l2.05,3.67l4.39,4.08l-0.15,1.1l-0.77,0.02l0.12,0.62l1.13,0.7l1.67,2.29l2.79,2.32l0.58,1.32l2.52,1.78l2.47,2.7l1.33,-0.09l1.66,1.84l2.36,3.76l1.82,1.62l0.84,2.77l1.06,2.16l0.03,1.23l1.48,4.85l-0.3,0.38l0.19,4.34l1.14,2.62l-0.02,1.22l-0.47,-0.11l-0.95,0.87l0.34,1.63l-0.52,0.39l0.13,2.81l-0.5,1.52l0.29,0.85l-0.32,0.62l-0.86,0.38l-0.33,1.65l-1.2,0.23l-3.99,2.79l-1.28,0.28l-0.85,1.36l-1.1,0.17l-4.12,2.16l-1.15,-0.64l-0.46,-1.04l-0.71,-0.02l-0.4,1.85l-1.03,-0.97l-0.51,-0.09l-0.91,0.54l-0.19,0.4l0.3,0.33l0.82,0.08l0.14,0.43l-1.8,-0.07l-0.52,0.39l0.22,0.41l2.1,0.89l-0.78,0.82l-0.25,0.82l-3.09,-2.61l-0.52,-0.02l-0.09,0.51l0.35,0.6l2.45,2.47l0.4,0.99l-0.92,0.37l-3.22,-2.94l-0.84,-0.39l-0.48,0.13l0.02,0.49l2.41,3.01l0.28,0.55l-0.16,0.45l-4.87,2.23l-1.49,2.3l-1.45,1.2l-1.48,0.31l0.36,-0.57l-0.07,-0.58l-0.42,-0.3l0.2,-5.8l0.38,-1.4l1.47,-0.88l-0.07,-0.82l-0.63,-0.81l-1.13,-0.38l-0.44,-0.54l-1.28,0.05l-1.11,-1.3l0.48,-0.48l2.26,-0.26l1.53,-1.37l-0.09,-1.32l1.55,0.42l0.51,-0.11l0.48,-0.65l2.3,-0.3l0.84,0.96l0.69,-0.1l1.72,0.63l0.4,-0.5l-0.03,-1.85l-2.26,-1.96l-0.13,-2.15l0.54,-0.17l0.52,-0.66l2.19,0.55l0.8,-0.12l0.28,-1.97l1.77,-0.16l0.63,-0.58l1.29,-0.26l2.0,-1.65l0.57,-0.1l0.87,0.38l0.99,-0.95l0.4,-1.53l-0.59,-3.65l0.97,-3.21l-2.04,-5.21l0.23,-1.67l0.6,-0.64l0.66,-1.54l-0.36,-2.67l1.06,-1.4l0.15,-0.9l-0.78,-1.17l-2.07,-1.68l-0.7,-1.11l1.52,-0.9l0.14,-1.1l-3.61,-2.58l-0.66,-1.29l-1.33,0.28l-0.77,-1.14l-0.47,-2.49l-1.68,-1.97l-2.01,-1.57l-2.31,-2.43l-0.76,-1.89l-0.98,-1.33l-1.09,-0.41l-1.47,-1.51l0.18,-1.98l-3.34,-1.26l-4.49,-3.01l-1.41,-0.59l1.2,-1.11l-0.22,-1.32l1.3,-0.05l2.58,0.51l1.41,-1.22l1.32,-1.98l0.14,-0.79l-0.44,-0.98l-0.67,-0.44l-0.82,0.04l-0.47,-1.14l-1.38,-0.48l1.04,-0.77l0.02,-0.94l-1.79,-1.39l-1.94,-1.01l-1.95,0.68l-1.62,1.22l-3.75,-1.41l-1.74,-2.66l0.78,-2.71l-0.18,-0.78l-1.48,-1.06l-0.68,1.05ZM612.85,302.64l0.02,-0.06l0.03,0.02l-0.05,0.04ZM586.24,386.06l0.57,-0.22l-0.01,1.11l-0.18,-0.47l-0.38,-0.42Z", "name": "Vietnam"}, "GE": {"path": "M119.33,133.54l1.55,-2.34l0.06,-1.52l-2.13,-6.46l-0.7,-0.85l-2.04,-0.77l-0.55,-0.94l-1.69,-1.2l-2.83,-0.77l-3.29,-2.29l0.5,-0.74l2.93,0.42l1.01,-0.17l3.16,1.41l2.05,0.38l1.79,1.06l3.52,0.26l2.68,-0.31l1.23,0.63l1.39,-0.12l1.41,0.57l0.93,1.03l5.02,2.11l-0.32,1.13l0.82,0.54l1.12,0.07l4.19,-1.65l1.05,0.25l0.55,0.78l0.68,-0.05l0.49,-0.97l1.9,0.63l1.55,1.34l2.19,0.09l0.23,0.11l-0.65,2.11l0.22,0.56l2.45,1.57l1.94,0.42l1.21,0.63l-0.59,0.69l-0.95,0.41l-0.11,1.25l1.02,1.29l2.55,1.75l-0.26,0.81l-0.91,0.61l-1.98,-1.08l-1.24,0.22l-1.58,-0.46l-0.45,-0.31l-0.17,-0.72l-3.31,-1.02l-2.5,1.54l-1.15,0.15l-0.35,0.43l-4.03,-0.02l-3.27,0.74l-2.21,0.14l-0.49,-0.52l-1.43,-0.2l-0.32,-0.87l-3.2,-2.55l-1.35,0.05l-0.97,1.16l-3.92,-0.47l-0.86,0.54l-1.57,-0.52Z", "name": "Georgia"}, "IL": {"path": "M66.48,219.04l1.37,-2.38l3.17,-9.66l2.15,0.04l0.79,-0.61l0.24,-0.89l0.53,-0.01l1.02,-0.76l0.48,1.35l-0.25,0.5l0.28,1.14l-0.8,1.43l-1.61,0.91l-0.2,1.83l-0.83,-0.82l-1.7,-0.23l-1.12,0.8l-0.83,2.52l0.04,3.07l0.41,0.3l1.09,0.02l-1.48,1.09l-0.64,2.32l0.63,0.44l1.45,-0.12l2.1,-0.83l-0.28,1.47l0.26,0.89l-2.2,5.75l-0.02,2.36l-1.23,4.69l-4.6,-13.31l1.92,-2.46l-0.14,-0.82Z", "name": "Israel"}, "IN": {"path": "M322.9,278.6l0.38,0.21l5.32,-0.07l1.27,0.8l1.68,0.01l0.94,-0.3l0.53,-0.69l2.75,-0.92l0.43,1.03l1.13,0.35l2.74,-1.35l0.18,-0.55l-0.52,-0.57l-0.04,-0.58l0.56,-1.05l-1.29,-3.03l-1.64,-2.78l-0.04,-1.94l-0.86,-0.61l-2.16,0.04l-1.11,-1.47l-0.14,-1.05l0.41,-1.17l0.1,-2.48l-0.84,-0.83l-2.48,-0.42l-1.61,-0.88l0.35,-2.6l2.65,-2.76l1.84,-3.01l1.72,-1.27l1.22,0.52l0.56,1.44l1.1,0.59l2.99,-1.0l2.67,-0.31l2.47,-0.76l0.79,-1.89l1.73,-2.0l1.14,-2.58l4.28,-2.34l2.48,-4.31l1.09,-3.03l3.16,-1.31l0.98,-1.11l-0.21,-1.77l3.1,-3.58l2.24,-1.23l-0.01,-1.1l-0.66,-0.51l0.54,-2.18l-0.6,-2.16l0.25,-0.62l1.24,-0.97l3.79,-1.56l0.7,-0.74l0.09,-1.02l-0.92,-0.91l-1.85,-0.75l-2.18,-0.23l-0.22,-2.22l-2.33,-0.13l-0.3,-1.78l-1.32,-0.69l-0.82,-0.85l0.89,-1.3l0.26,-1.1l-1.3,-1.79l0.56,-0.69l1.19,-0.57l0.31,-0.72l-0.28,-0.71l-2.31,-0.44l0.48,-0.63l0.03,-0.68l-1.31,-1.12l1.1,-2.01l2.31,-0.86l4.75,0.99l1.75,0.07l1.98,0.85l2.17,0.26l2.44,-1.38l1.0,-0.01l2.0,-0.7l1.22,0.1l0.88,-0.54l0.56,-0.86l1.6,-0.77l0.5,-1.08l5.25,-3.06l0.64,0.29l0.82,-0.26l-0.18,1.74l2.41,5.55l2.69,0.85l2.04,1.59l-0.17,0.52l-1.42,0.96l-0.24,0.93l0.64,4.48l2.39,2.53l-0.22,1.03l0.75,0.99l0.1,3.18l-0.99,0.98l-0.73,0.16l-0.9,-0.75l-0.54,-1.09l-0.42,-0.13l-2.1,0.32l-0.52,0.68l0.83,2.72l1.35,1.61l-0.09,0.54l0.34,0.47l-0.15,1.2l0.72,1.02l-0.45,1.05l0.16,1.56l0.34,0.35l0.83,0.02l1.28,-0.47l0.37,-0.43l1.67,2.36l1.26,1.02l0.84,0.43l1.54,-0.15l2.02,1.45l0.71,0.09l-0.05,1.4l0.35,0.35l3.03,0.96l2.35,1.5l-2.46,1.88l-1.66,1.96l-1.12,2.54l-0.17,1.84l-1.11,1.66l-0.1,1.64l2.76,1.95l0.62,0.12l0.69,-0.39l4.26,2.5l1.1,1.3l4.1,2.53l1.21,-0.31l3.26,1.89l1.59,-0.04l0.61,1.31l4.11,1.18l1.39,-0.72l2.72,0.69l2.05,-0.86l3.61,1.43l0.49,1.96l3.51,1.64l0.5,0.74l1.03,0.2l2.34,-0.71l0.48,1.29l0.77,0.54l1.62,-0.34l2.57,0.56l2.67,1.13l2.21,-0.87l0.46,0.84l1.56,0.62l1.12,-0.47l1.56,0.17l1.58,-0.3l1.31,0.4l0.67,-0.62l0.82,-2.52l-0.4,-1.75l-0.92,-1.53l0.29,-2.13l0.92,-2.77l0.03,-0.85l-0.34,-0.44l2.12,-0.51l1.16,-0.64l1.2,0.53l0.28,0.95l-0.73,2.81l0.22,0.95l0.65,0.67l-0.76,0.6l-0.14,0.72l1.05,1.87l2.18,1.17l1.5,-0.2l1.71,0.47l0.4,0.55l1.23,0.14l2.71,-0.43l0.77,-0.78l0.82,-0.28l1.5,0.71l1.43,0.22l4.09,-0.15l1.16,-0.6l0.6,0.46l1.15,0.04l2.62,-0.46l0.58,-0.34l0.23,-0.55l-0.59,-1.48l0.63,-1.69l-0.97,-1.51l-1.82,0.06l-0.5,-0.33l-0.44,-0.65l0.28,-0.8l2.3,0.24l1.06,-0.64l2.23,-0.13l1.16,-0.49l1.04,-0.73l0.18,-1.47l2.52,-1.5l0.73,-0.75l0.82,-1.63l3.81,-0.83l1.13,-0.65l0.98,-1.24l0.63,-0.2l1.29,-1.3l2.31,-1.27l0.96,1.07l4.73,1.13l1.16,-0.99l0.17,-0.56l3.46,-1.75l1.52,1.58l-1.24,1.01l0.31,1.59l0.61,0.08l1.68,-1.02l0.74,1.78l-1.74,1.79l-0.44,1.09l0.18,0.4l1.05,0.43l1.61,-0.73l1.24,0.74l1.5,0.23l0.76,-0.22l1.42,0.99l0.16,1.89l-2.66,1.8l-0.78,1.08l0.23,1.55l1.41,2.08l-0.95,-0.48l-0.57,-0.88l-0.78,-0.46l-4.19,0.57l-1.17,0.47l-1.14,1.34l-3.26,2.32l-2.65,1.43l-0.51,0.98l-0.11,1.18l0.58,2.4l-0.76,0.85l-0.54,1.73l-1.12,1.36l-0.94,0.54l-0.72,1.21l-0.19,1.18l1.11,1.09l-0.87,2.1l-2.18,3.55l-1.16,3.34l-2.89,-1.02l-1.55,0.22l-0.79,-0.68l-0.86,0.21l-0.16,0.59l0.79,2.67l-0.36,4.18l-0.29,0.55l-0.89,-0.06l-0.42,0.54l0.05,0.78l-0.61,1.6l0.57,3.58l-0.72,0.29l-0.7,1.4l-1.45,-1.11l-0.57,0.22l-0.23,0.52l-0.5,-4.73l-0.99,-2.06l-0.2,-3.04l-0.66,-2.83l-1.11,-0.62l-1.71,0.29l-0.35,0.4l0.05,1.35l-1.33,1.63l0.0,1.78l-0.68,0.4l-0.43,-0.23l-0.76,-1.47l-0.87,0.09l-0.91,-2.82l0.47,-2.4l0.92,-1.22l1.06,0.04l1.44,-0.89l1.27,0.01l0.59,-1.27l1.19,-0.51l1.03,-3.6l1.2,0.25l0.62,-0.44l-0.19,-1.02l-2.02,-1.36l-1.38,-0.52l-12.03,0.09l-4.39,-1.08l0.12,-4.95l-1.2,-2.28l-0.97,-0.04l-0.36,0.44l-0.14,1.2l-0.96,-0.05l-1.22,-0.71l-0.47,-0.63l-0.34,-1.43l-0.48,-0.42l-1.07,0.08l-0.22,0.73l0.2,0.33l-0.52,0.04l-0.76,-0.22l-0.54,-1.04l-0.89,-0.81l-1.01,-0.48l-0.67,0.31l-0.15,0.89l0.69,0.62l-2.11,2.2l-0.56,2.02l0.59,0.77l0.85,0.23l0.71,0.63l1.1,1.34l0.92,0.42l1.12,0.03l0.31,0.89l0.81,0.56l-1.06,0.32l-2.19,-0.15l-0.38,0.27l-0.89,2.16l-0.8,-0.29l-0.59,0.27l-0.98,2.39l1.18,1.58l1.15,0.1l0.7,0.65l2.25,0.79l-0.21,1.8l-0.98,2.86l1.24,1.83l-0.23,0.96l0.19,0.58l1.36,0.51l-0.45,1.06l0.55,3.31l0.94,2.74l-0.12,2.18l-0.58,0.61l0.67,1.68l-0.38,-0.01l-0.68,-0.76l-0.73,1.06l0.28,-2.83l-1.13,-1.2l-0.38,0.3l-0.56,2.28l0.19,1.14l-0.63,0.22l-1.33,-1.07l-0.47,1.03l-0.53,-0.06l-0.19,-0.18l0.97,-3.34l-2.42,-2.28l-0.28,0.45l0.15,0.94l1.34,1.05l-1.35,2.0l-1.85,1.23l-4.35,1.21l-1.97,2.2l-0.18,1.39l0.89,3.07l-1.45,1.96l-0.07,0.76l-1.77,1.04l-0.81,1.11l-0.9,-0.24l-0.28,0.68l0.35,0.38l-0.41,0.19l-4.39,1.43l-0.28,-1.19l-0.79,-0.25l-1.88,1.14l-0.76,1.19l0.01,0.43l0.52,0.37l-3.38,2.95l-0.65,1.3l-4.35,5.15l-3.35,1.73l-3.41,3.56l-4.46,2.54l-1.82,1.41l-0.7,1.18l0.53,1.54l-0.64,1.44l-3.49,1.65l-2.6,-0.26l-1.0,0.23l-0.64,0.82l-0.76,2.21l-1.11,1.39l-0.62,-0.14l-0.45,-0.67l-1.08,-0.23l-2.16,0.81l-0.81,0.71l-1.53,3.09l-0.39,2.01l0.93,4.64l-0.49,2.1l0.99,3.49l-0.57,-0.03l-0.71,0.82l-0.03,0.48l2.01,1.74l-0.82,4.92l-0.62,1.73l-2.16,3.59l-0.79,3.19l0.26,0.98l-0.61,0.79l-0.06,0.48l0.93,0.07l0.18,0.65l-0.07,6.26l-1.97,-0.13l-1.06,0.18l-0.82,0.53l-0.53,0.87l0.03,0.92l-2.37,3.6l-0.11,1.12l0.64,0.82l-4.13,1.22l-1.23,0.94l-0.76,0.97l-0.5,2.85l-0.41,0.79l-2.04,1.38l-1.79,0.76l-1.36,-0.42l-1.69,-1.23l-3.75,-4.35l-1.66,-4.01l0.77,-0.17l0.23,-0.48l-0.84,-2.92l-1.12,-1.22l-0.01,-0.98l-2.05,-4.35l-1.49,-4.39l-1.57,-2.72l-2.42,-2.65l-1.84,-3.76l-1.3,-3.86l-0.75,-4.53l-1.29,-2.91l-0.9,-3.48l-3.22,-4.41l-0.58,-1.89l0.38,-0.67l-0.96,-1.15l0.25,-0.36l-0.34,-0.63l-0.8,-0.21l-1.49,-2.59l-1.02,-3.05l-1.38,-9.0l-1.2,-3.62l-0.89,-4.27l0.97,-2.9l-0.6,-1.33l-0.85,1.12l-0.06,-0.21l-0.03,-1.21l0.96,0.12l0.44,-0.29l-0.22,-0.47l-1.36,-0.6l0.04,-1.22l-0.43,-0.36l-0.4,-1.77l1.68,-6.59l-0.61,-3.55l-0.95,-0.59l-0.4,-1.19l0.62,-0.56l0.12,-0.49l-0.26,-0.13l2.93,-1.55l0.16,-0.51l-0.5,-0.21l-1.93,0.47l-1.69,-0.06l0.22,-0.85l0.82,-1.06l-1.25,-0.23l0.14,-0.86l1.66,-0.45l0.29,-0.38l-0.29,-0.39l-1.7,-0.37l-1.07,0.22l-2.04,-0.16l-0.39,0.32l0.86,0.84l-0.16,0.52l-1.7,1.97l0.13,0.63l0.93,0.36l0.47,0.66l-0.02,0.8l-1.63,2.72l-7.28,3.2l-2.07,-0.01l-1.67,-0.74l-3.29,-2.58l-2.17,-2.59l-4.15,-3.8l-1.53,-2.11l0.29,-0.67l1.05,0.94l0.71,0.17l1.95,-0.92l0.69,0.03l0.69,-0.46l0.75,0.03l1.32,-0.72l1.25,-0.2l2.15,-3.21l0.45,-0.21l0.23,-0.4l-0.21,-0.79l-0.88,-0.15l-0.75,1.0l-1.63,0.03l-3.3,1.46l-3.07,-0.68l-3.05,-1.58l-1.24,-1.01l-1.52,-2.74l2.46,-1.91l0.13,-0.51l-0.49,-0.2l-1.04,0.36l-2.61,1.58l-0.36,-1.42l1.25,-0.53l2.48,-0.1l0.41,-0.39l0.03,-2.19ZM510.38,409.89l0.46,1.53l-0.26,0.91l-0.96,-1.53l0.07,-0.64l0.69,-0.26ZM502.0,376.41l-0.73,-2.04l0.46,-0.43l0.48,-1.76l0.55,-0.06l-0.74,1.46l0.36,0.73l-0.38,2.09ZM502.93,370.91l-0.34,-0.32l0.01,-1.24l0.16,-1.82l0.51,-0.85l0.37,0.44l0.17,2.11l-0.94,0.92l0.06,0.77ZM503.37,365.59l0.26,-2.41l0.75,-0.98l-0.3,1.27l0.32,0.54l-1.03,1.58ZM500.23,384.16l-0.24,-0.02l-0.13,-1.21l0.57,-0.59l0.25,0.86l-0.45,0.96Z", "name": "India"}, "AZ": {"path": "M146.29,137.61l0.31,-0.42l-0.14,-0.46l-1.19,-0.85l1.66,-1.14l2.69,0.83l0.36,0.77l1.56,0.71l0.87,0.19l1.08,-0.25l2.09,1.1l0.96,-0.25l0.8,-0.8l0.28,-1.52l-2.74,-1.99l-0.84,-1.11l0.05,-0.36l0.72,-0.2l0.89,-1.05l0.62,0.68l1.35,-0.09l2.92,2.63l0.77,1.61l0.58,0.49l3.73,0.81l0.9,-0.29l1.4,-2.1l2.48,-1.29l1.21,-1.93l3.16,3.87l1.28,3.05l1.8,2.12l2.06,1.78l3.01,0.66l1.38,1.34l-2.81,-0.15l-3.0,1.27l-0.6,1.06l-1.13,4.18l0.28,2.16l-0.7,0.7l-0.48,1.73l-0.85,-0.64l-0.9,0.58l-0.89,2.3l0.09,3.19l-1.31,0.29l-1.44,-1.56l-0.89,-0.28l-0.7,-0.92l-1.38,-0.93l1.64,-0.6l0.54,-0.51l-0.11,-1.04l-1.24,-1.09l1.48,-1.09l0.08,-0.54l-2.77,-2.68l-1.81,0.33l-2.3,1.36l-2.2,1.41l-1.46,1.36l-1.09,0.35l-2.04,1.96l-0.32,-1.72l0.88,-0.3l0.06,-0.59l-1.44,-1.33l0.73,-0.52l0.03,-0.84l-1.43,-0.86l-0.97,0.13l-3.58,-2.86l1.32,-0.16l0.78,-1.51l0.01,-0.7l-3.09,-1.91l-0.78,-0.93l0.78,-0.43l-0.1,-0.73l-0.66,-0.19l0.95,-0.7l-0.04,-0.82l-1.37,-1.31l-1.8,-0.5ZM148.08,141.25l-0.07,0.14l0.0,-0.02l0.07,-0.12ZM143.77,150.11l1.2,-0.38l0.53,0.63l0.19,0.87l0.88,0.02l1.49,0.8l2.24,-0.57l-0.06,1.5l1.4,1.03l-0.08,0.63l0.93,1.93l-3.87,-0.93l-2.44,-2.08l-2.4,-3.44Z", "name": "Azerbaijan"}, "ID": {"path": "M789.33,474.14l1.38,-1.54l0.5,-1.3l-0.0,-0.92l3.92,-1.03l2.44,-1.87l1.87,-0.69l3.25,0.45l4.58,2.3l3.81,0.16l0.65,0.47l-0.17,1.23l1.36,2.55l-1.13,2.76l0.68,4.46l2.0,3.96l0.4,0.23l0.59,-1.18l-0.04,-0.97l0.35,-0.17l0.49,2.77l0.33,0.3l0.81,0.01l0.32,1.91l1.81,1.2l2.12,0.2l1.17,-0.34l2.83,-2.66l1.11,-1.9l1.81,-1.25l0.97,-2.14l3.21,-0.53l1.82,-0.72l0.99,-0.93l-0.34,-1.22l4.78,-2.47l6.06,2.27l1.21,0.95l7.33,3.23l2.8,0.05l0.74,0.46l2.75,0.25l1.04,1.22l1.3,0.02l0.01,27.59l-0.84,2.98l0.84,1.43l0.01,15.75l-2.99,-3.29l-3.59,-3.15l0.9,-1.62l-0.14,-0.51l-0.53,0.08l-1.2,1.2l-3.92,0.65l-1.0,-1.54l-2.46,2.02l0.42,-1.96l0.52,-0.65l0.64,-1.89l-0.34,-0.77l-0.85,-0.46l-1.09,-1.32l1.83,0.12l0.86,-0.28l0.27,-0.48l-2.71,-0.68l-1.41,-1.08l1.45,-0.24l0.25,-0.65l-3.14,-3.8l-1.0,-2.81l0.55,-0.88l-1.13,-0.38l0.86,-0.89l-0.44,-0.28l-1.59,0.29l-0.05,-1.54l-2.46,-1.85l-3.26,-1.75l-0.15,-0.38l-0.61,-0.18l-0.32,0.21l-0.69,-0.41l-3.54,-0.8l-4.86,-2.18l-3.99,-0.66l-1.85,0.06l-3.13,-1.82l-0.43,-0.67l0.08,-0.46l1.09,-0.1l0.36,-0.39l-0.35,-0.4l-1.06,-0.12l-1.47,0.42l-1.05,-0.47l-1.01,0.18l-1.02,-1.07l-1.09,0.17l-1.99,-2.23l0.11,-1.47l1.05,-1.42l-0.28,-0.61l-0.83,-0.02l-0.83,0.78l-0.2,1.78l-0.6,0.13l-0.41,0.49l0.16,0.67l-0.93,1.58l-0.06,1.1l-0.99,1.07l-2.04,0.03l-1.03,-2.27l0.81,-1.34l-0.94,-2.03l-3.11,-2.49l-2.21,-0.48l-0.28,-0.36l1.45,-0.65l3.86,0.73l2.32,-2.25l0.92,-0.29l2.94,0.8l0.71,0.55l0.57,-0.31l0.3,-1.04l1.11,-0.47l0.09,-0.97l-0.4,-0.37l0.57,-1.11l-0.55,-0.38l-1.54,0.64l-3.61,0.19l-1.92,0.42l-3.32,-0.4l-1.43,0.17l-1.92,-1.74l-0.62,-2.99l-0.39,-0.38l-1.41,-0.13l-3.25,-1.1l-1.9,0.36ZM839.2,526.43l1.24,-2.99l1.27,-2.13l1.22,-1.0l2.52,-0.81l1.51,0.07l1.22,1.28l0.14,0.58l-1.4,2.52l-1.81,1.56l-1.64,0.91l-4.26,0.02ZM846.09,526.2l0.98,-0.72l0.56,0.91l-1.54,-0.19ZM825.18,476.4l2.6,0.11l1.48,0.5l2.3,0.09l-3.37,0.37l-3.0,-1.07ZM822.33,469.12l1.47,0.16l0.45,0.26l-0.52,0.3l-1.4,-0.73ZM824.31,469.56l1.05,-0.04l3.09,2.59l-1.2,0.32l-1.42,-0.3l-1.0,-2.39l-0.52,-0.18ZM818.29,471.77l-0.21,-0.04l-0.17,-0.42l0.16,-0.02l0.22,0.48ZM813.05,509.18l0.58,0.0l0.41,-0.43l0.29,-1.17l-0.44,-0.67l1.84,-2.07l0.83,1.72l-0.21,1.93l0.3,1.44l-0.27,0.81l-0.38,0.3l-1.15,-0.18l-1.79,-1.67ZM812.51,512.73l0.68,-0.38l-0.5,-0.69l-0.07,-1.13l2.32,1.74l-1.23,2.35l-0.79,0.47l-0.67,-0.65l0.27,-1.71ZM801.88,507.73l-0.08,-0.13l0.08,-0.65l0.16,0.53l-0.16,0.25ZM791.1,523.43l-0.89,-0.08l-0.19,-0.61l0.31,-1.04l0.85,-1.69l0.66,-0.35l1.27,-1.43l0.18,-0.61l0.39,-0.12l0.2,0.11l-0.55,0.73l0.32,1.17l-0.44,1.23l-1.78,1.74l-0.35,0.94ZM785.68,465.9l-0.54,-0.57l-1.3,-0.15l0.15,-0.41l1.73,-0.18l0.72,0.99l-0.75,0.32ZM787.02,466.29l0.59,0.08l0.14,0.13l-0.57,0.11l-0.15,-0.32ZM787.04,464.3l2.01,0.13l1.67,0.73l0.19,0.68l-0.29,0.25l-0.91,-0.29l-0.96,0.12l-1.72,-1.62ZM789.08,524.99l0.05,-0.05l0.02,0.01l-0.07,0.04ZM786.92,471.18l1.16,-0.36l0.96,0.27l-0.49,2.26l-0.95,-0.47l-0.68,-1.7ZM766.27,488.64l-0.3,-0.69l2.11,-2.36l5.81,-0.26l0.94,0.8l1.35,-0.39l1.07,-0.71l0.68,0.0l3.32,1.4l2.85,0.08l1.28,0.95l0.69,1.82l0.9,0.44l0.47,0.8l-0.29,1.53l-5.37,-2.63l-1.33,-1.11l-2.56,-0.1l-0.53,0.55l0.05,0.41l-3.38,-0.88l-0.29,-0.67l-0.42,-0.11l-1.12,0.34l-1.17,1.21l-0.72,0.09l-0.48,-0.16l-1.4,-1.59l-0.89,-0.41l-0.85,0.41l-0.42,1.23ZM780.17,477.84l3.58,-1.0l0.41,0.54l-0.24,0.82l-1.38,0.56l-2.37,-0.92ZM778.8,522.63l0.94,0.13l-0.18,0.93l-0.79,-0.7l0.03,-0.36ZM763.29,456.66l-0.79,-2.23l0.82,-1.51l0.7,-2.8l2.1,-2.2l-0.75,1.07l-0.18,0.98l0.94,1.15l0.0,2.49l-0.83,1.09l-1.69,1.08l-0.32,0.87ZM763.89,457.48l0.97,0.44l0.99,-0.17l0.68,-1.6l1.34,-0.77l0.14,-1.37l0.36,-0.47l1.41,-0.82l1.5,-0.35l0.03,2.9l-2.85,1.55l-0.49,0.89l0.2,0.84l2.85,1.59l0.21,0.87l-1.41,-0.63l-3.46,-0.6l-0.67,0.3l-0.37,0.77l-0.08,2.61l0.69,2.29l1.8,3.22l-0.66,-0.29l-1.13,-2.05l-1.42,-1.29l0.15,-3.72l-1.16,-1.71l-0.12,-0.79l0.52,-1.65ZM769.72,447.96l-0.89,0.1l-0.34,-1.46l0.71,-1.09l1.54,-0.83l0.41,0.59l-0.43,1.63l-0.48,0.8l-0.53,0.26ZM770.98,517.22l0.07,-0.02l-0.01,0.06l-0.06,-0.04ZM766.39,491.38l0.34,-0.3l0.21,-0.03l-0.29,0.14l-0.26,0.19ZM767.55,490.94l0.67,-0.35l-0.17,0.61l-0.49,-0.27ZM766.43,525.21l0.01,0.0l0.11,-0.0l-0.03,0.03l-0.08,-0.03ZM767.16,475.96l-3.99,0.3l-0.88,-0.4l0.4,-0.99l1.11,-0.75l3.36,1.84ZM761.78,466.79l0.31,0.27l0.62,-0.11l0.26,-0.47l0.61,0.79l-0.45,0.83l0.4,0.98l-0.85,0.24l0.16,-0.66l-1.25,-1.34l0.2,-0.52ZM764.02,469.29l0.79,0.03l0.27,0.36l-0.41,0.22l-0.64,-0.6ZM760.63,469.19l0.05,-0.12l0.05,0.15l-0.09,-0.02ZM760.49,467.14l-0.3,0.09l-0.05,-0.4l0.25,-0.77l0.11,1.08ZM757.75,487.23l1.12,0.53l1.5,1.99l-0.08,0.85l-1.95,0.95l-1.71,0.4l-0.93,-0.35l-2.61,-1.35l-0.99,-1.48l0.06,-1.37l0.81,0.26l2.66,-0.6l2.11,0.14ZM757.21,433.23l0.01,-0.01l-0.0,0.01l-0.01,0.0ZM757.81,431.67l-0.55,-0.64l0.14,-0.88l0.5,1.37l-0.1,0.14ZM750.41,523.01l1.0,-1.32l1.73,0.26l2.79,-0.97l0.69,0.53l-1.13,0.53l-0.7,0.9l-2.53,-0.45l-1.85,0.52ZM747.5,477.65l0.38,-0.04l1.32,0.09l-1.63,0.15l-0.07,-0.2ZM750.49,477.62l1.14,-0.09l0.2,0.02l-0.72,0.12l-0.62,-0.06ZM750.92,479.55l-0.08,-0.27l0.13,-0.24l-0.06,0.52ZM748.22,437.51l0.03,0.04l-0.03,-0.01l0.0,-0.03ZM743.62,476.88l0.82,0.28l0.59,-0.2l0.46,0.47l-1.5,0.42l-1.42,-0.31l-2.24,0.81l-0.5,-0.01l-0.45,-0.75l0.3,-0.99l0.47,-0.16l1.27,-0.06l2.21,0.5ZM745.7,477.42l0.14,-0.02l0.02,0.01l-0.16,0.01ZM704.86,464.54l0.67,-0.32l0.35,-0.64l-0.38,-1.56l0.7,-1.38l0.9,-0.91l0.22,-1.01l1.46,-1.75l0.61,0.71l0.88,0.3l0.92,-0.29l1.28,-1.46l0.85,-1.63l0.55,-0.33l0.65,-0.1l0.97,0.48l1.35,0.12l0.78,1.0l0.7,0.33l2.14,-0.14l4.23,0.52l2.94,1.27l1.84,-0.7l5.9,0.77l3.32,-1.42l1.09,-1.24l1.03,-0.48l0.49,-1.14l1.28,-0.5l1.4,-1.67l0.9,0.27l0.37,0.77l-0.72,0.71l-1.14,2.23l-2.02,1.93l-1.35,1.98l-0.59,0.59l-1.4,0.6l-5.09,0.6l-1.77,-0.16l-1.34,-1.15l-0.84,-0.13l-8.69,0.42l-2.46,-0.46l-3.77,0.42l-3.29,-0.64l-1.86,0.64l-1.29,1.45l-1.42,3.65l0.37,2.87l1.43,2.52l2.03,1.25l0.64,1.6l0.81,1.04l2.66,0.26l1.16,-0.55l1.08,-1.76l1.97,-1.99l1.09,0.7l1.85,0.06l2.35,-1.32l4.52,-0.01l0.37,-0.44l-0.16,-0.5l1.88,-0.43l1.27,0.47l0.28,0.68l-0.26,1.25l-0.33,0.19l-1.76,-1.11l-1.42,0.24l-0.83,0.58l-2.23,2.84l-1.83,1.48l-2.87,1.01l-1.54,1.51l-1.64,-0.44l-0.46,0.1l-0.39,0.56l0.2,0.92l1.67,1.53l1.36,0.61l2.3,3.75l1.54,1.18l0.08,0.97l0.62,0.86l-0.56,0.67l-0.39,2.87l2.47,2.01l0.76,1.42l0.7,0.29l0.61,-0.26l0.18,1.66l-0.74,-0.33l-0.61,0.56l-1.54,0.02l-2.74,0.91l-0.68,0.93l0.08,1.25l-0.69,0.09l-2.23,-0.59l-0.59,-1.03l0.39,-2.11l0.54,-1.02l-0.07,-0.81l-0.6,-0.58l-1.72,-0.75l-3.0,-2.79l1.22,-2.49l-0.1,-3.4l-0.7,-0.76l-0.83,-0.19l-1.98,0.21l-2.36,1.53l-0.78,0.9l-0.02,0.97l1.01,2.13l0.32,2.63l-0.55,2.79l0.43,4.03l-1.05,3.95l1.04,2.72l-3.1,0.14l-1.67,0.86l-1.69,-1.16l-0.56,-0.63l-0.09,-0.63l1.15,-3.15l0.0,-1.13l0.72,-2.42l0.09,-2.92l-1.08,-2.37l0.04,-1.47l-1.22,-0.88l-2.77,0.54l-0.33,-0.25l-0.58,-1.33l0.17,-2.69l-0.53,-1.3l2.28,-1.74l0.6,-2.56l1.14,-1.64l0.2,-0.97l-0.28,-2.97l1.44,-3.6l1.14,-1.35l0.69,1.01l0.45,0.18l0.3,-0.38l-0.89,-5.64ZM736.59,534.43l0.65,0.46l1.5,0.02l1.11,-0.94l0.32,-0.91l2.8,-1.45l0.68,0.57l1.03,-0.38l-0.17,0.55l-0.73,0.03l-0.51,0.53l0.75,2.11l-2.51,2.9l-2.0,1.7l-1.75,0.24l-2.44,1.21l-0.67,0.02l-0.7,-0.31l0.76,-1.13l-0.16,-0.53l-0.73,-0.47l0.54,-1.87l2.23,-2.34ZM739.69,526.62l0.3,-0.38l-0.09,-0.61l0.49,-0.44l0.74,0.46l1.0,-0.28l2.39,0.23l0.02,0.44l-4.84,0.58ZM738.25,526.06l-0.87,1.35l-0.81,-0.7l1.04,0.05l0.63,-0.7ZM731.61,527.45l1.11,-0.79l0.05,-0.48l0.71,0.19l1.02,-0.53l-0.5,0.72l-0.64,0.17l-0.4,0.77l-0.89,0.22l-0.47,-0.27ZM733.01,475.86l0.15,0.17l-0.02,0.09l-0.13,-0.02l0.01,-0.25ZM728.24,475.03l-0.26,-0.63l0.5,-1.4l1.79,-0.17l-2.03,2.2ZM730.66,474.31l0.09,0.01l-0.08,0.05l-0.01,-0.07ZM731.28,474.11l0.47,-0.63l0.45,-0.08l0.46,0.35l-0.47,0.81l-0.91,-0.45ZM728.06,545.35l0.04,-0.38l1.57,-0.49l1.76,-1.46l0.19,0.55l-1.26,1.05l-2.31,0.73ZM729.8,526.35l0.37,-0.31l0.87,0.03l-0.08,0.29l-1.15,-0.01ZM726.57,505.77l-0.28,-0.74l1.35,-2.24l0.65,-4.35l0.9,-1.29l0.76,0.85l0.09,0.81l-1.0,0.33l-0.65,3.17l0.07,0.35l0.84,0.13l0.74,0.68l-0.7,0.43l-0.85,0.03l-0.97,1.82l-0.95,-0.0ZM729.17,494.09l1.2,-0.03l0.04,0.33l-0.68,0.62l-0.57,-0.92ZM705.88,527.5l2.53,-1.18l2.61,-0.3l1.0,0.55l1.9,0.32l3.37,1.63l4.0,-0.89l1.97,1.18l0.65,0.09l1.14,-0.33l0.87,-1.23l2.69,-1.32l-1.25,1.05l0.03,0.87l-2.49,0.92l-0.98,0.08l-1.0,-0.06l-0.77,0.11l-3.09,1.08l-0.63,-0.51l-1.32,-0.05l-0.8,0.74l-0.94,-0.13l-1.11,0.29l-3.54,-1.0l-1.78,0.13l-1.63,-0.31l-1.31,0.48l-0.52,-0.79l0.4,-1.43ZM728.29,525.01l-0.42,-0.09l0.33,0.02l0.09,0.07ZM724.05,503.6l0.27,-1.16l0.54,-0.75l-0.3,-1.92l2.04,-0.94l0.18,1.77l-1.01,1.42l0.03,1.48l-0.38,0.24l-0.79,-0.36l-0.58,0.23ZM720.93,502.15l0.62,0.76l-0.12,1.31l-0.94,-1.15l0.45,-0.92ZM720.23,543.0l0.44,-0.43l0.34,-0.02l-0.55,0.41l-0.23,0.04ZM706.07,534.07l1.84,1.37l0.47,0.99l1.4,0.16l0.62,0.43l1.7,1.8l0.11,0.63l-0.67,0.63l-1.69,0.55l-1.31,-0.32l-1.32,-0.78l-0.92,-1.19l-2.54,-1.52l-3.9,-0.54l-0.69,-0.98l1.35,-0.7l3.1,-0.23l1.3,0.2l1.15,-0.51ZM702.37,528.21l0.22,-0.47l0.21,0.05l-0.06,0.15l-0.36,0.27ZM693.04,526.41l0.72,0.45l1.53,-0.65l0.67,0.05l0.64,0.92l0.65,-0.13l0.38,-0.6l0.71,-0.04l1.18,2.42l-1.95,-0.07l-0.56,0.18l-0.25,0.54l-1.8,0.36l-0.09,-0.98l-0.75,-0.28l-1.32,1.18l-2.33,0.64l-1.08,-0.05l-1.64,0.65l-2.17,0.19l-1.07,0.47l-1.71,-0.58l0.33,-2.98l2.29,-1.13l1.29,0.44l1.51,-0.01l1.57,1.98l1.43,0.27l2.25,-0.78l0.15,-0.9l-1.07,-0.93l-0.98,-0.17l-1.11,-0.8l-0.4,-0.87l0.92,-0.34l1.29,0.22l0.79,1.34ZM624.73,453.92l0.32,-1.2l1.4,-1.48l0.79,-1.6l0.57,-0.24l0.23,0.98l0.47,0.31l0.21,1.21l0.61,0.69l4.36,3.97l1.76,1.11l4.44,-1.41l2.81,0.41l2.57,-0.14l0.92,-0.77l1.34,-0.42l0.81,-2.15l1.88,-0.75l3.35,-0.06l0.1,0.67l0.44,0.33l4.78,1.45l2.12,-1.48l3.43,-0.44l1.13,0.3l1.1,-1.45l0.44,-1.58l0.82,-0.52l0.22,-0.91l-0.41,-1.57l2.94,-2.09l-0.01,-0.9l-0.63,-0.47l0.22,-1.45l0.71,-0.74l1.04,0.04l0.82,-0.43l0.87,-3.2l0.01,-3.59l0.74,-1.77l1.17,-1.05l0.92,0.4l1.13,-0.45l1.83,0.33l0.96,-0.41l4.28,0.22l1.22,0.26l1.37,0.81l-0.09,0.78l2.13,2.46l-0.52,0.13l-0.74,-0.59l-0.66,0.21l-0.19,0.44l-2.01,-0.06l-0.87,0.12l-0.34,0.39l2.26,1.73l-0.23,0.93l0.24,0.77l1.88,0.96l-0.32,0.83l0.66,0.44l0.04,0.65l0.97,0.48l0.77,1.52l1.29,1.56l-0.09,0.39l-1.72,1.31l-0.07,0.72l2.13,2.4l4.18,2.87l2.38,2.1l-1.34,0.78l-1.57,0.18l-2.4,-0.43l-1.29,-1.21l-0.78,-0.45l-0.48,0.07l0.3,1.69l-1.62,1.18l-1.71,3.82l-0.45,4.24l0.8,3.1l-2.33,1.11l-2.24,2.13l-0.51,-0.17l-0.74,-1.17l-0.38,0.3l0.13,2.03l-1.38,0.97l-0.34,0.98l-1.85,1.46l0.38,0.6l0.71,-0.03l0.17,0.7l-0.16,0.71l-0.71,0.57l0.12,0.69l1.44,0.48l0.05,1.1l-0.1,0.51l-0.99,-0.02l-0.65,0.55l-0.07,0.39l0.49,0.41l-0.28,1.72l-0.35,0.31l-0.29,-0.21l-0.62,0.23l-0.07,0.63l0.5,0.77l-1.21,1.63l-0.68,1.71l-9.18,4.19l-0.25,-3.08l-0.6,-2.47l-0.29,-0.35l-0.87,0.73l-0.51,-0.29l0.29,-0.99l-0.2,-0.48l-0.51,0.12l-0.63,0.76l-0.92,-0.59l-1.23,0.91l-1.59,0.4l-0.66,-1.92l-0.54,-0.16l-1.55,0.4l-2.09,-2.12l-0.67,0.19l-0.43,1.75l-1.45,0.92l-1.04,0.52l-2.45,-0.55l-1.19,0.45l-1.71,1.25l-0.04,-3.42l-1.1,-1.47l-0.52,0.04l-0.45,0.52l-1.8,-0.3l-3.15,1.01l-0.34,-0.21l0.41,-0.79l-0.48,-0.19l-1.4,0.72l-0.99,-0.86l-2.02,0.63l-1.1,-7.06l-0.99,-1.09l0.56,-2.28l-0.43,-2.1l-0.89,-1.4l-1.51,-1.24l-2.88,-0.7l-0.03,-0.39l0.77,-0.78l-1.83,-1.67l-0.05,-1.14l0.99,-2.44l-2.34,-2.49l-0.27,-3.07l0.36,-2.36l1.15,-0.76l0.16,-0.42l-0.77,-0.31ZM689.33,432.89l1.07,-0.1l0.09,0.26l-0.8,0.22l-0.36,-0.38ZM688.52,438.39l0.19,-0.01l-0.04,0.25l-0.08,-0.07l-0.06,-0.17ZM688.18,525.84l-0.09,-0.44l0.43,-0.1l-0.34,0.54ZM676.77,529.94l0.76,-0.55l-0.1,-2.16l1.02,-0.92l1.12,-0.58l2.02,0.78l-1.52,3.24l0.09,0.45l-0.76,0.16l-2.62,-0.43ZM677.43,493.41l0.1,-1.05l-0.41,-1.51l0.63,-1.84l0.39,-0.25l0.37,3.12l-0.14,0.7l-0.94,0.84ZM665.5,525.06l3.09,0.52l1.84,-0.9l2.51,0.99l0.95,1.06l-2.63,1.44l-0.74,1.27l-0.04,-0.59l-0.76,-1.07l-1.72,-1.15l-1.67,-0.38l-0.83,-1.18ZM671.74,515.64l-0.41,0.09l-0.2,-0.1l0.96,-0.2l-0.35,0.21ZM596.42,514.63l0.11,-0.17l0.13,-0.12l0.08,0.21l-0.32,0.08ZM598.18,514.76l1.14,-1.95l1.0,-0.35l0.73,-2.71l1.15,-1.24l5.69,1.33l1.0,-0.27l0.85,-1.03l1.75,0.39l0.99,1.02l1.54,0.76l3.59,0.62l1.25,-0.16l1.32,1.32l0.6,1.81l0.87,0.74l4.61,0.57l1.64,-0.38l2.33,0.65l2.82,-0.05l1.94,0.34l1.32,-1.19l1.09,-2.43l1.31,-0.19l1.72,1.9l1.29,0.09l1.34,-0.38l1.51,0.93l1.77,0.23l0.81,0.67l3.18,0.2l0.76,2.06l1.03,0.6l0.02,1.75l1.86,1.11l1.83,0.48l1.96,0.06l4.21,-0.69l2.22,0.99l0.26,1.37l-0.42,3.1l0.54,1.37l0.91,0.84l-1.69,-1.01l-2.59,-0.38l-5.27,-2.14l-4.31,0.92l-4.16,-0.64l-4.53,-0.14l-6.69,-1.16l-4.26,-1.95l-5.75,-1.42l-4.09,-0.29l-1.47,0.35l-0.85,0.62l-3.75,-0.53l-2.7,-1.34l-2.03,-0.56l-6.08,-0.73l-0.14,-0.52l0.74,-1.34l-0.22,-0.54l-4.35,-1.48l-3.17,-0.03ZM654.92,517.5l-2.42,-0.71l0.79,-0.92l1.33,-0.13l6.62,-0.05l0.29,0.26l-0.93,0.28l-0.47,0.51l-1.37,0.03l-1.21,0.72l-2.63,0.02ZM651.59,507.15l0.02,-0.02l-0.0,0.02l-0.01,-0.0ZM629.22,472.23l-1.34,0.69l-0.13,-0.04l0.21,-1.38l1.22,0.14l0.23,0.38l-0.19,0.23ZM618.17,435.89l0.02,-0.02l0.08,-0.01l-0.1,0.03ZM618.38,435.83l0.47,-0.55l-0.28,-0.49l-1.07,-0.29l-0.43,-0.7l1.13,-1.07l1.0,1.28l0.01,0.85l-0.47,0.88l-0.36,0.1ZM613.87,485.59l0.62,-2.31l0.83,-0.17l1.71,0.45l0.91,0.65l0.42,0.73l-0.67,1.89l-0.81,0.66l-1.12,-1.0l-1.46,0.78l-0.43,-1.68ZM601.61,476.32l0.87,1.51l0.39,2.48l1.18,2.07l2.78,0.8l-0.96,2.1l0.31,1.02l-2.53,-1.29l-1.77,-0.49l-0.5,-1.02l0.14,-1.35l-0.58,-0.6l-0.68,-1.84l-1.77,-0.78l-1.76,0.29l-1.15,-0.49l1.64,-1.12l0.11,-1.3l0.47,-0.44l0.59,-0.22l0.69,1.26l0.66,0.02l0.4,-0.54l-0.09,-0.9l0.29,-0.08l0.93,0.17l0.35,0.75ZM530.39,424.92l2.72,-0.33l2.48,0.49l2.53,-0.04l2.62,2.37l0.68,1.61l1.82,1.83l-0.03,1.66l0.5,0.76l2.69,1.32l0.98,1.31l2.78,1.33l4.3,2.95l5.9,7.42l1.3,0.61l1.52,1.27l0.6,-0.39l-0.48,-1.94l0.42,-0.2l0.65,0.22l1.77,1.7l0.75,1.83l0.64,0.64l2.38,0.59l1.69,1.29l0.93,1.25l0.63,2.04l1.23,1.23l0.72,0.54l3.47,0.81l0.66,0.9l-0.25,0.33l-3.29,1.42l-0.26,0.47l0.44,0.31l2.65,-0.48l3.25,-1.74l0.79,0.19l1.35,1.33l0.7,1.44l-2.59,1.79l-0.16,1.25l0.67,0.82l-0.37,0.32l-0.08,0.69l0.83,1.57l1.47,1.03l2.67,1.06l2.12,0.17l1.02,5.6l0.54,0.93l1.88,1.11l-0.1,0.7l-1.34,1.48l0.01,1.56l0.96,0.2l1.38,-1.36l0.89,-0.36l2.6,0.15l1.24,0.75l3.36,4.47l0.08,0.58l-1.14,1.39l-0.45,1.58l0.05,1.0l0.58,0.85l-0.73,2.28l0.4,3.06l0.0,3.37l-0.52,4.94l-0.35,0.75l-0.52,-0.09l-0.7,-0.92l-1.3,-0.93l-0.74,0.12l-1.53,1.25l-3.08,-1.61l-0.57,0.22l-0.16,0.5l0.41,2.14l-3.87,-3.78l-1.82,-2.35l-6.85,-4.58l-2.81,-2.35l-3.04,-4.11l-4.1,-3.23l-1.59,-2.69l-1.88,-1.68l-1.65,-2.44l-0.27,-2.38l-2.75,-4.74l-1.36,-3.58l-3.35,-3.83l-1.51,-2.78l-2.58,-1.27l-1.15,-0.94l-2.67,-8.45l-1.56,-2.88l-3.96,-2.61l-2.73,-1.1l-0.8,-3.58l-1.59,-1.11l-3.15,-4.48l-1.34,-1.07l-2.6,-0.77l-1.59,-1.89l-5.47,-5.13l-2.06,-3.75l0.28,-0.92l-0.16,-0.88l0.93,-0.33l2.34,0.34l2.94,2.12l2.82,0.53ZM599.87,441.75l-0.0,-0.09l-0.01,-0.06l0.07,0.03l-0.06,0.12ZM590.63,465.03l0.37,-0.91l0.85,0.78l-0.91,0.24l-0.31,-0.11ZM593.0,465.4l0.03,-0.01l0.04,0.04l-0.06,-0.03ZM588.93,455.69l0.63,-0.44l1.15,-0.05l0.48,0.5l-0.01,0.7l-0.48,0.59l-0.37,-1.29l-0.46,-0.23l-0.95,0.22ZM589.16,467.04l1.01,-0.3l0.43,0.45l-0.4,0.65l-0.62,-0.01l-0.43,-0.79ZM586.69,455.6l0.28,-0.16l0.2,0.1l-0.19,0.32l-0.3,-0.26ZM583.2,466.09l0.26,-0.26l0.73,0.22l-0.47,0.13l-0.51,-0.09ZM580.69,459.3l0.04,-0.25l0.07,-0.11l0.18,0.35l-0.29,0.01ZM577.43,455.57l0.12,-0.16l1.43,0.67l0.68,0.71l-1.09,-0.85l-1.14,-0.36ZM575.86,455.84l3.0,1.71l0.05,0.24l-3.31,-0.81l0.26,-1.13ZM572.44,452.08l1.35,0.36l-0.78,-0.08l-0.57,-0.28ZM573.94,452.48l0.99,0.27l0.07,0.32l-0.4,-0.32l-0.66,-0.27ZM573.82,453.77l0.81,0.9l-0.12,1.3l-0.51,-0.94l-0.18,-1.26ZM573.27,503.85l0.97,0.44l-0.04,0.13l-0.23,0.01l-0.7,-0.58ZM569.22,448.44l0.36,0.65l-0.35,0.99l-0.59,0.37l-0.51,-0.09l-0.49,-0.96l0.03,-0.67l1.55,-0.3ZM558.51,485.09l1.28,1.34l-0.14,0.64l-1.01,-1.14l-0.13,-0.84ZM556.91,483.15l0.93,0.83l-0.3,0.47l-0.45,-0.01l-0.18,-1.3ZM553.83,479.28l0.22,0.16l0.51,1.03l-0.84,-0.6l0.11,-0.59ZM550.38,476.64l-0.51,0.03l-1.55,-1.07l-1.64,-2.92l0.45,-1.36l1.25,-0.2l1.51,3.63l0.96,1.31l0.02,0.4l-0.48,0.18ZM544.85,467.45l-0.26,0.08l0.72,-1.91l-0.06,0.84l-0.4,0.99ZM537.07,452.74l3.73,3.74l-0.54,2.57l-0.49,-0.11l-0.75,-1.78l-1.43,-0.9l-0.76,-1.62l-1.06,-1.18l0.55,-0.07l0.75,-0.64ZM529.81,445.7l-2.67,-1.77l-1.57,-0.47l-0.46,-0.71l0.65,-0.33l3.82,2.73l0.22,0.54Z", "name": "Indonesia"}, "OM": {"path": "M223.78,281.06l3.38,-0.67l0.29,-0.3l-0.45,-1.47l-1.1,-0.27l0.26,-4.83l0.69,-0.3l-0.25,0.67l1.14,1.14l2.12,-1.71l1.76,3.66l2.12,2.65l1.62,1.38l3.75,1.45l3.82,0.7l1.61,0.75l1.8,-0.16l1.27,0.87l1.96,3.07l2.97,3.68l1.01,0.78l1.88,0.47l-0.19,1.8l-3.17,5.6l-2.23,1.61l-1.3,1.38l-3.11,5.43l-1.27,0.02l0.2,-1.11l-0.45,-0.45l-0.63,0.09l-0.72,0.31l-1.78,2.51l-1.2,4.67l0.69,4.92l-4.45,0.72l-2.69,1.19l-1.36,1.35l-0.86,3.35l-1.11,1.22l-5.59,0.74l-1.26,0.47l-1.68,1.99l-0.21,0.8l0.41,1.01l-1.54,2.31l-1.94,0.51l-1.56,-0.49l-3.77,0.2l-3.53,1.9l-3.58,0.74l-1.98,-4.43l-0.59,-0.39l-5.4,-12.58l22.31,-7.89l4.97,-15.7l-3.38,-5.75l0.09,-2.41l2.31,-5.46l0.18,-0.91l-0.28,-0.81ZM247.35,309.88l0.0,-0.41l0.54,-0.61l-0.3,0.79l-0.24,0.24ZM248.53,308.01l0.2,-0.4l0.07,0.18l-0.27,0.22ZM228.41,263.74l0.31,-0.57l0.82,-0.1l0.38,-0.43l-0.33,3.33l-0.56,1.17l-0.36,-0.22l0.15,-2.76l-0.42,-0.43Z", "name": "Oman"}, "KG": {"path": "M333.84,133.42l1.81,-1.22l1.29,-1.33l1.2,-0.39l0.51,-0.99l2.75,-1.2l0.24,-0.51l-0.33,-0.57l-1.37,-0.73l-0.83,-0.02l0.93,-1.66l1.6,-1.66l3.59,-0.75l3.76,0.58l3.43,1.04l0.93,0.74l3.01,0.46l1.0,0.76l0.75,0.15l0.44,-0.52l-0.5,-1.57l0.95,-3.48l2.24,-1.01l0.53,-0.54l1.34,-0.0l0.6,-0.3l4.25,2.23l4.21,1.31l2.21,0.17l1.38,-1.08l5.05,0.16l3.55,-0.49l1.82,0.55l5.94,0.5l3.66,-0.07l2.7,0.81l1.83,0.02l0.38,0.88l1.76,1.69l3.68,0.64l1.99,1.86l0.2,0.82l-2.73,0.34l-0.69,0.92l-3.46,1.02l-4.15,2.01l-2.87,1.7l-0.29,0.97l-1.48,1.63l-2.25,0.18l-1.64,0.53l-4.35,-0.4l-0.86,0.18l-0.77,0.51l-1.24,1.84l-0.61,1.77l-1.46,1.67l-0.76,-0.52l-2.82,1.09l-1.14,-0.02l-0.54,-2.38l-0.56,-0.45l-3.42,1.52l-1.94,-0.32l-0.64,0.57l0.07,0.85l-0.9,0.24l-1.97,1.51l-3.29,0.96l-1.18,2.16l0.52,1.92l-0.49,0.68l-2.52,0.22l-2.64,0.86l-4.11,-0.13l-1.78,0.47l-0.72,0.87l-1.36,-1.13l-1.83,0.66l-0.31,-1.25l-1.47,-0.33l-0.05,-0.87l-0.65,-0.43l-3.16,1.0l-0.52,0.7l-1.26,0.12l-1.35,-1.46l-0.85,-0.22l-1.88,0.33l-0.56,-0.29l-1.73,0.26l-2.68,-0.18l-1.89,0.39l-0.45,-1.69l0.33,-1.19l1.21,0.22l0.53,-1.61l3.03,-0.86l0.66,0.22l2.71,1.05l0.49,0.78l-0.25,0.76l0.56,0.68l0.65,0.16l0.89,-0.38l0.19,-0.59l-0.27,-0.32l-1.06,-0.21l0.68,-0.5l0.21,-0.75l1.71,-0.69l0.01,0.93l0.46,0.52l-0.18,0.53l0.29,0.52l1.63,0.02l0.33,-0.32l-0.17,-0.81l0.26,-0.43l-0.29,-0.61l-0.9,-0.2l-0.78,-0.86l2.17,-0.26l1.43,0.63l0.91,0.01l0.78,0.5l1.93,-0.92l1.38,-1.61l1.76,0.26l0.46,-0.69l-0.19,-0.66l1.48,0.32l1.4,-1.17l2.73,-1.47l-0.24,-0.8l-3.56,-0.38l-2.13,-1.51l-1.14,0.14l-0.4,-1.32l-1.91,-0.17l-0.64,-1.78l-0.65,-0.42l-0.48,-0.9l-0.93,0.42l-0.15,1.53l-0.73,-0.17l-0.58,0.33l-0.07,1.45l-1.73,-0.13l-1.82,-0.62l-0.41,-0.24l-0.38,-1.21l-0.54,-0.58l-1.68,0.27l-1.78,-0.81ZM345.71,147.85l0.12,-0.51l-0.43,-0.47l-1.23,0.66l0.09,0.46l0.8,0.44l0.65,-0.58Z", "name": "Kyrgyzstan"}, "UZ": {"path": "M235.01,135.19l-0.38,0.4l-7.22,-0.5l-0.01,-32.71l18.68,-5.07l-1.24,2.18l-1.29,3.39l0.43,2.39l-0.39,1.23l0.7,1.14l0.78,0.02l1.18,-0.62l1.48,-2.22l0.55,-0.33l-0.18,-1.56l0.55,-1.23l-0.28,-0.48l-0.7,0.18l0.81,-1.1l-0.46,-0.93l-0.05,-1.12l4.44,2.62l-1.62,3.88l0.88,1.36l2.38,2.12l-0.8,1.35l0.51,0.69l2.08,-0.32l1.06,-0.65l0.04,-0.74l0.85,-0.92l-0.25,-2.44l0.36,-1.11l6.56,3.85l1.11,2.04l6.47,6.3l9.14,-1.24l9.21,0.7l3.4,-1.45l2.55,2.56l1.67,0.98l2.24,3.85l0.51,0.16l1.6,-0.74l-0.63,8.25l0.39,0.41l3.32,0.08l1.24,6.2l0.32,0.86l0.57,0.44l8.82,-0.28l1.03,1.2l-0.43,1.73l0.59,0.83l2.42,1.29l1.4,-0.01l0.52,-0.77l-0.32,-0.99l0.15,-0.68l1.09,-1.4l1.89,-1.48l0.64,-1.48l2.02,-0.94l2.24,-1.63l3.29,-1.36l2.33,-2.27l1.37,0.3l1.01,-1.21l2.11,-0.91l0.93,0.49l-2.53,1.07l-0.44,0.94l-1.23,0.44l-1.34,1.36l-2.01,1.35l-0.2,0.57l0.26,0.52l2.11,0.99l1.62,-0.31l0.55,1.44l0.77,0.57l2.02,0.69l2.03,0.24l0.65,-0.47l0.06,-1.22l1.11,-0.24l0.4,-1.1l0.62,0.37l0.89,2.05l1.85,0.11l0.32,1.36l1.44,-0.1l2.12,1.51l2.97,0.22l-2.11,1.0l-1.2,1.07l-1.66,-0.38l-0.4,0.63l0.2,0.8l-0.82,-0.42l-0.88,0.16l-1.5,1.67l-1.55,0.74l-0.4,-0.41l-0.89,0.03l-1.76,-0.69l-4.82,0.75l-0.78,-1.06l-0.95,-0.31l2.37,-2.04l0.47,-0.8l-0.25,-0.53l-0.5,-0.2l-0.31,-0.85l0.28,-0.59l-0.77,-0.87l-0.64,0.33l-0.71,-0.45l-0.47,0.06l-0.75,1.28l-4.15,1.99l-2.01,-1.2l-0.79,0.29l-0.44,0.45l-0.08,0.91l-0.78,0.89l0.66,1.91l-0.54,0.61l0.12,0.23l-1.83,-0.23l-2.24,0.35l-0.48,0.4l0.13,0.72l1.32,0.17l-0.28,0.55l0.25,0.62l-0.42,0.55l-0.95,0.33l-0.38,1.71l-0.49,0.52l-0.55,0.2l-5.24,-0.78l-1.43,0.63l-0.99,0.99l-0.57,1.96l0.25,0.69l2.09,0.69l0.1,0.82l0.46,0.48l2.06,0.03l0.94,0.36l-0.68,2.1l0.3,1.76l1.99,2.53l-0.76,1.55l-2.87,3.49l-0.41,0.88l-0.12,2.0l-1.76,-0.47l-1.47,0.47l-0.7,-0.17l-1.07,-0.89l-1.91,-0.32l-1.89,0.16l0.06,-3.23l0.78,-1.43l-0.54,-0.95l-1.52,-0.43l-3.17,-1.69l-0.85,-0.21l-1.77,0.28l-7.35,-4.47l-2.31,-1.91l-1.29,0.09l-2.83,-1.72l-1.93,-1.9l-7.31,-4.97l-0.51,-0.65l-0.49,-2.55l-0.61,-1.3l-0.87,-0.74l-0.64,-1.16l-1.1,-3.16l-1.28,-1.31l-2.48,-1.06l-1.9,0.77l-2.81,-0.53l-2.94,0.25l-2.59,-1.5l0.47,-1.53l-0.46,-1.25l0.64,-0.07l0.29,-0.56l-0.78,-1.1l-1.03,-0.46l0.27,-2.1l-1.15,-0.98l-3.9,-0.33l-1.34,-1.62l-2.16,-0.49l-2.12,-1.93l-0.62,0.13l-0.54,0.81l-1.74,-0.18l-0.89,0.6l-0.12,0.44l1.2,1.15l-1.99,-0.33l-0.69,0.68l-0.89,1.97l-1.02,0.19l-0.54,-0.82l-1.18,-0.67l-1.43,0.42l-1.4,3.21l-0.97,1.06l0.41,3.65l0.6,0.81ZM339.66,146.55l0.91,0.56l0.05,0.74l-0.49,-0.01l0.12,-0.53l-0.59,-0.76Z", "name": "Uzbekistan"}, "MM": {"path": "M501.87,308.34l-2.26,-2.73l-1.05,-3.71l0.63,-0.77l1.51,1.13l0.9,0.03l0.33,-0.59l-0.38,-5.03l0.64,-0.95l0.86,0.88l1.08,0.06l0.8,-1.56l0.88,-0.54l0.09,-1.09l-0.62,-2.76l0.58,-1.39l-0.03,-0.73l0.87,-0.01l0.58,-0.69l0.33,-2.1l0.18,-2.73l-0.73,-2.47l0.78,0.52l1.48,-0.24l3.04,1.06l0.73,-0.28l1.24,-3.53l2.17,-3.53l0.94,-2.27l-0.28,-1.07l-0.85,-0.49l0.17,-0.6l0.54,-0.94l0.93,-0.53l1.22,-1.47l0.58,-1.77l0.83,-0.97l-0.54,-2.69l0.49,-1.72l2.44,-1.24l3.25,-2.3l1.21,-1.39l0.86,-0.31l3.81,-0.56l1.57,1.55l1.42,0.2l0.31,-0.38l-0.06,-0.62l-1.47,-2.17l-0.16,-0.97l0.5,-0.65l2.83,-1.98l-0.02,-2.36l1.48,-2.18l0.46,0.06l0.7,1.04l1.0,0.12l1.42,1.56l1.51,4.79l0.65,0.32l0.41,-0.14l0.5,-0.79l1.08,0.52l0.63,6.78l-0.41,4.04l-0.56,0.28l-0.34,0.65l0.68,1.61l-1.38,0.54l-0.91,1.5l-0.85,-0.14l-0.57,0.27l-1.0,2.23l-1.52,0.44l-0.83,1.9l0.14,1.26l-1.1,0.7l-0.4,1.14l-0.01,1.25l1.02,1.05l0.29,1.08l-0.09,0.56l-0.85,1.05l-0.12,0.85l0.97,0.6l2.95,-1.43l1.39,-0.34l2.03,-0.04l0.79,0.35l0.91,-0.25l-0.5,0.55l-0.18,1.14l1.11,1.71l-0.19,1.0l0.59,1.0l-0.14,1.34l0.27,0.45l3.62,0.77l0.88,0.49l-0.78,1.01l-0.41,1.19l-0.02,1.49l-1.22,2.41l0.2,0.88l5.52,0.9l0.07,1.97l0.5,0.62l0.65,0.23l0.22,1.16l0.92,0.49l1.14,-0.27l1.21,0.31l0.84,-0.13l1.79,-1.47l1.57,-0.69l0.12,0.86l-0.39,0.69l-2.43,1.24l-0.4,0.48l-0.39,1.03l-0.95,1.18l0.11,1.06l-1.42,0.17l-0.71,0.59l-0.99,2.9l-1.37,-0.61l-1.41,0.77l-2.17,-0.17l-0.16,0.52l0.31,1.19l-0.81,0.38l-1.0,-0.28l-1.17,0.21l-0.5,0.57l-0.59,1.91l-3.95,0.64l-0.85,-0.01l-1.03,-0.56l-0.98,0.16l-0.33,0.86l-1.35,1.68l-0.11,2.5l-0.72,1.6l0.34,2.47l-1.49,0.55l-0.93,-0.17l-0.39,0.51l0.69,1.42l0.55,0.49l0.63,0.07l0.73,1.76l0.01,2.02l5.42,6.28l0.27,1.82l1.46,3.22l0.73,0.21l0.84,-0.59l-0.39,0.92l-1.82,1.25l-0.22,5.02l-0.66,0.03l-2.01,1.22l-0.22,0.78l0.18,1.31l0.4,1.41l2.42,3.46l2.76,2.42l1.43,2.38l0.28,3.46l-0.48,0.95l0.1,0.8l0.73,2.25l1.35,1.44l0.46,2.72l1.12,3.05l-0.96,1.03l-2.14,3.82l-3.26,3.39l0.03,1.89l-0.44,1.56l-0.67,0.72l0.06,-1.69l-0.4,-2.26l1.49,-2.26l0.57,-2.2l-0.01,-2.49l0.82,-0.74l-0.02,-0.69l-0.92,-0.45l-0.71,0.36l0.44,-1.37l0.03,-1.9l-0.53,-0.52l0.37,-0.74l-0.31,-0.53l0.25,-1.66l-0.66,-3.84l-1.23,-2.64l-1.24,-1.8l-0.14,-1.67l-0.29,-0.35l-0.7,0.2l-0.05,0.34l0.04,-1.87l-0.73,-1.27l-0.52,-1.99l0.6,-0.05l0.02,-0.49l-1.47,-1.44l-0.76,-7.75l-0.91,-1.16l0.39,-1.7l-0.05,-1.47l0.64,-1.12l-0.47,-0.2l-2.21,0.33l-1.14,-2.55l-0.24,-1.78l-1.72,-1.71l-0.89,-0.65l-0.49,0.01l-0.12,0.47l0.32,0.63l-0.34,0.87l0.38,1.18l-0.96,2.24l-0.99,1.04l-1.18,0.38l-0.79,-0.51l-0.41,-1.44l-0.79,-0.04l-0.23,0.5l0.87,2.31l-1.72,0.47l-0.36,0.71l-1.73,0.6l-0.85,1.65l-1.91,1.73l-0.12,-0.68l0.43,-0.98l-0.13,-0.86l-0.39,-0.34l-1.43,2.06l-1.33,0.03l-0.25,-2.39l-0.34,-0.35l-0.43,0.25l-0.35,1.13l-0.66,0.53l0.47,-3.19l-0.13,-0.93l-0.38,-0.31l-0.4,0.29l-0.28,1.27l-1.6,1.76l-0.96,0.53l0.36,-3.3l0.61,-0.99l0.91,-3.82l0.66,-1.3l0.21,-2.27l-0.71,-2.01l-0.47,-2.85l-1.68,-3.76l0.29,-0.25l-0.15,-0.42l-1.16,-0.97l-0.18,-2.93l-0.62,-0.3l0.17,-1.18l-1.22,-0.77l-0.64,-1.12l-0.81,-0.55l0.51,-0.72l-0.32,-0.65l-0.8,0.02l-1.26,-0.97l-1.31,-0.28l-0.87,0.25l-0.16,0.86l-0.41,-0.72l0.51,-0.56l-0.36,-0.73l0.26,-0.99l-0.35,-0.61l-0.66,0.19l-0.12,0.44l-0.32,0.57l-0.2,-1.16l-1.2,-1.37l-0.61,0.47l0.15,0.71ZM511.54,317.64l-0.59,1.02l0.13,1.32l-1.21,-0.74l-1.27,-2.11l0.87,0.82l0.88,0.31l1.18,-0.61ZM503.54,309.93l-0.24,0.32l-0.03,-0.02l0.15,-0.21l0.13,-0.09ZM545.29,376.32l-0.21,-0.96l0.34,-0.03l-0.06,1.01l-0.07,-0.02ZM544.52,369.1l0.3,0.29l-0.24,0.63l0.04,-0.45l-0.1,-0.47ZM538.23,340.2l-0.05,-0.68l0.11,-0.08l0.04,0.12l-0.1,0.65ZM509.61,315.91l1.12,0.49l0.2,0.28l-0.64,0.23l-0.68,-1.0ZM509.32,321.7l-0.47,-0.39l-0.2,-0.27l0.82,0.06l-0.15,0.6Z", "name": "Myanmar"}, "SG": {"path": "M585.95,453.53l-0.64,0.28l-0.67,-0.24l0.65,-0.28l0.66,0.24Z", "name": "Singapore"}, "KH": {"path": "M574.51,361.92l1.66,-0.41l0.12,-0.61l3.37,-4.31l3.71,-1.2l3.21,0.46l5.93,-0.52l1.08,0.34l0.57,1.07l0.57,0.1l0.63,-0.48l1.18,1.3l1.61,-0.24l1.3,0.45l1.26,1.22l1.44,0.1l0.37,-0.24l0.45,-1.27l-0.97,-1.85l1.11,-0.15l0.48,-0.66l0.95,0.03l0.88,-0.67l2.44,1.8l2.36,-0.87l1.16,-1.19l0.89,0.17l-0.8,1.05l-0.24,1.95l2.04,5.15l-0.97,3.16l0.51,2.51l-0.03,1.91l-0.66,0.91l-0.49,-0.33l-1.01,0.13l-2.18,1.73l-1.13,0.17l-0.63,0.58l-2.02,0.22l-0.32,0.43l-0.03,1.57l-2.6,-0.56l-1.56,1.19l0.08,2.96l2.22,1.94l-0.12,1.13l-0.94,-0.53l-0.65,0.09l-0.64,-0.81l-0.81,-0.16l-2.31,0.37l-0.59,0.64l-2.19,-0.27l-0.28,0.53l0.26,1.06l-1.38,1.2l-1.93,0.08l-0.92,0.75l-1.07,-0.86l-2.44,-0.4l-0.61,-0.53l-1.67,1.04l-0.56,-0.58l1.05,-0.75l0.31,-1.0l-0.63,-1.7l-0.96,-0.7l-0.49,0.05l-1.25,1.62l-1.01,0.05l-0.36,-1.87l0.15,-2.16l-0.77,-0.87l-0.14,-1.03l-0.42,-0.48l-0.35,0.04l-1.16,-2.31l-0.2,-1.12l0.28,-1.55l-1.85,-1.81l-0.28,-2.48l-0.98,-2.09l-0.07,-1.62Z", "name": "Cambodia"}, "CY": {"path": "M52.44,189.37l1.85,0.77l2.04,-0.71l1.37,0.09l0.52,1.29l1.4,-0.11l-1.77,1.53l-2.23,0.47l-0.92,0.87l-0.57,-0.55l-1.44,0.04l-1.81,-0.89l-0.72,-1.76l2.3,-1.04ZM61.14,190.36l0.36,-0.24l0.39,0.2l-0.02,0.0l-0.74,0.04Z", "name": "Cyprus"}, "QA": {"path": "M191.62,275.3l-1.7,0.32l-0.94,-0.72l-0.29,-0.65l0.27,-0.89l-0.68,-3.97l1.8,-4.45l1.49,-1.1l1.85,1.74l0.16,0.7l-0.61,2.21l0.9,3.61l-1.28,2.84l-0.98,0.35Z", "name": "Qatar"}, "KR": {"path": "M753.99,193.32l1.41,0.11l0.77,-1.18l-0.16,-0.67l-1.06,0.07l-0.87,-2.37l1.33,-2.74l0.95,-0.67l-0.16,-0.61l-0.43,-0.18l1.23,-0.79l0.46,-1.12l-0.69,-0.79l0.15,-0.9l-1.0,-1.05l0.03,-2.59l-0.46,-1.89l-0.52,-0.32l-0.69,0.31l-1.16,-0.29l-0.06,-0.26l0.32,-0.64l1.87,-1.06l1.8,0.49l0.69,1.02l0.63,-0.26l0.75,-0.88l-0.05,-0.43l-0.86,-0.41l-0.49,-0.88l-0.24,-0.71l0.21,-1.04l-0.97,-1.25l-0.02,-0.95l-0.61,-1.14l0.73,-0.78l0.02,-0.84l2.94,-3.01l7.06,-0.2l1.16,-0.57l1.11,-1.88l1.63,3.45l3.24,4.33l2.09,3.42l0.59,1.76l0.4,2.63l-0.59,3.62l0.08,2.32l0.41,0.65l0.8,-0.05l-1.07,3.98l-1.43,2.52l-1.54,0.6l-3.68,0.07l-0.8,0.84l0.15,1.0l-1.97,-0.42l-0.36,-0.62l-0.82,-0.17l-2.72,1.01l-0.15,0.64l0.66,0.86l-0.22,0.18l-0.9,-1.18l-1.06,0.16l-0.38,0.99l0.54,1.03l-0.65,0.91l-0.63,-0.39l0.57,-0.75l0.01,-0.74l-0.76,-0.42l-1.62,1.25l-0.93,1.29l-0.72,-0.54l-0.43,0.06l-1.2,1.11l-0.35,-0.97l-1.31,-1.11ZM771.49,190.93l0.08,1.06l-0.29,0.22l-0.66,-0.49l0.86,-0.78ZM765.7,192.18l0.1,-0.56l0.61,0.23l0.08,0.65l-0.79,-0.32ZM753.88,205.05l-0.4,0.13l-0.34,-0.44l1.03,-0.9l2.57,-0.72l1.17,0.22l-0.17,0.82l-1.1,0.52l-2.75,0.38ZM754.66,166.8l0.29,0.31l-0.02,0.58l-0.05,-0.07l-0.22,-0.82ZM752.75,195.37l0.75,-0.75l0.33,0.12l-0.79,0.68l-0.29,-0.06Z", "name": "Korea"}, "KP": {"path": "M739.6,147.16l0.14,-0.66l3.53,-2.94l0.73,-0.05l0.7,-0.77l2.64,-1.04l1.79,-1.14l0.46,-0.63l2.08,-0.45l3.82,-4.13l0.8,-2.45l0.81,-0.6l1.35,-0.45l1.79,2.16l2.94,0.69l2.65,-0.05l1.43,0.64l0.6,-0.11l1.12,-1.65l0.03,-0.6l-1.93,-3.06l6.28,-0.39l2.31,-1.74l0.26,-0.98l0.6,-0.76l0.46,-0.12l0.94,0.46l1.56,-0.74l1.33,-4.79l1.16,0.23l0.9,0.63l0.05,1.25l0.9,1.09l1.06,0.61l1.01,1.58l0.03,0.25l-1.33,-0.07l-1.59,1.03l-0.54,0.84l-1.29,0.97l-1.02,1.7l-0.93,0.9l-0.57,1.22l-0.03,0.9l0.62,1.68l-0.39,1.55l0.05,2.17l-2.69,1.16l-1.75,2.08l-2.92,1.48l-1.5,1.69l-1.47,0.78l-2.52,0.37l-0.87,0.93l-2.36,1.18l-0.33,0.96l0.16,1.96l-0.92,0.66l-0.24,1.65l3.07,1.36l1.43,1.65l2.59,1.82l-0.83,1.83l-0.7,0.63l-7.56,0.36l-0.78,0.49l-2.53,2.77l-0.15,0.99l-1.95,-0.73l-1.25,0.43l-0.37,0.46l-0.62,-0.84l-0.69,-0.03l-1.57,-0.95l-0.56,0.2l-1.0,1.37l-0.98,0.69l-0.68,-1.04l-1.65,-0.42l1.24,-0.68l0.08,-0.69l-0.74,-0.38l-2.63,-0.13l0.57,-0.37l0.23,-1.18l1.23,-1.65l1.71,-0.89l1.78,-0.17l0.16,-0.72l-1.08,-0.59l-0.97,0.01l-0.74,-0.65l1.87,-3.69l-0.37,-2.17l-0.26,-0.33l-1.97,-0.58l-2.32,-1.41l-0.69,0.12l-0.28,0.95l-0.54,-1.23l-1.46,-0.96l0.07,-0.75Z", "name": "Dem. Rep. Korea"}, "KW": {"path": "M167.69,235.06l-0.94,-0.06l-1.81,1.62l-0.16,0.46l0.3,0.43l2.23,0.19l0.93,2.92l1.65,3.04l-4.92,0.07l-1.91,-3.71l-5.99,-0.78l2.32,-3.08l1.56,-3.47l0.65,-0.51l3.13,-0.41l1.92,0.77l1.03,2.52ZM168.51,233.33l0.2,-0.32l0.75,1.05l-0.02,0.41l-0.58,0.53l-0.55,-1.16l0.2,-0.51Z", "name": "Kuwait"}, "KZ": {"path": "M172.6,48.91l0.9,0.03l3.88,-2.48l1.29,-2.26l2.33,-0.47l3.78,-1.94l3.63,-3.95l2.37,0.74l0.63,0.42l0.18,0.79l0.68,0.55l2.22,-0.14l2.95,-1.86l1.41,-0.32l0.62,0.21l1.14,1.57l0.7,0.43l1.96,-0.09l1.71,0.31l2.14,-0.2l1.31,0.73l1.23,1.52l2.02,0.91l1.27,1.11l2.02,2.46l0.45,2.04l0.86,0.61l0.55,-0.18l0.52,-0.7l0.01,-2.02l-0.64,-1.53l0.32,-0.24l2.51,1.3l2.63,2.04l2.58,0.87l1.09,-0.23l1.92,-1.12l0.81,-1.36l2.35,-1.56l1.04,0.32l2.77,-0.8l1.08,0.25l2.19,1.49l1.71,-0.39l1.32,-1.6l3.67,0.24l1.29,0.84l2.53,2.74l4.39,0.81l0.18,0.98l0.58,0.27l2.31,-0.95l1.57,-2.53l1.48,1.33l1.19,0.33l1.74,0.16l2.36,-0.33l2.13,-0.78l1.45,-1.06l1.44,-3.61l-0.18,-1.24l-1.75,-1.46l-2.4,-0.46l-0.47,-0.47l-3.68,-1.1l-0.59,-1.19l-2.45,-1.29l2.68,-1.56l1.87,-0.28l2.52,-1.96l-0.1,-1.05l-1.45,-2.62l1.84,-2.62l2.4,-0.21l4.25,0.52l1.19,-0.76l0.08,-0.8l-0.76,-0.88l-2.56,-1.18l-3.42,-0.64l0.2,-0.91l1.93,-0.37l0.51,-0.66l-0.13,-0.57l-0.65,-0.52l-1.74,0.28l-1.53,-0.53l0.84,-0.91l0.25,-2.16l0.51,-0.45l0.58,-0.23l4.51,1.03l0.91,-0.57l3.3,-0.1l1.14,-0.59l3.19,-0.36l0.96,-0.67l3.77,-0.75l1.12,0.06l2.66,-1.15l1.79,-0.35l1.52,0.31l1.98,-0.42l1.43,0.51l0.73,-0.49l0.53,-1.42l1.64,-0.98l1.56,0.04l1.46,-0.68l0.42,0.25l2.01,-0.08l4.05,-0.74l7.0,-1.39l1.13,-0.75l2.4,-0.34l0.91,-0.99l-0.15,-1.07l1.96,-0.31l1.56,-1.14l1.81,-0.78l3.75,0.33l5.15,2.03l1.1,-0.26l1.4,-1.0l1.59,-0.2l1.09,1.6l2.0,5.33l-0.22,2.29l-0.68,0.98l0.51,1.11l1.97,0.57l4.11,-0.64l0.78,0.15l0.73,-0.32l0.6,-0.87l1.2,1.76l0.14,1.58l0.48,0.49l0.43,0.03l1.22,-0.77l-0.04,-1.15l1.95,0.25l1.45,1.23l1.06,0.33l1.3,-0.08l1.86,-1.02l-0.1,0.73l-1.95,1.12l-0.92,1.37l-0.1,1.36l0.6,1.33l0.56,0.4l0.83,-0.3l1.25,-1.06l1.43,-0.39l2.39,0.39l1.44,0.92l0.59,-0.38l0.33,-1.35l2.69,-1.72l1.54,0.01l1.42,-0.75l1.17,-0.78l0.38,-1.17l1.89,-0.27l4.3,-2.03l1.77,-0.27l1.82,-0.97l-0.98,2.17l-1.56,-0.06l-0.41,0.4l0.55,1.55l0.79,0.92l8.43,5.75l1.1,1.06l4.59,6.36l5.04,7.73l6.5,11.03l0.6,0.16l0.5,-0.35l0.09,-0.58l0.86,-0.62l1.5,-0.34l0.42,-0.72l-0.09,-1.71l1.85,-0.96l0.89,0.1l0.79,0.91l0.93,0.01l-0.46,1.28l0.16,0.85l0.65,0.27l1.62,-0.15l0.32,1.74l0.56,0.45l3.42,-0.26l1.35,0.54l3.1,-0.2l0.97,-0.49l0.98,-1.1l1.82,-0.04l1.15,-0.91l1.29,-0.05l2.57,1.01l1.58,1.03l1.67,2.39l0.61,2.25l0.59,0.64l2.26,0.45l1.67,1.05l0.97,0.21l0.07,1.51l1.98,2.96l5.14,0.63l0.59,0.53l1.47,0.0l3.64,-2.68l-0.67,0.96l0.01,0.79l1.47,0.91l1.45,1.98l2.0,1.07l-2.66,0.15l-1.2,0.9l-0.36,3.14l-1.13,1.45l-6.08,1.5l-0.96,1.82l-0.76,2.8l0.45,4.09l0.61,1.53l-0.07,0.57l-1.1,1.62l-1.93,0.31l-2.97,1.82l-0.39,-0.9l-0.63,-0.4l-2.48,-0.23l-2.39,0.24l-2.17,-0.46l-4.68,-1.78l-0.74,0.25l-0.61,2.3l-3.13,7.56l-1.83,5.41l0.31,1.09l1.95,0.76l0.03,0.93l-0.52,1.22l-1.62,-0.86l-2.46,0.52l-0.88,-0.45l-0.34,-0.87l-0.92,-0.39l-6.12,1.99l-1.69,0.04l-4.31,1.11l-1.6,1.24l0.06,0.82l0.97,0.62l2.04,-0.05l1.07,0.43l-0.38,0.34l-0.41,2.18l0.14,3.17l2.24,5.03l0.35,1.1l-0.24,1.1l0.87,1.41l-1.02,-0.13l-1.69,0.77l-0.34,0.96l0.72,0.7l-1.42,0.56l-0.57,0.78l-0.33,1.2l0.71,3.27l-2.01,-1.79l-3.53,-0.57l-2.33,-2.68l-1.92,-0.03l-2.75,-0.82l-3.74,0.06l-5.84,-0.49l-1.92,-0.56l-3.62,0.5l-5.04,-0.17l-0.64,0.18l-0.91,0.93l-1.89,-0.19l-4.02,-1.25l-4.54,-2.38l-0.73,0.39l-1.36,-0.01l-3.25,1.86l-1.12,3.91l0.33,1.19l-0.86,-0.69l-3.16,-0.51l-0.81,-0.69l-3.56,-1.08l-3.49,-0.6l-2.34,0.48l-0.84,-0.12l-1.24,0.45l-1.88,1.87l-1.05,1.86l0.09,0.95l-1.3,0.47l-0.89,1.12l-0.6,-0.38l-0.76,0.09l-2.43,2.34l-3.9,1.67l-1.56,1.26l-2.24,1.13l-0.61,1.47l-1.85,1.44l-1.2,1.53l-0.29,1.22l0.32,0.85l-0.38,0.14l-1.35,-0.38l-1.57,-1.14l0.45,-1.71l-1.39,-1.84l-9.18,0.12l-1.51,-7.1l-0.39,-0.35l-3.27,-0.08l0.67,-8.49l-0.57,-0.39l-1.9,0.88l-2.11,-3.62l-1.8,-1.1l-2.72,-2.7l-1.13,0.14l-2.67,1.26l-9.15,-0.69l-8.97,1.25l-6.08,-6.05l-1.18,-2.1l-7.01,-4.12l0.16,-4.09l-0.32,-2.03l-0.55,-0.81l-1.7,-0.05l0.79,-2.36l4.16,0.6l3.04,-2.59l2.71,-1.03l0.78,-1.31l0.09,-0.76l-0.31,-0.59l-3.08,-0.71l-0.31,-1.74l-0.64,-0.6l-0.91,-0.15l-0.5,0.03l-0.32,0.58l1.13,0.99l-0.33,0.23l-1.16,-0.19l-0.4,0.28l-0.45,-0.86l-0.82,-0.28l-1.65,0.88l-0.66,1.3l0.28,0.84l0.66,0.56l2.26,-0.05l1.37,0.79l1.08,-0.56l0.53,1.15l-0.81,0.93l-4.22,-0.5l-1.77,0.48l-0.37,-2.0l-2.18,-0.48l-0.35,0.74l1.13,1.75l0.17,0.88l-0.58,1.96l-0.93,0.41l-0.51,-0.21l-0.53,0.4l-0.13,-0.6l0.7,-1.38l-0.33,-0.61l-0.63,-0.13l-0.95,0.42l-1.25,-0.14l-2.13,1.31l-0.9,2.61l-19.46,5.2l-0.29,0.39l0.01,32.99l-2.83,0.53l-0.57,-0.2l-1.35,-1.41l-2.96,-4.54l-1.41,-1.09l-4.37,-2.37l-3.36,0.36l-4.75,1.36l-1.5,0.85l-2.33,2.04l-0.09,-2.01l1.15,-2.89l0.17,-1.24l-0.41,-2.16l-0.95,-0.67l-1.69,0.1l-0.71,-0.56l-1.98,0.04l-2.08,-2.59l-2.26,-0.17l0.03,-2.63l-1.79,-2.47l-1.73,-4.01l-1.3,-0.88l-2.65,-0.56l-0.35,-0.85l0.23,-0.83l0.64,-0.3l3.16,-0.04l2.45,1.17l3.15,-0.49l-0.43,-0.87l-1.43,-0.45l-2.03,-1.99l0.08,-0.75l1.54,-1.3l1.11,-2.04l0.9,0.09l1.37,-0.5l5.13,-0.05l3.59,0.79l2.3,-0.12l0.16,-0.7l-2.99,-1.97l1.93,-3.52l0.7,-2.09l-0.18,-2.25l-0.32,-0.62l0.75,-1.88l-0.81,-1.87l-1.25,-1.02l-3.38,-0.4l-2.67,1.51l-1.0,-0.67l-1.73,-0.26l-1.03,-0.92l-3.56,-0.77l-2.01,0.69l-2.49,1.47l-1.33,0.11l-3.84,2.59l-4.01,0.71l-0.31,0.81l-0.94,0.66l-4.0,-1.89l-0.55,-0.56l0.02,-0.42l0.32,-0.14l1.13,0.48l1.1,0.05l0.75,-0.51l0.02,-0.71l-3.06,-5.19l-2.97,-3.78l-0.64,-0.44l-4.69,-0.56l-1.42,0.55l-1.14,-1.56l0.18,-1.65l-0.51,-1.3l-0.62,-0.61l-2.35,-1.11l-0.32,-1.28l0.65,-2.06l1.91,-2.2l0.57,-1.21l-0.2,-0.85l-1.49,-1.44l0.62,-2.97l0.71,-1.41l2.29,-2.06l0.24,-2.1l1.15,-1.1l1.13,0.2l3.84,4.33l0.94,0.79l1.03,0.29l2.46,-0.98l0.83,-1.02l-1.33,-5.63ZM248.32,97.54l1.41,-1.65l0.64,-0.08l0.28,-0.6l1.51,1.9l0.45,2.98l-4.3,-2.54ZM201.9,97.61l0.06,0.13l-0.08,-0.1l0.02,-0.02Z", "name": "Kazakhstan"}, "SA": {"path": "M67.56,247.08l1.06,-2.61l1.21,-6.57l8.14,1.18l3.22,-2.48l1.76,-2.79l5.69,-1.31l1.39,-2.79l2.37,-1.31l0.11,-0.62l-7.19,-7.71l14.36,-3.99l1.39,-1.04l8.92,1.5l12.67,7.05l19.68,15.46l12.58,1.15l1.36,-0.26l6.48,0.83l0.99,2.68l0.74,0.93l5.85,0.06l1.24,3.08l1.36,1.9l0.02,1.54l0.92,0.84l1.96,0.85l-0.09,0.58l1.74,2.09l1.07,0.33l1.25,1.48l2.47,1.51l-0.38,0.48l0.15,1.27l1.23,1.15l0.15,0.54l-0.3,1.16l-0.68,-0.02l-0.35,0.56l1.61,4.02l1.62,1.6l0.79,2.71l2.88,4.0l1.44,0.3l1.24,-0.31l0.58,0.29l-0.56,1.24l0.27,0.54l1.64,0.42l0.26,1.52l7.21,9.07l19.35,2.6l0.62,-0.35l3.01,4.88l-4.85,15.33l-22.24,7.7l-22.07,3.25l-6.65,3.39l-4.44,5.48l-1.05,2.59l-1.98,1.12l-0.97,-0.04l-2.04,-2.41l-3.15,0.26l-5.76,-0.54l-2.94,-0.97l-7.47,0.22l-1.72,0.54l-1.36,-0.25l-1.4,-1.05l-1.17,-0.12l-1.94,1.53l0.2,0.75l-0.46,0.41l-0.3,2.08l0.52,1.22l-0.09,0.47l-2.09,2.0l-0.74,-2.32l-2.34,-2.97l-0.72,-2.45l-4.07,-3.48l-1.74,-2.75l-0.63,-1.61l-1.43,-1.65l-0.88,-3.14l-2.67,-5.22l-1.18,-0.68l-1.03,-1.34l-3.01,-2.12l-1.56,-0.27l-1.05,-0.68l-3.32,-4.48l-1.26,-2.42l0.36,-1.64l-1.18,-2.86l0.78,-3.89l-0.25,-1.73l-0.41,-1.31l-0.77,-0.8l0.17,-0.38l-1.0,-1.2l-0.69,-2.03l-1.87,-3.31l-1.37,-1.63l-2.72,-2.14l-0.88,-0.15l-0.94,-0.69l-1.05,-0.1l-2.46,-3.84l0.54,-1.19l-0.93,-2.77l-1.71,-2.8l-1.2,-0.94l-0.59,-2.11l-1.27,-0.76l-1.95,-3.81l-3.0,-3.86l-0.72,-1.58l-1.32,-1.36l-1.19,-2.44l-1.82,-2.44l-1.05,-0.58l-2.95,-0.27ZM121.15,336.6l0.4,-0.33l0.04,0.83l-0.42,-0.42l-0.03,-0.07Z", "name": "Saudi Arabia"}, "MY": {"path": "M641.05,446.05l0.71,0.36l0.8,-0.15l0.31,-0.63l-0.05,-1.52l1.13,-1.14l8.26,-1.87l2.45,-1.08l3.07,-4.07l3.61,-3.82l0.56,-2.37l1.04,0.65l0.74,1.61l0.77,0.18l1.45,1.69l0.83,-0.12l1.04,-1.16l0.49,-1.72l-0.65,-2.41l1.27,-0.83l0.6,3.28l1.34,0.6l0.79,-0.16l0.23,-0.69l-1.05,-3.38l1.72,-0.53l1.0,-0.99l0.28,-0.89l-0.2,-0.46l-0.76,-0.4l-0.24,-0.75l0.85,-0.95l1.6,0.28l0.86,-0.69l1.46,-2.15l0.59,-1.82l2.63,-2.91l1.82,-3.25l0.07,1.03l-0.4,1.27l0.42,0.49l1.23,-0.56l1.41,-2.12l0.39,0.11l0.49,1.95l2.54,1.44l0.3,1.12l-0.58,0.84l0.21,1.26l-1.06,1.1l0.45,0.27l2.37,-0.42l1.26,-0.69l0.4,0.75l-1.28,0.7l0.39,0.84l0.8,0.12l1.71,-0.81l0.54,0.09l1.09,0.52l0.73,1.09l2.73,1.23l1.7,0.01l0.25,0.23l-0.17,1.1l-2.14,0.94l-1.73,0.42l-2.17,-0.4l-1.23,0.45l-0.5,1.64l1.11,1.27l1.74,1.22l-0.31,0.37l-3.61,0.82l-2.24,-0.68l-0.65,0.38l-0.47,0.91l-1.98,-0.95l-1.4,-0.29l-4.28,-0.24l-0.9,0.41l-1.26,-0.36l-1.67,0.49l-0.93,-0.39l-0.65,0.17l-1.34,1.23l-0.86,2.06l-0.01,3.59l-0.75,2.89l-1.52,0.08l-1.28,1.48l-0.09,1.78l0.74,0.64l-2.9,2.03l-0.23,0.94l0.5,1.26l-0.87,0.78l-1.12,2.74l-1.0,-0.3l-3.61,0.49l-1.97,1.43l-0.64,-0.42l-3.69,-1.0l-0.07,-0.54l-0.57,-0.44l-3.66,0.03l-2.38,0.96l-0.86,2.2l-1.16,0.28l-0.79,0.7l-2.19,0.08l-3.0,-0.4l-4.31,1.39l-5.53,-4.81l-0.52,-0.59l-0.12,-1.09l-0.67,-0.63l0.15,-0.41l0.53,0.81l2.05,1.09l2.87,0.04l2.35,1.25l1.7,0.14l1.46,0.96l1.09,0.05l0.35,-0.32l-0.2,-0.43l-1.23,-0.89l0.83,-1.07l0.2,-1.39l0.73,-1.77l-0.46,-0.71l0.0,-1.02ZM684.91,409.61l0.41,-0.56l0.41,-0.05l-0.11,0.45l-0.71,0.16ZM560.8,415.59l1.25,-0.03l0.88,1.55l1.37,0.16l0.1,1.64l-0.72,1.49l1.08,1.33l0.76,0.04l0.91,-1.13l1.92,-0.77l0.73,0.88l1.24,0.0l0.78,-0.51l0.47,-1.13l0.82,-0.81l0.26,-0.92l1.31,0.38l1.47,2.32l4.16,3.36l2.32,4.07l0.27,1.27l0.11,2.01l-0.8,4.74l0.67,1.89l-0.05,4.51l0.79,1.27l2.02,1.44l3.01,6.32l0.41,2.01l-0.51,-0.09l-0.34,-0.92l-1.12,-0.76l-0.17,1.27l-1.91,0.01l-1.28,0.88l-0.97,-1.56l-4.68,-2.31l-1.38,-1.41l-2.98,-1.53l-2.64,-2.36l-2.02,-0.89l-1.43,-1.29l0.34,-0.91l-0.49,-2.0l-4.16,-5.01l0.43,-0.68l-1.32,-2.52l-0.02,-2.17l-1.05,-2.92l-0.88,-3.99l-0.08,-3.02l-1.65,-3.37l0.29,-1.42l0.84,0.97l1.64,0.62ZM558.59,423.72l0.04,-0.52l0.15,0.07l-0.19,0.45ZM554.87,416.01l0.61,-0.22l0.15,0.23l-0.64,0.21l-0.12,-0.22Z", "name": "Malaysia"}, "YE": {"path": "M210.22,368.93l3.31,-0.15l1.6,0.56l-2.1,0.96l-2.93,0.3l-0.74,-0.15l-1.64,-1.15l1.07,-0.91l1.43,0.54ZM128.17,348.79l0.44,-0.21l0.08,-0.52l-0.6,-2.52l0.88,-2.78l-0.26,-2.55l2.7,-2.53l0.16,-1.06l-0.5,-1.03l0.13,-1.2l0.71,-1.07l-0.29,-0.74l0.95,-0.8l1.11,-0.07l1.35,1.04l1.75,0.31l1.77,-0.56l7.3,-0.22l2.88,0.97l5.8,0.55l2.98,-0.27l1.72,2.26l1.74,0.18l2.31,-1.32l1.14,-2.71l4.35,-5.36l7.46,-3.52l20.53,-2.86l5.51,12.84l0.6,0.39l1.9,4.24l-3.44,1.26l-1.95,1.39l-0.81,1.14l-0.47,1.65l0.32,2.18l-4.38,2.32l-4.33,1.48l-3.64,0.78l-2.72,1.43l-1.96,0.18l-4.21,1.47l-2.35,1.44l-0.94,1.48l-1.79,1.54l-2.77,0.39l-2.36,-0.34l-2.76,1.51l-1.63,1.45l-4.57,1.47l-6.42,0.52l-2.01,0.43l-2.12,2.11l-1.79,0.61l-0.9,1.3l-1.82,0.34l-1.28,-0.34l-2.53,1.26l-1.88,0.27l-2.61,-1.01l-0.88,0.19l-0.1,-0.73l-1.76,-3.14l0.35,-3.27l-0.45,-1.43l-0.97,-1.04l0.01,-1.45l-1.28,-4.7l0.07,-0.99l-0.57,-1.41l-0.93,-0.61Z", "name": "Yemen"}}, "height": 555.5409752358405, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-au-mill.js b/plugins/jvectormap/jquery-jvectormap-au-mill.js new file mode 100644 index 0000000..b3af009 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-au-mill.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'au_mill',{"insets": [{"width": 900, "top": 0, "height": 825.8587272481366, "bbox": [{"y": 1031999.3824222308, "x": 12576510.61983689}, {"y": 5192718.429891739, "x": 17110757.239958208}], "left": 0}], "paths": {"AU-ACT": {"path": "M794.2,620.06l-0.74,-0.7l-0.09,-0.95l-0.36,-0.43l0.22,-1.71l-0.27,-2.16l0.77,-2.93l-0.05,-0.84l6.7,-4.73l1.06,0.71l0.19,1.03l1.04,0.47l0.25,0.8l3.09,1.34l-0.61,0.33l-1.7,-0.25l-0.96,0.77l-0.84,-0.15l-1.45,1.71l-0.17,1.19l0.29,1.03l-0.43,1.37l-0.65,0.31l-0.33,0.73l0.4,2.65l-0.21,1.28l0.21,1.77l-1.05,1.68l-2.23,-1.11l-0.91,-3.56l-0.69,-0.11l-0.47,0.47Z", "name": "Australian Capital Territory"}, "AU-WA": {"path": "M6.6,387.61l0.55,0.12l0.14,0.51l-0.53,-0.45l-0.17,-0.19ZM7.72,388.83l0.24,0.12l0.33,-0.36l0.25,-1.88l0.27,3.72l0.73,1.63l0.65,0.38l0.49,-0.49l-0.61,-1.76l0.15,-1.63l0.33,-1.03l0.82,-0.4l1.14,4.7l-0.39,2.66l0.63,0.22l0.46,-0.25l0.41,-2.32l0.3,1.37l-0.02,2.86l0.4,0.42l0.65,-0.13l0.68,-1.56l-0.23,1.81l0.19,0.65l0.56,0.11l0.06,0.77l0.36,0.43l0.8,-0.35l0.09,-0.63l1.3,-0.42l1.02,0.13l0.38,-0.38l0.02,-0.62l0.79,-0.46l0.79,-1.28l-0.06,-3.96l-2.55,-2.57l0.59,-0.23l1.75,-3.47l0.09,1.5l0.71,0.53l-0.18,0.96l0.76,3.32l2.34,2.72l0.6,0.35l0.68,-0.11l1.16,-1.26l1.23,-0.64l0.55,-1.29l-0.87,-3.09l0.79,-2.79l-0.6,-1.51l1.07,-0.16l0.39,-0.55l-0.72,-1.27l0.61,-1.46l-0.09,-0.7l-2.36,-1.46l-0.59,-1.71l-0.86,-1.09l-0.91,-0.56l-0.72,-1.77l-1.89,-2.76l-2.79,-6.56l-2.47,-1.63l-0.96,-2.54l0.46,-1.39l-0.29,-0.67l-0.94,-0.51l-0.1,-1.02l0.34,-0.94l-0.39,-1.7l-3.69,-4.68l-0.99,-2.6l-0.13,-3.78l1.02,-1.7l-0.38,-2.91l0.9,-1.39l0.08,-1.79l0.92,-1.34l0.55,-2.07l0.74,-0.57l0.93,-2.6l1.74,-1.11l0.34,-0.63l0.87,-0.58l0.77,-1.85l0.3,-3.12l-0.75,-3.77l0.15,-0.79l0.68,-0.52l0.55,-1.19l-0.08,-2.98l-1.15,-3.51l-1.11,-1.18l-0.87,-0.35l0.15,-0.99l-0.54,-2.12l0.86,-0.68l0.97,-1.48l0.35,-1.79l1.25,-1.66l2.07,-6.51l1.07,-2.22l1.85,-2.53l2.4,-0.92l-1.0,2.44l-1.13,5.93l1.02,2.36l-0.31,1.28l0.57,0.54l0.46,-0.14l-0.86,1.23l0.16,0.89l-0.28,1.09l0.26,0.61l0.71,0.57l0.92,0.08l1.18,-1.3l1.16,-0.48l0.43,0.82l0.88,0.29l0.88,-0.62l0.55,-2.78l1.61,-3.41l0.04,-0.73l0.69,-0.42l0.53,-1.79l-0.15,-0.93l0.75,0.01l1.66,-2.9l0.37,-1.55l6.15,-3.44l0.76,-0.23l0.99,0.21l1.63,-0.84l0.55,0.16l2.6,-1.52l5.65,-2.27l3.32,-4.19l4.26,-2.22l1.39,-2.65l1.19,-1.18l4.84,-2.14l0.57,-0.74l0.37,-1.99l1.79,0.42l1.38,-0.8l2.39,-0.36l1.33,-0.87l0.35,-0.65l1.38,-0.34l2.48,-1.75l1.91,-2.38l-0.64,2.17l1.93,1.5l1.15,-0.13l3.54,-1.96l0.71,0.36l1.03,-0.58l0.03,0.65l0.9,0.94l3.62,1.08l3.66,-0.5l1.93,-1.1l0.72,0.35l0.69,-0.25l0.25,0.21l3.82,-1.38l0.8,-1.12l0.99,-0.34l0.45,-1.39l4.47,-3.05l1.79,0.35l1.89,-0.8l0.46,0.55l0.59,0.05l5.29,-1.21l1.72,0.31l1.29,-0.73l1.57,-0.32l3.44,-4.12l0.42,-1.3l1.61,-0.78l0.77,-0.93l1.12,0.81l0.66,-0.31l0.01,-0.69l0.27,-0.02l5.32,1.25l0.65,-0.24l1.19,1.12l1.69,0.33l1.26,-0.64l0.55,-0.64l1.19,-0.22l0.27,-0.88l1.45,0.07l9.6,-1.35l2.98,-0.94l12.97,-5.37l3.91,-2.63l4.15,-3.91l4.61,-6.55l2.78,-6.06l0.16,-0.96l-0.59,-0.89l1.85,-0.34l1.36,-1.24l0.25,-1.19l-0.7,-0.78l1.33,-2.4l0.89,0.33l1.23,-0.22l2.53,-1.88l0.84,-1.42l1.75,-0.93l0.78,-0.98l0.56,-0.1l0.41,-0.79l2.22,-1.04l0.69,-0.86l0.53,-1.49l-0.29,-1.71l-0.51,-0.49l-1.39,-0.44l-1.67,0.13l0.3,-0.95l-0.32,-2.43l0.26,-2.08l-1.37,-3.46l0.13,-4.93l0.49,-1.81l2.26,-2.58l0.08,-0.48l-0.34,-0.4l0.2,-0.27l3.14,-2.71l0.37,0.37l0.63,-0.05l0.44,-0.52l-0.01,-0.87l0.86,0.93l1.26,0.27l0.42,-0.19l-1.46,-2.73l0.52,-0.37l0.51,-1.1l0.37,0.39l0.78,0.12l1.55,-0.36l0.76,-0.55l1.48,0.41l0.49,-0.16l-0.08,-0.51l-1.52,-1.56l0.28,-2.05l0.4,-0.61l1.18,-0.11l1.21,-1.29l0.56,-1.93l1.32,-0.62l0.06,0.74l1.01,0.47l-1.13,-0.08l-0.41,0.46l0.05,1.19l-0.57,0.97l0.44,1.38l0.38,0.29l0.6,-0.16l0.44,1.47l0.72,0.04l0.51,0.48l-0.1,1.21l1.3,1.11l-0.29,1.94l1.09,0.71l1.57,1.83l0.23,1.56l2.13,3.26l0.03,1.14l0.4,0.82l1.11,0.8l1.39,1.81l0.3,1.05l0.87,0.99l0.35,1.71l0.6,0.16l0.56,-0.89l-0.04,-1.49l-0.57,-1.36l0.14,-1.79l0.59,-1.07l0.38,-2.16l0.72,-0.46l0.02,-0.43l-1.44,-2.22l-0.05,-1.29l0.21,-0.41l0.91,-0.06l0.38,1.21l1.32,0.36l0.79,1.32l1.15,0.72l0.82,1.17l0.72,0.33l0.86,-0.07l0.34,-0.38l-0.07,-0.53l-1.38,-0.9l-1.13,-3.09l0.76,0.51l0.63,-0.19l0.07,-0.85l-0.6,-0.82l0.92,-1.1l1.21,-0.72l0.4,-1.02l-0.11,-0.61l-0.58,-0.46l-0.58,0.27l-0.46,1.06l-2.16,0.65l-1.01,-1.49l-0.65,-1.78l-2.2,-1.59l-1.36,-0.36l0.41,-0.29l0.04,-0.63l0.92,-0.55l0.15,-0.71l0.42,-0.07l0.36,-1.69l-2.18,-1.12l1.74,0.57l1.52,0.07l0.38,-0.25l-0.53,-0.86l0.53,-0.24l0.14,-0.63l-0.4,-0.99l-1.17,-0.14l-0.8,-0.75l-0.77,0.21l-0.4,-0.25l0.44,-0.85l-0.27,-1.05l0.66,-0.01l0.16,-0.44l1.56,-0.12l1.68,0.32l-0.36,0.61l0.41,0.63l-0.85,0.15l-0.15,0.72l1.62,1.15l1.19,0.38l-0.69,0.76l0.66,1.48l1.31,-0.13l0.16,-1.68l1.35,0.91l0.65,-0.19l0.08,-0.51l-0.78,-1.4l0.69,-0.47l-0.28,-0.55l1.02,0.44l1.45,0.03l1.14,0.64l0.67,1.69l0.8,0.63l2.76,0.27l0.99,-1.26l1.81,0.94l2.67,0.18l3.74,-0.37l0.83,0.75l0.93,0.18l1.61,-0.6l-0.17,-0.71l-1.41,0.05l-3.15,-1.36l-2.8,-0.43l-2.09,0.45l-1.36,-0.2l-0.35,-0.9l0.24,-1.11l-0.29,-0.4l0.22,-0.73l0.81,-0.76l0.06,-1.74l0.29,1.37l0.92,1.21l0.73,-0.03l0.52,-0.98l0.71,-0.17l0.46,-0.5l-0.23,-2.61l0.66,-0.55l-0.12,-1.5l0.5,-0.5l0.62,0.37l0.51,-0.25l0.47,-1.23l0.44,-0.27l-0.07,-0.72l-0.79,-0.28l-1.94,0.09l-1.63,1.96l-0.73,1.65l-1.22,-2.82l-0.47,-0.15l-0.27,0.69l-0.39,-1.68l-0.07,-1.69l0.79,-0.36l0.21,-0.61l-0.02,-0.79l-0.57,-0.58l0.05,-0.8l0.96,-0.39l0.39,-1.11l2.59,0.94l0.84,-0.14l0.25,-0.74l0.9,0.04l0.43,-0.57l-0.37,-0.71l0.19,-0.74l2.14,-1.98l0.43,0.33l-0.2,0.37l0.37,0.6l1.67,-0.08l1.03,1.17l0.66,0.23l-0.35,1.04l0.43,0.44l0.64,-0.13l0.81,0.58l0.5,-0.26l0.1,-0.77l2.34,1.45l0.49,-0.11l-0.29,-0.85l-2.1,-1.81l0.32,-1.24l1.25,-0.84l-0.42,-0.54l-1.09,-0.63l-0.38,0.43l-0.95,-0.51l-2.49,1.29l-0.37,-0.86l0.73,-0.53l0.15,-0.48l1.65,-0.1l1.14,-1.4l-0.16,-0.59l-0.94,-0.32l-0.62,0.57l-0.57,-0.18l-1.7,1.46l-0.33,-0.2l0.27,-0.82l-0.42,-0.52l0.19,-0.45l0.64,-0.19l1.16,0.64l0.64,-0.04l0.55,-0.82l0.56,-0.03l0.25,-1.09l-0.43,-1.22l0.44,-0.06l-0.14,0.65l0.32,0.74l0.64,0.24l0.28,-0.23l1.15,2.49l0.72,-0.13l0.21,-1.1l-0.33,-1.19l1.25,0.5l0.57,0.56l0.01,0.62l0.91,0.57l1.18,-0.28l1.31,0.28l0.63,-0.36l-0.06,-0.99l-1.14,-0.17l0.35,-0.31l-0.16,-0.64l1.1,-0.9l-0.23,-0.54l-0.6,-0.19l-0.61,0.22l-1.21,-0.62l-0.74,0.15l-0.21,-0.81l0.48,-0.27l0.35,-1.16l-0.43,-0.53l-2.05,-0.52l-0.22,-1.39l-0.85,-0.45l1.1,-0.65l0.19,-0.8l0.94,0.13l1.09,-0.92l-0.16,-0.69l-1.16,-0.06l0.49,-0.53l0.87,-0.0l0.49,-0.49l-0.24,0.72l0.2,0.5l1.34,-1.02l0.92,1.77l0.44,-0.25l0.63,-1.93l0.4,0.02l0.08,-1.27l0.55,0.25l-0.43,0.48l0.38,0.71l1.47,-0.14l0.57,-1.32l0.29,-2.21l-0.59,-1.27l-0.1,-1.27l0.39,-1.07l1.75,1.65l-1.12,-0.02l-0.21,1.02l0.57,3.16l-1.0,1.96l-0.03,1.02l0.66,0.29l0.44,-0.45l1.29,-3.41l0.19,0.24l1.23,-0.37l0.29,0.17l0.27,2.61l2.1,1.41l0.51,-0.36l0.14,-1.12l-0.36,-0.51l0.21,-0.71l1.18,0.58l1.5,-1.0l-0.16,-1.36l-0.98,-1.42l1.61,-0.85l0.35,-1.31l-0.29,-1.24l0.8,-0.16l0.81,-0.62l0.28,-1.62l0.33,0.84l0.77,0.46l0.03,0.75l0.53,0.26l0.65,-0.19l0.56,0.38l0.54,-0.89l0.95,-0.52l-0.07,-0.49l-0.84,-0.85l0.69,-1.42l0.91,-0.33l0.25,-0.73l0.57,-0.42l1.1,0.19l-0.95,1.4l0.08,0.52l0.88,0.2l0.01,0.61l0.63,0.78l0.95,-0.09l0.14,1.36l1.12,0.66l0.33,-1.33l0.86,-0.53l0.12,-1.12l0.21,0.4l0.66,0.07l0.83,-1.13l0.41,-1.62l-0.22,-0.25l0.25,-0.26l1.39,0.21l0.58,-0.4l-0.08,-0.36l0.46,-0.58l-0.48,-0.55l-0.7,-0.17l-0.98,-2.29l0.73,-0.22l0.18,0.71l0.49,0.16l1.25,-0.85l-0.61,-0.82l1.15,0.43l0.41,-0.14l0.18,-0.68l1.25,0.98l0.0,0.86l1.03,0.64l-0.24,0.59l0.41,0.56l0.38,-0.05l0.36,1.28l0.63,0.51l0.49,-0.03l0.62,-0.85l0.3,0.47l0.51,0.01l0.78,-1.13l0.78,0.87l1.08,0.57l0.55,-0.4l-0.03,-0.36l1.09,0.83l0.47,-0.23l0.32,0.79l-0.01,1.32l0.76,0.62l0.65,-0.16l3.37,2.34l0.76,1.31l1.26,1.11l0.69,1.74l0.77,0.4l0.04,1.14l0.66,0.43l0.01,0.58l0.83,0.1l1.09,0.92l-0.09,0.63l0.35,0.66l0.65,0.17l0.81,-0.33l1.18,1.52l0.94,0.26l1.86,1.3l-0.5,0.86l0.32,1.32l-1.52,0.56l0.18,1.17l-1.43,4.84l0.35,1.61l-0.19,2.18l-0.71,0.57l0.63,2.33l-1.21,1.75l0.27,0.69l0.44,0.08l1.06,-0.62l0.87,-1.27l0.39,-2.13l-0.34,-2.22l0.16,-0.65l1.99,1.7l1.02,2.74l0.53,0.34l0.4,-0.37l0.05,-2.62l-1.59,-1.99l0.14,-0.96l-0.65,-2.18l1.77,-1.88l0.36,-0.97l0.66,2.67l0.33,0.2l0.6,-0.41l-0.06,-0.32l0.74,0.63l1.15,-0.11l0.27,-1.18l-1.18,-2.63l0.7,-0.6l-0.03,-0.36l-0.81,-0.66l2.56,-0.91l1.22,0.54l2.57,0.41l0.71,0.59l3.98,0.4l1.43,0.58l0.0,392.84l-4.85,2.15l-2.57,1.66l-9.6,4.19l-4.41,1.62l-5.58,0.97l-4.45,1.52l-0.78,0.66l-5.27,1.49l-5.2,0.74l-5.02,0.17l-0.9,-0.21l-2.3,0.36l-6.68,-0.82l-4.07,-1.22l-1.3,0.3l-1.25,0.84l-1.68,-0.14l-3.12,1.51l-7.31,5.26l-4.35,1.29l-5.37,2.74l-2.1,0.61l-2.3,2.44l-1.41,0.79l-2.7,0.87l-8.75,1.55l-3.46,2.6l-1.63,2.26l-0.58,2.46l-1.34,2.47l-1.19,5.16l-1.3,0.51l-0.74,1.13l-2.26,2.02l-0.58,1.27l-0.02,0.96l-1.69,0.89l-0.58,0.8l-1.25,0.24l-0.9,1.3l-1.2,-0.97l-1.88,-0.21l-1.03,0.41l-1.67,2.02l-2.03,0.47l-0.81,-2.47l-0.75,-0.73l-1.62,-0.47l-4.0,1.06l-1.45,-0.67l-0.92,0.34l-2.8,0.1l-0.86,0.44l-0.1,1.0l-0.71,-0.51l-0.71,0.3l-2.24,-0.69l-1.12,-0.02l-1.76,0.89l-0.41,0.77l0.03,0.84l-0.83,-0.54l-0.67,0.64l-1.7,-0.03l0.46,-0.91l-0.72,-2.02l-1.7,-1.96l-1.87,0.19l-1.35,1.06l-1.59,0.59l-1.02,-0.69l-1.12,-0.29l-1.4,0.48l-0.59,-0.63l-1.68,-0.78l-4.4,-0.11l-2.49,0.58l-1.26,0.68l-1.56,-0.58l-2.76,0.64l-2.24,-0.3l-2.76,0.86l-4.06,0.06l-0.63,0.47l-0.26,0.65l-2.63,0.86l-2.66,-0.85l-2.32,-0.18l-1.61,0.51l-1.25,-0.64l-1.03,0.0l-1.7,0.93l-2.81,0.61l-1.68,1.58l-1.98,0.91l-0.61,0.45l-0.02,0.51l-0.92,0.48l-0.81,1.76l-0.93,0.76l-0.53,1.29l-0.07,1.51l0.52,0.74l0.62,0.23l-0.46,0.11l-0.88,-0.71l-1.04,-0.04l-0.67,0.59l-0.19,0.67l0.31,1.19l-0.35,0.28l-0.33,-0.71l-0.54,-0.22l-0.9,0.23l-0.5,0.49l-0.2,1.33l-0.27,0.1l-0.49,-0.74l-1.27,-0.17l-0.75,-0.54l-4.09,-0.66l-0.86,0.31l-1.24,-0.14l-0.29,0.68l0.69,0.71l-1.63,0.29l-1.52,1.06l-0.19,0.97l0.4,0.67l-0.27,0.31l-2.33,1.17l-2.95,0.78l-1.01,0.71l-1.27,2.23l0.23,1.8l-2.62,0.09l-2.43,0.89l-0.27,0.58l0.92,1.25l-1.16,-0.76l-0.72,-0.02l-1.65,0.63l-2.26,-0.17l-0.51,0.36l-1.24,0.13l-0.52,0.43l0.05,0.76l-1.57,-0.57l-1.88,-0.05l-0.83,0.48l-0.53,1.53l-1.3,-0.92l-1.68,-0.38l-2.83,-1.5l-0.58,0.34l-2.82,-0.58l-0.63,0.28l-0.54,0.88l-1.7,-0.77l-1.12,0.12l-1.2,-0.37l-1.63,1.03l-2.96,-1.15l-0.7,0.48l-1.18,0.0l-0.6,0.46l-0.97,-0.63l-2.59,-0.53l-0.99,-0.9l1.58,0.35l0.47,-0.33l-0.0,-0.6l-1.47,-0.84l-1.24,-1.2l-0.73,0.18l-0.12,0.53l0.33,0.73l-5.98,-1.94l-2.35,-0.16l0.07,-0.55l-1.11,-2.05l-4.18,-4.58l-3.04,-2.43l-1.83,-0.74l-0.52,-0.75l-3.81,-1.8l-1.71,-0.43l-1.98,0.12l-1.12,1.25l-2.13,-2.39l-0.01,-1.99l-0.85,-2.0l-0.22,-5.5l0.57,-1.79l-0.66,-2.54l1.04,-1.72l-0.3,-1.87l0.58,0.25l1.59,1.93l1.82,0.78l2.08,0.17l2.04,-0.52l1.55,-0.93l1.93,-2.17l1.31,-2.16l1.07,-2.85l0.74,0.15l0.79,-0.31l0.39,-0.9l-0.11,-2.11l-0.44,-0.33l-0.33,0.13l0.1,-3.93l-1.62,-8.86l0.05,-0.2l1.18,3.03l0.69,0.42l0.53,-0.19l0.22,-0.68l-1.0,-2.68l1.42,-0.02l0.6,-1.09l-0.14,-0.76l-0.9,-0.58l-0.16,-0.43l0.67,-1.84l0.02,-1.0l-0.65,-1.26l0.41,-1.0l-0.66,-0.94l0.67,-0.5l0.48,-2.05l-0.61,-2.81l0.32,-3.54l-0.5,-3.84l-0.93,-3.11l-5.0,-8.45l-3.12,-7.6l-1.67,-2.77l-1.25,-1.25l-0.4,-1.98l-1.36,-2.69l-0.88,-2.66l-0.13,-1.79l-0.97,-3.04l0.27,-1.39l-1.05,-1.19l0.28,-1.7l-1.0,-2.68l0.54,-3.15l-0.44,-1.78l-0.03,-4.05l0.72,-4.4l-3.04,-9.05l-4.22,-4.79l-1.05,-1.7l-0.47,-1.24l0.31,-0.76l-0.13,-2.3l-1.36,-3.36l-2.41,-2.93l-2.49,-4.08l-1.48,-0.95l-1.68,-1.98l-1.46,-5.67l0.08,-1.38l0.93,-2.82l-1.54,-5.78l-1.41,-3.24l-5.49,-9.45l-3.84,-5.76l-6.42,-6.53l-0.03,-1.48l-1.01,-1.96ZM18.62,388.27l-1.37,-0.34l-0.1,-0.79l-0.71,-1.09l-0.84,-1.02l-0.71,-0.25l-0.39,-3.13l-0.81,-0.76l-0.21,-1.48l-2.02,-3.0l0.06,-1.45l1.39,-2.42l0.33,1.67l1.16,0.5l1.01,2.29l0.68,0.39l0.46,0.8l0.87,0.32l-0.05,1.44l0.82,0.76l-0.54,0.85l0.08,1.03l-0.4,1.0l-0.34,2.79l0.5,1.28l1.15,0.61ZM234.66,163.67l-0.3,0.64l-0.77,-0.62l0.41,-0.38l0.66,0.36ZM261.01,136.67l-0.34,-0.12l-0.02,-0.78l0.64,0.2l-0.29,0.7ZM273.13,127.84l-0.42,0.17l-0.69,-0.31l0.41,-0.28l0.71,0.42ZM305.17,106.76l-0.04,0.05l-0.04,-0.08l0.08,0.03ZM109.27,603.92l0.79,0.2l0.39,-0.35l0.55,0.47l-1.04,-0.02l-0.7,-0.3ZM292.84,109.4l-0.33,-0.77l-0.77,-0.53l-2.33,-0.08l-0.2,-0.42l0.81,0.08l0.31,-0.45l0.5,0.41l0.49,-0.02l0.21,-0.39l0.21,0.2l0.91,-0.47l0.42,0.37l-0.52,0.25l-0.1,0.92l0.49,0.46l0.39,-0.09l-0.48,0.53ZM291.55,106.2l-0.7,-0.84l0.13,-0.19l0.8,0.3l0.11,0.39l-0.33,0.36ZM26.98,297.37l0.2,-0.34l0.08,-0.28l-0.06,0.51l-0.23,0.12ZM21.38,383.22l-0.18,-0.67l-0.18,-0.36l0.44,0.37l-0.08,0.65ZM13.72,391.1l-0.26,-0.73l0.04,-0.18l0.04,0.12l0.18,0.8ZM341.51,126.92l1.04,1.78l0.15,0.53l-1.03,-1.19l-0.16,-1.12ZM336.53,131.41l0.66,0.52l0.17,0.83l-0.81,-0.64l-0.03,-0.71ZM269.49,120.11l0.09,-0.78l0.7,0.28l0.22,-0.4l0.03,-1.03l-0.43,-0.42l0.6,-0.44l0.52,0.32l-0.59,1.06l0.41,1.1l-1.03,0.54l-0.52,-0.22ZM262.85,135.22l0.12,-0.23l0.38,0.09l-0.18,0.26l-0.32,-0.13ZM255.73,137.28l0.07,-0.48l0.59,0.11l0.06,-0.65l0.36,-0.71l-0.06,0.67l1.33,1.26l-1.55,-0.44l-0.81,0.24ZM258.19,137.67l0.27,0.47l-1.17,0.44l0.67,-0.53l0.23,-0.38ZM53.11,262.46l0.49,-1.25l2.09,-2.25l0.28,1.38l-0.66,1.42l-1.06,1.08l-0.68,-0.48l-0.46,0.09ZM0.84,371.32l0.69,0.09l0.02,1.16l0.81,1.8l0.22,2.15l1.81,3.79l-0.45,1.63l-0.79,-0.61l-0.71,-2.12l-1.2,-1.51l-0.06,-1.91l-0.77,-1.59l0.01,-2.34l0.42,-0.54ZM4.36,382.54l0.68,0.06l0.9,1.27l0.4,1.24l-0.08,0.73l-0.66,-1.7l-1.23,-1.6Z", "name": "Western Australia"}, "AU-TAS": {"path": "M775.91,740.14l0.18,-0.61l1.22,-0.64l1.25,-0.12l1.53,0.42l0.39,-0.62l1.32,-0.18l1.0,-0.68l2.65,2.6l-1.26,1.25l-0.74,0.14l-0.31,-1.09l-0.36,-0.27l-0.9,0.01l-1.1,0.55l-0.88,-0.41l-0.59,0.32l-1.94,0.01l-1.47,-0.67ZM701.14,755.61l0.52,-1.09l-0.33,-0.65l0.57,-0.67l0.83,-0.3l0.33,-0.7l-0.19,-5.32l1.08,1.86l0.75,-0.25l2.11,0.73l1.93,0.0l2.0,1.61l0.93,0.36l0.66,-0.06l0.44,-0.64l2.09,-0.07l1.83,1.37l2.36,0.65l1.45,-0.42l0.27,0.79l0.97,0.7l3.26,0.66l0.35,0.94l1.55,1.44l2.31,0.39l0.34,0.5l1.11,0.15l2.21,1.29l3.03,1.09l4.8,0.32l2.54,-0.79l0.44,0.94l0.73,0.19l0.32,-0.12l-0.04,-0.84l1.35,-1.38l1.75,-0.64l0.77,0.49l0.27,0.68l-0.23,0.57l0.45,0.63l1.1,0.29l0.87,-0.33l1.15,0.25l0.28,-0.12l0.09,-0.69l-0.92,-0.79l-1.21,-0.24l-0.51,-0.42l0.22,-1.11l1.99,-0.53l1.7,-0.99l0.39,0.28l3.17,0.4l2.23,-1.47l0.49,0.19l0.75,-0.28l0.29,0.65l0.71,0.2l0.53,0.68l1.09,0.07l1.75,-1.55l1.63,-2.69l1.25,-0.47l0.9,0.96l1.04,-0.13l1.33,0.89l0.91,-0.09l1.76,-1.17l0.89,-2.58l0.96,-0.06l0.58,0.69l0.85,0.08l1.11,1.53l1.47,0.19l1.65,2.06l0.86,1.75l-1.21,1.02l0.23,0.6l0.43,0.18l-0.66,1.47l-0.06,2.17l1.06,1.68l-1.37,1.26l-0.01,0.86l0.66,0.24l0.87,-0.75l-1.05,3.2l0.04,2.27l0.74,1.84l-0.63,2.15l0.4,1.59l-0.95,1.52l0.62,1.91l0.75,1.17l-0.54,3.44l1.31,1.62l-0.18,0.19l-0.27,-0.37l-0.76,-0.1l-1.07,-1.0l-0.79,-0.26l1.03,-0.6l0.27,-1.03l-0.77,-0.66l-0.34,-0.9l-0.81,0.02l-0.24,0.42l0.25,0.75l-0.49,0.01l-0.51,0.56l0.14,0.98l-0.51,0.58l0.23,0.5l-1.0,0.44l-0.4,2.54l-0.83,0.82l-1.59,2.96l-0.0,0.49l0.47,0.12l0.78,-0.66l0.15,0.18l-0.57,0.81l0.04,3.77l-0.76,0.73l-0.64,-0.78l-0.92,0.67l-0.21,0.65l1.01,1.15l0.41,1.57l-0.11,1.59l-1.37,1.06l-0.12,1.59l-0.71,0.78l-0.13,0.95l-3.03,-0.02l-0.51,-0.6l-0.73,-0.21l-0.31,-0.85l-0.56,-0.3l-1.58,0.46l-0.74,0.53l-0.14,1.02l1.18,2.55l-0.47,0.72l-0.66,0.3l0.32,-0.9l-0.38,-0.7l0.23,-1.15l-0.5,-0.48l-0.85,0.37l-0.27,-0.85l-1.2,-0.7l-1.6,-2.32l-0.99,0.38l-0.1,0.55l1.29,1.49l0.85,1.82l-0.62,1.39l-0.01,1.29l-0.65,-0.58l-0.56,0.03l-0.38,0.43l0.12,0.87l0.76,0.85l-1.12,1.22l0.21,3.32l-0.68,0.54l-0.77,-0.36l-0.23,-0.83l-1.02,-0.08l0.44,-0.88l-0.64,-1.36l-0.9,1.09l-0.56,-0.14l-0.15,-1.76l-0.31,-0.31l-0.63,-0.0l-0.73,0.62l-0.34,1.4l0.2,0.98l2.15,1.5l0.65,0.83l-0.42,0.39l-0.5,-0.35l-1.03,0.11l-0.98,0.78l0.34,0.64l1.49,-0.02l-1.02,1.53l-1.77,0.35l0.11,0.45l0.84,0.52l-0.64,0.82l0.34,0.86l-1.11,0.16l-0.17,0.7l0.39,0.63l0.67,0.28l-0.18,0.3l-1.5,0.71l-0.95,-0.81l-2.01,0.44l-0.68,-1.02l-1.51,-0.82l-0.37,-1.5l-0.76,-0.85l-0.58,0.18l-0.13,1.16l-0.58,0.36l-2.72,-0.16l-0.69,-0.53l-0.57,0.01l-0.68,0.59l-0.51,-1.02l-0.79,-0.24l-0.82,0.25l-0.31,0.65l-0.92,-0.32l-1.0,0.36l-0.25,0.56l-0.96,0.17l-0.06,-2.24l-1.17,-1.47l0.7,-0.49l-0.18,-0.38l1.98,0.39l1.05,1.35l0.66,-0.17l0.28,-0.99l0.67,0.67l0.55,-0.15l0.22,-0.49l-0.2,-1.84l-1.28,-1.21l-0.64,-0.18l-1.07,1.44l-0.33,-0.95l-0.5,-0.38l-0.68,0.25l-0.29,0.86l-0.87,-0.89l-0.31,-1.59l-1.06,-0.88l-0.69,0.22l0.01,1.14l-0.71,0.21l-0.33,0.71l0.52,0.55l-0.5,-0.09l-0.66,-1.28l-0.09,-1.02l-1.0,-0.88l-0.55,-0.98l-0.02,-0.8l-0.58,-0.43l-0.72,0.08l0.36,-0.97l-0.22,-0.46l-1.06,-0.56l-0.89,-1.49l-1.88,-0.34l-0.77,-1.06l-1.6,-3.63l-0.62,-0.54l0.38,-0.91l-0.76,-1.87l-0.75,-0.35l-0.3,-0.76l-0.71,-0.36l0.48,-0.63l-0.05,-0.54l-1.02,-1.32l-0.25,-0.92l0.17,-1.07l-0.76,-2.4l-0.12,-2.02l0.23,0.5l1.4,0.51l0.46,0.92l2.3,1.52l0.31,2.21l0.53,1.36l0.51,0.12l0.37,-0.39l0.07,-1.86l0.82,-0.31l0.84,-2.24l-0.45,-0.51l-0.51,0.16l-0.62,-0.76l-0.64,0.3l-2.04,-2.31l-0.63,-2.52l-0.92,-0.08l-1.11,1.12l-0.06,0.68l-0.19,-0.18l0.74,-1.88l-0.37,-2.3l-1.05,-2.07l-3.16,-3.02l-0.17,-0.78l-2.1,-2.85l-0.86,-0.29l-0.11,-1.3l-1.06,-2.82l-1.6,-2.62l-0.86,-0.71l0.62,-0.58l-0.05,-0.83l-2.13,-3.69l0.17,-1.34l-0.51,-1.38l0.11,-1.12l-1.25,-1.88ZM728.8,816.42l0.31,-0.04l-0.13,0.05l-0.17,-0.01ZM763.12,809.37l-0.0,0.0l-0.0,-0.0l0.0,0.0ZM772.39,806.05l1.04,0.09l0.62,-0.56l0.72,-0.08l0.4,0.7l-0.24,0.67l0.42,0.77l-0.78,0.52l-0.48,2.66l0.54,0.76l-0.24,0.63l0.31,0.61l0.49,0.06l-0.55,1.1l-1.07,-1.0l-0.3,-1.05l-0.59,-0.09l-0.67,0.76l-0.06,1.04l-0.94,0.9l-1.74,-1.75l-0.04,-0.31l1.01,-0.75l-0.16,-0.65l-2.06,-0.8l-0.47,-1.06l1.17,-0.68l0.13,-1.22l0.29,0.02l-0.14,1.72l1.08,0.91l1.32,0.46l1.6,-0.38l0.9,-1.06l-0.92,-0.28l-0.52,-0.57l0.38,-0.85l-0.62,-0.47l0.17,-0.77ZM773.75,805.05l-0.3,-0.1l0.19,-0.13l0.11,0.23ZM782.69,786.98l0.48,0.4l-0.65,1.33l-0.64,-0.37l0.81,-1.36ZM715.42,748.93l-0.01,-0.04l0.02,0.03l-0.02,0.01ZM770.83,726.2l0.73,-0.69l1.05,-0.4l0.54,-1.75l1.33,-0.92l4.41,5.45l1.15,0.56l1.6,0.24l-0.18,2.53l-1.31,1.2l0.19,0.61l0.47,0.17l1.26,-0.51l0.3,0.87l-0.78,0.1l0.09,1.04l-1.61,-0.36l-0.44,0.32l-0.23,0.9l-1.13,0.45l-1.34,-0.62l0.15,-1.04l-0.85,-0.83l-0.31,-1.65l-1.1,-0.56l-0.4,-1.1l-0.91,-0.37l0.39,-1.15l-0.64,-2.15l-0.82,-0.26l-0.84,0.45l-0.79,-0.49ZM781.82,734.78l0.24,0.18l0.21,0.1l-0.15,-0.02l-0.3,-0.26ZM778.3,743.36l0.29,-0.21l1.68,-0.45l-0.58,1.72l-1.39,-1.06ZM776.58,800.95l0.06,-0.14l0.21,-0.74l0.35,0.76l-0.62,0.12ZM776.83,799.75l-0.62,-0.54l0.18,-0.67l1.04,-0.69l0.77,0.14l0.52,1.28l-1.61,0.04l-0.28,0.44ZM760.43,812.89l0.88,-0.13l0.26,-0.64l-0.5,-0.41l0.15,-0.41l0.63,0.7l0.81,2.88l-1.09,0.08l0.75,-0.82l-0.05,-0.55l-1.82,-0.69ZM760.67,715.79l0.04,-0.13l0.16,-0.03l-0.03,0.13l-0.17,0.03ZM756.56,820.97l0.74,0.3l-0.31,0.42l-0.25,-0.25l-0.17,-0.47ZM757.82,819.58l-0.12,-0.84l0.42,0.52l0.64,-0.12l0.38,-0.87l-0.24,-0.7l1.13,-1.29l1.05,2.76l-1.03,2.78l-1.1,-0.5l0.22,-0.21l-0.27,-1.27l-0.49,-0.39l-0.61,0.12ZM706.76,746.86l0.78,-0.8l1.66,1.11l-2.38,0.79l-0.05,-1.1ZM706.24,740.79l0.67,-0.6l0.05,-0.52l0.96,0.27l-0.23,0.91l-0.83,0.35l-0.61,-0.41ZM703.28,742.17l0.9,-0.24l-0.57,1.61l-0.03,-0.9l-0.3,-0.46ZM684.28,723.01l0.13,-1.18l1.05,-0.44l0.81,-0.82l-0.21,-1.8l0.62,-0.16l1.94,1.27l0.55,1.1l-0.15,1.17l0.45,2.18l-0.45,2.24l0.82,0.76l-0.08,1.46l-0.52,1.11l-1.26,1.06l-2.69,1.29l-0.56,-1.28l0.39,-0.73l-0.15,-1.84l-1.05,-0.93l0.11,-1.58l0.53,-1.27l-0.27,-1.63Z", "name": "Tasmania"}, "AU-VIC": {"path": "M620.45,577.42l1.14,1.21l2.11,0.1l1.28,0.63l1.04,-0.33l1.31,0.86l0.48,0.73l1.59,-0.13l1.38,0.83l1.13,0.1l0.3,0.79l0.52,0.35l0.9,-0.21l1.36,-1.59l1.53,-0.9l0.81,-0.15l2.05,0.67l4.47,-0.38l1.21,1.38l1.09,-0.3l0.97,0.8l0.72,-0.01l0.4,1.77l1.11,1.26l0.98,0.72l1.06,-0.11l-0.66,1.79l0.3,2.79l1.84,1.86l-0.01,0.73l1.19,2.11l0.03,0.84l0.72,0.68l1.65,0.56l0.83,-0.12l0.24,-0.55l-0.29,-0.75l1.09,-0.03l0.31,-0.33l0.0,-1.14l0.6,-1.85l1.08,-0.42l1.15,0.8l0.5,1.34l0.55,0.23l0.87,-0.49l0.98,0.75l0.75,-0.41l0.95,0.51l2.0,0.17l2.56,1.29l0.22,0.75l0.43,0.3l0.81,-0.22l0.43,0.31l-0.01,1.33l-0.46,0.63l0.14,0.86l-0.29,1.01l0.76,3.74l1.34,2.19l3.48,1.42l0.17,1.13l-0.33,0.72l0.34,0.84l1.51,0.96l2.75,0.72l2.73,1.85l1.7,0.73l0.54,0.89l2.13,0.73l1.75,2.29l2.17,1.78l1.11,0.21l0.52,0.48l1.51,3.4l0.72,0.91l0.94,0.38l2.46,2.69l1.74,0.45l1.49,1.34l1.81,-0.16l1.55,-1.29l1.47,0.55l0.73,-0.25l0.26,-0.74l-1.1,-1.82l0.6,-1.22l0.18,-1.4l0.56,-0.43l4.47,-0.4l2.54,0.62l1.02,-0.07l2.63,-1.11l1.48,0.31l3.76,3.03l1.04,0.44l1.21,0.1l2.18,-0.42l1.01,1.2l1.69,0.07l3.41,0.96l0.78,-0.49l2.89,0.41l0.54,-0.29l0.98,-1.52l0.71,0.19l0.62,-0.31l0.89,0.48l1.64,0.0l1.32,1.16l1.46,0.14l0.51,0.55l0.87,0.07l0.57,0.57l0.98,-0.08l1.15,0.68l0.89,-0.08l0.73,-0.57l0.49,0.25l0.22,2.17l1.02,1.1l0.68,0.29l1.98,-0.53l0.24,-0.6l-0.41,-0.45l-1.39,-0.25l-0.42,-0.55l-0.29,-1.39l0.9,-1.28l0.91,0.58l2.34,-0.36l0.93,0.56l0.64,-0.1l0.87,-2.36l0.44,-0.39l1.53,-0.31l1.45,1.23l3.55,-1.41l4.11,1.58l0.72,0.95l1.16,0.39l-0.17,1.25l1.14,1.35l-0.28,1.57l1.02,2.77l-0.39,0.99l0.17,0.76l1.43,1.31l0.43,2.62l0.47,0.55l0.64,0.17l0.28,0.6l-0.18,1.14l-1.8,2.76l0.17,0.69l2.14,0.37l38.27,17.79l-1.13,0.44l-1.87,0.14l0.15,-0.62l-0.54,-0.48l-0.57,0.34l-1.36,-0.04l0.97,1.9l-0.85,0.83l-0.97,1.7l-1.18,0.37l-0.58,0.67l-1.79,0.52l-0.6,0.74l-3.0,0.02l-1.42,0.64l-0.53,-0.57l-1.73,0.02l-1.01,-0.34l-0.88,0.33l-6.71,0.22l-1.4,0.64l-2.64,-0.31l-6.65,0.32l-3.93,0.87l-4.73,1.57l-3.56,1.73l-3.8,2.5l-4.29,3.58l-11.72,11.33l-0.6,-0.24l-3.07,0.64l-1.59,-0.02l-1.04,0.63l-2.53,0.18l-0.98,0.62l-1.35,-1.02l-2.17,0.19l-0.9,0.45l-0.92,1.07l0.02,0.55l1.16,1.54l0.51,0.19l0.39,1.91l0.46,0.44l0.92,-0.1l0.93,-1.06l1.12,-0.28l0.84,-1.48l-0.12,1.49l0.31,1.25l-0.62,0.69l-0.43,1.89l0.26,0.57l0.64,0.12l0.1,0.34l-0.88,0.51l-0.09,1.09l-0.47,0.24l-1.19,-0.75l0.43,-1.13l-1.3,-0.97l-0.5,-0.74l-0.35,-1.56l-1.63,-1.92l-2.27,-1.31l-1.65,0.31l-0.49,0.61l-0.14,1.18l-1.15,0.18l-0.47,-1.82l-1.59,-2.78l0.63,-0.55l-1.05,-1.4l-2.06,-0.39l-2.73,1.05l-1.72,-2.48l-2.3,-0.94l0.53,-0.49l-0.04,-2.03l1.39,0.16l1.46,-1.45l-0.13,-0.61l-0.76,-0.68l-0.0,-0.98l-1.39,-1.91l-0.89,-0.23l-2.3,0.4l-1.26,-0.23l-0.53,0.27l-0.08,0.66l-1.3,1.82l0.5,1.79l-2.19,-0.08l-0.59,0.81l-0.77,0.32l-0.56,1.11l-2.03,0.27l-2.71,-2.43l1.96,-0.16l2.41,-1.1l0.13,-0.91l2.7,-3.61l0.3,-1.01l-0.49,-2.25l-0.66,-0.81l-1.1,-0.51l-1.1,-2.62l-1.38,-0.92l-0.52,0.05l-0.41,0.71l-1.6,0.05l-0.64,1.2l-1.45,0.61l-1.35,1.24l-2.57,0.83l-0.7,0.73l-0.2,0.78l-0.67,-0.31l-1.8,0.21l-0.86,0.58l-0.23,0.72l0.58,0.74l3.26,0.58l1.03,-0.15l1.96,-1.15l0.87,0.42l0.25,0.27l-0.16,0.86l-0.94,0.68l-0.45,1.12l-2.31,0.05l-0.88,0.33l-1.09,-0.33l-1.12,0.35l-3.29,2.52l-0.88,0.21l-0.56,0.67l-1.15,0.37l-0.39,0.49l-1.44,0.48l-1.25,1.29l-0.16,0.88l-1.16,0.49l-0.78,1.47l-1.23,1.14l-3.04,0.93l-0.96,1.56l-1.16,0.49l-1.4,1.26l-1.7,-1.48l-2.17,-1.05l-2.9,-0.03l-2.26,-2.27l-1.38,-0.84l-2.55,-0.47l-2.95,-1.02l-3.41,-2.67l-3.03,-1.75l-0.51,-0.86l-0.75,0.09l-0.36,0.55l-1.1,-0.8l-2.03,-0.03l-1.98,0.99l-0.94,-0.16l-1.79,-0.82l-3.21,-2.13l-4.33,-0.58l-2.06,0.6l-0.98,0.67l-0.46,1.21l0.66,1.07l-0.84,-0.15l-0.94,0.99l-0.63,-1.04l-0.79,-0.4l-1.21,-0.03l-0.63,0.72l-0.2,-0.13l0.47,-0.83l0.03,-0.8l-0.65,-1.02l-3.6,-3.06l-5.25,-2.81l-0.02,-101.54ZM742.48,697.34l0.55,0.15l0.64,-0.09l-0.38,0.36l-0.82,-0.42ZM716.12,685.94l1.1,0.42l1.64,-0.19l0.63,0.66l-1.27,0.18l-1.26,1.21l-1.1,-0.5l-0.23,-0.8l0.5,-0.98ZM712.85,690.71l0.94,-0.82l1.89,-0.13l0.14,1.03l-0.84,-0.19l-1.24,0.42l-0.89,-0.32ZM716.43,691.14l0.01,0.0l0.0,0.01l-0.01,-0.01Z", "name": "Victoria"}, "AU-NT": {"path": "M355.89,126.72l1.43,0.54l0.66,1.11l1.18,0.57l-0.2,1.55l0.52,1.31l-1.0,2.33l0.41,0.54l0.8,-0.37l0.55,0.68l0.36,-0.31l0.6,-2.58l0.49,-0.44l-0.78,-4.9l0.52,0.33l0.64,-0.59l1.03,0.3l0.51,0.66l2.19,0.62l0.78,1.64l1.18,0.87l0.52,1.27l-0.27,1.14l0.63,0.38l1.17,-0.69l0.13,1.03l0.59,0.39l1.08,-0.12l0.42,-0.62l-0.27,-0.77l-1.39,-1.58l-0.59,-1.47l-0.31,-1.57l0.64,-2.04l0.84,0.36l2.26,0.15l1.69,-0.58l1.08,-1.02l1.02,0.33l0.59,-0.38l0.23,-1.7l-0.3,-0.67l-0.72,0.13l-0.4,0.77l-3.15,1.24l0.23,-0.64l-0.39,-0.44l-1.53,0.59l-0.95,-0.69l-0.06,-0.78l-1.33,-1.03l-0.31,-0.85l2.52,-0.26l1.78,-1.56l0.08,-0.44l-0.95,-0.2l-2.08,0.94l-2.74,-0.62l-3.7,-2.86l0.28,-1.52l0.77,-0.95l0.26,-1.19l1.44,-1.63l0.21,-2.05l0.6,0.53l1.35,0.04l0.46,-1.19l2.27,-0.41l0.59,-0.67l0.37,-1.68l-0.73,-1.26l2.12,-2.22l-0.63,-1.84l0.96,-2.36l0.18,-1.48l0.8,-0.81l0.24,0.82l1.41,0.58l1.88,-0.59l1.47,-1.14l0.69,0.07l2.55,-3.01l1.48,0.53l0.46,-0.5l-0.51,-1.03l-1.59,-0.69l-1.78,-2.36l-0.83,-0.24l0.25,-4.55l0.71,-0.34l0.44,0.51l0.63,0.11l2.3,-0.95l0.81,-1.58l0.19,-2.26l-0.27,-1.21l0.75,0.16l1.04,-1.19l1.41,0.56l0.41,-0.13l0.45,0.72l0.98,0.63l0.59,0.15l1.83,-0.39l0.2,-0.41l-0.27,-0.49l-1.82,-0.53l-0.17,0.19l-0.29,-0.43l0.83,-0.72l-0.25,-0.76l-0.54,-0.16l0.51,-1.4l-0.28,-1.0l0.59,-0.71l-0.49,-0.57l3.22,0.87l0.28,3.32l0.36,0.29l0.4,-0.24l0.18,-0.68l1.09,1.52l0.95,0.59l0.17,-0.86l0.96,0.54l0.47,-0.03l0.12,-0.45l-0.37,-0.8l-1.57,-1.29l1.43,0.6l0.52,-0.51l-0.45,-0.84l-1.66,-1.32l-1.04,0.07l0.11,-0.54l1.38,-1.41l2.94,0.86l0.58,-0.35l-0.55,-1.6l-0.05,-1.64l-0.6,-0.88l0.37,-0.57l0.86,0.42l0.75,-0.33l0.46,0.58l0.73,-0.0l1.37,1.27l0.88,0.07l0.28,-0.64l-0.37,-0.52l0.4,-0.52l0.38,-2.28l0.44,2.5l0.46,0.88l2.48,1.77l1.15,0.19l1.81,-0.3l0.89,0.27l3.76,-0.58l2.28,-1.2l0.73,0.99l2.99,1.03l1.51,-0.79l1.15,-1.14l1.17,-0.47l0.35,-0.92l0.29,1.26l0.42,0.3l1.53,-0.59l0.35,0.15l0.82,1.76l-0.72,0.87l0.27,1.2l0.44,-0.13l1.4,-1.85l-0.53,-1.81l0.28,-1.37l2.47,-1.29l2.47,1.0l1.84,-0.08l0.33,-0.34l-0.23,-0.41l-0.97,-0.17l-1.35,-0.9l-0.34,-0.63l0.55,-4.39l-0.29,-0.79l-0.93,-0.66l1.2,-1.36l0.3,-0.8l0.69,-0.52l-0.25,-0.52l-2.48,-0.89l-0.42,-0.42l0.04,-0.79l-1.36,-1.68l-2.0,-0.99l-1.7,-0.07l-0.85,0.51l-1.48,-0.13l-2.67,1.45l-0.56,-0.01l-0.89,-0.88l0.45,-0.33l-0.06,-0.59l-0.72,-0.45l-0.75,0.12l-0.39,-0.49l0.26,-0.48l-0.26,-0.6l-0.93,-0.07l-0.29,-0.65l-1.67,-0.4l0.19,-0.67l-0.29,-0.59l0.65,0.12l0.31,-0.44l1.12,1.2l1.11,-0.64l0.22,-1.89l1.18,1.08l0.09,0.61l0.63,0.31l-0.02,1.95l0.97,0.59l0.15,0.87l0.72,0.6l0.65,0.09l0.45,-0.41l-0.1,-0.68l0.54,-0.1l0.28,-0.54l-0.24,-0.71l-0.69,-0.59l-0.1,-1.82l-0.92,-1.49l1.29,1.37l0.52,1.33l0.61,0.42l0.59,-0.26l-0.27,-2.08l0.23,-0.17l0.88,-0.06l0.54,1.12l-0.12,1.35l0.48,0.6l0.85,-0.35l0.36,-1.13l0.55,0.15l0.8,1.44l0.09,0.82l0.74,0.13l0.51,0.82l0.92,0.65l1.56,2.4l0.92,0.18l0.77,-0.25l2.29,-2.34l0.84,0.39l0.51,-0.27l0.02,-1.42l0.27,0.12l0.45,0.85l1.12,0.89l0.7,1.32l0.71,0.41l-0.02,1.13l2.08,3.26l0.6,0.4l1.73,0.29l0.68,-0.22l0.54,-0.63l-0.36,0.83l0.49,0.69l1.49,-0.16l1.87,0.84l1.16,-0.57l-0.37,1.57l0.25,0.59l0.63,-0.08l0.51,-1.11l0.36,-0.16l0.6,0.69l1.22,-0.31l0.56,-0.94l1.39,-0.13l1.2,-1.22l2.01,0.54l-0.37,0.46l-0.54,-0.01l-0.67,0.49l-0.28,0.88l0.36,0.71l2.24,1.34l1.74,-0.71l0.61,-0.85l0.61,0.7l0.04,0.97l0.65,0.15l0.77,-0.71l0.56,0.98l-0.21,0.48l0.48,1.02l-0.13,1.22l0.48,0.48l0.44,-0.08l1.39,-1.4l0.25,-0.92l2.1,1.59l3.19,0.51l1.95,-0.17l2.34,-2.22l0.91,-0.21l0.08,0.87l0.76,1.16l0.66,0.04l0.26,1.33l0.42,0.57l2.25,0.41l0.74,1.27l1.63,1.31l1.69,-0.34l1.21,1.09l0.66,0.15l0.64,-0.73l-0.84,-0.85l0.78,-0.1l0.95,0.75l1.48,-0.58l0.14,-0.51l-0.55,-0.37l-0.71,0.11l-0.79,-0.46l1.35,-0.85l-0.07,-0.65l0.9,-0.46l0.5,0.03l0.55,0.53l0.9,-0.0l1.12,-0.38l0.33,-0.43l1.32,0.46l3.01,-2.03l1.74,-0.44l-3.61,3.27l-0.08,1.18l0.41,0.91l1.39,1.68l0.72,-0.01l0.41,-0.85l0.82,-0.29l0.36,-0.87l1.49,-1.33l0.23,0.5l0.51,0.03l-0.02,0.65l0.67,1.14l0.62,0.18l1.11,-0.48l-1.36,2.32l0.96,2.34l0.69,0.3l0.64,-0.59l0.57,0.2l1.04,-0.26l0.7,0.59l1.87,-0.49l0.8,-0.63l1.99,-4.17l-0.64,-1.1l-0.92,-0.24l-1.54,0.19l-0.5,-0.45l1.88,-2.33l0.91,-0.13l2.26,-1.98l0.44,1.01l1.05,-0.28l0.53,1.73l0.51,0.32l0.17,1.83l2.36,2.63l1.07,-0.01l1.13,-0.95l-0.14,-0.74l-0.99,-0.54l0.7,-0.31l1.14,0.95l1.2,0.29l0.59,0.76l0.39,0.54l0.21,1.46l-2.14,2.06l-0.64,-0.57l-1.36,0.71l-0.27,1.06l0.23,1.17l-1.02,1.14l-0.49,1.24l0.13,0.5l-1.11,0.01l-0.58,0.49l-0.14,0.7l0.42,0.7l0.02,0.88l-0.82,-1.83l-0.94,0.06l-0.39,0.77l-0.38,-0.31l-0.7,0.18l0.33,2.22l1.2,0.82l0.42,0.78l1.56,0.74l-0.78,0.36l-0.25,-0.55l-0.63,-0.24l-1.42,0.59l0.09,1.04l1.24,1.19l-0.47,1.3l-0.65,0.1l-0.48,0.57l-0.13,1.09l-0.36,-0.15l-0.87,0.49l-0.41,-0.69l0.03,-3.0l-0.34,-0.4l-0.87,-0.21l-1.0,1.24l0.14,1.41l-0.73,-0.8l-0.5,0.09l-0.49,0.62l0.23,0.98l-0.51,0.16l-0.24,0.52l-0.65,0.18l0.24,-1.9l-0.2,-0.55l-0.73,-0.19l-0.98,0.98l-0.43,1.25l-0.63,0.29l-0.78,-0.49l-0.55,0.18l-0.51,0.85l-1.04,0.28l-0.86,1.28l-0.12,1.22l0.92,0.53l-0.04,0.67l-0.69,-0.17l-0.67,0.42l0.16,2.52l-0.53,1.2l0.61,1.41l0.53,0.45l-0.17,0.94l0.55,0.75l1.0,0.26l0.88,-0.25l0.96,-0.9l-0.77,1.64l0.12,0.68l-0.45,1.68l-1.53,1.44l-0.36,4.83l-0.97,0.3l-2.22,1.56l-2.03,3.61l-0.95,0.14l-0.36,0.51l-1.73,2.95l-0.27,1.53l-1.29,0.63l-0.46,0.76l-0.98,-0.21l-0.54,0.36l0.71,2.49l1.55,3.17l1.87,1.66l1.5,0.65l0.72,-0.09l1.3,1.43l1.12,0.22l2.19,1.33l1.95,1.96l2.1,0.89l1.25,1.01l2.72,1.38l0.57,1.19l0.45,2.19l1.76,1.3l1.49,0.19l2.44,2.16l0.71,0.19l0.72,-0.29l0.3,0.79l2.35,2.35l-0.34,0.98l0.27,0.76l0.97,0.22l0.93,-0.81l1.73,0.17l0.76,0.59l0.64,0.01l0.37,-0.38l0.03,-0.66l0.85,-0.47l1.18,1.18l3.37,1.42l3.66,3.14l1.02,0.16l0.39,0.47l0.56,0.0l0.88,0.62l1.38,-0.11l4.14,1.73l2.62,4.12l2.88,2.37l0.0,218.24l-198.16,0.0l0.0,-255.87ZM418.04,45.87l-0.23,0.1l-0.15,0.02l0.09,-0.18l0.29,0.07ZM509.0,65.5l0.07,-0.13l0.12,0.01l-0.17,0.1l-0.02,0.01ZM518.27,90.23l-0.04,0.06l-0.02,-0.06l0.06,-0.0ZM508.38,93.8l0.1,0.07l0.23,0.03l-0.17,0.11l-0.16,-0.21ZM511.01,67.43l0.01,-0.01l0.26,-0.13l0.02,0.05l-0.29,0.08ZM503.74,61.54l-1.64,0.29l-0.96,0.68l-0.1,-0.28l0.55,-1.12l0.88,0.27l1.23,-0.79l0.91,0.15l-0.88,0.81ZM504.85,60.62l0.64,-0.4l1.03,-0.82l-0.72,0.91l-0.94,0.3ZM507.15,58.75l0.0,-0.01l0.01,-0.0l-0.01,0.01ZM508.1,57.51l-0.08,-0.33l-0.22,-0.51l0.56,0.19l-0.26,0.65ZM360.85,126.32l-0.01,-0.05l0.0,0.0l0.01,0.05ZM531.38,144.9l0.16,-0.53l0.78,0.13l0.28,-0.96l1.18,0.72l-0.1,2.04l0.58,0.62l-0.44,0.97l-0.38,-0.82l-0.77,-0.33l-0.36,-1.55l-0.93,-0.28ZM519.62,110.65l0.67,-1.43l-0.59,-2.65l0.45,-2.65l-0.49,-1.1l0.57,0.5l0.52,0.03l0.81,-0.04l0.61,-0.56l1.0,0.01l1.31,-0.97l-0.58,-1.12l1.09,-0.48l-0.09,1.06l0.61,0.43l0.35,1.43l0.7,0.41l1.89,0.08l0.69,-0.78l-0.08,-1.25l0.9,-0.01l0.28,0.61l-1.0,1.11l-0.35,0.98l-1.33,0.18l-0.66,0.72l-0.21,1.5l0.63,0.59l-1.78,0.75l-0.15,1.47l0.7,1.77l1.56,0.02l0.23,-0.67l1.76,1.19l0.89,-0.75l0.31,0.76l-0.25,0.83l-0.63,0.22l-3.49,-0.79l-1.31,0.64l-0.73,-0.09l-4.86,-1.92ZM530.8,110.51l0.0,-0.0l0.0,0.0l-0.0,0.0ZM525.21,99.98l0.36,-0.67l0.3,-0.02l-0.13,0.45l-0.53,0.24ZM526.86,145.61l0.13,-1.36l0.19,0.01l0.16,1.06l-0.48,0.29ZM521.53,48.5l1.34,-0.94l0.27,-0.41l-0.18,0.37l-1.05,1.19l-0.37,-0.21ZM523.47,46.55l0.74,-1.75l0.73,-0.99l0.79,-0.33l-0.83,0.67l-1.43,2.39ZM524.86,146.25l-0.6,-0.87l0.65,-0.55l0.64,0.38l-0.68,1.04ZM521.92,143.29l-0.09,-0.72l0.45,-0.92l1.05,-0.36l-0.3,1.81l-1.11,0.18ZM521.59,100.37l0.08,0.24l-0.17,0.69l-0.53,-0.6l0.62,-0.34ZM515.68,53.56l0.24,-0.31l0.44,-0.74l0.23,0.26l-0.91,0.8ZM513.57,62.92l0.86,-0.42l0.25,0.2l-0.47,0.35l-0.65,-0.13ZM513.21,101.75l-0.01,-0.69l0.26,0.12l-0.25,0.57ZM513.21,102.21l0.03,0.18l-0.03,-0.01l-0.0,-0.16ZM514.23,100.99l0.75,-1.56l1.22,0.82l-0.83,0.48l-0.1,0.34l0.57,0.61l-0.6,1.18l-0.51,-1.48l-0.5,-0.4ZM513.43,94.67l0.2,-0.63l0.02,-0.22l0.27,0.43l-0.48,0.42ZM510.12,54.83l-0.51,-0.07l1.07,-0.63l-0.28,0.32l-0.27,0.38ZM504.39,126.47l0.07,-0.33l-0.1,-0.23l0.32,0.37l-0.29,0.19ZM486.98,62.49l0.03,-0.0l0.0,0.0l-0.02,0.01l-0.02,-0.01ZM485.63,63.39l0.54,0.1l-0.02,0.34l-0.25,0.04l-0.27,-0.47ZM454.09,50.17l0.13,-0.09l0.08,0.14l-0.16,-0.03l-0.06,-0.01ZM452.27,53.38l0.03,-0.01l0.17,0.41l-0.06,0.02l-0.14,-0.42ZM434.46,54.14l1.26,0.02l0.01,0.07l-0.28,0.6l-1.14,0.18l-0.82,-0.99l0.32,-0.17l0.65,0.3ZM433.13,40.66l1.23,-0.46l0.58,1.41l-0.66,1.05l0.78,0.6l0.2,1.54l-0.51,1.34l-0.44,-1.53l-1.17,-1.68l0.52,-0.78l-0.53,-1.5ZM429.88,63.81l0.68,0.02l-0.03,0.45l-0.01,0.0l-0.63,-0.47ZM388.46,45.73l0.19,0.38l0.6,0.14l0.66,-0.5l0.49,0.43l-0.85,1.52l0.48,0.81l0.76,-0.08l0.9,-0.83l0.91,1.53l0.73,0.07l0.54,-0.96l2.48,-0.49l1.11,-1.08l0.48,-0.06l1.6,0.78l0.31,1.27l0.36,0.27l0.52,-0.53l0.42,-1.83l1.74,-1.16l0.4,1.46l0.88,1.42l0.64,0.26l0.41,-0.56l-0.33,-2.1l-0.35,-0.37l0.11,-0.61l0.43,-0.68l0.66,-0.29l0.31,0.62l-0.3,0.71l0.45,0.57l0.63,-0.08l0.43,-0.65l0.71,0.3l0.93,-0.24l0.87,2.86l0.3,0.4l1.03,-0.21l0.11,1.3l-0.91,-0.0l-0.5,0.59l-0.34,1.72l0.24,0.65l-1.67,-0.59l-2.12,3.28l-1.32,0.44l-5.74,4.16l-1.26,-1.19l-4.49,-1.99l-0.23,-0.57l-2.11,-1.43l-0.51,-0.67l-1.33,-0.4l-0.24,-2.15l-1.15,-1.39l-0.81,-3.26l0.19,-1.08l-0.71,-0.87l0.22,-1.47l2.09,2.41ZM378.38,56.74l0.59,0.01l0.56,-0.49l-0.1,-1.47l1.5,0.55l0.63,-0.24l0.82,-0.95l-0.3,-2.5l0.3,-1.02l-0.8,-0.9l1.34,-1.21l0.85,-1.31l1.2,-0.18l1.05,2.05l-0.33,0.97l0.13,1.09l1.61,1.53l-0.32,2.31l0.53,0.38l0.69,-0.27l1.36,0.32l1.54,1.16l-0.09,0.49l-0.94,0.42l-1.6,0.14l-3.8,-1.49l-4.6,1.28l-1.27,-0.09l-0.56,-0.61ZM378.62,87.87l0.0,-0.0l0.01,0.0l-0.01,-0.0ZM367.78,126.07l0.13,0.18l0.18,0.5l-0.31,-0.69Z", "name": "Northern Territory"}, "AU-QLD": {"path": "M895.23,423.61l0.32,-1.8l-0.29,-0.7l0.29,-1.4l-0.28,-1.26l0.7,-1.19l0.05,-0.87l0.74,0.6l0.78,0.04l-1.73,6.51l-0.57,0.07ZM554.86,165.23l3.44,2.77l2.03,0.68l0.53,0.48l1.77,0.01l2.58,1.08l3.56,-0.34l0.63,0.65l3.52,1.44l3.63,0.53l0.49,0.35l0.63,1.47l1.83,1.13l-0.24,0.58l0.28,2.45l1.29,2.74l0.79,0.98l1.78,0.88l2.7,0.36l4.52,3.58l3.59,0.83l2.55,1.15l0.62,1.04l1.23,0.96l2.68,0.21l2.72,-0.31l3.72,-0.8l0.9,-0.6l1.39,-0.12l2.27,-1.21l1.74,-1.36l1.12,-0.24l0.69,-1.05l1.85,-0.78l0.86,-2.2l0.47,-2.74l1.0,-2.05l0.24,-1.48l-0.27,-1.25l2.19,-2.8l0.73,-1.92l0.72,-0.18l1.9,-2.19l0.78,-2.97l0.58,-0.25l0.71,-1.51l0.27,-1.3l-0.32,-0.86l0.63,-0.93l0.74,-3.24l1.75,-3.53l-1.15,-3.05l0.58,-0.8l0.77,-5.54l1.03,-3.8l1.85,-4.36l0.22,-1.52l1.22,-1.66l-0.02,-0.91l0.52,-0.51l0.07,-2.3l-1.28,-2.59l-1.81,-8.81l0.24,-1.73l1.5,-4.45l-0.05,-2.16l-0.39,-1.04l-2.14,-2.82l-0.35,-1.73l0.13,-1.92l1.15,-4.54l2.21,-4.67l0.84,-0.18l-0.02,-0.89l0.67,-1.62l-0.26,-1.01l-1.28,-1.73l-0.44,-2.83l-0.42,-0.4l0.88,-1.4l2.39,-1.5l1.32,-3.23l0.29,0.19l0.47,-0.42l0.46,0.54l0.34,2.91l0.94,1.4l0.46,0.19l0.29,-0.4l-0.02,-1.38l-0.54,-1.78l1.52,-0.52l0.55,-0.8l-2.09,-0.35l-1.54,-1.02l1.81,-1.02l0.67,0.02l0.42,-0.32l-0.25,-0.46l-1.1,-0.46l-0.79,0.35l-1.99,0.0l-1.55,-1.5l0.63,-0.5l-0.12,-0.73l-2.18,-0.29l1.55,-4.06l1.35,0.27l0.84,-0.5l-0.85,-1.22l-0.3,0.09l0.93,-2.82l1.39,-1.79l0.46,2.78l0.3,0.39l0.45,-0.2l0.7,-1.28l0.99,0.66l0.6,-0.2l0.24,-0.69l-0.05,-0.51l-0.91,-1.09l-0.87,-0.35l-0.04,-1.38l0.41,-1.79l0.97,-1.31l0.0,-1.15l2.67,-8.19l0.05,-2.32l0.58,-1.99l-0.21,-4.27l4.04,-1.23l1.49,-1.76l0.87,-2.14l1.02,0.04l0.68,-0.39l1.37,0.86l-0.91,0.75l-0.39,0.82l-0.87,0.54l-0.26,2.04l0.47,0.57l0.46,-0.14l0.62,-0.55l0.46,-1.07l0.61,-0.03l0.27,1.1l0.71,0.42l0.0,1.25l0.73,0.07l0.54,-0.55l0.48,0.02l0.75,1.63l0.61,2.49l-0.3,1.02l0.18,1.43l0.91,0.79l0.63,1.46l-1.09,2.0l0.4,0.8l-0.02,1.44l0.42,0.82l0.11,5.23l3.08,2.43l2.6,-0.66l1.8,1.36l-2.54,3.71l-0.2,4.07l0.86,0.7l1.74,-0.02l1.41,0.98l0.91,3.25l2.89,1.58l-1.13,2.55l-0.44,3.25l0.21,0.47l0.72,-0.43l0.58,0.19l0.76,-0.36l1.25,0.1l-0.48,1.25l0.32,0.66l-0.18,2.7l0.54,2.73l-0.01,3.02l1.49,2.25l-0.28,1.49l0.27,0.74l-0.64,1.4l-0.76,3.6l1.49,3.02l0.34,1.5l1.65,1.49l0.45,4.35l0.9,2.94l0.81,1.53l1.52,1.57l2.6,0.91l2.63,-1.21l2.22,-1.88l0.52,-0.99l0.07,-1.39l0.58,0.08l0.48,0.72l1.37,0.3l3.11,-1.46l0.92,-1.77l0.24,0.07l1.31,1.75l-0.23,1.73l0.22,0.63l1.08,0.19l-0.4,0.79l0.16,1.66l1.36,1.78l0.64,0.28l1.26,-0.19l0.94,1.06l2.19,0.28l0.62,1.11l0.28,1.52l1.87,1.59l0.89,-0.1l2.1,0.96l0.96,-0.02l0.25,0.86l1.26,1.49l1.18,0.07l-1.93,2.95l-0.18,2.12l0.56,1.48l0.9,0.53l-0.52,0.9l0.11,1.09l-0.63,0.42l-0.31,1.12l0.58,0.57l0.19,0.72l-0.29,0.83l1.1,1.17l0.15,0.53l-0.31,0.79l1.27,2.62l-0.15,1.42l0.3,0.56l-0.38,0.7l0.01,0.86l1.7,2.15l0.65,1.41l-0.61,3.05l0.63,0.65l0.12,0.68l-1.15,1.58l-0.34,2.77l0.58,0.93l0.88,0.08l0.37,1.08l2.2,3.25l2.04,1.44l0.35,0.96l0.77,0.51l1.1,1.68l-0.53,0.22l-0.24,0.53l1.0,1.98l0.98,-0.24l-0.16,-1.28l0.85,-0.75l0.78,0.41l1.3,-0.85l-1.39,2.61l-0.21,1.48l1.56,2.34l0.34,1.8l1.41,2.7l0.92,0.86l-0.1,2.71l1.7,2.45l-0.89,1.14l-0.02,1.82l-0.44,0.59l0.53,1.74l-0.28,1.49l-2.0,4.73l0.11,2.47l2.14,2.73l1.68,0.54l0.55,2.79l0.51,0.46l2.34,0.23l-0.16,1.57l-0.87,2.29l-0.47,3.29l0.21,0.74l1.34,2.03l1.67,1.14l1.22,1.54l1.26,0.48l1.04,1.03l2.03,0.99l1.1,0.23l0.98,-0.38l1.1,1.35l2.27,1.57l1.56,-0.19l1.55,-1.64l0.11,1.9l1.72,2.27l0.99,-0.1l2.07,0.56l0.71,-0.3l2.89,0.04l0.76,-0.38l0.48,1.13l1.28,1.55l0.87,2.51l0.12,1.08l-0.71,0.35l2.73,3.17l2.51,0.3l0.38,-0.55l-0.64,-1.51l-0.05,-1.08l0.97,0.31l0.32,0.31l0.64,2.73l1.38,1.17l2.09,0.36l0.48,-0.54l0.78,-0.16l1.03,1.18l3.01,0.73l0.44,1.0l-0.38,0.17l0.01,1.55l2.86,2.03l0.22,0.64l0.98,0.03l0.89,-0.66l-0.19,-0.6l0.45,-0.79l-0.83,-1.17l0.85,0.54l1.2,-0.37l0.18,1.53l0.69,0.91l0.17,0.77l0.75,0.12l0.45,-0.3l0.32,1.38l0.56,0.33l1.79,-0.78l0.12,0.93l1.19,1.26l-0.19,0.86l0.29,0.93l-1.03,-0.29l-0.66,0.88l-1.18,-0.75l-0.5,0.45l0.37,1.64l-0.96,0.57l-0.41,0.51l0.11,0.39l0.82,1.41l0.63,0.29l-0.29,0.43l0.62,1.3l0.67,0.4l0.53,0.89l1.1,0.08l0.18,1.03l-0.53,1.6l0.82,0.13l0.71,-0.78l0.92,0.53l0.87,-0.14l1.12,0.83l0.18,0.56l-0.24,0.51l0.3,0.53l1.33,-0.14l0.55,0.53l0.75,0.07l1.56,1.91l0.0,0.59l-0.78,1.38l0.06,1.09l0.9,1.51l0.81,-0.2l0.52,0.36l-0.12,0.57l0.51,1.15l-0.37,0.14l-0.22,0.64l0.74,0.46l-0.68,0.66l-0.01,1.33l0.44,0.32l1.07,-0.53l0.74,0.3l0.09,0.84l0.59,0.81l0.89,0.15l-0.5,1.04l0.79,1.89l-0.81,0.52l-0.13,1.09l0.91,1.52l-0.02,1.8l1.04,1.93l0.16,1.45l0.87,1.7l-0.35,0.7l1.16,1.46l-0.4,0.7l0.14,0.41l1.27,0.56l0.5,0.84l0.64,0.27l-0.07,1.67l-0.78,1.08l0.42,0.58l0.8,-0.16l1.62,-1.04l0.88,-1.37l1.17,1.87l1.79,1.5l1.37,2.34l0.58,0.34l0.58,-0.45l-0.56,-2.19l-2.01,-4.4l0.42,-0.47l-0.53,-0.9l1.08,-2.64l1.23,-0.52l0.38,0.2l0.88,1.95l0.73,0.51l1.0,2.68l4.64,2.23l0.88,0.91l1.62,0.56l2.03,1.68l0.56,-0.04l0.13,-0.7l-0.63,-0.91l-0.17,-1.35l-0.68,-0.53l-0.2,-1.05l0.47,-1.8l0.99,0.13l-0.03,1.25l2.74,1.43l-0.55,0.73l-0.76,-0.4l-0.6,0.73l0.31,0.58l-0.16,0.35l0.46,0.56l0.4,-0.1l0.33,1.49l0.56,0.1l0.48,-0.36l0.11,0.65l0.6,0.32l0.32,0.76l-0.88,4.8l-0.86,0.16l-0.21,0.59l0.77,0.77l0.14,1.49l-0.34,2.86l0.72,0.62l0.2,1.19l0.7,0.35l-1.1,1.41l0.59,2.38l1.41,1.63l-1.01,0.01l-0.42,0.56l1.12,0.59l0.52,1.05l0.46,0.2l1.18,-0.64l1.31,0.52l0.47,0.85l1.91,1.55l0.64,1.95l0.74,1.09l2.02,0.6l0.35,0.65l0.71,0.14l2.65,3.41l0.99,-0.35l1.07,0.69l-0.2,0.9l0.49,0.73l0.48,0.21l0.55,-0.31l0.17,-0.69l0.55,-0.05l1.42,1.03l0.58,-0.44l-0.18,-0.78l0.74,0.43l0.62,-0.51l0.81,2.27l0.97,0.74l0.91,-0.05l0.78,0.89l1.5,4.58l1.21,2.43l1.49,1.92l4.11,3.16l2.23,0.61l1.28,1.19l0.6,1.87l0.15,2.58l1.97,2.99l0.86,0.53l-1.12,-0.01l-0.36,0.48l0.19,0.46l1.17,0.31l1.71,1.42l2.6,0.75l0.6,-0.32l1.48,0.38l0.28,2.58l-0.89,0.56l-0.42,0.84l0.52,0.51l1.1,-0.56l-0.07,0.4l0.39,0.43l-1.18,1.26l0.07,2.35l-0.48,0.66l0.86,0.82l0.16,0.81l1.26,0.62l0.72,1.25l0.27,1.61l-0.3,1.64l0.4,0.39l0.51,-0.22l0.78,-2.09l0.6,1.29l1.41,0.43l-1.0,2.23l-1.52,6.21l0.4,1.37l0.95,0.43l-0.48,1.51l-0.08,4.49l0.29,0.9l0.57,0.28l-0.06,4.71l1.39,4.22l-1.72,0.02l-0.91,0.55l-0.89,1.13l-0.27,1.18l0.67,0.58l1.04,0.01l-0.03,0.43l-1.12,1.21l0.13,0.82l0.68,0.62l1.59,0.65l0.55,2.06l1.48,0.78l0.98,2.09l0.24,1.98l1.01,1.82l0.99,1.07l0.0,0.89l0.67,0.18l-0.2,1.63l-0.46,0.33l-0.22,1.1l0.46,0.76l0.54,-0.07l0.15,2.27l1.08,1.52l-2.88,2.07l-0.64,-0.16l-2.92,0.43l-1.96,2.26l-5.27,-0.75l-2.4,0.85l-3.04,-1.56l-0.44,0.11l-0.65,0.85l-0.65,-1.23l-0.72,-0.45l-0.61,0.05l-1.34,1.09l-0.88,1.36l-2.08,0.48l-1.31,1.17l-1.54,0.06l-4.59,2.63l-0.06,0.97l0.55,0.56l0.4,1.15l1.32,1.47l-0.38,0.65l-0.67,3.73l-1.65,0.52l-1.61,-0.2l-0.76,1.19l-0.91,-0.27l-0.73,-1.38l-0.59,-0.26l-1.59,0.95l-2.03,0.64l-1.01,1.61l-0.14,1.21l-2.09,2.1l-0.72,0.3l-0.28,-0.06l-0.14,-0.93l-0.53,-0.45l-0.61,-4.24l-3.0,-2.06l-2.04,-0.35l-0.13,-1.66l-0.43,-0.7l-1.44,-0.27l-0.92,-0.81l-3.22,-1.32l-3.95,0.55l-3.62,-0.27l-3.37,-2.67l-1.53,0.48l-1.77,-0.03l-3.11,1.1l-5.66,0.15l-1.12,0.39l-1.62,-0.28l-0.6,-1.0l-2.77,0.35l-0.64,0.48l-1.09,1.93l-3.13,1.35l-2.08,1.92l-1.85,0.71l-0.82,2.25l-1.85,1.35l-175.66,0.0l0.0,-71.14l-0.4,-0.4l-65.92,0.0l0.0,-217.36ZM634.98,72.13l0.07,1.52l-0.75,0.25l-0.0,-0.27l0.68,-1.5ZM794.18,253.26l0.98,0.76l0.04,0.74l-0.87,-0.5l-0.16,-1.0ZM857.22,337.03l-0.47,-0.71l-0.74,-0.46l0.64,0.02l0.73,0.67l-0.16,0.48ZM808.2,279.27l0.01,-0.03l0.0,0.01l-0.01,0.01ZM894.45,408.27l1.55,-0.69l-1.09,4.97l-0.28,-0.55l-0.17,-3.73ZM886.84,364.36l3.44,-2.59l1.5,-2.35l0.17,-1.15l-0.25,-1.08l-1.78,-2.48l2.02,-1.81l0.03,3.73l0.45,1.38l1.48,1.63l-4.67,10.55l-1.71,4.78l0.38,1.54l-0.03,0.65l-0.47,0.56l-0.97,-1.28l-0.27,-2.41l-0.88,-0.96l0.03,-0.5l0.83,-0.7l0.33,-2.12l0.73,-0.78l0.75,-1.69l-0.23,-1.4l0.21,-0.83l-1.09,-0.71ZM842.74,323.55l0.45,-0.06l0.34,0.55l1.96,0.73l0.16,0.55l0.92,-0.1l-0.13,1.06l0.28,1.24l1.28,1.66l0.04,0.62l-0.42,0.5l-0.86,0.08l-0.82,-0.93l-0.54,-1.35l-3.32,-3.96l0.65,-0.58ZM830.57,296.15l0.43,-0.69l0.69,0.74l-0.8,0.78l-0.32,-0.83ZM817.53,293.83l-0.31,-0.73l0.24,-1.22l0.32,0.61l-0.26,1.34ZM813.87,298.45l-0.07,-0.18l0.14,-0.5l0.02,0.02l-0.09,0.67ZM796.93,249.38l0.39,-0.61l-0.26,-0.51l0.15,-0.74l0.2,1.17l0.86,0.91l-0.31,0.45l-0.56,-0.05l0.0,-0.38l-0.46,-0.25ZM795.44,246.36l0.61,-1.24l0.25,-0.0l-0.29,0.78l0.26,0.48l-0.83,-0.02ZM749.09,223.31l0.73,-0.21l0.41,0.11l-0.82,0.53l-0.33,-0.44ZM744.59,213.75l0.15,0.18l0.24,0.43l-0.63,0.03l0.24,-0.64ZM736.61,202.99l0.82,0.06l-0.34,1.45l1.2,1.37l-0.24,0.47l0.52,0.45l-0.84,1.33l-1.16,-0.41l-0.49,-1.93l-0.63,-1.0l-1.67,-1.4l2.22,0.7l0.49,-0.26l0.11,-0.83ZM659.42,3.33l-0.8,0.47l-1.97,-0.24l0.39,-0.17l2.38,-0.05ZM647.59,21.5l0.41,-0.9l0.53,-0.17l1.05,0.16l0.38,0.57l-0.85,1.1l-1.23,-0.35l-0.29,-0.41ZM649.38,30.72l-0.54,-0.03l0.07,-0.46l0.67,0.13l-0.2,0.37ZM645.89,31.65l1.45,-1.0l1.33,1.91l-1.38,0.41l-0.5,0.65l-0.85,-1.0l-0.05,-0.97ZM646.88,0.56l0.57,-0.14l1.03,0.3l-0.66,0.02l-0.94,-0.18ZM646.3,20.63l-0.86,-0.94l0.77,-1.18l0.64,0.62l-0.55,1.5ZM580.08,168.21l-0.09,-0.42l0.25,-0.33l0.0,0.68l-0.16,0.08ZM580.47,166.56l0.24,-0.86l0.98,-1.02l0.14,-0.7l1.68,-1.28l3.93,-0.62l2.03,-0.85l1.14,0.89l0.93,0.16l0.41,0.52l-0.13,0.45l-0.86,0.0l-0.88,0.44l-1.12,-1.25l-0.92,0.65l-0.86,0.13l-0.15,0.84l-0.47,0.41l0.06,1.06l-0.45,1.02l-0.41,-0.43l-0.64,-0.04l-0.67,1.13l-1.29,0.67l-1.31,-0.01l-0.83,-1.11l-0.54,-0.22ZM585.94,176.86l0.11,-0.05l-0.09,0.11l-0.03,-0.05ZM586.42,176.57l1.36,-1.68l0.73,0.61l-0.07,0.48l0.39,0.53l-1.23,0.38l-0.42,-0.42l-0.77,0.11Z", "name": "Queensland"}, "AU-SA": {"path": "M431.55,527.42l-1.49,-0.08l-2.09,0.56l-1.63,-0.43l-2.53,-2.65l-3.47,-2.09l-3.13,-2.37l-5.49,-3.01l-8.05,-3.16l-1.12,-0.04l-3.16,1.95l-4.34,1.28l-5.33,-0.55l-8.64,-0.29l-1.79,0.5l-2.99,-0.12l-4.19,0.64l-4.76,0.16l-1.91,0.52l-5.56,0.32l-1.42,0.52l-2.56,0.22l-0.0,-135.9l264.47,0.0l0.01,192.75l-0.73,0.25l0.02,102.26l-5.65,0.36l-1.96,-0.81l-3.05,-2.44l-1.21,-0.45l-0.81,-0.88l-0.5,-1.66l-2.15,-3.86l-2.64,-2.2l0.33,-0.45l-0.52,-1.2l-1.96,-1.04l-0.89,0.19l-4.18,-5.46l-1.04,-2.0l0.78,-0.66l0.12,-0.95l-1.03,-1.69l-0.25,-1.37l-1.16,-0.94l2.27,-1.2l1.38,-1.6l0.49,-2.08l-0.15,-3.5l-4.41,-9.9l0.32,-0.37l-0.14,-1.11l-1.68,-4.28l-2.66,-3.23l-1.32,-0.67l-4.12,-3.71l1.64,0.15l0.9,-0.69l0.38,-2.51l-1.7,-1.57l-0.92,-0.37l0.68,-0.38l1.58,0.28l0.67,-0.53l0.08,-0.8l-0.48,-0.67l0.29,-1.03l-0.21,-0.6l-0.68,-0.18l-0.4,0.27l-1.12,-1.29l-2.07,-0.42l-0.21,0.84l-1.63,1.03l-1.66,-0.11l-1.7,0.98l-0.21,0.73l0.2,0.92l1.5,0.75l-1.9,-0.46l-0.89,-0.77l-1.83,0.11l-0.47,0.31l-0.04,0.53l0.5,0.56l2.45,0.44l-0.82,0.3l-1.79,-0.65l-1.18,0.1l-2.42,0.73l-0.53,0.86l-1.04,0.77l-2.75,0.62l-3.66,-0.27l-1.52,0.61l-0.73,-0.23l-0.99,-0.86l0.59,-1.49l2.61,-1.25l2.2,-2.66l1.93,-1.26l0.16,-2.0l0.61,-1.01l-0.29,-1.1l0.15,-1.71l1.06,-1.96l-0.6,-4.09l0.16,-1.97l0.88,0.56l0.38,-0.94l-0.36,-1.15l-2.05,-1.46l-0.22,-1.14l-1.51,-1.26l-0.8,-1.66l-0.85,-0.5l-1.43,-4.48l-0.62,-0.95l-0.92,-0.56l0.01,-1.24l-1.85,-2.15l-0.8,0.39l-1.35,2.67l0.04,0.8l0.53,0.83l-2.33,2.68l-0.86,2.79l-0.13,1.87l0.46,0.65l-0.6,1.54l-0.2,2.07l-1.21,2.11l-0.92,2.98l-0.08,1.38l-0.51,0.62l0.06,1.72l-1.33,1.08l-2.41,-1.23l-3.09,-0.32l-2.07,1.34l-2.13,0.03l-1.57,1.74l-2.73,-0.37l-2.84,1.74l-0.6,-0.03l-0.65,-0.82l0.32,-0.75l1.68,-1.41l0.7,-1.41l0.07,-0.64l-0.45,-1.12l0.73,-0.78l-0.01,-0.85l0.9,-1.25l1.21,0.53l1.14,0.06l2.77,-0.52l2.66,1.19l0.87,-0.21l0.79,-0.81l0.35,-3.05l1.2,-4.58l-0.7,-2.47l-0.05,-1.51l-0.52,-0.66l-0.54,-0.07l0.77,-0.69l0.59,-3.05l-0.21,-1.82l-0.66,-1.33l0.73,0.22l0.7,-0.52l0.81,-1.83l-0.43,-1.42l2.03,-2.2l-0.31,-1.14l2.22,-2.12l1.17,-2.04l0.68,-0.1l1.53,-2.08l0.67,0.43l0.77,-0.57l0.11,-2.42l-1.61,-3.19l0.11,-1.0l-1.24,-2.17l0.79,-1.47l1.98,-1.06l0.9,-0.19l0.54,0.25l0.63,-0.3l0.29,-0.62l-0.08,-1.17l-0.74,-1.61l-1.1,-0.4l-1.2,-5.24l0.59,-0.47l0.06,-0.66l-1.86,-1.38l-0.02,-1.02l-0.94,-1.23l0.27,-0.88l-0.75,-0.37l-0.28,-0.79l-0.7,0.0l-0.46,1.47l0.01,3.08l0.85,0.66l0.32,1.47l0.04,1.79l-0.42,0.94l-0.6,0.14l-0.21,0.45l0.5,1.46l-0.58,-0.02l-1.56,-0.96l-0.8,0.28l-0.95,0.87l-0.12,1.06l-1.64,1.75l-1.33,0.77l-0.52,2.18l-1.04,1.84l-0.39,2.91l-1.39,2.08l-1.75,3.75l-1.45,1.21l-2.78,0.55l-0.94,-1.04l-0.93,-0.06l-0.66,1.13l-0.88,0.73l0.41,0.91l-1.89,0.34l-1.79,0.93l-0.41,0.53l-2.27,0.91l-0.56,0.54l-0.15,0.69l-1.72,1.36l-1.39,0.45l-1.45,1.2l-0.45,1.42l-2.63,4.47l-2.1,1.18l-0.51,0.72l0.12,0.62l-0.28,0.48l0.31,0.88l-0.16,1.29l-0.3,-0.76l-0.44,-0.23l-2.68,0.99l-0.47,0.45l-0.5,1.43l0.36,0.96l-0.85,-0.0l-0.62,1.15l-0.15,1.26l0.54,0.94l-0.98,0.07l-0.92,1.39l0.34,0.51l1.14,0.15l1.02,-0.27l1.17,-1.01l0.71,0.34l0.42,-0.29l-1.02,1.78l0.75,2.95l-0.58,0.25l-0.52,-1.14l-1.36,-0.68l-0.91,-1.3l-0.99,-0.51l-1.35,0.15l-0.95,0.94l-0.35,1.26l-0.67,0.0l-0.44,-1.6l-3.3,-3.8l-2.66,-1.26l0.18,-0.76l1.14,0.5l2.0,-0.5l0.43,-0.54l-0.25,-0.54l-1.15,-0.26l-0.03,-1.13l-0.51,-0.26l-0.68,0.52l-0.16,-0.75l0.41,-1.23l-0.76,-1.68l-0.73,-4.68l-0.64,-1.12l-1.29,-0.58l0.66,-0.59l-0.25,-3.24l-1.67,-2.82l-1.12,-0.59l-2.95,-3.05l-3.3,-2.65l0.4,-2.08l-0.17,-1.71l-1.11,-3.27l-2.61,-2.42l0.55,-0.08l0.31,-0.45l-0.59,-1.44l-2.56,-0.92l-0.87,0.23l-0.22,1.05l-1.53,-0.88l-0.86,-0.14l-1.29,0.51l-0.45,-0.43l-0.57,0.1l-0.22,0.97l-0.89,-0.77l-1.0,-2.83l-0.9,-0.34l0.48,-1.02l-0.55,-1.15l-0.68,-0.36l-0.68,0.26l-1.34,-0.37l1.17,-1.14l0.32,-0.99l-1.35,-2.51l2.15,0.19l-0.14,1.6l0.88,0.47l1.49,-2.04l0.57,-1.3l-0.51,-2.53l-1.08,-1.77l-1.8,-1.64l-0.96,-0.22l-0.76,0.4l-0.56,-0.22l-0.71,0.19l-0.78,0.93l-1.26,-0.1l-0.94,1.09l-0.4,0.06l0.28,-2.26l0.15,-0.27l0.47,0.25l0.98,-0.43l0.16,-1.0l-2.67,-3.51l-0.76,-0.16l-0.55,0.42l-0.19,-1.0l-1.4,-0.59l-0.06,-0.61l-0.49,-0.36l0.19,-0.78l-0.89,-0.63l-1.14,-0.19l-0.59,0.23l-0.5,1.64l-1.04,-0.57l-0.35,-0.8l-0.58,-0.01l-1.43,0.75l-0.01,0.79l0.6,0.39l-0.39,0.42l-2.14,-0.45l-0.95,0.59l-1.62,-0.77l-0.85,0.26l-2.55,-2.36l-1.17,0.15l-0.35,-0.75l-4.27,-3.03l-2.64,-0.05l-1.63,-0.36l-1.65,0.17l-1.37,0.67l-0.32,0.6l0.09,0.62ZM576.07,616.55l-0.02,-0.01l-0.01,-0.01l0.03,0.02ZM479.63,556.89l0.06,-0.0l0.03,0.09l-0.07,-0.07l-0.02,-0.01ZM495.39,591.75l-0.33,-0.3l0.35,0.13l-0.01,0.17ZM494.74,591.17l-1.57,-0.76l-1.37,0.31l-0.82,0.54l1.46,-2.42l0.54,0.82l1.6,0.4l0.17,1.1ZM581.2,618.92l-3.37,-2.32l0.8,-0.43l0.16,-0.82l0.83,-0.73l1.77,1.06l-0.23,1.61l0.49,0.67l-0.44,0.45l-0.02,0.52ZM522.49,624.47l1.16,-3.41l2.05,-0.29l2.47,-0.93l5.97,-0.92l1.54,-0.69l2.96,-0.68l1.15,-0.84l2.39,0.69l3.08,-0.68l-0.44,1.1l0.24,0.41l0.96,0.19l-1.11,1.21l0.02,0.57l0.46,0.43l2.16,0.45l1.88,-0.39l0.11,1.3l0.83,0.44l1.48,-0.53l0.82,-1.56l0.95,0.04l1.95,0.72l0.31,1.07l0.92,0.39l0.08,0.44l-0.73,0.37l-0.79,0.98l-2.27,-1.07l-2.59,-0.31l-1.5,0.2l-2.84,0.98l-0.78,1.13l0.32,1.29l-0.27,0.52l-1.05,0.26l-1.78,1.06l-1.92,-1.72l-3.31,-0.8l-1.08,0.4l-0.45,1.03l-0.43,0.14l-2.78,-0.48l-2.02,0.66l-1.39,-0.52l-2.98,0.82l-1.16,-2.05l-1.54,-0.53l-1.05,-0.92ZM513.98,602.42l0.31,0.26l0.09,0.32l-0.28,-0.05l-0.11,-0.53ZM477.12,570.12l0.01,-0.29l0.58,-0.16l0.04,0.23l-0.63,0.22ZM457.09,534.55l-0.67,0.27l-0.1,-0.04l0.96,-0.87l-0.19,0.64Z", "name": "South Australia"}, "AU-NSW": {"path": "M632.87,581.75l-0.6,-1.08l-1.24,-0.13l-1.42,-0.85l-1.36,0.22l-0.45,-0.7l-1.48,-0.95l-1.22,0.28l-1.26,-0.62l-1.94,-0.05l-0.72,-0.81l0.0,-122.14l175.84,-0.01l2.32,-1.66l0.68,-2.09l1.81,-0.7l1.96,-1.82l3.25,-1.45l1.47,-2.29l2.21,-0.36l0.51,0.92l2.18,0.44l1.05,-0.44l5.79,-0.17l3.11,-1.1l2.15,-0.03l0.82,-0.4l3.27,2.64l3.86,0.31l3.76,-0.57l2.98,1.22l0.96,0.83l1.4,0.26l0.45,2.26l2.24,0.47l2.6,1.67l0.62,4.22l0.57,0.54l0.22,1.06l1.01,0.32l1.03,-0.39l2.33,-2.34l0.23,-1.41l0.63,-1.18l1.97,-0.61l1.27,-0.83l0.83,1.41l1.64,0.59l0.79,-1.38l1.48,0.24l2.03,-0.7l0.38,-0.66l0.93,-4.49l-1.45,-1.76l-0.88,-1.8l4.24,-2.33l1.5,-0.05l1.39,-1.2l2.11,-0.5l0.69,-0.56l0.37,-0.93l1.13,-0.95l0.5,0.39l0.24,0.9l0.74,0.42l0.69,-0.11l0.54,-0.76l0.67,0.57l2.23,0.89l1.23,-0.13l1.34,-0.71l1.67,0.44l3.68,0.3l0.79,-0.45l1.31,-1.81l2.67,-0.41l0.86,0.15l3.14,-2.21l0.31,0.38l0.72,0.11l0.49,2.97l-0.62,4.55l0.32,2.13l1.15,1.62l-0.62,2.34l0.11,2.42l-1.8,1.74l-1.52,2.26l-0.44,1.36l0.2,1.4l-0.47,0.26l-1.61,2.99l-0.23,1.18l0.62,1.63l-0.27,0.75l0.13,1.05l-0.83,2.49l-0.07,2.91l-0.74,1.85l0.13,1.34l-0.43,0.64l-0.29,2.04l-1.31,2.06l0.02,2.57l-0.29,1.01l-1.13,1.97l0.13,0.87l-0.26,0.75l-1.98,4.17l-1.23,5.87l0.41,2.75l0.78,1.28l1.03,0.25l-0.02,0.44l-0.91,1.6l-0.13,1.1l0.43,0.82l-1.7,2.16l-0.48,1.86l0.33,1.97l-1.29,1.95l0.41,1.94l-1.93,2.09l-0.13,1.97l-1.11,1.32l0.21,0.76l-1.21,1.43l-0.17,1.31l-2.75,2.36l-1.48,2.5l0.1,0.78l-0.52,0.59l-0.42,1.66l0.17,0.6l1.06,0.81l-0.88,1.57l0.03,0.83l0.41,0.36l-0.55,1.92l0.11,0.7l-3.66,1.64l-1.3,1.1l-0.26,0.7l-1.07,0.5l-1.16,1.67l-0.61,-0.37l-1.94,0.84l-0.13,0.7l0.57,0.44l2.14,0.18l-0.01,0.4l-0.65,-0.03l-0.76,0.64l-1.16,-0.2l-1.71,0.35l-2.45,1.08l-1.78,1.34l-0.06,0.77l-1.36,1.23l-0.12,0.99l-1.33,1.17l-1.06,3.32l-0.74,0.6l-0.66,1.27l-0.85,-0.34l-1.45,1.12l-0.34,1.36l0.37,0.56l0.62,0.22l-0.9,1.2l-0.41,2.19l-0.97,0.03l-1.98,0.72l-0.33,-0.74l-0.66,-0.15l-0.45,0.55l0.24,1.33l-0.36,0.57l0.45,0.4l0.53,-0.07l0.71,-0.67l-0.14,1.43l0.61,0.18l-0.41,1.57l0.28,0.67l-0.26,1.55l-0.78,0.13l-0.53,0.97l0.28,0.71l0.7,0.15l-0.26,1.52l-0.31,0.67l-0.77,-0.83l-0.77,0.04l-0.52,0.95l-1.07,-0.03l-0.56,0.5l0.24,0.63l1.23,0.46l-0.64,0.85l0.74,0.48l-2.97,2.13l-1.38,1.61l-1.03,1.77l-0.52,3.14l0.27,0.81l-0.44,0.62l-0.55,-0.28l-0.58,0.12l-0.86,0.95l0.18,0.81l0.91,0.19l0.67,0.58l-1.05,4.26l-1.25,0.72l-0.52,1.16l-0.65,0.56l0.73,0.92l-0.26,0.54l0.78,0.56l-0.1,1.05l-1.81,0.65l-0.44,1.36l0.51,0.87l-1.24,0.6l-0.6,1.1l-1.35,0.76l-1.22,1.93l-0.37,0.98l0.12,1.27l-1.72,2.18l-0.09,2.02l-1.63,2.33l-0.84,1.99l-1.22,-0.29l-0.85,0.32l-0.16,0.66l0.52,0.53l0.42,1.75l-1.0,0.51l-0.92,1.05l0.25,1.68l-0.24,2.19l-0.87,-0.18l-0.6,0.93l-0.05,0.46l0.85,0.11l0.43,0.46l-0.45,1.48l0.53,2.11l-0.27,0.67l0.2,0.91l-1.0,0.99l-0.55,1.09l0.05,1.52l-0.44,0.92l0.25,1.7l-1.51,2.92l-0.37,2.16l-1.0,1.39l0.02,1.14l-0.57,0.96l-0.07,0.89l0.62,0.52l-0.3,1.28l0.49,1.04l-0.71,0.28l-0.74,1.08l0.68,0.81l1.16,0.03l0.93,0.68l0.67,2.12l-1.32,0.25l-0.51,0.76l0.43,1.38l-0.29,2.05l0.53,1.8l-38.44,-17.87l-1.68,-0.2l1.63,-2.53l0.23,-1.66l-0.41,-0.9l-1.04,-0.56l-0.04,-1.48l-0.44,-1.24l-1.37,-1.22l0.3,-1.22l-1.03,-3.06l0.26,-1.65l-1.15,-1.38l0.09,-1.46l-1.58,-0.75l-0.58,-0.85l-4.35,-1.66l-3.6,1.39l-0.61,-0.89l-1.14,-0.34l-2.08,0.62l-0.86,1.13l-0.26,1.2l-1.34,-0.37l-1.91,0.38l-1.08,-0.62l-1.18,0.99l-0.5,1.13l-1.23,-0.85l-0.83,0.14l-0.45,0.54l-1.34,-0.7l-0.76,0.14l-0.67,-0.58l-0.88,-0.09l-0.5,-0.55l-1.41,-0.1l-1.39,-1.19l-1.85,-0.05l-0.86,-0.48l-1.92,0.28l-1.23,1.68l-2.23,-0.44l-1.35,0.41l-3.11,-0.85l-1.57,-0.04l-0.55,-0.93l-1.05,-0.38l-2.87,0.4l-0.83,-0.34l-3.84,-3.07l-1.91,-0.4l-2.72,1.11l-3.38,-0.55l-2.21,0.01l-2.59,0.45l-0.99,0.84l-0.24,1.55l-0.63,1.35l1.06,2.04l-1.8,-0.52l-1.74,1.37l-1.26,0.08l-1.31,-1.28l-1.62,-0.38l-2.39,-2.64l-0.96,-0.39l-2.14,-4.22l-0.8,-0.68l-0.98,-0.14l-2.07,-1.69l-1.82,-2.34l-2.15,-0.75l-0.49,-0.84l-1.83,-0.81l-2.72,-1.85l-2.8,-0.75l-1.27,-0.79l0.21,-1.41l-0.33,-1.2l-0.87,-0.68l-2.77,-0.91l-1.07,-1.85l-0.69,-3.46l0.29,-0.88l-0.15,-0.77l0.46,-0.66l0.04,-1.56l-0.88,-0.94l-0.94,0.05l-0.46,-0.86l-2.81,-1.38l-2.04,-0.18l-1.22,-0.58l-0.55,0.38l-0.92,-0.66l-1.02,0.41l-0.47,-1.24l-1.77,-1.05l-1.7,0.74l-0.74,2.23l0.08,0.81l-1.18,0.06l-0.3,0.31l0.06,0.85l-1.32,-0.26l-1.52,-3.04l-0.1,-1.01l-1.76,-1.66l-0.28,-2.52l0.72,-1.6l-0.23,-0.79l-0.6,-0.28l-0.83,0.16l-0.68,-0.51l-0.96,-1.06l-0.53,-1.99l-1.03,-0.17l-1.06,-0.82l-1.13,0.19l-1.11,-1.26l-4.67,0.36l-2.0,-0.67l-1.09,0.17l-1.82,1.04l-1.62,1.64ZM792.63,618.74l0.12,1.0l0.94,0.94l0.7,0.22l0.45,-0.33l0.36,2.31l0.59,1.09l2.49,1.19l0.65,-0.1l1.39,-2.2l-0.2,-1.96l0.2,-1.32l-0.4,-2.53l0.85,-0.6l0.55,-1.65l-0.13,-2.1l0.95,-1.27l0.93,0.17l0.59,-0.73l2.29,0.12l0.9,-0.74l0.06,-0.55l-3.48,-1.67l-0.23,-0.81l-0.93,-0.31l-0.26,-1.11l-1.37,-0.94l-0.99,0.17l-6.11,4.19l-0.62,0.81l-0.81,4.35l0.29,1.95l-0.21,1.8l0.41,0.63ZM837.5,602.24l0.66,0.16l-0.16,1.07l-0.36,0.37l-0.26,-0.26l0.11,-1.35ZM754.78,629.71l0.49,1.8l1.03,0.83l-0.46,0.12l-0.95,-0.95l-0.11,-1.8Z", "name": "New South Wales"}}, "height": 825.8587272481366, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-ca-lcc.js b/plugins/jvectormap/jquery-jvectormap-ca-lcc.js new file mode 100644 index 0000000..0417b98 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-ca-lcc.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'ca_lcc',{"insets": [{"width": 900, "top": 0, "height": 867.2308867877657, "bbox": [{"y": -10408206.406521406, "x": -2874590.5560752777}, {"y": -4979679.615160916, "x": 2759058.0911967773}], "left": 0}], "paths": {"CA-NT": {"path": "M340.43,125.99l5.05,-2.26l0.92,-0.14l1.84,0.57l2.33,-0.98l0.54,-0.9l1.17,-1.01l2.46,-0.96l1.23,0.01l1.01,1.79l0.53,0.4l-1.93,8.61l-1.55,0.59l-2.09,-1.15l-0.06,-0.73l-1.16,-1.56l-1.32,0.13l-0.23,1.13l-0.75,0.07l-0.24,1.09l-1.34,-0.24l-0.23,-1.68l-1.46,-1.53l-3.25,0.54l-0.46,0.38l-1.74,0.41l-0.1,-1.27l0.65,-0.58l0.17,-0.74ZM104.46,307.55l0.14,-0.94l0.91,-1.34l0.08,-0.7l1.08,-0.38l1.14,-1.29l0.69,-1.67l-0.23,-0.84l1.2,-1.51l0.56,-2.12l-0.07,-0.85l-0.74,-0.92l0.49,-1.16l11.83,-21.1l1.9,1.44l0.78,1.18l0.44,2.04l1.02,1.11l0.02,1.76l1.01,0.5l0.65,0.95l0.67,-0.55l-0.52,-1.74l0.25,-1.06l-0.44,-1.05l1.06,0.36l0.07,-0.5l-1.28,-1.24l0.06,-1.24l-1.48,-0.63l-0.42,-0.86l0.56,-0.17l0.07,-1.17l0.48,1.3l0.75,0.48l1.01,0.1l1.05,-0.56l-0.29,-0.39l-0.98,-0.28l0.02,-0.91l-0.75,-1.17l0.91,-2.19l0.82,3.03l1.3,1.4l0.43,-0.74l-0.92,-1.52l-0.27,-2.64l0.29,-0.58l0.65,0.02l-0.28,2.19l0.81,0.07l0.59,-1.89l0.54,0.43l0.23,1.25l1.1,1.25l0.63,-0.49l-0.11,-0.99l0.85,-2.21l1.62,-0.07l0.43,0.47l0.75,0.05l1.3,0.93l0.72,1.27l0.44,0.09l0.73,-0.37l0.45,-0.82l-0.22,-0.8l1.83,-2.02l0.7,0.3l-0.05,0.59l-1.04,0.83l0.39,1.34l1.04,1.47l0.86,0.25l-2.7,1.23l-1.24,1.17l-1.1,0.22l-1.67,1.68l-0.26,0.8l0.9,0.19l1.58,-1.41l2.09,0.22l0.77,-0.72l1.23,0.52l0.71,-0.84l1.16,0.21l1.48,1.15l1.16,-0.3l0.26,0.24l1.67,-1.31l0.74,-1.04l0.08,-0.68l0.93,-0.64l0.18,0.58l0.47,0.3l0.66,-0.09l0.71,0.91l1.31,0.19l0.55,-0.26l0.39,-0.67l0.78,0.93l0.89,-0.58l2.37,-0.04l1.07,-0.91l1.14,-0.33l1.48,0.09l0.6,-0.85l0.47,0.33l0.04,0.46l-0.7,1.79l0.73,0.45l0.61,-0.9l0.73,-0.09l1.56,-1.89l0.67,-0.18l0.03,-0.74l1.1,-0.2l0.29,0.66l0.93,-0.19l0.39,-0.56l0.33,0.91l1.18,-0.31l-0.38,1.09l0.76,0.43l-0.12,0.41l0.54,0.43l0.58,-0.35l1.12,0.71l1.2,-0.6l1.31,-1.78l0.48,-0.01l-0.43,1.39l0.64,0.69l-0.36,0.67l0.25,0.54l-0.99,0.13l-0.14,0.6l-0.58,0.26l-4.41,0.77l-1.71,-0.24l-0.99,0.6l-1.08,0.04l-1.03,1.21l-1.62,-0.04l-1.6,1.4l-0.18,-0.34l0.28,-0.83l-0.34,-0.45l-1.04,-0.22l-0.59,0.3l-0.57,-0.27l-0.48,0.2l-2.83,-0.93l-1.21,0.17l-0.7,-0.27l-2.29,1.84l-0.29,1.06l-2.52,0.0l-0.5,0.34l-0.53,-0.63l-1.66,0.06l-1.27,0.73l-0.17,0.49l-1.1,0.9l-0.12,0.66l-0.76,0.22l-0.47,-0.62l-1.16,0.22l-1.4,1.59l-0.26,0.73l-0.29,0.05l-0.26,-0.55l-1.06,0.01l-0.96,1.13l-0.25,1.27l0.56,1.44l1.19,1.93l1.0,0.53l0.66,-0.08l0.11,-0.38l-0.23,-0.69l-1.04,-0.58l0.38,-0.94l0.7,0.04l0.57,0.64l0.56,-0.31l0.06,-0.47l0.4,1.43l0.52,0.32l0.5,-0.48l0.99,1.02l1.61,-0.85l0.13,-0.44l-0.58,-1.64l-0.52,-0.17l-1.0,0.36l-0.35,-0.72l0.45,0.44l0.68,-0.28l-0.6,-1.73l0.72,-1.38l1.23,0.44l1.05,-0.46l0.45,0.71l0.75,-0.18l0.71,-0.64l0.65,0.9l1.17,-1.23l1.44,0.08l1.83,-0.69l1.41,-1.24l0.1,-0.41l0.78,-0.23l0.04,-0.44l0.67,0.77l-1.27,1.34l-0.23,0.67l0.81,0.22l-0.39,0.95l0.99,-0.0l1.07,-0.65l0.41,0.07l0.21,0.13l-0.46,0.86l0.88,0.61l-1.32,1.5l-0.51,1.19l0.07,0.7l0.58,0.3l0.61,-0.28l1.03,-2.43l1.66,-0.94l0.16,-0.62l1.48,-0.47l0.48,-0.61l-0.1,-0.43l2.35,-1.13l0.49,-0.85l1.42,-0.99l1.05,0.28l3.79,-0.03l1.01,-0.38l2.58,0.65l-1.07,2.79l1.07,1.23l0.82,0.1l0.27,-1.09l1.23,0.05l2.37,-1.56l2.78,-0.96l1.22,-3.31l1.85,-0.43l0.55,0.37l1.09,-0.16l2.12,0.3l0.7,0.51l0.27,-0.41l-0.24,-0.91l-2.64,-2.29l0.11,-0.52l0.3,0.3l0.53,-0.08l0.77,-1.23l-0.54,-0.44l-1.31,-0.01l1.01,-1.83l1.46,-1.04l1.82,4.77l0.72,3.82l-0.37,5.36l0.33,0.97l-0.74,1.57l-0.33,3.92l1.05,5.2l1.21,3.11l0.72,1.01l0.88,0.26l1.06,2.07l0.85,0.12l0.6,-0.52l0.05,-0.65l1.59,0.69l1.22,-1.47l-0.31,-0.47l0.38,-0.46l-0.67,-1.16l0.72,-1.05l-0.85,-0.79l-0.04,-0.56l0.56,-0.7l0.61,0.38l1.75,-0.43l-0.33,1.7l0.42,0.47l0.37,-0.09l1.3,-1.37l-0.48,-1.18l-1.07,-0.69l0.82,-0.42l0.51,-0.93l1.18,-0.99l2.01,0.05l0.56,-0.74l0.29,0.27l-0.34,0.03l-0.23,0.62l0.44,0.52l-0.71,0.35l0.09,1.35l-0.94,1.01l-0.57,1.34l1.06,1.48l0.76,0.13l0.57,-0.34l0.54,0.45l-0.13,0.38l-1.56,0.75l-0.73,1.21l-1.89,0.99l-0.47,0.95l-0.59,0.04l-0.25,0.44l0.29,1.05l0.86,0.84l1.12,0.58l0.72,0.01l0.23,0.41l0.53,0.01l0.32,-0.52l1.93,1.27l2.46,-0.33l0.26,-1.48l0.87,-0.15l1.02,0.51l0.3,-0.25l0.81,-1.37l0.11,-0.97l0.88,-1.02l0.45,-1.87l1.23,-0.68l0.86,1.2l0.75,-0.28l1.55,0.99l3.12,0.8l3.72,2.51l3.19,4.28l0.37,1.46l-10.78,31.16l10.4,16.31l12.52,18.3l13.34,18.03l12.32,15.52l14.94,3.76l6.82,13.72l2.18,2.36l1.96,1.15l30.79,11.84l26.18,8.95l-10.8,81.07l-27.95,-4.19l-23.5,-4.25l-29.2,-6.22l-23.2,-5.69l-28.76,-8.01l-22.8,-7.12l-28.52,-9.89l-16.81,-6.36l-0.18,-0.73l-0.43,-0.33l-0.96,0.05l0.81,-1.02l-0.28,-4.88l0.73,-2.33l-0.28,-0.79l-1.31,-0.57l0.24,-1.49l-0.61,-2.47l1.97,-1.43l0.22,-3.72l-2.24,-1.11l-1.04,0.62l-0.48,1.05l-2.45,-0.87l-2.01,0.56l-1.21,-1.31l-1.29,-0.74l-0.59,-1.26l-0.72,-0.6l-0.78,0.07l-1.01,1.06l-0.29,-0.29l0.24,-0.75l-0.52,-0.5l-1.06,-0.17l-0.38,0.32l-0.1,0.76l-0.41,0.1l-0.86,-0.35l-0.75,-1.07l-0.52,-0.06l-1.36,0.61l-0.34,-0.8l-0.94,-0.1l1.63,-5.05l-0.31,-0.69l-0.98,-0.18l1.04,-0.41l0.63,-1.24l0.92,-3.44l-0.25,-0.84l0.26,-1.46l-1.07,-1.73l-2.01,-0.66l-0.66,-0.99l-0.05,-0.94l-0.68,-0.72l-0.34,-1.54l-0.44,-0.46l0.4,-1.41l-0.03,-1.72l-0.37,-0.58l-0.73,-0.1l0.25,-1.73l-0.53,-1.26l0.32,-0.68l-0.79,-2.47l-1.51,-0.56l-1.12,0.7l-0.11,-1.18l-0.94,-0.95l-1.25,-0.18l-0.47,-0.89l0.84,-0.58l0.0,-2.28l0.95,-0.43l0.28,-0.54l-0.39,-0.69l0.37,-0.3l0.75,0.06l0.49,-0.54l-0.03,-0.8l-1.6,-2.55l0.39,-1.47l-0.5,-1.07l0.27,-0.98l-0.25,-2.15l0.4,0.06l0.76,-1.19l1.64,-1.3l0.21,-0.71l-0.47,-0.62l-0.8,-0.15l-0.3,-0.58l0.26,-2.13l-0.48,-0.59l-0.05,-1.15l-0.63,-0.54l0.74,-0.4l1.57,-0.07l0.77,-1.24l1.11,-0.59l0.08,-3.19l-0.8,-0.68l0.35,-1.33l-0.42,-0.38l-1.1,0.18l-0.14,-0.44l1.9,-0.06l0.56,-1.03l-1.49,-1.53l-0.71,-2.56l-0.55,-0.3l-0.74,-1.16l0.5,-1.17l-0.6,-0.74l-0.13,-1.41l0.94,-0.65l-0.02,-2.0l-0.29,-0.55l0.6,-0.72l-0.24,-2.3l-1.89,-2.03l-0.92,0.77l-0.7,0.12l-0.75,-0.01l-0.36,-0.61l-0.72,-0.22l1.94,-1.43l0.12,-0.41l-0.28,-0.82l-0.72,-0.5l-0.29,-0.98l-0.01,-2.24l-0.78,-0.71l-0.72,-1.79l-1.02,-0.87l-0.65,-0.13l0.0,-0.66l1.38,-0.32l0.62,-1.63l1.7,-0.39l0.34,-0.37l0.1,-1.36l-1.06,-0.79l0.65,-0.87l-0.01,-0.71l-0.29,-0.49l-0.9,-0.02l0.19,-0.45l0.87,-0.55l0.71,0.18l1.01,-1.21l2.29,-0.75l1.42,-1.78l1.31,-0.69l0.15,-4.09l-0.81,-1.96l0.67,-0.54l1.76,-0.15l0.42,-0.65l0.01,-0.78l-0.56,-0.46l-0.6,0.02l0.1,-0.75l-0.44,-0.59l-1.0,-0.06l-2.28,1.16l-0.4,-0.16l1.28,-1.17l0.11,-0.45l-0.33,-0.59l-1.96,-0.69l-1.63,-0.05l-0.64,0.46l-1.07,-0.82l0.77,-1.25l-0.44,-0.84l1.7,-0.84l1.09,-2.06l0.16,-0.66l-0.32,-0.69l-1.15,-0.51l1.43,-1.81l0.18,0.29l0.73,0.08l0.45,-1.72l0.97,-0.32l0.28,-0.51l-0.44,-0.81l-0.09,-1.21l0.41,-0.5l-0.11,-1.08l0.63,-0.31l0.59,-0.96l-0.12,-2.62l-0.75,-1.25l1.56,0.55l0.46,-0.15l0.06,-0.73l-16.24,-8.77ZM212.99,287.11l-0.0,-0.01l-0.45,-0.39l0.6,0.28l-0.15,0.13ZM212.05,286.55l-0.11,0.01l-0.06,-0.14l0.18,0.13ZM180.17,279.08l0.22,-0.13l-0.03,0.22l-0.19,-0.09ZM142.41,285.87l-0.69,-0.85l0.05,-0.26l0.51,-0.01l0.13,1.12ZM142.96,264.87l0.0,-0.21l0.23,0.0l-0.16,0.1l-0.07,0.11ZM156.61,271.56l-0.26,-0.16l-0.02,-0.28l0.35,0.17l-0.07,0.26ZM155.74,270.75l-0.15,0.03l0.11,-0.14l0.03,0.11ZM160.01,281.13l0.4,-0.64l0.34,-0.13l0.07,0.65l-0.81,0.12ZM202.48,297.51l-0.11,-0.08l0.06,-0.02l0.05,0.1ZM201.89,297.32l-0.66,-0.04l0.07,-0.32l0.01,-0.01l0.59,0.37ZM211.17,288.3l-0.48,-0.11l-0.4,0.32l-0.21,-0.52l1.07,-0.1l0.02,0.4ZM208.14,287.7l-0.36,0.28l-0.26,0.01l0.62,-0.56l-0.0,0.27ZM335.17,145.92l1.0,-0.91l-0.43,-1.22l0.64,-1.86l-0.24,-1.59l1.26,-2.2l0.25,0.64l0.45,0.13l0.76,-0.79l3.51,-1.13l0.74,0.23l1.64,-0.35l0.71,0.43l1.24,-0.7l1.27,-0.2l1.05,0.14l0.29,0.54l0.59,0.26l1.22,-0.62l3.04,0.79l-0.79,3.54l-1.13,0.52l-3.24,-0.04l-0.82,0.7l-0.06,0.82l0.87,1.98l2.92,0.26l-0.45,1.5l-0.01,1.69l-0.82,0.85l0.14,1.08l-0.89,0.91l-1.88,0.72l-1.37,0.04l-0.52,0.59l-1.94,-0.92l-0.98,0.55l-3.89,0.96l-1.46,-1.4l-0.3,-2.44l-0.41,-0.24l-0.64,0.19l-0.54,-0.49l-0.03,-1.17l-0.89,-0.46l0.16,-1.34ZM343.19,180.35l0.39,-0.57l0.14,-1.89l1.48,-0.35l-0.86,3.83l-1.15,-1.03ZM297.77,196.61l-2.26,-1.86l-0.55,-1.22l0.38,-0.82l0.76,-0.32l0.24,-0.76l2.05,-1.76l0.55,-0.25l6.65,1.88l3.36,-1.6l1.84,0.21l0.67,-1.17l1.68,-0.67l0.17,-0.56l-0.66,-0.53l-2.08,0.6l-1.88,-0.19l-1.9,0.31l-1.11,0.5l-5.82,-1.7l0.31,-0.79l2.82,-2.79l6.28,0.76l0.48,-0.28l0.79,0.65l4.2,0.37l0.7,-0.36l0.28,-0.91l-0.5,-0.5l-4.76,-0.77l-0.49,-0.35l-2.68,-0.05l-2.24,-1.68l0.21,-0.61l1.35,0.12l0.37,-0.43l0.07,-1.43l-0.97,-0.43l0.79,-1.37l0.84,-0.74l2.07,-0.37l2.45,1.3l1.29,0.19l3.33,1.91l1.21,-0.14l0.02,-0.84l-1.49,-0.63l-0.23,-0.8l-1.14,-1.05l-2.82,-0.86l-0.3,-0.94l0.64,-0.8l-0.1,-0.61l2.58,-1.59l2.72,0.22l1.32,-0.67l0.16,0.75l1.65,0.26l1.13,1.18l-0.07,1.46l-0.72,0.79l0.44,2.55l-0.57,0.6l0.33,1.25l2.02,0.22l2.23,-0.84l1.08,0.55l0.85,-0.19l0.3,1.16l1.82,1.55l-0.7,1.1l0.22,1.97l0.35,0.65l1.2,0.8l1.56,2.3l-1.85,0.28l-0.97,0.54l-0.56,1.29l0.4,0.38l0.83,-0.16l0.79,0.5l0.52,-0.36l1.19,0.13l-0.09,0.43l0.56,0.69l-0.19,1.08l0.36,0.37l-0.82,2.31l0.43,2.83l1.72,0.27l1.16,-0.38l1.83,0.08l0.43,0.89l2.08,0.36l-3.46,15.46l-0.59,0.13l-1.01,-0.67l-0.79,0.44l-0.17,0.72l-1.49,-0.26l-0.41,0.8l0.12,1.27l-2.4,1.0l-0.25,0.41l-1.6,0.27l-0.55,0.48l-0.67,-0.2l-1.85,1.17l-3.69,0.32l-1.41,0.46l-3.52,-0.48l-1.07,-0.47l-2.46,-1.54l-2.23,-3.46l-0.83,-2.35l0.38,-0.84l2.93,-1.35l0.8,0.07l0.73,-0.33l1.31,0.27l1.04,-0.25l0.62,0.52l0.49,-0.13l0.19,-0.89l0.89,-0.99l1.85,-0.47l4.43,0.55l1.47,0.89l1.64,-0.19l0.99,-1.0l1.23,-0.45l0.51,-0.83l1.59,-0.92l0.09,-0.52l1.0,-0.88l-0.22,-0.82l-0.77,-0.71l-1.12,-0.14l-1.02,1.34l-1.06,0.63l-0.85,-0.15l-0.16,-0.58l-0.45,-0.2l-1.17,0.94l-0.87,-0.44l-1.62,0.22l-0.26,-0.33l1.23,-0.9l-0.09,-0.91l-0.35,-0.68l-0.46,-0.1l-0.62,0.58l-0.13,0.67l-0.26,-0.06l0.48,-1.27l-0.3,-0.89l-0.59,-0.2l-0.98,1.81l-0.08,1.28l-0.92,0.5l-0.8,0.07l-0.1,-1.12l-0.35,-0.31l-0.9,1.31l-3.84,-0.33l0.32,-1.39l1.77,-0.52l0.23,-0.6l-0.46,-0.42l-1.17,0.31l1.46,-2.76l3.51,-1.68l-0.97,-0.99l-2.7,0.74l-0.38,-2.37l-0.69,-0.02l-0.22,0.35l-0.36,2.28l-1.44,2.63l-0.13,-1.23l-1.14,-1.28l-1.05,0.74l-0.08,0.77l0.95,0.5l0.21,1.76l-1.36,2.08l-3.46,1.29l-0.36,-0.05l-0.39,-0.67l0.23,-1.39l0.63,-1.29l-0.11,-1.68l-0.42,-0.25l-1.34,1.5l-0.77,-1.27l-0.59,-0.09l-0.29,0.56l0.11,2.33l-0.93,1.06l-2.19,-2.46l0.89,-0.36l0.57,-0.73l-0.26,-0.63l-1.29,0.17l0.63,-0.76l0.26,-1.45l-2.29,-0.11l-1.24,1.13l-0.81,-1.06l-0.74,-0.14ZM328.08,134.65l1.49,-0.41l0.93,-1.05l1.49,-0.48l-0.42,0.64l0.17,1.23l0.84,0.29l0.26,1.88l1.08,1.0l-0.13,1.05l0.28,0.68l-0.86,0.82l-2.45,0.83l-0.42,-0.22l-0.69,-1.15l0.02,-0.72l-1.13,-2.38l-0.46,-2.01ZM321.15,163.02l0.27,-0.55l1.37,-0.86l1.02,-0.17l0.95,0.34l2.18,0.1l1.23,1.73l-0.05,1.16l-1.23,1.11l-0.66,-0.6l-3.08,-0.94l-2.0,-1.32ZM323.52,255.67l3.92,1.28l-0.95,4.27l-0.31,-0.07l-0.4,-1.5l-1.62,-0.83l-0.69,-2.28l0.06,-0.87ZM325.57,263.35l0.07,-0.72l0.09,0.01l0.37,0.29l-0.13,0.59l-0.39,-0.16ZM261.06,269.52l0.42,-3.04l1.57,-3.05l1.05,-0.92l1.78,-0.91l0.8,-1.49l0.97,-0.67l0.88,0.18l2.34,-0.29l0.56,-0.55l0.36,-1.5l-0.12,-0.87l-0.52,-0.56l-1.2,-0.42l-0.42,-0.6l0.04,-1.02l0.95,-1.39l2.28,-1.24l0.66,-0.77l2.37,-0.69l2.57,-1.65l2.03,-1.97l0.89,0.17l2.38,-0.35l2.61,-1.39l0.63,0.1l5.36,-1.34l1.37,0.01l1.28,-0.38l0.6,-0.51l0.67,0.14l0.85,-0.48l1.59,-0.19l1.66,-0.82l0.38,0.01l1.58,1.5l0.76,4.13l-2.16,5.66l0.16,1.56l-1.74,-0.03l-1.07,0.84l-0.27,1.63l-2.29,1.2l0.2,1.21l1.64,0.68l0.59,-0.7l2.44,-0.63l0.2,0.37l0.74,0.2l-0.08,0.49l0.37,0.37l0.67,-0.09l1.89,-1.23l0.41,-0.92l0.07,-0.89l-0.92,-0.59l2.08,-2.47l1.62,-1.35l0.96,-0.15l2.61,1.86l1.36,1.71l1.28,0.45l2.21,2.46l0.69,0.37l0.24,1.29l1.27,0.82l-0.93,2.75l-1.69,1.01l0.02,0.76l-3.52,1.88l-0.22,0.43l0.3,0.81l0.71,0.42l-0.88,1.61l0.18,0.88l0.68,-0.03l0.87,-1.47l2.69,-1.14l0.94,2.06l0.72,-0.16l0.21,-2.62l0.87,-0.72l0.04,-0.5l0.91,0.33l0.54,-0.43l-0.08,-0.87l0.72,-0.65l0.55,0.58l-0.56,0.44l0.05,0.88l1.35,1.71l0.75,-0.09l0.09,-0.57l-1.02,-1.51l0.87,-0.51l1.37,2.93l-11.47,51.41l-17.46,-4.16l-0.48,0.29l-0.35,1.39l-1.14,0.12l0.0,0.67l1.45,0.6l-1.3,-0.38l-0.5,0.41l-0.91,-0.23l0.76,-2.9l-0.37,-0.69l-29.82,-8.44l-0.5,0.24l-0.86,2.55l1.84,5.57l-0.46,-0.2l-0.66,-1.15l-0.8,-0.68l-0.68,-1.43l0.13,-4.89l0.67,-0.69l1.4,-0.58l1.73,-0.24l3.39,0.25l3.67,-0.18l11.18,1.07l2.11,0.57l0.9,1.01l2.68,1.14l1.35,-0.09l2.98,1.9l0.67,-0.2l2.43,1.71l0.51,-0.14l0.14,-0.67l0.71,0.47l0.77,-0.34l-0.01,-0.27l0.91,0.22l0.56,-0.27l1.17,0.76l3.05,0.53l0.77,-0.31l0.11,-0.56l-0.29,-0.32l0.27,-0.48l-0.57,-0.96l-1.79,-0.31l-0.91,-0.68l-0.84,-3.09l-0.67,-0.2l-1.08,-0.99l-0.79,0.15l-1.03,-1.36l-0.64,-0.28l-0.62,0.15l-0.92,-1.37l-0.63,-0.24l-0.19,-0.8l-1.01,-0.25l-0.69,-0.96l-0.46,-0.05l-0.39,0.5l-0.67,-1.05l-1.73,-1.01l-1.72,0.58l-1.18,-0.69l-1.38,0.56l-2.51,-0.34l-1.32,0.15l-3.15,-0.78l-0.6,0.23l-1.02,-0.84l-2.18,-0.06l-0.63,-0.48l0.18,-0.65l-0.56,-0.52l-2.45,-0.59l-0.91,0.29l-2.02,-0.49l-1.54,-0.86l-0.61,0.03l-0.43,-0.55l-1.39,0.06l-0.5,-1.05l0.38,-0.76l-0.22,-0.93l-2.44,-4.15l-0.27,-2.19l0.33,-0.6l4.75,-1.74l2.29,0.35l2.83,-0.41l1.41,0.46l0.88,-0.42l0.18,-0.46l3.98,-0.43l0.61,0.62l0.81,-0.17l1.81,0.45l0.73,-0.44l-0.03,-0.61l-1.86,-1.16l1.71,-0.55l0.31,0.35l0.7,-0.0l0.31,0.56l1.18,0.74l1.71,-0.3l1.18,-0.56l0.16,-0.64l-0.7,-0.44l-1.42,0.43l-0.78,-0.08l-0.21,-0.12l0.61,-0.47l-0.15,-0.44l-1.08,-0.72l-1.49,-0.27l-2.81,0.29l-2.53,-0.28l-2.19,0.43l-1.56,-0.54l-1.22,0.36l-0.84,-0.12l0.4,-1.13l-1.05,-1.55l-1.28,0.93l0.11,0.7l0.6,0.3l-0.39,0.69l-0.78,-0.88l-0.84,0.41l-0.55,-0.45l-1.68,-0.36l-0.42,-1.04l0.66,-1.04l0.9,-0.41l2.39,0.85l0.28,-0.38l0.75,-0.09l0.25,-0.72l-1.15,-1.3l1.24,-0.2l0.19,-0.81l-2.72,-0.71l-0.79,0.27l-0.68,0.84l-0.48,-0.03l-0.46,-1.51l-0.75,-0.64l-1.98,-0.51l-0.99,0.87l-0.25,-0.31ZM315.48,268.17l-0.79,0.04l-0.04,-0.21l1.17,-0.51l-0.34,0.67ZM272.81,162.81l0.83,-0.98l0.4,0.17l1.08,-0.8l0.89,-1.79l1.46,-0.77l2.3,0.16l0.97,0.64l1.33,0.17l0.56,-0.22l1.24,-1.44l0.32,-0.92l1.48,-1.14l0.49,-1.02l0.58,0.19l1.16,-0.28l0.78,-0.61l1.48,-0.1l1.56,-0.97l0.35,-1.57l1.23,-0.32l0.64,-1.04l0.68,-0.38l0.26,-0.76l0.98,-0.09l1.12,-1.54l1.02,-0.11l0.51,-0.71l1.48,-0.62l1.35,-2.17l0.75,-0.51l1.03,0.44l1.58,-0.55l2.55,0.93l1.07,-0.28l-0.04,0.4l0.84,0.27l0.14,0.7l1.17,0.65l1.07,1.51l1.58,0.18l0.36,-0.74l0.35,0.46l0.67,0.06l0.37,-0.75l1.09,-0.81l-0.22,-0.81l-1.45,-0.48l-0.12,-0.94l0.79,-0.07l1.21,-0.74l0.09,-0.67l1.38,0.07l1.15,1.83l-0.1,0.87l1.46,1.39l1.01,2.22l-0.02,0.53l-0.69,0.76l-1.45,0.12l-0.9,0.65l-1.94,-0.05l-0.62,0.98l-0.64,0.2l0.11,2.98l1.96,2.78l-0.93,0.62l-1.65,-1.71l-0.48,0.02l-0.45,0.49l-0.12,0.76l0.52,1.85l0.62,0.63l-0.08,2.78l-0.62,0.28l-0.74,1.04l-1.46,0.65l-1.07,0.01l-1.18,-0.48l-0.84,0.41l-0.52,-0.36l-0.55,0.11l-0.74,0.87l0.06,1.54l-0.44,2.45l-1.34,0.94l-1.23,0.3l-0.84,-0.49l-0.11,-1.27l-0.95,-0.47l-0.42,-2.07l0.76,-1.8l0.88,-0.73l0.15,-1.62l0.62,-0.74l0.28,-1.2l1.64,-1.76l0.07,-1.13l-0.45,-0.66l-0.59,0.04l-1.03,0.98l-1.49,-0.63l-0.55,0.27l-0.13,1.02l-0.51,-0.31l-0.61,0.32l-0.14,0.98l0.37,1.03l-0.31,1.73l-0.91,0.0l-0.48,0.74l-0.29,-0.17l-0.19,-1.11l-0.79,-0.43l-0.42,0.57l-0.7,0.24l-0.39,1.07l0.58,0.56l0.06,0.56l0.6,0.37l-0.17,2.29l-0.72,0.92l-0.84,-0.26l-0.74,0.3l-0.8,2.2l-0.6,0.78l-0.74,0.29l-0.37,-0.38l0.36,-1.66l-0.29,-1.71l0.52,-2.6l-0.49,-0.23l-0.55,0.61l-0.44,-0.35l-0.66,0.27l0.04,0.99l-0.56,0.72l0.12,2.13l-0.47,-0.14l-0.42,0.38l0.02,0.74l-0.41,-0.17l-0.55,0.41l1.08,2.04l-0.1,0.91l-0.51,-0.34l-0.35,0.13l-0.82,1.1l0.04,0.39l-1.36,1.08l-0.71,0.02l0.1,-0.78l-0.48,-0.68l-2.02,1.61l0.77,-2.24l0.75,-0.9l0.0,-1.44l-0.38,-0.3l-0.92,0.11l0.1,-0.99l0.73,-0.78l0.03,-0.56l-0.3,-0.17l0.66,-0.56l-0.72,-1.92l-0.52,-0.12l-1.12,0.76l-1.06,2.34l-0.03,1.09l-1.31,0.08l-0.93,0.92l-0.14,-1.26l-1.81,-2.34l-1.81,-0.41l-0.67,1.27l-1.44,0.51l-0.88,-0.46l-0.12,-0.41l0.71,-0.41l1.49,-2.04l0.36,-1.31l-0.84,-1.36l-1.28,0.23ZM299.65,310.08l0.53,0.27l0.45,0.46l-0.39,-0.06l-0.6,-0.66ZM287.73,182.36l0.69,-0.85l4.73,-3.33l1.13,-1.26l1.85,-0.54l1.07,0.16l0.92,-1.24l1.31,-0.42l0.79,-0.83l0.46,-0.05l0.46,0.38l0.14,0.3l-1.31,2.19l-2.18,2.12l-0.18,0.62l-1.06,1.07l-0.32,1.05l-2.69,2.15l-0.04,0.48l-2.56,1.32l-0.81,-0.98l0.09,-0.48l-0.29,-0.32l-1.56,-0.66l-0.65,-0.89ZM219.97,246.31l1.41,-1.91l0.11,-1.2l0.58,-0.36l1.1,-0.08l-0.32,-0.78l0.18,-0.7l0.48,0.19l0.98,-0.52l0.27,-1.09l0.89,-0.57l1.76,-2.13l1.99,-0.91l0.69,0.17l0.33,-0.36l0.17,-0.64l-0.47,-0.74l1.39,-1.18l-0.11,-0.61l0.47,-0.8l0.25,-1.52l-0.23,-0.7l0.67,0.55l1.19,-0.31l0.51,0.29l0.98,-0.1l1.04,-0.37l0.42,-1.4l-0.51,-0.63l-0.15,-0.96l-0.68,-0.17l-0.06,-1.13l0.71,-0.76l0.69,0.02l0.56,-0.39l0.08,-0.6l2.32,-2.69l0.8,-0.47l0.23,-1.17l1.24,-0.65l0.8,0.03l0.34,-0.54l0.77,-0.34l0.67,-1.15l0.29,-1.31l1.55,-0.35l1.1,-1.28l0.25,-1.97l-0.31,-0.53l-1.33,-0.8l-0.1,-0.5l0.42,-1.09l-0.23,-3.55l0.64,-1.27l0.5,-3.11l-0.51,-0.66l0.56,-0.75l-0.26,-0.41l2.51,0.32l0.51,0.35l0.43,0.02l0.38,-0.41l3.46,0.81l1.3,-0.08l4.09,1.2l3.23,0.37l3.44,-0.17l2.16,1.86l0.32,0.91l-0.08,1.29l3.74,4.85l1.04,0.62l0.62,1.06l0.81,0.25l-0.47,1.0l-1.5,1.46l-0.24,1.04l0.36,0.8l0.74,-0.05l0.38,-1.36l0.97,-0.5l1.31,-1.55l1.19,0.38l0.28,0.38l-0.47,1.34l0.08,1.01l-0.57,0.34l-0.89,1.63l0.34,0.56l1.91,-0.18l1.59,-1.69l0.28,-0.77l-0.19,-1.06l0.98,-0.4l4.16,-0.06l3.39,2.19l2.27,4.11l1.8,5.75l0.49,0.47l1.16,3.45l1.44,1.82l0.81,3.18l-0.08,1.01l-3.31,1.88l-4.92,0.78l-6.1,2.78l-1.26,-0.07l-5.26,2.35l-1.45,0.23l-1.65,0.71l-0.85,0.83l-1.62,-0.12l-1.32,0.83l-2.03,0.7l-0.96,2.07l-1.6,1.95l-0.47,1.5l-0.93,0.52l-2.88,1.16l-1.62,-0.74l0.17,-0.63l-0.24,-0.33l-0.93,-0.17l-0.55,0.71l0.19,1.09l-0.34,1.5l-3.38,3.51l0.05,1.25l-1.16,2.65l-0.16,1.27l-1.86,2.66l-1.02,0.7l-2.7,0.45l-3.04,-0.02l-0.44,-0.37l0.33,-0.56l-0.21,-1.0l-1.09,-0.53l-4.34,3.08l-3.99,0.69l-1.69,1.33l-1.8,-0.62l-0.51,-1.09l-0.25,-2.74l0.46,-4.89l-0.17,-1.56l-0.39,-0.61l0.01,-2.66l-0.5,-1.41l-2.97,-3.64l-2.15,-3.79l1.11,0.8l0.52,-0.4l-0.02,-0.67l-0.4,-0.56l-1.67,-0.72l-3.23,-0.72ZM278.89,175.73l-0.49,-0.42l1.55,-0.55l-0.56,0.63l-0.51,0.34ZM280.89,173.14l-0.05,-0.52l0.37,-0.4l-0.17,0.44l-0.15,0.48ZM265.98,295.52l0.41,0.33l-0.56,-0.18l0.16,-0.15ZM192.19,266.74l0.3,-0.36l0.16,0.54l-0.24,0.16l-0.22,-0.33ZM134.49,262.69l0.12,-0.19l0.63,-0.37l-0.53,0.46l-0.22,0.1ZM133.01,267.08l0.28,0.07l0.02,0.08l-0.15,0.11l-0.14,-0.25ZM125.45,269.42l0.35,-0.18l0.08,0.44l-0.34,-0.04l-0.09,-0.22Z", "name": "Northwest Territories"}, "CA-NU": {"path": "M694.57,496.77l1.45,-0.41l0.98,0.82l0.52,0.93l-1.78,-0.16l-1.15,-0.84l-0.03,-0.34ZM682.9,477.17l0.06,-0.73l3.09,-1.55l2.28,-0.08l0.16,0.84l0.97,-0.11l-0.26,0.99l0.67,0.87l0.04,0.63l-0.57,0.8l-0.1,1.41l-0.48,-0.03l0.2,-0.37l-0.27,-0.55l-1.47,0.05l0.01,-0.29l-0.54,-0.36l-0.45,0.12l-0.52,-0.72l-1.64,-0.3l-1.18,-0.63ZM458.86,294.89l0.69,-1.03l0.12,-1.87l1.28,-0.97l0.41,0.23l0.46,-0.24l0.63,-1.06l-0.01,-0.62l-0.42,-0.41l-1.24,0.36l-0.49,-0.37l-0.34,-2.89l1.12,-2.11l-0.36,-0.48l0.36,-0.77l0.19,-2.79l0.15,-0.21l0.4,0.29l0.51,-0.11l0.34,-0.95l0.36,-0.14l0.13,-0.53l-0.73,-1.03l0.18,-0.83l1.18,0.54l0.58,-0.22l0.23,-0.85l-0.26,-0.58l-0.78,-0.45l0.74,-1.97l-0.38,-1.61l0.2,-0.36l0.16,0.26l0.43,-0.14l0.13,-0.38l-0.61,-0.85l0.51,-1.54l0.66,-0.7l-0.26,-0.44l0.45,-0.65l1.17,-0.06l0.12,-0.59l-0.94,-0.51l0.61,-0.81l1.41,0.47l0.55,-0.15l-0.1,-0.83l-1.25,-0.66l0.98,-1.74l1.16,-0.95l0.58,-1.42l4.02,-4.37l3.91,-2.04l3.49,-1.3l3.4,-0.13l1.76,0.44l3.97,0.22l1.49,1.34l-0.09,0.41l-0.39,0.92l-3.07,3.29l-0.74,0.43l-2.77,4.99l-1.59,4.49l-0.2,1.53l-2.06,4.52l-0.33,3.11l0.51,1.79l2.87,3.81l0.14,1.36l-1.11,2.75l0.04,3.45l0.38,2.71l0.54,0.48l1.61,4.19l1.24,1.26l0.91,1.49l0.64,0.41l0.25,0.78l1.1,1.03l0.66,1.16l1.93,0.96l0.28,0.43l1.59,0.27l0.08,1.57l0.55,0.31l0.2,0.65l-2.26,-0.26l-0.56,0.35l0.02,0.82l-0.69,-0.12l-0.57,0.29l-0.32,1.27l-1.2,-0.52l-1.85,0.77l-2.42,2.82l-3.42,1.32l-0.38,0.55l0.31,0.43l1.16,0.27l2.86,-0.76l2.85,-2.34l0.68,-0.95l1.5,-0.2l0.49,-0.42l2.28,0.52l0.56,-0.55l1.03,-0.26l-0.01,0.92l-0.51,-0.15l-1.13,0.39l-0.26,0.55l0.37,0.38l0.72,0.05l-0.06,0.67l0.58,0.71l-0.13,1.79l0.47,0.27l1.12,-0.17l0.37,-0.35l0.27,-1.15l-0.68,-2.37l0.1,-2.05l0.82,-0.76l-0.04,-0.5l-0.91,-1.17l0.13,-2.54l1.28,-0.72l0.23,-0.74l-0.35,-1.93l-0.72,-1.15l0.29,-0.96l-0.4,-0.73l-0.68,-0.22l-1.26,0.21l-0.31,0.48l0.13,0.39l-2.62,-0.82l-1.39,-1.79l0.48,-0.3l0.08,-0.55l-1.02,-2.06l-1.5,-1.05l-1.25,-0.46l-0.18,-0.49l1.72,0.19l-0.23,-0.81l1.12,-0.21l0.48,-0.51l-0.02,-1.02l0.65,-0.24l0.14,-0.45l-0.74,-1.32l0.52,-0.49l-0.09,-0.29l0.52,-0.18l0.32,0.44l0.63,-0.18l0.36,0.3l0.76,-0.34l1.93,1.98l1.21,0.53l0.72,1.21l1.02,0.76l0.34,1.5l0.53,0.49l0.54,-0.31l0.08,-1.28l-0.27,-1.08l-1.09,-0.87l-0.64,-1.52l-1.33,-0.47l-0.71,-0.9l-0.0,-0.81l-1.53,-0.76l0.54,-1.17l1.87,-0.1l0.64,-0.59l-0.05,-0.63l-0.67,-0.07l-0.38,0.35l-1.49,-0.13l0.33,-1.4l-0.35,-0.45l-1.12,0.68l-0.92,1.29l-1.61,-0.64l-1.12,-1.0l-0.66,-1.5l0.66,-0.27l0.24,-0.59l-1.19,-0.53l-0.44,-0.77l-0.08,-5.9l0.49,-1.27l2.32,0.46l1.67,1.04l3.06,1.1l1.54,1.13l2.18,0.68l0.2,-0.85l-2.01,-0.88l-2.6,-2.11l-2.93,-1.53l-1.19,-2.97l0.69,0.09l1.09,0.74l2.84,0.74l3.94,0.35l1.4,0.94l0.52,0.05l-0.06,-0.89l-1.15,-1.13l-5.25,-1.25l-2.97,-1.77l-0.82,-0.05l0.2,-2.03l1.57,-1.49l0.77,1.62l0.99,0.68l0.83,1.15l0.84,-0.07l0.18,-0.55l-1.66,-2.02l-0.49,-1.37l2.49,-1.67l2.45,0.71l0.73,2.42l0.51,0.6l0.49,-0.02l0.26,-0.97l-0.7,-3.07l-2.15,-1.0l1.91,-1.63l2.87,-1.83l0.38,0.28l0.57,-0.11l1.13,-1.93l4.82,-0.43l3.3,0.19l0.59,1.49l1.44,2.07l0.89,6.25l0.6,0.57l3.37,1.48l0.54,1.24l-0.42,2.62l0.28,1.36l1.2,2.0l1.25,0.59l0.49,1.29l-0.61,0.42l-1.06,1.94l0.18,1.18l-1.25,1.2l-1.39,2.04l-0.34,1.34l-0.79,1.18l-0.04,1.01l-1.07,1.14l0.38,0.63l1.13,-0.55l2.05,-4.19l1.74,-1.68l0.11,2.17l-1.34,1.85l-0.46,2.25l-0.79,0.26l0.13,0.45l1.94,1.39l-1.92,0.38l-0.11,0.75l-0.36,0.26l-0.03,0.63l0.44,0.31l0.83,0.03l0.58,-0.33l-0.06,1.88l-0.86,1.26l0.58,0.45l1.15,-0.69l0.47,-0.93l-0.06,-0.85l2.28,-1.73l0.25,-0.81l-0.16,-0.79l-0.82,-1.04l0.64,-0.06l0.77,-0.91l-0.47,-1.72l0.91,1.53l1.09,1.07l2.0,0.71l0.49,-0.54l-0.57,-0.78l-1.4,-0.66l-1.82,-2.49l0.53,-1.32l1.11,-0.88l1.33,1.64l-0.92,2.02l0.13,0.74l0.38,0.31l0.78,-0.26l0.43,-1.15l0.58,1.55l0.67,0.07l0.1,-0.87l-0.64,-1.52l0.82,-2.03l1.77,2.05l0.46,0.15l-0.07,0.8l0.33,0.72l-0.27,2.67l-1.03,2.24l0.12,0.44l0.62,0.44l0.84,-0.43l2.21,0.77l1.42,1.23l0.72,-0.44l-0.01,-0.5l-0.63,-0.54l-0.3,-0.94l-1.23,-0.3l-0.95,-0.84l-0.11,-2.89l2.0,1.09l1.2,3.33l1.53,2.41l1.42,0.81l1.14,0.25l0.37,-0.6l-0.59,-0.47l0.48,0.2l0.58,1.0l0.46,0.13l0.31,-2.04l-1.44,-0.54l-1.99,-2.7l-0.61,-0.18l-0.64,0.23l-1.18,-2.89l-1.97,-0.89l-1.13,-0.9l0.56,-1.27l-0.33,-0.73l0.81,-0.64l0.44,2.37l1.08,1.41l0.7,-0.56l-0.73,-1.43l-0.1,-1.29l2.36,0.65l0.59,0.63l0.45,-0.3l0.77,0.27l0.81,0.75l0.4,1.14l-0.15,0.87l0.61,0.29l0.53,-0.9l-0.22,-0.98l1.64,-0.35l2.11,0.9l0.48,-0.21l-0.13,-0.5l-1.12,-0.76l-1.2,-0.4l-1.69,0.17l-2.01,-1.39l-2.94,-1.01l-2.16,-1.59l-0.28,-1.48l0.49,-1.71l1.39,-1.61l1.28,-1.14l1.2,-0.39l1.06,-1.18l4.48,-0.37l1.22,0.71l0.16,0.89l0.52,0.5l3.11,0.45l0.56,2.06l0.61,0.47l0.66,-0.47l-0.32,-1.5l0.42,-0.69l1.2,0.0l1.93,0.9l1.73,0.36l0.53,1.58l1.91,3.11l-0.46,1.49l-0.95,1.37l-1.27,-0.25l-1.24,0.22l-2.91,2.14l-0.33,2.1l-0.75,1.09l-0.57,1.79l0.33,0.81l0.78,-0.31l0.47,-1.7l0.92,-1.46l0.26,-1.54l1.99,-1.69l0.77,-0.14l1.76,0.58l-1.7,1.0l-0.48,0.63l-0.21,3.99l-0.7,2.19l-1.44,0.77l-0.11,0.52l0.48,0.33l1.63,-0.52l0.55,-0.64l0.71,-2.62l0.15,-3.33l0.29,-0.42l1.09,-0.08l0.82,-0.68l0.54,-2.42l0.9,0.32l3.87,-0.17l0.92,0.9l0.57,1.21l-0.42,1.07l0.42,1.07l-0.26,0.8l-0.87,0.45l-1.1,-0.35l-0.33,0.65l0.18,0.36l-0.7,1.29l-1.15,0.73l-0.96,-0.09l-1.97,0.84l-0.39,0.52l-0.05,0.38l0.57,0.42l1.94,-0.92l0.63,0.31l-2.65,3.27l0.23,0.7l0.55,-0.1l1.21,-0.98l0.84,-1.22l1.01,-0.72l0.43,-1.33l0.28,-0.26l0.18,0.33l-0.06,1.06l-0.66,1.24l-1.41,0.53l-0.65,1.37l-0.05,0.52l0.56,0.41l0.74,-1.25l0.85,-0.18l-0.53,1.24l1.43,0.31l0.32,0.72l-1.98,4.49l0.25,0.66l0.85,-0.17l2.17,-4.95l-0.15,-0.96l-1.06,-1.78l-0.01,-0.47l0.68,-0.48l0.26,-2.28l0.65,-0.31l0.66,-1.43l0.52,-0.2l-0.53,2.66l0.36,1.13l0.93,0.59l0.43,-0.58l-0.72,-1.5l0.55,-0.76l0.39,-2.23l0.37,-0.41l0.92,-0.21l0.43,0.98l-0.74,1.09l0.06,0.68l-0.45,0.44l-0.42,3.14l-1.76,1.59l0.33,0.71l1.37,-0.82l0.2,1.52l-0.65,0.95l0.69,0.42l-0.72,1.87l0.74,0.32l1.26,-3.14l-0.2,-1.04l0.42,-1.9l-0.07,-1.72l0.6,-1.12l0.55,0.31l-0.13,2.41l0.61,1.05l-0.18,0.66l0.58,0.46l0.39,-0.16l-0.77,1.79l0.2,3.3l-0.07,0.44l-0.93,0.89l0.27,0.63l0.51,-0.04l1.23,-1.01l-0.01,-3.42l0.96,-2.35l0.28,-0.01l1.43,0.77l-1.0,1.14l0.48,1.6l-0.11,1.13l-0.87,1.71l0.76,1.2l0.46,0.19l0.29,-0.41l-0.38,-1.22l0.66,-0.72l0.42,-2.32l-0.23,-1.02l0.78,-0.18l0.33,-0.81l-0.04,-1.56l-0.52,-1.67l0.81,-0.19l0.58,-0.61l-0.16,-0.92l-0.54,-0.67l1.11,-1.15l-0.11,-2.23l7.09,1.89l0.97,0.79l0.12,0.55l1.23,0.9l1.53,1.97l-1.07,2.38l-0.26,2.06l-2.63,-0.48l-1.51,1.0l-0.44,0.82l0.19,0.87l-0.24,1.05l-0.77,0.74l-0.04,1.35l-2.72,1.93l0.03,0.47l0.46,0.12l2.02,-0.83l1.04,-0.93l0.6,0.28l-0.84,1.94l0.09,1.23l-1.54,1.42l0.08,0.57l0.75,0.44l1.6,-1.56l0.59,-2.29l1.55,-0.85l2.23,-2.28l1.62,-0.61l0.77,0.51l0.62,-0.2l-0.0,-0.67l-0.92,-0.84l0.25,-2.25l1.7,-2.06l0.62,-0.05l0.53,0.36l1.43,3.01l-0.98,1.81l-0.07,2.43l-1.64,1.47l-0.4,2.01l-2.14,-0.37l-0.75,0.42l0.12,1.53l-0.72,1.26l0.05,0.94l-1.08,0.39l-0.32,0.54l0.45,0.64l1.24,-0.56l0.08,1.68l-0.36,0.59l0.22,0.65l0.57,-0.05l0.49,-0.64l0.37,-1.45l-0.25,-2.22l0.65,-1.71l0.81,-0.31l0.9,0.23l-0.19,4.5l0.55,1.12l-0.83,5.47l0.79,0.17l0.98,-2.69l0.33,-2.96l-0.27,-0.77l0.11,-3.1l0.14,-1.62l0.4,-0.4l-0.53,-0.75l0.08,-1.34l0.93,-0.58l2.43,-3.47l1.07,-0.64l1.83,-2.13l0.44,0.09l-0.04,0.76l-0.62,1.81l-1.33,1.96l-1.69,1.01l-0.07,0.82l0.88,1.5l-0.46,1.01l0.42,0.5l0.61,-0.15l0.97,-1.17l-1.02,-1.74l1.0,-0.35l1.13,0.25l0.37,-0.3l0.18,-1.3l0.55,-0.62l1.35,-0.47l0.09,-1.77l0.66,-0.58l0.5,0.19l1.08,-0.36l1.09,1.02l6.27,2.05l0.21,0.76l-0.55,2.69l-0.45,-1.59l-0.83,-0.0l-0.46,1.29l0.45,1.34l-0.14,0.57l-1.12,0.77l-0.93,0.17l-0.42,0.53l-0.79,0.14l-1.61,1.16l-0.33,0.68l-0.72,0.38l-1.14,1.37l-0.3,1.67l-1.25,0.89l-0.46,1.36l0.34,0.34l0.58,-0.1l0.52,-1.07l0.8,0.15l0.37,0.45l-1.04,0.07l-0.98,0.85l-0.5,0.68l0.03,0.85l-1.2,1.16l-0.21,0.6l0.46,0.49l0.96,-0.26l1.65,-2.93l0.65,-0.22l0.65,0.21l0.88,-0.75l0.06,-0.98l-0.74,-1.23l0.4,-1.35l2.94,-1.79l1.3,0.24l0.4,-0.8l1.63,-0.58l0.37,0.72l-0.53,0.89l0.08,1.44l-1.99,1.87l-1.36,3.53l-2.35,0.15l-0.71,1.11l-0.46,3.71l0.27,0.82l0.83,-0.16l0.05,-1.1l0.57,-1.29l0.07,-1.59l0.78,-0.3l0.92,0.36l1.01,-0.3l0.83,-2.49l0.58,-0.83l0.91,-0.9l1.8,0.0l0.48,-0.43l-0.19,-0.89l0.56,-1.42l1.19,-0.79l0.79,-1.54l-0.18,-0.51l-0.74,-0.16l-0.35,-0.46l0.18,-0.37l-0.26,-0.41l0.75,-2.17l0.49,0.45l1.52,0.28l3.74,3.23l0.67,1.14l1.26,1.04l1.76,3.93l-1.12,0.47l-3.27,-0.62l-1.87,0.61l-1.42,1.94l-0.35,1.64l-2.6,0.34l-3.44,3.23l-3.28,-0.02l-0.74,0.27l-1.66,1.03l-0.02,0.7l1.31,0.42l1.62,-1.27l2.97,0.23l1.92,-1.07l0.42,-0.83l1.07,-0.73l1.13,-0.24l4.87,1.63l0.88,-0.06l0.8,-0.75l3.89,-0.64l3.67,1.66l1.14,1.21l0.41,1.1l-0.24,1.15l-1.47,-0.47l-1.54,0.17l-0.56,0.6l-1.08,-0.35l-0.87,0.88l-1.11,-0.02l-4.61,-1.81l-1.08,0.52l-5.37,0.06l-1.45,2.21l0.35,0.67l0.58,-0.07l1.48,-1.85l4.11,0.37l1.46,-0.52l0.8,0.68l-3.61,0.22l-1.14,0.71l-1.28,0.14l-0.3,0.6l0.9,0.45l2.07,-0.62l-0.61,0.96l-2.12,0.83l-0.53,0.55l-0.09,0.5l0.49,0.46l0.8,-0.48l0.07,2.84l0.71,-0.2l0.37,-0.69l0.01,-2.02l2.87,-2.49l1.64,0.27l3.38,1.33l-1.21,0.42l-0.35,0.82l-1.72,-0.31l-1.14,0.25l-1.16,0.76l-0.11,0.8l0.63,0.33l1.37,-0.73l1.95,0.49l0.07,0.67l-2.9,0.05l-0.35,0.3l0.51,0.66l0.61,0.03l-1.58,0.41l-0.14,0.41l0.52,0.48l-0.14,0.2l-0.81,-0.28l-1.59,0.31l-0.85,-0.53l-2.17,-0.21l-0.71,0.41l-0.15,0.52l0.74,1.32l2.91,-0.38l-0.17,0.83l0.48,0.36l0.89,-0.69l1.43,0.15l0.92,-0.36l3.0,0.22l-1.22,1.14l-2.02,-0.24l-1.06,0.51l-0.38,0.94l-0.57,0.4l0.31,0.64l0.92,0.07l0.4,0.37l2.29,-0.4l0.45,-0.89l1.59,0.19l0.47,0.56l1.29,-0.08l0.56,2.64l0.45,-0.14l0.34,-0.74l-0.22,-2.22l1.09,-0.75l0.63,0.18l-0.53,0.96l0.8,2.28l-1.1,0.65l-0.51,0.76l-0.03,0.89l0.34,0.61l0.69,-0.03l0.43,-1.26l0.67,-0.18l0.14,0.43l-0.73,0.86l0.47,0.42l0.32,-0.1l0.96,-0.69l-0.06,-1.12l0.61,-0.89l0.58,0.43l0.56,-0.92l0.88,0.18l-0.89,0.38l-0.58,1.2l0.12,1.99l-1.14,-0.14l-0.59,0.34l0.1,0.64l0.48,0.23l1.36,0.22l0.58,-0.3l0.47,-1.62l-0.32,-0.9l1.34,-1.3l1.77,0.49l-0.19,1.15l0.27,0.98l-0.64,1.3l0.17,1.06l0.41,0.45l0.55,-0.08l0.1,-1.17l0.73,-1.16l0.3,0.93l-0.13,1.2l0.15,0.43l0.45,0.01l0.62,-0.83l-0.17,-2.76l1.41,-0.1l-0.74,0.51l-0.22,0.63l1.11,0.26l0.72,-0.6l0.55,0.95l-0.69,0.91l-0.07,2.22l-1.92,-0.02l-0.56,0.43l0.09,0.64l2.05,0.54l0.72,-0.18l0.32,0.77l0.47,0.14l0.42,-0.47l-0.33,-1.25l0.0,-2.22l1.35,-1.57l-0.2,1.04l1.08,1.38l0.16,3.19l0.5,1.59l0.65,0.46l0.41,-0.68l-0.7,-3.48l0.87,-1.12l0.11,-0.9l-0.49,-1.05l0.62,-0.77l1.07,-0.25l0.15,2.93l-0.33,1.24l0.53,0.72l1.28,0.62l1.09,1.89l0.65,0.25l0.41,-0.64l-0.92,-2.03l-1.79,-1.22l0.3,-2.6l1.38,-1.36l0.02,-1.16l0.51,-0.86l2.04,0.52l-0.69,0.76l-0.86,0.09l-0.59,0.55l0.16,0.62l0.72,0.08l-0.19,0.72l-0.71,0.32l0.09,1.47l0.5,0.36l0.55,-0.57l-0.9,2.0l0.42,1.53l0.37,0.23l0.54,-0.3l-0.09,-1.47l0.59,-0.57l0.05,-0.77l0.46,-0.59l0.38,0.45l-0.09,1.22l0.5,0.27l0.58,-0.27l0.26,-0.7l-0.35,-1.86l0.48,-0.44l1.86,0.93l-1.5,1.87l0.5,0.54l1.95,-1.32l0.24,-0.55l0.64,0.87l-0.19,1.03l0.5,0.16l1.03,-0.39l0.25,1.77l-0.68,0.8l-1.33,0.11l-0.36,0.33l0.23,0.43l1.32,0.31l1.94,-0.85l1.02,1.54l-0.3,0.73l-5.62,0.57l-0.51,0.47l0.32,0.64l3.99,-0.1l-0.41,0.42l-1.21,0.14l-1.79,1.38l-0.28,0.52l0.3,0.55l0.68,0.01l1.27,-1.17l2.68,-1.09l-2.83,2.39l-0.4,0.71l-0.09,1.02l0.38,1.42l0.39,0.36l0.78,-0.41l-0.06,-1.81l0.36,-0.86l1.17,-0.53l1.27,-1.21l1.42,-0.48l0.36,-1.11l0.95,0.13l0.52,-0.56l1.08,-0.44l0.37,0.8l-0.23,1.29l-1.16,1.76l-0.17,1.27l0.52,0.87l0.49,0.08l0.04,-1.63l1.16,-1.2l0.61,-1.4l-0.25,-2.7l0.37,0.19l0.65,-0.46l0.26,-0.66l-0.17,-0.83l0.79,0.36l0.48,1.0l-0.21,1.05l-1.18,1.04l-0.24,0.75l1.15,2.57l-0.16,0.48l-1.81,1.45l0.05,1.54l-1.36,0.35l-0.27,0.35l0.46,0.73l1.96,-0.42l0.72,-0.73l0.3,2.11l0.53,0.34l0.37,-0.19l0.23,-2.4l-0.53,-1.52l2.68,-2.39l1.05,2.86l0.25,3.22l0.61,0.48l0.64,-1.37l-0.29,-0.87l0.22,-1.52l-0.93,-2.78l0.9,-0.23l1.02,1.69l0.75,0.3l1.17,1.39l0.85,-0.11l-0.18,-1.16l-1.5,-1.3l-0.35,-0.7l0.01,-0.4l0.88,-0.85l-0.59,-1.65l0.99,-0.64l0.34,0.06l-0.0,2.25l0.25,0.44l0.75,0.09l0.21,0.46l0.45,0.11l0.51,-0.57l1.97,-0.44l-0.69,0.81l0.27,0.36l0.85,0.23l1.05,-0.23l2.61,2.39l0.07,0.53l-0.74,0.62l-0.1,0.59l-0.67,0.16l-0.62,-0.81l-1.02,-0.6l-1.28,0.03l-1.19,-0.43l-0.45,0.2l-0.05,1.01l-0.88,0.62l-0.15,0.45l0.34,0.4l0.77,0.13l0.56,-0.29l0.29,-0.8l1.16,-0.0l2.51,1.93l-0.79,0.38l-0.26,0.53l-0.94,0.21l-0.77,1.17l0.32,0.4l0.56,0.05l0.67,-0.53l2.09,-0.67l0.46,0.39l-0.13,0.23l-0.45,0.05l-0.34,0.53l-0.95,0.19l-0.36,1.09l-0.33,0.13l-1.31,-0.42l-0.75,0.49l-0.37,-1.07l-0.57,-0.48l-3.33,0.22l-0.77,0.93l0.09,0.59l1.19,0.3l0.67,-0.67l0.31,0.6l1.23,0.69l-0.19,0.37l-1.47,1.5l-0.57,-0.21l-1.12,-1.43l-0.84,0.01l-0.31,0.51l1.33,1.68l1.21,0.78l0.64,-0.08l0.73,-0.72l1.88,0.66l1.22,-0.23l0.27,0.77l0.7,0.14l0.04,0.78l0.47,0.13l-0.85,0.26l-0.63,0.76l-0.72,-0.45l-1.16,-0.01l-0.87,0.35l-0.62,-0.19l-0.59,0.4l-0.99,-1.4l-0.91,-0.43l-1.15,1.0l0.32,0.7l0.94,-0.35l1.44,1.67l2.47,-0.39l0.45,0.44l0.57,-0.05l-0.09,0.93l0.73,0.34l0.7,0.91l-0.79,0.63l-0.35,-0.32l-0.85,0.4l-1.78,-1.23l-0.7,-0.08l-0.18,0.94l0.63,0.72l2.55,1.16l-1.81,-0.21l-0.36,0.52l-0.82,0.15l1.03,2.77l-0.49,-0.42l-1.44,0.23l-2.78,-3.16l-0.84,-1.54l-0.5,-0.23l-0.52,0.4l0.32,1.56l1.97,2.25l0.15,0.61l-2.48,0.81l-0.08,0.55l0.87,0.62l0.76,-0.35l0.71,0.3l0.93,-0.36l0.34,0.34l0.03,0.84l-0.51,0.28l-0.81,-0.86l-0.68,-0.1l-0.31,0.51l0.26,1.11l0.97,0.67l-0.85,0.57l0.22,0.54l1.41,0.54l-0.12,0.47l0.51,0.46l1.03,0.41l-0.42,0.7l0.62,1.36l-0.54,0.45l0.71,1.05l0.88,-0.01l-0.39,0.45l0.28,2.2l-0.28,0.51l-0.72,-0.48l-0.97,0.83l0.81,-0.76l-0.09,-0.71l-0.28,-0.1l-0.91,0.15l-0.35,0.55l-0.37,-0.89l0.29,-1.65l-0.41,-0.45l-0.88,0.34l-0.39,1.72l-0.85,-0.15l-0.04,1.3l-0.79,-0.78l0.87,-1.93l-0.86,-0.2l-1.53,1.14l-0.49,-2.36l0.44,-1.52l-0.09,-0.98l-0.54,-0.34l-0.57,0.35l-0.21,1.79l-0.5,0.64l0.46,3.9l-0.35,-0.23l-0.25,-0.91l-0.71,-0.18l0.32,-0.69l-1.21,-0.53l-0.46,0.34l-0.08,0.5l-0.2,-0.12l-0.13,-0.62l0.76,-0.15l0.51,-0.78l-0.4,-0.58l-0.62,0.07l1.07,-1.21l1.3,-0.26l0.14,-1.53l-0.67,-0.44l-0.45,0.73l-1.47,0.31l-0.2,0.66l-1.39,0.65l-0.79,1.14l-0.68,-0.57l-0.39,-0.92l1.43,-0.95l0.34,-1.28l0.29,-0.01l0.24,-0.63l-0.5,-0.51l0.75,-0.49l0.05,-0.53l-0.45,-0.29l-1.35,0.38l-0.53,2.51l-1.2,0.35l-0.18,-0.92l0.55,-0.48l-0.03,-0.73l0.68,-0.76l1.26,-0.6l-0.05,-0.89l-0.6,-0.08l-1.44,0.68l-0.69,0.69l-0.34,0.97l-1.71,0.12l0.07,-1.83l-0.26,-0.33l-0.64,0.13l0.37,-2.25l2.59,-2.46l1.07,0.37l0.82,-0.31l-0.14,-0.66l-0.98,-0.6l-0.07,-3.39l0.88,-1.88l1.13,-1.23l0.17,-0.62l-0.43,-0.52l-1.04,0.55l-1.7,1.85l-0.54,2.08l0.28,1.6l-0.49,0.74l-0.53,0.21l-1.05,1.26l-0.61,-0.13l-0.68,1.47l-3.63,1.59l-0.61,-1.34l0.16,-0.77l1.74,-2.36l0.51,-2.99l-0.49,-1.87l-0.63,-0.04l-0.19,0.3l-0.42,4.19l-1.06,1.41l-0.79,0.5l-0.92,-0.13l-1.04,-1.14l0.36,-1.37l-0.28,-0.43l-0.47,0.19l-0.44,0.81l-1.47,-0.11l-0.31,-0.53l0.09,-0.6l-0.8,-0.16l0.76,-0.76l-0.28,-0.66l-0.57,-0.04l-1.29,1.36l-0.01,-1.4l-0.56,-0.34l-0.51,0.52l-0.5,-1.59l0.51,-0.99l-0.3,-0.45l-1.13,0.24l-1.9,-0.65l-0.33,0.65l1.6,1.05l-0.31,0.34l-1.32,0.44l-0.96,-0.27l-0.44,-0.62l-1.0,0.37l-0.97,-0.57l-0.35,0.72l-0.41,0.04l-0.88,0.98l0.65,0.65l2.65,-0.4l0.67,0.17l0.43,0.79l0.92,0.48l0.1,0.44l-1.41,-0.44l-0.43,0.14l-0.2,0.59l0.75,0.81l1.79,0.67l-0.75,0.54l-0.54,-0.39l-0.26,0.21l-0.91,-1.3l-1.66,-0.97l-0.49,0.25l-0.72,-0.19l-0.62,-1.05l-1.11,0.17l-0.48,0.54l0.16,0.52l1.09,0.64l0.41,0.86l0.93,0.76l0.75,1.19l-0.05,1.05l3.15,1.69l1.16,0.19l1.0,1.25l-0.47,0.3l-0.05,0.71l0.77,0.63l-0.39,0.18l-0.74,-0.28l-0.37,0.99l-0.95,0.19l-1.16,-0.82l-0.63,0.35l0.43,1.06l-0.27,0.32l-0.63,-0.16l-1.24,-1.61l-0.02,-1.8l-2.32,-0.81l-0.78,-1.44l-0.63,-0.01l-0.45,0.44l-0.58,-1.04l-0.78,-0.51l-0.46,0.21l-0.07,0.49l0.68,1.2l-2.72,1.06l0.31,0.64l1.36,0.11l1.7,-0.77l1.93,1.66l0.6,0.1l0.38,-0.45l-0.28,-0.56l0.87,0.64l0.01,0.33l-0.54,0.04l-0.39,0.57l-0.64,-0.57l-0.57,0.19l-0.0,0.66l0.71,0.87l-0.18,1.0l0.76,0.68l0.89,-0.25l0.01,0.91l0.43,0.29l-0.42,0.73l0.54,0.41l1.6,-0.08l0.54,-0.43l-0.36,0.54l0.05,1.05l0.82,0.33l0.16,0.5l-0.66,0.16l0.09,0.71l-0.45,0.82l0.21,0.56l0.59,0.06l-0.25,1.07l0.52,0.44l0.48,-0.36l0.63,-1.97l0.54,-0.28l0.22,-1.04l1.25,-0.75l0.34,0.18l0.51,-0.36l-0.01,-0.43l1.0,0.28l0.17,0.33l-0.46,0.83l0.21,0.36l-0.75,1.49l1.43,0.98l1.73,-0.66l0.42,0.5l-0.07,0.64l-1.38,0.37l-0.81,0.55l-0.19,0.59l0.48,0.5l0.61,0.1l0.61,-0.72l0.74,0.38l0.35,1.8l0.85,0.37l0.46,-0.4l0.55,0.1l0.19,1.06l-0.71,0.4l-0.23,1.29l0.55,0.26l0.7,-0.62l0.72,0.5l0.95,-0.02l0.51,0.75l-0.6,0.81l1.04,0.41l-0.1,0.9l1.14,2.04l0.78,-0.07l0.29,-0.88l-0.6,-0.62l-0.38,-2.84l-0.48,-0.75l0.52,0.19l0.2,0.82l0.71,0.45l1.39,0.04l0.33,0.84l0.58,-0.07l0.19,-0.62l0.31,0.19l0.21,1.48l-0.91,0.24l-0.16,0.68l1.08,0.23l0.57,1.18l0.44,0.07l0.46,-0.4l-0.13,-1.23l0.04,-0.29l0.53,1.04l0.72,-0.24l1.34,1.16l0.43,0.03l0.32,-0.41l-0.12,-0.55l-1.12,-1.21l0.19,-0.62l-0.72,-0.54l0.08,-0.66l-0.29,-0.39l0.28,-0.12l0.38,1.13l0.64,-0.23l-0.13,1.01l0.57,1.12l0.5,0.15l0.28,-0.49l-0.19,-1.12l0.42,0.49l0.19,1.22l-0.28,0.81l-0.75,0.64l0.96,2.23l0.44,0.16l1.17,-0.56l0.27,0.32l0.64,-0.18l0.3,0.54l0.57,-0.17l0.21,-0.59l0.53,-0.02l0.26,-0.45l0.94,-0.02l0.08,0.44l-1.15,0.7l-0.12,0.55l0.92,0.72l-0.06,0.57l-2.62,0.09l-0.89,0.66l-0.13,0.65l0.51,0.23l1.18,-0.44l-0.61,0.48l0.09,0.63l0.62,0.14l1.03,-0.41l0.67,0.31l-0.54,1.3l0.48,0.28l0.61,-0.22l0.29,-0.59l0.32,0.21l0.6,0.66l-0.19,0.32l0.26,0.52l-0.3,0.64l0.37,0.4l2.23,-0.34l0.04,0.74l0.46,0.02l0.61,-0.53l0.29,-0.81l0.34,0.24l0.56,-0.38l0.18,0.22l-1.53,1.95l0.09,0.7l-0.52,0.44l-0.03,0.88l0.95,0.96l1.69,0.18l0.45,-0.24l1.74,1.04l0.2,0.48l-0.47,0.7l0.53,0.51l1.11,2.71l-0.7,-0.07l-0.27,0.71l0.43,0.55l0.85,0.13l0.2,0.39l-0.88,0.25l0.13,0.61l0.9,0.27l-0.51,0.23l-1.11,-0.91l-1.52,-3.1l-1.23,-1.15l-0.37,-1.05l-1.5,-0.75l-1.36,-1.84l-1.5,-0.2l-0.37,0.51l2.03,1.66l0.73,1.05l1.02,0.59l-0.64,0.99l0.77,1.77l-0.59,0.67l0.78,0.94l0.8,-0.19l0.98,1.22l-0.73,-0.32l-0.46,0.27l0.06,0.47l-0.32,0.02l-0.27,0.66l0.9,0.88l0.37,0.84l0.53,0.26l0.95,-0.38l0.41,0.63l0.73,-0.1l-0.41,0.25l0.02,0.64l0.6,0.27l0.38,0.75l-0.06,1.3l1.26,0.59l-0.07,0.52l-0.77,0.16l-1.95,-0.91l-0.65,-0.89l-0.62,0.28l-0.04,0.62l-0.58,-0.65l-0.66,0.31l0.13,0.75l1.08,0.83l0.25,0.9l2.55,2.45l0.58,1.08l-1.04,1.6l-0.51,-0.36l-1.04,-1.83l-0.26,0.05l0.42,-1.04l-0.23,-0.6l-0.58,-0.02l0.44,-0.38l-0.29,-0.64l-0.56,0.01l-0.36,-1.34l-0.79,0.23l0.01,1.36l-1.22,0.77l-0.71,-1.25l-0.78,-0.08l0.19,-1.27l-0.76,-1.4l-0.61,0.13l-0.18,0.73l-0.45,-0.23l-0.42,0.2l-0.71,1.16l-0.47,-1.12l-0.77,0.16l-0.45,-0.76l-1.37,-0.58l-0.46,0.33l0.1,0.53l0.81,0.59l0.39,0.91l1.11,0.62l-0.01,0.38l-1.22,-0.65l-1.0,0.15l-1.14,-0.99l0.1,-0.36l-0.96,-1.06l-0.25,-1.14l-1.39,-0.99l0.13,-1.28l-0.27,-0.63l-0.71,0.03l-0.26,2.36l-0.41,-0.2l-0.42,0.46l0.11,0.93l0.59,0.94l-1.38,-1.03l0.36,-0.84l-0.65,-0.78l-0.28,-1.63l-0.55,-0.11l-0.39,0.37l0.37,2.04l-0.91,-0.42l-0.28,0.26l-1.34,-1.03l-0.81,-1.45l-0.68,0.04l-0.09,0.29l-0.63,-1.12l-0.82,-0.47l-0.87,-1.14l0.03,-0.36l-0.6,-0.38l-0.47,0.39l-0.36,-0.77l-1.44,-1.18l-0.47,0.04l0.07,0.87l1.36,1.69l0.37,1.43l1.98,3.03l-0.7,-0.34l-1.51,-1.66l-1.45,-0.62l-0.54,-0.85l-0.79,0.11l-1.1,-1.62l-0.52,0.0l-0.2,0.94l-0.57,-0.9l-0.72,-0.44l-0.63,-0.06l-0.22,0.29l-1.62,-0.51l-0.41,0.53l0.22,0.44l-1.37,-0.23l-0.86,0.53l0.28,0.7l1.76,1.39l-0.23,0.39l0.17,0.49l0.68,0.2l0.91,1.08l2.22,1.24l2.37,2.05l0.24,0.75l0.79,0.39l0.03,0.8l1.12,0.68l1.56,-0.11l-0.1,0.91l0.36,0.54l0.7,-0.17l0.29,-0.85l1.0,0.23l-0.45,0.99l0.92,1.52l0.5,-0.1l0.68,0.63l0.75,-1.18l0.81,-0.52l0.2,0.78l0.61,-0.08l0.53,0.41l-0.52,0.84l0.87,0.23l0.76,-0.65l-0.25,1.11l1.32,-0.23l-0.1,0.7l1.05,0.37l-0.12,0.95l0.64,0.13l0.45,0.65l1.61,-0.83l0.0,0.32l0.98,0.54l0.57,-0.07l0.86,0.74l0.78,0.84l0.17,1.5l0.47,0.27l0.64,-0.59l0.44,0.48l-0.91,0.86l0.36,0.76l1.38,0.89l0.73,-0.19l0.97,0.4l1.26,-0.01l0.43,-0.41l0.32,0.26l-0.68,1.24l0.31,0.86l-0.75,-0.65l-0.59,0.21l-0.04,0.81l1.15,0.98l0.1,0.93l0.59,0.08l1.36,1.14l-2.31,1.17l-1.19,-0.02l-1.96,-0.5l-0.18,-0.64l-0.76,0.1l-0.74,-0.72l-0.98,0.11l-0.95,-0.31l-1.0,0.15l-0.36,0.42l-1.57,-0.92l-0.43,0.51l-0.19,-0.76l-0.37,-0.24l-1.45,0.23l-1.14,-0.4l-0.65,0.6l-0.58,0.05l-0.88,-0.71l-0.48,0.37l-1.37,0.08l-0.3,-0.27l-4.39,0.62l-1.38,-0.54l-0.35,-0.62l-0.83,-0.02l-0.59,-0.69l-1.57,0.4l-1.67,-0.82l-0.9,-0.67l-0.37,-0.78l0.01,-1.34l-0.41,-0.53l-0.69,0.38l0.03,0.7l-0.84,-0.79l-0.43,0.1l-0.06,0.34l-0.5,-0.52l0.54,-0.05l0.56,-0.86l-0.33,-0.54l0.56,-0.63l-0.41,-0.62l-1.57,0.32l-0.59,-0.3l-0.84,0.31l-0.99,-0.56l-0.6,0.13l-0.08,0.55l0.4,0.55l-0.43,-0.42l-0.69,0.11l-0.75,1.07l-1.42,0.12l-2.52,-1.63l-2.54,0.01l0.2,-0.45l-0.42,-0.29l-1.26,-0.11l-0.19,-1.13l-0.44,-0.35l0.09,-0.64l0.92,-1.25l-1.32,-0.83l-0.81,0.48l-0.15,1.58l-1.2,-0.09l-0.26,1.25l-1.15,-0.07l-0.18,-1.19l-1.64,0.01l-0.98,-0.46l0.16,-0.38l-0.55,-0.5l0.38,-0.78l-0.43,-0.4l-0.72,0.02l-0.4,-2.19l1.07,-0.27l0.43,-1.0l1.14,-0.67l0.04,-0.69l0.85,-1.06l0.17,-1.27l-1.84,-0.43l-0.49,0.48l-0.77,-0.38l0.15,-1.01l-1.4,-0.33l-0.26,-0.37l-0.69,0.23l-1.64,-1.22l-0.78,0.57l-0.18,1.32l-0.58,0.16l-0.56,-0.73l-0.58,-0.07l0.18,-1.23l0.67,-0.43l0.15,-1.02l-1.09,0.32l-0.3,-0.9l-0.73,0.09l-0.09,1.16l-0.29,0.12l-0.5,1.5l-1.46,-0.6l-0.29,-0.72l0.3,-0.52l-0.12,-1.52l-0.29,-0.44l-0.46,0.04l-0.14,-0.85l-0.61,-0.22l-0.3,0.38l0.07,1.25l-0.64,-0.07l-0.3,-0.49l-0.38,-0.02l0.36,-0.74l-0.74,-1.53l-1.28,-0.25l-0.15,-0.78l-0.54,-0.29l-0.09,-0.5l-0.94,-0.22l-0.64,-0.63l-0.1,-0.62l-1.13,-0.55l0.59,-0.94l-0.47,-0.58l1.2,-2.13l-0.2,-0.61l-0.64,-0.11l-0.19,0.29l-0.44,-0.98l-0.45,-0.19l-0.61,0.96l0.68,1.51l-0.77,-1.17l-0.6,-0.01l-0.38,0.42l-0.59,-0.93l-0.67,-0.23l-0.44,0.46l0.28,1.74l-0.36,0.2l-1.32,-0.94l-0.59,0.55l-0.62,-0.56l-0.09,-1.88l-0.72,-0.6l-0.54,0.23l0.09,1.16l-0.44,0.47l-0.63,-0.22l-0.48,0.18l-0.14,0.48l-0.66,-0.0l0.04,0.68l-0.35,0.24l-0.37,-0.75l-1.23,-1.03l0.67,-1.75l0.44,0.01l0.34,-0.68l-1.19,-1.24l-0.75,0.01l-0.43,0.26l-0.01,0.6l-0.54,0.34l0.21,1.06l-0.35,-0.12l-0.46,0.42l-1.02,-0.08l-0.31,0.63l0.52,0.68l0.87,0.22l0.66,0.94l0.67,0.18l2.29,1.83l-0.87,0.05l-0.38,0.54l0.62,1.27l0.61,0.28l-1.02,1.15l-0.58,-0.18l-0.27,0.34l-0.81,-0.66l-0.63,0.17l-1.87,-1.07l-0.56,0.74l-1.02,-0.83l-1.61,-0.36l-0.69,-0.54l-0.47,0.19l-1.45,-0.83l-0.42,0.13l-0.24,0.53l0.31,1.11l0.3,0.69l0.95,0.49l-1.44,-0.25l-0.25,0.79l0.76,0.38l0.57,0.88l-1.41,-0.29l-0.61,0.68l-0.48,-0.21l-1.39,0.98l-0.7,-0.03l-0.16,0.85l-1.87,0.48l-0.17,0.38l-0.81,-0.01l-0.13,0.84l0.38,1.0l-1.71,-1.01l-0.65,0.23l-1.0,-0.62l-1.67,1.18l-0.35,-1.07l-0.42,-0.32l-0.55,0.21l-0.31,-0.61l-1.4,-0.53l-0.54,0.33l-0.11,0.67l-1.01,-0.4l0.3,-0.51l-0.13,-0.45l-1.38,0.16l0.23,-0.61l-1.02,-0.96l-0.17,-0.72l-0.74,-0.26l0.25,-0.48l-0.71,-1.26l0.18,-0.51l-0.36,-1.21l0.78,-1.48l-0.02,-0.51l-0.63,-0.89l-0.31,-1.18l1.12,-1.37l0.09,-0.51l1.93,-1.4l0.53,-0.81l1.09,-0.13l1.43,-1.19l0.04,-0.68l-1.92,-2.13l0.17,-0.67l0.89,0.2l0.6,-0.67l-0.27,-0.66l-0.98,-0.8l1.41,0.15l1.07,0.66l1.04,-0.06l0.45,-0.49l0.53,-0.05l0.56,0.41l0.84,-0.19l7.68,2.38l0.82,1.41l1.83,0.64l0.68,0.6l0.41,1.5l-0.5,0.55l-1.05,-0.06l-0.33,0.78l0.52,0.45l0.49,1.17l0.99,0.07l-0.49,0.9l0.31,0.61l0.65,0.05l0.66,0.87l0.44,0.03l0.79,-0.44l0.11,-0.67l-0.95,-1.79l-0.05,-1.5l-0.68,-0.39l0.15,-0.29l0.71,0.28l0.39,-0.55l-0.32,-0.58l0.51,-1.52l-0.13,-0.91l-0.6,-0.33l-0.65,0.41l-0.15,1.57l-1.94,-2.57l-1.32,-0.45l-0.48,-0.65l-1.23,-0.36l-0.25,-0.41l1.27,-0.02l0.51,-0.38l0.8,0.76l3.17,0.01l1.07,-0.93l0.1,-1.11l-0.32,-0.89l0.62,0.17l0.8,-0.53l0.54,0.15l0.59,-0.33l0.55,0.78l1.37,0.15l1.54,-1.96l0.16,-1.33l1.1,-0.55l0.05,-0.78l1.06,0.43l0.77,-0.72l0.75,0.05l0.97,1.1l0.83,-0.3l0.89,0.2l0.39,-0.27l-0.26,-1.16l-1.44,-2.04l-0.09,-0.93l-0.73,-0.35l0.12,-0.99l-0.68,-0.93l-1.2,-0.81l-1.56,-0.46l-2.13,-2.36l-1.97,-1.59l-0.53,-0.93l0.68,-1.51l1.82,-1.83l4.2,-6.04l0.47,-2.31l1.53,-1.58l1.19,-0.4l0.14,-0.56l-0.7,-1.39l0.54,-2.21l0.16,-2.48l0.69,-0.74l2.1,-0.9l0.84,-1.86l-0.22,-1.08l0.38,-0.95l-0.16,-0.63l-1.36,-0.67l-1.07,-2.69l-0.58,-0.53l0.34,-0.96l-0.93,-1.74l-0.87,-0.24l-0.62,-0.6l-0.11,-0.45l0.44,-0.66l-0.32,-1.05l-1.63,-1.76l-0.77,0.29l-0.32,-0.47l-0.38,-2.29l-1.67,-4.46l-0.46,-0.24l-0.81,0.54l-0.62,-0.91l-0.94,-0.19l0.26,-0.39l-0.17,-0.72l0.62,-0.33l-0.15,-0.42l-0.7,-0.39l-0.47,0.04l-0.49,0.94l0.06,0.55l-0.73,0.33l-0.21,0.76l-2.05,-0.67l-0.84,-1.08l0.22,-1.54l0.88,-0.77l-0.12,-0.73l-0.36,-0.28l0.16,-1.79l-0.79,-1.05l-3.03,-0.48l-0.5,0.19l-0.27,0.58l2.86,3.0l-0.06,0.55l-0.47,-0.39l-1.3,0.49l-1.25,-0.17l-0.57,-0.73l-0.57,-0.2l-0.41,-1.24l-1.53,-1.09l-0.07,-0.41l0.81,-0.62l0.17,-1.14l-0.42,-0.46l-0.73,-0.12l-0.42,-1.6l-0.71,-0.12l-0.51,0.29l-0.0,-0.54l-0.73,-0.08l0.55,-0.29l0.4,0.27l1.02,-0.53l0.24,-0.48l-0.4,-0.87l-1.32,-0.65l-0.99,0.48l-1.02,1.51l-0.14,2.43l-2.3,-2.24l-0.78,0.0l-0.62,0.99l0.62,1.23l-0.47,0.78l-1.31,1.23l-0.97,0.45l-0.55,1.14l-1.93,1.88l-1.75,0.63l-0.45,-1.23l0.57,-1.24l0.12,-1.44l-0.97,-0.74l-0.22,-1.81l1.19,-0.86l1.8,0.01l0.84,0.62l0.73,-0.12l1.19,-1.21l0.2,-0.69l1.15,-0.16l0.37,-0.54l0.02,-1.27l-0.53,-1.86l-0.96,-1.14l-2.45,-1.54l-1.7,-0.62l-1.39,0.45l-0.59,-1.14l-1.49,-1.35l-0.04,-0.67l0.74,-1.28l1.85,0.5l0.34,-1.26l-0.4,-0.58l-1.22,0.13l-0.53,-0.6l-1.73,0.58l-0.26,0.56l0.46,0.5l0.4,-0.08l-0.69,0.58l-0.11,1.06l-0.82,-0.16l0.33,-0.57l-0.16,-0.5l-0.93,0.3l-0.45,0.57l-0.34,-0.58l-0.92,-0.04l1.0,-0.68l0.53,0.26l0.58,-0.25l0.62,-1.2l-0.21,-0.88l-0.74,-0.19l0.81,-0.68l-0.14,-0.82l-0.48,-0.18l-1.25,0.55l0.09,-0.34l-0.49,-0.48l-0.69,0.29l-0.36,0.55l-0.66,-0.06l1.88,-1.51l0.2,-0.52l-0.5,-0.52l-3.53,2.22l-0.73,0.8l-1.32,-7.62l-0.89,-1.06l-0.81,-0.25l-0.68,0.2l-0.56,0.69l-1.16,-0.49l-0.31,0.65l-0.65,0.39l-1.01,-1.45l0.72,-0.54l-0.2,-0.6l-0.89,-0.28l-0.77,0.25l-1.43,-2.18l-0.46,0.15l-0.16,-0.38l-0.63,-0.11l-0.21,0.51l-0.39,0.0l0.02,-0.94l0.69,-0.19l0.23,-0.7l0.65,0.38l0.67,-0.32l-1.17,-2.05l-0.24,-0.18l-0.69,0.3l-0.48,-1.0l-0.73,0.09l-0.82,1.32l0.23,0.67l0.74,0.04l-0.47,1.38l-0.55,-0.77l-0.72,0.44l0.03,1.14l-0.75,0.13l0.01,0.65l-0.55,0.17l-0.47,0.63l-0.06,0.83l1.16,1.13l0.61,0.2l0.43,-0.39l1.24,1.09l0.8,-0.07l0.41,-0.55l0.33,0.25l1.65,2.55l0.39,2.11l0.69,1.33l-0.08,1.72l-0.52,0.66l-4.35,0.59l-1.6,0.86l-1.74,-2.45l-0.55,-0.05l-0.35,0.45l-0.46,-0.8l-1.34,-0.07l-0.86,0.48l-1.6,-1.01l-1.92,0.03l-0.77,-0.32l-0.65,0.27l-0.31,-0.61l-0.8,0.21l-2.96,-0.16l-1.17,-0.45l-0.6,0.18l-0.19,0.63l0.72,1.13l0.95,0.16l1.16,1.27l0.47,-0.07l0.5,-0.6l0.69,0.48l0.61,1.42l2.84,2.71l-0.04,0.5l-0.53,0.47l-1.01,-0.79l-0.79,-1.21l-0.86,-0.35l-1.72,-1.57l-0.61,-0.06l-0.07,-0.83l-0.56,-0.19l-0.79,0.22l-2.88,-2.78l-3.45,-1.36l-3.58,-2.36l-0.7,0.21l0.08,0.45l2.03,2.2l0.69,-0.04l3.53,1.7l1.43,1.03l1.4,1.69l1.11,0.35l-0.83,1.43l-0.97,-0.26l-0.92,1.2l-1.07,-0.71l-0.99,0.26l-1.64,-1.29l-0.67,0.01l-0.98,-0.6l-1.1,-1.1l-1.17,-0.16l-1.0,0.22l-0.47,0.65l-2.09,0.89l-3.02,-0.68l-2.06,0.14l-1.18,-0.39l-1.18,0.11l-0.91,-0.58l-0.1,-0.31l0.49,-0.65l-0.36,-0.74l-0.5,0.06l-0.78,1.02l-2.79,-0.72l-3.39,0.36l-0.74,0.52l0.03,1.0l-2.42,-1.57l-2.06,-2.53l-0.29,-2.53l0.45,-1.09l0.92,-0.54l0.59,-0.83l-0.18,-0.85l-0.58,-0.55l-0.52,0.04l-0.17,0.59l0.3,0.44l-1.61,1.29l-0.54,1.08l-0.07,-0.35l-0.83,-0.11l-0.42,-0.63l0.14,-0.5l-0.63,-0.54l-0.68,0.08l-0.91,0.67l-0.12,0.72l-0.56,0.29l-0.16,0.74l0.33,0.31l1.43,-0.04l0.14,1.23l-3.28,-0.82l-2.11,-0.01l-0.46,0.4l-3.84,-2.75l-2.22,-0.36l-1.4,-1.55l-0.77,-2.5l-2.1,-2.54l-0.99,-2.59l1.3,-0.38l0.48,-1.01l-2.06,-2.13l1.08,0.15l0.09,0.48l0.89,0.54l1.49,-0.44l0.64,0.29l1.33,-0.38l1.43,0.48l0.66,1.5l3.26,0.51l1.56,-0.59l2.27,0.19l0.39,-0.25l0.31,-1.1l1.65,0.38l0.43,-0.25l-0.01,-0.62l-2.26,-0.87l-3.09,-2.1l-0.64,-0.98l0.1,-1.55l-0.33,-0.37l-0.98,0.11l-0.93,1.12l-2.87,-0.63l-0.8,0.19l-8.42,-2.04l-0.92,-2.4l0.28,-1.64l-0.49,-1.28l1.6,-3.77l-0.7,-0.74l0.04,-0.56l-0.44,-0.27l-0.06,-0.61l-1.0,-1.53ZM474.89,330.28l0.28,0.24l0.75,0.17l-1.05,0.62l-0.53,-0.59l0.54,-0.44ZM473.1,330.1l-0.24,-0.03l-0.02,-0.02l0.2,-0.03l0.05,0.07ZM482.98,328.72l0.11,0.5l-0.87,0.03l-0.03,-0.17l0.79,-0.36ZM489.76,335.68l1.57,-0.65l1.38,0.68l-1.06,-0.2l-1.35,0.52l-0.55,-0.35ZM516.89,338.24l0.08,0.2l-0.05,0.1l-0.02,-0.01l0.0,-0.29ZM550.53,335.08l0.41,-0.09l-0.17,0.82l-0.12,-0.36l-0.11,-0.37ZM574.57,352.21l0.32,0.6l-0.22,0.09l-0.34,-0.24l0.25,-0.45ZM587.4,361.26l-0.15,0.27l-0.05,0.15l0.03,-0.41l0.16,-0.01ZM582.66,432.03l-0.03,0.04l0.02,-0.03l0.02,-0.01ZM595.94,436.99l0.4,0.28l0.14,0.44l-0.7,-0.42l0.16,-0.3ZM596.67,437.96l0.17,0.24l-0.2,0.4l-0.6,0.52l-0.32,-0.49l0.66,0.03l0.28,-0.7ZM596.17,440.05l0.05,1.42l-0.31,0.11l-0.08,-0.87l0.34,-0.66ZM595.8,441.61l-0.03,-0.02l0.04,-0.0l-0.01,0.02ZM601.28,436.5l-0.0,0.18l-0.07,0.04l0.01,-0.01l0.06,-0.21ZM601.6,439.23l-0.21,0.44l-0.21,-0.16l0.05,-0.3l0.37,0.02ZM602.6,440.59l-0.02,0.19l-0.36,0.35l-0.06,-0.15l0.44,-0.39ZM602.33,441.58l0.22,0.2l0.05,0.16l-0.23,-0.16l-0.03,-0.2ZM611.97,449.62l0.04,0.02l-0.04,0.01l0.01,-0.03ZM613.64,450.53l0.12,0.98l-0.1,0.01l-0.22,-0.97l0.21,-0.02ZM615.77,450.38l0.09,-0.01l-0.03,0.11l-0.01,-0.03l-0.04,-0.08ZM616.5,450.11l0.17,-0.03l-0.0,0.12l-0.01,0.01l-0.15,-0.11ZM620.7,451.92l0.0,0.12l-0.28,0.07l-0.0,-0.12l0.28,-0.07ZM662.94,449.05l1.26,0.8l0.05,0.79l0.54,0.66l0.04,0.32l-0.31,-0.09l-0.41,0.59l-0.41,-1.74l-0.76,-1.32ZM672.48,451.57l0.27,0.56l-0.74,0.85l0.19,-0.89l0.28,-0.52ZM677.96,454.27l-0.21,0.16l-0.02,-0.11l0.23,-0.04ZM650.02,390.37l0.52,0.43l0.09,0.2l-0.45,-0.05l-0.16,-0.58ZM680.59,409.03l0.0,0.01l-0.0,0.01l-0.0,-0.02ZM680.54,409.32l0.0,0.21l0.09,0.25l-0.18,-0.29l0.09,-0.18ZM678.47,399.02l0.0,-0.0l0.01,0.0l-0.01,-0.0ZM682.18,392.84l0.95,-0.04l0.73,0.46l-0.59,0.39l-0.21,0.76l-0.88,-1.57ZM630.85,349.97l0.11,-0.9l-0.31,-0.9l0.96,0.08l0.27,-0.33l0.26,0.38l-0.18,0.75l-1.1,0.92ZM634.0,348.94l0.23,-1.09l0.75,0.21l-0.06,0.86l-0.92,0.02ZM635.37,347.66l0.31,-0.27l0.31,-0.07l-0.19,0.29l-0.43,0.04ZM624.08,340.79l0.03,0.01l-0.01,-0.0l-0.02,-0.01ZM522.91,287.92l0.09,0.04l0.15,0.16l-0.08,-0.03l-0.17,-0.18ZM490.83,269.21l-0.1,0.22l-1.54,-0.13l0.29,-1.42l1.36,1.32ZM527.94,279.44l-0.04,-0.23l0.12,0.06l-0.09,0.17ZM541.95,291.93l-1.03,-0.78l-1.11,-1.72l0.33,-0.2l1.8,2.69ZM574.55,296.29l-0.01,-0.14l0.08,0.1l-0.07,0.04ZM622.27,341.79l0.57,-0.05l0.37,0.23l-0.06,0.02l-0.88,-0.2ZM621.25,347.63l0.29,-0.42l0.66,0.04l-0.11,0.11l-0.85,0.26ZM662.77,365.97l0.84,-0.66l-0.06,0.71l-0.78,-0.04ZM681.57,367.03l0.1,-0.68l0.41,0.51l0.69,-0.27l-0.11,0.28l-1.08,0.17ZM663.48,400.23l-0.06,0.03l-0.14,0.26l-0.08,-0.23l0.27,-0.06ZM653.19,413.28l0.02,-0.07l0.01,0.04l-0.03,0.03ZM663.75,417.21l0.03,-0.16l0.0,-0.05l0.04,0.06l-0.07,0.15ZM656.01,454.5l0.2,-0.08l0.01,0.01l-0.0,0.01l-0.21,0.05ZM656.44,456.3l0.17,-0.67l0.69,-0.27l0.05,0.1l-0.91,0.84ZM672.11,466.42l-0.48,-0.52l-0.04,-0.18l0.99,0.26l0.03,0.26l-0.5,0.19ZM626.92,462.69l-0.05,0.04l-0.35,0.13l0.03,-0.16l0.37,-0.02ZM618.61,456.15l-0.06,0.22l-0.83,-0.15l0.45,-0.09l0.44,0.02ZM539.29,319.83l-0.1,-0.03l0.05,-0.09l0.05,0.11l0.0,0.0ZM537.02,321.59l0.12,0.78l-0.07,0.39l-0.29,-0.51l0.24,-0.67ZM685.15,391.57l0.47,0.18l0.41,-0.3l0.22,0.37l1.2,0.21l-1.42,0.29l-0.89,-0.74ZM683.06,459.74l0.95,-0.38l0.19,-0.69l-0.69,-0.33l0.15,-0.41l0.86,0.39l1.28,-0.46l0.26,-0.4l0.66,0.36l-0.47,0.62l0.38,1.23l-0.58,0.69l-2.73,-0.08l-0.27,-0.54ZM683.43,471.03l0.28,-0.59l0.59,0.1l0.69,1.09l0.6,0.06l0.22,0.47l0.7,-0.01l0.58,0.61l-0.16,0.39l-2.13,-0.41l-0.78,-0.57l-0.58,-1.14ZM680.85,436.57l0.47,-0.31l1.46,3.68l-1.98,-3.03l0.04,-0.33ZM683.04,440.33l1.1,0.65l0.41,0.66l-0.53,-0.25l-0.98,-1.06ZM683.89,436.94l0.21,0.16l-0.01,0.29l-0.01,-0.01l-0.19,-0.44ZM681.52,458.42l0.32,-0.72l0.69,-0.02l-0.6,0.62l-0.41,0.12ZM681.24,433.57l-0.29,-1.01l0.41,-0.1l0.22,0.23l-0.35,0.88ZM677.29,433.02l0.03,-0.85l0.54,0.28l-0.04,0.5l0.66,0.32l-0.37,0.59l0.38,0.45l-0.62,-0.42l-0.88,0.54l-0.63,-0.2l-0.22,-0.27l0.18,-0.53l0.98,0.49l-0.01,-0.9ZM678.64,434.4l0.26,0.02l0.11,0.08l-0.11,-0.06l-0.26,-0.04ZM679.82,434.77l0.32,-0.34l0.23,0.91l-0.36,-0.42l-0.19,-0.15ZM677.96,474.7l0.38,-0.71l0.73,0.08l0.13,0.28l-0.56,0.47l-0.68,-0.12ZM674.37,366.72l0.0,-0.0l0.0,0.01l-0.01,-0.0ZM674.51,366.15l-0.12,-0.36l0.97,-1.19l-0.06,-0.72l0.92,-0.55l-1.2,2.63l-0.51,0.19ZM672.23,425.21l0.0,0.0l-0.0,0.01l-0.0,-0.01ZM672.34,425.47l0.06,0.1l-0.03,-0.05l-0.02,-0.05ZM672.48,425.69l0.47,0.19l0.17,0.69l-0.4,-0.49l-0.25,-0.39ZM665.91,422.18l0.01,-0.79l0.82,-1.94l0.42,0.21l0.54,-0.31l0.04,-0.39l0.41,0.37l-1.19,1.04l0.24,0.64l-0.74,0.27l-0.09,0.62l-0.45,0.28ZM665.53,363.97l0.62,-1.05l0.09,0.46l0.55,0.27l-1.26,0.31ZM666.87,363.64l0.66,-0.69l0.48,0.21l-0.28,0.26l-0.87,0.22ZM664.04,502.78l0.64,-0.0l0.65,0.75l1.14,0.57l0.12,0.96l-0.61,1.68l0.07,0.58l-0.8,0.31l-0.8,0.86l-0.19,0.67l-1.13,0.8l-0.48,-0.7l0.33,-6.17l1.05,-0.31ZM662.27,358.38l1.11,0.82l0.23,0.27l-1.19,0.41l-0.15,-1.5ZM639.48,351.75l0.24,-0.63l1.19,-0.11l0.22,0.76l-1.65,-0.02ZM626.89,465.68l0.24,0.01l-0.19,0.0l-0.05,-0.01ZM627.92,465.72l2.0,0.07l2.76,0.84l0.68,0.41l0.97,1.31l0.69,-0.06l0.94,1.07l-1.05,0.85l-1.68,0.11l-0.77,-0.35l-0.48,0.24l-1.03,-0.81l-0.22,-0.97l-0.56,-0.72l0.68,-0.55l-0.2,-0.75l-0.51,-0.21l-0.81,0.28l-1.42,-0.76ZM625.88,343.48l0.72,0.13l-0.17,0.02l-0.55,-0.16ZM624.15,326.73l0.98,-1.23l0.48,-0.09l0.38,0.33l-1.04,0.31l-0.41,0.62l-0.4,0.06ZM619.93,326.41l0.75,-1.58l0.99,0.23l0.78,-0.44l-0.08,-0.26l0.21,0.17l-0.66,1.38l-0.09,0.97l-1.9,-0.45ZM610.78,452.57l0.01,-0.01l0.0,0.02l-0.02,-0.01ZM597.11,474.23l0.51,-0.32l0.72,0.34l0.21,0.46l-0.8,-0.03l-0.64,-0.45ZM598.89,474.9l2.06,-0.45l1.01,0.13l0.33,0.51l-0.8,0.22l-2.61,-0.41ZM599.04,437.65l0.38,-0.55l0.19,-0.09l-0.03,0.69l-0.54,-0.05ZM599.87,438.39l0.12,0.08l0.02,0.12l-0.07,-0.09l-0.06,-0.1ZM599.82,439.43l0.16,1.13l-0.14,0.22l-0.37,-1.33l0.35,-0.02ZM585.61,305.0l0.49,-0.07l0.4,-0.5l-0.14,-2.55l0.52,-0.43l2.67,0.65l0.91,-0.13l-0.02,1.53l-1.36,0.55l-1.7,1.42l-0.5,0.98l-0.28,0.03l-0.2,-0.69l-0.77,-0.8ZM580.19,367.11l0.33,-1.37l0.49,0.37l-0.3,0.82l0.31,0.74l1.17,-0.11l2.88,1.01l0.66,-0.53l1.83,0.03l0.71,2.5l0.42,0.4l-0.04,0.79l-7.4,1.27l-1.1,-0.39l-2.06,-2.68l-0.25,-1.55l0.43,-0.5l1.6,-0.02l0.32,-0.8ZM579.32,359.58l1.96,2.07l-0.27,1.41l-0.22,-0.53l0.31,-0.6l-1.14,-0.8l-0.64,-1.55ZM575.3,680.75l0.71,-0.09l0.76,-0.89l1.39,-0.92l0.34,0.08l-0.66,2.13l-2.24,0.45l-0.3,-0.76ZM578.38,289.95l0.39,0.85l-0.26,1.18l-1.22,-0.22l-0.25,-0.33l0.39,-1.2l0.96,-0.29ZM575.01,293.4l0.88,-0.93l0.29,0.29l-0.34,1.92l-0.83,-1.28ZM575.89,294.88l0.04,0.13l-0.04,-0.01l-0.01,-0.11ZM576.25,295.51l0.29,0.14l0.49,-0.38l-0.04,-0.63l0.52,-1.05l0.6,0.68l-1.02,0.9l0.3,1.54l-1.02,-0.28l-0.11,-0.92ZM577.71,297.2l0.02,0.04l-0.01,0.07l-0.02,-0.0l0.0,-0.1ZM570.15,460.77l0.38,-0.61l-0.43,-0.34l-0.62,0.04l0.31,-0.59l1.82,0.42l0.62,-0.18l3.09,1.4l0.74,0.76l-0.23,0.36l0.17,0.58l0.75,0.13l-0.55,0.43l0.0,0.91l-0.96,-0.13l-0.54,-0.41l-0.77,0.13l-2.65,-2.31l-1.12,-0.6ZM576.82,357.19l-1.38,0.21l-0.52,-0.78l0.33,-0.71l0.51,0.07l0.41,0.98l0.65,0.23ZM560.26,382.27l0.11,-0.65l-1.23,-3.19l0.23,-2.62l1.91,-6.94l1.01,-2.27l2.5,-1.76l0.52,0.49l1.28,-0.04l1.21,-1.15l2.26,0.23l0.93,0.51l2.75,0.49l1.19,1.62l-0.56,4.02l0.68,1.8l0.66,0.84l0.13,1.72l0.65,2.21l-0.39,2.68l-0.44,1.07l-0.71,0.56l-0.35,1.08l-0.91,0.18l-0.45,1.05l-0.76,0.24l-1.47,1.26l-2.69,0.15l-0.82,0.68l-1.27,0.08l-0.77,0.51l-2.57,0.08l-0.66,-0.58l-1.19,-2.69l-0.61,-0.51l-0.18,-1.16ZM571.3,358.81l-0.19,-1.46l0.43,-1.64l0.63,0.35l1.03,-0.0l0.86,2.03l1.45,1.5l-0.81,0.96l0.08,0.44l0.56,0.32l-0.21,0.34l0.32,0.47l-0.51,0.17l-0.44,-0.99l-2.98,-1.7l-0.23,-0.79ZM574.04,604.16l0.73,-2.32l-0.16,-1.61l0.69,-1.52l0.45,2.41l-0.07,1.86l-0.87,0.26l-0.77,0.92ZM570.75,628.39l0.13,-0.06l0.12,-0.02l-0.25,0.08ZM564.25,610.37l-0.85,-0.98l2.24,-4.31l1.24,-1.58l-0.61,1.2l0.3,0.88l-2.31,4.8ZM567.46,604.71l1.4,-1.13l0.64,-4.24l-0.08,-1.98l0.95,0.11l0.62,1.43l1.16,0.56l-0.62,0.83l-0.22,2.21l-0.47,0.0l-0.39,0.59l-1.2,4.58l-1.11,2.0l-1.02,-0.49l1.41,-3.88l-0.43,-0.5l-0.62,-0.09ZM572.72,599.43l-0.23,-0.07l0.17,-0.06l0.06,0.13ZM451.74,52.32l0.69,-2.07l0.87,-1.1l0.71,0.31l1.18,-0.2l0.09,-0.56l-0.42,-0.79l0.2,-0.57l1.49,-0.25l0.44,-0.98l1.27,-0.56l1.13,0.37l0.59,-0.57l1.03,1.9l1.14,0.89l0.97,-2.42l-0.13,-0.8l0.36,0.02l0.47,-0.74l-0.15,-2.05l1.2,-1.41l1.7,-0.66l0.72,-0.65l0.67,0.63l1.12,-0.29l0.59,0.26l0.73,1.43l-0.5,1.08l0.12,0.63l2.5,2.18l0.46,0.04l0.18,-0.43l-0.18,-0.75l-0.41,-0.63l-1.05,-0.65l1.06,-0.68l-0.66,-1.47l1.06,-0.2l1.69,0.29l0.71,0.7l2.7,4.64l0.59,-0.18l0.12,-0.51l-1.58,-3.63l1.35,0.04l0.83,2.15l0.69,0.92l0.49,0.25l0.47,-0.07l0.05,-0.34l0.69,0.11l0.13,-0.43l-1.0,-3.09l-8.1,-3.86l-0.59,-1.77l0.89,-0.61l0.85,0.23l2.74,-0.54l0.65,-1.04l0.68,-0.19l0.14,-0.81l-0.52,-0.77l0.23,-0.71l-0.46,-0.49l0.04,-1.2l-0.21,-0.46l-1.37,-0.5l0.33,-0.48l3.71,-0.62l0.13,0.41l-1.0,0.36l0.04,0.88l1.63,0.69l0.67,1.21l0.65,0.08l0.39,-0.44l1.77,0.48l0.96,1.15l0.51,2.15l1.36,1.64l0.38,1.19l-0.14,0.89l-0.47,0.55l0.41,0.55l4.05,0.0l1.0,0.66l0.49,-0.54l-0.35,-1.06l-0.84,-0.9l-2.02,0.14l-1.84,-3.62l-0.12,-1.14l1.22,0.99l0.75,0.05l1.17,1.49l2.41,1.91l4.1,2.57l0.35,0.62l0.86,-0.19l1.45,0.79l2.48,3.92l1.54,0.16l0.34,-0.63l-2.22,-3.17l-0.22,-0.8l-0.88,-0.55l0.23,-0.64l-0.18,-0.59l-4.63,-1.93l-0.16,-0.54l0.33,-0.73l-0.41,-0.5l-1.54,0.07l-6.03,-5.79l0.48,-3.29l3.63,0.0l0.43,-0.38l-0.14,-0.58l-1.68,-0.41l-1.62,-1.6l-0.39,-1.53l0.72,-0.58l2.38,0.96l2.28,2.63l1.59,-0.26l0.26,-0.49l-0.18,-0.58l-2.24,-3.2l-0.35,-1.25l-1.46,-1.54l-0.34,-1.23l4.14,0.81l0.76,1.61l0.19,1.42l1.43,1.1l0.51,-0.09l0.22,-0.48l-0.81,-1.5l2.82,1.01l2.43,-0.47l0.41,-0.66l-0.27,-0.5l-5.43,-1.64l-0.3,-1.04l0.71,-0.14l0.3,-0.65l-0.29,-0.34l-2.51,-0.68l-0.23,-0.59l0.79,-1.16l2.42,-1.2l1.35,2.63l0.78,-0.03l0.59,-2.17l0.39,0.43l0.27,2.33l0.8,-0.12l1.24,0.61l0.34,-0.45l-0.34,-0.48l0.53,-0.41l-0.43,-1.1l0.49,-0.48l2.57,1.25l0.9,1.59l0.13,0.98l0.81,0.54l1.15,2.21l2.82,2.06l-0.64,1.76l-0.16,2.01l0.28,0.62l0.64,0.14l1.54,-4.56l0.82,-0.53l0.09,-0.91l-3.57,-2.25l-0.47,-1.1l0.86,-0.46l0.21,-0.66l-0.44,-0.52l-1.29,0.2l-1.4,-2.41l-3.04,-2.83l0.09,-0.45l0.51,0.21l3.22,-1.24l0.4,-0.6l2.24,0.0l0.84,0.42l0.87,-0.67l2.99,0.6l2.12,3.85l5.6,4.08l0.5,-0.02l0.35,-1.06l-0.25,-0.5l-2.6,-1.39l-1.16,-1.46l-0.66,-1.55l-0.82,-0.55l0.93,-2.75l0.94,-0.86l0.21,-0.66l-0.31,-0.32l0.66,-0.73l0.33,0.42l0.58,-0.12l0.55,-0.94l1.89,-0.25l-0.21,2.37l1.45,2.23l3.17,1.29l0.44,-0.09l0.08,-0.44l-0.32,-0.67l-2.17,-2.21l-0.72,-0.33l1.07,-2.17l0.76,-0.32l-0.02,-0.64l3.36,-0.89l0.25,0.77l-0.16,0.79l1.08,0.42l-0.26,1.14l0.82,0.44l1.53,-1.47l0.36,1.0l0.44,0.19l1.01,-0.24l0.54,-0.91l0.9,-0.0l0.12,1.19l0.42,0.61l0.63,-0.02l0.36,-0.73l1.05,-0.69l1.62,0.66l0.58,-0.43l0.83,0.39l0.41,-0.76l0.99,-0.16l0.25,0.88l-1.1,2.19l-0.01,0.58l-0.88,0.78l-0.27,0.81l-3.71,3.57l-0.63,1.19l0.04,0.97l0.69,0.28l4.24,-1.92l1.08,-2.01l0.53,-0.42l0.63,0.14l0.48,-0.34l-0.23,-1.32l2.08,-3.05l0.9,-0.26l0.01,0.92l0.38,0.63l0.51,0.26l1.13,-0.08l0.28,-0.66l-0.86,-0.58l0.4,-1.87l-0.55,-0.45l0.07,-0.42l0.32,-0.16l-0.04,0.76l0.89,0.38l0.38,1.03l1.55,1.42l0.62,-0.25l-0.07,-0.8l0.49,-1.52l2.18,-0.33l0.41,1.66l-1.15,1.1l-0.11,0.47l1.02,0.15l0.62,0.95l1.31,0.44l-0.36,0.73l0.51,0.63l1.45,0.06l0.29,3.25l-0.55,0.42l-0.1,0.83l0.64,0.3l1.14,-0.84l0.21,-1.24l0.48,0.03l0.3,-0.55l-0.29,-0.57l0.83,-0.34l0.18,0.89l0.7,0.19l0.38,-0.7l2.02,-0.25l1.13,0.69l1.62,2.11l0.87,2.8l-0.16,1.77l-2.15,2.42l0.02,0.55l0.73,0.42l-0.64,2.61l-0.85,0.33l0.11,1.15l-3.8,6.68l-1.76,-0.44l-0.22,0.57l1.28,1.46l-0.55,1.01l-1.28,0.23l-0.76,-0.54l-0.72,0.36l-1.27,-0.01l-0.3,0.67l0.18,0.31l-2.31,1.76l0.2,0.86l1.88,-0.26l-0.64,0.83l-0.79,-0.44l-0.64,1.01l-5.84,2.51l-1.85,1.28l-5.33,-3.26l-0.5,0.06l-0.04,0.5l0.48,0.66l4.34,2.87l-1.55,0.25l-0.34,0.49l0.3,0.49l1.32,0.48l5.23,-2.85l2.62,0.55l-4.8,5.09l-1.88,2.75l-1.32,1.21l-1.66,-0.02l-0.39,0.31l-0.02,0.82l0.35,0.28l-0.42,0.58l-1.26,0.96l-1.26,0.35l0.08,0.9l0.72,0.36l1.09,-0.38l-0.72,1.2l0.2,0.69l0.44,-0.06l1.45,-1.28l0.41,-1.48l6.21,-5.33l2.03,-2.24l4.49,-3.81l0.72,-1.07l4.02,-2.71l0.76,1.57l-0.35,2.33l-1.26,2.03l-0.71,2.08l-2.19,1.91l-1.19,3.4l-0.3,2.47l-1.61,3.14l-1.55,0.46l0.34,2.05l-0.77,0.57l-0.36,1.83l-0.98,1.24l-1.43,3.84l-0.67,0.72l0.32,1.06l-0.68,1.93l-0.1,3.45l-0.92,1.26l-2.31,0.46l0.03,-1.44l-0.89,-1.49l-2.64,-2.17l-0.38,-0.08l-0.38,0.36l0.14,0.81l1.88,1.85l0.82,1.29l-0.16,0.8l0.3,1.23l2.67,1.65l-0.45,1.72l-2.6,0.08l-1.58,0.99l-1.44,2.04l-0.7,0.21l-1.47,-1.63l-0.86,-0.0l-0.83,-0.69l-0.85,0.3l0.07,0.86l2.62,1.9l-0.48,0.51l-1.19,0.12l-0.35,0.47l0.77,1.03l0.96,-0.01l3.07,-1.02l2.02,-1.9l1.19,-0.7l0.66,0.72l0.23,0.78l-0.54,0.66l-0.02,1.17l-2.68,1.86l-0.36,1.03l0.33,1.04l0.6,0.04l0.84,-0.84l0.83,0.22l-0.4,2.42l-1.3,1.67l-2.93,2.44l-0.9,-0.33l-0.94,0.36l-1.35,-0.56l-0.77,-1.75l0.47,-0.44l-0.2,-0.64l-2.66,-0.1l-1.42,0.59l0.2,-0.41l-0.47,-0.57l-2.3,-0.44l-0.42,0.2l-0.3,0.53l-2.21,1.01l0.32,1.26l0.78,0.8l1.63,-0.58l3.73,0.62l0.69,-0.13l0.33,0.96l1.12,1.3l0.21,1.43l0.41,0.69l-0.5,1.48l-1.61,0.49l-0.93,-1.22l-0.33,-0.19l-0.59,0.3l0.45,2.43l-0.12,0.34l-0.89,0.37l-0.66,-0.18l-1.24,0.25l-1.1,-0.74l-0.31,-0.62l-0.62,0.0l-0.44,1.08l1.15,1.79l-0.21,0.79l-2.15,-0.19l-0.9,-0.82l-0.44,0.2l-0.53,-0.65l-0.64,0.63l-1.33,-1.41l-4.05,-0.14l-0.46,-0.58l-0.51,0.03l-0.28,1.22l0.64,0.86l-0.3,0.42l-0.86,-0.02l-0.22,0.67l1.3,2.66l-3.18,-0.69l-0.6,0.26l-0.39,0.65l0.22,0.47l1.21,0.71l1.1,-0.14l1.12,0.66l-0.49,0.59l0.08,0.44l0.44,0.09l3.25,-1.28l1.45,0.26l1.49,-0.62l1.32,0.83l4.41,-0.55l1.2,-0.53l1.11,0.11l-1.26,0.66l-0.1,0.75l0.31,0.47l0.67,0.07l0.02,0.42l0.59,0.44l0.77,1.4l-1.46,0.01l-1.23,0.59l-2.09,-0.73l-1.12,-0.06l-0.58,-0.48l-0.38,-1.44l-1.52,-0.97l-4.31,1.01l-1.15,-0.07l-4.77,0.77l-0.62,0.97l0.35,0.65l0.46,0.1l0.7,-0.57l6.41,-0.13l2.72,0.21l0.19,0.48l-2.7,0.07l-2.24,0.88l-1.48,1.32l-0.61,-0.12l-0.72,-0.81l-1.56,-0.2l-4.06,0.92l-0.19,0.66l0.5,0.31l4.62,-0.44l0.75,0.49l-0.94,1.6l-1.1,4.15l-0.03,0.51l0.54,0.79l0.8,-0.47l0.39,-2.12l1.23,-2.94l4.43,-2.33l4.73,0.72l-0.13,0.73l-2.01,0.85l-0.9,1.13l-0.08,0.88l0.29,0.32l0.63,-0.12l0.61,-0.84l1.87,-0.31l0.54,-0.49l2.04,-0.04l1.87,0.43l0.48,0.77l-0.26,0.33l0.16,0.57l0.54,0.13l-0.16,0.7l0.43,0.62l-0.38,0.68l0.23,1.43l1.14,0.67l-0.57,0.26l-0.76,1.35l-0.89,0.07l-0.87,0.75l-5.59,0.06l-1.11,0.86l0.08,0.94l2.26,-0.43l0.52,0.16l0.48,0.94l5.31,1.54l0.39,0.75l-0.13,0.36l-1.23,0.14l-0.8,2.86l-2.93,-0.69l-0.95,0.47l-1.44,-0.34l-1.6,1.33l0.25,1.1l1.78,0.65l1.58,0.05l0.82,0.41l2.64,-0.49l0.16,0.51l-0.99,2.88l-1.15,-0.73l-0.79,-0.01l-1.1,0.94l-0.29,1.21l-0.88,0.38l-0.63,0.78l-0.6,-0.06l-0.88,-0.8l-3.65,0.65l-1.84,-1.19l-0.57,0.14l-0.24,0.43l-0.02,0.42l0.34,0.23l-0.73,0.72l-0.18,1.02l0.75,1.01l0.95,0.24l1.04,0.92l0.27,1.05l-0.42,0.63l0.39,0.9l-0.39,0.57l0.16,0.44l1.02,0.12l0.38,0.87l0.56,0.18l-1.13,1.17l0.25,1.39l-0.2,0.81l-1.26,1.22l0.24,1.16l-1.23,0.63l-0.77,1.11l0.11,-1.32l-0.64,-0.26l-0.6,0.36l-1.19,2.16l-2.82,-0.37l-1.05,0.38l-0.61,0.81l-2.98,-0.37l-1.27,-0.5l-1.63,-1.58l-1.3,-0.54l-0.68,-1.26l-1.01,-0.6l-0.31,-1.56l-1.32,-1.07l-0.43,-1.42l-0.29,-0.22l-0.64,0.24l0.24,2.06l0.71,0.66l0.76,1.53l-0.06,2.42l1.63,1.42l1.5,-0.02l0.09,0.52l-3.2,1.07l-1.6,-0.46l-0.46,0.18l-0.12,0.9l1.53,0.94l0.27,1.65l0.43,0.54l1.08,-0.09l3.07,-3.13l5.01,1.29l-1.18,2.84l0.37,0.61l0.48,0.01l1.7,-3.12l1.38,-1.38l1.27,-0.05l1.22,0.52l0.91,0.89l0.32,1.24l-1.49,3.21l-0.19,0.79l0.27,0.89l1.89,-0.04l0.82,-0.37l-0.27,1.92l0.35,0.4l1.41,0.19l0.44,-0.3l-0.08,-1.12l0.68,-0.6l0.01,-1.33l0.73,-0.62l-0.09,-0.72l1.05,-0.56l1.16,1.38l0.04,0.8l0.39,0.52l-0.13,0.77l0.99,0.85l-0.07,2.9l0.31,0.97l-0.24,0.38l-1.04,0.33l-0.69,1.97l0.33,0.71l-0.92,0.7l-0.21,0.86l-0.61,-0.43l0.05,-1.71l-0.45,-0.35l-1.51,0.15l-0.69,3.59l-1.14,0.94l-0.29,2.39l-0.75,-0.32l-0.7,0.12l-2.66,2.3l-0.96,-0.18l-1.13,1.23l-0.98,0.15l-0.3,0.82l-1.1,-0.08l-0.18,-0.54l-0.48,-0.19l1.24,-4.05l-0.16,-1.17l-1.33,-1.41l-1.21,-0.5l-0.2,-1.19l-0.72,-0.08l-0.51,1.42l-0.87,0.76l-2.11,-0.3l-0.59,-0.37l0.35,-1.3l-0.28,-0.78l0.99,-1.03l0.15,-1.15l-0.47,-0.25l-2.08,1.67l-0.32,-0.04l-1.84,-3.27l-0.95,-0.99l-0.75,0.15l0.03,0.65l1.23,1.88l0.4,1.57l0.88,1.07l1.52,0.9l-0.52,1.16l0.66,1.67l-0.1,0.44l-0.44,0.49l-2.56,0.43l-1.64,-1.42l0.12,-0.88l-0.45,-2.08l-1.7,-2.06l-0.03,-2.0l-0.59,-0.34l-0.9,1.19l-0.1,0.63l1.8,3.15l0.5,1.84l-0.26,0.84l0.29,0.94l-2.22,-0.38l-0.42,-0.91l-0.57,-0.29l-1.04,-1.39l-0.45,-2.01l-1.12,-0.83l-0.73,0.15l-0.19,0.33l0.17,0.66l0.59,0.48l-0.19,1.8l0.47,1.2l-0.07,0.66l-1.88,0.31l-0.76,-0.7l-0.82,-2.14l-0.74,-0.65l-0.59,0.24l-0.18,1.75l0.76,2.51l3.36,2.1l-4.05,0.78l-0.17,-0.53l-0.43,-0.17l-0.86,0.21l-1.64,-0.98l-3.61,-0.7l-0.25,-1.66l0.81,-0.57l0.3,-0.93l-0.3,-0.71l-1.67,-1.83l-0.79,-0.43l-0.46,0.74l1.83,2.29l-1.82,1.26l-0.29,2.61l-1.72,-0.52l0.05,-1.03l-0.5,-0.56l-1.19,-0.11l0.11,-1.0l-0.59,-0.78l0.12,-1.27l-0.75,-0.92l-0.57,0.19l-0.14,0.44l-0.02,1.75l0.58,0.84l-0.25,1.32l0.65,0.8l-0.75,1.5l-1.01,-1.89l-0.62,0.25l-0.18,0.98l-2.32,-0.55l0.33,-0.54l-0.25,-0.93l0.28,-1.21l-0.99,-2.63l0.2,-0.93l-0.41,-1.49l0.36,-1.33l-0.23,-1.36l-0.79,0.13l-0.92,2.26l-0.1,0.53l0.67,2.07l-0.79,0.78l-0.49,2.29l0.22,1.08l-0.57,0.84l-0.11,-0.66l-0.58,-0.23l-0.42,0.57l-1.18,-1.48l0.11,-1.05l-0.38,-0.97l-0.57,-0.07l-0.37,0.33l0.17,-1.09l1.01,-1.13l-0.1,-1.25l0.32,-0.56l-0.45,-0.66l-0.35,-2.19l2.79,-2.17l0.25,-0.78l1.25,-0.68l1.04,-1.49l0.61,-0.15l0.32,-0.85l-0.2,-0.17l0.75,-0.3l0.28,0.5l0.43,0.05l1.28,-0.65l0.92,0.02l0.48,0.85l1.2,-0.21l0.63,-0.4l-0.14,-0.62l-0.41,-0.19l0.25,-0.54l1.25,-0.33l0.81,1.11l0.73,0.3l0.53,-0.34l-0.18,-0.78l0.93,-0.14l0.2,-0.7l-0.84,-0.43l-0.64,0.28l-1.51,-0.68l1.15,-0.62l0.08,-0.67l-0.57,-0.43l-1.12,-0.06l0.7,-0.83l0.75,0.04l0.55,-0.36l0.01,-0.73l-1.82,-0.26l-1.32,0.87l-1.48,-0.35l-0.47,-1.74l0.7,-1.17l-0.37,-1.65l-0.66,-0.37l-0.04,-0.64l-2.09,-1.62l0.29,-1.71l-0.14,-1.8l0.3,-0.38l4.54,-2.14l1.61,0.28l0.92,0.79l1.21,0.46l1.2,0.95l1.33,1.91l1.61,5.77l-0.33,1.08l0.42,0.53l1.03,-0.76l0.8,1.14l2.38,0.43l1.44,1.48l1.65,0.4l0.48,-0.5l-0.84,-2.1l1.03,0.34l1.46,-0.41l3.23,1.12l0.52,-0.45l-0.4,-1.35l-1.63,-0.75l-0.14,-0.42l0.98,-0.16l1.27,-1.23l1.88,-4.33l1.83,-6.33l0.09,-1.34l-0.47,-1.28l0.71,-0.25l0.53,-1.09l-0.41,-0.77l-0.98,0.14l-0.92,0.61l-0.61,1.05l-0.12,1.19l0.37,1.62l-0.9,1.02l-0.23,1.38l-0.6,1.09l-0.27,1.99l-0.61,1.04l-0.37,1.56l-1.97,2.55l-2.33,-0.54l-2.31,0.4l-0.26,-0.33l-0.08,-0.66l1.0,-1.0l0.92,-1.92l0.14,-1.11l-0.61,-0.9l-0.49,0.09l-0.15,1.91l-1.62,1.74l-1.72,-1.12l0.15,-0.94l-0.35,-0.58l0.6,-0.59l0.05,-0.81l0.62,-0.08l0.44,-0.46l1.34,-2.16l1.84,0.19l0.09,-0.86l-1.56,-0.74l-3.62,0.66l-0.97,0.87l-0.23,-0.84l-0.7,-0.2l2.79,-2.91l0.61,0.43l1.16,0.11l1.01,-1.06l0.9,0.03l0.58,-0.48l-0.36,-0.64l-1.58,0.15l-1.19,0.65l-1.0,-0.8l0.37,-1.3l0.65,-0.03l0.95,-0.82l2.33,0.9l1.11,-0.92l-0.44,-0.55l-0.9,0.06l-1.19,-0.63l-1.72,-0.03l-0.72,0.5l0.57,-2.56l0.98,-0.44l0.28,-0.54l-0.23,-0.79l-0.52,-0.12l-0.5,0.68l-0.25,-0.33l0.2,-3.37l0.68,-2.02l-0.18,-0.67l-0.66,0.0l-0.89,2.18l-0.59,2.68l0.15,1.9l-0.32,1.44l-1.81,4.32l-3.63,1.45l0.11,-1.87l0.67,-0.4l0.83,-1.75l0.41,-2.83l-0.04,-1.03l-0.37,-0.4l-0.67,0.41l-0.04,0.9l-0.73,1.09l-0.08,1.26l-0.67,1.11l-1.08,-0.3l-0.42,0.23l-1.1,2.26l-3.45,-0.05l0.31,-0.81l1.65,-0.52l0.28,-0.39l-1.13,-0.98l-1.15,0.28l-0.09,-5.02l1.57,-2.69l1.32,-0.03l0.39,-0.42l-0.33,-1.08l-1.04,0.08l0.62,-1.47l0.17,-1.64l1.42,-2.27l0.48,0.12l2.35,-0.99l1.53,-0.01l2.37,-2.21l0.85,-0.16l1.72,1.18l4.75,0.51l0.97,1.03l1.21,0.5l0.89,1.13l1.99,0.73l1.18,2.03l1.53,1.04l0.79,-0.62l0.15,-0.65l-1.92,-2.43l0.37,-0.4l1.19,-0.01l0.16,-0.57l-0.27,-0.62l-0.92,-0.38l-1.93,0.76l-1.58,-1.52l-0.61,-0.09l-0.1,-0.39l0.91,-0.22l2.98,0.45l1.97,-1.17l0.79,-0.05l0.09,0.45l0.67,0.02l0.5,-1.52l-0.55,-0.91l0.17,-1.61l0.84,-1.58l-0.1,-0.59l-0.67,-0.51l-1.85,1.66l-0.92,2.69l-1.66,0.83l-2.17,-1.17l-3.6,0.4l-1.43,-0.61l-1.58,0.21l-1.1,-1.32l-1.26,-0.6l-0.08,-0.74l1.05,-1.47l1.34,0.33l1.16,2.03l2.71,0.4l0.56,-0.33l0.25,-0.68l-0.33,-0.64l-0.61,0.03l-0.26,0.34l-0.56,-0.39l-0.26,-0.71l-1.22,-0.78l-0.23,-0.41l0.4,-1.06l-0.47,-1.01l-0.67,0.16l-0.43,0.84l-0.35,-0.07l-1.21,-5.65l-2.04,-1.92l-0.91,-2.61l-0.03,-0.89l-1.66,-1.68l-1.51,-0.72l-1.23,0.27l-2.7,-1.32l-0.09,-1.12l0.47,-0.6l-0.48,-1.66l0.37,-1.78l1.97,0.75l1.45,0.08l1.1,0.9l0.6,-0.29l0.24,-0.72l-1.65,-1.5l-4.23,-0.93l-0.35,-0.46l-0.61,-2.66l0.47,-4.47l2.35,-0.75l2.91,1.75l3.14,-0.45l2.65,0.1l1.03,0.35l3.45,4.54l4.84,5.13l1.18,2.97l0.03,0.75l0.56,0.75l0.96,0.24l0.19,1.07l-0.32,0.05l-0.22,0.65l0.89,0.78l0.73,-0.24l0.62,-1.11l3.9,1.55l0.52,-0.5l-0.27,-0.54l2.17,-1.37l0.92,-0.09l0.79,-1.85l-0.48,-0.53l-3.05,0.8l-0.37,0.49l-1.68,0.64l-2.12,-1.46l-0.81,0.08l0.02,-0.58l-0.53,-0.6l0.04,-1.36l-0.62,-2.0l0.96,-0.54l0.09,-0.76l-0.49,-0.5l-2.52,-0.73l-0.85,-0.65l-4.01,-5.71l-0.43,-1.05l-0.86,-0.81l5.09,-2.31l1.74,-0.36l5.59,-2.27l0.43,-0.66l-0.13,-0.55l0.89,-0.45l2.37,-0.55l0.44,-0.45l1.58,-0.11l1.62,-0.76l2.99,-0.42l0.23,-1.01l-0.41,-0.5l-3.52,-0.08l-4.6,0.68l1.16,-0.88l0.71,-1.03l1.4,-0.6l0.84,-0.99l1.04,-0.52l0.29,-0.62l0.83,-0.21l0.63,-0.71l2.75,-1.12l4.08,-0.95l0.42,-0.47l-0.0,-1.14l-0.91,-0.71l-1.88,0.69l-1.65,-0.24l-2.68,0.32l-0.66,0.63l-2.82,1.14l-0.11,-0.19l0.15,-1.32l-0.46,-1.97l1.55,-3.08l0.19,-1.3l-0.32,-0.5l1.14,-0.81l0.99,-2.7l0.8,-1.14l0.91,-0.61l0.61,-1.09l0.66,-0.3l1.11,-1.9l-0.06,-0.53l-0.48,-0.43l-0.63,0.05l-5.09,5.04l-1.84,3.71l0.04,2.02l-0.39,0.13l-2.57,-2.19l-0.49,-0.02l-0.14,0.47l0.33,0.8l1.88,2.04l-0.64,0.51l-0.25,1.54l0.06,0.71l0.78,0.53l-0.04,0.27l-0.2,0.65l-0.64,0.52l-0.02,1.11l-0.5,1.46l-1.21,0.92l-0.55,1.08l-1.23,0.78l-2.11,2.37l-1.33,1.04l-1.55,0.35l-3.58,2.05l-2.23,0.67l-0.65,-0.11l0.06,-2.17l0.77,-0.31l0.27,-0.76l2.99,-1.51l0.87,-1.09l0.66,-1.95l-0.54,-0.45l-1.04,-0.18l-2.27,2.07l-0.25,0.82l-2.99,1.38l-0.58,-0.01l-0.11,-0.89l0.76,-0.46l0.95,-1.9l-0.9,-0.83l-0.52,0.12l-1.54,2.61l-0.89,-0.11l0.15,1.78l0.62,2.07l-0.34,2.24l-2.15,0.9l-1.2,-0.45l-1.25,0.08l-0.92,0.72l-2.09,-0.77l-0.76,0.11l1.15,-1.99l-0.12,-0.47l-0.48,-0.02l-0.98,0.69l-1.13,1.77l-2.57,-1.54l0.71,-2.8l3.06,-6.53l0.63,-0.86l1.13,-0.52l0.72,-0.77l4.09,-1.21l0.43,-0.47l5.84,-2.19l1.42,-0.97l0.37,-0.58l-0.12,-0.6l-0.48,-0.14l-7.58,3.06l-4.34,1.05l-0.43,0.42l-0.62,-0.07l-1.71,0.85l-1.49,1.33l-1.05,1.9l-1.09,2.68l-1.81,2.83l-0.77,2.67l-1.52,-0.28l-0.8,-0.73l-1.03,-0.23l-2.28,-2.31l-1.42,-0.85l-1.98,-2.17l-0.26,-0.87l0.64,-0.61l0.91,-0.11l0.88,-0.71l1.83,-0.49l2.43,-0.05l1.09,0.46l2.12,-0.29l0.58,-0.47l1.5,-0.1l1.16,-0.81l0.66,-1.08l1.94,-0.42l-0.13,-1.51l2.72,-2.98l1.56,-0.98l0.47,-0.95l-0.22,-0.57l-1.33,-0.38l-1.3,0.38l-2.72,1.87l-1.35,1.52l-0.41,1.09l-0.82,0.68l-1.81,0.49l-1.83,1.16l-2.07,-0.21l-8.45,1.96l-1.29,-1.35l-0.66,-2.33l0.14,-0.8l1.09,-1.27l0.58,-0.03l0.69,0.86l0.67,0.17l2.71,-1.17l0.19,-0.56l-0.72,-0.69l-1.46,0.36l-2.15,-1.84l1.2,-0.55l0.75,-1.22l0.98,-0.29l0.81,-1.29l0.85,0.04l-0.24,-1.23l3.25,-0.87l0.58,0.55l1.55,-0.19l0.94,0.76l0.75,-0.39l-0.28,-0.99l-3.36,-1.64l-0.6,0.23l-0.4,-0.66l-0.6,-0.13l-1.12,1.08l-1.62,0.45l-2.23,1.52l-3.74,3.32l0.07,-0.73l-1.39,-1.38l2.95,-2.81l0.64,-0.09l0.27,-0.74l1.23,-0.42l0.23,-0.89l-0.39,-0.5l-1.5,0.07l-0.97,-1.81l-0.7,-0.3l-0.36,0.31l-0.09,0.95l-0.78,-0.45l-0.56,0.06l-0.44,1.08l-0.91,0.69l0.02,1.51l-1.09,0.35l-0.29,-1.24l-1.85,-0.94l0.27,-0.49ZM467.33,187.3l-0.02,0.69l0.08,0.54l-0.23,-0.5l0.17,-0.74ZM511.49,194.25l-0.08,0.23l-0.06,0.04l0.07,-0.21l0.07,-0.07ZM521.85,108.29l4.22,-0.05l-0.03,0.87l0.41,0.88l1.07,0.74l-3.95,0.26l-0.99,-1.01l-0.38,-1.53l-0.36,-0.16ZM462.51,44.67l-0.48,-0.1l0.11,-0.42l0.37,0.52ZM480.09,42.55l-0.16,-0.42l0.09,0.02l0.07,0.4ZM553.84,2.1l0.09,-0.04l0.0,0.03l-0.09,0.01ZM486.09,154.14l-1.65,1.09l-0.22,-0.13l0.52,-1.19l1.39,0.02l-0.04,0.21ZM569.87,660.89l-0.05,-0.21l0.07,-0.55l0.68,0.7l-0.69,0.06ZM569.08,481.26l0.24,0.11l-0.12,0.21l-0.05,-0.02l-0.08,-0.31ZM566.15,517.71l0.13,-0.53l1.96,-0.83l-0.06,0.3l-2.04,1.06ZM560.64,465.59l0.03,-1.29l0.44,0.78l0.6,0.12l1.39,-0.87l0.93,0.26l0.4,-0.27l1.43,-0.03l0.32,0.76l1.55,0.15l0.21,0.92l1.3,1.46l-0.31,1.54l-1.35,1.44l-1.17,0.57l-5.6,-4.82l-0.17,-0.72ZM567.82,657.04l0.59,-0.24l0.46,0.97l-0.38,0.0l-0.67,-0.73ZM567.16,481.62l0.8,-0.2l0.12,0.15l-0.37,0.09l-0.54,-0.03ZM563.99,454.06l0.28,-0.52l2.0,-0.55l-0.62,1.38l-1.66,-0.31ZM561.83,604.34l0.36,-1.75l1.39,-0.34l0.4,-0.87l1.27,-0.11l-2.77,2.78l-0.66,0.28ZM562.7,590.99l0.29,-0.1l0.15,0.19l-0.33,-0.12l-0.11,0.03ZM561.98,579.11l0.03,-0.21l0.16,-0.38l0.23,0.82l-0.42,-0.23ZM562.3,593.73l-0.14,-1.09l0.27,-0.29l0.22,0.48l-0.34,0.91ZM546.88,664.64l1.55,-2.5l0.88,0.0l1.25,-0.62l2.53,-0.61l3.06,0.13l4.08,4.11l1.48,3.29l-0.27,0.47l-0.49,-0.29l-2.64,-0.26l-2.99,-1.37l-2.11,-0.14l-5.37,-1.55l-0.96,-0.65ZM555.56,342.89l0.84,0.24l1.8,-0.44l0.34,1.06l-1.68,2.76l0.27,1.37l-1.29,0.66l-0.59,-0.32l-0.89,-1.38l-0.39,-3.32l0.49,-0.73l0.64,-0.27l0.47,0.38ZM551.05,487.28l1.41,0.39l0.98,-0.93l0.84,0.47l0.29,0.72l1.57,1.7l0.16,1.7l-0.27,2.48l-0.46,0.4l-1.52,6.75l-1.08,1.59l-1.24,-1.95l-1.17,-1.08l-1.25,-0.58l-0.94,-2.41l0.21,-4.01l1.63,-3.39l0.33,-1.37l0.54,-0.47ZM554.2,536.67l0.54,-0.67l0.8,0.1l-0.82,1.01l-0.52,-0.44ZM553.29,539.35l0.02,-0.17l0.05,0.01l0.01,0.12l-0.07,0.05ZM518.48,254.45l0.35,-1.71l-0.33,-1.57l1.93,-0.65l2.02,1.4l0.68,-0.02l0.3,-0.5l2.2,0.64l1.61,0.91l3.05,-0.36l0.81,-0.81l0.5,0.18l3.87,-0.8l1.86,1.09l2.86,0.73l0.78,0.87l0.71,0.07l0.33,0.39l0.94,1.57l0.34,1.25l0.99,0.64l1.02,-0.04l0.14,0.78l1.1,1.16l-0.17,0.91l0.28,0.48l1.0,0.89l1.32,0.27l-0.19,0.55l0.09,0.86l0.4,0.53l-0.16,0.98l0.84,0.64l0.74,-0.07l0.16,1.42l-1.02,0.76l-6.43,0.08l-0.92,-0.51l-5.12,0.35l-2.97,1.43l-3.27,2.62l-1.23,0.4l-1.03,-0.23l-2.95,-1.96l-1.55,-3.7l0.17,-1.66l-0.46,-0.82l0.3,-1.05l-0.47,-0.9l-0.74,-0.47l-0.91,0.24l-2.6,-0.56l-0.48,-0.67l-0.23,-3.22l0.77,-0.0l0.12,-0.63l-1.13,-1.22l-0.26,-0.96ZM542.49,343.15l1.11,-1.78l0.59,-1.7l1.13,-0.13l0.28,-0.54l0.91,-0.09l0.19,-0.59l-0.34,-0.9l0.25,-0.24l0.81,0.38l0.67,1.17l-0.8,1.23l-1.28,0.61l-1.46,1.61l-1.05,-0.25l-1.03,1.24ZM539.92,355.26l1.02,-3.29l1.77,-0.72l0.71,-1.13l-0.07,-1.13l0.47,-1.08l0.9,-0.14l0.14,-0.57l-0.89,-1.04l1.48,-1.21l0.9,-0.01l0.67,1.28l-0.6,1.55l-0.94,0.07l0.01,1.35l-0.55,0.73l0.12,0.8l-0.94,1.77l0.0,1.01l-0.47,0.5l-0.2,0.85l-2.02,0.99l-0.53,0.83l-0.81,-0.38l-0.16,-1.02ZM544.47,363.7l0.59,-0.78l0.44,-0.07l0.03,0.55l0.56,0.11l-0.77,0.79l-0.86,-0.6ZM546.32,361.77l-0.26,-0.61l-1.1,-0.61l2.08,0.52l-0.0,0.9l-0.72,-0.19ZM543.1,367.65l1.19,-0.44l0.95,0.97l-0.24,0.84l-0.95,1.27l-0.69,-0.65l-0.26,-1.98ZM491.6,444.1l0.6,-0.54l-0.26,-1.28l0.32,-1.1l-0.63,-1.23l0.66,-2.2l-0.44,-3.51l0.51,-1.23l-0.42,-0.97l0.42,-3.32l0.43,-0.97l-0.05,-1.17l0.6,-1.86l2.47,-2.98l0.48,-0.2l-0.15,1.45l0.49,1.08l0.82,-0.21l0.33,-0.69l1.19,0.7l-0.03,1.27l1.17,1.97l-0.29,0.44l-1.52,0.56l-0.23,0.9l0.81,0.97l1.34,0.7l0.53,0.65l-0.03,1.26l1.03,2.84l0.96,0.12l0.61,-0.39l0.52,-1.62l-0.04,-1.12l1.02,-2.43l0.72,0.33l-0.01,0.75l0.77,0.69l1.56,0.67l-0.42,1.38l1.36,1.37l1.5,0.21l0.63,0.62l0.85,-0.28l2.96,0.46l0.59,1.9l1.5,1.86l2.76,1.13l0.93,1.41l0.67,0.45l0.85,-0.02l0.66,0.61l1.7,-0.47l1.37,1.36l0.75,-0.07l2.34,2.78l0.66,0.36l0.28,3.89l1.81,2.28l-0.08,0.86l-2.81,1.51l-0.34,1.27l0.33,0.67l2.02,-0.2l1.22,-0.66l1.25,-0.19l0.59,-0.32l0.19,-0.61l0.65,-0.12l3.48,1.37l0.51,-0.57l-0.64,-1.28l0.26,-0.65l1.47,1.65l1.47,0.59l0.11,1.01l-1.42,-0.11l0.39,1.02l2.73,0.65l0.87,0.66l0.71,-0.04l0.09,0.37l-2.32,0.89l-0.92,1.85l-1.96,2.17l-0.72,0.34l-0.37,1.42l-0.79,-0.13l-3.55,-1.9l-1.25,0.09l-1.1,-1.13l-1.27,0.12l-1.57,-0.9l-1.68,0.2l-0.83,0.61l-0.91,-0.33l-0.6,-1.02l0.16,-0.59l1.17,-0.74l0.21,-0.8l-0.27,-1.3l-1.9,-1.28l-2.92,-0.04l-1.67,0.69l-0.24,-0.42l1.14,-2.21l0.1,-0.8l-0.5,-0.96l-0.43,-0.25l-0.73,0.12l-0.66,0.48l-0.31,0.78l-0.84,-0.15l-0.73,0.53l-0.52,-0.15l-0.94,0.53l-1.17,2.31l0.77,1.5l-0.29,1.2l0.41,0.83l-0.05,0.66l-0.67,-0.06l-0.56,0.37l-1.21,1.67l-0.65,0.42l-0.51,1.12l-0.85,-0.31l-0.98,0.2l-1.1,1.81l-0.45,3.06l-0.81,1.47l-0.8,0.38l-3.37,2.9l-1.45,0.7l-1.78,0.02l-0.58,-0.67l-0.59,-1.83l-0.22,-3.12l0.33,-1.21l-0.24,-1.47l0.26,-1.16l-0.27,-1.02l-0.84,-0.56l-0.08,-1.26l-0.32,-0.37l-0.44,0.22l-0.66,1.2l-1.18,0.2l-2.19,1.03l-2.41,-0.32l-1.34,0.23l-1.91,2.06l-1.94,0.07l-0.64,-0.91l0.24,-1.85l2.24,-3.9l3.46,-1.99l1.07,-0.94l1.19,-0.37l0.38,-0.61l-0.1,-1.44l-0.99,-1.14l0.06,-0.61l-0.61,-0.96l-0.15,-1.17l0.24,-0.73l-0.5,-0.71l0.07,-2.05l-0.31,-0.97l1.24,-4.08ZM537.12,125.64l0.14,-0.6l1.15,0.28l0.61,0.75l-0.27,0.43l-1.64,-0.85ZM528.13,339.23l0.71,0.43l0.53,-0.06l0.11,0.47l-1.79,0.18l0.44,-1.02ZM530.47,340.7l0.27,-1.09l-0.86,-1.08l0.03,-0.55l0.81,0.3l0.63,-0.45l0.4,0.44l-0.08,0.88l0.61,0.2l0.41,-0.54l0.84,0.27l1.61,-0.81l0.44,-1.19l1.15,0.08l0.29,0.86l0.7,0.66l-1.6,1.72l-1.98,0.49l-0.78,-0.68l-0.76,0.12l-0.17,0.63l1.17,2.24l-1.35,-0.46l-0.17,-1.79l-0.78,0.0l-0.15,0.27l-0.66,-0.53ZM532.8,452.93l0.06,-0.06l0.37,-0.01l-0.25,0.1l-0.18,-0.03ZM516.63,485.78l0.87,-1.45l0.09,-2.41l0.75,-1.27l0.74,-0.59l0.54,0.17l0.88,1.11l0.77,0.19l3.24,-2.28l2.59,0.08l1.19,-1.35l3.08,0.71l-0.52,1.61l0.24,2.58l-1.45,1.72l-1.8,1.19l-0.63,1.91l-1.56,1.53l-1.03,1.81l-2.6,2.52l-0.26,0.11l-0.58,-0.84l-1.09,-0.43l-1.39,0.44l-1.96,1.8l-0.27,-2.41l-1.84,-2.06l-0.26,-0.92l1.85,-2.17l0.41,-1.27ZM224.65,339.19l10.41,-29.67l1.43,2.96l1.64,2.0l1.52,0.57l0.36,0.5l3.12,1.81l3.61,2.71l0.69,2.27l2.5,3.21l4.41,3.07l1.14,1.59l2.02,0.19l0.43,0.79l2.55,1.27l0.89,-0.13l0.67,1.23l1.73,1.08l0.62,-0.07l0.17,-0.63l-0.85,-1.03l0.21,-0.64l-1.13,-1.74l0.59,0.14l1.77,1.79l0.95,0.0l0.47,-0.5l1.0,0.18l2.14,2.28l0.61,1.1l0.35,0.19l0.53,-0.22l0.79,1.3l0.41,1.51l1.35,1.18l0.3,2.21l1.24,1.35l-0.05,0.74l0.46,0.89l-0.07,0.62l-0.6,0.52l0.03,0.54l0.26,0.49l0.71,0.24l-1.13,1.23l-0.01,1.08l-1.03,-0.63l-0.84,0.22l-0.68,-0.89l-1.55,-0.09l-2.39,-1.42l-0.42,0.7l0.81,1.53l-0.59,0.64l-2.27,-1.38l-0.61,0.37l0.19,0.98l-1.03,1.69l0.38,0.97l-2.87,0.38l-0.52,0.95l0.32,0.62l1.43,0.7l1.04,1.98l1.06,0.54l1.96,0.14l0.6,0.93l0.85,0.09l1.0,1.43l1.4,0.13l2.17,1.57l4.2,0.81l1.85,1.27l1.7,0.16l3.18,0.9l0.95,-0.24l0.25,-0.72l0.94,0.49l1.06,-0.09l0.07,1.09l0.81,0.42l0.54,-0.25l0.08,-1.19l2.05,1.3l0.62,-0.31l0.42,0.25l1.94,-1.54l-0.35,0.83l0.24,0.61l0.99,-0.18l0.59,0.43l1.74,-0.54l1.01,-0.94l1.23,-0.17l1.5,-0.92l0.57,0.14l0.31,-0.29l0.65,1.06l0.47,0.09l0.44,-0.66l-0.3,-0.8l0.49,-0.26l0.42,0.71l-0.66,2.38l0.7,0.76l0.69,-0.72l0.52,1.18l-0.55,1.52l0.22,0.56l1.6,1.08l0.63,-0.33l0.33,-0.67l0.76,0.69l0.6,-0.12l1.0,0.42l0.28,0.85l0.0,2.79l-0.84,0.67l-0.12,0.8l0.98,1.49l0.07,1.06l0.49,0.24l0.68,-0.59l1.36,-4.64l0.36,0.04l-0.29,5.31l0.36,0.56l0.58,-0.02l0.67,-1.63l0.27,1.18l1.69,2.4l0.33,2.6l-0.33,0.29l0.04,1.02l-0.6,-0.47l-1.1,-0.12l-0.9,0.77l-1.36,-1.6l-0.54,-1.27l-0.48,-0.27l-0.55,0.44l0.28,2.54l0.33,0.43l0.59,-0.14l0.48,1.31l1.17,0.7l0.19,0.49l-0.23,1.01l-0.74,0.08l-0.16,0.66l1.74,0.69l0.16,3.35l0.73,0.24l0.29,-0.67l0.32,0.86l-0.15,0.65l0.75,2.08l0.66,0.37l0.18,1.47l0.96,2.27l0.74,0.41l0.48,-0.37l0.09,-0.75l-1.28,-2.85l-0.03,-0.89l-0.66,-0.99l-0.31,-2.38l-0.49,-0.66l0.48,-0.61l0.21,-2.19l0.49,0.43l-0.24,0.61l0.34,0.52l1.24,0.59l0.36,-0.6l-0.23,-0.74l0.57,-0.39l0.1,-0.95l0.64,0.96l0.49,1.67l0.49,0.32l0.53,-0.3l-0.3,-1.18l0.18,-0.47l-1.35,-3.35l0.9,-0.19l0.69,-0.85l0.05,-0.56l-1.44,-0.84l-0.69,-1.3l-0.43,-3.54l1.13,-2.31l-0.93,-2.27l-1.45,-2.39l0.26,-1.42l0.68,-1.28l2.24,-0.89l0.39,-1.05l-0.68,-0.64l0.69,-0.93l0.63,-0.21l0.86,0.6l0.74,0.1l1.65,-1.03l0.38,0.48l1.37,0.09l0.35,-0.46l0.93,0.57l0.62,-0.25l0.21,-1.44l0.26,0.42l0.57,-0.05l0.32,-0.89l0.43,1.38l0.69,0.24l0.69,-0.43l0.2,-0.67l-0.81,-1.03l0.71,-1.1l-0.12,-0.76l0.66,0.1l0.79,-0.65l0.8,0.72l1.59,-0.83l1.84,0.07l0.67,-1.61l-0.38,-1.27l1.23,-1.54l-0.22,-0.61l-0.74,-0.11l-0.53,0.38l-0.5,-0.59l-0.62,-0.1l-1.0,0.3l-0.34,0.5l-3.61,0.81l-0.52,0.97l-0.46,0.02l-0.28,0.38l0.2,1.07l0.66,0.53l-0.65,0.65l-0.46,-0.26l-0.34,-1.25l-0.49,-0.21l-0.5,0.58l-1.46,0.06l-1.41,1.66l-0.4,0.01l-0.33,-0.98l-1.25,-0.36l-0.53,-0.78l-1.51,0.09l-0.61,-0.36l-0.61,0.42l-0.6,1.52l0.93,1.49l-0.84,-0.05l-0.45,0.47l-0.33,-0.56l-1.33,-0.27l-1.07,0.49l0.27,-1.24l-0.47,-0.78l0.26,-0.86l-0.41,-0.83l-0.72,0.05l-1.0,0.75l-1.04,-0.05l0.58,-0.56l0.09,-0.69l1.44,-0.98l2.1,-3.01l0.98,-0.9l4.1,0.27l2.59,-0.6l1.16,0.09l3.15,-1.45l1.86,0.02l0.96,-0.62l2.17,-0.6l0.67,-0.76l1.17,1.06l1.42,0.59l1.74,3.52l-0.61,0.66l-0.14,0.69l0.7,3.02l-1.32,0.92l-0.26,0.97l0.52,0.49l1.0,-0.0l0.03,1.25l1.53,2.14l0.88,0.27l0.31,0.77l0.57,0.13l0.53,-0.37l1.16,0.24l-0.79,1.66l1.16,2.86l1.21,0.24l0.46,-0.19l1.07,0.69l1.32,-0.25l1.27,0.71l0.79,-0.27l0.41,-0.52l1.12,0.26l0.39,-0.42l0.19,-1.07l0.57,-0.48l-0.19,3.16l0.81,0.99l0.63,0.16l0.49,0.92l0.95,0.25l1.11,2.33l2.42,1.12l1.52,2.07l0.7,-0.17l-0.01,-0.87l0.36,-0.2l0.59,0.33l0.8,-0.29l0.82,1.22l0.68,0.04l0.28,0.41l1.29,0.55l1.18,-0.11l0.52,-0.62l0.64,0.15l0.55,-0.67l2.28,0.29l0.53,-0.76l1.37,-0.67l0.83,0.87l1.38,-0.92l1.71,0.31l0.54,0.61l1.44,0.15l0.6,0.42l0.77,-0.34l0.56,0.6l0.81,-0.12l1.67,1.07l0.52,0.98l1.97,0.13l0.21,0.38l0.58,0.14l0.45,-1.05l1.12,0.08l0.53,-0.78l0.56,0.3l1.55,0.02l0.61,-0.35l0.04,-0.64l-0.7,-1.42l-0.64,-0.13l-1.2,-1.65l0.07,-1.92l0.73,-0.05l2.04,3.21l1.0,3.57l0.85,0.32l0.5,1.26l0.89,0.26l1.78,2.05l1.65,-0.25l0.72,-0.84l0.28,0.6l0.67,-0.0l0.26,-0.78l0.73,-0.1l0.33,-0.55l-0.93,-1.05l0.67,-1.15l-0.81,-2.97l-0.64,-0.18l-0.52,0.86l-2.33,-3.23l-0.49,0.13l-0.27,0.64l-0.92,0.16l-0.57,0.49l-0.73,-0.22l-0.74,1.82l-0.41,-1.4l-1.23,-1.62l-0.18,-1.05l0.64,-0.33l0.37,-0.68l0.14,-1.19l-1.3,-1.23l0.07,-0.69l-0.36,-0.38l-0.66,-1.26l0.41,0.48l1.06,-0.68l1.19,1.44l0.43,0.11l0.47,-0.36l0.5,0.06l0.4,-0.68l0.79,0.34l0.56,-0.34l0.03,-0.46l0.72,0.42l0.51,-0.4l-0.15,-0.84l-0.96,-0.64l-0.64,-1.74l1.71,0.28l0.32,1.42l0.89,0.92l0.47,-0.05l0.35,-0.56l-0.24,-0.7l-0.5,-0.1l0.11,-0.26l0.79,0.01l0.99,0.7l0.68,1.19l0.03,0.84l1.08,0.66l-0.74,0.93l0.24,0.88l1.23,0.6l1.74,-0.66l-0.22,1.11l0.61,0.85l-0.35,0.88l-1.14,0.69l-0.38,0.64l0.03,0.7l0.42,0.48l1.07,0.06l0.37,-0.73l0.61,0.48l0.73,-0.14l0.31,-0.74l-0.45,-1.02l0.19,-0.25l1.55,-1.15l1.76,-0.78l-0.79,1.52l0.35,0.84l-1.82,5.69l0.01,2.01l-0.25,0.57l-0.9,0.08l-0.14,1.8l-0.91,0.95l-0.32,1.8l0.09,0.3l0.62,0.07l0.44,0.78l0.98,0.47l0.57,-0.12l-1.02,1.79l-0.33,1.54l0.46,0.47l0.47,-0.08l0.23,0.52l0.87,0.02l2.55,-2.56l0.6,0.59l0.53,-0.36l-2.48,3.23l0.46,0.54l1.33,-0.73l0.96,-0.12l-0.02,1.16l0.74,0.27l-0.27,1.34l0.61,1.06l-0.69,0.79l-0.87,0.03l0.12,-0.28l-0.45,-0.53l-2.25,0.7l-0.31,-1.15l0.38,-0.72l-0.29,-0.74l-0.73,0.33l-0.69,1.35l-0.98,-0.04l0.01,-1.45l-0.95,-0.71l-0.57,-0.04l-0.69,0.9l0.38,1.53l0.81,0.62l0.4,1.02l0.7,0.58l0.31,1.37l1.83,1.52l0.46,1.9l-0.39,1.29l0.13,0.48l0.5,-0.01l0.78,-1.17l0.96,-0.63l-0.09,-1.39l-0.49,-0.51l-0.53,0.65l-2.24,-4.1l0.51,-0.24l0.77,0.55l0.55,-0.22l0.47,0.8l1.82,0.12l0.73,-0.39l0.97,0.56l0.65,-0.4l0.57,-1.26l-0.84,-2.43l0.07,-1.43l0.7,-1.15l0.14,-0.87l0.71,-0.58l-0.14,-0.51l-1.05,-1.02l-0.44,-2.43l0.7,-0.87l-0.06,-0.95l-1.04,-2.12l-0.56,-0.29l-1.07,-1.42l1.36,-1.41l0.21,-0.93l-0.27,-1.18l1.24,-2.11l0.03,-0.92l0.63,-0.02l-0.22,0.42l0.57,0.39l1.08,-0.91l0.6,0.73l0.62,-0.1l0.82,0.61l0.65,-0.2l1.99,-2.51l2.93,-2.25l0.13,-2.08l0.63,-0.95l4.43,-2.67l0.26,-0.93l1.2,-0.67l0.06,-0.55l-1.85,0.31l-0.69,-0.28l0.28,-2.13l1.01,-2.08l-0.54,-1.2l0.06,-1.53l-1.1,-0.49l-0.47,0.16l0.2,-0.46l-0.32,-0.34l0.51,-0.56l-0.3,-0.73l-0.68,0.15l-0.7,0.78l-0.1,1.2l-1.12,1.89l-0.02,1.06l0.74,0.43l-0.87,0.88l-1.18,-0.03l-0.94,0.55l-1.22,-0.72l0.65,-2.28l-0.3,-1.43l0.72,0.73l0.33,-0.14l0.85,-1.72l1.24,-0.38l0.29,-0.39l-0.14,-0.89l1.26,-1.02l0.09,-0.46l-0.41,-0.23l-1.1,0.54l-0.6,0.05l-0.26,-0.32l0.56,-2.25l-0.16,-0.9l1.73,-0.7l1.06,0.47l0.5,-0.21l-1.04,1.68l0.19,2.01l0.66,0.2l2.1,-2.7l1.62,-1.46l-0.12,-0.8l-1.22,0.19l0.93,-1.77l0.02,-0.59l-1.2,-1.18l-0.99,0.12l-1.53,0.77l-0.3,1.01l-1.59,-0.04l-1.05,-0.37l-1.24,-2.45l-0.29,-1.53l-0.95,-1.18l-1.12,0.56l0.07,1.25l-0.59,0.55l-0.93,-1.15l-0.89,-0.01l-1.88,-1.41l-1.82,-2.33l-0.83,-0.12l-0.36,-0.39l-1.17,0.24l-0.59,-1.11l0.09,-2.18l-0.52,-0.53l-0.65,-0.09l-1.65,-3.41l-0.15,-2.09l0.34,-2.13l0.71,-1.18l0.85,-0.31l0.59,-2.41l0.75,0.08l0.47,-1.04l1.74,1.3l0.65,-0.46l-0.1,-0.52l-1.67,-1.17l0.04,-0.59l1.59,-1.2l0.19,-0.58l-1.22,-0.06l-2.0,1.53l-0.98,-1.14l-0.42,-1.41l-0.87,-0.86l1.19,-5.03l0.89,-1.31l-0.23,-0.76l-0.55,-0.21l-0.27,0.29l-0.14,-0.24l0.31,-0.26l0.85,0.13l0.12,-0.27l-0.49,-1.01l0.28,-1.34l-0.37,-0.46l1.13,-0.1l1.07,-2.14l0.99,-0.1l1.95,2.72l1.27,0.08l0.33,-1.37l0.76,-0.66l-0.68,-1.12l1.26,-2.02l-0.42,-0.25l-1.02,0.41l-1.72,-0.58l-0.59,-0.77l0.38,-0.56l-0.25,-0.28l1.28,-0.41l1.53,-1.72l1.55,0.02l0.34,-0.47l-0.12,-0.73l0.38,-1.08l0.84,-0.27l1.45,0.12l1.05,0.27l0.34,1.88l0.61,-0.01l0.76,-1.04l-0.31,2.51l0.32,0.45l0.51,-0.17l1.16,-2.14l0.4,0.3l0.63,-0.34l0.72,0.63l1.19,-0.48l0.0,0.99l-0.76,1.43l1.3,1.82l2.72,2.41l0.45,1.94l1.1,0.69l0.25,2.85l0.47,1.29l-0.08,2.48l-0.38,3.5l-0.66,-0.38l-0.44,0.47l0.1,0.49l0.69,1.08l1.05,0.33l0.69,0.64l-0.25,0.89l0.35,0.34l0.1,0.92l1.7,0.3l0.78,0.68l-0.29,0.6l0.79,1.63l-0.37,0.43l0.2,0.64l0.86,0.41l-0.09,0.39l1.05,1.48l-0.12,0.79l-0.65,0.57l0.7,0.38l0.22,0.75l0.7,0.16l0.82,-1.44l-0.19,-0.33l0.6,0.07l-0.26,0.55l0.2,2.13l0.6,0.35l0.28,-0.25l0.44,0.78l-3.08,0.37l-0.52,-0.86l-0.83,-0.4l-0.57,-1.55l-1.17,0.57l0.43,0.71l-1.34,0.59l0.57,0.61l-0.46,0.85l-0.77,0.42l-0.0,0.65l0.72,0.68l0.59,0.01l0.24,-0.49l0.78,-0.38l1.26,0.14l0.86,0.98l-0.74,0.34l-1.66,2.15l0.12,0.41l-2.03,1.16l-0.22,0.56l-0.65,0.01l-0.24,0.73l-1.93,1.83l0.19,0.52l2.03,0.54l0.79,-0.66l1.1,0.04l2.12,2.77l2.21,1.48l2.11,-2.04l0.1,-0.83l0.81,-0.86l1.28,0.51l-0.97,1.2l-1.68,0.68l0.02,0.7l0.44,0.23l1.49,-0.21l1.04,-0.74l0.63,0.96l1.39,-0.16l0.36,0.69l1.02,0.01l0.53,-1.03l1.52,0.89l0.09,0.25l-0.69,0.38l-0.48,-0.53l-0.61,-0.01l-0.41,0.4l0.45,0.62l-1.08,0.99l-0.25,1.61l-0.61,-0.4l0.37,-0.81l-0.42,-0.4l-0.47,0.11l-1.25,1.31l-1.69,-1.37l-0.67,0.29l0.54,1.02l1.59,1.16l3.04,3.5l0.72,0.43l-0.39,1.34l0.27,0.55l0.49,0.15l0.16,0.54l-0.27,0.74l1.3,0.85l-1.1,1.36l0.2,0.58l0.42,0.08l-0.15,0.92l0.34,0.75l-0.48,1.34l0.34,0.89l-0.25,0.79l0.36,0.47l-0.94,1.83l0.26,0.55l1.56,0.97l-0.66,0.52l-0.1,0.51l0.49,0.18l0.7,-0.25l0.29,1.8l0.46,0.61l0.83,-0.07l0.65,-0.63l-0.22,-1.21l1.21,-1.33l0.04,-1.2l0.65,-0.41l0.63,-1.78l-0.72,-0.82l-0.16,-0.8l0.66,-1.17l-0.11,0.74l0.35,0.5l0.54,-0.2l0.31,-0.62l0.2,-3.6l-0.48,-2.78l0.31,-1.38l1.95,-2.78l0.76,-1.95l0.81,-0.47l0.93,0.17l0.54,0.53l0.76,1.96l0.94,1.23l3.7,3.18l1.73,2.49l0.75,2.41l-0.07,2.09l1.18,3.88l0.07,1.43l-0.33,1.43l-0.41,0.53l-1.47,-0.53l0.0,-2.23l-0.28,-0.54l-0.57,0.02l-0.75,1.43l-0.66,0.47l-0.22,0.77l0.64,1.37l0.36,1.85l-0.72,1.8l0.07,1.19l0.8,3.46l0.92,1.49l0.26,1.46l0.61,0.85l1.03,0.56l2.33,3.5l1.5,1.53l0.14,1.62l0.55,0.42l-0.88,0.97l-0.09,1.63l0.52,0.42l0.28,-0.12l0.67,-1.15l0.35,1.43l0.77,-0.01l0.44,-2.43l0.17,0.71l0.65,0.14l0.43,-1.33l0.76,-0.29l-0.28,-1.39l0.74,-1.69l0.46,-0.2l0.65,0.81l1.18,0.53l0.87,-0.85l-0.27,-1.29l0.42,-0.51l0.1,-3.05l-0.63,-1.65l1.23,-3.16l1.2,-1.55l0.47,-1.25l1.64,-1.83l-0.14,-1.24l0.37,-0.46l-0.24,-1.07l0.4,-0.09l0.33,-0.65l-0.43,-0.61l0.05,-1.52l1.03,-2.63l-0.5,-0.76l-0.17,-3.02l0.49,-2.13l0.77,0.12l0.63,-0.55l0.3,0.42l1.19,0.27l0.47,-0.33l0.01,-0.4l1.54,-0.23l1.32,0.5l0.47,-0.39l0.12,-1.02l-0.57,-0.98l-0.96,-0.26l-0.63,0.3l-1.06,-0.4l0.51,0.1l0.69,-0.59l-0.1,-1.13l1.13,0.19l0.47,-0.25l-0.18,-1.05l-0.94,-0.34l0.68,-0.31l1.87,0.46l0.54,-0.81l-0.44,-0.59l-1.29,-0.2l-0.34,-0.92l-1.18,0.19l-0.77,-2.03l-1.4,0.16l-0.45,-0.44l-0.8,-0.13l-0.82,-1.5l0.81,-0.1l0.0,-0.83l-0.73,-0.45l0.12,-0.35l-0.34,-0.42l0.55,-0.16l0.45,-1.01l-0.72,-0.74l-0.72,0.27l0.02,-1.04l0.33,-0.57l0.63,-0.15l-1.18,-2.09l0.63,-0.72l-0.04,-1.08l0.77,-0.79l-0.07,-0.77l1.71,0.98l0.43,-0.68l0.88,-0.22l0.49,-0.61l3.23,-0.54l0.37,0.46l0.88,0.11l1.22,1.29l2.32,1.02l2.79,0.38l0.9,-0.59l1.61,0.41l1.0,-0.32l1.52,0.13l0.48,-0.34l0.15,0.26l-0.65,0.87l0.25,0.5l-0.91,0.6l0.36,0.36l0.88,0.07l0.55,0.68l-5.0,-0.84l-0.65,0.42l0.17,0.76l6.94,1.74l-0.26,0.19l0.21,0.47l1.55,1.36l-0.4,0.23l-0.32,1.25l0.49,0.56l1.98,-0.41l0.2,-0.61l1.62,0.05l2.08,1.18l0.9,-0.0l0.36,1.29l-1.11,0.95l-0.49,1.44l-0.68,0.07l-0.43,1.13l-2.03,1.16l-0.43,1.03l0.48,0.12l1.55,-0.74l0.91,-0.06l0.65,0.54l0.22,0.76l0.47,0.18l0.96,-0.97l1.12,1.62l0.07,2.62l-2.43,2.77l-1.12,-0.34l-0.42,0.56l0.02,0.92l-0.79,0.69l-0.64,-1.43l-1.22,-0.48l-0.47,-0.09l-0.46,0.43l0.73,1.2l-1.29,-0.23l-1.57,-1.04l-0.43,0.26l-0.18,0.63l0.8,0.9l-0.48,-0.02l-0.29,0.73l0.35,0.74l1.0,-0.01l1.03,0.92l-0.87,0.27l-0.13,0.58l0.6,0.71l0.78,0.37l0.54,-0.28l-0.48,2.01l0.5,0.77l1.45,0.33l0.14,0.4l-0.5,1.79l0.93,2.29l2.14,1.89l1.82,2.29l1.57,1.09l1.69,2.53l0.22,0.52l-0.41,1.74l-0.28,5.75l-0.53,0.8l0.05,0.96l-1.02,0.03l-0.28,0.58l-1.06,-0.37l-1.34,0.86l-0.5,1.2l0.16,0.41l-0.46,0.91l0.08,0.5l-0.63,1.14l0.07,0.98l-1.52,0.1l-0.06,0.63l-0.59,0.4l-0.65,1.2l-0.23,1.08l-1.73,0.03l-1.48,0.55l-0.36,1.57l-2.25,2.59l-0.38,0.05l-0.41,-0.12l-0.13,-0.75l-0.94,-1.23l-0.35,-1.01l-1.56,-0.52l-1.22,-1.46l0.84,-0.02l0.3,-0.94l-0.88,-1.37l0.48,-1.38l-0.41,-1.56l-0.42,-0.2l-0.33,0.34l-0.11,1.16l-0.7,0.65l-0.47,1.48l-0.76,-0.18l0.05,-1.01l-0.3,-0.35l0.54,-0.56l-1.46,-1.06l-0.06,-2.04l-3.54,-0.91l-0.73,-0.56l-0.69,0.1l-0.05,1.03l0.57,0.63l-0.96,0.18l-1.62,1.09l-0.24,1.14l0.19,0.5l0.92,0.71l1.52,-0.57l0.86,-1.83l0.42,-0.12l0.25,0.31l-0.33,0.39l0.98,0.58l-0.37,0.78l0.37,0.41l2.33,0.87l-0.55,0.56l-0.01,0.63l1.17,0.78l1.2,-0.25l-0.39,1.76l2.5,2.69l0.45,0.81l0.25,1.95l0.7,0.44l0.56,1.17l-1.31,0.22l-1.3,-0.9l-0.32,-0.92l-0.59,-0.46l-1.33,0.72l-0.35,-1.24l-1.17,-0.96l-0.48,0.19l-0.76,1.63l2.26,2.97l-1.28,-0.84l-1.45,-0.18l-0.77,-0.79l-1.0,0.26l-1.07,-1.4l-0.6,0.07l-0.34,1.21l-0.78,-4.09l-0.84,-1.71l-0.66,-0.37l-0.86,0.23l-1.97,1.36l-0.9,-0.22l-1.74,0.35l-1.03,-0.32l-0.59,-0.68l-0.45,0.07l-0.33,0.62l-1.44,-0.65l-0.35,0.93l-0.6,-0.32l-0.75,0.2l-0.14,0.54l0.61,0.87l-0.56,0.05l-0.22,0.59l1.71,2.75l2.48,0.54l3.71,1.93l-0.76,1.22l-0.06,1.4l-0.48,0.53l-1.03,0.33l-0.22,1.04l-1.73,0.86l-0.59,2.04l0.31,1.26l-0.58,1.19l-1.1,0.64l-1.09,1.77l-1.33,0.59l-0.29,0.88l-0.53,0.25l-0.28,0.57l0.29,1.02l-2.17,1.42l-4.42,0.04l-1.02,-0.44l-1.24,-0.93l-0.92,-1.6l-1.21,-1.3l-1.96,-1.11l1.98,0.37l0.47,-0.37l-0.12,-0.47l-3.93,-1.49l-0.91,0.15l-1.03,-0.58l-0.37,-0.92l-1.22,-0.74l-0.92,-1.12l-0.79,-0.14l-1.45,-1.41l-2.52,-0.27l-0.57,0.23l0.01,0.69l1.88,1.05l0.14,0.7l-2.03,-1.36l-1.24,0.26l0.05,-0.62l-0.46,-0.37l-1.47,0.42l-6.35,-0.91l-1.26,-0.56l-1.67,0.63l0.02,0.64l3.84,2.87l0.66,-0.16l0.12,-0.54l-0.83,-1.67l4.33,0.96l4.62,1.73l1.79,1.3l1.04,1.58l1.15,0.81l0.64,2.1l1.78,1.27l1.28,2.27l1.01,-0.19l0.6,0.41l6.81,0.99l1.16,-0.43l1.53,0.37l0.72,-0.68l1.26,0.62l1.23,-0.17l2.44,0.59l-0.02,0.57l0.92,0.98l-0.42,0.83l0.18,0.8l-1.03,1.03l0.2,0.74l-0.68,0.55l-0.63,1.25l-0.46,2.22l-0.67,0.57l-0.74,-0.22l-0.3,0.43l0.01,2.02l-0.48,1.22l-1.97,1.13l-0.52,3.2l-1.35,1.99l-0.11,0.53l0.4,0.72l-0.74,0.93l-0.94,-0.04l-2.19,1.87l-1.48,0.78l-0.44,0.77l-1.35,-0.65l-0.63,0.19l-1.4,-1.05l-1.02,-2.09l-0.48,0.02l-0.39,0.58l1.13,2.58l-0.8,-0.25l-0.43,-0.5l-0.74,0.08l-0.86,-0.94l-0.48,0.08l-0.22,0.53l-0.47,-0.49l-0.61,-0.01l-0.37,-0.42l0.39,-0.09l0.34,-0.6l-0.14,-1.56l-0.38,-0.69l-0.64,0.01l-0.79,1.51l-0.87,0.09l-1.12,0.66l-0.05,0.72l0.93,0.65l0.44,-0.18l0.48,1.07l-0.19,0.66l-0.41,-0.19l-0.73,0.47l-0.86,-0.9l-0.72,0.05l-0.46,0.46l1.37,1.56l0.33,1.12l1.01,1.2l-0.95,0.21l-0.29,0.68l0.41,0.36l-0.92,1.77l-0.74,-0.24l-0.59,0.62l-0.56,0.01l-0.23,-0.94l-1.65,-0.78l-0.76,0.87l-0.04,0.64l0.69,0.29l0.5,-0.22l0.07,0.37l-1.46,0.62l-1.33,0.1l-1.96,-1.32l-0.77,0.03l-1.06,-1.28l-1.28,-0.65l-1.21,0.15l0.04,-0.54l-0.47,-0.6l-0.51,0.06l-0.35,0.5l-1.27,-0.1l0.67,-0.57l-0.27,-0.54l-1.23,-0.2l-0.67,1.26l-2.38,-0.59l-0.99,-0.97l-1.95,-0.67l-0.56,-0.85l-1.09,-0.11l-0.4,-0.69l-0.98,0.04l-0.68,-0.73l-2.44,-1.09l-1.31,-1.52l-0.1,-1.25l-0.75,-0.16l-0.38,-0.56l-0.65,0.04l-0.08,0.58l0.7,0.89l0.13,1.06l0.71,1.09l-0.06,0.3l-1.2,-0.06l-0.41,0.49l-0.05,0.4l0.61,0.58l0.54,1.53l2.55,1.43l1.53,-0.47l0.27,-0.5l-1.31,-0.78l-0.63,-1.04l0.13,-0.26l2.22,1.83l1.8,0.9l1.13,0.19l1.16,0.98l0.55,0.05l0.82,-0.64l0.64,1.4l1.31,0.07l0.51,0.42l-0.34,1.0l-0.74,-0.38l-0.82,1.21l-1.45,0.8l0.07,0.56l0.82,0.62l1.5,-0.61l0.41,0.38l0.63,-0.18l0.29,-1.37l1.35,-0.48l0.53,-0.63l1.38,-0.66l1.17,1.1l0.19,1.32l1.74,1.14l-0.1,0.55l0.37,0.42l1.93,-0.08l0.94,0.83l0.59,-0.3l0.22,0.25l-0.31,0.34l0.34,0.65l2.0,0.84l-0.34,0.61l0.51,1.75l-0.36,0.9l0.41,0.47l-0.04,1.6l0.25,0.32l-0.84,0.97l-0.23,0.91l-2.1,-0.17l-1.55,1.08l-0.28,0.73l-0.67,0.49l-1.01,0.17l-0.08,0.61l-6.01,-1.84l-0.48,0.42l0.11,0.84l-1.42,-0.68l-1.4,0.44l-0.18,1.01l1.52,1.96l-0.01,0.45l1.0,0.46l2.05,0.27l0.42,0.21l-0.02,0.44l-0.74,0.94l-0.91,-0.27l-0.08,-0.97l-0.79,-0.23l-0.79,0.25l-0.1,0.46l-0.81,0.57l-0.29,-0.1l-0.11,-0.96l-0.66,0.08l-0.71,-0.69l-0.56,0.33l0.62,1.7l-0.15,1.0l-1.28,0.07l-0.16,1.92l-0.88,0.18l-0.01,0.68l1.78,0.63l-0.08,0.63l-0.47,-0.64l-0.62,-0.04l-0.47,-0.48l-3.58,-1.19l-0.51,0.14l0.08,0.53l0.58,0.48l3.52,2.17l-0.17,0.39l-0.49,-0.41l-0.97,-0.02l-0.42,0.2l0.01,0.34l-0.95,0.34l-0.3,0.85l0.81,0.74l-0.33,0.5l-0.6,0.02l-0.24,0.51l-1.17,-0.68l-0.29,0.48l-0.38,-0.11l-0.51,0.37l0.15,0.47l0.91,0.72l-0.58,0.06l-0.12,0.57l-1.72,-0.71l-0.48,0.61l0.55,0.71l-0.52,0.41l0.0,0.75l1.48,0.65l0.15,0.47l-0.35,0.17l-0.06,0.59l0.5,0.75l-0.94,0.27l-2.33,2.14l-0.8,0.09l-1.42,2.04l0.19,1.66l0.96,0.33l0.02,0.67l-0.63,0.23l-1.46,-0.58l-0.43,0.57l0.86,1.7l-0.83,1.09l0.32,1.46l-0.9,0.8l-1.03,2.78l-1.06,0.83l-0.64,1.83l0.06,0.76l-0.95,1.43l-0.28,1.75l-1.44,-0.29l-0.49,0.23l-0.08,0.62l-0.78,0.49l1.17,0.74l0.47,1.38l-1.03,2.38l0.22,1.29l-0.39,0.88l0.08,1.0l-0.53,0.41l-0.4,1.05l-33.99,-2.48l-33.79,-3.8l10.54,-78.34l0.16,-3.27l-1.13,-0.63l-11.88,-3.86l-18.57,-6.61l-25.7,-9.97l-1.81,-1.05l-2.03,-2.19l-7.01,-13.93l-14.83,-3.67l-12.27,-15.45l-13.32,-18.01l-12.5,-18.28l-10.27,-16.15ZM431.55,497.53l0.31,-0.12l0.17,0.01l-0.2,0.26l-0.28,-0.15ZM459.97,461.11l0.41,0.12l0.06,0.53l-0.42,-0.04l-0.04,-0.61ZM466.33,460.55l0.16,0.24l-0.01,0.0l-0.15,-0.24ZM457.44,422.81l-0.21,0.13l-0.28,-0.01l0.49,-0.12ZM510.55,414.28l0.09,0.15l-0.04,0.09l-0.06,-0.23ZM452.71,352.12l0.03,0.15l-0.01,0.1l-0.08,-0.08l0.07,-0.17ZM410.05,384.51l0.12,0.01l-0.05,0.33l-0.07,-0.28l-0.01,-0.06ZM408.32,373.23l-0.03,-0.49l0.36,-0.47l-0.09,0.57l-0.23,0.4ZM318.64,387.32l0.17,-0.15l0.1,-0.2l-0.02,0.64l-0.25,-0.3ZM318.94,386.46l-0.03,-0.21l0.0,-0.15l0.04,0.09l-0.01,0.27ZM321.06,364.45l0.05,-0.18l0.03,-0.08l0.11,0.08l-0.19,0.18ZM329.96,363.12l-0.02,-0.07l0.05,-0.02l-0.02,0.09ZM343.89,363.99l-0.01,-0.29l0.6,-0.07l-0.05,0.13l-0.54,0.22ZM393.29,373.56l-0.08,-0.14l0.13,-0.03l-0.03,0.08l-0.02,0.08ZM393.36,373.34l0.07,-0.35l0.01,-0.02l-0.02,0.16l-0.07,0.2ZM431.18,350.11l0.25,-0.55l0.38,-0.32l-0.44,0.76l-0.19,0.11ZM427.74,295.54l-0.28,-0.5l-1.09,0.54l-2.24,-0.49l-0.57,0.24l-0.05,-0.78l0.27,-0.75l4.16,-0.81l0.19,0.78l0.47,0.35l-0.54,0.32l0.1,1.06l-0.41,0.05ZM524.18,151.95l-0.31,-0.7l1.09,-0.68l0.05,0.73l-0.83,0.65ZM520.3,200.25l0.21,-1.47l1.52,-2.11l0.89,-2.29l0.45,0.01l0.45,0.38l-0.01,0.52l-1.54,2.07l-0.21,0.77l0.31,1.0l0.68,0.66l-1.45,0.22l-0.62,0.7l0.01,0.56l-0.7,-1.0ZM420.43,181.62l0.62,-0.87l-0.12,-0.26l0.61,1.02l0.74,-0.23l0.77,0.53l0.67,-0.11l0.25,-0.84l-0.59,-0.28l0.66,-0.4l-0.11,-0.59l-1.42,-0.84l-0.59,-0.77l-0.57,-0.08l-0.08,-0.91l0.74,-0.14l0.39,-0.81l0.69,0.51l0.79,-0.67l0.42,0.07l0.53,-0.75l-0.33,-0.56l1.43,-0.16l1.18,-0.54l0.61,0.36l1.21,0.1l1.1,1.39l1.08,0.31l0.38,0.43l2.24,0.35l0.31,1.19l0.93,0.15l0.49,0.77l1.0,-0.0l0.77,-1.07l1.13,0.45l0.38,1.24l1.53,1.97l0.6,1.46l-0.84,3.95l-2.07,2.49l0.7,1.8l0.78,-0.03l0.3,-0.47l-0.59,-0.65l1.22,-0.88l1.63,-2.96l-0.03,-0.57l1.81,0.83l1.15,-0.54l0.96,0.52l1.39,-0.57l0.88,-1.01l2.88,-0.6l2.66,1.15l0.56,1.25l1.55,0.93l0.21,1.53l-0.52,0.16l-1.29,-0.61l-0.43,-0.79l-0.69,0.17l-0.29,0.65l-1.37,-0.9l-1.24,0.23l-0.33,0.39l1.0,1.43l2.43,0.35l1.98,0.83l0.76,0.64l0.58,-0.43l6.3,2.56l0.54,1.01l-0.8,1.13l-6.11,0.17l-0.27,0.43l-3.55,-0.91l-0.51,-0.68l-2.16,-1.05l-0.47,0.09l0.11,0.74l1.8,1.17l-0.87,1.04l0.22,0.54l0.63,0.1l0.57,-0.36l2.53,0.82l-0.13,0.53l-0.68,0.38l0.4,0.61l-1.39,-0.03l-0.63,0.45l0.06,0.61l0.45,0.23l-0.04,0.35l0.66,0.74l-1.13,0.97l0.03,1.86l0.32,0.37l0.54,-0.31l0.36,-1.43l1.24,-1.45l0.61,0.3l0.94,-0.69l-0.48,1.34l0.07,0.44l0.69,0.2l1.1,-1.51l0.31,0.54l0.62,0.17l0.44,-0.38l0.16,-0.85l0.75,0.45l0.75,1.32l-0.52,1.8l0.14,0.99l0.86,0.09l1.06,-1.42l0.76,0.96l0.76,0.34l0.09,0.43l-0.48,2.76l-0.64,0.38l-1.29,-0.1l-0.85,1.01l-0.08,0.71l0.79,0.81l0.97,-0.17l0.63,-0.76l0.88,0.04l0.58,2.19l1.33,1.51l1.1,-0.18l0.32,-0.42l0.04,-1.11l-0.83,-2.81l0.71,-0.81l0.06,-0.55l1.86,2.58l0.66,0.4l-0.56,0.98l0.98,0.87l1.65,-1.92l1.04,-0.67l1.11,1.8l-0.58,0.81l0.39,0.39l1.01,-0.17l0.45,-1.42l-0.54,-1.26l0.93,-1.27l0.7,0.48l0.36,1.04l1.75,1.74l1.38,0.04l0.9,0.88l-1.19,1.0l-0.12,0.48l0.43,0.23l1.29,-0.23l1.3,-1.0l1.02,-0.18l2.85,0.31l0.41,-0.42l-0.27,-0.56l-1.61,-0.38l-0.79,-0.85l-1.13,-0.39l0.55,-0.49l1.65,-0.56l0.47,-0.54l0.83,0.38l0.6,-0.27l0.78,0.21l0.5,-0.41l-0.36,-0.56l1.46,-1.38l0.81,-0.05l1.7,0.61l0.43,-0.3l0.0,-0.65l-0.7,-0.24l-0.07,-0.44l1.79,-0.55l0.71,-1.27l1.02,-0.43l0.51,-0.91l0.4,-0.06l0.8,0.56l0.66,-0.16l0.98,1.09l1.24,-0.18l0.48,0.26l2.88,-2.17l1.62,-0.66l6.9,0.84l-0.86,2.39l0.34,0.6l1.83,0.38l2.8,-0.86l0.35,0.42l0.67,0.03l1.39,0.89l-0.02,0.68l0.38,0.41l-1.7,1.15l-0.16,0.44l0.43,0.53l3.83,-0.52l0.4,1.14l0.81,0.46l-0.08,0.99l-0.45,0.8l0.23,0.56l0.68,0.19l-0.62,1.94l-1.15,0.29l-0.61,0.94l-0.12,0.99l-2.38,1.5l-0.22,0.7l1.13,1.01l0.06,0.7l-0.74,0.86l0.17,0.93l1.8,1.16l0.1,0.54l-0.72,0.82l0.74,1.02l-0.36,0.53l0.43,1.62l-0.33,0.76l-1.04,-0.02l-0.56,0.57l-3.59,0.03l-1.4,0.66l-2.42,2.46l-1.63,-0.24l-1.11,-0.67l-0.68,-0.05l-0.22,-1.01l-0.56,-0.28l-0.45,0.28l-0.09,0.71l-0.43,0.48l-0.82,-0.18l-1.04,-0.65l-1.16,-2.26l-0.11,-1.45l0.42,-1.04l-0.51,-1.31l-0.9,-0.15l-0.82,-0.5l-0.89,-1.16l-0.53,-0.06l-0.57,0.68l0.32,1.3l1.36,1.75l-0.71,4.18l-0.5,0.52l-2.57,0.31l-1.28,0.93l-2.03,0.15l-0.77,-0.44l-0.91,0.47l-0.44,-1.19l0.03,-2.55l-0.49,-0.71l-0.63,0.38l-0.32,1.27l0.34,2.55l-0.53,0.71l-0.65,-0.02l-0.94,-3.83l-0.66,-0.63l-0.53,0.61l0.54,3.14l-0.46,0.77l-2.58,0.37l0.09,-1.23l-0.56,-0.82l-0.08,-0.83l-0.51,-0.24l-0.56,0.5l0.04,1.45l-0.61,1.23l-1.4,-0.97l-0.61,-1.79l-0.72,-0.27l-0.32,0.41l0.07,1.69l0.93,1.46l-1.06,0.13l-0.41,-0.89l-0.68,-0.07l-0.22,0.84l-0.85,0.11l-0.38,-0.69l0.36,-0.58l-0.42,-0.53l-0.88,0.34l-0.4,1.26l-0.87,0.51l-0.26,-1.09l-0.49,-0.31l-0.81,0.91l-0.89,0.1l-0.26,-0.49l-0.7,-0.14l-0.33,0.53l-1.38,-0.34l-0.03,-2.5l0.74,-3.07l0.68,-0.64l-0.28,-0.42l-0.88,-0.1l0.12,-1.14l-0.49,-1.32l-0.43,-0.3l-0.59,0.36l0.09,0.81l-0.57,0.3l-0.69,3.45l-0.18,-1.92l-1.09,-1.3l-0.58,-0.11l-0.18,0.41l0.52,1.38l-0.13,0.8l-0.77,-0.66l-0.59,0.1l0.33,1.26l0.65,0.72l-0.25,1.63l-0.31,0.33l-1.04,0.01l-0.32,0.75l-0.91,-0.11l-0.58,0.47l-1.14,0.13l-0.42,-1.29l-0.5,-0.03l-0.45,0.65l-1.0,-0.68l0.06,-0.86l-1.62,0.41l-0.83,-1.03l0.07,-1.6l-0.41,-0.39l-0.98,0.32l-0.43,0.66l1.62,-2.82l-0.06,-1.44l-0.53,-0.32l-0.68,0.4l-1.44,2.73l-0.63,0.11l-0.39,0.88l-0.56,-0.03l-0.27,0.39l0.02,1.25l-0.45,-0.04l-0.69,-0.52l0.31,-0.55l-0.34,-0.72l-0.89,-0.22l-1.44,-1.47l0.36,-2.51l-0.31,-1.34l-0.84,-1.55l0.0,-0.83l0.9,-0.12l0.26,-0.31l-0.42,-0.95l0.21,-0.77l-0.59,-0.3l-0.96,0.39l-0.97,-1.66l0.42,-2.58l0.6,-0.73l-0.15,-0.58l-0.45,-0.11l0.38,-1.33l1.06,-2.19l0.66,-0.34l0.58,-0.83l-0.38,-0.83l0.34,-1.07l-0.84,-1.92l0.44,-1.44l-0.1,-1.55l-0.43,-0.71l-1.28,-0.76l-0.21,-0.78l-0.45,-0.32l-0.48,-1.12l-0.14,-2.73l-0.53,-0.76l-0.27,-1.33l-0.7,-0.59l-0.62,-1.36l-0.06,-1.36l-0.58,-0.68l-0.69,-0.15l-1.98,1.44l-0.45,-0.4l-0.45,0.11l-0.65,1.31l-1.32,0.09l-0.78,-0.57l-2.24,0.12l-0.43,-1.01l-0.43,-0.02l-0.41,-0.61l-2.91,-1.03l-0.33,-0.64l-0.99,0.32l-1.26,-0.4l-0.71,-0.86l-0.49,-1.5l1.28,0.15l0.56,-0.27l1.17,-2.1l-0.46,-0.51l-1.06,1.03l-0.91,0.17l-0.01,-0.56l-0.86,-0.18l-0.62,-1.38l-0.77,-0.19l-0.41,-1.23l-1.13,-0.56l-1.03,0.14l-0.19,-0.33ZM451.64,232.47l0.2,0.49l-0.18,-0.03l-0.02,-0.46ZM519.52,222.67l0.67,0.01l0.3,-0.74l1.12,-1.04l0.93,0.21l0.91,1.92l0.6,0.41l-2.49,1.36l-0.4,0.49l-1.28,-0.76l0.02,-1.18l-0.38,-0.68ZM455.43,199.69l0.61,-0.68l1.56,0.5l-0.2,0.22l-1.97,-0.04ZM431.2,193.09l-1.37,1.01l-1.29,-0.29l0.02,-0.49l1.44,-0.32l0.43,-0.6l0.46,0.03l0.32,0.66ZM521.01,346.84l0.26,0.12l-0.6,-0.0l-0.32,0.78l-0.2,-0.77l0.85,-0.13ZM521.4,347.02l0.93,0.01l0.12,0.67l-0.68,-0.07l-0.37,-0.61ZM519.42,369.27l0.08,-0.17l0.17,0.21l-0.24,-0.04ZM514.49,412.03l0.0,-0.0l0.0,0.0l-0.0,-0.0ZM514.67,412.23l0.25,0.63l0.65,0.04l0.46,0.43l0.54,-0.1l-0.22,0.67l-1.73,-1.07l0.07,-0.61ZM505.16,417.47l-0.03,-0.82l2.73,1.32l0.45,-0.06l0.16,0.55l2.41,1.63l0.11,1.35l-0.63,0.61l-0.0,0.58l-1.02,0.94l-1.01,-0.16l0.22,-0.72l-0.29,-1.85l-0.69,-1.45l-1.07,-0.84l-0.77,-0.06l-0.57,-1.01ZM512.09,423.78l0.53,0.2l-0.02,0.3l-0.57,0.11l-0.35,0.62l-0.41,-0.06l-0.04,-0.46l0.86,-0.71ZM512.96,424.68l0.64,-0.22l1.49,-0.08l-0.08,0.85l-0.44,0.51l-0.87,-0.66l-0.86,0.02l0.12,-0.43ZM512.86,421.59l0.72,-0.05l-0.36,0.47l-0.37,-0.42ZM512.54,339.29l0.85,-0.28l0.88,0.7l-0.13,0.13l-1.6,-0.55ZM509.23,194.49l0.2,-0.25l0.21,-0.1l-0.34,0.37l-0.08,-0.02ZM505.41,340.75l-0.75,-0.57l0.04,-0.62l1.46,0.3l-0.75,0.43l-0.0,0.46ZM499.85,419.2l0.52,0.39l0.5,-0.13l0.35,0.5l-0.05,0.68l1.48,2.0l1.39,3.84l-0.75,1.32l-0.63,-0.38l-0.43,-1.69l-1.54,-0.95l-0.49,-0.74l-0.75,-3.59l0.0,-0.77l0.39,-0.49ZM493.31,188.08l0.28,0.32l-0.08,0.36l-0.23,-0.13l0.04,-0.54ZM483.52,380.65l0.67,-0.83l0.13,-0.81l-0.21,-0.83l-0.81,-0.49l-0.21,-0.47l0.58,-0.94l0.02,-1.25l1.29,-2.23l1.7,1.75l-0.11,2.22l0.6,2.9l-0.21,2.26l-1.11,2.16l-1.73,-1.43l-0.61,-2.01ZM484.26,162.01l0.42,-0.54l1.29,0.04l0.41,1.15l0.59,0.47l-1.04,0.74l-0.12,-1.24l-0.73,-0.56l-0.81,-0.06ZM479.18,334.69l0.76,0.01l0.72,-0.57l1.82,0.89l1.27,-0.58l0.97,2.02l-1.78,0.37l-1.64,-0.88l-0.73,0.52l-0.98,-0.67l-0.41,-1.12ZM427.77,94.98l0.27,-1.04l1.22,0.23l1.58,2.02l1.66,0.75l2.27,0.53l1.49,-0.22l1.8,1.72l0.71,-0.12l-0.07,-1.04l-1.53,-2.32l1.04,-1.26l2.04,-0.47l0.28,-0.54l-0.32,-0.43l-1.53,-0.55l-0.51,-0.62l-0.49,0.02l-0.67,1.12l-1.16,1.05l-1.73,0.26l-0.95,-1.25l1.76,-0.53l0.36,-0.72l-0.13,-0.61l-0.59,-0.16l-0.52,0.52l-0.38,-0.02l-0.17,-0.43l-0.59,-0.06l-1.26,1.09l-1.42,-1.64l-0.89,-0.42l0.39,-1.21l0.99,0.11l0.05,-1.01l0.58,-0.25l1.6,0.63l1.03,0.79l0.57,-0.4l-0.16,-1.39l-0.97,-0.57l-0.46,-1.38l-1.04,-0.82l0.5,-0.41l0.24,-0.89l-0.35,-0.92l2.83,0.12l1.34,-0.35l1.75,1.38l1.46,-0.18l1.09,0.47l0.43,0.81l0.49,0.02l0.68,-0.57l-0.98,-1.99l-1.81,-0.95l-0.65,0.14l-0.37,-0.98l0.08,-0.59l2.29,-0.25l0.33,-0.54l-0.22,-0.59l-0.79,-0.19l-0.09,-0.47l-0.43,-0.24l-0.89,0.57l-0.53,-0.18l-1.14,-0.9l0.69,-0.71l-0.44,-0.87l-1.26,0.54l-1.23,-0.4l0.12,-0.39l1.22,-0.53l0.4,-0.53l-0.3,-0.6l-1.05,-0.2l0.81,-1.06l0.41,-1.84l1.29,-1.0l1.27,1.08l-0.15,1.11l0.69,0.56l0.53,-0.28l0.4,-0.76l1.71,-0.79l-0.15,-1.22l-1.04,-0.57l1.28,-0.11l1.29,0.95l1.89,-0.69l0.35,-0.73l0.17,-1.89l-0.74,-1.46l-1.56,-0.33l-1.47,0.36l-0.94,-0.39l-0.74,-0.85l0.69,-1.58l0.01,-0.89l1.83,0.73l0.57,1.15l0.83,-0.76l-0.19,-1.48l0.65,0.25l4.27,3.47l1.67,2.64l0.03,1.58l-0.54,0.38l0.08,0.45l1.58,2.67l0.05,1.18l1.5,3.26l0.33,2.1l1.72,1.38l0.43,1.3l-0.69,1.44l0.13,1.03l3.34,0.83l1.0,2.0l0.82,-0.11l-0.26,-1.63l1.61,-0.09l1.03,1.58l-0.84,1.74l0.33,0.58l0.36,-0.03l-0.07,1.31l-0.63,0.9l0.51,2.05l0.66,1.22l2.62,2.67l0.66,-0.16l0.3,-0.53l0.72,0.66l0.52,-0.32l0.36,0.98l0.48,0.39l1.0,-0.56l1.79,0.15l0.33,1.45l0.75,1.34l-0.86,0.65l-0.4,1.26l-0.74,0.59l-0.15,0.63l0.41,0.46l0.79,-0.18l1.22,-1.54l-0.58,6.24l-1.43,2.18l-0.05,0.94l0.36,0.77l0.79,0.39l0.5,-0.31l0.55,-1.76l0.49,-0.46l0.36,0.13l0.08,1.12l0.63,0.08l0.72,-0.98l-0.53,-1.25l0.22,-0.34l1.53,-0.13l1.13,1.76l-0.41,1.03l0.43,1.1l-0.44,0.91l0.63,0.75l0.63,-0.04l0.77,-2.0l0.25,-2.81l1.45,4.01l2.55,4.05l-0.0,0.59l-1.1,0.7l-0.56,1.1l-0.88,0.74l-4.99,2.97l-0.41,2.41l-0.29,0.19l-0.82,-2.36l-0.31,-0.23l-0.51,0.23l-0.12,2.12l0.35,1.83l-0.38,1.01l-1.35,1.8l-1.23,3.93l-0.88,-1.19l-0.62,-3.1l-0.01,-3.36l0.86,-1.09l0.2,-2.51l-0.74,-0.07l-0.73,1.99l-1.25,0.49l-0.29,1.37l0.01,3.91l0.52,2.92l-0.6,0.11l-0.47,0.64l0.43,0.7l0.56,-0.32l0.79,0.09l0.54,1.32l0.01,0.98l-0.55,1.68l-0.53,0.24l-1.61,-3.56l-1.26,-0.29l-0.63,0.4l0.24,1.93l1.14,3.26l-1.23,6.18l-0.61,-0.32l-1.0,-1.97l-0.59,-2.02l-2.34,-4.18l-0.79,-2.67l-0.53,-0.43l-0.56,0.18l-0.33,0.62l0.12,2.33l0.44,1.87l1.02,1.16l1.11,3.98l-1.18,-0.05l-0.09,-0.94l-1.2,-1.69l-1.01,-0.29l-1.17,0.31l-1.2,-0.15l-0.27,0.75l0.37,0.58l1.69,0.52l-0.14,0.89l0.49,1.36l-0.15,0.61l-1.23,-0.2l-1.35,0.21l-1.56,-0.79l-2.05,-0.4l-1.24,-1.3l-0.48,-0.07l-0.78,0.58l-0.64,-1.58l0.37,-0.7l-0.22,-0.44l-0.47,-0.21l-0.89,0.54l-0.63,-0.45l-0.1,-0.8l-1.3,-1.2l-0.38,-1.65l0.28,-0.21l1.46,0.33l0.74,-0.73l2.95,-0.62l0.86,0.49l0.55,-0.29l0.05,-1.03l-0.43,-0.4l-0.49,0.13l-4.38,-1.38l-0.81,-0.7l-0.67,0.1l-0.6,0.73l-1.14,0.23l-0.67,-1.1l0.51,-0.55l-0.11,-0.64l-0.97,-0.04l-1.04,-1.94l0.67,-0.03l2.14,1.28l0.87,-0.29l0.09,-1.05l-2.64,-2.05l-1.57,0.05l-0.31,-1.14l-1.48,-2.49l1.63,-1.14l1.69,-0.35l1.33,-2.87l2.16,0.72l0.8,-0.47l2.17,0.38l2.04,-0.23l2.53,-0.78l4.18,-0.63l1.03,-0.73l0.06,-0.6l-0.62,-0.54l-3.01,0.21l-1.66,0.56l-3.52,0.53l-2.43,-1.02l0.26,-0.96l3.07,0.27l1.37,-0.86l2.42,-0.48l0.39,-0.39l-0.05,-1.33l-0.59,-0.13l-2.79,0.77l-0.44,0.49l-3.09,-0.65l1.69,-1.4l-0.35,-0.85l-1.91,-0.0l-1.26,0.94l-0.56,-1.7l-0.52,-0.28l-0.54,0.36l-0.09,0.64l-0.81,0.08l-0.89,2.24l-0.39,-0.2l-0.46,0.22l0.02,1.27l-1.24,1.27l-0.63,-0.47l0.05,-0.83l1.68,-1.95l-0.44,-0.41l-1.11,0.12l-1.74,-0.96l-0.65,0.26l-0.05,1.36l0.28,0.17l-0.39,0.47l-2.34,1.55l-0.47,-0.19l0.35,-1.57l-0.51,-0.45l-0.28,-1.3l-0.7,0.05l-0.3,0.43l-1.03,-0.62l0.5,-0.81l-0.32,-0.72l0.18,-1.43l4.91,-1.61l2.03,-2.07l0.3,-2.61l-0.32,-0.52l-0.56,0.01l-0.34,0.87l-0.87,0.4l-0.19,0.68l-0.74,0.75l-1.95,0.74l-2.78,-0.29l-1.1,-2.17l-0.49,-0.32l-0.01,-1.33l-0.75,-1.13l0.17,-0.75l0.45,-0.45l0.71,-0.08l0.23,-0.63l-0.53,-0.83l-1.52,-0.59l-0.23,-1.34l1.14,-0.5l0.25,-0.41l-0.33,-0.35l-1.22,-0.01l-0.27,-0.93ZM443.8,113.87l0.28,0.85l-0.7,0.52l0.38,-0.96l0.04,-0.42ZM461.48,146.36l0.13,0.3l0.04,0.32l-0.12,-0.23l-0.04,-0.39ZM467.94,95.1l-0.47,-0.95l0.29,-0.52l-0.28,-0.92l-1.08,-0.44l-0.75,-1.59l0.06,-2.29l0.7,-1.35l3.12,0.6l0.09,0.38l0.55,5.34l-0.36,0.49l-1.5,0.62l-0.38,0.64ZM428.65,100.85l-0.38,0.08l-0.0,-0.39l0.24,-0.06l0.14,0.37ZM467.95,144.5l0.1,-1.31l0.38,-0.62l-0.14,0.96l-0.34,0.97ZM468.78,140.89l0.02,-0.58l0.13,-0.05l0.0,0.05l-0.16,0.58ZM453.23,161.28l0.5,-0.07l0.77,-0.83l2.87,0.68l2.74,3.45l0.26,0.55l0.03,2.25l0.38,0.77l-0.72,1.38l-1.41,1.41l-1.23,0.17l-0.11,-0.75l-2.86,-1.81l-0.9,-1.33l-0.47,-0.99l0.15,-4.88ZM459.14,188.77l-0.7,-0.78l-2.16,-5.38l0.28,-0.78l1.01,-0.69l1.58,-0.38l1.42,1.91l0.07,0.95l-0.73,0.85l-0.28,1.43l0.25,1.75l0.62,0.81l-0.54,-0.39l-0.59,0.06l-0.23,0.64ZM457.58,356.16l0.14,0.07l-0.06,0.19l-0.08,-0.25l-0.0,-0.01ZM455.83,351.11l0.05,-0.55l0.96,-0.9l0.46,0.74l0.43,-0.01l-1.07,2.13l-0.1,-0.72l-0.73,-0.7ZM421.83,269.74l0.48,-0.7l-0.15,-1.2l0.22,-0.51l0.89,-0.23l-0.3,-1.11l0.12,-2.99l-0.26,-0.6l0.3,-1.27l-0.42,-1.81l0.32,-0.7l-0.08,-1.33l0.69,-0.26l0.16,-0.47l-0.96,-1.52l0.29,-1.54l1.24,-0.77l0.17,0.34l0.72,-0.1l1.47,2.21l1.38,0.57l1.36,-0.07l0.32,-0.59l-0.37,-0.69l-1.14,-0.38l-1.36,-2.16l0.98,-0.76l-0.17,-0.53l-0.59,-0.51l-0.85,0.35l-0.54,-0.66l-0.12,-0.73l0.47,-1.74l2.55,-0.98l0.77,-0.82l1.73,0.05l0.55,-0.74l2.57,-0.04l0.41,1.09l0.68,0.41l0.56,-0.37l0.06,-1.69l2.47,-0.16l1.5,0.85l1.37,0.29l0.39,1.11l0.71,-0.28l1.18,0.83l0.76,1.32l-0.39,0.98l0.42,0.52l1.3,-0.14l0.39,-0.31l0.08,-0.66l1.43,-0.69l0.46,0.18l1.18,-0.33l3.56,0.65l4.04,2.08l0.38,-0.17l0.33,0.23l-0.07,0.27l-0.72,0.01l-0.29,0.45l-0.0,1.59l-2.62,5.22l-1.34,0.04l0.33,1.6l-1.65,3.1l-0.55,1.82l-1.86,0.4l-0.55,0.4l0.19,0.66l1.32,0.34l-3.2,7.7l-1.06,1.11l-0.52,1.08l-1.63,0.64l-5.37,-1.84l-0.78,-0.76l-0.72,0.49l-1.32,0.19l-3.56,0.14l-0.95,-0.24l-0.56,0.5l-0.05,1.51l0.48,0.21l0.64,-0.4l1.16,0.6l1.13,-0.0l-0.14,1.38l1.23,1.05l0.93,2.98l-0.58,0.61l-0.52,1.41l-1.34,0.93l-1.65,3.59l-0.43,1.79l-0.69,0.16l-0.4,0.84l-0.42,-0.29l-2.74,0.09l-2.11,0.69l-0.62,-0.41l0.13,-0.97l0.67,-0.66l0.02,-0.57l1.89,-0.52l0.29,-0.35l-0.84,-0.59l-1.68,0.45l-0.24,-0.64l0.46,-3.7l-0.36,-1.51l0.5,-0.08l0.15,-1.05l-0.45,-1.57l-0.64,-0.36l0.07,-1.37l-0.3,-0.76l-0.77,-1.19l-0.61,-0.21l0.04,-0.31l0.43,-0.08l0.02,-0.5l-0.22,-1.02l-0.66,-0.35l0.45,-2.58l-0.49,-1.85ZM431.01,292.59l0.04,-0.02l0.01,0.07l-0.05,-0.05ZM454.76,352.74l-0.33,-0.41l0.26,-1.19l0.62,1.43l-0.04,0.91l-0.26,0.07l-0.25,-0.82ZM453.11,471.02l0.19,0.06l0.17,0.16l-0.28,-0.02l-0.08,-0.2ZM447.02,341.38l0.79,-0.49l0.19,0.79l-0.27,0.56l-0.72,-0.86ZM446.66,468.82l0.04,0.02l-0.03,0.04l-0.0,-0.0l-0.01,-0.06ZM446.04,340.0l0.11,-0.11l0.26,-0.0l-0.36,0.11ZM425.5,160.21l0.49,-2.25l1.81,-1.24l1.48,-0.31l0.54,-0.62l0.02,1.13l0.51,0.52l1.76,-0.4l0.66,-0.74l2.7,0.52l0.3,0.41l1.57,-0.09l0.37,0.57l1.03,0.19l0.47,-0.77l0.65,-0.21l1.66,1.12l0.5,1.38l-1.11,0.32l-0.29,0.39l-0.09,1.16l-0.63,1.11l-0.21,2.13l-1.31,-0.35l-0.34,0.35l-0.52,-0.45l-0.63,0.21l-1.22,-0.71l-8.83,-0.54l-1.35,-2.81ZM419.43,222.82l0.2,-1.65l0.75,-1.77l0.4,0.08l0.22,-0.29l-0.03,-0.66l2.31,-0.56l0.07,-0.68l0.55,-0.3l0.08,-0.54l-0.75,-0.37l0.27,-0.52l0.23,0.14l0.84,-0.46l0.24,-0.64l0.7,-0.46l-0.08,-0.71l-0.69,-0.49l0.23,-0.91l1.79,-1.27l0.28,0.25l0.54,-0.2l0.25,-0.76l0.83,0.15l1.57,-1.09l2.61,0.99l2.17,3.93l1.14,1.59l0.64,0.37l0.05,0.47l-0.45,-0.01l-0.44,0.54l1.78,1.21l-0.53,1.41l0.6,1.82l-0.25,0.98l-0.86,0.8l0.17,0.58l0.6,0.02l0.4,1.35l-0.24,4.58l-0.78,0.52l0.6,0.57l-0.13,0.64l-0.56,0.6l-3.39,0.25l-0.81,-0.49l-1.09,0.57l-1.25,-0.11l-0.52,-1.16l-1.47,-0.02l0.15,-1.12l-1.59,-1.93l-2.06,-0.33l-0.25,-0.62l-0.56,-0.15l-0.37,0.45l0.06,-0.28l-1.44,-1.78l0.6,-0.63l-0.38,-0.86l0.3,-0.92l-0.31,-0.32l-0.73,0.08l-0.28,0.41l-0.55,2.09l-0.32,-0.23l0.55,-1.11l-0.12,-0.78l-1.46,-0.23ZM423.67,213.82l-0.12,-0.05l0.05,-0.1l0.03,0.01l0.04,0.14ZM433.58,79.03l2.22,0.14l0.49,1.16l-0.62,0.41l-1.02,-0.43l-0.89,-0.87l-1.79,-0.23l1.6,-0.17ZM416.34,136.36l0.3,-0.35l1.26,0.04l0.49,-0.68l-0.1,-0.97l-0.82,-0.91l-0.38,-1.02l0.11,-2.87l0.9,-0.83l3.13,0.78l0.51,0.65l1.75,1.11l0.41,0.91l0.93,0.51l0.7,-0.02l0.95,1.65l0.71,0.19l-0.63,1.81l0.15,0.41l1.8,1.36l0.6,-0.03l0.79,-0.78l0.94,0.36l2.76,3.08l-0.08,1.03l-2.91,2.52l0.37,0.9l1.07,0.6l0.11,0.78l0.87,1.3l-0.07,0.95l-0.9,2.19l-1.57,-0.19l-0.44,0.55l-1.95,1.05l-2.63,0.71l-0.06,-0.7l-0.92,-0.34l-0.69,0.61l-0.65,0.08l-0.05,1.0l-0.78,0.91l-0.66,-0.34l-0.0,-1.2l0.75,-1.23l-0.18,-0.48l-1.67,-0.96l-0.47,-0.94l-1.21,-0.97l0.27,-0.99l3.77,0.54l0.55,-0.78l-0.01,-1.08l-2.74,-2.31l-0.91,0.02l-0.92,-0.39l-0.2,-1.24l-1.04,-0.99l0.29,-0.59l-0.28,-0.89l0.23,-0.89l-0.93,-0.57l-0.56,-0.87l-0.07,-1.19ZM432.67,201.01l0.19,2.46l0.62,2.14l-1.67,0.27l-0.48,-0.62l-0.05,-2.39l-0.41,-1.08l1.79,-0.78ZM430.12,501.31l0.96,-0.01l0.44,0.57l-0.36,0.42l-0.49,-0.85l-0.56,-0.13ZM423.39,233.69l0.63,-0.4l0.07,-0.68l0.56,-0.1l0.61,0.53l0.83,1.95l-0.18,0.21l-2.0,-0.89l-0.51,-0.62ZM417.6,212.21l-0.01,-0.76l1.61,-1.09l0.76,-0.04l-0.24,0.78l0.18,1.15l-1.18,0.75l0.15,0.81l-0.6,0.23l-0.36,-0.28l-0.31,-1.56ZM421.46,209.34l0.11,-1.05l1.96,1.73l-0.02,0.39l-0.55,0.26l-0.77,1.3l-0.81,-1.09l0.37,-1.08l-0.28,-0.46ZM421.74,297.82l0.27,-0.12l0.0,0.05l-0.27,0.08ZM422.35,296.54l-0.3,-0.28l0.46,-0.16l-0.15,0.44ZM389.32,351.88l0.51,0.4l1.44,0.15l1.01,-0.75l1.02,0.07l0.81,-0.73l0.32,-1.55l0.58,0.4l0.61,-0.56l0.91,-0.16l0.14,-1.27l-1.28,-2.05l0.07,-0.19l0.61,0.31l0.66,-0.29l-0.03,-0.64l-1.01,-0.85l0.13,-0.8l0.88,0.34l0.57,1.52l1.06,0.88l0.08,0.65l0.59,0.28l0.66,-0.31l0.18,-0.77l-2.25,-3.41l0.79,-2.88l0.5,-0.74l0.8,-0.26l0.81,-1.47l0.31,-0.08l1.31,0.89l0.27,1.08l1.42,0.84l0.46,1.11l-0.54,0.13l-0.38,0.69l0.66,1.71l0.24,0.2l0.6,-0.23l0.58,-1.54l0.87,2.19l1.32,1.95l0.85,0.26l0.47,0.8l1.2,0.59l2.15,2.52l0.23,0.86l-0.68,1.93l-0.02,2.57l0.77,0.85l0.75,-0.36l-0.16,-1.17l0.38,-2.07l0.53,2.02l-0.4,1.12l0.81,1.59l0.1,2.03l0.36,0.29l0.71,-0.21l0.18,0.86l0.49,0.36l0.8,-0.15l1.41,-1.22l0.64,0.63l-0.43,0.92l-1.47,1.44l-0.42,-0.7l-0.44,-0.09l-1.61,0.33l-0.77,2.34l-0.47,-0.21l-0.57,0.2l-2.45,2.86l-1.47,0.43l-2.91,-1.81l-1.27,-1.48l-0.32,-0.06l-0.46,0.51l0.24,0.89l-0.23,0.15l-1.46,-0.8l-0.66,0.12l-2.02,-2.6l-2.0,-1.12l-0.64,0.25l-0.51,-0.54l-0.37,-0.76l0.39,-1.34l-1.03,-1.12l-0.32,-0.11l-0.64,0.41l0.01,1.38l-0.33,0.51l-0.47,-0.99l-0.44,-0.24l-0.6,0.16l-0.84,-0.83l0.57,-1.76l-1.34,-1.01l-0.45,0.01l-0.37,0.63l-0.84,0.05l0.3,1.29l-0.62,0.2l-1.39,-1.1l-0.1,-1.13l-0.77,-1.73l1.01,-1.65l0.72,0.14l0.43,-0.42ZM414.79,346.68l0.44,-0.57l0.05,-0.57l0.3,-1.06l1.01,-0.52l0.15,0.42l0.6,0.06l1.43,1.8l-0.36,2.41l-0.8,1.03l-0.84,0.08l0.04,-0.75l0.51,-0.5l0.04,-2.23l-0.18,-0.91l-0.59,-0.67l-0.75,-0.06l-0.43,0.52l0.26,1.87l-0.55,1.17l-0.32,-1.5ZM415.07,348.28l-0.2,0.62l0.01,0.28l-0.08,-0.53l0.28,-0.37ZM411.44,98.32l0.33,-1.33l-0.06,-1.8l0.73,-1.46l1.24,-1.13l0.58,0.21l0.71,0.96l1.52,-0.38l0.76,1.21l0.4,2.99l-0.44,1.72l0.3,3.01l-0.67,1.82l-1.8,-1.46l0.27,-2.18l-1.22,-1.67l-2.43,0.15l-0.23,-0.65ZM374.78,271.19l0.15,-1.85l1.27,-1.98l0.55,-1.94l0.48,-0.66l2.36,-0.71l1.55,1.82l-0.34,0.83l0.39,1.03l0.68,0.99l0.56,0.12l0.22,1.9l0.49,0.66l-0.18,0.65l0.47,0.74l1.29,0.49l0.49,0.52l1.58,0.06l0.68,-0.72l0.01,-0.4l1.14,-0.03l1.2,0.51l1.05,-1.22l0.12,-1.68l1.82,-0.35l0.03,-0.82l0.38,-0.53l-0.5,-1.09l0.18,-0.82l-0.41,-0.96l0.14,-0.49l-0.57,-0.66l0.24,-0.76l-0.97,-0.3l-0.87,0.71l-0.41,-0.77l0.78,-0.72l0.06,-0.81l0.52,-0.73l0.47,0.0l0.27,0.73l1.42,1.47l1.64,-0.08l0.32,-0.32l-0.07,-0.62l-1.04,-0.25l-0.62,-0.65l-1.19,-2.97l-0.71,-0.9l-0.08,-0.74l-0.83,-1.12l0.58,-2.35l-1.21,-1.14l-0.87,0.1l0.29,-0.74l-0.33,-0.49l-0.85,-0.27l0.61,-2.28l0.62,-0.18l0.9,0.24l0.62,-0.74l1.09,0.32l1.89,1.7l0.23,0.85l0.69,0.01l0.58,-1.72l0.83,-0.9l0.31,0.43l1.15,0.47l1.58,2.23l-0.29,0.59l0.71,0.75l0.58,-0.42l0.18,-0.95l1.36,-0.09l0.52,0.63l0.91,-0.84l3.77,-0.59l1.14,-0.84l0.26,-0.54l0.62,0.59l1.21,-0.69l0.81,0.75l1.16,0.18l1.5,2.73l-0.26,1.97l-1.21,0.85l-0.35,0.67l-1.17,-0.78l-0.51,0.4l0.01,0.85l-0.96,-0.32l-0.62,1.66l0.6,1.01l1.15,-0.71l0.5,0.55l0.9,-0.05l-0.5,0.73l0.51,0.57l-0.16,0.49l-0.57,-0.08l-3.06,1.19l-3.76,4.71l-2.05,1.75l0.35,0.67l-0.23,2.58l0.36,0.6l0.59,-0.24l0.22,-0.91l0.95,-1.48l1.76,-1.18l1.87,0.33l2.34,1.76l-0.22,1.33l-0.72,0.08l-0.36,0.52l0.31,0.42l1.02,0.38l0.34,1.35l0.49,0.18l0.18,0.67l-1.14,1.5l-0.13,1.04l0.33,0.62l1.04,-0.04l1.12,-1.36l1.35,-0.67l0.38,-0.02l0.74,1.45l0.17,1.66l-0.21,0.46l0.63,1.16l0.09,1.39l-0.44,0.09l-0.52,0.87l-1.34,0.98l-1.3,-0.26l-0.36,0.62l1.76,1.4l0.5,2.45l-0.19,1.19l-2.27,0.61l-0.18,0.67l1.48,0.8l0.92,-0.26l-0.21,0.9l-0.63,-0.1l-1.17,1.13l0.45,0.76l1.41,-0.51l-0.71,1.85l-0.1,-0.74l-0.63,-0.17l-0.83,0.85l-1.07,0.25l-1.03,2.19l-0.76,0.59l-1.69,0.9l-1.31,-0.13l-0.61,-0.66l-1.31,-0.44l-1.27,0.17l-0.48,-0.37l-0.54,-1.24l1.3,-3.44l-0.79,-0.72l-0.29,0.11l-0.16,0.76l-1.24,1.51l-0.62,1.81l0.09,0.41l0.55,0.21l0.08,1.18l1.9,2.92l-1.02,1.91l-2.48,2.43l-0.91,-0.15l-0.38,0.34l-1.19,-2.37l-0.67,-0.1l-1.09,0.67l-0.7,-3.87l0.18,-1.2l-1.18,-0.97l-0.52,-3.21l-0.82,-1.07l-0.16,-1.16l-1.32,-0.51l-0.32,-0.47l-1.7,-3.7l0.07,-1.02l-0.42,-0.23l-0.03,-0.65l-0.85,-1.42l-1.04,-0.68l-0.87,-0.1l-0.5,0.37l0.07,-1.82l-1.28,-1.57l-0.91,0.21l-0.89,0.94l-0.86,-0.95l-1.09,-0.07l-0.38,-0.95l0.82,-0.69l-0.35,-0.7l-0.46,-0.11l0.0,-1.42l-1.24,-1.46l-1.58,-1.23l-1.76,-3.24ZM390.55,268.8l-0.03,-0.05l0.05,-0.05l0.03,0.02l-0.05,0.08ZM391.26,258.16l-0.13,1.15l-2.76,1.04l-0.5,-0.37l-0.53,-1.17l-1.27,-0.83l-0.04,-0.89l-0.77,-0.56l-0.6,-1.14l0.9,-1.31l1.09,-0.01l0.35,-0.89l1.65,0.33l1.12,3.12l0.65,0.37l0.36,0.93l0.47,0.23ZM395.86,246.94l-1.15,1.05l-0.61,-0.19l-0.16,-0.44l0.27,-0.56l0.84,-0.53l1.19,0.17l-0.38,0.51ZM383.77,205.23l0.5,0.09l0.47,-0.44l-0.1,-1.22l0.74,-0.18l0.18,-0.7l1.21,0.25l1.04,0.8l0.89,-0.46l-1.01,-1.33l0.62,-0.42l0.02,-0.79l-0.44,-0.25l-0.96,0.16l0.59,-1.18l2.2,-0.44l0.19,0.67l1.47,1.59l0.06,1.16l1.11,0.73l0.42,-0.02l0.74,-0.76l1.12,-0.16l0.51,-0.52l0.08,-0.45l-0.4,-0.23l-2.14,0.59l-0.0,-1.51l-0.29,-0.43l-0.65,-0.12l-0.09,-1.13l1.71,-1.64l0.21,-0.41l-0.29,-0.55l-2.37,0.42l-0.43,-0.71l-0.17,-1.33l0.32,-0.87l0.79,-1.06l1.24,-0.51l1.04,-0.92l0.09,-0.48l-0.44,-0.21l-2.22,0.5l-0.43,-0.28l-1.14,0.02l0.38,-0.39l0.29,-1.99l0.64,-0.46l-0.4,-0.93l1.17,-0.93l1.9,0.7l0.46,0.6l1.07,1.88l-0.53,2.31l1.53,1.03l0.93,1.78l-0.66,0.57l-0.02,0.46l2.18,1.08l1.1,2.81l-0.34,0.81l0.87,0.32l0.08,0.68l0.35,0.29l0.91,-0.75l2.34,-1.06l0.37,-0.86l-0.68,-0.41l-1.87,0.53l0.14,-0.38l-1.03,-1.91l-0.27,-1.66l0.3,-0.33l2.01,1.03l1.72,-0.63l0.33,-0.78l-0.43,-0.19l-1.45,0.33l-1.45,-1.62l-1.17,0.14l-1.42,-1.07l0.11,-0.5l3.22,0.42l0.33,-0.21l-0.05,-0.7l-0.36,-0.16l0.13,-0.62l-0.82,-0.32l-0.61,-1.44l-0.45,0.17l-0.51,-0.44l-1.8,-0.04l-1.23,-2.57l1.37,-0.44l0.53,-1.09l2.08,-1.34l2.12,1.16l0.39,0.02l0.59,-0.55l0.16,0.01l-0.2,0.83l0.76,0.32l1.32,2.38l-0.15,1.12l0.46,0.94l0.63,0.43l0.54,-0.33l-0.22,-0.93l0.86,0.61l0.69,-0.38l-0.07,-1.17l-0.76,-1.67l0.23,-1.16l0.36,-0.21l0.41,0.93l0.62,0.04l0.27,-0.55l0.75,-0.03l0.34,-0.33l0.26,1.46l1.67,1.11l1.4,0.51l0.5,0.54l-0.07,1.37l-0.88,2.32l0.33,1.55l0.98,1.91l-0.05,1.08l-1.22,3.87l0.26,2.81l-0.65,1.32l-1.67,1.18l0.25,0.77l2.72,1.22l0.11,0.51l-0.58,3.27l-1.37,-1.71l-2.28,2.1l-0.15,1.14l1.02,0.43l-1.01,0.13l-0.97,2.26l0.38,1.16l1.4,0.73l0.43,0.59l-0.34,0.65l0.12,0.42l0.54,0.28l0.41,0.74l-0.73,0.28l-0.94,-1.01l0.01,-1.37l-0.71,-0.43l-0.87,1.75l0.3,0.88l0.67,0.69l-0.02,1.48l-4.23,0.38l0.0,-0.4l-0.46,-0.22l-0.03,-0.96l-0.5,-0.29l-0.71,0.3l-0.14,1.04l-1.93,0.15l0.86,-2.32l-0.15,-0.74l-0.84,0.16l-1.17,1.92l-0.24,1.09l-4.37,-1.23l-0.14,-0.34l0.29,-2.82l-0.76,-1.01l0.47,-0.31l2.3,0.38l0.55,-0.3l0.08,-0.47l-1.72,-0.92l0.36,-0.69l-0.45,-0.55l-1.4,0.3l-0.45,-0.63l1.35,-0.74l0.01,-0.51l-0.56,-0.86l3.07,-0.16l0.54,-0.85l-0.09,-0.7l-0.56,-0.21l1.3,-0.09l0.3,-0.63l-0.2,-0.21l0.89,-0.23l0.48,-0.64l-0.75,-0.88l4.91,-0.17l0.58,-0.46l-0.25,-0.89l-3.61,0.21l-0.41,-0.32l-5.51,0.71l-0.52,-0.2l-3.1,0.47l-1.04,0.48l-1.31,-0.58l-3.7,0.92l-0.9,-0.24l-1.18,0.17l-1.18,0.6l-0.43,-0.81l0.21,-0.63l-0.24,-0.45ZM414.36,266.83l0.45,0.33l0.47,-0.16l0.16,1.43l-0.9,1.89l-1.18,0.2l-0.67,-1.27l-0.07,-2.15l0.62,-1.15l1.01,-0.67l0.38,0.38l-0.27,1.17ZM414.02,274.95l-0.9,-0.23l-0.15,-0.37l0.49,-0.5l0.1,-0.82l0.81,-0.84l-0.26,0.71l0.39,1.28l-0.49,0.75ZM411.43,235.03l-0.36,-0.31l0.19,-0.46l0.86,-0.66l0.9,-1.59l0.33,0.01l0.4,0.46l-0.71,1.5l-0.64,0.12l-0.97,0.93ZM410.06,345.07l1.51,0.05l0.61,0.71l0.95,-0.39l0.17,1.41l-0.45,1.89l-0.93,-1.78l-1.28,-0.8l-0.58,-1.09ZM382.97,135.74l-0.59,-2.3l0.01,-1.42l0.39,-0.64l0.86,-0.74l0.61,0.01l2.71,2.01l1.67,0.22l0.66,0.66l0.55,0.07l0.67,-0.79l0.05,-1.1l0.58,-0.39l0.01,-1.18l-0.45,-0.41l-2.55,-0.27l0.4,-0.4l2.02,0.24l0.44,-0.45l-0.09,-0.73l0.84,-0.11l0.34,-0.94l-0.42,-1.23l-0.52,-0.32l-0.83,0.28l-0.01,-0.67l-0.5,-0.27l-0.61,-0.22l-0.47,0.23l-0.37,0.97l-0.54,-0.55l2.05,-1.88l0.29,-0.74l-0.83,-1.4l-0.08,-1.1l-0.98,-0.62l-1.67,0.95l-1.01,2.32l-1.24,1.23l-0.45,0.0l0.1,-0.62l0.88,-1.09l1.46,-2.92l-0.0,-0.8l-1.31,-1.09l-2.53,0.6l-0.45,-0.29l0.45,-3.63l0.53,-1.4l0.88,-1.2l-0.07,-0.85l1.1,0.94l6.94,-0.52l1.44,1.75l0.65,0.01l0.49,0.41l0.69,1.58l-0.09,1.48l1.06,2.6l-0.57,2.15l-0.72,1.05l0.33,0.63l0.61,-0.07l-0.36,0.76l0.38,1.11l0.7,-0.12l0.87,-1.41l0.25,-1.95l1.49,-0.62l0.89,-0.97l0.93,0.3l1.44,2.91l1.25,0.73l-1.32,2.83l0.06,0.88l0.78,0.34l0.19,0.56l0.46,0.26l1.07,-0.57l0.72,0.1l1.01,-0.62l0.22,1.34l1.35,1.15l0.29,0.76l-0.77,0.86l-0.14,0.89l0.78,0.56l0.5,-0.14l0.4,0.76l0.72,0.04l-0.64,1.05l0.21,0.33l-0.5,1.14l-1.11,1.04l0.43,1.71l-0.46,1.99l0.47,0.65l0.88,0.07l0.33,1.97l0.66,0.82l1.4,3.18l-0.19,1.25l-0.82,1.09l0.24,1.78l-0.76,0.83l-3.18,0.26l-0.72,0.75l-3.03,-2.19l0.06,-0.78l-0.78,-2.96l0.56,-1.61l-1.09,-1.69l-0.14,-1.87l-0.46,-0.22l-0.92,0.33l-0.96,-1.37l-3.26,-1.74l-2.35,0.82l-0.76,-0.98l0.11,-0.74l0.74,-0.74l-0.29,-1.0l-3.53,0.22l-0.99,0.46l-0.9,0.01l-1.38,0.96l-0.37,0.67l-2.15,-1.04l-1.32,-2.23ZM402.3,245.78l0.83,-0.17l0.64,-0.53l1.52,0.08l2.32,-1.24l2.75,-0.09l-0.31,1.26l-0.78,1.12l-1.31,0.76l-0.9,1.24l-2.94,0.62l-0.22,-0.46l-0.67,-0.08l-0.2,0.26l-0.48,-0.32l-2.29,-0.19l-0.71,-0.52l0.06,-0.4l1.73,-0.52l0.87,0.11l0.12,-0.96ZM404.64,335.96l0.28,0.24l-0.19,0.49l-0.18,-0.17l0.08,-0.57ZM400.12,384.21l0.18,-0.59l0.82,-0.41l-0.03,0.27l-0.97,0.73ZM393.8,182.29l0.81,-0.68l1.53,-0.23l1.01,-0.86l0.46,-0.91l1.76,-0.32l1.38,0.5l-5.02,2.71l-0.88,0.31l-1.05,-0.51ZM393.1,153.37l0.12,-0.43l-0.41,-0.98l0.08,-1.05l0.43,-0.8l3.57,0.04l2.26,1.78l1.09,2.26l-2.23,-0.06l-0.62,-0.32l-1.53,1.08l-1.75,-0.58l-1.01,-0.95ZM390.55,142.8l-0.47,-0.22l0.1,-0.79l1.29,-1.78l0.47,-0.09l0.13,1.23l-1.53,1.65ZM381.06,200.78l0.49,-0.39l0.1,-0.71l1.3,-0.07l-0.34,-0.8l0.48,-0.76l4.85,-1.31l0.73,0.88l-2.31,0.72l-0.98,2.08l-0.55,0.45l-0.5,-0.27l-0.34,0.28l-0.66,-0.1l-0.22,0.31l-2.06,-0.3ZM378.25,196.4l1.13,-0.61l1.41,0.02l2.27,-1.2l3.84,-0.41l0.31,0.33l-0.14,0.8l-7.87,1.78l-0.94,-0.39l-0.01,-0.32ZM376.08,190.42l0.51,-0.09l0.37,-0.74l0.96,0.03l1.65,-0.6l1.35,0.13l5.02,-0.61l0.58,1.84l-0.32,1.29l-0.74,0.97l-0.9,0.66l-2.34,0.44l-3.2,-0.16l-0.2,-0.51l-2.69,-0.94l-0.05,-1.71ZM383.08,318.64l0.75,-0.08l0.69,0.85l-0.37,0.89l0.52,0.79l0.07,0.8l-0.72,-0.23l-1.1,-1.19l0.16,-1.82ZM376.48,180.64l0.14,-0.82l1.71,-1.08l1.59,0.1l0.19,0.43l-0.93,1.4l0.03,0.52l0.66,0.24l0.6,-0.21l0.59,-0.72l0.65,1.08l0.05,1.03l0.98,0.89l0.62,0.1l0.21,0.64l0.85,0.33l0.05,0.64l-1.9,1.61l-2.86,-0.1l-2.5,-0.58l0.38,-0.74l-0.37,-0.87l0.38,-1.61l-0.3,-0.9l-0.57,-0.15l0.14,-0.53l-0.41,-0.71ZM382.87,351.88l0.5,1.7l-0.24,1.27l-0.56,-0.41l-0.39,-0.96l0.19,-1.09l0.5,-0.51ZM378.76,357.87l0.32,-2.26l0.42,-0.71l-0.17,-1.01l0.44,-0.58l0.86,0.43l0.19,1.04l0.98,1.16l-0.5,1.2l0.11,0.66l-0.35,0.55l-0.68,0.19l-0.41,0.77l-0.05,-1.51l-0.61,-0.22l-0.56,0.3ZM380.85,368.37l0.1,-0.05l-0.02,0.19l-0.08,-0.14ZM374.14,155.27l0.21,-2.42l-0.8,-2.01l0.8,-0.65l0.99,0.44l0.58,0.86l1.89,4.93l0.03,1.06l-0.4,0.64l-0.16,1.45l1.37,0.18l1.17,2.66l-0.18,0.71l0.34,0.43l-0.01,0.7l-0.85,1.86l-0.9,0.06l-0.5,0.4l-0.78,-1.62l-1.22,-0.12l0.13,-0.76l-0.71,-1.63l0.21,-0.27l-0.64,-0.77l0.21,-1.55l-0.35,-0.63l0.01,-1.53l-0.33,-0.43l0.58,-1.2l-0.67,-0.8ZM262.47,316.27l0.34,-0.22l1.12,0.46l0.61,-0.39l-1.96,-6.32l0.67,-1.78l29.24,8.27l-0.78,3.03l0.33,0.57l1.6,0.39l0.47,-0.27l1.21,0.25l0.57,-0.32l0.28,-0.67l-0.55,-0.7l0.35,-1.4l17.48,4.16l0.48,-0.3l11.63,-52.12l1.02,0.72l0.45,-0.55l-0.42,-0.8l0.69,-0.71l-0.54,-1.4l-0.24,-1.55l0.18,-0.81l0.81,0.54l0.91,-1.42l-0.36,-0.62l-0.9,-0.56l0.84,-3.76l0.49,0.81l0.68,-0.14l0.16,0.09l-0.66,0.45l-0.02,0.46l1.77,2.72l0.22,0.8l1.31,0.03l-0.22,0.72l0.89,1.23l-0.65,1.01l-0.12,1.31l1.49,0.42l0.49,-0.38l0.61,0.57l-0.0,1.22l-1.19,3.5l0.19,3.2l-0.22,1.41l0.7,0.67l-0.61,2.61l0.7,0.59l-0.36,0.57l0.2,0.65l0.53,-0.06l-0.76,0.93l0.12,1.0l-0.43,0.87l0.57,1.07l-0.58,0.75l0.71,0.62l0.63,-0.14l0.24,1.97l0.89,0.76l0.73,-0.02l0.66,-0.57l-0.5,-1.35l0.11,-0.47l0.57,0.49l0.46,-0.1l0.95,-1.25l2.02,-0.19l0.34,-0.55l-0.93,-1.07l0.96,-0.16l0.34,-0.89l-0.87,-0.81l-0.05,-1.22l-1.01,-0.89l-0.03,-1.0l0.38,-0.81l-0.2,-0.86l-0.61,-0.33l0.22,-2.55l0.4,-0.02l0.4,-0.69l-0.45,-1.3l0.23,-0.62l-0.26,-0.84l0.67,-0.65l-0.92,-1.26l0.65,-0.41l0.21,-1.11l-0.5,-1.17l0.21,-1.86l-0.25,-1.13l0.28,-1.02l-0.12,-1.87l0.37,-0.58l-0.2,-1.1l0.32,-0.72l-0.25,-0.96l0.41,-0.63l-0.51,-1.77l0.88,-1.09l1.54,0.68l0.58,-0.44l-1.25,-2.02l0.07,-0.53l0.29,0.08l0.47,-0.7l0.88,0.63l0.88,0.17l1.07,1.06l1.44,2.45l0.78,0.6l0.86,-0.52l-0.4,-1.36l0.32,-0.64l1.15,-0.22l0.52,1.8l1.16,0.69l1.15,3.08l1.46,1.27l0.95,-0.04l-0.08,0.98l1.0,1.42l0.39,1.62l-0.25,0.32l0.71,0.92l0.14,0.68l-0.45,-0.14l-0.38,0.59l0.3,0.98l-0.17,0.88l0.84,1.07l-0.49,0.76l-0.05,1.17l0.44,1.05l-0.06,0.9l-0.51,0.11l-0.15,0.45l1.27,6.09l-0.75,1.49l-0.03,0.87l0.63,1.99l-0.0,3.18l0.86,1.04l1.18,5.51l-0.52,1.49l0.4,1.04l-0.28,0.91l0.13,0.89l-0.7,-0.16l-0.58,0.46l-0.33,3.04l-1.42,1.39l-0.22,0.73l0.27,1.13l2.57,3.54l0.53,3.8l1.04,0.58l1.58,3.35l1.99,0.55l0.86,1.98l1.46,0.57l0.59,-0.41l1.2,0.86l1.63,1.49l1.31,2.18l0.55,0.1l1.0,1.5l1.19,0.26l0.48,-0.79l0.39,0.02l0.35,0.54l-0.46,0.82l-0.08,1.02l0.58,1.75l1.49,-0.09l0.39,-0.62l0.4,0.54l0.48,0.08l1.21,-0.95l-0.15,1.9l0.29,1.38l-0.44,2.07l0.43,0.9l-0.09,1.65l-0.72,1.31l-0.15,1.26l-1.32,-0.65l-0.67,0.31l-0.66,-3.2l0.48,-1.61l-0.57,-0.42l-0.55,0.52l-1.63,3.9l-0.92,-1.31l-0.6,-0.05l-0.31,-2.12l-0.58,-0.38l-0.43,0.24l-0.04,-1.44l-0.73,-0.32l-0.41,0.42l-0.06,0.89l-0.59,0.26l-0.22,0.59l-1.04,0.38l-0.53,0.69l-0.48,-0.51l-0.55,0.22l0.26,1.51l0.78,0.74l-0.26,1.54l-0.39,0.73l-0.94,-0.2l-0.6,0.2l-2.17,-1.88l-0.77,-1.75l-0.7,-0.11l-0.5,-0.54l-0.75,0.27l-0.57,1.77l0.21,0.51l1.76,1.56l0.29,2.37l0.48,0.31l0.4,-0.29l0.06,0.36l-0.47,1.0l-0.33,2.26l-1.53,1.25l-0.23,1.27l0.19,0.67l0.83,0.07l3.22,-5.13l2.26,-0.4l0.69,-1.2l1.16,-0.27l1.41,0.46l0.57,1.19l-0.6,0.74l-0.6,-0.16l-0.61,0.35l-0.19,0.91l0.88,0.86l-0.73,-0.42l-0.47,0.19l-0.23,1.51l0.79,1.13l0.6,0.1l1.0,-1.4l0.8,1.26l-0.15,1.22l-0.9,1.48l0.22,1.0l-0.75,0.25l-0.33,-0.59l-0.49,-0.14l-0.9,0.89l-0.99,0.11l-0.83,-0.36l-0.29,0.99l-0.81,0.73l-0.57,-0.08l-0.73,-0.79l-0.54,0.06l-0.25,0.47l0.21,0.79l-1.58,0.48l-1.41,-1.13l-1.54,0.16l-0.46,0.75l-0.83,-1.04l-0.68,0.11l-2.23,-1.32l-1.04,-0.01l-0.64,-0.67l-0.13,-1.19l-0.49,-0.23l-0.48,0.33l-1.02,-0.36l-1.12,1.34l-3.67,-1.26l-0.44,-0.87l0.42,-0.51l0.84,0.21l0.39,-0.59l0.89,-0.46l0.07,-1.33l-1.14,-0.77l-0.63,0.07l-0.18,0.42l-1.9,-0.84l-0.64,-1.26l-2.42,-0.91l-0.98,0.41l-0.62,-0.34l-0.85,0.03l-1.13,-0.9l0.18,-0.56l1.13,-0.89l0.18,-2.67l-1.17,-2.34l-0.63,-0.51l-0.57,0.07l-1.24,1.02l-0.36,1.29l-1.64,0.17l-0.44,0.87l0.03,2.26l-1.95,1.24l-1.64,2.04l-1.04,0.42l-3.64,0.38l-1.98,-0.24l-0.74,-0.56l-1.6,-0.22l-0.57,0.31l-0.2,1.17l-3.95,2.3l-2.46,0.08l-2.36,0.7l-4.52,-0.72l-1.13,0.66l-0.42,-0.66l-1.03,-0.4l-0.99,0.46l-0.8,-0.06l-0.15,-0.53l-0.49,-0.28l-1.77,0.25l-2.42,-0.49l-0.27,0.61l0.33,0.46l-0.96,-0.57l-5.64,-0.97l-0.98,0.22l-1.61,-0.49l-1.27,0.6l-1.79,-0.57l0.13,-0.55l-0.32,-0.87l-1.54,-1.6l-0.33,-1.07l0.21,-1.24l-0.95,-2.35l0.51,-0.81l-0.15,-1.07l1.06,-1.01l0.32,-1.61l0.35,-0.3l-0.49,-1.01l0.3,-1.25l-0.2,-0.28l1.27,0.35l-0.11,-0.95l-2.26,-1.51l-0.3,-0.67l-1.49,-0.29l-0.78,-0.94l-1.12,-0.4l-3.35,-0.19l-0.29,-0.58l-0.83,-0.38l-1.01,0.57l-0.4,-0.07l-5.16,-2.72l-0.36,-0.87l-2.9,-2.59l-0.34,-0.9l0.7,-0.64l-0.02,-1.81l-1.35,-0.46l-0.43,-0.47ZM296.56,348.77l0.63,0.22l-0.45,-0.1l-0.19,-0.12ZM366.43,318.73l-0.64,-0.33l-0.41,-0.68l0.04,-1.63l1.15,1.7l-0.13,0.94ZM282.87,346.74l-0.62,-0.06l-0.07,-0.11l0.28,-0.07l0.41,0.24ZM375.09,341.57l0.15,-0.39l0.23,0.67l0.99,0.31l0.56,1.07l-0.52,0.08l-0.53,1.04l-0.26,-0.31l0.57,-0.88l-0.05,-0.43l-1.15,-1.16ZM370.58,212.41l0.63,-0.81l-0.25,-0.62l0.65,-1.25l1.74,-1.62l1.28,0.15l1.48,1.77l-0.02,2.98l0.67,1.48l-1.81,1.97l-2.25,0.64l-1.81,-0.94l-1.43,-1.88l1.13,-1.86ZM372.31,349.42l-0.69,-0.62l0.14,-0.26l0.41,-0.04l0.14,0.92ZM365.73,358.82l1.94,-1.29l0.43,-1.11l1.72,1.01l-0.26,2.28l-0.91,-0.23l-0.19,1.24l-2.73,-1.91ZM369.18,337.84l-0.03,-0.16l0.09,-0.51l-0.05,0.67ZM337.82,214.18l3.33,-14.86l4.92,2.08l0.83,0.69l0.52,-0.53l-0.01,-1.39l0.62,-0.25l-0.09,-0.68l0.49,-0.66l-0.15,-1.21l0.44,-0.26l-0.04,-0.72l-0.58,-0.34l-0.72,-1.28l-1.49,-0.97l0.19,-0.28l-0.28,-0.37l-1.02,-0.32l0.17,-1.39l-0.27,-0.41l-0.58,-0.18l-0.95,0.31l-0.1,-0.24l0.12,-0.51l1.89,-0.36l3.0,-2.09l-0.44,-0.87l0.4,-0.22l0.13,-0.66l-0.81,-1.27l-0.09,-0.89l-0.7,-0.39l0.04,-0.55l-0.83,-0.78l-0.79,0.02l1.18,-5.28l1.03,-0.03l0.84,-0.79l0.07,-0.44l-0.35,-0.41l0.3,-0.53l0.72,-0.25l0.05,-0.45l0.7,-0.4l0.77,-1.99l0.91,-0.57l0.33,-0.78l0.74,-0.49l0.74,0.03l0.54,0.4l0.98,-0.45l-0.22,1.63l1.01,0.5l-0.04,1.06l-0.74,0.83l-0.6,-0.1l-0.57,0.55l0.04,0.99l0.62,1.21l-0.62,0.59l0.16,1.74l-0.64,0.93l0.44,0.66l1.12,0.41l0.69,2.61l-0.87,0.53l-0.03,0.6l0.38,0.45l-1.58,0.69l-0.77,1.54l0.06,0.6l-0.65,0.89l0.43,0.58l3.42,0.05l0.8,1.47l-0.08,0.42l-0.97,0.79l-0.07,0.52l-0.72,0.11l-0.88,1.26l-0.45,0.83l0.12,0.99l0.67,0.27l0.49,-0.25l1.48,-1.92l1.96,-0.34l0.7,0.21l0.47,0.48l-0.35,1.03l0.36,1.12l-0.23,0.63l0.31,0.56l-0.13,2.25l0.32,0.54l0.6,-0.22l0.57,-2.72l1.25,-0.28l0.36,-0.61l-1.34,-0.99l0.58,-2.78l1.65,-1.78l1.33,0.24l2.88,2.18l0.61,1.29l0.46,1.92l-0.43,4.97l-0.94,1.77l-1.11,0.48l-0.57,0.8l-0.04,0.53l0.65,0.45l-0.78,0.99l0.13,1.24l-1.86,2.23l-0.44,0.99l0.28,0.91l-0.23,0.57l-0.69,0.17l-0.65,0.83l0.24,0.93l-4.44,0.4l-1.89,1.54l-1.09,-0.14l-1.52,-0.82l-0.69,-0.88l0.37,-2.12l-0.6,-1.0l-0.56,0.23l-0.2,1.4l-0.41,0.27l-0.57,-0.29l-0.45,0.3l-0.02,1.12l-0.37,0.42l-2.11,0.0l-0.5,-0.85l0.43,-0.31l-0.27,-1.67l-0.39,-0.58l-1.31,-0.64l-0.96,0.5l-0.65,1.08l-2.33,0.72l-1.36,1.53l-2.16,-0.53ZM353.07,252.53l-0.18,-0.64l-1.02,-0.65l-0.84,-1.21l-1.37,-0.46l3.4,-4.11l5.53,0.43l1.12,-0.43l1.11,0.01l1.15,0.48l1.47,2.13l0.1,0.62l1.03,0.62l0.77,1.33l-0.89,2.33l-0.41,2.7l-1.52,2.31l-0.12,0.8l-1.88,1.94l-0.41,1.43l-1.39,1.24l-0.29,-0.36l-0.77,0.15l-0.06,1.2l-0.11,-1.26l-2.04,-4.53l0.12,-0.68l-0.91,-0.66l0.22,-0.81l-0.61,-1.05l0.34,-0.68l-1.54,-2.22ZM356.38,131.25l0.61,-2.73l1.07,-4.77l0.81,1.78l0.66,0.28l0.31,0.67l0.28,1.9l-1.49,3.66l-1.82,0.06l-0.43,-0.84ZM354.22,140.9l0.72,-3.2l0.99,0.25l0.23,0.79l-0.87,1.71l-1.07,0.45ZM344.51,358.33l0.94,-0.21l1.34,0.38l0.66,0.56l0.64,1.22l-0.21,1.16l-1.07,0.09l-0.69,-0.57l-0.82,-0.81l-0.78,-1.83ZM343.45,246.05l0.34,-0.35l0.86,-0.03l1.16,0.72l-2.21,0.24l-0.15,-0.58ZM319.66,383.43l0.58,1.04l0.11,0.1l-0.52,-0.1l-0.16,-1.05ZM317.77,367.13l0.19,-0.56l0.63,-0.35l-0.4,1.1l-0.43,-0.19ZM317.48,374.25l-0.13,-0.78l0.25,-1.06l0.35,1.97l-0.46,-0.13ZM317.12,377.88l0.04,-0.85l0.65,-0.18l-0.58,1.35l-0.12,-0.32ZM314.41,374.19l0.57,0.24l-0.14,0.63l-0.37,0.19l-0.06,-1.06ZM311.1,365.02l0.9,-0.17l0.05,1.27l-0.95,-1.11ZM308.9,362.27l0.31,0.24l0.02,0.64l-0.44,-0.71l0.11,-0.16ZM305.06,360.24l0.09,-0.06l-0.03,0.05l-0.06,0.02ZM299.0,350.45l1.55,-0.48l0.33,0.64l-1.15,0.07l-0.73,-0.23ZM292.58,354.28l-0.15,-0.28l0.45,-0.29l-0.16,0.44l-0.15,0.13Z", "name": "Nunavut"}, "CA-NS": {"path": "M806.14,740.09l0.6,-1.1l-0.19,-1.16l1.53,-2.49l0.42,-2.61l0.6,-1.53l-0.03,-2.56l0.54,-3.5l1.51,-3.01l0.15,-1.97l0.16,-0.35l1.13,0.17l0.58,-0.23l-0.36,1.59l1.07,0.72l1.38,-0.48l0.25,0.69l0.19,1.88l-0.37,0.37l0.03,0.59l0.78,0.69l-0.34,1.48l0.1,1.93l-0.48,4.15l0.66,0.61l-0.35,0.83l-0.42,0.47l-0.53,0.06l-0.41,0.74l-0.44,0.35l-0.86,0.06l-0.71,1.87l-1.26,1.0l-0.2,0.83l0.56,0.34l0.4,-0.18l-0.21,0.92l0.5,0.44l0.95,-0.7l0.24,0.03l-1.43,1.75l0.15,1.53l1.35,0.03l1.28,-1.57l0.61,-0.21l0.72,0.25l-0.26,0.86l-0.98,0.93l-0.57,0.09l-0.98,1.27l-1.15,-0.45l-1.0,1.26l-1.85,-1.48l-1.42,-2.29l-0.27,-1.03l-1.36,-1.87ZM816.61,744.13l1.05,-1.41l-0.51,-1.54l2.33,-3.96l0.31,-1.02l-0.19,-0.41l-0.45,0.02l-2.83,2.93l-0.59,-0.45l2.36,-3.35l0.82,-2.08l0.74,-0.69l-0.04,-0.59l-0.69,-0.2l-1.08,0.73l-0.44,1.08l0.12,-0.58l0.95,-1.72l0.31,-0.23l1.11,0.83l0.0,0.01l-0.5,1.38l0.14,0.46l0.77,-0.36l0.46,0.32l0.48,-0.32l-0.25,-1.23l0.25,-0.6l0.28,-0.06l-0.09,0.39l0.46,0.2l1.39,-0.32l0.44,0.58l0.8,-0.47l0.17,1.41l-0.68,0.84l0.12,0.42l0.59,0.46l1.08,-0.34l0.3,0.34l-1.47,1.09l-0.16,0.62l-1.5,0.75l-0.17,0.84l0.9,0.39l-0.87,0.89l-0.13,0.94l-1.5,1.69l-1.05,0.32l-1.77,1.89l-1.76,0.09ZM816.46,732.7l0.05,-0.34l0.15,-0.22l-0.19,0.56ZM816.79,731.83l0.24,-0.63l0.0,-0.0l-0.04,0.32l-0.2,0.32ZM812.99,739.44l0.88,-1.79l0.6,-0.25l0.0,1.22l-0.51,0.54l-0.97,0.27ZM759.65,789.33l0.16,-4.68l1.0,-2.32l1.2,-1.76l-0.25,-0.79l-0.76,-0.03l0.79,-1.21l0.55,1.16l1.15,-0.48l2.56,-4.02l-0.39,-0.25l-0.53,0.16l-2.38,2.22l8.34,-9.82l1.48,-1.36l2.68,-1.68l0.64,-0.83l0.18,-0.86l0.15,2.95l0.79,0.75l0.56,-0.3l0.09,-0.56l0.83,0.28l1.02,0.66l0.21,0.95l0.41,0.32l0.85,-0.63l-0.2,-1.37l-1.52,-0.96l0.48,-1.27l2.17,-1.72l0.87,-0.31l0.38,-0.71l0.77,-0.16l0.09,-0.31l2.0,-0.77l0.57,0.44l0.62,-0.38l0.08,-0.73l0.87,-0.87l-0.76,-0.39l-2.62,0.32l-2.84,0.85l-0.61,0.66l-0.49,-0.31l-1.16,0.39l-1.2,-0.1l-2.3,0.94l-1.0,0.8l-0.82,-0.25l-1.64,0.19l-1.2,0.97l-0.22,1.24l-1.05,-0.26l-0.99,0.29l0.05,-0.87l0.87,-0.88l-0.09,-0.5l1.3,-1.3l0.28,-0.94l1.72,-2.26l0.02,-1.13l0.39,-0.53l0.26,0.4l0.97,-0.59l0.19,-0.62l-0.26,-0.25l-0.04,-1.31l0.51,-1.57l1.15,-0.65l0.29,-0.58l1.43,0.15l1.08,0.9l0.83,0.12l0.3,0.65l0.75,-0.22l0.73,0.19l0.2,-0.77l1.23,-0.68l-0.11,1.13l1.96,-0.28l-0.19,0.41l0.35,0.35l1.32,0.28l0.39,-0.54l0.8,-0.03l1.26,-0.83l0.38,-0.58l-0.15,-0.29l4.41,-0.24l-0.95,0.78l-0.21,0.93l0.34,0.38l0.28,-0.17l0.75,0.36l0.21,-0.58l0.48,0.15l0.41,-0.34l-0.28,-0.68l0.28,-0.19l1.02,0.2l0.3,0.67l0.82,-0.21l1.04,-1.74l0.93,-0.59l1.93,-2.56l0.71,-1.41l1.1,2.31l0.51,0.48l2.23,0.56l1.34,-0.18l0.72,-1.54l0.48,-0.23l1.15,0.56l1.2,1.12l1.39,0.45l-0.06,0.51l-0.81,0.8l-0.41,0.03l-0.92,1.13l0.04,0.62l0.47,0.31l5.15,-1.32l0.05,1.13l-0.76,-0.45l-0.75,0.77l-1.09,0.18l-0.75,1.02l-0.03,0.9l-1.95,0.93l-1.75,0.09l0.05,0.82l0.49,0.37l-1.67,0.55l-0.41,1.09l-1.6,0.89l-0.18,1.04l-2.05,0.97l-0.63,0.9l-1.1,0.64l-0.16,0.64l-0.47,-0.39l-0.48,0.9l-0.61,0.33l-0.02,0.42l-2.39,1.6l-0.16,1.04l-0.99,0.14l-0.47,0.43l-0.41,-0.68l-1.07,0.28l-0.59,-0.19l-0.35,0.33l0.23,0.92l-0.47,0.47l-0.85,-0.13l0.17,1.15l-0.23,0.62l-0.81,0.12l0.04,-0.31l-0.57,-0.29l-0.81,0.54l0.56,0.97l-2.57,-1.19l-0.58,0.05l-0.2,0.6l0.63,0.75l1.0,0.32l1.01,2.07l-0.36,-0.1l-1.55,0.84l-0.83,-0.89l-1.51,0.95l-0.47,-1.54l0.14,-1.54l-0.33,-0.32l-2.22,1.84l0.21,1.14l0.74,0.7l-0.28,0.68l-0.39,-0.94l-0.88,-0.46l-0.75,0.3l-0.14,0.61l-0.71,-0.17l-0.42,0.24l0.33,1.73l-0.39,0.59l0.87,0.89l-0.35,0.59l0.25,0.46l-1.07,-0.03l0.05,0.5l1.06,0.58l-1.02,2.27l-1.11,0.2l-0.41,0.8l0.37,0.35l0.69,-0.04l-0.01,0.26l-1.54,0.73l-0.15,0.68l0.77,0.39l-0.57,0.78l-1.04,0.65l-0.13,0.86l0.52,0.57l-0.9,-0.21l-0.93,0.87l0.68,1.28l-0.79,-0.83l-0.46,0.02l-0.13,0.45l0.65,1.21l-0.27,-0.23l-1.28,0.61l-0.79,-0.88l-0.66,0.32l0.49,1.99l-0.34,-0.13l-0.39,-1.23l-0.48,0.02l-0.52,0.61l0.82,2.23l-0.19,0.69l-0.61,-0.3l-0.5,0.49l0.27,0.42l-0.09,0.81l-0.81,-0.86l-0.55,0.12l-0.8,1.34l-0.39,0.07l-0.33,-0.88l-0.54,-0.21l-0.38,-1.47l-0.63,-0.19l-0.98,-1.55l-0.47,-0.22l-0.91,-0.14l-0.32,0.25l-0.3,-0.4l-0.66,0.27l0.1,0.85l0.62,0.96l-0.76,-0.45l-0.53,0.1l-0.02,-0.99l-0.93,-0.59l-0.33,-2.18l-1.14,-1.44ZM815.34,751.71l-0.03,0.02l0.02,-0.1l0.01,0.08ZM814.13,746.52l0.43,-0.47l0.76,-0.29l-0.16,0.85l-1.03,-0.09Z", "name": "Nova Scotia"}, "CA-BC": {"path": "M13.63,416.0l18.57,10.78l19.97,10.92l20.25,10.4l20.52,9.86l20.77,9.32l21.0,8.77l21.26,8.24l21.12,7.55l-37.33,108.91l0.0,0.84l0.61,0.53l-0.38,0.97l1.06,0.85l0.3,1.12l-1.39,-0.67l-0.62,0.14l0.03,1.15l-0.43,0.73l0.21,0.59l0.57,0.21l0.19,2.02l0.84,1.3l0.35,0.17l0.53,-0.25l0.98,0.72l0.76,0.05l-0.13,1.32l0.58,2.06l2.09,1.93l0.8,-0.25l0.46,-1.15l0.77,1.04l0.58,1.33l-0.59,0.93l0.97,0.98l-0.37,0.82l0.11,1.89l0.47,0.41l0.99,-0.09l0.34,1.0l-0.39,0.83l0.57,1.04l0.1,1.29l-0.75,0.67l0.47,2.99l-0.56,0.69l0.13,1.58l2.27,0.12l0.46,-0.24l0.44,-0.87l0.64,1.11l1.28,0.79l-0.19,0.8l-1.23,0.79l0.3,1.88l0.88,0.69l0.54,1.17l1.29,0.11l1.2,0.66l0.54,-0.1l-0.09,1.84l1.68,3.03l0.03,3.14l0.31,0.86l1.36,0.39l1.23,-1.23l0.58,0.0l0.08,2.89l0.77,0.86l0.09,0.87l0.49,0.56l-0.05,1.03l0.7,0.9l-0.38,1.12l0.14,1.48l0.93,0.66l0.11,0.73l0.87,0.66l-0.2,1.52l0.36,0.88l0.76,0.81l1.17,0.52l0.03,0.67l1.16,1.63l0.03,0.84l-0.77,0.41l-0.02,0.81l0.62,0.43l0.21,0.75l1.08,1.17l0.17,0.76l0.69,0.1l0.14,0.68l-0.43,0.58l0.68,2.09l0.58,0.31l0.91,-0.51l0.95,0.57l0.82,3.1l0.57,0.99l-0.49,4.19l0.35,1.34l-0.15,1.29l-0.5,0.22l-0.33,1.01l0.11,2.26l-1.05,1.89l-0.99,0.67l-0.26,0.71l0.45,0.95l1.24,0.51l-0.71,1.24l-0.02,1.23l0.9,1.34l0.56,2.72l1.65,0.84l0.45,0.63l-0.19,0.8l0.44,1.02l0.56,0.37l-0.22,0.27l-27.35,-7.82l-27.2,-8.56l-22.07,-7.54l-20.36,-7.43l-0.15,-0.39l-0.8,-0.35l0.21,-1.16l-0.6,-0.44l-1.81,0.1l-0.47,0.32l-0.12,-0.4l1.21,-0.59l0.34,-0.89l-1.81,-0.14l0.27,-0.72l0.53,0.32l0.3,-0.37l-0.62,-1.25l1.53,0.24l0.97,0.62l0.85,-0.09l0.77,-0.61l1.17,-2.04l-0.35,-0.56l-0.52,0.1l-0.39,0.88l-0.95,0.93l-0.73,-0.02l-2.26,-1.49l0.81,-0.83l0.52,-1.68l1.28,-1.89l0.77,-0.45l0.02,-0.73l-0.57,-0.2l-0.96,0.34l-0.64,1.13l-3.29,0.49l-0.35,1.52l-0.4,0.28l-2.22,-2.35l0.35,0.09l0.6,-0.57l0.23,-1.06l2.11,-0.04l1.12,-0.75l0.05,-0.46l-0.41,-0.2l-1.67,0.26l-1.17,-0.27l-0.59,-2.27l0.96,-0.94l0.39,-1.03l-0.25,-1.64l1.82,-0.18l1.09,-0.9l-0.39,-1.65l-1.48,-1.88l-0.67,0.31l0.24,1.15l0.69,0.8l0.18,0.72l-2.3,0.5l-0.61,1.32l-0.59,0.03l-0.7,0.73l-0.05,0.48l-0.99,0.51l-1.16,-0.38l-0.47,0.15l-1.25,-0.65l-0.63,-0.72l0.13,-0.64l-0.32,-1.0l-1.12,-1.86l0.42,0.2l0.32,-0.36l0.74,-1.86l1.0,-0.73l0.78,-1.13l0.03,-1.27l-0.42,-0.72l0.66,-0.64l1.06,0.45l1.62,-0.21l1.19,-0.55l0.37,-0.56l-0.53,-0.58l-1.92,0.55l-2.01,-0.55l-1.36,0.98l-0.8,0.21l-0.86,-0.52l0.32,-0.78l-0.13,-0.94l-0.31,-0.35l-0.54,0.21l0.31,-0.57l1.04,0.0l0.5,-0.55l0.71,-0.01l0.52,-0.47l0.7,-1.52l0.9,-1.07l-0.54,-1.17l1.94,-1.18l-0.12,-1.14l-0.81,-0.31l-1.32,1.2l-0.98,0.31l-0.12,1.24l0.33,0.57l-0.79,1.69l-2.82,1.23l-0.55,0.81l-0.42,0.11l0.16,-1.29l-0.25,-0.42l-0.88,0.25l0.2,-0.94l-0.42,-0.46l-1.2,0.93l-1.01,-0.17l1.36,-2.4l1.52,-0.77l0.06,-0.63l-0.27,-0.25l-2.03,0.51l-1.03,1.83l-0.73,0.39l-0.15,0.67l-0.43,0.25l-0.44,-0.76l0.35,-0.16l0.05,-0.62l-0.51,-0.46l-0.72,-0.2l-1.57,0.34l-1.87,-1.12l0.32,-0.73l2.46,0.25l0.57,-0.43l1.19,0.03l1.37,0.45l0.9,-0.85l0.82,-0.19l0.38,-0.6l-0.05,-1.03l0.94,0.18l1.31,-1.41l0.17,-2.17l-0.49,-1.27l-0.73,0.05l-0.14,0.4l-0.08,2.77l-1.67,0.34l-0.51,0.84l0.1,0.68l-1.26,0.7l-1.22,-0.44l-0.69,0.2l-0.41,-0.77l-2.04,-0.08l2.1,-0.61l0.26,-0.46l-0.72,-0.59l-0.93,-0.03l0.58,-1.2l-0.82,-0.57l0.97,-0.06l0.51,-0.79l-0.42,-0.46l-0.72,0.14l-1.89,-1.2l0.34,-1.92l-0.21,-0.53l-0.53,0.08l-0.59,0.69l-0.43,1.42l-0.53,0.35l-1.09,0.02l-1.26,-1.83l-1.03,0.28l-1.03,-0.44l-1.12,-1.04l-0.63,-0.09l-0.27,0.62l0.24,0.44l-0.35,-0.26l-0.23,-0.92l-0.6,-0.16l-0.73,-0.75l0.18,-0.81l-0.87,-0.64l1.18,-1.24l0.02,-0.47l-0.42,-0.45l-1.61,-0.27l-0.56,-1.45l0.22,-0.72l2.39,-0.07l1.79,1.27l1.94,0.48l1.27,-0.28l0.88,-1.35l-0.14,-0.43l-0.45,-0.02l-0.93,0.7l-1.16,0.1l-1.52,-0.85l-0.02,-0.89l-1.42,-0.1l-1.64,-0.71l1.26,0.01l1.14,-0.71l0.59,0.01l1.02,-0.91l0.43,-1.1l0.48,-0.22l1.69,0.22l2.83,0.98l3.66,2.02l1.21,-0.42l0.57,-0.77l-0.02,-1.8l-0.37,-0.36l-0.42,0.3l-0.36,1.43l-0.61,0.31l-3.57,-2.25l-1.84,-0.45l-0.7,-0.84l-0.79,0.4l0.26,-0.75l0.87,-0.15l0.93,-1.27l0.03,-0.56l-0.63,-0.27l-1.08,1.17l-0.74,0.01l-0.65,0.85l-1.13,-0.6l-0.81,0.22l0.07,0.61l0.78,0.73l-1.19,0.97l-0.01,0.66l-0.42,0.34l-0.3,-0.87l-0.76,-0.34l0.24,-0.89l-0.18,-1.6l1.21,-2.97l0.59,-0.66l0.81,-0.17l1.32,0.33l0.75,-1.05l1.21,-0.43l1.23,0.4l0.58,-0.17l0.26,-1.47l0.99,-0.36l1.17,0.12l1.46,-0.73l1.19,0.83l0.04,2.29l1.36,4.54l0.45,-0.23l0.46,-1.2l-0.26,-1.8l-0.88,-1.68l0.26,-1.89l0.72,-0.2l1.29,0.29l0.56,-0.4l-0.51,-0.96l-2.81,-0.06l-1.1,-0.71l-0.09,-0.5l0.44,-2.15l2.24,-0.84l0.99,-0.04l1.43,-1.41l0.28,-2.14l-0.81,-1.58l-0.65,0.29l-0.22,3.03l-0.98,0.61l-2.77,0.76l-0.68,0.64l-0.16,0.77l-2.05,0.08l-0.99,0.71l-2.28,0.14l0.49,-0.43l-0.46,-0.73l-1.92,1.47l-0.07,-1.06l0.98,-0.32l0.34,-0.46l-0.16,-1.5l0.77,-0.56l0.01,-0.74l0.57,-0.66l-0.35,-0.64l-1.85,-0.06l-1.04,0.34l-1.92,1.56l0.91,-1.04l0.47,-1.59l2.56,-2.56l0.76,-1.92l1.15,-0.09l0.32,-0.53l-0.19,-0.4l-0.77,-0.17l-0.3,-0.38l-2.19,1.52l-1.33,-1.01l-0.09,-1.12l0.94,-3.09l1.01,-1.4l-0.84,-0.43l-0.19,-1.93l-0.43,-0.19l-0.45,0.32l-0.66,-1.45l-0.01,-0.71l0.54,-0.39l0.2,-1.31l0.91,-0.63l-0.08,-0.66l-0.94,-0.13l0.11,-0.47l0.5,0.37l0.78,-0.2l-0.12,1.24l0.4,0.92l0.61,0.23l0.57,1.55l-0.23,0.75l0.41,0.43l0.51,-0.33l0.44,-1.04l1.38,-0.01l1.82,1.11l0.06,0.69l-0.69,0.76l-0.01,0.52l0.94,-0.15l0.34,0.67l-0.3,1.58l0.52,0.74l0.71,-0.13l-0.15,-1.33l0.33,-1.0l-0.62,-1.12l-0.37,-2.46l-1.72,-0.67l-0.55,-0.65l-0.51,-0.03l-0.67,0.57l-0.82,-0.23l-1.33,-3.84l0.95,-1.11l0.29,-1.09l0.41,-0.39l0.68,0.09l0.51,-0.48l1.48,1.12l0.49,-0.05l0.05,-1.0l-0.79,-0.39l-0.62,-0.84l1.48,-1.45l0.1,-0.72l-0.99,-0.1l-3.25,1.95l-0.57,-1.39l-0.8,0.05l-0.29,1.7l-0.47,-0.69l-0.45,0.22l-0.2,0.96l-2.69,1.13l-1.28,1.81l-0.16,1.0l-0.72,0.81l-1.64,-5.17l0.13,-1.57l-1.14,-2.66l-0.13,-0.95l0.31,-0.84l-0.66,-0.17l-0.12,-0.39l-0.02,-0.68l1.08,-2.11l0.75,-0.75l0.41,0.1l0.16,2.49l0.53,1.74l0.59,0.45l0.43,-1.42l-0.45,-1.17l-0.05,-2.35l0.91,0.01l1.75,1.57l1.64,-0.27l0.58,-0.39l-0.37,-0.7l-1.5,0.3l-1.83,-1.67l-3.38,-0.01l-0.21,-0.73l-0.68,-0.52l0.67,0.0l0.5,-0.5l-0.21,-0.46l0.8,-1.92l-0.16,-0.48l-0.5,0.07l-0.51,0.6l-0.69,0.02l-0.64,-0.71l0.52,-0.88l0.82,0.14l0.35,-0.52l-0.08,-1.1l0.72,-0.27l0.81,5.21l0.46,0.67l0.85,0.22l0.24,-0.48l-0.5,-0.59l-0.17,-0.94l0.7,-1.06l0.93,-0.09l0.32,-0.67l-0.55,-0.45l-0.75,0.04l-0.83,0.73l-0.5,-4.19l1.16,-0.05l0.95,1.09l0.34,1.33l1.09,0.78l0.67,-0.06l0.26,-0.34l-0.14,-0.42l-1.06,-0.71l-0.18,-1.2l-0.69,-1.14l0.83,-0.81l1.4,-0.59l0.1,-0.88l0.54,-0.4l0.23,-0.01l-0.41,0.33l0.27,0.72l2.0,-0.48l0.45,0.51l1.69,0.25l0.42,-0.72l-3.37,-1.69l3.35,-2.84l0.88,-0.25l2.11,-1.94l0.79,0.46l1.18,-0.33l0.19,-0.51l-0.4,-0.44l-0.76,0.18l-0.72,-0.46l-0.55,0.02l0.42,-3.12l-0.63,-0.43l-0.38,0.34l-0.63,2.46l-1.19,1.08l-0.25,0.6l0.17,0.34l-0.61,0.89l-4.38,3.54l0.19,-1.23l3.65,-2.46l0.01,-1.21l0.72,-2.25l0.03,-1.69l1.16,-2.12l-0.07,-1.07l3.08,-2.49l-0.27,-0.65l0.46,-1.28l0.06,-1.38l-0.37,-0.78l-1.14,-0.25l-1.35,-1.24l0.24,-1.83l-1.34,-1.53l-0.43,-1.97l-0.62,-0.93l-2.03,-1.66l-2.71,-5.17l-2.36,-1.11l0.5,-1.02l0.09,-1.44l0.61,-0.94l-1.5,-2.18l1.9,-2.25l-0.03,-0.55l-2.03,-1.95l1.76,-1.48l-0.68,-17.44l0.4,-2.73l-0.61,-4.17l0.83,-1.22l-0.82,-3.51l-0.3,-3.87l-2.29,-3.88l-0.25,-1.33l0.41,-1.01l-0.35,-0.6l0.5,-0.87l-0.0,-1.39l-0.96,-1.57l0.08,-2.0l-1.83,-1.91l0.0,-0.97l0.57,-0.96l-0.39,-0.8l0.97,-0.53l0.86,-1.58l-1.69,-5.99l-0.52,-0.45l-4.82,0.06l-3.19,-0.8l-1.16,0.04l-0.33,0.59l0.29,1.15l-0.97,0.61l-0.87,-0.59l-0.65,0.07l-1.58,2.84l-1.77,1.29l-2.42,-0.92l-5.25,0.52l-2.15,0.6l0.9,-1.15l1.29,-4.82l-3.3,-13.32l0.53,-2.9l-1.35,-2.31ZM73.47,652.52l0.29,0.56l-0.5,0.41l0.15,-0.35l0.07,-0.62ZM65.69,639.61l-0.05,0.24l-0.09,0.16l-0.03,0.01l0.17,-0.41ZM47.11,622.29l0.58,0.56l0.35,0.24l-0.42,0.17l-0.51,-0.97ZM45.72,609.76l-0.16,0.0l-0.36,-0.19l0.3,0.13l0.23,0.05ZM50.07,591.83l-0.48,0.83l0.04,0.6l-0.78,0.64l0.16,-1.83l0.64,-0.61l0.4,0.37ZM46.52,592.11l-0.73,0.75l-0.66,0.39l0.64,-1.17l0.75,0.03ZM51.62,599.75l0.12,-0.02l0.32,0.0l-0.13,0.19l-0.3,-0.17ZM56.1,626.07l-1.59,-0.43l-1.14,0.16l-0.32,-0.43l0.61,-0.51l2.44,1.22ZM55.38,630.91l-0.22,-0.02l-0.62,-0.24l0.1,0.01l0.73,0.25ZM72.83,659.99l-0.63,-0.33l-0.52,-1.02l-0.28,-2.05l0.99,-1.2l0.28,0.06l0.38,2.07l-0.22,2.46ZM77.14,661.77l0.07,-0.32l0.41,-0.02l0.04,0.63l-0.52,-0.29ZM76.5,664.01l0.11,-0.16l0.39,-0.19l-0.22,0.27l-0.28,0.08ZM71.52,674.1l-0.21,-0.6l0.4,-0.58l-0.16,-0.8l0.09,-0.03l0.54,1.27l-0.43,-0.06l-0.24,0.8ZM70.39,655.37l-0.06,-0.38l0.7,-0.3l-0.51,0.61l-0.13,0.07ZM32.85,620.93l0.68,-0.17l0.02,-0.64l-0.76,-0.43l0.22,-1.3l2.37,-0.03l0.56,0.28l0.8,-0.21l1.61,0.7l3.39,3.27l-0.22,0.7l0.2,0.9l0.6,-0.15l1.66,2.64l1.83,1.44l0.03,0.48l1.01,0.5l0.02,0.63l1.12,0.19l1.45,1.91l0.75,0.06l0.74,0.68l1.02,0.21l1.66,1.03l1.93,2.25l1.25,0.68l0.78,0.91l1.79,0.49l0.86,0.93l-0.31,3.68l0.62,1.55l-0.05,2.74l1.84,4.7l-0.04,0.28l-0.93,-0.48l-0.43,0.57l0.38,1.07l0.32,3.28l0.82,0.58l1.32,2.19l3.72,2.74l-0.4,0.16l-0.02,0.74l2.04,1.19l-0.28,0.35l0.02,1.26l1.09,0.83l0.1,1.41l-0.7,-0.1l-0.38,0.64l1.57,3.71l-0.33,0.62l-0.81,0.32l0.85,1.83l-0.4,0.62l0.04,0.77l-0.62,0.94l0.44,0.45l1.05,-0.34l0.71,-1.07l-0.07,3.71l-0.4,0.04l-0.51,-0.91l-0.52,-0.17l-2.12,1.49l-0.76,-0.26l-1.02,-1.27l-1.22,-0.57l-4.51,-4.68l0.34,-0.65l-0.2,-0.23l-0.58,-0.29l-0.68,0.18l-1.54,-1.14l-1.15,-1.88l-2.45,-2.57l-0.31,-1.19l1.25,-0.56l0.85,0.03l0.53,-0.84l1.63,-0.27l1.28,-0.98l1.13,-1.58l0.3,-1.62l-0.53,-0.48l-0.6,0.5l-0.62,1.63l-1.35,1.41l-1.99,-0.34l-0.65,-0.59l-1.1,0.36l-0.45,-0.34l0.86,-0.46l-0.95,-1.1l-2.45,1.38l-0.88,-1.16l-0.73,-2.0l-0.55,-0.46l2.18,-0.5l0.91,-0.99l-0.46,-0.57l-1.28,0.35l0.61,-1.06l-0.55,-0.56l0.9,-1.32l-0.21,-0.54l-0.44,-0.0l-1.12,1.18l-0.61,-0.19l-0.84,0.41l-0.13,-0.38l1.04,-0.37l1.26,-1.45l0.06,-0.62l-0.7,-0.23l-1.4,1.27l-0.07,-0.69l0.65,-0.95l-0.29,-0.52l-1.77,0.02l-0.03,-0.74l-0.47,-0.28l-0.8,1.05l-0.81,-2.22l-1.16,0.39l-0.16,0.81l-0.28,-0.45l1.23,-2.55l1.21,-0.2l1.13,0.59l2.92,0.63l0.42,-0.31l-0.06,-0.7l-1.2,-0.58l-1.67,-0.08l-0.98,-0.86l1.24,-1.08l-0.63,-1.0l-0.61,0.12l-0.58,0.93l-0.49,-0.08l0.63,-3.12l-0.28,-0.49l-0.71,0.06l-0.6,-2.02l-0.77,0.21l-0.23,-0.72l-0.45,0.1l-0.81,1.52l-1.65,-0.66l-0.32,-1.71l0.85,-0.49l0.55,-0.81l1.06,-0.3l0.4,-1.05l-0.59,-0.35l-1.01,0.48l-0.47,-1.23l-0.55,-0.1l-0.66,1.5l-0.63,0.06l-0.46,-0.99l0.8,-0.46l-0.23,-0.43l0.38,-0.76l-0.33,-0.31l-2.03,0.4l0.58,-0.85l-0.33,-0.3l-1.14,0.05l-1.37,0.68l-0.68,-0.62l2.5,-1.18l0.04,-0.56l-0.65,-0.37l0.41,-0.24l0.12,-0.65l-0.63,-0.79l-0.87,-0.23l1.07,-1.19l1.81,0.27l1.47,0.66l0.35,2.01l0.36,0.42l0.68,-0.27l-0.22,-2.73l1.49,-0.17l0.6,-0.54l-0.27,-0.6l-1.46,-0.13l-0.39,-0.67l-2.99,-1.74l-0.22,0.68l0.38,0.79l1.9,1.18l-2.18,-0.17l-0.43,-0.36l-1.45,-0.06l-0.38,-0.57l-0.68,0.11l-0.69,-1.33l0.08,-1.33l-0.53,-0.59ZM42.94,638.71l0.18,0.66l-0.39,0.25l0.21,-0.91ZM48.37,658.01l-0.18,-0.13l-0.04,-0.06l0.11,0.01l0.12,0.19ZM65.71,652.19l0.14,-0.21l0.29,0.73l1.84,1.59l0.58,2.49l-1.31,-1.65l-0.19,-1.3l-1.35,-1.65ZM68.25,643.72l-0.05,0.24l-0.39,0.41l0.11,-0.31l0.33,-0.33ZM67.21,657.84l0.25,0.09l0.46,0.37l-0.41,-0.15l-0.3,-0.32ZM65.77,642.5l0.43,-0.25l0.47,0.39l-0.27,0.67l-0.55,-0.11l-0.08,-0.69ZM66.61,644.25l0.09,0.18l-0.5,0.24l-0.01,-0.2l0.41,-0.22ZM64.09,645.3l-0.21,-0.95l0.93,-0.53l-0.29,1.49l-0.43,-0.01ZM63.71,655.75l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM61.57,639.47l0.04,-0.17l0.14,0.12l-0.07,0.05l-0.11,0.0ZM62.7,639.33l0.42,-0.95l0.59,0.96l0.17,3.08l-0.26,-2.27l-0.92,-0.82ZM61.44,643.0l-0.21,-0.5l0.24,-1.24l0.33,-0.58l0.41,-0.02l0.33,1.46l-1.11,0.88ZM60.76,637.89l0.47,-0.38l1.13,-0.03l-0.83,0.65l-0.77,-0.24ZM59.74,636.88l0.18,-0.02l0.48,0.11l-0.61,-0.06l-0.05,-0.04ZM56.9,635.18l0.86,0.09l0.09,0.38l-0.33,-0.07l-0.61,-0.4ZM47.25,600.57l1.72,-2.5l0.8,-0.67l0.72,-0.33l0.86,0.23l1.96,-0.24l1.42,-0.89l1.65,0.05l-0.51,1.31l-4.2,0.56l-1.27,0.61l-1.38,1.32l-0.25,0.68l-1.53,-0.13ZM51.46,628.21l0.59,-0.54l2.0,-0.54l1.2,0.15l0.11,0.27l0.04,0.85l-0.66,0.22l-0.62,0.73l-1.4,-0.87l-0.51,0.21l-0.75,-0.48ZM51.4,630.8l1.84,0.02l0.23,0.32l-0.39,0.14l-1.68,-0.47ZM49.37,624.62l0.01,0.01l0.0,0.06l-0.02,-0.07ZM50.29,625.12l0.07,-0.07l0.64,0.3l-0.56,-0.01l-0.15,-0.22ZM49.87,623.87l0.03,0.01l0.01,0.0l-0.01,0.0l-0.03,-0.01ZM48.61,586.85l0.14,-1.17l0.6,0.19l-0.53,0.81l-0.2,0.17ZM45.49,570.28l0.29,-0.57l0.16,-0.22l-0.2,0.65l-0.25,0.13ZM46.01,569.39l1.12,-1.94l1.14,-0.24l1.27,0.43l-0.72,1.13l-0.97,-0.27l-1.84,0.9ZM48.58,656.68l-0.36,-0.84l0.5,-0.17l0.3,0.29l-0.44,0.72ZM46.18,597.25l0.63,-0.09l0.89,0.46l-0.56,0.43l-0.94,-0.3l-0.02,-0.5ZM46.94,596.03l1.01,-0.32l-0.03,-0.58l-0.46,-0.3l0.72,0.24l-0.14,1.53l-1.1,-0.57ZM44.61,591.15l1.02,-0.72l0.85,-3.1l1.13,-2.06l-0.16,1.5l-1.04,3.3l-0.66,0.74l-1.14,0.33ZM41.34,582.69l0.24,-0.26l-0.19,-1.84l0.67,0.54l0.48,-0.46l-0.11,-0.42l1.76,-1.19l1.07,-0.04l0.41,-0.42l-0.98,-2.79l-0.6,0.02l1.1,-2.33l1.04,0.82l1.06,2.78l0.64,0.6l-0.19,2.48l-0.45,1.43l-2.7,3.9l-0.21,0.8l-0.83,-0.37l0.76,-1.87l2.26,-2.34l0.42,-0.85l-0.14,-0.58l-0.73,-0.14l-0.33,0.74l-0.59,-0.23l-2.15,3.48l-0.91,0.15l-0.83,-1.63ZM44.7,586.19l0.0,0.03l-0.02,-0.02l0.02,-0.01ZM43.79,576.47l0.01,0.55l0.41,0.22l0.25,0.72l-2.45,1.26l-0.46,-0.61l0.42,-1.1l0.58,-0.58l0.33,0.23l0.91,-0.68ZM43.19,586.9l1.52,0.5l-0.57,2.32l-0.91,-1.6l-0.04,-1.22ZM43.67,542.2l-0.02,-0.54l3.49,-1.73l-0.29,0.57l-1.88,1.35l-1.29,0.35ZM47.09,655.52l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM45.06,572.22l0.01,-0.26l1.32,-0.96l0.54,-0.79l-0.02,2.09l-0.45,0.54l-0.48,-0.44l-0.92,-0.18ZM45.54,652.69l0.48,-1.03l0.67,0.05l-0.21,1.74l-0.94,-0.76ZM42.91,600.73l0.86,-0.48l0.0,-0.68l1.03,-0.85l1.62,0.26l-0.41,0.91l-1.8,1.9l-0.26,1.2l-0.45,-0.18l0.48,-1.52l-0.25,-0.39l-0.83,-0.19ZM44.17,597.56l0.09,-1.02l1.12,-0.67l-0.62,1.32l-0.6,0.37ZM42.93,594.98l-0.27,-0.29l0.66,-0.51l1.36,0.6l-0.74,0.66l-1.01,-0.46ZM40.85,642.26l1.08,-0.1l0.35,-0.5l-0.76,-0.86l1.66,-0.07l0.6,0.8l-0.16,1.46l-0.84,2.36l-1.12,-1.08l-0.81,-1.99ZM41.8,608.09l0.21,-2.76l1.49,-0.67l-0.54,4.43l-0.27,0.14l-0.31,-0.88l-0.58,-0.25ZM41.66,575.26l-0.17,-0.45l0.43,-0.95l1.15,-0.67l0.48,-0.66l-0.96,3.17l-0.92,-0.42ZM41.46,591.43l0.36,-2.24l0.32,-0.39l0.56,0.41l-1.24,2.22ZM41.74,542.16l0.92,-0.2l0.04,0.0l-0.38,0.77l-0.43,-0.06l-0.15,-0.52ZM37.53,560.61l0.55,-1.25l-0.44,-0.75l0.81,-0.37l1.97,4.36l0.42,3.01l0.52,1.5l-0.36,-0.15l-0.56,0.32l0.21,0.68l1.21,0.77l0.49,2.16l-1.85,-0.28l-0.47,1.41l-0.33,-0.08l0.08,-2.41l-0.67,-0.3l-0.01,-0.77l-0.39,-0.29l0.51,-1.15l-0.55,-0.61l0.65,-1.04l-0.07,-1.15l0.49,0.07l0.29,-0.54l-0.67,-0.96l-1.34,-0.25l0.25,-1.11l-0.75,-0.82ZM38.34,563.69l-0.21,0.15l-0.18,-0.06l0.16,-0.11l0.23,0.02ZM40.27,619.3l0.43,0.03l0.07,0.55l-0.36,-0.48l-0.14,-0.1ZM40.3,551.24l0.12,-0.25l0.34,-0.21l-0.2,0.34l-0.26,0.12ZM39.08,583.26l0.32,-0.4l-0.37,-1.6l0.38,-0.35l1.34,4.3l-0.73,1.53l0.04,-0.56l-0.52,-0.33l-0.24,-0.74l0.25,-0.48l-0.48,-1.36ZM40.19,553.88l0.01,-0.26l0.12,-0.15l0.17,0.38l-0.3,0.03ZM39.62,574.23l-0.2,-0.65l0.25,-0.22l0.56,2.86l-0.15,0.8l-0.46,-2.8ZM39.02,635.94l0.02,-0.04l0.01,0.01l0.01,0.02l-0.04,0.01ZM36.21,544.7l1.15,-1.7l0.93,0.78l-0.43,0.41l-1.65,0.51ZM33.6,556.26l0.03,-0.04l0.04,0.11l-0.07,-0.07ZM35.18,554.73l1.69,-0.53l1.0,0.03l0.49,1.68l-0.08,0.84l-1.9,1.13l-0.24,-0.64l0.9,-0.73l1.05,-0.05l0.12,-0.89l-1.57,-0.46l-0.97,1.11l-0.49,-1.49ZM37.4,573.38l0.12,0.1l0.17,0.59l-0.22,-0.3l-0.08,-0.39ZM36.87,545.99l0.21,-0.1l0.08,0.57l-0.17,-0.08l-0.13,-0.39ZM33.01,562.11l0.45,-0.71l0.44,0.35l2.97,4.84l0.38,1.23l0.13,3.3l-0.25,0.6l-0.43,-0.49l-0.68,0.22l-0.32,-0.23l-0.16,-1.77l-0.4,-0.51l0.19,-1.05l-0.74,-1.58l-0.88,-0.66l-0.14,-1.69l0.83,0.06l0.05,-0.47l-0.38,-0.48l-0.81,-0.17l-0.26,-0.79ZM35.28,560.82l1.21,-0.39l-0.0,0.61l0.71,0.77l-0.5,1.33l-1.33,-1.39l-0.08,-0.93ZM35.19,550.83l0.11,-0.11l0.25,0.66l0.06,0.42l-0.02,0.03l-0.4,-0.99ZM34.15,557.75l0.07,-0.0l0.18,0.16l-0.1,-0.01l-0.15,-0.16ZM9.84,550.6l0.56,-0.73l-0.34,-1.08l0.55,-0.31l-0.19,-0.75l0.35,-0.76l-0.16,-0.44l-0.84,-0.46l0.61,-0.4l-0.14,-1.49l1.11,-1.19l1.07,-0.61l0.26,-1.37l0.58,-0.41l0.48,0.21l0.85,1.24l1.68,0.51l0.52,0.74l-0.59,1.0l-1.51,0.56l-0.15,0.93l0.45,0.24l1.2,-0.21l0.91,-0.87l1.59,-0.25l0.82,0.23l-0.08,1.47l0.46,0.65l-0.55,1.2l-0.03,0.89l-1.04,0.24l-0.77,0.6l-1.16,-0.38l-1.19,0.26l-1.88,-0.55l-0.69,0.16l-0.22,0.72l0.48,0.25l-0.34,0.68l0.37,0.25l0.64,-0.2l0.41,0.47l-0.58,0.53l0.12,0.66l1.16,-0.18l1.19,0.41l0.59,-0.22l-0.01,-0.33l0.42,0.39l1.12,-0.49l0.42,-0.55l0.03,-0.95l2.06,-1.36l0.52,-2.22l1.91,0.69l2.51,-0.26l-1.47,1.94l-2.71,1.83l-1.05,1.61l-1.12,1.05l-0.97,1.7l-0.98,2.73l-1.3,1.07l-2.45,-0.68l-1.45,0.19l-0.26,0.35l-0.76,-0.09l0.12,-0.64l-0.62,-0.26l-0.03,-1.19l-0.55,-0.7l0.58,-0.16l0.29,0.34l0.67,-0.29l0.49,1.19l0.47,-0.1l0.52,-0.81l-0.54,-1.31l0.03,-0.74l-1.03,-0.96l0.24,-0.95l-0.5,-0.14l-0.15,-0.89l-0.81,0.17l-0.01,-0.71l-0.41,-0.21l0.23,-0.49ZM9.85,555.26l-0.19,-0.06l0.1,-0.07l0.09,0.13ZM9.44,560.12l0.24,-0.21l1.31,0.75l0.85,-0.12l2.31,1.14l2.04,-0.47l1.05,0.28l-0.5,0.93l0.59,1.0l0.25,1.28l-1.54,-1.24l-1.76,-0.62l-0.57,0.44l0.37,0.62l-0.2,0.95l0.68,0.28l0.86,-0.5l1.49,1.66l-0.45,0.79l-0.76,0.28l-0.9,-0.41l-0.18,-1.12l-0.63,-0.6l-0.48,-0.02l-0.27,0.61l-0.8,0.34l0.23,0.56l0.9,0.22l-0.5,0.59l0.23,0.86l-0.5,0.27l0.18,0.46l-0.4,0.34l0.15,0.65l0.73,0.48l-0.01,0.77l-0.39,0.59l0.2,0.99l-0.33,0.71l0.48,0.81l0.85,0.61l0.26,0.91l-0.47,0.44l-0.27,-0.82l-0.63,-0.34l-0.04,-0.94l-1.42,-2.66l0.04,-1.57l-0.69,-1.7l0.25,0.6l0.93,0.52l0.5,-1.36l-0.8,-2.18l-0.42,-0.18l-0.44,1.1l-0.51,0.25l-0.27,-1.27l0.33,-0.73l-0.53,-1.08l0.47,0.02l0.37,0.75l0.75,0.24l1.15,-1.14l0.01,-0.46l-0.77,-0.42l-0.27,-0.67l-1.12,-0.88l-1.25,-0.42l0.01,-0.97ZM13.9,576.84l0.45,1.27l-0.16,1.27l0.48,0.48l-0.35,0.26l-0.21,-0.49l-0.51,0.1l0.0,-1.11l-0.43,-1.2l0.19,-0.51l0.54,-0.07ZM15.24,580.53l0.03,0.01l-0.01,0.03l-0.01,-0.04ZM15.34,580.96l0.09,0.21l-0.08,0.07l0.01,-0.07l-0.02,-0.2ZM16.25,581.78l0.28,0.15l0.16,-0.01l-0.23,0.19l-0.21,-0.33ZM15.76,580.3l0.02,-0.36l0.45,-0.11l0.18,0.59l-0.65,-0.13ZM13.22,576.78l-0.13,-0.08l0.01,-0.05l0.07,0.08l0.04,0.06ZM14.76,571.47l0.03,0.04l0.11,0.01l-0.16,0.04l0.02,-0.08ZM15.47,571.73l0.28,0.02l0.58,-0.26l-0.53,0.92l-0.33,-0.67ZM15.38,583.56l0.03,-0.12l0.17,-0.25l0.1,0.28l-0.3,0.09Z", "name": "British Columbia"}, "CA-SK": {"path": "M225.69,715.55l44.18,-197.52l18.32,3.88l18.79,3.56l18.86,3.14l18.53,2.67l-10.31,77.69l-4.77,62.93l-4.14,60.98l-24.87,-3.43l-25.58,-4.15l-25.48,-4.77l-23.53,-4.98Z", "name": "Saskatchewan"}, "CA-QC": {"path": "M567.62,485.44l0.69,-0.35l1.22,-1.38l0.77,-0.25l0.36,-0.96l0.97,-0.76l0.27,-0.74l0.58,0.53l2.0,-0.0l0.62,0.3l1.01,-0.12l0.29,-0.35l0.52,0.33l1.36,0.02l1.33,0.78l4.43,0.81l0.54,0.69l1.41,-0.28l1.21,0.56l1.62,0.15l-2.04,2.18l-0.04,0.45l0.41,0.2l0.89,-0.29l1.91,-1.82l0.65,-1.14l1.15,-0.5l1.34,0.24l0.05,0.73l0.58,0.36l0.59,-0.85l0.34,-0.05l1.02,0.44l1.5,1.4l2.15,0.56l0.33,-0.61l-1.98,-1.25l0.01,-0.69l2.64,-0.51l0.86,-0.91l0.26,-0.75l0.94,-0.12l1.32,-1.11l0.87,-2.05l1.31,-0.53l1.15,1.47l1.19,0.35l0.52,-0.22l0.64,0.65l0.96,0.14l0.29,0.88l1.68,1.33l1.17,0.26l-0.17,0.57l0.4,0.22l1.41,-0.03l0.47,-0.47l-0.15,-0.37l0.81,0.4l-0.2,0.61l0.51,0.53l0.3,1.1l-0.56,0.47l0.08,1.04l-0.66,1.38l0.44,0.57l0.83,-0.56l0.79,0.64l0.53,-0.47l-0.63,-1.88l3.32,0.52l0.44,0.74l-0.33,0.83l0.18,0.7l0.58,0.3l0.9,-0.37l0.72,0.84l-0.4,1.12l-1.28,-0.01l-0.5,0.49l-0.18,0.9l0.26,0.43l0.87,-0.75l1.25,-0.02l1.04,-0.53l0.24,-1.94l1.99,0.45l0.69,0.44l0.2,0.37l-0.4,0.55l-1.78,0.57l-0.14,0.57l0.97,0.88l-0.76,0.45l-0.18,0.55l0.32,0.31l1.45,0.09l-0.94,0.39l0.28,0.79l1.22,0.1l-0.28,0.74l1.22,0.54l-0.03,0.8l0.66,0.28l0.18,0.79l0.8,-0.09l0.33,-0.64l1.12,0.98l0.99,-0.79l0.6,0.52l1.4,-0.43l0.74,0.15l0.5,0.74l0.71,-0.18l0.81,0.24l0.43,-0.47l0.47,0.74l1.44,0.04l0.35,-0.56l0.58,0.08l0.35,-0.57l-0.15,-0.4l0.41,0.03l0.32,-0.57l0.55,0.26l0.57,-0.38l0.07,1.05l0.81,0.83l0.16,0.92l-0.39,0.69l2.73,1.17l0.45,-0.16l0.4,-0.75l0.08,-0.41l-0.34,-0.21l0.4,-0.68l0.66,0.54l0.86,-0.68l-0.68,-2.21l0.06,-0.99l0.33,-0.34l1.51,2.44l0.52,0.3l0.4,1.74l-1.41,1.11l-1.13,1.65l0.92,2.18l-1.1,0.78l-0.09,0.74l0.87,0.87l0.02,0.89l0.62,0.66l-0.12,1.26l1.77,1.39l-0.18,0.58l0.53,0.46l0.08,1.44l-0.54,0.35l-0.99,-0.08l-0.3,0.57l0.18,0.81l-4.27,0.38l-0.4,0.62l-1.76,0.56l-0.74,-0.34l-3.44,-0.33l-0.61,0.35l-0.13,0.45l5.04,1.01l3.25,-0.87l1.86,0.27l2.59,-0.97l-0.3,0.59l0.22,0.42l1.77,0.38l0.01,1.39l0.52,0.47l-0.55,0.91l0.16,0.57l1.33,0.37l-1.61,2.91l0.06,0.7l1.1,0.62l0.39,1.15l-0.82,0.74l0.18,0.82l0.46,0.28l1.17,-0.26l1.62,-1.44l0.55,0.66l0.56,-0.01l0.34,-0.36l-0.03,0.58l0.45,0.63l-0.8,-0.28l-0.46,0.51l-0.53,0.06l-0.81,1.55l0.26,1.09l0.79,0.46l-0.25,0.37l1.14,2.89l-0.58,0.4l0.05,1.35l-0.49,0.33l-0.49,-0.84l0.22,-0.95l-0.66,-1.13l-0.57,-0.43l-0.48,0.12l-0.91,-1.17l-0.58,0.12l0.06,2.25l0.87,0.28l0.21,0.84l-0.57,-0.02l-0.26,0.58l0.23,0.42l-0.29,0.25l-2.52,1.17l-0.21,0.87l0.94,-0.12l1.69,0.39l0.53,-0.37l0.36,0.88l0.63,0.06l0.18,0.98l1.09,0.56l0.4,-0.44l0.42,-1.7l0.54,-0.43l0.13,-1.06l1.01,-0.85l0.68,-1.61l0.85,-0.69l2.19,-0.57l0.33,0.32l0.95,-0.15l0.89,-0.97l1.52,0.08l1.32,0.78l0.88,0.01l0.51,0.48l0.04,1.21l0.72,0.68l0.12,1.31l0.33,0.36l0.51,-0.0l0.16,0.94l0.7,0.12l0.37,1.11l-0.21,3.72l0.23,2.19l-1.06,1.95l-1.79,0.76l-2.23,1.57l-0.7,1.09l-0.84,0.55l-1.72,2.92l0.14,0.52l0.53,-0.1l2.0,-2.81l1.3,-1.2l4.27,-2.54l0.58,-0.65l0.7,-1.85l-0.28,-1.57l0.36,-0.98l-0.29,-4.95l1.07,-0.41l0.69,0.21l0.1,1.64l1.01,1.56l-0.09,0.85l-1.33,2.38l-0.05,1.72l0.8,0.14l0.86,-1.54l0.16,-1.47l0.76,-0.94l0.25,-1.37l0.18,0.62l0.59,-0.02l0.28,0.44l-0.08,1.85l0.62,1.26l-0.06,2.52l0.55,0.49l0.46,-0.09l0.17,-0.53l-0.29,-0.92l0.35,-1.3l-0.49,-1.15l0.31,-1.98l0.61,-1.14l0.91,-0.3l0.35,-0.94l0.9,-0.54l0.29,-0.59l0.5,0.12l0.47,-0.31l0.04,-1.07l0.39,-0.47l0.2,-1.13l0.04,0.46l1.0,0.7l0.33,-0.34l0.21,-1.22l1.61,-0.49l-0.07,-0.59l-0.37,-0.26l-0.06,-2.48l0.18,-0.83l0.73,-0.52l-0.43,-1.82l0.35,-0.31l2.75,1.46l0.75,1.14l1.4,0.34l-0.27,1.87l0.65,1.73l-0.65,1.08l0.58,0.91l0.6,-0.1l0.1,-1.07l0.51,-0.52l0.2,-1.18l-0.72,-0.62l0.36,-1.47l0.51,-0.25l-0.14,-0.64l-1.71,-1.57l-0.68,-0.02l-0.34,-0.94l-0.56,-0.26l0.14,-0.8l1.69,-0.26l0.57,-0.67l-0.23,-0.75l-1.62,-0.02l0.72,-0.57l0.04,-0.9l1.36,0.75l0.56,-0.32l-0.22,-0.92l-0.88,-0.47l0.13,-0.44l0.74,0.42l1.38,0.14l0.2,-0.65l-1.0,-0.55l1.84,-0.07l0.57,-0.69l-0.61,-0.52l-0.82,0.16l-1.08,-0.38l-0.63,0.1l-0.23,0.69l-0.95,-1.14l-0.01,-0.81l0.84,0.46l0.2,-0.45l-0.24,-0.65l0.85,-0.88l-1.22,-1.3l1.63,1.03l0.55,-0.07l0.1,-0.59l-1.2,-1.2l-0.05,-0.28l0.48,-0.3l-0.16,-0.44l-0.91,-0.42l0.54,-0.42l1.03,-0.08l2.03,1.08l1.18,-0.2l-0.25,-0.68l-0.92,-0.24l-1.33,-0.96l-2.27,-0.15l-2.07,-3.34l1.18,-2.17l2.75,0.77l0.74,-0.15l0.3,-0.5l-0.46,-0.43l-0.62,0.05l-1.47,-0.61l0.56,-0.4l-0.37,-1.02l0.63,-0.24l0.02,-0.27l-0.36,-0.54l0.15,-0.35l-0.71,-0.61l0.57,-0.58l0.06,-0.53l-0.34,-0.44l0.35,-0.19l0.07,-1.44l0.58,-0.41l0.89,0.4l0.89,-0.34l0.39,0.53l-1.02,0.44l0.27,0.84l-0.4,0.38l-0.84,-0.14l-0.37,0.57l1.18,1.74l1.8,0.19l-0.78,0.63l0.2,0.82l-0.36,0.51l0.87,2.23l-0.75,0.93l0.47,2.03l2.65,1.87l0.66,-0.24l1.57,-1.91l0.5,0.0l-1.08,1.6l0.23,0.51l-0.15,0.85l0.38,0.4l-0.08,0.78l0.52,0.83l0.04,1.04l1.29,1.97l1.23,0.09l0.68,0.63l-0.81,0.42l-2.04,-0.22l-0.84,-0.51l-0.77,0.2l-0.59,0.81l-0.17,0.88l0.35,0.78l-0.07,0.91l1.07,0.25l0.82,-0.83l1.66,0.6l2.33,-0.62l0.77,1.65l1.34,0.35l0.65,-0.29l0.91,-1.59l1.27,-0.51l0.48,-1.09l1.59,0.27l1.03,0.92l-0.89,0.81l-2.37,0.8l-1.68,1.44l0.04,1.65l0.55,0.89l0.98,0.39l1.01,-0.96l0.71,0.98l-0.14,0.45l-1.12,0.52l-0.29,1.21l-0.96,0.91l0.08,2.13l-1.14,0.87l-0.33,0.66l0.25,2.27l0.5,0.37l1.8,-0.09l0.3,1.0l2.7,3.39l0.56,-0.0l0.58,-0.81l0.57,0.97l1.02,0.63l0.76,-0.34l0.6,0.55l0.41,-0.14l-0.62,0.77l-0.13,0.97l0.59,1.97l0.91,1.19l-0.87,1.11l0.05,1.7l0.3,1.0l0.42,0.3l0.5,-0.32l0.29,0.98l-0.57,1.26l0.37,1.37l-0.09,1.2l0.45,0.67l-0.83,0.91l0.33,1.16l-0.69,0.61l-0.13,1.26l0.51,0.91l2.2,1.68l0.45,1.27l0.6,0.23l-2.46,0.56l-0.19,0.75l0.85,0.7l0.19,1.47l0.64,0.58l0.6,0.17l0.75,-0.34l0.9,0.25l-0.99,1.19l0.5,1.88l0.58,0.09l0.63,-0.75l1.2,0.69l1.14,-0.35l1.0,0.23l-2.1,2.25l1.47,2.03l0.77,0.2l0.02,2.05l0.99,0.42l0.36,1.7l-0.62,1.08l0.27,0.57l0.66,0.38l1.05,-0.03l2.92,-0.53l-2.12,1.18l0.07,0.69l-0.64,0.99l0.65,0.88l1.04,0.04l-0.05,2.55l0.73,1.52l0.13,1.13l-1.66,-0.28l-0.67,0.59l0.03,1.27l0.42,0.78l-0.49,1.16l2.22,1.59l-0.85,0.47l-0.3,0.56l-1.32,0.31l-0.54,-0.17l-1.23,-1.25l-2.72,-0.77l-1.01,0.33l-0.68,1.32l-1.58,0.36l-0.16,-1.07l-0.49,-0.52l-0.72,-0.12l-1.42,-1.13l-2.0,-0.07l-0.79,0.82l-0.24,1.58l-1.25,0.77l-0.89,-0.08l-0.42,0.43l0.62,1.64l-1.32,0.02l-0.53,0.59l-1.52,-1.14l-0.99,-1.61l-1.43,-0.05l-0.64,0.43l-0.99,-0.62l-1.36,-0.25l-4.27,-3.5l-0.61,-0.23l-0.64,0.17l-0.47,-0.73l-1.18,-0.43l-0.73,0.29l-0.13,0.78l1.96,1.57l-0.33,0.61l0.16,1.5l1.48,1.67l-0.4,0.37l0.0,0.74l1.8,2.02l-0.78,0.36l-0.09,0.75l-2.18,-0.7l-1.04,-1.33l-3.24,-1.24l0.21,-0.69l-0.37,-0.47l-1.37,-0.14l-0.77,0.94l0.53,1.47l2.45,2.55l2.18,1.29l0.17,0.64l-0.33,1.07l-0.93,1.21l0.43,1.21l-2.53,-1.23l-0.58,0.72l0.43,1.34l-1.2,0.47l-0.92,1.29l0.35,1.81l0.81,0.68l0.94,1.62l-1.07,1.38l0.14,2.16l0.93,0.8l1.58,0.7l0.42,0.94l0.89,0.37l-0.55,0.67l0.11,0.46l2.28,1.12l0.45,0.99l1.09,1.0l3.48,0.25l1.45,1.05l-0.51,0.43l-0.26,0.85l0.81,1.19l0.55,3.0l-0.44,-0.3l-0.56,0.14l-0.51,-0.32l-1.25,-0.05l-0.57,0.34l-0.85,1.35l1.34,3.66l0.69,0.73l1.96,0.6l0.65,-1.08l0.53,1.3l1.29,0.57l1.21,1.09l0.65,-0.53l0.66,0.04l0.3,-0.4l-0.32,-1.38l0.47,-0.18l0.52,-0.84l-0.32,-2.27l1.05,-0.72l0.36,-1.36l0.41,0.21l1.24,1.77l-0.61,-0.09l-0.45,0.41l0.02,0.51l1.73,2.71l-0.57,0.1l-0.27,0.72l1.77,4.37l-0.82,0.29l-0.25,1.19l2.25,3.25l1.07,-0.02l0.54,-0.72l-0.7,-1.91l0.45,0.59l1.47,0.59l0.23,1.26l1.38,0.53l1.88,-1.27l1.03,0.07l0.4,-0.31l-0.01,0.83l0.47,0.85l0.72,-0.11l0.22,-0.71l0.47,-0.13l0.38,-0.63l0.96,0.97l0.54,0.12l0.06,1.28l0.97,1.21l0.43,0.14l0.35,-0.88l0.95,0.41l0.4,0.8l1.35,0.12l0.48,-0.26l0.86,0.35l0.68,-0.28l0.41,-0.93l0.77,-0.07l0.95,0.4l1.82,1.61l1.03,0.12l1.75,-2.13l0.33,-1.42l-0.4,-1.03l-0.64,-0.53l-0.98,-2.33l0.8,0.1l0.37,-0.37l-0.72,-2.43l0.81,-0.28l0.1,-0.35l-1.38,-2.34l0.39,-1.72l-0.28,-1.5l1.51,1.38l1.13,0.13l0.97,-0.31l0.05,0.48l1.12,0.98l1.44,2.53l-1.28,-0.17l-0.48,0.73l0.86,0.91l0.81,0.19l35.0,-11.1l35.06,-12.54l3.42,9.02l-0.66,0.13l-0.44,-0.94l-0.67,-0.15l-1.97,1.23l-0.78,1.05l-0.46,-0.27l-0.62,0.77l-0.72,-0.49l-2.68,4.19l-1.64,1.25l-0.33,-0.76l-0.67,0.01l-0.29,0.38l0.18,0.75l-1.43,-0.17l-1.06,1.39l-0.66,-0.03l-0.6,1.15l1.14,1.19l-3.26,3.83l0.13,0.45l0.55,0.21l0.66,1.48l0.15,1.62l-0.21,0.42l-0.41,-1.85l-0.81,-0.1l-0.06,1.92l-0.36,0.95l-0.77,0.21l0.1,0.68l-0.54,1.09l-0.77,0.56l-0.1,1.51l0.82,0.48l-0.9,0.18l-0.48,1.41l-2.17,1.52l-0.5,1.77l0.65,0.77l-1.2,1.54l-0.92,0.48l-0.19,-0.56l-0.52,-0.21l-0.83,0.61l-0.45,-0.29l-0.34,0.3l0.03,0.63l-2.0,0.63l-0.71,0.9l-0.41,-0.49l-0.86,0.79l-1.54,-0.22l-0.9,1.3l-1.2,0.11l-1.38,1.11l-1.59,0.4l-2.2,1.67l-0.63,-0.58l-1.77,1.59l-0.17,-0.43l-1.33,-0.85l-3.94,1.02l-1.36,-0.41l-0.92,0.13l-0.55,0.57l-2.59,0.63l-0.63,-0.4l-2.2,1.18l-1.14,-0.17l-0.36,0.63l-1.34,0.39l-0.01,0.84l-1.47,0.35l-0.61,0.76l-0.93,-0.54l-1.25,0.49l-1.4,-0.41l-1.32,0.12l-2.04,0.78l-1.49,1.15l-2.1,0.27l-1.44,-0.27l-1.88,1.28l-2.61,0.93l-0.5,-0.13l-3.04,0.83l-1.08,-0.29l-4.94,2.56l-1.0,0.22l-1.65,-0.17l-0.78,1.42l-0.61,-0.13l-0.27,0.96l-1.18,-0.13l-1.06,0.6l-0.93,-0.98l-0.82,0.24l-0.65,1.05l0.01,1.01l-0.52,-0.18l-0.47,0.48l0.13,0.41l-0.84,2.13l-1.39,0.87l-0.47,0.69l-0.22,2.67l-0.62,0.01l-0.53,0.64l-0.24,1.65l0.46,1.24l-0.35,2.17l0.49,1.83l-0.9,2.3l-3.83,1.33l-0.72,0.8l-2.58,0.41l-0.47,0.63l-0.65,0.25l-0.13,1.04l-1.18,0.45l-0.43,0.49l0.89,0.68l0.68,-0.07l-0.1,0.23l-1.15,0.54l-0.93,-1.34l-0.63,-0.14l-0.38,0.24l0.64,1.28l-1.75,1.61l-0.34,0.95l0.1,0.8l-0.4,0.33l-0.04,0.54l-0.9,0.37l-1.58,2.08l-0.07,0.56l-0.93,0.62l-0.27,3.11l-1.0,0.53l-0.2,2.46l-1.09,3.18l-1.31,1.32l-0.7,1.78l-1.29,0.07l-2.38,-1.59l-1.96,0.45l-3.06,-1.17l-0.79,0.36l-2.96,0.12l-0.98,-0.53l-2.8,0.0l-1.08,0.61l-0.17,0.52l0.51,0.2l0.91,-0.32l1.95,0.32l-0.74,0.24l-0.2,0.65l0.77,0.75l1.42,-0.87l2.94,-0.67l1.57,0.19l2.55,0.95l0.86,-0.0l0.74,-0.43l0.87,0.13l1.43,1.22l1.11,0.06l-0.84,6.13l-0.83,1.47l-1.18,1.08l-0.46,1.37l-0.01,1.67l-2.8,1.65l-0.56,3.67l-0.87,2.54l-2.49,2.27l-2.19,3.43l-0.38,1.32l-0.97,1.01l-1.31,0.36l-2.8,1.73l-2.2,0.19l-1.25,1.7l-2.41,1.49l-0.16,1.61l-2.13,1.58l-1.37,2.11l-2.7,1.13l-1.71,1.34l-0.11,1.93l-1.55,0.98l-0.71,3.28l-0.88,1.17l-0.56,1.5l-0.69,0.71l-2.07,0.72l-0.98,0.8l-1.49,2.83l-1.29,1.09l-1.0,0.07l-0.96,-0.57l-1.35,0.32l-1.09,-0.65l-3.72,-0.87l-1.32,0.65l-2.06,0.27l-1.33,0.98l-2.82,0.84l-3.47,2.28l-1.13,0.4l-0.89,1.45l-0.7,0.24l-2.82,-1.86l-1.12,-0.09l-1.21,0.37l-0.91,1.01l-1.48,-0.68l-2.37,-0.38l-1.36,-2.43l-0.7,-0.56l-0.56,-1.82l-0.58,-0.48l-0.97,-0.11l-0.77,0.39l-0.17,0.53l0.27,0.96l-0.43,0.18l-2.91,-1.28l-0.7,-0.73l-0.29,-1.03l-1.0,-0.93l-4.14,-1.81l-3.41,-0.5l-1.54,0.14l-0.92,-0.32l-2.43,0.26l-0.44,-0.35l-4.48,-0.36l-0.53,-0.87l-1.89,-1.07l-0.93,-0.91l-0.79,-1.71l-1.17,-1.1l-1.06,-2.0l-1.81,-1.73l-1.98,-2.57l-0.54,-3.25l-1.96,-2.87l0.5,-2.68l-6.88,-58.56l1.67,2.7l0.76,-0.3l-0.21,-1.21l-2.42,-2.91l-1.05,-9.24l-0.4,-0.97l1.8,-2.07l0.51,0.3l-0.23,0.86l0.18,0.89l0.51,0.29l1.45,-0.36l1.17,0.94l1.18,3.03l-0.22,0.62l0.21,0.67l0.85,0.87l1.17,0.02l-0.03,-0.46l-0.89,-0.97l-0.02,-0.97l0.72,-1.43l-0.66,-0.48l0.75,-1.26l0.88,-0.26l0.24,-0.67l-0.67,-0.43l-0.75,0.08l0.06,-1.28l-0.27,-0.56l-1.49,-0.66l-0.25,-0.73l-0.98,-0.95l0.9,-0.11l1.02,-1.09l0.05,-0.63l-0.75,-1.16l1.4,-0.7l0.51,-1.39l0.54,-0.46l-0.09,-0.35l0.52,-0.43l0.47,-1.86l-0.26,-0.68l1.06,0.09l0.47,-0.44l-0.67,-0.78l-0.95,-0.09l0.35,-0.97l-0.4,-0.71l-0.02,-1.5l-0.67,-1.13l-0.57,-0.36l-1.4,-0.03l0.3,-0.73l-0.41,-0.8l-0.52,-0.15l-0.21,-1.16l-0.4,-0.45l0.77,-0.58l-0.29,-0.88l0.45,-0.68l-0.35,-0.62l-1.54,0.32l-0.13,-0.75l0.56,-0.12l0.27,-0.63l-1.0,-0.9l-0.91,0.22l0.28,-0.57l-0.53,-0.64l0.46,-2.68l-0.15,-0.59l-0.61,-0.4l-0.31,-2.06l-0.59,-0.93l-0.48,-0.2l0.67,-0.5l-0.08,-0.59l0.39,-0.84l-1.06,-1.01l-0.2,-1.12l-0.42,-0.26l-0.19,-0.72l0.14,-1.17l1.02,0.28l0.35,-0.65l-0.54,-0.57l-1.21,-0.13l0.54,-0.95l-0.65,-1.0l0.45,0.02l0.34,-0.63l-1.92,-1.3l0.6,-1.33l-0.13,-0.66l-0.87,-0.07l-1.12,0.54l-0.95,-0.41l0.44,-0.49l-0.07,-0.54l-1.53,-0.25l0.1,-0.3l-0.97,-1.33l0.4,-0.7l-0.53,-0.38l-0.9,-1.95l0.19,-0.91l-1.37,-0.81l-0.23,-0.46l1.54,-1.19l5.33,-2.46l0.81,-1.11l4.85,-2.88l2.24,-2.4l3.59,-2.98l0.9,-1.87l4.86,-6.16l0.42,-1.3l-0.39,-0.24l2.32,-4.01l0.23,-1.05l1.12,-1.18l0.75,-4.99l-0.05,-2.28l-0.87,-6.87l-1.23,-4.49l0.01,-1.63l-2.06,-5.25l-2.04,-3.63l-0.28,-1.28l-4.3,-5.9l-1.39,-1.17l-0.78,-0.16l-1.14,-0.88l-0.4,-0.99l-1.54,-1.0l-1.03,-0.16l-3.19,-1.36l-0.2,-0.78l-2.67,-1.45l-1.67,-1.88l-1.36,0.49l-0.0,-0.63l0.73,-0.62l0.04,-0.39l-0.65,-0.92l0.23,-0.9l-0.81,-1.89l0.57,0.26l0.39,-0.48l0.6,0.38l0.49,-0.32l0.62,-1.55l-0.37,-0.94l0.62,-0.27l0.02,-0.5l0.62,-0.7l-0.09,-0.62l0.36,-0.61l-0.21,-0.71l2.29,-1.62l0.54,-1.13l-0.19,-0.69l0.75,-0.42l-0.01,-0.71l-1.56,-0.39l-0.32,-0.57l1.18,-1.28l-0.12,-1.72l-0.72,-0.58l0.21,-0.23l0.57,0.33l0.79,-0.25l0.67,0.46l0.31,0.97l0.49,0.39l1.39,0.04l0.36,-0.45l-0.36,-0.46l-0.94,-0.2l-0.33,-1.13l-0.7,-0.94l0.5,-0.95l1.08,-0.14l0.32,-0.38l-1.09,-2.19l0.03,-0.71l1.09,-1.12l-0.29,-0.33l0.53,-0.69l-0.47,-0.56l-0.98,0.55l-0.62,-0.45l-0.68,0.43l-1.06,-0.02l-0.01,-0.6l1.22,-0.14l0.38,-0.57l-1.31,-0.85l0.4,-0.29l-0.01,-0.58l-0.77,-0.7l-0.01,-0.46l-0.57,-0.12l-0.65,-1.3l-0.95,-0.49l0.22,-0.81l0.9,-0.89l0.26,-0.75l0.98,-0.13l0.22,-0.69l-1.49,-0.49l-1.22,0.52l-1.2,-1.06l1.53,-2.14l0.06,-0.6l-0.31,-0.29l0.94,-0.68l0.15,-0.5l-0.49,-0.33l-0.46,0.11l-2.27,1.59l-0.48,-0.97l-0.38,-0.1l-2.14,0.94l0.57,-1.71l1.68,-2.74l0.64,-0.51l-0.06,-1.78l0.69,-0.82l-1.13,-4.31l0.44,-0.09l0.26,-0.6l1.05,-0.69l-0.19,-0.58l-0.8,-0.32l-0.14,-0.28l1.27,0.24l0.34,-0.62l-1.23,-1.2l-1.15,-0.05l-0.92,-1.42l-0.4,-0.2l-1.2,0.32l-0.39,-0.41l-1.11,-2.83l-0.33,-1.76l-0.47,-0.63l-0.63,-2.88l-0.22,-2.36l0.82,-1.83ZM578.66,653.17l-0.12,0.05l-0.03,-0.04l0.16,-0.0ZM653.23,787.08l0.57,0.5l3.84,0.59l0.65,0.96l-1.84,0.63l-0.63,1.13l-1.28,0.94l-1.51,-1.14l0.21,-3.62ZM655.71,541.57l0.05,-0.09l0.04,0.01l-0.05,0.06l-0.03,0.02ZM627.44,494.8l0.16,-0.06l-0.08,0.05l-0.09,0.01ZM639.87,499.16l-0.07,-0.04l0.04,-0.08l0.0,0.0l0.03,0.12ZM657.55,533.31l0.42,-0.03l0.38,-0.21l-0.29,0.53l-0.52,-0.29ZM677.38,543.7l-0.22,-0.37l-0.25,-1.11l0.12,-0.83l0.33,0.21l0.01,2.1ZM692.95,521.88l-0.28,-0.07l-0.05,-0.23l0.17,0.12l0.17,0.18ZM695.38,499.78l-0.07,-0.73l1.02,0.21l-0.33,0.12l-0.61,0.4ZM696.49,499.23l0.14,-0.3l0.34,0.14l-0.21,0.11l-0.26,0.05ZM721.26,553.36l-0.0,-0.22l-0.06,-0.42l0.12,0.17l-0.05,0.47ZM742.73,637.67l-0.85,-1.13l0.13,-0.56l-0.38,-1.24l0.31,-0.77l3.61,-2.12l0.56,-0.95l0.65,0.74l1.75,0.43l0.64,0.45l-4.79,2.12l-1.11,1.37l-0.52,1.66ZM572.37,551.69l-0.04,-0.14l0.05,-0.08l-0.01,0.22ZM809.57,639.69l0.11,-0.18l0.38,-0.14l-0.2,0.29l-0.28,0.03ZM794.09,718.58l-0.04,-0.31l0.4,-0.4l-0.02,0.55l-0.34,0.16ZM794.11,720.88l0.12,0.06l0.23,0.03l-0.4,0.14l0.05,-0.23ZM752.09,684.41l2.22,-1.3l0.33,-0.48l0.8,-0.2l2.39,0.31l9.66,-0.79l1.99,0.19l0.97,0.49l4.51,0.38l2.02,1.34l1.7,0.1l1.03,0.67l2.25,-0.21l0.97,0.38l0.65,-0.24l3.15,2.43l-0.18,0.63l-0.76,0.74l-0.8,0.01l-3.99,1.56l-3.11,-0.31l-2.11,0.44l-4.99,-0.03l-2.56,-0.78l-3.42,-0.22l-1.45,-1.91l-1.85,-1.13l-2.25,-0.76l-4.73,-0.57l-1.03,-0.61l-0.56,0.46l-0.85,-0.6ZM652.77,796.2l1.34,-1.08l0.39,-1.15l0.65,-0.66l1.25,-0.55l0.72,-0.75l1.87,-0.62l1.13,-1.84l1.23,-1.03l0.36,-0.7l0.42,-0.27l1.68,-0.02l0.58,-0.4l0.23,-0.76l-0.52,-1.46l0.53,-1.33l-0.16,-1.71l2.17,-3.82l0.22,-2.72l1.14,-0.54l1.06,-1.39l1.11,-0.26l1.41,-0.99l0.62,-0.82l-0.01,-0.71l1.62,-2.24l2.48,-1.6l0.65,-2.03l1.89,-1.12l1.43,-2.03l1.02,0.35l0.9,-0.13l4.53,-3.0l1.05,-1.01l0.42,-1.1l1.5,-0.46l1.15,-1.15l0.63,-0.03l0.89,-0.57l0.51,-0.89l2.15,-1.52l1.37,-2.26l1.5,-3.92l1.24,-1.36l0.34,-2.36l1.01,-1.11l2.88,-5.88l-0.06,-1.18l0.74,-1.92l1.24,-0.99l2.35,-4.3l2.12,-2.93l1.07,-0.44l1.94,-2.19l0.49,-1.23l1.02,-0.65l1.4,-1.96l0.8,-0.4l0.61,-0.88l1.14,-0.46l4.04,-3.95l1.4,-0.62l7.96,-6.62l4.17,-2.69l3.7,-1.3l3.37,-1.7l6.91,-1.06l1.71,0.07l1.4,0.5l2.0,0.2l3.47,1.52l1.16,0.82l0.25,0.86l-3.4,-0.34l-0.76,0.51l0.72,0.48l-0.21,0.46l0.39,0.43l1.21,-0.43l0.13,0.75l1.3,0.11l1.86,1.14l-0.66,0.55l-0.03,1.06l1.11,0.79l-0.8,0.71l-0.09,0.96l-2.1,1.13l-1.87,1.54l0.22,0.72l-0.3,1.78l-1.19,0.78l-0.79,0.12l-0.01,1.14l-2.76,2.81l-1.46,0.58l-1.02,-0.61l-3.52,-0.21l-1.24,-0.56l-0.26,-0.76l-0.44,-0.22l-0.88,1.05l-0.73,1.72l-2.23,0.29l-0.47,0.51l-2.04,0.13l-0.59,0.63l-0.03,0.61l-3.97,2.56l-0.27,0.53l0.12,0.86l-1.26,-0.06l-1.13,1.05l-1.76,0.33l-0.23,0.65l-2.65,-0.67l-0.29,-0.8l-0.46,-0.22l-5.82,1.45l-0.29,0.48l0.2,0.82l-2.69,0.66l-0.29,0.48l1.44,6.32l-1.36,2.4l-2.11,1.81l-2.77,1.73l-0.24,-1.66l-0.38,-0.42l-2.14,-0.15l-0.61,0.32l-6.09,15.23l0.29,5.14l-1.15,1.5l-0.55,2.85l0.72,1.19l-0.55,0.98l0.29,1.98l0.87,0.77l-1.38,2.38l0.31,1.46l-1.62,1.31l-1.12,2.01l-0.21,1.82l1.32,1.03l-1.1,-0.43l-0.86,0.3l-0.28,0.85l0.29,1.45l-0.3,0.49l-0.57,-0.85l-0.81,-0.24l-1.42,1.3l-0.39,0.92l-1.68,-0.48l-0.78,0.32l-1.19,1.38l0.52,0.71l-0.6,3.08l-37.01,7.26ZM688.69,755.58l1.98,-2.71l0.28,-0.13l-0.38,1.07l-1.88,1.77ZM678.73,541.82l0.47,0.85l0.01,0.82l-0.46,-0.42l-0.01,-1.24ZM659.52,786.99l0.49,-0.72l1.79,-0.99l0.73,-1.75l0.81,-0.99l-0.31,2.22l0.19,1.04l-0.4,0.6l-2.32,-0.04l-0.98,0.62ZM662.23,534.23l0.01,-0.03l0.04,-0.02l-0.01,0.02l-0.04,0.03ZM659.87,785.06l1.03,-1.6l0.72,-0.51l-0.63,1.6l-1.12,0.51ZM659.17,532.29l1.64,-0.18l0.38,0.44l-1.32,2.15l0.08,-1.38l-0.78,-1.02ZM657.0,790.9l0.16,-0.25l0.88,-0.1l-0.46,0.23l-0.58,0.13Z", "name": "Qu\u00e9bec"}, "CA-PE": {"path": "M771.47,732.39l0.78,1.7l-0.78,1.88l0.13,0.82l0.7,0.47l0.77,-0.11l1.39,1.0l0.16,0.9l0.72,0.15l-0.07,0.8l-0.55,0.52l0.16,0.77l0.73,-0.04l0.43,-0.45l0.61,0.64l1.57,-0.16l0.33,-0.53l-0.67,-1.6l0.46,-0.19l1.51,0.13l0.16,0.47l1.06,0.44l0.4,-0.34l0.06,-0.62l0.61,-0.01l0.57,0.69l1.37,0.46l0.37,-0.51l3.75,-1.24l0.36,0.19l0.78,-0.8l2.11,-0.31l0.32,-0.51l-0.27,-0.27l0.62,-0.28l3.82,-1.4l1.87,-0.25l-1.8,2.01l-0.64,-0.34l-0.48,0.1l-0.02,0.49l-0.53,0.01l-0.31,0.51l0.32,0.48l-0.52,0.2l0.22,0.56l-1.05,0.36l0.24,0.7l0.64,0.06l-1.37,0.0l-0.4,0.32l-0.04,0.89l0.32,0.64l0.6,-0.02l0.16,0.53l0.44,0.19l0.71,-0.13l0.01,0.35l-0.58,0.3l-0.49,0.84l1.06,0.39l-2.58,1.13l-0.78,0.02l-0.99,-0.6l0.09,-0.49l-0.46,-0.25l0.36,-1.16l-0.25,-0.3l-0.71,-0.03l-0.92,-0.59l-0.52,0.49l-0.71,-0.1l1.06,-1.86l-0.51,-0.53l-0.94,0.65l-0.69,1.16l-1.06,0.01l0.29,0.75l-0.86,1.0l0.76,0.51l-2.98,-0.56l-1.4,0.5l-0.82,-0.15l-0.7,-0.68l-0.92,-0.25l0.82,-0.41l-0.92,-1.1l-1.18,0.33l-1.26,-0.1l-0.64,0.6l-1.36,0.25l0.2,-0.26l-0.39,-1.49l0.35,-0.94l-0.78,-1.42l-0.79,0.92l-1.22,-0.25l-1.58,0.61l-0.34,-0.51l0.16,-1.21l0.8,-1.45l0.1,-1.5l1.48,-2.6Z", "name": "Prince Edward Island"}, "CA-MB": {"path": "M325.95,732.99l4.14,-61.02l4.77,-62.91l10.31,-77.66l33.82,3.81l33.89,2.47l0.12,3.64l-0.6,2.66l0.36,1.51l-0.19,0.95l0.53,1.44l-0.02,2.2l-0.6,0.92l-0.31,3.26l-1.34,-0.06l-0.7,0.81l0.06,0.47l1.76,-0.06l0.29,0.93l0.76,0.46l0.02,0.76l-0.66,1.78l0.17,0.48l1.42,-0.82l0.96,1.03l0.53,2.0l0.68,0.28l1.11,-0.56l0.27,0.59l-0.57,0.66l-0.54,1.46l0.08,2.65l-0.51,0.99l-0.4,3.24l0.38,0.24l0.36,-0.27l1.44,-3.28l0.06,-3.8l0.85,-1.47l0.24,-1.36l2.39,0.3l1.61,-0.55l1.33,0.57l0.49,-0.15l0.27,1.01l0.73,0.31l1.0,-1.02l0.84,-0.08l0.28,0.31l0.16,4.18l1.69,5.63l0.69,1.0l0.49,1.81l0.25,4.64l0.43,0.18l1.03,2.86l0.47,2.27l0.56,0.64l0.43,1.27l0.27,1.71l-0.38,2.25l-1.47,3.14l-1.12,1.66l-1.62,0.59l-0.12,0.73l0.53,0.19l1.46,-0.36l2.43,-1.98l1.57,-0.33l-1.98,1.87l0.57,0.37l1.28,-0.39l1.33,-1.17l2.64,-0.65l9.39,-3.63l4.27,0.65l1.73,0.78l0.4,0.66l3.05,1.73l1.07,1.04l5.02,1.58l0.98,-0.09l3.56,1.54l-49.25,55.9l-17.57,16.1l-4.09,69.07l-36.0,-2.67l-36.08,-3.9Z", "name": "Manitoba"}, "CA-YT": {"path": "M2.99,403.6l-2.51,-3.38l99.63,-158.54l0.21,0.56l0.59,0.12l2.17,2.22l1.13,0.76l0.8,-0.0l1.33,0.76l0.84,1.67l1.71,1.75l0.18,0.8l0.9,0.66l-0.07,2.09l0.76,2.03l-0.1,2.95l1.12,0.86l0.58,-0.27l-0.01,1.69l0.41,1.39l3.81,6.94l1.36,0.79l1.09,2.36l0.71,0.44l0.6,-0.15l0.59,0.28l-11.85,21.13l-0.58,1.5l0.84,1.37l-0.55,2.17l-1.23,1.62l0.21,0.92l-0.57,1.44l-0.9,1.03l-1.33,0.65l-0.13,0.76l-0.92,1.4l-0.22,1.31l0.22,0.46l14.41,7.82l-0.45,0.78l0.79,1.4l0.09,2.32l-1.18,1.06l0.08,1.17l-0.46,0.61l0.47,1.99l-0.93,0.4l-0.31,1.21l-0.91,0.0l-1.74,2.16l0.11,0.88l1.21,0.53l-0.01,0.56l-0.91,1.75l-0.98,0.23l-0.87,0.83l-0.04,0.65l0.36,0.38l-0.74,1.47l0.3,0.57l1.49,1.0l0.94,-0.39l1.38,-0.03l1.52,0.54l-1.27,1.1l-0.08,0.74l0.43,0.46l1.31,0.21l0.7,-0.73l1.51,-0.49l0.27,1.26l1.01,0.21l-0.11,0.35l-2.02,0.3l-0.77,0.87l0.78,2.27l-0.08,3.66l-1.05,0.38l-1.32,1.63l-2.41,0.94l-0.74,0.99l-0.74,-0.1l-0.75,0.49l-0.62,-0.17l-0.32,0.4l0.05,0.31l-0.45,0.35l0.12,0.71l0.48,0.56l1.11,-0.05l-0.7,1.31l0.47,0.8l0.7,0.35l-0.12,0.55l-1.75,0.48l-0.7,1.7l-1.2,0.2l-0.48,0.64l0.08,1.28l0.92,0.26l0.9,0.76l0.63,1.68l0.7,0.59l-0.01,2.15l0.36,1.15l0.86,0.91l-1.67,1.12l-0.58,0.81l0.17,0.6l1.11,0.22l0.54,0.79l1.97,-0.15l0.59,-0.58l1.23,1.28l0.19,2.0l-0.66,0.42l-0.05,0.59l0.42,0.43l-0.02,1.43l-0.84,0.83l0.15,1.37l-0.3,0.52l0.24,0.53l0.45,0.07l-0.34,1.28l0.97,1.72l0.43,0.17l0.51,2.07l0.96,1.36l0.59,0.27l-1.75,0.01l-0.68,0.79l0.29,1.13l1.16,0.11l-0.17,1.18l0.85,0.52l-0.24,0.43l0.35,0.78l-0.17,1.41l-0.92,0.4l-0.57,1.09l-2.07,0.18l-0.81,0.97l0.09,0.6l0.72,0.23l0.01,1.12l0.49,0.51l-0.28,2.33l0.67,0.92l0.88,0.18l-2.93,2.76l0.2,2.37l-0.35,1.22l0.54,0.92l-0.16,0.9l-0.8,0.25l-0.14,0.66l0.35,0.36l0.86,-0.02l1.19,2.39l-0.76,-0.12l-0.79,0.74l0.13,0.99l-1.0,0.81l-0.09,2.31l-0.77,0.19l-0.34,0.6l1.1,1.56l1.26,0.18l0.72,0.74l-0.12,0.81l0.63,0.7l0.68,-0.03l0.86,-0.64l0.77,0.31l0.61,1.96l-0.31,0.78l0.52,1.18l-0.24,1.87l0.43,0.56l0.66,0.07l0.03,1.48l-0.41,1.6l0.51,0.73l0.33,1.51l0.7,0.77l0.06,0.96l0.76,1.13l1.44,0.78l0.74,0.03l0.74,1.3l-0.3,1.16l0.27,0.71l-0.88,3.32l-0.53,1.02l-0.84,0.25l-0.34,0.51l0.21,1.0l1.01,0.01l-0.47,1.93l-0.85,1.61l0.11,0.5l-0.38,0.94l0.32,0.94l0.58,0.12l0.32,-0.28l0.2,0.69l0.55,0.36l1.68,-0.65l0.57,0.95l1.3,0.52l1.0,-0.29l0.28,-0.9l0.4,0.12l-0.02,1.03l1.01,0.6l1.48,-1.19l0.97,1.64l1.38,0.82l1.51,1.46l2.18,-0.54l2.61,0.89l0.53,-0.31l0.8,-1.34l1.56,0.69l-0.24,3.01l-1.54,0.79l-0.48,0.84l0.61,2.61l-0.27,1.75l1.61,0.99l-0.73,2.35l0.23,4.91l-0.86,1.08l-31.4,-13.07l-24.81,-11.37l-28.47,-14.24l-20.01,-10.81l-23.54,-13.6l-0.23,-1.48l3.03,-3.02l0.42,-0.84l-0.17,-0.52l-5.13,-2.69l-3.74,0.81l-2.48,-3.89l-0.63,-0.21l-1.12,0.73ZM110.73,248.92l1.12,-0.26l0.66,1.18l-0.77,-0.34l-0.9,0.49l-0.12,-1.07Z", "name": "Yukon"}, "CA-NB": {"path": "M711.48,743.21l4.88,-3.44l1.67,-2.57l0.18,-1.28l-1.33,-5.56l2.7,-0.66l0.29,-0.48l-0.2,-0.82l5.1,-1.27l0.53,0.94l2.39,0.41l0.8,0.58l0.47,-0.21l0.15,-0.93l1.52,-0.21l1.16,-1.07l1.52,0.15l0.31,-0.53l-0.28,-0.79l0.29,-0.55l1.78,-0.33l3.5,-2.52l0.93,0.83l6.82,0.46l2.26,2.96l-0.07,0.63l0.62,0.47l0.61,-0.23l0.36,-0.92l1.13,-0.52l0.93,-1.68l1.46,-1.45l1.26,-0.71l-0.15,0.55l0.56,0.45l2.56,-1.38l0.18,0.13l-0.47,0.17l-0.22,0.6l0.36,0.29l0.68,-0.06l0.18,0.35l-0.05,1.32l-0.62,1.42l0.01,0.67l0.32,0.28l-0.22,1.07l0.35,0.36l0.21,-0.13l-0.4,1.59l0.21,0.82l-0.7,0.42l-0.69,1.63l-2.18,2.49l-0.16,0.57l0.45,0.29l1.52,-0.31l0.68,0.45l1.67,-1.33l0.89,0.36l0.53,-0.7l0.76,-0.22l0.54,1.22l-0.66,1.4l0.02,0.78l0.73,1.41l0.99,0.87l-0.1,1.13l0.5,0.3l0.38,-0.48l1.0,0.13l0.34,1.71l0.66,0.61l-0.24,0.5l0.52,0.57l0.52,-0.05l0.45,0.39l0.13,0.89l-0.66,0.54l-0.06,0.5l0.85,0.13l1.11,-0.59l0.23,1.66l0.68,0.13l3.34,-1.09l0.8,0.2l0.6,0.61l2.16,-0.91l2.12,0.21l-0.9,0.93l-2.04,0.58l-0.16,1.18l0.45,0.3l-0.94,0.55l-0.72,2.11l-0.62,-0.3l-0.6,0.17l-0.53,2.15l-1.32,-1.94l-0.41,0.29l-1.5,-1.18l-0.75,-1.2l-0.75,-0.36l-0.5,0.13l0.0,0.7l0.78,0.43l0.31,0.82l2.11,1.76l-1.03,4.22l-0.55,-0.06l-1.15,0.56l-0.78,1.52l-3.32,2.75l-2.08,2.39l-0.16,0.67l-1.49,1.15l-0.37,0.73l-0.76,-0.01l-1.1,1.21l-0.67,-0.03l-0.51,-0.64l-1.07,-0.28l0.9,-1.59l-0.53,-1.41l-0.67,0.26l-0.52,1.78l-1.1,0.95l0.5,0.88l1.02,0.38l-0.32,0.86l-0.25,0.32l-0.66,-0.3l-0.87,0.23l-0.34,0.51l0.4,0.56l-0.93,1.21l-0.64,-0.76l-0.61,0.02l-1.86,1.85l-0.3,-0.18l-0.47,0.38l-0.44,-0.36l-0.7,0.47l0.01,-0.72l-1.71,-0.72l-1.11,0.89l-0.08,0.97l-0.82,-1.35l-0.99,-0.5l-0.4,0.72l-0.82,0.25l-0.21,0.76l-1.91,-1.39l0.1,-1.92l-1.18,-1.54l0.51,-0.73l-0.05,-0.9l-1.13,-2.02l-0.43,-0.24l-0.52,0.42l0.0,0.8l-0.82,0.1l-0.88,-0.24l-0.84,-0.76l-0.33,0.08l-0.57,-0.77l0.12,-0.88l-0.46,-0.63l0.25,-0.98l-0.49,-0.6l-5.26,-19.48l-1.95,-1.12l-0.85,-0.87l-3.83,-1.73l-1.37,0.38l-0.46,1.23l-1.34,0.2l-1.27,1.39l-1.3,0.46l-1.31,1.15l-1.79,-0.77ZM746.76,774.42l-0.04,0.04l-0.08,0.14l-0.05,-0.07l0.17,-0.12ZM759.75,722.25l-0.02,-0.05l-0.0,-0.01l0.06,0.02l-0.04,0.04ZM768.61,745.97l0.01,-0.09l0.03,0.05l-0.05,0.04ZM759.95,720.22l0.52,-0.55l0.13,0.24l0.67,-0.23l-0.55,1.43l-0.78,-0.88ZM760.94,717.95l0.09,-0.3l0.01,-0.4l0.08,0.22l-0.18,0.48ZM748.75,781.92l0.08,-1.46l0.26,-0.59l0.82,1.56l-1.16,0.48Z", "name": "New Brunswick"}, "CA-NL": {"path": "M818.51,688.98l0.02,-0.65l1.55,-2.42l0.25,0.55l0.81,0.32l0.32,0.49l-1.34,0.44l-1.61,1.27ZM822.14,686.92l0.09,-0.28l0.2,0.08l-0.17,0.14l-0.11,0.06ZM824.06,685.7l-0.48,-2.57l0.46,-2.92l-0.33,-2.45l0.29,-1.53l0.64,0.39l1.83,-0.8l1.87,1.03l1.74,-0.31l0.54,-0.42l-0.17,-0.68l-0.33,-0.09l-1.27,0.39l-0.99,-0.34l-0.8,-1.03l2.21,-0.76l0.51,-1.4l-0.15,-0.42l-1.2,0.28l-0.06,-1.04l-0.46,0.04l-0.9,0.85l-1.88,0.14l-0.72,-2.27l0.34,-1.43l0.85,-1.64l0.57,0.11l0.56,1.16l0.85,0.46l0.4,-0.21l-0.55,-1.14l1.54,0.3l0.73,-0.53l-0.21,-0.41l-1.37,-0.41l-0.81,-0.81l-0.39,0.46l-0.48,-0.37l-0.65,-0.73l-0.22,-0.95l0.7,-9.03l-0.38,-4.88l0.34,-3.49l1.45,-0.26l0.59,-0.82l-0.37,-0.63l-0.77,0.32l-1.17,-0.57l1.93,-2.2l0.89,-2.81l-0.04,-0.49l-0.83,-0.7l0.51,-0.65l-0.28,-0.74l0.12,-1.13l0.56,-0.76l-0.31,-0.81l0.31,-0.71l-0.58,-0.44l0.1,-1.04l1.77,-2.59l0.98,-0.65l0.55,-1.03l1.96,-2.1l1.26,-2.08l0.7,1.99l1.55,-0.57l1.29,0.01l0.54,-0.36l-0.19,-0.69l-0.68,0.01l-0.53,-0.64l1.05,-0.21l0.4,-0.84l0.83,0.67l-0.69,0.24l-0.09,0.7l0.95,0.36l0.12,1.05l-0.54,0.02l-0.23,0.43l0.17,0.57l-0.32,0.4l-1.78,0.19l-0.8,0.48l-0.87,-0.17l-0.09,0.38l-0.71,-0.26l-0.76,0.5l-0.18,0.5l0.23,0.79l1.02,0.19l-0.16,0.91l0.29,0.62l1.83,0.78l0.39,-0.72l-0.17,-0.2l0.64,-0.8l0.68,-0.1l0.33,0.14l0.57,1.72l-0.65,0.48l0.44,0.67l-0.13,2.25l-0.35,0.55l-0.42,2.53l-0.34,0.07l-0.49,-2.17l-0.61,-0.28l-0.62,0.97l1.07,2.9l0.9,0.67l-0.65,1.64l0.04,0.86l-0.52,0.2l-0.23,0.52l0.66,0.38l-0.55,1.91l-0.98,0.27l0.0,0.67l0.86,0.21l0.12,0.69l-0.14,2.05l-0.45,1.24l-0.66,0.34l0.38,0.68l-0.47,1.24l0.06,1.84l0.16,0.63l0.56,0.14l0.13,1.13l-0.97,1.75l0.39,0.54l1.22,-0.07l0.47,3.3l0.69,-0.49l1.16,-6.05l0.4,-0.71l0.41,0.36l0.66,-0.23l-0.28,-0.85l0.56,-0.14l-0.01,-0.46l-0.46,-0.58l0.05,-1.26l0.95,-2.77l0.79,0.59l-0.18,3.42l0.93,-0.5l0.35,-1.41l0.27,0.39l0.79,-0.35l-0.0,-1.09l2.77,0.99l0.52,-0.3l0.2,-0.82l1.5,-0.94l0.12,0.59l-0.79,0.7l-0.99,1.9l-1.97,2.24l-0.69,0.29l0.06,0.6l-0.91,2.21l0.11,0.9l0.23,0.31l0.67,-0.13l0.71,-2.13l0.29,-0.41l0.38,0.14l0.48,-0.37l-0.26,1.38l0.59,0.25l-1.46,2.03l-0.14,0.97l0.53,0.67l1.61,-2.04l1.09,-0.82l0.49,0.19l0.28,0.84l0.7,-0.29l0.98,0.89l0.59,-0.38l0.01,-0.84l0.32,0.99l0.71,-0.1l0.19,-1.95l0.14,0.34l0.64,0.15l-0.35,0.84l0.22,0.44l0.59,-0.23l0.39,0.34l0.4,-0.34l0.79,0.24l0.11,-0.88l0.52,1.06l-0.54,0.71l-0.39,1.61l1.03,0.85l-0.38,1.05l0.16,0.44l0.47,-0.01l1.02,-0.97l0.76,-1.31l-0.03,-0.45l-0.62,-0.17l-0.51,0.55l-0.18,-1.15l1.57,-2.16l-0.03,-0.34l0.08,0.26l-0.25,0.67l0.57,0.54l0.48,-0.42l0.22,-1.1l1.67,-0.42l0.54,-1.2l0.62,-3.99l0.28,1.33l0.59,-0.52l0.13,0.21l-0.03,0.91l0.61,0.59l0.21,1.34l0.63,0.12l0.57,-1.64l-0.32,-0.61l0.02,-0.96l0.85,-0.12l0.79,0.7l0.31,-0.71l0.44,-0.22l-0.06,-1.2l0.32,-0.27l0.74,0.28l0.93,-0.73l5.77,0.89l0.22,0.12l-0.4,0.97l0.1,0.98l-0.49,0.24l-0.08,0.56l0.81,0.8l-2.57,1.49l0.26,0.54l-0.46,0.33l0.09,0.67l0.91,0.29l-0.86,0.34l-0.29,0.46l0.16,1.13l-1.86,1.47l0.0,1.05l0.58,0.19l1.41,-1.37l0.14,0.84l1.0,0.06l0.81,1.47l0.56,0.03l-0.39,1.08l0.37,0.5l0.57,-0.21l0.18,-0.47l0.9,-0.32l0.19,0.33l-0.99,0.74l-0.86,1.43l-1.08,0.56l-0.4,0.85l0.24,0.61l0.68,0.47l0.61,-1.3l0.97,-0.42l0.54,-1.1l0.13,0.97l0.7,0.34l0.5,-0.39l-0.16,-0.43l0.31,-1.17l0.25,0.35l0.59,-0.13l0.5,-0.63l0.27,0.58l0.47,-0.2l0.67,-1.31l0.2,-1.29l-0.28,-1.66l0.91,0.0l0.34,0.73l1.22,0.06l0.94,-3.37l0.86,0.75l0.3,2.82l-0.8,1.71l-0.96,-0.15l-1.06,0.49l0.22,1.79l-1.26,1.56l-0.53,1.5l-1.45,0.06l-0.71,0.35l-1.06,-0.39l-0.47,0.35l0.06,0.97l1.35,1.88l2.18,-0.61l-1.93,0.8l-0.05,0.78l0.26,0.14l1.9,-0.22l1.17,-1.04l-0.06,1.61l-0.81,0.3l-0.23,0.53l0.85,0.23l0.02,1.22l-1.26,-0.75l-0.46,0.03l-0.38,0.51l1.88,1.64l0.16,0.78l1.51,0.96l1.58,0.42l0.29,0.84l1.71,-1.1l-0.32,-1.21l0.06,-1.67l-0.57,-0.88l0.05,-2.14l0.64,-0.69l-0.26,-0.35l0.09,-2.07l0.87,-1.15l1.04,-0.21l0.44,-0.84l0.28,-1.77l0.43,0.3l-0.37,0.49l0.02,1.96l-0.43,1.39l0.36,1.31l-0.62,2.4l0.77,1.14l-0.53,1.03l0.11,0.6l0.39,0.29l0.12,0.67l0.88,-0.04l0.12,0.97l0.54,0.75l0.8,-0.16l0.23,0.23l0.42,-0.3l0.19,-1.05l1.35,-2.65l0.07,-1.31l-0.52,-2.42l0.56,0.06l0.51,1.46l0.77,0.05l0.18,1.36l0.28,0.41l0.86,0.2l-0.46,0.7l0.54,0.67l-0.09,1.98l-0.49,0.38l0.6,3.82l-0.59,0.45l0.34,0.65l0.58,-0.04l0.26,0.34l-0.14,0.63l0.45,0.87l0.46,2.59l-0.57,1.29l0.07,1.4l-0.47,0.74l-0.67,-0.01l-0.83,-1.05l-0.69,-0.11l-0.33,0.68l-0.63,-0.3l-0.68,1.86l-0.83,1.01l-0.73,-0.66l-0.37,-1.76l0.15,-1.33l0.5,-0.85l-0.23,-0.4l-0.58,0.22l-0.01,-0.84l-0.4,-0.27l-0.25,0.21l-0.84,-0.22l0.05,-1.36l0.49,-1.07l-1.62,-1.32l-0.34,0.41l0.02,0.96l-0.33,-0.14l-0.27,0.39l-0.02,1.71l-0.56,0.67l-0.05,1.51l-0.38,0.42l-0.36,1.88l-0.68,1.14l-1.16,0.24l-0.47,-0.99l-0.17,-1.61l0.02,-4.34l0.67,-0.26l-0.1,-0.72l-0.82,-0.24l0.6,-0.51l0.23,-1.22l-0.41,-0.34l0.61,-0.71l0.06,-0.57l-0.72,-0.23l-0.68,0.24l-0.13,-1.19l-0.59,-1.2l-0.83,-0.46l-1.16,-1.94l-0.54,-0.14l-0.55,-0.83l-0.47,0.24l-0.91,-0.8l-0.33,0.87l-0.53,-0.45l-1.3,-0.03l-0.4,0.25l0.12,0.46l0.99,0.27l0.23,1.41l-0.06,1.15l-0.64,0.45l0.37,0.72l0.0,0.98l-0.69,0.17l-0.99,4.53l-0.43,-0.07l-0.29,0.77l-0.95,-0.73l-0.76,0.59l-0.92,4.35l-0.55,0.39l-0.21,0.76l0.74,0.35l0.45,0.78l-0.11,0.53l-0.72,-0.18l-0.34,0.36l0.47,1.39l-0.02,1.18l-0.43,0.51l-0.74,0.19l-0.02,0.81l-0.52,-0.04l-0.1,-0.43l-1.25,-0.24l-1.26,2.06l-1.9,0.6l-1.19,-0.1l-0.43,-0.32l0.46,-2.27l0.88,-0.9l0.97,-0.15l2.04,-1.75l0.09,-0.86l1.22,-2.28l-0.44,-2.39l0.42,-1.17l2.27,-1.82l0.82,-1.47l-0.27,-0.9l1.23,-1.84l-0.4,-0.26l-1.19,0.33l-0.89,1.52l-1.26,0.84l0.4,-2.8l-0.47,-0.74l-0.65,1.09l-0.31,2.16l-0.31,-0.33l-0.67,0.71l-1.79,0.09l-0.18,-0.55l-0.78,-0.22l-0.73,0.71l0.13,1.82l1.21,0.81l0.24,1.37l-1.1,0.92l-0.3,-0.1l0.04,-0.89l-1.08,-0.43l-0.8,1.48l-0.02,-0.52l-0.43,-0.31l0.06,-0.78l-0.47,-0.05l1.23,-1.4l0.05,-0.44l-0.83,-0.14l-1.53,1.71l-0.77,-0.1l0.47,-1.23l-0.08,-1.5l-0.38,-0.39l0.25,-1.59l-0.4,-0.79l-0.66,-0.19l-0.47,1.48l0.31,1.95l-1.11,1.09l-0.38,1.01l0.17,-0.88l-0.28,-0.45l-0.54,0.35l-0.79,-0.88l-0.46,-0.04l-0.13,0.71l0.63,0.81l-0.1,0.83l0.37,0.4l-0.54,1.27l-0.84,-1.65l-0.47,-0.24l-0.3,0.44l0.03,1.02l0.55,0.59l0.02,0.54l-3.57,1.08l-0.41,0.46l-0.25,-0.2l-0.62,0.22l0.13,0.75l0.6,0.46l-0.21,0.36l-1.15,0.21l-1.33,-0.26l-1.5,0.92l-0.14,-0.52l-0.61,-0.41l-0.53,0.36l-0.02,0.51l-0.92,0.57l-0.17,-0.69l-0.46,-0.16l-1.88,0.89l-0.5,-0.13l-0.77,1.11l-1.38,-0.43l-0.81,0.72l-0.79,-0.15l-0.02,-0.49l-0.44,-0.12l-0.56,0.26l-0.17,0.46l-0.9,-0.11l-0.81,0.33l-1.22,1.15l-0.87,0.03l0.41,-1.32l-0.5,-0.16l-1.15,0.85l-0.09,1.71l-1.35,0.05l-0.62,1.11l-0.56,0.12l-0.42,0.57l-2.33,0.82l-1.98,1.48l-1.19,0.13l-0.86,-0.32l-0.49,-2.11l-2.24,-2.02l0.77,-0.74l0.91,-2.53l1.76,-2.24l0.33,-1.2l1.47,-2.58l0.19,-1.52l1.72,-1.6l0.36,-1.23l1.28,-0.84l0.14,-0.68l-0.91,-0.21l-2.2,1.29l-0.93,-0.35l-1.05,0.22ZM875.13,662.15l0.01,-0.05l0.03,0.05l-0.03,0.0ZM877.64,662.72l0.01,0.0l-0.0,0.01l-0.0,-0.01ZM877.66,662.95l0.18,0.25l-0.68,1.05l-0.32,0.16l0.81,-1.47ZM877.92,687.46l0.03,0.05l-0.04,0.02l0.01,-0.07ZM861.06,691.62l-0.07,0.12l-0.12,0.06l0.18,-0.18ZM860.09,692.51l-0.48,0.59l-0.29,-0.1l0.05,-0.05l0.72,-0.44ZM879.41,666.37l0.09,-0.58l0.24,-0.6l0.19,0.13l-0.51,1.05ZM875.09,662.02l-0.1,-0.13l0.04,0.02l0.06,0.11ZM856.72,657.08l-0.75,-1.19l0.46,-0.02l0.19,-0.64l0.34,0.61l-0.23,1.24ZM855.6,655.59l-0.04,-0.03l0.02,-0.02l0.02,0.05ZM854.13,657.17l0.0,-0.25l0.09,-0.07l-0.09,0.32ZM880.24,671.96l0.93,-0.43l1.21,0.01l1.03,-1.19l0.17,0.15l0.06,0.96l-1.69,0.33l-1.01,0.54l-0.41,0.04l-0.3,-0.41ZM880.32,686.11l0.4,-1.02l-0.02,0.88l-0.39,0.14ZM880.62,683.25l-0.08,-0.03l0.05,-0.13l0.03,0.15ZM865.39,648.04l0.38,0.42l0.68,-0.29l0.06,-1.23l0.98,0.8l-1.68,1.99l-0.42,-0.78l0.29,-0.24l-0.3,-0.67ZM859.7,652.85l0.19,-0.17l0.32,0.44l-0.25,-0.18l-0.25,-0.09ZM860.59,653.19l0.24,-0.05l0.02,0.23l-0.08,0.03l-0.18,-0.21ZM861.93,651.82l-0.05,-0.37l0.49,-0.4l0.03,0.24l-0.48,0.53ZM862.01,654.42l0.02,0.04l-0.01,0.11l-0.04,-0.08l0.03,-0.06ZM859.28,690.2l0.8,-0.57l0.4,0.51l-0.91,0.12l-0.29,-0.06ZM850.54,655.73l0.16,0.11l-0.16,0.24l-0.04,-0.3l0.04,-0.05ZM850.65,657.07l0.03,-0.01l-0.01,0.06l-0.01,-0.05ZM843.73,636.57l0.01,-0.34l0.77,-0.76l-0.19,0.87l-0.6,0.23ZM838.16,616.02l0.06,-0.8l0.21,-0.21l-0.04,0.83l-0.22,0.19ZM696.03,500.29l-0.19,0.36l0.37,0.59l0.59,-0.17l0.69,-0.86l0.89,0.17l-0.49,0.97l0.49,0.51l0.6,-0.2l0.44,-0.59l0.13,0.27l-0.65,0.85l0.07,0.57l-0.32,0.09l-0.24,-0.83l-0.68,-0.71l-1.19,0.27l-0.74,-0.45l-0.13,-0.43l0.35,-0.4ZM697.84,503.41l-0.02,0.02l-0.01,-0.01l0.03,-0.01ZM697.69,505.53l1.21,-1.47l1.28,-0.58l0.14,0.33l-1.01,0.24l-0.3,0.44l0.4,0.35l1.15,0.15l0.07,0.3l-0.82,0.92l0.28,0.56l0.53,-0.01l1.02,-0.87l0.17,-0.72l0.96,0.23l-0.44,0.91l0.49,0.27l0.45,-0.14l0.19,0.94l-0.7,0.47l0.16,0.63l1.68,1.31l1.17,-0.26l-0.32,2.55l0.34,0.66l0.43,-0.19l0.54,-1.08l-0.12,-1.02l0.48,0.08l-0.4,1.24l0.15,0.56l0.69,0.11l0.53,-1.32l1.06,0.31l-0.12,1.5l-2.03,0.86l-0.29,0.46l0.21,0.67l3.15,-0.37l0.01,1.37l-0.41,0.6l0.59,0.39l0.97,-0.82l0.15,-1.71l0.59,-0.14l0.26,1.19l-0.58,1.28l1.1,0.04l0.62,-0.88l-0.04,0.62l0.48,0.37l0.27,-0.15l-0.12,0.81l-0.67,0.47l-0.28,0.63l-1.18,0.73l-2.49,0.28l-0.46,1.71l0.57,0.27l0.62,-0.56l0.67,1.05l0.66,0.02l0.23,-0.46l-0.46,-0.94l1.05,0.08l0.71,-0.62l1.2,-0.33l0.42,-0.72l0.62,-0.27l0.13,-0.68l0.27,-0.01l0.57,0.35l-0.5,0.14l-0.28,0.5l0.44,0.41l0.58,-0.02l-0.22,0.99l0.25,0.41l0.66,-0.37l0.35,0.16l-0.84,1.07l0.06,0.67l0.65,0.1l0.66,-0.36l0.73,0.45l0.4,-0.35l0.12,-0.76l1.44,0.52l0.21,0.76l-0.92,1.11l0.53,0.58l1.41,-0.58l0.12,0.47l-0.41,0.55l0.04,0.61l-1.06,1.02l-0.67,1.25l-1.48,0.58l-0.62,-0.22l-0.6,0.4l-0.46,1.24l0.53,0.15l1.22,-0.6l-1.46,3.18l-0.05,0.31l0.52,0.44l0.57,-0.34l0.91,-1.39l0.93,-2.23l1.0,-0.4l-0.29,1.33l0.62,0.69l0.61,-1.64l0.69,-0.01l0.43,-0.88l0.55,-0.31l0.96,-0.01l0.21,-0.69l1.05,-0.57l-0.44,1.25l0.84,1.88l-0.67,0.73l-1.34,0.68l-0.14,1.17l0.37,0.5l-1.45,0.73l0.01,0.72l0.31,0.11l-1.25,1.46l0.46,0.55l-1.25,1.18l0.44,0.58l2.18,-1.11l0.09,-1.23l0.86,-0.89l0.16,-0.72l0.77,-0.03l1.16,-0.66l0.72,0.04l0.34,-0.45l0.3,0.01l0.37,1.03l0.55,0.25l0.4,-0.75l0.95,0.44l-0.18,0.32l-1.47,0.33l-0.95,1.54l-0.01,0.73l0.73,-0.07l0.49,-0.71l0.78,-0.42l0.74,1.54l0.56,0.1l1.0,-1.67l0.35,0.37l0.62,-0.39l0.02,-0.85l0.6,0.72l-0.34,1.3l0.43,0.73l0.35,0.27l1.01,-0.06l0.69,0.78l0.0,0.5l1.04,0.58l-1.38,1.23l-0.03,0.93l-1.56,0.45l-0.27,1.54l-2.01,-0.32l-0.25,0.64l0.19,0.24l2.15,0.88l0.91,-0.28l1.09,-1.06l1.22,-0.19l1.37,0.3l0.32,0.13l-0.52,0.68l0.65,0.3l0.26,0.8l-0.99,0.53l-0.19,0.63l0.33,0.32l1.36,0.18l0.3,0.5l0.46,0.19l0.41,-0.24l0.29,0.29l0.55,-0.51l0.62,0.17l1.44,-0.59l1.45,0.33l0.47,1.67l-0.97,0.45l-0.38,0.54l-0.62,1.94l0.28,1.04l-1.07,0.77l-0.71,-0.04l-0.49,0.33l0.61,2.02l-0.36,0.42l-4.73,-0.44l1.24,-0.79l2.21,-0.68l0.25,-0.4l-0.81,-0.5l-2.68,0.68l-0.55,0.44l-1.09,-0.08l-0.49,0.41l-0.22,0.99l0.36,0.64l5.05,0.99l-0.89,0.22l-0.25,0.62l0.41,0.27l2.62,-0.18l1.27,-0.49l0.93,0.2l0.56,-0.25l0.51,0.28l-0.61,0.54l-2.81,0.49l-0.54,0.59l-0.28,1.41l0.28,0.15l3.06,-0.22l-0.02,0.33l0.96,0.46l-1.37,0.94l-1.09,-0.04l-0.34,0.31l0.16,0.76l1.04,0.73l1.03,0.18l0.56,-0.43l1.61,-0.1l0.97,-0.6l0.76,0.2l1.48,-0.96l-0.21,1.32l0.55,0.37l-0.55,0.77l0.19,0.56l-0.32,1.03l1.47,0.69l1.52,-0.61l0.48,0.14l0.6,-0.57l0.58,0.38l-0.9,0.49l-0.01,0.65l1.33,0.47l1.7,-0.86l1.74,-0.31l0.19,0.44l-0.41,0.75l-1.47,0.65l0.21,0.67l0.56,0.25l1.92,-0.77l0.6,-1.24l0.51,0.98l-0.38,0.75l0.46,0.66l-0.14,1.23l0.53,0.45l0.76,-1.77l-0.15,-3.1l0.55,0.28l0.58,-0.15l0.03,1.06l-0.91,0.91l0.04,1.48l0.37,0.32l0.88,-0.92l0.01,1.78l0.23,0.41l0.67,-0.3l-0.55,1.03l0.37,0.82l-0.09,0.75l0.19,0.41l0.45,-0.03l0.38,-0.45l-0.04,0.62l-0.71,1.04l0.03,1.21l-0.46,0.73l0.1,0.53l0.54,-0.05l0.6,-0.86l-0.04,1.0l-1.17,1.98l0.49,1.28l0.46,-0.28l0.75,-1.92l0.56,-0.54l0.07,-1.09l0.71,-0.41l0.51,-1.51l0.42,-0.38l0.23,0.96l0.46,-0.14l0.34,-0.75l-1.12,3.19l0.36,1.06l0.43,-0.19l1.32,-2.78l0.27,-1.92l0.88,-0.36l0.44,-1.72l0.57,0.65l0.15,0.72l-0.78,1.12l-1.06,0.4l0.32,1.13l0.6,0.06l0.26,-0.54l0.49,0.27l0.7,-0.11l0.51,-0.9l1.02,-0.03l0.78,-1.05l0.58,0.28l-0.89,2.37l-0.9,1.04l0.17,0.63l-0.8,1.49l0.45,1.26l-0.65,1.0l0.16,0.62l0.34,0.14l0.59,-0.18l0.88,-1.1l0.11,-0.44l-0.51,-1.33l1.2,-1.77l0.91,-2.17l0.7,0.94l0.65,-0.15l0.89,-1.39l0.02,-0.96l1.26,-0.4l0.1,-0.99l0.4,0.04l-0.18,2.03l0.4,0.39l0.53,-0.33l0.65,0.29l-0.61,1.49l0.48,0.25l0.67,-0.26l0.5,0.69l1.28,-0.46l0.4,0.59l0.5,-0.01l0.19,-0.47l1.24,-0.04l0.63,0.43l0.66,-0.44l0.75,0.44l0.57,-0.32l-0.19,-0.82l1.25,-0.48l0.78,0.67l1.47,-0.42l0.48,0.28l1.19,-0.94l1.0,0.75l0.52,-0.08l0.79,0.49l1.29,-0.43l0.73,-0.65l0.99,0.79l-0.17,0.61l0.69,0.2l-0.04,0.32l-2.3,0.88l-0.54,0.51l0.43,0.75l1.45,-0.47l-0.65,1.12l-2.36,0.59l-2.86,1.73l-0.63,1.34l0.44,0.77l-1.94,1.14l-2.0,2.4l-1.59,0.57l-4.59,3.5l-1.34,0.21l-0.64,0.52l0.02,0.77l1.19,0.5l2.35,-1.12l2.03,-1.52l-0.03,0.33l0.48,0.25l0.63,-0.16l-0.41,0.6l-1.83,1.13l-2.0,2.67l-3.76,0.96l-0.45,0.5l0.12,0.58l-1.41,1.11l-0.58,-0.13l-0.44,0.59l1.0,0.75l0.06,1.7l0.69,1.02l-2.41,-0.59l-0.94,-0.59l-4.79,-0.39l-0.75,-0.8l-0.69,0.12l0.27,1.24l-0.38,0.97l0.35,0.59l3.26,-0.69l2.18,0.3l2.27,0.89l2.17,0.4l-2.62,2.84l-0.04,0.56l0.42,0.43l1.55,-0.45l-1.4,0.94l-0.16,0.6l0.52,0.24l1.28,-0.51l1.07,-0.9l0.83,0.15l0.31,-0.75l-0.36,-0.5l0.63,-0.65l1.03,-2.52l0.66,-0.33l0.1,-0.42l-0.29,-0.31l2.55,-1.52l1.37,-2.76l2.28,-1.07l0.51,-1.11l-0.06,-0.62l-0.83,-0.68l1.21,-2.08l0.03,-0.87l1.65,-1.1l3.13,-2.92l0.65,-0.2l0.71,-0.92l3.25,-0.59l0.5,-0.7l-0.75,-0.57l-1.61,0.39l-0.9,-0.18l-1.58,0.38l-0.92,1.24l-0.95,-0.28l0.12,-0.9l0.83,-0.25l0.42,-0.75l1.74,-0.64l1.03,0.17l3.07,-0.76l0.56,0.29l1.2,-0.93l0.61,0.24l2.07,2.23l1.09,0.59l0.42,1.18l1.26,0.49l0.19,1.3l-2.9,3.24l-0.18,0.91l0.21,0.41l0.46,-0.06l0.59,-0.61l0.22,0.2l0.93,-0.29l-0.02,0.42l0.6,0.43l-0.23,1.53l0.2,0.42l1.35,-0.49l-0.04,-1.08l0.95,-1.53l-0.33,-1.29l0.42,-0.53l0.28,-1.75l1.09,-0.23l1.33,-0.99l0.54,0.16l-0.82,0.48l0.48,0.52l3.41,-0.05l0.69,-0.42l0.14,0.42l0.98,-0.09l0.42,0.67l2.36,0.28l0.81,0.69l-0.23,0.59l0.4,0.5l0.62,-0.17l0.39,-0.76l0.32,0.03l0.39,1.44l0.81,-0.21l-0.26,0.48l0.62,0.6l-0.11,0.35l1.23,0.68l-0.27,0.64l-1.18,0.06l-0.27,0.53l0.93,0.4l-0.08,0.69l-1.31,0.15l-1.04,0.54l-0.19,0.5l0.8,0.26l-0.06,0.62l0.53,0.27l0.46,-0.21l0.28,-0.66l1.23,-0.2l0.16,0.52l0.76,0.12l0.73,0.83l-1.35,1.01l-0.27,0.56l-1.53,0.04l-0.22,0.59l0.6,0.55l1.24,0.16l1.33,0.9l-1.49,0.4l-0.08,0.83l1.44,-0.22l-0.31,0.65l-1.3,1.06l-0.9,-0.23l-1.9,0.25l-0.72,0.58l1.1,0.55l1.07,-0.29l1.16,0.14l1.45,-0.77l1.42,0.1l1.44,-0.55l0.41,0.23l0.54,-0.28l0.55,0.73l0.79,-0.3l0.34,0.7l-0.59,-0.18l-0.89,0.32l-0.04,0.72l-3.99,-0.27l-0.33,0.07l-0.2,0.68l0.76,0.49l1.66,-0.13l3.09,0.67l-0.07,0.54l0.86,0.9l0.62,0.06l0.47,0.89l-0.87,0.56l0.07,0.61l0.36,0.2l-0.14,0.29l-0.46,0.42l-0.96,0.1l-0.08,0.73l0.85,0.4l0.06,0.39l-1.6,1.97l-0.54,1.51l-1.26,0.78l-0.15,0.74l-0.6,0.22l-0.16,0.9l-0.71,1.15l-0.99,0.55l0.07,1.34l-0.68,1.28l0.03,0.76l-1.14,0.3l0.15,1.24l-0.9,0.27l-3.54,-9.36l-0.52,-0.23l-35.41,12.67l-33.8,10.74l0.05,-0.71l-1.71,-2.85l-0.93,-0.79l0.17,-0.44l-0.26,-0.43l-0.57,-0.17l-2.03,0.31l-1.48,-1.45l0.43,-1.47l0.91,-1.14l5.09,-2.36l-0.1,-0.81l-0.51,-0.48l-2.37,-0.8l-0.52,-1.28l-0.71,-0.03l-0.65,1.67l-3.72,2.2l-0.52,1.08l0.25,2.29l0.94,1.3l0.63,1.63l-0.34,2.5l1.11,1.86l-0.71,0.77l0.46,1.83l-0.26,-0.16l-0.61,0.33l-0.03,0.86l1.07,2.64l0.95,1.12l-0.28,1.2l-1.36,1.67l-2.01,-1.64l-1.2,-0.53l-1.37,0.13l-0.6,0.43l-0.11,0.65l-0.7,-0.33l-1.5,0.25l-0.26,-0.68l-1.34,-0.66l-0.91,0.41l-0.65,-2.06l-0.56,-0.04l-1.76,-1.75l-0.47,1.36l-0.62,0.28l-0.14,-1.04l-0.55,-0.3l-0.78,0.57l-1.11,-0.03l-1.48,1.15l-0.74,-0.14l-0.37,-1.35l-1.5,-0.62l-1.48,-1.26l-0.59,0.71l0.97,2.25l-0.39,0.26l-1.9,-2.81l0.14,-0.41l0.65,0.06l0.45,-0.5l-1.85,-4.51l0.79,0.47l0.52,-0.62l-2.23,-3.68l0.93,0.01l0.19,-0.47l-0.3,-0.96l-1.31,-1.69l-0.94,-0.54l-0.71,0.24l-0.33,1.54l-1.2,0.9l0.32,2.45l-0.99,0.76l0.12,0.82l-0.46,-0.14l-0.4,0.68l-1.6,-0.89l-0.58,-1.5l-0.53,-0.23l-0.83,0.6l-0.18,0.61l-1.19,-0.46l-0.46,-0.49l-1.24,-3.1l0.86,-1.04l1.84,0.33l0.27,0.57l0.51,0.13l0.73,-0.59l-0.62,-3.99l-0.75,-0.9l0.86,-1.08l-0.07,-0.6l-1.94,-1.38l-3.37,-0.19l-0.94,-0.86l-0.61,-1.14l-1.84,-0.88l0.38,-0.32l-0.13,-0.89l-0.91,-0.33l-0.67,-1.14l-2.25,-1.26l-0.04,-1.47l1.12,-1.64l-0.29,-0.92l-1.56,-1.71l-0.31,-1.14l0.71,-0.9l1.24,-0.55l0.24,-0.41l-0.29,-1.34l2.27,1.18l0.51,-0.25l0.16,-1.0l-0.42,-0.67l0.84,-0.98l0.41,-1.56l-0.43,-1.17l-2.25,-1.33l-2.3,-2.41l-0.36,-0.8l0.26,-0.35l0.6,0.08l-0.17,0.56l0.35,0.57l3.3,1.27l0.58,0.94l0.85,0.58l2.47,0.67l0.61,-0.26l0.01,-0.8l0.55,-0.25l0.23,-0.92l-1.85,-2.05l0.48,-0.97l-1.58,-1.83l-0.09,-1.14l0.41,-0.65l-0.39,-0.66l0.69,-0.18l4.57,3.66l1.4,0.26l1.2,0.7l0.87,-0.48l0.92,0.0l0.76,1.43l2.24,1.56l0.63,-0.76l0.84,0.15l0.8,-0.4l0.36,-0.71l-0.49,-1.05l1.58,-0.47l0.57,-0.59l0.63,-2.12l1.49,0.03l1.4,1.15l0.66,0.07l0.18,0.96l0.59,0.71l2.31,-0.49l0.85,-1.46l0.41,-0.06l2.36,0.71l1.03,1.13l0.93,0.34l1.77,-0.35l0.82,-0.97l0.55,0.1l0.47,-0.4l-0.12,-0.72l-0.96,-0.96l-1.38,-0.65l0.52,-0.98l-0.48,-0.98l0.04,-0.82l1.45,0.33l0.84,-0.52l-0.13,-1.6l-0.86,-2.36l0.09,-1.19l0.78,-0.5l0.29,-0.69l-0.05,-0.51l-0.56,-0.32l-1.26,0.84l-0.77,-0.14l0.82,-0.63l0.01,-0.71l1.65,-0.79l0.19,-0.89l-0.24,-0.56l-0.47,-0.2l-3.07,0.68l-1.07,-0.12l0.58,-1.08l-0.44,-2.05l-0.27,-0.45l-0.62,-0.18l-0.16,-1.95l-0.87,-0.34l-1.22,-1.39l1.23,-0.85l0.84,-1.18l1.0,-0.54l0.24,-0.48l-0.23,-0.57l-0.51,-0.1l-1.3,0.63l-1.02,-0.23l-1.02,0.35l-0.43,-0.32l0.01,-0.64l-0.54,-0.29l-1.12,1.1l-0.15,-0.79l0.91,-0.83l-0.03,-1.01l-1.08,-0.55l-1.33,0.31l-0.42,-0.42l-0.02,-0.84l-0.5,-0.95l1.38,-0.28l0.91,-1.01l-0.23,-0.5l-0.76,-0.29l-0.48,-1.3l-2.4,-2.03l0.07,-0.83l0.74,-0.66l-0.33,-1.27l0.95,-0.56l0.16,-0.48l-0.74,-0.94l0.17,-1.17l-0.42,-1.05l0.57,-0.95l-0.31,-1.24l0.09,-1.36l-1.39,-1.2l0.94,-1.54l-0.99,-1.39l-0.53,-1.77l0.91,-1.89l0.01,-1.33l-0.65,-0.67l-0.76,0.39l-0.1,0.77l-0.5,-0.48l-1.2,0.29l-0.4,-0.8l-0.56,-0.35l-0.9,-0.04l-0.36,0.57l-2.06,-2.73l-0.44,-1.22l-2.15,-0.07l-0.15,-1.73l1.09,-0.79l0.36,-0.66l-0.1,-2.05l0.86,-0.71l0.29,-1.2l1.13,-0.54l0.26,-0.9l-1.33,-1.84l-0.49,0.02l-0.81,0.98l-0.34,-0.16l-0.39,-0.85l0.05,-0.9l1.24,-0.91l0.82,-0.13l2.45,-1.25l0.42,-0.66l-0.07,-0.7l-1.4,-1.26l-1.94,-0.37l-0.78,0.53l-0.25,0.8l-1.29,0.52l-1.01,1.64l-0.81,-0.16l-0.3,-1.21l-0.89,-0.63l-2.56,0.63l-1.66,-0.61l-0.97,0.85l0.1,-0.63l-0.36,-0.43l0.45,-1.16l0.96,0.46l2.31,0.23l1.22,-0.56l0.29,-0.88l-1.03,-1.09l-1.22,-0.08l-0.99,-1.57l-0.88,-4.18l1.03,-1.31l-0.19,-0.83l-0.59,-0.35l-0.9,0.2l-1.77,2.04l-0.73,-0.95l-1.3,-0.55l-0.36,-1.4l0.81,-1.28l-0.85,-1.96l0.39,-0.6l-0.17,-0.45l0.67,-0.48l-0.02,-0.65l-0.49,-0.78l-1.06,-0.15ZM749.43,644.67l-0.21,0.06l-0.38,-0.16l0.32,0.07l0.27,0.03ZM827.52,605.46l1.17,-0.58l0.2,0.18l-0.04,0.35l-0.71,0.3l-0.62,-0.26ZM813.86,589.78l0.16,-0.56l0.66,-0.26l0.12,0.19l-0.94,0.63ZM742.78,556.73l0.27,-0.15l0.42,0.38l0.74,0.05l-1.11,0.28l-0.32,-0.55ZM743.07,555.94l0.11,-0.16l0.77,-0.06l-0.64,0.05l-0.24,0.16ZM725.03,532.72l0.15,-0.75l1.74,-0.61l-0.23,0.87l-1.66,0.49ZM716.21,518.51l0.26,-0.13l0.06,0.04l-0.32,0.09ZM701.98,503.42l-0.06,0.03l-0.14,-0.01l0.18,-0.05l0.02,0.03ZM746.33,561.6l1.29,-0.12l1.03,-0.44l-0.04,0.65l-2.28,-0.08ZM765.04,574.52l-0.09,-0.09l0.07,-0.12l0.12,0.1l-0.09,0.11ZM766.11,573.29l-0.2,-0.4l-0.0,-0.06l0.04,0.0l0.17,0.45ZM777.44,577.1l0.21,-2.19l0.71,0.01l-0.44,0.65l-0.49,1.53ZM788.01,592.75l1.22,-1.14l0.8,-0.31l1.1,-1.65l0.44,-0.22l-1.08,2.63l-2.49,0.7ZM779.46,607.1l0.03,-0.02l0.01,0.02l-0.04,0.0ZM820.61,590.82l0.0,0.0l-0.0,0.0l-0.0,-0.01ZM701.88,596.17l-0.57,-0.35l-0.42,-0.33l0.73,0.21l0.27,0.47ZM825.79,598.33l0.24,-0.16l0.14,-0.18l-0.36,0.57l-0.02,-0.23ZM821.86,591.85l1.18,-0.3l0.11,0.43l-1.18,0.08l-0.11,-0.21ZM809.43,590.34l0.28,0.04l-0.13,0.1l-0.15,-0.14ZM808.53,593.04l-0.01,-0.07l0.06,-0.23l0.07,0.28l-0.11,0.02ZM801.05,579.04l0.02,-0.15l-0.02,-0.2l0.27,0.24l-0.27,0.12ZM790.5,576.74l1.36,-1.34l0.14,0.95l0.53,0.49l-0.39,0.57l-0.93,0.16l-0.71,-0.82ZM757.4,566.9l0.54,-0.08l0.35,0.26l-0.22,0.16l-0.67,-0.34ZM753.32,565.66l0.39,-0.32l0.08,-0.97l1.15,0.24l-0.22,1.06l-1.41,-0.01ZM748.73,558.73l-0.2,-0.17l0.27,-0.02l-0.08,0.19ZM747.96,558.45l-0.96,0.19l-0.02,-0.12l0.72,-0.16l0.26,0.09ZM750.06,555.65l0.07,-0.3l0.2,-0.06l0.02,0.17l-0.29,0.18ZM744.69,552.98l0.63,-1.08l0.02,-0.72l0.75,0.24l-0.13,0.41l0.44,0.61l-0.83,0.06l-0.16,0.95l-0.37,0.33l-0.35,-0.8ZM745.53,555.04l0.78,-0.94l0.61,-0.02l0.44,1.15l-0.05,0.83l-1.79,-1.02ZM739.57,542.24l0.1,-0.7l0.05,-0.02l0.14,0.64l-0.29,0.08ZM737.12,536.75l0.17,-0.49l0.37,0.18l0.66,1.05l-0.18,0.15l-1.02,-0.9ZM737.02,541.9l0.57,-0.02l0.36,-0.73l0.61,0.38l-0.67,1.26l-0.88,-0.88ZM734.6,536.57l0.49,-1.0l0.84,0.73l-0.23,0.65l-1.11,-0.37ZM704.55,508.2l0.25,-0.58l0.82,0.14l-0.81,0.77l-0.26,-0.33ZM704.52,507.29l-0.04,-0.66l0.08,0.11l-0.04,0.55Z", "name": "Newfoundland and Labrador"}, "CA-ON": {"path": "M399.18,732.97l3.61,-62.03l17.48,-16.01l50.17,-56.68l2.38,2.85l1.41,0.72l2.09,2.16l3.34,1.59l0.32,0.93l2.49,3.6l0.21,0.78l1.14,1.35l-0.34,0.82l0.41,0.83l0.93,-0.9l0.33,0.57l1.19,0.13l-0.12,0.67l0.59,0.42l0.37,-0.21l4.38,0.75l6.3,3.23l3.98,0.98l2.15,0.97l2.94,3.12l3.19,1.18l0.02,0.41l-0.73,0.42l-1.87,3.35l-0.2,2.26l0.59,0.29l0.53,-0.6l0.5,-1.93l1.17,-2.2l0.8,-0.71l1.45,-0.24l3.65,0.71l3.97,-1.2l1.6,0.26l1.47,-0.99l1.54,0.65l0.54,1.07l1.21,-0.17l0.13,1.07l0.43,0.57l0.68,-0.28l-0.38,-1.86l3.24,0.33l0.69,0.35l1.97,-0.84l0.55,0.68l-0.33,1.5l0.67,-0.0l0.48,-0.78l1.18,0.14l1.11,-0.61l0.85,0.4l0.9,-0.04l0.79,0.99l1.11,0.18l0.24,2.22l0.89,1.67l-1.85,8.93l0.53,3.1l0.67,1.51l0.69,0.04l0.76,0.78l1.61,4.42l-0.68,3.75l1.63,5.71l-1.28,1.28l-0.38,3.56l0.34,1.55l2.94,1.95l1.54,2.72l1.27,0.85l1.71,2.1l1.35,0.88l-0.11,0.68l0.43,1.19l-2.0,1.21l-0.77,0.15l-0.57,0.56l-0.12,0.8l0.39,0.6l0.27,-0.03l1.21,-0.98l2.42,-0.18l1.79,2.17l4.33,1.42l0.88,1.65l1.7,0.86l2.17,2.18l1.19,3.1l1.0,0.99l0.31,1.74l-2.02,1.29l-1.13,2.06l-1.21,0.9l-0.45,0.98l-0.86,0.68l-0.29,0.63l0.81,0.81l0.63,0.0l0.95,-2.17l1.62,-0.81l1.32,-2.12l1.59,-1.41l3.03,0.45l0.5,0.44l0.92,0.13l2.89,1.98l0.59,1.04l2.24,1.83l7.01,59.67l-0.5,2.75l0.48,1.12l1.53,1.9l0.61,3.39l2.03,2.63l1.76,1.66l1.07,2.0l1.14,1.05l1.33,2.35l2.44,1.53l0.44,0.79l0.64,0.34l4.21,0.28l0.6,0.39l2.46,-0.27l0.96,0.32l1.48,-0.15l3.27,0.47l2.39,0.86l2.13,1.35l0.58,1.44l0.77,0.72l2.97,1.37l1.25,-0.14l0.4,-0.74l-0.27,-1.02l0.78,-0.05l0.75,1.94l0.75,0.63l1.26,2.41l0.84,0.43l2.11,0.29l1.11,0.66l1.08,-0.1l0.74,-0.95l0.94,-0.29l1.1,0.16l2.36,1.74l1.37,-0.21l1.06,-1.56l1.04,-0.35l3.5,-2.3l2.72,-0.79l1.29,-0.96l2.06,-0.26l1.36,-0.65l1.31,0.6l1.64,0.2l-0.25,4.37l1.74,1.53l-1.12,0.9l-0.49,1.45l-1.92,1.85l-2.34,0.31l-4.21,3.29l-4.61,5.87l-0.78,1.45l-0.74,0.45l-1.02,1.74l-0.62,0.48l-2.83,1.26l-3.3,2.3l-1.55,0.2l-2.37,1.7l-0.49,-0.59l-0.62,-0.03l-0.35,0.38l-0.54,-0.59l-2.13,1.15l-0.76,-0.34l-0.64,0.55l-0.69,-0.07l-2.68,1.44l-0.39,1.13l0.45,0.24l-1.75,0.25l-0.41,0.48l-1.86,0.83l-4.68,1.11l-2.57,1.33l-1.36,-0.07l-3.16,1.34l-1.55,0.25l-1.68,1.0l-0.33,0.71l-2.62,2.68l-1.39,0.28l-0.34,0.81l-1.15,0.96l-0.11,1.25l-1.66,3.08l0.19,1.1l0.59,0.56l2.05,0.62l2.58,-0.18l0.9,0.25l2.09,-1.5l0.99,-0.29l0.21,3.11l0.44,0.35l0.11,0.95l1.64,0.99l-0.31,0.36l-1.64,0.78l-1.28,-0.28l-3.23,0.38l-0.52,0.46l-1.81,0.41l-1.14,-0.22l-1.42,0.76l-4.47,1.21l-1.73,1.55l-0.19,0.66l-0.35,-0.07l-0.52,0.45l-0.51,0.79l0.06,0.86l-6.1,-1.03l-3.85,0.33l-1.74,0.54l-2.51,1.81l-2.89,3.12l-0.52,1.54l-1.15,1.04l-1.8,0.33l-3.66,2.49l-1.43,1.98l-0.09,0.9l-1.16,-0.92l-0.76,-0.11l-2.24,1.16l-0.93,0.09l-2.5,-1.04l0.23,-3.72l1.37,-0.67l2.31,0.39l1.92,-0.15l2.07,-0.47l0.67,-0.49l0.34,-1.28l-0.4,-2.01l-2.62,-0.26l0.8,-0.66l0.5,-1.21l0.33,-2.5l-0.23,-0.88l0.63,-3.06l3.6,-1.93l1.28,-2.02l1.53,-0.91l1.19,-1.36l0.79,-2.06l-0.83,-9.21l-0.61,-2.59l0.88,-1.1l0.46,-1.2l0.15,-2.05l1.0,-1.44l1.1,-0.63l0.26,-1.3l1.06,-1.69l0.17,-0.89l-0.41,-0.98l-0.04,-1.96l-1.18,-1.48l0.03,-1.32l-0.37,-0.69l-0.93,-0.06l-1.97,-2.46l0.08,-0.46l-1.7,-0.54l0.08,-0.2l0.76,0.18l3.63,-0.35l-0.43,1.17l0.89,1.12l0.3,1.84l1.72,0.67l-0.25,0.6l0.56,0.33l0.39,-0.17l0.33,0.24l0.54,-0.36l0.13,0.47l-0.32,0.56l-1.12,1.02l0.07,0.86l0.59,0.2l1.53,-1.22l0.73,0.18l-0.2,3.37l0.73,0.14l1.19,-1.81l1.46,-0.74l1.29,1.87l0.94,0.06l0.86,0.64l4.81,1.08l1.27,-1.37l-0.05,-2.95l-0.3,-0.56l-1.36,-0.75l-0.09,-0.5l0.51,-0.04l0.4,-0.74l0.59,-0.17l-0.15,0.59l0.83,0.32l0.43,0.71l2.82,-0.09l0.24,-0.64l-0.74,-0.45l0.41,-0.84l-0.27,-0.96l-0.6,-0.04l-0.53,0.62l-0.98,-1.51l-0.99,-0.12l-0.32,-0.95l-0.65,-0.11l-0.26,-0.61l-0.79,-0.33l0.6,-0.32l0.2,-0.76l-0.48,-0.81l-1.23,-0.51l0.92,-1.39l-0.63,-1.56l-0.47,-0.33l-0.88,0.01l-0.69,0.43l-0.15,0.59l-0.7,-0.07l-0.23,-1.09l-0.96,-0.31l-0.07,-1.59l-0.5,-1.17l-0.72,-0.28l-0.21,0.75l-0.38,0.04l-0.16,-0.7l-0.64,-0.22l-0.89,-1.17l-0.14,-0.96l-0.88,-1.39l-0.43,-0.07l-0.38,-1.02l-1.01,-0.62l-0.57,0.46l-0.54,-0.33l-2.99,0.52l0.06,-0.75l-0.56,-0.51l-0.86,0.29l-0.36,0.68l-2.42,-0.2l-0.32,-0.34l0.11,-0.32l-0.55,-0.23l-0.27,-0.88l-1.22,-0.45l-0.72,0.76l-0.35,-0.3l-5.57,0.15l-1.54,-0.49l-0.07,-0.38l-0.48,-0.19l-1.21,0.19l-0.29,-0.21l-1.97,0.69l0.13,-0.33l-0.57,-0.46l-0.86,0.46l-3.28,0.67l-6.33,-0.98l-0.68,0.14l-0.73,-0.55l-1.19,0.24l-1.58,-0.28l-0.96,-0.63l-1.61,0.25l-0.66,-0.22l-0.44,-0.69l0.33,-2.01l-0.21,-0.47l-0.62,-0.28l-0.88,0.03l-1.05,0.73l-1.2,-0.16l-1.02,0.74l-0.89,-0.94l1.63,-2.22l0.19,-0.7l-0.71,-1.01l-0.82,0.15l-0.03,-0.84l0.56,-0.31l1.05,0.17l0.62,-1.12l-0.19,-0.53l-1.22,-0.9l-1.71,0.01l-0.56,0.46l-0.37,-0.55l-1.24,-0.32l0.1,-0.97l0.63,-0.88l-0.18,-0.72l0.27,-0.75l1.18,-1.73l0.06,-0.58l-0.65,-1.21l-0.75,-0.24l-0.57,-1.16l-2.32,-1.17l-0.59,-0.99l-0.68,-0.41l0.48,-1.35l-0.17,-0.52l0.99,-1.39l-0.56,-0.9l0.99,-1.16l-0.1,-1.08l-1.36,-0.44l-4.18,0.47l-1.75,0.64l-1.21,0.08l-3.76,-0.81l-2.61,-2.94l-1.38,-3.12l-0.08,-1.08l-0.46,-0.45l-0.69,-2.88l-1.15,-1.48l-0.4,-1.33l-0.8,-0.6l-1.4,0.31l-0.27,0.35l-0.25,-0.04l-0.15,-0.74l-1.25,-0.46l-1.76,1.04l-1.53,-0.93l-1.41,0.65l-1.97,0.21l-0.21,-0.45l-1.66,-0.77l-1.13,0.12l-0.46,-0.75l-0.83,0.19l-0.75,-0.69l-2.8,-0.59l-1.39,-1.42l-1.64,1.0l-1.12,-0.34l-0.29,0.52l0.37,1.13l-0.18,0.81l1.8,1.59l0.03,1.28l-0.74,1.13l-0.76,0.21l-0.6,-0.51l0.42,-1.45l-0.66,-1.82l-1.23,-0.38l-0.78,0.2l-0.8,1.37l-0.0,2.41l-0.88,0.55l-0.15,1.63l-0.55,0.23l-0.51,2.34l-1.08,0.6l0.52,-2.06l0.92,-1.46l-0.04,-0.53l-0.43,-0.37l-5.21,2.26l-0.74,1.43l0.37,1.11l-1.51,3.72l-1.04,0.36l-0.33,0.8l-1.45,0.94l-2.12,-0.31l-1.54,0.55l-0.74,-0.45l-0.91,-1.45l-0.86,-0.4l-5.03,0.53l-0.6,-0.37l-1.81,0.36l-0.87,-1.51l0.09,-0.61l-0.87,-0.58l-2.52,1.18l-2.39,1.81l-1.71,0.43l-1.39,-0.23l-0.36,-0.67l-1.14,-0.19l0.07,-0.57l-0.7,-0.89l-2.68,-1.04l-0.66,-1.62l-0.66,-0.48l-2.73,0.25l-0.49,0.74l0.11,0.94l-0.39,0.19l-0.83,-1.63l-0.03,-1.17l-0.45,-0.95l-0.59,-0.29l-1.87,-0.0l0.82,-0.28l0.26,-0.4l-0.3,-0.8l-2.92,-1.0l-1.16,-0.73l-3.39,-0.36l-1.63,0.22l-0.83,0.29l-0.54,0.96l-3.01,0.33l-0.49,-1.51l-0.59,-0.6l-4.31,-0.55l-0.17,-0.66l-0.57,-0.45l-2.28,0.08l-1.11,-0.46l-1.15,-1.26l0.09,-1.93l-0.93,-4.52l-0.23,-2.72l-1.22,-0.94l-2.44,-0.45ZM472.71,752.99l-0.12,0.04l-0.06,-0.0l0.02,-0.03l0.17,-0.01ZM478.59,747.88l0.15,0.64l-0.47,0.42l-0.49,-0.12l0.81,-0.94ZM477.23,749.43l-0.4,0.46l-0.17,0.72l0.06,-0.73l0.51,-0.46ZM617.39,818.97l1.96,-1.47l0.57,-0.1l0.18,0.8l0.76,0.04l0.5,-0.3l-0.01,-0.69l1.66,-0.66l-0.41,1.69l0.39,0.57l1.51,-0.3l-0.57,1.2l0.09,0.52l0.4,0.19l-1.15,0.86l-0.53,-0.19l0.4,-0.95l-0.17,-0.45l-0.93,0.43l-0.54,-0.54l-0.8,0.06l-1.84,0.67l-0.64,-0.34l-0.07,-0.75l-0.75,-0.29ZM624.98,820.15l0.01,-0.01l0.01,0.0l-0.02,0.01ZM625.55,816.29l-0.88,0.97l-0.46,0.08l0.55,-0.73l0.8,-0.31ZM540.65,627.23l-0.07,-0.12l0.08,-0.1l0.01,0.05l-0.02,0.17ZM631.49,815.38l-0.36,-0.28l0.23,-0.45l0.55,-0.02l-0.42,0.76ZM627.3,816.03l0.76,-0.4l0.07,-0.04l-0.19,0.32l-0.64,0.12ZM581.92,801.51l0.01,-0.5l0.57,0.08l-0.37,0.17l-0.22,0.24ZM582.54,809.21l0.08,-0.02l-0.04,0.08l-0.05,-0.06ZM575.98,691.9l1.12,-1.08l0.85,7.33l-1.08,-0.7l-0.91,-1.5l0.4,-2.7l-0.38,-1.35ZM544.08,793.09l0.64,0.68l0.69,-0.74l0.82,0.42l0.64,-0.7l0.82,-0.2l0.0,1.02l0.75,0.43l0.23,0.62l0.6,0.21l0.7,-0.36l0.45,0.45l0.58,-0.27l0.5,0.81l-1.53,-0.59l-2.46,0.08l-0.84,-0.54l-3.09,-0.53l0.04,-0.61l0.44,-0.17ZM551.8,795.48l0.54,-0.33l0.22,-1.0l-0.92,-0.74l0.51,-0.53l0.2,0.27l0.44,-0.15l0.37,-0.71l1.04,-0.37l0.21,0.71l0.84,0.06l1.09,1.55l0.72,-0.51l0.42,-1.47l1.23,-0.76l0.44,0.27l-0.0,1.0l1.05,0.28l-0.19,1.49l1.03,1.15l-0.71,0.35l-2.15,2.25l-0.45,-0.55l-1.03,-0.07l-0.86,-0.45l-0.34,-0.52l-2.37,-0.45l-1.33,-0.75ZM561.38,795.5l0.14,-1.12l0.31,-0.89l0.37,-0.6l-0.5,1.08l0.43,0.57l1.05,-0.18l-0.09,0.36l-2.12,3.83l-0.58,0.22l-0.22,-0.27l1.92,-2.1l-0.14,-0.72l-0.57,-0.18ZM561.46,799.85l0.39,-0.41l0.14,-0.08l-0.3,0.47l-0.22,0.02ZM559.12,790.23l0.46,-0.13l0.58,0.12l-0.77,0.13l-0.27,-0.12ZM549.83,792.88l0.11,-0.31l0.76,-0.11l-0.14,0.31l-0.72,0.11ZM540.38,793.88l0.61,-1.05l0.4,-0.17l0.82,0.55l-0.62,1.12l-1.21,-0.46ZM532.26,787.83l1.6,-0.01l1.59,1.01l-0.18,0.7l-0.88,0.31l-0.15,0.99l-1.53,-1.95l-0.45,-1.06ZM508.42,762.98l0.75,-0.68l1.29,-0.13l1.11,0.39l-0.97,0.41l-2.18,0.01ZM486.18,744.42l0.13,-0.01l0.53,0.92l-0.33,0.05l-0.33,-0.95ZM482.14,744.75l1.2,-0.66l1.87,0.08l-0.46,1.02l-1.2,-0.05l-1.18,0.8l-0.23,-1.19ZM469.8,755.19l0.19,-0.21l0.18,-0.01l-0.36,0.23Z", "name": "Ontario"}, "CA-AB": {"path": "M139.75,606.41l0.38,-0.39l-0.02,-0.65l1.18,0.57l0.81,-0.56l-0.36,-1.98l-0.93,-0.51l0.38,-1.01l-0.68,-0.55l0.01,-0.33l37.32,-108.88l22.35,7.31l22.92,6.81l23.1,6.18l22.87,5.45l-44.18,197.52l-23.74,-5.6l-21.73,-5.63l0.08,-0.8l-0.96,-1.24l0.17,-0.95l-0.81,-1.03l-1.42,-0.63l0.23,-0.86l-0.52,-0.39l-0.17,-1.26l-0.89,-1.31l0.8,-2.77l-1.36,-0.54l-0.36,-0.46l0.84,-0.39l1.4,-2.48l-0.07,-2.44l0.13,-0.54l0.67,-0.45l0.24,-1.71l-0.41,-1.28l0.52,-4.26l-0.64,-1.2l-0.83,-3.13l-1.24,-1.02l-1.26,0.24l-0.48,-1.21l0.36,-0.7l-0.28,-1.21l-0.72,-0.4l-1.19,-1.57l-0.23,-0.8l-0.55,-0.38l0.84,-0.16l-0.02,-1.71l-1.21,-1.73l-0.1,-0.81l-1.92,-1.32l-0.23,-0.43l0.28,-1.29l-0.17,-0.62l-0.92,-0.74l-0.13,-0.8l-0.83,-0.44l-0.08,-1.12l0.37,-1.35l-0.74,-1.03l0.08,-0.91l-0.53,-0.7l-0.09,-0.87l-0.74,-0.79l0.15,-1.06l-0.35,-2.08l-1.26,-0.33l-1.17,0.69l-0.24,0.56l-0.62,-0.25l-0.14,-3.71l-1.62,-3.01l0.14,-2.56l-0.41,-0.29l-0.84,0.64l-1.09,-0.63l-1.03,-0.0l-0.4,-1.01l-0.81,-0.6l-0.28,-1.09l1.11,-0.63l0.48,-1.28l-0.31,-0.63l-1.56,-1.12l-0.59,-1.12l-0.67,0.05l-0.69,1.15l-1.39,-0.1l-0.07,-0.72l0.77,-0.54l-0.52,-1.06l0.22,-0.72l-0.41,-1.19l0.77,-0.81l-0.14,-1.64l-0.53,-0.78l0.37,-1.01l-0.53,-1.4l-1.3,-0.18l-0.07,-1.34l0.38,-1.17l-0.69,-1.05l0.31,-0.71l-0.69,-1.67l-1.29,-1.58l-0.74,0.2l-0.57,1.02l-1.63,-1.38l-0.38,-1.59l0.04,-1.64l-2.21,-1.16l-0.68,0.12l-0.5,-0.76l-0.25,-2.18l-0.69,-0.43Z", "name": "Alberta"}}, "height": 867.2308867877657, "projection": {"type": "lcc", "centralMeridian": -90.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-de-mill.js b/plugins/jvectormap/jquery-jvectormap-de-mill.js new file mode 100644 index 0000000..daafdbd --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-de-mill.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'de_mill',{"insets": [{"width": 900, "top": 0, "height": 1013.8952766123396, "bbox": [{"y": -6845388.062206638, "x": 651826.6317576179}, {"y": -5694876.55460837, "x": 1673096.1659230748}], "left": 0}], "paths": {"DE-BE": {"path": "M710.94,355.66l1.16,-1.31l0.31,-1.0l0.98,-0.97l-0.74,-2.05l0.47,-2.19l1.42,-0.94l2.79,-2.88l-0.08,-0.98l-1.47,-2.18l0.73,-6.66l-0.34,-1.33l0.64,-1.38l4.96,1.6l1.09,-0.07l0.35,-0.78l-0.73,-1.75l1.04,-2.7l2.87,-0.39l1.06,-0.5l1.18,-0.91l1.37,-2.19l0.63,0.01l0.3,2.64l0.85,0.92l1.79,0.65l3.7,0.21l1.86,-0.49l0.87,-1.38l2.02,-1.38l1.68,0.91l0.97,-0.04l0.86,-1.18l2.39,-1.71l0.8,1.09l1.68,1.32l-0.23,3.06l0.52,1.47l6.52,6.23l4.25,2.44l3.3,0.77l0.05,0.57l-2.28,4.44l-0.17,0.98l0.34,0.75l0.38,0.19l3.64,-0.35l1.11,0.49l1.94,1.99l3.86,1.43l1.24,1.07l-1.08,1.15l-0.45,2.45l-2.59,2.1l-0.44,1.05l0.23,1.98l-0.26,1.22l-0.52,0.43l-2.57,0.78l-1.68,2.53l-0.48,-0.04l-0.58,-4.22l-1.2,-1.24l-1.76,0.03l-2.4,-0.66l-5.7,-2.14l-1.45,0.18l-1.06,0.71l-1.67,-0.06l-1.51,-1.94l-1.09,-0.45l-2.61,0.59l-0.84,0.51l-0.39,0.91l0.23,2.67l-2.7,-0.01l-1.66,-0.65l-2.96,-2.75l-3.67,0.8l-1.15,-1.62l-0.5,-0.23l-4.07,1.35l-2.3,-1.43l-1.43,-0.19l-4.21,1.59l-1.43,1.07l-3.65,-0.65l-2.32,-1.38Z", "name": "Berlin"}, "DE-ST": {"path": "M511.75,377.7l-0.19,-1.91l-0.72,-0.39l-1.04,0.12l-2.74,-3.18l1.67,-1.48l0.22,-0.86l-1.19,-2.29l-1.94,-0.96l-0.25,-1.3l1.62,-0.63l4.58,-0.76l0.66,-0.85l0.34,-2.05l-0.72,-1.15l-2.88,-1.99l-1.7,-0.49l-0.89,-0.61l-6.9,-7.59l0.2,-1.63l0.97,-2.19l1.6,-0.58l2.71,0.33l0.63,-0.68l-0.8,-1.54l-3.95,-4.79l-0.65,-2.15l0.15,-3.19l2.52,-2.52l0.37,-0.71l-0.07,-0.65l-0.59,-0.69l-1.69,-0.45l-1.06,0.31l-1.12,0.88l-0.5,-0.05l-4.12,-4.8l-4.69,-7.76l-1.68,-0.93l-1.1,-0.03l-0.74,-0.64l-0.72,-3.4l-1.93,-1.84l-1.63,-3.11l0.32,-1.91l-0.33,-2.2l0.36,-1.11l-0.14,-1.09l3.24,-1.17l4.55,-0.28l4.29,0.17l5.6,-1.61l1.86,-0.81l1.06,-1.12l1.88,-1.23l0.47,-0.71l0.51,-2.5l1.3,-0.62l3.41,-0.05l5.48,1.55l5.8,-0.35l4.62,0.71l1.08,0.85l1.26,0.44l0.9,1.23l0.82,0.36l1.17,-0.2l1.85,-1.0l0.81,0.26l2.14,-0.1l5.95,-2.08l3.49,-0.77l6.06,-4.61l2.59,-0.21l0.65,-0.44l-0.46,-3.58l0.53,-2.9l0.67,-1.42l1.25,-0.47l1.34,0.35l1.48,-0.07l1.14,-0.76l1.83,-4.18l4.01,-0.91l0.66,0.36l0.03,0.89l-0.49,1.1l-0.74,0.63l0.1,0.67l1.49,0.6l3.15,0.11l0.93,0.56l0.82,2.89l0.78,0.98l1.88,0.24l3.52,-1.46l1.24,-0.22l2.83,3.53l1.47,0.99l3.2,0.18l0.8,0.39l-0.39,1.13l-1.2,1.54l0.04,1.04l6.37,3.52l2.86,0.5l3.91,1.7l1.79,0.32l1.6,-0.49l2.44,0.06l7.12,-0.65l1.23,1.43l-0.1,1.4l0.36,0.43l2.52,0.11l3.74,-0.88l2.6,0.83l0.88,1.31l1.94,5.74l-0.37,1.25l-3.08,2.11l-0.33,0.54l0.12,1.74l1.16,1.92l-1.63,1.6l-0.18,0.67l0.35,1.19l1.01,1.4l0.66,2.01l1.7,1.56l-0.22,2.11l-0.95,2.48l-0.99,1.47l-1.64,0.62l-1.93,-0.09l-0.74,0.32l-0.52,2.14l-0.57,5.23l-2.55,3.23l-0.17,0.61l0.33,0.55l0.59,0.18l2.86,-0.07l-1.32,1.38l-0.23,0.64l0.35,1.76l0.9,0.76l1.4,0.29l2.26,-0.57l1.13,-1.04l0.55,-1.93l0.31,-0.22l1.44,0.6l1.93,2.54l0.8,0.55l3.31,-0.37l-0.45,1.01l-0.12,2.75l-2.0,3.63l-1.86,1.68l-0.03,0.56l0.98,1.84l-0.76,2.32l-1.74,3.01l0.16,1.04l-0.4,1.46l0.55,2.31l-1.32,2.13l-1.56,4.21l0.39,3.28l1.16,1.2l1.26,0.31l1.26,1.89l-2.46,2.36l-2.25,5.35l1.74,3.68l2.91,2.5l1.02,2.21l2.48,1.24l1.76,1.58l6.03,6.74l0.45,2.41l1.41,1.2l4.18,2.62l1.15,0.31l1.94,-0.2l1.12,-1.25l0.72,0.02l2.52,2.54l6.33,3.8l4.95,0.78l1.34,-1.09l2.5,-1.17l0.81,-1.47l0.8,0.01l12.49,6.29l4.9,0.63l1.31,0.76l1.17,2.76l0.67,0.48l5.45,0.26l2.91,0.68l2.89,2.9l5.51,3.2l1.89,0.62l6.6,-0.62l2.67,1.69l0.47,-0.13l1.62,-2.09l3.58,0.12l1.37,0.49l-0.61,1.17l-3.36,3.14l-3.61,5.02l0.11,5.5l2.2,4.24l-0.27,1.33l-2.63,2.98l-6.68,4.5l-1.95,2.91l-1.38,-0.29l-2.04,-1.77l-1.47,-0.69l-3.02,1.13l-1.33,-1.29l-2.19,-0.93l-2.66,-0.63l-1.11,-0.64l-1.4,-2.03l-2.85,0.23l-1.12,1.22l-5.05,3.48l-1.7,0.67l-2.83,-1.01l-3.84,-0.38l-1.6,0.82l-1.73,2.63l-1.87,1.34l-0.75,0.06l-0.41,-0.49l-0.79,-0.24l-9.31,1.35l-1.31,-0.74l-7.91,-0.26l-1.23,0.64l-0.39,2.49l-0.58,0.97l-7.21,0.61l-5.74,2.15l-2.88,-0.27l-3.12,-1.14l-0.61,0.23l-0.85,2.22l-2.97,2.3l0.0,6.04l-0.39,1.31l-1.64,1.66l-1.61,1.1l-0.2,0.6l0.24,2.8l0.87,1.54l0.25,5.08l1.44,3.13l-0.02,2.43l-0.59,1.0l-1.79,0.18l-1.27,0.88l-1.0,1.56l-0.47,1.62l0.78,2.41l0.13,2.63l1.93,2.3l0.33,1.19l0.33,3.69l-0.41,1.19l-0.97,1.12l-0.06,1.28l0.27,0.36l2.72,0.71l-0.36,3.43l1.04,1.66l2.05,1.61l0.34,2.07l0.4,0.6l0.69,0.46l3.84,0.63l0.12,0.58l-1.66,2.49l-0.51,2.75l0.48,0.84l2.2,1.1l0.4,1.34l-2.24,3.48l-3.39,3.59l-0.3,1.27l0.3,1.03l-1.41,0.98l-0.47,-0.03l-0.73,-1.06l-2.49,-1.93l-0.83,-0.28l-2.78,1.17l-5.63,-1.52l-6.69,0.89l-0.46,-1.34l-3.15,-1.42l-0.72,-0.72l-0.68,-1.61l-1.48,-1.16l-4.85,-1.85l-2.26,-1.41l-1.28,-0.19l-8.75,0.64l-1.28,0.77l-0.49,-0.17l-1.14,-0.87l-0.49,-1.71l-2.27,-3.62l-0.38,-3.14l-0.61,-0.65l-2.18,-1.18l-4.08,0.63l-4.52,-0.07l-4.62,-0.52l-2.95,1.42l-5.76,-0.36l-1.48,-0.74l-0.67,-1.44l-0.29,-1.31l0.88,-0.48l0.21,-1.0l-0.82,-3.64l-2.1,-3.0l-1.06,-0.99l-2.23,-0.75l-2.12,-1.15l-0.92,-1.2l1.06,-1.26l4.82,-0.76l2.6,-1.21l1.3,-1.0l1.78,-2.78l-0.04,-0.44l-5.62,-6.96l-2.67,-4.19l-5.25,-3.49l-2.66,-0.77l-9.16,-1.13l-4.19,0.07l-15.09,-1.54l-2.43,-1.15l-0.67,-1.06l0.66,-5.07l-2.54,-4.24l0.09,-3.13l-2.01,-2.26l-1.36,-3.22l-0.05,-0.57l0.43,-0.34l2.32,0.5l1.1,-0.74l-0.05,-1.59l-0.9,-1.75l-0.74,-0.44l-1.25,-0.03l-3.13,-1.09l-1.44,-1.06l-2.81,-0.05l-4.44,-1.92l-8.84,0.18l-1.37,-0.72l-2.68,-4.06l-0.08,-3.65l-0.75,-1.81l-1.67,-1.39l-1.38,-2.21l-1.09,-2.65l-1.67,-1.02l-1.66,-1.53l-0.2,-0.68l-0.45,-2.63l0.23,-5.1l0.49,-0.55l1.7,-0.71l1.03,-1.32l1.38,-0.67l1.26,-1.81l0.13,-1.21l-0.61,-2.73l-2.14,-1.55l0.46,-2.26l2.22,-1.17l0.47,-0.99l-0.41,-0.45l-1.4,0.06l-1.36,-1.31l-2.26,-0.93l-0.26,-1.14l-1.7,-2.38l0.64,-0.28l2.89,0.27l1.38,-0.38l2.94,-2.56l0.12,-1.6l0.65,-0.27l5.49,-0.71l13.01,-0.0l2.63,-0.85l1.89,-0.24l5.82,0.07l0.95,-0.32l0.84,-1.41l0.02,-1.82l-0.42,-0.7l-1.69,-1.11l-0.01,-0.35l0.69,-0.48l3.37,-0.88l2.18,-1.02l2.45,-1.72l1.9,-2.44l0.15,-1.3l-0.45,-1.63l-0.96,-0.73l-1.5,-0.32l-0.88,-1.48l0.88,-1.92l0.69,-0.6l3.37,-0.95l1.23,-0.98l0.29,-2.18l-0.33,-1.2l-0.96,-0.68l-0.59,0.22l-0.37,0.6Z", "name": "Sachsen-Anhalt"}, "DE-RP": {"path": "M24.7,661.09l1.01,-4.92l0.64,-1.76l0.83,-0.82l0.38,-1.02l-0.36,-1.07l-0.88,-0.68l0.56,-2.05l0.64,-0.33l1.87,-0.13l0.89,-0.45l0.8,-1.55l0.04,-1.6l-0.55,-1.46l-1.12,-1.1l0.71,-0.78l2.17,-1.29l1.01,-1.26l1.91,-0.76l4.19,-0.99l1.96,-1.44l0.13,-0.46l-0.4,-1.06l0.18,-1.13l1.48,-2.03l1.17,-0.57l3.39,0.63l2.73,-0.4l1.43,-1.19l0.07,-0.88l2.15,-0.04l2.75,-1.22l0.26,-0.53l-0.14,-0.58l-3.3,-4.51l0.21,-0.78l0.67,0.02l0.63,0.43l0.83,1.31l2.25,1.19l0.81,1.92l0.82,0.49l2.38,-0.73l4.61,-2.84l4.25,-0.62l1.26,-0.47l3.26,1.3l-0.47,1.61l0.43,0.48l0.55,0.08l1.22,-0.02l2.7,-1.49l0.56,-0.02l1.58,0.98l1.21,1.29l1.85,0.39l7.79,-1.85l0.63,-0.64l0.18,-0.79l-0.35,-1.34l-1.6,-2.52l-0.39,-4.03l-0.58,-0.71l-1.84,-0.88l0.81,-2.09l-0.08,-1.91l5.26,-1.85l1.3,2.03l1.31,0.92l1.52,0.34l1.44,-0.2l0.96,-0.9l0.76,-1.32l0.23,-2.63l-0.46,-3.09l2.61,-0.83l1.55,-1.58l0.97,-1.64l5.73,-1.48l6.08,-3.37l3.16,0.86l1.4,-0.54l1.08,-1.76l2.26,0.63l1.29,-0.27l2.46,-2.13l0.85,-0.38l1.1,-2.19l1.41,0.53l0.57,1.23l0.52,0.34l5.6,0.33l5.78,-1.33l3.39,-2.17l0.2,-1.77l0.88,-1.5l0.09,-3.33l-0.32,-0.56l0.36,-0.33l2.21,-0.55l3.74,0.25l8.22,-1.92l3.88,-1.81l2.82,0.16l1.83,-2.44l4.31,-1.56l1.43,-1.83l1.04,0.55l1.03,-0.5l0.37,-1.1l-0.11,-1.22l-1.9,-2.05l3.19,-1.64l2.37,-2.16l2.49,0.71l0.86,-0.57l0.06,-2.37l-1.22,-2.58l-0.36,-3.12l0.28,-1.24l2.88,-2.32l1.1,-0.27l5.23,1.22l-1.35,4.44l0.11,1.04l1.47,1.02l2.59,0.75l3.7,3.3l1.88,1.21l2.66,-0.65l1.19,4.08l-0.21,3.99l1.05,1.68l4.13,4.5l1.6,2.36l0.67,2.23l1.11,0.27l2.96,-0.98l3.41,1.51l-0.33,1.81l-1.02,2.5l2.01,4.18l0.37,1.99l0.67,1.17l1.16,0.89l-2.47,5.41l-2.08,1.52l-1.78,0.13l-2.49,-2.33l-1.61,-0.07l-1.86,0.64l-1.53,1.74l-1.72,1.16l-0.43,1.63l-0.09,5.6l0.44,0.71l1.39,0.79l-1.7,1.6l-1.22,3.55l-1.13,0.8l-0.32,0.85l0.96,1.07l4.36,0.93l0.5,1.36l1.78,0.8l2.91,5.16l2.07,1.46l0.59,0.97l1.41,3.87l-0.08,1.13l-2.1,0.73l-5.08,-0.12l-0.86,0.67l-0.57,1.56l0.12,0.66l0.84,0.9l-1.7,2.25l-0.83,-0.2l-1.56,-1.3l-0.62,-0.04l-1.31,1.16l-5.75,2.53l-1.27,1.54l-1.17,2.26l-0.26,1.37l0.16,1.15l0.76,0.85l2.47,1.42l-0.8,3.06l-2.12,-1.58l-3.93,0.35l-1.32,1.69l-0.7,2.73l-6.56,3.92l-0.04,0.64l1.41,0.69l6.26,4.76l0.64,0.92l0.36,1.7l2.08,2.34l4.06,-0.13l4.26,-1.18l4.75,-2.1l3.81,-2.44l12.19,-3.48l3.65,0.15l1.38,0.75l10.44,9.97l1.84,4.14l-1.41,4.58l0.79,1.68l2.23,2.78l0.94,1.72l0.91,3.46l1.88,2.97l0.7,1.92l1.15,1.53l3.75,-0.47l0.94,0.31l-0.18,0.85l-1.21,1.66l-2.02,2.09l-3.21,0.55l-2.81,1.66l-1.73,2.69l-0.17,3.38l1.52,3.21l2.4,3.89l1.58,3.79l-0.74,3.29l1.87,2.64l2.18,5.43l1.29,2.32l0.0,0.5l-1.82,0.77l-0.24,1.24l0.27,0.38l1.67,0.56l3.25,0.62l0.75,1.05l-1.25,2.64l0.73,4.29l-3.48,6.65l-0.23,1.19l0.28,0.45l1.96,0.59l-0.25,1.12l-6.64,6.64l-1.28,0.59l-1.18,1.11l-0.67,2.23l-1.87,12.05l-0.41,1.21l-7.19,12.57l-2.03,2.67l-3.08,2.82l-2.62,0.81l-1.18,-0.88l-9.6,-1.69l-15.64,-7.06l-1.85,-0.17l-5.52,0.49l-8.1,-1.99l-4.7,1.56l-4.03,-0.89l-3.62,0.88l-1.19,-0.23l-0.77,-0.56l-1.82,-2.5l-2.28,-0.99l-4.22,-0.63l-2.02,-1.09l-3.43,-4.36l-1.23,-1.1l1.05,-1.13l-0.91,-2.08l-1.87,-0.57l-3.96,-0.23l-0.7,-1.43l-1.91,-0.14l-1.76,0.43l-0.43,-0.31l-1.83,0.04l-5.12,-4.44l-0.72,-3.11l0.1,-0.97l0.63,-1.08l2.04,-0.24l1.38,-1.65l0.75,-2.82l1.47,-1.42l0.58,-2.29l1.93,-1.43l0.92,-1.29l0.11,-0.76l-0.41,-0.97l0.64,-1.69l-0.53,-1.14l-1.2,-0.68l-2.44,-0.77l-5.36,-0.97l0.23,-0.69l-0.31,-0.68l-3.97,-4.06l-0.52,-1.64l0.26,-0.34l0.94,-0.54l1.88,-2.04l2.63,-1.5l0.44,-1.24l-0.36,-1.78l-1.18,-0.55l-0.24,-3.37l-1.16,-1.98l-0.56,-1.53l-0.01,-1.85l-0.47,-0.49l-0.69,-0.08l-2.81,1.53l-2.73,0.22l-4.63,-2.83l-2.24,-1.82l-7.08,-0.5l-6.52,-3.12l-2.78,1.32l-0.84,-0.58l-2.17,-0.57l-8.19,4.3l-14.41,5.61l-1.73,0.29l-2.48,-0.16l-6.27,2.41l-11.26,-0.46l-13.35,1.03l0.12,-4.73l0.51,-1.28l3.97,-4.55l2.07,-3.33l-0.2,-1.32l-1.19,-0.9l1.32,-1.56l7.15,-3.91l0.14,-0.58l-0.7,-0.78l0.12,-0.23l1.36,-0.0l-1.32,-3.0l0.06,-0.9l0.96,-0.88l-0.21,-1.96l0.73,-4.43l-0.78,-0.59l-3.33,-0.76l-4.76,-0.01l-1.62,-0.37l-1.58,-0.85l-2.85,-2.28l-1.84,-0.93l-1.05,0.02l-1.76,0.67l-1.68,-3.31l-4.74,-2.03l-1.42,-1.21l-3.23,-6.53l-1.68,-2.3l-0.67,0.03l-0.74,1.23l-1.88,-4.14l-1.71,-2.22l-0.36,-0.88l0.25,-1.47l-0.61,-2.68l-0.69,-1.17l-0.84,-0.48l1.01,-1.48l-0.25,-0.66l-0.57,-0.01Z", "name": "Rheinland-Pfalz"}, "DE-BB": {"path": "M532.83,262.93l6.91,0.27l2.22,0.8l1.92,0.23l0.44,-0.36l0.41,-3.06l1.26,-0.51l3.04,0.0l5.26,2.45l2.98,-0.23l1.98,-1.24l0.85,-2.35l-0.99,-4.37l-1.3,-1.51l-0.19,-0.75l0.51,-1.09l4.24,-3.19l1.87,-1.0l5.26,-1.62l3.25,-0.16l1.03,0.3l2.97,2.0l1.17,2.19l0.54,0.17l1.95,-1.02l2.04,-0.6l5.11,0.21l0.42,-0.46l-0.31,-1.87l-1.57,-1.18l0.96,-0.35l2.95,0.42l2.23,-2.22l5.22,-1.82l2.14,0.54l3.55,-2.62l1.44,-0.2l1.23,-2.31l0.17,-1.79l2.41,-1.35l1.44,-2.09l3.01,-1.03l2.53,-0.42l1.88,1.46l0.8,0.19l3.07,-1.7l1.07,-0.25l0.91,0.3l2.34,3.19l6.9,1.55l4.13,1.99l2.89,1.84l1.73,1.54l2.81,1.31l1.58,1.72l1.67,0.3l3.5,-0.21l2.97,-0.63l10.88,2.19l1.22,0.48l2.77,2.25l7.11,1.35l0.38,3.34l1.27,0.92l1.33,0.11l4.27,-0.77l1.3,0.08l1.24,0.36l1.45,0.99l1.62,0.34l3.88,-0.72l2.7,-0.03l1.77,-0.58l0.24,0.59l-1.32,1.13l0.25,1.02l3.0,1.28l2.7,-0.34l4.68,-4.1l2.85,-1.48l2.25,-1.6l0.85,-0.96l0.63,-1.75l2.1,-1.21l0.96,-0.92l0.67,-0.19l1.12,0.29l2.25,2.71l1.35,0.48l2.75,-0.0l0.39,-0.3l0.58,-2.63l1.22,-2.32l1.51,-1.43l1.48,-0.61l2.46,-0.19l1.97,0.33l3.98,1.73l1.99,0.37l1.84,-0.55l5.11,-3.36l1.11,-0.34l2.54,-2.43l3.16,-6.27l0.57,-2.58l0.68,-1.37l1.26,-0.97l1.71,-0.74l3.64,-0.2l2.31,-1.78l1.79,-2.64l5.81,-4.06l3.38,-0.4l3.32,0.21l3.06,-1.06l0.25,-0.48l-0.46,-1.66l-2.44,-3.76l0.14,-1.93l1.1,0.14l2.53,3.13l4.32,1.37l0.21,2.84l2.8,4.16l0.58,1.9l1.86,2.02l6.85,-0.41l5.77,0.34l4.55,1.1l2.26,-2.31l2.19,-0.37l3.58,1.44l4.08,-0.21l1.93,0.35l0.14,3.17l-0.44,2.39l-1.48,2.82l-3.44,4.48l-8.18,4.5l-0.3,2.96l0.35,0.39l7.84,1.28l6.71,0.45l1.55,-1.05l0.55,-1.69l2.56,-1.06l2.7,-2.85l6.15,-3.1l0.53,2.01l0.52,4.87l0.66,0.99l2.96,2.61l-2.35,3.78l-0.64,0.78l-1.1,0.53l-0.97,1.19l-0.76,1.72l-0.3,2.0l1.13,5.86l-3.18,8.56l-1.26,2.29l-2.94,2.52l-5.73,3.73l-5.94,2.54l-4.8,2.91l-0.19,1.17l0.61,1.47l1.4,6.23l-0.38,2.37l-0.93,1.47l-2.54,1.81l-0.11,0.53l1.13,1.86l1.83,1.23l2.18,0.58l2.2,0.14l1.83,0.66l3.26,3.12l2.65,1.16l10.37,6.27l1.45,1.4l3.42,5.49l1.13,0.87l1.78,0.68l2.93,3.21l5.79,1.88l6.19,5.72l2.79,1.89l-2.56,4.42l-0.8,3.17l0.15,0.42l1.72,1.3l0.37,1.13l-1.53,2.92l-2.32,3.03l-5.2,4.02l0.57,5.35l2.33,5.75l2.0,3.74l-0.44,2.64l2.32,2.11l3.33,1.41l2.84,0.55l2.59,0.93l1.38,2.1l-0.03,2.42l-1.92,2.25l0.08,1.06l1.31,1.69l-0.33,1.66l-1.07,2.44l-0.56,3.66l1.13,2.04l5.96,3.68l-2.25,2.67l-0.94,3.67l-2.09,3.13l-0.56,1.34l-0.37,8.09l-0.8,2.46l-1.47,2.29l-1.77,1.96l-5.61,4.73l-1.43,2.62l0.38,2.98l1.61,2.04l1.83,1.09l1.23,1.37l0.39,3.4l1.12,3.5l2.26,2.19l4.69,3.23l1.2,2.14l0.94,3.23l0.16,3.3l-1.1,2.49l-1.94,2.59l-0.8,2.54l0.09,0.64l-3.68,-0.14l-4.14,-1.43l-2.43,-1.19l-2.34,-0.38l-2.13,0.08l-4.25,1.0l-12.98,5.4l-3.61,0.69l-3.27,-1.81l-3.59,-1.09l-4.83,-0.51l-6.2,1.26l-3.95,1.81l-1.29,0.97l-3.89,4.23l-0.68,1.23l-0.17,1.94l-1.45,2.85l-7.14,8.87l-0.65,0.19l-2.27,-0.54l-16.84,1.74l-14.86,-0.95l-5.83,-1.43l-2.12,0.31l-0.98,-0.34l-1.65,-2.02l-2.5,-1.41l-2.15,-1.77l-4.82,-1.95l-2.41,0.23l-1.05,0.89l-1.37,0.6l-10.59,2.94l-1.25,-1.65l-2.07,-0.6l-0.75,0.79l-1.16,0.02l-1.41,1.38l-0.62,-1.08l-0.19,-1.14l1.62,-1.55l0.77,-1.93l0.17,-3.34l-0.18,-1.13l-0.84,-1.12l1.62,-1.1l0.44,-0.88l-0.76,-3.69l-0.72,-1.45l-2.14,-1.14l-0.81,-0.96l0.6,-2.51l-0.62,-1.27l-2.96,-1.84l-1.61,0.4l-0.6,-0.2l-1.27,-0.72l-2.7,-2.76l-0.78,-0.3l1.7,-2.55l6.61,-4.44l2.82,-3.17l0.38,-2.0l-1.67,-2.84l-0.69,-2.27l0.05,-4.22l3.44,-4.71l3.42,-3.22l0.85,-1.63l-0.22,-0.56l-1.97,-0.69l-3.9,-0.1l-0.87,0.57l-0.99,1.56l-1.68,-1.39l-0.92,-0.24l-6.51,0.63l-1.69,-0.55l-5.44,-3.16l-1.64,-1.95l-1.34,-1.0l-3.16,-0.75l-5.2,-0.19l-1.54,-3.01l-1.62,-1.0l-4.91,-0.63l-12.52,-6.31l-1.37,-0.04l-1.02,1.63l-2.4,1.11l-1.29,1.05l-4.29,-0.78l-1.62,-0.78l-4.54,-2.93l-1.94,-2.14l-1.2,-0.68l-1.05,0.26l-0.91,1.14l-1.57,0.16l-0.91,-0.24l-5.29,-3.58l-0.45,-2.39l-6.14,-6.86l-1.83,-1.64l-2.35,-1.12l-1.04,-2.24l-2.57,-2.1l-1.1,-1.78l-0.78,-1.94l0.18,-0.53l0.75,-1.03l1.24,-3.22l2.18,-1.89l0.42,-0.85l-1.58,-2.49l-1.43,-0.44l-0.82,-0.87l-0.22,-3.42l1.41,-3.34l1.39,-2.35l-0.54,-2.49l0.4,-1.41l-0.17,-0.9l1.67,-2.79l0.84,-2.57l-0.06,-0.8l-0.92,-1.47l1.04,-0.59l0.71,-0.89l2.03,-3.68l0.29,-1.11l-0.07,-1.93l0.62,-1.6l-0.69,-0.46l-1.22,0.42l-2.11,0.12l-2.5,-2.97l-0.82,-0.54l-1.17,-0.23l-0.88,0.53l-0.57,1.95l-0.64,0.66l-2.14,0.61l-1.09,-0.25l-0.6,-0.7l-0.12,-0.96l1.52,-1.8l-0.03,-0.65l-1.0,-0.56l-2.71,0.1l2.65,-3.43l1.0,-7.16l2.12,0.06l2.08,-0.84l1.13,-1.67l1.02,-2.67l0.18,-2.6l-1.77,-1.68l-0.61,-1.91l-1.27,-1.95l0.04,-0.55l1.77,-1.93l-0.24,-0.97l-0.97,-1.29l-0.14,-1.2l3.23,-2.38l0.6,-1.83l-0.1,-0.97l-2.51,-6.15l-0.71,-0.68l-2.9,-0.88l-3.81,0.88l-1.98,-0.07l0.04,-1.32l-0.51,-0.97l-0.8,-0.75l-0.87,-0.31l-6.99,0.71l-2.43,-0.07l-1.52,0.49l-1.52,-0.26l-4.0,-1.73l-2.72,-0.45l-6.05,-3.35l1.24,-1.7l0.53,-1.54l-0.2,-0.49l-1.36,-0.62l-2.96,-0.11l-1.23,-0.81l-2.94,-3.67l-1.9,0.13l-3.46,1.45l-1.45,-0.21l-1.37,-3.72l-1.32,-0.74l-3.18,-0.11l-0.68,-0.29l0.99,-1.68l-0.01,-1.39l-1.2,-0.88l-4.52,0.93l-4.71,-1.53l-4.01,-0.79l-2.86,-2.43l-2.42,-0.67l-2.37,0.43l-3.15,1.8l-1.69,0.39l-1.97,-0.29l-1.51,-0.76l-3.52,-3.4l-1.27,-1.94ZM712.51,352.17l-2.13,2.83l-0.24,0.84l0.49,0.59l2.72,1.47l3.86,0.55l1.44,-1.1l3.96,-1.53l1.03,0.13l2.59,1.49l4.07,-1.29l0.78,1.4l0.65,0.35l0.6,0.08l3.06,-0.87l2.86,2.7l1.94,0.73l3.1,0.02l0.39,-0.32l0.19,-1.0l-0.28,-2.36l0.63,-0.46l2.24,-0.55l0.71,0.29l1.11,1.71l0.74,0.37l1.99,0.05l1.22,-0.76l1.06,-0.11l5.52,2.1l2.54,0.69l1.57,-0.07l0.77,0.85l0.5,3.96l0.6,0.76l1.26,-0.25l1.55,-2.46l2.57,-0.77l0.7,-0.63l0.4,-1.04l-0.21,-2.54l0.65,-1.13l2.22,-1.63l0.44,-0.98l0.1,-1.6l0.96,-0.76l0.18,-0.9l-1.61,-1.58l-3.92,-1.47l-1.78,-1.88l-1.41,-0.65l-3.7,0.31l0.05,-0.91l2.27,-4.37l-0.05,-1.23l-0.35,-0.36l-2.02,-0.24l-1.35,-0.5l-4.13,-2.37l-6.4,-6.13l-0.3,-0.98l0.18,-3.28l-3.1,-2.94l-0.74,0.12l-2.3,1.8l-0.69,1.04l-2.54,-0.92l-2.28,1.57l-0.89,1.39l-1.32,0.29l-3.59,-0.21l-1.51,-0.55l-0.47,-0.46l-0.28,-3.06l-1.65,-0.12l-0.75,0.48l-1.01,1.99l-0.99,0.74l-0.78,0.37l-2.79,0.34l-0.59,0.41l-1.16,3.09l0.7,1.81l-5.25,-1.72l-0.67,0.17l-1.1,2.14l0.34,1.33l-0.73,6.75l1.54,2.43l0.01,0.51l-4.11,3.6l-0.55,2.59l0.67,1.81Z", "name": "Brandenburg"}, "DE-NI": {"path": "M115.46,378.55l-1.27,-3.35l0.06,-2.28l2.67,-5.76l0.81,-5.02l-1.43,-3.48l-5.97,-7.99l-1.08,0.11l-1.56,1.6l-2.34,0.56l-2.5,0.14l-2.7,-0.36l-5.11,-1.6l-7.72,-0.9l-2.47,-0.99l-1.81,-1.73l-0.55,-1.82l-0.49,-4.67l-0.94,-1.66l1.11,-0.1l5.45,-2.26l0.07,-0.7l-3.17,-2.2l-0.57,-0.7l0.61,-3.17l-0.67,-1.31l3.07,-1.83l3.18,-0.81l9.21,-0.12l5.15,1.28l4.89,-0.57l4.92,1.39l0.44,-0.17l1.79,-2.83l0.78,-4.85l0.91,-14.28l0.84,-4.36l1.72,-3.95l8.07,-10.41l2.13,-4.45l0.93,-4.33l0.16,-4.89l-0.91,-9.52l-1.22,-2.76l-0.07,-1.46l2.3,-6.28l0.31,-2.15l-0.36,-5.66l1.96,-1.4l1.78,-2.46l0.39,-1.72l-0.65,-1.5l2.25,-2.78l1.17,-0.49l2.15,-0.03l2.03,0.44l3.4,1.75l1.85,0.61l0.46,-0.16l-0.02,-0.48l-2.36,-2.83l-4.08,-1.29l-22.38,-0.66l-3.4,-1.37l-1.35,-3.49l-0.03,-9.79l0.41,-2.17l1.88,-4.01l0.44,-2.0l0.65,-0.98l5.6,0.72l0.43,-0.22l0.46,-0.95l0.99,-0.52l0.71,-1.31l-0.23,-2.15l-1.01,-1.06l-2.81,-1.15l-1.11,-0.93l-0.17,-1.42l1.22,-1.3l3.18,-1.82l3.53,-3.21l1.94,-1.1l3.58,-3.03l7.63,-2.42l14.93,-1.37l2.11,1.74l2.47,0.45l14.46,-2.45l29.37,-3.34l7.48,1.77l-0.59,4.64l2.75,4.86l4.1,4.31l3.18,1.83l-0.79,2.11l0.21,0.55l3.61,1.09l0.91,1.16l-0.27,2.14l-0.82,1.08l-2.03,1.25l-1.68,0.71l-3.8,0.28l-1.88,0.92l-0.19,0.51l1.79,4.46l0.92,1.72l1.42,1.28l2.69,-0.78l1.49,0.05l1.02,0.45l3.3,2.65l1.97,2.6l1.57,0.6l1.65,-0.04l2.49,-0.83l1.28,-1.04l2.07,-2.81l2.26,-4.79l0.53,-4.59l-2.97,-3.03l-4.15,0.72l-1.61,-0.22l0.15,-1.52l0.84,-2.23l0.69,-4.5l0.77,-1.77l1.18,-1.02l1.53,-0.5l3.96,-0.16l1.71,0.64l3.93,4.81l4.05,1.68l8.34,1.33l3.5,1.38l0.0,0.51l-2.23,1.57l-2.16,2.13l-1.7,3.11l-0.6,3.95l0.12,7.57l0.62,3.43l1.33,2.46l0.43,0.2l0.32,-0.36l0.29,-3.39l-1.03,-8.32l0.08,-3.82l1.4,-2.72l4.03,-2.71l1.35,2.04l0.82,0.41l0.67,-0.14l0.87,1.2l0.75,0.15l2.39,-1.76l1.52,-1.93l0.36,-1.37l0.0,-1.94l-0.66,-2.81l-1.46,-3.59l1.02,-1.68l0.0,-0.68l-0.94,-0.41l-3.99,0.14l-2.08,-0.3l-4.64,-1.39l-1.09,-3.47l-1.37,-3.0l-0.3,-2.13l0.21,-2.17l0.58,-1.91l3.68,-7.48l2.6,-8.07l1.65,-3.52l1.35,-1.64l1.85,-1.44l2.09,-1.01l2.12,-0.4l1.94,0.11l1.04,0.37l2.4,2.2l3.55,2.43l3.79,1.59l7.76,1.55l4.28,-0.11l7.08,-1.43l3.88,0.25l2.06,-1.78l7.65,-1.52l7.72,0.06l1.68,-0.91l1.28,0.74l1.61,0.24l3.29,-0.12l2.8,2.62l9.59,13.75l3.95,3.77l2.77,1.85l1.26,1.32l1.39,4.1l6.74,8.07l1.67,1.23l5.35,1.36l5.81,3.25l6.45,1.19l0.53,5.24l0.83,0.75l0.54,1.1l1.04,0.79l1.06,2.44l1.22,1.71l4.04,3.28l1.17,-0.02l1.34,-1.59l1.38,-0.43l0.72,0.77l0.36,2.98l0.47,0.57l1.03,0.08l2.4,-0.92l2.11,1.06l0.92,0.1l3.61,-1.01l1.68,-0.82l0.46,-0.52l0.05,-1.32l4.58,-1.24l2.69,2.2l2.0,0.47l2.17,2.24l1.6,0.94l1.86,0.35l5.4,-0.3l2.63,-2.81l1.7,-0.67l6.27,0.08l3.44,1.07l13.9,6.86l4.11,1.16l3.3,-1.05l7.18,-0.24l3.19,0.68l1.97,2.0l0.29,3.96l0.69,2.03l1.7,0.76l1.8,0.34l3.11,3.24l3.13,2.07l8.94,4.23l10.75,8.24l4.89,2.99l1.4,-0.58l0.98,-0.99l3.25,-2.19l1.04,-0.13l0.63,0.31l3.15,4.06l0.99,-0.04l1.99,-1.5l1.34,1.35l1.51,0.74l3.41,4.98l3.6,3.47l1.72,0.88l2.23,0.35l1.97,-0.42l3.25,-1.84l1.92,-0.36l2.08,0.54l2.99,2.5l4.12,0.82l4.35,1.42l-1.68,3.84l-0.77,0.46l-2.47,-0.34l-1.12,0.2l-1.04,0.89l-0.56,1.38l-0.56,3.09l0.53,3.24l-2.91,0.34l-5.93,4.56l-3.45,0.76l-5.91,2.07l-3.37,-0.06l-1.5,0.92l-0.84,0.15l-1.33,-1.47l-1.3,-0.46l-1.27,-0.93l-4.82,-0.73l-5.72,0.35l-2.46,-0.91l-2.96,-0.63l-3.66,0.05l-1.29,0.44l-0.55,0.51l-0.87,3.09l-1.82,1.17l-0.98,1.06l-1.75,0.76l-5.41,1.56l-4.22,-0.17l-4.63,0.28l-3.37,1.07l-0.53,0.57l0.1,1.29l-0.37,1.23l0.33,2.15l-0.3,2.12l1.73,3.36l1.89,1.78l0.78,3.5l1.13,0.95l1.14,0.05l1.28,0.66l4.69,7.75l4.3,4.98l0.94,0.24l2.18,-1.25l1.53,0.6l-0.19,0.62l-2.61,2.68l-0.2,3.61l0.79,2.52l1.27,1.25l3.25,4.51l-2.52,-0.34l-2.02,0.75l-1.23,2.54l-0.26,2.01l7.18,8.09l1.1,0.74l1.63,0.46l2.76,1.91l0.46,0.76l-0.67,1.99l-5.37,0.98l-1.02,0.57l-0.16,0.6l0.42,1.71l1.99,1.01l0.29,0.99l0.68,0.86l-1.72,1.63l-0.06,1.01l2.97,3.43l1.55,0.07l0.12,1.84l0.44,0.57l0.57,-0.08l0.71,-0.9l0.41,0.68l0.05,1.57l-0.5,0.99l-4.02,1.27l-0.93,0.84l-0.85,1.67l-0.1,1.23l0.83,1.31l2.6,1.13l0.31,1.8l-0.86,1.53l-3.27,2.63l-1.99,0.93l-3.46,0.91l-1.05,0.78l0.03,1.25l1.94,1.35l0.02,1.63l-0.49,0.91l-6.4,0.12l-2.04,0.26l-2.48,0.82l-12.98,0.0l-5.61,0.73l-1.14,0.51l-0.11,1.63l-2.74,2.39l-1.03,0.26l-2.99,-0.26l-1.25,0.79l0.09,0.97l1.68,2.07l0.45,1.4l2.39,0.99l1.4,1.33l0.88,0.11l-1.44,0.6l-0.63,0.61l-0.61,2.7l0.4,0.91l1.85,1.1l0.42,3.24l-1.01,1.48l-1.41,0.7l-0.96,1.26l-2.27,1.25l-0.47,5.79l0.76,3.7l1.88,1.76l1.54,0.91l0.81,2.15l1.56,2.58l1.95,1.85l0.47,1.72l0.05,3.22l2.55,3.87l-4.37,2.1l-1.93,1.89l-0.17,1.13l2.41,2.9l-0.28,1.58l-0.66,-0.13l-1.34,-1.22l-0.91,-0.14l-5.99,2.2l-4.05,0.05l-3.45,-2.38l-4.79,-2.12l-1.12,-0.13l-4.61,0.8l-0.33,0.78l0.52,1.1l-0.13,0.92l-1.26,3.01l-2.25,1.73l-0.56,0.95l-3.3,1.84l-0.96,2.03l-5.65,2.71l-1.08,-0.06l-1.01,-1.16l-2.25,0.27l-0.95,0.96l-0.19,0.79l0.23,0.63l-0.88,1.42l-2.15,0.83l-0.44,0.51l0.07,0.79l-4.27,-0.14l-1.56,0.26l-1.43,1.41l-2.09,-1.47l-0.61,-0.1l-1.18,1.11l-2.01,0.97l-1.17,1.15l-4.75,3.28l-3.87,-2.56l-0.25,-1.82l-1.11,-0.36l-1.26,1.02l-1.8,0.12l-0.56,0.44l0.01,1.23l1.21,2.13l-1.09,1.14l-0.79,-0.44l-1.69,-2.82l-2.48,-1.28l-1.37,-0.18l-0.39,0.67l0.45,1.17l-0.62,0.54l-2.41,0.65l-5.53,3.1l-0.02,0.88l0.65,1.14l3.25,2.63l0.78,0.04l1.49,-1.24l0.85,0.04l-1.09,1.29l-0.31,1.41l-4.09,3.01l-1.1,-0.09l-2.86,-3.04l-1.29,-0.6l-1.4,-0.02l-8.42,-2.95l-2.76,-2.13l1.84,0.52l1.0,-0.1l0.41,-0.79l-0.87,-2.39l1.42,-1.62l1.48,0.17l3.54,-0.51l0.61,-0.48l0.32,-0.8l-0.35,-3.43l0.22,-1.72l-0.67,-1.45l0.79,-1.08l-0.0,-0.55l-2.2,-1.92l-2.03,-4.2l1.15,-0.18l0.53,-0.45l0.52,-3.49l1.48,0.51l1.18,-0.55l-0.94,-1.81l0.05,-0.77l3.23,1.7l0.81,-0.37l0.85,-1.46l-0.08,-0.5l-1.86,-1.65l-1.21,-3.05l-0.5,-0.51l-1.86,-0.75l-0.72,-1.56l-0.56,-0.31l-3.39,0.67l-1.85,-0.52l-0.82,-1.0l-0.88,-0.35l-2.24,1.51l-2.53,-0.16l-0.61,-0.59l-0.1,-1.76l-1.06,-0.89l-1.84,0.04l-1.55,1.24l-0.93,-0.53l-4.49,1.16l-1.27,-0.04l-0.33,-0.6l0.14,-2.05l1.1,-0.82l0.42,-0.92l-0.26,-1.61l0.62,-1.44l-0.35,-2.27l0.09,-1.97l0.97,-1.1l0.45,-1.29l1.54,-0.82l1.19,-1.09l1.83,-4.09l0.1,-3.07l0.87,-1.01l-0.0,-0.49l-2.09,-1.12l1.52,-1.85l0.52,-1.31l-0.12,-0.43l-0.96,-0.45l-2.14,0.73l-2.17,0.28l-4.42,-0.14l-3.68,0.78l1.21,-2.96l0.24,-1.56l-0.82,-2.63l-0.65,-0.77l-2.46,-0.96l-3.71,0.26l1.38,-1.61l1.11,-3.64l-0.01,-1.25l-4.14,-1.68l-1.96,0.4l-0.87,1.33l-4.09,-1.65l0.35,-1.29l1.55,-1.13l0.61,-1.57l-2.17,-5.31l1.26,-2.23l-0.13,-1.54l-1.36,-1.61l-2.66,-0.94l-0.67,-0.58l0.56,-2.1l-0.42,-0.74l-0.99,-0.53l-7.02,-0.81l-3.33,0.12l-2.84,0.49l0.93,-1.56l0.05,-1.05l-1.75,-3.98l2.55,-0.61l2.71,-0.03l0.42,-0.72l-0.88,-2.83l0.24,-0.48l3.03,-2.05l-0.37,-0.75l-2.65,-0.59l-5.42,-1.94l-0.31,-0.92l1.2,-6.89l1.09,-1.98l3.88,-0.02l2.7,-1.32l2.14,-3.59l3.22,-4.3l-1.8,-5.79l1.98,-1.61l0.46,-1.66l-0.36,-0.48l-1.9,-0.68l-1.64,-1.87l-1.76,-0.31l-5.64,2.47l-3.2,2.9l-2.43,5.57l-0.6,0.76l-6.47,1.19l-3.46,1.17l-3.1,0.29l-11.05,-1.16l-0.34,-1.5l0.39,-2.62l-0.58,-1.49l0.25,-2.87l-0.36,-2.11l-2.87,-4.32l-1.71,-1.2l-1.77,-0.58l-1.21,0.05l-4.82,1.94l-1.5,0.25l-4.82,-0.13l-2.27,0.32l-3.29,2.31l-1.15,4.18l-0.92,0.77l-1.62,0.63l-5.46,0.59l-1.93,-0.59l-2.26,-0.0l-2.14,-0.66l-0.49,0.52l1.95,5.39l1.3,1.69l6.51,2.58l2.76,1.65l1.18,1.57l0.83,2.02l1.01,4.38l0.09,11.88l0.43,1.49l3.2,1.97l-0.55,1.26l-1.48,1.81l-4.92,2.75l-0.82,1.03l-1.0,2.34l-0.51,0.29l-0.57,0.12l-12.68,-2.85l-3.2,2.34l-2.29,2.56l-2.84,1.69l-6.78,2.13l-3.58,-1.05l-3.66,0.55l-1.61,0.66l-4.65,3.55l-2.3,-1.12l-3.31,-1.03l-1.95,-4.25l0.09,-0.44l1.01,-0.92l1.66,-1.09l2.38,-0.91l4.44,-0.76l1.34,-3.69l1.36,-2.54l-0.13,-1.03l-2.75,-1.05l-4.25,0.24l-0.58,-0.37l-0.63,-1.57l-2.6,-0.46l-0.47,-0.59l1.57,-1.68l0.83,-1.43l0.02,-0.69l-0.9,-1.99l2.07,-1.89l0.88,-1.35l-0.05,-0.6l-1.31,-1.82l-0.28,-1.23l3.7,-0.71l0.46,-0.33l0.02,-0.85l-3.03,-4.39l-3.79,-4.04l-1.29,-0.17l-6.88,2.01l-1.96,-1.62l-6.64,-3.45l-2.38,-0.72l-0.49,-0.57l-1.06,-5.25l-0.47,-0.81l-0.94,-0.61l-7.02,-1.79l-1.14,0.23l-0.82,1.0l-1.19,4.42l0.45,1.23l1.48,1.15l-1.05,0.79l-1.37,3.44l-1.33,1.45l-2.55,-0.26l-2.1,0.49l-4.64,3.18l-4.97,4.25l-1.66,0.81l-3.05,0.66l-6.57,4.03l-3.97,0.72l-13.48,0.46l-2.82,1.87l-3.94,1.38l-2.32,-0.08ZM267.32,254.66l3.32,0.02l0.42,0.3l1.31,2.15l0.22,2.67l0.49,1.35l1.59,1.98l4.61,4.16l0.05,4.06l0.58,0.68l1.55,0.22l5.01,-0.89l5.07,2.57l2.07,0.29l2.05,-0.57l0.52,-1.0l4.53,2.68l4.27,-2.41l1.66,-1.57l0.62,-3.85l1.06,-1.85l-0.49,-1.03l-2.34,-2.04l-0.27,-0.6l1.56,-1.38l0.07,-0.82l-3.71,-3.45l-0.75,-0.19l-0.77,0.38l-1.49,2.82l-1.38,0.03l-3.32,-1.36l-3.71,-2.54l-4.35,-0.27l-2.53,-1.4l-0.19,-0.99l-0.64,-0.48l-3.51,-0.02l-1.93,0.44l-6.98,-2.15l-2.86,-1.43l-2.49,0.47l-3.4,-1.71l-1.19,-0.2l-2.22,0.28l-0.3,0.59l1.66,3.23l4.26,1.53l2.28,1.29ZM227.51,180.96l-1.99,1.47l-1.87,-0.53l-0.68,0.29l1.08,-1.64l1.72,-0.61l2.03,0.27l0.75,0.44l-1.04,0.33ZM203.67,172.73l0.94,0.46l-4.32,-0.76l-1.77,0.08l-0.38,0.36l-0.09,0.99l-1.02,-0.6l0.18,-0.36l1.55,-0.47l1.98,-0.18l2.93,0.48ZM191.01,174.13l-5.02,2.07l-2.65,0.13l-2.31,-1.24l-0.49,0.09l-1.57,1.43l-0.87,-0.22l2.08,-2.12l3.95,-0.72l7.87,0.44l-1.0,0.13ZM173.77,177.67l-7.37,-0.07l-3.4,0.67l-0.32,0.35l-0.23,2.01l-2.39,0.1l-0.64,-0.46l-0.29,-1.55l0.41,-1.29l0.99,-0.5l11.55,-0.15l1.69,0.9ZM150.2,180.57l2.02,-0.32l1.74,0.31l0.88,0.58l-0.86,0.38l-3.78,-0.95ZM146.19,181.41l-4.62,1.49l-11.88,1.28l-2.78,-0.63l3.4,-1.62l5.2,-0.71l10.68,0.19ZM118.67,186.33l-15.74,1.45l1.05,-0.42l13.24,-1.39l1.45,0.37ZM104.4,192.52l-2.3,2.1l-1.24,-0.42l-1.0,-0.75l0.02,-1.31l0.81,-0.46l1.59,0.01l2.12,0.83ZM86.49,201.05l-1.79,-0.07l-1.97,0.75l-1.55,-0.63l-1.22,-1.42l-0.29,-1.2l0.84,-0.53l7.38,-1.84l3.39,-0.21l0.85,1.36l-1.66,0.21l-5.17,1.55l-0.32,0.39l0.0,0.82l0.28,0.38l1.22,0.43ZM87.0,201.35l0.07,0.04l0.19,0.21l-0.26,-0.25Z", "name": "Niedersachsen"}, "DE-MV": {"path": "M481.88,178.09l1.27,-5.8l-0.83,-3.75l-1.13,-2.45l0.29,-1.56l0.83,-1.66l4.68,-2.26l4.85,-3.67l2.24,-1.2l1.72,0.43l-0.12,1.14l0.99,0.72l3.24,-0.41l1.7,-0.93l0.16,-0.56l-0.33,-0.33l-3.9,-1.01l-0.81,-0.48l-0.52,-0.73l0.03,-3.3l1.59,-0.26l4.11,-3.22l3.45,-0.82l5.17,-2.25l11.79,-1.27l0.68,0.21l0.55,0.62l0.61,1.82l0.75,1.05l3.59,0.9l0.34,0.43l-0.43,2.9l0.44,1.82l1.39,0.62l3.84,-0.01l3.92,-2.68l0.43,0.23l0.95,1.8l0.72,0.58l3.97,0.08l3.88,4.15l1.03,0.52l1.12,0.0l0.4,-0.36l0.12,-1.35l1.74,-4.84l-0.39,-2.18l0.58,-0.78l1.57,-0.67l0.3,-0.51l-0.53,-2.5l3.15,-2.59l0.06,-1.4l2.37,0.48l2.19,-1.25l1.85,-3.64l2.07,-0.97l1.22,-1.54l0.55,-1.83l-0.73,-0.73l0.25,-0.95l3.14,-4.29l2.97,-1.67l3.7,-0.43l8.27,1.17l23.4,-4.06l3.29,-1.69l0.42,3.25l-0.36,3.7l0.21,3.25l2.42,2.44l0.52,0.02l0.1,-0.51l-0.91,-1.57l-0.48,-3.42l-0.47,-1.21l0.85,-1.3l2.72,-1.25l1.04,-2.02l-0.33,-0.57l-1.1,-0.09l-1.94,0.39l3.27,-3.47l2.05,-1.51l2.28,-3.09l9.96,-4.23l3.84,-2.6l1.52,-1.45l3.52,-5.52l1.05,-1.22l-0.59,1.13l0.6,1.49l-0.41,1.37l-1.07,1.02l-1.5,0.28l-0.3,0.53l1.67,4.2l-0.96,0.92l0.08,0.64l4.28,2.4l2.76,0.51l2.1,-1.06l0.21,-0.46l-0.4,-0.3l-1.44,0.05l-1.04,-0.41l-1.72,-1.22l0.5,-1.24l0.86,-1.09l2.41,-1.89l2.2,-1.01l0.58,-2.84l1.52,-1.04l6.33,-2.46l0.06,-0.72l-1.75,-0.91l0.0,-0.3l1.47,-0.44l1.21,0.48l0.61,-0.48l1.52,0.93l3.01,-0.65l5.35,-2.46l0.19,-0.54l-0.53,-1.6l1.75,-0.75l1.13,-0.12l0.84,0.07l0.0,0.31l-1.37,0.36l-1.07,1.21l-0.6,1.63l-0.24,1.69l0.25,0.43l0.47,-0.14l1.82,-3.02l1.44,1.83l1.27,0.53l1.27,-0.9l0.88,0.63l1.3,0.04l1.61,-1.19l1.23,2.28l2.15,2.08l3.54,-0.17l1.13,-0.3l1.19,-0.87l2.71,-4.6l2.43,-1.94l3.83,-2.0l3.76,-1.13l1.58,0.38l-0.75,0.77l-0.02,1.78l0.74,1.72l1.22,1.43l4.35,1.86l0.83,0.64l-1.7,2.66l0.47,2.25l2.74,3.57l0.27,2.86l0.51,1.42l1.24,0.49l3.99,0.0l-2.46,1.08l-0.2,0.46l0.41,0.29l3.11,-0.24l5.03,2.31l3.47,0.68l2.36,1.04l3.17,5.26l2.26,1.65l-2.2,1.58l-0.12,0.44l0.38,0.26l2.45,-0.02l3.67,-1.49l1.35,0.42l-0.96,1.68l-0.73,0.52l0.06,0.68l1.5,0.58l1.28,-0.7l0.58,0.13l3.09,5.62l1.6,1.75l2.0,1.01l2.31,0.03l0.41,-0.4l-0.16,-1.24l-2.58,-2.64l0.0,-0.38l11.86,-1.89l2.96,-1.11l4.97,-2.74l2.47,-0.67l0.11,0.58l-1.67,0.89l0.25,1.2l2.96,1.24l7.58,5.14l0.0,0.58l-1.4,1.99l-0.8,2.57l-1.13,2.22l-2.54,1.27l-0.03,0.7l1.14,0.71l3.92,4.35l3.93,1.64l0.96,2.37l0.13,1.83l0.62,0.29l1.32,-0.1l3.52,1.43l0.11,0.95l-0.54,1.35l-1.02,1.17l-7.11,4.79l-1.03,2.12l1.08,1.82l4.32,1.47l0.64,1.45l1.44,1.69l1.65,1.21l1.2,-0.08l7.09,4.81l3.28,0.64l2.2,1.94l2.93,-0.02l3.77,1.62l7.89,0.48l2.88,-0.69l1.36,-1.95l0.53,-0.3l1.33,0.21l1.2,0.95l0.24,1.85l-0.62,0.81l-4.53,2.63l0.03,0.71l2.74,1.01l2.06,0.16l0.11,3.31l-0.35,2.31l1.47,2.6l2.03,5.14l-0.01,9.18l0.78,2.91l2.34,2.95l1.05,2.83l2.0,2.75l1.02,6.87l1.97,7.47l-6.36,3.2l-2.8,2.92l-2.51,1.0l-0.8,1.97l-1.14,0.69l-6.32,-0.5l-7.49,-1.23l0.07,-1.99l8.07,-4.44l3.64,-4.68l1.56,-2.97l0.5,-2.61l-0.15,-3.62l-0.33,-0.38l-2.38,-0.42l-4.03,0.2l-3.65,-1.45l-2.68,0.55l-1.84,2.12l-4.36,-1.07l-5.89,-0.35l-6.67,0.4l-1.35,-1.65l-0.55,-1.85l-2.78,-4.12l-0.15,-2.8l-0.28,-0.36l-4.46,-1.42l-2.37,-3.03l-1.95,-0.36l-0.45,0.37l-0.11,2.73l2.43,3.71l0.34,1.25l-2.47,0.89l-3.35,-0.2l-3.69,0.49l-5.95,4.16l-1.9,2.75l-2.07,1.57l-3.36,0.12l-2.06,0.87l-1.49,1.2l-0.78,1.6l-0.52,2.46l-3.14,6.23l-2.25,2.12l-1.08,0.32l-5.11,3.37l-1.58,0.46l-1.65,-0.34l-4.03,-1.74l-2.16,-0.35l-2.69,0.23l-1.67,0.7l-1.73,1.64l-1.31,2.48l-0.54,2.42l-2.37,0.0l-1.05,-0.39l-2.24,-2.7l-1.49,-0.38l-0.95,0.24l-3.38,2.33l-0.75,1.93l-0.63,0.7l-5.62,3.47l-3.89,3.57l-2.31,0.33l-2.6,-1.06l1.35,-1.58l-0.23,-0.9l-0.71,-0.49l-2.07,0.58l-2.65,0.02l-3.83,0.71l-1.26,-0.27l-1.45,-0.99l-1.48,-0.42l-1.47,-0.08l-4.28,0.77l-1.03,-0.09l-0.84,-0.76l-0.44,-3.33l-1.02,-0.5l-2.4,-0.1l-3.98,-0.9l-2.57,-2.14l-1.45,-0.6l-11.0,-2.21l-3.17,0.63l-3.42,0.2l-1.36,-0.24l-1.39,-1.6l-2.87,-1.35l-1.69,-1.51l-3.01,-1.91l-4.27,-2.04l-6.72,-1.48l-2.18,-3.07l-1.48,-0.52l-1.36,0.31l-2.9,1.65l-1.67,-1.38l-0.83,-0.27l-2.73,0.44l-3.4,1.19l-1.37,2.07l-2.51,1.41l-0.35,2.12l-0.8,1.81l-1.46,0.23l-3.54,2.59l-1.86,-0.59l-5.53,1.92l-2.27,2.22l-2.68,-0.5l-1.8,0.75l-0.04,0.69l1.83,1.19l0.2,1.19l-4.83,-0.16l-3.84,1.51l-1.16,-2.07l-3.11,-2.09l-1.4,-0.41l-3.47,0.18l-5.42,1.68l-1.98,1.07l-4.34,3.27l-0.73,1.46l0.23,1.27l1.3,1.5l0.92,3.96l-0.59,1.85l-1.78,1.11l-2.39,0.19l-5.25,-2.44l-3.37,-0.04l-1.92,0.94l-0.43,2.95l-1.38,-0.16l-2.38,-0.84l-3.17,0.0l-2.36,-0.41l-1.94,0.19l-1.7,-2.33l-1.63,-0.83l-1.49,-1.47l-0.43,-0.03l-2.56,1.58l-2.84,-3.85l-0.96,-0.51l-1.64,0.19l-5.08,3.67l-4.62,-2.83l-10.76,-8.25l-8.97,-4.25l-3.06,-2.02l-3.18,-3.29l-3.42,-1.07l-0.41,-1.54l-0.3,-4.04l-2.26,-2.41l-3.66,-0.83l-6.36,0.22l1.87,-2.81l0.96,-6.46l0.4,-0.57l2.56,-1.02l2.21,0.2l0.63,-0.57l0.84,-2.19l5.35,-1.32l6.28,-3.89l0.24,-2.17l0.93,-2.22l-0.43,-2.79l0.74,-0.1l1.67,0.49l5.12,-0.46l0.7,0.9l0.38,1.6l0.94,0.58l1.03,-0.62l1.68,-1.92l-0.45,-0.76l0.36,-0.4l-0.03,-1.53l-1.19,-3.64l-0.06,-1.97l1.42,-1.15l0.2,-2.07l-1.01,-2.08l-0.06,-1.48l-0.36,-0.71l-1.78,-1.65l-1.19,-0.66l-2.83,-0.7l-2.05,0.25l-0.63,-0.29l-5.03,-5.16l-4.54,-0.84ZM642.03,96.75l2.68,-3.13l-0.63,2.04l0.39,1.75l-1.9,-0.76l-0.53,0.09ZM646.29,91.77l5.12,-7.49l1.57,-3.56l1.02,-1.06l0.94,-0.38l-0.15,0.3l2.09,2.72l4.42,1.54l22.39,0.02l3.61,1.41l2.46,-1.0l2.55,0.51l0.89,1.08l-2.02,1.51l-2.37,0.42l-10.42,-0.72l-4.15,-1.26l-2.84,-0.27l-0.94,0.39l-1.41,1.42l-4.37,-0.38l-1.18,0.46l-0.54,1.22l-0.68,-0.41l-1.93,0.97l-0.31,0.45l0.18,1.16l0.46,0.67l-0.88,-0.33l-2.27,0.21l-1.77,0.96l-0.78,1.25l-1.36,-1.34l-2.06,-0.82l-3.55,-0.27l-1.75,0.64ZM798.18,135.23l2.91,1.47l17.21,15.3l1.48,0.9l-1.46,3.17l-1.53,0.57l-0.19,0.67l1.65,1.65l0.58,1.53l-10.57,0.99l-2.07,-0.25l-1.58,-0.9l-0.47,0.05l-2.24,2.05l-2.77,1.31l-5.55,1.2l-6.12,0.08l-3.28,-0.8l-1.29,-1.44l2.73,-1.47l3.19,-0.58l3.4,-1.59l1.13,-1.09l0.66,-4.18l-3.57,-5.48l0.22,-2.93l4.5,0.22l1.2,0.4l-0.38,0.56l0.15,0.98l-0.76,2.6l-0.13,2.14l0.27,0.4l0.46,-0.15l1.47,-2.12l1.08,-0.47l2.68,0.0l-0.52,1.44l0.29,0.47l3.34,0.84l0.46,-0.55l-0.72,-1.6l1.22,-3.31l-0.18,-3.59l-1.42,-2.43l-0.47,-0.17l-1.9,0.64l-1.77,-3.7l-1.46,-1.56l-1.7,-1.06l-1.94,-0.38l-2.1,0.34l-1.22,1.15l0.76,2.71l-1.6,1.17l-1.07,2.06l-0.41,0.19l-2.81,0.86l0.13,-1.11l1.42,-1.77l0.37,-1.03l-0.51,-1.88l-1.02,-0.45l-4.22,1.64l-2.77,2.59l-1.39,-0.44l0.66,-2.18l2.64,-4.4l0.59,-3.89l-0.97,-2.23l-3.98,-3.38l-1.02,-1.27l0.73,-1.23l1.4,-1.19l1.62,-0.51l1.59,0.54l2.75,5.55l1.2,1.8l2.68,2.23l6.55,3.11l3.73,1.16ZM717.1,70.94l0.86,-0.33l7.41,-0.88l1.4,0.26l0.65,0.83l2.08,0.95l0.91,2.64l0.59,0.17l0.92,-0.75l0.37,-1.54l-0.73,-2.11l2.98,-2.84l2.59,-1.34l-0.78,1.96l-1.6,2.28l1.38,0.3l0.56,0.55l-1.27,2.45l0.34,0.57l1.55,0.06l1.3,-0.43l0.97,-0.99l0.59,-1.5l-0.15,-0.28l2.04,2.68l-0.5,2.26l1.94,2.26l2.76,0.85l5.06,-0.1l0.32,-0.63l-0.58,-0.81l0.81,-1.53l1.19,-1.21l0.0,-1.0l-0.82,-2.08l-1.25,-1.71l0.0,-0.53l2.07,-1.24l0.0,-0.83l-0.42,-0.4l-1.44,0.13l-2.04,1.73l-4.14,-0.01l-1.71,-2.32l-2.38,-0.69l-2.79,-4.19l-0.59,-0.19l-2.12,1.56l-1.57,1.74l-2.23,1.09l-3.33,2.46l-1.56,-0.4l-0.27,-1.27l0.66,-2.36l1.21,-2.17l1.43,-1.1l0.74,-1.91l0.19,-1.57l-0.73,-0.79l-4.39,0.92l-1.58,0.74l0.04,-1.14l0.47,-0.77l2.06,-1.48l13.37,-3.12l2.61,-0.03l2.27,0.99l0.0,0.36l-5.15,3.06l-0.91,2.1l0.3,2.72l0.9,2.03l1.37,1.57l1.77,1.18l4.26,1.13l12.66,-1.96l4.19,0.74l2.78,2.47l0.59,3.18l-2.4,3.07l-4.28,2.3l-2.21,1.72l-1.07,2.36l0.38,2.35l0.86,2.37l2.2,3.34l2.24,0.98l4.58,0.9l1.91,1.1l2.56,3.78l1.72,1.82l1.71,0.59l-1.88,1.65l-1.04,1.84l-0.61,4.97l-1.03,-0.15l0.56,-0.37l0.42,-1.18l-0.4,-1.44l-0.39,-0.29l-0.93,0.1l-0.94,0.82l-1.37,0.42l-1.45,0.02l-0.87,-0.32l0.0,-0.35l3.37,-1.17l1.59,-1.01l0.95,-1.69l-0.38,-0.59l-4.86,0.27l2.95,-1.26l0.27,-0.38l0.0,-0.92l-0.37,-0.4l-2.64,-0.2l-1.61,0.16l-2.18,1.69l-1.33,-1.1l-1.32,-0.55l-9.78,0.92l-1.95,0.97l-5.19,3.7l-2.26,3.44l-2.3,0.4l-2.4,1.24l-0.38,3.61l0.62,0.37l1.34,-0.92l0.17,-1.07l4.01,-0.37l0.65,2.8l-0.16,1.11l-1.24,0.49l-2.67,-0.34l-3.04,-0.87l-2.94,-1.56l0.47,-0.5l1.52,-3.61l-0.08,-0.46l-0.46,-0.08l-1.52,0.75l-1.29,1.29l0.11,0.63l-2.2,0.09l-1.51,0.81l-2.31,-1.61l-3.15,-0.9l-0.85,-0.92l0.48,-1.51l-0.29,-0.51l-1.67,-0.33l-3.63,1.23l-0.4,-0.62l0.38,-0.57l1.05,-0.32l1.37,0.46l0.53,-0.38l0.0,-0.85l-5.97,-3.92l1.18,-2.54l1.83,-2.27l2.22,-0.81l2.84,1.5l0.51,-0.12l0.43,-0.59l1.12,0.72l1.49,-0.24l2.92,-1.61l0.2,-0.43l-0.36,-0.32l-1.42,-0.13l-0.98,-0.77l-0.39,-1.08l0.43,-2.25l-0.37,-0.4l-1.21,-0.09l-1.21,-1.26l-1.17,-0.47l-3.67,0.72l1.81,-2.6l2.61,-0.53l2.92,-1.24l1.96,-0.29l0.34,-0.4l0.0,-0.64l1.22,-0.93l-0.17,-0.66l-3.75,-1.4l-0.54,-0.84l0.67,-0.9l-0.06,-1.13l-0.52,-0.34l-2.85,0.91l-1.55,0.14l-1.67,-1.29l-0.34,-2.16l-0.75,-0.98ZM739.74,70.67l-2.16,-0.9l0.0,-0.41l0.82,-0.62l1.34,1.93ZM708.19,76.74l0.04,-0.44l3.06,-8.86l0.66,-3.4l0.57,-0.76l1.43,-0.3l2.19,0.07l0.42,1.09l-0.55,0.2l0.0,-0.75l-0.62,-0.33l-2.57,1.82l-0.58,2.3l-0.09,2.57l-0.9,2.68l-2.11,1.75l-0.95,2.35ZM557.96,136.39l-0.46,-2.08l0.42,-0.96l5.48,-2.14l-4.16,3.09l-1.28,2.09ZM553.57,141.62l-2.73,6.57l-0.88,1.07l-0.66,0.02l0.62,-2.98l-0.43,-1.56l-0.38,-0.29l-1.19,0.21l-0.56,1.41l0.38,1.58l-1.1,0.75l-1.36,-0.06l-2.68,-1.57l1.26,-2.66l3.41,-2.37l3.87,-1.03l2.42,0.91Z", "name": "Mecklenburg-Vorpommern"}, "DE-TH": {"path": "M402.19,500.97l-0.34,-2.77l-0.3,-0.79l-0.99,-0.96l-0.56,-2.07l0.55,-1.65l6.77,-4.71l1.13,-1.12l2.04,-0.99l0.85,-0.94l2.62,1.57l0.6,-0.21l1.05,-1.24l1.28,-0.22l4.86,0.16l0.38,-0.56l-0.28,-0.79l1.43,-0.39l1.04,-0.73l0.98,-1.6l-0.07,-1.35l0.65,-0.63l1.64,-0.18l0.79,1.07l1.57,0.18l6.05,-2.87l1.05,-2.11l3.21,-1.76l0.66,-1.04l1.54,-0.93l0.78,-0.87l1.55,-4.04l-0.52,-1.57l4.31,-0.69l0.76,0.13l4.61,2.05l3.63,2.45l4.38,-0.05l5.91,-2.19l0.4,0.03l1.34,1.21l1.03,0.34l0.96,-0.74l0.27,-1.47l-0.34,-0.93l-2.2,-2.53l0.14,-0.48l1.6,-1.55l4.54,-2.19l1.57,0.77l8.78,-0.19l4.35,1.9l2.91,0.08l1.24,1.0l3.26,1.13l1.32,0.05l0.57,0.58l0.58,1.96l-0.87,0.4l-1.43,-0.5l-1.0,0.14l-0.62,0.69l0.01,0.96l1.46,3.53l1.96,2.16l-0.13,3.01l1.55,2.97l1.0,1.28l-0.69,4.97l1.02,1.61l2.73,1.27l15.19,1.55l4.18,-0.07l9.05,1.11l2.46,0.7l5.01,3.28l2.66,4.18l5.47,6.78l-1.54,2.38l-1.08,0.84l-2.39,1.13l-4.99,0.81l-1.09,1.07l-0.46,1.08l1.3,1.73l2.21,1.21l2.1,0.68l2.95,3.75l0.58,1.98l0.11,1.7l-0.76,0.33l-0.32,0.76l0.72,2.5l1.11,1.21l1.82,0.66l5.38,0.23l3.04,-1.43l4.46,0.52l4.62,0.07l3.81,-0.66l2.3,1.43l0.38,3.14l2.26,3.58l0.55,1.81l1.51,1.17l1.05,0.21l1.16,-0.75l8.67,-0.64l1.0,0.16l2.15,1.36l4.75,1.79l1.31,1.02l1.12,2.12l3.5,1.74l0.3,1.17l0.5,0.32l4.04,-0.32l2.76,-0.57l5.71,1.52l2.69,-1.18l2.88,2.04l0.67,1.03l1.11,0.24l2.04,-1.3l-0.04,-2.32l3.36,-3.56l2.39,-3.77l0.0,-1.02l-0.57,-1.06l-2.48,-1.48l0.46,-2.42l1.68,-2.53l-0.08,-0.8l5.81,-0.49l14.88,3.75l0.76,3.76l3.0,4.34l1.01,1.97l1.5,1.27l5.45,2.39l2.27,2.99l2.01,3.61l-0.01,0.58l-1.47,0.71l-1.8,2.03l-1.16,-0.94l-1.6,0.27l-3.12,-0.36l-2.17,0.21l-1.81,-0.61l-0.53,0.3l-0.51,1.26l-3.79,1.75l-3.72,4.11l-1.56,-0.62l-3.6,0.37l-3.95,2.55l-7.1,1.78l-0.3,0.35l0.0,1.64l1.2,1.13l1.63,0.6l0.19,0.36l-1.43,1.5l-1.21,0.18l-1.11,0.78l-1.02,2.57l0.45,0.77l1.65,-0.12l0.77,0.47l-0.39,2.08l0.66,1.89l0.83,1.11l1.25,0.51l2.56,0.08l-1.69,2.45l-1.06,0.98l-3.48,2.13l-2.33,0.11l-1.91,-0.31l-2.41,0.29l-2.8,2.95l0.04,2.82l-0.63,1.84l-0.58,0.56l-2.5,0.69l-1.98,-0.8l-1.73,0.25l-2.42,3.17l-0.87,0.66l-1.37,-0.15l-1.26,-1.39l-0.83,-0.39l-1.1,-0.22l-1.39,0.41l-2.02,2.36l-2.37,1.54l-1.75,2.54l-0.15,1.46l1.69,1.39l0.34,0.72l0.04,0.98l-1.0,1.15l-0.21,1.27l-2.17,0.76l-1.15,0.83l-0.38,1.07l0.56,0.9l-2.8,1.41l-4.3,1.44l0.13,-0.82l-0.29,-0.38l-1.85,-0.74l-0.87,-0.92l-1.28,-0.1l-2.37,0.36l-0.59,0.74l-1.51,0.38l-11.5,2.04l-2.9,-0.97l-2.23,-0.02l-0.59,0.29l-0.89,1.32l-2.68,0.4l-3.61,-2.17l-0.41,-3.07l-0.58,-0.88l-0.89,-0.36l-1.59,0.22l-2.97,-1.89l-0.23,-0.91l0.23,-4.07l1.39,-0.87l0.39,-0.74l-1.2,-2.34l-1.95,-0.62l-6.26,-0.29l-1.14,0.98l-1.37,0.65l-0.75,1.83l-1.9,1.04l-1.91,0.37l-2.72,1.1l-0.23,0.5l0.76,2.05l-0.2,0.97l0.79,2.65l-0.32,3.29l0.49,0.89l0.15,1.3l1.12,1.57l0.29,1.85l-1.11,0.62l0.16,1.51l-1.11,2.58l0.66,2.07l-1.03,2.08l0.1,1.55l-0.77,0.14l-2.12,-0.55l-1.66,-0.95l-0.7,0.37l-0.74,1.15l-4.43,-3.51l-0.53,-0.72l1.74,-1.68l0.17,-1.07l-1.9,-2.81l-0.85,-0.47l-0.79,-0.03l-0.44,-1.11l-0.51,-0.41l-1.68,0.2l-1.36,1.17l-3.38,0.82l-2.23,-1.68l-2.91,-0.35l-0.56,0.27l-0.37,1.38l-4.23,-4.7l-1.66,-0.09l-3.02,0.73l-1.15,-1.23l-1.0,-0.32l-1.56,0.61l-2.29,-0.2l-2.55,1.14l-1.97,-0.51l-1.29,0.82l-2.04,2.91l-2.43,-0.51l-1.13,0.6l-0.51,0.98l-0.29,3.91l0.92,1.07l2.66,1.32l1.94,1.68l2.96,0.17l1.26,1.79l2.78,0.9l0.48,1.34l-0.13,1.2l-0.37,0.4l-0.87,0.11l-2.93,-0.93l-4.01,0.63l-1.94,-0.58l-1.1,1.02l-0.69,4.16l-3.21,-1.63l-2.42,-0.56l-4.35,0.01l-1.01,-1.19l0.26,-1.78l-1.24,-2.29l0.56,-3.11l-0.96,-4.55l-2.51,-1.79l-1.27,-2.36l-0.4,-0.21l-1.63,0.19l-1.03,0.67l-2.44,-0.21l-0.35,-1.35l-2.71,-1.97l-1.63,-2.41l-2.71,0.46l-1.78,-0.14l-0.59,-0.35l-0.4,-0.87l0.92,-1.29l-0.27,-0.77l-2.71,-1.88l-1.71,-1.89l-1.39,-0.95l-0.29,-2.27l-0.56,-1.23l-0.59,-0.48l-9.35,-2.99l-1.01,-2.63l-1.92,-1.77l-1.6,-0.4l-5.19,0.34l-0.36,-0.42l-0.04,-1.3l-0.69,-0.32l-1.69,1.01l-5.23,4.9l-0.39,-0.03l1.12,-4.39l-0.84,-2.13l0.09,-3.09l-0.34,-1.33l1.08,-1.22l1.45,-0.22l0.44,-0.82l-0.26,-3.13l-1.09,-2.35l-0.69,-0.73l-4.95,-1.16l-1.23,0.01l-4.98,2.12l-0.22,1.34l1.26,1.57l-0.67,1.18l-1.42,0.01l-2.79,-1.22l-1.93,0.53l-0.34,-0.26l-0.11,-2.38l0.27,-1.16l1.07,-1.52l2.01,-1.69l0.03,-1.7l2.03,-3.64l0.22,-2.52l-1.38,-1.69l0.34,-0.79l0.93,-0.33l0.62,0.24l0.49,-0.5l-0.35,-2.72l0.73,-2.34l1.94,-0.9l2.0,-0.22l3.05,-0.99l0.51,-0.82l-0.05,-2.64l2.87,-3.0l-0.0,-0.57l-1.08,-1.18l-0.85,-1.76l-1.5,-1.31l-1.4,-0.75l-0.98,-0.04l-0.98,0.49l-1.32,1.37l-0.26,-2.69l-0.89,-0.28l-0.75,0.57l0.01,-1.24l0.99,-0.34l0.99,0.48l3.6,0.32l3.02,-0.64l0.54,-1.23l-0.29,-1.78l-1.9,-2.62l0.22,-1.48l2.22,-1.33l3.94,-0.18l1.16,0.34l1.46,-0.39l0.02,1.12l1.77,0.81l4.9,-0.22l0.64,-0.26l1.77,-3.22l0.11,-0.78l-1.85,-2.88l-2.06,-0.27l-1.26,-0.8l-1.49,-0.22l0.54,-2.9l1.76,-2.79l0.4,-1.79l-0.68,-0.65l-2.26,-0.47l-1.06,-1.66l2.43,-0.68l1.45,0.0l0.97,1.08l0.0,1.01l0.79,0.65l0.29,0.84l0.68,0.13l0.69,-0.82l0.56,-3.98l0.5,-1.2l1.43,-1.46l0.47,-1.12l-0.53,-1.03l-3.17,-1.31l-2.4,-1.49l-2.48,-0.15l-1.5,-0.78l-2.08,-0.34l-3.25,-1.14l-0.67,-2.29l-2.01,-1.77l0.5,-1.75l-0.55,-0.88l-4.8,-1.34l-1.77,0.02l-1.79,-1.79l-1.64,-0.49Z", "name": "Th\u00fcringen"}, "DE-BW": {"path": "M174.35,977.77l0.94,-0.09l1.04,-0.87l1.4,-3.28l-0.41,-0.55l-2.22,0.2l-4.37,1.12l0.43,-1.22l-0.29,-1.37l-1.72,-1.74l-2.19,-3.76l-1.37,-1.65l-1.49,-0.71l-0.28,-0.42l-0.55,-3.8l2.54,-3.12l0.04,-2.16l-1.19,-4.29l0.25,-1.61l1.36,-3.94l1.92,-1.37l0.21,-1.54l-0.52,-3.81l1.96,-2.97l0.08,-2.67l0.47,-1.5l2.54,-2.3l1.06,-1.83l-0.28,-4.11l-4.18,-6.31l-0.29,-5.0l0.6,-2.37l0.64,-1.85l1.87,-2.86l0.23,-1.89l0.6,-1.42l6.17,-7.39l1.08,-1.88l1.5,-7.27l3.36,-1.95l1.43,-2.06l0.11,-1.9l-1.14,-3.28l-0.3,-1.43l0.11,-1.57l1.19,-4.65l1.82,-3.25l0.23,-2.45l0.44,-1.0l3.7,-2.92l-0.03,-1.02l-1.12,-2.6l0.01,-4.26l0.81,-3.99l4.04,-5.37l2.73,-1.12l1.5,-1.11l2.7,-2.74l2.48,-1.74l1.1,-1.24l0.5,-1.1l0.15,-2.47l0.41,-0.89l4.58,-0.59l0.7,-0.62l0.42,-1.85l0.96,-1.12l0.81,-0.06l4.36,-2.22l1.26,-1.82l4.44,-10.4l3.02,-4.86l1.91,-1.87l3.04,-0.98l3.22,-2.96l2.09,-2.77l7.22,-12.62l0.48,-1.41l1.87,-12.06l0.61,-2.04l2.24,-1.43l6.88,-6.97l0.35,-1.6l-0.28,-0.47l-1.97,-0.59l3.62,-7.35l0.04,-1.46l-0.71,-3.04l1.32,-2.87l-1.26,-1.62l-4.76,-1.12l0.0,-0.31l1.82,-0.77l0.24,-1.24l-1.36,-2.54l-2.19,-5.45l-1.84,-2.6l0.73,-2.7l2.97,-1.04l2.18,0.3l2.26,1.53l7.02,5.94l4.3,-1.55l0.92,-0.98l0.02,-1.21l-1.85,-6.88l7.12,-1.49l0.11,0.81l1.31,2.01l-0.6,1.53l0.48,1.6l1.45,2.99l1.28,1.26l4.79,2.38l1.73,0.23l2.4,-0.19l1.16,1.97l0.98,0.67l5.86,-0.39l-0.1,1.47l-1.21,1.67l-0.7,-0.17l-0.89,-0.93l-0.58,-0.14l-2.19,1.89l-0.55,1.38l0.33,3.57l-1.88,1.43l-0.23,1.76l0.53,1.07l3.21,0.91l0.87,-0.12l1.04,-0.64l2.98,-3.01l0.87,-2.61l0.41,0.93l0.75,0.22l2.83,-1.41l0.56,-1.31l-0.67,-1.77l-1.09,-1.36l2.51,-2.51l5.29,-0.11l2.5,0.35l1.07,-0.38l2.19,-1.78l0.64,-0.05l2.42,0.05l1.28,1.23l1.37,0.08l0.34,-0.7l-0.27,-0.91l-2.56,-3.92l-2.42,-2.72l1.27,0.87l0.87,0.15l0.51,-0.21l0.65,-0.94l1.08,0.39l5.51,-1.02l1.46,0.22l6.52,-0.22l1.17,-1.17l0.67,-1.78l1.37,-1.24l-0.23,-2.22l0.53,-0.57l2.02,-0.87l3.16,-0.22l2.78,-1.04l1.67,1.25l1.06,0.06l2.01,-1.51l0.12,-0.46l-0.71,-1.51l1.15,-5.53l-0.13,-0.44l-0.7,-0.62l-2.58,-0.69l-0.78,0.55l-0.77,1.84l-0.89,0.17l0.35,-1.91l-0.59,-0.97l-4.04,-0.75l-1.03,-0.49l-0.04,-0.61l0.69,-1.6l-0.71,-1.85l1.35,-1.35l2.12,-0.87l4.72,0.28l3.66,-1.1l5.15,-0.4l5.34,2.11l1.32,0.08l1.6,-0.49l2.78,1.41l2.75,-0.74l1.57,-0.88l0.24,0.13l0.13,0.5l-0.7,1.2l0.32,1.94l-0.55,1.29l0.2,1.35l-0.81,0.71l0.07,1.15l-0.88,2.04l0.69,1.02l1.74,0.8l1.59,0.16l1.24,-0.5l0.55,-2.17l1.24,-0.56l0.76,-1.11l0.29,1.95l0.94,1.81l0.7,0.53l0.88,-0.26l3.12,-2.95l2.71,-1.0l3.42,3.79l-0.03,3.37l0.31,1.69l3.91,3.76l0.64,1.01l-0.31,0.88l-1.67,1.84l-0.28,0.94l0.08,1.66l-1.98,2.03l0.01,0.88l1.23,0.86l0.82,0.05l0.85,-0.38l0.55,-0.64l0.51,-1.5l1.26,-0.44l1.21,-1.44l0.91,-0.32l0.4,0.54l-0.6,1.42l1.68,1.44l0.42,2.72l-0.21,2.83l0.43,3.16l0.42,0.43l1.1,0.21l7.07,-0.13l0.97,-0.4l3.91,-3.5l0.15,-1.23l-0.84,-1.28l0.17,-0.27l2.11,-1.41l1.27,0.67l-0.61,1.34l0.09,0.66l1.04,0.84l1.49,0.2l0.57,0.44l-0.81,2.13l1.08,2.45l-0.68,1.9l-1.08,1.37l-0.03,0.82l2.74,1.19l2.9,5.97l-1.57,-0.51l-1.19,0.15l-2.06,2.16l-0.26,3.55l0.28,0.98l1.14,1.35l2.01,0.94l-0.71,2.21l1.08,2.44l0.14,1.21l-0.42,0.11l-1.89,-0.85l-0.61,0.29l-0.25,0.8l0.37,1.08l1.37,1.29l0.09,2.58l0.53,1.04l0.99,0.99l-1.22,0.55l-0.06,0.68l1.22,1.14l2.14,1.28l2.35,2.75l1.39,1.16l0.78,0.12l1.66,-0.72l1.83,1.44l0.04,2.34l-0.95,1.98l-0.46,0.34l-1.51,0.1l-0.4,0.9l0.69,0.69l2.45,0.87l-0.21,1.54l1.79,1.53l-0.39,1.61l0.15,0.54l2.69,1.1l1.9,0.12l1.91,0.96l1.45,0.05l1.11,2.72l4.69,3.56l0.78,1.3l1.62,1.6l0.61,1.39l1.23,1.13l0.83,2.66l-1.94,0.8l-0.27,0.67l1.04,0.98l-0.28,4.6l-0.48,1.5l1.08,2.33l-0.47,1.99l-1.17,1.07l-0.28,0.72l0.02,3.22l-0.71,1.13l-0.08,1.39l0.26,1.1l0.77,0.88l2.06,0.96l0.86,0.03l0.58,1.51l1.57,2.49l-5.03,3.67l-0.19,-0.91l0.5,-0.96l-0.02,-0.89l0.57,-0.43l0.07,-0.58l-0.7,-0.76l-1.15,-0.1l-5.56,5.04l-1.96,-3.02l-3.03,-0.16l-2.05,-1.63l-0.93,0.08l-2.24,2.61l-0.28,1.89l1.85,3.16l4.41,2.87l-0.26,0.73l-1.5,0.64l-0.4,0.64l0.12,1.11l0.98,1.84l0.19,1.19l-0.14,1.29l-1.13,2.82l0.19,0.81l-4.23,0.38l-1.51,1.42l-0.39,1.58l-9.25,4.8l-0.75,-0.36l-0.51,-1.82l-0.62,-0.49l-0.81,-0.12l-2.79,1.54l-3.46,0.66l-1.4,1.2l-1.01,1.61l0.17,1.69l-6.03,6.88l-0.03,0.47l0.88,1.4l1.4,0.27l1.82,3.45l3.09,4.45l1.54,4.46l3.86,15.17l2.64,5.14l0.29,1.53l-0.17,4.59l-0.71,2.69l-2.83,6.77l-1.22,0.8l-0.36,0.66l0.2,1.44l2.23,3.13l-0.36,4.33l-0.43,0.61l-0.46,2.19l-0.97,0.93l-0.14,0.54l0.45,0.71l1.34,0.14l2.31,5.03l-0.66,0.29l-0.88,1.27l-2.25,0.27l-0.98,1.58l0.2,0.77l1.27,1.05l0.59,1.08l1.44,0.35l0.21,0.37l0.54,6.42l0.83,2.5l-0.49,1.58l-3.29,-0.55l-0.57,1.1l-0.13,1.76l-0.51,0.56l-1.24,-2.81l-1.02,-0.68l-1.91,-0.04l-2.51,0.59l-2.18,1.03l-3.26,0.94l-2.28,0.02l-2.3,-0.48l-4.2,-1.44l-3.11,1.28l-7.24,5.55l-4.24,1.86l-3.56,-0.78l-1.54,0.64l-0.96,1.29l-3.38,0.68l-1.16,0.76l-1.15,-0.49l-4.02,-0.65l-1.38,-0.64l-1.47,-1.59l-1.45,-3.71l-0.9,-0.99l-1.1,-0.57l-3.16,-0.36l-5.3,-2.32l-6.08,-0.37l-1.75,-0.45l-9.28,-5.3l-1.64,-4.39l-0.84,-0.41l-2.61,-0.39l-10.32,-6.38l-3.9,-0.52l-0.39,0.61l0.85,1.29l3.3,2.99l7.36,3.46l1.19,1.48l2.06,5.28l2.2,2.82l0.05,0.63l-7.24,0.21l-10.93,-1.06l-2.02,0.65l-1.63,1.48l-3.44,0.94l-3.75,0.3l-2.28,-0.51l-4.07,-2.89l-0.0,-0.35l1.48,-0.3l0.17,-0.7l-2.61,-2.11l-3.21,-1.6l-2.8,-0.15l-0.39,0.26l-0.88,2.45l0.2,0.52l-3.89,0.05l-0.36,-1.46l-1.15,-1.75l1.81,-2.78l-0.64,-1.64l-1.25,-0.37l-1.94,0.03l-2.36,-3.55l-1.48,-0.5l-1.27,0.89l-0.6,2.77l-0.84,0.47l-0.62,-0.4l-0.8,-4.17l-1.94,-0.73l-2.44,-0.12l-1.76,0.81l-0.19,0.53l0.74,1.6l-1.06,0.46l-6.26,0.86l-1.09,0.55l-1.37,1.75l-1.19,3.35l-3.35,1.88l-1.07,1.02l-0.23,1.16l0.64,1.98l-0.57,1.23l0.24,0.55l2.01,0.55l4.7,2.66l1.89,-0.1l4.23,-2.09l4.66,-0.68l3.36,0.79l-0.35,1.88l-0.15,-0.7l-0.38,-0.23l-1.05,0.2l-0.61,0.52l-0.23,0.92l0.39,1.05l-0.04,2.04l-0.6,1.57l-0.94,0.27l-2.12,-2.69l-1.8,-1.31l-3.1,0.31l-3.0,1.71l-1.41,2.72l-2.72,0.39l-6.21,-0.03l-3.62,-0.83l-0.82,-0.46l-1.14,-2.27l-0.86,-0.78l-3.62,-0.76l-1.88,-0.01l-5.49,0.82l-1.66,1.49l-1.77,0.46l-2.99,1.55l-1.71,2.02l-0.83,0.49l-4.31,0.83l-12.49,0.0l-0.63,-2.57l-0.72,-0.73l-6.5,-0.43l-1.31,-0.58l-0.48,0.13l-3.26,3.92l-1.73,0.85l-8.06,1.44l-2.04,-0.23l-3.3,-1.5Z", "name": "Baden-W\u00fcrttemberg"}, "DE-HH": {"path": "M382.17,201.49l1.03,-4.25l1.01,-1.1l0.43,-1.53l1.53,0.25l1.9,1.12l-0.31,2.69l0.56,0.58l0.89,0.21l1.29,-0.59l9.63,-6.45l2.35,-0.59l3.23,0.43l1.08,-0.69l1.02,-2.14l0.79,-0.68l1.76,-0.41l1.82,0.19l1.03,-0.46l0.68,-0.62l1.26,-4.23l0.66,-0.65l5.87,0.76l2.92,-1.83l1.14,0.05l-0.19,0.95l-2.1,2.91l-0.53,1.56l0.61,0.99l3.39,2.06l0.35,2.25l1.08,0.81l0.23,0.58l-0.72,2.55l-0.38,3.79l-3.08,0.95l-0.69,0.69l0.75,3.35l0.24,2.74l0.57,0.79l2.65,0.87l3.34,4.02l2.89,1.46l3.39,3.0l0.77,-0.01l0.52,2.29l-3.7,0.0l-1.1,0.29l-1.09,0.58l-2.35,2.62l-5.14,0.28l-1.52,-0.28l-1.48,-0.87l-2.17,-2.25l-2.1,-0.52l-2.94,-2.3l-5.11,1.36l-0.52,0.74l0.02,1.1l-4.04,1.6l-1.45,0.08l-2.33,-1.12l-3.08,0.96l-0.5,-3.1l-0.71,-0.98l-1.08,-0.39l-0.95,0.26l-1.87,1.9l-0.36,0.03l-3.85,-3.12l-1.12,-1.56l-1.12,-2.55l-1.1,-0.86l-0.5,-1.05l-0.81,-0.75l-0.35,-4.61l4.86,0.88l1.48,-0.45l0.2,-0.61l-1.22,-1.74l-3.84,-1.89l-3.7,-0.37Z", "name": "Hamburg"}, "DE-SH": {"path": "M521.78,88.19l-2.9,0.15l-2.4,-0.32l-0.89,-0.89l0.18,-2.57l-0.74,-1.47l-1.51,-0.44l-2.57,-0.07l-1.16,0.28l-1.07,0.79l-0.94,-1.55l-1.39,0.36l-0.17,-1.2l2.65,-5.28l3.69,-2.91l4.54,-0.62l8.23,2.86l3.15,2.45l6.78,10.31l-11.47,-1.56l-2.02,0.86l0.01,0.81ZM297.93,104.64l0.36,-1.02l-0.4,-0.57l-2.98,0.29l-5.15,1.27l-2.94,0.28l-3.64,-0.47l-1.64,0.55l-3.2,2.49l-0.96,0.26l-2.44,-0.71l-2.68,-1.98l-1.93,-2.83l-0.26,-3.23l1.2,-1.2l2.57,-0.94l2.93,-0.48l2.27,0.09l0.42,-0.4l0.0,-0.92l-0.33,-0.39l-1.67,-0.32l-1.27,-0.98l-1.44,-0.4l-1.58,1.41l-0.5,-0.88l0.25,-1.31l1.64,-2.22l2.06,0.68l7.91,-1.75l10.74,0.0l2.58,-0.55l2.22,-1.11l4.11,-2.93l3.74,-1.49l1.7,-1.04l0.85,-2.54l-0.08,-3.53l-2.55,-3.16l-7.98,-6.94l-1.08,-1.36l-0.61,-1.58l-1.14,-0.7l-2.02,0.05l-3.03,0.96l-0.23,-0.34l2.98,-1.65l0.17,-0.52l-3.43,-7.38l-1.3,-1.95l-2.95,-1.54l-5.28,-3.73l-3.16,-1.27l0.51,-3.29l-1.28,-2.77l-3.21,-5.04l-0.54,-3.45l0.43,-3.06l1.2,-3.56l3.17,0.78l3.62,0.13l6.78,-2.02l2.21,-0.27l7.75,1.07l7.73,2.54l20.73,3.93l1.46,1.04l0.71,3.18l0.72,1.62l2.1,0.8l8.69,-0.2l1.08,-0.82l1.3,-0.29l1.15,-0.79l1.51,-0.28l2.04,1.47l1.66,0.15l3.06,-0.45l5.85,-2.38l1.92,-1.88l2.51,-0.89l1.19,-1.71l0.64,-0.42l0.28,4.22l0.29,0.36l4.85,1.43l5.97,0.25l3.99,1.42l6.45,3.17l1.04,2.34l1.49,1.4l2.63,-0.37l4.47,-1.38l0.28,-0.44l-0.33,-2.4l1.78,-0.1l3.03,1.51l2.13,2.18l1.31,4.55l0.66,1.17l2.4,2.37l-0.68,0.42l-3.25,-0.76l-2.58,1.84l-1.55,0.47l-0.33,0.53l-0.05,1.25l0.38,0.41l1.44,0.08l2.64,-0.63l2.34,-0.11l1.35,1.46l0.52,0.06l0.96,-0.67l0.78,-0.05l0.31,0.47l-0.63,1.72l0.47,2.08l0.06,2.62l-1.04,7.93l-1.55,3.35l-1.19,1.39l-3.09,2.32l-3.88,1.74l-4.19,1.1l-4.08,0.37l-0.36,0.4l0.0,0.93l0.24,0.37l4.47,1.81l23.6,-4.54l1.68,0.48l5.45,3.83l-1.69,1.55l0.03,1.65l1.24,3.65l-0.51,1.63l-1.3,1.58l-1.67,1.14l-1.62,0.4l-0.21,0.65l0.53,0.59l-0.55,0.77l0.06,0.53l0.96,0.84l0.24,0.91l-0.33,1.1l-0.92,1.24l-0.01,0.47l0.44,0.15l2.32,-0.74l1.7,-1.71l2.31,-4.21l1.32,-4.52l0.63,-1.0l0.82,-0.44l3.76,-0.35l1.47,-0.73l1.95,-2.12l0.98,-0.26l4.04,0.29l2.06,0.82l5.99,3.86l15.42,5.52l8.7,6.62l4.2,0.89l4.76,-0.7l3.37,-1.69l5.58,-4.2l3.18,-1.66l3.31,-1.13l3.58,-0.38l0.18,0.51l1.7,0.62l1.78,-0.4l2.53,1.22l6.75,-3.35l2.25,0.69l-3.98,3.91l-1.86,-0.76l-0.43,0.11l-0.06,0.44l1.04,2.16l0.89,5.33l0.74,2.47l-0.7,1.74l0.07,2.35l0.65,3.82l-0.39,2.14l-1.78,1.95l-0.49,1.18l-11.26,5.92l-3.99,4.11l-1.62,0.85l-4.58,1.06l-0.87,0.53l-1.3,-0.92l-0.88,-0.07l-0.99,0.45l-5.4,6.39l0.04,1.02l1.34,2.69l1.43,1.94l1.98,1.36l2.8,0.75l3.85,-0.3l0.74,0.24l0.58,1.17l0.48,2.85l1.69,0.61l0.03,3.92l0.76,0.99l0.95,0.56l3.23,0.85l-0.73,0.48l-2.99,0.39l-0.34,-0.34l0.07,-1.26l-1.81,-0.67l-0.89,0.03l-2.4,1.29l-4.79,3.63l-4.49,2.09l-1.24,1.91l-0.47,1.93l1.17,2.93l0.79,3.5l-1.22,5.47l0.1,0.82l0.48,0.35l4.31,0.71l3.87,4.28l1.12,0.84l0.86,0.41l2.17,-0.23l2.65,0.66l2.18,1.53l0.62,0.86l0.1,1.61l0.97,1.86l-0.24,1.9l-1.39,1.01l0.1,2.43l1.27,4.35l-0.04,0.34l-0.84,0.4l-0.14,0.63l0.84,0.33l-1.79,1.8l-0.86,-2.34l-1.15,-0.78l-5.04,0.52l-1.59,-0.49l-1.38,0.31l-0.31,0.71l0.5,2.57l-0.9,2.1l-0.2,2.0l-5.86,3.54l-5.51,1.41l-1.3,2.66l-1.42,-0.26l-1.38,0.17l-2.21,1.08l-0.64,0.97l-0.81,4.25l-0.01,1.64l-0.43,1.23l-1.94,2.42l-2.9,0.99l-3.88,-1.09l-13.96,-6.88l-3.53,-1.09l-2.0,-0.09l-0.67,-2.82l-1.09,-0.23l-3.27,-2.89l-2.93,-1.5l-3.3,-3.99l-2.68,-0.89l-1.2,-5.99l2.97,-0.89l0.67,-0.51l0.5,-4.11l0.73,-2.63l-0.2,-0.87l-1.19,-0.93l-0.42,-2.39l-3.56,-2.2l-0.3,-0.51l1.39,-2.57l1.34,-1.74l0.2,-0.88l-0.56,-0.81l-1.75,-0.07l-2.78,1.79l-5.89,-0.78l-1.24,1.16l-1.24,4.18l-0.36,0.28l-0.63,0.34l-1.89,-0.17l-2.03,0.49l-1.08,0.92l-0.97,2.08l-0.72,0.45l-3.1,-0.46l-2.63,0.69l-10.73,6.95l-0.54,-0.41l0.41,-2.01l-0.17,-0.77l-2.24,-1.36l-1.88,-0.31l-0.6,0.29l-0.47,1.62l-0.96,0.96l-1.21,4.74l-4.38,-0.41l-3.52,-1.14l-7.0,-3.69l-3.1,-2.85l-1.11,-4.13l-0.67,-5.99l-1.21,-1.03l-6.07,-2.52l-2.27,-1.69l-2.23,-3.93l-1.52,-4.25l-0.14,-2.63l-0.28,-0.36l-3.52,-1.13l-6.15,-4.31l-3.86,-1.9l-3.73,-0.71l-12.4,-0.23l-3.67,-1.38l-2.55,-0.58l-1.41,0.63l-1.0,1.28l-1.96,-0.53l-3.36,-2.08l-3.22,-3.23l-7.84,-12.88l3.27,-1.22l1.73,-0.11l2.24,0.5l3.81,2.07l2.2,0.6l2.4,-0.84l0.96,-1.67l0.83,-2.74l0.55,-2.93l-0.02,-2.16l-1.23,-1.63l-3.04,-2.57l0.25,-2.25l-0.3,-0.39l-2.55,-0.6l-3.43,0.51l-3.28,1.27l-2.08,1.57l-4.26,-6.58l-0.21,-0.51l0.74,-2.51l2.52,-4.46l-0.66,-2.92l0.96,-0.59l5.72,-1.08l1.23,-0.75l3.16,-3.93l1.02,-2.09l-0.42,-0.57l-2.24,0.35l-3.82,2.63l-1.25,0.45ZM505.27,92.96l1.41,-0.15l0.0,0.09l-1.41,0.06ZM297.84,80.79l-4.13,0.26l-1.82,-0.53l-0.72,-1.01l0.85,-0.54l0.14,-1.05l-0.95,-1.26l2.66,-2.06l3.33,-1.23l3.77,-0.18l3.41,0.73l-0.11,1.55l-1.7,1.34l-2.58,3.1l-2.15,0.89ZM276.26,76.33l-2.63,1.21l-1.99,-0.03l-1.07,-0.76l-0.89,-1.73l0.52,-1.88l3.0,-1.63l5.83,-2.0l0.12,0.91l-0.75,3.16l-2.15,2.75ZM278.04,137.9l-0.16,0.39l-0.79,-0.21l-1.19,-1.75l0.24,-1.51l0.94,-0.79l0.28,-0.0l0.13,1.76l0.87,0.87l-0.32,1.25ZM248.66,23.66l4.99,1.03l5.58,-0.23l-3.34,1.97l-1.38,0.32l-6.64,0.0l-1.42,-1.42l-1.93,-0.32l-4.34,2.32l-0.85,4.57l0.33,7.4l-0.75,4.1l-0.46,-1.36l-0.08,-3.51l1.13,-14.71l0.91,-2.83l7.39,-16.61l1.52,-1.52l0.16,0.48l2.49,0.21l0.62,1.29l-0.73,1.57l-4.0,1.85l-1.92,2.34l-1.02,2.74l0.83,2.71l-0.56,4.74l3.48,2.89ZM250.3,1.86l1.38,-1.39l2.81,1.2l-4.19,0.18ZM264.77,24.24l8.78,-0.35l-1.1,0.7l-7.68,-0.34ZM266.78,50.31l-0.69,0.79l-1.15,0.3l-1.55,-0.15l-2.54,-1.02l-2.45,0.75l-3.03,-0.75l-5.27,-2.63l1.64,-2.42l2.11,-1.64l2.57,-0.82l3.21,-0.22l5.36,0.26l2.06,1.01l1.62,2.25l0.0,0.67l-0.78,1.07l-1.09,2.55ZM245.09,48.48l-1.98,1.85l-0.04,0.5l4.9,7.42l1.39,0.69l-0.71,0.49l-3.09,0.9l-2.09,-1.53l-1.81,-2.65l-1.77,-1.95l2.64,-4.0l1.65,-1.46l0.9,-0.27ZM203.59,118.61l-0.73,0.18l-0.01,-0.01l0.73,-0.17ZM200.05,118.64l0.62,0.33l0.13,0.51l-0.19,-0.05l-0.56,-0.79Z", "name": "Schleswig-Holstein"}, "DE-NW": {"path": "M55.93,626.7l-2.43,1.05l-2.02,0.01l-0.12,-0.64l-3.35,-4.89l-0.11,-1.32l1.36,-4.73l0.08,-2.23l-0.47,-0.71l-0.78,-0.22l-0.72,-0.99l-0.76,-2.27l0.19,-0.81l1.12,-1.25l-0.36,-0.27l-5.94,-0.89l-1.95,-0.84l-3.93,1.09l-0.8,-0.03l-2.0,-2.3l0.56,-0.8l-0.3,-0.63l-1.62,-0.26l0.61,-1.03l-0.03,-0.52l-1.4,-1.48l1.56,-2.05l3.02,-2.1l2.17,-1.08l1.97,-2.9l-0.18,-1.09l-0.38,-0.29l-6.7,-0.14l-1.83,-0.8l-0.86,-1.39l0.93,-0.5l0.13,-0.6l-5.97,-7.63l-1.95,-1.64l-1.98,-0.21l-3.82,0.88l-0.98,-0.1l-0.26,-0.73l0.3,-2.6l-1.78,-1.06l0.34,-2.53l-1.65,-1.41l-0.9,-1.92l1.19,0.11l1.54,-1.29l0.53,-1.74l-0.29,-2.13l0.72,-1.09l1.15,-0.55l2.11,0.15l1.49,-1.33l0.63,-1.48l0.01,-1.16l-0.8,-2.56l0.85,-1.92l-0.26,-0.52l-3.17,-0.92l-2.85,-1.74l-0.35,-2.63l0.95,-2.34l-0.63,-0.96l-3.45,0.35l-4.06,-0.85l-4.74,1.51l-0.12,-2.95l-1.5,-3.69l-0.49,-2.68l2.29,-1.01l1.12,0.53l2.47,2.25l2.32,-0.18l1.28,-1.2l1.86,-3.25l1.25,-1.2l9.02,-5.89l5.56,-2.51l1.59,-1.71l-0.05,-0.58l-1.63,-1.26l2.52,-1.57l0.22,-0.39l-0.29,-0.35l-2.56,-0.61l-4.71,2.69l-1.95,-0.9l-0.63,-2.15l0.27,-2.78l0.81,-2.49l3.05,-3.5l5.0,-7.67l3.42,-2.21l1.08,-1.23l0.62,-1.84l0.3,-2.78l0.54,-1.08l-0.08,-0.46l-1.35,-1.34l0.12,-2.18l1.1,-5.36l-1.18,-6.76l-4.06,-4.01l-6.46,-7.37l-0.37,-1.41l1.63,-4.65l-0.24,-0.52l-6.56,-2.39l-2.02,-2.13l1.24,-3.47l-1.09,-1.27l-3.43,-1.89l-3.55,-0.18l0.05,-0.93l2.19,-1.97l0.17,-2.64l-1.35,-2.74l-2.12,-1.41l0.21,-0.73l1.43,-0.84l3.93,-0.58l1.97,-0.69l3.43,-1.87l3.87,-0.86l7.0,1.5l0.42,-0.18l-0.02,-0.46l-1.37,-1.78l-4.3,-3.59l2.5,-1.12l2.97,1.16l3.21,2.14l3.32,1.13l3.85,-0.47l2.11,2.52l3.93,0.58l1.34,0.65l0.26,1.83l0.49,0.33l3.97,-1.12l0.41,-1.53l-0.62,-2.3l5.63,1.38l2.23,-0.01l1.7,-0.65l4.78,-3.04l9.66,-2.73l8.64,-0.23l2.81,-1.22l2.45,-2.4l2.21,-3.32l1.99,-1.19l0.24,-1.89l-0.26,-1.01l-3.26,-3.11l-9.91,-4.28l-0.17,-1.68l0.56,-1.13l3.09,-0.94l0.86,-0.93l1.26,-2.32l1.58,-1.36l1.46,-0.67l6.5,-0.66l1.34,-1.05l2.14,-3.6l1.8,-1.56l4.24,-1.55l2.04,-1.52l3.27,-4.01l4.31,-2.16l0.46,-0.99l2.13,0.05l4.05,-1.42l2.66,-1.82l13.4,-0.46l4.12,-0.75l6.73,-4.09l2.95,-0.61l1.84,-0.9l5.03,-4.3l4.49,-3.08l1.76,-0.41l2.87,0.2l1.62,-1.66l1.44,-3.57l1.19,-0.82l-0.18,-0.83l-1.47,-1.15l-0.31,-0.85l1.14,-4.04l0.83,-0.74l7.55,2.02l0.72,1.36l0.83,4.52l0.4,0.68l2.91,1.13l6.57,3.41l1.49,1.44l1.55,0.32l6.37,-2.07l0.76,0.12l3.51,3.8l2.76,3.96l0.09,0.4l-3.29,0.46l-0.78,0.57l-0.12,0.76l0.36,1.19l1.3,1.98l-2.86,2.97l-0.04,0.87l0.86,1.97l-0.7,1.17l-1.65,1.64l-0.05,0.79l0.94,1.08l2.43,0.39l0.46,1.39l0.97,0.63l4.31,-0.22l2.16,0.72l0.15,0.34l-1.33,2.47l-1.17,3.41l-4.06,0.57l-2.52,0.96l-2.97,2.23l-0.27,0.92l2.18,4.83l6.27,2.39l0.81,-0.34l4.22,-3.35l1.41,-0.56l3.43,-0.5l3.67,1.05l6.98,-2.19l3.06,-1.83l2.3,-2.57l2.98,-2.17l12.26,2.9l0.96,-0.18l0.88,-0.59l1.67,-3.2l4.88,-2.72l1.7,-2.05l0.55,-1.04l0.05,-0.96l-3.34,-2.18l-0.25,-1.08l-0.08,-11.85l-1.04,-4.5l-0.89,-2.15l-1.37,-1.81l-2.9,-1.75l-6.35,-2.47l-1.11,-1.42l-1.66,-4.59l1.55,0.46l2.19,-0.01l2.08,0.6l5.68,-0.63l2.55,-1.25l0.65,-1.03l0.93,-3.65l3.06,-2.06l6.74,-0.07l1.67,-0.29l4.8,-1.93l0.89,-0.01l1.52,0.51l1.54,1.11l2.61,3.94l0.32,1.87l-0.24,2.96l0.57,1.39l-0.38,3.23l0.55,1.42l1.51,0.5l10.16,0.9l3.26,-0.31l3.47,-1.18l6.68,-1.27l0.88,-1.06l1.47,-3.79l1.4,-2.26l2.54,-2.16l5.36,-2.34l1.15,0.22l1.6,1.84l1.89,0.68l-0.64,1.47l-1.45,0.96l-0.33,0.56l0.21,1.35l1.64,4.23l-3.1,4.14l-1.73,3.09l-2.63,1.5l-2.96,-0.18l-1.1,0.27l-0.85,1.0l-0.65,1.5l-1.24,7.23l0.46,1.22l0.86,0.67l7.25,2.04l-2.58,1.61l-0.45,0.82l0.82,3.08l-2.42,-0.06l-3.08,0.73l-0.27,0.55l1.88,4.18l-0.01,0.68l-1.06,2.04l0.64,0.61l6.37,-0.63l6.9,0.79l0.59,0.31l0.09,0.59l-0.49,1.24l0.2,0.95l0.95,0.8l2.63,0.93l0.95,1.12l0.1,0.66l-1.26,2.95l2.16,5.18l-0.45,1.13l-1.6,1.2l-0.52,2.01l1.43,0.94l3.48,1.21l0.64,-0.15l0.73,-1.32l1.1,-0.28l3.87,1.35l-1.17,4.15l-1.82,1.87l0.06,0.61l0.98,0.23l3.76,-0.28l2.16,0.87l0.73,1.16l0.34,1.49l-0.2,1.35l-1.37,3.36l0.29,0.54l1.15,0.2l3.23,-0.87l4.42,0.14l4.48,-0.92l-2.0,3.15l0.49,0.92l1.58,0.46l-0.82,1.1l-0.09,3.0l-1.71,3.84l-2.65,1.82l-0.57,1.45l-0.99,1.14l-0.21,1.53l0.39,3.02l-0.62,1.5l0.26,1.49l-1.42,1.45l-0.29,1.32l0.22,1.73l0.79,0.79l1.58,0.03l3.52,-0.91l-1.46,1.85l-6.96,1.91l-1.4,0.8l0.05,0.8l1.94,1.48l-1.81,4.72l-2.41,2.34l-1.13,2.03l-3.45,2.21l-2.98,1.29l-0.92,0.77l-1.12,3.88l-1.78,0.03l-3.78,2.34l-4.23,-0.58l-1.75,-1.22l-0.39,-0.49l0.21,-1.95l-0.2,-1.25l-0.68,-0.91l-0.54,-0.45l-1.13,-0.09l-1.28,-0.55l-2.82,-1.58l-0.89,-0.15l-1.53,0.67l-4.08,0.89l-5.1,2.13l-0.71,0.78l-0.32,0.99l0.13,0.92l1.31,1.81l0.43,3.76l0.57,0.43l2.07,0.26l0.53,0.46l-0.92,2.1l-4.29,0.32l-3.68,1.96l-4.52,-0.9l-3.64,0.83l-4.4,0.3l-4.62,1.48l-0.91,1.32l-1.85,1.04l-0.61,1.29l-3.19,2.69l-2.19,2.38l-1.57,2.64l-0.29,1.01l0.37,0.76l1.55,1.08l0.72,1.81l1.85,0.58l1.2,-0.27l1.16,-1.42l4.44,-0.76l2.24,-1.35l0.97,-0.06l-0.32,1.61l1.16,0.77l1.92,7.63l0.05,1.51l-0.13,0.47l-3.13,2.91l-2.22,2.6l-0.02,0.84l0.96,1.42l0.08,0.89l-4.12,2.16l-3.3,-0.7l-10.05,0.04l-0.37,0.26l-0.38,1.43l1.62,2.74l-0.25,1.65l0.95,3.65l-1.63,1.87l-1.69,3.16l-1.23,0.36l-0.72,0.72l-2.1,3.88l-0.3,3.39l-1.85,-0.11l-1.89,1.03l-3.03,2.64l-0.16,1.73l-2.81,1.64l-2.63,0.22l-1.48,-0.23l-1.64,-2.29l-2.24,0.01l-5.82,4.69l-0.86,1.01l-1.94,1.17l-1.02,2.04l-5.33,4.17l0.01,0.86l0.82,0.66l0.15,0.95l2.49,1.68l0.6,0.89l-0.77,4.27l-1.87,0.89l-1.11,1.82l-2.37,-1.24l-1.31,-0.31l-3.45,0.99l-0.58,-2.08l-1.67,-2.47l-4.17,-4.54l-0.94,-1.51l0.28,-3.74l-0.72,-3.13l-0.67,-1.41l-0.97,-0.23l-2.0,0.68l-1.67,-1.08l-3.78,-3.35l-2.68,-0.79l-1.08,-0.66l0.12,-1.17l0.94,-2.34l0.32,-1.85l-0.3,-0.46l-5.7,-1.33l-1.46,0.32l-3.2,2.53l-0.33,0.85l-0.16,0.97l0.37,3.2l1.24,2.68l-0.11,1.93l-2.86,-0.64l-2.5,2.24l-3.62,1.85l-0.08,0.66l2.14,2.17l-0.19,1.53l-0.5,0.14l-0.47,-0.49l-0.78,0.01l-1.51,1.89l-4.36,1.59l-1.46,2.23l-2.87,-0.08l-3.94,1.83l-8.12,1.89l-3.63,-0.26l-2.5,0.6l-0.95,1.15l0.41,0.64l-0.09,3.01l-0.85,1.41l-0.16,1.67l-2.95,1.78l-5.57,1.28l-5.38,-0.32l-0.92,-1.54l-1.91,-0.55l-0.55,0.4l-1.0,2.06l-0.69,0.25l-2.29,2.03l-0.86,0.22l-2.56,-0.62l-0.61,0.43l-0.88,1.56l-0.88,0.29l-1.85,-0.75l-1.42,-0.09l-6.19,3.41l-5.82,1.52l-1.24,1.89l-1.38,1.39l-2.22,0.55l-0.62,0.52l0.38,3.52l-0.22,2.44l-1.21,1.62l-1.13,0.16l-1.73,-0.55l-2.11,-2.71l-0.75,-0.03l-3.73,1.23l-1.67,0.82l-0.25,0.48l0.11,1.88l-0.83,2.32l0.33,0.6l2.15,1.22l0.36,3.93l1.67,2.69l0.26,1.05l-0.22,0.56l-7.54,1.84l-1.41,-0.24l-1.2,-1.27l-2.0,-1.16l-0.97,0.09l-2.6,1.46l-0.91,0.0l-0.24,-0.03l0.54,-1.3l-0.35,-0.63l-2.4,-1.2l-1.42,-0.31l-1.39,0.49l-4.43,0.67l-4.67,2.88l-2.0,0.62l-1.1,-2.2l-2.26,-1.19l-0.74,-1.22l-0.82,-0.6l-1.29,-0.14l-0.81,0.92l0.05,0.93l3.4,4.77Z", "name": "Nordrhein-Westfalen"}, "DE-SN": {"path": "M613.55,628.95l-0.88,-1.11l-2.79,-0.68l-2.12,0.03l-5.21,-2.72l-0.56,-2.5l0.23,-1.42l-0.35,-0.59l-2.13,-1.24l-2.07,-2.7l-1.04,-0.33l-2.37,0.21l-0.57,-0.77l1.09,-1.06l2.37,-0.89l0.4,-1.53l1.03,-1.22l-0.26,-2.05l-1.83,-1.59l0.74,-1.97l0.98,-1.16l2.32,-1.5l2.34,-2.48l1.81,0.24l1.6,1.61l1.88,0.2l1.29,-0.93l2.1,-2.93l1.3,-0.22l2.18,0.8l2.82,-0.78l0.93,-0.93l0.69,-2.02l-0.13,-2.55l2.56,-2.72l6.43,0.02l3.7,-2.24l1.2,-1.11l2.03,-2.95l-0.19,-0.6l-1.1,-0.37l-2.13,0.07l-0.86,-0.36l-1.17,-2.45l0.48,-1.71l-0.19,-0.66l-0.87,-0.75l-1.92,-0.08l0.8,-1.92l0.8,-0.57l1.42,-0.29l1.72,-1.87l-0.37,-1.2l-1.73,-0.68l-1.0,-0.94l0.08,-0.84l6.95,-1.75l3.87,-2.52l3.34,-0.33l1.12,0.65l0.76,-0.09l3.91,-4.23l3.73,-1.71l0.52,-0.45l0.24,-0.86l1.56,0.49l2.21,-0.21l3.23,0.36l1.42,-0.28l0.89,0.87l0.5,0.1l1.04,-0.77l1.12,-1.44l1.51,-0.7l0.31,-0.91l-0.06,-0.64l-2.07,-3.72l-2.37,-3.13l-5.65,-2.53l-1.2,-1.0l-3.96,-6.22l-0.75,-3.81l-0.29,-0.31l-15.19,-3.83l-6.4,0.51l-3.97,-0.65l-0.55,-0.56l-0.44,-2.26l-2.18,-1.75l-0.81,-1.35l0.44,-3.4l-0.31,-0.44l-2.72,-0.67l-0.03,-0.55l0.97,-1.14l0.45,-1.13l-0.27,-4.27l-0.46,-1.54l-1.79,-2.02l-0.13,-2.54l-0.78,-2.33l0.4,-1.27l1.39,-1.81l2.24,-0.4l0.73,-0.59l0.54,-2.67l-0.19,-1.2l-1.41,-3.02l-0.25,-5.06l-0.88,-1.57l-0.22,-2.52l3.36,-3.03l0.47,-1.66l0.0,-5.89l2.77,-1.98l0.82,-2.16l2.95,1.1l3.18,0.29l5.79,-2.16l7.22,-0.61l0.73,-0.41l0.85,-3.47l0.61,-0.21l7.64,0.27l1.43,0.76l9.37,-1.36l0.83,0.68l1.29,-0.04l2.24,-1.57l1.73,-2.62l1.25,-0.6l3.46,0.4l3.12,1.02l1.97,-0.78l5.13,-3.55l0.86,-1.06l2.42,-0.19l0.95,1.69l1.4,0.87l2.76,0.67l2.07,0.88l1.63,1.4l1.25,-0.19l1.72,-0.96l0.48,0.16l2.71,2.18l2.92,0.78l2.67,2.73l1.44,0.84l1.07,0.29l1.24,-0.44l2.87,1.9l-0.34,3.35l1.09,1.24l1.96,0.98l1.28,3.93l-0.21,1.01l-1.82,1.38l1.0,2.59l-0.17,3.23l-0.63,1.53l-1.33,1.1l-0.42,0.82l0.24,1.5l0.99,1.5l0.84,0.06l1.39,-1.45l0.88,0.11l0.74,-0.78l1.46,0.43l1.22,1.68l0.42,0.15l10.91,-3.01l1.5,-0.66l0.96,-0.85l2.02,-0.19l4.49,1.83l2.18,1.79l2.41,1.35l1.59,1.98l1.37,0.54l2.21,-0.3l5.81,1.42l14.92,0.95l16.88,-1.74l2.3,0.55l1.01,-0.3l7.43,-9.17l1.51,-2.95l0.22,-2.1l0.51,-0.86l3.79,-4.12l1.15,-0.88l3.86,-1.78l6.0,-1.21l4.61,0.5l3.44,1.06l3.56,1.87l3.87,-0.75l12.93,-5.38l4.18,-0.98l4.02,0.25l2.45,1.2l4.22,1.46l4.07,0.17l0.38,1.3l2.33,1.96l6.36,1.78l4.3,2.3l4.65,1.15l2.16,0.86l3.22,2.48l0.87,1.55l-0.78,1.66l1.39,11.49l0.33,1.01l1.82,2.65l2.23,2.2l1.34,2.38l-0.49,3.64l0.64,0.9l-1.54,2.53l-1.35,3.52l-0.8,3.65l-0.31,4.88l-1.95,2.47l-0.47,5.19l-9.27,18.97l-3.44,3.19l-1.44,1.97l-0.09,2.56l-1.51,3.37l-1.73,2.24l-1.42,0.32l-2.05,-0.06l-3.54,-0.66l-5.13,-3.01l-3.3,-0.79l-0.34,-0.69l0.32,-2.13l2.23,-4.98l-0.53,-1.73l-0.37,-0.26l-1.32,0.0l-5.24,1.82l-0.7,-0.46l2.4,-4.8l0.18,-1.95l-0.31,-1.4l-2.04,-2.41l-1.27,-0.84l-2.72,-0.6l-1.1,-0.64l-0.84,-0.97l-1.1,-2.63l-0.72,0.01l-0.79,1.66l-0.89,0.39l-3.47,-0.16l-2.84,1.01l-1.84,-0.43l-2.03,-2.05l-3.65,-1.0l-3.28,0.4l-2.68,2.26l-1.36,3.67l-1.05,1.27l0.12,0.61l1.3,0.68l3.27,0.36l1.27,0.43l-0.61,0.56l0.05,1.69l2.51,2.07l3.74,0.96l2.31,1.11l-0.5,2.77l-2.63,1.86l-7.56,-0.5l-3.63,0.62l-4.19,4.12l-15.18,5.82l-5.35,-0.28l-2.16,0.4l-3.49,2.82l-3.17,0.05l-1.0,1.08l-0.42,1.26l0.29,2.65l-0.51,0.61l-1.12,0.18l-2.78,1.45l-1.65,0.28l-4.52,-0.42l-2.2,0.2l-5.54,1.45l-8.78,-0.04l-4.64,0.74l-4.02,2.03l-0.17,0.56l1.06,1.85l-0.33,1.49l-1.2,1.3l-1.59,1.01l-0.14,0.53l0.51,0.92l-0.06,0.52l-4.72,3.92l-1.62,0.34l-2.0,-0.82l-2.51,-3.07l-1.67,-0.42l-0.96,1.18l-3.78,2.29l-1.57,3.35l-1.76,0.75l-3.18,-1.51l-1.91,-0.15l-0.4,0.24l-3.25,7.28l-1.34,2.04l-2.23,1.4l-5.05,-0.25l-4.63,1.08l-3.43,-0.9l-1.76,0.69l-1.43,7.74l-4.1,3.6l-3.12,-0.15l-9.01,-4.6l-1.07,-0.24l-2.84,1.1l-3.31,-0.12l-1.7,0.5l-1.46,1.18l-2.14,2.78l-0.96,0.78l-1.11,0.1l-5.28,-0.79l-7.34,0.46l-4.03,0.99l-3.7,2.69l-0.82,1.89l0.06,1.54l-1.51,0.27l-1.2,0.89l-2.84,1.34l-1.14,0.93l-3.09,4.69l-2.22,1.64l-0.8,1.0l-0.33,2.11l-1.85,1.99l-0.63,1.43l-0.3,2.41l0.86,3.81l-1.06,0.65l-1.37,-0.15l-0.85,-1.11l-1.85,-5.77l-2.4,-2.27l1.22,-1.33l0.11,-0.76l-0.4,-0.73l-1.02,-0.5l-2.77,-0.06l-1.31,-0.34l-0.94,-0.69l-0.32,-0.82l0.03,-2.13l-0.62,-1.37l-2.04,-1.29l-4.69,-0.34Z", "name": "Sachsen"}, "DE-HB": {"path": "M265.62,250.29l0.77,0.14l2.23,-0.47l2.69,1.38l7.16,2.2l2.11,-0.44l3.26,0.01l0.47,1.29l2.72,1.52l4.48,0.32l3.54,2.47l4.4,1.6l1.36,-0.49l1.23,-2.55l0.76,-0.22l3.33,3.07l-1.4,1.14l-0.28,0.91l0.47,0.95l2.35,2.05l0.26,0.56l-1.01,1.53l-0.59,3.76l-1.36,1.22l-3.97,2.26l-4.58,-2.93l-0.59,0.2l-0.14,1.16l-1.67,0.47l-1.73,-0.22l-5.32,-2.63l-5.13,0.89l-1.22,-0.18l-0.19,-4.35l-4.75,-4.35l-1.5,-1.88l-0.64,-3.9l-1.4,-2.3l-0.98,-0.62l-3.09,0.05l-2.31,-1.3l-3.92,-1.3l-1.3,-2.58l2.51,-0.02l2.99,1.58ZM261.84,196.51l4.03,1.21l2.2,0.32l4.13,-0.11l-0.95,1.95l0.35,1.49l1.13,2.28l0.64,2.7l-0.11,2.44l-1.57,2.18l-1.95,1.5l-1.06,-1.31l-1.38,-0.15l-1.41,-2.21l0.74,-3.74l-2.97,-5.84l-1.83,-2.72Z", "name": "Bremen"}, "DE-SL": {"path": "M65.93,746.0l-0.23,-1.93l-0.65,-1.16l-1.78,-1.49l-9.11,-3.87l-1.37,-0.17l-2.68,1.35l-1.34,0.11l-0.3,-4.41l0.59,-3.76l13.51,-1.05l11.44,0.43l6.27,-2.41l2.29,0.18l1.97,-0.33l14.47,-5.63l7.96,-4.23l2.89,1.17l0.89,-0.17l1.79,-1.14l7.05,3.24l6.38,0.31l2.11,1.74l4.12,2.71l0.79,0.23l1.21,0.11l1.89,-0.35l2.95,-1.49l0.05,1.82l1.71,3.48l0.25,3.41l0.57,0.68l0.74,0.13l0.16,1.73l-2.72,1.68l-1.93,2.1l-0.92,0.5l-0.54,0.98l0.61,1.93l4.08,4.23l-0.04,1.37l1.09,0.55l4.87,0.7l2.32,0.74l0.81,0.39l0.38,0.81l-0.64,1.56l0.39,1.37l-0.74,1.05l-2.08,1.61l-0.56,2.26l-1.52,1.52l-0.72,2.75l-1.14,1.4l-2.18,0.34l-0.95,1.98l0.91,4.25l5.38,4.66l1.21,0.05l-1.12,0.59l-1.6,3.08l-3.65,0.82l-2.07,2.79l-3.13,-1.11l-8.41,-0.07l-2.96,-1.08l-3.73,-2.3l-0.7,-0.12l-1.33,1.19l0.29,1.69l-2.64,1.41l-1.85,-1.23l-1.07,-3.29l0.05,-4.41l-0.38,-0.4l-2.04,-0.09l-6.05,-2.9l-1.21,-0.17l-2.89,0.23l-4.04,-0.78l-1.14,0.2l-0.86,2.29l1.06,3.9l-1.48,1.66l-1.02,0.2l-3.73,-1.17l-4.42,-0.05l-0.97,-0.35l-1.09,-1.54l0.73,-2.95l-0.62,-2.25l-0.78,-0.28l-1.53,0.75l-1.61,-4.5l-2.21,-1.07l0.12,-1.66l-0.28,-0.74l-6.51,-5.32l-1.57,-1.62l-0.52,-1.25l0.36,-0.78l1.85,-0.31l0.42,-1.34l-0.43,-0.9l-5.19,-4.82Z", "name": "Saarland"}, "DE-BY": {"path": "M307.24,662.75l0.86,-0.85l0.92,0.01l0.77,-0.48l0.41,-3.68l0.81,-1.04l3.72,-0.82l5.12,-2.0l2.55,1.34l1.32,0.36l-0.83,1.47l0.4,0.46l0.46,-0.03l2.16,-1.19l1.78,-1.75l0.49,-2.09l3.29,-0.87l9.69,0.58l4.61,1.99l0.68,0.67l0.77,1.74l1.59,1.62l2.33,0.32l1.62,-0.2l6.17,-2.23l0.81,-0.71l0.31,-0.73l-0.49,-3.2l1.7,-3.26l-0.64,-0.92l-2.32,-0.46l0.95,-3.62l-0.18,-3.43l1.88,0.4l1.07,-0.46l1.62,1.38l2.27,-0.43l1.71,0.66l1.51,-0.04l4.99,-1.4l0.46,-0.63l-0.67,-1.37l0.04,-0.77l0.65,-1.65l0.73,-0.82l0.6,-0.5l4.05,-1.4l1.68,-0.95l1.08,-1.11l0.12,-1.5l-0.59,-4.05l2.29,-6.91l1.08,-1.41l1.88,-0.6l2.59,2.37l1.15,0.36l2.03,-0.12l5.96,-1.94l6.14,-3.03l2.02,-1.47l1.25,-1.69l3.15,-4.7l1.02,-2.47l5.27,-4.94l1.17,-0.69l0.08,1.25l0.81,0.65l5.41,-0.31l1.16,0.29l1.63,1.47l0.74,2.27l0.54,0.65l9.39,3.01l0.77,1.25l0.03,1.8l0.44,0.78l1.44,1.0l1.71,1.89l2.58,1.75l-0.8,1.6l0.11,0.62l0.93,1.11l2.6,0.42l2.27,-0.53l0.56,1.24l0.9,1.03l2.62,1.88l0.23,1.17l0.56,0.48l2.81,0.21l1.06,-0.67l1.25,-0.14l1.25,2.28l2.44,1.7l0.83,4.11l-0.62,2.8l1.31,2.75l-0.33,1.46l0.63,1.21l1.07,0.93l4.39,-0.02l2.31,0.54l3.38,1.67l0.63,-0.1l0.41,-0.53l0.49,-4.06l0.51,-0.49l1.78,0.58l3.89,-0.64l3.02,0.94l1.19,-0.17l0.81,-0.86l0.12,-1.97l-0.74,-1.51l-2.78,-0.9l-0.75,-1.34l-0.65,-0.53l-2.94,-0.17l-1.83,-1.61l-2.67,-1.32l-0.59,-0.61l0.29,-3.55l0.33,-0.63l0.53,-0.32l1.93,0.55l0.91,-0.15l2.26,-3.1l0.7,-0.52l2.07,0.49l2.62,-1.16l2.08,0.23l1.63,-0.61l1.98,1.54l3.25,-0.73l1.24,0.05l3.26,4.0l1.12,0.8l0.76,-0.31l0.41,-1.39l2.52,0.3l1.03,0.66l0.58,0.81l0.94,0.27l3.67,-0.89l1.28,-1.14l1.14,-0.21l0.8,1.45l1.46,0.33l1.75,2.56l-1.95,2.16l-0.04,0.53l0.85,1.12l4.81,3.81l0.59,-0.1l1.09,-1.49l1.27,0.86l2.3,0.6l1.35,-0.24l0.41,-0.8l-0.17,-1.28l1.04,-2.16l-0.67,-2.01l1.11,-2.55l-0.17,-1.39l0.9,-0.32l0.25,-0.59l-0.33,-2.13l-1.14,-1.63l-0.11,-1.2l-0.5,-0.91l0.35,-3.12l-0.78,-2.67l0.16,-1.09l-0.65,-1.75l2.34,-0.94l1.98,-0.4l2.01,-1.11l0.52,-0.59l0.42,-1.4l1.23,-0.51l0.79,-0.82l6.04,0.28l1.44,0.39l0.99,1.7l-1.77,1.46l-0.24,4.31l0.32,1.33l3.45,2.23l1.36,-0.2l0.85,0.2l0.31,0.45l0.24,2.83l0.33,0.58l3.94,2.39l0.86,0.11l2.4,-0.52l1.34,-1.56l1.94,0.02l3.06,0.99l11.65,-2.06l1.71,-0.43l0.59,-0.74l2.05,-0.29l0.95,0.07l0.72,0.83l1.73,0.68l0.04,1.1l0.84,0.31l4.45,-1.52l3.2,-1.58l2.44,-0.21l0.65,0.23l2.01,2.64l1.96,1.08l0.37,4.11l0.46,0.54l5.42,2.83l2.27,0.01l2.57,0.63l0.21,0.31l-1.66,-0.1l-0.39,0.25l0.11,0.45l2.22,1.95l0.72,1.03l0.34,1.69l-0.16,1.44l-1.61,1.1l-1.23,1.55l-0.02,0.47l1.16,1.66l4.8,2.52l3.4,3.53l0.71,1.43l0.26,1.79l-0.67,2.84l0.08,2.18l0.97,2.1l4.34,2.83l0.78,1.13l0.55,3.29l15.17,6.93l1.41,1.16l3.71,0.4l1.43,1.15l0.22,1.61l-0.67,1.74l0.11,1.78l5.34,2.42l0.45,0.69l-0.28,2.29l-0.76,1.87l-2.24,3.49l-0.64,1.71l-1.62,-0.42l-0.48,0.26l-0.62,1.92l-0.34,4.58l-1.39,1.19l-3.99,1.43l-1.4,2.43l1.54,3.06l2.13,2.57l2.95,1.97l4.55,1.89l0.69,1.16l0.06,1.48l-0.78,1.47l0.13,0.52l0.72,0.37l-0.28,1.38l1.12,1.11l2.29,1.06l0.94,0.87l0.63,1.26l0.87,4.35l1.27,2.71l0.81,1.02l1.28,1.08l2.14,0.19l0.44,0.3l0.41,6.2l0.53,2.18l1.12,1.84l2.11,1.51l4.46,1.78l1.87,1.64l3.18,6.03l1.79,1.56l2.02,0.61l5.88,0.72l1.84,-0.21l0.34,-0.5l-0.33,-1.25l0.87,-0.23l3.62,0.84l1.6,0.72l4.11,3.4l1.69,0.63l1.12,3.4l3.2,3.22l1.21,0.59l9.1,10.48l1.3,2.51l1.71,2.25l2.78,1.38l6.04,0.27l1.85,0.61l1.11,0.81l2.99,3.39l4.11,3.55l1.02,2.05l0.06,3.46l1.49,2.17l2.89,2.32l3.15,1.92l2.35,0.96l0.51,-0.2l1.85,-3.44l1.14,-0.44l2.08,0.37l5.02,2.79l1.6,-0.1l0.24,2.12l1.04,2.3l1.58,2.05l1.73,1.48l1.97,0.81l3.69,0.51l1.23,0.58l2.21,2.93l4.73,8.01l1.76,1.57l-2.77,4.98l-0.27,1.32l0.72,0.39l0.98,1.59l1.19,0.69l-0.93,0.88l-0.25,1.51l0.51,4.16l-0.36,3.82l-0.59,1.59l-2.07,3.59l-1.4,0.86l-2.62,0.4l-0.87,1.54l-0.73,2.83l-3.74,-1.44l-1.54,-1.97l-3.43,-1.85l-10.31,-2.43l-3.36,0.39l-3.33,1.09l-0.98,0.8l-0.59,1.14l0.75,3.31l0.93,1.31l0.18,0.93l-0.24,1.09l-1.8,3.62l-0.19,5.97l-0.88,1.53l-0.74,3.27l-1.29,1.84l-9.51,7.1l-3.21,1.53l-13.46,2.01l-10.24,3.47l-1.71,1.03l-3.61,2.97l-3.18,1.52l-1.61,1.35l-5.06,0.84l-1.58,0.71l-4.05,4.56l-3.86,2.32l-1.84,2.3l-1.73,0.34l-0.82,1.06l-0.24,2.03l0.53,1.74l0.9,1.55l0.97,1.3l6.85,6.14l1.41,2.68l0.83,2.85l0.85,1.09l2.44,1.29l4.33,3.43l3.29,6.55l2.39,2.99l-6.14,8.46l-0.58,1.08l-0.38,2.35l-2.42,3.25l0.06,0.54l1.8,1.49l5.47,0.87l1.68,-0.24l2.39,-0.9l1.33,0.18l2.26,1.91l1.88,2.76l0.75,1.73l0.26,1.51l-0.25,2.82l-1.47,3.08l-1.87,1.89l0.16,2.88l-1.16,2.39l0.08,2.98l0.81,2.91l-3.21,3.13l-0.82,0.03l-2.2,-1.25l-1.18,0.06l-1.46,0.57l-5.65,-3.39l-5.34,-4.83l-2.51,-0.56l-2.21,-1.53l-0.47,-2.8l1.09,-2.63l2.53,-1.08l0.1,-0.68l-2.01,-1.66l-2.49,-1.41l-1.31,-1.38l0.9,-1.93l-0.41,-0.57l-1.62,0.18l-5.53,-1.21l-3.58,0.01l-3.5,0.72l-1.94,0.83l-4.41,3.37l-1.44,0.55l-3.9,0.29l-1.27,-0.54l-3.58,-2.72l-1.52,-3.59l-0.76,-0.97l-1.8,-0.26l-3.82,1.26l-1.56,0.22l-5.73,-1.03l-2.14,0.26l-3.1,1.1l-0.75,-0.58l-0.44,-1.13l0.9,-1.48l0.88,-2.83l-0.42,-0.58l-2.65,1.08l-2.36,1.68l-1.5,0.52l-0.26,0.45l0.6,1.9l2.2,2.3l0.16,3.24l-0.39,1.75l-2.66,2.94l-23.2,-0.73l-8.35,1.48l-1.11,0.57l-1.09,2.14l-0.75,0.21l-5.44,-0.96l-8.03,-0.03l-6.12,-0.79l-3.44,2.62l-1.92,5.31l-1.66,1.59l-2.01,0.69l-4.49,0.64l-4.61,-0.88l-2.36,0.46l-4.83,4.69l0.19,0.67l2.05,0.77l0.24,0.6l-0.65,0.95l-1.41,0.52l-4.19,0.09l-1.92,0.52l-2.04,1.59l-2.66,2.76l-1.98,0.78l-1.87,-0.18l0.19,-3.0l-0.27,-0.4l-2.32,-0.75l-2.59,0.63l-6.36,3.79l-1.81,0.48l-10.09,-0.13l-1.18,-0.59l-0.71,-1.19l0.59,-1.65l-0.45,-1.68l-4.9,-4.54l-5.06,-2.05l-0.36,-0.53l2.8,-1.64l0.91,-0.92l-0.07,-0.61l-3.34,-1.99l-1.63,-0.11l-5.35,1.9l-2.77,0.29l-0.65,-0.17l-1.31,-1.65l-12.95,-4.21l-2.49,-0.05l-1.67,0.96l-1.95,2.34l-1.13,0.78l-1.01,0.15l-4.07,-0.53l-1.45,-0.57l-1.12,-0.88l-0.13,-0.83l0.94,-1.84l-0.6,-1.59l-0.7,-0.28l-2.39,0.51l-1.47,0.5l-0.27,0.43l0.2,1.23l1.43,2.63l-1.1,5.97l0.22,0.44l2.06,1.33l0.48,1.0l0.38,1.46l0.02,2.56l-0.86,2.7l-1.39,2.45l-1.56,1.79l-3.99,1.77l-2.78,4.56l-1.72,1.99l-1.86,1.46l-4.33,2.29l-2.07,0.69l-7.6,0.8l1.04,-1.69l1.51,-0.48l0.76,-0.68l0.26,-0.97l-0.25,-1.51l1.75,-4.61l0.07,-2.24l-0.23,-0.38l-2.04,-0.87l-4.31,0.67l-1.64,1.38l-1.84,-0.58l-2.6,1.03l-0.76,-0.64l-0.46,-1.04l-0.36,-2.61l-0.84,-0.94l1.83,-1.22l0.61,-1.51l-0.9,-1.8l-4.86,-6.13l-0.46,-0.12l-2.68,1.35l-0.75,-0.39l-0.18,-1.4l-0.89,-1.68l-2.22,-2.21l-0.26,-1.94l-0.62,-0.28l-1.11,0.77l-1.35,0.23l-2.83,-0.19l-3.12,-0.93l-2.33,0.82l-1.74,-0.77l-0.3,-1.06l0.18,-1.57l-0.44,-1.68l-1.15,-1.08l-1.54,-0.52l-1.76,0.16l-1.54,0.73l-2.14,2.14l-1.14,2.09l-3.79,-0.83l-4.02,-2.5l-2.2,-0.96l4.11,-1.04l1.04,-1.33l1.35,-0.56l3.53,0.8l4.42,-1.94l7.33,-5.6l2.8,-1.14l3.86,1.42l2.37,0.49l2.45,-0.02l3.49,-0.99l2.12,-1.01l2.36,-0.56l1.69,0.03l0.49,0.32l1.53,3.25l0.63,0.05l1.06,-1.28l0.32,-2.33l2.77,0.72l0.95,-0.65l0.45,-1.9l-0.84,-2.57l-0.57,-6.54l-0.51,-0.77l-1.25,-0.17l-0.63,-1.11l-1.28,-1.18l0.73,-1.09l2.32,-0.31l0.78,-1.2l0.87,-0.35l0.19,-0.55l-2.55,-5.48l-0.46,-0.42l-1.19,-0.07l0.99,-0.98l0.52,-2.31l0.43,-0.62l0.41,-4.61l-0.21,-0.8l-1.3,-1.23l-0.94,-2.04l0.15,-0.59l1.32,-0.92l2.91,-6.98l0.74,-2.83l0.16,-4.81l-0.34,-1.72l-2.62,-5.07l-3.85,-15.14l-1.57,-4.54l-3.15,-4.58l-1.91,-3.58l-0.58,-0.34l-0.85,0.02l-0.61,-0.97l5.26,-6.27l0.65,-0.36l0.18,-0.49l-0.29,-1.44l0.86,-1.38l1.22,-1.05l3.32,-0.59l2.26,-1.41l0.64,-0.05l0.52,0.41l0.5,1.82l0.68,0.43l0.85,0.06l9.54,-4.95l0.53,-1.77l1.16,-1.12l5.1,-0.59l-0.07,-0.71l-0.53,-0.48l1.09,-2.68l0.18,-1.6l-0.23,-1.4l-0.9,-1.6l-0.18,-0.94l1.66,-0.87l0.43,-0.45l0.1,-0.83l-0.62,-0.92l-4.02,-2.53l-1.63,-2.66l0.12,-1.36l2.05,-2.42l2.29,1.65l2.94,0.13l1.54,2.66l0.82,0.44l0.86,-0.45l4.95,-4.66l0.73,0.33l-0.54,0.39l-0.02,1.02l-0.58,1.71l0.38,0.92l0.51,0.34l1.7,-0.72l4.25,-3.37l0.09,-0.53l-1.73,-2.74l-0.67,-1.65l-2.99,-1.08l-0.6,-0.67l-0.17,-0.81l0.06,-1.09l0.73,-1.24l-0.03,-3.13l1.39,-1.63l0.55,-2.26l-1.07,-2.44l0.47,-1.36l0.33,-4.38l-0.19,-0.8l-0.75,-0.6l1.86,-0.82l0.18,-1.17l-0.92,-2.48l-1.26,-1.18l-0.71,-1.52l-1.57,-1.53l-0.85,-1.38l-4.06,-2.83l-0.5,-0.58l-1.1,-2.75l-0.54,-0.32l-1.35,-0.01l-2.3,-1.07l-1.55,-0.02l-2.24,-0.82l0.39,-1.87l-1.89,-1.74l0.2,-1.55l-3.01,-1.34l1.83,-0.24l1.04,-1.59l0.6,-2.59l-0.35,-1.51l-2.28,-1.74l-0.95,0.09l-1.23,0.62l-3.67,-3.85l-3.02,-1.98l0.92,-0.35l0.31,-0.87l-1.55,-2.1l-0.17,-2.79l-1.4,-1.31l-0.23,-0.65l0.06,-0.21l2.18,0.83l0.87,-0.6l0.1,-1.15l-1.24,-2.85l0.7,-2.29l-0.29,-0.62l-2.05,-0.88l-0.86,-1.0l-0.22,-0.72l0.25,-3.33l1.56,-1.58l0.84,-0.1l1.86,0.55l0.62,-0.68l-3.12,-6.63l-2.65,-1.08l1.1,-1.43l0.77,-2.15l-1.08,-2.6l0.77,-1.6l-0.13,-1.06l-0.64,-0.52l-1.45,-0.17l-0.84,-0.48l0.52,-1.56l-0.13,-0.62l-1.08,-0.74l-1.14,-0.28l-2.36,1.58l-0.49,0.71l0.01,0.44l0.8,0.92l0.02,0.91l-3.59,3.2l-0.7,0.32l-7.69,0.0l-0.45,-3.4l0.24,-2.35l-0.43,-2.82l-0.44,-0.74l-1.19,-0.83l0.57,-1.19l-0.7,-1.14l-1.22,-0.12l-1.73,1.79l-1.44,0.57l-0.95,2.06l-0.66,0.3l-1.11,-0.51l1.98,-2.18l0.04,-2.29l1.77,-2.05l0.43,-1.48l-0.83,-1.39l-3.8,-3.59l-0.24,-4.98l-3.88,-4.3l-0.65,-0.13l-2.79,1.25l-3.39,3.08l-1.09,-1.87l-0.26,-1.92l-0.37,-0.42l-0.69,-0.04l-0.95,1.22l-1.44,0.77l-0.45,2.03l-0.73,0.27l-1.28,-0.13l-1.86,-1.01l0.85,-1.87l-0.08,-1.09l0.84,-0.79l-0.2,-1.41l0.56,-1.34l-0.32,-1.95l0.7,-1.47l-0.22,-0.68l-0.62,-0.5l-0.52,-0.04l-1.67,0.91l-2.47,0.68l-2.58,-1.4l-1.93,0.5l-1.07,-0.08l-5.23,-2.09l-1.95,-0.07l-3.63,0.46l-3.49,1.08l-4.71,-0.28l-1.32,0.34l-1.28,0.7l-1.63,1.68l0.67,2.26l-0.68,1.36l0.15,1.16l1.52,0.85l3.77,0.63l0.26,0.43l-0.4,1.79l0.49,0.74l0.92,0.08l0.9,-0.42l1.16,-2.18l2.28,0.8l-1.01,5.79l0.66,1.44l-1.49,1.17l-0.6,-0.04l-1.11,-1.02l-0.8,-0.27l-2.96,1.06l-3.2,0.23l-2.21,0.94l-0.91,1.03l0.29,2.08l-1.32,1.17l-0.69,1.82l-0.76,0.83l-6.21,0.17l-1.56,-0.21l-5.51,1.02l-0.81,-0.43l-1.36,-1.97l-1.97,-1.61l-0.28,-0.55l3.13,-2.68l0.61,-0.96l-1.14,-5.85l2.13,-0.38l1.38,-1.37l-0.23,-2.35l1.6,-3.44l-0.49,-0.75l-2.19,-0.91l-0.2,-0.63l1.53,-1.91l0.54,-1.57l-1.04,-1.29l-2.07,0.2l-1.03,-0.66l-0.76,-1.74l0.22,-3.05l-0.25,-0.72l-1.03,-0.1l-1.19,1.58l-0.64,-0.99l-3.46,-8.98l0.19,-8.9l1.56,0.51l0.63,-0.19l0.26,-0.5l-1.22,-2.34l0.03,-1.65l-0.89,-1.16l-0.52,-2.77l-0.62,-0.81l-1.3,-0.26l-1.47,0.54l-1.3,-0.69Z", "name": "Bayern"}, "DE-HE": {"path": "M189.06,662.8l6.22,-3.72l0.46,-0.72l0.37,-2.21l1.03,-1.35l1.72,0.1l1.59,-0.34l1.56,1.35l0.71,0.28l0.56,-0.14l1.0,-3.2l0.01,-0.9l-0.54,-0.58l-2.12,-1.09l-0.61,-0.67l-0.06,-0.76l0.19,-1.05l1.13,-2.19l1.06,-1.29l5.64,-2.46l1.19,-1.1l1.97,1.5l1.1,0.01l2.15,-2.8l-0.16,-0.7l-0.79,-0.83l0.65,-1.58l5.18,0.04l1.71,-0.39l1.12,-1.08l0.01,-1.4l-1.48,-4.04l-0.77,-1.2l-1.95,-1.33l-2.99,-5.25l-1.77,-0.79l-0.33,-1.2l-0.43,-0.34l-4.82,-1.27l1.32,-1.24l1.23,-3.58l1.88,-1.97l-0.26,-0.58l-1.68,-1.09l0.1,-5.36l0.34,-1.28l1.56,-1.0l1.46,-1.69l1.46,-0.49l1.42,0.13l2.34,2.22l1.53,0.16l0.9,-0.33l2.37,-1.77l2.65,-5.78l-0.4,-0.95l-0.99,-0.56l-0.54,-0.95l-0.35,-1.95l-1.97,-4.04l0.97,-2.07l0.42,-2.19l0.87,-1.67l0.55,-0.5l1.34,-0.37l0.43,-0.57l0.8,-4.78l-0.87,-1.26l-2.35,-1.53l-0.08,-0.85l-0.76,-0.58l0.0,-0.35l5.11,-3.82l0.98,-2.01l1.94,-1.17l0.84,-1.0l5.61,-4.56l1.55,-0.06l0.97,1.8l0.86,0.57l1.74,0.25l2.76,-0.24l3.21,-1.88l0.37,-0.79l-0.07,-1.12l2.78,-2.36l1.56,-0.88l2.12,0.06l0.52,-1.07l0.13,-2.84l2.01,-3.69l0.51,-0.49l1.34,-0.46l1.66,-3.08l1.9,-2.43l-0.97,-3.82l0.23,-1.74l-1.61,-2.78l0.25,-0.65l9.73,-0.04l3.41,0.7l4.7,-2.49l0.13,-1.34l-1.08,-1.92l2.08,-2.41l3.15,-2.93l0.33,-0.95l-0.07,-1.74l-1.95,-7.73l-1.12,-0.81l0.39,-1.08l-0.17,-0.64l-0.62,-0.46l-0.83,0.01l-2.71,1.53l-4.44,0.76l-1.35,1.51l-0.75,0.14l-1.38,-0.44l-0.54,-1.6l-1.74,-1.31l0.16,-0.72l1.5,-2.53l2.08,-2.26l3.23,-2.73l0.6,-1.27l1.72,-0.95l1.16,-1.45l4.72,-1.37l3.75,-0.17l3.54,-0.82l4.62,0.89l3.74,-1.97l4.02,-0.17l0.55,-0.29l1.0,-1.67l0.25,-1.18l-1.05,-1.11l-2.21,-0.32l-0.38,-3.62l-1.42,-2.11l0.62,-1.45l5.0,-2.08l4.02,-0.87l1.52,-0.65l3.17,1.66l2.7,0.9l0.5,0.61l0.17,1.06l-0.15,2.25l2.49,2.08l3.82,0.67l1.33,-0.08l3.58,-2.32l1.97,-0.15l0.56,-1.04l0.64,-2.92l7.03,-3.95l1.49,-2.4l2.0,-1.81l0.9,-1.62l1.49,-4.22l-0.27,-0.71l-1.68,-1.12l7.81,-2.32l0.86,-0.74l1.31,-1.93l0.99,0.39l1.68,-1.34l1.57,0.14l0.46,2.42l1.75,0.9l2.24,-0.07l1.99,-1.46l1.18,1.16l1.43,0.54l1.66,0.17l2.57,-0.67l0.82,1.66l2.26,1.14l1.16,2.98l1.77,1.61l-0.91,1.14l-2.57,-1.6l-0.99,0.03l-0.47,0.52l-0.05,0.71l0.99,1.75l-1.64,-0.47l-0.7,0.14l-0.31,0.51l-0.39,3.23l-1.24,0.25l-0.51,0.49l0.18,1.27l1.92,3.63l1.22,1.37l0.91,0.41l-0.82,1.44l0.67,1.4l-0.22,1.74l0.37,3.21l-0.37,0.67l-5.26,0.47l-1.71,1.99l0.1,1.18l0.7,1.56l-3.19,-0.74l-0.45,0.48l0.72,1.25l2.98,2.22l8.44,2.96l1.4,0.03l1.12,0.52l2.78,2.99l1.71,0.24l0.99,-0.41l3.57,-2.85l0.4,-0.61l0.05,-1.02l0.91,-0.92l0.25,-0.83l-0.71,-0.75l-0.63,-0.06l-2.27,1.39l-2.96,-2.41l-0.52,-1.13l5.21,-2.78l2.45,-0.67l0.99,-0.94l-0.43,-1.37l2.91,1.36l1.54,2.67l0.81,0.67l1.3,-0.11l0.91,-0.89l0.29,-0.97l-1.31,-2.87l1.9,-0.18l1.4,-1.02l0.32,1.9l3.81,2.58l-1.46,1.07l-0.75,1.73l0.64,2.78l1.28,1.69l0.21,2.45l0.43,0.75l1.62,0.46l0.82,1.1l1.15,0.78l1.9,0.02l4.46,1.18l0.25,0.35l-0.49,1.09l0.04,0.85l0.56,0.87l1.52,1.05l0.38,1.85l0.52,0.68l3.5,1.25l2.03,0.33l1.52,0.78l2.41,0.13l2.32,1.45l3.23,1.4l-0.24,0.85l-1.43,1.46l-0.63,1.44l-0.64,4.09l-0.9,-1.05l-0.05,-1.06l-1.42,-1.4l-1.74,-0.02l-2.24,0.52l-1.07,0.82l1.54,2.44l2.61,0.65l-0.33,1.29l-1.77,2.83l-0.63,3.16l0.4,0.72l1.69,0.29l1.23,0.8l1.93,0.22l1.12,1.6l0.27,1.05l-1.58,2.94l-5.34,0.22l-0.77,-0.42l0.07,-1.0l-0.63,-0.47l-1.56,0.41l-1.13,-0.34l-4.22,0.2l-2.58,1.51l-0.45,2.05l0.29,0.98l1.64,1.88l0.26,1.48l-0.27,0.7l-2.54,0.46l-3.39,-0.3l-1.58,-0.48l-0.99,0.34l-0.44,0.87l0.21,1.67l0.93,0.27l0.72,-0.49l-0.07,1.56l0.45,1.2l0.86,0.09l1.69,-1.65l1.02,-0.15l2.22,1.43l1.99,3.1l-2.73,2.91l-0.27,0.57l0.31,1.21l-0.24,1.38l-2.81,0.88l-2.01,0.22l-1.52,0.55l-0.92,0.75l-0.79,2.63l0.37,2.31l-1.66,0.35l-0.79,1.45l1.44,1.95l-0.21,2.08l-2.03,3.63l0.06,1.51l-1.9,1.56l-1.21,1.72l-0.4,3.33l0.25,0.99l0.53,0.55l0.64,0.09l1.67,-0.53l2.71,1.2l1.5,0.1l0.86,-0.45l0.74,-1.59l-1.3,-1.8l0.22,-0.79l4.97,-1.71l4.58,0.88l0.84,0.67l1.02,2.21l0.21,2.8l-1.57,0.46l-1.0,0.94l-0.37,0.8l0.33,1.49l-0.08,3.19l0.81,1.99l-1.2,4.17l0.37,0.84l0.48,0.17l-0.79,1.94l-4.23,6.19l-1.88,1.37l-6.08,3.01l-5.77,1.88l-1.85,0.11l-0.86,-0.29l-2.75,-2.43l-2.62,0.79l-1.26,1.68l-2.34,7.08l0.55,5.34l-2.41,1.72l-4.04,1.39l-0.82,0.67l-0.87,1.02l-0.73,1.9l-0.03,1.05l0.51,1.18l-4.68,1.27l-1.31,0.02l-1.71,-0.66l-2.15,0.43l-1.62,-1.37l-1.32,0.45l-1.62,-0.4l-0.79,0.27l-0.3,1.28l0.31,2.57l-0.98,3.73l0.55,0.82l2.43,0.55l-1.67,3.05l-0.14,0.8l0.59,2.64l-0.76,0.76l-5.86,2.1l-1.42,0.19l-2.14,-0.3l-1.19,-1.32l-0.89,-1.92l-0.71,-0.64l-4.87,-2.13l-10.04,-0.61l-3.71,1.06l-0.56,2.17l-1.63,1.62l-1.41,0.86l0.51,-0.78l-0.2,-0.69l-4.5,-1.94l-5.38,2.04l-3.79,0.85l-0.88,0.74l-0.36,0.83l-0.26,3.37l-1.59,0.36l-1.25,1.35l0.13,0.59l1.66,0.94l0.5,0.1l1.48,-0.57l0.77,0.12l0.34,0.4l0.51,2.75l0.93,1.28l-0.09,1.47l1.05,1.97l-1.77,-0.58l-0.52,0.37l-0.2,9.52l3.53,9.26l0.81,1.24l0.73,0.23l1.47,-1.73l-0.18,3.35l0.87,2.03l1.2,0.94l2.28,-0.17l0.56,0.73l-2.08,3.19l0.05,0.77l0.48,0.63l2.33,1.07l-1.56,3.17l-0.13,1.17l0.33,1.26l-0.96,0.79l-1.87,0.26l-0.66,0.5l0.08,1.81l1.07,4.11l-0.39,0.63l-2.41,1.88l-0.97,1.27l0.48,1.19l1.95,1.59l1.21,1.76l-0.66,0.9l-2.0,-1.11l-0.72,0.41l-0.06,0.94l2.49,2.72l2.67,4.35l-0.53,-0.08l-1.27,-1.24l-2.83,-0.14l-1.03,0.15l-2.22,1.81l-0.82,0.27l-2.29,-0.37l-5.77,0.21l-2.88,3.09l1.56,2.62l0.21,0.73l-0.38,0.71l-2.29,1.12l-0.74,-1.11l-0.8,0.1l-1.03,2.77l-3.65,3.39l-3.34,-0.68l-0.21,-0.48l0.2,-1.48l1.57,-0.92l0.38,-0.8l-0.38,-3.0l0.18,-1.13l1.84,-1.85l1.51,1.25l1.11,-0.21l1.61,-2.44l0.13,-1.04l-0.34,-0.85l-0.4,-0.23l-5.94,0.42l-1.96,-2.58l-4.29,-0.09l-4.48,-2.24l-1.09,-1.05l-1.37,-2.83l-0.42,-1.33l0.56,-1.04l-0.1,-1.22l-1.11,-1.39l-0.19,-0.98l-0.45,-0.46l-0.7,-0.06l-7.39,1.79l-0.14,0.84l1.89,7.33l-0.58,0.7l-3.94,1.43l-6.51,-5.73l-2.49,-1.66l-2.58,-0.34l-2.96,1.03l-1.5,-3.6l-3.84,-6.83l0.16,-3.16l1.55,-2.32l2.53,-1.45l3.36,-0.63l3.44,-3.99l0.34,-1.44l-0.27,-0.46l-1.38,-0.46l-3.7,0.45l-1.35,-3.01l-1.84,-2.89l-0.93,-3.51l-1.02,-1.85l-2.22,-2.77l-0.65,-1.41l1.41,-4.57l-1.93,-4.35l-10.62,-10.19l-1.57,-0.86l-1.32,-0.28l-2.83,0.07l-12.29,3.51l-3.89,2.47l-4.64,2.05l-4.18,1.16l-3.72,0.11l-1.57,-1.95l-0.28,-1.51l-0.88,-1.29l-6.36,-4.84l-0.86,-0.31Z", "name": "Hessen"}}, "height": 1013.8952766123396, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-europe-mill-en.js b/plugins/jvectormap/jquery-jvectormap-europe-mill-en.js new file mode 100644 index 0000000..66ff986 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-europe-mill-en.js @@ -0,0 +1 @@ +$.fn.vectorMap('addMap', 'europe_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 790.3366477906968, "bbox": [{"y": -9690294.156947838, "x": -4159649.2860909165}, {"y": -3201145.6268246886, "x": 3229902.613642692}], "left": 0}], "paths": {"BE": {"path": "M400.73,433.08l-0.52,-2.25l-0.56,-0.57l-1.77,-0.48l-2.13,-0.14l-0.38,-0.28l-0.52,-2.3l-0.72,-1.23l-1.11,-0.96l-1.47,0.14l-1.43,0.73l-0.9,0.22l-0.92,-0.59l-2.1,-2.12l-0.16,-0.43l0.22,-0.99l-0.84,-1.6l-0.09,-0.51l5.63,-2.88l3.56,-1.53l1.28,-0.35l0.35,1.28l0.4,0.6l0.61,0.41l0.8,0.0l1.32,-0.72l1.22,0.17l0.87,0.33l1.05,0.77l1.13,0.14l2.05,-0.73l1.86,-1.11l0.78,-1.23l1.7,0.4l0.63,-0.24l0.21,-0.45l-0.2,-0.84l1.02,-0.55l1.09,0.83l0.82,0.06l1.67,-1.16l0.35,0.38l0.35,0.92l0.55,0.19l1.3,-0.08l1.17,-1.0l0.54,1.83l1.68,1.4l1.62,0.43l2.18,-0.42l1.56,1.44l2.54,0.82l0.24,0.29l-0.08,0.46l-0.9,1.69l-0.1,0.88l-1.21,1.2l-0.17,0.9l0.73,1.23l0.43,0.19l1.64,-0.55l0.11,0.13l-0.41,-0.01l-0.41,0.39l0.39,0.41l2.43,0.07l1.66,1.17l0.54,0.79l0.69,0.45l-0.57,0.57l-0.1,0.41l0.2,0.53l0.57,0.56l1.13,0.22l0.42,0.41l0.27,2.03l-2.32,1.34l-0.73,1.47l-1.68,-0.36l-0.37,0.11l-1.48,1.5l-1.13,2.23l-0.65,0.89l-0.26,2.02l2.04,2.91l-0.89,1.46l-1.0,-0.01l-2.56,0.49l-3.15,-2.93l-1.99,-0.73l-1.61,-1.01l-1.76,-0.23l-0.27,-1.86l-0.65,-0.86l0.89,-2.91l-0.19,-0.47l-0.91,-0.33l-0.73,0.31l-1.0,0.88l-0.65,1.57l-1.29,0.64l-2.28,0.26l-2.49,-0.26l-0.25,-0.23l0.63,-0.96l0.11,-0.73l-0.73,-1.1l0.42,-1.16l-0.09,-0.82l-1.77,-1.33l-1.44,-0.33l-2.31,-0.2l-0.79,0.17l-0.45,0.42Z", "name": "Belgium"}, "FR": {"path": "M467.41,568.7l0.77,-0.77l0.95,-1.92l1.23,-0.85l3.09,-0.88l1.24,-1.13l0.62,0.05l1.09,0.51l0.48,-0.04l0.35,-0.3l0.45,-1.04l-0.18,-0.96l0.1,-2.01l0.33,-0.92l0.26,-0.03l0.39,0.4l0.24,2.71l-0.35,2.37l0.28,0.9l0.7,0.99l0.4,6.29l-0.06,0.38l-2.01,3.28l-0.12,3.28l-0.24,0.74l-0.6,0.88l-1.03,2.66l-0.66,0.88l-3.62,-1.94l-0.93,-0.91l0.77,-0.94l0.22,-0.73l-0.25,-0.45l-2.03,-0.85l0.51,-1.36l-0.22,-1.18l-0.41,-0.29l-1.25,-0.03l1.06,-1.23l0.08,-1.13l-0.23,-0.35l-0.75,-0.34l-0.61,-0.58l-0.2,-0.63l0.36,-0.41l0.84,-0.38l0.16,-0.59l-0.67,-0.97l-0.55,-0.18ZM313.21,482.01l0.65,-0.84l-0.12,-0.59l-0.73,-0.41l-2.57,0.36l-1.17,-0.3l-1.49,-1.3l-1.38,0.14l-0.87,-0.45l-1.52,-0.0l-0.86,-0.67l-5.41,-1.47l-2.3,-0.18l-2.17,0.65l-0.93,-0.18l-0.72,-0.8l-0.92,-1.74l-2.86,-1.03l0.2,-0.24l1.5,-0.19l1.83,-0.56l0.83,-0.83l-0.09,-0.62l-1.43,-0.83l-1.1,-0.24l-0.48,-0.52l1.77,0.19l2.26,-0.18l0.24,-0.69l-0.82,-0.75l-1.49,-0.46l-4.19,0.09l-0.42,-1.11l0.47,-1.3l2.39,-1.3l6.29,-1.5l2.69,0.22l2.0,-0.28l2.39,-0.99l1.02,-0.82l3.06,-0.46l2.9,0.82l2.77,3.22l1.41,1.17l0.45,0.04l3.24,-1.89l4.69,0.05l0.91,0.97l0.66,-0.11l0.39,-0.87l0.65,-0.76l1.04,1.03l5.25,-0.19l0.91,-0.2l0.3,-0.33l-0.2,-0.4l-1.32,-0.73l-1.04,-1.7l-0.24,-6.84l-1.52,-2.15l-1.65,-3.07l-0.74,-1.78l0.1,-1.05l3.43,0.27l2.91,-0.67l1.05,0.35l-0.06,1.26l0.44,1.82l1.34,2.03l0.33,0.16l2.38,-0.09l2.65,0.59l3.28,0.09l5.0,1.0l2.17,-0.63l1.94,-1.22l3.74,-0.81l0.55,-0.6l-0.36,-0.63l-2.1,0.17l-1.75,-0.69l-0.18,-0.57l0.94,-2.27l5.65,-2.74l4.18,-0.84l4.36,-1.56l2.29,-1.65l1.52,-2.13l0.98,-0.76l0.11,-0.58l-0.47,-0.63l0.37,-7.74l0.38,-1.32l0.77,-1.06l1.22,-0.85l1.89,-0.95l7.18,-1.35l0.7,-0.34l0.89,1.98l-0.23,0.88l0.24,0.64l1.05,1.27l1.31,1.16l1.4,0.75l1.2,-0.31l1.32,-0.69l0.9,-0.18l0.82,0.69l0.65,1.1l0.2,1.26l0.46,1.27l0.79,0.51l2.14,0.14l1.48,0.36l0.25,0.21l0.52,2.23l0.39,0.51l0.52,0.06l0.75,-0.61l0.36,-0.04l2.15,0.19l1.16,0.24l1.51,1.13l-0.49,1.57l0.74,1.06l-0.07,0.45l-0.63,0.95l-0.03,0.44l0.24,0.46l0.49,0.31l2.77,0.32l2.61,-0.31l1.51,-0.75l0.83,-1.78l1.17,-0.81l0.11,0.06l-0.86,2.81l0.08,0.38l0.61,0.7l0.35,2.16l0.4,0.31l1.75,0.15l1.55,0.99l2.02,0.76l3.1,2.91l0.72,0.08l1.01,-0.31l2.15,-0.17l0.56,0.58l1.0,0.26l0.85,0.63l0.7,0.16l1.01,-0.16l0.74,-0.57l0.67,-0.2l0.66,0.06l1.34,0.7l0.67,-0.05l0.86,0.22l0.9,0.74l0.57,1.33l2.4,2.92l0.83,0.07l1.01,-0.82l0.33,-0.06l1.18,0.37l0.34,0.99l0.66,0.25l0.87,-0.21l1.22,0.23l3.14,-0.67l0.9,1.02l1.32,0.54l5.32,0.9l1.54,0.57l0.05,1.07l-4.07,4.38l-0.61,1.63l-0.4,2.35l-0.78,2.19l-1.23,2.2l-0.44,1.6l0.31,1.21l-0.19,1.55l-0.73,2.24l-0.14,1.82l0.62,1.44l-1.04,0.58l-0.92,1.44l-0.88,0.32l-1.65,0.02l-0.4,-0.65l-0.67,-0.35l-1.31,0.06l-1.26,0.7l-0.92,1.02l-0.06,0.45l0.57,0.78l0.73,0.14l-0.57,0.84l-3.55,3.55l-0.31,0.55l-2.89,1.4l-0.3,0.56l-0.35,2.71l-3.37,2.5l-1.41,3.23l0.11,0.36l0.71,0.7l-0.3,1.32l-0.67,0.58l-0.84,0.37l-0.24,0.37l0.02,1.08l0.28,0.37l0.63,0.17l1.24,-0.12l1.53,-0.78l1.1,-1.08l0.06,-0.49l-0.55,-0.89l1.09,-0.96l1.33,-0.57l1.91,-0.11l2.25,0.34l0.17,1.45l0.39,0.63l-0.55,1.68l0.07,0.37l1.71,1.93l0.78,0.61l0.73,1.16l-0.84,0.75l-1.8,0.89l-0.41,0.81l0.03,0.94l0.36,0.71l0.96,0.63l1.82,2.88l1.7,1.48l-0.43,0.65l-0.47,1.66l-1.22,0.37l-1.74,1.24l-1.95,-0.12l-1.05,0.48l-0.22,0.4l0.1,0.84l0.84,0.96l0.72,1.77l0.97,0.7l2.2,0.58l0.6,1.76l-0.88,0.55l-1.6,2.79l0.02,0.38l0.6,1.15l-0.2,0.75l0.43,1.08l1.01,1.0l4.78,2.37l0.96,0.2l3.04,-0.67l0.22,0.03l0.38,0.96l-1.06,1.72l-1.48,1.7l0.06,1.58l-1.05,-0.07l-0.48,0.65l-2.48,1.14l-4.33,3.67l-1.97,1.05l-0.55,0.79l-0.41,1.18l-1.06,0.92l-0.94,0.45l-2.59,0.52l-2.42,1.03l-1.16,-0.44l-2.87,0.05l-1.9,-1.3l-3.43,-0.8l-1.08,-1.78l-0.31,-0.19l-2.66,-0.07l-0.38,-0.17l-0.12,-1.01l-0.5,-0.38l-2.08,0.32l-0.81,0.45l-0.79,-0.06l-0.3,0.4l-0.61,0.05l-4.45,-1.35l-2.06,-0.39l-0.69,-0.33l-0.61,-0.89l-0.94,-0.61l-2.23,0.45l-1.85,1.74l-7.11,4.41l-1.44,2.0l-1.51,2.72l-0.16,1.53l0.65,4.05l1.42,2.15l-2.56,-0.58l-1.25,0.17l-2.7,0.83l-0.6,0.45l-0.23,0.58l-5.69,-1.28l-2.44,1.08l-0.33,-0.04l-0.81,-1.08l-2.69,-1.15l0.28,-0.4l0.06,-0.56l-0.7,-0.84l-2.87,-0.64l-0.99,0.54l-0.97,-1.3l-0.9,-0.35l-1.09,-0.05l-2.66,-1.07l-3.39,-0.98l-1.12,-0.09l-0.58,0.37l-0.27,0.7l-0.12,1.46l-3.16,-0.18l-1.59,0.11l-0.9,-0.43l-3.18,0.48l-2.06,-1.5l-1.46,-0.72l-0.73,-0.03l-0.76,0.32l-1.03,0.13l-1.28,-0.01l-2.47,-2.29l-2.3,-0.16l-4.56,-1.73l-0.08,-0.34l-0.5,-0.41l-0.46,0.19l-0.66,0.89l-0.39,-0.03l-0.36,-0.23l0.64,-1.0l0.26,-0.92l-0.03,-0.84l-0.21,-0.32l-0.96,-0.5l-2.09,-0.24l-1.08,-0.38l-0.43,-0.23l-0.42,-0.74l2.08,-0.55l2.09,-2.26l1.89,-7.6l1.35,-8.91l0.9,-1.51l1.14,-0.42l0.17,-0.63l-1.03,-1.24l-0.59,-0.03l-0.43,0.42l0.62,-6.75l0.54,-3.01l0.77,-2.65l2.93,2.2l0.74,1.02l1.11,3.82l1.99,1.61l0.49,-0.04l0.08,-0.49l-0.46,-0.85l-0.79,-0.69l-1.22,-4.82l-0.82,-1.5l-1.35,-1.33l-3.86,-2.45l-0.26,-0.35l-0.07,-0.37l0.72,0.02l1.05,0.44l0.54,-0.47l-0.98,-3.09l-0.57,-6.56l-0.32,-0.32l-2.25,-0.27l-1.0,-0.36l-5.23,-2.74l-1.77,-2.81l-1.87,-2.15l-0.38,-0.8l0.02,-0.77l0.93,-1.93l-0.03,-0.4l-0.86,-1.27l-1.37,-0.73l0.46,-0.73l0.44,-0.53l0.88,-0.15l1.32,0.2l1.31,0.58l1.17,0.19l0.44,-0.27l-0.2,-0.48l-3.38,-1.67l-5.06,0.54l-1.01,-0.19l-0.72,-0.28l-0.23,-0.74l0.6,-0.47l0.66,-1.0l-0.06,-0.51l-0.75,-0.7l-1.24,-0.37l-2.76,0.2ZM332.31,508.21l0.62,0.36l1.26,1.45l-0.15,0.48l-1.62,-1.85l-0.11,-0.43Z", "name": "France"}, "BG": {"path": "M662.06,585.16l0.29,-3.94l0.71,-1.75l-0.05,-0.72l-0.34,-0.45l-0.52,-0.23l-1.48,-3.54l-0.69,-0.61l-1.51,-0.53l-1.29,-0.71l-1.09,-0.94l-1.64,-1.9l0.66,-0.27l1.35,-1.8l0.2,-0.83l-0.23,-0.74l-0.63,-0.58l-0.41,-1.19l0.35,-1.29l0.03,-0.68l-0.31,-0.71l0.24,-0.54l0.99,-0.47l1.96,-0.09l0.3,-0.16l1.23,-1.62l0.8,-0.57l1.21,-1.38l0.5,-1.61l-0.17,-0.4l-1.52,-1.02l-1.32,-1.73l-2.83,-1.63l-0.66,-0.92l-0.35,-1.39l-1.06,-1.73l-0.32,-1.13l-0.05,-1.22l0.63,-2.12l2.3,-1.11l0.53,-2.08l0.71,-0.5l3.99,2.37l-0.39,0.49l-1.07,0.56l-0.68,0.84l-0.16,0.81l0.16,0.75l1.15,0.79l4.1,-0.65l4.13,0.33l5.62,1.1l3.78,0.39l2.81,-0.5l9.82,1.78l4.63,0.26l2.69,-0.69l1.88,-0.94l1.63,-1.76l3.74,-2.22l3.65,-1.25l4.82,-1.02l3.06,-0.33l4.53,2.38l1.97,0.05l1.33,0.33l0.99,0.7l1.96,-0.44l2.27,2.66l2.33,0.82l2.12,0.48l2.5,0.06l-0.28,3.44l-1.08,1.52l-1.9,-0.54l-2.52,0.52l-1.56,2.22l-1.43,1.35l-0.55,2.99l-0.1,4.22l-1.73,0.67l-3.65,3.91l0.11,0.63l2.06,1.07l0.86,0.77l1.53,2.31l2.14,2.56l0.2,0.58l-1.3,-0.19l-0.64,0.09l-0.5,0.38l-1.76,-0.06l-1.68,0.63l-0.63,-0.33l-2.39,-2.11l-0.84,-0.32l-3.33,0.55l-1.81,1.11l-3.72,0.47l-0.65,0.45l-0.8,1.79l-2.11,0.49l-0.45,0.47l-0.23,0.66l-1.29,-0.3l-1.48,0.43l-0.64,1.22l0.24,0.7l0.41,0.45l0.4,1.29l0.14,1.28l-0.19,0.57l-0.77,0.47l-1.8,0.58l-1.96,-0.27l-0.78,0.24l-2.65,0.25l-3.6,0.88l-1.54,-1.11l-1.96,-0.82l-1.99,-0.47l-1.13,0.51l-2.12,-1.23l-0.94,-1.63l-0.73,-0.26l-1.48,0.51l-4.43,-0.06l-0.37,0.27l-0.37,0.84l-1.79,0.08l-1.58,0.68l-1.65,0.41l-2.63,-0.19l-2.7,0.22l-1.27,1.01l-2.52,-0.16Z", "name": "Bulgaria"}, "DK": {"path": "M554.98,347.03l-0.27,0.17l-2.04,-0.48l-2.42,-1.16l0.34,-2.19l0.45,-0.72l4.46,2.58l0.04,0.75l-0.57,1.04ZM521.14,336.77l-0.22,-0.59l0.73,-0.83l0.32,0.89l-0.83,0.53ZM520.72,332.89l0.03,1.74l-0.25,0.39l-3.02,1.28l-1.05,0.95l-0.5,1.54l0.08,0.36l0.82,0.99l1.45,0.59l0.29,1.42l-0.97,0.73l-3.08,0.9l-0.28,0.33l-0.33,2.23l0.1,1.82l-0.27,2.73l-2.01,0.63l-1.43,-2.33l-0.04,-1.11l-1.16,-4.03l-0.3,-0.26l-2.46,-0.47l-1.06,-0.05l-1.28,0.26l-1.42,-2.13l0.24,-2.45l-0.86,-1.5l-0.07,-1.09l-0.84,-0.87l-0.75,-0.28l-0.25,-0.91l0.53,-0.2l2.37,0.16l1.44,-0.44l2.06,-2.53l0.14,-1.11l1.62,-0.2l0.65,0.66l-0.16,1.38l0.12,1.92l0.25,0.35l1.84,0.62l0.44,-0.26l0.83,-1.98l0.58,-0.6l0.15,-1.49l-0.3,-0.79l-0.37,-0.4l1.92,-1.31l2.33,-1.22l1.27,-0.06l1.35,0.3l1.87,0.72l0.2,0.29l-0.75,1.19l-0.29,0.87l0.58,2.72ZM517.34,347.25l1.62,0.28l1.26,0.71l-1.94,-0.19l-2.4,1.26l-0.36,-0.17l0.32,-0.61l0.82,-0.4l0.68,-0.88ZM504.49,350.08l2.48,1.22l1.72,-0.02l0.86,0.38l0.26,1.85l-0.8,0.33l-1.36,-0.13l-1.59,0.57l-5.33,-2.52l0.22,-2.53l2.27,-0.18l1.27,1.03ZM500.25,304.31l-0.34,0.28l-1.08,-0.37l0.33,-0.36l1.93,-0.37l-0.83,0.82ZM495.95,352.06l-0.81,-1.41l0.87,-0.91l0.6,-1.06l1.48,-1.56l-2.13,4.94ZM468.6,349.15l-0.42,-2.39l-0.69,-1.33l0.85,-0.26l0.28,-0.41l-0.25,-3.27l-0.49,-1.78l-6.52,-3.55l0.92,-7.01l-1.09,-3.15l0.55,-8.59l1.14,-0.12l2.54,0.96l1.02,0.11l0.64,0.76l1.02,0.47l0.49,-0.15l0.69,-1.1l0.23,-1.47l1.93,-1.94l2.11,-1.0l1.52,1.58l0.43,0.13l0.28,-0.35l0.79,-5.97l-0.27,-0.44l-1.96,-0.62l-1.84,0.54l-1.79,2.66l-1.35,2.98l-2.07,0.26l-1.77,0.83l-2.33,-1.48l-0.02,-0.92l0.2,-0.59l1.88,-2.48l2.46,-2.33l2.46,0.02l2.01,-0.79l1.05,-0.09l3.53,0.17l2.07,-0.61l1.73,-1.22l3.52,-4.77l1.89,-1.89l4.04,-0.74l3.41,-2.12l-0.98,1.01l-0.52,1.77l1.22,2.37l-0.24,1.3l0.08,2.5l-1.14,1.36l-1.29,2.84l-0.65,0.68l-0.18,7.31l0.13,0.32l1.37,1.27l1.55,0.73l4.81,0.01l0.84,1.17l-0.84,2.52l-1.27,0.93l-1.68,0.72l-0.87,0.03l-1.4,-1.34l-0.5,-0.05l-0.79,0.52l-0.85,0.91l-1.25,3.97l-0.56,2.54l-0.66,-0.32l-1.22,-0.03l-1.7,0.66l-0.08,0.69l1.36,1.25l-1.45,0.7l-1.2,1.08l-0.53,0.82l-1.54,1.01l-0.95,1.22l-0.07,0.36l1.05,4.17l-0.31,0.95l-1.8,1.6l-0.79,1.57l0.37,0.57l1.54,-0.02l1.37,0.66l0.38,0.38l-0.27,0.76l0.33,1.37l-1.23,-0.49l-3.7,0.92l-0.99,-0.03l-0.97,-0.68l-3.84,-0.98l-2.88,-0.13ZM494.78,336.56l2.16,5.08l-0.38,0.82l0.26,1.43l-0.26,1.07l-1.97,1.37l-2.27,0.06l-2.47,-0.72l-3.42,-1.35l-0.23,-0.63l-0.55,-0.54l-0.9,-2.27l0.02,-2.6l1.55,-0.33l3.85,-1.39l0.72,0.18l1.12,0.77l1.1,0.04l1.67,-1.0ZM494.14,332.71l-0.34,-0.12l-0.07,-0.92l0.3,-1.04l-0.31,-1.07l1.07,1.5l-0.65,1.64ZM490.95,349.9l0.79,0.15l0.49,0.27l-0.27,0.06l-1.01,-0.48ZM483.63,346.94l2.33,1.33l0.69,1.28l-0.87,0.16l-0.75,-0.43l-1.03,-0.14l-0.36,-2.2Z", "name": "Denmark"}, "HR": {"path": "M540.52,517.06l1.22,0.46l4.0,-0.1l0.92,-0.53l1.59,-2.35l0.23,0.62l0.59,0.68l1.14,1.06l0.98,0.61l1.03,0.14l1.21,-0.48l2.01,0.79l1.9,0.18l1.48,-0.45l0.26,-0.49l-0.74,-1.79l0.05,-0.31l0.75,-0.46l0.19,-0.41l-0.17,-0.47l-0.81,-0.72l2.04,-0.93l2.28,-0.61l0.65,-0.75l0.33,-2.14l-0.13,-1.17l-0.95,-1.16l0.13,-0.69l0.25,-0.33l1.9,-0.54l3.0,-1.24l0.95,-1.14l2.19,-0.05l0.5,-0.65l-0.2,-1.45l0.85,-0.55l1.23,0.15l1.87,0.65l2.36,1.14l1.59,1.24l0.96,1.48l1.26,1.13l1.63,0.83l1.18,1.01l1.03,1.44l1.3,0.76l1.77,0.21l0.88,0.39l0.48,0.77l0.9,0.7l1.44,0.67l2.28,0.38l4.39,0.1l1.06,0.19l2.52,-0.79l1.72,-1.78l0.65,0.1l1.95,-0.35l-0.04,0.3l-0.59,0.4l-0.11,0.55l0.73,1.13l0.64,1.69l-0.34,0.78l0.04,0.38l0.68,0.87l0.9,0.34l-0.43,0.82l0.1,1.43l1.31,1.12l3.14,1.15l0.78,0.85l-2.14,0.07l-0.85,-0.43l-0.57,0.26l-0.1,0.53l-0.62,0.17l-0.29,0.46l0.49,2.66l-0.15,0.57l-0.99,0.12l-0.22,0.72l-0.35,0.03l-1.27,-0.27l-0.47,-0.38l-0.13,-1.02l-0.45,-0.83l-1.46,-1.06l-2.32,-0.14l-2.74,-0.81l-2.1,0.23l-1.83,-0.36l-1.83,1.07l-0.59,-0.01l-1.56,-1.26l-0.68,-0.17l-2.04,0.71l-2.45,-0.72l-0.89,-0.11l-0.73,0.22l-0.97,-0.22l-2.75,-1.73l-0.46,0.02l-1.61,1.24l-3.67,-0.22l-1.05,0.92l-1.24,1.77l-0.76,0.65l-0.57,-0.2l-0.92,-0.7l-1.72,-1.94l-1.03,-0.46l-1.26,-0.1l-0.89,0.22l-0.64,0.48l-0.82,5.66l-0.02,1.56l0.17,0.33l1.91,1.38l2.27,2.38l0.73,0.32l1.41,4.88l1.27,1.68l3.93,3.5l1.7,2.26l5.03,4.33l2.25,0.81l0.18,0.21l0.02,1.54l0.34,0.88l1.53,1.81l2.97,2.53l0.33,0.7l-0.53,0.3l-3.22,-2.75l-2.74,-1.61l-3.2,-3.05l-4.08,-1.17l-2.77,-1.3l-1.91,0.16l-1.87,0.41l-1.68,-0.17l-0.41,-0.57l0.07,-0.58l-0.25,-1.08l-1.64,-1.31l-2.27,-1.27l-2.07,-1.58l-4.2,-4.32l-0.57,-0.94l1.66,-0.36l1.04,-0.01l1.33,0.28l0.45,-0.22l-0.12,-0.48l-2.73,-1.86l-3.85,-3.6l-1.08,-1.61l-0.13,-1.72l0.28,-2.53l-0.73,-2.03l-3.12,-2.53l-1.26,-1.35l-2.23,-0.75l-1.15,0.05l-0.31,0.18l-0.65,1.06l-0.42,1.98l-3.53,5.22l-0.94,-0.0l-1.52,-2.44l-1.51,-1.92l-0.34,-2.0l-1.09,-3.94l0.28,-0.2l0.5,0.51l3.57,0.81l1.03,-0.39l0.69,-0.9ZM587.08,559.57l2.86,1.2l-0.65,-0.13l-2.21,-1.07ZM591.3,561.05l0.02,-0.53l-0.29,-0.29l0.24,-0.07l0.56,0.15l0.73,1.02l-1.27,-0.27ZM599.03,565.39l1.29,0.47l0.05,0.42l-0.83,-0.52l-0.5,-0.37ZM574.06,555.07l0.67,-0.09l1.62,0.23l0.72,0.66l0.71,0.07l-0.87,-0.02l-1.68,-0.33l-1.18,-0.53ZM577.18,558.94l1.74,0.32l1.9,-0.2l1.59,0.28l-1.61,-0.19l-1.63,0.5l-1.35,-0.25l-0.64,-0.46ZM578.24,553.5l-2.04,0.04l-1.75,-0.28l-0.61,-0.34l0.18,-0.53l1.76,0.07l3.03,0.49l0.29,0.22l-0.86,0.32ZM552.42,532.01l1.48,1.22l1.43,1.62l1.21,1.01l-0.28,0.25l-3.01,-2.61l-0.34,-0.88l-0.49,-0.61ZM551.01,528.89l-1.01,-0.23l0.11,-0.55l0.35,0.02l0.55,0.76ZM547.01,523.61l0.87,-0.6l0.52,-0.96l2.47,3.21l-0.92,0.2l-1.06,-1.14l-1.25,-0.15l-0.64,-0.56ZM545.04,522.83l0.07,0.67l-0.21,-0.6l0.14,-0.08ZM545.54,524.84l0.91,0.95l-0.18,1.58l0.2,2.41l0.24,0.81l-1.56,-3.9l-0.09,-0.44l0.42,-0.52l0.06,-0.9Z", "name": "Croatia"}, "DE": {"path": "M430.54,420.84l0.92,-0.06l2.69,-2.09l0.09,-0.31l-0.19,-0.46l-0.62,-0.26l-0.01,-0.35l1.21,-2.32l0.46,-1.8l-0.14,-0.96l-1.33,-1.91l-0.18,-0.88l-0.45,-0.34l-1.3,-1.73l0.0,-0.39l0.58,-0.41l1.97,-0.79l2.73,0.97l0.9,-0.57l1.27,0.05l3.04,-1.03l0.66,-0.66l0.43,-0.93l-0.14,-0.35l-1.06,-0.91l0.08,-0.38l1.63,-0.89l1.69,-1.29l0.69,-1.23l0.26,-2.25l-0.57,-1.0l-0.78,-0.57l-1.72,0.03l-0.99,-0.35l-0.56,-0.77l0.32,-0.81l-0.14,-0.63l0.26,-0.15l3.48,0.01l0.58,-0.47l0.32,-1.87l0.87,-2.53l0.87,-1.53l0.25,-5.88l-0.69,-1.09l-1.23,-0.85l0.66,-2.97l1.24,-1.67l0.91,-0.42l4.57,-0.29l4.95,0.12l1.86,2.37l-0.66,1.17l0.16,0.55l1.25,0.65l0.93,-0.22l0.23,-0.23l0.88,-2.61l1.28,0.81l0.43,0.53l0.03,2.08l0.36,0.39l0.43,-0.32l0.59,-3.01l-0.42,-2.2l0.28,-1.9l1.0,-1.44l3.67,0.69l4.06,-0.37l1.41,0.7l3.63,3.98l1.33,0.69l1.5,0.2l0.44,-0.29l-0.24,-0.47l-1.99,-0.81l-4.4,-4.83l-1.43,-0.63l-1.94,-0.18l-1.12,-0.42l-0.65,-0.61l-0.17,-0.49l-0.08,-5.08l-0.75,-0.72l-1.14,-0.35l-0.81,0.32l-0.82,0.0l-0.16,-0.68l0.19,-0.5l2.27,-0.51l1.72,-0.78l0.23,-0.34l0.07,-1.33l-3.74,-4.94l-0.12,-1.54l2.65,0.11l3.74,0.96l1.1,0.72l1.31,0.02l3.51,-0.89l0.63,0.37l0.82,0.16l0.3,0.35l1.88,0.47l1.57,1.79l0.07,1.44l-2.01,1.88l-0.12,0.46l0.4,0.25l3.46,-0.28l0.85,1.3l0.43,0.15l1.87,-0.51l4.9,2.22l3.72,-1.12l0.53,1.41l-0.66,1.61l-2.59,1.91l-0.12,0.5l0.59,1.22l1.1,0.48l2.61,-0.23l4.21,1.16l0.93,-0.43l3.21,-2.73l1.19,-0.54l4.21,-0.42l0.28,-0.16l0.73,-1.01l1.74,-1.1l1.1,-1.17l2.52,-2.12l5.8,1.01l1.62,2.36l4.08,2.65l3.73,-0.15l1.18,2.22l0.71,3.25l2.21,1.63l3.05,0.68l0.49,3.01l1.55,4.98l-0.04,1.42l-0.54,1.61l-0.94,1.33l-1.28,0.77l-0.85,1.0l-0.23,1.2l0.11,0.33l1.7,1.75l3.53,2.51l1.27,1.91l-0.62,1.66l-0.19,1.49l0.34,0.97l0.67,0.75l0.76,0.44l0.24,0.54l-0.16,0.92l0.17,0.88l0.57,0.56l-0.95,2.9l-0.95,1.25l-0.07,0.35l0.34,1.21l1.36,1.97l0.13,0.43l-0.35,1.38l0.22,0.65l2.57,1.24l0.28,0.36l1.05,3.13l-0.68,2.68l-0.61,1.5l-1.87,3.2l-0.35,0.04l-1.11,-0.52l0.11,-0.81l-0.9,-0.95l-0.36,-0.87l-0.65,-0.33l-2.72,-0.49l-0.7,0.29l-0.37,0.5l-0.03,0.43l0.63,0.95l0.68,0.47l-4.56,1.61l-1.4,0.72l-2.6,0.78l-2.07,0.25l-0.58,0.38l-0.68,1.25l-0.24,0.14l-0.94,-0.31l-0.99,0.65l-1.05,0.3l-0.67,1.03l-2.06,0.33l-0.98,1.46l-2.31,-0.41l-0.98,0.41l-2.21,0.32l-1.39,0.85l-1.28,1.36l-0.74,1.21l-0.42,-0.72l-1.35,-1.21l-0.72,-0.08l-0.44,0.32l-0.04,1.02l0.52,0.98l0.62,0.67l0.52,1.47l1.03,1.06l2.35,1.46l0.63,0.91l-1.57,2.39l-0.04,0.42l1.52,1.82l1.75,3.09l0.71,0.89l1.87,1.57l1.49,0.06l1.32,1.12l1.64,1.83l1.18,0.82l0.85,0.28l0.58,0.55l0.92,1.52l0.79,0.46l1.3,-0.06l1.73,1.35l1.56,1.65l-0.15,2.44l-0.13,0.43l-0.7,0.66l-0.5,0.23l-2.35,-0.94l-0.41,0.07l-0.49,0.51l-0.66,2.87l-0.38,0.46l-0.61,0.46l-3.2,0.95l-2.56,1.26l-1.17,0.77l-0.83,1.02l-0.01,1.03l2.54,3.11l0.01,1.17l-0.74,1.46l0.24,0.51l1.68,0.35l0.18,0.48l-0.4,2.61l-1.38,-0.46l-0.88,-0.57l-0.23,-0.24l0.13,-0.78l-0.34,-0.56l-1.34,-0.68l-2.77,0.52l-0.64,-0.47l-0.98,-0.38l-2.1,-0.53l-0.57,0.25l-0.13,1.46l-6.22,0.62l-1.94,0.58l-2.46,1.08l-0.43,0.56l-0.87,0.51l-0.93,0.15l-0.52,-0.15l-1.9,0.52l-0.6,-0.06l-1.07,-1.12l-0.58,-1.0l-1.72,-0.06l-1.22,-0.4l-2.32,0.09l-0.53,-0.15l-0.56,0.34l-0.41,2.23l-0.42,0.78l-0.69,0.81l-1.08,0.46l0.2,-0.9l-0.26,-0.48l-1.5,-0.34l0.01,-0.59l-0.68,-0.92l-2.74,-1.4l-1.22,-0.4l-1.53,0.83l-1.64,-0.01l-4.44,-2.42l-4.11,0.18l-0.69,-0.77l-0.81,-0.23l-0.59,0.27l-1.41,-1.07l-0.75,-0.23l-1.16,0.2l-1.14,0.75l-0.48,1.07l0.38,0.69l0.72,0.21l-0.22,0.19l-3.28,-0.22l-1.51,0.54l-2.18,0.2l-3.02,-0.1l-1.57,-0.55l-0.38,-0.91l0.11,-1.58l0.74,-2.31l0.21,-1.68l-0.31,-1.12l0.4,-1.44l1.21,-2.16l0.81,-2.26l0.41,-2.41l0.54,-1.43l4.05,-4.32l0.04,-1.82l-0.29,-0.36l-1.85,-0.66l-5.27,-0.89l-1.02,-0.38l-1.24,-1.21l-0.76,0.01l-2.64,0.66l-1.15,-0.23l-0.94,0.14l-0.44,-1.02l-1.73,-0.51l-0.56,0.1l-0.99,0.81l-0.26,-0.05l-2.04,-2.62l-0.66,-1.44l-1.19,-0.93l-1.22,-0.27l0.41,-1.96l0.35,-0.73l1.11,-1.26l0.04,-1.7l-0.32,-0.35l-2.1,-0.66l-0.85,-0.55l-1.51,-1.71l-0.34,-0.93l-0.02,-0.94l0.82,-2.22l2.46,-1.42l0.19,-0.42l-0.31,-2.35l-0.75,-0.87l-1.3,-0.32l-0.2,-0.25l0.7,-0.85l-0.06,-0.62l-1.03,-0.68l-0.56,-0.8l-1.49,-0.97l0.7,-2.62l-0.06,-0.33l-0.69,-0.92l-1.52,-0.63l-0.25,-0.31ZM538.5,364.74l4.43,2.81l-0.02,0.85l-1.71,0.2l-1.36,-0.24l-0.22,-0.77l0.24,-0.97l-0.09,-0.36l-1.21,-1.13l-0.06,-0.38ZM536.24,359.59l0.19,1.05l-1.4,-0.89l-1.53,0.01l-0.35,0.21l-0.81,1.46l-0.34,0.03l-2.16,-1.36l-0.36,-1.05l0.29,-2.61l0.72,-0.83l0.1,-0.89l1.09,-0.91l0.75,-0.03l0.34,0.79l0.56,0.64l2.04,0.8l0.23,0.34l-0.77,0.76l-0.35,0.83l0.47,0.93l1.31,0.71ZM503.18,358.27l-1.43,0.03l-0.68,-0.64l-0.5,-0.17l0.48,-0.55l1.69,0.5l0.45,0.83ZM463.5,350.42l0.05,-0.86l0.24,-0.46l0.12,0.59l0.37,0.32l0.99,0.04l-1.45,0.14l-0.32,0.22ZM466.66,353.0l-0.22,0.19l-1.03,-0.04l-0.32,-0.19l0.93,-0.31l0.57,0.14l0.06,0.21Z", "name": "Germany"}, "BA": {"path": "M580.15,520.99l2.69,1.66l1.16,0.26l0.79,-0.22l0.76,0.1l2.52,0.74l0.74,-0.07l1.34,-0.63l2.1,1.42l1.04,-0.04l1.56,-1.0l1.73,0.34l2.04,-0.24l2.68,0.79l2.34,0.15l0.97,0.73l0.36,0.66l0.27,1.25l0.82,0.61l1.42,0.3l1.48,-0.1l1.29,-0.48l1.3,-0.22l1.2,0.42l-0.24,1.29l-0.55,1.34l-1.93,2.88l-0.28,0.84l-0.18,2.19l0.51,1.08l1.24,0.5l1.38,0.86l3.17,2.88l-0.23,0.39l-1.2,0.13l-2.07,-0.23l-0.97,0.57l-0.08,0.45l0.23,0.46l1.43,1.62l1.61,2.23l0.08,0.83l-0.17,0.65l-0.21,0.29l-1.06,-0.49l-0.87,0.03l-0.84,0.24l-0.68,0.71l-1.4,0.25l-1.35,-0.37l-0.66,0.34l-0.25,0.99l1.25,2.21l-0.08,0.64l-0.78,-0.82l-0.66,-0.16l-0.82,0.11l-2.53,2.08l-0.73,1.8l0.01,1.34l-1.64,0.26l-0.54,0.41l-0.22,0.48l0.27,3.36l1.05,1.76l0.02,0.34l-1.02,0.97l-1.68,-0.57l-2.39,-1.46l-3.77,-2.49l-0.73,-1.04l-0.84,-0.22l-1.03,0.25l-0.31,-0.19l0.47,-0.54l-0.1,-0.84l-0.43,-0.7l-2.99,-2.55l-1.42,-1.68l-0.19,-0.5l-0.12,-1.87l-0.52,-0.52l-2.14,-0.74l-4.93,-4.25l-1.71,-2.26l-3.91,-3.48l-1.1,-1.42l-1.12,-4.23l-0.39,-0.85l-0.87,-0.45l-2.23,-2.34l-1.83,-1.33l0.67,-6.52l0.28,-0.24l0.73,-0.18l0.89,0.07l0.74,0.3l1.74,1.95l1.0,0.77l0.96,0.36l0.39,-0.07l0.97,-0.83l1.24,-1.78l0.88,-0.77l3.36,0.32l1.8,-1.25Z", "name": "Bosnia and Herzegovina"}, "HU": {"path": "M574.1,479.74l1.22,-0.94l0.33,-0.03l0.63,0.16l1.3,0.87l0.65,0.19l0.72,-0.26l3.25,-0.23l0.32,-0.51l-0.46,-2.16l0.08,-0.38l0.54,-0.63l0.13,-0.94l0.82,-0.63l1.72,0.33l2.14,1.72l2.13,1.37l1.92,0.75l5.23,0.12l7.85,-0.41l0.31,-0.18l0.73,-1.14l0.01,-0.42l-0.34,-0.59l0.02,-0.6l0.46,-0.86l1.48,-0.78l4.68,-0.38l2.8,-0.66l0.65,-1.04l0.77,-0.75l0.61,-0.13l2.4,1.14l1.47,0.41l5.93,-2.86l2.25,-4.04l1.81,-0.35l2.94,0.07l2.8,0.69l1.75,-0.08l2.56,-0.74l0.75,0.02l1.4,0.91l1.11,1.58l1.03,0.99l0.79,0.23l4.84,-0.96l0.35,-0.21l1.17,-0.1l0.81,1.93l0.52,0.64l2.34,0.93l0.97,1.3l1.37,0.54l1.12,-0.08l0.79,0.7l0.31,1.75l-2.4,2.19l-0.83,0.51l-0.46,0.09l-1.05,-0.21l-2.92,0.86l-2.41,2.67l-1.56,1.2l-0.17,1.98l-1.62,1.48l-1.18,2.9l-1.73,1.75l-0.13,1.34l-2.12,2.95l-0.24,0.62l0.18,0.84l-2.28,1.58l-0.95,2.12l0.13,1.13l-0.94,0.47l-0.53,1.42l-1.26,0.87l-2.62,-0.28l-1.17,0.24l-0.9,1.34l-0.99,0.54l-1.52,-0.54l-3.08,0.58l-0.47,0.31l-1.03,-0.47l-3.08,-0.33l-1.29,0.26l-3.03,-0.38l-1.28,0.24l-1.63,1.6l-1.88,1.0l-0.83,0.27l-0.67,-0.03l-1.07,-0.47l-0.49,0.29l-0.55,0.69l-1.05,0.42l-2.71,0.54l-0.7,-0.13l-0.37,0.13l-1.68,1.79l-2.19,0.68l-0.9,-0.18l-4.42,-0.1l-2.04,-0.33l-1.28,-0.58l-0.81,-0.62l-0.59,-0.87l-1.18,-0.5l-1.58,-0.16l-1.15,-0.67l-0.95,-1.37l-1.34,-1.13l-1.54,-0.77l-1.18,-1.05l-0.99,-1.51l-1.75,-1.36l-3.01,-1.38l-1.73,-2.2l-0.02,-0.77l-0.66,-0.74l-0.33,-1.64l-0.4,-0.66l-0.32,-0.18l-1.57,-0.06l1.35,-1.16l0.93,-0.45l1.33,0.05l0.62,-0.39l0.55,-2.06l-0.16,-0.54l-0.64,-0.29l-0.2,-0.9l0.58,-1.02l-0.33,-1.71l0.8,-0.09l1.52,-0.76l0.87,-1.68l-0.48,-1.59l-0.26,-0.24l-2.35,-0.68Z", "name": "Hungary"}, "JO": {"path": "M831.52,741.12l0.58,-3.53l0.44,-1.58l0.83,-1.6l-0.37,-3.27l0.04,-1.71l0.5,-2.13l-0.27,-2.34l0.23,-3.33l0.4,-0.65l1.56,-0.66l0.59,-0.08l1.29,0.28l0.72,0.61l1.37,1.97l2.34,0.73l2.13,1.65l1.5,0.4l4.87,0.61l26.07,-15.69l3.6,12.43l-0.66,0.2l-0.27,0.51l0.81,2.52l0.49,0.26l2.43,-0.61l0.4,1.04l-3.75,3.33l-0.39,0.16l-27.16,7.55l-0.18,0.66l7.05,7.23l6.45,7.19l-4.15,2.37l-2.33,4.88l-9.58,1.9l-0.86,0.58l-3.16,5.04l-5.4,4.25l-0.55,0.11l-13.95,-2.33l0.34,-1.53l-0.11,-1.11l1.27,-6.18l0.98,-2.39l0.03,-4.28l4.02,-10.51l-0.48,-1.65l0.27,-1.3Z", "name": "Jordan"}, "DZ": {"path": "M466.68,655.77l0.2,0.96l-1.89,1.01l-1.15,2.09l-1.8,1.3l-0.48,0.75l0.24,0.71l1.18,0.57l0.48,1.05l-1.38,7.63l0.01,1.14l0.98,2.38l0.14,1.02l-0.17,2.72l1.02,3.04l-1.02,1.68l-0.52,1.71l-0.43,3.76l-1.55,2.44l-3.79,2.29l-1.33,2.46l-2.56,1.92l-0.62,0.75l-0.33,1.78l0.06,2.27l0.5,1.91l2.35,5.34l0.37,1.56l0.53,0.63l4.21,2.17l0.43,0.43l1.29,1.88l1.24,3.4l0.55,2.52l9.25,6.57l0.26,0.37l6.35,27.2l-2.58,1.56l-0.13,0.55l3.2,4.74l1.25,2.33l1.41,3.9l1.0,3.71l0.29,2.12l-0.36,6.01l0.62,7.8l-250.75,0.0l0.0,-8.71l0.21,-1.15l1.33,-0.71l3.96,-3.12l3.6,-2.24l4.25,-3.2l0.73,-0.34l1.98,-0.3l3.41,-2.71l1.14,-0.61l3.73,0.27l2.99,0.49l0.68,-0.16l1.26,-1.34l0.32,-2.21l3.51,0.13l2.92,-0.31l3.15,-0.57l4.43,-1.3l2.22,-1.57l1.59,-1.64l2.87,-4.42l2.45,-1.23l6.17,-2.18l4.58,-3.19l3.74,-0.45l0.72,-0.41l0.66,-0.82l-0.08,-1.26l-0.77,-0.77l-1.93,-1.01l0.22,-1.48l0.36,-0.93l-0.1,-1.13l-0.72,-1.93l0.22,-1.11l1.41,-0.46l1.34,0.19l2.32,-0.29l5.73,-1.95l0.65,-0.87l0.73,-2.38l0.67,-0.35l5.55,-0.82l15.9,0.62l0.83,-0.3l0.25,-0.37l-0.02,-0.98l-0.46,-1.49l0.23,-0.78l2.27,-1.88l0.11,-0.49l-0.72,-1.4l-3.29,-2.3l-1.25,-1.16l-0.75,-1.29l-0.59,-3.03l-0.99,-1.63l-0.68,-1.92l0.63,-3.67l-0.98,-2.46l-0.14,-0.91l0.29,-3.17l-0.19,-2.84l-1.11,-2.88l0.75,-1.62l-0.21,-0.67l-1.0,-0.89l-0.33,-0.56l0.7,-1.54l-0.0,-0.67l-0.16,-0.28l-4.53,-3.34l-0.72,-0.81l-0.16,-0.47l2.11,0.23l1.5,-0.14l3.37,-1.4l2.62,-1.87l2.1,-1.03l1.75,-2.0l1.55,-1.24l2.27,-1.36l6.57,-2.94l0.88,-0.02l2.29,0.68l2.12,-0.3l1.4,-1.16l1.36,-2.44l2.09,-1.47l2.71,-1.52l3.72,-1.46l2.46,-1.36l3.79,-1.15l9.69,-0.74l4.98,-0.66l3.36,0.15l3.64,-2.19l1.61,-0.67l7.35,-0.16l3.58,-1.57l13.13,-0.0l1.53,0.5l1.54,0.82l2.81,2.08l1.57,0.45l1.83,-0.45l4.04,-1.91l4.64,-1.02l2.5,-1.15l1.16,-1.7l1.77,-0.51l1.23,1.22l4.77,1.3l3.08,-0.36l1.35,-0.41l0.27,-0.48l-0.32,-1.35l2.46,0.41l2.29,0.89l2.45,1.83l1.76,0.44l3.1,-0.83l5.75,-0.4Z", "name": "Algeria"}, "_1": {"path": "M795.55,683.21l1.17,-0.26l0.28,-0.24l0.63,-1.5l0.18,-1.41l4.61,0.68l2.05,0.09l2.09,-0.28l6.24,-1.86l1.81,-1.13l3.1,-1.32l-6.89,4.53l-0.62,1.84l0.66,1.4l-0.75,-0.24l-0.36,0.09l-0.89,0.63l-1.5,0.43l-1.88,-0.3l-0.56,0.28l-0.14,-1.09l-0.43,-0.61l-0.67,-0.45l-1.97,0.03l-0.73,-0.23l-1.8,0.42l-2.09,0.87l-1.53,-0.37Z", "name": "Northern Cyprus"}, "JE": {"path": "M322.87,452.86l-0.06,0.38l-0.56,-0.27l-1.49,0.09l0.08,-0.64l1.42,0.15l0.61,0.3Z", "name": "Jersey"}, "FI": {"path": "M642.77,218.25l0.76,-0.02l0.36,-0.26l0.17,-0.8l-0.71,-1.51l-0.11,-0.8l-2.19,-4.45l-1.66,-1.51l1.26,-4.66l-0.13,-1.29l-0.44,-1.65l-2.0,-1.41l-0.81,-4.2l0.5,-2.29l0.65,-0.99l3.52,-3.35l0.3,-1.68l2.07,-0.11l0.31,-0.63l-1.08,-1.53l-0.27,-1.43l3.0,-0.62l1.43,0.56l3.05,-0.72l2.8,-1.45l0.21,-0.38l-0.05,-0.75l-0.91,-1.85l0.81,0.19l0.43,-0.16l0.0,-0.46l-0.36,-0.6l0.63,0.17l0.4,-0.12l1.76,-1.91l0.16,-1.41l2.91,-0.77l3.47,-2.96l3.21,-1.64l3.23,-2.91l1.29,-0.13l0.34,-0.26l0.7,-1.93l2.7,-2.58l0.99,-0.5l1.28,-2.37l3.5,-2.87l2.18,-3.57l1.19,-1.25l0.4,-1.27l1.08,-0.09l1.37,-1.04l2.49,-0.66l2.47,0.18l1.24,0.48l1.0,-0.15l0.34,-0.43l-0.1,-1.23l-0.59,-0.75l0.3,-0.38l1.28,-0.52l0.25,-0.42l-0.14,-1.23l-0.33,-0.84l-1.07,-0.98l0.51,-1.97l0.15,-2.48l0.54,-2.78l-0.1,-0.35l-1.56,-1.58l-5.46,-2.54l-1.15,0.05l-1.0,-0.26l-1.07,-1.64l0.59,-2.18l-0.41,-0.44l-0.76,0.14l-0.76,0.77l-1.54,0.82l-2.1,-0.66l-0.96,0.1l-1.35,-3.86l-1.94,-3.6l-2.2,-1.08l-0.31,-0.41l-0.6,-3.55l0.1,-1.33l0.2,-0.66l0.88,-0.58l1.4,-1.77l0.4,-2.96l0.56,-1.45l0.63,-0.74l0.08,-0.36l-0.7,-1.67l-3.55,-4.29l-0.46,-1.32l-0.24,-1.18l0.04,-1.0l0.33,-0.61l1.33,-0.93l0.33,-0.58l-0.54,-2.44l-0.24,-0.27l-1.09,-0.42l-2.46,-0.23l0.14,-1.03l0.92,-1.59l0.12,-0.74l-0.56,-2.01l-0.16,-2.25l0.17,-1.62l1.64,-1.24l0.23,-0.75l-0.18,-0.4l-2.2,-1.44l-1.54,-1.59l-0.47,-0.92l-0.32,-0.22l-1.6,-0.13l-1.17,-2.76l-3.36,-2.61l-1.06,-0.59l-5.7,-1.72l-2.28,-0.33l-2.6,-0.97l-5.19,-3.08l-1.95,-0.89l-0.62,-0.81l-2.18,-1.47l-1.1,-1.02l-3.42,-1.76l-0.16,-1.37l-0.37,-0.48l-3.13,-1.15l0.2,-0.21l2.66,-0.04l2.65,0.65l0.68,-0.47l0.33,-0.96l-0.97,-2.39l0.11,-0.4l0.9,-0.68l1.55,-0.59l4.54,0.04l9.08,9.74l1.07,1.8l0.37,1.29l0.39,0.29l1.19,-0.01l7.61,1.06l1.17,0.77l2.44,-0.15l5.27,-1.54l2.05,-2.15l1.69,0.15l4.54,2.05l4.94,1.36l1.47,1.13l2.14,0.27l2.15,-1.3l1.15,-2.92l0.96,-1.23l1.35,-0.9l3.04,-0.64l1.03,-0.82l1.38,-1.69l0.36,-2.25l-0.26,-3.73l0.23,-1.11l1.13,-2.04l1.5,-5.3l0.64,-1.46l0.73,-0.83l1.14,-0.57l2.06,-1.62l2.93,-3.19l0.65,-0.22l2.04,-0.16l2.57,0.12l2.75,0.52l1.18,-0.33l5.21,-2.98l2.0,-0.52l1.71,0.07l2.06,2.1l3.01,2.43l1.98,1.21l5.33,2.23l4.51,1.41l2.41,4.42l-1.13,1.66l-2.89,2.52l-2.42,2.65l-0.24,1.85l0.8,1.39l0.57,0.55l-4.78,2.02l-2.03,0.56l-0.22,0.62l0.84,0.92l3.36,0.16l0.61,0.39l0.04,0.39l-0.3,0.87l-3.67,5.48l-0.16,1.52l2.92,7.03l0.24,0.22l8.82,2.95l2.4,3.04l4.03,4.07l2.07,1.48l0.06,0.23l-0.59,2.59l-4.94,5.07l-4.47,5.24l-2.13,2.89l-0.36,2.03l0.45,1.23l2.7,3.48l2.31,3.68l1.06,2.05l0.65,1.92l1.09,1.82l3.13,4.14l2.47,6.75l0.12,1.92l-2.63,0.33l-2.15,0.65l-0.35,0.42l0.09,0.48l1.16,1.03l-1.13,2.02l-0.17,2.9l-1.24,1.48l-0.21,0.7l0.17,0.51l0.45,0.36l2.25,0.39l0.09,0.91l-0.16,0.59l-1.12,0.56l-1.47,1.1l-0.29,0.83l0.02,0.9l0.51,1.43l0.87,1.45l1.19,1.01l3.95,0.91l0.37,0.52l0.12,1.59l-1.73,1.8l-0.07,1.16l0.76,1.8l1.08,1.86l3.8,1.8l1.2,0.91l0.47,1.84l-0.02,1.31l-0.27,1.1l-3.85,4.54l-2.72,1.17l-0.35,0.41l0.03,0.48l0.92,1.04l4.93,3.98l7.58,4.38l2.72,1.92l2.09,2.95l2.32,2.38l0.3,0.58l-0.02,0.57l-1.26,2.24l-2.05,4.4l-1.3,1.77l-3.37,3.29l-5.05,4.15l-3.52,3.41l-8.33,8.7l-2.68,2.11l-3.26,3.24l-6.92,4.7l-1.08,1.18l-3.43,2.16l-8.21,7.34l-1.68,0.75l-1.87,0.16l-0.84,0.47l-2.79,-1.41l-0.76,-0.13l-1.89,0.43l-1.61,1.04l-3.07,0.33l-2.14,0.65l-0.1,-0.57l0.38,-1.37l0.65,-0.96l0.13,-0.85l-0.45,-0.44l-0.5,0.07l-1.28,1.66l-0.55,1.73l-0.89,0.73l-2.1,0.32l-2.16,-1.32l-1.3,-0.04l-0.33,0.63l0.66,0.97l0.39,1.08l-1.03,-0.03l-1.36,0.65l-1.16,0.92l-0.21,0.0l-0.68,-1.14l-0.5,-0.16l-1.47,0.63l-1.24,0.82l-2.64,0.33l-1.46,1.06l-2.56,0.71l-1.53,-0.0l-3.37,0.9l-1.27,1.45l-0.76,0.39l-1.42,-0.39l-8.4,1.55l-3.69,-0.35l-1.89,1.25l-1.9,1.58l-1.98,0.53l0.12,-0.35l1.47,-0.93l0.99,-1.21l0.22,-1.21l-0.19,-0.4l-0.83,-0.45l-0.8,-0.11l-1.02,-0.91l-1.08,-2.19l-0.28,-0.21l-0.61,-0.12l-0.44,0.21l-0.34,0.7l-0.33,1.65l-0.77,0.71l-1.25,0.53l-2.16,-0.02l-0.21,-0.77l0.42,-1.08l-0.25,-0.53l0.12,-0.29l1.1,-0.12l0.67,-0.88l-0.03,-0.56l-0.34,-0.38l-0.65,-0.1l0.93,-1.95l-0.28,-0.49l-1.01,0.06l-3.41,-0.48l-4.34,-2.0l-0.96,-0.12l-0.58,-1.58l-0.46,-0.25l-1.2,0.29l-1.32,0.91l-2.1,-1.16l-0.25,-0.6l-0.09,-2.63l-0.59,-4.08l0.21,-1.74l0.94,-1.32l0.42,-0.97l0.49,-2.37l0.11,-2.75l-0.24,-1.14l0.43,0.0l0.38,-0.53l-0.17,-0.52l-0.59,-0.68ZM687.44,144.29l-1.79,0.65l-1.22,-0.34l-0.02,-0.9l0.76,-0.51l1.66,-0.25l1.7,0.47l-0.56,0.21l-0.52,0.68ZM651.46,242.91l1.58,0.43l0.67,-0.11l0.37,0.48l-0.95,0.46l-0.22,0.31l-0.1,0.84l0.63,0.93l-0.71,-0.0l-0.48,-0.46l-0.37,-0.89l-1.17,-0.85l0.4,-0.98l0.37,-0.17ZM646.99,242.06l0.34,-0.58l-0.11,-0.24l0.48,0.41l-0.15,0.7l0.64,0.51l-1.2,-0.79ZM646.46,246.89l-1.07,0.55l-0.05,-0.02l0.07,-0.67l0.56,-0.37l0.66,-0.03l-0.18,0.54ZM643.72,247.48l-0.79,0.13l-0.32,-0.25l0.67,-0.43l0.51,0.04l-0.07,0.51ZM641.16,239.43l-0.06,0.33l-1.37,0.07l-0.55,-0.69l-0.31,-1.48l0.11,-0.07l0.39,0.64l1.81,1.2ZM638.04,182.53l0.17,0.59l0.43,0.26l0.96,-0.17l0.89,-0.6l0.3,0.13l-0.03,0.32l-0.56,-0.04l-0.83,0.92l-0.38,0.11l-1.18,-0.84l-0.53,-1.0l0.8,-0.0l-0.05,0.32Z", "name": "Finland"}, "BY": {"path": "M670.47,410.28l-0.13,-0.27l0.06,-1.46l1.09,-1.98l-0.23,-1.17l0.56,-1.59l-0.0,-1.53l-0.91,-1.32l-1.27,-0.65l-0.66,-0.57l-3.4,-1.52l-0.13,-0.47l3.0,-3.66l0.86,-0.6l4.91,-2.04l0.89,-0.8l0.33,-2.4l-0.4,-3.89l-0.39,-1.6l-0.97,-2.99l-2.57,-6.03l-1.36,-5.56l2.79,0.28l1.97,-0.44l1.86,0.07l2.26,-0.33l0.59,0.52l1.39,0.52l4.06,-1.59l1.9,0.09l0.64,-0.62l0.52,-2.25l0.36,-0.3l2.44,0.18l1.03,-0.51l0.87,-1.04l1.25,-0.61l1.3,-0.06l0.98,-0.62l0.29,0.25l0.21,0.66l-0.32,0.59l0.01,0.4l0.36,0.45l1.01,0.4l1.46,-0.01l1.05,-0.33l0.49,-0.81l-0.02,-0.89l-0.33,-0.88l-0.8,-0.73l-1.79,-0.34l0.92,-2.21l1.46,-2.06l-0.02,-2.89l0.75,-2.06l0.97,-1.47l1.27,-0.47l1.71,-0.28l1.28,-0.84l0.66,-1.01l0.45,-1.32l0.33,-0.17l4.09,0.17l0.38,-0.23l0.88,-1.63l1.39,-0.94l0.08,-0.49l-0.47,-0.58l-3.51,-0.46l-0.23,-0.2l1.4,-3.61l0.38,-2.21l2.08,-0.33l0.79,-0.32l1.83,-1.99l1.15,-0.29l3.4,0.5l3.66,0.1l0.32,-0.14l0.92,-2.18l3.35,-3.06l1.75,-1.04l1.25,-0.18l1.76,1.58l0.64,0.16l1.24,-0.67l2.07,-0.07l0.81,0.47l1.37,1.98l0.92,0.38l3.4,-1.49l0.62,0.01l2.58,0.99l1.12,0.5l0.17,0.31l-0.57,2.22l0.06,0.34l0.81,1.13l1.01,0.84l0.47,0.03l2.62,-1.56l0.87,-0.04l1.08,-0.47l0.83,-0.72l0.59,-0.19l1.42,0.16l2.51,-0.16l2.83,1.04l2.24,2.21l1.47,0.96l1.07,0.4l0.96,0.01l0.22,0.33l-0.08,3.01l-1.07,1.29l-0.11,1.14l1.99,2.8l0.22,1.35l-1.98,2.56l-0.54,2.11l0.11,0.59l2.68,1.88l2.12,1.17l-0.92,1.65l-0.14,0.59l0.22,0.44l1.4,0.68l0.74,1.02l0.77,1.92l1.42,1.79l5.35,2.69l0.34,0.34l-0.04,1.47l-0.94,2.24l0.22,0.55l1.06,0.37l2.3,-0.09l2.73,0.28l3.1,1.5l-0.32,1.27l0.64,1.39l2.97,1.9l0.19,0.36l0.0,1.08l-1.48,0.41l-1.53,0.8l-0.7,1.17l-2.27,1.44l-1.38,0.64l-3.72,-0.26l-0.83,-0.63l-0.6,-0.8l-1.18,-0.32l-3.43,0.09l-0.75,0.46l-0.31,0.81l-1.39,2.18l0.04,0.52l3.71,3.98l0.32,0.56l-0.61,1.04l0.17,1.42l0.95,1.23l-0.22,0.34l-0.11,4.04l0.39,0.72l0.71,0.49l0.49,0.67l0.82,1.53l-5.16,-0.05l-1.77,0.96l-1.99,-0.42l-1.46,0.63l-3.05,2.73l-1.3,1.6l-1.83,3.95l0.37,1.45l0.56,1.08l0.34,1.84l-0.66,0.63l-0.32,0.69l-0.92,-0.12l-1.36,-0.79l-0.44,-1.39l-2.23,-1.49l-1.42,-0.07l-2.09,0.43l-4.78,0.42l-2.69,0.89l-0.44,-0.37l-1.68,-3.01l-0.52,-0.66l-0.8,-0.34l-0.77,0.12l-1.1,0.93l-1.76,0.6l-0.87,0.66l-0.7,1.15l-0.62,-0.26l-0.83,-1.64l-0.91,-0.36l-1.57,-0.05l-3.18,-0.78l-0.9,0.17l-0.78,0.59l-0.75,0.08l-1.99,-0.57l-0.33,0.05l-0.52,0.39l-1.07,1.55l-0.23,0.03l0.15,-1.24l-0.24,-0.41l-1.34,-0.56l-2.02,-0.08l-1.97,0.17l-2.18,-2.8l-1.02,-0.16l-1.61,0.12l-2.38,-0.3l-4.26,-0.76l-0.91,-0.58l-1.7,-0.19l-4.61,-1.05l-1.94,-0.19l-7.05,-0.25l-2.76,0.13l-2.74,0.57l-5.02,0.29l-1.84,0.28l-0.74,0.64l-0.63,1.19l-2.0,1.92l-1.94,1.27l-1.28,-0.61l-2.2,-0.32l-1.06,0.29l-0.52,0.33l-0.18,0.37Z", "name": "Belarus"}, "FO": {"path": "M263.24,203.54l-0.39,0.92l-0.69,-0.21l-0.02,-1.73l1.1,1.03ZM260.24,213.24l-2.12,-1.39l-0.34,-0.59l2.22,0.79l0.37,0.54l-0.11,0.65ZM259.07,209.25l-0.6,-0.28l-2.67,-2.36l-1.87,-3.49l2.24,-0.5l1.97,0.99l2.09,0.72l-0.25,2.13l-0.93,-0.7l-0.9,-0.24l-0.43,0.2l-0.23,0.42l-0.01,0.73l1.6,2.39ZM257.22,217.52l1.57,0.48l0.05,0.71l0.46,0.75l0.04,0.71l-1.8,-1.85l-0.31,-0.8ZM252.95,206.27l1.28,0.96l-0.31,0.25l-0.69,0.12l-0.92,-0.12l-1.48,-0.53l-0.27,-0.64l1.89,-0.23l0.51,0.19Z", "name": "Faroe Islands"}, "PS": {"path": "M825.41,733.18l0.24,-1.0l-0.44,-3.65l1.39,-4.27l1.49,-0.96l2.08,0.37l0.47,0.8l1.11,0.74l0.77,0.12l0.23,1.98l-0.5,2.05l-0.04,1.83l0.36,3.17l-0.78,1.38l-0.61,2.57l-0.41,0.02l-1.77,0.89l-2.31,0.82l-2.56,0.12l0.96,-3.05l1.02,-0.96l2.18,-1.1l0.26,-0.46l-0.26,-0.66l-1.05,-0.65l-1.0,-0.32l-0.82,0.19Z", "name": "West Bank"}, "LB": {"path": "M833.54,711.49l-0.47,-0.12l-0.63,0.32l-0.7,2.08l-0.87,0.52l-3.3,-0.17l0.95,-2.04l0.65,-2.01l1.15,-1.71l2.36,-5.7l1.36,-2.3l0.53,-3.34l2.01,-2.74l1.51,-0.81l0.87,-0.91l0.09,-1.12l3.51,-0.06l0.61,-0.64l0.8,0.21l0.33,0.34l-1.19,1.23l-0.06,0.59l0.35,0.31l1.54,0.46l0.53,0.41l1.0,2.95l-0.58,1.13l-0.93,1.05l-1.39,0.72l-0.91,0.95l-0.27,0.51l0.02,0.71l0.47,0.45l-2.72,0.06l-1.67,1.33l-0.32,0.45l-0.32,1.32l0.4,0.68l0.72,0.44l-0.7,0.41l-0.56,0.52l-0.23,0.59l-1.64,1.38l-2.27,1.56Z", "name": "Lebanon"}, "PT": {"path": "M226.07,631.38l0.09,-1.3l-0.52,-1.53l0.61,-0.3l1.28,-0.22l1.05,-0.88l0.66,-1.19l-0.29,-1.44l0.72,-1.29l1.9,-1.22l0.16,-0.48l-0.45,-0.25l-1.03,0.19l-1.33,0.85l-1.97,2.99l-0.57,1.34l-2.69,0.63l-1.22,-0.39l0.0,-1.58l0.59,-1.75l0.23,-2.35l0.81,-2.11l-0.23,-1.47l0.56,-0.63l0.99,-0.63l1.45,-1.94l4.21,-9.14l-0.16,-0.87l-0.43,-0.47l0.16,-1.05l1.34,-5.47l0.56,-0.76l0.66,-1.76l0.34,-5.43l-0.23,-1.23l-0.85,-2.07l-0.9,-4.39l-0.06,-1.28l0.63,-0.63l-0.25,-0.68l-1.03,-0.09l-0.39,-0.67l0.1,-0.85l1.28,-1.65l1.22,-1.05l1.86,-0.94l3.64,-1.08l0.35,0.03l0.97,1.44l-1.0,1.31l-0.22,0.63l0.7,1.49l0.68,0.39l0.93,-0.07l2.18,-1.03l0.39,0.15l2.67,-0.28l2.4,0.83l1.69,0.04l1.83,-0.5l0.91,-0.55l0.37,-1.15l0.26,-0.16l1.58,0.47l2.24,0.09l0.56,-0.29l1.51,0.44l1.18,-0.08l0.37,0.3l0.18,0.47l-0.02,2.66l0.26,0.7l0.3,0.23l2.05,0.12l1.01,0.33l0.74,0.55l0.28,0.69l-0.88,1.17l-1.46,1.22l-2.17,1.14l-1.76,1.49l-1.17,1.72l-1.44,0.74l-0.44,0.39l-0.28,0.62l0.95,2.37l0.29,1.56l0.23,1.9l-0.23,2.7l-0.22,0.76l0.52,1.45l-2.57,1.96l-0.37,0.82l0.17,0.84l1.45,1.32l0.19,0.38l-0.18,1.19l-0.84,2.14l-0.78,1.27l-0.86,0.37l-4.59,0.03l-1.11,0.3l-0.24,0.59l1.23,2.01l1.47,1.18l0.41,1.96l1.81,3.22l1.87,0.6l0.43,0.57l-0.09,0.91l-0.49,1.13l-1.01,1.18l-1.24,0.86l-0.9,0.94l-0.94,4.28l3.28,4.65l0.37,0.16l1.45,-0.17l-0.66,1.6l-2.21,0.66l-1.45,1.57l-1.2,1.91l-0.94,1.02l-0.83,2.42l1.24,5.98l-0.9,0.16l-4.53,2.49l-1.25,0.0l-2.72,-1.12l-4.69,-0.36l-1.51,-0.33l-2.07,0.72l-1.41,-0.02l-1.27,0.89l-0.2,-0.06l2.33,-5.99l-0.06,-2.49l0.35,-2.3l-0.42,-2.18l-0.73,-1.34l1.01,-3.52l-0.12,-1.83l-0.72,-1.81l2.21,0.27l0.41,-0.22l-0.07,-0.46l-0.89,-0.92l-1.23,-0.68l-1.65,0.12l-3.49,1.12ZM117.56,718.32l1.56,0.67l1.81,-0.33l2.3,1.05l-1.16,1.04l-2.21,-0.2l-1.95,-0.84l-0.62,-0.56l-0.11,-0.32l0.37,-0.5ZM10.64,654.82l-1.1,0.02l-0.19,-0.31l0.92,-0.12l0.37,0.41ZM2.49,641.55l1.09,0.16l4.29,-0.23l0.73,0.11l-0.06,0.57l-0.57,0.32l-2.41,0.29l-3.86,-0.72l-1.16,-0.85l-0.14,-0.53l0.41,-0.13l1.67,1.01Z", "name": "Portugal"}, "NO": {"path": "M728.73,12.13l0.23,0.63l1.37,0.34l2.91,-0.91l0.43,0.5l-0.87,2.15l-0.16,3.33l-0.34,2.0l0.03,1.92l0.37,0.95l0.39,0.26l0.37,-0.28l1.54,-4.63l1.79,-1.59l0.63,-2.84l1.64,-3.37l1.81,-1.92l0.96,-0.48l3.49,0.08l1.42,0.68l1.34,1.62l1.13,0.75l3.32,0.75l0.97,0.77l0.49,0.69l1.05,0.06l2.14,-1.24l1.18,-0.17l2.0,1.7l-0.39,1.45l0.14,0.47l0.4,0.29l2.78,-0.09l2.24,0.55l4.31,2.89l0.39,1.18l-0.18,1.35l-6.19,1.79l-2.83,1.78l-4.44,0.67l-15.48,-1.19l-0.42,0.49l0.31,1.29l0.29,0.29l10.68,2.78l0.42,0.55l-0.32,1.58l-0.01,1.35l0.21,1.01l1.07,1.15l1.47,0.42l2.61,-0.21l1.25,0.43l0.37,-0.06l1.06,-0.95l0.31,-2.12l0.45,-0.29l1.13,0.5l0.61,2.27l0.6,0.49l0.57,-0.18l0.65,-1.49l2.86,-0.04l1.79,0.25l0.66,2.86l-0.02,1.0l-0.31,0.94l-0.35,0.39l-0.8,0.19l-2.23,-0.09l-3.11,-1.22l-2.04,-1.17l-1.03,-0.06l-0.28,0.14l-0.18,0.51l0.46,1.08l-0.11,0.77l-0.69,1.76l-0.55,0.68l-1.18,0.9l-2.11,0.74l-6.01,1.49l-0.74,0.88l-1.92,4.09l-1.08,0.98l-1.79,0.57l-0.79,-0.72l-0.7,-1.22l0.15,-1.12l2.32,-2.54l2.91,-2.55l1.33,-1.95l0.02,-0.42l-2.6,-4.77l-4.84,-1.63l-5.23,-2.18l-1.89,-1.15l-2.97,-2.4l-2.12,-2.17l-2.31,-0.18l-2.22,0.59l-3.29,1.99l-1.88,0.98l-1.0,0.28l-2.52,-0.53l-2.63,-0.12l-2.16,0.16l-0.9,0.29l-3.09,3.3l-2.0,1.58l-1.22,0.63l-0.89,1.04l-0.68,1.54l-1.52,5.34l-1.15,2.08l-0.26,1.33l0.26,3.66l-0.25,1.89l-1.28,1.56l-0.85,0.66l-2.9,0.58l-1.59,1.03l-1.19,1.51l-1.11,2.84l-1.73,0.96l-1.64,-0.27l-1.4,-1.1l-5.01,-1.38l-4.52,-2.05l-2.06,-0.21l-0.32,0.12l-1.93,2.1l-5.05,1.49l-2.23,0.14l-1.05,-0.74l-8.72,-1.08l-0.34,-1.14l-1.17,-1.94l-9.21,-9.88l-2.44,-0.28l-2.67,0.09l-1.9,0.71l-1.2,1.0l-0.17,0.92l0.95,2.35l-0.45,0.52l-2.35,-0.67l-2.9,0.05l-0.9,0.78l-6.7,0.37l-0.25,0.69l2.88,2.76l0.13,1.02l-0.37,2.12l-1.03,1.82l-1.19,1.48l-2.37,1.5l0.06,0.71l3.06,1.26l-3.0,2.32l-1.17,-0.12l-8.25,-2.41l-2.82,-0.65l-3.88,-0.18l-5.25,-1.45l-1.26,0.17l-1.91,0.64l-0.27,0.32l-0.22,1.5l0.39,6.19l-0.64,1.44l-2.61,3.64l-7.75,-3.12l-0.4,0.06l-2.07,1.7l-5.22,3.13l-2.94,6.47l-1.5,1.49l-3.45,1.03l-0.27,0.21l-0.9,1.83l0.05,0.43l3.13,3.96l0.93,2.08l-0.36,2.0l-2.18,1.74l-4.8,4.73l-4.43,4.91l-1.79,1.39l-0.15,0.39l0.78,3.92l-1.25,1.03l-4.43,1.86l-6.68,0.85l-0.35,0.48l1.24,6.33l-0.01,1.03l-1.15,3.32l-0.93,7.54l-0.7,0.82l-0.99,2.05l-3.2,4.92l-6.29,7.99l0.14,0.61l3.03,1.49l2.63,1.03l0.5,1.45l0.37,2.7l-0.09,1.74l-1.0,1.6l-1.2,1.56l-8.77,-1.29l-1.36,-0.01l-3.0,0.54l-2.79,1.15l-1.83,1.34l-4.9,5.82l-1.7,1.6l-0.12,0.38l0.46,2.06l-2.78,4.15l-0.03,0.38l1.88,4.32l0.95,1.67l-1.39,1.81l0.42,4.16l-0.34,2.72l2.56,6.56l-0.15,2.34l-1.85,9.33l0.15,0.4l1.88,1.42l2.64,1.67l1.47,0.66l2.12,1.93l1.53,1.77l-0.65,2.4l-0.7,1.0l-0.95,2.3l-2.9,0.2l-1.62,0.39l-0.9,0.46l-0.21,0.4l0.31,2.38l3.23,7.09l0.44,1.8l-0.45,1.82l-0.52,1.14l-0.38,3.87l-2.51,2.69l-1.57,1.04l-2.34,0.41l-0.95,0.63l-1.44,3.47l-2.02,2.05l-0.04,1.14l1.51,5.23l-1.14,5.29l-0.86,1.68l-1.08,0.53l-0.66,-0.22l-1.02,-2.3l-0.32,-1.4l-0.28,-0.25l-7.05,-1.56l-1.16,-2.08l-1.3,-1.84l-0.16,-0.66l0.03,-3.56l-0.4,-1.53l-0.12,-1.67l-0.31,-0.36l-0.44,0.18l-0.83,1.39l0.39,2.25l-0.79,0.71l-1.22,0.42l-0.27,0.42l0.12,1.28l0.55,0.47l0.09,1.05l-0.3,1.84l-2.48,4.24l-0.73,0.84l-1.36,-0.24l-1.59,1.15l-1.18,0.14l-0.57,-1.25l-2.24,-1.81l-1.35,0.02l-0.24,0.69l1.66,1.78l-0.34,0.49l-0.42,0.4l-4.15,1.77l-0.09,0.66l0.87,0.76l-0.63,0.74l-1.2,0.24l-0.61,0.54l-0.29,0.77l-3.32,2.06l-5.48,5.29l-2.79,1.48l-1.93,1.51l-1.6,-0.04l-2.35,1.35l-5.42,1.13l-3.62,-0.52l-2.54,0.44l-1.12,-0.74l-0.11,-0.39l0.24,-0.59l-0.23,-0.57l-0.48,-0.15l-1.42,0.03l-0.43,0.44l-0.3,1.11l-1.65,-0.49l-0.19,-0.21l0.48,-0.73l1.13,-0.9l0.02,-0.61l-0.66,-0.86l-2.33,0.06l-1.29,-0.16l-4.41,-2.06l-1.12,-1.16l-3.58,-1.77l-1.55,-1.81l-0.87,-1.97l0.07,-1.8l0.43,-2.89l0.5,-0.49l3.02,0.98l3.54,1.8l0.77,-0.24l0.99,-1.33l1.95,-1.08l-0.0,-0.7l-0.92,-0.33l-2.81,1.2l-2.49,-1.9l0.0,-0.39l0.79,-0.82l0.27,-1.01l-0.4,-1.12l0.16,-1.06l1.23,-1.27l1.98,-1.38l1.46,-1.36l1.45,-0.81l0.15,-0.54l-0.16,-0.28l-0.47,-0.19l-1.78,0.56l-1.68,0.94l-1.89,1.49l-2.26,1.19l-3.78,1.24l-1.46,1.82l-1.27,0.66l-2.2,0.07l-0.41,-0.93l0.7,-4.41l0.75,-2.16l0.75,-1.38l1.39,-0.37l0.82,-1.01l0.45,0.0l0.74,0.53l2.61,0.52l0.38,-0.13l1.19,-1.36l1.65,-0.23l3.06,-1.49l0.15,-0.72l-0.45,-0.3l-5.05,0.73l-0.67,-0.19l-0.29,-0.73l0.56,-0.79l2.85,-2.37l1.03,-1.09l0.62,-1.06l-0.03,-0.83l0.41,-1.2l2.7,-2.33l1.96,-0.95l0.44,0.56l-0.61,2.9l0.01,1.23l0.32,0.39l0.45,-0.24l1.8,-4.31l0.74,-0.96l0.8,-0.64l2.32,-0.59l0.62,-0.69l0.06,-0.45l-0.39,-0.22l-2.64,0.24l-6.23,1.67l-2.72,1.52l-0.82,1.24l-1.78,1.68l-0.9,1.16l-0.42,1.66l-0.85,0.74l-1.49,0.42l-1.92,2.07l-0.87,1.66l-3.07,2.3l-1.18,1.31l-0.25,-0.31l-0.07,-1.13l0.18,-1.94l0.87,-1.4l0.48,-1.55l-0.55,-1.47l0.23,-0.46l2.09,0.41l1.6,-0.06l2.77,-1.1l0.18,-0.59l-0.72,-0.8l-3.19,-0.01l-1.6,-0.94l-1.29,-1.95l-0.58,-2.58l0.3,-0.57l5.03,-2.8l1.46,-1.36l-0.21,-0.69l-1.12,-0.04l-1.87,1.53l-2.49,0.88l-1.51,-1.18l-0.83,-1.34l-0.5,-2.97l0.18,-1.63l-0.19,-1.84l0.81,-0.47l2.52,0.47l3.01,-0.18l6.47,-1.26l4.11,0.74l1.79,-0.06l2.68,-1.09l2.11,-0.1l1.55,0.76l0.78,0.8l0.21,1.37l0.79,0.85l0.48,0.08l0.53,-0.28l0.18,-0.51l-0.4,-0.94l-0.07,-1.17l6.53,-1.69l0.97,-0.77l-0.22,-0.7l-2.49,-0.22l-0.59,-1.23l1.33,-2.27l0.02,-0.36l-0.13,-0.32l-0.63,-0.15l-1.62,1.45l-0.74,1.82l0.25,1.56l-0.17,0.37l-1.16,0.26l-3.03,0.11l-3.76,-0.93l-0.35,-0.26l0.16,-0.79l-0.18,-0.42l-0.35,-0.21l-0.52,0.09l-0.77,0.93l-0.68,1.78l-1.2,0.35l-4.09,-0.68l-5.91,0.41l-2.68,0.93l-1.55,-0.11l-2.82,-1.56l-1.03,-1.16l-0.4,-2.46l0.12,-0.82l1.98,-0.42l1.33,-0.02l1.09,-0.62l-0.04,-0.72l-2.18,-1.12l-0.87,-1.51l-1.48,-0.65l-0.81,-1.18l-0.22,-1.9l0.22,-1.2l0.47,-0.29l1.73,0.29l4.65,-0.24l7.55,2.28l6.23,-0.44l3.58,-1.3l0.06,-0.73l-0.93,-0.4l-3.85,0.75l-3.51,-0.03l-8.9,-1.94l-2.82,0.2l-1.23,-0.38l-0.7,-1.19l0.55,-2.45l0.89,-0.41l0.79,0.65l0.87,0.05l0.34,-0.16l0.85,-1.13l0.92,-0.79l0.61,-1.39l2.32,-1.33l1.09,-0.14l1.41,-0.61l0.72,0.14l1.38,1.17l2.02,-0.0l5.03,-1.15l1.71,-1.38l0.08,-0.46l-0.41,-0.22l-3.19,0.42l-2.67,0.67l-1.34,0.15l-0.09,-0.31l1.55,-1.5l0.43,-1.2l0.86,-0.45l3.55,-0.22l1.7,-0.35l2.87,0.23l4.31,0.51l2.77,1.23l1.27,-0.08l1.2,-0.35l0.66,-0.54l-0.17,-0.69l-1.96,-0.46l0.08,-0.64l3.4,-0.97l3.9,-0.23l0.29,-0.65l-0.68,-0.84l-0.37,-0.14l-8.54,1.25l-2.16,-0.82l-1.92,-0.02l-1.28,0.5l-3.12,0.56l-0.21,-0.14l0.48,-1.11l1.95,-2.36l0.2,-0.59l0.74,-0.46l5.1,-1.38l2.53,-1.63l3.76,-0.26l3.04,0.43l1.55,2.02l5.56,3.15l0.45,-0.02l0.15,-0.42l-0.3,-0.92l-3.67,-3.44l-1.39,-0.85l-0.91,-1.47l0.3,-1.32l0.99,-0.9l4.07,-0.56l0.95,-0.71l0.22,-1.35l-0.74,-1.02l-1.78,-0.1l-1.01,-0.36l-0.24,-0.78l0.35,-0.54l2.3,-1.35l3.43,-0.91l3.72,1.05l0.11,0.21l-0.96,1.21l0.03,1.1l0.36,0.34l0.98,0.09l0.33,-0.12l2.17,-2.28l2.53,-0.31l2.2,-0.78l1.72,2.01l1.34,0.96l0.53,1.63l0.31,0.27l0.57,0.1l0.36,-0.13l0.74,-0.82l1.33,-0.43l1.97,-0.3l3.34,0.47l1.63,-0.34l0.7,0.05l0.39,-0.56l-1.06,-1.99l0.54,-1.1l0.62,-0.47l2.27,-0.98l2.34,-0.5l1.44,-0.94l1.94,-0.87l0.2,-0.52l-0.89,-1.59l-0.32,-0.18l-1.15,-0.06l3.35,-1.94l0.12,-0.61l-0.57,-0.59l-1.9,-0.53l-3.19,1.34l-2.23,1.48l0.02,0.68l0.66,0.39l0.81,0.9l-1.23,1.3l-7.99,4.24l-3.74,1.22l-1.44,-0.16l-0.34,-0.94l-0.86,-0.96l-0.85,-1.73l-0.37,-0.22l-1.5,0.05l-0.69,0.28l-0.08,-0.13l0.56,-1.66l1.17,-1.4l2.19,-1.22l1.06,-1.46l0.91,-2.09l3.05,-2.1l4.41,-5.13l3.56,-1.63l1.42,-1.85l2.14,-0.82l1.74,-1.35l1.46,-0.17l2.61,-1.28l1.59,-1.61l-0.25,-0.68l-0.97,-0.09l-3.2,1.24l0.06,-1.0l0.57,-1.52l1.77,-1.44l8.82,-4.35l1.74,1.84l0.35,0.14l2.74,-0.3l3.33,-2.63l2.45,-2.81l0.03,-0.49l-0.47,-0.15l-1.3,0.48l-1.5,1.17l-2.68,1.52l-1.12,0.22l-0.44,-0.12l-0.57,-1.09l-0.96,-0.34l-0.9,0.17l-0.6,-0.5l-0.14,-1.58l1.98,-4.43l0.94,-1.33l3.82,-3.91l0.87,-2.16l1.51,-0.99l2.11,0.24l0.9,-0.37l0.18,-0.55l-0.77,-1.41l-2.49,-1.33l7.75,-1.75l3.85,0.06l1.35,-0.96l2.16,-0.63l1.61,-1.13l-0.02,-0.67l-1.14,-0.54l-6.37,1.52l-1.08,-0.02l-0.96,0.36l-2.74,0.12l-0.62,-4.09l0.41,-2.05l0.84,0.04l0.41,-0.35l0.25,-2.21l1.17,-1.2l1.9,-0.34l2.23,-1.72l2.18,0.26l2.33,-0.27l0.24,-0.68l-0.58,-0.57l-2.91,-0.8l-0.45,-0.8l1.71,-0.96l1.18,-0.24l1.91,-2.45l1.01,-0.91l1.39,0.11l1.69,-1.01l1.64,0.34l1.93,-0.72l2.3,-0.46l8.65,-0.18l0.38,-0.3l0.26,-1.02l-0.34,-0.5l-1.86,-0.24l-6.45,-0.26l-3.31,0.02l-1.29,0.24l-0.17,-0.12l0.03,-0.21l1.08,-0.87l0.65,-1.14l2.32,-2.53l2.62,-1.62l1.91,0.4l2.4,1.68l1.53,0.19l0.6,0.42l1.14,2.2l0.3,0.21l0.56,0.07l0.45,-0.44l-0.23,-2.02l1.45,-1.66l0.01,-0.52l-0.41,-0.49l-0.41,-0.13l-2.24,0.61l-1.61,-0.6l-1.3,-1.22l-0.31,-0.94l0.73,-1.0l0.79,-0.58l0.08,-0.57l-0.57,-0.72l-0.5,-0.1l-3.51,1.89l-2.37,0.42l-0.51,-0.14l0.42,-1.34l-0.25,-1.37l3.16,-3.18l0.99,-0.33l1.73,0.25l1.89,0.97l1.52,-0.17l1.56,-0.51l0.26,-0.47l-0.21,-0.92l-0.35,-0.31l-3.25,-0.35l-0.56,-0.49l0.13,-0.32l2.23,-0.78l2.23,-1.39l2.56,-0.4l2.05,-1.03l0.41,0.39l0.79,4.05l1.9,3.28l0.98,0.31l0.45,-0.5l-0.68,-2.59l1.33,-1.19l0.41,-0.88l-0.28,-0.53l-0.85,-0.2l-0.68,-0.84l-1.07,-2.98l0.28,-0.58l2.33,-1.59l2.94,-0.37l3.25,1.17l1.3,0.04l2.06,-0.34l3.26,-0.98l1.87,-0.36l0.97,0.0l0.36,-0.22l0.25,-0.5l-0.23,-0.56l-2.0,-0.82l-3.16,0.52l-8.22,-0.17l-0.57,-0.4l-0.1,-0.67l0.77,-1.23l0.88,-0.71l3.04,-1.36l3.48,-0.26l3.52,-2.5l1.5,-2.1l0.74,-2.81l2.0,-2.19l5.27,-1.31l0.28,-0.25l0.2,-0.9l-0.53,-1.14l0.04,-2.02l1.39,-2.44l0.86,-0.79l0.17,-0.04l0.97,0.7l1.52,1.87l2.21,1.03l3.04,0.21l1.01,-0.57l-0.05,-0.7l-2.21,-1.0l-1.53,-1.21l-0.1,-0.98l0.53,-0.47l2.73,-0.08l1.64,-0.97l0.77,-2.5l2.01,-1.97l6.3,-1.3l0.22,0.25l-0.34,3.86l-0.77,2.7l0.02,1.91l0.29,0.38l0.45,-0.16l1.34,-2.01l1.72,-5.22l1.26,-2.39l1.36,-1.31l0.96,-0.29l1.1,-0.76l1.04,-0.33l0.59,1.45l-0.72,4.51l0.07,1.44l-0.77,1.81l-3.14,4.28l0.08,0.89l0.5,0.28l0.81,-0.24l1.32,-0.78l3.78,-3.95l3.22,0.49l0.46,-0.35l-0.06,-0.66l-2.39,-2.32l-0.35,-1.26l0.17,-3.66l0.84,-1.24l2.74,0.15l1.67,-0.19l0.96,0.67l1.78,-0.05l0.35,-0.24l1.13,-2.54l2.03,-0.2l2.09,1.77l2.52,1.2l2.02,1.73l0.51,0.0l0.58,-0.48l0.13,-0.41l-1.11,-4.11l-1.29,-1.65l-2.78,-0.9l-2.72,-1.79l-0.53,-0.8l2.15,-0.51l3.46,0.62l2.73,-1.45l0.94,0.35l2.03,-0.74l1.22,0.95l0.39,0.06l1.09,-0.57l0.42,-1.26l3.24,-0.82l2.1,0.78l1.07,0.76l1.38,4.8l1.87,1.95l1.31,0.98l1.3,0.24l0.4,-0.16l0.63,-0.88l-0.06,-0.53l-1.14,-0.99l-0.26,-0.79l0.54,-2.31l0.62,-0.89l3.76,-3.66l3.08,-1.86l2.11,-0.31l3.33,-4.31l0.84,-0.7l0.78,-0.16l0.31,-0.47l-0.22,-1.07l-0.25,-0.29l-1.59,-0.58l-0.04,-0.83l2.28,-1.52l2.84,-2.62l1.15,-0.15l0.87,0.7l2.81,1.2l1.71,1.37l1.32,0.74l1.09,-0.1l0.9,-1.15l0.62,-0.37l1.59,0.24l1.01,0.63l0.94,0.14l0.53,0.28l0.09,0.44l-1.4,0.88l-2.7,2.61l-2.64,2.94l-0.92,1.62l-0.88,4.07l-2.09,2.72l-0.04,2.12l0.83,0.85l0.4,0.1l2.43,-0.75l2.81,-2.41l0.8,-2.66l6.95,-6.9l3.3,-3.87l3.66,-3.14l1.68,-0.53l0.78,1.67l-0.73,2.55l-1.53,1.7l0.07,0.6l0.98,0.68l-0.19,1.82l-0.61,2.47l0.02,1.07l0.5,0.38l1.18,-0.32l4.39,-2.2l2.31,-4.33l0.49,-1.52l1.51,-1.3l3.07,-0.01l0.39,-0.32l0.12,-0.58l-0.21,-0.44l-3.77,-1.98l-0.27,-0.54l1.07,-1.0l3.45,-2.24l1.64,0.23l1.19,0.54l4.36,0.4l3.1,1.53l-0.11,2.24l-0.67,0.96l-0.67,0.6l-4.3,1.95l-0.87,1.1ZM756.79,33.48l-2.19,0.6l-0.05,-0.09l1.06,-2.35l0.65,0.05l1.44,1.11l-0.91,0.68ZM694.5,3.24l1.2,-0.9l2.04,-1.03l3.48,0.91l1.18,-0.0l1.68,1.66l0.74,0.04l-0.05,0.28l-1.54,0.44l-2.79,0.31l-0.46,0.21l-2.15,-0.15l-1.48,-1.46l-1.84,-0.29ZM676.11,14.77l-2.25,0.85l-1.26,-0.71l-0.51,-0.7l-0.08,-1.73l0.28,-0.94l0.87,-0.43l0.91,0.75l1.34,0.34l1.34,0.98l-0.64,1.59ZM670.58,15.65l0.31,1.83l-1.1,1.19l-2.87,1.76l-0.12,0.61l-0.64,0.29l-1.35,0.3l-0.41,-0.17l0.09,-1.25l-0.29,-0.67l-0.54,-0.17l-0.94,0.5l-0.82,-0.53l0.24,-1.01l0.99,-0.93l1.66,-0.64l1.41,0.18l3.74,-2.54l0.64,1.25ZM668.13,9.06l-0.57,1.15l-1.09,0.79l-3.14,3.06l-1.79,0.48l-1.29,0.76l-2.24,-0.41l-1.54,1.06l-1.55,0.15l-0.89,-0.12l-2.48,-1.11l-1.76,-1.58l1.56,0.01l0.88,-0.25l1.51,0.21l0.36,-0.13l0.83,-0.96l1.94,0.11l3.8,-0.75l1.34,0.4l0.36,-0.07l3.15,-2.48l1.07,0.02l1.3,-0.61l0.25,0.27ZM632.13,26.52l-0.54,0.42l-0.88,0.18l-1.43,-0.54l-0.88,0.07l-0.57,-0.73l0.06,-0.58l0.93,-1.0l2.01,-0.61l1.59,0.25l0.17,0.13l-0.47,2.42ZM618.46,23.91l0.85,0.4l0.8,-0.12l0.36,0.16l1.08,1.22l1.16,0.66l-0.83,0.46l-1.35,0.17l-1.33,-0.18l-0.82,-1.91l-1.32,-1.37l-0.11,-0.62l0.52,-0.08l0.99,1.21ZM611.42,27.32l1.31,1.58l0.34,0.13l1.07,-0.13l0.53,-0.56l0.44,-0.15l1.05,0.5l-0.13,0.73l-2.0,1.5l-1.38,2.01l-1.62,0.43l-1.14,-0.16l-1.71,1.26l-2.75,2.92l-0.3,1.36l-4.83,0.6l-1.79,0.4l-1.74,-0.48l-0.67,-0.77l0.08,-0.15l1.74,-0.21l0.35,-0.37l0.05,-0.86l1.11,-0.95l0.4,-1.1l0.5,-0.21l1.32,0.28l0.36,-0.1l1.11,-0.91l0.51,0.57l0.68,-0.15l0.32,-1.04l-0.29,-1.09l0.11,-0.41l1.77,-1.6l0.83,-1.23l0.97,-0.66l0.97,0.11l0.43,-0.29l0.33,-1.16l-0.3,-1.32l0.1,-0.63l0.85,-1.63l0.54,-0.04l0.39,1.32l0.08,2.67ZM588.18,39.32l1.24,1.04l0.46,0.04l0.66,-0.38l1.25,-0.14l0.91,0.41l0.82,0.82l1.09,0.15l0.51,0.89l0.28,1.25l-0.6,0.87l-1.19,0.73l-0.29,1.47l0.32,1.44l-2.0,0.52l-2.59,0.26l-0.96,-0.77l-0.48,-0.01l-2.23,1.59l-2.19,2.45l-0.49,0.13l-0.3,-0.65l-1.59,-0.54l-1.71,-0.05l0.22,-0.25l1.65,-0.57l0.25,-0.27l0.35,-1.26l-0.3,-2.33l0.35,-1.67l0.84,-0.67l3.6,0.4l0.4,-0.21l0.46,-0.84l-0.29,-0.91l-1.77,-0.93l1.26,-0.6l1.27,-0.07l0.35,-0.24l0.44,-1.11ZM564.03,63.2l0.26,0.57l0.59,-0.03l1.78,-2.18l1.94,-0.67l0.26,-0.31l0.11,-0.66l0.82,-0.99l-0.08,-1.16l0.3,-0.74l1.55,-0.58l0.51,-0.13l1.1,0.7l0.66,0.82l0.85,1.88l-0.32,1.68l-2.27,1.42l-2.04,0.76l-1.97,1.76l-0.98,1.4l-0.62,0.23l-0.99,-0.45l-1.0,-0.0l-1.33,1.3l-3.11,0.95l-0.9,-0.2l-0.05,-0.94l-0.45,-0.38l-0.78,0.1l-1.44,1.55l-1.76,0.57l-1.4,-0.52l-0.35,0.04l-3.97,2.48l-3.63,0.45l-0.87,-0.2l-0.0,-1.04l4.21,-3.17l6.82,-0.95l4.52,-4.21l1.14,-4.61l0.98,-1.56l0.02,-0.4l-0.48,-0.92l-1.13,-0.33l-0.05,-0.99l0.54,-1.38l2.17,-2.04l1.31,-0.96l2.0,-2.51l0.83,-0.49l0.9,0.0l0.78,0.48l-0.15,1.02l-1.58,2.35l-2.41,2.07l-0.13,0.38l0.3,1.51l0.98,1.32l0.28,3.88l-1.79,2.64l-0.46,1.42ZM556.54,54.46l2.5,3.67l-0.58,2.34l-1.51,1.17l-2.5,0.22l-1.74,-0.1l-0.93,-0.5l-0.11,-0.53l-0.27,-0.3l-0.68,-0.21l-2.02,0.91l-1.06,0.11l-1.32,-0.6l-0.27,-0.72l1.46,-1.25l0.71,-1.0l1.51,0.08l0.53,0.34l1.05,0.22l0.44,-0.22l0.64,-1.34l-0.09,-1.0l0.22,-0.3l1.99,0.41l0.48,-0.39l0.0,-2.2l0.64,-0.04l0.51,0.42l0.39,0.83ZM538.67,70.65l0.96,0.42l1.95,-0.11l-0.84,0.76l-1.83,0.42l-1.04,1.19l-0.46,0.28l-1.55,0.0l-1.08,0.27l-1.11,0.86l-0.71,-0.54l-0.6,0.13l-0.45,1.35l-1.52,0.4l-0.29,-1.54l1.17,-1.47l1.83,-0.2l1.4,-1.9l1.85,-0.52l1.21,-0.06l1.1,0.23ZM526.33,79.08l-1.04,0.64l1.42,-3.36l1.2,-1.04l0.24,0.17l-0.27,0.93l0.01,0.96l-1.57,1.71ZM520.21,124.0l-0.58,0.03l0.0,-0.36l0.49,-0.66l0.84,-0.48l2.38,-0.19l-3.14,1.65ZM519.02,120.83l-0.67,0.08l0.07,-0.32l0.99,-0.94l0.6,-1.36l0.56,-0.36l0.86,0.5l0.02,0.92l-0.5,0.9l-1.93,0.59ZM512.64,130.29l-0.68,0.52l-1.25,-0.15l-0.06,-0.2l0.37,-0.91l0.78,-0.38l1.04,0.08l0.15,0.18l-0.35,0.85ZM502.61,147.16l-0.44,0.38l-1.54,-0.44l-3.0,0.37l-0.68,-0.32l0.6,-0.7l2.65,-1.15l1.27,0.05l1.27,1.24l-0.12,0.58ZM465.49,173.05l-1.51,-0.0l1.42,-0.61l3.46,-0.91l0.49,-0.61l0.39,0.44l0.05,0.69l-0.19,0.24l-4.1,0.75ZM460.35,180.13l-1.1,0.01l-1.46,-0.3l-0.84,-0.71l1.48,-0.62l1.58,-0.39l0.58,0.58l0.05,1.08l-0.3,0.36ZM418.13,241.28l0.63,1.0l0.45,1.55l0.03,1.89l-0.6,-0.09l-0.57,-1.19l0.09,-1.33l-0.26,-1.41l0.22,-0.42ZM417.53,227.52l-0.84,0.18l-0.51,-0.12l0.25,-1.42l0.69,-0.25l0.54,0.73l-0.13,0.88ZM229.04,8.0l-1.01,0.13l-0.19,-0.14l1.39,-1.15l5.97,-2.82l2.44,-2.71l4.12,-0.83l0.21,1.05l-0.26,1.57l-3.83,1.4l-4.49,1.0l-4.36,2.51Z", "name": "Norway"}, "TR": {"path": "M718.26,643.94l1.78,-0.53l0.28,-0.32l0.41,-2.61l-0.3,-1.51l-0.34,-0.32l-0.95,-0.12l-2.87,-1.18l-0.86,0.07l-0.95,-1.23l-1.69,-0.95l-0.35,-0.02l-1.3,0.7l-3.08,-1.38l-0.3,-0.28l0.47,-0.97l0.73,0.03l0.41,-0.34l0.15,-1.36l-0.74,-1.83l0.05,-0.62l0.51,-0.16l0.74,0.14l0.84,0.97l0.27,0.93l-0.14,1.27l0.63,1.04l0.59,0.4l0.59,-0.24l0.28,-0.94l0.56,0.4l1.4,0.24l3.22,-0.67l0.81,-0.67l0.1,-0.44l-0.38,-0.25l-2.24,0.06l-0.7,-0.43l-0.87,-1.11l-0.88,-2.11l1.82,-0.87l1.42,-1.76l-0.05,-0.55l-0.59,-0.51l-0.8,-0.31l-0.76,0.12l-0.42,-0.36l-0.06,-0.52l0.54,-0.78l-0.03,-1.21l-2.15,-2.63l2.92,-3.25l-0.08,-0.89l-0.3,-0.27l-1.12,-0.22l-4.65,0.67l-1.83,0.58l-2.85,0.24l-0.07,-1.08l0.73,-1.52l-0.07,-3.4l0.37,-1.6l1.76,-0.62l2.18,-2.73l3.42,-3.13l3.56,0.06l1.61,-0.9l1.87,-0.04l0.7,1.24l1.94,0.9l3.61,-0.11l1.83,-0.91l0.07,-0.62l-1.29,-1.3l1.32,-0.12l1.19,0.29l-0.77,1.25l0.21,0.57l0.46,0.17l4.57,-0.5l4.59,0.42l1.54,-0.23l3.61,0.02l0.91,-0.65l-0.05,-0.64l-1.1,-0.69l-1.16,-0.28l-0.86,-0.45l1.76,-1.18l7.34,-1.23l4.57,-0.48l0.35,-0.33l0.06,-0.35l-0.39,-0.47l-6.47,-0.78l-1.33,-0.57l-1.92,-1.42l-0.76,-0.91l0.59,-2.44l0.55,-0.53l2.17,-0.1l8.06,1.24l5.8,-0.73l6.36,1.8l6.03,-0.37l1.57,-1.01l1.45,-2.52l8.42,-4.31l3.0,-2.28l3.12,-1.22l5.51,-1.4l4.54,-1.82l1.22,-0.2l10.96,0.87l7.59,0.11l3.52,-1.71l1.47,0.43l-0.45,0.92l0.19,1.27l1.18,1.57l1.36,1.2l3.79,1.55l4.82,-1.27l1.47,0.41l1.74,4.11l1.44,1.54l1.87,1.05l1.41,0.2l2.03,-1.46l1.58,-0.16l2.71,1.33l1.19,1.55l4.95,1.14l4.49,0.57l2.02,1.25l6.39,1.25l2.59,-0.21l3.98,-1.3l7.65,-1.41l5.14,1.98l1.4,0.26l1.25,-0.16l1.65,0.52l2.13,-0.31l2.63,-1.08l0.0,62.86l-6.31,3.02l-4.43,1.35l-4.41,0.88l-7.91,-0.18l-0.93,-0.3l-3.39,-2.31l-1.91,-0.5l-1.6,-0.13l-10.36,4.02l-4.82,-0.15l-0.93,-0.66l-0.79,-0.98l-2.24,-0.53l-1.66,-0.16l-0.82,0.65l-0.44,1.24l-0.81,3.82l1.39,3.18l-1.94,0.18l-0.75,0.27l-0.74,0.56l-0.49,2.61l-1.11,0.4l-0.76,0.62l-0.67,1.53l-2.05,-1.15l-0.5,-0.08l0.49,-0.7l0.04,-0.37l-1.9,-4.65l0.83,-1.27l2.0,-1.79l2.24,-2.4l-0.21,-2.57l-1.83,-1.66l-0.43,-0.04l-1.96,0.98l-1.4,1.07l-0.95,0.25l-0.99,0.62l-0.59,1.19l-1.03,0.75l-1.77,0.31l-2.83,-0.89l-3.11,-1.39l-1.91,-1.19l-1.67,-0.26l-1.48,0.55l-4.09,2.81l-3.79,4.13l-0.87,0.66l-3.46,1.72l-2.22,0.56l-1.14,-0.13l-4.62,0.77l-2.28,0.11l-1.85,0.9l-3.34,-0.95l-2.03,-1.23l-1.22,-1.25l-2.06,-2.79l-1.53,-1.4l-3.42,-1.28l-5.75,-2.92l-1.66,-0.36l-8.11,-0.69l-0.34,0.15l-0.93,1.28l-0.31,4.13l-0.66,1.08l-0.34,2.23l-0.39,0.48l-0.53,0.28l-1.12,-0.61l-1.16,-0.29l-1.99,0.89l-3.93,1.24l-1.23,0.16l-4.49,-1.54l-1.61,-0.97l-0.97,-1.01l-0.35,-1.79l-0.69,-1.15l-0.37,-1.59l-1.18,-0.6l-0.36,0.04l-0.9,0.58l-0.89,-0.02l-1.26,-0.37l-3.14,-1.59l-2.6,-0.17l-0.34,0.16l-1.41,1.89l-1.0,0.55l-0.77,0.11l0.84,-1.12l-0.34,-0.64l-3.8,0.23l-2.06,0.95l-2.05,-0.37l1.88,-0.57l4.06,-0.35l1.07,-0.38l1.19,-1.45l1.86,-1.15l0.4,-0.68l-0.36,-0.57l-7.79,0.34l-4.31,-0.19l-0.83,0.62l-0.11,-1.02l0.43,-0.47l0.87,0.04l2.26,-0.65l0.29,-0.44l-0.2,-1.33l-0.2,-0.29l-1.53,-0.85l-0.57,-0.63l-1.08,-0.11l-0.72,-0.48l-0.21,-1.53l-0.76,-1.76l-0.99,-0.84ZM721.52,574.59l1.54,1.29l0.89,0.47l1.98,-0.61l1.79,0.08l0.63,-0.42l0.45,-0.06l1.36,0.21l-0.26,1.68l0.9,2.12l2.0,2.84l2.18,1.56l8.14,3.53l1.17,0.24l-0.71,2.23l-0.43,0.68l-2.13,0.49l-6.49,-1.55l-1.72,-0.16l-1.4,0.36l-2.06,1.08l-2.42,-0.34l-3.36,0.65l-0.29,0.23l-0.91,2.08l-2.24,2.36l-3.76,1.94l-2.85,1.13l-4.12,3.8l-1.86,2.19l-0.86,0.44l0.53,-1.22l-0.05,-1.79l2.43,-1.92l3.66,-1.58l1.14,-1.46l-0.33,-0.64l-2.94,0.03l-2.91,0.29l-1.81,-0.18l-1.4,0.09l-0.6,-1.28l0.72,-0.29l0.93,-1.22l2.12,-2.16l0.35,-0.85l-0.0,-0.64l-0.35,-1.0l0.02,-2.03l2.55,-1.54l0.83,-0.16l0.29,-0.25l0.3,-0.77l-0.18,-1.98l-0.4,-1.5l-1.3,-0.72l-1.17,-1.03l-1.08,-0.32l0.07,-0.4l0.29,-0.3l2.17,-0.53l0.91,-1.93l0.28,-0.16l2.46,-0.17l1.19,-0.28l1.22,-0.6l0.58,-0.49l2.99,-0.52l0.46,0.15l0.86,0.82ZM702.55,604.46l-2.7,0.43l-0.36,-0.18l0.51,-0.51l2.02,-0.6l0.54,0.66l-0.03,0.2Z", "name": "Turkey"}, "GE": {"path": "M899.6,555.54l-3.56,-2.65l-2.58,-1.59l1.15,-1.72l0.67,-0.21l4.32,0.81l0.0,5.36Z", "name": "Georgia"}, "LI": {"path": "M479.66,489.8l0.02,-1.42l0.15,-0.43l0.74,1.46l-0.19,0.45l-0.72,-0.06Z", "name": "Liechtenstein"}, "LV": {"path": "M693.81,289.47l3.55,1.99l1.99,0.57l1.08,0.9l2.53,0.56l0.49,0.96l3.62,3.6l2.41,1.22l1.17,0.26l4.94,-1.5l0.71,-0.01l0.89,0.57l2.08,0.79l3.86,0.3l0.33,0.18l0.5,1.6l3.78,2.51l0.01,1.64l-0.16,0.4l-0.74,0.71l-0.62,1.56l-0.11,1.55l-0.95,2.51l0.29,0.53l0.22,0.05l2.08,-0.43l0.37,0.17l0.31,0.4l0.24,1.72l1.27,1.73l0.34,1.03l1.18,0.95l0.88,2.95l0.42,2.29l-0.59,1.84l-1.52,0.28l-1.91,1.15l-3.42,3.12l-0.81,2.06l-3.43,-0.09l-3.6,-0.5l-1.55,0.46l-1.71,1.91l-2.96,0.71l-2.36,-0.64l-1.52,-0.83l-2.67,-2.8l-5.8,-4.02l-1.15,-0.52l-6.83,-1.31l-1.59,-2.24l-0.54,-1.35l-1.1,-0.49l-2.14,0.57l-2.38,1.65l-0.63,0.2l-4.67,0.37l-1.48,-0.58l-2.72,-0.66l-2.72,-0.09l-5.63,-0.64l-1.22,0.71l-0.75,0.09l-1.07,-1.05l-1.26,-0.31l-1.54,0.36l-2.45,0.04l-6.91,-0.6l-5.95,1.81l-4.6,2.42l-3.13,1.94l-0.35,-2.96l0.22,-7.21l0.52,-3.44l2.41,-2.01l1.33,-1.71l0.8,-2.32l0.24,-2.08l0.48,-1.58l3.52,-4.67l2.8,-0.51l3.91,-1.34l4.08,-1.05l1.23,2.38l5.26,3.95l1.27,1.26l2.21,4.68l4.89,2.3l4.09,-0.7l4.9,-3.24l1.55,-1.77l0.28,-1.57l-0.55,-6.25l-0.82,-2.71l0.2,-1.21l0.43,-0.03l1.27,-0.8l4.21,-1.49l1.88,-0.39l2.54,-1.08l1.64,1.26l0.73,-0.15l0.24,-0.81Z", "name": "Latvia"}, "EE": {"path": "M681.02,292.17l1.82,-4.13l0.34,-3.01l0.49,-0.32l0.34,-0.6l-0.26,-1.25l-0.26,-0.27l-1.86,-0.63l-0.93,0.07l-1.54,1.86l-1.37,0.39l-1.34,-0.75l-3.16,-1.02l-0.72,-1.23l-0.33,-1.62l-1.67,-1.33l-0.63,-1.43l0.21,-0.83l1.41,-0.67l0.61,-0.79l-0.35,-0.63l-2.02,0.06l-0.86,-2.23l0.67,-0.72l0.34,-0.77l-0.08,-0.44l-0.49,-0.5l0.62,-1.45l-0.25,-1.46l3.54,-1.43l4.03,-0.33l0.36,-0.5l-0.28,-1.14l1.37,-0.12l2.65,-1.86l2.78,0.31l3.93,-1.31l7.61,0.02l1.29,-0.85l0.15,-0.41l-0.16,-1.04l1.08,0.16l2.37,-0.14l9.0,1.62l2.2,0.01l2.99,1.6l1.75,0.46l4.98,0.02l7.53,0.73l1.76,-1.2l1.2,1.24l0.05,0.35l-0.81,0.25l-0.7,0.83l-0.89,0.08l-0.74,0.46l-2.01,4.63l-1.78,2.06l-1.52,1.22l-0.71,0.99l-0.41,1.08l-0.11,1.31l1.4,5.86l-0.02,0.96l-0.57,2.18l0.2,1.13l0.96,1.74l0.97,2.4l0.39,1.53l1.41,1.24l-3.15,1.13l-0.66,1.42l-1.29,1.24l-0.65,2.49l-1.76,-0.23l-2.0,-0.76l-1.1,-0.64l-1.03,0.03l-4.85,1.48l-0.81,-0.22l-2.13,-1.06l-3.53,-3.51l-0.22,-0.58l-0.57,-0.62l-2.57,-0.57l-0.91,-0.82l-2.12,-0.63l-3.1,-1.88l-0.9,-0.23l-0.43,0.19l-0.22,0.83l-1.53,-1.25l-0.39,-0.04l-2.69,1.15l-1.83,0.38l-4.3,1.52l-1.26,0.77ZM666.97,278.74l-0.76,0.14l-2.16,-1.14l0.32,-0.5l0.53,-0.26l1.89,0.49l0.18,1.27ZM647.68,284.33l0.65,-0.34l0.55,-0.65l0.33,-0.88l-0.06,-0.37l-1.34,-1.77l1.14,-0.04l1.0,0.59l0.42,-0.01l1.45,-0.78l0.72,0.23l0.47,-0.18l0.75,-1.3l1.82,-0.44l0.95,-0.42l0.77,0.1l1.15,0.49l1.76,-0.47l1.78,0.29l4.32,2.36l-2.29,0.37l-1.11,1.14l-0.83,0.23l-1.26,1.02l-1.71,0.98l-0.38,0.54l-2.91,-0.1l-1.98,0.46l-1.39,1.11l-0.69,2.3l-0.93,1.54l-0.87,0.51l-0.69,0.06l-0.04,-0.64l2.18,-2.28l0.52,-0.84l-0.22,-0.59l-1.05,-0.32l-0.98,-0.83l-2.01,-1.06ZM661.53,273.2l-1.11,0.89l-0.64,-0.61l-0.66,0.02l-1.35,2.09l-1.32,0.31l-0.56,-0.26l0.03,-0.74l-1.12,-2.39l-1.41,-0.64l-2.02,-0.09l-0.37,-0.23l4.37,-0.49l0.31,-0.21l0.54,-0.99l0.98,-0.96l0.62,-0.09l0.4,0.14l0.14,0.74l0.46,0.54l2.34,0.45l0.84,1.22l0.26,1.21l-0.72,0.09Z", "name": "Estonia"}, "LT": {"path": "M639.02,342.33l-0.39,-1.13l0.47,-2.2l-0.92,-3.13l-1.46,-3.66l-0.19,-4.61l3.42,-2.12l4.53,-2.39l5.74,-1.75l6.79,0.61l2.53,-0.04l1.39,-0.36l1.04,0.26l0.93,1.0l0.34,0.12l1.22,-0.19l0.91,-0.62l5.51,0.62l2.7,0.09l4.28,1.25l4.87,-0.4l0.86,-0.29l2.26,-1.59l1.75,-0.52l0.54,0.16l0.53,1.3l1.95,2.56l6.97,1.34l0.97,0.45l5.67,3.93l2.72,2.84l1.7,0.92l2.31,0.66l-0.34,1.84l-1.48,3.87l0.12,0.41l0.74,0.57l3.29,0.4l-1.48,1.08l-0.6,1.26l-4.13,-0.12l-0.74,0.49l-0.47,1.39l-0.48,0.77l-0.97,0.67l-1.73,0.29l-1.62,0.68l-1.11,1.7l-0.79,2.17l0.04,2.82l-1.39,1.93l-1.03,2.49l0.14,0.65l0.37,0.27l1.76,0.29l0.47,0.48l0.18,0.57l-0.1,0.81l-0.72,0.24l-1.31,0.01l-0.64,-0.28l0.32,-0.85l-0.3,-0.93l-0.72,-0.7l-0.47,-0.04l-1.13,0.71l-1.24,0.04l-1.41,0.69l-1.0,1.14l-0.71,0.32l-2.58,-0.13l-0.73,0.71l-0.6,2.36l-1.96,-0.05l-3.92,1.55l-1.77,-1.04l-2.45,0.34l-1.86,-0.07l-1.89,0.43l-2.25,-0.13l-0.76,-0.28l0.02,-2.29l-0.39,-1.31l-1.24,-1.24l-2.8,-1.58l-1.61,-0.43l-0.45,-0.8l-1.72,-0.82l-1.06,-0.12l-0.74,0.5l-0.85,-1.99l0.06,-1.19l0.32,-1.24l1.64,-3.84l-0.06,-0.83l-1.32,-1.32l-1.45,-0.78l-0.76,-1.55l-0.35,-0.22l-6.66,-0.08l-2.63,-0.68l-4.3,-1.77l-1.38,-0.7l-0.74,-0.73l-0.35,-0.11l-1.68,0.21Z", "name": "Lithuania"}, "LU": {"path": "M433.15,437.03l-0.05,1.41l0.48,1.32l1.68,1.88l1.01,0.65l1.98,0.66l-0.04,1.05l-1.0,1.07l-0.43,0.87l-0.47,2.14l-0.98,-0.51l-0.83,-0.08l-0.98,0.26l-0.69,0.55l-0.66,0.13l-2.45,-1.16l1.02,-1.75l-0.02,-0.42l-1.3,-2.07l-0.74,-0.75l0.23,-1.64l0.58,-0.74l1.03,-2.07l1.29,-1.3l1.16,0.19l0.17,0.33Z", "name": "Luxembourg"}, "RO": {"path": "M631.66,512.33l-0.58,-0.56l-1.04,-1.59l-2.98,-1.78l-1.3,-1.89l3.0,-0.64l1.59,0.53l0.76,-0.26l0.69,-0.51l0.67,-1.16l0.82,-0.18l2.69,0.29l1.42,-0.78l0.52,-0.55l0.46,-1.28l0.82,-0.3l0.26,-0.39l-0.15,-1.22l0.78,-1.78l1.18,-0.67l1.2,-0.98l0.13,-0.43l-0.23,-0.7l0.16,-0.43l2.13,-2.96l0.14,-1.37l1.69,-1.68l1.11,-2.8l1.64,-1.49l0.18,-2.0l1.41,-1.04l2.32,-2.6l2.53,-0.74l0.89,0.21l0.91,-0.16l0.99,-0.61l2.71,-2.55l2.29,-0.96l1.16,-1.36l0.58,0.03l2.92,1.64l3.47,-0.04l4.49,0.97l0.86,-0.12l1.63,0.64l1.41,-0.09l1.41,-0.47l1.29,-0.14l1.11,0.24l4.5,3.72l2.52,-0.5l1.41,-1.38l3.87,-1.47l9.43,-1.41l1.84,-2.27l0.38,-1.46l3.99,-0.91l1.2,-0.06l0.89,0.12l1.43,0.72l0.99,0.89l2.29,3.34l1.04,1.97l0.64,2.13l0.83,1.42l1.57,1.55l2.19,3.59l2.1,1.97l1.18,1.95l2.93,2.32l1.02,3.08l1.19,2.52l-0.22,2.16l0.27,1.0l-1.66,5.2l-0.28,2.9l0.21,2.54l0.55,1.94l0.04,0.88l-1.04,0.73l0.01,0.55l1.84,2.47l1.43,1.74l1.94,1.03l4.29,1.01l0.58,-0.12l0.27,-0.29l-0.23,-0.85l1.39,0.33l1.88,-0.54l2.6,-1.35l2.27,-0.26l2.07,0.76l1.65,1.62l-0.91,4.49l-0.93,2.04l-5.84,1.21l-0.37,-2.16l0.52,-0.66l-0.24,-0.64l-1.85,-0.24l-0.79,0.56l-0.53,0.79l0.37,1.96l-0.97,1.47l-0.07,1.37l-0.45,0.66l-0.09,0.63l0.45,0.45l0.39,-0.06l-0.18,0.42l-2.08,2.23l-0.78,1.52l0.18,5.12l-0.96,3.66l-2.42,-0.04l-2.03,-0.45l-2.21,-0.78l-2.16,-2.64l-0.42,-0.14l-1.86,0.48l-0.84,-0.66l-1.58,-0.38l-1.75,-0.01l-4.73,-2.44l-3.28,0.36l-4.86,1.03l-3.76,1.29l-3.9,2.3l-1.6,1.74l-1.7,0.86l-2.46,0.65l-4.49,-0.25l-9.87,-1.78l-2.85,0.5l-3.67,-0.38l-5.67,-1.11l-4.2,-0.34l-4.08,0.63l-0.45,-0.32l0.03,-0.96l0.46,-0.51l0.94,-0.46l0.63,-0.57l0.18,-0.76l-0.16,-0.37l-4.48,-2.72l-0.15,-0.7l-0.62,-0.59l-0.83,-0.34l-0.59,-0.56l-0.4,-0.79l0.08,-0.67l0.56,-0.68l0.71,-0.29l0.99,0.1l0.68,-0.28l0.2,-0.47l-0.33,-0.8l-1.13,-0.79l-2.23,-0.95l-1.99,0.5l-2.13,1.95l-1.09,0.23l-0.9,-1.21l-1.6,-0.77l-2.38,-0.28l-1.25,-0.44l-0.58,-0.76l-1.0,-0.58l-2.03,-0.57l1.83,-0.2l0.48,-0.55l0.05,-0.47l-0.23,-0.38l-2.12,-0.97l0.62,-0.23l0.36,-0.88l0.63,-0.63l0.18,-0.36l-0.11,-0.67l-0.98,-0.88l-2.71,-0.8l-1.0,-0.8l-0.8,-0.11l-0.93,-0.43l-3.06,-2.42l-0.13,-0.14l0.17,-0.72l-0.27,-1.04l0.17,-1.09l-0.06,-1.47l-0.37,-0.46l-0.49,0.03l-0.31,0.25Z", "name": "Romania"}, "EG": {"path": "M765.21,739.26l-0.4,0.48l0.36,0.35l1.86,0.2l4.19,-0.89l0.68,-0.86l0.41,-1.23l1.34,0.21l4.58,1.95l1.25,0.02l3.66,-1.23l0.28,0.16l-0.58,0.2l-0.2,0.94l-1.36,1.74l0.15,0.61l1.78,0.78l1.38,0.29l1.14,1.74l0.46,0.19l1.62,-0.52l1.02,-1.22l0.01,-0.5l-0.37,-0.48l3.21,2.54l1.24,0.57l1.18,-0.09l2.22,-0.63l0.72,0.08l2.8,-0.77l0.76,1.04l0.42,0.13l2.44,-0.68l3.95,-0.0l3.29,-0.79l3.67,-1.82l3.73,10.31l0.56,2.29l1.74,3.77l3.24,10.33l-0.62,0.57l-1.57,2.52l-1.61,7.53l-2.3,5.87l-0.29,3.76l-0.35,1.23l-7.32,0.0l-0.69,-0.58l-2.22,-3.01l-2.46,-2.02l-2.21,-2.53l-0.57,-1.74l0.0,-1.28l-1.02,-3.02l-0.79,-1.48l-2.75,-3.11l-0.77,-1.63l-1.21,-1.78l-1.01,-4.1l-1.1,-2.6l-0.57,-0.19l-1.26,0.72l-0.19,0.43l0.19,0.93l-1.04,1.47l-0.66,1.76l0.51,1.71l2.32,2.29l0.41,0.85l0.51,1.97l-0.08,2.75l0.46,1.22l1.67,2.05l1.59,3.32l1.67,1.79l2.46,3.47l2.38,2.38l-113.23,0.0l-0.01,-17.07l-1.55,-5.76l-0.86,-4.72l-1.23,-3.6l-0.1,-0.89l2.33,-3.72l1.16,-3.4l0.16,-1.61l-1.3,-4.24l-0.32,-3.88l3.52,-4.32l0.79,1.4l0.29,0.2l2.13,0.32l6.99,-1.61l18.22,3.61l4.0,2.48l1.2,0.33l2.7,-0.05l1.96,1.46l7.37,0.7l3.88,1.58l2.23,1.27l1.57,0.45l1.29,-0.08l1.61,-0.48l2.11,-0.94l2.25,-1.28l4.54,-3.2l1.48,-0.52l2.32,0.1l0.33,-0.19l2.2,-2.81l2.08,-0.2ZM783.73,738.59l0.24,0.14l0.29,0.3l-0.53,-0.44Z", "name": "Egypt"}, "PL": {"path": "M543.65,368.02l2.24,0.2l4.48,-1.73l7.75,-2.26l8.26,-2.12l3.9,-0.68l1.66,-1.47l1.11,-1.38l2.39,-2.09l4.31,-0.78l1.76,-1.08l3.39,-1.43l7.82,-1.63l3.25,-0.36l3.12,-0.04l2.21,1.0l-0.57,-0.04l-0.39,0.57l2.05,4.35l1.16,1.6l2.41,1.27l2.0,0.42l5.97,-0.69l2.69,-1.31l0.46,0.17l7.66,0.49l26.59,1.14l7.65,0.18l0.75,-0.23l0.65,-0.6l0.71,0.07l1.04,0.42l0.41,0.26l0.28,0.66l0.32,0.28l1.65,0.4l1.47,0.74l1.14,0.71l1.03,0.96l0.33,1.05l-0.04,2.27l1.64,6.67l2.6,6.11l1.31,4.41l0.39,3.77l-0.18,1.9l-0.61,0.58l-4.89,2.03l-1.01,0.69l-2.89,3.33l-0.47,1.1l0.51,0.99l3.51,1.58l0.61,0.54l1.24,0.64l0.6,0.91l-0.02,1.06l-0.57,1.63l0.2,1.32l-1.03,1.7l-0.08,2.01l1.61,3.05l0.23,0.8l-0.27,0.83l0.18,0.97l2.67,3.26l0.99,2.34l0.69,1.01l1.47,1.21l-0.27,0.34l-0.84,0.18l-0.48,0.6l0.04,0.47l0.87,1.06l0.61,1.75l-0.05,1.28l-0.44,0.36l-1.02,1.62l-3.57,0.67l-2.75,2.59l-1.34,1.01l-5.08,4.9l-4.48,5.17l-0.81,1.23l0.09,1.25l0.96,3.26l-0.36,2.22l1.95,1.75l-0.24,0.41l-2.87,-0.93l-1.5,-0.09l-5.93,-2.17l-0.67,-1.45l-1.17,-0.92l-2.5,-0.73l-1.1,-0.55l-3.95,-0.3l-3.67,0.18l-0.33,0.16l-1.01,1.31l-0.57,0.31l-0.92,0.04l-0.8,-0.21l-1.04,-0.75l-1.53,-0.38l-1.2,0.17l-1.5,-0.19l-0.82,0.12l-3.01,1.33l-0.84,0.92l-0.53,1.22l-1.56,-0.57l-1.82,0.42l0.34,-0.9l-0.2,-1.86l-0.81,-0.59l-1.18,-0.23l-2.06,-2.91l-0.63,-0.5l-0.48,0.01l-1.81,1.23l-0.87,0.37l-1.25,1.8l-1.91,0.05l-0.36,-1.5l-0.32,-0.28l-1.12,-0.17l-0.45,-1.77l-2.8,-2.47l-0.28,-0.84l0.08,-0.51l-0.37,-0.9l-0.76,-0.46l-2.28,-0.49l-0.66,0.22l-1.24,-0.83l-1.3,-0.45l-0.68,-0.67l-0.47,-0.14l-0.89,0.68l-1.27,0.41l-0.83,-0.47l-0.64,-0.91l-0.89,-0.78l-0.78,-0.32l-0.18,-0.17l1.22,-0.48l0.56,-0.84l-0.17,-1.46l-0.42,-0.42l-0.43,0.0l-0.59,0.37l-1.27,0.34l-1.7,0.16l-3.57,-2.18l-2.32,-0.67l-1.42,-0.21l-0.39,0.18l-0.17,0.62l1.62,2.71l-1.85,0.82l-1.61,1.27l-0.46,0.24l-0.33,-0.05l-0.43,-0.26l-1.49,-2.24l-2.01,-2.01l-1.46,-0.59l-0.1,-0.19l0.71,-0.74l1.08,-0.38l0.91,-1.37l-0.16,-0.72l-1.84,-1.31l-3.19,0.41l-0.65,0.25l-0.82,-0.97l-0.67,-0.11l-2.18,-1.1l-5.03,-1.25l-0.92,-1.11l-0.23,-1.26l-0.26,-0.31l-3.64,-1.01l-0.42,0.18l-0.19,0.43l0.01,1.78l-1.35,0.36l1.18,-2.06l0.65,-1.6l0.72,-3.12l-1.08,-3.23l-0.48,-0.66l-2.48,-1.15l0.28,-1.67l-0.27,-0.78l-1.3,-1.86l-0.24,-0.87l0.94,-1.3l1.05,-3.19l-0.13,-0.43l-0.54,-0.43l-0.12,-0.51l0.13,-1.2l-0.35,-0.77l-0.98,-0.65l-0.47,-0.55l-0.21,-0.66l0.18,-1.17l0.66,-1.74l-0.04,-0.36l-1.53,-2.24l-3.5,-2.48l-1.54,-1.59l0.1,-0.7l0.63,-0.77l1.41,-0.89l1.02,-1.45l0.65,-1.93l0.03,-1.7l-1.57,-5.02l-0.4,-2.51l3.71,1.43l0.56,-0.46l-0.4,-1.21l0.16,-0.84l-0.09,-1.29l-0.31,-0.36l-4.44,-0.86l-0.11,-0.47ZM603.72,353.39l0.65,0.34l-0.2,-0.07l-0.45,-0.27Z", "name": "Poland"}, "LY": {"path": "M507.02,713.68l1.65,0.75l2.05,0.37l6.38,3.57l2.05,0.45l4.43,0.42l5.33,-1.46l1.84,-0.24l3.38,1.34l1.59,0.4l2.5,0.1l4.28,1.22l1.03,0.4l2.49,1.94l1.38,0.67l8.88,1.79l1.1,1.07l1.17,2.15l0.07,2.86l1.82,4.75l1.39,1.96l1.62,1.68l1.77,1.01l3.95,1.45l4.54,0.58l4.47,0.19l7.64,1.98l6.46,2.28l1.67,1.15l3.2,1.09l6.52,5.39l3.62,1.86l2.67,0.4l2.5,-0.36l4.04,-1.87l1.73,-1.14l4.15,-4.73l1.38,-2.51l0.57,-1.79l-0.12,-1.9l-0.52,-1.66l-1.16,-1.71l-0.76,-2.09l-0.46,-3.81l0.61,-2.62l0.75,-1.56l1.18,-1.61l3.33,-3.15l3.35,-2.22l5.88,-2.9l3.39,-0.03l1.52,-0.33l2.92,-2.09l0.97,-0.07l1.66,0.51l4.66,-0.14l1.98,0.55l2.53,1.31l3.11,0.8l4.33,1.74l0.47,2.27l-0.25,0.77l-0.06,0.99l0.16,0.35l2.63,1.85l6.89,0.83l1.27,0.44l1.96,1.38l1.34,0.44l4.75,0.19l2.77,-0.29l2.53,0.46l0.86,0.41l0.91,0.96l1.52,3.1l-2.8,3.27l-1.13,1.65l0.34,4.12l1.3,4.24l-0.16,1.35l-1.1,3.18l-2.03,3.05l-0.38,1.0l0.13,1.12l1.23,3.6l0.85,4.69l1.54,5.69l0.0,16.96l-204.27,0.0l-0.63,-7.84l0.36,-6.05l-0.51,-3.13l-0.82,-2.88l-1.45,-3.99l-1.32,-2.44l-2.98,-4.38l2.47,-1.47l3.87,-1.66l1.34,-0.78l4.43,-6.01l0.54,-1.22l0.04,-1.35l-0.2,-1.42l-1.7,-6.3l0.52,-1.06l1.51,-2.02l2.74,-0.78l0.98,-1.07l0.88,-1.86l2.06,-1.28l0.81,-0.93l9.31,-5.16l0.42,-0.9l0.01,-0.96l-1.08,-1.87l0.07,-3.71l0.56,-3.74Z", "name": "Libya"}, "CH": {"path": "M479.62,482.62l1.14,0.8l-0.18,1.0l-1.08,2.02l-0.61,1.74l0.03,2.1l0.41,0.33l1.74,0.08l2.81,0.78l0.54,1.22l1.69,0.93l1.85,0.58l1.02,-0.27l2.12,-1.93l0.51,0.2l0.43,0.88l-0.64,2.62l-0.12,1.27l0.56,0.97l-0.02,0.65l-1.65,-0.23l-1.29,-0.99l-0.87,0.13l-0.92,0.48l-0.68,2.2l0.1,0.6l0.55,0.63l0.33,0.87l0.41,1.65l-0.69,0.02l-0.88,-1.43l-0.7,-0.74l-0.91,-0.09l-3.29,1.21l-1.21,-0.13l-0.52,-0.58l-0.68,-2.14l-0.42,-0.32l-1.84,-0.17l-0.6,0.35l-0.2,0.34l-0.12,3.09l-0.58,1.03l-2.45,2.84l-0.31,0.71l-0.07,0.81l0.58,1.67l-0.72,0.36l-0.41,-0.33l-0.34,-1.03l-1.21,-1.09l0.49,-0.82l-0.08,-0.63l-0.28,-0.24l-2.31,-0.55l-2.33,-2.15l-0.21,-0.48l-0.03,-2.52l-0.6,-0.57l-0.93,0.09l-1.05,0.77l-0.87,1.01l-1.9,1.26l-0.23,0.68l0.55,1.27l-1.71,2.33l-2.51,1.44l-3.29,-0.92l-3.01,1.12l-2.56,0.51l-0.83,-0.33l-0.34,-0.27l-0.91,-1.53l-2.35,-2.36l0.54,-1.67l-0.64,-1.73l0.1,-0.55l-0.18,-0.41l-0.4,-0.21l-2.44,-0.37l-2.11,0.11l-1.59,0.66l-1.5,1.42l-0.04,0.36l0.53,0.94l-0.73,0.74l-1.4,0.72l-1.06,0.03l-0.01,-0.52l0.75,-0.35l0.93,-0.9l0.38,-1.74l-0.82,-1.03l1.24,-2.71l3.31,-2.41l0.66,-3.3l2.81,-1.33l0.39,-0.64l3.54,-3.54l0.68,-0.97l0.09,-0.55l-0.34,-0.51l-0.94,-0.37l0.69,-0.76l1.01,-0.54l0.9,-0.01l0.3,0.54l0.48,0.36l1.14,0.2l1.14,-0.15l1.04,-0.38l1.17,-1.66l1.37,-0.65l1.08,0.36l3.11,0.1l2.31,-0.21l1.45,-0.53l1.63,0.0l1.13,0.29l0.71,-0.11l0.42,-0.3l1.0,-0.18l0.42,-0.42l0.01,-0.53l-0.38,-0.39l-1.52,0.06l-0.27,-0.16l0.3,-0.51l0.85,-0.52l0.69,-0.12l0.45,0.12l1.64,1.17l0.36,0.03l0.55,-0.29l0.28,0.12l0.63,0.75l0.33,0.13l3.96,-0.25l4.54,2.48Z", "name": "Switzerland"}, "GR": {"path": "M728.08,670.66l-0.79,0.26l-0.27,-0.4l0.51,-1.56l-0.52,-1.53l0.72,-0.63l0.51,-0.91l1.23,-0.97l3.7,-1.26l-0.01,0.43l-1.11,2.37l-1.0,1.2l0.08,0.93l-1.45,0.33l-1.6,1.75ZM727.96,660.69l0.31,-0.19l-0.05,0.46l-0.26,-0.27ZM717.45,657.54l2.45,-1.2l0.79,0.06l-1.35,0.58l-0.57,0.47l-1.31,0.09ZM718.65,675.52l0.9,2.17l-0.39,0.1l-0.45,0.53l0.1,-1.01l-0.52,-1.15l0.37,-0.64ZM711.88,642.87l0.32,-0.37l1.26,-0.4l0.98,-0.02l1.6,0.5l1.03,0.08l0.06,0.28l-0.73,0.12l-1.68,0.81l-0.54,-0.13l-1.08,-0.79l-1.23,-0.07ZM716.41,654.11l0.54,0.48l-0.03,0.04l-0.63,0.1l0.12,-0.63ZM708.43,617.81l-0.18,0.72l0.13,0.4l1.83,1.52l0.65,1.19l-0.81,-0.3l-0.49,0.49l0.43,0.99l-0.37,0.12l-0.95,-0.02l-2.94,-0.78l-0.36,-0.44l1.51,-1.07l0.47,-0.63l-0.34,-0.63l-1.6,0.18l-1.24,1.38l-1.92,-0.59l-0.59,-0.58l0.65,-1.02l1.36,0.04l0.99,-0.34l1.05,-0.45l0.25,-0.65l1.92,-0.12l0.56,0.56ZM623.87,612.82l0.81,0.1l0.84,-0.47l0.47,-0.56l0.3,-1.23l0.8,-0.02l0.42,-0.51l-0.08,-0.84l-0.89,-1.74l0.81,-0.52l0.37,-0.52l2.5,-0.46l0.86,-0.64l0.93,-2.94l1.11,-2.31l1.85,-0.75l0.87,-1.26l0.42,-1.01l0.03,-0.73l-1.01,-1.95l0.07,-0.75l4.52,-0.26l1.18,-0.64l2.45,0.55l2.71,-1.28l2.13,-2.58l0.71,-0.31l1.91,-0.15l0.66,-0.28l2.77,0.55l1.44,0.08l3.19,-0.98l0.25,-0.3l0.38,-2.03l0.18,-0.14l4.88,0.17l1.31,-1.02l2.47,-0.21l2.83,0.18l1.72,-0.42l1.59,-0.68l1.16,0.05l0.71,-0.17l0.49,-0.38l0.23,-0.68l4.19,0.07l1.53,-0.5l1.02,1.67l2.5,1.47l0.48,-0.04l0.77,-0.49l1.82,0.43l1.82,0.77l1.87,1.21l3.75,-0.91l2.61,-0.24l0.83,-0.24l1.97,0.27l1.94,-0.63l1.02,-0.61l0.46,-1.18l-0.17,-1.48l-0.44,-1.41l-0.57,-0.89l0.35,-0.54l1.04,-0.24l2.68,0.72l1.11,1.0l1.06,0.53l0.5,2.84l-0.19,0.48l-0.81,0.19l-2.79,1.69l-0.19,0.32l-0.07,1.58l0.1,1.3l0.29,0.52l0.0,0.43l-0.24,0.54l-2.03,2.03l-0.89,1.16l-0.56,0.18l-0.34,-0.5l-2.25,-1.26l-4.82,-0.7l-2.28,-0.88l-1.1,0.12l-2.16,-0.96l-1.44,0.48l-2.75,1.7l-1.32,-0.16l-1.58,-1.02l-1.46,-0.22l-1.39,0.65l-1.98,1.99l-1.88,0.91l-1.8,-0.37l-2.49,0.01l-0.39,0.31l-0.22,1.44l0.54,0.87l1.13,1.12l-0.47,0.74l-0.02,0.38l0.47,1.01l0.99,0.39l-1.39,-0.11l-1.3,0.61l-0.32,1.0l0.12,0.35l1.4,1.3l1.87,1.38l0.37,1.18l-0.35,0.48l-1.18,-0.71l-2.27,-3.16l-3.48,-0.8l-0.39,0.14l-0.54,0.67l-0.06,0.39l0.64,1.71l0.62,0.86l2.45,1.61l-2.93,-0.93l-0.8,-1.4l-0.21,-1.94l-0.22,-0.32l-5.5,-2.86l-0.45,-1.08l0.46,-0.5l0.4,-1.07l-0.43,-0.54l-1.68,0.27l-0.91,0.65l-1.49,0.64l-0.24,0.34l-0.06,1.08l0.22,1.0l-0.48,1.39l-0.49,2.52l0.31,1.49l3.35,3.9l1.1,2.68l0.86,1.13l1.73,1.2l1.71,2.07l0.7,1.04l0.44,1.49l-1.16,0.88l-0.56,0.03l-0.15,-0.15l0.57,-1.22l-0.31,-1.06l-2.29,-1.17l-1.37,0.42l-1.12,0.76l-0.14,0.5l0.64,1.41l0.72,0.95l0.34,1.2l0.45,0.29l-0.74,0.57l-1.61,0.68l-2.76,0.18l-0.61,0.48l0.16,0.67l1.6,0.3l1.19,0.76l3.27,0.91l1.74,1.2l1.38,0.09l1.7,2.15l2.57,0.54l1.7,2.19l2.02,0.42l1.63,0.73l0.41,0.6l0.24,1.26l0.11,2.87l0.38,2.18l-0.07,1.48l-0.27,0.28l-0.29,0.01l-1.21,-1.49l-4.01,-3.64l-0.66,-0.41l-0.66,-0.09l-1.28,0.69l-3.11,0.54l-1.92,0.86l-0.41,0.62l0.17,0.49l0.62,0.37l0.68,0.75l0.04,1.25l0.68,1.51l1.09,0.59l1.24,0.0l0.4,0.17l0.21,0.58l0.95,1.03l-2.89,0.89l-1.09,0.62l-0.47,-0.26l-0.04,-0.98l-0.2,-0.33l-2.13,-1.2l-1.23,-0.26l-0.95,-0.77l-0.53,0.03l-0.67,0.67l-0.11,0.37l0.54,2.33l1.21,1.72l1.93,4.24l0.87,2.48l0.16,1.11l-0.37,2.26l1.29,2.3l-1.48,-1.02l-1.97,-2.38l-0.69,-1.49l-0.31,-0.23l-0.85,-0.12l-1.59,0.22l-0.3,0.22l-1.62,3.29l-0.04,1.39l-0.21,-0.11l-0.53,-0.44l-0.06,-2.98l-1.96,-2.81l-0.93,-0.41l-1.11,-1.88l-0.41,-0.16l-1.04,0.23l-0.97,0.71l-0.29,2.85l-0.28,0.5l-1.68,-1.57l-2.02,-3.26l-0.05,-1.6l1.43,-1.58l0.1,-0.33l-0.24,-1.37l-1.56,-2.52l-2.1,-1.55l-1.1,-0.44l-0.63,-1.66l-1.13,-0.85l-0.83,-0.37l-0.07,-0.24l2.41,-2.02l1.21,-2.49l0.32,-0.06l1.42,0.61l1.49,-0.17l1.46,-1.68l0.88,-0.72l1.5,0.09l3.86,2.05l4.28,1.21l2.03,1.0l1.29,1.08l1.71,0.38l0.46,-0.42l-0.23,-1.23l0.38,-0.17l2.18,0.02l0.74,-0.53l0.42,-0.59l0.0,-0.46l-0.47,-0.67l-1.03,-0.49l-1.47,-0.29l-0.73,0.18l-1.18,-0.46l-1.13,-0.88l-2.27,-0.86l-2.15,-1.45l-0.57,0.13l-0.44,0.74l-0.71,0.36l-1.11,0.06l-3.72,-0.92l-2.15,0.71l-2.11,0.21l-2.13,0.47l-0.94,-1.15l-0.45,-1.01l-0.49,-0.38l-0.6,0.34l-0.02,0.91l-0.25,0.55l-1.28,0.35l-0.68,-0.45l-1.66,-4.25l-1.61,-1.93l-1.24,-0.53l-0.08,-0.77l0.07,-0.5l1.17,-0.16l2.36,0.85l0.88,-0.23l0.55,-0.41l0.16,-0.37l-0.11,-0.91l-0.39,-0.92l-0.34,-0.24l-2.63,-0.11l-1.94,0.42l-0.66,-0.31l-0.34,-0.52l-1.59,-1.25l-1.38,-1.68l-2.27,-1.18l-1.43,-3.35l-1.02,-1.26ZM675.17,600.88l1.34,-0.04l2.3,1.22l1.04,1.37l-1.41,-1.3l-1.36,-0.37l-1.91,-0.87ZM707.89,661.28l-0.16,0.18l-0.36,-0.26l0.41,0.1l0.11,-0.02ZM708.79,660.68l0.03,-0.08l0.05,0.06l-0.08,0.03ZM703.69,645.69l0.95,-0.85l2.02,-0.19l-0.73,0.47l-2.24,0.58ZM672.76,675.97l0.47,1.17l1.83,0.46l1.71,-0.13l0.86,-0.89l0.55,-0.01l0.13,0.28l-0.96,0.59l0.02,0.55l1.05,0.63l0.84,-0.04l0.28,0.97l0.84,0.59l1.91,-0.04l3.7,-0.9l3.66,0.22l1.49,0.98l2.58,0.12l2.39,0.5l3.4,-0.62l-0.19,2.06l0.14,0.77l0.84,0.58l0.89,-0.12l0.88,-0.75l1.68,-0.51l1.84,0.0l1.35,-1.09l-0.21,1.46l-0.45,1.56l-0.8,0.3l-4.51,-0.1l-8.47,1.01l-5.41,0.37l-0.4,-0.13l-0.14,-1.43l-0.43,-0.64l-3.49,-1.22l-7.93,-1.34l-2.54,0.18l-0.77,-0.02l-0.45,-0.25l-0.31,-0.42l-0.17,-1.69l0.27,-1.65l0.87,0.49l0.43,-0.08l0.58,-0.56l0.16,-1.18ZM702.17,634.63l0.83,-0.47l0.53,-0.8l0.03,-0.38l-0.51,-1.11l-1.37,-1.35l-0.04,-0.53l1.75,-0.34l1.57,0.89l-0.12,0.39l0.19,2.78l-0.62,0.53l-0.14,0.76l-0.95,0.65l-1.15,-1.03ZM698.48,599.9l-0.88,0.24l-0.94,-0.74l0.76,-0.25l1.05,0.74ZM696.85,654.58l-0.82,0.4l-0.56,-0.58l-0.35,-1.01l1.84,-1.64l0.35,0.34l-0.04,1.56l-0.43,0.92ZM695.75,663.45l0.09,0.3l-0.33,0.43l0.19,-0.35l0.05,-0.38ZM695.08,647.43l-0.75,0.06l0.03,-0.54l0.14,-0.09l0.93,0.36l-0.36,0.21ZM690.86,607.38l1.89,-0.07l0.57,0.64l0.49,0.09l1.51,-1.04l-0.52,0.64l-0.38,0.93l-0.18,1.09l-0.59,-0.12l-0.12,-0.88l-0.43,-0.38l-0.69,0.27l-0.36,0.77l-0.51,0.04l-0.54,-0.26l-0.14,-1.72ZM694.65,659.11l-0.68,-0.65l-0.17,-0.27l0.96,0.71l-0.11,0.21ZM693.06,653.23l-0.77,0.86l-0.51,-0.07l-0.15,-0.21l0.4,-0.81l0.94,-0.5l0.09,0.74ZM690.94,644.63l1.66,0.25l0.15,0.17l-0.25,0.51l-0.46,-0.08l-1.09,-0.84ZM689.21,642.46l-0.12,0.31l-0.69,-0.78l-1.09,-0.79l-0.39,-0.66l-0.69,-0.49l-0.1,-0.51l0.59,-0.25l0.74,1.01l1.24,0.26l-0.02,0.55l0.53,1.35ZM686.25,596.85l-1.26,0.42l-1.41,-0.87l0.01,-0.29l1.17,-1.42l0.98,0.08l0.69,0.96l-0.17,1.13ZM685.69,654.47l0.32,0.59l-0.13,0.1l-0.14,-0.27l-0.05,-0.42ZM682.97,623.8l0.51,0.29l0.25,0.93l-0.86,-0.54l0.1,-0.68ZM684.19,625.48l0.31,0.27l-0.27,0.07l-0.05,-0.35ZM661.66,625.04l3.1,-1.8l1.96,-0.47l1.2,1.04l0.73,1.64l0.92,0.78l1.51,0.69l0.76,0.11l2.51,1.21l3.0,0.27l1.17,1.85l0.09,0.35l-0.28,0.78l0.44,1.97l0.77,1.93l1.43,1.15l1.41,0.27l1.25,-0.03l-0.01,1.43l-0.63,0.53l-1.01,-0.67l-0.75,-0.06l-0.54,-0.6l-1.34,-0.84l-0.34,-1.37l-2.27,-3.04l-3.76,-0.18l-1.21,-0.55l-0.6,-1.8l-1.43,-0.89l-1.93,-1.94l-1.56,-1.08l-1.52,-0.72l-1.62,-0.47l-1.46,0.5ZM681.22,658.91l0.47,0.25l-0.55,0.09l0.08,-0.34ZM682.33,659.06l0.37,-0.41l0.36,-0.09l0.0,0.38l-0.73,0.12ZM682.94,652.14l-0.52,-0.06l0.1,-0.37l0.26,-0.16l0.24,0.11l-0.07,0.48ZM681.96,648.45l-0.28,-0.62l0.24,-0.28l0.32,0.46l-0.27,0.44ZM680.69,645.1l-0.29,0.25l-0.04,-0.3l0.43,-0.89l0.31,-0.03l-0.41,0.98ZM672.52,621.17l-0.6,-0.11l-0.2,-0.37l0.8,0.47ZM668.93,639.82l0.26,-0.51l0.33,0.09l0.1,0.32l-0.19,0.14l-0.5,-0.04ZM661.94,664.62l1.47,1.53l-0.51,0.98l-0.83,-0.28l-0.27,-0.48l-0.06,-1.34l0.2,-0.41ZM633.7,642.06l0.48,0.52l-1.17,0.88l-1.26,-1.0l-0.97,-1.4l0.5,-0.6l0.61,0.8l1.24,0.33l0.56,0.47ZM627.1,635.32l0.7,-1.67l0.38,0.34l0.43,0.08l0.52,-0.22l0.62,-1.27l0.25,1.95l0.26,0.34l0.85,0.3l1.1,1.42l-0.07,0.54l-1.85,-0.68l-0.97,0.24l-0.29,-1.09l-0.71,-0.88l-0.52,0.0l-0.69,0.6ZM630.95,631.66l0.08,0.09l-0.0,0.18l-0.08,-0.27ZM629.87,628.81l0.45,-1.93l0.49,-0.77l0.35,-0.18l0.06,2.57l-0.21,0.26l-1.14,0.06ZM620.81,615.41l-0.15,-0.1l-1.04,-1.97l-2.06,-2.14l-0.01,-0.26l0.56,-0.34l1.58,-0.31l0.9,0.56l-1.09,1.26l0.07,0.47l0.65,0.65l0.33,1.74l0.26,0.44Z", "name": "Greece"}, "RU": {"path": "M726.15,312.03l0.75,-1.97l0.11,-1.54l0.56,-1.41l0.63,-0.55l0.32,-0.69l0.13,-1.14l-0.13,-0.99l-0.62,-0.75l-3.35,-2.1l-0.53,-1.63l-0.74,-0.36l-1.19,-0.06l0.57,-2.1l1.17,-1.07l0.68,-1.42l2.7,-0.77l0.49,-0.4l0.15,-0.53l-0.31,-0.63l-1.16,-0.88l-0.38,-1.49l-0.99,-2.45l-0.92,-1.63l-0.17,-0.82l0.55,-2.09l0.03,-1.17l-1.41,-5.94l0.09,-0.96l0.37,-0.97l0.6,-0.81l1.49,-1.19l1.84,-2.14l1.93,-4.52l0.36,-0.26l1.24,-0.24l0.55,-0.74l0.77,-0.24l0.48,-0.45l0.07,-0.43l-0.32,-0.69l-1.43,-1.46l0.6,-1.35l-0.65,-3.35l0.43,-0.81l0.57,-0.06l1.12,1.2l1.66,0.65l0.37,-0.04l1.21,-0.84l0.54,-1.72l0.56,-0.46l1.07,0.55l1.95,0.23l1.69,-0.1l1.18,-0.36l0.64,-0.64l1.32,-2.14l0.76,-0.64l6.88,0.87l6.12,1.65l0.42,-0.15l0.47,-0.62l0.29,-1.23l-0.19,-0.42l-2.61,-1.39l-1.44,-1.91l-2.05,-1.51l-2.27,-0.21l-2.75,0.52l-3.91,-0.3l-3.38,-2.77l-2.3,-0.91l-1.57,-2.17l0.85,0.47l0.58,-0.26l0.39,-2.49l-0.14,-0.34l-0.99,-0.85l-0.94,-0.55l-0.37,-0.01l-4.47,2.15l-3.82,0.53l7.28,-6.51l3.44,-2.16l1.07,-1.18l6.97,-4.75l3.26,-3.23l2.7,-2.13l8.35,-8.72l3.51,-3.4l5.0,-4.11l3.43,-3.34l1.42,-1.93l2.06,-4.41l1.3,-2.3l0.09,-0.95l-0.47,-1.0l-2.34,-2.4l-2.18,-3.05l-2.83,-1.99l-7.52,-4.34l-4.87,-3.94l-0.6,-0.69l2.72,-1.22l4.0,-4.72l0.38,-1.46l-0.17,-2.73l-0.38,-0.9l-1.51,-1.2l-3.71,-1.77l-1.54,-3.23l-0.01,-0.49l1.82,-2.02l0.07,-1.07l-0.28,-1.12l-0.75,-0.87l-3.83,-0.84l-0.98,-0.81l-0.82,-1.36l-0.42,-1.16l-0.04,-0.6l0.22,-0.63l2.4,-1.41l0.44,-1.18l-0.01,-0.89l-0.25,-0.6l-0.29,-0.22l-2.33,-0.4l-0.08,-0.15l1.34,-1.73l0.27,-3.17l1.19,-2.04l-0.08,-0.5l-1.02,-0.91l1.69,-0.51l2.92,-0.41l0.29,-0.35l0.1,-1.0l-0.21,-1.45l-2.56,-6.99l-3.15,-4.16l-1.06,-1.77l-0.64,-1.89l-1.11,-2.13l-2.34,-3.73l-2.68,-3.45l-0.31,-0.84l0.25,-1.57l2.07,-2.8l4.43,-5.2l5.01,-5.15l0.73,-3.16l-0.28,-0.7l-2.11,-1.5l-3.99,-4.03l-2.62,-3.21l-8.77,-2.94l-2.79,-6.73l0.1,-0.97l3.69,-5.53l0.35,-1.0l-0.04,-0.79l-0.49,-0.63l-0.66,-0.31l-3.36,-0.18l-0.09,-0.13l1.57,-0.44l4.49,-1.92l2.96,-0.95l0.82,-0.57l0.66,-0.76l2.3,-4.62l5.89,-1.46l2.34,-0.84l1.33,-1.04l1.09,-1.73l0.48,-2.01l-0.34,-0.97l2.29,1.18l3.2,1.25l2.48,0.12l1.09,-0.25l0.77,-0.81l0.37,-1.19l0.01,-1.2l-0.61,-2.61l1.82,0.26l5.43,1.91l1.54,-0.18l1.81,-0.72l1.58,-2.18l0.98,-0.31l1.48,0.49l0.45,-0.15l0.44,-0.61l0.04,-0.39l-0.78,-1.78l0.08,-0.38l5.05,1.88l2.44,1.53l5.02,1.3l0.69,0.55l0.05,1.01l-0.19,0.84l-0.82,0.45l-2.04,-0.09l-7.8,-1.64l-0.34,0.09l-1.16,1.0l-0.01,0.6l1.05,0.93l2.14,0.95l0.58,1.64l0.41,0.27l3.46,-0.24l3.3,0.68l1.42,-0.18l-0.88,1.41l0.08,0.55l0.89,0.44l3.73,-1.44l1.6,-0.36l0.6,0.25l0.09,0.86l-0.58,1.41l-0.09,1.2l-1.07,2.55l-1.81,0.91l-0.75,1.15l0.01,0.45l0.43,0.15l2.61,-0.7l1.48,-0.8l2.69,-3.85l0.61,-0.4l7.25,-0.07l1.62,0.24l6.91,1.78l2.04,0.17l2.33,-0.23l0.96,-0.88l0.56,-0.17l7.57,1.96l10.28,4.47l15.04,7.36l8.43,6.46l1.18,1.5l3.08,0.79l0.85,-0.48l1.46,0.4l10.12,5.95l3.45,0.31l0.41,-0.54l-0.6,-1.55l0.93,0.68l1.94,2.34l2.29,1.69l2.34,2.53l1.51,0.78l0.0,30.64l-5.15,3.01l-10.98,3.76l-8.56,1.41l-3.42,0.1l-6.69,-0.7l-3.63,-0.75l-4.48,-2.13l-4.29,-1.1l-2.98,-0.49l-5.35,-0.2l-11.6,-2.1l-1.96,-0.72l-7.29,-4.12l-0.35,-0.02l-2.86,1.15l-1.46,0.18l-0.78,-0.94l0.53,-0.72l-0.24,-0.58l-4.14,-1.18l-3.43,-0.09l-1.8,-0.99l-2.23,-0.77l-1.59,0.44l-4.38,-1.76l-1.93,-1.41l-1.89,-2.33l0.92,-1.16l-0.19,-0.68l-7.27,-1.52l-6.84,-0.2l-0.4,0.29l0.18,0.46l1.19,0.72l3.05,0.43l3.73,2.29l-0.44,1.73l0.17,0.43l3.0,1.97l2.18,1.77l0.29,0.74l1.0,0.42l3.18,0.51l0.44,1.29l-0.42,0.51l-0.05,0.43l0.67,1.15l2.55,1.07l2.94,0.78l-0.52,0.8l-1.44,0.78l-1.53,0.38l-0.3,0.36l0.24,0.4l0.93,0.34l1.98,-0.12l7.3,2.13l3.81,2.13l3.89,3.9l1.2,1.84l0.08,0.92l-0.2,0.97l-2.15,5.68l-0.9,1.1l-1.83,1.32l-0.1,0.55l3.58,5.02l1.76,3.94l0.31,1.54l0.07,2.44l0.19,0.33l1.05,0.63l-0.89,1.1l0.25,3.45l2.37,2.71l3.37,1.69l2.28,0.38l2.79,-0.66l1.95,0.87l4.57,3.12l2.06,3.28l1.09,0.86l8.27,2.02l5.37,1.99l1.05,0.1l2.82,-1.76l4.45,-1.19l1.69,-2.08l-0.15,-1.55l-1.13,-2.46l-0.48,-2.68l-1.49,-1.01l-1.45,-0.7l-4.41,0.47l-1.79,-0.09l-1.31,-0.61l-1.88,-1.7l-3.66,-4.27l-1.98,-1.45l-0.57,-0.81l-0.62,-1.12l0.06,-1.49l1.44,-0.01l1.8,-1.14l1.41,-4.09l2.0,-0.46l1.11,0.03l5.14,1.86l6.58,5.08l1.56,0.56l3.82,-0.04l0.42,0.59l1.34,0.79l7.02,1.73l7.13,3.16l2.59,-0.14l0.32,-0.2l1.02,-1.74l0.21,-0.69l2.64,-1.63l1.82,-0.27l2.7,0.62l0.38,-0.11l0.56,-0.8l0.0,400.08l-4.46,-0.79l-1.09,0.42l-1.26,1.88l-1.04,-0.64l-4.8,-4.18l-2.57,-2.84l-8.3,-6.49l-1.27,-0.57l-4.36,-0.93l-1.66,-0.71l-4.42,-4.6l-0.41,-0.1l-1.91,0.6l-1.66,-0.15l-0.97,-0.38l-1.06,-0.62l-0.72,-0.8l-0.9,-1.9l-1.27,-1.31l-3.61,-1.66l-3.84,-0.92l-0.2,-0.37l3.1,-1.0l1.03,-0.69l-0.05,-0.69l-2.45,-1.01l1.22,-0.52l1.34,0.65l1.67,1.33l1.61,0.58l0.4,-0.09l0.61,-0.57l5.08,-1.09l0.29,-0.24l0.35,-0.88l0.01,-1.14l-0.43,-0.39l-0.41,0.0l0.02,-0.79l0.7,-1.38l2.37,-2.55l1.21,-3.3l0.78,-0.55l0.38,0.25l0.1,1.27l0.32,0.31l0.41,-0.18l1.33,-2.52l1.44,-0.01l1.3,0.26l1.25,-0.18l0.24,-0.67l-2.44,-2.61l-3.22,-2.59l-1.55,0.09l-0.65,-0.3l-1.32,-2.0l-0.39,-1.18l2.35,0.25l2.55,-1.22l0.82,-0.15l3.64,0.63l0.44,-0.46l-0.18,-1.17l-0.52,-1.11l2.18,-0.86l2.35,-0.58l4.37,-1.99l1.9,-0.35l0.28,-0.2l0.29,-0.61l0.03,-0.79l-0.68,-1.65l-0.66,-1.19l-0.34,-0.21l-2.33,-0.06l-0.33,0.15l-1.2,1.53l-3.33,0.51l-0.55,-0.04l0.44,-0.37l1.36,-0.51l0.35,-0.44l0.03,-0.45l-0.41,-0.19l-2.51,0.39l-1.4,1.14l-3.14,1.23l-0.09,-0.82l0.19,-0.44l0.63,-0.48l0.26,-0.87l-0.27,-0.38l-0.79,-0.35l0.71,-1.44l0.05,-1.27l0.34,-1.2l0.91,-0.72l1.93,-0.23l1.85,-0.8l1.15,-0.93l1.32,-2.0l0.85,-0.25l6.6,0.37l4.71,-0.19l0.87,-0.89l0.05,-1.5l1.42,-3.4l0.99,-1.16l0.05,-0.83l-0.24,-0.34l-1.24,-0.38l0.56,-0.88l-0.11,-1.1l-0.64,-2.15l-1.15,-0.75l-1.32,-0.29l0.66,-2.07l0.97,-0.98l1.32,0.21l1.24,-0.24l0.46,-0.36l0.09,-0.43l-0.46,-0.76l-3.06,-1.04l-0.67,-1.1l2.56,-0.9l2.44,-2.39l0.59,-0.98l0.31,-1.08l-0.01,-1.2l-0.93,-1.24l0.0,-0.89l0.48,-1.04l-0.19,-0.6l-1.1,-0.63l-1.07,0.13l-1.03,0.38l-1.12,-0.07l-4.23,-2.7l-2.19,-0.27l-1.68,-1.96l-0.37,-0.07l-1.93,0.64l-1.31,-0.1l-3.56,-2.2l-2.76,-0.26l-2.76,-1.58l-0.96,0.15l-0.52,0.67l-0.27,1.26l-1.02,0.25l-4.44,-3.21l-1.26,-1.76l-0.43,-1.51l-2.37,-2.21l-1.25,-0.09l-2.83,1.16l-1.96,0.22l-3.11,0.85l-1.8,1.39l-1.55,-1.19l-1.78,-0.29l-0.86,0.24l-0.63,-0.41l-0.78,-1.02l-1.17,-0.8l-3.28,-0.48l-1.33,0.59l-1.5,0.96l-0.78,-0.28l-0.55,-1.12l-0.87,-0.5l-0.93,-1.27l-0.22,-1.05l0.59,-1.13l0.05,-1.0l-0.34,-0.87l-0.47,-0.59l-0.48,-1.8l-0.42,-0.83l0.2,-1.4l-0.59,-0.57l-1.49,-0.01l-0.34,-0.19l-0.8,-1.97l-0.48,-0.57l-1.35,-0.09l-3.1,0.57l-0.52,-0.04l-2.96,-1.15l-3.32,-0.13l0.6,-0.53l0.05,-0.87l-0.67,-0.61l-0.25,-0.82l-0.08,-2.4l-1.12,-1.88l3.23,-0.64l0.55,-0.61l0.0,-0.97l-3.92,-3.8l-1.29,-3.12l-1.31,-1.82l-1.47,-1.24l-1.22,-0.59l-3.98,0.16l-2.32,-0.36l-1.88,0.24l-3.42,1.53l-1.13,0.06l-3.97,-1.0l-1.1,0.01l-0.73,0.25l-0.54,0.52l-1.12,2.88l-1.96,1.03l-1.84,0.07l-2.57,-0.94l-1.02,-2.05l-1.46,-1.55l0.1,-3.66l0.23,-0.14l0.11,-0.59l-1.15,-1.49l-0.07,-0.9l0.58,-0.74l-0.03,-0.72l-0.48,-0.81l-3.5,-3.76l1.74,-2.86l3.23,-0.09l0.87,0.25l0.43,0.66l1.18,0.83l2.79,0.31l1.39,-0.07l1.52,-0.71l2.38,-1.51l0.67,-1.14l1.34,-0.7l1.62,-0.42l0.33,-0.34l0.03,-1.61l-0.47,-0.85l-2.85,-1.78l-0.46,-0.98l0.32,-0.71l-0.01,-0.73l-0.23,-0.35l-3.52,-1.68l-2.83,-0.29l-2.3,0.09l-0.42,-0.16l0.81,-2.04l0.17,-1.22l-0.27,-0.89l-0.58,-0.55l-5.18,-2.56l-1.33,-1.67l-0.7,-1.81l-0.87,-1.24l-1.36,-0.72l0.98,-1.81l-0.1,-0.74l-0.53,-0.52l-1.84,-0.88l-2.36,-1.54l0.42,-2.01l2.06,-2.77l-0.01,-0.81l-0.31,-1.06l-1.9,-2.6l0.05,-0.61l1.13,-1.47l0.02,-3.52l-0.82,-0.83l-0.91,0.05l-0.92,-0.34l-1.26,-0.82l-2.4,-2.34l-3.02,-1.11l-2.72,0.14l-1.57,-0.15l-0.75,0.25l-0.88,0.75l-0.95,0.41l-0.89,0.05l-0.74,0.35l-1.8,1.14l-0.67,-0.55l-0.67,-0.93l0.54,-1.63l-0.05,-0.93l-0.47,-0.67l-1.25,-0.56l-2.67,-1.03l-0.89,-0.04l-1.34,0.43l-1.92,1.05l-0.45,-0.15l-1.32,-1.91l-1.12,-0.71l-2.42,0.01l-1.4,0.65l-1.56,-1.4l0.66,-2.19l-0.45,-2.46l-0.89,-3.03l-1.34,-1.21l-0.23,-0.86l-1.31,-1.81l-0.13,-1.47l-0.53,-0.78l-0.98,-0.41l-1.57,0.36ZM899.6,149.08l-0.91,-2.51l-1.31,-2.3l-1.94,-1.53l-3.3,-4.18l-1.3,-2.04l-0.62,-2.02l0.83,-3.03l6.79,-3.36l1.76,-1.43l0.0,22.4ZM836.19,140.74l0.33,0.65l0.12,1.25l-0.38,0.82l0.11,0.76l-0.3,0.19l-1.12,-1.49l-0.96,-0.18l-0.66,-0.6l-0.26,-0.83l0.79,0.0l1.49,-0.81l0.85,0.25ZM617.41,357.73l1.54,-1.2l1.4,-1.73l1.16,-2.18l0.41,-3.11l1.52,-0.56l4.03,0.06l1.68,-0.82l1.35,-1.25l-0.8,0.85l0.13,0.64l1.12,0.5l1.36,0.19l1.62,0.72l1.47,0.13l2.74,-0.62l0.31,-0.33l0.62,-5.87l1.57,-0.18l0.74,0.71l1.5,0.76l4.31,1.78l2.75,0.72l6.56,0.09l0.88,1.63l1.44,0.77l1.05,0.95l0.05,0.36l-1.6,3.77l-0.37,1.44l-0.04,1.47l0.9,2.13l-34.03,-1.32l-7.35,-0.47Z", "name": "Russia"}, "IQ": {"path": "M899.6,732.04l-1.3,-0.59l-15.78,-2.66l1.38,-1.24l0.11,-0.44l-0.61,-1.62l-0.45,-0.25l-2.45,0.58l-0.57,-1.76l0.64,-0.19l0.27,-0.49l-3.77,-13.0l22.55,-12.68l0.0,34.33Z", "name": "Iraq"}, "IS": {"path": "M31.07,119.93l0.41,-0.27l0.37,-0.88l0.71,-0.26l0.9,-0.01l0.94,0.31l3.13,1.76l0.35,0.38l0.11,0.48l-0.12,0.97l0.13,0.33l0.46,0.24l1.15,-0.26l0.9,0.31l0.71,-0.08l1.28,-1.18l0.53,0.18l0.52,0.85l-0.08,2.46l0.67,0.18l0.76,-0.74l1.34,-0.06l0.35,-0.24l0.23,-0.58l0.04,-1.63l-0.12,-1.34l-0.22,-0.45l-5.08,-2.02l-1.59,-1.09l0.78,-0.38l1.36,-0.15l3.31,0.02l0.54,-0.25l0.04,-0.67l-0.81,-0.55l-1.45,-0.29l-0.34,-0.57l-0.44,-0.27l-1.8,0.29l-1.98,0.01l-1.51,-0.25l2.03,-1.36l0.62,-0.21l2.25,0.17l2.17,-0.28l1.66,0.32l3.37,2.7l2.76,1.15l4.63,3.74l2.86,1.41l-1.29,0.66l-0.13,0.64l0.46,0.4l1.39,0.34l0.89,0.81l-0.88,3.03l-0.82,0.74l-2.59,-0.53l-0.41,0.17l0.0,0.45l0.8,1.09l1.88,0.98l0.23,0.3l-0.17,0.33l0.15,0.53l0.58,0.16l0.43,-0.18l-0.35,1.33l-0.45,0.57l0.1,0.7l0.4,0.21l1.27,0.05l0.95,0.72l1.35,3.36l0.72,-0.03l0.75,-2.67l0.28,-0.71l0.75,-0.57l0.78,-2.62l1.71,-1.48l0.77,-0.43l0.63,-0.08l1.72,1.83l1.05,0.29l0.7,-0.3l0.61,-1.18l0.77,-2.27l0.17,-2.52l-0.4,-2.63l0.22,-1.76l0.73,-0.96l0.91,-0.28l1.25,0.39l0.94,0.63l2.01,2.62l3.17,2.98l0.89,0.55l1.58,0.24l0.6,-0.25l0.32,-0.5l0.13,-0.71l-0.3,-3.74l0.35,-1.06l0.47,-0.67l2.45,-0.49l1.46,-0.57l1.32,-0.85l1.02,-0.43l0.74,-0.05l0.79,0.29l0.9,0.69l1.47,1.41l1.88,2.38l2.41,1.8l1.51,3.25l0.57,0.25l0.7,-0.5l0.27,-0.64l0.06,-1.56l-0.69,-1.71l-2.22,-4.14l0.12,-0.95l1.31,-0.06l3.59,0.38l1.06,0.59l2.5,2.56l1.27,0.86l2.2,-1.44l3.52,-3.91l0.88,0.12l1.88,1.21l1.36,0.43l1.36,-0.19l1.64,-0.88l1.85,-0.54l0.89,-1.48l0.16,-0.68l-1.46,-3.81l0.41,-0.5l3.14,-0.9l2.77,-0.07l0.53,0.2l3.52,3.35l0.29,1.8l0.83,0.66l1.57,0.72l1.69,0.07l2.54,-0.77l1.17,-0.56l2.56,-1.73l1.42,-0.45l1.92,0.1l-1.26,0.29l-1.68,1.06l-1.69,2.48l-1.27,1.44l0.2,0.85l1.53,0.97l1.58,0.53l1.58,-0.44l0.4,0.12l0.46,0.56l0.33,1.12l-0.24,1.28l-0.81,1.31l-1.14,1.15l-0.08,0.45l0.17,0.37l0.29,0.23l1.09,0.19l4.66,-0.73l0.41,1.5l0.38,0.52l-0.07,0.28l-1.88,1.77l-0.05,0.52l0.51,0.13l2.27,-1.14l1.71,-0.31l3.01,0.56l1.14,0.59l0.69,1.09l0.47,0.16l1.26,-0.35l0.48,0.46l0.02,0.45l-0.47,0.93l-0.19,0.89l-1.5,0.63l-0.29,0.32l-0.05,0.48l1.16,1.48l1.0,0.19l-0.24,0.7l-1.16,0.7l0.08,0.68l2.27,1.05l0.19,0.64l-0.48,1.12l-0.53,0.32l-1.6,0.07l-1.19,0.49l-0.2,0.53l0.32,0.68l-0.02,0.83l-0.28,1.02l-1.26,1.62l-1.18,0.86l-1.1,0.53l-2.03,-0.19l-1.14,-0.44l-0.54,0.41l0.11,1.26l-1.04,0.78l-0.14,0.44l0.23,0.76l0.37,0.41l-0.15,0.69l-0.53,0.88l-0.9,0.98l-1.02,0.6l-2.25,0.82l-1.83,1.28l-1.16,0.47l-3.2,-0.01l-3.29,0.86l-4.61,1.78l-3.14,1.45l-2.41,1.63l-3.11,2.58l-2.25,1.06l-3.96,0.53l-2.17,0.7l-7.28,1.32l-2.51,0.73l-1.63,1.96l-0.06,0.36l0.49,0.61l-0.73,0.94l-1.63,0.77l-0.64,-0.01l-0.93,-0.66l-0.7,-0.05l-0.55,0.49l0.36,0.92l-5.26,1.22l-8.0,-0.75l-7.17,-2.03l-2.4,-0.34l-3.23,-0.08l-2.63,-1.67l-1.15,-0.98l0.22,-0.77l1.09,-0.13l0.43,-0.31l-0.0,-0.49l-0.69,-0.87l-0.47,-0.12l-2.39,1.47l-0.55,-0.03l-0.77,-0.45l-0.03,-0.38l-0.35,-0.37l-1.96,-0.22l-1.67,-0.71l-1.64,-1.01l0.52,-0.39l0.0,-0.65l-0.33,-0.19l-0.75,-0.1l-1.27,0.2l-2.05,1.39l-0.72,0.27l-12.47,0.31l-3.6,0.27l-0.35,-0.56l-0.64,-3.09l0.36,-0.95l0.82,0.55l0.68,0.93l0.97,0.46l4.37,-1.03l1.83,-0.71l0.87,-0.73l0.9,-1.12l0.98,-0.63l1.93,-3.05l1.4,-0.87l1.88,-0.27l0.34,-0.36l-0.28,-0.41l-1.27,-0.41l-1.34,-0.02l-4.22,1.83l-0.51,0.0l1.48,-0.95l0.18,-0.44l-0.36,-0.3l-0.82,-0.06l-0.17,-0.18l-0.03,-0.6l0.62,-1.17l3.21,-1.73l1.31,-0.36l0.35,-0.36l-0.06,-0.61l-0.57,-0.35l-0.99,-0.14l-3.34,1.84l-2.33,0.61l-0.58,-0.1l-1.19,-0.67l-0.77,-0.91l1.13,-1.61l0.02,-0.47l-0.19,-0.28l-0.99,-0.3l-2.11,-1.31l-3.64,0.07l-8.59,-0.77l-1.83,0.35l-2.86,1.14l-1.62,0.35l-0.63,-0.2l-0.64,-0.54l-1.11,-1.62l0.13,-0.38l1.65,-0.51l2.39,0.23l2.79,-0.72l2.34,-0.27l1.5,-0.94l1.31,0.76l2.88,-0.83l0.97,-0.41l0.45,-0.48l1.23,0.38l1.26,0.03l1.48,-0.31l8.37,-0.29l0.85,-0.67l0.53,-0.78l0.5,-1.5l-0.28,-0.67l-0.47,-0.14l-3.45,1.35l-4.68,-0.73l-1.02,-0.58l2.26,-1.62l2.19,-1.13l3.34,-1.27l0.77,-0.48l0.26,-0.86l-0.23,-0.42l-2.19,-1.02l-4.15,0.23l-1.15,-1.19l-3.44,-0.72l-2.3,0.42l-1.42,-0.69l-2.96,1.01l-6.52,1.47l-3.87,1.32l-1.54,-0.79l-2.78,-0.94l-3.0,-0.29l1.48,-1.5l1.08,-0.27l1.12,0.14l2.43,1.18l1.66,0.37l0.45,-0.21l-0.1,-0.48l-1.92,-1.6l-0.12,-1.55l-0.74,-0.65l-0.44,-0.83l0.57,-0.09l1.55,0.35l4.18,1.93l1.95,-0.34l1.18,-0.74l1.42,-0.51l0.08,-0.71l-0.41,-0.27l-3.61,-0.1l-1.73,-0.37l-0.81,-0.49l-0.57,-0.68l0.81,-0.36l2.86,0.1l0.39,-0.25l-0.11,-0.45l-3.2,-2.57l-0.08,-0.24l0.21,-0.7l3.27,0.93l0.74,0.04l0.39,-0.24l-0.1,-0.45l-0.68,-0.63l-1.26,-0.8Z", "name": "Iceland"}, "AL": {"path": "M613.48,601.02l0.69,0.32l0.52,-0.17l0.25,-0.48l-0.24,-1.33l-1.29,-2.46l-0.07,-0.51l0.6,-1.93l1.08,-2.45l-0.07,-2.75l0.32,-2.07l-0.52,-3.06l0.7,-2.05l0.66,-0.59l0.41,-0.71l0.08,-2.58l-0.16,-0.32l-1.48,-1.12l-1.53,-0.24l0.21,-3.06l-0.41,-0.98l-0.56,-0.62l1.45,-2.47l1.94,-2.42l1.45,-2.18l0.37,-0.18l0.14,1.73l0.35,0.61l0.46,0.34l1.33,-0.11l2.5,-1.0l0.4,0.28l1.06,1.54l0.73,1.4l1.64,0.67l0.76,0.51l0.98,0.79l0.44,0.74l0.69,2.49l0.08,1.45l-1.02,3.38l0.14,2.01l-0.48,0.33l-0.42,0.87l0.57,2.03l-0.01,2.05l1.13,2.44l1.16,1.07l0.79,2.19l0.74,0.47l1.68,-0.2l0.64,0.18l0.26,0.54l-0.07,1.35l0.98,1.82l-0.0,0.39l-0.97,1.82l-2.03,0.9l-1.22,2.51l-0.81,2.73l-0.5,0.4l-1.88,0.25l-0.78,0.29l-0.48,0.6l-0.87,0.53l-0.22,0.36l0.04,0.62l0.92,1.95l-0.59,-0.06l-0.36,0.16l-0.49,1.55l-0.64,0.55l-0.79,-0.1l-1.52,-0.78l-0.08,-1.2l-0.42,-1.14l-1.56,-2.8l-5.09,-2.79l-1.09,-1.11l-0.61,-1.18Z", "name": "Albania"}, "IT": {"path": "M460.72,503.99l1.78,-1.15l0.96,-1.1l0.84,-0.61l0.38,-0.01l0.0,2.36l0.39,0.92l2.52,2.32l2.27,0.58l-0.51,0.84l0.07,0.5l1.37,1.23l0.36,1.05l1.03,0.61l0.95,-0.26l0.54,-0.68l0.03,-0.36l-0.61,-1.7l0.04,-0.4l0.84,-1.33l1.79,-1.97l0.7,-1.22l0.17,-3.17l0.27,-0.16l1.28,0.23l0.68,1.99l0.92,0.97l1.6,0.19l2.15,-0.87l1.21,-0.34l0.5,0.07l1.26,1.94l0.98,0.35l0.85,-0.3l0.3,-0.66l-0.49,-1.87l-0.93,-1.88l0.56,-1.7l1.03,-0.25l1.08,0.92l1.23,0.3l1.03,-0.04l0.36,-0.29l0.12,-1.32l-0.53,-0.86l0.59,-2.76l2.77,0.16l0.85,0.81l1.18,0.42l2.32,-0.03l0.73,-0.56l1.38,-2.23l1.33,-0.6l3.78,-0.37l3.34,0.19l5.15,-1.58l-0.68,0.99l0.28,1.2l3.4,4.2l1.31,0.54l9.36,1.7l4.39,0.3l2.39,0.51l-0.11,0.38l-1.47,0.78l-2.25,1.68l-0.42,1.14l0.31,0.91l0.41,0.37l1.07,-0.01l1.62,0.59l-1.85,1.75l-0.19,0.73l0.11,0.54l0.43,0.44l1.22,0.01l-0.54,1.93l0.36,0.78l-0.38,0.09l-1.1,0.89l-3.31,-0.98l-0.32,0.04l-0.67,0.42l-0.59,0.9l-1.1,0.92l-1.64,0.43l-2.0,1.15l-3.31,1.29l0.7,-0.64l0.1,-0.43l-0.36,-0.26l-0.79,0.02l-1.93,0.95l-1.23,1.0l-0.67,3.49l0.17,0.39l0.74,0.51l1.39,2.73l1.66,1.19l-0.66,1.62l-0.77,0.56l-0.89,-0.5l-0.55,0.02l-0.38,0.31l-0.41,1.84l0.76,5.04l1.32,3.62l1.28,1.54l2.77,2.32l2.99,1.26l5.23,3.87l2.91,1.25l0.66,0.58l1.71,2.92l1.49,3.41l1.62,5.38l1.23,2.79l2.39,3.05l4.89,4.31l4.41,3.13l4.29,2.0l3.27,0.34l7.54,-0.42l1.24,0.17l1.16,0.43l0.24,0.98l-0.38,0.67l-1.55,0.92l-1.63,1.3l-0.33,2.04l0.14,0.35l1.61,1.3l7.32,3.29l7.47,2.74l2.27,1.37l2.76,2.21l6.43,2.94l1.11,1.44l3.92,3.08l1.71,2.29l0.3,1.65l-1.72,4.11l-1.31,-0.39l-1.79,-1.26l-2.84,-5.41l-0.31,-0.21l-5.22,-0.55l-1.02,-0.38l-1.67,-0.84l-0.59,-1.34l-0.79,-0.46l-2.02,-0.17l-1.65,0.95l-1.77,2.24l-1.89,3.09l-1.89,4.44l-0.14,1.92l1.31,2.14l3.02,0.95l2.29,1.49l1.42,1.46l0.11,3.72l0.65,2.1l-0.75,0.9l-1.95,-0.28l-2.66,0.79l-2.01,1.48l-0.94,1.69l0.2,3.43l-0.33,1.13l-3.55,2.53l-1.88,2.57l-1.09,2.11l-4.07,0.04l-0.87,-1.22l-0.03,-1.99l0.65,-1.15l1.75,-0.82l1.12,-2.85l-0.3,-2.11l0.54,-0.76l0.52,-0.55l2.91,-0.7l0.32,-0.37l0.18,-2.88l-0.12,-0.32l-1.31,-1.23l-1.14,-5.21l-2.28,-4.31l-1.22,-3.85l-0.99,-1.98l-1.82,-1.22l-2.59,0.01l-1.2,-0.26l-4.54,-2.64l-0.19,-0.24l0.02,-0.45l0.7,-0.99l0.05,-0.36l-1.08,-2.88l-1.08,-1.38l-1.28,-0.67l-2.82,0.66l-1.23,-0.09l-0.59,0.23l0.89,-1.13l-0.02,-0.51l-0.44,-0.49l-1.89,-0.99l-2.76,-0.23l-0.43,0.22l-0.03,-0.73l-2.55,-4.19l-1.92,-1.88l-1.09,-0.32l-1.46,0.34l-2.52,-0.72l-1.63,-0.18l-2.16,0.68l-0.35,-0.2l-0.31,-0.6l-2.37,-1.75l-2.99,-1.02l-5.69,-5.49l-1.76,-2.07l-3.66,-2.33l-2.37,-3.39l-1.97,-1.27l-2.74,-0.99l-2.14,0.48l0.62,-0.27l0.26,-0.45l-0.33,-1.49l-3.12,-3.34l-1.85,-1.11l-1.41,-2.23l-0.87,-0.34l-1.5,-0.12l0.22,-2.46l-0.17,-1.25l-0.99,-2.76l-1.72,-2.37l-1.03,-5.63l-0.93,-1.74l-1.9,-1.2l-4.34,-1.38l-5.95,-3.6l-1.39,-0.12l-3.64,-1.41l-2.23,-0.24l-3.23,1.38l-3.52,3.49l-2.85,3.6l-0.94,0.63l-3.61,1.2l-2.78,0.5l-0.11,-1.05l2.2,-2.66l0.39,-0.9l-0.55,-1.68l-0.32,-0.23l-0.64,-0.05l-3.01,0.66l-0.58,-0.14l-4.66,-2.31l-0.81,-0.82l-0.26,-0.71l0.2,-0.75l-0.61,-1.26l1.42,-2.43l0.7,-0.31l0.31,-0.46l-0.46,-2.18l-0.92,-0.78l-1.88,-0.41l-0.68,-0.51l-0.19,-0.83l-0.45,-0.83l-0.74,-0.76l-0.05,-0.42l0.54,-0.27l2.17,0.07l1.81,-1.29l1.33,-0.43l1.23,-2.96l-0.1,-0.39l-1.86,-1.65l-0.69,-1.33l-1.1,-1.51l-1.02,-0.7l-0.15,-0.86l0.13,-0.36l1.7,-0.84l0.93,-0.81l1.53,0.64l2.74,-0.55l2.8,-1.08l3.49,0.9l2.81,-1.61l1.89,-2.55l0.07,-0.89l-0.5,-0.93ZM518.47,542.68l-0.02,0.45l0.4,0.67l0.4,0.19l0.8,-0.12l0.3,-0.23l0.42,-1.12l-0.15,-0.61l-0.45,-0.3l-1.11,0.28l-0.6,0.79ZM536.34,512.54l1.58,1.41l0.32,0.86l-0.4,0.08l0.05,-0.55l-1.56,-1.8ZM561.64,634.95l-1.42,2.54l-3.32,4.46l-0.94,3.04l-0.89,2.07l0.22,2.17l1.35,1.25l-0.42,0.3l-0.08,0.57l1.5,1.71l0.07,0.48l-0.01,0.44l-2.03,1.93l-0.54,1.75l0.13,1.17l-1.05,-0.07l-1.49,-0.45l-1.61,0.18l-3.5,-1.28l-1.85,-2.71l-1.47,-1.15l-1.62,-0.93l-3.36,-0.01l-1.3,-0.5l-2.86,-1.83l-3.08,-1.49l-2.59,-2.04l-1.81,-0.46l-1.7,-1.03l-2.3,0.05l-1.38,-0.37l-1.44,-1.1l-1.12,-2.08l1.41,-3.4l1.55,-0.85l0.7,-0.8l1.24,1.47l1.07,0.59l0.85,-0.14l1.27,-0.67l0.29,-0.86l1.15,-0.77l1.62,-0.02l0.59,0.12l0.56,0.87l1.47,0.38l2.51,1.57l1.64,0.37l2.13,-0.69l1.45,-0.24l3.17,0.37l1.84,-0.4l1.18,-0.04l1.89,-0.65l1.42,-1.06l0.61,-0.22l4.5,0.21l0.95,-0.35l0.59,-0.62l0.55,-0.22l0.99,0.14l2.07,-1.12l1.04,0.08l-0.37,0.35ZM539.33,595.34l-0.19,0.04l-0.15,-0.08l0.02,-0.06l0.31,0.09ZM512.96,657.33l0.48,0.16l0.18,0.38l-0.64,-0.31l-0.02,-0.23ZM491.6,561.34l0.11,0.25l-0.27,0.63l-0.71,-0.33l-1.66,0.38l-0.75,-0.06l-0.12,-0.3l2.0,-0.33l0.9,0.09l0.5,-0.33ZM462.39,592.89l0.87,0.72l2.19,0.38l1.61,-0.28l1.72,-0.73l1.8,-0.98l2.33,-2.52l1.52,-0.57l0.76,-0.68l0.32,-0.92l0.17,-0.07l0.83,0.82l0.84,0.09l1.28,0.67l1.05,1.45l0.73,0.55l-0.54,1.02l0.07,0.46l1.06,0.81l0.61,0.92l1.5,4.14l0.13,0.78l-0.26,0.8l-1.93,2.99l0.22,1.75l0.56,1.14l0.07,1.06l-1.21,10.52l-0.69,2.78l-0.7,0.28l-2.83,-1.16l-0.97,0.01l-0.75,0.24l-1.03,-0.57l-0.63,0.27l-0.45,3.03l-0.67,1.12l-0.99,0.69l-0.92,0.04l-1.97,-0.27l-0.55,-0.46l-2.33,-3.7l-0.25,-4.19l0.64,-1.31l0.19,-1.35l-0.1,-1.03l0.53,0.16l0.4,-0.16l0.25,-0.39l0.1,-1.66l-0.78,-1.22l-1.15,-0.39l0.02,-1.42l0.64,-0.73l0.21,-0.85l0.02,-2.69l-0.87,-1.15l-0.3,-1.35l-0.52,-1.1l-2.13,-2.32l-0.11,-1.75l0.39,-1.75ZM464.42,621.63l0.71,0.35l-0.34,0.68l-0.36,-0.48l-0.02,-0.54ZM462.96,589.81l0.1,-0.19l0.15,-0.08l-0.06,0.11l-0.19,0.16Z", "name": "Italy"}, "GG": {"path": "M315.47,448.51l0.52,-0.25l-0.15,0.36l-0.37,-0.12Z", "name": "Guernsey"}, "CZ": {"path": "M515.02,433.92l1.19,1.02l0.6,1.08l0.65,0.07l1.12,-1.65l1.21,-1.29l1.17,-0.7l2.1,-0.28l0.78,-0.37l2.52,0.38l0.49,-0.33l0.61,-1.16l2.02,-0.32l0.92,-1.17l0.85,-0.2l0.76,-0.56l0.75,0.3l0.81,-0.32l0.83,-1.4l0.23,-0.12l1.96,-0.22l2.67,-0.8l4.14,-1.8l2.24,-0.66l0.37,-0.51l-0.15,-0.48l-1.0,-0.66l-0.39,-0.55l0.14,-0.19l2.98,0.56l0.21,0.67l0.75,0.81l-0.09,0.68l0.17,0.38l0.69,0.46l1.07,0.34l0.83,-0.18l0.54,-0.62l1.07,-0.06l1.18,-0.45l0.25,-0.32l0.04,-1.87l2.95,0.83l0.28,1.28l1.19,1.4l0.71,0.32l0.89,0.04l2.39,0.79l1.19,0.17l2.13,1.08l0.68,0.13l0.78,0.97l0.42,0.08l0.76,-0.31l2.74,-0.43l0.9,0.52l0.57,0.52l-0.42,0.79l-1.24,0.53l-0.57,0.5l-0.47,0.61l-0.03,0.43l0.46,0.7l1.33,0.49l2.03,2.0l1.45,2.2l0.85,0.53l0.79,0.04l0.72,-0.4l0.69,-0.69l2.79,-1.37l0.22,-0.31l-0.02,-0.68l-1.44,-2.28l3.1,0.77l3.73,2.23l1.99,-0.18l1.8,-0.62l0.13,0.75l-0.22,0.41l-1.49,0.59l-0.24,0.49l0.62,0.9l0.8,0.34l2.0,2.05l0.71,0.26l1.73,-0.47l0.64,-0.55l0.67,0.66l1.38,0.48l1.35,0.89l0.83,-0.21l2.07,0.44l0.44,0.29l0.05,0.96l0.35,1.06l2.9,2.63l0.27,1.24l-0.78,0.26l-2.19,0.09l-2.55,1.84l-0.7,0.94l-2.65,1.33l-0.88,1.57l-0.32,1.96l-0.32,0.34l-1.86,0.68l-0.38,0.57l-1.71,1.36l-1.71,0.77l-1.83,0.23l-3.9,-0.57l-0.98,0.38l-1.15,1.21l-1.28,2.46l-0.71,-1.3l-2.27,-0.52l-2.33,-1.09l-1.21,-0.03l-1.45,1.01l-3.92,-0.26l-3.07,-1.87l-1.85,0.01l-3.92,-1.65l-1.33,-0.32l-1.92,0.46l-0.31,-0.35l-0.99,-0.5l-1.15,-0.1l-0.71,0.65l-0.56,3.35l-1.36,0.07l-1.6,1.82l-0.23,1.07l-2.5,-0.4l-0.95,0.24l-0.75,0.61l-2.23,-0.04l-1.69,-0.37l-0.86,-1.54l-2.34,-1.31l-0.59,-0.81l-3.04,-2.53l-1.58,-0.02l-0.34,-0.24l-0.83,-1.41l-0.74,-0.71l-0.92,-0.32l-1.09,-0.75l-1.55,-1.75l-1.49,-1.28l-1.53,-0.08l-1.63,-1.37l-0.62,-0.77l-1.79,-3.14l-1.35,-1.5l1.34,-1.87l0.24,-0.61l-0.08,-0.55l-0.82,-1.14l-2.46,-1.54l-0.83,-0.87l-0.4,-1.25l-0.7,-0.82l-0.44,-1.1Z", "name": "Czech Republic"}, "CY": {"path": "M794.04,683.04l0.24,0.41l0.92,0.48l1.16,0.41l0.8,0.05l3.69,-1.29l0.77,0.23l1.78,-0.07l0.67,0.66l0.1,1.37l0.4,0.41l0.42,-0.07l0.53,-0.46l2.08,0.26l1.62,-0.48l0.92,-0.61l1.06,0.48l0.57,-0.04l0.2,0.42l-2.51,0.25l-1.71,-0.06l-2.73,2.59l-1.27,0.8l-1.53,0.49l-2.52,0.36l-0.72,0.32l-0.65,0.68l-0.17,0.87l-0.38,-0.04l-0.44,-0.88l-0.64,-0.39l-2.5,0.12l-3.11,-1.14l-1.67,-3.23l-0.14,-1.25l0.94,0.23l1.22,-0.68l1.03,-0.95l1.12,-0.35l0.47,0.1Z", "name": "Cyprus"}, "GB": {"path": "M268.15,314.94l0.76,-0.51l2.22,-0.36l1.99,-1.42l-0.04,-0.68l-1.33,-0.72l1.39,-0.78l1.97,-2.75l0.47,-2.7l-1.51,-2.4l-1.71,-0.79l-0.23,-0.82l0.15,-0.42l0.5,-0.5l2.26,-0.88l0.28,-0.37l-0.26,-0.39l-1.22,-0.45l-0.39,-0.45l-0.34,-1.05l0.65,-2.06l1.01,-1.76l3.3,0.06l0.77,-0.52l1.74,0.44l0.45,-0.58l-0.35,-0.6l-3.02,-2.91l0.78,-1.43l0.07,-1.57l0.7,-0.19l2.79,0.02l0.84,-0.27l0.23,-0.54l-0.97,-1.62l-0.1,-0.61l0.29,-2.53l0.57,-0.77l0.99,-0.34l1.4,0.28l0.47,0.29l0.64,0.82l0.37,0.15l0.63,-0.11l2.18,-1.0l0.64,0.89l0.43,0.15l3.29,-0.87l4.43,-0.39l2.7,-0.58l2.8,-0.21l2.64,-0.65l2.45,0.26l-0.8,1.82l-0.05,2.13l-1.24,1.58l-2.68,1.6l-4.92,3.69l-3.05,1.99l-0.43,0.98l-0.22,1.22l0.34,0.47l1.91,0.38l-2.81,2.5l-0.76,1.94l0.39,0.55l1.98,-0.07l1.71,-0.38l6.29,-2.1l1.36,-0.04l3.54,0.74l1.29,-0.33l1.17,-0.06l8.29,0.22l2.29,-0.41l1.34,0.44l1.17,1.15l1.11,2.32l-0.65,0.94l-1.38,1.36l-1.17,1.82l-0.97,3.09l-2.28,4.57l-2.22,2.52l-1.04,1.85l-1.19,1.38l-1.13,0.86l-1.19,0.56l-3.73,0.67l-2.27,1.26l-1.24,0.38l-0.28,0.45l0.41,0.33l1.52,-0.05l1.56,-0.45l2.59,-0.15l2.77,1.34l-0.19,0.79l-1.06,0.82l-2.98,0.24l-2.66,2.16l-1.14,0.63l-1.17,0.3l-1.51,-0.09l-2.84,-0.57l-1.23,-0.59l-0.51,0.14l0.07,0.52l1.15,1.0l1.42,0.59l7.67,1.25l0.71,-0.17l2.33,-1.25l3.05,-0.02l5.98,2.32l4.24,4.35l2.33,1.89l0.57,1.27l2.55,8.93l1.78,4.76l0.84,1.39l1.25,1.09l5.33,2.11l1.12,0.66l4.06,4.18l1.87,1.66l1.58,1.06l-0.61,0.48l-0.71,1.43l0.53,1.56l3.18,5.0l-1.41,-0.05l-2.86,-1.74l-2.54,0.37l-2.7,-0.14l-0.39,0.36l0.31,0.43l2.37,0.55l2.55,0.05l5.58,4.04l1.86,2.36l1.07,3.0l-0.66,1.22l-2.32,1.99l-1.09,1.24l0.11,0.61l3.4,1.83l1.62,-0.4l2.3,-2.51l1.81,-0.17l3.23,0.43l1.5,-0.09l2.84,0.61l1.43,0.54l3.61,2.48l0.73,1.27l0.35,1.71l0.04,1.89l-1.31,3.37l-0.74,2.85l-2.29,2.13l-1.08,0.57l-0.58,-0.25l-0.59,0.04l-0.37,0.34l0.01,0.7l0.55,0.75l0.0,0.68l-0.93,0.61l-1.03,0.28l-2.15,-0.35l-2.75,1.41l0.04,0.73l1.83,0.67l0.25,0.48l-0.38,1.04l-1.05,0.51l-2.77,0.33l-1.17,0.33l-1.21,0.68l-0.17,0.49l0.47,0.24l1.3,-0.31l0.72,0.22l0.53,0.99l0.71,0.48l2.88,0.54l5.07,-0.27l1.73,0.09l-0.22,2.81l-0.29,0.32l-4.28,1.91l-1.06,1.5l-0.21,0.62l-2.49,-0.05l-1.14,0.82l-2.03,0.57l-3.14,1.37l-1.16,0.21l-5.55,-0.91l-3.41,0.08l-4.48,0.79l-1.05,-0.12l-3.54,-1.28l-2.08,-0.23l-1.73,-0.69l-0.47,0.14l0.01,0.49l0.8,0.98l-1.99,1.06l-4.61,0.55l-2.19,-0.18l-0.41,0.53l0.75,1.52l-0.44,0.12l-4.2,-0.6l-0.74,0.12l-0.59,0.52l-1.26,-0.25l-1.51,-0.95l-1.68,-0.66l-1.68,-0.3l-1.51,0.11l-5.71,1.65l-1.16,1.64l-0.54,2.11l-0.76,1.8l-1.15,1.29l-1.24,0.15l-1.4,-0.96l-2.7,-1.09l-0.89,-0.71l-0.49,-0.13l-1.51,0.61l-2.85,0.32l-3.11,0.94l-3.9,2.36l-0.62,0.57l-0.86,1.54l-1.08,0.22l-1.33,-1.05l-1.51,-0.38l-1.78,0.37l-0.8,0.46l-0.13,-0.77l0.97,-0.96l3.15,-0.92l2.75,-2.3l1.87,-2.16l0.53,-0.4l1.04,-0.38l0.41,-0.8l3.82,-3.57l0.34,-0.89l0.44,-2.54l3.09,-1.03l1.42,-2.79l4.41,-0.65l3.12,0.04l3.18,0.57l1.68,0.05l1.79,-0.25l1.38,-0.88l2.17,-2.81l3.94,-3.66l2.13,-2.39l0.01,-0.52l-0.51,-0.1l-1.44,0.82l-2.73,2.04l-3.23,0.78l-4.11,2.62l-3.45,-0.4l-2.63,-2.2l-1.94,-1.02l-0.92,-0.09l-2.22,0.53l-0.78,-0.02l0.28,-0.36l1.05,-0.55l0.21,-0.42l-0.33,-0.33l-2.46,-0.4l-1.59,-1.07l-1.97,-0.13l-1.04,0.2l-1.69,1.01l-2.31,0.96l-2.79,-1.33l-0.43,-0.46l-0.02,-1.23l-0.45,-0.97l-0.54,-0.33l0.67,-0.79l1.19,-0.78l2.84,-0.84l4.29,-1.97l2.4,-0.84l2.33,-1.5l1.06,-1.03l1.34,-2.7l0.92,-1.18l-0.2,-0.63l-0.75,-0.24l-0.29,-0.65l0.5,-1.84l-1.03,-2.09l0.21,-1.57l-0.4,-0.48l-3.51,0.34l-3.15,1.52l-0.81,0.1l0.49,-0.83l3.19,-2.29l1.04,-1.67l0.73,-0.65l2.07,-1.33l4.53,-1.59l1.66,0.17l1.58,-0.23l1.42,-0.56l1.2,-0.1l3.0,1.55l0.45,-0.06l0.11,-0.44l-0.79,-2.12l0.75,-0.33l1.97,2.14l0.94,0.25l1.56,-0.32l0.31,-0.32l-0.18,-0.41l-0.6,-0.38l-1.62,-0.37l-0.67,-0.62l-1.2,-2.13l0.06,-1.14l1.75,-2.6l-0.2,-0.62l-1.2,-0.59l-0.15,-1.07l0.2,-0.91l1.75,-1.15l0.53,-1.62l0.19,-1.89l-0.29,-0.78l-0.41,-0.26l-1.82,0.15l-1.55,0.79l-0.49,-0.02l-1.98,-1.77l-3.27,-4.34l-0.27,-1.6l1.65,-3.73l2.54,-2.39l3.05,-0.85l0.29,-0.39l-0.29,-0.39l-0.71,-0.18l-4.79,-0.03l-1.66,0.32l-1.58,1.06l-1.72,0.45l-2.24,1.6l-2.19,0.01l-1.01,-1.05l-0.84,-0.18l-3.47,1.62l-3.9,-1.59l-0.43,0.06l-0.55,0.51l-0.51,1.0l-0.21,1.0l-1.09,-0.89l-1.34,-1.73l-0.42,-1.02l-0.03,-0.98l0.37,-0.24l0.61,0.34l0.56,-0.2l1.22,-3.01l3.27,-5.08l0.68,-1.8l-0.1,-1.0l-0.6,-1.02l-2.21,-1.89l0.26,-3.02l0.63,-1.0l2.88,0.03l0.39,-0.31l-0.22,-0.45l-1.15,-0.53l-2.13,-1.45l0.55,-1.71l-0.12,-0.45l-0.46,-0.04l-0.88,0.94l-0.94,1.61l-0.45,0.3l-1.59,0.38l-0.28,0.25l-0.26,0.71l-1.04,0.34l-0.02,-1.11l0.3,-1.14l0.57,-0.88l2.4,-2.2l0.05,-0.53l-0.52,-0.11l-1.23,0.72l-2.72,2.09l-1.84,1.98l-0.11,1.04l0.6,2.29l-0.16,0.98l-2.29,7.16l-0.67,0.9l-1.14,-0.06l-0.3,-0.32l0.0,-0.41l1.15,-4.26l0.39,-0.89l1.93,-2.38l0.08,-0.39l-0.54,-0.36l-0.8,0.27l-0.24,-0.14l0.17,-4.38l0.74,-1.58l0.27,-2.18l1.9,-4.94l0.89,-0.94l0.21,-1.12l1.66,-2.66l-0.05,-0.45l-0.43,-0.12l-0.51,0.2l-4.68,3.56l-1.06,0.58l-1.47,-0.16l-1.13,-0.36l-0.82,-0.71l-0.4,-1.51l-0.37,-0.3l-1.52,-0.14ZM339.59,233.48l0.13,0.14l-0.7,2.04l-0.53,-0.03l-0.18,-0.83l0.12,-0.91l0.74,-0.02l0.42,-0.4ZM336.19,239.14l-0.93,-1.46l0.79,-1.93l0.63,0.04l0.08,0.26l-0.75,0.66l0.18,2.42ZM329.81,239.86l0.8,-0.37l1.06,-1.32l0.87,-0.15l-0.06,1.13l0.28,1.44l0.58,0.28l0.4,-0.21l0.85,1.11l0.32,0.16l0.92,-0.16l-1.6,5.89l-0.26,2.06l-0.62,0.77l-0.43,1.4l-0.23,-0.2l1.02,-3.91l-0.25,-1.08l-0.43,-0.71l-0.33,-0.19l-1.17,-0.02l-0.79,0.24l-0.04,-0.52l-0.39,-0.48l-1.48,-0.05l-0.32,-0.39l0.78,-0.21l1.26,0.07l1.63,-0.82l0.19,-0.49l-1.02,-2.77l-0.3,-0.25l-1.22,-0.24ZM330.39,426.85l1.55,-0.47l0.95,-0.66l2.03,0.61l0.51,0.38l-0.75,0.49l-0.48,0.83l-0.59,0.15l-0.6,0.0l-2.6,-1.33ZM315.95,265.12l-0.68,0.01l0.29,-0.44l0.72,-0.23l0.87,0.07l-1.2,0.59ZM309.8,263.74l0.37,-0.11l1.34,1.02l-1.51,-0.67l-0.2,-0.25ZM312.25,265.65l1.03,0.29l-0.03,0.18l-0.75,0.32l-0.18,-0.15l-0.06,-0.64ZM308.85,269.28l-0.26,0.62l0.38,0.54l0.97,-0.01l2.32,0.46l0.39,0.27l-0.24,0.56l-0.56,0.19l-1.93,-0.96l-2.24,0.39l-0.45,-0.22l-0.26,-1.2l-0.58,-0.1l-0.7,0.53l-0.1,-0.1l0.01,-1.32l0.41,-1.09l0.57,-0.18l1.09,0.13l1.3,0.68l0.27,0.34l-0.41,0.45ZM310.59,274.73l-0.03,-0.02l-0.47,-0.75l0.7,-0.11l-0.21,0.88ZM306.77,274.1l-0.45,-0.01l-1.04,-1.0l-0.33,-0.85l1.05,0.14l0.78,1.72ZM293.4,379.3l0.66,0.42l0.9,0.03l-3.55,2.22l-0.41,-0.54l-0.84,-0.13l-0.91,-1.28l-0.16,-1.93l1.09,-0.46l1.73,0.03l1.49,1.64ZM281.03,338.84l-1.32,0.01l-1.07,-0.49l-0.75,-2.35l0.24,-0.74l0.54,-0.62l0.65,-0.11l0.96,0.74l0.71,1.66l0.05,1.88ZM243.78,353.56l1.04,-0.15l1.03,0.12l2.55,-1.09l1.48,-2.17l0.71,-2.43l0.24,-0.34l1.78,-1.01l0.58,0.54l1.34,0.1l1.08,-0.74l1.04,-1.76l1.47,0.06l1.71,-0.24l3.04,-0.9l1.25,-0.01l1.86,0.46l1.35,0.0l1.09,1.18l0.71,2.2l1.58,2.14l2.0,1.81l0.06,0.77l-2.05,1.18l-0.22,0.36l0.01,0.81l0.55,0.37l1.78,-0.56l1.9,0.16l0.59,0.65l0.71,2.04l-0.07,0.41l-0.62,-0.99l-1.5,-0.75l-0.51,0.48l0.32,1.28l-0.13,1.73l0.21,0.38l0.95,0.23l-0.41,1.14l-3.01,0.79l-1.46,2.65l-0.91,0.58l-1.17,-0.12l-1.4,-0.56l-1.16,-0.11l-1.47,0.62l-2.99,0.05l0.16,-1.49l-0.39,-0.71l-1.48,-0.34l-0.36,-0.26l-0.68,-0.91l-0.33,-1.22l-0.88,-0.91l-1.16,-0.67l-0.85,0.07l-2.1,2.02l-0.04,0.49l0.49,0.85l-1.8,1.33l-0.45,0.53l-0.73,-0.26l-1.78,0.07l-0.7,-0.16l-1.07,-0.82l-2.16,-0.48l-0.53,-1.29l-3.04,-2.34l-0.21,-0.43l1.07,-0.79l3.35,-1.09l0.67,-0.52l0.24,-0.59l-0.22,-0.47l-1.93,-1.02ZM261.43,298.81l2.77,-0.68l0.29,-0.3l0.22,-0.97l0.3,-0.04l0.62,0.31l0.98,1.15l0.26,1.42l-0.24,1.95l0.37,1.77l0.24,0.33l1.02,0.63l2.54,0.4l2.31,-0.1l0.21,0.31l-3.17,2.99l-0.35,0.25l-0.38,-0.02l-0.24,-2.65l-0.48,-0.35l-1.69,0.36l-1.27,-0.04l-0.61,-0.28l-1.79,-2.5l-3.04,-0.66l-0.76,-0.83l-0.17,-0.38l0.46,-0.56l0.82,0.18l0.51,-0.16l0.48,-0.43l0.11,-0.55l-0.29,-0.54ZM269.34,332.0l-0.57,-0.07l-0.12,-1.03l0.29,-0.43l1.67,-0.89l-0.03,-0.72l-0.51,-0.21l0.28,-0.48l1.95,-1.22l-0.68,1.5l-2.29,3.56ZM271.87,321.81l-5.06,1.0l-1.54,-0.08l1.53,-0.44l0.3,-0.3l0.62,-2.57l-0.21,-0.45l-2.19,-1.11l0.09,-0.39l1.46,-0.69l0.8,-0.06l0.87,0.6l1.09,1.4l1.68,0.37l0.74,0.44l-0.19,2.27ZM263.06,333.89l0.29,-1.39l0.53,-0.68l0.58,-0.27l0.32,0.24l0.47,0.0l1.95,-1.18l0.87,3.48l0.02,0.34l-0.31,0.5l-2.16,0.88l0.34,-0.95l-0.39,-0.99l0.18,-0.72l-0.36,-0.57l-0.93,0.13l-1.39,1.16ZM255.41,289.78l0.69,-0.49l-0.15,-0.72l-1.04,-0.51l-0.13,-0.82l0.1,-0.64l0.69,-0.72l0.6,0.15l0.79,0.64l0.35,0.08l0.93,-0.25l1.09,0.12l0.46,-0.5l-0.77,-1.87l6.87,-3.75l0.3,0.92l-0.05,1.26l-1.59,3.18l-0.74,0.23l-0.54,0.78l-1.75,0.9l-0.21,0.45l0.38,0.31l1.48,0.02l0.19,0.46l-0.19,0.24l-1.99,1.51l-1.52,0.67l-1.42,1.52l-0.92,0.18l-0.73,0.99l-0.48,0.34l-0.38,-0.15l-0.57,-0.61l1.29,-0.75l0.3,-0.63l1.03,-0.51l0.17,-0.55l-0.29,-0.36l-2.26,-1.13ZM265.16,309.88l-0.49,0.1l-0.68,-0.67l0.84,-0.35l0.47,0.45l-0.13,0.47ZM261.42,316.68l0.29,-0.28l0.09,-0.02l-0.03,0.04l-0.35,0.26ZM249.11,297.53l0.35,-0.38l1.04,0.14l0.81,-0.31l0.88,0.05l0.67,-0.37l1.01,0.73l-0.88,1.33l-1.56,-0.01l-2.31,-1.17ZM251.9,306.91l-0.8,-0.04l-0.28,-0.18l-0.4,-1.03l0.09,-3.19l1.15,0.03l0.25,4.42ZM248.75,309.98l0.12,-0.28l0.57,-0.15l0.37,0.2l-1.06,0.23Z", "name": "United Kingdom"}, "IM": {"path": "M286.48,364.63l0.75,-2.12l1.13,-0.81l1.38,-1.97l0.93,-0.46l0.23,0.08l0.45,1.97l-0.6,0.66l-0.31,0.78l-2.48,2.14l-0.89,-0.34l-0.59,0.07Z", "name": "Isle of Man"}, "AT": {"path": "M481.0,482.58l0.71,0.01l1.26,-0.76l2.73,1.11l1.06,0.84l0.22,1.08l0.57,0.29l0.97,0.14l-0.16,1.17l0.45,0.42l0.92,-0.13l0.98,-0.5l0.89,-1.0l0.56,-1.07l0.32,-1.9l2.68,-0.0l1.17,0.4l1.39,0.05l0.35,0.68l1.21,1.28l1.22,0.23l1.88,-0.49l0.4,0.14l1.17,-0.19l1.17,-0.66l0.33,-0.47l2.34,-1.04l1.86,-0.56l6.32,-0.62l0.56,-0.68l-0.02,-0.91l1.71,0.39l1.72,0.89l0.75,-0.01l1.97,-0.53l0.93,0.41l0.14,0.23l-0.1,0.78l0.54,0.69l2.21,1.18l0.81,-0.01l0.34,-0.23l0.26,-0.61l0.29,-2.74l-0.54,-1.0l-1.45,-0.25l0.66,-1.25l-0.01,-1.43l-2.62,-3.34l0.0,-0.26l0.61,-0.78l3.51,-1.91l3.25,-0.97l0.81,-0.58l0.62,-0.8l0.74,-2.89l2.33,0.93l1.08,-0.42l0.94,-0.96l0.2,-0.72l0.05,-2.03l1.82,1.08l1.04,1.69l1.99,0.43l2.41,0.04l1.04,-0.73l0.6,-0.12l2.7,0.45l0.45,-0.33l0.19,-1.16l1.34,-1.55l1.2,0.04l0.39,-0.27l0.35,-1.06l0.39,-2.67l0.73,0.04l1.42,0.91l2.0,-0.47l1.12,0.26l4.05,1.69l1.7,-0.05l3.21,1.91l2.2,0.27l2.05,0.01l1.59,-1.06l1.42,0.28l1.56,0.85l2.14,0.49l0.79,1.59l-0.07,0.6l-1.06,1.86l0.03,1.3l1.48,3.33l1.26,1.95l0.23,0.71l0.58,0.5l-0.55,0.63l-0.13,0.95l-0.53,0.59l-0.13,0.62l0.38,2.0l-2.83,0.16l-0.51,0.24l-1.61,-0.95l-1.03,-0.27l-0.78,0.17l-1.67,1.19l-0.17,0.52l0.4,0.53l2.63,0.76l0.36,0.9l-0.61,1.28l-1.24,0.62l-0.91,0.08l-0.36,0.32l-0.11,0.73l0.34,1.42l-0.57,1.05l0.29,1.33l0.33,0.31l0.38,0.06l-0.38,1.52l-0.2,0.17l-1.36,-0.04l-1.08,0.52l-2.2,1.87l-0.81,0.36l-0.95,1.05l-0.06,1.65l-2.43,-0.52l-1.83,0.22l-1.3,0.78l-1.31,0.39l-3.01,-0.22l-2.94,0.29l-1.48,0.35l-0.86,0.49l-1.18,1.41l-2.07,1.02l-0.51,0.54l-1.7,-0.42l-4.3,-0.57l-3.66,-0.84l-1.21,-0.06l-3.4,-0.7l-4.38,-0.3l-9.29,-1.69l-1.1,-0.46l-1.58,-2.21l-1.49,-1.64l-0.22,-0.59l0.9,-1.44l-0.32,-0.53l-0.38,-0.12l-2.94,0.72l-2.6,0.91l-3.29,-0.2l-4.01,0.41l-1.66,0.81l-1.47,2.36l-0.28,0.22l-0.74,0.11l-1.24,-0.09l-0.81,-0.27l-1.13,-0.95l-2.83,-0.17l-0.03,-0.51l-0.54,-1.11l-1.1,-0.55l-0.42,0.08l-2.23,2.03l-0.42,0.12l-1.7,-0.53l-1.43,-0.79l-0.64,-1.3l-3.07,-0.87l0.13,-0.58l-0.74,-1.34l-0.33,-1.34l1.01,-1.91l0.27,-1.41l-0.15,-0.38l-0.45,-0.35Z", "name": "Austria"}, "NL": {"path": "M408.11,413.92l-1.22,-0.28l-1.76,-0.74l-2.63,0.56l-1.62,-0.68l-1.47,-0.1l-1.43,-1.16l0.86,-0.49l2.54,-0.12l1.81,0.37l3.4,2.1l1.09,0.04l1.03,-0.28l0.2,-0.64l-0.47,-0.58l-2.47,-1.12l1.44,-0.15l0.27,-0.65l-0.68,-1.17l-2.31,-2.26l1.63,-2.96l1.7,-1.22l2.27,-2.5l1.52,-2.15l1.1,-2.5l1.57,-6.68l1.04,-2.07l1.58,0.52l2.35,-0.96l4.09,-2.53l1.29,-2.25l1.06,-0.92l4.54,-1.93l2.49,-0.57l10.02,-0.62l2.06,2.07l1.3,0.52l1.54,0.27l-0.08,4.83l-0.97,1.98l-0.9,2.61l-0.24,1.67l-3.48,0.08l-0.91,0.62l0.09,0.93l-0.34,0.86l0.25,0.74l0.62,0.64l1.41,0.52l1.71,-0.01l0.65,0.86l-0.19,1.84l-0.5,0.96l-1.57,1.2l-1.5,0.72l-0.42,0.48l-0.14,0.98l1.13,1.12l-0.6,0.77l-2.87,0.97l-1.44,-0.0l-0.68,0.49l-0.71,-0.41l-2.0,-0.55l-2.28,0.91l-0.8,0.57l-0.17,0.32l0.08,0.97l1.84,2.22l0.1,0.74l1.31,1.88l0.06,0.56l-0.41,1.55l-1.26,2.5l0.11,0.92l0.53,0.33l-2.24,1.64l-0.78,-0.07l-0.53,0.48l0.1,0.74l0.47,0.55l1.53,0.64l0.41,0.58l-0.61,2.28l-2.95,-0.15l-0.55,-0.2l-0.58,-0.97l1.24,-1.33l0.21,-1.07l0.91,-1.71l0.16,-0.82l-0.5,-0.82l-0.8,-0.42l-1.87,-0.5l-0.81,-0.64l-0.39,-0.59l-0.61,-0.33l-2.38,0.42l-1.15,-0.3l-1.39,-1.09l-0.5,-1.77l-0.54,-0.52l-0.49,0.01l-1.11,1.02l-1.05,0.07l-0.27,-0.74l-0.84,-0.78l-0.46,0.02l-1.54,1.17l-0.36,-0.0l-0.96,-0.8l-0.43,-0.13l-0.97,0.33l-0.76,0.58l-0.15,0.41l0.17,0.79l-0.77,-0.08l-1.01,-0.43ZM416.5,383.47l-1.03,1.0l-0.51,-0.26l0.29,-0.71l1.25,-1.07l-0.0,1.04ZM407.31,414.89l-0.37,0.52l-1.7,1.02l-1.75,0.66l-0.79,-0.07l-1.0,-0.74l-1.0,-0.37l-1.46,-0.21l-1.62,0.77l-0.28,-0.03l-0.5,-0.59l-0.29,-1.12l2.71,-0.27l1.73,0.54l2.26,0.26l1.77,-0.71l1.2,0.56l1.09,-0.22ZM401.26,408.39l0.8,-0.2l1.99,0.12l1.27,0.97l-1.02,0.24l-1.65,-1.11l-1.25,0.17l-0.14,-0.18Z", "name": "Netherlands"}, "AD": {"path": "M373.44,566.17l-1.46,0.73l-1.49,0.29l-0.26,-1.45l0.13,-0.56l0.71,-0.55l2.52,0.57l0.23,0.31l-0.38,0.67Z", "name": "Andorra"}, "IE": {"path": "M245.03,355.16l-0.33,0.27l-3.42,1.12l-1.01,0.66l-0.44,0.52l-0.05,0.43l0.47,0.87l3.09,2.41l0.35,1.12l0.29,0.27l2.3,0.51l1.07,0.82l0.95,0.2l1.74,-0.07l1.0,0.25l2.79,-2.26l0.09,-0.46l-0.49,-0.95l1.71,-1.63l0.3,0.02l0.84,0.52l0.68,0.72l0.25,1.06l0.9,1.22l0.66,0.42l1.26,0.31l-0.18,1.51l0.2,0.49l0.36,0.25l3.32,-0.04l1.44,-0.63l0.91,0.09l0.42,0.48l0.07,0.19l-0.49,0.12l-1.28,-0.03l-0.65,0.73l-0.03,0.85l0.37,1.24l0.72,0.86l0.99,3.59l0.72,1.21l0.15,3.22l-0.29,0.63l1.44,5.06l0.23,2.86l-1.36,2.13l-0.52,1.27l-0.43,1.48l-0.23,2.1l-1.65,2.45l-0.66,0.57l-0.81,0.37l-0.11,0.65l1.47,1.41l-0.98,0.51l-1.53,0.23l-1.77,-0.43l-1.27,0.04l-1.49,0.84l-0.62,-1.32l-0.39,-0.23l-0.36,0.27l-0.45,1.35l-0.82,0.37l-1.8,-0.09l-3.05,0.4l-1.26,0.45l-1.41,1.96l-3.3,1.03l-1.16,1.3l-1.31,0.67l-0.96,0.18l-1.89,-1.34l-1.79,-0.0l-0.38,0.32l0.85,0.97l0.14,0.84l-0.14,0.73l-0.57,0.35l-1.04,0.15l-1.42,0.95l-1.89,0.26l-1.2,0.96l-6.42,1.53l-2.25,-0.55l-1.05,0.14l-2.66,0.85l-0.55,-0.07l1.21,-1.55l2.34,-1.17l0.24,-0.3l-0.24,-0.64l-0.89,-0.15l-4.33,0.76l-2.09,0.72l2.01,-1.51l1.75,-0.96l0.67,-0.74l1.97,-0.87l0.21,-0.5l-0.49,-0.25l-6.51,1.85l-1.48,-0.2l-0.69,-0.54l-1.03,0.19l-0.29,-0.71l1.78,-1.71l1.09,-0.77l2.7,-1.09l0.66,-0.93l-0.19,-0.58l-0.79,-0.28l-3.96,0.2l-1.45,-0.13l0.29,-0.66l1.81,-1.08l0.94,-0.17l0.86,0.1l1.81,0.7l2.24,-0.23l0.34,-0.28l-0.13,-0.43l-0.81,-0.65l-0.15,-1.37l-0.45,-0.48l1.55,-0.82l1.69,-1.42l3.96,-0.54l3.73,-0.77l3.73,-1.08l0.29,-0.38l-0.28,-0.39l-1.82,-0.57l-0.85,-0.74l-0.56,0.03l-1.42,1.55l-0.93,0.54l-2.83,0.31l-2.44,-0.63l-0.85,0.59l-2.09,0.75l3.98,-3.0l0.75,-0.85l0.97,-1.34l0.03,-0.41l-0.3,-0.6l-0.37,-0.28l1.87,-2.34l0.63,-0.41l1.31,-0.07l2.03,-0.63l1.03,-0.9l-0.13,-0.67l-1.4,-0.53l-1.52,-0.29l-5.04,0.23l-0.67,-0.44l-0.24,-0.84l-0.5,-0.44l-1.23,-0.06l-1.05,0.29l-0.66,-0.1l0.68,-0.6l-0.2,-0.69l-1.41,-0.23l-1.46,0.18l-0.83,-0.2l0.42,-0.63l-0.05,-0.58l-0.59,-0.48l-0.06,-0.28l0.36,-0.17l0.88,0.09l1.63,-0.53l2.1,-0.26l0.35,-0.37l-0.29,-0.42l-1.78,-0.51l-0.51,-0.31l0.06,-0.78l1.91,-0.9l2.21,-0.43l0.31,-0.49l-0.14,-0.57l0.14,-0.63l-0.35,-0.48l-2.29,-0.21l-1.8,0.38l0.68,-2.04l-0.0,-1.8l-0.53,-0.33l-0.58,0.2l-0.12,-0.88l-0.45,-0.85l-0.49,-0.19l-1.01,0.38l0.02,-0.42l0.33,-0.58l0.59,-0.24l2.28,0.12l1.55,-0.6l2.01,-0.14l3.21,0.18l2.21,1.59l0.41,0.03l0.59,-0.3l1.2,-1.12l3.36,0.44l2.13,0.6l0.81,-0.19l0.26,-0.48l-0.31,-1.17l-0.59,-0.71l0.66,-0.75l1.06,-0.67l2.41,-0.77l0.86,-0.46l0.67,-1.53l0.78,-1.1l-0.38,-0.63l-4.29,0.58l-3.57,-1.16l0.31,-0.44l0.76,-0.47l1.46,-0.4l0.38,-0.61l1.96,-1.47l0.12,-0.43l-0.43,-1.32l0.19,-0.79l0.94,-0.8l0.56,-1.44l1.75,-0.25l1.7,-0.64l2.64,-0.09l0.63,0.24l0.54,-0.43l-0.11,-0.78l0.78,-0.09l0.23,0.11l0.29,0.85l0.49,0.45l0.13,0.66l-0.29,0.52l-0.6,0.5l-0.02,0.6l0.31,0.29l-0.67,0.73l-0.03,0.5l0.48,0.14l1.08,-0.47l1.44,-1.0l0.17,-0.36l-0.08,-0.82l-0.63,-1.97l0.14,-0.76l0.61,-0.48l2.02,-0.31l0.26,-0.64l-0.46,-0.62l0.71,0.2l1.23,0.89l2.08,1.04l-0.77,0.67l-1.53,0.76l-0.72,0.9l-2.2,1.29l-0.39,0.57l-0.68,2.35l-1.25,1.91l-2.31,0.96l-1.79,-0.12l-0.73,0.44l-0.17,0.36l0.13,0.52l0.4,0.4l1.58,0.8ZM212.65,366.62l-0.13,-0.02l0.03,-0.02l0.09,0.04ZM213.87,366.77l1.05,0.02l0.27,0.15l0.07,0.94l-0.8,-0.9l-0.59,-0.21Z", "name": "Ireland"}, "ES": {"path": "M408.55,609.24l-3.95,-1.75l-1.35,-0.22l-0.04,-0.91l2.43,-0.17l2.05,0.62l1.1,1.67l-0.24,0.75ZM392.9,610.25l0.24,0.47l1.3,0.53l1.55,-0.44l0.59,0.12l0.47,0.17l0.11,0.64l-2.21,3.38l-0.63,1.38l-2.01,1.18l-2.18,-0.99l-1.33,-0.27l-0.23,-0.23l-0.3,-1.47l-0.91,-0.82l-1.18,-0.19l-1.55,1.01l-0.31,-0.47l-0.97,-0.3l-0.17,-0.26l0.01,-0.32l5.42,-3.73l1.57,-0.82l3.07,-0.89l-0.06,0.57l0.37,0.41l-0.48,0.58l-0.18,0.74ZM246.2,546.17l1.24,0.54l1.33,-0.16l1.25,0.65l2.0,1.73l2.73,0.67l2.32,-0.51l3.77,-0.11l1.99,0.22l3.37,-0.41l1.91,0.14l3.17,-0.81l2.44,1.01l4.71,0.48l2.86,0.85l7.97,1.43l2.93,0.01l4.03,-0.8l1.66,-0.58l1.66,0.32l2.22,-0.66l0.92,0.12l1.48,0.98l5.05,1.32l0.36,-0.08l1.26,-1.06l0.81,-0.2l3.51,0.67l3.75,1.41l1.98,0.1l2.79,-0.38l2.24,-0.92l0.61,1.08l0.69,0.42l1.22,0.43l2.11,0.25l0.57,0.31l-0.15,1.09l-0.77,1.27l0.05,0.44l0.81,0.66l1.09,0.03l0.6,-0.74l0.3,0.36l4.79,1.82l2.22,0.15l2.37,2.24l1.74,0.09l2.29,-0.44l1.21,0.62l2.26,1.59l3.37,-0.44l0.82,0.42l1.65,-0.12l1.86,0.22l1.61,-0.05l0.53,-0.55l0.13,-1.57l0.27,-0.42l4.06,1.05l2.69,1.08l1.2,0.07l0.59,0.24l0.9,1.31l-0.14,0.61l0.17,1.5l0.36,0.64l0.29,0.16l1.32,-0.09l2.19,-0.97l2.73,1.14l1.03,1.21l0.88,0.03l2.11,-1.03l4.84,1.2l1.21,0.1l0.43,-0.35l0.17,-0.63l0.24,-0.14l2.56,-0.78l0.93,-0.16l3.02,0.58l0.29,0.77l0.69,0.52l0.11,0.39l-1.45,0.37l-0.36,0.34l-0.22,1.53l0.42,0.73l0.66,0.43l0.11,0.29l0.12,2.0l-3.11,2.69l-9.38,4.87l-2.31,2.4l-0.75,0.47l-6.93,1.47l-7.25,2.16l-4.47,3.93l0.14,0.7l1.0,0.28l0.97,0.99l-1.94,1.07l-0.67,0.23l-0.56,-0.11l-0.64,0.29l-3.14,4.73l-2.76,3.37l-1.59,1.52l-1.6,2.21l-3.44,5.71l-0.07,1.96l1.73,5.74l1.03,1.55l1.35,1.24l2.56,1.08l0.41,0.67l-0.65,0.73l-2.51,1.72l-4.44,2.36l-1.99,1.94l-0.48,1.83l-1.34,0.98l-0.48,2.47l-0.93,2.19l-0.87,1.38l-0.11,0.92l0.13,0.34l1.03,0.95l-0.27,0.21l-2.08,0.34l-5.27,0.16l-4.46,2.79l-2.28,2.59l-1.9,4.42l-2.24,2.53l-0.75,0.35l-1.61,-1.09l-2.0,-0.18l-2.05,0.39l-1.14,0.96l-1.39,0.45l-1.51,-0.42l-3.39,-0.24l-1.6,0.06l-2.23,0.71l-1.96,-0.48l-3.38,-0.25l-7.46,0.61l-1.12,0.41l-0.89,1.08l-2.19,1.79l-3.54,0.09l-3.2,1.22l-1.0,0.94l-1.35,2.14l-0.35,1.21l-0.47,-0.2l-0.49,0.13l-0.29,0.3l-0.21,0.99l-1.83,0.61l-2.33,-0.91l-2.03,-1.42l-1.1,-0.16l-1.63,-2.09l-0.73,-1.38l-0.49,-1.43l0.08,-0.68l-0.15,-0.5l-0.23,-0.25l-1.38,-0.55l-0.29,-1.07l1.02,-1.66l1.35,-0.91l0.24,-0.46l-0.41,-0.31l-1.41,0.08l-0.96,0.94l-1.11,-1.59l-5.06,-3.56l0.23,-0.57l-0.03,-0.66l-0.7,-0.22l-0.83,0.93l-0.44,0.19l-2.71,-0.15l-2.76,0.4l-1.23,-5.85l0.75,-2.07l0.87,-0.92l1.16,-1.85l1.34,-1.45l1.45,-0.35l0.91,-0.44l0.91,-2.31l-0.46,-0.59l-1.76,0.15l-2.97,-4.04l0.48,-1.54l0.33,-2.25l0.71,-0.75l1.32,-0.94l1.08,-1.27l0.63,-1.46l0.03,-1.41l-0.83,-0.95l-1.59,-0.4l-1.69,-3.02l-0.39,-1.96l-1.57,-1.32l-0.92,-1.49l0.55,-0.15l4.66,-0.04l1.22,-0.59l0.9,-1.43l0.9,-2.28l0.23,-1.44l-0.4,-0.92l-1.43,-1.44l0.17,-0.44l2.07,-1.45l0.66,-0.68l0.1,-0.39l-0.54,-1.45l0.21,-0.67l0.23,-2.81l-0.24,-1.99l-0.33,-1.74l-0.89,-1.96l0.41,-0.51l1.56,-0.84l1.13,-1.68l1.61,-1.38l2.17,-1.14l1.61,-1.34l1.17,-1.66l-0.43,-1.19l-1.01,-0.82l-1.25,-0.43l-1.89,-0.09l-0.11,-3.06l-0.36,-0.8l-0.88,-0.56l-1.06,0.12l-1.76,-0.47l-0.61,0.3l-2.06,-0.08l-1.78,-0.47l-0.82,0.53l-0.24,0.98l-0.62,0.39l-1.72,0.47l-1.37,-0.04l-2.55,-0.85l-2.62,0.28l-0.62,-0.15l-2.26,1.08l-0.62,0.03l-0.62,-1.02l1.17,-1.69l0.06,-0.38l-1.12,-1.88l-0.35,-0.27l-0.72,-0.06l-4.57,1.41l-1.38,0.79l-1.2,1.03l-0.72,0.16l-0.18,-2.32l2.53,-2.61l-0.12,-0.66l-0.68,-0.24l-0.72,0.02l1.06,-1.45l-0.13,-0.55l-0.92,-0.75l0.15,-1.9l-0.16,-0.84l-0.53,-0.28l-2.47,0.81l-0.02,-0.67l1.24,-1.6l0.21,-0.67l-0.32,-0.5l-1.46,-0.24l-1.05,-0.76l-1.33,-1.66l-0.01,-0.78l0.71,-2.07l2.0,-1.02l1.92,-1.48l2.78,0.27l1.74,-0.34l1.62,-0.82l0.94,-0.2l1.45,-0.7l0.22,-0.38l-0.05,-0.95l-0.41,-0.69l0.23,-0.35l3.27,-1.81l2.1,-0.23l1.93,-0.88ZM370.1,623.83l-0.59,0.91l-1.82,-0.41l0.26,-0.64l0.39,-0.09l0.31,-0.37l0.03,-0.66l0.46,-0.58l2.6,-0.57l0.4,0.32l0.08,0.41l-1.53,1.47l-0.58,0.19ZM370.18,627.26l0.43,0.46l-0.55,0.0l0.12,-0.46ZM164.44,776.55l-0.91,0.89l-0.45,-0.15l0.39,-1.69l0.37,-0.49l1.75,-0.87l1.52,-0.36l0.83,-1.23l-0.52,2.63l-0.85,0.56l-2.14,0.71ZM155.44,788.95l0.69,-0.19l1.68,-1.26l1.2,-2.96l1.67,-3.08l0.34,-1.27l0.46,-0.35l0.91,0.01l0.27,0.45l-0.01,1.42l-0.47,2.52l-0.8,2.08l-3.47,1.18l-1.83,1.61l-0.64,-0.14ZM141.28,788.62l0.11,1.32l-4.04,0.0l0.39,-0.4l0.41,-1.04l3.13,0.12ZM128.81,784.44l-1.25,3.48l-0.98,1.21l-0.52,0.36l-1.26,0.29l-1.66,-1.86l-1.25,-2.48l0.36,-0.23l1.2,0.08l2.71,-0.47l0.66,-0.25l2.6,-2.07l2.13,-0.21l-2.74,2.13ZM117.34,789.64l-0.31,0.07l-0.43,-0.24l-0.52,-0.88l0.58,-0.83l1.31,0.57l0.26,0.48l-0.88,0.82ZM108.62,782.6l-0.21,-0.75l-1.48,-2.62l0.7,-0.91l1.39,-0.03l0.54,0.67l0.18,0.66l-0.31,0.63l0.09,1.0l-0.14,0.53l-0.76,0.82Z", "name": "Spain"}, "ME": {"path": "M601.12,565.85l1.19,-0.97l0.28,-0.68l-0.09,-0.72l-1.0,-1.62l-0.28,-2.93l0.34,-0.41l1.75,-0.24l0.34,-0.4l0.06,-1.92l0.56,-1.18l2.2,-1.75l0.74,0.07l0.51,0.77l0.4,0.17l0.65,-0.12l0.33,-0.34l0.08,-1.33l-1.22,-2.13l0.14,-0.28l1.2,0.35l1.26,-0.26l0.09,0.61l0.46,0.74l2.58,1.71l1.83,2.12l0.92,0.7l0.86,0.21l1.56,0.91l2.14,0.45l5.15,2.95l0.06,0.52l-1.49,0.41l-0.45,0.68l-1.62,-0.06l-0.33,0.16l-0.34,0.46l-0.01,0.45l0.73,1.46l-0.2,0.93l-1.58,0.72l-1.8,0.45l-0.38,-0.47l0.04,-1.24l-0.35,-0.8l-0.73,-0.25l-0.81,0.44l-1.5,2.24l-1.98,2.47l-1.63,2.79l0.07,0.46l0.63,0.65l0.34,0.8l-0.21,2.52l-1.44,-0.88l-0.9,-1.83l-3.09,-3.08l-3.53,-2.11l0.23,-0.58l-0.34,-0.59l-1.53,0.19l-0.92,-1.43Z", "name": "Montenegro"}, "MD": {"path": "M712.53,469.11l2.31,-1.33l0.67,0.22l4.47,0.01l1.53,-1.02l1.05,0.19l1.72,-0.95l2.18,0.42l1.32,0.53l0.98,0.89l0.99,0.55l1.04,0.24l0.37,0.29l0.35,0.83l1.09,0.35l1.68,-0.01l0.39,0.23l-0.18,0.59l0.23,0.62l0.51,0.15l0.45,-0.22l0.17,0.1l0.57,0.96l0.6,-0.0l0.78,-0.88l2.88,0.47l1.16,1.99l0.96,0.93l0.99,0.32l1.65,-0.6l0.82,1.24l0.21,1.74l-0.32,1.87l-0.84,2.17l0.18,1.06l0.34,0.59l2.44,1.48l0.73,0.86l0.98,0.61l1.0,0.26l-0.01,1.14l-0.39,0.93l0.02,0.82l0.67,0.88l0.19,1.52l0.46,0.52l1.66,0.96l2.08,0.9l0.74,1.53l-0.24,3.06l0.17,0.37l2.44,1.72l-0.33,0.32l-2.9,0.38l-1.0,-1.27l-0.81,-0.32l-1.41,0.82l-0.63,-0.12l-1.4,-0.8l-0.6,0.02l-0.41,0.25l-0.87,-0.4l-0.6,0.12l-0.62,1.15l-0.1,-1.82l-0.5,-0.51l-0.54,-0.05l-2.77,1.21l-0.63,0.95l0.04,1.05l0.21,1.4l0.77,1.72l-0.41,0.75l-0.3,1.2l-1.2,1.09l-1.45,0.68l-0.23,0.33l-0.12,1.31l-0.72,0.85l-1.47,1.03l-0.96,1.18l0.21,1.78l-0.17,0.7l-2.33,0.22l-1.08,0.59l-1.37,-1.89l0.81,-0.53l0.15,-0.33l-0.06,-1.18l-0.55,-1.9l-0.21,-2.41l0.26,-2.73l1.68,-5.26l-0.27,-1.14l0.22,-2.18l-1.24,-2.78l-1.05,-3.16l-3.05,-2.49l-1.16,-1.93l-2.06,-1.92l-2.23,-3.64l-1.53,-1.5l-0.75,-1.27l-0.65,-2.15l-1.07,-2.03l-2.41,-3.5l-1.17,-1.03l-1.54,-0.78l-1.64,-0.15Z", "name": "Moldova"}, "SY": {"path": "M844.08,692.68l1.05,-1.15l-0.02,-0.54l-0.85,-0.79l-1.19,-0.32l-0.44,0.17l-0.33,0.53l-3.37,0.05l-0.95,-3.1l-0.15,-1.42l0.03,-1.64l0.71,-2.46l-0.54,-3.21l-1.83,-2.36l0.96,-4.03l0.54,-0.79l0.7,0.07l2.09,1.17l0.59,0.01l0.33,-0.25l0.62,-1.51l0.51,-0.43l1.27,-0.45l0.26,-0.32l0.36,-2.44l1.08,-0.58l2.15,-0.21l0.34,-0.34l0.03,-0.68l-1.36,-2.9l0.78,-3.62l0.59,-1.27l3.45,0.63l0.6,0.85l1.34,0.85l5.0,0.15l6.53,-2.38l3.79,-1.63l1.43,0.12l1.76,0.45l3.25,2.24l1.18,0.4l8.13,0.2l4.56,-0.9l4.5,-1.37l6.04,-2.91l0.0,42.23l-23.22,13.06l-26.4,15.89l-4.44,-0.64l-1.34,-0.36l-2.04,-1.61l-2.15,-0.6l-1.38,-1.96l-0.84,-0.71l-1.22,-0.32l1.56,-2.75l-0.55,-2.19l0.5,-0.94l-0.93,-2.17l0.0,-0.61l0.39,-1.38l0.52,-0.43l0.26,-0.62l1.15,-0.82l0.33,-0.52l-0.11,-0.56l-0.81,-0.5l-0.24,-0.41l0.27,-0.75l1.48,-1.32l1.29,-0.1l1.98,0.19l0.54,-0.28l0.11,-0.6l-1.14,-0.94l0.89,-1.08l1.44,-0.74l1.05,-1.18l0.73,-1.41l-1.07,-3.54l-0.8,-0.7l-1.3,-0.53Z", "name": "Syria"}, "TN": {"path": "M462.37,661.98l2.02,-1.56l1.07,-2.02l2.03,-1.09l0.2,-0.37l-0.22,-1.31l3.08,-0.9l3.17,-2.45l1.06,-0.57l7.28,-2.24l1.49,0.34l-0.56,1.05l-0.02,0.4l0.63,1.19l0.6,0.12l0.9,-0.72l0.11,-0.48l-0.21,-0.58l2.34,0.05l1.17,0.56l-0.09,2.42l1.91,2.7l-0.46,1.1l0.2,0.52l1.62,0.77l0.39,-0.02l1.44,-0.93l0.78,-1.37l2.62,-0.82l2.43,-1.94l0.9,-0.13l0.24,1.27l0.54,1.19l-0.74,0.43l-1.21,1.53l-2.27,3.84l-2.01,1.09l-1.67,1.56l-0.6,1.18l-0.19,1.36l0.44,2.44l1.22,2.34l1.33,1.36l1.39,0.5l2.77,1.97l-0.03,1.17l0.41,1.47l0.16,1.79l0.95,1.43l-2.07,2.95l-1.23,2.31l-2.34,3.11l-2.07,2.0l-4.51,3.02l-1.16,1.04l-0.84,1.22l-0.35,1.24l0.16,1.42l1.49,3.14l2.07,1.98l2.34,1.11l3.02,-0.35l-0.07,0.82l0.25,1.45l0.41,0.33l2.46,-0.3l0.87,-1.25l1.23,0.69l0.85,2.79l1.37,0.98l-0.54,0.42l0.06,0.66l1.93,0.64l0.91,-0.2l1.03,0.47l-0.59,4.02l-0.07,3.89l1.09,1.9l0.02,0.58l-0.32,0.69l-9.1,4.96l-0.81,0.93l-2.17,1.36l-0.98,2.0l-0.8,0.87l-2.18,0.44l-0.67,0.46l-1.59,2.14l-0.64,1.5l1.74,6.45l0.17,2.33l-0.49,1.11l-4.26,5.78l-4.58,2.09l-6.38,-27.21l-0.45,-0.6l-9.16,-6.5l-0.39,-2.22l-1.27,-3.49l-1.38,-2.04l-0.66,-0.65l-2.67,-1.25l-1.47,-0.88l-0.32,-0.41l-0.3,-1.39l-1.11,-2.83l-1.26,-2.57l-0.44,-1.66l-0.06,-2.11l0.23,-1.44l0.45,-0.56l2.59,-1.95l1.28,-2.42l3.8,-2.32l1.06,-1.39l0.76,-1.5l0.42,-3.72l0.45,-1.54l1.09,-1.79l0.04,-0.33l-1.03,-3.01l0.17,-2.68l-0.15,-1.2l-0.96,-2.29l-0.02,-0.96l1.38,-7.84l-0.2,-0.78l-0.49,-0.72l-1.2,-0.63ZM502.62,689.18l0.61,-0.51l-0.01,0.2l-0.6,0.32ZM499.09,704.5l-1.13,0.49l-1.48,-0.57l0.19,-1.69l1.96,-0.06l1.28,1.1l-0.82,0.72Z", "name": "Tunisia"}, "MA": {"path": "M184.0,789.94l4.2,-1.13l5.88,-2.66l1.71,-1.08l1.85,-2.18l2.91,-2.72l5.49,-3.3l2.57,-1.88l3.97,-4.76l2.57,-3.84l2.13,-2.47l1.51,-2.25l1.1,-2.4l0.59,-3.62l-0.4,-1.58l-1.69,-2.44l-1.08,-0.65l-0.22,-0.82l0.57,-1.94l-0.01,-3.31l0.33,-5.23l1.77,-4.18l4.47,-5.71l0.85,-2.4l0.55,-4.88l5.44,-5.15l3.27,-4.05l1.08,-0.95l2.81,-1.81l10.02,-4.04l5.67,-2.89l3.44,-2.22l2.01,-2.55l5.46,-9.84l5.39,-13.98l0.39,-1.42l3.92,-0.64l1.43,-0.55l1.55,-0.96l0.73,0.19l-0.38,0.52l0.05,1.92l1.2,2.08l2.05,2.32l3.73,2.93l2.92,1.18l4.05,0.69l4.84,-1.26l2.59,-0.02l1.25,-0.49l1.38,0.75l2.66,0.25l2.66,-0.42l2.08,-1.26l0.83,-0.9l0.15,0.86l1.5,2.82l0.38,0.2l1.4,-0.11l1.34,0.34l2.86,-0.16l2.48,0.27l0.39,1.04l0.8,0.91l4.48,3.31l-0.73,1.88l0.04,0.32l0.45,0.77l1.06,1.12l-0.75,1.72l1.13,2.87l0.19,2.73l-0.28,3.25l0.18,1.09l0.93,2.17l-0.61,3.86l0.73,2.05l1.01,1.67l0.54,2.9l0.86,1.53l1.4,1.32l3.22,2.24l0.44,0.9l-2.25,1.97l-0.29,1.23l0.47,2.08l-0.34,0.14l-15.87,-0.61l-5.67,0.84l-1.23,0.75l-1.05,2.93l-5.56,1.89l-2.14,0.26l-1.37,-0.19l-0.92,0.16l-0.91,0.45l-0.45,0.83l-0.07,0.94l0.21,1.01l0.52,1.06l0.08,0.95l-0.34,0.82l-0.19,1.92l0.29,0.47l1.99,0.94l0.48,0.51l-0.02,0.65l-0.4,0.4l-0.36,0.22l-3.94,0.52l-4.54,3.18l-6.13,2.16l-2.62,1.31l-3.01,4.56l-1.49,1.55l-2.02,1.45l-4.34,1.28l-3.07,0.55l-2.84,0.3l-3.75,-0.09l-0.47,0.41l-0.26,2.16l-0.86,0.99l-0.35,0.1l-6.16,-0.82l-0.74,0.08l-1.45,0.74l-3.3,2.64l-1.8,0.24l-1.01,0.45l-4.25,3.21l-3.61,2.24l-3.96,3.12l-1.51,0.86l-0.3,0.61l-0.07,1.01l-0.0,8.75l-48.43,0.0Z", "name": "Morocco"}, "RS": {"path": "M607.42,509.85l1.42,-0.57l0.68,-0.8l0.8,0.44l0.99,0.02l0.95,-0.31l2.06,-1.11l1.45,-1.49l0.91,-0.19l3.1,0.39l1.26,-0.26l2.96,0.32l0.57,0.23l1.1,1.16l0.91,1.39l2.91,1.72l0.93,1.46l0.83,0.82l0.78,-0.01l-0.13,1.99l0.27,1.3l-0.19,0.44l0.4,0.79l3.18,2.52l1.09,0.5l0.67,0.06l1.1,0.84l2.71,0.8l0.59,0.54l-0.68,0.82l-0.21,0.68l-0.59,0.16l-0.38,0.59l0.16,0.51l0.36,0.36l1.89,0.81l-2.09,0.34l-0.26,0.39l0.03,0.59l0.29,0.37l2.16,0.6l0.88,0.51l0.67,0.83l1.5,0.52l2.22,0.24l1.44,0.7l0.84,1.21l0.41,0.16l1.66,-0.41l1.96,-1.86l1.75,-0.44l1.8,0.85l0.93,0.66l-0.01,0.18l-0.97,-0.1l-1.09,0.4l-0.95,1.17l-0.06,1.13l0.49,0.96l0.77,0.77l0.94,0.41l0.32,0.34l0.06,0.53l-0.82,0.68l-0.34,0.88l-0.07,1.0l-2.37,1.2l-0.78,2.48l0.05,1.46l0.35,1.3l1.09,1.79l0.39,1.47l0.75,1.06l2.94,1.73l1.3,1.71l1.38,0.92l-0.36,1.07l-1.1,1.24l-0.82,0.59l-1.16,1.52l-1.91,0.1l-1.5,0.81l-0.37,0.83l0.32,0.93l-0.37,2.03l0.49,1.41l0.79,0.91l-0.09,0.47l-1.25,1.65l-0.79,0.18l-0.83,-0.56l-0.77,-0.12l-2.39,0.83l-2.13,-0.25l-1.29,0.34l-0.98,0.55l-1.52,0.39l-0.47,-0.06l-0.42,-0.94l1.19,-0.89l0.11,-0.53l1.52,-2.84l0.31,-1.03l-0.21,-0.67l-0.58,-0.24l-0.77,0.01l-3.31,-1.03l0.13,-0.98l-0.18,-0.39l-2.13,-1.28l-0.24,-0.7l-2.28,-2.26l-1.31,-0.46l-1.52,-0.86l-0.29,-1.04l-0.31,-0.38l-0.34,-0.14l-0.68,0.1l-2.04,1.13l-0.19,0.7l0.58,1.17l-0.07,0.27l-0.26,0.47l-2.08,1.44l-0.22,0.83l0.25,0.57l-1.01,0.3l-0.25,-0.85l-0.97,-0.7l-1.42,-0.58l-3.01,-1.84l-2.27,-0.5l-1.44,-0.86l-0.8,-0.19l-0.75,-0.56l-1.89,-2.18l-2.6,-1.74l-0.26,-0.89l0.64,-0.67l1.1,-0.11l0.62,0.42l0.7,0.09l0.38,-0.16l0.39,-0.55l0.28,-1.06l-0.17,-1.2l-3.14,-4.01l0.35,-0.14l1.91,0.24l1.44,-0.15l0.68,-0.49l0.14,-0.84l-0.61,-0.78l-2.83,-2.54l-1.52,-0.96l-1.04,-0.36l-0.2,-0.3l0.08,-2.31l0.22,-0.62l1.92,-2.86l0.6,-1.47l0.3,-1.51l-0.3,-0.61l-1.61,-0.6l-1.79,0.3l0.22,-0.99l-0.44,-2.38l0.55,-0.15l0.3,-0.53l0.63,0.27l2.51,-0.09l0.48,-0.45l0.05,-0.63l-0.33,-0.54l-0.94,-0.77l-3.09,-1.11l-1.01,-0.88l0.03,-0.83l0.55,-0.59l0.16,-0.56l-0.33,-0.37l-1.26,-0.47l-0.29,-0.44l0.32,-1.03l-0.72,-1.88l-0.58,-0.91l0.59,-0.56l0.11,-0.78Z", "name": "Republic of Serbia"}, "_2": {"path": "M623.28,565.63l0.23,-1.37l-0.65,-1.57l1.63,0.09l0.41,-0.24l0.23,-0.55l3.48,-1.07l0.27,-0.76l-0.29,-0.57l0.09,-0.19l1.93,-1.27l0.5,-0.84l0.09,-0.76l-0.53,-1.12l1.95,-0.93l0.57,1.38l1.67,0.95l1.21,0.41l2.08,2.07l0.37,0.86l2.01,1.19l-0.14,1.07l0.28,0.43l3.69,1.15l0.93,0.05l-1.88,4.12l-1.1,0.71l-0.15,0.66l0.36,0.88l-1.97,0.42l-0.92,0.69l-0.55,1.2l-1.39,-1.12l-1.41,-0.04l-3.96,1.67l-0.58,1.07l-0.11,1.91l-0.39,0.51l-1.14,-0.15l0.02,-2.13l-0.71,-2.58l-0.55,-0.95l-1.98,-1.52l-1.41,-0.49l-0.69,-1.32l-1.49,-1.91Z", "name": "Kosovo"}, "MK": {"path": "M629.75,577.29l1.84,0.12l0.78,-0.95l0.13,-1.95l0.28,-0.64l3.61,-1.54l0.89,-0.05l1.45,1.15l0.66,0.06l0.37,-0.28l0.54,-1.26l0.63,-0.43l2.18,-0.43l0.86,0.07l1.64,-0.42l1.06,-0.58l1.14,-0.29l2.05,0.27l2.48,-0.84l1.15,0.64l2.02,2.35l1.19,1.03l1.42,0.79l1.52,0.54l0.42,0.4l1.43,3.5l0.73,0.43l0.06,0.28l-0.73,1.84l-0.29,3.95l-1.62,0.11l-0.61,0.4l-0.51,2.19l-2.82,0.86l-4.13,-0.64l-0.75,0.3l-1.9,0.15l-1.15,0.53l-1.97,2.46l-2.56,1.2l-1.39,-0.49l-0.86,-0.08l-1.24,0.65l-4.44,0.26l-0.63,-0.83l-1.01,-0.25l-1.58,0.18l-0.21,-0.18l-0.69,-2.05l-1.24,-1.16l-1.01,-2.21l0.03,-1.94l-0.54,-1.92l0.88,-0.94l-0.14,-2.11l0.57,-2.22Z", "name": "Macedonia"}, "_0": {"path": "M628.45,248.96l0.16,-0.05l0.84,0.08l0.31,0.32l-0.63,0.06l-0.68,-0.41ZM621.69,243.28l1.25,-0.06l0.94,0.68l0.42,0.54l0.66,0.27l-0.63,0.99l-0.8,-0.15l-1.25,0.46l-0.32,0.82l0.0,0.92l-2.69,0.2l-0.49,-0.23l-0.9,-2.45l0.11,-0.4l0.54,-0.21l0.06,1.05l0.47,0.37l0.85,-0.15l0.32,-0.29l0.34,-1.72l-0.3,-0.6l-0.75,-0.51l0.26,-0.39l0.49,-0.18l0.58,0.76l0.84,0.28ZM616.9,246.18l-0.55,0.17l-0.39,0.42l-0.14,-0.48l0.3,-0.83l0.49,-0.02l0.28,0.74Z", "name": "Aland"}, "SK": {"path": "M655.85,455.69l-1.87,2.97l-1.26,3.23l-2.02,2.0l-0.31,2.96l-4.5,0.92l-0.43,-0.1l-0.87,-0.84l-1.18,-1.67l-1.8,-1.11l-1.06,-0.01l-2.48,0.73l-1.65,0.08l-2.74,-0.69l-3.03,-0.07l-2.16,0.4l-0.3,0.25l-2.03,3.85l-5.08,2.53l-0.54,0.2l-2.43,-1.14l-1.36,-0.42l-1.02,0.28l-0.9,0.88l-0.42,0.83l-2.52,0.6l-4.73,0.38l-1.81,0.92l-0.78,1.39l-0.02,0.81l0.33,0.69l-0.48,0.75l-7.63,0.4l-5.12,-0.11l-1.61,-0.65l-2.05,-1.31l-2.2,-1.77l-0.76,-0.32l-1.73,-0.07l-0.57,-0.4l-0.25,-0.72l-1.27,-1.96l-1.41,-3.18l-0.03,-0.76l1.03,-1.78l0.6,-2.25l1.01,-1.74l0.9,-0.97l0.53,-0.25l3.99,0.56l2.05,-0.28l1.81,-0.81l1.92,-1.52l0.31,-0.5l1.68,-0.56l0.66,-0.61l0.43,-2.19l0.57,-1.15l2.67,-1.34l0.77,-1.01l2.29,-1.67l2.02,-0.05l1.07,-0.29l1.14,0.17l0.33,1.5l0.41,0.33l2.46,-0.07l0.32,-0.17l1.29,-1.85l0.66,-0.23l1.69,-1.12l2.4,3.23l1.74,0.5l0.15,1.45l-0.41,1.13l0.26,0.48l0.62,0.21l1.69,-0.45l1.76,0.65l0.5,-0.22l0.65,-1.5l0.65,-0.68l2.55,-1.15l0.83,-0.12l1.48,0.18l1.02,-0.17l1.37,0.34l1.03,0.74l1.05,0.26l1.07,-0.04l1.03,-0.56l0.94,-1.22l3.47,-0.19l3.82,0.29l0.99,0.52l2.34,0.66l0.92,0.68l0.88,1.68l6.68,2.35Z", "name": "Slovakia"}, "MT": {"path": "M547.69,672.17l-1.11,0.1l-0.87,-0.6l-0.01,-0.92l0.72,0.18l1.27,1.23ZM543.86,669.2l0.21,-0.04l0.18,0.07l-0.23,0.07l-0.16,-0.09Z", "name": "Malta"}, "SI": {"path": "M558.41,514.15l-0.58,0.36l-0.28,0.83l0.1,0.77l0.56,0.93l-0.87,0.29l-1.65,-0.15l-2.27,-0.83l-0.74,0.12l-0.72,0.39l-0.51,-0.13l-1.82,-1.48l-0.49,-0.57l-0.2,-0.62l-0.57,-0.36l-0.96,0.41l-1.36,2.21l-0.59,0.31l-3.71,0.06l-1.44,-0.5l-0.3,0.1l-0.59,0.96l-0.57,0.27l-3.3,-0.75l-0.11,-0.14l1.41,-0.95l0.72,0.07l1.13,-0.28l0.41,-0.37l0.08,-0.48l-0.67,-1.21l-1.49,-1.37l-0.84,-0.56l-1.03,-0.34l0.48,-2.4l-0.56,-0.5l-1.08,0.09l-0.11,-0.21l0.05,-0.3l1.73,-1.57l0.25,-0.42l0.02,-0.57l-0.29,-0.34l-1.94,-0.68l-1.0,-0.0l-0.2,-0.4l0.21,-0.69l2.08,-1.55l1.52,-0.79l0.41,-0.89l2.74,0.31l2.33,0.62l6.38,1.01l0.69,-0.64l2.11,-1.05l1.22,-1.44l0.57,-0.35l1.4,-0.33l2.86,-0.28l3.12,0.21l1.44,-0.43l1.21,-0.75l1.66,-0.2l2.53,0.56l0.43,-0.19l0.29,-0.45l0.04,-1.7l0.63,-0.57l0.61,-0.25l2.29,0.09l0.53,2.01l0.65,0.7l0.07,0.9l1.15,1.33l-1.93,-0.14l-0.74,0.39l-0.47,0.55l0.08,1.71l-1.48,-0.14l-0.71,0.2l-1.02,1.18l-0.8,0.41l-4.21,1.44l-0.67,1.32l0.16,0.75l0.85,0.93l0.11,0.93l-0.28,1.86l-0.24,0.31l-2.25,0.6l-2.4,1.1l-0.28,0.53l0.12,0.38l0.87,0.78Z", "name": "Slovenia"}, "SM": {"path": "M519.71,543.1l-0.32,0.05l-0.12,-0.21l0.34,-0.45l0.33,-0.05l-0.22,0.65Z", "name": "San Marino"}, "SA": {"path": "M828.42,789.94l-0.39,-0.46l-1.54,-0.81l-3.38,-0.31l-1.41,-0.32l-1.07,0.62l-0.04,-0.41l0.88,-1.65l1.31,-3.58l0.28,-3.22l1.97,-8.95l14.07,2.35l0.87,-0.15l5.7,-4.43l3.14,-5.02l0.56,-0.41l9.78,-1.99l0.4,-0.39l2.08,-4.63l4.38,-2.44l0.11,-0.62l-6.8,-7.58l-6.6,-6.77l26.53,-7.38l0.63,-0.27l1.87,-1.64l16.36,2.75l1.49,0.7l0.0,57.01l-71.18,0.0Z", "name": "Saudi Arabia"}, "UA": {"path": "M653.07,467.62l-0.19,-0.74l-0.28,-0.28l-1.33,-0.03l0.12,-2.22l2.03,-2.04l1.29,-3.29l1.79,-2.7l0.18,-0.58l3.27,0.94l0.74,-0.39l0.29,-0.58l-0.19,-0.78l-1.79,-1.47l0.38,-2.04l-1.1,-4.13l0.67,-1.03l4.45,-5.14l5.02,-4.84l1.33,-1.0l2.72,-2.55l3.41,-0.56l1.93,-2.52l0.04,-1.69l-0.66,-1.89l-0.81,-1.03l0.88,-0.25l0.6,-0.46l0.14,-0.42l-0.13,-0.5l-1.58,-1.38l-0.59,-0.85l-1.06,-2.46l-2.62,-3.21l-0.07,-0.55l0.27,-0.93l-0.32,-1.06l-0.61,-1.04l-0.01,-1.46l0.96,-0.37l1.05,0.07l0.89,0.22l1.45,0.71l2.54,-1.53l2.08,-1.99l1.03,-1.59l6.71,-0.55l2.72,-0.57l2.65,-0.13l8.86,0.43l4.61,1.05l1.67,0.19l0.89,0.57l4.32,0.77l2.46,0.31l2.38,0.0l2.07,2.74l0.92,0.15l1.48,-0.21l1.91,0.08l0.86,0.38l-0.14,1.19l0.17,0.38l0.6,0.28l0.82,-0.23l1.34,-1.79l2.04,0.55l0.94,-0.1l1.34,-0.76l1.41,0.45l1.8,0.33l1.45,0.03l0.68,0.27l0.77,1.59l1.26,0.46l0.41,-0.19l0.8,-1.31l0.65,-0.46l1.65,-0.54l1.17,-0.96l0.35,-0.02l0.7,0.66l1.69,3.01l0.73,0.65l0.37,0.08l2.78,-0.93l4.78,-0.42l2.08,-0.43l1.16,0.07l1.78,1.25l0.48,1.45l1.58,0.92l1.44,0.22l0.41,-0.23l0.4,-0.88l0.69,-0.61l0.12,-0.42l-0.44,-2.15l-0.87,-2.05l0.63,-1.52l1.11,-2.22l1.14,-1.4l2.99,-2.68l1.16,-0.48l2.04,0.41l1.65,-0.95l2.97,-0.05l2.74,0.15l2.68,0.97l2.06,-0.07l2.35,-1.21l1.22,-3.0l0.71,-0.46l0.85,-0.02l4.12,1.02l1.41,-0.1l3.32,-1.51l1.76,-0.22l2.24,0.36l2.19,0.02l1.59,-0.21l0.98,0.46l1.32,1.1l1.21,1.66l1.4,3.3l3.75,3.5l-0.11,0.61l-3.32,0.63l-0.34,0.35l-0.02,0.88l1.11,1.58l0.07,2.25l0.33,1.15l0.62,0.53l-0.82,1.11l0.12,0.5l0.5,0.29l3.42,0.12l3.05,1.17l0.78,0.04l1.45,-0.35l2.41,-0.24l1.25,2.5l0.76,0.36l1.36,0.04l-0.27,0.63l0.08,0.66l0.45,0.92l0.49,1.84l0.76,1.25l0.0,0.63l-0.65,1.46l0.27,1.27l1.11,1.57l0.8,0.42l0.78,1.34l1.12,0.41l0.35,-0.04l2.77,-1.54l2.87,0.48l0.86,0.63l0.8,1.04l0.85,0.56l1.11,-0.21l1.55,0.25l0.81,0.78l0.81,0.46l0.41,-0.01l1.88,-1.45l2.98,-0.81l1.98,-0.22l2.8,-1.15l0.83,0.08l0.96,1.14l1.05,0.84l0.34,1.37l1.43,1.96l3.34,2.57l1.35,0.81l1.16,-0.09l0.72,-0.35l0.3,-0.45l0.18,-1.14l0.23,-0.25l0.39,-0.01l2.67,1.56l2.59,0.2l1.69,1.17l2.08,1.1l1.64,0.09l1.78,-0.6l0.78,1.16l0.77,0.7l1.07,0.3l1.25,0.05l4.21,2.69l1.5,0.14l2.03,-0.5l0.42,0.22l0.09,0.27l-0.46,0.86l0.0,1.15l0.93,1.25l0.02,0.88l-0.71,1.68l-2.33,2.28l-1.74,0.48l-0.99,0.5l-0.2,0.47l0.33,0.98l0.8,0.9l3.08,1.14l-0.89,0.19l-1.76,-0.14l-1.31,1.36l-0.82,2.61l0.3,0.5l1.58,0.33l0.75,0.4l0.65,2.74l-0.39,0.36l-0.16,0.77l0.38,0.56l1.14,0.33l-0.98,1.32l-1.48,3.53l0.0,1.35l-0.38,0.48l-4.48,0.18l-6.63,-0.37l-1.19,0.33l-1.59,2.23l-0.97,0.76l-1.66,0.71l-2.07,0.29l-1.24,1.08l-0.39,1.37l-0.04,1.26l-0.72,1.43l0.07,0.65l0.26,0.29l0.68,0.23l-0.74,0.67l-0.27,0.64l0.1,1.34l-4.76,-0.22l-3.93,0.37l-2.89,2.7l-1.6,0.01l-2.4,0.74l-1.66,0.94l-1.64,1.67l-1.38,-0.75l-1.76,0.02l-1.92,0.57l-2.01,1.22l-1.01,0.2l-2.4,-0.34l-2.68,0.72l-5.92,4.2l-0.85,1.26l-0.06,-0.98l-0.84,-1.19l-0.64,-0.01l-2.18,2.85l-1.23,0.42l-1.63,0.89l-0.21,0.34l-0.08,2.04l0.21,1.55l0.69,1.89l1.61,3.06l3.22,4.28l1.58,1.61l1.23,0.7l1.53,0.14l2.77,-1.34l0.99,-0.18l2.36,0.49l0.37,-0.11l0.81,-0.82l1.12,-0.43l1.51,-0.06l3.32,0.89l-1.5,2.39l-0.7,2.57l-1.95,0.58l-2.39,-0.07l-2.35,0.4l-1.41,-1.04l-1.2,-0.55l-1.47,-0.29l-1.5,0.36l-1.72,2.08l-2.67,1.34l-0.94,1.5l-2.45,-0.32l-2.42,0.27l-3.46,1.46l-2.67,3.13l-2.71,1.84l-2.1,0.57l-1.96,-0.18l-1.26,-0.53l-2.53,-1.83l1.01,-1.84l1.11,-3.8l-0.15,-1.47l-0.78,-2.16l-2.21,-1.51l-1.96,0.2l-0.87,-0.35l-3.8,-2.62l-2.11,-0.17l-2.05,0.49l-0.58,-0.27l-0.32,-0.49l4.02,-2.95l4.18,-2.58l1.9,-0.29l2.58,-1.26l2.69,-1.85l0.16,-0.43l-0.38,-1.45l-0.61,-1.16l-0.44,-0.2l-2.12,0.61l-2.04,-1.04l-0.78,-0.8l-0.38,-0.11l-3.47,0.87l-2.0,-0.12l-4.23,0.79l-1.86,-0.74l-4.05,-2.24l-1.5,-0.45l-1.23,0.07l-0.17,-0.18l0.26,-0.11l1.0,-0.05l1.25,-0.41l0.37,-0.66l-0.06,-0.73l-0.3,-0.35l-2.07,-0.55l-1.91,-0.16l-1.14,-0.62l1.01,-0.01l2.22,0.57l3.41,0.21l3.09,0.58l2.9,-2.06l0.42,-0.47l0.03,-0.48l-0.45,-0.17l-2.95,0.84l-2.9,-0.52l-1.01,-0.69l-0.86,-1.03l-0.34,-1.11l0.24,-1.25l-0.37,-2.3l-1.35,-2.95l-1.18,-1.12l-0.51,-0.02l-0.12,0.49l1.04,2.12l0.38,1.4l0.62,1.3l-0.14,3.34l-0.31,0.96l-0.98,0.24l-2.85,-0.46l0.34,-1.53l-0.17,-0.42l-0.46,0.01l-1.0,0.76l-1.19,1.74l-0.91,0.23l-2.56,-0.19l-4.62,1.23l-0.29,0.29l-0.98,3.07l-0.88,1.69l-1.92,2.66l-3.91,3.98l-4.21,1.88l-0.96,0.3l-1.74,-0.36l-1.2,0.75l-0.41,0.86l-0.01,1.39l0.97,1.2l0.72,3.13l-0.1,0.48l-1.51,-1.33l-2.41,-0.84l-2.58,0.32l-2.62,1.37l-1.64,0.47l-0.83,-0.31l-0.73,-0.0l-0.55,0.61l0.02,0.59l-3.8,-0.88l-1.69,-0.86l-1.12,-1.36l0.85,-0.48l2.12,-0.14l0.52,-0.22l0.43,-1.31l-0.26,-1.46l0.79,-0.97l1.38,-0.95l0.92,-1.05l0.2,-1.44l1.39,-0.67l1.45,-1.41l0.77,-2.41l-0.83,-1.85l-0.2,-2.07l0.28,-0.4l1.14,-0.6l1.45,-0.44l0.09,2.09l0.34,0.39l0.54,-0.02l0.42,-0.27l0.59,-0.99l0.99,0.29l0.82,-0.29l1.27,0.75l0.93,0.19l0.91,-0.33l0.51,-0.46l0.27,0.08l1.09,1.38l0.43,0.14l3.15,-0.45l1.01,-0.9l-0.07,-0.59l-2.61,-1.84l0.21,-3.09l-0.33,-1.0l-0.6,-0.9l-2.29,-1.05l-1.8,-1.18l-0.11,-1.31l-0.67,-0.88l0.48,-2.47l-0.27,-0.76l-0.39,-0.34l-0.89,-0.13l-0.84,-0.52l-0.72,-0.85l-2.31,-1.37l-0.23,-0.4l-0.12,-0.51l0.82,-2.15l0.34,-1.26l0.02,-0.85l-0.29,-2.08l-1.12,-1.57l-0.78,-0.17l-1.42,0.65l-1.15,-0.9l-1.22,-2.1l-0.27,-0.19l-3.33,-0.54l-0.34,0.13l-0.59,0.67l-0.37,-0.7l-0.48,-0.26l-0.5,0.06l0.14,-0.47l-0.18,-0.46l-0.76,-0.44l-1.93,-0.04l-0.67,-0.23l-0.22,-0.69l-0.57,-0.44l-1.12,-0.28l-0.89,-0.5l-1.04,-0.93l-1.53,-0.6l-2.47,-0.45l-1.85,1.0l-1.08,-0.18l-1.37,0.99l-2.85,0.05l-2.39,-0.27l-2.8,1.62l-0.38,0.61l-4.06,0.91l-0.29,0.29l-0.37,1.5l-1.39,1.88l-9.4,1.42l-4.0,1.52l-1.37,1.36l-2.09,0.42l-4.14,-3.56l-1.48,-0.38l-1.53,0.15l-1.38,0.47l-1.27,0.08l-1.51,-0.63l-0.93,0.12l-4.48,-0.97l-3.48,0.03l-2.69,-1.58l-1.04,-0.1l-0.97,0.78l-0.47,0.69l-2.08,0.84l0.02,-1.1l-0.38,-0.65l-0.84,-0.78l-0.35,-0.17l-1.15,0.09l-1.1,-0.44l-0.93,-1.27l-1.31,-0.66l-0.96,-0.23l-0.94,-1.63Z", "name": "Ukraine"}, "SE": {"path": "M520.76,323.75l2.31,0.87l0.76,-0.19l0.66,-0.42l0.14,-0.52l-0.81,-1.59l-0.71,-0.77l-0.24,-0.55l1.04,-0.19l1.1,0.06l0.35,-0.17l0.9,-1.54l-0.49,-1.97l-1.44,-0.87l-0.95,-0.25l-1.88,-2.97l-2.08,-1.66l-3.6,-6.12l-1.32,-4.24l-0.51,-0.26l-0.86,0.28l-0.9,-3.2l-0.08,-1.27l-0.26,-0.35l-1.72,-0.66l-0.41,-4.77l-0.3,-0.35l-1.93,-0.51l-1.22,-2.08l-0.24,-4.28l-0.2,-0.32l-1.38,-0.8l-0.89,0.07l0.29,-1.68l-0.64,-4.03l-0.21,-3.69l-0.54,-1.23l-0.27,-1.18l0.49,-1.42l0.99,-0.13l1.05,0.84l1.08,2.44l1.23,0.55l1.65,-0.68l1.12,-2.03l1.2,-5.71l-1.57,-5.83l2.05,-2.13l1.28,-3.25l0.59,-0.43l2.52,-0.49l1.73,-1.15l2.66,-2.86l0.48,-2.89l0.02,-1.31l0.49,-1.01l0.49,-1.96l-0.5,-2.21l-3.21,-7.03l-0.24,-1.94l1.98,-0.63l2.88,-0.11l0.56,-0.36l1.04,-2.45l0.74,-1.06l0.73,-2.76l-0.09,-0.33l-1.67,-1.94l-2.22,-2.02l-1.56,-0.72l-4.24,-2.89l1.8,-9.09l0.16,-2.55l-2.56,-6.53l0.33,-2.73l-0.41,-4.04l1.37,-1.57l0.05,-0.47l-1.07,-1.87l-1.79,-4.1l2.76,-4.11l-0.39,-2.32l1.58,-1.5l4.88,-5.8l1.66,-1.2l2.57,-1.06l2.85,-0.52l1.24,0.01l8.94,1.31l0.91,-0.69l0.88,-1.26l1.06,-1.69l0.15,-2.08l-0.38,-2.85l-0.59,-1.74l-5.55,-2.58l6.02,-7.64l3.22,-4.96l1.0,-2.06l0.79,-1.0l0.94,-7.63l1.16,-3.36l0.0,-1.23l-1.16,-5.96l6.39,-0.83l4.58,-1.92l1.56,-1.27l0.14,-0.39l-0.78,-3.91l1.68,-1.31l4.43,-4.91l4.77,-4.71l2.37,-1.99l0.4,-2.56l-1.05,-2.31l-3.01,-3.8l0.7,-1.43l3.43,-1.05l1.77,-1.7l2.84,-6.36l5.14,-3.08l1.96,-1.6l7.81,3.15l0.47,-0.13l2.84,-3.95l0.73,-1.63l-0.37,-6.41l0.17,-1.15l1.64,-0.55l0.91,-0.15l5.22,1.44l3.88,0.18l2.76,0.64l8.28,2.42l1.69,0.08l3.69,-2.87l-0.1,-0.68l-2.97,-1.22l1.87,-1.21l1.29,-1.61l1.12,-2.04l0.39,-2.24l-0.15,-1.32l-0.84,-1.04l-1.57,-1.44l5.83,-0.32l3.49,1.28l0.2,1.48l0.21,0.29l3.54,1.83l1.05,0.98l2.15,1.45l0.7,0.87l2.01,0.92l5.16,3.06l2.76,1.04l2.32,0.34l5.63,1.69l0.91,0.52l3.19,2.48l1.11,2.74l0.34,0.25l1.62,0.13l0.47,0.87l1.61,1.66l2.08,1.38l-1.82,1.61l-0.19,1.9l0.17,2.33l0.55,1.9l-0.04,0.38l-0.97,1.73l-0.15,1.45l0.57,0.59l2.52,0.22l0.75,0.3l0.47,1.84l-1.41,1.11l-0.54,0.92l-0.09,1.32l0.26,1.35l0.56,1.56l3.57,4.33l0.53,1.22l-0.61,0.75l-0.61,1.57l-0.38,2.92l-1.22,1.48l-0.86,0.53l-0.43,1.07l-0.12,1.6l0.36,2.86l0.3,0.93l0.47,0.66l2.15,1.04l1.83,3.4l1.28,3.65l-3.01,0.43l-2.89,-1.0l-1.28,0.49l-2.34,0.03l-2.67,0.41l-1.55,1.09l-2.27,-1.04l-2.31,-1.86l-0.51,0.01l-1.64,1.38l-0.76,0.19l-1.06,-1.24l-0.87,-0.21l-0.37,0.1l-0.57,0.59l-0.39,1.1l-0.68,0.98l-0.35,3.09l-1.94,-0.26l-0.44,0.48l0.14,0.6l0.53,0.47l-0.38,0.23l-2.14,-0.05l-0.38,0.24l-0.23,0.53l0.05,0.4l0.47,0.62l-0.61,0.64l-2.57,0.44l-1.83,0.02l-0.55,0.67l-0.09,0.87l0.29,0.61l0.77,0.46l0.08,0.6l-1.88,-1.4l-0.5,0.08l-0.3,0.57l0.37,0.76l0.98,0.92l0.49,0.78l0.41,0.89l-0.06,0.55l-1.93,2.38l-3.11,2.99l-0.85,1.59l0.1,0.49l1.82,1.74l1.54,3.91l1.61,1.71l-0.59,1.44l-2.79,1.72l-3.32,2.76l-3.43,6.64l-1.04,0.81l-2.98,1.11l-1.22,1.15l-2.17,1.25l-4.05,1.19l-1.79,1.55l-0.81,1.54l-0.53,0.07l-0.85,-0.58l-1.19,-0.47l-0.54,0.31l-0.16,1.14l-1.25,-0.75l-0.51,0.08l-0.97,1.16l-0.66,1.65l-2.53,2.16l-2.77,-0.4l-0.7,0.56l0.17,0.62l0.24,0.09l-0.68,0.01l-1.18,0.44l-0.74,-0.03l-0.39,0.27l-0.94,2.25l-2.29,0.6l-0.72,0.96l0.32,0.59l2.05,0.13l-0.3,1.29l-2.74,0.93l-1.07,1.24l-0.71,-0.02l0.17,-0.42l-0.38,-0.55l-1.69,0.04l-0.49,-0.91l-0.6,-0.13l-0.37,0.29l-0.14,0.41l0.22,0.91l1.02,2.21l-0.33,0.64l-0.45,0.38l-0.03,0.58l0.55,0.51l0.92,0.28l-0.87,0.37l-1.41,1.48l-1.42,0.04l-1.13,1.05l-0.71,-0.0l-0.83,-0.64l-1.34,-0.55l-0.52,0.21l-0.43,0.96l-0.1,0.89l0.78,2.12l1.53,1.63l0.68,0.36l-1.12,1.3l-1.84,6.3l0.33,1.97l0.58,1.46l-0.97,-0.08l-1.82,-0.67l-0.53,0.45l0.23,1.26l-1.12,1.82l0.44,2.39l-0.34,1.5l0.12,0.38l0.46,0.43l0.2,0.66l-0.42,0.9l0.19,0.54l0.44,5.34l-0.11,0.85l0.99,2.76l-0.36,2.22l0.14,0.35l1.48,1.23l2.8,0.05l0.33,0.2l0.85,1.75l0.4,0.25l1.24,-0.12l1.71,-0.81l0.79,-0.14l0.7,1.43l2.09,2.15l1.35,1.02l1.94,0.48l1.89,1.5l-0.27,1.82l0.15,0.38l1.01,0.75l2.41,0.77l1.86,2.64l0.72,2.14l-0.21,1.13l-3.27,1.95l-1.93,1.86l-2.32,1.47l-0.98,0.35l-0.79,0.74l-0.61,0.26l-0.88,-0.13l-2.58,1.36l-1.58,-0.34l-0.53,-0.48l0.43,-2.78l-0.37,-1.02l-0.35,-0.45l-0.48,-0.12l-1.2,0.52l-0.23,0.45l0.12,0.6l-1.5,0.03l-1.87,-0.87l-0.56,0.31l-0.18,1.3l-3.74,-1.32l-1.27,0.33l-1.72,-0.69l-0.39,0.05l-1.05,0.78l-1.13,-0.25l-0.91,-0.97l-0.61,0.04l-1.28,1.73l-5.63,0.79l-0.35,0.33l0.23,0.43l1.53,0.65l6.27,-0.12l1.89,0.46l2.17,-0.28l1.93,1.37l1.52,0.39l1.68,1.6l0.46,0.07l0.8,-0.41l1.24,0.06l1.39,0.48l4.15,-0.06l1.52,-1.15l2.06,0.22l1.06,-0.31l0.88,-0.73l1.74,-0.07l1.3,-0.7l0.43,0.17l0.49,0.84l-1.13,0.49l-1.07,0.03l-0.38,0.3l-0.54,2.14l-1.03,1.23l-2.47,0.91l-1.74,1.22l-1.82,0.88l-1.06,-0.11l-1.26,0.94l-2.84,1.13l-1.56,1.59l-3.24,1.35l-1.66,1.1l-4.46,0.06l-4.37,-0.25l-1.55,0.56l-0.25,0.42l0.35,0.35l1.33,0.16l0.92,0.49l1.39,-0.17l4.0,0.51l1.35,1.35l-0.8,0.39l-2.29,0.49l-0.3,0.52l1.51,4.14l-0.88,1.13l-0.06,4.42l-0.96,0.07l-0.36,0.29l-0.56,1.98l0.4,1.19l-0.03,2.25l0.28,1.52l0.62,1.3l-0.25,1.17l-2.12,3.38l0.05,1.51l0.64,2.28l-2.37,6.77l-1.76,2.26l-0.93,1.78l-2.08,5.31l-0.95,0.97l-1.03,0.66l-1.28,-0.67l-1.43,-0.43l-1.67,0.06l-2.42,0.6l-3.73,-0.4l-3.83,0.25l-0.92,0.53l-0.19,0.46l0.43,1.51l-0.8,0.15l-1.2,-0.5l-0.35,0.02l-2.2,1.42l-1.9,1.7l-0.71,1.14l-0.17,2.38l1.76,3.55l-2.0,2.18l-1.06,0.07l-3.83,-0.68l-6.49,1.54l-5.29,-1.1l0.53,-1.06l-0.02,-0.93l0.53,-3.04l-0.08,-1.23l-0.52,-1.24l-1.43,-1.42l-3.24,-4.83l-1.03,-2.15ZM610.35,291.1l-0.27,0.3l-0.17,0.86l-0.16,-0.02l-0.35,-0.49l0.95,-1.01l0.99,0.04l-0.99,0.33ZM608.6,293.08l-0.69,0.4l-0.58,1.21l-1.69,0.68l-0.21,0.33l-0.31,4.36l1.23,1.47l-1.23,0.69l-0.63,0.84l-0.52,1.41l-2.03,0.82l-0.98,0.77l-1.3,1.61l-0.6,1.99l-1.05,0.77l-0.55,0.09l0.48,-1.02l1.04,-1.38l-0.04,-0.53l-0.96,-0.91l-0.59,-1.44l-0.71,-1.05l0.57,-1.33l-0.31,-2.11l0.09,-1.92l1.91,-1.83l1.63,-1.96l1.69,-1.37l2.27,-0.59l0.99,0.53l0.56,-0.21l0.42,-1.14l0.49,-0.18l1.6,1.03ZM602.8,260.19l0.1,-0.33l0.6,-0.21l-0.46,0.3l-0.23,0.24ZM600.15,269.23l0.11,-0.28l0.27,-0.3l-0.36,0.57l-0.02,0.01ZM574.47,322.99l-0.65,0.71l-0.31,-0.99l-0.09,-3.23l0.23,-1.55l2.86,-5.75l1.39,-0.63l1.86,-3.66l0.51,-1.66l1.27,-2.75l0.2,-0.26l0.38,0.11l-0.59,0.73l0.06,1.24l-2.27,4.27l-0.62,2.77l-0.83,0.77l-3.37,9.86Z", "name": "Sweden"}, "IL": {"path": "M818.82,737.12l2.59,-4.48l1.71,-4.57l1.6,-6.28l2.09,-5.29l0.38,-1.55l1.22,-0.1l2.77,0.19l1.29,-0.9l0.49,-1.81l0.95,0.09l0.28,-0.44l2.27,-1.55l-0.11,1.21l0.91,2.08l-0.48,0.82l0.2,1.43l0.36,0.65l-1.57,2.88l-2.23,0.79l-0.69,0.76l-0.34,3.5l-0.4,-0.04l-0.91,-0.61l-0.17,-0.51l-0.49,-0.42l-2.73,-0.41l-1.89,1.3l-0.74,1.84l-0.75,2.7l0.43,3.83l-0.38,0.84l0.02,0.67l0.55,0.34l1.08,-0.28l1.47,0.67l-1.93,1.04l-1.21,1.12l-1.16,3.23l0.09,0.66l0.79,0.56l2.62,-0.22l2.48,-0.87l1.76,-0.87l-0.6,3.28l0.49,1.55l-2.7,6.71l-1.31,3.79l-0.02,4.22l-0.98,2.42l-1.26,6.16l-0.43,0.53l-3.09,-9.92l-1.74,-3.78l-0.55,-2.25l-3.23,-8.89l1.2,-1.09l0.15,-1.18l2.27,-2.33l0.09,-0.55l-0.52,-0.66Z", "name": "Israel"}}, "height": 790.3366477906968, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-in-mill.js b/plugins/jvectormap/jquery-jvectormap-in-mill.js new file mode 100644 index 0000000..bf41f73 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-in-mill.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'in_mill',{"insets": [{"width": 900, "top": 0, "height": 932.9661457393942, "bbox": [{"y": -4125883.782575976, "x": 7589536.343670783}, {"y": -752405.3962423205, "x": 10843813.641475728}], "left": 0}], "paths": {"IN-BR": {"path": "M484.32,277.67l0.73,-0.96l-0.3,-0.93l-0.88,-0.99l2.18,-0.33l2.83,0.22l2.64,-2.44l0.65,0.88l1.12,0.53l0.73,1.16l1.44,0.13l0.88,1.39l0.78,0.52l8.92,1.6l1.49,1.54l0.75,2.31l-0.09,2.43l-1.0,2.2l0.17,0.95l0.56,0.5l3.94,1.04l1.49,-0.43l1.1,0.93l2.15,0.84l0.79,1.78l1.96,0.85l0.04,0.75l0.36,0.35l0.96,0.04l2.23,-0.69l0.89,0.36l0.08,1.86l1.02,1.19l3.03,0.83l1.86,-0.39l1.41,-1.3l1.63,-0.0l2.51,-1.3l2.45,-0.81l2.64,1.62l0.21,0.97l-0.22,2.39l0.42,1.46l2.16,1.84l1.01,-0.0l0.22,0.89l0.54,0.28l1.3,-0.5l2.57,-2.01l1.7,-0.38l3.07,1.67l1.2,0.08l1.34,0.59l2.79,-0.96l0.36,0.09l0.11,0.57l0.46,0.36l1.14,-0.05l4.28,1.79l1.88,1.41l4.91,2.34l0.65,-0.32l0.42,-0.67l1.5,0.42l1.07,-0.27l0.84,-0.55l0.93,-1.39l2.89,-1.18l1.56,-1.41l0.73,3.4l1.29,2.14l1.24,0.5l2.44,-0.41l0.71,1.14l2.25,0.92l0.7,-0.4l0.94,-1.66l1.64,-0.68l1.77,0.1l2.15,1.18l1.43,0.3l2.71,-1.46l0.9,0.58l0.74,0.03l0.64,-0.42l0.39,-1.06l1.69,0.41l1.28,-0.84l0.78,0.58l1.04,1.56l1.36,0.93l1.28,-0.0l1.4,-1.3l0.98,-1.67l0.32,-2.54l1.11,0.19l1.81,-0.54l-0.25,1.26l2.57,2.21l-0.61,0.46l-0.14,0.71l1.31,0.93l0.18,0.65l-0.99,0.12l-1.4,1.13l-1.21,0.45l-3.14,3.08l-1.92,1.35l-1.46,0.45l-1.05,1.31l-3.05,2.6l-0.73,2.89l-0.66,0.33l-0.26,0.54l0.49,1.44l1.99,1.18l1.38,2.54l1.16,1.11l1.88,0.79l1.0,0.91l0.39,1.89l-0.42,2.19l0.68,1.39l-1.31,-0.23l-0.83,-0.82l-1.07,-0.2l-2.31,1.07l-0.91,0.98l-2.54,1.15l-0.86,1.17l-0.03,0.52l1.06,1.26l0.71,0.03l1.1,2.34l-1.16,1.61l-1.13,-0.8l-2.11,0.07l-2.4,-0.65l-0.85,-1.16l-1.55,-0.73l-2.09,1.48l-1.42,3.04l-1.75,-0.38l-1.94,0.54l-0.7,1.28l-0.53,2.54l-1.11,-0.28l-1.23,0.43l-1.15,1.08l-0.95,1.56l-0.02,4.14l-1.58,2.6l0.22,1.29l-0.25,2.5l-0.67,2.32l-3.65,-0.85l-1.11,1.73l-0.08,0.78l-1.8,-0.56l-1.86,-1.14l-0.7,0.13l-0.57,0.88l-0.58,0.3l-1.44,0.17l-1.24,-0.58l-1.1,0.08l-2.84,2.71l-0.35,2.31l-0.66,0.61l-0.34,1.45l-4.74,-2.95l0.93,-1.5l-0.46,-2.24l-2.49,-0.71l-1.39,0.5l-1.2,-0.75l-0.53,-2.93l-0.94,-1.11l-1.16,-0.27l0.25,-0.54l-0.25,-0.67l-1.15,0.06l-1.82,1.29l-1.16,0.12l-1.33,-1.63l-1.34,-0.72l-2.71,0.04l-1.03,0.64l-0.64,1.13l-0.35,1.75l-1.32,0.86l0.46,1.43l-0.08,1.26l-2.09,-0.13l-1.88,1.89l-1.05,-0.3l-2.8,-0.01l-3.56,0.74l-0.45,0.74l-3.09,1.2l-0.45,0.51l-0.04,0.72l-1.53,1.38l0.11,-1.07l-0.45,-0.39l-3.33,1.32l-1.97,-0.04l-0.37,-0.38l-0.39,-2.05l-0.44,-0.37l-0.85,0.15l-0.38,-1.56l-1.06,-0.48l-3.69,2.24l-0.86,1.72l-2.29,-0.51l-1.24,1.5l-0.27,0.79l-0.51,0.49l-0.76,0.1l-1.39,-1.35l-2.08,-1.34l-1.51,-1.71l0.38,-0.69l-0.02,-1.06l-0.71,-1.19l-0.78,-0.19l-0.66,0.49l-0.73,-0.27l-1.47,0.23l-0.36,0.39l-0.0,1.03l-0.3,-0.98l-0.78,-0.09l-0.53,1.26l-0.76,-0.87l-1.6,-3.93l-0.85,-0.67l-0.69,0.16l-0.72,1.49l-2.03,1.42l-2.05,0.28l-1.37,-0.23l-0.86,0.31l-0.55,0.68l-1.94,0.19l-4.92,-0.81l0.03,-2.88l-0.43,-1.19l0.61,-1.14l-0.28,-1.64l-0.55,-0.62l-2.0,-0.71l-2.6,-2.78l0.35,-1.72l-0.05,-2.24l-1.27,-2.58l0.34,-3.02l0.62,-1.14l1.7,-1.27l11.06,-6.27l0.86,-0.66l0.44,-0.81l2.19,-0.92l3.62,-3.02l1.7,-2.16l2.53,-1.98l0.88,-0.25l0.74,0.43l-0.04,1.29l0.37,0.92l0.82,0.61l1.2,0.16l1.16,-0.32l0.69,-0.62l0.03,-1.0l-0.41,-1.1l0.17,-0.52l1.25,-0.49l1.93,1.49l1.54,0.6l1.32,0.01l2.29,-1.37l0.73,-1.81l-0.34,-0.78l-2.28,-2.05l-2.42,-0.33l-1.18,-0.71l-0.5,-0.92l-0.82,-0.67l-3.49,0.28l-0.93,-0.9l-0.59,-1.69l-0.97,-0.39l-0.91,-1.45l-2.52,-1.19l-1.28,-2.57l-1.04,-0.81l0.41,-0.8l2.49,-0.34l0.91,-0.6l1.31,0.19l0.82,-0.39l0.25,-0.57l-0.78,-1.52l0.71,-1.33l0.02,-0.66l-0.45,-0.55l-2.83,-0.73l-2.18,-1.58l-1.33,0.6l-1.31,-0.25l0.0,-2.11l0.43,0.93l0.6,0.15l0.88,-1.02l1.95,-0.62l1.34,-2.77l8.58,0.29l0.57,-0.33l0.16,-0.55l-0.47,-0.95l-2.41,-2.3l-0.79,-0.41l-1.03,-0.04l0.16,-2.85l-0.51,-1.31l-1.39,-0.46l-1.37,0.64l-2.26,-1.46l-1.22,-2.32l-0.19,-2.14l-0.79,-0.77l-0.57,-1.24l-1.11,-1.03l0.06,-2.11l-0.66,-1.12l-1.11,-0.96l0.19,-1.5l-0.52,-0.38l-0.62,0.03Z", "name": "Bihar"}, "IN-PY": {"path": "M432.94,621.28l0.12,-0.11l0.06,0.17l-0.03,-0.0l-0.16,-0.05ZM434.43,621.71l0.34,-0.0l0.03,0.12l-0.21,-0.03l-0.16,-0.08ZM355.48,770.41l0.24,-0.33l0.83,0.78l1.19,-0.08l-0.49,1.07l1.07,0.9l0.61,-0.12l1.09,-0.94l-0.97,2.81l-1.98,-0.18l-0.66,-0.53l0.23,-1.51l-1.16,-1.87ZM356.86,803.07l0.79,-0.26l-0.03,-0.93l0.92,0.32l0.8,-0.45l0.68,0.07l0.07,4.51l-0.78,-0.6l0.25,-0.69l-0.28,-0.5l-2.69,-0.99l0.29,-0.48ZM218.44,768.85l0.02,-2.05l1.16,0.12l1.63,-1.29l0.73,0.2l-0.37,0.3l-0.72,-0.09l-0.44,0.41l-0.27,1.66l-1.25,1.09l-0.5,-0.37Z", "name": "Puducherry"}, "IN-DD": {"path": "M144.48,504.35l0.06,-0.81l0.49,-1.24l0.48,0.6l0.06,1.15l-1.09,0.3Z", "name": "Daman and Diu"}, "IN-DN": {"path": "M146.62,508.98l1.49,0.02l0.64,-1.32l0.96,0.1l1.81,-1.3l0.0,1.2l1.42,0.47l-2.51,1.64l-0.2,0.71l0.26,1.36l0.63,0.79l1.15,0.12l0.71,-0.32l0.3,-1.06l1.1,0.26l-0.01,2.67l-0.38,1.21l-1.24,-0.9l-1.12,0.47l-0.96,-0.54l-0.98,0.61l-1.35,-2.56l-0.26,-1.86l-1.39,-1.3l-0.07,-0.48Z", "name": "Dadra and Nagar Haveli"}, "IN-DL": {"path": "M269.18,237.92l-1.09,-1.45l1.02,-1.35l1.39,-0.53l0.24,-1.0l0.78,-0.87l-0.35,-3.41l0.21,-0.9l1.59,-0.79l1.2,-0.05l0.91,-0.88l2.3,0.67l1.4,-0.39l0.27,0.61l-0.2,0.97l0.58,1.16l2.51,2.23l0.25,0.66l0.62,2.22l-0.95,1.04l-0.26,0.81l0.7,1.44l-2.32,0.75l-0.66,0.79l0.48,1.01l-0.98,0.25l-2.63,-1.33l-0.89,-1.75l-2.19,-1.1l-0.66,0.01l-0.48,0.79l-2.76,0.39Z", "name": "Delhi"}, "IN-NL": {"path": "M779.92,344.86l0.24,-2.48l-0.5,-1.53l-1.51,-1.38l-1.72,-2.41l5.61,-4.5l1.79,-2.48l3.84,-3.32l0.18,-0.6l-0.86,-1.43l1.99,-1.01l0.92,0.2l0.22,1.55l-1.05,1.7l0.18,0.61l0.39,0.2l3.95,-0.86l1.52,-1.07l1.37,-2.13l-0.58,-1.75l0.0,-0.99l1.01,-1.64l0.11,-3.4l2.88,-3.87l2.12,-1.95l0.79,-3.49l2.04,-2.58l0.89,2.11l0.8,0.16l0.76,-0.33l1.67,-1.57l0.74,-1.09l0.25,-1.63l1.49,-1.74l1.12,-0.19l0.86,-0.7l1.24,0.02l2.52,-1.07l3.03,-1.88l1.13,-0.97l1.92,-2.9l1.52,-1.46l1.31,0.78l1.78,-0.04l4.5,-2.81l1.45,1.13l0.13,1.9l-0.88,1.28l-0.18,0.95l0.32,0.93l0.81,0.73l-0.26,2.06l0.63,1.74l-1.12,0.02l-0.96,1.1l-1.61,0.79l-0.48,2.09l-2.17,2.74l0.78,2.22l-0.69,2.6l0.11,2.79l0.48,1.15l0.9,0.47l-0.42,0.83l0.3,2.22l0.56,0.6l1.14,0.39l0.23,0.64l-2.48,2.95l-2.14,1.25l-0.24,1.45l0.63,3.47l-0.08,1.03l-1.42,0.62l-3.3,4.31l-0.08,0.67l-0.92,0.26l-1.66,2.11l-2.18,0.49l-1.29,0.92l-0.79,-0.14l-2.19,-1.69l1.06,-3.49l0.1,-2.14l-0.72,-0.37l-2.49,2.12l-1.72,0.98l-1.48,1.73l-1.75,0.89l-3.83,0.5l-1.34,-0.81l-1.99,0.08l-1.96,-1.16l-6.95,0.35l-1.1,0.4l-0.54,1.41l0.25,0.38l1.19,0.4l0.13,0.77l-3.93,3.81l-0.97,2.24l-1.16,1.64l-1.08,-1.27l-1.34,-0.42l-1.8,-1.16Z", "name": "Nagaland"}, "IN-WB": {"path": "M545.45,405.85l-0.5,-0.98l0.56,-0.42l5.08,-0.89l0.31,-0.72l-0.47,-1.55l0.74,-0.53l1.67,0.87l0.84,0.07l-0.32,2.17l0.35,0.57l1.81,0.66l1.35,0.95l1.69,-0.33l1.95,-1.65l0.58,-2.23l1.76,-1.44l7.16,-2.58l3.6,-0.58l1.37,-0.52l0.56,-0.8l0.21,-1.04l-0.38,-1.28l0.13,-0.59l1.64,-2.23l2.89,1.56l1.05,0.13l2.02,1.46l1.68,0.42l1.24,-0.23l0.42,-0.94l-0.98,-1.3l1.48,0.29l0.47,0.6l0.77,0.13l0.6,-0.83l0.08,-1.2l0.67,-0.26l0.38,-0.66l-0.04,-1.15l-1.61,-2.24l1.91,-0.48l0.42,1.44l0.56,0.34l1.97,-0.7l1.91,0.1l1.22,-1.17l-0.03,-2.65l0.4,-0.06l1.12,0.83l0.64,-0.01l0.71,-0.96l0.29,-1.21l1.52,0.03l0.69,-0.57l0.01,-0.7l-0.45,-0.74l-0.74,-0.19l-0.01,-0.67l2.93,-1.81l1.74,-3.39l0.04,-1.52l0.75,-1.33l-0.41,-1.07l0.04,-1.25l-0.42,-0.42l1.37,0.59l1.07,-0.12l0.94,-0.6l0.46,-0.93l-0.2,-0.47l-0.58,-0.24l0.58,-0.51l0.08,-0.51l-0.69,-2.04l-0.63,-1.08l-1.12,-0.31l-0.14,-0.29l0.68,0.28l0.62,-0.34l0.26,-2.07l0.61,-1.34l-0.14,-1.71l-1.05,-3.44l-2.07,-1.79l-0.21,-1.92l0.46,-1.62l0.97,-1.02l0.74,-1.55l-0.87,-2.23l-0.57,-0.72l-0.74,-0.08l-0.57,-0.84l0.56,-0.79l2.33,-1.03l0.96,-1.0l2.16,-0.97l1.4,1.03l1.9,0.33l0.47,-0.45l-0.11,-1.05l-0.63,-0.84l0.41,-2.35l-0.5,-2.1l-1.25,-1.16l-1.89,-0.81l-1.11,-1.14l-1.2,-2.32l-1.92,-1.09l-0.39,-1.0l0.85,-0.61l0.64,-2.73l2.92,-2.46l1.08,-1.34l1.42,-0.41l1.96,-1.39l2.66,-2.74l1.56,-0.7l1.28,-1.06l1.18,-0.21l0.32,-0.73l-0.46,-1.15l-1.07,-0.55l0.79,-0.66l-0.12,-0.71l-1.34,-1.38l-1.14,-0.68l0.23,-1.51l-0.57,-0.35l-2.11,0.6l-0.78,-0.16l2.21,-5.06l0.16,-2.07l-0.51,-3.36l-1.72,-3.31l-1.28,-1.98l-1.44,-0.95l-1.12,-1.75l0.87,-4.21l1.51,1.11l0.39,1.54l0.74,0.73l4.09,0.21l3.92,1.74l2.29,-0.56l2.85,-2.48l2.71,0.28l1.59,-0.16l0.79,0.57l1.28,0.26l2.69,1.54l0.46,1.37l0.19,3.46l0.29,0.34l1.63,-1.15l0.76,1.97l0.84,0.27l1.26,-0.33l0.64,0.28l1.07,0.92l0.7,1.54l0.63,0.6l3.73,0.29l1.04,-0.28l0.94,-0.75l1.87,-0.3l3.01,1.82l2.09,-0.18l2.3,0.6l0.6,0.46l-0.29,1.59l0.63,0.37l2.22,-0.41l1.68,0.7l2.49,0.24l0.75,-0.98l0.75,2.6l0.28,3.28l-0.9,2.05l-0.46,2.89l-0.88,0.81l0.31,0.9l-1.25,0.59l-0.72,1.5l-0.86,0.56l0.04,1.22l-1.55,0.49l-0.18,-0.8l-0.86,-0.37l-1.27,0.64l-0.02,1.22l-0.94,0.39l-0.42,1.08l0.57,0.68l-0.48,0.58l0.23,0.75l1.09,0.15l-1.54,1.52l-0.38,1.81l-1.38,-1.31l-2.29,0.18l-0.73,-0.75l-1.31,0.6l-0.84,-0.27l-1.33,-1.22l-1.01,-0.45l-0.8,-1.36l-2.47,-1.14l-0.46,-0.78l-0.28,-2.06l-1.01,-1.97l-0.01,-0.39l0.84,-0.04l0.09,-1.08l-1.36,-0.64l-0.24,-0.96l-1.33,-0.55l-1.96,-1.58l-0.57,-0.06l-0.99,0.67l-0.74,1.31l-0.01,0.73l0.75,0.92l1.61,0.68l0.49,1.17l0.62,0.23l0.34,0.57l0.65,0.14l-0.29,0.34l-1.18,0.29l-0.68,-0.22l-1.29,-1.25l-1.04,-0.25l-0.91,0.46l-0.72,1.18l-0.91,-1.51l-1.33,-0.61l-1.97,0.6l0.81,-0.62l0.24,-1.27l-1.29,-0.96l-0.66,-1.82l-1.2,-0.43l-0.74,-1.07l-1.95,-0.46l-2.01,-1.77l-1.53,-0.53l-0.33,-2.09l-0.46,-0.49l-0.9,0.45l-0.68,1.2l-1.21,3.24l0.06,0.87l0.87,0.76l0.58,-0.35l0.14,-0.78l2.98,0.87l0.96,2.56l-1.84,-0.15l-3.0,2.73l-0.3,2.13l-3.15,1.09l-1.89,1.47l-0.78,1.93l0.51,1.07l-0.12,0.57l-0.79,0.64l-1.63,3.72l0.4,2.48l1.35,2.12l1.02,0.06l2.3,-0.88l0.79,0.4l1.81,2.04l2.96,2.25l0.25,2.15l1.56,0.98l1.71,2.04l2.13,0.28l2.25,1.05l0.73,-0.2l0.76,-0.76l1.66,-0.37l1.12,1.2l-0.48,1.96l1.4,2.3l1.33,0.44l0.8,0.66l2.14,0.08l-0.15,0.49l-1.45,1.22l-0.04,1.1l-0.32,0.07l-0.24,0.62l-2.61,-0.88l-0.47,0.18l-0.58,0.98l-1.64,-0.16l-2.86,-0.85l-1.23,-0.01l-1.12,0.71l-2.46,-0.78l-1.5,0.37l-0.35,0.76l-0.17,3.89l-0.99,1.68l-0.5,1.66l-1.59,2.27l-1.78,-0.3l-0.37,-1.1l-1.21,-1.04l-1.33,0.16l-1.59,0.83l-0.21,0.5l0.78,2.11l-0.83,1.08l-0.67,0.34l-0.28,1.04l-0.9,0.53l-0.14,1.33l-0.83,2.23l0.28,0.45l0.9,0.3l0.73,1.05l0.07,1.91l1.05,1.48l0.84,0.18l8.01,4.07l2.42,1.81l5.01,0.7l1.0,-1.38l1.17,0.59l0.6,0.78l0.3,2.04l-0.42,0.68l-1.42,0.76l-0.3,0.7l-0.09,2.48l0.81,1.21l0.65,0.38l-0.58,0.9l0.35,2.32l-1.67,1.6l-1.68,0.07l-0.85,0.66l-0.02,1.23l-0.76,1.49l0.25,1.1l-0.6,3.39l0.72,0.51l-0.1,0.68l0.41,0.56l1.25,0.21l1.1,1.66l1.75,1.33l0.39,0.76l0.88,0.04l0.61,-0.71l-1.51,4.2l-1.03,1.81l-0.01,0.88l0.44,0.92l2.58,1.08l1.56,-0.51l3.8,1.0l-2.85,2.89l-0.46,0.98l-0.39,3.23l1.78,3.39l1.51,0.97l-0.23,1.76l-0.92,1.57l1.48,4.98l-0.13,0.51l-0.56,0.36l0.08,0.71l1.11,0.51l0.92,3.0l-0.39,1.34l0.91,2.85l-0.27,0.58l1.66,2.45l0.42,1.62l-1.03,0.69l-0.22,1.48l0.63,1.91l0.14,2.67l-1.18,0.15l-0.44,0.52l-1.34,-0.77l-0.36,-1.32l-0.38,-0.28l-0.81,0.22l-0.3,0.82l0.64,1.51l2.25,1.42l0.54,0.87l0.86,3.85l1.27,1.9l-0.01,1.43l-0.48,0.14l-0.33,-0.52l-0.69,-0.07l-0.64,0.78l-1.89,-1.22l-1.24,-0.27l-0.7,-3.49l-0.61,-0.28l-0.4,0.34l-0.62,2.07l0.63,2.03l-0.94,0.29l0.5,-1.05l-0.26,-0.97l-0.39,-0.27l-1.42,1.86l0.48,2.23l-0.61,0.28l-1.15,-0.41l0.33,-1.07l-1.1,-2.67l0.57,-3.6l-0.26,-0.99l0.59,-1.77l0.2,-2.12l1.06,-1.02l0.23,-0.74l-0.27,-0.9l-1.35,-1.0l1.61,-2.01l-1.14,-0.17l-1.44,1.2l-0.31,1.39l1.07,0.87l-0.15,0.5l-0.98,2.08l-1.2,-0.05l0.8,-2.06l-0.43,-2.86l1.34,-2.58l-0.1,-0.63l-0.99,-0.36l-1.64,3.33l0.18,2.1l-0.71,1.31l-0.13,2.49l-0.97,2.58l-0.07,2.69l0.46,0.46l1.46,-0.37l0.16,0.55l-0.31,1.14l-0.55,-0.13l-0.4,0.44l0.23,2.14l-0.66,0.46l-0.07,1.76l-0.47,-0.41l-0.69,0.01l-0.11,1.32l-0.51,-0.09l0.07,-1.06l0.6,-0.74l0.46,-2.03l-0.73,-2.54l0.85,-1.8l-0.11,-1.1l-0.98,-1.56l0.53,-1.9l-0.75,-0.79l-0.46,-0.03l-0.08,0.85l-0.75,1.52l0.64,2.32l-0.63,0.42l-0.66,1.98l0.48,3.04l-0.28,0.49l-1.35,0.68l-0.22,-1.85l0.28,-0.81l-0.46,-0.52l-1.07,0.39l-0.38,-0.84l-0.84,0.2l-0.44,-2.18l-0.57,-0.66l-0.63,-0.16l-0.42,0.44l0.08,0.75l1.01,3.85l-0.42,1.45l0.66,1.05l-0.95,0.35l-0.35,-1.27l-0.51,-0.52l-0.6,0.03l-0.58,-1.49l0.87,-2.47l-0.23,-0.94l0.2,-0.63l-1.67,-3.15l-0.24,-2.24l0.24,-0.83l2.02,-2.79l-0.71,-3.23l-3.61,-1.75l-0.09,-0.54l-0.61,-0.27l-0.84,0.43l-0.77,-0.39l-1.03,-1.26l-0.97,-4.14l-0.49,-0.54l-0.92,-0.13l-0.41,0.6l0.54,0.86l0.74,3.83l0.6,1.16l1.56,1.46l3.72,0.8l0.73,0.61l0.32,1.05l-0.22,0.69l-1.51,1.64l-2.08,0.56l0.04,1.33l-2.0,4.07l-2.48,1.79l-1.01,1.44l-4.96,3.02l-2.47,0.14l-4.13,1.11l-1.25,-2.09l0.04,-2.21l-0.26,-0.62l-0.76,-0.57l-4.7,-1.12l-0.64,-1.11l-0.35,-2.0l-0.83,-1.17l-2.44,-0.78l-2.21,2.36l-0.3,-0.07l-0.94,-1.35l0.28,-2.14l-0.68,-1.6l-1.45,-1.03l-1.64,-0.67l-1.74,-0.15l-2.08,-1.48l-1.77,-0.61l-0.33,-0.57l0.32,-0.22l0.61,-0.36l1.19,0.03l0.28,-1.32l2.26,-0.3l0.3,-0.79l-1.52,-1.54l-0.47,-2.23l-2.14,-1.64l-0.14,-0.58l0.98,0.03l0.45,-0.53l-0.69,-1.9l-1.33,-1.0l-2.63,-0.5l-0.79,-2.5l-1.98,-1.62l-0.94,-0.49l-1.31,-0.05l-1.46,-1.14l0.13,-2.51l0.41,-1.21l-0.13,-0.83l0.77,-0.68l1.92,-0.56l0.18,-0.83l-1.95,-0.64l-4.23,-0.15l-1.7,-0.37l-1.31,-0.0l-1.19,0.45l-5.28,-5.12l-1.99,-0.54l-1.51,0.49l-0.33,-1.19l-1.25,-1.57l0.38,-1.25l1.12,-1.59l0.49,-2.12l-0.57,-0.72l-1.16,-0.03ZM621.37,462.65l0.62,0.85l-0.48,1.24l-0.1,-0.46l-0.03,-1.63ZM639.28,467.29l-1.47,0.01l-0.03,-1.73l1.33,0.75l0.17,0.97ZM630.2,458.45l-0.18,-0.62l0.39,-0.95l1.22,-1.6l0.22,0.26l-0.7,3.21l-0.96,-0.3ZM615.62,464.13l-1.95,-0.31l-0.34,-0.61l1.43,-4.38l1.08,-1.59l0.53,2.85l-0.1,1.69l-0.79,0.55l-0.14,0.48l0.28,1.31ZM614.23,456.85l0.15,-1.15l0.64,-1.08l0.26,0.49l-0.18,0.81l-0.87,0.92Z", "name": "West Bengal"}, "IN-HR": {"path": "M197.67,196.54l-1.92,0.66l-0.68,-0.19l-0.12,-0.33l0.58,-1.74l1.54,-0.71l0.56,-0.71l0.04,-0.87l-1.03,-1.19l0.03,-0.46l3.74,1.02l2.05,-1.87l3.05,-0.56l0.68,0.68l2.25,0.52l0.65,1.26l1.95,1.36l2.44,-0.58l0.57,-1.17l-0.41,1.39l0.24,1.61l1.61,1.38l0.49,-0.02l0.38,-1.05l0.49,-0.25l0.24,0.89l0.89,1.26l-0.77,0.21l-0.05,1.32l-0.89,0.47l-0.18,0.49l2.26,4.51l0.68,0.02l1.72,-0.75l-0.08,-1.9l0.4,-0.66l1.05,-0.42l0.07,-0.72l1.15,-1.12l1.84,-2.76l4.54,1.48l1.87,-0.35l1.18,0.2l0.81,-0.43l0.25,-1.03l1.84,-0.6l1.45,0.72l0.68,1.43l0.66,0.57l2.19,0.36l1.5,-0.6l1.29,-0.08l1.38,-1.54l2.31,-0.92l2.19,-1.64l-0.08,-0.61l-0.99,-0.75l-0.42,-1.25l0.77,-2.4l0.6,-0.91l-0.16,-0.9l0.93,-0.28l0.17,-0.47l-1.41,-0.86l0.04,-0.31l1.21,0.8l1.17,0.28l1.1,-0.22l0.28,-0.67l0.98,0.56l0.49,-0.29l0.43,-0.88l0.03,-1.16l0.63,1.85l0.67,0.93l1.52,0.62l1.31,-0.04l3.08,-2.2l0.45,-2.11l-1.11,-0.83l-0.74,-1.06l1.96,-0.97l2.75,-2.1l0.15,-0.69l-0.67,-0.42l0.18,-0.95l0.62,-0.28l0.94,0.26l1.29,-0.13l1.11,2.15l0.94,0.05l0.48,-0.5l0.29,-1.07l-0.34,-3.0l0.44,-1.02l-0.52,-1.05l0.23,-1.9l-0.5,-1.28l-0.77,-0.38l-0.31,-1.22l-0.78,-0.13l0.06,-1.77l-0.44,-1.16l0.68,-1.4l0.01,-0.71l-0.29,-0.49l-0.85,-0.37l-0.78,-1.44l0.75,-0.5l0.96,1.15l1.8,0.0l0.72,0.82l0.49,1.43l1.37,0.91l0.34,0.94l3.46,1.85l0.71,0.88l0.16,2.59l-0.5,1.22l0.09,0.78l2.08,1.94l0.25,0.78l0.44,0.23l0.93,-0.4l1.76,0.9l1.62,0.31l0.93,0.77l1.26,-0.33l0.59,0.71l2.07,-0.23l2.03,1.34l-0.49,3.0l-4.77,4.22l-0.4,1.32l-2.42,1.67l-0.2,0.66l-0.96,0.19l-0.26,0.72l-1.47,1.42l-0.66,1.71l-0.89,4.15l-0.47,0.9l-0.85,0.28l0.03,1.48l-0.81,0.56l-0.03,0.91l-0.63,0.62l-0.17,1.53l0.38,1.01l-0.82,0.38l-0.38,0.67l0.4,1.11l-0.1,1.06l0.71,0.51l0.71,-0.06l-1.49,1.77l0.33,0.56l2.21,0.16l-0.49,1.16l0.06,1.19l0.44,0.83l-0.56,1.13l0.32,4.99l-0.22,0.57l1.83,3.91l-0.49,0.52l-0.07,0.59l1.38,1.81l-0.48,0.8l-1.19,0.43l-2.62,-0.68l-1.12,0.96l-1.76,0.23l-1.23,0.79l-0.42,1.42l0.38,3.16l-0.71,0.77l-0.21,0.93l-1.26,0.39l-1.28,1.97l1.21,2.02l0.49,0.29l3.29,-0.53l0.51,-0.79l1.96,0.95l0.92,1.77l2.96,1.49l1.17,-0.15l0.67,-0.44l0.11,-0.6l-0.47,-0.68l0.36,-0.34l2.21,-0.63l1.36,1.03l-0.01,0.77l0.51,0.3l0.72,-0.35l0.65,1.19l0.96,-0.1l-0.04,0.82l0.65,0.59l-0.7,2.07l0.67,0.83l0.27,1.32l1.0,0.34l-0.17,0.55l-0.64,0.25l-0.17,0.47l0.74,0.72l-0.77,0.85l0.01,1.32l-0.24,-0.15l-0.61,0.36l0.19,1.33l-0.23,0.73l0.1,0.41l1.03,0.81l0.7,1.8l-0.54,0.3l-1.08,1.73l-1.24,-0.14l-1.14,1.02l-2.4,0.84l-0.96,0.82l-1.05,0.03l-0.37,0.47l-0.86,-0.73l-0.59,0.56l-0.3,-0.44l-0.52,-0.11l-0.85,0.76l-1.92,-0.54l-0.95,0.12l-0.53,1.25l0.42,0.62l0.78,0.36l-1.77,0.36l-1.03,1.64l-1.71,0.27l-0.23,-0.17l0.72,-0.3l0.15,-0.38l-0.57,-0.95l0.43,-2.47l0.88,-1.72l-0.19,-3.96l-0.52,-2.28l0.64,-2.88l-0.31,-0.93l-2.2,-2.22l-0.95,-0.48l-1.46,0.62l-1.38,1.94l-3.45,2.5l-0.25,0.95l0.49,1.35l-1.85,0.43l-0.89,0.93l-0.83,-2.12l-1.96,-0.59l0.71,-0.57l-0.55,-0.72l0.54,-0.08l0.22,-0.4l-0.98,-1.7l-0.96,-0.35l-1.98,0.38l-0.71,-1.02l-1.24,-0.44l-0.56,0.44l-0.0,0.81l1.23,1.18l-0.83,0.3l-0.23,0.52l0.19,0.51l1.05,0.65l-0.19,0.59l-0.5,0.06l-1.74,-1.05l-0.94,0.38l-1.54,-0.12l-0.66,0.79l-0.18,1.38l0.66,2.16l0.02,1.52l0.69,0.96l0.29,1.5l-0.62,0.44l-1.77,-1.38l-3.88,0.2l-0.48,-1.45l-1.14,-0.82l-0.09,-0.38l1.1,-0.25l0.59,-0.56l0.14,-0.71l-0.49,-0.68l0.63,-1.33l1.08,-1.16l0.14,-0.82l-0.76,-0.63l-0.7,0.22l-0.51,0.59l-0.74,-0.62l1.69,-0.98l0.71,-0.94l0.81,0.77l0.71,0.05l0.34,-1.01l-1.72,-2.96l-2.17,-2.79l-2.33,-2.11l-2.17,-0.91l-1.14,0.06l-0.05,-1.25l-2.28,-1.69l-3.18,-4.01l-3.25,-9.33l1.03,-1.13l-0.06,-1.08l-0.44,-0.58l-1.68,-0.7l-1.73,-2.58l0.02,-0.98l-0.52,-1.06l0.81,-0.33l0.22,-0.76l-0.73,-2.06l-0.71,-0.18l-1.11,0.73l0.1,-1.56l-0.26,-0.42l-0.65,-0.14l-1.3,0.6l-0.77,0.84l-0.86,0.08l-1.19,-0.66l-1.07,0.71l-1.9,0.54l-1.12,-1.64l-0.56,-0.19l-1.59,0.27l-1.1,-2.41l-0.82,-0.74l-2.52,-0.92l-0.97,0.26l-1.36,1.06l-1.48,-0.23l-1.78,0.2l-0.51,0.37l-0.23,0.76l-0.28,-0.03l-2.1,-3.33l0.28,-0.41l1.47,-0.13l0.47,-0.84l0.07,-1.62l-1.13,-1.94l0.92,-5.58l-0.73,-0.83l-1.02,0.44ZM259.41,180.33l-0.42,0.53l-0.13,0.09l0.07,-0.25l0.48,-0.37Z", "name": "Haryana"}, "IN-HP": {"path": "M229.45,117.96l1.78,-1.92l0.71,-1.52l-0.42,-0.79l-1.07,0.13l-0.02,-1.36l3.39,-1.15l1.65,-1.71l4.23,-3.05l-0.07,-0.68l-1.73,-2.9l0.38,-1.22l1.73,-1.98l0.07,-1.31l-0.71,-1.74l0.32,-2.08l-1.4,-2.4l-1.75,-1.91l-0.13,-0.95l1.18,-0.43l1.48,0.51l0.94,0.92l0.79,-0.09l4.49,-3.83l4.22,-1.75l0.9,-0.95l0.55,-1.64l2.1,-1.4l1.27,-0.58l3.51,-0.66l0.95,-0.52l2.35,1.47l3.95,-0.18l5.58,5.42l4.66,2.96l1.53,0.84l6.68,2.06l0.97,-0.1l0.54,-0.69l2.55,-0.39l2.39,-0.78l1.97,-1.57l2.83,-1.51l4.08,4.65l1.07,2.36l1.06,1.32l0.31,2.34l2.3,3.1l1.48,0.01l1.99,-1.8l2.17,-0.84l2.03,-0.16l0.85,-0.83l1.36,-0.66l0.22,-1.01l0.92,0.01l0.38,1.9l-0.26,1.58l-2.3,2.04l-0.82,2.5l0.0,1.13l0.76,0.84l0.89,0.12l1.87,-1.75l1.92,3.19l-0.51,1.13l0.86,3.58l-0.14,1.8l1.83,1.02l4.14,5.78l2.59,1.76l0.19,0.99l-0.67,1.45l-0.59,2.7l-0.94,1.85l0.75,1.03l-0.01,1.01l0.96,1.57l1.22,0.41l1.58,1.69l-3.62,3.17l0.06,1.16l1.86,1.29l-0.72,3.51l0.1,0.8l0.49,0.69l1.22,0.56l2.79,-0.26l1.58,1.74l1.69,2.52l0.03,0.64l-1.52,0.33l-1.82,-0.11l-0.93,-0.71l-1.48,-2.18l-4.35,-0.29l-1.49,-0.5l-3.2,0.35l-2.0,-1.63l-0.97,-0.01l-1.04,-0.74l-1.82,-0.16l-1.0,0.16l-1.58,1.0l-1.51,0.46l-4.45,2.55l-3.03,-0.02l-4.59,4.61l0.1,1.68l-1.55,0.35l-0.07,0.87l1.2,1.32l0.08,0.92l-0.09,0.37l-0.57,-0.32l-0.55,0.2l-1.49,3.28l0.05,1.22l0.89,0.92l0.27,1.62l0.79,1.6l-0.76,0.85l-0.03,0.51l0.97,1.5l1.17,0.3l-0.02,0.5l-4.31,2.33l-2.78,0.6l-0.54,1.0l-1.24,-0.9l-1.78,0.25l0.35,-0.76l-0.47,-0.5l-2.06,0.86l-0.62,-0.66l-1.76,-0.37l-1.86,-0.95l-0.96,0.35l-0.19,-0.67l-1.61,-1.27l-0.4,-0.67l0.53,-1.47l0.06,-1.86l-0.36,-1.18l-0.9,-1.08l-3.39,-1.8l-0.27,-0.87l-1.32,-0.83l-0.45,-1.35l-0.95,-1.09l-1.97,-0.09l-1.17,-1.21l-1.44,0.74l-4.03,-3.4l-0.52,-1.32l0.49,-1.87l-0.67,-0.63l0.08,-1.55l0.76,-1.11l-0.03,-0.41l-0.37,-0.37l-0.92,-0.05l-0.01,-0.8l-0.54,-0.83l-0.54,-0.15l-0.51,0.57l-0.55,-0.83l-1.05,0.02l-0.81,-0.71l-0.55,0.31l-2.49,-4.37l-1.8,0.74l-0.04,1.86l-0.67,0.19l-0.54,1.21l-0.85,-0.29l-1.23,0.33l-0.44,-0.26l-0.89,-1.09l-2.37,-7.15l-4.5,-8.19l0.07,-0.38l1.15,-0.14l0.15,-0.7l-2.74,-4.52l-5.6,-2.94l-3.59,-0.7Z", "name": "Himachal Pradesh"}, "IN-AS": {"path": "M663.07,316.48l0.01,-0.33l2.23,-0.81l0.27,-0.58l-0.2,-0.73l0.78,-0.56l0.58,-1.33l1.61,-0.9l-0.43,-0.98l0.82,-0.66l0.51,-3.03l0.94,-2.19l-0.3,-3.5l-0.71,-2.22l1.37,0.07l6.69,-1.16l1.04,-0.91l0.73,-1.87l0.84,-0.52l2.26,-0.19l1.89,-1.28l0.86,0.13l2.83,1.94l3.6,1.77l4.05,0.43l8.94,-0.5l1.75,-0.74l0.81,-0.01l3.25,0.08l2.45,0.93l1.24,-0.17l1.11,-0.58l1.4,-2.16l0.7,-0.32l1.42,0.14l0.88,1.73l0.8,0.57l2.17,-0.43l1.87,0.42l1.57,-0.18l3.68,-1.8l0.91,1.59l0.76,0.22l0.63,-0.55l-0.09,-1.07l0.42,-0.45l-0.02,-0.62l1.9,1.21l2.1,-0.24l1.36,-1.2l0.28,-0.99l3.65,0.29l3.76,-0.78l8.62,-2.47l2.73,-1.83l3.43,0.48l3.48,1.5l0.3,0.71l0.71,0.55l1.88,0.49l10.99,-1.18l1.14,0.32l1.27,0.98l0.87,0.01l1.48,-0.64l3.25,-0.5l1.99,-0.77l4.25,-3.13l0.32,-0.77l-0.24,-1.72l0.51,-0.89l4.15,-4.24l8.09,-6.65l0.47,-1.11l-1.32,-1.97l0.7,-0.82l1.01,1.03l2.02,0.77l3.03,-0.68l1.08,0.66l1.54,-0.32l4.22,-2.16l4.21,-1.1l4.59,-2.26l9.18,-3.21l1.71,-0.97l1.72,0.75l1.48,0.08l4.22,-1.06l4.0,-2.54l1.27,-0.38l7.37,-0.1l-2.08,3.62l-3.49,4.12l-0.39,1.22l0.72,3.03l2.67,2.25l0.25,1.82l-0.48,1.35l0.33,0.7l-0.05,1.3l0.79,0.26l1.3,-1.47l0.92,-0.12l0.74,0.97l-0.03,1.23l-1.02,0.66l-0.4,0.89l-1.02,0.43l-0.42,0.76l-0.96,-0.32l-2.26,0.04l-4.83,1.83l-2.47,-1.34l-1.74,0.34l-0.89,0.84l-0.76,2.13l-1.08,1.05l-2.06,0.87l-2.93,2.18l-2.33,0.23l-1.17,1.42l-3.92,2.33l-1.33,0.03l-1.25,-0.77l-0.62,0.03l-1.42,1.26l-2.28,3.32l-0.98,0.83l-2.89,1.8l-2.43,1.03l-1.31,-0.0l-0.86,0.71l-1.1,0.15l-1.9,2.12l-0.28,1.68l-0.66,0.97l-1.47,1.38l-0.68,0.17l-0.59,-1.92l-0.66,-0.39l-0.54,0.12l-2.29,2.96l-0.75,3.42l-2.08,1.89l-2.98,4.02l-0.17,3.6l-1.03,1.73l0.01,1.2l0.57,1.47l-1.16,1.72l-1.19,0.85l-3.43,0.81l1.09,-1.91l-0.08,-1.11l-0.43,-0.8l-1.57,-0.43l-2.36,1.15l-0.41,1.0l0.9,1.2l-3.78,3.26l-1.75,2.44l-5.74,4.65l0.02,1.06l1.74,2.27l1.43,1.25l0.42,1.24l-0.09,1.81l-1.83,2.72l-2.5,5.47l-0.88,0.27l-0.67,0.79l-0.14,1.08l0.51,1.11l-1.1,0.82l0.37,1.06l-1.35,2.11l-0.19,0.93l-1.4,-0.34l-0.76,0.41l-0.42,0.68l-0.98,3.15l0.15,0.92l0.37,0.32l-0.7,1.62l0.54,1.23l-1.03,0.63l-0.78,4.46l-0.49,0.04l-0.71,1.05l-1.92,-0.33l-2.5,0.78l-1.72,-3.21l-0.61,-0.53l-0.52,-0.02l-0.53,0.59l-1.18,3.26l-2.61,2.91l0.05,1.31l-0.98,0.5l-3.21,2.95l-0.74,-0.22l-0.53,-0.84l-0.23,-0.86l0.42,-1.1l-0.34,-0.48l-4.04,-0.06l-1.99,-0.48l0.99,-2.26l0.18,-1.77l-0.74,-1.72l-0.3,-1.98l-2.13,-1.46l0.78,-3.19l1.58,-4.31l0.04,-1.65l-0.52,-1.57l0.67,-0.52l0.99,0.32l2.9,1.82l3.14,-0.9l0.81,-1.3l-0.35,-1.35l-0.87,-0.64l-0.1,-0.43l-1.9,-1.24l3.56,-3.27l1.3,-0.42l0.35,-0.75l2.67,-0.27l0.89,-0.99l3.76,-1.27l0.46,-0.64l-0.78,-1.58l0.37,-1.38l-0.38,-1.05l-2.72,-2.53l-2.06,-0.78l-0.47,-0.7l-0.81,-0.43l1.34,-1.1l1.33,-1.73l0.23,-0.63l-0.27,-0.67l-1.06,-0.16l-1.61,0.87l-3.56,-3.68l-2.01,-1.75l-1.09,-0.46l-2.26,1.22l-2.7,0.45l-1.34,0.75l0.18,-1.73l-0.23,-1.9l1.48,-3.54l-0.29,-0.86l-0.88,-0.3l-0.05,-0.67l2.62,-2.44l0.29,-0.89l-0.27,-0.45l-3.49,-0.3l-3.33,1.02l-1.08,-0.05l-2.93,0.66l-0.79,-0.14l-2.03,-1.5l-0.88,0.03l-1.87,1.45l-1.06,2.67l-1.17,1.02l-0.79,-0.11l0.48,-1.79l-0.31,-1.05l-0.62,-0.43l-1.23,-0.02l-3.89,4.8l0.26,0.86l-1.79,0.13l-1.8,0.55l-1.04,0.78l-1.85,2.29l-1.11,0.57l-0.36,-0.65l-0.11,-3.58l-0.9,-0.34l-2.65,0.99l-0.98,-0.4l-0.72,0.37l0.17,-1.18l-0.25,-0.83l-1.14,-0.53l-0.7,-0.86l-3.36,-0.26l-1.72,0.28l-0.87,0.55l-0.12,-0.83l-0.79,-0.34l-3.3,0.94l-0.24,-0.8l-0.65,-0.4l-0.61,0.19l-1.3,1.31l0.29,-0.71l-0.11,-0.76l-1.17,-0.96l-1.09,-0.45l-2.78,-0.18l-0.9,0.14l-1.44,0.94l-5.77,0.82l-3.11,2.52l-1.92,2.43l-0.44,1.79l-0.72,1.25l0.16,2.24l1.61,1.92l-0.05,0.49l-0.77,0.48l-2.0,0.28l-0.42,0.72l-0.22,2.1l-1.52,0.65l0.59,-5.87l-1.02,-2.98l-0.55,-2.85l0.1,-0.67l1.34,-2.33l0.13,-0.78l-0.68,-0.66l0.5,-0.89l-0.56,-0.92l-0.84,0.15l-0.91,-1.29l-0.12,-1.51l-1.12,-2.31l-0.58,-0.37l-1.15,-0.04Z", "name": "Assam"}, "IN-UT": {"path": "M290.95,175.24l-0.31,-0.45l0.16,-0.23l3.37,-0.85l3.64,-1.92l0.42,-0.6l-0.06,-1.2l-1.32,-0.46l-0.68,-1.08l0.48,-0.37l0.27,-0.91l-0.22,-0.97l-0.63,-0.85l-0.26,-1.61l-0.89,-0.91l-0.01,-0.76l1.22,-2.78l0.89,0.28l0.59,-1.05l-0.14,-1.41l-1.18,-1.28l0.81,0.08l0.67,-0.49l0.3,-0.73l-0.32,-1.05l3.9,-4.07l0.54,-0.28l2.79,0.1l4.5,-2.57l3.73,-1.55l1.69,0.15l0.85,0.68l1.03,0.03l1.2,1.2l0.94,0.46l2.61,-0.37l2.11,0.53l4.18,0.25l1.13,1.91l1.22,0.95l3.16,0.05l1.25,-0.6l0.0,-1.27l-1.82,-2.75l-1.58,-1.74l0.87,-1.39l0.96,0.85l1.0,-0.03l1.1,-3.41l1.16,-0.22l2.08,1.39l0.62,1.44l1.05,0.36l-0.03,1.25l0.74,0.86l0.04,1.22l1.46,0.85l0.54,2.52l0.53,0.57l2.26,0.97l1.08,2.47l2.17,0.27l1.63,2.04l1.6,0.58l1.91,-0.81l3.23,-0.54l3.15,0.76l1.58,2.12l3.25,1.54l1.81,2.14l1.15,0.36l1.78,-0.62l0.99,1.35l0.94,0.56l-0.58,1.06l-0.99,0.19l-0.34,0.48l0.09,0.66l0.95,1.13l0.08,0.47l-0.68,1.46l0.45,0.55l2.1,-0.18l2.17,0.6l5.67,2.86l2.65,0.07l3.78,2.21l1.84,2.43l5.1,1.78l0.86,0.44l0.68,1.13l-2.12,0.8l-0.8,-0.96l-0.55,-0.09l-0.49,0.35l-1.01,1.05l0.22,1.15l-0.44,0.64l-2.27,1.77l-1.2,1.7l-2.2,1.62l-2.18,0.57l-0.85,1.97l-2.18,2.84l-0.56,0.44l-1.9,0.52l-0.92,0.77l-0.45,0.93l-0.04,1.03l0.96,3.25l-1.75,1.83l-0.16,1.01l-1.64,1.45l-0.25,0.68l-1.2,0.53l-0.28,0.84l1.3,3.62l0.76,0.26l-0.56,2.85l-0.47,-0.21l-0.86,0.34l-0.15,0.75l0.5,1.37l-0.14,0.51l-1.7,0.08l-1.15,0.63l-0.63,1.38l-0.35,2.99l-1.44,0.97l-0.65,1.28l0.08,2.75l1.04,0.9l-1.16,1.58l-1.43,0.55l-0.87,-0.37l-0.04,-1.04l-0.44,-0.24l-0.79,0.2l0.08,-0.94l-0.38,-0.4l-1.62,0.37l0.3,-1.52l-1.13,-0.87l-2.18,-0.29l-0.6,0.22l-0.26,0.74l-0.54,0.19l-1.94,-0.41l-1.16,0.47l-0.67,-0.89l-1.55,-0.1l-2.32,0.86l-0.71,-2.13l-1.46,-1.68l-2.4,-0.13l-3.8,-2.61l-0.66,-0.74l-0.55,-1.37l-2.39,-1.3l-0.84,-0.11l-3.42,1.35l-0.4,-1.87l-1.03,-1.41l-4.38,-2.28l0.11,-0.62l0.69,-0.26l1.19,0.27l0.76,-1.03l0.69,0.21l0.69,-0.27l1.77,-1.76l0.03,-1.29l-3.55,-1.07l-4.97,-2.81l-1.61,-1.38l-2.29,-3.67l-1.11,-1.1l-3.59,-1.79l-2.29,-3.9l-2.23,-2.17l-1.68,0.04l-0.85,1.12l0.16,1.82l1.13,4.27l-0.23,1.21l-0.92,0.93l-1.27,0.59l-0.53,-0.16l-3.81,-2.16l-3.95,2.04l-1.26,-2.37l-1.0,-3.95l-0.15,-3.69l1.35,-2.08l1.34,-3.04l3.16,-2.75l0.2,-1.02l-0.65,-0.63l-5.42,-2.71l-2.87,-2.4l-1.41,-0.26l-0.93,0.49Z", "name": "Uttaranchal"}, "IN-JH": {"path": "M485.62,401.35l-2.2,-0.83l-1.66,0.13l-0.64,-0.47l-0.92,-2.18l0.46,-1.96l-0.75,-2.15l-5.31,-5.13l-0.45,-1.24l-0.28,-2.67l-2.23,-1.57l-3.11,-0.55l0.74,-1.85l1.39,-1.87l0.17,-1.31l1.15,-1.83l-0.17,-0.87l-1.63,-2.76l0.11,-0.69l0.93,-0.61l2.97,-0.32l4.77,0.81l1.87,-0.08l1.71,-1.09l1.28,0.23l2.91,-0.51l1.72,-1.44l0.63,-1.37l1.28,2.2l0.99,2.58l0.91,0.66l0.71,-0.13l0.37,-0.54l0.48,0.46l0.71,-0.09l0.31,-0.39l0.0,-0.99l1.13,-0.14l0.85,0.26l0.77,-0.44l0.4,0.65l0.01,0.81l-0.37,0.6l0.15,0.73l1.64,1.83l3.74,2.84l1.49,-0.24l1.96,-2.6l1.54,0.48l0.78,-0.11l0.96,-1.83l3.19,-2.01l0.37,0.18l0.47,1.68l1.14,0.05l0.36,1.93l0.73,0.76l1.93,0.23l3.38,-1.36l-0.14,0.95l0.71,0.62l2.29,-1.85l0.34,-1.09l2.75,-1.0l0.7,-0.85l3.22,-0.65l2.72,-0.0l1.15,0.31l2.07,-1.87l1.74,0.23l0.61,-0.3l0.36,-0.71l0.0,-1.21l-0.39,-1.16l1.12,-0.67l0.91,-2.77l0.59,-0.38l2.49,-0.03l0.87,0.51l1.73,1.86l1.65,-0.22l1.97,-1.34l-0.19,1.0l1.95,0.69l0.56,2.96l0.66,1.0l1.38,0.68l1.57,-0.48l1.85,0.5l0.24,1.48l-0.96,1.25l0.15,0.88l5.46,3.3l0.78,-0.54l0.24,-1.39l0.74,-0.75l0.22,-2.08l2.61,-2.45l1.79,0.61l1.64,-0.17l0.97,-0.45l0.63,-0.86l1.69,1.09l2.36,0.74l0.49,-0.24l0.04,-1.06l0.79,-1.32l2.54,0.86l1.25,-0.22l0.91,-2.73l0.27,-2.7l-0.24,-0.98l1.59,-2.79l-0.02,-3.96l1.79,-2.25l0.83,-0.3l1.16,0.31l0.51,-0.24l1.12,-3.76l1.51,-0.38l1.41,0.51l0.77,-0.28l1.6,-3.24l1.37,-1.12l1.1,0.52l1.08,1.31l2.68,0.7l1.93,-0.1l0.67,0.49l0.1,0.59l-0.46,1.42l0.24,2.13l2.17,2.01l1.05,3.9l-0.72,3.72l-1.0,-0.18l-0.39,1.06l0.51,0.67l1.0,0.23l0.43,0.82l0.61,1.83l-0.66,0.58l-0.05,0.67l0.77,0.42l-1.14,0.75l-2.41,-0.72l-0.85,0.38l0.07,0.8l1.03,0.5l-0.1,1.01l0.4,0.96l-0.7,1.06l-0.04,1.52l-1.26,2.69l-3.44,2.56l0.02,1.36l0.28,0.36l0.67,-0.02l0.2,0.56l-1.83,0.11l-0.91,2.13l-1.27,-0.85l-1.16,0.28l-0.22,0.53l0.12,2.26l-0.83,0.87l-1.67,-0.16l-1.77,0.66l-0.38,-1.37l-0.75,-0.37l-2.33,0.63l-0.38,0.95l1.58,2.04l0.13,0.85l-0.99,0.74l-0.22,1.61l-0.67,-0.67l-1.24,-0.31l-1.18,0.26l-0.11,0.83l0.9,1.18l-0.74,0.16l-1.48,-0.36l-1.99,-1.45l-1.11,-0.15l-2.74,-1.55l-0.75,0.01l-2.05,2.64l-0.2,0.99l0.37,1.17l-0.54,1.3l-4.61,0.89l-7.31,2.64l-2.04,1.68l-0.42,2.01l-1.8,1.61l-1.1,0.29l-1.25,-0.91l-1.7,-0.6l0.37,-1.76l-0.17,-0.83l-3.17,-1.24l-0.91,0.23l-0.6,0.76l0.27,2.08l-4.66,0.65l-1.05,0.72l-0.09,0.97l0.72,1.07l1.45,0.25l-0.37,1.69l-1.12,1.59l-0.47,1.62l0.4,0.99l0.91,0.9l0.58,1.59l0.42,0.13l1.6,-0.54l1.56,0.43l4.28,4.41l1.21,0.8l2.64,-0.43l6.48,0.73l-1.12,0.37l-1.06,1.04l-0.38,5.19l1.78,1.49l1.55,0.14l2.47,1.85l0.25,1.52l0.66,1.08l0.97,0.46l1.88,0.17l1.02,0.78l0.5,1.15l-1.24,0.06l-0.21,0.5l0.21,1.04l2.24,1.83l0.38,2.09l1.43,1.35l-2.14,0.24l-0.34,0.37l-0.06,1.01l-0.83,-0.19l-1.36,0.84l-5.58,-3.66l-3.08,0.44l-0.93,-0.27l-2.33,-2.54l-5.72,-2.93l-1.38,-1.66l-0.96,-0.22l-0.63,0.3l-0.7,0.93l-1.56,0.42l-0.49,0.53l0.14,1.26l1.25,1.79l0.31,2.33l-0.08,0.94l-0.78,1.36l0.01,0.75l0.7,1.68l-0.43,2.63l-1.68,2.46l-1.06,0.74l-1.12,0.27l-1.32,-0.84l-0.04,-1.41l0.7,-1.51l-0.5,-0.78l-3.63,1.66l-3.84,-0.98l-3.16,-1.78l-1.39,-0.0l-2.85,1.24l-2.91,3.01l-0.82,-0.88l-2.85,-1.79l-1.6,-0.26l-1.46,0.46l1.5,-2.94l1.65,-2.4l0.39,-1.42l-0.54,-3.97l-0.68,-1.83l-0.62,-0.17l-2.32,1.61l-1.27,0.2l-0.95,0.73l-3.4,-0.9l-1.07,0.16l-1.02,0.58l-6.68,0.19l-0.58,0.37l-0.42,1.49l-2.34,1.14l-2.91,0.15l-2.41,-1.06l-1.51,-0.19l-0.86,-0.65l-2.56,-3.71l-2.65,-1.24l0.21,-0.7l2.1,-1.9l1.68,-0.16l2.55,-1.92l1.17,-2.68l0.95,-0.49l2.7,-2.47l0.21,-1.44l-0.78,-2.37l-1.27,-0.8l-2.38,0.04l-2.05,-0.95l-0.44,0.2l-0.1,0.88l-0.34,-0.13l-0.73,-2.68l-1.84,-1.99l-0.24,-1.17l0.56,-3.95l-0.52,-2.22l-1.03,-0.81l-1.27,0.92l-0.09,-0.36l0.24,-2.83l1.54,-1.82l0.43,-1.07l-0.96,-2.79l-0.87,-0.33l-1.62,0.72l-0.34,0.71l0.12,1.14Z", "name": "Jharkhand"}, "IN-JK": {"path": "M176.08,35.04l2.37,-2.36l-0.15,-2.71l0.72,-0.56l5.27,-0.96l3.12,-1.98l1.87,-0.7l1.84,-0.15l1.87,0.3l7.81,2.66l10.87,2.04l5.97,-0.52l1.57,1.55l2.54,1.46l8.19,2.07l5.87,-0.33l2.57,-2.29l3.11,-1.82l1.42,-1.8l0.86,-0.17l1.84,0.74l1.27,-0.01l3.39,-0.84l5.27,-2.66l0.99,0.15l1.97,1.12l3.39,-0.56l3.4,-2.92l0.32,-0.85l0.08,-2.41l0.59,-0.43l1.96,-0.39l1.61,0.69l0.77,0.01l2.91,-2.36l0.56,-0.77l0.2,-1.26l-0.34,-1.59l0.44,-0.53l22.94,-13.34l0.94,1.29l1.66,0.81l1.15,-0.36l2.19,-1.83l1.4,0.07l0.25,0.97l-1.39,3.65l-0.24,2.94l1.11,2.66l2.85,4.79l0.56,3.9l0.5,1.32l1.45,1.99l1.9,6.57l0.74,1.28l1.29,1.15l1.47,0.62l7.06,1.14l1.68,0.66l2.57,1.86l1.66,2.01l3.68,1.47l0.79,0.71l0.72,1.3l0.34,1.43l-0.32,1.36l-2.12,1.93l-2.99,1.23l-2.52,1.81l-0.26,3.11l1.51,4.2l0.72,4.34l-0.37,6.71l0.6,2.02l0.76,1.24l2.91,2.63l1.83,2.73l2.61,1.09l0.44,1.63l0.42,0.49l2.17,-0.32l3.4,1.53l2.5,0.11l0.76,0.38l0.07,0.93l-1.15,2.16l-0.31,3.79l0.76,1.2l1.74,1.47l1.04,2.98l1.58,1.74l-0.13,2.04l-1.78,2.45l-2.99,2.26l-1.28,1.37l-2.29,-0.49l-2.63,0.8l-0.83,0.67l-1.0,3.25l-1.34,-0.22l-2.55,1.01l-0.76,-0.22l-4.17,-3.55l-0.99,-2.71l0.36,-2.45l-0.62,-0.72l-0.73,-0.26l-0.88,0.28l-1.95,1.75l-6.89,0.7l-0.72,0.37l-0.3,0.78l-1.91,1.79l-0.48,-0.21l-0.24,-0.53l0.84,-2.71l2.04,-1.64l0.41,-0.81l0.1,-2.61l-0.35,-1.18l-0.52,-0.44l-1.59,0.09l-0.31,0.35l-0.01,0.78l-1.28,0.59l-0.52,0.64l-1.76,0.13l-2.36,0.83l-1.87,1.76l-1.16,0.19l-1.94,-2.71l-0.28,-2.27l-1.13,-1.48l-1.11,-2.41l-4.43,-4.94l-0.7,-0.03l-1.02,0.5l-3.7,2.62l-4.93,1.16l-0.67,0.74l-0.48,-0.0l-6.46,-2.01l-1.4,-0.78l-4.53,-2.86l-5.76,-5.55l-4.11,0.12l-1.88,-1.36l-0.71,-0.13l-1.11,0.56l-3.58,0.69l-3.2,1.74l-0.74,0.87l-0.39,1.36l-0.68,0.71l-4.17,1.72l-4.44,3.8l-1.01,-0.85l-1.7,-0.58l-1.74,0.49l-0.44,0.98l0.29,1.07l3.0,3.83l-0.27,2.22l0.73,1.87l-0.04,0.89l-1.7,1.9l-0.05,0.61l-0.99,1.43l-2.76,1.28l-0.43,1.18l-0.85,0.7l-2.45,0.3l-1.37,0.77l-2.13,2.4l-1.29,-0.76l0.03,-0.69l-0.42,-0.49l-1.71,0.82l-2.67,0.07l-3.04,-2.13l-2.21,-0.52l-3.16,-1.86l-3.66,0.69l-2.22,-1.01l-3.41,0.48l-0.92,-0.3l-0.7,-0.79l-0.95,-2.82l0.8,-1.82l-0.19,-2.8l1.2,-2.89l-0.26,-1.2l-0.74,-0.4l-0.76,0.21l-0.63,0.65l-0.62,1.67l-1.02,0.49l-2.05,0.22l-2.05,-1.37l-2.17,0.76l-0.5,-0.09l-0.91,-1.05l0.73,-1.21l0.13,-0.85l-0.81,-4.48l-1.14,-0.74l-2.8,-0.45l-1.0,-0.55l-1.7,-2.2l-2.9,-2.45l-0.36,-0.9l0.31,-1.78l2.08,-1.05l0.87,-1.05l1.26,-3.13l0.67,-2.87l-0.65,-2.12l-5.01,-3.36l-0.4,-1.27l0.28,-1.74l1.77,-2.59l3.3,-0.55l2.28,-1.26l1.59,-1.84l0.35,-1.48l-0.54,-1.32l-1.2,-0.71l-3.32,0.36l-2.29,-0.58l-2.14,0.5l-0.78,-0.15l-1.4,-1.35l-0.24,-0.86l0.22,-0.85l3.05,-2.05l0.2,-1.12l-1.36,-3.16l-0.58,-0.7l-2.81,-0.24l-1.92,-1.19l-0.07,-1.35l1.86,-1.69l0.23,-1.76Z", "name": "Jammu and Kashmir"}, "IN-UP": {"path": "M275.34,205.39l0.08,-0.87l-0.4,-0.81l0.98,-0.64l0.26,-0.62l-0.39,-1.02l0.09,-1.08l0.63,-0.63l-0.03,-0.78l0.85,-0.74l-0.12,-1.31l0.85,-0.26l0.57,-1.11l1.48,-5.73l1.43,-1.37l0.17,-0.58l0.94,-0.1l0.3,-0.86l2.37,-1.61l0.44,-1.41l4.79,-4.24l0.56,-1.76l0.08,-1.88l0.69,-0.43l1.01,0.2l2.73,2.32l5.75,3.03l-3.25,2.91l-1.42,3.18l-1.4,2.22l0.14,4.1l1.02,4.01l1.5,2.84l0.53,0.17l3.93,-2.12l4.27,2.33l1.87,-0.79l1.16,-1.27l0.27,-1.53l-1.31,-5.86l0.44,-0.6l0.93,-0.03l1.97,1.95l2.37,3.99l3.63,1.83l1.01,1.0l2.3,3.68l1.72,1.49l5.15,2.91l3.22,0.87l-0.29,0.67l-1.36,1.2l-1.25,-0.03l-0.74,1.01l-0.97,-0.35l-0.89,0.33l-0.75,1.13l0.36,0.82l4.44,2.28l0.82,1.11l0.45,2.3l0.61,0.28l1.07,-0.68l2.94,-0.83l2.2,1.17l0.37,1.16l0.83,0.95l3.93,2.71l1.56,0.36l0.81,-0.24l1.2,1.39l0.83,2.42l0.51,0.21l2.48,-0.94l0.99,-0.02l0.51,0.84l0.69,0.17l1.07,-0.46l2.12,0.39l0.81,-0.28l0.49,-0.86l1.92,0.26l0.58,0.43l-0.37,1.25l0.26,0.54l0.61,0.21l1.18,-0.4l0.11,1.23l0.97,0.05l0.34,0.98l1.38,0.56l1.93,-0.72l0.97,-1.03l0.5,-1.07l2.2,2.05l1.78,0.44l1.1,1.2l1.02,0.42l1.36,2.19l0.82,0.27l1.64,-0.21l2.4,2.1l0.56,-0.22l0.15,-0.44l-0.17,-2.69l0.63,-0.53l0.74,0.02l0.4,1.04l2.24,0.66l1.17,1.65l1.64,0.62l1.64,1.48l0.65,0.35l2.05,0.21l0.35,1.28l0.73,0.61l1.33,0.34l1.04,-0.11l0.72,1.29l5.03,1.12l0.53,0.65l1.04,2.88l2.01,2.4l-0.35,0.91l0.75,0.97l1.19,0.06l0.59,-0.34l0.52,-0.97l0.76,0.17l1.08,0.92l0.65,1.65l0.59,0.53l2.77,1.38l1.6,1.47l2.32,0.63l1.89,1.78l3.25,1.95l1.27,0.05l1.97,-1.88l0.73,-0.31l1.44,0.14l0.64,0.2l1.19,1.09l1.86,0.8l3.63,2.88l2.4,1.17l1.78,1.68l1.35,0.37l2.68,-0.3l3.76,-0.93l0.61,0.23l0.78,1.86l0.64,3.77l1.05,1.07l3.78,0.24l2.16,1.0l1.95,0.46l3.79,-0.02l1.0,0.38l1.46,1.18l1.22,1.83l0.87,0.34l1.01,-0.06l1.26,-0.95l0.95,-1.56l-0.43,-1.73l0.64,-0.32l6.11,0.45l7.74,3.44l-0.08,0.57l0.44,0.31l0.89,-0.1l-0.14,1.46l1.68,1.8l-0.02,2.27l2.55,3.19l0.12,2.0l1.36,2.56l2.76,1.74l1.3,-0.6l0.85,0.05l0.44,0.97l-0.19,2.57l0.25,0.77l1.93,0.52l2.54,2.63l-8.75,-0.21l-0.69,0.64l-0.89,2.26l-1.87,0.57l-0.58,0.71l-0.53,-0.86l-1.04,0.3l-0.27,2.29l0.45,0.95l1.56,0.43l1.39,-0.63l2.0,1.49l2.85,0.74l-0.75,1.75l0.72,1.59l-1.71,-0.01l-0.98,0.62l-2.56,0.37l-0.78,0.73l-0.02,1.17l1.57,1.59l0.8,1.89l2.75,1.4l0.66,1.24l1.01,0.41l0.56,1.63l1.2,1.16l0.84,0.22l2.77,-0.43l1.0,1.36l1.44,0.91l2.29,0.25l2.18,1.96l0.09,0.43l-0.43,1.02l-1.48,1.05l-1.13,0.16l-1.72,-0.61l-1.57,-1.34l-1.31,-0.02l-1.48,0.93l0.37,2.52l-1.19,0.43l-1.3,-0.47l-0.42,-2.32l-1.02,-0.59l-1.43,0.28l-2.76,2.12l-1.74,2.2l-3.5,2.93l-2.15,0.89l-1.31,1.48l-12.02,6.86l-1.28,1.31l-0.44,1.05l-0.35,3.14l0.15,0.85l1.12,1.85l-0.29,4.03l2.54,2.96l2.69,1.36l0.21,1.11l-0.62,1.25l0.43,1.32l-0.04,2.89l-2.45,0.3l-1.39,1.1l-0.01,1.49l1.65,3.07l-0.95,1.29l-0.26,1.5l-1.39,1.86l-1.72,4.05l-1.53,1.2l-0.32,1.67l-0.84,1.34l-3.39,1.26l-4.96,-0.24l-1.19,-0.65l-1.66,-1.53l-1.22,-0.35l-0.94,-1.34l-0.99,-0.75l0.07,-1.48l-1.86,-1.99l0.85,-0.12l0.85,-0.74l0.33,-2.2l0.73,-1.76l-0.05,-2.43l-0.94,-0.86l0.33,-2.55l-0.28,-1.36l0.21,-0.26l0.93,0.28l0.92,-0.26l0.51,-1.09l-1.52,-2.87l-1.63,-0.31l-0.22,-1.37l-0.98,-0.12l-2.9,1.04l-1.34,-0.13l-2.9,-0.97l-1.02,0.1l-0.38,0.54l0.07,1.74l-0.34,0.46l-2.48,0.03l0.46,-0.94l-0.09,-0.81l-0.63,-0.61l-1.13,-0.04l0.05,-2.17l-0.46,-0.58l-0.5,0.11l-0.69,1.01l-0.23,-0.11l0.34,-1.13l-0.43,-1.53l-0.75,-0.06l-2.07,1.15l-2.62,-1.65l-2.34,-0.36l-2.44,-1.83l0.1,-1.46l-1.19,-1.84l-1.25,-0.33l-1.65,0.49l-0.55,-0.18l-0.66,-1.21l-3.93,-0.58l0.12,-0.94l-1.36,-2.79l-0.44,-0.15l-3.52,1.18l-0.04,0.71l1.17,0.85l-1.17,0.38l-1.22,-0.17l0.17,-0.95l-0.6,-0.6l-1.6,-0.5l-2.36,0.14l-0.44,0.65l0.07,2.14l-1.89,2.61l0.26,1.6l-1.41,0.32l-0.94,1.06l-2.61,-1.77l-1.96,0.4l-1.39,-1.0l-2.12,0.47l-1.76,-0.18l0.84,-1.31l0.15,-0.88l0.88,-0.9l0.2,-1.29l0.88,-2.03l-0.08,-0.99l-0.92,-0.55l-1.39,0.37l-0.83,1.53l-3.3,0.4l-0.04,0.77l1.71,1.4l-2.08,0.3l-0.9,-0.82l-0.8,-1.5l-0.89,-0.3l-0.66,0.44l0.01,1.06l-2.31,-0.37l-0.6,0.3l0.4,1.75l1.24,0.71l-0.82,0.53l-0.4,0.04l-1.56,-1.55l-0.56,0.43l0.22,1.27l-1.38,-0.38l-1.63,0.37l-0.51,-0.7l-0.17,-0.93l1.06,-0.2l1.53,-1.78l2.0,-1.08l0.21,-0.73l-0.78,-2.05l-0.88,-0.18l-0.5,-0.7l-0.94,-0.49l-0.28,-2.59l-0.93,-1.59l-0.79,-0.28l-1.27,0.27l-0.88,-0.25l-2.49,2.19l-1.13,-0.36l-2.27,1.05l-3.01,2.29l-2.37,0.66l-0.35,0.48l0.02,0.73l1.03,1.63l-1.68,0.65l-0.98,-0.78l-3.65,0.23l-3.08,-0.97l-0.92,0.48l-1.43,1.94l-0.32,-0.02l-0.21,-0.76l-0.47,-0.4l-1.47,0.02l-0.45,0.65l0.08,1.56l-0.7,0.07l-0.49,-0.55l0.21,-1.36l0.89,-0.87l1.71,-2.67l0.6,-1.48l-0.19,-0.47l-0.47,-0.14l-1.16,0.86l-0.87,-0.19l-0.77,0.28l-0.81,0.96l-0.37,-0.96l1.04,-2.22l-0.64,-0.78l-0.75,0.11l-1.26,2.01l-0.04,1.23l0.78,3.19l-3.22,-0.57l-1.29,1.21l-0.23,-1.37l-0.3,-0.28l-0.87,-0.01l-1.75,0.66l-0.09,-0.73l1.1,-1.71l-0.97,-0.87l-0.86,-0.22l-0.71,0.35l-0.16,1.32l-1.22,0.43l-1.02,1.15l-0.59,0.21l-0.12,-0.99l0.32,-0.89l1.91,-1.82l-0.03,-1.44l0.63,-1.25l0.16,-1.42l-0.55,-0.91l-1.06,0.13l0.35,-1.08l-0.08,-1.1l-0.23,-0.57l-0.88,-0.52l-0.72,0.25l-0.62,0.73l-0.32,0.9l0.03,1.77l-0.3,0.25l-0.55,-0.02l-0.1,-2.28l-0.54,-0.97l-0.57,-0.09l-1.75,1.02l-0.19,1.54l0.75,0.94l-0.52,0.98l0.19,1.26l-2.07,-2.02l-1.41,-0.23l-1.13,0.35l-0.36,0.65l0.12,0.74l-1.48,1.74l-0.57,1.6l0.32,0.71l1.59,1.5l1.08,2.41l1.2,6.41l2.31,3.04l0.36,3.85l-0.65,1.88l0.4,1.02l1.03,0.66l2.06,-0.54l1.03,0.19l1.85,3.2l-0.17,1.52l0.39,0.4l1.51,0.37l-0.16,1.09l-0.47,0.87l-1.67,1.57l-1.07,2.4l-1.57,1.53l-0.99,-0.36l-0.45,-1.43l-2.96,-0.6l-3.64,-3.03l-1.66,-0.82l-1.14,0.44l-0.61,1.98l-0.56,0.69l-0.97,0.47l-0.88,-0.44l-0.41,-0.83l0.63,-1.22l-0.08,-0.85l-2.21,-1.45l-0.19,-0.65l-0.85,-0.52l-0.49,-0.89l1.35,-2.51l0.03,-0.97l-0.38,-0.52l0.07,-1.6l-0.96,-1.46l-0.21,-2.0l-0.83,-1.48l-0.83,-0.73l0.24,-0.53l2.34,-1.55l2.17,-2.14l0.53,-1.55l-0.31,-1.12l1.1,-3.45l-0.18,-1.0l-1.96,-3.91l-1.39,-2.03l2.35,-2.06l0.58,-0.87l0.55,-1.89l3.26,-0.78l2.42,0.06l1.81,-1.06l2.97,-0.59l1.28,-0.74l0.27,-0.98l-0.81,-2.2l0.14,-1.22l0.38,-0.7l1.92,-1.49l0.81,-2.07l1.37,-1.68l1.06,-2.84l1.2,-1.91l-0.03,-0.77l-0.96,-0.97l0.0,-0.62l1.1,-0.89l-0.56,-1.88l0.59,-0.57l1.79,-0.57l1.29,-1.72l0.13,-0.63l-0.6,-0.73l0.33,-1.15l-0.1,-1.04l-0.67,-1.92l-2.1,-3.28l-0.72,-3.17l-0.59,-0.68l-1.97,0.16l-2.0,-1.93l-0.9,-0.14l-0.36,-0.7l-0.99,0.05l-0.56,-0.52l-1.79,0.76l-1.18,-0.01l-0.74,0.63l-0.64,-0.02l-1.43,-0.82l-1.72,-0.3l-1.05,-1.0l-1.16,-0.1l-0.54,-0.83l-0.76,-0.27l-2.23,0.18l-0.93,1.15l-1.2,-0.18l-0.62,-0.89l0.78,-0.3l1.09,-1.02l0.27,-0.71l-0.74,-0.73l-1.94,-0.48l-2.22,0.1l-1.26,1.15l-1.17,0.12l-0.39,0.59l-0.88,-0.48l-2.81,-0.37l-1.09,0.33l-0.92,-0.47l-3.28,-0.47l-2.51,1.71l-3.97,1.63l-1.26,-0.07l-0.91,1.46l-0.86,0.49l0.13,-2.17l0.57,-0.69l6.23,-2.89l2.25,-0.54l0.72,-0.58l0.09,-0.67l-0.84,-0.74l-0.84,0.58l-0.62,-1.04l-0.47,-0.22l-0.8,0.55l-1.65,-0.21l-0.65,-1.0l-0.85,-0.27l0.11,-0.38l2.42,-0.72l0.53,-1.05l1.15,-0.65l0.56,-1.2l-1.43,-2.52l-0.3,-1.75l-1.54,-0.43l-3.64,-2.12l-0.61,-1.8l-2.26,-2.94l0.03,-1.53l-0.68,-0.68l0.5,-0.81l-0.04,-0.86l-0.47,-1.19l-0.72,-0.53l-0.37,-2.72l0.75,-0.66l2.6,-0.95l0.83,-0.85l0.99,0.2l0.51,-0.21l1.14,-1.79l0.79,-0.67l-0.81,-2.35l-1.02,-0.86l0.1,-1.29l0.34,0.21l0.6,-0.43l-0.26,-1.77l1.08,-0.7l0.18,-0.62l-0.76,-0.58l0.74,-1.51l-1.42,-0.68l-0.05,-0.97l-0.62,-0.65l0.87,-2.29l-0.41,-0.56l-0.44,0.04l-0.11,-1.16l-0.36,-0.26l-0.88,0.17l-0.49,-1.15l-0.94,0.01l-0.29,-0.67l-1.11,-0.66l-1.05,-1.92l1.12,-1.48l-0.06,-1.04l-0.85,-2.6l-2.48,-2.18l-0.53,-1.11l0.23,-0.83l-0.41,-0.93l0.54,-1.42l-1.35,-1.66l0.54,-1.2l-1.8,-3.7l-0.14,-5.52l0.56,-1.3l-0.47,-0.92l-0.03,-0.89l0.47,-1.5l-0.93,-0.73l-1.3,0.03l1.29,-1.31l-0.05,-0.56l-0.46,-0.39l-0.95,-0.01Z", "name": "Uttar Pradesh"}, "IN-SK": {"path": "M624.09,256.17l1.74,-1.11l1.5,0.04l2.71,-2.5l1.43,1.15l2.65,0.52l2.31,1.81l-0.23,2.08l1.28,1.8l0.06,0.92l-1.46,6.18l-1.76,3.15l-0.24,1.13l0.49,0.78l-0.09,1.51l0.63,1.96l3.56,3.09l-0.14,0.55l-0.53,0.4l-1.78,0.44l-1.01,0.67l-1.42,2.94l-1.56,-0.85l-4.67,-0.11l-3.06,2.58l-1.78,0.44l-3.84,-1.72l-3.55,-0.05l-0.65,-0.3l-0.58,-1.87l-1.79,-1.32l0.79,-2.13l-0.61,-1.91l0.81,-1.92l-0.56,-1.88l2.65,-4.71l1.54,-4.54l-0.12,-1.42l0.29,-1.16l-0.51,-0.51l-1.07,-0.3l-0.48,-1.12l0.06,-0.62l0.47,-0.48l1.19,0.1l6.6,-1.18l0.74,-0.55Z", "name": "Sikkim"}, "IN-MZ": {"path": "M743.96,392.77l0.71,0.19l0.37,-0.45l-0.14,-2.85l0.55,-1.85l-0.42,-1.43l0.33,-2.14l-0.11,-2.89l-0.65,-1.18l2.99,-0.03l-0.38,1.02l0.75,1.88l1.11,0.72l1.07,-0.2l3.08,-2.92l1.24,-0.79l-0.05,-1.35l2.53,-2.77l1.3,-3.49l2.32,3.71l1.02,0.04l1.89,-0.78l1.44,0.32l0.94,-0.24l0.11,0.82l0.68,0.79l-0.94,1.59l0.08,1.22l-0.6,3.47l-0.55,0.59l0.12,0.67l2.91,1.14l1.2,0.91l1.31,-0.55l0.72,0.69l0.62,0.01l1.32,-0.83l0.11,1.34l0.61,0.24l0.97,-0.45l0.25,1.53l1.46,2.27l0.56,5.39l1.62,1.71l0.15,1.2l-0.99,6.3l0.22,3.39l-0.91,1.69l-0.09,5.36l-1.22,2.4l-1.63,1.33l-0.58,0.03l-1.4,-1.49l-0.78,-0.25l-0.99,0.29l-0.58,0.74l0.04,2.05l0.88,1.94l0.12,0.97l-1.74,2.48l-1.23,1.16l-0.27,2.69l1.21,3.12l-0.33,2.8l0.6,1.65l1.1,1.18l0.34,1.19l0.24,3.97l-1.47,0.77l-0.09,0.62l0.38,0.78l-2.29,-0.79l-1.1,0.42l-0.08,2.78l-1.0,0.47l-0.71,1.34l0.31,2.1l-0.63,-0.79l-0.82,-0.32l-0.71,0.4l-0.47,1.47l-0.37,-1.67l-0.66,-0.91l-2.03,-1.9l-1.96,-1.42l-0.88,-0.27l-0.8,0.54l0.01,1.48l-0.37,0.18l-0.18,0.63l-0.08,1.63l-0.92,0.25l-0.78,0.79l-1.04,-4.15l0.88,-0.24l0.27,-1.25l-1.83,-11.1l-0.51,-1.55l-0.17,-4.45l-0.52,-1.11l-1.15,-1.14l-0.55,-3.59l-0.61,-0.67l-0.91,-0.36l-0.68,-1.66l0.02,-2.29l-0.78,-4.56l0.13,-1.61l0.79,-1.88l-0.27,-2.46l-0.7,-0.81l-0.08,-0.97l-0.71,-0.88l-1.55,-6.66l0.55,-2.59l-0.21,-1.75l0.23,-1.48l0.46,-0.67Z", "name": "Mizoram"}, "IN-CT": {"path": "M376.2,561.12l-0.76,-1.04l-0.54,-2.04l-1.09,-0.57l-0.15,-0.57l0.27,-0.65l2.07,-1.28l0.36,-0.85l-0.24,-0.79l-1.82,-2.18l-0.32,-1.59l0.51,-1.14l2.36,-3.16l1.16,-4.17l1.21,-0.64l1.08,-1.84l1.03,-0.48l0.89,-1.14l0.61,-0.26l1.07,2.14l2.07,0.07l0.93,1.63l0.73,0.22l1.24,-1.17l2.22,-1.2l0.11,-0.81l-0.84,-1.42l2.23,-0.73l0.65,-1.58l-0.64,-1.49l-1.37,-1.28l-4.18,-1.73l-0.94,-2.81l-2.92,-1.34l-1.24,-2.7l-0.75,-0.22l-0.84,0.27l-0.46,0.55l-0.09,0.78l-1.61,-0.42l1.75,-0.9l0.59,-1.0l-0.24,-0.9l-1.6,-0.51l0.5,-0.9l1.91,0.56l0.81,-0.33l0.83,-4.19l-1.06,-3.19l-3.34,-0.41l0.3,-2.29l0.6,-0.47l2.53,-0.4l2.93,-1.99l0.18,-0.75l-0.42,-1.42l0.05,-2.41l0.61,-1.47l-0.41,-1.1l-0.13,-2.2l-1.6,-0.59l-2.16,0.82l0.34,-0.93l1.82,-1.1l0.25,-1.05l-0.49,-2.64l-0.19,-4.61l-0.89,-0.79l-1.73,0.09l-0.93,-1.74l0.73,-4.2l0.63,-0.84l4.35,-2.42l1.73,-2.04l0.06,-1.69l1.3,-3.97l-0.11,-3.65l0.64,-4.84l1.91,-0.95l0.61,-1.04l0.55,-1.62l-0.09,-3.28l2.01,-4.15l0.85,-0.2l1.2,1.46l0.55,-0.07l0.46,-0.5l0.09,-0.85l-0.42,-0.87l0.8,-0.52l0.42,-2.56l1.99,-1.5l0.72,-1.23l0.16,-3.55l1.21,-1.92l0.5,-0.43l0.46,0.94l1.05,0.27l3.57,-1.69l1.2,1.52l0.79,0.43l1.06,-0.45l2.76,-2.24l3.2,-1.03l0.92,-1.95l2.97,-1.77l-0.02,-1.86l0.73,-1.05l-0.19,-2.83l0.19,-0.37l2.32,-0.91l2.35,-2.12l0.23,-0.95l-0.31,-1.56l0.29,-0.66l3.67,-1.75l1.99,-0.03l0.88,-1.76l1.03,-4.6l-0.16,-1.02l-2.37,-2.04l-2.34,0.08l-0.36,-0.7l-0.98,-0.37l-2.06,-3.14l-0.79,-0.36l-1.44,-0.08l-3.16,-1.17l-0.65,0.1l-2.65,1.78l-0.44,0.01l-0.97,-2.0l0.65,-0.89l0.15,-1.17l1.07,-0.61l1.02,-1.6l-0.17,-1.22l-1.75,-3.33l0.06,-1.2l1.2,-0.2l1.84,1.89l1.03,0.75l1.08,0.3l1.09,-0.04l3.01,-1.44l1.96,0.13l2.28,1.14l3.87,0.03l1.87,0.48l8.34,0.33l1.27,-0.98l2.41,-1.15l0.77,-1.85l3.07,-1.14l0.59,-0.82l0.3,-1.29l0.83,0.21l1.66,1.52l1.43,0.77l5.35,0.26l3.78,-1.46l1.03,-1.62l0.25,-1.54l1.45,-1.09l0.74,-1.65l3.19,0.58l1.86,1.28l0.24,2.82l0.99,1.75l4.75,4.36l0.66,1.82l-0.44,2.11l1.35,2.8l1.06,0.48l1.68,-0.12l2.34,0.83l0.55,-0.55l-0.05,-1.51l1.36,-0.48l0.76,2.35l-1.89,2.51l-0.29,3.17l0.54,1.11l0.6,0.01l0.99,-0.91l0.48,0.7l0.3,1.5l-0.56,4.03l0.33,1.47l1.84,1.98l0.9,2.89l1.12,0.31l0.52,-0.4l0.04,-0.52l1.65,0.8l2.21,-0.09l0.9,0.49l0.71,2.65l-0.72,0.97l-2.99,2.18l-1.13,2.64l-2.36,1.79l-1.78,0.21l-2.14,1.78l-0.72,2.26l0.72,1.48l0.15,1.18l-1.13,1.76l-3.47,0.93l-3.65,3.0l-3.05,1.37l-2.17,2.82l-0.35,1.32l0.73,1.02l-1.48,0.97l-0.33,1.95l0.41,0.86l1.39,0.93l-0.35,1.31l0.13,0.75l-0.12,0.3l-0.98,0.13l-0.29,0.89l-1.06,-0.2l-0.46,0.37l-0.32,1.8l-3.28,5.47l-0.78,2.64l0.11,1.7l1.58,1.75l0.07,1.4l-2.14,-0.68l-0.99,0.11l-0.68,0.98l-0.1,1.33l-0.9,1.29l-0.91,2.51l-1.44,1.46l-2.01,0.14l-3.31,-2.01l-4.53,0.66l-0.98,0.41l-1.12,-0.49l-3.11,0.28l-0.56,0.45l-0.04,1.31l-2.46,4.73l-1.43,0.95l-1.59,2.2l-1.09,0.56l0.01,-0.76l-0.55,-0.52l-1.36,-0.25l-0.68,0.54l-0.09,4.18l0.72,2.52l-0.83,4.18l0.61,1.45l0.67,0.17l0.4,1.27l0.79,0.22l-0.29,3.71l0.48,1.12l0.27,3.76l-0.69,2.58l0.08,0.98l2.58,1.62l2.3,0.07l1.42,1.1l1.33,-0.5l1.05,0.06l-0.41,3.09l0.82,1.35l-3.43,2.25l0.01,-2.29l-1.81,-0.32l-1.56,-0.7l-3.66,-0.37l-0.86,0.54l-0.78,1.34l-2.46,-4.66l-0.59,-0.31l-1.08,0.07l-0.43,-0.79l-2.26,-1.77l-0.81,0.21l-0.92,1.26l-0.28,-0.91l-2.18,-2.08l-0.5,0.09l-1.32,1.38l-0.97,0.56l-1.53,2.64l-0.2,1.29l0.69,1.16l3.02,1.8l0.98,1.71l2.17,0.75l-0.29,2.12l0.41,1.88l-0.25,4.24l0.5,0.47l0.99,0.22l0.95,1.7l1.38,0.51l0.36,0.45l-0.98,1.25l0.11,0.61l0.97,0.86l-0.71,1.75l-0.07,1.21l0.69,1.82l-0.2,1.59l1.06,0.93l0.17,1.09l0.72,1.28l0.08,2.46l-1.85,1.77l-0.79,3.73l-0.61,-0.56l-0.52,-0.03l-0.99,1.69l-2.34,0.54l-1.59,1.62l-1.01,0.36l-0.27,0.97l1.23,1.04l0.02,0.59l-1.55,1.0l-3.02,2.84l-1.83,2.83l-1.7,0.58l-0.96,1.18l-3.23,1.04l-0.99,2.18l0.33,1.34l-0.54,2.23l-0.74,1.15l-0.25,2.85l-0.67,1.16l-0.18,1.23l-0.74,-0.38l-0.78,0.41l-0.23,2.18l-4.04,0.11l-2.81,-1.08l-3.48,1.96l-0.54,-0.18l-0.8,-1.55l-0.22,-3.95l-1.15,-2.66l-0.11,-1.07l0.7,-1.59l-0.22,-0.76l-1.09,-0.27l-1.63,0.55l-0.57,-2.01l-0.9,-0.47l-0.7,0.29l-0.43,1.22l-1.37,0.06l-0.16,-0.75l1.24,-0.83l0.07,-0.8l-2.14,-4.79l-2.4,-3.04l-2.13,-2.27l-1.92,-1.33l-1.32,-0.24l-1.74,0.54l-1.0,-0.81l-0.58,0.42Z", "name": "Chhattisgarh"}, "IN-CH": {"path": "M266.15,165.51l-2.24,-2.23l-0.12,-0.55l1.16,-0.55l1.66,0.15l0.44,1.34l-0.16,1.56l-0.74,0.28Z", "name": "Chandigarh"}, "IN-GA": {"path": "M171.13,653.34l0.82,-0.49l2.2,-0.25l0.84,-1.12l0.38,0.84l1.86,0.75l0.72,2.4l1.25,1.01l1.01,0.17l2.17,-0.81l2.03,0.13l1.31,-0.56l1.58,0.8l0.64,3.06l-0.59,1.24l0.03,0.83l0.59,0.86l0.06,1.41l1.19,1.5l0.15,1.34l-0.25,0.39l-1.24,0.3l-0.42,0.49l0.16,0.93l1.4,1.13l-1.01,2.75l0.15,2.34l-1.02,2.28l-0.76,0.39l-1.33,0.04l-1.82,1.18l-1.4,-0.88l0.06,-1.67l-0.32,-0.72l-0.99,-0.43l-1.0,-1.7l-1.34,-0.43l0.32,-0.82l0.93,-0.77l0.11,-0.61l-0.54,-0.55l-1.62,-5.41l-0.52,-0.65l-1.65,-0.3l-0.6,-0.51l2.08,0.23l0.62,-0.25l0.78,0.3l0.93,0.96l0.63,-0.35l-0.02,-0.58l-1.35,-1.45l-3.77,-1.12l0.45,-0.68l1.85,-0.72l-0.19,-0.91l-0.59,-0.35l-2.36,1.34l-0.55,-0.34l0.05,-0.87l-0.54,-1.54l0.59,-0.89l2.24,-0.65l0.3,-0.6l-0.39,-0.4l-1.74,0.07l-1.67,1.11l-0.87,-2.2Z", "name": "Goa"}, "IN-GJ": {"path": "M0.5,399.96l0.7,-0.07l0.65,-0.85l1.21,0.35l1.42,-0.85l0.14,-0.66l-0.59,-0.43l-0.93,0.34l-0.77,-0.57l-0.51,-2.68l-0.67,0.36l0.47,-2.07l0.64,-0.96l1.64,-0.62l-0.08,-1.16l0.42,0.58l0.75,0.19l1.26,-1.22l0.45,0.24l0.9,-0.64l10.29,-0.14l0.4,-0.4l0.04,-10.49l0.51,-1.05l1.13,0.05l0.45,2.22l0.74,0.73l0.91,-0.37l1.29,-2.29l1.82,2.06l0.74,0.04l2.52,-1.05l3.13,1.14l3.52,-0.99l8.54,0.22l0.76,0.33l2.36,2.42l1.6,0.78l7.98,0.11l1.43,-0.3l1.28,-1.0l1.64,-3.28l4.06,-0.84l1.74,-1.07l2.27,-0.31l1.43,-0.97l4.1,-0.7l0.18,0.38l-0.74,0.64l-0.12,0.58l0.81,3.24l1.9,1.14l4.26,0.3l3.16,-1.22l0.2,-0.72l-0.41,-0.77l2.11,-1.57l2.5,0.12l0.86,-0.95l1.84,-0.89l-0.41,-1.47l-2.81,-0.83l0.18,-2.07l-0.72,-0.83l-0.07,-0.71l0.57,-1.53l2.65,-1.55l1.66,0.93l2.93,0.8l0.95,0.0l2.15,-0.83l2.27,0.43l1.81,-1.1l2.8,-0.18l1.22,0.17l1.61,0.83l3.68,-0.64l0.6,1.02l1.38,0.34l0.62,-0.37l0.1,-0.96l0.5,-0.3l0.41,0.01l0.74,0.75l1.17,0.13l1.71,-1.24l1.73,-0.39l1.37,1.61l2.36,0.79l1.19,0.15l3.43,-0.47l-2.31,0.59l-0.18,0.93l1.37,1.15l1.47,0.26l0.66,0.97l1.68,0.05l0.11,1.14l1.25,1.86l1.07,-0.16l0.95,-2.34l0.8,-0.05l1.64,0.97l1.95,0.54l0.81,1.65l0.86,0.74l5.67,1.0l1.08,-0.16l1.04,-0.81l0.65,-2.67l0.5,-0.68l2.52,-0.5l-0.24,2.59l0.32,0.65l2.29,0.98l1.23,-0.39l0.06,0.28l-0.47,0.73l-1.64,-0.01l-1.21,1.67l-0.94,2.61l0.78,2.06l0.54,0.75l2.28,1.54l0.5,1.22l1.44,1.4l0.56,-0.04l1.5,-1.02l1.08,-1.87l1.13,1.79l0.1,1.35l0.71,1.7l-1.66,1.34l-0.33,3.86l0.52,0.44l1.25,0.07l1.17,1.92l1.59,0.55l0.03,3.2l1.07,0.14l1.29,-1.03l1.02,0.87l0.0,2.34l0.46,1.2l-0.33,1.36l0.26,0.43l1.46,0.1l1.41,0.86l2.79,-0.78l2.48,3.21l1.08,0.17l1.17,-0.81l2.08,1.91l1.71,0.9l0.52,0.58l0.09,1.77l0.56,0.94l1.07,0.46l1.24,-0.62l0.32,0.13l0.75,0.47l1.19,2.04l1.06,0.7l1.04,2.54l0.7,3.74l0.67,0.28l0.99,-0.26l1.0,1.07l0.15,0.89l-2.47,4.86l-0.69,0.73l-2.4,0.5l-3.97,3.3l-2.47,-0.52l-1.06,0.61l-0.17,1.4l2.3,2.09l0.7,0.27l2.5,-0.14l1.17,0.57l-0.52,0.85l-1.21,0.63l-1.38,0.14l-0.87,-0.73l-0.66,-0.14l-0.64,0.34l-0.43,0.83l0.19,3.95l0.98,1.17l0.6,2.21l0.72,1.01l-0.37,1.38l-0.01,2.02l-1.86,0.34l-2.66,1.26l-0.98,0.85l-1.36,0.17l-2.94,1.25l-0.44,1.12l0.24,2.28l1.08,1.72l-0.69,1.24l-1.5,0.35l-0.49,0.63l0.39,1.13l1.62,2.41l0.55,0.29l5.43,-1.52l3.48,0.09l1.05,-0.57l1.48,0.8l2.63,-0.9l0.24,0.98l-1.57,1.06l-3.99,1.1l-1.51,-0.44l-0.73,0.2l-2.61,2.26l-1.23,3.23l-2.07,0.72l-0.67,-0.54l-0.58,-0.03l-0.41,0.34l-0.93,2.34l-2.01,1.14l-0.89,-0.22l-0.84,0.23l-2.12,-1.04l-0.82,0.35l0.24,1.02l1.22,1.18l1.38,0.77l2.01,-0.03l1.03,1.36l1.56,0.58l2.32,2.59l0.99,2.76l0.19,3.31l-0.49,0.92l-2.42,2.07l-0.13,1.4l-0.42,0.84l-2.66,1.32l-1.84,0.02l-1.33,-1.63l-3.25,-1.89l-1.11,-1.53l-0.78,0.14l-0.93,1.49l-1.29,0.62l-0.04,0.76l1.28,0.48l0.25,1.12l0.99,0.4l0.28,1.19l-2.99,5.31l0.78,1.33l0.23,1.97l-0.49,1.57l0.17,0.94l-3.44,-0.35l-0.69,0.66l-0.27,1.36l-1.1,0.52l-0.38,-0.06l-0.01,-1.51l-0.72,-0.56l-1.37,-0.12l-0.43,0.32l-0.21,0.95l-0.95,0.04l-0.36,-1.68l2.24,-1.3l0.45,-0.95l-0.35,-0.68l-1.23,-0.09l0.08,-1.11l-0.81,-0.47l-2.07,1.39l-1.14,-0.0l-0.65,1.29l-1.14,-0.15l-0.55,0.41l-0.11,0.95l1.46,1.36l0.23,1.61l-1.88,0.66l-1.35,-0.06l-0.65,0.32l-1.02,-0.24l-1.45,0.83l0.73,-2.93l0.57,-1.06l-0.41,-0.59l0.18,-1.49l0.99,-2.09l0.98,-0.77l1.51,-0.17l0.65,-0.65l-0.08,-1.64l-0.77,-1.03l0.99,-1.77l-0.03,-2.84l0.62,-1.11l-0.07,-2.45l1.33,-1.05l-0.21,-0.59l-0.63,-0.42l-0.03,-1.1l-0.67,-0.08l-0.38,0.46l-0.11,-0.45l0.53,-1.02l-0.21,-0.61l-1.26,0.33l0.35,-1.15l-0.63,-0.76l1.16,-0.71l0.28,-0.98l-0.44,-0.43l-1.52,0.3l-0.45,-0.77l-1.18,-0.59l1.25,0.19l0.67,-0.14l0.43,-0.53l-1.08,-2.77l-0.57,-0.44l-1.51,0.57l-0.74,-0.19l0.11,-0.83l-0.45,-0.52l-0.52,-0.03l1.22,-0.68l-0.09,-0.44l-1.49,-0.75l-1.09,-0.93l-0.03,-0.45l-0.63,-0.3l-0.58,0.41l-0.15,-0.32l-0.44,-1.87l1.42,-0.28l0.28,-0.74l-0.56,-0.42l-1.68,0.12l1.8,-0.54l2.67,-1.74l0.35,0.25l0.59,-0.15l0.08,-1.13l-0.83,-0.39l-2.31,0.85l-1.68,1.13l0.77,-1.49l2.09,-1.65l2.56,-1.29l1.44,-1.98l1.44,0.24l2.03,-0.72l0.96,-0.67l4.65,-1.88l0.51,-0.51l0.13,-0.73l-0.86,-0.4l-3.05,1.6l-2.75,0.95l-2.09,-0.31l-1.84,0.69l-1.99,-0.44l-1.81,0.3l-1.83,-0.23l-2.19,0.51l-0.03,-0.91l0.75,-1.97l0.26,-2.24l0.6,-0.39l1.0,-2.09l0.74,-0.36l1.38,-0.01l0.52,-0.51l0.26,-0.88l0.74,-0.47l-0.31,-0.63l-1.03,0.01l-0.6,0.71l-2.18,0.28l-2.07,1.63l-0.98,-1.7l1.19,-5.61l0.93,-1.11l0.97,-0.45l1.83,0.91l0.97,-0.07l1.05,0.62l0.56,-0.08l1.83,-2.13l0.87,-0.16l1.4,0.83l0.95,-0.34l0.39,-1.48l-0.64,-1.05l-0.97,0.51l-1.22,-0.43l-0.84,0.08l-1.89,0.94l-2.79,-0.93l-1.08,0.05l-1.68,-0.54l-0.77,0.2l-1.65,1.38l-0.67,0.2l0.15,-0.47l-0.39,-0.52l-1.99,0.41l-0.25,-1.46l0.75,-0.74l0.1,-0.66l-0.41,-0.73l-0.48,-0.12l-1.3,0.92l-0.97,2.53l-1.14,-0.05l-0.41,-1.1l-0.83,-0.23l-1.09,0.05l-0.53,0.76l-1.33,-0.02l-0.2,0.66l0.68,0.67l1.07,0.28l0.85,-0.5l0.31,0.91l0.9,0.39l1.02,-0.03l0.24,1.05l-0.28,3.28l-1.38,1.94l-1.79,0.18l-0.67,0.89l-0.99,-0.87l-1.35,-0.09l-0.31,0.32l0.18,0.41l0.66,0.43l-0.97,-0.27l-0.45,0.17l0.18,0.63l-1.59,0.61l0.15,0.67l1.89,0.64l1.44,-0.1l0.69,0.88l-0.18,0.92l-1.97,-1.61l-0.75,-0.2l-0.45,0.23l-0.2,1.02l1.11,0.46l0.3,0.48l-2.34,-0.84l-0.76,0.39l0.16,2.39l0.61,0.07l0.52,0.59l1.44,-0.43l1.41,0.38l1.26,-0.46l0.97,1.2l0.7,1.57l0.66,0.39l0.82,0.02l0.65,0.95l0.03,0.91l-0.66,0.75l-1.0,3.65l-2.24,2.74l-0.51,1.07l-1.35,1.36l-0.58,2.43l0.41,1.27l-3.25,1.99l-2.05,0.24l-4.99,3.12l-1.45,0.04l-2.41,1.15l-1.67,1.19l0.07,-0.5l-1.13,0.05l-1.81,1.46l-0.9,1.36l-4.4,1.16l-5.39,2.64l-1.52,0.13l-0.92,0.73l-2.44,0.05l-0.65,0.93l-3.65,0.22l-0.99,-0.18l-0.85,-0.59l-1.16,0.23l-1.21,-0.86l-4.8,-1.96l-2.71,-1.5l-1.64,-1.54l-1.94,-0.78l-8.52,-7.09l-3.03,-3.95l-3.49,-3.74l-0.87,-1.33l-0.17,-0.96l-1.73,-1.02l-3.88,-4.04l-1.94,-1.14l-2.67,-3.2l-1.63,-1.0l-0.84,-1.01l-0.18,-1.89l-0.66,-0.19l-0.63,0.59l-0.54,-0.17l-4.18,-3.73l-1.45,-1.96l-1.46,-1.14l-1.7,-2.63l-1.65,-1.48l-1.47,-2.81l0.88,-3.29l0.5,-0.76l1.32,-0.83l-0.26,0.75l1.01,1.24l0.67,0.08l1.02,-0.44l0.83,0.17l0.94,-0.69l0.25,0.21l-1.03,2.68l0.24,0.84l1.52,1.23l2.4,-0.38l1.52,-0.7l0.65,-0.71l2.26,-0.04l1.51,-0.42l1.45,-1.37l0.19,-0.7l-0.34,-1.28l0.36,-0.06l0.3,2.26l1.88,0.7l0.59,-0.29l0.11,-0.39l0.69,-0.13l0.66,-0.9l0.59,0.21l0.46,-0.2l0.83,-2.0l1.53,1.64l0.7,-0.0l0.95,-1.43l1.58,-0.33l2.54,-2.09l2.6,-0.59l2.59,0.34l1.25,-0.49l4.5,-7.15l0.16,-1.52l1.55,-2.48l2.22,-1.93l1.09,0.04l0.73,-0.69l0.69,-1.43l0.07,-0.9l-0.87,-2.13l-1.25,-0.94l-2.24,1.56l-0.43,0.78l0.33,1.53l-0.31,2.26l-1.2,0.23l-0.53,-0.37l-0.68,0.08l-0.97,-0.5l-1.1,-1.31l-0.65,0.29l-0.22,1.03l-1.45,0.21l-0.85,-0.55l-0.06,-0.82l-0.53,0.16l-0.65,1.13l0.61,0.91l-1.78,0.22l-2.05,0.8l-5.13,1.18l-2.35,1.7l-1.17,1.86l-1.81,-0.42l-2.04,-0.02l-0.85,-0.55l-1.78,-0.11l-5.03,-1.67l-4.08,-0.59l-4.99,-3.19l-5.31,-2.24l-6.42,-4.41l-0.28,-0.83l-0.74,-0.31l-0.42,-0.6l0.49,-0.71l0.1,-0.83l-0.57,-0.36l-1.75,0.26l-0.15,-0.25l0.45,-0.89l1.3,-0.27l0.19,-0.55l-1.43,-1.28l-1.29,-0.24l-0.08,-0.55l0.78,-0.72l-0.27,-0.47l-1.15,-0.11l-0.95,0.55l-0.06,-1.22l-1.08,0.26l1.83,-2.32l-0.14,-0.36l-0.86,-0.1l-0.56,-0.78l-0.49,-0.1l-0.21,0.45l0.29,1.18l-0.41,0.11l-0.0,-3.49l2.18,0.23l0.39,-0.38l0.04,-0.61l-0.48,-0.5l1.61,-0.59l1.53,-1.82l1.55,-0.78l1.08,-1.78l1.61,-0.09l3.07,-2.0l-0.09,-0.69l-0.8,-0.19l-1.32,0.28l-1.37,1.12l-2.52,0.25l-0.62,0.52l-0.65,1.24l-5.16,2.14l-2.79,3.05l0.2,0.67l-0.49,0.4l-4.27,-0.24l-0.75,-0.44ZM141.04,481.24l-0.02,0.35l-0.14,0.07l0.03,-0.2l0.13,-0.22ZM139.1,480.22l0.01,0.97l-0.7,0.34l-0.26,-0.5l0.95,-0.81ZM28.19,437.73l0.34,-0.24l-0.1,0.14l-0.23,0.1Z", "name": "Gujarat"}, "IN-RJ": {"path": "M113.16,366.39l-0.79,-0.19l-0.82,-1.14l-3.88,0.61l-1.37,-0.78l-1.49,-0.21l-3.05,0.21l-1.75,1.08l-2.15,-0.45l-2.94,0.83l-2.75,-0.76l-1.27,-0.83l-0.91,-0.2l-1.55,-3.64l-2.68,-4.47l-2.06,-7.11l-3.54,-3.49l-0.79,-2.29l-1.64,-1.88l-0.21,-1.01l0.33,-6.6l-0.19,-1.6l-0.91,-1.04l-1.23,-0.24l-3.67,1.06l-3.52,0.09l-2.79,-0.74l-0.75,-0.92l-0.69,-1.91l-3.03,-3.12l-0.94,-1.52l-0.54,-1.56l0.29,-3.26l1.77,-3.12l0.63,-2.52l-0.28,-1.98l0.55,-1.87l-0.16,-5.57l-1.0,-1.17l-2.36,-0.91l-7.44,0.28l-1.19,-0.44l-3.46,-2.72l-4.77,-1.9l-0.82,-0.89l-0.21,-1.18l1.29,-7.93l0.8,-2.43l1.22,-2.0l8.35,-7.32l1.89,-2.92l2.65,-2.47l0.77,-1.08l2.56,-6.91l7.24,-6.53l3.37,-0.9l2.19,0.73l2.89,2.68l0.22,2.51l0.96,2.12l1.23,1.73l1.86,1.21l2.15,0.28l2.76,-0.58l7.27,-3.47l2.28,-0.75l5.18,-0.75l5.05,-0.01l9.45,-2.8l0.73,-1.01l0.37,-4.13l0.46,-1.13l2.41,-3.02l5.04,-4.28l1.5,-3.1l1.81,-6.71l0.69,-1.31l2.22,-2.6l16.76,-8.5l1.03,-0.96l1.04,-2.37l2.71,-3.73l5.61,-10.36l4.24,-13.14l5.55,-2.7l5.67,-1.24l1.25,-0.68l5.27,-4.38l0.01,1.53l-2.58,4.47l0.0,0.93l0.33,0.34l15.39,0.72l3.64,0.48l0.02,0.94l0.94,0.93l0.04,0.52l-2.13,1.4l-0.59,2.13l0.48,0.91l1.08,0.31l2.26,-0.71l0.48,-0.41l0.19,0.23l-0.67,2.55l-0.26,2.85l0.37,1.18l0.79,0.98l-0.07,1.22l-0.19,0.37l-1.73,0.3l-0.34,0.95l2.48,3.97l1.17,-0.0l0.51,-1.04l3.42,-0.01l1.87,-1.25l2.62,1.15l1.36,2.74l1.0,0.28l1.28,-0.27l0.65,1.25l0.71,0.48l2.28,-0.55l0.86,-0.67l1.03,0.64l1.26,-0.12l1.93,-1.4l-0.21,1.19l0.37,0.73l0.69,0.23l1.08,-0.74l0.54,1.48l-0.83,0.46l-0.2,0.49l0.54,1.33l0.0,1.06l1.94,2.91l1.92,0.98l-0.02,0.67l-0.77,0.56l-0.22,0.85l3.34,9.56l3.35,4.22l2.17,1.57l-0.14,0.74l0.33,0.67l1.41,0.08l2.09,0.88l2.08,1.93l2.08,2.67l1.58,2.67l-0.7,-0.71l-0.52,-0.07l-1.05,1.15l-1.53,0.73l-0.43,0.67l0.27,0.88l0.98,0.7l0.61,-0.02l0.86,-0.7l-1.13,1.37l-0.82,1.64l0.59,0.99l-0.48,0.39l-0.91,-0.04l-0.45,0.81l0.15,0.87l1.22,0.93l0.58,1.57l0.74,0.31l3.48,-0.31l1.76,1.41l1.39,-0.66l0.29,-1.0l-0.42,-1.48l-0.6,-0.68l-0.03,-1.56l-0.65,-2.07l0.15,-1.09l0.22,-0.27l1.06,0.2l1.09,-0.39l1.6,1.04l1.18,-0.25l0.39,-0.55l0.02,-0.94l-1.13,-0.83l0.85,-0.33l0.02,-0.98l0.68,0.29l2.29,-0.31l0.49,0.72l-0.59,-0.08l-0.38,0.31l0.06,0.73l0.66,0.56l-0.57,0.47l0.03,0.51l1.42,0.83l0.92,0.06l0.52,1.73l0.97,0.65l1.15,-1.04l2.04,-0.52l0.28,-0.58l-0.44,-1.85l3.39,-2.44l1.36,-1.92l1.01,-0.38l2.42,2.36l0.15,0.52l-0.65,2.79l0.52,2.35l0.19,3.84l-0.86,1.6l-0.46,2.44l0.4,1.04l-0.58,0.37l-0.03,0.84l0.72,0.56l2.1,-0.25l1.27,-1.76l2.05,-0.4l0.26,-0.81l-1.3,-0.89l0.24,-0.53l1.97,0.6l0.71,-0.1l0.6,-0.56l0.81,0.49l0.58,-0.41l0.82,0.59l0.81,-0.67l0.38,0.07l0.36,2.7l0.84,0.78l0.33,0.85l0.04,0.6l-0.52,1.02l0.73,0.91l0.01,1.61l2.3,3.01l0.95,2.22l1.87,0.74l1.89,1.31l1.14,0.19l0.15,1.49l0.75,1.73l0.61,0.61l-0.36,0.58l-1.2,0.7l-0.31,0.83l-2.57,0.82l-0.37,0.89l0.3,0.66l0.88,0.32l0.64,1.0l2.23,0.36l0.7,-0.5l0.87,1.25l-1.42,0.37l-6.42,3.0l-0.85,1.15l-0.02,2.84l0.73,0.32l0.77,-0.2l1.26,-1.79l1.15,0.07l4.09,-1.67l2.33,-1.65l2.98,0.47l0.85,0.51l1.05,-0.35l2.89,0.35l1.09,1.2l0.67,-0.29l0.09,-1.11l1.09,-0.08l1.28,-1.16l1.69,-0.04l2.02,0.57l-0.98,0.92l-1.12,0.42l-0.05,0.72l0.66,0.88l-0.85,0.24l-0.1,0.82l-1.0,-0.26l-0.95,0.2l-0.54,3.52l-0.93,0.02l-0.98,-0.46l-1.99,0.86l-1.51,0.22l-0.57,0.55l-0.21,0.79l-1.71,0.58l-0.26,0.53l0.27,0.69l-2.38,1.08l-0.92,1.0l-2.98,0.75l-3.21,2.22l-2.11,0.06l-0.56,0.59l-0.11,0.9l-2.76,0.32l-1.52,2.06l-2.32,1.81l-2.65,0.18l-0.91,0.72l-0.32,0.96l-1.97,0.47l-0.92,1.2l-1.56,1.0l-1.05,0.28l-0.68,1.19l-2.24,1.52l-0.52,1.68l-0.79,0.35l-0.93,1.01l-2.88,0.01l-0.79,1.22l-0.84,0.14l-1.36,1.03l-1.09,1.85l-0.12,1.68l-1.03,0.59l1.24,6.15l1.02,3.16l1.64,0.79l1.23,1.75l2.04,0.43l1.85,1.25l0.57,0.11l1.26,-0.41l1.39,0.2l1.84,1.04l0.77,-0.39l1.71,0.0l2.77,-1.21l2.19,0.5l1.34,-0.62l0.88,-1.95l0.69,-0.54l1.52,-0.36l0.69,0.22l0.38,0.55l-0.47,1.46l0.69,1.45l-0.15,1.82l1.16,1.77l-0.39,1.97l-1.43,1.01l-1.76,-0.7l-1.13,0.24l-1.06,-0.21l-3.5,1.17l-2.7,0.19l-4.12,1.59l-0.88,1.16l-0.03,0.67l0.99,2.1l0.11,1.21l-0.8,0.67l-1.8,0.4l-0.46,0.59l0.01,0.63l2.21,2.47l1.07,0.57l2.33,0.03l1.64,1.33l0.87,1.46l0.43,2.21l-0.59,0.95l-3.32,1.33l-0.31,-0.01l-0.09,-0.98l-0.76,-1.19l-1.72,-0.45l-0.99,0.55l0.19,7.02l0.56,1.52l1.87,2.64l-0.75,1.42l-2.66,0.44l-2.87,-1.98l-0.29,-0.38l0.59,-1.58l-0.65,-0.89l-1.49,0.26l-1.32,0.66l-0.62,0.81l-0.38,1.25l-0.93,0.27l-0.8,-1.35l-0.81,-0.46l-2.36,0.15l-2.37,-0.75l-2.62,0.03l-0.56,-0.65l-0.06,-1.39l-0.91,-0.21l-1.44,0.8l-0.41,0.77l-0.22,5.75l-0.91,1.03l-3.07,2.04l-0.18,0.86l0.58,0.69l-0.36,0.8l-2.54,1.42l-3.18,1.16l-1.39,-1.09l-0.78,0.05l-0.42,0.67l0.21,1.39l-0.75,1.99l-1.04,-0.67l-1.53,-0.23l-0.54,-1.73l-2.26,-1.43l-0.39,-0.57l-0.11,-1.38l0.73,-1.34l0.34,-0.08l2.56,1.5l0.99,-0.14l1.03,-0.78l1.53,0.76l2.78,-3.75l-0.19,-0.69l-1.38,-0.85l-0.38,-0.73l0.33,-1.04l1.14,-1.39l0.31,-1.44l-0.35,-1.02l-1.31,-0.83l-0.49,-2.5l0.29,-1.27l0.46,-0.6l2.12,0.79l0.87,-0.42l0.54,-0.87l-0.12,-3.35l-1.72,-2.18l-0.08,-1.9l-1.45,-1.82l-0.93,-0.39l-1.02,0.2l-2.12,1.19l-6.1,1.13l-1.71,-0.05l-2.46,-0.66l-2.71,0.12l-0.69,-0.28l-0.43,-0.95l1.0,-1.04l0.14,-0.7l-0.82,-1.9l1.39,1.33l1.73,0.45l2.43,-0.55l1.29,-1.43l-0.03,-0.57l-0.61,-0.38l-3.06,0.55l-1.27,-0.53l0.04,-0.32l1.57,0.36l0.71,-0.62l-0.09,-0.83l-0.78,-1.15l0.96,-1.84l-0.38,-0.68l-2.77,0.61l-2.39,-0.18l-0.87,0.22l-1.43,2.29l0.29,1.74l-0.19,0.81l-1.27,-0.2l-1.56,1.09l-2.66,-1.04l-1.24,-1.01l-1.28,-0.2l-0.46,0.24l-0.21,0.62l0.68,2.0l-0.19,1.6l0.21,0.59l3.12,0.55l1.1,-0.15l0.1,0.39l-0.55,2.44l-0.6,0.36l-1.68,0.1l-1.61,-1.83l-0.62,-1.83l-0.6,-0.15l-0.56,0.47l-0.19,2.47l0.42,1.11l-2.09,4.22l-0.12,0.98l0.53,0.75l3.35,1.05l0.25,0.61l-2.43,2.42l-0.39,1.79l-0.73,1.25l0.16,0.52l0.56,0.3l2.45,-0.12l1.2,0.69l0.89,3.8l2.05,2.4l-0.64,1.04l-1.18,3.43l-0.18,1.43l0.11,2.2l0.8,1.33l0.19,1.94l-2.53,4.99l-0.87,0.81l-5.89,2.59l-2.01,1.8l-1.52,2.59l0.02,1.08l0.6,0.72l2.45,0.79l1.39,0.05l1.5,1.36l-2.98,1.57l-1.93,0.47l-2.21,1.15l-2.7,-0.33l-1.68,0.98l-0.59,-0.97l-0.83,-0.47l-1.34,-2.19l-1.43,-0.75l-1.43,0.61l-0.48,-0.26l-0.72,-2.86l-2.18,-1.34l-2.15,-1.97l-0.91,-0.2l-0.73,0.85l-0.66,-0.04l-2.15,-2.97l-0.57,-0.34l-2.93,0.76l-1.14,-0.82l-1.17,0.04l0.32,-1.25l-0.46,-1.22l0.13,-1.76l-0.24,-0.9l-1.4,-1.24l-0.65,0.06l-1.41,1.07l0.32,-2.39l-0.31,-0.73l-1.75,-0.71l-1.19,-1.94l-1.47,-0.23l0.28,-3.15l1.47,-1.08l0.28,-0.53l-0.77,-1.97l-0.12,-1.42l-1.32,-2.1l-0.38,-0.24l-0.65,0.19l-1.13,1.93l-1.34,0.87l-0.98,-1.08l-0.62,-1.36l-2.63,-2.03l-0.7,-1.62l0.87,-2.35l0.88,-1.21l1.13,0.05l0.78,-0.31l0.62,-1.27l-0.18,-0.76l-0.43,-0.3l-1.27,0.38l-1.91,-0.74l0.23,-2.35l-0.43,-1.01l-1.21,-0.11l-2.26,0.63l-0.78,1.08l-0.46,2.35l-0.86,0.68l-0.6,0.06l-1.89,-0.53l-3.52,-0.4l-1.51,-2.29l-2.14,-0.65l-1.84,-1.02l-1.46,0.26l-0.78,2.15l-0.36,0.2l-0.92,-1.62l-0.24,-1.27l-1.85,-0.15l-0.62,-0.94l-1.53,-0.29l-0.97,-0.75l2.33,-0.44l0.22,-0.89l-0.68,-0.67l-4.54,0.35l-2.17,-0.71l-1.13,-1.44l-0.59,-0.29l-2.11,0.47l-1.51,1.18l-0.76,-0.09l-0.9,-0.81l-0.82,0.05l-0.91,0.64l-0.15,0.93ZM294.16,288.97l0.26,-0.35l0.11,-0.1l-0.05,0.3l-0.31,0.15ZM252.61,250.52l-0.88,-0.6l-0.15,-0.41l0.59,0.24l0.44,0.77Z", "name": "Rajasthan"}, "IN-MP": {"path": "M191.91,423.84l-0.52,-3.36l-0.53,-1.39l0.74,-0.61l0.77,-0.34l2.88,0.29l2.23,-1.16l1.99,-0.5l3.36,-1.88l-0.0,-0.75l-1.53,-1.53l-4.03,-0.93l-0.42,-0.88l1.39,-2.39l1.85,-1.66l5.83,-2.55l1.04,-0.94l1.49,-3.12l1.15,-1.64l0.11,-1.95l-0.24,-1.12l-0.77,-1.25l-0.08,-1.88l0.16,-1.29l1.86,-4.79l-2.14,-2.67l-0.45,-2.8l-0.59,-1.21l-1.63,-0.91l-2.47,0.1l0.66,-1.0l0.32,-1.64l1.74,-1.48l0.81,-1.32l-0.17,-0.87l-0.45,-0.45l-3.45,-1.11l-0.08,-0.37l2.2,-4.61l-0.4,-1.42l0.1,-1.99l0.36,1.48l0.95,0.81l0.7,1.18l0.53,0.26l1.56,-0.03l1.01,-0.34l0.72,-0.72l0.5,-2.94l-0.75,-0.84l-1.19,0.14l-2.6,-0.34l0.17,-1.7l-0.66,-1.97l0.84,0.14l1.09,0.93l2.15,1.06l1.16,0.09l1.62,-1.1l1.02,0.31l0.63,-0.38l0.36,-1.3l-0.29,-1.62l1.1,-1.75l2.84,0.09l2.19,-0.57l-0.84,1.67l0.9,1.76l-1.84,-0.24l-0.48,0.64l0.06,0.81l0.84,0.71l1.12,0.24l2.91,-0.55l-1.3,1.1l-1.61,0.23l-1.34,-0.35l-1.47,-1.38l-0.77,0.01l-0.33,0.88l0.81,1.84l-0.85,0.94l-0.32,0.92l0.8,1.39l1.08,0.43l2.69,-0.13l2.41,0.65l1.95,0.06l6.25,-1.16l2.89,-1.35l0.81,0.55l0.9,1.26l0.02,1.76l1.69,2.09l0.14,2.99l-0.72,0.67l-1.35,-0.77l-1.15,0.13l-0.74,0.98l-0.34,1.56l0.56,2.82l1.31,0.91l0.28,0.62l-0.23,1.1l-1.45,2.03l-0.07,0.88l0.25,0.76l1.62,1.36l-2.15,2.93l-1.36,-0.75l-1.75,0.95l-3.0,-1.53l-0.78,0.44l-0.86,1.74l0.13,1.58l0.39,0.76l2.43,1.6l0.49,1.72l0.33,0.26l1.63,0.23l0.86,0.6l0.71,0.05l0.53,-0.62l0.69,-1.91l-0.18,-1.56l1.04,0.97l0.88,0.15l3.38,-1.22l2.74,-1.55l0.62,-1.43l-0.58,-1.02l2.89,-1.87l1.22,-1.46l0.23,-5.8l1.25,-0.97l0.03,1.13l0.96,1.07l0.65,0.22l2.18,-0.18l2.45,0.76l2.27,-0.16l0.37,0.22l0.5,1.22l0.8,0.37l1.54,-0.47l0.94,-2.01l2.1,-0.79l-0.46,2.16l2.85,2.18l0.96,0.53l3.22,-0.59l1.09,-2.16l-2.28,-3.57l-0.43,-4.0l0.27,-1.37l-0.24,-1.82l1.59,0.28l0.46,1.83l1.11,0.44l3.72,-1.46l0.82,-0.85l0.14,-0.79l-0.48,-2.47l-1.05,-1.74l-1.9,-1.51l-2.48,-0.08l-0.78,-0.44l-1.9,-2.1l0.23,-0.33l1.92,-0.41l0.89,-0.95l-0.08,-1.74l-0.97,-2.28l0.51,-0.72l3.91,-1.51l2.67,-0.19l3.37,-1.16l1.06,0.21l0.95,-0.26l1.95,0.71l1.88,-1.18l0.37,-0.58l0.33,-2.13l-1.25,-2.17l0.23,-1.44l-0.69,-1.42l0.48,-1.43l-0.97,-1.29l-1.87,-0.11l-1.6,0.8l-0.94,1.95l-0.61,0.55l-2.56,-0.43l-2.91,1.24l-1.6,-0.03l-0.73,0.39l-1.59,-1.02l-1.63,-0.22l-1.33,0.41l-1.98,-1.3l-1.68,-0.23l-1.39,-1.83l-1.51,-0.67l-0.88,-2.84l-1.3,-5.49l1.02,-0.67l0.31,-2.18l0.62,-1.04l1.1,-0.9l1.23,-0.38l0.55,-1.06l2.42,0.18l0.59,-0.28l0.95,-1.02l0.89,-0.44l0.58,-1.75l2.19,-1.47l0.56,-1.08l0.9,-0.2l1.61,-1.02l0.91,-1.21l2.0,-0.48l0.62,-1.26l0.58,-0.41l2.55,-0.13l2.61,-2.01l1.39,-1.95l2.46,-0.14l0.69,-0.61l0.16,-0.98l2.14,-0.08l3.22,-2.23l3.09,-0.81l0.88,-0.97l2.69,-1.32l-0.1,-1.03l1.58,-0.6l0.61,-1.23l1.4,-0.18l1.79,-0.82l1.11,0.48l1.32,-0.23l0.74,-2.26l-0.13,-1.3l1.54,0.32l0.58,-0.57l0.06,-0.52l1.15,-0.19l1.1,0.21l1.15,-1.25l2.21,0.06l0.6,0.87l1.21,0.11l1.07,1.0l1.77,0.32l1.5,0.84l1.12,-0.0l0.65,-0.6l1.15,0.01l1.42,-0.73l0.31,0.53l0.62,0.09l0.33,-0.27l0.47,0.74l0.85,0.09l2.08,1.98l1.97,-0.15l0.92,3.46l2.47,4.19l0.31,1.69l-0.36,1.13l0.63,0.93l-1.09,1.53l-1.67,0.49l-0.96,0.95l-0.03,1.06l0.54,0.96l-0.96,0.59l-0.16,1.24l1.03,1.32l-1.17,1.84l-1.04,2.8l-1.41,1.74l-0.79,2.01l-2.15,1.79l-0.42,1.83l0.82,2.19l-0.08,0.67l-0.87,0.47l-3.09,0.63l-2.0,1.1l-2.01,-0.16l-3.47,0.83l-0.72,0.75l-0.3,1.66l-0.43,0.6l-2.48,2.28l0.14,1.03l1.3,1.67l2.05,4.43l-1.1,3.43l0.3,1.25l-0.41,1.16l-1.97,1.91l-2.39,1.59l-0.5,1.2l1.73,2.46l0.18,1.91l0.95,1.42l-0.09,1.58l0.4,0.6l-0.05,0.55l-1.41,2.68l0.63,1.3l0.81,0.48l0.33,0.83l2.13,1.35l-0.66,2.0l1.03,1.4l1.2,0.28l1.31,-0.64l0.68,-0.76l0.44,-1.78l0.54,-0.38l1.29,0.66l3.7,3.07l1.13,0.44l1.71,0.11l0.29,1.21l0.51,0.5l1.39,0.24l2.0,-1.84l1.09,-2.43l1.6,-1.48l0.61,-1.1l0.21,-1.63l-0.77,-0.66l-1.18,-0.2l0.18,-1.5l-0.89,-1.24l-0.76,-1.86l-1.56,-0.8l-2.6,0.54l-0.4,-0.6l-0.1,-0.69l0.64,-1.42l-0.4,-4.14l-2.32,-3.07l-0.93,-5.45l-1.38,-3.44l-1.82,-1.91l0.46,-1.11l1.51,-1.78l-0.04,-0.98l0.34,-0.29l1.63,0.2l1.78,1.89l1.0,-0.11l0.24,-0.64l-0.22,-1.03l0.54,-1.16l-0.8,-1.21l0.38,-1.0l1.02,-0.28l0.21,2.56l0.28,0.42l0.67,0.24l1.06,-0.34l0.39,-0.55l0.01,-2.04l0.8,-1.02l0.43,0.73l-0.35,2.05l0.5,0.45l1.11,-0.0l-0.13,1.21l-0.65,1.35l0.06,1.31l-1.51,1.2l-0.74,1.59l0.05,1.24l0.86,0.77l1.08,-0.45l0.92,-1.08l1.46,-0.63l0.23,-1.37l0.95,0.5l-1.07,1.61l0.14,0.88l0.53,0.5l2.51,-0.66l0.27,1.38l0.64,0.34l0.66,-0.28l0.8,-0.96l3.2,0.58l0.73,-0.83l-0.57,-2.42l0.54,0.56l0.59,0.1l1.28,-1.19l1.03,0.15l0.67,-0.35l-1.84,2.96l-0.99,1.04l-0.22,2.1l0.69,0.76l1.57,0.06l0.34,-0.27l0.21,-2.05l0.73,0.13l0.64,1.13l0.95,-0.04l2.13,-2.35l2.82,0.98l3.59,-0.24l0.55,0.59l0.71,0.2l2.3,-1.07l-0.01,-0.76l-0.98,-1.46l0.31,-0.53l1.98,-0.41l3.08,-2.33l2.01,-0.92l1.31,0.28l1.46,-1.05l0.73,-1.06l0.9,0.24l1.34,-0.26l0.81,1.27l0.36,2.78l1.13,0.71l0.62,0.83l0.69,-0.02l0.56,1.65l-1.97,1.05l-1.44,1.71l-0.96,-0.01l-0.34,0.31l0.1,1.75l0.99,1.21l1.85,-0.32l1.64,0.37l0.55,-0.44l0.02,-0.69l0.89,0.96l1.03,-0.11l1.14,-0.73l0.14,-0.7l-1.44,-0.98l-0.23,-0.67l1.41,0.35l0.98,-0.14l0.49,-0.56l-0.02,-0.89l0.91,1.49l1.19,1.06l2.66,-0.26l0.57,-0.45l-0.02,-0.8l-1.53,-1.17l2.9,-0.26l0.82,-1.55l0.76,-0.22l0.37,0.5l-0.88,2.05l-0.17,1.21l-0.87,0.88l-0.27,1.12l-0.71,0.9l-0.01,0.88l0.65,0.49l1.01,0.13l2.85,-0.5l1.42,1.01l1.82,-0.42l2.77,1.85l0.48,-0.11l0.95,-1.14l1.13,-0.17l0.55,-0.44l-0.19,-1.79l1.86,-2.5l0.21,-1.01l-0.21,-1.35l1.88,-0.09l1.44,0.45l0.14,1.38l1.85,0.38l1.28,-0.26l0.5,-0.44l-0.0,-0.94l-0.92,-0.68l2.58,-0.76l1.08,2.35l-0.2,0.73l0.3,0.56l2.82,0.72l1.28,-0.01l0.48,1.09l0.94,0.37l1.83,-0.48l0.75,0.19l0.86,1.37l-0.24,1.06l0.26,0.65l2.72,2.08l2.45,0.41l2.82,1.69l0.96,-0.18l1.48,-1.0l-0.13,2.39l0.86,0.49l0.92,-0.62l0.09,1.92l0.52,0.37l0.8,-0.12l0.35,0.24l-0.59,1.47l0.13,0.65l3.0,0.17l0.76,-0.21l0.66,-0.93l-0.07,-1.74l4.89,1.07l3.33,-1.1l0.09,1.22l0.4,0.33l1.39,0.15l0.54,1.49l0.68,0.8l-0.36,0.47l-1.52,-0.19l-0.64,0.68l0.2,2.3l-0.31,2.05l0.32,0.63l0.66,0.4l0.01,2.03l-0.73,1.7l-0.24,1.96l-0.48,0.42l-0.99,0.18l-0.36,0.6l0.51,1.13l1.45,1.26l-0.08,1.5l1.94,2.08l-0.51,1.73l-3.3,1.36l-0.49,0.55l-0.31,1.33l-2.3,1.07l-1.01,0.87l-0.88,0.08l-7.25,-0.43l-1.86,-0.49l-3.75,-0.02l-2.21,-1.13l-2.21,-0.16l-3.22,1.48l-0.71,0.02l-1.74,-0.88l-1.97,-1.98l-1.49,-0.09l-0.93,0.68l0.04,1.82l1.74,3.3l0.13,0.87l-0.82,1.16l-1.16,0.74l-0.2,1.29l-0.68,0.92l1.15,2.78l0.98,0.35l3.34,-1.97l2.94,1.13l2.03,0.35l1.91,3.02l1.05,0.45l0.42,0.74l2.45,-0.02l2.02,1.71l-0.93,5.0l-0.6,1.3l-1.71,-0.05l-4.13,2.09l-0.4,0.98l0.22,2.14l-2.16,1.95l-2.51,1.09l-0.4,1.44l0.25,2.13l-0.72,1.02l0.15,1.54l-2.9,1.71l-0.81,1.84l-3.11,0.97l-3.42,2.57l-1.2,-1.63l-0.76,-0.29l-2.59,0.93l-1.23,0.78l-0.33,-0.11l-0.37,-0.87l-0.55,-0.26l-1.18,0.75l-1.36,2.21l-0.12,3.42l-0.63,1.08l-2.01,1.52l-0.47,2.63l-0.86,0.45l-0.09,0.55l0.46,1.25l-1.05,-1.17l-0.71,-0.26l-0.67,0.17l-1.14,1.39l-1.27,2.61l-0.33,1.02l0.08,3.35l-0.46,1.29l-0.84,1.13l-1.17,0.26l-0.81,1.51l-0.42,4.31l0.2,2.79l-0.79,3.1l-0.5,1.32l-1.2,0.7l-4.35,-2.38l-2.47,0.26l0.66,-1.14l-0.53,-1.51l-2.06,-1.52l-0.86,-1.78l-1.97,-0.57l-1.82,-1.32l-2.9,1.1l-0.95,1.06l-2.08,0.67l-1.29,-0.44l-1.59,0.81l-1.72,0.26l-1.05,-1.58l-1.84,-0.51l-3.21,0.31l-2.72,1.46l-0.66,-2.26l-1.15,-0.86l-0.48,-0.84l-1.97,-0.81l-2.96,-0.11l-2.32,-0.77l-0.87,0.22l-0.62,1.76l-4.01,1.3l-2.67,0.31l-2.03,0.7l-0.54,0.74l0.27,1.26l-0.51,0.33l-6.33,1.11l-4.0,-0.66l-1.57,-1.01l-0.97,-0.01l-1.3,0.64l-0.55,-3.04l-0.83,-0.67l-1.23,-0.09l-0.76,0.24l-0.93,1.06l-3.57,1.12l-1.56,1.75l-1.72,1.11l-5.31,1.96l-1.03,0.07l-2.53,-0.84l-2.73,1.48l-0.66,-0.51l-1.65,-0.17l-1.51,0.48l-1.41,-1.01l-0.7,0.0l-0.39,0.34l-1.68,-3.06l0.14,-0.72l3.36,0.16l0.93,-0.48l-0.89,-5.48l-1.4,-0.87l-0.32,-0.69l-0.8,-0.52l-4.42,-0.24l-0.78,0.24l-0.86,0.87l-1.11,0.34l-0.85,0.92l-1.1,-0.81l-2.12,0.08l-2.74,1.01l-3.44,2.43l-2.09,0.11l-1.09,0.46l-0.85,1.04l-0.3,2.63l-1.62,2.5l-2.88,2.12l-0.14,0.51l0.61,1.53l0.02,1.19l-0.72,1.14l-3.85,0.87l-1.98,2.37l-1.61,0.61l-2.78,0.38l-2.94,-0.34l-1.16,-0.59l-1.08,-1.5l0.86,-0.25l0.29,-0.6l-0.36,-2.94l-1.17,-2.7l-0.64,-0.52l-1.32,0.08l-2.71,-0.81l-2.23,-0.27l-2.14,0.52l-3.25,0.17l-2.54,-0.23l-3.15,0.44l-6.44,-0.32l-3.07,-0.67l-2.27,-1.01l-1.93,-3.14l-1.84,-1.33l-1.81,-0.18l-1.57,-0.99l-1.27,-0.25l-4.77,0.17l-1.46,-1.1l-2.02,-0.68l-2.12,-1.56l-0.9,-2.61l0.18,-3.47l-0.27,-1.11l-2.52,-2.68l-1.03,0.05l-1.18,1.1l-1.83,0.63l-0.3,0.75l-0.91,0.4l-1.79,0.03l-1.41,-0.68l0.36,-3.59l-0.75,-1.1l-0.65,-2.31l-0.92,-1.03l-0.2,-3.47l0.42,-0.63l1.49,0.91l2.06,-0.4l1.35,-0.99l0.42,-1.19l-0.17,-0.49l-0.87,-0.58l-3.69,-0.2l-2.05,-1.99l0.61,-0.64l1.89,0.55l1.15,-0.22l3.77,-3.23l1.72,-0.16l1.38,-0.98l2.78,-5.33l0.07,-0.76l-1.19,-1.96l-0.93,-0.37l-0.9,0.29ZM342.94,345.9l-0.07,-0.47l0.06,-0.58l0.99,-1.54l-0.98,2.59Z", "name": "Madhya Pradesh"}, "IN-OR": {"path": "M408.6,584.62l0.87,0.38l0.7,-0.57l0.17,-1.23l0.78,-1.54l0.14,-2.48l0.72,-1.11l0.53,-2.11l-0.29,-1.58l0.84,-1.84l0.76,0.02l2.17,-0.82l1.07,-1.24l1.83,-0.69l1.82,-2.82l4.8,-4.17l-0.13,-1.22l-1.17,-0.95l0.98,-0.36l1.48,-1.56l2.18,-0.42l1.07,-1.66l0.73,0.55l0.81,-0.24l0.83,-3.98l0.54,-0.67l1.08,-0.58l0.29,-0.71l-0.1,-2.84l-0.74,-1.34l-0.25,-1.24l-0.98,-0.82l0.26,-1.36l-0.7,-1.85l0.8,-2.84l-0.22,-0.61l-0.86,-0.66l0.89,-0.73l0.05,-0.95l-0.72,-0.89l-1.26,-0.42l-0.99,-1.74l-1.27,-0.51l0.35,-3.73l-0.41,-1.94l0.27,-2.32l-0.75,-0.79l-1.7,-0.38l-0.94,-1.68l-2.97,-1.76l-0.47,-0.78l0.14,-0.74l1.38,-2.44l0.97,-0.56l1.15,-1.25l1.66,1.78l0.44,1.11l1.07,-0.03l0.97,-1.34l1.85,1.55l0.52,0.87l1.61,0.18l2.16,4.28l0.64,0.59l0.76,-0.22l1.26,-1.7l3.32,0.37l1.51,0.69l1.33,0.07l-0.14,2.05l0.48,0.54l0.74,-0.1l3.64,-2.46l0.2,-0.83l-0.84,-1.09l0.5,-2.36l-0.44,-1.37l-1.49,-0.16l-1.2,0.53l-1.26,-1.05l-2.25,-0.06l-2.22,-1.3l0.69,-3.13l-0.27,-3.86l-0.48,-1.12l0.27,-3.95l-0.1,-0.42l-0.55,-0.27l-0.35,0.21l-0.3,-1.32l-0.82,-0.26l-0.35,-0.87l0.85,-4.04l-0.72,-2.56l-0.04,-3.65l0.23,-0.22l0.93,0.25l0.06,0.91l0.5,0.38l1.85,-0.78l1.59,-2.19l1.54,-1.08l2.51,-4.8l0.2,-1.41l2.78,-0.21l1.21,0.48l1.08,-0.43l4.28,-0.65l3.13,1.97l2.46,-0.12l1.12,-0.71l0.83,-1.15l0.91,-2.52l0.94,-1.38l-0.0,-1.07l0.48,-0.85l2.25,0.71l0.98,-0.23l0.33,-0.74l-0.12,-1.25l-1.59,-1.85l-0.16,-1.47l0.71,-2.42l3.3,-5.53l0.24,-1.66l1.26,0.23l0.4,-1.1l0.9,-0.08l0.47,-0.83l0.2,-2.45l-1.77,-1.6l0.22,-1.51l1.57,-1.15l-0.05,-0.68l-0.65,-1.0l2.18,-3.06l2.99,-1.33l3.65,-3.0l2.69,-0.52l0.96,-0.56l1.06,-1.28l0.29,-0.96l-0.2,-1.52l-0.66,-1.22l2.36,1.1l2.44,3.59l1.03,0.81l1.71,0.29l2.63,1.1l3.55,-0.27l2.45,-1.4l0.45,-1.5l6.57,-0.18l2.05,-0.74l3.38,0.91l1.21,-0.78l1.34,-0.23l2.05,-1.36l0.86,2.95l0.13,1.93l-0.32,1.19l-1.6,2.32l-1.72,3.41l0.2,0.71l0.42,0.13l1.79,-0.54l1.28,0.22l4.01,2.74l3.34,-3.21l2.5,-1.08l0.99,-0.02l3.14,1.77l3.92,1.01l2.38,-0.82l1.13,-0.8l-0.69,1.35l0.07,1.78l0.31,0.54l1.81,0.87l1.44,-0.37l1.24,-0.87l1.91,-2.83l0.46,-2.86l-0.71,-2.31l0.76,-1.24l0.11,-1.23l-0.34,-2.49l-1.3,-1.91l-0.08,-0.67l1.7,-0.51l0.76,-0.96l0.5,-0.16l1.56,1.77l5.7,2.91l2.44,2.6l1.27,0.35l2.8,-0.49l5.68,3.71l0.66,0.99l1.88,0.67l2.06,1.47l1.92,0.22l2.3,1.14l0.67,0.67l0.2,0.8l-0.24,2.33l1.32,1.8l1.16,0.01l1.78,-2.16l0.87,0.07l1.39,0.85l0.72,2.92l0.74,1.0l5.27,1.5l0.12,2.57l1.25,2.13l-3.71,1.5l-4.33,0.33l-2.84,1.48l-1.58,1.12l-4.5,4.76l-1.65,2.44l-0.94,2.78l0.21,2.98l3.72,8.83l-0.15,0.33l-2.19,0.13l-0.26,0.6l0.52,0.68l0.66,0.26l2.2,0.07l0.33,0.76l-0.94,-0.18l-0.86,0.63l0.29,0.63l1.57,0.73l-2.3,1.0l-5.38,4.36l-0.87,1.94l-0.14,2.13l0.59,0.38l1.32,-0.93l0.32,0.19l-0.66,0.93l-2.07,1.29l-0.17,0.9l-1.96,1.18l-3.56,1.2l-0.62,0.5l-0.99,3.01l-2.18,2.22l0.07,0.88l-3.15,-2.37l-2.09,-0.05l-0.98,-0.98l-0.43,-1.27l-0.55,-0.22l-0.38,0.27l-0.24,0.91l0.53,1.5l1.8,1.31l2.24,0.53l0.58,1.03l1.33,0.59l-2.46,1.35l-5.48,2.09l-1.05,-0.38l-0.74,0.47l-5.64,1.45l-1.8,0.97l-1.66,0.07l-2.84,1.15l-0.84,-0.01l-2.11,1.23l-2.56,0.82l-0.12,-0.91l1.47,-0.48l0.08,0.59l0.46,0.02l1.85,-1.08l0.04,-4.51l-0.63,-0.57l-2.59,-0.65l-1.42,0.22l-3.64,3.22l-1.69,0.52l-2.08,2.43l0.02,0.78l-1.97,2.76l0.13,1.11l-0.98,0.61l-0.34,0.66l0.22,0.87l0.6,0.2l-0.13,0.36l0.47,0.55l0.96,-0.7l0.74,-0.13l-3.75,3.53l-6.09,4.87l-2.33,2.95l-0.87,-1.1l-2.14,-0.04l-0.56,0.34l0.14,1.16l-0.34,0.71l-0.9,-0.27l-2.35,1.12l-1.26,1.04l-1.69,0.08l-0.26,0.34l0.17,0.89l-0.33,0.72l0.05,0.87l-1.0,1.23l-1.18,0.2l-0.74,1.7l-1.32,1.09l-4.68,0.75l-2.81,-1.03l-5.13,0.38l-1.2,-1.49l-1.61,-4.45l-1.01,-0.54l-1.01,0.18l-0.5,0.86l0.2,1.32l-0.8,-2.26l-2.99,-3.94l-0.88,0.3l-0.51,1.45l-1.24,0.87l-0.57,1.24l-0.56,-1.57l-1.12,-0.44l-0.41,0.64l0.3,1.21l-0.52,0.7l0.12,0.82l-3.07,-1.25l-1.04,0.21l-0.61,0.54l-0.01,0.6l0.92,1.68l0.72,0.88l0.72,0.22l0.53,0.86l-1.83,0.9l-2.19,1.79l-1.56,0.69l-1.43,-0.77l-1.03,0.31l-3.19,3.91l-0.17,2.09l0.81,1.42l1.02,0.22l-1.53,2.04l0.32,1.52l-0.23,0.78l-0.89,0.07l-1.43,0.66l-1.31,0.07l-0.23,-0.16l0.01,-1.09l-0.37,-0.38l-2.06,-0.8l-0.93,0.12l-0.62,0.52l0.12,1.64l-0.33,0.6l-3.15,1.78l-0.71,1.76l-1.31,-0.43l0.47,-2.32l-0.48,-0.89l-2.17,-2.19l-0.29,-2.87l-2.46,-0.5l-2.38,3.46l-0.09,1.68l-0.5,1.42l0.29,1.04l-1.51,2.72l0.14,0.92l1.34,1.18l-0.86,0.75l0.1,2.0l-1.65,0.16l-0.93,1.4l-1.59,-0.19l-1.48,-1.2l-1.32,-0.39l-1.7,0.2l-1.56,1.08l-2.27,0.35l-3.0,1.96l-2.65,1.29l-1.11,1.17l-1.46,0.31l-2.23,1.63l-1.94,-0.89l-0.68,0.23l-0.52,1.0l-2.17,-0.55l0.13,-1.87ZM525.81,532.38l-0.05,-0.65l0.8,-0.25l0.04,-0.71l-0.49,-0.28l1.13,-1.12l-0.4,-0.64l0.3,-0.48l1.49,0.43l1.55,-1.12l1.08,-0.07l0.05,0.45l-1.37,1.35l-0.86,-0.66l-0.66,0.66l-0.63,0.11l0.75,1.39l-2.7,1.6Z", "name": "Orissa"}, "IN-TN": {"path": "M249.84,785.28l-0.33,-0.95l0.1,-1.86l1.6,0.49l1.48,-0.2l1.11,-1.27l1.32,-0.6l0.3,-1.05l1.07,-0.88l1.68,0.16l0.34,0.48l0.05,1.28l0.84,0.64l5.71,-0.26l2.06,0.51l0.81,-0.69l0.4,-2.03l2.08,-2.99l2.57,-0.44l2.02,1.94l0.79,0.31l0.61,-0.27l0.51,-1.19l2.74,-0.17l1.14,-0.44l2.26,1.02l2.41,-0.26l1.0,-0.81l1.68,-3.48l0.65,-0.34l3.83,-0.43l1.03,-0.61l3.07,-4.27l0.07,-0.85l-1.01,-1.75l-1.33,-0.89l-1.06,-0.22l-5.49,-0.07l-0.44,-1.25l2.84,-2.25l1.44,-2.2l0.47,-2.63l-0.45,-0.65l-0.84,0.03l0.12,-0.69l-0.38,-1.02l1.14,-3.22l2.33,-0.11l2.46,-1.36l-0.16,-1.26l1.0,-1.73l0.33,-1.31l1.11,-0.38l1.66,-0.0l1.7,1.66l1.0,0.45l0.79,-0.3l0.66,-1.11l0.44,0.08l2.35,1.72l2.91,0.96l1.35,1.89l2.47,1.79l2.53,0.3l0.89,-0.42l1.33,-1.4l0.29,-1.48l0.98,0.03l1.45,-1.18l1.06,-2.6l1.03,-4.37l0.4,-0.53l1.29,-0.38l0.6,-0.96l3.87,-0.67l0.65,1.17l0.79,0.15l0.91,-0.67l0.3,-1.05l0.55,-0.02l0.97,0.23l0.51,0.92l2.1,0.65l2.72,-0.3l0.76,-0.54l2.09,-2.71l1.31,0.59l0.57,-0.08l2.15,-2.17l1.18,-0.62l0.42,-0.71l-0.07,-0.91l0.47,-1.75l0.53,-0.28l1.75,0.15l1.06,1.37l0.63,0.35l2.87,-0.38l0.18,1.3l1.04,0.76l2.31,-0.02l0.42,-0.96l-1.05,-0.98l-0.01,-0.36l1.61,0.07l4.38,-2.25l0.44,-0.72l0.05,-1.3l2.65,-1.83l-0.01,-0.75l-0.67,-0.64l1.64,0.69l-0.38,1.1l0.47,0.56l3.19,0.35l1.48,-0.39l1.4,1.36l0.73,-0.21l0.37,2.77l-0.32,2.03l-0.47,0.24l-0.18,1.0l0.58,0.53l-0.78,1.59l0.16,1.33l-0.83,1.23l-1.04,9.49l-2.92,8.93l-1.83,3.47l-1.09,0.85l-1.06,1.81l-2.53,1.85l0.16,0.59l0.84,0.04l-3.55,5.53l-0.05,1.49l-0.3,0.47l-1.72,1.18l-0.44,-0.37l0.52,-1.02l-0.5,-0.57l-1.34,0.11l-1.1,-0.87l-0.45,0.2l-0.56,0.93l0.7,1.08l0.11,0.84l0.4,0.31l-0.32,1.19l0.17,0.58l1.13,0.75l2.01,0.21l-0.67,1.5l-1.05,6.13l1.05,4.71l0.4,0.35l0.61,-0.29l0.1,0.95l-2.0,0.22l-2.44,2.58l0.36,0.58l0.4,-0.05l2.7,-2.02l1.33,0.48l0.06,2.28l0.62,3.2l-0.18,5.1l-0.92,-0.09l-0.81,0.43l-1.49,-0.42l-0.49,0.56l0.19,0.5l-0.54,-0.02l-0.42,0.61l0.15,1.36l1.28,0.83l1.44,0.41l0.03,0.97l1.52,1.03l0.49,13.03l-0.26,2.66l-1.42,0.34l-0.31,-0.79l-0.71,-0.39l-3.95,-0.65l-0.57,0.16l-0.15,-0.37l-0.92,-0.24l-1.62,0.14l-0.37,0.6l-1.79,0.33l-2.01,-0.48l-3.57,2.3l-0.57,0.81l-0.07,0.98l-0.83,0.53l-0.21,0.7l0.26,2.63l0.76,1.39l-2.05,1.82l-1.8,2.46l-1.51,2.81l-1.66,1.67l-1.79,2.49l-0.15,0.98l-1.21,1.73l-0.77,3.4l0.09,0.95l0.61,1.22l3.32,3.21l1.25,0.55l2.2,0.29l-1.72,0.32l-1.86,-0.59l-2.21,-0.03l-1.0,0.68l-2.02,0.14l-2.57,0.91l-1.52,0.99l-1.66,0.14l-1.25,1.21l-5.65,0.86l-2.39,1.3l-4.3,3.53l-1.8,2.81l-0.65,3.87l0.32,0.48l-1.12,2.25l-0.31,0.0l-0.34,0.62l0.79,1.81l-0.42,3.13l-1.41,1.59l-0.66,2.01l-1.71,0.61l-5.96,3.6l-1.22,1.49l-5.3,1.31l-1.05,0.76l-0.09,0.97l-1.21,0.15l-1.8,-0.34l-4.2,-1.29l-0.71,-0.71l-1.86,-0.93l-2.94,-2.68l1.1,-0.45l0.27,-1.46l1.29,-1.9l-0.16,-1.64l1.05,-0.34l1.18,-1.84l-0.4,-1.16l-2.42,-2.44l-0.23,-1.72l1.65,-2.45l0.62,-2.26l-0.4,-0.73l-1.24,-0.88l-1.07,-2.96l1.19,-0.85l0.75,-1.07l2.53,-7.34l0.84,-1.38l0.92,-2.56l1.1,-1.19l-0.19,-1.38l-1.73,-2.54l-1.26,-0.19l-1.8,0.71l-1.71,-0.93l1.56,-5.5l-0.33,-2.9l1.03,-2.56l-1.11,-3.46l1.54,-3.34l0.06,-1.34l-0.72,-0.72l-0.37,-1.59l-0.96,-1.63l-0.72,-0.66l-1.08,0.13l-2.94,1.32l-3.15,2.41l-1.14,-0.38l-2.36,-2.12l-0.06,-1.8l-0.9,-1.93l0.55,-3.53l-0.17,-2.56l1.09,-0.6l0.57,-0.74l0.43,-3.33l-0.23,-0.65l-0.94,-0.6l-0.87,-1.77l-3.86,-1.64l-0.66,-0.88l-0.13,-0.87l0.37,-1.13l1.9,0.19l0.65,-0.91l-0.74,-0.92l-0.83,-2.15l-0.87,-0.98l0.45,-1.93l-0.71,-0.36l-1.63,0.94l-2.99,0.25l-1.41,-0.46l-1.27,0.3l0.6,-1.1l2.2,-1.72l0.28,-0.77l-0.18,-0.49l-0.71,-0.39l-1.01,-1.28l-1.19,-0.47l-1.21,-0.95l-4.71,-1.32l-0.24,-0.32ZM341.41,854.52l0.89,-0.01l1.99,-1.02l0.32,0.12l-0.32,0.93l0.54,1.1l-1.22,-0.66l-2.2,-0.45ZM352.97,822.23l0.25,0.38l-0.78,-0.16l0.52,-0.21ZM353.99,822.77l0.71,0.09l0.49,0.17l-1.19,-0.25Z", "name": "Tamil Nadu"}, "IN-AN": {"path": "M786.03,923.93l0.01,-2.47l0.71,-1.66l1.1,-0.13l0.59,-0.57l1.24,-0.26l1.04,-0.8l0.96,0.7l0.57,1.41l0.32,2.29l1.27,2.41l0.03,1.46l-1.11,2.56l-0.1,1.29l0.41,0.66l-1.31,0.13l-0.67,1.5l0.01,-1.41l-0.81,-0.89l0.05,-0.68l-0.44,-0.46l-0.29,-1.55l-0.7,-0.41l-0.89,-2.01l-1.06,-0.91l-0.92,-0.2ZM785.02,916.8l-0.54,-1.41l0.47,-1.37l1.32,-0.39l0.58,-0.69l0.93,0.88l-0.04,0.59l-2.72,2.39ZM782.63,894.17l0.29,0.95l-0.0,0.53l-1.15,-1.01l0.86,-0.47ZM780.5,891.72l-0.4,-0.52l-0.31,-1.96l1.06,-1.6l0.69,-0.13l0.06,0.48l-0.79,1.64l0.65,1.74l-0.29,-0.16l-0.66,0.5ZM781.79,892.53l-0.6,0.48l-0.41,0.67l-0.01,-0.52l1.02,-0.63ZM777.4,894.02l0.09,1.05l1.22,0.8l0.7,1.14l-0.03,0.45l-0.93,-0.4l-1.7,0.32l-0.12,-1.23l-1.17,-0.29l0.37,-1.49l1.57,-0.36ZM770.19,887.29l-1.18,-0.38l-0.98,-1.26l-0.11,-1.42l0.4,-0.73l0.16,2.27l0.42,0.72l1.29,0.81ZM768.4,766.2l-0.53,-0.93l0.37,-1.58l0.2,0.17l-0.27,1.01l0.23,1.33ZM751.49,774.12l0.88,-1.81l1.07,1.76l0.79,-0.06l0.11,-0.27l0.28,-2.36l-0.24,-1.3l0.63,-1.54l-0.05,-3.07l0.91,-2.0l0.45,0.12l0.42,-0.38l-0.13,0.98l0.73,0.48l1.83,-0.55l0.47,-0.81l-0.31,-1.49l-0.55,-0.41l0.77,-0.26l0.05,-0.92l-0.62,-0.6l-1.27,-0.21l-0.37,-1.1l0.12,-7.3l0.85,-1.29l0.61,-0.06l0.41,-0.65l-0.14,-0.45l-0.94,-0.64l-0.3,-3.47l0.61,-0.75l0.78,-0.04l0.52,-0.68l0.41,-1.58l0.01,-1.58l0.64,-1.33l-0.17,-0.58l-0.62,-0.37l0.62,-2.2l0.77,-1.37l-0.52,-0.97l0.18,-1.42l0.66,-0.54l-0.55,-3.24l1.34,-1.74l0.16,-1.78l1.42,-1.61l0.17,-1.04l1.5,0.01l0.36,-0.57l0.61,-0.13l0.39,0.69l-0.32,1.01l0.14,3.07l0.36,0.22l-0.97,1.23l-0.37,0.19l-0.32,-0.4l-0.65,-0.09l-0.59,0.8l0.51,1.08l1.25,0.22l1.33,1.3l-0.64,1.07l-0.13,2.9l-0.46,2.09l-0.32,0.53l-0.73,-0.2l-0.43,0.42l0.01,-1.38l-0.39,-0.32l-1.19,0.78l-0.29,1.52l0.64,1.07l-0.98,-0.16l-0.37,0.28l-0.91,2.21l0.36,0.65l0.53,0.22l0.74,-0.35l1.04,1.19l0.14,1.72l-0.24,0.98l0.95,1.63l-0.54,2.9l0.5,1.29l0.04,2.05l-1.01,1.21l0.24,0.65l-0.74,0.57l-0.86,-0.65l-0.46,0.06l-0.03,0.59l-1.15,-0.04l-0.43,0.4l0.65,1.8l1.06,0.71l0.12,0.47l-0.83,0.84l0.68,1.2l-0.59,0.69l0.3,1.14l-1.88,2.04l0.04,0.7l-0.77,0.79l-1.34,0.41l-0.13,0.54l0.54,0.76l-1.11,1.91l-0.1,3.33l0.4,0.4l0.63,-0.35l0.24,-1.5l0.24,-0.04l0.31,0.28l0.02,1.58l-1.11,4.78l-1.06,0.35l-1.07,1.13l-0.28,0.88l0.14,1.02l1.12,0.1l0.35,-0.4l0.06,-0.84l0.63,-0.36l0.09,-0.39l0.16,1.37l-0.54,0.66l-0.51,2.56l-1.5,-1.08l-0.07,-0.68l-0.92,-0.79l-0.1,-0.4l0.72,-0.38l0.02,-0.66l-0.9,-0.46l-0.4,-1.88l-0.33,-0.31l-0.95,-0.05l0.1,-3.11l-1.16,-0.79ZM766.4,766.0l0.11,0.62l0.39,0.73l-0.4,-0.42l-0.1,-0.93ZM766.14,717.57l0.26,-0.08l0.11,0.23l-0.14,-0.04l-0.24,-0.1ZM764.5,769.92l0.71,-0.98l0.67,-0.02l1.15,3.22l-0.42,-0.93l-2.11,-1.29ZM758.46,855.43l1.65,1.52l-0.05,1.49l-0.73,0.79l-1.73,-0.53l-0.46,-1.12l-0.04,-0.78l0.91,-0.49l0.44,-0.89ZM756.86,735.74l-0.0,-0.0l0.0,0.0l-0.0,0.0ZM756.0,743.21l0.29,-3.46l0.53,-0.59l0.3,0.45l-0.2,2.01l-0.92,1.58ZM754.65,789.3l-1.08,-0.41l0.1,-0.42l0.79,-0.21l0.37,-0.63l-0.25,-1.63l0.26,-0.56l1.0,1.26l-0.55,1.24l0.54,0.89l-1.17,0.46ZM746.83,808.06l1.1,-0.64l0.47,-1.64l1.46,-0.96l1.09,-0.24l0.89,1.13l0.95,5.03l-1.65,1.72l-0.03,1.18l0.75,0.47l-1.33,1.68l-0.74,-0.18l-1.27,-0.94l-0.69,-0.03l-0.86,0.53l0.62,-0.89l0.47,-1.76l-0.28,-0.78l-0.88,-0.81l-0.09,-2.85ZM751.89,783.09l0.03,-0.27l0.15,0.08l-0.18,0.2ZM742.26,782.71l0.82,0.26l-0.03,0.97l-0.62,-0.14l-0.17,-1.09Z", "name": "Andaman and Nicobar"}, "IN-AP": {"path": "M264.69,675.87l0.59,-0.76l0.07,-1.39l0.36,-0.6l2.8,1.59l2.62,0.61l1.43,-0.37l0.97,0.82l0.73,-0.01l1.54,-1.37l1.31,-2.8l0.15,-1.56l-0.84,-4.18l-0.77,-0.9l-1.69,-0.61l-0.35,-2.03l-1.24,-2.4l0.68,0.17l0.39,-0.54l-0.25,-3.31l0.26,-0.71l0.58,-0.39l1.35,0.21l0.43,-0.69l-1.06,-2.44l-0.71,-0.66l0.22,-3.36l1.07,-1.31l2.59,-1.37l1.85,-0.28l2.42,0.6l4.32,0.13l1.56,-1.78l-0.11,-5.3l0.29,-2.68l1.74,-1.65l0.23,-0.94l-0.19,-0.53l-0.65,-0.77l-1.33,-0.57l-3.05,-0.09l-2.95,-0.77l-0.81,-0.99l3.28,-2.1l0.59,-1.33l1.2,-0.69l0.63,-1.85l-0.17,-0.57l-0.53,-0.26l0.62,-0.61l0.01,-0.5l-1.05,-1.21l0.15,-1.25l0.6,-1.07l0.04,-4.5l0.99,-2.39l-1.06,-2.3l-0.29,-1.52l-1.7,-0.89l0.14,-1.28l3.71,-4.76l0.84,-1.7l1.36,-0.46l0.8,-1.28l1.71,-0.45l1.19,-2.36l-0.1,-0.48l-0.75,-0.34l-2.14,0.93l-0.19,-0.69l-0.45,-0.3l-2.59,0.04l-2.16,-1.31l1.48,-2.39l1.78,-0.93l0.36,-0.49l-0.05,-1.04l-0.88,-1.04l0.17,-0.39l3.37,-2.8l0.33,-0.72l-0.5,-2.65l-1.6,-2.0l1.29,-0.9l-0.29,-2.04l-0.67,-1.77l0.45,-1.86l-0.92,-0.71l0.14,-0.69l-0.41,-0.76l-1.22,-0.85l1.13,-1.1l0.45,-2.51l1.0,-1.27l2.52,-0.58l0.7,-0.58l0.49,-1.38l0.0,-1.97l0.53,-0.34l1.61,-0.16l1.72,-3.28l2.15,-0.78l0.23,-0.36l-0.34,-1.09l-1.84,-1.47l-0.22,-1.32l-0.91,-0.24l-0.46,-1.07l-0.79,-0.01l-0.36,-1.59l2.55,-2.32l-0.08,-1.17l0.67,-2.12l1.1,-1.47l-0.09,-0.62l-0.52,-0.3l1.17,-0.67l1.93,0.21l0.99,1.37l0.94,0.51l3.82,0.06l0.7,-0.84l-0.2,-2.94l1.1,-2.01l0.66,-0.49l1.6,-0.35l0.53,-0.52l0.29,-3.48l0.9,-2.06l1.51,-1.08l0.48,-1.2l-0.25,-0.8l-1.04,-0.7l-1.01,-2.43l-0.11,-1.01l1.12,0.56l0.9,1.36l2.14,0.86l1.88,-0.79l1.03,0.35l1.4,-0.06l2.99,1.32l2.05,-0.07l1.73,1.25l1.07,2.89l1.36,0.62l0.25,0.68l1.79,1.04l1.99,-0.29l0.95,-1.2l1.14,-0.51l2.17,-0.33l0.97,0.36l0.92,1.25l3.18,0.53l1.67,1.34l4.21,0.15l0.63,0.59l0.8,0.23l0.8,-0.43l0.38,-1.24l0.6,-0.33l2.94,-1.04l1.61,0.26l2.07,2.63l1.96,0.76l0.99,1.71l-0.24,3.47l-0.86,1.68l0.37,2.75l-1.36,0.99l-1.06,2.07l0.34,1.38l2.14,0.09l0.69,3.21l-0.02,1.49l-0.09,0.45l-1.23,1.17l-0.02,0.58l2.7,1.38l1.76,1.5l0.97,1.3l2.69,0.3l2.3,-0.25l1.3,-0.53l0.65,2.12l1.01,1.62l0.57,0.07l0.54,-0.54l0.85,0.72l2.42,-0.54l2.78,1.95l3.43,4.07l2.24,4.82l0.1,0.39l-1.3,0.98l0.21,1.46l0.85,0.41l1.52,-0.16l0.8,-1.46l0.32,0.3l0.19,1.39l0.64,0.71l2.5,-0.43l-0.56,1.11l-0.13,1.27l1.26,3.31l0.2,3.88l0.99,1.96l0.73,0.43l0.68,-0.01l3.28,-1.92l2.72,1.08l4.53,-0.1l2.71,0.61l0.54,-0.36l0.41,-0.86l2.25,0.87l2.32,-1.68l1.53,-0.34l1.16,-1.21l2.62,-1.27l2.95,-1.92l2.16,-0.31l1.52,-1.07l1.35,-0.19l1.09,0.31l1.49,1.22l2.48,0.09l0.83,-1.36l1.55,-0.1l0.49,-0.61l-0.17,-1.85l0.74,-0.51l0.17,-0.52l-1.52,-1.91l1.52,-2.75l-0.28,-1.1l0.48,-1.33l0.06,-1.57l1.95,-3.0l1.51,0.29l0.18,2.62l2.61,2.97l-0.52,1.6l0.12,0.91l0.46,0.47l1.33,0.37l0.44,0.03l0.56,-0.48l0.51,-1.52l3.2,-1.82l0.51,-1.01l0.02,-1.54l0.74,0.0l1.56,0.66l0.07,1.24l0.76,0.46l1.63,-0.08l1.47,-0.67l0.98,-0.1l0.56,-0.58l0.14,-0.85l-0.35,-1.36l1.58,-2.2l-0.21,-0.73l-1.06,-0.17l-0.66,-1.2l0.16,-1.29l2.94,-3.66l0.7,-0.12l0.81,0.62l0.73,0.08l1.77,-0.8l2.21,-1.8l1.98,-1.03l0.06,-1.12l-0.63,-0.87l-0.79,-0.25l-1.37,-2.23l0.86,-0.26l3.12,1.32l0.82,-0.81l-0.07,-0.7l0.43,-0.9l-0.25,-0.94l0.63,1.68l0.95,0.15l0.99,-1.63l1.13,-0.74l0.49,-1.38l2.55,3.51l0.75,2.17l0.48,0.59l0.48,0.05l0.47,-0.47l-0.04,-1.94l0.98,0.08l1.57,4.35l1.49,1.81l3.28,0.09l2.2,-0.35l2.93,1.04l5.54,-1.07l1.09,-1.13l0.62,-1.56l0.98,-0.06l1.31,-1.51l0.42,-1.9l-0.15,-0.67l1.43,-0.02l1.38,-1.1l2.15,-1.02l0.56,0.31l0.53,-0.11l0.65,-0.92l-0.09,-1.22l0.85,-0.03l-0.54,1.48l0.68,1.11l0.49,0.03l-0.47,1.04l-2.23,3.0l-1.15,0.57l-2.77,4.48l-2.82,2.96l-0.73,1.38l-1.6,1.1l-1.15,1.5l-1.5,0.86l-1.27,0.17l-0.2,0.99l0.68,0.39l-3.6,3.35l-1.01,2.48l-0.96,0.74l-9.31,4.2l-5.02,3.04l-1.05,0.92l-0.79,1.44l-2.3,1.96l-0.27,-0.36l-0.72,0.17l0.02,1.59l-0.64,0.52l-0.41,1.5l-2.25,2.68l-1.09,0.75l-0.71,-0.8l-1.21,0.21l0.09,1.05l1.36,0.64l-1.18,0.69l-0.95,-0.02l-0.33,0.64l0.63,0.87l-4.38,1.88l-5.68,3.7l-0.6,-0.27l-1.36,0.9l-3.72,1.43l-7.5,4.53l-1.63,2.1l-1.66,1.0l-2.23,2.57l-1.51,3.41l0.08,1.5l0.46,0.72l1.58,0.79l1.39,-0.02l-0.85,4.85l-0.72,1.56l-0.34,-0.21l-0.64,0.36l0.4,1.35l-1.04,0.36l-1.68,1.64l-3.44,1.81l-1.69,0.26l-1.26,1.15l-1.04,0.04l-0.51,0.6l-2.47,0.43l-3.09,1.68l-1.37,0.3l-1.56,-0.75l-2.35,-0.2l-0.15,-0.58l-0.72,-0.39l-0.52,-0.02l-0.33,0.68l-1.09,-0.27l-1.67,0.39l-0.14,-0.58l-0.74,-0.5l-1.17,0.41l-1.79,0.07l-1.92,1.15l-0.53,0.79l0.21,1.29l-0.76,0.97l-2.28,6.46l-0.11,1.95l-3.74,2.84l-0.92,1.13l-0.06,0.8l0.57,1.13l-2.57,-2.06l0.0,-4.01l-0.39,-1.55l-0.36,-0.29l-0.5,0.52l-0.41,-0.01l-0.14,0.47l0.47,1.18l-0.03,2.41l-1.75,4.39l-0.16,-2.66l-0.88,-1.48l-0.76,-0.46l-2.81,-0.47l-0.67,0.59l-1.07,0.05l-1.2,0.52l-0.67,-0.32l-3.79,2.32l-1.37,0.39l-3.56,3.09l-2.52,5.95l0.09,0.92l-2.32,3.04l-1.15,2.69l-0.28,3.27l-0.91,3.59l0.05,2.53l1.66,9.47l0.36,0.68l1.24,1.01l0.53,1.67l-0.88,0.68l-0.09,0.67l0.52,0.29l0.92,-0.16l-0.53,2.8l-0.02,3.74l-1.28,2.53l-1.34,0.32l-1.03,0.97l-0.28,0.8l0.6,0.58l0.7,-0.18l1.35,-1.13l-0.31,1.02l0.08,1.41l0.74,3.85l3.06,7.11l-0.1,1.25l-0.75,1.85l0.88,2.52l-2.65,-3.71l-0.68,0.29l-0.0,1.53l-1.2,-0.83l-0.32,1.26l-1.21,1.55l0.16,0.9l1.44,1.97l-1.28,-0.67l-0.81,0.14l-0.23,0.82l0.76,0.9l-1.54,0.67l-0.98,0.96l-0.37,0.8l-0.0,1.1l-4.14,2.13l-1.51,-0.11l-0.43,0.24l-0.2,1.13l0.99,1.03l-1.6,-0.04l-0.56,-0.31l-0.13,-1.26l-0.58,-0.5l-2.98,0.35l-1.45,-1.63l-2.26,-0.23l-1.14,0.77l-0.55,3.0l-1.21,0.66l-1.92,2.04l-0.89,-0.53l-1.16,0.1l-2.64,3.15l-2.32,0.28l-1.86,-0.57l-0.43,-0.86l-1.41,-0.39l-1.2,0.29l-0.34,1.11l-0.43,0.35l-0.49,-0.96l-0.74,-0.38l-4.19,0.72l-0.84,1.11l-1.18,0.3l-0.67,0.81l-1.1,4.55l-0.94,2.36l-1.21,0.96l-0.58,-0.31l-0.63,0.22l-0.3,1.75l-1.22,1.28l-1.26,0.29l-1.25,-0.27l-2.28,-1.65l-1.18,-1.67l0.49,-1.04l-0.22,-1.64l1.12,0.41l1.29,-0.57l0.58,-0.55l0.25,-1.16l2.34,1.53l1.22,-0.06l0.18,-0.61l-0.23,-0.64l-0.55,-0.73l-0.93,-0.53l1.23,-1.78l0.45,-1.4l1.33,-1.04l0.36,-1.9l1.04,-1.54l0.39,-2.6l-0.23,-1.04l-0.44,-0.45l-1.33,0.66l-1.64,-1.13l-1.52,-0.39l-0.68,0.28l-0.85,-1.4l0.29,-1.11l0.25,-5.76l-2.41,-0.54l-1.07,0.43l-1.06,-0.1l-1.4,-0.36l-1.79,-1.79l-1.64,0.09l-0.25,-0.55l1.04,0.02l0.45,-0.71l-0.69,-1.44l0.46,-1.37l-0.59,-2.04l-2.02,-1.06l-0.89,0.52l-1.23,-0.07l-0.99,0.93l-0.07,-0.92l0.96,-1.22l-0.02,-1.23l-0.48,-0.53l-1.02,0.4l-0.82,1.05l-0.97,-0.53l-1.68,-0.25l-0.5,0.21l-0.53,0.99l0.57,1.25l-1.57,1.32l-1.31,0.57l-0.59,1.23l-0.75,-0.55l-1.23,0.19l-0.52,0.4l-0.14,0.76l-1.03,0.09l-1.67,1.05l-1.15,0.02l-0.52,-2.73l-1.41,-1.75l-2.98,-0.12l-1.04,-0.57l-1.02,-0.01l-0.97,-0.78l-0.94,0.37l-0.52,-0.92l-0.7,0.21l-0.38,1.14l-0.84,0.61l0.15,0.54l0.66,0.48l0.16,1.57l-1.79,-0.15l-0.65,0.76l-1.27,-1.08l-0.39,0.07l-0.3,0.59l-0.17,-1.78l1.47,-2.02l0.17,-0.7l-2.33,-3.22l0.13,-1.79l-2.1,-2.47l1.13,-0.73l1.21,0.58l0.81,3.14l2.72,1.07l0.99,0.93l2.32,-0.02l1.96,-0.48l1.11,0.29l1.12,2.0l0.1,1.09l2.11,0.75l0.59,-0.3l0.14,-0.59l-0.49,-1.0l0.03,-1.08l-0.98,-0.86l-0.78,-1.6l0.98,-1.6l-0.1,-0.47l-0.56,-0.36l0.9,-0.86l2.24,-0.25l0.65,-0.42l0.16,-0.69l-0.4,-1.48l0.3,-1.18l-0.34,-0.55l-1.16,-0.23l-0.64,-0.92l-1.06,-0.27l-0.62,0.36l-0.25,0.64l0.8,2.01l-1.15,-1.29l-1.73,-0.59l-0.11,-0.7l-0.49,-0.42l-2.21,0.23l-1.61,-0.55l-0.95,0.55l-0.84,1.16l-0.27,1.81l-4.51,-0.75l0.44,-1.18l-1.73,-1.24l-0.23,-1.08l0.27,-0.48l1.22,-0.27l0.76,-1.39l-0.09,-0.76l-0.92,-0.84l-1.56,-0.07l-0.81,0.33l-1.0,-1.83l-1.09,-0.58l-0.47,-1.96l0.82,-2.71l-0.07,-1.53l0.79,-0.32l0.34,-0.53l0.68,-4.44l-0.77,-0.97l-2.24,-0.88ZM433.84,620.88l0.17,-0.38l-0.47,-0.55l-1.43,0.9l-0.23,0.47l0.64,0.66l2.25,0.65l0.99,-0.27l0.73,-1.0l-0.06,-0.69l-0.49,-0.46l-0.91,0.66l-1.19,0.01ZM368.9,723.15l3.01,0.37l0.36,0.27l-3.63,-0.13l0.26,-0.51ZM392.61,649.39l1.24,0.72l1.36,1.23l-0.92,0.46l-0.54,-0.32l-1.33,-1.56l0.2,-0.53Z", "name": "Andhra Pradesh"}, "IN-TR": {"path": "M717.67,412.64l-0.65,-0.93l-0.85,-0.54l-0.68,0.03l-0.65,0.63l-0.23,2.44l0.57,2.74l-0.06,0.54l-0.45,-0.12l-0.61,-0.81l-0.37,-1.24l-1.03,-5.9l0.59,-1.13l-0.93,-0.66l-0.88,-2.95l-1.06,-0.99l-1.73,-4.15l0.05,-0.4l0.82,-0.19l0.29,-0.86l-0.43,-0.72l-0.77,-0.33l-0.07,-0.39l0.16,-0.36l1.69,-0.62l0.97,-2.38l-0.28,-2.65l1.62,-2.42l1.36,0.06l0.65,-0.3l0.79,-3.37l4.46,0.5l2.13,-0.37l1.01,-1.0l0.52,-2.43l0.74,1.43l1.5,0.46l1.08,-0.84l-0.14,-2.07l1.8,0.37l0.24,1.14l1.12,1.01l0.62,0.15l0.7,-0.29l1.07,-3.6l-0.23,-2.31l1.73,0.78l0.54,-0.4l-0.61,-1.47l3.03,0.1l1.08,-0.51l0.67,-0.99l0.07,-3.38l0.92,-0.64l2.0,1.31l0.19,1.75l0.72,1.63l-0.16,1.4l-1.03,2.69l0.62,0.74l1.84,0.3l0.73,1.3l0.1,2.73l-0.33,2.19l0.42,1.35l-0.55,1.87l0.21,2.41l-0.73,0.03l-0.79,1.0l-0.32,1.9l0.2,1.67l-0.69,-0.15l-0.51,0.3l-0.6,1.69l-0.45,-1.43l-0.61,-0.91l-0.46,-0.16l-1.47,0.55l-1.5,1.91l-0.91,0.48l-2.28,-2.56l-1.1,0.12l-0.24,2.55l0.81,3.79l-0.04,1.12l-0.97,1.4l-2.69,1.48l-1.81,2.75l-0.6,1.79l1.57,5.86l-1.05,0.63l-0.6,1.26l-0.91,0.89l-1.59,0.51l-1.08,-0.01l-0.53,0.84l-0.37,-0.53l-1.18,-0.4l-0.36,-0.51l-0.1,-1.09l-0.43,-0.32l-1.19,-4.38l-0.54,-0.55l-0.07,-0.63l-0.43,-0.22Z", "name": "Tripura"}, "IN-AR": {"path": "M727.36,274.74l-0.62,-1.27l-2.25,-0.75l-1.77,-2.04l-0.63,-2.3l0.17,-1.09l1.38,-1.87l0.22,-1.28l3.95,-0.13l2.71,1.1l3.56,0.14l1.39,-0.61l1.72,-1.71l1.01,-0.5l3.83,-0.02l0.37,-0.53l-0.09,-1.07l1.06,2.04l0.62,0.37l0.5,-0.13l0.54,-0.87l0.59,0.49l0.55,-0.04l0.85,-1.64l0.39,0.72l0.65,0.34l3.1,-1.35l1.28,-1.18l1.97,-0.69l1.9,-1.8l0.51,-2.58l-0.5,-0.64l-1.47,-0.43l1.15,-1.82l2.62,-1.84l1.03,0.45l1.55,-0.52l1.69,-1.95l1.76,-0.71l1.24,-1.28l2.81,-1.91l1.46,-2.07l0.6,-2.32l1.84,-1.44l6.87,-4.3l3.12,-0.23l2.29,0.22l1.58,-0.99l0.71,0.3l0.81,-0.14l2.24,-1.87l3.52,-1.53l0.33,-1.17l1.78,-0.1l1.59,-0.97l3.25,-1.09l1.23,-1.08l2.5,-0.23l2.96,-3.02l0.01,-0.58l-2.19,-2.29l0.36,-1.16l1.48,-0.19l1.11,-1.53l0.6,-0.3l2.38,-0.12l1.39,-0.42l2.54,-3.14l0.72,-0.07l2.06,1.06l1.8,2.16l-0.17,1.17l0.66,0.67l2.54,-0.06l4.07,1.52l0.43,-0.15l-0.23,-0.8l1.58,0.39l2.15,1.1l2.51,0.45l0.72,1.13l1.93,0.3l0.45,-0.44l-0.2,-1.79l0.72,-0.57l1.81,-0.09l1.12,0.28l0.48,-0.28l0.36,-1.24l0.67,1.6l2.25,-0.39l0.22,-1.1l-0.31,-1.27l1.15,-0.39l0.21,-0.82l0.66,-0.09l1.65,0.69l2.17,0.34l0.42,-0.22l0.93,-1.86l-0.03,-2.09l1.15,-0.32l2.24,0.9l2.73,-1.16l5.47,-0.31l0.94,2.55l1.97,1.67l1.4,-0.02l2.08,-1.11l0.36,0.57l-1.13,2.01l-3.49,1.07l-0.63,0.41l-0.65,1.26l0.64,2.74l0.61,0.25l2.59,-1.66l1.71,-0.53l0.58,1.89l2.46,1.23l0.08,0.91l1.18,0.7l0.56,2.05l2.02,2.58l0.6,2.92l-2.74,2.04l-2.04,1.1l-0.15,0.56l0.83,1.34l-1.06,1.29l0.04,0.55l1.03,0.95l0.99,2.16l0.53,0.2l0.76,-0.58l0.45,-3.4l0.84,-1.52l1.46,-0.72l2.38,0.61l2.09,2.27l2.2,1.38l1.28,1.55l0.59,2.63l2.37,0.85l3.42,-1.46l0.92,0.23l2.0,1.66l0.8,0.21l0.66,1.15l2.77,1.85l0.1,0.6l-0.87,1.91l-0.18,1.48l0.49,0.95l1.42,1.47l0.17,0.72l-0.79,1.9l0.03,1.18l-0.7,0.34l-0.46,-0.84l-0.74,-0.19l-1.48,0.51l-2.77,2.73l-2.06,1.44l-0.27,0.83l-2.08,0.81l-1.02,1.26l-2.24,1.7l-0.77,1.39l-0.0,0.98l0.8,2.32l-0.35,1.45l0.18,0.76l6.72,8.57l0.2,1.05l0.81,0.73l-0.34,0.96l-1.06,-0.38l-1.09,0.3l-0.98,-0.87l-4.19,-1.87l-0.52,-0.42l0.5,-1.38l-0.22,-0.64l-1.04,-0.87l-1.45,-1.95l-2.32,-1.06l-1.15,0.12l-0.8,0.69l-2.05,-0.49l-1.22,1.56l-0.94,0.38l-3.16,-0.19l-8.17,1.35l-2.27,0.98l-1.97,1.39l-2.32,3.7l-1.42,1.63l-3.49,1.13l-2.36,3.2l-2.21,0.47l-1.16,1.96l-1.65,0.03l-1.5,0.46l-2.38,3.54l-4.38,1.68l-0.65,-2.41l0.28,-2.02l-1.15,-1.62l0.08,-0.57l0.86,-1.12l0.18,-1.79l-0.4,-1.17l-1.3,-0.89l0.03,-0.74l2.24,-0.17l3.03,-2.24l2.08,-0.89l1.32,-1.31l0.89,-2.35l1.07,-0.6l3.2,1.39l4.93,-1.84l2.11,-0.03l1.11,0.35l0.89,-1.03l1.04,-0.45l0.4,-0.9l1.19,-0.94l0.02,-1.73l-1.11,-1.43l-1.54,0.04l-1.04,1.08l-0.29,-1.15l0.49,-1.32l-0.31,-2.08l-0.56,-0.76l-2.03,-1.4l-0.74,-3.0l4.9,-6.49l1.13,-2.28l-0.47,-0.76l-7.92,0.07l-1.46,0.45l-3.93,2.51l-4.03,1.0l-1.16,-0.06l-2.12,-0.75l-1.82,1.0l-9.17,3.2l-4.61,2.27l-4.21,1.1l-4.11,2.12l-1.45,0.25l-0.95,-0.65l-2.82,0.73l-1.84,-0.68l-0.97,-1.0l-0.65,-0.12l-0.98,0.82l-0.31,0.87l1.19,1.68l-0.16,0.82l-7.98,6.54l-4.22,4.3l-0.72,1.32l0.11,2.07l-3.97,2.93l-1.86,0.72l-3.28,0.5l-1.4,0.62l-0.37,0.04l-1.8,-1.22l-0.99,-0.14l-10.87,1.18l-1.55,-0.38l-0.87,-1.17l-3.78,-1.66l-3.69,-0.53l-0.9,0.25l-2.12,1.63l-8.52,2.44l-1.58,0.13l-1.99,0.63l-3.48,-0.28l-1.08,-3.29l-1.55,-1.52l-0.32,-0.92l0.42,-2.0l0.73,-0.89l0.31,-1.23l1.41,-1.35l0.22,-0.83l-2.85,-5.27l-1.16,-0.97l-1.6,0.88l-1.97,0.08l-3.01,0.86Z", "name": "Arunachal Pradesh"}, "IN-KA": {"path": "M183.76,654.66l1.17,-1.76l1.58,-1.17l0.11,0.99l0.66,0.4l1.93,-0.14l1.67,-1.1l1.39,-2.47l-0.57,-1.14l2.3,-3.92l0.01,-1.78l-1.37,-0.64l0.65,-0.48l1.42,-0.09l0.56,-0.68l0.21,-3.0l-0.24,-1.26l-0.69,-0.68l-2.69,-1.26l-1.19,0.3l-0.47,-2.4l1.24,-0.28l0.35,-0.84l-1.1,-0.79l-0.36,-1.12l-1.04,-0.15l-0.39,-1.08l-0.95,0.09l0.31,-0.89l0.87,0.52l0.75,-0.34l0.34,-0.8l0.72,0.63l0.63,-0.14l1.85,-1.63l0.52,-1.51l2.28,0.61l0.64,1.97l0.55,0.41l0.87,-0.23l1.48,-1.21l1.3,-0.31l0.44,-0.89l-0.63,-0.9l0.68,-0.64l0.32,-1.0l0.9,-0.17l0.61,-0.68l1.67,-0.79l2.05,0.17l0.41,-0.88l-0.66,-2.45l2.16,-0.78l0.95,-0.97l0.35,-1.04l0.96,0.29l1.32,-0.24l0.43,0.85l1.57,1.28l1.74,0.56l2.56,-1.13l0.32,-1.76l2.11,-0.15l1.37,-0.65l1.59,-0.01l0.78,0.64l0.73,0.05l1.58,-0.66l0.84,-0.95l1.47,1.12l1.13,-0.06l0.56,-1.31l-0.58,-1.4l0.66,-0.66l0.08,-0.53l-1.28,-2.2l0.49,-2.65l-0.42,-1.11l-0.82,-0.58l-0.88,-2.78l0.83,-0.73l1.1,-1.81l0.67,0.2l0.76,1.43l1.88,0.29l1.02,1.25l0.74,0.0l1.18,-1.12l0.68,0.28l0.52,-0.31l0.52,1.7l1.37,1.03l2.4,-0.79l1.12,0.08l2.15,-1.02l1.3,0.35l1.64,-0.57l1.62,0.97l2.17,0.25l0.88,-0.29l0.98,-1.09l-0.17,-0.54l-0.94,-0.76l-0.84,-1.71l0.71,-1.31l-0.11,-1.65l-0.73,-1.08l2.27,-0.76l0.96,-1.31l1.3,-0.71l0.19,-1.02l0.84,-0.4l0.57,-0.91l0.9,0.33l1.1,-0.13l2.11,1.92l0.94,-0.21l0.83,-2.54l1.63,-1.28l-0.43,-2.03l2.59,0.52l1.11,-0.85l0.65,-1.76l0.44,-6.2l1.3,-0.6l1.67,0.06l2.75,-0.68l0.94,-1.82l3.43,-2.24l0.12,-2.6l0.97,-1.48l0.81,-0.16l0.82,0.6l0.26,2.57l2.49,1.24l0.14,0.8l0.46,0.46l1.07,-0.06l1.25,-0.96l1.87,0.57l-0.46,1.64l0.98,3.56l-0.97,0.35l-0.34,0.81l0.3,0.72l1.16,1.08l0.66,2.67l-1.93,2.03l-1.65,1.2l-0.31,0.97l0.86,1.02l0.13,0.63l-2.0,1.18l-1.66,3.11l0.54,0.74l2.14,1.1l2.63,0.05l0.62,0.92l2.4,-0.87l-0.85,1.7l-1.86,0.54l-0.68,1.22l-1.41,0.5l-0.93,1.81l-3.8,4.92l-0.3,1.05l0.18,0.89l1.75,0.99l0.21,1.34l1.01,2.06l-0.98,2.22l-0.04,4.51l-0.57,0.94l-0.19,1.47l0.2,0.87l0.84,0.59l-0.7,0.62l-0.29,0.74l0.33,0.43l0.72,-0.12l-0.46,1.4l-1.11,0.6l-0.57,1.31l-3.6,2.5l0.04,0.43l1.33,1.5l3.15,0.82l2.99,0.08l1.46,0.98l-0.05,0.65l-1.49,1.1l-0.35,0.85l-0.3,2.77l0.14,5.08l-0.92,1.2l-4.11,-0.1l-2.41,-0.6l-2.16,0.31l-2.83,1.49l-1.33,1.59l-0.27,3.92l0.26,0.61l0.54,0.3l0.92,1.92l-1.1,-0.21l-1.05,0.68l-0.44,1.23l0.31,2.89l-0.61,-0.36l-0.47,0.14l-0.26,0.54l1.49,3.11l0.45,2.23l2.35,1.26l0.79,5.01l-1.29,2.89l-1.27,1.08l-0.98,-0.83l-1.9,0.28l-2.26,-0.55l-2.7,-1.55l-0.83,0.05l-0.64,1.13l-0.05,1.31l-0.76,1.17l0.34,0.49l2.58,1.0l0.24,0.53l-0.67,3.87l-0.92,0.48l-0.24,0.51l0.09,1.46l-0.65,1.58l-0.11,1.87l0.53,1.82l1.15,0.65l1.13,1.95l2.75,-0.11l0.28,0.38l-0.58,1.33l-0.75,-0.03l-0.6,0.43l-0.33,1.18l0.67,1.5l1.34,0.7l-0.5,1.06l0.38,0.63l5.22,0.79l0.57,-0.66l0.04,-1.35l1.22,-1.48l1.49,0.54l2.05,-0.25l0.35,0.98l1.75,0.6l0.81,1.07l0.71,0.37l0.61,-0.09l0.42,-0.71l-0.87,-2.14l0.63,0.06l0.57,0.9l1.2,0.25l-0.29,1.29l0.4,1.46l-2.57,0.43l-1.69,1.64l0.17,0.52l0.77,0.22l-0.9,1.3l-0.01,0.61l0.89,1.82l0.88,0.68l-0.09,0.84l0.46,1.04l-1.36,-0.46l-0.12,-1.15l-1.33,-2.11l-1.58,-0.4l-2.02,0.49l-1.93,0.06l-0.86,-0.87l-2.53,-0.91l-0.68,-2.95l-0.45,-0.49l-1.65,-0.55l-1.55,0.95l-0.26,0.99l2.22,2.42l-0.16,1.73l2.27,3.02l-1.7,2.74l0.13,1.43l0.5,1.1l0.7,0.06l0.45,-0.65l1.18,0.94l0.5,-0.15l0.37,-0.63l1.31,0.24l0.78,-0.26l0.35,-1.0l-0.25,-1.5l-0.54,-0.55l0.64,-0.79l0.65,0.55l0.97,-0.55l0.77,0.74l1.09,0.02l1.04,0.57l2.88,0.1l1.0,1.31l0.76,3.18l1.76,0.02l1.87,-1.1l1.4,-0.17l0.29,-1.09l0.84,-0.13l0.54,0.58l0.75,-0.06l0.7,-1.41l1.23,-0.5l1.78,-1.55l0.13,-0.72l-0.57,-0.89l0.16,-0.39l1.51,0.14l1.31,0.55l0.69,-0.36l0.76,-1.03l-0.06,0.91l-0.96,1.22l0.45,1.84l0.61,0.04l1.08,-1.14l1.08,0.1l0.98,-0.51l1.13,0.68l0.47,1.62l-0.46,1.45l0.68,1.33l-0.98,-0.09l-0.43,0.33l-0.05,0.66l0.46,0.93l0.44,0.26l1.43,-0.19l1.73,1.76l1.63,0.44l1.35,0.11l0.84,-0.42l0.8,0.37l1.06,-0.13l-0.34,1.19l-0.06,3.99l-0.34,1.2l1.1,1.98l0.69,0.23l0.59,-0.29l1.3,0.36l1.75,1.15l1.21,-0.5l-0.05,2.1l-0.32,1.1l-0.91,1.18l-0.34,1.83l-1.24,0.9l-0.54,1.55l-1.32,2.03l0.1,0.59l1.12,0.65l0.48,0.78l-2.19,-1.45l-1.12,-0.16l-0.49,0.39l-0.35,1.35l-1.07,0.42l-1.03,-0.36l-0.62,0.37l0.11,2.05l-0.34,0.59l-2.6,-0.85l-2.48,-1.78l-0.99,-0.1l-1.2,1.37l-2.15,-1.97l-2.37,-0.1l-1.63,0.75l-0.34,1.39l-1.03,1.8l0.24,1.06l-2.02,1.05l-1.7,-0.11l-1.04,0.49l-1.29,3.66l0.38,1.14l-0.1,1.1l1.28,0.34l-0.45,2.16l-2.18,2.84l-1.81,1.11l-0.33,1.06l0.88,1.69l6.59,0.29l1.01,0.65l0.87,1.65l-3.17,4.34l-4.19,0.64l-1.02,0.5l-1.01,1.52l-0.85,2.18l-0.54,0.46l-2.0,0.25l-2.48,-1.04l-1.24,0.45l-2.9,0.22l-0.46,0.31l-0.39,1.08l-1.99,-1.91l-1.21,-0.41l-2.06,0.44l-0.92,0.51l-1.97,3.01l-0.52,2.22l-2.05,-0.47l-5.1,0.34l-0.7,-0.25l-0.01,-1.16l-0.76,-0.99l-1.01,-0.34l-1.28,0.14l-1.47,1.17l-0.23,-1.51l-0.53,-0.66l-2.29,-0.05l-1.56,-1.76l-1.37,-0.01l-1.51,-1.78l-0.98,-0.16l-1.05,0.26l-0.38,-0.58l0.08,-2.01l-0.53,-0.63l-0.84,-0.04l-2.77,1.07l-2.93,-0.54l-1.33,-0.58l-1.09,-1.2l-0.6,-1.99l-1.88,-0.3l-1.33,-0.81l-0.81,0.09l-0.76,-1.06l-2.07,-1.0l-3.42,-3.85l-1.12,-0.12l-0.54,-1.89l-0.87,-1.28l0.04,-0.64l0.75,-0.81l0.05,-0.7l-0.69,-0.48l-1.29,0.25l-1.68,-1.95l0.67,-1.64l-0.28,-0.5l-1.53,-0.38l-1.26,0.46l-0.83,-1.04l-1.18,0.1l-0.21,-1.49l-1.02,-0.68l-0.95,-0.16l-0.98,0.44l-0.22,-0.85l-1.23,-0.36l-0.55,-1.43l-0.97,-0.23l-1.59,0.31l-0.32,-0.91l0.99,-0.81l1.53,-0.55l0.39,-0.51l-0.4,-0.61l-3.41,0.56l-1.36,-5.58l0.26,-1.33l-0.35,-0.37l-0.6,-2.16l-1.04,-5.01l-0.74,-1.48l0.06,-0.6l0.43,-0.2l-0.18,-1.85l-0.72,-1.98l-0.17,-2.91l1.43,-0.43l0.51,-0.72l-0.79,-0.24l-0.74,-1.69l-0.59,-0.04l-0.59,0.82l-1.04,-4.59l-0.98,-2.21l-2.65,-3.83l0.0,-1.22l-0.63,-1.13l-0.24,-2.4l-1.15,-1.8l2.13,0.13l0.18,-0.69l-2.5,-1.07l-0.26,-0.37l-0.08,-1.26l-1.06,-3.28l0.48,0.02l0.27,-0.5l0.73,-0.16l-0.05,-0.45l-1.48,-1.63l-0.14,-0.62l-0.98,-0.84l-0.71,0.54l-0.06,1.03l-0.4,0.04l-0.22,-1.61l1.0,-0.33l0.35,-0.61l-0.72,-0.56l-1.25,0.35l-0.23,-0.18l0.24,-0.61l-0.84,-2.65l-1.14,-0.68l-0.83,0.38l-0.42,-0.63l-0.7,-0.13l-1.41,-0.99l0.54,-0.99l1.17,0.17l0.75,-0.99l1.08,0.02l0.47,-0.37l-0.08,-0.75l-1.37,-0.74l-2.36,1.62l-0.46,-0.72l1.61,-1.08l1.69,-0.19l1.18,-0.91l0.82,-2.53l-0.14,-2.48l0.94,-2.43l-0.25,-0.71l-1.34,-1.11l1.61,-0.57l0.34,-0.87l-0.21,-1.62l-1.2,-1.53l-0.04,-1.34l-0.58,-0.86l0.59,-1.77l-0.66,-3.34l-0.5,-0.59l-1.53,-0.72l-1.74,0.51l-0.43,-0.07l-0.12,-0.46Z", "name": "Karnataka"}, "IN-PB": {"path": "M176.07,176.63l0.49,-0.66l0.91,-0.18l0.37,-0.76l0.93,-0.37l1.98,-2.76l1.11,-0.3l0.6,-0.54l0.35,-2.73l1.22,-1.08l1.65,-0.66l0.97,-1.89l2.26,-2.34l-0.1,-1.02l1.19,-0.74l0.5,-1.77l2.56,-0.03l1.17,-1.73l2.45,-0.6l1.36,-1.41l0.49,-1.31l2.35,-1.33l0.12,-0.61l-1.4,-1.16l-2.43,0.02l-0.78,-1.72l0.77,-4.21l2.63,-5.48l-0.15,-0.82l-0.89,-1.3l-0.91,-3.26l-1.88,-3.18l1.28,-1.9l0.42,-1.8l3.6,-2.55l0.85,-1.45l1.71,0.33l1.05,-0.31l1.2,-2.56l1.09,0.37l0.83,-0.6l2.02,-0.13l1.02,-1.1l1.11,-0.02l0.36,-0.49l-0.14,-0.56l1.94,0.66l1.17,-0.5l1.03,0.2l0.93,-1.49l3.2,-0.92l0.63,-2.0l1.01,-1.12l0.35,-0.94l-0.27,-0.94l-1.12,-1.22l1.94,0.13l1.25,-0.69l0.47,1.04l1.62,0.83l0.46,-0.14l2.1,-2.45l1.07,-0.64l2.7,-0.39l1.07,-0.89l0.4,-1.14l1.66,-0.59l1.42,-1.04l1.5,2.65l-3.97,2.7l-1.59,1.66l-3.57,1.31l-0.33,1.08l0.28,1.2l0.7,0.45l0.63,-0.16l-0.52,1.03l-1.81,1.94l-0.05,0.85l0.87,0.49l3.03,0.5l5.38,2.71l2.54,4.11l-1.07,0.21l-0.18,1.25l4.53,8.24l2.34,7.11l1.09,1.36l0.75,0.46l1.42,-0.32l1.34,0.16l0.65,-1.28l0.84,-0.38l-0.02,-1.78l0.92,-0.36l2.27,4.24l0.98,-0.15l0.78,0.72l0.73,-0.2l0.39,0.92l0.53,0.22l0.69,-0.62l0.06,1.28l0.34,0.31l0.96,-0.04l-0.73,1.33l-0.03,1.58l0.68,0.74l-0.51,1.25l0.31,1.59l1.02,1.2l3.79,3.11l1.0,1.7l0.95,0.53l-0.41,1.04l-2.24,-0.16l-1.46,0.74l-0.24,0.82l0.32,0.8l2.49,2.48l2.18,-0.11l0.28,1.06l0.84,0.47l0.29,0.86l-0.26,1.77l0.52,0.95l-0.43,1.01l0.34,3.05l-0.33,0.84l-1.25,-2.16l-2.78,-0.23l-1.08,0.49l-0.44,1.63l0.52,0.73l-2.37,1.72l-3.57,1.91l-0.22,0.62l0.44,0.79l0.82,-0.04l0.76,-0.82l0.42,0.84l0.87,0.45l-0.38,1.5l-2.73,1.89l-1.97,-0.49l-1.02,-2.47l-0.61,-0.47l-0.6,0.06l-0.49,0.47l0.18,1.05l-0.33,0.74l-0.93,-0.81l-0.57,0.13l-0.15,0.98l-0.26,0.08l-1.13,-0.23l-1.27,-0.87l-0.79,0.13l-0.49,1.0l0.9,0.83l-0.46,0.56l0.17,0.85l-0.56,0.83l-0.83,2.76l0.55,1.64l0.95,0.71l-2.16,1.34l-1.95,0.72l-1.28,1.49l-1.16,0.03l-1.39,0.58l-1.91,-0.35l-1.01,-1.8l-1.91,-0.93l-2.34,0.7l-0.72,1.35l-1.13,-0.2l-1.76,0.35l-4.86,-1.45l-3.42,4.21l-0.13,0.69l-0.95,0.4l-0.7,1.35l0.37,1.21l-1.34,0.48l-0.53,-1.63l-0.78,-0.89l0.03,-0.68l-0.47,-0.53l0.89,-0.62l-0.01,-1.11l0.84,-0.15l0.16,-0.58l-1.61,-2.94l-1.18,0.18l-0.57,0.76l-0.91,-0.57l-0.12,-1.21l0.35,-1.46l-0.53,-0.88l-0.81,0.2l-0.42,1.1l-1.94,0.49l-1.47,-1.09l-0.81,-1.4l-2.41,-0.6l-0.88,-0.73l-3.48,0.62l-1.31,0.92l-0.55,0.88l-3.88,-1.1l-4.07,-0.54l-15.05,-0.66l0.36,-1.18l2.21,-3.51l0.25,-1.48l-0.23,-0.77l-0.66,-0.4l-1.19,-3.33l-0.77,-1.0l-1.17,-0.6Z", "name": "Punjab"}, "IN-ML": {"path": "M692.14,323.41l0.36,0.99l0.49,0.26l3.48,-1.0l0.19,0.86l0.64,0.35l1.2,-0.63l1.49,-0.23l3.08,0.24l0.52,0.77l0.96,0.42l-0.17,1.66l0.43,0.66l1.1,-0.39l0.55,0.36l0.64,-0.07l2.66,-0.96l0.05,3.31l0.27,0.81l0.85,0.45l1.66,-0.78l2.72,-2.95l3.5,-0.63l1.66,-0.86l0.37,-0.68l-0.38,-0.52l-1.21,0.62l3.21,-4.23l0.7,0.03l0.35,0.35l-0.47,2.0l0.21,0.69l1.52,0.36l1.37,-0.91l0.76,-1.27l0.44,-1.6l1.65,-1.4l0.96,0.24l1.41,1.21l1.05,0.19l3.13,-0.68l1.07,0.06l3.34,-1.03l2.77,0.13l-2.86,2.99l0.12,1.26l1.06,0.72l-1.5,3.63l0.24,1.32l-0.13,2.9l0.69,0.35l1.64,-0.98l2.82,-0.49l1.83,-1.14l2.64,2.02l3.7,3.79l0.62,0.07l1.88,-0.9l-1.34,1.9l-1.55,1.24l-0.1,0.59l1.68,1.57l2.05,0.77l2.62,2.44l0.18,0.48l-0.36,1.54l0.66,1.41l-3.66,1.24l-1.0,1.03l-2.75,0.23l-0.26,0.76l-1.33,0.48l-3.41,3.12l-1.72,-0.99l-0.78,-0.86l-2.26,-0.4l-1.74,-1.46l-1.79,-0.29l-0.79,-0.85l-1.94,-0.58l-2.44,0.38l-1.73,-0.24l-5.25,0.33l-0.64,0.7l-0.94,-0.21l-0.65,0.86l-0.55,0.08l-1.11,-0.13l-1.08,-1.05l-0.72,-0.01l-2.03,0.82l-1.34,-0.09l-4.49,-1.33l-1.65,-0.78l-12.73,1.95l-2.04,-0.82l-0.72,-0.02l-0.73,0.49l-2.6,-0.6l-1.28,0.3l-2.57,-0.21l-4.05,0.61l-2.4,-0.98l-4.8,-1.03l-6.8,-2.79l-2.64,0.4l-0.59,-2.56l0.35,-1.85l2.3,-0.94l0.38,-0.8l0.21,-2.01l1.81,-0.2l1.28,-1.0l0.04,-0.93l-1.52,-1.7l-0.34,-1.72l0.88,-1.75l0.26,-1.36l2.26,-2.72l2.31,-1.91l5.74,-0.81l1.82,-1.05l3.24,0.21l1.4,0.87l-0.56,1.9l0.39,0.49l1.72,-0.91l0.85,-1.0Z", "name": "Meghalaya"}, "IN-MN": {"path": "M765.49,384.0l0.47,-0.68l0.61,-3.47l-0.09,-1.17l0.96,-1.67l-0.13,-0.68l-0.62,-0.57l-0.09,-1.32l0.56,-0.31l0.28,-0.98l0.55,-3.63l1.0,-0.49l0.14,-0.43l-0.57,-1.42l0.73,-1.43l-0.56,-1.21l0.91,-2.88l0.63,-0.62l0.88,0.47l0.98,-0.44l0.27,-1.08l1.36,-2.09l-0.23,-1.11l1.0,-0.91l-0.44,-2.02l1.51,-0.98l3.35,-6.82l0.5,-0.52l1.87,1.18l1.29,0.39l1.16,1.32l0.79,-0.03l1.42,-1.94l0.99,-2.22l3.94,-3.86l-0.04,-1.41l-1.34,-0.76l0.16,-0.53l4.57,-0.6l2.93,0.03l1.7,1.1l2.18,-0.03l1.33,0.81l4.11,-0.51l2.05,-1.03l1.5,-1.74l1.68,-0.96l1.91,-1.65l-0.05,1.34l-1.04,3.76l0.67,0.94l2.42,1.37l-0.87,1.31l-1.78,4.9l0.08,1.52l0.99,1.35l3.31,1.08l0.64,2.0l-0.15,1.25l-1.08,1.72l-0.56,2.75l-1.73,2.55l-0.49,2.59l-0.58,0.52l-1.44,0.34l-1.22,3.42l-1.79,1.31l-0.65,2.06l-1.03,1.02l-0.12,1.37l-1.01,1.13l0.08,0.9l-1.09,1.03l-0.39,2.16l-1.51,3.48l-1.33,5.32l-1.69,2.49l-0.11,2.01l-0.25,0.27l-1.49,-1.41l-1.93,-1.02l-3.52,-0.92l-2.47,0.28l-1.62,-1.76l-1.26,-0.49l-3.11,-0.12l-0.94,0.51l-0.51,0.86l-0.79,-0.43l-1.46,0.7l-0.87,-0.01l-0.47,-1.06l-2.13,-2.65l-0.75,-0.47l-1.33,0.4l-0.63,1.3l-0.8,0.38l-0.15,-0.87l-0.68,-0.58l-1.63,0.9l-1.15,-0.71l-1.16,0.57l-1.01,-0.83l-2.54,-0.88Z", "name": "Manipur"}, "IN-MH": {"path": "M140.02,524.29l0.06,-1.24l-0.89,-1.35l0.45,-1.03l-0.02,-2.02l0.58,-0.43l0.77,-1.67l0.01,-1.67l1.8,-0.88l1.02,0.27l0.61,-0.35l2.1,-0.11l1.26,-0.53l1.63,2.69l1.38,-0.59l0.87,0.56l1.01,-0.49l0.85,0.82l0.58,0.11l0.82,-0.93l0.21,-1.81l0.82,-0.04l1.23,-0.66l0.57,-1.77l3.01,0.37l0.95,-0.4l-0.07,-1.27l0.49,-1.74l-0.34,-2.56l-0.66,-0.58l2.42,-3.82l0.56,-1.66l-0.48,-1.67l-0.94,-0.32l-0.37,-1.27l-0.99,-0.24l0.99,-0.38l0.9,-1.46l0.9,1.35l3.28,1.92l1.77,1.83l2.49,-0.21l2.88,-1.69l0.39,-0.98l-0.0,-1.07l2.33,-1.97l0.71,-1.34l-0.19,-3.58l-0.9,-2.69l-2.67,-3.15l-1.52,-0.55l-1.15,-1.45l-0.83,-0.24l-1.49,0.14l-2.13,-1.69l1.87,0.97l2.29,-0.02l2.26,-1.34l1.02,-2.45l1.02,0.6l2.51,-0.87l1.4,-3.41l2.42,-2.08l1.87,0.38l4.14,-1.13l1.72,-0.97l0.43,-1.02l-0.34,-1.17l-0.46,-0.42l-2.95,0.88l-1.44,-0.8l-1.14,0.58l-3.52,-0.08l-5.22,1.49l-1.82,-2.89l1.68,-0.47l0.65,-0.69l0.32,-1.01l-0.15,-0.9l-0.83,-0.77l-0.29,-2.57l0.27,-0.56l2.56,-0.97l1.38,-0.19l1.13,-0.92l2.52,-1.2l1.96,-0.35l2.37,0.85l2.05,-0.37l0.72,-0.45l0.19,-0.59l1.73,-0.61l1.41,-1.13l2.18,2.28l0.21,0.76l-0.17,3.62l0.77,2.62l3.13,2.41l1.63,0.45l1.6,1.13l4.83,-0.16l1.07,0.2l1.64,1.01l1.69,0.14l1.58,1.14l2.36,3.5l2.18,0.87l3.21,0.71l6.95,0.32l2.77,-0.44l2.5,0.23l3.35,-0.17l1.94,-0.51l2.2,0.26l2.69,0.81l1.26,-0.08l1.24,2.54l0.36,2.7l-1.11,0.57l0.15,0.97l1.09,1.49l0.87,0.53l3.81,0.66l4.02,-0.74l0.95,-0.46l1.82,-2.26l4.01,-0.99l0.96,-1.64l-0.02,-1.37l-0.56,-1.56l2.52,-1.7l1.81,-2.57l0.52,-3.12l0.5,-0.59l0.75,-0.35l2.31,-0.17l3.51,-2.47l2.54,-0.93l1.74,-0.08l0.77,0.73l0.74,0.08l1.15,-1.07l0.99,-0.26l1.28,-1.01l4.16,0.21l0.84,1.07l1.22,0.67l0.36,3.83l0.44,0.85l-3.7,-0.1l-0.72,0.76l0.04,1.29l1.97,3.68l0.53,0.02l0.58,-0.76l1.39,0.99l0.88,0.02l1.05,-0.43l1.38,0.13l0.82,0.55l2.93,-1.48l2.94,0.87l4.44,-1.33l3.05,-1.56l2.07,-2.14l3.51,-1.08l1.4,-1.22l1.25,0.34l0.42,2.93l0.32,0.47l0.78,0.04l1.24,-0.64l0.62,0.01l1.47,0.98l2.09,0.55l2.14,0.15l6.99,-1.28l0.7,-0.93l-0.15,-1.32l1.82,-0.62l2.66,-0.31l4.17,-1.36l0.59,-0.54l0.29,-1.34l1.77,0.62l3.23,0.14l1.66,0.54l0.8,1.02l0.92,0.57l0.58,2.17l0.81,0.57l1.25,-0.33l1.75,-1.17l2.95,-0.27l1.39,0.37l0.77,1.38l0.58,0.33l1.6,-0.12l2.05,-0.95l0.35,0.4l0.86,0.06l2.42,-0.77l0.92,-1.07l2.29,-0.91l1.67,1.15l1.92,0.55l0.2,1.01l0.5,0.63l2.02,1.48l0.35,0.91l-0.73,1.25l0.43,0.65l0.81,0.15l1.85,-0.32l4.3,2.41l1.39,-0.57l-0.01,0.89l-1.13,1.42l-2.68,1.41l-2.67,1.98l-0.97,4.16l0.16,1.64l0.77,1.33l1.09,0.52l1.28,-0.23l0.35,0.63l0.06,4.02l0.45,3.05l-1.84,1.2l-0.47,0.89l-0.02,0.79l0.38,0.48l0.66,0.16l1.78,-0.88l1.02,0.27l0.01,1.81l0.39,0.89l-0.58,1.41l-0.1,2.11l0.45,2.13l-1.09,0.47l-1.52,1.28l-2.81,0.5l-0.75,0.81l-0.36,2.4l0.18,0.72l3.49,0.54l0.73,2.48l-0.7,3.76l-2.02,-0.7l-1.12,1.16l-0.04,1.18l1.69,0.75l-0.51,0.69l-1.68,0.86l-0.09,0.89l0.85,0.59l1.62,0.25l0.63,-0.44l0.13,-0.95l0.77,-0.12l1.15,2.63l2.81,1.23l0.47,2.03l0.58,0.9l4.26,1.79l1.18,1.1l0.48,0.98l-0.64,1.2l-1.62,0.32l-0.53,0.42l-0.01,0.81l0.78,1.35l-1.97,0.98l-0.97,0.87l-1.04,-1.54l-2.0,-0.01l-0.88,-1.94l-0.71,-0.42l-0.85,0.24l-1.13,1.33l-1.18,0.61l-1.0,1.75l-1.36,0.8l-1.22,4.29l-2.27,3.01l-0.64,1.37l-0.01,1.37l2.24,3.09l-0.09,0.72l-2.24,1.45l-0.28,0.71l0.24,1.15l-0.3,0.22l-2.34,0.29l-2.31,-0.22l-0.58,-0.96l-2.01,-1.76l-2.23,-1.06l0.99,-0.99l0.21,-0.84l0.02,-1.59l-0.72,-3.35l-0.74,-0.8l-1.66,0.26l-0.06,-0.71l0.87,-1.58l1.42,-0.93l0.21,-0.5l-0.44,-2.8l0.57,-0.64l0.28,-0.94l0.23,-3.74l-1.23,-2.15l-1.96,-0.77l-2.06,-2.64l-2.29,-0.45l-3.08,1.08l-0.91,0.51l-0.3,1.12l-0.39,0.32l-1.26,-0.82l-4.24,-0.18l-1.47,-1.27l-3.01,-0.45l-0.87,-1.21l-1.35,-0.51l-2.56,0.37l-1.33,0.62l-0.81,1.12l-1.3,0.27l-1.56,-0.84l-0.34,-0.77l-1.28,-0.55l-0.99,-2.79l-2.09,-1.54l-2.16,0.04l-2.92,-1.29l-1.56,0.02l-1.1,-0.35l-1.07,0.25l-0.61,0.57l-1.9,-0.74l-1.36,-1.66l-1.24,-0.52l-0.54,0.27l-0.23,0.9l0.26,1.04l1.09,2.59l1.15,1.04l-0.25,0.64l-1.24,0.79l-0.61,0.83l-0.91,2.35l-0.06,2.8l-2.01,0.66l-0.77,0.68l-1.2,2.21l0.22,2.5l-0.2,0.74l-3.33,-0.06l-0.9,-0.6l-0.87,-1.24l-2.11,-0.28l-1.27,0.34l-0.99,0.93l0.11,0.69l0.53,0.26l-1.01,1.36l-0.7,2.23l0.12,1.03l-2.39,2.03l-0.22,0.63l0.57,2.11l1.03,0.18l0.28,0.94l0.86,0.22l0.16,1.21l2.03,1.81l-2.16,0.84l-1.71,3.25l-1.27,-0.02l-0.95,0.63l-0.33,0.77l0.19,1.51l-0.52,1.27l-2.57,0.53l-1.5,1.72l-0.5,2.61l-1.3,1.55l1.51,1.29l0.1,0.66l-1.31,-0.1l-1.69,1.02l-0.3,-1.06l-2.38,-1.06l-0.11,-2.21l-0.63,-0.91l-1.3,-0.5l-1.15,0.41l-1.16,1.82l-0.03,2.41l-1.43,0.66l-1.86,1.41l-0.68,0.82l-0.31,1.03l-1.26,0.02l-1.02,0.42l-1.68,-0.05l-1.83,0.93l-0.27,0.64l0.14,1.57l-0.48,2.32l0.04,2.02l-0.55,1.47l-0.5,0.44l-3.0,-0.44l-0.32,0.42l0.47,2.13l-1.5,1.02l-0.86,2.44l-2.06,-1.89l-2.52,-0.23l-0.88,1.08l-0.94,0.5l-0.2,1.02l-1.14,0.56l-0.95,1.3l-2.46,0.92l-0.17,0.5l0.77,1.23l0.09,1.48l-0.71,1.34l1.01,2.17l0.92,0.74l-0.6,0.51l-2.45,-0.08l-1.78,-0.99l-1.68,0.57l-1.38,-0.34l-2.26,1.05l-0.94,-0.14l-2.15,0.79l-0.87,-0.67l-0.28,-1.22l-0.68,-0.84l-0.88,0.28l-0.74,-0.28l-1.46,1.22l-0.85,-1.16l-1.9,-0.32l-0.65,-1.35l-0.88,-0.45l-0.63,0.12l-2.43,3.16l0.98,3.28l0.92,0.73l0.24,0.71l-0.5,2.6l1.28,2.16l-0.74,1.05l0.55,1.29l-0.2,0.88l-2.2,-1.25l-1.22,1.13l-1.28,0.53l-1.19,-0.68l-1.83,-0.01l-1.52,0.68l-2.02,0.12l-0.77,0.53l-0.02,1.43l-2.01,0.92l-1.23,-0.4l-1.49,-1.22l-0.67,-1.03l-1.68,0.2l-1.2,-0.27l-1.49,2.14l-2.45,1.04l0.56,3.05l-1.89,-0.24l-1.82,0.86l-0.57,0.65l-1.08,0.31l-0.5,1.26l-0.78,0.59l-0.04,0.6l0.64,0.85l-1.22,0.28l-1.77,1.34l-0.89,-2.23l-2.91,-0.76l-0.53,0.3l-0.53,1.56l-1.66,1.42l-0.93,-0.68l-0.61,0.31l-0.37,0.87l-0.8,-0.53l-0.65,0.1l-0.76,2.26l0.62,0.38l0.81,-0.38l0.26,0.87l1.12,0.26l0.23,0.93l0.78,0.55l-0.95,0.16l-0.48,0.69l0.62,2.98l0.63,0.32l0.91,-0.41l2.9,1.47l0.22,0.97l-0.19,2.82l-1.77,0.32l-0.86,0.93l0.13,0.7l1.32,0.54l0.03,0.51l-0.3,1.18l-2.16,3.44l0.6,1.18l-1.19,2.09l-1.32,0.88l-1.54,0.11l-0.16,-1.09l-1.05,-0.25l-2.28,1.88l-0.4,0.99l-0.63,0.47l0.15,0.72l-0.91,0.04l-2.08,0.78l-1.43,-0.79l-1.0,-2.75l-1.76,-0.62l-0.53,-1.11l-0.79,0.21l-0.89,1.14l-1.83,0.13l-0.71,0.34l-1.25,-0.26l0.03,-1.62l-1.31,-2.88l-3.48,-3.53l0.79,-0.83l-0.41,-0.4l-0.8,-0.07l-0.82,-0.82l0.33,-0.64l0.06,-2.16l0.71,-0.87l-0.01,-0.47l-0.44,-0.14l-0.95,0.42l-0.17,-1.06l-0.71,-0.29l-1.12,-4.25l-0.51,-0.32l0.58,-0.47l-0.03,-0.73l-1.12,-0.76l-0.68,-2.42l-0.45,-0.54l1.06,0.74l0.82,0.06l0.41,-0.32l-0.74,-0.71l0.5,-0.8l-1.26,-0.43l-0.4,-0.57l0.51,-0.22l0.18,0.36l0.66,0.09l0.32,-0.64l-0.15,-0.76l-0.57,-0.46l-0.98,0.18l0.18,-1.71l-0.97,-1.49l0.42,-2.29l-0.5,-0.3l-0.41,-0.93l-0.12,-0.62l0.28,-0.53l-0.31,-1.31l0.56,-1.5l-0.17,-0.55l-0.76,-0.39l0.59,-1.37l-0.03,-0.91l-0.58,-1.34l0.09,-1.05l-1.37,-3.59l0.76,-0.16l0.19,-0.63l-1.62,-2.66l-0.76,-0.65l-0.09,-0.38l0.56,-0.85l-0.28,-0.75l0.12,-0.77l-1.59,-2.24l2.03,-0.65l-0.02,-0.73l-1.83,-0.43l-0.38,-0.57l0.05,-1.09l-0.52,-0.83l0.53,-1.46l-0.55,-1.76l-0.81,-1.2l-0.45,-1.72l-1.42,-2.31l0.42,-0.88l-0.28,-0.67l-0.53,-0.26l0.98,-0.85l0.18,-0.85l-0.51,-0.41l-0.94,0.54l-0.34,-0.37l-0.61,-4.09l-0.38,-0.69l-0.67,-0.29l0.19,-0.69l0.62,0.73l1.75,0.17l0.54,0.38l-0.31,0.81l0.58,0.48l0.45,-0.14l0.51,-0.78l-0.02,-2.09l-0.62,-0.75l-1.94,-0.11l-0.55,-0.53l0.14,-0.36l-0.36,-0.54l-1.6,-0.94l-0.01,-1.02l-0.62,-1.29l0.45,-2.33l0.71,-0.18l1.81,2.51l0.68,-0.15l0.19,-0.62l-0.86,-1.02l-0.88,-2.03l-0.71,-0.34l-0.82,0.14l-1.64,-3.67l-0.09,-2.7l0.29,-0.7l1.18,0.09l0.55,-0.62l0.88,0.95l0.04,1.25l0.91,0.59l0.53,-0.48l-0.1,-1.31l0.64,-0.91l-0.12,-0.67l-0.88,-0.45l-0.18,-1.43l-0.6,-0.05l-0.65,0.44l-1.04,-0.76l0.14,-0.26l0.68,-0.01l0.31,-1.08l1.2,-0.1l0.34,-0.51l-0.2,-0.37l2.02,-0.66l0.31,-0.64l-0.31,-0.57l-0.52,-0.07l-1.35,0.42l0.13,-1.87l-0.65,-0.58l0.22,-2.19l-0.4,-0.44l-0.59,0.23l-1.02,1.69l-0.22,1.38l0.37,0.69l-0.13,0.31l-0.7,0.72l-0.08,-0.33l-0.66,-0.2l-0.49,0.46l-1.25,2.43l-0.6,-0.82l0.51,-1.73l0.36,-0.09l0.25,-0.76l-0.32,-0.73l0.29,-1.17l-0.39,-1.12l0.4,-0.71l-0.24,-0.49l-0.7,-0.1l1.07,-1.85l-0.27,-0.66l-0.46,-0.04l-0.91,0.92l0.19,-2.07l2.08,-0.09l0.63,0.65l1.46,0.32l1.18,-0.24l1.53,2.69l0.5,0.1l0.71,-0.39l-0.01,-0.7l-0.42,-0.22l-0.17,-1.08l-1.36,-1.37l-2.73,-0.21l-1.89,-1.29l-1.07,0.49l-1.01,-1.35l-0.33,-2.78l3.69,-1.53l0.25,-0.37l-0.25,-0.37l-0.94,-0.31l-1.71,0.45l-0.95,-1.4l-1.01,-0.32l-0.28,0.39l0.16,-0.89l-0.58,-2.49l0.85,-0.61l-0.33,-1.12l0.55,-0.55l-0.18,-1.26l-0.69,-0.14l-0.89,1.09Z", "name": "Maharashtra"}, "IN-KL": {"path": "M207.32,745.98l1.92,-0.19l0.39,1.27l1.23,0.49l0.41,0.89l0.63,0.19l0.89,-0.52l0.47,0.08l0.64,0.37l-0.1,0.79l0.5,0.89l0.57,0.23l0.78,-0.21l0.85,1.04l0.65,0.11l0.96,-0.48l0.95,0.25l-0.62,1.55l0.94,1.35l1.25,1.27l1.53,-0.21l-0.72,0.78l-0.15,1.13l0.93,1.53l0.64,2.08l1.3,0.28l3.32,3.77l2.15,1.07l0.78,1.07l1.13,0.04l1.41,0.84l1.39,0.08l0.46,1.8l1.32,1.45l1.59,0.7l3.14,0.56l3.3,-1.08l0.01,2.3l0.65,0.82l2.2,-0.0l1.26,1.62l1.5,0.11l1.64,1.8l1.14,0.25l1.17,-0.18l0.27,1.6l0.54,0.81l-1.2,0.5l-1.02,1.21l-0.98,0.1l-1.84,-0.51l-0.38,0.17l-0.33,0.69l-0.03,2.0l0.9,1.74l4.83,1.38l1.12,0.9l1.17,0.45l1.49,1.54l-2.87,2.82l-0.17,0.89l0.34,0.48l0.86,0.17l0.99,-0.3l1.57,0.46l3.34,-0.37l0.94,-0.61l-0.36,1.61l0.94,1.09l0.8,2.1l0.59,0.57l-1.64,-0.24l-0.64,0.35l-0.59,1.61l0.2,1.28l0.98,1.23l3.74,1.55l0.74,1.63l1.03,0.92l-0.41,2.95l-1.35,0.7l-0.35,0.83l0.17,2.6l-0.55,3.61l0.93,2.08l0.11,1.93l2.58,2.4l1.39,0.59l1.1,-0.31l2.7,-2.22l3.3,-1.4l1.27,1.82l0.4,1.65l0.73,0.77l-1.69,4.21l1.1,3.48l-1.02,2.47l0.32,2.94l-1.56,5.71l0.29,0.53l1.83,1.05l2.88,-0.69l1.58,2.31l0.11,0.81l-1.01,1.01l-0.96,2.65l-0.84,1.39l-2.5,7.28l-1.99,1.95l1.13,3.67l1.53,1.25l-0.52,1.84l-1.71,2.58l0.21,2.15l0.35,0.76l1.72,1.46l0.73,1.15l-0.92,1.3l-0.26,0.16l-0.49,-0.36l-0.56,0.34l0.28,1.93l-1.34,2.06l-0.32,1.41l-1.22,0.16l-3.21,-2.34l-3.51,-4.66l-1.64,-1.53l-0.43,-1.0l-3.63,-4.29l-1.58,-2.45l-2.39,-2.02l1.57,-0.71l0.15,-0.44l-0.37,-0.28l-1.08,0.1l0.47,-0.7l1.68,0.13l0.44,-0.23l-0.2,-0.71l0.54,-0.49l-0.28,-0.62l-0.95,-0.03l-0.85,0.6l-1.25,-0.25l-1.31,0.82l-1.58,-3.84l0.32,-0.33l0.19,-1.64l-0.19,-0.41l-0.65,0.2l-0.86,-2.3l-0.74,-0.28l-0.21,0.22l-1.05,-2.39l-1.56,-5.16l-1.24,-10.4l0.63,-0.17l0.66,4.3l0.62,0.34l0.41,-0.52l0.65,0.91l-0.63,1.46l-0.6,2.77l0.13,0.65l0.86,0.47l2.79,0.53l0.73,-0.32l0.81,-0.97l-0.14,-0.62l-1.15,-0.68l-1.47,-0.14l0.28,-0.66l-0.17,-2.85l-0.66,-1.06l-0.37,-2.02l0.45,-1.0l-0.04,-0.85l-1.08,-2.32l-1.52,-1.72l-0.77,0.08l-0.45,-1.39l0.12,-0.52l-0.61,-0.7l-0.27,-1.52l-1.31,-1.45l-0.38,0.26l-0.25,0.92l0.66,1.82l-0.66,-1.68l-0.14,-1.7l1.71,-1.2l0.21,-1.28l-0.71,-0.22l-0.54,-0.77l-0.8,-0.12l0.31,1.86l-0.42,0.47l-0.54,-0.68l-1.44,-5.09l-1.12,-1.55l-0.55,-2.53l-1.35,-1.65l-0.27,-1.2l-2.36,-4.94l0.51,-0.56l-0.14,-0.64l-0.79,-0.34l-0.43,-1.07l-1.9,-7.73l-3.14,-7.29l0.34,-0.6l-0.24,-0.72l-0.61,-0.15l-1.63,-2.78l-1.62,-0.56l-2.42,-6.52l-0.81,-1.13l-3.92,-4.33l-0.84,-0.02l-1.08,-1.51l2.17,0.47l0.48,-0.39l-0.52,-0.81l0.19,-1.18l-0.45,-0.08l-1.02,0.74l-0.61,0.02l-1.17,-1.08l1.13,-0.11l0.25,-0.56l-0.73,-0.93l0.1,-1.21l0.73,-0.02l1.61,-0.9l0.41,-0.84l-0.76,-0.53l-0.97,0.34l-0.9,-0.22l-1.68,1.27l-0.82,-0.2l-0.83,0.31l-0.37,2.56l-1.86,-5.57l0.26,-1.27l-0.48,-0.39l-0.64,0.24l-0.68,-1.84l-3.92,-7.22l-2.86,-6.72ZM250.45,836.37l-0.0,-0.01l0.01,-0.0l-0.0,0.02ZM249.88,834.43l-0.08,-0.57l-0.05,-0.2l0.67,0.8l-0.54,-0.03Z", "name": "Kerala"}}, "height": 932.9661457393942, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-uk-mill-en.js b/plugins/jvectormap/jquery-jvectormap-uk-mill-en.js new file mode 100644 index 0000000..4d248a5 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-uk-mill-en.js @@ -0,0 +1 @@ +$.fn.vectorMap('addMap', 'uk_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 1327.4309048516907, "bbox": [{"y": -7779500.901678679, "x": -960179.9157639837}, {"y": -6072371.201528781, "x": 197256.3956247182}], "left": 0}], "paths": {"UKN": {"path": "M39.46,798.85l8.25,-2.8l5.96,-6.64l9.96,1.3l3.45,-1.11l8.56,-6.56l3.51,-0.94l-0.25,-3.18l-1.21,-0.15l-2.61,1.29l-5.14,-2.93l-2.73,0.92l-1.52,-2.07l-3.56,-1.42l-0.56,-0.97l0.6,-1.63l-1.48,-1.25l3.59,-1.44l2.96,-2.36l6.42,2.99l3.07,-0.2l7.41,-4.43l2.83,0.63l2.66,-0.62l1.64,0.71l2.19,-0.38l0.28,-0.62l-0.75,-1.38l0.67,-4.34l6.21,-6.21l1.42,-2.19l0.96,-2.8l-0.08,-5.54l3.12,-2.24l-0.29,-4.27l0.9,-0.93l-0.18,-1.28l3.12,-3.61l0.92,-0.59l5.44,-0.67l3.21,-2.62l-0.61,1.63l0.36,0.54l5.36,-0.89l5.25,1.71l6.06,0.0l4.49,-3.7l0.6,-3.58l3.06,-4.12l0.97,-6.8l0.99,-0.06l5.55,2.56l11.2,-0.44l9.94,-3.68l6.12,-0.41l4.44,-3.54l3.53,-0.91l5.18,2.01l3.42,-1.7l2.01,0.4l9.83,4.15l7.0,-1.63l3.29,0.48l1.58,0.6l4.59,4.03l0.77,1.12l-0.29,6.56l-1.8,4.86l0.97,1.25l4.35,0.24l2.19,1.1l0.54,0.93l-0.15,2.0l-1.54,4.42l0.16,1.04l5.03,1.57l3.67,3.49l1.47,3.63l4.17,4.24l1.94,6.69l4.71,1.94l1.98,2.41l0.85,0.15l0.34,-0.61l-1.57,-2.58l-5.34,-4.59l1.03,-1.54l2.26,0.5l4.1,3.68l1.01,3.65l-0.23,3.21l-1.17,2.52l-1.82,1.64l-10.0,3.25l-4.06,3.56l-3.2,4.77l1.06,1.06l0.62,2.57l1.73,0.25l4.79,-5.33l7.68,-3.6l2.67,1.24l1.9,0.14l10.3,-1.35l1.51,2.02l1.61,0.61l1.88,7.01l1.02,1.73l2.01,1.6l0.89,6.33l3.14,3.78l-0.45,1.04l0.32,1.57l-2.62,4.26l0.57,2.14l-0.29,1.78l-2.41,2.7l0.93,1.35l-1.92,2.02l-0.84,0.13l-0.82,-0.68l-1.63,-3.92l-1.16,-0.62l-1.39,-2.18l0.38,-2.39l1.94,-2.0l0.53,-1.99l-0.31,-3.85l-1.0,-2.93l-1.58,-2.12l-6.02,-4.64l-2.41,-1.13l-2.76,-0.15l-0.42,1.22l0.42,2.18l-1.58,2.04l3.96,1.83l3.32,0.35l-3.25,1.12l0.12,0.65l2.31,1.05l-0.33,2.61l0.58,1.2l1.01,0.41l-0.54,1.15l0.54,1.02l-2.94,6.99l-3.08,2.01l-1.05,1.82l11.4,-3.6l2.27,1.95l0.81,4.31l-1.01,3.26l-4.99,4.95l-1.71,-0.02l-0.82,2.56l-1.06,0.48l-1.93,-1.94l-5.03,-0.35l-3.83,0.31l-7.16,1.91l-0.8,1.84l-0.04,6.73l-2.12,6.57l-1.47,1.49l-3.56,1.47l-6.38,4.58l-4.34,0.63l-2.5,-0.94l2.09,-0.93l0.05,-0.78l-7.59,-2.07l-1.15,-2.18l-6.73,-1.43l-0.77,0.63l-1.26,-0.74l-3.56,0.85l-2.42,-1.49l-1.6,1.93l0.1,2.63l-0.68,1.09l-4.62,0.92l-1.59,-1.55l-2.39,0.09l-7.43,2.22l-2.72,-0.4l-1.79,1.75l-0.99,-0.43l-3.35,-2.97l1.22,-2.62l0.11,-1.36l-0.81,-1.35l1.73,-1.8l0.9,-2.32l-0.6,-2.55l-4.81,-3.64l-1.38,-0.11l-2.24,1.77l-4.37,-2.22l-3.03,-3.38l-1.28,-3.45l-3.1,-1.71l1.58,-1.89l-0.18,-1.86l-1.94,-4.22l-2.22,-0.88l-1.49,-2.86l-5.37,-3.63l-3.18,-1.28l-2.94,0.29l-2.53,2.0l-4.23,5.38l-2.69,1.64l-2.06,-0.21l-1.04,0.57l0.57,2.31l-0.88,1.06l-1.03,-0.03l-0.1,1.74l2.8,1.33l-0.25,1.75l2.71,1.86l-0.99,1.4l0.47,1.64l-6.21,1.8l-1.87,1.3l-1.15,2.12l1.25,1.56l-1.4,0.57l-0.07,2.62l-1.27,1.56l-0.87,0.27l0.42,-4.15l-0.85,-0.77l-3.48,2.23l1.71,3.79l-4.86,-1.07l-1.46,0.21l-0.78,-1.43l-1.41,-0.31l0.17,-1.14l-2.4,-0.09l-3.49,2.24l-1.71,0.28l-9.1,-1.73l-0.82,-0.49l-1.16,-2.88l-6.24,-3.79l-6.89,-0.02l-4.65,-0.51l-1.52,-0.76l-1.03,-1.65l-0.34,-5.17l-0.76,-2.23l-1.44,-0.84l-4.67,-0.82l-2.48,-2.92l-1.82,-3.72l-2.8,-0.23l-2.05,-0.88l-7.71,-7.68l-1.89,-3.34ZM210.69,701.07l0.25,-1.43l-2.0,-1.36l-5.47,-0.16l3.05,-1.05l5.02,0.79l0.16,0.97l-1.01,2.25Z", "name": "Northern Ireland"}, "UKM": {"path": "M671.7,36.17l-1.39,-0.25l-1.78,-2.0l-2.82,-4.84l9.63,0.0l0.64,0.26l0.55,2.41l2.22,-0.87l1.84,0.8l-0.18,2.09l-1.88,1.33l-4.69,-1.5l-2.62,0.03l-0.39,1.37l0.88,1.16ZM663.73,17.05l1.1,0.14l0.5,-1.26l-0.68,-3.15l1.29,-0.56l0.87,-1.95l-0.01,-1.98l-1.09,-1.74l2.92,-1.85l1.18,-1.52l0.7,-2.4l1.24,0.77l0.31,1.59l-0.31,1.26l-2.61,2.62l0.69,0.99l3.18,-1.87l2.43,-5.51l4.06,1.58l0.78,2.01l-2.06,0.81l-0.0,0.73l1.65,0.76l-3.52,2.28l0.45,2.48l-1.7,0.41l1.7,1.07l0.0,0.57l-4.1,3.43l0.54,1.99l1.71,2.5l-1.55,0.88l-2.15,-1.05l-6.79,-0.02l-1.04,-0.58l0.31,-3.42ZM661.91,65.94l-3.17,0.75l-1.1,-0.53l2.04,-3.24l1.95,-0.44l1.38,-1.09l4.25,-0.69l-5.36,5.23ZM652.83,15.13l0.83,2.02l0.7,0.07l0.92,-1.39l4.91,-0.17l-0.65,3.2l1.04,0.94l-0.73,1.24l0.02,1.48l1.46,2.55l-0.87,2.07l-3.92,-3.09l-2.29,-0.0l4.02,6.26l-1.83,0.68l-2.21,-0.87l-0.59,0.45l0.56,1.65l1.19,0.91l2.17,0.44l-0.25,0.75l1.35,1.2l0.02,1.28l-0.84,1.05l-1.53,0.31l-0.27,0.59l1.27,2.21l0.5,2.48l-0.57,1.51l-4.11,-0.56l-1.91,-1.27l-0.94,1.65l0.92,1.25l-2.32,-0.4l-1.87,-1.48l-1.13,-2.73l-1.05,-12.17l0.66,-2.47l2.17,-0.32l-0.2,2.11l0.95,1.55l1.48,1.03l1.32,-0.3l-1.5,-6.19l1.02,-2.66l-0.74,-2.2l1.35,-3.56l1.49,-1.1ZM615.13,86.2l-0.37,-0.81l0.44,-1.12l4.56,-1.59l0.06,-0.72l-3.11,-3.29l-0.69,0.11l-1.7,3.79l-0.54,0.1l-1.35,-2.38l-3.9,1.62l-2.43,0.03l-0.77,-1.71l-2.97,-1.04l-1.47,-6.22l2.36,-1.87l3.13,-1.01l1.26,0.1l3.15,2.64l1.73,0.04l-0.01,-1.57l2.25,0.66l0.51,-1.27l-0.65,-0.52l3.55,-0.34l0.93,0.81l0.1,3.7l0.52,0.37l1.92,-1.05l-0.8,-2.57l1.14,0.0l0.36,-0.57l-0.47,-1.43l1.54,-0.52l2.07,0.51l1.76,1.61l0.86,2.79l0.69,0.13l2.38,-2.63l-0.03,-0.61l-2.15,-1.65l1.39,-2.71l2.27,0.56l0.35,-0.64l-0.74,-0.99l5.59,-0.45l-2.28,-1.56l-4.44,-1.34l-0.48,-2.61l-0.66,-0.23l-2.39,1.82l-1.44,-0.93l-0.27,-1.07l1.22,-3.09l-4.7,-1.13l0.06,-3.74l-1.03,-4.51l-3.07,4.49l-0.95,-0.32l-0.21,-0.73l1.48,-1.84l-0.26,-0.71l-4.34,0.3l-1.31,-1.1l-2.38,1.92l-2.64,-0.14l0.3,-1.69l1.31,-1.96l2.85,-0.24l0.66,-3.58l1.67,-2.06l0.77,-0.09l2.15,4.07l2.87,2.21l3.4,0.94l3.12,-1.31l0.05,-0.7l-0.97,-0.6l-3.56,-0.35l-2.28,-2.31l-0.95,-0.24l1.83,-3.01l3.6,-1.73l-0.84,-1.41l0.77,-1.36l-0.24,-0.99l1.63,-0.6l2.21,0.25l4.91,2.16l0.49,-1.45l-1.34,-1.13l1.59,-3.12l0.59,1.79l-0.16,3.65l-1.34,0.97l0.61,2.87l-2.93,3.98l0.34,0.61l0.99,0.0l-1.38,0.5l1.61,1.28l-1.59,3.91l1.26,0.41l2.18,-1.14l-1.36,2.66l0.26,1.57l-1.63,0.68l-2.01,4.45l-1.67,1.39l0.36,1.36l2.35,-0.04l2.0,-0.99l0.08,-2.46l2.08,-1.18l5.41,-0.74l0.14,-0.74l-4.97,-3.23l1.93,-1.07l0.12,1.93l0.68,0.26l3.42,-4.16l2.26,1.69l-0.47,1.22l2.63,2.37l0.32,1.25l-0.52,0.8l0.78,0.97l-2.47,-0.42l-3.28,2.6l-0.1,0.63l2.02,0.1l0.56,1.19l2.77,-1.21l0.65,0.34l0.55,2.67l2.78,-2.01l1.36,-3.19l0.54,1.56l2.4,-3.72l2.4,-0.71l-0.88,1.59l-6.65,6.53l0.07,1.29l1.22,0.46l1.94,-2.24l1.77,-0.56l0.39,1.07l-0.64,3.08l-8.59,1.42l-0.12,0.7l1.78,1.34l4.46,0.87l1.68,0.99l-5.11,3.85l0.54,2.36l1.37,-0.41l1.94,0.49l-4.32,2.61l-1.18,-0.26l-1.53,-2.56l-1.13,-0.23l-0.99,1.17l1.2,2.37l-2.96,1.3l0.4,1.21l2.76,0.0l-1.26,3.57l2.99,-2.38l-2.1,3.64l-0.27,2.38l3.38,-2.02l0.51,0.34l-0.9,2.48l2.77,1.92l-2.02,0.0l-0.4,1.25l-0.63,-0.08l-1.72,1.47l-1.77,0.29l1.14,1.23l-0.28,0.75l-2.06,0.97l0.32,1.2l1.79,0.62l-1.13,1.5l0.82,1.72l2.28,1.47l-0.31,1.22l-1.11,0.85l-2.68,-0.19l-0.51,0.47l2.25,5.38l-0.52,1.03l-3.58,-1.39l-0.58,0.41l0.18,5.27l-1.53,3.55l-0.84,-0.47l-0.14,0.5l0.93,2.77l-0.93,3.08l1.13,2.16l-0.62,1.01l-1.59,-2.28l-1.35,1.08l0.89,-1.81l-0.17,-1.21l-1.61,-0.98l-2.61,0.5l-1.17,-0.48l-0.8,-1.22l1.34,-1.44l-0.38,-2.23l0.58,-0.84l2.94,-1.0l-0.13,-1.02l-2.18,-2.04l1.91,0.0l0.39,-0.48l-0.47,-2.17l2.22,-4.17l1.3,-6.12l2.17,-5.11l-0.43,-3.69l-0.55,-0.73l-0.98,-0.05l-0.29,-0.98l1.64,-3.63l-1.26,-0.54l-1.77,1.13l-0.63,-0.2l1.48,-4.29l2.21,-2.83l0.16,-1.21l-2.35,-0.41l-3.3,4.82l-2.29,-4.62l-1.97,-1.43l-2.83,-0.53l-0.47,1.36l3.15,2.04l2.14,3.25l-0.36,1.13l-2.09,-1.47l-1.28,-0.11l-0.9,4.19l-1.13,-1.46l-1.05,0.74l-1.28,3.68l-3.71,-1.74l-2.36,-1.93ZM653.14,86.91l0.42,2.38l1.68,0.08l-0.18,1.78l-2.28,5.27l-2.93,-2.03l0.24,-4.04l-1.41,-1.77l0.05,-0.89l3.02,0.39l1.14,-1.46l0.28,0.31ZM629.03,103.58l0.15,-0.16l-0.1,0.12l-0.05,0.04ZM629.47,103.08l1.66,-4.82l-0.71,-1.57l1.87,-0.73l-0.66,3.0l0.68,0.36l0.74,-0.63l-0.23,1.72l-1.69,3.68l0.28,-3.65l-0.77,0.1l-1.17,2.54ZM607.04,168.59l-0.29,1.2l1.18,0.78l-3.55,2.05l-0.37,-1.39l0.6,-1.92l1.44,-1.18l3.1,-0.5l-2.1,0.97ZM242.7,441.55l1.02,-1.11l-1.16,-1.99l-0.03,-1.53l0.98,-2.08l-3.94,-1.21l-1.14,-4.81l1.73,-3.66l0.35,-4.1l1.44,-0.52l-0.52,-2.17l2.45,-0.13l1.4,0.72l4.68,3.75l1.47,0.85l0.87,-0.31l1.37,1.61l4.45,2.15l0.41,-0.62l-0.94,-2.0l5.66,-0.77l5.61,0.43l0.72,-1.06l-2.78,-2.23l-4.07,-0.76l-3.95,0.42l-2.32,1.52l-2.39,-2.19l0.92,-1.44l-0.29,-0.6l-2.73,-0.4l-4.11,-6.28l-3.71,-1.12l-0.37,-1.25l0.43,-1.3l1.68,-1.46l-0.36,-2.11l4.33,-1.35l2.43,2.12l1.39,-0.02l1.91,-2.55l-4.21,-3.51l-7.05,-1.28l0.27,-6.85l-0.84,-3.96l1.74,-3.34l3.12,-1.33l2.17,-0.02l3.99,1.46l-0.01,4.01l1.26,4.46l2.11,2.43l1.59,0.6l1.78,-0.3l-1.49,-2.49l2.77,0.92l0.57,-0.45l-0.54,-2.37l0.44,-3.58l-1.29,-2.05l-4.19,-3.56l0.73,-1.02l-1.04,-1.06l3.14,-3.7l1.95,1.45l2.91,0.04l-0.32,3.31l2.59,2.62l3.54,1.47l2.89,0.3l1.95,-5.75l0.67,-1.09l0.81,0.01l3.83,1.3l3.64,3.03l2.92,1.41l6.76,1.78l-2.33,-3.07l-2.58,-0.94l-3.86,-3.08l-6.02,-2.32l-0.09,-1.6l1.49,0.61l0.79,-1.34l3.53,3.26l2.03,0.91l3.69,-0.82l4.79,2.11l3.13,2.39l3.66,1.33l2.43,3.36l2.39,0.92l-2.37,-5.32l-8.67,-5.88l-1.93,-0.43l1.62,-0.35l0.76,-1.2l-1.08,-3.32l-7.66,-2.61l-3.49,-3.43l-1.8,-0.36l0.26,-0.75l-1.49,-1.55l-4.69,-0.33l0.91,-2.22l-2.75,-4.0l1.26,-1.31l2.9,0.64l2.53,3.28l1.75,-1.11l3.98,0.53l2.17,-2.48l-0.81,-3.74l0.84,-0.4l0.0,-0.86l-1.35,-0.95l4.36,-1.62l-0.41,-1.34l-2.82,0.1l-2.0,-0.66l0.32,-0.97l-2.73,-1.71l0.52,-2.26l-2.1,-0.91l-3.84,-4.6l0.05,-1.65l1.0,-0.26l7.2,2.92l6.68,-2.58l4.01,1.15l3.47,-2.4l5.21,2.55l5.63,-0.0l6.4,3.42l-0.89,-1.93l-2.83,-1.88l3.04,-0.71l1.17,-0.65l-0.13,-0.75l-7.27,-0.86l-1.9,1.52l-1.4,-0.03l-3.93,-2.08l-3.34,-3.54l-2.1,-2.68l-0.97,-2.8l1.23,0.0l0.34,-0.62l-0.77,-2.28l1.42,-2.62l0.02,-2.13l7.06,3.39l4.2,-0.35l-3.17,-2.57l0.17,-1.12l-0.59,-0.94l-3.49,0.8l1.13,-0.59l0.0,-0.86l-1.4,-0.85l4.05,-1.84l5.04,1.96l-9.46,-6.85l-0.01,-2.05l0.67,-1.37l4.54,-2.08l1.47,-1.27l1.02,-1.94l-0.43,-0.59l1.4,-6.77l1.22,-1.13l10.89,1.87l1.93,0.98l1.38,1.38l1.22,4.41l-1.1,4.35l2.08,-0.94l0.82,-1.29l0.55,-4.5l1.2,-1.69l-0.2,-1.45l3.47,3.27l5.65,2.62l-0.58,2.52l-4.11,3.4l-4.03,7.29l0.41,0.57l1.82,-0.29l5.86,-4.72l0.76,-2.08l4.65,-2.69l2.39,-6.26l1.87,-0.64l7.16,1.76l4.01,2.3l-0.03,2.37l-1.95,1.78l-1.28,2.3l-2.66,5.37l0.48,0.57l3.13,-1.75l2.37,-2.68l0.08,-1.64l4.33,-3.49l3.25,-1.76l3.0,-0.91l1.57,0.4l2.68,1.92l1.96,0.42l0.33,-0.71l-0.76,-0.58l1.87,-2.17l3.59,0.72l1.0,-0.42l0.79,-1.72l0.74,-0.29l5.99,0.44l1.1,-0.59l2.46,-3.33l0.59,-0.11l2.17,2.88l2.17,-0.23l7.46,0.94l7.5,-0.96l3.8,-1.39l5.91,-3.45l3.26,-1.2l5.32,-0.78l3.93,0.52l-0.61,1.06l2.36,1.58l7.32,-1.49l4.7,1.65l2.51,0.0l1.51,-2.77l-0.24,-0.54l-2.93,-1.32l-2.08,-2.63l2.87,-2.37l1.11,0.15l0.78,2.72l1.02,0.78l11.73,-1.64l4.6,2.51l8.54,-0.86l2.49,0.84l-2.5,6.34l-2.98,4.31l-2.93,2.56l-1.02,2.56l-0.04,2.19l0.98,1.73l2.21,1.07l2.7,-0.66l0.69,1.71l-0.32,0.93l-1.72,1.08l-0.79,4.39l-3.7,5.59l-7.76,7.95l-14.27,5.19l-4.6,3.6l-3.11,5.4l-3.57,3.11l-18.97,12.07l-6.49,2.59l-1.69,1.35l-2.06,4.74l-2.74,1.44l-2.81,0.53l-6.36,3.39l-1.15,2.86l-0.89,-0.41l0.18,-1.07l-6.37,-1.75l-0.48,0.84l1.18,2.4l1.48,0.82l3.82,0.55l2.13,2.65l-1.67,2.22l-0.18,2.43l-4.75,-0.77l-3.12,2.57l-2.22,-0.05l-7.38,-2.5l-7.0,1.4l-6.19,-5.13l-2.31,-0.36l4.6,5.81l3.0,1.93l3.52,0.55l5.05,-1.5l4.98,3.61l1.61,0.01l0.09,-1.73l4.77,2.55l3.15,0.67l5.04,-3.01l2.5,0.45l1.22,1.25l-0.98,1.35l0.24,0.63l3.03,0.61l3.32,-1.19l3.1,-2.28l3.66,-3.86l0.67,0.09l0.43,0.91l-0.82,2.82l-17.02,16.72l-2.58,-0.16l-0.31,-0.89l0.88,-2.31l-2.67,-1.81l-3.16,0.94l-7.69,5.04l-7.79,1.33l-3.08,-0.18l-1.53,3.31l-2.46,1.17l-6.45,5.3l-1.5,3.31l1.01,0.57l3.82,-1.59l4.43,-4.6l3.88,-1.85l3.37,-2.72l3.59,-1.45l1.39,0.24l1.29,1.17l6.33,0.72l2.7,-1.84l4.57,-1.92l0.28,1.06l-1.67,2.41l-5.04,3.99l-3.05,3.79l0.56,1.63l-3.12,0.24l-1.8,0.8l-1.58,1.57l0.43,1.19l-1.92,-0.45l-5.13,0.4l0.41,1.33l4.18,0.52l-3.29,4.67l0.2,0.68l4.92,0.71l1.95,-0.81l2.18,-2.46l2.68,-0.5l2.94,-2.85l4.09,-1.52l0.18,-0.61l-0.99,-1.37l-2.2,-1.58l9.0,-0.92l8.28,0.63l2.79,-0.65l13.27,-7.68l4.34,-0.78l-1.3,2.37l1.38,0.78l3.64,-0.73l0.28,-0.58l-1.34,-2.52l4.07,0.8l1.9,-0.31l2.78,-2.25l0.82,-1.59l-0.4,-1.56l0.64,-0.97l2.58,0.44l4.38,-1.69l10.64,0.36l6.46,3.3l11.38,3.07l3.88,0.12l3.7,-0.92l6.66,-3.36l13.53,0.0l2.3,1.77l2.39,-0.73l1.18,0.72l2.82,-1.07l7.28,1.97l2.64,-0.09l1.67,1.7l2.41,-1.7l5.41,1.74l0.95,-0.86l2.13,0.88l3.3,-1.75l3.08,0.85l1.3,-1.91l1.31,-0.66l7.44,2.54l2.38,-0.42l5.12,-3.01l10.48,0.01l2.4,3.42l3.44,-0.85l1.47,2.11l7.26,6.34l1.52,6.47l1.32,2.02l-0.28,2.43l2.74,3.02l-1.2,1.15l0.03,1.32l1.64,1.03l-5.76,5.42l-1.55,2.29l-0.26,1.72l-8.92,6.52l-2.35,2.87l-5.58,11.53l-2.1,6.54l-0.25,4.95l1.88,1.97l-9.14,11.98l-2.74,4.61l-1.14,4.64l1.18,4.02l-1.97,2.24l-0.89,2.87l-4.19,3.18l-4.41,5.52l-1.34,1.26l-4.83,2.43l-3.11,2.57l-1.28,2.17l-0.94,5.33l-3.08,4.55l0.54,3.45l-1.99,2.12l-0.87,2.06l-9.32,5.8l-1.58,2.65l-5.1,2.33l-2.4,4.13l-2.99,-0.84l-25.7,2.97l-6.42,3.08l-9.02,7.25l-3.45,1.14l-4.08,-0.77l1.09,1.63l1.7,0.57l5.69,-0.39l24.34,-9.33l1.82,-2.04l3.61,-1.13l3.07,1.95l2.87,0.18l0.87,1.28l-0.46,4.23l-2.54,3.4l2.32,0.26l0.93,2.49l2.25,0.68l0.82,0.94l7.85,0.48l1.78,0.73l6.6,4.89l-4.46,3.46l-1.6,2.42l-6.15,1.5l-5.45,2.96l-3.82,0.14l-5.42,-2.23l-6.34,0.41l-1.77,2.12l-4.58,2.59l-4.76,4.32l-3.26,1.25l-3.09,7.15l-1.1,0.6l-6.1,0.28l-8.12,3.51l-6.62,0.27l-13.97,-3.27l-7.74,0.11l-3.24,-0.87l-3.0,-1.69l-6.23,-4.91l-2.36,0.31l0.21,1.11l6.56,4.13l3.33,4.95l3.18,0.21l1.66,2.19l1.22,0.32l6.71,-0.83l14.85,3.32l6.35,-0.52l2.55,2.02l15.63,1.01l2.55,2.48l1.28,0.25l5.62,-0.46l6.65,-2.34l2.11,-1.47l2.79,-3.26l2.01,-0.19l0.34,-0.52l-0.92,-2.3l3.78,-3.27l1.61,-0.57l14.38,0.83l1.51,0.54l3.77,3.35l-0.84,2.84l3.46,0.04l1.18,0.68l2.04,-1.48l4.58,2.86l3.34,0.86l5.44,3.64l3.79,1.64l14.57,2.42l0.9,3.07l2.53,0.98l1.56,1.41l4.62,7.25l-4.5,1.79l-1.19,4.06l-6.5,4.51l-1.24,2.29l-5.23,6.15l-6.48,0.82l-1.16,1.52l0.42,1.59l2.04,1.23l1.91,2.74l1.91,4.81l3.44,4.92l0.37,2.25l2.44,2.97l-0.32,1.63l-3.61,2.74l-3.53,0.81l-2.02,1.58l-2.59,0.96l-2.94,4.29l-2.21,0.83l-2.13,-1.14l-3.59,0.16l-8.71,5.98l-6.32,5.93l-0.27,1.52l0.61,1.49l-0.51,1.66l-3.11,1.76l-4.89,5.39l-8.96,3.86l-5.29,6.24l-3.88,1.85l-2.15,3.22l-1.75,0.11l-3.8,-1.5l-0.89,0.4l-0.64,4.34l-1.47,3.93l-7.0,1.52l-27.49,-1.64l-4.04,-1.28l-1.46,0.41l0.17,1.04l-0.99,0.37l-3.6,-2.1l-0.61,0.2l-1.13,3.28l1.26,6.39l-1.02,3.6l-1.22,0.57l-10.31,-0.34l-2.0,2.5l-5.8,-0.74l-0.05,-1.77l-1.01,-0.47l-2.29,2.31l0.28,1.75l-1.43,0.84l-0.04,0.65l2.53,2.04l-4.89,1.89l-6.72,4.09l-3.99,0.44l-2.29,-0.13l-0.26,-0.89l-0.78,-0.3l0.61,-3.73l-0.19,-1.22l-1.22,-0.96l-0.63,-0.3l-1.27,0.89l-1.11,1.85l-0.34,2.19l0.65,1.63l-2.73,0.38l-4.23,-2.21l-2.89,-3.87l0.72,-4.65l-0.57,-0.42l-3.44,2.82l-2.37,0.38l-7.3,-3.06l-2.52,-4.64l-1.99,-0.35l-1.3,1.88l-0.86,2.89l0.82,3.04l1.29,2.64l3.82,1.05l1.14,2.28l-1.15,2.77l1.14,1.88l-1.01,1.78l0.7,4.67l-2.58,2.29l-3.61,-0.85l-3.05,-1.65l-3.1,0.04l-5.6,-6.54l-2.99,-2.36l-10.2,-5.12l-5.65,-1.76l-1.78,-3.47l-1.99,-0.67l-3.42,0.07l-2.15,0.78l-3.75,2.76l-2.14,2.67l-0.52,1.56l0.65,3.48l1.58,1.85l2.91,6.87l2.46,1.77l-0.46,4.13l0.77,1.93l-6.37,-2.17l-1.16,-2.4l0.07,-1.76l0.92,-1.0l-0.91,-1.9l0.0,-2.05l-2.6,-0.66l-1.39,-4.38l-2.62,-1.37l-8.14,-7.9l-2.45,-3.56l-1.56,-4.17l-0.44,-4.71l0.8,-6.29l1.0,-0.77l2.92,-0.14l0.77,-1.4l3.36,4.97l0.82,6.7l2.83,2.52l1.86,0.11l1.59,-1.38l0.64,-2.13l-3.1,-5.0l-2.22,-5.92l0.22,-3.34l2.48,-5.58l0.93,-4.6l5.2,-3.19l5.59,-6.07l1.42,-0.62l0.23,-2.32l2.31,-5.15l-0.13,-3.93l0.53,-1.63l5.12,-4.61l2.08,-5.37l2.68,-1.95l5.87,-2.27l2.18,-2.58l0.74,-3.3l-0.89,-3.29l-2.08,-2.1l-2.73,-0.8l1.5,-2.04l-0.5,-2.87l-1.87,-2.53l-2.72,-1.83l-4.73,-1.66l-3.18,-0.31l0.28,-2.23l-4.99,-2.62l-4.15,-3.62l3.52,-2.98l1.46,-2.95l-0.39,-4.22l-1.48,-3.7l-0.85,-8.62l0.51,-3.14l1.16,-2.0l1.85,-1.26l4.17,-1.13l6.61,2.17l2.47,-0.12l1.83,0.88l14.43,1.8l2.55,-1.59l-13.11,-2.51l-3.65,-1.84l-4.37,-4.41l-3.61,-1.14l-1.5,-1.21l-2.27,-3.08l-1.15,-4.11l-1.6,-0.61l-0.92,1.34l0.61,2.85l4.13,5.01l0.87,1.98l-0.36,0.64l-1.36,0.21l-3.84,-0.66l-1.07,-3.63l-0.01,-5.54l3.33,-6.93l6.11,-7.81l0.47,-1.92l-1.0,-0.9l-2.25,1.98l-6.06,9.46l-1.46,0.06l-0.45,-0.67l0.13,-3.72l-1.33,-3.06l-1.39,-0.49l-1.55,1.22l2.85,11.0l-0.22,1.59l-1.13,0.57l-0.22,0.92l0.91,7.74l-0.72,0.3l-4.07,-1.29l-0.49,0.39l0.26,1.21l2.13,0.99l1.15,2.06l-0.28,1.57l-2.54,3.18l-1.86,4.96l-1.93,1.09l-2.55,-0.44l-1.24,-1.2l-2.5,-9.06l-5.08,-6.31l-1.51,1.44l4.63,8.56l0.6,2.36l-0.48,0.78l-6.87,-3.99l-0.69,-1.39l0.0,-2.45l-0.69,-0.28l-1.72,2.64l-1.11,3.78l-2.5,2.9l3.32,7.35l-7.54,-2.54l-0.74,-0.78l-0.66,-3.17l-2.02,-2.0l0.0,-3.25l1.23,-3.43l-1.17,-4.44l2.0,-1.82l9.37,-12.98l4.9,-1.63l3.76,-2.32l5.29,-7.92l8.89,-4.27l1.78,-3.86l-1.99,0.76l-3.23,2.83l-6.47,1.36l-1.4,1.06l-3.75,6.58l-10.27,5.54l-7.23,8.73l-2.94,0.8l-1.01,3.76l-1.05,1.34l-1.65,0.4l-3.37,-0.47l-0.26,-2.2l-1.38,0.23l-0.95,8.92l2.19,1.29l1.5,5.7l1.04,0.89l-0.59,1.39l0.92,0.74l-0.79,1.22l4.76,4.09l2.09,2.8l0.73,2.91l-0.5,1.44l-5.32,2.21l-4.08,3.65l-2.47,4.11l-0.63,4.05l-1.89,1.51l0.66,1.39l-0.01,2.98l1.85,1.03l0.5,0.92l-0.41,1.23l-2.46,1.59l0.52,2.11l-2.3,3.97l-0.11,3.69l-1.07,0.44l-3.2,5.56l-2.16,1.31l0.45,1.15l1.71,0.12l1.45,1.44l2.33,3.91l-0.71,1.48l-4.18,4.32l-3.5,1.8l-1.93,0.31l-3.53,-0.89l-3.94,1.73l-3.74,-0.44l-0.8,-1.29l-1.18,-7.75l0.42,-2.16l2.34,-1.57l4.27,-4.63l-0.54,-7.94l1.19,-3.79l-1.17,-2.43l4.19,-9.17l0.34,-2.43l-0.85,-1.6l4.39,-2.97l1.31,-3.22l2.67,-3.74l3.61,-1.59l3.05,-2.32l2.7,-3.2l1.67,-3.76l-0.63,-0.46l-8.36,7.54l-3.96,2.29l-0.48,0.02l0.12,-1.54l-3.43,-1.24l-1.08,-1.09l-1.06,-5.61l3.52,-4.25l1.1,-2.59l4.17,-4.27l-2.43,0.65l-3.03,2.79l-3.76,2.19l-0.9,-0.59l-0.66,-2.44l9.38,-11.58l1.19,-3.75l-1.41,-0.37l-3.62,1.99l-0.71,2.42l-3.65,3.36l-0.06,2.88l-1.5,2.23l-0.58,-0.56l0.93,-4.65l3.11,-4.92l6.49,-7.49l0.62,-1.46l2.95,1.33l1.12,-0.25l0.09,-0.98l-1.78,-1.8l-0.64,-2.68l3.07,-4.14l1.15,-2.83l-0.47,-0.51l-2.82,0.7l-4.82,4.74l1.43,-3.98l3.06,-4.23l-0.61,-1.82l0.84,-1.03l4.45,-1.54l0.4,-1.19l-0.81,-1.33l-1.39,-0.42l-3.68,0.94l-2.83,1.67l-0.18,-2.0l1.98,-7.09l2.18,-2.7l1.57,0.68l2.34,-0.21l4.7,-1.79l-0.42,-1.16l-5.82,1.1l-1.33,-0.24l2.13,-4.42l2.72,-1.5l-0.17,-1.22l1.97,-2.17l2.75,-1.07l8.61,-0.6l6.94,1.55l3.2,-0.62l2.39,-1.64l5.49,-5.91l2.87,-5.07l1.8,-1.98l-0.45,-0.64l-2.09,0.98l-3.36,5.82l-3.49,2.48l-2.89,3.37l-3.52,0.33l-9.16,-1.68l-2.51,1.64l-1.04,-0.59l-1.37,-4.55l-0.53,-0.26l-1.33,0.55l-2.5,3.46l-0.53,-0.34l3.25,-6.81l1.72,1.32l4.33,0.61l8.01,-3.92l2.1,-1.8l-0.48,-0.62l-2.86,1.39l-3.02,0.18l-5.2,2.65l-3.11,-1.69l4.41,-6.98l4.24,-3.3l1.17,-1.67l-1.6,-1.81l2.39,-1.52l3.46,0.03l2.44,-1.73l5.46,0.91l1.98,-0.41l3.44,-1.79l7.04,-1.3l1.67,-1.3l-14.61,2.2l-6.38,-2.42l1.29,-2.51l7.46,-7.1l1.46,-2.46l-0.57,-0.53l-5.13,3.6l-1.99,2.46l-2.68,1.03l-0.93,3.19l-2.13,2.69l-3.49,0.78l-0.93,1.15l-1.86,0.61l-4.1,4.61l-3.97,1.5l-1.34,2.32l-2.9,1.37l-10.11,10.35l-6.15,3.84l-1.69,-2.03l-3.97,-1.14l-2.2,-1.49l1.52,-2.77l-0.21,-1.76l-0.94,0.13l-3.08,3.36l-4.95,-0.83l-12.76,-8.3l-0.32,-2.45l1.82,-1.07l4.23,-0.23l2.9,0.47l5.62,2.83l0.53,-1.48l-2.75,-1.98l-0.02,-0.81l8.88,-4.7l1.95,-0.18l7.72,2.59l7.21,-0.8l1.93,-1.0l-0.23,-0.75l-7.99,0.84l-1.79,-0.25l-4.39,-2.19l-3.56,-0.75l-9.65,4.12l-4.01,0.74l-4.15,-1.67l-6.06,0.35l-6.44,-1.38l-2.4,0.24l-3.11,2.05l-1.96,-0.33l-2.96,-1.67l-0.99,-1.9l0.04,-1.55l1.48,-0.12l2.98,-3.06l13.2,-1.12l5.34,-2.59l1.27,0.25l2.96,2.28l5.31,2.07l0.61,-0.37l-0.53,-2.74l-2.43,-1.54l1.65,0.0l1.82,0.88l3.44,-1.7l4.31,0.57l-6.67,-2.99l-1.48,-1.39l-0.02,-0.99l0.94,-0.75l8.85,-1.01l3.65,-1.26l2.92,-2.3l-0.11,-0.69l-3.04,-0.29l-1.61,0.74l-1.25,1.89l-1.49,-0.04l-2.83,-0.59l3.82,-3.64l-0.2,-0.7l-4.03,-0.57l-8.09,1.42l-2.1,-0.45l4.46,-0.77l-0.22,-1.28l-2.0,-1.44l1.29,-1.28l2.64,-7.77l3.76,-2.75l2.54,-0.71l2.04,0.31l3.44,4.12l2.82,1.38l2.97,0.35l4.7,-0.89l4.49,-2.04l-0.49,-1.23l-4.05,1.29l-1.38,-0.41l-1.81,1.0l-1.68,-0.38l-4.59,-2.02l0.42,-3.05l-2.1,-1.46l-3.65,0.79l-3.12,-1.65l-0.64,-0.63l1.11,-1.74l5.07,-5.34l3.45,0.13l2.47,-1.27l7.56,3.57l8.52,0.08l1.29,-1.29l3.27,0.48l0.99,-0.4l-0.22,-1.28l-1.94,-0.88l-10.28,1.75l-3.69,-3.29l-7.27,-1.77l-0.85,-1.01l0.53,-1.82l4.15,-5.1l-1.42,-2.31l1.81,-2.04l3.5,-1.76l2.79,-0.48l8.31,5.87l3.69,-0.81l-0.02,-1.63l-3.52,-0.65l-4.25,-4.1l2.91,-3.18l2.01,-0.62l0.01,-1.69l-2.47,-0.66l-3.51,3.29l-6.12,2.51l-6.7,-1.68l-5.31,0.86l-0.56,-1.25l2.22,-4.05l3.78,-2.45l1.28,1.55l2.37,-0.16l9.87,-3.68l4.02,-3.05l0.42,-3.98l-1.79,-0.19l-6.28,6.22l-2.08,1.24l-5.18,-1.16l1.89,-1.73l-1.53,-3.76l-2.0,1.2l-5.77,5.95l-2.05,0.81l-4.37,0.5l-1.74,-0.68l-1.27,-4.2ZM416.76,749.91l-0.38,1.31l-1.09,-0.91l0.66,-0.99l0.81,0.59ZM568.84,93.59l-1.01,1.14l-1.76,-0.59l-1.51,-1.07l-0.33,-1.23l1.69,-1.12l2.58,-0.06l0.34,2.93ZM513.82,213.94l0.37,-2.67l0.46,-0.51l1.99,-0.99l2.9,-3.51l2.67,-1.09l0.39,-1.78l-1.27,-1.52l6.45,-1.72l-4.61,3.82l0.18,0.68l1.51,0.73l3.86,-1.19l2.2,-1.86l3.91,-0.47l3.17,-3.11l0.93,3.31l-3.63,0.14l-1.78,0.68l-4.04,5.9l-0.81,-2.47l-1.7,0.23l-2.62,2.39l0.15,-1.26l-0.57,-0.36l-1.57,0.72l-1.56,-0.63l-4.8,4.65l-1.81,0.02l-0.37,1.88ZM517.81,224.99l-1.26,1.05l0.19,1.66l-1.34,0.37l-0.86,-0.62l1.47,-1.99l1.79,-0.47ZM519.02,224.7l0.87,-0.54l0.34,-1.82l-3.41,-3.11l3.22,-0.57l-0.49,1.12l0.36,0.59l2.62,-0.0l-1.07,1.95l1.1,1.48l1.44,0.34l2.06,-0.68l-0.48,1.76l2.52,1.81l-0.98,0.83l-5.08,1.08l-0.25,-2.53l-1.29,-1.45l-1.48,-0.26ZM473.1,221.12l2.94,2.29l3.35,-0.42l0.73,0.44l1.65,1.7l-1.12,0.47l-0.2,0.7l1.74,1.48l4.05,1.76l-0.5,0.69l0.64,0.93l-5.4,1.32l-0.7,1.96l-1.62,1.78l-3.37,1.66l-0.12,0.72l3.08,1.46l3.34,0.35l4.15,-3.23l3.36,2.24l3.48,-1.51l3.05,2.47l1.07,-0.37l-0.03,2.22l1.78,0.29l3.14,-1.66l3.34,-0.55l0.88,0.68l-0.43,0.97l-4.75,2.96l0.97,2.28l2.88,1.52l1.85,-0.32l0.29,-0.56l-1.43,-3.05l5.16,-1.76l1.4,1.22l0.08,3.13l-2.07,1.31l-4.53,1.24l-2.08,2.94l-1.18,0.71l-8.55,-2.85l-5.04,-7.13l-1.32,0.27l-2.42,2.19l-5.1,-0.28l-0.38,0.62l0.77,1.14l-3.08,0.35l-0.53,1.26l-1.91,-0.59l-5.05,0.65l-1.95,-1.46l-0.85,-2.63l0.26,-2.61l2.42,-4.24l-0.09,-1.04l-2.25,-3.59l-1.78,1.33l0.42,1.87l-1.25,-0.32l-1.57,0.63l1.41,4.47l-0.6,0.96l-2.18,2.13l-2.3,-0.67l-2.47,-3.1l-1.11,-4.05l1.94,-4.74l-0.52,-5.62l2.16,-3.56l3.7,-1.97l4.07,-0.61l6.28,0.76ZM506.85,207.27l-0.4,1.27l2.4,0.34l1.1,1.4l-2.86,3.98l0.26,3.92l0.68,1.04l1.38,0.46l-3.55,0.78l-1.53,-3.22l-2.4,-1.09l0.0,-1.62l1.62,0.3l2.19,-0.96l-0.5,-5.19l0.3,-1.11l1.32,-0.3ZM489.01,203.03l-1.38,1.35l-1.84,-0.86l-2.14,-4.74l-3.01,-2.17l3.98,0.47l1.6,-0.48l3.6,-3.36l1.21,0.73l-1.39,1.18l0.05,1.65l-2.23,0.38l0.31,1.26l7.79,2.07l2.08,3.97l2.89,0.93l0.59,0.91l-1.54,0.05l-2.32,1.98l0.95,-2.74l-4.27,-3.18l-2.42,-1.08l-2.49,-0.27l-0.44,0.4l0.41,1.56ZM486.82,263.79l3.02,-0.69l0.2,-1.29l-5.91,-0.51l6.77,-1.62l5.55,0.86l-0.09,1.01l-2.97,1.94l0.42,2.61l-0.99,1.07l1.26,3.67l-0.46,1.06l-1.56,0.79l-3.79,-3.1l1.12,-1.85l-2.57,-3.95ZM482.27,214.17l1.38,1.75l4.84,-0.53l2.0,0.41l-2.01,1.99l0.07,3.74l-2.22,0.64l-5.08,-0.69l-4.02,-2.98l-0.43,-2.02l1.36,-1.52l2.28,-0.87l1.82,0.07ZM465.25,252.46l4.23,5.0l-0.85,0.54l-0.19,1.28l1.91,0.77l1.1,1.4l-3.51,0.76l-1.84,1.08l-1.16,1.86l0.37,0.6l2.59,-0.14l5.08,-1.86l1.59,0.13l-1.54,1.81l-4.12,0.94l-7.84,-0.01l-2.41,-4.89l-2.61,-1.85l-1.69,-2.47l0.44,-1.54l-0.48,-1.12l-0.84,-0.35l-1.2,0.68l-2.42,-0.58l-0.19,-0.88l1.39,-2.77l1.86,-1.42l3.67,-1.02l0.91,-0.02l4.14,2.82l3.59,1.25ZM312.36,645.88l-1.06,0.44l-1.81,-3.12l-5.58,-4.18l-2.01,-6.8l-3.1,-1.88l-2.18,-4.67l0.09,-1.54l2.39,-1.01l5.1,4.01l2.03,0.81l0.58,2.81l2.14,1.35l2.37,4.72l0.87,3.69l-1.53,2.82l1.69,2.55ZM288.44,647.14l2.26,0.02l5.53,2.21l3.18,3.28l2.85,8.32l-0.82,2.0l3.61,2.99l0.17,2.28l-1.86,0.33l-0.99,0.89l0.64,1.84l3.5,1.47l-1.37,1.04l1.26,5.27l-0.99,0.92l-6.0,1.31l-4.58,-0.37l-3.89,-1.09l-6.9,-4.13l-1.18,-5.66l1.08,-2.6l-3.68,-4.74l-0.73,-2.78l0.42,-3.79l3.15,-5.04l2.55,-1.79l2.84,-0.42l-0.06,-1.76ZM268.84,562.64l-1.89,2.02l-3.42,0.6l1.91,-2.56l3.41,-0.06ZM262.3,573.88l-1.5,2.64l0.43,1.56l-1.47,0.72l-1.28,-0.65l-0.47,-1.65l1.06,-2.2l0.85,-0.53l2.37,0.11ZM260.24,581.78l0.07,0.69l-2.18,6.67l-1.8,-3.28l1.72,-3.9l0.7,-0.62l1.48,0.45ZM206.26,572.45l4.73,0.41l2.84,-1.65l5.87,-0.97l5.74,-3.67l-0.87,-1.31l-6.84,2.6l-4.11,0.83l-1.99,-0.11l-1.49,-1.05l-0.33,-1.06l1.02,-1.8l2.81,-1.23l2.6,-4.99l3.83,0.02l5.17,-1.92l1.27,-0.9l0.53,-1.37l-0.32,-2.36l-1.32,-0.98l-9.36,3.53l-3.97,-5.13l-1.9,-0.85l-8.06,-1.09l-3.7,-2.0l3.78,-2.71l-2.8,-3.63l2.77,-0.22l2.58,-1.35l1.38,1.24l1.2,-0.03l0.79,-0.81l0.2,-2.18l2.33,-1.42l5.96,-1.07l4.86,1.56l-0.43,2.04l0.36,0.51l2.52,0.18l2.0,2.31l4.24,9.09l9.54,0.25l1.85,1.56l3.14,-0.66l3.18,3.22l3.12,0.07l0.87,0.55l2.02,2.41l0.62,1.7l2.52,0.35l-0.29,1.58l-3.07,-0.39l2.53,4.29l-0.75,0.53l-3.52,-0.29l-0.51,-1.87l-2.11,-0.36l-0.1,1.91l-3.69,3.19l-0.17,1.24l0.61,0.34l2.82,-1.33l3.13,-0.36l0.94,0.39l-0.39,0.88l-1.4,1.35l-7.58,4.1l-3.22,0.61l-2.04,-1.08l1.84,-1.95l0.19,-1.32l-0.83,-1.01l-1.37,-0.03l-2.35,0.7l-1.52,2.11l-10.51,3.66l-2.4,1.91l-3.18,-1.07l-3.84,1.73l-7.96,0.0l-2.41,2.5l-4.96,-1.61l-2.68,-3.06l-0.47,-2.07l0.68,-1.49l1.69,-0.91l3.59,-0.11l2.44,3.0l1.67,1.11l1.79,-1.22l-0.32,-1.23l-0.99,-0.34ZM186.8,444.56l0.45,-0.68l-1.49,-2.17l0.39,-1.3l-0.46,-0.51l-1.29,0.27l-2.0,1.81l-0.17,-2.62l-0.89,-1.1l-4.16,3.48l-0.2,1.84l0.92,2.17l-0.14,1.12l-1.12,0.76l-7.75,-2.08l-3.46,-2.42l-1.43,-4.9l-3.65,-2.3l-0.7,-2.12l5.14,-0.26l-1.96,-2.7l-0.14,-1.31l0.57,-1.41l1.7,-1.48l6.48,7.45l1.78,1.08l1.15,0.19l0.45,-0.52l-0.48,-1.99l1.01,-1.35l-2.66,-3.42l1.49,-1.21l3.83,1.03l0.51,-0.52l-0.96,-2.41l-2.2,-1.98l-4.29,-1.76l1.68,-2.8l0.19,-1.79l-1.0,-1.65l1.25,0.01l3.93,2.95l0.65,2.8l0.93,0.96l4.7,2.18l3.08,2.82l3.4,-0.53l-1.64,3.09l0.26,0.58l1.24,0.09l1.86,-1.86l0.96,-2.21l7.67,7.13l0.25,-1.22l-1.23,-1.84l-0.04,-1.82l-4.18,-4.33l-1.33,-2.42l2.51,-4.84l-0.42,-0.55l-3.0,-0.6l0.3,-1.72l-1.59,-2.5l-0.09,-1.3l4.68,-2.55l1.79,-3.71l1.08,0.3l1.08,-0.48l4.09,3.79l2.49,3.48l5.44,4.15l1.21,2.08l1.77,14.03l-1.17,6.27l-2.7,2.57l-0.74,1.66l2.92,-1.53l2.41,-0.11l0.57,0.96l-1.88,3.02l0.43,2.05l3.05,3.04l-4.64,3.46l7.77,-0.51l1.7,0.38l0.21,0.58l-0.79,0.88l-2.36,1.15l0.43,1.25l5.87,-1.11l2.67,1.97l4.58,0.41l2.18,3.05l1.52,0.02l1.69,-1.79l3.68,0.03l2.4,-1.89l2.29,-0.66l2.31,0.02l1.62,1.57l5.83,0.0l-1.2,2.7l0.4,2.14l-2.6,3.78l-3.08,2.03l-4.88,0.93l-1.57,5.24l-4.42,2.53l-5.8,6.58l-2.85,1.89l-4.45,0.68l-0.97,-0.34l-0.7,-1.37l0.24,-1.89l2.26,-2.61l-0.14,-1.96l3.49,-5.27l1.64,-1.47l8.28,-3.29l0.25,-1.22l-0.56,-0.37l-4.7,1.56l-7.22,0.1l-0.61,-2.46l-2.09,-2.76l-2.27,-1.61l-0.54,0.48l1.71,4.14l-2.17,3.07l0.33,1.17l-2.33,3.37l-0.94,0.39l-0.82,-0.71l-1.07,-6.66l-1.32,-0.95l-1.27,0.67l-2.12,-1.45l-1.29,0.32l0.93,1.71l-0.91,0.48l-11.69,2.4l3.49,-3.54l0.11,-1.05l-2.09,-0.45l-4.19,1.62l-2.46,-3.58l2.13,-1.38l0.6,-1.12l-0.38,-0.58l-5.18,-0.01l-3.98,-4.14l-2.16,-3.81l5.26,-2.6l1.75,0.25l4.96,3.84l2.32,0.42l0.4,-0.62l-1.24,-1.75l-7.12,-5.0l-3.62,0.4l0.12,-1.14l-1.73,-0.84ZM250.72,592.71l-1.34,0.14l0.6,-1.29l3.89,-2.71l0.91,2.13l-1.48,1.05l-2.58,0.68ZM245.68,610.27l-7.29,11.45l-1.79,4.61l-0.96,-0.07l-4.25,3.76l-1.44,6.5l-1.96,1.1l-3.18,-0.17l-2.9,-1.52l-1.28,-2.91l-0.75,-5.76l0.93,-3.74l6.56,-4.25l6.7,-1.04l3.16,-2.43l-2.43,-0.34l-5.92,0.8l-1.05,-1.61l0.97,-2.54l2.38,-3.1l4.29,-3.57l2.72,-0.7l10.99,-8.73l2.45,-1.29l1.5,0.56l0.4,3.85l-4.38,4.34l-3.46,6.79ZM233.0,453.64l-2.42,0.75l-2.08,-0.67l-1.83,-1.51l-0.4,-1.28l1.65,-0.79l2.74,0.45l2.08,1.63l0.25,1.43ZM229.08,420.1l1.07,-1.33l-0.81,6.39l-1.08,-1.34l1.16,-2.96l-0.36,-0.76ZM227.18,427.36l0.9,1.02l-0.33,1.71l-2.69,8.1l0.08,3.82l2.3,4.82l-5.16,2.35l-1.05,-0.52l0.53,-1.37l-0.91,-1.41l-0.14,-1.91l0.69,-7.94l0.59,-1.9l3.95,-1.48l-0.12,-1.14l-1.54,-2.16l1.26,-0.55l1.66,0.81l0.58,-0.36l-0.59,-1.88ZM217.73,633.63l0.84,4.94l3.68,3.03l-0.63,2.98l2.31,1.7l-0.12,2.59l0.76,2.62l-2.68,2.02l-0.78,-0.27l-3.44,3.23l-4.55,1.59l-3.81,-0.43l-1.34,0.74l-0.92,2.85l-2.9,2.08l-2.03,0.6l-1.78,-0.5l-1.08,-2.42l0.46,-2.49l1.75,-1.6l4.84,-2.65l-1.96,-4.42l-1.19,-1.12l-3.84,-1.39l0.27,-1.63l6.01,-5.15l-0.1,-0.69l-1.98,-0.78l-5.21,0.05l-1.9,1.34l-3.18,6.1l-2.79,1.58l-3.71,4.15l-2.1,0.28l-0.83,-0.89l0.09,-1.72l1.07,-2.08l-1.06,-1.29l4.56,-6.11l-0.11,-0.61l-2.35,-1.34l1.48,-1.4l0.7,-4.55l3.57,-2.55l7.01,-2.99l-1.42,4.92l1.35,3.19l1.3,0.4l0.49,-1.22l-0.62,-2.32l1.71,-2.51l2.71,-2.15l3.18,-1.52l2.1,-2.29l3.57,-1.43l1.84,-1.48l1.22,1.1l1.55,11.92ZM215.01,599.17l-2.73,3.74l-1.0,2.44l0.19,2.11l-3.71,1.38l-3.28,-0.49l0.86,-0.62l1.84,-4.45l2.29,-2.53l2.66,-0.41l-0.35,-1.58l2.97,-0.59l0.27,1.0ZM135.93,362.62l5.04,-1.07l5.46,-2.81l-10.52,1.44l0.7,-0.99l2.1,-0.33l-0.4,-1.19l-1.02,0.0l1.29,-2.55l-4.52,2.06l-2.98,-4.46l0.3,-1.64l-1.52,-1.32l1.18,-3.57l1.65,-1.73l-1.66,-1.54l6.13,-0.31l2.15,-1.0l-3.23,-1.73l-0.32,-1.3l0.17,-1.39l1.84,-2.04l4.44,2.06l1.53,-0.27l4.28,1.52l-2.15,0.05l-0.4,0.52l0.58,1.78l2.85,3.16l-0.08,1.9l0.92,2.69l1.37,2.46l1.61,1.35l0.23,-3.83l-2.31,-4.09l0.74,-0.53l0.54,-1.94l5.9,-1.57l2.07,0.8l3.61,3.33l2.36,-2.65l-0.13,-0.63l-2.74,-1.59l-1.22,-3.4l-2.39,-0.15l-2.17,-3.79l1.61,-1.2l-1.5,-1.9l6.07,-4.18l1.72,-1.87l1.14,0.36l1.82,-1.31l5.25,-0.54l5.62,-2.31l2.97,-2.82l15.34,-9.13l6.69,-6.11l1.81,0.11l1.6,1.37l4.71,9.55l-2.13,1.43l-1.91,5.65l1.79,1.5l2.25,0.62l-5.6,2.96l-1.41,1.25l0.21,2.04l-2.57,0.95l-0.97,1.82l-2.39,0.74l-0.3,3.14l-1.43,0.71l-2.34,0.04l-0.31,0.65l1.82,2.18l3.31,0.78l3.46,-0.19l2.63,-0.92l4.15,-3.48l2.79,-0.95l-1.0,3.36l0.5,1.31l-2.73,1.18l-1.79,2.16l-1.4,0.58l-5.04,-1.88l-3.93,0.37l-3.88,-1.64l-1.52,-0.07l-0.38,0.56l2.79,5.77l-0.89,1.2l0.34,1.38l-1.19,0.73l-4.3,0.75l-4.21,3.42l-2.83,-0.85l-2.58,1.74l-6.15,1.23l0.39,1.26l3.38,0.07l11.26,-2.11l3.67,-1.39l1.72,1.66l0.32,3.05l1.01,0.99l-2.78,1.53l1.21,0.99l2.18,0.43l-3.22,3.07l-1.88,0.39l-10.39,-1.71l-0.88,1.14l0.85,1.06l3.36,1.73l2.96,0.68l1.03,1.09l-2.81,3.73l-1.39,0.8l-3.6,-0.88l-0.48,1.33l1.18,1.52l-1.58,0.62l-2.62,-1.09l-2.26,-3.66l-1.02,-0.42l-0.95,1.14l1.83,3.68l-3.4,-1.22l-3.3,-5.85l-0.78,-3.24l1.2,-3.09l2.34,-1.72l6.24,-0.92l0.38,-1.19l-8.74,-0.4l-0.74,2.4l-6.12,5.12l2.99,5.2l2.23,1.25l2.24,2.61l-1.56,1.28l2.39,1.64l0.47,2.76l-6.5,-1.25l-2.97,-1.34l-1.16,0.42l-1.74,2.41l0.12,0.61l3.52,1.51l2.19,3.27l-0.32,0.69l-3.93,0.62l-0.44,0.4l0.28,1.13l-5.54,-2.29l-0.46,1.5l1.42,1.35l-3.85,3.09l0.76,1.23l-8.08,5.09l-11.67,-10.15l-0.96,-2.05l2.41,0.38l0.74,2.43l0.63,0.24l7.1,-5.13l1.08,-1.38l5.88,-0.34l0.22,-0.74l-4.0,-2.75l4.14,-1.88l2.47,-0.44l4.61,1.35l-2.67,-2.47l1.81,-0.7l0.34,-1.25l-5.36,-0.4l-4.7,-2.63l-5.07,0.17l-2.03,-0.6l-0.65,-1.81l-2.11,0.44l-3.42,-2.03l2.91,-2.3l1.59,0.06l0.42,-0.4l-0.36,-1.38ZM212.42,555.14l-5.84,-0.08l-1.85,-1.32l1.52,-1.58l1.96,-0.44l4.21,3.42ZM203.39,487.59l0.22,1.65l1.79,0.0l-1.02,3.94l-1.58,2.41l-2.22,1.05l-3.14,0.24l-1.32,-0.57l-1.52,-3.0l-6.33,-3.83l7.3,-5.89l3.17,-0.34l4.37,2.2l1.48,1.32l-1.21,0.82ZM177.88,539.32l-4.43,2.83l-1.27,0.35l-3.13,-0.7l-0.99,2.08l-1.29,-2.32l2.05,-0.36l2.28,-1.77l4.92,-6.03l7.33,-4.08l3.9,-0.54l-2.99,5.48l-1.21,1.15l-2.02,0.51l-3.16,3.4ZM182.21,483.43l-2.71,0.37l-3.97,-0.32l4.83,-1.97l3.36,1.28l-1.52,0.65ZM150.14,558.23l-6.46,-1.86l-1.9,-4.86l7.33,-1.42l5.17,-2.22l6.32,-1.69l1.89,0.08l0.87,1.71l-0.96,1.21l-5.07,0.5l-0.5,2.23l-1.49,1.02l-3.97,1.09l-1.57,2.16l0.33,2.04ZM152.21,333.9l2.73,2.41l1.1,-0.27l0.55,0.45l1.31,2.12l-6.13,0.0l0.84,-0.06l0.35,-1.18l-1.24,-0.81l-1.05,-2.27l0.34,-0.81l1.21,0.41ZM134.01,378.91l3.3,-2.63l1.7,-0.62l1.21,0.66l0.02,2.21l-0.64,0.3l-2.89,-1.48l-1.36,2.28l-1.34,0.36l0.0,-1.09ZM111.36,422.72l1.61,-0.84l0.4,0.95l6.24,0.0l5.11,-1.16l3.02,0.63l0.64,0.91l-1.82,2.99l-3.46,-0.19l-3.17,1.06l-1.42,-0.76l-4.41,-0.08l-2.73,-3.51ZM113.08,421.29l-3.0,-0.39l-5.16,-2.64l-2.77,-0.56l-1.48,1.42l-0.94,0.1l-6.13,-3.44l1.9,-1.1l3.76,-6.4l1.75,0.7l5.45,-0.75l-2.13,0.89l-0.12,0.64l2.09,1.65l5.83,-5.5l-0.66,2.25l6.65,1.73l0.44,-1.25l-1.24,-0.75l5.11,-2.74l2.08,-0.28l1.14,1.87l-1.82,1.54l0.01,0.71l1.74,0.69l2.44,-0.99l5.67,1.33l0.57,1.13l-2.58,3.02l-0.89,-0.13l-1.47,-1.78l-3.51,-2.24l-4.11,-0.08l-0.4,1.33l1.66,0.62l-0.47,1.01l0.42,1.33l2.88,0.26l1.24,3.0l3.32,-0.45l-1.11,1.78l-1.94,1.08l-4.97,0.35l-2.26,0.84l-1.99,-2.53l-4.99,2.74ZM125.46,400.77l-2.35,0.84l-1.03,-0.11l2.88,-2.45l1.27,-0.22l0.48,0.81l-1.25,1.13ZM109.72,439.85l7.05,3.87l-2.1,-0.41l-0.51,0.38l0.34,1.25l1.81,0.27l2.64,1.97l1.76,0.49l-2.0,0.82l-1.65,-0.62l-5.14,-2.89l-3.82,-3.36l-1.98,0.85l-0.08,0.69l1.46,1.44l0.67,1.8l4.15,1.04l1.32,1.65l1.48,0.63l3.99,0.35l2.71,2.51l1.15,0.02l-0.28,1.16l-2.85,2.13l-1.95,4.51l-1.44,0.53l-6.54,-1.36l-0.48,0.39l0.31,1.16l5.48,1.32l1.38,1.08l1.09,4.29l-0.18,2.33l-0.72,1.09l-2.97,-0.86l-3.41,0.12l-0.38,1.25l1.88,0.62l4.35,-0.23l3.44,3.22l1.62,0.22l-1.73,1.62l-6.97,-1.13l-2.7,1.2l-2.27,-2.1l-2.93,-7.69l0.1,-4.47l-3.01,-2.49l1.3,-1.49l1.75,-4.78l1.54,-1.01l0.64,-1.72l-3.2,-9.37l5.91,-2.32ZM114.76,430.09l1.97,0.5l0.69,1.21l2.46,-0.44l2.43,1.4l-1.39,-0.23l-3.74,1.95l0.63,1.43l3.98,0.86l0.45,1.03l-7.15,1.64l-2.14,-0.39l-6.6,-3.16l-0.84,-1.22l1.47,-3.9l1.53,-1.07l1.8,-0.07l2.09,0.86l2.36,-0.42ZM101.81,483.27l2.19,1.32l-1.55,2.26l0.12,0.67l3.39,1.59l0.99,2.68l-2.36,0.47l-2.67,2.05l0.18,1.44l-0.49,0.55l-1.2,0.44l-7.81,-1.1l0.86,-1.78l2.6,-1.32l0.44,-1.47l-0.85,-2.15l5.39,-2.4l0.78,-3.25ZM4.32,389.19l-1.63,0.29l-1.46,-0.85l-0.48,-1.35l4.5,0.99l-0.93,0.91Z", "name": "Scotland"}, "UKL": {"path": "M288.06,1103.72l-0.21,-2.02l1.0,-0.8l-0.59,-2.09l5.18,-1.12l3.72,-2.72l6.33,-1.5l2.89,-2.27l0.23,-2.62l1.27,-0.4l-0.17,-1.04l-0.84,-0.6l0.8,-0.82l4.49,0.12l4.74,2.08l4.29,-0.87l-0.11,-1.47l6.45,1.43l0.98,-0.87l-0.5,-3.21l5.04,-1.71l4.92,-5.57l0.92,-0.01l2.76,1.8l0.62,-0.36l-0.17,-3.15l2.96,-1.2l11.76,-0.01l1.66,-2.11l4.25,-1.64l4.32,-3.86l6.03,-1.49l10.35,-7.38l5.03,-5.92l2.59,-4.13l1.21,-2.78l1.48,-7.51l1.91,-3.98l-0.6,-2.7l0.52,-1.99l3.35,0.89l6.06,-3.22l-0.21,-1.61l-2.46,0.04l-6.61,1.61l-5.05,-5.2l-0.9,-1.63l0.26,-2.7l1.36,-2.79l3.62,-3.39l0.63,-2.04l4.7,-2.68l1.26,-1.7l-2.69,0.01l-2.78,1.22l-6.42,-6.45l-1.97,-3.72l2.72,-2.21l-1.29,-4.44l0.17,-2.14l5.54,-3.38l-1.04,-1.42l-2.39,1.25l-1.71,-1.38l-2.15,1.33l-7.26,-0.51l-6.25,1.59l-3.17,1.58l-6.07,-0.02l-3.5,1.99l-3.12,2.96l0.3,0.9l-1.2,0.67l-0.89,1.54l-0.03,1.51l0.89,1.22l-1.85,1.23l-6.8,-3.18l-2.82,1.61l-6.59,-0.02l-2.74,1.88l-1.73,-0.01l0.67,-0.9l-0.17,-1.23l1.61,-2.29l11.94,-11.39l6.23,-1.85l6.98,-4.45l1.77,-2.42l5.59,-2.99l1.29,-3.92l0.39,-6.11l0.46,-0.15l0.56,1.42l0.68,0.08l1.54,-2.84l3.35,-3.31l2.56,-1.17l4.84,-6.25l4.66,-1.79l2.62,-0.19l2.29,0.66l5.06,-1.82l2.92,-2.01l9.36,-3.18l2.88,0.0l0.37,-0.55l-0.88,-2.15l-2.91,-2.93l2.48,0.47l2.49,1.76l2.01,-0.61l1.67,0.45l4.55,3.79l10.07,-0.18l3.6,-0.69l16.41,-6.62l3.46,-0.1l4.9,2.39l1.87,2.18l11.09,5.9l2.96,3.22l0.88,-0.55l0.06,-1.99l4.98,1.15l5.5,3.62l3.17,2.98l0.42,1.88l-3.35,1.89l-0.42,1.59l5.13,4.88l2.25,4.16l1.39,5.14l3.29,4.03l4.42,0.99l3.34,1.66l0.85,2.27l-0.03,2.53l-4.99,2.23l-6.28,-4.49l-2.24,-0.28l-4.15,0.92l-3.05,-2.13l-2.76,-0.15l-7.77,4.2l-1.78,2.46l-2.35,1.51l0.37,3.56l-2.65,3.09l1.17,4.26l2.48,1.42l3.0,0.3l1.76,1.83l4.53,0.86l1.85,2.01l1.83,0.91l-0.97,1.34l-3.56,1.07l-1.32,2.63l-0.61,4.22l-2.38,1.45l-1.45,4.15l-3.72,2.41l-0.16,1.98l1.36,2.54l-0.59,1.79l0.77,0.62l2.25,-0.27l1.45,-1.73l4.67,-2.81l2.94,2.7l-4.49,4.82l-6.67,0.36l-7.23,2.96l-2.1,2.3l-0.23,1.66l1.48,3.23l8.32,5.22l2.88,2.5l9.73,0.68l-0.04,0.94l-2.85,2.05l-0.86,1.88l1.04,2.59l2.68,0.97l-4.52,0.85l-3.5,2.62l-1.47,2.84l-3.6,4.39l0.02,1.19l0.8,0.93l1.91,0.3l-0.73,1.0l-3.42,1.53l0.12,0.93l1.71,1.28l-0.87,1.04l-0.88,3.5l3.15,2.67l0.6,3.9l2.6,4.07l4.64,4.35l1.31,2.62l1.91,1.4l2.64,0.27l5.04,-2.28l8.33,6.16l3.17,3.83l3.33,0.47l4.19,2.32l-2.14,3.16l-0.47,1.8l0.91,3.18l-1.2,2.69l1.96,5.51l-1.93,1.37l1.58,5.06l-2.23,2.2l-1.58,1.04l-4.15,0.82l-4.8,2.76l-3.57,1.06l-7.21,0.41l-2.98,-2.29l-3.61,3.64l-7.72,3.93l-2.39,2.06l-1.12,2.26l-2.3,0.75l0.88,2.84l-0.55,2.21l-1.28,1.24l-2.97,-0.53l-6.02,2.1l-21.48,-1.63l-1.44,-0.69l-4.11,-4.67l-5.07,-3.51l-3.02,0.44l-3.36,-2.08l-0.82,-1.06l0.55,-0.79l-2.5,-6.44l-6.43,-6.88l-11.97,1.15l-2.01,1.4l-0.22,1.34l1.87,2.84l-2.88,0.0l-0.67,0.9l-0.48,-0.85l-1.99,-0.76l-1.6,1.54l-4.38,-1.17l-3.95,2.67l-2.54,-0.76l-0.66,1.21l-7.22,-1.91l-0.41,-1.0l1.59,-1.29l-1.0,-4.1l2.66,-0.71l1.32,-1.7l0.19,0.8l1.5,0.9l11.21,-1.85l2.07,-2.75l0.04,-1.84l-1.1,-0.46l-1.58,1.35l-4.17,-0.22l-4.63,-2.15l-1.55,0.69l-6.65,0.84l-1.74,-0.56l-2.26,-1.49l-2.75,-3.36l4.47,0.15l1.1,-1.17l-0.33,-0.65l-3.01,-0.22l-1.19,-0.72l-0.59,-1.02l1.07,-3.23l-0.67,-1.04l-1.09,0.26l-2.23,2.73l-2.37,-1.56l-1.67,0.23l-0.59,1.41l1.57,1.87l-2.32,1.04l-9.77,-0.62l-6.33,1.09l-2.84,1.7l-0.36,2.85l-0.89,0.4l-1.71,4.39l-1.95,-0.92l-2.04,1.59l-8.97,0.1l-6.66,5.46l-6.81,-2.2l-1.69,-1.01l0.58,-1.28l-1.26,-2.24l-4.43,-1.07l-1.12,-1.58l6.42,0.76l0.41,-0.57l-0.36,-1.09l4.26,0.79l4.13,-1.65l4.13,-0.71l2.18,-1.22l1.72,0.32l0.57,-1.08l-2.51,-2.26l-0.44,-2.5l1.27,-2.07l3.14,-0.65l0.32,-1.25l-0.6,-0.35l-3.4,1.39l-6.04,0.96l0.18,0.76l2.14,0.37l0.3,0.77l-0.46,1.57l1.16,1.19l-1.34,1.91l-8.4,1.33l-12.2,-1.33l-1.54,0.49l0.5,2.17l-1.3,0.65l-0.06,-1.92l-3.93,-2.5l2.0,-0.79l2.21,-2.13l4.37,-1.02l1.48,-1.23l0.41,-1.47l-0.94,-6.55l-2.03,-2.49l-0.92,0.56l-1.41,-0.95l-3.33,-0.39l-1.47,-0.82l-6.55,1.52ZM357.65,950.37l-0.34,-3.45l-1.83,-1.51l-4.34,-6.08l1.07,-10.14l-0.95,-3.36l1.16,-0.7l11.0,-3.05l8.56,0.85l3.9,2.02l0.98,3.88l2.65,1.32l0.03,2.03l1.69,1.84l1.27,3.17l5.38,-0.51l1.79,-1.65l1.88,0.83l4.26,0.48l-4.39,5.83l-6.28,2.15l-2.11,1.33l-2.13,2.07l-0.32,2.41l-10.33,5.85l-3.91,-0.73l-1.56,0.8l0.24,-2.64l2.17,-2.81l-1.1,-1.01l-1.65,0.52l-2.76,2.54l-2.99,-2.23l-1.06,-0.03ZM343.24,934.63l2.62,-0.08l2.89,2.57l2.66,5.07l-0.33,0.93l-1.08,-0.06l-1.67,-1.22l-2.62,-3.52l-3.84,-0.29l-1.36,-2.36l1.95,-1.42l0.79,0.38Z", "name": "Wales"}, "UKK": {"path": "M253.14,1305.23l-0.55,-2.93l2.56,-3.4l14.3,-6.14l1.65,-0.04l2.57,2.07l2.17,0.77l1.92,-1.04l2.42,-4.13l3.1,-0.04l3.21,-1.5l9.99,-8.79l4.24,-2.14l0.65,-2.26l-0.63,-3.53l2.64,-0.43l6.24,-2.97l1.01,-2.22l1.16,-8.62l0.76,-1.42l1.54,-1.03l1.86,-0.06l2.05,-1.52l0.94,4.38l0.58,0.33l1.04,-0.7l1.46,0.72l5.31,0.6l-1.08,-2.13l-4.33,-1.65l-1.15,-1.25l0.52,-1.71l-0.43,-1.59l8.22,-0.07l2.78,-0.83l3.75,-5.62l-0.21,-2.9l1.95,-0.19l6.14,-4.42l1.8,-3.53l5.23,-3.84l2.41,-4.2l-0.41,-10.03l0.94,-4.62l1.82,-3.83l-0.46,-4.58l7.43,0.0l3.54,1.62l5.24,0.46l3.24,-1.34l8.07,-7.82l-1.88,-6.28l-1.7,-2.24l2.94,-0.07l0.8,-1.45l-0.16,-1.6l-1.55,-1.74l6.28,-2.09l15.79,-1.24l4.87,-1.26l6.3,-0.01l6.12,-1.63l11.15,2.43l7.02,-0.19l10.7,2.07l4.44,2.73l9.9,-0.37l9.35,-1.98l9.14,-0.16l2.31,-1.29l-0.66,2.24l1.74,0.66l1.52,-2.45l0.47,-2.39l-1.36,-9.67l1.98,-0.43l0.41,-2.85l2.4,-3.11l-1.06,-1.33l1.39,-1.21l2.89,0.35l10.55,-10.11l7.18,-1.99l1.82,-1.58l7.6,-10.85l2.31,-1.26l2.16,-4.74l7.86,-7.64l5.08,-1.71l1.66,-1.27l0.67,-1.33l-0.18,-1.56l-1.42,-1.27l-0.64,0.24l-0.35,1.99l-1.37,1.07l-5.45,1.27l-3.44,4.17l-5.17,2.87l-6.8,6.99l-0.55,-2.96l-0.88,-1.4l1.92,-1.29l-1.96,-5.74l1.19,-2.51l-0.87,-2.53l0.38,-2.23l1.89,-2.49l1.44,-5.0l1.37,1.78l1.77,-0.96l0.95,0.2l0.95,-1.19l2.19,-0.76l2.58,0.31l1.51,-2.46l3.0,-0.34l3.29,-1.82l0.07,-2.4l-1.84,-1.81l-0.63,-2.19l-1.62,-1.05l1.58,-6.41l1.16,0.51l1.18,2.25l1.42,0.58l2.14,-0.69l2.02,-1.94l2.0,-0.27l3.01,4.75l5.0,1.27l1.8,-0.32l2.12,-2.9l2.65,0.32l1.55,-0.89l-1.21,-1.91l0.8,-3.32l3.37,-0.15l-2.08,3.52l1.2,1.75l2.51,-1.32l6.57,0.85l5.13,-2.99l2.34,-0.45l5.32,0.23l2.97,2.29l1.27,0.05l0.93,-1.56l-0.18,-1.95l-1.89,-2.39l-1.21,-0.61l1.47,-1.0l2.74,0.32l3.02,-3.41l1.44,-0.65l1.61,1.69l1.81,0.57l0.78,2.18l2.99,4.11l1.67,0.5l3.28,-0.23l-3.28,4.17l-0.43,3.45l3.44,2.01l0.39,1.03l-2.76,2.39l0.52,2.02l-1.63,1.22l-1.6,3.37l-0.28,6.56l-2.49,2.46l1.37,1.94l1.38,6.5l2.72,2.79l-2.87,-0.21l-0.75,1.39l0.37,2.55l2.37,1.99l-0.39,2.03l-1.6,1.56l0.22,3.11l1.01,0.91l1.66,-0.05l3.68,5.38l1.58,0.44l0.71,3.18l2.24,3.16l1.92,1.19l0.51,2.35l-2.63,0.68l-0.91,1.42l2.6,3.99l3.01,1.36l0.97,3.22l-3.46,0.76l0.55,2.99l-1.59,2.97l0.87,2.73l-0.53,0.5l-3.63,-1.38l-1.76,0.6l-2.36,2.07l-4.43,-0.66l-1.82,0.88l1.02,3.72l2.58,3.83l0.59,2.3l-0.42,2.62l2.63,2.18l-0.77,2.6l0.95,3.6l-0.14,2.22l2.09,1.83l-2.01,2.55l1.77,2.26l-0.74,1.56l-3.55,1.0l-3.71,-2.81l-3.62,-0.34l-6.01,-1.66l-2.59,-1.89l-1.08,0.39l-0.77,1.21l-0.83,-1.23l-4.98,0.72l-2.2,1.34l-0.11,0.57l3.71,5.08l2.43,2.24l1.96,0.28l2.09,-1.17l2.22,0.38l-0.44,2.17l-2.44,1.94l0.55,2.92l2.42,0.14l0.73,3.61l-0.89,1.46l-0.21,2.12l2.04,3.92l4.68,-0.86l0.18,2.66l4.65,0.0l0.17,0.84l-3.26,0.49l-4.82,1.77l-7.51,-0.76l-3.49,1.27l-3.38,2.67l-0.89,-2.38l-6.15,-0.75l-1.03,-1.9l-0.92,-0.32l-3.87,4.75l0.36,0.63l1.14,-0.12l2.79,-1.34l2.71,3.39l4.33,0.59l0.39,0.59l-0.56,1.75l1.44,1.14l-2.58,2.66l0.04,1.71l-1.26,0.49l-6.94,0.12l-7.98,-2.84l-15.97,-1.51l-2.91,-1.52l-2.08,0.18l-3.5,1.04l-2.16,3.64l-0.44,2.83l1.02,1.25l1.93,0.53l0.16,1.06l-1.86,2.99l-0.06,-3.84l-2.19,-3.16l-18.13,-11.66l-14.99,-4.71l-8.68,1.18l-3.12,1.71l-1.9,0.19l-3.4,-0.76l-5.66,3.17l-3.55,-0.84l-8.11,2.08l-3.26,4.27l-6.11,2.27l-3.15,-0.44l-1.05,-0.84l-2.19,-4.39l-1.8,-1.31l-0.77,0.56l-0.01,1.21l1.12,1.18l1.75,5.1l-4.02,4.64l-2.15,5.53l0.08,2.47l1.37,4.26l-3.55,0.56l-1.49,0.93l-0.76,1.84l0.83,2.39l5.11,0.77l-0.89,2.12l-1.87,1.12l-0.62,2.84l-0.74,0.44l-2.46,-1.26l-0.62,0.23l-0.58,2.36l-3.54,1.26l-1.12,1.22l-1.93,7.13l0.59,2.68l-0.96,0.42l-4.81,0.95l-4.85,-1.2l-1.35,1.07l-7.97,-7.52l-6.75,-4.79l-4.2,1.5l-2.21,1.56l-1.61,-0.54l-1.08,-0.79l0.12,-1.74l-3.62,-1.52l-0.75,-1.44l1.08,-1.94l-0.37,-0.59l-3.97,0.02l-0.97,-0.56l-1.5,-2.68l-0.6,-1.7l2.63,-5.03l-2.09,0.58l-1.53,-0.64l-1.5,2.04l-2.08,0.69l1.6,2.58l-0.88,1.73l-5.07,-0.04l-0.34,0.66l1.83,1.89l4.78,-0.64l1.02,0.64l-2.08,0.49l-0.31,1.16l2.07,0.33l0.11,0.92l2.02,0.0l-1.55,1.16l0.37,1.89l-1.22,-0.07l-1.6,-2.79l-1.68,-0.95l-7.61,-1.67l-4.14,0.41l-6.25,3.3l-3.31,1.08l-14.19,0.7l-0.89,0.78l-1.09,-2.85l-0.94,-0.34l-5.16,1.5l-1.14,1.03l0.56,2.39l-2.08,2.03l-0.33,0.96l0.59,1.77l-1.78,3.22l-4.29,-0.52l-4.77,2.96l-3.8,1.1l-4.54,5.87l-0.64,-0.87l-0.65,-4.18l-1.44,-0.91l-1.72,0.4l-0.23,2.55l-1.08,1.37l0.18,1.04l1.07,0.89l-2.43,1.35l-0.52,2.65l-3.62,1.89l4.88,1.03l1.09,2.91l-3.38,4.89l-3.43,-0.03l-0.83,0.54l-2.57,2.56l-1.23,3.05l-4.13,-3.56l-0.64,-3.9l-4.54,-6.03l-7.05,-3.23l-3.54,-0.55l-4.48,-2.02l-4.16,0.77l-1.94,1.55l0.51,3.46l-0.81,1.3l-2.68,1.51l-7.52,1.32l-2.99,-0.98l-0.73,-2.77l1.72,-1.11l-0.71,-1.87ZM341.93,1181.83l0.36,1.42l-0.13,1.34l-0.34,-0.39l0.11,-2.37ZM201.75,1326.67l-1.1,0.06l0.55,-1.68l0.75,0.97l-0.19,0.65ZM198.3,1322.87l-0.56,0.28l-0.52,-1.44l1.0,0.64l0.09,0.53Z", "name": "South West"}, "UKJ": {"path": "M584.61,1203.25l0.11,1.08l1.34,-0.02l1.32,-1.43l2.34,1.83l6.12,1.69l3.54,0.34l2.26,2.22l1.51,0.6l4.1,-1.07l1.19,-2.18l-1.77,-2.29l2.03,-2.71l-0.69,-1.19l-1.44,-0.77l0.12,-2.16l-0.93,-3.55l0.75,-2.76l-0.76,-1.18l-1.81,-0.92l0.38,-2.58l-0.63,-2.45l-2.64,-3.96l-0.84,-3.15l5.59,0.38l2.51,-2.13l1.51,-0.52l3.87,1.33l1.01,-1.29l-0.92,-2.48l1.57,-2.93l-0.46,-2.96l3.0,-0.28l0.46,-1.68l-1.3,-2.95l-2.94,-1.26l-2.36,-3.63l3.48,-1.58l-0.57,-3.09l-2.03,-1.33l-2.14,-3.03l-0.69,-3.2l-1.73,-0.6l-3.71,-5.43l-2.42,-0.45l-0.19,-2.74l1.54,-1.41l0.46,-2.4l-2.56,-2.42l-0.21,-1.91l0.18,-0.66l2.58,0.49l0.89,-1.21l-2.76,-2.96l-1.42,-6.58l-1.26,-1.32l2.43,-2.55l0.29,-6.63l1.48,-3.04l1.67,-1.2l-0.5,-2.07l2.81,-2.61l-0.63,-1.81l-3.16,-1.61l0.25,-1.89l3.95,3.0l1.24,-0.33l0.52,-1.1l2.92,-0.21l0.67,-1.86l2.11,-0.37l0.99,-1.34l1.31,-7.29l2.08,-3.02l2.5,-0.3l0.45,-1.92l0.58,-0.09l1.45,0.11l2.34,1.77l2.2,-0.31l0.75,-1.76l-1.54,-1.27l2.34,-1.57l1.52,-2.91l6.74,7.04l-5.63,1.78l-0.06,0.7l0.91,0.58l-0.22,3.53l2.76,7.01l1.24,0.65l6.16,-0.21l2.0,-1.13l1.98,-0.19l2.98,-2.66l-2.57,-1.15l1.49,-1.5l1.82,-0.97l5.15,-1.12l1.24,-1.27l2.78,0.16l3.42,-1.22l3.84,6.17l1.4,0.03l3.1,-2.45l0.19,-2.07l2.46,-1.02l-0.18,-1.21l-2.01,-1.53l-2.2,-2.94l4.43,-1.34l1.52,-2.7l2.4,0.56l1.52,-1.79l2.85,0.04l6.22,-3.46l2.45,1.74l-0.7,3.43l3.71,3.25l1.06,2.1l-3.63,2.45l-0.02,1.41l-1.89,0.76l-1.59,1.96l0.26,0.65l1.58,0.2l0.51,0.72l-0.35,2.49l-1.7,2.21l1.0,2.81l-2.39,2.92l-1.54,3.86l5.54,3.52l2.09,-0.31l3.41,2.75l2.27,3.35l-1.44,-0.07l-2.21,2.17l-2.85,-0.91l-3.31,-0.19l-1.65,-1.74l0.07,-1.65l-2.77,-1.04l-1.29,0.34l-1.44,2.84l1.76,2.15l1.27,0.26l1.42,1.27l0.44,3.06l1.16,1.37l2.8,1.15l3.53,-0.03l1.97,1.85l2.3,-0.67l0.96,0.36l-1.78,1.5l-0.35,1.43l0.95,1.66l0.18,2.06l3.46,0.13l-2.23,3.5l-0.21,2.21l0.72,2.17l2.11,1.87l1.83,4.53l-1.1,6.22l-1.01,2.32l2.04,2.18l2.7,0.63l0.08,1.52l0.83,1.13l2.83,0.71l4.62,3.08l2.96,0.61l1.02,2.18l-1.42,2.73l0.24,2.65l0.53,0.34l1.86,-0.73l2.12,-3.68l1.82,-1.14l1.83,2.0l-0.11,2.67l0.58,0.38l3.14,-1.22l2.25,3.96l2.09,1.71l2.59,-0.33l1.67,-2.16l3.32,-0.56l1.6,-1.63l1.99,0.13l1.2,1.07l0.51,3.18l2.5,-0.22l2.03,1.37l2.16,-0.67l0.51,-2.78l5.08,-5.11l1.2,-3.89l-0.67,-3.32l5.13,-5.91l4.18,1.29l4.0,-0.79l1.25,1.95l2.05,0.41l8.05,-1.59l1.84,-2.34l5.48,-1.26l13.71,1.67l2.09,2.13l-0.52,1.21l-6.11,-0.35l-2.9,2.22l-4.76,1.51l-0.09,0.64l1.88,2.12l8.51,0.42l3.5,0.77l0.44,-0.57l-1.02,-2.73l0.28,-0.73l1.2,0.04l1.13,3.4l2.47,2.89l18.43,1.74l10.82,-2.77l27.82,-2.15l1.75,0.88l-0.72,3.42l-1.09,1.79l-3.38,0.27l-0.87,0.85l3.06,11.95l-0.7,4.26l-1.71,3.55l-2.24,2.25l-5.68,1.63l-2.4,1.51l-3.86,0.27l-2.35,2.13l-1.58,0.55l-5.69,0.13l-3.6,1.44l-3.48,2.67l-5.32,6.78l1.03,7.34l-2.55,0.84l-12.26,-3.38l-3.66,0.95l-8.58,6.96l-3.4,1.3l-18.73,3.34l-3.89,1.31l-2.0,2.7l-2.94,1.65l-3.11,3.68l-3.01,0.04l-5.63,-1.46l-3.97,-0.11l-2.29,-1.61l-5.32,-0.68l-17.94,-5.47l-2.94,-0.25l-2.39,1.01l-3.27,-1.02l-11.02,3.32l-14.78,0.0l-14.19,3.95l-2.34,-1.09l-1.52,1.47l0.22,3.21l-1.37,0.64l-9.6,-4.67l-0.42,-0.45l0.34,-0.81l3.46,-1.48l0.27,-1.09l-3.78,-2.77l-1.63,0.8l0.4,-1.57l-1.75,-0.81l-2.9,-0.46l-4.43,0.4l-3.23,6.93l-1.91,0.2l-1.42,-1.34l2.3,-3.72l0.33,-2.05l-1.78,-0.74l-6.77,0.72l-0.12,0.71l3.39,2.65l-0.07,3.06l-1.84,0.67l-2.81,-1.17l-1.27,-1.82l-4.77,-2.7l-4.0,-1.35l-3.32,-3.35l-11.04,-5.19l-0.57,0.36l0.25,1.08l3.5,1.36l8.74,8.35l0.48,2.36l-8.54,1.29l-0.1,0.72l1.0,0.87l-3.66,0.57l-3.23,1.33l-3.02,-0.4l-3.32,4.76l-3.38,-1.41l-5.86,-0.94l-0.66,-1.66l-4.53,0.0l0.22,-1.97l-0.48,-0.63l-4.55,0.92l-1.75,-3.42l1.14,-3.39l-0.83,-4.12l-2.41,-0.14l-0.44,-2.3l2.36,-1.73l0.55,-2.73l-3.09,-0.95l-2.35,1.21l-1.24,-0.19l-2.26,-2.08l-3.43,-4.7l1.61,-1.01l4.69,-0.68ZM827.4,1160.64l-1.9,0.67l-11.56,-1.21l-3.32,-3.92l1.03,-2.91l1.38,-0.74l10.58,3.06l3.43,2.55l0.72,1.47l-0.37,1.04ZM664.91,1227.89l0.0,0.18l-6.3,-0.89l1.85,-0.72l2.13,-3.1l0.76,0.03l0.76,0.88l-1.02,1.84l1.83,1.78ZM623.05,1234.61l0.16,1.25l2.31,-0.29l5.0,-4.47l2.03,-1.19l1.79,-0.1l13.05,4.47l3.03,0.11l0.83,0.53l-0.03,1.37l1.39,0.28l1.62,2.45l-0.93,0.81l-4.57,1.36l-2.54,1.89l-0.81,1.25l-0.22,4.07l-9.32,2.31l-2.99,-0.72l-14.78,-9.13l-1.16,-0.36l-5.03,0.97l1.22,-1.87l3.31,-2.39l6.66,-2.62Z", "name": "South East"}, "UKI": {"path": "M716.63,1157.39l-4.59,-3.04l-2.59,-0.57l-0.98,-2.75l-2.67,-0.55l-1.75,-1.87l1.0,-1.78l1.13,-6.4l-1.84,-4.72l0.92,-2.61l1.69,0.65l7.27,-0.4l4.73,-2.32l5.72,-1.12l1.36,-3.15l1.96,1.94l3.87,-1.44l2.15,-2.5l11.33,1.31l0.02,3.15l2.81,1.42l0.95,1.9l4.85,2.34l1.22,-0.31l1.34,-1.36l11.26,-1.41l1.94,3.76l1.43,1.29l1.87,0.52l2.08,3.92l-4.35,1.35l-0.72,1.12l-2.34,-0.02l-0.45,2.28l-2.05,1.65l0.25,1.71l-0.82,1.43l-4.39,4.59l0.63,3.51l-1.13,3.67l-4.97,4.94l-0.38,2.63l-1.72,0.53l-1.95,-1.38l-1.81,0.49l-0.59,-3.11l-1.65,-1.36l-2.31,-0.15l-1.92,1.75l-3.27,0.54l-1.59,2.11l-1.93,0.35l-1.79,-1.43l-2.64,-4.28l-3.16,0.99l-0.01,-2.45l-2.17,-2.36l-2.69,1.3l-2.22,3.77l-1.01,0.34l-0.18,-2.02l1.42,-2.94l-1.41,-2.73l-3.12,-0.71Z", "name": "London"}, "UKH": {"path": "M700.34,1109.67l0.41,-1.29l-2.37,-3.36l-3.74,-3.06l-2.11,0.3l-2.94,-2.2l-2.04,-0.67l1.35,-3.4l2.43,-2.94l-0.93,-3.19l1.65,-1.93l0.38,-2.77l-0.77,-1.28l-1.32,-0.3l1.07,-1.32l2.06,-0.76l-0.23,-1.33l4.04,-3.15l-1.34,-2.6l-3.58,-3.14l0.68,-3.49l-2.57,-1.83l1.59,-2.66l-0.8,-4.17l0.12,-0.46l4.06,-0.75l2.72,2.08l1.51,0.26l1.06,-0.5l0.78,-1.6l0.0,-2.5l1.74,-2.07l4.02,-1.09l-0.3,-1.9l-2.01,-2.79l0.08,-1.57l4.83,-1.88l0.98,-1.65l2.9,-1.92l3.73,-4.11l0.45,-1.31l-1.29,-4.27l-4.83,-2.4l0.68,-2.67l-1.43,-1.75l0.11,-1.67l-0.45,-0.42l-3.93,0.46l-0.79,-0.5l0.61,-4.74l-1.77,-2.89l1.37,-0.52l2.68,0.75l2.91,-0.03l7.53,-3.08l4.67,1.84l5.18,-0.98l1.63,1.63l1.88,-0.28l1.88,0.65l3.33,-1.52l1.68,0.19l2.6,-0.93l4.33,1.23l3.13,-0.12l1.49,-1.15l0.79,-1.62l-0.32,-3.52l0.4,-0.36l3.21,-0.31l4.41,-1.97l4.49,0.35l6.64,-4.06l0.3,-1.33l-1.25,-1.37l1.22,-2.96l3.67,0.24l1.26,0.6l2.52,2.9l1.27,0.54l0.56,-0.37l-0.42,-2.53l5.02,-5.7l1.62,-6.08l2.45,-4.76l2.89,-2.46l4.17,-1.61l4.58,-0.73l4.16,0.14l0.03,-1.05l1.12,-0.34l5.6,1.38l7.42,0.01l11.46,3.15l4.16,-1.5l-0.09,-0.81l22.41,4.44l10.44,4.4l21.43,13.49l4.45,5.09l4.3,12.21l-0.54,2.37l0.53,1.95l0.05,6.42l2.02,5.48l-1.4,2.02l-2.18,6.03l-0.13,2.26l-3.81,8.27l-4.64,6.46l0.02,8.2l-3.74,12.98l-7.0,2.78l-1.37,1.26l-1.59,-0.5l-0.73,2.43l-3.29,3.77l-7.6,6.96l-5.71,-6.1l-2.68,-0.78l-4.41,-2.89l-2.36,-0.4l-0.47,0.39l0.15,1.1l4.94,3.53l4.83,1.14l0.08,2.12l-1.61,-0.32l-3.83,0.71l-3.55,-1.57l-8.71,1.93l2.66,1.34l14.43,0.76l1.24,-0.56l-0.18,1.26l-6.71,5.71l0.04,0.64l1.18,0.74l4.6,0.9l1.63,-1.53l0.08,1.44l-0.93,1.66l-4.85,3.74l-4.4,2.46l-2.74,0.96l-7.44,0.55l-6.02,-7.7l-0.54,2.4l-1.15,1.1l-3.12,1.26l-3.32,2.37l-1.22,4.02l-3.13,1.54l-3.66,-0.85l-2.33,0.21l-5.99,2.26l0.02,0.73l4.25,1.27l1.53,1.82l2.38,-1.94l5.5,-1.01l5.16,-2.61l1.26,-0.2l1.09,0.93l-0.66,3.02l1.07,3.02l-1.06,1.61l-0.24,3.17l-2.07,1.76l3.39,0.65l-2.18,3.04l-4.35,3.27l-4.87,2.53l-3.78,0.99l-10.49,-0.85l-2.47,1.61l-3.46,0.6l-1.08,0.82l-1.41,-0.99l-8.45,1.43l-1.5,3.45l-1.03,1.04l-6.03,2.3l-1.4,-0.23l-1.53,-2.13l-4.12,0.79l-4.6,-1.74l2.18,-2.25l0.4,-2.05l1.78,0.32l0.97,-1.24l4.7,-1.46l0.21,-0.61l-2.36,-4.38l-3.34,-1.82l-2.2,-4.05l-11.85,1.37l-2.37,1.65l-4.35,-2.18l-0.93,-1.89l-2.68,-1.38l0.41,-1.74l-0.71,-1.57l-11.85,-1.37l-2.41,2.65l-3.51,1.22l-0.94,-1.47l-1.27,-0.36l-1.42,3.19l-5.53,1.08l-4.61,2.3l-7.17,0.38l-0.81,-0.65l-1.3,0.08l-1.03,2.71l-1.78,-1.58l-0.55,-1.81l0.13,-1.67l2.17,-2.98l0.17,-1.09l-1.31,-0.85l-2.22,0.4l-1.11,-3.47l2.15,-1.88l-0.1,-1.24l-1.51,-0.73l-2.08,0.71l-2.18,-1.89l-3.6,0.03l-2.48,-1.05l-0.86,-1.06l-0.55,-3.2l-1.59,-1.41l-1.19,-0.21l-1.47,-1.8l1.22,-1.98l0.73,-0.11l2.05,0.68l-0.14,1.56l1.95,2.05l6.61,1.26l2.64,-2.29l1.39,0.22Z", "name": "East"}, "UKG": {"path": "M474.94,995.46l-0.97,-3.61l2.62,-2.95l-0.45,-3.38l2.25,-1.38l1.66,-2.35l6.55,-3.73l3.25,-0.23l3.27,2.18l4.24,-0.92l1.98,0.25l4.91,4.04l1.52,0.48l5.75,-2.6l0.21,-2.68l-0.88,-2.51l8.61,-2.13l2.6,0.94l1.4,2.81l1.59,-0.3l2.57,1.03l1.55,-1.6l2.67,0.8l2.72,-0.31l1.76,-1.0l0.73,-1.62l3.7,-1.23l1.25,-1.37l-0.54,-4.55l0.57,-1.45l2.62,-0.53l2.47,-2.57l2.85,0.16l2.39,-0.85l7.58,-7.38l2.18,-0.56l0.31,-1.22l-0.68,-1.33l2.86,0.98l2.89,0.0l3.41,-2.23l2.31,-0.27l2.42,-2.43l1.75,-0.64l1.76,2.12l6.51,2.18l2.74,1.52l1.69,1.62l0.37,3.51l2.31,3.19l-0.36,2.25l0.6,3.42l1.88,2.41l0.15,2.32l-0.95,1.84l-4.6,2.42l-0.58,3.82l-2.06,0.85l-0.05,2.31l1.22,1.83l0.25,1.66l3.52,1.38l2.67,0.06l2.96,2.4l7.86,0.52l1.76,1.13l1.26,1.92l-1.92,1.45l-1.17,2.86l-3.78,1.71l-2.33,4.28l1.78,1.41l2.85,0.87l0.81,2.61l1.56,0.16l1.21,-0.99l0.74,0.77l1.15,0.05l4.14,4.81l-0.17,0.96l-1.91,1.45l1.37,2.31l-0.01,2.63l2.32,0.72l2.06,2.13l6.66,2.44l1.91,2.67l8.78,3.81l4.46,6.12l2.58,1.27l3.88,7.41l-1.14,0.93l-5.95,2.19l0.82,1.73l2.94,0.73l-1.66,1.94l1.23,1.61l0.06,2.19l-4.78,2.47l-0.17,1.18l1.69,1.85l-0.19,0.79l-4.65,1.66l-2.66,3.36l-0.72,2.09l-2.68,1.79l-0.03,0.64l1.7,1.4l-0.33,0.61l-1.52,0.31l-2.29,-1.73l-1.92,-0.2l-1.32,0.57l-0.01,1.53l-2.47,0.25l-2.53,3.61l-0.05,2.3l-1.77,5.74l-2.2,0.39l-0.63,1.82l-2.85,0.2l-0.86,1.34l-4.44,-3.06l3.41,-4.54l-0.13,-0.56l-1.03,-0.5l-3.04,0.4l-1.28,-0.41l-2.68,-3.81l-0.78,-2.23l-1.99,-0.74l-2.18,-1.91l-1.91,0.9l-2.93,3.31l-2.6,-0.38l-1.93,1.47l0.17,0.94l1.25,0.54l1.67,2.02l-0.24,2.5l-3.73,-2.32l-5.63,-0.26l-2.6,0.53l-5.05,2.95l-3.38,-0.86l-3.06,-0.01l-2.03,1.32l-0.72,-0.8l2.31,-3.9l-0.36,-0.6l-4.32,0.19l-0.88,1.11l-0.5,3.07l1.18,1.43l-0.75,0.49l-3.11,-0.17l-2.16,2.94l-1.27,0.14l-4.6,-1.19l-3.27,-4.85l-2.36,0.32l-2.27,2.08l-1.49,0.53l-1.13,-0.46l-1.17,-2.24l-1.69,-0.74l-1.52,2.83l0.34,1.3l-0.94,1.37l-0.22,1.97l1.87,1.48l0.56,2.11l1.71,1.58l0.0,1.69l-2.91,1.5l-3.0,0.31l-1.4,2.41l-2.57,-0.26l-2.43,0.84l-0.68,1.05l-1.07,-0.13l-1.52,0.82l-0.64,-1.43l-0.94,-0.24l-0.9,1.07l-0.45,2.68l-0.66,0.32l-3.64,-2.33l-3.09,-0.34l-3.16,-3.83l-8.48,-6.27l-2.18,0.34l-3.98,1.97l-1.44,-0.25l-1.77,-1.3l-1.26,-2.56l-2.72,-2.12l-4.38,-6.06l-0.69,-4.09l-3.04,-2.41l0.84,-2.98l1.08,-1.56l-2.02,-1.72l3.1,-1.14l1.1,-1.57l-0.43,-0.87l-1.78,-0.17l-0.57,-1.23l3.49,-4.19l1.31,-2.67l3.28,-2.49l3.76,-0.35l1.17,-0.81l-0.33,-1.33l-2.83,-1.0l-0.45,-1.63l0.64,-1.36l2.91,-2.11l0.15,-1.84l-10.11,-0.99l-2.81,-2.45l-8.25,-5.16l-0.92,-1.39l-0.26,-2.12l1.58,-2.17l6.56,-2.81l7.58,-0.66l4.83,-4.9l-0.39,-1.91l-2.15,-2.04l-1.16,-0.21l-5.06,2.97l-1.3,1.64l-1.77,0.2l0.46,-1.82l-1.4,-3.52l3.73,-2.65l1.55,-4.26l2.39,-1.46l0.69,-4.41l1.2,-2.39l3.29,-0.84l1.4,-1.97l-3.67,-3.5l-5.04,-1.11l-1.73,-1.81l-3.12,-0.34l-2.11,-1.19Z", "name": "West Midlands"}, "UKF": {"path": "M649.51,1087.36l-1.67,1.84l-2.08,0.24l-1.75,1.06l-6.13,0.21l-3.15,-6.94l0.23,-3.62l-0.65,-0.66l4.65,-1.19l0.8,-1.32l-7.11,-7.43l0.22,-0.75l1.11,-1.06l4.63,-1.62l0.44,-1.88l-1.65,-2.03l4.99,-2.83l-0.07,-2.61l-1.16,-1.19l1.62,-2.41l-3.81,-1.76l5.47,-1.89l1.66,-1.57l-0.23,-1.42l-3.83,-6.6l-2.64,-1.33l-4.63,-6.26l-8.74,-3.79l-2.01,-2.72l-6.65,-2.43l-1.91,-2.03l-2.28,-0.76l0.21,-2.25l-1.23,-2.06l1.76,-1.07l0.14,-1.71l-4.53,-5.18l-1.25,-0.05l-1.19,-0.87l-1.09,1.07l-1.08,-0.11l-0.72,-2.54l-3.0,-0.92l-1.3,-1.07l2.15,-3.35l3.64,-1.58l1.4,-3.13l2.0,-1.43l-1.42,-2.85l-2.23,-1.42l-7.74,-0.48l-3.06,-2.44l-2.71,-0.06l-1.16,-0.81l-1.76,-0.2l-0.29,-1.63l-1.12,-1.55l0.04,-1.8l1.31,-0.16l0.71,-0.77l0.44,-3.55l4.66,-2.53l1.1,-2.26l-0.17,-2.61l-1.89,-2.37l-0.58,-3.31l0.3,-2.52l-2.33,-3.22l-0.49,-3.68l-4.67,-3.33l-6.5,-2.18l-1.68,-2.12l-1.9,0.4l0.39,-2.0l-1.73,-1.64l-0.63,-10.94l-0.35,-1.52l-1.4,-1.76l3.1,-4.27l-2.64,-2.25l2.64,-2.81l1.51,-5.67l3.78,-0.75l1.89,-3.76l2.01,0.09l4.57,1.84l1.64,2.09l0.75,3.36l4.77,3.26l-0.45,2.19l0.52,1.58l2.65,0.8l1.23,1.97l3.45,1.14l-0.62,1.93l0.54,1.1l5.61,2.31l-2.36,1.48l-0.27,1.33l2.49,0.74l1.49,-0.29l3.57,1.76l6.28,-2.03l2.37,-1.95l3.09,-0.18l0.64,0.29l0.39,1.83l2.0,0.81l2.5,0.13l1.9,-1.77l1.84,-0.31l0.45,2.05l1.69,0.09l1.55,0.87l5.97,-0.2l3.79,-3.96l-0.53,-1.53l1.64,-0.73l0.81,-1.43l-0.29,-2.69l2.48,-2.68l1.7,-1.12l3.01,-0.09l1.31,0.62l1.11,-0.48l2.44,-2.69l0.73,-3.4l3.99,-2.63l2.08,1.6l-1.42,0.72l0.36,1.01l9.56,0.72l4.62,-4.15l0.7,-3.08l10.21,0.97l0.35,1.57l-0.97,3.01l1.74,1.59l3.24,0.22l5.33,-1.29l3.78,-1.5l-0.32,-1.76l0.89,-1.7l4.97,-0.69l1.38,-1.22l-0.25,-1.23l-1.28,-0.87l-6.03,-0.33l4.69,-2.95l5.4,1.18l2.52,-0.36l3.18,-2.95l0.23,-2.73l3.87,1.97l2.45,2.73l3.19,0.28l-2.34,3.18l1.15,3.94l-0.53,2.72l6.8,6.35l1.52,-0.05l2.5,-1.77l-1.52,-2.56l2.86,-5.47l0.97,-0.53l1.77,0.3l3.87,-1.29l6.21,4.15l4.85,1.49l1.26,1.21l0.77,3.24l3.44,1.97l-0.25,1.03l1.45,0.89l2.2,3.34l7.45,17.51l1.2,4.37l0.03,4.91l-2.18,6.68l-4.03,1.35l-7.76,6.42l-2.81,1.33l-6.88,8.3l-1.73,1.52l-3.5,1.57l-1.18,1.63l0.07,1.7l3.01,0.52l4.49,-0.86l6.55,3.46l6.55,7.75l2.42,-0.89l-1.15,2.78l1.23,2.16l-6.39,3.9l-4.24,-0.4l-4.62,2.02l-3.39,0.39l-0.78,0.93l0.37,3.39l-1.89,2.3l-2.6,0.06l-4.64,-1.24l-2.63,0.94l-1.75,-0.18l-2.98,1.48l-1.81,-0.63l-1.94,0.24l-1.66,-1.64l-5.3,1.0l-4.79,-1.84l-7.46,3.08l-2.77,0.03l-2.64,-0.76l-2.33,0.8l-0.14,0.66l1.99,2.96l-0.47,5.08l1.39,0.77l3.6,-0.42l0.03,1.67l1.3,1.33l-0.5,3.22l4.95,2.46l1.0,3.71l-3.93,4.76l-2.87,1.88l-0.88,1.57l-5.19,2.27l-0.02,2.22l2.04,2.82l0.16,1.24l-3.69,0.74l-1.92,2.29l-0.09,2.82l-1.05,1.38l-1.24,-0.21l-1.54,-1.7l-1.33,-0.41l-4.57,0.8l-0.54,1.13l0.8,4.16l-1.61,2.54l-6.26,3.48l-2.75,-0.09l-1.42,1.75l-2.78,-0.41l-1.56,2.77l-4.44,1.29l-0.24,1.56l4.35,4.57l-2.12,0.53l-0.37,2.29l-2.69,2.19l-0.59,0.1l-3.26,-5.93l-1.3,-0.41l-3.46,1.23l-2.73,-0.19l-1.39,1.32l-5.07,1.1l-2.03,1.06l-2.07,2.07l0.16,0.66l1.9,0.65Z", "name": "East Midlands"}, "UKE": {"path": "M668.83,917.65l1.01,-0.71l-0.13,-0.85l-2.93,-1.92l-4.37,2.88l-0.82,3.52l-2.25,2.49l-5.09,-0.19l-2.04,1.28l-2.72,2.91l0.24,2.85l-0.5,1.01l-1.92,0.86l0.49,1.69l-2.44,2.07l-0.84,1.49l-5.42,0.24l-3.01,-0.98l0.09,-1.62l-1.07,-0.47l-2.14,0.36l-1.83,1.76l-2.14,-0.15l-1.6,-0.67l-0.14,-1.5l-1.36,-0.79l-3.32,0.19l-2.51,2.01l-6.04,1.95l-3.24,-1.72l-3.49,-0.15l2.45,-1.67l0.15,-1.09l-1.07,-0.97l-4.81,-1.61l0.19,-2.95l-3.75,-1.31l-1.1,-1.89l-2.58,-0.78l0.14,-3.58l-4.77,-3.19l-0.73,-3.32l-1.78,-2.26l-4.9,-2.03l-2.24,-0.12l-6.76,-7.03l-0.93,-2.37l-2.55,-0.66l-0.54,-2.21l-0.92,-0.95l0.19,-2.05l-1.21,-2.28l-2.02,-0.25l-2.79,1.35l-1.54,-1.19l-1.22,-0.0l-1.45,-1.54l-0.72,-3.08l3.15,-3.34l0.18,-4.39l2.0,-2.09l4.26,-1.73l1.35,-2.92l-3.04,-2.19l-2.61,-2.94l-0.86,-3.28l-5.79,-2.45l-0.35,-1.99l-1.12,-1.5l-2.87,-0.4l-0.79,-1.74l-3.95,1.48l-0.82,-0.1l-1.33,-2.17l-2.87,-0.22l-0.81,-0.99l0.65,-2.17l-1.68,-2.96l-2.39,-0.36l-3.95,0.88l-1.67,-0.2l-0.63,-0.65l-0.09,-2.75l-0.81,-1.19l-4.55,-2.18l-2.11,-1.84l-0.49,-1.56l0.3,-2.4l2.48,-1.2l5.61,-6.68l0.5,-1.41l3.76,0.22l1.79,-1.65l2.36,-0.95l2.1,1.11l1.71,-0.3l0.75,-0.77l0.39,-2.18l-0.92,-2.01l0.38,-4.83l-0.73,-1.28l-2.66,-1.96l5.24,-3.67l0.14,-1.9l-0.98,-2.54l1.44,-1.88l2.6,-1.4l4.51,0.09l2.05,-1.44l2.72,1.08l3.34,-2.16l4.53,-1.35l3.2,0.83l4.36,2.14l2.55,-0.02l6.9,-3.09l0.33,-1.73l0.96,-1.06l3.82,2.6l0.63,-0.2l1.68,-3.73l0.09,-1.64l1.13,-0.17l2.0,0.64l1.23,-0.78l4.21,0.09l1.51,0.78l0.79,1.72l3.1,-0.29l1.78,2.63l3.92,2.92l1.36,-0.09l0.02,-1.64l1.93,0.17l1.78,3.45l1.54,1.0l0.96,-0.33l0.51,-1.05l-1.76,-4.01l0.35,-1.38l1.55,0.77l0.59,1.28l1.32,0.41l1.08,-1.67l1.42,0.35l0.7,-0.45l0.64,0.34l1.01,2.68l2.3,0.0l0.92,0.6l6.78,-3.02l1.23,-1.48l2.68,-0.68l7.5,0.92l3.46,-0.81l4.03,1.47l4.52,-0.88l3.87,1.58l4.37,-1.07l3.58,1.0l0.51,-0.38l0.05,-3.34l0.66,-1.55l1.16,-1.14l2.2,-0.77l0.83,-1.08l18.34,9.39l2.36,1.89l0.95,1.52l0.29,3.37l5.0,3.72l1.25,1.82l2.49,5.72l0.36,3.26l1.94,1.78l-0.35,1.73l2.33,2.55l0.85,0.71l3.47,0.76l3.75,2.12l1.36,4.69l2.41,2.13l10.67,3.5l2.52,1.86l-7.15,3.22l-2.75,2.63l-2.13,5.06l1.88,3.29l4.06,11.43l24.61,30.35l1.31,3.71l-1.01,3.61l-0.95,0.72l1.22,-2.37l0.22,-2.42l-7.01,-3.66l-1.88,-0.57l-1.89,0.32l-5.14,2.08l-5.64,-1.36l-9.66,-9.67l-3.28,-1.96l-4.04,-0.5l-10.85,3.0l-6.82,0.0l-2.91,0.56l-3.0,-2.18l-5.15,-0.46l-1.93,0.51l-6.12,3.63l3.09,1.87l1.82,-1.84l4.72,-1.0l1.9,0.42l6.01,3.61l3.8,-1.99l15.33,-2.31l2.19,0.77l7.8,10.16l3.95,1.72l4.19,3.49l4.25,0.8l5.39,5.02l-3.2,0.99l-1.94,-0.27l-1.36,0.82l-2.98,5.7l0.25,1.33l1.18,1.11l-2.77,1.47l-2.45,-2.78l-3.9,-2.96l0.49,-2.75l-1.12,-3.82l2.23,-2.43l0.06,-1.14l-3.49,-0.54l-2.51,-2.75l-4.26,-2.17l-1.0,0.9l0.05,2.25l-2.94,2.74l-1.97,0.24l-5.79,-1.15l-5.22,3.28l0.24,1.2l6.44,0.35l0.88,1.17l-0.77,0.59l-5.07,0.71l-1.38,2.27l0.42,1.51l-3.33,1.17l-5.21,1.26l-2.85,-0.19l-1.21,-1.1l0.99,-2.67l-0.66,-2.3l-10.99,-1.15l-1.06,3.41l-4.1,3.84l-8.61,-0.59Z", "name": "Yorkshire and the Humber"}, "UKD": {"path": "M482.88,736.0l1.41,-3.57l0.48,-4.03l3.91,1.37l2.29,-0.18l2.35,-3.37l3.82,-1.8l5.24,-6.2l6.51,-2.49l2.45,-1.36l2.74,-2.59l2.29,5.33l1.23,1.46l3.72,1.1l1.0,2.5l2.72,1.59l0.62,1.05l3.92,-0.62l1.12,0.58l-0.52,0.52l0.02,2.13l0.93,1.91l-6.54,3.21l-0.69,0.98l-0.07,2.23l-1.99,2.23l0.13,0.63l2.16,0.99l0.62,2.26l1.13,1.51l-1.32,0.86l-0.89,2.6l-2.05,1.66l2.35,2.98l-0.34,2.57l0.58,1.54l2.74,2.06l3.1,0.4l8.54,-5.0l3.24,4.27l4.69,3.14l-1.83,6.37l-2.26,4.79l0.95,1.16l5.34,2.74l-0.43,1.67l-1.75,1.85l1.8,4.85l6.62,4.38l1.49,2.42l2.45,0.54l0.41,4.77l0.65,1.51l-0.3,1.47l-1.08,-0.25l-2.12,1.49l-4.45,-0.11l-2.77,1.49l-1.82,2.62l1.03,3.83l-5.36,3.76l0.4,1.48l2.5,1.55l0.48,0.94l-0.43,4.43l0.92,2.13l-0.27,1.75l-1.76,0.68l-2.22,-1.11l-2.62,1.06l-1.55,1.55l-3.88,-0.22l-6.51,8.43l-2.58,1.35l-0.32,2.88l0.67,1.93l2.24,1.95l4.45,2.1l0.59,0.78l0.09,2.78l0.95,1.13l2.11,0.35l4.08,-0.88l2.01,0.32l1.24,2.69l-0.7,1.98l1.08,1.32l3.09,0.36l1.31,2.16l1.32,0.11l3.47,-1.3l0.6,1.43l2.82,0.37l1.47,3.51l5.8,2.46l0.7,3.08l2.72,3.06l2.75,1.72l-1.06,2.23l-4.09,1.61l-2.31,2.37l-0.18,4.39l-3.21,3.41l0.62,3.63l1.76,1.99l1.4,0.1l1.89,1.29l4.11,-1.42l1.2,2.17l-0.28,1.76l1.0,1.17l0.57,2.34l2.6,0.72l0.99,2.41l6.66,6.9l-1.7,3.51l-3.92,0.85l-1.64,5.94l-2.65,2.88l0.35,1.4l2.27,1.32l-3.11,4.03l1.53,2.15l0.46,9.67l0.43,2.64l1.66,1.44l-0.45,2.33l-2.29,2.31l-2.21,0.22l-3.17,2.15l-2.66,0.0l-1.94,-1.03l-1.36,0.09l-0.5,0.71l0.54,2.1l-1.98,0.4l-7.61,7.41l-2.07,0.7l-2.81,-0.19l-2.82,2.74l-2.8,0.68l-0.72,1.96l0.62,4.15l-0.88,1.03l-3.77,1.25l-0.82,1.7l-1.42,0.83l-2.39,0.31l-2.85,-0.86l-1.5,1.59l-2.39,-0.96l-1.6,0.24l-1.13,-2.65l-2.88,-1.04l-9.18,2.21l-3.46,-1.72l-4.17,-0.84l-3.13,-3.81l-1.37,-5.08l-2.31,-4.27l-5.11,-4.84l3.77,-2.73l-0.49,-2.72l-3.35,-3.16l-5.56,-3.67l-5.38,-1.32l-0.08,-1.94l-4.39,-6.83l-4.27,-5.05l-0.08,-1.57l0.78,-0.98l6.91,-1.67l3.11,-2.02l1.69,0.1l1.86,1.85l5.17,10.97l3.73,3.3l2.76,1.01l2.68,-0.09l1.2,-1.6l2.66,0.72l2.8,-0.43l2.37,-1.14l-0.24,-1.89l0.79,-1.6l0.55,-0.5l1.57,0.09l1.62,-1.13l-0.24,-0.7l-1.25,-0.06l-4.46,0.86l-1.25,0.75l-0.55,1.55l-1.25,0.52l-3.67,-0.33l-3.62,-1.12l-3.25,-1.89l-4.74,-4.94l-10.41,-19.31l1.17,-3.25l5.67,-7.66l6.05,-6.5l4.58,-3.27l-0.3,-0.66l-7.37,-0.08l-3.01,-1.09l-2.25,-2.64l-0.6,-3.81l0.99,-8.89l-0.97,-3.25l1.22,-1.82l1.88,-0.94l7.88,-2.44l1.25,-0.12l1.76,0.9l2.92,-2.56l-0.58,-1.64l2.71,-2.26l0.52,-2.15l-0.6,-0.42l-2.9,1.34l-2.45,0.22l-1.65,-3.28l4.91,-5.31l2.89,-1.02l2.71,-4.4l-4.92,-8.12l3.66,-2.18l1.31,-2.09l0.0,-2.51l-0.99,-0.39l-1.83,3.31l-7.22,4.03l-1.46,3.1l-1.42,0.72l-3.69,0.22l-0.98,-0.65l-1.56,-3.28l0.73,-1.45l-0.66,-1.45l-1.91,-1.79l-1.5,0.45l-0.13,3.57l-1.1,3.73l-4.84,6.22l-2.51,1.32l0.05,3.38l-3.26,-3.39l-2.68,-0.4l-1.57,-1.12l0.65,-5.46l-1.32,-1.4l2.87,-0.96l0.73,-3.57l-0.06,-6.4l-0.57,-0.38l-1.36,0.64l-0.89,1.41l-0.87,3.09l0.65,2.2l-5.89,1.04l-1.66,-1.35l-6.77,-8.6l-0.43,-1.75l0.75,-2.89l-0.93,-3.27l-2.32,-1.08l-2.88,-4.86l-2.1,-1.57l-8.12,-9.2l-1.83,-1.0l-1.6,-2.36l1.79,-1.81l1.83,-4.16l2.31,-9.37l4.12,-8.38l1.15,-1.38l2.93,-1.21l2.56,-3.29l0.74,-2.28l-0.75,-2.16l4.42,-10.09l1.9,-1.85l1.42,-0.27l3.46,1.94l4.61,-1.67l0.05,-0.71l-1.1,-0.69l-3.79,-1.56l2.94,-2.28l5.29,-1.29l2.8,1.62l5.05,0.98l7.43,-1.79l1.72,-1.33l-5.95,-0.3l3.92,-1.36l1.53,0.49l0.52,-0.38l-0.26,-1.27l-2.17,-0.79Z", "name": "North West"}, "UKC": {"path": "M620.17,725.93l3.72,8.4l3.75,3.08l0.58,1.16l-0.02,4.58l0.8,1.66l-0.17,1.05l5.12,14.95l1.87,3.83l3.18,3.38l5.72,2.39l-1.37,0.21l-0.38,0.95l2.28,4.42l-1.21,1.21l-2.01,0.73l0.06,1.49l2.15,0.92l0.71,-0.79l0.88,1.68l1.04,-0.16l0.84,-0.95l0.59,-2.63l2.64,2.19l5.33,0.91l4.23,2.26l18.1,4.64l-4.17,2.97l-0.75,1.85l-0.04,2.9l-3.18,-0.89l-4.51,1.05l-1.83,-1.2l-1.96,-0.36l-4.62,0.88l-3.82,-1.45l-3.61,0.8l-7.65,-0.91l-2.88,0.73l-1.31,1.52l-6.43,2.87l-0.68,-0.55l-2.17,0.0l-0.59,-2.26l-1.27,-0.81l-2.83,0.33l-0.58,1.42l-0.77,-0.24l-1.35,-1.96l-1.32,-0.2l-1.09,0.94l0.06,1.52l1.71,3.64l-0.73,0.66l-2.79,-4.29l-2.9,-0.35l-0.42,0.5l0.34,1.26l-0.45,0.07l-3.71,-2.76l-1.09,-2.18l-0.98,-0.63l-2.73,0.43l-0.91,-1.74l-1.73,-0.9l-4.62,-0.14l-1.06,0.75l-1.88,-0.6l-1.74,0.22l-1.92,5.33l-3.91,-2.43l-1.58,1.45l-0.19,1.53l-6.61,2.96l-2.03,0.03l-4.31,-2.11l-3.42,-0.89l-4.91,1.4l-3.3,2.12l-0.93,-0.47l0.36,-1.78l-0.67,-1.68l-0.43,-5.01l-2.63,-0.73l-1.57,-2.46l-6.48,-4.23l-1.61,-4.35l2.19,-2.65l-0.18,-1.35l-6.17,-3.73l2.22,-4.25l1.76,-7.14l-4.88,-3.27l-3.64,-4.47l-8.67,5.02l-2.68,-0.3l-2.41,-1.74l-0.48,-1.26l0.56,-1.36l-0.26,-1.37l-2.24,-2.71l1.72,-1.05l1.06,-2.81l1.53,-1.39l-1.3,-1.67l-0.65,-2.37l-2.06,-1.1l1.73,-1.93l0.63,-3.06l6.68,-3.24l-0.85,-2.66l0.57,-2.9l-2.01,-0.94l-3.35,0.77l-0.67,-1.03l-2.69,-1.57l-1.11,-2.59l-3.61,-1.0l-3.55,-6.81l1.77,-2.27l3.48,-2.34l0.35,-1.7l-0.62,-2.21l0.44,-0.65l5.85,-5.4l7.61,-5.53l2.93,-0.62l4.29,1.22l2.51,-1.51l2.19,-3.64l2.5,-0.9l2.04,-1.59l3.51,-0.8l3.87,-2.95l0.41,-2.5l-2.45,-2.98l-0.37,-2.24l-3.44,-4.91l-1.91,-4.82l-2.05,-2.94l-1.96,-1.12l-0.22,-1.49l7.28,-1.34l5.37,-6.3l1.18,-2.22l6.57,-4.59l1.19,-4.04l4.31,-1.59l12.42,13.25l2.14,4.3l1.91,1.13l1.32,2.17l1.19,-0.1l1.29,-1.43l0.74,0.08l1.92,1.3l0.49,1.12l-1.56,0.4l0.23,1.11l1.31,0.52l4.7,-0.5l5.64,3.23l-0.32,2.34l1.25,1.59l-0.74,0.47l-0.19,1.16l2.42,1.86l-0.65,1.92l1.88,1.49l0.33,1.28l0.31,8.05l-0.68,4.95l0.59,2.78l2.08,3.05l0.23,1.97l-1.2,2.9l0.14,1.03l1.1,3.15l2.9,2.95l-0.56,1.68l1.76,2.46l-1.18,3.09l0.36,1.51l1.89,2.71l1.4,5.98l1.82,0.93l0.28,0.91Z", "name": "North East"}}, "height": 1327.4309048516907, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-us-aea-en.js b/plugins/jvectormap/jquery-jvectormap-us-aea-en.js new file mode 100644 index 0000000..91e473c --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-us-aea-en.js @@ -0,0 +1 @@ +$.fn.vectorMap('addMap', 'us_aea_en',{"insets": [{"width": 220, "top": 440, "height": 146.9158157558812, "bbox": [{"y": -8441281.712315228, "x": -5263934.893342895}, {"y": -6227992.545028123, "x": -1949631.2950683108}], "left": 0}, {"width": 80, "top": 460, "height": 129.05725678001465, "bbox": [{"y": -4207380.690946597, "x": -5958501.652314129}, {"y": -3658201.4570359783, "x": -5618076.48127754}], "left": 245}, {"width": 900.0, "top": 0, "height": 550.2150229714246, "bbox": [{"y": -5490839.2352678, "x": -2029243.6460439637}, {"y": -2690044.485299302, "x": 2552083.9617675776}], "left": 0}], "paths": {"US-VA": {"path": "M682.42,290.04l1.61,-0.93l1.65,-0.48l1.12,-0.95l3.57,-1.69l0.74,-2.33l0.82,-0.19l2.32,-1.54l0.05,-1.81l2.04,-1.86l-0.13,-1.58l0.26,-0.42l5.0,-4.09l4.76,-6.0l0.09,0.63l0.96,0.54l0.33,1.37l1.32,0.74l0.71,0.81l1.46,0.09l0.79,0.65l1.3,0.48l1.41,-0.09l0.79,-0.41l0.76,-1.22l1.17,-0.57l0.53,-1.38l2.72,1.49l1.42,-1.1l2.25,-0.99l0.76,0.06l1.08,-0.97l0.33,-0.82l-0.48,-0.96l0.23,-0.42l1.9,0.58l3.26,-2.62l0.3,-0.1l0.51,0.73l0.66,-0.07l2.38,-2.34l0.17,-0.85l-0.49,-0.51l0.99,-1.12l0.1,-0.6l-0.28,-0.51l-1.0,-0.46l0.71,-3.03l2.6,-4.8l0.55,-2.15l-0.01,-1.91l1.61,-2.55l-0.22,-0.94l0.24,-0.84l0.5,-0.48l0.39,-1.7l-0.0,-3.18l1.23,0.19l1.18,1.73l3.8,0.43l0.59,-0.28l1.05,-2.52l0.2,-2.36l0.71,-1.05l-0.04,-1.61l0.76,-2.31l1.78,0.75l0.65,-0.17l1.3,-3.3l0.57,0.05l0.59,-0.39l0.52,-1.2l0.81,-0.68l0.44,-1.8l1.38,-2.43l-0.35,-2.57l0.54,-1.76l-0.3,-2.01l9.18,4.58l0.59,-0.29l0.63,-4.0l2.6,-0.07l0.63,0.57l1.05,0.23l-0.5,1.74l0.6,0.88l1.61,0.85l2.52,-0.04l1.03,1.18l1.64,0.12l1.94,1.52l0.57,2.53l-0.94,0.78l-0.45,0.02l-0.3,0.43l0.13,0.71l-0.61,-0.05l-0.49,0.59l-0.37,2.5l0.07,2.29l-0.43,0.25l0.01,0.6l1.05,0.77l-0.36,0.14l-0.17,0.6l0.44,0.3l1.64,-0.08l1.38,-0.61l1.77,-1.61l0.39,0.58l-0.58,0.35l0.02,0.58l1.9,1.07l0.64,1.08l1.69,0.35l1.37,-0.11l0.95,0.49l0.82,-0.65l1.05,-0.08l0.33,0.56l1.26,0.63l-0.1,0.55l0.36,0.55l0.94,-0.23l0.41,0.56l3.96,0.88l0.25,1.12l-0.85,-0.41l-0.57,0.44l0.89,1.74l-0.35,0.57l0.62,0.78l-0.44,0.89l0.24,0.59l-1.36,-0.36l-0.59,-0.72l-0.67,0.18l-0.1,0.43l-2.44,-2.3l-0.56,0.05l-0.38,-0.56l-0.52,0.32l-1.36,-1.51l-1.23,-0.43l-2.86,-2.72l-1.34,-0.12l-1.11,-0.81l-1.17,0.05l-0.39,0.52l0.47,0.71l1.1,-0.01l0.63,0.68l1.33,0.07l0.6,0.43l0.62,1.4l1.46,1.11l1.13,0.34l1.53,1.8l2.55,0.94l1.4,1.89l2.14,-0.02l0.56,0.41l0.72,0.06l-0.61,0.7l0.3,0.49l2.03,0.34l0.26,0.72l0.55,0.1l0.13,1.67l-1.0,-0.75l-0.39,0.21l-1.13,-1.0l-0.58,0.29l0.1,0.82l-0.31,0.68l0.7,0.7l-0.18,0.6l1.12,0.32l-0.86,0.44l-2.12,-0.73l-1.39,-1.38l-0.83,-0.32l-2.23,-1.87l-0.58,0.11l-0.22,0.53l0.26,0.81l0.64,0.21l3.81,3.15l2.69,1.12l1.28,-0.33l0.45,1.07l1.27,0.26l-0.44,0.67l0.3,0.56l0.93,-0.19l0.0,1.24l-0.92,0.41l-0.57,0.73l-0.71,-0.93l-3.2,-1.58l-0.29,-1.16l-0.59,-0.59l-0.87,-0.11l-1.2,0.67l-1.71,-0.44l-0.36,-1.15l-0.71,-0.05l-0.05,1.32l-0.33,0.41l-1.43,-1.32l-0.51,0.09l-0.48,0.57l-0.65,-0.4l-0.99,0.45l-2.23,-0.1l-0.37,0.94l0.34,0.46l1.9,0.22l1.4,-0.31l0.85,0.24l0.56,-0.69l0.63,0.88l1.34,0.43l1.95,-0.31l1.5,0.71l0.67,-0.63l0.94,2.47l3.16,1.23l0.37,0.91l-0.57,1.03l0.56,0.44l1.72,-1.32l0.88,-0.02l0.83,0.65l0.8,-0.26l-0.61,-0.9l-0.2,-1.17l3.78,0.08l1.13,-0.44l1.89,3.23l-0.46,0.71l0.65,3.09l-1.19,-0.58l-0.02,0.88l-30.95,7.83l-37.19,8.41l-19.52,3.35l-7.08,0.85l-0.46,-0.26l-4.24,0.64l-0.82,0.62l-28.2,5.01ZM781.15,223.32l0.14,0.09l-0.06,0.07l-0.01,-0.03l-0.07,-0.12ZM808.05,244.59l0.53,-1.14l-0.26,-0.54l-0.36,-0.08l0.58,-0.98l-0.39,-0.71l-0.03,-0.49l0.44,-0.35l-0.17,-0.73l0.62,-0.3l0.23,-0.6l0.14,-2.33l1.01,-0.39l-0.12,-0.9l0.48,-0.14l-0.26,-1.53l-0.79,-0.4l0.87,-0.57l0.1,-1.03l2.69,-1.11l0.36,2.48l-1.08,4.2l-0.22,2.38l0.33,1.09l-0.34,0.97l-0.6,-0.79l-0.81,0.15l-0.39,0.95l0.27,0.37l-0.65,0.46l-0.3,0.85l0.17,1.05l-0.31,1.46l0.38,2.47l-0.6,0.6l0.07,1.33l-1.37,-1.9l0.23,-0.94l-0.33,-1.57l0.28,-0.97l-0.38,-0.3Z", "name": "Virginia"}, "US-PA": {"path": "M716.46,159.99l0.63,-0.19l4.3,-3.73l1.13,5.2l0.48,0.31l34.84,-7.93l34.28,-8.64l1.42,0.58l0.71,1.39l0.64,0.13l0.77,-0.33l1.24,0.59l0.14,0.85l0.81,0.41l-0.16,0.58l0.89,2.69l1.9,2.07l2.12,0.75l2.21,-0.2l0.72,0.79l-0.89,0.87l-0.73,1.49l-0.17,2.25l-1.41,3.35l-1.37,1.58l0.04,0.79l1.79,1.72l-0.31,1.65l-0.84,0.43l-0.22,0.66l0.14,1.48l1.04,2.87l0.52,0.25l1.2,-0.18l1.18,2.39l0.95,0.58l0.66,-0.26l0.6,0.9l4.23,2.75l0.12,0.41l-1.29,0.93l-3.71,4.22l-0.23,0.76l0.17,0.9l-1.36,1.13l-0.84,0.15l-1.33,1.08l-0.33,0.66l-1.72,-0.12l-2.03,0.84l-1.15,1.37l-0.41,1.39l-37.23,9.21l-39.1,8.66l-10.03,-48.21l1.92,-1.22l3.08,-3.04Z", "name": "Pennsylvania"}, "US-TN": {"path": "M571.72,341.09l0.86,-0.84l0.29,-1.37l1.0,0.04l0.65,-0.79l-0.99,-4.89l1.41,-1.93l0.06,-1.32l1.18,-0.46l0.36,-0.48l-0.63,-1.31l0.53,-0.65l0.05,-0.56l-0.89,-1.33l2.55,-1.57l1.09,-1.13l-0.14,-0.84l-0.85,-0.53l0.14,-0.19l0.34,-0.16l0.85,0.37l0.46,-0.33l-0.27,-1.31l-0.85,-0.9l0.06,-0.71l0.51,-1.43l1.0,-1.11l-1.35,-2.06l1.37,-0.21l0.61,-0.55l-0.13,-0.64l-1.17,-0.82l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.59,-1.38l0.02,-0.36l0.37,0.53l0.47,0.08l0.58,-0.29l0.6,-0.86l23.67,-2.81l0.35,-0.41l-0.1,-1.35l-0.84,-2.39l2.98,-0.08l0.82,0.58l22.79,-3.55l7.64,-0.46l7.5,-0.86l8.82,-1.42l24.01,-3.1l1.11,-0.6l29.3,-5.2l0.73,-0.6l3.56,-0.54l-0.4,1.44l0.43,0.85l-0.4,2.0l0.36,0.82l-1.15,-0.03l-1.71,1.79l-1.21,3.89l-0.55,0.7l-0.56,0.08l-0.63,-0.74l-1.44,-0.02l-2.66,1.73l-1.42,2.73l-0.96,0.89l-0.34,-0.34l-0.13,-1.05l-0.73,-0.54l-0.53,0.15l-2.3,1.81l-0.29,1.32l-0.93,-0.24l-0.9,0.48l-0.16,0.77l0.32,0.73l-0.85,2.18l-1.29,0.06l-1.75,1.14l-1.28,1.24l-0.61,1.06l-0.78,0.27l-2.28,2.46l-4.04,0.78l-2.58,1.7l-0.49,1.09l-0.88,0.55l-0.55,0.81l-0.18,2.88l-0.35,0.6l-1.65,0.52l-0.89,-0.16l-1.06,1.14l0.21,5.24l-20.21,3.32l-21.62,3.04l-25.56,2.95l-0.34,0.31l-7.39,0.9l-28.73,3.17Z", "name": "Tennessee"}, "US-ID": {"path": "M132.38,121.39l-0.34,-0.44l0.08,-1.99l0.53,-1.74l1.42,-1.22l2.11,-3.59l1.68,-0.92l1.39,-1.53l1.08,-2.15l0.05,-1.22l2.21,-2.41l1.43,-2.7l0.37,-1.37l2.04,-2.26l1.89,-2.81l0.03,-1.01l-0.79,-2.95l-2.13,-1.94l-0.87,-0.36l-0.85,-1.61l-0.41,-3.02l-0.59,-1.19l0.94,-1.19l-0.12,-2.35l-1.04,-2.69l0.46,-0.98l9.67,-54.45l13.39,2.35l-3.54,20.72l1.29,2.89l1.0,1.27l0.27,1.55l1.17,1.76l-0.12,0.83l0.39,1.14l-0.99,0.95l0.83,1.76l-0.83,0.11l-0.28,0.71l1.93,1.68l1.03,2.04l2.24,1.22l0.54,1.58l1.09,1.33l1.49,2.79l0.08,0.68l1.64,1.81l0.01,1.88l1.79,1.71l-0.07,1.35l0.74,0.19l0.9,-0.58l0.36,0.46l-0.36,0.55l0.07,0.54l1.11,0.96l1.61,0.15l1.81,-0.36l-0.63,2.61l-0.99,0.54l0.25,1.14l-1.83,3.73l0.06,1.72l-0.81,0.07l-0.37,0.54l0.6,1.33l-0.62,0.9l-0.03,1.16l0.97,0.93l-0.37,0.81l0.28,1.01l-1.57,0.43l-1.21,1.41l0.1,1.11l0.46,0.77l-0.13,0.74l-0.83,0.77l-0.2,1.52l1.48,0.63l1.38,1.79l0.78,0.27l1.08,-0.35l0.56,-0.8l1.85,-0.41l1.21,-1.28l0.81,-0.29l0.15,-0.76l0.78,0.81l0.23,0.71l1.06,0.64l-0.42,1.23l0.73,0.95l-0.34,1.38l0.57,1.34l-0.21,1.61l1.54,2.64l0.31,1.73l0.82,0.37l0.67,2.08l-0.18,0.98l-0.76,0.64l0.51,1.9l1.24,1.16l0.3,0.79l0.81,0.08l0.86,-0.37l1.04,0.93l1.06,2.79l-0.5,0.81l0.89,1.83l-0.28,0.6l0.11,0.98l2.29,2.41l0.97,-0.14l-0.01,-1.14l1.07,-0.89l0.93,-0.22l4.53,1.62l0.69,-0.32l0.67,-1.35l1.19,-0.39l2.25,0.93l3.3,-0.1l0.96,0.88l2.29,-0.58l3.23,0.78l0.45,-0.49l-0.67,-0.76l0.26,-1.06l0.74,-0.48l-0.07,-0.96l1.23,-0.51l0.48,0.37l1.07,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.27,53.86l-47.48,-6.32l-46.97,-7.73l6.88,-39.17l1.12,-1.18l1.07,-2.67l-0.21,-1.75l0.74,-0.15l0.77,-1.62l-0.9,-1.27l-0.18,-1.2l-1.24,-0.08l-0.64,-0.81l-0.88,0.29Z", "name": "Idaho"}, "US-NV": {"path": "M139.36,329.2l-12.7,-16.93l-36.59,-51.1l-25.35,-34.52l13.7,-64.19l46.89,9.24l46.99,7.74l-18.72,125.83l-0.9,1.16l-0.99,2.19l-0.44,0.17l-1.34,-0.22l-0.98,-2.24l-0.7,-0.63l-1.41,0.22l-1.95,-1.02l-1.6,0.23l-1.78,0.96l-0.76,2.48l0.88,2.59l-0.6,0.97l-0.24,1.31l0.38,3.12l-0.76,2.54l0.77,3.71l-0.13,3.07l-0.3,1.07l-1.04,0.31l-0.12,0.51l0.32,0.8l-0.52,0.62Z", "name": "Nevada"}, "US-TX": {"path": "M276.16,412.59l33.07,1.99l32.79,1.35l0.41,-0.39l3.6,-98.71l25.86,0.61l26.29,0.22l0.05,42.09l0.44,0.4l1.02,-0.13l0.78,0.28l3.74,3.82l1.66,0.21l0.88,-0.58l2.49,0.64l0.6,-0.68l0.11,-1.05l0.6,0.76l0.92,0.22l0.38,0.93l0.77,0.78l-0.01,1.64l0.52,0.83l2.85,0.42l1.25,-0.2l1.38,0.89l2.78,0.69l1.82,-0.56l0.63,0.1l1.89,1.8l1.4,-0.11l1.25,-1.43l2.43,0.26l1.67,-0.46l0.1,2.28l0.91,0.67l1.62,0.4l-0.04,2.09l1.56,0.79l1.82,-0.66l1.57,-1.68l1.02,-0.65l0.41,0.19l0.45,1.64l2.01,0.2l0.24,1.05l0.72,0.48l1.47,-0.21l0.88,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.99l0.26,0.41l-0.45,1.23l0.14,0.76l0.67,1.14l0.78,0.42l0.57,-0.04l0.6,-0.5l0.68,-2.36l0.91,-0.65l0.35,-1.54l0.57,-0.14l0.4,0.14l0.29,0.99l0.57,0.64l1.21,0.02l0.83,0.5l1.26,-0.2l0.68,-1.34l0.48,0.15l-0.13,0.7l0.49,0.69l1.21,0.45l0.49,0.72l1.52,-0.05l1.49,1.74l0.52,0.02l0.63,-0.62l0.08,-0.71l1.49,-0.1l0.93,-1.43l1.88,-0.41l1.66,-1.13l1.52,0.83l1.51,-0.22l0.29,-0.83l2.29,-0.73l0.53,-0.55l0.5,0.32l0.38,0.88l1.82,0.42l1.69,-0.06l1.86,-1.14l0.41,-1.05l1.06,0.31l2.24,1.56l1.16,0.17l1.79,2.08l2.14,0.41l1.04,0.92l0.76,-0.11l2.48,0.85l1.04,0.04l0.37,0.79l1.38,0.97l1.45,-0.12l0.39,-0.72l0.8,0.36l0.88,-0.4l0.92,0.35l0.76,-0.15l0.64,0.36l2.23,34.03l1.51,1.67l1.3,0.82l1.25,1.87l0.57,1.63l-0.1,2.64l1.0,1.21l0.85,0.4l-0.12,0.85l0.75,0.54l0.28,0.87l0.65,0.7l-0.19,1.17l1.0,1.02l0.59,1.63l0.5,0.34l0.55,-0.1l-0.16,1.71l0.81,1.22l-0.64,0.25l-0.35,0.68l0.77,1.27l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.74,0.85l-0.36,1.54l-0.79,1.13l0.64,2.0l-0.83,2.28l0.17,1.07l0.83,1.2l-0.19,1.01l0.49,1.6l-0.24,1.41l-1.13,1.67l-1.02,0.2l-1.76,3.37l-0.04,1.06l1.79,2.37l-3.43,0.08l-7.37,3.78l-0.02,-0.43l-2.19,-0.46l-3.24,1.07l1.09,-3.51l-0.3,-1.21l-0.8,-0.76l-0.62,-0.07l-1.52,0.85l-0.99,2.0l-1.56,-0.96l-1.64,0.12l-0.07,0.63l0.89,0.62l0.0,1.06l0.56,0.39l-0.47,0.69l0.07,1.02l1.63,0.64l-0.62,0.71l0.49,0.97l0.91,0.23l0.28,0.37l-0.4,1.25l-0.45,-0.12l-0.97,0.81l-1.72,2.25l-1.18,-0.4l-0.49,0.12l0.32,1.0l0.08,2.55l-1.85,1.49l-1.91,2.11l-0.96,0.37l-4.1,2.9l-3.3,0.45l-2.54,1.06l-0.2,1.12l-0.75,-0.34l-2.04,0.89l-0.33,-0.34l-1.11,0.18l0.43,-0.87l-0.52,-0.6l-1.43,0.22l-1.22,1.08l-0.6,-0.62l-0.11,-1.2l-1.38,-0.81l-0.5,0.44l0.65,1.44l0.01,1.12l-0.71,0.09l-0.54,-0.44l-0.75,-0.0l-0.55,-1.34l-1.46,-0.37l-0.58,0.39l0.04,0.54l0.94,1.7l0.03,1.24l0.58,0.37l0.36,-0.16l1.13,0.78l-0.75,0.37l-0.27,0.54l0.15,0.36l0.7,0.23l1.08,-0.54l0.96,0.6l-4.27,2.42l-0.57,-0.13l-0.37,-1.44l-0.5,-0.18l-1.13,-1.46l-0.49,-0.03l-0.48,0.51l0.1,0.63l-0.62,0.34l-0.05,0.51l1.18,1.61l-0.31,1.04l0.33,0.85l-1.66,1.79l-0.37,0.2l0.37,-0.64l-0.18,-0.72l0.25,-0.73l-0.46,-0.67l-0.52,0.17l-0.71,1.1l0.26,0.72l-0.39,0.95l-0.07,-1.13l-0.52,-0.55l-1.95,1.29l-0.78,-0.33l-0.7,0.52l0.07,0.75l-0.81,0.99l0.02,0.49l1.25,0.64l0.03,0.56l0.78,0.28l0.7,-1.41l0.86,-0.41l0.01,0.62l-2.82,4.36l-1.23,-1.0l-1.36,0.38l-0.32,-0.34l-2.4,0.39l-0.46,-0.31l-0.65,0.16l-0.18,0.58l0.41,0.61l0.55,0.38l1.53,0.03l-0.01,0.91l0.55,0.64l2.07,1.03l-2.7,7.63l-0.2,0.1l-0.38,-0.54l-0.34,0.1l0.18,-0.76l-0.57,-0.43l-2.35,1.95l-1.72,-2.36l-1.19,-0.91l-0.61,0.4l0.09,0.52l1.44,2.0l-0.11,0.82l-0.93,-0.09l-0.33,0.63l0.51,0.56l1.88,0.07l2.14,0.72l2.08,-0.72l-0.43,1.75l0.24,0.77l-0.98,0.7l0.37,1.59l-1.12,0.14l-0.43,0.41l0.4,2.11l-0.33,1.6l0.45,0.64l0.84,0.24l0.87,2.86l0.71,2.81l-0.91,0.82l0.62,0.49l-0.08,1.28l0.72,0.3l0.18,0.61l0.58,0.29l0.4,1.79l0.68,0.31l0.45,3.22l1.46,0.62l-0.52,1.1l0.31,1.07l-0.63,0.77l-0.84,-0.05l-0.53,0.44l0.08,1.31l-0.49,-0.33l-0.49,0.25l-0.39,-0.67l-1.49,-0.45l-2.92,-2.53l-2.2,-0.18l-0.81,-0.51l-4.2,0.09l-0.9,0.42l-0.78,-0.63l-1.06,0.25l-1.25,-0.2l-1.45,-0.7l-0.72,-0.97l-0.6,-0.14l-0.21,-0.72l-1.17,-0.49l-0.99,-0.02l-1.98,-0.87l-1.45,0.39l-0.83,-1.09l-0.6,-0.21l-1.43,-1.38l-1.96,0.01l-1.47,-0.64l-0.86,0.12l-1.62,-0.41l0.28,-1.26l-0.54,-1.01l-0.96,-0.35l-1.65,-6.03l-2.77,-3.02l-0.29,-1.12l-1.08,-0.75l0.35,-0.77l-0.24,-0.76l0.34,-2.18l-0.45,-0.96l-1.04,-1.01l0.65,-1.99l0.05,-1.19l-0.18,-0.7l-0.54,-0.33l-0.15,-1.81l-1.85,-1.44l-0.85,0.21l-0.29,-0.41l-0.81,-0.11l-0.74,-1.31l-2.22,-1.71l0.01,-0.69l-0.51,-0.58l0.12,-0.86l-0.97,-0.92l-0.08,-0.75l-1.12,-0.61l-1.3,-2.88l-2.66,-1.48l-0.38,-0.91l-1.13,-0.59l-0.06,-1.16l-0.82,-1.19l-0.59,-1.95l0.41,-0.22l-0.04,-0.73l-1.03,-0.49l-0.26,-1.29l-0.81,-0.57l-0.94,-1.74l-0.61,-2.38l-1.85,-2.36l-0.87,-4.24l-1.81,-1.34l0.05,-0.7l-0.75,-1.21l-3.96,-2.67l-0.71,-1.86l-1.82,-0.62l-1.44,-0.99l-0.01,-1.63l-0.6,-0.39l-0.88,0.24l-0.12,-0.77l-0.98,-0.33l-0.8,-2.08l-0.57,-0.47l-0.46,0.12l-0.46,-0.44l-0.86,0.27l-0.14,-0.6l-0.44,-0.31l-0.47,0.15l-0.25,0.61l-1.05,0.16l-2.89,-0.47l-0.39,-0.38l-1.48,-0.03l-0.79,0.29l-0.77,-0.44l-2.67,0.27l-3.92,-2.08l-1.35,0.86l-0.64,1.61l-1.98,-0.17l-0.52,0.44l-0.49,-0.17l-1.05,0.49l-1.33,0.14l-3.22,6.4l-0.18,1.77l-0.76,0.67l-0.38,1.8l0.35,0.59l-1.99,1.01l-0.72,1.3l-1.11,0.65l-1.12,2.0l-2.67,-0.46l-1.04,-0.87l-0.55,0.3l-1.69,-1.21l-1.31,-1.63l-2.9,-0.85l-1.15,-0.95l-0.02,-0.67l-0.42,-0.41l-2.75,-0.51l-2.28,-1.03l-1.89,-1.75l-0.91,-1.53l-0.96,-0.91l-1.53,-0.29l-1.77,-1.26l-0.22,-0.56l-1.31,-1.18l-0.65,-2.68l-0.86,-1.01l-0.24,-1.1l-0.76,-1.28l-0.26,-2.34l0.52,-3.05l-3.01,-5.07l-0.06,-1.94l-1.26,-2.51l-0.99,-0.44l-0.43,-1.24l-1.43,-0.81l-2.15,-2.18l-1.02,-0.1l-2.01,-1.25l-3.18,-3.35l-0.59,-1.55l-3.13,-2.55l-1.59,-2.45l-1.19,-0.95l-0.61,-1.05l-4.42,-2.6l-1.19,-2.19l-1.21,-3.23l-1.37,-1.08l-1.12,-0.08l-1.75,-1.67l-0.79,-3.05ZM502.09,468.18l-0.33,0.17l0.18,-0.16l0.15,-0.02ZM498.69,470.85l-0.09,0.12l-0.04,0.02l0.13,-0.14ZM497.79,472.33l0.15,0.05l-0.2,0.18l0.04,-0.11l0.01,-0.12ZM497.02,473.23l-0.13,0.12l0.03,-0.09l0.09,-0.03ZM467.54,489.19l0.03,0.02l-0.02,0.01l-0.0,-0.03ZM453.94,547.19l0.75,-0.5l0.25,-0.68l0.11,1.08l-1.1,0.1ZM460.89,499.8l-0.14,-0.59l1.22,-0.36l-0.28,0.33l-0.79,0.63ZM463.51,497.84l0.1,-0.23l1.27,-0.88l-0.92,0.85l-0.45,0.26ZM465.8,496.12l0.28,-0.24l0.47,-0.04l-0.25,0.13l-0.5,0.15ZM457.96,502.92l0.71,-1.64l0.64,-0.71l-0.02,0.75l-1.33,1.6ZM451.06,515.13l0.06,-0.22l0.07,-0.15l-0.13,0.37ZM451.5,513.91l0.16,-0.35l0.02,-0.02l-0.18,0.37ZM452.44,511.95l-0.01,-0.04l0.05,-0.04l-0.04,0.08Z", "name": "Texas"}, "US-NH": {"path": "M829.94,105.42l0.2,-1.33l-1.43,-5.38l0.53,-1.45l-0.28,-2.22l1.0,-1.86l-0.13,-2.3l0.64,-2.28l-0.44,-0.62l0.29,-2.31l-0.93,-3.8l0.08,-0.7l0.3,-0.45l1.83,-0.8l0.7,-1.39l1.43,-1.62l0.74,-1.8l-0.25,-1.13l0.52,-0.62l-2.34,-3.49l0.87,-3.26l-0.11,-0.78l-0.81,-1.29l0.27,-0.59l-0.23,-0.7l0.48,-3.2l-0.36,-0.82l0.91,-1.49l2.44,0.33l0.65,-0.88l13.0,34.89l0.84,3.65l2.6,2.21l0.88,0.34l0.36,1.6l1.72,1.31l0.0,0.35l0.77,0.23l-0.06,0.58l-0.46,3.09l-1.57,0.24l-1.32,1.19l-0.51,0.94l-0.96,0.37l-0.5,1.68l-1.1,1.44l-17.61,4.74l-1.7,-1.43l-0.41,-0.89l-0.1,-2.0l0.54,-0.59l0.03,-0.52l-1.02,-5.18Z", "name": "New Hampshire"}, "US-NY": {"path": "M821.38,166.44l0.69,-2.05l0.62,-0.02l0.55,-0.75l0.76,0.15l0.54,-0.41l-0.04,-0.31l0.57,-0.03l0.28,-0.66l0.66,-0.02l0.2,-0.55l-0.42,-0.83l0.22,-0.53l0.61,-0.37l1.34,0.22l0.54,-0.59l1.45,-0.18l0.21,-0.8l1.85,0.02l1.08,-0.91l0.11,-0.78l0.62,0.24l0.43,-0.61l4.83,-1.29l2.26,-1.3l1.99,-2.91l-0.2,1.16l-0.98,0.86l-1.22,2.31l0.55,0.46l1.6,-0.35l0.28,0.63l-0.43,0.49l-1.37,0.87l-0.51,-0.07l-2.26,0.92l-0.08,0.93l-0.87,-0.0l-2.73,1.72l-1.01,0.15l-0.17,0.8l-1.24,0.09l-2.24,1.91l-4.44,2.17l-0.2,0.71l-0.29,0.08l-0.45,-0.83l-1.41,-0.06l-0.73,0.42l-0.42,0.8l0.23,0.32l-0.92,0.69l-0.76,-0.84l0.32,-1.05ZM828.05,159.06l-0.02,-0.01l0.02,-0.06l-0.01,0.08ZM845.16,149.05l0.06,-0.06l0.18,-0.06l-0.11,0.19l-0.13,-0.07ZM844.3,154.94l0.1,-0.89l0.74,-1.16l1.65,-1.52l1.01,0.31l0.05,-0.82l0.79,0.67l-3.36,3.21l-0.67,0.45l-0.31,-0.25ZM850.39,150.14l0.02,-0.03l0.07,-0.07l-0.09,0.1ZM722.09,155.56l3.76,-3.85l1.27,-2.19l1.76,-1.86l1.16,-0.78l1.28,-3.35l1.56,-1.3l0.53,-0.83l-0.21,-1.83l-1.61,-2.42l0.43,-1.13l-0.17,-0.78l-0.83,-0.53l-2.11,-0.0l0.04,-0.99l-0.57,-2.22l4.99,-2.94l4.49,-1.8l2.38,-0.19l1.84,-0.74l5.64,-0.24l3.13,1.25l3.16,-1.68l5.49,-1.06l0.58,0.45l0.68,-0.2l0.12,-0.98l1.45,-0.72l1.03,-0.93l0.75,-0.2l0.69,-2.05l1.87,-1.76l0.79,-1.26l1.12,0.03l1.13,-0.52l1.07,-1.63l-0.46,-0.7l0.36,-1.2l-0.25,-0.51l-0.64,0.02l-0.17,-1.17l-0.94,-1.59l-1.01,-0.62l0.12,-0.18l0.59,0.39l0.53,-0.27l0.75,-1.44l-0.01,-0.91l0.81,-0.65l-0.01,-0.97l-0.93,-0.19l-0.6,0.7l-0.28,0.12l0.56,-1.3l-0.81,-0.62l-1.26,0.05l-0.87,0.77l-0.92,-0.41l-0.06,-0.29l2.05,-2.5l1.78,-1.47l1.67,-2.64l0.7,-0.56l0.11,-0.59l0.78,-0.95l0.07,-0.56l-0.5,-0.95l0.78,-1.89l4.82,-7.61l4.77,-4.5l2.84,-0.51l19.67,-5.66l0.41,0.88l-0.08,2.01l1.02,1.22l0.43,3.8l2.29,3.25l-0.09,1.89l0.85,2.42l-0.59,1.07l-0.0,3.41l0.71,0.9l1.32,2.76l0.19,1.09l0.62,0.84l0.12,3.92l0.55,0.85l0.54,0.07l0.53,-0.61l0.06,-0.87l0.33,-0.07l1.05,1.12l3.97,15.58l0.74,1.2l0.22,15.32l0.6,0.62l3.57,16.23l1.26,1.34l-2.82,3.18l0.03,0.54l1.52,1.31l0.19,0.6l-0.78,0.88l-0.64,1.8l-0.41,0.39l0.15,0.69l-1.25,0.64l0.04,-4.02l-0.57,-2.28l-0.74,-1.62l-1.46,-1.1l-0.17,-1.13l-0.7,-0.1l-0.42,1.33l0.68,1.27l1.05,0.83l0.97,2.85l-13.75,-4.06l-1.28,-1.47l-2.39,0.24l-0.63,-0.43l-1.06,-0.15l-1.74,-1.91l-0.75,-2.33l0.12,-0.72l-0.36,-0.63l-0.56,-0.21l0.09,-0.46l-0.35,-0.42l-1.64,-0.68l-1.08,0.32l-0.53,-1.22l-1.92,-0.93l-34.6,8.73l-34.44,7.84l-1.11,-5.15ZM818.84,168.69l1.08,-0.48l0.14,0.63l-1.17,1.53l-0.05,-1.68ZM730.07,136.63l0.03,-0.69l0.78,-0.07l-0.38,1.09l-0.43,-0.33Z", "name": "New York"}, "US-HI": {"path": "M295.5,583.17l0.06,-1.75l4.12,-4.97l1.03,-3.4l-0.33,-0.64l0.94,-2.43l-0.05,-3.52l0.39,-0.78l2.47,-0.7l1.55,0.23l4.45,-1.4l0.51,-0.7l-0.17,-2.69l0.4,-1.66l1.78,-1.16l1.74,2.15l-0.15,0.94l1.88,3.6l0.94,0.35l5.13,7.65l0.86,3.93l-1.52,3.14l0.22,0.58l1.47,0.95l-0.68,2.07l0.35,1.51l1.6,3.0l-1.39,0.86l-2.28,-0.2l-3.27,0.51l-4.56,-1.32l-2.15,-1.34l-6.66,-0.15l-1.59,0.26l-1.56,1.19l-1.63,0.58l-1.14,0.02l-0.7,-2.54l-2.09,-2.18ZM306.33,530.7l1.6,0.08l0.51,2.07l-0.3,2.25l0.37,0.59l2.33,0.88l1.38,0.1l1.55,1.39l0.27,1.55l0.93,0.97l-0.13,1.05l1.83,2.52l-0.13,0.66l-0.61,0.48l-1.82,0.38l-1.84,-0.18l-1.47,-1.19l-2.21,-0.24l-2.69,-1.48l0.01,-1.23l1.15,-1.86l0.41,-2.07l-1.76,-1.28l-1.08,-1.75l-0.1,-2.61l1.79,-1.08ZM297.2,518.01l0.71,0.31l0.38,1.05l2.64,2.0l0.9,1.11l0.92,0.08l0.8,1.67l1.56,1.05l0.72,0.06l1.07,1.11l-1.31,0.41l-2.75,-0.66l-3.23,-3.93l-3.16,-2.01l-1.39,-0.44l-0.05,-0.7l1.58,-0.43l0.62,-0.67ZM301.59,541.55l-2.09,-0.98l-0.28,-0.51l2.92,0.34l-0.56,1.15ZM298.23,532.36l-0.92,-0.29l-0.72,-0.89l0.92,-2.06l-0.49,-1.73l2.6,1.38l0.61,2.08l0.14,1.06l-2.15,0.45ZM281.13,503.64l0.57,-1.85l-0.38,-0.9l-0.16,-2.84l0.75,-0.92l-0.12,-1.22l2.74,1.9l2.9,-0.62l1.56,0.15l0.38,1.01l-0.33,2.17l0.29,1.5l-0.69,0.6l-0.19,1.55l0.38,1.54l0.86,0.51l0.29,1.07l-0.52,1.14l0.53,1.28l-1.18,-0.0l-0.2,-0.48l-2.04,-0.86l-0.77,-2.83l-1.27,-0.38l0.8,-0.11l0.32,-0.46l-0.08,-0.66l-0.63,-0.68l-1.75,-0.32l0.23,1.82l-2.28,-1.1ZM259.66,469.47l-0.24,-2.03l-0.91,-0.69l-0.68,-1.23l0.08,-1.2l0.08,-0.34l2.39,-0.81l4.6,0.53l0.67,1.04l2.51,1.09l0.69,1.25l-0.15,1.9l-2.3,1.32l-0.74,1.3l-0.79,0.34l-2.78,0.09l-0.92,-1.53l-1.52,-1.0ZM245.78,462.61l-0.23,-0.74l1.03,-0.75l4.32,-0.72l0.43,0.3l-0.92,0.4l-0.68,0.94l-1.66,-0.5l-1.36,0.34l-0.94,0.72Z", "name": "Hawaii"}, "US-VT": {"path": "M805.56,72.69l26.03,-7.97l0.89,1.85l-0.74,2.37l-0.03,1.54l2.22,2.75l-0.51,0.58l0.26,1.13l-0.67,1.6l-1.35,1.49l-0.64,1.32l-1.72,0.7l-0.62,0.92l-0.1,0.98l0.93,3.74l-0.29,2.44l0.4,0.54l-0.6,2.11l0.15,2.19l-1.0,1.87l0.27,2.36l-0.53,1.54l1.43,5.44l-0.22,1.22l1.05,5.3l-0.58,0.85l0.11,2.31l0.6,1.26l1.51,1.1l-11.44,2.89l-0.57,-0.85l-4.02,-15.75l-1.72,-1.59l-0.91,0.25l-0.3,1.19l-0.12,-0.26l-0.11,-3.91l-0.68,-1.0l-0.14,-0.98l-1.37,-2.85l-0.63,-0.68l0.01,-3.15l0.6,-1.15l-0.86,-2.57l0.08,-1.93l-0.39,-0.91l-1.55,-1.63l-0.38,-0.81l-0.41,-3.71l-1.03,-1.27l0.11,-1.87l-0.43,-1.01Z", "name": "Vermont"}, "US-NM": {"path": "M230.86,422.88l11.82,-123.66l25.67,2.24l26.1,1.86l26.12,1.45l25.74,1.02l-0.31,10.24l-0.74,0.39l-3.59,98.69l-32.38,-1.34l-33.53,-2.02l-0.44,0.76l0.54,2.31l0.44,1.26l0.99,0.76l-30.55,-2.46l-0.43,0.36l-0.82,9.46l-14.63,-1.33Z", "name": "New Mexico"}, "US-NC": {"path": "M826.87,289.49l0.07,-0.05l-0.02,0.03l-0.04,0.02ZM819.58,272.4l0.2,0.23l-0.05,0.01l-0.16,-0.24ZM821.84,276.68l0.19,0.15l-0.02,0.18l-0.05,-0.08l-0.12,-0.25ZM676.72,321.77l0.92,0.17l1.52,-0.39l0.42,-0.39l0.52,-0.97l0.13,-2.7l1.34,-1.19l0.47,-1.05l2.24,-1.47l2.12,-0.52l0.76,0.18l1.32,-0.52l2.36,-2.52l0.78,-0.25l1.84,-2.29l1.48,-1.0l1.55,-0.19l1.15,-2.65l-0.28,-1.22l1.66,0.06l0.51,-1.65l0.93,-0.77l1.08,-0.77l0.51,1.52l1.07,0.33l1.34,-1.17l1.35,-2.64l2.49,-1.59l0.79,0.08l0.82,0.8l1.06,-0.21l0.84,-1.07l1.47,-4.18l1.08,-1.1l1.47,0.09l0.44,-0.31l-0.69,-1.26l0.4,-2.0l-0.42,-0.9l0.38,-1.25l7.42,-0.86l19.54,-3.36l37.22,-8.42l31.12,-7.87l0.4,1.21l3.54,3.24l1.0,1.53l-1.21,-1.0l-0.16,-0.63l-0.92,-0.4l-0.52,0.05l-0.24,0.65l0.66,0.54l0.59,1.56l-0.53,0.01l-0.91,-0.75l-2.31,-0.8l-0.4,-0.48l-0.55,0.13l-0.31,0.69l0.14,0.64l1.37,0.44l1.69,1.38l-1.11,0.66l-2.48,-1.2l-0.36,0.51l0.14,0.42l1.6,1.18l-1.84,-0.33l-2.23,-0.87l-0.46,0.14l0.01,0.48l0.6,0.7l1.71,0.83l-0.97,0.58l0.0,0.6l-0.43,0.53l-1.48,0.74l-0.89,-0.77l-0.61,0.22l-0.1,0.35l-0.2,-0.13l-1.32,-2.32l0.21,-2.63l-0.42,-0.48l-0.89,-0.22l-0.37,0.64l0.62,0.71l-0.43,0.99l-0.02,1.04l0.49,1.73l1.6,2.2l-0.31,1.28l0.48,0.29l2.97,-0.59l2.1,-1.49l0.27,0.01l0.37,0.79l0.76,-0.34l1.56,0.05l0.16,-0.71l-0.57,-0.32l1.29,-0.76l2.04,-0.46l-0.1,1.19l0.64,0.29l-0.6,0.88l0.89,1.19l-0.84,0.1l-0.19,0.66l1.38,0.46l0.26,0.94l-1.21,0.05l-0.19,0.66l0.66,0.59l1.25,-0.16l0.52,0.26l0.4,-0.38l0.18,-1.95l-0.75,-3.33l0.41,-0.48l0.56,0.43l0.94,0.06l0.28,-0.57l-0.29,-0.44l0.48,-0.57l1.71,1.84l-0.0,1.41l0.62,0.9l-0.53,0.18l-0.25,0.47l0.9,1.14l-0.08,0.37l-0.42,0.55l-0.78,0.09l-0.91,-0.86l-0.32,0.33l0.13,1.26l-1.08,1.61l0.2,0.57l-0.32,0.22l-0.15,0.98l-0.74,0.55l0.1,0.91l-0.9,0.96l-1.06,0.21l-0.59,-0.37l-0.52,0.52l-0.93,-0.81l-0.86,0.1l-0.4,-0.82l-0.59,-0.21l-0.52,0.38l0.08,0.94l-0.52,0.22l-1.42,-1.25l1.31,-0.4l0.23,-0.88l-0.57,-0.42l-2.02,0.31l-1.14,1.01l0.29,0.67l0.44,0.16l0.09,0.82l0.35,0.25l-0.03,0.12l-0.57,-0.34l-1.69,0.83l-1.12,-0.43l-1.45,0.06l-3.32,-0.7l0.42,1.08l0.97,0.45l0.36,0.64l0.63,0.11l0.87,-0.32l1.68,0.63l2.35,0.39l3.51,0.11l0.47,0.42l-0.06,0.52l-0.99,0.05l-0.38,0.5l0.13,0.23l-1.62,1.44l0.32,0.58l1.85,0.01l-2.55,3.5l-1.67,0.04l-1.59,-0.98l-0.9,-0.19l-1.21,-1.02l-1.12,0.07l0.07,0.47l1.04,1.14l2.32,2.09l2.68,0.26l1.31,0.49l1.71,-2.16l0.51,0.47l1.17,0.33l0.4,-0.57l-0.55,-0.9l0.87,0.16l0.19,0.57l0.66,0.24l1.63,-1.2l-0.18,0.61l0.29,0.57l-0.29,0.38l-0.43,-0.2l-0.41,0.37l0.03,0.9l-0.97,1.72l0.01,0.78l-0.71,-0.07l-0.06,-0.74l-1.12,-0.61l-0.42,0.47l0.27,1.45l-0.52,-1.1l-0.65,-0.16l-1.22,1.08l-0.21,0.52l0.25,0.27l-2.03,0.32l-2.75,1.84l-0.67,-1.04l-0.75,-0.29l-0.37,0.49l0.43,1.26l-0.57,-0.01l-0.09,0.82l-0.94,1.73l-0.91,0.85l-0.59,-0.26l0.49,-0.69l-0.02,-0.77l-1.06,-0.93l-0.08,-0.52l-1.69,-0.41l-0.16,0.47l0.43,1.16l0.2,0.33l0.58,0.07l0.3,0.61l-0.88,0.37l-0.08,0.71l0.65,0.64l0.77,0.18l-0.01,0.37l-2.12,1.67l-1.92,2.65l-2.0,4.31l-0.34,2.13l0.12,1.34l-0.15,-1.03l-1.01,-1.59l-0.55,-0.17l-0.3,0.48l1.17,3.95l-0.63,2.27l-3.9,0.19l-1.43,0.65l-0.35,-0.52l-0.58,-0.18l-0.54,1.07l-1.9,1.14l-0.61,-0.02l-23.25,-15.36l-1.05,-0.02l-18.68,3.49l-0.65,-2.77l-3.25,-2.84l-0.47,0.08l-1.23,1.31l-0.01,-1.29l-0.82,-0.54l-22.82,3.35l-0.64,-0.27l-0.62,0.46l-0.25,0.65l-3.98,1.93l-0.89,1.23l-1.01,0.08l-4.78,2.66l-20.95,3.93l-0.34,-4.55l0.7,-0.95ZM817.0,271.48l0.19,0.35l0.24,0.39l-0.45,-0.41l0.02,-0.32ZM807.53,290.29l0.2,0.32l-0.16,-0.09l-0.03,-0.23ZM815.31,299.15l0.16,-0.36l0.16,0.07l-0.13,0.29l-0.19,0.01ZM812.76,299.11l-0.06,-0.28l-0.03,-0.11l0.3,0.26l-0.21,0.13ZM812.97,264.02l0.37,-0.24l0.15,0.42l-0.42,0.07l-0.1,-0.25ZM791.92,329.4l0.04,-0.08l0.22,0.03l-0.0,0.09l-0.26,-0.05Z", "name": "North Carolina"}, "US-ND": {"path": "M438.54,42.78l2.06,6.9l-0.73,2.53l0.57,2.36l-0.27,1.17l0.47,1.99l0.01,3.26l1.42,3.95l0.45,0.54l-0.08,0.97l0.39,1.52l0.62,0.74l1.48,3.74l-0.06,3.9l0.42,0.7l0.5,8.35l0.51,1.54l0.51,0.25l-0.47,2.64l0.36,1.63l-0.14,1.75l0.69,1.1l0.2,2.16l0.49,1.13l1.8,2.56l0.15,2.2l0.51,1.08l0.17,1.39l-0.24,1.36l0.28,1.74l-27.89,0.73l-28.38,0.19l-28.38,-0.37l-28.49,-0.93l2.75,-65.47l23.08,0.78l25.57,0.42l25.57,-0.06l24.11,-0.49Z", "name": "North Dakota"}, "US-NE": {"path": "M422.58,174.02l3.92,2.71l3.93,1.9l1.34,-0.22l0.51,-0.47l0.36,-1.08l0.48,-0.2l2.49,0.34l1.32,-0.47l1.58,0.25l3.45,-0.65l2.37,1.98l1.4,0.14l1.55,0.77l1.45,0.08l0.88,1.1l1.49,0.17l-0.06,0.98l1.68,2.08l3.32,0.6l0.19,0.68l-0.22,1.87l1.13,1.94l0.01,2.29l1.15,1.08l0.34,1.72l1.73,1.46l0.07,1.88l1.5,2.11l-0.49,2.33l0.44,3.09l0.52,0.54l0.94,-0.2l-0.04,1.25l1.21,0.5l-0.41,2.36l0.21,0.44l1.12,0.4l-0.6,0.77l-0.09,1.01l0.13,0.59l0.82,0.5l0.16,1.45l-0.26,0.92l0.26,1.27l0.55,0.61l0.3,1.93l-0.22,1.33l0.23,0.72l-0.57,0.92l0.02,0.79l0.45,0.88l1.23,0.63l0.25,2.5l1.1,0.51l0.03,0.79l1.18,2.75l-0.23,0.96l1.16,0.21l0.8,0.99l1.1,0.24l-0.15,0.96l1.31,1.68l-0.21,1.12l0.51,0.91l-26.15,1.05l-27.83,0.63l-27.84,0.14l-27.89,-0.35l0.46,-21.66l-0.39,-0.41l-32.36,-1.04l1.85,-43.24l43.36,1.22l44.67,-0.04Z", "name": "Nebraska"}, "US-LA": {"path": "M508.97,412.97l-1.33,-21.76l51.44,-4.07l0.34,0.83l1.48,0.66l-0.92,1.35l-0.25,2.13l0.49,0.72l1.18,0.31l-1.21,0.47l-0.45,0.78l0.45,1.36l1.05,0.84l0.08,2.15l0.46,0.54l1.51,0.74l0.45,1.05l1.42,0.44l-0.87,1.22l-0.85,2.34l-0.75,0.04l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.22,1.16l-1.35,0.96l-1.08,1.89l-1.37,0.67l-0.68,0.83l-0.79,2.42l-0.25,3.52l-1.55,1.74l0.13,1.21l0.62,0.96l-0.35,2.38l-1.61,0.29l-0.6,0.57l0.28,0.97l0.64,0.59l-0.26,1.41l0.98,1.51l-1.18,1.18l-0.08,0.45l0.4,0.23l6.18,-0.55l29.23,-2.92l-0.68,3.47l-0.52,1.02l-0.2,2.24l0.69,0.98l-0.09,0.66l0.6,1.0l1.31,0.7l1.22,1.42l0.14,0.88l0.89,1.39l0.14,1.05l1.11,1.84l-1.85,0.39l-0.38,-0.08l-0.01,-0.56l-0.53,-0.57l-1.28,0.28l-1.18,-0.59l-1.51,0.17l-0.61,-0.98l-1.24,-0.86l-2.84,-0.47l-1.24,0.63l-1.39,2.3l-1.3,1.42l-0.42,0.91l0.07,1.2l0.55,0.89l0.82,0.57l4.25,0.82l3.35,-1.0l1.32,-1.19l0.68,-1.19l0.34,0.59l1.08,0.43l0.59,-0.4l0.81,0.03l0.51,-0.46l-0.76,1.21l-1.12,-0.12l-0.57,0.32l-0.38,0.62l0.0,0.83l0.77,1.22l1.48,-0.02l0.65,0.89l1.1,0.48l0.94,-0.21l0.51,-0.45l0.46,-1.11l-0.02,-1.37l0.93,-0.58l0.42,-0.99l0.23,0.05l0.1,1.16l-0.24,0.25l0.18,0.57l0.43,0.15l-0.07,0.75l1.34,1.08l0.34,-0.16l-0.48,0.59l0.18,0.63l-0.35,0.13l-0.52,-0.57l-0.92,-0.19l-1.0,1.89l-0.85,0.14l-0.46,0.53l0.16,1.19l-1.6,-0.61l-0.43,0.19l0.04,0.46l1.14,1.06l-1.17,-0.14l-0.92,0.61l0.68,0.43l1.26,2.04l2.74,0.97l-0.08,1.2l0.34,0.41l2.07,-0.32l0.77,0.17l0.17,0.53l0.73,0.32l1.35,-0.34l0.53,0.78l1.08,-0.46l1.13,0.74l0.14,0.3l-0.4,0.62l1.54,0.86l-0.39,0.65l0.39,0.58l-0.18,0.62l-0.95,1.49l-1.3,-1.56l-0.68,0.34l0.1,0.66l-0.38,0.12l0.41,-1.88l-1.33,-0.76l-0.5,0.5l0.2,1.18l-0.54,0.45l-0.27,-1.02l-0.57,-0.25l-0.89,-1.27l0.03,-0.77l-0.96,-0.14l-0.47,0.5l-1.41,-0.17l-0.41,-0.61l0.14,-0.63l-0.39,-0.46l-0.45,-0.02l-0.81,0.73l-1.18,0.02l0.12,-1.23l-0.46,-0.88l-0.91,0.04l0.09,-0.96l-0.37,-0.36l-0.91,-0.03l-0.22,0.58l-0.85,-0.38l-0.48,0.27l-2.61,-1.26l-1.24,-0.03l-0.67,-0.64l-0.61,0.19l-0.3,0.56l-0.05,1.25l1.72,0.94l1.67,0.35l-0.16,0.92l0.28,0.39l-0.34,0.35l0.23,0.68l-0.76,0.95l-0.02,0.66l0.81,0.97l-0.95,1.43l-1.33,0.94l-0.76,-1.15l0.22,-1.5l-0.35,-0.92l-0.49,-0.18l-0.4,0.36l-1.15,-1.08l-0.59,0.42l-0.76,-1.05l-0.62,-0.2l-0.64,1.33l-0.85,0.26l-0.88,-0.53l-0.86,0.53l-0.1,0.62l0.48,0.41l-0.68,0.56l-0.13,1.44l-0.46,0.13l-0.39,0.83l-0.92,0.08l-0.11,-0.68l-1.6,-0.4l-0.77,0.97l-1.92,-0.93l-0.3,-0.54l-0.99,0.01l-0.35,0.6l-1.16,-0.51l0.42,-0.4l0.01,-1.46l-0.38,-0.57l-1.9,-1.19l-0.08,-0.54l-0.83,-0.72l-0.09,-0.91l0.73,-1.15l-0.34,-1.14l-0.87,-0.19l-0.34,0.57l0.16,0.43l-0.59,0.81l0.04,0.91l-1.8,-0.4l0.07,-0.39l-0.47,-0.54l-1.97,0.76l-0.7,-2.22l-1.32,0.23l-0.18,-2.12l-1.31,-0.35l-1.89,0.3l-1.09,0.65l-0.21,-0.71l0.84,-0.26l-0.05,-0.8l-0.6,-0.58l-1.03,-0.1l-0.85,0.42l-0.95,-0.15l-0.4,0.8l-2.0,1.11l-0.63,-0.31l-1.29,0.71l0.54,1.37l0.8,0.31l0.97,1.51l-1.39,0.19l-1.83,1.03l-3.69,-0.4l-1.24,0.21l-3.09,-0.45l-1.99,-0.68l-1.81,-1.07l-3.7,-1.1l-3.19,-0.48l-2.53,0.58l-5.62,0.45l-1.0,0.26l-1.82,1.25l-0.59,-0.63l-0.26,-1.08l1.59,-0.47l0.7,-1.76l-0.02,-1.55l-0.39,-0.56l1.11,-1.54l0.23,-1.59l-0.5,-1.83l0.07,-1.46l-0.66,-0.7l-0.21,-1.04l0.83,-2.22l-0.64,-1.95l0.76,-0.84l0.3,-1.49l0.78,-0.94l0.79,-2.83l-0.18,-1.42l0.58,-0.97l-0.75,-1.33l0.84,-0.39l0.2,-0.44l-0.89,-1.36l0.03,-2.13l-1.07,-0.23l-0.57,-1.57l-0.92,-0.84l0.28,-1.27l-0.81,-0.76l-0.33,-0.95l-0.64,-0.34l0.22,-0.98l-1.16,-0.58l-0.81,-0.93l0.16,-2.46l-0.68,-1.93l-1.33,-1.98l-2.63,-2.21ZM607.49,467.45l-0.03,-0.03l-0.07,-0.04l0.13,-0.01l-0.03,0.08ZM607.51,465.85l-0.02,-0.01l0.03,-0.01l-0.02,0.02ZM567.04,468.98l-2.0,-0.42l-0.66,-0.5l0.73,-0.43l0.35,-0.76l0.39,0.49l0.83,0.21l-0.15,0.61l0.5,0.81ZM550.39,463.0l1.73,-1.05l3.34,1.07l-0.69,0.56l-0.17,0.81l-0.68,0.17l-3.53,-1.57Z", "name": "Louisiana"}, "US-SD": {"path": "M336.37,128.84l0.3,-0.53l0.75,-19.93l28.5,0.93l28.4,0.37l28.4,-0.19l27.78,-0.73l-0.18,1.71l-0.73,1.71l-2.9,2.46l-0.42,1.27l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.01,0.84l0.57,1.02l1.45,38.83l-1.84,0.09l-0.42,0.56l0.24,1.44l0.88,1.14l0.01,1.45l-0.65,0.36l0.17,1.48l0.48,0.43l1.09,0.04l0.34,1.68l-0.16,0.91l-0.62,0.83l0.02,1.73l-0.68,2.45l-0.49,0.44l-0.67,1.88l0.5,1.1l1.33,1.08l-0.16,0.62l0.64,0.66l0.35,1.15l-1.65,-0.28l-0.34,-0.94l-0.85,-0.73l0.19,-0.61l-0.28,-0.59l-1.58,-0.23l-1.03,-1.18l-1.57,-0.11l-1.51,-0.75l-1.34,-0.12l-2.38,-1.99l-3.78,0.6l-1.65,-0.25l-1.19,0.46l-2.62,-0.33l-0.98,0.48l-0.76,1.45l-0.72,0.05l-3.67,-1.82l-4.13,-2.8l-44.83,0.05l-43.33,-1.22l1.79,-43.2Z", "name": "South Dakota"}, "US-DC": {"path": "M781.25,216.97l0.45,-0.77l2.04,1.26l-0.66,1.14l-0.55,-1.05l-1.28,-0.58Z", "name": "District of Columbia"}, "US-DE": {"path": "M798.52,195.11l0.42,-1.51l0.92,-1.11l1.72,-0.71l1.12,0.06l-0.33,0.56l-0.08,1.38l-1.13,1.92l0.1,1.09l1.11,1.1l-0.07,1.52l2.29,2.48l1.25,0.6l0.93,1.52l0.99,3.35l1.72,1.57l0.57,1.32l3.06,1.99l1.44,-0.09l0.45,1.25l-1.06,0.56l0.16,1.32l0.36,0.19l-0.83,0.57l-0.08,1.21l0.66,0.21l0.85,-0.73l0.71,0.34l0.3,-0.21l0.75,1.55l-10.19,2.82l-8.12,-26.12Z", "name": "Delaware"}, "US-FL": {"path": "M630.28,423.69l47.19,-6.86l1.53,1.91l0.87,2.72l1.47,1.0l48.79,-5.11l1.03,1.38l0.03,1.09l0.55,1.05l1.04,0.48l1.64,-0.28l0.85,-0.75l-0.14,-4.57l-0.98,-1.49l-0.22,-1.77l0.28,-0.74l0.62,-0.3l0.12,-0.7l5.6,0.96l4.03,-0.16l0.14,1.24l-0.75,-0.12l-0.33,0.43l0.25,1.54l2.11,1.81l0.22,1.01l0.42,0.38l0.29,1.92l1.87,3.29l1.7,4.87l0.73,0.84l0.51,1.5l1.64,2.46l0.64,1.57l2.79,3.71l1.93,3.18l2.29,2.77l0.16,0.6l0.63,0.36l6.82,7.53l-0.48,-0.03l-0.27,0.61l-1.35,-0.02l-0.34,-0.65l0.38,-1.38l-0.16,-0.56l-2.3,-0.92l-0.46,0.53l1.0,2.8l0.78,0.97l2.14,4.77l9.92,13.71l1.37,3.11l3.66,5.34l-1.38,-0.35l-0.43,0.74l0.8,0.65l0.85,0.24l0.56,-0.22l1.46,0.94l2.05,3.05l-0.5,0.34l-0.12,0.53l1.16,0.53l0.89,1.83l-0.08,1.06l0.59,0.95l0.61,2.64l-0.27,0.75l0.93,8.98l-0.31,1.07l0.46,0.67l0.5,3.1l-0.81,1.46l0.07,2.23l-0.84,0.74l-0.22,1.8l-0.48,0.85l0.21,1.47l-0.3,1.75l0.54,1.74l0.45,0.23l-1.15,1.8l-0.39,1.28l-0.94,0.24l-0.53,-0.22l-1.37,0.45l-0.35,1.06l-0.89,0.3l-0.18,0.58l-0.85,0.67l-1.44,0.14l-0.27,-0.32l-1.23,-0.1l-0.9,1.05l-3.17,1.13l-1.06,-0.59l-0.7,-1.04l0.06,-1.79l1.0,0.84l1.64,0.47l0.26,0.63l0.52,0.07l1.35,-0.72l0.2,-0.69l-0.26,-0.64l-1.58,-1.11l-2.4,-0.26l-0.91,-0.46l-0.85,-1.67l-0.89,-0.72l0.22,-0.98l-0.48,-0.28l-0.53,0.15l-1.38,-2.51l-0.44,-0.3l-0.64,0.07l-0.44,-0.61l0.22,-0.89l-0.7,-0.65l-1.21,-0.6l-1.06,-0.08l-0.75,-0.54l-0.57,0.18l-2.8,-0.59l-0.5,0.64l0.25,-0.91l-0.46,-0.42l-0.87,0.12l-0.26,-0.72l-0.88,-0.65l-0.61,-1.41l-0.55,-0.11l-0.72,-2.94l-0.77,-1.0l-0.16,-1.52l-0.44,-0.83l-0.71,-0.89l-0.49,-0.15l-0.12,0.93l-1.29,-0.26l1.06,-1.3l0.3,-0.75l-0.12,-0.63l0.86,-1.46l0.65,-0.34l0.28,-0.83l-0.61,-0.38l-1.42,0.93l-0.89,1.29l-0.42,2.17l-1.37,0.35l-0.21,-1.33l-0.79,-1.33l-0.27,-4.04l-0.86,-0.6l1.63,-1.33l0.22,-0.97l-0.58,-0.42l-3.06,1.92l-0.75,-0.66l-0.4,0.26l-1.27,-0.89l-0.37,0.74l1.13,1.09l0.52,0.1l1.26,2.0l-1.04,0.23l-1.42,-0.38l-0.84,-1.6l-1.13,-0.6l-1.94,-2.55l-1.04,-2.28l-1.28,-0.87l0.1,-0.87l-0.97,-1.8l-1.77,-0.98l0.09,-0.67l0.99,-0.41l-0.35,-0.49l0.44,-0.73l-0.39,-0.35l0.4,-1.21l2.47,-4.47l-1.05,-2.41l-0.68,-0.46l-0.92,0.42l-0.28,0.93l0.29,1.2l-0.24,0.03l-0.73,-2.44l-0.99,-0.28l-1.19,-0.87l-1.52,-0.31l0.29,1.95l-0.48,0.61l0.27,0.59l2.21,0.56l0.25,0.97l-0.37,2.46l-0.31,-0.58l-0.8,-0.22l-2.13,-1.53l-0.41,0.2l-0.29,-0.63l0.59,-2.11l0.07,-2.97l-0.66,-1.97l0.42,-0.51l0.48,-1.91l-0.24,-0.54l0.66,-3.04l-0.35,-5.26l-0.71,-1.7l0.35,-0.47l-0.47,-2.18l-2.1,-1.33l-0.05,-0.52l-0.55,-0.43l-0.1,-1.01l-0.92,-0.73l-0.55,-1.51l-0.64,-0.25l-1.44,0.32l-1.03,-0.2l-1.57,0.54l-1.14,-1.74l-1.51,-0.48l-0.19,-0.6l-1.35,-1.51l-0.87,-0.59l-0.62,0.07l-1.52,-1.16l-0.8,-0.21l-0.51,-2.75l-3.06,-1.13l-0.65,-0.59l-0.52,-1.23l-2.15,-1.93l-2.19,-1.09l-1.45,-0.12l-3.44,-1.68l-2.85,0.98l-1.0,-0.4l-1.05,0.42l-0.35,0.68l-1.33,0.68l-0.5,0.7l0.03,0.64l-0.73,-0.22l-0.59,0.6l0.67,0.94l1.51,0.08l0.41,0.21l-3.03,0.23l-1.58,1.51l-0.91,0.45l-1.3,1.56l-1.56,1.03l-0.32,0.13l0.2,-0.48l-0.26,-0.54l-0.66,-0.04l-0.96,0.75l-1.12,1.5l-2.2,0.23l-2.11,1.06l-0.78,0.03l-0.27,-2.03l-1.71,-2.23l-2.21,-1.0l-0.18,-0.41l-2.51,-1.5l2.79,1.33l1.21,-0.74l0.0,-0.74l-1.32,-0.34l-0.36,0.55l-0.21,-1.01l-0.34,-0.1l0.13,-0.52l-0.49,-0.33l-1.39,0.61l-2.3,-0.76l0.65,-1.08l0.83,-0.1l1.03,-1.45l-0.91,-0.95l-0.46,0.12l-0.49,1.02l-0.44,-0.04l-0.81,0.56l-0.72,-0.9l-0.7,0.09l-0.17,0.38l-1.34,0.73l-0.14,0.68l0.29,0.46l-3.95,-1.35l-5.05,-0.71l0.12,-0.24l1.27,0.29l0.61,-0.53l2.1,0.39l0.23,-0.78l-0.94,-1.02l0.09,-0.7l-0.63,-0.28l-0.5,0.32l-0.28,-0.47l-1.9,0.19l-2.25,1.1l0.3,-0.63l-0.41,-0.58l-0.96,0.35l-0.58,-0.25l-0.23,0.44l0.2,0.71l-1.45,0.8l-0.4,0.63l-5.18,0.97l0.32,-0.52l-0.4,-0.52l-1.35,-0.28l-0.72,-0.53l0.69,-0.53l0.01,-0.78l-0.68,-0.13l-0.81,-0.66l-0.46,0.11l0.14,0.76l-0.42,1.77l-1.05,-1.39l-0.69,-0.45l-0.55,0.07l-0.3,0.71l0.82,1.77l-0.25,0.79l-1.39,0.99l-0.05,1.04l-0.6,0.22l-0.17,0.57l-1.48,0.56l0.28,-0.65l-0.21,-0.46l1.14,-1.03l0.07,-0.74l-0.4,-0.58l-1.19,-0.24l-0.41,-0.84l0.3,-1.7l-0.18,-1.61l-2.17,-1.12l-2.39,-2.46l0.32,-1.44l-0.15,-1.04ZM767.29,490.44l0.48,1.07l0.9,0.39l0.78,-0.15l1.41,1.67l0.91,0.58l1.86,0.69l1.61,0.07l0.55,-0.44l-0.08,-0.87l0.55,-0.65l-0.16,-1.21l0.76,-1.36l0.09,-1.81l-0.64,-1.62l-1.46,-2.01l-1.74,-1.32l-1.19,-0.13l-1.12,0.83l-1.83,3.16l-2.12,1.94l-0.13,0.77l0.57,0.41ZM644.36,434.13l-0.94,0.26l0.41,-0.44l0.53,0.18ZM665.13,435.7l0.98,-0.28l0.35,0.32l0.09,0.72l-1.42,-0.75ZM770.56,455.01l0.42,0.56l-0.43,0.75l0.0,-1.31ZM788.88,525.23l0.01,-0.07l0.01,0.03l-0.03,0.04ZM789.47,522.87l-0.22,-0.23l0.49,-0.32l-0.27,0.55ZM768.83,453.61l0.21,0.76l-0.31,2.33l0.28,1.79l-1.38,-3.23l1.19,-1.65ZM679.81,445.61l0.22,-0.2l0.36,0.02l-0.11,0.42l-0.47,-0.25Z", "name": "Florida"}, "US-WA": {"path": "M38.52,55.26l0.46,-1.32l0.18,0.45l0.65,0.3l1.04,-0.74l0.43,0.59l0.7,-0.03l0.17,-0.77l-0.92,-1.56l0.79,-0.74l-0.09,-1.36l0.49,-0.39l-0.1,-1.03l0.81,-0.27l0.05,0.5l0.48,0.41l0.95,-0.31l-0.09,-0.68l-1.35,-1.65l-0.9,0.15l-1.88,-0.56l0.17,-1.98l0.66,0.53l0.52,-0.07l0.29,-0.56l-0.16,-0.67l3.3,-0.52l0.26,-0.69l-1.7,-0.96l-0.86,-0.14l-0.37,-1.51l-0.7,-0.42l-0.81,-0.02l0.32,-4.73l-0.49,-1.28l0.1,-0.69l-0.4,-0.34l0.76,-5.74l-0.13,-2.46l-0.45,-0.62l-0.16,-1.36l-0.65,-1.33l-0.73,-0.57l-0.32,-2.45l0.35,-2.27l-0.15,-1.11l1.74,-3.3l-0.52,-1.23l4.59,3.9l1.19,0.38l0.92,0.75l0.81,1.3l1.86,1.08l3.24,0.91l0.84,0.77l1.42,0.11l1.73,1.02l2.33,0.73l1.46,-0.47l0.52,0.29l0.55,0.69l-0.03,1.09l0.55,0.74l0.31,0.11l0.49,-0.35l0.07,-0.75l0.45,0.03l0.63,1.39l-0.4,0.58l0.34,0.49l0.56,-0.04l0.72,-0.84l-0.38,-1.7l1.03,-0.24l-0.44,0.23l-0.21,0.69l1.27,4.41l-0.46,0.1l-1.67,1.73l0.22,-1.29l-0.22,-0.41l-1.31,0.31l-0.38,0.81l0.09,0.95l-1.37,1.7l-1.98,1.38l-1.06,1.41l-0.96,0.69l-1.1,1.67l-0.06,0.71l0.62,0.6l0.96,0.12l2.77,-0.48l1.22,-0.58l-0.03,-0.7l-0.64,-0.23l-2.94,0.79l-0.35,-0.3l3.23,-3.42l3.06,-0.88l0.89,-1.51l1.73,-1.54l0.53,0.57l0.54,-0.19l0.22,-1.81l-0.06,2.25l0.26,0.91l-0.99,-0.21l-0.64,0.77l-0.41,-0.73l-0.52,-0.19l-0.39,0.64l0.3,0.71l0.02,1.63l-0.21,-1.07l-0.67,-0.21l-0.47,0.69l-0.07,0.75l0.46,0.66l-0.63,0.58l-0.0,0.45l0.42,0.17l1.68,-0.57l0.25,1.09l-1.08,1.79l-0.08,1.05l-0.83,0.7l0.13,1.0l-0.85,-0.68l1.12,-1.44l-0.23,-0.96l-1.96,1.08l-0.38,0.64l-0.05,-2.11l-0.52,0.02l-1.03,1.59l-1.26,0.53l-1.14,1.87l-1.51,0.3l-0.46,0.43l-0.21,1.18l1.11,-0.03l-0.25,0.36l0.27,0.37l0.93,0.02l0.06,0.68l0.53,0.47l0.52,-0.27l0.35,-1.76l0.14,0.42l0.83,-0.15l1.11,1.48l1.31,-0.61l1.65,-1.48l0.98,-1.56l0.63,0.78l0.73,0.14l0.44,-0.23l-0.06,-0.86l1.56,-0.55l0.35,-0.94l-0.33,-1.27l0.22,-1.19l-0.18,-1.36l0.83,0.2l0.3,-0.92l-0.19,-0.75l-0.72,-0.63l0.89,-1.13l0.07,-1.75l1.24,-1.24l0.61,-1.37l1.61,-0.49l0.78,-1.16l-0.45,-0.66l-0.51,-0.02l-0.86,-1.3l0.16,-2.09l-0.26,-0.87l0.49,-0.79l0.06,-0.84l-1.15,-1.73l-0.63,-0.4l-0.17,-0.64l0.18,-0.5l0.59,0.23l0.53,-0.33l0.24,-1.8l0.79,-0.24l0.3,-1.0l-0.61,-2.32l0.44,-0.53l-0.03,-0.86l-0.96,-0.88l-0.95,0.3l-1.09,-2.66l0.93,-1.83l41.31,9.4l38.96,7.65l-9.66,54.39l-0.47,1.02l1.04,3.0l0.13,2.0l-1.0,1.3l0.73,1.88l-31.18,-5.92l-1.67,0.79l-7.24,-1.02l-1.68,0.92l-4.19,-0.12l-3.18,0.45l-1.64,0.75l-0.88,-0.26l-1.2,0.3l-1.51,-0.23l-2.43,-0.94l-0.91,0.46l-3.45,0.51l-2.11,-0.71l-1.65,0.3l-0.31,-1.36l-1.09,-0.88l-4.34,-1.46l-2.32,-0.11l-1.15,-0.51l-1.27,0.21l-1.89,0.86l-4.5,0.58l-1.11,-0.71l-1.15,-0.3l-1.61,-1.15l-1.84,-0.51l-0.63,-0.81l0.64,-6.82l-0.47,-0.95l-0.22,-1.9l-0.98,-1.35l-1.96,-1.67l-2.82,-0.11l-1.03,-1.31l-0.15,-1.05l-0.56,-0.63l-2.36,-0.31l-0.56,-0.3l-0.24,-0.79l-0.5,-0.18l-0.97,0.35l-0.84,-0.26l-1.1,0.4l-0.97,-1.47l-0.89,-0.22ZM61.85,39.78l0.16,0.74l-0.42,0.49l0.0,-0.91l0.26,-0.31ZM71.27,20.38l-0.61,0.87l-0.15,0.52l0.11,-1.01l0.65,-0.38ZM71.14,15.62l-0.09,-0.05l0.05,-0.04l0.04,0.1ZM70.37,15.48l-0.77,0.39l0.37,-0.68l-0.07,-0.6l0.22,-0.07l0.25,0.97ZM57.56,42.45l0.05,-0.02l-0.01,0.01l-0.04,0.02ZM67.75,19.23l1.73,-2.1l0.47,-0.02l0.53,1.71l-0.35,-0.55l-0.51,-0.12l-0.55,0.44l-0.35,-0.09l-0.35,0.73l-0.63,-0.01ZM67.87,20.4l0.44,0.0l0.61,0.5l0.08,0.35l-0.79,-0.2l-0.33,-0.65ZM68.84,23.16l-0.1,0.51l-0.0,0.0l-0.02,-0.24l0.12,-0.28ZM69.15,25.42l0.08,0.04l0.12,-0.04l-0.16,0.11l-0.05,-0.1ZM69.52,25.33l0.48,-0.93l1.02,1.21l0.11,1.12l-0.34,0.36l-0.34,-0.09l-0.27,-1.55l-0.67,-0.12ZM66.34,9.97l0.48,-0.34l0.18,1.51l-0.22,-0.05l-0.44,-1.12ZM68.04,9.66l0.83,0.8l-0.65,0.31l-0.18,-1.11ZM66.69,38.03l0.34,-1.07l0.21,-0.25l-0.03,1.07l-0.52,0.26ZM66.99,33.31l0.1,-1.04l0.35,-0.34l-0.23,1.56l-0.22,-0.18ZM66.51,14.27l-0.41,-0.4l0.6,-0.75l-0.18,0.61l-0.01,0.55ZM66.68,14.62l0.4,0.2l-0.08,0.12l-0.29,-0.12l-0.03,-0.2ZM66.74,12.96l-0.01,-0.1l0.05,-0.12l-0.04,0.23ZM64.36,13.12l-1.06,-0.82l0.19,-1.81l1.33,1.92l-0.35,0.18l-0.11,0.54ZM62.18,42.55l0.23,-0.25l0.02,0.01l-0.13,0.31l-0.12,-0.07ZM60.04,40.3l-0.09,-0.19l0.04,-0.07l0.0,0.13l0.05,0.14Z", "name": "Washington"}, "US-KS": {"path": "M477.9,239.67l0.44,0.63l0.76,0.18l1.04,0.8l2.19,-1.08l-0.0,0.75l1.08,0.79l0.23,1.44l-0.95,-0.15l-0.6,0.31l-0.17,0.97l-1.14,1.37l-0.06,1.14l-0.79,0.5l0.04,0.64l1.56,2.1l2.0,1.49l0.2,1.13l0.42,0.86l0.74,0.56l0.32,1.11l1.89,0.91l1.54,0.26l2.67,46.82l-31.55,1.48l-31.97,0.88l-31.98,0.26l-32.05,-0.37l1.21,-65.47l27.9,0.35l27.86,-0.14l27.85,-0.64l27.68,-1.12l1.65,1.23Z", "name": "Kansas"}, "US-WI": {"path": "M598.7,107.43l0.83,-0.15l-0.13,0.81l-0.56,0.01l-0.14,-0.68ZM594.22,116.05l0.47,-0.41l0.26,-2.36l0.95,-0.25l0.64,-0.69l0.22,-1.4l0.41,-0.63l0.63,-0.03l0.06,0.38l-0.76,0.06l-0.18,0.51l0.17,1.27l-0.38,0.17l-0.11,0.58l0.56,0.57l-0.24,0.65l-0.5,0.33l-0.69,1.91l0.07,1.23l-1.05,2.28l-0.41,0.15l-0.86,-0.97l-0.19,-0.72l0.31,-1.57l0.62,-1.05ZM510.06,124.08l0.41,-0.27l0.28,-0.9l-0.45,-1.48l0.04,-1.91l0.7,-1.16l0.53,-2.25l-1.61,-2.91l-0.83,-0.36l-1.28,-0.01l-0.21,-2.31l1.67,-2.26l-0.05,-0.77l0.77,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.75l1.16,-0.14l1.04,-1.56l-0.97,-12.11l1.03,-0.35l0.22,-1.1l0.73,-0.97l0.78,0.69l1.68,0.64l2.61,-0.56l3.28,-1.57l2.65,-0.82l2.21,-2.12l0.31,0.29l1.39,-0.11l1.25,-1.48l0.79,-0.58l1.04,-0.1l0.4,-0.52l1.07,0.99l-0.48,1.68l-0.67,1.01l0.23,1.61l-1.21,2.21l0.64,0.66l2.5,-1.09l0.72,-0.86l2.16,1.22l2.34,0.47l0.44,0.54l0.86,-0.13l1.6,0.7l2.23,3.54l15.48,2.52l4.65,1.96l1.68,-0.17l1.63,0.42l1.33,-0.59l3.17,0.71l2.18,0.09l0.85,0.41l0.56,0.89l-0.42,1.09l0.41,0.77l3.4,0.63l1.41,1.13l-0.16,0.71l0.59,1.11l-0.36,0.81l0.43,1.25l-0.78,1.25l-0.03,1.76l0.91,0.63l1.38,-0.26l1.02,-0.72l0.2,0.26l-0.79,2.44l0.04,1.31l1.32,1.46l0.84,0.35l-0.24,2.02l-2.42,1.2l-0.51,0.79l0.04,1.26l-1.61,3.49l-0.4,3.5l1.11,0.82l0.92,-0.04l0.5,-0.36l0.49,-1.37l1.82,-1.47l0.66,-2.53l1.06,-1.7l0.14,0.25l0.45,-0.07l0.57,-0.7l0.88,-0.4l1.12,1.12l0.59,0.19l-0.29,2.21l-1.18,2.82l-0.56,5.58l0.23,1.11l0.8,0.93l0.07,0.52l-0.51,0.98l-1.3,1.34l-0.86,3.89l0.15,2.57l0.72,1.2l0.06,1.24l-1.07,3.22l0.12,2.12l-0.73,2.11l-0.28,2.47l0.59,2.02l-0.04,1.32l0.49,0.54l-0.21,1.7l0.92,0.78l0.54,2.43l1.2,1.54l0.08,1.69l-0.33,1.45l0.47,2.95l-44.2,4.6l-0.19,-0.79l-1.56,-2.19l-4.94,-0.84l-1.06,-1.35l-0.36,-1.69l-0.9,-1.21l-0.86,-4.9l1.04,-2.62l-0.09,-0.99l-0.71,-0.79l-1.44,-0.48l-0.71,-1.76l-0.47,-6.02l-0.7,-1.4l-0.52,-2.56l-1.15,-0.6l-1.1,-1.56l-0.93,-0.11l-1.17,-0.75l-1.71,0.09l-2.67,-1.79l-2.3,-3.5l-2.64,-2.1l-2.94,-0.53l-0.73,-1.24l-1.12,-1.0l-3.12,-0.45l-3.53,-2.74l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.88,-3.11ZM541.58,78.25l0.05,-0.28l0.03,0.16l-0.08,0.12ZM537.91,83.72l0.28,-0.21l0.05,0.08l-0.33,0.12Z", "name": "Wisconsin"}, "US-OR": {"path": "M10.69,140.12l0.01,-1.77l0.5,-0.84l0.32,-1.95l1.12,-1.91l0.24,-1.9l-0.72,-2.57l-0.33,-0.15l-0.12,-1.81l3.04,-3.82l2.5,-5.98l0.01,0.77l0.52,0.52l0.49,-0.28l0.6,-1.6l0.47,-0.48l0.31,0.98l1.12,0.41l0.33,-0.54l-0.45,-1.76l0.27,-0.87l-0.45,-0.14l-0.79,0.32l1.74,-3.16l1.13,-0.96l0.89,0.3l0.49,-0.29l-0.47,-1.08l-0.81,-0.4l1.77,-4.63l0.47,-0.57l0.02,-0.99l1.08,-2.67l0.62,-2.6l1.04,-1.92l0.33,0.28l0.66,-0.33l-0.04,-0.6l-0.76,-0.62l1.06,-2.6l0.32,0.22l0.59,-0.19l0.13,-0.35l-0.04,-0.51l-0.57,-0.32l0.85,-3.84l1.23,-1.8l0.83,-3.04l1.14,-1.76l0.83,-2.45l0.26,-1.21l-0.18,-0.5l1.19,-1.08l-0.32,-1.64l0.96,0.57l0.78,-0.63l-0.39,-0.75l0.2,-0.65l-0.77,-0.77l0.51,-1.07l1.3,-0.86l0.06,-0.46l-0.93,-0.34l-0.33,-1.25l0.97,-2.14l-0.04,-1.48l0.86,-0.53l0.58,-1.33l0.18,-1.96l-0.21,-1.45l0.83,1.17l0.6,0.18l-0.11,0.89l0.55,0.53l0.83,-0.96l-0.27,-0.99l0.21,-0.07l0.24,0.56l0.69,0.32l1.51,0.04l0.37,-0.36l1.37,-0.19l0.99,2.08l2.43,0.92l1.25,-0.64l0.78,0.04l1.72,1.51l0.77,1.04l0.21,1.9l0.43,0.78l-0.03,2.05l-0.39,1.24l0.19,0.93l-0.43,1.74l0.26,1.45l0.79,0.85l1.94,0.56l1.44,1.05l1.36,0.41l1.04,0.69l4.98,-0.53l2.9,-1.06l1.14,0.51l2.23,0.09l4.24,1.43l0.69,0.54l0.19,1.15l0.57,0.58l1.86,-0.27l2.11,0.71l3.79,-0.55l0.69,-0.42l2.19,0.93l1.64,0.24l1.2,-0.3l0.88,0.26l1.89,-0.78l3.07,-0.43l4.16,0.13l1.61,-0.91l7.17,1.02l0.96,-0.19l0.79,-0.58l31.27,5.93l0.23,1.81l0.93,1.82l1.16,0.63l1.96,1.86l0.57,2.45l-0.16,1.0l-3.69,4.55l-0.4,1.41l-1.39,2.63l-2.21,2.42l-0.65,2.68l-1.49,1.84l-2.23,1.5l-1.92,3.35l-1.49,1.27l-0.62,2.02l-0.12,1.87l0.28,0.92l0.56,0.61l0.54,0.04l0.39,-0.35l0.63,0.76l0.89,-0.05l0.07,0.88l0.81,0.95l-0.46,1.0l-0.65,0.06l-0.33,0.4l0.21,1.8l-1.03,2.56l-1.22,1.41l-6.86,39.16l-26.21,-4.99l-28.9,-6.05l-28.8,-6.61l-28.95,-7.24l-1.48,-2.59l0.2,-2.36l-0.23,-0.89Z", "name": "Oregon"}, "US-KY": {"path": "M583.02,306.59l0.35,-2.18l1.13,0.96l0.72,0.2l0.75,-0.36l0.46,-0.88l0.87,-3.55l-0.54,-1.75l0.38,-0.86l-0.1,-1.88l-1.27,-2.04l1.79,-3.21l1.24,-0.51l0.73,0.06l7.03,2.56l0.81,-0.2l0.65,-0.72l0.24,-1.93l-1.49,-2.14l-0.24,-1.44l0.2,-0.87l0.4,-0.52l1.1,-0.18l1.24,-0.83l3.0,-0.95l0.64,-0.51l0.15,-1.13l-1.53,-2.05l-0.08,-0.68l1.33,-1.97l0.14,-1.16l1.25,0.42l1.12,-1.33l-0.68,-2.0l1.92,0.9l1.72,-0.84l0.03,1.18l1.0,0.46l0.99,-0.94l0.02,-1.36l0.51,0.16l1.9,-0.96l4.41,1.52l0.64,0.94l0.86,0.18l0.59,-0.59l0.73,-2.53l1.38,-0.55l1.39,-1.34l0.86,1.29l0.77,0.42l1.16,-0.13l0.11,0.75l0.95,0.19l0.67,-0.62l0.03,-1.01l0.84,-0.38l0.26,-0.48l-0.25,-2.09l0.84,-0.4l0.34,-0.56l-0.06,-0.69l1.25,-0.56l0.34,-0.72l0.38,1.47l0.61,0.6l1.46,0.64l1.25,-0.0l1.11,0.81l0.53,-0.11l0.26,-0.55l1.1,-0.46l0.53,-0.69l0.04,-3.48l0.85,-2.18l1.02,0.18l1.55,-1.19l0.75,-3.46l1.04,-0.37l1.65,-2.23l0.0,-0.81l-1.18,-2.88l2.78,-0.59l1.54,0.81l3.85,-2.82l2.23,-0.46l-0.18,-1.07l0.36,-1.47l-0.32,-0.36l-1.22,-0.04l0.58,-1.39l-1.09,-1.54l1.65,-1.83l1.81,1.18l0.92,-0.11l1.93,-1.01l0.78,0.88l1.76,0.54l0.57,1.28l0.94,0.92l0.79,1.84l2.6,0.67l1.87,-0.57l1.63,0.27l2.18,1.85l0.96,0.43l1.28,-0.18l0.61,-1.31l0.99,-0.54l1.35,0.5l1.34,0.04l1.33,1.09l1.26,-0.69l1.41,-0.15l1.81,-2.55l1.72,-1.03l0.92,2.35l0.7,0.83l2.45,0.81l1.35,0.97l0.75,1.05l0.93,3.35l-0.37,0.45l0.09,0.72l-0.44,0.61l0.02,0.53l2.24,2.62l1.35,0.92l-0.08,0.89l1.34,0.97l0.58,1.36l1.55,1.2l0.98,1.62l2.14,0.84l1.09,1.12l2.14,0.25l-4.86,6.13l-5.06,4.16l-0.42,0.86l0.22,1.25l-2.07,1.93l0.04,1.64l-3.06,1.63l-0.8,2.38l-1.71,0.6l-2.7,1.83l-1.66,0.48l-3.39,2.42l-23.95,3.09l-8.8,1.42l-7.47,0.86l-7.68,0.46l-22.71,3.52l-0.64,-0.56l-3.63,0.09l-0.41,0.6l1.03,3.57l-23.0,2.73ZM580.9,306.78l-0.59,0.08l-0.06,-0.55l0.47,-0.01l0.18,0.49Z", "name": "Kentucky"}, "US-CO": {"path": "M364.18,239.57l-1.22,65.87l-29.29,-0.9l-29.38,-1.43l-29.35,-1.95l-32.17,-2.75l8.33,-87.15l27.79,2.4l28.23,1.92l29.58,1.46l27.95,0.87l-0.46,21.66Z", "name": "Colorado"}, "US-OH": {"path": "M664.99,178.81l1.67,0.47l1.04,-0.3l1.74,1.07l2.07,0.26l1.47,1.18l1.71,0.23l-2.19,1.18l-0.12,0.47l0.42,0.24l2.46,0.19l1.39,-1.1l1.77,-0.25l3.39,0.96l0.92,-0.08l1.48,-1.29l1.74,-0.6l1.15,-0.96l1.91,-0.97l2.62,-0.03l1.09,-0.62l1.24,-0.06l1.07,-0.8l4.24,-5.46l4.53,-3.47l6.92,-4.36l5.83,28.05l-0.51,0.54l-1.28,0.43l-0.41,0.95l1.65,2.24l0.02,2.11l0.41,0.26l0.31,0.94l-0.04,0.76l-0.54,0.83l-0.5,4.08l0.18,3.21l-0.58,0.41l0.34,1.11l-0.35,1.74l-0.39,0.54l0.76,1.23l-0.25,1.87l-2.41,2.65l-0.82,1.86l-1.37,1.5l-1.24,0.67l-0.6,0.7l-0.87,-0.92l-1.18,0.14l-1.32,1.74l-0.09,1.32l-1.78,0.85l-0.78,2.25l0.28,1.58l-0.94,0.85l0.3,0.67l0.63,0.41l0.27,1.3l-0.8,0.17l-0.5,1.6l0.06,-0.93l-0.91,-1.26l-1.53,-0.55l-1.07,0.71l-0.82,1.98l-0.34,2.69l-0.53,0.82l1.22,3.58l-1.27,0.39l-0.28,0.42l-0.25,3.12l-2.66,1.2l-1.0,0.05l-0.76,-1.06l-1.51,-1.1l-2.34,-0.73l-1.17,-1.92l-0.31,-1.14l-0.42,-0.33l-0.73,0.13l-1.84,1.17l-1.1,1.29l-0.4,1.05l-1.43,0.15l-0.87,0.61l-1.11,-1.0l-3.14,-0.59l-1.37,0.72l-0.53,1.25l-0.71,0.05l-3.04,-2.26l-1.93,-0.29l-1.77,0.56l-2.14,-0.52l-0.55,-1.54l-0.96,-0.97l-0.63,-1.38l-2.03,-0.76l-1.14,-1.01l-0.97,0.26l-1.31,0.89l-0.46,0.03l-1.79,-1.23l-0.61,0.2l-0.6,0.71l-8.53,-55.69l20.43,-4.26ZM675.61,181.34l0.53,-0.79l0.67,0.41l-0.48,0.35l-0.72,0.03ZM677.31,180.77l0.01,-0.0l0.01,-0.0l-0.02,0.0Z", "name": "Ohio"}, "US-OK": {"path": "M399.06,359.31l-0.05,-42.03l-0.39,-0.4l-26.69,-0.22l-25.13,-0.6l0.31,-10.23l36.7,0.74l36.0,-0.07l35.99,-0.86l35.56,-1.62l0.6,10.68l4.55,24.34l1.41,37.88l-1.2,-0.22l-0.29,-0.36l-2.13,-0.21l-0.82,-0.79l-2.11,-0.39l-1.77,-2.05l-1.23,-0.22l-2.25,-1.57l-1.5,-0.4l-0.8,0.46l-0.23,0.88l-0.82,0.24l-0.46,0.62l-2.47,-0.14l-0.47,-0.19l-0.27,-0.68l-1.05,-0.61l-2.3,1.29l-1.17,0.2l-0.19,0.56l-0.63,0.28l-2.12,-0.77l-1.7,1.18l-1.17,0.08l-0.89,0.42l-0.83,1.37l-1.48,0.06l-0.57,1.25l-1.26,-1.55l-1.7,-0.1l-0.32,-0.58l-1.21,-0.46l-0.02,-0.96l-0.44,-0.5l-1.24,-0.18l-0.73,1.38l-0.66,0.11l-0.84,-0.5l-0.97,0.07l-0.71,-1.51l-1.09,-0.35l-1.17,0.57l-0.45,1.7l-0.7,-0.08l-0.49,0.43l0.29,0.73l-0.51,1.68l-0.43,0.19l-0.55,-0.55l-0.3,-0.91l0.39,-1.65l-0.75,-0.86l-0.8,0.18l-0.49,0.76l-0.84,-0.18l-0.92,0.98l-1.07,0.13l-0.53,-1.36l-1.99,-0.19l-0.3,-1.48l-1.19,-0.53l-0.82,0.33l-2.12,2.15l-1.21,0.51l-0.97,-0.38l0.19,-1.25l-0.28,-1.13l-2.33,-0.68l-0.07,-2.18l-0.43,-0.55l-2.11,0.39l-2.52,-0.25l-0.64,0.26l-0.81,1.21l-0.95,0.06l-1.77,-1.77l-0.97,-0.12l-1.5,0.56l-2.68,-0.63l-1.86,-1.0l-1.05,0.25l-2.46,-0.3l-0.17,-2.12l-0.85,-0.87l-0.44,-1.02l-1.16,-0.41l-0.7,-0.83l-0.83,0.08l-0.44,1.64l-2.22,-0.68l-1.07,0.6l-0.96,-0.09l-3.79,-3.78l-1.12,-0.43l-0.8,0.08Z", "name": "Oklahoma"}, "US-WV": {"path": "M693.03,248.42l3.95,-1.54l0.35,-0.71l0.12,-2.77l1.15,-0.22l0.4,-0.61l-0.57,-2.49l-0.61,-1.24l0.49,-0.64l0.36,-2.77l0.68,-1.66l0.45,-0.39l1.24,0.55l0.41,0.71l-0.14,1.13l0.71,0.46l0.78,-0.44l0.48,-1.42l0.49,0.21l0.57,-0.2l0.2,-0.44l-0.63,-2.09l-0.75,-0.55l0.81,-0.79l-0.26,-1.71l0.74,-2.0l1.65,-0.51l0.17,-1.6l1.02,-1.42l0.43,-0.08l0.65,0.79l0.67,0.19l2.28,-1.59l1.5,-1.64l0.79,-1.83l2.45,-2.67l0.37,-2.41l-0.73,-1.0l0.71,-2.33l-0.25,-0.76l0.59,-0.58l-0.27,-3.43l0.47,-3.93l0.53,-0.8l0.08,-1.11l-0.38,-1.21l-0.39,-0.33l-0.04,-2.01l-1.57,-1.91l0.44,-0.54l0.85,-0.1l0.3,-0.33l4.03,19.34l0.47,0.31l16.6,-3.55l2.17,10.68l0.5,0.37l2.06,-2.5l0.97,-0.56l0.34,-1.03l1.63,-1.99l0.25,-1.05l0.52,-0.4l1.19,0.45l0.74,-0.32l1.32,-2.6l0.6,-0.46l-0.04,-0.85l0.42,0.59l1.81,0.52l3.2,-0.57l0.78,-0.86l0.07,-1.46l2.0,-0.74l1.02,-1.69l0.67,-0.1l3.16,1.5l1.81,-0.71l-0.45,1.02l0.56,0.92l1.27,0.42l0.09,0.96l1.13,0.43l0.09,1.2l0.33,0.42l-0.58,3.64l-9.0,-4.48l-0.64,0.24l-0.31,1.14l0.38,1.61l-0.52,1.62l0.41,2.28l-1.36,2.4l-0.42,1.76l-0.72,0.53l-0.42,1.11l-0.27,0.21l-0.61,-0.23l-0.37,0.33l-1.25,3.28l-1.84,-0.78l-0.64,0.25l-0.94,2.77l0.08,1.47l-0.73,1.14l-0.19,2.33l-0.89,2.2l-3.25,-0.36l-1.44,-1.76l-1.71,-0.24l-0.5,0.41l-0.26,2.17l0.19,1.3l-0.32,1.45l-0.49,0.45l-0.31,1.04l0.23,0.92l-1.58,2.44l-0.04,2.1l-0.52,2.0l-2.58,4.73l-0.75,3.16l0.14,0.76l1.14,0.55l-1.08,1.38l0.06,0.6l0.45,0.4l-2.16,2.13l-0.55,-0.7l-0.84,0.15l-3.12,2.53l-1.03,-0.56l-1.32,0.26l-0.44,0.91l0.45,1.17l-0.91,0.91l-0.73,-0.05l-2.27,1.0l-1.21,0.96l-2.18,-1.36l-0.73,-0.01l-0.82,1.58l-1.1,0.49l-1.22,1.46l-1.08,0.08l-1.98,-1.09l-1.31,-0.01l-0.61,-0.74l-1.19,-0.6l-0.31,-1.33l-0.89,-0.55l0.36,-0.67l-0.3,-0.81l-0.85,-0.37l-0.84,0.25l-1.33,-0.17l-1.26,-1.19l-2.06,-0.79l-0.76,-1.43l-1.58,-1.24l-0.7,-1.49l-1.0,-0.6l-0.12,-1.09l-1.38,-0.95l-2.0,-2.27l0.71,-2.03l-0.25,-1.62l-0.66,-1.46Z", "name": "West Virginia"}, "US-WY": {"path": "M218.53,207.02l10.1,-86.6l25.46,2.74l26.8,2.4l26.83,1.91l27.85,1.46l-3.67,87.11l-27.32,-1.41l-28.21,-1.97l-29.69,-2.63l-28.14,-3.02Z", "name": "Wyoming"}, "US-UT": {"path": "M178.67,180.38l41.53,5.44l-2.51,21.5l0.35,0.45l32.24,3.43l-8.33,87.15l-42.54,-4.67l-42.41,-5.77l16.08,-108.34l5.58,0.82ZM187.74,191.46l-0.3,0.04l-0.25,0.62l0.74,3.68l-0.81,0.19l-0.5,1.31l1.15,0.59l0.35,-0.84l0.37,-0.18l0.92,1.14l0.83,1.68l-0.25,1.0l0.16,1.45l-0.4,0.77l0.4,0.52l-0.05,0.56l1.58,1.84l0.02,0.59l1.13,1.92l0.71,-0.1l0.83,-1.74l0.08,2.28l0.53,0.94l0.06,1.8l0.99,0.47l1.65,-0.67l2.48,-1.77l0.37,-1.25l3.32,-1.44l0.17,-0.54l-0.52,-1.02l-0.68,-0.84l-1.36,-0.7l-1.87,-4.59l-0.87,-0.46l0.87,-0.92l1.3,0.6l1.33,-0.15l0.92,-0.83l-0.06,-1.12l-1.55,-0.5l-0.81,0.42l-1.17,-0.12l0.27,-0.76l-0.58,-0.79l-1.86,-0.22l-0.56,1.13l0.28,0.78l-0.35,0.69l0.55,2.44l-0.91,0.32l-0.34,-0.42l0.22,-1.8l-0.42,-0.69l-0.06,-1.74l-0.68,-0.6l-1.32,-0.11l-1.07,-1.55l-0.19,-0.69l0.64,-0.55l0.36,-1.29l-0.83,-1.38l-1.23,-0.28l-0.99,0.81l-2.73,0.2l-0.35,0.63l0.62,0.83l-0.28,0.43ZM199.13,204.0l0.03,0.02l0.04,0.11l-0.07,-0.13ZM199.17,204.81l0.31,0.91l-0.18,0.9l-0.39,-0.93l0.25,-0.88Z", "name": "Utah"}, "US-IN": {"path": "M600.86,189.63l1.43,0.87l2.1,0.14l1.52,-0.38l2.63,-1.39l2.73,-2.1l32.3,-4.83l8.81,57.45l-0.66,1.15l0.3,0.92l0.81,0.79l-0.66,1.14l0.49,0.8l1.12,0.04l-0.36,1.14l0.18,0.51l-1.81,0.29l-3.18,2.55l-0.43,0.17l-1.4,-0.81l-3.46,0.91l-0.09,0.78l1.19,3.1l-1.4,1.88l-1.18,0.49l-0.45,0.89l-0.31,2.6l-1.11,0.88l-1.06,-0.24l-0.47,0.47l-0.85,1.95l0.05,3.14l-0.39,1.0l-1.38,0.85l-0.93,-0.68l-1.24,0.01l-1.48,-0.69l-0.62,-1.84l-1.89,-0.73l-0.44,0.3l-0.04,0.5l0.83,0.68l-0.62,0.31l-0.89,-0.35l-0.36,0.29l-0.04,0.48l0.54,0.93l-1.08,0.68l0.14,2.37l-1.06,0.65l-0.0,0.83l-0.16,0.37l0.08,-0.5l-0.33,-0.51l-1.6,0.18l-1.4,-1.69l-0.5,-0.08l-1.67,1.5l-1.57,0.69l-1.07,2.89l-0.81,-1.07l-2.79,-0.77l-1.11,-0.61l-1.08,-0.18l-1.76,0.92l-0.64,-1.02l-0.58,-0.18l-0.53,0.56l0.64,1.86l-0.34,0.84l-0.28,0.09l-0.02,-1.18l-0.42,-0.4l-0.58,0.01l-1.46,0.79l-1.41,-0.84l-0.85,0.0l-0.48,0.95l0.71,1.55l-0.49,0.74l-1.15,-0.39l-0.07,-0.54l-0.53,-0.44l0.55,-0.63l-0.35,-3.09l0.96,-0.78l-0.07,-0.58l-0.44,-0.23l0.69,-0.46l0.25,-0.61l-1.17,-1.47l0.46,-1.16l0.32,0.19l1.39,-0.55l0.33,-1.8l0.55,-0.4l0.44,-0.92l-0.06,-0.83l1.52,-1.07l0.06,-0.69l-0.41,-0.93l0.57,-0.86l0.14,-1.29l0.87,-0.51l0.4,-1.91l-1.08,-2.54l0.22,-0.8l-0.16,-1.11l-0.93,-0.91l-0.61,-1.5l-1.05,-0.78l-0.04,-0.59l0.92,-1.39l-0.63,-2.25l1.27,-1.31l-6.5,-50.68Z", "name": "Indiana"}, "US-IL": {"path": "M540.07,225.55l0.86,-0.35l0.37,-0.67l-0.23,-2.33l-0.73,-0.93l0.15,-0.41l0.72,-0.69l2.42,-0.98l0.71,-0.65l0.63,-1.68l0.17,-2.11l1.65,-2.47l0.27,-0.94l-0.03,-1.22l-0.59,-1.95l-2.23,-1.88l-0.11,-1.77l0.67,-2.38l0.45,-0.37l4.6,-0.85l0.81,-0.41l0.82,-1.12l2.55,-1.0l1.43,-1.56l-0.01,-1.57l0.4,-1.71l1.42,-1.46l0.29,-0.74l0.33,-4.37l-0.76,-2.14l-4.02,-2.47l-0.28,-1.5l-0.48,-0.82l-3.64,-2.48l44.58,-4.64l-0.01,2.66l0.57,2.59l1.37,2.49l1.31,0.95l0.76,2.6l1.26,2.71l1.42,1.84l6.6,51.49l-1.22,1.13l-0.1,0.69l0.67,1.76l-0.84,1.09l-0.03,1.11l1.19,1.09l0.56,1.41l0.89,0.82l-0.1,1.8l1.06,2.31l-0.28,1.49l-0.87,0.56l-0.21,1.47l-0.59,0.93l0.34,1.2l-1.48,1.13l-0.23,0.41l0.28,0.7l-0.93,1.17l-0.31,1.19l-1.64,0.67l-0.63,1.67l0.15,0.8l0.97,0.83l-1.27,1.15l0.42,0.76l-0.49,0.23l-0.13,0.54l0.43,2.94l-1.15,0.19l0.08,0.45l0.92,0.78l-0.48,0.17l-0.03,0.64l0.83,0.29l0.04,0.42l-1.31,1.97l-0.25,1.19l0.59,1.22l0.7,0.64l0.37,1.08l-3.31,1.22l-1.19,0.82l-1.24,0.24l-0.77,1.01l-0.18,2.04l0.3,0.88l1.4,1.93l0.07,0.54l-0.53,1.19l-0.96,0.03l-6.3,-2.43l-1.08,-0.08l-1.57,0.64l-0.68,0.72l-1.44,2.95l0.06,0.66l-1.18,-1.2l-0.79,0.14l-0.35,0.47l0.59,1.13l-1.24,-0.79l-0.01,-0.68l-1.6,-2.21l-0.4,-1.12l-0.76,-0.37l-0.05,-0.49l0.94,-1.35l0.2,-1.03l-0.32,-1.01l-1.44,-2.02l-0.47,-3.18l-2.26,-0.99l-1.55,-2.14l-1.95,-0.82l-1.72,-1.34l-1.56,-0.14l-1.82,-0.96l-2.32,-1.78l-2.34,-2.44l-0.36,-1.95l2.37,-6.85l-0.25,-2.32l0.98,-2.06l-0.38,-0.84l-2.66,-1.45l-2.59,-0.67l-1.29,0.45l-0.86,1.45l-0.46,0.28l-0.44,-0.13l-1.3,-1.9l-0.43,-1.52l0.16,-0.87l-0.54,-0.91l-0.29,-1.65l-0.83,-1.36l-0.94,-0.9l-4.11,-2.52l-1.01,-1.64l-4.53,-3.53l-0.73,-1.9l-1.04,-1.21l-0.04,-1.6l-0.96,-1.48l-0.75,-3.54l0.1,-2.94l0.6,-1.28ZM585.52,295.52l0.05,0.05l0.04,0.04l-0.05,-0.0l-0.04,-0.09Z", "name": "Illinois"}, "US-AK": {"path": "M89.36,517.03l0.84,0.08l0.09,0.36l-0.3,0.32l-0.64,0.3l-0.15,-0.15l0.25,-0.4l-0.12,-0.31l0.04,-0.2ZM91.79,517.2l0.42,-0.02l0.19,-0.11l0.26,-0.56l1.74,-0.37l2.26,0.07l1.57,0.63l0.84,0.69l0.02,1.85l0.32,0.18l0.0,0.34l0.25,0.27l-0.35,0.09l-0.25,-0.16l-0.23,0.08l-0.41,-0.33l-0.29,-0.04l-0.69,0.23l-0.91,-0.21l-0.07,-0.26l-0.24,-0.17l0.27,-0.21l0.74,0.72l0.46,-0.02l0.2,-0.48l-0.28,-0.44l-0.03,-0.3l-0.31,-0.67l-0.96,-0.52l-1.05,0.27l-0.57,0.69l-1.04,0.3l-0.44,-0.3l-0.48,0.12l-0.06,0.12l-0.63,-0.14l-0.26,0.06l-0.22,0.24l0.2,-0.3l-0.1,-0.55l0.12,-0.79ZM99.83,520.19l0.3,-0.07l0.29,-0.28l-0.03,-0.55l0.31,0.2l-0.06,0.45l0.83,0.92l-0.93,-0.51l-0.44,0.41l-0.13,-0.54l-0.13,-0.04ZM100.07,520.81l0.0,0.04l-0.03,0.0l0.02,-0.04ZM102.01,520.78l0.05,-0.34l0.33,-0.2l0.01,-0.12l-0.58,-1.24l0.1,-0.2l0.59,-0.24l0.29,-0.3l0.65,-0.34l0.62,-0.01l0.41,-0.13l0.81,0.1l1.42,-0.06l0.64,0.15l0.49,0.27l0.88,0.11l0.27,0.15l0.23,-0.22l0.27,-0.05l0.39,0.09l0.2,0.21l0.26,-0.05l0.2,0.38l0.44,0.31l0.1,0.23l0.7,-0.06l0.3,-0.77l0.44,-0.61l0.47,-0.21l1.78,-0.45l0.5,0.04l0.37,0.23l1.13,-0.38l0.66,0.04l-0.11,0.41l0.43,0.51l0.42,0.26l0.62,0.06l0.42,-0.43l0.14,-0.42l-0.34,-0.29l-0.31,-0.03l0.15,-0.44l-0.15,-0.38l1.04,-1.0l0.83,-0.99l0.12,-0.08l0.34,0.17l0.38,-0.02l0.32,0.3l0.19,0.37l0.66,-0.29l-0.1,-0.57l-0.43,-0.58l-0.46,-0.24l0.15,-0.44l0.77,-0.47l0.36,0.04l0.68,-0.2l0.8,-0.08l0.58,0.18l0.45,-0.16l-0.12,-0.52l0.66,-0.6l0.4,0.06l0.26,-0.11l0.43,-0.52l0.34,-0.12l0.23,-0.46l-0.42,-0.3l-0.38,0.03l-0.33,0.15l-0.36,0.39l-0.51,-0.09l-0.5,0.27l-2.19,-0.52l-1.69,-0.24l-0.71,-0.26l-0.12,-0.2l0.17,-0.32l0.04,-0.44l-0.28,-0.56l0.45,-0.35l0.43,-0.13l0.36,0.38l0.04,0.25l-0.15,0.44l0.07,0.39l0.56,0.12l0.32,-0.15l-0.03,-0.3l0.16,-0.35l-0.05,-0.75l-0.84,-1.05l0.01,-0.7l-0.67,-0.19l-0.19,0.24l-0.06,0.48l-0.41,0.22l-0.09,0.03l-0.26,-0.56l-0.34,-0.09l-0.51,0.41l-0.02,0.26l-0.15,0.15l-0.38,-0.02l-0.48,0.27l-0.24,0.54l-0.22,1.13l-0.13,0.32l-0.19,0.05l-0.31,-0.31l0.1,-2.67l-0.23,-0.99l0.19,-0.33l0.02,-0.27l-0.16,-0.29l-0.53,-0.27l-0.46,0.26l-0.1,-0.07l-0.35,0.13l-0.01,-0.54l-0.54,-0.61l0.19,-0.22l0.08,-0.65l-0.16,-0.37l-0.55,-0.26l-1.89,-0.01l-0.58,-0.34l-1.01,-0.12l-0.16,-0.12l-0.07,-0.22l-0.23,-0.07l-1.06,0.53l-0.75,-0.16l-0.12,-0.44l0.3,0.09l0.48,-0.08l0.31,-0.44l-0.21,-0.49l0.37,-0.49l0.83,0.04l0.43,-0.16l0.12,-0.35l-0.14,-0.42l-1.11,-0.64l0.09,-0.27l0.34,-0.17l0.38,-0.44l1.12,-0.0l0.23,-0.09l0.19,-0.32l0.03,-0.95l0.22,-0.54l0.07,-1.42l0.25,-0.45l-0.08,-0.58l0.07,-0.2l0.88,-0.74l0.02,-0.1l-0.09,-0.02l0.19,-0.16l-0.31,-0.35l-0.27,0.05l-0.04,-0.25l-0.09,-0.04l0.57,-0.22l0.33,-0.25l0.51,-0.1l0.24,-0.25l0.42,-0.0l0.19,0.18l0.41,0.08l0.29,-0.08l0.44,-0.55l-0.3,-0.34l-0.39,-0.07l-0.05,-0.33l-0.27,-0.31l-0.6,0.4l-0.43,-0.07l-1.12,0.62l-1.04,0.06l-0.34,0.18l-0.48,-0.03l-0.12,0.5l0.4,0.64l-0.26,0.19l-0.29,0.45l-0.19,-0.09l-0.17,-0.27l-0.76,-0.04l-1.16,-0.25l-0.81,-0.4l-1.05,-0.59l-0.78,-0.61l-0.52,-0.69l0.01,-0.21l0.6,-0.1l-0.06,-0.4l0.1,-0.24l-0.51,-1.06l0.1,-0.78l-0.18,-0.52l0.33,-0.54l-0.4,-0.34l-0.23,0.0l-0.44,-0.69l-0.01,-0.2l0.59,-0.14l0.3,-0.37l-0.05,-0.44l-0.36,-0.26l0.72,0.04l0.29,-0.13l0.18,-0.25l0.63,0.01l0.08,0.51l0.56,0.51l0.32,0.49l-0.03,0.09l-0.79,0.11l-0.53,0.51l0.31,0.45l0.94,-0.08l0.4,0.24l0.26,-0.01l0.39,-0.22l0.29,0.03l0.08,0.07l-0.51,0.6l-0.05,0.38l0.22,0.43l0.46,0.24l1.42,0.07l0.28,-0.17l0.16,-0.35l0.19,-0.08l-0.2,-0.74l0.35,-0.35l-0.02,-0.33l-0.18,-0.25l0.15,-0.43l-0.08,-0.13l-0.52,-0.26l-0.77,-0.01l-0.34,0.1l-1.51,-1.2l-0.01,-0.53l-0.35,-0.39l-0.26,-0.12l-0.15,-0.38l0.55,0.15l0.53,-0.4l-0.17,-0.41l-0.7,-0.51l0.4,-0.45l-0.14,-0.5l0.31,-0.15l0.27,0.08l0.44,-0.1l0.45,0.27l0.75,-0.04l0.67,-0.44l-0.08,-0.48l-0.18,-0.19l-0.48,-0.03l-0.51,0.16l-0.43,-0.19l-1.02,-0.02l-0.26,0.14l-0.44,0.04l-0.36,0.29l-0.62,0.09l-0.15,0.12l-0.15,0.42l-0.13,-0.19l0.27,-0.52l0.36,-0.24l-0.1,-0.44l-0.48,-0.6l0.03,-0.1l0.37,0.1l0.4,-0.18l0.16,-0.22l0.07,-0.36l-0.22,-0.6l0.55,0.23l0.42,-0.5l-0.44,-0.59l0.38,0.32l0.94,0.37l0.2,-0.44l0.14,0.01l-0.04,-0.54l0.12,-0.36l0.48,-0.28l0.49,0.01l1.96,-0.47l0.8,-0.03l0.3,0.25l-0.01,0.44l0.19,0.27l-0.27,0.16l0.13,0.47l0.35,0.15l0.74,0.01l0.29,-0.39l-0.13,-0.45l0.08,-0.34l1.21,-0.11l0.29,-0.63l-0.31,-0.24l-0.93,-0.04l0.03,-0.08l0.41,-0.03l0.15,-0.63l0.72,-0.27l0.86,0.88l0.32,0.11l0.38,-0.28l0.08,-0.27l-0.04,-0.41l-0.18,-0.26l0.34,0.0l0.69,0.32l0.35,0.31l0.54,0.81l-0.06,0.29l-0.38,-0.09l-0.52,0.21l-0.13,0.47l0.43,0.24l1.07,0.06l0.05,0.52l0.31,0.3l0.91,0.49l1.02,0.09l0.53,-0.18l0.41,0.17l0.49,-0.0l1.61,-0.32l0.1,0.49l1.67,0.97l0.28,0.31l0.53,0.32l1.06,0.37l1.81,-0.2l0.56,-0.21l0.47,-0.49l0.2,-0.57l0.15,-0.95l0.61,-1.1l0.01,-0.29l-0.24,-0.88l0.14,-0.05l-0.03,-0.19l0.58,0.25l0.2,-0.1l0.86,0.0l0.36,-0.17l0.41,-0.47l0.07,-0.93l-0.19,-0.43l0.22,-0.03l0.11,-0.44l-0.23,-0.32l-0.73,-0.39l-0.29,0.12l-0.43,-0.04l-0.52,0.2l-0.21,-0.12l-0.29,-0.6l-0.31,-0.29l-0.51,0.0l-0.02,0.1l-0.52,-0.04l-0.43,-0.31l-0.56,-0.02l-0.32,0.1l-1.04,-0.24l-0.48,0.03l-0.33,0.16l0.04,-0.42l-0.29,-0.71l-0.21,-0.97l-0.49,-0.23l-0.55,-0.08l-0.29,0.09l-0.47,-0.64l-0.48,-0.4l-0.5,-0.25l-1.14,-1.02l-0.95,-0.24l-0.2,-0.27l-0.49,-0.27l-0.11,-0.23l-0.63,-0.01l-0.04,0.13l-0.9,-1.22l-1.86,-2.14l-0.25,-0.55l-0.0,-0.32l0.07,-0.19l0.27,0.06l0.27,-0.13l0.35,-0.76l-0.41,-1.02l0.05,-0.11l0.4,0.19l0.51,-0.05l0.41,-0.17l0.51,0.66l0.43,0.23l0.48,-0.4l-0.02,-0.33l-0.32,-0.66l-0.48,-0.41l-0.46,-0.78l-0.84,-0.88l-0.12,-0.02l-0.98,-1.16l-0.33,-0.52l-0.04,-0.3l-0.46,-0.96l0.41,0.03l0.54,0.45l0.34,0.15l0.44,-0.1l0.12,-0.17l0.2,0.03l0.06,-0.15l0.18,0.03l0.17,0.41l0.2,0.18l1.09,0.35l1.08,-0.18l1.53,0.45l0.14,0.13l-0.06,0.06l0.19,0.45l0.88,0.89l1.03,0.47l0.56,-0.36l-0.06,-0.35l-0.37,-0.64l1.48,0.48l0.36,0.26l0.11,0.4l0.61,0.16l1.2,0.07l0.48,0.24l1.49,0.99l0.18,0.45l-0.34,0.04l-0.1,0.06l-0.4,0.34l-0.16,0.3l-0.6,-0.28l-0.52,-0.06l-0.12,0.69l0.62,0.52l0.02,0.52l0.16,0.37l0.28,0.32l0.91,0.59l0.18,0.29l0.46,0.4l0.69,0.3l0.39,0.29l-0.14,0.25l0.02,0.32l0.38,0.24l0.2,-0.05l0.26,0.12l0.44,0.49l0.56,0.16l0.39,0.46l-0.08,0.39l0.24,0.31l0.41,0.19l0.41,-0.15l0.03,-0.15l1.39,-0.46l0.24,0.52l0.24,0.25l-0.25,0.06l0.01,0.5l0.38,0.29l0.43,0.02l0.5,-0.24l0.36,-0.41l-0.05,-0.98l-0.45,-0.65l0.19,0.01l0.65,1.54l0.23,0.25l1.6,0.95l0.53,-0.01l0.29,-0.27l0.34,-0.59l-0.02,-0.44l0.3,-0.38l-0.16,-0.23l-0.72,-0.38l-0.44,-0.04l-0.49,-0.92l-0.89,-0.53l-0.42,-0.12l-0.61,0.21l-0.32,-0.28l-0.0,-0.43l-0.16,-0.19l-0.23,-0.71l0.64,-0.39l0.29,-0.02l0.35,0.29l0.32,0.05l0.37,-0.41l-0.0,-0.15l-0.75,-1.21l-1.13,-0.68l-0.06,-0.29l0.18,-0.28l-0.15,-0.48l-0.43,-0.23l-0.43,0.29l-0.42,0.07l-0.25,-0.44l-0.53,-0.4l-0.31,-0.1l-0.25,-0.41l-1.35,-1.4l0.59,-1.11l0.15,-1.07l-0.1,-1.05l-0.51,-1.13l-0.29,-1.11l-0.36,-0.48l-0.85,-2.25l-1.06,-1.45l-0.08,-0.73l-0.38,-0.89l0.17,-0.17l0.91,-0.32l1.04,-1.04l1.08,1.08l1.75,1.29l0.84,0.44l1.33,0.95l1.37,0.54l1.36,0.24l1.49,-0.09l0.3,0.11l0.42,-0.05l0.4,-0.16l0.23,-0.26l0.3,-0.14l0.42,-0.5l0.56,-0.03l0.17,-0.31l1.66,0.14l0.96,-0.29l0.5,0.12l0.03,0.15l0.87,0.52l0.35,0.13l0.52,-0.01l0.77,0.56l0.91,0.33l0.1,0.2l0.28,-0.04l0.42,0.16l1.99,0.27l-0.05,0.31l0.11,0.18l-0.18,0.06l-0.15,0.66l0.44,0.21l0.04,0.83l0.28,0.36l0.44,-0.14l0.1,-0.13l0.05,-0.46l0.22,-0.51l1.1,0.62l0.73,0.1l0.29,-0.35l-0.22,-0.39l-0.74,-0.5l-0.43,-0.14l-0.07,-0.18l0.03,-0.25l0.76,-0.07l0.26,0.1l0.01,0.3l0.27,0.62l0.54,0.33l0.14,-0.17l0.45,0.24l0.16,-0.08l0.63,0.55l1.13,0.63l0.13,-0.03l0.81,0.55l0.59,0.22l1.21,0.25l1.27,0.12l1.06,-0.17l1.19,0.0l0.01,0.22l0.26,0.49l0.68,0.48l0.08,0.62l0.56,0.17l0.57,0.45l-0.61,-0.02l-0.77,-0.42l-0.42,0.03l-0.44,0.21l0.1,0.48l0.23,0.26l-0.19,0.32l0.18,0.59l0.33,0.11l0.33,-0.12l0.64,0.36l0.3,0.06l0.31,-0.08l0.23,-0.23l0.33,-0.02l0.39,0.36l0.26,0.01l0.25,0.18l0.33,0.02l0.27,-0.16l0.13,0.09l0.16,0.38l-0.54,-0.04l-0.29,0.34l0.21,0.4l0.2,0.11l0.07,0.35l0.89,0.58l-0.04,0.13l0.18,0.3l0.49,0.21l0.94,-0.04l0.96,0.68l0.58,0.26l0.32,0.03l0.37,0.42l0.23,0.1l0.1,0.31l0.34,0.26l0.21,0.38l0.34,0.08l0.26,-0.12l0.25,0.23l-0.55,0.05l-0.29,0.34l-0.41,0.04l-0.18,0.63l0.35,0.33l1.4,0.72l-0.08,0.69l1.48,0.96l0.49,0.67l0.27,0.15l0.49,-0.16l1.05,0.48l0.24,-0.05l0.38,0.32l0.16,0.58l1.1,0.42l0.72,0.06l0.21,0.19l0.85,0.38l0.32,0.34l0.31,0.09l0.59,0.53l0.2,0.37l0.73,0.47l0.25,0.29l0.1,0.53l0.48,0.29l0.55,0.03l0.31,0.44l0.56,0.33l-0.11,0.34l0.39,0.41l1.66,1.19l0.76,0.36l0.16,-0.03l1.78,1.0l0.42,0.4l0.69,0.34l0.47,0.65l0.08,-0.08l-0.02,0.25l0.22,0.06l0.5,0.55l0.02,0.21l0.5,0.23l0.54,0.42l1.19,0.58l0.8,0.03l0.63,0.31l0.03,0.31l0.43,0.12l0.33,-0.2l0.19,-0.0l0.43,0.12l1.02,0.51l0.05,0.25l0.41,0.27l0.22,-0.19l0.58,0.53l0.31,0.09l0.53,0.55l-0.01,0.24l0.49,0.42l0.02,0.24l0.27,0.43l0.55,0.34l0.18,0.4l0.42,0.15l0.58,0.51l0.56,0.96l0.35,0.26l0.53,0.01l0.15,0.11l-23.69,51.51l0.09,0.46l1.53,1.4l0.52,0.02l0.19,-0.15l1.17,1.29l0.41,0.12l1.37,-0.4l1.79,0.68l-0.86,0.96l-0.08,0.38l0.35,1.01l0.91,0.92l-0.08,0.65l0.1,0.44l2.43,4.76l-0.2,1.48l-0.29,0.38l0.19,0.62l0.58,0.12l0.83,-0.25l0.54,-0.07l0.07,0.08l0.03,0.1l-0.66,0.3l-0.33,0.34l0.29,0.54l0.35,-0.0l0.37,-0.18l0.25,0.12l0.02,0.21l0.44,0.11l0.09,0.11l0.26,1.19l-0.17,0.03l-0.1,0.51l0.24,0.32l0.94,0.22l0.04,0.16l-0.27,0.18l0.01,0.12l0.21,0.32l0.21,0.09l-0.05,0.37l-0.24,-0.02l-0.1,-0.46l-0.35,-0.31l-0.11,0.06l-0.28,-0.47l-0.47,-0.03l-0.26,0.35l-0.45,0.01l-0.08,0.13l-0.26,-0.63l-0.14,0.01l-0.35,-0.41l-0.47,-0.12l-0.89,-1.43l0.11,-0.01l0.32,-0.49l-0.08,-0.26l-0.34,-0.28l-0.51,0.01l-0.47,-0.93l-0.05,-0.15l0.12,-0.53l-0.08,-0.41l-0.52,-1.06l-0.46,-0.7l-0.19,-0.07l0.1,-0.61l-0.29,-0.28l-0.72,-0.14l-1.24,-1.44l-0.27,-0.47l-0.01,-0.21l-0.32,-0.23l-0.24,-0.34l-0.28,-0.11l-0.49,-0.63l0.39,-0.11l0.12,-0.23l0.05,0.05l0.59,-0.3l-0.02,0.13l-0.16,0.06l-0.16,0.55l0.3,0.41l0.38,0.07l0.43,-0.3l0.25,-1.03l0.15,-0.22l0.42,0.2l0.36,0.46l0.36,0.04l0.35,-0.35l-0.47,-0.83l-0.69,-0.39l-0.27,-0.91l-0.35,-0.63l-0.4,-0.17l-0.67,0.44l-0.39,0.06l-0.79,0.37l-1.9,-0.05l-1.0,-0.5l-0.45,-0.34l-1.46,-1.5l0.23,-0.14l0.21,-0.32l0.16,-0.74l-0.43,-0.94l-0.52,-0.09l-0.33,0.19l-0.12,0.52l-0.6,-0.04l-0.85,-0.89l-2.81,-1.97l-1.68,-0.48l-1.62,-0.65l-1.13,-0.19l-0.1,-0.53l-0.27,-0.5l0.13,-0.25l-0.02,-0.26l-0.22,-0.25l-0.8,-0.28l-0.36,-0.35l-0.17,-0.01l-0.13,-0.55l-0.2,-0.34l-0.2,-0.12l0.7,-0.5l0.09,-0.27l-0.09,-0.08l0.21,-0.27l0.23,-0.09l0.38,0.08l0.38,-0.17l0.18,-0.32l-0.03,-0.34l-0.35,-0.22l-0.55,-0.07l-0.81,0.27l-0.24,0.2l-0.57,0.02l-0.56,0.35l-0.61,0.15l-0.2,-0.13l-0.19,-0.59l-0.58,-0.63l0.77,-0.37l0.19,-0.38l-0.32,-0.45l-0.53,-0.01l-0.15,-0.48l-0.19,-0.17l0.09,-0.49l-0.16,-0.25l0.04,-0.22l-0.31,-0.55l-0.43,-0.22l-0.53,0.17l-0.07,-0.2l-0.27,-0.03l-0.09,-0.14l0.22,-0.56l0.26,0.03l0.08,-0.09l0.65,0.37l0.38,0.07l0.42,-0.49l-0.14,-0.42l-0.27,-0.26l-1.05,-0.52l-1.54,0.27l-0.1,-0.21l-0.41,-0.3l-0.42,-0.01l-0.08,-0.23l-0.47,0.02l-0.21,-0.16l0.21,-0.26l-0.05,-0.39l0.14,-0.4l-0.28,-0.27l-0.25,-0.05l0.21,-0.77l-0.33,-0.28l-0.29,0.02l-1.36,0.57l0.02,-0.11l-0.34,-0.35l-1.19,-0.19l-0.14,0.25l-0.55,0.26l0.08,0.49l0.21,0.14l-0.01,0.1l-0.83,-0.27l-0.63,-0.03l-0.23,0.49l-0.51,0.38l0.12,0.52l0.31,0.16l0.46,-0.02l-0.05,0.11l-0.98,0.16l-0.3,0.14l-0.16,0.16l-0.05,0.46l0.37,0.28l0.83,-0.12l0.12,0.14l-0.04,0.25l0.31,0.21l-0.27,0.12l-0.15,0.24l-0.51,-0.02l-0.23,0.34l-0.3,0.12l0.05,0.54l-0.3,0.32l-0.12,-0.14l-0.66,0.24l-0.32,-0.27l-0.44,-0.13l-0.32,-0.39l0.11,-0.5l-0.38,-0.29l-0.64,0.04l0.13,-0.4l-0.05,-0.34l-0.23,-0.26l-0.26,-0.07l-0.4,0.16l-0.47,0.73l-0.25,-0.01l-0.23,-0.49l-0.46,-0.07l-0.37,0.4l-0.4,-0.06l-0.16,0.33l-0.29,-0.31l-0.42,-0.03l-0.26,0.25l-0.01,0.21l-0.31,-0.08l-0.11,-0.32l-0.12,-0.03l-0.37,0.06l-0.72,0.4l-0.01,-0.27l-0.13,-0.08l-0.8,-0.04l-0.38,0.2l-0.0,0.45l-0.09,0.05l-1.16,0.08l-0.3,0.13l-0.87,-0.77l-0.22,-0.05l-0.29,0.29l-0.4,-0.28l-1.02,-0.03l0.03,-0.13l-0.35,-0.39l-0.01,-0.13l0.45,0.02l0.16,-0.37l0.53,0.01l0.43,0.3l0.3,0.45l0.49,-0.04l0.2,-0.43l0.23,0.09l0.44,-0.04l0.48,-0.17l0.06,-0.15l0.45,-0.23l0.46,-0.08l0.32,-0.52l-0.21,-0.37l-0.49,-0.19l-1.84,0.04l-0.57,-0.71l-0.07,-0.28l1.28,-0.98l1.62,-0.44l0.37,-0.26l0.33,-0.45l0.46,-0.1l0.65,-0.89l0.14,-1.04l0.36,-0.03l0.74,0.3l1.54,-0.17l1.4,0.03l0.01,0.5l0.23,0.42l0.56,0.48l1.06,0.16l0.14,0.1l0.28,0.41l0.4,0.26l1.19,1.07l0.2,0.34l0.25,0.13l0.5,-0.37l0.0,-0.44l-0.13,-0.39l-0.42,-0.46l-0.43,-0.13l-0.32,-0.52l-0.43,-0.35l-0.69,-1.19l0.45,-0.11l0.44,-0.3l0.35,0.02l0.33,-0.17l1.56,0.33l0.37,-0.06l0.15,-0.62l-0.09,-0.11l-0.67,-0.46l-0.84,-0.3l-0.61,-0.04l-0.74,0.14l-0.37,0.19l-0.29,0.35l-0.76,-0.52l-0.11,-0.24l-0.42,-0.02l-0.16,-0.12l0.14,-0.2l-0.17,-0.67l-0.09,-0.02l-1.07,0.27l-0.85,-0.19l-0.49,0.0l-0.85,0.41l-0.65,-0.15l-0.6,-0.29l-1.18,0.04l-0.71,0.35l-0.19,0.5l-0.35,-0.15l-0.65,0.04l-0.5,0.24l-0.62,0.03l-0.54,0.15l-0.41,0.33l-0.12,0.36l-0.49,0.22l-0.59,-0.02l-0.4,-0.27l-0.26,-0.68l-0.43,-0.32l-0.3,-0.11l-0.42,0.02l-0.3,0.28l0.16,0.51l0.31,0.08l0.01,0.37l0.37,0.61l0.21,0.72l-0.38,0.08l-0.35,0.26l-0.33,-0.06l-0.56,-0.39l-0.98,-0.37l-0.58,0.21l0.02,0.44l-0.07,-0.38l-0.32,-0.34l-0.42,0.19l-0.23,0.4l-0.2,-0.38l-0.81,0.14l-0.08,0.05l-0.02,0.41l-0.37,-0.32l-0.33,-0.04l-0.36,0.28l0.13,0.39l-1.49,-0.27l-0.16,0.49l-0.25,0.14l-0.28,0.36l-0.51,0.04l-0.02,0.17l-0.2,0.09l0.03,0.42l-0.16,0.27l-0.01,0.39l0.33,0.34l0.59,-0.05l0.39,0.38l0.56,0.31l0.08,0.49l0.23,0.34l0.3,0.19l0.03,0.3l-0.64,0.54l-0.5,-0.05l-0.44,0.18l-0.88,-0.46l-0.37,0.02l-0.48,0.41l-0.2,-0.12l-0.45,-0.01l-0.34,0.59l-0.75,-0.12l-0.4,0.05l-0.27,0.3l-0.1,-0.02l0.07,0.06l-0.11,0.01l0.0,0.1l-0.42,-0.28l-0.36,0.33l-0.19,-0.1l-0.32,0.19l-0.3,-0.11l-0.37,0.07l-0.53,-0.44l-0.45,-0.15l-0.9,0.53l-0.18,-0.15l-0.71,-0.02l-0.45,0.28l-0.15,-0.37l-0.41,-0.28l-0.42,0.1l-0.43,0.49l-0.37,-0.15l-0.28,0.31l-0.47,-0.08l-0.4,-0.43l-0.4,0.07l-0.3,0.24l-0.14,-0.11l-0.43,-0.05l-0.14,0.08l-1.45,-0.04l-0.31,0.12l-0.22,0.28l0.24,0.95l-0.31,-0.03l-0.15,0.18l-0.69,-0.24l-0.41,-0.28l-0.26,0.05l-0.26,0.26l-0.2,-0.24l-0.49,0.22l-0.65,0.09l-0.32,-0.22l-0.27,0.2l-0.19,-0.65l-0.39,-0.22l-0.43,0.08l-0.28,0.31l-0.44,0.09l-0.26,-0.07l-0.14,0.34l-0.06,-0.31l-0.26,-0.25l-0.54,-0.14l-1.29,-0.05l-0.62,0.31l-0.42,-0.34l-0.51,-0.04l-0.84,0.27l-0.73,0.11l-0.16,0.12l-0.11,0.56l-0.26,-0.07l-0.44,0.3l-0.03,0.21l-0.23,0.15l-0.26,-0.25l-0.37,-0.03l-0.36,0.17l-0.6,-0.33l-0.87,-0.22l-0.41,-0.18l-0.09,-0.37l-0.55,-0.15l-0.25,0.15l-0.71,-0.67l-0.41,0.02l-0.78,-0.24l-0.4,0.21ZM111.25,502.71l-0.44,0.21l-0.03,-0.02l0.24,-0.26l0.23,0.07ZM128.45,468.26l-0.1,0.14l-0.06,0.02l0.02,-0.15l0.14,-0.02ZM191.55,470.09l-0.0,0.04l-0.02,-0.04l0.03,-0.01ZM191.85,541.2l-0.08,-0.21l0.06,-0.51l0.25,-0.06l0.08,0.39l-0.31,0.39ZM165.84,518.29l-0.19,0.37l-0.34,0.04l-0.07,0.31l-0.27,-0.07l-0.45,0.06l-0.04,-0.09l0.46,-0.29l0.06,-0.15l0.84,-0.19ZM162.12,521.34l0.09,0.0l-0.06,0.02l-0.02,-0.03ZM162.26,521.34l0.08,-0.02l0.01,0.04l-0.04,0.04l-0.05,-0.05ZM141.64,514.73l0.19,0.06l0.26,0.22l-0.46,0.03l-0.07,-0.12l0.08,-0.19ZM132.07,521.13l-0.0,0.0l0.0,-0.0l0.0,0.0ZM132.06,520.84l-0.02,-0.07l0.06,-0.01l-0.03,0.08ZM109.91,522.38l0.07,-0.02l0.05,0.12l-0.03,0.01l-0.09,-0.11ZM107.83,523.67l0.01,0.02l-0.02,0.0l0.0,-0.02l0.01,-0.01ZM136.02,515.64l-0.01,-0.04l0.07,0.01l-0.06,0.03ZM199.71,549.76l0.43,-0.06l0.87,0.3l0.36,-0.05l0.76,-0.54l0.39,-0.87l0.67,-0.03l0.47,-0.34l0.17,-0.49l0.96,0.19l1.89,-0.14l0.49,0.7l0.06,0.43l0.38,0.59l-0.1,0.26l-0.29,0.17l-0.1,0.55l0.11,0.16l-0.11,0.33l0.13,0.53l0.17,0.24l0.69,0.46l0.02,0.37l0.3,0.56l0.35,0.24l0.08,0.34l-0.15,0.26l0.26,1.28l1.33,1.5l0.24,0.78l-0.64,-0.19l-0.38,0.04l-0.33,0.37l-0.51,0.26l-0.01,0.29l-0.38,0.15l-0.21,0.29l-0.52,-0.98l-0.84,-0.64l0.11,-0.44l-0.27,-1.06l0.14,-0.11l0.26,-1.09l-0.26,-0.26l0.04,-0.09l-0.12,-0.01l0.04,-0.06l-0.09,0.05l-0.1,-0.1l-0.04,0.1l-0.12,-0.01l-0.03,-0.07l0.24,-0.92l0.1,-1.07l-0.15,-1.05l0.51,-0.94l0.02,-0.37l-0.66,-0.25l-0.5,0.69l-0.24,-0.13l-0.45,0.11l0.01,0.55l-0.32,0.35l0.3,1.04l-0.34,0.85l0.13,1.32l-0.11,0.36l0.04,0.39l-0.27,0.34l0.03,1.86l-0.28,0.29l-0.27,-0.31l0.02,-1.36l-0.28,-0.43l-0.53,0.1l-0.08,0.1l-0.88,-0.14l0.22,-0.05l0.2,-0.25l0.2,-0.91l-0.12,-0.1l-0.13,-1.06l0.88,0.13l0.45,-0.45l-0.11,-0.33l-0.74,-0.45l-0.23,0.1l0.0,-0.84l-0.33,-0.34l-0.31,-0.01l-0.29,0.56l-0.24,0.06l-0.27,0.41l0.12,0.13l-0.5,-0.23l0.24,-0.5l-0.28,-0.54l-0.29,-0.02l-0.18,-0.5l-0.47,-0.15l-0.19,0.31l-0.22,-0.47ZM201.64,551.89l0.21,0.2l-0.19,0.19l-0.03,-0.38ZM210.83,558.1l0.42,0.83l-0.23,0.38l0.09,0.66l0.47,1.27l0.06,1.07l0.15,0.48l-0.33,-0.38l-1.31,-0.73l-0.26,-0.05l0.19,-0.2l-0.17,-0.39l0.14,-0.1l0.31,-0.63l-0.47,-0.31l-0.27,0.01l-0.75,0.68l-0.11,-0.36l0.09,-0.18l-0.03,-0.41l0.26,-0.33l0.36,-0.19l0.16,-0.56l0.43,-0.42l0.36,0.09l0.44,-0.23ZM211.88,563.05l1.25,5.46l-0.54,0.45l0.03,0.64l0.81,0.55l-0.47,0.67l0.05,0.52l0.58,0.54l-0.08,0.3l0.06,0.48l-0.14,0.55l0.15,0.3l0.2,0.13l0.9,0.26l1.46,1.84l1.18,0.8l0.34,0.76l0.55,0.42l-0.01,0.53l0.1,0.24l0.78,0.58l0.49,0.11l0.03,0.16l-0.16,0.69l-0.68,0.46l-0.31,0.4l-0.04,0.78l-0.31,0.67l0.11,0.99l-0.15,0.54l0.03,0.33l-0.4,0.17l-1.34,1.4l-0.41,0.31l-0.48,0.16l-0.2,-0.13l-0.28,0.01l0.12,-0.5l-0.16,-0.42l-0.64,0.07l-0.08,0.17l-0.1,-0.51l0.24,-0.03l0.12,0.14l0.5,0.14l1.27,-0.81l0.75,-0.65l-0.23,-0.63l-0.48,0.07l0.01,-0.13l-0.37,-0.36l-0.54,0.12l0.59,-1.72l0.0,-0.38l0.15,-0.3l-0.06,-0.43l0.09,-0.51l-0.36,-0.24l-0.06,-0.35l-0.27,-0.49l0.49,-0.15l0.35,-0.35l0.18,-0.48l-0.43,-0.27l-0.43,0.08l-0.61,0.31l-0.45,0.04l-0.55,-0.29l-1.43,0.28l-0.59,-0.05l0.17,-0.09l0.2,-0.36l0.21,-0.85l0.32,0.02l0.81,0.41l0.31,0.03l0.71,-0.34l-0.07,-0.49l-0.33,-0.19l-0.4,0.02l-0.88,-0.43l0.03,-0.84l-0.23,-0.29l-0.46,-0.26l0.02,-0.43l-0.43,-0.61l0.27,-0.3l-0.16,-0.68l-0.35,-0.03l0.1,-0.07l0.01,-0.21l0.42,-0.17l0.22,-0.62l-0.38,-0.26l-0.67,0.18l-0.27,-0.29l-0.2,-0.32l-0.06,-0.35l0.33,-0.21l0.18,-1.04l-0.39,-0.3l-0.47,0.16l-0.17,-0.08l-0.29,-0.36l0.13,-0.2l-0.14,-0.35l-0.45,-0.27l1.08,-0.08l0.35,-0.42l-0.28,-0.52l-0.49,0.08l-0.44,-0.14l0.18,-0.32l-0.03,-0.32l-0.51,-0.26l0.04,-0.13l0.64,0.01l0.41,0.72l0.28,0.23l0.31,0.02l0.28,-0.15l0.04,-0.52l-0.24,-0.23l-0.1,-0.4l-0.37,-0.63l-0.78,-0.91l0.12,-0.39l1.23,0.83l0.52,-0.45ZM214.19,585.45l-0.17,0.68l-0.05,-0.01l0.09,-0.42l0.13,-0.25ZM215.44,583.76l-0.46,0.24l-0.25,-0.22l-0.63,0.14l0.05,-0.14l0.52,-0.28l0.76,0.25ZM211.63,577.78l-0.08,0.43l0.26,0.27l-0.46,0.4l-0.51,-0.23l-0.26,0.45l0.06,0.32l-0.15,-0.2l0.08,-0.67l0.25,-0.15l0.49,-0.04l0.32,-0.57ZM209.08,567.17l-0.25,-0.24l0.08,-0.14l0.49,0.2l-0.32,0.18ZM138.39,458.34l-0.47,-0.44l0.06,-0.45l0.41,0.27l0.0,0.62ZM108.63,500.59l-0.13,0.01l0.09,-0.03l0.04,0.02ZM211.75,580.86l0.58,-0.24l-0.2,0.44l0.02,0.52l-0.22,-0.23l-0.18,-0.5ZM212.61,580.43l0.18,-0.49l-0.1,-0.18l0.52,-0.05l0.31,-0.26l0.18,-0.36l0.14,-0.03l0.14,-0.52l0.57,-0.03l0.29,1.05l0.12,1.09l-0.15,0.19l0.03,0.12l-0.16,0.04l-0.27,0.73l-0.28,0.21l-0.2,-0.36l0.13,-1.47l-0.39,-0.42l-0.41,0.19l-0.18,0.46l-0.46,0.07ZM211.52,574.36l0.23,0.31l0.37,0.12l0.01,0.48l-0.14,0.07l-0.12,-0.08l-0.4,-0.44l-0.11,-0.22l0.15,-0.24ZM209.53,575.0l0.17,-0.21l0.28,-0.04l-0.06,0.38l0.09,0.09l0.27,0.14l0.34,0.0l0.41,0.28l0.04,0.12l-0.35,0.14l0.09,0.38l-0.06,0.17l-0.28,0.08l0.14,-0.47l-0.34,-0.41l-0.06,-0.25l-0.69,-0.39ZM210.36,574.41l0.1,-0.07l0.07,0.06l-0.0,0.01l-0.16,-0.0ZM209.54,571.91l0.03,-0.1l0.32,-0.15l0.14,-0.29l-0.04,-0.37l0.05,-0.1l0.34,1.01l-0.09,-0.09l-0.52,-0.06l-0.15,0.21l-0.08,-0.04ZM206.97,580.16l0.1,-0.52l-0.42,-0.36l0.1,-0.03l-0.05,-0.5l-0.28,-0.2l0.14,-0.17l0.28,-0.1l0.36,0.03l0.21,-0.67l-0.39,-0.23l-1.18,-0.03l-0.2,-0.17l0.19,-0.17l0.46,-0.05l0.67,-0.52l0.19,-0.54l-0.08,-0.32l-0.26,-0.01l0.23,-0.63l0.14,0.22l0.53,0.22l0.24,0.31l0.4,0.27l0.42,1.0l0.12,0.56l-0.14,0.62l-0.17,-0.03l-0.11,0.19l-0.32,0.19l0.02,0.34l-0.75,0.25l-0.08,0.43l0.07,0.45l0.56,-0.01l-0.02,0.13l0.38,0.45l0.22,-0.01l0.23,0.23l0.25,-0.06l0.21,0.38l-0.39,-0.07l-0.32,0.43l-0.06,0.32l0.22,0.37l0.41,0.04l0.21,0.09l-0.2,-0.03l-0.41,0.47l-0.47,0.15l0.11,0.7l0.38,0.27l-0.13,0.2l0.18,0.53l-0.2,0.06l-0.06,0.23l-0.22,-0.08l0.18,-0.35l-0.4,-1.09l0.11,-0.08l0.05,-0.73l-0.28,-0.13l-0.15,-0.32l0.01,-0.81l-0.21,-0.78l-0.46,-0.01l-0.11,0.08l-0.05,-0.39ZM207.26,574.01l-0.02,-0.27l-0.21,-0.27l0.29,-0.14l0.03,0.3l0.15,0.15l-0.04,0.21l-0.2,0.0ZM206.9,573.41l-0.43,-0.14l-0.38,-0.35l0.21,-0.11l0.28,0.14l0.04,0.28l0.27,0.18ZM208.72,573.09l0.26,-0.17l0.43,0.23l0.25,-0.0l-0.15,0.15l-0.09,0.37l-0.14,0.04l-0.23,-0.02l-0.33,-0.6ZM206.49,567.38l1.0,0.59l0.81,0.7l0.06,0.4l-0.46,0.04l-0.19,0.76l0.03,0.31l0.19,0.26l-0.17,0.31l0.43,0.76l-0.15,0.1l-0.85,-0.57l-0.44,0.12l-0.01,0.16l-0.22,-0.06l0.24,-0.51l-0.06,-0.27l0.08,0.03l0.08,-0.27l-0.06,-0.29l0.42,-0.7l0.08,-0.44l-0.28,-0.43l0.06,-0.22l-0.32,-0.31l-0.25,-0.5ZM208.6,569.24l0.34,0.07l0.2,-0.33l0.2,0.07l0.2,0.44l-0.0,0.19l-0.3,0.2l-0.13,0.86l-0.14,-0.44l-0.01,-0.6l-0.07,-0.17l-0.2,-0.03l-0.09,-0.25ZM209.57,569.66l0.0,-0.0l0.03,-0.02l-0.04,0.02ZM204.29,565.52l0.44,-0.15l-0.03,-0.36l0.29,-0.2l0.29,0.26l0.51,-0.3l-0.08,0.47l-0.15,0.23l-0.33,-0.04l-0.36,0.3l-0.27,-0.06l-0.16,0.09l0.02,0.12l-0.36,0.07l0.19,-0.44ZM206.36,564.27l-0.49,0.31l-0.02,-0.59l-0.46,-0.14l-0.02,-0.1l0.53,-0.05l0.24,-0.65l-0.35,-0.23l-0.51,-0.03l-0.1,-0.28l0.09,-0.84l0.2,-0.34l0.16,-0.72l0.07,-1.03l0.34,-0.33l0.69,0.17l0.26,0.31l-0.04,0.27l-0.16,0.12l0.03,0.24l-0.13,0.05l-0.05,0.65l-0.22,0.57l0.02,0.09l0.33,0.11l0.23,1.01l-0.15,0.27l0.43,0.45l-0.08,0.23l-0.57,-0.12l-0.09,0.19l-0.15,0.04l-0.01,0.39ZM206.15,574.28l-0.13,-0.03l0.0,-0.02l0.15,-0.04l-0.02,0.09ZM205.18,574.32l-0.02,0.0l0.01,-0.01l0.01,0.0ZM204.96,570.25l-0.05,-0.24l0.09,0.22l-0.04,0.01ZM205.25,569.02l-0.25,0.19l-0.3,-0.19l-0.18,-0.37l-0.42,-0.07l0.04,-0.08l0.41,0.09l0.15,-0.2l0.31,0.17l0.28,-0.13l0.03,0.52l-0.07,0.07ZM198.99,558.2l0.09,-0.07l0.23,0.49l-0.21,-0.07l-0.11,-0.35ZM199.36,558.71l0.38,0.44l0.56,-0.45l-0.44,-1.09l0.59,0.02l0.03,-0.77l0.24,0.32l0.51,0.01l0.2,-0.29l0.29,-0.06l0.19,0.34l0.24,0.12l0.18,0.27l-0.28,0.14l-0.69,-0.17l-0.13,0.26l-0.17,-0.1l-0.57,0.26l0.08,0.42l0.27,0.54l0.56,0.48l0.25,0.5l0.39,0.36l-0.12,0.15l0.09,0.44l-0.94,-1.32l-0.28,-0.2l-0.61,0.35l0.06,0.34l-0.2,0.14l0.2,0.7l0.21,0.07l-0.14,0.51l0.2,0.13l0.05,0.18l-0.28,0.06l-0.12,-0.56l-0.37,-0.57l0.25,-0.15l-0.16,-0.49l-0.21,-0.17l-0.02,-0.33l-0.28,-0.49l-0.01,-0.31ZM202.27,558.92l0.38,-0.28l0.43,-0.1l0.76,0.39l0.05,0.17l0.43,0.38l-0.11,0.18l-0.41,-0.45l-0.58,-0.11l-0.2,0.41l0.19,0.59l-0.97,-1.19ZM202.11,560.96l0.33,0.1l0.14,0.21l0.26,0.09l0.85,-0.01l-0.23,1.25l-0.31,-0.14l-1.03,-1.5ZM201.29,562.69l0.18,0.07l0.33,-0.09l0.0,0.25l0.48,0.21l0.22,0.28l-0.11,0.08l0.12,0.52l-0.05,0.29l0.23,0.34l-0.06,0.8l0.13,0.32l-0.1,0.03l-0.14,0.56l-0.14,0.99l0.02,0.73l-0.25,0.74l-0.22,-0.02l-0.19,0.34l-0.01,0.5l-0.44,1.06l-0.2,-0.86l-0.08,-0.92l0.3,-0.02l0.63,-0.49l-0.06,-0.73l-0.22,-0.05l0.02,-0.45l-0.19,-0.26l-0.25,-0.01l-0.16,-0.59l-0.47,-0.03l0.24,-0.17l0.01,-0.27l0.65,-0.05l0.22,-0.32l-0.13,-0.51l-0.53,-0.24l0.57,-0.27l-0.34,-1.16l-0.33,-0.12l0.28,-0.19l0.04,-0.3ZM199.27,560.14l0.0,0.0l-0.01,0.0l0.0,-0.0ZM199.1,564.31l0.25,-0.07l0.1,-0.06l-0.12,0.15l-0.23,-0.02ZM199.63,563.32l0.06,-0.2l-0.05,-0.13l0.09,0.13l-0.1,0.2ZM162.15,525.49l0.25,-0.21l0.11,-0.0l-0.2,0.31l-0.16,-0.1ZM136.7,524.68l0.22,0.25l0.59,-0.1l0.04,-0.44l0.61,0.38l0.29,-0.23l0.18,-0.67l0.1,-0.05l0.25,0.13l0.16,-0.06l-0.14,0.5l0.39,0.72l-0.5,0.38l-0.19,-0.72l-0.36,-0.02l-0.69,0.57l-0.12,-0.24l-0.46,0.06l-0.15,0.16l-0.22,-0.52l-0.13,-0.04l0.04,-0.14l0.07,0.07ZM139.88,525.13l-0.03,-0.01l0.02,-0.02l0.01,0.03ZM127.78,528.13l0.49,-0.13l0.09,0.05l-0.34,0.29l-0.18,0.01l-0.06,-0.22ZM128.01,526.82l0.09,-0.93l-0.34,-0.41l0.27,-0.06l0.19,-0.29l0.22,-0.02l0.24,-0.25l0.44,0.22l0.16,-0.11l0.5,0.1l0.1,-0.23l0.15,-0.03l0.38,0.09l0.25,0.25l-0.43,0.12l0.02,0.5l0.44,0.31l-0.25,0.64l0.13,1.11l0.36,0.59l0.43,0.15l-0.37,0.07l-0.19,0.39l-0.11,-0.05l0.03,-0.41l-0.23,-0.36l-0.69,-0.05l-0.43,-0.59l-0.47,-0.4l-0.65,-0.34l-0.26,-0.01ZM131.4,528.57l0.28,-0.39l-0.19,-0.6l0.07,-0.55l0.15,-0.28l0.3,0.13l0.31,-0.27l0.44,0.14l0.52,-0.02l0.3,-0.22l0.26,0.17l0.23,-0.03l0.19,0.33l0.66,-0.29l0.18,-0.29l0.28,0.22l-0.13,0.25l-0.0,0.39l0.26,0.35l0.46,-0.02l0.28,-0.39l0.28,0.18l0.44,-0.16l0.31,0.17l0.08,-0.05l-0.05,0.23l-0.73,0.21l-0.21,0.41l0.22,0.27l-0.07,0.65l0.3,0.23l0.29,0.05l-0.5,0.18l-0.19,-0.24l-0.3,-0.08l-0.09,-0.22l-0.26,-0.17l-0.13,-0.32l-0.96,-0.67l-0.23,0.18l-0.65,0.18l-0.19,0.27l0.12,0.28l-0.38,-0.39l-0.44,0.12l-0.19,0.46l-0.91,-0.26l-0.07,0.08l-0.35,-0.23ZM134.19,529.01l0.07,-0.02l0.09,0.03l-0.15,-0.01l-0.01,0.0ZM134.4,529.04l0.27,0.1l0.23,0.58l-0.25,-0.11l0.04,-0.1l-0.29,-0.47ZM135.83,526.14l0.09,-0.06l0.01,0.01l-0.11,0.04ZM132.89,525.47l-0.57,-0.58l0.11,-0.17l0.27,-0.08l0.34,0.07l0.08,0.37l-0.22,0.39ZM98.14,450.76l0.34,-0.44l0.56,-0.16l0.06,0.49l-0.13,0.02l0.1,0.29l0.7,0.54l0.29,0.6l0.36,0.4l-0.66,-0.36l-1.21,-0.26l-0.45,-0.8l0.04,-0.32ZM100.81,452.78l1.01,0.2l0.26,0.2l0.38,0.11l0.3,0.33l0.23,0.8l-0.26,0.19l-0.26,0.4l0.43,0.51l0.28,0.71l0.39,0.33l-0.09,0.31l0.05,0.32l0.21,0.31l0.5,0.32l0.0,0.35l-0.82,-0.26l-0.09,0.09l-0.51,-0.1l-0.33,0.07l-0.08,-0.93l-0.57,-1.1l0.12,-0.48l-0.3,-0.98l-0.39,-0.84l-0.28,-0.35l-0.01,-0.23l-0.17,-0.28ZM104.84,458.76l0.28,0.01l0.41,0.53l-0.25,0.05l-0.44,-0.59ZM96.98,478.79l0.06,-0.22l1.37,1.26l0.38,-0.0l0.32,-0.21l0.21,0.06l0.2,0.25l0.72,-0.01l-0.01,0.32l0.69,0.19l0.2,0.27l-0.05,0.32l0.09,0.16l0.27,0.29l0.49,0.19l0.07,0.2l-0.23,0.33l-0.32,0.22l-0.42,1.13l-0.7,-0.22l-0.36,-0.42l-0.19,0.11l-0.26,-0.08l-0.29,-0.35l-0.42,-0.13l-0.26,-0.41l-0.51,-0.41l-0.61,-1.56l0.07,-0.19l-0.47,-0.5l0.04,-0.31l-0.09,-0.3ZM97.68,522.17l0.05,-0.07l0.04,-0.11l0.07,0.18l-0.15,-0.01ZM98.03,522.39l0.04,0.02l-0.0,0.03l-0.03,-0.05ZM80.23,514.88l0.08,-0.15l0.69,0.24l0.38,-0.02l1.55,-0.69l0.18,0.0l0.16,0.37l0.44,0.39l0.27,0.08l0.4,-0.16l0.54,0.24l0.6,-0.01l0.53,0.26l0.44,0.41l0.03,0.72l-0.26,0.4l-0.13,0.44l-0.31,0.06l-0.22,0.21l-0.27,0.01l-0.3,-0.08l-0.46,-0.58l-1.38,-0.93l-0.45,-0.11l-0.76,0.03l-0.42,0.3l-0.21,0.03l-0.91,-0.42l-0.33,-0.34l0.14,-0.67ZM74.26,514.0l0.03,-0.25l0.32,0.05l0.02,0.35l-0.37,-0.15ZM64.81,513.23l0.09,-0.01l0.13,0.09l-0.17,0.0l-0.05,-0.08ZM70.29,514.35l-0.12,-0.05l-0.16,0.39l-0.25,-0.27l-0.36,0.08l0.24,-0.12l0.32,0.02l0.41,-0.61l-0.31,-0.35l-0.31,-0.63l-0.3,-0.24l0.05,-0.29l0.13,-0.06l0.67,0.13l0.43,0.28l0.16,0.24l-0.29,0.4l0.11,0.51l-0.06,0.17l-0.33,0.11l-0.04,0.31ZM68.8,514.2l-0.28,0.32l-0.09,-0.1l0.24,-0.29l-0.1,-0.27l0.19,-0.02l0.04,0.36ZM59.97,511.71l0.2,-0.13l0.18,-0.38l0.48,-0.06l0.27,0.03l0.13,0.21l0.36,0.14l0.1,0.15l-0.09,0.12l-0.23,-0.03l-0.61,0.18l-0.41,-0.22l-0.36,0.0ZM62.67,511.56l0.07,-0.35l0.28,-0.32l0.75,-0.02l0.67,0.35l0.17,0.49l-0.28,0.29l-1.25,-0.24l-0.41,-0.2ZM37.79,498.38l0.07,-0.23l-0.1,-0.23l0.32,0.03l0.09,0.49l-0.29,0.05l-0.1,-0.11ZM36.41,498.87l-0.02,0.01l0.01,-0.02l0.01,0.01ZM36.85,498.71l-0.0,-0.07l-0.0,-0.01l0.02,0.01l-0.01,0.07ZM30.2,493.17l-0.02,-0.03l0.04,-0.04l0.0,0.08l-0.02,-0.0ZM26.76,492.74l0.41,-0.33l0.12,0.35l-0.02,0.08l-0.25,0.01l-0.26,-0.12ZM25.01,490.83l0.02,0.0l-0.01,0.01l-0.02,-0.01ZM23.18,488.38l-0.09,0.01l0.05,-0.17l0.04,0.08l0.01,0.08ZM23.19,487.9l-0.06,0.1l-0.14,-0.54l0.19,0.18l0.0,0.26ZM15.95,478.85l0.25,0.07l-0.02,0.19l-0.14,-0.01l-0.09,-0.25ZM1.23,449.67l0.23,0.17l0.21,0.66l0.47,0.45l-0.25,0.16l0.12,0.39l-0.24,-0.38l-0.54,-0.19l-0.11,-0.3l0.19,-0.08l0.2,-0.42l-0.28,-0.47Z", "name": "Alaska"}, "US-NJ": {"path": "M801.67,165.24l1.31,-1.55l0.48,-1.57l0.5,-0.62l0.54,-1.45l0.11,-2.05l0.68,-1.35l0.92,-0.71l14.12,4.17l-0.3,5.66l-0.51,0.83l-0.13,-0.3l-0.65,-0.07l-0.34,0.44l-0.56,1.46l-0.46,2.72l0.26,1.55l0.63,0.61l1.06,0.15l1.23,-0.43l2.46,0.29l0.66,1.87l-0.2,4.55l0.29,0.47l-0.54,0.44l0.27,0.81l-0.72,0.74l0.03,0.35l0.43,0.22l-0.21,0.6l0.48,0.6l-0.17,3.8l0.59,0.52l-0.36,1.36l-1.14,1.82l-0.11,0.94l-1.36,0.07l0.09,1.21l0.64,0.83l-0.82,0.56l-0.18,1.15l1.05,0.77l-0.31,0.29l-0.17,-0.44l-0.53,-0.18l-0.5,0.22l-0.44,1.51l-1.28,0.61l-0.2,0.45l0.46,0.55l0.8,0.06l-0.66,1.26l-0.26,1.5l-0.68,0.65l0.19,0.48l0.4,0.04l-0.89,1.57l0.07,0.95l-1.56,1.66l-0.17,-1.65l0.33,-2.07l-0.11,-0.87l-0.58,-0.82l-0.89,-0.28l-1.11,0.34l-0.81,-0.35l-1.51,0.88l-0.31,-0.71l-1.62,-0.96l-1.0,0.04l-0.65,-0.71l-0.7,0.07l-3.24,-2.03l-0.06,-1.72l-1.02,-0.94l0.48,-0.68l0.0,-0.88l0.43,-0.83l-0.12,-0.73l0.51,-1.19l1.2,-1.16l2.6,-1.49l0.54,-0.86l-0.38,-0.85l0.5,-0.37l0.47,-1.44l1.24,-1.7l2.52,-2.22l0.18,-0.67l-0.47,-0.82l-4.26,-2.78l-0.75,-1.05l-0.9,0.24l-0.48,-0.33l-1.24,-2.46l-1.62,-0.02l-1.0,-3.45l1.02,-1.03l0.36,-2.23l-1.87,-1.91Z", "name": "New Jersey"}, "US-ME": {"path": "M837.04,56.27l0.86,-1.15l1.42,1.7l0.84,0.04l0.39,-2.12l-0.46,-2.19l1.7,0.36l0.73,-0.42l0.21,-0.52l-0.32,-0.7l-1.18,-0.47l-0.44,-0.62l0.19,-1.43l0.86,-2.02l2.08,-2.25l0.01,-0.98l-0.52,-0.93l1.02,-1.64l0.39,-1.51l-0.22,-0.91l-1.02,-0.35l-0.07,-1.42l-0.4,-0.43l0.55,-0.96l-0.04,-0.63l-1.0,-1.26l0.13,-1.73l0.37,-0.63l-0.15,-0.97l1.22,-1.93l-0.96,-6.17l5.58,-18.88l2.25,-0.23l1.15,3.18l0.55,0.43l2.54,0.56l1.83,-1.73l1.68,-0.83l1.24,-1.72l1.25,-0.12l0.64,-0.47l0.25,-1.43l0.42,-0.3l1.36,0.04l3.68,1.41l1.14,0.96l2.36,1.05l8.38,22.7l0.64,0.65l-0.25,0.95l0.72,1.02l-0.1,1.41l0.54,1.3l0.67,0.47l1.05,-0.12l1.12,0.58l0.97,0.1l2.47,-0.53l0.4,0.95l-0.59,1.42l1.69,1.86l0.28,2.69l2.72,1.68l0.98,-0.1l0.47,-0.74l-0.06,-0.5l1.21,0.25l2.95,2.8l0.04,0.47l-0.52,-0.14l-0.38,0.41l0.18,0.77l-0.76,-0.15l-0.35,0.4l0.15,0.63l1.84,1.62l0.16,-0.88l0.39,-0.17l0.8,0.32l0.27,-0.83l0.33,0.41l-0.31,0.85l-0.53,0.19l-1.21,3.24l-0.62,-0.04l-0.31,0.44l-0.55,-1.05l-0.72,0.03l-0.3,0.5l-0.56,0.06l-0.02,0.49l0.58,0.85l-0.91,-0.45l-0.32,0.63l0.26,0.52l-1.2,-0.28l-0.37,0.3l-0.37,0.78l0.08,0.45l0.44,0.08l0.07,1.21l-0.37,-0.57l-0.54,-0.06l-0.39,0.45l-0.2,1.09l-0.48,-1.53l-1.14,0.01l-0.68,0.75l-0.36,1.48l0.59,0.63l-0.83,0.63l-0.7,-0.46l-0.73,1.04l0.1,0.64l0.99,0.63l-0.35,0.21l-0.1,0.82l-0.45,-0.2l-0.85,-1.82l-1.03,-0.46l-0.39,0.22l-0.45,-0.41l-0.57,0.63l-1.25,-0.19l-0.26,0.86l0.78,0.4l0.01,0.37l-0.51,-0.06l-0.56,0.4l-0.09,0.69l-0.49,-1.02l-1.17,-0.02l-0.16,0.64l0.52,0.87l-1.44,0.96l0.84,1.11l0.08,1.06l0.53,0.65l-0.96,-0.41l-0.96,0.22l-1.2,-0.42l-0.17,-0.91l0.74,-0.28l-0.08,-0.55l-0.43,-0.5l-0.67,-0.12l-0.3,0.33l-0.23,-2.37l-0.37,-0.22l-1.1,0.26l0.04,1.96l-1.85,1.92l0.02,0.49l1.25,1.47l-0.64,0.96l-0.19,3.87l0.77,1.41l-0.57,0.53l0.0,0.63l-0.51,0.55l-0.8,-0.19l-0.45,0.93l-0.62,-0.06l-0.41,-1.15l-0.73,-0.21l-0.52,1.03l0.11,0.69l-0.45,0.59l0.12,2.41l-0.95,-1.01l0.14,-1.28l-0.24,-0.59l-0.81,0.29l-0.08,2.01l-0.44,-0.25l0.15,-1.55l-0.48,-0.4l-0.68,0.49l-0.76,3.04l-0.75,-1.84l0.07,-1.51l-0.77,0.05l-1.06,2.76l0.51,0.55l0.73,-0.25l0.91,2.04l-0.28,-0.59l-0.52,-0.23l-0.66,0.3l-0.07,0.64l-1.38,-0.1l-2.16,3.18l-0.53,1.86l0.29,0.6l-0.68,0.65l0.51,0.43l0.91,-0.21l0.37,0.92l-0.77,0.3l-0.2,0.39l-0.4,-0.04l-0.51,0.57l-0.14,1.03l0.67,1.37l-0.08,0.68l-0.79,1.29l-0.94,0.61l-0.41,1.07l-0.1,1.28l0.44,0.9l-0.4,2.81l-0.8,-0.33l-0.41,0.6l-1.02,-0.76l-0.57,-1.86l-0.93,-0.37l-2.36,-1.99l-0.76,-3.45l-13.25,-35.55ZM863.92,80.85l0.09,0.26l-0.08,0.23l0.03,-0.29l-0.04,-0.2ZM865.33,81.07l0.47,0.7l-0.04,0.47l-0.32,-0.25l-0.1,-0.93ZM867.67,77.93l0.43,0.83l-0.16,0.14l-0.42,-0.19l0.16,-0.77ZM877.04,64.5l-0.14,0.2l-0.03,-0.24l0.17,0.04ZM873.08,74.84l0.01,0.02l-0.03,0.03l0.01,-0.06ZM882.73,63.41l0.04,-1.17l0.41,-0.66l-0.18,-0.44l0.4,-0.5l0.62,-0.11l1.54,1.36l-0.49,0.65l-1.08,0.04l-0.27,0.43l0.57,1.3l-0.99,-0.18l-0.14,-0.57l-0.44,-0.16ZM879.31,65.98l0.61,0.41l-0.35,0.29l0.15,0.96l-0.39,-0.63l0.19,-0.53l-0.21,-0.5ZM878.07,70.51l0.09,-0.01l0.48,-0.08l-0.25,0.46l-0.32,-0.37Z", "name": "Maine"}, "US-MD": {"path": "M740.69,219.66l-2.04,-10.06l19.85,-4.49l-0.66,1.29l-0.94,0.08l-1.55,0.81l0.16,0.7l-0.42,0.49l0.23,0.78l-1.04,0.09l-0.72,0.41l-1.48,0.03l-1.14,-0.39l0.21,-0.36l-0.3,-0.49l-1.11,-0.31l-0.47,1.8l-1.63,2.85l-1.37,-0.39l-1.03,0.62l-0.41,1.26l-1.6,1.93l-0.36,1.04l-0.88,0.45l-1.3,1.87ZM760.76,204.58l37.02,-9.15l8.22,26.4l0.48,0.26l8.48,-2.22l0.24,0.71l0.6,0.03l0.38,0.95l0.52,-0.05l-0.38,1.96l-0.12,-0.26l-0.47,0.06l-0.73,0.86l-0.17,2.7l-0.6,0.19l-0.36,0.71l-0.02,1.47l-3.64,1.51l-0.37,0.76l-2.25,0.43l-0.56,0.65l-0.3,-1.09l0.5,-0.31l0.87,-1.85l-0.4,-0.51l-0.45,0.12l0.08,-0.5l-0.44,-0.42l-2.29,0.63l0.3,-0.6l1.15,-0.83l-0.17,-0.69l-1.36,-0.18l0.38,-2.24l-0.18,-1.02l-0.91,0.16l-0.53,1.76l-0.34,-0.69l-0.62,-0.07l-0.44,0.47l-0.5,1.39l0.53,1.02l-2.87,-2.14l-0.43,-0.19l-0.61,0.36l-0.73,-0.76l0.37,-0.84l-0.04,-0.84l0.76,-0.6l-0.08,-1.35l2.08,0.1l0.89,-0.45l0.36,-0.9l-0.32,-1.42l-0.43,-0.05l-0.54,1.31l-0.39,0.09l-1.05,-0.72l0.06,-0.4l-0.52,-0.28l-0.55,0.23l-0.22,-0.68l-0.73,0.1l-0.12,0.28l0.07,-0.74l0.65,-0.01l0.49,-0.37l0.22,-1.04l-0.54,-0.55l-0.57,0.71l-0.2,-0.53l0.88,-0.87l-0.25,-0.65l-0.54,-0.08l-0.09,-0.48l-0.42,-0.27l-0.35,0.15l-0.66,-0.53l0.89,-0.8l-0.24,-1.03l0.94,-2.38l-0.17,-0.43l-0.46,0.02l-0.66,0.66l-0.56,-0.16l-0.61,0.95l-0.74,-0.6l0.49,-3.59l0.6,-0.52l0.06,-0.61l4.22,-1.21l0.12,-0.7l-0.51,-0.3l-2.38,0.43l0.76,-1.27l1.42,-0.05l0.35,-0.5l-0.99,-0.67l0.44,-1.9l-0.63,-0.32l-1.2,1.82l0.05,-1.5l-0.59,-0.34l-0.68,1.1l-1.62,0.67l-0.31,1.65l0.39,0.54l0.65,0.12l-1.45,1.92l-0.2,-1.64l-0.64,-0.42l-0.61,0.73l0.07,1.45l-0.85,-0.29l-1.16,0.64l0.02,0.71l1.01,0.27l-0.37,0.54l-0.83,0.22l-0.05,0.34l-0.44,-0.04l-0.35,0.64l1.15,1.2l-1.88,-0.67l-1.21,0.59l0.16,0.69l1.56,0.58l0.91,0.93l0.72,-0.12l0.56,0.75l-0.98,-0.07l-1.15,1.36l0.32,0.77l1.57,0.92l-0.67,0.12l-0.21,0.41l0.8,1.08l-0.32,0.56l0.32,0.97l0.58,0.45l-0.52,1.09l0.99,1.25l0.96,3.54l0.61,0.84l2.07,1.63l0.42,0.81l-0.58,0.17l-0.64,-0.75l-1.45,-0.31l-1.64,-1.26l-1.33,-3.16l-0.73,-0.68l-0.3,0.37l0.11,0.7l1.28,3.54l1.14,1.31l2.05,0.74l1.03,1.11l0.64,0.14l0.91,-0.36l-0.03,1.11l1.66,1.54l0.1,1.1l-0.89,-0.35l-0.51,-1.29l-0.63,-0.45l-0.45,0.04l-0.13,0.44l0.27,0.79l-0.67,0.09l-0.65,-0.82l-1.41,-0.67l-2.39,0.63l-0.7,-0.67l-0.71,-1.49l-1.26,-0.71l-0.46,0.14l0.01,0.48l1.13,1.84l-0.22,-0.08l-1.62,-1.2l-1.66,-2.28l-0.45,-0.02l-0.37,1.44l-0.32,-0.79l-0.74,0.2l-0.21,0.27l0.33,0.72l-0.11,0.56l-0.76,0.53l-0.94,-1.5l0.07,-1.68l0.76,-0.6l-0.19,-0.74l0.78,-0.47l0.21,-1.61l1.07,-1.03l-0.0,-1.03l-0.46,-0.86l1.27,-2.19l-0.14,-0.54l-2.72,-1.68l-0.56,0.14l-0.63,1.08l-1.87,-0.26l-0.52,-0.83l-1.11,-0.51l-2.41,0.07l-1.25,-0.91l0.61,-1.35l-0.4,-0.97l-1.19,-0.3l-0.89,-0.66l-2.69,0.07l-0.36,-0.23l-0.11,-1.26l-1.04,-0.6l0.09,-1.2l-0.51,-0.29l-0.49,0.19l-0.23,-0.64l-0.52,-0.13l0.26,-0.83l-0.45,-0.58l-0.69,-0.12l-1.81,0.67l-2.24,-1.27ZM790.04,212.1l1.14,0.18l0.3,0.17l-0.52,0.29l-0.93,-0.63ZM803.05,225.67l-0.02,0.33l-0.21,-0.15l0.23,-0.19ZM807.02,229.13l-0.16,0.3l-0.13,0.07l0.02,-0.24l0.26,-0.12ZM797.57,220.61l-0.06,0.01l-0.09,0.03l0.12,-0.07l0.03,0.02ZM797.24,220.74l-0.26,0.56l-0.18,0.12l0.15,-0.61l0.29,-0.07ZM795.94,216.76l-0.29,0.29l-0.72,-0.27l0.02,-0.33l0.26,-0.36l0.72,0.67ZM794.58,212.85l-0.34,0.78l-0.59,0.23l0.02,-1.48l0.92,0.47ZM802.18,228.89l0.1,-0.11l0.12,0.08l-0.22,0.03Z", "name": "Maryland"}, "US-AR": {"path": "M498.73,376.99l-1.42,-38.01l-4.48,-23.98l37.68,-2.58l39.02,-3.58l0.8,1.6l1.01,0.7l0.11,1.77l-0.77,0.57l-0.22,0.94l-1.42,0.93l-0.29,1.04l-0.83,0.54l-1.19,2.59l0.02,0.7l0.53,0.26l10.94,-1.46l0.86,0.93l-1.18,0.37l-0.52,0.96l0.25,0.49l0.84,0.41l-3.6,2.7l0.02,0.84l0.83,1.04l-0.6,1.15l0.62,0.97l-1.42,0.74l-0.11,1.44l-1.45,2.09l0.12,1.64l0.91,3.1l-0.15,0.27l-1.08,-0.01l-0.33,0.26l-0.51,1.73l-1.52,0.95l-0.04,0.51l0.79,0.91l0.05,0.65l-1.11,1.21l-2.02,1.13l-0.21,0.62l0.43,1.0l-0.19,0.27l-1.23,0.03l-0.42,0.67l-0.32,1.89l0.47,1.57l0.02,3.08l-1.27,1.09l-1.54,0.13l0.23,1.49l-0.21,0.48l-0.93,0.25l-0.59,1.77l-1.49,1.19l-0.02,0.93l1.39,0.76l-0.03,0.7l-1.23,0.3l-2.24,1.23l0.03,0.67l0.99,0.82l-0.45,1.14l0.53,1.38l-1.09,0.62l-1.9,2.57l0.52,0.7l1.0,0.49l0.01,0.58l-0.98,0.29l-0.42,0.64l0.51,0.84l1.63,1.01l0.06,1.77l-0.59,0.98l-0.09,0.84l0.29,0.4l1.05,0.39l0.5,2.17l-1.09,1.01l0.06,2.11l-51.46,4.07l-0.83,-11.53l-1.18,-0.85l-0.9,0.16l-0.83,-0.35l-0.93,0.39l-1.22,-0.33l-0.57,0.72l-0.47,0.01l-0.49,-0.48l-0.82,-0.15l-0.63,-1.0Z", "name": "Arkansas"}, "US-MA": {"path": "M877.65,135.84l1.07,-0.19l0.85,-1.13l0.45,0.58l-1.06,0.64l-1.31,0.1ZM831.87,132.65l-0.46,-0.28l-10.4,2.53l-0.25,-0.18l-0.27,-14.8l29.99,-7.86l1.53,-1.8l0.34,-1.48l0.95,-0.35l0.61,-1.04l1.3,-1.08l1.23,-0.08l-0.44,1.05l1.36,0.55l-0.16,0.61l0.44,0.83l1.0,0.36l-0.06,0.32l0.39,0.28l1.31,0.19l-0.16,0.56l-2.52,1.87l-0.05,1.07l0.45,0.16l-1.11,1.41l0.23,1.08l-1.01,0.96l0.58,1.41l1.4,0.45l0.5,0.63l1.36,-0.57l0.33,-0.59l1.2,0.09l0.79,0.47l0.23,0.68l1.78,1.37l-0.07,1.25l-0.36,0.29l0.11,0.61l1.58,0.82l1.19,-0.14l0.68,1.2l0.22,1.14l0.89,0.68l1.33,0.41l1.48,-0.12l0.43,0.38l1.05,-0.23l3.35,-2.76l0.39,-0.69l0.54,0.02l0.56,1.86l-3.32,1.52l-0.94,0.82l-2.75,0.98l-0.49,1.65l-1.94,1.27l-0.81,-2.53l0.11,-1.35l-0.55,-0.31l-0.5,0.39l-0.93,-0.11l-0.3,0.51l0.25,0.92l-0.26,0.79l-0.4,0.06l-0.63,1.1l-0.6,-0.2l-0.5,0.48l0.22,1.86l-0.9,0.87l-0.63,-0.8l-0.47,0.01l-0.11,0.55l-0.26,0.03l-0.7,-2.02l-1.02,-0.35l0.44,-2.5l-0.21,-0.4l-0.77,0.4l-0.29,1.47l-0.69,0.2l-1.4,-0.64l-0.78,-2.12l-0.8,-0.22l-0.78,-2.15l-0.49,-0.24l-6.13,2.0l-0.3,-0.15l-14.84,4.19l-0.28,0.5ZM860.89,110.08l-0.02,-0.37l-0.14,-0.48l0.51,0.23l-0.35,0.62ZM876.37,122.8l-0.42,-0.66l0.06,-0.05l0.44,0.67l-0.09,0.05ZM875.46,121.25l-0.86,-0.11l-0.94,-1.42l1.44,1.0l0.36,0.54ZM871.54,119.46l-0.06,0.25l-0.35,-0.2l0.13,0.02l0.29,-0.07ZM871.87,135.18l0.01,-0.02l0.01,0.04l-0.02,-0.02ZM867.18,137.63l0.78,-0.56l0.28,-1.17l0.84,-1.19l0.17,0.26l0.46,-0.11l0.34,0.52l0.71,-0.01l0.19,0.38l-2.11,0.73l-1.34,1.31l-0.33,-0.17Z", "name": "Massachusetts"}, "US-AL": {"path": "M608.66,337.47l25.17,-2.91l19.4,-2.75l14.04,43.3l0.79,1.4l0.22,1.05l1.17,1.59l0.59,1.87l2.24,2.5l0.92,1.8l-0.11,2.13l1.8,1.13l-0.17,0.74l-0.63,0.1l-0.16,0.7l-0.98,0.84l-0.22,2.29l0.25,1.48l-0.77,2.3l-0.14,1.84l1.1,2.94l1.21,1.52l0.53,1.6l-0.08,5.02l-0.25,0.81l0.48,2.03l1.35,1.16l1.14,2.07l-47.65,6.92l-0.42,0.61l-0.08,2.99l2.64,2.75l2.0,0.97l-0.34,2.7l0.56,1.6l0.43,0.39l-0.94,1.69l-1.24,1.0l-1.13,-0.75l-0.34,0.49l0.66,1.46l-2.82,1.05l0.29,-0.64l-0.45,-0.86l-0.99,-0.77l-0.1,-1.11l-0.57,-0.22l-0.53,0.61l-0.32,-0.1l-0.89,-1.53l0.41,-1.67l-0.97,-2.21l-0.46,-0.45l-0.86,-0.2l-0.3,-0.89l-0.56,-0.17l-0.37,0.61l0.14,0.35l-0.77,3.1l-0.01,5.08l-0.59,0.0l-0.24,-0.71l-2.22,-0.44l-1.65,0.31l-5.46,-31.99l-0.99,-66.49l-0.02,-0.37l-1.07,-0.63l-0.69,-1.02Z", "name": "Alabama"}, "US-MO": {"path": "M468.68,225.54l24.71,-0.73l18.94,-1.43l22.11,-2.58l0.42,0.35l0.39,0.91l2.43,1.65l0.29,0.74l1.21,0.87l-0.51,1.37l-0.1,3.21l0.78,3.65l0.95,1.44l0.03,1.59l1.11,1.37l0.46,1.55l4.96,4.1l1.06,1.69l4.93,3.31l0.7,1.15l0.27,1.62l0.5,0.82l-0.18,0.69l0.47,1.8l0.97,1.63l0.77,0.73l1.04,0.16l0.83,-0.56l0.84,-1.4l0.57,-0.19l2.41,0.61l1.68,0.76l0.84,0.77l-0.97,1.95l0.26,2.28l-2.37,6.86l0.01,1.02l0.7,1.92l4.67,4.05l1.99,1.05l1.46,0.09l1.66,1.31l1.91,0.8l1.51,2.11l2.04,0.83l0.42,2.96l1.72,2.9l-1.1,1.94l0.18,1.38l0.75,0.33l2.31,4.25l1.94,0.92l0.55,-0.32l0.0,-0.65l0.87,1.1l1.07,-0.08l0.14,1.85l-0.37,1.07l0.53,1.6l-1.07,3.86l-0.51,0.07l-1.37,-1.13l-0.65,0.13l-0.78,3.34l-0.52,0.74l0.13,-1.06l-0.56,-1.09l-0.97,-0.2l-0.74,0.63l0.02,1.05l0.53,0.66l-0.04,0.7l0.58,1.34l-0.2,0.4l-1.2,0.39l-0.17,0.41l0.15,0.55l0.86,0.84l-1.71,0.37l-0.14,0.62l1.53,1.97l-0.89,0.75l-0.63,2.13l-10.61,1.42l1.06,-2.28l0.87,-0.61l0.18,-0.87l1.44,-0.96l0.25,-0.96l0.63,-0.37l0.29,-0.59l-0.22,-2.28l-1.05,-0.75l-0.2,-0.77l-1.09,-1.18l-39.24,3.61l-37.72,2.58l-3.21,-58.2l-1.03,-0.63l-1.2,-0.02l-1.52,-0.73l-0.19,-0.93l-0.76,-0.59l-0.34,-0.71l-0.36,-1.55l-0.55,-0.09l-0.3,-0.56l-1.13,-0.66l-1.4,-1.84l0.73,-0.51l0.09,-1.24l1.12,-1.27l0.09,-0.79l1.01,0.16l0.56,-0.43l-0.2,-2.24l-1.02,-0.74l-0.32,-1.1l-1.17,-0.01l-1.31,0.96l-0.81,-0.7l-0.73,-0.17l-2.67,-2.35l-1.05,-0.28l0.13,-1.6l-1.32,-1.72l0.1,-1.02l-0.37,-0.36l-1.01,-0.18l-0.59,-0.85l-0.84,-0.26l0.07,-0.53l-1.24,-2.88l-0.0,-0.74l-0.4,-0.49l-0.85,-0.29l-0.05,-0.54ZM583.77,294.59l-0.1,-0.1l-0.08,-0.15l0.11,-0.01l0.07,0.26Z", "name": "Missouri"}, "US-MN": {"path": "M439.34,42.76l26.81,-1.05l0.34,1.46l1.28,0.84l1.79,-0.5l1.05,-1.43l0.78,-0.31l2.13,2.19l1.71,0.28l0.31,1.2l1.83,1.4l1.79,0.48l2.64,-0.41l0.39,0.85l0.67,0.4l5.12,0.01l0.37,0.23l0.54,1.59l0.71,0.61l4.27,-0.78l0.77,-0.65l0.07,-0.69l2.43,-0.79l3.97,-0.02l1.42,0.7l3.39,0.66l-1.01,0.79l0.0,0.82l1.18,0.54l2.23,-0.16l0.52,2.08l1.58,2.29l0.71,0.05l1.03,-0.78l-0.04,-1.73l2.67,-0.46l1.43,2.17l2.01,0.79l1.54,0.18l0.54,0.57l-0.03,0.83l0.58,0.35l1.32,0.06l0.38,0.83l1.43,-0.19l1.12,0.22l2.22,-0.85l2.78,-2.55l2.49,-1.54l1.24,2.52l0.96,0.51l2.23,-0.66l0.87,0.36l5.98,-1.3l0.56,0.18l1.32,1.64l1.24,0.59l0.62,-0.01l1.61,-0.83l1.35,0.08l-0.93,1.03l-4.69,3.07l-6.35,2.82l-3.68,2.48l-2.15,2.49l-0.95,0.58l-6.63,8.66l-0.95,0.61l-1.08,1.56l-1.96,1.96l-4.17,3.55l-0.86,1.79l-0.55,0.44l-0.14,0.96l-0.78,-0.01l-0.46,0.51l0.98,12.22l-0.79,1.2l-1.05,0.08l-0.52,0.82l-0.83,0.15l-0.61,0.83l-2.06,1.19l-0.94,1.86l0.06,0.72l-1.69,2.39l-0.01,2.06l0.38,0.91l2.15,0.39l1.42,2.49l-0.52,1.92l-0.71,1.25l-0.05,2.12l0.45,1.32l-0.71,1.23l0.91,3.14l-0.51,4.08l3.95,3.03l3.02,0.4l1.89,2.25l2.87,0.5l2.45,1.93l2.39,3.59l2.64,1.8l2.09,0.09l1.07,0.71l0.88,0.1l0.82,1.36l1.03,0.45l0.23,0.39l0.28,2.03l0.68,1.3l0.39,4.82l-40.63,3.2l-40.63,2.09l-1.46,-38.98l-0.7,-1.27l-0.83,-0.78l-2.57,-0.79l-0.94,-1.91l-1.46,-1.79l0.21,-0.68l2.83,-2.34l0.97,-2.12l0.4,-2.44l-0.35,-1.58l0.23,-1.58l-0.18,-1.79l-0.5,-1.03l-0.18,-2.33l-1.81,-2.59l-0.47,-1.13l-0.21,-2.16l-0.66,-0.98l0.15,-1.66l-0.35,-1.52l0.53,-2.69l-1.08,-1.85l-0.49,-8.33l-0.42,-0.79l0.06,-3.92l-1.58,-3.96l-0.53,-0.65l-0.4,-1.37l0.05,-1.19l-0.48,-0.53l-1.36,-3.77l0.0,-3.22l-0.47,-1.97l0.27,-1.12l-0.57,-2.32l0.73,-2.56l-2.06,-6.9ZM468.97,33.61l1.22,0.46l0.99,-0.2l0.33,0.45l-0.05,1.72l-1.78,1.12l-0.15,-0.47l-0.4,-0.14l-0.16,-2.95Z", "name": "Minnesota"}, "US-CA": {"path": "M2.95,175.4l0.78,-1.24l0.46,0.46l0.59,-0.08l0.52,-1.18l0.8,-0.86l1.3,-0.26l0.56,-0.53l-0.15,-0.71l-0.93,-0.32l1.53,-2.79l-0.3,-1.58l0.14,-0.87l2.04,-3.3l1.31,-3.03l0.36,-2.12l-0.28,-1.0l0.16,-3.11l-1.36,-2.16l1.18,-1.38l0.67,-2.53l32.73,8.13l32.58,7.34l-13.67,64.68l25.45,34.66l36.6,51.1l13.3,17.72l-0.19,2.73l0.73,0.94l0.21,1.71l0.85,0.63l0.81,2.56l-0.07,0.91l0.63,1.46l-0.16,1.36l3.8,3.82l0.01,0.5l-1.95,1.53l-3.11,1.26l-1.2,1.99l-1.72,1.14l-0.33,0.81l0.38,1.03l-0.51,0.51l-0.1,0.9l0.08,2.29l-0.6,0.72l-0.64,2.44l-2.02,2.47l-1.6,0.14l-0.42,0.51l0.33,0.89l-0.59,1.34l0.54,1.12l-0.01,1.19l-0.78,2.68l0.57,1.02l2.74,1.13l0.34,0.83l-0.19,2.4l-1.18,0.78l-0.42,1.37l-2.27,-0.62l-1.25,0.6l-43.38,-3.34l0.17,-1.15l0.67,-0.51l-0.17,-1.06l-1.17,-1.38l-1.04,-0.15l0.23,-1.2l-0.28,-1.07l0.78,-1.33l-0.3,-4.25l-0.6,-2.3l-1.92,-4.07l-3.56,-4.07l-1.29,-1.98l-2.42,-2.11l-2.04,-3.01l-2.22,-0.89l-0.94,0.3l-0.39,0.96l-0.62,-0.73l-0.88,-0.22l-0.15,-0.31l0.61,-0.76l0.17,-1.57l-0.44,-2.06l-1.01,-1.95l-1.0,-0.74l-4.44,-0.19l-3.33,-1.81l-1.36,-1.26l-0.7,-0.12l-1.02,-1.19l-0.44,-2.6l-0.97,-0.47l-1.68,-2.31l-2.19,-1.73l-1.24,-0.41l-1.66,0.37l-1.15,-1.01l-1.25,0.03l-2.48,-1.83l-1.06,0.01l-1.49,-0.69l-4.91,-0.52l-1.12,-2.35l-1.43,-0.76l1.34,-2.45l-0.25,-1.36l0.74,-1.99l-0.63,-1.35l1.27,-2.45l0.33,-2.44l-0.99,-1.24l-1.26,-0.23l-1.4,-1.28l0.41,-1.62l0.79,-0.09l0.25,-0.45l-0.47,-2.2l-0.65,-0.77l-1.47,-0.84l-1.78,-3.97l-1.82,-1.25l-0.36,-2.75l-1.61,-2.58l0.07,-1.39l-0.33,-1.26l-1.16,-0.94l-0.74,-2.95l-2.41,-2.69l-0.55,-1.25l-0.02,-4.63l0.59,-0.57l-0.59,-1.14l0.51,-0.59l0.53,0.61l0.78,-0.02l0.84,-0.81l0.56,-1.33l0.8,0.04l0.21,-0.88l-0.43,-0.27l0.47,-1.19l-1.22,-3.68l-0.62,-0.48l-1.05,0.08l-1.93,-0.51l-1.04,-1.06l-1.89,-3.21l-0.8,-2.28l0.86,-2.39l0.09,-1.11l-0.27,-2.38l-0.32,-0.64l-0.54,-0.24l0.25,-1.19l0.69,-1.07l0.24,-2.71l0.47,-0.64l0.88,0.13l0.18,0.94l-0.7,2.13l0.05,1.15l1.18,1.32l0.55,0.1l0.58,1.28l1.16,0.78l0.4,1.01l0.89,0.41l0.83,-0.21l-0.21,-1.45l-0.65,-0.43l-0.18,-0.58l-0.24,-3.57l-0.56,-0.71l0.26,-0.69l-1.48,-1.06l0.5,-1.07l0.09,-1.06l-1.2,-1.58l0.78,-0.74l0.79,0.06l1.24,-0.73l1.25,1.02l1.87,-0.32l5.55,2.41l0.61,-0.09l0.64,-1.38l0.69,-0.04l1.92,2.53l0.25,0.18l0.63,-0.24l0.02,-0.38l-0.39,-0.93l-1.57,-1.89l-1.66,-0.32l0.27,-0.62l-0.28,-0.54l-0.48,0.09l-1.05,1.01l-1.84,-0.22l-0.43,0.28l-0.15,-0.51l-1.05,-0.4l0.24,-1.05l-0.85,-0.47l-1.0,0.28l-0.6,0.84l-1.09,0.4l-1.35,-0.9l-0.39,-0.88l-1.51,-1.44l-0.58,0.03l-0.64,0.61l-0.92,-0.12l-0.48,0.36l-0.33,1.88l0.21,0.78l-0.76,1.36l0.36,0.65l-0.47,0.59l-0.04,0.69l-2.16,-2.89l-0.44,-0.15l-0.25,0.32l-0.73,-1.0l-0.21,-1.03l-1.2,-1.17l-0.4,-1.05l-0.61,-0.18l0.65,-1.48l0.11,0.95l0.76,1.49l0.44,0.25l0.33,-0.38l-1.45,-5.21l-1.08,-1.42l-0.31,-2.68l-2.5,-2.87l-1.8,-4.48l-3.05,-5.54l1.09,-1.7l0.25,-1.97l-0.46,-2.11l-0.14,-3.61l1.34,-2.92l0.7,-0.74l-0.07,-1.54l0.42,-1.53l-0.41,-1.63l0.11,-1.96l-1.41,-4.06l-0.97,-1.15l0.06,-0.8l-0.42,-1.19l-2.91,-4.03l0.51,-1.35l-0.21,-2.69l2.23,-3.44ZM31.5,240.45l-0.06,0.1l-0.34,0.04l0.21,-0.05l0.19,-0.09ZM64.32,351.64l0.27,0.13l0.19,0.18l-0.31,-0.18l-0.15,-0.13ZM65.92,352.88l1.32,0.84l0.76,1.73l-0.89,-0.66l-1.14,0.03l-0.05,-1.94ZM62.72,363.08l1.36,2.08l0.57,0.53l-0.46,0.06l-0.83,-0.79l-0.65,-1.88ZM43.54,333.81l0.88,0.73l1.37,0.36l1.36,1.0l-2.82,-0.18l-0.71,-0.58l0.24,-0.66l-0.32,-0.67ZM47.89,335.89l0.94,-0.5l0.32,0.36l-0.37,0.14l-0.88,-0.0ZM46.05,352.4l0.29,-0.06l0.95,0.92l-0.61,-0.17l-0.64,-0.69ZM37.57,334.04l2.57,0.16l0.2,0.74l0.6,0.45l-1.21,0.64l-1.17,-0.1l-0.49,-0.44l-0.5,-1.44ZM34.94,332.37l0.06,-0.02l0.05,0.06l-0.01,-0.0l-0.1,-0.04Z", "name": "California"}, "US-IA": {"path": "M452.9,162.25l42.83,-2.19l40.56,-3.19l0.96,2.52l2.0,1.0l0.08,0.59l-0.9,1.8l-0.16,1.04l0.9,5.09l0.92,1.26l0.39,1.75l1.46,1.72l4.95,0.85l1.27,2.03l-0.3,1.03l0.29,0.66l3.61,2.37l0.85,2.41l3.84,2.31l0.62,1.68l-0.31,4.21l-1.64,1.98l-0.5,1.94l0.13,1.28l-1.26,1.36l-2.51,0.97l-0.89,1.18l-0.55,0.25l-4.56,0.83l-0.89,0.73l-0.61,1.71l-0.15,2.56l0.4,1.08l2.01,1.47l0.54,2.65l-1.87,3.25l-0.22,2.24l-0.53,1.42l-2.88,1.39l-1.02,1.02l-0.2,0.99l0.72,0.87l0.2,2.15l-0.58,0.23l-1.34,-0.82l-0.31,-0.76l-1.29,-0.82l-0.29,-0.51l-0.88,-0.36l-0.3,-0.82l-0.95,-0.68l-22.3,2.61l-15.13,1.17l-7.59,0.51l-20.78,0.47l-0.22,-1.06l-1.3,-0.73l-0.33,-0.67l0.58,-1.16l-0.21,-0.95l0.22,-1.39l-0.36,-2.19l-0.6,-0.73l0.07,-3.65l-1.05,-0.5l0.05,-0.91l0.71,-1.02l-0.05,-0.44l-1.31,-0.56l0.33,-2.54l-0.41,-0.45l-0.89,-0.16l0.23,-0.8l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.81l0.5,-2.36l-0.2,-0.67l-1.36,-1.71l-0.08,-1.92l-1.78,-1.54l-0.36,-1.74l-1.09,-0.94l0.03,-2.18l-1.1,-1.87l0.21,-1.7l-0.27,-1.08l-1.38,-0.67l-0.42,-1.58l-0.45,-0.59l0.05,-0.63l-1.81,-1.82l0.56,-1.61l0.54,-0.47l0.73,-2.68l0.0,-1.68l0.55,-0.69l0.21,-1.19l-0.51,-2.24l-1.33,-0.29l-0.05,-0.73l0.45,-0.56l-0.0,-1.71l-0.95,-1.42l-0.05,-0.87Z", "name": "Iowa"}, "US-MI": {"path": "M612.24,185.84l1.83,-2.17l0.7,-1.59l1.18,-4.4l1.43,-3.04l1.01,-5.05l0.09,-5.37l-0.86,-5.54l-2.4,-5.18l0.61,-0.51l0.3,-0.79l-0.57,-0.42l-1.08,0.55l-3.82,-7.04l-0.21,-1.11l1.13,-2.69l-0.01,-0.97l-0.74,-3.13l-1.28,-1.65l-0.05,-0.62l1.73,-2.73l1.22,-4.14l-0.21,-5.34l-0.77,-1.6l1.09,-1.15l0.81,-0.02l0.56,-0.47l-0.27,-3.49l1.08,-0.11l0.67,-1.43l1.19,0.48l0.65,-0.33l0.76,-2.59l0.82,-1.2l0.56,-1.68l0.55,-0.18l-0.58,0.87l0.6,1.65l-0.71,1.8l0.71,0.42l-0.48,2.61l0.88,1.42l0.73,-0.06l0.52,0.56l0.65,-0.24l0.89,-2.26l0.66,-3.52l-0.08,-2.07l-0.76,-3.42l0.58,-1.02l2.13,-1.64l2.74,-0.54l0.98,-0.63l0.28,-0.64l-0.25,-0.54l-1.76,-0.1l-0.96,-0.86l-0.52,-1.99l1.85,-2.98l-0.11,-0.73l1.72,-0.23l0.74,-0.94l4.16,2.0l0.83,0.13l1.98,-0.4l1.37,0.39l1.19,1.04l0.53,1.14l0.77,0.49l2.41,-0.29l1.7,1.02l1.92,0.09l0.8,0.64l3.27,0.45l1.1,0.78l-0.01,1.12l1.04,1.31l0.64,0.21l0.38,0.92l-0.16,0.54l-0.66,-0.25l-0.94,0.57l-0.23,1.83l0.81,1.29l1.6,0.99l0.69,1.37l0.65,2.26l-0.12,1.73l0.77,5.57l-0.14,0.6l-0.57,0.2l-0.48,0.96l-0.75,0.08l-0.79,0.81l-0.17,4.47l-1.12,0.49l-0.18,0.82l-1.86,0.43l-0.73,0.6l-0.58,2.61l0.26,0.45l-0.21,0.52l0.25,2.58l1.38,1.31l2.9,0.84l0.91,-0.07l1.08,-1.23l0.6,-1.44l0.62,0.19l0.38,-0.24l1.01,-3.59l0.6,-1.06l-0.08,-0.52l0.97,-1.45l1.39,-0.39l1.07,-0.69l0.83,-1.1l0.87,-0.44l2.06,0.59l1.13,0.7l1.0,1.09l1.21,2.16l2.0,5.91l0.82,1.6l1.03,3.71l1.49,3.63l1.27,1.73l-0.33,3.93l0.45,2.49l-0.48,2.79l-0.34,0.44l-0.24,-0.33l-0.31,-1.71l-1.46,-0.52l-0.47,0.08l-1.48,1.36l-0.06,0.83l0.55,0.67l-0.83,0.57l-0.29,0.79l0.28,2.94l-0.49,0.75l-1.62,0.92l-1.06,1.85l-0.43,3.73l0.27,1.55l-0.33,0.93l-0.42,0.19l0.02,0.91l-0.64,0.3l-0.37,1.08l-0.52,0.52l-0.5,1.28l-0.02,1.05l-0.52,0.78l-20.37,4.25l-0.14,-0.86l-0.46,-0.33l-31.6,4.74ZM621.47,115.87l0.0,-0.07l0.12,-0.12l-0.01,0.03l-0.11,0.16ZM621.73,114.95l-0.07,-0.16l0.07,-0.14l-0.0,0.3ZM543.48,88.04l4.87,-2.38l3.55,-3.62l5.77,-1.36l1.39,-0.84l2.36,-2.71l0.97,0.04l1.52,-0.73l1.0,-2.25l2.82,-2.84l0.23,1.72l1.85,0.59l0.05,1.45l0.66,0.14l0.51,0.6l-0.17,3.14l0.44,0.95l-0.34,0.47l0.2,0.47l0.74,-0.02l1.08,-2.21l1.08,-0.9l-0.42,1.15l0.59,0.45l0.82,-0.67l0.52,-1.22l1.0,-0.43l3.09,-0.25l1.51,0.21l1.18,0.93l1.54,0.44l0.47,1.05l2.31,2.58l1.17,0.55l0.53,1.55l0.73,0.34l1.87,0.07l0.73,-0.4l1.07,-0.06l0.52,-0.65l0.88,-0.43l1.0,1.11l1.1,0.64l1.02,-0.25l0.68,-0.82l1.87,1.06l0.64,-0.34l1.65,-2.59l2.81,-1.89l1.7,-1.65l0.91,0.11l3.27,-1.21l5.17,-0.25l4.49,-2.72l2.56,-0.37l-0.01,3.24l0.29,0.71l-0.36,1.1l0.67,0.85l0.66,0.11l0.71,-0.39l2.2,0.7l1.14,-0.43l1.03,-0.87l0.66,0.48l0.21,0.71l0.85,0.22l1.27,-0.8l0.95,-1.55l0.66,-0.02l0.84,0.75l1.98,3.78l-0.86,1.04l0.48,0.89l0.47,0.36l1.37,-0.42l0.58,0.46l0.64,0.04l0.18,1.2l0.98,0.87l1.53,0.52l-1.17,0.68l-4.96,-0.14l-0.53,0.29l-1.35,-0.17l-0.88,0.41l-0.66,-0.76l-1.63,-0.07l-0.59,0.47l-0.07,1.22l-0.49,0.75l0.38,2.05l-0.92,-0.22l-0.89,-0.92l-0.77,-0.13l-1.96,-1.65l-2.41,-0.6l-1.6,0.04l-1.04,-0.5l-2.89,0.47l-0.61,0.45l-1.18,2.52l-3.48,0.73l-0.58,0.77l-2.06,-0.34l-2.82,0.93l-0.68,0.83l-0.56,2.51l-0.78,0.28l-0.81,0.87l-0.65,0.28l0.16,-1.96l-0.75,-0.91l-1.02,0.34l-0.76,0.92l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.1,0.83l-0.73,2.01l-1.2,0.59l-0.11,-1.38l-0.46,-1.06l0.34,-1.69l-0.17,-0.37l-0.66,-0.17l-0.45,0.58l-0.6,2.12l-0.22,2.57l-1.12,0.91l-1.26,3.02l-0.62,2.66l-2.56,5.33l-0.69,0.74l0.12,0.91l-1.4,-1.28l0.18,-1.75l0.63,-1.69l-0.41,-0.81l-0.62,-0.31l-1.36,0.85l-1.16,0.09l0.04,-1.29l0.81,-1.45l-0.41,-1.34l0.3,-1.09l-0.58,-0.98l0.15,-0.83l-1.9,-1.55l-1.1,-0.06l-0.59,-0.44l-0.86,0.2l-0.62,-0.2l0.3,-1.36l-0.94,-1.45l-1.13,-0.51l-2.23,-0.1l-3.2,-0.71l-1.55,0.59l-1.43,-0.42l-1.62,0.17l-4.56,-1.94l-15.37,-2.5l-2.0,-3.4l-1.88,-0.96l-0.76,0.26l-0.1,-0.3ZM603.38,98.65l-0.01,0.52l-0.46,0.32l-0.7,1.39l0.08,0.57l-0.65,-0.58l0.91,-2.16l0.83,-0.06ZM643.87,87.47l1.99,-1.52l0.17,-0.57l-0.27,-0.64l1.05,0.16l0.8,1.24l0.81,0.19l-0.27,1.08l-0.36,0.19l-1.5,-0.34l-0.77,0.45l-1.63,-0.24ZM635.6,77.64l0.56,-0.83l0.52,0.05l-0.37,1.32l0.11,0.71l-0.35,-0.9l-0.46,-0.35ZM636.53,79.17l0.09,0.14l0.01,0.01l-0.02,-0.01l-0.08,-0.14ZM637.39,81.25l0.4,0.45l0.22,0.61l-0.63,-0.71l0.01,-0.34ZM633.73,93.13l1.41,0.25l0.36,-0.18l0.4,0.21l-0.17,0.52l-0.75,0.11l-1.24,-0.9ZM618.85,96.77l0.62,2.25l-0.8,0.78l-0.39,-0.27l0.56,-2.76ZM613.26,110.83l0.47,0.3l-0.09,0.57l-0.45,-0.69l0.06,-0.17ZM612.23,113.57l0.0,-0.03l0.02,-0.04l-0.03,0.07ZM599.41,82.64l-0.23,-0.37l0.03,-0.4l0.37,0.32l-0.17,0.45ZM570.51,72.75l-0.51,-0.27l-1.16,0.06l-0.04,-1.56l1.0,-1.03l1.17,-2.09l1.84,-1.49l0.63,-0.0l0.53,-0.58l2.08,-0.89l3.34,-0.42l1.1,0.66l-0.54,0.38l-1.31,-0.12l-2.27,0.78l-0.15,0.29l0.3,0.59l0.71,0.13l-1.19,0.98l-1.4,1.89l-0.7,0.29l-0.36,1.45l-1.15,1.37l-0.66,2.04l-0.67,-0.87l0.75,-0.97l0.14,-1.95l-0.63,-0.37l-0.21,0.15l-0.6,0.92l-0.05,0.67ZM558.28,58.21l0.75,-0.98l-0.39,-0.33l0.56,-0.53l4.62,-2.98l1.97,-1.72l0.62,-0.18l-0.45,0.65l0.1,0.79l-0.43,0.49l-4.25,2.56l-0.86,0.99l0.24,0.36l-1.87,1.17l-0.61,-0.28Z", "name": "Michigan"}, "US-GA": {"path": "M654.05,331.71l22.02,-3.57l20.65,-3.86l-1.48,1.42l-0.51,1.68l-0.66,0.82l-0.41,1.73l0.11,1.23l0.82,0.78l1.84,0.8l1.03,0.12l2.7,2.03l0.84,0.24l1.9,-0.37l0.6,0.25l0.8,1.64l1.51,1.6l1.04,2.5l1.33,0.82l0.84,1.16l0.56,0.26l1.0,1.77l1.07,0.3l1.17,0.99l3.81,1.85l2.41,3.16l2.25,0.58l2.53,1.67l0.5,2.34l1.25,1.02l0.47,-0.16l0.31,0.49l-0.1,0.62l0.79,0.73l0.79,0.09l0.56,1.21l4.99,1.89l0.4,1.78l1.54,1.73l1.02,2.01l-0.07,0.81l0.49,0.69l0.11,1.24l1.04,0.79l1.17,0.17l1.25,0.62l0.28,0.53l0.57,0.23l1.12,2.56l0.76,0.57l0.08,2.68l0.77,1.48l1.38,0.9l1.52,-0.27l1.44,0.76l1.45,0.11l-0.59,0.78l-0.56,-0.35l-0.47,0.28l-0.4,0.99l0.62,0.91l-0.38,0.48l-1.38,-0.16l-0.77,-0.55l-0.65,0.44l0.26,0.71l-0.49,0.52l0.36,0.61l0.94,-0.04l0.5,0.29l-0.58,1.35l-1.43,0.27l-1.33,-0.44l-0.44,0.39l0.34,0.85l1.23,0.35l-0.5,0.87l0.23,0.35l-0.2,0.64l0.83,0.64l-0.33,0.44l-0.72,-0.13l-0.96,0.51l-0.1,0.62l1.09,0.45l0.05,0.95l0.48,-0.07l1.2,-1.17l-0.92,2.31l-0.31,-0.58l-0.59,-0.08l-0.44,0.72l0.29,0.7l0.98,0.83l-2.32,0.04l-0.92,-0.28l-0.63,0.3l0.06,0.63l0.55,0.34l2.76,0.24l1.07,0.66l-0.02,0.34l-0.56,0.22l-0.88,1.95l-0.5,-1.41l-0.45,-0.13l-0.6,0.33l-0.15,0.84l0.34,0.96l-0.6,0.11l-0.03,0.84l-0.3,0.16l0.07,0.46l1.33,1.15l-1.09,1.03l0.32,0.47l0.77,0.07l-0.39,0.92l0.06,0.88l-0.46,0.51l1.1,1.66l0.03,0.76l-0.79,0.33l-2.64,-0.17l-4.06,-0.96l-1.31,0.35l-0.18,0.74l-0.68,0.26l-0.35,1.25l0.28,2.08l0.95,1.36l0.13,4.25l-1.97,0.4l-0.54,-0.92l-0.12,-1.3l-1.33,-1.82l-49.22,5.14l-0.72,-0.56l-0.86,-2.7l-0.94,-1.51l-0.56,-0.38l0.16,-0.68l-0.73,-1.51l-1.82,-1.81l-0.43,-1.75l0.25,-0.8l0.06,-5.18l-0.6,-1.81l-1.19,-1.47l-1.03,-2.65l0.12,-1.65l0.78,-2.36l-0.25,-1.53l0.19,-2.11l1.62,-1.33l0.46,-1.47l-0.55,-0.61l-1.42,-0.69l0.09,-2.15l-0.97,-1.87l-2.18,-2.42l-1.03,-2.81l-0.75,-0.68l-0.17,-0.96l-0.77,-1.37l-13.99,-43.12ZM745.21,389.83l0.7,-0.26l-0.07,0.82l-0.29,-0.33l-0.34,-0.24ZM743.75,406.73l0.05,0.87l-0.01,0.46l-0.34,-0.56l0.3,-0.76Z", "name": "Georgia"}, "US-AZ": {"path": "M128.39,384.21l0.44,-1.81l1.29,-1.29l0.54,-1.11l0.48,-0.25l1.66,0.62l0.96,-0.03l0.52,-0.46l0.28,-1.17l1.31,-1.0l0.24,-2.73l-0.46,-1.24l-0.84,-0.66l-2.07,-0.67l-0.3,-0.61l0.8,-2.4l0.0,-1.39l-0.52,-1.2l0.57,-0.86l-0.2,-0.87l1.57,-0.27l2.29,-2.81l0.65,-2.43l0.65,-0.81l0.02,-3.17l0.55,-0.62l-0.29,-1.43l1.71,-1.14l1.03,-1.85l3.16,-1.29l2.03,-1.58l0.26,-0.53l-0.13,-1.04l-3.25,-3.49l-0.51,-0.22l0.22,-1.26l-0.66,-1.46l0.07,-0.91l-0.88,-2.76l-0.84,-0.56l-0.19,-1.65l-0.69,-0.8l0.19,-3.54l0.58,-0.87l-0.3,-0.86l1.04,-0.4l0.4,-1.42l0.14,-3.2l-0.76,-3.66l0.47,-0.88l0.29,-1.67l-0.4,-3.0l0.85,-2.56l-0.8,-1.87l-0.03,-0.92l0.43,-0.52l0.34,-1.35l2.54,-0.63l1.75,0.99l1.43,-0.19l0.96,2.24l0.79,0.71l1.54,0.14l1.01,-0.5l1.02,-2.27l0.94,-1.19l2.57,-16.95l42.43,5.78l42.56,4.67l-11.82,123.66l-36.89,-4.05l-36.34,-18.98l-28.44,-15.56Z", "name": "Arizona"}, "US-MT": {"path": "M166.3,57.31l0.69,-0.1l0.33,-0.38l-0.9,-1.99l0.83,-0.96l-0.39,-1.3l0.09,-0.96l-1.24,-1.93l-0.24,-1.49l-1.03,-1.33l-1.19,-2.44l3.53,-20.65l43.66,6.71l43.06,5.23l42.75,3.84l43.15,2.53l-3.53,86.06l-28.11,-1.47l-26.82,-1.91l-26.78,-2.4l-25.84,-2.79l-0.44,0.35l-1.22,10.41l-1.51,-2.01l-0.03,-0.91l-1.19,-2.35l-1.25,-0.74l-1.8,0.92l0.03,1.05l-0.72,0.42l-0.34,1.56l-2.42,-0.41l-1.91,0.57l-0.92,-0.85l-3.36,0.09l-2.38,-0.96l-1.68,0.58l-0.84,1.49l-4.66,-1.6l-1.3,0.37l-1.12,0.9l-0.31,0.67l-1.65,-1.4l0.22,-1.43l-0.9,-1.71l0.4,-0.36l0.07,-0.62l-1.17,-3.08l-1.45,-1.25l-1.44,0.36l-0.21,-0.64l-1.08,-0.9l-0.41,-1.37l0.68,-0.61l0.2,-1.41l-0.77,-2.38l-0.77,-0.35l-0.31,-1.58l-1.51,-2.54l0.23,-1.51l-0.56,-1.26l0.34,-1.4l-0.73,-0.86l0.48,-0.98l-0.21,-0.74l-1.14,-0.75l-0.13,-0.59l-0.85,-0.91l-0.8,-0.4l-0.51,0.37l-0.07,0.74l-0.7,0.27l-1.13,1.22l-1.75,0.37l-1.21,1.07l-1.08,-0.85l-0.64,-1.01l-1.06,-0.44l0.02,-0.86l0.74,-0.63l0.24,-1.06l-0.61,-1.6l0.9,-1.09l1.07,-0.08l0.83,-0.8l-0.26,-1.14l0.38,-1.07l-0.95,-0.81l-0.04,-0.81l0.66,-1.28l-0.59,-1.07l0.74,-0.07l0.38,-0.42l-0.04,-1.77l1.83,-3.73l-0.14,-1.05l0.89,-0.62l0.6,-3.17l-0.78,-0.5l-1.8,0.37l-1.33,-0.11l-0.64,-0.55l0.37,-0.83l-0.62,-0.97l-0.66,-0.23l-0.72,0.35l-0.07,-0.95l-1.74,-1.63l0.04,-1.84l-1.68,-1.82l-0.08,-0.69l-1.55,-2.88l-1.07,-1.29l-0.57,-1.63l-2.35,-1.34l-0.95,-1.95l-1.44,-1.19Z", "name": "Montana"}, "US-MS": {"path": "M555.49,431.1l0.67,-0.97l-1.05,-1.76l0.18,-1.63l-0.81,-0.87l1.69,-0.25l0.47,-0.54l0.4,-2.74l-0.77,-1.82l1.56,-1.79l0.25,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.63,-0.96l1.14,-0.28l0.96,-2.59l0.91,-1.31l-0.16,-0.86l-1.54,-0.43l-0.35,-0.96l-1.83,-1.04l-0.07,-2.14l-0.93,-0.74l-0.45,-0.84l-0.02,-0.37l1.14,-0.29l0.47,-0.69l-0.26,-0.89l-1.41,-0.49l0.23,-1.77l0.98,-1.54l-0.77,-1.06l-1.08,-0.31l-0.15,-2.82l0.9,-0.54l0.23,-0.8l-0.62,-2.52l-1.25,-0.66l0.7,-1.33l-0.07,-2.22l-2.02,-1.52l1.14,-0.47l0.12,-1.41l-1.34,-0.89l1.58,-2.04l0.93,-0.31l0.36,-0.69l-0.52,-1.56l0.42,-1.35l-0.9,-0.89l1.6,-0.83l1.24,-0.27l0.59,-0.77l-0.09,-1.07l-1.41,-0.95l1.39,-1.08l0.62,-1.77l0.5,0.11l0.45,-0.28l0.34,-0.98l-0.2,-0.77l1.48,-0.43l1.22,-1.21l0.07,-3.53l-0.46,-1.53l0.36,-1.78l0.73,0.09l0.68,-0.33l0.42,-0.87l-0.41,-1.06l2.72,-1.71l0.58,-1.06l-0.29,-1.28l36.45,-4.1l0.86,1.26l0.85,0.45l0.99,66.5l5.52,32.95l-0.73,0.69l-1.53,-0.3l-0.91,-0.94l-1.32,1.06l-1.23,0.17l-2.17,-1.26l-1.85,-0.19l-0.83,0.36l-0.34,0.44l0.32,0.41l-0.56,0.36l-3.96,1.66l-0.05,-0.5l-0.96,-0.52l-1.0,0.04l-0.59,1.0l0.76,0.61l-1.59,1.21l-0.32,1.28l-0.69,0.3l-1.34,-0.06l-1.16,-1.86l-0.08,-0.89l-0.92,-1.47l-0.21,-1.01l-1.4,-1.63l-1.16,-0.54l-0.47,-0.78l0.1,-0.62l-0.69,-0.92l0.21,-1.99l0.5,-0.93l0.66,-2.98l-0.06,-1.23l-0.43,-0.29l-34.66,3.41Z", "name": "Mississippi"}, "US-SC": {"path": "M697.56,324.11l4.86,-2.69l1.02,-0.05l1.11,-1.38l3.93,-1.9l0.45,-0.88l0.63,0.22l22.71,-3.36l0.07,1.22l0.42,0.57l0.71,0.01l1.21,-1.3l2.82,2.54l0.46,2.48l0.55,0.52l19.74,-3.49l22.74,15.07l0.02,0.55l-2.48,2.18l-2.44,3.67l-2.41,5.72l-0.09,2.74l-1.08,-0.21l0.85,-2.73l-0.64,-0.23l-0.76,0.87l-0.56,1.38l-0.11,1.55l0.84,0.95l1.05,0.23l0.44,0.91l-0.75,0.08l-0.41,0.56l-0.87,0.02l-0.24,0.68l0.94,0.45l-1.1,1.13l-0.07,1.02l-1.34,0.63l-0.5,-0.61l-0.5,-0.08l-1.07,0.87l-0.56,1.76l0.43,0.87l-1.2,1.23l-0.61,1.44l-1.2,1.01l-0.9,-0.4l0.27,-0.6l-0.53,-0.74l-1.38,0.31l-0.11,0.43l0.36,0.77l-0.52,0.03l0.05,0.76l0.72,0.58l1.3,0.43l-0.12,0.39l-0.88,0.94l-1.22,0.23l-0.25,0.51l0.33,0.45l-2.3,1.34l-1.42,-0.85l-0.56,0.11l-0.11,0.67l1.19,0.78l-1.54,1.57l-0.72,-0.75l-0.5,0.52l-0.0,0.74l-0.69,-0.37l-0.85,-0.0l-1.34,-0.84l-0.45,0.5l0.16,0.53l-1.73,0.17l-0.44,0.37l-0.06,0.77l0.65,0.23l1.43,-0.17l-0.26,0.55l0.42,0.25l1.91,-0.15l0.11,0.22l-0.97,0.86l-0.32,0.78l0.57,0.49l0.94,-0.53l0.03,0.21l-1.12,1.09l-0.99,0.43l-0.21,-2.04l-0.69,-0.27l-0.22,-1.55l-0.88,-0.15l-0.31,0.58l0.86,2.7l-1.12,-0.66l-0.63,-1.0l-0.4,-1.76l-0.65,-0.2l-0.52,-0.63l-0.69,0.0l-0.27,0.6l0.84,1.02l0.01,0.68l1.11,1.83l-0.02,0.86l1.22,1.17l-0.62,0.35l0.03,0.98l-1.2,3.56l-1.52,-0.78l-1.52,0.26l-0.97,-0.68l-0.54,-1.03l-0.17,-2.93l-0.86,-0.75l-1.06,-2.47l-1.04,-0.95l-3.23,-1.33l-0.49,-2.65l-1.12,-2.17l-1.43,-1.58l-0.06,-1.07l-0.76,-1.21l-4.82,-1.69l-0.58,-1.27l-1.21,-0.37l0.02,-0.7l-0.53,-0.87l-0.87,0.0l-0.73,-0.61l0.03,-1.21l-0.66,-1.26l-2.7,-1.78l-2.16,-0.52l-2.36,-3.12l-3.93,-1.93l-1.22,-1.03l-0.83,-0.12l-1.05,-1.81l-0.51,-0.22l-0.91,-1.21l-1.18,-0.68l-0.99,-2.42l-1.54,-1.65l-1.02,-1.87l-1.06,-0.37l-1.93,0.37l-0.46,-0.16l-2.75,-2.19l-1.06,0.02l-1.7,-0.74l-0.52,-0.53l0.36,-2.22l0.64,-0.78l0.34,-1.39l1.36,-1.23l0.4,-0.98ZM750.38,375.27l0.73,-0.08l0.51,0.45l-1.23,1.9l0.28,-1.22l-0.3,-1.06Z", "name": "South Carolina"}, "US-RI": {"path": "M859.15,133.1l0.33,0.01l1.02,2.65l-0.31,0.56l-1.04,-3.22ZM858.41,136.77l-0.28,-0.34l0.24,-1.5l0.41,1.53l-0.37,0.31ZM851.13,141.49l0.22,-0.46l-0.53,-2.22l-3.14,-10.0l5.61,-1.84l0.76,2.06l0.8,0.25l0.19,0.73l0.08,0.41l-0.77,0.25l0.03,0.29l0.51,1.45l0.59,0.5l-0.6,0.15l-0.46,0.73l0.87,0.97l-0.14,1.22l0.94,2.18l-0.32,2.08l-1.33,0.23l-3.15,2.19l-0.16,-1.21ZM855.93,131.57l0.26,0.1l0.01,0.09l-0.17,-0.08l-0.1,-0.11ZM857.32,132.24l0.23,0.48l-0.2,0.31l-0.04,-0.39l0.01,-0.4ZM855.92,145.03l0.11,0.11l-0.18,0.1l-0.03,-0.14l0.11,-0.07Z", "name": "Rhode Island"}, "US-CT": {"path": "M823.44,156.54l2.83,-3.23l-0.07,-0.54l-1.31,-1.25l-3.5,-15.89l9.81,-2.41l0.6,0.46l0.65,-0.26l0.23,-0.58l14.16,-4.0l3.2,10.18l0.47,1.96l-0.04,1.69l-1.65,0.32l-0.91,0.81l-0.69,-0.36l-0.5,0.11l-0.18,0.91l-1.15,0.07l-1.27,1.27l-0.62,-0.14l-0.56,-1.02l-0.89,-0.09l-0.21,0.67l0.75,0.64l0.08,0.54l-0.89,-0.02l-1.02,0.87l-1.65,0.07l-1.15,0.94l-0.86,-0.09l-2.05,0.82l-0.4,-0.68l-0.61,0.11l-0.89,2.12l-0.59,0.29l-0.83,1.29l-0.79,-0.05l-0.94,0.74l-0.2,0.63l-0.53,0.05l-0.88,0.75l-2.77,3.07l-0.96,0.27l-1.24,-1.04Z", "name": "Connecticut"}}, "height": 589.0572567800147, "projection": {"type": "aea", "centralMeridian": -100.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-us-il-chicago-mill-en.js b/plugins/jvectormap/jquery-jvectormap-us-il-chicago-mill-en.js new file mode 100644 index 0000000..9ecc59e --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-us-il-chicago-mill-en.js @@ -0,0 +1 @@ +$.fn.vectorMap('addMap', 'us-il-chicago_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 981.6642077705183, "bbox": [{"y": -4974623.06756953, "x": -9794413.94204009}, {"y": -4924089.35877946, "x": -9748084.109953867}], "left": 0}], "paths": {"30": {"path": "M434.84,460.98l36.68,-9.71l0.3,-0.39l-0.1,-5.36l20.97,-0.32l2.81,-0.75l0.3,-0.42l-0.11,-3.59l15.66,-0.18l2.05,-0.51l0.29,-0.4l-0.1,-3.87l15.13,-0.27l0.51,0.69l15.82,-4.25l0.49,21.81l0.5,9.27l0.23,25.68l-18.77,7.05l-0.82,-0.42l-8.12,3.3l-9.08,2.89l-0.32,0.4l0.05,1.49l-20.38,7.69l-0.54,-0.54l-51.84,19.56l-0.14,-7.94l0.35,-0.36l-0.71,-37.88l-0.27,-0.26l-0.11,-4.47l-0.27,-0.26l-0.45,-17.67Z", "name": "SOUTH LAWNDALE"}, "42": {"path": "M702.83,648.78l-0.66,-32.42l62.7,-1.14l0.5,-0.66l1.56,0.3l1.02,1.13l17.07,-0.71l2.46,6.49l6.42,3.82l6.0,2.05l-5.94,2.09l-0.23,0.51l0.25,0.7l-2.29,0.68l-1.48,1.19l-1.26,3.45l0.09,2.02l1.35,2.52l-0.71,0.12l-0.21,0.84l2.1,0.93l1.55,0.1l0.41,0.34l0.47,-0.55l2.88,-0.87l0.49,-1.57l-0.05,-0.88l-1.26,-1.88l-0.85,-0.22l-0.17,-0.63l-1.11,-1.39l0.14,-1.94l1.24,-0.25l0.46,0.19l0.72,1.51l4.23,4.18l2.34,1.53l4.68,6.55l-84.35,1.23l-0.39,0.41l0.35,17.92l-20.5,-17.67Z", "name": "WOODLAWN"}, "29": {"path": "M433.41,408.21l0.45,-0.42l-0.26,-7.5l14.87,-4.96l0.14,4.61l0.41,0.39l15.38,-0.23l0.02,1.07l0.4,0.39l10.98,-0.16l0.39,-0.41l-0.08,-2.93l4.67,-0.17l25.79,-0.3l0.06,2.01l0.4,0.39l31.11,-0.42l0.26,3.65l0.5,1.81l0.56,0.86l-0.32,0.56l5.51,9.03l-0.07,9.07l0.31,0.69l0.1,5.58l-15.52,4.17l-0.39,-0.57l-0.38,-0.02l-15.57,0.28l-0.39,0.41l0.1,3.97l-1.55,0.4l-16.02,0.16l-0.44,0.41l0.1,3.73l-2.42,0.65l-21.26,0.32l-0.39,0.41l0.11,5.44l-36.2,9.59l-1.4,-51.95Z", "name": "NORTH LAWNDALE"}, "60": {"path": "M604.34,460.52l0.42,0.11l4.45,-3.9l2.33,0.23l14.05,-2.95l2.99,-0.24l8.14,-2.55l3.73,-0.28l1.58,2.39l0.44,0.11l1.88,-0.89l0.84,1.17l-1.12,0.02l-0.32,0.63l1.36,1.93l-0.17,0.55l0.52,1.99l0.41,0.39l4.47,-0.18l2.14,0.42l0.14,6.34l0.4,0.39l3.45,-0.06l0.17,18.51l0.41,0.39l0.68,-0.01l0.08,3.93l-0.99,0.02l-0.39,0.36l-0.1,1.03l0.35,17.46l0.03,0.49l0.44,0.38l0.08,4.34l0.35,0.8l3.8,3.46l-46.76,0.76l-1.98,-1.67l-0.91,-10.68l0.28,-7.78l-6.4,-8.38l-2.07,-1.34l-3.8,-4.99l-0.75,-2.49l-2.35,-4.49l-0.02,-2.88l-0.9,-2.41l1.4,-2.94l1.09,-3.72l6.14,-3.76Z", "name": "BRIDGEPORT"}, "61": {"path": "M553.61,557.46l0.78,0.0l0.4,-0.41l-0.78,-37.41l52.09,-0.54l51.22,-0.97l0.17,13.69l0.34,0.33l0.31,3.94l-0.92,0.38l0.0,10.74l-0.47,3.31l0.4,0.48l0.72,-0.02l0.15,4.17l-0.27,0.68l0.98,36.99l-93.0,1.56l-1.29,-7.82l-0.29,-14.14l0.31,-6.13l-0.4,-0.38l-10.34,0.32l-0.11,-8.77Z", "name": "NEW CITY"}, "62": {"path": "M437.9,591.49l5.04,-0.45l0.32,-0.53l-0.18,-2.82l15.48,-0.19l0.39,-0.41l-0.08,-3.58l10.24,-4.85l0.22,-0.81l0.65,-0.05l7.65,-4.06l9.05,-4.22l1.56,-1.61l1.04,-1.67l1.07,38.88l-0.42,0.41l0.2,9.02l-51.66,0.78l-0.59,-23.85Z", "name": "WEST ELSDON"}, "63": {"path": "M490.11,569.1l5.9,-0.57l15.15,-0.17l0.39,-0.69l20.34,-0.4l0.43,0.6l21.03,-0.38l0.39,-0.45l1.07,-0.18l8.88,-0.14l-0.33,5.71l0.29,14.17l1.3,8.76l-0.82,0.01l-0.39,0.37l-0.63,9.82l-0.01,7.8l-72.13,1.2l-0.19,-8.64l0.42,-0.41l-0.73,-28.01l0.23,-0.27l-0.44,-0.65l-0.14,-7.47Z", "name": "GAGE PARK"}, "64": {"path": "M300.93,618.97l136.8,-2.83l0.93,37.0l-9.75,0.17l-0.23,-9.09l-0.42,-0.37l-126.47,2.8l-0.86,-27.7Z", "name": "CLEARING"}, "65": {"path": "M429.25,671.43l-0.33,-17.3l10.15,-0.18l0.39,-0.43l-0.94,-37.38l52.64,-0.8l0.37,18.03l-0.44,0.41l1.11,47.05l-0.24,8.14l-1.96,-0.73l-5.38,-3.11l-0.26,0.14l-4.46,-2.12l-6.28,-3.8l-2.21,-0.96l-0.53,0.39l0.52,20.58l-21.41,0.53l-0.47,-0.4l-8.88,0.7l-0.31,-0.3l-5.46,0.12l-4.76,-0.46l-0.87,-28.13Z", "name": "WEST LAWN"}, "66": {"path": "M491.91,634.16l0.46,-0.43l-0.4,-18.4l72.31,-1.2l0.31,13.91l1.06,4.7l-0.72,8.47l0.02,0.84l0.56,0.39l0.41,8.6l-0.77,0.41l0.21,9.41l0.53,0.39l-0.17,3.88l0.21,2.07l-0.43,3.0l0.02,2.42l0.82,15.63l-62.64,1.35l-0.29,-0.32l-7.72,0.24l-2.94,-0.36l0.05,-7.88l0.2,-0.25l-1.1,-46.86Z", "name": "CHICAGO LAWN"}, "67": {"path": "M564.51,596.15l0.85,-0.01l0.39,-0.42l-0.01,-0.54l51.0,-0.79l2.02,93.26l-33.25,0.66l-0.45,-0.39l-17.92,0.32l-0.82,-15.64l-0.02,-2.32l0.43,-3.02l-0.21,-2.15l0.2,-4.23l-0.58,-0.43l-0.19,-8.61l0.78,-0.42l-0.45,-9.4l-0.55,-0.38l-0.01,-0.43l0.72,-8.52l-1.06,-4.79l-0.32,-14.18l-0.41,-0.39l-0.78,0.01l0.01,-7.75l0.61,-9.43Z", "name": "WEST ENGLEWOOD"}, "68": {"path": "M617.55,594.41l56.14,-1.11l0.65,28.85l-1.17,0.03l-0.39,0.41l0.16,7.13l0.28,0.63l-2.6,0.03l-0.39,0.41l0.38,18.46l-1.91,0.03l-0.39,0.35l-0.47,3.41l-0.22,5.68l-4.35,0.1l-0.39,0.41l0.08,4.32l-2.22,0.05l-0.39,0.41l0.15,7.45l-0.43,1.79l0.84,0.54l-0.34,1.04l0.16,7.62l-2.23,0.04l-0.39,0.41l0.09,4.32l-7.34,0.2l-0.38,0.4l-0.1,4.33l-9.73,0.19l-0.1,-4.96l-0.57,-0.35l-20.42,0.33l-2.02,-92.95Z", "name": "ENGLEWOOD"}, "69": {"path": "M650.23,706.26l-0.29,-13.3l0.83,-0.02l0.39,-0.37l0.13,-4.38l7.34,-0.18l0.39,-0.41l-0.09,-4.32l2.23,-0.04l0.39,-0.41l-0.17,-7.98l0.38,-1.2l-0.15,-0.39l-0.69,-0.31l0.4,-1.47l-0.14,-7.1l2.14,-0.04l0.39,-0.33l-0.0,-4.4l4.33,-0.1l0.39,-0.38l0.23,-6.03l0.41,-3.02l2.0,-0.03l0.39,-0.44l-0.41,-18.44l3.08,-0.04l0.37,-0.53l-0.74,-0.86l-0.15,-6.76l6.91,-0.14l0.06,7.75l0.4,0.41l9.33,0.03l11.37,-0.49l0.5,18.74l21.34,18.41l0.66,-0.32l-0.38,-18.43l28.68,-0.34l-1.33,7.7l0.02,0.65l0.76,0.39l0.22,9.28l-1.79,0.01l-0.4,0.37l-0.06,9.09l-2.32,0.02l-0.39,0.33l-1.66,9.14l-0.58,0.26l0.11,0.44l4.76,4.01l-4.87,0.05l-0.39,0.33l-0.9,4.75l0.4,0.47l0.95,-0.01l0.21,8.65l-94.99,1.75Z", "name": "GREATER GRAND CROSSING"}, "34": {"path": "M642.27,450.39l1.54,-0.89l1.12,-1.24l6.01,-9.9l4.09,-2.66l2.87,-2.51l1.53,-1.79l0.67,-1.81l9.97,-0.14l0.35,12.34l0.4,0.37l1.15,-0.01l0.37,18.2l-1.31,0.02l-0.4,0.41l0.87,37.81l0.4,0.38l0.81,-0.0l0.17,8.08l-0.36,0.98l0.26,9.06l-10.24,0.17l-4.3,-3.92l-0.3,-5.07l-0.46,-0.49l-0.34,-17.42l0.06,-0.61l1.03,-0.02l0.4,-0.41l-0.06,-3.33l-0.03,-1.4l-0.4,-0.39l-0.68,0.01l-0.17,-18.51l-0.41,-0.39l-3.45,0.06l-0.13,-6.26l-0.32,-0.38l-2.53,-0.5l-4.17,0.18l-0.5,-1.65l0.16,-0.73l-1.08,-1.52l0.97,-0.01l0.39,-0.38l-0.06,-0.44l-1.36,-1.91l-0.53,-0.11l-1.82,0.92l-1.19,-1.84l1.02,-0.34Z", "name": "ARMOUR SQUARE"}, "24": {"path": "M504.77,293.64l10.7,-0.15l0.4,-0.41l-0.24,-9.32l9.6,-0.22l0.56,0.26l12.83,-0.14l0.46,0.24l0.31,-0.25l16.42,-0.25l1.48,1.15l0.64,-0.33l-0.05,-2.29l9.78,-0.23l0.02,1.01l0.4,0.39l21.88,-0.29l3.18,-0.7l5.14,-2.73l1.34,0.27l3.28,-1.64l0.79,-0.07l4.96,3.64l1.2,1.5l0.72,1.64l1.85,6.84l-0.1,0.3l-4.18,1.67l-0.84,2.29l0.39,0.5l3.22,-0.04l-0.42,1.39l-1.16,8.79l0.33,1.46l1.44,2.41l2.2,2.54l1.27,3.76l1.3,1.1l1.89,0.74l5.61,1.32l2.16,1.51l3.16,2.86l1.42,0.64l8.35,1.02l0.87,1.01l0.39,1.43l0.4,6.64l1.25,1.68l2.34,1.7l1.85,2.08l1.94,3.62l2.53,3.48l-10.14,0.07l-0.4,0.41l0.02,0.77l-6.22,0.03l-0.02,-0.86l-0.41,-0.39l-84.41,1.08l-0.45,0.59l-3.64,0.61l-6.28,-0.05l-0.15,-9.25l-0.27,-1.45l-10.59,-5.08l-0.07,-3.19l-0.4,-0.39l-11.51,0.15l-0.04,-1.45l0.75,-0.29l-0.15,-7.31l-0.4,-0.4l-9.83,0.11l-0.68,-27.54Z", "name": "WEST TOWN"}, "25": {"path": "M290.08,259.39l5.85,2.07l25.4,11.33l8.48,3.39l2.62,0.72l3.4,0.29l43.85,-0.6l11.57,1.53l7.25,1.77l0.28,-0.22l1.5,0.06l29.4,4.03l-0.16,13.22l0.53,20.49l-0.37,0.38l-0.0,2.02l0.49,3.01l0.2,5.53l-0.3,1.69l1.22,11.22l-0.32,0.35l1.16,37.75l0.41,0.39l1.12,-0.01l0.12,3.8l0.13,4.86l-1.11,0.03l-0.39,0.41l0.67,18.51l-73.55,1.29l-3.16,-113.25l-0.41,-0.39l-64.83,1.06l-1.03,-36.75Z", "name": "AUSTIN"}, "26": {"path": "M432.09,351.48l27.58,-0.48l6.51,0.45l0.4,-0.5l7.13,-0.05l0.67,31.01l0.6,4.18l0.41,14.53l-10.17,0.15l-0.03,-1.07l-0.4,-0.39l-15.38,0.22l-0.15,-4.6l-0.57,-0.5l-15.14,5.05l-0.36,-10.18l1.1,-0.03l0.39,-0.41l-0.14,-5.27l-0.13,-4.19l-0.39,-0.39l-1.13,-0.0l-0.81,-27.52Z", "name": "WEST GARFIELD PARK"}, "27": {"path": "M474.52,350.85l36.25,-0.62l0.37,0.36l15.58,-0.3l3.18,0.33l11.76,-0.07l-2.08,0.98l-1.53,1.59l-0.89,2.24l0.13,4.15l-1.1,0.05l-0.38,0.42l0.26,8.57l0.4,0.36l1.03,-0.01l0.74,25.31l-0.25,0.43l0.08,4.12l-30.63,0.41l-0.06,-2.0l-0.39,-0.38l-0.53,-0.02l-30.36,0.48l-0.39,-12.4l-0.53,-2.99l-0.67,-31.01Z", "name": "EAST GARFIELD PARK"}, "20": {"path": "M428.67,218.94l14.37,-0.24l16.16,37.43l0.37,0.24l1.63,-0.02l0.05,2.65l0.46,1.31l-0.78,0.01l-0.37,0.56l0.79,1.89l0.17,7.44l0.4,0.39l3.5,-0.05l1.69,3.92l-0.41,0.47l0.35,4.67l0.41,0.39l1.71,-0.02l1.41,3.74l-31.2,0.43l-8.92,-1.02l-1.8,-64.18Z", "name": "HERMOSA"}, "21": {"path": "M443.91,218.68l16.78,-0.27l0.4,-0.41l-0.46,-18.49l66.73,-0.83l1.97,9.9l3.64,6.68l1.9,1.98l2.74,1.83l0.88,1.34l1.4,3.47l0.65,0.64l0.66,0.33l2.97,0.4l0.93,0.72l0.19,9.6l-93.59,1.14l-7.79,-18.03Z", "name": "AVONDALE"}, "48": {"path": "M746.57,743.14l63.35,-1.06l42.56,36.54l-41.79,0.5l-0.08,-2.97l-0.46,-0.38l-6.35,0.85l-40.38,0.79l-2.94,-7.75l-9.04,-18.23l-4.88,-8.28Z", "name": "CALUMET HEIGHTS"}, "49": {"path": "M662.47,745.29l0.65,-0.39l-0.14,-5.55l2.05,4.32l-0.23,0.07l-0.03,1.38l3.39,3.31l4.54,5.14l7.61,9.69l14.05,-0.26l0.39,-0.41l-0.01,-0.57l3.44,1.13l6.32,2.87l0.25,2.58l5.81,3.48l2.09,0.05l2.18,1.21l0.3,0.22l0.23,1.38l5.73,3.29l4.64,1.69l0.01,1.01l0.4,0.4l2.33,0.0l-17.74,94.02l-65.7,0.92l-1.46,-55.76l20.58,-0.32l0.39,-0.41l-1.32,-59.27l-0.79,-15.24Z", "name": "ROSELAND"}, "46": {"path": "M856.04,697.11l-0.29,0.82l1.35,3.75l0.65,1.24l0.9,0.82l5.86,0.32l18.1,8.45l2.31,1.36l1.91,16.04l0.33,0.82l-1.38,0.4l-19.8,0.27l-0.39,0.41l0.05,1.34l0.4,0.39l21.23,-0.28l1.83,17.4l-0.5,1.59l-21.87,10.88l-2.23,1.36l-2.11,1.8l-1.18,1.28l-0.79,1.53l-1.62,6.63l-0.37,2.7l-4.9,0.09l-85.49,-73.5l71.05,-1.08l8.05,-5.75l1.76,-0.95l2.73,1.61l3.44,-1.44l1.17,-1.02l-0.22,0.74Z", "name": "SOUTH CHICAGO"}, "23": {"path": "M430.46,318.24l0.38,-0.4l-0.52,-20.9l0.16,-12.98l5.08,0.74l4.5,0.24l33.27,-0.53l9.92,0.09l0.24,0.23l20.83,-0.3l0.59,-0.29l9.58,-0.11l0.35,-0.27l0.23,8.93l-10.61,0.15l-0.42,0.38l0.64,28.37l0.41,0.39l9.81,-0.11l0.14,6.27l-0.75,0.29l0.06,2.5l0.4,0.39l11.51,-0.15l0.06,3.02l0.23,0.37l10.58,5.07l0.21,10.1l-7.4,0.1l-3.21,-0.33l-15.21,0.3l-0.38,-0.37l-44.92,0.68l-0.43,0.54l-1.85,0.01l-0.41,-0.41l-3.85,-0.05l-27.61,0.49l-0.29,-8.72l0.33,-0.37l-1.26,-11.53l0.31,-1.55l-0.69,-10.28Z", "name": "HUMBOLDT PARK"}, "44": {"path": "M650.84,711.05l0.14,-4.0l90.44,-1.7l-0.29,1.52l0.59,0.55l-1.56,9.32l0.4,0.48l0.72,-0.01l-0.62,6.3l-0.6,0.42l0.05,6.15l0.82,3.39l4.36,8.9l-10.29,0.18l-0.39,0.35l-1.6,8.98l-1.52,0.21l-0.39,0.33l-2.71,14.19l0.66,0.47l-0.83,4.26l0.54,0.47l-0.96,5.08l-1.57,-0.39l-0.51,0.37l0.01,2.23l-4.26,-1.57l-5.48,-3.14l-0.11,-1.19l-0.6,-0.51l-2.39,-1.3l-1.98,-0.02l-5.53,-3.32l-0.26,-2.59l-3.09,-1.59l-6.14,-2.35l-1.45,-0.38l-0.5,0.4l0.02,0.69l-13.42,0.25l-7.45,-9.61l-4.34,-4.97l-3.27,-3.17l0.34,-1.33l-2.22,-4.6l-0.92,-3.31l-0.21,-10.13l-0.34,-0.39l-3.86,-1.69l-0.53,0.19l-1.0,1.45l-5.24,0.19l0.18,-13.69l-0.83,-0.37Z", "name": "CHATHAM"}, "45": {"path": "M740.88,724.3l0.54,-0.37l0.72,-7.06l-0.4,-0.47l-0.71,0.01l1.54,-9.2l-0.59,-0.55l0.25,-1.32l3.39,-0.04l0.39,-0.41l-0.23,-9.45l-0.4,-0.39l-0.85,0.01l0.75,-3.95l5.44,-0.06l15.41,13.28l0.39,0.65l2.07,1.48l40.42,34.82l-62.84,1.05l-4.82,-10.11l-0.48,-2.63l0.0,-5.31Z", "name": "AVALON PARK"}, "28": {"path": "M538.05,356.48l-0.08,-0.9l0.55,-1.68l1.71,-1.84l3.88,-1.48l4.35,-0.61l0.39,-0.53l83.68,-1.13l0.02,0.86l0.4,0.39l7.02,-0.04l0.4,-0.41l-0.02,-0.77l10.06,-0.09l1.24,4.75l0.87,1.21l1.55,1.15l-1.3,10.13l-0.12,4.95l0.36,3.12l1.51,6.56l0.83,1.78l1.64,2.11l0.47,1.31l2.14,12.22l0.83,8.25l0.38,19.04l-1.24,2.99l-0.1,0.97l-7.45,0.14l-0.16,-5.71l-0.41,-0.39l-76.31,1.23l-3.84,0.33l-5.47,0.98l-13.52,1.13l-1.71,0.39l-0.04,-1.97l-0.41,-0.39l-4.72,0.07l0.05,-9.26l-5.31,-8.77l0.31,-0.51l-0.98,-1.85l-0.42,-2.11l-0.79,-33.6l-0.41,-0.39l-1.05,0.02l-0.19,-7.77l1.08,-0.05l0.38,-0.41l-0.05,-3.41Z", "name": "NEAR WEST SIDE"}, "43": {"path": "M746.13,686.14l1.79,-9.24l2.39,-0.02l0.4,-0.41l0.03,-9.06l1.83,-0.01l0.4,-0.41l-0.24,-10.07l-0.77,-0.62l1.34,-7.73l53.38,-0.71l1.01,-0.02l0.73,-0.46l0.07,0.55l1.44,1.47l3.45,2.12l0.88,0.12l0.76,4.22l2.1,3.71l1.81,1.0l2.32,0.64l0.9,-0.36l0.94,-1.23l0.22,5.14l-0.3,0.46l-1.13,0.28l-0.9,0.83l-0.31,1.2l0.26,1.21l0.92,1.29l1.03,0.45l-0.26,0.9l0.45,0.63l1.25,1.1l0.5,0.09l0.85,-0.51l1.48,1.81l0.15,1.06l3.37,2.63l1.27,0.69l1.46,-0.46l0.8,1.54l0.9,0.98l6.47,3.25l5.31,2.11l3.88,-0.15l3.19,-1.57l2.55,-2.07l0.92,0.17l2.37,2.37l-0.1,1.06l2.12,2.37l1.16,0.15l0.9,0.98l-6.56,4.6l-2.54,2.43l-3.26,1.37l-2.78,-1.6l-2.09,1.13l-7.68,5.59l-72.03,1.08l-20.81,-18.07Z", "name": "SOUTH SHORE"}, "40": {"path": "M673.93,580.24l0.04,-5.88l47.65,-0.9l0.79,41.65l-20.65,0.45l-0.39,0.41l0.29,13.76l-11.38,0.49l-8.91,-0.03l-0.07,-7.77l-0.41,-0.39l-5.74,0.12l-0.94,-41.62l-0.28,-0.27Z", "name": "WASHINGTON PARK"}, "41": {"path": "M759.48,614.47l-36.28,0.63l-0.79,-41.67l48.46,-0.71l4.65,0.25l1.4,-0.5l0.94,0.15l-0.13,4.3l0.4,3.01l0.96,2.83l-0.13,0.61l1.34,1.56l2.51,2.05l1.93,0.45l2.1,-0.5l1.08,0.17l1.09,0.78l0.18,0.79l-0.51,1.71l-1.32,0.83l-3.19,0.27l-1.61,0.74l-1.44,1.24l-0.8,1.81l-0.12,2.75l-0.66,1.41l2.78,5.48l3.89,3.51l-2.07,0.22l-0.57,0.6l0.41,0.6l0.63,0.12l-0.12,2.43l0.31,2.06l-9.5,0.21l-5.86,0.51l-1.21,-0.03l-0.85,-0.99l-1.33,-0.41l-1.22,-0.02l-0.39,0.66l-4.97,0.05Z", "name": "HYDE PARK"}, "1": {"path": "M553.15,9.64l24.52,0.25l0.37,-0.25l-0.09,-0.44l-6.72,-6.57l-1.37,-2.23l24.43,0.22l0.1,0.8l1.15,1.41l0.11,1.05l1.44,1.1l0.33,1.79l-0.42,0.75l0.38,1.85l-0.33,0.97l0.65,1.06l0.86,0.65l-0.27,0.77l0.57,1.23l0.17,2.23l0.62,0.59l0.6,2.74l2.02,4.68l-0.1,1.09l1.35,2.63l-0.02,0.77l1.7,1.88l-0.07,0.45l0.34,0.45l1.97,1.94l0.48,1.04l5.09,5.87l2.51,2.08l-0.64,0.57l-3.2,0.07l-0.38,0.32l0.03,2.49l0.91,2.55l-0.71,0.4l-0.01,0.75l0.94,3.78l0.97,1.35l0.9,2.32l-0.03,1.12l0.79,2.79l1.99,3.2l-4.32,-0.16l-42.85,0.7l-10.91,-28.54l-4.76,-16.23l-1.07,-10.34Z", "name": "ROGERS PARK"}, "35": {"path": "M671.44,461.17l25.83,-0.47l2.6,0.21l0.66,1.13l0.69,0.3l13.97,-0.45l1.3,4.6l1.62,2.79l0.17,2.66l1.09,2.01l0.51,2.2l1.7,1.6l0.62,1.13l0.13,3.31l0.52,2.35l1.22,2.06l1.54,1.7l-1.03,1.39l0.4,1.73l1.22,1.68l2.25,0.65l0.58,0.49l0.58,0.89l-0.05,2.06l-16.7,0.41l-0.39,0.32l-4.25,18.61l-34.64,0.53l-0.26,-9.04l0.36,-0.94l-0.16,-8.51l-0.41,-0.42l-0.83,0.01l-0.85,-37.0Z", "name": "DOUGLAS"}, "3": {"path": "M575.29,122.31l49.71,-0.92l5.11,-1.14l0.28,-0.44l3.22,-1.72l1.0,0.57l0.52,1.05l0.25,9.09l0.45,2.3l2.29,4.83l2.29,3.27l2.05,2.25l-0.53,0.48l0.04,0.53l0.99,0.81l0.95,-0.4l4.15,3.24l6.72,2.36l5.09,1.3l4.56,0.47l2.05,0.73l0.48,2.41l1.26,1.39l0.13,1.33l-1.28,1.28l-5.48,2.48l-4.51,4.36l-2.28,0.8l-2.66,-0.08l-3.0,-0.71l-1.23,-0.67l-0.24,-0.94l0.34,-0.59l0.62,-0.2l2.13,1.31l1.53,0.32l2.24,-0.35l1.43,-0.56l2.19,-1.55l1.51,-2.09l0.17,-1.25l-0.79,-1.26l-1.25,-0.49l-1.68,-0.0l-9.55,1.4l-1.51,0.73l-0.87,1.22l-0.18,1.47l0.26,0.79l1.38,1.85l-0.47,4.7l1.46,8.83l-5.94,0.36l-39.25,0.71l-4.68,-9.05l-3.18,-9.48l-0.39,-0.3l-16.96,0.27l-0.91,-37.05Z", "name": "UPTOWN"}, "2": {"path": "M496.88,67.66l-0.04,-0.57l2.21,-0.05l0.39,-0.4l-0.05,-18.52l0.99,-37.58l40.77,-1.02l11.18,0.12l1.1,10.52l5.16,17.37l10.65,27.77l0.38,0.26l3.56,-0.08l0.34,17.98l-31.68,0.67l-0.39,0.41l0.47,18.63l-37.05,0.22l-1.9,-7.32l0.11,-1.22l-0.44,-0.31l-0.4,-1.14l-0.72,-3.81l-2.95,-11.18l-1.06,-5.4l-0.64,-5.36Z", "name": "WEST RIDGE"}, "5": {"path": "M527.54,194.92l-0.8,-5.77l2.31,-5.01l2.46,-3.93l0.41,-2.44l0.39,-6.25l-0.23,-0.38l0.07,-1.85l-0.78,-8.46l44.06,-0.64l1.31,74.96l-19.73,0.28l-1.52,-3.02l-4.46,-1.04l-0.92,-0.55l-3.62,-4.76l-1.79,-1.41l-3.6,-0.71l-0.51,-0.47l-1.35,-3.38l-0.97,-1.51l-2.88,-1.97l-1.73,-1.8l-3.55,-6.48l-2.56,-13.41Z", "name": "NORTH CENTER"}, "4": {"path": "M505.06,104.19l37.28,-0.22l0.4,-0.41l-0.47,-18.64l31.58,-0.67l0.22,9.83l-0.21,0.77l1.55,64.53l-44.24,0.64l-2.2,-5.26l-8.2,-9.93l-3.29,-3.48l-1.0,-1.75l-2.19,-2.67l-1.39,-2.57l-0.73,-1.78l-1.56,-6.01l-2.44,-10.73l-3.1,-11.65Z", "name": "LINCOLN SQUARE"}, "7": {"path": "M557.28,236.22l96.18,-1.81l7.26,0.33l1.47,-0.54l0.29,0.27l2.17,-0.06l0.8,0.85l1.17,0.0l0.4,0.41l1.09,0.08l0.97,1.11l-0.63,2.95l0.14,3.62l0.96,2.98l-0.27,0.58l1.78,2.4l0.37,1.11l-0.04,0.73l-0.49,0.1l-0.92,1.2l0.41,4.62l0.43,1.57l1.79,1.77l-0.77,0.42l-0.16,0.43l1.99,3.53l-0.61,0.23l-0.12,0.77l0.8,1.62l1.16,1.36l-0.86,0.42l-0.04,0.64l2.21,2.87l-1.06,0.63l-0.03,0.58l2.49,2.9l-0.06,0.6l1.12,1.35l1.12,0.66l3.85,3.52l3.16,1.53l2.46,0.2l1.84,-0.65l-0.16,0.67l-1.2,0.6l-3.69,0.87l-3.29,2.83l-3.8,0.47l-0.22,-0.5l-0.69,-0.07l-0.93,0.93l-63.96,1.21l-2.11,-7.57l-1.82,-2.51l-1.34,-1.2l-4.19,-2.71l-1.09,0.16l-3.15,1.59l-1.27,-0.34l-1.76,-5.45l-2.43,-2.95l-1.59,-2.83l-1.92,-2.25l-1.75,-3.09l-2.73,-0.99l-3.91,-0.05l-2.13,-0.96l-4.45,-4.04l-0.37,-0.95l-0.2,-3.42l-0.9,-1.5l-3.59,-2.56l-2.77,-1.13l-4.05,-1.12l-2.24,-5.44l-3.01,-2.14l-1.12,-1.46Z", "name": "LINCOLN PARK"}, "6": {"path": "M576.22,160.16l16.64,-0.27l3.15,9.3l4.82,9.33l0.36,0.21l39.51,-0.72l6.11,-0.37l5.09,13.69l2.37,5.21l2.84,4.4l2.73,3.54l3.96,4.32l0.18,0.71l-0.47,0.18l-0.48,-0.24l-0.55,-1.62l-0.96,-0.78l-1.02,-0.07l-1.46,0.75l-0.84,-0.28l-1.86,-4.43l0.2,-0.65l-1.33,-2.09l-3.34,-1.36l-2.55,-0.31l-0.0,-0.7l-0.52,-0.14l-1.27,-1.81l-2.01,-1.4l-0.95,0.06l-0.24,0.83l1.15,1.58l3.37,3.4l-0.25,1.19l-0.68,0.59l0.03,1.06l1.92,3.28l1.1,0.67l0.77,1.03l0.41,1.02l0.38,3.24l2.71,3.87l1.22,0.37l1.54,-0.04l0.56,0.36l0.79,-0.36l1.2,-1.29l0.64,-3.28l0.51,-0.55l0.31,0.14l0.22,2.98l0.67,2.73l1.26,3.4l1.37,1.87l-0.17,0.43l0.68,3.41l1.48,2.82l2.12,2.88l-0.13,0.79l-0.58,0.44l-0.95,0.03l-0.5,1.01l-1.73,-0.02l-0.88,-0.89l-2.1,0.06l-0.42,-0.27l-1.69,0.54l-7.18,-0.33l-75.92,1.52l-1.31,-74.97Z", "name": "LAKE VIEW"}, "9": {"path": "M257.24,67.61l0.32,-36.87l2.91,-0.07l0.39,-0.4l-0.0,-1.42l-0.79,-0.39l0.06,-9.05l-0.41,-0.4l-2.1,0.06l0.04,-7.26l30.92,-0.82l-0.58,60.43l-6.8,-0.06l-0.05,-4.05l-0.4,-0.38l-23.51,0.69Z", "name": "EDISON PARK"}, "8": {"path": "M608.25,295.54l0.4,-1.32l4.18,-1.67l0.36,-0.65l63.9,-1.21l1.23,-0.69l0.48,0.37l3.32,-0.45l-0.07,1.44l-0.91,1.68l0.15,3.83l0.51,3.14l2.61,8.73l-0.18,0.48l2.46,2.25l1.39,2.07l0.32,1.02l4.3,1.29l1.24,1.05l9.33,16.63l2.66,4.03l0.5,0.14l2.24,-0.7l1.13,0.22l0.39,-0.2l3.92,-7.36l16.29,-0.34l0.1,7.26l-15.89,0.3l-0.39,0.41l0.06,2.4l0.41,0.39l19.52,-0.56l0.41,0.51l4.0,-0.08l0.03,1.34l-4.02,0.08l-0.42,0.91l-0.28,-0.22l-18.71,0.36l-0.39,0.41l0.1,4.0l-3.07,0.01l-0.35,-3.05l-0.41,-0.37l-4.59,0.12l-0.41,0.37l-1.03,0.09l-0.4,-0.38l-4.43,0.31l-2.57,-0.24l-0.83,0.26l-3.97,-0.09l-0.4,0.4l-0.0,0.75l0.41,0.4l15.38,-0.14l0.05,0.99l-2.84,2.93l-8.56,0.25l-10.15,-1.36l-5.18,-0.18l-2.16,1.1l-3.42,2.53l-3.5,0.23l-9.72,-0.3l-4.04,0.22l-0.94,0.36l-3.35,2.63l-1.38,-1.01l-0.7,-0.99l-1.45,-5.35l-2.7,-3.73l-1.83,-3.46l-2.09,-2.39l-2.37,-1.73l-1.05,-1.44l-0.32,-6.42l-0.43,-1.57l-1.02,-1.27l-8.68,-1.21l-1.21,-0.52l-3.14,-2.85l-2.28,-1.59l-5.71,-1.37l-1.82,-0.71l-0.99,-0.83l-1.21,-3.64l-2.25,-2.62l-1.39,-2.34l-0.26,-1.2l1.15,-8.57l0.56,-1.81l-0.39,-0.52l-3.24,0.04Z", "name": "NEAR NORTH SIDE"}, "18": {"path": "M289.32,233.73l-0.36,-12.47l33.77,-0.62l1.1,49.58l0.15,1.29l0.71,1.62l-10.59,-4.36l-0.24,-0.37l-17.63,-7.69l-6.18,-2.18l-0.74,-24.82Z", "name": "MONTCLARE"}, "39": {"path": "M752.45,535.38l0.41,1.48l1.22,0.99l1.13,2.3l1.06,1.17l-0.27,0.49l1.11,2.28l1.96,1.81l0.88,1.47l1.09,0.67l1.84,0.38l0.7,1.14l0.21,3.28l3.87,7.58l1.42,1.59l4.91,3.91l2.14,2.1l2.44,0.94l0.12,0.57l-0.89,1.57l0.19,0.72l-1.28,-0.14l-1.2,0.48l-4.66,-0.24l-48.47,0.71l-0.63,-36.95l20.85,-0.29l1.1,0.28l2.45,-0.32l6.3,0.03Z", "name": "KENWOOD"}, "77": {"path": "M573.99,65.46l38.77,-0.61l4.77,0.16l0.48,4.61l-0.57,0.17l-0.24,0.62l0.39,1.52l-0.25,2.12l0.49,0.4l0.24,0.94l-0.36,0.31l-0.21,1.24l0.9,1.32l-0.64,5.13l0.37,0.45l0.09,1.25l-0.25,0.48l0.24,0.5l-0.25,3.88l1.78,2.48l4.23,3.73l1.38,1.12l2.12,0.71l-1.23,3.3l-0.53,3.05l0.12,5.78l0.85,2.27l-0.43,0.73l4.41,4.68l1.55,0.1l-2.68,1.69l-4.61,0.99l-49.67,0.92l-0.63,-37.68l-0.31,-0.3l-0.34,-18.08Z", "name": "EDGEWATER"}, "76": {"path": "M0.81,77.14l2.04,-0.09l0.39,-0.34l0.89,-4.25l1.65,-4.75l2.03,-4.01l2.45,-3.72l3.76,-4.17l6.61,-5.78l0.08,4.1l0.42,0.39l10.18,-0.13l0.03,2.75l0.41,0.4l10.67,-0.22l0.56,-0.58l-0.15,-9.35l14.18,-0.31l0.39,-0.4l0.0,-9.05l0.19,-0.01l0.01,5.98l0.6,0.39l0.01,2.65l0.41,0.4l3.67,-0.02l7.92,-0.4l0.38,-0.4l-0.01,-9.16l3.72,-0.16l6.94,2.22l0.28,0.54l8.69,2.91l4.88,2.49l0.42,0.52l0.8,-0.35l0.66,0.3l1.77,-0.07l-0.11,7.36l0.42,0.41l1.73,-0.08l0.38,-0.42l-0.05,-1.15l0.74,-0.43l-0.06,-1.15l2.47,-0.1l3.61,1.74l-0.66,0.81l-0.01,1.05l-18.64,1.02l-6.57,-4.27l0.0,-0.85l-0.42,-0.4l-3.58,0.14l-0.38,0.4l-0.0,1.07l0.33,0.4l1.97,0.35l7.66,5.0l4.36,-0.1l-0.03,2.21l0.33,0.4l17.43,2.97l9.29,2.33l0.29,0.5l0.62,0.18l-0.02,7.74l0.42,0.4l8.75,-0.33l7.36,24.54l0.4,0.28l1.86,-0.07l0.0,6.88l4.46,15.81l-4.14,0.12l-0.39,0.4l-0.02,7.07l0.41,0.4l6.0,-0.18l0.31,0.23l0.87,-0.03l0.13,-0.24l8.05,-0.22l0.4,0.66l1.68,-0.05l0.33,-0.35l0.41,0.57l11.87,-0.35l0.38,-0.43l0.67,-3.67l0.91,-1.62l2.74,-2.55l3.27,-4.34l4.69,-4.64l0.94,-1.77l0.24,-3.03l-1.85,-5.58l-0.01,-0.78l0.71,-3.78l1.58,-4.17l-0.28,-2.81l3.56,0.85l9.35,0.82l27.68,4.9l-0.1,29.44l-10.27,0.21l-0.39,0.4l-0.0,0.79l0.01,1.57l0.42,0.38l7.41,-0.14l-0.04,6.07l0.41,0.4l2.41,-0.05l-0.0,2.16l-9.89,0.21l0.03,-4.35l-0.41,-0.4l-10.66,0.23l-0.46,0.39l-0.08,14.23l0.41,0.41l20.98,-0.48l-0.02,32.17l0.56,24.13l0.41,0.39l2.43,-0.07l0.7,17.93l-31.5,0.75l-2.87,-2.64l-1.67,-2.03l-2.71,-8.8l0.12,-1.99l-0.54,-1.08l-1.21,-5.38l-0.59,-1.93l-1.9,-3.75l0.09,-3.57l1.79,-4.8l15.84,-0.49l0.39,-0.42l0.02,-10.49l-0.41,-0.4l-24.66,0.62l-0.75,-1.2l-0.52,-2.3l0.1,-1.4l2.44,-4.22l3.84,-8.47l0.69,-5.35l1.38,-4.94l0.2,-2.25l-0.54,-3.85l1.51,-4.08l0.42,-2.41l-0.32,-1.27l-0.76,-1.19l-1.9,-1.39l-1.61,-0.17l-1.27,0.34l-1.94,0.83l-2.96,1.84l-1.62,-0.42l-1.39,-0.82l-1.92,-1.71l-1.53,-1.98l-40.83,1.21l-0.39,0.4l-0.04,40.3l-1.42,0.18l-4.9,-0.51l-13.72,-2.04l-5.77,0.11l-0.39,0.4l0.05,18.45l-23.14,0.45l-18.39,-4.54l-0.5,0.39l0.03,1.89l-4.5,-1.32l-0.23,-7.66l-1.03,-4.87l-2.98,-1.5l-7.17,-1.53l-0.34,-0.42l-4.69,-0.6l-0.46,0.39l0.0,11.19l-8.25,-2.34l-0.01,-10.49l-0.32,-0.39l-12.07,-2.34l-0.36,-12.29l-0.4,-0.39l-5.04,-0.0l0.01,-4.86l-0.66,-0.31l-4.42,3.68l-2.77,2.83l-2.88,-0.01l0.01,-36.87l-0.46,-38.2ZM10.86,39.07l2.91,-0.05l0.17,6.72l-0.19,0.97l-1.26,-0.2l-0.46,0.4l0.15,7.84l0.3,0.29l-1.24,1.3l-0.38,-17.28ZM0.59,64.29l-0.18,-6.09l9.52,-0.23l-3.63,5.2l-5.72,1.12Z", "name": "OHARE"}, "75": {"path": "M528.75,860.07l7.87,-0.28l0.39,-0.41l-0.02,-0.74l1.97,-0.21l0.39,-0.41l-0.48,-16.95l24.21,-0.19l80.2,-1.51l0.97,36.92l-41.68,0.67l-0.39,0.42l0.52,18.43l-11.33,0.27l-0.37,0.28l-1.07,3.46l-1.58,-0.39l0.86,-2.78l-0.39,-0.52l-38.91,0.54l0.88,-2.69l0.32,-2.52l-0.34,-13.21l-0.41,-0.39l-21.03,0.36l-0.61,-18.15Z", "name": "MORGAN PARK"}, "38": {"path": "M672.76,517.89l48.01,-0.73l0.6,1.09l-0.74,0.57l0.97,53.85l-47.64,0.9l-1.19,-55.68Z", "name": "GRAND BOULEVARD"}, "73": {"path": "M589.18,760.18l5.34,-0.07l0.39,-0.41l-0.11,-4.39l10.28,-0.5l29.57,-0.63l-2.92,9.4l0.32,0.51l1.38,0.01l2.18,-2.15l2.51,-0.8l0.67,-0.0l0.15,2.64l0.59,0.25l22.95,-0.34l1.28,55.71l-20.58,0.32l-0.4,0.41l0.48,18.44l-33.95,0.5l5.73,-18.49l-0.39,-0.52l-0.47,0.01l-7.71,-18.46l-2.36,-4.39l-4.34,-11.36l-0.28,-2.64l-0.63,-0.52l-8.24,-18.43l0.09,-1.2l-1.52,-2.9Z", "name": "WASHINGTON HEIGHTS"}, "72": {"path": "M527.57,819.92l10.28,-0.13l0.39,-0.42l-0.46,-16.07l20.98,-0.24l0.41,-0.41l-1.44,-56.25l19.79,-0.33l10.74,14.12l1.66,3.17l-0.09,1.19l8.38,18.73l0.5,0.24l0.27,2.59l4.37,11.43l2.37,4.4l7.81,18.7l0.57,0.24l-5.64,18.21l-45.4,0.99l-34.85,0.33l-0.65,-20.5Z", "name": "BEVERLY"}, "71": {"path": "M566.33,689.05l18.36,-0.33l0.39,0.39l9.14,-0.11l24.81,-0.56l0.44,-0.29l20.31,-0.27l0.1,4.84l0.35,0.39l8.92,-0.14l0.3,13.71l0.7,0.38l-0.11,4.39l0.41,0.41l0.44,-0.01l-0.21,13.65l0.41,0.42l5.88,-0.22l1.29,-1.55l3.42,1.54l0.29,10.13l-0.22,0.91l0.42,2.36l0.15,5.38l-0.5,0.12l-0.18,0.38l0.85,17.93l-22.82,0.26l-0.06,-2.41l-0.4,-0.39l-1.09,0.0l-2.89,0.9l-2.28,2.16l-0.3,-0.04l2.96,-9.43l-0.37,-0.56l-30.17,0.63l-10.68,0.51l-0.39,0.41l0.11,4.38l-5.44,0.08l-10.19,-13.42l0.31,-0.32l-0.01,-0.63l-0.6,-0.4l-4.95,-7.08l-3.37,-3.64l-1.44,-3.59l-0.71,-2.72l-0.41,-3.4l-0.97,-35.14Z", "name": "AUBURN GRESHAM"}, "70": {"path": "M430.12,701.56l0.01,-1.19l4.75,0.45l5.18,-0.11l0.34,0.31l8.88,-0.7l0.73,0.38l21.83,-0.54l0.39,-0.41l-0.53,-20.4l7.83,4.51l4.67,2.24l0.25,-0.14l5.4,3.09l1.91,0.7l2.81,0.51l19.3,-0.01l51.66,-1.17l0.67,26.05l0.27,0.46l0.01,7.72l0.49,4.6l0.9,3.25l1.3,3.14l3.49,3.81l5.04,7.17l-146.58,2.92l0.26,-5.66l-1.22,-40.97Z", "name": "ASHBURN"}, "15": {"path": "M331.68,155.29l0.49,-0.77l0.04,-12.27l40.85,-0.67l0.05,1.96l0.41,0.39l5.81,-0.04l7.4,0.53l1.43,-0.73l27.69,-0.39l0.19,8.74l0.72,2.39l-0.85,-0.13l-0.44,0.29l0.23,0.48l1.62,0.6l0.18,0.54l-0.35,0.95l1.42,1.85l3.48,2.38l-3.11,0.04l-0.36,0.56l8.12,18.86l0.48,0.24l0.52,27.6l-1.13,0.01l-0.4,0.41l0.14,4.77l0.4,0.39l1.21,-0.01l0.09,3.9l-72.99,1.14l-1.2,-37.53l-0.42,-0.39l-20.77,0.36l-0.93,-26.43Z", "name": "PORTAGE PARK"}, "32": {"path": "M661.08,403.9l-0.93,-8.19l-1.49,-8.75l-0.94,-3.25l-1.7,-2.23l-0.75,-1.63l-1.72,-8.49l0.2,-8.19l1.04,-7.43l0.7,-1.06l3.35,-2.23l3.92,-0.21l9.74,0.3l3.66,-0.24l5.49,-3.61l5.03,0.18l10.19,1.36l8.76,-0.25l3.49,-3.59l-0.3,-1.75l-2.0,-0.32l3.94,-0.1l0.14,2.0l0.29,1.12l0.39,0.3l7.31,-0.16l0.04,1.42l0.4,0.39l4.97,-0.1l0.01,0.55l-5.38,0.02l-4.41,0.56l-0.35,0.4l-0.2,2.25l-0.08,7.44l-5.58,0.05l-0.4,0.4l-0.31,1.64l-1.18,1.14l-1.67,0.71l-3.36,0.41l-0.82,0.5l-0.63,0.87l-0.18,1.6l0.4,0.39l1.22,-0.01l0.04,1.41l-1.19,0.02l-0.43,0.41l0.64,12.68l-0.06,17.56l1.53,1.23l-6.22,0.73l-1.05,1.23l-33.58,0.52ZM704.37,344.47l-1.81,0.03l-0.3,0.0l2.04,-0.1l0.07,0.07ZM698.93,344.56l-0.55,0.01l-1.07,0.02l0.12,-0.13l1.5,0.1Z", "name": "LOOP"}, "58": {"path": "M490.09,568.3l-1.27,-56.65l20.92,-7.89l0.26,-0.39l-0.05,-1.43l8.87,-2.85l7.94,-3.21l0.77,0.42l18.75,-7.04l0.2,20.61l0.41,0.38l0.69,-0.03l1.46,3.14l-0.92,0.68l-0.06,0.58l1.08,1.31l0.11,3.36l0.4,0.48l3.58,-0.12l0.77,37.01l-0.76,-0.02l-0.43,0.41l0.12,9.63l-20.25,0.35l-0.41,-0.59l-21.13,0.42l-0.39,0.7l-14.76,0.17l-5.89,0.57Z", "name": "BRIGHTON PARK"}, "11": {"path": "M330.08,104.67l20.58,-0.02l0.41,-0.39l0.47,-28.4l-0.2,-0.4l-10.72,-5.87l0.03,-2.57l5.37,-0.04l0.31,1.06l1.19,0.75l1.52,-0.18l1.1,-0.9l2.15,0.38l1.23,-0.68l1.76,1.51l4.44,-1.03l2.54,0.34l1.53,0.6l0.8,0.57l0.45,0.94l0.1,1.28l-0.4,1.27l-1.73,2.01l-3.0,1.36l-0.37,1.47l0.58,2.02l1.3,1.73l4.26,1.0l-0.02,0.36l-1.26,0.61l-0.61,1.87l0.7,1.79l0.77,0.81l1.79,0.81l5.34,0.7l0.54,-0.18l0.54,-0.79l-0.05,-1.33l1.38,-0.92l2.38,-0.28l3.42,1.99l0.7,-0.28l0.46,-0.66l1.63,-0.32l0.82,-1.09l0.58,0.26l0.97,3.13l-0.24,0.52l-1.18,0.76l-0.06,1.06l1.29,0.98l2.42,-0.55l3.21,7.12l2.03,5.46l0.44,0.25l5.95,13.72l-0.3,0.15l-0.01,0.54l0.3,12.33l0.41,0.39l4.77,-0.07l0.36,11.06l-17.14,0.23l-1.43,0.72l-7.29,-0.52l-5.46,0.03l-0.05,-1.96l-0.41,-0.39l-43.97,0.72l0.6,-36.82Z", "name": "JEFFERSON PARK"}, "10": {"path": "M224.31,123.55l0.1,-27.89l27.34,4.69l0.88,0.13l0.46,-0.35l2.52,-22.34l1.55,-9.38l23.23,-0.7l0.02,4.02l0.4,0.41l7.61,0.07l0.4,-0.4l0.12,-13.75l2.8,-0.12l0.35,-0.44l0.02,-1.15l8.33,-0.11l-0.01,1.33l0.4,0.4l2.75,0.01l0.33,1.96l0.4,0.33l5.06,-0.05l0.41,-0.41l0.02,-2.02l12.29,-0.1l1.0,1.35l0.51,0.11l0.74,-0.42l4.53,2.38l1.2,0.04l1.53,-0.53l2.76,0.33l0.98,-0.21l1.55,-0.97l2.42,0.43l0.75,-0.25l0.44,-0.8l0.42,-2.29l1.61,-3.77l0.62,-0.53l0.97,0.19l0.62,0.71l0.68,2.29l0.63,6.13l-0.08,4.29l-5.69,0.03l-0.41,0.39l-0.04,3.22l0.21,0.35l10.69,5.85l-0.44,27.82l-20.58,0.03l-0.4,0.39l-0.59,35.99l-31.02,0.3l-0.39,0.39l-0.01,0.84l-9.21,0.06l0.2,-15.35l-0.01,-0.53l-0.4,-0.39l-21.32,0.65l-0.39,0.39l-0.07,9.05l-3.6,0.11l0.04,-6.37l-0.4,-0.4l-0.61,-0.0l0.07,-2.15l-0.41,-0.45l-15.88,0.49l-0.39,0.4l-0.02,1.92l-9.99,0.21l0.01,-1.91l-0.41,-0.4l-3.26,0.07l0.01,-2.18l-0.47,-0.4l0.01,-0.77l-0.41,-0.4l-6.08,0.12ZM227.9,109.21l-0.69,0.01l-0.39,0.4l-0.01,0.88l0.41,0.4l13.09,-0.26l0.36,0.66l0.12,4.15l-1.94,0.03l-1.12,1.36l0.03,1.87l0.94,0.58l-8.3,0.17l-0.39,0.4l-0.01,2.52l0.41,0.4l19.89,-0.41l0.4,-0.36l1.96,-18.23l-0.41,-0.44l-3.85,0.07l-0.39,0.41l0.05,2.47l-5.39,0.1l-0.06,-4.36l-0.61,-0.58l-10.69,0.34l-1.23,0.72l-0.02,1.96l-2.79,-0.03l-0.4,0.4l-0.04,3.96l0.4,0.4l0.68,-0.0Z", "name": "NORWOOD PARK"}, "13": {"path": "M415.5,102.67l1.34,0.73l0.61,1.65l0.39,0.32l18.8,-0.21l0.38,-0.41l-0.21,-9.13l8.97,-5.03l2.84,-4.58l2.28,-0.22l11.65,-18.4l33.48,-0.29l0.36,3.9l1.4,7.61l3.67,14.98l0.66,1.63l2.56,11.12l2.69,9.7l2.68,11.56l-0.81,-0.5l-5.26,-1.55l-1.92,-0.39l-1.57,0.07l-3.52,1.11l-1.54,0.82l-2.76,3.9l-3.57,1.19l-3.47,0.12l-8.64,-4.89l-6.36,-1.77l-1.85,-1.36l-2.0,-2.04l-3.52,-0.84l-1.62,0.4l-1.42,1.09l-1.83,0.03l-0.39,0.41l0.21,9.07l-7.21,0.09l-0.13,-4.29l-0.5,-0.41l-2.15,0.02l-0.11,-4.36l-0.41,-0.39l-31.68,0.36l-0.55,-20.82Z", "name": "NORTH PARK"}, "12": {"path": "M325.05,58.33l17.24,-9.81l0.04,-0.66l-2.31,-2.33l-11.71,-16.45l19.7,0.03l0.4,-0.38l0.34,-8.58l3.81,0.13l-0.17,8.45l0.4,0.4l7.74,0.06l6.38,14.73l0.51,0.21l0.55,-0.27l1.68,3.72l7.29,3.98l0.54,-0.12l0.7,-1.06l-0.13,-0.58l-4.29,-2.4l0.16,-8.76l11.74,0.12l-0.41,11.87l-0.2,2.27l-0.67,2.47l0.19,0.46l20.27,11.39l56.74,0.19l-11.25,17.78l-2.29,0.23l-2.75,4.54l-9.08,5.08l-0.21,0.36l0.21,8.97l-18.05,0.2l-0.28,-0.96l-0.8,-1.08l-1.38,-0.65l-0.6,-0.03l-0.42,0.41l0.86,35.68l0.75,3.69l-0.25,0.86l-10.02,0.15l-0.41,-11.45l-0.56,-0.4l-4.58,0.07l-0.29,-11.69l0.44,-0.01l0.12,-0.47l-6.38,-14.72l-0.42,-0.24l-1.93,-5.2l-3.42,-7.6l-0.53,-0.2l-0.95,0.58l-1.34,0.17l-0.67,-0.51l0.06,-0.39l1.19,-0.74l0.3,-0.83l-1.19,-3.8l-1.49,-0.4l-0.94,1.18l-1.58,0.28l-0.77,0.83l-1.22,-1.05l-2.12,-0.96l-2.67,0.32l-1.82,1.23l-0.03,1.49l-0.41,0.48l-5.11,-0.69l-1.42,-0.63l-0.61,-0.61l-0.59,-1.32l0.48,-1.49l1.31,-0.66l0.01,-1.13l-0.84,-0.58l-3.62,-0.65l-1.08,-1.45l-0.51,-2.08l0.26,-0.59l2.82,-1.2l1.62,-1.71l0.85,-2.53l-0.52,-2.06l-1.6,-1.27l-3.34,-0.86l-2.01,0.13l-3.09,0.89l-1.32,-1.33l-0.71,-0.19l-1.06,0.67l-2.21,-0.38l-1.41,0.99l-1.4,0.02l-0.53,-1.38l0.06,-4.67l-0.64,-6.21l-0.68,-2.38l-1.12,-1.24l-1.56,-0.2l-1.14,1.08l-1.54,3.72l-0.71,2.8l-2.32,-0.45l-0.92,0.2l-1.41,0.94l-3.26,-0.26l-2.23,0.56l-4.24,-2.07Z", "name": "FOREST GLEN"}, "59": {"path": "M547.24,509.44l-0.17,-20.48l14.1,-5.3l2.84,-0.66l18.78,-0.56l0.41,0.54l1.12,-0.02l3.97,-0.47l3.85,-1.43l4.49,-2.9l1.6,2.86l0.79,2.56l1.31,1.82l2.61,3.33l2.05,1.32l6.23,8.1l-0.32,7.54l0.93,10.89l1.56,1.47l-63.36,0.89l-0.15,-3.22l-0.97,-1.31l0.86,-0.62l0.12,-0.53l-1.57,-3.48l-0.44,-0.4l-0.65,0.05Z", "name": "MCKINLEY PARK"}, "22": {"path": "M452.04,237.51l93.69,-1.15l0.39,-0.43l-0.21,-9.32l3.65,4.8l2.17,1.02l3.3,0.65l1.27,3.2l1.5,1.94l2.89,1.99l2.4,5.64l7.01,2.37l3.33,2.35l0.74,1.19l0.18,3.33l0.5,1.29l4.61,4.21l2.46,1.12l3.93,0.06l2.37,0.82l1.6,2.92l1.91,2.23l1.61,2.85l2.54,3.14l1.64,5.22l-4.67,2.42l-2.19,0.57l-22.19,0.36l-0.01,-1.02l-0.41,-0.4l-10.58,0.25l-0.39,0.41l0.04,1.85l-1.18,-0.81l-29.9,0.39l-0.25,-0.25l-1.21,0.0l-19.92,0.6l-0.43,0.28l-20.54,0.3l-0.24,-0.23l-4.11,-0.08l-7.92,0.08l-1.62,-4.28l-0.38,-0.26l-1.59,0.03l-0.24,-3.93l0.53,-0.59l-2.08,-4.68l-0.37,-0.24l-3.37,0.05l-0.17,-7.11l-0.62,-1.57l0.79,-0.02l0.35,-0.55l-0.61,-1.61l-0.07,-3.01l-0.41,-0.39l-1.75,0.03l-7.79,-18.05Z", "name": "LOGAN SQUARE"}, "14": {"path": "M416.82,140.37l-0.47,-2.46l-0.26,-13.62l31.26,-0.35l0.11,4.36l0.4,0.39l2.28,-0.03l0.1,4.33l0.41,0.39l8.0,-0.1l0.39,-0.41l-0.21,-9.07l1.6,-0.02l1.4,-1.07l1.01,-0.37l1.06,-0.01l2.58,0.72l1.81,1.91l2.0,1.47l2.02,0.78l2.63,0.36l1.75,0.65l3.53,1.85l4.05,2.63l1.28,0.47l3.7,-0.13l3.32,-1.05l1.24,-0.86l1.88,-3.13l0.57,-0.42l3.8,-1.42l2.52,-0.12l6.43,1.83l1.43,0.93l1.06,4.26l1.95,4.04l2.4,2.99l1.03,1.79l3.28,3.47l7.58,9.06l1.21,1.88l1.35,3.74l-74.88,0.89l-17.4,-14.37l-0.1,-3.95l-0.41,-0.39l-20.58,0.26l0.22,-1.13l-0.31,-0.97Z", "name": "ALBANY PARK"}, "16": {"path": "M416.66,143.28l20.45,-0.26l0.25,4.04l17.91,14.67l75.29,-0.9l0.93,10.83l-0.6,7.78l-2.6,4.4l-2.35,5.2l0.03,1.51l1.32,7.33l-67.08,0.84l-0.39,0.41l0.46,18.49l-31.49,0.52l-0.09,-4.31l-0.41,-0.39l-1.2,0.02l-0.12,-3.97l1.15,-0.02l0.38,-0.41l-0.54,-28.39l-0.64,-0.39l-7.77,-18.06l3.82,-0.05l0.38,-0.29l-0.17,-0.45l-4.4,-2.95l-1.2,-1.59l0.28,-0.99l-1.37,-3.39l-0.23,-9.23Z", "name": "IRVING PARK"}, "19": {"path": "M323.53,220.63l104.34,-1.68l1.79,64.01l-29.28,-4.01l-1.96,0.11l-7.04,-1.71l-9.9,-1.4l-5.63,-0.25l-40.82,0.7l-4.13,-0.68l-4.33,-1.81l-1.58,-1.84l-0.36,-1.87l-1.1,-49.57Z", "name": "BELMONT CRAGIN"}, "54": {"path": "M692.45,965.01l2.15,-5.47l1.67,-6.31l1.67,-9.2l-0.39,-0.48l-0.75,-0.0l12.84,-67.39l16.72,-0.2l3.32,-1.36l2.22,-0.41l-0.53,2.49l-0.09,2.34l0.47,19.3l0.61,3.67l1.19,3.21l1.74,2.98l17.3,24.07l1.06,0.71l23.95,33.42l1.96,3.51l1.63,4.52l1.03,6.43l-83.2,0.29l-0.03,-14.34l-0.36,-0.4l-6.17,-1.41Z", "name": "RIVERDALE"}, "31": {"path": "M545.72,425.39l4.04,-0.06l0.04,2.07l0.49,0.38l2.11,-0.49l13.51,-1.13l5.47,-0.98l3.79,-0.32l75.89,-1.22l0.16,5.71l0.41,0.39l7.64,-0.15l-0.54,1.41l-1.4,1.62l-2.79,2.44l-3.37,1.97l-0.82,0.79l-6.07,9.98l-0.93,1.05l-1.37,0.8l-1.4,0.46l-6.06,0.76l-6.12,2.11l-2.99,0.24l-13.98,2.94l-2.32,-0.25l-4.61,3.88l-0.35,-0.11l-6.14,3.73l-0.73,0.95l-0.93,3.39l-1.45,3.15l0.92,2.61l0.01,2.83l0.44,1.1l-4.49,2.91l-2.36,1.0l-3.46,0.74l-2.37,0.1l-0.41,-0.54l-19.76,0.64l-2.53,0.62l-13.87,5.21l-0.22,-25.4l-0.5,-9.28l-0.6,-28.05Z", "name": "LOWER WEST SIDE"}, "56": {"path": "M300.04,584.36l9.27,-3.52l96.12,-2.04l0.37,-0.41l-0.73,-33.74l17.96,-6.78l0.26,-0.38l-0.23,-15.34l12.43,-0.21l2.2,93.4l-136.79,2.83l-0.68,-19.06l-0.18,-14.75Z", "name": "GARFIELD RIDGE"}, "51": {"path": "M762.47,940.26l-2.61,-0.03l-5.77,-7.97l-0.92,-0.53l-17.24,-23.99l-1.56,-2.62l-1.26,-3.31l-0.56,-3.12l-0.49,-21.1l0.61,-3.25l2.04,-4.95l9.79,-21.62l3.88,-6.85l4.97,-6.66l8.41,-9.15l1.7,-4.83l0.27,-1.91l3.31,-0.27l1.46,-3.28l0.57,-2.13l0.44,-3.8l-0.72,-24.43l-3.74,-4.31l-1.23,-1.94l40.01,-0.79l5.99,-0.79l0.08,2.91l0.41,0.39l48.2,-0.71l0.93,4.94l-0.6,2.81l-0.39,4.64l0.27,2.06l1.34,1.94l0.5,1.95l-0.06,2.56l-0.7,2.86l-0.3,6.61l-2.01,3.83l-3.48,3.24l-1.4,2.39l-0.04,4.45l0.53,2.56l0.01,1.8l-0.08,1.37l-0.5,1.48l0.37,0.56l3.84,0.01l-2.2,3.79l-0.54,2.55l0.63,69.85l-0.38,2.45l-2.41,7.24l-0.52,3.47l3.65,22.38l-11.6,-7.95l-3.41,-2.67l-2.49,-3.58l-7.35,-13.19l-0.65,-0.16l-0.62,0.65l-1.09,0.4l-1.63,1.6l-1.46,-0.1l-1.06,1.21l-0.06,24.13l-47.83,-0.1l-3.72,-0.69l-5.86,-2.02l-3.67,-0.3Z", "name": "SOUTH DEERING"}, "36": {"path": "M720.94,516.39l-11.9,0.14l4.14,-18.12l16.51,-0.42l0.64,1.5l1.66,1.9l3.61,5.32l4.77,4.08l0.53,1.64l-0.39,3.75l0.86,4.17l0.97,1.78l1.69,2.14l0.84,2.03l1.25,1.47l1.08,0.33l2.5,2.32l1.81,1.15l0.84,1.55l0.05,1.45l-30.67,0.3l-0.32,-15.79l0.66,-0.26l0.2,-0.56l-0.94,-1.71l-0.4,-0.16Z", "name": "OAKLAND"}, "53": {"path": "M603.01,877.76l105.81,-1.58l-12.84,67.37l-2.11,0.1l0.45,-2.23l-0.27,-1.88l-0.91,-1.19l-4.52,-2.48l-0.02,-0.5l-0.42,-0.39l-2.7,0.04l-2.6,0.4l-4.04,1.54l-3.33,2.88l-2.95,3.23l-3.51,2.72l-0.53,1.05l-0.76,-0.38l-1.77,0.27l-1.61,0.9l-5.45,0.47l-6.46,-0.95l-5.03,-0.16l-0.42,-0.83l-0.79,0.01l-0.38,0.84l-9.28,-0.03l-1.98,0.3l-0.47,-13.43l12.14,-0.22l0.39,-0.41l-0.53,-18.89l-0.41,-0.39l-41.76,0.53l-0.94,-36.73Z", "name": "WEST PULLMAN"}, "52": {"path": "M853.52,830.48l0.32,-1.17l0.07,-3.29l-0.53,-2.57l0.04,-4.33l1.18,-1.91l3.54,-3.31l2.16,-4.19l0.3,-6.64l0.69,-2.85l0.07,-2.71l-0.59,-2.3l-1.26,-1.75l-0.26,-1.96l0.39,-4.43l0.61,-2.95l-0.58,-2.22l-0.46,-3.79l1.98,-8.8l0.71,-1.35l3.11,-2.88l2.13,-1.3l21.14,-10.51l-0.22,1.08l1.01,0.93l8.84,1.64l0.5,0.62l0.48,23.62l-0.96,0.71l-1.04,1.8l-0.47,4.03l0.6,2.39l1.03,1.45l0.77,0.25l0.08,0.77l-2.57,0.18l-1.06,0.45l-0.74,-0.18l-0.47,0.77l-1.06,0.31l-2.04,1.64l-1.04,1.35l-0.18,1.0l0.34,1.6l1.87,3.8l2.52,2.66l-3.95,3.62l0.03,0.61l2.65,2.03l2.09,0.6l-0.06,0.61l1.7,1.79l0.44,0.18l0.48,-0.28l0.23,0.54l0.68,0.45l-0.21,42.59l-12.0,-0.06l-0.4,0.4l-0.07,18.4l-20.66,0.16l-0.4,0.4l0.03,4.08l-9.94,0.06l-0.27,-45.05l0.46,-1.88l2.52,-4.28l-0.33,-0.62l-3.95,-0.01ZM896.34,812.19l0.14,-0.16l-0.0,-0.42l0.24,0.34l-0.38,0.24Z", "name": "EAST SIDE"}, "33": {"path": "M660.27,428.78l1.34,-3.91l-0.46,-20.18l33.63,-0.49l1.19,-1.28l10.39,-1.32l1.39,0.28l0.89,0.96l0.08,1.16l-0.7,1.19l0.0,0.56l0.41,0.4l10.69,-0.27l1.09,-0.78l1.04,-0.22l1.28,0.4l0.74,0.97l-0.05,1.15l-0.83,1.14l0.01,1.42l-0.85,-0.65l-1.02,0.34l-1.02,1.11l-0.42,1.4l0.13,1.24l1.26,3.89l0.63,0.65l1.36,0.35l0.11,4.38l-1.66,0.09l-0.73,0.64l1.02,16.76l-4.74,0.4l-1.07,-0.47l-0.56,-0.89l1.26,-7.71l-1.29,-2.27l0.09,-2.52l-0.34,-0.78l-0.93,-0.85l0.24,-1.5l-0.67,-1.67l0.7,-0.83l-0.02,-1.16l0.98,-1.99l0.65,-3.49l-0.63,-2.87l-1.22,-2.35l-0.05,-1.16l-0.4,-0.38l-4.74,0.06l-0.39,0.41l0.03,1.18l-1.18,2.8l-0.51,2.37l0.3,2.47l1.6,3.06l0.02,1.14l0.56,0.72l-0.23,0.49l0.26,0.27l-0.37,0.73l0.58,2.73l0.0,0.7l-0.85,0.26l-0.56,0.82l-0.47,1.58l0.01,1.8l0.97,2.68l3.14,2.88l0.95,4.6l3.17,5.38l0.09,1.24l-0.75,4.62l0.12,1.64l0.4,1.27l1.69,2.72l0.24,0.98l-0.18,1.05l-1.02,1.63l-0.56,-0.83l-14.25,0.45l-1.05,-1.37l-2.57,-0.27l-24.49,0.43l-0.38,-18.6l-0.4,-0.39l-1.17,0.01l-0.33,-12.32l-0.41,-0.39l-10.19,0.15Z", "name": "NEAR SOUTH SIDE"}, "55": {"path": "M760.45,941.02l5.52,0.32l6.57,2.22l3.15,0.5l48.28,0.08l0.38,-0.4l0.06,-24.34l0.64,-0.63l1.35,0.13l1.84,-1.72l0.76,-0.22l0.63,-0.59l7.15,12.84l2.69,3.82l3.45,2.68l11.99,8.23l0.55,0.1l0.42,-0.46l-3.76,-23.01l0.49,-3.22l2.41,-7.21l0.41,-2.6l-0.34,-24.44l10.33,-0.06l0.4,-0.4l-0.02,-4.08l20.61,-0.15l0.4,-0.36l0.15,-1.51l-0.04,-16.93l11.63,0.06l-1.17,121.58l-114.36,-0.39l-0.97,-6.3l-2.12,-5.69l-2.23,-3.74l-17.25,-24.12Z", "name": "HEGEWISCH"}, "74": {"path": "M433.94,862.1l6.85,-0.41l34.7,-0.67l0.46,-0.41l-1.74,-56.29l17.68,-0.32l0.12,4.33l0.41,0.39l2.26,-0.04l0.37,13.64l0.41,0.39l21.2,-0.27l0.39,-0.4l-0.09,-1.95l9.82,-0.14l0.67,20.85l0.28,0.31l0.53,27.42l-7.62,0.37l-0.39,0.4l0.14,4.23l-2.23,0.03l-0.4,0.41l0.14,4.45l-10.12,0.19l-0.39,0.42l0.29,8.94l-9.66,0.07l-2.69,0.27l-0.06,-1.76l-0.41,-0.39l-0.02,-0.67l0.38,-0.41l-0.2,-5.85l-0.41,-0.38l-60.06,1.19l-0.6,-17.94Z", "name": "MOUNT GREENWOOD"}, "37": {"path": "M657.65,550.19l0.38,-2.97l-0.03,-10.33l0.6,-0.01l0.39,-0.44l-0.37,-4.66l-0.32,-0.3l-0.17,-13.37l13.83,-0.22l0.82,31.79l0.1,19.81l0.8,23.0l-14.13,0.3l-0.98,-37.0l0.3,-0.41l-0.19,-4.82l-0.41,-0.39l-0.62,0.01Z", "name": "FULLER PARK"}, "47": {"path": "M726.5,777.39l1.53,0.35l0.47,-0.32l1.13,-5.97l-0.54,-0.47l0.83,-4.27l-0.65,-0.46l2.56,-13.39l1.59,-0.26l0.32,-0.32l1.62,-8.95l10.32,-0.18l4.6,7.82l2.52,4.96l6.96,14.06l2.42,6.69l1.67,3.16l-37.3,0.71l-0.06,-3.15Z", "name": "BURNSIDE"}, "17": {"path": "M224.15,165.79l7.97,-0.19l1.78,9.34l0.06,9.14l0.41,0.41l53.05,-1.56l0.4,-0.41l-0.05,-2.61l27.57,-15.77l15.97,-0.55l0.52,18.56l0.41,0.39l20.78,-0.35l1.19,37.12l-65.65,1.17l-0.39,0.41l0.25,8.64l-20.33,0.5l-0.27,-9.02l-0.42,-0.38l-39.12,0.94l-0.72,-18.1l-0.53,-0.64l-2.32,0.07l-0.49,-18.08l-0.07,-19.03Z", "name": "DUNNING"}, "57": {"path": "M436.54,530.64l51.47,-19.43l0.8,41.46l0.46,10.56l-0.55,2.32l-0.86,1.55l-1.52,1.7l-9.04,4.23l-7.58,4.02l-0.79,0.02l-0.39,0.41l0.01,0.58l-10.24,4.85l-0.23,0.37l0.08,3.43l-15.49,0.19l-0.4,0.41l0.08,3.01l-4.47,0.37l-1.34,-60.05Z", "name": "ARCHER HEIGHTS"}, "50": {"path": "M725.1,803.29l4.21,-21.97l35.11,-0.7l3.58,4.0l0.72,24.27l-0.43,3.65l-0.9,3.03l-0.93,1.93l-3.13,0.07l-0.39,0.41l-0.23,2.06l-1.54,4.53l-8.42,9.17l-5.05,6.76l-3.91,6.92l-11.6,25.94l-2.3,0.34l-3.62,1.47l-14.71,0.18l13.54,-72.06Z", "name": "PULLMAN"}}, "height": 981.6642077705183, "projection": {"type": "mill", "centralMeridian": 0.0}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/jvectormap/jquery-jvectormap-world-mill-en.js b/plugins/jvectormap/jquery-jvectormap-world-mill-en.js new file mode 100644 index 0000000..06d3719 --- /dev/null +++ b/plugins/jvectormap/jquery-jvectormap-world-mill-en.js @@ -0,0 +1 @@ +jQuery.fn.vectorMap('addMap', 'world_mill_en',{"insets": [{"width": 900, "top": 0, "height": 440.70631074413296, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.02513512, "x": 20026572.39474939}], "left": 0}], "paths": {"BD": {"path": "M651.84,230.21l-0.6,-2.0l-1.36,-1.71l-2.31,-0.11l-0.41,0.48l0.2,0.94l-0.53,0.99l-0.72,-0.36l-0.68,0.35l-1.2,-0.36l-0.37,-2.0l-0.81,-1.86l0.39,-1.46l-0.22,-0.47l-1.14,-0.53l0.29,-0.5l1.48,-0.94l0.03,-0.65l-1.55,-1.22l0.55,-1.14l1.61,0.94l1.04,0.15l0.18,1.54l0.34,0.35l5.64,0.63l-0.84,1.64l-1.22,0.34l-0.77,1.51l0.07,0.47l1.37,1.37l0.67,-0.19l0.42,-1.39l1.21,3.84l-0.03,1.21l-0.33,-0.15l-0.4,0.28Z", "name": "Bangladesh"}, "BE": {"path": "M429.29,144.05l1.91,0.24l2.1,-0.63l2.63,1.99l-0.21,1.66l-0.69,0.4l-0.18,1.2l-1.66,-1.13l-1.39,0.15l-2.73,-2.7l-1.17,-0.18l-0.16,-0.52l1.54,-0.5Z", "name": "Belgium"}, "BF": {"path": "M421.42,247.64l-0.11,0.95l0.34,1.16l1.4,1.71l0.07,1.1l0.32,0.37l2.55,0.51l-0.04,1.28l-0.38,0.53l-1.07,0.21l-0.72,1.18l-0.63,0.21l-3.22,-0.25l-0.94,0.39l-5.4,-0.05l-0.39,0.38l0.16,2.73l-1.23,-0.43l-1.17,0.1l-0.89,0.57l-2.27,-1.72l-0.13,-1.11l0.61,-0.96l0.02,-0.93l1.87,-1.98l0.44,-1.81l0.43,-0.39l1.28,0.26l1.05,-0.52l0.47,-0.73l1.84,-1.09l0.55,-0.83l2.2,-1.0l1.15,-0.3l0.72,0.45l1.13,-0.01Z", "name": "Burkina Faso"}, "BG": {"path": "M491.65,168.18l-0.86,0.88l-0.91,2.17l0.48,1.34l-1.6,-0.24l-2.55,0.95l-0.28,1.51l-1.8,0.22l-2.0,-1.0l-1.92,0.79l-1.42,-0.07l-0.15,-1.63l-1.05,-0.97l0.0,-0.8l1.2,-1.57l0.01,-0.56l-1.14,-1.23l-0.05,-0.94l0.88,0.97l0.88,-0.2l1.91,0.47l3.68,0.16l1.42,-0.81l2.72,-0.66l2.55,1.24Z", "name": "Bulgaria"}, "BA": {"path": "M463.49,163.65l2.1,0.5l1.72,-0.03l1.52,0.68l-0.36,0.78l0.08,0.45l1.04,1.02l-0.25,0.98l-1.81,1.15l-0.38,1.38l-1.67,-0.87l-0.89,-1.2l-2.11,-1.83l-1.63,-2.22l0.23,-0.57l0.48,0.38l0.55,-0.06l0.43,-0.51l0.94,-0.06Z", "name": "Bosnia and Herz."}, "BN": {"path": "M707.48,273.58l0.68,-0.65l1.41,-0.91l-0.15,1.63l-0.81,-0.05l-0.61,0.58l-0.53,-0.6Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.69l-3.09,-0.23l-0.38,0.23l-0.7,1.52l-1.31,-1.53l-3.28,-0.64l-2.37,2.4l-1.31,0.26l-0.88,-3.26l-1.3,-2.86l0.74,-2.37l-0.13,-0.43l-1.2,-1.01l-0.37,-1.89l-1.08,-1.55l1.45,-2.56l-0.96,-2.33l0.47,-1.06l-0.34,-0.73l0.91,-1.32l0.16,-3.84l0.5,-1.18l-1.81,-3.41l2.46,0.07l0.8,-0.85l3.4,-1.91l2.66,-0.35l-0.19,1.38l0.3,1.07l-0.05,1.97l2.72,2.27l2.88,0.49l0.89,0.86l1.79,0.58l0.98,0.7l1.71,0.05l1.17,0.61l0.6,2.7l-0.7,0.54l0.96,2.99l0.37,0.28l4.3,0.1l-0.25,1.2l0.27,1.02l1.43,0.9l0.5,1.35l-0.41,1.86l-0.65,1.08l0.12,1.35l-2.69,-1.65l-2.4,-0.03l-4.36,0.76l-1.49,2.5l-0.11,1.52l-0.75,2.37Z", "name": "Bolivia"}, "JP": {"path": "M781.12,166.87l1.81,0.68l1.62,-0.97l0.39,2.42l-3.35,0.75l-2.23,2.88l-3.63,-1.9l-0.56,0.2l-1.26,3.05l-2.16,0.03l-0.29,-2.51l1.08,-2.03l2.45,-0.16l0.37,-0.33l1.25,-5.94l2.47,2.71l2.03,1.12ZM773.56,187.34l-0.91,2.22l0.37,1.52l-1.14,1.75l-3.02,1.26l-4.58,0.27l-3.34,3.01l-1.25,-0.8l-0.09,-1.9l-0.46,-0.38l-4.35,0.62l-3.0,1.32l-2.85,0.05l-0.37,0.27l0.13,0.44l2.32,1.89l-1.54,4.34l-1.26,0.9l-0.79,-0.7l0.56,-2.27l-0.21,-0.45l-1.47,-0.75l-0.74,-1.4l2.12,-0.84l1.26,-1.7l2.45,-1.42l1.83,-1.91l4.78,-0.81l2.6,0.57l0.44,-0.21l2.39,-4.66l1.29,1.06l0.5,0.01l5.1,-4.02l1.69,-3.73l-0.38,-3.4l0.9,-1.61l2.14,-0.44l1.23,3.72l-0.07,2.18l-2.23,2.84l-0.04,3.16ZM757.78,196.26l0.19,0.56l-1.01,1.21l-1.16,-0.68l-1.28,0.65l-0.69,1.45l-1.02,-0.5l0.01,-0.93l1.14,-1.38l1.57,0.14l0.85,-0.98l1.4,0.46Z", "name": "Japan"}, "BI": {"path": "M495.45,295.49l-1.08,-2.99l1.14,-0.11l0.64,-1.19l0.76,0.09l0.65,1.83l-2.1,2.36Z", "name": "Burundi"}, "BJ": {"path": "M429.57,255.75l-0.05,0.8l0.5,1.34l-0.42,0.86l0.17,0.79l-1.81,2.12l-0.57,1.76l-0.08,5.42l-1.41,0.2l-0.48,-1.36l0.11,-5.71l-0.52,-0.7l-0.2,-1.35l-1.48,-1.48l0.21,-0.9l0.89,-0.43l0.42,-0.92l1.27,-0.36l1.22,-1.34l0.61,-0.0l1.62,1.24Z", "name": "Benin"}, "BT": {"path": "M650.32,213.86l0.84,0.71l-0.12,1.1l-3.76,-0.11l-1.57,0.4l-1.93,-0.87l1.48,-1.96l1.13,-0.57l1.63,0.57l1.33,0.08l0.99,0.65Z", "name": "Bhutan"}, "JM": {"path": "M228.38,239.28l-0.8,0.4l-2.26,-1.06l0.84,-0.23l2.14,0.3l1.17,0.56l-1.08,0.03Z", "name": "Jamaica"}, "BW": {"path": "M483.92,330.07l2.27,4.01l2.83,2.86l0.96,0.31l0.78,2.43l2.13,0.61l1.02,0.76l-3.0,1.64l-2.32,2.02l-1.54,2.69l-1.52,0.45l-0.64,1.94l-1.34,0.52l-1.85,-0.12l-1.21,-0.74l-1.35,-0.3l-1.22,0.62l-0.75,1.37l-2.31,1.9l-1.4,0.21l-0.35,-0.59l0.16,-1.75l-1.48,-2.54l-0.62,-0.43l-0.0,-7.1l2.08,-0.08l0.39,-0.4l0.07,-8.9l5.19,-0.93l0.8,0.89l0.51,0.07l1.5,-0.95l2.21,-0.49Z", "name": "Botswana"}, "BR": {"path": "M259.98,275.05l3.24,0.7l0.65,-0.53l4.55,-1.32l1.08,-1.06l-0.02,-0.63l0.55,-0.05l0.28,0.28l-0.26,0.87l0.22,0.48l0.73,0.32l0.4,0.81l-0.62,0.86l-0.4,2.13l0.82,2.56l1.69,1.43l1.43,0.2l3.17,-1.68l3.18,0.3l0.65,-0.75l-0.27,-0.92l1.9,-0.09l2.39,0.99l1.06,-0.61l0.84,0.78l1.2,-0.18l1.18,-1.06l0.84,-1.94l1.36,-2.11l0.37,-0.05l1.89,5.45l1.33,0.59l0.05,1.28l-1.77,1.94l0.02,0.56l1.02,0.87l4.07,0.36l0.08,2.16l0.66,0.29l1.74,-1.5l6.97,2.32l1.02,1.22l-0.35,1.18l0.49,0.5l2.81,-0.74l4.77,1.3l3.75,-0.08l3.57,2.0l3.29,2.86l1.93,0.72l2.12,0.12l0.71,0.62l1.21,4.51l-0.95,3.98l-4.72,5.06l-1.64,2.92l-1.72,2.05l-0.8,0.3l-0.72,2.03l0.18,4.75l-0.94,5.53l-0.81,1.13l-0.43,3.36l-2.55,3.5l-0.4,2.51l-1.86,1.04l-0.67,1.53l-2.54,0.01l-3.94,1.01l-1.83,1.2l-2.87,0.82l-3.03,2.19l-2.2,2.83l-0.36,2.0l0.4,1.58l-0.44,2.6l-0.51,1.2l-1.77,1.54l-2.75,4.78l-3.83,3.42l-1.24,2.74l-1.18,1.15l-0.36,-0.83l0.95,-1.14l0.01,-0.5l-1.52,-1.97l-4.56,-3.32l-1.03,-0.0l-2.38,-2.02l-0.81,-0.0l5.34,-5.45l3.77,-2.58l0.22,-2.46l-1.35,-1.81l-0.91,0.07l0.58,-2.33l0.01,-1.54l-1.11,-0.83l-1.75,0.3l-0.44,-3.11l-0.52,-0.95l-1.88,-0.88l-1.24,0.47l-2.17,-0.41l0.15,-3.21l-0.62,-1.34l0.66,-0.73l-0.22,-1.34l0.66,-1.13l0.44,-2.04l-0.61,-1.83l-1.4,-0.86l-0.2,-0.75l0.34,-1.39l-0.38,-0.5l-4.52,-0.1l-0.72,-2.22l0.59,-0.42l-0.03,-1.1l-0.5,-0.87l-0.32,-1.7l-1.45,-0.76l-1.63,-0.02l-1.05,-0.72l-1.6,-0.48l-1.13,-0.99l-2.69,-0.4l-2.47,-2.06l0.13,-4.35l-0.45,-0.45l-3.46,0.5l-3.44,1.94l-0.6,0.74l-2.9,-0.17l-1.47,0.42l-0.72,-0.18l0.15,-3.52l-0.63,-0.34l-1.94,1.41l-1.87,-0.06l-0.83,-1.18l-1.37,-0.26l0.21,-1.01l-1.35,-1.49l-0.88,-1.91l0.56,-0.6l-0.0,-0.81l1.29,-0.62l0.22,-0.43l-0.22,-1.19l0.61,-0.91l0.15,-0.99l2.65,-1.58l1.99,-0.47l0.42,-0.36l2.06,0.11l0.42,-0.33l1.19,-8.0l-0.41,-1.56l-1.1,-1.0l0.01,-1.33l1.91,-0.42l0.08,-0.96l-0.33,-0.43l-1.14,-0.2l-0.02,-0.83l4.47,0.05l0.82,-0.67l0.82,1.81l0.8,0.07l1.15,1.1l2.26,-0.05l0.71,-0.83l2.78,-0.96l0.48,-1.13l1.6,-0.64l0.24,-0.47l-0.48,-0.82l-1.83,-0.19l-0.36,-3.22Z", "name": "Brazil"}, "BS": {"path": "M226.4,223.87l-0.48,-1.15l-0.84,-0.75l0.36,-1.11l0.95,1.95l0.01,1.06ZM225.56,216.43l-1.87,0.29l-0.04,-0.22l0.74,-0.14l1.17,0.06Z", "name": "Bahamas"}, "BY": {"path": "M493.84,128.32l0.29,0.7l0.49,0.23l1.19,-0.38l2.09,0.72l0.19,1.26l-0.45,1.24l1.57,2.26l0.89,0.59l0.17,0.81l1.58,0.56l0.4,0.5l-0.53,0.41l-1.87,-0.11l-0.73,0.38l-0.13,0.52l1.04,2.74l-1.91,0.26l-0.89,0.99l-0.11,1.18l-2.73,-0.04l-0.53,-0.62l-0.52,-0.08l-0.75,0.46l-0.91,-0.42l-1.92,-0.07l-2.75,-0.79l-2.6,-0.28l-2.0,0.07l-1.5,0.92l-0.67,0.07l-0.08,-1.22l-0.59,-1.19l1.36,-0.88l0.01,-1.35l-0.7,-1.41l-0.07,-1.0l2.16,-0.02l2.72,-1.3l0.75,-2.04l1.91,-1.04l0.2,-0.41l-0.19,-1.25l3.8,-1.78l2.3,0.77Z", "name": "Belarus"}, "BZ": {"path": "M198.03,244.38l0.1,-4.49l0.69,-0.06l0.74,-1.3l0.34,0.28l-0.4,1.3l0.17,0.58l-0.34,2.25l-1.3,1.42Z", "name": "Belize"}, "RU": {"path": "M491.55,115.25l2.55,-1.85l-0.01,-0.65l-2.2,-1.5l7.32,-6.76l1.03,-2.11l-0.13,-0.49l-3.46,-2.52l0.86,-2.7l-2.11,-2.81l1.56,-3.67l-2.77,-4.52l2.15,-2.99l-0.08,-0.55l-3.65,-2.73l0.3,-2.54l1.81,-0.37l4.26,-1.77l2.42,-1.45l4.06,2.61l6.79,1.04l9.34,4.85l1.78,1.88l0.14,2.46l-2.55,2.02l-3.9,1.06l-11.07,-3.14l-2.06,0.53l-0.13,0.7l3.94,2.94l0.31,5.86l0.26,0.36l5.14,2.24l0.58,-0.29l0.32,-1.94l-1.35,-1.78l1.13,-1.09l6.13,2.42l2.11,-0.98l0.18,-0.56l-1.51,-2.67l5.41,-3.76l2.07,0.22l2.26,1.41l0.57,-0.16l1.46,-2.87l-0.05,-0.44l-1.92,-2.32l1.12,-2.32l-1.32,-2.27l5.87,1.16l1.04,1.75l-2.59,0.43l-0.33,0.4l0.02,2.36l2.46,1.83l3.87,-0.91l0.86,-2.8l13.69,-5.65l0.99,0.11l-1.92,2.06l0.23,0.67l3.11,0.45l2.0,-1.48l4.56,-0.12l3.64,-1.73l2.65,2.44l0.56,-0.01l2.85,-2.88l-0.01,-0.57l-2.35,-2.29l0.9,-1.01l7.14,1.3l3.41,1.36l9.05,4.97l0.51,-0.11l1.67,-2.27l-0.05,-0.53l-2.43,-2.21l-0.06,-0.78l-0.34,-0.36l-2.52,-0.36l0.64,-1.93l-1.32,-3.46l-0.06,-1.21l4.48,-4.06l1.69,-4.29l1.6,-0.81l6.23,1.18l0.44,2.21l-2.29,3.64l0.06,0.5l1.47,1.39l0.76,3.0l-0.56,6.03l2.69,2.82l-0.96,2.57l-4.86,5.95l0.23,0.64l2.86,0.61l0.42,-0.17l0.93,-1.4l2.64,-1.03l0.87,-2.24l2.09,-1.96l0.07,-0.5l-1.36,-2.28l1.09,-2.69l-0.32,-0.55l-2.47,-0.33l-0.5,-2.06l1.94,-4.38l-0.06,-0.42l-2.96,-3.4l4.12,-2.88l0.16,-0.4l-0.51,-2.93l0.54,-0.05l1.13,2.25l-0.96,4.35l0.27,0.47l2.68,0.84l0.5,-0.51l-1.02,-2.99l3.79,-1.66l5.01,-0.24l4.53,2.61l0.48,-0.06l0.07,-0.48l-2.18,-3.82l-0.23,-4.67l3.98,-0.9l5.97,0.21l5.49,-0.64l0.27,-0.65l-1.83,-2.31l2.56,-2.9l2.87,-0.17l4.8,-2.47l6.54,-0.67l1.03,-1.42l6.25,-0.45l2.32,1.11l5.53,-2.7l4.5,0.08l0.39,-0.28l0.66,-2.15l2.26,-2.12l5.69,-2.11l3.21,1.29l-2.46,0.94l-0.25,0.42l0.34,0.35l5.41,0.77l0.61,2.33l0.58,0.25l2.2,-1.22l7.13,0.07l5.51,2.47l1.79,1.72l-0.53,2.24l-9.16,4.15l-1.97,1.52l0.16,0.71l6.77,1.91l2.16,-0.78l1.13,2.74l0.67,0.11l1.01,-1.15l3.81,-0.73l7.7,0.77l0.54,1.99l0.36,0.29l10.47,0.71l0.43,-0.38l0.13,-3.23l4.87,0.78l3.95,-0.02l3.83,2.4l1.03,2.71l-1.35,1.79l0.02,0.5l3.15,3.64l4.07,1.96l0.53,-0.18l2.23,-4.47l3.95,1.93l4.16,-1.21l4.73,1.39l2.05,-1.26l3.94,0.62l0.43,-0.55l-1.68,-4.02l2.89,-1.8l22.31,3.03l2.16,2.75l6.55,3.51l10.29,-0.81l4.82,0.73l1.85,1.66l-0.29,3.08l0.25,0.41l3.08,1.26l3.56,-0.88l4.35,-0.11l4.8,0.87l4.57,-0.47l4.23,3.79l0.43,0.07l3.1,-1.4l0.16,-0.6l-1.88,-2.62l0.85,-1.52l7.71,1.21l5.22,-0.26l7.09,2.09l9.59,5.22l6.35,4.11l-0.2,2.38l1.88,1.41l0.6,-0.42l-0.48,-2.53l6.15,0.57l4.4,3.51l-1.97,1.43l-4.0,0.41l-0.36,0.39l-0.06,3.79l-0.74,0.62l-2.07,-0.11l-1.91,-1.39l-3.14,-1.11l-0.78,-1.85l-2.72,-0.68l-2.63,0.49l-1.04,-1.1l0.46,-1.31l-0.5,-0.51l-3.0,0.98l-0.22,0.58l0.99,1.7l-1.21,1.48l-3.04,1.68l-3.12,-0.28l-0.4,0.23l0.09,0.46l2.2,2.09l1.46,3.2l1.15,1.1l0.24,1.33l-0.42,0.67l-4.63,-0.77l-6.96,2.9l-2.19,0.44l-7.6,5.06l-0.84,1.45l-3.61,-2.37l-6.24,2.82l-0.94,-1.15l-0.53,-0.08l-2.28,1.52l-3.2,-0.49l-0.44,0.27l-0.78,2.37l-3.05,3.78l0.09,1.47l0.29,0.36l2.54,0.72l-0.29,4.53l-1.97,0.11l-0.35,0.26l-1.07,2.94l0.8,1.45l-3.91,1.58l-1.05,3.95l-3.48,0.77l-0.3,0.3l-0.72,3.29l-3.09,2.65l-0.7,-1.74l-2.44,-12.44l1.16,-4.71l2.04,-2.06l0.22,-1.64l3.8,-0.86l4.46,-4.61l4.28,-3.81l4.48,-3.01l2.17,-5.63l-0.42,-0.54l-3.04,0.33l-1.77,3.31l-5.86,3.86l-1.86,-4.25l-0.45,-0.23l-6.46,1.3l-6.47,6.44l-0.01,0.55l1.58,1.74l-8.24,1.17l0.15,-2.2l-0.34,-0.42l-3.89,-0.56l-3.25,1.81l-7.62,-0.62l-8.45,1.19l-17.71,15.41l0.22,0.7l3.74,0.41l1.36,2.17l2.43,0.76l1.88,-1.68l2.4,0.2l3.4,3.54l0.08,2.6l-1.95,3.42l-0.21,3.9l-1.1,5.06l-3.71,4.54l-0.87,2.21l-8.29,8.89l-3.19,1.7l-1.32,0.03l-1.45,-1.36l-0.49,-0.04l-2.27,1.5l0.41,-3.65l-0.59,-2.47l1.75,-0.89l2.91,0.53l0.42,-0.2l1.68,-3.03l0.87,-3.46l0.97,-1.18l1.32,-2.88l-0.45,-0.56l-4.14,0.95l-2.19,1.25l-3.41,-0.0l-1.06,-2.93l-2.97,-2.3l-4.28,-1.06l-1.75,-5.07l-2.66,-5.01l-2.29,-1.29l-3.75,-1.01l-3.44,0.08l-3.18,0.62l-2.24,1.77l0.05,0.66l1.18,0.69l0.02,1.43l-1.33,1.05l-2.26,3.51l-0.04,1.43l-3.16,1.84l-2.82,-1.16l-3.01,0.23l-1.35,-1.07l-1.5,-0.35l-3.9,2.31l-3.22,0.52l-2.27,0.79l-3.05,-0.51l-2.21,0.03l-1.48,-1.6l-2.6,-1.63l-2.63,-0.43l-5.46,1.01l-3.23,-1.25l-0.72,-2.57l-5.2,-1.24l-2.75,-1.36l-0.5,0.12l-2.59,3.45l0.84,2.1l-2.06,1.93l-3.41,-0.77l-2.42,-0.12l-1.83,-1.54l-2.53,-0.05l-2.42,-0.98l-3.86,1.57l-4.72,2.78l-3.3,0.75l-1.55,-1.92l-3.0,0.41l-1.11,-1.33l-1.62,-0.59l-1.31,-1.94l-1.38,-0.6l-3.7,0.79l-3.31,-1.83l-0.51,0.11l-0.99,1.29l-5.29,-8.05l-2.96,-2.48l0.65,-0.77l0.01,-0.51l-0.5,-0.11l-6.2,3.21l-1.84,0.15l0.15,-1.39l-0.26,-0.42l-3.22,-1.17l-2.46,0.7l-0.69,-3.16l-0.32,-0.31l-4.5,-0.75l-2.47,1.47l-6.19,1.27l-1.29,0.86l-9.51,1.3l-1.15,1.17l-0.03,0.53l1.47,1.9l-1.89,0.69l-0.22,0.56l0.31,0.6l-2.11,1.44l0.03,0.68l3.75,2.12l-0.39,0.98l-3.23,-0.13l-0.86,0.86l-3.09,-1.59l-3.97,0.07l-2.66,1.35l-8.32,-3.56l-4.07,0.06l-5.39,3.68l-0.39,2.0l-2.03,-1.5l-0.59,0.13l-2.0,3.59l0.57,0.93l-1.28,2.16l0.06,0.48l2.13,2.17l1.95,0.04l1.37,1.82l-0.23,1.46l0.25,0.43l0.83,0.33l-0.8,1.31l-2.49,0.62l-2.49,3.2l0.0,0.49l2.17,2.78l-0.15,2.18l2.5,3.24l-1.58,1.59l-0.7,-0.13l-1.63,-1.72l-2.29,-0.84l-0.94,-1.31l-2.34,-0.63l-1.48,0.4l-0.43,-0.47l-3.51,-1.48l-5.76,-1.01l-0.45,0.19l-2.89,-2.34l-2.9,-1.2l-1.53,-1.29l1.29,-0.43l2.08,-2.61l-0.05,-0.55l-0.89,-0.79l3.05,-1.06l0.27,-0.42l-0.07,-0.69l-0.49,-0.35l-1.73,0.39l0.04,-0.68l1.04,-0.72l2.66,-0.48l0.4,-1.32l-0.5,-1.6l0.92,-1.54l0.03,-1.17l-0.29,-0.37l-3.69,-1.06l-1.41,0.02l-1.42,-1.41l-2.19,0.38l-2.77,-1.01l-0.03,-0.59l-0.89,-1.43l-2.0,-0.32l-0.11,-0.54l0.49,-0.53l0.01,-0.53l-1.6,-1.9l-3.58,0.02l-0.88,0.73l-0.46,-0.07l-1.0,-2.79l2.22,-0.02l0.97,-0.74l0.07,-0.57l-0.9,-1.04l-1.35,-0.48l-0.11,-0.7l-0.95,-0.58l-1.38,-1.99l0.46,-0.98l-0.51,-1.96l-2.45,-0.84l-1.21,0.3l-0.46,-0.76l-2.46,-0.83l-0.72,-1.87l-0.21,-1.69l-0.99,-0.85l0.85,-1.17l-0.7,-3.21l1.66,-1.97l-0.16,-0.79ZM749.2,170.72l-0.6,0.4l-0.13,0.16l-0.01,-0.51l0.74,-0.05ZM874.85,67.94l-5.63,0.48l-0.26,-0.84l3.15,-1.89l1.94,0.01l3.19,1.16l-2.39,1.09ZM797.39,48.49l-2.0,1.36l-3.8,-0.42l-4.25,-1.8l0.35,-0.97l9.69,1.83ZM783.67,46.12l-1.63,3.09l-8.98,-0.13l-4.09,1.14l-4.54,-2.97l1.16,-3.01l3.05,-0.89l6.5,0.22l8.54,2.56ZM778.2,134.98l-0.56,-0.9l0.27,-0.12l0.29,1.01ZM778.34,135.48l0.94,3.53l-0.05,3.38l1.05,3.39l2.18,5.0l-2.89,-0.83l-0.49,0.26l-1.54,4.65l2.42,3.5l-0.04,1.13l-1.24,-1.24l-0.61,0.06l-1.09,1.61l-0.28,-1.61l0.27,-3.1l-0.28,-3.4l0.58,-2.47l0.11,-4.39l-1.46,-3.36l0.21,-4.32l2.15,-1.46l0.07,-0.34ZM771.95,56.61l1.76,-1.42l2.89,-0.42l3.28,1.71l0.14,0.6l-3.27,0.03l-4.81,-0.5ZM683.76,31.09l-13.01,1.93l4.03,-6.35l1.82,-0.56l1.73,0.34l5.99,2.98l-0.56,1.66ZM670.85,27.93l-5.08,0.64l-6.86,-1.57l-3.99,-2.05l-2.1,-4.16l-2.6,-0.87l5.72,-3.5l5.2,-1.28l4.69,2.85l5.59,5.4l-0.56,4.53ZM564.15,68.94l-0.64,0.17l-7.85,-0.57l-0.86,-2.04l-4.28,-1.17l-0.28,-1.94l2.27,-0.89l0.25,-0.39l-0.08,-2.38l4.81,-3.97l-0.15,-0.7l-1.47,-0.38l5.3,-3.81l0.15,-0.44l-0.58,-1.94l5.28,-2.51l8.21,-3.27l8.28,-0.96l4.35,-1.94l4.6,-0.64l1.36,1.61l-1.34,1.28l-16.43,4.94l-7.97,4.88l-7.74,9.63l0.66,4.14l4.16,3.27ZM548.81,18.48l-5.5,1.18l-0.58,1.02l-2.59,0.84l-2.13,-1.07l1.12,-1.42l-0.3,-0.65l-2.33,-0.07l1.68,-0.36l3.47,-0.06l0.42,1.29l0.66,0.16l1.38,-1.34l2.15,-0.88l2.94,1.01l-0.39,0.36ZM477.37,133.15l-4.08,0.05l-2.56,-0.32l0.33,-0.87l3.17,-1.03l3.24,0.96l-0.09,1.23Z", "name": "Russia"}, "RW": {"path": "M497.0,288.25l0.71,1.01l-0.11,1.09l-1.63,0.03l-1.04,1.39l-0.83,-0.11l0.51,-1.2l0.08,-1.34l0.42,-0.41l0.7,0.14l1.19,-0.61Z", "name": "Rwanda"}, "RS": {"path": "M469.4,163.99l0.42,-0.5l-0.01,-0.52l-1.15,-1.63l1.43,-0.62l1.33,0.12l1.17,1.06l0.46,1.13l1.34,0.64l0.35,1.35l1.46,0.9l0.76,-0.29l0.2,0.69l-0.48,0.78l0.22,1.12l1.05,1.22l-0.77,0.8l-0.37,1.52l-1.21,0.08l0.24,-0.64l-0.39,-0.54l-2.08,-1.64l-0.9,0.05l-0.48,0.94l-2.12,-1.37l0.53,-1.6l-1.11,-1.37l0.51,-1.1l-0.41,-0.57Z", "name": "Serbia"}, "LT": {"path": "M486.93,129.3l0.17,1.12l-1.81,0.98l-0.72,2.02l-2.47,1.18l-2.1,-0.02l-0.73,-1.05l-1.06,-0.3l-0.09,-1.87l-3.56,-1.13l-0.43,-2.36l2.48,-0.94l4.12,0.22l2.25,-0.31l0.52,0.69l1.24,0.21l2.19,1.56Z", "name": "Lithuania"}, "LU": {"path": "M436.08,149.45l-0.48,-0.07l0.3,-1.28l0.27,0.4l-0.09,0.96Z", "name": "Luxembourg"}, "LR": {"path": "M399.36,265.97l0.18,1.54l-0.48,0.99l0.08,0.47l2.47,1.8l-0.33,2.8l-2.65,-1.13l-5.78,-4.61l0.58,-1.32l2.1,-2.33l0.86,-0.22l0.77,1.14l-0.14,0.85l0.59,0.87l1.0,0.14l0.76,-0.99Z", "name": "Liberia"}, "RO": {"path": "M487.53,154.23l0.6,0.24l2.87,3.98l-0.17,2.69l0.45,1.42l1.32,0.81l1.35,-0.42l0.76,0.36l0.02,0.31l-0.83,0.45l-0.59,-0.22l-0.54,0.3l-0.62,3.3l-1.0,-0.22l-2.07,-1.13l-2.95,0.71l-1.25,0.76l-3.51,-0.15l-1.89,-0.47l-0.87,0.16l-0.82,-1.3l0.29,-0.26l-0.06,-0.64l-1.09,-0.34l-0.56,0.5l-1.05,-0.64l-0.39,-1.39l-1.36,-0.65l-0.35,-1.0l-0.83,-0.75l1.54,-0.54l2.66,-4.21l2.4,-1.24l2.96,0.34l1.48,0.73l0.79,-0.45l1.78,-0.3l0.75,-0.74l0.79,0.0Z", "name": "Romania"}, "GW": {"path": "M386.23,253.6l-0.29,0.84l0.15,0.6l-2.21,0.59l-0.86,0.96l-1.04,-0.83l-1.09,-0.23l-0.54,-1.06l-0.66,-0.49l2.41,-0.48l4.13,0.1Z", "name": "Guinea-Bissau"}, "GT": {"path": "M195.08,249.77l-2.48,-0.37l-1.03,-0.45l-1.14,-0.89l0.3,-0.99l-0.24,-0.68l0.96,-1.66l2.98,-0.01l0.4,-0.37l-0.19,-1.28l-1.67,-1.4l0.51,-0.4l0.0,-1.05l3.85,0.02l-0.21,4.53l0.4,0.43l1.46,0.38l-1.48,0.98l-0.35,0.7l0.12,0.57l-2.2,1.96Z", "name": "Guatemala"}, "GR": {"path": "M487.07,174.59l-0.59,1.43l-0.37,0.21l-2.84,-0.35l-3.03,0.77l-0.18,0.68l1.28,1.23l-0.61,0.23l-1.14,0.0l-1.2,-1.39l-0.63,0.03l-0.53,1.01l0.56,1.76l1.03,1.19l-0.56,0.38l-0.05,0.62l2.52,2.12l0.02,0.87l-1.78,-0.59l-0.48,0.56l0.5,1.0l-1.07,0.2l-0.3,0.53l0.75,2.01l-0.98,0.02l-1.84,-1.12l-1.37,-4.2l-2.21,-2.95l-0.11,-0.56l1.04,-1.28l0.2,-0.95l0.85,-0.66l0.03,-0.46l1.32,-0.21l1.01,-0.64l1.22,0.05l0.65,-0.56l2.26,-0.0l1.82,-0.75l1.85,1.0l2.28,-0.28l0.35,-0.39l0.01,-0.77l0.34,0.22ZM480.49,192.16l0.58,0.4l-0.68,-0.12l0.11,-0.28ZM482.52,192.82l2.51,0.06l0.24,0.32l-1.99,0.13l-0.77,-0.51Z", "name": "Greece"}, "GQ": {"path": "M448.79,279.62l0.02,2.22l-4.09,0.0l0.69,-2.27l3.38,0.05Z", "name": "Eq. Guinea"}, "GY": {"path": "M277.42,270.07l-0.32,1.83l-1.32,0.57l-0.23,0.46l-0.28,2.0l1.11,1.82l0.83,0.19l0.32,1.25l1.13,1.62l-1.21,-0.19l-1.08,0.71l-1.77,0.5l-0.44,0.46l-0.86,-0.09l-1.32,-1.01l-0.77,-2.27l0.36,-1.9l0.68,-1.23l-0.57,-1.17l-0.74,-0.43l0.12,-1.16l-0.9,-0.69l-1.1,0.09l-1.31,-1.48l0.53,-0.72l-0.04,-0.84l1.99,-0.86l0.05,-0.59l-0.71,-0.78l0.14,-0.57l1.66,-1.24l1.36,0.77l1.41,1.49l0.06,1.15l0.37,0.38l0.8,0.05l2.06,1.86Z", "name": "Guyana"}, "GE": {"path": "M521.71,168.93l5.29,0.89l4.07,2.01l1.41,-0.44l2.07,0.56l0.68,1.1l1.07,0.55l-0.12,0.59l0.98,1.29l-1.01,-0.13l-1.81,-0.83l-0.94,0.47l-3.23,0.43l-2.29,-1.39l-2.33,0.05l0.21,-0.97l-0.76,-2.26l-1.45,-1.12l-1.43,-0.39l-0.41,-0.42Z", "name": "Georgia"}, "GB": {"path": "M412.61,118.72l-2.19,3.22l-0.0,0.45l5.13,-0.3l-0.53,2.37l-2.2,3.12l0.29,0.63l2.37,0.21l2.33,4.3l1.76,0.69l2.2,5.12l2.94,0.77l-0.23,1.62l-1.15,0.88l-0.1,0.52l0.82,1.42l-1.86,1.43l-3.3,-0.02l-4.12,0.87l-1.04,-0.58l-0.47,0.06l-1.51,1.41l-2.12,-0.34l-1.86,1.18l-0.6,-0.29l3.19,-3.0l2.16,-0.69l0.28,-0.41l-0.34,-0.36l-3.73,-0.53l-0.4,-0.76l2.2,-0.87l0.17,-0.61l-1.26,-1.67l0.36,-1.7l3.38,0.28l0.43,-0.33l0.37,-1.99l-1.79,-2.49l-3.11,-0.72l-0.38,-0.59l0.79,-1.35l-0.04,-0.46l-0.82,-0.97l-0.61,0.01l-0.68,0.84l-0.1,-2.34l-1.23,-1.88l0.85,-3.47l1.77,-2.68l1.85,0.26l2.17,-0.22ZM406.26,132.86l-1.01,1.77l-1.57,-0.59l-1.16,0.01l0.37,-1.54l-0.39,-1.39l1.45,-0.1l2.3,1.84Z", "name": "United Kingdom"}, "GA": {"path": "M453.24,279.52l-0.08,0.98l0.7,1.29l2.36,0.24l-0.98,2.63l1.18,1.79l0.25,1.78l-0.29,1.52l-0.6,0.93l-1.84,-0.09l-1.23,-1.11l-0.66,0.23l-0.15,0.84l-1.42,0.26l-1.02,0.7l-0.11,0.52l0.77,1.35l-1.34,0.97l-3.94,-4.3l-1.44,-2.45l0.06,-0.6l0.54,-0.81l1.05,-3.46l4.17,-0.07l0.4,-0.4l-0.02,-2.66l2.39,0.21l1.25,-0.27Z", "name": "Gabon"}, "GN": {"path": "M391.8,254.11l0.47,0.8l1.11,-0.32l0.98,0.7l1.07,0.2l2.26,-1.22l0.64,0.44l1.13,1.56l-0.48,1.4l0.8,0.3l-0.08,0.48l0.46,0.68l-0.35,1.36l1.05,2.61l-1.0,0.69l0.03,1.41l-0.72,-0.06l-1.08,1.0l-0.24,-0.27l0.07,-1.11l-1.05,-1.54l-1.79,0.21l-0.35,-2.01l-1.6,-2.18l-2.0,-0.0l-1.31,0.54l-1.95,2.18l-1.86,-2.19l-1.2,-0.78l-0.3,-1.11l-0.8,-0.85l0.65,-0.72l0.81,-0.03l1.64,-0.8l0.23,-1.87l2.67,0.64l0.89,-0.3l1.21,0.15Z", "name": "Guinea"}, "GM": {"path": "M379.31,251.39l0.1,-0.35l2.43,-0.07l0.74,-0.61l0.51,-0.03l0.77,0.49l-1.03,-0.3l-1.87,0.9l-1.65,-0.04ZM384.03,250.91l0.91,0.05l0.75,-0.24l-0.59,0.31l-1.08,-0.13Z", "name": "Gambia"}, "GL": {"path": "M353.02,1.2l14.69,4.67l-3.68,1.89l-22.97,0.86l-0.36,0.27l0.12,0.43l1.55,1.18l8.79,-0.66l7.48,2.07l4.86,-1.77l1.66,1.73l-2.53,3.19l-0.01,0.48l0.46,0.15l6.35,-2.2l12.06,-2.31l7.24,1.13l1.09,1.99l-9.79,4.01l-1.44,1.32l-7.87,0.98l-0.35,0.41l0.38,0.38l5.07,0.24l-2.53,3.58l-2.07,3.81l0.08,6.05l2.57,3.11l-3.22,0.2l-4.12,1.66l-0.05,0.72l4.45,2.65l0.51,3.75l-2.3,0.4l-0.25,0.64l2.79,3.69l-4.82,0.31l-0.36,0.29l0.16,0.44l2.62,1.8l-0.59,1.22l-3.3,0.7l-3.45,0.01l-0.29,0.68l3.03,3.12l0.02,1.34l-4.4,-1.73l-1.72,1.35l0.15,0.66l3.31,1.15l3.13,2.71l0.81,3.16l-3.85,0.75l-4.89,-4.26l-0.47,-0.03l-0.17,0.44l0.79,2.86l-2.71,2.21l-0.13,0.44l0.37,0.27l8.73,0.34l-12.32,6.64l-7.24,1.48l-2.94,0.08l-2.69,1.75l-3.43,4.41l-5.24,2.84l-1.73,0.18l-7.12,2.1l-2.15,2.52l-0.13,2.99l-1.19,2.45l-4.01,3.09l-0.14,0.44l0.97,2.9l-2.28,6.48l-3.1,0.2l-3.83,-3.07l-4.86,-0.02l-2.25,-1.93l-1.7,-3.79l-4.3,-4.84l-1.21,-2.49l-0.44,-3.8l-3.32,-3.63l0.84,-2.86l-1.56,-1.7l2.28,-4.6l3.83,-1.74l1.03,-1.96l0.52,-3.47l-0.59,-0.41l-4.17,2.21l-2.07,0.58l-2.72,-1.28l-0.15,-2.71l0.85,-2.09l2.01,-0.06l5.06,1.2l0.46,-0.23l-0.14,-0.49l-6.54,-4.47l-2.67,0.55l-1.58,-0.86l2.56,-4.01l-0.03,-0.48l-1.5,-1.74l-4.98,-8.5l-3.13,-1.96l0.03,-1.88l-0.24,-0.37l-6.85,-3.02l-5.36,-0.38l-12.7,0.58l-2.78,-1.57l-3.66,-2.77l5.73,-1.45l5.0,-0.28l0.38,-0.38l-0.35,-0.41l-10.67,-1.38l-5.3,-2.06l0.25,-1.54l18.41,-5.26l1.22,-2.27l-0.25,-0.55l-6.14,-1.86l1.68,-1.77l8.55,-4.03l3.59,-0.63l0.3,-0.54l-0.88,-2.27l5.47,-1.47l7.65,-0.95l7.55,-0.05l3.04,1.85l6.48,-3.27l5.81,2.22l3.56,0.5l5.16,1.94l0.5,-0.21l-0.17,-0.52l-5.71,-3.13l0.28,-2.13l8.12,-3.6l8.7,0.28l3.35,-2.34l8.71,-0.6l19.93,0.8Z", "name": "Greenland"}, "KW": {"path": "M540.81,207.91l0.37,0.86l-0.17,0.76l0.6,1.53l-0.95,0.04l-0.82,-1.28l-1.57,-0.18l1.31,-1.88l1.22,0.17Z", "name": "Kuwait"}, "GH": {"path": "M420.53,257.51l-0.01,0.72l0.96,1.2l0.24,3.73l0.59,0.95l-0.51,2.1l0.19,1.41l1.02,2.21l-6.97,2.84l-1.8,-0.57l0.04,-0.89l-1.02,-2.04l0.61,-2.65l1.07,-2.32l-0.96,-6.47l5.01,0.07l0.94,-0.39l0.61,0.11Z", "name": "Ghana"}, "OM": {"path": "M568.09,230.93l-0.91,1.67l-1.22,0.04l-0.6,0.76l-0.41,1.51l0.27,1.58l-1.16,0.05l-1.56,0.97l-0.76,1.74l-1.62,0.05l-0.98,0.65l-0.17,1.15l-0.89,0.52l-1.49,-0.18l-2.4,0.94l-2.47,-5.4l7.35,-2.71l1.67,-5.23l-1.12,-2.09l0.05,-0.83l0.67,-1.0l0.07,-1.05l0.9,-0.42l-0.05,-2.07l0.7,-0.01l1.0,1.62l1.51,1.08l3.3,0.84l1.73,2.29l0.81,0.37l-1.23,2.35l-0.99,0.79Z", "name": "Oman"}, "_1": {"path": "M531.15,258.94l1.51,0.12l5.13,-0.95l5.3,-1.48l-0.01,4.4l-2.67,3.39l-1.85,0.01l-8.04,-2.94l-2.55,-3.17l1.12,-1.71l2.04,2.34Z", "name": "Somaliland"}, "_0": {"path": "M472.77,172.64l-1.08,-1.29l0.96,-0.77l0.29,-0.83l1.98,1.64l-0.36,0.67l-1.79,0.58Z", "name": "Kosovo"}, "JO": {"path": "M518.64,201.38l-5.14,1.56l-0.19,0.65l2.16,2.39l-0.89,1.14l-1.71,0.34l-1.71,1.8l-2.34,-0.37l1.21,-4.32l0.56,-4.07l2.8,0.94l4.46,-2.71l0.79,2.66Z", "name": "Jordan"}, "HR": {"path": "M455.59,162.84l1.09,0.07l-0.82,0.94l-0.27,-1.01ZM456.96,162.92l0.62,-0.41l1.73,0.45l0.42,-0.4l-0.01,-0.59l0.86,-0.52l0.2,-1.05l1.63,-0.68l2.57,1.68l2.07,0.6l0.87,-0.31l1.05,1.57l-0.52,0.63l-1.05,-0.56l-1.68,0.04l-2.1,-0.5l-1.29,0.06l-0.57,0.49l-0.59,-0.47l-0.62,0.16l-0.46,1.7l1.79,2.42l2.79,2.75l-1.18,-0.87l-2.21,-0.87l-1.67,-1.78l0.13,-0.63l-1.05,-1.19l-0.32,-1.27l-1.42,-0.43Z", "name": "Croatia"}, "HT": {"path": "M237.05,238.38l-1.16,0.43l-0.91,-0.55l0.05,-0.2l2.02,0.31ZM237.53,238.43l1.06,0.12l-0.05,0.01l-1.01,-0.12ZM239.25,238.45l0.79,-0.51l0.06,-0.62l-1.02,-1.0l0.02,-0.82l-0.3,-0.4l-0.93,-0.32l3.16,0.45l0.02,1.84l-0.48,0.34l-0.08,0.58l0.54,0.72l-1.78,-0.26Z", "name": "Haiti"}, "HU": {"path": "M462.08,157.89l0.65,-1.59l-0.09,-0.44l0.64,-0.0l0.39,-0.34l0.1,-0.69l1.75,0.87l2.32,-0.37l0.43,-0.66l3.49,-0.78l0.69,-0.78l0.57,-0.14l2.57,0.93l0.67,-0.23l1.03,0.65l0.08,0.37l-1.42,0.71l-2.59,4.14l-1.8,0.53l-1.68,-0.1l-2.74,1.23l-1.85,-0.54l-2.54,-1.66l-0.66,-1.1Z", "name": "Hungary"}, "HN": {"path": "M199.6,249.52l-1.7,-1.21l0.06,-0.94l3.04,-2.14l2.37,0.28l1.27,-0.09l1.1,-0.52l1.3,0.28l1.14,-0.25l1.38,0.37l2.23,1.37l-2.36,0.93l-1.23,-0.39l-0.88,1.3l-1.28,0.99l-0.98,-0.22l-0.42,0.52l-0.96,0.05l-0.36,0.41l0.04,0.88l-0.52,0.6l-0.3,0.04l-0.3,-0.55l-0.66,-0.31l0.11,-0.67l-0.48,-0.65l-0.87,-0.26l-0.73,0.2Z", "name": "Honduras"}, "PR": {"path": "M256.17,238.73l-0.26,0.27l-2.83,0.05l-0.07,-0.55l1.95,-0.1l1.22,0.33Z", "name": "Puerto Rico"}, "PS": {"path": "M509.21,203.07l0.1,-0.06l-0.02,0.03l-0.09,0.03ZM509.36,202.91l-0.02,-0.63l-0.33,-0.16l0.31,-1.09l0.24,0.1l-0.2,1.78Z", "name": "Palestine"}, "PT": {"path": "M401.84,187.38l-0.64,0.47l-1.13,-0.35l-0.91,0.17l0.28,-1.78l-0.24,-1.78l-1.25,-0.56l-0.45,-0.84l0.17,-1.66l1.01,-1.18l0.69,-2.92l-0.04,-1.39l-0.59,-1.9l1.3,-0.85l0.84,1.35l3.1,-0.3l0.46,0.99l-1.05,0.94l-0.03,2.16l-0.41,0.57l-0.08,1.1l-0.79,0.18l-0.26,0.59l0.91,1.6l-0.63,1.75l0.76,1.09l-1.1,1.52l0.07,1.05Z", "name": "Portugal"}, "PY": {"path": "M274.9,336.12l0.74,1.52l-0.16,3.45l0.32,0.41l2.64,0.5l1.11,-0.47l1.4,0.59l0.36,0.6l0.53,3.42l1.27,0.4l0.98,-0.38l0.51,0.27l-0.0,1.18l-1.21,5.32l-2.09,1.9l-1.8,0.4l-4.71,-0.98l2.2,-3.63l-0.32,-1.5l-2.78,-1.28l-3.03,-1.94l-2.07,-0.44l-4.34,-4.06l0.91,-2.9l0.08,-1.42l1.07,-2.04l4.13,-0.72l2.18,0.03l2.05,1.17l0.03,0.59Z", "name": "Paraguay"}, "PA": {"path": "M213.8,263.68l0.26,-1.52l-0.36,-0.26l-0.01,-0.49l0.44,-0.1l0.93,1.4l1.26,0.03l0.77,0.49l1.38,-0.23l2.51,-1.11l0.86,-0.72l3.45,0.85l1.4,1.18l0.41,1.74l-0.21,0.34l-0.53,-0.12l-0.47,0.29l-0.16,0.6l-0.68,-1.28l0.45,-0.49l-0.19,-0.66l-0.47,-0.13l-0.54,-0.84l-1.5,-0.75l-1.1,0.16l-0.75,0.99l-1.62,0.84l-0.18,0.96l0.85,0.97l-0.58,0.45l-0.69,0.08l-0.34,-1.18l-1.27,0.03l-0.71,-1.05l-2.59,-0.46Z", "name": "Panama"}, "PG": {"path": "M808.58,298.86l2.54,2.56l-0.13,0.26l-0.33,0.12l-0.87,-0.78l-1.22,-2.16ZM801.41,293.04l0.5,0.29l0.26,0.27l-0.49,-0.35l-0.27,-0.21ZM803.17,294.58l0.59,0.5l0.08,1.06l-0.29,-0.91l-0.38,-0.65ZM796.68,298.41l0.52,0.75l1.43,-0.19l2.27,-1.81l-0.01,-1.43l1.12,0.16l-0.04,1.1l-0.7,1.28l-1.12,0.18l-0.62,0.79l-2.46,1.11l-1.17,-0.0l-3.08,-1.25l3.41,0.0l0.45,-0.68ZM789.15,303.55l2.31,1.8l1.59,2.61l1.34,0.13l-0.06,0.66l0.31,0.43l1.06,0.24l0.06,0.65l2.25,1.05l-1.22,0.13l-0.72,-0.63l-4.56,-0.65l-3.22,-2.87l-1.49,-2.34l-3.27,-1.1l-2.38,0.72l-1.59,0.86l-0.2,0.42l0.27,1.55l-1.55,0.68l-1.36,-0.4l-2.21,-0.09l-0.08,-15.41l8.39,2.93l2.95,2.4l0.6,1.64l4.02,1.49l0.31,0.68l-1.76,0.21l-0.33,0.52l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M244.96,295.21l-1.26,-0.07l-0.57,0.42l-1.93,0.45l-2.98,1.75l-0.36,1.36l-0.58,0.8l0.12,1.37l-1.24,0.59l-0.22,1.22l-0.62,0.84l1.04,2.27l1.28,1.44l-0.41,0.84l0.32,0.57l1.48,0.13l1.16,1.37l2.21,0.07l1.63,-1.08l-0.13,3.02l0.3,0.4l1.14,0.29l1.31,-0.34l1.9,3.59l-0.48,0.85l-0.17,3.85l-0.94,1.59l0.35,0.75l-0.47,1.07l0.98,1.97l-2.1,3.82l-0.98,0.5l-2.17,-1.28l-0.39,-1.16l-4.95,-2.58l-4.46,-2.79l-1.84,-1.51l-0.91,-1.84l0.3,-0.96l-2.11,-3.33l-4.82,-9.68l-1.04,-1.2l-0.87,-1.94l-3.4,-2.48l0.58,-1.18l-1.13,-2.23l0.66,-1.49l1.45,-1.15l-0.6,0.98l0.07,0.92l0.47,0.36l1.74,0.03l0.97,1.17l0.54,0.07l1.42,-1.03l0.6,-1.84l1.42,-2.02l3.04,-1.04l2.73,-2.62l0.86,-1.74l-0.1,-1.87l1.44,1.02l0.9,1.25l1.06,0.59l1.7,2.73l1.86,0.31l1.45,-0.61l0.96,0.39l1.36,-0.19l1.45,0.89l-1.4,2.21l0.31,0.61l0.59,0.05l0.47,0.5Z", "name": "Peru"}, "PK": {"path": "M615.09,192.34l-1.83,1.81l-2.6,0.39l-3.73,-0.68l-1.58,1.33l-0.09,0.42l1.77,4.39l1.7,1.23l-1.69,1.27l-0.12,2.14l-2.33,2.64l-1.6,2.8l-2.46,2.67l-3.03,-0.07l-2.76,2.83l0.05,0.6l1.5,1.11l0.26,1.9l1.44,1.5l0.37,1.68l-5.01,-0.01l-1.78,1.7l-1.42,-0.52l-0.76,-1.87l-2.27,-2.15l-11.61,0.86l0.71,-2.34l3.43,-1.32l0.25,-0.44l-0.21,-1.24l-1.2,-0.65l-0.28,-2.46l-2.29,-1.14l-1.28,-1.94l2.82,0.94l2.62,-0.38l1.42,0.33l0.76,-0.56l1.71,0.19l3.25,-1.14l0.27,-0.36l0.08,-2.19l1.18,-1.32l1.68,0.0l0.58,-0.82l1.6,-0.3l1.19,0.16l0.98,-0.78l0.02,-1.88l0.93,-1.47l1.48,-0.66l0.19,-0.55l-0.66,-1.25l2.04,-0.11l0.69,-1.01l-0.02,-1.16l1.11,-1.06l-0.17,-1.78l-0.49,-1.03l1.15,-0.98l5.42,-0.91l2.6,-0.82l1.6,1.16l0.97,2.34l3.45,0.97Z", "name": "Pakistan"}, "PH": {"path": "M737.01,263.84l0.39,2.97l-0.44,1.18l-0.55,-1.53l-0.67,-0.14l-1.17,1.28l0.65,2.09l-0.42,0.69l-2.48,-1.23l-0.57,-1.49l0.65,-1.03l-0.1,-0.54l-1.59,-1.19l-0.56,0.08l-0.65,0.87l-1.23,0.0l-1.58,0.97l0.83,-1.8l2.56,-1.42l0.65,0.84l0.45,0.13l1.9,-0.69l0.56,-1.11l1.5,-0.06l0.38,-0.43l-0.09,-1.19l1.21,0.71l0.36,2.02ZM733.59,256.58l0.05,0.75l0.08,0.26l-0.8,-0.42l-0.18,-0.71l0.85,0.12ZM734.08,256.1l-0.12,-1.12l-1.0,-1.27l1.36,0.03l0.53,0.73l0.51,2.04l-1.27,-0.4ZM733.76,257.68l0.38,0.98l-0.32,0.15l-0.07,-1.13ZM724.65,238.43l1.46,0.7l0.72,-0.31l-0.32,1.17l0.79,1.71l-0.57,1.84l-1.53,1.04l-0.39,2.25l0.56,2.04l1.63,0.57l1.16,-0.27l2.71,1.23l-0.19,1.08l0.76,0.84l-0.08,0.36l-1.4,-0.9l-0.88,-1.27l-0.66,0.0l-0.38,0.55l-1.6,-1.31l-2.15,0.36l-0.87,-0.39l0.07,-0.61l0.66,-0.55l-0.01,-0.62l-0.75,-0.59l-0.72,0.44l-0.74,-0.87l-0.39,-2.49l0.32,0.27l0.66,-0.28l0.26,-3.97l0.7,-2.02l1.14,0.0ZM731.03,258.87l-0.88,0.85l-1.19,1.94l-1.05,-1.19l0.93,-1.1l0.32,-1.47l0.52,-0.06l-0.27,1.15l0.22,0.45l0.49,-0.12l1.0,-1.32l-0.08,0.85ZM726.83,255.78l0.83,0.38l1.17,-0.0l-0.02,0.48l-2.0,1.4l0.03,-2.26ZM724.81,252.09l-0.38,1.27l-1.42,-1.95l1.2,0.05l0.6,0.63ZM716.55,261.82l1.1,-0.95l0.03,-0.03l-0.28,0.36l-0.85,0.61ZM719.22,259.06l0.04,-0.06l0.8,-1.53l0.16,0.75l-1.0,0.84Z", "name": "Philippines"}, "PL": {"path": "M468.44,149.42l-1.11,-1.54l-1.86,-0.33l-0.48,-1.05l-1.72,-0.37l-0.65,0.69l-0.72,-0.36l0.11,-0.61l-0.33,-0.46l-1.75,-0.27l-1.04,-0.93l-0.94,-1.94l0.16,-1.22l-0.62,-1.8l-0.78,-1.07l0.57,-1.04l-0.48,-1.43l1.41,-0.83l6.91,-2.71l2.14,0.5l0.52,0.91l5.51,0.44l4.55,-0.05l1.07,0.31l0.48,0.84l0.15,1.58l0.65,1.2l-0.01,0.99l-1.27,0.58l-0.19,0.54l0.73,1.48l0.08,1.55l1.2,2.76l-0.17,0.58l-1.23,0.44l-2.27,2.72l0.18,0.95l-1.97,-1.03l-1.98,0.4l-1.36,-0.28l-1.24,0.58l-1.07,-0.97l-1.16,0.24Z", "name": "Poland"}, "-99": {"path": "M504.91,192.87l0.34,0.01l0.27,-0.07l-0.29,0.26l-0.31,-0.2Z", "name": "N. Cyprus"}, "ZM": {"path": "M481.47,313.3l0.39,0.31l2.52,0.14l0.99,1.17l2.01,0.35l1.4,-0.64l0.69,1.17l1.78,0.33l1.84,2.35l2.23,0.18l0.4,-0.43l-0.21,-2.74l-0.62,-0.3l-0.48,0.32l-1.98,-1.17l0.72,-5.29l-0.51,-1.18l0.57,-1.3l3.68,-0.62l0.26,0.63l1.21,0.63l0.9,-0.22l2.16,0.67l1.33,0.71l1.07,1.02l0.56,1.87l-0.88,2.7l0.43,2.09l-0.73,0.87l-0.76,2.37l0.59,0.68l-6.6,1.83l-0.29,0.44l0.19,1.45l-1.68,0.35l-1.43,1.02l-0.38,0.87l-0.87,0.26l-3.48,3.69l-4.16,-0.53l-1.52,-1.0l-1.77,-0.13l-1.83,0.52l-3.04,-3.4l0.11,-7.59l4.82,0.03l0.39,-0.49l-0.18,-0.76l0.33,-0.83l-0.4,-1.36l0.24,-1.05Z", "name": "Zambia"}, "EH": {"path": "M384.42,230.28l0.25,-0.79l1.06,-1.29l0.8,-3.51l3.38,-2.78l0.7,-1.81l0.06,4.84l-1.98,0.2l-0.94,1.59l0.39,3.56l-3.7,-0.01ZM392.01,218.1l0.7,-1.8l1.77,-0.24l2.09,0.34l0.95,-0.62l1.28,-0.07l-0.0,2.51l-6.79,-0.12Z", "name": "W. Sahara"}, "EE": {"path": "M485.71,115.04l2.64,0.6l2.56,0.11l-1.6,1.91l0.61,3.54l-0.81,0.87l-1.78,-0.01l-3.22,-1.76l-1.8,0.45l0.21,-1.53l-0.58,-0.41l-0.69,0.34l-1.26,-1.03l-0.17,-1.63l2.83,-0.92l3.05,-0.52Z", "name": "Estonia"}, "EG": {"path": "M492.06,205.03l1.46,0.42l2.95,-1.64l2.04,-0.21l1.53,0.3l0.59,1.19l0.69,0.04l0.41,-0.64l1.81,0.58l1.95,0.16l1.04,-0.51l1.42,4.08l-2.03,4.54l-1.66,-1.77l-1.76,-3.85l-0.64,-0.12l-0.36,0.67l1.04,2.88l3.44,6.95l1.78,3.04l2.03,2.65l-0.36,0.53l0.23,2.01l2.7,2.19l-28.41,0.0l0.0,-18.96l-0.73,-2.2l0.59,-1.56l-0.32,-1.26l0.68,-0.99l3.06,-0.04l4.82,1.52Z", "name": "Egypt"}, "ZA": {"path": "M467.14,373.21l-0.13,-1.96l-0.68,-1.56l0.7,-0.68l-0.13,-2.33l-4.56,-8.19l0.77,-0.86l0.6,0.45l0.69,1.31l2.83,0.72l1.5,-0.26l2.24,-1.39l0.19,-9.55l1.35,2.3l-0.21,1.5l0.61,1.2l0.4,0.19l1.79,-0.27l2.6,-2.07l0.69,-1.32l0.96,-0.48l2.19,1.04l2.04,0.13l1.77,-0.65l0.85,-2.12l1.38,-0.33l1.59,-2.76l2.15,-1.89l3.41,-1.87l2.0,0.45l1.02,-0.28l0.99,0.2l1.75,5.29l-0.38,3.25l-0.81,-0.23l-1.0,0.46l-0.87,1.68l-0.05,1.16l1.97,1.84l1.47,-0.29l0.69,-1.18l1.09,0.01l-0.76,3.69l-0.58,1.09l-2.2,1.79l-3.17,4.76l-2.8,2.83l-3.57,2.88l-2.53,1.05l-1.22,0.14l-0.51,0.7l-1.18,-0.32l-1.39,0.5l-2.59,-0.52l-1.61,0.33l-1.18,-0.11l-2.55,1.1l-2.1,0.44l-1.6,1.07l-0.85,0.05l-0.93,-0.89l-0.93,-0.15l-0.97,-1.13l-0.25,0.05ZM491.45,364.19l0.62,-0.93l1.48,-0.59l1.18,-2.19l-0.07,-0.49l-1.99,-1.69l-1.66,0.56l-1.43,1.14l-1.34,1.73l0.02,0.51l1.88,2.11l1.31,-0.16Z", "name": "South Africa"}, "EC": {"path": "M231.86,285.53l0.29,1.59l-0.69,1.45l-2.61,2.51l-3.13,1.11l-1.53,2.18l-0.49,1.68l-1.0,0.73l-1.02,-1.11l-1.78,-0.16l0.67,-1.15l-0.24,-0.86l1.25,-2.13l-0.54,-1.09l-0.67,-0.08l-0.72,0.87l-0.87,-0.64l0.35,-0.69l-0.36,-1.96l0.81,-0.51l0.45,-1.51l0.92,-1.57l-0.07,-0.97l2.65,-1.33l2.75,1.35l0.77,1.05l2.12,0.35l0.76,-0.32l1.96,1.21Z", "name": "Ecuador"}, "AL": {"path": "M470.32,171.8l0.74,0.03l0.92,0.89l-0.17,1.95l0.36,1.28l1.01,0.82l-1.82,2.83l-0.19,-0.61l-1.25,-0.89l-0.18,-1.2l0.53,-2.82l-0.54,-1.47l0.6,-0.83Z", "name": "Albania"}, "AO": {"path": "M461.55,300.03l1.26,3.15l1.94,2.36l2.47,-0.53l1.25,0.32l0.44,-0.18l0.93,-1.92l1.31,-0.08l0.41,-0.44l0.47,-0.0l-0.1,0.41l0.39,0.49l2.65,-0.02l0.03,1.19l0.48,1.01l-0.34,1.52l0.18,1.55l0.83,1.04l-0.13,2.85l0.54,0.39l3.96,-0.41l-0.1,1.79l0.39,1.05l-0.24,1.43l-4.7,-0.03l-0.4,0.39l-0.12,8.13l2.92,3.49l-3.83,0.88l-5.89,-0.36l-1.88,-1.24l-10.47,0.22l-1.3,-1.01l-1.85,-0.16l-2.4,0.77l-0.15,-1.06l0.33,-2.16l1.0,-3.45l1.35,-3.2l2.24,-2.8l0.33,-2.06l-0.13,-1.53l-0.8,-1.08l-1.21,-2.87l0.87,-1.62l-1.27,-4.12l-1.17,-1.53l2.47,-0.63l7.03,0.03ZM451.71,298.87l-0.47,-1.25l1.25,-1.11l0.32,0.3l-0.99,1.03l-0.12,1.03Z", "name": "Angola"}, "KZ": {"path": "M552.8,172.89l0.46,-1.27l-0.48,-1.05l-2.96,-1.19l-1.06,-2.58l-1.37,-0.87l-0.03,-0.3l1.95,0.23l0.45,-0.38l0.08,-1.96l1.75,-0.41l2.1,0.45l0.48,-0.33l0.45,-3.04l-0.45,-2.09l-0.41,-0.31l-2.42,0.15l-2.36,-0.73l-2.87,1.37l-2.17,0.61l-0.85,-0.34l0.13,-1.61l-1.6,-2.12l-2.02,-0.08l-1.78,-1.82l1.29,-2.18l-0.57,-0.95l1.62,-2.91l2.21,1.63l0.63,-0.27l0.29,-2.22l4.92,-3.43l3.71,-0.08l8.4,3.6l2.92,-1.36l3.77,-0.06l3.11,1.66l0.51,-0.11l0.6,-0.81l3.31,0.13l0.39,-0.25l0.63,-1.57l-0.17,-0.5l-3.5,-1.98l1.87,-1.27l-0.13,-1.03l1.98,-0.72l0.18,-0.62l-1.59,-2.06l0.81,-0.82l9.23,-1.18l1.33,-0.88l6.18,-1.26l2.26,-1.42l4.08,0.68l0.73,3.33l0.51,0.3l2.48,-0.8l2.79,1.02l-0.17,1.56l0.43,0.44l2.55,-0.24l4.89,-2.53l0.03,0.32l3.15,2.61l5.56,8.47l0.65,0.02l1.12,-1.46l3.15,1.74l3.76,-0.78l1.15,0.49l1.14,1.8l1.84,0.76l0.99,1.29l3.35,-0.25l1.02,1.52l-1.6,1.81l-1.93,0.28l-0.34,0.38l-0.11,3.05l-1.13,1.16l-4.75,-1.0l-0.46,0.27l-1.76,5.47l-1.1,0.59l-4.91,1.23l-0.27,0.54l2.1,4.97l-1.37,0.63l-0.23,0.41l0.13,1.13l-0.88,-0.25l-1.42,-1.13l-7.89,-0.4l-0.92,0.31l-3.73,-1.22l-1.42,0.63l-0.53,1.66l-3.72,-0.94l-1.85,0.43l-0.76,1.4l-4.65,2.62l-1.13,2.08l-0.44,0.01l-0.92,-1.4l-2.87,-0.09l-0.45,-2.14l-0.38,-0.32l-0.8,-0.01l0.0,-2.96l-3.0,-2.22l-7.31,0.58l-2.35,-2.68l-6.71,-3.69l-6.45,1.83l-0.29,0.39l0.1,10.85l-0.7,0.08l-1.62,-2.17l-1.83,-0.96l-3.11,0.59l-0.64,0.51Z", "name": "Kazakhstan"}, "ET": {"path": "M516.04,247.79l1.1,0.84l1.63,-0.45l0.68,0.47l1.63,0.03l2.01,0.94l1.73,1.66l1.64,2.07l-1.52,2.04l0.16,1.72l0.39,0.38l2.05,0.0l-0.36,1.03l2.86,3.58l8.32,3.08l1.31,0.02l-6.32,6.75l-3.1,0.11l-2.36,1.77l-1.47,0.04l-0.86,0.79l-1.38,-0.0l-1.32,-0.81l-2.29,1.05l-0.76,0.98l-3.29,-0.41l-3.07,-2.07l-1.8,-0.07l-0.62,-0.6l0.0,-1.24l-0.28,-0.38l-1.15,-0.37l-1.4,-2.59l-1.19,-0.68l-0.47,-1.0l-1.27,-1.23l-1.16,-0.22l0.43,-0.72l1.45,-0.28l0.41,-0.95l-0.03,-2.21l0.68,-2.44l1.05,-0.63l1.43,-3.06l1.57,-1.37l1.02,-2.51l0.35,-1.88l2.52,0.46l0.44,-0.24l0.58,-1.43Z", "name": "Ethiopia"}, "ZW": {"path": "M498.91,341.09l-1.11,-0.22l-0.92,0.28l-2.09,-0.44l-1.5,-1.11l-1.89,-0.43l-0.62,-1.4l-0.01,-0.84l-0.3,-0.38l-0.97,-0.25l-2.71,-2.74l-1.92,-3.32l3.83,0.45l3.73,-3.82l1.08,-0.44l0.26,-0.77l1.25,-0.9l1.41,-0.26l0.5,0.89l1.99,-0.05l1.72,1.17l1.11,0.17l1.05,0.66l0.01,2.99l-0.59,3.76l0.38,0.86l-0.23,1.23l-0.39,0.35l-0.63,1.81l-2.43,2.75Z", "name": "Zimbabwe"}, "ES": {"path": "M416.0,169.21l1.07,1.17l4.61,1.38l1.06,-0.57l2.6,1.26l2.71,-0.3l0.09,1.12l-2.14,1.8l-3.11,0.61l-0.31,0.31l-0.2,0.89l-1.54,1.69l-0.97,2.4l0.84,1.74l-1.32,1.27l-0.48,1.68l-1.88,0.65l-1.66,2.07l-5.36,-0.01l-1.79,1.08l-0.89,0.98l-0.88,-0.17l-0.79,-0.82l-0.68,-1.59l-2.37,-0.63l-0.11,-0.5l1.21,-1.82l-0.77,-1.13l0.61,-1.68l-0.76,-1.62l0.87,-0.49l0.09,-1.25l0.42,-0.6l0.03,-2.11l0.99,-0.69l0.13,-0.5l-1.03,-1.73l-1.46,-0.11l-0.61,0.38l-1.06,0.0l-0.52,-1.23l-0.53,-0.21l-1.32,0.67l-0.01,-1.49l-0.75,-0.96l3.03,-1.88l2.99,0.53l3.32,-0.02l2.63,0.51l6.01,-0.06Z", "name": "Spain"}, "ER": {"path": "M520.38,246.23l3.42,2.43l3.5,3.77l0.84,0.54l-0.95,-0.01l-3.51,-3.89l-2.33,-1.15l-1.73,-0.07l-0.91,-0.51l-1.26,0.51l-1.34,-1.02l-0.61,0.17l-0.66,1.61l-2.35,-0.43l-0.17,-0.67l1.29,-5.29l0.61,-0.61l1.95,-0.53l0.87,-1.01l1.17,2.41l0.68,2.33l1.49,1.43Z", "name": "Eritrea"}, "ME": {"path": "M468.91,172.53l-1.22,-1.02l0.47,-1.81l0.89,-0.72l2.26,1.51l-0.5,0.57l-0.75,-0.27l-1.14,1.73Z", "name": "Montenegro"}, "MD": {"path": "M488.41,153.73l1.4,-0.27l1.72,0.93l1.07,0.15l0.85,0.65l-0.14,0.84l0.96,0.85l1.12,2.47l-1.15,-0.07l-0.66,-0.41l-0.52,0.25l-0.09,0.86l-1.08,1.89l-0.27,-0.86l0.25,-1.34l-0.16,-1.6l-3.29,-4.34Z", "name": "Moldova"}, "MG": {"path": "M545.91,319.14l0.4,3.03l0.62,1.21l-0.21,1.02l-0.57,-0.8l-0.69,-0.01l-0.47,0.76l0.41,2.12l-0.18,0.87l-0.73,0.78l-0.15,2.14l-4.71,15.2l-1.06,2.88l-3.92,1.64l-3.12,-1.49l-0.6,-1.21l-0.19,-2.4l-0.86,-2.05l-0.21,-1.77l0.38,-1.62l1.21,-0.75l0.01,-0.76l1.19,-2.04l0.23,-1.66l-1.06,-2.99l-0.19,-2.21l0.81,-1.33l0.32,-1.46l4.63,-1.22l3.44,-3.0l0.85,-1.4l-0.08,-0.7l0.78,-0.04l1.38,-1.77l0.13,-1.64l0.45,-0.61l1.16,1.69l0.59,1.6Z", "name": "Madagascar"}, "MA": {"path": "M378.78,230.02l0.06,-0.59l0.92,-0.73l0.82,-1.37l-0.09,-1.04l0.79,-1.7l1.31,-1.58l0.96,-0.59l0.66,-1.55l0.09,-1.47l0.81,-1.48l1.72,-1.07l1.55,-2.69l1.16,-0.96l2.44,-0.39l1.94,-1.82l1.31,-0.78l2.09,-2.28l-0.51,-3.65l1.24,-3.7l1.5,-1.75l4.46,-2.57l2.37,-4.47l1.44,0.01l1.68,1.21l2.32,-0.19l3.47,0.65l0.8,1.54l0.16,1.71l0.86,2.96l0.56,0.59l-0.26,0.61l-3.05,0.44l-1.26,1.05l-1.33,0.22l-0.33,0.37l-0.09,1.78l-2.68,1.0l-1.07,1.42l-4.47,1.13l-4.04,2.01l-0.54,4.64l-1.15,0.06l-0.92,0.61l-1.96,-0.35l-2.42,0.54l-0.74,1.9l-0.86,0.4l-1.14,3.26l-3.53,3.01l-0.8,3.55l-0.96,1.1l-0.29,0.82l-4.95,0.18Z", "name": "Morocco"}, "UZ": {"path": "M598.64,172.75l-1.63,1.52l0.06,0.64l1.85,1.12l1.97,-0.64l2.21,1.17l-2.52,1.68l-2.59,-0.22l-0.18,-0.41l0.46,-1.23l-0.45,-0.53l-3.35,0.69l-2.1,3.51l-1.87,-0.12l-1.03,1.51l0.22,0.55l1.64,0.62l0.46,1.83l-1.19,2.49l-2.66,-0.53l0.05,-1.36l-0.26,-0.39l-3.3,-1.23l-2.56,-1.4l-4.4,-3.34l-1.34,-3.14l-1.08,-0.6l-2.58,0.13l-0.69,-0.44l-0.47,-2.52l-3.37,-1.6l-0.43,0.05l-2.07,1.72l-2.1,1.01l-0.21,0.47l0.28,1.01l-1.91,0.03l-0.09,-10.5l5.99,-1.7l6.19,3.54l2.71,2.84l7.05,-0.67l2.71,2.01l-0.17,2.81l0.39,0.42l0.9,0.02l0.44,2.14l0.38,0.32l2.94,0.09l0.95,1.42l1.28,-0.24l1.05,-2.04l4.43,-2.5Z", "name": "Uzbekistan"}, "MM": {"path": "M673.9,230.21l-1.97,1.57l-0.57,0.96l-1.4,0.6l-1.36,1.05l-1.99,0.36l-1.08,2.66l-0.91,0.4l-0.19,0.55l1.21,2.27l2.52,3.43l-0.79,1.91l-0.74,0.41l-0.17,0.52l0.65,1.37l1.61,1.95l0.25,2.58l0.9,2.13l-1.92,3.57l0.68,-2.25l-0.81,-1.74l0.19,-2.65l-1.05,-1.53l-1.24,-6.17l-1.12,-2.26l-0.6,-0.13l-4.34,3.02l-2.39,-0.65l0.77,-2.84l-0.52,-2.61l-1.91,-2.96l0.25,-0.75l-0.29,-0.51l-1.33,-0.3l-1.61,-1.93l-0.1,-1.3l0.82,-0.24l0.04,-1.64l1.02,-0.52l0.21,-0.45l-0.23,-0.95l0.54,-0.96l0.08,-2.22l1.46,0.45l0.47,-0.2l1.12,-2.19l0.16,-1.35l1.33,-2.16l-0.0,-1.52l2.89,-1.66l1.63,0.44l0.5,-0.44l-0.17,-1.4l0.64,-0.36l0.08,-1.04l0.77,-0.11l0.71,1.35l1.06,0.69l-0.03,3.86l-2.38,2.37l-0.3,3.15l0.46,0.43l2.28,-0.38l0.51,2.08l1.47,0.67l-0.6,1.8l0.19,0.48l2.97,1.48l1.64,-0.55l0.02,0.32Z", "name": "Myanmar"}, "ML": {"path": "M392.61,254.08l-0.19,-2.37l-0.99,-0.87l-0.44,-1.3l-0.09,-1.28l0.81,-0.58l0.35,-1.24l2.37,0.65l1.31,-0.47l0.86,0.15l0.66,-0.56l9.83,-0.04l0.38,-0.28l0.56,-1.8l-0.44,-0.65l-2.35,-21.95l3.27,-0.04l16.7,11.38l0.74,1.31l2.5,1.09l0.02,1.38l0.44,0.39l2.34,-0.21l0.01,5.38l-1.28,1.61l-0.26,1.49l-5.31,0.57l-1.07,0.92l-2.9,0.1l-0.86,-0.48l-1.38,0.36l-2.4,1.08l-0.6,0.87l-1.85,1.09l-0.43,0.7l-0.79,0.39l-1.44,-0.21l-0.81,0.84l-0.34,1.64l-1.91,2.02l-0.06,1.03l-0.67,1.22l0.13,1.16l-0.97,0.39l-0.23,-0.64l-0.52,-0.24l-1.35,0.4l-0.34,0.55l-2.69,-0.28l-0.37,-0.35l-0.02,-0.9l-0.65,-0.35l0.45,-0.64l-0.03,-0.53l-2.12,-2.44l-0.76,-0.01l-2.0,1.16l-0.78,-0.15l-0.8,-0.67l-1.21,0.23Z", "name": "Mali"}, "MN": {"path": "M676.61,146.48l3.81,1.68l5.67,-1.0l2.37,0.41l2.34,1.5l1.79,1.75l2.29,-0.03l3.12,0.52l2.47,-0.81l3.41,-0.59l3.53,-2.21l1.25,0.29l1.53,1.13l2.27,-0.21l-2.66,5.01l0.64,1.68l0.47,0.21l1.32,-0.38l2.38,0.48l2.02,-1.11l1.76,0.89l2.06,2.02l-0.13,0.53l-1.72,-0.29l-3.77,0.46l-1.88,0.99l-1.76,1.99l-3.71,1.17l-2.45,1.6l-3.83,-0.87l-0.41,0.17l-1.31,1.99l1.04,2.24l-1.52,0.9l-1.74,1.57l-2.79,1.02l-3.78,0.13l-4.05,1.05l-2.77,1.52l-1.16,-0.85l-2.94,0.0l-3.62,-1.79l-2.58,-0.49l-3.4,0.41l-5.12,-0.67l-2.63,0.06l-1.31,-1.6l-1.4,-3.0l-1.48,-0.33l-3.13,-1.94l-6.16,-0.93l-0.71,-1.06l0.86,-3.82l-1.93,-2.71l-3.5,-1.18l-1.95,-1.58l-0.5,-1.72l2.34,-0.52l4.75,-2.8l3.62,-1.47l2.18,0.97l2.46,0.05l1.81,1.53l2.46,0.12l3.95,0.71l2.43,-2.28l0.08,-0.48l-0.9,-1.72l2.24,-2.98l2.62,1.27l4.94,1.17l0.43,2.24Z", "name": "Mongolia"}, "MK": {"path": "M472.8,173.98l0.49,-0.71l3.57,-0.71l1.0,0.77l0.13,1.45l-0.65,0.53l-1.15,-0.05l-1.12,0.67l-1.39,0.22l-0.79,-0.55l-0.29,-1.03l0.19,-0.6Z", "name": "Macedonia"}, "MW": {"path": "M505.5,309.31l0.85,1.95l0.15,2.86l-0.69,1.65l0.71,1.8l0.06,1.28l0.49,0.64l0.07,1.06l0.4,0.55l0.8,-0.23l0.55,0.61l0.69,-0.21l0.34,0.6l0.19,2.94l-1.04,0.62l-0.54,1.25l-1.11,-1.08l-0.16,-1.56l0.51,-1.31l-0.32,-1.3l-0.99,-0.65l-0.82,0.12l-2.36,-1.64l0.63,-1.96l0.82,-1.18l-0.46,-2.01l0.9,-2.86l-0.94,-2.51l0.96,0.18l0.29,0.4Z", "name": "Malawi"}, "MR": {"path": "M407.36,220.66l-2.58,0.03l-0.39,0.44l2.42,22.56l0.36,0.43l-0.39,1.24l-9.75,0.04l-0.56,0.53l-0.91,-0.11l-1.27,0.45l-1.61,-0.66l-0.97,0.03l-0.36,0.29l-0.38,1.35l-0.42,0.23l-2.93,-3.4l-2.96,-1.52l-1.62,-0.03l-1.27,0.54l-1.12,-0.2l-0.65,0.4l-0.08,-0.49l0.68,-1.29l0.31,-2.43l-0.57,-3.91l0.23,-1.21l-0.69,-1.5l-1.15,-1.02l0.25,-0.39l9.58,0.02l0.4,-0.45l-0.46,-3.68l0.47,-1.04l2.12,-0.21l0.36,-0.4l-0.08,-6.4l7.81,0.13l0.41,-0.4l0.01,-3.31l7.76,5.35Z", "name": "Mauritania"}, "UG": {"path": "M498.55,276.32l0.7,-0.46l1.65,0.5l1.96,-0.57l1.7,0.01l1.45,-0.98l0.91,1.33l1.33,3.95l-2.57,4.03l-1.46,-0.4l-2.54,0.91l-1.37,1.61l-0.01,0.81l-2.42,-0.01l-2.26,1.01l-0.17,-1.59l0.58,-1.04l0.14,-1.94l1.37,-2.28l1.78,-1.58l-0.17,-0.65l-0.72,-0.24l0.13,-2.43Z", "name": "Uganda"}, "MY": {"path": "M717.47,273.46l-1.39,0.65l-2.12,-0.41l-2.88,-0.0l-0.38,0.28l-0.84,2.75l-0.99,0.96l-1.21,3.29l-1.73,0.45l-2.45,-0.68l-1.39,0.31l-1.33,1.15l-1.59,-0.14l-1.41,0.44l-1.44,-1.19l-0.18,-0.73l1.34,0.53l1.93,-0.47l0.75,-2.22l4.02,-1.03l2.75,-3.21l0.82,0.94l0.64,-0.05l0.4,-0.65l0.96,0.06l0.42,-0.36l0.24,-2.68l1.81,-1.64l1.21,-1.86l0.63,-0.01l1.07,1.05l0.34,1.28l3.44,1.35l-0.06,0.35l-1.37,0.1l-0.35,0.54l0.32,0.88ZM673.68,269.59l0.17,1.09l0.47,0.33l1.65,-0.3l0.87,-0.94l1.61,1.52l0.98,1.56l-0.12,2.81l0.41,2.29l0.95,0.9l0.88,2.44l-1.27,0.12l-5.1,-3.67l-0.34,-1.29l-1.37,-1.59l-0.33,-1.97l-0.88,-1.4l0.25,-1.68l-0.46,-1.05l1.63,0.84Z", "name": "Malaysia"}, "MX": {"path": "M133.12,200.41l0.2,0.47l9.63,3.33l6.96,-0.02l0.4,-0.4l0.0,-0.74l3.77,0.0l3.55,2.93l1.39,2.83l1.52,1.04l2.08,0.82l0.47,-0.14l1.46,-2.0l1.73,-0.04l1.59,0.98l2.05,3.35l1.47,1.56l1.26,3.14l2.18,1.02l2.26,0.58l-1.18,3.72l-0.42,5.04l1.79,4.89l1.62,1.89l0.61,1.52l1.2,1.42l2.55,0.66l1.37,1.1l7.54,-1.89l1.86,-1.3l1.14,-4.3l4.1,-1.21l3.57,-0.11l0.32,0.3l-0.06,0.94l-1.26,1.45l-0.67,1.71l0.38,0.7l-0.72,2.27l-0.49,-0.3l-1.0,0.08l-1.0,1.39l-0.47,-0.11l-0.53,0.47l-4.26,-0.02l-0.4,0.4l-0.0,1.06l-1.1,0.26l0.1,0.44l1.82,1.44l0.56,0.91l-3.19,0.21l-1.21,2.09l0.24,0.72l-0.2,0.44l-2.24,-2.18l-1.45,-0.93l-2.22,-0.69l-1.52,0.22l-3.07,1.16l-10.55,-3.85l-2.86,-1.96l-3.78,-0.92l-1.08,-1.19l-2.62,-1.43l-1.18,-1.54l-0.38,-0.81l0.66,-0.63l-0.18,-0.53l0.52,-0.76l0.01,-0.91l-2.0,-3.82l-2.21,-2.63l-2.53,-2.09l-1.19,-1.62l-2.2,-1.17l-0.3,-0.43l0.34,-1.48l-0.21,-0.45l-1.23,-0.6l-1.36,-1.2l-0.59,-1.78l-1.54,-0.47l-2.44,-2.55l-0.16,-0.9l-1.33,-2.03l-0.84,-1.99l-0.16,-1.33l-1.81,-1.1l-0.97,0.05l-1.31,-0.7l-0.57,0.22l-0.4,1.12l0.72,3.77l3.51,3.89l0.28,0.78l0.53,0.26l0.41,1.43l1.33,1.73l1.58,1.41l0.8,2.39l1.43,2.41l0.13,1.32l0.37,0.36l1.04,0.08l1.67,2.28l-0.85,0.76l-0.66,-1.51l-1.68,-1.54l-2.91,-1.87l0.06,-1.82l-0.54,-1.68l-2.91,-2.03l-0.55,0.09l-1.95,-1.1l-0.88,-0.94l0.68,-0.08l0.93,-1.01l0.08,-1.78l-1.93,-1.94l-1.46,-0.77l-3.75,-7.56l4.88,-0.42Z", "name": "Mexico"}, "VU": {"path": "M839.04,322.8l0.22,1.14l-0.44,0.03l-0.2,-1.45l0.42,0.27Z", "name": "Vanuatu"}, "FR": {"path": "M444.48,172.62l-0.64,1.78l-0.58,-0.31l-0.49,-1.72l0.4,-0.89l1.0,-0.72l0.3,1.85ZM429.64,147.1l1.78,1.58l1.46,-0.13l2.1,1.42l1.35,0.27l1.23,0.83l3.04,0.5l-1.03,1.85l-0.3,2.12l-0.41,0.32l-0.95,-0.24l-0.5,0.43l0.06,0.61l-1.81,1.92l-0.04,1.42l0.55,0.38l0.88,-0.36l0.61,0.97l-0.03,1.0l0.57,0.91l-0.75,1.09l0.65,2.39l1.27,0.57l-0.18,0.82l-2.01,1.53l-4.77,-0.8l-3.82,1.0l-0.53,1.85l-2.49,0.34l-2.71,-1.31l-1.16,0.57l-4.31,-1.29l-0.72,-0.86l1.19,-1.78l0.39,-6.45l-2.58,-3.3l-1.9,-1.66l-3.72,-1.23l-0.19,-1.72l2.81,-0.61l4.12,0.81l0.47,-0.48l-0.6,-2.77l1.94,0.95l5.83,-2.54l0.92,-2.74l1.6,-0.49l0.24,0.78l1.36,0.33l1.05,1.19ZM289.01,278.39l-0.81,0.8l-0.78,0.12l-0.5,-0.66l-0.56,-0.1l-0.91,0.6l-0.46,-0.22l1.09,-2.96l-0.96,-1.77l-0.17,-1.49l1.07,-1.77l2.32,0.75l2.51,2.01l0.3,0.74l-2.14,3.96Z", "name": "France"}, "FI": {"path": "M492.17,76.39l-0.23,3.5l3.52,2.63l-2.08,2.88l-0.02,0.44l2.8,4.56l-1.59,3.31l2.16,3.24l-0.94,2.39l0.14,0.47l3.44,2.51l-0.77,1.62l-7.52,6.95l-4.5,0.31l-4.38,1.37l-3.8,0.74l-1.44,-1.96l-2.17,-1.11l0.5,-3.66l-1.16,-3.33l1.09,-2.08l2.21,-2.42l5.67,-4.32l1.64,-0.83l0.21,-0.42l-0.46,-2.02l-3.38,-1.89l-0.75,-1.43l-0.22,-6.74l-6.79,-4.8l0.8,-0.62l2.54,2.12l3.46,-0.12l3.0,0.96l2.51,-2.11l1.17,-3.08l3.55,-1.38l2.76,1.53l-0.95,2.79Z", "name": "Finland"}, "FJ": {"path": "M871.53,326.34l-2.8,1.05l-0.08,-0.23l2.97,-1.21l-0.1,0.39ZM867.58,329.25l0.43,0.37l-0.27,0.88l-1.24,0.28l-1.04,-0.24l-0.14,-0.66l0.63,-0.58l0.92,0.26l0.7,-0.31Z", "name": "Fiji"}, "FK": {"path": "M274.36,425.85l1.44,1.08l-0.47,0.73l-3.0,0.89l-0.96,-1.0l-0.52,-0.05l-1.83,1.29l-0.73,-0.88l2.46,-1.64l1.93,0.76l1.67,-1.19Z", "name": "Falkland Is."}, "NI": {"path": "M202.33,252.67l0.81,-0.18l1.03,-1.02l-0.04,-0.88l0.68,-0.0l0.63,-0.54l0.97,0.22l1.53,-1.26l0.58,-0.99l1.17,0.34l2.41,-0.94l0.13,1.32l-0.81,1.94l0.1,2.74l-0.36,0.37l-0.11,1.75l-0.47,0.81l0.18,1.14l-1.73,-0.85l-0.71,0.27l-1.47,-0.6l-0.52,0.16l-4.01,-3.81Z", "name": "Nicaragua"}, "NL": {"path": "M430.31,143.39l0.6,-0.5l2.13,-4.8l3.2,-1.33l1.74,0.08l0.33,0.8l-0.59,2.92l-0.5,0.99l-1.26,0.0l-0.4,0.45l0.33,2.7l-2.2,-1.78l-2.62,0.58l-0.75,-0.11Z", "name": "Netherlands"}, "NO": {"path": "M491.44,67.41l6.8,2.89l-2.29,0.86l-0.15,0.65l2.33,2.38l-4.98,1.79l0.84,-2.45l-0.18,-0.48l-3.55,-1.8l-3.89,1.52l-1.42,3.38l-2.12,1.72l-2.64,-1.0l-3.11,0.21l-2.66,-2.22l-0.5,-0.01l-1.41,1.1l-1.44,0.17l-0.35,0.35l-0.32,2.47l-4.32,-0.64l-0.44,0.29l-0.58,2.11l-2.45,0.2l-4.15,7.68l-3.88,5.76l0.78,1.62l-0.64,1.16l-2.24,-0.06l-0.38,0.24l-1.66,3.89l0.15,5.17l1.57,2.04l-0.78,4.16l-2.02,2.48l-0.85,1.63l-1.3,-1.75l-0.58,-0.07l-4.87,4.19l-3.1,0.79l-3.16,-1.7l-0.85,-3.77l-0.77,-8.55l2.14,-2.31l6.55,-3.27l5.02,-4.17l10.63,-13.84l10.98,-8.7l5.35,-1.91l4.34,0.12l3.69,-3.64l4.49,0.19l4.37,-0.89ZM484.55,20.04l4.26,1.75l-3.1,2.55l-7.1,0.65l-7.08,-0.9l-0.37,-1.31l-0.37,-0.29l-3.44,-0.1l-2.08,-2.0l6.87,-1.44l3.9,1.31l2.39,-1.64l6.13,1.4ZM481.69,33.93l-4.45,1.74l-3.54,-0.99l1.12,-0.9l0.05,-0.58l-1.06,-1.22l4.22,-0.89l1.09,1.97l2.57,0.87ZM466.44,24.04l7.43,3.77l-5.41,1.86l-1.58,4.08l-2.26,1.2l-1.12,4.11l-2.61,0.18l-4.79,-2.86l1.84,-1.54l-0.1,-0.68l-3.69,-1.53l-4.77,-4.51l-1.73,-3.89l6.11,-1.82l1.54,1.92l3.57,-0.08l1.2,-1.96l3.32,-0.18l3.05,1.92Z", "name": "Norway"}, "NA": {"path": "M474.26,330.66l-0.97,0.04l-0.38,0.4l-0.07,8.9l-2.09,0.08l-0.39,0.4l-0.0,17.42l-1.98,1.23l-1.17,0.17l-2.44,-0.66l-0.48,-1.13l-0.99,-0.74l-0.54,0.05l-0.9,1.01l-1.53,-1.68l-0.93,-1.88l-1.99,-8.56l-0.06,-3.12l-0.33,-1.52l-2.3,-3.34l-1.91,-4.83l-1.96,-2.43l-0.12,-1.57l2.33,-0.79l1.43,0.07l1.81,1.13l10.23,-0.25l1.84,1.23l5.87,0.35ZM474.66,330.64l6.51,-1.6l1.9,0.39l-1.69,0.4l-1.31,0.83l-1.12,-0.94l-4.29,0.92Z", "name": "Namibia"}, "NC": {"path": "M838.78,341.24l-0.33,0.22l-2.9,-1.75l-3.26,-3.37l1.65,0.83l4.85,4.07Z", "name": "New Caledonia"}, "NE": {"path": "M454.75,226.53l1.33,1.37l0.48,0.07l1.27,-0.7l0.53,3.52l0.94,0.83l0.17,0.92l0.81,0.69l-0.44,0.95l-0.96,5.26l-0.13,3.22l-3.04,2.31l-1.22,3.57l1.02,1.24l-0.0,1.46l0.39,0.4l1.13,0.04l-0.9,1.25l-1.47,-2.42l-0.86,-0.29l-2.09,1.37l-1.74,-0.67l-1.45,-0.17l-0.85,0.35l-1.36,-0.07l-1.64,1.09l-1.06,0.05l-2.94,-1.28l-1.44,0.59l-1.01,-0.03l-0.97,-0.94l-2.7,-0.98l-2.69,0.3l-0.87,0.64l-0.47,1.6l-0.75,1.16l-0.12,1.53l-1.57,-1.1l-1.31,0.24l0.03,-0.81l-0.32,-0.41l-2.59,-0.52l-0.15,-1.16l-1.35,-1.6l-0.29,-1.0l0.13,-0.84l1.29,-0.08l1.08,-0.92l3.31,-0.22l2.22,-0.41l0.32,-0.34l0.2,-1.47l1.39,-1.88l-0.01,-5.66l3.36,-1.12l7.24,-5.12l8.42,-4.92l3.69,1.06Z", "name": "Niger"}, "NG": {"path": "M456.32,253.89l0.64,0.65l-0.28,1.04l-2.11,2.01l-2.03,5.18l-1.37,1.16l-1.15,3.18l-1.33,0.66l-1.46,-0.97l-1.21,0.16l-1.38,1.36l-0.91,0.24l-1.79,4.06l-2.33,0.81l-1.11,-0.07l-0.86,0.5l-1.71,-0.05l-1.19,-1.39l-0.89,-1.89l-1.77,-1.66l-3.95,-0.08l0.07,-5.21l0.42,-1.43l1.95,-2.3l-0.14,-0.91l0.43,-1.18l-0.53,-1.41l0.25,-2.92l0.72,-1.07l0.32,-1.34l0.46,-0.39l2.47,-0.28l2.34,0.89l1.15,1.02l1.28,0.04l1.22,-0.58l3.03,1.27l1.49,-0.14l1.36,-1.0l1.33,0.07l0.82,-0.35l3.45,0.8l1.82,-1.32l1.84,2.67l0.66,0.16Z", "name": "Nigeria"}, "NZ": {"path": "M857.8,379.65l1.86,3.12l0.44,0.18l0.3,-0.38l0.03,-1.23l0.38,0.27l0.57,2.31l2.02,0.94l1.81,0.27l1.57,-1.06l0.7,0.18l-1.15,3.59l-1.98,0.11l-0.74,1.2l0.2,1.11l-2.42,3.98l-1.49,0.92l-1.04,-0.85l1.21,-2.05l-0.81,-2.01l-2.63,-1.25l0.04,-0.57l1.82,-1.19l0.43,-2.34l-0.16,-2.03l-0.95,-1.82l-0.06,-0.72l-3.11,-3.64l-0.79,-1.52l1.56,1.45l1.76,0.66l0.65,2.34ZM853.83,393.59l0.57,1.24l0.59,0.16l1.42,-0.97l0.46,0.79l0.0,1.03l-2.47,3.48l-1.26,1.2l-0.06,0.5l0.55,0.87l-1.41,0.07l-2.33,1.38l-2.03,5.02l-3.02,2.16l-2.06,-0.06l-1.71,-1.04l-2.47,-0.2l-0.27,-0.73l1.22,-2.1l3.05,-2.94l1.62,-0.59l4.02,-2.82l1.57,-1.67l1.07,-2.16l0.88,-0.7l0.48,-1.75l1.24,-0.97l0.35,0.79Z", "name": "New Zealand"}, "NP": {"path": "M641.14,213.62l0.01,3.19l-1.74,0.04l-4.8,-0.86l-1.58,-1.39l-3.37,-0.34l-7.65,-3.7l0.8,-2.09l2.33,-1.7l1.77,0.75l2.49,1.76l1.38,0.41l0.99,1.35l1.9,0.52l1.99,1.17l5.49,0.9Z", "name": "Nepal"}, "CI": {"path": "M407.4,259.27l0.86,0.42l0.56,0.9l1.13,0.53l1.19,-0.61l0.97,-0.08l1.42,0.54l0.6,3.24l-1.03,2.08l-0.65,2.84l1.06,2.33l-0.06,0.53l-2.54,-0.47l-1.66,0.03l-3.06,0.46l-4.11,1.6l0.32,-3.06l-1.18,-1.31l-1.32,-0.66l0.42,-0.85l-0.2,-1.4l0.5,-0.67l0.01,-1.59l0.84,-0.32l0.26,-0.5l-1.15,-3.01l0.12,-0.5l0.51,-0.25l0.66,0.31l1.93,0.02l0.67,-0.71l0.71,-0.14l0.25,0.69l0.57,0.22l1.4,-0.61Z", "name": "C\u00f4te d'Ivoire"}, "CH": {"path": "M444.62,156.35l-0.29,0.87l0.18,0.53l1.13,0.58l1.0,0.1l-0.1,0.65l-0.79,0.38l-1.72,-0.37l-0.45,0.23l-0.45,1.04l-0.75,0.06l-0.84,-0.4l-1.32,1.0l-0.96,0.12l-0.88,-0.55l-0.81,-1.3l-0.49,-0.16l-0.63,0.26l0.02,-0.65l1.71,-1.66l0.1,-0.56l0.93,0.08l0.58,-0.46l1.99,0.02l0.66,-0.61l2.19,0.79Z", "name": "Switzerland"}, "CO": {"path": "M242.07,254.93l-1.7,0.59l-0.59,1.18l-1.7,1.69l-0.38,1.93l-0.67,1.43l0.31,0.57l1.03,0.13l0.25,0.9l0.57,0.64l-0.04,2.34l1.64,1.42l3.16,-0.24l1.26,0.28l1.67,2.06l0.41,0.13l4.09,-0.39l0.45,0.22l-0.92,1.95l-0.2,1.8l0.52,1.83l0.75,1.05l-1.12,1.1l0.07,0.63l0.84,0.51l0.74,1.29l-0.39,-0.45l-0.59,-0.01l-0.71,0.74l-4.71,-0.05l-0.4,0.41l0.03,1.57l0.33,0.39l1.11,0.2l-1.68,0.4l-0.29,0.38l-0.01,1.82l1.16,1.14l0.34,1.25l-1.05,7.05l-1.04,-0.87l1.26,-1.99l-0.13,-0.56l-2.18,-1.23l-1.38,0.2l-1.14,-0.38l-1.27,0.61l-1.55,-0.26l-1.38,-2.46l-1.23,-0.75l-0.85,-1.2l-1.67,-1.19l-0.86,0.13l-2.11,-1.32l-1.01,0.31l-1.8,-0.29l-0.52,-0.91l-3.09,-1.68l0.77,-0.52l-0.1,-1.12l0.41,-0.64l1.34,-0.32l2.0,-2.88l-0.11,-0.57l-0.66,-0.43l0.39,-1.38l-0.52,-2.1l0.49,-0.83l-0.4,-2.13l-0.97,-1.35l0.17,-0.66l0.86,-0.08l0.47,-0.75l-0.46,-1.63l1.41,-0.07l1.8,-1.69l0.93,-0.24l0.3,-0.38l0.45,-2.76l1.22,-1.0l1.44,-0.04l0.45,-0.5l1.91,0.12l2.93,-1.84l1.15,-1.14l0.91,0.46l-0.25,0.45Z", "name": "Colombia"}, "CN": {"path": "M740.23,148.97l4.57,1.3l2.8,2.17l0.98,2.9l0.38,0.27l3.8,0.0l2.32,-1.28l3.29,-0.75l-0.96,2.09l-1.02,1.28l-0.85,3.4l-1.52,2.73l-2.76,-0.5l-2.4,1.13l-0.21,0.45l0.64,2.57l-0.32,3.2l-0.94,0.06l-0.37,0.89l-0.91,-1.01l-0.64,0.07l-0.92,1.57l-3.73,1.25l-0.26,0.48l0.26,1.06l-1.5,-0.08l-1.09,-0.86l-0.56,0.06l-1.67,2.06l-2.7,1.56l-2.03,1.88l-3.4,0.83l-1.93,1.4l-1.15,0.34l0.33,-0.7l-0.41,-0.89l1.79,-1.79l0.02,-0.54l-1.32,-1.56l-0.48,-0.1l-2.24,1.09l-2.83,2.06l-1.51,1.83l-2.28,0.13l-1.55,1.49l-0.04,0.5l1.32,1.97l2.0,0.58l0.31,1.35l1.98,0.84l3.0,-1.96l2.0,1.02l1.49,0.11l0.22,0.83l-3.37,0.86l-1.12,1.48l-2.5,1.52l-1.29,1.99l0.14,0.56l2.57,1.48l0.97,2.7l3.17,4.63l-0.03,1.66l-1.35,0.65l-0.2,0.51l0.6,1.47l1.4,0.91l-0.89,3.82l-1.43,0.38l-3.85,6.44l-2.27,3.11l-6.78,4.57l-2.73,0.29l-1.45,1.04l-0.62,-0.61l-0.55,-0.01l-1.36,1.25l-3.39,1.27l-2.61,0.4l-1.1,2.79l-0.81,0.09l-0.49,-1.42l0.5,-0.85l-0.25,-0.59l-3.36,-0.84l-1.3,0.4l-2.31,-0.62l-0.94,-0.84l0.33,-1.28l-0.3,-0.49l-2.19,-0.46l-1.13,-0.93l-0.47,-0.02l-2.06,1.36l-4.29,0.28l-2.76,1.05l-0.28,0.43l0.32,2.53l-0.59,-0.03l-0.19,-1.34l-0.55,-0.34l-1.68,0.7l-2.46,-1.23l0.62,-1.87l-0.26,-0.51l-1.37,-0.44l-0.54,-2.22l-0.45,-0.3l-2.13,0.35l0.24,-2.48l2.39,-2.4l0.03,-4.31l-1.19,-0.92l-0.78,-1.49l-0.41,-0.21l-1.41,0.19l-1.98,-0.3l0.46,-1.07l-1.17,-1.7l-0.55,-0.11l-1.63,1.05l-2.25,-0.57l-2.89,1.73l-2.25,1.98l-1.75,0.29l-1.17,-0.71l-3.31,-0.65l-1.48,0.79l-1.04,1.27l-0.12,-1.17l-0.54,-0.34l-1.44,0.54l-5.55,-0.86l-1.98,-1.16l-1.89,-0.54l-0.99,-1.35l-1.34,-0.37l-2.55,-1.79l-2.01,-0.84l-1.21,0.56l-5.57,-3.45l-0.53,-2.31l1.19,0.25l0.48,-0.37l0.08,-1.42l-0.98,-1.56l0.15,-2.44l-2.69,-3.32l-4.12,-1.23l-0.67,-2.0l-1.92,-1.48l-0.38,-0.7l-0.51,-3.01l-1.52,-0.66l-0.7,0.13l-0.48,-2.05l0.55,-0.51l-0.09,-0.82l2.03,-1.19l1.6,-0.54l2.56,0.38l0.42,-0.22l0.85,-1.7l3.0,-0.33l1.1,-1.26l4.05,-1.77l0.39,-0.91l-0.17,-1.44l1.45,-0.67l0.2,-0.52l-2.07,-4.9l4.51,-1.12l1.37,-0.73l1.89,-5.51l4.98,0.86l1.51,-1.7l0.11,-2.87l1.99,-0.38l1.83,-2.06l0.49,-0.13l0.68,2.08l2.23,1.77l3.44,1.16l1.55,2.29l-0.92,3.49l0.96,1.67l6.54,1.13l2.95,1.87l1.47,0.35l1.06,2.62l1.53,1.91l3.05,0.08l5.14,0.67l3.37,-0.41l2.36,0.43l3.65,1.8l3.06,0.04l1.45,0.88l2.87,-1.59l3.95,-1.02l3.83,-0.14l3.06,-1.14l1.77,-1.6l1.72,-1.01l0.17,-0.49l-1.1,-2.05l1.02,-1.54l4.02,0.8l2.45,-1.61l3.76,-1.19l1.96,-2.13l1.63,-0.83l3.51,-0.4l1.92,0.34l0.46,-0.3l0.17,-1.5l-2.27,-2.22l-2.11,-1.09l-2.18,1.11l-2.32,-0.47l-1.29,0.32l-0.4,-0.82l2.73,-5.16l3.02,1.06l3.53,-2.06l0.18,-1.68l2.16,-3.35l1.49,-1.35l-0.03,-1.85l-1.07,-0.85l1.54,-1.26l2.98,-0.59l3.23,-0.09l3.64,0.99l2.04,1.16l3.29,6.71l0.92,3.19ZM696.92,237.31l-1.87,1.08l-1.63,-0.64l-0.06,-1.79l1.03,-0.98l2.58,-0.69l1.16,0.05l0.3,0.54l-0.98,1.06l-0.53,1.37Z", "name": "China"}, "CM": {"path": "M457.92,257.49l1.05,1.91l-1.4,0.16l-1.05,-0.23l-0.45,0.22l-0.54,1.19l0.08,0.45l1.48,1.47l1.05,0.45l1.01,2.46l-1.52,2.99l-0.68,0.68l-0.13,3.69l2.38,3.84l1.09,0.8l0.24,2.48l-3.67,-1.14l-11.27,-0.13l0.23,-1.79l-0.98,-1.66l-1.19,-0.54l-0.44,-0.97l-0.6,-0.42l1.71,-4.27l0.75,-0.13l1.38,-1.36l0.65,-0.03l1.71,0.99l1.93,-1.12l1.14,-3.18l1.38,-1.17l2.0,-5.14l2.17,-2.13l0.3,-1.64l-0.86,-0.88l0.03,-0.33l0.94,1.28l0.07,3.22Z", "name": "Cameroon"}, "CL": {"path": "M246.5,429.18l-3.14,1.83l-0.57,3.16l-0.64,0.05l-2.68,-1.06l-2.82,-2.33l-3.04,-1.89l-0.69,-1.85l0.63,-2.14l-1.21,-2.11l-0.31,-5.37l1.01,-2.91l2.57,-2.38l-0.18,-0.68l-3.16,-0.77l2.05,-2.47l0.77,-4.65l2.32,0.9l0.54,-0.29l1.31,-6.31l-0.22,-0.44l-1.68,-0.8l-0.56,0.28l-0.7,3.36l-0.81,-0.22l1.56,-9.41l1.15,-2.24l-0.71,-2.82l-0.18,-2.84l1.01,-0.33l3.26,-9.14l1.07,-4.22l-0.56,-4.21l0.74,-2.34l-0.29,-3.27l1.46,-3.34l2.04,-16.59l-0.66,-7.76l1.03,-0.53l0.54,-0.9l0.79,1.14l0.32,1.78l1.25,1.16l-0.69,2.55l1.33,2.9l0.97,3.59l0.46,0.29l1.5,-0.3l0.11,0.23l-0.76,2.44l-2.57,1.23l-0.23,0.37l0.08,4.33l-0.46,0.77l0.56,1.21l-1.58,1.51l-1.68,2.62l-0.89,2.47l0.2,2.7l-1.48,2.73l1.12,5.09l0.64,0.61l-0.01,2.29l-1.38,2.68l0.01,2.4l-1.89,2.04l0.02,2.75l0.69,2.57l-1.43,1.13l-1.26,5.68l0.39,3.51l-0.97,0.89l0.58,3.5l1.02,1.14l-0.65,1.02l0.15,0.57l1.0,0.53l0.16,0.69l-1.03,0.85l0.26,1.75l-0.89,4.03l-1.31,2.66l0.24,1.75l-0.71,1.83l-1.99,1.7l0.3,3.67l0.88,1.19l1.58,0.01l0.01,2.21l1.04,1.95l5.98,0.63ZM248.69,430.79l0.0,7.33l0.4,0.4l3.52,0.05l-0.44,0.75l-1.94,0.98l-2.49,-0.37l-1.88,-1.06l-2.55,-0.49l-5.59,-3.71l-2.38,-2.63l4.1,2.48l3.32,1.23l0.45,-0.12l1.29,-1.57l0.83,-2.32l2.05,-1.24l1.31,0.29Z", "name": "Chile"}, "CA": {"path": "M280.06,145.6l-1.67,2.88l0.07,0.49l0.5,0.04l1.46,-0.98l1.0,0.42l-0.56,0.72l0.17,0.62l2.22,0.89l1.35,-0.71l1.95,0.78l-0.66,2.01l0.5,0.51l1.32,-0.42l0.98,3.17l-0.91,2.41l-0.8,0.08l-1.23,-0.45l0.47,-2.25l-0.89,-0.83l-0.48,0.06l-2.78,2.63l-0.34,-0.02l1.02,-0.85l-0.14,-0.69l-2.4,-0.77l-7.4,0.08l-0.17,-0.41l1.3,-0.94l0.02,-0.64l-0.73,-0.58l1.85,-1.74l2.57,-5.16l1.47,-1.79l1.99,-1.05l0.46,0.06l-1.53,2.45ZM68.32,74.16l4.13,0.95l4.02,2.14l2.61,0.4l2.47,-1.89l2.88,-1.31l3.85,0.48l3.71,-1.94l3.82,-1.04l1.56,1.68l0.49,0.08l1.87,-1.04l0.65,-1.98l1.24,0.35l4.16,3.94l0.54,0.01l2.75,-2.49l0.26,2.59l0.49,0.35l3.08,-0.73l1.04,-1.27l2.73,0.23l3.83,1.86l5.86,1.61l3.47,0.75l2.44,-0.26l2.73,1.78l-2.98,1.81l-0.19,0.41l0.31,0.32l4.53,0.92l6.87,-0.5l2.0,-0.69l2.49,2.39l0.53,0.02l2.72,-2.16l-0.02,-0.64l-2.16,-1.54l1.15,-1.06l4.83,-0.61l1.84,0.95l2.48,2.31l3.01,-0.23l4.55,1.92l3.85,-0.67l3.61,0.1l0.41,-0.44l-0.25,-2.36l1.79,-0.61l3.49,1.32l-0.01,3.77l0.31,0.39l0.45,-0.22l1.48,-3.16l1.74,0.1l0.41,-0.3l1.13,-4.37l-2.78,-3.11l-2.8,-1.74l0.19,-4.64l2.71,-3.07l2.98,0.67l2.41,1.95l3.19,4.8l-1.99,1.97l0.21,0.68l4.33,0.84l-0.01,4.15l0.25,0.37l0.44,-0.09l3.07,-3.15l2.54,2.39l-0.61,3.33l2.42,2.88l0.61,0.0l2.61,-3.08l1.88,-3.82l0.17,-4.58l6.72,0.94l3.13,2.04l0.13,1.82l-1.76,2.19l-0.01,0.49l1.66,2.16l-0.26,1.71l-4.68,2.8l-3.28,0.61l-2.47,-1.2l-0.55,0.23l-0.73,2.04l-2.38,3.43l-0.74,1.77l-2.74,2.57l-3.44,0.25l-2.21,1.78l-0.28,2.53l-2.82,0.55l-3.12,3.22l-2.72,4.31l-1.03,3.17l-0.14,4.31l0.33,0.41l3.44,0.57l2.24,5.95l0.45,0.23l3.4,-0.69l4.52,1.51l2.43,1.31l1.91,1.73l3.1,0.96l2.62,1.46l6.6,0.54l-0.35,2.74l0.81,3.53l1.81,3.78l3.83,3.3l0.45,0.04l2.1,-1.28l1.37,-3.69l-1.31,-5.38l-1.45,-1.58l3.57,-1.47l2.84,-2.46l1.52,-2.8l-0.25,-2.55l-1.7,-3.07l-2.85,-2.61l2.8,-3.95l-1.08,-3.37l-0.79,-5.67l1.36,-0.7l6.76,1.41l2.12,-0.96l5.12,3.36l1.05,1.61l4.08,0.26l-0.06,2.87l0.83,4.7l0.3,0.32l2.16,0.54l1.73,2.06l0.5,0.09l3.63,-2.03l2.52,-4.19l1.26,-1.32l7.6,11.72l-0.92,2.04l0.16,0.51l3.3,1.97l2.22,1.98l4.1,0.98l1.43,0.99l0.95,2.79l2.1,0.68l0.84,1.08l0.17,3.45l-3.37,2.26l-4.22,1.24l-3.06,2.63l-4.06,0.51l-5.35,-0.69l-6.39,0.2l-2.3,2.41l-3.26,1.51l-6.47,7.15l-0.06,0.48l0.44,0.19l2.13,-0.52l4.17,-4.24l5.12,-2.62l3.52,-0.3l1.69,1.21l-2.12,2.21l0.81,3.47l1.02,2.61l3.47,1.6l4.14,-0.45l2.15,-2.8l0.26,1.48l1.14,0.8l-2.56,1.69l-5.5,1.82l-2.54,1.27l-2.74,2.15l-1.4,-0.16l-0.07,-2.01l4.14,-2.44l0.18,-0.45l-0.39,-0.29l-6.63,0.45l-1.39,-1.49l-0.14,-4.43l-1.11,-0.91l-1.82,0.39l-0.66,-0.66l-0.6,0.03l-1.91,2.39l-0.82,2.52l-0.8,1.27l-1.67,0.56l-0.46,0.76l-8.31,0.07l-1.21,0.62l-2.35,1.97l-0.71,-0.14l-1.37,0.96l-1.12,-0.48l-4.74,1.26l-0.9,1.17l0.21,0.62l1.73,0.3l-1.81,0.31l-1.85,0.81l-2.11,-0.13l-2.95,1.78l-0.69,-0.09l1.39,-2.1l1.73,-1.21l0.1,-2.29l1.16,-1.99l0.49,0.53l2.03,0.42l1.2,-1.16l0.02,-0.47l-2.66,-3.51l-2.28,-0.61l-5.64,-0.71l-0.4,-0.57l-0.79,0.13l0.2,-0.41l-0.22,-0.55l-0.68,-0.26l0.19,-1.26l-0.78,-0.73l0.31,-0.64l-0.29,-0.57l-2.6,-0.44l-0.75,-1.63l-0.94,-0.66l-4.31,-0.65l-1.13,1.19l-1.48,0.59l-0.85,1.06l-2.83,-0.76l-2.09,0.39l-2.39,-0.97l-4.24,-0.7l-0.57,-0.4l-0.41,-1.63l-0.4,-0.3l-0.85,0.02l-0.39,0.4l-0.01,0.85l-69.13,-0.01l-6.51,-4.52l-4.5,-1.38l-1.26,-2.66l0.33,-1.93l-0.23,-0.43l-3.01,-1.35l-0.55,-2.77l-2.89,-2.38l-0.04,-1.45l1.39,-1.83l-0.28,-2.55l-4.16,-2.2l-4.07,-6.6l-4.02,-3.22l-1.3,-1.88l-0.5,-0.13l-2.51,1.21l-2.23,1.87l-3.85,-3.88l-2.44,-1.04l-2.22,-0.13l0.03,-37.49ZM260.37,148.65l3.04,0.76l2.26,1.2l-3.78,-0.95l-1.53,-1.01ZM249.4,3.81l6.68,0.49l5.32,0.79l4.26,1.57l-0.07,1.1l-5.85,2.53l-6.02,1.21l-2.39,1.39l-0.18,0.45l0.39,0.29l4.01,-0.02l-4.65,2.82l-4.2,1.74l-4.19,4.59l-5.03,0.92l-1.67,1.15l-7.47,0.59l-0.37,0.37l0.32,0.42l2.41,0.49l-0.81,0.47l-0.12,0.59l1.83,2.41l-2.02,1.59l-3.81,1.51l-1.32,2.16l-3.38,1.53l-0.22,0.48l0.35,1.19l0.4,0.29l3.88,-0.18l0.03,0.61l-6.33,2.95l-6.41,-1.4l-7.43,0.79l-3.72,-0.62l-4.4,-0.25l-0.23,-1.83l4.29,-1.11l0.28,-0.51l-1.1,-3.45l1.0,-0.25l6.58,2.28l0.47,-0.16l-0.05,-0.49l-3.41,-3.45l-3.58,-0.98l1.48,-1.55l4.34,-1.29l0.97,-2.19l-0.16,-0.48l-3.42,-2.13l-0.81,-2.26l6.2,0.22l2.24,0.58l3.91,-2.1l0.2,-0.43l-0.35,-0.32l-5.64,-0.67l-8.73,0.36l-4.26,-1.9l-2.12,-2.4l-2.78,-1.66l-0.41,-1.52l3.31,-1.03l2.93,-0.2l4.91,-0.99l3.7,-2.27l2.87,0.3l2.62,1.67l0.56,-0.14l1.82,-3.2l3.13,-0.94l4.44,-0.69l7.53,-0.26l1.48,0.67l7.19,-1.06l10.8,0.79ZM203.85,57.54l0.01,0.42l1.97,2.97l0.68,-0.02l2.24,-3.72l5.95,-1.86l4.01,4.64l-0.35,2.91l0.5,0.43l4.95,-1.36l2.32,-1.8l5.31,2.28l3.27,2.11l0.3,1.84l0.48,0.33l4.42,-0.99l2.64,2.87l5.97,1.77l2.06,1.72l2.11,3.71l-4.19,1.86l-0.01,0.73l5.9,2.83l3.94,0.94l3.78,3.95l3.46,0.25l-0.63,2.37l-4.11,4.47l-2.76,-1.56l-3.9,-3.94l-3.59,0.41l-0.33,0.34l-0.19,2.72l2.63,2.38l3.42,1.89l0.94,0.97l1.55,3.75l-0.7,2.29l-2.74,-0.92l-6.25,-3.15l-0.51,0.13l0.05,0.52l6.07,5.69l0.18,0.59l-6.09,-1.39l-5.31,-2.24l-2.63,-1.66l0.6,-0.77l-0.12,-0.6l-7.39,-4.01l-0.59,0.37l0.03,0.79l-6.73,0.6l-1.69,-1.1l1.36,-2.46l4.51,-0.07l5.15,-0.52l0.31,-0.6l-0.74,-1.3l0.78,-1.84l3.21,-4.05l-0.67,-2.35l-1.11,-1.6l-3.84,-2.1l-4.35,-1.28l0.91,-0.63l0.06,-0.61l-2.65,-2.75l-2.34,-0.36l-1.89,-1.46l-0.53,0.03l-1.24,1.23l-4.36,0.55l-9.04,-0.99l-9.26,-1.98l-1.6,-1.22l2.22,-1.77l0.13,-0.44l-0.38,-0.27l-3.22,-0.02l-0.72,-4.25l1.83,-4.04l2.42,-1.85l5.5,-1.1l-1.39,2.35ZM261.19,159.33l2.07,0.61l1.44,-0.04l-1.15,0.63l-2.94,-1.23l-0.4,-0.68l0.36,-0.37l0.61,1.07ZM230.83,84.39l-2.37,0.18l-0.49,-1.63l0.93,-2.09l1.94,-0.51l1.62,0.99l0.02,1.52l-1.66,1.54ZM229.43,58.25l0.11,0.65l-4.87,-0.21l-2.72,0.62l-3.1,-2.57l0.08,-1.26l0.86,-0.23l5.57,0.51l4.08,2.5ZM222.0,105.02l-0.72,1.49l-0.63,-0.19l-0.48,-0.84l0.81,-0.99l0.65,0.05l0.37,0.46ZM183.74,38.32l2.9,1.7l4.79,-0.01l1.84,1.46l-0.49,1.68l0.23,0.48l2.82,1.14l1.76,1.26l7.01,0.65l4.1,-1.1l5.03,-0.43l3.93,0.35l2.48,1.77l0.46,1.7l-1.3,1.1l-3.56,1.01l-3.23,-0.59l-7.17,0.76l-5.09,0.09l-3.99,-0.6l-6.42,-1.54l-0.79,-2.51l-0.3,-2.49l-2.64,-2.5l-5.32,-0.72l-2.52,-1.4l0.68,-1.57l4.78,0.31ZM207.38,91.35l0.4,1.56l0.56,0.26l1.06,-0.52l1.32,0.96l5.42,2.57l0.2,1.68l0.46,0.35l1.68,-0.28l1.15,0.85l-1.55,0.87l-3.61,-0.88l-1.32,-1.69l-0.57,-0.06l-2.45,2.1l-3.12,1.79l-0.7,-1.87l-0.42,-0.26l-2.16,0.24l1.39,-1.39l0.32,-3.14l0.76,-3.35l1.18,0.22ZM215.49,102.6l-2.67,1.95l-1.4,-0.07l-0.3,-0.58l1.53,-1.48l2.84,0.18ZM202.7,24.12l2.53,1.59l-2.87,1.4l-4.53,4.05l-4.25,0.38l-5.03,-0.68l-2.45,-2.04l0.03,-1.62l1.82,-1.37l0.14,-0.45l-0.38,-0.27l-4.45,0.04l-2.59,-1.76l-1.41,-2.29l1.57,-2.32l1.62,-1.66l2.44,-0.39l0.25,-0.65l-0.6,-0.74l4.86,-0.25l3.24,3.11l8.16,2.3l1.9,3.61ZM187.47,59.2l-2.76,3.49l-2.38,-0.15l-1.44,-3.84l0.04,-2.2l1.19,-1.88l2.3,-1.23l5.07,0.17l4.11,1.02l-3.24,3.72l-2.88,0.89ZM186.07,48.79l-1.08,1.53l-3.34,-0.34l-2.56,-1.1l1.03,-1.75l3.25,-1.23l1.95,1.58l0.75,1.3ZM185.71,35.32l-5.3,-0.2l-0.32,-0.71l4.31,0.07l1.3,0.84ZM180.68,32.48l-3.34,1.0l-1.79,-1.1l-0.98,-1.87l-0.15,-1.73l4.1,0.53l2.67,1.7l-0.51,1.47ZM180.9,76.31l-1.1,1.08l-3.13,-1.23l-2.12,0.43l-2.71,-1.57l1.72,-1.09l1.55,-1.72l3.81,1.9l1.98,2.2ZM169.74,54.87l2.96,0.97l4.17,-0.57l0.41,0.88l-2.14,2.11l0.09,0.64l3.55,1.92l-0.4,3.72l-3.79,1.65l-2.17,-0.35l-1.72,-1.74l-6.02,-3.5l0.03,-0.85l4.68,0.54l0.4,-0.21l-0.05,-0.45l-2.48,-2.81l2.46,-1.95ZM174.45,40.74l1.37,1.73l0.07,2.44l-1.05,3.45l-3.79,0.47l-2.32,-0.69l0.05,-2.64l-0.44,-0.41l-3.68,0.35l-0.12,-3.1l2.45,0.1l3.67,-1.73l3.41,0.29l0.37,-0.26ZM170.05,31.55l0.67,1.56l-3.33,-0.49l-4.22,-1.77l-4.35,-0.16l1.4,-0.94l-0.06,-0.7l-2.81,-1.23l-0.12,-1.39l4.39,0.68l6.62,1.98l1.81,2.47ZM134.5,58.13l-1.02,1.82l0.45,0.58l5.4,-1.39l3.33,2.29l0.49,-0.03l2.6,-2.23l1.94,1.32l2.0,4.5l0.7,0.06l1.3,-2.29l-1.63,-4.46l1.69,-0.54l2.31,0.71l2.65,1.81l2.49,7.92l8.48,4.27l-0.19,1.35l-3.79,0.33l-0.26,0.67l1.4,1.49l-0.58,1.1l-4.23,-0.64l-4.43,-1.19l-3.0,0.28l-4.66,1.47l-10.52,1.04l-1.43,-2.02l-3.42,-1.2l-2.21,0.43l-2.51,-2.86l4.84,-1.05l3.6,0.19l3.27,-0.78l0.31,-0.39l-0.31,-0.39l-4.84,-1.06l-8.79,0.27l-0.85,-1.07l5.26,-1.66l0.27,-0.45l-0.4,-0.34l-3.8,0.06l-3.81,-1.06l1.81,-3.01l1.66,-1.79l6.48,-2.81l1.97,0.71ZM158.7,56.61l-1.7,2.44l-3.2,-2.75l0.37,-0.3l3.11,-0.18l1.42,0.79ZM149.61,42.73l1.01,1.89l0.5,0.18l2.14,-0.82l2.23,0.19l0.36,2.04l-1.33,2.09l-8.28,0.76l-6.35,2.15l-3.41,0.1l-0.19,-0.96l4.9,-2.08l0.23,-0.46l-0.41,-0.31l-11.25,0.59l-2.89,-0.74l3.04,-4.44l2.14,-1.32l6.81,1.69l4.58,3.06l4.37,0.39l0.36,-0.63l-3.36,-4.6l1.85,-1.53l2.18,0.51l0.77,2.26ZM144.76,34.41l-4.36,1.44l-3.0,-1.4l1.46,-1.24l3.47,-0.52l2.96,0.71l-0.52,1.01ZM145.13,29.83l-1.9,0.66l-3.67,-0.0l2.27,-1.61l3.3,0.95ZM118.92,65.79l-6.03,2.02l-1.33,-1.9l-5.38,-2.28l2.59,-5.05l2.16,-3.14l-0.02,-0.48l-1.97,-2.41l7.64,-0.7l3.6,1.02l6.3,0.27l4.42,2.95l-2.53,0.98l-6.24,3.43l-3.1,3.28l-0.11,2.01ZM129.54,35.53l-0.28,3.37l-1.72,1.62l-2.33,0.28l-4.61,2.19l-3.86,0.76l-2.64,-0.87l3.72,-3.4l5.01,-3.34l3.72,0.07l3.0,-0.67ZM111.09,152.69l-0.67,0.24l-3.85,-1.37l-0.83,-1.17l-2.12,-1.07l-0.66,-1.02l-2.4,-0.55l-0.74,-1.71l6.02,1.45l2.0,2.55l2.52,1.39l0.73,1.27ZM87.8,134.64l0.89,0.29l1.86,-0.21l-0.65,3.34l1.69,2.33l-1.31,-1.33l-0.99,-1.62l-1.17,-0.98l-0.33,-1.82Z", "name": "Canada"}, "CG": {"path": "M466.72,276.48l-0.1,1.03l-1.25,2.97l-0.19,3.62l-0.46,1.78l-0.23,0.63l-1.61,1.19l-1.21,1.39l-1.09,2.43l0.04,2.09l-3.25,3.24l-0.5,-0.24l-0.5,-0.83l-1.36,-0.02l-0.98,0.89l-1.68,-0.99l-1.54,1.24l-1.52,-1.96l1.57,-1.14l0.11,-0.52l-0.77,-1.35l2.1,-0.66l0.39,-0.73l1.05,0.82l2.21,0.11l1.12,-1.37l0.37,-1.81l-0.27,-2.09l-1.13,-1.5l1.0,-2.69l-0.13,-0.45l-0.92,-0.58l-1.6,0.17l-0.51,-0.94l0.1,-0.61l2.75,0.09l3.97,1.24l0.51,-0.33l0.17,-1.28l1.24,-2.21l1.28,-1.14l2.76,0.49Z", "name": "Congo"}, "CF": {"path": "M461.16,278.2l-0.26,-1.19l-1.09,-0.77l-0.84,-1.17l-0.29,-1.0l-1.04,-1.15l0.08,-3.43l0.58,-0.49l1.16,-2.35l1.85,-0.17l0.61,-0.62l0.97,0.58l3.15,-0.96l2.48,-1.92l0.02,-0.96l2.81,0.02l2.36,-1.17l1.93,-2.85l1.16,-0.93l1.11,-0.3l0.27,0.86l1.34,1.47l-0.39,2.01l0.3,1.01l4.01,2.75l0.17,0.93l2.63,2.31l0.6,1.44l2.08,1.4l-3.84,-0.21l-1.94,0.88l-1.23,-0.49l-2.67,1.2l-1.29,-0.18l-0.51,0.36l-0.6,1.22l-3.35,-0.65l-1.57,-0.91l-2.42,-0.83l-1.45,0.91l-0.97,1.27l-0.26,1.56l-3.22,-0.43l-1.49,1.33l-0.94,1.62Z", "name": "Central African Rep."}, "CD": {"path": "M487.01,272.38l2.34,-0.14l1.35,1.84l1.34,0.45l0.86,-0.39l1.21,0.12l1.07,-0.41l0.54,0.89l2.04,1.54l-0.14,2.72l0.7,0.54l-1.38,1.13l-1.53,2.54l-0.17,2.05l-0.59,1.08l-0.02,1.72l-0.72,0.84l-0.66,3.01l0.63,1.32l-0.44,4.26l0.64,1.47l-0.37,1.22l0.86,1.8l1.53,1.41l0.3,1.26l0.44,0.5l-4.08,0.75l-0.92,1.81l0.51,1.34l-0.74,5.43l0.17,0.38l2.45,1.46l0.54,-0.1l0.12,1.62l-1.28,-0.01l-1.85,-2.35l-1.94,-0.45l-0.48,-1.13l-0.55,-0.2l-1.41,0.74l-1.71,-0.3l-1.01,-1.18l-2.49,-0.19l-0.44,-0.77l-1.98,-0.21l-2.88,0.36l0.11,-2.41l-0.85,-1.13l-0.16,-1.36l0.32,-1.73l-0.46,-0.89l-0.04,-1.49l-0.4,-0.39l-2.53,0.02l0.1,-0.41l-0.39,-0.49l-1.28,0.01l-0.43,0.45l-1.62,0.32l-0.83,1.79l-1.09,-0.28l-2.4,0.52l-1.37,-1.91l-1.3,-3.3l-0.38,-0.27l-7.39,-0.03l-2.46,0.42l0.5,-0.45l0.37,-1.47l0.66,-0.38l0.92,0.08l0.73,-0.82l0.87,0.02l0.31,0.68l1.4,0.36l3.59,-3.63l0.01,-2.23l1.02,-2.29l2.69,-2.39l0.43,-0.99l0.49,-1.96l0.17,-3.51l1.25,-2.95l0.36,-3.14l0.86,-1.13l1.1,-0.66l3.57,1.73l3.65,0.73l0.46,-0.21l0.8,-1.46l1.24,0.19l2.61,-1.17l0.81,0.44l1.04,-0.03l0.59,-0.66l0.7,-0.16l1.81,0.25Z", "name": "Dem. Rep. Congo"}, "CZ": {"path": "M458.46,144.88l1.22,1.01l1.47,0.23l0.13,0.93l1.36,0.68l0.54,-0.2l0.24,-0.55l1.15,0.25l0.53,1.09l1.68,0.18l0.6,0.84l-1.04,0.73l-0.96,1.28l-1.6,0.17l-0.55,0.56l-1.04,-0.46l-1.05,0.15l-2.12,-0.96l-1.05,0.34l-1.2,1.12l-1.56,-0.87l-2.57,-2.1l-0.53,-1.88l4.7,-2.52l0.71,0.26l0.9,-0.28Z", "name": "Czech Rep."}, "CY": {"path": "M504.36,193.47l0.43,0.28l-1.28,0.57l-0.92,-0.28l-0.24,-0.46l2.01,-0.13Z", "name": "Cyprus"}, "CR": {"path": "M211.34,258.05l0.48,0.99l1.6,1.6l-0.54,0.45l0.29,1.42l-0.25,1.19l-1.09,-0.59l-0.05,-1.25l-2.46,-1.42l-0.28,-0.77l-0.66,-0.45l-0.45,-0.0l-0.11,1.04l-1.32,-0.95l0.31,-1.3l-0.36,-0.6l0.31,-0.27l1.42,0.58l1.29,-0.14l0.56,0.56l0.74,0.17l0.55,-0.27Z", "name": "Costa Rica"}, "CU": {"path": "M221.21,227.25l1.27,1.02l2.19,-0.28l4.43,3.33l2.08,0.43l-0.1,0.38l0.36,0.5l1.75,0.1l1.48,0.84l-3.11,0.51l-4.15,-0.03l0.77,-0.67l-0.04,-0.64l-1.2,-0.74l-1.49,-0.16l-0.7,-0.61l-0.56,-1.4l-0.4,-0.25l-1.34,0.1l-2.2,-0.66l-0.88,-0.58l-3.18,-0.4l-0.27,-0.16l0.58,-0.74l-0.36,-0.29l-2.72,-0.05l-1.7,1.29l-0.91,0.03l-0.61,0.69l-1.01,0.22l1.11,-1.29l1.01,-0.52l3.69,-1.01l3.98,0.21l2.21,0.84Z", "name": "Cuba"}, "SZ": {"path": "M500.35,351.36l0.5,2.04l-0.38,0.89l-1.05,0.21l-1.23,-1.2l-0.02,-0.64l0.83,-1.57l1.34,0.27Z", "name": "Swaziland"}, "SY": {"path": "M511.0,199.79l0.05,-1.33l0.54,-1.36l1.28,-0.99l0.13,-0.45l-0.41,-1.11l-1.14,-0.36l-0.19,-1.74l0.52,-1.0l1.29,-1.21l0.2,-1.18l0.59,0.23l2.62,-0.76l1.36,0.52l2.06,-0.01l2.95,-1.08l3.25,-0.26l-0.67,0.94l-1.28,0.66l-0.21,0.4l0.23,2.01l-0.88,3.19l-10.15,5.73l-2.15,-0.85Z", "name": "Syria"}, "KG": {"path": "M621.35,172.32l-3.87,1.69l-0.96,1.18l-3.04,0.34l-1.13,1.86l-2.36,-0.35l-1.99,0.63l-2.39,1.4l0.06,0.95l-0.4,0.37l-4.52,0.43l-3.02,-0.93l-2.37,0.17l0.11,-0.79l2.32,0.42l1.13,-0.88l1.99,0.2l3.21,-2.14l-0.03,-0.69l-2.97,-1.57l-1.94,0.65l-1.22,-0.74l1.71,-1.58l-0.12,-0.67l-0.36,-0.15l0.32,-0.77l1.36,-0.35l4.02,1.02l0.49,-0.3l0.35,-1.59l1.09,-0.48l3.42,1.22l1.11,-0.31l7.64,0.39l1.16,1.0l1.23,0.39Z", "name": "Kyrgyzstan"}, "KE": {"path": "M506.26,284.69l1.87,-2.56l0.93,-2.15l-1.38,-4.08l-1.06,-1.6l2.82,-2.75l0.79,0.26l0.12,1.41l0.86,0.83l1.9,0.11l3.28,2.13l3.57,0.44l1.05,-1.12l1.96,-0.9l0.82,0.68l1.16,0.09l-1.78,2.45l0.03,9.12l1.3,1.94l-1.37,0.78l-0.67,1.03l-1.08,0.46l-0.34,1.67l-0.81,1.07l-0.45,1.55l-0.68,0.56l-3.2,-2.23l-0.35,-1.58l-8.86,-4.98l0.14,-1.6l-0.57,-1.04Z", "name": "Kenya"}, "SS": {"path": "M481.71,263.34l1.07,-0.72l1.2,-3.18l1.36,-0.26l1.61,1.99l0.87,0.34l1.1,-0.41l1.5,0.07l0.57,0.53l2.49,0.0l0.44,-0.63l1.07,-0.4l0.45,-0.84l0.59,-0.33l1.9,1.33l1.6,-0.2l2.83,-3.33l-0.32,-2.21l1.59,-0.52l-0.24,1.6l0.3,1.83l1.35,1.18l0.2,1.87l0.35,0.41l0.02,1.53l-0.23,0.47l-1.42,0.25l-0.85,1.44l0.3,0.6l1.4,0.16l1.11,1.08l0.59,1.13l1.03,0.53l1.28,2.36l-4.41,3.98l-1.74,0.01l-1.89,0.55l-1.47,-0.52l-1.15,0.57l-2.96,-2.62l-1.3,0.49l-1.06,-0.15l-0.79,0.39l-0.82,-0.22l-1.8,-2.7l-1.91,-1.1l-0.66,-1.5l-2.62,-2.32l-0.18,-0.94l-2.37,-1.6Z", "name": "S. Sudan"}, "SR": {"path": "M283.12,270.19l2.1,0.53l-1.08,1.95l0.2,1.72l0.93,1.49l-0.59,2.03l-0.43,0.71l-1.12,-0.42l-1.32,0.22l-0.93,-0.2l-0.46,0.26l-0.25,0.73l0.33,0.7l-0.89,-0.13l-1.39,-1.97l-0.31,-1.34l-0.97,-0.31l-0.89,-1.47l0.35,-1.61l1.45,-0.82l0.33,-1.87l2.61,0.44l0.57,-0.47l1.75,-0.16Z", "name": "Suriname"}, "KH": {"path": "M689.52,249.39l0.49,1.45l-0.28,2.74l-4.0,1.86l-0.16,0.6l0.68,0.95l-2.06,0.17l-2.05,0.97l-1.82,-0.32l-2.12,-3.7l-0.55,-2.85l1.4,-1.85l3.02,-0.45l2.23,0.35l2.01,0.98l0.51,-0.14l0.95,-1.48l1.74,0.74Z", "name": "Cambodia"}, "SV": {"path": "M195.8,250.13l1.4,-1.19l2.24,1.45l0.98,-0.27l0.44,0.2l-0.27,1.05l-1.14,-0.03l-3.64,-1.21Z", "name": "El Salvador"}, "SK": {"path": "M476.82,151.17l-1.14,1.9l-2.73,-0.92l-0.82,0.2l-0.74,0.8l-3.46,0.73l-0.47,0.69l-1.76,0.33l-1.88,-1.0l-0.18,-0.81l0.38,-0.75l1.87,-0.32l1.74,-1.89l0.83,0.16l0.79,-0.34l1.51,1.04l1.34,-0.63l1.25,0.3l1.65,-0.42l1.81,0.95Z", "name": "Slovakia"}, "KR": {"path": "M737.51,185.84l0.98,-0.1l0.87,-1.17l2.69,-0.32l0.33,-0.29l1.76,2.79l0.58,1.76l0.02,3.12l-0.8,1.32l-2.21,0.55l-1.93,1.13l-1.8,0.19l-0.2,-1.1l0.43,-2.28l-0.95,-2.56l1.43,-0.37l0.23,-0.62l-1.43,-2.06Z", "name": "Korea"}, "SI": {"path": "M456.18,162.07l-0.51,-1.32l0.18,-1.05l1.69,0.2l1.42,-0.71l2.09,-0.07l0.62,-0.51l0.21,0.47l-1.61,0.67l-0.44,1.34l-0.66,0.24l-0.26,0.82l-1.22,-0.49l-0.84,0.46l-0.69,-0.04Z", "name": "Slovenia"}, "KP": {"path": "M736.77,185.16l-0.92,-0.42l-0.88,0.62l-1.21,-0.88l0.96,-1.15l0.59,-2.59l-0.46,-0.74l-2.09,-0.77l1.64,-1.52l2.72,-1.58l1.58,-1.91l1.11,0.78l2.17,0.11l0.41,-0.5l-0.3,-1.22l3.52,-1.18l0.94,-1.4l0.98,1.08l-2.19,2.18l0.01,2.14l-1.06,0.54l-1.41,1.4l-1.7,0.52l-1.25,1.09l-0.14,1.98l0.94,0.45l1.15,1.04l-0.13,0.26l-2.6,0.29l-1.13,1.29l-1.22,0.08Z", "name": "Dem. Rep. Korea"}, "SO": {"path": "M525.13,288.48l-1.13,-1.57l-0.03,-8.86l2.66,-3.38l1.67,-0.13l2.13,-1.69l3.41,-0.23l7.08,-7.55l2.91,-3.69l0.08,-4.82l2.98,-0.67l1.24,-0.86l0.45,-0.0l-0.2,3.0l-1.21,3.62l-2.73,5.97l-2.13,3.65l-5.03,6.16l-8.56,6.4l-2.78,3.08l-0.8,1.56Z", "name": "Somalia"}, "SN": {"path": "M390.09,248.21l0.12,1.55l0.49,1.46l0.96,0.82l0.05,1.28l-1.26,-0.19l-0.75,0.33l-1.84,-0.61l-5.84,-0.13l-2.54,0.51l-0.22,-1.03l1.77,0.04l2.01,-0.91l1.03,0.48l1.09,0.04l1.29,-0.62l0.14,-0.58l-0.51,-0.74l-1.81,0.25l-1.13,-0.63l-0.79,0.04l-0.72,0.61l-2.31,0.06l-0.92,-1.77l-0.81,-0.64l0.64,-0.35l2.46,-3.74l1.04,0.19l1.38,-0.56l1.19,-0.02l2.72,1.37l3.03,3.48Z", "name": "Senegal"}, "SL": {"path": "M394.46,264.11l-1.73,1.98l-0.58,1.33l-2.07,-1.06l-1.22,-1.26l-0.65,-2.39l1.16,-0.96l0.67,-1.17l1.21,-0.52l1.66,0.0l1.03,1.64l0.52,2.41Z", "name": "Sierra Leone"}, "SB": {"path": "M826.69,311.6l-0.61,0.09l-0.2,-0.33l0.37,0.15l0.44,0.09ZM824.18,307.38l-0.26,-0.3l-0.31,-0.91l0.03,0.0l0.54,1.21ZM823.04,309.33l-1.66,-0.22l-0.2,-0.52l1.16,0.28l0.69,0.46ZM819.28,304.68l1.14,0.65l0.02,0.03l-0.81,-0.44l-0.35,-0.23Z", "name": "Solomon Is."}, "SA": {"path": "M537.53,210.34l2.0,0.24l0.9,1.32l1.49,-0.06l0.87,2.08l1.29,0.76l0.51,0.99l1.56,1.03l-0.1,1.9l0.32,0.9l1.58,2.47l0.76,0.53l0.7,-0.04l1.68,4.23l7.53,1.33l0.51,-0.29l0.77,1.25l-1.55,4.87l-7.29,2.52l-7.3,1.03l-2.34,1.17l-1.88,2.74l-0.76,0.28l-0.82,-0.78l-0.91,0.12l-2.88,-0.51l-3.51,0.25l-0.86,-0.56l-0.57,0.15l-0.66,1.27l0.16,1.11l-0.43,0.32l-0.93,-1.4l-0.33,-1.16l-1.23,-0.88l-1.27,-2.06l-0.78,-2.22l-1.73,-1.79l-1.14,-0.48l-1.54,-2.31l-0.21,-3.41l-1.44,-2.93l-1.27,-1.16l-1.33,-0.57l-1.31,-3.37l-0.77,-0.67l-0.97,-1.97l-2.8,-4.03l-1.06,-0.17l0.37,-1.96l0.2,-0.72l2.74,0.3l1.08,-0.84l0.6,-0.94l1.74,-0.35l0.65,-1.03l0.71,-0.4l0.1,-0.62l-2.06,-2.28l4.39,-1.22l0.48,-0.37l2.77,0.69l3.66,1.9l7.03,5.5l4.87,0.3Z", "name": "Saudi Arabia"}, "SE": {"path": "M480.22,89.3l-4.03,1.17l-2.43,2.86l0.26,2.57l-8.77,6.64l-1.78,5.79l1.78,2.68l2.22,1.96l-2.07,3.77l-2.72,1.13l-0.95,6.04l-1.29,3.01l-2.74,-0.31l-0.4,0.22l-1.31,2.59l-2.34,0.13l-0.75,-3.09l-2.08,-4.03l-1.83,-4.96l1.0,-1.93l2.14,-2.7l0.83,-4.45l-1.6,-2.17l-0.15,-4.94l1.48,-3.39l2.58,-0.15l0.87,-1.59l-0.78,-1.57l3.76,-5.59l4.04,-7.48l2.17,0.01l0.39,-0.29l0.57,-2.07l4.37,0.64l0.46,-0.34l0.33,-2.56l1.1,-0.13l6.94,4.87l0.06,6.32l0.66,1.36Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.4l-0.34,-0.77l-1.17,-0.9l-0.26,-1.61l0.29,-1.81l-0.34,-0.46l-1.16,-0.17l-0.54,0.59l-1.23,0.11l-0.28,0.65l0.53,0.65l0.17,1.22l-2.44,3.0l-0.96,0.19l-2.39,-1.4l-0.95,0.52l-0.38,0.78l-1.11,0.41l-0.29,0.5l-1.94,0.0l-0.54,-0.52l-1.81,-0.09l-0.95,0.4l-2.45,-2.35l-2.07,0.54l-0.73,1.26l-0.6,2.1l-1.25,0.58l-0.75,-0.62l0.27,-2.65l-1.48,-1.78l-0.22,-1.48l-0.92,-0.96l-0.02,-1.29l-0.57,-1.16l-0.68,-0.16l0.69,-1.29l-0.18,-1.14l0.65,-0.62l0.03,-0.55l-0.36,-0.41l1.55,-2.97l1.91,0.16l0.43,-0.4l-0.1,-10.94l2.49,-0.01l0.4,-0.4l-0.0,-4.82l29.02,0.0l0.64,2.04l-0.49,0.66l0.36,2.69l0.93,3.16l2.12,1.55l-0.89,1.04l-1.72,0.39l-0.98,0.9l-1.43,5.65l0.24,1.15l-0.38,2.06l-0.96,2.38l-1.53,1.31l-1.32,2.91l-1.22,0.86l-0.37,1.34Z", "name": "Sudan"}, "DO": {"path": "M241.8,239.2l0.05,-0.65l-0.46,-0.73l0.42,-0.44l0.19,-1.0l-0.09,-1.53l1.66,0.01l1.99,0.63l0.33,0.67l1.28,0.19l0.33,0.76l1.0,0.08l0.8,0.62l-0.45,0.51l-1.13,-0.47l-1.88,-0.01l-1.27,0.59l-0.75,-0.55l-1.01,0.54l-0.79,1.4l-0.23,-0.61Z", "name": "Dominican Rep."}, "DJ": {"path": "M528.43,256.18l-0.45,0.66l-0.58,-0.25l-1.51,0.13l-0.18,-1.01l1.45,-1.95l0.83,0.17l0.77,-0.44l0.2,1.0l-1.2,0.51l-0.06,0.7l0.73,0.47Z", "name": "Djibouti"}, "DK": {"path": "M452.28,129.07l-1.19,2.24l-2.13,-1.6l-0.23,-0.95l2.98,-0.95l0.57,1.26ZM447.74,126.31l-0.26,0.57l-0.88,-0.07l-1.8,2.53l0.48,1.69l-1.09,0.36l-1.61,-0.39l-0.89,-1.69l-0.07,-3.43l0.96,-1.73l2.02,-0.2l1.09,-1.07l1.33,-0.67l-0.05,1.06l-0.73,1.41l0.3,1.0l1.2,0.64Z", "name": "Denmark"}, "DE": {"path": "M453.14,155.55l-0.55,-0.36l-1.2,-0.1l-1.87,0.57l-2.13,-0.13l-0.56,0.63l-0.86,-0.6l-0.96,0.09l-2.57,-0.93l-0.85,0.67l-1.47,-0.02l0.24,-1.75l1.23,-2.14l-0.28,-0.59l-3.52,-0.58l-0.92,-0.66l0.12,-1.2l-0.48,-0.88l0.27,-2.17l-0.37,-3.03l1.41,-0.22l0.63,-1.26l0.66,-3.19l-0.41,-1.18l0.26,-0.39l1.66,-0.15l0.33,0.54l0.62,0.07l1.7,-1.69l-0.54,-3.02l1.37,0.33l1.31,-0.37l0.31,1.18l2.25,0.71l-0.02,0.92l0.5,0.4l2.55,-0.65l1.34,-0.87l2.57,1.24l1.06,0.98l0.48,1.44l-0.57,0.74l-0.0,0.48l0.87,1.15l0.57,1.64l-0.14,1.29l0.82,1.7l-1.5,-0.07l-0.56,0.57l-4.47,2.15l-0.22,0.54l0.68,2.26l2.58,2.16l-0.66,1.11l-0.79,0.36l-0.23,0.43l0.32,1.87Z", "name": "Germany"}, "YE": {"path": "M528.27,246.72l0.26,-0.42l-0.22,-1.01l0.19,-1.5l0.92,-0.69l-0.07,-1.35l0.39,-0.75l1.01,0.47l3.34,-0.27l3.76,0.41l0.95,0.81l1.36,-0.58l1.74,-2.62l2.18,-1.09l6.86,-0.94l2.48,5.41l-1.64,0.76l-0.56,1.9l-6.23,2.16l-2.29,1.8l-1.93,0.05l-1.41,1.02l-4.24,0.74l-1.72,1.49l-3.28,0.19l-0.52,-1.18l0.02,-1.51l-1.34,-3.29Z", "name": "Yemen"}, "AT": {"path": "M462.89,152.8l0.04,2.25l-1.07,0.0l-0.33,0.63l0.36,0.51l-1.04,2.13l-2.02,0.07l-1.33,0.7l-5.29,-0.99l-0.47,-0.93l-0.44,-0.21l-2.47,0.55l-0.42,0.51l-3.18,-0.81l0.43,-0.91l1.12,0.78l0.6,-0.17l0.25,-0.58l1.93,0.12l1.86,-0.56l1.0,0.08l0.68,0.57l0.62,-0.15l0.26,-0.77l-0.3,-1.78l0.8,-0.44l0.68,-1.15l1.52,0.85l0.47,-0.06l1.34,-1.25l0.64,-0.17l1.81,0.92l1.28,-0.11l0.7,0.37Z", "name": "Austria"}, "DZ": {"path": "M441.46,188.44l-0.32,1.07l0.39,2.64l-0.54,2.16l-1.58,1.82l0.37,2.39l1.91,1.55l0.18,0.8l1.42,1.03l1.84,7.23l0.12,1.16l-0.57,5.0l0.2,1.51l-0.87,0.99l-0.02,0.51l1.41,1.86l0.14,1.2l0.89,1.48l0.5,0.16l0.98,-0.41l1.73,1.08l0.82,1.23l-8.22,4.81l-7.23,5.11l-3.43,1.13l-2.3,0.21l-0.28,-1.59l-2.56,-1.09l-0.67,-1.25l-26.12,-17.86l0.01,-3.47l3.77,-1.88l2.44,-0.41l2.12,-0.75l1.08,-1.42l2.81,-1.05l0.35,-2.08l1.33,-0.29l1.04,-0.94l3.47,-0.69l0.46,-1.08l-0.1,-0.45l-0.58,-0.52l-0.82,-2.81l-0.19,-1.83l-0.78,-1.49l2.03,-1.31l2.63,-0.48l1.7,-1.22l2.31,-0.84l8.24,-0.73l1.49,0.38l2.28,-1.1l2.46,-0.02l0.92,0.6l1.35,-0.05Z", "name": "Algeria"}, "US": {"path": "M892.72,99.2l1.31,0.53l1.41,-0.37l1.89,0.98l1.89,0.42l-1.32,0.58l-2.9,-1.53l-2.08,0.22l-0.26,-0.15l0.07,-0.67ZM183.22,150.47l0.37,1.47l1.12,0.85l4.23,0.7l2.39,0.98l2.17,-0.38l1.85,0.5l-1.55,0.65l-3.49,2.61l-0.16,0.77l0.5,0.39l2.33,-0.61l1.77,1.02l5.15,-2.4l-0.31,0.65l0.25,0.56l1.36,0.38l1.71,1.16l4.7,-0.88l0.67,0.85l1.31,0.21l0.58,0.58l-1.34,0.17l-2.18,-0.32l-3.6,0.89l-2.71,3.25l0.35,0.9l0.59,-0.0l0.55,-0.6l-1.36,4.65l0.29,3.09l0.67,1.58l0.61,0.45l1.77,-0.44l1.6,-1.96l0.14,-2.21l-0.82,-1.96l0.11,-1.13l1.19,-2.37l0.44,-0.33l0.48,0.75l0.4,-0.29l0.4,-1.37l0.6,-0.47l0.24,-0.8l1.69,0.49l1.65,1.08l-0.03,2.37l-1.27,1.13l-0.0,1.13l0.87,0.36l1.66,-1.29l0.5,0.17l0.5,2.6l-2.49,3.75l0.17,0.61l1.54,0.62l1.48,0.17l1.92,-0.44l4.72,-2.15l2.16,-1.8l-0.05,-1.24l0.75,-0.22l3.92,0.36l2.12,-1.05l0.21,-0.4l-0.28,-1.48l3.27,-2.4l8.32,-0.02l0.56,-0.82l1.9,-0.77l0.93,-1.51l0.74,-2.37l1.58,-1.98l0.92,0.62l1.47,-0.47l0.8,0.66l-0.0,4.09l1.96,2.6l-2.34,1.31l-5.37,2.09l-1.83,2.72l0.02,1.79l0.83,1.59l0.54,0.23l-6.19,0.94l-2.2,0.89l-0.23,0.48l0.45,0.29l2.99,-0.46l-2.19,0.56l-1.13,0.0l-0.15,-0.32l-0.48,0.08l-0.76,0.82l0.22,0.67l0.32,0.06l-0.41,1.62l-1.27,1.58l-1.48,-1.07l-0.49,-0.04l-0.16,0.46l0.52,1.58l0.61,0.59l0.03,0.79l-0.95,1.38l-1.21,-1.22l-0.27,-2.27l-0.35,-0.35l-0.42,0.25l-0.48,1.27l0.33,1.41l-0.97,-0.27l-0.48,0.24l0.18,0.5l1.52,0.83l0.1,2.52l0.79,0.51l0.52,3.42l-1.42,1.88l-2.47,0.8l-1.71,1.66l-1.31,0.25l-1.27,1.03l-0.43,0.99l-2.69,1.78l-2.64,3.03l-0.45,2.12l0.45,2.08l0.85,2.38l1.09,1.9l0.04,1.2l1.16,3.06l-0.18,2.69l-0.55,1.43l-0.47,0.21l-0.89,-0.23l-0.49,-1.18l-0.87,-0.56l-2.75,-5.16l0.48,-1.68l-0.72,-1.78l-2.01,-2.38l-1.12,-0.53l-2.72,1.18l-1.47,-1.35l-1.57,-0.68l-2.99,0.31l-2.17,-0.3l-2.0,0.19l-1.15,0.46l-0.19,0.58l0.39,0.63l0.14,1.34l-0.84,-0.2l-0.84,0.46l-1.58,-0.07l-2.08,-1.44l-2.09,0.33l-1.91,-0.62l-3.73,0.84l-2.39,2.07l-2.54,1.22l-1.45,1.41l-0.61,1.38l0.34,3.71l-0.29,0.02l-3.5,-1.33l-1.25,-3.11l-1.44,-1.5l-2.24,-3.56l-1.76,-1.09l-2.27,-0.01l-1.71,2.07l-1.76,-0.69l-1.16,-0.74l-1.52,-2.98l-3.93,-3.16l-4.34,-0.0l-0.4,0.4l-0.0,0.74l-6.5,0.02l-9.02,-3.14l-0.34,-0.71l-5.7,0.49l-0.43,-1.29l-1.62,-1.61l-1.14,-0.38l-0.55,-0.88l-1.28,-0.13l-1.01,-0.77l-2.22,-0.27l-0.43,-0.3l-0.36,-1.58l-2.4,-2.83l-2.01,-3.85l-0.06,-0.9l-2.92,-3.26l-0.33,-2.29l-1.3,-1.66l0.52,-2.37l-0.09,-2.57l-0.78,-2.3l0.95,-2.82l0.61,-5.68l-0.47,-4.27l-1.46,-4.08l3.19,0.79l1.26,2.83l0.69,0.08l0.69,-1.14l-1.1,-4.79l68.76,-0.0l0.4,-0.4l0.14,-0.86ZM32.44,67.52l1.73,1.97l0.55,0.05l0.99,-0.79l3.65,0.24l-0.09,0.62l0.32,0.45l3.83,0.77l2.61,-0.43l5.19,1.4l4.84,0.43l1.89,0.57l3.42,-0.7l6.14,1.87l-0.03,38.06l0.38,0.4l2.39,0.11l2.31,0.98l3.9,3.99l0.55,0.04l2.4,-2.03l2.16,-1.04l1.2,1.71l3.95,3.14l4.09,6.63l4.2,2.29l0.06,1.83l-1.02,1.23l-1.16,-1.08l-2.04,-1.03l-0.67,-2.89l-3.28,-3.03l-1.65,-3.57l-6.35,-0.32l-2.82,-1.01l-5.26,-3.85l-6.77,-2.04l-3.53,0.3l-4.81,-1.69l-3.25,-1.63l-2.78,0.8l-0.28,0.46l0.44,2.21l-3.91,0.96l-2.26,1.27l-2.3,0.65l-0.27,-1.65l1.05,-3.42l2.49,-1.09l0.16,-0.6l-0.69,-0.96l-0.55,-0.1l-3.19,2.12l-1.78,2.56l-3.55,2.61l-0.04,0.61l1.56,1.52l-2.07,2.29l-5.11,2.57l-0.77,1.66l-3.76,1.77l-0.92,1.73l-2.69,1.38l-1.81,-0.22l-6.95,3.32l-3.97,0.91l4.85,-2.5l2.59,-1.86l3.26,-0.52l1.19,-1.4l3.42,-2.1l2.59,-2.27l0.42,-2.68l1.23,-2.1l-0.04,-0.46l-0.45,-0.11l-2.68,1.03l-0.63,-0.49l-0.53,0.03l-1.05,1.04l-1.36,-1.54l-0.66,0.08l-0.32,0.62l-0.58,-1.14l-0.56,-0.16l-2.41,1.42l-1.07,-0.0l-0.17,-1.75l0.3,-1.71l-1.61,-1.33l-3.41,0.59l-1.96,-1.63l-1.57,-0.84l-0.15,-2.21l-1.7,-1.43l0.82,-1.88l1.99,-2.12l0.88,-1.92l1.71,-0.24l2.04,0.51l1.87,-1.77l1.91,0.25l1.91,-1.23l0.17,-0.43l-0.47,-1.82l-1.07,-0.7l1.39,-1.17l0.12,-0.45l-0.39,-0.26l-1.65,0.07l-2.66,0.88l-0.75,0.78l-1.92,-0.8l-3.46,0.44l-3.44,-0.91l-1.06,-1.61l-2.65,-1.99l2.91,-1.43l5.5,-2.0l1.52,0.0l-0.26,1.62l0.41,0.46l5.29,-0.16l0.3,-0.65l-2.03,-2.59l-3.14,-1.68l-1.79,-2.12l-2.4,-1.83l-3.09,-1.24l1.04,-1.69l4.23,-0.14l3.36,-2.07l0.73,-2.27l2.39,-1.99l2.42,-0.52l4.65,-1.97l2.46,0.23l3.71,-2.35l3.5,0.89ZM37.6,123.41l-2.25,1.23l-0.95,-0.69l-0.29,-1.24l3.21,-1.63l1.42,0.21l0.67,0.7l-1.8,1.42ZM31.06,234.03l0.98,0.47l0.74,0.87l-1.77,1.07l-0.44,-1.53l0.49,-0.89ZM29.34,232.07l0.18,0.05l0.08,0.05l-0.16,0.03l-0.11,-0.14ZM25.16,230.17l0.05,-0.03l0.18,0.22l-0.13,-0.01l-0.1,-0.18ZM5.89,113.26l-1.08,0.41l-2.21,-1.12l1.53,-0.4l1.62,0.28l0.14,0.83Z", "name": "United States"}, "LV": {"path": "M489.16,122.85l0.96,0.66l0.22,1.65l0.68,1.76l-3.65,1.7l-2.23,-1.58l-1.29,-0.26l-0.68,-0.77l-2.42,0.34l-4.16,-0.23l-2.47,0.9l0.06,-1.98l1.13,-2.06l1.95,-1.02l2.12,2.58l2.01,-0.07l0.38,-0.33l0.44,-2.52l1.76,-0.53l3.06,1.7l2.15,0.07Z", "name": "Latvia"}, "UY": {"path": "M286.85,372.74l-0.92,1.5l-2.59,1.44l-1.69,-0.52l-1.42,0.26l-2.39,-1.19l-1.52,0.08l-1.27,-1.3l0.16,-1.5l0.56,-0.79l-0.02,-2.73l1.21,-4.74l1.19,-0.21l2.37,2.0l1.08,0.03l4.36,3.17l1.22,1.6l-0.96,1.5l0.61,1.4Z", "name": "Uruguay"}, "LB": {"path": "M510.37,198.01l-0.88,0.51l1.82,-3.54l0.62,0.08l0.22,0.61l-1.13,0.88l-0.65,1.47Z", "name": "Lebanon"}, "LA": {"path": "M689.54,248.53l-1.76,-0.74l-0.49,0.15l-0.94,1.46l-1.32,-0.64l0.62,-0.98l0.11,-2.17l-2.04,-2.42l-0.25,-2.65l-1.9,-2.1l-2.15,-0.31l-0.78,0.91l-1.12,0.06l-1.05,-0.4l-2.06,1.2l-0.04,-1.59l0.61,-2.68l-0.36,-0.49l-1.35,-0.1l-0.11,-1.23l-0.96,-0.88l1.96,-1.89l0.39,0.36l1.33,0.07l0.42,-0.45l-0.34,-2.66l0.7,-0.21l1.28,1.81l1.11,2.35l0.36,0.23l2.82,0.02l0.71,1.67l-1.39,0.65l-0.72,0.93l0.13,0.6l2.91,1.51l3.6,5.25l1.88,1.78l0.56,1.62l-0.35,1.96Z", "name": "Lao PDR"}, "TW": {"path": "M724.01,226.68l-0.74,1.48l-0.9,-1.52l-0.25,-1.74l1.38,-2.44l1.73,-1.74l0.64,0.44l-1.85,5.52Z", "name": "Taiwan"}, "TT": {"path": "M266.64,259.32l0.28,-1.16l1.13,-0.22l-0.06,1.2l-1.35,0.18Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.21,175.47l3.64,1.17l3.05,-0.44l2.1,0.26l3.11,-1.56l2.46,-0.13l2.19,1.33l0.33,0.82l-0.22,1.33l0.25,0.44l2.28,1.13l-1.17,0.57l-0.21,0.45l0.75,3.2l-0.41,1.16l1.13,1.92l-0.55,0.22l-0.9,-0.67l-2.91,-0.37l-1.24,0.46l-4.23,0.41l-2.81,1.05l-1.91,0.01l-1.52,-0.53l-2.58,0.75l-0.66,-0.45l-0.62,0.3l-0.12,1.45l-0.89,0.84l-0.47,-0.67l0.79,-1.3l-0.41,-0.2l-1.43,0.23l-2.0,-0.63l-2.02,1.65l-3.51,0.3l-2.13,-1.53l-2.7,-0.1l-0.86,1.24l-1.38,0.27l-2.29,-1.44l-2.71,-0.01l-1.37,-2.65l-1.68,-1.52l1.07,-1.99l-0.09,-0.49l-1.27,-1.12l2.37,-2.41l3.7,-0.11l1.28,-2.24l4.49,0.37l3.21,-1.97l2.81,-0.82l3.99,-0.06l4.29,2.07ZM488.79,176.72l-1.72,1.31l-0.5,-0.88l1.37,-2.57l-0.7,-0.85l1.7,-0.63l1.8,0.34l0.46,1.17l1.76,0.78l-2.87,0.32l-1.3,1.01Z", "name": "Turkey"}, "LK": {"path": "M624.16,268.99l-1.82,0.48l-0.99,-1.67l-0.42,-3.46l0.95,-3.43l1.21,0.98l2.26,4.19l-0.34,2.33l-0.85,0.58Z", "name": "Sri Lanka"}, "TN": {"path": "M448.1,188.24l-1.0,1.27l-0.02,1.32l0.84,0.88l-0.28,2.09l-1.53,1.32l-0.12,0.42l0.48,1.54l1.42,0.32l0.53,1.11l0.9,0.52l-0.11,1.67l-3.54,2.64l-0.1,2.38l-0.58,0.3l-0.96,-4.45l-1.54,-1.25l-0.16,-0.78l-1.92,-1.56l-0.18,-1.76l1.51,-1.62l0.59,-2.34l-0.38,-2.78l0.42,-1.21l2.45,-1.05l1.29,0.26l-0.06,1.11l0.58,0.38l1.47,-0.73Z", "name": "Tunisia"}, "TL": {"path": "M734.55,307.93l-0.1,-0.97l4.5,-0.86l-2.82,1.28l-1.59,0.55Z", "name": "Timor-Leste"}, "TM": {"path": "M553.03,173.76l-0.04,0.34l-0.09,-0.22l0.13,-0.12ZM555.87,172.66l0.45,-0.1l1.48,0.74l2.06,2.43l4.07,-0.18l0.38,-0.51l-0.32,-1.19l1.92,-0.94l1.91,-1.59l2.94,1.39l0.43,2.47l1.19,0.67l2.58,-0.13l0.62,0.4l1.32,3.12l4.54,3.44l2.67,1.45l3.06,1.14l-0.04,1.05l-1.33,-0.75l-0.59,0.19l-0.32,0.84l-2.2,0.81l-0.46,2.13l-1.21,0.74l-1.91,0.42l-0.73,1.33l-1.56,0.31l-2.22,-0.94l-0.2,-2.17l-0.38,-0.36l-1.73,-0.09l-2.76,-2.46l-2.14,-0.4l-2.84,-1.48l-1.78,-0.27l-1.24,0.53l-1.57,-0.08l-2.0,1.69l-1.7,0.43l-0.36,-1.58l0.36,-2.98l-0.22,-0.4l-1.65,-0.84l0.54,-1.69l-0.34,-0.52l-1.22,-0.13l0.36,-1.64l2.22,0.59l2.2,-0.95l0.12,-0.65l-1.77,-1.74l-0.66,-1.57Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.75,178.82l-2.54,-0.44l-0.47,0.34l-0.24,1.7l0.43,0.45l2.64,-0.22l3.18,0.95l4.39,-0.41l0.56,2.37l0.52,0.29l0.67,-0.24l1.11,0.49l0.21,2.13l-3.76,-0.21l-1.8,1.32l-1.76,0.74l-0.61,-0.58l0.21,-2.23l-0.64,-0.49l-0.07,-0.93l-1.36,-0.66l-0.45,0.07l-1.08,1.01l-0.55,1.48l-1.31,-0.05l-0.95,1.16l-0.9,-0.35l-1.86,0.74l1.26,-2.83l-0.54,-2.17l-1.67,-0.82l0.33,-0.66l2.18,-0.04l1.19,-1.63l0.76,-1.79l2.43,-0.5l-0.26,1.0l0.73,1.05Z", "name": "Tajikistan"}, "LS": {"path": "M491.06,363.48l-0.49,0.15l-1.49,-1.67l1.1,-1.43l2.19,-1.44l1.51,1.27l-0.98,1.82l-1.23,0.38l-0.62,0.93Z", "name": "Lesotho"}, "TH": {"path": "M670.27,255.86l-1.41,3.87l0.15,2.0l0.38,0.36l1.38,0.07l0.9,2.04l0.55,2.34l1.4,1.44l1.61,0.38l0.96,0.97l-0.5,0.64l-1.1,0.2l-0.34,-1.18l-2.04,-1.1l-0.63,0.23l-0.63,-0.62l-0.48,-1.3l-2.56,-2.63l-0.73,0.41l0.95,-3.89l2.16,-4.22ZM670.67,254.77l-0.92,-2.18l-0.26,-2.61l-2.14,-3.06l0.71,-0.49l0.89,-2.59l-3.61,-5.45l0.87,-0.51l1.05,-2.58l1.74,-0.18l2.6,-1.59l0.76,0.56l0.13,1.39l0.37,0.36l1.23,0.09l-0.51,2.28l0.05,2.42l0.6,0.34l2.43,-1.42l0.77,0.39l1.47,-0.07l0.71,-0.88l1.48,0.14l1.71,1.88l0.25,2.65l1.92,2.11l-0.1,1.89l-0.61,0.86l-2.22,-0.33l-3.5,0.64l-1.6,2.12l0.36,2.58l-1.51,-0.79l-1.84,-0.01l0.28,-1.52l-0.4,-0.47l-2.21,0.01l-0.4,0.37l-0.19,2.74l-0.34,0.93Z", "name": "Thailand"}, "TF": {"path": "M596.68,420.38l-3.2,0.18l-0.05,-1.26l0.39,-1.41l1.3,0.78l2.08,0.35l-0.52,1.36Z", "name": "Fr. S. Antarctic Lands"}, "TG": {"path": "M422.7,257.63l-0.09,1.23l1.53,1.52l0.08,1.09l0.5,0.65l-0.11,5.62l0.49,1.47l-1.31,0.35l-1.02,-2.13l-0.18,-1.12l0.53,-2.19l-0.63,-1.16l-0.22,-3.68l-1.01,-1.4l0.07,-0.28l1.37,0.03Z", "name": "Togo"}, "TD": {"path": "M480.25,235.49l0.12,9.57l-2.1,0.05l-1.14,1.89l-0.69,1.63l0.34,0.73l-0.66,0.91l0.24,0.89l-0.86,1.95l0.45,0.5l0.6,-0.1l0.34,0.64l0.03,1.38l0.9,1.04l-1.45,0.43l-1.27,1.03l-1.83,2.76l-2.16,1.07l-2.31,-0.15l-0.86,0.25l-0.26,0.49l0.17,0.61l-2.11,1.68l-2.85,0.87l-1.09,-0.57l-0.73,0.66l-1.12,0.1l-1.1,-3.12l-1.25,-0.64l-1.22,-1.22l0.29,-0.64l3.01,0.04l0.35,-0.6l-1.3,-2.2l-0.08,-3.31l-0.97,-1.66l0.22,-1.04l-0.38,-0.48l-1.22,-0.04l0.0,-1.25l-0.98,-1.07l0.96,-3.01l3.25,-2.65l0.13,-3.33l0.95,-5.18l0.52,-1.07l-0.1,-0.48l-0.91,-0.78l-0.2,-0.96l-0.8,-0.58l-0.55,-3.65l2.1,-1.2l19.57,9.83Z", "name": "Chad"}, "LY": {"path": "M483.48,203.15l-0.75,1.1l0.29,1.39l-0.6,1.83l0.73,2.14l0.0,24.12l-2.48,0.01l-0.41,0.85l-19.41,-9.76l-4.41,2.28l-1.37,-1.33l-3.82,-1.1l-1.14,-1.65l-1.98,-1.23l-1.22,0.32l-0.66,-1.11l-0.17,-1.26l-1.28,-1.69l0.87,-1.19l-0.07,-4.34l0.43,-2.27l-0.86,-3.45l1.13,-0.76l0.22,-1.16l-0.2,-1.03l3.48,-2.61l0.29,-1.94l2.45,0.8l1.18,-0.21l1.98,0.44l3.15,1.18l1.37,2.54l5.72,1.67l2.64,1.35l1.61,-0.72l1.29,-1.34l-0.44,-2.34l0.66,-1.13l1.67,-1.21l1.57,-0.35l3.14,0.53l1.08,1.28l3.99,0.78l0.36,0.54Z", "name": "Libya"}, "AE": {"path": "M550.76,223.97l1.88,-0.4l3.84,0.02l4.78,-4.75l0.19,0.36l0.26,1.58l-0.81,0.01l-0.39,0.35l-0.08,2.04l-0.81,0.63l-0.01,0.96l-0.66,0.99l-0.39,1.41l-7.08,-1.25l-0.7,-1.96Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.68,256.69l0.53,0.75l-0.02,1.06l-1.07,1.78l0.95,2.0l0.42,0.22l1.4,-0.44l0.56,-1.83l-0.77,-1.17l-0.1,-1.47l2.82,-0.93l0.26,-0.49l-0.28,-0.96l0.3,-0.28l0.66,1.31l1.96,0.26l1.4,1.22l0.08,0.68l0.39,0.35l4.81,-0.22l1.49,1.11l1.92,0.31l1.67,-0.84l0.22,-0.6l3.44,-0.14l-0.17,0.55l0.86,1.19l2.19,0.35l1.67,1.1l0.37,1.86l0.41,0.32l1.55,0.17l-1.66,1.35l-0.22,0.92l0.65,0.97l-1.67,0.54l-0.3,0.4l0.04,0.99l-0.56,0.57l-0.01,0.55l1.85,2.27l-0.66,0.69l-4.47,1.29l-0.72,0.54l-3.69,-0.9l-0.71,0.27l-0.02,0.7l0.91,0.53l-0.08,1.54l0.35,1.58l0.35,0.31l1.66,0.17l-1.3,0.52l-0.48,1.13l-2.68,0.91l-0.6,0.77l-1.57,0.13l-1.17,-1.13l-0.8,-2.52l-1.25,-1.26l1.02,-1.23l-1.29,-2.95l0.18,-1.62l1.0,-2.21l-0.2,-0.49l-1.14,-0.46l-4.02,0.36l-1.82,-2.1l-1.57,-0.33l-2.99,0.22l-1.06,-0.97l0.25,-1.23l-0.2,-1.01l-0.59,-0.69l-0.29,-1.06l-1.08,-0.39l0.78,-2.79l1.9,-2.11Z", "name": "Venezuela"}, "AF": {"path": "M600.7,188.88l-1.57,1.3l-0.1,0.48l0.8,2.31l-1.09,1.04l-0.03,1.27l-0.48,0.71l-2.16,-0.08l-0.37,0.59l0.78,1.48l-1.38,0.69l-1.06,1.69l0.06,1.7l-0.65,0.52l-0.91,-0.21l-1.91,0.36l-0.48,0.77l-1.88,0.13l-1.4,1.56l-0.18,2.32l-2.91,1.02l-1.65,-0.23l-0.71,0.55l-1.41,-0.3l-2.41,0.39l-3.52,-1.17l1.96,-2.35l-0.21,-1.78l-0.3,-0.34l-1.63,-0.4l-0.19,-1.58l-0.75,-2.03l0.95,-1.36l-0.19,-0.6l-0.73,-0.28l1.47,-4.8l2.14,0.9l2.12,-0.36l0.74,-1.34l1.77,-0.39l1.54,-0.92l0.63,-2.31l1.87,-0.5l0.49,-0.81l0.94,0.56l2.13,0.11l2.55,0.92l1.95,-0.83l0.65,0.43l0.56,-0.13l0.69,-1.12l1.57,-0.08l0.72,-1.66l0.79,-0.74l0.8,0.39l-0.17,0.56l0.71,0.58l-0.08,2.39l1.11,0.95ZM601.37,188.71l1.73,-0.71l1.43,-1.18l4.03,0.35l-2.23,0.74l-4.95,0.8Z", "name": "Afghanistan"}, "IQ": {"path": "M530.82,187.47l0.79,0.66l1.26,-0.28l1.46,3.08l1.63,0.94l0.14,1.23l-1.22,1.05l-0.53,2.52l1.73,2.67l3.12,1.62l1.15,1.88l-0.38,1.85l0.39,0.48l0.41,-0.0l0.02,1.07l0.76,0.94l-2.47,-0.1l-1.71,2.44l-4.31,-0.2l-7.02,-5.48l-3.73,-1.94l-2.88,-0.73l-0.85,-2.87l5.45,-3.02l0.95,-3.43l-0.19,-1.96l1.27,-0.7l1.22,-1.7l0.87,-0.36l2.69,0.34Z", "name": "Iraq"}, "IS": {"path": "M384.14,88.06l-0.37,2.61l2.54,2.51l-2.9,2.75l-9.19,3.4l-9.25,-1.66l1.7,-1.22l-0.1,-0.7l-4.05,-1.47l2.96,-0.53l0.33,-0.43l-0.11,-1.2l-0.33,-0.36l-4.67,-0.85l1.28,-2.04l3.45,-0.56l3.77,2.72l0.44,0.02l3.64,-2.16l3.3,1.08l3.98,-2.16l3.58,0.26Z", "name": "Iceland"}, "IR": {"path": "M533.43,187.16l-1.27,-2.15l0.42,-0.98l-0.71,-3.04l1.03,-0.5l0.33,0.83l1.26,1.35l2.05,0.51l1.11,-0.16l2.89,-2.11l0.62,-0.14l0.39,0.46l-0.72,1.2l0.06,0.49l1.56,1.53l0.65,0.04l0.67,1.81l2.56,0.83l1.87,1.48l3.69,0.49l3.91,-0.76l0.47,-0.73l2.17,-0.6l1.66,-1.54l1.51,0.08l1.18,-0.53l1.59,0.24l2.83,1.48l1.88,0.3l2.77,2.47l1.77,0.18l0.18,1.99l-1.68,5.49l0.24,0.5l0.61,0.23l-0.82,1.48l0.8,2.18l0.19,1.71l0.3,0.34l1.63,0.4l0.15,1.32l-2.15,2.35l-0.01,0.53l2.21,3.03l2.34,1.24l0.06,2.14l1.24,0.72l0.11,0.69l-3.31,1.27l-1.08,3.03l-9.68,-1.68l-0.99,-3.05l-1.43,-0.73l-2.17,0.46l-2.47,1.26l-2.83,-0.82l-2.46,-2.02l-2.41,-0.8l-3.42,-6.06l-0.48,-0.2l-1.18,0.39l-1.44,-0.82l-0.5,0.08l-0.65,0.74l-0.97,-1.01l-0.02,-1.31l-0.71,-0.39l0.26,-1.81l-1.29,-2.11l-3.13,-1.63l-1.58,-2.43l0.5,-1.9l1.31,-1.26l-0.19,-1.66l-1.74,-1.1l-1.57,-3.3Z", "name": "Iran"}, "AM": {"path": "M536.99,182.33l-0.28,0.03l-1.23,-2.13l-0.93,0.01l-0.62,-0.66l-0.69,-0.07l-0.96,-0.81l-1.56,-0.62l0.19,-1.12l-0.26,-0.79l2.72,-0.36l1.09,1.01l-0.17,0.92l1.02,0.78l-0.47,0.62l0.08,0.56l2.04,1.23l0.04,1.4Z", "name": "Armenia"}, "IT": {"path": "M451.59,158.63l3.48,0.94l-0.21,1.17l0.3,0.83l-1.49,-0.24l-2.04,1.1l-0.21,0.39l0.13,1.45l-0.25,1.12l0.82,1.57l2.39,1.63l1.31,2.54l2.79,2.43l2.05,0.08l0.21,0.23l-0.39,0.33l0.09,0.67l4.05,1.97l2.17,1.76l-0.16,0.36l-1.17,-1.08l-2.18,-0.49l-0.44,0.2l-1.05,1.91l0.14,0.54l1.57,0.95l-0.19,0.98l-1.06,0.33l-1.25,2.34l-0.37,0.08l0.0,-0.33l1.0,-2.45l-1.73,-3.17l-1.12,-0.51l-0.88,-1.33l-1.51,-0.51l-1.27,-1.25l-1.75,-0.18l-4.12,-3.21l-1.62,-1.65l-1.03,-3.19l-3.53,-1.36l-1.3,0.51l-1.69,1.41l0.16,-0.72l-0.28,-0.47l-1.14,-0.33l-0.53,-1.96l0.72,-0.78l0.04,-0.48l-0.65,-1.17l0.8,0.39l1.4,-0.23l1.11,-0.84l0.52,0.35l1.19,-0.1l0.75,-1.2l1.53,0.33l1.36,-0.56l0.35,-1.14l1.08,0.32l0.68,-0.64l1.98,-0.44l0.42,0.82ZM459.19,184.75l-0.65,1.65l0.32,1.05l-0.31,0.89l-1.5,-0.85l-4.5,-1.67l0.19,-0.82l2.67,0.23l3.78,-0.48ZM443.93,176.05l1.18,1.66l-0.3,3.32l-1.06,-0.01l-0.77,0.73l-0.53,-0.44l-0.1,-3.37l-0.39,-1.22l1.04,0.01l0.92,-0.68Z", "name": "Italy"}, "VN": {"path": "M690.56,230.25l-2.7,1.82l-2.09,2.46l-0.63,1.95l4.31,6.45l2.32,1.65l1.43,1.94l1.11,4.59l-0.32,4.24l-1.93,1.54l-2.84,1.61l-2.11,2.15l-2.73,2.06l-0.59,-1.05l0.63,-1.53l-0.13,-0.47l-1.34,-1.04l1.51,-0.71l2.55,-0.18l0.3,-0.63l-0.82,-1.14l4.0,-2.07l0.31,-3.05l-0.57,-1.77l0.42,-2.66l-0.73,-1.97l-1.86,-1.76l-3.63,-5.29l-2.72,-1.46l0.36,-0.47l1.5,-0.64l0.21,-0.52l-0.97,-2.27l-0.37,-0.24l-2.83,-0.02l-2.24,-3.9l0.83,-0.4l4.39,-0.29l2.06,-1.31l1.15,0.89l1.88,0.4l-0.17,1.51l1.35,1.16l1.67,0.45Z", "name": "Vietnam"}, "AR": {"path": "M249.29,428.93l-2.33,-0.52l-5.83,-0.43l-0.89,-1.66l0.05,-2.37l-0.45,-0.4l-1.43,0.18l-0.67,-0.91l-0.2,-3.13l1.88,-1.47l0.79,-2.04l-0.25,-1.7l1.3,-2.68l0.91,-4.15l-0.22,-1.69l0.85,-0.45l0.2,-0.44l-0.27,-1.16l-0.98,-0.68l0.59,-0.92l-0.05,-0.5l-1.04,-1.07l-0.52,-3.1l0.97,-0.86l-0.42,-3.58l1.2,-5.43l1.38,-0.98l0.16,-0.43l-0.75,-2.79l-0.01,-2.43l1.78,-1.75l0.06,-2.57l1.43,-2.85l0.01,-2.58l-0.69,-0.74l-1.09,-4.52l1.47,-2.7l-0.18,-2.79l0.85,-2.35l1.59,-2.46l1.73,-1.64l0.05,-0.52l-0.6,-0.84l0.44,-0.85l-0.07,-4.19l2.7,-1.44l0.86,-2.75l-0.21,-0.71l1.76,-2.01l2.9,0.57l1.38,1.78l0.68,-0.08l0.87,-1.87l2.39,0.09l4.95,4.77l2.17,0.49l3.0,1.92l2.47,1.0l0.25,0.82l-2.37,3.93l0.23,0.59l5.39,1.16l2.12,-0.44l2.45,-2.16l0.5,-2.38l0.76,-0.31l0.98,1.2l-0.04,1.8l-3.67,2.51l-2.85,2.66l-3.43,3.88l-1.3,5.07l0.01,2.72l-0.54,0.73l-0.36,3.28l3.14,2.64l-0.16,2.11l1.4,1.11l-0.1,1.09l-2.29,3.52l-3.55,1.49l-4.92,0.6l-2.71,-0.29l-0.43,0.51l0.5,1.65l-0.49,2.1l0.38,1.42l-1.19,0.83l-2.36,0.38l-2.3,-1.04l-1.38,0.83l0.41,3.64l1.69,0.91l1.4,-0.71l0.36,0.76l-2.04,0.86l-2.01,1.89l-0.97,4.63l-2.34,0.1l-2.09,1.78l-0.61,2.75l2.46,2.31l2.17,0.63l-0.7,2.32l-2.83,1.73l-1.73,3.86l-2.17,1.22l-1.16,1.67l0.75,3.76l1.04,1.28ZM256.71,438.88l-2.0,0.15l-1.4,-1.22l-3.82,-0.1l-0.0,-5.83l1.6,3.05l3.26,2.07l3.08,0.78l-0.71,1.1Z", "name": "Argentina"}, "AU": {"path": "M705.8,353.26l0.26,0.04l0.17,-0.47l-0.48,-1.42l0.92,1.11l0.45,0.15l0.27,-0.39l-0.1,-1.56l-1.98,-3.63l1.09,-3.31l-0.24,-1.57l0.34,-0.62l0.38,1.06l0.43,-0.19l0.99,-1.7l1.91,-0.83l1.29,-1.15l1.81,-0.91l0.96,-0.17l0.92,0.26l1.92,-0.95l1.47,-0.28l1.03,-0.8l1.43,0.04l2.78,-0.84l1.36,-1.15l0.71,-1.45l1.41,-1.26l0.3,-2.58l1.27,-1.59l0.78,1.65l0.54,0.19l1.07,-0.51l0.15,-0.6l-0.73,-1.0l0.45,-0.71l0.78,0.39l0.58,-0.3l0.28,-1.82l1.87,-2.14l1.12,-0.39l0.28,-0.58l0.62,0.17l0.53,-0.73l1.87,-0.57l1.65,1.05l1.35,1.48l3.39,0.38l0.43,-0.54l-0.46,-1.23l1.05,-1.79l1.04,-0.61l0.14,-0.55l-0.25,-0.41l0.88,-1.17l1.31,-0.77l1.3,0.27l2.1,-0.48l0.31,-0.4l-0.05,-1.3l-0.92,-0.77l1.48,0.56l1.41,1.07l2.11,0.65l0.81,-0.2l1.4,0.7l1.69,-0.66l0.8,0.19l0.64,-0.33l0.71,0.77l-1.33,1.94l-0.71,0.07l-0.35,0.51l0.24,0.86l-1.52,2.35l0.12,1.05l2.15,1.65l1.97,0.85l3.04,2.36l1.97,0.65l0.55,0.88l2.72,0.85l1.84,-1.1l2.07,-5.97l-0.42,-3.59l0.3,-1.73l0.47,-0.87l-0.31,-0.68l1.09,-3.28l0.46,-0.47l0.4,0.71l0.16,1.51l0.65,0.52l0.16,1.04l0.85,1.21l0.12,2.38l0.9,2.0l0.57,0.18l1.3,-0.78l1.69,1.7l-0.2,1.08l0.53,2.2l0.39,1.3l0.68,0.48l0.6,1.95l-0.19,1.48l0.81,1.76l6.01,3.69l-0.11,0.76l1.38,1.58l0.95,2.77l0.58,0.22l0.72,-0.41l0.8,0.9l0.61,0.01l0.46,2.41l4.81,4.71l0.66,2.02l-0.07,3.31l1.14,2.2l-0.13,2.24l-1.1,3.68l0.03,1.64l-0.47,1.89l-1.05,2.4l-1.9,1.47l-1.72,3.51l-2.38,6.09l-0.24,2.82l-1.14,0.8l-2.85,0.15l-2.31,1.19l-2.51,2.25l-3.09,-1.57l0.3,-1.15l-0.54,-0.47l-1.5,0.63l-2.01,1.94l-7.12,-2.18l-1.48,-1.63l-1.14,-3.74l-1.45,-1.26l-1.81,-0.26l0.56,-1.18l-0.61,-2.1l-0.72,-0.1l-1.14,1.82l-0.9,0.21l0.63,-0.82l0.36,-1.55l0.92,-1.31l-0.13,-2.34l-0.7,-0.22l-2.0,2.34l-1.51,0.93l-0.94,2.01l-1.35,-0.81l-0.02,-1.52l-1.57,-2.04l-1.09,-0.88l0.24,-0.33l-0.14,-0.59l-3.21,-1.69l-1.83,-0.12l-2.54,-1.35l-4.58,0.28l-6.02,1.9l-2.53,-0.13l-2.62,1.41l-2.13,0.63l-1.49,2.6l-3.49,0.31l-2.29,-0.5l-3.48,0.43l-1.6,1.47l-0.81,-0.04l-2.37,1.63l-3.26,-0.1l-3.72,-2.21l0.04,-1.05l1.19,-0.46l0.49,-0.89l0.21,-2.97l-0.28,-1.64l-1.34,-2.86l-0.38,-1.47l0.05,-1.72l-0.95,-1.7l-0.18,-0.97l-1.01,-0.99l-0.29,-1.98l-1.13,-1.75ZM784.92,393.44l2.65,1.02l3.23,-0.96l1.09,0.14l0.15,3.06l-0.85,1.13l-0.17,1.63l-0.87,-0.24l-1.57,1.91l-1.68,-0.18l-1.4,-2.36l-0.37,-2.04l-1.39,-2.51l0.04,-0.8l1.15,0.18Z", "name": "Australia"}, "IL": {"path": "M507.76,203.05l0.4,-0.78l0.18,0.4l-0.33,1.03l0.52,0.44l0.68,-0.22l-0.86,3.6l-1.16,-3.32l0.59,-0.74l-0.03,-0.41ZM508.73,200.34l0.37,-1.02l0.64,0.0l0.52,-0.51l-0.49,1.53l-0.56,-0.24l-0.48,0.23Z", "name": "Israel"}, "IN": {"path": "M623.34,207.03l-1.24,1.04l-0.97,2.55l0.22,0.51l8.04,3.87l3.42,0.37l1.57,1.38l4.92,0.88l2.18,-0.04l0.38,-0.3l0.29,-1.24l-0.32,-1.64l0.14,-0.87l0.82,-0.31l0.45,2.48l2.28,1.02l1.77,-0.38l4.14,0.1l0.38,-0.36l0.18,-1.66l-0.5,-0.65l1.37,-0.29l2.25,-1.99l2.7,-1.62l1.93,0.62l1.8,-0.98l0.79,1.14l-0.68,0.91l0.26,0.63l2.42,0.36l0.09,0.47l-0.83,0.75l0.13,1.07l-1.52,-0.29l-3.24,1.86l-0.13,1.78l-1.32,2.14l-0.18,1.39l-0.93,1.82l-1.64,-0.5l-0.52,0.37l-0.09,2.63l-0.56,1.11l0.19,0.81l-0.53,0.27l-1.18,-3.73l-1.08,-0.27l-0.38,0.31l-0.24,1.0l-0.66,-0.66l0.54,-1.06l1.22,-0.34l1.15,-2.25l-0.24,-0.56l-1.57,-0.47l-4.34,-0.28l-0.18,-1.56l-0.35,-0.35l-1.11,-0.12l-1.91,-1.12l-0.56,0.17l-0.88,1.82l0.11,0.49l1.36,1.07l-1.09,0.69l-0.69,1.11l0.18,0.56l1.24,0.57l-0.32,1.54l0.85,1.94l0.36,2.01l-0.22,0.59l-4.58,0.52l-0.33,0.42l0.13,1.8l-1.17,1.36l-3.65,1.81l-2.79,3.03l-4.32,3.28l-0.18,1.27l-4.65,1.79l-0.77,2.16l0.64,5.3l-1.06,2.49l-0.01,3.94l-1.24,0.28l-1.14,1.93l0.39,0.84l-1.68,0.53l-1.04,1.83l-0.65,0.47l-2.06,-2.05l-2.1,-6.02l-2.2,-3.64l-1.05,-4.75l-2.29,-3.57l-1.76,-8.2l0.01,-3.11l-0.49,-2.53l-0.55,-0.29l-3.53,1.52l-1.53,-0.27l-2.86,-2.77l0.85,-0.67l0.08,-0.55l-0.74,-1.03l-2.67,-2.06l1.24,-1.32l5.34,0.01l0.39,-0.49l-0.5,-2.29l-1.42,-1.46l-0.27,-1.93l-1.43,-1.2l2.31,-2.37l3.05,0.06l2.62,-2.85l1.6,-2.81l2.4,-2.73l0.07,-2.04l1.97,-1.48l-0.02,-0.65l-1.93,-1.31l-0.82,-1.78l-0.8,-2.21l0.9,-0.89l3.59,0.65l2.92,-0.42l2.33,-2.19l2.31,2.85l-0.24,2.13l0.99,1.59l-0.05,0.82l-1.34,-0.28l-0.47,0.48l0.7,3.06l2.62,1.99l2.99,1.65Z", "name": "India"}, "TZ": {"path": "M495.56,296.42l2.8,-3.12l-0.02,-0.81l-0.64,-1.3l0.68,-0.52l0.14,-1.47l-0.76,-1.25l0.31,-0.11l2.26,0.03l-0.51,2.76l0.76,1.3l0.5,0.12l1.05,-0.53l1.19,-0.12l0.61,0.24l1.43,-0.62l0.1,-0.67l-0.71,-0.62l1.57,-1.7l8.65,4.86l0.32,1.53l3.34,2.33l-1.05,2.8l0.13,1.61l1.63,1.12l-0.6,1.76l-0.01,2.33l1.89,4.03l0.57,0.43l-1.46,1.08l-2.61,0.94l-1.43,-0.04l-1.06,0.77l-2.29,0.36l-2.87,-0.68l-0.83,0.07l-0.63,-0.75l-0.31,-2.78l-1.32,-1.35l-3.25,-0.77l-3.96,-1.58l-1.18,-2.41l-0.32,-1.75l-1.76,-1.49l0.42,-1.05l-0.44,-0.89l0.08,-0.96l-0.46,-0.58l0.06,-0.56Z", "name": "Tanzania"}, "AZ": {"path": "M539.29,175.73l1.33,0.32l1.94,-1.8l2.3,3.34l1.43,0.43l-1.26,0.15l-0.35,0.32l-0.8,3.14l-0.99,0.96l0.05,1.11l-1.26,-1.13l0.7,-1.18l-0.04,-0.47l-0.74,-0.86l-1.48,0.15l-2.34,1.71l-0.03,-1.27l-2.03,-1.35l0.47,-0.62l-0.08,-0.56l-1.03,-0.79l0.29,-0.43l-0.14,-0.58l-1.13,-0.86l1.89,0.68l1.69,0.06l0.37,-0.87l-0.81,-1.37l0.42,0.06l1.63,1.72ZM533.78,180.57l0.61,0.46l0.69,-0.0l0.59,1.15l-0.68,-0.15l-1.21,-1.45Z", "name": "Azerbaijan"}, "IE": {"path": "M405.08,135.42l0.35,2.06l-1.75,2.78l-4.22,1.88l-2.84,-0.4l1.73,-3.0l-1.18,-3.53l4.6,-3.74l0.32,1.15l-0.49,1.74l0.4,0.51l1.47,-0.04l1.6,0.6Z", "name": "Ireland"}, "ID": {"path": "M756.47,287.89l0.69,4.01l2.79,1.78l0.51,-0.1l2.04,-2.59l2.71,-1.43l2.05,-0.0l3.9,1.73l2.46,0.45l0.08,15.12l-1.75,-1.54l-2.54,-0.51l-0.88,0.71l-2.32,0.06l0.69,-1.33l1.45,-0.64l0.23,-0.46l-0.65,-2.74l-1.24,-2.21l-5.04,-2.29l-2.09,-0.23l-3.68,-2.27l-0.55,0.13l-0.65,1.07l-0.52,0.12l-0.55,-1.89l-1.21,-0.78l1.84,-0.62l1.72,0.05l0.39,-0.52l-0.21,-0.66l-0.38,-0.28l-3.45,-0.0l-1.13,-1.48l-2.1,-0.43l-0.52,-0.6l2.69,-0.48l1.28,-0.78l3.66,0.94l0.3,0.71ZM757.91,300.34l-0.62,0.82l-0.1,-0.8l0.59,-1.12l0.13,1.1ZM747.38,292.98l0.34,0.72l-1.22,-0.57l-4.68,-0.1l0.27,-0.62l2.78,-0.09l2.52,0.67ZM741.05,285.25l-0.67,-2.88l0.64,-2.01l0.41,0.86l1.21,0.18l0.16,0.7l-0.1,1.68l-0.84,-0.16l-0.46,0.3l-0.34,1.34ZM739.05,293.5l-0.5,0.44l-1.34,-0.36l-0.17,-0.37l1.73,-0.08l0.27,0.36ZM721.45,284.51l-0.19,1.97l2.24,2.23l0.54,0.02l1.27,-1.07l2.75,-0.5l-0.9,1.21l-2.11,0.93l-0.16,0.6l2.22,3.01l-0.3,1.07l1.36,1.74l-2.26,0.85l-0.28,-0.31l0.12,-1.19l-1.64,-1.34l0.17,-2.23l-0.56,-0.39l-1.67,0.76l-0.23,0.39l0.3,6.17l-1.1,0.25l-0.69,-0.47l0.64,-2.21l-0.39,-2.42l-0.39,-0.34l-0.8,-0.01l-0.58,-1.29l0.98,-1.6l0.35,-1.96l1.32,-3.87ZM728.59,296.27l0.38,0.49l-0.02,1.28l-0.88,0.49l-0.53,-0.47l1.04,-1.79ZM729.04,286.98l0.27,-0.05l-0.02,0.13l-0.24,-0.08ZM721.68,284.05l0.16,-0.32l1.89,-1.65l1.83,0.68l3.16,0.35l2.94,-0.1l2.39,-1.66l-1.73,2.13l-1.66,0.43l-2.41,-0.48l-4.17,0.13l-2.39,0.51ZM730.55,310.47l1.11,-1.93l2.03,-0.82l0.08,0.62l-1.45,1.67l-1.77,0.46ZM728.12,305.88l-0.1,0.38l-3.46,0.66l-2.91,-0.27l-0.0,-0.25l1.54,-0.41l1.66,0.73l1.67,-0.19l1.61,-0.65ZM722.9,310.24l-0.64,0.03l-2.26,-1.2l1.11,-0.24l1.78,1.41ZM716.26,305.77l0.88,0.51l1.28,-0.17l0.2,0.35l-4.65,0.73l0.39,-0.67l1.15,-0.02l0.75,-0.73ZM711.66,293.84l-0.38,-0.16l-2.54,1.01l-1.12,-1.44l-1.69,-0.13l-1.16,-0.75l-3.04,0.77l-1.1,-1.15l-3.31,-0.11l-0.35,-3.05l-1.35,-0.95l-1.11,-1.98l-0.33,-2.06l0.27,-2.14l0.9,-1.01l0.37,1.15l2.09,1.49l1.53,-0.48l1.82,0.08l1.38,-1.19l1.0,-0.18l2.28,0.67l2.26,-0.53l1.52,-3.64l1.01,-0.99l0.78,-2.57l4.1,0.3l-1.11,1.77l0.02,0.46l1.7,2.2l-0.23,1.39l2.07,1.71l-2.33,0.42l-0.88,1.9l0.1,2.05l-2.4,1.9l-0.06,2.45l-0.7,2.79ZM692.58,302.03l0.35,0.26l4.8,0.25l0.78,-0.97l4.17,1.09l1.13,1.68l3.69,0.45l2.13,1.04l-1.8,0.6l-2.77,-0.99l-4.8,-0.12l-5.24,-1.41l-1.84,-0.25l-1.11,0.3l-4.26,-0.97l-0.7,-1.14l-1.59,-0.13l1.18,-1.65l2.74,0.13l2.87,1.13l0.26,0.68ZM685.53,299.17l-2.22,0.04l-2.06,-2.03l-3.15,-2.01l-2.93,-3.51l-3.11,-5.33l-2.2,-2.12l-1.64,-4.06l-2.32,-1.69l-1.27,-2.07l-1.96,-1.5l-2.51,-2.65l-0.11,-0.66l4.81,0.53l2.15,2.38l3.31,2.74l2.35,2.66l2.7,0.17l1.95,1.59l1.54,2.17l1.59,0.95l-0.84,1.71l0.15,0.52l1.44,0.87l0.79,0.1l0.4,1.58l0.87,1.4l1.96,0.39l1.0,1.31l-0.6,3.01l-0.09,3.5Z", "name": "Indonesia"}, "UA": {"path": "M492.5,162.44l1.28,-2.49l1.82,0.19l0.66,-0.23l0.09,-0.71l-0.25,-0.75l-0.79,-0.72l-0.33,-1.21l-0.86,-0.62l-0.02,-1.19l-1.13,-0.86l-1.15,-0.19l-2.04,-1.0l-1.66,0.32l-0.66,0.47l-0.92,-0.0l-0.84,0.78l-2.48,0.7l-1.18,-0.71l-3.07,-0.36l-0.89,0.43l-0.24,-0.55l-1.11,-0.7l0.35,-0.93l1.26,-1.02l-0.54,-1.23l2.04,-2.43l1.4,-0.62l0.25,-1.19l-1.04,-2.39l0.83,-0.13l1.28,-0.84l1.8,-0.07l2.47,0.26l2.86,0.81l1.88,0.06l0.86,0.44l1.04,-0.41l0.77,0.66l2.18,-0.15l0.92,0.3l0.52,-0.34l0.15,-1.53l0.56,-0.54l2.85,-0.05l0.84,-0.72l3.04,-0.18l1.23,1.46l-0.48,0.77l0.21,1.03l0.36,0.32l1.8,0.14l0.93,2.08l3.18,1.15l1.94,-0.45l1.67,1.49l1.4,-0.03l3.35,0.96l0.02,0.54l-0.96,1.59l0.47,1.97l-0.26,0.7l-2.36,0.28l-1.29,0.89l-0.23,1.38l-1.83,0.27l-1.58,0.97l-2.41,0.21l-2.16,1.17l-0.21,0.38l0.34,2.26l1.23,0.75l2.13,-0.08l-0.14,0.31l-2.65,0.53l-3.23,1.69l-0.87,-0.39l0.42,-1.1l-0.25,-0.52l-2.21,-0.73l2.35,-1.06l0.12,-0.65l-0.93,-0.82l-3.62,-0.74l-0.13,-0.89l-0.46,-0.34l-2.61,0.59l-0.91,1.69l-1.71,2.04l-0.86,-0.4l-1.62,0.27Z", "name": "Ukraine"}, "QA": {"path": "M549.33,221.64l-0.76,-0.23l-0.14,-1.64l0.84,-1.29l0.47,0.52l0.04,1.34l-0.45,1.3Z", "name": "Qatar"}, "MZ": {"path": "M508.58,318.75l-0.34,-2.57l0.51,-2.05l3.55,0.63l2.5,-0.38l1.02,-0.76l1.49,0.01l2.74,-0.98l1.66,-1.2l0.5,9.24l0.41,1.23l-0.68,1.67l-0.93,1.71l-1.5,1.5l-5.16,2.28l-2.78,2.73l-1.02,0.53l-1.71,1.8l-0.98,0.57l-0.35,2.41l1.16,1.94l0.49,2.17l0.43,0.31l-0.06,2.06l-0.39,1.17l0.5,0.72l-0.25,0.73l-0.92,0.83l-5.12,2.39l-1.22,1.36l0.21,1.13l0.58,0.39l-0.11,0.72l-1.22,-0.01l-0.73,-2.97l0.42,-3.09l-1.78,-5.37l2.49,-2.81l0.69,-1.89l0.44,-0.43l0.28,-1.53l-0.39,-0.93l0.59,-3.65l-0.01,-3.26l-1.49,-1.16l-1.2,-0.22l-1.74,-1.17l-1.92,0.01l-0.29,-2.08l7.06,-1.96l1.28,1.09l0.89,-0.1l0.67,0.44l0.1,0.73l-0.51,1.29l0.19,1.81l1.75,1.83l0.65,-0.13l0.71,-1.65l1.17,-0.86l-0.26,-3.47l-1.05,-1.85l-1.04,-0.94Z", "name": "Mozambique"}}, "height": 440.70631074413296, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0}); \ No newline at end of file diff --git a/plugins/magnific-popup/css/magnific-popup.css b/plugins/magnific-popup/css/magnific-popup.css new file mode 100644 index 0000000..76a1b4a --- /dev/null +++ b/plugins/magnific-popup/css/magnific-popup.css @@ -0,0 +1,369 @@ +/* Magnific Popup CSS */ +.mfp-bg { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1042; + overflow: hidden; + position: fixed; + background: #0b0b0b; + opacity: 0.8; + filter: alpha(opacity=80); } + +.mfp-wrap { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1043; + position: fixed; + outline: none !important; + -webkit-backface-visibility: hidden; } + +.mfp-container { + text-align: center; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + padding: 0 8px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +.mfp-container:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; } + +.mfp-align-top .mfp-container:before { + display: none; } + +.mfp-content { + position: relative; + display: inline-block; + vertical-align: middle; + margin: 0 auto; + text-align: left; + z-index: 1045; } + +.mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { + width: 100%; + cursor: auto; } + +.mfp-ajax-cur { + cursor: progress; } + +.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { + cursor: -moz-zoom-out; + cursor: -webkit-zoom-out; + cursor: zoom-out; } + +.mfp-zoom { + cursor: pointer; + cursor: -webkit-zoom-in; + cursor: -moz-zoom-in; + cursor: zoom-in; } + +.mfp-auto-cursor .mfp-content { + cursor: auto; } + +.mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; } + +.mfp-loading.mfp-figure { + display: none; } + +.mfp-hide { + display: none !important; } + +.mfp-preloader { + color: #cccccc; + position: absolute; + top: 50%; + width: auto; + text-align: center; + margin-top: -0.8em; + left: 8px; + right: 8px; + z-index: 1044; } + .mfp-preloader a { + color: #cccccc; } + .mfp-preloader a:hover { + color: white; } + +.mfp-s-ready .mfp-preloader { + display: none; } + +.mfp-s-error .mfp-content { + display: none; } + +button.mfp-close, button.mfp-arrow { + overflow: visible; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + display: block; + outline: none; + padding: 0; + z-index: 1046; + -webkit-box-shadow: none; + box-shadow: none; } +button::-moz-focus-inner { + padding: 0; + border: 0; } + +.mfp-close { + width: 44px; + height: 44px; + line-height: 44px; + position: absolute; + right: 0; + top: 0; + text-decoration: none; + text-align: center; + opacity: 0.65; + filter: alpha(opacity=65); + padding: 0 0 18px 10px; + color: white; + font-style: normal; + font-size: 28px; + font-family: Arial, Baskerville, monospace; } + .mfp-close:hover, .mfp-close:focus { + opacity: 1; + filter: alpha(opacity=100); } + .mfp-close:active { + top: 1px; } + +.mfp-close-btn-in .mfp-close { + color: #333333; } + +.mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { + color: white; + right: -6px; + text-align: right; + padding-right: 6px; + width: 100%; } + +.mfp-counter { + position: absolute; + top: 0; + right: 0; + color: #cccccc; + font-size: 12px; + line-height: 18px; + white-space: nowrap; } + +.mfp-arrow { + position: absolute; + opacity: 0.65; + filter: alpha(opacity=65); + margin: 0; + top: 50%; + margin-top: -55px; + padding: 0; + width: 90px; + height: 110px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + .mfp-arrow:active { + margin-top: -54px; } + .mfp-arrow:hover, .mfp-arrow:focus { + opacity: 1; + filter: alpha(opacity=100); } + .mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a { + content: ''; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; } + .mfp-arrow:after, .mfp-arrow .mfp-a { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; } + .mfp-arrow:before, .mfp-arrow .mfp-b { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; } + +.mfp-arrow-left { + left: 0; } + .mfp-arrow-left:after, .mfp-arrow-left .mfp-a { + border-right: 17px solid white; + margin-left: 31px; } + .mfp-arrow-left:before, .mfp-arrow-left .mfp-b { + margin-left: 25px; + border-right: 27px solid #3f3f3f; } + +.mfp-arrow-right { + right: 0; } + .mfp-arrow-right:after, .mfp-arrow-right .mfp-a { + border-left: 17px solid white; + margin-left: 39px; } + .mfp-arrow-right:before, .mfp-arrow-right .mfp-b { + border-left: 27px solid #3f3f3f; } + +.mfp-iframe-holder { + padding-top: 40px; + padding-bottom: 40px; } + .mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; } + .mfp-iframe-holder .mfp-close { + top: -40px; } + +.mfp-iframe-scaler { + width: 100%; + height: 0; + overflow: hidden; + padding-top: 56.25%; } + .mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: black; } + +/* Main image in popup */ +img.mfp-img { + width: auto; + max-width: 100%; + height: auto; + display: block; + line-height: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 40px 0 40px; + margin: 0 auto; } + +/* The shadow behind the image */ +.mfp-figure { + line-height: 0; } + .mfp-figure:after { + content: ''; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444444; } + .mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; } + .mfp-figure figure { + margin: 0; } + +.mfp-bottom-bar { + margin-top: -36px; + position: absolute; + top: 100%; + left: 0; + width: 100%; + cursor: auto; } + +.mfp-title { + text-align: left; + line-height: 18px; + color: #f3f3f3; + word-wrap: break-word; + padding-right: 36px; } + +.mfp-image-holder .mfp-content { + max-width: 100%; } + +.mfp-gallery .mfp-image-holder .mfp-figure { + cursor: pointer; } + +@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { + /** + * Remove all paddings around the image on small screen + */ + .mfp-img-mobile .mfp-image-holder { + padding-left: 0; + padding-right: 0; } + .mfp-img-mobile img.mfp-img { + padding: 0; } + .mfp-img-mobile .mfp-figure:after { + top: 0; + bottom: 0; } + .mfp-img-mobile .mfp-figure small { + display: inline; + margin-left: 5px; } + .mfp-img-mobile .mfp-bottom-bar { + background: rgba(0, 0, 0, 0.6); + bottom: 0; + margin: 0; + top: auto; + padding: 3px 5px; + position: fixed; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; } + .mfp-img-mobile .mfp-counter { + right: 5px; + top: 3px; } + .mfp-img-mobile .mfp-close { + top: 0; + right: 0; + width: 35px; + height: 35px; + line-height: 35px; + background: rgba(0, 0, 0, 0.6); + position: fixed; + text-align: center; + padding: 0; } } + +@media all and (max-width: 900px) { + .mfp-arrow { + -webkit-transform: scale(0.75); + transform: scale(0.75); } + .mfp-arrow-left { + -webkit-transform-origin: 0; + transform-origin: 0; } + .mfp-arrow-right { + -webkit-transform-origin: 100%; + transform-origin: 100%; } + .mfp-container { + padding-left: 6px; + padding-right: 6px; } } + +.mfp-ie7 .mfp-img { + padding: 0; } +.mfp-ie7 .mfp-bottom-bar { + width: 600px; + left: 50%; + margin-left: -300px; + margin-top: 5px; + padding-bottom: 5px; } +.mfp-ie7 .mfp-container { + padding: 0; } +.mfp-ie7 .mfp-content { + padding-top: 44px; } +.mfp-ie7 .mfp-close { + top: 0; + right: 0; + padding-top: 0; } diff --git a/plugins/magnific-popup/js/jquery.magnific-popup.min.js b/plugins/magnific-popup/js/jquery.magnific-popup.min.js new file mode 100644 index 0000000..2e5e166 --- /dev/null +++ b/plugins/magnific-popup/js/jquery.magnific-popup.min.js @@ -0,0 +1,4 @@ +/*! Magnific Popup - v1.0.0 - 2014-12-12 +* http://dimsemenov.com/plugins/magnific-popup/ +* Copyright (c) 2014 Dmitry Semenov; */ +(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(window.jQuery||window.Zepto)})(function(e){var t,n,i,o,r,a,s,l="Close",c="BeforeClose",d="AfterClose",u="BeforeAppend",p="MarkupParse",f="Open",m="Change",g="mfp",h="."+g,v="mfp-ready",C="mfp-removing",y="mfp-prevent-close",w=function(){},b=!!window.jQuery,I=e(window),x=function(e,n){t.ev.on(g+e+h,n)},k=function(t,n,i,o){var r=document.createElement("div");return r.className="mfp-"+t,i&&(r.innerHTML=i),o?n&&n.appendChild(r):(r=e(r),n&&r.appendTo(n)),r},T=function(n,i){t.ev.triggerHandler(g+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},E=function(n){return n===s&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),s=n),t.currTemplate.closeBtn},_=function(){e.magnificPopup.instance||(t=new w,t.init(),e.magnificPopup.instance=t)},S=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1};w.prototype={constructor:w,init:function(){var n=navigator.appVersion;t.isIE7=-1!==n.indexOf("MSIE 7."),t.isIE8=-1!==n.indexOf("MSIE 8."),t.isLowIE=t.isIE7||t.isIE8,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=S(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),o=e(document),t.popupsCache={}},open:function(n){i||(i=e(document.body));var r;if(n.isObj===!1){t.items=n.items.toArray(),t.index=0;var s,l=n.items;for(r=0;l.length>r;r++)if(s=l[r],s.parsed&&(s=s.el[0]),s===n.el[0]){t.index=r;break}}else t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(t.isOpen)return t.updateItemHTML(),void 0;t.types=[],a="",t.ev=n.mainEl&&n.mainEl.length?n.mainEl.eq(0):o,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=k("bg").on("click"+h,function(){t.close()}),t.wrap=k("wrap").attr("tabindex",-1).on("click"+h,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=k("container",t.wrap)),t.contentContainer=k("content"),t.st.preloader&&(t.preloader=k("preloader",t.container,t.st.tLoading));var c=e.magnificPopup.modules;for(r=0;c.length>r;r++){var d=c[r];d=d.charAt(0).toUpperCase()+d.slice(1),t["init"+d].call(t)}T("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(x(p,function(e,t,n,i){n.close_replaceWith=E(i.type)}),a+=" mfp-close-btn-in"):t.wrap.append(E())),t.st.alignTop&&(a+=" mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:I.scrollTop(),position:"absolute"}),(t.st.fixedBgPos===!1||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:o.height(),position:"absolute"}),t.st.enableEscapeKey&&o.on("keyup"+h,function(e){27===e.keyCode&&t.close()}),I.on("resize"+h,function(){t.updateSize()}),t.st.closeOnContentClick||(a+=" mfp-auto-cursor"),a&&t.wrap.addClass(a);var u=t.wH=I.height(),m={};if(t.fixedContentPos&&t._hasScrollBar(u)){var g=t._getScrollbarSize();g&&(m.marginRight=g)}t.fixedContentPos&&(t.isIE7?e("body, html").css("overflow","hidden"):m.overflow="hidden");var C=t.st.mainClass;return t.isIE7&&(C+=" mfp-ie7"),C&&t._addClassToMFP(C),t.updateItemHTML(),T("BuildControls"),e("html").css(m),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||i),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(v),t._setFocus()):t.bgOverlay.addClass(v),o.on("focusin"+h,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),T(f),n},close:function(){t.isOpen&&(T(c),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(C),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){T(l);var n=C+" "+v+" ";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+" "),t._removeClassFromMFP(n),t.fixedContentPos){var i={marginRight:""};t.isIE7?e("body, html").css("overflow",""):i.overflow="",e("html").css(i)}o.off("keyup"+h+" focusin"+h),t.ev.off(h),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&t.currTemplate[t.currItem.type]!==!0||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,T(d)},updateSize:function(e){if(t.isIOS){var n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else t.wH=e||I.height();t.fixedContentPos||t.wrap.css("height",t.wH),T("Resize")},updateItemHTML:function(){var n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var i=n.type;if(T("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var o=t.st[i]?t.st[i].markup:!1;T("FirstMarkupParse",o),t.currTemplate[i]=o?e(o):!0}r&&r!==n.type&&t.container.removeClass("mfp-"+r+"-holder");var a=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(a,i),n.preloaded=!0,T(m,n),r=n.type,t.container.prepend(t.contentContainer),T("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&t.currTemplate[n]===!0?t.content.find(".mfp-close").length||t.content.append(E()):t.content=e:t.content="",T(u),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var i,o=t.items[n];if(o.tagName?o={el:e(o)}:(i=o.type,o={data:o,src:o.src}),o.el){for(var r=t.types,a=0;r.length>a;a++)if(o.el.hasClass("mfp-"+r[a])){i=r[a];break}o.src=o.el.attr("data-mfp-src"),o.src||(o.src=o.el.attr("href"))}return o.type=i||t.st.type||"inline",o.index=n,o.parsed=!0,t.items[n]=o,T("ElementParse",o),t.items[n]},addGroup:function(e,n){var i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var o="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(o).on(o,i)):(n.isObj=!1,n.delegate?e.off(o).on(o,n.delegate,i):(n.items=e,e.off(o).on(o,i)))},_openClick:function(n,i,o){var r=void 0!==o.midClick?o.midClick:e.magnificPopup.defaults.midClick;if(r||2!==n.which&&!n.ctrlKey&&!n.metaKey){var a=void 0!==o.disableOn?o.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else if(a>I.width())return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),o.el=e(n.mfpEl),o.delegate&&(o.items=i.find(o.delegate)),t.open(o)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var o={status:e,text:i};T("UpdateStatus",o),e=o.status,i=o.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(y)){var i=t.st.closeOnContentClick,o=t.st.closeOnBgClick;if(i&&o)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else if(o&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?o.height():document.body.scrollHeight)>(e||I.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){return n.target===t.wrap[0]||e.contains(t.wrap[0],n.target)?void 0:(t._setFocus(),!1)},_parseMarkup:function(t,n,i){var o;i.data&&(n=e.extend(i.data,n)),T(p,[t,n,i]),e.each(n,function(e,n){if(void 0===n||n===!1)return!0;if(o=e.split("_"),o.length>1){var i=t.find(h+"-"+o[0]);if(i.length>0){var r=o[1];"replaceWith"===r?i[0]!==n[0]&&i.replaceWith(n):"img"===r?i.is("img")?i.attr("src",n):i.replaceWith('<img src="'+n+'" class="'+i.attr("class")+'" />'):i.attr(o[1],n)}}else t.find(h+"-"+e).html(n)})},_getScrollbarSize:function(){if(void 0===t.scrollbarSize){var e=document.createElement("div");e.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return t.scrollbarSize}},e.magnificPopup={instance:null,proto:w.prototype,modules:[],open:function(t,n){return _(),t=t?e.extend(!0,{},t):{},t.isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&times;</button>',tClose:"Close (Esc)",tLoading:"Loading..."}},e.fn.magnificPopup=function(n){_();var i=e(this);if("string"==typeof n)if("open"===n){var o,r=b?i.data("magnificPopup"):i[0].magnificPopup,a=parseInt(arguments[1],10)||0;r.items?o=r.items[a]:(o=i,r.delegate&&(o=o.find(r.delegate)),o=o.eq(a)),t._openClick({mfpEl:o},i,r)}else t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else n=e.extend(!0,{},n),b?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return i};var P,O,z,M="inline",B=function(){z&&(O.after(z.addClass(P)).detach(),z=null)};e.magnificPopup.registerModule(M,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){t.types.push(M),x(l+"."+M,function(){B()})},getInline:function(n,i){if(B(),n.src){var o=t.st.inline,r=e(n.src);if(r.length){var a=r[0].parentNode;a&&a.tagName&&(O||(P=o.hiddenClass,O=k(P),P="mfp-"+P),z=r.after(O).detach().removeClass(P)),t.updateStatus("ready")}else t.updateStatus("error",o.tNotFound),r=e("<div>");return n.inlineElement=r,r}return t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var F,H="ajax",L=function(){F&&i.removeClass(F)},A=function(){L(),t.req&&t.req.abort()};e.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){t.types.push(H),F=t.st.ajax.cursor,x(l+"."+H,A),x("BeforeChange."+H,A)},getAjax:function(n){F&&i.addClass(F),t.updateStatus("loading");var o=e.extend({url:n.src,success:function(i,o,r){var a={data:i,xhr:r};T("ParseAjax",a),t.appendContent(e(a.data),H),n.finished=!0,L(),t._setFocus(),setTimeout(function(){t.wrap.addClass(v)},16),t.updateStatus("ready"),T("AjaxContentAdded")},error:function(){L(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return t.req=e.ajax(o),""}}});var j,N=function(n){if(n.data&&void 0!==n.data.title)return n.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return i.call(t,n);if(n.el)return n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var e=t.st.image,n=".image";t.types.push("image"),x(f+n,function(){"image"===t.currItem.type&&e.cursor&&i.addClass(e.cursor)}),x(l+n,function(){e.cursor&&i.removeClass(e.cursor),I.off("resize"+h)}),x("Resize"+n,t.resizeImage),t.isLowIE&&x("AfterChange",t.resizeImage)},resizeImage:function(){var e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,j&&clearInterval(j),e.isCheckingImgSize=!1,T("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var n=0,i=e.img[0],o=function(r){j&&clearInterval(j),j=setInterval(function(){return i.naturalWidth>0?(t._onImageHasSize(e),void 0):(n>200&&clearInterval(j),n++,3===n?o(10):40===n?o(50):100===n&&o(500),void 0)},r)};o(1)},getImage:function(n,i){var o=0,r=function(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,T("ImageLoadComplete")):(o++,200>o?setTimeout(r,100):a()))},a=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,l=i.find(".mfp-img");if(l.length){var c=document.createElement("img");c.className="mfp-img",n.el&&n.el.find("img").length&&(c.alt=n.el.find("img").attr("alt")),n.img=e(c).on("load.mfploader",r).on("error.mfploader",a),c.src=n.src,l.is("img")&&(n.img=n.img.clone()),c=n.img[0],c.naturalWidth>0?n.hasSize=!0:c.width||(n.hasSize=!1)}return t._parseMarkup(i,{title:N(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(j&&clearInterval(j),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}});var W,R=function(){return void 0===W&&(W=void 0!==document.createElement("p").style.MozTransform),W};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var e,n=t.st.zoom,i=".zoom";if(n.enabled&&t.supportsTransition){var o,r,a=n.duration,s=function(e){var t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all "+n.duration/1e3+"s "+n.easing,o={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return o["-webkit-"+r]=o["-moz-"+r]=o["-o-"+r]=o[r]=i,t.css(o),t},d=function(){t.content.css("visibility","visible")};x("BuildControls"+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.content.css("visibility","hidden"),e=t._getItemToZoom(),!e)return d(),void 0;r=s(e),r.css(t._getOffset()),t.wrap.append(r),o=setTimeout(function(){r.css(t._getOffset(!0)),o=setTimeout(function(){d(),setTimeout(function(){r.remove(),e=r=null,T("ZoomAnimationEnded")},16)},a)},16)}}),x(c+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.st.removalDelay=a,!e){if(e=t._getItemToZoom(),!e)return;r=s(e)}r.css(t._getOffset(!0)),t.wrap.append(r),t.content.css("visibility","hidden"),setTimeout(function(){r.css(t._getOffset())},16)}}),x(l+i,function(){t._allowZoom()&&(d(),r&&r.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return t.currItem.hasSize?t.currItem.img:!1},_getOffset:function(n){var i;i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem);var o=i.offset(),r=parseInt(i.css("padding-top"),10),a=parseInt(i.css("padding-bottom"),10);o.top-=e(window).scrollTop()-r;var s={width:i.width(),height:(b?i.innerHeight():i[0].offsetHeight)-a-r};return R()?s["-moz-transform"]=s.transform="translate("+o.left+"px,"+o.top+"px)":(s.left=o.left,s.top=o.top),s}}});var Z="iframe",q="//about:blank",D=function(e){if(t.currTemplate[Z]){var n=t.currTemplate[Z].find("iframe");n.length&&(e||(n[0].src=q),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(Z,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(Z),x("BeforeChange",function(e,t,n){t!==n&&(t===Z?D():n===Z&&D(!0))}),x(l+"."+Z,function(){D()})},getIframe:function(n,i){var o=n.src,r=t.st.iframe;e.each(r.patterns,function(){return o.indexOf(this.index)>-1?(this.id&&(o="string"==typeof this.id?o.substr(o.lastIndexOf(this.id)+this.id.length,o.length):this.id.call(this,o)),o=this.src.replace("%id%",o),!1):void 0});var a={};return r.srcAction&&(a[r.srcAction]=o),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var K=function(e){var n=t.items.length;return e>n-1?e-n:0>e?n+e:e},Y=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,i=".mfp-gallery",r=Boolean(e.fn.mfpFastClick);return t.direction=!0,n&&n.enabled?(a+=" mfp-gallery",x(f+i,function(){n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function(){return t.items.length>1?(t.next(),!1):void 0}),o.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),x("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),x(p+i,function(e,i,o,r){var a=t.items.length;o.counter=a>1?Y(n.tCounter,r.index,a):""}),x("BuildControls"+i,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,o=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(y),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(y),s=r?"mfpFastClick":"click";o[s](function(){t.prev()}),a[s](function(){t.next()}),t.isIE7&&(k("b",o[0],!1,!0),k("a",o[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(o.add(a))}}),x(m+i,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),x(l+i,function(){o.off(i),t.wrap.off("click"+i),t.arrowLeft&&r&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null}),void 0):!1},next:function(){t.direction=!0,t.index=K(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=K(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),o=Math.min(n[1],t.items.length);for(e=1;(t.direction?o:i)>=e;e++)t._preloadItem(t.index+e);for(e=1;(t.direction?i:o)>=e;e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=K(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),T("LazyLoad",i),"image"===i.type&&(i.img=e('<img class="mfp-img" />').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,T("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(x("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),x("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function(){var t=1e3,n="ontouchstart"in window,i=function(){I.off("touchmove"+r+" touchend"+r)},o="mfpFastClick",r="."+o;e.fn.mfpFastClick=function(o){return e(this).each(function(){var a,s=e(this);if(n){var l,c,d,u,p,f;s.on("touchstart"+r,function(e){u=!1,f=1,p=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],c=p.clientX,d=p.clientY,I.on("touchmove"+r,function(e){p=e.originalEvent?e.originalEvent.touches:e.touches,f=p.length,p=p[0],(Math.abs(p.clientX-c)>10||Math.abs(p.clientY-d)>10)&&(u=!0,i())}).on("touchend"+r,function(e){i(),u||f>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function(){a=!1},t),o())})})}s.on("click"+r,function(){a||o()})})},e.fn.destroyMfpFastClick=function(){e(this).off("touchstart"+r+" click"+r),n&&I.off("touchmove"+r+" touchend"+r)}}(),_()}); \ No newline at end of file diff --git a/plugins/moment/moment.js b/plugins/moment/moment.js new file mode 100644 index 0000000..714b4c4 --- /dev/null +++ b/plugins/moment/moment.js @@ -0,0 +1,4195 @@ +//! moment.js +//! version : 2.14.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, function () { 'use strict'; + + var hookCallback; + + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + } + + function isObject(input) { + return Object.prototype.toString.call(input) === '[object Object]'; + } + + function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; + } + + function valid__isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + m._isValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + m._isValid = m._isValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + function isUndefined(input) { + return input === void 0; + } + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = utils_hooks__hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(null, msg); + } + if (firstTime) { + warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + utils_hooks__hooks.deprecationHandler = null; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + } + + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; + } + + function Locale(config) { + if (config != null) { + this.set(config); + } + } + + var keys; + + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + var priorities = {}; + + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } + + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); + } + }; + } + + function get_set__get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } + + function get_set__set (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + // MOMENTS + + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; + + var indexOf; + + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PRIORITY + + addUnitPriority('month', 8); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } + + function units_month__handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = create_utc__createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return units_month__handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } + } + + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PRIORITIES + + addUnitPriority('year', 1); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + //the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; + } + + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; + } + + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PRIORITIES + + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + // FORMATTING + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } + + function day_of_week__handleStrictParse(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = create_utc__createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return day_of_week__handleStrictParse.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = create_utc__createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } + + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + + + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PRIORITY + addUnitPriority('hour', 13); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + ordinalParse: defaultOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse + }; + + // internal storage for locale config files + var locales = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locale_locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = locale_locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + // treat as if there is no base config + deprecateSimple('parentLocaleUndefined', + 'specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/'); + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + + // returns locale data + function locale_locales__getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function locale_locales__listLocales() { + return keys(locales); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); + } + } + + utils_hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(utils_hooks__hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // constant that refers to the ISO standard + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (isDate(input)) { + config._d = input; + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!valid__isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(utils_hooks__hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = ((string || '').match(matcher) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + } else if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(matchOffset, this._i)); + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? local__createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + create__createDuration.fn = Duration.prototype; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } + + function moment_calendar__calendar (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = utils_hooks__hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function to_type__valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return new Date(this.valueOf()); + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function moment_valid__isValid () { + return valid__isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PRIORITY + + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); + + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PRIORITY + + addUnitPriority('quarter', 7); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PRIOROITY + addUnitPriority('date', 9); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + // FORMATTING + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PRIORITY + addUnitPriority('dayOfYear', 4); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // FORMATTING + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PRIORITY + + addUnitPriority('minute', 14); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + // FORMATTING + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PRIORITY + + addUnitPriority('second', 15); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + // FORMATTING + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PRIORITY + + addUnitPriority('millisecond', 16); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + // FORMATTING + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = stringGet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isSameOrAfter = isSameOrAfter; + momentPrototype__proto.isSameOrBefore = isSameOrBefore; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = stringSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = toJSON; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + momentPrototype__proto.creationData = creationData; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + function preParsePostFormat (string) { + return string; + } + + var prototype__proto = Locale.prototype; + + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto.invalidDate = invalidDate; + prototype__proto.ordinal = ordinal; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + prototype__proto.monthsRegex = monthsRegex; + prototype__proto.monthsShortRegex = monthsShortRegex; + + // Week + prototype__proto.week = localeWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + prototype__proto.weekdaysRegex = weekdaysRegex; + prototype__proto.weekdaysShortRegex = weekdaysShortRegex; + prototype__proto.weekdaysMinRegex = weekdaysMinRegex; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); + } + + function listMonthsImpl (format, index, field) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = lists__get(format, i, field, 'month'); + } + return out; + } + + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = locale_locales__getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return lists__get(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = lists__get(format, (i + shift) % 7, field, 'day'); + } + return out; + } + + function lists__listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); + } + + function lists__listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } + + function lists__listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } + + function lists__listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } + + function lists__listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } + + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); + + var mathAbs = Math.abs; + + function duration_abs__abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } + + function makeGetter(name) { + return function () { + return this._data[name]; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set the rounding function for relative time strings + function duration_humanize__getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } + + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + var seconds = iso_string__abs(this._milliseconds) / 1000; + var days = iso_string__abs(this._days); + var months = iso_string__abs(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); + } + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + utils_hooks__hooks.version = '2.14.1'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.now = now; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.updateLocale = updateLocale; + utils_hooks__hooks.locales = locale_locales__listLocales; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + utils_hooks__hooks.calendarFormat = getCalendarFormat; + utils_hooks__hooks.prototype = momentPrototype; + + var _moment = utils_hooks__hooks; + + return _moment; + +})); \ No newline at end of file diff --git a/plugins/morris/morris.css b/plugins/morris/morris.css new file mode 100644 index 0000000..209f091 --- /dev/null +++ b/plugins/morris/morris.css @@ -0,0 +1,2 @@ +.morris-hover{position:absolute;z-index:1000}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255,255,255,0.8);border:solid 2px rgba(230,230,230,0.8);font-family:sans-serif;font-size:12px;text-align:center}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0} +.morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0} diff --git a/plugins/morris/morris.min.js b/plugins/morris/morris.min.js new file mode 100644 index 0000000..c3bda2f --- /dev/null +++ b/plugins/morris/morris.min.js @@ -0,0 +1,7 @@ +/* @license +morris.js v0.5.0 +Copyright 2014 Olly Smith All rights reserved. +Licensed under the BSD-2-Clause License. +*/ +(function(){var a,b,c,d,e=[].slice,f=function(a,b){return function(){return a.apply(b,arguments)}},g={}.hasOwnProperty,h=function(a,b){function c(){this.constructor=a}for(var d in b)g.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},i=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=window.Morris={},a=jQuery,b.EventEmitter=function(){function a(){}return a.prototype.on=function(a,b){return null==this.handlers&&(this.handlers={}),null==this.handlers[a]&&(this.handlers[a]=[]),this.handlers[a].push(b),this},a.prototype.fire=function(){var a,b,c,d,f,g,h;if(c=arguments[0],a=2<=arguments.length?e.call(arguments,1):[],null!=this.handlers&&null!=this.handlers[c]){for(g=this.handlers[c],h=[],d=0,f=g.length;f>d;d++)b=g[d],h.push(b.apply(null,a));return h}},a}(),b.commas=function(a){var b,c,d,e;return null!=a?(d=0>a?"-":"",b=Math.abs(a),c=Math.floor(b).toFixed(0),d+=c.replace(/(?=(?:\d{3})+$)(?!^)/g,","),e=b.toString(),e.length>c.length&&(d+=e.slice(c.length)),d):"-"},b.pad2=function(a){return(10>a?"0":"")+a},b.Grid=function(c){function d(b){this.resizeHandler=f(this.resizeHandler,this);var c=this;if(this.el="string"==typeof b.element?a(document.getElementById(b.element)):a(b.element),null==this.el||0===this.el.length)throw new Error("Graph container element not found");"static"===this.el.css("position")&&this.el.css("position","relative"),this.options=a.extend({},this.gridDefaults,this.defaults||{},b),"string"==typeof this.options.units&&(this.options.postUnits=b.units),this.raphael=new Raphael(this.el[0]),this.elementWidth=null,this.elementHeight=null,this.dirty=!1,this.selectFrom=null,this.init&&this.init(),this.setData(this.options.data),this.el.bind("mousemove",function(a){var b,d,e,f,g;return d=c.el.offset(),g=a.pageX-d.left,c.selectFrom?(b=c.data[c.hitTest(Math.min(g,c.selectFrom))]._x,e=c.data[c.hitTest(Math.max(g,c.selectFrom))]._x,f=e-b,c.selectionRect.attr({x:b,width:f})):c.fire("hovermove",g,a.pageY-d.top)}),this.el.bind("mouseleave",function(){return c.selectFrom&&(c.selectionRect.hide(),c.selectFrom=null),c.fire("hoverout")}),this.el.bind("touchstart touchmove touchend",function(a){var b,d;return d=a.originalEvent.touches[0]||a.originalEvent.changedTouches[0],b=c.el.offset(),c.fire("hovermove",d.pageX-b.left,d.pageY-b.top)}),this.el.bind("click",function(a){var b;return b=c.el.offset(),c.fire("gridclick",a.pageX-b.left,a.pageY-b.top)}),this.options.rangeSelect&&(this.selectionRect=this.raphael.rect(0,0,0,this.el.innerHeight()).attr({fill:this.options.rangeSelectColor,stroke:!1}).toBack().hide(),this.el.bind("mousedown",function(a){var b;return b=c.el.offset(),c.startRange(a.pageX-b.left)}),this.el.bind("mouseup",function(a){var b;return b=c.el.offset(),c.endRange(a.pageX-b.left),c.fire("hovermove",a.pageX-b.left,a.pageY-b.top)})),this.options.resize&&a(window).bind("resize",function(){return null!=c.timeoutId&&window.clearTimeout(c.timeoutId),c.timeoutId=window.setTimeout(c.resizeHandler,100)}),this.el.css("-webkit-tap-highlight-color","rgba(0,0,0,0)"),this.postInit&&this.postInit()}return h(d,c),d.prototype.gridDefaults={dateFormat:null,axes:!0,grid:!0,gridLineColor:"#aaa",gridStrokeWidth:.5,gridTextColor:"#888",gridTextSize:12,gridTextFamily:"sans-serif",gridTextWeight:"normal",hideHover:!1,yLabelFormat:null,xLabelAngle:0,numLines:5,padding:25,parseTime:!0,postUnits:"",preUnits:"",ymax:"auto",ymin:"auto 0",goals:[],goalStrokeWidth:1,goalLineColors:["#666633","#999966","#cc6666","#663333"],events:[],eventStrokeWidth:1,eventLineColors:["#005a04","#ccffbb","#3a5f0b","#005502"],rangeSelect:null,rangeSelectColor:"#eef",resize:!1},d.prototype.setData=function(a,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return null==c&&(c=!0),this.options.data=a,null==a||0===a.length?(this.data=[],this.raphael.clear(),null!=this.hover&&this.hover.hide(),void 0):(o=this.cumulative?0:null,p=this.cumulative?0:null,this.options.goals.length>0&&(h=Math.min.apply(Math,this.options.goals),g=Math.max.apply(Math,this.options.goals),p=null!=p?Math.min(p,h):h,o=null!=o?Math.max(o,g):g),this.data=function(){var c,d,g;for(g=[],f=c=0,d=a.length;d>c;f=++c)j=a[f],i={src:j},i.label=j[this.options.xkey],this.options.parseTime?(i.x=b.parseDate(i.label),this.options.dateFormat?i.label=this.options.dateFormat(i.x):"number"==typeof i.label&&(i.label=new Date(i.label).toString())):(i.x=f,this.options.xLabelFormat&&(i.label=this.options.xLabelFormat(i))),l=0,i.y=function(){var a,b,c,d;for(c=this.options.ykeys,d=[],e=a=0,b=c.length;b>a;e=++a)n=c[e],q=j[n],"string"==typeof q&&(q=parseFloat(q)),null!=q&&"number"!=typeof q&&(q=null),null!=q&&(this.cumulative?l+=q:null!=o?(o=Math.max(q,o),p=Math.min(q,p)):o=p=q),this.cumulative&&null!=l&&(o=Math.max(l,o),p=Math.min(l,p)),d.push(q);return d}.call(this),g.push(i);return g}.call(this),this.options.parseTime&&(this.data=this.data.sort(function(a,b){return(a.x>b.x)-(b.x>a.x)})),this.xmin=this.data[0].x,this.xmax=this.data[this.data.length-1].x,this.events=[],this.options.events.length>0&&(this.events=this.options.parseTime?function(){var a,c,e,f;for(e=this.options.events,f=[],a=0,c=e.length;c>a;a++)d=e[a],f.push(b.parseDate(d));return f}.call(this):this.options.events,this.xmax=Math.max(this.xmax,Math.max.apply(Math,this.events)),this.xmin=Math.min(this.xmin,Math.min.apply(Math,this.events))),this.xmin===this.xmax&&(this.xmin-=1,this.xmax+=1),this.ymin=this.yboundary("min",p),this.ymax=this.yboundary("max",o),this.ymin===this.ymax&&(p&&(this.ymin-=1),this.ymax+=1),((r=this.options.axes)===!0||"both"===r||"y"===r||this.options.grid===!0)&&(this.options.ymax===this.gridDefaults.ymax&&this.options.ymin===this.gridDefaults.ymin?(this.grid=this.autoGridLines(this.ymin,this.ymax,this.options.numLines),this.ymin=Math.min(this.ymin,this.grid[0]),this.ymax=Math.max(this.ymax,this.grid[this.grid.length-1])):(k=(this.ymax-this.ymin)/(this.options.numLines-1),this.grid=function(){var a,b,c,d;for(d=[],m=a=b=this.ymin,c=this.ymax;k>0?c>=a:a>=c;m=a+=k)d.push(m);return d}.call(this))),this.dirty=!0,c?this.redraw():void 0)},d.prototype.yboundary=function(a,b){var c,d;return c=this.options["y"+a],"string"==typeof c?"auto"===c.slice(0,4)?c.length>5?(d=parseInt(c.slice(5),10),null==b?d:Math[a](b,d)):null!=b?b:0:parseInt(c,10):c},d.prototype.autoGridLines=function(a,b,c){var d,e,f,g,h,i,j,k,l;return h=b-a,l=Math.floor(Math.log(h)/Math.log(10)),j=Math.pow(10,l),e=Math.floor(a/j)*j,d=Math.ceil(b/j)*j,i=(d-e)/(c-1),1===j&&i>1&&Math.ceil(i)!==i&&(i=Math.ceil(i),d=e+i*(c-1)),0>e&&d>0&&(e=Math.floor(a/i)*i,d=Math.ceil(b/i)*i),1>i?(g=Math.floor(Math.log(i)/Math.log(10)),f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(parseFloat(k.toFixed(1-g)));return b}()):f=function(){var a,b;for(b=[],k=a=e;i>0?d>=a:a>=d;k=a+=i)b.push(k);return b}(),f},d.prototype._calc=function(){var a,b,c,d,e,f,g,h;return e=this.el.width(),c=this.el.height(),(this.elementWidth!==e||this.elementHeight!==c||this.dirty)&&(this.elementWidth=e,this.elementHeight=c,this.dirty=!1,this.left=this.options.padding,this.right=this.elementWidth-this.options.padding,this.top=this.options.padding,this.bottom=this.elementHeight-this.options.padding,((g=this.options.axes)===!0||"both"===g||"y"===g)&&(f=function(){var a,c,d,e;for(d=this.grid,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(this.measureText(this.yAxisFormat(b)).width);return e}.call(this),this.left+=Math.max.apply(Math,f)),((h=this.options.axes)===!0||"both"===h||"x"===h)&&(a=function(){var a,b,c;for(c=[],d=a=0,b=this.data.length;b>=0?b>a:a>b;d=b>=0?++a:--a)c.push(this.measureText(this.data[d].text,-this.options.xLabelAngle).height);return c}.call(this),this.bottom-=Math.max.apply(Math,a)),this.width=Math.max(1,this.right-this.left),this.height=Math.max(1,this.bottom-this.top),this.dx=this.width/(this.xmax-this.xmin),this.dy=this.height/(this.ymax-this.ymin),this.calc)?this.calc():void 0},d.prototype.transY=function(a){return this.bottom-(a-this.ymin)*this.dy},d.prototype.transX=function(a){return 1===this.data.length?(this.left+this.right)/2:this.left+(a-this.xmin)*this.dx},d.prototype.redraw=function(){return this.raphael.clear(),this._calc(),this.drawGrid(),this.drawGoals(),this.drawEvents(),this.draw?this.draw():void 0},d.prototype.measureText=function(a,b){var c,d;return null==b&&(b=0),d=this.raphael.text(100,100,a).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).rotate(b),c=d.getBBox(),d.remove(),c},d.prototype.yAxisFormat=function(a){return this.yLabelFormat(a)},d.prototype.yLabelFormat=function(a){return"function"==typeof this.options.yLabelFormat?this.options.yLabelFormat(a):""+this.options.preUnits+b.commas(a)+this.options.postUnits},d.prototype.drawGrid=function(){var a,b,c,d,e,f,g,h;if(this.options.grid!==!1||(e=this.options.axes)===!0||"both"===e||"y"===e){for(f=this.grid,h=[],c=0,d=f.length;d>c;c++)a=f[c],b=this.transY(a),((g=this.options.axes)===!0||"both"===g||"y"===g)&&this.drawYAxisLabel(this.left-this.options.padding/2,b,this.yAxisFormat(a)),this.options.grid?h.push(this.drawGridLine("M"+this.left+","+b+"H"+(this.left+this.width))):h.push(void 0);return h}},d.prototype.drawGoals=function(){var a,b,c,d,e,f,g;for(f=this.options.goals,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.goalLineColors[c%this.options.goalLineColors.length],g.push(this.drawGoal(b,a));return g},d.prototype.drawEvents=function(){var a,b,c,d,e,f,g;for(f=this.events,g=[],c=d=0,e=f.length;e>d;c=++d)b=f[c],a=this.options.eventLineColors[c%this.options.eventLineColors.length],g.push(this.drawEvent(b,a));return g},d.prototype.drawGoal=function(a,b){return this.raphael.path("M"+this.left+","+this.transY(a)+"H"+this.right).attr("stroke",b).attr("stroke-width",this.options.goalStrokeWidth)},d.prototype.drawEvent=function(a,b){return this.raphael.path("M"+this.transX(a)+","+this.bottom+"V"+this.top).attr("stroke",b).attr("stroke-width",this.options.eventStrokeWidth)},d.prototype.drawYAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor).attr("text-anchor","end")},d.prototype.drawGridLine=function(a){return this.raphael.path(a).attr("stroke",this.options.gridLineColor).attr("stroke-width",this.options.gridStrokeWidth)},d.prototype.startRange=function(a){return this.hover.hide(),this.selectFrom=a,this.selectionRect.attr({x:a,width:0}).show()},d.prototype.endRange=function(a){var b,c;return this.selectFrom?(c=Math.min(this.selectFrom,a),b=Math.max(this.selectFrom,a),this.options.rangeSelect.call(this.el,{start:this.data[this.hitTest(c)].x,end:this.data[this.hitTest(b)].x}),this.selectFrom=null):void 0},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.parseDate=function(a){var b,c,d,e,f,g,h,i,j,k,l;return"number"==typeof a?a:(c=a.match(/^(\d+) Q(\d)$/),e=a.match(/^(\d+)-(\d+)$/),f=a.match(/^(\d+)-(\d+)-(\d+)$/),h=a.match(/^(\d+) W(\d+)$/),i=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+)(Z|([+-])(\d\d):?(\d\d))?$/),j=a.match(/^(\d+)-(\d+)-(\d+)[ T](\d+):(\d+):(\d+(\.\d+)?)(Z|([+-])(\d\d):?(\d\d))?$/),c?new Date(parseInt(c[1],10),3*parseInt(c[2],10)-1,1).getTime():e?new Date(parseInt(e[1],10),parseInt(e[2],10)-1,1).getTime():f?new Date(parseInt(f[1],10),parseInt(f[2],10)-1,parseInt(f[3],10)).getTime():h?(k=new Date(parseInt(h[1],10),0,1),4!==k.getDay()&&k.setMonth(0,1+(4-k.getDay()+7)%7),k.getTime()+6048e5*parseInt(h[2],10)):i?i[6]?(g=0,"Z"!==i[6]&&(g=60*parseInt(i[8],10)+parseInt(i[9],10),"+"===i[7]&&(g=0-g)),Date.UTC(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)+g)):new Date(parseInt(i[1],10),parseInt(i[2],10)-1,parseInt(i[3],10),parseInt(i[4],10),parseInt(i[5],10)).getTime():j?(l=parseFloat(j[6]),b=Math.floor(l),d=Math.round(1e3*(l-b)),j[8]?(g=0,"Z"!==j[8]&&(g=60*parseInt(j[10],10)+parseInt(j[11],10),"+"===j[9]&&(g=0-g)),Date.UTC(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10)+g,b,d)):new Date(parseInt(j[1],10),parseInt(j[2],10)-1,parseInt(j[3],10),parseInt(j[4],10),parseInt(j[5],10),b,d).getTime()):new Date(parseInt(a,10),0,1).getTime())},b.Hover=function(){function c(c){null==c&&(c={}),this.options=a.extend({},b.Hover.defaults,c),this.el=a("<div class='"+this.options["class"]+"'></div>"),this.el.hide(),this.options.parent.append(this.el)}return c.defaults={"class":"morris-hover morris-default-style"},c.prototype.update=function(a,b,c){return a?(this.html(a),this.show(),this.moveTo(b,c)):this.hide()},c.prototype.html=function(a){return this.el.html(a)},c.prototype.moveTo=function(a,b){var c,d,e,f,g,h;return g=this.options.parent.innerWidth(),f=this.options.parent.innerHeight(),d=this.el.outerWidth(),c=this.el.outerHeight(),e=Math.min(Math.max(0,a-d/2),g-d),null!=b?(h=b-c-10,0>h&&(h=b+10,h+c>f&&(h=f/2-c/2))):h=f/2-c/2,this.el.css({left:e+"px",top:parseInt(h)+"px"})},c.prototype.show=function(){return this.el.show()},c.prototype.hide=function(){return this.el.hide()},c}(),b.Line=function(a){function c(a){return this.hilight=f(this.hilight,this),this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Line?(c.__super__.constructor.call(this,a),void 0):new b.Line(a)}return h(c,a),c.prototype.init=function(){return"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},c.prototype.defaults={lineWidth:3,pointSize:4,lineColors:["#0b62a4","#7A92A3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],pointStrokeWidths:[1],pointStrokeColors:["#ffffff"],pointFillColors:[],smooth:!0,xLabels:"auto",xLabelFormat:null,xLabelMargin:24,hideHover:!1},c.prototype.calc=function(){return this.calcPoints(),this.generatePaths()},c.prototype.calcPoints=function(){var a,b,c,d,e,f;for(e=this.data,f=[],c=0,d=e.length;d>c;c++)a=e[c],a._x=this.transX(a.x),a._y=function(){var c,d,e,f;for(e=a.y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b?f.push(this.transY(b)):f.push(b);return f}.call(this),f.push(a._ymax=Math.min.apply(Math,[this.bottom].concat(function(){var c,d,e,f;for(e=a._y,f=[],c=0,d=e.length;d>c;c++)b=e[c],null!=b&&f.push(b);return f}())));return f},c.prototype.hitTest=function(a){var b,c,d,e,f;if(0===this.data.length)return null;for(f=this.data.slice(1),b=d=0,e=f.length;e>d&&(c=f[b],!(a<(c._x+this.data[b]._x)/2));b=++d);return b},c.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},c.prototype.onHoverMove=function(a){var b;return b=this.hitTest(a),this.displayHoverForRow(b)},c.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.displayHoverForRow(null):void 0},c.prototype.displayHoverForRow=function(a){var b;return null!=a?((b=this.hover).update.apply(b,this.hoverContentForRow(a)),this.hilight(a)):(this.hover.hide(),this.hilight())},c.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",h=d.y,c=f=0,g=h.length;g>f;c=++f)e=h[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n "+this.options.labels[c]+":\n "+this.yLabelFormat(e)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),[b,d._x,d._ymax]},c.prototype.generatePaths=function(){var a,c,d,e;return this.paths=function(){var f,g,h,j;for(j=[],c=f=0,g=this.options.ykeys.length;g>=0?g>f:f>g;c=g>=0?++f:--f)e="boolean"==typeof this.options.smooth?this.options.smooth:(h=this.options.ykeys[c],i.call(this.options.smooth,h)>=0),a=function(){var a,b,e,f;for(e=this.data,f=[],a=0,b=e.length;b>a;a++)d=e[a],void 0!==d._y[c]&&f.push({x:d._x,y:d._y[c]});return f}.call(this),a.length>1?j.push(b.Line.createPath(a,e,this.bottom)):j.push(null);return j}.call(this)},c.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries(),this.options.hideHover===!1?this.displayHoverForRow(this.data.length-1):void 0},c.prototype.drawXAxis=function(){var a,c,d,e,f,g,h,i,j,k,l=this;for(h=this.bottom+this.options.padding/2,f=null,e=null,a=function(a,b){var c,d,g,i,j;return c=l.drawXAxisLabel(l.transX(b),h,a),j=c.getBBox(),c.transform("r"+-l.options.xLabelAngle),d=c.getBBox(),c.transform("t0,"+d.height/2+"..."),0!==l.options.xLabelAngle&&(i=-.5*j.width*Math.cos(l.options.xLabelAngle*Math.PI/180),c.transform("t"+i+",0...")),d=c.getBBox(),(null==f||f>=d.x+d.width||null!=e&&e>=d.x)&&d.x>=0&&d.x+d.width<l.el.width()?(0!==l.options.xLabelAngle&&(g=1.25*l.options.gridTextSize/Math.sin(l.options.xLabelAngle*Math.PI/180),e=d.x-g),f=d.x-l.options.xLabelMargin):c.remove()},d=this.options.parseTime?1===this.data.length&&"auto"===this.options.xLabels?[[this.data[0].label,this.data[0].x]]:b.labelSeries(this.xmin,this.xmax,this.width,this.options.xLabels,this.options.xLabelFormat):function(){var a,b,c,d;for(c=this.data,d=[],a=0,b=c.length;b>a;a++)g=c[a],d.push([g.label,g.x]);return d}.call(this),d.reverse(),k=[],i=0,j=d.length;j>i;i++)c=d[i],k.push(a(c[0],c[1]));return k},c.prototype.drawSeries=function(){var a,b,c,d,e,f;for(this.seriesPoints=[],a=b=d=this.options.ykeys.length-1;0>=d?0>=b:b>=0;a=0>=d?++b:--b)this._drawLineFor(a);for(f=[],a=c=e=this.options.ykeys.length-1;0>=e?0>=c:c>=0;a=0>=e?++c:--c)f.push(this._drawPointFor(a));return f},c.prototype._drawPointFor=function(a){var b,c,d,e,f,g;for(this.seriesPoints[a]=[],f=this.data,g=[],d=0,e=f.length;e>d;d++)c=f[d],b=null,null!=c._y[a]&&(b=this.drawLinePoint(c._x,c._y[a],this.colorFor(c,a,"point"),a)),g.push(this.seriesPoints[a].push(b));return g},c.prototype._drawLineFor=function(a){var b;return b=this.paths[a],null!==b?this.drawLinePath(b,this.colorFor(null,a,"line"),a):void 0},c.createPath=function(a,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;for(k="",c&&(g=b.Line.gradients(a)),l={y:null},h=q=0,r=a.length;r>q;h=++q)e=a[h],null!=e.y&&(null!=l.y?c?(f=g[h],j=g[h-1],i=(e.x-l.x)/4,m=l.x+i,o=Math.min(d,l.y+i*j),n=e.x-i,p=Math.min(d,e.y-i*f),k+="C"+m+","+o+","+n+","+p+","+e.x+","+e.y):k+="L"+e.x+","+e.y:c&&null==g[h]||(k+="M"+e.x+","+e.y)),l=e;return k},c.gradients=function(a){var b,c,d,e,f,g,h,i;for(c=function(a,b){return(a.y-b.y)/(a.x-b.x)},i=[],d=g=0,h=a.length;h>g;d=++g)b=a[d],null!=b.y?(e=a[d+1]||{y:null},f=a[d-1]||{y:null},null!=f.y&&null!=e.y?i.push(c(f,e)):null!=f.y?i.push(c(f,b)):null!=e.y?i.push(c(b,e)):i.push(null)):i.push(null);return i},c.prototype.hilight=function(a){var b,c,d,e,f;if(null!==this.prevHilight&&this.prevHilight!==a)for(b=c=0,e=this.seriesPoints.length-1;e>=0?e>=c:c>=e;b=e>=0?++c:--c)this.seriesPoints[b][this.prevHilight]&&this.seriesPoints[b][this.prevHilight].animate(this.pointShrinkSeries(b));if(null!==a&&this.prevHilight!==a)for(b=d=0,f=this.seriesPoints.length-1;f>=0?f>=d:d>=f;b=f>=0?++d:--d)this.seriesPoints[b][a]&&this.seriesPoints[b][a].animate(this.pointGrowSeries(b));return this.prevHilight=a},c.prototype.colorFor=function(a,b,c){return"function"==typeof this.options.lineColors?this.options.lineColors.call(this,a,b,c):"point"===c?this.options.pointFillColors[b%this.options.pointFillColors.length]||this.options.lineColors[b%this.options.lineColors.length]:this.options.lineColors[b%this.options.lineColors.length]},c.prototype.drawXAxisLabel=function(a,b,c){return this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},c.prototype.drawLinePath=function(a,b,c){return this.raphael.path(a).attr("stroke",b).attr("stroke-width",this.lineWidthForSeries(c))},c.prototype.drawLinePoint=function(a,b,c,d){return this.raphael.circle(a,b,this.pointSizeForSeries(d)).attr("fill",c).attr("stroke-width",this.pointStrokeWidthForSeries(d)).attr("stroke",this.pointStrokeColorForSeries(d))},c.prototype.pointStrokeWidthForSeries=function(a){return this.options.pointStrokeWidths[a%this.options.pointStrokeWidths.length]},c.prototype.pointStrokeColorForSeries=function(a){return this.options.pointStrokeColors[a%this.options.pointStrokeColors.length]},c.prototype.lineWidthForSeries=function(a){return this.options.lineWidth instanceof Array?this.options.lineWidth[a%this.options.lineWidth.length]:this.options.lineWidth},c.prototype.pointSizeForSeries=function(a){return this.options.pointSize instanceof Array?this.options.pointSize[a%this.options.pointSize.length]:this.options.pointSize},c.prototype.pointGrowSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)+3},25,"linear")},c.prototype.pointShrinkSeries=function(a){return Raphael.animation({r:this.pointSizeForSeries(a)},25,"linear")},c}(b.Grid),b.labelSeries=function(c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;if(j=200*(d-c)/e,i=new Date(c),n=b.LABEL_SPECS[f],void 0===n)for(r=b.AUTO_LABEL_ORDER,p=0,q=r.length;q>p;p++)if(k=r[p],m=b.LABEL_SPECS[k],j>=m.span){n=m;break}for(void 0===n&&(n=b.LABEL_SPECS.second),g&&(n=a.extend({},n,{fmt:g})),h=n.start(i),l=[];(o=h.getTime())<=d;)o>=c&&l.push([n.fmt(h),o]),n.incr(h);return l},c=function(a){return{span:60*a*1e3,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())},incr:function(b){return b.setUTCMinutes(b.getUTCMinutes()+a)}}},d=function(a){return{span:1e3*a,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes())},fmt:function(a){return""+b.pad2(a.getHours())+":"+b.pad2(a.getMinutes())+":"+b.pad2(a.getSeconds())},incr:function(b){return b.setUTCSeconds(b.getUTCSeconds()+a)}}},b.LABEL_SPECS={decade:{span:1728e8,start:function(a){return new Date(a.getFullYear()-a.getFullYear()%10,0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+10)}},year:{span:1728e7,start:function(a){return new Date(a.getFullYear(),0,1)},fmt:function(a){return""+a.getFullYear()},incr:function(a){return a.setFullYear(a.getFullYear()+1)}},month:{span:24192e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),1)},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)},incr:function(a){return a.setMonth(a.getMonth()+1)}},week:{span:6048e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+7)}},day:{span:864e5,start:function(a){return new Date(a.getFullYear(),a.getMonth(),a.getDate())},fmt:function(a){return""+a.getFullYear()+"-"+b.pad2(a.getMonth()+1)+"-"+b.pad2(a.getDate())},incr:function(a){return a.setDate(a.getDate()+1)}},hour:c(60),"30min":c(30),"15min":c(15),"10min":c(10),"5min":c(5),minute:c(1),"30sec":d(30),"15sec":d(15),"10sec":d(10),"5sec":d(5),second:d(1)},b.AUTO_LABEL_ORDER=["decade","year","month","week","day","hour","30min","15min","10min","5min","minute","30sec","15sec","10sec","5sec","second"],b.Area=function(c){function d(c){var f;return this instanceof b.Area?(f=a.extend({},e,c),this.cumulative=!f.behaveLikeLine,"auto"===f.fillOpacity&&(f.fillOpacity=f.behaveLikeLine?.8:1),d.__super__.constructor.call(this,f),void 0):new b.Area(c)}var e;return h(d,c),e={fillOpacity:"auto",behaveLikeLine:!1},d.prototype.calcPoints=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],d=0,e=f.length;e>d;d++)a=f[d],a._x=this.transX(a.x),b=0,a._y=function(){var d,e,f,g;for(f=a.y,g=[],d=0,e=f.length;e>d;d++)c=f[d],this.options.behaveLikeLine?g.push(this.transY(c)):(b+=c||0,g.push(this.transY(b)));return g}.call(this),g.push(a._ymax=Math.max.apply(Math,a._y));return g},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h;for(this.seriesPoints=[],b=this.options.behaveLikeLine?function(){f=[];for(var a=0,b=this.options.ykeys.length-1;b>=0?b>=a:a>=b;b>=0?a++:a--)f.push(a);return f}.apply(this):function(){g=[];for(var a=e=this.options.ykeys.length-1;0>=e?0>=a:a>=0;0>=e?a++:a--)g.push(a);return g}.apply(this),h=[],c=0,d=b.length;d>c;c++)a=b[c],this._drawFillFor(a),this._drawLineFor(a),h.push(this._drawPointFor(a));return h},d.prototype._drawFillFor=function(a){var b;return b=this.paths[a],null!==b?(b+="L"+this.transX(this.xmax)+","+this.bottom+"L"+this.transX(this.xmin)+","+this.bottom+"Z",this.drawFilledPath(b,this.fillForSeries(a))):void 0},d.prototype.fillForSeries=function(a){var b;return b=Raphael.rgb2hsl(this.colorFor(this.data[a],a,"line")),Raphael.hsl(b.h,this.options.behaveLikeLine?.9*b.s:.75*b.s,Math.min(.98,this.options.behaveLikeLine?1.2*b.l:1.25*b.l))},d.prototype.drawFilledPath=function(a,b){return this.raphael.path(a).attr("fill",b).attr("fill-opacity",this.options.fillOpacity).attr("stroke","none")},d}(b.Line),b.Bar=function(c){function d(c){return this.onHoverOut=f(this.onHoverOut,this),this.onHoverMove=f(this.onHoverMove,this),this.onGridClick=f(this.onGridClick,this),this instanceof b.Bar?(d.__super__.constructor.call(this,a.extend({},c,{parseTime:!1})),void 0):new b.Bar(c)}return h(d,c),d.prototype.init=function(){return this.cumulative=this.options.stacked,"always"!==this.options.hideHover?(this.hover=new b.Hover({parent:this.el}),this.on("hovermove",this.onHoverMove),this.on("hoverout",this.onHoverOut),this.on("gridclick",this.onGridClick)):void 0},d.prototype.defaults={barSizeRatio:.75,barGap:3,barColors:["#0b62a4","#7a92a3","#4da74d","#afd8f8","#edc240","#cb4b4b","#9440ed"],barOpacity:1,barRadius:[0,0,0,0],xLabelMargin:50},d.prototype.calc=function(){var a;return this.calcBars(),this.options.hideHover===!1?(a=this.hover).update.apply(a,this.hoverContentForRow(this.data.length-1)):void 0},d.prototype.calcBars=function(){var a,b,c,d,e,f,g;for(f=this.data,g=[],a=d=0,e=f.length;e>d;a=++d)b=f[a],b._x=this.left+this.width*(a+.5)/this.data.length,g.push(b._y=function(){var a,d,e,f;for(e=b.y,f=[],a=0,d=e.length;d>a;a++)c=e[a],null!=c?f.push(this.transY(c)):f.push(null);return f}.call(this));return g},d.prototype.draw=function(){var a;return((a=this.options.axes)===!0||"both"===a||"x"===a)&&this.drawXAxis(),this.drawSeries()},d.prototype.drawXAxis=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m;for(j=this.bottom+(this.options.xAxisLabelTopPadding||this.options.padding/2),g=null,f=null,m=[],a=k=0,l=this.data.length;l>=0?l>k:k>l;a=l>=0?++k:--k)h=this.data[this.data.length-1-a],b=this.drawXAxisLabel(h._x,j,h.label),i=b.getBBox(),b.transform("r"+-this.options.xLabelAngle),c=b.getBBox(),b.transform("t0,"+c.height/2+"..."),0!==this.options.xLabelAngle&&(e=-.5*i.width*Math.cos(this.options.xLabelAngle*Math.PI/180),b.transform("t"+e+",0...")),(null==g||g>=c.x+c.width||null!=f&&f>=c.x)&&c.x>=0&&c.x+c.width<this.el.width()?(0!==this.options.xLabelAngle&&(d=1.25*this.options.gridTextSize/Math.sin(this.options.xLabelAngle*Math.PI/180),f=c.x-d),m.push(g=c.x-this.options.xLabelMargin)):m.push(b.remove());return m},d.prototype.drawSeries=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;return c=this.width/this.options.data.length,h=this.options.stacked?1:this.options.ykeys.length,a=(c*this.options.barSizeRatio-this.options.barGap*(h-1))/h,this.options.barSize&&(a=Math.min(a,this.options.barSize)),l=c-a*h-this.options.barGap*(h-1),g=l/2,o=this.ymin<=0&&this.ymax>=0?this.transY(0):null,this.bars=function(){var h,l,p,q;for(p=this.data,q=[],d=h=0,l=p.length;l>h;d=++h)i=p[d],e=0,q.push(function(){var h,l,p,q;for(p=i._y,q=[],j=h=0,l=p.length;l>h;j=++h)n=p[j],null!==n?(o?(m=Math.min(n,o),b=Math.max(n,o)):(m=n,b=this.bottom),f=this.left+d*c+g,this.options.stacked||(f+=j*(a+this.options.barGap)),k=b-m,this.options.verticalGridCondition&&this.options.verticalGridCondition(i.x)&&this.drawBar(this.left+d*c,this.top,c,Math.abs(this.top-this.bottom),this.options.verticalGridColor,this.options.verticalGridOpacity,this.options.barRadius),this.options.stacked&&(m-=e),this.drawBar(f,m,a,k,this.colorFor(i,j,"bar"),this.options.barOpacity,this.options.barRadius),q.push(e+=k)):q.push(null);return q}.call(this));return q}.call(this)},d.prototype.colorFor=function(a,b,c){var d,e;return"function"==typeof this.options.barColors?(d={x:a.x,y:a.y[b],label:a.label},e={index:b,key:this.options.ykeys[b],label:this.options.labels[b]},this.options.barColors.call(this,d,e,c)):this.options.barColors[b%this.options.barColors.length]},d.prototype.hitTest=function(a){return 0===this.data.length?null:(a=Math.max(Math.min(a,this.right),this.left),Math.min(this.data.length-1,Math.floor((a-this.left)/(this.width/this.data.length))))},d.prototype.onGridClick=function(a,b){var c;return c=this.hitTest(a),this.fire("click",c,this.data[c].src,a,b)},d.prototype.onHoverMove=function(a){var b,c;return b=this.hitTest(a),(c=this.hover).update.apply(c,this.hoverContentForRow(b))},d.prototype.onHoverOut=function(){return this.options.hideHover!==!1?this.hover.hide():void 0},d.prototype.hoverContentForRow=function(a){var b,c,d,e,f,g,h,i;for(d=this.data[a],b="<div class='morris-hover-row-label'>"+d.label+"</div>",i=d.y,c=g=0,h=i.length;h>g;c=++g)f=i[c],b+="<div class='morris-hover-point' style='color: "+this.colorFor(d,c,"label")+"'>\n "+this.options.labels[c]+":\n "+this.yLabelFormat(f)+"\n</div>";return"function"==typeof this.options.hoverCallback&&(b=this.options.hoverCallback(a,this.options,b,d.src)),e=this.left+(a+.5)*this.width/this.data.length,[b,e]},d.prototype.drawXAxisLabel=function(a,b,c){var d;return d=this.raphael.text(a,b,c).attr("font-size",this.options.gridTextSize).attr("font-family",this.options.gridTextFamily).attr("font-weight",this.options.gridTextWeight).attr("fill",this.options.gridTextColor)},d.prototype.drawBar=function(a,b,c,d,e,f,g){var h,i;return h=Math.max.apply(Math,g),i=0===h||h>d?this.raphael.rect(a,b,c,d):this.raphael.path(this.roundedRect(a,b,c,d,g)),i.attr("fill",e).attr("fill-opacity",f).attr("stroke","none")},d.prototype.roundedRect=function(a,b,c,d,e){return null==e&&(e=[0,0,0,0]),["M",a,e[0]+b,"Q",a,b,a+e[0],b,"L",a+c-e[1],b,"Q",a+c,b,a+c,b+e[1],"L",a+c,b+d-e[2],"Q",a+c,b+d,a+c-e[2],b+d,"L",a+e[3],b+d,"Q",a,b+d,a,b+d-e[3],"Z"]},d}(b.Grid),b.Donut=function(c){function d(c){this.resizeHandler=f(this.resizeHandler,this),this.select=f(this.select,this),this.click=f(this.click,this);var d=this;if(!(this instanceof b.Donut))return new b.Donut(c);if(this.options=a.extend({},this.defaults,c),this.el="string"==typeof c.element?a(document.getElementById(c.element)):a(c.element),null===this.el||0===this.el.length)throw new Error("Graph placeholder not found.");void 0!==c.data&&0!==c.data.length&&(this.raphael=new Raphael(this.el[0]),this.options.resize&&a(window).bind("resize",function(){return null!=d.timeoutId&&window.clearTimeout(d.timeoutId),d.timeoutId=window.setTimeout(d.resizeHandler,100)}),this.setData(c.data))}return h(d,c),d.prototype.defaults={colors:["#0B62A4","#3980B5","#679DC6","#95BBD7","#B0CCE1","#095791","#095085","#083E67","#052C48","#042135"],backgroundColor:"#FFFFFF",labelColor:"#000000",formatter:b.commas,resize:!1},d.prototype.redraw=function(){var a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;for(this.raphael.clear(),c=this.el.width()/2,d=this.el.height()/2,n=(Math.min(c,d)-10)/3,l=0,u=this.values,o=0,r=u.length;r>o;o++)m=u[o],l+=m;for(i=5/(2*n),a=1.9999*Math.PI-i*this.data.length,g=0,f=0,this.segments=[],v=this.values,e=p=0,s=v.length;s>p;e=++p)m=v[e],j=g+i+a*(m/l),k=new b.DonutSegment(c,d,2*n,n,g,j,this.data[e].color||this.options.colors[f%this.options.colors.length],this.options.backgroundColor,f,this.raphael),k.render(),this.segments.push(k),k.on("hover",this.select),k.on("click",this.click),g=j,f+=1;for(this.text1=this.drawEmptyDonutLabel(c,d-10,this.options.labelColor,15,800),this.text2=this.drawEmptyDonutLabel(c,d+10,this.options.labelColor,14),h=Math.max.apply(Math,this.values),f=0,w=this.values,x=[],q=0,t=w.length;t>q;q++){if(m=w[q],m===h){this.select(f); +break}x.push(f+=1)}return x},d.prototype.setData=function(a){var b;return this.data=a,this.values=function(){var a,c,d,e;for(d=this.data,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(parseFloat(b.value));return e}.call(this),this.redraw()},d.prototype.click=function(a){return this.fire("click",a,this.data[a])},d.prototype.select=function(a){var b,c,d,e,f,g;for(g=this.segments,e=0,f=g.length;f>e;e++)c=g[e],c.deselect();return d=this.segments[a],d.select(),b=this.data[a],this.setLabels(b.label,this.options.formatter(b.value,b))},d.prototype.setLabels=function(a,b){var c,d,e,f,g,h,i,j;return c=2*(Math.min(this.el.width()/2,this.el.height()/2)-10)/3,f=1.8*c,e=c/2,d=c/3,this.text1.attr({text:a,transform:""}),g=this.text1.getBBox(),h=Math.min(f/g.width,e/g.height),this.text1.attr({transform:"S"+h+","+h+","+(g.x+g.width/2)+","+(g.y+g.height)}),this.text2.attr({text:b,transform:""}),i=this.text2.getBBox(),j=Math.min(f/i.width,d/i.height),this.text2.attr({transform:"S"+j+","+j+","+(i.x+i.width/2)+","+i.y})},d.prototype.drawEmptyDonutLabel=function(a,b,c,d,e){var f;return f=this.raphael.text(a,b,"").attr("font-size",d).attr("fill",c),null!=e&&f.attr("font-weight",e),f},d.prototype.resizeHandler=function(){return this.timeoutId=null,this.raphael.setSize(this.el.width(),this.el.height()),this.redraw()},d}(b.EventEmitter),b.DonutSegment=function(a){function b(a,b,c,d,e,g,h,i,j,k){this.cx=a,this.cy=b,this.inner=c,this.outer=d,this.color=h,this.backgroundColor=i,this.index=j,this.raphael=k,this.deselect=f(this.deselect,this),this.select=f(this.select,this),this.sin_p0=Math.sin(e),this.cos_p0=Math.cos(e),this.sin_p1=Math.sin(g),this.cos_p1=Math.cos(g),this.is_long=g-e>Math.PI?1:0,this.path=this.calcSegment(this.inner+3,this.inner+this.outer-5),this.selectedPath=this.calcSegment(this.inner+3,this.inner+this.outer),this.hilight=this.calcArc(this.inner)}return h(b,a),b.prototype.calcArcPoints=function(a){return[this.cx+a*this.sin_p0,this.cy+a*this.cos_p0,this.cx+a*this.sin_p1,this.cy+a*this.cos_p1]},b.prototype.calcSegment=function(a,b){var c,d,e,f,g,h,i,j,k,l;return k=this.calcArcPoints(a),c=k[0],e=k[1],d=k[2],f=k[3],l=this.calcArcPoints(b),g=l[0],i=l[1],h=l[2],j=l[3],"M"+c+","+e+("A"+a+","+a+",0,"+this.is_long+",0,"+d+","+f)+("L"+h+","+j)+("A"+b+","+b+",0,"+this.is_long+",1,"+g+","+i)+"Z"},b.prototype.calcArc=function(a){var b,c,d,e,f;return f=this.calcArcPoints(a),b=f[0],d=f[1],c=f[2],e=f[3],"M"+b+","+d+("A"+a+","+a+",0,"+this.is_long+",0,"+c+","+e)},b.prototype.render=function(){var a=this;return this.arc=this.drawDonutArc(this.hilight,this.color),this.seg=this.drawDonutSegment(this.path,this.color,this.backgroundColor,function(){return a.fire("hover",a.index)},function(){return a.fire("click",a.index)})},b.prototype.drawDonutArc=function(a,b){return this.raphael.path(a).attr({stroke:b,"stroke-width":2,opacity:0})},b.prototype.drawDonutSegment=function(a,b,c,d,e){return this.raphael.path(a).attr({fill:b,stroke:c,"stroke-width":3}).hover(d).click(e)},b.prototype.select=function(){return this.selected?void 0:(this.seg.animate({path:this.selectedPath},150,"<>"),this.arc.animate({opacity:1},150,"<>"),this.selected=!0)},b.prototype.deselect=function(){return this.selected?(this.seg.animate({path:this.path},150,"<>"),this.arc.animate({opacity:0},150,"<>"),this.selected=!1):void 0},b}(b.EventEmitter)}).call(this); \ No newline at end of file diff --git a/plugins/multiselect/css/multi-select.css b/plugins/multiselect/css/multi-select.css new file mode 100644 index 0000000..8b3bb5e --- /dev/null +++ b/plugins/multiselect/css/multi-select.css @@ -0,0 +1,93 @@ +.ms-container{ + background: transparent url('../img/switch.png') no-repeat 50% 50%; + width: 370px; +} + +.ms-container:after{ + content: "."; + display: block; + height: 0; + line-height: 0; + font-size: 0; + clear: both; + min-height: 0; + visibility: hidden; +} + +.ms-container .ms-selectable, .ms-container .ms-selection{ + background: #fff; + color: #555555; + float: left; + width: 45%; +} +.ms-container .ms-selection{ + float: right; +} + +.ms-container .ms-list{ + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + position: relative; + height: 200px; + padding: 0; + overflow-y: auto; +} + +.ms-container .ms-list.ms-focus{ + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + outline: 0; + outline: thin dotted \9; +} + +.ms-container ul{ + margin: 0; + list-style-type: none; + padding: 0; +} + +.ms-container .ms-optgroup-container{ + width: 100%; +} + +.ms-container .ms-optgroup-label{ + margin: 0; + padding: 5px 0px 0px 5px; + cursor: pointer; + color: #999; +} + +.ms-container .ms-selectable li.ms-elem-selectable, +.ms-container .ms-selection li.ms-elem-selection{ + border-bottom: 1px #eee solid; + padding: 2px 10px; + color: #555; + font-size: 14px; +} + +.ms-container .ms-selectable li.ms-hover, +.ms-container .ms-selection li.ms-hover{ + cursor: pointer; + color: #fff; + text-decoration: none; + background-color: #08c; +} + +.ms-container .ms-selectable li.disabled, +.ms-container .ms-selection li.disabled{ + background-color: #eee; + color: #aaa; + cursor: text; +} \ No newline at end of file diff --git a/plugins/multiselect/img/multiple-arrow.png b/plugins/multiselect/img/multiple-arrow.png new file mode 100644 index 0000000..fed8d0a Binary files /dev/null and b/plugins/multiselect/img/multiple-arrow.png differ diff --git a/plugins/multiselect/img/switch.png b/plugins/multiselect/img/switch.png new file mode 100644 index 0000000..7accb6a Binary files /dev/null and b/plugins/multiselect/img/switch.png differ diff --git a/plugins/multiselect/js/jquery.multi-select.js b/plugins/multiselect/js/jquery.multi-select.js new file mode 100644 index 0000000..1c2b124 --- /dev/null +++ b/plugins/multiselect/js/jquery.multi-select.js @@ -0,0 +1,528 @@ +/* +* MultiSelect v0.9.12 +* Copyright (c) 2012 Louis Cuny +* +* This program is free software. It comes without any warranty, to +* the extent permitted by applicable law. You can redistribute it +* and/or modify it under the terms of the Do What The Fuck You Want +* To Public License, Version 2, as published by Sam Hocevar. See +* http://sam.zoy.org/wtfpl/COPYING for more details. +*/ + +!function ($) { + + "use strict"; + + + /* MULTISELECT CLASS DEFINITION + * ====================== */ + + var MultiSelect = function (element, options) { + this.options = options; + this.$element = $(element); + this.$container = $('<div/>', { 'class': "ms-container" }); + this.$selectableContainer = $('<div/>', { 'class': 'ms-selectable' }); + this.$selectionContainer = $('<div/>', { 'class': 'ms-selection' }); + this.$selectableUl = $('<ul/>', { 'class': "ms-list", 'tabindex' : '-1' }); + this.$selectionUl = $('<ul/>', { 'class': "ms-list", 'tabindex' : '-1' }); + this.scrollTo = 0; + this.elemsSelector = 'li:visible:not(.ms-optgroup-label,.ms-optgroup-container,.'+options.disabledClass+')'; + }; + + MultiSelect.prototype = { + constructor: MultiSelect, + + init: function(){ + var that = this, + ms = this.$element; + + if (ms.next('.ms-container').length === 0){ + ms.css({ position: 'absolute', left: '-9999px' }); + ms.attr('id', ms.attr('id') ? ms.attr('id') : Math.ceil(Math.random()*1000)+'multiselect'); + this.$container.attr('id', 'ms-'+ms.attr('id')); + this.$container.addClass(that.options.cssClass); + ms.find('option').each(function(){ + that.generateLisFromOption(this); + }); + + this.$selectionUl.find('.ms-optgroup-label').hide(); + + if (that.options.selectableHeader){ + that.$selectableContainer.append(that.options.selectableHeader); + } + that.$selectableContainer.append(that.$selectableUl); + if (that.options.selectableFooter){ + that.$selectableContainer.append(that.options.selectableFooter); + } + + if (that.options.selectionHeader){ + that.$selectionContainer.append(that.options.selectionHeader); + } + that.$selectionContainer.append(that.$selectionUl); + if (that.options.selectionFooter){ + that.$selectionContainer.append(that.options.selectionFooter); + } + + that.$container.append(that.$selectableContainer); + that.$container.append(that.$selectionContainer); + ms.after(that.$container); + + that.activeMouse(that.$selectableUl); + that.activeKeyboard(that.$selectableUl); + + var action = that.options.dblClick ? 'dblclick' : 'click'; + + that.$selectableUl.on(action, '.ms-elem-selectable', function(){ + that.select($(this).data('ms-value')); + }); + that.$selectionUl.on(action, '.ms-elem-selection', function(){ + that.deselect($(this).data('ms-value')); + }); + + that.activeMouse(that.$selectionUl); + that.activeKeyboard(that.$selectionUl); + + ms.on('focus', function(){ + that.$selectableUl.focus(); + }) + } + + var selectedValues = ms.find('option:selected').map(function(){ return $(this).val(); }).get(); + that.select(selectedValues, 'init'); + + if (typeof that.options.afterInit === 'function') { + that.options.afterInit.call(this, this.$container); + } + }, + + 'generateLisFromOption' : function(option, index, $container){ + var that = this, + ms = that.$element, + attributes = "", + $option = $(option); + + for (var cpt = 0; cpt < option.attributes.length; cpt++){ + var attr = option.attributes[cpt]; + + if(attr.name !== 'value' && attr.name !== 'disabled'){ + attributes += attr.name+'="'+attr.value+'" '; + } + } + var selectableLi = $('<li '+attributes+'><span>'+that.escapeHTML($option.text())+'</span></li>'), + selectedLi = selectableLi.clone(), + value = $option.val(), + elementId = that.sanitize(value); + + selectableLi + .data('ms-value', value) + .addClass('ms-elem-selectable') + .attr('id', elementId+'-selectable'); + + selectedLi + .data('ms-value', value) + .addClass('ms-elem-selection') + .attr('id', elementId+'-selection') + .hide(); + + if ($option.prop('disabled') || ms.prop('disabled')){ + selectedLi.addClass(that.options.disabledClass); + selectableLi.addClass(that.options.disabledClass); + } + + var $optgroup = $option.parent('optgroup'); + + if ($optgroup.length > 0){ + var optgroupLabel = $optgroup.attr('label'), + optgroupId = that.sanitize(optgroupLabel), + $selectableOptgroup = that.$selectableUl.find('#optgroup-selectable-'+optgroupId), + $selectionOptgroup = that.$selectionUl.find('#optgroup-selection-'+optgroupId); + + if ($selectableOptgroup.length === 0){ + var optgroupContainerTpl = '<li class="ms-optgroup-container"></li>', + optgroupTpl = '<ul class="ms-optgroup"><li class="ms-optgroup-label"><span>'+optgroupLabel+'</span></li></ul>'; + + $selectableOptgroup = $(optgroupContainerTpl); + $selectionOptgroup = $(optgroupContainerTpl); + $selectableOptgroup.attr('id', 'optgroup-selectable-'+optgroupId); + $selectionOptgroup.attr('id', 'optgroup-selection-'+optgroupId); + $selectableOptgroup.append($(optgroupTpl)); + $selectionOptgroup.append($(optgroupTpl)); + if (that.options.selectableOptgroup){ + $selectableOptgroup.find('.ms-optgroup-label').on('click', function(){ + var values = $optgroup.children(':not(:selected, :disabled)').map(function(){ return $(this).val() }).get(); + that.select(values); + }); + $selectionOptgroup.find('.ms-optgroup-label').on('click', function(){ + var values = $optgroup.children(':selected:not(:disabled)').map(function(){ return $(this).val() }).get(); + that.deselect(values); + }); + } + that.$selectableUl.append($selectableOptgroup); + that.$selectionUl.append($selectionOptgroup); + } + index = index == undefined ? $selectableOptgroup.find('ul').children().length : index + 1; + selectableLi.insertAt(index, $selectableOptgroup.children()); + selectedLi.insertAt(index, $selectionOptgroup.children()); + } else { + index = index == undefined ? that.$selectableUl.children().length : index; + + selectableLi.insertAt(index, that.$selectableUl); + selectedLi.insertAt(index, that.$selectionUl); + } + }, + + 'addOption' : function(options){ + var that = this; + + if (options.value) options = [options]; + $.each(options, function(index, option){ + if (option.value && that.$element.find("option[value='"+option.value+"']").length === 0){ + var $option = $('<option value="'+option.value+'">'+option.text+'</option>'), + index = parseInt((typeof option.index === 'undefined' ? that.$element.children().length : option.index)), + $container = option.nested == undefined ? that.$element : $("optgroup[label='"+option.nested+"']") + + $option.insertAt(index, $container); + that.generateLisFromOption($option.get(0), index, option.nested); + } + }) + }, + + 'escapeHTML' : function(text){ + return $("<div>").text(text).html(); + }, + + 'activeKeyboard' : function($list){ + var that = this; + + $list.on('focus', function(){ + $(this).addClass('ms-focus'); + }) + .on('blur', function(){ + $(this).removeClass('ms-focus'); + }) + .on('keydown', function(e){ + switch (e.which) { + case 40: + case 38: + e.preventDefault(); + e.stopPropagation(); + that.moveHighlight($(this), (e.which === 38) ? -1 : 1); + return; + case 37: + case 39: + e.preventDefault(); + e.stopPropagation(); + that.switchList($list); + return; + case 9: + if(that.$element.is('[tabindex]')){ + e.preventDefault(); + var tabindex = parseInt(that.$element.attr('tabindex'), 10); + tabindex = (e.shiftKey) ? tabindex-1 : tabindex+1; + $('[tabindex="'+(tabindex)+'"]').focus(); + return; + }else{ + if(e.shiftKey){ + that.$element.trigger('focus'); + } + } + } + if($.inArray(e.which, that.options.keySelect) > -1){ + e.preventDefault(); + e.stopPropagation(); + that.selectHighlighted($list); + return; + } + }); + }, + + 'moveHighlight': function($list, direction){ + var $elems = $list.find(this.elemsSelector), + $currElem = $elems.filter('.ms-hover'), + $nextElem = null, + elemHeight = $elems.first().outerHeight(), + containerHeight = $list.height(), + containerSelector = '#'+this.$container.prop('id'); + + $elems.removeClass('ms-hover'); + if (direction === 1){ // DOWN + + $nextElem = $currElem.nextAll(this.elemsSelector).first(); + if ($nextElem.length === 0){ + var $optgroupUl = $currElem.parent(); + + if ($optgroupUl.hasClass('ms-optgroup')){ + var $optgroupLi = $optgroupUl.parent(), + $nextOptgroupLi = $optgroupLi.next(':visible'); + + if ($nextOptgroupLi.length > 0){ + $nextElem = $nextOptgroupLi.find(this.elemsSelector).first(); + } else { + $nextElem = $elems.first(); + } + } else { + $nextElem = $elems.first(); + } + } + } else if (direction === -1){ // UP + + $nextElem = $currElem.prevAll(this.elemsSelector).first(); + if ($nextElem.length === 0){ + var $optgroupUl = $currElem.parent(); + + if ($optgroupUl.hasClass('ms-optgroup')){ + var $optgroupLi = $optgroupUl.parent(), + $prevOptgroupLi = $optgroupLi.prev(':visible'); + + if ($prevOptgroupLi.length > 0){ + $nextElem = $prevOptgroupLi.find(this.elemsSelector).last(); + } else { + $nextElem = $elems.last(); + } + } else { + $nextElem = $elems.last(); + } + } + } + if ($nextElem.length > 0){ + $nextElem.addClass('ms-hover'); + var scrollTo = $list.scrollTop() + $nextElem.position().top - + containerHeight / 2 + elemHeight / 2; + + $list.scrollTop(scrollTo); + } + }, + + 'selectHighlighted' : function($list){ + var $elems = $list.find(this.elemsSelector), + $highlightedElem = $elems.filter('.ms-hover').first(); + + if ($highlightedElem.length > 0){ + if ($list.parent().hasClass('ms-selectable')){ + this.select($highlightedElem.data('ms-value')); + } else { + this.deselect($highlightedElem.data('ms-value')); + } + $elems.removeClass('ms-hover'); + } + }, + + 'switchList' : function($list){ + $list.blur(); + this.$container.find(this.elemsSelector).removeClass('ms-hover'); + if ($list.parent().hasClass('ms-selectable')){ + this.$selectionUl.focus(); + } else { + this.$selectableUl.focus(); + } + }, + + 'activeMouse' : function($list){ + var that = this; + + $('body').on('mouseenter', that.elemsSelector, function(){ + $(this).parents('.ms-container').find(that.elemsSelector).removeClass('ms-hover'); + $(this).addClass('ms-hover'); + }); + }, + + 'refresh' : function() { + this.destroy(); + this.$element.multiSelect(this.options); + }, + + 'destroy' : function(){ + $("#ms-"+this.$element.attr("id")).remove(); + this.$element.css('position', '').css('left', '') + this.$element.removeData('multiselect'); + }, + + 'select' : function(value, method){ + if (typeof value === 'string'){ value = [value]; } + + var that = this, + ms = this.$element, + msIds = $.map(value, function(val){ return(that.sanitize(val)); }), + selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable').filter(':not(.'+that.options.disabledClass+')'), + selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection').filter(':not(.'+that.options.disabledClass+')'), + options = ms.find('option:not(:disabled)').filter(function(){ return($.inArray(this.value, value) > -1); }); + + if (method === 'init'){ + selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'), + selections = this.$selectionUl.find('#' + msIds.join('-selection, #') + '-selection'); + } + + if (selectables.length > 0){ + selectables.addClass('ms-selected').hide(); + selections.addClass('ms-selected').show(); + + options.prop('selected', true); + + that.$container.find(that.elemsSelector).removeClass('ms-hover'); + + var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container'); + if (selectableOptgroups.length > 0){ + selectableOptgroups.each(function(){ + var selectablesLi = $(this).find('.ms-elem-selectable'); + if (selectablesLi.length === selectablesLi.filter('.ms-selected').length){ + $(this).find('.ms-optgroup-label').hide(); + } + }); + + var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container'); + selectionOptgroups.each(function(){ + var selectionsLi = $(this).find('.ms-elem-selection'); + if (selectionsLi.filter('.ms-selected').length > 0){ + $(this).find('.ms-optgroup-label').show(); + } + }); + } else { + if (that.options.keepOrder && method !== 'init'){ + var selectionLiLast = that.$selectionUl.find('.ms-selected'); + if((selectionLiLast.length > 1) && (selectionLiLast.last().get(0) != selections.get(0))) { + selections.insertAfter(selectionLiLast.last()); + } + } + } + if (method !== 'init'){ + ms.trigger('change'); + if (typeof that.options.afterSelect === 'function') { + that.options.afterSelect.call(this, value); + } + } + } + }, + + 'deselect' : function(value){ + if (typeof value === 'string'){ value = [value]; } + + var that = this, + ms = this.$element, + msIds = $.map(value, function(val){ return(that.sanitize(val)); }), + selectables = this.$selectableUl.find('#' + msIds.join('-selectable, #')+'-selectable'), + selections = this.$selectionUl.find('#' + msIds.join('-selection, #')+'-selection').filter('.ms-selected').filter(':not(.'+that.options.disabledClass+')'), + options = ms.find('option').filter(function(){ return($.inArray(this.value, value) > -1); }); + + if (selections.length > 0){ + selectables.removeClass('ms-selected').show(); + selections.removeClass('ms-selected').hide(); + options.prop('selected', false); + + that.$container.find(that.elemsSelector).removeClass('ms-hover'); + + var selectableOptgroups = that.$selectableUl.children('.ms-optgroup-container'); + if (selectableOptgroups.length > 0){ + selectableOptgroups.each(function(){ + var selectablesLi = $(this).find('.ms-elem-selectable'); + if (selectablesLi.filter(':not(.ms-selected)').length > 0){ + $(this).find('.ms-optgroup-label').show(); + } + }); + + var selectionOptgroups = that.$selectionUl.children('.ms-optgroup-container'); + selectionOptgroups.each(function(){ + var selectionsLi = $(this).find('.ms-elem-selection'); + if (selectionsLi.filter('.ms-selected').length === 0){ + $(this).find('.ms-optgroup-label').hide(); + } + }); + } + ms.trigger('change'); + if (typeof that.options.afterDeselect === 'function') { + that.options.afterDeselect.call(this, value); + } + } + }, + + 'select_all' : function(){ + var ms = this.$element, + values = ms.val(); + + ms.find('option:not(":disabled")').prop('selected', true); + this.$selectableUl.find('.ms-elem-selectable').filter(':not(.'+this.options.disabledClass+')').addClass('ms-selected').hide(); + this.$selectionUl.find('.ms-optgroup-label').show(); + this.$selectableUl.find('.ms-optgroup-label').hide(); + this.$selectionUl.find('.ms-elem-selection').filter(':not(.'+this.options.disabledClass+')').addClass('ms-selected').show(); + this.$selectionUl.focus(); + ms.trigger('change'); + if (typeof this.options.afterSelect === 'function') { + var selectedValues = $.grep(ms.val(), function(item){ + return $.inArray(item, values) < 0; + }); + this.options.afterSelect.call(this, selectedValues); + } + }, + + 'deselect_all' : function(){ + var ms = this.$element, + values = ms.val(); + + ms.find('option').prop('selected', false); + this.$selectableUl.find('.ms-elem-selectable').removeClass('ms-selected').show(); + this.$selectionUl.find('.ms-optgroup-label').hide(); + this.$selectableUl.find('.ms-optgroup-label').show(); + this.$selectionUl.find('.ms-elem-selection').removeClass('ms-selected').hide(); + this.$selectableUl.focus(); + ms.trigger('change'); + if (typeof this.options.afterDeselect === 'function') { + this.options.afterDeselect.call(this, values); + } + }, + + sanitize: function(value){ + var hash = 0, i, character; + if (value.length == 0) return hash; + var ls = 0; + for (i = 0, ls = value.length; i < ls; i++) { + character = value.charCodeAt(i); + hash = ((hash<<5)-hash)+character; + hash |= 0; // Convert to 32bit integer + } + return hash; + } + }; + + /* MULTISELECT PLUGIN DEFINITION + * ======================= */ + + $.fn.multiSelect = function () { + var option = arguments[0], + args = arguments; + + return this.each(function () { + var $this = $(this), + data = $this.data('multiselect'), + options = $.extend({}, $.fn.multiSelect.defaults, $this.data(), typeof option === 'object' && option); + + if (!data){ $this.data('multiselect', (data = new MultiSelect(this, options))); } + + if (typeof option === 'string'){ + data[option](args[1]); + } else { + data.init(); + } + }); + }; + + $.fn.multiSelect.defaults = { + keySelect: [32], + selectableOptgroup: false, + disabledClass : 'disabled', + dblClick : false, + keepOrder: false, + cssClass: '' + }; + + $.fn.multiSelect.Constructor = MultiSelect; + + $.fn.insertAt = function(index, $parent) { + return this.each(function() { + if (index === 0) { + $parent.prepend(this); + } else { + $parent.children().eq(index - 1).after(this); + } + }); +} + +}(window.jQuery); diff --git a/plugins/nestable/jquery.nestable.css b/plugins/nestable/jquery.nestable.css new file mode 100644 index 0000000..7479699 --- /dev/null +++ b/plugins/nestable/jquery.nestable.css @@ -0,0 +1,74 @@ +/** + * Nestable + */ + +.dd { position: relative; display: block; margin: 0; padding: 0; max-width: 600px; list-style: none; font-size: 13px; line-height: 20px; } + +.dd-list { display: block; position: relative; margin: 0; padding: 0; list-style: none; } +.dd-list .dd-list { padding-left: 30px; } +.dd-collapsed .dd-list { display: none; } + +.dd-item, +.dd-empty, +.dd-placeholder { display: block; position: relative; margin: 0; padding: 0; min-height: 20px; font-size: 13px; line-height: 20px; } + +.dd-handle { display: block; height: 30px; margin: 5px 0; padding: 5px 10px; cursor: move; color: #979898; text-decoration: none; font-weight: bold; border: 1px solid #e5e5e5; + background: #fafafa; + /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/ + /*background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/ + /*background: linear-gradient(top, #fafafa 0%, #eee 100%);*/ + + box-sizing: border-box; -moz-box-sizing: border-box; +} +.dd-handle:hover { color: #317eeb; background: #fff; } + +.dd-item > button { display: block; position: relative; cursor: pointer; float: left; width: 25px; height: 20px; margin: 5px 0; padding: 0; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; background: transparent; font-size: 12px; line-height: 1; text-align: center; font-weight: bold; } +.dd-item > button:before { content: '+'; display: block; position: absolute; width: 100%; text-align: center; text-indent: 0; } +.dd-item > button[data-action="collapse"]:before { content: '-'; } + +.dd-placeholder, +.dd-empty { margin: 5px 0; padding: 0; min-height: 30px; background: #f2fbff; border: 1px dashed #b6bcbf; box-sizing: border-box; -moz-box-sizing: border-box; } +.dd-empty { border: 1px dashed #bbb; min-height: 100px; background-color: #e5e5e5; + background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), + -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff); + background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), + -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff); + background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), + linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff); + background-size: 60px 60px; + background-position: 0 0, 30px 30px; +} + +.dd-dragel { position: absolute; pointer-events: none; z-index: 9999; } +.dd-dragel > .dd-item .dd-handle { margin-top: 0; } +.dd-dragel .dd-handle { + -webkit-box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1); + box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1); +} + + +.dd3-content { display: block; height: 30px; margin: 5px 0; padding: 5px 10px 5px 40px; color: #979898; text-decoration: none; font-weight: bold; border: 1px solid #e5e5e5; + background: #fafafa; + /*background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);*/ + /*background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%);*/ + /*background: linear-gradient(top, #fafafa 0%, #eee 100%);*/ + + box-sizing: border-box; -moz-box-sizing: border-box; +} +.dd3-content:hover { color: #317eeb; background: #fff; } + +.dd-dragel > .dd3-item > .dd3-content { margin: 0; } + +.dd3-item > button { margin-left: 30px; } + +.dd3-handle { position: absolute; margin: 0; left: 0; top: 0; cursor: pointer; width: 30px; text-indent: 100%; white-space: nowrap; overflow: hidden; + border: 1px solid #ccc; + background: #d5d5d5; + /*background: -webkit-linear-gradient(top, #ddd 0%, #bbb 100%);*/ + /*background: -moz-linear-gradient(top, #ddd 0%, #bbb 100%);*/ + /*background: linear-gradient(top, #ddd 0%, #bbb 100%);*/ + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.dd3-handle:before { content: "\f0c9";font-family: FontAwesome; display: block; position: absolute; left: 0; top: 3px; width: 100%; text-align: center; text-indent: 0; color: #fff; font-size: 14px; font-weight: normal; } +.dd3-handle:hover { background: #404040; border:1px solid #404040; } \ No newline at end of file diff --git a/plugins/nestable/jquery.nestable.js b/plugins/nestable/jquery.nestable.js new file mode 100644 index 0000000..d0a4e5a --- /dev/null +++ b/plugins/nestable/jquery.nestable.js @@ -0,0 +1,485 @@ +/*! + * Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/ + * Dual-licensed under the BSD or MIT licenses + */ +;(function($, window, document, undefined) +{ + var hasTouch = 'ontouchstart' in window; + + /** + * Detect CSS pointer-events property + * events are normally disabled on the dragging element to avoid conflicts + * https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js + */ + var hasPointerEvents = (function() + { + var el = document.createElement('div'), + docEl = document.documentElement; + if (!('pointerEvents' in el.style)) { + return false; + } + el.style.pointerEvents = 'auto'; + el.style.pointerEvents = 'x'; + docEl.appendChild(el); + var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto'; + docEl.removeChild(el); + return !!supports; + })(); + + var eStart = hasTouch ? 'touchstart' : 'mousedown', + eMove = hasTouch ? 'touchmove' : 'mousemove', + eEnd = hasTouch ? 'touchend' : 'mouseup'; + eCancel = hasTouch ? 'touchcancel' : 'mouseup'; + + var defaults = { + listNodeName : 'ol', + itemNodeName : 'li', + rootClass : 'dd', + listClass : 'dd-list', + itemClass : 'dd-item', + dragClass : 'dd-dragel', + handleClass : 'dd-handle', + collapsedClass : 'dd-collapsed', + placeClass : 'dd-placeholder', + noDragClass : 'dd-nodrag', + emptyClass : 'dd-empty', + expandBtnHTML : '<button data-action="expand" type="button">Expand</button>', + collapseBtnHTML : '<button data-action="collapse" type="button">Collapse</button>', + group : 0, + maxDepth : 5, + threshold : 20 + }; + + function Plugin(element, options) + { + this.w = $(window); + this.el = $(element); + this.options = $.extend({}, defaults, options); + this.init(); + } + + Plugin.prototype = { + + init: function() + { + var list = this; + + list.reset(); + + list.el.data('nestable-group', this.options.group); + + list.placeEl = $('<div class="' + list.options.placeClass + '"/>'); + + $.each(this.el.find(list.options.itemNodeName), function(k, el) { + list.setParent($(el)); + }); + + list.el.on('click', 'button', function(e) { + if (list.dragEl || (!hasTouch && e.button !== 0)) { + return; + } + var target = $(e.currentTarget), + action = target.data('action'), + item = target.parent(list.options.itemNodeName); + if (action === 'collapse') { + list.collapseItem(item); + } + if (action === 'expand') { + list.expandItem(item); + } + }); + + var onStartEvent = function(e) + { + var handle = $(e.target); + if (!handle.hasClass(list.options.handleClass)) { + if (handle.closest('.' + list.options.noDragClass).length) { + return; + } + handle = handle.closest('.' + list.options.handleClass); + } + if (!handle.length || list.dragEl || (!hasTouch && e.button !== 0) || (hasTouch && e.touches.length !== 1)) { + return; + } + e.preventDefault(); + list.dragStart(hasTouch ? e.touches[0] : e); + }; + + var onMoveEvent = function(e) + { + if (list.dragEl) { + e.preventDefault(); + list.dragMove(hasTouch ? e.touches[0] : e); + } + }; + + var onEndEvent = function(e) + { + if (list.dragEl) { + e.preventDefault(); + list.dragStop(hasTouch ? e.touches[0] : e); + } + }; + + if (hasTouch) { + list.el[0].addEventListener(eStart, onStartEvent, false); + window.addEventListener(eMove, onMoveEvent, false); + window.addEventListener(eEnd, onEndEvent, false); + window.addEventListener(eCancel, onEndEvent, false); + } else { + list.el.on(eStart, onStartEvent); + list.w.on(eMove, onMoveEvent); + list.w.on(eEnd, onEndEvent); + } + + }, + + serialize: function() + { + var data, + depth = 0, + list = this; + step = function(level, depth) + { + var array = [ ], + items = level.children(list.options.itemNodeName); + items.each(function() + { + var li = $(this), + item = $.extend({}, li.data()), + sub = li.children(list.options.listNodeName); + if (sub.length) { + item.children = step(sub, depth + 1); + } + array.push(item); + }); + return array; + }; + data = step(list.el.find(list.options.listNodeName).first(), depth); + return data; + }, + + serialise: function() + { + return this.serialize(); + }, + + reset: function() + { + this.mouse = { + offsetX : 0, + offsetY : 0, + startX : 0, + startY : 0, + lastX : 0, + lastY : 0, + nowX : 0, + nowY : 0, + distX : 0, + distY : 0, + dirAx : 0, + dirX : 0, + dirY : 0, + lastDirX : 0, + lastDirY : 0, + distAxX : 0, + distAxY : 0 + }; + this.moving = false; + this.dragEl = null; + this.dragRootEl = null; + this.dragDepth = 0; + this.hasNewRoot = false; + this.pointEl = null; + }, + + expandItem: function(li) + { + li.removeClass(this.options.collapsedClass); + li.children('[data-action="expand"]').hide(); + li.children('[data-action="collapse"]').show(); + li.children(this.options.listNodeName).show(); + }, + + collapseItem: function(li) + { + var lists = li.children(this.options.listNodeName); + if (lists.length) { + li.addClass(this.options.collapsedClass); + li.children('[data-action="collapse"]').hide(); + li.children('[data-action="expand"]').show(); + li.children(this.options.listNodeName).hide(); + } + }, + + expandAll: function() + { + var list = this; + list.el.find(list.options.itemNodeName).each(function() { + list.expandItem($(this)); + }); + }, + + collapseAll: function() + { + var list = this; + list.el.find(list.options.itemNodeName).each(function() { + list.collapseItem($(this)); + }); + }, + + setParent: function(li) + { + if (li.children(this.options.listNodeName).length) { + li.prepend($(this.options.expandBtnHTML)); + li.prepend($(this.options.collapseBtnHTML)); + } + li.children('[data-action="expand"]').hide(); + }, + + unsetParent: function(li) + { + li.removeClass(this.options.collapsedClass); + li.children('[data-action]').remove(); + li.children(this.options.listNodeName).remove(); + }, + + dragStart: function(e) + { + var mouse = this.mouse, + target = $(e.target), + dragItem = target.closest(this.options.itemNodeName); + + this.placeEl.css('height', dragItem.height()); + + mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left; + mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top; + mouse.startX = mouse.lastX = e.pageX; + mouse.startY = mouse.lastY = e.pageY; + + this.dragRootEl = this.el; + + this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass); + this.dragEl.css('width', dragItem.width()); + + // fix for zepto.js + //dragItem.after(this.placeEl).detach().appendTo(this.dragEl); + dragItem.after(this.placeEl); + dragItem[0].parentNode.removeChild(dragItem[0]); + dragItem.appendTo(this.dragEl); + + $(document.body).append(this.dragEl); + this.dragEl.css({ + 'left' : e.pageX - mouse.offsetX, + 'top' : e.pageY - mouse.offsetY + }); + // total depth of dragging item + var i, depth, + items = this.dragEl.find(this.options.itemNodeName); + for (i = 0; i < items.length; i++) { + depth = $(items[i]).parents(this.options.listNodeName).length; + if (depth > this.dragDepth) { + this.dragDepth = depth; + } + } + }, + + dragStop: function(e) + { + // fix for zepto.js + //this.placeEl.replaceWith(this.dragEl.children(this.options.itemNodeName + ':first').detach()); + var el = this.dragEl.children(this.options.itemNodeName).first(); + el[0].parentNode.removeChild(el[0]); + this.placeEl.replaceWith(el); + + this.dragEl.remove(); + this.el.trigger('change'); + if (this.hasNewRoot) { + this.dragRootEl.trigger('change'); + } + this.reset(); + }, + + dragMove: function(e) + { + var list, parent, prev, next, depth, + opt = this.options, + mouse = this.mouse; + + this.dragEl.css({ + 'left' : e.pageX - mouse.offsetX, + 'top' : e.pageY - mouse.offsetY + }); + + // mouse position last events + mouse.lastX = mouse.nowX; + mouse.lastY = mouse.nowY; + // mouse position this events + mouse.nowX = e.pageX; + mouse.nowY = e.pageY; + // distance mouse moved between events + mouse.distX = mouse.nowX - mouse.lastX; + mouse.distY = mouse.nowY - mouse.lastY; + // direction mouse was moving + mouse.lastDirX = mouse.dirX; + mouse.lastDirY = mouse.dirY; + // direction mouse is now moving (on both axis) + mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1; + mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1; + // axis mouse is now moving on + var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0; + + // do nothing on first move + if (!mouse.moving) { + mouse.dirAx = newAx; + mouse.moving = true; + return; + } + + // calc distance moved on this axis (and direction) + if (mouse.dirAx !== newAx) { + mouse.distAxX = 0; + mouse.distAxY = 0; + } else { + mouse.distAxX += Math.abs(mouse.distX); + if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) { + mouse.distAxX = 0; + } + mouse.distAxY += Math.abs(mouse.distY); + if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) { + mouse.distAxY = 0; + } + } + mouse.dirAx = newAx; + + /** + * move horizontal + */ + if (mouse.dirAx && mouse.distAxX >= opt.threshold) { + // reset move distance on x-axis for new phase + mouse.distAxX = 0; + prev = this.placeEl.prev(opt.itemNodeName); + // increase horizontal level if previous sibling exists and is not collapsed + if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) { + // cannot increase level when item above is collapsed + list = prev.find(opt.listNodeName).last(); + // check if depth limit has reached + depth = this.placeEl.parents(opt.listNodeName).length; + if (depth + this.dragDepth <= opt.maxDepth) { + // create new sub-level if one doesn't exist + if (!list.length) { + list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass); + list.append(this.placeEl); + prev.append(list); + this.setParent(prev); + } else { + // else append to next level up + list = prev.children(opt.listNodeName).last(); + list.append(this.placeEl); + } + } + } + // decrease horizontal level + if (mouse.distX < 0) { + // we can't decrease a level if an item preceeds the current one + next = this.placeEl.next(opt.itemNodeName); + if (!next.length) { + parent = this.placeEl.parent(); + this.placeEl.closest(opt.itemNodeName).after(this.placeEl); + if (!parent.children().length) { + this.unsetParent(parent.parent()); + } + } + } + } + + var isEmpty = false; + + // find list item under cursor + if (!hasPointerEvents) { + this.dragEl[0].style.visibility = 'hidden'; + } + this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop))); + if (!hasPointerEvents) { + this.dragEl[0].style.visibility = 'visible'; + } + if (this.pointEl.hasClass(opt.handleClass)) { + this.pointEl = this.pointEl.parent(opt.itemNodeName); + } + if (this.pointEl.hasClass(opt.emptyClass)) { + isEmpty = true; + } + else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) { + return; + } + + // find parent list of item under cursor + var pointElRoot = this.pointEl.closest('.' + opt.rootClass), + isNewRoot = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id'); + + /** + * move vertical + */ + if (!mouse.dirAx || isNewRoot || isEmpty) { + // check if groups match if dragging over new root + if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) { + return; + } + // check depth limit + depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length; + if (depth > opt.maxDepth) { + return; + } + var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2); + parent = this.placeEl.parent(); + // if empty create new list to replace empty placeholder + if (isEmpty) { + list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass); + list.append(this.placeEl); + this.pointEl.replaceWith(list); + } + else if (before) { + this.pointEl.before(this.placeEl); + } + else { + this.pointEl.after(this.placeEl); + } + if (!parent.children().length) { + this.unsetParent(parent.parent()); + } + if (!this.dragRootEl.find(opt.itemNodeName).length) { + this.dragRootEl.append('<div class="' + opt.emptyClass + '"/>'); + } + // parent root list has changed + if (isNewRoot) { + this.dragRootEl = pointElRoot; + this.hasNewRoot = this.el[0] !== this.dragRootEl[0]; + } + } + } + + }; + + $.fn.nestable = function(params) + { + var lists = this, + retval = this; + + lists.each(function() + { + var plugin = $(this).data("nestable"); + + if (!plugin) { + $(this).data("nestable", new Plugin(this, params)); + $(this).data("nestable-id", new Date().getTime()); + } else { + if (typeof params === 'string' && typeof plugin[params] === 'function') { + retval = plugin[params](); + } + } + }); + + return retval || lists; + }; + +})(window.jQuery || window.Zepto, window, document); \ No newline at end of file diff --git a/plugins/parsleyjs/parsley.min.js b/plugins/parsleyjs/parsley.min.js new file mode 100644 index 0000000..b528b04 --- /dev/null +++ b/plugins/parsleyjs/parsley.min.js @@ -0,0 +1,18 @@ +/*! +* Parsley.js +* Version 2.4.3 - built Sat, Jun 18th 2016, 9:01 pm +* http://parsleyjs.org +* Guillaume Potier - <guillaume@wisembly.com> +* Marc-Andre Lafortune - <petroselinum@marc-andre.ca> +* MIT Licensed +*/ +function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t<e.length;t++)i[t]=e[t];return i}return Array.from(e)}var _slice=Array.prototype.slice;!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):e.parsley=t(e.jQuery)}(this,function(e){"use strict";function t(e,t){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(this),e.apply(t||R,i)}),e.parsleyAdaptedCallback}function i(e){return 0===e.lastIndexOf(q,0)?e.substr(q.length):e}/** + * inputevent - Alleviate browser bugs for input events + * https://github.com/marcandre/inputevent + * @version v0.0.3 - (built Thu, Apr 14th 2016, 5:58 pm) + * @author Marc-Andre Lafortune <github@marc-andre.ca> + * @license MIT + */ +function n(){var t=this,i=window||global;e.extend(this,{isNativeEvent:function(e){return e.originalEvent&&e.originalEvent.isTrusted!==!1},fakeInputEvent:function(i){t.isNativeEvent(i)&&e(i.target).trigger("input")},misbehaves:function(i){t.isNativeEvent(i)&&(t.behavesOk(i),e(document).on("change.inputevent",i.data.selector,t.fakeInputEvent),t.fakeInputEvent(i))},behavesOk:function(i){t.isNativeEvent(i)&&e(document).off("input.inputevent",i.data.selector,t.behavesOk).off("change.inputevent",i.data.selector,t.misbehaves)},install:function(){if(!i.inputEventPatched){i.inputEventPatched="0.0.3";for(var n=["select",'input[type="checkbox"]','input[type="radio"]','input[type="file"]'],r=0;r<n.length;r++){var s=n[r];e(document).on("input.inputevent",s,{selector:s},t.behavesOk).on("change.inputevent",s,{selector:s},t.misbehaves)}}},uninstall:function(){delete i.inputEventPatched,e(document).off(".inputevent")}})}var r=1,s={},a={attr:function(e,t,i){var n,r,s,a=new RegExp("^"+t,"i");if("undefined"==typeof i)i={};else for(n in i)i.hasOwnProperty(n)&&delete i[n];if("undefined"==typeof e||"undefined"==typeof e[0])return i;for(s=e[0].attributes,n=s.length;n--;)r=s[n],r&&r.specified&&a.test(r.name)&&(i[this.camelize(r.name.slice(t.length))]=this.deserializeValue(r.value));return i},checkAttr:function(e,t,i){return e.is("["+t+i+"]")},setAttr:function(e,t,i,n){e[0].setAttribute(this.dasherize(t+i),String(n))},generateID:function(){return""+r++},deserializeValue:function(t){var i;try{return t?"true"==t||("false"==t?!1:"null"==t?null:isNaN(i=Number(t))?/^[\[\{]/.test(t)?e.parseJSON(t):t:i):t}catch(n){return t}},camelize:function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},dasherize:function(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){var e;window.console&&"function"==typeof window.console.warn&&(e=window.console).warn.apply(e,arguments)},warnOnce:function(e){s[e]||(s[e]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){s={}},trimString:function(e){return e.replace(/^\s+|\s+$/g,"")},namespaceEvents:function(t,i){return t=this.trimString(t||"").split(/\s+/),t[0]?e.map(t,function(e){return e+"."+i}).join(" "):""},difference:function(t,i){var n=[];return e.each(t,function(e,t){-1==i.indexOf(t)&&n.push(t)}),n},all:function(t){return e.when.apply(e,_toConsumableArray(t).concat([42,42]))},objectCreate:Object.create||function(){var e=function(){};return function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var i=new e;return e.prototype=null,i}}()},o=a,l={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,triggerAfterFailure:"input",errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(e){},errorsContainer:function(e){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"},u=function(){this.__id__=o.generateID()};u.prototype={asyncSupport:!0,_pipeAccordingToValidationResult:function(){var t=this,i=function(){var i=e.Deferred();return!0!==t.validationResult&&i.reject(),i.resolve().promise()};return[i,i]},actualizeOptions:function(){return o.attr(this.$element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(e){this.domOptions=o.objectCreate(this.parent.options),this.options=o.objectCreate(this.domOptions);for(var t in e)e.hasOwnProperty(t)&&(this.options[t]=e[t]);this.actualizeOptions()},_listeners:null,on:function(e,t){this._listeners=this._listeners||{};var i=this._listeners[e]=this._listeners[e]||[];return i.push(t),this},subscribe:function(t,i){e.listenTo(this,t.toLowerCase(),i)},off:function(e,t){var i=this._listeners&&this._listeners[e];if(i)if(t)for(var n=i.length;n--;)i[n]===t&&i.splice(n,1);else delete this._listeners[e];return this},unsubscribe:function(t,i){e.unsubscribeTo(this,t.toLowerCase())},trigger:function(e,t,i){t=t||this;var n,r=this._listeners&&this._listeners[e];if(r)for(var s=r.length;s--;)if(n=r[s].call(t,t,i),n===!1)return n;return this.parent?this.parent.trigger(e,t,i):!0},reset:function(){if("ParsleyForm"!==this.__class__)return this._resetUI(),this._trigger("reset");for(var e=0;e<this.fields.length;e++)this.fields[e].reset();this._trigger("reset")},destroy:function(){if(this._destroyUI(),"ParsleyForm"!==this.__class__)return this.$element.removeData("Parsley"),this.$element.removeData("ParsleyFieldMultiple"),void this._trigger("destroy");for(var e=0;e<this.fields.length;e++)this.fields[e].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},asyncIsValid:function(e,t){return o.warnOnce("asyncIsValid is deprecated; please use whenValid instead"),this.whenValid({group:e,force:t})},_findRelated:function(){return this.options.multiple?this.parent.$element.find("["+this.options.namespace+'multiple="'+this.options.multiple+'"]'):this.$element}};var d={string:function(e){return e},integer:function(e){if(isNaN(e))throw'Requirement is not an integer: "'+e+'"';return parseInt(e,10)},number:function(e){if(isNaN(e))throw'Requirement is not a number: "'+e+'"';return parseFloat(e)},reference:function(t){var i=e(t);if(0===i.length)throw'No such reference: "'+t+'"';return i},"boolean":function(e){return"false"!==e},object:function(e){return o.deserializeValue(e)},regexp:function(e){var t="";return/^\/.*\/(?:[gimy]*)$/.test(e)?(t=e.replace(/.*\/([gimy]*)$/,"$1"),e=e.replace(new RegExp("^/(.*?)/"+t+"$"),"$1")):e="^"+e+"$",new RegExp(e,t)}},h=function(e,t){var i=e.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+e+'"';var n=i[1].split(",").map(o.trimString);if(n.length!==t)throw"Requirement has "+n.length+" values when "+t+" are needed";return n},p=function(e,t){var i=d[e||"string"];if(!i)throw'Unknown requirement specification: "'+e+'"';return i(t)},c=function(e,t,i){var n=null,r={};for(var s in e)if(s){var a=i(s);"string"==typeof a&&(a=p(e[s],a)),r[s]=a}else n=p(e[s],t);return[n,r]},f=function(t){e.extend(!0,this,t)};f.prototype={validate:function(t,i){if(this.fn)return arguments.length>3&&(i=[].slice.call(arguments,1,-1)),this.fn.call(this,t,i);if(e.isArray(t)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}if(this.validateNumber)return isNaN(t)?!1:(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,i){if("string"!=typeof t)return e.isArray(t)?t:[t];var n=this.requirementType;if(e.isArray(n)){for(var r=h(t,n.length),s=0;s<r.length;s++)r[s]=p(n[s],r[s]);return r}return e.isPlainObject(n)?c(n,t,i):[p(n,t)]},requirementType:"string",priority:2};var m=function(e,t){this.__class__="ParsleyValidatorRegistry",this.locale="en",this.init(e||{},t||{})},g={email:/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,number:/^-?(\d*\.)?\d+(e[-+]?\d+)?$/i,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$","i")};g.range=g.number;var v=function(e){var t=(""+e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0};m.prototype={init:function(t,i){this.catalog=i,this.validators=e.extend({},this.validators);for(var n in t)this.addValidator(n,t[n].fn,t[n].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(e){if("undefined"==typeof this.catalog[e])throw new Error(e+" is not available in the catalog");return this.locale=e,this},addCatalog:function(e,t,i){return"object"==typeof t&&(this.catalog[e]=t),!0===i?this.setLocale(e):this},addMessage:function(e,t,i){return"undefined"==typeof this.catalog[e]&&(this.catalog[e]={}),this.catalog[e][t]=i,this},addMessages:function(e,t){for(var i in t)this.addMessage(e,i,t[i]);return this},addValidator:function(e,t,i){if(this.validators[e])o.warn('Validator "'+e+'" is already defined.');else if(l.hasOwnProperty(e))return void o.warn('"'+e+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},updateValidator:function(e,t,i){return this.validators[e]?this._setValidator.apply(this,arguments):(o.warn('Validator "'+e+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(e){return this.validators[e]||o.warn('Validator "'+e+'" is not defined.'),delete this.validators[e],this},_setValidator:function(e,t,i){"object"!=typeof t&&(t={fn:t,priority:i}),t.validate||(t=new f(t)),this.validators[e]=t;for(var n in t.messages||{})this.addMessage(n,e,t.messages[n]);return this},getErrorMessage:function(e){var t;if("type"===e.name){var i=this.catalog[this.locale][e.name]||{};t=i[e.requirements]}else t=this.formatMessage(this.catalog[this.locale][e.name],e.requirements);return t||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(e,t){if("object"==typeof t){for(var i in t)e=this.formatMessage(e,t[i]);return e}return"string"==typeof e?e.replace(/%s/i,t):""},validators:{notblank:{validateString:function(e){return/\S/.test(e)},priority:2},required:{validateMultiple:function(e){return e.length>0},validateString:function(e){return/\S/.test(e)},priority:512},type:{validateString:function(e,t){var i=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],n=i.step,r=void 0===n?"1":n,s=i.base,a=void 0===s?0:s,o=g[t];if(!o)throw new Error("validator type `"+t+"` is not supported");if(!o.test(e))return!1;if("number"===t&&!/^any$/i.test(r||"")){var l=Number(e),u=Math.max(v(r),v(a));if(v(l)>u)return!1;var d=function(e){return Math.round(e*Math.pow(10,u))};if((d(l)-d(a))%d(r)!=0)return!1}return!0},requirementType:{"":"string",step:"string",base:"number"},priority:256},pattern:{validateString:function(e,t){return t.test(e)},requirementType:"regexp",priority:64},minlength:{validateString:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxlength:{validateString:function(e,t){return e.length<=t},requirementType:"integer",priority:30},length:{validateString:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(e,t){return e.length>=t},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(e,t){return e.length<=t},requirementType:"integer",priority:30},check:{validateMultiple:function(e,t,i){return e.length>=t&&e.length<=i},requirementType:["integer","integer"],priority:30},min:{validateNumber:function(e,t){return e>=t},requirementType:"number",priority:30},max:{validateNumber:function(e,t){return t>=e},requirementType:"number",priority:30},range:{validateNumber:function(e,t,i){return e>=t&&i>=e},requirementType:["number","number"],priority:30},equalto:{validateString:function(t,i){var n=e(i);return n.length?t===n.val():t===i},priority:256}}};var y={},_=function k(e,t,i){for(var n=[],r=[],s=0;s<e.length;s++){for(var a=!1,o=0;o<t.length;o++)if(e[s].assert.name===t[o].assert.name){a=!0;break}a?r.push(e[s]):n.push(e[s])}return{kept:r,added:n,removed:i?[]:k(t,e,!0).added}};y.Form={_actualizeTriggers:function(){var e=this;this.$element.on("submit.Parsley",function(t){e.onSubmitValidate(t)}),this.$element.on("click.Parsley",'input[type="submit"], button[type="submit"]',function(t){e.onSubmitButton(t)}),!1!==this.options.uiEnabled&&this.$element.attr("novalidate","")},focus:function(){if(this._focusedField=null,!0===this.validationResult||"none"===this.options.focus)return null;for(var e=0;e<this.fields.length;e++){var t=this.fields[e];if(!0!==t.validationResult&&t.validationResult.length>0&&"undefined"==typeof t.options.noFocus&&(this._focusedField=t.$element,"first"===this.options.focus))break}return null===this._focusedField?null:this._focusedField.focus()},_destroyUI:function(){this.$element.off(".Parsley")}},y.Field={_reflowUI:function(){if(this._buildUI(),this._ui){var e=_(this.validationResult,this._ui.lastValidationResult);this._ui.lastValidationResult=this.validationResult,this._manageStatusClass(),this._manageErrorsMessages(e),this._actualizeTriggers(),!e.kept.length&&!e.added.length||this._failedOnce||(this._failedOnce=!0,this._actualizeTriggers())}},getErrorsMessages:function(){if(!0===this.validationResult)return[];for(var e=[],t=0;t<this.validationResult.length;t++)e.push(this.validationResult[t].errorMessage||this._getErrorMessage(this.validationResult[t].assert));return e},addError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.message,n=t.assert,r=t.updateClass,s=void 0===r?!0:r;this._buildUI(),this._addError(e,{message:i,assert:n}),s&&this._errorClass()},updateError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.message,n=t.assert,r=t.updateClass,s=void 0===r?!0:r;this._buildUI(),this._updateError(e,{message:i,assert:n}),s&&this._errorClass()},removeError:function(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],i=t.updateClass,n=void 0===i?!0:i;this._buildUI(),this._removeError(e),n&&this._manageStatusClass()},_manageStatusClass:function(){this.hasConstraints()&&this.needsValidation()&&!0===this.validationResult?this._successClass():this.validationResult.length>0?this._errorClass():this._resetClass()},_manageErrorsMessages:function(t){if("undefined"==typeof this.options.errorsMessagesDisabled){if("undefined"!=typeof this.options.errorMessage)return t.added.length||t.kept.length?(this._insertErrorWrapper(),0===this._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&this._ui.$errorsWrapper.append(e(this.options.errorTemplate).addClass("parsley-custom-error-message")),this._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(this.options.errorMessage)):this._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove();for(var i=0;i<t.removed.length;i++)this._removeError(t.removed[i].assert.name);for(i=0;i<t.added.length;i++)this._addError(t.added[i].assert.name,{message:t.added[i].errorMessage,assert:t.added[i].assert});for(i=0;i<t.kept.length;i++)this._updateError(t.kept[i].assert.name,{message:t.kept[i].errorMessage,assert:t.kept[i].assert})}},_addError:function(t,i){var n=i.message,r=i.assert;this._insertErrorWrapper(),this._ui.$errorsWrapper.addClass("filled").append(e(this.options.errorTemplate).addClass("parsley-"+t).html(n||this._getErrorMessage(r)))},_updateError:function(e,t){var i=t.message,n=t.assert;this._ui.$errorsWrapper.addClass("filled").find(".parsley-"+e).html(i||this._getErrorMessage(n))},_removeError:function(e){this._ui.$errorsWrapper.removeClass("filled").find(".parsley-"+e).remove()},_getErrorMessage:function(e){var t=e.name+"Message";return"undefined"!=typeof this.options[t]?window.Parsley.formatMessage(this.options[t],e.requirements):window.Parsley.getErrorMessage(e)},_buildUI:function(){if(!this._ui&&!1!==this.options.uiEnabled){var t={};this.$element.attr(this.options.namespace+"id",this.__id__),t.$errorClassHandler=this._manageClassHandler(),t.errorsWrapperId="parsley-id-"+(this.options.multiple?"multiple-"+this.options.multiple:this.__id__),t.$errorsWrapper=e(this.options.errorsWrapper).attr("id",t.errorsWrapperId),t.lastValidationResult=[],t.validationInformationVisible=!1,this._ui=t}},_manageClassHandler:function(){if("string"==typeof this.options.classHandler&&e(this.options.classHandler).length)return e(this.options.classHandler);var t=this.options.classHandler.call(this,this);return"undefined"!=typeof t&&t.length?t:!this.options.multiple||this.$element.is("select")?this.$element:this.$element.parent()},_insertErrorWrapper:function(){var t;if(0!==this._ui.$errorsWrapper.parent().length)return this._ui.$errorsWrapper.parent();if("string"==typeof this.options.errorsContainer){if(e(this.options.errorsContainer).length)return e(this.options.errorsContainer).append(this._ui.$errorsWrapper);o.warn("The errors container `"+this.options.errorsContainer+"` does not exist in DOM")}else"function"==typeof this.options.errorsContainer&&(t=this.options.errorsContainer.call(this,this));if("undefined"!=typeof t&&t.length)return t.append(this._ui.$errorsWrapper);var i=this.$element;return this.options.multiple&&(i=i.parent()),i.after(this._ui.$errorsWrapper)},_actualizeTriggers:function(){var e,t=this,i=this._findRelated();i.off(".Parsley"),this._failedOnce?i.on(o.namespaceEvents(this.options.triggerAfterFailure,"Parsley"),function(){t.validate()}):(e=o.namespaceEvents(this.options.trigger,"Parsley"))&&i.on(e,function(e){t._eventValidate(e)})},_eventValidate:function(e){!(!/key|input/.test(e.type)||this._ui&&this._ui.validationInformationVisible)&&this.getValue().length<=this.options.validationThreshold||this.validate()},_resetUI:function(){this._failedOnce=!1,this._actualizeTriggers(),"undefined"!=typeof this._ui&&(this._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(),this._ui.lastValidationResult=[],this._ui.validationInformationVisible=!1)},_destroyUI:function(){this._resetUI(),"undefined"!=typeof this._ui&&this._ui.$errorsWrapper.remove(),delete this._ui},_successClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass)},_errorClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass)},_resetClass:function(){this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass)}};var w=function(t,i,n){this.__class__="ParsleyForm",this.$element=e(t),this.domOptions=i,this.options=n,this.parent=window.Parsley,this.fields=[],this.validationResult=null},b={pending:null,resolved:!0,rejected:!1};w.prototype={onSubmitValidate:function(e){var t=this;if(!0!==e.parsley){var i=this._$submitSource||this.$element.find('input[type="submit"], button[type="submit"]').first();if(this._$submitSource=null,this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!0),!i.is("[formnovalidate]")){var n=this.whenValidate({event:e});"resolved"===n.state()&&!1!==this._trigger("submit")||(e.stopImmediatePropagation(),e.preventDefault(),"pending"===n.state()&&n.done(function(){t._submit(i)}))}}},onSubmitButton:function(t){this._$submitSource=e(t.currentTarget)},_submit:function(t){if(!1!==this._trigger("submit")){if(t){var i=this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!1);0===i.length&&(i=e('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)),i.attr({name:t.attr("name"),value:t.attr("value")})}this.$element.trigger(e.extend(e.Event("submit"),{parsley:!0}))}},validate:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){o.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1],s=i[2];t={group:n,force:r,event:s}}return b[this.whenValidate(t).state()]},whenValidate:function(){var t,i=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=n.group,s=n.force,a=n.event;this.submitEvent=a,a&&(this.submitEvent=e.extend({},a,{preventDefault:function(){o.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"),i.validationResult=!1}})),this.validationResult=!0,this._trigger("validate"),this._refreshFields();var l=this._withoutReactualizingFormOptions(function(){return e.map(i.fields,function(e){return e.whenValidate({force:s,group:r})})});return(t=o.all(l).done(function(){i._trigger("success")}).fail(function(){i.validationResult=!1,i.focus(),i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(t,_toConsumableArray(this._pipeAccordingToValidationResult()))},isValid:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){o.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1];t={group:n,force:r}}return b[this.whenValid(t).state()]},whenValid:function(){var t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.group,r=i.force;this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return e.map(t.fields,function(e){return e.whenValid({group:n,force:r})})});return o.all(s)},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var t=this,i=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){t.$element.find(t.options.inputs).not(t.options.excluded).each(function(e,i){var n=new window.Parsley.Factory(i,{},t);"ParsleyField"!==n.__class__&&"ParsleyFieldMultiple"!==n.__class__||!0===n.options.excluded||"undefined"==typeof t.fieldsMappedById[n.__class__+"-"+n.__id__]&&(t.fieldsMappedById[n.__class__+"-"+n.__id__]=n,t.fields.push(n))}),e.each(o.difference(i,t.fields),function(e,t){t._trigger("reset")})}),this},_withoutReactualizingFormOptions:function(e){var t=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=e();return this.actualizeOptions=t,i},_trigger:function(e){return this.trigger("form:"+e)}};var F=function(t,i,n,r,s){if(!/ParsleyField/.test(t.__class__))throw new Error("ParsleyField or ParsleyFieldMultiple instance expected");var a=window.Parsley._validatorRegistry.validators[i],o=new f(a);e.extend(this,{validator:o,name:i,requirements:n,priority:r||t.options[i+"Priority"]||o.priority,isDomConstraint:!0===s}),this._parseRequirements(t.options)},C=function(e){var t=e[0].toUpperCase();return t+e.slice(1)};F.prototype={validate:function(e,t){var i;return(i=this.validator).validate.apply(i,[e].concat(_toConsumableArray(this.requirementList),[t]))},_parseRequirements:function(e){var t=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(i){return e[t.name+C(i)]})}};var $=function(t,i,n,r){this.__class__="ParsleyField",this.$element=e(t),"undefined"!=typeof r&&(this.parent=r),this.options=n,this.domOptions=i,this.constraints=[],this.constraintsByName={},this.validationResult=!0,this._bindConstraints()},x={pending:null,resolved:!0,rejected:!1};$.prototype={validate:function(t){arguments.length>=1&&!e.isPlainObject(t)&&(o.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."),t={options:t});var i=this.whenValidate(t);if(!i)return!0;switch(i.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(){var e,t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.force,r=i.group;return this.refreshConstraints(),!r||this._isInGroup(r)?(this.value=this.getValue(),this._trigger("validate"),(e=this.whenValid({force:n,value:this.value,_refreshed:!0}).always(function(){t._reflowUI()}).done(function(){t._trigger("success")}).fail(function(){t._trigger("error")}).always(function(){t._trigger("validated")})).pipe.apply(e,_toConsumableArray(this._pipeAccordingToValidationResult()))):void 0},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(e){return"undefined"==typeof e&&(e=this.getValue()),!(!e.length&&!this._isRequired()&&"undefined"==typeof this.options.validateIfEmpty)},_isInGroup:function(t){return e.isArray(this.options.group)?-1!==e.inArray(t,this.options.group):this.options.group===t},isValid:function(t){if(arguments.length>=1&&!e.isPlainObject(t)){o.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated.");var i=_slice.call(arguments),n=i[0],r=i[1];t={force:n,value:r}}var s=this.whenValid(t);return s?x[s.state()]:!0},whenValid:function(){var t=this,i=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=i.force,r=void 0===n?!1:n,s=i.value,a=i.group,l=i._refreshed;if(l||this.refreshConstraints(),!a||this._isInGroup(a)){if(this.validationResult=!0,!this.hasConstraints())return e.when();if("undefined"!=typeof s&&null!==s||(s=this.getValue()),!this.needsValidation(s)&&!0!==r)return e.when();var u=this._getGroupedConstraints(),d=[];return e.each(u,function(i,n){var r=o.all(e.map(n,function(e){return t._validateConstraint(s,e)}));return d.push(r),"rejected"===r.state()?!1:void 0}),o.all(d)}},_validateConstraint:function(t,i){var n=this,r=i.validate(t,this);return!1===r&&(r=e.Deferred().reject()),o.all([r]).fail(function(e){n.validationResult instanceof Array||(n.validationResult=[]),n.validationResult.push({assert:i,errorMessage:"string"==typeof e&&e})})},getValue:function(){var e;return e="function"==typeof this.options.value?this.options.value(this):"undefined"!=typeof this.options.value?this.options.value:this.$element.val(),"undefined"==typeof e||null===e?"":this._handleWhitespace(e)},refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},addConstraint:function(e,t,i,n){if(window.Parsley._validatorRegistry.validators[e]){var r=new F(this,e,t,i,n);"undefined"!==this.constraintsByName[r.name]&&this.removeConstraint(r.name),this.constraints.push(r),this.constraintsByName[r.name]=r}return this},removeConstraint:function(e){for(var t=0;t<this.constraints.length;t++)if(e===this.constraints[t].name){this.constraints.splice(t,1);break}return delete this.constraintsByName[e],this},updateConstraint:function(e,t,i){return this.removeConstraint(e).addConstraint(e,t,i)},_bindConstraints:function(){for(var e=[],t={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(e.push(this.constraints[i]),t[this.constraints[i].name]=this.constraints[i]);this.constraints=e,this.constraintsByName=t;for(var n in this.options)this.addConstraint(n,this.options[n],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){(this.$element.hasClass("required")||this.$element.attr("required"))&&this.addConstraint("required",!0,void 0,!0),"string"==typeof this.$element.attr("pattern")&&this.addConstraint("pattern",this.$element.attr("pattern"),void 0,!0),"undefined"!=typeof this.$element.attr("min")&&"undefined"!=typeof this.$element.attr("max")?this.addConstraint("range",[this.$element.attr("min"),this.$element.attr("max")],void 0,!0):"undefined"!=typeof this.$element.attr("min")?this.addConstraint("min",this.$element.attr("min"),void 0,!0):"undefined"!=typeof this.$element.attr("max")&&this.addConstraint("max",this.$element.attr("max"),void 0,!0),"undefined"!=typeof this.$element.attr("minlength")&&"undefined"!=typeof this.$element.attr("maxlength")?this.addConstraint("length",[this.$element.attr("minlength"),this.$element.attr("maxlength")],void 0,!0):"undefined"!=typeof this.$element.attr("minlength")?this.addConstraint("minlength",this.$element.attr("minlength"),void 0,!0):"undefined"!=typeof this.$element.attr("maxlength")&&this.addConstraint("maxlength",this.$element.attr("maxlength"),void 0,!0);var e=this.$element.attr("type");return"undefined"==typeof e?this:"number"===e?this.addConstraint("type",["number",{step:this.$element.attr("step"),base:this.$element.attr("min")||this.$element.attr("value")}],void 0,!0):/^(email|url|range)$/i.test(e)?this.addConstraint("type",e,void 0,!0):this},_isRequired:function(){return"undefined"==typeof this.constraintsByName.required?!1:!1!==this.constraintsByName.required.requirements},_trigger:function(e){return this.trigger("field:"+e)},_handleWhitespace:function(e){return!0===this.options.trimValue&&o.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(e=e.replace(/\s{2,}/g," ")),"trim"!==this.options.whitespace&&"squish"!==this.options.whitespace&&!0!==this.options.trimValue||(e=o.trimString(e)),e},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var e=[],t={},i=0;i<this.constraints.length;i++){var n=this.constraints[i].priority;t[n]||e.push(t[n]=[]),t[n].push(this.constraints[i])}return e.sort(function(e,t){return t[0].priority-e[0].priority}),e}};var E=$,P=function(){this.__class__="ParsleyFieldMultiple"};P.prototype={addElement:function(e){return this.$elements.push(e),this},refreshConstraints:function(){var t;if(this.constraints=[],this.$element.is("select"))return this.actualizeOptions()._bindConstraints(),this;for(var i=0;i<this.$elements.length;i++)if(e("html").has(this.$elements[i]).length){t=this.$elements[i].data("ParsleyFieldMultiple").refreshConstraints().constraints;for(var n=0;n<t.length;n++)this.addConstraint(t[n].name,t[n].requirements,t[n].priority,t[n].isDomConstraint)}else this.$elements.splice(i,1);return this},getValue:function(){if("function"==typeof this.options.value)return this.options.value(this);if("undefined"!=typeof this.options.value)return this.options.value;if(this.$element.is("input[type=radio]"))return this._findRelated().filter(":checked").val()||"";if(this.$element.is("input[type=checkbox]")){var t=[];return this._findRelated().filter(":checked").each(function(){t.push(e(this).val())}),t}return this.$element.is("select")&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};var V=function(t,i,n){this.$element=e(t);var r=this.$element.data("Parsley");if(r)return"undefined"!=typeof n&&r.parent===window.Parsley&&(r.parent=n,r._resetOptions(r.options)),"object"==typeof i&&e.extend(r.options,i),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if("undefined"!=typeof n&&"ParsleyForm"!==n.__class__)throw new Error("Parent instance must be a ParsleyForm instance");return this.parent=n||window.Parsley,this.init(i)};V.prototype={init:function(e){return this.__class__="Parsley",this.__version__="2.4.3",this.__id__=o.generateID(),this._resetOptions(e),this.$element.is("form")||o.checkAttr(this.$element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){return this.$element.is("input[type=radio], input[type=checkbox]")||this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple")},handleMultiple:function(){var t,i,n=this;if(this.options.multiple||("undefined"!=typeof this.$element.attr("name")&&this.$element.attr("name").length?this.options.multiple=t=this.$element.attr("name"):"undefined"!=typeof this.$element.attr("id")&&this.$element.attr("id").length&&(this.options.multiple=this.$element.attr("id"))), +this.$element.is("select")&&"undefined"!=typeof this.$element.attr("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return o.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),"undefined"!=typeof t&&e('input[name="'+t+'"]').each(function(t,i){e(i).is("input[type=radio], input[type=checkbox]")&&e(i).attr(n.options.namespace+"multiple",n.options.multiple)});for(var r=this._findRelated(),s=0;s<r.length;s++)if(i=e(r.get(s)).data("Parsley"),"undefined"!=typeof i){this.$element.data("ParsleyFieldMultiple")||i.addElement(this.$element);break}return this.bind("parsleyField",!0),i||this.bind("parsleyFieldMultiple")},bind:function(t,i){var n;switch(t){case"parsleyForm":n=e.extend(new w(this.$element,this.domOptions,this.options),new u,window.ParsleyExtend)._bindFields();break;case"parsleyField":n=e.extend(new E(this.$element,this.domOptions,this.options,this.parent),new u,window.ParsleyExtend);break;case"parsleyFieldMultiple":n=e.extend(new E(this.$element,this.domOptions,this.options,this.parent),new P,new u,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&o.setAttr(this.$element,this.options.namespace,"multiple",this.options.multiple),"undefined"!=typeof i?(this.$element.data("ParsleyFieldMultiple",n),n):(this.$element.data("Parsley",n),n._actualizeTriggers(),n._trigger("init"),n)}};var M=e.fn.jquery.split(".");if(parseInt(M[0])<=1&&parseInt(M[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";M.forEach||o.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var O=e.extend(new u,{$element:e(document),actualizeOptions:null,_resetOptions:null,Factory:V,version:"2.4.3"});e.extend(E.prototype,y.Field,u.prototype),e.extend(w.prototype,y.Form,u.prototype),e.extend(V.prototype,u.prototype),e.fn.parsley=e.fn.psly=function(t){if(this.length>1){var i=[];return this.each(function(){i.push(e(this).parsley(t))}),i}return e(this).length?new V(this,t):void o.warn("You must bind Parsley on an existing element.")},"undefined"==typeof window.ParsleyExtend&&(window.ParsleyExtend={}),O.options=e.extend(o.objectCreate(l),window.ParsleyConfig),window.ParsleyConfig=O.options,window.Parsley=window.psly=O,window.ParsleyUtils=o;var A=window.Parsley._validatorRegistry=new m(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},e.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator".split(" "),function(t,i){window.Parsley[i]=e.proxy(A,i),window.ParsleyValidator[i]=function(){var e;return o.warnOnce("Accessing the method '"+i+"' through ParsleyValidator is deprecated. Simply call 'window.Parsley."+i+"(...)'"),(e=window.Parsley)[i].apply(e,arguments)}}),window.Parsley.UI=y,window.ParsleyUI={removeError:function(e,t,i){var n=!0!==i;return o.warnOnce("Accessing ParsleyUI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."),e.removeError(t,{updateClass:n})},getErrorsMessages:function(e){return o.warnOnce("Accessing ParsleyUI is deprecated. Call 'getErrorsMessages' on the instance directly."),e.getErrorsMessages()}},e.each("addError updateError".split(" "),function(e,t){window.ParsleyUI[t]=function(e,i,n,r,s){var a=!0!==s;return o.warnOnce("Accessing ParsleyUI is deprecated. Call '"+t+"' on the instance directly. Please comment in issue 1073 as to your need to call this method."),e[t](i,{message:n,assert:r,updateClass:a})}}),!1!==window.ParsleyConfig.autoBind&&e(function(){e("[data-parsley-validate]").length&&e("[data-parsley-validate]").parsley()});var R=e({}),T=function(){o.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")},q="parsley:";e.listen=function(e,n){var r;if(T(),"object"==typeof arguments[1]&&"function"==typeof arguments[2]&&(r=arguments[1],n=arguments[2]),"function"!=typeof n)throw new Error("Wrong parameters");window.Parsley.on(i(e),t(n,r))},e.listenTo=function(e,n,r){if(T(),!(e instanceof E||e instanceof w))throw new Error("Must give Parsley instance");if("string"!=typeof n||"function"!=typeof r)throw new Error("Wrong parameters");e.on(i(n),t(r))},e.unsubscribe=function(e,t){if(T(),"string"!=typeof e||"function"!=typeof t)throw new Error("Wrong arguments");window.Parsley.off(i(e),t.parsleyAdaptedCallback)},e.unsubscribeTo=function(e,t){if(T(),!(e instanceof E||e instanceof w))throw new Error("Must give Parsley instance");e.off(i(t))},e.unsubscribeAll=function(t){T(),window.Parsley.off(i(t)),e("form,input,textarea,select").each(function(){var n=e(this).data("Parsley");n&&n.off(i(t))})},e.emit=function(e,t){var n;T();var r=t instanceof E||t instanceof w,s=Array.prototype.slice.call(arguments,r?2:1);s.unshift(i(e)),r||(t=window.Parsley),(n=t).trigger.apply(n,_toConsumableArray(s))};e.extend(!0,O,{asyncValidators:{"default":{fn:function(e){return e.status>=200&&e.status<300},url:!1},reverse:{fn:function(e){return e.status<200||e.status>=300},url:!1}},addAsyncValidator:function(e,t,i,n){return O.asyncValidators[e]={fn:t,url:i||!1,options:n||{}},this}}),O.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,i,n,r){var s,a,o={},l=n.validator||(!0===n.reverse?"reverse":"default");if("undefined"==typeof O.asyncValidators[l])throw new Error("Calling an undefined async validator: `"+l+"`");i=O.asyncValidators[l].url||i,i.indexOf("{value}")>-1?i=i.replace("{value}",encodeURIComponent(t)):o[r.$element.attr("name")||r.$element.attr("id")]=t;var u=e.extend(!0,n.options||{},O.asyncValidators[l].options);s=e.extend(!0,{},{url:i,data:o,type:"GET"},u),r.trigger("field:ajaxoptions",r,s),a=e.param(s),"undefined"==typeof O._remoteCache&&(O._remoteCache={});var d=O._remoteCache[a]=O._remoteCache[a]||e.ajax(s),h=function(){var t=O.asyncValidators[l].fn.call(r,d,i,n);return t||(t=e.Deferred().reject()),e.when(t)};return d.then(h,h)},priority:-1}),O.on("form:submit",function(){O._remoteCache={}}),window.ParsleyExtend.addAsyncValidator=function(){return ParsleyUtils.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),O.addAsyncValidator.apply(O,arguments)},O.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This value is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same."}),O.setLocale("en");var D=new n;D.install();var I=O;return I}); +//# sourceMappingURL=parsley.min.js.map diff --git a/plugins/raphael/raphael-min.js b/plugins/raphael/raphael-min.js new file mode 100644 index 0000000..1f8a305 --- /dev/null +++ b/plugins/raphael/raphael-min.js @@ -0,0 +1,11 @@ +// ┌────────────────────────────────────────────────────────────────────┐ \\ +// │ Raphaël 2.1.4 - JavaScript Vector Library │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\ +// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\ +// └────────────────────────────────────────────────────────────────────┘ \\ +!function(a){var b,c,d="0.4.2",e="hasOwnProperty",f=/[\.\/]/,g="*",h=function(){},i=function(a,b){return a-b},j={n:{}},k=function(a,d){a=String(a);var e,f=c,g=Array.prototype.slice.call(arguments,2),h=k.listeners(a),j=0,l=[],m={},n=[],o=b;b=a,c=0;for(var p=0,q=h.length;q>p;p++)"zIndex"in h[p]&&(l.push(h[p].zIndex),h[p].zIndex<0&&(m[h[p].zIndex]=h[p]));for(l.sort(i);l[j]<0;)if(e=m[l[j++]],n.push(e.apply(d,g)),c)return c=f,n;for(p=0;q>p;p++)if(e=h[p],"zIndex"in e)if(e.zIndex==l[j]){if(n.push(e.apply(d,g)),c)break;do if(j++,e=m[l[j]],e&&n.push(e.apply(d,g)),c)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),c)break;return c=f,b=o,n.length?n:null};k._events=j,k.listeners=function(a){var b,c,d,e,h,i,k,l,m=a.split(f),n=j,o=[n],p=[];for(e=0,h=m.length;h>e;e++){for(l=[],i=0,k=o.length;k>i;i++)for(n=o[i].n,c=[n[m[e]],n[g]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},k.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(f),d=j,e=0,g=c.length;g>e;e++)d=d.n,d=d.hasOwnProperty(c[e])&&d[c[e]]||(d[c[e]]={n:{}});for(d.f=d.f||[],e=0,g=d.f.length;g>e;e++)if(d.f[e]==b)return h;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},k.f=function(a){var b=[].slice.call(arguments,1);return function(){k.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},k.stop=function(){c=1},k.nt=function(a){return a?new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)").test(b):b},k.nts=function(){return b.split(f)},k.off=k.unbind=function(a,b){if(!a)return void(k._events=j={n:{}});var c,d,h,i,l,m,n,o=a.split(f),p=[j];for(i=0,l=o.length;l>i;i++)for(m=0;m<p.length;m+=h.length-2){if(h=[m,1],c=p[m].n,o[i]!=g)c[o[i]]&&h.push(c[o[i]]);else for(d in c)c[e](d)&&h.push(c[d]);p.splice.apply(p,h)}for(i=0,l=p.length;l>i;i++)for(c=p[i];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(d in c.n)if(c.n[e](d)&&c.n[d].f){var q=c.n[d].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[d].f}}else{delete c.f;for(d in c.n)c.n[e](d)&&c.n[d].f&&delete c.n[d].f}c=c.n}},k.once=function(a,b){var c=function(){return k.unbind(a,c),b.apply(this,arguments)};return k.on(a,c)},k.version=d,k.toString=function(){return"You are running Eve "+d},"undefined"!=typeof module&&module.exports?module.exports=k:"undefined"!=typeof define?define("eve",[],function(){return k}):a.eve=k}(window||this),function(a,b){"function"==typeof define&&define.amd?define(["eve"],function(c){return b(a,c)}):b(a,a.eve||"function"==typeof require&&require("eve"))}(this,function(a,b){function c(a){if(c.is(a,"function"))return u?a():b.on("raphael.DOMload",a);if(c.is(a,V))return c._engine.create[D](c,a.splice(0,3+c.is(a[0],T))).add(a);var d=Array.prototype.slice.call(arguments,0);if(c.is(d[d.length-1],"function")){var e=d.pop();return u?e.call(c._engine.create[D](c,d)):b.on("raphael.DOMload",function(){e.call(c._engine.create[D](c,d))})}return c._engine.create[D](c,arguments)}function d(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var c in a)a[z](c)&&(b[c]=d(a[c]));return b}function e(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function f(a,b,c){function d(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];return h[z](g)?(e(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[D](b,f),c?c(h[g]):h[g])}return d}function g(){return this.hex}function h(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function i(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function j(a,b,c,d,e,f,g,h,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=i(q,a,c,e,g),s=i(q,b,d,f,h),t=r*r+s*s;o+=n[p]*N.sqrt(t)}return k*o}function k(a,b,c,d,e,f,g,h,i){if(!(0>i||j(a,b,c,d,e,f,g,h)<i)){var k,l=1,m=l/2,n=l-m,o=.01;for(k=j(a,b,c,d,e,f,g,h,n);Q(k-i)>o;)m/=2,n+=(i>k?1:-1)*m,k=j(a,b,c,d,e,f,g,h,n);return n}}function l(a,b,c,d,e,f,g,h){if(!(O(a,c)<P(e,g)||P(a,c)>O(e,g)||O(b,d)<P(f,h)||P(b,d)>O(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+P(a,c).toFixed(2)||n>+O(a,c).toFixed(2)||n<+P(e,g).toFixed(2)||n>+O(e,g).toFixed(2)||o<+P(b,d).toFixed(2)||o>+O(b,d).toFixed(2)||o<+P(f,h).toFixed(2)||o>+O(f,h).toFixed(2)))return{x:l,y:m}}}}function m(a,b,d){var e=c.bezierBBox(a),f=c.bezierBBox(b);if(!c.isBBoxIntersect(e,f))return d?0:[];for(var g=j.apply(0,a),h=j.apply(0,b),i=O(~~(g/5),1),k=O(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;i+1>q;q++){var r=c.findDotsAtSegment.apply(c,a.concat(q/i));m.push({x:r.x,y:r.y,t:q/i})}for(q=0;k+1>q;q++)r=c.findDotsAtSegment.apply(c,b.concat(q/k)),n.push({x:r.x,y:r.y,t:q/k});for(q=0;i>q;q++)for(var s=0;k>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=Q(u.x-t.x)<.001?"y":"x",y=Q(w.x-v.x)<.001?"y":"x",z=l(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+Q((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+Q((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:P(A,1),t2:P(B,1)}))}}return p}function n(a,b,d){a=c._path2curve(a),b=c._path2curve(b);for(var e,f,g,h,i,j,k,l,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=b.length;u>t;t++){var v=b[t];if("M"==v[0])g=k=v[1],h=l=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,l,k,l],g=k,h=l);var w=m(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function o(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function p(){return this.x+H+this.y+H+this.width+" × "+this.height}function q(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,Q(f)<b)return e;if(h=(3*l*e+2*k)*e+j,Q(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),Q(f-a)<b)return e;a>f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function r(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[z](e)&&(d[_(e)]=a[e],c.push(_(e)));c.sort(lb)}this.anim=d,this.top=c[c.length-1],this.percents=c}function s(a,d,e,f,g,h){e=_(e);var i,j,k,l,m,n,p=a.ms,r={},s={},t={};if(f)for(v=0,x=ic.length;x>v;v++){var u=ic[v];if(u.el.id==d.id&&u.anim==a){u.percent!=e?(ic.splice(v,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var v=0,x=a.percents.length;x>v;v++){if(a.percents[v]==e||a.percents[v]>f*a.top){e=a.percents[v],m=a.percents[v-1]||0,p=p/a.top*(e-m),l=a.percents[v+1],i=a.anim[e];break}f&&d.attr(a.anim[a.percents[v]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var y in i)if(i[z](y)&&(db[z](y)||d.paper.customAttributes[z](y)))switch(r[y]=d.attr(y),null==r[y]&&(r[y]=cb[y]),s[y]=i[y],db[y]){case T:t[y]=(s[y]-r[y])/p;break;case"colour":r[y]=c.getRGB(r[y]);var A=c.getRGB(s[y]);t[y]={r:(A.r-r[y].r)/p,g:(A.g-r[y].g)/p,b:(A.b-r[y].b)/p};break;case"path":var B=Kb(r[y],s[y]),C=B[1];for(r[y]=B[0],t[y]=[],v=0,x=r[y].length;x>v;v++){t[y][v]=[0];for(var D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(C[v][D]-r[y][v][D])/p}break;case"transform":var G=d._,H=Pb(G[y],s[y]);if(H)for(r[y]=H.from,s[y]=H.to,t[y]=[],t[y].real=!0,v=0,x=r[y].length;x>v;v++)for(t[y][v]=[r[y][v][0]],D=1,F=r[y][v].length;F>D;D++)t[y][v][D]=(s[y][v][D]-r[y][v][D])/p;else{var K=d.matrix||new o,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[y]=[K.a,K.b,K.c,K.d,K.e,K.f],Nb(L,s[y]),s[y]=L._.transform,t[y]=[(L.matrix.a-K.a)/p,(L.matrix.b-K.b)/p,(L.matrix.c-K.c)/p,(L.matrix.d-K.d)/p,(L.matrix.e-K.e)/p,(L.matrix.f-K.f)/p]}break;case"csv":var M=I(i[y])[J](w),N=I(r[y])[J](w);if("clip-rect"==y)for(r[y]=N,t[y]=[],v=N.length;v--;)t[y][v]=(M[v]-r[y][v])/p;s[y]=M;break;default:for(M=[][E](i[y]),N=[][E](r[y]),t[y]=[],v=d.paper.customAttributes[y].length;v--;)t[y][v]=((M[v]||0)-(N[v]||0))/p}var O=i.easing,P=c.easing_formulas[O];if(!P)if(P=I(O).match(Z),P&&5==P.length){var Q=P;P=function(a){return q(a,+Q[1],+Q[2],+Q[3],+Q[4],p)}}else P=nb;if(n=i.start||a.start||+new Date,u={anim:a,percent:e,timestamp:n,start:n+(a.del||0),status:0,initstatus:f||0,stop:!1,ms:p,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||a.times,origin:d.attr(),totalOrigin:g},ic.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-p*f,1==ic.length))return kc();k&&(u.start=new Date-u.ms*f),1==ic.length&&jc(kc)}b("raphael.anim.start."+d.id,d,a)}}function t(a){for(var b=0;b<ic.length;b++)ic[b].el.paper==a&&ic.splice(b--,1)}c.version="2.1.2",c.eve=b;var u,v,w=/[, ]+/,x={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},y=/\{(\d+)\}/g,z="hasOwnProperty",A={doc:document,win:a},B={was:Object.prototype[z].call(A.win,"Raphael"),is:A.win.Raphael},C=function(){this.ca=this.customAttributes={}},D="apply",E="concat",F="ontouchstart"in A.win||A.win.DocumentTouch&&A.doc instanceof DocumentTouch,G="",H=" ",I=String,J="split",K="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[J](H),L={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},M=I.prototype.toLowerCase,N=Math,O=N.max,P=N.min,Q=N.abs,R=N.pow,S=N.PI,T="number",U="string",V="array",W=Object.prototype.toString,X=(c._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),Y={NaN:1,Infinity:1,"-Infinity":1},Z=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,$=N.round,_=parseFloat,ab=parseInt,bb=I.prototype.toUpperCase,cb=c._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0},db=c._availableAnimAttrs={blur:T,"clip-rect":"csv",cx:T,cy:T,fill:"colour","fill-opacity":T,"font-size":T,height:T,opacity:T,path:"path",r:T,rx:T,ry:T,stroke:"colour","stroke-opacity":T,"stroke-width":T,transform:"transform",width:T,x:T,y:T},eb=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,fb={hs:1,rg:1},gb=/,?([achlmqrstvxz]),?/gi,hb=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,ib=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,jb=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,kb=(c._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),lb=function(a,b){return _(a)-_(b)},mb=function(){},nb=function(a){return a},ob=c._rectPath=function(a,b,c,d,e){return e?[["M",a+e,b],["l",c-2*e,0],["a",e,e,0,0,1,e,e],["l",0,d-2*e],["a",e,e,0,0,1,-e,e],["l",2*e-c,0],["a",e,e,0,0,1,-e,-e],["l",0,2*e-d],["a",e,e,0,0,1,e,-e],["z"]]:[["M",a,b],["l",c,0],["l",0,d],["l",-c,0],["z"]]},pb=function(a,b,c,d){return null==d&&(d=c),[["M",a,b],["m",0,-d],["a",c,d,0,1,1,0,2*d],["a",c,d,0,1,1,0,-2*d],["z"]]},qb=c._getPath={path:function(a){return a.attr("path")},circle:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.r)},ellipse:function(a){var b=a.attrs;return pb(b.cx,b.cy,b.rx,b.ry)},rect:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height,b.r)},image:function(a){var b=a.attrs;return ob(b.x,b.y,b.width,b.height)},text:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)},set:function(a){var b=a._getBBox();return ob(b.x,b.y,b.width,b.height)}},rb=c.mapPath=function(a,b){if(!b)return a;var c,d,e,f,g,h,i;for(a=Kb(a),e=0,g=a.length;g>e;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(c._g=A,c.type=A.win.SVGAngle||A.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==c.type){var sb,tb=A.doc.createElement("div");if(tb.innerHTML='<v:shape adj="1"/>',sb=tb.firstChild,sb.style.behavior="url(#default#VML)",!sb||"object"!=typeof sb.adj)return c.type=G;tb=null}c.svg=!(c.vml="VML"==c.type),c._Paper=C,c.fn=v=C.prototype=c.prototype,c._id=0,c._oid=0,c.is=function(a,b){return b=M.call(b),"finite"==b?!Y[z](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||W.call(a).slice(8,-1).toLowerCase()==b},c.angle=function(a,b,d,e,f,g){if(null==f){var h=a-d,i=b-e;return h||i?(180+180*N.atan2(-i,-h)/S+360)%360:0}return c.angle(a,b,f,g)-c.angle(d,e,f,g)},c.rad=function(a){return a%360*S/180},c.deg=function(a){return Math.round(180*a/S%360*1e3)/1e3},c.snapTo=function(a,b,d){if(d=c.is(d,"finite")?d:10,c.is(a,V)){for(var e=a.length;e--;)if(Q(a[e]-b)<=d)return a[e]}else{a=+a;var f=b%a;if(d>f)return b-f;if(f>a-d)return b-f+a}return b};c.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*N.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});c.setWindow=function(a){b("raphael.setWindow",c,A.win,a),A.win=a,A.doc=A.win.document,c._engine.initWin&&c._engine.initWin(A.win)};var ub=function(a){if(c.vml){var b,d=/^\s+|\s+$/g;try{var e=new ActiveXObject("htmlfile");e.write("<body>"),e.close(),b=e.body}catch(g){b=createPopup().document.body}var h=b.createTextRange();ub=f(function(a){try{b.style.color=I(a).replace(d,G);var c=h.queryCommandValue("ForeColor");return c=(255&c)<<16|65280&c|(16711680&c)>>>16,"#"+("000000"+c.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=A.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",A.doc.body.appendChild(i),ub=f(function(a){return i.style.color=a,A.doc.defaultView.getComputedStyle(i,G).getPropertyValue("color")})}return ub(a)},vb=function(){return"hsb("+[this.h,this.s,this.b]+")"},wb=function(){return"hsl("+[this.h,this.s,this.l]+")"},xb=function(){return this.hex},yb=function(a,b,d){if(null==b&&c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,b=a.g,a=a.r),null==b&&c.is(a,U)){var e=c.getRGB(a);a=e.r,b=e.g,d=e.b}return(a>1||b>1||d>1)&&(a/=255,b/=255,d/=255),[a,b,d]},zb=function(a,b,d,e){a*=255,b*=255,d*=255;var f={r:a,g:b,b:d,hex:c.rgb(a,b,d),toString:xb};return c.is(e,"finite")&&(f.opacity=e),f};c.color=function(a){var b;return c.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(b=c.hsb2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):c.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(b=c.hsl2rgb(a),a.r=b.r,a.g=b.g,a.b=b.b,a.hex=b.hex):(c.is(a,"string")&&(a=c.getRGB(a)),c.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(b=c.rgb2hsl(a),a.h=b.h,a.s=b.s,a.l=b.l,b=c.rgb2hsb(a),a.v=b.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=xb,a},c.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-Q(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-Q(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],zb(e,f,g,d)},c.rgb2hsb=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=O(a,b,c),g=f-P(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:vb}},c.rgb2hsl=function(a,b,c){c=yb(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=O(a,b,c),h=P(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:wb}},c._path2string=function(){return this.join(",").replace(gb,"$1")};c._preload=function(a,b){var c=A.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,A.doc.body.removeChild(this)},c.onerror=function(){A.doc.body.removeChild(this)},A.doc.body.appendChild(c),c.src=a};c.getRGB=f(function(a){if(!a||(a=I(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:g};!(fb[z](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=ub(a));var b,d,e,f,h,i,j=a.match(X);return j?(j[2]&&(e=ab(j[2].substring(5),16),d=ab(j[2].substring(3,5),16),b=ab(j[2].substring(1,3),16)),j[3]&&(e=ab((h=j[3].charAt(3))+h,16),d=ab((h=j[3].charAt(2))+h,16),b=ab((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100)),j[5]?(i=j[5][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsb2rgb(b,d,e,f)):j[6]?(i=j[6][J](eb),b=_(i[0]),"%"==i[0].slice(-1)&&(b*=2.55),d=_(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=_(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(b/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(f=_(i[3])),i[3]&&"%"==i[3].slice(-1)&&(f/=100),c.hsl2rgb(b,d,e,f)):(j={r:b,g:d,b:e,toString:g},j.hex="#"+(16777216|e|d<<8|b<<16).toString(16).slice(1),c.is(f,"finite")&&(j.opacity=f),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:g}},c),c.hsb=f(function(a,b,d){return c.hsb2rgb(a,b,d).hex}),c.hsl=f(function(a,b,d){return c.hsl2rgb(a,b,d).hex}),c.rgb=f(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),c.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},c.getColor.reset=function(){delete this.start},c.parsePathString=function(a){if(!a)return null;var b=Ab(a);if(b.arr)return Cb(b.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return c.is(a,V)&&c.is(a[0],V)&&(e=Cb(a)),e.length||I(a).replace(hb,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(jb,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][E](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][E](f));else for(;f.length>=d[g]&&(e.push([b][E](f.splice(0,d[g]))),d[g]););}),e.toString=c._path2string,b.arr=Cb(e),e},c.parseTransformString=f(function(a){if(!a)return null;var b=[];return c.is(a,V)&&c.is(a[0],V)&&(b=Cb(a)),b.length||I(a).replace(ib,function(a,c,d){{var e=[];M.call(c)}d.replace(jb,function(a,b){b&&e.push(+b)}),b.push([c][E](e))}),b.toString=c._path2string,b});var Ab=function(a){var b=Ab.ps=Ab.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[z](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};c.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=R(j,3),l=R(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*N.atan2(q-s,r-t)/S;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},c.bezierBBox=function(a,b,d,e,f,g,h,i){c.is(a,"array")||(a=[a,b,d,e,f,g,h,i]);var j=Jb.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},c.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},c.isBBoxIntersect=function(a,b){var d=c.isPointInsideBBox;return d(b,a.x,a.y)||d(b,a.x2,a.y)||d(b,a.x,a.y2)||d(b,a.x2,a.y2)||d(a,b.x,b.y)||d(a,b.x2,b.y)||d(a,b.x,b.y2)||d(a,b.x2,b.y2)||(a.x<b.x2&&a.x>b.x||b.x<a.x2&&b.x>a.x)&&(a.y<b.y2&&a.y>b.y||b.y<a.y2&&b.y>a.y)},c.pathIntersection=function(a,b){return n(a,b)},c.pathIntersectionNumber=function(a,b){return n(a,b,1)},c.isPointInsidePath=function(a,b,d){var e=c.pathBBox(a);return c.isPointInsideBBox(e,b,d)&&n(a,[["M",b,d],["H",e.x2+10]],1)%2==1},c._removedFactory=function(a){return function(){b("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var Bb=c.pathBBox=function(a){var b=Ab(a);if(b.bbox)return d(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Kb(a);for(var c,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(c=a[i],"M"==c[0])e=c[1],f=c[2],g.push(e),h.push(f);else{var k=Jb(e,f,c[1],c[2],c[3],c[4],c[5],c[6]);g=g[E](k.min.x,k.max.x),h=h[E](k.min.y,k.max.y),e=c[5],f=c[6]}var l=P[D](0,g),m=P[D](0,h),n=O[D](0,g),o=O[D](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=d(r),r},Cb=function(a){var b=d(a);return b.toString=c._path2string,b},Db=c._pathToRelative=function(a){var b=Ab(a);if(b.rel)return Cb(b.rel);c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=M.call(m[0]))switch(l[0]=M.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=c._path2string,b.rel=Cb(d),d},Eb=c._pathToAbsolute=function(a){var b=Ab(a);if(b.abs)return Cb(b.abs);if(c.is(a,V)&&c.is(a&&a[0],V)||(a=c.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,g=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],g=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=bb.call(l[0]))switch(k[0]=bb.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][E](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[E](h(p,m));break;case"M":g=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][E](l.slice(1)),d.pop(),d=d[E](h(p,m)),k=["R"][E](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=g,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":g=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=c._path2string,b.abs=Cb(d),d},Fb=function(a,b,c,d){return[a,b,c,d,c,d]},Gb=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Hb=function(a,b,c,d,e,g,h,i,j,k){var l,m=120*S/180,n=S/180*(+e||0),o=[],p=f(function(a,b,c){var d=a*N.cos(c)-b*N.sin(c),e=a*N.sin(c)+b*N.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(N.cos(S/180*e),N.sin(S/180*e),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=N.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*N.sqrt(Q((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=N.asin(((b-x)/d).toFixed(9)),z=N.asin(((j-x)/d).toFixed(9));y=w>a?S-y:y,z=w>i?S-z:z,0>y&&(y=2*S+y),0>z&&(z=2*S+z),h&&y>z&&(y-=2*S),!h&&z>y&&(z-=2*S)}var A=z-y;if(Q(A)>m){var B=z,C=i,D=j;z=y+m*(h&&z>y?1:-1),i=w+c*N.cos(z),j=x+d*N.sin(z),o=Hb(i,j,c,d,e,0,h,C,D,[z,B,w,x])}A=z-y;var F=N.cos(y),G=N.sin(y),H=N.cos(z),I=N.sin(z),K=N.tan(A/4),L=4/3*c*K,M=4/3*d*K,O=[a,b],P=[a+L*G,b-M*F],R=[i+L*I,j-M*H],T=[i,j];if(P[0]=2*O[0]-P[0],P[1]=2*O[1]-P[1],k)return[P,R,T][E](o);o=[P,R,T][E](o).join()[J](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ib=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:R(j,3)*a+3*R(j,2)*i*c+3*j*i*i*e+R(i,3)*g,y:R(j,3)*b+3*R(j,2)*i*d+3*j*i*i*f+R(i,3)*h}},Jb=f(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+N.sqrt(k*k-4*j*l))/2/j,n=(-k-N.sqrt(k*k-4*j*l))/2/j,Q(m)>"1e12"&&(m=.5),Q(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ib(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ib(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:P[D](0,p),y:P[D](0,o)},max:{x:O[D](0,p),y:O[D](0,o)}}}),Kb=c._path2curve=f(function(a,b){var c=!b&&Ab(a);if(!b&&c.curve)return Cb(c.curve);for(var d=Eb(a),e=b&&Eb(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][E](Hb[D](0,[b.x,b.y][E](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][E](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][E](Gb(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][E](Gb(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][E](Fb(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][E](Fb(b.x,b.y,a[1],b.y));break;case"V":a=["C"][E](Fb(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][E](Fb(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][E](c.splice(0,6)));a.splice(b,1),p=O(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=O(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=O(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=_(q[s-4])||f.x,f.by=_(q[s-3])||f.y,g.bx=e&&(_(r[t-4])||g.x),g.by=e&&(_(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Cb(d)),e?[d,e]:d},null,Cb),Lb=(c._parseDots=f(function(a){for(var b=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=c.getRGB(g[1]),f.color.error)return null;f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),b.push(f)}for(d=1,e=b.length-1;e>d;d++)if(!b[d].offset){for(var h=_(b[d-1].offset||0),i=0,j=d+1;e>j;j++)if(b[j].offset){i=b[j].offset;break}i||(i=100,j=e),i=_(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,b[d].offset=h+"%"}return b}),c._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Mb=(c._tofront=function(a,b){b.top!==a&&(Lb(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},c._toback=function(a,b){b.bottom!==a&&(Lb(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},c._insertafter=function(a,b,c){Lb(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},c._insertbefore=function(a,b,c){Lb(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},c.toMatrix=function(a,b){var c=Bb(a),d={_:{transform:G},getBBox:function(){return c}};return Nb(d,b),d.matrix}),Nb=(c.transformPath=function(a,b){return rb(a,Mb(a,b))},c._extractTransform=function(a,b){if(null==b)return a._.transform;b=I(b).replace(/\.{3}|\u2026/g,a._.transform||G);var d=c.parseTransformString(b),e=0,f=0,g=0,h=1,i=1,j=a._,k=new o;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var n,p,q,r,s,t=d[l],u=t.length,v=I(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(n=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-n,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ob=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Pb=c._equaliseTransform=function(a,b){b=I(b).replace(/\.{3}|\u2026/g,a),a=c.parseTransformString(a)||[],b=c.parseTransformString(b)||[]; +for(var d,e,f,g,h=O(a.length,b.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ob(b[k]),g=b[k]||Ob(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=O(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};c._getContainer=function(a,b,d,e){var f;return f=null!=e||c.is(a,"object")?a:A.doc.getElementById(a),null!=f?f.tagName?null==b?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:b,height:d}:{container:1,x:a,y:b,width:d,height:e}:void 0},c.pathToRelative=Db,c._engine={},c.path2curve=Kb,c.matrix=function(a,b,c,d,e,f){return new o(a,b,c,d,e,f)},function(a){function b(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var c=N.sqrt(b(a));a[0]&&(a[0]/=c),a[1]&&(a[1]/=c)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof o&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new o(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new o(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,b,d){a=c.rad(a),b=b||0,d=d||0;var e=+N.cos(a).toFixed(9),f=+N.sin(a).toFixed(9);this.add(e,f,-f,e,b,d),this.add(1,0,0,1,-b,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[I.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return c.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=N.sqrt(b(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=N.sqrt(b(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=c.deg(N.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=c.deg(N.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[J]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:G)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:G)+(b.rotate?"r"+[b.rotate,0,0]:G)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(o.prototype);var Qb=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);v.safari="Apple Computer, Inc."==navigator.vendor&&(Qb&&Qb[1]<4||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&Qb&&Qb[1]<8?function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});setTimeout(function(){a.remove()})}:mb;for(var Rb=function(){this.returnValue=!1},Sb=function(){return this.originalEvent.preventDefault()},Tb=function(){this.cancelBubble=!0},Ub=function(){return this.originalEvent.stopPropagation()},Vb=function(a){var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,c=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Wb=function(){return A.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Vb(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),F&&L[b]){var f=function(b){for(var e=Vb(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Sb,b.stopPropagation=Ub;break}return c.call(d,b,e.x,e.y)};a.addEventListener(L[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),F&&L[b]&&a.removeEventListener(L[b],f,!1),!0}}:A.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||A.win.event;var b=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,e=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Rb,a.stopPropagation=a.stopPropagation||Tb,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Xb=[],Yb=function(a){for(var c,d=a.clientX,e=a.clientY,f=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,g=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft,h=Xb.length;h--;){if(c=Xb[h],F&&a.touches){for(var i,j=a.touches.length;j--;)if(i=a.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;A.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,A.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&b("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,b("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,a)}},Zb=function(a){c.unmousemove(Yb).unmouseup(Zb);for(var d,e=Xb.length;e--;)d=Xb[e],d.el._drag={},b("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,a);Xb=[]},$b=c.el={},_b=K.length;_b--;)!function(a){c[a]=$b[a]=function(b,d){return c.is(b,"function")&&(this.events=this.events||[],this.events.push({name:a,f:b,unbind:Wb(this.shape||this.node||A.doc,a,b,d||this)})),this},c["un"+a]=$b["un"+a]=function(b){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!c.is(b,"undefined")&&d[e].f!=b||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(K[_b]);$b.data=function(a,d){var e=kb[this.id]=kb[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(c.is(a,"object")){for(var f in a)a[z](f)&&this.data(f,a[f]);return this}return b("raphael.data.get."+this.id,this,e[a],a),e[a]}return e[a]=d,b("raphael.data.set."+this.id,this,d,a),this},$b.removeData=function(a){return null==a?kb[this.id]={}:kb[this.id]&&delete kb[this.id][a],this},$b.getData=function(){return d(kb[this.id]||{})},$b.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},$b.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var ac=[];$b.drag=function(a,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=A.doc.documentElement.scrollTop||A.doc.body.scrollTop,m=A.doc.documentElement.scrollLeft||A.doc.body.scrollLeft;if(this._drag.id=i.identifier,F&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Xb.length&&c.mousemove(Yb).mouseup(Zb),Xb.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&b.on("raphael.drag.start."+this.id,d),a&&b.on("raphael.drag.move."+this.id,a),e&&b.on("raphael.drag.end."+this.id,e),b("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},ac.push({el:this,start:i}),this.mousedown(i),this},$b.onDragOver=function(a){a?b.on("raphael.drag.over."+this.id,a):b.unbind("raphael.drag.over."+this.id)},$b.undrag=function(){for(var a=ac.length;a--;)ac[a].el==this&&(this.unmousedown(ac[a].start),ac.splice(a,1),b.unbind("raphael.drag.*."+this.id));!ac.length&&c.unmousemove(Yb).unmouseup(Zb),Xb=[]},v.circle=function(a,b,d){var e=c._engine.circle(this,a||0,b||0,d||0);return this.__set__&&this.__set__.push(e),e},v.rect=function(a,b,d,e,f){var g=c._engine.rect(this,a||0,b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.ellipse=function(a,b,d,e){var f=c._engine.ellipse(this,a||0,b||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},v.path=function(a){a&&!c.is(a,U)&&!c.is(a[0],V)&&(a+=G);var b=c._engine.path(c.format[D](c,arguments),this);return this.__set__&&this.__set__.push(b),b},v.image=function(a,b,d,e,f){var g=c._engine.image(this,a||"about:blank",b||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},v.text=function(a,b,d){var e=c._engine.text(this,a||0,b||0,I(d));return this.__set__&&this.__set__.push(e),e},v.set=function(a){!c.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var b=new mc(a);return this.__set__&&this.__set__.push(b),b.paper=this,b.type="set",b},v.setStart=function(a){this.__set__=a||this.set()},v.setFinish=function(){var a=this.__set__;return delete this.__set__,a},v.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},v.setSize=function(a,b){return c._engine.setSize.call(this,a,b)},v.setViewBox=function(a,b,d,e,f){return c._engine.setViewBox.call(this,a,b,d,e,f)},v.top=v.bottom=null,v.raphael=c;var bc=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(A.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(A.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};v.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=A.doc.elementFromPoint(a,b);if(A.win.opera&&"svg"==e.tagName){var f=bc(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},v.getElementsByBBox=function(a){var b=this.set();return this.forEach(function(d){c.isBBoxIntersect(d.getBBox(),a)&&b.push(d)}),b},v.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},v.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},v.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},$b.isPointInside=function(a,b){var d=this.realPath=qb[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=c.transformPath(d,this.attr("transform"))),c.isPointInsidePath(d,a,b)},$b.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=qb[this.type](this),b.bboxwt=Bb(this.realPath),b.bboxwt.toString=p,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=qb[this.type](this)),b.bbox=Bb(rb(this.realPath,this.matrix)),b.bbox.toString=p,b.dirty=b.dirtyT=0),b.bbox)},$b.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},$b.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:a.opacity||.5,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||qb[this.type](this);f=this.matrix?rb(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var cc=function(a,b,d,e,f,g,h,i,l){return null==l?j(a,b,d,e,f,g,h,i):c.findDotsAtSegment(a,b,d,e,f,g,h,i,k(a,b,d,e,f,g,h,i,l))},dc=function(a,b){return function(d,e,f){d=Kb(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(b&&!m.start){if(k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!b)return k=cc(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:b?m:c.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},ec=dc(1),fc=dc(),gc=dc(0,1);c.getTotalLength=ec,c.getPointAtLength=fc,c.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return gc(a,b).end;var d=gc(a,c,1);return b?gc(d,b).end:d},$b.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():ec(a)},$b.getPointAtLength=function(a){var b=this.getPath();if(b)return fc(b,a)},$b.getPath=function(){var a,b=c._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return b&&(a=b(this)),a},$b.getSubpath=function(a,b){var d=this.getPath();if(d)return c.getSubpath(d,a,b)};var hc=c.easing_formulas={linear:function(a){return a},"<":function(a){return R(a,1.7)},">":function(a){return R(a,.48)},"<>":function(a){var b=.48-a/1.04,c=N.sqrt(.1734+b*b),d=c-b,e=R(Q(d),1/3)*(0>d?-1:1),f=-c-b,g=R(Q(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:R(2,-10*a)*N.sin(2*(a-.075)*S/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};hc.easeIn=hc["ease-in"]=hc["<"],hc.easeOut=hc["ease-out"]=hc[">"],hc.easeInOut=hc["ease-in-out"]=hc["<>"],hc["back-in"]=hc.backIn,hc["back-out"]=hc.backOut;var ic=[],jc=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){setTimeout(a,16)},kc=function(){for(var a=+new Date,d=0;d<ic.length;d++){var e=ic[d];if(!e.el.removed&&!e.paused){var f,g,h=a-e.start,i=e.ms,j=e.easing,k=e.from,l=e.diff,m=e.to,n=(e.t,e.el),o={},p={};if(e.initstatus?(h=(e.initstatus*e.anim.top-e.prev)/(e.percent-e.prev)*i,e.status=e.initstatus,delete e.initstatus,e.stop&&ic.splice(d--,1)):e.status=(e.prev+(e.percent-e.prev)*(h/i))/e.anim.top,!(0>h))if(i>h){var q=j(h/i);for(var r in k)if(k[z](r)){switch(db[r]){case T:f=+k[r]+q*i*l[r];break;case"colour":f="rgb("+[lc($(k[r].r+q*i*l[r].r)),lc($(k[r].g+q*i*l[r].g)),lc($(k[r].b+q*i*l[r].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[r].length;u>t;t++){f[t]=[k[r][t][0]];for(var v=1,w=k[r][t].length;w>v;v++)f[t][v]=+k[r][t][v]+q*i*l[r][t][v];f[t]=f[t].join(H)}f=f.join(H);break;case"transform":if(l[r].real)for(f=[],t=0,u=k[r].length;u>t;t++)for(f[t]=[k[r][t][0]],v=1,w=k[r][t].length;w>v;v++)f[t][v]=k[r][t][v]+q*i*l[r][t][v];else{var x=function(a){return+k[r][a]+q*i*l[r][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==r)for(f=[],t=4;t--;)f[t]=+k[r][t]+q*i*l[r][t];break;default:var y=[][E](k[r]);for(f=[],t=n.paper.customAttributes[r].length;t--;)f[t]=+y[t]+q*i*l[r][t]}o[r]=f}n.attr(o),function(a,c,d){setTimeout(function(){b("raphael.anim.frame."+a,c,d)})}(n.id,n,e.anim)}else{if(function(a,d,e){setTimeout(function(){b("raphael.anim.frame."+d.id,d,e),b("raphael.anim.finish."+d.id,d,e),c.is(a,"function")&&a.call(d)})}(e.callback,n,e.anim),n.attr(m),ic.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[z](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),s(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&s(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}c.svg&&n&&n.paper&&n.paper.safari(),ic.length&&jc(kc)},lc=function(a){return a>255?255:0>a?0:a};$b.animateWith=function(a,b,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof r?d:c.animation(d,e,f,g);s(i,h,i.percents[0],null,h.attr());for(var j=0,k=ic.length;k>j;j++)if(ic[j].anim==b&&ic[j].el==a){ic[k-1].start=ic[j].start;break}return h},$b.onAnimation=function(a){return a?b.on("raphael.anim.frame."+this.id,a):b.unbind("raphael.anim.frame."+this.id),this},r.prototype.delay=function(a){var b=new r(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},r.prototype.repeat=function(a){var b=new r(this.anim,this.ms);return b.del=this.del,b.times=N.floor(O(a,0))||1,b},c.animation=function(a,b,d,e){if(a instanceof r)return a;(c.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),b=+b||0;var f,g,h={};for(g in a)a[z](g)&&_(g)!=g&&_(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new r({100:h},b);if(e){var i=0;for(var j in a){var k=ab(j);a[z](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new r(a,b)},$b.animate=function(a,b,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof r?a:c.animation(a,b,d,e);return s(g,f,g.percents[0],null,f.attr()),f},$b.setTime=function(a,b){return a&&null!=b&&this.status(a,P(b,a.ms)/a.ms),this},$b.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return s(a,this,-1,P(b,1)),this;for(c=ic.length;c>f;f++)if(d=ic[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},$b.pause=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.pause."+this.id,this,ic[c].anim)!==!1&&(ic[c].paused=!0);return this},$b.resume=function(a){for(var c=0;c<ic.length;c++)if(ic[c].el.id==this.id&&(!a||ic[c].anim==a)){var d=ic[c];b("raphael.anim.resume."+this.id,this,d.anim)!==!1&&(delete d.paused,this.status(d.anim,d.status))}return this},$b.stop=function(a){for(var c=0;c<ic.length;c++)ic[c].el.id!=this.id||a&&ic[c].anim!=a||b("raphael.anim.stop."+this.id,this,ic[c].anim)!==!1&&ic.splice(c--,1);return this},b.on("raphael.remove",t),b.on("raphael.clear",t),$b.toString=function(){return"Raphaël’s object"};var mc=function(a){if(this.items=[],this.length=0,this.type="set",a)for(var b=0,c=a.length;c>b;b++)!a[b]||a[b].constructor!=$b.constructor&&a[b].constructor!=mc||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},nc=mc.prototype;nc.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=$b.constructor&&a.constructor!=mc||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},nc.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},nc.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var oc in $b)$b[z](oc)&&(nc[oc]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][D](c,b)})}}(oc));return nc.attr=function(a,b){if(a&&c.is(a,V)&&c.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,b);return this},nc.clear=function(){for(;this.length;)this.pop()},nc.splice=function(a,b){a=0>a?O(this.length+a,0):a,b=O(0,P(this.length-a,b));var c,d=[],e=[],f=[];for(c=2;c<arguments.length;c++)f.push(arguments[c]);for(c=0;b>c;c++)e.push(this[a+c]);for(;c<this.length-a;c++)d.push(this[a+c]);var g=f.length;for(c=0;c<g+d.length;c++)this.items[a+c]=this[a+c]=g>c?f[c]:d[c-g];for(c=this.items.length=this.length-=b-g;this[c];)delete this[c++];return new mc(e)},nc.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},nc.animate=function(a,b,d,e){(c.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=c.is(d,U)?d:g;var k=c.animation(a,b,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},nc.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},nc.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=P[D](0,a),b=P[D](0,b),c=O[D](0,c),d=O[D](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},nc.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},nc.toString=function(){return"Raphaël‘s set"},nc.glow=function(a){var b=this.paper.set();return this.forEach(function(c){var d=c.glow(a);null!=d&&d.forEach(function(a){b.push(a)})}),b},nc.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},c.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[z](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=ab(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[z](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[z](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},v.getFont=function(a,b,d,e){if(e=e||"normal",d=d||"normal",b=+b||{normal:400,bold:700,lighter:300,bolder:800}[b]||400,c.fonts){var f=c.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,G)+"(\\s|$)","i");for(var h in c.fonts)if(c.fonts[z](h)&&g.test(h)){f=c.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=b||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},v.print=function(a,b,d,e,f,g,h,i){g=g||"middle",h=O(P(h||0,1),-1),i=O(P(i||1,3),1);var j,k=I(d)[J](G),l=0,m=0,n=G;if(c.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[J](w),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var v=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(v.w||e.w)+(v.k&&v.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=c.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(b-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},v.add=function(a){if(c.is(a,"array"))for(var b,d=this.set(),e=0,f=a.length;f>e;e++)b=a[e]||{},x[z](b.type)&&d.push(this[b.type]().attr(b));return d},c.format=function(a,b){var d=c.is(b,V)?[0][E](b):arguments;return a&&c.is(a,U)&&d.length-1&&(a=a.replace(y,function(a,b){return null==d[++b]?G:d[b]})),a||G},c.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),c.ninja=function(){return B.was?A.win.Raphael=B.is:delete Raphael,c},c.st=nc,b.on("raphael.DOMload",function(){u=!0}),function(a,b,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):c.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(b,d=function(){a.removeEventListener(b,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),function(){if(c.svg){var a="hasOwnProperty",b=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=c.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};c.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[a](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),b(e[f])):d.setAttribute(f,b(e[f])))}else d=c._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(a,e){var j="linear",k=a.id+e,m=.5,n=.5,o=a.node,p=a.paper,r=o.style,s=c._g.doc.getElementById(k);if(!s){if(e=b(e).replace(c._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(c.rad(t)),f.sin(c.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=c._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),a.gradient&&k!=a.gradient.id&&(p.defs.removeChild(a.gradient),delete a.gradient),!a.gradient){s=q(j+"Gradient",{id:k}),a.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:a.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff"}))}}return q(o,{fill:"url('"+document.location+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=b(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;c._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=c._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-E*u):(g=E*u,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=c.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=c.getTotalLength(t.path)-g):(g=0,h=c.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:c.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[a](k)&&!p[k]){var F=c._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"":[0],none:[0],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,c,d){if(c=u[b(c).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=c.length;h--;)g[h]=c[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[a](o)){if(!c._availableAttrs[a](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=c._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=b(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=c.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=c._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=c._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=b(p).match(c._ISURL);if(F){B=q("pattern");var G=q("image");B.id=c.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(a){c._preload(F[1],function(){var b=this.offsetWidth,c=this.offsetHeight;q(a,{width:b,height:c}),q(G,{width:b,height:c}),d.paper.safari()})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=c.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!c.is(k.opacity,"undefined")&&c.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!c.is(k["fill-opacity"],"undefined")&&c.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[a]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=c.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[a]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=b(p).charAt())&&r(d,p);break; +case"opacity":k.gradient&&!k[a]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=c._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[a]("text")||f[a]("font")||f[a]("font-size")||f[a]("x")||f[a]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(c._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[a]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=b(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(c._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&c.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.matrix=c.matrix(),this.realPath=null,this.paper=b,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},B=c.el;A.prototype=B,B.constructor=A,c._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,c,e){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,c,e]])),this},B.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(j),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this},B.translate=function(a,c){return this.removed?this:(a=b(a).split(j),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this.transform(this._.transform.concat([["t",a,c]])),this)},B.transform=function(b){var d=this._;if(null==b)return d.transform;if(c._extractTransform(this,b),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[a]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return!this.removed&&this.paper.safari(this.node.style.display="none"),this},B.show=function(){return!this.removed&&this.paper.safari(this.node.style.display=""),this},B.remove=function(){var a=z(this.node);if(!this.removed&&a.parentNode){var b=this.paper;b.__set__&&b.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&b.defs.removeChild(this.gradient),c._tear(this,b),a.parentNode.removeChild(a),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?c._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==b)return this._.transform;for(var g=b.split(j),h={},i=0,l=g.length;l>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return l-1?h:h[g[0]]}if(null==d&&c.is(b,"array")){for(h={},i=0,l=b.length;l>i;i++)h[b[i]]=this.attr(b[i]);return h}if(null!=d){var m={};m[b]=d}else null!=b&&c.is(b,"object")&&(m=b);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[a](n)&&m[a](n)&&c.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[a](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var a=z(this.node);a.parentNode.appendChild(a);var b=this.paper;return b.top!=this&&c._tofront(this,b),this},B.toBack=function(){if(this.removed)return this;var a=z(this.node),b=a.parentNode;b.insertBefore(a,b.firstChild),c._toback(this,this.paper);this.paper;return this},B.insertAfter=function(a){if(this.removed||!a)return this;var b=z(this.node),d=z(a.node||a[a.length-1].node);return d.nextSibling?d.parentNode.insertBefore(b,d.nextSibling):d.parentNode.appendChild(b),c._insertafter(this,a,this.paper),this},B.insertBefore=function(a){if(this.removed||!a)return this;var b=z(this.node),d=z(a.node||a[0].node);return d.parentNode.insertBefore(b,d),c._insertbefore(this,a,this.paper),this},B.blur=function(a){var b=this;if(0!==+a){var d=q("filter"),e=q("feGaussianBlur");b.attrs.blur=a,d.id=c.createUUID(),q(e,{stdDeviation:+a||1.5}),d.appendChild(e),b.paper.defs.appendChild(d),b._blur=d,q(b.node,{filter:"url(#"+d.id+")"})}else b._blur&&(b._blur.parentNode.removeChild(b._blur),delete b._blur,delete b.attrs.blur),b.node.removeAttribute("filter");return b},c._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},c._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},c._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},c._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},c._engine.text=function(a,b,d,e){var f=q("text");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={x:b,y:d,"text-anchor":"middle",text:e,"font-family":c._availableAttrs["font-family"],"font-size":c._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},c._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a&&a.container,d=a.x,e=a.y,f=a.width,g=a.height;if(!b)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==b?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",c._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i)),b=new c._Paper,b.width=f,b.height=g,b.canvas=i,b.clear(),b._left=b._top=0,h&&(b.renderfix=function(){}),b.renderfix(),b},c._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},c.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},c.prototype.clear=function(){c.eve("raphael.clear",this);for(var a=this.canvas;a.firstChild;)a.removeChild(a.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(c._g.doc.createTextNode("Created with Raphaël "+c.version)),a.appendChild(this.desc),a.appendChild(this.defs=q("defs"))},c.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null};var C=c.st;for(var D in B)B[a](D)&&!C[a](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}(),function(){if(c.vml){var a="hasOwnProperty",b=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=c.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(a){var d=/[ahqstv]/gi,e=c._pathToAbsolute;if(b(a).match(d)&&(e=c._path2curve),d=/[clmz]/g,e==c._pathToAbsolute&&!b(a).match(d)){var g=b(a).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(a);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(a,b,d){var e=c.matrix();return e.rotate(-a,.5,.5),{dx:e.x(b,d),dy:e.y(b,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};c.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,c,d){for(var e=b(c).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[a](t)&&(m[t]=i[t]);if(q&&(m.path=c._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~b(m.path).toLowerCase().indexOf("r")?c._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=c.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=b(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||c._g.doc.createElement("div"),I=H.style;I.clip=c.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=b(i.fill).match(c._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],c._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=c.getRGB(i.fill).hex,K.src=o,K.type="solid",c.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=b(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+c.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=c.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[a](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=b(s.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,"<br>"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=c.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(a,f,g){a.attrs=a.attrs||{};var h=(a.attrs,Math.pow),i="linear",j=".5 .5";if(a.attrs.gradient=f,f=b(f).replace(c._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=c._parseDots(f);if(!l)return null;if(a=a.shape||a.node,l.length){a.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),a.appendChild(g)}return 1},D=function(a,b){this[0]=this.node=a,a.raphael=!0,this.id=c._oid++,a.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=b,this.matrix=c.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!b.bottom&&(b.bottom=this),this.prev=b.top,b.top&&(b.top.next=this),b.top=this,this.next=null},E=c.el;D.prototype=E,E.constructor=D,E.transform=function(a){if(null==a)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=a=b(a).replace(/\.{3}|\u2026/g,this._.transform||o)),c._extractTransform(this,f+a);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~b(this.attrs.fill).indexOf("-"),l=!b(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=b(h),i.offset=h.offset();return null!==d&&(this._.transform=d,c._extractTransform(this,d)),this},E.rotate=function(a,c,e){if(this.removed)return this;if(null!=a){if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(c=e),null==c||null==e){var f=this.getBBox(1);c=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,c,e]])),this}},E.translate=function(a,c){return this.removed?this:(a=b(a).split(k),a.length-1&&(c=d(a[1])),a=d(a[0])||0,c=+c||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=c),this.transform(this._.transform.concat([["t",a,c]])),this)},E.scale=function(a,c,e,f){if(this.removed)return this;if(a=b(a).split(k),a.length-1&&(c=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==c&&(c=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,c,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=c.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),c.eve.unbind("raphael.*.*."+this.id),c._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;this.removed=!0}},E.attr=function(b,d){if(this.removed)return this;if(null==b){var e={};for(var f in this.attrs)this.attrs[a](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&c.is(b,"string")){if(b==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=b.split(k),h={},i=0,m=g.length;m>i;i++)b=g[i],h[b]=b in this.attrs?this.attrs[b]:c.is(this.paper.customAttributes[b],"function")?this.paper.customAttributes[b].def:c._availableAttrs[b];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&c.is(b,"array")){for(h={},i=0,m=b.length;m>i;i++)h[b[i]]=this.attr(b[i]);return h}var n;null!=d&&(n={},n[b]=d),null==d&&c.is(b,"object")&&(n=b);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[a](o)&&n[a](o)&&c.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[a](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&c._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),c._toback(this,this.paper)),this)},E.insertAfter=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[a.length-1]),a.node.nextSibling?a.node.parentNode.insertBefore(this.node,a.node.nextSibling):a.node.parentNode.appendChild(this.node),c._insertafter(this,a,this.paper),this)},E.insertBefore=function(a){return this.removed?this:(a.constructor==c.st.constructor&&(a=a[0]),a.node.parentNode.insertBefore(this.node,a.node),c._insertbefore(this,a,this.paper),this)},E.blur=function(a){var b=this.node.runtimeStyle,d=b.filter;return d=d.replace(r,o),0!==+a?(this.attrs.blur=a,b.filter=d+n+m+".Blur(pixelradius="+(+a||1.5)+")",b.margin=c.format("-{0}px 0 0 -{0}px",f(+a||1.5))):(b.filter=d,b.margin=0,delete this.attrs.blur),this},c._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},c._engine.rect=function(a,b,d,e,f,g){var h=c._rectPath(b,d,e,f,g),i=a.path(h),j=i.attrs;return i.X=j.x=b,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},c._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},c._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},c._engine.image=function(a,b,d,e,f,g){var h=c._rectPath(d,e,f,g),i=a.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=b,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=b,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},c._engine.text=function(a,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=c.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=b(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,a),l={fill:"#000",stroke:"none",font:c._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=b(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),a.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},c._engine.setSize=function(a,b){var d=this.canvas.style;return this.width=a,this.height=b,a==+a&&(a+="px"),b==+b&&(b+="px"),d.width=a,d.height=b,d.clip="rect(0 "+a+" "+b+" 0)",this._viewBox&&c._engine.setViewBox.apply(this,this._viewBox),this},c._engine.setViewBox=function(a,b,d,e,f){c.eve("raphael.setViewBox",this,this._viewBox,[a,b,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(a-=(j-d*g)/2/g),k>e*h&&(b-=(k-e*h)/2/h)),this._viewBox=[a,b,d,e,!!f],this._viewBoxShift={dx:-a,dy:-b,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;c._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("<rvml:"+a+' class="rvml">')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},c._engine.initWin(c._g.win),c._engine.create=function(){var a=c._getContainer.apply(0,arguments),b=a.container,d=a.height,e=a.width,f=a.x,g=a.y;if(!b)throw new Error("VML container not found.");var h=new c._Paper,i=h.canvas=c._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=c._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=c.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==b?(c._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):b.firstChild?b.insertBefore(i,b.firstChild):b.appendChild(i),h.renderfix=function(){},h},c.prototype.clear=function(){c.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=c._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},c.prototype.remove=function(){c.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]="function"==typeof this[a]?c._removedFactory(a):null;return!0};var G=c.st;for(var H in E)E[a](H)&&!G[a](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}}(),B.was?A.win.Raphael=c:Raphael=c,"object"==typeof exports&&(module.exports=c),c}); \ No newline at end of file diff --git a/plugins/raty-fa/jquery.raty-fa.js b/plugins/raty-fa/jquery.raty-fa.js new file mode 100644 index 0000000..f363c6c --- /dev/null +++ b/plugins/raty-fa/jquery.raty-fa.js @@ -0,0 +1,452 @@ +/*! + * jQuery Raty FA - A Star Rating Plugin with Font Awesome + * + * Licensed under The MIT License + * + * @author : Jacob Overgaard + * @doc : http://jacob87.github.io/raty-fa/ + * @version : 0.1.1 + * + */ + +;(function($) { + + var methods = { + init: function(settings) { + return this.each(function() { + methods.destroy.call(this); + + this.opt = $.extend(true, {}, $.fn.raty.defaults, settings); + + var that = $(this), + inits = ['number', 'readOnly', 'score', 'scoreName']; + + methods._callback.call(this, inits); + + if (this.opt.precision) { + methods._adjustPrecision.call(this); + } + + this.opt.number = methods._between(this.opt.number, 0, this.opt.numberMax); + + this.stars = methods._createStars.call(this); + this.score = methods._createScore.call(this); + + methods._apply.call(this, this.opt.score); + + if (this.opt.cancel) { + this.cancel = methods._createCancel.call(this); + } + + if (this.opt.width) { + that.css('width', this.opt.width); + } + + if (this.opt.readOnly) { + methods._lock.call(this); + } else { + that.css('cursor', 'pointer'); + methods._binds.call(this); + } + + methods._target.call(this, this.opt.score); + + that.data({ 'settings': this.opt, 'raty': true }); + }); + }, _adjustPrecision: function() { + this.opt.targetType = 'score'; + this.opt.half = true; + }, _apply: function(score) { + if (typeof score !== 'undefined' && score >= 0) { + score = methods._between(score, 0, this.opt.number); + this.score.val(score); + } + + methods._fill.call(this, score); + + if (score) { + methods._roundStars.call(this, score); + } + }, _between: function(value, min, max) { + return Math.min(Math.max(parseFloat(value), min), max); + }, _binds: function() { + if (this.cancel) { + methods._bindCancel.call(this); + } + + methods._bindClick.call(this); + methods._bindOut.call(this); + methods._bindOver.call(this); + }, _bindCancel: function() { + methods._bindClickCancel.call(this); + methods._bindOutCancel.call(this); + methods._bindOverCancel.call(this); + }, _bindClick: function() { + var self = this, + that = $(self); + + self.stars.on('click.raty', function(evt) { + self.score.val((self.opt.half || self.opt.precision) ? that.data('score') : $(this).data('score')); + + if (self.opt.click) { + self.opt.click.call(self, parseFloat(self.score.val()), evt); + } + }); + }, _bindClickCancel: function() { + var self = this; + + self.cancel.on('click.raty', function(evt) { + self.score.removeAttr('value'); + + if (self.opt.click) { + self.opt.click.call(self, null, evt); + } + }); + }, _bindOut: function() { + var self = this; + + $(this).on('mouseleave.raty', function(evt) { + var score = parseFloat(self.score.val()) || undefined; + + methods._apply.call(self, score); + methods._target.call(self, score, evt); + + if (self.opt.mouseout) { + self.opt.mouseout.call(self, score, evt); + } + }); + }, _bindOutCancel: function() { + var self = this; + + self.cancel.on('mouseleave.raty', function(evt) { + $(this).attr('class', self.opt.cancelOff); + + if (self.opt.mouseout) { + self.opt.mouseout.call(self, self.score.val() || null, evt); + } + }); + }, _bindOverCancel: function() { + var self = this; + + self.cancel.on('mouseover.raty', function(evt) { + $(this).attr('class', self.opt.cancelOn); + + self.stars.attr('class', self.opt.starOff); + + methods._target.call(self, null, evt); + + if (self.opt.mouseover) { + self.opt.mouseover.call(self, null); + } + }); + }, _bindOver: function() { + var self = this, + that = $(self), + action = self.opt.half ? 'mousemove.raty' : 'mouseover.raty'; + + self.stars.on(action, function(evt) { + var score = parseInt($(this).data('score'), 10); + + if (self.opt.half) { + var position = parseFloat((evt.pageX - $(this).offset().left) / (self.opt.size ? self.opt.size : parseInt(that.css('font-size')))), + plus = (position > .5) ? 1 : .5; + + score = score - 1 + plus; + + methods._fill.call(self, score); + + if (self.opt.precision) { + score = score - plus + position; + } + + methods._roundStars.call(self, score); + + that.data('score', score); + } else { + methods._fill.call(self, score); + } + + methods._target.call(self, score, evt); + + if (self.opt.mouseover) { + self.opt.mouseover.call(self, score, evt); + } + }); + }, _callback: function(options) { + for (var i in options) { + if (typeof this.opt[options[i]] === 'function') { + this.opt[options[i]] = this.opt[options[i]].call(this); + } + } + }, _createCancel: function() { + var that = $(this), + icon = this.opt.cancelOff, + cancel = $('<i />', { 'class': icon, title: this.opt.cancelHint }); + + if (this.opt.cancelPlace == 'left') { + that.prepend('&#160;').prepend(cancel); + } else { + that.append('&#160;').append(cancel); + } + + return cancel; + }, _createScore: function() { + return $('<input />', { type: 'hidden', name: this.opt.scoreName }).appendTo(this); + }, _createStars: function() { + var that = $(this); + + for (var i = 1; i <= this.opt.number; i++) { + var title = methods._getHint.call(this, i), + icon = (this.opt.score && this.opt.score >= i) ? 'starOn' : 'starOff'; + + icon = this.opt[icon]; + + $('<i />', { 'class' : icon, title: title, 'data-score': i }).appendTo(this); + + if (this.opt.space) { + that.append((i < this.opt.number) ? '&#160;' : ''); + } + } + + return that.children('i'); + }, _error: function(message) { + $(this).html(message); + + $.error(message); + }, _fill: function(score) { + var self = this, + hash = 0; + + for (var i = 1; i <= self.stars.length; i++) { + var star = self.stars.eq(i - 1), + select = self.opt.single ? (i == score) : (i <= score); + + if (self.opt.iconRange && self.opt.iconRange.length > hash) { + var irange = self.opt.iconRange[hash], + on = irange.on || self.opt.starOn, + off = irange.off || self.opt.starOff, + icon = select ? on : off; + + if (i <= irange.range) { + star.attr('class', icon); + } + + if (i == irange.range) { + hash++; + } + } else { + var icon = select ? 'starOn' : 'starOff'; + + star.attr('class', this.opt[icon]); + } + } + }, _getHint: function(score) { + var hint = this.opt.hints[score - 1]; + return (hint === '') ? '' : (hint || score); + }, _lock: function() { + var score = parseInt(this.score.val(), 10), // TODO: 3.1 >> [['1'], ['2'], ['3', '.1', '.2']] + hint = score ? methods._getHint.call(this, score) : this.opt.noRatedMsg; + + $(this).data('readonly', true).css('cursor', '').attr('title', hint); + + this.score.attr('readonly', 'readonly'); + this.stars.attr('title', hint); + + if (this.cancel) { + this.cancel.hide(); + } + }, _roundStars: function(score) { + var rest = (score - Math.floor(score)).toFixed(2); + + if (rest > this.opt.round.down) { + var icon = 'starOn'; // Up: [x.76 .. x.99] + + if (this.opt.halfShow && rest < this.opt.round.up) { // Half: [x.26 .. x.75] + icon = 'starHalf'; + } else if (rest < this.opt.round.full) { // Down: [x.00 .. x.5] + icon = 'starOff'; + } + + this.stars.eq(Math.ceil(score) - 1).attr('class', this.opt[icon]); + } // Full down: [x.00 .. x.25] + }, _target: function(score, evt) { + if (this.opt.target) { + var target = $(this.opt.target); + + if (target.length === 0) { + methods._error.call(this, 'Target selector invalid or missing!'); + } + + if (this.opt.targetFormat.indexOf('{score}') < 0) { + methods._error.call(this, 'Template "{score}" missing!'); + } + + var mouseover = evt && evt.type == 'mouseover'; + + if (score === undefined) { + score = this.opt.targetText; + } else if (score === null) { + score = mouseover ? this.opt.cancelHint : this.opt.targetText; + } else { + if (this.opt.targetType == 'hint') { + score = methods._getHint.call(this, Math.ceil(score)); + } else if (this.opt.precision) { + score = parseFloat(score).toFixed(1); + } + + if (!mouseover && !this.opt.targetKeep) { + score = this.opt.targetText; + } + } + + if (score) { + score = this.opt.targetFormat.toString().replace('{score}', score); + } + + if (target.is(':input')) { + target.val(score); + } else { + target.html(score); + } + } + }, _unlock: function() { + $(this).data('readonly', false).css('cursor', 'pointer').removeAttr('title'); + + this.score.removeAttr('readonly', 'readonly'); + + for (var i = 0; i < this.opt.number; i++) { + this.stars.eq(i).attr('title', methods._getHint.call(this, i + 1)); + } + + if (this.cancel) { + this.cancel.css('display', ''); + } + }, cancel: function(click) { + return this.each(function() { + if ($(this).data('readonly') !== true) { + methods[click ? 'click' : 'score'].call(this, null); + this.score.removeAttr('value'); + } + }); + }, click: function(score) { + return $(this).each(function() { + if ($(this).data('readonly') !== true) { + methods._apply.call(this, score); + + if (!this.opt.click) { + methods._error.call(this, 'You must add the "click: function(score, evt) { }" callback.'); + } + + + this.opt.click.call(this, score, $.Event('click')); + + methods._target.call(this, score); + } + }); + }, destroy: function() { + return $(this).each(function() { + var that = $(this), + raw = that.data('raw'); + + if (raw) { + that.off('.raty').empty().css({ cursor: raw.style.cursor, width: raw.style.width }).removeData('readonly'); + } else { + that.data('raw', that.clone()[0]); + } + }); + }, getScore: function() { + var score = [], + value ; + + $(this).each(function() { + value = this.score.val(); + + score.push(value ? parseFloat(value) : undefined); + }); + + return (score.length > 1) ? score : score[0]; + }, readOnly: function(readonly) { + return this.each(function() { + var that = $(this); + + if (that.data('readonly') !== readonly) { + if (readonly) { + that.off('.raty').children('i').off('.raty'); + + methods._lock.call(this); + } else { + methods._binds.call(this); + methods._unlock.call(this); + } + + that.data('readonly', readonly); + } + }); + }, reload: function() { + return methods.set.call(this, {}); + }, score: function() { + return arguments.length ? methods.setScore.apply(this, arguments) : methods.getScore.call(this); + }, set: function(settings) { + return this.each(function() { + var that = $(this), + actual = that.data('settings'), + news = $.extend({}, actual, settings); + + that.raty(news); + }); + }, setScore: function(score) { + return $(this).each(function() { + if ($(this).data('readonly') !== true) { + methods._apply.call(this, score); + methods._target.call(this, score); + } + }); + } + }; + + $.fn.raty = function(method) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return methods.init.apply(this, arguments); + } else { + $.error('Method ' + method + ' does not exist!'); + } + }; + + $.fn.raty.defaults = { + cancel : false, + cancelHint : 'Cancel this rating!', + cancelOff : 'fa fa-fw fa-minus-square', + cancelOn : 'fa fa-fw fa-check-square', + cancelPlace : 'left', + click : undefined, + half : false, + halfShow : true, + hints : ['bad', 'poor', 'regular', 'good', 'gorgeous'], + iconRange : undefined, + mouseout : undefined, + mouseover : undefined, + noRatedMsg : 'Not rated yet!', + number : 5, + numberMax : 20, + precision : false, + readOnly : false, + round : { down: .25, full: .6, up: .76 }, + score : undefined, + scoreName : 'score', + single : false, + size : null, + space : true, + starHalf : 'fa fa-fw fa-star-half-o', + starOff : 'fa fa-fw fa-star-o', + starOn : 'fa fa-fw fa-star', + target : undefined, + targetFormat : '{score}', + targetKeep : false, + targetText : '', + targetType : 'hint', + width : false + }; + +})(jQuery); diff --git a/plugins/responsive-table/css/rwd-table.min.css b/plugins/responsive-table/css/rwd-table.min.css new file mode 100644 index 0000000..6edd2f2 --- /dev/null +++ b/plugins/responsive-table/css/rwd-table.min.css @@ -0,0 +1,7 @@ +/*! + * Responsive Tables v5.0.4 (http://gergeo.se/RWD-Table-Patterns) + * This is an awesome solution for responsive tables with complex data. + * Authors: Nadan Gergeo <nadan.gergeo@gmail.com> (www.gergeo.se) & Maggie Wachs (www.filamentgroup.com) + * Licensed under MIT (https://github.com/nadangergeo/RWD-Table-Patterns/blob/master/LICENSE-MIT) + */ +.dropdown-menu>li.checkbox-row{padding:5px 20px}.dropdown-menu li.checkbox-row{display:block;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li.checkbox-row label{font-weight:normal}.dropdown-menu li.checkbox-row:hover,.dropdown-menu li.checkbox-row input:hover,.dropdown-menu li.checkbox-row label:hover{cursor:pointer}.no-touch .dropdown-menu>.checkbox-row:hover,.no-touch .dropdown-menu>.checkbox-row:active{text-decoration:none;color:#262626;background-color:#f5f5f5}.btn-toolbar{margin-bottom:20px}.lt-ie8 .btn-toolbar{display:none}.table-responsive{border-radius:3px;border:1px solid #ddd;margin-bottom:20px}.table-responsive>.table{margin-bottom:0}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.table-responsive[data-pattern="priority-columns"]{position:relative;width:100%;margin-bottom:20px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;border-radius:3px;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive[data-pattern="priority-columns"]>.table{margin-bottom:0}.table-responsive[data-pattern="priority-columns"]>.table>thead>tr>th,.table-responsive[data-pattern="priority-columns"]>.table>tbody>tr>th,.table-responsive[data-pattern="priority-columns"]>.table>tfoot>tr>th,.table-responsive[data-pattern="priority-columns"]>.table>thead>tr>td,.table-responsive[data-pattern="priority-columns"]>.table>tbody>tr>td,.table-responsive[data-pattern="priority-columns"]>.table>tfoot>tr>td{white-space:nowrap}.table-responsive[data-pattern="priority-columns"]>.table-bordered{border:0}.table-responsive[data-pattern="priority-columns"]>.table-bordered>thead>tr>th:first-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr>th:first-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr>th:first-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>thead>tr>td:first-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr>td:first-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive[data-pattern="priority-columns"]>.table-bordered>thead>tr>th:last-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr>th:last-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr>th:last-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>thead>tr>td:last-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr>td:last-child,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr:last-child>th,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr:last-child>th,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tbody>tr:last-child>td,.table-responsive[data-pattern="priority-columns"]>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority],.mq.js.lt-ie10 .sticky-table-header th[data-priority],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority],.mq.js.lt-ie10 .sticky-table-header td[data-priority]{display:none}.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="1"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="1"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="1"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="1"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="1"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="1"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="1"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="1"]{display:table-cell}@media screen and (min-width:480px){.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="2"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="2"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="2"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="2"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="2"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="2"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="2"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="2"]{display:table-cell}}@media screen and (min-width:640px){.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="3"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="3"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="3"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="3"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="3"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="3"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="3"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="3"]{display:table-cell}}@media screen and (min-width:800px){.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="4"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="4"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="4"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="4"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="4"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="4"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="4"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="4"]{display:table-cell}}@media screen and (min-width:960px){.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="5"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="5"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="5"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="5"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="5"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="5"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="5"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="5"]{display:table-cell}}@media screen and (min-width:1120px){.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="6"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header th[data-priority="6"],.lt-ie9.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="6"],.lt-ie9.mq.js.lt-ie10 .sticky-table-header td[data-priority="6"]{display:inline}.mq.js .table-responsive[data-pattern="priority-columns"] th[data-priority="6"],.mq.js.lt-ie10 .sticky-table-header th[data-priority="6"],.mq.js .table-responsive[data-pattern="priority-columns"] td[data-priority="6"],.mq.js.lt-ie10 .sticky-table-header td[data-priority="6"]{display:table-cell}}table.table-small-font{font-size:12px;-webkit-text-size-adjust:none;line-height:1.5em}table.focus-on tbody tr:hover{cursor:pointer}table.focus-on tbody tr.unfocused th,table.focus-on tbody tr.unfocused td{color:#999;color:rgba(0,0,0,0.4)}table.focus-on tbody tr.focused th,table.focus-on tbody tr.focused td{background-color:#5bc0de;color:#000}table th.col-hide,table td.col-hide{display:none}table th.col-show,table td.col-show{display:inline}.lt-ie9 table th.col-show,.lt-ie9 table td.col-show{display:table-cell}.lt-ie9 table.display-all th,.lt-ie9 table.display-all td{display:inline !important}table.display-all th,table.display-all td{display:table-cell !important}.sticky-table-header{background-color:#fff;border:none;border-radius:0;border-top:1px solid #ddd;border-bottom:1px solid #ddd;position:absolute;top:0;visibility:hidden;z-index:990;overflow:hidden;min-width:100%}.sticky-table-header.fixed-solution{min-width:0;position:fixed}.lt-ie10 .sticky-table-header.fixed-solution{border-left:1px solid #ddd;border-right:1px solid #ddd;box-sizing:content-box;border-bottom:none}.sticky-table-header.border-radius-fix{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.sticky-table-header>.table{margin-bottom:0}.sticky-table-header>.table>thead>tr>th,.sticky-table-header>.table>tbody>tr>th,.sticky-table-header>.table>tfoot>tr>th,.sticky-table-header>.table>thead>tr>td,.sticky-table-header>.table>tbody>tr>td,.sticky-table-header>.table>tfoot>tr>td{white-space:nowrap}.sticky-table-header>.table-bordered{border:0}.sticky-table-header>.table-bordered>thead>tr>th:first-child,.sticky-table-header>.table-bordered>tbody>tr>th:first-child,.sticky-table-header>.table-bordered>tfoot>tr>th:first-child,.sticky-table-header>.table-bordered>thead>tr>td:first-child,.sticky-table-header>.table-bordered>tbody>tr>td:first-child,.sticky-table-header>.table-bordered>tfoot>tr>td:first-child{border-left:0}.sticky-table-header>.table-bordered>thead>tr>th:last-child,.sticky-table-header>.table-bordered>tbody>tr>th:last-child,.sticky-table-header>.table-bordered>tfoot>tr>th:last-child,.sticky-table-header>.table-bordered>thead>tr>td:last-child,.sticky-table-header>.table-bordered>tbody>tr>td:last-child,.sticky-table-header>.table-bordered>tfoot>tr>td:last-child{border-right:0}.sticky-table-header>.table-bordered>tbody>tr:last-child>th,.sticky-table-header>.table-bordered>tfoot>tr:last-child>th,.sticky-table-header>.table-bordered>tbody>tr:last-child>td,.sticky-table-header>.table-bordered>tfoot>tr:last-child>td{border-bottom:0} \ No newline at end of file diff --git a/plugins/responsive-table/js/rwd-table.min.js b/plugins/responsive-table/js/rwd-table.min.js new file mode 100644 index 0000000..7a2b528 --- /dev/null +++ b/plugins/responsive-table/js/rwd-table.min.js @@ -0,0 +1,7 @@ +/*! + * Responsive Tables v5.0.4 (http://gergeo.se/RWD-Table-Patterns) + * This is an awesome solution for responsive tables with complex data. + * Authors: Nadan Gergeo <nadan.gergeo@gmail.com> (www.gergeo.se) & Maggie Wachs (www.filamentgroup.com) + * Licensed under MIT (https://github.com/nadangergeo/RWD-Table-Patterns/blob/master/LICENSE-MIT) + */ +!function(a){"use strict";function b(){return"undefined"!=typeof window.matchMedia||"undefined"!=typeof window.msMatchMedia||"undefined"!=typeof window.styleMedia}function c(){return"ontouchstart"in window}function d(){return!!(navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/iPod/i))}var e=function(b,c){var e=this;if(this.options=c,this.$tableWrapper=null,this.$tableScrollWrapper=a(b),this.$table=a(b).find("table"),1!==this.$table.length)throw new Error("Exactly one table is expected in a .table-responsive div.");this.$tableScrollWrapper.attr("data-pattern",this.options.pattern),this.id=this.$table.prop("id")||this.$tableScrollWrapper.prop("id")||"id"+Math.random().toString(16).slice(2),this.$tableClone=null,this.$stickyTableHeader=null,this.$thead=this.$table.find("thead"),this.$tbody=this.$table.find("tbody"),this.$hdrCells=this.$thead.find("th"),this.$bodyRows=this.$tbody.find("tr"),this.$btnToolbar=null,this.$dropdownGroup=null,this.$dropdownBtn=null,this.$dropdownContainer=null,this.$displayAllBtn=null,this.$focusGroup=null,this.$focusBtn=null,this.displayAllTrigger="display-all-"+this.id+".responsive-table",this.idPrefix=this.id+"-col-",this.iOS=d(),this.wrapTable(),this.createButtonToolbar(),this.setupHdrCells(),this.setupStandardCells(),this.options.stickyTableHeader&&this.createStickyTableHeader(),this.$dropdownContainer.is(":empty")&&this.$dropdownGroup.hide(),a(window).bind("orientationchange resize "+this.displayAllTrigger,function(){e.$dropdownContainer.find("input").trigger("updateCheck"),a.proxy(e.updateSpanningCells(),e)})};e.DEFAULTS={pattern:"priority-columns",stickyTableHeader:!0,fixedNavbar:".navbar-fixed-top",addDisplayAllBtn:!0,addFocusBtn:!0,focusBtnIcon:"glyphicon glyphicon-screenshot"},e.prototype.wrapTable=function(){this.$tableScrollWrapper.wrap('<div class="table-wrapper"/>'),this.$tableWrapper=this.$tableScrollWrapper.parent()},e.prototype.createButtonToolbar=function(){var b=this;this.$btnToolbar=a('<div class="btn-toolbar" />'),this.$dropdownGroup=a('<div class="btn-group dropdown-btn-group pull-right" />'),this.$dropdownBtn=a('<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">Display <span class="caret"></span></button>'),this.$dropdownContainer=a('<ul class="dropdown-menu"/>'),this.options.addFocusBtn&&(this.$focusGroup=a('<div class="btn-group focus-btn-group" />'),this.$focusBtn=a('<button class="btn btn-default">Focus</button>'),this.options.focusBtnIcon&&this.$focusBtn.prepend('<span class="'+this.options.focusBtnIcon+'"></span> '),this.$focusGroup.append(this.$focusBtn),this.$btnToolbar.append(this.$focusGroup),this.$focusBtn.click(function(){a.proxy(b.activateFocus(),b)}),this.$bodyRows.click(function(){a.proxy(b.focusOnRow(a(this)),b)})),this.options.addDisplayAllBtn&&(this.$displayAllBtn=a('<button class="btn btn-default">Display all</button>'),this.$dropdownGroup.append(this.$displayAllBtn),this.$table.hasClass("display-all")&&this.$displayAllBtn.addClass("btn-primary"),this.$displayAllBtn.click(function(){a.proxy(b.displayAll(null,!0),b)})),this.$dropdownGroup.append(this.$dropdownBtn).append(this.$dropdownContainer),this.$btnToolbar.append(this.$dropdownGroup),this.$tableScrollWrapper.before(this.$btnToolbar)},e.prototype.clearAllFocus=function(){this.$bodyRows.removeClass("unfocused"),this.$bodyRows.removeClass("focused")},e.prototype.activateFocus=function(){this.clearAllFocus(),this.$focusBtn&&this.$focusBtn.toggleClass("btn-primary"),this.$table.toggleClass("focus-on")},e.prototype.focusOnRow=function(b){if(this.$table.hasClass("focus-on")){var c=a(b).hasClass("focused");this.clearAllFocus(),c||(this.$bodyRows.addClass("unfocused"),a(b).addClass("focused"))}},e.prototype.displayAll=function(b,c){this.$displayAllBtn&&this.$displayAllBtn.toggleClass("btn-primary",b),this.$table.toggleClass("display-all",b),this.$tableClone&&this.$tableClone.toggleClass("display-all",b),c&&a(window).trigger(this.displayAllTrigger)},e.prototype.preserveDisplayAll=function(){var b="table-cell";a("html").hasClass("lt-ie9")&&(b="inline"),a(this.$table).find("th, td").css("display",b),this.$tableClone&&a(this.$tableClone).find("th, td").css("display",b)},e.prototype.createStickyTableHeader=function(){var b=this;b.$tableClone=b.$table.clone(),b.$tableClone.prop("id",this.id+"-clone"),b.$tableClone.find("[id]").each(function(){a(this).prop("id",a(this).prop("id")+"-clone")}),b.$tableClone.wrap('<div class="sticky-table-header"/>'),b.$stickyTableHeader=b.$tableClone.parent(),b.$stickyTableHeader.css("height",b.$thead.height()+2),a("html").hasClass("lt-ie10")?b.$tableWrapper.prepend(b.$stickyTableHeader):b.$table.before(b.$stickyTableHeader),a(window).bind("scroll resize",function(){a.proxy(b.updateStickyTableHeader(),b)}),a(b.$tableScrollWrapper).bind("scroll",function(){a.proxy(b.updateStickyTableHeader(),b)})},e.prototype.updateStickyTableHeader=function(){var b=this,c=0,d=b.$table.offset().top,e=a(window).scrollTop()-1,f=b.$table.height()-b.$stickyTableHeader.height(),g=e+a(window).height()-a(document).height(),h=!b.iOS,i=0;if(a(b.options.fixedNavbar).length){var j=a(b.options.fixedNavbar).first();i=j.height(),e+=i}var k=e>d&&e<d+b.$table.height();if(h){if(b.$stickyTableHeader.scrollLeft(b.$tableScrollWrapper.scrollLeft()),b.$stickyTableHeader.addClass("fixed-solution"),c=i-1,e-d>f?(c-=e-d-f,b.$stickyTableHeader.addClass("border-radius-fix")):b.$stickyTableHeader.removeClass("border-radius-fix"),k)return void b.$stickyTableHeader.css({visibility:"visible",top:c+"px",width:b.$tableScrollWrapper.innerWidth()+"px"});b.$stickyTableHeader.css({visibility:"hidden",width:"auto"})}else{b.$stickyTableHeader.removeClass("fixed-solution");var l=400;c=e-d-1,0>c?c=0:c>f&&(c=f),g>0&&(c-=g),k?(b.$stickyTableHeader.css({visibility:"visible"}),b.$stickyTableHeader.animate({top:c+"px"},l),b.$thead.css({visibility:"hidden"})):b.$stickyTableHeader.animate({top:"0"},l,function(){b.$thead.css({visibility:"visible"}),b.$stickyTableHeader.css({visibility:"hidden"})})}},e.prototype.setupHdrCells=function(){var b=this;b.$hdrCells.each(function(c){var d=a(this),e=d.prop("id"),f=d.text();if(e||(e=b.idPrefix+c,d.prop("id",e)),""===f&&(f=d.attr("data-col-name")),d.is("[data-priority]")){var g=a('<li class="checkbox-row"><input type="checkbox" name="toggle-'+e+'" id="toggle-'+e+'" value="'+e+'" /> <label for="toggle-'+e+'">'+f+"</label></li>"),h=g.find("input");b.$dropdownContainer.append(g),g.click(function(){h.prop("checked",!h.prop("checked")),h.trigger("change")}),a("html").hasClass("lt-ie9")&&h.click(function(){a(this).trigger("change")}),g.find("label").click(function(a){a.stopPropagation()}),g.find("input").click(function(a){a.stopPropagation()}).change(function(){var c=a(this),d=c.val(),e=b.$tableWrapper.find("#"+d+", #"+d+"-clone, [data-columns~="+d+"]");b.$table.hasClass("display-all")&&(a.proxy(b.preserveDisplayAll(),b),b.$table.removeClass("display-all"),b.$tableClone&&b.$tableClone.removeClass("display-all"),b.$displayAllBtn.removeClass("btn-primary")),e.each(function(){var b=a(this);c.is(":checked")?("none"!==b.css("display")&&b.prop("colSpan",parseInt(b.prop("colSpan"))+1),b.show()):parseInt(b.prop("colSpan"))>1?b.prop("colSpan",parseInt(b.prop("colSpan"))-1):b.hide()})}).bind("updateCheck",function(){"none"!==d.css("display")?a(this).prop("checked",!0):a(this).prop("checked",!1)}).trigger("updateCheck")}})},e.prototype.setupStandardCells=function(){var b=this;b.$bodyRows.each(function(){var c=0;a(this).find("th, td").each(function(){for(var d=a(this),e="",f=d.prop("colSpan"),g=0,h=c;c+f>h;h++){e=e+" "+b.idPrefix+h;var i=b.$tableScrollWrapper.find("#"+b.idPrefix+h),j=i.attr("data-priority");j&&d.attr("data-priority",j),"none"===i.css("display")&&g++}f>1&&(d.addClass("spn-cell"),g!==f?d.show():d.hide()),d.prop("colSpan",Math.max(f-g,1)),e=e.substring(1),d.attr("data-columns",e),c+=f})})},e.prototype.updateSpanningCells=function(){var b=this;b.$table.find(".spn-cell").each(function(){for(var b=a(this),c=b.attr("data-columns").split(" "),d=c.length,e=0,f=0;d>f;f++)"none"===a("#"+c[f]).css("display")&&e++;e!==d?b.show():b.hide(),b.prop("colSpan",Math.max(d-e,1))})};var f=a.fn.responsiveTable;a.fn.responsiveTable=function(b){return this.each(function(){var c=a(this),d=c.data("responsiveTable"),f=a.extend({},e.DEFAULTS,c.data(),"object"==typeof b&&b);""!==f.pattern&&(d||c.data("responsiveTable",d=new e(this,f)),"string"==typeof b&&d[b]())})},a.fn.responsiveTable.Constructor=e,a.fn.responsiveTable.noConflict=function(){return a.fn.responsiveTable=f,this},a(document).on("ready.responsive-table.data-api",function(){a("[data-pattern]").each(function(){var b=a(this);b.responsiveTable(b.data())})}),a(document).on("click.dropdown.data-api",".dropdown-menu .checkbox-row",function(a){a.stopPropagation()}),a(document).ready(function(){a("html").removeClass("no-js").addClass("js"),a("html").addClass(b()?"mq":"no-mq"),a("html").addClass(c()?"touch":"no-touch")})}(jQuery); \ No newline at end of file diff --git a/plugins/select2/css/select2.css b/plugins/select2/css/select2.css new file mode 100644 index 0000000..447b2b8 --- /dev/null +++ b/plugins/select2/css/select2.css @@ -0,0 +1,484 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[aria-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[aria-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/plugins/select2/css/select2.min.css b/plugins/select2/css/select2.min.css new file mode 100644 index 0000000..76de04d --- /dev/null +++ b/plugins/select2/css/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/plugins/select2/js/i18n/ar.js b/plugins/select2/js/i18n/ar.js new file mode 100644 index 0000000..01a6882 --- /dev/null +++ b/plugins/select2/js/i18n/ar.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/az.js b/plugins/select2/js/i18n/az.js new file mode 100644 index 0000000..2accb97 --- /dev/null +++ b/plugins/select2/js/i18n/az.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/bg.js b/plugins/select2/js/i18n/bg.js new file mode 100644 index 0000000..35ae989 --- /dev/null +++ b/plugins/select2/js/i18n/bg.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ca.js b/plugins/select2/js/i18n/ca.js new file mode 100644 index 0000000..fdb5f3d --- /dev/null +++ b/plugins/select2/js/i18n/ca.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/cs.js b/plugins/select2/js/i18n/cs.js new file mode 100644 index 0000000..9651378 --- /dev/null +++ b/plugins/select2/js/i18n/cs.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/da.js b/plugins/select2/js/i18n/da.js new file mode 100644 index 0000000..501c51e --- /dev/null +++ b/plugins/select2/js/i18n/da.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/de.js b/plugins/select2/js/i18n/de.js new file mode 100644 index 0000000..9a6d553 --- /dev/null +++ b/plugins/select2/js/i18n/de.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/el.js b/plugins/select2/js/i18n/el.js new file mode 100644 index 0000000..4735d14 --- /dev/null +++ b/plugins/select2/js/i18n/el.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/en.js b/plugins/select2/js/i18n/en.js new file mode 100644 index 0000000..8e80ede --- /dev/null +++ b/plugins/select2/js/i18n/en.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/es.js b/plugins/select2/js/i18n/es.js new file mode 100644 index 0000000..0a09650 --- /dev/null +++ b/plugins/select2/js/i18n/es.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/et.js b/plugins/select2/js/i18n/et.js new file mode 100644 index 0000000..c70f4a5 --- /dev/null +++ b/plugins/select2/js/i18n/et.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/eu.js b/plugins/select2/js/i18n/eu.js new file mode 100644 index 0000000..9336053 --- /dev/null +++ b/plugins/select2/js/i18n/eu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/fa.js b/plugins/select2/js/i18n/fa.js new file mode 100644 index 0000000..5118cd2 --- /dev/null +++ b/plugins/select2/js/i18n/fa.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/fi.js b/plugins/select2/js/i18n/fi.js new file mode 100644 index 0000000..9e60f26 --- /dev/null +++ b/plugins/select2/js/i18n/fi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/fr.js b/plugins/select2/js/i18n/fr.js new file mode 100644 index 0000000..e4a6650 --- /dev/null +++ b/plugins/select2/js/i18n/fr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/gl.js b/plugins/select2/js/i18n/gl.js new file mode 100644 index 0000000..02f258f --- /dev/null +++ b/plugins/select2/js/i18n/gl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/he.js b/plugins/select2/js/i18n/he.js new file mode 100644 index 0000000..881f8d3 --- /dev/null +++ b/plugins/select2/js/i18n/he.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/hi.js b/plugins/select2/js/i18n/hi.js new file mode 100644 index 0000000..e829684 --- /dev/null +++ b/plugins/select2/js/i18n/hi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/hr.js b/plugins/select2/js/i18n/hr.js new file mode 100644 index 0000000..89f7b12 --- /dev/null +++ b/plugins/select2/js/i18n/hr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/hu.js b/plugins/select2/js/i18n/hu.js new file mode 100644 index 0000000..74c8a90 --- /dev/null +++ b/plugins/select2/js/i18n/hu.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/id.js b/plugins/select2/js/i18n/id.js new file mode 100644 index 0000000..9586782 --- /dev/null +++ b/plugins/select2/js/i18n/id.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/is.js b/plugins/select2/js/i18n/is.js new file mode 100644 index 0000000..ab97a14 --- /dev/null +++ b/plugins/select2/js/i18n/is.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/it.js b/plugins/select2/js/i18n/it.js new file mode 100644 index 0000000..7796b9f --- /dev/null +++ b/plugins/select2/js/i18n/it.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ja.js b/plugins/select2/js/i18n/ja.js new file mode 100644 index 0000000..9f4fff6 --- /dev/null +++ b/plugins/select2/js/i18n/ja.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/km.js b/plugins/select2/js/i18n/km.js new file mode 100644 index 0000000..8e94adc --- /dev/null +++ b/plugins/select2/js/i18n/km.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ko.js b/plugins/select2/js/i18n/ko.js new file mode 100644 index 0000000..4ed0321 --- /dev/null +++ b/plugins/select2/js/i18n/ko.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/lt.js b/plugins/select2/js/i18n/lt.js new file mode 100644 index 0000000..05f3a6e --- /dev/null +++ b/plugins/select2/js/i18n/lt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/lv.js b/plugins/select2/js/i18n/lv.js new file mode 100644 index 0000000..df8ee94 --- /dev/null +++ b/plugins/select2/js/i18n/lv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/mk.js b/plugins/select2/js/i18n/mk.js new file mode 100644 index 0000000..319ecca --- /dev/null +++ b/plugins/select2/js/i18n/mk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ms.js b/plugins/select2/js/i18n/ms.js new file mode 100644 index 0000000..4258f12 --- /dev/null +++ b/plugins/select2/js/i18n/ms.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/nb.js b/plugins/select2/js/i18n/nb.js new file mode 100644 index 0000000..6770087 --- /dev/null +++ b/plugins/select2/js/i18n/nb.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/nl.js b/plugins/select2/js/i18n/nl.js new file mode 100644 index 0000000..8bd5e3c --- /dev/null +++ b/plugins/select2/js/i18n/nl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/pl.js b/plugins/select2/js/i18n/pl.js new file mode 100644 index 0000000..54ba28e --- /dev/null +++ b/plugins/select2/js/i18n/pl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/pt-BR.js b/plugins/select2/js/i18n/pt-BR.js new file mode 100644 index 0000000..a6629c8 --- /dev/null +++ b/plugins/select2/js/i18n/pt-BR.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/pt.js b/plugins/select2/js/i18n/pt.js new file mode 100644 index 0000000..0cbda56 --- /dev/null +++ b/plugins/select2/js/i18n/pt.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ro.js b/plugins/select2/js/i18n/ro.js new file mode 100644 index 0000000..788a263 --- /dev/null +++ b/plugins/select2/js/i18n/ro.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/ru.js b/plugins/select2/js/i18n/ru.js new file mode 100644 index 0000000..9ecab80 --- /dev/null +++ b/plugins/select2/js/i18n/ru.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/sk.js b/plugins/select2/js/i18n/sk.js new file mode 100644 index 0000000..82f2941 --- /dev/null +++ b/plugins/select2/js/i18n/sk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/sr-Cyrl.js b/plugins/select2/js/i18n/sr-Cyrl.js new file mode 100644 index 0000000..e945394 --- /dev/null +++ b/plugins/select2/js/i18n/sr-Cyrl.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/sr.js b/plugins/select2/js/i18n/sr.js new file mode 100644 index 0000000..ac0cc72 --- /dev/null +++ b/plugins/select2/js/i18n/sr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/sv.js b/plugins/select2/js/i18n/sv.js new file mode 100644 index 0000000..bedac08 --- /dev/null +++ b/plugins/select2/js/i18n/sv.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/th.js b/plugins/select2/js/i18n/th.js new file mode 100644 index 0000000..097a86c --- /dev/null +++ b/plugins/select2/js/i18n/th.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/tr.js b/plugins/select2/js/i18n/tr.js new file mode 100644 index 0000000..25d27a8 --- /dev/null +++ b/plugins/select2/js/i18n/tr.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/uk.js b/plugins/select2/js/i18n/uk.js new file mode 100644 index 0000000..eb3ca89 --- /dev/null +++ b/plugins/select2/js/i18n/uk.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/vi.js b/plugins/select2/js/i18n/vi.js new file mode 100644 index 0000000..8975b8a --- /dev/null +++ b/plugins/select2/js/i18n/vi.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/zh-CN.js b/plugins/select2/js/i18n/zh-CN.js new file mode 100644 index 0000000..2ed9597 --- /dev/null +++ b/plugins/select2/js/i18n/zh-CN.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/i18n/zh-TW.js b/plugins/select2/js/i18n/zh-TW.js new file mode 100644 index 0000000..ea0812e --- /dev/null +++ b/plugins/select2/js/i18n/zh-TW.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/plugins/select2/js/select2.full.js b/plugins/select2/js/select2.full.js new file mode 100644 index 0000000..e750834 --- /dev/null +++ b/plugins/select2/js/select2.full.js @@ -0,0 +1,6436 @@ +/*! + * Select2 4.0.3 + * https://select2.github.io + * + * Released under the MIT license + * https://github.com/select2/select2/blob/master/LICENSE.md + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS + factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function (jQuery) { + // This is needed so we can catch the AMD loader configuration and use it + // The inner file should be wrapped (by `banner.start.js`) in a function that + // returns the AMD loader references. + var S2 = +(function () { + // Restore the Select2 AMD loader so it can be used + // Needed mostly in the language files, where the loader is not inserted + if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { + var S2 = jQuery.fn.select2.amd; + } +var S2;(function () { if (!S2 || !S2.requirejs) { +if (!S2) { S2 = {}; } else { require = S2; } +/** + * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice, + jsSuffixRegExp = /\.js$/; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, lastIndex, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + name = name.split('/'); + lastIndex = name.length - 1; + + // Node .js allowance: + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + //Lop off the last part of baseParts, so that . matches the + //"directory" and not name of the baseName's module. For instance, + //baseName of "one/two/three", maps to "one/two/three.js", but we + //want the directory, "one/two" for this normalization. + name = baseParts.slice(0, baseParts.length - 1).concat(name); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + var args = aps.call(arguments, 0); + + //If first arg is not require('string'), and there is only + //one arg, it is the array form without a callback. Insert + //a null so that the following concat is correct. + if (typeof args[0] !== 'string' && args.length === 1) { + args.push(null); + } + return req.apply(undef, args.concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + callbackType = typeof callback, + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (callbackType === 'undefined' || callbackType === 'function') { + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback ? callback.apply(defined[name], args) : undefined; + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (config.deps) { + req(config.deps, config.callback); + } + if (!callback) { + return; + } + + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + return req(cfg); + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + if (typeof name !== 'string') { + throw new Error('See almond README: incorrect module build, no module name'); + } + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +S2.requirejs = requirejs;S2.require = require;S2.define = define; +} +}()); +S2.define("almond", function(){}); + +/* global jQuery:false, $:false */ +S2.define('jquery',[],function () { + var _$ = jQuery || $; + + if (_$ == null && console && console.error) { + console.error( + 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + + 'found. Make sure that you are including jQuery before Select2 on your ' + + 'web page.' + ); + } + + return _$; +}); + +S2.define('select2/utils',[ + 'jquery' +], function ($) { + var Utils = {}; + + Utils.Extend = function (ChildClass, SuperClass) { + var __hasProp = {}.hasOwnProperty; + + function BaseConstructor () { + this.constructor = ChildClass; + } + + for (var key in SuperClass) { + if (__hasProp.call(SuperClass, key)) { + ChildClass[key] = SuperClass[key]; + } + } + + BaseConstructor.prototype = SuperClass.prototype; + ChildClass.prototype = new BaseConstructor(); + ChildClass.__super__ = SuperClass.prototype; + + return ChildClass; + }; + + function getMethods (theClass) { + var proto = theClass.prototype; + + var methods = []; + + for (var methodName in proto) { + var m = proto[methodName]; + + if (typeof m !== 'function') { + continue; + } + + if (methodName === 'constructor') { + continue; + } + + methods.push(methodName); + } + + return methods; + } + + Utils.Decorate = function (SuperClass, DecoratorClass) { + var decoratedMethods = getMethods(DecoratorClass); + var superMethods = getMethods(SuperClass); + + function DecoratedClass () { + var unshift = Array.prototype.unshift; + + var argCount = DecoratorClass.prototype.constructor.length; + + var calledConstructor = SuperClass.prototype.constructor; + + if (argCount > 0) { + unshift.call(arguments, SuperClass.prototype.constructor); + + calledConstructor = DecoratorClass.prototype.constructor; + } + + calledConstructor.apply(this, arguments); + } + + DecoratorClass.displayName = SuperClass.displayName; + + function ctr () { + this.constructor = DecoratedClass; + } + + DecoratedClass.prototype = new ctr(); + + for (var m = 0; m < superMethods.length; m++) { + var superMethod = superMethods[m]; + + DecoratedClass.prototype[superMethod] = + SuperClass.prototype[superMethod]; + } + + var calledMethod = function (methodName) { + // Stub out the original method if it's not decorating an actual method + var originalMethod = function () {}; + + if (methodName in DecoratedClass.prototype) { + originalMethod = DecoratedClass.prototype[methodName]; + } + + var decoratedMethod = DecoratorClass.prototype[methodName]; + + return function () { + var unshift = Array.prototype.unshift; + + unshift.call(arguments, originalMethod); + + return decoratedMethod.apply(this, arguments); + }; + }; + + for (var d = 0; d < decoratedMethods.length; d++) { + var decoratedMethod = decoratedMethods[d]; + + DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); + } + + return DecoratedClass; + }; + + var Observable = function () { + this.listeners = {}; + }; + + Observable.prototype.on = function (event, callback) { + this.listeners = this.listeners || {}; + + if (event in this.listeners) { + this.listeners[event].push(callback); + } else { + this.listeners[event] = [callback]; + } + }; + + Observable.prototype.trigger = function (event) { + var slice = Array.prototype.slice; + var params = slice.call(arguments, 1); + + this.listeners = this.listeners || {}; + + // Params should always come in as an array + if (params == null) { + params = []; + } + + // If there are no arguments to the event, use a temporary object + if (params.length === 0) { + params.push({}); + } + + // Set the `_type` of the first object to the event + params[0]._type = event; + + if (event in this.listeners) { + this.invoke(this.listeners[event], slice.call(arguments, 1)); + } + + if ('*' in this.listeners) { + this.invoke(this.listeners['*'], arguments); + } + }; + + Observable.prototype.invoke = function (listeners, params) { + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].apply(this, params); + } + }; + + Utils.Observable = Observable; + + Utils.generateChars = function (length) { + var chars = ''; + + for (var i = 0; i < length; i++) { + var randomChar = Math.floor(Math.random() * 36); + chars += randomChar.toString(36); + } + + return chars; + }; + + Utils.bind = function (func, context) { + return function () { + func.apply(context, arguments); + }; + }; + + Utils._convertData = function (data) { + for (var originalKey in data) { + var keys = originalKey.split('-'); + + var dataLevel = data; + + if (keys.length === 1) { + continue; + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k]; + + // Lowercase the first letter + // By default, dash-separated becomes camelCase + key = key.substring(0, 1).toLowerCase() + key.substring(1); + + if (!(key in dataLevel)) { + dataLevel[key] = {}; + } + + if (k == keys.length - 1) { + dataLevel[key] = data[originalKey]; + } + + dataLevel = dataLevel[key]; + } + + delete data[originalKey]; + } + + return data; + }; + + Utils.hasScroll = function (index, el) { + // Adapted from the function created by @ShadowScripter + // and adapted by @BillBarry on the Stack Exchange Code Review website. + // The original code can be found at + // http://codereview.stackexchange.com/q/13338 + // and was designed to be used with the Sizzle selector engine. + + var $el = $(el); + var overflowX = el.style.overflowX; + var overflowY = el.style.overflowY; + + //Check both x and y declarations + if (overflowX === overflowY && + (overflowY === 'hidden' || overflowY === 'visible')) { + return false; + } + + if (overflowX === 'scroll' || overflowY === 'scroll') { + return true; + } + + return ($el.innerHeight() < el.scrollHeight || + $el.innerWidth() < el.scrollWidth); + }; + + Utils.escapeMarkup = function (markup) { + var replaceMap = { + '\\': '&#92;', + '&': '&amp;', + '<': '&lt;', + '>': '&gt;', + '"': '&quot;', + '\'': '&#39;', + '/': '&#47;' + }; + + // Do not try to escape the markup if it's not a string + if (typeof markup !== 'string') { + return markup; + } + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replaceMap[match]; + }); + }; + + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + + return Utils; +}); + +S2.define('select2/results',[ + 'jquery', + './utils' +], function ($, Utils) { + function Results ($element, options, dataAdapter) { + this.$element = $element; + this.data = dataAdapter; + this.options = options; + + Results.__super__.constructor.call(this); + } + + Utils.Extend(Results, Utils.Observable); + + Results.prototype.render = function () { + var $results = $( + '<ul class="select2-results__options" role="tree"></ul>' + ); + + if (this.options.get('multiple')) { + $results.attr('aria-multiselectable', 'true'); + } + + this.$results = $results; + + return $results; + }; + + Results.prototype.clear = function () { + this.$results.empty(); + }; + + Results.prototype.displayMessage = function (params) { + var escapeMarkup = this.options.get('escapeMarkup'); + + this.clear(); + this.hideLoading(); + + var $message = $( + '<li role="treeitem" aria-live="assertive"' + + ' class="select2-results__option"></li>' + ); + + var message = this.options.get('translations').get(params.message); + + $message.append( + escapeMarkup( + message(params.args) + ) + ); + + $message[0].className += ' select2-results__message'; + + this.$results.append($message); + }; + + Results.prototype.hideMessages = function () { + this.$results.find('.select2-results__message').remove(); + }; + + Results.prototype.append = function (data) { + this.hideLoading(); + + var $options = []; + + if (data.results == null || data.results.length === 0) { + if (this.$results.children().length === 0) { + this.trigger('results:message', { + message: 'noResults' + }); + } + + return; + } + + data.results = this.sort(data.results); + + for (var d = 0; d < data.results.length; d++) { + var item = data.results[d]; + + var $option = this.option(item); + + $options.push($option); + } + + this.$results.append($options); + }; + + Results.prototype.position = function ($results, $dropdown) { + var $resultsContainer = $dropdown.find('.select2-results'); + $resultsContainer.append($results); + }; + + Results.prototype.sort = function (data) { + var sorter = this.options.get('sorter'); + + return sorter(data); + }; + + Results.prototype.highlightFirstItem = function () { + var $options = this.$results + .find('.select2-results__option[aria-selected]'); + + var $selected = $options.filter('[aria-selected=true]'); + + // Check if there are any selected options + if ($selected.length > 0) { + // If there are selected options, highlight the first + $selected.first().trigger('mouseenter'); + } else { + // If there are no selected options, highlight the first option + // in the dropdown + $options.first().trigger('mouseenter'); + } + + this.ensureHighlightVisible(); + }; + + Results.prototype.setClasses = function () { + var self = this; + + this.data.current(function (selected) { + var selectedIds = $.map(selected, function (s) { + return s.id.toString(); + }); + + var $options = self.$results + .find('.select2-results__option[aria-selected]'); + + $options.each(function () { + var $option = $(this); + + var item = $.data(this, 'data'); + + // id needs to be converted to a string when comparing + var id = '' + item.id; + + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { + $option.attr('aria-selected', 'true'); + } else { + $option.attr('aria-selected', 'false'); + } + }); + + }); + }; + + Results.prototype.showLoading = function (params) { + this.hideLoading(); + + var loadingMore = this.options.get('translations').get('searching'); + + var loading = { + disabled: true, + loading: true, + text: loadingMore(params) + }; + var $loading = this.option(loading); + $loading.className += ' loading-results'; + + this.$results.prepend($loading); + }; + + Results.prototype.hideLoading = function () { + this.$results.find('.loading-results').remove(); + }; + + Results.prototype.option = function (data) { + var option = document.createElement('li'); + option.className = 'select2-results__option'; + + var attrs = { + 'role': 'treeitem', + 'aria-selected': 'false' + }; + + if (data.disabled) { + delete attrs['aria-selected']; + attrs['aria-disabled'] = 'true'; + } + + if (data.id == null) { + delete attrs['aria-selected']; + } + + if (data._resultId != null) { + option.id = data._resultId; + } + + if (data.title) { + option.title = data.title; + } + + if (data.children) { + attrs.role = 'group'; + attrs['aria-label'] = data.text; + delete attrs['aria-selected']; + } + + for (var attr in attrs) { + var val = attrs[attr]; + + option.setAttribute(attr, val); + } + + if (data.children) { + var $option = $(option); + + var label = document.createElement('strong'); + label.className = 'select2-results__group'; + + var $label = $(label); + this.template(data, label); + + var $children = []; + + for (var c = 0; c < data.children.length; c++) { + var child = data.children[c]; + + var $child = this.option(child); + + $children.push($child); + } + + var $childrenContainer = $('<ul></ul>', { + 'class': 'select2-results__options select2-results__options--nested' + }); + + $childrenContainer.append($children); + + $option.append(label); + $option.append($childrenContainer); + } else { + this.template(data, option); + } + + $.data(option, 'data', data); + + return option; + }; + + Results.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-results'; + + this.$results.attr('id', id); + + container.on('results:all', function (params) { + self.clear(); + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + self.highlightFirstItem(); + } + }); + + container.on('results:append', function (params) { + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + } + }); + + container.on('query', function (params) { + self.hideMessages(); + self.showLoading(params); + }); + + container.on('select', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('unselect', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expended="true" + self.$results.attr('aria-expanded', 'true'); + self.$results.attr('aria-hidden', 'false'); + + self.setClasses(); + self.ensureHighlightVisible(); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expended="false" + self.$results.attr('aria-expanded', 'false'); + self.$results.attr('aria-hidden', 'true'); + self.$results.removeAttr('aria-activedescendant'); + }); + + container.on('results:toggle', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + $highlighted.trigger('mouseup'); + }); + + container.on('results:select', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var data = $highlighted.data('data'); + + if ($highlighted.attr('aria-selected') == 'true') { + self.trigger('close', {}); + } else { + self.trigger('select', { + data: data + }); + } + }); + + container.on('results:previous', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + // If we are already at te top, don't move further + if (currentIndex === 0) { + return; + } + + var nextIndex = currentIndex - 1; + + // If none are highlighted, highlight the first + if ($highlighted.length === 0) { + nextIndex = 0; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top; + var nextTop = $next.offset().top; + var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextTop - currentOffset < 0) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:next', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + var nextIndex = currentIndex + 1; + + // If we are at the last option, stay there + if (nextIndex >= $options.length) { + return; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var nextBottom = $next.offset().top + $next.outerHeight(false); + var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextBottom > currentOffset) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:focus', function (params) { + params.element.addClass('select2-results__option--highlighted'); + }); + + container.on('results:message', function (params) { + self.displayMessage(params); + }); + + if ($.fn.mousewheel) { + this.$results.on('mousewheel', function (e) { + var top = self.$results.scrollTop(); + + var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; + + var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; + var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); + + if (isAtTop) { + self.$results.scrollTop(0); + + e.preventDefault(); + e.stopPropagation(); + } else if (isAtBottom) { + self.$results.scrollTop( + self.$results.get(0).scrollHeight - self.$results.height() + ); + + e.preventDefault(); + e.stopPropagation(); + } + }); + } + + this.$results.on('mouseup', '.select2-results__option[aria-selected]', + function (evt) { + var $this = $(this); + + var data = $this.data('data'); + + if ($this.attr('aria-selected') === 'true') { + if (self.options.get('multiple')) { + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } else { + self.trigger('close', {}); + } + + return; + } + + self.trigger('select', { + originalEvent: evt, + data: data + }); + }); + + this.$results.on('mouseenter', '.select2-results__option[aria-selected]', + function (evt) { + var data = $(this).data('data'); + + self.getHighlightedResults() + .removeClass('select2-results__option--highlighted'); + + self.trigger('results:focus', { + data: data, + element: $(this) + }); + }); + }; + + Results.prototype.getHighlightedResults = function () { + var $highlighted = this.$results + .find('.select2-results__option--highlighted'); + + return $highlighted; + }; + + Results.prototype.destroy = function () { + this.$results.remove(); + }; + + Results.prototype.ensureHighlightVisible = function () { + var $highlighted = this.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var $options = this.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + var currentOffset = this.$results.offset().top; + var nextTop = $highlighted.offset().top; + var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); + + var offsetDelta = nextTop - currentOffset; + nextOffset -= $highlighted.outerHeight(false) * 2; + + if (currentIndex <= 2) { + this.$results.scrollTop(0); + } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { + this.$results.scrollTop(nextOffset); + } + }; + + Results.prototype.template = function (result, container) { + var template = this.options.get('templateResult'); + var escapeMarkup = this.options.get('escapeMarkup'); + + var content = template(result, container); + + if (content == null) { + container.style.display = 'none'; + } else if (typeof content === 'string') { + container.innerHTML = escapeMarkup(content); + } else { + $(container).append(content); + } + }; + + return Results; +}); + +S2.define('select2/keys',[ + +], function () { + var KEYS = { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46 + }; + + return KEYS; +}); + +S2.define('select2/selection/base',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function BaseSelection ($element, options) { + this.$element = $element; + this.options = options; + + BaseSelection.__super__.constructor.call(this); + } + + Utils.Extend(BaseSelection, Utils.Observable); + + BaseSelection.prototype.render = function () { + var $selection = $( + '<span class="select2-selection" role="combobox" ' + + ' aria-haspopup="true" aria-expanded="false">' + + '</span>' + ); + + this._tabindex = 0; + + if (this.$element.data('old-tabindex') != null) { + this._tabindex = this.$element.data('old-tabindex'); + } else if (this.$element.attr('tabindex') != null) { + this._tabindex = this.$element.attr('tabindex'); + } + + $selection.attr('title', this.$element.attr('title')); + $selection.attr('tabindex', this._tabindex); + + this.$selection = $selection; + + return $selection; + }; + + BaseSelection.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-container'; + var resultsId = container.id + '-results'; + + this.container = container; + + this.$selection.on('focus', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('blur', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', function (evt) { + self.trigger('keypress', evt); + + if (evt.which === KEYS.SPACE) { + evt.preventDefault(); + } + }); + + container.on('results:focus', function (params) { + self.$selection.attr('aria-activedescendant', params.data._resultId); + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expanded="true" + self.$selection.attr('aria-expanded', 'true'); + self.$selection.attr('aria-owns', resultsId); + + self._attachCloseHandler(container); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expanded="false" + self.$selection.attr('aria-expanded', 'false'); + self.$selection.removeAttr('aria-activedescendant'); + self.$selection.removeAttr('aria-owns'); + + self.$selection.focus(); + + self._detachCloseHandler(container); + }); + + container.on('enable', function () { + self.$selection.attr('tabindex', self._tabindex); + }); + + container.on('disable', function () { + self.$selection.attr('tabindex', '-1'); + }); + }; + + BaseSelection.prototype._handleBlur = function (evt) { + var self = this; + + // This needs to be delayed as the active element is the body when the tab + // key is pressed, possibly along with others. + window.setTimeout(function () { + // Don't trigger `blur` if the focus is still in the selection + if ( + (document.activeElement == self.$selection[0]) || + ($.contains(self.$selection[0], document.activeElement)) + ) { + return; + } + + self.trigger('blur', evt); + }, 1); + }; + + BaseSelection.prototype._attachCloseHandler = function (container) { + var self = this; + + $(document.body).on('mousedown.select2.' + container.id, function (e) { + var $target = $(e.target); + + var $select = $target.closest('.select2'); + + var $all = $('.select2.select2-container--open'); + + $all.each(function () { + var $this = $(this); + + if (this == $select[0]) { + return; + } + + var $element = $this.data('element'); + + $element.select2('close'); + }); + }); + }; + + BaseSelection.prototype._detachCloseHandler = function (container) { + $(document.body).off('mousedown.select2.' + container.id); + }; + + BaseSelection.prototype.position = function ($selection, $container) { + var $selectionContainer = $container.find('.selection'); + $selectionContainer.append($selection); + }; + + BaseSelection.prototype.destroy = function () { + this._detachCloseHandler(this.container); + }; + + BaseSelection.prototype.update = function (data) { + throw new Error('The `update` method must be defined in child classes.'); + }; + + return BaseSelection; +}); + +S2.define('select2/selection/single',[ + 'jquery', + './base', + '../utils', + '../keys' +], function ($, BaseSelection, Utils, KEYS) { + function SingleSelection () { + SingleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(SingleSelection, BaseSelection); + + SingleSelection.prototype.render = function () { + var $selection = SingleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--single'); + + $selection.html( + '<span class="select2-selection__rendered"></span>' + + '<span class="select2-selection__arrow" role="presentation">' + + '<b role="presentation"></b>' + + '</span>' + ); + + return $selection; + }; + + SingleSelection.prototype.bind = function (container, $container) { + var self = this; + + SingleSelection.__super__.bind.apply(this, arguments); + + var id = container.id + '-container'; + + this.$selection.find('.select2-selection__rendered').attr('id', id); + this.$selection.attr('aria-labelledby', id); + + this.$selection.on('mousedown', function (evt) { + // Only respond to left clicks + if (evt.which !== 1) { + return; + } + + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on('focus', function (evt) { + // User focuses on the container + }); + + this.$selection.on('blur', function (evt) { + // User exits the container + }); + + container.on('focus', function (evt) { + if (!container.isOpen()) { + self.$selection.focus(); + } + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + }; + + SingleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + SingleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + SingleSelection.prototype.selectionContainer = function () { + return $('<span></span>'); + }; + + SingleSelection.prototype.update = function (data) { + if (data.length === 0) { + this.clear(); + return; + } + + var selection = data[0]; + + var $rendered = this.$selection.find('.select2-selection__rendered'); + var formatted = this.display(selection, $rendered); + + $rendered.empty().append(formatted); + $rendered.prop('title', selection.title || selection.text); + }; + + return SingleSelection; +}); + +S2.define('select2/selection/multiple',[ + 'jquery', + './base', + '../utils' +], function ($, BaseSelection, Utils) { + function MultipleSelection ($element, options) { + MultipleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(MultipleSelection, BaseSelection); + + MultipleSelection.prototype.render = function () { + var $selection = MultipleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--multiple'); + + $selection.html( + '<ul class="select2-selection__rendered"></ul>' + ); + + return $selection; + }; + + MultipleSelection.prototype.bind = function (container, $container) { + var self = this; + + MultipleSelection.__super__.bind.apply(this, arguments); + + this.$selection.on('click', function (evt) { + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on( + 'click', + '.select2-selection__choice__remove', + function (evt) { + // Ignore the event if it is disabled + if (self.options.get('disabled')) { + return; + } + + var $remove = $(this); + var $selection = $remove.parent(); + + var data = $selection.data('data'); + + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } + ); + }; + + MultipleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + MultipleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + MultipleSelection.prototype.selectionContainer = function () { + var $container = $( + '<li class="select2-selection__choice">' + + '<span class="select2-selection__choice__remove" role="presentation">' + + '&times;' + + '</span>' + + '</li>' + ); + + return $container; + }; + + MultipleSelection.prototype.update = function (data) { + this.clear(); + + if (data.length === 0) { + return; + } + + var $selections = []; + + for (var d = 0; d < data.length; d++) { + var selection = data[d]; + + var $selection = this.selectionContainer(); + var formatted = this.display(selection, $selection); + + $selection.append(formatted); + $selection.prop('title', selection.title || selection.text); + + $selection.data('data', selection); + + $selections.push($selection); + } + + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); + }; + + return MultipleSelection; +}); + +S2.define('select2/selection/placeholder',[ + '../utils' +], function (Utils) { + function Placeholder (decorated, $element, options) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options); + } + + Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { + var $placeholder = this.selectionContainer(); + + $placeholder.html(this.display(placeholder)); + $placeholder.addClass('select2-selection__placeholder') + .removeClass('select2-selection__choice'); + + return $placeholder; + }; + + Placeholder.prototype.update = function (decorated, data) { + var singlePlaceholder = ( + data.length == 1 && data[0].id != this.placeholder.id + ); + var multipleSelections = data.length > 1; + + if (multipleSelections || singlePlaceholder) { + return decorated.call(this, data); + } + + this.clear(); + + var $placeholder = this.createPlaceholder(this.placeholder); + + this.$selection.find('.select2-selection__rendered').append($placeholder); + }; + + return Placeholder; +}); + +S2.define('select2/selection/allowClear',[ + 'jquery', + '../keys' +], function ($, KEYS) { + function AllowClear () { } + + AllowClear.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { + console.error( + 'Select2: The `allowClear` option should be used in combination ' + + 'with the `placeholder` option.' + ); + } + } + + this.$selection.on('mousedown', '.select2-selection__clear', + function (evt) { + self._handleClear(evt); + }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle', {}); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } + }; + + AllowClear.prototype.update = function (decorated, data) { + decorated.call(this, data); + + if (this.$selection.find('.select2-selection__placeholder').length > 0 || + data.length === 0) { + return; + } + + var $remove = $( + '<span class="select2-selection__clear">' + + '&times;' + + '</span>' + ); + $remove.data('data', data); + + this.$selection.find('.select2-selection__rendered').prepend($remove); + }; + + return AllowClear; +}); + +S2.define('select2/selection/search',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function Search (decorated, $element, options) { + decorated.call(this, $element, options); + } + + Search.prototype.render = function (decorated) { + var $search = $( + '<li class="select2-search select2-search--inline">' + + '<input class="select2-search__field" type="search" tabindex="-1"' + + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + + ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + + '</li>' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.id); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = container.id + '-result-'; + + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id && this.container != null) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var checkText = option.text === params.term; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '<span class="select2-dropdown">' + + '<span class="select2-results"></span>' + + '</span>' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '<span class="select2-search select2-search--dropdown">' + + '<input class="select2-search__field" type="search" tabindex="-1"' + + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + + ' spellcheck="false" role="textbox" />' + + '</span>' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '<li ' + + 'class="select2-results__option select2-results__option--load-more"' + + 'role="treeitem" aria-disabled="true"></li>' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $('<span></span>'); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('keypress', function (evt) { + var key = evt.which; + + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + } else { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '<span class="select2 select2-container">' + + '<span class="selection"></span>' + + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + + '</span>' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('select2/compat/utils',[ + 'jquery' +], function ($) { + function syncCssClasses ($dest, $src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim($dest.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Save all Select2 classes + if (this.indexOf('select2-') === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim($src.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Only adapt non-Select2 classes + if (this.indexOf('select2-') !== 0) { + adapted = adapter(this); + + if (adapted != null) { + replacements.push(adapted); + } + } + }); + } + + $dest.attr('class', replacements.join(' ')); + } + + return { + syncCssClasses: syncCssClasses + }; +}); + +S2.define('select2/compat/containerCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _containerAdapter (clazz) { + return null; + } + + function ContainerCSS () { } + + ContainerCSS.prototype.render = function (decorated) { + var $container = decorated.call(this); + + var containerCssClass = this.options.get('containerCssClass') || ''; + + if ($.isFunction(containerCssClass)) { + containerCssClass = containerCssClass(this.$element); + } + + var containerCssAdapter = this.options.get('adaptContainerCssClass'); + containerCssAdapter = containerCssAdapter || _containerAdapter; + + if (containerCssClass.indexOf(':all:') !== -1) { + containerCssClass = containerCssClass.replace(':all:', ''); + + var _cssAdapter = containerCssAdapter; + + containerCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var containerCss = this.options.get('containerCss') || {}; + + if ($.isFunction(containerCss)) { + containerCss = containerCss(this.$element); + } + + CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); + + $container.css(containerCss); + $container.addClass(containerCssClass); + + return $container; + }; + + return ContainerCSS; +}); + +S2.define('select2/compat/dropdownCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _dropdownAdapter (clazz) { + return null; + } + + function DropdownCSS () { } + + DropdownCSS.prototype.render = function (decorated) { + var $dropdown = decorated.call(this); + + var dropdownCssClass = this.options.get('dropdownCssClass') || ''; + + if ($.isFunction(dropdownCssClass)) { + dropdownCssClass = dropdownCssClass(this.$element); + } + + var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); + dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; + + if (dropdownCssClass.indexOf(':all:') !== -1) { + dropdownCssClass = dropdownCssClass.replace(':all:', ''); + + var _cssAdapter = dropdownCssAdapter; + + dropdownCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var dropdownCss = this.options.get('dropdownCss') || {}; + + if ($.isFunction(dropdownCss)) { + dropdownCss = dropdownCss(this.$element); + } + + CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); + + $dropdown.css(dropdownCss); + $dropdown.addClass(dropdownCssClass); + + return $dropdown; + }; + + return DropdownCSS; +}); + +S2.define('select2/compat/initSelection',[ + 'jquery' +], function ($) { + function InitSelection (decorated, $element, options) { + if (options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `initSelection` option has been deprecated in favor' + + ' of a custom data adapter that overrides the `current` method. ' + + 'This method is now called multiple times instead of a single ' + + 'time when the instance is initialized. Support will be removed ' + + 'for the `initSelection` option in future versions of Select2' + ); + } + + this.initSelection = options.get('initSelection'); + this._isInitialized = false; + + decorated.call(this, $element, options); + } + + InitSelection.prototype.current = function (decorated, callback) { + var self = this; + + if (this._isInitialized) { + decorated.call(this, callback); + + return; + } + + this.initSelection.call(null, this.$element, function (data) { + self._isInitialized = true; + + if (!$.isArray(data)) { + data = [data]; + } + + callback(data); + }); + }; + + return InitSelection; +}); + +S2.define('select2/compat/inputData',[ + 'jquery' +], function ($) { + function InputData (decorated, $element, options) { + this._currentData = []; + this._valueSeparator = options.get('valueSeparator') || ','; + + if ($element.prop('type') === 'hidden') { + if (options.get('debug') && console && console.warn) { + console.warn( + 'Select2: Using a hidden input with Select2 is no longer ' + + 'supported and may stop working in the future. It is recommended ' + + 'to use a `<select>` element instead.' + ); + } + } + + decorated.call(this, $element, options); + } + + InputData.prototype.current = function (_, callback) { + function getSelected (data, selectedIds) { + var selected = []; + + if (data.selected || $.inArray(data.id, selectedIds) !== -1) { + data.selected = true; + selected.push(data); + } else { + data.selected = false; + } + + if (data.children) { + selected.push.apply(selected, getSelected(data.children, selectedIds)); + } + + return selected; + } + + var selected = []; + + for (var d = 0; d < this._currentData.length; d++) { + var data = this._currentData[d]; + + selected.push.apply( + selected, + getSelected( + data, + this.$element.val().split( + this._valueSeparator + ) + ) + ); + } + + callback(selected); + }; + + InputData.prototype.select = function (_, data) { + if (!this.options.get('multiple')) { + this.current(function (allData) { + $.map(allData, function (data) { + data.selected = false; + }); + }); + + this.$element.val(data.id); + this.$element.trigger('change'); + } else { + var value = this.$element.val(); + value += this._valueSeparator + data.id; + + this.$element.val(value); + this.$element.trigger('change'); + } + }; + + InputData.prototype.unselect = function (_, data) { + var self = this; + + data.selected = false; + + this.current(function (allData) { + var values = []; + + for (var d = 0; d < allData.length; d++) { + var item = allData[d]; + + if (data.id == item.id) { + continue; + } + + values.push(item.id); + } + + self.$element.val(values.join(self._valueSeparator)); + self.$element.trigger('change'); + }); + }; + + InputData.prototype.query = function (_, params, callback) { + var results = []; + + for (var d = 0; d < this._currentData.length; d++) { + var data = this._currentData[d]; + + var matches = this.matches(params, data); + + if (matches !== null) { + results.push(matches); + } + } + + callback({ + results: results + }); + }; + + InputData.prototype.addOptions = function (_, $options) { + var options = $.map($options, function ($option) { + return $.data($option[0], 'data'); + }); + + this._currentData.push.apply(this._currentData, options); + }; + + return InputData; +}); + +S2.define('select2/compat/matcher',[ + 'jquery' +], function ($) { + function oldMatcher (matcher) { + function wrappedMatcher (params, data) { + var match = $.extend(true, {}, data); + + if (params.term == null || $.trim(params.term) === '') { + return match; + } + + if (data.children) { + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + // Check if the child object matches + // The old matcher returned a boolean true or false + var doesMatch = matcher(params.term, child.text, child); + + // If the child didn't match, pop it off + if (!doesMatch) { + match.children.splice(c, 1); + } + } + + if (match.children.length > 0) { + return match; + } + } + + if (matcher(params.term, data.text, data)) { + return match; + } + + return null; + } + + return wrappedMatcher; + } + + return oldMatcher; +}); + +S2.define('select2/compat/query',[ + +], function () { + function Query (decorated, $element, options) { + if (options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `query` option has been deprecated in favor of a ' + + 'custom data adapter that overrides the `query` method. Support ' + + 'will be removed for the `query` option in future versions of ' + + 'Select2.' + ); + } + + decorated.call(this, $element, options); + } + + Query.prototype.query = function (_, params, callback) { + params.callback = callback; + + var query = this.options.get('query'); + + query.call(null, params); + }; + + return Query; +}); + +S2.define('select2/dropdown/attachContainer',[ + +], function () { + function AttachContainer (decorated, $element, options) { + decorated.call(this, $element, options); + } + + AttachContainer.prototype.position = + function (decorated, $dropdown, $container) { + var $dropdownContainer = $container.find('.dropdown-wrapper'); + $dropdownContainer.append($dropdown); + + $dropdown.addClass('select2-dropdown--below'); + $container.addClass('select2-container--below'); + }; + + return AttachContainer; +}); + +S2.define('select2/dropdown/stopPropagation',[ + +], function () { + function StopPropagation () { } + + StopPropagation.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + var stoppedEvents = [ + 'blur', + 'change', + 'click', + 'dblclick', + 'focus', + 'focusin', + 'focusout', + 'input', + 'keydown', + 'keyup', + 'keypress', + 'mousedown', + 'mouseenter', + 'mouseleave', + 'mousemove', + 'mouseover', + 'mouseup', + 'search', + 'touchend', + 'touchstart' + ]; + + this.$dropdown.on(stoppedEvents.join(' '), function (evt) { + evt.stopPropagation(); + }); + }; + + return StopPropagation; +}); + +S2.define('select2/selection/stopPropagation',[ + +], function () { + function StopPropagation () { } + + StopPropagation.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + var stoppedEvents = [ + 'blur', + 'change', + 'click', + 'dblclick', + 'focus', + 'focusin', + 'focusout', + 'input', + 'keydown', + 'keyup', + 'keypress', + 'mousedown', + 'mouseenter', + 'mouseleave', + 'mousemove', + 'mouseover', + 'mouseup', + 'search', + 'touchend', + 'touchstart' + ]; + + this.$selection.on(stoppedEvents.join(' '), function (evt) { + evt.stopPropagation(); + }); + }; + + return StopPropagation; +}); + +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ + +(function (factory) { + if ( typeof S2.define === 'function' && S2.define.amd ) { + // AMD. Register as an anonymous module. + S2.define('jquery-mousewheel',['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS style for Browserify + module.exports = factory; + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], + slice = Array.prototype.slice, + nullLowestDeltaTimeout, lowestDelta; + + if ( $.event.fixHooks ) { + for ( var i = toFix.length; i; ) { + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; + } + } + + var special = $.event.special.mousewheel = { + version: '3.1.12', + + setup: function() { + if ( this.addEventListener ) { + for ( var i = toBind.length; i; ) { + this.addEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + // Store the line height and page height for this particular element + $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); + $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i = toBind.length; i; ) { + this.removeEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + // Clean up the data we added to the element + $.removeData(this, 'mousewheel-line-height'); + $.removeData(this, 'mousewheel-page-height'); + }, + + getLineHeight: function(elem) { + var $elem = $(elem), + $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); + if (!$parent.length) { + $parent = $('body'); + } + return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; + }, + + getPageHeight: function(elem) { + return $(elem).height(); + }, + + settings: { + adjustOldDeltas: true, // see shouldAdjustOldDeltas() below + normalizeOffset: true // calls getBoundingClientRect for each event + } + }; + + $.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); + }, + + unmousewheel: function(fn) { + return this.unbind('mousewheel', fn); + } + }); + + + function handler(event) { + var orgEvent = event || window.event, + args = slice.call(arguments, 1), + delta = 0, + deltaX = 0, + deltaY = 0, + absDelta = 0, + offsetX = 0, + offsetY = 0; + event = $.event.fix(orgEvent); + event.type = 'mousewheel'; + + // Old school scrollwheel delta + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } + + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaX = deltaY * -1; + deltaY = 0; + } + + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy + delta = deltaY === 0 ? deltaX : deltaY; + + // New school wheel delta (wheel event) + if ( 'deltaY' in orgEvent ) { + deltaY = orgEvent.deltaY * -1; + delta = deltaY; + } + if ( 'deltaX' in orgEvent ) { + deltaX = orgEvent.deltaX; + if ( deltaY === 0 ) { delta = deltaX * -1; } + } + + // No change actually happened, no reason to go any further + if ( deltaY === 0 && deltaX === 0 ) { return; } + + // Need to convert lines and pages to pixels if we aren't already in pixels + // There are three delta modes: + // * deltaMode 0 is by pixels, nothing to do + // * deltaMode 1 is by lines + // * deltaMode 2 is by pages + if ( orgEvent.deltaMode === 1 ) { + var lineHeight = $.data(this, 'mousewheel-line-height'); + delta *= lineHeight; + deltaY *= lineHeight; + deltaX *= lineHeight; + } else if ( orgEvent.deltaMode === 2 ) { + var pageHeight = $.data(this, 'mousewheel-page-height'); + delta *= pageHeight; + deltaY *= pageHeight; + deltaX *= pageHeight; + } + + // Store lowest absolute delta to normalize the delta values + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); + + if ( !lowestDelta || absDelta < lowestDelta ) { + lowestDelta = absDelta; + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + lowestDelta /= 40; + } + } + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + // Divide all the things by 40! + delta /= 40; + deltaX /= 40; + deltaY /= 40; + } + + // Get a whole, normalized value for the deltas + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); + + // Normalise offsetX and offsetY properties + if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { + var boundingRect = this.getBoundingClientRect(); + offsetX = event.clientX - boundingRect.left; + offsetY = event.clientY - boundingRect.top; + } + + // Add information to the event object + event.deltaX = deltaX; + event.deltaY = deltaY; + event.deltaFactor = lowestDelta; + event.offsetX = offsetX; + event.offsetY = offsetY; + // Go ahead and set deltaMode to 0 since we converted to pixels + // Although this is a little odd since we overwrite the deltaX/Y + // properties with normalized deltas. + event.deltaMode = 0; + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + // Clearout lowestDelta after sometime to better + // handle multiple device types that give different + // a different lowestDelta + // Ex: trackpad = 3 and mouse wheel = 120 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); + + return ($.event.dispatch || $.event.handle).apply(this, args); + } + + function nullLowestDelta() { + lowestDelta = null; + } + + function shouldAdjustOldDeltas(orgEvent, absDelta) { + // If this is an older event and the delta is divisable by 120, + // then we are assuming that the browser is treating this as an + // older mouse wheel event and that we should divide the deltas + // by 40 to try and get a more usable deltaFactor. + // Side note, this actually impacts the reported scroll distance + // in older browsers and can cause scrolling to be slower than native. + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; + } + +})); + +S2.define('jquery.select2',[ + 'jquery', + 'jquery-mousewheel', + + './select2/core', + './select2/defaults' +], function ($, _, Select2, Defaults) { + if ($.fn.select2 == null) { + // All methods that should return the element + var thisMethods = ['open', 'close', 'destroy']; + + $.fn.select2 = function (options) { + options = options || {}; + + if (typeof options === 'object') { + this.each(function () { + var instanceOptions = $.extend(true, {}, options); + + var instance = new Select2($(this), instanceOptions); + }); + + return this; + } else if (typeof options === 'string') { + var ret; + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var instance = $(this).data('select2'); + + if (instance == null && window.console && console.error) { + console.error( + 'The select2(\'' + options + '\') method was called on an ' + + 'element that is not using Select2.' + ); + } + + ret = instance[options].apply(instance, args); + }); + + // Check if we should be returning `this` + if ($.inArray(options, thisMethods) > -1) { + return this; + } + + return ret; + } else { + throw new Error('Invalid arguments for Select2: ' + options); + } + }; + } + + if ($.fn.select2.defaults == null) { + $.fn.select2.defaults = Defaults; + } + + return Select2; +}); + + // Return the AMD loader configuration so it can be used outside of this file + return { + define: S2.define, + require: S2.require + }; +}()); + + // Autoload the jQuery bindings + // We know that all of the modules exist above this, so we're safe + var select2 = S2.require('jquery.select2'); + + // Hold the AMD module references on the jQuery function that was just loaded + // This allows Select2 to use the internal loader outside of this file, such + // as in the language files. + jQuery.fn.select2.amd = S2; + + // Return the Select2 instance for anyone who is importing it. + return select2; +})); diff --git a/plugins/select2/js/select2.full.min.js b/plugins/select2/js/select2.full.min.js new file mode 100644 index 0000000..684edf3 --- /dev/null +++ b/plugins/select2/js/select2.full.min.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var 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","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"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","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"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","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"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","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"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","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"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","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); +if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; +},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c;var d=this.options.get("query");d.call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){var d=c.find(".dropdown-wrapper");d.append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); \ No newline at end of file diff --git a/plugins/select2/js/select2.js b/plugins/select2/js/select2.js new file mode 100644 index 0000000..13b84fa --- /dev/null +++ b/plugins/select2/js/select2.js @@ -0,0 +1,5725 @@ +/*! + * Select2 4.0.3 + * https://select2.github.io + * + * Released under the MIT license + * https://github.com/select2/select2/blob/master/LICENSE.md + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS + factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function (jQuery) { + // This is needed so we can catch the AMD loader configuration and use it + // The inner file should be wrapped (by `banner.start.js`) in a function that + // returns the AMD loader references. + var S2 = +(function () { + // Restore the Select2 AMD loader so it can be used + // Needed mostly in the language files, where the loader is not inserted + if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { + var S2 = jQuery.fn.select2.amd; + } +var S2;(function () { if (!S2 || !S2.requirejs) { +if (!S2) { S2 = {}; } else { require = S2; } +/** + * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice, + jsSuffixRegExp = /\.js$/; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, lastIndex, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + name = name.split('/'); + lastIndex = name.length - 1; + + // Node .js allowance: + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + //Lop off the last part of baseParts, so that . matches the + //"directory" and not name of the baseName's module. For instance, + //baseName of "one/two/three", maps to "one/two/three.js", but we + //want the directory, "one/two" for this normalization. + name = baseParts.slice(0, baseParts.length - 1).concat(name); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + var args = aps.call(arguments, 0); + + //If first arg is not require('string'), and there is only + //one arg, it is the array form without a callback. Insert + //a null so that the following concat is correct. + if (typeof args[0] !== 'string' && args.length === 1) { + args.push(null); + } + return req.apply(undef, args.concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + callbackType = typeof callback, + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (callbackType === 'undefined' || callbackType === 'function') { + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback ? callback.apply(defined[name], args) : undefined; + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (config.deps) { + req(config.deps, config.callback); + } + if (!callback) { + return; + } + + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + return req(cfg); + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + if (typeof name !== 'string') { + throw new Error('See almond README: incorrect module build, no module name'); + } + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +S2.requirejs = requirejs;S2.require = require;S2.define = define; +} +}()); +S2.define("almond", function(){}); + +/* global jQuery:false, $:false */ +S2.define('jquery',[],function () { + var _$ = jQuery || $; + + if (_$ == null && console && console.error) { + console.error( + 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + + 'found. Make sure that you are including jQuery before Select2 on your ' + + 'web page.' + ); + } + + return _$; +}); + +S2.define('select2/utils',[ + 'jquery' +], function ($) { + var Utils = {}; + + Utils.Extend = function (ChildClass, SuperClass) { + var __hasProp = {}.hasOwnProperty; + + function BaseConstructor () { + this.constructor = ChildClass; + } + + for (var key in SuperClass) { + if (__hasProp.call(SuperClass, key)) { + ChildClass[key] = SuperClass[key]; + } + } + + BaseConstructor.prototype = SuperClass.prototype; + ChildClass.prototype = new BaseConstructor(); + ChildClass.__super__ = SuperClass.prototype; + + return ChildClass; + }; + + function getMethods (theClass) { + var proto = theClass.prototype; + + var methods = []; + + for (var methodName in proto) { + var m = proto[methodName]; + + if (typeof m !== 'function') { + continue; + } + + if (methodName === 'constructor') { + continue; + } + + methods.push(methodName); + } + + return methods; + } + + Utils.Decorate = function (SuperClass, DecoratorClass) { + var decoratedMethods = getMethods(DecoratorClass); + var superMethods = getMethods(SuperClass); + + function DecoratedClass () { + var unshift = Array.prototype.unshift; + + var argCount = DecoratorClass.prototype.constructor.length; + + var calledConstructor = SuperClass.prototype.constructor; + + if (argCount > 0) { + unshift.call(arguments, SuperClass.prototype.constructor); + + calledConstructor = DecoratorClass.prototype.constructor; + } + + calledConstructor.apply(this, arguments); + } + + DecoratorClass.displayName = SuperClass.displayName; + + function ctr () { + this.constructor = DecoratedClass; + } + + DecoratedClass.prototype = new ctr(); + + for (var m = 0; m < superMethods.length; m++) { + var superMethod = superMethods[m]; + + DecoratedClass.prototype[superMethod] = + SuperClass.prototype[superMethod]; + } + + var calledMethod = function (methodName) { + // Stub out the original method if it's not decorating an actual method + var originalMethod = function () {}; + + if (methodName in DecoratedClass.prototype) { + originalMethod = DecoratedClass.prototype[methodName]; + } + + var decoratedMethod = DecoratorClass.prototype[methodName]; + + return function () { + var unshift = Array.prototype.unshift; + + unshift.call(arguments, originalMethod); + + return decoratedMethod.apply(this, arguments); + }; + }; + + for (var d = 0; d < decoratedMethods.length; d++) { + var decoratedMethod = decoratedMethods[d]; + + DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); + } + + return DecoratedClass; + }; + + var Observable = function () { + this.listeners = {}; + }; + + Observable.prototype.on = function (event, callback) { + this.listeners = this.listeners || {}; + + if (event in this.listeners) { + this.listeners[event].push(callback); + } else { + this.listeners[event] = [callback]; + } + }; + + Observable.prototype.trigger = function (event) { + var slice = Array.prototype.slice; + var params = slice.call(arguments, 1); + + this.listeners = this.listeners || {}; + + // Params should always come in as an array + if (params == null) { + params = []; + } + + // If there are no arguments to the event, use a temporary object + if (params.length === 0) { + params.push({}); + } + + // Set the `_type` of the first object to the event + params[0]._type = event; + + if (event in this.listeners) { + this.invoke(this.listeners[event], slice.call(arguments, 1)); + } + + if ('*' in this.listeners) { + this.invoke(this.listeners['*'], arguments); + } + }; + + Observable.prototype.invoke = function (listeners, params) { + for (var i = 0, len = listeners.length; i < len; i++) { + listeners[i].apply(this, params); + } + }; + + Utils.Observable = Observable; + + Utils.generateChars = function (length) { + var chars = ''; + + for (var i = 0; i < length; i++) { + var randomChar = Math.floor(Math.random() * 36); + chars += randomChar.toString(36); + } + + return chars; + }; + + Utils.bind = function (func, context) { + return function () { + func.apply(context, arguments); + }; + }; + + Utils._convertData = function (data) { + for (var originalKey in data) { + var keys = originalKey.split('-'); + + var dataLevel = data; + + if (keys.length === 1) { + continue; + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k]; + + // Lowercase the first letter + // By default, dash-separated becomes camelCase + key = key.substring(0, 1).toLowerCase() + key.substring(1); + + if (!(key in dataLevel)) { + dataLevel[key] = {}; + } + + if (k == keys.length - 1) { + dataLevel[key] = data[originalKey]; + } + + dataLevel = dataLevel[key]; + } + + delete data[originalKey]; + } + + return data; + }; + + Utils.hasScroll = function (index, el) { + // Adapted from the function created by @ShadowScripter + // and adapted by @BillBarry on the Stack Exchange Code Review website. + // The original code can be found at + // http://codereview.stackexchange.com/q/13338 + // and was designed to be used with the Sizzle selector engine. + + var $el = $(el); + var overflowX = el.style.overflowX; + var overflowY = el.style.overflowY; + + //Check both x and y declarations + if (overflowX === overflowY && + (overflowY === 'hidden' || overflowY === 'visible')) { + return false; + } + + if (overflowX === 'scroll' || overflowY === 'scroll') { + return true; + } + + return ($el.innerHeight() < el.scrollHeight || + $el.innerWidth() < el.scrollWidth); + }; + + Utils.escapeMarkup = function (markup) { + var replaceMap = { + '\\': '&#92;', + '&': '&amp;', + '<': '&lt;', + '>': '&gt;', + '"': '&quot;', + '\'': '&#39;', + '/': '&#47;' + }; + + // Do not try to escape the markup if it's not a string + if (typeof markup !== 'string') { + return markup; + } + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replaceMap[match]; + }); + }; + + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + + return Utils; +}); + +S2.define('select2/results',[ + 'jquery', + './utils' +], function ($, Utils) { + function Results ($element, options, dataAdapter) { + this.$element = $element; + this.data = dataAdapter; + this.options = options; + + Results.__super__.constructor.call(this); + } + + Utils.Extend(Results, Utils.Observable); + + Results.prototype.render = function () { + var $results = $( + '<ul class="select2-results__options" role="tree"></ul>' + ); + + if (this.options.get('multiple')) { + $results.attr('aria-multiselectable', 'true'); + } + + this.$results = $results; + + return $results; + }; + + Results.prototype.clear = function () { + this.$results.empty(); + }; + + Results.prototype.displayMessage = function (params) { + var escapeMarkup = this.options.get('escapeMarkup'); + + this.clear(); + this.hideLoading(); + + var $message = $( + '<li role="treeitem" aria-live="assertive"' + + ' class="select2-results__option"></li>' + ); + + var message = this.options.get('translations').get(params.message); + + $message.append( + escapeMarkup( + message(params.args) + ) + ); + + $message[0].className += ' select2-results__message'; + + this.$results.append($message); + }; + + Results.prototype.hideMessages = function () { + this.$results.find('.select2-results__message').remove(); + }; + + Results.prototype.append = function (data) { + this.hideLoading(); + + var $options = []; + + if (data.results == null || data.results.length === 0) { + if (this.$results.children().length === 0) { + this.trigger('results:message', { + message: 'noResults' + }); + } + + return; + } + + data.results = this.sort(data.results); + + for (var d = 0; d < data.results.length; d++) { + var item = data.results[d]; + + var $option = this.option(item); + + $options.push($option); + } + + this.$results.append($options); + }; + + Results.prototype.position = function ($results, $dropdown) { + var $resultsContainer = $dropdown.find('.select2-results'); + $resultsContainer.append($results); + }; + + Results.prototype.sort = function (data) { + var sorter = this.options.get('sorter'); + + return sorter(data); + }; + + Results.prototype.highlightFirstItem = function () { + var $options = this.$results + .find('.select2-results__option[aria-selected]'); + + var $selected = $options.filter('[aria-selected=true]'); + + // Check if there are any selected options + if ($selected.length > 0) { + // If there are selected options, highlight the first + $selected.first().trigger('mouseenter'); + } else { + // If there are no selected options, highlight the first option + // in the dropdown + $options.first().trigger('mouseenter'); + } + + this.ensureHighlightVisible(); + }; + + Results.prototype.setClasses = function () { + var self = this; + + this.data.current(function (selected) { + var selectedIds = $.map(selected, function (s) { + return s.id.toString(); + }); + + var $options = self.$results + .find('.select2-results__option[aria-selected]'); + + $options.each(function () { + var $option = $(this); + + var item = $.data(this, 'data'); + + // id needs to be converted to a string when comparing + var id = '' + item.id; + + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { + $option.attr('aria-selected', 'true'); + } else { + $option.attr('aria-selected', 'false'); + } + }); + + }); + }; + + Results.prototype.showLoading = function (params) { + this.hideLoading(); + + var loadingMore = this.options.get('translations').get('searching'); + + var loading = { + disabled: true, + loading: true, + text: loadingMore(params) + }; + var $loading = this.option(loading); + $loading.className += ' loading-results'; + + this.$results.prepend($loading); + }; + + Results.prototype.hideLoading = function () { + this.$results.find('.loading-results').remove(); + }; + + Results.prototype.option = function (data) { + var option = document.createElement('li'); + option.className = 'select2-results__option'; + + var attrs = { + 'role': 'treeitem', + 'aria-selected': 'false' + }; + + if (data.disabled) { + delete attrs['aria-selected']; + attrs['aria-disabled'] = 'true'; + } + + if (data.id == null) { + delete attrs['aria-selected']; + } + + if (data._resultId != null) { + option.id = data._resultId; + } + + if (data.title) { + option.title = data.title; + } + + if (data.children) { + attrs.role = 'group'; + attrs['aria-label'] = data.text; + delete attrs['aria-selected']; + } + + for (var attr in attrs) { + var val = attrs[attr]; + + option.setAttribute(attr, val); + } + + if (data.children) { + var $option = $(option); + + var label = document.createElement('strong'); + label.className = 'select2-results__group'; + + var $label = $(label); + this.template(data, label); + + var $children = []; + + for (var c = 0; c < data.children.length; c++) { + var child = data.children[c]; + + var $child = this.option(child); + + $children.push($child); + } + + var $childrenContainer = $('<ul></ul>', { + 'class': 'select2-results__options select2-results__options--nested' + }); + + $childrenContainer.append($children); + + $option.append(label); + $option.append($childrenContainer); + } else { + this.template(data, option); + } + + $.data(option, 'data', data); + + return option; + }; + + Results.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-results'; + + this.$results.attr('id', id); + + container.on('results:all', function (params) { + self.clear(); + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + self.highlightFirstItem(); + } + }); + + container.on('results:append', function (params) { + self.append(params.data); + + if (container.isOpen()) { + self.setClasses(); + } + }); + + container.on('query', function (params) { + self.hideMessages(); + self.showLoading(params); + }); + + container.on('select', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('unselect', function () { + if (!container.isOpen()) { + return; + } + + self.setClasses(); + self.highlightFirstItem(); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expended="true" + self.$results.attr('aria-expanded', 'true'); + self.$results.attr('aria-hidden', 'false'); + + self.setClasses(); + self.ensureHighlightVisible(); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expended="false" + self.$results.attr('aria-expanded', 'false'); + self.$results.attr('aria-hidden', 'true'); + self.$results.removeAttr('aria-activedescendant'); + }); + + container.on('results:toggle', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + $highlighted.trigger('mouseup'); + }); + + container.on('results:select', function () { + var $highlighted = self.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var data = $highlighted.data('data'); + + if ($highlighted.attr('aria-selected') == 'true') { + self.trigger('close', {}); + } else { + self.trigger('select', { + data: data + }); + } + }); + + container.on('results:previous', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + // If we are already at te top, don't move further + if (currentIndex === 0) { + return; + } + + var nextIndex = currentIndex - 1; + + // If none are highlighted, highlight the first + if ($highlighted.length === 0) { + nextIndex = 0; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top; + var nextTop = $next.offset().top; + var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextTop - currentOffset < 0) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:next', function () { + var $highlighted = self.getHighlightedResults(); + + var $options = self.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + var nextIndex = currentIndex + 1; + + // If we are at the last option, stay there + if (nextIndex >= $options.length) { + return; + } + + var $next = $options.eq(nextIndex); + + $next.trigger('mouseenter'); + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var nextBottom = $next.offset().top + $next.outerHeight(false); + var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; + + if (nextIndex === 0) { + self.$results.scrollTop(0); + } else if (nextBottom > currentOffset) { + self.$results.scrollTop(nextOffset); + } + }); + + container.on('results:focus', function (params) { + params.element.addClass('select2-results__option--highlighted'); + }); + + container.on('results:message', function (params) { + self.displayMessage(params); + }); + + if ($.fn.mousewheel) { + this.$results.on('mousewheel', function (e) { + var top = self.$results.scrollTop(); + + var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; + + var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; + var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); + + if (isAtTop) { + self.$results.scrollTop(0); + + e.preventDefault(); + e.stopPropagation(); + } else if (isAtBottom) { + self.$results.scrollTop( + self.$results.get(0).scrollHeight - self.$results.height() + ); + + e.preventDefault(); + e.stopPropagation(); + } + }); + } + + this.$results.on('mouseup', '.select2-results__option[aria-selected]', + function (evt) { + var $this = $(this); + + var data = $this.data('data'); + + if ($this.attr('aria-selected') === 'true') { + if (self.options.get('multiple')) { + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } else { + self.trigger('close', {}); + } + + return; + } + + self.trigger('select', { + originalEvent: evt, + data: data + }); + }); + + this.$results.on('mouseenter', '.select2-results__option[aria-selected]', + function (evt) { + var data = $(this).data('data'); + + self.getHighlightedResults() + .removeClass('select2-results__option--highlighted'); + + self.trigger('results:focus', { + data: data, + element: $(this) + }); + }); + }; + + Results.prototype.getHighlightedResults = function () { + var $highlighted = this.$results + .find('.select2-results__option--highlighted'); + + return $highlighted; + }; + + Results.prototype.destroy = function () { + this.$results.remove(); + }; + + Results.prototype.ensureHighlightVisible = function () { + var $highlighted = this.getHighlightedResults(); + + if ($highlighted.length === 0) { + return; + } + + var $options = this.$results.find('[aria-selected]'); + + var currentIndex = $options.index($highlighted); + + var currentOffset = this.$results.offset().top; + var nextTop = $highlighted.offset().top; + var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); + + var offsetDelta = nextTop - currentOffset; + nextOffset -= $highlighted.outerHeight(false) * 2; + + if (currentIndex <= 2) { + this.$results.scrollTop(0); + } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { + this.$results.scrollTop(nextOffset); + } + }; + + Results.prototype.template = function (result, container) { + var template = this.options.get('templateResult'); + var escapeMarkup = this.options.get('escapeMarkup'); + + var content = template(result, container); + + if (content == null) { + container.style.display = 'none'; + } else if (typeof content === 'string') { + container.innerHTML = escapeMarkup(content); + } else { + $(container).append(content); + } + }; + + return Results; +}); + +S2.define('select2/keys',[ + +], function () { + var KEYS = { + BACKSPACE: 8, + TAB: 9, + ENTER: 13, + SHIFT: 16, + CTRL: 17, + ALT: 18, + ESC: 27, + SPACE: 32, + PAGE_UP: 33, + PAGE_DOWN: 34, + END: 35, + HOME: 36, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + DELETE: 46 + }; + + return KEYS; +}); + +S2.define('select2/selection/base',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function BaseSelection ($element, options) { + this.$element = $element; + this.options = options; + + BaseSelection.__super__.constructor.call(this); + } + + Utils.Extend(BaseSelection, Utils.Observable); + + BaseSelection.prototype.render = function () { + var $selection = $( + '<span class="select2-selection" role="combobox" ' + + ' aria-haspopup="true" aria-expanded="false">' + + '</span>' + ); + + this._tabindex = 0; + + if (this.$element.data('old-tabindex') != null) { + this._tabindex = this.$element.data('old-tabindex'); + } else if (this.$element.attr('tabindex') != null) { + this._tabindex = this.$element.attr('tabindex'); + } + + $selection.attr('title', this.$element.attr('title')); + $selection.attr('tabindex', this._tabindex); + + this.$selection = $selection; + + return $selection; + }; + + BaseSelection.prototype.bind = function (container, $container) { + var self = this; + + var id = container.id + '-container'; + var resultsId = container.id + '-results'; + + this.container = container; + + this.$selection.on('focus', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('blur', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', function (evt) { + self.trigger('keypress', evt); + + if (evt.which === KEYS.SPACE) { + evt.preventDefault(); + } + }); + + container.on('results:focus', function (params) { + self.$selection.attr('aria-activedescendant', params.data._resultId); + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + + container.on('open', function () { + // When the dropdown is open, aria-expanded="true" + self.$selection.attr('aria-expanded', 'true'); + self.$selection.attr('aria-owns', resultsId); + + self._attachCloseHandler(container); + }); + + container.on('close', function () { + // When the dropdown is closed, aria-expanded="false" + self.$selection.attr('aria-expanded', 'false'); + self.$selection.removeAttr('aria-activedescendant'); + self.$selection.removeAttr('aria-owns'); + + self.$selection.focus(); + + self._detachCloseHandler(container); + }); + + container.on('enable', function () { + self.$selection.attr('tabindex', self._tabindex); + }); + + container.on('disable', function () { + self.$selection.attr('tabindex', '-1'); + }); + }; + + BaseSelection.prototype._handleBlur = function (evt) { + var self = this; + + // This needs to be delayed as the active element is the body when the tab + // key is pressed, possibly along with others. + window.setTimeout(function () { + // Don't trigger `blur` if the focus is still in the selection + if ( + (document.activeElement == self.$selection[0]) || + ($.contains(self.$selection[0], document.activeElement)) + ) { + return; + } + + self.trigger('blur', evt); + }, 1); + }; + + BaseSelection.prototype._attachCloseHandler = function (container) { + var self = this; + + $(document.body).on('mousedown.select2.' + container.id, function (e) { + var $target = $(e.target); + + var $select = $target.closest('.select2'); + + var $all = $('.select2.select2-container--open'); + + $all.each(function () { + var $this = $(this); + + if (this == $select[0]) { + return; + } + + var $element = $this.data('element'); + + $element.select2('close'); + }); + }); + }; + + BaseSelection.prototype._detachCloseHandler = function (container) { + $(document.body).off('mousedown.select2.' + container.id); + }; + + BaseSelection.prototype.position = function ($selection, $container) { + var $selectionContainer = $container.find('.selection'); + $selectionContainer.append($selection); + }; + + BaseSelection.prototype.destroy = function () { + this._detachCloseHandler(this.container); + }; + + BaseSelection.prototype.update = function (data) { + throw new Error('The `update` method must be defined in child classes.'); + }; + + return BaseSelection; +}); + +S2.define('select2/selection/single',[ + 'jquery', + './base', + '../utils', + '../keys' +], function ($, BaseSelection, Utils, KEYS) { + function SingleSelection () { + SingleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(SingleSelection, BaseSelection); + + SingleSelection.prototype.render = function () { + var $selection = SingleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--single'); + + $selection.html( + '<span class="select2-selection__rendered"></span>' + + '<span class="select2-selection__arrow" role="presentation">' + + '<b role="presentation"></b>' + + '</span>' + ); + + return $selection; + }; + + SingleSelection.prototype.bind = function (container, $container) { + var self = this; + + SingleSelection.__super__.bind.apply(this, arguments); + + var id = container.id + '-container'; + + this.$selection.find('.select2-selection__rendered').attr('id', id); + this.$selection.attr('aria-labelledby', id); + + this.$selection.on('mousedown', function (evt) { + // Only respond to left clicks + if (evt.which !== 1) { + return; + } + + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on('focus', function (evt) { + // User focuses on the container + }); + + this.$selection.on('blur', function (evt) { + // User exits the container + }); + + container.on('focus', function (evt) { + if (!container.isOpen()) { + self.$selection.focus(); + } + }); + + container.on('selection:update', function (params) { + self.update(params.data); + }); + }; + + SingleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + SingleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + SingleSelection.prototype.selectionContainer = function () { + return $('<span></span>'); + }; + + SingleSelection.prototype.update = function (data) { + if (data.length === 0) { + this.clear(); + return; + } + + var selection = data[0]; + + var $rendered = this.$selection.find('.select2-selection__rendered'); + var formatted = this.display(selection, $rendered); + + $rendered.empty().append(formatted); + $rendered.prop('title', selection.title || selection.text); + }; + + return SingleSelection; +}); + +S2.define('select2/selection/multiple',[ + 'jquery', + './base', + '../utils' +], function ($, BaseSelection, Utils) { + function MultipleSelection ($element, options) { + MultipleSelection.__super__.constructor.apply(this, arguments); + } + + Utils.Extend(MultipleSelection, BaseSelection); + + MultipleSelection.prototype.render = function () { + var $selection = MultipleSelection.__super__.render.call(this); + + $selection.addClass('select2-selection--multiple'); + + $selection.html( + '<ul class="select2-selection__rendered"></ul>' + ); + + return $selection; + }; + + MultipleSelection.prototype.bind = function (container, $container) { + var self = this; + + MultipleSelection.__super__.bind.apply(this, arguments); + + this.$selection.on('click', function (evt) { + self.trigger('toggle', { + originalEvent: evt + }); + }); + + this.$selection.on( + 'click', + '.select2-selection__choice__remove', + function (evt) { + // Ignore the event if it is disabled + if (self.options.get('disabled')) { + return; + } + + var $remove = $(this); + var $selection = $remove.parent(); + + var data = $selection.data('data'); + + self.trigger('unselect', { + originalEvent: evt, + data: data + }); + } + ); + }; + + MultipleSelection.prototype.clear = function () { + this.$selection.find('.select2-selection__rendered').empty(); + }; + + MultipleSelection.prototype.display = function (data, container) { + var template = this.options.get('templateSelection'); + var escapeMarkup = this.options.get('escapeMarkup'); + + return escapeMarkup(template(data, container)); + }; + + MultipleSelection.prototype.selectionContainer = function () { + var $container = $( + '<li class="select2-selection__choice">' + + '<span class="select2-selection__choice__remove" role="presentation">' + + '&times;' + + '</span>' + + '</li>' + ); + + return $container; + }; + + MultipleSelection.prototype.update = function (data) { + this.clear(); + + if (data.length === 0) { + return; + } + + var $selections = []; + + for (var d = 0; d < data.length; d++) { + var selection = data[d]; + + var $selection = this.selectionContainer(); + var formatted = this.display(selection, $selection); + + $selection.append(formatted); + $selection.prop('title', selection.title || selection.text); + + $selection.data('data', selection); + + $selections.push($selection); + } + + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); + }; + + return MultipleSelection; +}); + +S2.define('select2/selection/placeholder',[ + '../utils' +], function (Utils) { + function Placeholder (decorated, $element, options) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options); + } + + Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { + var $placeholder = this.selectionContainer(); + + $placeholder.html(this.display(placeholder)); + $placeholder.addClass('select2-selection__placeholder') + .removeClass('select2-selection__choice'); + + return $placeholder; + }; + + Placeholder.prototype.update = function (decorated, data) { + var singlePlaceholder = ( + data.length == 1 && data[0].id != this.placeholder.id + ); + var multipleSelections = data.length > 1; + + if (multipleSelections || singlePlaceholder) { + return decorated.call(this, data); + } + + this.clear(); + + var $placeholder = this.createPlaceholder(this.placeholder); + + this.$selection.find('.select2-selection__rendered').append($placeholder); + }; + + return Placeholder; +}); + +S2.define('select2/selection/allowClear',[ + 'jquery', + '../keys' +], function ($, KEYS) { + function AllowClear () { } + + AllowClear.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { + console.error( + 'Select2: The `allowClear` option should be used in combination ' + + 'with the `placeholder` option.' + ); + } + } + + this.$selection.on('mousedown', '.select2-selection__clear', + function (evt) { + self._handleClear(evt); + }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle', {}); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } + }; + + AllowClear.prototype.update = function (decorated, data) { + decorated.call(this, data); + + if (this.$selection.find('.select2-selection__placeholder').length > 0 || + data.length === 0) { + return; + } + + var $remove = $( + '<span class="select2-selection__clear">' + + '&times;' + + '</span>' + ); + $remove.data('data', data); + + this.$selection.find('.select2-selection__rendered').prepend($remove); + }; + + return AllowClear; +}); + +S2.define('select2/selection/search',[ + 'jquery', + '../utils', + '../keys' +], function ($, Utils, KEYS) { + function Search (decorated, $element, options) { + decorated.call(this, $element, options); + } + + Search.prototype.render = function (decorated) { + var $search = $( + '<li class="select2-search select2-search--inline">' + + '<input class="select2-search__field" type="search" tabindex="-1"' + + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + + ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + + '</li>' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + var $rendered = decorated.call(this); + + this._transferTabIndex(); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('open', function () { + self.$search.trigger('focus'); + }); + + container.on('close', function () { + self.$search.val(''); + self.$search.removeAttr('aria-activedescendant'); + self.$search.trigger('focus'); + }); + + container.on('enable', function () { + self.$search.prop('disabled', false); + + self._transferTabIndex(); + }); + + container.on('disable', function () { + self.$search.prop('disabled', true); + }); + + container.on('focus', function (evt) { + self.$search.trigger('focus'); + }); + + container.on('results:focus', function (params) { + self.$search.attr('aria-activedescendant', params.id); + }); + + this.$selection.on('focusin', '.select2-search--inline', function (evt) { + self.trigger('focus', evt); + }); + + this.$selection.on('focusout', '.select2-search--inline', function (evt) { + self._handleBlur(evt); + }); + + this.$selection.on('keydown', '.select2-search--inline', function (evt) { + evt.stopPropagation(); + + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + + var key = evt.which; + + if (key === KEYS.BACKSPACE && self.$search.val() === '') { + var $previousChoice = self.$searchContainer + .prev('.select2-selection__choice'); + + if ($previousChoice.length > 0) { + var item = $previousChoice.data('data'); + + self.searchRemoveChoice(item); + + evt.preventDefault(); + } + } + }); + + // Try to detect the IE version should the `documentMode` property that + // is stored on the document. This is only implemented in IE and is + // slightly cleaner than doing a user agent check. + // This property is not available in Edge, but Edge also doesn't have + // this bug. + var msie = document.documentMode; + var disableInputEvents = msie && msie <= 11; + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$selection.on( + 'input.searchcheck', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents) { + self.$selection.off('input.search input.searchcheck'); + return; + } + + // Unbind the duplicated `keyup` event + self.$selection.off('keyup.search'); + } + ); + + this.$selection.on( + 'keyup.search input.search', + '.select2-search--inline', + function (evt) { + // IE will trigger the `input` event when a placeholder is used on a + // search box. To get around this issue, we are forced to ignore all + // `input` events in IE and keep using `keyup`. + if (disableInputEvents && evt.type === 'input') { + self.$selection.off('input.search input.searchcheck'); + return; + } + + var key = evt.which; + + // We can freely ignore events from modifier keys + if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { + return; + } + + // Tabbing will be handled during the `keydown` phase + if (key == KEYS.TAB) { + return; + } + + self.handleSearch(evt); + } + ); + }; + + /** + * This method will transfer the tabindex attribute from the rendered + * selection to the search box. This allows for the search box to be used as + * the primary focus instead of the selection container. + * + * @private + */ + Search.prototype._transferTabIndex = function (decorated) { + this.$search.attr('tabindex', this.$selection.attr('tabindex')); + this.$selection.attr('tabindex', '-1'); + }; + + Search.prototype.createPlaceholder = function (decorated, placeholder) { + this.$search.attr('placeholder', placeholder.text); + }; + + Search.prototype.update = function (decorated, data) { + var searchHadFocus = this.$search[0] == document.activeElement; + + this.$search.attr('placeholder', ''); + + decorated.call(this, data); + + this.$selection.find('.select2-selection__rendered') + .append(this.$searchContainer); + + this.resizeSearch(); + if (searchHadFocus) { + this.$search.focus(); + } + }; + + Search.prototype.handleSearch = function () { + this.resizeSearch(); + + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.searchRemoveChoice = function (decorated, item) { + this.trigger('unselect', { + data: item + }); + + this.$search.val(item.text); + this.handleSearch(); + }; + + Search.prototype.resizeSearch = function () { + this.$search.css('width', '25px'); + + var width = ''; + + if (this.$search.attr('placeholder') !== '') { + width = this.$selection.find('.select2-selection__rendered').innerWidth(); + } else { + var minimumWidth = this.$search.val().length + 1; + + width = (minimumWidth * 0.75) + 'em'; + } + + this.$search.css('width', width); + }; + + return Search; +}); + +S2.define('select2/selection/eventRelay',[ + 'jquery' +], function ($) { + function EventRelay () { } + + EventRelay.prototype.bind = function (decorated, container, $container) { + var self = this; + var relayEvents = [ + 'open', 'opening', + 'close', 'closing', + 'select', 'selecting', + 'unselect', 'unselecting' + ]; + + var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; + + decorated.call(this, container, $container); + + container.on('*', function (name, params) { + // Ignore events that should not be relayed + if ($.inArray(name, relayEvents) === -1) { + return; + } + + // The parameters should always be an object + params = params || {}; + + // Generate the jQuery event for the Select2 event + var evt = $.Event('select2:' + name, { + params: params + }); + + self.$element.trigger(evt); + + // Only handle preventable events if it was one + if ($.inArray(name, preventableEvents) === -1) { + return; + } + + params.prevented = evt.isDefaultPrevented(); + }); + }; + + return EventRelay; +}); + +S2.define('select2/translation',[ + 'jquery', + 'require' +], function ($, require) { + function Translation (dict) { + this.dict = dict || {}; + } + + Translation.prototype.all = function () { + return this.dict; + }; + + Translation.prototype.get = function (key) { + return this.dict[key]; + }; + + Translation.prototype.extend = function (translation) { + this.dict = $.extend({}, translation.all(), this.dict); + }; + + // Static functions + + Translation._cache = {}; + + Translation.loadPath = function (path) { + if (!(path in Translation._cache)) { + var translations = require(path); + + Translation._cache[path] = translations; + } + + return new Translation(Translation._cache[path]); + }; + + return Translation; +}); + +S2.define('select2/diacritics',[ + +], function () { + var diacritics = { + '\u24B6': 'A', + '\uFF21': 'A', + '\u00C0': 'A', + '\u00C1': 'A', + '\u00C2': 'A', + '\u1EA6': 'A', + '\u1EA4': 'A', + '\u1EAA': 'A', + '\u1EA8': 'A', + '\u00C3': 'A', + '\u0100': 'A', + '\u0102': 'A', + '\u1EB0': 'A', + '\u1EAE': 'A', + '\u1EB4': 'A', + '\u1EB2': 'A', + '\u0226': 'A', + '\u01E0': 'A', + '\u00C4': 'A', + '\u01DE': 'A', + '\u1EA2': 'A', + '\u00C5': 'A', + '\u01FA': 'A', + '\u01CD': 'A', + '\u0200': 'A', + '\u0202': 'A', + '\u1EA0': 'A', + '\u1EAC': 'A', + '\u1EB6': 'A', + '\u1E00': 'A', + '\u0104': 'A', + '\u023A': 'A', + '\u2C6F': 'A', + '\uA732': 'AA', + '\u00C6': 'AE', + '\u01FC': 'AE', + '\u01E2': 'AE', + '\uA734': 'AO', + '\uA736': 'AU', + '\uA738': 'AV', + '\uA73A': 'AV', + '\uA73C': 'AY', + '\u24B7': 'B', + '\uFF22': 'B', + '\u1E02': 'B', + '\u1E04': 'B', + '\u1E06': 'B', + '\u0243': 'B', + '\u0182': 'B', + '\u0181': 'B', + '\u24B8': 'C', + '\uFF23': 'C', + '\u0106': 'C', + '\u0108': 'C', + '\u010A': 'C', + '\u010C': 'C', + '\u00C7': 'C', + '\u1E08': 'C', + '\u0187': 'C', + '\u023B': 'C', + '\uA73E': 'C', + '\u24B9': 'D', + '\uFF24': 'D', + '\u1E0A': 'D', + '\u010E': 'D', + '\u1E0C': 'D', + '\u1E10': 'D', + '\u1E12': 'D', + '\u1E0E': 'D', + '\u0110': 'D', + '\u018B': 'D', + '\u018A': 'D', + '\u0189': 'D', + '\uA779': 'D', + '\u01F1': 'DZ', + '\u01C4': 'DZ', + '\u01F2': 'Dz', + '\u01C5': 'Dz', + '\u24BA': 'E', + '\uFF25': 'E', + '\u00C8': 'E', + '\u00C9': 'E', + '\u00CA': 'E', + '\u1EC0': 'E', + '\u1EBE': 'E', + '\u1EC4': 'E', + '\u1EC2': 'E', + '\u1EBC': 'E', + '\u0112': 'E', + '\u1E14': 'E', + '\u1E16': 'E', + '\u0114': 'E', + '\u0116': 'E', + '\u00CB': 'E', + '\u1EBA': 'E', + '\u011A': 'E', + '\u0204': 'E', + '\u0206': 'E', + '\u1EB8': 'E', + '\u1EC6': 'E', + '\u0228': 'E', + '\u1E1C': 'E', + '\u0118': 'E', + '\u1E18': 'E', + '\u1E1A': 'E', + '\u0190': 'E', + '\u018E': 'E', + '\u24BB': 'F', + '\uFF26': 'F', + '\u1E1E': 'F', + '\u0191': 'F', + '\uA77B': 'F', + '\u24BC': 'G', + '\uFF27': 'G', + '\u01F4': 'G', + '\u011C': 'G', + '\u1E20': 'G', + '\u011E': 'G', + '\u0120': 'G', + '\u01E6': 'G', + '\u0122': 'G', + '\u01E4': 'G', + '\u0193': 'G', + '\uA7A0': 'G', + '\uA77D': 'G', + '\uA77E': 'G', + '\u24BD': 'H', + '\uFF28': 'H', + '\u0124': 'H', + '\u1E22': 'H', + '\u1E26': 'H', + '\u021E': 'H', + '\u1E24': 'H', + '\u1E28': 'H', + '\u1E2A': 'H', + '\u0126': 'H', + '\u2C67': 'H', + '\u2C75': 'H', + '\uA78D': 'H', + '\u24BE': 'I', + '\uFF29': 'I', + '\u00CC': 'I', + '\u00CD': 'I', + '\u00CE': 'I', + '\u0128': 'I', + '\u012A': 'I', + '\u012C': 'I', + '\u0130': 'I', + '\u00CF': 'I', + '\u1E2E': 'I', + '\u1EC8': 'I', + '\u01CF': 'I', + '\u0208': 'I', + '\u020A': 'I', + '\u1ECA': 'I', + '\u012E': 'I', + '\u1E2C': 'I', + '\u0197': 'I', + '\u24BF': 'J', + '\uFF2A': 'J', + '\u0134': 'J', + '\u0248': 'J', + '\u24C0': 'K', + '\uFF2B': 'K', + '\u1E30': 'K', + '\u01E8': 'K', + '\u1E32': 'K', + '\u0136': 'K', + '\u1E34': 'K', + '\u0198': 'K', + '\u2C69': 'K', + '\uA740': 'K', + '\uA742': 'K', + '\uA744': 'K', + '\uA7A2': 'K', + '\u24C1': 'L', + '\uFF2C': 'L', + '\u013F': 'L', + '\u0139': 'L', + '\u013D': 'L', + '\u1E36': 'L', + '\u1E38': 'L', + '\u013B': 'L', + '\u1E3C': 'L', + '\u1E3A': 'L', + '\u0141': 'L', + '\u023D': 'L', + '\u2C62': 'L', + '\u2C60': 'L', + '\uA748': 'L', + '\uA746': 'L', + '\uA780': 'L', + '\u01C7': 'LJ', + '\u01C8': 'Lj', + '\u24C2': 'M', + '\uFF2D': 'M', + '\u1E3E': 'M', + '\u1E40': 'M', + '\u1E42': 'M', + '\u2C6E': 'M', + '\u019C': 'M', + '\u24C3': 'N', + '\uFF2E': 'N', + '\u01F8': 'N', + '\u0143': 'N', + '\u00D1': 'N', + '\u1E44': 'N', + '\u0147': 'N', + '\u1E46': 'N', + '\u0145': 'N', + '\u1E4A': 'N', + '\u1E48': 'N', + '\u0220': 'N', + '\u019D': 'N', + '\uA790': 'N', + '\uA7A4': 'N', + '\u01CA': 'NJ', + '\u01CB': 'Nj', + '\u24C4': 'O', + '\uFF2F': 'O', + '\u00D2': 'O', + '\u00D3': 'O', + '\u00D4': 'O', + '\u1ED2': 'O', + '\u1ED0': 'O', + '\u1ED6': 'O', + '\u1ED4': 'O', + '\u00D5': 'O', + '\u1E4C': 'O', + '\u022C': 'O', + '\u1E4E': 'O', + '\u014C': 'O', + '\u1E50': 'O', + '\u1E52': 'O', + '\u014E': 'O', + '\u022E': 'O', + '\u0230': 'O', + '\u00D6': 'O', + '\u022A': 'O', + '\u1ECE': 'O', + '\u0150': 'O', + '\u01D1': 'O', + '\u020C': 'O', + '\u020E': 'O', + '\u01A0': 'O', + '\u1EDC': 'O', + '\u1EDA': 'O', + '\u1EE0': 'O', + '\u1EDE': 'O', + '\u1EE2': 'O', + '\u1ECC': 'O', + '\u1ED8': 'O', + '\u01EA': 'O', + '\u01EC': 'O', + '\u00D8': 'O', + '\u01FE': 'O', + '\u0186': 'O', + '\u019F': 'O', + '\uA74A': 'O', + '\uA74C': 'O', + '\u01A2': 'OI', + '\uA74E': 'OO', + '\u0222': 'OU', + '\u24C5': 'P', + '\uFF30': 'P', + '\u1E54': 'P', + '\u1E56': 'P', + '\u01A4': 'P', + '\u2C63': 'P', + '\uA750': 'P', + '\uA752': 'P', + '\uA754': 'P', + '\u24C6': 'Q', + '\uFF31': 'Q', + '\uA756': 'Q', + '\uA758': 'Q', + '\u024A': 'Q', + '\u24C7': 'R', + '\uFF32': 'R', + '\u0154': 'R', + '\u1E58': 'R', + '\u0158': 'R', + '\u0210': 'R', + '\u0212': 'R', + '\u1E5A': 'R', + '\u1E5C': 'R', + '\u0156': 'R', + '\u1E5E': 'R', + '\u024C': 'R', + '\u2C64': 'R', + '\uA75A': 'R', + '\uA7A6': 'R', + '\uA782': 'R', + '\u24C8': 'S', + '\uFF33': 'S', + '\u1E9E': 'S', + '\u015A': 'S', + '\u1E64': 'S', + '\u015C': 'S', + '\u1E60': 'S', + '\u0160': 'S', + '\u1E66': 'S', + '\u1E62': 'S', + '\u1E68': 'S', + '\u0218': 'S', + '\u015E': 'S', + '\u2C7E': 'S', + '\uA7A8': 'S', + '\uA784': 'S', + '\u24C9': 'T', + '\uFF34': 'T', + '\u1E6A': 'T', + '\u0164': 'T', + '\u1E6C': 'T', + '\u021A': 'T', + '\u0162': 'T', + '\u1E70': 'T', + '\u1E6E': 'T', + '\u0166': 'T', + '\u01AC': 'T', + '\u01AE': 'T', + '\u023E': 'T', + '\uA786': 'T', + '\uA728': 'TZ', + '\u24CA': 'U', + '\uFF35': 'U', + '\u00D9': 'U', + '\u00DA': 'U', + '\u00DB': 'U', + '\u0168': 'U', + '\u1E78': 'U', + '\u016A': 'U', + '\u1E7A': 'U', + '\u016C': 'U', + '\u00DC': 'U', + '\u01DB': 'U', + '\u01D7': 'U', + '\u01D5': 'U', + '\u01D9': 'U', + '\u1EE6': 'U', + '\u016E': 'U', + '\u0170': 'U', + '\u01D3': 'U', + '\u0214': 'U', + '\u0216': 'U', + '\u01AF': 'U', + '\u1EEA': 'U', + '\u1EE8': 'U', + '\u1EEE': 'U', + '\u1EEC': 'U', + '\u1EF0': 'U', + '\u1EE4': 'U', + '\u1E72': 'U', + '\u0172': 'U', + '\u1E76': 'U', + '\u1E74': 'U', + '\u0244': 'U', + '\u24CB': 'V', + '\uFF36': 'V', + '\u1E7C': 'V', + '\u1E7E': 'V', + '\u01B2': 'V', + '\uA75E': 'V', + '\u0245': 'V', + '\uA760': 'VY', + '\u24CC': 'W', + '\uFF37': 'W', + '\u1E80': 'W', + '\u1E82': 'W', + '\u0174': 'W', + '\u1E86': 'W', + '\u1E84': 'W', + '\u1E88': 'W', + '\u2C72': 'W', + '\u24CD': 'X', + '\uFF38': 'X', + '\u1E8A': 'X', + '\u1E8C': 'X', + '\u24CE': 'Y', + '\uFF39': 'Y', + '\u1EF2': 'Y', + '\u00DD': 'Y', + '\u0176': 'Y', + '\u1EF8': 'Y', + '\u0232': 'Y', + '\u1E8E': 'Y', + '\u0178': 'Y', + '\u1EF6': 'Y', + '\u1EF4': 'Y', + '\u01B3': 'Y', + '\u024E': 'Y', + '\u1EFE': 'Y', + '\u24CF': 'Z', + '\uFF3A': 'Z', + '\u0179': 'Z', + '\u1E90': 'Z', + '\u017B': 'Z', + '\u017D': 'Z', + '\u1E92': 'Z', + '\u1E94': 'Z', + '\u01B5': 'Z', + '\u0224': 'Z', + '\u2C7F': 'Z', + '\u2C6B': 'Z', + '\uA762': 'Z', + '\u24D0': 'a', + '\uFF41': 'a', + '\u1E9A': 'a', + '\u00E0': 'a', + '\u00E1': 'a', + '\u00E2': 'a', + '\u1EA7': 'a', + '\u1EA5': 'a', + '\u1EAB': 'a', + '\u1EA9': 'a', + '\u00E3': 'a', + '\u0101': 'a', + '\u0103': 'a', + '\u1EB1': 'a', + '\u1EAF': 'a', + '\u1EB5': 'a', + '\u1EB3': 'a', + '\u0227': 'a', + '\u01E1': 'a', + '\u00E4': 'a', + '\u01DF': 'a', + '\u1EA3': 'a', + '\u00E5': 'a', + '\u01FB': 'a', + '\u01CE': 'a', + '\u0201': 'a', + '\u0203': 'a', + '\u1EA1': 'a', + '\u1EAD': 'a', + '\u1EB7': 'a', + '\u1E01': 'a', + '\u0105': 'a', + '\u2C65': 'a', + '\u0250': 'a', + '\uA733': 'aa', + '\u00E6': 'ae', + '\u01FD': 'ae', + '\u01E3': 'ae', + '\uA735': 'ao', + '\uA737': 'au', + '\uA739': 'av', + '\uA73B': 'av', + '\uA73D': 'ay', + '\u24D1': 'b', + '\uFF42': 'b', + '\u1E03': 'b', + '\u1E05': 'b', + '\u1E07': 'b', + '\u0180': 'b', + '\u0183': 'b', + '\u0253': 'b', + '\u24D2': 'c', + '\uFF43': 'c', + '\u0107': 'c', + '\u0109': 'c', + '\u010B': 'c', + '\u010D': 'c', + '\u00E7': 'c', + '\u1E09': 'c', + '\u0188': 'c', + '\u023C': 'c', + '\uA73F': 'c', + '\u2184': 'c', + '\u24D3': 'd', + '\uFF44': 'd', + '\u1E0B': 'd', + '\u010F': 'd', + '\u1E0D': 'd', + '\u1E11': 'd', + '\u1E13': 'd', + '\u1E0F': 'd', + '\u0111': 'd', + '\u018C': 'd', + '\u0256': 'd', + '\u0257': 'd', + '\uA77A': 'd', + '\u01F3': 'dz', + '\u01C6': 'dz', + '\u24D4': 'e', + '\uFF45': 'e', + '\u00E8': 'e', + '\u00E9': 'e', + '\u00EA': 'e', + '\u1EC1': 'e', + '\u1EBF': 'e', + '\u1EC5': 'e', + '\u1EC3': 'e', + '\u1EBD': 'e', + '\u0113': 'e', + '\u1E15': 'e', + '\u1E17': 'e', + '\u0115': 'e', + '\u0117': 'e', + '\u00EB': 'e', + '\u1EBB': 'e', + '\u011B': 'e', + '\u0205': 'e', + '\u0207': 'e', + '\u1EB9': 'e', + '\u1EC7': 'e', + '\u0229': 'e', + '\u1E1D': 'e', + '\u0119': 'e', + '\u1E19': 'e', + '\u1E1B': 'e', + '\u0247': 'e', + '\u025B': 'e', + '\u01DD': 'e', + '\u24D5': 'f', + '\uFF46': 'f', + '\u1E1F': 'f', + '\u0192': 'f', + '\uA77C': 'f', + '\u24D6': 'g', + '\uFF47': 'g', + '\u01F5': 'g', + '\u011D': 'g', + '\u1E21': 'g', + '\u011F': 'g', + '\u0121': 'g', + '\u01E7': 'g', + '\u0123': 'g', + '\u01E5': 'g', + '\u0260': 'g', + '\uA7A1': 'g', + '\u1D79': 'g', + '\uA77F': 'g', + '\u24D7': 'h', + '\uFF48': 'h', + '\u0125': 'h', + '\u1E23': 'h', + '\u1E27': 'h', + '\u021F': 'h', + '\u1E25': 'h', + '\u1E29': 'h', + '\u1E2B': 'h', + '\u1E96': 'h', + '\u0127': 'h', + '\u2C68': 'h', + '\u2C76': 'h', + '\u0265': 'h', + '\u0195': 'hv', + '\u24D8': 'i', + '\uFF49': 'i', + '\u00EC': 'i', + '\u00ED': 'i', + '\u00EE': 'i', + '\u0129': 'i', + '\u012B': 'i', + '\u012D': 'i', + '\u00EF': 'i', + '\u1E2F': 'i', + '\u1EC9': 'i', + '\u01D0': 'i', + '\u0209': 'i', + '\u020B': 'i', + '\u1ECB': 'i', + '\u012F': 'i', + '\u1E2D': 'i', + '\u0268': 'i', + '\u0131': 'i', + '\u24D9': 'j', + '\uFF4A': 'j', + '\u0135': 'j', + '\u01F0': 'j', + '\u0249': 'j', + '\u24DA': 'k', + '\uFF4B': 'k', + '\u1E31': 'k', + '\u01E9': 'k', + '\u1E33': 'k', + '\u0137': 'k', + '\u1E35': 'k', + '\u0199': 'k', + '\u2C6A': 'k', + '\uA741': 'k', + '\uA743': 'k', + '\uA745': 'k', + '\uA7A3': 'k', + '\u24DB': 'l', + '\uFF4C': 'l', + '\u0140': 'l', + '\u013A': 'l', + '\u013E': 'l', + '\u1E37': 'l', + '\u1E39': 'l', + '\u013C': 'l', + '\u1E3D': 'l', + '\u1E3B': 'l', + '\u017F': 'l', + '\u0142': 'l', + '\u019A': 'l', + '\u026B': 'l', + '\u2C61': 'l', + '\uA749': 'l', + '\uA781': 'l', + '\uA747': 'l', + '\u01C9': 'lj', + '\u24DC': 'm', + '\uFF4D': 'm', + '\u1E3F': 'm', + '\u1E41': 'm', + '\u1E43': 'm', + '\u0271': 'm', + '\u026F': 'm', + '\u24DD': 'n', + '\uFF4E': 'n', + '\u01F9': 'n', + '\u0144': 'n', + '\u00F1': 'n', + '\u1E45': 'n', + '\u0148': 'n', + '\u1E47': 'n', + '\u0146': 'n', + '\u1E4B': 'n', + '\u1E49': 'n', + '\u019E': 'n', + '\u0272': 'n', + '\u0149': 'n', + '\uA791': 'n', + '\uA7A5': 'n', + '\u01CC': 'nj', + '\u24DE': 'o', + '\uFF4F': 'o', + '\u00F2': 'o', + '\u00F3': 'o', + '\u00F4': 'o', + '\u1ED3': 'o', + '\u1ED1': 'o', + '\u1ED7': 'o', + '\u1ED5': 'o', + '\u00F5': 'o', + '\u1E4D': 'o', + '\u022D': 'o', + '\u1E4F': 'o', + '\u014D': 'o', + '\u1E51': 'o', + '\u1E53': 'o', + '\u014F': 'o', + '\u022F': 'o', + '\u0231': 'o', + '\u00F6': 'o', + '\u022B': 'o', + '\u1ECF': 'o', + '\u0151': 'o', + '\u01D2': 'o', + '\u020D': 'o', + '\u020F': 'o', + '\u01A1': 'o', + '\u1EDD': 'o', + '\u1EDB': 'o', + '\u1EE1': 'o', + '\u1EDF': 'o', + '\u1EE3': 'o', + '\u1ECD': 'o', + '\u1ED9': 'o', + '\u01EB': 'o', + '\u01ED': 'o', + '\u00F8': 'o', + '\u01FF': 'o', + '\u0254': 'o', + '\uA74B': 'o', + '\uA74D': 'o', + '\u0275': 'o', + '\u01A3': 'oi', + '\u0223': 'ou', + '\uA74F': 'oo', + '\u24DF': 'p', + '\uFF50': 'p', + '\u1E55': 'p', + '\u1E57': 'p', + '\u01A5': 'p', + '\u1D7D': 'p', + '\uA751': 'p', + '\uA753': 'p', + '\uA755': 'p', + '\u24E0': 'q', + '\uFF51': 'q', + '\u024B': 'q', + '\uA757': 'q', + '\uA759': 'q', + '\u24E1': 'r', + '\uFF52': 'r', + '\u0155': 'r', + '\u1E59': 'r', + '\u0159': 'r', + '\u0211': 'r', + '\u0213': 'r', + '\u1E5B': 'r', + '\u1E5D': 'r', + '\u0157': 'r', + '\u1E5F': 'r', + '\u024D': 'r', + '\u027D': 'r', + '\uA75B': 'r', + '\uA7A7': 'r', + '\uA783': 'r', + '\u24E2': 's', + '\uFF53': 's', + '\u00DF': 's', + '\u015B': 's', + '\u1E65': 's', + '\u015D': 's', + '\u1E61': 's', + '\u0161': 's', + '\u1E67': 's', + '\u1E63': 's', + '\u1E69': 's', + '\u0219': 's', + '\u015F': 's', + '\u023F': 's', + '\uA7A9': 's', + '\uA785': 's', + '\u1E9B': 's', + '\u24E3': 't', + '\uFF54': 't', + '\u1E6B': 't', + '\u1E97': 't', + '\u0165': 't', + '\u1E6D': 't', + '\u021B': 't', + '\u0163': 't', + '\u1E71': 't', + '\u1E6F': 't', + '\u0167': 't', + '\u01AD': 't', + '\u0288': 't', + '\u2C66': 't', + '\uA787': 't', + '\uA729': 'tz', + '\u24E4': 'u', + '\uFF55': 'u', + '\u00F9': 'u', + '\u00FA': 'u', + '\u00FB': 'u', + '\u0169': 'u', + '\u1E79': 'u', + '\u016B': 'u', + '\u1E7B': 'u', + '\u016D': 'u', + '\u00FC': 'u', + '\u01DC': 'u', + '\u01D8': 'u', + '\u01D6': 'u', + '\u01DA': 'u', + '\u1EE7': 'u', + '\u016F': 'u', + '\u0171': 'u', + '\u01D4': 'u', + '\u0215': 'u', + '\u0217': 'u', + '\u01B0': 'u', + '\u1EEB': 'u', + '\u1EE9': 'u', + '\u1EEF': 'u', + '\u1EED': 'u', + '\u1EF1': 'u', + '\u1EE5': 'u', + '\u1E73': 'u', + '\u0173': 'u', + '\u1E77': 'u', + '\u1E75': 'u', + '\u0289': 'u', + '\u24E5': 'v', + '\uFF56': 'v', + '\u1E7D': 'v', + '\u1E7F': 'v', + '\u028B': 'v', + '\uA75F': 'v', + '\u028C': 'v', + '\uA761': 'vy', + '\u24E6': 'w', + '\uFF57': 'w', + '\u1E81': 'w', + '\u1E83': 'w', + '\u0175': 'w', + '\u1E87': 'w', + '\u1E85': 'w', + '\u1E98': 'w', + '\u1E89': 'w', + '\u2C73': 'w', + '\u24E7': 'x', + '\uFF58': 'x', + '\u1E8B': 'x', + '\u1E8D': 'x', + '\u24E8': 'y', + '\uFF59': 'y', + '\u1EF3': 'y', + '\u00FD': 'y', + '\u0177': 'y', + '\u1EF9': 'y', + '\u0233': 'y', + '\u1E8F': 'y', + '\u00FF': 'y', + '\u1EF7': 'y', + '\u1E99': 'y', + '\u1EF5': 'y', + '\u01B4': 'y', + '\u024F': 'y', + '\u1EFF': 'y', + '\u24E9': 'z', + '\uFF5A': 'z', + '\u017A': 'z', + '\u1E91': 'z', + '\u017C': 'z', + '\u017E': 'z', + '\u1E93': 'z', + '\u1E95': 'z', + '\u01B6': 'z', + '\u0225': 'z', + '\u0240': 'z', + '\u2C6C': 'z', + '\uA763': 'z', + '\u0386': '\u0391', + '\u0388': '\u0395', + '\u0389': '\u0397', + '\u038A': '\u0399', + '\u03AA': '\u0399', + '\u038C': '\u039F', + '\u038E': '\u03A5', + '\u03AB': '\u03A5', + '\u038F': '\u03A9', + '\u03AC': '\u03B1', + '\u03AD': '\u03B5', + '\u03AE': '\u03B7', + '\u03AF': '\u03B9', + '\u03CA': '\u03B9', + '\u0390': '\u03B9', + '\u03CC': '\u03BF', + '\u03CD': '\u03C5', + '\u03CB': '\u03C5', + '\u03B0': '\u03C5', + '\u03C9': '\u03C9', + '\u03C2': '\u03C3' + }; + + return diacritics; +}); + +S2.define('select2/data/base',[ + '../utils' +], function (Utils) { + function BaseAdapter ($element, options) { + BaseAdapter.__super__.constructor.call(this); + } + + Utils.Extend(BaseAdapter, Utils.Observable); + + BaseAdapter.prototype.current = function (callback) { + throw new Error('The `current` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.query = function (params, callback) { + throw new Error('The `query` method must be defined in child classes.'); + }; + + BaseAdapter.prototype.bind = function (container, $container) { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.destroy = function () { + // Can be implemented in subclasses + }; + + BaseAdapter.prototype.generateResultId = function (container, data) { + var id = container.id + '-result-'; + + id += Utils.generateChars(4); + + if (data.id != null) { + id += '-' + data.id.toString(); + } else { + id += '-' + Utils.generateChars(4); + } + return id; + }; + + return BaseAdapter; +}); + +S2.define('select2/data/select',[ + './base', + '../utils', + 'jquery' +], function (BaseAdapter, Utils, $) { + function SelectAdapter ($element, options) { + this.$element = $element; + this.options = options; + + SelectAdapter.__super__.constructor.call(this); + } + + Utils.Extend(SelectAdapter, BaseAdapter); + + SelectAdapter.prototype.current = function (callback) { + var data = []; + var self = this; + + this.$element.find(':selected').each(function () { + var $option = $(this); + + var option = self.item($option); + + data.push(option); + }); + + callback(data); + }; + + SelectAdapter.prototype.select = function (data) { + var self = this; + + data.selected = true; + + // If data.element is a DOM node, use it instead + if ($(data.element).is('option')) { + data.element.selected = true; + + this.$element.trigger('change'); + + return; + } + + if (this.$element.prop('multiple')) { + this.current(function (currentData) { + var val = []; + + data = [data]; + data.push.apply(data, currentData); + + for (var d = 0; d < data.length; d++) { + var id = data[d].id; + + if ($.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + self.$element.trigger('change'); + }); + } else { + var val = data.id; + + this.$element.val(val); + this.$element.trigger('change'); + } + }; + + SelectAdapter.prototype.unselect = function (data) { + var self = this; + + if (!this.$element.prop('multiple')) { + return; + } + + data.selected = false; + + if ($(data.element).is('option')) { + data.element.selected = false; + + this.$element.trigger('change'); + + return; + } + + this.current(function (currentData) { + var val = []; + + for (var d = 0; d < currentData.length; d++) { + var id = currentData[d].id; + + if (id !== data.id && $.inArray(id, val) === -1) { + val.push(id); + } + } + + self.$element.val(val); + + self.$element.trigger('change'); + }); + }; + + SelectAdapter.prototype.bind = function (container, $container) { + var self = this; + + this.container = container; + + container.on('select', function (params) { + self.select(params.data); + }); + + container.on('unselect', function (params) { + self.unselect(params.data); + }); + }; + + SelectAdapter.prototype.destroy = function () { + // Remove anything added to child elements + this.$element.find('*').each(function () { + // Remove any custom data set by Select2 + $.removeData(this, 'data'); + }); + }; + + SelectAdapter.prototype.query = function (params, callback) { + var data = []; + var self = this; + + var $options = this.$element.children(); + + $options.each(function () { + var $option = $(this); + + if (!$option.is('option') && !$option.is('optgroup')) { + return; + } + + var option = self.item($option); + + var matches = self.matches(params, option); + + if (matches !== null) { + data.push(matches); + } + }); + + callback({ + results: data + }); + }; + + SelectAdapter.prototype.addOptions = function ($options) { + Utils.appendMany(this.$element, $options); + }; + + SelectAdapter.prototype.option = function (data) { + var option; + + if (data.children) { + option = document.createElement('optgroup'); + option.label = data.text; + } else { + option = document.createElement('option'); + + if (option.textContent !== undefined) { + option.textContent = data.text; + } else { + option.innerText = data.text; + } + } + + if (data.id) { + option.value = data.id; + } + + if (data.disabled) { + option.disabled = true; + } + + if (data.selected) { + option.selected = true; + } + + if (data.title) { + option.title = data.title; + } + + var $option = $(option); + + var normalizedData = this._normalizeItem(data); + normalizedData.element = option; + + // Override the option's data with the combined data + $.data(option, 'data', normalizedData); + + return $option; + }; + + SelectAdapter.prototype.item = function ($option) { + var data = {}; + + data = $.data($option[0], 'data'); + + if (data != null) { + return data; + } + + if ($option.is('option')) { + data = { + id: $option.val(), + text: $option.text(), + disabled: $option.prop('disabled'), + selected: $option.prop('selected'), + title: $option.prop('title') + }; + } else if ($option.is('optgroup')) { + data = { + text: $option.prop('label'), + children: [], + title: $option.prop('title') + }; + + var $children = $option.children('option'); + var children = []; + + for (var c = 0; c < $children.length; c++) { + var $child = $($children[c]); + + var child = this.item($child); + + children.push(child); + } + + data.children = children; + } + + data = this._normalizeItem(data); + data.element = $option[0]; + + $.data($option[0], 'data', data); + + return data; + }; + + SelectAdapter.prototype._normalizeItem = function (item) { + if (!$.isPlainObject(item)) { + item = { + id: item, + text: item + }; + } + + item = $.extend({}, { + text: '' + }, item); + + var defaults = { + selected: false, + disabled: false + }; + + if (item.id != null) { + item.id = item.id.toString(); + } + + if (item.text != null) { + item.text = item.text.toString(); + } + + if (item._resultId == null && item.id && this.container != null) { + item._resultId = this.generateResultId(this.container, item); + } + + return $.extend({}, defaults, item); + }; + + SelectAdapter.prototype.matches = function (params, data) { + var matcher = this.options.get('matcher'); + + return matcher(params, data); + }; + + return SelectAdapter; +}); + +S2.define('select2/data/array',[ + './select', + '../utils', + 'jquery' +], function (SelectAdapter, Utils, $) { + function ArrayAdapter ($element, options) { + var data = options.get('data') || []; + + ArrayAdapter.__super__.constructor.call(this, $element, options); + + this.addOptions(this.convertToOptions(data)); + } + + Utils.Extend(ArrayAdapter, SelectAdapter); + + ArrayAdapter.prototype.select = function (data) { + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); + + if ($option.length === 0) { + $option = this.option(data); + + this.addOptions($option); + } + + ArrayAdapter.__super__.select.call(this, data); + }; + + ArrayAdapter.prototype.convertToOptions = function (data) { + var self = this; + + var $existing = this.$element.find('option'); + var existingIds = $existing.map(function () { + return self.item($(this)).id; + }).get(); + + var $options = []; + + // Filter out all items except for the one passed in the argument + function onlyItem (item) { + return function () { + return $(this).val() == item.id; + }; + } + + for (var d = 0; d < data.length; d++) { + var item = this._normalizeItem(data[d]); + + // Skip items which were pre-loaded, only merge the data + if ($.inArray(item.id, existingIds) >= 0) { + var $existingOption = $existing.filter(onlyItem(item)); + + var existingData = this.item($existingOption); + var newData = $.extend(true, {}, item, existingData); + + var $newOption = this.option(newData); + + $existingOption.replaceWith($newOption); + + continue; + } + + var $option = this.option(item); + + if (item.children) { + var $children = this.convertToOptions(item.children); + + Utils.appendMany($option, $children); + } + + $options.push($option); + } + + return $options; + }; + + return ArrayAdapter; +}); + +S2.define('select2/data/ajax',[ + './array', + '../utils', + 'jquery' +], function (ArrayAdapter, Utils, $) { + function AjaxAdapter ($element, options) { + this.ajaxOptions = this._applyDefaults(options.get('ajax')); + + if (this.ajaxOptions.processResults != null) { + this.processResults = this.ajaxOptions.processResults; + } + + AjaxAdapter.__super__.constructor.call(this, $element, options); + } + + Utils.Extend(AjaxAdapter, ArrayAdapter); + + AjaxAdapter.prototype._applyDefaults = function (options) { + var defaults = { + data: function (params) { + return $.extend({}, params, { + q: params.term + }); + }, + transport: function (params, success, failure) { + var $request = $.ajax(params); + + $request.then(success); + $request.fail(failure); + + return $request; + } + }; + + return $.extend({}, defaults, options, true); + }; + + AjaxAdapter.prototype.processResults = function (results) { + return results; + }; + + AjaxAdapter.prototype.query = function (params, callback) { + var matches = []; + var self = this; + + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + + this._request = null; + } + + var options = $.extend({ + type: 'GET' + }, this.ajaxOptions); + + if (typeof options.url === 'function') { + options.url = options.url.call(this.$element, params); + } + + if (typeof options.data === 'function') { + options.data = options.data.call(this.$element, params); + } + + function request () { + var $request = options.transport(options, function (data) { + var results = self.processResults(data, params); + + if (self.options.get('debug') && window.console && console.error) { + // Check to make sure that the response included a `results` key. + if (!results || !results.results || !$.isArray(results.results)) { + console.error( + 'Select2: The AJAX results did not return an array in the ' + + '`results` key of the response.' + ); + } + } + + callback(results); + }, function () { + // Attempt to detect if a request was aborted + // Only works if the transport exposes a status property + if ($request.status && $request.status === '0') { + return; + } + + self.trigger('results:message', { + message: 'errorLoading' + }); + }); + + self._request = $request; + } + + if (this.ajaxOptions.delay && params.term != null) { + if (this._queryTimeout) { + window.clearTimeout(this._queryTimeout); + } + + this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); + } else { + request(); + } + }; + + return AjaxAdapter; +}); + +S2.define('select2/data/tags',[ + 'jquery' +], function ($) { + function Tags (decorated, $element, options) { + var tags = options.get('tags'); + + var createTag = options.get('createTag'); + + if (createTag !== undefined) { + this.createTag = createTag; + } + + var insertTag = options.get('insertTag'); + + if (insertTag !== undefined) { + this.insertTag = insertTag; + } + + decorated.call(this, $element, options); + + if ($.isArray(tags)) { + for (var t = 0; t < tags.length; t++) { + var tag = tags[t]; + var item = this._normalizeItem(tag); + + var $option = this.option(item); + + this.$element.append($option); + } + } + } + + Tags.prototype.query = function (decorated, params, callback) { + var self = this; + + this._removeOldTags(); + + if (params.term == null || params.page != null) { + decorated.call(this, params, callback); + return; + } + + function wrapper (obj, child) { + var data = obj.results; + + for (var i = 0; i < data.length; i++) { + var option = data[i]; + + var checkChildren = ( + option.children != null && + !wrapper({ + results: option.children + }, true) + ); + + var checkText = option.text === params.term; + + if (checkText || checkChildren) { + if (child) { + return false; + } + + obj.data = data; + callback(obj); + + return; + } + } + + if (child) { + return true; + } + + var tag = self.createTag(params); + + if (tag != null) { + var $option = self.option(tag); + $option.attr('data-select2-tag', true); + + self.addOptions([$option]); + + self.insertTag(data, tag); + } + + obj.results = data; + + callback(obj); + } + + decorated.call(this, params, wrapper); + }; + + Tags.prototype.createTag = function (decorated, params) { + var term = $.trim(params.term); + + if (term === '') { + return null; + } + + return { + id: term, + text: term + }; + }; + + Tags.prototype.insertTag = function (_, data, tag) { + data.unshift(tag); + }; + + Tags.prototype._removeOldTags = function (_) { + var tag = this._lastTag; + + var $options = this.$element.find('option[data-select2-tag]'); + + $options.each(function () { + if (this.selected) { + return; + } + + $(this).remove(); + }); + }; + + return Tags; +}); + +S2.define('select2/data/tokenizer',[ + 'jquery' +], function ($) { + function Tokenizer (decorated, $element, options) { + var tokenizer = options.get('tokenizer'); + + if (tokenizer !== undefined) { + this.tokenizer = tokenizer; + } + + decorated.call(this, $element, options); + } + + Tokenizer.prototype.bind = function (decorated, container, $container) { + decorated.call(this, container, $container); + + this.$search = container.dropdown.$search || container.selection.$search || + $container.find('.select2-search__field'); + }; + + Tokenizer.prototype.query = function (decorated, params, callback) { + var self = this; + + function createAndSelect (data) { + // Normalize the data object so we can use it for checks + var item = self._normalizeItem(data); + + // Check if the data object already exists as a tag + // Select it if it doesn't + var $existingOptions = self.$element.find('option').filter(function () { + return $(this).val() === item.id; + }); + + // If an existing option wasn't found for it, create the option + if (!$existingOptions.length) { + var $option = self.option(item); + $option.attr('data-select2-tag', true); + + self._removeOldTags(); + self.addOptions([$option]); + } + + // Select the item, now that we know there is an option for it + select(item); + } + + function select (data) { + self.trigger('select', { + data: data + }); + } + + params.term = params.term || ''; + + var tokenData = this.tokenizer(params, this.options, createAndSelect); + + if (tokenData.term !== params.term) { + // Replace the search term if we have the search box + if (this.$search.length) { + this.$search.val(tokenData.term); + this.$search.focus(); + } + + params.term = tokenData.term; + } + + decorated.call(this, params, callback); + }; + + Tokenizer.prototype.tokenizer = function (_, params, options, callback) { + var separators = options.get('tokenSeparators') || []; + var term = params.term; + var i = 0; + + var createTag = this.createTag || function (params) { + return { + id: params.term, + text: params.term + }; + }; + + while (i < term.length) { + var termChar = term[i]; + + if ($.inArray(termChar, separators) === -1) { + i++; + + continue; + } + + var part = term.substr(0, i); + var partParams = $.extend({}, params, { + term: part + }); + + var data = createTag(partParams); + + if (data == null) { + i++; + continue; + } + + callback(data); + + // Reset the term to not include the tokenized portion + term = term.substr(i + 1) || ''; + i = 0; + } + + return { + term: term + }; + }; + + return Tokenizer; +}); + +S2.define('select2/data/minimumInputLength',[ + +], function () { + function MinimumInputLength (decorated, $e, options) { + this.minimumInputLength = options.get('minimumInputLength'); + + decorated.call(this, $e, options); + } + + MinimumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (params.term.length < this.minimumInputLength) { + this.trigger('results:message', { + message: 'inputTooShort', + args: { + minimum: this.minimumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MinimumInputLength; +}); + +S2.define('select2/data/maximumInputLength',[ + +], function () { + function MaximumInputLength (decorated, $e, options) { + this.maximumInputLength = options.get('maximumInputLength'); + + decorated.call(this, $e, options); + } + + MaximumInputLength.prototype.query = function (decorated, params, callback) { + params.term = params.term || ''; + + if (this.maximumInputLength > 0 && + params.term.length > this.maximumInputLength) { + this.trigger('results:message', { + message: 'inputTooLong', + args: { + maximum: this.maximumInputLength, + input: params.term, + params: params + } + }); + + return; + } + + decorated.call(this, params, callback); + }; + + return MaximumInputLength; +}); + +S2.define('select2/data/maximumSelectionLength',[ + +], function (){ + function MaximumSelectionLength (decorated, $e, options) { + this.maximumSelectionLength = options.get('maximumSelectionLength'); + + decorated.call(this, $e, options); + } + + MaximumSelectionLength.prototype.query = + function (decorated, params, callback) { + var self = this; + + this.current(function (currentData) { + var count = currentData != null ? currentData.length : 0; + if (self.maximumSelectionLength > 0 && + count >= self.maximumSelectionLength) { + self.trigger('results:message', { + message: 'maximumSelected', + args: { + maximum: self.maximumSelectionLength + } + }); + return; + } + decorated.call(self, params, callback); + }); + }; + + return MaximumSelectionLength; +}); + +S2.define('select2/dropdown',[ + 'jquery', + './utils' +], function ($, Utils) { + function Dropdown ($element, options) { + this.$element = $element; + this.options = options; + + Dropdown.__super__.constructor.call(this); + } + + Utils.Extend(Dropdown, Utils.Observable); + + Dropdown.prototype.render = function () { + var $dropdown = $( + '<span class="select2-dropdown">' + + '<span class="select2-results"></span>' + + '</span>' + ); + + $dropdown.attr('dir', this.options.get('dir')); + + this.$dropdown = $dropdown; + + return $dropdown; + }; + + Dropdown.prototype.bind = function () { + // Should be implemented in subclasses + }; + + Dropdown.prototype.position = function ($dropdown, $container) { + // Should be implmented in subclasses + }; + + Dropdown.prototype.destroy = function () { + // Remove the dropdown from the DOM + this.$dropdown.remove(); + }; + + return Dropdown; +}); + +S2.define('select2/dropdown/search',[ + 'jquery', + '../utils' +], function ($, Utils) { + function Search () { } + + Search.prototype.render = function (decorated) { + var $rendered = decorated.call(this); + + var $search = $( + '<span class="select2-search select2-search--dropdown">' + + '<input class="select2-search__field" type="search" tabindex="-1"' + + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + + ' spellcheck="false" role="textbox" />' + + '</span>' + ); + + this.$searchContainer = $search; + this.$search = $search.find('input'); + + $rendered.prepend($search); + + return $rendered; + }; + + Search.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + this.$search.on('keydown', function (evt) { + self.trigger('keypress', evt); + + self._keyUpPrevented = evt.isDefaultPrevented(); + }); + + // Workaround for browsers which do not support the `input` event + // This will prevent double-triggering of events for browsers which support + // both the `keyup` and `input` events. + this.$search.on('input', function (evt) { + // Unbind the duplicated `keyup` event + $(this).off('keyup'); + }); + + this.$search.on('keyup input', function (evt) { + self.handleSearch(evt); + }); + + container.on('open', function () { + self.$search.attr('tabindex', 0); + + self.$search.focus(); + + window.setTimeout(function () { + self.$search.focus(); + }, 0); + }); + + container.on('close', function () { + self.$search.attr('tabindex', -1); + + self.$search.val(''); + }); + + container.on('focus', function () { + if (container.isOpen()) { + self.$search.focus(); + } + }); + + container.on('results:all', function (params) { + if (params.query.term == null || params.query.term === '') { + var showSearch = self.showSearch(params); + + if (showSearch) { + self.$searchContainer.removeClass('select2-search--hide'); + } else { + self.$searchContainer.addClass('select2-search--hide'); + } + } + }); + }; + + Search.prototype.handleSearch = function (evt) { + if (!this._keyUpPrevented) { + var input = this.$search.val(); + + this.trigger('query', { + term: input + }); + } + + this._keyUpPrevented = false; + }; + + Search.prototype.showSearch = function (_, params) { + return true; + }; + + return Search; +}); + +S2.define('select2/dropdown/hidePlaceholder',[ + +], function () { + function HidePlaceholder (decorated, $element, options, dataAdapter) { + this.placeholder = this.normalizePlaceholder(options.get('placeholder')); + + decorated.call(this, $element, options, dataAdapter); + } + + HidePlaceholder.prototype.append = function (decorated, data) { + data.results = this.removePlaceholder(data.results); + + decorated.call(this, data); + }; + + HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { + if (typeof placeholder === 'string') { + placeholder = { + id: '', + text: placeholder + }; + } + + return placeholder; + }; + + HidePlaceholder.prototype.removePlaceholder = function (_, data) { + var modifiedData = data.slice(0); + + for (var d = data.length - 1; d >= 0; d--) { + var item = data[d]; + + if (this.placeholder.id === item.id) { + modifiedData.splice(d, 1); + } + } + + return modifiedData; + }; + + return HidePlaceholder; +}); + +S2.define('select2/dropdown/infiniteScroll',[ + 'jquery' +], function ($) { + function InfiniteScroll (decorated, $element, options, dataAdapter) { + this.lastParams = {}; + + decorated.call(this, $element, options, dataAdapter); + + this.$loadingMore = this.createLoadingMore(); + this.loading = false; + } + + InfiniteScroll.prototype.append = function (decorated, data) { + this.$loadingMore.remove(); + this.loading = false; + + decorated.call(this, data); + + if (this.showLoadingMore(data)) { + this.$results.append(this.$loadingMore); + } + }; + + InfiniteScroll.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('query', function (params) { + self.lastParams = params; + self.loading = true; + }); + + container.on('query:append', function (params) { + self.lastParams = params; + self.loading = true; + }); + + this.$results.on('scroll', function () { + var isLoadMoreVisible = $.contains( + document.documentElement, + self.$loadingMore[0] + ); + + if (self.loading || !isLoadMoreVisible) { + return; + } + + var currentOffset = self.$results.offset().top + + self.$results.outerHeight(false); + var loadingMoreOffset = self.$loadingMore.offset().top + + self.$loadingMore.outerHeight(false); + + if (currentOffset + 50 >= loadingMoreOffset) { + self.loadMore(); + } + }); + }; + + InfiniteScroll.prototype.loadMore = function () { + this.loading = true; + + var params = $.extend({}, {page: 1}, this.lastParams); + + params.page++; + + this.trigger('query:append', params); + }; + + InfiniteScroll.prototype.showLoadingMore = function (_, data) { + return data.pagination && data.pagination.more; + }; + + InfiniteScroll.prototype.createLoadingMore = function () { + var $option = $( + '<li ' + + 'class="select2-results__option select2-results__option--load-more"' + + 'role="treeitem" aria-disabled="true"></li>' + ); + + var message = this.options.get('translations').get('loadingMore'); + + $option.html(message(this.lastParams)); + + return $option; + }; + + return InfiniteScroll; +}); + +S2.define('select2/dropdown/attachBody',[ + 'jquery', + '../utils' +], function ($, Utils) { + function AttachBody (decorated, $element, options) { + this.$dropdownParent = options.get('dropdownParent') || $(document.body); + + decorated.call(this, $element, options); + } + + AttachBody.prototype.bind = function (decorated, container, $container) { + var self = this; + + var setupResultsEvents = false; + + decorated.call(this, container, $container); + + container.on('open', function () { + self._showDropdown(); + self._attachPositioningHandler(container); + + if (!setupResultsEvents) { + setupResultsEvents = true; + + container.on('results:all', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + + container.on('results:append', function () { + self._positionDropdown(); + self._resizeDropdown(); + }); + } + }); + + container.on('close', function () { + self._hideDropdown(); + self._detachPositioningHandler(container); + }); + + this.$dropdownContainer.on('mousedown', function (evt) { + evt.stopPropagation(); + }); + }; + + AttachBody.prototype.destroy = function (decorated) { + decorated.call(this); + + this.$dropdownContainer.remove(); + }; + + AttachBody.prototype.position = function (decorated, $dropdown, $container) { + // Clone all of the container classes + $dropdown.attr('class', $container.attr('class')); + + $dropdown.removeClass('select2'); + $dropdown.addClass('select2-container--open'); + + $dropdown.css({ + position: 'absolute', + top: -999999 + }); + + this.$container = $container; + }; + + AttachBody.prototype.render = function (decorated) { + var $container = $('<span></span>'); + + var $dropdown = decorated.call(this); + $container.append($dropdown); + + this.$dropdownContainer = $container; + + return $container; + }; + + AttachBody.prototype._hideDropdown = function (decorated) { + this.$dropdownContainer.detach(); + }; + + AttachBody.prototype._attachPositioningHandler = + function (decorated, container) { + var self = this; + + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.each(function () { + $(this).data('select2-scroll-position', { + x: $(this).scrollLeft(), + y: $(this).scrollTop() + }); + }); + + $watchers.on(scrollEvent, function (ev) { + var position = $(this).data('select2-scroll-position'); + $(this).scrollTop(position.y); + }); + + $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, + function (e) { + self._positionDropdown(); + self._resizeDropdown(); + }); + }; + + AttachBody.prototype._detachPositioningHandler = + function (decorated, container) { + var scrollEvent = 'scroll.select2.' + container.id; + var resizeEvent = 'resize.select2.' + container.id; + var orientationEvent = 'orientationchange.select2.' + container.id; + + var $watchers = this.$container.parents().filter(Utils.hasScroll); + $watchers.off(scrollEvent); + + $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); + }; + + AttachBody.prototype._positionDropdown = function () { + var $window = $(window); + + var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); + var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); + + var newDirection = null; + + var offset = this.$container.offset(); + + offset.bottom = offset.top + this.$container.outerHeight(false); + + var container = { + height: this.$container.outerHeight(false) + }; + + container.top = offset.top; + container.bottom = offset.top + container.height; + + var dropdown = { + height: this.$dropdown.outerHeight(false) + }; + + var viewport = { + top: $window.scrollTop(), + bottom: $window.scrollTop() + $window.height() + }; + + var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); + var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); + + var css = { + left: offset.left, + top: container.bottom + }; + + // Determine what the parent element is to use for calciulating the offset + var $offsetParent = this.$dropdownParent; + + // For statically positoned elements, we need to get the element + // that is determining the offset + if ($offsetParent.css('position') === 'static') { + $offsetParent = $offsetParent.offsetParent(); + } + + var parentOffset = $offsetParent.offset(); + + css.top -= parentOffset.top; + css.left -= parentOffset.left; + + if (!isCurrentlyAbove && !isCurrentlyBelow) { + newDirection = 'below'; + } + + if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { + newDirection = 'above'; + } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { + newDirection = 'below'; + } + + if (newDirection == 'above' || + (isCurrentlyAbove && newDirection !== 'below')) { + css.top = container.top - parentOffset.top - dropdown.height; + } + + if (newDirection != null) { + this.$dropdown + .removeClass('select2-dropdown--below select2-dropdown--above') + .addClass('select2-dropdown--' + newDirection); + this.$container + .removeClass('select2-container--below select2-container--above') + .addClass('select2-container--' + newDirection); + } + + this.$dropdownContainer.css(css); + }; + + AttachBody.prototype._resizeDropdown = function () { + var css = { + width: this.$container.outerWidth(false) + 'px' + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.position = 'relative'; + css.width = 'auto'; + } + + this.$dropdown.css(css); + }; + + AttachBody.prototype._showDropdown = function (decorated) { + this.$dropdownContainer.appendTo(this.$dropdownParent); + + this._positionDropdown(); + this._resizeDropdown(); + }; + + return AttachBody; +}); + +S2.define('select2/dropdown/minimumResultsForSearch',[ + +], function () { + function countResults (data) { + var count = 0; + + for (var d = 0; d < data.length; d++) { + var item = data[d]; + + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + } + + return count; + } + + function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { + this.minimumResultsForSearch = options.get('minimumResultsForSearch'); + + if (this.minimumResultsForSearch < 0) { + this.minimumResultsForSearch = Infinity; + } + + decorated.call(this, $element, options, dataAdapter); + } + + MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { + if (countResults(params.data.results) < this.minimumResultsForSearch) { + return false; + } + + return decorated.call(this, params); + }; + + return MinimumResultsForSearch; +}); + +S2.define('select2/dropdown/selectOnClose',[ + +], function () { + function SelectOnClose () { } + + SelectOnClose.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('close', function (params) { + self._handleSelectOnClose(params); + }); + }; + + SelectOnClose.prototype._handleSelectOnClose = function (_, params) { + if (params && params.originalSelect2Event != null) { + var event = params.originalSelect2Event; + + // Don't select an item if the close event was triggered from a select or + // unselect event + if (event._type === 'select' || event._type === 'unselect') { + return; + } + } + + var $highlightedResults = this.getHighlightedResults(); + + // Only select highlighted results + if ($highlightedResults.length < 1) { + return; + } + + var data = $highlightedResults.data('data'); + + // Don't re-select already selected resulte + if ( + (data.element != null && data.element.selected) || + (data.element == null && data.selected) + ) { + return; + } + + this.trigger('select', { + data: data + }); + }; + + return SelectOnClose; +}); + +S2.define('select2/dropdown/closeOnSelect',[ + +], function () { + function CloseOnSelect () { } + + CloseOnSelect.prototype.bind = function (decorated, container, $container) { + var self = this; + + decorated.call(this, container, $container); + + container.on('select', function (evt) { + self._selectTriggered(evt); + }); + + container.on('unselect', function (evt) { + self._selectTriggered(evt); + }); + }; + + CloseOnSelect.prototype._selectTriggered = function (_, evt) { + var originalEvent = evt.originalEvent; + + // Don't close if the control key is being held + if (originalEvent && originalEvent.ctrlKey) { + return; + } + + this.trigger('close', { + originalEvent: originalEvent, + originalSelect2Event: evt + }); + }; + + return CloseOnSelect; +}); + +S2.define('select2/i18n/en',[],function () { + // English + return { + errorLoading: function () { + return 'The results could not be loaded.'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'Please delete ' + overChars + ' character'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'Please enter ' + remainingChars + ' or more characters'; + + return message; + }, + loadingMore: function () { + return 'Loading more results…'; + }, + maximumSelected: function (args) { + var message = 'You can only select ' + args.maximum + ' item'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'No results found'; + }, + searching: function () { + return 'Searching…'; + } + }; +}); + +S2.define('select2/defaults',[ + 'jquery', + 'require', + + './results', + + './selection/single', + './selection/multiple', + './selection/placeholder', + './selection/allowClear', + './selection/search', + './selection/eventRelay', + + './utils', + './translation', + './diacritics', + + './data/select', + './data/array', + './data/ajax', + './data/tags', + './data/tokenizer', + './data/minimumInputLength', + './data/maximumInputLength', + './data/maximumSelectionLength', + + './dropdown', + './dropdown/search', + './dropdown/hidePlaceholder', + './dropdown/infiniteScroll', + './dropdown/attachBody', + './dropdown/minimumResultsForSearch', + './dropdown/selectOnClose', + './dropdown/closeOnSelect', + + './i18n/en' +], function ($, require, + + ResultsList, + + SingleSelection, MultipleSelection, Placeholder, AllowClear, + SelectionSearch, EventRelay, + + Utils, Translation, DIACRITICS, + + SelectData, ArrayData, AjaxData, Tags, Tokenizer, + MinimumInputLength, MaximumInputLength, MaximumSelectionLength, + + Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, + AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, + + EnglishTranslation) { + function Defaults () { + this.reset(); + } + + Defaults.prototype.apply = function (options) { + options = $.extend(true, {}, this.defaults, options); + + if (options.dataAdapter == null) { + if (options.ajax != null) { + options.dataAdapter = AjaxData; + } else if (options.data != null) { + options.dataAdapter = ArrayData; + } else { + options.dataAdapter = SelectData; + } + + if (options.minimumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MinimumInputLength + ); + } + + if (options.maximumInputLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumInputLength + ); + } + + if (options.maximumSelectionLength > 0) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + MaximumSelectionLength + ); + } + + if (options.tags) { + options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); + } + + if (options.tokenSeparators != null || options.tokenizer != null) { + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Tokenizer + ); + } + + if (options.query != null) { + var Query = require(options.amdBase + 'compat/query'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + Query + ); + } + + if (options.initSelection != null) { + var InitSelection = require(options.amdBase + 'compat/initSelection'); + + options.dataAdapter = Utils.Decorate( + options.dataAdapter, + InitSelection + ); + } + } + + if (options.resultsAdapter == null) { + options.resultsAdapter = ResultsList; + + if (options.ajax != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + InfiniteScroll + ); + } + + if (options.placeholder != null) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + HidePlaceholder + ); + } + + if (options.selectOnClose) { + options.resultsAdapter = Utils.Decorate( + options.resultsAdapter, + SelectOnClose + ); + } + } + + if (options.dropdownAdapter == null) { + if (options.multiple) { + options.dropdownAdapter = Dropdown; + } else { + var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); + + options.dropdownAdapter = SearchableDropdown; + } + + if (options.minimumResultsForSearch !== 0) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + MinimumResultsForSearch + ); + } + + if (options.closeOnSelect) { + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + CloseOnSelect + ); + } + + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + AttachBody + ); + } + + if (options.selectionAdapter == null) { + if (options.multiple) { + options.selectionAdapter = MultipleSelection; + } else { + options.selectionAdapter = SingleSelection; + } + + // Add the placeholder mixin if a placeholder was specified + if (options.placeholder != null) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + Placeholder + ); + } + + if (options.allowClear) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + AllowClear + ); + } + + if (options.multiple) { + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + SelectionSearch + ); + } + + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + EventRelay + ); + } + + if (typeof options.language === 'string') { + // Check if the language is specified with a region + if (options.language.indexOf('-') > 0) { + // Extract the region information if it is included + var languageParts = options.language.split('-'); + var baseLanguage = languageParts[0]; + + options.language = [options.language, baseLanguage]; + } else { + options.language = [options.language]; + } + } + + if ($.isArray(options.language)) { + var languages = new Translation(); + options.language.push('en'); + + var languageNames = options.language; + + for (var l = 0; l < languageNames.length; l++) { + var name = languageNames[l]; + var language = {}; + + try { + // Try to load it with the original name + language = Translation.loadPath(name); + } catch (e) { + try { + // If we couldn't load it, check if it wasn't the full path + name = this.defaults.amdLanguageBase + name; + language = Translation.loadPath(name); + } catch (ex) { + // The translation could not be loaded at all. Sometimes this is + // because of a configuration problem, other times this can be + // because of how Select2 helps load all possible translation files. + if (options.debug && window.console && console.warn) { + console.warn( + 'Select2: The language file for "' + name + '" could not be ' + + 'automatically loaded. A fallback will be used instead.' + ); + } + + continue; + } + } + + languages.extend(language); + } + + options.translations = languages; + } else { + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; + } + + return options; + }; + + Defaults.prototype.reset = function () { + function stripDiacritics (text) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return text.replace(/[^\u0000-\u007E]/g, match); + } + + function matcher (params, data) { + // Always return the object if there is nothing to compare + if ($.trim(params.term) === '') { + return data; + } + + // Do a recursive check for options with children + if (data.children && data.children.length > 0) { + // Clone the data object if there are children + // This is required as we modify the object to remove any non-matches + var match = $.extend(true, {}, data); + + // Check each child of the option + for (var c = data.children.length - 1; c >= 0; c--) { + var child = data.children[c]; + + var matches = matcher(params, child); + + // If there wasn't a match, remove the object in the array + if (matches == null) { + match.children.splice(c, 1); + } + } + + // If any children matched, return the new object + if (match.children.length > 0) { + return match; + } + + // If there were no matching children, check just the plain object + return matcher(params, match); + } + + var original = stripDiacritics(data.text).toUpperCase(); + var term = stripDiacritics(params.term).toUpperCase(); + + // Check if the text contains the term + if (original.indexOf(term) > -1) { + return data; + } + + // If it doesn't contain the term, don't return anything + return null; + } + + this.defaults = { + amdBase: './', + amdLanguageBase: './i18n/', + closeOnSelect: true, + debug: false, + dropdownAutoWidth: false, + escapeMarkup: Utils.escapeMarkup, + language: EnglishTranslation, + matcher: matcher, + minimumInputLength: 0, + maximumInputLength: 0, + maximumSelectionLength: 0, + minimumResultsForSearch: 0, + selectOnClose: false, + sorter: function (data) { + return data; + }, + templateResult: function (result) { + return result.text; + }, + templateSelection: function (selection) { + return selection.text; + }, + theme: 'default', + width: 'resolve' + }; + }; + + Defaults.prototype.set = function (key, value) { + var camelKey = $.camelCase(key); + + var data = {}; + data[camelKey] = value; + + var convertedData = Utils._convertData(data); + + $.extend(this.defaults, convertedData); + }; + + var defaults = new Defaults(); + + return defaults; +}); + +S2.define('select2/options',[ + 'require', + 'jquery', + './defaults', + './utils' +], function (require, $, Defaults, Utils) { + function Options (options, $element) { + this.options = options; + + if ($element != null) { + this.fromElement($element); + } + + this.options = Defaults.apply(this.options); + + if ($element && $element.is('input')) { + var InputCompat = require(this.get('amdBase') + 'compat/inputData'); + + this.options.dataAdapter = Utils.Decorate( + this.options.dataAdapter, + InputCompat + ); + } + } + + Options.prototype.fromElement = function ($e) { + var excludedData = ['select2']; + + if (this.options.multiple == null) { + this.options.multiple = $e.prop('multiple'); + } + + if (this.options.disabled == null) { + this.options.disabled = $e.prop('disabled'); + } + + if (this.options.language == null) { + if ($e.prop('lang')) { + this.options.language = $e.prop('lang').toLowerCase(); + } else if ($e.closest('[lang]').prop('lang')) { + this.options.language = $e.closest('[lang]').prop('lang'); + } + } + + if (this.options.dir == null) { + if ($e.prop('dir')) { + this.options.dir = $e.prop('dir'); + } else if ($e.closest('[dir]').prop('dir')) { + this.options.dir = $e.closest('[dir]').prop('dir'); + } else { + this.options.dir = 'ltr'; + } + } + + $e.prop('disabled', this.options.disabled); + $e.prop('multiple', this.options.multiple); + + if ($e.data('select2Tags')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-select2-tags` attribute has been changed to ' + + 'use the `data-data` and `data-tags="true"` attributes and will be ' + + 'removed in future versions of Select2.' + ); + } + + $e.data('data', $e.data('select2Tags')); + $e.data('tags', true); + } + + if ($e.data('ajaxUrl')) { + if (this.options.debug && window.console && console.warn) { + console.warn( + 'Select2: The `data-ajax-url` attribute has been changed to ' + + '`data-ajax--url` and support for the old attribute will be removed' + + ' in future versions of Select2.' + ); + } + + $e.attr('ajax--url', $e.data('ajaxUrl')); + $e.data('ajax--url', $e.data('ajaxUrl')); + } + + var dataset = {}; + + // Prefer the element's `dataset` attribute if it exists + // jQuery 1.x does not correctly handle data attributes with multiple dashes + if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { + dataset = $.extend(true, {}, $e[0].dataset, $e.data()); + } else { + dataset = $e.data(); + } + + var data = $.extend(true, {}, dataset); + + data = Utils._convertData(data); + + for (var key in data) { + if ($.inArray(key, excludedData) > -1) { + continue; + } + + if ($.isPlainObject(this.options[key])) { + $.extend(this.options[key], data[key]); + } else { + this.options[key] = data[key]; + } + } + + return this; + }; + + Options.prototype.get = function (key) { + return this.options[key]; + }; + + Options.prototype.set = function (key, val) { + this.options[key] = val; + }; + + return Options; +}); + +S2.define('select2/core',[ + 'jquery', + './options', + './utils', + './keys' +], function ($, Options, Utils, KEYS) { + var Select2 = function ($element, options) { + if ($element.data('select2') != null) { + $element.data('select2').destroy(); + } + + this.$element = $element; + + this.id = this._generateId($element); + + options = options || {}; + + this.options = new Options(options, $element); + + Select2.__super__.constructor.call(this); + + // Set up the tabindex + + var tabindex = $element.attr('tabindex') || 0; + $element.data('old-tabindex', tabindex); + $element.attr('tabindex', '-1'); + + // Set up containers and adapters + + var DataAdapter = this.options.get('dataAdapter'); + this.dataAdapter = new DataAdapter($element, this.options); + + var $container = this.render(); + + this._placeContainer($container); + + var SelectionAdapter = this.options.get('selectionAdapter'); + this.selection = new SelectionAdapter($element, this.options); + this.$selection = this.selection.render(); + + this.selection.position(this.$selection, $container); + + var DropdownAdapter = this.options.get('dropdownAdapter'); + this.dropdown = new DropdownAdapter($element, this.options); + this.$dropdown = this.dropdown.render(); + + this.dropdown.position(this.$dropdown, $container); + + var ResultsAdapter = this.options.get('resultsAdapter'); + this.results = new ResultsAdapter($element, this.options, this.dataAdapter); + this.$results = this.results.render(); + + this.results.position(this.$results, this.$dropdown); + + // Bind events + + var self = this; + + // Bind the container to all of the adapters + this._bindAdapters(); + + // Register any DOM event handlers + this._registerDomEvents(); + + // Register any internal event handlers + this._registerDataEvents(); + this._registerSelectionEvents(); + this._registerDropdownEvents(); + this._registerResultsEvents(); + this._registerEvents(); + + // Set the initial state + this.dataAdapter.current(function (initialData) { + self.trigger('selection:update', { + data: initialData + }); + }); + + // Hide the original select + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + + // Synchronize any monitored attributes + this._syncAttributes(); + + $element.data('select2', this); + }; + + Utils.Extend(Select2, Utils.Observable); + + Select2.prototype._generateId = function ($element) { + var id = ''; + + if ($element.attr('id') != null) { + id = $element.attr('id'); + } else if ($element.attr('name') != null) { + id = $element.attr('name') + '-' + Utils.generateChars(2); + } else { + id = Utils.generateChars(4); + } + + id = id.replace(/(:|\.|\[|\]|,)/g, ''); + id = 'select2-' + id; + + return id; + }; + + Select2.prototype._placeContainer = function ($container) { + $container.insertAfter(this.$element); + + var width = this._resolveWidth(this.$element, this.options.get('width')); + + if (width != null) { + $container.css('width', width); + } + }; + + Select2.prototype._resolveWidth = function ($element, method) { + var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; + + if (method == 'resolve') { + var styleWidth = this._resolveWidth($element, 'style'); + + if (styleWidth != null) { + return styleWidth; + } + + return this._resolveWidth($element, 'element'); + } + + if (method == 'element') { + var elementWidth = $element.outerWidth(false); + + if (elementWidth <= 0) { + return 'auto'; + } + + return elementWidth + 'px'; + } + + if (method == 'style') { + var style = $element.attr('style'); + + if (typeof(style) !== 'string') { + return null; + } + + var attrs = style.split(';'); + + for (var i = 0, l = attrs.length; i < l; i = i + 1) { + var attr = attrs[i].replace(/\s/g, ''); + var matches = attr.match(WIDTH); + + if (matches !== null && matches.length >= 1) { + return matches[1]; + } + } + + return null; + } + + return method; + }; + + Select2.prototype._bindAdapters = function () { + this.dataAdapter.bind(this, this.$container); + this.selection.bind(this, this.$container); + + this.dropdown.bind(this, this.$container); + this.results.bind(this, this.$container); + }; + + Select2.prototype._registerDomEvents = function () { + var self = this; + + this.$element.on('change.select2', function () { + self.dataAdapter.current(function (data) { + self.trigger('selection:update', { + data: data + }); + }); + }); + + this.$element.on('focus.select2', function (evt) { + self.trigger('focus', evt); + }); + + this._syncA = Utils.bind(this._syncAttributes, this); + this._syncS = Utils.bind(this._syncSubtree, this); + + if (this.$element[0].attachEvent) { + this.$element[0].attachEvent('onpropertychange', this._syncA); + } + + var observer = window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver + ; + + if (observer != null) { + this._observer = new observer(function (mutations) { + $.each(mutations, self._syncA); + $.each(mutations, self._syncS); + }); + this._observer.observe(this.$element[0], { + attributes: true, + childList: true, + subtree: false + }); + } else if (this.$element[0].addEventListener) { + this.$element[0].addEventListener( + 'DOMAttrModified', + self._syncA, + false + ); + this.$element[0].addEventListener( + 'DOMNodeInserted', + self._syncS, + false + ); + this.$element[0].addEventListener( + 'DOMNodeRemoved', + self._syncS, + false + ); + } + }; + + Select2.prototype._registerDataEvents = function () { + var self = this; + + this.dataAdapter.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerSelectionEvents = function () { + var self = this; + var nonRelayEvents = ['toggle', 'focus']; + + this.selection.on('toggle', function () { + self.toggleDropdown(); + }); + + this.selection.on('focus', function (params) { + self.focus(params); + }); + + this.selection.on('*', function (name, params) { + if ($.inArray(name, nonRelayEvents) !== -1) { + return; + } + + self.trigger(name, params); + }); + }; + + Select2.prototype._registerDropdownEvents = function () { + var self = this; + + this.dropdown.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerResultsEvents = function () { + var self = this; + + this.results.on('*', function (name, params) { + self.trigger(name, params); + }); + }; + + Select2.prototype._registerEvents = function () { + var self = this; + + this.on('open', function () { + self.$container.addClass('select2-container--open'); + }); + + this.on('close', function () { + self.$container.removeClass('select2-container--open'); + }); + + this.on('enable', function () { + self.$container.removeClass('select2-container--disabled'); + }); + + this.on('disable', function () { + self.$container.addClass('select2-container--disabled'); + }); + + this.on('blur', function () { + self.$container.removeClass('select2-container--focus'); + }); + + this.on('query', function (params) { + if (!self.isOpen()) { + self.trigger('open', {}); + } + + this.dataAdapter.query(params, function (data) { + self.trigger('results:all', { + data: data, + query: params + }); + }); + }); + + this.on('query:append', function (params) { + this.dataAdapter.query(params, function (data) { + self.trigger('results:append', { + data: data, + query: params + }); + }); + }); + + this.on('keypress', function (evt) { + var key = evt.which; + + if (self.isOpen()) { + if (key === KEYS.ESC || key === KEYS.TAB || + (key === KEYS.UP && evt.altKey)) { + self.close(); + + evt.preventDefault(); + } else if (key === KEYS.ENTER) { + self.trigger('results:select', {}); + + evt.preventDefault(); + } else if ((key === KEYS.SPACE && evt.ctrlKey)) { + self.trigger('results:toggle', {}); + + evt.preventDefault(); + } else if (key === KEYS.UP) { + self.trigger('results:previous', {}); + + evt.preventDefault(); + } else if (key === KEYS.DOWN) { + self.trigger('results:next', {}); + + evt.preventDefault(); + } + } else { + if (key === KEYS.ENTER || key === KEYS.SPACE || + (key === KEYS.DOWN && evt.altKey)) { + self.open(); + + evt.preventDefault(); + } + } + }); + }; + + Select2.prototype._syncAttributes = function () { + this.options.set('disabled', this.$element.prop('disabled')); + + if (this.options.get('disabled')) { + if (this.isOpen()) { + this.close(); + } + + this.trigger('disable', {}); + } else { + this.trigger('enable', {}); + } + }; + + Select2.prototype._syncSubtree = function (evt, mutations) { + var changed = false; + var self = this; + + // Ignore any mutation events raised for elements that aren't options or + // optgroups. This handles the case when the select element is destroyed + if ( + evt && evt.target && ( + evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' + ) + ) { + return; + } + + if (!mutations) { + // If mutation events aren't supported, then we can only assume that the + // change affected the selections + changed = true; + } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { + for (var n = 0; n < mutations.addedNodes.length; n++) { + var node = mutations.addedNodes[n]; + + if (node.selected) { + changed = true; + } + } + } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { + changed = true; + } + + // Only re-pull the data if we think there is a change + if (changed) { + this.dataAdapter.current(function (currentData) { + self.trigger('selection:update', { + data: currentData + }); + }); + } + }; + + /** + * Override the trigger method to automatically trigger pre-events when + * there are events that can be prevented. + */ + Select2.prototype.trigger = function (name, args) { + var actualTrigger = Select2.__super__.trigger; + var preTriggerMap = { + 'open': 'opening', + 'close': 'closing', + 'select': 'selecting', + 'unselect': 'unselecting' + }; + + if (args === undefined) { + args = {}; + } + + if (name in preTriggerMap) { + var preTriggerName = preTriggerMap[name]; + var preTriggerArgs = { + prevented: false, + name: name, + args: args + }; + + actualTrigger.call(this, preTriggerName, preTriggerArgs); + + if (preTriggerArgs.prevented) { + args.prevented = true; + + return; + } + } + + actualTrigger.call(this, name, args); + }; + + Select2.prototype.toggleDropdown = function () { + if (this.options.get('disabled')) { + return; + } + + if (this.isOpen()) { + this.close(); + } else { + this.open(); + } + }; + + Select2.prototype.open = function () { + if (this.isOpen()) { + return; + } + + this.trigger('query', {}); + }; + + Select2.prototype.close = function () { + if (!this.isOpen()) { + return; + } + + this.trigger('close', {}); + }; + + Select2.prototype.isOpen = function () { + return this.$container.hasClass('select2-container--open'); + }; + + Select2.prototype.hasFocus = function () { + return this.$container.hasClass('select2-container--focus'); + }; + + Select2.prototype.focus = function (data) { + // No need to re-trigger focus events if we are already focused + if (this.hasFocus()) { + return; + } + + this.$container.addClass('select2-container--focus'); + this.trigger('focus', {}); + }; + + Select2.prototype.enable = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("enable")` method has been deprecated and will' + + ' be removed in later Select2 versions. Use $element.prop("disabled")' + + ' instead.' + ); + } + + if (args == null || args.length === 0) { + args = [true]; + } + + var disabled = !args[0]; + + this.$element.prop('disabled', disabled); + }; + + Select2.prototype.data = function () { + if (this.options.get('debug') && + arguments.length > 0 && window.console && console.warn) { + console.warn( + 'Select2: Data can no longer be set using `select2("data")`. You ' + + 'should consider setting the value instead using `$element.val()`.' + ); + } + + var data = []; + + this.dataAdapter.current(function (currentData) { + data = currentData; + }); + + return data; + }; + + Select2.prototype.val = function (args) { + if (this.options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `select2("val")` method has been deprecated and will be' + + ' removed in later Select2 versions. Use $element.val() instead.' + ); + } + + if (args == null || args.length === 0) { + return this.$element.val(); + } + + var newVal = args[0]; + + if ($.isArray(newVal)) { + newVal = $.map(newVal, function (obj) { + return obj.toString(); + }); + } + + this.$element.val(newVal).trigger('change'); + }; + + Select2.prototype.destroy = function () { + this.$container.remove(); + + if (this.$element[0].detachEvent) { + this.$element[0].detachEvent('onpropertychange', this._syncA); + } + + if (this._observer != null) { + this._observer.disconnect(); + this._observer = null; + } else if (this.$element[0].removeEventListener) { + this.$element[0] + .removeEventListener('DOMAttrModified', this._syncA, false); + this.$element[0] + .removeEventListener('DOMNodeInserted', this._syncS, false); + this.$element[0] + .removeEventListener('DOMNodeRemoved', this._syncS, false); + } + + this._syncA = null; + this._syncS = null; + + this.$element.off('.select2'); + this.$element.attr('tabindex', this.$element.data('old-tabindex')); + + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); + this.$element.removeData('select2'); + + this.dataAdapter.destroy(); + this.selection.destroy(); + this.dropdown.destroy(); + this.results.destroy(); + + this.dataAdapter = null; + this.selection = null; + this.dropdown = null; + this.results = null; + }; + + Select2.prototype.render = function () { + var $container = $( + '<span class="select2 select2-container">' + + '<span class="selection"></span>' + + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + + '</span>' + ); + + $container.attr('dir', this.options.get('dir')); + + this.$container = $container; + + this.$container.addClass('select2-container--' + this.options.get('theme')); + + $container.data('element', this.$element); + + return $container; + }; + + return Select2; +}); + +S2.define('jquery-mousewheel',[ + 'jquery' +], function ($) { + // Used to shim jQuery.mousewheel for non-full builds. + return $; +}); + +S2.define('jquery.select2',[ + 'jquery', + 'jquery-mousewheel', + + './select2/core', + './select2/defaults' +], function ($, _, Select2, Defaults) { + if ($.fn.select2 == null) { + // All methods that should return the element + var thisMethods = ['open', 'close', 'destroy']; + + $.fn.select2 = function (options) { + options = options || {}; + + if (typeof options === 'object') { + this.each(function () { + var instanceOptions = $.extend(true, {}, options); + + var instance = new Select2($(this), instanceOptions); + }); + + return this; + } else if (typeof options === 'string') { + var ret; + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var instance = $(this).data('select2'); + + if (instance == null && window.console && console.error) { + console.error( + 'The select2(\'' + options + '\') method was called on an ' + + 'element that is not using Select2.' + ); + } + + ret = instance[options].apply(instance, args); + }); + + // Check if we should be returning `this` + if ($.inArray(options, thisMethods) > -1) { + return this; + } + + return ret; + } else { + throw new Error('Invalid arguments for Select2: ' + options); + } + }; + } + + if ($.fn.select2.defaults == null) { + $.fn.select2.defaults = Defaults; + } + + return Select2; +}); + + // Return the AMD loader configuration so it can be used outside of this file + return { + define: S2.define, + require: S2.require + }; +}()); + + // Autoload the jQuery bindings + // We know that all of the modules exist above this, so we're safe + var select2 = S2.require('jquery.select2'); + + // Hold the AMD module references on the jQuery function that was just loaded + // This allows Select2 to use the internal loader outside of this file, such + // as in the language files. + jQuery.fn.select2.amd = S2; + + // Return the Select2 instance for anyone who is importing it. + return select2; +})); diff --git a/plugins/select2/js/select2.min.js b/plugins/select2/js/select2.min.js new file mode 100644 index 0000000..43f0a65 --- /dev/null +++ b/plugins/select2/js/select2.min.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var 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","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"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","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"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","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"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","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"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","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"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","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); +if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; +},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); \ No newline at end of file diff --git a/plugins/summernote/font/summernote.eot b/plugins/summernote/font/summernote.eot new file mode 100644 index 0000000..738da08 Binary files /dev/null and b/plugins/summernote/font/summernote.eot differ diff --git a/plugins/summernote/font/summernote.ttf b/plugins/summernote/font/summernote.ttf new file mode 100644 index 0000000..7d6d052 Binary files /dev/null and b/plugins/summernote/font/summernote.ttf differ diff --git a/plugins/summernote/font/summernote.woff b/plugins/summernote/font/summernote.woff new file mode 100644 index 0000000..d72d990 Binary files /dev/null and b/plugins/summernote/font/summernote.woff differ diff --git a/plugins/summernote/lang/summernote-ar-AR.js b/plugins/summernote/lang/summernote-ar-AR.js new file mode 100644 index 0000000..ac6e6b5 --- /dev/null +++ b/plugins/summernote/lang/summernote-ar-AR.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ar-AR': { + font: { + bold: 'عريض', + italic: 'مائل', + underline: 'تحته خط', + clear: 'مسح التنسيق', + height: 'إرتفاع السطر', + name: 'الخط', + strikethrough: 'فى وسطه خط', + size: 'الحجم' + }, + image: { + image: 'صورة', + insert: 'إضافة صورة', + resizeFull: 'الحجم بالكامل', + resizeHalf: 'تصغير للنصف', + resizeQuarter: 'تصغير للربع', + floatLeft: 'تطيير لليسار', + floatRight: 'تطيير لليمين', + floatNone: 'ثابته', + dragImageHere: 'إدرج الصورة هنا', + selectFromFiles: 'حدد ملف', + url: 'رابط الصورة', + remove: 'حذف الصورة' + }, + video: { + video: 'فيديو', + videoLink: 'رابط الفيديو', + insert: 'إدراج الفيديو', + url: 'رابط الفيديو', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'رابط رابط', + insert: 'إدراج', + unlink: 'حذف الرابط', + edit: 'تعديل', + textToDisplay: 'النص', + url: 'مسار الرابط', + openInNewWindow: 'فتح في نافذة جديدة' + }, + table: { + table: 'جدول' + }, + hr: { + insert: 'إدراج خط أفقي' + }, + style: { + style: 'تنسيق', + p: 'عادي', + blockquote: 'إقتباس', + pre: 'شفيرة', + h1: 'عنوان رئيسي 1', + h2: 'عنوان رئيسي 2', + h3: 'عنوان رئيسي 3', + h4: 'عنوان رئيسي 4', + h5: 'عنوان رئيسي 5', + h6: 'عنوان رئيسي 6' + }, + lists: { + unordered: 'قائمة مُنقطة', + ordered: 'قائمة مُرقمة' + }, + options: { + help: 'مساعدة', + fullscreen: 'حجم الشاشة بالكامل', + codeview: 'شفيرة المصدر' + }, + paragraph: { + paragraph: 'فقرة', + outdent: 'محاذاة للخارج', + indent: 'محاذاة للداخل', + left: 'محاذاة لليسار', + center: 'توسيط', + right: 'محاذاة لليمين', + justify: 'ملئ السطر' + }, + color: { + recent: 'تم إستخدامه', + more: 'المزيد', + background: 'لون الخلفية', + foreground: 'لون النص', + transparent: 'شفاف', + setTransparent: 'بدون خلفية', + reset: 'إعادة الضبط', + resetToDefault: 'إعادة الضبط' + }, + shortcut: { + shortcuts: 'إختصارات', + close: 'غلق', + textFormatting: 'تنسيق النص', + action: 'Action', + paragraphFormatting: 'تنسيق الفقرة', + documentStyle: 'تنسيق المستند' + }, + history: { + undo: 'تراجع', + redo: 'إعادة' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ar-AR.min.js b/plugins/summernote/lang/summernote-ar-AR.min.js new file mode 100644 index 0000000..80b23a9 --- /dev/null +++ b/plugins/summernote/lang/summernote-ar-AR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ar-AR":{font:{bold:"عريض",italic:"مائل",underline:"تحته خط",clear:"مسح التنسيق",height:"إرتفاع السطر",name:"الخط",strikethrough:"فى وسطه خط",size:"الحجم"},image:{image:"صورة",insert:"إضافة صورة",resizeFull:"الحجم بالكامل",resizeHalf:"تصغير للنصف",resizeQuarter:"تصغير للربع",floatLeft:"تطيير لليسار",floatRight:"تطيير لليمين",floatNone:"ثابته",dragImageHere:"إدرج الصورة هنا",selectFromFiles:"حدد ملف",url:"رابط الصورة",remove:"حذف الصورة"},video:{video:"فيديو",videoLink:"رابط الفيديو",insert:"إدراج الفيديو",url:"رابط الفيديو",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"رابط رابط",insert:"إدراج",unlink:"حذف الرابط",edit:"تعديل",textToDisplay:"النص",url:"مسار الرابط",openInNewWindow:"فتح في نافذة جديدة"},table:{table:"جدول"},hr:{insert:"إدراج خط أفقي"},style:{style:"تنسيق",p:"عادي",blockquote:"إقتباس",pre:"شفيرة",h1:"عنوان رئيسي 1",h2:"عنوان رئيسي 2",h3:"عنوان رئيسي 3",h4:"عنوان رئيسي 4",h5:"عنوان رئيسي 5",h6:"عنوان رئيسي 6"},lists:{unordered:"قائمة مُنقطة",ordered:"قائمة مُرقمة"},options:{help:"مساعدة",fullscreen:"حجم الشاشة بالكامل",codeview:"شفيرة المصدر"},paragraph:{paragraph:"فقرة",outdent:"محاذاة للخارج",indent:"محاذاة للداخل",left:"محاذاة لليسار",center:"توسيط",right:"محاذاة لليمين",justify:"ملئ السطر"},color:{recent:"تم إستخدامه",more:"المزيد",background:"لون الخلفية",foreground:"لون النص",transparent:"شفاف",setTransparent:"بدون خلفية",reset:"إعادة الضبط",resetToDefault:"إعادة الضبط"},shortcut:{shortcuts:"إختصارات",close:"غلق",textFormatting:"تنسيق النص",action:"Action",paragraphFormatting:"تنسيق الفقرة",documentStyle:"تنسيق المستند"},history:{undo:"تراجع",redo:"إعادة"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-bg-BG.js b/plugins/summernote/lang/summernote-bg-BG.js new file mode 100644 index 0000000..daefd20 --- /dev/null +++ b/plugins/summernote/lang/summernote-bg-BG.js @@ -0,0 +1,99 @@ +(function ($) { + $.extend($.summernote.lang, { + 'bg-BG': { + font: { + bold: 'Удебелен', + italic: 'Наклонен', + underline: 'Подчертан', + clear: 'Изчисти стиловете', + height: 'Височина', + name: 'Шрифт', + strikethrough: 'Задраскано', + subscript: 'Долен индекс', + superscript: 'Горен индекс', + size: 'Размер на шрифта' + }, + image: { + image: 'Изображение', + insert: 'Постави картинка', + resizeFull: 'Цял размер', + resizeHalf: 'Размер на 50%', + resizeQuarter: 'Размер на 25%', + floatLeft: 'Подравни в ляво', + floatRight: 'Подравни в дясно', + floatNone: 'Без подравняване', + dragImageHere: 'Пуснете изображението тук', + selectFromFiles: 'Изберете файл', + url: 'URL адрес на изображение', + remove: 'Премахни изображение' + }, + link: { + link: 'Връзка', + insert: 'Добави връзка', + unlink: 'Премахни връзка', + edit: 'Промени', + textToDisplay: 'Текст за показване', + url: 'URL адрес', + openInNewWindow: 'Отвори в нов прозорец' + }, + table: { + table: 'Таблица' + }, + hr: { + insert: 'Добави хоризонтална линия' + }, + style: { + style: 'Стил', + p: 'Нормален', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавие 1', + h2: 'Заглавие 2', + h3: 'Заглавие 3', + h4: 'Заглавие 4', + h5: 'Заглавие 5', + h6: 'Заглавие 6' + }, + lists: { + unordered: 'Символен списък', + ordered: 'Цифров списък' + }, + options: { + help: 'Помощ', + fullscreen: 'На цял екран', + codeview: 'Преглед на код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Намаляване на отстъпа', + indent: 'Абзац', + left: 'Подравняване в ляво', + center: 'Център', + right: 'Подравняване в дясно', + justify: 'Разтягане по ширина' + }, + color: { + recent: 'Последния избран цвят', + more: 'Още цветове', + background: 'Цвят на фона', + foreground: 'Цвят на шрифта', + transparent: 'Прозрачен', + setTransparent: 'Направете прозрачен', + reset: 'Възстанови', + resetToDefault: 'Възстанови оригиналните' + }, + shortcut: { + shortcuts: 'Клавишни комбинации', + close: 'Затвори', + textFormatting: 'Форматиране на текста', + action: 'Действие', + paragraphFormatting: 'Форматиране на параграф', + documentStyle: 'Стил на документа' + }, + history: { + undo: 'Назад', + redo: 'Напред' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-bg-BG.min.js b/plugins/summernote/lang/summernote-bg-BG.min.js new file mode 100644 index 0000000..8827456 --- /dev/null +++ b/plugins/summernote/lang/summernote-bg-BG.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"bg-BG":{font:{bold:"Удебелен",italic:"Наклонен",underline:"Подчертан",clear:"Изчисти стиловете",height:"Височина",name:"Шрифт",strikethrough:"Задраскано",subscript:"Долен индекс",superscript:"Горен индекс",size:"Размер на шрифта"},image:{image:"Изображение",insert:"Постави картинка",resizeFull:"Цял размер",resizeHalf:"Размер на 50%",resizeQuarter:"Размер на 25%",floatLeft:"Подравни в ляво",floatRight:"Подравни в дясно",floatNone:"Без подравняване",dragImageHere:"Пуснете изображението тук",selectFromFiles:"Изберете файл",url:"URL адрес на изображение",remove:"Премахни изображение"},link:{link:"Връзка",insert:"Добави връзка",unlink:"Премахни връзка",edit:"Промени",textToDisplay:"Текст за показване",url:"URL адрес",openInNewWindow:"Отвори в нов прозорец"},table:{table:"Таблица"},hr:{insert:"Добави хоризонтална линия"},style:{style:"Стил",p:"Нормален",blockquote:"Цитат",pre:"Код",h1:"Заглавие 1",h2:"Заглавие 2",h3:"Заглавие 3",h4:"Заглавие 4",h5:"Заглавие 5",h6:"Заглавие 6"},lists:{unordered:"Символен списък",ordered:"Цифров списък"},options:{help:"Помощ",fullscreen:"На цял екран",codeview:"Преглед на код"},paragraph:{paragraph:"Параграф",outdent:"Намаляване на отстъпа",indent:"Абзац",left:"Подравняване в ляво",center:"Център",right:"Подравняване в дясно",justify:"Разтягане по ширина"},color:{recent:"Последния избран цвят",more:"Още цветове",background:"Цвят на фона",foreground:"Цвят на шрифта",transparent:"Прозрачен",setTransparent:"Направете прозрачен",reset:"Възстанови",resetToDefault:"Възстанови оригиналните"},shortcut:{shortcuts:"Клавишни комбинации",close:"Затвори",textFormatting:"Форматиране на текста",action:"Действие",paragraphFormatting:"Форматиране на параграф",documentStyle:"Стил на документа"},history:{undo:"Назад",redo:"Напред"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-ca-ES.js b/plugins/summernote/lang/summernote-ca-ES.js new file mode 100644 index 0000000..04978a1 --- /dev/null +++ b/plugins/summernote/lang/summernote-ca-ES.js @@ -0,0 +1,147 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ca-ES': { + font: { + bold: 'Negreta', + italic: 'Cursiva', + underline: 'Subratllat', + clear: 'Treure estil de lletra', + height: 'Alçada de línia', + name: 'Font', + strikethrough: 'Ratllat', + subscript: 'Subíndex', + superscript: 'Superíndex', + size: 'Mida de lletra' + }, + image: { + image: 'Imatge', + insert: 'Inserir imatge', + resizeFull: 'Redimensionar a mida completa', + resizeHalf: 'Redimensionar a la meitat', + resizeQuarter: 'Redimensionar a un quart', + floatLeft: 'Alinear a l\'esquerra', + floatRight: 'Alinear a la dreta', + floatNone: 'No alinear', + shapeRounded: 'Forma: Arrodonit', + shapeCircle: 'Forma: Cercle', + shapeThumbnail: 'Forma: Marc', + shapeNone: 'Forma: Cap', + dragImageHere: 'Arrossegueu una imatge o text aquí', + dropImage: 'Deixa anar aquí una imatge o un text', + selectFromFiles: 'Seleccioneu des dels arxius', + maximumFileSize: 'Mida màxima de l\'arxiu', + maximumFileSizeError: 'La mida màxima de l\'arxiu s\'ha superat.', + url: 'URL de la imatge', + remove: 'Eliminar imatge' + }, + video: { + video: 'Vídeo', + videoLink: 'Enllaç del vídeo', + insert: 'Inserir vídeo', + url: 'URL del vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Enllaç', + insert: 'Inserir enllaç', + unlink: 'Treure enllaç', + edit: 'Editar', + textToDisplay: 'Text per mostrar', + url: 'Cap a quina URL porta l\'enllaç?', + openInNewWindow: 'Obrir en una finestra nova' + }, + table: { + table: 'Taula' + }, + hr: { + insert: 'Inserir línia horitzontal' + }, + style: { + style: 'Estil', + p: 'p', + blockquote: 'Cita', + pre: 'Codi', + h1: 'Títol 1', + h2: 'Títol 2', + h3: 'Títol 3', + h4: 'Títol 4', + h5: 'Títol 5', + h6: 'Títol 6' + }, + lists: { + unordered: 'Llista desendreçada', + ordered: 'Llista endreçada' + }, + options: { + help: 'Ajut', + fullscreen: 'Pantalla sencera', + codeview: 'Veure codi font' + }, + paragraph: { + paragraph: 'Paràgraf', + outdent: 'Menys tabulació', + indent: 'Més tabulació', + left: 'Alinear a l\'esquerra', + center: 'Alinear al mig', + right: 'Alinear a la dreta', + justify: 'Justificar' + }, + color: { + recent: 'Últim color', + more: 'Més colors', + background: 'Color de fons', + foreground: 'Color de lletra', + transparent: 'Transparent', + setTransparent: 'Establir transparent', + reset: 'Restablir', + resetToDefault: 'Restablir per defecte' + }, + shortcut: { + shortcuts: 'Dreceres de teclat', + close: 'Tancar', + textFormatting: 'Format de text', + action: 'Acció', + paragraphFormatting: 'Format de paràgraf', + documentStyle: 'Estil del document', + extraKeys: 'Tecles adicionals' + }, + help : { + 'insertParagraph': 'Inserir paràgraf', + 'undo': 'Desfer l\'última acció', + 'redo': 'Refer l\'última acció', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulació', + 'bold': 'Establir estil negreta', + 'italic': 'Establir estil cursiva', + 'underline': 'Establir estil subratllat', + 'strikethrough': 'Establir estil ratllat', + 'removeFormat': 'Netejar estil', + 'justifyLeft': 'Alinear a l\'esquerra', + 'justifyCenter': 'Alinear al centre', + 'justifyRight': 'Alinear a la dreta', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Inserir llista desendreçada', + 'insertOrderedList': 'Inserir llista endreçada', + 'outdent': 'Reduïr tabulació del paràgraf', + 'indent': 'Augmentar tabulació del paràgraf', + 'formatPara': 'Canviar l\'estil del bloc com a un paràgraf (etiqueta P)', + 'formatH1': 'Canviar l\'estil del bloc com a un H1', + 'formatH2': 'Canviar l\'estil del bloc com a un H2', + 'formatH3': 'Canviar l\'estil del bloc com a un H3', + 'formatH4': 'Canviar l\'estil del bloc com a un H4', + 'formatH5': 'Canviar l\'estil del bloc com a un H5', + 'formatH6': 'Canviar l\'estil del bloc com a un H6', + 'insertHorizontalRule': 'Inserir una línia horitzontal', + 'linkDialog.show': 'Mostrar panel d\'enllaços' + }, + history: { + undo: 'Desfer', + redo: 'Refer' + }, + specialChar: { + specialChar: 'CARÀCTERS ESPECIALS', + select: 'Selecciona caràcters especials' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ca-ES.min.js b/plugins/summernote/lang/summernote-ca-ES.min.js new file mode 100644 index 0000000..cf215ad --- /dev/null +++ b/plugins/summernote/lang/summernote-ca-ES.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ca-ES":{font:{bold:"Negreta",italic:"Cursiva",underline:"Subratllat",clear:"Treure estil de lletra",height:"Alçada de línia",name:"Font",strikethrough:"Ratllat",subscript:"Subíndex",superscript:"Superíndex",size:"Mida de lletra"},image:{image:"Imatge",insert:"Inserir imatge",resizeFull:"Redimensionar a mida completa",resizeHalf:"Redimensionar a la meitat",resizeQuarter:"Redimensionar a un quart",floatLeft:"Alinear a l'esquerra",floatRight:"Alinear a la dreta",floatNone:"No alinear",shapeRounded:"Forma: Arrodonit",shapeCircle:"Forma: Cercle",shapeThumbnail:"Forma: Marc",shapeNone:"Forma: Cap",dragImageHere:"Arrossegueu una imatge o text aquí",dropImage:"Deixa anar aquí una imatge o un text",selectFromFiles:"Seleccioneu des dels arxius",maximumFileSize:"Mida màxima de l'arxiu",maximumFileSizeError:"La mida màxima de l'arxiu s'ha superat.",url:"URL de la imatge",remove:"Eliminar imatge"},video:{video:"Vídeo",videoLink:"Enllaç del vídeo",insert:"Inserir vídeo",url:"URL del vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Enllaç",insert:"Inserir enllaç",unlink:"Treure enllaç",edit:"Editar",textToDisplay:"Text per mostrar",url:"Cap a quina URL porta l'enllaç?",openInNewWindow:"Obrir en una finestra nova"},table:{table:"Taula"},hr:{insert:"Inserir línia horitzontal"},style:{style:"Estil",p:"p",blockquote:"Cita",pre:"Codi",h1:"Títol 1",h2:"Títol 2",h3:"Títol 3",h4:"Títol 4",h5:"Títol 5",h6:"Títol 6"},lists:{unordered:"Llista desendreçada",ordered:"Llista endreçada"},options:{help:"Ajut",fullscreen:"Pantalla sencera",codeview:"Veure codi font"},paragraph:{paragraph:"Paràgraf",outdent:"Menys tabulació",indent:"Més tabulació",left:"Alinear a l'esquerra",center:"Alinear al mig",right:"Alinear a la dreta",justify:"Justificar"},color:{recent:"Últim color",more:"Més colors",background:"Color de fons",foreground:"Color de lletra",transparent:"Transparent",setTransparent:"Establir transparent",reset:"Restablir",resetToDefault:"Restablir per defecte"},shortcut:{shortcuts:"Dreceres de teclat",close:"Tancar",textFormatting:"Format de text",action:"Acció",paragraphFormatting:"Format de paràgraf",documentStyle:"Estil del document",extraKeys:"Tecles adicionals"},help:{insertParagraph:"Inserir paràgraf",undo:"Desfer l'última acció",redo:"Refer l'última acció",tab:"Tabular",untab:"Eliminar tabulació",bold:"Establir estil negreta",italic:"Establir estil cursiva",underline:"Establir estil subratllat",strikethrough:"Establir estil ratllat",removeFormat:"Netejar estil",justifyLeft:"Alinear a l'esquerra",justifyCenter:"Alinear al centre",justifyRight:"Alinear a la dreta",justifyFull:"Justificar",insertUnorderedList:"Inserir llista desendreçada",insertOrderedList:"Inserir llista endreçada",outdent:"Reduïr tabulació del paràgraf",indent:"Augmentar tabulació del paràgraf",formatPara:"Canviar l'estil del bloc com a un paràgraf (etiqueta P)",formatH1:"Canviar l'estil del bloc com a un H1",formatH2:"Canviar l'estil del bloc com a un H2",formatH3:"Canviar l'estil del bloc com a un H3",formatH4:"Canviar l'estil del bloc com a un H4",formatH5:"Canviar l'estil del bloc com a un H5",formatH6:"Canviar l'estil del bloc com a un H6",insertHorizontalRule:"Inserir una línia horitzontal","linkDialog.show":"Mostrar panel d'enllaços"},history:{undo:"Desfer",redo:"Refer"},specialChar:{specialChar:"CARÀCTERS ESPECIALS",select:"Selecciona caràcters especials"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-cs-CZ.js b/plugins/summernote/lang/summernote-cs-CZ.js new file mode 100644 index 0000000..14fc16c --- /dev/null +++ b/plugins/summernote/lang/summernote-cs-CZ.js @@ -0,0 +1,103 @@ +(function ($) { + $.extend($.summernote.lang, { + 'cs-CZ': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podtržené', + clear: 'Odstranit styl písma', + height: 'Výška řádku', + strikethrough: 'Přeškrtnuté', + size: 'Velikost písma' + }, + image: { + image: 'Obrázek', + insert: 'Vložit obrázek', + resizeFull: 'Původní velikost', + resizeHalf: 'Poloviční velikost', + resizeQuarter: 'Čtvrteční velikost', + floatLeft: 'Umístit doleva', + floatRight: 'Umístit doprava', + floatNone: 'Neobtékat textem', + dragImageHere: 'Přetáhnout sem obrázek', + selectFromFiles: 'Vybrat soubor', + url: 'URL obrázku' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložit video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvořit odkaz', + unlink: 'Zrušit odkaz', + edit: 'Upravit', + textToDisplay: 'Zobrazovaný text', + url: 'Na jaké URL má tento odkaz vést?', + openInNewWindow: 'Otevřít v novém okně' + }, + table: { + table: 'Tabulka' + }, + hr: { + insert: 'Vložit vodorovnou čáru' + }, + style: { + style: 'Styl', + p: 'Normální', + blockquote: 'Citace', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový seznam', + ordered: 'Číselný seznam' + }, + options: { + help: 'Nápověda', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odstavec', + outdent: 'Zvětšit odsazení', + indent: 'Zmenšit odsazení', + left: 'Zarovnat doleva', + center: 'Zarovnat na střed', + right: 'Zarovnat doprava', + justify: 'Zarovnat oboustranně' + }, + color: { + recent: 'Aktuální barva', + more: 'Další barvy', + background: 'Barva pozadí', + foreground: 'Barva písma', + transparent: 'Průhlednost', + setTransparent: 'Nastavit průhlednost', + reset: 'Obnovit', + resetToDefault: 'Obnovit výchozí' + }, + shortcut: { + shortcuts: 'Klávesové zkratky', + close: 'Zavřít', + textFormatting: 'Formátování textu', + action: 'Akce', + paragraphFormatting: 'Formátování odstavce', + documentStyle: 'Styl dokumentu' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok vpřed' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-cs-CZ.min.js b/plugins/summernote/lang/summernote-cs-CZ.min.js new file mode 100644 index 0000000..6b9d37f --- /dev/null +++ b/plugins/summernote/lang/summernote-cs-CZ.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"cs-CZ":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podtržené",clear:"Odstranit styl písma",height:"Výška řádku",strikethrough:"Přeškrtnuté",size:"Velikost písma"},image:{image:"Obrázek",insert:"Vložit obrázek",resizeFull:"Původní velikost",resizeHalf:"Poloviční velikost",resizeQuarter:"Čtvrteční velikost",floatLeft:"Umístit doleva",floatRight:"Umístit doprava",floatNone:"Neobtékat textem",dragImageHere:"Přetáhnout sem obrázek",selectFromFiles:"Vybrat soubor",url:"URL obrázku"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložit video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)"},link:{link:"Odkaz",insert:"Vytvořit odkaz",unlink:"Zrušit odkaz",edit:"Upravit",textToDisplay:"Zobrazovaný text",url:"Na jaké URL má tento odkaz vést?",openInNewWindow:"Otevřít v novém okně"},table:{table:"Tabulka"},hr:{insert:"Vložit vodorovnou čáru"},style:{style:"Styl",p:"Normální",blockquote:"Citace",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový seznam",ordered:"Číselný seznam"},options:{help:"Nápověda",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odstavec",outdent:"Zvětšit odsazení",indent:"Zmenšit odsazení",left:"Zarovnat doleva",center:"Zarovnat na střed",right:"Zarovnat doprava",justify:"Zarovnat oboustranně"},color:{recent:"Aktuální barva",more:"Další barvy",background:"Barva pozadí",foreground:"Barva písma",transparent:"Průhlednost",setTransparent:"Nastavit průhlednost",reset:"Obnovit",resetToDefault:"Obnovit výchozí"},shortcut:{shortcuts:"Klávesové zkratky",close:"Zavřít",textFormatting:"Formátování textu",action:"Akce",paragraphFormatting:"Formátování odstavce",documentStyle:"Styl dokumentu"},history:{undo:"Krok vzad",redo:"Krok vpřed"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-da-DK.js b/plugins/summernote/lang/summernote-da-DK.js new file mode 100644 index 0000000..8f51774 --- /dev/null +++ b/plugins/summernote/lang/summernote-da-DK.js @@ -0,0 +1,114 @@ +(function ($) { + $.extend($.summernote.lang, { + 'da-DK': { + font: { + bold: 'Fed', + italic: 'Kursiv', + underline: 'Understreget', + clear: 'Fjern formatering', + height: 'Højde', + name: 'Skrifttype', + strikethrough: 'Gennemstreget', + subscript: 'Sænket skrift', + superscript: 'Hævet skrift', + size: 'Skriftstørrelse' + }, + image: { + image: 'Billede', + insert: 'Indsæt billede', + resizeFull: 'Original størrelse', + resizeHalf: 'Halv størrelse', + resizeQuarter: 'Kvart størrelse', + floatLeft: 'Venstrestillet', + floatRight: 'Højrestillet', + floatNone: 'Fjern formatering', + shapeRounded: 'Form: Runde kanter', + shapeCircle: 'Form: Cirkel', + shapeThumbnail: 'Form: Miniature', + shapeNone: 'Form: Ingen', + dragImageHere: 'Træk billede hertil', + dropImage: 'Slip billede', + selectFromFiles: 'Vælg billed-fil', + maximumFileSize: 'Maks fil størrelse', + maximumFileSizeError: 'Filen er større end maks tilladte fil størrelse!', + url: 'Billede URL', + remove: 'Fjern billede' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Indsæt Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Link', + insert: 'Indsæt link', + unlink: 'Fjern link', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Hvor skal linket pege hen?', + openInNewWindow: 'Åbn i nyt vindue' + }, + table: { + table: 'Tabel' + }, + hr: { + insert: 'Indsæt horisontal linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktopstillet liste', + ordered: 'Nummereret liste' + }, + options: { + help: 'Hjælp', + fullscreen: 'Fuld skærm', + codeview: 'HTML-Visning' + }, + paragraph: { + paragraph: 'Afsnit', + outdent: 'Formindsk indryk', + indent: 'Forøg indryk', + left: 'Venstrestillet', + center: 'Centreret', + right: 'Højrestillet', + justify: 'Blokjuster' + }, + color: { + recent: 'Nyligt valgt farve', + more: 'Flere farver', + background: 'Baggrund', + foreground: 'Forgrund', + transparent: 'Transparent', + setTransparent: 'Sæt transparent', + reset: 'Nulstil', + resetToDefault: 'Gendan standardindstillinger' + }, + shortcut: { + shortcuts: 'Genveje', + close: 'Luk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Afsnitsformatering', + documentStyle: 'Dokumentstil' + }, + history: { + undo: 'Fortryd', + redo: 'Annuller fortryd' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-da-DK.min.js b/plugins/summernote/lang/summernote-da-DK.min.js new file mode 100644 index 0000000..5976a28 --- /dev/null +++ b/plugins/summernote/lang/summernote-da-DK.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"da-DK":{font:{bold:"Fed",italic:"Kursiv",underline:"Understreget",clear:"Fjern formatering",height:"Højde",name:"Skrifttype",strikethrough:"Gennemstreget",subscript:"Sænket skrift",superscript:"Hævet skrift",size:"Skriftstørrelse"},image:{image:"Billede",insert:"Indsæt billede",resizeFull:"Original størrelse",resizeHalf:"Halv størrelse",resizeQuarter:"Kvart størrelse",floatLeft:"Venstrestillet",floatRight:"Højrestillet",floatNone:"Fjern formatering",shapeRounded:"Form: Runde kanter",shapeCircle:"Form: Cirkel",shapeThumbnail:"Form: Miniature",shapeNone:"Form: Ingen",dragImageHere:"Træk billede hertil",dropImage:"Slip billede",selectFromFiles:"Vælg billed-fil",maximumFileSize:"Maks fil størrelse",maximumFileSizeError:"Filen er større end maks tilladte fil størrelse!",url:"Billede URL",remove:"Fjern billede"},video:{video:"Video",videoLink:"Video Link",insert:"Indsæt Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Link",insert:"Indsæt link",unlink:"Fjern link",edit:"Rediger",textToDisplay:"Visningstekst",url:"Hvor skal linket pege hen?",openInNewWindow:"Åbn i nyt vindue"},table:{table:"Tabel"},hr:{insert:"Indsæt horisontal linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktopstillet liste",ordered:"Nummereret liste"},options:{help:"Hjælp",fullscreen:"Fuld skærm",codeview:"HTML-Visning"},paragraph:{paragraph:"Afsnit",outdent:"Formindsk indryk",indent:"Forøg indryk",left:"Venstrestillet",center:"Centreret",right:"Højrestillet",justify:"Blokjuster"},color:{recent:"Nyligt valgt farve",more:"Flere farver",background:"Baggrund",foreground:"Forgrund",transparent:"Transparent",setTransparent:"Sæt transparent",reset:"Nulstil",resetToDefault:"Gendan standardindstillinger"},shortcut:{shortcuts:"Genveje",close:"Luk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Afsnitsformatering",documentStyle:"Dokumentstil"},history:{undo:"Fortryd",redo:"Annuller fortryd"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-de-DE.js b/plugins/summernote/lang/summernote-de-DE.js new file mode 100644 index 0000000..402caed --- /dev/null +++ b/plugins/summernote/lang/summernote-de-DE.js @@ -0,0 +1,110 @@ +(function ($) { + $.extend($.summernote.lang, { + 'de-DE': { + font: { + bold: 'Fett', + italic: 'Kursiv', + underline: 'Unterstreichen', + clear: 'Zurücksetzen', + height: 'Zeilenhöhe', + strikethrough: 'Durchgestrichen', + size: 'Schriftgröße' + }, + image: { + image: 'Grafik', + insert: 'Grafik einfügen', + resizeFull: 'Originalgröße', + resizeHalf: 'Größe 1/2', + resizeQuarter: 'Größe 1/4', + floatLeft: 'Linksbündig', + floatRight: 'Rechtsbündig', + floatNone: 'Kein Textfluss', + shapeRounded: 'Rahmen: Abgerundet', + shapeCircle: 'Rahmen: Kreisförmig', + shapeThumbnail: 'Rahmen: Thumbnail', + shapeNone: 'Kein Rahmen', + dragImageHere: 'Ziehen Sie ein Bild mit der Maus hierher', + selectFromFiles: 'Wählen Sie eine Datei aus', + maximumFileSize: 'Maximale Dateigröße', + maximumFileSizeError: 'Maximale Dateigröße überschritten', + url: 'Grafik URL', + remove: 'Grafik entfernen' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Video einfügen', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)' + }, + link: { + link: 'Link', + insert: 'Link einfügen', + unlink: 'Link entfernen', + edit: 'Editieren', + textToDisplay: 'Anzeigetext', + url: 'Ziel des Links?', + openInNewWindow: 'In einem neuen Fenster öffnen' + }, + table: { + table: 'Tabelle' + }, + hr: { + insert: 'Eine horizontale Linie einfügen' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Zitat', + pre: 'Quellcode', + h1: 'Überschrift 1', + h2: 'Überschrift 2', + h3: 'Überschrift 3', + h4: 'Überschrift 4', + h5: 'Überschrift 5', + h6: 'Überschrift 6' + }, + lists: { + unordered: 'Aufzählung', + ordered: 'Nummerierung' + }, + options: { + help: 'Hilfe', + fullscreen: 'Vollbild', + codeview: 'HTML-Code anzeigen' + }, + paragraph: { + paragraph: 'Absatz', + outdent: 'Einzug vergrößern', + indent: 'Einzug verkleinern', + left: 'Links ausrichten', + center: 'Zentriert ausrichten', + right: 'Rechts ausrichten', + justify: 'Blocksatz' + }, + color: { + recent: 'Letzte Farbe', + more: 'Mehr Farben', + background: 'Hintergrundfarbe', + foreground: 'Schriftfarbe', + transparent: 'Transparenz', + setTransparent: 'Transparenz setzen', + reset: 'Zurücksetzen', + resetToDefault: 'Auf Standard zurücksetzen' + }, + shortcut: { + shortcuts: 'Tastenkürzel', + close: 'Schließen', + textFormatting: 'Textformatierung', + action: 'Aktion', + paragraphFormatting: 'Absatzformatierung', + documentStyle: 'Dokumentenstil' + }, + history: { + undo: 'Rückgängig', + redo: 'Wiederholen' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-de-DE.min.js b/plugins/summernote/lang/summernote-de-DE.min.js new file mode 100644 index 0000000..e859e77 --- /dev/null +++ b/plugins/summernote/lang/summernote-de-DE.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"de-DE":{font:{bold:"Fett",italic:"Kursiv",underline:"Unterstreichen",clear:"Zurücksetzen",height:"Zeilenhöhe",strikethrough:"Durchgestrichen",size:"Schriftgröße"},image:{image:"Grafik",insert:"Grafik einfügen",resizeFull:"Originalgröße",resizeHalf:"Größe 1/2",resizeQuarter:"Größe 1/4",floatLeft:"Linksbündig",floatRight:"Rechtsbündig",floatNone:"Kein Textfluss",shapeRounded:"Rahmen: Abgerundet",shapeCircle:"Rahmen: Kreisförmig",shapeThumbnail:"Rahmen: Thumbnail",shapeNone:"Kein Rahmen",dragImageHere:"Ziehen Sie ein Bild mit der Maus hierher",selectFromFiles:"Wählen Sie eine Datei aus",maximumFileSize:"Maximale Dateigröße",maximumFileSizeError:"Maximale Dateigröße überschritten",url:"Grafik URL",remove:"Grafik entfernen"},video:{video:"Video",videoLink:"Video Link",insert:"Video einfügen",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)"},link:{link:"Link",insert:"Link einfügen",unlink:"Link entfernen",edit:"Editieren",textToDisplay:"Anzeigetext",url:"Ziel des Links?",openInNewWindow:"In einem neuen Fenster öffnen"},table:{table:"Tabelle"},hr:{insert:"Eine horizontale Linie einfügen"},style:{style:"Stil",p:"p",blockquote:"Zitat",pre:"Quellcode",h1:"Überschrift 1",h2:"Überschrift 2",h3:"Überschrift 3",h4:"Überschrift 4",h5:"Überschrift 5",h6:"Überschrift 6"},lists:{unordered:"Aufzählung",ordered:"Nummerierung"},options:{help:"Hilfe",fullscreen:"Vollbild",codeview:"HTML-Code anzeigen"},paragraph:{paragraph:"Absatz",outdent:"Einzug vergrößern",indent:"Einzug verkleinern",left:"Links ausrichten",center:"Zentriert ausrichten",right:"Rechts ausrichten",justify:"Blocksatz"},color:{recent:"Letzte Farbe",more:"Mehr Farben",background:"Hintergrundfarbe",foreground:"Schriftfarbe",transparent:"Transparenz",setTransparent:"Transparenz setzen",reset:"Zurücksetzen",resetToDefault:"Auf Standard zurücksetzen"},shortcut:{shortcuts:"Tastenkürzel",close:"Schließen",textFormatting:"Textformatierung",action:"Aktion",paragraphFormatting:"Absatzformatierung",documentStyle:"Dokumentenstil"},history:{undo:"Rückgängig",redo:"Wiederholen"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-es-ES.js b/plugins/summernote/lang/summernote-es-ES.js new file mode 100644 index 0000000..b66a368 --- /dev/null +++ b/plugins/summernote/lang/summernote-es-ES.js @@ -0,0 +1,147 @@ +(function ($) { + $.extend($.summernote.lang, { + 'es-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subrayado', + clear: 'Quitar estilo de fuente', + height: 'Altura de línea', + name: 'Fuente', + strikethrough: 'Tachado', + superscript: 'Superíndice', + subscript: 'Subíndice', + size: 'Tamaño de la fuente' + }, + image: { + image: 'Imagen', + insert: 'Insertar imagen', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar a la mitad', + resizeQuarter: 'Redimensionar a un cuarto', + floatLeft: 'Flotar a la izquierda', + floatRight: 'Flotar a la derecha', + floatNone: 'No flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Marco', + shapeNone: 'Forma: Ninguna', + dragImageHere: 'Arrastrar una imagen o texto aquí', + dropImage: 'Suelta la imagen o texto', + selectFromFiles: 'Seleccionar desde los archivos', + maximumFileSize: 'Tamaño máximo del archivo', + maximumFileSizeError: 'Has superado el tamaño máximo del archivo.', + url: 'URL de la imagen', + remove: 'Eliminar imagen' + }, + video: { + video: 'Vídeo', + videoLink: 'Link del vídeo', + insert: 'Insertar vídeo', + url: '¿URL del vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Link', + insert: 'Insertar link', + unlink: 'Quitar link', + edit: 'Editar', + textToDisplay: 'Texto para mostrar', + url: '¿Hacia que URL lleva el link?', + openInNewWindow: 'Abrir en una nueva ventana' + }, + table: { + table: 'Tabla' + }, + hr: { + insert: 'Insertar línea horizontal' + }, + style: { + style: 'Estilo', + p: 'p', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista desordenada', + ordered: 'Lista ordenada' + }, + options: { + help: 'Ayuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver código fuente' + }, + paragraph: { + paragraph: 'Párrafo', + outdent: 'Menos tabulación', + indent: 'Más tabulación', + left: 'Alinear a la izquierda', + center: 'Alinear al centro', + right: 'Alinear a la derecha', + justify: 'Justificar' + }, + color: { + recent: 'Último color', + more: 'Más colores', + background: 'Color de fondo', + foreground: 'Color de fuente', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar por defecto' + }, + shortcut: { + shortcuts: 'Atajos de teclado', + close: 'Cerrar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de párrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionales' + }, + help : { + 'insertParagraph': 'Insertar párrafo', + 'undo': 'Deshacer última acción', + 'redo': 'Rehacer última acción', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulación', + 'bold': 'Establecer estilo negrita', + 'italic': 'Establecer estilo cursiva', + 'underline': 'Establecer estilo subrayado', + 'strikethrough': 'Establecer estilo tachado', + 'removeFormat': 'Limpiar estilo', + 'justifyLeft': 'Alinear a la izquierda', + 'justifyCenter': 'Alinear al centro', + 'justifyRight': 'Alinear a la derecha', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Insertar lista desordenada', + 'insertOrderedList': 'Insertar lista ordenada', + 'outdent': 'Reducir tabulación del párrafo', + 'indent': 'Aumentar tabulación del párrafo', + 'formatPara': 'Cambiar estilo del bloque a párrafo (etiqueta P)', + 'formatH1': 'Cambiar estilo del bloque a H1', + 'formatH2': 'Cambiar estilo del bloque a H2', + 'formatH3': 'Cambiar estilo del bloque a H3', + 'formatH4': 'Cambiar estilo del bloque a H4', + 'formatH5': 'Cambiar estilo del bloque a H5', + 'formatH6': 'Cambiar estilo del bloque a H6', + 'insertHorizontalRule': 'Insertar línea horizontal', + 'linkDialog.show': 'Mostrar panel enlaces' + }, + history: { + undo: 'Deshacer', + redo: 'Rehacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIALES', + select: 'Selecciona Caracteres especiales' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-es-ES.min.js b/plugins/summernote/lang/summernote-es-ES.min.js new file mode 100644 index 0000000..ff89316 --- /dev/null +++ b/plugins/summernote/lang/summernote-es-ES.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"es-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subrayado",clear:"Quitar estilo de fuente",height:"Altura de línea",name:"Fuente",strikethrough:"Tachado",superscript:"Superíndice",subscript:"Subíndice",size:"Tamaño de la fuente"},image:{image:"Imagen",insert:"Insertar imagen",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar a la mitad",resizeQuarter:"Redimensionar a un cuarto",floatLeft:"Flotar a la izquierda",floatRight:"Flotar a la derecha",floatNone:"No flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Marco",shapeNone:"Forma: Ninguna",dragImageHere:"Arrastrar una imagen o texto aquí",dropImage:"Suelta la imagen o texto",selectFromFiles:"Seleccionar desde los archivos",maximumFileSize:"Tamaño máximo del archivo",maximumFileSizeError:"Has superado el tamaño máximo del archivo.",url:"URL de la imagen",remove:"Eliminar imagen"},video:{video:"Vídeo",videoLink:"Link del vídeo",insert:"Insertar vídeo",url:"¿URL del vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Link",insert:"Insertar link",unlink:"Quitar link",edit:"Editar",textToDisplay:"Texto para mostrar",url:"¿Hacia que URL lleva el link?",openInNewWindow:"Abrir en una nueva ventana"},table:{table:"Tabla"},hr:{insert:"Insertar línea horizontal"},style:{style:"Estilo",p:"p",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista desordenada",ordered:"Lista ordenada"},options:{help:"Ayuda",fullscreen:"Pantalla completa",codeview:"Ver código fuente"},paragraph:{paragraph:"Párrafo",outdent:"Menos tabulación",indent:"Más tabulación",left:"Alinear a la izquierda",center:"Alinear al centro",right:"Alinear a la derecha",justify:"Justificar"},color:{recent:"Último color",more:"Más colores",background:"Color de fondo",foreground:"Color de fuente",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restaurar",resetToDefault:"Restaurar por defecto"},shortcut:{shortcuts:"Atajos de teclado",close:"Cerrar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de párrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionales"},help:{insertParagraph:"Insertar párrafo",undo:"Deshacer última acción",redo:"Rehacer última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subrayado",strikethrough:"Establecer estilo tachado",removeFormat:"Limpiar estilo",justifyLeft:"Alinear a la izquierda",justifyCenter:"Alinear al centro",justifyRight:"Alinear a la derecha",justifyFull:"Justificar",insertUnorderedList:"Insertar lista desordenada",insertOrderedList:"Insertar lista ordenada",outdent:"Reducir tabulación del párrafo",indent:"Aumentar tabulación del párrafo",formatPara:"Cambiar estilo del bloque a párrafo (etiqueta P)",formatH1:"Cambiar estilo del bloque a H1",formatH2:"Cambiar estilo del bloque a H2",formatH3:"Cambiar estilo del bloque a H3",formatH4:"Cambiar estilo del bloque a H4",formatH5:"Cambiar estilo del bloque a H5",formatH6:"Cambiar estilo del bloque a H6",insertHorizontalRule:"Insertar línea horizontal","linkDialog.show":"Mostrar panel enlaces"},history:{undo:"Deshacer",redo:"Rehacer"},specialChar:{specialChar:"CARACTERES ESPECIALES",select:"Selecciona Caracteres especiales"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-es-EU.js b/plugins/summernote/lang/summernote-es-EU.js new file mode 100644 index 0000000..4681db0 --- /dev/null +++ b/plugins/summernote/lang/summernote-es-EU.js @@ -0,0 +1,103 @@ +(function ($) { + $.extend($.summernote.lang, { + 'es-EU': { + font: { + bold: 'Lodia', + italic: 'Etzana', + underline: 'Azpimarratua', + clear: 'Estiloa kendu', + height: 'Lerro altuera', + name: 'Tipografia', + strikethrough: 'Marratua', + size: 'Letren neurria' + }, + image: { + image: 'Irudia', + insert: 'Irudi bat txertatu', + resizeFull: 'Jatorrizko neurrira aldatu', + resizeHalf: 'Neurria erdira aldatu', + resizeQuarter: 'Neurria laurdenera aldatu', + floatLeft: 'Ezkerrean kokatu', + floatRight: 'Eskuinean kokatu', + floatNone: 'Kokapenik ez ezarri', + dragImageHere: 'Irudi bat ezarri hemen', + selectFromFiles: 'Zure fitxategi bat aukeratu', + url: 'Irudiaren URL helbidea' + }, + video: { + video: 'Bideoa', + videoLink: 'Bideorako esteka', + insert: 'Bideo berri bat txertatu', + url: 'Bideoaren URL helbidea', + providers: '(YouTube, Vimeo, Vine, Instagram edo DailyMotion)' + }, + link: { + link: 'Esteka', + insert: 'Esteka bat txertatu', + unlink: 'Esteka ezabatu', + edit: 'Editatu', + textToDisplay: 'Estekaren testua', + url: 'Estekaren URL helbidea', + openInNewWindow: 'Leiho berri batean ireki' + }, + table: { + table: 'Taula' //Tabla + }, + hr: { + insert: 'Marra horizontala txertatu' //Insertar línea horizontal + }, + style: { + style: 'Estiloa', + p: 'p', + blockquote: 'Aipamena', + pre: 'Kodea', + h1: '1. izenburua', + h2: '2. izenburua', + h3: '3. izenburua', + h4: '4. izenburua', + h5: '5. izenburua', + h6: '6. izenburua' + }, + lists: { + unordered: 'Ordenatu gabeko zerrenda', + ordered: 'Zerrenda ordenatua' + }, + options: { + help: 'Laguntza', + fullscreen: 'Pantaila osoa', + codeview: 'Kodea ikusi' + }, + paragraph: { + paragraph: 'Paragrafoa', + outdent: 'Koska txikiagoa', + indent: 'Koska handiagoa', + left: 'Ezkerrean kokatu', + center: 'Erdian kokatu', + right: 'Eskuinean kokatu', + justify: 'Justifikatu' + }, + color: { + recent: 'Azken kolorea', + more: 'Kolore gehiago', + background: 'Atzeko planoa', + foreground: 'Aurreko planoa', + transparent: 'Gardena', + setTransparent: 'Gardendu', + reset: 'Lehengoratu', + resetToDefault: 'Berrezarri lehenetsia' + }, + shortcut: { + shortcuts: 'Lasterbideak', + close: 'Itxi', + textFormatting: 'Testuaren formatua', + action: 'Ekintza', + paragraphFormatting: 'Paragrafoaren formatua', + documentStyle: 'Dokumentuaren estiloa' + }, + history: { + undo: 'Desegin', + redo: 'Berregin' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-es-EU.min.js b/plugins/summernote/lang/summernote-es-EU.min.js new file mode 100644 index 0000000..ef78953 --- /dev/null +++ b/plugins/summernote/lang/summernote-es-EU.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"es-EU":{font:{bold:"Lodia",italic:"Etzana",underline:"Azpimarratua",clear:"Estiloa kendu",height:"Lerro altuera",name:"Tipografia",strikethrough:"Marratua",size:"Letren neurria"},image:{image:"Irudia",insert:"Irudi bat txertatu",resizeFull:"Jatorrizko neurrira aldatu",resizeHalf:"Neurria erdira aldatu",resizeQuarter:"Neurria laurdenera aldatu",floatLeft:"Ezkerrean kokatu",floatRight:"Eskuinean kokatu",floatNone:"Kokapenik ez ezarri",dragImageHere:"Irudi bat ezarri hemen",selectFromFiles:"Zure fitxategi bat aukeratu",url:"Irudiaren URL helbidea"},video:{video:"Bideoa",videoLink:"Bideorako esteka",insert:"Bideo berri bat txertatu",url:"Bideoaren URL helbidea",providers:"(YouTube, Vimeo, Vine, Instagram edo DailyMotion)"},link:{link:"Esteka",insert:"Esteka bat txertatu",unlink:"Esteka ezabatu",edit:"Editatu",textToDisplay:"Estekaren testua",url:"Estekaren URL helbidea",openInNewWindow:"Leiho berri batean ireki"},table:{table:"Taula"},hr:{insert:"Marra horizontala txertatu"},style:{style:"Estiloa",p:"p",blockquote:"Aipamena",pre:"Kodea",h1:"1. izenburua",h2:"2. izenburua",h3:"3. izenburua",h4:"4. izenburua",h5:"5. izenburua",h6:"6. izenburua"},lists:{unordered:"Ordenatu gabeko zerrenda",ordered:"Zerrenda ordenatua"},options:{help:"Laguntza",fullscreen:"Pantaila osoa",codeview:"Kodea ikusi"},paragraph:{paragraph:"Paragrafoa",outdent:"Koska txikiagoa",indent:"Koska handiagoa",left:"Ezkerrean kokatu",center:"Erdian kokatu",right:"Eskuinean kokatu",justify:"Justifikatu"},color:{recent:"Azken kolorea",more:"Kolore gehiago",background:"Atzeko planoa",foreground:"Aurreko planoa",transparent:"Gardena",setTransparent:"Gardendu",reset:"Lehengoratu",resetToDefault:"Berrezarri lehenetsia"},shortcut:{shortcuts:"Lasterbideak",close:"Itxi",textFormatting:"Testuaren formatua",action:"Ekintza",paragraphFormatting:"Paragrafoaren formatua",documentStyle:"Dokumentuaren estiloa"},history:{undo:"Desegin",redo:"Berregin"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-fa-IR.js b/plugins/summernote/lang/summernote-fa-IR.js new file mode 100644 index 0000000..a9d1a2d --- /dev/null +++ b/plugins/summernote/lang/summernote-fa-IR.js @@ -0,0 +1,105 @@ +(function ($) { + $.extend($.summernote.lang, { + 'fa-IR': { + font: { + bold: 'درشت', + italic: 'خمیده', + underline: 'میان خط', + clear: 'پاک کردن فرمت فونت', + height: 'فاصله ی خطی', + name: 'اسم فونت', + strikethrough: 'Strike', + size: 'اندازه ی فونت' + }, + image: { + image: 'تصویر', + insert: 'وارد کردن تصویر', + resizeFull: 'تغییر به اندازه ی کامل', + resizeHalf: 'تغییر به اندازه نصف', + resizeQuarter: 'تغییر به اندازه یک چهارم', + floatLeft: 'چسباندن به چپ', + floatRight: 'چسباندن به راست', + floatNone: 'بدون چسبندگی', + dragImageHere: 'یک تصویر را اینجا بکشید', + selectFromFiles: 'فایل ها را انتخاب کنید', + url: 'آدرس تصویر', + remove: 'حذف تصویر' + }, + video: { + video: 'ویدیو', + videoLink: 'لینک ویدیو', + insert: 'افزودن ویدیو', + url: 'آدرس ویدیو ؟', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)' + }, + link: { + link: 'لینک', + insert: 'اضافه کردن لینک', + unlink: 'حذف لینک', + edit: 'ویرایش', + textToDisplay: 'متن جهت نمایش', + url: 'این لینک به چه آدرسی باید برود ؟', + openInNewWindow: 'در یک پنجره ی جدید باز شود' + }, + table: { + table: 'جدول' + }, + hr: { + insert: 'افزودن خط افقی' + }, + style: { + style: 'استیل', + p: 'نرمال', + blockquote: 'نقل قول', + pre: 'کد', + h1: 'سرتیتر 1', + h2: 'سرتیتر 2', + h3: 'سرتیتر 3', + h4: 'سرتیتر 4', + h5: 'سرتیتر 5', + h6: 'سرتیتر 6' + }, + lists: { + unordered: 'لیست غیر ترتیبی', + ordered: 'لیست ترتیبی' + }, + options: { + help: 'راهنما', + fullscreen: 'نمایش تمام صفحه', + codeview: 'مشاهده ی کد' + }, + paragraph: { + paragraph: 'پاراگراف', + outdent: 'کاهش تو رفتگی', + indent: 'افزایش تو رفتگی', + left: 'چپ چین', + center: 'میان چین', + right: 'راست چین', + justify: 'بلوک چین' + }, + color: { + recent: 'رنگ اخیرا استفاده شده', + more: 'رنگ بیشتر', + background: 'رنگ پس زمینه', + foreground: 'رنگ متن', + transparent: 'بی رنگ', + setTransparent: 'تنظیم حالت بی رنگ', + reset: 'بازنشاندن', + resetToDefault: 'حالت پیش فرض' + }, + shortcut: { + shortcuts: 'دکمه های میان بر', + close: 'بستن', + textFormatting: 'فرمت متن', + action: 'عملیات', + paragraphFormatting: 'فرمت پاراگراف', + documentStyle: 'استیل سند' + }, + history: { + undo: 'واچیدن', + redo: 'بازچیدن' + } + } + }); +})(jQuery); + diff --git a/plugins/summernote/lang/summernote-fa-IR.min.js b/plugins/summernote/lang/summernote-fa-IR.min.js new file mode 100644 index 0000000..6ebb33d --- /dev/null +++ b/plugins/summernote/lang/summernote-fa-IR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"fa-IR":{font:{bold:"درشت",italic:"خمیده",underline:"میان خط",clear:"پاک کردن فرمت فونت",height:"فاصله ی خطی",name:"اسم فونت",strikethrough:"Strike",size:"اندازه ی فونت"},image:{image:"تصویر",insert:"وارد کردن تصویر",resizeFull:"تغییر به اندازه ی کامل",resizeHalf:"تغییر به اندازه نصف",resizeQuarter:"تغییر به اندازه یک چهارم",floatLeft:"چسباندن به چپ",floatRight:"چسباندن به راست",floatNone:"بدون چسبندگی",dragImageHere:"یک تصویر را اینجا بکشید",selectFromFiles:"فایل ها را انتخاب کنید",url:"آدرس تصویر",remove:"حذف تصویر"},video:{video:"ویدیو",videoLink:"لینک ویدیو",insert:"افزودن ویدیو",url:"آدرس ویدیو ؟",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)"},link:{link:"لینک",insert:"اضافه کردن لینک",unlink:"حذف لینک",edit:"ویرایش",textToDisplay:"متن جهت نمایش",url:"این لینک به چه آدرسی باید برود ؟",openInNewWindow:"در یک پنجره ی جدید باز شود"},table:{table:"جدول"},hr:{insert:"افزودن خط افقی"},style:{style:"استیل",p:"نرمال",blockquote:"نقل قول",pre:"کد",h1:"سرتیتر 1",h2:"سرتیتر 2",h3:"سرتیتر 3",h4:"سرتیتر 4",h5:"سرتیتر 5",h6:"سرتیتر 6"},lists:{unordered:"لیست غیر ترتیبی",ordered:"لیست ترتیبی"},options:{help:"راهنما",fullscreen:"نمایش تمام صفحه",codeview:"مشاهده ی کد"},paragraph:{paragraph:"پاراگراف",outdent:"کاهش تو رفتگی",indent:"افزایش تو رفتگی",left:"چپ چین",center:"میان چین",right:"راست چین",justify:"بلوک چین"},color:{recent:"رنگ اخیرا استفاده شده",more:"رنگ بیشتر",background:"رنگ پس زمینه",foreground:"رنگ متن",transparent:"بی رنگ",setTransparent:"تنظیم حالت بی رنگ",reset:"بازنشاندن",resetToDefault:"حالت پیش فرض"},shortcut:{shortcuts:"دکمه های میان بر",close:"بستن",textFormatting:"فرمت متن",action:"عملیات",paragraphFormatting:"فرمت پاراگراف",documentStyle:"استیل سند"},history:{undo:"واچیدن",redo:"بازچیدن"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-fi-FI.js b/plugins/summernote/lang/summernote-fi-FI.js new file mode 100644 index 0000000..22e7875 --- /dev/null +++ b/plugins/summernote/lang/summernote-fi-FI.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'fi-FI': { + font: { + bold: 'Lihavoitu', + italic: 'Kursiivi', + underline: 'Alleviivaa', + clear: 'Tyhjennä muotoilu', + height: 'Riviväli', + name: 'Kirjasintyyppi', + strikethrough: 'Yliviivaus', + size: 'Kirjasinkoko' + }, + image: { + image: 'Kuva', + insert: 'Lisää kuva', + resizeFull: 'Koko leveys', + resizeHalf: 'Puolikas leveys', + resizeQuarter: 'Neljäsosa leveys', + floatLeft: 'Sijoita vasemmalle', + floatRight: 'Sijoita oikealle', + floatNone: 'Ei sijoitusta', + dragImageHere: 'Vedä kuva tähän', + selectFromFiles: 'Valitse tiedostoista', + url: 'URL-osoitteen mukaan', + remove: 'Poista kuva' + }, + video: { + video: 'Video', + videoLink: 'Linkki videoon', + insert: 'Lisää video', + url: 'Videon URL-osoite?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)' + }, + link: { + link: 'Linkki', + insert: 'Lisää linkki', + unlink: 'Poista linkki', + edit: 'Muokkaa', + textToDisplay: 'Näytettävä teksti', + url: 'Linkin URL-osoite?', + openInNewWindow: 'Avaa uudessa ikkunassa' + }, + table: { + table: 'Taulukko' + }, + hr: { + insert: 'Lisää vaakaviiva' + }, + style: { + style: 'Tyyli', + p: 'Normaali', + blockquote: 'Lainaus', + pre: 'Koodi', + h1: 'Otsikko 1', + h2: 'Otsikko 2', + h3: 'Otsikko 3', + h4: 'Otsikko 4', + h5: 'Otsikko 5', + h6: 'Otsikko 6' + }, + lists: { + unordered: 'Luettelomerkitty luettelo', + ordered: 'Numeroitu luettelo' + }, + options: { + help: 'Ohje', + fullscreen: 'Koko näyttö', + codeview: 'HTML-näkymä' + }, + paragraph: { + paragraph: 'Kappale', + outdent: 'Pienennä sisennystä', + indent: 'Suurenna sisennystä', + left: 'Tasaus vasemmalle', + center: 'Keskitä', + right: 'Tasaus oikealle', + justify: 'Tasaa' + }, + color: { + recent: 'Viimeisin väri', + more: 'Lisää värejä', + background: 'Taustaväri', + foreground: 'Tekstin väri', + transparent: 'Läpinäkyvä', + setTransparent: 'Aseta läpinäkyväksi', + reset: 'Palauta', + resetToDefault: 'Palauta oletusarvoksi' + }, + shortcut: { + shortcuts: 'Pikanäppäimet', + close: 'Sulje', + textFormatting: 'Tekstin muotoilu', + action: 'Toiminto', + paragraphFormatting: 'Kappaleen muotoilu', + documentStyle: 'Asiakirjan tyyli' + }, + history: { + undo: 'Kumoa', + redo: 'Toista' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-fi-FI.min.js b/plugins/summernote/lang/summernote-fi-FI.min.js new file mode 100644 index 0000000..be088a9 --- /dev/null +++ b/plugins/summernote/lang/summernote-fi-FI.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"fi-FI":{font:{bold:"Lihavoitu",italic:"Kursiivi",underline:"Alleviivaa",clear:"Tyhjennä muotoilu",height:"Riviväli",name:"Kirjasintyyppi",strikethrough:"Yliviivaus",size:"Kirjasinkoko"},image:{image:"Kuva",insert:"Lisää kuva",resizeFull:"Koko leveys",resizeHalf:"Puolikas leveys",resizeQuarter:"Neljäsosa leveys",floatLeft:"Sijoita vasemmalle",floatRight:"Sijoita oikealle",floatNone:"Ei sijoitusta",dragImageHere:"Vedä kuva tähän",selectFromFiles:"Valitse tiedostoista",url:"URL-osoitteen mukaan",remove:"Poista kuva"},video:{video:"Video",videoLink:"Linkki videoon",insert:"Lisää video",url:"Videon URL-osoite?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)"},link:{link:"Linkki",insert:"Lisää linkki",unlink:"Poista linkki",edit:"Muokkaa",textToDisplay:"Näytettävä teksti",url:"Linkin URL-osoite?",openInNewWindow:"Avaa uudessa ikkunassa"},table:{table:"Taulukko"},hr:{insert:"Lisää vaakaviiva"},style:{style:"Tyyli",p:"Normaali",blockquote:"Lainaus",pre:"Koodi",h1:"Otsikko 1",h2:"Otsikko 2",h3:"Otsikko 3",h4:"Otsikko 4",h5:"Otsikko 5",h6:"Otsikko 6"},lists:{unordered:"Luettelomerkitty luettelo",ordered:"Numeroitu luettelo"},options:{help:"Ohje",fullscreen:"Koko näyttö",codeview:"HTML-näkymä"},paragraph:{paragraph:"Kappale",outdent:"Pienennä sisennystä",indent:"Suurenna sisennystä",left:"Tasaus vasemmalle",center:"Keskitä",right:"Tasaus oikealle",justify:"Tasaa"},color:{recent:"Viimeisin väri",more:"Lisää värejä",background:"Taustaväri",foreground:"Tekstin väri",transparent:"Läpinäkyvä",setTransparent:"Aseta läpinäkyväksi",reset:"Palauta",resetToDefault:"Palauta oletusarvoksi"},shortcut:{shortcuts:"Pikanäppäimet",close:"Sulje",textFormatting:"Tekstin muotoilu",action:"Toiminto",paragraphFormatting:"Kappaleen muotoilu",documentStyle:"Asiakirjan tyyli"},history:{undo:"Kumoa",redo:"Toista"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-fr-FR.js b/plugins/summernote/lang/summernote-fr-FR.js new file mode 100644 index 0000000..f6b7738 --- /dev/null +++ b/plugins/summernote/lang/summernote-fr-FR.js @@ -0,0 +1,115 @@ +(function ($) { + $.extend($.summernote.lang, { + 'fr-FR': { + font: { + bold: 'Gras', + italic: 'Italique', + underline: 'Souligné', + clear: 'Effacer la mise en forme', + height: 'Interligne', + name: 'Famille de police', + strikethrough: 'Barré', + superscript: 'Exposant', + subscript: 'Indice', + size: 'Taille de police' + }, + image: { + image: 'Image', + insert: 'Insérer une image', + resizeFull: 'Taille originale', + resizeHalf: 'Redimensionner à 50 %', + resizeQuarter: 'Redimensionner à 25 %', + floatLeft: 'Aligné à gauche', + floatRight: 'Aligné à droite', + floatNone: 'Pas d\'alignement', + shapeRounded: 'Forme: Rectangle arrondie', + shapeCircle: 'Forme: Cercle', + shapeThumbnail: 'Forme: Vignette', + shapeNone: 'Forme: Aucune', + dragImageHere: 'Faites glisser une image ou un texte dans ce cadre', + dropImage: 'Lachez l\'image ou le texte', + selectFromFiles: 'Choisir un fichier', + maximumFileSize: 'Taille de fichier maximale', + maximumFileSizeError: 'Taille maximale du fichier dépassée', + url: 'URL de l\'image', + remove: 'Supprimer l\'image' + }, + video: { + video: 'Vidéo', + videoLink: 'Lien vidéo', + insert: 'Insérer une vidéo', + url: 'URL de la vidéo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Lien', + insert: 'Insérer un lien', + unlink: 'Supprimer un lien', + edit: 'Modifier', + textToDisplay: 'Texte à afficher', + url: 'URL du lien', + openInNewWindow: 'Ouvrir dans une nouvelle fenêtre' + }, + table: { + table: 'Tableau' + }, + hr: { + insert: 'Insérer une ligne horizontale' + }, + style: { + style: 'Style', + p: 'p', + blockquote: 'Citation', + pre: 'Code source', + h1: 'Titre 1', + h2: 'Titre 2', + h3: 'Titre 3', + h4: 'Titre 4', + h5: 'Titre 5', + h6: 'Titre 6' + }, + lists: { + unordered: 'Liste à puces', + ordered: 'Liste numérotée' + }, + options: { + help: 'Aide', + fullscreen: 'Plein écran', + codeview: 'Afficher le code HTML' + }, + paragraph: { + paragraph: 'Paragraphe', + outdent: 'Diminuer le retrait', + indent: 'Augmenter le retrait', + left: 'Aligner à gauche', + center: 'Centrer', + right: 'Aligner à droite', + justify: 'Justifier' + }, + color: { + recent: 'Dernière couleur sélectionnée', + more: 'Plus de couleurs', + background: 'Couleur de fond', + foreground: 'Couleur de police', + transparent: 'Transparent', + setTransparent: 'Définir la transparence', + reset: 'Restaurer', + resetToDefault: 'Restaurer la couleur par défaut' + }, + shortcut: { + shortcuts: 'Raccourcis', + close: 'Fermer', + textFormatting: 'Mise en forme du texte', + action: 'Action', + paragraphFormatting: 'Mise en forme des paragraphes', + documentStyle: 'Style du document', + extraKeys: 'Touches supplémentaires' + }, + history: { + undo: 'Annuler la dernière action', + redo: 'Restaurer la dernière action annulée' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-fr-FR.min.js b/plugins/summernote/lang/summernote-fr-FR.min.js new file mode 100644 index 0000000..ff3ac6f --- /dev/null +++ b/plugins/summernote/lang/summernote-fr-FR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"fr-FR":{font:{bold:"Gras",italic:"Italique",underline:"Souligné",clear:"Effacer la mise en forme",height:"Interligne",name:"Famille de police",strikethrough:"Barré",superscript:"Exposant",subscript:"Indice",size:"Taille de police"},image:{image:"Image",insert:"Insérer une image",resizeFull:"Taille originale",resizeHalf:"Redimensionner à 50 %",resizeQuarter:"Redimensionner à 25 %",floatLeft:"Aligné à gauche",floatRight:"Aligné à droite",floatNone:"Pas d'alignement",shapeRounded:"Forme: Rectangle arrondie",shapeCircle:"Forme: Cercle",shapeThumbnail:"Forme: Vignette",shapeNone:"Forme: Aucune",dragImageHere:"Faites glisser une image ou un texte dans ce cadre",dropImage:"Lachez l'image ou le texte",selectFromFiles:"Choisir un fichier",maximumFileSize:"Taille de fichier maximale",maximumFileSizeError:"Taille maximale du fichier dépassée",url:"URL de l'image",remove:"Supprimer l'image"},video:{video:"Vidéo",videoLink:"Lien vidéo",insert:"Insérer une vidéo",url:"URL de la vidéo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Lien",insert:"Insérer un lien",unlink:"Supprimer un lien",edit:"Modifier",textToDisplay:"Texte à afficher",url:"URL du lien",openInNewWindow:"Ouvrir dans une nouvelle fenêtre"},table:{table:"Tableau"},hr:{insert:"Insérer une ligne horizontale"},style:{style:"Style",p:"p",blockquote:"Citation",pre:"Code source",h1:"Titre 1",h2:"Titre 2",h3:"Titre 3",h4:"Titre 4",h5:"Titre 5",h6:"Titre 6"},lists:{unordered:"Liste à puces",ordered:"Liste numérotée"},options:{help:"Aide",fullscreen:"Plein écran",codeview:"Afficher le code HTML"},paragraph:{paragraph:"Paragraphe",outdent:"Diminuer le retrait",indent:"Augmenter le retrait",left:"Aligner à gauche",center:"Centrer",right:"Aligner à droite",justify:"Justifier"},color:{recent:"Dernière couleur sélectionnée",more:"Plus de couleurs",background:"Couleur de fond",foreground:"Couleur de police",transparent:"Transparent",setTransparent:"Définir la transparence",reset:"Restaurer",resetToDefault:"Restaurer la couleur par défaut"},shortcut:{shortcuts:"Raccourcis",close:"Fermer",textFormatting:"Mise en forme du texte",action:"Action",paragraphFormatting:"Mise en forme des paragraphes",documentStyle:"Style du document",extraKeys:"Touches supplémentaires"},history:{undo:"Annuler la dernière action",redo:"Restaurer la dernière action annulée"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-gl-ES.js b/plugins/summernote/lang/summernote-gl-ES.js new file mode 100644 index 0000000..004af3c --- /dev/null +++ b/plugins/summernote/lang/summernote-gl-ES.js @@ -0,0 +1,147 @@ +(function ($) { + $.extend($.summernote.lang, { + 'gl-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subliñado', + clear: 'Quitar estilo de fonte', + height: 'Altura de liña', + name: 'Fonte', + strikethrough: 'Riscado', + superscript: 'Superíndice', + subscript: 'Subíndice', + size: 'Tamaño da fonte' + }, + image: { + image: 'Imaxe', + insert: 'Inserir imaxe', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar á metade', + resizeQuarter: 'Redimensionar a un cuarto', + floatLeft: 'Flotar á esquerda', + floatRight: 'Flotar á dereita', + floatNone: 'Non flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Marco', + shapeNone: 'Forma: Ningunha', + dragImageHere: 'Arrastrar unha imaxe ou texto aquí', + dropImage: 'Solta a imaxe ou texto', + selectFromFiles: 'Seleccionar desde os arquivos', + maximumFileSize: 'Tamaño máximo do arquivo', + maximumFileSizeError: 'Superaches o tamaño máximo do arquivo.', + url: 'URL da imaxe', + remove: 'Eliminar imaxe' + }, + video: { + video: 'Vídeo', + videoLink: 'Ligazón do vídeo', + insert: 'Insertar vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)' + }, + link: { + link: 'Ligazón', + insert: 'Inserir Ligazón', + unlink: 'Quitar Ligazón', + edit: 'Editar', + textToDisplay: 'Texto para amosar', + url: 'Cara a que URL leva a ligazón?', + openInNewWindow: 'Abrir nunha nova xanela' + }, + table: { + table: 'Táboa' + }, + hr: { + insert: 'Inserir liña horizontal' + }, + style: { + style: 'Estilo', + normal: 'Normal', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista desordenada', + ordered: 'Lista ordenada' + }, + options: { + help: 'Axuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver código fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menos tabulación', + indent: 'Máis tabulación', + left: 'Aliñar á esquerda', + center: 'Aliñar ao centro', + right: 'Aliñar á dereita', + justify: 'Xustificar' + }, + color: { + recent: 'Última cor', + more: 'Máis cores', + background: 'Cor de fondo', + foreground: 'Cor de fuente', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar por defecto' + }, + shortcut: { + shortcuts: 'Atallos de teclado', + close: 'Pechar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de parágrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionais' + }, + help : { + 'insertParagraph': 'Inserir parágrafo', + 'undo': 'Desfacer última acción', + 'redo': 'Refacer última acción', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulación', + 'bold': 'Establecer estilo negrita', + 'italic': 'Establecer estilo cursiva', + 'underline': 'Establecer estilo subliñado', + 'strikethrough': 'Establecer estilo riscado', + 'removeFormat': 'Limpar estilo', + 'justifyLeft': 'Aliñar á esquerda', + 'justifyCenter': 'Aliñar ao centro', + 'justifyRight': 'Aliñar á dereita', + 'justifyFull': 'Xustificar', + 'insertUnorderedList': 'Inserir lista desordenada', + 'insertOrderedList': 'Inserir lista ordenada', + 'outdent': 'Reducir tabulación do parágrafo', + 'indent': 'Aumentar tabulación do parágrafo', + 'formatPara': 'Mudar estilo do bloque a parágrafo (etiqueta P)', + 'formatH1': 'Mudar estilo do bloque a H1', + 'formatH2': 'Mudar estilo do bloque a H2', + 'formatH3': 'Mudar estilo do bloque a H3', + 'formatH4': 'Mudar estilo do bloque a H4', + 'formatH5': 'Mudar estilo do bloque a H5', + 'formatH6': 'Mudar estilo do bloque a H6', + 'insertHorizontalRule': 'Inserir liña horizontal', + 'linkDialog.show': 'Amosar panel ligazóns' + }, + history: { + undo: 'Desfacer', + redo: 'Refacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIAIS', + select: 'Selecciona Caracteres especiais' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-gl-ES.min.js b/plugins/summernote/lang/summernote-gl-ES.min.js new file mode 100644 index 0000000..02fe5c8 --- /dev/null +++ b/plugins/summernote/lang/summernote-gl-ES.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"gl-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subliñado",clear:"Quitar estilo de fonte",height:"Altura de liña",name:"Fonte",strikethrough:"Riscado",superscript:"Superíndice",subscript:"Subíndice",size:"Tamaño da fonte"},image:{image:"Imaxe",insert:"Inserir imaxe",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar á metade",resizeQuarter:"Redimensionar a un cuarto",floatLeft:"Flotar á esquerda",floatRight:"Flotar á dereita",floatNone:"Non flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Marco",shapeNone:"Forma: Ningunha",dragImageHere:"Arrastrar unha imaxe ou texto aquí",dropImage:"Solta a imaxe ou texto",selectFromFiles:"Seleccionar desde os arquivos",maximumFileSize:"Tamaño máximo do arquivo",maximumFileSizeError:"Superaches o tamaño máximo do arquivo.",url:"URL da imaxe",remove:"Eliminar imaxe"},video:{video:"Vídeo",videoLink:"Ligazón do vídeo",insert:"Insertar vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)"},link:{link:"Ligazón",insert:"Inserir Ligazón",unlink:"Quitar Ligazón",edit:"Editar",textToDisplay:"Texto para amosar",url:"Cara a que URL leva a ligazón?",openInNewWindow:"Abrir nunha nova xanela"},table:{table:"Táboa"},hr:{insert:"Inserir liña horizontal"},style:{style:"Estilo",normal:"Normal",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista desordenada",ordered:"Lista ordenada"},options:{help:"Axuda",fullscreen:"Pantalla completa",codeview:"Ver código fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menos tabulación",indent:"Máis tabulación",left:"Aliñar á esquerda",center:"Aliñar ao centro",right:"Aliñar á dereita",justify:"Xustificar"},color:{recent:"Última cor",more:"Máis cores",background:"Cor de fondo",foreground:"Cor de fuente",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restaurar",resetToDefault:"Restaurar por defecto"},shortcut:{shortcuts:"Atallos de teclado",close:"Pechar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de parágrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionais"},help:{insertParagraph:"Inserir parágrafo",undo:"Desfacer última acción",redo:"Refacer última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subliñado",strikethrough:"Establecer estilo riscado",removeFormat:"Limpar estilo",justifyLeft:"Aliñar á esquerda",justifyCenter:"Aliñar ao centro",justifyRight:"Aliñar á dereita",justifyFull:"Xustificar",insertUnorderedList:"Inserir lista desordenada",insertOrderedList:"Inserir lista ordenada",outdent:"Reducir tabulación do parágrafo",indent:"Aumentar tabulación do parágrafo",formatPara:"Mudar estilo do bloque a parágrafo (etiqueta P)",formatH1:"Mudar estilo do bloque a H1",formatH2:"Mudar estilo do bloque a H2",formatH3:"Mudar estilo do bloque a H3",formatH4:"Mudar estilo do bloque a H4",formatH5:"Mudar estilo do bloque a H5",formatH6:"Mudar estilo do bloque a H6",insertHorizontalRule:"Inserir liña horizontal","linkDialog.show":"Amosar panel ligazóns"},history:{undo:"Desfacer",redo:"Refacer"},specialChar:{specialChar:"CARACTERES ESPECIAIS",select:"Selecciona Caracteres especiais"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-he-IL.js b/plugins/summernote/lang/summernote-he-IL.js new file mode 100644 index 0000000..344d93b --- /dev/null +++ b/plugins/summernote/lang/summernote-he-IL.js @@ -0,0 +1,107 @@ +(function ($) { + $.extend($.summernote.lang, { + 'he-IL': { + font: { + bold: 'מודגש', + italic: 'נטוי', + underline: 'קו תחתון', + clear: 'נקה עיצוב', + height: 'גובה', + name: 'גופן', + strikethrough: 'קו חוצה', + subscript: 'כתב תחתי', + superscript: 'כתב עילי', + size: 'גודל גופן' + }, + image: { + image: 'תמונה', + insert: 'הוסף תמונה', + resizeFull: 'גודל מלא', + resizeHalf: 'להקטין לחצי', + resizeQuarter: 'להקטין לרבע', + floatLeft: 'יישור לשמאל', + floatRight: 'יישור לימין', + floatNone: 'ישר', + dragImageHere: 'גרור תמונה לכאן', + selectFromFiles: 'בחר מתוך קבצים', + url: 'נתיב לתמונה', + remove: 'הסר תמונה' + }, + video: { + video: 'סרטון', + videoLink: 'קישור לסרטון', + insert: 'הוסף סרטון', + url: 'קישור לסרטון', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)' + }, + link: { + link: 'קישור', + insert: 'הוסף קישור', + unlink: 'הסר קישור', + edit: 'ערוך', + textToDisplay: 'טקסט להציג', + url: 'קישור', + openInNewWindow: 'פתח בחלון חדש' + }, + table: { + table: 'טבלה' + }, + hr: { + insert: 'הוסף קו' + }, + style: { + style: 'עיצוב', + p: 'טקסט רגיל', + blockquote: 'ציטוט', + pre: 'קוד', + h1: 'כותרת 1', + h2: 'כותרת 2', + h3: 'כותרת 3', + h4: 'כותרת 4', + h5: 'כותרת 5', + h6: 'כותרת 6' + }, + lists: { + unordered: 'רשימת תבליטים', + ordered: 'רשימה ממוספרת' + }, + options: { + help: 'עזרה', + fullscreen: 'מסך מלא', + codeview: 'תצוגת קוד' + }, + paragraph: { + paragraph: 'פסקה', + outdent: 'הקטן כניסה', + indent: 'הגדל כניסה', + left: 'יישור לשמאל', + center: 'יישור למרכז', + right: 'יישור לימין', + justify: 'מיושר' + }, + color: { + recent: 'צבע טקסט אחרון', + more: 'עוד צבעים', + background: 'צבע רקע', + foreground: 'צבע טקסט', + transparent: 'שקוף', + setTransparent: 'קבע כשקוף', + reset: 'איפוס', + resetToDefault: 'אפס לברירת מחדל' + }, + shortcut: { + shortcuts: 'קיצורי מקלדת', + close: 'סגור', + textFormatting: 'עיצוב הטקסט', + action: 'פעולה', + paragraphFormatting: 'סגנונות פסקה', + documentStyle: 'עיצוב המסמך', + extraKeys: 'קיצורים נוספים' + }, + history: { + undo: 'בטל פעולה', + redo: 'בצע שוב' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-he-IL.min.js b/plugins/summernote/lang/summernote-he-IL.min.js new file mode 100644 index 0000000..ad7c03c --- /dev/null +++ b/plugins/summernote/lang/summernote-he-IL.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"he-IL":{font:{bold:"מודגש",italic:"נטוי",underline:"קו תחתון",clear:"נקה עיצוב",height:"גובה",name:"גופן",strikethrough:"קו חוצה",subscript:"כתב תחתי",superscript:"כתב עילי",size:"גודל גופן"},image:{image:"תמונה",insert:"הוסף תמונה",resizeFull:"גודל מלא",resizeHalf:"להקטין לחצי",resizeQuarter:"להקטין לרבע",floatLeft:"יישור לשמאל",floatRight:"יישור לימין",floatNone:"ישר",dragImageHere:"גרור תמונה לכאן",selectFromFiles:"בחר מתוך קבצים",url:"נתיב לתמונה",remove:"הסר תמונה"},video:{video:"סרטון",videoLink:"קישור לסרטון",insert:"הוסף סרטון",url:"קישור לסרטון",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)"},link:{link:"קישור",insert:"הוסף קישור",unlink:"הסר קישור",edit:"ערוך",textToDisplay:"טקסט להציג",url:"קישור",openInNewWindow:"פתח בחלון חדש"},table:{table:"טבלה"},hr:{insert:"הוסף קו"},style:{style:"עיצוב",p:"טקסט רגיל",blockquote:"ציטוט",pre:"קוד",h1:"כותרת 1",h2:"כותרת 2",h3:"כותרת 3",h4:"כותרת 4",h5:"כותרת 5",h6:"כותרת 6"},lists:{unordered:"רשימת תבליטים",ordered:"רשימה ממוספרת"},options:{help:"עזרה",fullscreen:"מסך מלא",codeview:"תצוגת קוד"},paragraph:{paragraph:"פסקה",outdent:"הקטן כניסה",indent:"הגדל כניסה",left:"יישור לשמאל",center:"יישור למרכז",right:"יישור לימין",justify:"מיושר"},color:{recent:"צבע טקסט אחרון",more:"עוד צבעים",background:"צבע רקע",foreground:"צבע טקסט",transparent:"שקוף",setTransparent:"קבע כשקוף",reset:"איפוס",resetToDefault:"אפס לברירת מחדל"},shortcut:{shortcuts:"קיצורי מקלדת",close:"סגור",textFormatting:"עיצוב הטקסט",action:"פעולה",paragraphFormatting:"סגנונות פסקה",documentStyle:"עיצוב המסמך",extraKeys:"קיצורים נוספים"},history:{undo:"בטל פעולה",redo:"בצע שוב"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-hr-HR.js b/plugins/summernote/lang/summernote-hr-HR.js new file mode 100644 index 0000000..8b0d8bf --- /dev/null +++ b/plugins/summernote/lang/summernote-hr-HR.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'hr-HR': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + strikethrough: 'Precrtano', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Ubaci sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Poravnaj lijevo', + floatRight: 'Poravnaj desno', + floatNone: 'Bez poravnanja', + dragImageHere: 'Povuci sliku ovdje', + selectFromFiles: 'Izaberi iz datoteke', + url: 'Adresa slike', + remove: 'Ukloni sliku' + }, + video: { + video: 'Video', + videoLink: 'Veza na video', + insert: 'Ubaci video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Ubaci vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tablica' + }, + hr: { + insert: 'Ubaci horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kôd', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerirana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko cijelog ekrana', + codeview: 'Izvorni kôd' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povećaj uvlačenje', + left: 'Poravnaj lijevo', + center: 'Centrirano', + right: 'Poravnaj desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Posljednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Prozirna', + setTransparent: 'Prozirna', + reset: 'Poništi', + resetToDefault: 'Podrazumijevana' + }, + shortcut: { + shortcuts: 'Prečice s tipkovnice', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-hr-HR.min.js b/plugins/summernote/lang/summernote-hr-HR.min.js new file mode 100644 index 0000000..7c7508f --- /dev/null +++ b/plugins/summernote/lang/summernote-hr-HR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"hr-HR":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",strikethrough:"Precrtano",size:"Veličina fonta"},image:{image:"Slika",insert:"Ubaci sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Poravnaj lijevo",floatRight:"Poravnaj desno",floatNone:"Bez poravnanja",dragImageHere:"Povuci sliku ovdje",selectFromFiles:"Izaberi iz datoteke",url:"Adresa slike",remove:"Ukloni sliku"},video:{video:"Video",videoLink:"Veza na video",insert:"Ubaci video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Ubaci vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tablica"},hr:{insert:"Ubaci horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kôd",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Obična lista",ordered:"Numerirana lista"},options:{help:"Pomoć",fullscreen:"Preko cijelog ekrana",codeview:"Izvorni kôd"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povećaj uvlačenje",left:"Poravnaj lijevo",center:"Centrirano",right:"Poravnaj desno",justify:"Poravnaj obostrano"},color:{recent:"Posljednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Prozirna",setTransparent:"Prozirna",reset:"Poništi",resetToDefault:"Podrazumijevana"},shortcut:{shortcuts:"Prečice s tipkovnice",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},history:{undo:"Poništi",redo:"Ponovi"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-hu-HU.js b/plugins/summernote/lang/summernote-hu-HU.js new file mode 100644 index 0000000..e732c94 --- /dev/null +++ b/plugins/summernote/lang/summernote-hu-HU.js @@ -0,0 +1,135 @@ +(function ($) { + $.extend($.summernote.lang, { + 'hu-HU': { + font: { + bold: 'Félkövér', + italic: 'Dőlt', + underline: 'Aláhúzott', + clear: 'Formázás törlése', + height: 'Sorköz', + name: 'Betűtípus', + strikethrough: 'Áthúzott', + size: 'Betűméret' + }, + image: { + image: 'Kép', + insert: 'Kép beszúrása', + resizeFull: 'Átméretezés teljes méretre', + resizeHalf: 'Átméretezés felére', + resizeQuarter: 'Átméretezés negyedére', + floatLeft: 'Igazítás balra', + floatRight: 'Igazítás jobbra', + floatNone: 'Igazítás törlése', + dragImageHere: 'Ide húzhat képet vagy szöveget', + dropImage: 'Engedje el a képet vagy szöveget', + selectFromFiles: 'Fájlok kiválasztása', + url: 'Kép URL címe', + remove: 'Kép törlése' + }, + video: { + video: 'Videó', + videoLink: 'Videó hivatkozás', + insert: 'Videó beszúrása', + url: 'Videó URL címe', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)' + }, + link: { + link: 'Hivatkozás', + insert: 'Hivatkozás beszúrása', + unlink: 'Hivatkozás megszüntetése', + edit: 'Szerkesztés', + textToDisplay: 'Megjelenítendő szöveg', + url: 'Milyen URL címre hivatkozzon?', + openInNewWindow: 'Megnyitás új ablakban' + }, + table: { + table: 'Táblázat' + }, + hr: { + insert: 'Elválasztó vonal beszúrása' + }, + style: { + style: 'Stílus', + p: 'Normál', + blockquote: 'Idézet', + pre: 'Kód', + h1: 'Fejléc 1', + h2: 'Fejléc 2', + h3: 'Fejléc 3', + h4: 'Fejléc 4', + h5: 'Fejléc 5', + h6: 'Fejléc 6' + }, + lists: { + unordered: 'Listajeles lista', + ordered: 'Számozott lista' + }, + options: { + help: 'Súgó', + fullscreen: 'Teljes képernyő', + codeview: 'Kód nézet' + }, + paragraph: { + paragraph: 'Bekezdés', + outdent: 'Behúzás csökkentése', + indent: 'Behúzás növelése', + left: 'Igazítás balra', + center: 'Igazítás középre', + right: 'Igazítás jobbra', + justify: 'Sorkizárt' + }, + color: { + recent: 'Jelenlegi szín', + more: 'További színek', + background: 'Háttérszín', + foreground: 'Betűszín', + transparent: 'Átlátszó', + setTransparent: 'Átlászóság beállítása', + reset: 'Visszaállítás', + resetToDefault: 'Alaphelyzetbe állítás' + }, + shortcut: { + shortcuts: 'Gyorsbillentyű', + close: 'Bezárás', + textFormatting: 'Szöveg formázása', + action: 'Művelet', + paragraphFormatting: 'Bekezdés formázása', + documentStyle: 'Dokumentumstílus' + }, + help: { + 'insertParagraph': 'Új bekezdés', + 'undo': 'Visszavonás', + 'redo': 'Újra', + 'tab': 'Behúzás növelése', + 'untab': 'Behúzás csökkentése', + 'bold': 'Félkövérre állítás', + 'italic': 'Dőltre állítás', + 'underline': 'Aláhúzás', + 'strikethrough': 'Áthúzás', + 'removeFormat': 'Formázás törlése', + 'justifyLeft': 'Balra igazítás', + 'justifyCenter': 'Középre igazítás', + 'justifyRight': 'Jobbra igazítás', + 'justifyFull': 'Sorkizárt', + 'insertUnorderedList': 'Számozatlan lista be/ki', + 'insertOrderedList': 'Számozott lista be/ki', + 'outdent': 'Jelenlegi bekezdés behúzásának megszüntetése', + 'indent': 'Jelenlegi bekezdés behúzása', + 'formatPara': 'Blokk formázása bekezdésként (P tag)', + 'formatH1': 'Blokk formázása, mint Fejléc 1', + 'formatH2': 'Blokk formázása, mint Fejléc 2', + 'formatH3': 'Blokk formázása, mint Fejléc 3', + 'formatH4': 'Blokk formázása, mint Fejléc 4', + 'formatH5': 'Blokk formázása, mint Fejléc 5', + 'formatH6': 'Blokk formázása, mint Fejléc 6', + 'insertHorizontalRule': 'Vízszintes vonal beszúrása', + 'linkDialog.show': 'Link párbeszédablak megjelenítése' + }, + history: { + undo: 'Visszavonás', + redo: 'Újra' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-hu-HU.min.js b/plugins/summernote/lang/summernote-hu-HU.min.js new file mode 100644 index 0000000..4f896a1 --- /dev/null +++ b/plugins/summernote/lang/summernote-hu-HU.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"hu-HU":{font:{bold:"Félkövér",italic:"Dőlt",underline:"Aláhúzott",clear:"Formázás törlése",height:"Sorköz",name:"Betűtípus",strikethrough:"Áthúzott",size:"Betűméret"},image:{image:"Kép",insert:"Kép beszúrása",resizeFull:"Átméretezés teljes méretre",resizeHalf:"Átméretezés felére",resizeQuarter:"Átméretezés negyedére",floatLeft:"Igazítás balra",floatRight:"Igazítás jobbra",floatNone:"Igazítás törlése",dragImageHere:"Ide húzhat képet vagy szöveget",dropImage:"Engedje el a képet vagy szöveget",selectFromFiles:"Fájlok kiválasztása",url:"Kép URL címe",remove:"Kép törlése"},video:{video:"Videó",videoLink:"Videó hivatkozás",insert:"Videó beszúrása",url:"Videó URL címe",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)"},link:{link:"Hivatkozás",insert:"Hivatkozás beszúrása",unlink:"Hivatkozás megszüntetése",edit:"Szerkesztés",textToDisplay:"Megjelenítendő szöveg",url:"Milyen URL címre hivatkozzon?",openInNewWindow:"Megnyitás új ablakban"},table:{table:"Táblázat"},hr:{insert:"Elválasztó vonal beszúrása"},style:{style:"Stílus",p:"Normál",blockquote:"Idézet",pre:"Kód",h1:"Fejléc 1",h2:"Fejléc 2",h3:"Fejléc 3",h4:"Fejléc 4",h5:"Fejléc 5",h6:"Fejléc 6"},lists:{unordered:"Listajeles lista",ordered:"Számozott lista"},options:{help:"Súgó",fullscreen:"Teljes képernyő",codeview:"Kód nézet"},paragraph:{paragraph:"Bekezdés",outdent:"Behúzás csökkentése",indent:"Behúzás növelése",left:"Igazítás balra",center:"Igazítás középre",right:"Igazítás jobbra",justify:"Sorkizárt"},color:{recent:"Jelenlegi szín",more:"További színek",background:"Háttérszín",foreground:"Betűszín",transparent:"Átlátszó",setTransparent:"Átlászóság beállítása",reset:"Visszaállítás",resetToDefault:"Alaphelyzetbe állítás"},shortcut:{shortcuts:"Gyorsbillentyű",close:"Bezárás",textFormatting:"Szöveg formázása",action:"Művelet",paragraphFormatting:"Bekezdés formázása",documentStyle:"Dokumentumstílus"},help:{insertParagraph:"Új bekezdés",undo:"Visszavonás",redo:"Újra",tab:"Behúzás növelése",untab:"Behúzás csökkentése",bold:"Félkövérre állítás",italic:"Dőltre állítás",underline:"Aláhúzás",strikethrough:"Áthúzás",removeFormat:"Formázás törlése",justifyLeft:"Balra igazítás",justifyCenter:"Középre igazítás",justifyRight:"Jobbra igazítás",justifyFull:"Sorkizárt",insertUnorderedList:"Számozatlan lista be/ki",insertOrderedList:"Számozott lista be/ki",outdent:"Jelenlegi bekezdés behúzásának megszüntetése",indent:"Jelenlegi bekezdés behúzása",formatPara:"Blokk formázása bekezdésként (P tag)",formatH1:"Blokk formázása, mint Fejléc 1",formatH2:"Blokk formázása, mint Fejléc 2",formatH3:"Blokk formázása, mint Fejléc 3",formatH4:"Blokk formázása, mint Fejléc 4",formatH5:"Blokk formázása, mint Fejléc 5",formatH6:"Blokk formázása, mint Fejléc 6",insertHorizontalRule:"Vízszintes vonal beszúrása","linkDialog.show":"Link párbeszédablak megjelenítése"},history:{undo:"Visszavonás",redo:"Újra"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-id-ID.js b/plugins/summernote/lang/summernote-id-ID.js new file mode 100644 index 0000000..8283107 --- /dev/null +++ b/plugins/summernote/lang/summernote-id-ID.js @@ -0,0 +1,103 @@ +(function ($) { + $.extend($.summernote.lang, { + 'id-ID': { + font: { + bold: 'Tebal', + italic: 'Miring', + underline: 'Garis bawah', + clear: 'Bersihkan gaya', + height: 'Jarak baris', + strikethrough: 'Coret', + size: 'Ukuran font' + }, + image: { + image: 'Gambar', + insert: 'Sisipkan gambar', + resizeFull: 'Ukuran penuh', + resizeHalf: 'Ukuran 50%', + resizeQuarter: 'Ukuran 25%', + floatLeft: 'Rata kiri', + floatRight: 'Rata kanan', + floatNone: 'Tidak ada perataan', + dragImageHere: 'Tarik gambar pada area ini', + selectFromFiles: 'Pilih gambar dari berkas', + url: 'URL gambar', + remove: 'Hapus Gambar' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Sisipkan video', + url: 'Tautan video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)' + }, + link: { + link: 'Tautan', + insert: 'Tambah tautan', + unlink: 'Hapus tautan', + edit: 'Edit', + textToDisplay: 'Tampilan teks', + url: 'Tautan tujuan', + openInNewWindow: 'Buka di jendela baru' + }, + table: { + table: 'Tabel' + }, + hr: { + insert: 'Masukkan garis horizontal' + }, + style: { + style: 'Gaya', + p: 'p', + blockquote: 'Kutipan', + pre: 'Kode', + h1: 'Heading 1', + h2: 'Heading 2', + h3: 'Heading 3', + h4: 'Heading 4', + h5: 'Heading 5', + h6: 'Heading 6' + }, + lists: { + unordered: 'Pencacahan', + ordered: 'Penomoran' + }, + options: { + help: 'Bantuan', + fullscreen: 'Layar penuh', + codeview: 'Kode HTML' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Outdent', + indent: 'Indent', + left: 'Rata kiri', + center: 'Rata tengah', + right: 'Rata kanan', + justify: 'Rata kanan kiri' + }, + color: { + recent: 'Warna sekarang', + more: 'Selengkapnya', + background: 'Warna latar', + foreground: 'Warna font', + transparent: 'Transparan', + setTransparent: 'Atur transparansi', + reset: 'Atur ulang', + resetToDefault: 'Kembalikan kesemula' + }, + shortcut: { + shortcuts: 'Jalan pintas', + close: 'Keluar', + textFormatting: 'Format teks', + action: 'Aksi', + paragraphFormatting: 'Format paragraf', + documentStyle: 'Gaya dokumen' + }, + history: { + undo: 'Kembali', + redo: 'Ulang' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-id-ID.min.js b/plugins/summernote/lang/summernote-id-ID.min.js new file mode 100644 index 0000000..5b634af --- /dev/null +++ b/plugins/summernote/lang/summernote-id-ID.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"id-ID":{font:{bold:"Tebal",italic:"Miring",underline:"Garis bawah",clear:"Bersihkan gaya",height:"Jarak baris",strikethrough:"Coret",size:"Ukuran font"},image:{image:"Gambar",insert:"Sisipkan gambar",resizeFull:"Ukuran penuh",resizeHalf:"Ukuran 50%",resizeQuarter:"Ukuran 25%",floatLeft:"Rata kiri",floatRight:"Rata kanan",floatNone:"Tidak ada perataan",dragImageHere:"Tarik gambar pada area ini",selectFromFiles:"Pilih gambar dari berkas",url:"URL gambar",remove:"Hapus Gambar"},video:{video:"Video",videoLink:"Link video",insert:"Sisipkan video",url:"Tautan video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)"},link:{link:"Tautan",insert:"Tambah tautan",unlink:"Hapus tautan",edit:"Edit",textToDisplay:"Tampilan teks",url:"Tautan tujuan",openInNewWindow:"Buka di jendela baru"},table:{table:"Tabel"},hr:{insert:"Masukkan garis horizontal"},style:{style:"Gaya",p:"p",blockquote:"Kutipan",pre:"Kode",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6"},lists:{unordered:"Pencacahan",ordered:"Penomoran"},options:{help:"Bantuan",fullscreen:"Layar penuh",codeview:"Kode HTML"},paragraph:{paragraph:"Paragraf",outdent:"Outdent",indent:"Indent",left:"Rata kiri",center:"Rata tengah",right:"Rata kanan",justify:"Rata kanan kiri"},color:{recent:"Warna sekarang",more:"Selengkapnya",background:"Warna latar",foreground:"Warna font",transparent:"Transparan",setTransparent:"Atur transparansi",reset:"Atur ulang",resetToDefault:"Kembalikan kesemula"},shortcut:{shortcuts:"Jalan pintas",close:"Keluar",textFormatting:"Format teks",action:"Aksi",paragraphFormatting:"Format paragraf",documentStyle:"Gaya dokumen"},history:{undo:"Kembali",redo:"Ulang"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-it-IT.js b/plugins/summernote/lang/summernote-it-IT.js new file mode 100644 index 0000000..73f133c --- /dev/null +++ b/plugins/summernote/lang/summernote-it-IT.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'it-IT': { + font: { + bold: 'Testo in grassetto', + italic: 'Testo in corsivo', + underline: 'Testo sottolineato', + clear: 'Elimina la formattazione del testo', + height: 'Altezza della linea di testo', + name: 'Famiglia Font', + strikethrough: 'Testo barrato', + size: 'Dimensione del carattere' + }, + image: { + image: 'Immagine', + insert: 'Inserisci Immagine', + resizeFull: 'Dimensioni originali', + resizeHalf: 'Ridimensiona al 50%', + resizeQuarter: 'Ridimensiona al 25%', + floatLeft: 'Posiziona a sinistra', + floatRight: 'Posiziona a destra', + floatNone: 'Nessun posizionamento', + dragImageHere: 'Trascina qui un\'immagine', + selectFromFiles: 'Scegli dai Documenti', + url: 'URL dell\'immagine', + remove: 'Rimuovi immagine' + }, + video: { + video: 'Video', + videoLink: 'Collegamento ad un Video', + insert: 'Inserisci Video', + url: 'URL del Video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Collegamento', + insert: 'Inserisci Collegamento', + unlink: 'Elimina collegamento', + edit: 'Modifica collegamento', + textToDisplay: 'Testo del collegamento', + url: 'URL del collegamento', + openInNewWindow: 'Apri in una nuova finestra' + }, + table: { + table: 'Tabella' + }, + hr: { + insert: 'Inserisce una linea di separazione' + }, + style: { + style: 'Stili', + p: 'pe', + blockquote: 'Citazione', + pre: 'Codice', + h1: 'Titolo 1', + h2: 'Titolo 2', + h3: 'Titolo 3', + h4: 'Titolo 4', + h5: 'Titolo 5', + h6: 'Titolo 6' + }, + lists: { + unordered: 'Elenco non ordinato', + ordered: 'Elenco ordinato' + }, + options: { + help: 'Aiuto', + fullscreen: 'Modalità a tutto schermo', + codeview: 'Visualizza codice' + }, + paragraph: { + paragraph: 'Paragrafo', + outdent: 'Diminuisce il livello di rientro', + indent: 'Aumenta il livello di rientro', + left: 'Allinea a sinistra', + center: 'Centra', + right: 'Allinea a destra', + justify: 'Giustifica (allinea a destra e sinistra)' + }, + color: { + recent: 'Ultimo colore utilizzato', + more: 'Altri colori', + background: 'Colore di sfondo', + foreground: 'Colore', + transparent: 'Trasparente', + setTransparent: 'Trasparente', + reset: 'Reimposta', + resetToDefault: 'Reimposta i colori' + }, + shortcut: { + shortcuts: 'Scorciatoie da tastiera', + close: 'Chiudi', + textFormatting: 'Formattazione testo', + action: 'Azioni', + paragraphFormatting: 'Formattazione paragrafo', + documentStyle: 'Stili' + }, + history: { + undo: 'Annulla', + redo: 'Ripristina' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-it-IT.min.js b/plugins/summernote/lang/summernote-it-IT.min.js new file mode 100644 index 0000000..277678a --- /dev/null +++ b/plugins/summernote/lang/summernote-it-IT.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"it-IT":{font:{bold:"Testo in grassetto",italic:"Testo in corsivo",underline:"Testo sottolineato",clear:"Elimina la formattazione del testo",height:"Altezza della linea di testo",name:"Famiglia Font",strikethrough:"Testo barrato",size:"Dimensione del carattere"},image:{image:"Immagine",insert:"Inserisci Immagine",resizeFull:"Dimensioni originali",resizeHalf:"Ridimensiona al 50%",resizeQuarter:"Ridimensiona al 25%",floatLeft:"Posiziona a sinistra",floatRight:"Posiziona a destra",floatNone:"Nessun posizionamento",dragImageHere:"Trascina qui un'immagine",selectFromFiles:"Scegli dai Documenti",url:"URL dell'immagine",remove:"Rimuovi immagine"},video:{video:"Video",videoLink:"Collegamento ad un Video",insert:"Inserisci Video",url:"URL del Video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Collegamento",insert:"Inserisci Collegamento",unlink:"Elimina collegamento",edit:"Modifica collegamento",textToDisplay:"Testo del collegamento",url:"URL del collegamento",openInNewWindow:"Apri in una nuova finestra"},table:{table:"Tabella"},hr:{insert:"Inserisce una linea di separazione"},style:{style:"Stili",p:"pe",blockquote:"Citazione",pre:"Codice",h1:"Titolo 1",h2:"Titolo 2",h3:"Titolo 3",h4:"Titolo 4",h5:"Titolo 5",h6:"Titolo 6"},lists:{unordered:"Elenco non ordinato",ordered:"Elenco ordinato"},options:{help:"Aiuto",fullscreen:"Modalità a tutto schermo",codeview:"Visualizza codice"},paragraph:{paragraph:"Paragrafo",outdent:"Diminuisce il livello di rientro",indent:"Aumenta il livello di rientro",left:"Allinea a sinistra",center:"Centra",right:"Allinea a destra",justify:"Giustifica (allinea a destra e sinistra)"},color:{recent:"Ultimo colore utilizzato",more:"Altri colori",background:"Colore di sfondo",foreground:"Colore",transparent:"Trasparente",setTransparent:"Trasparente",reset:"Reimposta",resetToDefault:"Reimposta i colori"},shortcut:{shortcuts:"Scorciatoie da tastiera",close:"Chiudi",textFormatting:"Formattazione testo",action:"Azioni",paragraphFormatting:"Formattazione paragrafo",documentStyle:"Stili"},history:{undo:"Annulla",redo:"Ripristina"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-ja-JP.js b/plugins/summernote/lang/summernote-ja-JP.js new file mode 100644 index 0000000..58ac5af --- /dev/null +++ b/plugins/summernote/lang/summernote-ja-JP.js @@ -0,0 +1,133 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ja-JP': { + font: { + bold: '太字', + italic: '斜体', + underline: '下線', + clear: 'クリア', + height: '文字高', + name: 'フォント', + strikethrough: '取り消し線', + size: '大きさ' + }, + image: { + image: '画像', + insert: '画像挿入', + resizeFull: '最大化', + resizeHalf: '1/2', + resizeQuarter: '1/4', + floatLeft: '左寄せ', + floatRight: '右寄せ', + floatNone: '寄せ解除', + dragImageHere: 'ここに画像をドラッグしてください', + selectFromFiles: '画像ファイルを選ぶ', + url: 'URLから画像を挿入する', + remove: '画像を削除する' + }, + video: { + video: '動画', + videoLink: '動画リンク', + insert: '動画挿入', + url: '動画のURL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)' + }, + link: { + link: 'リンク', + insert: 'リンク挿入', + unlink: 'リンク解除', + edit: '編集', + textToDisplay: 'リンク文字列', + url: 'URLを入力してください', + openInNewWindow: '新しいウィンドウで開く' + }, + table: { + table: 'テーブル' + }, + hr: { + insert: '水平線の挿入' + }, + style: { + style: 'スタイル', + p: '標準', + blockquote: '引用', + pre: 'コード', + h1: '見出し1', + h2: '見出し2', + h3: '見出し3', + h4: '見出し4', + h5: '見出し5', + h6: '見出し6' + }, + lists: { + unordered: '通常リスト', + ordered: '番号リスト' + }, + options: { + help: 'ヘルプ', + fullscreen: 'フルスクリーン', + codeview: 'コード表示' + }, + paragraph: { + paragraph: '文章', + outdent: '字上げ', + indent: '字下げ', + left: '左寄せ', + center: '中央寄せ', + right: '右寄せ', + justify: '均等割付' + }, + color: { + recent: '現在の色', + more: 'もっと見る', + background: '背景色', + foreground: '文字色', + transparent: '透過率', + setTransparent: '透過率を設定', + reset: '標準', + resetToDefault: '標準に戻す' + }, + shortcut: { + shortcuts: 'ショートカット', + close: '閉じる', + textFormatting: '文字フォーマット', + action: 'アクション', + paragraphFormatting: '文章フォーマット', + documentStyle: 'ドキュメント形式' + }, + history: { + undo: '元に戻す', + redo: 'やり直す' + }, + help: { + 'insertParagraph': '改行挿入', + 'undo': '一旦、行った操作を戻す', + 'redo': '最後のコマンドをやり直す', + 'tab': 'Tab', + 'untab': 'タブ戻し', + 'bold': '太文字', + 'italic': '斜体', + 'underline': '下線', + 'strikethrough': '取り消し線', + 'removeFormat': '装飾を戻す', + 'justifyLeft': '左寄せ', + 'justifyCenter': '真ん中寄せ', + 'justifyRight': '右寄せ', + 'justifyFull': 'すべてを整列', + 'insertUnorderedList': '行頭に●を挿入', + 'insertOrderedList': '行頭に番号を挿入', + 'outdent': '字下げを戻す(アウトデント)', + 'indent': '字下げする(インデント)', + 'formatPara': '段落(P tag)指定', + 'formatH1': 'H1指定', + 'formatH2': 'H2指定', + 'formatH3': 'H3指定', + 'formatH4': 'H4指定', + 'formatH5': 'H5指定', + 'formatH6': 'H6指定', + 'insertHorizontalRule': '&lt;hr /&gt;を挿入', + 'linkDialog.show': 'リンク挿入' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ja-JP.min.js b/plugins/summernote/lang/summernote-ja-JP.min.js new file mode 100644 index 0000000..8691dd0 --- /dev/null +++ b/plugins/summernote/lang/summernote-ja-JP.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ja-JP":{font:{bold:"太字",italic:"斜体",underline:"下線",clear:"クリア",height:"文字高",name:"フォント",strikethrough:"取り消し線",size:"大きさ"},image:{image:"画像",insert:"画像挿入",resizeFull:"最大化",resizeHalf:"1/2",resizeQuarter:"1/4",floatLeft:"左寄せ",floatRight:"右寄せ",floatNone:"寄せ解除",dragImageHere:"ここに画像をドラッグしてください",selectFromFiles:"画像ファイルを選ぶ",url:"URLから画像を挿入する",remove:"画像を削除する"},video:{video:"動画",videoLink:"動画リンク",insert:"動画挿入",url:"動画のURL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)"},link:{link:"リンク",insert:"リンク挿入",unlink:"リンク解除",edit:"編集",textToDisplay:"リンク文字列",url:"URLを入力してください",openInNewWindow:"新しいウィンドウで開く"},table:{table:"テーブル"},hr:{insert:"水平線の挿入"},style:{style:"スタイル",p:"標準",blockquote:"引用",pre:"コード",h1:"見出し1",h2:"見出し2",h3:"見出し3",h4:"見出し4",h5:"見出し5",h6:"見出し6"},lists:{unordered:"通常リスト",ordered:"番号リスト"},options:{help:"ヘルプ",fullscreen:"フルスクリーン",codeview:"コード表示"},paragraph:{paragraph:"文章",outdent:"字上げ",indent:"字下げ",left:"左寄せ",center:"中央寄せ",right:"右寄せ",justify:"均等割付"},color:{recent:"現在の色",more:"もっと見る",background:"背景色",foreground:"文字色",transparent:"透過率",setTransparent:"透過率を設定",reset:"標準",resetToDefault:"標準に戻す"},shortcut:{shortcuts:"ショートカット",close:"閉じる",textFormatting:"文字フォーマット",action:"アクション",paragraphFormatting:"文章フォーマット",documentStyle:"ドキュメント形式"},history:{undo:"元に戻す",redo:"やり直す"},help:{insertParagraph:"改行挿入",undo:"一旦、行った操作を戻す",redo:"最後のコマンドをやり直す",tab:"Tab",untab:"タブ戻し",bold:"太文字",italic:"斜体",underline:"下線",strikethrough:"取り消し線",removeFormat:"装飾を戻す",justifyLeft:"左寄せ",justifyCenter:"真ん中寄せ",justifyRight:"右寄せ",justifyFull:"すべてを整列",insertUnorderedList:"行頭に●を挿入",insertOrderedList:"行頭に番号を挿入",outdent:"字下げを戻す(アウトデント)",indent:"字下げする(インデント)",formatPara:"段落(P tag)指定",formatH1:"H1指定",formatH2:"H2指定",formatH3:"H3指定",formatH4:"H4指定",formatH5:"H5指定",formatH6:"H6指定",insertHorizontalRule:"&lt;hr /&gt;を挿入","linkDialog.show":"リンク挿入"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-ko-KR.js b/plugins/summernote/lang/summernote-ko-KR.js new file mode 100644 index 0000000..28aa872 --- /dev/null +++ b/plugins/summernote/lang/summernote-ko-KR.js @@ -0,0 +1,115 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ko-KR': { + font: { + bold: '굵게', + italic: '기울임꼴', + underline: '밑줄', + clear: '글자 효과 없애기', + height: '줄간격', + name: '글꼴', + superscript: '위 첨자', + subscript: '아래 첨자', + strikethrough: '취소선', + size: '글자 크기' + }, + image: { + image: '사진', + insert: '사진 추가', + resizeFull: '100% 크기로 변경', + resizeHalf: '50% 크기로 변경', + resizeQuarter: '25% 크기로 변경', + floatLeft: '왼쪽 정렬', + floatRight: '오른쪽 정렬', + floatNone: '정렬하지 않음', + shapeRounded: '스타일: 둥근 모서리', + shapeCircle: '스타일: 원형', + shapeThumbnail: '스타일: 액자', + shapeNone: '스타일: 없음', + dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요', + dropImage: '텍스트 혹은 사진을 내려놓으세요', + selectFromFiles: '파일 선택', + url: '사진 URL', + remove: '사진 삭제' + }, + video: { + video: '동영상', + videoLink: '동영상 링크', + insert: '동영상 추가', + url: '동영상 URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)' + }, + link: { + link: '링크', + insert: '링크 추가', + unlink: '링크 삭제', + edit: '수정', + textToDisplay: '링크에 표시할 내용', + url: '이동할 URL', + openInNewWindow: '새창으로 열기' + }, + table: { + table: '테이블' + }, + hr: { + insert: '구분선 추가' + }, + style: { + style: '스타일', + p: '본문', + blockquote: '인용구', + pre: '코드', + h1: '제목 1', + h2: '제목 2', + h3: '제목 3', + h4: '제목 4', + h5: '제목 5', + h6: '제목 6' + }, + lists: { + unordered: '글머리 기호', + ordered: '번호 매기기' + }, + options: { + help: '도움말', + fullscreen: '전체 화면', + codeview: '코드 보기' + }, + paragraph: { + paragraph: '문단 정렬', + outdent: '내어쓰기', + indent: '들여쓰기', + left: '왼쪽 정렬', + center: '가운데 정렬', + right: '오른쪽 정렬', + justify: '양쪽 정렬' + }, + color: { + recent: '마지막으로 사용한 색', + more: '다른 색 선택', + background: '배경색', + foreground: '글자색', + transparent: '투명', + setTransparent: '투명', + reset: '취소', + resetToDefault: '기본 값으로 변경' + }, + shortcut: { + shortcuts: '키보드 단축키', + close: '닫기', + textFormatting: '글자 스타일 적용', + action: '기능', + paragraphFormatting: '문단 스타일 적용', + documentStyle: '문서 스타일 적용' + }, + history: { + undo: '실행 취소', + redo: '다시 실행' + }, + specialChar: { + specialChar: '특수문자', + select: '특수문자를 선택하세요' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ko-KR.min.js b/plugins/summernote/lang/summernote-ko-KR.min.js new file mode 100644 index 0000000..a693af5 --- /dev/null +++ b/plugins/summernote/lang/summernote-ko-KR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ko-KR":{font:{bold:"굵게",italic:"기울임꼴",underline:"밑줄",clear:"글자 효과 없애기",height:"줄간격",name:"글꼴",superscript:"위 첨자",subscript:"아래 첨자",strikethrough:"취소선",size:"글자 크기"},image:{image:"사진",insert:"사진 추가",resizeFull:"100% 크기로 변경",resizeHalf:"50% 크기로 변경",resizeQuarter:"25% 크기로 변경",floatLeft:"왼쪽 정렬",floatRight:"오른쪽 정렬",floatNone:"정렬하지 않음",shapeRounded:"스타일: 둥근 모서리",shapeCircle:"스타일: 원형",shapeThumbnail:"스타일: 액자",shapeNone:"스타일: 없음",dragImageHere:"텍스트 혹은 사진을 이곳으로 끌어오세요",dropImage:"텍스트 혹은 사진을 내려놓으세요",selectFromFiles:"파일 선택",url:"사진 URL",remove:"사진 삭제"},video:{video:"동영상",videoLink:"동영상 링크",insert:"동영상 추가",url:"동영상 URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)"},link:{link:"링크",insert:"링크 추가",unlink:"링크 삭제",edit:"수정",textToDisplay:"링크에 표시할 내용",url:"이동할 URL",openInNewWindow:"새창으로 열기"},table:{table:"테이블"},hr:{insert:"구분선 추가"},style:{style:"스타일",p:"본문",blockquote:"인용구",pre:"코드",h1:"제목 1",h2:"제목 2",h3:"제목 3",h4:"제목 4",h5:"제목 5",h6:"제목 6"},lists:{unordered:"글머리 기호",ordered:"번호 매기기"},options:{help:"도움말",fullscreen:"전체 화면",codeview:"코드 보기"},paragraph:{paragraph:"문단 정렬",outdent:"내어쓰기",indent:"들여쓰기",left:"왼쪽 정렬",center:"가운데 정렬",right:"오른쪽 정렬",justify:"양쪽 정렬"},color:{recent:"마지막으로 사용한 색",more:"다른 색 선택",background:"배경색",foreground:"글자색",transparent:"투명",setTransparent:"투명",reset:"취소",resetToDefault:"기본 값으로 변경"},shortcut:{shortcuts:"키보드 단축키",close:"닫기",textFormatting:"글자 스타일 적용",action:"기능",paragraphFormatting:"문단 스타일 적용",documentStyle:"문서 스타일 적용"},history:{undo:"실행 취소",redo:"다시 실행"},specialChar:{specialChar:"특수문자",select:"특수문자를 선택하세요"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-lt-LT.js b/plugins/summernote/lang/summernote-lt-LT.js new file mode 100644 index 0000000..6ed66a9 --- /dev/null +++ b/plugins/summernote/lang/summernote-lt-LT.js @@ -0,0 +1,107 @@ +(function ($) { + $.extend($.summernote.lang, { + 'lt-LT': { + font: { + bold: 'Paryškintas', + italic: 'Kursyvas', + underline: 'Pabrėžtas', + clear: 'Be formatavimo', + height: 'Eilutės aukštis', + name: 'Šrifto pavadinimas', + strikethrough: 'Perbrauktas', + superscript: 'Viršutinis', + subscript: 'Indeksas', + size: 'Šrifto dydis' + }, + image: { + image: 'Paveikslėlis', + insert: 'Įterpti paveikslėlį', + resizeFull: 'Pilnas dydis', + resizeHalf: 'Sumažinti dydį 50%', + resizeQuarter: 'Sumažinti dydį 25%', + floatLeft: 'Kairinis lygiavimas', + floatRight: 'Dešininis lygiavimas', + floatNone: 'Jokio lygiavimo', + shapeRounded: 'Forma: apvalūs kraštai', + shapeCircle: 'Forma: apskritimas', + shapeThumbnail: 'Forma: miniatiūra', + shapeNone: 'Forma: jokia', + dragImageHere: 'Vilkite paveikslėlį čia', + selectFromFiles: 'Pasirinkite failą', + maximumFileSize: 'Maskimalus failo dydis', + maximumFileSizeError: 'Maskimalus failo dydis viršytas!', + url: 'Paveikslėlio URL adresas', + remove: 'Ištrinti paveikslėlį' + }, + link: { + link: 'Nuoroda', + insert: 'Įterpti nuorodą', + unlink: 'Pašalinti nuorodą', + edit: 'Redaguoti', + textToDisplay: 'Rodomas tekstas', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atidaryti naujame lange' + }, + table: { + table: 'Lentelė' + }, + hr: { + insert: 'Įterpti horizontalią liniją' + }, + style: { + style: 'Stilius', + p: 'pus', + blockquote: 'Citata', + pre: 'Kodas', + h1: 'Antraštė 1', + h2: 'Antraštė 2', + h3: 'Antraštė 3', + h4: 'Antraštė 4', + h5: 'Antraštė 5', + h6: 'Antraštė 6' + }, + lists: { + unordered: 'Suženklintasis sąrašas', + ordered: 'Sunumeruotas sąrašas' + }, + options: { + help: 'Pagalba', + fullscreen: 'Viso ekrano režimas', + codeview: 'HTML kodo peržiūra' + }, + paragraph: { + paragraph: 'Pastraipa', + outdent: 'Sumažinti įtrauką', + indent: 'Padidinti įtrauką', + left: 'Kairinė lygiuotė', + center: 'Centrinė lygiuotė', + right: 'Dešininė lygiuotė', + justify: 'Abipusis išlyginimas' + }, + color: { + recent: 'Paskutinė naudota spalva', + more: 'Daugiau spalvų', + background: 'Fono spalva', + foreground: 'Šrifto spalva', + transparent: 'Permatoma', + setTransparent: 'Nustatyti skaidrumo intensyvumą', + reset: 'Atkurti', + resetToDefault: 'Atstatyti numatytąją spalvą' + }, + shortcut: { + shortcuts: 'Spartieji klavišai', + close: 'Uždaryti', + textFormatting: 'Teksto formatavimas', + action: 'Veiksmas', + paragraphFormatting: 'Pastraipos formatavimas', + documentStyle: 'Dokumento stilius', + extraKeys: 'Papildomi klavišų deriniai' + }, + history: { + undo: 'Anuliuoti veiksmą', + redo: 'Perdaryti veiksmą' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-lt-LT.min.js b/plugins/summernote/lang/summernote-lt-LT.min.js new file mode 100644 index 0000000..d8ade05 --- /dev/null +++ b/plugins/summernote/lang/summernote-lt-LT.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"lt-LT":{font:{bold:"Paryškintas",italic:"Kursyvas",underline:"Pabrėžtas",clear:"Be formatavimo",height:"Eilutės aukštis",name:"Šrifto pavadinimas",strikethrough:"Perbrauktas",superscript:"Viršutinis",subscript:"Indeksas",size:"Šrifto dydis"},image:{image:"Paveikslėlis",insert:"Įterpti paveikslėlį",resizeFull:"Pilnas dydis",resizeHalf:"Sumažinti dydį 50%",resizeQuarter:"Sumažinti dydį 25%",floatLeft:"Kairinis lygiavimas",floatRight:"Dešininis lygiavimas",floatNone:"Jokio lygiavimo",shapeRounded:"Forma: apvalūs kraštai",shapeCircle:"Forma: apskritimas",shapeThumbnail:"Forma: miniatiūra",shapeNone:"Forma: jokia",dragImageHere:"Vilkite paveikslėlį čia",selectFromFiles:"Pasirinkite failą",maximumFileSize:"Maskimalus failo dydis",maximumFileSizeError:"Maskimalus failo dydis viršytas!",url:"Paveikslėlio URL adresas",remove:"Ištrinti paveikslėlį"},link:{link:"Nuoroda",insert:"Įterpti nuorodą",unlink:"Pašalinti nuorodą",edit:"Redaguoti",textToDisplay:"Rodomas tekstas",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atidaryti naujame lange"},table:{table:"Lentelė"},hr:{insert:"Įterpti horizontalią liniją"},style:{style:"Stilius",p:"pus",blockquote:"Citata",pre:"Kodas",h1:"Antraštė 1",h2:"Antraštė 2",h3:"Antraštė 3",h4:"Antraštė 4",h5:"Antraštė 5",h6:"Antraštė 6"},lists:{unordered:"Suženklintasis sąrašas",ordered:"Sunumeruotas sąrašas"},options:{help:"Pagalba",fullscreen:"Viso ekrano režimas",codeview:"HTML kodo peržiūra"},paragraph:{paragraph:"Pastraipa",outdent:"Sumažinti įtrauką",indent:"Padidinti įtrauką",left:"Kairinė lygiuotė",center:"Centrinė lygiuotė",right:"Dešininė lygiuotė",justify:"Abipusis išlyginimas"},color:{recent:"Paskutinė naudota spalva",more:"Daugiau spalvų",background:"Fono spalva",foreground:"Šrifto spalva",transparent:"Permatoma",setTransparent:"Nustatyti skaidrumo intensyvumą",reset:"Atkurti",resetToDefault:"Atstatyti numatytąją spalvą"},shortcut:{shortcuts:"Spartieji klavišai",close:"Uždaryti",textFormatting:"Teksto formatavimas",action:"Veiksmas",paragraphFormatting:"Pastraipos formatavimas",documentStyle:"Dokumento stilius",extraKeys:"Papildomi klavišų deriniai"},history:{undo:"Anuliuoti veiksmą",redo:"Perdaryti veiksmą"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-lt-LV.js b/plugins/summernote/lang/summernote-lt-LV.js new file mode 100644 index 0000000..e873d85 --- /dev/null +++ b/plugins/summernote/lang/summernote-lt-LV.js @@ -0,0 +1,135 @@ +(function ($) { + $.extend($.summernote.lang, { + 'lv-LV': { + font: { + bold: 'Treknraksts', + italic: 'Kursīvs', + underline: 'Pasvītrots', + clear: 'Noņemt formatējumu', + height: 'Līnijas augstums', + name: 'Fonts', + strikethrough: 'Nosvītrots', + superscript: 'Augšraksts', + subscript: 'Apakšraksts', + size: 'Fonta lielums' + }, + image: { + image: 'Attēls', + insert: 'Ievietot attēlu', + resizeFull: 'Pilns izmērts', + resizeHalf: 'Samazināt 50%', + resizeQuarter: 'Samazināt 25%', + floatLeft: 'Līdzināt pa kreisi', + floatRight: 'Līdzināt pa labi', + floatNone: 'Nelīdzināt', + shapeRounded: 'Forma: apaļām malām', + shapeCircle: 'Forma: aplis', + shapeThumbnail: 'Forma: rāmītis', + shapeNone: 'Forma: orģināla', + dragImageHere: 'Ievēlciet attēlu šeit', + selectFromFiles: 'Izvēlēties failu', + maximumFileSize: 'Maksimālais faila izmērs', + maximumFileSizeError: 'Faila izmērs pārāk liels!', + url: 'Attēla URL', + remove: 'Dzēst attēlu' + }, + link: { + link: 'Saite', + insert: 'Ievietot saiti', + unlink: 'Noņemt saiti', + edit: 'Rediģēt', + textToDisplay: 'Saites saturs', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atvērt jaunā logā' + }, + table: { + table: 'Tabula' + }, + hr: { + insert: 'Ievietot līniju' + }, + style: { + style: 'Stils', + p: 'Parasts', + blockquote: 'Citāts', + pre: 'Kods', + h1: 'Virsraksts h1', + h2: 'Virsraksts h2', + h3: 'Virsraksts h3', + h4: 'Virsraksts h4', + h5: 'Virsraksts h5', + h6: 'Virsraksts h6' + }, + lists: { + unordered: 'Nenumurēts saraksts', + ordered: 'Numurēts saraksts' + }, + options: { + help: 'Palīdzība', + fullscreen: 'Pa visu ekrānu', + codeview: 'HTML kods' + }, + paragraph: { + paragraph: 'Paragrāfs', + outdent: 'Samazināt atkāpi', + indent: 'Palielināt atkāpi', + left: 'Līdzināt pa kreisi', + center: 'Centrēt', + right: 'Līdzināt pa labi', + justify: 'Līdzināt gar abām malām' + }, + color: { + recent: 'Nesen izmantotās', + more: 'Citas krāsas', + background: 'Fona krāsa', + foreground: 'Fonta krāsa', + transparent: 'Caurspīdīgs', + setTransparent: 'Iestatīt caurspīdīgumu', + reset: 'Atjaunot', + resetToDefault: 'Atjaunot noklusējumu' + }, + shortcut: { + shortcuts: 'Saīsnes', + close: 'Aizvērt', + textFormatting: 'Teksta formatēšana', + action: 'Darbība', + paragraphFormatting: 'Paragrāfa formatēšana', + documentStyle: 'Dokumenta stils', + extraKeys: 'Citas taustiņu kombinācijas' + }, + history: { + undo: 'Atsauks (undo)', + redo: 'Atkārtot (redo)' + }, + help: { + insertParagraph: 'Ievietot Paragrāfu', + undo: 'Atcelt iepriekšējo darbību', + redo: 'Atkārtot atcelto darbību', + tab: 'Atkāpe', + untab: 'Samazināt atkāpi', + bold: 'Pārvērst tekstu treknrakstā', + italic: 'Pārvērst tekstu slīprakstā (kursīvā)', + underline: 'Pasvītrot tekstu', + strikethrough: 'Nosvītrot tekstu', + removeFormat: 'Notīrīt stilu no teksta', + justifyLeft: 'Līdzīnāt saturu pa kreisi', + justifyCenter: 'Centrēt saturu', + justifyRight: 'Līdzīnāt saturu pa labi', + justifyFull: 'Izlīdzināt saturu gar abām malām', + insertUnorderedList: 'Ievietot nenumurētu sarakstu', + insertOrderedList: 'Ievietot numurētu sarakstu', + outdent: 'Samazināt/noņemt atkāpi paragrāfam', + indent: 'Uzlikt atkāpi paragrāfam', + formatPara: 'Mainīt bloka tipu uz (p) Paragrāfu', + formatH1: 'Mainīt bloka tipu uz virsrakstu H1', + formatH2: 'Mainīt bloka tipu uz virsrakstu H2', + formatH3: 'Mainīt bloka tipu uz virsrakstu H3', + formatH4: 'Mainīt bloka tipu uz virsrakstu H4', + formatH5: 'Mainīt bloka tipu uz virsrakstu H5', + formatH6: 'Mainīt bloka tipu uz virsrakstu H6', + insertHorizontalRule: 'Ievietot horizontālu līniju', + 'linkDialog.show': 'Parādīt saites logu' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-lt-LV.min.js b/plugins/summernote/lang/summernote-lt-LV.min.js new file mode 100644 index 0000000..2462ecb --- /dev/null +++ b/plugins/summernote/lang/summernote-lt-LV.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"lv-LV":{font:{bold:"Treknraksts",italic:"Kursīvs",underline:"Pasvītrots",clear:"Noņemt formatējumu",height:"Līnijas augstums",name:"Fonts",strikethrough:"Nosvītrots",superscript:"Augšraksts",subscript:"Apakšraksts",size:"Fonta lielums"},image:{image:"Attēls",insert:"Ievietot attēlu",resizeFull:"Pilns izmērts",resizeHalf:"Samazināt 50%",resizeQuarter:"Samazināt 25%",floatLeft:"Līdzināt pa kreisi",floatRight:"Līdzināt pa labi",floatNone:"Nelīdzināt",shapeRounded:"Forma: apaļām malām",shapeCircle:"Forma: aplis",shapeThumbnail:"Forma: rāmītis",shapeNone:"Forma: orģināla",dragImageHere:"Ievēlciet attēlu šeit",selectFromFiles:"Izvēlēties failu",maximumFileSize:"Maksimālais faila izmērs",maximumFileSizeError:"Faila izmērs pārāk liels!",url:"Attēla URL",remove:"Dzēst attēlu"},link:{link:"Saite",insert:"Ievietot saiti",unlink:"Noņemt saiti",edit:"Rediģēt",textToDisplay:"Saites saturs",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atvērt jaunā logā"},table:{table:"Tabula"},hr:{insert:"Ievietot līniju"},style:{style:"Stils",p:"Parasts",blockquote:"Citāts",pre:"Kods",h1:"Virsraksts h1",h2:"Virsraksts h2",h3:"Virsraksts h3",h4:"Virsraksts h4",h5:"Virsraksts h5",h6:"Virsraksts h6"},lists:{unordered:"Nenumurēts saraksts",ordered:"Numurēts saraksts"},options:{help:"Palīdzība",fullscreen:"Pa visu ekrānu",codeview:"HTML kods"},paragraph:{paragraph:"Paragrāfs",outdent:"Samazināt atkāpi",indent:"Palielināt atkāpi",left:"Līdzināt pa kreisi",center:"Centrēt",right:"Līdzināt pa labi",justify:"Līdzināt gar abām malām"},color:{recent:"Nesen izmantotās",more:"Citas krāsas",background:"Fona krāsa",foreground:"Fonta krāsa",transparent:"Caurspīdīgs",setTransparent:"Iestatīt caurspīdīgumu",reset:"Atjaunot",resetToDefault:"Atjaunot noklusējumu"},shortcut:{shortcuts:"Saīsnes",close:"Aizvērt",textFormatting:"Teksta formatēšana",action:"Darbība",paragraphFormatting:"Paragrāfa formatēšana",documentStyle:"Dokumenta stils",extraKeys:"Citas taustiņu kombinācijas"},history:{undo:"Atsauks (undo)",redo:"Atkārtot (redo)"},help:{insertParagraph:"Ievietot Paragrāfu",undo:"Atcelt iepriekšējo darbību",redo:"Atkārtot atcelto darbību",tab:"Atkāpe",untab:"Samazināt atkāpi",bold:"Pārvērst tekstu treknrakstā",italic:"Pārvērst tekstu slīprakstā (kursīvā)",underline:"Pasvītrot tekstu",strikethrough:"Nosvītrot tekstu",removeFormat:"Notīrīt stilu no teksta",justifyLeft:"Līdzīnāt saturu pa kreisi",justifyCenter:"Centrēt saturu",justifyRight:"Līdzīnāt saturu pa labi",justifyFull:"Izlīdzināt saturu gar abām malām",insertUnorderedList:"Ievietot nenumurētu sarakstu",insertOrderedList:"Ievietot numurētu sarakstu",outdent:"Samazināt/noņemt atkāpi paragrāfam",indent:"Uzlikt atkāpi paragrāfam",formatPara:"Mainīt bloka tipu uz (p) Paragrāfu",formatH1:"Mainīt bloka tipu uz virsrakstu H1",formatH2:"Mainīt bloka tipu uz virsrakstu H2",formatH3:"Mainīt bloka tipu uz virsrakstu H3",formatH4:"Mainīt bloka tipu uz virsrakstu H4",formatH5:"Mainīt bloka tipu uz virsrakstu H5",formatH6:"Mainīt bloka tipu uz virsrakstu H6",insertHorizontalRule:"Ievietot horizontālu līniju","linkDialog.show":"Parādīt saites logu"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-nb-NO.js b/plugins/summernote/lang/summernote-nb-NO.js new file mode 100644 index 0000000..c4c304d --- /dev/null +++ b/plugins/summernote/lang/summernote-nb-NO.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'nb-NO': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understrek', + clear: 'Fjern formatering', + height: 'Linjehøyde', + name: 'Skrifttype', + strikethrough: 'Gjennomstrek', + size: 'Skriftstørrelse' + }, + image: { + image: 'Bilde', + insert: 'Sett inn bilde', + resizeFull: 'Sett full størrelse', + resizeHalf: 'Sett halv størrelse', + resizeQuarter: 'Sett kvart størrelse', + floatLeft: 'Flyt til venstre', + floatRight: 'Flyt til høyre', + floatNone: 'Fjern flyt', + dragImageHere: 'Dra et bilde hit', + selectFromFiles: 'Velg fra filer', + url: 'Bilde-URL', + remove: 'Fjern bilde' + }, + video: { + video: 'Video', + videoLink: 'Videolenke', + insert: 'Sett inn video', + url: 'Video-URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Lenke', + insert: 'Sett inn lenke', + unlink: 'Fjern lenke', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Til hvilken URL skal denne lenken peke?', + openInNewWindow: 'Åpne i nytt vindu' + }, + table: { + table: 'Tabell' + }, + hr: { + insert: 'Sett inn horisontal linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Sitat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktliste', + ordered: 'Nummerert liste' + }, + options: { + help: 'Hjelp', + fullscreen: 'Fullskjerm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Avsnitt', + outdent: 'Tilbakerykk', + indent: 'Innrykk', + left: 'Venstrejustert', + center: 'Midtstilt', + right: 'Høyrejustert', + justify: 'Blokkjustert' + }, + color: { + recent: 'Nylig valgt farge', + more: 'Flere farger', + background: 'Bakgrunnsfarge', + foreground: 'Skriftfarge', + transparent: 'Gjennomsiktig', + setTransparent: 'Sett gjennomsiktig', + reset: 'Nullstill', + resetToDefault: 'Nullstill til standard' + }, + shortcut: { + shortcuts: 'Hurtigtaster', + close: 'Lukk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil' + }, + history: { + undo: 'Angre', + redo: 'Gjør om' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-nb-NO.min.js b/plugins/summernote/lang/summernote-nb-NO.min.js new file mode 100644 index 0000000..5028d61 --- /dev/null +++ b/plugins/summernote/lang/summernote-nb-NO.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"nb-NO":{font:{bold:"Fet",italic:"Kursiv",underline:"Understrek",clear:"Fjern formatering",height:"Linjehøyde",name:"Skrifttype",strikethrough:"Gjennomstrek",size:"Skriftstørrelse"},image:{image:"Bilde",insert:"Sett inn bilde",resizeFull:"Sett full størrelse",resizeHalf:"Sett halv størrelse",resizeQuarter:"Sett kvart størrelse",floatLeft:"Flyt til venstre",floatRight:"Flyt til høyre",floatNone:"Fjern flyt",dragImageHere:"Dra et bilde hit",selectFromFiles:"Velg fra filer",url:"Bilde-URL",remove:"Fjern bilde"},video:{video:"Video",videoLink:"Videolenke",insert:"Sett inn video",url:"Video-URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Lenke",insert:"Sett inn lenke",unlink:"Fjern lenke",edit:"Rediger",textToDisplay:"Visningstekst",url:"Til hvilken URL skal denne lenken peke?",openInNewWindow:"Åpne i nytt vindu"},table:{table:"Tabell"},hr:{insert:"Sett inn horisontal linje"},style:{style:"Stil",p:"p",blockquote:"Sitat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktliste",ordered:"Nummerert liste"},options:{help:"Hjelp",fullscreen:"Fullskjerm",codeview:"HTML-visning"},paragraph:{paragraph:"Avsnitt",outdent:"Tilbakerykk",indent:"Innrykk",left:"Venstrejustert",center:"Midtstilt",right:"Høyrejustert",justify:"Blokkjustert"},color:{recent:"Nylig valgt farge",more:"Flere farger",background:"Bakgrunnsfarge",foreground:"Skriftfarge",transparent:"Gjennomsiktig",setTransparent:"Sett gjennomsiktig",reset:"Nullstill",resetToDefault:"Nullstill til standard"},shortcut:{shortcuts:"Hurtigtaster",close:"Lukk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil"},history:{undo:"Angre",redo:"Gjør om"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-nl-NL.js b/plugins/summernote/lang/summernote-nl-NL.js new file mode 100644 index 0000000..31f9d37 --- /dev/null +++ b/plugins/summernote/lang/summernote-nl-NL.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'nl-NL': { + font: { + bold: 'Vet', + italic: 'Cursief', + underline: 'Onderstrepen', + clear: 'Stijl verwijderen', + height: 'Regelhoogte', + name: 'Lettertype', + strikethrough: 'Doorhalen', + size: 'Tekstgrootte' + }, + image: { + image: 'Afbeelding', + insert: 'Afbeelding invoegen', + resizeFull: 'Volledige breedte', + resizeHalf: 'Halve breedte', + resizeQuarter: 'Kwart breedte', + floatLeft: 'Links uitlijnen', + floatRight: 'Rechts uitlijnen', + floatNone: 'Geen uitlijning', + dragImageHere: 'Sleep hier een afbeelding naar toe', + selectFromFiles: 'Selecteer een bestand', + url: 'URL van de afbeelding', + remove: 'Verwijder afbeelding' + }, + video: { + video: 'Video', + videoLink: 'Video link', + insert: 'Video invoegen', + url: 'URL van de video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)' + }, + link: { + link: 'Link', + insert: 'Link invoegen', + unlink: 'Link verwijderen', + edit: 'Wijzigen', + textToDisplay: 'Tekst van link', + url: 'Naar welke URL moet deze link verwijzen?', + openInNewWindow: 'Open in nieuw venster' + }, + table: { + table: 'Tabel' + }, + hr: { + insert: 'Horizontale lijn invoegen' + }, + style: { + style: 'Stijl', + p: 'Normaal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Kop 1', + h2: 'Kop 2', + h3: 'Kop 3', + h4: 'Kop 4', + h5: 'Kop 5', + h6: 'Kop 6' + }, + lists: { + unordered: 'Ongeordende lijst', + ordered: 'Geordende lijst' + }, + options: { + help: 'Help', + fullscreen: 'Volledig scherm', + codeview: 'Bekijk Code' + }, + paragraph: { + paragraph: 'Paragraaf', + outdent: 'Inspringen verkleinen', + indent: 'Inspringen vergroten', + left: 'Links uitlijnen', + center: 'Centreren', + right: 'Rechts uitlijnen', + justify: 'Uitvullen' + }, + color: { + recent: 'Recente kleur', + more: 'Meer kleuren', + background: 'Achtergrond kleur', + foreground: 'Tekst kleur', + transparent: 'Transparant', + setTransparent: 'Transparant', + reset: 'Standaard', + resetToDefault: 'Standaard kleur' + }, + shortcut: { + shortcuts: 'Toetsencombinaties', + close: 'sluiten', + textFormatting: 'Tekststijlen', + action: 'Acties', + paragraphFormatting: 'Paragraafstijlen', + documentStyle: 'Documentstijlen' + }, + history: { + undo: 'Ongedaan maken', + redo: 'Opnieuw doorvoeren' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-nl-NL.min.js b/plugins/summernote/lang/summernote-nl-NL.min.js new file mode 100644 index 0000000..1f6eb6e --- /dev/null +++ b/plugins/summernote/lang/summernote-nl-NL.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"nl-NL":{font:{bold:"Vet",italic:"Cursief",underline:"Onderstrepen",clear:"Stijl verwijderen",height:"Regelhoogte",name:"Lettertype",strikethrough:"Doorhalen",size:"Tekstgrootte"},image:{image:"Afbeelding",insert:"Afbeelding invoegen",resizeFull:"Volledige breedte",resizeHalf:"Halve breedte",resizeQuarter:"Kwart breedte",floatLeft:"Links uitlijnen",floatRight:"Rechts uitlijnen",floatNone:"Geen uitlijning",dragImageHere:"Sleep hier een afbeelding naar toe",selectFromFiles:"Selecteer een bestand",url:"URL van de afbeelding",remove:"Verwijder afbeelding"},video:{video:"Video",videoLink:"Video link",insert:"Video invoegen",url:"URL van de video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)"},link:{link:"Link",insert:"Link invoegen",unlink:"Link verwijderen",edit:"Wijzigen",textToDisplay:"Tekst van link",url:"Naar welke URL moet deze link verwijzen?",openInNewWindow:"Open in nieuw venster"},table:{table:"Tabel"},hr:{insert:"Horizontale lijn invoegen"},style:{style:"Stijl",p:"Normaal",blockquote:"Quote",pre:"Code",h1:"Kop 1",h2:"Kop 2",h3:"Kop 3",h4:"Kop 4",h5:"Kop 5",h6:"Kop 6"},lists:{unordered:"Ongeordende lijst",ordered:"Geordende lijst"},options:{help:"Help",fullscreen:"Volledig scherm",codeview:"Bekijk Code"},paragraph:{paragraph:"Paragraaf",outdent:"Inspringen verkleinen",indent:"Inspringen vergroten",left:"Links uitlijnen",center:"Centreren",right:"Rechts uitlijnen",justify:"Uitvullen"},color:{recent:"Recente kleur",more:"Meer kleuren",background:"Achtergrond kleur",foreground:"Tekst kleur",transparent:"Transparant",setTransparent:"Transparant",reset:"Standaard",resetToDefault:"Standaard kleur"},shortcut:{shortcuts:"Toetsencombinaties",close:"sluiten",textFormatting:"Tekststijlen",action:"Acties",paragraphFormatting:"Paragraafstijlen",documentStyle:"Documentstijlen"},history:{undo:"Ongedaan maken",redo:"Opnieuw doorvoeren"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-pl-PL.js b/plugins/summernote/lang/summernote-pl-PL.js new file mode 100644 index 0000000..86068eb --- /dev/null +++ b/plugins/summernote/lang/summernote-pl-PL.js @@ -0,0 +1,112 @@ +(function ($) { + $.extend($.summernote.lang, { + 'pl-PL': { + font: { + bold: 'Pogrubienie', + italic: 'Pochylenie', + underline: 'Podkreślenie', + clear: 'Usuń formatowanie', + height: 'Interlinia', + name: 'Czcionka', + strikethrough: 'Przekreślenie', + size: 'Rozmiar' + }, + image: { + image: 'Grafika', + insert: 'Wstaw grafikę', + resizeFull: 'Zmień rozmiar na 100%', + resizeHalf: 'Zmień rozmiar na 50%', + resizeQuarter: 'Zmień rozmiar na 25%', + floatLeft: 'Po lewej', + floatRight: 'Po prawej', + floatNone: 'Równo z tekstem', + shapeRounded: 'Kształt: zaokrąglone', + shapeCircle: 'Kształt: okrąg', + shapeThumbnail: 'Kształt: miniatura', + shapeNone: 'Kształt: brak', + dragImageHere: 'Przeciągnij grafikę lub tekst tutaj', + dropImage: 'Przeciągnij grafikę lub tekst', + selectFromFiles: 'Wybierz z dysku', + maximumFileSize: 'Limit wielkości pliku', + maximumFileSizeError: 'Przekroczono limit wielkości pliku.', + url: 'Adres URL grafiki', + remove: 'Usuń grafikę' + }, + video: { + video: 'Wideo', + videoLink: 'Adres wideo', + insert: 'Wstaw wideo', + url: 'Adres wideo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)' + }, + link: { + link: 'Odnośnik', + insert: 'Wstaw odnośnik', + unlink: 'Usuń odnośnik', + edit: 'Edytuj', + textToDisplay: 'Tekst do wyświetlenia', + url: 'Na jaki adres URL powinien przenosić ten odnośnik?', + openInNewWindow: 'Otwórz w nowym oknie' + }, + table: { + table: 'Tabela' + }, + hr: { + insert: 'Wstaw poziomą linię' + }, + style: { + style: 'Style', + p: 'pny', + blockquote: 'Cytat', + pre: 'Kod', + h1: 'Nagłówek 1', + h2: 'Nagłówek 2', + h3: 'Nagłówek 3', + h4: 'Nagłówek 4', + h5: 'Nagłówek 5', + h6: 'Nagłówek 6' + }, + lists: { + unordered: 'Lista wypunktowana', + ordered: 'Lista numerowana' + }, + options: { + help: 'Pomoc', + fullscreen: 'Pełny ekran', + codeview: 'Źródło' + }, + paragraph: { + paragraph: 'Akapit', + outdent: 'Zmniejsz wcięcie', + indent: 'Zwiększ wcięcie', + left: 'Wyrównaj do lewej', + center: 'Wyrównaj do środka', + right: 'Wyrównaj do prawej', + justify: 'Wyrównaj do lewej i prawej' + }, + color: { + recent: 'Ostani kolor', + more: 'Więcej kolorów', + background: 'Tło', + foreground: 'Czcionka', + transparent: 'Przeźroczysty', + setTransparent: 'Przeźroczyste', + reset: 'Reset', + resetToDefault: 'Domyślne' + }, + shortcut: { + shortcuts: 'Skróty klawiaturowe', + close: 'Zamknij', + textFormatting: 'Formatowanie tekstu', + action: 'Akcja', + paragraphFormatting: 'Formatowanie akapitu', + documentStyle: 'Styl dokumentu', + extraKeys: 'Dodatkowe klawisze' + }, + history: { + undo: 'Cofnij', + redo: 'Ponów' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-pl-PL.min.js b/plugins/summernote/lang/summernote-pl-PL.min.js new file mode 100644 index 0000000..f74e768 --- /dev/null +++ b/plugins/summernote/lang/summernote-pl-PL.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"pl-PL":{font:{bold:"Pogrubienie",italic:"Pochylenie",underline:"Podkreślenie",clear:"Usuń formatowanie",height:"Interlinia",name:"Czcionka",strikethrough:"Przekreślenie",size:"Rozmiar"},image:{image:"Grafika",insert:"Wstaw grafikę",resizeFull:"Zmień rozmiar na 100%",resizeHalf:"Zmień rozmiar na 50%",resizeQuarter:"Zmień rozmiar na 25%",floatLeft:"Po lewej",floatRight:"Po prawej",floatNone:"Równo z tekstem",shapeRounded:"Kształt: zaokrąglone",shapeCircle:"Kształt: okrąg",shapeThumbnail:"Kształt: miniatura",shapeNone:"Kształt: brak",dragImageHere:"Przeciągnij grafikę lub tekst tutaj",dropImage:"Przeciągnij grafikę lub tekst",selectFromFiles:"Wybierz z dysku",maximumFileSize:"Limit wielkości pliku",maximumFileSizeError:"Przekroczono limit wielkości pliku.",url:"Adres URL grafiki",remove:"Usuń grafikę"},video:{video:"Wideo",videoLink:"Adres wideo",insert:"Wstaw wideo",url:"Adres wideo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)"},link:{link:"Odnośnik",insert:"Wstaw odnośnik",unlink:"Usuń odnośnik",edit:"Edytuj",textToDisplay:"Tekst do wyświetlenia",url:"Na jaki adres URL powinien przenosić ten odnośnik?",openInNewWindow:"Otwórz w nowym oknie"},table:{table:"Tabela"},hr:{insert:"Wstaw poziomą linię"},style:{style:"Style",p:"pny",blockquote:"Cytat",pre:"Kod",h1:"Nagłówek 1",h2:"Nagłówek 2",h3:"Nagłówek 3",h4:"Nagłówek 4",h5:"Nagłówek 5",h6:"Nagłówek 6"},lists:{unordered:"Lista wypunktowana",ordered:"Lista numerowana"},options:{help:"Pomoc",fullscreen:"Pełny ekran",codeview:"Źródło"},paragraph:{paragraph:"Akapit",outdent:"Zmniejsz wcięcie",indent:"Zwiększ wcięcie",left:"Wyrównaj do lewej",center:"Wyrównaj do środka",right:"Wyrównaj do prawej",justify:"Wyrównaj do lewej i prawej"},color:{recent:"Ostani kolor",more:"Więcej kolorów",background:"Tło",foreground:"Czcionka",transparent:"Przeźroczysty",setTransparent:"Przeźroczyste",reset:"Reset",resetToDefault:"Domyślne"},shortcut:{shortcuts:"Skróty klawiaturowe",close:"Zamknij",textFormatting:"Formatowanie tekstu",action:"Akcja",paragraphFormatting:"Formatowanie akapitu",documentStyle:"Styl dokumentu",extraKeys:"Dodatkowe klawisze"},history:{undo:"Cofnij",redo:"Ponów"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-pt-BR.js b/plugins/summernote/lang/summernote-pt-BR.js new file mode 100644 index 0000000..4b8efbb --- /dev/null +++ b/plugins/summernote/lang/summernote-pt-BR.js @@ -0,0 +1,132 @@ +(function ($) { + $.extend($.summernote.lang, { + 'pt-BR': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Resize Full', + resizeHalf: 'Resize Half', + resizeQuarter: 'Resize Quarter', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Float None', + dragImageHere: 'Arraste uma imagem para cá', + selectFromFiles: 'Selecione a partir dos arquivos', + url: 'URL da imagem' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir link', + unlink: 'Remover link', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Para qual URL esse link leva?', + openInNewWindow: 'Abrir em uma nova janela' + }, + table: { + table: 'Tabela' + }, + hr: { + insert: 'Inserir linha horizontal' + }, + style: { + style: 'Estilo', + normal: 'Normal', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Tela cheia', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + }, + help: { + 'insertParagraph': 'Inserir Parágrafo', + 'undo': 'Desfazer o último comando', + 'redo': 'Refazer o último comando', + 'tab': 'Tab', + 'untab': 'Desfazer tab', + 'bold': 'Colocar em negrito', + 'italic': 'Colocar em itálico', + 'underline': 'Sublinhado', + 'strikethrough': 'Tachado', + 'removeFormat': 'Remover estilo', + 'justifyLeft': 'Alinhar à esquerda', + 'justifyCenter': 'Centralizar', + 'justifyRight': 'Alinhar à esquerda', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Lista não ordenada', + 'insertOrderedList': 'Lista ordenada', + 'outdent': 'Recuar parágrafo atual', + 'indent': 'Avançar parágrafo atual', + 'formatPara': 'Alterar formato do bloco para parágrafo(tag P)', + 'formatH1': 'Alterar formato do bloco para H1', + 'formatH2': 'Alterar formato do bloco para H2', + 'formatH3': 'Alterar formato do bloco para H3', + 'formatH4': 'Alterar formato do bloco para H4', + 'formatH5': 'Alterar formato do bloco para H5', + 'formatH6': 'Alterar formato do bloco para H6', + 'insertHorizontalRule': 'Inserir régua horizontal', + 'linkDialog.show': 'Inserir um Hiperlink' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-pt-BR.min.js b/plugins/summernote/lang/summernote-pt-BR.min.js new file mode 100644 index 0000000..5f720e0 --- /dev/null +++ b/plugins/summernote/lang/summernote-pt-BR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"pt-BR":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Resize Full",resizeHalf:"Resize Half",resizeQuarter:"Resize Quarter",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Float None",dragImageHere:"Arraste uma imagem para cá",selectFromFiles:"Selecione a partir dos arquivos",url:"URL da imagem"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Link",insert:"Inserir link",unlink:"Remover link",edit:"Editar",textToDisplay:"Texto para exibir",url:"Para qual URL esse link leva?",openInNewWindow:"Abrir em uma nova janela"},table:{table:"Tabela"},hr:{insert:"Inserir linha horizontal"},style:{style:"Estilo",normal:"Normal",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Tela cheia",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento"},history:{undo:"Desfazer",redo:"Refazer"},help:{insertParagraph:"Inserir Parágrafo",undo:"Desfazer o último comando",redo:"Refazer o último comando",tab:"Tab",untab:"Desfazer tab",bold:"Colocar em negrito",italic:"Colocar em itálico",underline:"Sublinhado",strikethrough:"Tachado",removeFormat:"Remover estilo",justifyLeft:"Alinhar à esquerda",justifyCenter:"Centralizar",justifyRight:"Alinhar à esquerda",justifyFull:"Justificar",insertUnorderedList:"Lista não ordenada",insertOrderedList:"Lista ordenada",outdent:"Recuar parágrafo atual",indent:"Avançar parágrafo atual",formatPara:"Alterar formato do bloco para parágrafo(tag P)",formatH1:"Alterar formato do bloco para H1",formatH2:"Alterar formato do bloco para H2",formatH3:"Alterar formato do bloco para H3",formatH4:"Alterar formato do bloco para H4",formatH5:"Alterar formato do bloco para H5",formatH6:"Alterar formato do bloco para H6",insertHorizontalRule:"Inserir régua horizontal","linkDialog.show":"Inserir um Hiperlink"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-pt-PT.js b/plugins/summernote/lang/summernote-pt-PT.js new file mode 100644 index 0000000..96e3104 --- /dev/null +++ b/plugins/summernote/lang/summernote-pt-PT.js @@ -0,0 +1,103 @@ +(function ($) { + $.extend($.summernote.lang, { + 'pt-PT': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Redimensionar Completo', + resizeHalf: 'Redimensionar Metade', + resizeQuarter: 'Redimensionar Um Quarto', + floatLeft: 'Float Esquerda', + floatRight: 'Float Direita', + floatNone: 'Sem Float', + dragImageHere: 'Arraste uma imagem para aqui', + selectFromFiles: 'Selecione a partir dos arquivos', + url: 'Endereço da imagem' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir ligação', + unlink: 'Remover ligação', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Que endereço esta licação leva?', + openInNewWindow: 'Abrir numa nova janela' + }, + table: { + table: 'Tabela' + }, + hr: { + insert: 'Inserir linha horizontal' + }, + style: { + style: 'Estilo', + p: 'p', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Janela Completa', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-pt-PT.min.js b/plugins/summernote/lang/summernote-pt-PT.min.js new file mode 100644 index 0000000..39b8a88 --- /dev/null +++ b/plugins/summernote/lang/summernote-pt-PT.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"pt-PT":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Redimensionar Completo",resizeHalf:"Redimensionar Metade",resizeQuarter:"Redimensionar Um Quarto",floatLeft:"Float Esquerda",floatRight:"Float Direita",floatNone:"Sem Float",dragImageHere:"Arraste uma imagem para aqui",selectFromFiles:"Selecione a partir dos arquivos",url:"Endereço da imagem"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Link",insert:"Inserir ligação",unlink:"Remover ligação",edit:"Editar",textToDisplay:"Texto para exibir",url:"Que endereço esta licação leva?",openInNewWindow:"Abrir numa nova janela"},table:{table:"Tabela"},hr:{insert:"Inserir linha horizontal"},style:{style:"Estilo",p:"p",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Janela Completa",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento"},history:{undo:"Desfazer",redo:"Refazer"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-ro-RO.js b/plugins/summernote/lang/summernote-ro-RO.js new file mode 100644 index 0000000..70df177 --- /dev/null +++ b/plugins/summernote/lang/summernote-ro-RO.js @@ -0,0 +1,102 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ro-RO': { + font: { + bold: 'Îngroșat', + italic: 'Înclinat', + underline: 'Subliniat', + clear: 'Înlătură formatare font', + height: 'Înălțime rând', + strikethrough: 'Tăiat', + size: 'Dimensiune font' + }, + image: { + image: 'Imagine', + insert: 'Inserează imagine', + resizeFull: 'Redimensionează complet', + resizeHalf: 'Redimensionează 1/2', + resizeQuarter: 'Redimensionează 1/4', + floatLeft: 'Aliniere la stânga', + floatRight: 'Aliniere la dreapta', + floatNone: 'Fară aliniere', + dragImageHere: 'Trage o imagine aici', + selectFromFiles: 'Alege din fişiere', + url: 'URL imagine' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Inserează video', + url: 'URL video?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)' + }, + link: { + link: 'Link', + insert: 'Inserează link', + unlink: 'Înlătură link', + edit: 'Editează', + textToDisplay: 'Text ce va fi afişat', + url: 'Deschidere în fereastra nouă?' + }, + table: { + table: 'Tabel' + }, + hr: { + insert: 'Inserează o linie orizontală' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Preformatat', + h1: 'Titlu 1', + h2: 'Titlu 2', + h3: 'Titlu 3', + h4: 'Titlu 4', + h5: 'Titlu 5', + h6: 'Titlu 6' + }, + lists: { + unordered: 'Listă neordonată', + ordered: 'Listă ordonată' + }, + options: { + help: 'Ajutor', + fullscreen: 'Măreşte', + codeview: 'Sursă' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Creşte identarea', + indent: 'Scade identarea', + left: 'Aliniere la stânga', + center: 'Aliniere centrală', + right: 'Aliniere la dreapta', + justify: 'Aliniere în bloc' + }, + color: { + recent: 'Culoare recentă', + more: 'Mai multe culori', + background: 'Culoarea fundalului', + foreground: 'Culoarea textului', + transparent: 'Transparent', + setTransparent: 'Setează transparent', + reset: 'Resetează', + resetToDefault: 'Revino la iniţial' + }, + shortcut: { + shortcuts: 'Scurtături tastatură', + close: 'Închide', + textFormatting: 'Formatare text', + action: 'Acţiuni', + paragraphFormatting: 'Formatare paragraf', + documentStyle: 'Stil paragraf' + }, + history: { + undo: 'Starea anterioară', + redo: 'Starea ulterioară' + } + + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ro-RO.min.js b/plugins/summernote/lang/summernote-ro-RO.min.js new file mode 100644 index 0000000..e231d41 --- /dev/null +++ b/plugins/summernote/lang/summernote-ro-RO.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ro-RO":{font:{bold:"Îngroșat",italic:"Înclinat",underline:"Subliniat",clear:"Înlătură formatare font",height:"Înălțime rând",strikethrough:"Tăiat",size:"Dimensiune font"},image:{image:"Imagine",insert:"Inserează imagine",resizeFull:"Redimensionează complet",resizeHalf:"Redimensionează 1/2",resizeQuarter:"Redimensionează 1/4",floatLeft:"Aliniere la stânga",floatRight:"Aliniere la dreapta",floatNone:"Fară aliniere",dragImageHere:"Trage o imagine aici",selectFromFiles:"Alege din fişiere",url:"URL imagine"},video:{video:"Video",videoLink:"Link video",insert:"Inserează video",url:"URL video?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)"},link:{link:"Link",insert:"Inserează link",unlink:"Înlătură link",edit:"Editează",textToDisplay:"Text ce va fi afişat",url:"Deschidere în fereastra nouă?"},table:{table:"Tabel"},hr:{insert:"Inserează o linie orizontală"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Preformatat",h1:"Titlu 1",h2:"Titlu 2",h3:"Titlu 3",h4:"Titlu 4",h5:"Titlu 5",h6:"Titlu 6"},lists:{unordered:"Listă neordonată",ordered:"Listă ordonată"},options:{help:"Ajutor",fullscreen:"Măreşte",codeview:"Sursă"},paragraph:{paragraph:"Paragraf",outdent:"Creşte identarea",indent:"Scade identarea",left:"Aliniere la stânga",center:"Aliniere centrală",right:"Aliniere la dreapta",justify:"Aliniere în bloc"},color:{recent:"Culoare recentă",more:"Mai multe culori",background:"Culoarea fundalului",foreground:"Culoarea textului",transparent:"Transparent",setTransparent:"Setează transparent",reset:"Resetează",resetToDefault:"Revino la iniţial"},shortcut:{shortcuts:"Scurtături tastatură",close:"Închide",textFormatting:"Formatare text",action:"Acţiuni",paragraphFormatting:"Formatare paragraf",documentStyle:"Stil paragraf"},history:{undo:"Starea anterioară",redo:"Starea ulterioară"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-ru-RU.js b/plugins/summernote/lang/summernote-ru-RU.js new file mode 100644 index 0000000..f22737f --- /dev/null +++ b/plugins/summernote/lang/summernote-ru-RU.js @@ -0,0 +1,112 @@ +(function ($) { + $.extend($.summernote.lang, { + 'ru-RU': { + font: { + bold: 'Полужирный', + italic: 'Курсив', + underline: 'Подчёркнутый', + clear: 'Убрать стили шрифта', + height: 'Высота линии', + name: 'Шрифт', + strikethrough: 'Зачёркнутый', + subscript: 'Нижний индекс', + superscript: 'Верхний индекс', + size: 'Размер шрифта' + }, + image: { + image: 'Картинка', + insert: 'Вставить картинку', + resizeFull: 'Восстановить размер', + resizeHalf: 'Уменьшить до 50%', + resizeQuarter: 'Уменьшить до 25%', + floatLeft: 'Расположить слева', + floatRight: 'Расположить справа', + floatNone: 'Расположение по-умолчанию', + shapeRounded: 'Форма: Закругленная', + shapeCircle: 'Форма: Круг', + shapeThumbnail: 'Форма: Миниатюра', + shapeNone: 'Форма: Нет', + dragImageHere: 'Перетащите сюда картинку', + dropImage: 'Перетащите картинку', + selectFromFiles: 'Выбрать из файлов', + url: 'URL картинки', + remove: 'Удалить картинку' + }, + video: { + video: 'Видео', + videoLink: 'Ссылка на видео', + insert: 'Вставить видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Ссылка', + insert: 'Вставить ссылку', + unlink: 'Убрать ссылку', + edit: 'Редактировать', + textToDisplay: 'Отображаемый текст', + url: 'URL для перехода', + openInNewWindow: 'Открывать в новом окне' + }, + table: { + table: 'Таблица' + }, + hr: { + insert: 'Вставить горизонтальную линию' + }, + style: { + style: 'Стиль', + p: 'Нормальный', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркированный список', + ordered: 'Нумерованный список' + }, + options: { + help: 'Помощь', + fullscreen: 'На весь экран', + codeview: 'Исходный код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Уменьшить отступ', + indent: 'Увеличить отступ', + left: 'Выровнять по левому краю', + center: 'Выровнять по центру', + right: 'Выровнять по правому краю', + justify: 'Растянуть по ширине' + }, + color: { + recent: 'Последний цвет', + more: 'Еще цвета', + background: 'Цвет фона', + foreground: 'Цвет шрифта', + transparent: 'Прозрачный', + setTransparent: 'Сделать прозрачным', + reset: 'Сброс', + resetToDefault: 'Восстановить умолчания' + }, + shortcut: { + shortcuts: 'Сочетания клавиш', + close: 'Закрыть', + textFormatting: 'Форматирование текста', + action: 'Действие', + paragraphFormatting: 'Форматирование параграфа', + documentStyle: 'Стиль документа', + extraKeys: 'Дополнительные комбинации' + }, + history: { + undo: 'Отменить', + redo: 'Повтор' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-ru-RU.min.js b/plugins/summernote/lang/summernote-ru-RU.min.js new file mode 100644 index 0000000..500ce03 --- /dev/null +++ b/plugins/summernote/lang/summernote-ru-RU.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"ru-RU":{font:{bold:"Полужирный",italic:"Курсив",underline:"Подчёркнутый",clear:"Убрать стили шрифта",height:"Высота линии",name:"Шрифт",strikethrough:"Зачёркнутый",subscript:"Нижний индекс",superscript:"Верхний индекс",size:"Размер шрифта"},image:{image:"Картинка",insert:"Вставить картинку",resizeFull:"Восстановить размер",resizeHalf:"Уменьшить до 50%",resizeQuarter:"Уменьшить до 25%",floatLeft:"Расположить слева",floatRight:"Расположить справа",floatNone:"Расположение по-умолчанию",shapeRounded:"Форма: Закругленная",shapeCircle:"Форма: Круг",shapeThumbnail:"Форма: Миниатюра",shapeNone:"Форма: Нет",dragImageHere:"Перетащите сюда картинку",dropImage:"Перетащите картинку",selectFromFiles:"Выбрать из файлов",url:"URL картинки",remove:"Удалить картинку"},video:{video:"Видео",videoLink:"Ссылка на видео",insert:"Вставить видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Ссылка",insert:"Вставить ссылку",unlink:"Убрать ссылку",edit:"Редактировать",textToDisplay:"Отображаемый текст",url:"URL для перехода",openInNewWindow:"Открывать в новом окне"},table:{table:"Таблица"},hr:{insert:"Вставить горизонтальную линию"},style:{style:"Стиль",p:"Нормальный",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркированный список",ordered:"Нумерованный список"},options:{help:"Помощь",fullscreen:"На весь экран",codeview:"Исходный код"},paragraph:{paragraph:"Параграф",outdent:"Уменьшить отступ",indent:"Увеличить отступ",left:"Выровнять по левому краю",center:"Выровнять по центру",right:"Выровнять по правому краю",justify:"Растянуть по ширине"},color:{recent:"Последний цвет",more:"Еще цвета",background:"Цвет фона",foreground:"Цвет шрифта",transparent:"Прозрачный",setTransparent:"Сделать прозрачным",reset:"Сброс",resetToDefault:"Восстановить умолчания"},shortcut:{shortcuts:"Сочетания клавиш",close:"Закрыть",textFormatting:"Форматирование текста",action:"Действие",paragraphFormatting:"Форматирование параграфа",documentStyle:"Стиль документа",extraKeys:"Дополнительные комбинации"},history:{undo:"Отменить",redo:"Повтор"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-sk-SK.js b/plugins/summernote/lang/summernote-sk-SK.js new file mode 100644 index 0000000..fa13ce0 --- /dev/null +++ b/plugins/summernote/lang/summernote-sk-SK.js @@ -0,0 +1,102 @@ +(function ($) { + $.extend($.summernote.lang, { + 'sk-SK': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podčiarknutie', + clear: 'Odstrániť štýl písma', + height: 'Výška riadku', + strikethrough: 'Prečiarknuté', + size: 'Veľkosť písma' + }, + image: { + image: 'Obrázok', + insert: 'Vložiť obrázok', + resizeFull: 'Pôvodná veľkosť', + resizeHalf: 'Polovičná veľkosť', + resizeQuarter: 'Štvrtinová veľkosť', + floatLeft: 'Umiestniť doľava', + floatRight: 'Umiestniť doprava', + floatNone: 'Bez zarovnania', + dragImageHere: 'Pretiahnuť sem obrázok', + selectFromFiles: 'Vybrať súbor', + url: 'URL obrázku' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložiť video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvoriť odkaz', + unlink: 'Zrušiť odkaz', + edit: 'Upraviť', + textToDisplay: 'Zobrazovaný text', + url: 'Na akú URL adresu má tento odkaz viesť?', + openInNewWindow: 'Otvoriť v novom okne' + }, + table: { + table: 'Tabuľka' + }, + hr: { + insert: 'Vložit vodorovnú čiaru' + }, + style: { + style: 'Štýl', + p: 'Normálny', + blockquote: 'Citácia', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový zoznam', + ordered: 'Číselný zoznam' + }, + options: { + help: 'Pomoc', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odsek', + outdent: 'Zväčšiť odsadenie', + indent: 'Zmenšiť odsadenie', + left: 'Zarovnať doľava', + center: 'Zarovnať na stred', + right: 'Zarovnať doprava', + justify: 'Zarovnať obojstranne' + }, + color: { + recent: 'Aktuálna farba', + more: 'Dalšie farby', + background: 'Farba pozadia', + foreground: 'Farba písma', + transparent: 'Priehľadnosť', + setTransparent: 'Nastaviť priehľadnosť', + reset: 'Obnoviť', + resetToDefault: 'Obnoviť prednastavené' + }, + shortcut: { + shortcuts: 'Klávesové skratky', + close: 'Zavrieť', + textFormatting: 'Formátovanie textu', + action: 'Akcia', + paragraphFormatting: 'Formátovanie odseku', + documentStyle: 'Štýl dokumentu' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok dopredu' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-sk-SK.min.js b/plugins/summernote/lang/summernote-sk-SK.min.js new file mode 100644 index 0000000..13e7c5a --- /dev/null +++ b/plugins/summernote/lang/summernote-sk-SK.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"sk-SK":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podčiarknutie",clear:"Odstrániť štýl písma",height:"Výška riadku",strikethrough:"Prečiarknuté",size:"Veľkosť písma"},image:{image:"Obrázok",insert:"Vložiť obrázok",resizeFull:"Pôvodná veľkosť",resizeHalf:"Polovičná veľkosť",resizeQuarter:"Štvrtinová veľkosť",floatLeft:"Umiestniť doľava",floatRight:"Umiestniť doprava",floatNone:"Bez zarovnania",dragImageHere:"Pretiahnuť sem obrázok",selectFromFiles:"Vybrať súbor",url:"URL obrázku"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložiť video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)"},link:{link:"Odkaz",insert:"Vytvoriť odkaz",unlink:"Zrušiť odkaz",edit:"Upraviť",textToDisplay:"Zobrazovaný text",url:"Na akú URL adresu má tento odkaz viesť?",openInNewWindow:"Otvoriť v novom okne"},table:{table:"Tabuľka"},hr:{insert:"Vložit vodorovnú čiaru"},style:{style:"Štýl",p:"Normálny",blockquote:"Citácia",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový zoznam",ordered:"Číselný zoznam"},options:{help:"Pomoc",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odsek",outdent:"Zväčšiť odsadenie",indent:"Zmenšiť odsadenie",left:"Zarovnať doľava",center:"Zarovnať na stred",right:"Zarovnať doprava",justify:"Zarovnať obojstranne"},color:{recent:"Aktuálna farba",more:"Dalšie farby",background:"Farba pozadia",foreground:"Farba písma",transparent:"Priehľadnosť",setTransparent:"Nastaviť priehľadnosť",reset:"Obnoviť",resetToDefault:"Obnoviť prednastavené"},shortcut:{shortcuts:"Klávesové skratky",close:"Zavrieť",textFormatting:"Formátovanie textu",action:"Akcia",paragraphFormatting:"Formátovanie odseku",documentStyle:"Štýl dokumentu"},history:{undo:"Krok vzad",redo:"Krok dopredu"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-sl-SI.js b/plugins/summernote/lang/summernote-sl-SI.js new file mode 100644 index 0000000..330c212 --- /dev/null +++ b/plugins/summernote/lang/summernote-sl-SI.js @@ -0,0 +1,106 @@ +(function ($) { + $.extend($.summernote.lang, { + 'sl-SI': { + font: { + bold: 'Krepko', + italic: 'Ležeče', + underline: 'Podčrtano', + clear: 'Počisti oblikovanje izbire', + height: 'Razmik med vrsticami', + name: 'Pisava', + strikethrough: 'Prečrtano', + subscript: 'Podpisano', + superscript: 'Nadpisano', + size: 'Velikost pisave' + }, + image: { + image: 'Slika', + insert: 'Vstavi sliko', + resizeFull: 'Razširi na polno velikost', + resizeHalf: 'Razširi na polovico velikosti', + resizeQuarter: 'Razširi na četrtino velikosti', + floatLeft: 'Leva poravnava', + floatRight: 'Desna poravnava', + floatNone: 'Brez poravnave', + dragImageHere: 'Sem povlecite sliko', + selectFromFiles: 'Izberi sliko za nalaganje', + url: 'URL naslov slike', + remove: 'Odstrani sliko' + }, + video: { + video: 'Video', + videoLink: 'Video povezava', + insert: 'Vstavi video', + url: 'Povezava do videa', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)' + }, + link: { + link: 'Povezava', + insert: 'Vstavi povezavo', + unlink: 'Odstrani povezavo', + edit: 'Uredi', + textToDisplay: 'Prikazano besedilo', + url: 'Povezava', + openInNewWindow: 'Odpri v novem oknu' + }, + table: { + table: 'Tabela' + }, + hr: { + insert: 'Vstavi horizontalno črto' + }, + style: { + style: 'Slogi', + p: 'Navadno besedilo', + blockquote: 'Citat', + pre: 'Koda', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Označen seznam', + ordered: 'Oštevilčen seznam' + }, + options: { + help: 'Pomoč', + fullscreen: 'Celozaslonski način', + codeview: 'Pregled HTML kode' + }, + paragraph: { + paragraph: 'Slogi odstavka', + outdent: 'Zmanjšaj odmik', + indent: 'Povečaj odmik', + left: 'Leva poravnava', + center: 'Desna poravnava', + right: 'Sredinska poravnava', + justify: 'Obojestranska poravnava' + }, + color: { + recent: 'Uporabi zadnjo barvo', + more: 'Več barv', + background: 'Barva ozadja', + foreground: 'Barva besedila', + transparent: 'Brez barve', + setTransparent: 'Brez barve', + reset: 'Ponastavi', + resetToDefault: 'Ponastavi na privzeto' + }, + shortcut: { + shortcuts: 'Bljižnice', + close: 'Zapri', + textFormatting: 'Oblikovanje besedila', + action: 'Dejanja', + paragraphFormatting: 'Oblikovanje odstavka', + documentStyle: 'Oblikovanje naslova' + }, + history: { + undo: 'Razveljavi', + redo: 'Uveljavi' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-sl-SI.min.js b/plugins/summernote/lang/summernote-sl-SI.min.js new file mode 100644 index 0000000..972cfb7 --- /dev/null +++ b/plugins/summernote/lang/summernote-sl-SI.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"sl-SI":{font:{bold:"Krepko",italic:"Ležeče",underline:"Podčrtano",clear:"Počisti oblikovanje izbire",height:"Razmik med vrsticami",name:"Pisava",strikethrough:"Prečrtano",subscript:"Podpisano",superscript:"Nadpisano",size:"Velikost pisave"},image:{image:"Slika",insert:"Vstavi sliko",resizeFull:"Razširi na polno velikost",resizeHalf:"Razširi na polovico velikosti",resizeQuarter:"Razširi na četrtino velikosti",floatLeft:"Leva poravnava",floatRight:"Desna poravnava",floatNone:"Brez poravnave",dragImageHere:"Sem povlecite sliko",selectFromFiles:"Izberi sliko za nalaganje",url:"URL naslov slike",remove:"Odstrani sliko"},video:{video:"Video",videoLink:"Video povezava",insert:"Vstavi video",url:"Povezava do videa",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)"},link:{link:"Povezava",insert:"Vstavi povezavo",unlink:"Odstrani povezavo",edit:"Uredi",textToDisplay:"Prikazano besedilo",url:"Povezava",openInNewWindow:"Odpri v novem oknu"},table:{table:"Tabela"},hr:{insert:"Vstavi horizontalno črto"},style:{style:"Slogi",p:"Navadno besedilo",blockquote:"Citat",pre:"Koda",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Označen seznam",ordered:"Oštevilčen seznam"},options:{help:"Pomoč",fullscreen:"Celozaslonski način",codeview:"Pregled HTML kode"},paragraph:{paragraph:"Slogi odstavka",outdent:"Zmanjšaj odmik",indent:"Povečaj odmik",left:"Leva poravnava",center:"Desna poravnava",right:"Sredinska poravnava",justify:"Obojestranska poravnava"},color:{recent:"Uporabi zadnjo barvo",more:"Več barv",background:"Barva ozadja",foreground:"Barva besedila",transparent:"Brez barve",setTransparent:"Brez barve",reset:"Ponastavi",resetToDefault:"Ponastavi na privzeto"},shortcut:{shortcuts:"Bljižnice",close:"Zapri",textFormatting:"Oblikovanje besedila",action:"Dejanja",paragraphFormatting:"Oblikovanje odstavka",documentStyle:"Oblikovanje naslova"},history:{undo:"Razveljavi",redo:"Uveljavi"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-sr-RS-Latin.js b/plugins/summernote/lang/summernote-sr-RS-Latin.js new file mode 100644 index 0000000..03ca108 --- /dev/null +++ b/plugins/summernote/lang/summernote-sr-RS-Latin.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + strikethrough: 'Precrtano', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Umetni sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Uz levu ivicu', + floatRight: 'Uz desnu ivicu', + floatNone: 'Bez ravnanja', + dragImageHere: 'Prevuci sliku ovde', + selectFromFiles: 'Izaberi iz datoteke', + url: 'Adresa slike', + remove: 'Ukloni sliku' + }, + video: { + video: 'Video', + videoLink: 'Veza ka videu', + insert: 'Umetni video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Umetni vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tabela' + }, + hr: { + insert: 'Umetni horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Zaglavlje 1', + h2: 'Zaglavlje 2', + h3: 'Zaglavlje 3', + h4: 'Zaglavlje 4', + h5: 'Zaglavlje 5', + h6: 'Zaglavlje 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerisana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko celog ekrana', + codeview: 'Izvorni kod' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povečaj uvlačenje', + left: 'Poravnaj u levo', + center: 'Centrirano', + right: 'Poravnaj u desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Poslednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Providna', + setTransparent: 'Providna', + reset: 'Opoziv', + resetToDefault: 'Podrazumevana' + }, + shortcut: { + shortcuts: 'Prečice sa tastature', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-sr-RS-Latin.min.js b/plugins/summernote/lang/summernote-sr-RS-Latin.min.js new file mode 100644 index 0000000..58ab752 --- /dev/null +++ b/plugins/summernote/lang/summernote-sr-RS-Latin.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"sr-RS":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",strikethrough:"Precrtano",size:"Veličina fonta"},image:{image:"Slika",insert:"Umetni sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Uz levu ivicu",floatRight:"Uz desnu ivicu",floatNone:"Bez ravnanja",dragImageHere:"Prevuci sliku ovde",selectFromFiles:"Izaberi iz datoteke",url:"Adresa slike",remove:"Ukloni sliku"},video:{video:"Video",videoLink:"Veza ka videu",insert:"Umetni video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Umetni vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tabela"},hr:{insert:"Umetni horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kod",h1:"Zaglavlje 1",h2:"Zaglavlje 2",h3:"Zaglavlje 3",h4:"Zaglavlje 4",h5:"Zaglavlje 5",h6:"Zaglavlje 6"},lists:{unordered:"Obična lista",ordered:"Numerisana lista"},options:{help:"Pomoć",fullscreen:"Preko celog ekrana",codeview:"Izvorni kod"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povečaj uvlačenje",left:"Poravnaj u levo",center:"Centrirano",right:"Poravnaj u desno",justify:"Poravnaj obostrano"},color:{recent:"Poslednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Providna",setTransparent:"Providna",reset:"Opoziv",resetToDefault:"Podrazumevana"},shortcut:{shortcuts:"Prečice sa tastature",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},history:{undo:"Poništi",redo:"Ponovi"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-sr-RS.js b/plugins/summernote/lang/summernote-sr-RS.js new file mode 100644 index 0000000..d625e5b --- /dev/null +++ b/plugins/summernote/lang/summernote-sr-RS.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Подебљано', + italic: 'Курзив', + underline: 'Подвучено', + clear: 'Уклони стилове фонта', + height: 'Висина линије', + strikethrough: 'Прецртано', + size: 'Величина фонта' + }, + image: { + image: 'Слика', + insert: 'Уметни слику', + resizeFull: 'Пуна величина', + resizeHalf: 'Умањи на 50%', + resizeQuarter: 'Умањи на 25%', + floatLeft: 'Уз леву ивицу', + floatRight: 'Уз десну ивицу', + floatNone: 'Без равнања', + dragImageHere: 'Превуци слику овде', + selectFromFiles: 'Изабери из датотеке', + url: 'Адреса слике', + remove: 'Уклони слику' + }, + video: { + video: 'Видео', + videoLink: 'Веза ка видеу', + insert: 'Уметни видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Веза', + insert: 'Уметни везу', + unlink: 'Уклони везу', + edit: 'Уреди', + textToDisplay: 'Текст за приказ', + url: 'Интернет адреса', + openInNewWindow: 'Отвори у новом прозору' + }, + table: { + table: 'Табела' + }, + hr: { + insert: 'Уметни хоризонталну линију' + }, + style: { + style: 'Стил', + p: 'Нормални', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавље 1', + h2: 'Заглавље 2', + h3: 'Заглавље 3', + h4: 'Заглавље 4', + h5: 'Заглавље 5', + h6: 'Заглавље 6' + }, + lists: { + unordered: 'Обична листа', + ordered: 'Нумерисана листа' + }, + options: { + help: 'Помоћ', + fullscreen: 'Преко целог екрана', + codeview: 'Изворни код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Смањи увлачење', + indent: 'Повечај увлачење', + left: 'Поравнај у лево', + center: 'Центрирано', + right: 'Поравнај у десно', + justify: 'Поравнај обострано' + }, + color: { + recent: 'Последња боја', + more: 'Више боја', + background: 'Боја позадине', + foreground: 'Боја текста', + transparent: 'Провидна', + setTransparent: 'Провидна', + reset: 'Опозив', + resetToDefault: 'Подразумевана' + }, + shortcut: { + shortcuts: 'Пречице са тастатуре', + close: 'Затвори', + textFormatting: 'Форматирање текста', + action: 'Акција', + paragraphFormatting: 'Форматирање параграфа', + documentStyle: 'Стил документа', + extraKeys: 'Додатне комбинације' + }, + history: { + undo: 'Поништи', + redo: 'Понови' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-sr-RS.min.js b/plugins/summernote/lang/summernote-sr-RS.min.js new file mode 100644 index 0000000..3dadcfb --- /dev/null +++ b/plugins/summernote/lang/summernote-sr-RS.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"sr-RS":{font:{bold:"Подебљано",italic:"Курзив",underline:"Подвучено",clear:"Уклони стилове фонта",height:"Висина линије",strikethrough:"Прецртано",size:"Величина фонта"},image:{image:"Слика",insert:"Уметни слику",resizeFull:"Пуна величина",resizeHalf:"Умањи на 50%",resizeQuarter:"Умањи на 25%",floatLeft:"Уз леву ивицу",floatRight:"Уз десну ивицу",floatNone:"Без равнања",dragImageHere:"Превуци слику овде",selectFromFiles:"Изабери из датотеке",url:"Адреса слике",remove:"Уклони слику"},video:{video:"Видео",videoLink:"Веза ка видеу",insert:"Уметни видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Веза",insert:"Уметни везу",unlink:"Уклони везу",edit:"Уреди",textToDisplay:"Текст за приказ",url:"Интернет адреса",openInNewWindow:"Отвори у новом прозору"},table:{table:"Табела"},hr:{insert:"Уметни хоризонталну линију"},style:{style:"Стил",p:"Нормални",blockquote:"Цитат",pre:"Код",h1:"Заглавље 1",h2:"Заглавље 2",h3:"Заглавље 3",h4:"Заглавље 4",h5:"Заглавље 5",h6:"Заглавље 6"},lists:{unordered:"Обична листа",ordered:"Нумерисана листа"},options:{help:"Помоћ",fullscreen:"Преко целог екрана",codeview:"Изворни код"},paragraph:{paragraph:"Параграф",outdent:"Смањи увлачење",indent:"Повечај увлачење",left:"Поравнај у лево",center:"Центрирано",right:"Поравнај у десно",justify:"Поравнај обострано"},color:{recent:"Последња боја",more:"Више боја",background:"Боја позадине",foreground:"Боја текста",transparent:"Провидна",setTransparent:"Провидна",reset:"Опозив",resetToDefault:"Подразумевана"},shortcut:{shortcuts:"Пречице са тастатуре",close:"Затвори",textFormatting:"Форматирање текста",action:"Акција",paragraphFormatting:"Форматирање параграфа",documentStyle:"Стил документа",extraKeys:"Додатне комбинације"},history:{undo:"Поништи",redo:"Понови"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-sv-SE.js b/plugins/summernote/lang/summernote-sv-SE.js new file mode 100644 index 0000000..1fc63e6 --- /dev/null +++ b/plugins/summernote/lang/summernote-sv-SE.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'sv-SE': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understruken', + clear: 'Radera formatering', + height: 'Radavstånd', + name: 'Teckensnitt', + strikethrough: 'Genomstruken', + size: 'Teckenstorlek' + }, + image: { + image: 'Bild', + insert: 'Infoga bild', + resizeFull: 'Full storlek', + resizeHalf: 'Halv storlek', + resizeQuarter: 'En fjärdedel i storlek', + floatLeft: 'Vänsterjusterad', + floatRight: 'Högerjusterad', + floatNone: 'Ingen justering', + dragImageHere: 'Dra en bild hit', + selectFromFiles: 'Välj från filer', + url: 'Länk till bild', + remove: 'Ta bort bild' + }, + video: { + video: 'Filmklipp', + videoLink: 'Länk till filmklipp', + insert: 'Infoga filmklipp', + url: 'Länk till filmklipp', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Länk', + insert: 'Infoga länk', + unlink: 'Ta bort länk', + edit: 'Redigera', + textToDisplay: 'Visningstext', + url: 'Till vilken URL ska denna länk peka?', + openInNewWindow: 'Öppna i ett nytt fönster' + }, + table: { + table: 'Tabell' + }, + hr: { + insert: 'Infoga horisontell linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Rubrik 1', + h2: 'Rubrik 2', + h3: 'Rubrik 3', + h4: 'Rubrik 4', + h5: 'Rubrik 5', + h6: 'Rubrik 6' + }, + lists: { + unordered: 'Punktlista', + ordered: 'Numrerad lista' + }, + options: { + help: 'Hjälp', + fullscreen: 'Fullskärm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Justera text', + outdent: 'Minska indrag', + indent: 'Öka indrag', + left: 'Vänsterjusterad', + center: 'Centrerad', + right: 'Högerjusterad', + justify: 'Justera text' + }, + color: { + recent: 'Senast använda färg', + more: 'Fler färger', + background: 'Bakgrundsfärg', + foreground: 'Teckenfärg', + transparent: 'Genomskinlig', + setTransparent: 'Gör genomskinlig', + reset: 'Nollställ', + resetToDefault: 'Återställ till standard' + }, + shortcut: { + shortcuts: 'Kortkommandon', + close: 'Stäng', + textFormatting: 'Textformatering', + action: 'Funktion', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil' + }, + history: { + undo: 'Ångra', + redo: 'Gör om' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-sv-SE.min.js b/plugins/summernote/lang/summernote-sv-SE.min.js new file mode 100644 index 0000000..e60870b --- /dev/null +++ b/plugins/summernote/lang/summernote-sv-SE.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"sv-SE":{font:{bold:"Fet",italic:"Kursiv",underline:"Understruken",clear:"Radera formatering",height:"Radavstånd",name:"Teckensnitt",strikethrough:"Genomstruken",size:"Teckenstorlek"},image:{image:"Bild",insert:"Infoga bild",resizeFull:"Full storlek",resizeHalf:"Halv storlek",resizeQuarter:"En fjärdedel i storlek",floatLeft:"Vänsterjusterad",floatRight:"Högerjusterad",floatNone:"Ingen justering",dragImageHere:"Dra en bild hit",selectFromFiles:"Välj från filer",url:"Länk till bild",remove:"Ta bort bild"},video:{video:"Filmklipp",videoLink:"Länk till filmklipp",insert:"Infoga filmklipp",url:"Länk till filmklipp",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Länk",insert:"Infoga länk",unlink:"Ta bort länk",edit:"Redigera",textToDisplay:"Visningstext",url:"Till vilken URL ska denna länk peka?",openInNewWindow:"Öppna i ett nytt fönster"},table:{table:"Tabell"},hr:{insert:"Infoga horisontell linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kod",h1:"Rubrik 1",h2:"Rubrik 2",h3:"Rubrik 3",h4:"Rubrik 4",h5:"Rubrik 5",h6:"Rubrik 6"},lists:{unordered:"Punktlista",ordered:"Numrerad lista"},options:{help:"Hjälp",fullscreen:"Fullskärm",codeview:"HTML-visning"},paragraph:{paragraph:"Justera text",outdent:"Minska indrag",indent:"Öka indrag",left:"Vänsterjusterad",center:"Centrerad",right:"Högerjusterad",justify:"Justera text"},color:{recent:"Senast använda färg",more:"Fler färger",background:"Bakgrundsfärg",foreground:"Teckenfärg",transparent:"Genomskinlig",setTransparent:"Gör genomskinlig",reset:"Nollställ",resetToDefault:"Återställ till standard"},shortcut:{shortcuts:"Kortkommandon",close:"Stäng",textFormatting:"Textformatering",action:"Funktion",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil"},history:{undo:"Ångra",redo:"Gör om"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-th-TH.js b/plugins/summernote/lang/summernote-th-TH.js new file mode 100644 index 0000000..47ae58c --- /dev/null +++ b/plugins/summernote/lang/summernote-th-TH.js @@ -0,0 +1,106 @@ +(function ($) { + $.extend($.summernote.lang, { + 'th-TH': { + font: { + bold: 'ตัวหนา', + italic: 'ตัวเอียง', + underline: 'ขีดเส้นใต้', + clear: 'ล้างรูปแบบตัวอักษร', + height: 'ความสูงบรรทัด', + name: 'แบบตัวอักษร', + strikethrough: 'ขีดฆ่า', + subscript: 'ตัวห้อย', + superscript: 'ตัวยก', + size: 'ขนาดตัวอักษร' + }, + image: { + image: 'รูปภาพ', + insert: 'แทรกรูปภาพ', + resizeFull: 'ปรับขนาดเท่าจริง', + resizeHalf: 'ปรับขนาดลง 50%', + resizeQuarter: 'ปรับขนาดลง 25%', + floatLeft: 'ชิดซ้าย', + floatRight: 'ชิดขวา', + floatNone: 'ไม่จัดตำแหน่ง', + dragImageHere: 'ลากรูปภาพที่ต้องการไว้ที่นี่', + selectFromFiles: 'เลือกไฟล์รูปภาพ', + url: 'ที่อยู่ URL ของรูปภาพ', + remove: 'ลบรูปภาพ' + }, + video: { + video: 'วีดีโอ', + videoLink: 'ลิงก์ของวีดีโอ', + insert: 'แทรกวีดีโอ', + url: 'ที่อยู่ URL ของวีดีโอ?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)' + }, + link: { + link: 'ตัวเชื่อมโยง', + insert: 'แทรกตัวเชื่อมโยง', + unlink: 'ยกเลิกตัวเชื่อมโยง', + edit: 'แก้ไข', + textToDisplay: 'ข้อความที่ให้แสดง', + url: 'ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?', + openInNewWindow: 'เปิดในหน้าต่างใหม่' + }, + table: { + table: 'ตาราง' + }, + hr: { + insert: 'แทรกเส้นคั่น' + }, + style: { + style: 'รูปแบบ', + p: 'ปกติ', + blockquote: 'ข้อความ', + pre: 'โค้ด', + h1: 'หัวข้อ 1', + h2: 'หัวข้อ 2', + h3: 'หัวข้อ 3', + h4: 'หัวข้อ 4', + h5: 'หัวข้อ 5', + h6: 'หัวข้อ 6' + }, + lists: { + unordered: 'รายการแบบไม่มีลำดับ', + ordered: 'รายการแบบมีลำดับ' + }, + options: { + help: 'ช่วยเหลือ', + fullscreen: 'ขยายเต็มหน้าจอ', + codeview: 'ซอร์สโค้ด' + }, + paragraph: { + paragraph: 'ย่อหน้า', + outdent: 'เยื้องซ้าย', + indent: 'เยื้องขวา', + left: 'จัดหน้าชิดซ้าย', + center: 'จัดหน้ากึ่งกลาง', + right: 'จัดหน้าชิดขวา', + justify: 'จัดบรรทัดเสมอกัน' + }, + color: { + recent: 'สีที่ใช้ล่าสุด', + more: 'สีอื่นๆ', + background: 'สีพื้นหลัง', + foreground: 'สีพื้นหน้า', + transparent: 'โปร่งแสง', + setTransparent: 'ตั้งค่าความโปร่งแสง', + reset: 'คืนค่า', + resetToDefault: 'คืนค่ามาตรฐาน' + }, + shortcut: { + shortcuts: 'แป้นลัด', + close: 'ปิด', + textFormatting: 'การจัดรูปแบบข้อความ', + action: 'การกระทำ', + paragraphFormatting: 'การจัดรูปแบบย่อหน้า', + documentStyle: 'รูปแบบของเอกสาร' + }, + history: { + undo: 'ยกเลิกการกระทำ', + redo: 'ทำซ้ำการกระทำ' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-th-TH.min.js b/plugins/summernote/lang/summernote-th-TH.min.js new file mode 100644 index 0000000..bdd5eb0 --- /dev/null +++ b/plugins/summernote/lang/summernote-th-TH.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"th-TH":{font:{bold:"ตัวหนา",italic:"ตัวเอียง",underline:"ขีดเส้นใต้",clear:"ล้างรูปแบบตัวอักษร",height:"ความสูงบรรทัด",name:"แบบตัวอักษร",strikethrough:"ขีดฆ่า",subscript:"ตัวห้อย",superscript:"ตัวยก",size:"ขนาดตัวอักษร"},image:{image:"รูปภาพ",insert:"แทรกรูปภาพ",resizeFull:"ปรับขนาดเท่าจริง",resizeHalf:"ปรับขนาดลง 50%",resizeQuarter:"ปรับขนาดลง 25%",floatLeft:"ชิดซ้าย",floatRight:"ชิดขวา",floatNone:"ไม่จัดตำแหน่ง",dragImageHere:"ลากรูปภาพที่ต้องการไว้ที่นี่",selectFromFiles:"เลือกไฟล์รูปภาพ",url:"ที่อยู่ URL ของรูปภาพ",remove:"ลบรูปภาพ"},video:{video:"วีดีโอ",videoLink:"ลิงก์ของวีดีโอ",insert:"แทรกวีดีโอ",url:"ที่อยู่ URL ของวีดีโอ?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)"},link:{link:"ตัวเชื่อมโยง",insert:"แทรกตัวเชื่อมโยง",unlink:"ยกเลิกตัวเชื่อมโยง",edit:"แก้ไข",textToDisplay:"ข้อความที่ให้แสดง",url:"ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?",openInNewWindow:"เปิดในหน้าต่างใหม่"},table:{table:"ตาราง"},hr:{insert:"แทรกเส้นคั่น"},style:{style:"รูปแบบ",p:"ปกติ",blockquote:"ข้อความ",pre:"โค้ด",h1:"หัวข้อ 1",h2:"หัวข้อ 2",h3:"หัวข้อ 3",h4:"หัวข้อ 4",h5:"หัวข้อ 5",h6:"หัวข้อ 6"},lists:{unordered:"รายการแบบไม่มีลำดับ",ordered:"รายการแบบมีลำดับ"},options:{help:"ช่วยเหลือ",fullscreen:"ขยายเต็มหน้าจอ",codeview:"ซอร์สโค้ด"},paragraph:{paragraph:"ย่อหน้า",outdent:"เยื้องซ้าย",indent:"เยื้องขวา",left:"จัดหน้าชิดซ้าย",center:"จัดหน้ากึ่งกลาง",right:"จัดหน้าชิดขวา",justify:"จัดบรรทัดเสมอกัน"},color:{recent:"สีที่ใช้ล่าสุด",more:"สีอื่นๆ",background:"สีพื้นหลัง",foreground:"สีพื้นหน้า",transparent:"โปร่งแสง",setTransparent:"ตั้งค่าความโปร่งแสง",reset:"คืนค่า",resetToDefault:"คืนค่ามาตรฐาน"},shortcut:{shortcuts:"แป้นลัด",close:"ปิด",textFormatting:"การจัดรูปแบบข้อความ",action:"การกระทำ",paragraphFormatting:"การจัดรูปแบบย่อหน้า",documentStyle:"รูปแบบของเอกสาร"},history:{undo:"ยกเลิกการกระทำ",redo:"ทำซ้ำการกระทำ"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-tr-TR.js b/plugins/summernote/lang/summernote-tr-TR.js new file mode 100644 index 0000000..e9e21d4 --- /dev/null +++ b/plugins/summernote/lang/summernote-tr-TR.js @@ -0,0 +1,147 @@ +(function ($) { + $.extend($.summernote.lang, { + 'tr-TR': { + font: { + bold: 'Kalın', + italic: 'İtalik', + underline: 'Altı çizili', + clear: 'Temizle', + height: 'Satır yüksekliği', + name: 'Yazı Tipi', + strikethrough: 'Üstü çizili', + subscript: 'Alt Simge', + superscript: 'Üst Simge', + size: 'Yazı tipi boyutu' + }, + image: { + image: 'Resim', + insert: 'Resim ekle', + resizeFull: 'Orjinal boyut', + resizeHalf: '1/2 boyut', + resizeQuarter: '1/4 boyut', + floatLeft: 'Sola hizala', + floatRight: 'Sağa hizala', + floatNone: 'Hizalamayı kaldır', + shapeRounded: 'Şekil: Yuvarlatılmış Köşe', + shapeCircle: 'Şekil: Daire', + shapeThumbnail: 'Şekil: K.Resim', + shapeNone: 'Şekil: Yok', + dragImageHere: 'Buraya sürükleyin', + dropImage: 'Resim veya metni bırakın', + selectFromFiles: 'Dosya seçin', + maximumFileSize: 'Maksimum dosya boyutu', + maximumFileSizeError: 'Maksimum dosya boyutu aşıldı.', + url: 'Resim bağlantısı', + remove: 'Resimi Kaldır' + }, + video: { + video: 'Video', + videoLink: 'Video bağlantısı', + insert: 'Video ekle', + url: 'Video bağlantısı?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)' + }, + link: { + link: 'Bağlantı', + insert: 'Bağlantı ekle', + unlink: 'Bağlantıyı kaldır', + edit: 'Bağlantıyı düzenle', + textToDisplay: 'Görüntülemek için', + url: 'Bağlantı adresi?', + openInNewWindow: 'Yeni pencerede aç' + }, + table: { + table: 'Tablo' + }, + hr: { + insert: 'Yatay çizgi ekle' + }, + style: { + style: 'Biçim', + p: 'p', + blockquote: 'Alıntı', + pre: 'Önbiçimli', + h1: 'Başlık 1', + h2: 'Başlık 2', + h3: 'Başlık 3', + h4: 'Başlık 4', + h5: 'Başlık 5', + h6: 'Başlık 6' + }, + lists: { + unordered: 'Madde işaretli liste', + ordered: 'Numaralı liste' + }, + options: { + help: 'Yardım', + fullscreen: 'Tam ekran', + codeview: 'HTML Kodu' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Girintiyi artır', + indent: 'Girintiyi azalt', + left: 'Sola hizala', + center: 'Ortaya hizala', + right: 'Sağa hizala', + justify: 'Yasla' + }, + color: { + recent: 'Son renk', + more: 'Daha fazla renk', + background: 'Arka plan rengi', + foreground: 'Yazı rengi', + transparent: 'Seffaflık', + setTransparent: 'Şeffaflığı ayarla', + reset: 'Sıfırla', + resetToDefault: 'Varsayılanlara sıfırla' + }, + shortcut: { + shortcuts: 'Kısayollar', + close: 'Kapat', + textFormatting: 'Yazı biçimlendirme', + action: 'Eylem', + paragraphFormatting: 'Paragraf biçimlendirme', + documentStyle: 'Biçim', + extraKeys: 'İlave anahtarlar' + }, + help: { + 'insertParagraph': 'Paragraf ekler', + 'undo': 'Son komudu geri alır', + 'redo': 'Son komudu yineler', + 'tab': 'Girintiyi artırır', + 'untab': 'Girintiyi azaltır', + 'bold': 'Kalın yazma stilini ayarlar', + 'italic': 'İtalik yazma stilini ayarlar', + 'underline': 'Altı çizgili yazma stilini ayarlar', + 'strikethrough': 'Üstü çizgili yazma stilini ayarlar', + 'removeFormat': 'Biçimlendirmeyi temizler', + 'justifyLeft': 'Yazıyı sola hizalar', + 'justifyCenter': 'Yazıyı ortalar', + 'justifyRight': 'Yazıyı sağa hizalar', + 'justifyFull': 'Yazıyı her iki tarafa yazlar', + 'insertUnorderedList': 'Madde işaretli liste ekler', + 'insertOrderedList': 'Numaralı liste ekler', + 'outdent': 'Aktif paragrafın girintisini azaltır', + 'indent': 'Aktif paragrafın girintisini artırır', + 'formatPara': 'Aktif bloğun biçimini paragraf (p) olarak değiştirir', + 'formatH1': 'Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir', + 'formatH2': 'Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir', + 'formatH3': 'Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir', + 'formatH4': 'Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir', + 'formatH5': 'Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir', + 'formatH6': 'Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir', + 'insertHorizontalRule': 'Yatay çizgi ekler', + 'linkDialog.show': 'Bağlantı ayar kutusunu gösterir' + }, + history: { + undo: 'Geri al', + redo: 'Yinele' + }, + specialChar: { + specialChar: 'ÖZEL KARAKTERLER', + select: 'Özel Karakterleri seçin' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-tr-TR.min.js b/plugins/summernote/lang/summernote-tr-TR.min.js new file mode 100644 index 0000000..22ae21d --- /dev/null +++ b/plugins/summernote/lang/summernote-tr-TR.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"tr-TR":{font:{bold:"Kalın",italic:"İtalik",underline:"Altı çizili",clear:"Temizle",height:"Satır yüksekliği",name:"Yazı Tipi",strikethrough:"Üstü çizili",subscript:"Alt Simge",superscript:"Üst Simge",size:"Yazı tipi boyutu"},image:{image:"Resim",insert:"Resim ekle",resizeFull:"Orjinal boyut",resizeHalf:"1/2 boyut",resizeQuarter:"1/4 boyut",floatLeft:"Sola hizala",floatRight:"Sağa hizala",floatNone:"Hizalamayı kaldır",shapeRounded:"Şekil: Yuvarlatılmış Köşe",shapeCircle:"Şekil: Daire",shapeThumbnail:"Şekil: K.Resim",shapeNone:"Şekil: Yok",dragImageHere:"Buraya sürükleyin",dropImage:"Resim veya metni bırakın",selectFromFiles:"Dosya seçin",maximumFileSize:"Maksimum dosya boyutu",maximumFileSizeError:"Maksimum dosya boyutu aşıldı.",url:"Resim bağlantısı",remove:"Resimi Kaldır"},video:{video:"Video",videoLink:"Video bağlantısı",insert:"Video ekle",url:"Video bağlantısı?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)"},link:{link:"Bağlantı",insert:"Bağlantı ekle",unlink:"Bağlantıyı kaldır",edit:"Bağlantıyı düzenle",textToDisplay:"Görüntülemek için",url:"Bağlantı adresi?",openInNewWindow:"Yeni pencerede aç"},table:{table:"Tablo"},hr:{insert:"Yatay çizgi ekle"},style:{style:"Biçim",p:"p",blockquote:"Alıntı",pre:"Önbiçimli",h1:"Başlık 1",h2:"Başlık 2",h3:"Başlık 3",h4:"Başlık 4",h5:"Başlık 5",h6:"Başlık 6"},lists:{unordered:"Madde işaretli liste",ordered:"Numaralı liste"},options:{help:"Yardım",fullscreen:"Tam ekran",codeview:"HTML Kodu"},paragraph:{paragraph:"Paragraf",outdent:"Girintiyi artır",indent:"Girintiyi azalt",left:"Sola hizala",center:"Ortaya hizala",right:"Sağa hizala",justify:"Yasla"},color:{recent:"Son renk",more:"Daha fazla renk",background:"Arka plan rengi",foreground:"Yazı rengi",transparent:"Seffaflık",setTransparent:"Şeffaflığı ayarla",reset:"Sıfırla",resetToDefault:"Varsayılanlara sıfırla"},shortcut:{shortcuts:"Kısayollar",close:"Kapat",textFormatting:"Yazı biçimlendirme",action:"Eylem",paragraphFormatting:"Paragraf biçimlendirme",documentStyle:"Biçim",extraKeys:"İlave anahtarlar"},help:{insertParagraph:"Paragraf ekler",undo:"Son komudu geri alır",redo:"Son komudu yineler",tab:"Girintiyi artırır",untab:"Girintiyi azaltır",bold:"Kalın yazma stilini ayarlar",italic:"İtalik yazma stilini ayarlar",underline:"Altı çizgili yazma stilini ayarlar",strikethrough:"Üstü çizgili yazma stilini ayarlar",removeFormat:"Biçimlendirmeyi temizler",justifyLeft:"Yazıyı sola hizalar",justifyCenter:"Yazıyı ortalar",justifyRight:"Yazıyı sağa hizalar",justifyFull:"Yazıyı her iki tarafa yazlar",insertUnorderedList:"Madde işaretli liste ekler",insertOrderedList:"Numaralı liste ekler",outdent:"Aktif paragrafın girintisini azaltır",indent:"Aktif paragrafın girintisini artırır",formatPara:"Aktif bloğun biçimini paragraf (p) olarak değiştirir",formatH1:"Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir",formatH2:"Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir",formatH3:"Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir",formatH4:"Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir",formatH5:"Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir",formatH6:"Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir",insertHorizontalRule:"Yatay çizgi ekler","linkDialog.show":"Bağlantı ayar kutusunu gösterir"},history:{undo:"Geri al",redo:"Yinele"},specialChar:{specialChar:"ÖZEL KARAKTERLER",select:"Özel Karakterleri seçin"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-uk-UA.js b/plugins/summernote/lang/summernote-uk-UA.js new file mode 100644 index 0000000..e210572 --- /dev/null +++ b/plugins/summernote/lang/summernote-uk-UA.js @@ -0,0 +1,111 @@ +(function ($) { + $.extend($.summernote.lang, { + 'uk-UA': { + font: { + bold: 'Напівжирний', + italic: 'Курсив', + underline: 'Підкреслений', + clear: 'Прибрати стилі шрифту', + height: 'Висота лінії', + name: 'Шрифт', + strikethrough: 'Закреслений', + subscript: 'Нижній індекс', + superscript: 'Верхній індекс', + size: 'Розмір шрифту' + }, + image: { + image: 'Картинка', + insert: 'Вставити картинку', + resizeFull: 'Відновити розмір', + resizeHalf: 'Зменшити до 50%', + resizeQuarter: 'Зменшити до 25%', + floatLeft: 'Розташувати ліворуч', + floatRight: 'Розташувати праворуч', + floatNone: 'Початкове розташування', + shapeRounded: 'Форма: Заокруглена', + shapeCircle: 'Форма: Коло', + shapeThumbnail: 'Форма: Мініатюра', + shapeNone: 'Форма: Немає', + dragImageHere: 'Перетягніть сюди картинку', + dropImage: 'Перетягніть картинку', + selectFromFiles: 'Вибрати з файлів', + url: 'URL картинки', + remove: 'Видалити картинку' + }, + video: { + video: 'Відео', + videoLink: 'Посилання на відео', + insert: 'Вставити відео', + url: 'URL відео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)' + }, + link: { + link: 'Посилання', + insert: 'Вставити посилання', + unlink: 'Прибрати посилання', + edit: 'Редагувати', + textToDisplay: 'Текст, що відображається', + url: 'URL для переходу', + openInNewWindow: 'Відкривати у новому вікні' + }, + table: { + table: 'Таблиця' + }, + hr: { + insert: 'Вставити горизонтальну лінію' + }, + style: { + style: 'Стиль', + p: 'Нормальний', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркований список', + ordered: 'Нумерований список' + }, + options: { + help: 'Допомога', + fullscreen: 'На весь екран', + codeview: 'Початковий код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Зменшити відступ', + indent: 'Збільшити відступ', + left: 'Вирівняти по лівому краю', + center: 'Вирівняти по центру', + right: 'Вирівняти по правому краю', + justify: 'Розтягнути по ширині' + }, + color: { + recent: 'Останній колір', + more: 'Ще кольори', + background: 'Колір фону', + foreground: 'Колір шрифту', + transparent: 'Прозорий', + setTransparent: 'Зробити прозорим', + reset: 'Відновити', + resetToDefault: 'Відновити початкові' + }, + shortcut: { + shortcuts: 'Комбінації клавіш', + close: 'Закрити', + textFormatting: 'Форматування тексту', + action: 'Дія', + paragraphFormatting: 'Форматування параграфу', + documentStyle: 'Стиль документу' + }, + history: { + undo: 'Відмінити', + redo: 'Повторити' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-uk-UA.min.js b/plugins/summernote/lang/summernote-uk-UA.min.js new file mode 100644 index 0000000..5490e96 --- /dev/null +++ b/plugins/summernote/lang/summernote-uk-UA.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"uk-UA":{font:{bold:"Напівжирний",italic:"Курсив",underline:"Підкреслений",clear:"Прибрати стилі шрифту",height:"Висота лінії",name:"Шрифт",strikethrough:"Закреслений",subscript:"Нижній індекс",superscript:"Верхній індекс",size:"Розмір шрифту"},image:{image:"Картинка",insert:"Вставити картинку",resizeFull:"Відновити розмір",resizeHalf:"Зменшити до 50%",resizeQuarter:"Зменшити до 25%",floatLeft:"Розташувати ліворуч",floatRight:"Розташувати праворуч",floatNone:"Початкове розташування",shapeRounded:"Форма: Заокруглена",shapeCircle:"Форма: Коло",shapeThumbnail:"Форма: Мініатюра",shapeNone:"Форма: Немає",dragImageHere:"Перетягніть сюди картинку",dropImage:"Перетягніть картинку",selectFromFiles:"Вибрати з файлів",url:"URL картинки",remove:"Видалити картинку"},video:{video:"Відео",videoLink:"Посилання на відео",insert:"Вставити відео",url:"URL відео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)"},link:{link:"Посилання",insert:"Вставити посилання",unlink:"Прибрати посилання",edit:"Редагувати",textToDisplay:"Текст, що відображається",url:"URL для переходу",openInNewWindow:"Відкривати у новому вікні"},table:{table:"Таблиця"},hr:{insert:"Вставити горизонтальну лінію"},style:{style:"Стиль",p:"Нормальний",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркований список",ordered:"Нумерований список"},options:{help:"Допомога",fullscreen:"На весь екран",codeview:"Початковий код"},paragraph:{paragraph:"Параграф",outdent:"Зменшити відступ",indent:"Збільшити відступ",left:"Вирівняти по лівому краю",center:"Вирівняти по центру",right:"Вирівняти по правому краю",justify:"Розтягнути по ширині"},color:{recent:"Останній колір",more:"Ще кольори",background:"Колір фону",foreground:"Колір шрифту",transparent:"Прозорий",setTransparent:"Зробити прозорим",reset:"Відновити",resetToDefault:"Відновити початкові"},shortcut:{shortcuts:"Комбінації клавіш",close:"Закрити",textFormatting:"Форматування тексту",action:"Дія",paragraphFormatting:"Форматування параграфу",documentStyle:"Стиль документу"},history:{undo:"Відмінити",redo:"Повторити"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-vi-VN.js b/plugins/summernote/lang/summernote-vi-VN.js new file mode 100644 index 0000000..917e629 --- /dev/null +++ b/plugins/summernote/lang/summernote-vi-VN.js @@ -0,0 +1,104 @@ +(function ($) { + $.extend($.summernote.lang, { + 'vi-VN': { + font: { + bold: 'In Đậm', + italic: 'In Nghiêng', + underline: 'Gạch dưới', + clear: 'Bỏ định dạng', + height: 'Chiều cao dòng', + name: 'Phông chữ', + strikethrough: 'Gạch ngang', + size: 'Cỡ chữ' + }, + image: { + image: 'Hình ảnh', + insert: 'Chèn', + resizeFull: '100%', + resizeHalf: '50%', + resizeQuarter: '25%', + floatLeft: 'Trôi về trái', + floatRight: 'Trôi về phải', + floatNone: 'Không trôi', + dragImageHere: 'Thả Ảnh ở vùng này', + selectFromFiles: 'Chọn từ File', + url: 'URL', + remove: 'Xóa' + }, + video: { + video: 'Video', + videoLink: 'Link đến Video', + insert: 'Chèn Video', + url: 'URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)' + }, + link: { + link: 'Link', + insert: 'Chèn Link', + unlink: 'Gỡ Link', + edit: 'Sửa', + textToDisplay: 'Văn bản hiển thị', + url: 'URL', + openInNewWindow: 'Mở ở Cửa sổ mới' + }, + table: { + table: 'Bảng' + }, + hr: { + insert: 'Chèn' + }, + style: { + style: 'Kiểu chữ', + p: 'Chữ thường', + blockquote: 'Đoạn trích', + pre: 'Mã Code', + h1: 'H1', + h2: 'H2', + h3: 'H3', + h4: 'H4', + h5: 'H5', + h6: 'H6' + }, + lists: { + unordered: 'Liệt kê danh sách', + ordered: 'Liệt kê theo thứ tự' + }, + options: { + help: 'Trợ giúp', + fullscreen: 'Toàn Màn hình', + codeview: 'Xem Code' + }, + paragraph: { + paragraph: 'Canh lề', + outdent: 'Dịch sang trái', + indent: 'Dịch sang phải', + left: 'Canh trái', + center: 'Canh giữa', + right: 'Canh phải', + justify: 'Canh đều' + }, + color: { + recent: 'Màu chữ', + more: 'Mở rộng', + background: 'Màu nền', + foreground: 'Màu chữ', + transparent: 'trong suốt', + setTransparent: 'Nền trong suốt', + reset: 'Thiết lập lại', + resetToDefault: 'Trở lại ban đầu' + }, + shortcut: { + shortcuts: 'Phím tắt', + close: 'Đóng', + textFormatting: 'Định dạng Văn bản', + action: 'Hành động', + paragraphFormatting: 'Định dạng', + documentStyle: 'Kiểu văn bản' + }, + history: { + undo: 'Lùi lại', + redo: 'Làm lại' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-vi-VN.min.js b/plugins/summernote/lang/summernote-vi-VN.min.js new file mode 100644 index 0000000..39671be --- /dev/null +++ b/plugins/summernote/lang/summernote-vi-VN.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"vi-VN":{font:{bold:"In Đậm",italic:"In Nghiêng",underline:"Gạch dưới",clear:"Bỏ định dạng",height:"Chiều cao dòng",name:"Phông chữ",strikethrough:"Gạch ngang",size:"Cỡ chữ"},image:{image:"Hình ảnh",insert:"Chèn",resizeFull:"100%",resizeHalf:"50%",resizeQuarter:"25%",floatLeft:"Trôi về trái",floatRight:"Trôi về phải",floatNone:"Không trôi",dragImageHere:"Thả Ảnh ở vùng này",selectFromFiles:"Chọn từ File",url:"URL",remove:"Xóa"},video:{video:"Video",videoLink:"Link đến Video",insert:"Chèn Video",url:"URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)"},link:{link:"Link",insert:"Chèn Link",unlink:"Gỡ Link",edit:"Sửa",textToDisplay:"Văn bản hiển thị",url:"URL",openInNewWindow:"Mở ở Cửa sổ mới"},table:{table:"Bảng"},hr:{insert:"Chèn"},style:{style:"Kiểu chữ",p:"Chữ thường",blockquote:"Đoạn trích",pre:"Mã Code",h1:"H1",h2:"H2",h3:"H3",h4:"H4",h5:"H5",h6:"H6"},lists:{unordered:"Liệt kê danh sách",ordered:"Liệt kê theo thứ tự"},options:{help:"Trợ giúp",fullscreen:"Toàn Màn hình",codeview:"Xem Code"},paragraph:{paragraph:"Canh lề",outdent:"Dịch sang trái",indent:"Dịch sang phải",left:"Canh trái",center:"Canh giữa",right:"Canh phải",justify:"Canh đều"},color:{recent:"Màu chữ",more:"Mở rộng",background:"Màu nền",foreground:"Màu chữ",transparent:"trong suốt",setTransparent:"Nền trong suốt",reset:"Thiết lập lại",resetToDefault:"Trở lại ban đầu"},shortcut:{shortcuts:"Phím tắt",close:"Đóng",textFormatting:"Định dạng Văn bản",action:"Hành động",paragraphFormatting:"Định dạng",documentStyle:"Kiểu văn bản"},history:{undo:"Lùi lại",redo:"Làm lại"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-zh-CN.js b/plugins/summernote/lang/summernote-zh-CN.js new file mode 100644 index 0000000..99e5194 --- /dev/null +++ b/plugins/summernote/lang/summernote-zh-CN.js @@ -0,0 +1,113 @@ +(function ($) { + $.extend($.summernote.lang, { + 'zh-CN': { + font: { + bold: '粗体', + italic: '斜体', + underline: '下划线', + clear: '清除格式', + height: '行高', + name: '字体', + strikethrough: '删除线', + subscript: '下标', + superscript: '上标', + size: '字号' + }, + image: { + image: '图片', + insert: '插入图片', + resizeFull: '缩放至 100%', + resizeHalf: '缩放至 50%', + resizeQuarter: '缩放至 25%', + floatLeft: '靠左浮动', + floatRight: '靠右浮动', + floatNone: '取消浮动', + shapeRounded: '形状: 圆角', + shapeCircle: '形状: 圆', + shapeThumbnail: '形状: 缩略图', + shapeNone: '形状: 无', + dragImageHere: '将图片拖拽至此处', + selectFromFiles: '从本地上传', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '图片地址', + remove: '移除图片' + }, + video: { + video: '视频', + videoLink: '视频链接', + insert: '插入视频', + url: '视频地址', + providers: '(优酷, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '链接', + insert: '插入链接', + unlink: '去除链接', + edit: '编辑链接', + textToDisplay: '显示文本', + url: '链接地址', + openInNewWindow: '在新窗口打开' + }, + table: { + table: '表格' + }, + hr: { + insert: '水平线' + }, + style: { + style: '样式', + p: '普通', + blockquote: '引用', + pre: '代码', + h1: '标题 1', + h2: '标题 2', + h3: '标题 3', + h4: '标题 4', + h5: '标题 5', + h6: '标题 6' + }, + lists: { + unordered: '无序列表', + ordered: '有序列表' + }, + options: { + help: '帮助', + fullscreen: '全屏', + codeview: '源代码' + }, + paragraph: { + paragraph: '段落', + outdent: '减少缩进', + indent: '增加缩进', + left: '左对齐', + center: '居中对齐', + right: '右对齐', + justify: '两端对齐' + }, + color: { + recent: '最近使用', + more: '更多', + background: '背景', + foreground: '前景', + transparent: '透明', + setTransparent: '透明', + reset: '重置', + resetToDefault: '默认' + }, + shortcut: { + shortcuts: '快捷键', + close: '关闭', + textFormatting: '文本格式', + action: '动作', + paragraphFormatting: '段落格式', + documentStyle: '文档样式', + extraKeys: '额外按键' + }, + history: { + undo: '撤销', + redo: '重做' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-zh-CN.min.js b/plugins/summernote/lang/summernote-zh-CN.min.js new file mode 100644 index 0000000..77ae5c5 --- /dev/null +++ b/plugins/summernote/lang/summernote-zh-CN.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},history:{undo:"撤销",redo:"重做"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/lang/summernote-zh-TW.js b/plugins/summernote/lang/summernote-zh-TW.js new file mode 100644 index 0000000..775e217 --- /dev/null +++ b/plugins/summernote/lang/summernote-zh-TW.js @@ -0,0 +1,113 @@ +(function ($) { + $.extend($.summernote.lang, { + 'zh-TW': { + font: { + bold: '粗體', + italic: '斜體', + underline: '底線', + clear: '清除格式', + height: '行高', + name: '字體', + strikethrough: '刪除線', + subscript: '下標', + superscript: '上標', + size: '字號' + }, + image: { + image: '圖片', + insert: '插入圖片', + resizeFull: '縮放至100%', + resizeHalf: '縮放至 50%', + resizeQuarter: '縮放至 25%', + floatLeft: '靠左浮動', + floatRight: '靠右浮動', + floatNone: '取消浮動', + shapeRounded: '形狀: 圓角', + shapeCircle: '形狀: 圓', + shapeThumbnail: '形狀: 縮略圖', + shapeNone: '形狀: 無', + dragImageHere: '將圖片拖曳至此處', + selectFromFiles: '從本機上傳', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '圖片網址', + remove: '移除圖片' + }, + video: { + video: '影片', + videoLink: '影片連結', + insert: '插入影片', + url: '影片網址', + providers: '(優酷, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '連結', + insert: '插入連結', + unlink: '取消連結', + edit: '編輯連結', + textToDisplay: '顯示文字', + url: '連結網址', + openInNewWindow: '在新視窗開啟' + }, + table: { + table: '表格' + }, + hr: { + insert: '水平線' + }, + style: { + style: '樣式', + p: '一般', + blockquote: '引用區塊', + pre: '程式碼區塊', + h1: '標題 1', + h2: '標題 2', + h3: '標題 3', + h4: '標題 4', + h5: '標題 5', + h6: '標題 6' + }, + lists: { + unordered: '項目清單', + ordered: '編號清單' + }, + options: { + help: '幫助', + fullscreen: '全螢幕', + codeview: '原始碼' + }, + paragraph: { + paragraph: '段落', + outdent: '取消縮排', + indent: '增加縮排', + left: '靠右對齊', + center: '靠中對齊', + right: '靠右對齊', + justify: '左右對齊' + }, + color: { + recent: '字型顏色', + more: '更多', + background: '背景', + foreground: '前景', + transparent: '透明', + setTransparent: '透明', + reset: '重設', + resetToDefault: '默認' + }, + shortcut: { + shortcuts: '快捷鍵', + close: '關閉', + textFormatting: '文字格式', + action: '動作', + paragraphFormatting: '段落格式', + documentStyle: '文件格式', + extraKeys: '額外按鍵' + }, + history: { + undo: '復原', + redo: '取消復原' + } + } + }); +})(jQuery); diff --git a/plugins/summernote/lang/summernote-zh-TW.min.js b/plugins/summernote/lang/summernote-zh-TW.min.js new file mode 100644 index 0000000..0c65c10 --- /dev/null +++ b/plugins/summernote/lang/summernote-zh-TW.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){a.extend(a.summernote.lang,{"zh-TW":{font:{bold:"粗體",italic:"斜體",underline:"底線",clear:"清除格式",height:"行高",name:"字體",strikethrough:"刪除線",subscript:"下標",superscript:"上標",size:"字號"},image:{image:"圖片",insert:"插入圖片",resizeFull:"縮放至100%",resizeHalf:"縮放至 50%",resizeQuarter:"縮放至 25%",floatLeft:"靠左浮動",floatRight:"靠右浮動",floatNone:"取消浮動",shapeRounded:"形狀: 圓角",shapeCircle:"形狀: 圓",shapeThumbnail:"形狀: 縮略圖",shapeNone:"形狀: 無",dragImageHere:"將圖片拖曳至此處",selectFromFiles:"從本機上傳",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"圖片網址",remove:"移除圖片"},video:{video:"影片",videoLink:"影片連結",insert:"插入影片",url:"影片網址",providers:"(優酷, Instagram, DailyMotion, Youtube等)"},link:{link:"連結",insert:"插入連結",unlink:"取消連結",edit:"編輯連結",textToDisplay:"顯示文字",url:"連結網址",openInNewWindow:"在新視窗開啟"},table:{table:"表格"},hr:{insert:"水平線"},style:{style:"樣式",p:"一般",blockquote:"引用區塊",pre:"程式碼區塊",h1:"標題 1",h2:"標題 2",h3:"標題 3",h4:"標題 4",h5:"標題 5",h6:"標題 6"},lists:{unordered:"項目清單",ordered:"編號清單"},options:{help:"幫助",fullscreen:"全螢幕",codeview:"原始碼"},paragraph:{paragraph:"段落",outdent:"取消縮排",indent:"增加縮排",left:"靠右對齊",center:"靠中對齊",right:"靠右對齊",justify:"左右對齊"},color:{recent:"字型顏色",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重設",resetToDefault:"默認"},shortcut:{shortcuts:"快捷鍵",close:"關閉",textFormatting:"文字格式",action:"動作",paragraphFormatting:"段落格式",documentStyle:"文件格式",extraKeys:"額外按鍵"},history:{undo:"復原",redo:"取消復原"}}})}(jQuery); \ No newline at end of file diff --git a/plugins/summernote/plugin/databasic/summernote-ext-databasic.css b/plugins/summernote/plugin/databasic/summernote-ext-databasic.css new file mode 100644 index 0000000..6232dde --- /dev/null +++ b/plugins/summernote/plugin/databasic/summernote-ext-databasic.css @@ -0,0 +1,16 @@ +.ext-databasic { + position: relative; + display: block; + min-height: 50px; + background-color: cyan; + text-align: center; + padding: 20px; + border: 1px solid white; + border-radius: 10px; +} + +.ext-databasic p { + color: white; + font-size: 1.2em; + margin: 0; +} diff --git a/plugins/summernote/plugin/databasic/summernote-ext-databasic.js b/plugins/summernote/plugin/databasic/summernote-ext-databasic.js new file mode 100644 index 0000000..37a5dba --- /dev/null +++ b/plugins/summernote/plugin/databasic/summernote-ext-databasic.js @@ -0,0 +1,303 @@ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function ($) { + + // pull in some summernote core functions + var ui = $.summernote.ui; + var dom = $.summernote.dom; + + // define the popover plugin + var DataBasicPlugin = function (context) { + var self = this; + var options = context.options; + var lang = options.langInfo; + + self.icon = '<i class="fa fa-object-group"/>'; + + // add context menu button for dialog + context.memo('button.databasic', function () { + return ui.button({ + contents: self.icon, + tooltip: lang.databasic.insert, + click: context.createInvokeHandler('databasic.showDialog') + }).render(); + }); + + // add popover edit button + context.memo('button.databasicDialog', function () { + return ui.button({ + contents: self.icon, + tooltip: lang.databasic.edit, + click: context.createInvokeHandler('databasic.showDialog') + }).render(); + }); + + // add popover size buttons + context.memo('button.databasicSize100', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">100%</span>', + tooltip: lang.image.resizeFull, + click: context.createInvokeHandler('editor.resize', '1') + }).render(); + }); + context.memo('button.databasicSize50', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">50%</span>', + tooltip: lang.image.resizeHalf, + click: context.createInvokeHandler('editor.resize', '0.5') + }).render(); + }); + context.memo('button.databasicSize25', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">25%</span>', + tooltip: lang.image.resizeQuarter, + click: context.createInvokeHandler('editor.resize', '0.25') + }).render(); + }); + + self.events = { + 'summernote.init': function (we, e) { + // update existing containers + $('data.ext-databasic', e.editable).each(function () { self.setContent($(this)); }); + // TODO: make this an undo snapshot... + }, + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function () { + self.update(); + }, + 'summernote.dialog.shown': function () { + self.hidePopover(); + } + }; + + self.initialize = function () { + // create dialog markup + var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor; + + var body = '<div class="form-group row-fluid">' + + '<label>' + lang.databasic.testLabel + '</label>' + + '<input class="ext-databasic-test form-control" type="text" />' + + '</div>'; + var footer = '<button href="#" class="btn btn-primary ext-databasic-save">' + lang.databasic.insert + '</button>'; + + self.$dialog = ui.dialog({ + title: lang.databasic.name, + fade: options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + + // create popover + self.$popover = ui.popover({ + className: 'ext-databasic-popover' + }).render().appendTo('body'); + var $content = self.$popover.find('.popover-content'); + + context.invoke('buttons.build', $content, options.popover.databasic); + }; + + self.destroy = function () { + self.$popover.remove(); + self.$popover = null; + self.$dialog.remove(); + self.$dialog = null; + }; + + self.update = function () { + // Prevent focusing on editable when invoke('code') is executed + if (!context.invoke('editor.hasFocus')) { + self.hidePopover(); + return; + } + + var rng = context.invoke('editor.createRange'); + var visible = false; + + if (rng.isOnData()) + { + var $data = $(rng.sc).closest('data.ext-databasic'); + + if ($data.length) + { + var pos = dom.posFromPlaceholder($data[0]); + + self.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + + // save editor target to let size buttons resize the container + context.invoke('editor.saveTarget', $data[0]); + + visible = true; + } + + } + + // hide if not visible + if (!visible) { + self.hidePopover(); + } + + }; + + self.hidePopover = function () { + self.$popover.hide(); + }; + + // define plugin dialog + self.getInfo = function () { + var rng = context.invoke('editor.createRange'); + + if (rng.isOnData()) + { + var $data = $(rng.sc).closest('data.ext-databasic'); + + if ($data.length) + { + // Get the first node on range(for edit). + return { + node: $data, + test: $data.attr('data-test') + }; + } + } + + return {}; + }; + + self.setContent = function ($node) { + $node.html('<p contenteditable="false">' + self.icon + ' ' + lang.databasic.name + ': ' + + $node.attr('data-test') + '</p>'); + }; + + self.updateNode = function (info) { + self.setContent(info.node + .attr('data-test', info.test)); + }; + + self.createNode = function (info) { + var $node = $('<data class="ext-databasic"></data>'); + + if ($node) { + // save node to info structure + info.node = $node; + // insert node into editor dom + context.invoke('editor.insertNode', $node[0]); + } + + return $node; + }; + + self.showDialog = function () { + var info = self.getInfo(); + var newNode = !info.node; + context.invoke('editor.saveRange'); + + self + .openDialog(info) + .then(function (dialogInfo) { + // [workaround] hide dialog before restore range for IE range focus + ui.hideDialog(self.$dialog); + context.invoke('editor.restoreRange'); + + // insert a new node + if (newNode) + { + self.createNode(info); + } + + // update info with dialog info + $.extend(info, dialogInfo); + + self.updateNode(info); + }) + .fail(function () { + context.invoke('editor.restoreRange'); + }); + + }; + + self.openDialog = function (info) { + return $.Deferred(function (deferred) { + var $inpTest = self.$dialog.find('.ext-databasic-test'); + var $saveBtn = self.$dialog.find('.ext-databasic-save'); + var onKeyup = function (event) { + if (event.keyCode === 13) + { + $saveBtn.trigger('click'); + } + }; + + ui.onDialogShown(self.$dialog, function () { + context.triggerEvent('dialog.shown'); + + $inpTest.val(info.test).on('input', function () { + ui.toggleBtn($saveBtn, $inpTest.val()); + }).trigger('focus').on('keyup', onKeyup); + + $saveBtn + .text(info.node ? lang.databasic.edit : lang.databasic.insert) + .click(function (event) { + event.preventDefault(); + + deferred.resolve({ test: $inpTest.val() }); + }); + + // init save button + ui.toggleBtn($saveBtn, $inpTest.val()); + }); + + ui.onDialogHidden(self.$dialog, function () { + $inpTest.off('input keyup'); + $saveBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + }; + + // Extends summernote + $.extend(true, $.summernote, { + plugins: { + databasic: DataBasicPlugin + }, + + options: { + popover: { + databasic: [ + ['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']] + ] + } + }, + + // add localization texts + lang: { + 'en-US': { + databasic: { + name: 'Basic Data Container', + insert: 'insert basic data container', + edit: 'edit basic data container', + testLabel: 'test input' + } + } + } + + }); + +})); diff --git a/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.css b/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.css new file mode 100644 index 0000000..3f0fc81 --- /dev/null +++ b/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.css @@ -0,0 +1 @@ +.ext-databasic{position:relative;display:block;min-height:50px;padding:20px;text-align:center;background-color:cyan;border:1px solid white;border-radius:10px}.ext-databasic p{margin:0;font-size:1.2em;color:white} \ No newline at end of file diff --git a/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.js b/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.js new file mode 100644 index 0000000..9e379f6 --- /dev/null +++ b/plugins/summernote/plugin/databasic/summernote-ext-databasic.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(window.jQuery)}(function(a){var b=a.summernote.ui,c=a.summernote.dom,d=function(d){var e=this,f=d.options,g=f.langInfo;e.icon='<i class="fa fa-object-group"/>',d.memo("button.databasic",function(){return b.button({contents:e.icon,tooltip:g.databasic.insert,click:d.createInvokeHandler("databasic.showDialog")}).render()}),d.memo("button.databasicDialog",function(){return b.button({contents:e.icon,tooltip:g.databasic.edit,click:d.createInvokeHandler("databasic.showDialog")}).render()}),d.memo("button.databasicSize100",function(){return b.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:g.image.resizeFull,click:d.createInvokeHandler("editor.resize","1")}).render()}),d.memo("button.databasicSize50",function(){return b.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:g.image.resizeHalf,click:d.createInvokeHandler("editor.resize","0.5")}).render()}),d.memo("button.databasicSize25",function(){return b.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:g.image.resizeQuarter,click:d.createInvokeHandler("editor.resize","0.25")}).render()}),e.events={"summernote.init":function(b,c){a("data.ext-databasic",c.editable).each(function(){e.setContent(a(this))})},"summernote.keyup summernote.mouseup summernote.change summernote.scroll":function(){e.update()},"summernote.dialog.shown":function(){e.hidePopover()}},e.initialize=function(){var c=f.dialogsInBody?a(document.body):d.layoutInfo.editor,h='<div class="form-group row-fluid"><label>'+g.databasic.testLabel+'</label><input class="ext-databasic-test form-control" type="text" /></div>',i='<button href="#" class="btn btn-primary ext-databasic-save">'+g.databasic.insert+"</button>";e.$dialog=b.dialog({title:g.databasic.name,fade:f.dialogsFade,body:h,footer:i}).render().appendTo(c),e.$popover=b.popover({className:"ext-databasic-popover"}).render().appendTo("body");var j=e.$popover.find(".popover-content");d.invoke("buttons.build",j,f.popover.databasic)},e.destroy=function(){e.$popover.remove(),e.$popover=null,e.$dialog.remove(),e.$dialog=null},e.update=function(){if(!d.invoke("editor.hasFocus"))return void e.hidePopover();var b=d.invoke("editor.createRange"),f=!1;if(b.isOnData()){var g=a(b.sc).closest("data.ext-databasic");if(g.length){var h=c.posFromPlaceholder(g[0]);e.$popover.css({display:"block",left:h.left,top:h.top}),d.invoke("editor.saveTarget",g[0]),f=!0}}f||e.hidePopover()},e.hidePopover=function(){e.$popover.hide()},e.getInfo=function(){var b=d.invoke("editor.createRange");if(b.isOnData()){var c=a(b.sc).closest("data.ext-databasic");if(c.length)return{node:c,test:c.attr("data-test")}}return{}},e.setContent=function(a){a.html('<p contenteditable="false">'+e.icon+" "+g.databasic.name+": "+a.attr("data-test")+"</p>")},e.updateNode=function(a){e.setContent(a.node.attr("data-test",a.test))},e.createNode=function(b){var c=a('<data class="ext-databasic"></data>');return c&&(b.node=c,d.invoke("editor.insertNode",c[0])),c},e.showDialog=function(){var c=e.getInfo(),f=!c.node;d.invoke("editor.saveRange"),e.openDialog(c).then(function(g){b.hideDialog(e.$dialog),d.invoke("editor.restoreRange"),f&&e.createNode(c),a.extend(c,g),e.updateNode(c)}).fail(function(){d.invoke("editor.restoreRange")})},e.openDialog=function(c){return a.Deferred(function(a){var f=e.$dialog.find(".ext-databasic-test"),h=e.$dialog.find(".ext-databasic-save"),i=function(a){13===a.keyCode&&h.trigger("click")};b.onDialogShown(e.$dialog,function(){d.triggerEvent("dialog.shown"),f.val(c.test).on("input",function(){b.toggleBtn(h,f.val())}).trigger("focus").on("keyup",i),h.text(c.node?g.databasic.edit:g.databasic.insert).click(function(b){b.preventDefault(),a.resolve({test:f.val()})}),b.toggleBtn(h,f.val())}),b.onDialogHidden(e.$dialog,function(){f.off("input keyup"),h.off("click"),"pending"===a.state()&&a.reject()}),b.showDialog(e.$dialog)})}};a.extend(!0,a.summernote,{plugins:{databasic:d},options:{popover:{databasic:[["databasic",["databasicDialog","databasicSize100","databasicSize50","databasicSize25"]]]}},lang:{"en-US":{databasic:{name:"Basic Data Container",insert:"insert basic data container",edit:"edit basic data container",testLabel:"test input"}}}})}); \ No newline at end of file diff --git a/plugins/summernote/plugin/hello/summernote-ext-hello.js b/plugins/summernote/plugin/hello/summernote-ext-hello.js new file mode 100644 index 0000000..7c6434a --- /dev/null +++ b/plugins/summernote/plugin/hello/summernote-ext-hello.js @@ -0,0 +1,82 @@ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function ($) { + + // Extends plugins for adding hello. + // - plugin is external module for customizing. + $.extend($.summernote.plugins, { + /** + * @param {Object} context - context object has status of editor. + */ + 'hello': function (context) { + var self = this; + + // ui has renders to build ui elements. + // - you can create a button with `ui.button` + var ui = $.summernote.ui; + + // add hello button + context.memo('button.hello', function () { + // create button + var button = ui.button({ + contents: '<i class="fa fa-child"/> Hello', + tooltip: 'hello', + click: function () { + self.$panel.show(); + self.$panel.hide(500); + // invoke insertText method with 'hello' on editor module. + context.invoke('editor.insertText', 'hello'); + } + }); + + // create jQuery object from button instance. + var $hello = button.render(); + return $hello; + }); + + // This events will be attached when editor is initialized. + this.events = { + // This will be called after modules are initialized. + 'summernote.init': function (we, e) { + console.log('summernote initialized', we, e); + }, + // This will be called when user releases a key on editable. + 'summernote.keyup': function (we, e) { + console.log('summernote keyup', we, e); + } + }; + + // This method will be called when editor is initialized by $('..').summernote(); + // You can create elements for plugin + this.initialize = function () { + this.$panel = $('<div class="hello-panel"/>').css({ + position: 'absolute', + width: 100, + height: 100, + left: '50%', + top: '50%', + background: 'red' + }).hide(); + + this.$panel.appendTo('body'); + }; + + // This methods will be called when editor is destroyed by $('..').summernote('destroy'); + // You should remove elements on `initialize`. + this.destroy = function () { + this.$panel.remove(); + this.$panel = null; + }; + } + }); +})); diff --git a/plugins/summernote/plugin/hello/summernote-ext-hello.min.js b/plugins/summernote/plugin/hello/summernote-ext-hello.min.js new file mode 100644 index 0000000..aa611b6 --- /dev/null +++ b/plugins/summernote/plugin/hello/summernote-ext-hello.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(window.jQuery)}(function(a){a.extend(a.summernote.plugins,{hello:function(b){var c=this,d=a.summernote.ui;b.memo("button.hello",function(){var a=d.button({contents:'<i class="fa fa-child"/> Hello',tooltip:"hello",click:function(){c.$panel.show(),c.$panel.hide(500),b.invoke("editor.insertText","hello")}}),e=a.render();return e}),this.events={"summernote.init":function(a,b){console.log("summernote initialized",a,b)},"summernote.keyup":function(a,b){console.log("summernote keyup",a,b)}},this.initialize=function(){this.$panel=a('<div class="hello-panel"/>').css({position:"absolute",width:100,height:100,left:"50%",top:"50%",background:"red"}).hide(),this.$panel.appendTo("body")},this.destroy=function(){this.$panel.remove(),this.$panel=null}}})}); \ No newline at end of file diff --git a/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js b/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js new file mode 100644 index 0000000..230e750 --- /dev/null +++ b/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.js @@ -0,0 +1,315 @@ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function ($) { + $.extend($.summernote.plugins, { + 'specialchars': function (context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + var KEY = { + UP: 38, + DOWN: 40, + LEFT: 37, + RIGHT: 39, + ENTER: 13 + }; + var COLUMN_LENGTH = 15; + var COLUMN_WIDTH = 35; + + var currentColumn, currentRow, totalColumn, totalRow = 0; + + // special characters data set + var specialCharDataSet = [ + '&quot;', '&amp;', '&lt;', '&gt;', '&iexcl;', '&cent;', + '&pound;', '&curren;', '&yen;', '&brvbar;', '&sect;', + '&uml;', '&copy;', '&ordf;', '&laquo;', '&not;', + '&reg;', '&macr;', '&deg;', '&plusmn;', '&sup2;', + '&sup3;', '&acute;', '&micro;', '&para;', '&middot;', + '&cedil;', '&sup1;', '&ordm;', '&raquo;', '&frac14;', + '&frac12;', '&frac34;', '&iquest;', '&times;', '&divide;', + '&fnof;', '&circ;', '&tilde;', '&ndash;', '&mdash;', + '&lsquo;', '&rsquo;', '&sbquo;', '&ldquo;', '&rdquo;', + '&bdquo;', '&dagger;', '&Dagger;', '&bull;', '&hellip;', + '&permil;', '&prime;', '&Prime;', '&lsaquo;', '&rsaquo;', + '&oline;', '&frasl;', '&euro;', '&image;', '&weierp;', + '&real;', '&trade;', '&alefsym;', '&larr;', '&uarr;', + '&rarr;', '&darr;', '&harr;', '&crarr;', '&lArr;', + '&uArr;', '&rArr;', '&dArr;', '&hArr;', '&forall;', + '&part;', '&exist;', '&empty;', '&nabla;', '&isin;', + '&notin;', '&ni;', '&prod;', '&sum;', '&minus;', + '&lowast;', '&radic;', '&prop;', '&infin;', '&ang;', + '&and;', '&or;', '&cap;', '&cup;', '&int;', + '&there4;', '&sim;', '&cong;', '&asymp;', '&ne;', + '&equiv;', '&le;', '&ge;', '&sub;', '&sup;', + '&nsub;', '&sube;', '&supe;', '&oplus;', '&otimes;', + '&perp;', '&sdot;', '&lceil;', '&rceil;', '&lfloor;', + '&rfloor;', '&loz;', '&spades;', '&clubs;', '&hearts;', + '&diams;' + ]; + + context.memo('button.specialCharacter', function () { + return ui.button({ + contents: '<i class="fa fa-font fa-flip-vertical">', + tooltip: lang.specialChar.specialChar, + click: function () { + self.show(); + } + }).render(); + }); + + /** + * Make Special Characters Table + * + * @member plugin.specialChar + * @private + * @return {jQuery} + */ + this.makeSpecialCharSetTable = function () { + var $table = $('<table/>'); + $.each(specialCharDataSet, function (idx, text) { + var $td = $('<td/>').addClass('note-specialchar-node'); + var $tr = (idx % COLUMN_LENGTH === 0) ? $('<tr/>') : $table.find('tr').last(); + + var $button = ui.button({ + callback: function ($node) { + $node.html(text); + $node.attr('title', text); + $node.attr('data-value', encodeURIComponent(text)); + $node.css({ + width: COLUMN_WIDTH, + 'margin-right': '2px', + 'margin-bottom': '2px' + }); + } + }).render(); + + $td.append($button); + + $tr.append($td); + if (idx % COLUMN_LENGTH === 0) { + $table.append($tr); + } + }); + + totalRow = $table.find('tr').length; + totalColumn = COLUMN_LENGTH; + + return $table; + }; + + this.initialize = function () { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var body = '<div class="form-group row-fluid">' + this.makeSpecialCharSetTable()[0].outerHTML + '</div>'; + + this.$dialog = ui.dialog({ + title: lang.specialChar.select, + body: body + }).render().appendTo($container); + }; + + this.show = function () { + var text = context.invoke('editor.getSelectedText'); + context.invoke('editor.saveRange'); + this.showSpecialCharDialog(text).then(function (selectChar) { + context.invoke('editor.restoreRange'); + + // build node + var $node = $('<span></span>').html(selectChar)[0]; + + if ($node) { + // insert video node + context.invoke('editor.insertNode', $node); + } + }).fail(function () { + context.invoke('editor.restoreRange'); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showSpecialCharDialog = function (text) { + return $.Deferred(function (deferred) { + var $specialCharDialog = self.$dialog; + var $specialCharNode = $specialCharDialog.find('.note-specialchar-node'); + var $selectedNode = null; + var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT]; + var ENTER_KEY = KEY.ENTER; + + function addActiveClass($target) { + if (!$target) { + return; + } + $target.find('button').addClass('active'); + $selectedNode = $target; + } + + function removeActiveClass($target) { + $target.find('button').removeClass('active'); + $selectedNode = null; + } + + // find next node + function findNextNode(row, column) { + var findNode = null; + $.each($specialCharNode, function (idx, $node) { + var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH); + var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH; + if (findRow === row && findColumn === column) { + findNode = $node; + return false; + } + }); + return $(findNode); + } + + function arrowKeyHandler(keyCode) { + // left, right, up, down key + var $nextNode; + var lastRowColumnLength = $specialCharNode.length % totalColumn; + + if (KEY.LEFT === keyCode) { + + if (currentColumn > 1) { + currentColumn = currentColumn - 1; + } else if (currentRow === 1 && currentColumn === 1) { + currentColumn = lastRowColumnLength; + currentRow = totalRow; + } else { + currentColumn = totalColumn; + currentRow = currentRow - 1; + } + + } else if (KEY.RIGHT === keyCode) { + + if (currentRow === totalRow && lastRowColumnLength === currentColumn) { + currentColumn = 1; + currentRow = 1; + } else if (currentColumn < totalColumn) { + currentColumn = currentColumn + 1; + } else { + currentColumn = 1; + currentRow = currentRow + 1; + } + + } else if (KEY.UP === keyCode) { + if (currentRow === 1 && lastRowColumnLength < currentColumn) { + currentRow = totalRow - 1; + } else { + currentRow = currentRow - 1; + } + } else if (KEY.DOWN === keyCode) { + currentRow = currentRow + 1; + } + + if (currentRow === totalRow && currentColumn > lastRowColumnLength) { + currentRow = 1; + } else if (currentRow > totalRow) { + currentRow = 1; + } else if (currentRow < 1) { + currentRow = totalRow; + } + + $nextNode = findNextNode(currentRow, currentColumn); + + if ($nextNode) { + removeActiveClass($selectedNode); + addActiveClass($nextNode); + } + } + + function enterKeyHandler() { + if (!$selectedNode) { + return; + } + + deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value'))); + $specialCharDialog.modal('hide'); + } + + function keyDownEventHandler(event) { + event.preventDefault(); + var keyCode = event.keyCode; + if (keyCode === undefined || keyCode === null) { + return; + } + // check arrowKeys match + if (ARROW_KEYS.indexOf(keyCode) > -1) { + if ($selectedNode === null) { + addActiveClass($specialCharNode.eq(0)); + currentColumn = 1; + currentRow = 1; + return; + } + arrowKeyHandler(keyCode); + } else if (keyCode === ENTER_KEY) { + enterKeyHandler(); + } + return false; + } + + // remove class + removeActiveClass($specialCharNode); + + // find selected node + if (text) { + for (var i = 0; i < $specialCharNode.length; i++) { + var $checkNode = $($specialCharNode[i]); + if ($checkNode.text() === text) { + addActiveClass($checkNode); + currentRow = Math.ceil((i + 1) / COLUMN_LENGTH); + currentColumn = (i + 1) % COLUMN_LENGTH; + } + } + } + + ui.onDialogShown(self.$dialog, function () { + + $(document).on('keydown', keyDownEventHandler); + + self.$dialog.find('button').tooltip(); + + $specialCharNode.on('click', function (event) { + event.preventDefault(); + deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value'))); + ui.hideDialog(self.$dialog); + }); + + }); + + ui.onDialogHidden(self.$dialog, function () { + $specialCharNode.off('click'); + + self.$dialog.find('button').tooltip('destroy'); + + $(document).off('keydown', keyDownEventHandler); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + } + }); +})); diff --git a/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.min.js b/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.min.js new file mode 100644 index 0000000..c0ec39a --- /dev/null +++ b/plugins/summernote/plugin/specialchars/summernote-ext-specialchars.min.js @@ -0,0 +1,2 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(window.jQuery)}(function(a){a.extend(a.summernote.plugins,{specialchars:function(b){var c,d,e,f=this,g=a.summernote.ui,h=b.layoutInfo.editor,i=b.options,j=i.langInfo,k={UP:38,DOWN:40,LEFT:37,RIGHT:39,ENTER:13},l=15,m=35,n=0,o=["&quot;","&amp;","&lt;","&gt;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;","&uml;","&copy;","&ordf;","&laquo;","&not;","&reg;","&macr;","&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;","&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;","&times;","&divide;","&fnof;","&circ;","&tilde;","&ndash;","&mdash;","&lsquo;","&rsquo;","&sbquo;","&ldquo;","&rdquo;","&bdquo;","&dagger;","&Dagger;","&bull;","&hellip;","&permil;","&prime;","&Prime;","&lsaquo;","&rsaquo;","&oline;","&frasl;","&euro;","&image;","&weierp;","&real;","&trade;","&alefsym;","&larr;","&uarr;","&rarr;","&darr;","&harr;","&crarr;","&lArr;","&uArr;","&rArr;","&dArr;","&hArr;","&forall;","&part;","&exist;","&empty;","&nabla;","&isin;","&notin;","&ni;","&prod;","&sum;","&minus;","&lowast;","&radic;","&prop;","&infin;","&ang;","&and;","&or;","&cap;","&cup;","&int;","&there4;","&sim;","&cong;","&asymp;","&ne;","&equiv;","&le;","&ge;","&sub;","&sup;","&nsub;","&sube;","&supe;","&oplus;","&otimes;","&perp;","&sdot;","&lceil;","&rceil;","&lfloor;","&rfloor;","&loz;","&spades;","&clubs;","&hearts;","&diams;"];b.memo("button.specialCharacter",function(){return g.button({contents:'<i class="fa fa-font fa-flip-vertical">',tooltip:j.specialChar.specialChar,click:function(){f.show()}}).render()}),this.makeSpecialCharSetTable=function(){var b=a("<table/>");return a.each(o,function(c,d){var e=a("<td/>").addClass("note-specialchar-node"),f=c%l===0?a("<tr/>"):b.find("tr").last(),h=g.button({callback:function(a){a.html(d),a.attr("title",d),a.attr("data-value",encodeURIComponent(d)),a.css({width:m,"margin-right":"2px","margin-bottom":"2px"})}}).render();e.append(h),f.append(e),c%l===0&&b.append(f)}),n=b.find("tr").length,e=l,b},this.initialize=function(){var b=i.dialogsInBody?a(document.body):h,c='<div class="form-group row-fluid">'+this.makeSpecialCharSetTable()[0].outerHTML+"</div>";this.$dialog=g.dialog({title:j.specialChar.select,body:c}).render().appendTo(b)},this.show=function(){var c=b.invoke("editor.getSelectedText");b.invoke("editor.saveRange"),this.showSpecialCharDialog(c).then(function(c){b.invoke("editor.restoreRange");var d=a("<span></span>").html(c)[0];d&&b.invoke("editor.insertNode",d)}).fail(function(){b.invoke("editor.restoreRange")})},this.showSpecialCharDialog=function(b){return a.Deferred(function(h){function i(a){a&&(a.find("button").addClass("active"),t=a)}function j(a){a.find("button").removeClass("active"),t=null}function m(b,c){var d=null;return a.each(s,function(a,e){var f=Math.ceil((a+1)/l),g=(a+1)%l===0?l:(a+1)%l;return f===b&&g===c?(d=e,!1):void 0}),a(d)}function o(a){var b,f=s.length%e;k.LEFT===a?c>1?c-=1:1===d&&1===c?(c=f,d=n):(c=e,d-=1):k.RIGHT===a?d===n&&f===c?(c=1,d=1):e>c?c+=1:(c=1,d+=1):k.UP===a?1===d&&c>f?d=n-1:d-=1:k.DOWN===a&&(d+=1),d===n&&c>f?d=1:d>n?d=1:1>d&&(d=n),b=m(d,c),b&&(j(t),i(b))}function p(){t&&(h.resolve(decodeURIComponent(t.find("button").attr("data-value"))),r.modal("hide"))}function q(a){a.preventDefault();var b=a.keyCode;if(void 0!==b&&null!==b){if(u.indexOf(b)>-1){if(null===t)return i(s.eq(0)),c=1,void(d=1);o(b)}else b===v&&p();return!1}}var r=f.$dialog,s=r.find(".note-specialchar-node"),t=null,u=[k.UP,k.DOWN,k.LEFT,k.RIGHT],v=k.ENTER;if(j(s),b)for(var w=0;w<s.length;w++){var x=a(s[w]);x.text()===b&&(i(x),d=Math.ceil((w+1)/l),c=(w+1)%l)}g.onDialogShown(f.$dialog,function(){a(document).on("keydown",q),f.$dialog.find("button").tooltip(),s.on("click",function(b){b.preventDefault(),h.resolve(decodeURIComponent(a(b.currentTarget).find("button").attr("data-value"))),g.hideDialog(f.$dialog)})}),g.onDialogHidden(f.$dialog,function(){s.off("click"),f.$dialog.find("button").tooltip("destroy"),a(document).off("keydown",q),"pending"===h.state()&&h.reject()}),g.showDialog(f.$dialog)})}}})}); \ No newline at end of file diff --git a/plugins/summernote/summernote.css b/plugins/summernote/summernote.css new file mode 100644 index 0000000..7b23e34 --- /dev/null +++ b/plugins/summernote/summernote.css @@ -0,0 +1 @@ +@font-face{font-family:"summernote";font-style:normal;font-weight:normal;src:url("font/summernote.eot?ad8d7e2d177d2473aecd9b35d16211fb");src:url("font/summernote.eot?#iefix") format("embedded-opentype"),url("font/summernote.woff?ad8d7e2d177d2473aecd9b35d16211fb") format("woff"),url("font/summernote.ttf?ad8d7e2d177d2473aecd9b35d16211fb") format("truetype")}[class^="note-icon-"]:before,[class*=" note-icon-"]:before{display:inline-block;font:normal normal normal 14px summernote;font-size:inherit;-webkit-font-smoothing:antialiased;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;speak:none;-moz-osx-font-smoothing:grayscale}.note-icon-align-center:before{content:"\f101"}.note-icon-align-indent:before{content:"\f102"}.note-icon-align-justify:before{content:"\f103"}.note-icon-align-left:before{content:"\f104"}.note-icon-align-outdent:before{content:"\f105"}.note-icon-align-right:before{content:"\f106"}.note-icon-align:before{content:"\f107"}.note-icon-arrows-alt:before{content:"\f108"}.note-icon-bold:before{content:"\f109"}.note-icon-caret:before{content:"\f10a"}.note-icon-chain-broken:before{content:"\f10b"}.note-icon-circle:before{content:"\f10c"}.note-icon-close:before{content:"\f10d"}.note-icon-code:before{content:"\f10e"}.note-icon-eraser:before{content:"\f10f"}.note-icon-font:before{content:"\f110"}.note-icon-frame:before{content:"\f111"}.note-icon-italic:before{content:"\f112"}.note-icon-link:before{content:"\f113"}.note-icon-magic:before{content:"\f114"}.note-icon-menu-check:before{content:"\f115"}.note-icon-minus:before{content:"\f116"}.note-icon-orderedlist:before{content:"\f117"}.note-icon-pencil:before{content:"\f118"}.note-icon-picture:before{content:"\f119"}.note-icon-question:before{content:"\f11a"}.note-icon-redo:before{content:"\f11b"}.note-icon-special-character:before{content:"\f11c"}.note-icon-square:before{content:"\f11d"}.note-icon-strikethrough:before{content:"\f11e"}.note-icon-subscript:before{content:"\f11f"}.note-icon-summernote:before{content:"\f120"}.note-icon-superscript:before{content:"\f121"}.note-icon-table:before{content:"\f122"}.note-icon-text-height:before{content:"\f123"}.note-icon-trash:before{content:"\f124"}.note-icon-underline:before{content:"\f125"}.note-icon-undo:before{content:"\f126"}.note-icon-unorderedlist:before{content:"\f127"}.note-icon-video:before{content:"\f128"}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;z-index:100;display:none;color:#87cefa;background-color:white;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;font-size:28px;font-weight:bold;text-align:center;vertical-align:middle}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:0}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor.note-frame{border:1px solid #a9a9a9}.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;color:#000;background-color:#fff}.note-editor.note-frame .note-editing-area .note-editable[contenteditable="false"]{background-color:#e5e5e5}.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;margin-bottom:0;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;resize:none}.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important}.note-editor.note-frame.fullscreen .note-editable{background-color:white}.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-statusbar{background-color:#f5f5f5;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.note-editor.note-frame .note-statusbar .note-resizebar{width:100%;height:8px;padding-top:1px;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #a9a9a9}.note-editor.note-frame .note-placeholder{padding:10px}.note-popover.popover{max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-popover .popover-content,.panel-heading.note-toolbar{padding:0 0 5px 5px;margin:0}.note-popover .popover-content>.btn-group,.panel-heading.note-toolbar>.btn-group{margin-top:5px;margin-right:5px;margin-left:0}.note-popover .popover-content .btn-group .note-table,.panel-heading.note-toolbar .btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.panel-heading.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC') repeat}.note-popover .popover-content .note-style h1,.panel-heading.note-toolbar .note-style h1,.note-popover .popover-content .note-style h2,.panel-heading.note-toolbar .note-style h2,.note-popover .popover-content .note-style h3,.panel-heading.note-toolbar .note-style h3,.note-popover .popover-content .note-style h4,.panel-heading.note-toolbar .note-style h4,.note-popover .popover-content .note-style h5,.panel-heading.note-toolbar .note-style h5,.note-popover .popover-content .note-style h6,.panel-heading.note-toolbar .note-style h6,.note-popover .popover-content .note-style blockquote,.panel-heading.note-toolbar .note-style blockquote{margin:0}.note-popover .popover-content .note-color .dropdown-toggle,.panel-heading.note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .dropdown-menu,.panel-heading.note-toolbar .note-color .dropdown-menu{min-width:340px}.note-popover .popover-content .note-color .dropdown-menu .btn-group,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group{margin:0}.note-popover .popover-content .note-color .dropdown-menu .btn-group:first-child,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group:first-child{margin:0 5px}.note-popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title{margin:2px 7px;font-size:12px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset{width:100%;padding:0 3px;margin:3px;font-size:11px;cursor:pointer;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.note-popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row{height:20px}.note-popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover,.panel-heading.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover{background:#eee}.note-popover .popover-content .note-para .dropdown-menu,.panel-heading.note-toolbar .note-para .dropdown-menu{min-width:216px;padding:5px}.note-popover .popover-content .note-para .dropdown-menu>div:first-child,.panel-heading.note-toolbar .note-para .dropdown-menu>div:first-child{margin-right:5px}.note-popover .popover-content .dropdown-menu,.panel-heading.note-toolbar .dropdown-menu{min-width:90px}.note-popover .popover-content .dropdown-menu.right,.panel-heading.note-toolbar .dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .dropdown-menu.right::before,.panel-heading.note-toolbar .dropdown-menu.right::before{right:9px;left:auto!important}.note-popover .popover-content .dropdown-menu.right::after,.panel-heading.note-toolbar .dropdown-menu.right::after{right:10px;left:auto!important}.note-popover .popover-content .dropdown-menu.note-check li a i,.panel-heading.note-toolbar .dropdown-menu.note-check li a i{color:deepskyblue;visibility:hidden}.note-popover .popover-content .dropdown-menu.note-check li a.checked i,.panel-heading.note-toolbar .dropdown-menu.note-check li a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.panel-heading.note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.panel-heading.note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.panel-heading.note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:1px solid #fff}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.panel-heading.note-toolbar .note-color-palette div .note-color-btn:hover{border:1px solid #000}.note-dialog>div{display:none}.note-dialog .form-group{margin-right:0;margin-left:0}.note-dialog .note-modal-form{margin:0}.note-dialog .note-image-dialog .note-dropzone{min-height:100px;margin-bottom:10px;font-size:30px;line-height:4;color:lightgray;text-align:center;border:4px dashed lightgray}@-moz-document url-prefix(){.note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid black}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:black;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid black}.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;background-color:white;border:1px solid black}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:0;border-bottom:0}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:0;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:0;border-right:0}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:0;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;font-size:12px;color:white;background-color:black;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{max-height:150px;padding:3px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:white;text-decoration:none;white-space:nowrap;cursor:pointer;background-color:#428bca;outline:0} \ No newline at end of file diff --git a/plugins/summernote/summernote.js b/plugins/summernote/summernote.js new file mode 100644 index 0000000..bfa243c --- /dev/null +++ b/plugins/summernote/summernote.js @@ -0,0 +1,7016 @@ +/** + * Super simple wysiwyg editor v0.8.2 + * http://summernote.org/ + * + * summernote.js + * Copyright 2013-2016 Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license./ + * + * Date: 2016-07-18T18:01Z + */ +(function (factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof module === 'object' && module.exports) { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + /** + * @class core.func + * + * func utils (for high-order func's arg) + * + * @singleton + * @alternateClassName func + */ + var func = (function () { + var eq = function (itemA) { + return function (itemB) { + return itemA === itemB; + }; + }; + + var eq2 = function (itemA, itemB) { + return itemA === itemB; + }; + + var peq2 = function (propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; + }; + + var ok = function () { + return true; + }; + + var fail = function () { + return false; + }; + + var not = function (f) { + return function () { + return !f.apply(f, arguments); + }; + }; + + var and = function (fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; + }; + + var self = function (a) { + return a; + }; + + var invoke = function (obj, method) { + return function () { + return obj[method].apply(obj, arguments); + }; + }; + + var idCounter = 0; + + /** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + var uniqueId = function (prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + /** + * returns bnd (bounds) from rect + * + * - IE Compatibility Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + var rect2bnd = function (rect) { + var $document = $(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + }; + + /** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + var invertObject = function (obj) { + var inverted = {}; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + inverted[obj[key]] = key; + } + } + return inverted; + }; + + /** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + var namespaceToCamel = function (namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function (name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); + }; + + return { + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: self, + not: not, + and: and, + invoke: invoke, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel + }; + })(); + + /** + * @class core.list + * + * list utils + * + * @singleton + * @alternateClassName list + */ + var list = (function () { + /** + * returns the first item of an array. + * + * @param {Array} array + */ + var head = function (array) { + return array[0]; + }; + + /** + * returns the last item of an array. + * + * @param {Array} array + */ + var last = function (array) { + return array[array.length - 1]; + }; + + /** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + var initial = function (array) { + return array.slice(0, array.length - 1); + }; + + /** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + var tail = function (array) { + return array.slice(1); + }; + + /** + * returns item of array + */ + var find = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + var item = array[idx]; + if (pred(item)) { + return item; + } + } + }; + + /** + * returns true if all of the values in the array pass the predicate truth test. + */ + var all = function (array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!pred(array[idx])) { + return false; + } + } + return true; + }; + + /** + * returns index of item + */ + var indexOf = function (array, item) { + return $.inArray(item, array); + }; + + /** + * returns true if the value is present in the list. + */ + var contains = function (array, item) { + return indexOf(array, item) !== -1; + }; + + /** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + var sum = function (array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); + }; + + /** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + var from = function (collection) { + var result = [], idx = -1, length = collection.length; + while (++idx < length) { + result[idx] = collection[idx]; + } + return result; + }; + + /** + * returns whether list is empty or not + */ + var isEmpty = function (array) { + return !array || !array.length; + }; + + /** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + var clusterBy = function (array, fn) { + if (!array.length) { return []; } + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = last(memo); + if (fn(last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + return memo; + }, [[head(array)]]); + }; + + /** + * returns a copy of the array with all false values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + var compact = function (array) { + var aResult = []; + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (array[idx]) { aResult.push(array[idx]); } + } + return aResult; + }; + + /** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + var unique = function (array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; + }; + + /** + * returns next item. + * @param {Array} array + */ + var next = function (array, item) { + var idx = indexOf(array, item); + if (idx === -1) { return null; } + + return array[idx + 1]; + }; + + /** + * returns prev item. + * @param {Array} array + */ + var prev = function (array, item) { + var idx = indexOf(array, item); + if (idx === -1) { return null; } + + return array[idx - 1]; + }; + + return { head: head, last: last, initial: initial, tail: tail, + prev: prev, next: next, find: find, contains: contains, + all: all, sum: sum, from: from, isEmpty: isEmpty, + clusterBy: clusterBy, compact: compact, unique: unique }; + })(); + + var isSupportAmd = typeof define === 'function' && define.amd; + + /** + * returns whether font is installed or not. + * + * @param {String} fontName + * @return {Boolean} + */ + var isFontInstalled = function (fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var $tester = $('<div>').css({ + position: 'absolute', + left: '-9999px', + top: '-9999px', + fontSize: '200px' + }).text('mmmmmmmmmwwwwwww').appendTo(document.body); + + var originalWidth = $tester.css('fontFamily', testFontName).width(); + var width = $tester.css('fontFamily', fontName + ',' + testFontName).width(); + + $tester.remove(); + + return originalWidth !== width; + }; + + var userAgent = navigator.userAgent; + var isMSIE = /MSIE|Trident/i.test(userAgent); + var browserVersion; + if (isMSIE) { + var matches = /MSIE (\d+[.]\d+)/.exec(userAgent); + if (matches) { + browserVersion = parseFloat(matches[1]); + } + matches = /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(userAgent); + if (matches) { + browserVersion = parseFloat(matches[1]); + } + } + + var isEdge = /Edge\/\d+/.test(userAgent); + + var hasCodeMirror = !!window.CodeMirror; + if (!hasCodeMirror && isSupportAmd && typeof require !== 'undefined') { + if (typeof require.resolve !== 'undefined') { + try { + // If CodeMirror can't be resolved, `require.resolve` will throw an + // exception and `hasCodeMirror` won't be set to `true`. + require.resolve('codemirror'); + hasCodeMirror = true; + } catch (e) { + // Do nothing. + } + } else if (typeof eval('require').specified !== 'undefined') { + hasCodeMirror = eval('require').specified('codemirror'); + } + } + + /** + * @class core.agent + * + * Object which check platform and agent + * + * @singleton + * @alternateClassName agent + */ + var agent = { + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: isMSIE, + isEdge: isEdge, + isFF: !isEdge && /firefox/i.test(userAgent), + isPhantom: /PhantomJS/i.test(userAgent), + isWebkit: !isEdge && /webkit/i.test(userAgent), + isChrome: !isEdge && /chrome/i.test(userAgent), + isSafari: !isEdge && /safari/i.test(userAgent), + browserVersion: browserVersion, + jqueryVersion: parseFloat($.fn.jquery), + isSupportAmd: isSupportAmd, + hasCodeMirror: hasCodeMirror, + isFontInstalled: isFontInstalled, + isW3CRangeSupport: !!document.createRange + }; + + + var NBSP_CHAR = String.fromCharCode(160); + var ZERO_WIDTH_NBSP_CHAR = '\ufeff'; + + /** + * @class core.dom + * + * Dom functions + * + * @singleton + * @alternateClassName dom + */ + var dom = (function () { + /** + * @method isEditable + * + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEditable = function (node) { + return node && $(node).hasClass('note-editable'); + }; + + /** + * @method isControlSizing + * + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isControlSizing = function (node) { + return node && $(node).hasClass('note-control-sizing'); + }; + + /** + * @method makePredByNodeName + * + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {Function} + */ + var makePredByNodeName = function (nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; + }; + + /** + * @method isText + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + var isText = function (node) { + return node && node.nodeType === 3; + }; + + /** + * @method isElement + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is element(1) + */ + var isElement = function (node) { + return node && node.nodeType === 1; + }; + + /** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + var isVoid = function (node) { + return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON/.test(node.nodeName.toUpperCase()); + }; + + var isPara = function (node) { + if (isEditable(node)) { + return false; + } + + // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isHeading = function (node) { + return node && /^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isPre = makePredByNodeName('PRE'); + + var isLi = makePredByNodeName('LI'); + + var isPurePara = function (node) { + return isPara(node) && !isLi(node); + }; + + var isTable = makePredByNodeName('TABLE'); + + var isData = makePredByNodeName('DATA'); + + var isInline = function (node) { + return !isBodyContainer(node) && + !isList(node) && + !isHr(node) && + !isPara(node) && + !isTable(node) && + !isBlockquote(node) && + !isData(node); + }; + + var isList = function (node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); + }; + + var isHr = makePredByNodeName('HR'); + + var isCell = function (node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); + }; + + var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + + var isBodyContainer = function (node) { + return isCell(node) || isBlockquote(node) || isEditable(node); + }; + + var isAnchor = makePredByNodeName('A'); + + var isParaInline = function (node) { + return isInline(node) && !!ancestor(node, isPara); + }; + + var isBodyInline = function (node) { + return isInline(node) && !ancestor(node, isPara); + }; + + var isBody = makePredByNodeName('BODY'); + + /** + * returns whether nodeB is closest sibling of nodeA + * + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + var isClosestSibling = function (nodeA, nodeB) { + return nodeA.nextSibling === nodeB || + nodeA.previousSibling === nodeB; + }; + + /** + * returns array of closest siblings with node + * + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + var withClosestSiblings = function (node, pred) { + pred = pred || func.ok; + + var siblings = []; + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + siblings.push(node); + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + return siblings; + }; + + /** + * blank HTML for cursor position + * - [workaround] old IE only works with &nbsp; + * - [workaround] IE11 and other browser works with bogus br + */ + var blankHTML = agent.isMSIE && agent.browserVersion < 11 ? '&nbsp;' : '<br>'; + + /** + * @method nodeLength + * + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + var nodeLength = function (node) { + if (isText(node)) { + return node.nodeValue.length; + } + + if (node) { + return node.childNodes.length; + } + + return 0; + + }; + + /** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + var isEmpty = function (node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex) <p><br></p>, <span><br></span> + return true; + } else if (list.all(node.childNodes, isText) && node.innerHTML === '') { + // ex) <p></p>, <span></span> + return true; + } + + return false; + }; + + /** + * padding blankHTML if node is empty (for cursor position) + */ + var paddingBlankHTML = function (node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } + }; + + /** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var ancestor = function (node, pred) { + while (node) { + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var singleChildAncestor = function (node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { break; } + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listAncestor = function (node, pred) { + pred = pred || func.fail; + + var ancestors = []; + ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; + }; + + /** + * find farthest ancestor predicate hit + */ + var lastAncestor = function (node, pred) { + var ancestors = listAncestor(node); + return list.last(ancestors.filter(pred)); + }; + + /** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + var commonAncestor = function (nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + for (var n = nodeB; n; n = n.parentNode) { + if ($.inArray(n, ancestors) > -1) { return n; } + } + return null; // difference document area + }; + + /** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listPrev = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.previousSibling; + } + return nodes; + }; + + /** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listNext = function (node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.nextSibling; + } + return nodes; + }; + + /** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listDescendant = function (node, pred) { + var descendants = []; + pred = pred || func.ok; + + // start DFS(depth first search) with node + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendants.push(current); + } + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendants; + }; + + /** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + var wrap = function (node, wrapperName) { + var parent = node.parentNode; + var wrapper = $('<' + wrapperName + '>')[0]; + + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + /** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + var insertAfter = function (node, preceding) { + var next = preceding.nextSibling, parent = preceding.parentNode; + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + return node; + }; + + /** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + var appendChildNodes = function (node, aChild) { + $.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; + }; + + /** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isLeftEdgePoint = function (point) { + return point.offset === 0; + }; + + /** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isRightEdgePoint = function (point) { + return point.offset === nodeLength(point.node); + }; + + /** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isEdgePoint = function (point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); + }; + + /** + * returns whether node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgeOf = function (node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== 0) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgeOf = function (node, ancestor) { + if (!ancestor) { + return false; + } + while (node && node !== ancestor) { + if (position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether point is left edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgePointOf = function (point, ancestor) { + return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor); + }; + + /** + * returns whether point is right edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgePointOf = function (point, ancestor) { + return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor); + }; + + /** + * returns offset from parent. + * + * @param {Node} node + */ + var position = function (node) { + var offset = 0; + while ((node = node.previousSibling)) { + offset += 1; + } + return offset; + }; + + var hasChildren = function (node) { + return !!(node && node.childNodes && node.childNodes.length); + }; + + /** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var prevPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var nextPoint = function (point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node) + 1; + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + var isSamePoint = function (pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; + }; + + /** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isVisiblePoint = function (point) { + if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; + }; + + /** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var prevPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = prevPoint(point); + } + + return null; + }; + + /** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var nextPointUntil = function (point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = nextPoint(point); + } + + return null; + }; + + /** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + var isCharPoint = function (point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && (ch !== ' ' && ch !== NBSP_CHAR); + }; + + /** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + var walkPoint = function (startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && + startPoint.node !== point.node && + endPoint.node !== point.node; + point = nextPoint(point, isSkipOffset); + } + }; + + /** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + var makeOffsetPath = function (ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return ancestors.map(position).reverse(); + }; + + /** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + var fromOffsetPath = function (ancestor, offsets) { + var current = ancestor; + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + return current; + }; + + /** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitNode = function (point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + + // edge case + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } + + // split #text + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + return clone; + } + }; + + /** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitTree = function (root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function (node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom.position(node) : nodeLength(parent) + }, options); + }); + }; + + /** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + var splitPoint = function (point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = list.last(ancestors) || point.node; + + var splitRoot, container; + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } + + // if splitRoot is exists, split with splitTree + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); + + // if container is point.node, find pivot with point.offset + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; + }; + + var create = function (nodeName) { + return document.createElement(nodeName); + }; + + var createText = function (text) { + return document.createTextNode(text); + }; + + /** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + var remove = function (node, isRemoveChild) { + if (!node || !node.parentNode) { return; } + if (node.removeNode) { return node.removeNode(isRemoveChild); } + + var parent = node.parentNode; + if (!isRemoveChild) { + var nodes = []; + var i, len; + for (i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (i = 0, len = nodes.length; i < len; i++) { + parent.insertBefore(nodes[i], node); + } + } + + parent.removeChild(node); + }; + + /** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + var removeWhile = function (node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } + }; + + /** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + var replace = function (node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, list.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + + return newNode; + }; + + var isTextarea = makePredByNodeName('TEXTAREA'); + + /** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + var value = function ($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + return val; + }; + + /** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + var html = function ($node, isNewlineOnBlock) { + var markup = value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && + !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + + return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : ''); + }); + markup = $.trim(markup); + } + + return markup; + }; + + var posFromPlaceholder = function (placeholder) { + var $placeholder = $(placeholder); + var pos = $placeholder.offset(); + var height = $placeholder.outerHeight(true); // include margin + + return { + left: pos.left, + top: pos.top + height + }; + }; + + var attachEvents = function ($node, events) { + Object.keys(events).forEach(function (key) { + $node.on(key, events[key]); + }); + }; + + var detachEvents = function ($node, events) { + Object.keys(events).forEach(function (key) { + $node.off(key, events[key]); + }); + }; + + return { + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + /** @property {String} blank */ + blank: blankHTML, + /** @property {String} emptyPara */ + emptyPara: '<p>' + blankHTML + '</p>', + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + isText: isText, + isElement: isElement, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isHeading: isHeading, + isInline: isInline, + isBlock: func.not(isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isPre: isPre, + isList: isList, + isTable: isTable, + isData: isData, + isCell: isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + isEmpty: isEmpty, + isEmptyAnchor: func.and(isAnchor, isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + isLeftEdgePointOf: isLeftEdgePointOf, + isRightEdgePointOf: isRightEdgePointOf, + prevPoint: prevPoint, + nextPoint: nextPoint, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + walkPoint: walkPoint, + ancestor: ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: replace, + html: html, + value: value, + posFromPlaceholder: posFromPlaceholder, + attachEvents: attachEvents, + detachEvents: detachEvents + }; + })(); + + /** + * @param {jQuery} $note + * @param {Object} options + * @return {Context} + */ + var Context = function ($note, options) { + var self = this; + + var ui = $.summernote.ui; + this.memos = {}; + this.modules = {}; + this.layoutInfo = {}; + this.options = options; + + /** + * create layout and initialize modules and other resources + */ + this.initialize = function () { + this.layoutInfo = ui.createLayout($note, options); + this._initialize(); + $note.hide(); + return this; + }; + + /** + * destroy modules and other resources and remove layout + */ + this.destroy = function () { + this._destroy(); + $note.removeData('summernote'); + ui.removeLayout($note, this.layoutInfo); + }; + + /** + * destory modules and other resources and initialize it again + */ + this.reset = function () { + var disabled = self.isDisabled(); + this.code(dom.emptyPara); + this._destroy(); + this._initialize(); + + if (disabled) { + self.disable(); + } + }; + + this._initialize = function () { + // add optional buttons + var buttons = $.extend({}, this.options.buttons); + Object.keys(buttons).forEach(function (key) { + self.memo('button.' + key, buttons[key]); + }); + + var modules = $.extend({}, this.options.modules, $.summernote.plugins || {}); + + // add and initialize modules + Object.keys(modules).forEach(function (key) { + self.module(key, modules[key], true); + }); + + Object.keys(this.modules).forEach(function (key) { + self.initializeModule(key); + }); + }; + + this._destroy = function () { + // destroy modules with reversed order + Object.keys(this.modules).reverse().forEach(function (key) { + self.removeModule(key); + }); + + Object.keys(this.memos).forEach(function (key) { + self.removeMemo(key); + }); + }; + + this.code = function (html) { + var isActivated = this.invoke('codeview.isActivated'); + + if (html === undefined) { + this.invoke('codeview.sync'); + return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + } else { + if (isActivated) { + this.layoutInfo.codable.val(html); + } else { + this.layoutInfo.editable.html(html); + } + $note.val(html); + this.triggerEvent('change', html); + } + }; + + this.isDisabled = function () { + return this.layoutInfo.editable.attr('contenteditable') === 'false'; + }; + + this.enable = function () { + this.layoutInfo.editable.attr('contenteditable', true); + this.invoke('toolbar.activate', true); + }; + + this.disable = function () { + // close codeview if codeview is opend + if (this.invoke('codeview.isActivated')) { + this.invoke('codeview.deactivate'); + } + this.layoutInfo.editable.attr('contenteditable', false); + this.invoke('toolbar.deactivate', true); + }; + + this.triggerEvent = function () { + var namespace = list.head(arguments); + var args = list.tail(list.from(arguments)); + + var callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')]; + if (callback) { + callback.apply($note[0], args); + } + $note.trigger('summernote.' + namespace, args); + }; + + this.initializeModule = function (key) { + var module = this.modules[key]; + module.shouldInitialize = module.shouldInitialize || func.ok; + if (!module.shouldInitialize()) { + return; + } + + // initialize module + if (module.initialize) { + module.initialize(); + } + + // attach events + if (module.events) { + dom.attachEvents($note, module.events); + } + }; + + this.module = function (key, ModuleClass, withoutIntialize) { + if (arguments.length === 1) { + return this.modules[key]; + } + + this.modules[key] = new ModuleClass(this); + + if (!withoutIntialize) { + this.initializeModule(key); + } + }; + + this.removeModule = function (key) { + var module = this.modules[key]; + if (module.shouldInitialize()) { + if (module.events) { + dom.detachEvents($note, module.events); + } + + if (module.destroy) { + module.destroy(); + } + } + + delete this.modules[key]; + }; + + this.memo = function (key, obj) { + if (arguments.length === 1) { + return this.memos[key]; + } + this.memos[key] = obj; + }; + + this.removeMemo = function (key) { + if (this.memos[key] && this.memos[key].destroy) { + this.memos[key].destroy(); + } + + delete this.memos[key]; + }; + + this.createInvokeHandler = function (namespace, value) { + return function (event) { + event.preventDefault(); + self.invoke(namespace, value || $(event.target).closest('[data-value]').data('value')); + }; + }; + + this.invoke = function () { + var namespace = list.head(arguments); + var args = list.tail(list.from(arguments)); + + var splits = namespace.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && list.head(splits); + var methodName = hasSeparator ? list.last(splits) : list.head(splits); + + var module = this.modules[moduleName || 'editor']; + if (!moduleName && this[methodName]) { + return this[methodName].apply(this, args); + } else if (module && module[methodName] && module.shouldInitialize()) { + return module[methodName].apply(module, args); + } + }; + + return this.initialize(); + }; + + $.fn.extend({ + /** + * Summernote API + * + * @param {Object|String} + * @return {this} + */ + summernote: function () { + var type = $.type(list.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + + var options = hasInitOptions ? list.head(arguments) : {}; + + options = $.extend({}, $.summernote.options, options); + options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]); + options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons); + + this.each(function (idx, note) { + var $note = $(note); + if (!$note.data('summernote')) { + var context = new Context($note, options); + $note.data('summernote', context); + $note.data('summernote').triggerEvent('init', context.layoutInfo); + } + }); + + var $note = this.first(); + if ($note.length) { + var context = $note.data('summernote'); + if (isExternalAPICalled) { + return context.invoke.apply(context, list.from(arguments)); + } else if (options.focus) { + context.invoke('editor.focus'); + } + } + + return this; + } + }); + + + var Renderer = function (markup, children, options, callback) { + this.render = function ($parent) { + var $node = $(markup); + + if (options && options.contents) { + $node.html(options.contents); + } + + if (options && options.className) { + $node.addClass(options.className); + } + + if (options && options.data) { + $.each(options.data, function (k, v) { + $node.attr('data-' + k, v); + }); + } + + if (options && options.click) { + $node.on('click', options.click); + } + + if (children) { + var $container = $node.find('.note-children-container'); + children.forEach(function (child) { + child.render($container.length ? $container : $node); + }); + } + + if (callback) { + callback($node, options); + } + + if (options && options.callback) { + options.callback($node); + } + + if ($parent) { + $parent.append($node); + } + + return $node; + }; + }; + + var renderer = { + create: function (markup, callback) { + return function () { + var children = $.isArray(arguments[0]) ? arguments[0] : []; + var options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0]; + if (options && options.children) { + children = options.children; + } + return new Renderer(markup, children, options, callback); + }; + } + }; + + var editor = renderer.create('<div class="note-editor note-frame panel panel-default"/>'); + var toolbar = renderer.create('<div class="note-toolbar panel-heading"/>'); + var editingArea = renderer.create('<div class="note-editing-area"/>'); + var codable = renderer.create('<textarea class="note-codable"/>'); + var editable = renderer.create('<div class="note-editable panel-body" contentEditable="true"/>'); + var statusbar = renderer.create([ + '<div class="note-statusbar">', + ' <div class="note-resizebar">', + ' <div class="note-icon-bar"/>', + ' <div class="note-icon-bar"/>', + ' <div class="note-icon-bar"/>', + ' </div>', + '</div>' + ].join('')); + + var airEditor = renderer.create('<div class="note-editor"/>'); + var airEditable = renderer.create('<div class="note-editable" contentEditable="true"/>'); + + var buttonGroup = renderer.create('<div class="note-btn-group btn-group">'); + var button = renderer.create('<button type="button" class="note-btn btn btn-default btn-sm" tabindex="-1">', function ($node, options) { + if (options && options.tooltip) { + $node.attr({ + title: options.tooltip + }).tooltip({ + container: 'body', + trigger: 'hover', + placement: 'bottom' + }); + } + }); + + var dropdown = renderer.create('<div class="dropdown-menu">', function ($node, options) { + var markup = $.isArray(options.items) ? options.items.map(function (item) { + var value = (typeof item === 'string') ? item : (item.value || ''); + var content = options.template ? options.template(item) : item; + return '<li><a href="#" data-value="' + value + '">' + content + '</a></li>'; + }).join('') : options.items; + + $node.html(markup); + }); + + var dropdownCheck = renderer.create('<div class="dropdown-menu note-check">', function ($node, options) { + var markup = $.isArray(options.items) ? options.items.map(function (item) { + var value = (typeof item === 'string') ? item : (item.value || ''); + var content = options.template ? options.template(item) : item; + return '<li><a href="#" data-value="' + value + '">' + icon(options.checkClassName) + ' ' + content + '</a></li>'; + }).join('') : options.items; + $node.html(markup); + }); + + var palette = renderer.create('<div class="note-color-palette"/>', function ($node, options) { + var contents = []; + for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) { + var eventName = options.eventName; + var colors = options.colors[row]; + var buttons = []; + for (var col = 0, colSize = colors.length; col < colSize; col++) { + var color = colors[col]; + buttons.push([ + '<button type="button" class="note-color-btn"', + 'style="background-color:', color, '" ', + 'data-event="', eventName, '" ', + 'data-value="', color, '" ', + 'title="', color, '" ', + 'data-toggle="button" tabindex="-1"></button>' + ].join('')); + } + contents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + $node.html(contents.join('')); + + $node.find('.note-color-btn').tooltip({ + container: 'body', + trigger: 'hover', + placement: 'bottom' + }); + }); + + var dialog = renderer.create('<div class="modal" aria-hidden="false" tabindex="-1"/>', function ($node, options) { + if (options.fade) { + $node.addClass('fade'); + } + $node.html([ + '<div class="modal-dialog">', + ' <div class="modal-content">', + (options.title ? + ' <div class="modal-header">' + + ' <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>' + + ' <h4 class="modal-title">' + options.title + '</h4>' + + ' </div>' : '' + ), + ' <div class="modal-body">' + options.body + '</div>', + (options.footer ? + ' <div class="modal-footer">' + options.footer + '</div>' : '' + ), + ' </div>', + '</div>' + ].join('')); + }); + + var popover = renderer.create([ + '<div class="note-popover popover in">', + ' <div class="arrow"/>', + ' <div class="popover-content note-children-container"/>', + '</div>' + ].join(''), function ($node, options) { + var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom'; + + $node.addClass(direction); + + if (options.hideArrow) { + $node.find('.arrow').hide(); + } + }); + + var icon = function (iconClassName, tagName) { + tagName = tagName || 'i'; + return '<' + tagName + ' class="' + iconClassName + '"/>'; + }; + + var ui = { + editor: editor, + toolbar: toolbar, + editingArea: editingArea, + codable: codable, + editable: editable, + statusbar: statusbar, + airEditor: airEditor, + airEditable: airEditable, + buttonGroup: buttonGroup, + button: button, + dropdown: dropdown, + dropdownCheck: dropdownCheck, + palette: palette, + dialog: dialog, + popover: popover, + icon: icon, + + toggleBtn: function ($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }, + + toggleBtnActive: function ($btn, isActive) { + $btn.toggleClass('active', isActive); + }, + + onDialogShown: function ($dialog, handler) { + $dialog.one('shown.bs.modal', handler); + }, + + onDialogHidden: function ($dialog, handler) { + $dialog.one('hidden.bs.modal', handler); + }, + + showDialog: function ($dialog) { + $dialog.modal('show'); + }, + + hideDialog: function ($dialog) { + $dialog.modal('hide'); + }, + + createLayout: function ($note, options) { + var $editor = (options.airMode ? ui.airEditor([ + ui.editingArea([ + ui.airEditable() + ]) + ]) : ui.editor([ + ui.toolbar(), + ui.editingArea([ + ui.codable(), + ui.editable() + ]), + ui.statusbar() + ])).render(); + + $editor.insertAfter($note); + + return { + note: $note, + editor: $editor, + toolbar: $editor.find('.note-toolbar'), + editingArea: $editor.find('.note-editing-area'), + editable: $editor.find('.note-editable'), + codable: $editor.find('.note-codable'), + statusbar: $editor.find('.note-statusbar') + }; + }, + + removeLayout: function ($note, layoutInfo) { + $note.html(layoutInfo.editable.html()); + layoutInfo.editor.remove(); + $note.show(); + } + }; + + $.summernote = $.summernote || { + lang: {} + }; + + $.extend($.summernote.lang, { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize Full', + resizeHalf: 'Resize Half', + resizeQuarter: 'Resize Quarter', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Float None', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window' + }, + table: { + table: 'Table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + normal: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Foreground Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Undo', + redo: 'Redo' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); + + + /** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + var key = (function () { + var keyMap = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'SPACE': 32, + + // Arrow + 'LEFT': 37, + 'UP': 38, + 'RIGHT': 39, + 'DOWN': 40, + + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'V': 86, + 'Y': 89, + 'Z': 90, + + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221 + }; + + return { + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function (keyCode) { + return list.contains([ + keyMap.BACKSPACE, + keyMap.TAB, + keyMap.ENTER, + keyMap.SPACE + ], keyCode); + }, + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function (keyCode) { + return list.contains([ + keyMap.LEFT, + keyMap.UP, + keyMap.RIGHT, + keyMap.DOWN + ], keyCode); + }, + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(keyMap), + code: keyMap + }; + })(); + + var range = (function () { + + /** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + var textRangeToPoint = function (textRange, isStart) { + var container = textRange.parentElement(), offset; + + var tester = document.body.createTextRange(), prevContainer; + var childNodes = list.from(container.childNodes); + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + tester.moveToElementText(childNodes[offset]); + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(), curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + /* jshint ignore:start */ + var dummy = curTextNode.nodeValue; // enforce IE to re-reference curTextNode, hack + /* jshint ignore:end */ + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && + textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; + }; + + /** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + var pointToTextRange = function (point) { + var textRangeInfo = function (container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = list.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += list.sum(list.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; + }; + + /** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + var WrappedRange = function (sc, so, ec, eo) { + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; + + // nativeRange: get nativeRange from sc, so, ec, eo + var nativeRange = function () { + if (agent.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(sc, so); + w3cRange.setEnd(ec, eo); + + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: sc, + offset: so + }); + + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: ec, + offset: eo + })); + + return textRange; + } + }; + + this.getPoints = function () { + return { + sc: sc, + so: so, + ec: ec, + eo: eo + }; + }; + + this.getStartPoint = function () { + return { + node: sc, + offset: so + }; + }; + + this.getEndPoint = function () { + return { + node: ec, + offset: eo + }; + }; + + /** + * select update visible range + */ + this.select = function () { + var nativeRng = nativeRange(); + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + }; + + /** + * Moves the scrollbar to start container(sc) of current range + * + * @return {WrappedRange} + */ + this.scrollIntoView = function (container) { + var height = $(container).height(); + if (container.scrollTop + height < this.sc.offsetTop) { + container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop); + } + + return this; + }; + + /** + * @return {WrappedRange} + */ + this.normalize = function () { + + /** + * @param {BoundaryPoint} point + * @param {Boolean} isLeftToRight + * @return {BoundaryPoint} + */ + var getVisiblePoint = function (point, isLeftToRight) { + if ((dom.isVisiblePoint(point) && !dom.isEdgePoint(point)) || + (dom.isVisiblePoint(point) && dom.isRightEdgePoint(point) && !isLeftToRight) || + (dom.isVisiblePoint(point) && dom.isLeftEdgePoint(point) && isLeftToRight) || + (dom.isVisiblePoint(point) && dom.isBlock(point.node) && dom.isEmpty(point.node))) { + return point; + } + + // point on block's edge + var block = dom.ancestor(point.node, dom.isBlock); + if (((dom.isLeftEdgePointOf(point, block) || dom.isVoid(dom.prevPoint(point).node)) && !isLeftToRight) || + ((dom.isRightEdgePointOf(point, block) || dom.isVoid(dom.nextPoint(point).node)) && isLeftToRight)) { + + // returns point already on visible point + if (dom.isVisiblePoint(point)) { + return point; + } + // reverse direction + isLeftToRight = !isLeftToRight; + } + + var nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint) : + dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint); + return nextPoint || point; + }; + + var endPoint = getVisiblePoint(this.getEndPoint(), false); + var startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true); + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + this.nodes = function (pred, options) { + pred = pred || func.ok; + + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; + + // TODO compare points and sort + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + + var nodes = []; + var leftEdgeNodes = []; + + dom.walkPoint(startPoint, endPoint, function (point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + if (dom.isRightEdgePoint(point) && list.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + + return list.unique(nodes); + }; + + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + this.commonAncestor = function () { + return dom.commonAncestor(sc, ec); + }; + + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + this.expand = function (pred) { + var startAncestor = dom.ancestor(sc, pred); + var endAncestor = dom.ancestor(ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(sc, so, ec, eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + this.collapse = function (isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(sc, so, sc, so); + } else { + return new WrappedRange(ec, eo, ec, eo); + } + }; + + /** + * splitText on range + */ + this.splitText = function () { + var isSameContainer = sc === ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(ec) && !dom.isEdgePoint(this.getEndPoint())) { + ec.splitText(eo); + } + + if (dom.isText(sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = sc.splitText(so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = eo - so; + } + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * delete contents on range + * @return {WrappedRange} + */ + this.deleteContents = function () { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); + + // find new cursor point + var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + return !list.contains(nodes, point.node); + }); + + var emptyParents = []; + $.each(nodes, function (idx, node) { + // find empty parents + var parent = node.parentNode; + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + dom.remove(node, false); + }); + + // remove empty parents + $.each(emptyParents, function (idx, node) { + dom.remove(node, false); + }); + + return new WrappedRange( + point.node, + point.offset, + point.node, + point.offset + ).normalize(); + }; + + /** + * makeIsOn: return isOn(pred) function + */ + var makeIsOn = function (pred) { + return function () { + var ancestor = dom.ancestor(sc, pred); + return !!ancestor && (ancestor === dom.ancestor(ec, pred)); + }; + }; + + // isOnEditable: judge whether range is on editable or not + this.isOnEditable = makeIsOn(dom.isEditable); + // isOnList: judge whether range is on list node or not + this.isOnList = makeIsOn(dom.isList); + // isOnAnchor: judge whether range is on anchor node or not + this.isOnAnchor = makeIsOn(dom.isAnchor); + // isOnCell: judge whether range is on cell node or not + this.isOnCell = makeIsOn(dom.isCell); + // isOnData: judge whether range is on data node or not + this.isOnData = makeIsOn(dom.isData); + + /** + * @param {Function} pred + * @return {Boolean} + */ + this.isLeftEdgeOf = function (pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + }; + + /** + * returns whether range was collapsed or not + */ + this.isCollapsed = function () { + return sc === ec && so === eo; + }; + + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + this.wrapBodyInlineWithPara = function () { + if (dom.isBodyContainer(sc) && dom.isEmpty(sc)) { + sc.innerHTML = dom.emptyPara; + return new WrappedRange(sc.firstChild, 0, sc.firstChild, 0); + } + + /** + * [workaround] firefox often create range on not visible point. so normalize here. + * - firefox: |<p>text</p>| + * - chrome: <p>|text|</p> + */ + var rng = this.normalize(); + if (dom.isParaInline(sc) || dom.isPara(sc)) { + return rng; + } + + // find inline top ancestor + var topAncestor; + if (dom.isInline(rng.sc)) { + var ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline)); + topAncestor = list.last(ancestors); + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so]; + } + } else { + topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0]; + } + + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); + + // wrap with paragraph + if (inlineSiblings.length) { + var para = dom.wrap(list.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, list.tail(inlineSiblings)); + } + + return this.normalize(); + }; + + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + this.insertNode = function (node) { + var rng = this.wrapBodyInlineWithPara().deleteContents(); + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + } else { + info.container.appendChild(node); + } + + return node; + }; + + /** + * insert html at current cursor + */ + this.pasteHTML = function (markup) { + var contentsContainer = $('<div></div>').html(markup)[0]; + var childNodes = list.from(contentsContainer.childNodes); + + var rng = this.wrapBodyInlineWithPara().deleteContents(); + + return childNodes.reverse().map(function (childNode) { + return rng.insertNode(childNode); + }).reverse(); + }; + + /** + * returns text in range + * + * @return {String} + */ + this.toString = function () { + var nativeRng = nativeRange(); + return agent.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + }; + + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + this.getWordRange = function (findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + this.bookmark = function (editable) { + return { + s: { + path: dom.makeOffsetPath(editable, sc), + offset: so + }, + e: { + path: dom.makeOffsetPath(editable, ec), + offset: eo + } + }; + }; + + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + this.paraBookmark = function (paras) { + return { + s: { + path: list.tail(dom.makeOffsetPath(list.head(paras), sc)), + offset: so + }, + e: { + path: list.tail(dom.makeOffsetPath(list.last(paras), ec)), + offset: eo + } + }; + }; + + /** + * getClientRects + * @return {Rect[]} + */ + this.getClientRects = function () { + var nativeRng = nativeRange(); + return nativeRng.getClientRects(); + }; + }; + + /** + * @class core.range + * + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + * + * @singleton + * @alternateClassName range + */ + return { + /** + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create: function (sc, so, ec, eo) { + if (arguments.length === 4) { + return new WrappedRange(sc, so, ec, eo); + } else if (arguments.length === 2) { //collapsed + ec = sc; + eo = so; + return new WrappedRange(sc, so, ec, eo); + } else { + var wrappedRange = this.createFromSelection(); + if (!wrappedRange && arguments.length === 1) { + wrappedRange = this.createFromNode(arguments[0]); + return wrappedRange.collapse(dom.emptyPara === arguments[0].innerHTML); + } + return wrappedRange; + } + }, + + createFromSelection: function () { + var sc, so, ec, eo; + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. + // We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + + var startPoint = textRangeToPoint(textRangeStart, true), + endPoint = textRangeToPoint(textRangeEnd, false); + + // same visible point case: range was collapsed. + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && + dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && + endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function (node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); + + // browsers can't target a picture or void node + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function (node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function (node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark: function (editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function (bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(list.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(list.last(paras), bookmark.e.path); + + return new WrappedRange(sc, so, ec, eo); + } + }; + })(); + + /** + * @class core.async + * + * Async functions which returns `Promise` + * + * @singleton + * @alternateClassName async + */ + var async = (function () { + /** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: dataUrl + */ + var readFileAsDataURL = function (file) { + return $.Deferred(function (deferred) { + $.extend(new FileReader(), { + onload: function (e) { + var dataURL = e.target.result; + deferred.resolve(dataURL); + }, + onerror: function () { + deferred.reject(this); + } + }).readAsDataURL(file); + }).promise(); + }; + + /** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} url + * @return {Promise} - then: $image + */ + var createImage = function (url) { + return $.Deferred(function (deferred) { + var $img = $('<img>'); + + $img.one('load', function () { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function () { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr('src', url); + }).promise(); + }; + + return { + readFileAsDataURL: readFileAsDataURL, + createImage: createImage + }; + })(); + + /** + * @class editing.History + * + * Editor History + * + */ + var History = function ($editable) { + var stack = [], stackOffset = -1; + var editable = $editable[0]; + + var makeSnapshot = function () { + var rng = range.create(editable); + var emptyBookmark = {s: {path: [], offset: 0}, e: {path: [], offset: 0}}; + + return { + contents: $editable.html(), + bookmark: (rng ? rng.bookmark(editable) : emptyBookmark) + }; + }; + + var applySnapshot = function (snapshot) { + if (snapshot.contents !== null) { + $editable.html(snapshot.contents); + } + if (snapshot.bookmark !== null) { + range.createFromBookmark(editable, snapshot.bookmark).select(); + } + }; + + /** + * @method rewind + * Rewinds the history stack back to the first snapshot taken. + * Leaves the stack intact, so that "Redo" can still be used. + */ + this.rewind = function () { + // Create snap shot if not yet recorded + if ($editable.html() !== stack[stackOffset].contents) { + this.recordUndo(); + } + + // Return to the first available snapshot. + stackOffset = 0; + + // Apply that snapshot. + applySnapshot(stack[stackOffset]); + }; + + /** + * @method reset + * Resets the history stack completely; reverting to an empty editor. + */ + this.reset = function () { + // Clear the stack. + stack = []; + + // Restore stackOffset to its original value. + stackOffset = -1; + + // Clear the editable area. + $editable.html(''); + + // Record our first snapshot (of nothing). + this.recordUndo(); + }; + + /** + * undo + */ + this.undo = function () { + // Create snap shot if not yet recorded + if ($editable.html() !== stack[stackOffset].contents) { + this.recordUndo(); + } + + if (0 < stackOffset) { + stackOffset--; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * redo + */ + this.redo = function () { + if (stack.length - 1 > stackOffset) { + stackOffset++; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * recorded undo + */ + this.recordUndo = function () { + stackOffset++; + + // Wash out stack after stackOffset + if (stack.length > stackOffset) { + stack = stack.slice(0, stackOffset); + } + + // Create new snapshot and push it to the end + stack.push(makeSnapshot()); + }; + }; + + /** + * @class editing.Style + * + * Style + * + */ + var Style = function () { + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + var jQueryCSS = function ($obj, propertyNames) { + if (agent.jqueryVersion < 1.9) { + var result = {}; + $.each(propertyNames, function (idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + return $obj.css.call($obj, propertyNames); + }; + + /** + * returns style object from node + * + * @param {jQuery} $node + * @return {Object} + */ + this.fromNode = function ($node) { + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = jQueryCSS($node, properties) || {}; + styleInfo['font-size'] = parseInt(styleInfo['font-size'], 10); + return styleInfo; + }; + + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + this.stylePara = function (rng, styleInfo) { + $.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function (idx, para) { + $(para).css(styleInfo); + }); + }; + + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + this.styleNodes = function (rng, options) { + rng = rng.splitText(); + + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = rng.nodes(dom.isText, { + fullyContains: true + }).map(function (text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); + // compose with partial contains predication + pred = func.and(pred, function (node) { + return list.contains(nodesInRange, node); + }); + } + + return nodes.map(function (node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = list.head(siblings); + var tails = list.tail(siblings); + $.each(tails, function (idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return list.head(siblings); + }); + } else { + return nodes; + } + }; + + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @return {Object} - object contains style properties. + */ + this.current = function (rng) { + var $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc); + var styleInfo = this.fromNode($cont); + + // document.queryCommandState for toggle state + // [workaround] prevent Firefox nsresult: "0x80004005 (NS_ERROR_FAILURE)" + try { + styleInfo = $.extend(styleInfo, { + 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal', + 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal', + 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal', + 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal', + 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal', + 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal' + }); + } catch (e) {} + + // list-style-type to list-style(unordered, ordered) + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = $.inArray(styleInfo['list-style-type'], orderedTypes) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + + return styleInfo; + }; + }; + + + /** + * @class editing.Bullet + * + * @alternateClassName Bullet + */ + var Bullet = function () { + var self = this; + + /** + * toggle ordered list + */ + this.insertOrderedList = function (editable) { + this.toggleList('OL', editable); + }; + + /** + * toggle unordered list + */ + this.insertUnorderedList = function (editable) { + this.toggleList('UL', editable); + }; + + /** + * indent + */ + this.indent = function (editable) { + var self = this; + var rng = range.create(editable).wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.wrapList(paras, head.parentNode.nodeName); + } else { + $.each(paras, function (idx, para) { + $(para).css('marginLeft', function (idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + + rng.select(); + }; + + /** + * outdent + */ + this.outdent = function (editable) { + var self = this; + var rng = range.create(editable).wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.releaseList([paras]); + } else { + $.each(paras, function (idx, para) { + $(para).css('marginLeft', function (idx, val) { + val = (parseInt(val, 10) || 0); + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + + rng.select(); + }; + + /** + * toggle list + * + * @param {String} listName - OL or UL + */ + this.toggleList = function (listName, editable) { + var rng = range.create(editable).wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var bookmark = rng.paraBookmark(paras); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + // paragraph to list + if (list.find(paras, dom.isPurePara)) { + var wrappedParas = []; + $.each(clustereds, function (idx, paras) { + wrappedParas = wrappedParas.concat(self.wrapList(paras, listName)); + }); + paras = wrappedParas; + // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function (listNode) { + return !$.nodeName(listNode, listName); + }); + + if (diffLists.length) { + $.each(diffLists, function (idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + }; + + /** + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + this.wrapList = function (paras, listName) { + var head = list.head(paras); + var last = list.last(paras); + + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); + + // P to LI + paras = paras.map(function (para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); + + // append to list(<ul>, <ol>) + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, list.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + }; + + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + this.releaseList = function (clustereds, isEscapseToBody) { + var releasedParas = []; + + $.each(clustereds, function (idx, paras) { + var head = list.head(paras); + var last = list.last(paras); + + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : + head.parentNode; + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : + list.from(middleList.childNodes).filter(dom.isLi); + + // LI to P + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = paras.map(function (para) { + return dom.replace(para, 'P'); + }); + } + + $.each(list.from(paras).reverse(), function (idx, para) { + dom.insertAfter(para, headList); + }); + + // remove empty lists + var rootLists = list.compact([headList, middleList, lastList]); + $.each(rootLists, function (idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + $.each(listNodes.reverse(), function (idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + + releasedParas = releasedParas.concat(paras); + }); + + return releasedParas; + }; + }; + + + /** + * @class editing.Typing + * + * Typing + * + */ + var Typing = function () { + + // a Bullet instance to toggle lists off + var bullet = new Bullet(); + + /** + * insert tab + * + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + this.insertTab = function (rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + + rng = range.create(tab, tabsize); + rng.select(); + }; + + /** + * insert paragraph + */ + this.insertParagraph = function (editable) { + var rng = range.create(editable); + + // deleteContents on range. + rng = rng.deleteContents(); + + // Wrap range if it needs to be wrapped by paragraph + rng = rng.wrapBodyInlineWithPara(); + + // finding paragraph + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + + var nextPara; + // on paragraph: split paragraph + if (splitRoot) { + // if it is an empty line with li + if (dom.isEmpty(splitRoot) && dom.isLi(splitRoot)) { + // toogle UL/OL and escape + bullet.toggleList(splitRoot.parentNode.nodeName); + return; + // if it is an empty line with para on blockquote + } else if (dom.isEmpty(splitRoot) && dom.isPara(splitRoot) && dom.isBlockquote(splitRoot.parentNode)) { + // escape blockquote + dom.insertAfter(splitRoot, splitRoot.parentNode); + nextPara = splitRoot; + // if new line has content (not a line break) + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + + $.each(emptyAnchors, function (idx, anchor) { + dom.remove(anchor); + }); + + // replace empty heading or pre with P tag + if ((dom.isHeading(nextPara) || dom.isPre(nextPara)) && dom.isEmpty(nextPara)) { + nextPara = dom.replace(nextPara, 'p'); + } + } + // no paragraph: insert empty paragraph + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = $(dom.emptyPara)[0]; + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select().scrollIntoView(editable); + }; + }; + + /** + * @class editing.Table + * + * Table + * + */ + var Table = function () { + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + this.tab = function (rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + + var nextCell = list[isShift ? 'prev' : 'next'](cells, cell); + if (nextCell) { + range.create(nextCell, 0).select(); + } + }; + + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + this.createTable = function (colCount, rowCount, options) { + var tds = [], tdHTML; + for (var idxCol = 0; idxCol < colCount; idxCol++) { + tds.push('<td>' + dom.blank + '</td>'); + } + tdHTML = tds.join(''); + + var trs = [], trHTML; + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + trHTML = trs.join(''); + var $table = $('<table>' + trHTML + '</table>'); + if (options && options.tableClassName) { + $table.addClass(options.tableClassName); + } + + return $table[0]; + }; + }; + + + var KEY_BOGUS = 'bogus'; + + /** + * @class Editor + */ + var Editor = function (context) { + var self = this; + + var $note = context.layoutInfo.note; + var $editor = context.layoutInfo.editor; + var $editable = context.layoutInfo.editable; + var options = context.options; + var lang = options.langInfo; + + var editable = $editable[0]; + var lastRange = null; + + var style = new Style(); + var table = new Table(); + var typing = new Typing(); + var bullet = new Bullet(); + var history = new History($editable); + + this.initialize = function () { + // bind custom events + $editable.on('keydown', function (event) { + if (event.keyCode === key.code.ENTER) { + context.triggerEvent('enter', event); + } + context.triggerEvent('keydown', event); + + if (!event.isDefaultPrevented()) { + if (options.shortcuts) { + self.handleKeyMap(event); + } else { + self.preventDefaultEditableShortCuts(event); + } + } + }).on('keyup', function (event) { + context.triggerEvent('keyup', event); + }).on('focus', function (event) { + context.triggerEvent('focus', event); + }).on('blur', function (event) { + context.triggerEvent('blur', event); + }).on('mousedown', function (event) { + context.triggerEvent('mousedown', event); + }).on('mouseup', function (event) { + context.triggerEvent('mouseup', event); + }).on('scroll', function (event) { + context.triggerEvent('scroll', event); + }).on('paste', function (event) { + context.triggerEvent('paste', event); + }); + + // init content before set event + $editable.html(dom.html($note) || dom.emptyPara); + + // [workaround] IE doesn't have input events for contentEditable + // - see: https://goo.gl/4bfIvA + var changeEventName = agent.isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; + $editable.on(changeEventName, function () { + context.triggerEvent('change', $editable.html()); + }); + + $editor.on('focusin', function (event) { + context.triggerEvent('focusin', event); + }).on('focusout', function (event) { + context.triggerEvent('focusout', event); + }); + + if (!options.airMode) { + if (options.width) { + $editor.outerWidth(options.width); + } + if (options.height) { + $editable.outerHeight(options.height); + } + if (options.maxHeight) { + $editable.css('max-height', options.maxHeight); + } + if (options.minHeight) { + $editable.css('min-height', options.minHeight); + } + } + + history.recordUndo(); + }; + + this.destroy = function () { + $editable.off(); + }; + + this.handleKeyMap = function (event) { + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + var keys = []; + + if (event.metaKey) { keys.push('CMD'); } + if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); } + if (event.shiftKey) { keys.push('SHIFT'); } + + var keyName = key.nameFromCode[event.keyCode]; + if (keyName) { + keys.push(keyName); + } + + var eventName = keyMap[keys.join('+')]; + if (eventName) { + event.preventDefault(); + context.invoke(eventName); + } else if (key.isEdit(event.keyCode)) { + this.afterCommand(); + } + }; + + this.preventDefaultEditableShortCuts = function (event) { + // B(Bold, 66) / I(Italic, 73) / U(Underline, 85) + if ((event.ctrlKey || event.metaKey) && + list.contains([66, 73, 85], event.keyCode)) { + event.preventDefault(); + } + }; + + /** + * create range + * @return {WrappedRange} + */ + this.createRange = function () { + this.focus(); + return range.create(editable); + }; + + /** + * saveRange + * + * save current range + * + * @param {Boolean} [thenCollapse=false] + */ + this.saveRange = function (thenCollapse) { + lastRange = this.createRange(); + if (thenCollapse) { + lastRange.collapse().select(); + } + }; + + /** + * restoreRange + * + * restore lately range + */ + this.restoreRange = function () { + if (lastRange) { + lastRange.select(); + this.focus(); + } + }; + + this.saveTarget = function (node) { + $editable.data('target', node); + }; + + this.clearTarget = function () { + $editable.removeData('target'); + }; + + this.restoreTarget = function () { + return $editable.data('target'); + }; + + /** + * currentStyle + * + * current style + * @return {Object|Boolean} unfocus + */ + this.currentStyle = function () { + var rng = range.create(); + if (rng) { + rng = rng.normalize(); + } + return rng ? style.current(rng) : style.fromNode($editable); + }; + + /** + * style from node + * + * @param {jQuery} $node + * @return {Object} + */ + this.styleFromNode = function ($node) { + return style.fromNode($node); + }; + + /** + * undo + */ + this.undo = function () { + context.triggerEvent('before.command', $editable.html()); + history.undo(); + context.triggerEvent('change', $editable.html()); + }; + context.memo('help.undo', lang.help.undo); + + /** + * redo + */ + this.redo = function () { + context.triggerEvent('before.command', $editable.html()); + history.redo(); + context.triggerEvent('change', $editable.html()); + }; + context.memo('help.redo', lang.help.redo); + + /** + * before command + */ + var beforeCommand = this.beforeCommand = function () { + context.triggerEvent('before.command', $editable.html()); + // keep focus on editable before command execution + self.focus(); + }; + + /** + * after command + * @param {Boolean} isPreventTrigger + */ + var afterCommand = this.afterCommand = function (isPreventTrigger) { + history.recordUndo(); + if (!isPreventTrigger) { + context.triggerEvent('change', $editable.html()); + } + }; + + /* jshint ignore:start */ + // native commands(with execCommand), generate function for execCommand + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', + 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', + 'formatBlock', 'removeFormat', + 'backColor', 'foreColor', 'fontName']; + + for (var idx = 0, len = commands.length; idx < len; idx ++) { + this[commands[idx]] = (function (sCmd) { + return function (value) { + beforeCommand(); + document.execCommand(sCmd, false, value); + afterCommand(true); + }; + })(commands[idx]); + context.memo('help.' + commands[idx], lang.help[commands[idx]]); + } + /* jshint ignore:end */ + + /** + * handle tab key + */ + this.tab = function () { + var rng = this.createRange(); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng); + } else { + beforeCommand(); + typing.insertTab(rng, options.tabSize); + afterCommand(); + } + }; + context.memo('help.tab', lang.help.tab); + + /** + * handle shift+tab key + */ + this.untab = function () { + var rng = this.createRange(); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng, true); + } + }; + context.memo('help.untab', lang.help.untab); + + /** + * run given function between beforeCommand and afterCommand + */ + this.wrapCommand = function (fn) { + return function () { + beforeCommand(); + fn.apply(self, arguments); + afterCommand(); + }; + }; + + /** + * insert paragraph + */ + this.insertParagraph = this.wrapCommand(function () { + typing.insertParagraph(editable); + }); + context.memo('help.insertParagraph', lang.help.insertParagraph); + + this.insertOrderedList = this.wrapCommand(function () { + bullet.insertOrderedList(editable); + }); + context.memo('help.insertOrderedList', lang.help.insertOrderedList); + + this.insertUnorderedList = this.wrapCommand(function () { + bullet.insertUnorderedList(editable); + }); + context.memo('help.insertUnorderedList', lang.help.insertUnorderedList); + + this.indent = this.wrapCommand(function () { + bullet.indent(editable); + }); + context.memo('help.indent', lang.help.indent); + + this.outdent = this.wrapCommand(function () { + bullet.outdent(editable); + }); + context.memo('help.outdent', lang.help.outdent); + + /** + * insert image + * + * @param {String} src + * @param {String|Function} param + * @return {Promise} + */ + this.insertImage = function (src, param) { + return async.createImage(src, param).then(function ($image) { + beforeCommand(); + + if (typeof param === 'function') { + param($image); + } else { + if (typeof param === 'string') { + $image.attr('data-filename', param); + } + $image.css('width', Math.min($editable.width(), $image.width())); + } + + $image.show(); + range.create(editable).insertNode($image[0]); + range.createFromNodeAfter($image[0]).select(); + afterCommand(); + }).fail(function (e) { + context.triggerEvent('image.upload.error', e); + }); + }; + + /** + * insertImages + * @param {File[]} files + */ + this.insertImages = function (files) { + $.each(files, function (idx, file) { + var filename = file.name; + if (options.maximumImageFileSize && options.maximumImageFileSize < file.size) { + context.triggerEvent('image.upload.error', lang.image.maximumFileSizeError); + } else { + async.readFileAsDataURL(file).then(function (dataURL) { + return self.insertImage(dataURL, filename); + }).fail(function () { + context.triggerEvent('image.upload.error'); + }); + } + }); + }; + + /** + * insertImagesOrCallback + * @param {File[]} files + */ + this.insertImagesOrCallback = function (files) { + var callbacks = options.callbacks; + + // If onImageUpload options setted + if (callbacks.onImageUpload) { + context.triggerEvent('image.upload', files); + // else insert Image as dataURL + } else { + this.insertImages(files); + } + }; + + /** + * insertNode + * insert node + * @param {Node} node + */ + this.insertNode = this.wrapCommand(function (node) { + var rng = this.createRange(); + rng.insertNode(node); + range.createFromNodeAfter(node).select(); + }); + + /** + * insert text + * @param {String} text + */ + this.insertText = this.wrapCommand(function (text) { + var rng = this.createRange(); + var textNode = rng.insertNode(dom.createText(text)); + range.create(textNode, dom.nodeLength(textNode)).select(); + }); + + /** + * return selected plain text + * @return {String} text + */ + this.getSelectedText = function () { + var rng = this.createRange(); + + // if range on anchor, expand range with anchor + if (rng.isOnAnchor()) { + rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor)); + } + + return rng.toString(); + }; + + /** + * paste HTML + * @param {String} markup + */ + this.pasteHTML = this.wrapCommand(function (markup) { + var contents = this.createRange().pasteHTML(markup); + range.createFromNodeAfter(list.last(contents)).select(); + }); + + /** + * formatBlock + * + * @param {String} tagName + */ + this.formatBlock = this.wrapCommand(function (tagName) { + // [workaround] for MSIE, IE need `<` + tagName = agent.isMSIE ? '<' + tagName + '>' : tagName; + document.execCommand('FormatBlock', false, tagName); + }); + + this.formatPara = function () { + this.formatBlock('P'); + }; + context.memo('help.formatPara', lang.help.formatPara); + + /* jshint ignore:start */ + for (var idx = 1; idx <= 6; idx ++) { + this['formatH' + idx] = function (idx) { + return function () { + this.formatBlock('H' + idx); + }; + }(idx); + context.memo('help.formatH'+idx, lang.help['formatH' + idx]); + }; + /* jshint ignore:end */ + + /** + * fontSize + * + * @param {String} value - px + */ + this.fontSize = function (value) { + var rng = this.createRange(); + + if (rng && rng.isCollapsed()) { + var spans = style.styleNodes(rng); + var firstSpan = list.head(spans); + + $(spans).css({ + 'font-size': value + 'px' + }); + + // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNodeAfter(firstSpan.firstChild).select(); + $editable.data(KEY_BOGUS, firstSpan); + } + } else { + beforeCommand(); + $(style.styleNodes(rng)).css({ + 'font-size': value + 'px' + }); + afterCommand(); + } + }; + + /** + * insert horizontal rule + */ + this.insertHorizontalRule = this.wrapCommand(function () { + var hrNode = this.createRange().insertNode(dom.create('HR')); + if (hrNode.nextSibling) { + range.create(hrNode.nextSibling, 0).normalize().select(); + } + }); + context.memo('help.insertHorizontalRule', lang.help.insertHorizontalRule); + + /** + * remove bogus node and character + */ + this.removeBogus = function () { + var bogusNode = $editable.data(KEY_BOGUS); + if (!bogusNode) { + return; + } + + var textNode = list.find(list.from(bogusNode.childNodes), dom.isText); + + var bogusCharIdx = textNode.nodeValue.indexOf(dom.ZERO_WIDTH_NBSP_CHAR); + if (bogusCharIdx !== -1) { + textNode.deleteData(bogusCharIdx, 1); + } + + if (dom.isEmpty(bogusNode)) { + dom.remove(bogusNode); + } + + $editable.removeData(KEY_BOGUS); + }; + + /** + * lineHeight + * @param {String} value + */ + this.lineHeight = this.wrapCommand(function (value) { + style.stylePara(this.createRange(), { + lineHeight: value + }); + }); + + /** + * unlink + * + * @type command + */ + this.unlink = function () { + var rng = this.createRange(); + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + + beforeCommand(); + document.execCommand('unlink'); + afterCommand(); + } + }; + + /** + * create link (command) + * + * @param {Object} linkInfo + */ + this.createLink = this.wrapCommand(function (linkInfo) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.isNewWindow; + var rng = linkInfo.range || this.createRange(); + var isTextChanged = rng.toString() !== linkText; + + // handle spaced urls from input + if (typeof linkUrl === 'string') { + linkUrl = linkUrl.trim(); + } + + if (options.onCreateLink) { + linkUrl = options.onCreateLink(linkUrl); + } + + var anchors = []; + if (isTextChanged) { + rng = rng.deleteContents(); + var anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + $.each(anchors, function (idx, anchor) { + // if url doesn't match an URL schema, set http:// as default + linkUrl = /^[A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?/.test(linkUrl) ? + linkUrl : 'http://' + linkUrl; + + $(anchor).attr('href', linkUrl); + if (isNewWindow) { + $(anchor).attr('target', '_blank'); + } else { + $(anchor).removeAttr('target'); + } + }); + + var startRange = range.createFromNodeBefore(list.head(anchors)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(list.last(anchors)); + var endPoint = endRange.getEndPoint(); + + range.create( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ).select(); + }); + + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=""] + */ + this.getLinkInfo = function () { + var rng = this.createRange().expand(dom.isAnchor); + + // Get the first anchor on range(for edit). + var $anchor = $(list.head(rng.nodes(dom.isAnchor))); + + return { + range: rng, + text: rng.toString(), + isNewWindow: $anchor.length ? $anchor.attr('target') === '_blank' : false, + url: $anchor.length ? $anchor.attr('href') : '' + }; + }; + + /** + * setting color + * + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + this.color = this.wrapCommand(function (colorInfo) { + var foreColor = colorInfo.foreColor; + var backColor = colorInfo.backColor; + + if (foreColor) { document.execCommand('foreColor', false, foreColor); } + if (backColor) { document.execCommand('backColor', false, backColor); } + }); + + /** + * insert Table + * + * @param {String} dimension of table (ex : "5x5") + */ + this.insertTable = this.wrapCommand(function (dim) { + var dimension = dim.split('x'); + + var rng = this.createRange().deleteContents(); + rng.insertNode(table.createTable(dimension[0], dimension[1], options)); + }); + + /** + * float me + * + * @param {String} value + */ + this.floatMe = this.wrapCommand(function (value) { + var $target = $(this.restoreTarget()); + $target.css('float', value); + }); + + /** + * resize overlay element + * @param {String} value + */ + this.resize = this.wrapCommand(function (value) { + var $target = $(this.restoreTarget()); + $target.css({ + width: value * 100 + '%', + height: '' + }); + }); + + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + this.resizeTo = function (pos, $target, bKeepRatio) { + var imageSize; + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + }; + + /** + * remove media object + */ + this.removeMedia = this.wrapCommand(function () { + var $target = $(this.restoreTarget()).detach(); + context.triggerEvent('media.delete', $target, $editable); + }); + + /** + * returns whether editable area has focus or not. + */ + this.hasFocus = function () { + return $editable.is(':focus'); + }; + + /** + * set focus + */ + this.focus = function () { + // [workaround] Screen will move when page is scolled in IE. + // - do focus when not focused + if (!this.hasFocus()) { + $editable.focus(); + } + }; + + /** + * returns whether contents is empty or not. + * @return {Boolean} + */ + this.isEmpty = function () { + return dom.isEmpty($editable[0]) || dom.emptyPara === $editable.html(); + }; + + /** + * Removes all contents and restores the editable instance to an _emptyPara_. + */ + this.empty = function () { + context.invoke('code', dom.emptyPara); + }; + }; + + var Clipboard = function (context) { + var self = this; + + var $editable = context.layoutInfo.editable; + + this.events = { + 'summernote.keydown': function (we, e) { + if (self.needKeydownHook()) { + if ((e.ctrlKey || e.metaKey) && e.keyCode === key.code.V) { + context.invoke('editor.saveRange'); + self.$paste.focus(); + + setTimeout(function () { + self.pasteByHook(); + }, 0); + } + } + } + }; + + this.needKeydownHook = function () { + return (agent.isMSIE && agent.browserVersion > 10) || agent.isFF; + }; + + this.initialize = function () { + // [workaround] getting image from clipboard + // - IE11 and Firefox: CTRL+v hook + // - Webkit: event.clipboardData + if (this.needKeydownHook()) { + this.$paste = $('<div tabindex="-1" />').attr('contenteditable', true).css({ + position: 'absolute', + left: -100000, + opacity: 0 + }); + $editable.before(this.$paste); + + this.$paste.on('paste', function (event) { + context.triggerEvent('paste', event); + }); + } else { + $editable.on('paste', this.pasteByEvent); + } + }; + + this.destroy = function () { + if (this.needKeydownHook()) { + this.$paste.remove(); + this.$paste = null; + } + }; + + this.pasteByHook = function () { + var node = this.$paste[0].firstChild; + + if (dom.isImg(node)) { + var dataURI = node.src; + var decodedData = atob(dataURI.split(',')[1]); + var array = new Uint8Array(decodedData.length); + for (var i = 0; i < decodedData.length; i++) { + array[i] = decodedData.charCodeAt(i); + } + + var blob = new Blob([array], { type: 'image/png' }); + blob.name = 'clipboard.png'; + + context.invoke('editor.restoreRange'); + context.invoke('editor.focus'); + context.invoke('editor.insertImagesOrCallback', [blob]); + } else { + var pasteContent = $('<div />').html(this.$paste.html()).html(); + context.invoke('editor.restoreRange'); + context.invoke('editor.focus'); + + if (pasteContent) { + context.invoke('editor.pasteHTML', pasteContent); + } + } + + this.$paste.empty(); + }; + + /** + * paste by clipboard event + * + * @param {Event} event + */ + this.pasteByEvent = function (event) { + var clipboardData = event.originalEvent.clipboardData; + if (clipboardData && clipboardData.items && clipboardData.items.length) { + var item = list.head(clipboardData.items); + if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { + context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]); + } + context.invoke('editor.afterCommand'); + } + }; + }; + + var Dropzone = function (context) { + var $document = $(document); + var $editor = context.layoutInfo.editor; + var $editable = context.layoutInfo.editable; + var options = context.options; + var lang = options.langInfo; + var documentEventHandlers = {}; + + var $dropzone = $([ + '<div class="note-dropzone">', + ' <div class="note-dropzone-message"/>', + '</div>' + ].join('')).prependTo($editor); + + var detachDocumentEvent = function () { + Object.keys(documentEventHandlers).forEach(function (key) { + $document.off(key.substr(2).toLowerCase(), documentEventHandlers[key]); + }); + documentEventHandlers = {}; + }; + + /** + * attach Drag and Drop Events + */ + this.initialize = function () { + if (options.disableDragAndDrop) { + // prevent default drop event + documentEventHandlers.onDrop = function (e) { + e.preventDefault(); + }; + $document.on('drop', documentEventHandlers.onDrop); + } else { + this.attachDragAndDropEvent(); + } + }; + + /** + * attach Drag and Drop Events + */ + this.attachDragAndDropEvent = function () { + var collection = $(), + $dropzoneMessage = $dropzone.find('.note-dropzone-message'); + + documentEventHandlers.onDragenter = function (e) { + var isCodeview = context.invoke('codeview.isActivated'); + var hasEditorSize = $editor.width() > 0 && $editor.height() > 0; + if (!isCodeview && !collection.length && hasEditorSize) { + $editor.addClass('dragover'); + $dropzone.width($editor.width()); + $dropzone.height($editor.height()); + $dropzoneMessage.text(lang.image.dragImageHere); + } + collection = collection.add(e.target); + }; + + documentEventHandlers.onDragleave = function (e) { + collection = collection.not(e.target); + if (!collection.length) { + $editor.removeClass('dragover'); + } + }; + + documentEventHandlers.onDrop = function () { + collection = $(); + $editor.removeClass('dragover'); + }; + + // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + $document.on('dragenter', documentEventHandlers.onDragenter) + .on('dragleave', documentEventHandlers.onDragleave) + .on('drop', documentEventHandlers.onDrop); + + // change dropzone's message on hover. + $dropzone.on('dragenter', function () { + $dropzone.addClass('hover'); + $dropzoneMessage.text(lang.image.dropImage); + }).on('dragleave', function () { + $dropzone.removeClass('hover'); + $dropzoneMessage.text(lang.image.dragImageHere); + }); + + // attach dropImage + $dropzone.on('drop', function (event) { + var dataTransfer = event.originalEvent.dataTransfer; + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + event.preventDefault(); + $editable.focus(); + context.invoke('editor.insertImagesOrCallback', dataTransfer.files); + } else { + $.each(dataTransfer.types, function (idx, type) { + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + context.invoke('editor.pasteHTML', content); + } else { + $(content).each(function () { + context.invoke('editor.insertNode', this); + }); + } + }); + } + }).on('dragover', false); // prevent default dragover event + }; + + this.destroy = function () { + detachDocumentEvent(); + }; + }; + + + var CodeMirror; + if (agent.hasCodeMirror) { + if (agent.isSupportAmd) { + require(['codemirror'], function (cm) { + CodeMirror = cm; + }); + } else { + CodeMirror = window.CodeMirror; + } + } + + /** + * @class Codeview + */ + var Codeview = function (context) { + var $editor = context.layoutInfo.editor; + var $editable = context.layoutInfo.editable; + var $codable = context.layoutInfo.codable; + var options = context.options; + + this.sync = function () { + var isCodeview = this.isActivated(); + if (isCodeview && agent.hasCodeMirror) { + $codable.data('cmEditor').save(); + } + }; + + /** + * @return {Boolean} + */ + this.isActivated = function () { + return $editor.hasClass('codeview'); + }; + + /** + * toggle codeview + */ + this.toggle = function () { + if (this.isActivated()) { + this.deactivate(); + } else { + this.activate(); + } + context.triggerEvent('codeview.toggled'); + }; + + /** + * activate code view + */ + this.activate = function () { + $codable.val(dom.html($editable, options.prettifyHtml)); + $codable.height($editable.height()); + + context.invoke('toolbar.updateCodeview', true); + $editor.addClass('codeview'); + $codable.focus(); + + // activate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror); + + // CodeMirror TernServer + if (options.codemirror.tern) { + var server = new CodeMirror.TernServer(options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function (cm) { + server.updateArgHints(cm); + }); + } + + // CodeMirror hasn't Padding. + cmEditor.setSize(null, $editable.outerHeight()); + $codable.data('cmEditor', cmEditor); + } + }; + + /** + * deactivate code view + */ + this.deactivate = function () { + // deactivate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = $codable.data('cmEditor'); + $codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara; + var isChange = $editable.html() !== value; + + $editable.html(value); + $editable.height(options.height ? $codable.height() : 'auto'); + $editor.removeClass('codeview'); + + if (isChange) { + context.triggerEvent('change', $editable.html(), $editable); + } + + $editable.focus(); + + context.invoke('toolbar.updateCodeview', false); + }; + + this.destroy = function () { + if (this.isActivated()) { + this.deactivate(); + } + }; + }; + + var EDITABLE_PADDING = 24; + + var Statusbar = function (context) { + var $document = $(document); + var $statusbar = context.layoutInfo.statusbar; + var $editable = context.layoutInfo.editable; + var options = context.options; + + this.initialize = function () { + if (options.airMode || options.disableResizeEditor) { + return; + } + + $statusbar.on('mousedown', function (event) { + event.preventDefault(); + event.stopPropagation(); + + var editableTop = $editable.offset().top - $document.scrollTop(); + + $document.on('mousemove', function (event) { + var height = event.clientY - (editableTop + EDITABLE_PADDING); + + height = (options.minheight > 0) ? Math.max(height, options.minheight) : height; + height = (options.maxHeight > 0) ? Math.min(height, options.maxHeight) : height; + + $editable.height(height); + }).one('mouseup', function () { + $document.off('mousemove'); + }); + }); + }; + + this.destroy = function () { + $statusbar.off(); + $statusbar.remove(); + }; + }; + + var Fullscreen = function (context) { + var $editor = context.layoutInfo.editor; + var $toolbar = context.layoutInfo.toolbar; + var $editable = context.layoutInfo.editable; + var $codable = context.layoutInfo.codable; + + var $window = $(window); + var $scrollbar = $('html, body'); + + /** + * toggle fullscreen + */ + this.toggle = function () { + var resize = function (size) { + $editable.css('height', size.h); + $codable.css('height', size.h); + if ($codable.data('cmeditor')) { + $codable.data('cmeditor').setsize(null, size.h); + } + }; + + $editor.toggleClass('fullscreen'); + if (this.isFullscreen()) { + $editable.data('orgHeight', $editable.css('height')); + + $window.on('resize', function () { + resize({ + h: $window.height() - $toolbar.outerHeight() + }); + }).trigger('resize'); + + $scrollbar.css('overflow', 'hidden'); + } else { + $window.off('resize'); + resize({ + h: $editable.data('orgHeight') + }); + $scrollbar.css('overflow', 'visible'); + } + + context.invoke('toolbar.updateFullscreen', this.isFullscreen()); + }; + + this.isFullscreen = function () { + return $editor.hasClass('fullscreen'); + }; + }; + + var Handle = function (context) { + var self = this; + + var $document = $(document); + var $editingArea = context.layoutInfo.editingArea; + var options = context.options; + + this.events = { + 'summernote.mousedown': function (we, e) { + if (self.update(e.target)) { + e.preventDefault(); + } + }, + 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': function () { + self.update(); + } + }; + + this.initialize = function () { + this.$handle = $([ + '<div class="note-handle">', + '<div class="note-control-selection">', + '<div class="note-control-selection-bg"></div>', + '<div class="note-control-holder note-control-nw"></div>', + '<div class="note-control-holder note-control-ne"></div>', + '<div class="note-control-holder note-control-sw"></div>', + '<div class="', + (options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'), + ' note-control-se"></div>', + (options.disableResizeImage ? '' : '<div class="note-control-selection-info"></div>'), + '</div>', + '</div>' + ].join('')).prependTo($editingArea); + + this.$handle.on('mousedown', function (event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var $target = self.$handle.find('.note-control-selection').data('target'), + posStart = $target.offset(), + scrollTop = $document.scrollTop(); + + $document.on('mousemove', function (event) { + context.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + self.update($target[0]); + }).one('mouseup', function (e) { + e.preventDefault(); + $document.off('mousemove'); + context.invoke('editor.afterCommand'); + }); + + if (!$target.data('ratio')) { // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }); + }; + + this.destroy = function () { + this.$handle.remove(); + }; + + this.update = function (target) { + var isImage = dom.isImg(target); + var $selection = this.$handle.find('.note-control-selection'); + + context.invoke('imagePopover.update', target); + + if (isImage) { + var $image = $(target); + var pos = $image.position(); + + // include margin + var imageSize = { + w: $image.outerWidth(true), + h: $image.outerHeight(true) + }; + + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', $image); // save current image element. + + var sizingText = imageSize.w + 'x' + imageSize.h; + $selection.find('.note-control-selection-info').text(sizingText); + context.invoke('editor.saveTarget', target); + } else { + this.hide(); + } + + return isImage; + }; + + /** + * hide + * + * @param {jQuery} $handle + */ + this.hide = function () { + context.invoke('editor.clearTarget'); + this.$handle.children().hide(); + }; + }; + + var AutoLink = function (context) { + var self = this; + var defaultScheme = 'http://'; + var linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i; + + this.events = { + 'summernote.keyup': function (we, e) { + if (!e.isDefaultPrevented()) { + self.handleKeyup(e); + } + }, + 'summernote.keydown': function (we, e) { + self.handleKeydown(e); + } + }; + + this.initialize = function () { + this.lastWordRange = null; + }; + + this.destroy = function () { + this.lastWordRange = null; + }; + + this.replace = function () { + if (!this.lastWordRange) { + return; + } + + var keyword = this.lastWordRange.toString(); + var match = keyword.match(linkPattern); + + if (match && (match[1] || match[2])) { + var link = match[1] ? keyword : defaultScheme + keyword; + var node = $('<a />').html(keyword).attr('href', link)[0]; + + this.lastWordRange.insertNode(node); + this.lastWordRange = null; + context.invoke('editor.focus'); + } + + }; + + this.handleKeydown = function (e) { + if (list.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) { + var wordRange = context.invoke('editor.createRange').getWordRange(); + this.lastWordRange = wordRange; + } + }; + + this.handleKeyup = function (e) { + if (list.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) { + this.replace(); + } + }; + }; + + /** + * textarea auto sync. + */ + var AutoSync = function (context) { + var $note = context.layoutInfo.note; + + this.events = { + 'summernote.change': function () { + $note.val(context.invoke('code')); + } + }; + + this.shouldInitialize = function () { + return dom.isTextarea($note[0]); + }; + }; + + var Placeholder = function (context) { + var self = this; + var $editingArea = context.layoutInfo.editingArea; + var options = context.options; + + this.events = { + 'summernote.init summernote.change': function () { + self.update(); + }, + 'summernote.codeview.toggled': function () { + self.update(); + } + }; + + this.shouldInitialize = function () { + return !!options.placeholder; + }; + + this.initialize = function () { + this.$placeholder = $('<div class="note-placeholder">'); + this.$placeholder.on('click', function () { + context.invoke('focus'); + }).text(options.placeholder).prependTo($editingArea); + }; + + this.destroy = function () { + this.$placeholder.remove(); + }; + + this.update = function () { + var isShow = !context.invoke('codeview.isActivated') && context.invoke('editor.isEmpty'); + this.$placeholder.toggle(isShow); + }; + }; + + var Buttons = function (context) { + var self = this; + var ui = $.summernote.ui; + + var $toolbar = context.layoutInfo.toolbar; + var options = context.options; + var lang = options.langInfo; + + var invertedKeyMap = func.invertObject(options.keyMap[agent.isMac ? 'mac' : 'pc']); + + var representShortcut = this.representShortcut = function (editorMethod) { + var shortcut = invertedKeyMap[editorMethod]; + if (!options.shortcuts || !shortcut) { + return ''; + } + + if (agent.isMac) { + shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + shortcut = shortcut.replace('BACKSLASH', '\\') + .replace('SLASH', '/') + .replace('LEFTBRACKET', '[') + .replace('RIGHTBRACKET', ']'); + + return ' (' + shortcut + ')'; + }; + + this.initialize = function () { + this.addToolbarButtons(); + this.addImagePopoverButtons(); + this.addLinkPopoverButtons(); + this.fontInstalledMap = {}; + }; + + this.destroy = function () { + delete this.fontInstalledMap; + }; + + this.isFontInstalled = function (name) { + if (!self.fontInstalledMap.hasOwnProperty(name)) { + self.fontInstalledMap[name] = agent.isFontInstalled(name) || + list.contains(options.fontNamesIgnoreCheck, name); + } + + return self.fontInstalledMap[name]; + }; + + this.addToolbarButtons = function () { + context.memo('button.style', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: ui.icon(options.icons.magic) + ' ' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.style.style, + data: { + toggle: 'dropdown' + } + }), + ui.dropdown({ + className: 'dropdown-style', + items: context.options.styleTags, + template: function (item) { + + if (typeof item === 'string') { + item = { tag: item, title: (lang.style.hasOwnProperty(item) ? lang.style[item] : item) }; + } + + var tag = item.tag; + var title = item.title; + var style = item.style ? ' style="' + item.style + '" ' : ''; + var className = item.className ? ' class="' + item.className + '"' : ''; + + return '<' + tag + style + className + '>' + title + '</' + tag + '>'; + }, + click: context.createInvokeHandler('editor.formatBlock') + }) + ]).render(); + }); + + context.memo('button.bold', function () { + return ui.button({ + className: 'note-btn-bold', + contents: ui.icon(options.icons.bold), + tooltip: lang.font.bold + representShortcut('bold'), + click: context.createInvokeHandler('editor.bold') + }).render(); + }); + + context.memo('button.italic', function () { + return ui.button({ + className: 'note-btn-italic', + contents: ui.icon(options.icons.italic), + tooltip: lang.font.italic + representShortcut('italic'), + click: context.createInvokeHandler('editor.italic') + }).render(); + }); + + context.memo('button.underline', function () { + return ui.button({ + className: 'note-btn-underline', + contents: ui.icon(options.icons.underline), + tooltip: lang.font.underline + representShortcut('underline'), + click: context.createInvokeHandler('editor.underline') + }).render(); + }); + + context.memo('button.clear', function () { + return ui.button({ + contents: ui.icon(options.icons.eraser), + tooltip: lang.font.clear + representShortcut('removeFormat'), + click: context.createInvokeHandler('editor.removeFormat') + }).render(); + }); + + context.memo('button.strikethrough', function () { + return ui.button({ + className: 'note-btn-strikethrough', + contents: ui.icon(options.icons.strikethrough), + tooltip: lang.font.strikethrough + representShortcut('strikethrough'), + click: context.createInvokeHandler('editor.strikethrough') + }).render(); + }); + + context.memo('button.superscript', function () { + return ui.button({ + className: 'note-btn-superscript', + contents: ui.icon(options.icons.superscript), + tooltip: lang.font.superscript, + click: context.createInvokeHandler('editor.superscript') + }).render(); + }); + + context.memo('button.subscript', function () { + return ui.button({ + className: 'note-btn-subscript', + contents: ui.icon(options.icons.subscript), + tooltip: lang.font.subscript, + click: context.createInvokeHandler('editor.subscript') + }).render(); + }); + + context.memo('button.fontname', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: '<span class="note-current-fontname"/> ' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.font.name, + data: { + toggle: 'dropdown' + } + }), + ui.dropdownCheck({ + className: 'dropdown-fontname', + checkClassName: options.icons.menuCheck, + items: options.fontNames.filter(self.isFontInstalled), + template: function (item) { + return '<span style="font-family:' + item + '">' + item + '</span>'; + }, + click: context.createInvokeHandler('editor.fontName') + }) + ]).render(); + }); + + context.memo('button.fontsize', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: '<span class="note-current-fontsize"/>' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.font.size, + data: { + toggle: 'dropdown' + } + }), + ui.dropdownCheck({ + className: 'dropdown-fontsize', + checkClassName: options.icons.menuCheck, + items: options.fontSizes, + click: context.createInvokeHandler('editor.fontSize') + }) + ]).render(); + }); + + context.memo('button.color', function () { + return ui.buttonGroup({ + className: 'note-color', + children: [ + ui.button({ + className: 'note-current-color-button', + contents: ui.icon(options.icons.font + ' note-recent-color'), + tooltip: lang.color.recent, + click: function (e) { + var $button = $(e.currentTarget); + context.invoke('editor.color', { + backColor: $button.attr('data-backColor'), + foreColor: $button.attr('data-foreColor') + }); + }, + callback: function ($button) { + var $recentColor = $button.find('.note-recent-color'); + $recentColor.css('background-color', '#FFFF00'); + $button.attr('data-backColor', '#FFFF00'); + } + }), + ui.button({ + className: 'dropdown-toggle', + contents: ui.icon(options.icons.caret, 'span'), + tooltip: lang.color.more, + data: { + toggle: 'dropdown' + } + }), + ui.dropdown({ + items: [ + '<li>', + '<div class="btn-group">', + ' <div class="note-palette-title">' + lang.color.background + '</div>', + ' <div>', + ' <button type="button" class="note-color-reset btn btn-default" data-event="backColor" data-value="inherit">', + lang.color.transparent, + ' </button>', + ' </div>', + ' <div class="note-holder" data-event="backColor"/>', + '</div>', + '<div class="btn-group">', + ' <div class="note-palette-title">' + lang.color.foreground + '</div>', + ' <div>', + ' <button type="button" class="note-color-reset btn btn-default" data-event="removeFormat" data-value="foreColor">', + lang.color.resetToDefault, + ' </button>', + ' </div>', + ' <div class="note-holder" data-event="foreColor"/>', + '</div>', + '</li>' + ].join(''), + callback: function ($dropdown) { + $dropdown.find('.note-holder').each(function () { + var $holder = $(this); + $holder.append(ui.palette({ + colors: options.colors, + eventName: $holder.data('event') + }).render()); + }); + }, + click: function (event) { + var $button = $(event.target); + var eventName = $button.data('event'); + var value = $button.data('value'); + + if (eventName && value) { + var key = eventName === 'backColor' ? 'background-color' : 'color'; + var $color = $button.closest('.note-color').find('.note-recent-color'); + var $currentButton = $button.closest('.note-color').find('.note-current-color-button'); + + $color.css(key, value); + $currentButton.attr('data-' + eventName, value); + context.invoke('editor.' + eventName, value); + } + } + }) + ] + }).render(); + }); + + context.memo('button.ul', function () { + return ui.button({ + contents: ui.icon(options.icons.unorderedlist), + tooltip: lang.lists.unordered + representShortcut('insertUnorderedList'), + click: context.createInvokeHandler('editor.insertUnorderedList') + }).render(); + }); + + context.memo('button.ol', function () { + return ui.button({ + contents: ui.icon(options.icons.orderedlist), + tooltip: lang.lists.ordered + representShortcut('insertOrderedList'), + click: context.createInvokeHandler('editor.insertOrderedList') + }).render(); + }); + + var justifyLeft = ui.button({ + contents: ui.icon(options.icons.alignLeft), + tooltip: lang.paragraph.left + representShortcut('justifyLeft'), + click: context.createInvokeHandler('editor.justifyLeft') + }); + + var justifyCenter = ui.button({ + contents: ui.icon(options.icons.alignCenter), + tooltip: lang.paragraph.center + representShortcut('justifyCenter'), + click: context.createInvokeHandler('editor.justifyCenter') + }); + + var justifyRight = ui.button({ + contents: ui.icon(options.icons.alignRight), + tooltip: lang.paragraph.right + representShortcut('justifyRight'), + click: context.createInvokeHandler('editor.justifyRight') + }); + + var justifyFull = ui.button({ + contents: ui.icon(options.icons.alignJustify), + tooltip: lang.paragraph.justify + representShortcut('justifyFull'), + click: context.createInvokeHandler('editor.justifyFull') + }); + + var outdent = ui.button({ + contents: ui.icon(options.icons.outdent), + tooltip: lang.paragraph.outdent + representShortcut('outdent'), + click: context.createInvokeHandler('editor.outdent') + }); + + var indent = ui.button({ + contents: ui.icon(options.icons.indent), + tooltip: lang.paragraph.indent + representShortcut('indent'), + click: context.createInvokeHandler('editor.indent') + }); + + context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render')); + context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render')); + context.memo('button.justifyRight', func.invoke(justifyRight, 'render')); + context.memo('button.justifyFull', func.invoke(justifyFull, 'render')); + context.memo('button.outdent', func.invoke(outdent, 'render')); + context.memo('button.indent', func.invoke(indent, 'render')); + + context.memo('button.paragraph', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: ui.icon(options.icons.alignLeft) + ' ' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.paragraph.paragraph, + data: { + toggle: 'dropdown' + } + }), + ui.dropdown([ + ui.buttonGroup({ + className: 'note-align', + children: [justifyLeft, justifyCenter, justifyRight, justifyFull] + }), + ui.buttonGroup({ + className: 'note-list', + children: [outdent, indent] + }) + ]) + ]).render(); + }); + + context.memo('button.height', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: ui.icon(options.icons.textHeight) + ' ' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.font.height, + data: { + toggle: 'dropdown' + } + }), + ui.dropdownCheck({ + items: options.lineHeights, + checkClassName: options.icons.menuCheck, + className: 'dropdown-line-height', + click: context.createInvokeHandler('editor.lineHeight') + }) + ]).render(); + }); + + context.memo('button.table', function () { + return ui.buttonGroup([ + ui.button({ + className: 'dropdown-toggle', + contents: ui.icon(options.icons.table) + ' ' + ui.icon(options.icons.caret, 'span'), + tooltip: lang.table.table, + data: { + toggle: 'dropdown' + } + }), + ui.dropdown({ + className: 'note-table', + items: [ + '<div class="note-dimension-picker">', + ' <div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"/>', + ' <div class="note-dimension-picker-highlighted"/>', + ' <div class="note-dimension-picker-unhighlighted"/>', + '</div>', + '<div class="note-dimension-display">1 x 1</div>' + ].join('') + }) + ], { + callback: function ($node) { + var $catcher = $node.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: options.insertTableMaxSize.col + 'em', + height: options.insertTableMaxSize.row + 'em' + }).mousedown(context.createInvokeHandler('editor.insertTable')) + .on('mousemove', self.tableMoveHandler); + } + }).render(); + }); + + context.memo('button.link', function () { + return ui.button({ + contents: ui.icon(options.icons.link), + tooltip: lang.link.link + representShortcut('linkDialog.show'), + click: context.createInvokeHandler('linkDialog.show') + }).render(); + }); + + context.memo('button.picture', function () { + return ui.button({ + contents: ui.icon(options.icons.picture), + tooltip: lang.image.image, + click: context.createInvokeHandler('imageDialog.show') + }).render(); + }); + + context.memo('button.video', function () { + return ui.button({ + contents: ui.icon(options.icons.video), + tooltip: lang.video.video, + click: context.createInvokeHandler('videoDialog.show') + }).render(); + }); + + context.memo('button.hr', function () { + return ui.button({ + contents: ui.icon(options.icons.minus), + tooltip: lang.hr.insert + representShortcut('insertHorizontalRule'), + click: context.createInvokeHandler('editor.insertHorizontalRule') + }).render(); + }); + + context.memo('button.fullscreen', function () { + return ui.button({ + className: 'btn-fullscreen', + contents: ui.icon(options.icons.arrowsAlt), + tooltip: lang.options.fullscreen, + click: context.createInvokeHandler('fullscreen.toggle') + }).render(); + }); + + context.memo('button.codeview', function () { + return ui.button({ + className: 'btn-codeview', + contents: ui.icon(options.icons.code), + tooltip: lang.options.codeview, + click: context.createInvokeHandler('codeview.toggle') + }).render(); + }); + + context.memo('button.redo', function () { + return ui.button({ + contents: ui.icon(options.icons.redo), + tooltip: lang.history.redo + representShortcut('redo'), + click: context.createInvokeHandler('editor.redo') + }).render(); + }); + + context.memo('button.undo', function () { + return ui.button({ + contents: ui.icon(options.icons.undo), + tooltip: lang.history.undo + representShortcut('undo'), + click: context.createInvokeHandler('editor.undo') + }).render(); + }); + + context.memo('button.help', function () { + return ui.button({ + contents: ui.icon(options.icons.question), + tooltip: lang.options.help, + click: context.createInvokeHandler('helpDialog.show') + }).render(); + }); + }; + + /** + * image : [ + * ['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']], + * ['float', ['floatLeft', 'floatRight', 'floatNone' ]], + * ['remove', ['removeMedia']] + * ], + */ + this.addImagePopoverButtons = function () { + // Image Size Buttons + context.memo('button.imageSize100', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">100%</span>', + tooltip: lang.image.resizeFull, + click: context.createInvokeHandler('editor.resize', '1') + }).render(); + }); + context.memo('button.imageSize50', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">50%</span>', + tooltip: lang.image.resizeHalf, + click: context.createInvokeHandler('editor.resize', '0.5') + }).render(); + }); + context.memo('button.imageSize25', function () { + return ui.button({ + contents: '<span class="note-fontsize-10">25%</span>', + tooltip: lang.image.resizeQuarter, + click: context.createInvokeHandler('editor.resize', '0.25') + }).render(); + }); + + // Float Buttons + context.memo('button.floatLeft', function () { + return ui.button({ + contents: ui.icon(options.icons.alignLeft), + tooltip: lang.image.floatLeft, + click: context.createInvokeHandler('editor.floatMe', 'left') + }).render(); + }); + + context.memo('button.floatRight', function () { + return ui.button({ + contents: ui.icon(options.icons.alignRight), + tooltip: lang.image.floatRight, + click: context.createInvokeHandler('editor.floatMe', 'right') + }).render(); + }); + + context.memo('button.floatNone', function () { + return ui.button({ + contents: ui.icon(options.icons.alignJustify), + tooltip: lang.image.floatNone, + click: context.createInvokeHandler('editor.floatMe', 'none') + }).render(); + }); + + // Remove Buttons + context.memo('button.removeMedia', function () { + return ui.button({ + contents: ui.icon(options.icons.trash), + tooltip: lang.image.remove, + click: context.createInvokeHandler('editor.removeMedia') + }).render(); + }); + }; + + this.addLinkPopoverButtons = function () { + context.memo('button.linkDialogShow', function () { + return ui.button({ + contents: ui.icon(options.icons.link), + tooltip: lang.link.edit, + click: context.createInvokeHandler('linkDialog.show') + }).render(); + }); + + context.memo('button.unlink', function () { + return ui.button({ + contents: ui.icon(options.icons.unlink), + tooltip: lang.link.unlink, + click: context.createInvokeHandler('editor.unlink') + }).render(); + }); + }; + + this.build = function ($container, groups) { + for (var groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) { + var group = groups[groupIdx]; + var groupName = group[0]; + var buttons = group[1]; + + var $group = ui.buttonGroup({ + className: 'note-' + groupName + }).render(); + + for (var idx = 0, len = buttons.length; idx < len; idx++) { + var button = context.memo('button.' + buttons[idx]); + if (button) { + $group.append(typeof button === 'function' ? button(context) : button); + } + } + $group.appendTo($container); + } + }; + + this.updateCurrentStyle = function () { + var styleInfo = context.invoke('editor.currentStyle'); + this.updateBtnStates({ + '.note-btn-bold': function () { + return styleInfo['font-bold'] === 'bold'; + }, + '.note-btn-italic': function () { + return styleInfo['font-italic'] === 'italic'; + }, + '.note-btn-underline': function () { + return styleInfo['font-underline'] === 'underline'; + }, + '.note-btn-subscript': function () { + return styleInfo['font-subscript'] === 'subscript'; + }, + '.note-btn-superscript': function () { + return styleInfo['font-superscript'] === 'superscript'; + }, + '.note-btn-strikethrough': function () { + return styleInfo['font-strikethrough'] === 'strikethrough'; + } + }); + + if (styleInfo['font-family']) { + var fontNames = styleInfo['font-family'].split(',').map(function (name) { + return name.replace(/[\'\"]/g, '') + .replace(/\s+$/, '') + .replace(/^\s+/, ''); + }); + var fontName = list.find(fontNames, self.isFontInstalled); + + $toolbar.find('.dropdown-fontname li a').each(function () { + // always compare string to avoid creating another func. + var isChecked = ($(this).data('value') + '') === (fontName + ''); + this.className = isChecked ? 'checked' : ''; + }); + $toolbar.find('.note-current-fontname').text(fontName); + } + + if (styleInfo['font-size']) { + var fontSize = styleInfo['font-size']; + $toolbar.find('.dropdown-fontsize li a').each(function () { + // always compare with string to avoid creating another func. + var isChecked = ($(this).data('value') + '') === (fontSize + ''); + this.className = isChecked ? 'checked' : ''; + }); + $toolbar.find('.note-current-fontsize').text(fontSize); + } + + if (styleInfo['line-height']) { + var lineHeight = styleInfo['line-height']; + $toolbar.find('.dropdown-line-height li a').each(function () { + // always compare with string to avoid creating another func. + var isChecked = ($(this).data('value') + '') === (lineHeight + ''); + this.className = isChecked ? 'checked' : ''; + }); + } + }; + + this.updateBtnStates = function (infos) { + $.each(infos, function (selector, pred) { + ui.toggleBtnActive($toolbar.find(selector), pred()); + }); + }; + + this.tableMoveHandler = function (event) { + var PX_PER_EM = 18; + var $picker = $(event.target.parentNode); // target is mousecatcher + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + + var posOffset; + // HTML5 with jQuery - e.offsetX is undefined in Firefox + if (event.offsetX === undefined) { + var posCatcher = $(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + + $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' }); + $catcher.data('value', dim.c + 'x' + dim.r); + + if (3 < dim.c && dim.c < options.insertTableMaxSize.col) { + $unhighlighted.css({ width: dim.c + 1 + 'em'}); + } + + if (3 < dim.r && dim.r < options.insertTableMaxSize.row) { + $unhighlighted.css({ height: dim.r + 1 + 'em'}); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + }; + }; + + var Toolbar = function (context) { + var ui = $.summernote.ui; + + var $note = context.layoutInfo.note; + var $toolbar = context.layoutInfo.toolbar; + var options = context.options; + + this.shouldInitialize = function () { + return !options.airMode; + }; + + this.initialize = function () { + options.toolbar = options.toolbar || []; + + if (!options.toolbar.length) { + $toolbar.hide(); + } else { + context.invoke('buttons.build', $toolbar, options.toolbar); + } + + if (options.toolbarContainer) { + $toolbar.appendTo(options.toolbarContainer); + } + + $note.on('summernote.keyup summernote.mouseup summernote.change', function () { + context.invoke('buttons.updateCurrentStyle'); + }); + + context.invoke('buttons.updateCurrentStyle'); + }; + + this.destroy = function () { + $toolbar.children().remove(); + }; + + this.updateFullscreen = function (isFullscreen) { + ui.toggleBtnActive($toolbar.find('.btn-fullscreen'), isFullscreen); + }; + + this.updateCodeview = function (isCodeview) { + ui.toggleBtnActive($toolbar.find('.btn-codeview'), isCodeview); + if (isCodeview) { + this.deactivate(); + } else { + this.activate(); + } + }; + + this.activate = function (isIncludeCodeview) { + var $btn = $toolbar.find('button'); + if (!isIncludeCodeview) { + $btn = $btn.not('.btn-codeview'); + } + ui.toggleBtn($btn, true); + }; + + this.deactivate = function (isIncludeCodeview) { + var $btn = $toolbar.find('button'); + if (!isIncludeCodeview) { + $btn = $btn.not('.btn-codeview'); + } + ui.toggleBtn($btn, false); + }; + }; + + var LinkDialog = function (context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + this.initialize = function () { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var body = '<div class="form-group">' + + '<label>' + lang.link.textToDisplay + '</label>' + + '<input class="note-link-text form-control" type="text" />' + + '</div>' + + '<div class="form-group">' + + '<label>' + lang.link.url + '</label>' + + '<input class="note-link-url form-control" type="text" value="http://" />' + + '</div>' + + (!options.disableLinkTarget ? + '<div class="checkbox">' + + '<label>' + '<input type="checkbox" checked> ' + lang.link.openInNewWindow + '</label>' + + '</div>' : '' + ); + var footer = '<button href="#" class="btn btn-primary note-link-btn disabled" disabled>' + lang.link.insert + '</button>'; + + this.$dialog = ui.dialog({ + className: 'link-dialog', + title: lang.link.insert, + fade: options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + }; + + this.destroy = function () { + ui.hideDialog(this.$dialog); + this.$dialog.remove(); + }; + + this.bindEnterKey = function ($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + /** + * toggle update button + */ + this.toggleLinkBtn = function ($linkBtn, $linkText, $linkUrl) { + ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + }; + + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {Object} linkInfo + * @return {Promise} + */ + this.showLinkDialog = function (linkInfo) { + return $.Deferred(function (deferred) { + var $linkText = self.$dialog.find('.note-link-text'), + $linkUrl = self.$dialog.find('.note-link-url'), + $linkBtn = self.$dialog.find('.note-link-btn'), + $openInNewWindow = self.$dialog.find('input[type=checkbox]'); + + ui.onDialogShown(self.$dialog, function () { + context.triggerEvent('dialog.shown'); + + // if no url was given, copy text to url + if (!linkInfo.url) { + linkInfo.url = linkInfo.text; + } + + $linkText.val(linkInfo.text); + + var handleLinkTextUpdate = function () { + self.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + // if linktext was modified by keyup, + // stop cloning text from linkUrl + linkInfo.text = $linkText.val(); + }; + + $linkText.on('input', handleLinkTextUpdate).on('paste', function () { + setTimeout(handleLinkTextUpdate, 0); + }); + + var handleLinkUrlUpdate = function () { + self.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + // display same link on `Text to display` input + // when create a new link + if (!linkInfo.text) { + $linkText.val($linkUrl.val()); + } + }; + + $linkUrl.on('input', handleLinkUrlUpdate).on('paste', function () { + setTimeout(handleLinkUrlUpdate, 0); + }).val(linkInfo.url).trigger('focus'); + + self.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + self.bindEnterKey($linkUrl, $linkBtn); + self.bindEnterKey($linkText, $linkBtn); + + $openInNewWindow.prop('checked', linkInfo.isNewWindow); + + $linkBtn.one('click', function (event) { + event.preventDefault(); + + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + isNewWindow: $openInNewWindow.is(':checked') + }); + self.$dialog.modal('hide'); + }); + }); + + ui.onDialogHidden(self.$dialog, function () { + // detach events + $linkText.off('input paste keypress'); + $linkUrl.off('input paste keypress'); + $linkBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }).promise(); + }; + + /** + * @param {Object} layoutInfo + */ + this.show = function () { + var linkInfo = context.invoke('editor.getLinkInfo'); + + context.invoke('editor.saveRange'); + this.showLinkDialog(linkInfo).then(function (linkInfo) { + context.invoke('editor.restoreRange'); + context.invoke('editor.createLink', linkInfo); + }).fail(function () { + context.invoke('editor.restoreRange'); + }); + }; + context.memo('help.linkDialog.show', options.langInfo.help['linkDialog.show']); + }; + + var LinkPopover = function (context) { + var self = this; + var ui = $.summernote.ui; + + var options = context.options; + + this.events = { + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function () { + self.update(); + }, + 'summernote.dialog.shown': function () { + self.hide(); + } + }; + + this.shouldInitialize = function () { + return !list.isEmpty(options.popover.link); + }; + + this.initialize = function () { + this.$popover = ui.popover({ + className: 'note-link-popover', + callback: function ($node) { + var $content = $node.find('.popover-content'); + $content.prepend('<span><a target="_blank"></a>&nbsp;</span>'); + } + }).render().appendTo('body'); + var $content = this.$popover.find('.popover-content'); + + context.invoke('buttons.build', $content, options.popover.link); + }; + + this.destroy = function () { + this.$popover.remove(); + }; + + this.update = function () { + // Prevent focusing on editable when invoke('code') is executed + if (!context.invoke('editor.hasFocus')) { + this.hide(); + return; + } + + var rng = context.invoke('editor.createRange'); + if (rng.isCollapsed() && rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + var href = $(anchor).attr('href'); + this.$popover.find('a').attr('href', href).html(href); + + var pos = dom.posFromPlaceholder(anchor); + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + }; + + this.hide = function () { + this.$popover.hide(); + }; + }; + + var ImageDialog = function (context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + this.initialize = function () { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var imageLimitation = ''; + if (options.maximumImageFileSize) { + var unit = Math.floor(Math.log(options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + + ' ' + ' KMGTP'[unit] + 'B'; + imageLimitation = '<small>' + lang.image.maximumFileSize + ' : ' + readableSize + '</small>'; + } + + var body = '<div class="form-group note-group-select-from-files">' + + '<label>' + lang.image.selectFromFiles + '</label>' + + '<input class="note-image-input form-control" type="file" name="files" accept="image/*" multiple="multiple" />' + + imageLimitation + + '</div>' + + '<div class="form-group note-group-image-url" style="overflow:auto;">' + + '<label>' + lang.image.url + '</label>' + + '<input class="note-image-url form-control col-md-12" type="text" />' + + '</div>'; + var footer = '<button href="#" class="btn btn-primary note-image-btn disabled" disabled>' + lang.image.insert + '</button>'; + + this.$dialog = ui.dialog({ + title: lang.image.insert, + fade: options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + }; + + this.destroy = function () { + ui.hideDialog(this.$dialog); + this.$dialog.remove(); + }; + + this.bindEnterKey = function ($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + this.show = function () { + context.invoke('editor.saveRange'); + this.showImageDialog().then(function (data) { + // [workaround] hide dialog before restore range for IE range focus + ui.hideDialog(self.$dialog); + context.invoke('editor.restoreRange'); + + if (typeof data === 'string') { // image url + context.invoke('editor.insertImage', data); + } else { // array of files + context.invoke('editor.insertImagesOrCallback', data); + } + }).fail(function () { + context.invoke('editor.restoreRange'); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showImageDialog = function () { + return $.Deferred(function (deferred) { + var $imageInput = self.$dialog.find('.note-image-input'), + $imageUrl = self.$dialog.find('.note-image-url'), + $imageBtn = self.$dialog.find('.note-image-btn'); + + ui.onDialogShown(self.$dialog, function () { + context.triggerEvent('dialog.shown'); + + // Cloning imageInput to clear element. + $imageInput.replaceWith($imageInput.clone() + .on('change', function () { + deferred.resolve(this.files || this.value); + }) + .val('') + ); + + $imageBtn.click(function (event) { + event.preventDefault(); + + deferred.resolve($imageUrl.val()); + }); + + $imageUrl.on('keyup paste', function () { + var url = $imageUrl.val(); + ui.toggleBtn($imageBtn, url); + }).val('').trigger('focus'); + self.bindEnterKey($imageUrl, $imageBtn); + }); + + ui.onDialogHidden(self.$dialog, function () { + $imageInput.off('change'); + $imageUrl.off('keyup paste keypress'); + $imageBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + }; + + var ImagePopover = function (context) { + var ui = $.summernote.ui; + + var options = context.options; + + this.shouldInitialize = function () { + return !list.isEmpty(options.popover.image); + }; + + this.initialize = function () { + this.$popover = ui.popover({ + className: 'note-image-popover' + }).render().appendTo('body'); + var $content = this.$popover.find('.popover-content'); + + context.invoke('buttons.build', $content, options.popover.image); + }; + + this.destroy = function () { + this.$popover.remove(); + }; + + this.update = function (target) { + if (dom.isImg(target)) { + var pos = dom.posFromPlaceholder(target); + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + }; + + this.hide = function () { + this.$popover.hide(); + }; + }; + + var VideoDialog = function (context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + this.initialize = function () { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var body = '<div class="form-group row-fluid">' + + '<label>' + lang.video.url + ' <small class="text-muted">' + lang.video.providers + '</small></label>' + + '<input class="note-video-url form-control span12" type="text" />' + + '</div>'; + var footer = '<button href="#" class="btn btn-primary note-video-btn disabled" disabled>' + lang.video.insert + '</button>'; + + this.$dialog = ui.dialog({ + title: lang.video.insert, + fade: options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + }; + + this.destroy = function () { + ui.hideDialog(this.$dialog); + this.$dialog.remove(); + }; + + this.bindEnterKey = function ($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + this.createVideoNode = function (url) { + // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm) + var ytRegExp = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/; + var ytMatch = url.match(ytRegExp); + + var igRegExp = /(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/; + var igMatch = url.match(igRegExp); + + var vRegExp = /\/\/vine\.co\/v\/([a-zA-Z0-9]+)/; + var vMatch = url.match(vRegExp); + + var vimRegExp = /\/\/(player\.)?vimeo\.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/; + var vimMatch = url.match(vimRegExp); + + var dmRegExp = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/; + var dmMatch = url.match(dmRegExp); + + var youkuRegExp = /\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/; + var youkuMatch = url.match(youkuRegExp); + + var mp4RegExp = /^.+.(mp4|m4v)$/; + var mp4Match = url.match(mp4RegExp); + + var oggRegExp = /^.+.(ogg|ogv)$/; + var oggMatch = url.match(oggRegExp); + + var webmRegExp = /^.+.(webm)$/; + var webmMatch = url.match(webmRegExp); + + var $video; + if (ytMatch && ytMatch[1].length === 11) { + var youtubeId = ytMatch[1]; + $video = $('<iframe>') + .attr('frameborder', 0) + .attr('src', '//www.youtube.com/embed/' + youtubeId) + .attr('width', '640').attr('height', '360'); + } else if (igMatch && igMatch[0].length) { + $video = $('<iframe>') + .attr('frameborder', 0) + .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/') + .attr('width', '612').attr('height', '710') + .attr('scrolling', 'no') + .attr('allowtransparency', 'true'); + } else if (vMatch && vMatch[0].length) { + $video = $('<iframe>') + .attr('frameborder', 0) + .attr('src', vMatch[0] + '/embed/simple') + .attr('width', '600').attr('height', '600') + .attr('class', 'vine-embed'); + } else if (vimMatch && vimMatch[3].length) { + $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>') + .attr('frameborder', 0) + .attr('src', '//player.vimeo.com/video/' + vimMatch[3]) + .attr('width', '640').attr('height', '360'); + } else if (dmMatch && dmMatch[2].length) { + $video = $('<iframe>') + .attr('frameborder', 0) + .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2]) + .attr('width', '640').attr('height', '360'); + } else if (youkuMatch && youkuMatch[1].length) { + $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>') + .attr('frameborder', 0) + .attr('height', '498') + .attr('width', '510') + .attr('src', '//player.youku.com/embed/' + youkuMatch[1]); + } else if (mp4Match || oggMatch || webmMatch) { + $video = $('<video controls>') + .attr('src', url) + .attr('width', '640').attr('height', '360'); + } else { + // this is not a known video link. Now what, Cat? Now what? + return false; + } + + $video.addClass('note-video-clip'); + + return $video[0]; + }; + + this.show = function () { + var text = context.invoke('editor.getSelectedText'); + context.invoke('editor.saveRange'); + this.showVideoDialog(text).then(function (url) { + // [workaround] hide dialog before restore range for IE range focus + ui.hideDialog(self.$dialog); + context.invoke('editor.restoreRange'); + + // build node + var $node = self.createVideoNode(url); + + if ($node) { + // insert video node + context.invoke('editor.insertNode', $node); + } + }).fail(function () { + context.invoke('editor.restoreRange'); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showVideoDialog = function (text) { + return $.Deferred(function (deferred) { + var $videoUrl = self.$dialog.find('.note-video-url'), + $videoBtn = self.$dialog.find('.note-video-btn'); + + ui.onDialogShown(self.$dialog, function () { + context.triggerEvent('dialog.shown'); + + $videoUrl.val(text).on('input', function () { + ui.toggleBtn($videoBtn, $videoUrl.val()); + }).trigger('focus'); + + $videoBtn.click(function (event) { + event.preventDefault(); + + deferred.resolve($videoUrl.val()); + }); + + self.bindEnterKey($videoUrl, $videoBtn); + }); + + ui.onDialogHidden(self.$dialog, function () { + $videoUrl.off('input'); + $videoBtn.off('click'); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + ui.showDialog(self.$dialog); + }); + }; + }; + + var HelpDialog = function (context) { + var self = this; + var ui = $.summernote.ui; + + var $editor = context.layoutInfo.editor; + var options = context.options; + var lang = options.langInfo; + + this.createShortCutList = function () { + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + return Object.keys(keyMap).map(function (key) { + var command = keyMap[key]; + var $row = $('<div><div class="help-list-item"/></div>'); + $row.append($('<label><kbd>' + key + '</kdb></label>').css({ + 'width': 180, + 'margin-right': 10 + })).append($('<span/>').html(context.memo('help.' + command) || command)); + return $row.html(); + }).join(''); + }; + + this.initialize = function () { + var $container = options.dialogsInBody ? $(document.body) : $editor; + + var body = [ + '<p class="text-center">', + '<a href="http://summernote.org/" target="_blank">Summernote 0.8.2</a> · ', + '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', + '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', + '</p>' + ].join(''); + + this.$dialog = ui.dialog({ + title: lang.options.help, + fade: options.dialogsFade, + body: this.createShortCutList(), + footer: body, + callback: function ($node) { + $node.find('.modal-body').css({ + 'max-height': 300, + 'overflow': 'scroll' + }); + } + }).render().appendTo($container); + }; + + this.destroy = function () { + ui.hideDialog(this.$dialog); + this.$dialog.remove(); + }; + + /** + * show help dialog + * + * @return {Promise} + */ + this.showHelpDialog = function () { + return $.Deferred(function (deferred) { + ui.onDialogShown(self.$dialog, function () { + context.triggerEvent('dialog.shown'); + deferred.resolve(); + }); + ui.showDialog(self.$dialog); + }).promise(); + }; + + this.show = function () { + context.invoke('editor.saveRange'); + this.showHelpDialog().then(function () { + context.invoke('editor.restoreRange'); + }); + }; + }; + + var AirPopover = function (context) { + var self = this; + var ui = $.summernote.ui; + + var options = context.options; + + var AIR_MODE_POPOVER_X_OFFSET = 20; + + this.events = { + 'summernote.keyup summernote.mouseup summernote.scroll': function () { + self.update(); + }, + 'summernote.change summernote.dialog.shown': function () { + self.hide(); + }, + 'summernote.focusout': function (we, e) { + // [workaround] Firefox doesn't support relatedTarget on focusout + // - Ignore hide action on focus out in FF. + if (agent.isFF) { + return; + } + + if (!e.relatedTarget || !dom.ancestor(e.relatedTarget, func.eq(self.$popover[0]))) { + self.hide(); + } + } + }; + + this.shouldInitialize = function () { + return options.airMode && !list.isEmpty(options.popover.air); + }; + + this.initialize = function () { + this.$popover = ui.popover({ + className: 'note-air-popover' + }).render().appendTo('body'); + var $content = this.$popover.find('.popover-content'); + + context.invoke('buttons.build', $content, options.popover.air); + }; + + this.destroy = function () { + this.$popover.remove(); + }; + + this.update = function () { + var styleInfo = context.invoke('editor.currentStyle'); + if (styleInfo.range && !styleInfo.range.isCollapsed()) { + var rect = list.last(styleInfo.range.getClientRects()); + if (rect) { + var bnd = func.rect2bnd(rect); + this.$popover.css({ + display: 'block', + left: Math.max(bnd.left + bnd.width / 2, 0) - AIR_MODE_POPOVER_X_OFFSET, + top: bnd.top + bnd.height + }); + } + } else { + this.hide(); + } + }; + + this.hide = function () { + this.$popover.hide(); + }; + }; + + var HintPopover = function (context) { + var self = this; + var ui = $.summernote.ui; + + var POPOVER_DIST = 5; + var hint = context.options.hint || []; + var direction = context.options.hintDirection || 'bottom'; + var hints = $.isArray(hint) ? hint : [hint]; + + this.events = { + 'summernote.keyup': function (we, e) { + if (!e.isDefaultPrevented()) { + self.handleKeyup(e); + } + }, + 'summernote.keydown': function (we, e) { + self.handleKeydown(e); + }, + 'summernote.dialog.shown': function () { + self.hide(); + } + }; + + this.shouldInitialize = function () { + return hints.length > 0; + }; + + this.initialize = function () { + this.lastWordRange = null; + this.$popover = ui.popover({ + className: 'note-hint-popover', + hideArrow: true, + direction: '' + }).render().appendTo('body'); + + this.$popover.hide(); + + this.$content = this.$popover.find('.popover-content'); + + this.$content.on('click', '.note-hint-item', function () { + self.$content.find('.active').removeClass('active'); + $(this).addClass('active'); + self.replace(); + }); + }; + + this.destroy = function () { + this.$popover.remove(); + }; + + this.selectItem = function ($item) { + this.$content.find('.active').removeClass('active'); + $item.addClass('active'); + + this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2); + }; + + this.moveDown = function () { + var $current = this.$content.find('.note-hint-item.active'); + var $next = $current.next(); + + if ($next.length) { + this.selectItem($next); + } else { + var $nextGroup = $current.parent().next(); + + if (!$nextGroup.length) { + $nextGroup = this.$content.find('.note-hint-group').first(); + } + + this.selectItem($nextGroup.find('.note-hint-item').first()); + } + }; + + this.moveUp = function () { + var $current = this.$content.find('.note-hint-item.active'); + var $prev = $current.prev(); + + if ($prev.length) { + this.selectItem($prev); + } else { + var $prevGroup = $current.parent().prev(); + + if (!$prevGroup.length) { + $prevGroup = this.$content.find('.note-hint-group').last(); + } + + this.selectItem($prevGroup.find('.note-hint-item').last()); + } + }; + + this.replace = function () { + var $item = this.$content.find('.note-hint-item.active'); + + if ($item.length) { + var node = this.nodeFromItem($item); + this.lastWordRange.insertNode(node); + range.createFromNode(node).collapse().select(); + + this.lastWordRange = null; + this.hide(); + context.invoke('editor.focus'); + } + + }; + + this.nodeFromItem = function ($item) { + var hint = hints[$item.data('index')]; + var item = $item.data('item'); + var node = hint.content ? hint.content(item) : item; + if (typeof node === 'string') { + node = dom.createText(node); + } + return node; + }; + + this.createItemTemplates = function (hintIdx, items) { + var hint = hints[hintIdx]; + return items.map(function (item, idx) { + var $item = $('<div class="note-hint-item"/>'); + $item.append(hint.template ? hint.template(item) : item + ''); + $item.data({ + 'index': hintIdx, + 'item': item + }); + + if (hintIdx === 0 && idx === 0) { + $item.addClass('active'); + } + return $item; + }); + }; + + this.handleKeydown = function (e) { + if (!this.$popover.is(':visible')) { + return; + } + + if (e.keyCode === key.code.ENTER) { + e.preventDefault(); + this.replace(); + } else if (e.keyCode === key.code.UP) { + e.preventDefault(); + this.moveUp(); + } else if (e.keyCode === key.code.DOWN) { + e.preventDefault(); + this.moveDown(); + } + }; + + this.searchKeyword = function (index, keyword, callback) { + var hint = hints[index]; + if (hint && hint.match.test(keyword) && hint.search) { + var matches = hint.match.exec(keyword); + hint.search(matches[1], callback); + } else { + callback(); + } + }; + + this.createGroup = function (idx, keyword) { + var $group = $('<div class="note-hint-group note-hint-group-' + idx + '"/>'); + this.searchKeyword(idx, keyword, function (items) { + items = items || []; + if (items.length) { + $group.html(self.createItemTemplates(idx, items)); + self.show(); + } + }); + + return $group; + }; + + this.handleKeyup = function (e) { + if (list.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) { + if (e.keyCode === key.code.ENTER) { + if (this.$popover.is(':visible')) { + return; + } + } + } else { + var wordRange = context.invoke('editor.createRange').getWordRange(); + var keyword = wordRange.toString(); + if (hints.length && keyword) { + this.$content.empty(); + + var bnd = func.rect2bnd(list.last(wordRange.getClientRects())); + if (bnd) { + + this.$popover.hide(); + + this.lastWordRange = wordRange; + + hints.forEach(function (hint, idx) { + if (hint.match.test(keyword)) { + self.createGroup(idx, keyword).appendTo(self.$content); + } + }); + + // set position for popover after group is created + if (direction === 'top') { + this.$popover.css({ + left: bnd.left, + top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST + }); + } else { + this.$popover.css({ + left: bnd.left, + top: bnd.top + bnd.height + POPOVER_DIST + }); + } + + } + } else { + this.hide(); + } + } + }; + + this.show = function () { + this.$popover.show(); + }; + + this.hide = function () { + this.$popover.hide(); + }; + }; + + + $.summernote = $.extend($.summernote, { + version: '0.8.2', + ui: ui, + dom: dom, + + plugins: {}, + + options: { + modules: { + 'editor': Editor, + 'clipboard': Clipboard, + 'dropzone': Dropzone, + 'codeview': Codeview, + 'statusbar': Statusbar, + 'fullscreen': Fullscreen, + 'handle': Handle, + // FIXME: HintPopover must be front of autolink + // - Script error about range when Enter key is pressed on hint popover + 'hintPopover': HintPopover, + 'autoLink': AutoLink, + 'autoSync': AutoSync, + 'placeholder': Placeholder, + 'buttons': Buttons, + 'toolbar': Toolbar, + 'linkDialog': LinkDialog, + 'linkPopover': LinkPopover, + 'imageDialog': ImageDialog, + 'imagePopover': ImagePopover, + 'videoDialog': VideoDialog, + 'helpDialog': HelpDialog, + 'airPopover': AirPopover + }, + + buttons: {}, + + lang: 'en-US', + + // toolbar + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + ['fontname', ['fontname']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['table', ['table']], + ['insert', ['link', 'picture', 'video']], + ['view', ['fullscreen', 'codeview', 'help']] + ], + + // popover + popover: { + image: [ + ['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']], + ['float', ['floatLeft', 'floatRight', 'floatNone']], + ['remove', ['removeMedia']] + ], + link: [ + ['link', ['linkDialogShow', 'unlink']] + ], + air: [ + ['color', ['color']], + ['font', ['bold', 'underline', 'clear']], + ['para', ['ul', 'paragraph']], + ['table', ['table']], + ['insert', ['link', 'picture']] + ] + }, + + // air mode: inline editor + airMode: false, + + width: null, + height: null, + + focus: false, + tabSize: 4, + styleWithSpan: true, + shortcuts: true, + textareaAutoSync: true, + direction: null, + + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + + fontNames: [ + 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', + 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande', + 'Tahoma', 'Times New Roman', 'Verdana' + ], + + fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'], + + // pallete colors(n x n) + colors: [ + ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'], + ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'], + ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'], + ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'], + ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'], + ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'], + ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'], + ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'] + ], + + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + + tableClassName: 'table table-bordered', + + insertTableMaxSize: { + col: 10, + row: 10 + }, + + dialogsInBody: false, + dialogsFade: false, + + maximumImageFileSize: null, + + callbacks: { + onInit: null, + onFocus: null, + onBlur: null, + onEnter: null, + onKeyup: null, + onKeydown: null, + onImageUpload: null, + onImageUploadError: null + }, + + codemirror: { + mode: 'text/html', + htmlMode: true, + lineNumbers: true + }, + + keyMap: { + pc: { + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'linkDialog.show' + }, + + mac: { + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'linkDialog.show' + } + }, + icons: { + 'align': 'note-icon-align', + 'alignCenter': 'note-icon-align-center', + 'alignJustify': 'note-icon-align-justify', + 'alignLeft': 'note-icon-align-left', + 'alignRight': 'note-icon-align-right', + 'indent': 'note-icon-align-indent', + 'outdent': 'note-icon-align-outdent', + 'arrowsAlt': 'note-icon-arrows-alt', + 'bold': 'note-icon-bold', + 'caret': 'note-icon-caret', + 'circle': 'note-icon-circle', + 'close': 'note-icon-close', + 'code': 'note-icon-code', + 'eraser': 'note-icon-eraser', + 'font': 'note-icon-font', + 'frame': 'note-icon-frame', + 'italic': 'note-icon-italic', + 'link': 'note-icon-link', + 'unlink': 'note-icon-chain-broken', + 'magic': 'note-icon-magic', + 'menuCheck': 'note-icon-check', + 'minus': 'note-icon-minus', + 'orderedlist': 'note-icon-orderedlist', + 'pencil': 'note-icon-pencil', + 'picture': 'note-icon-picture', + 'question': 'note-icon-question', + 'redo': 'note-icon-redo', + 'square': 'note-icon-square', + 'strikethrough': 'note-icon-strikethrough', + 'subscript': 'note-icon-subscript', + 'superscript': 'note-icon-superscript', + 'table': 'note-icon-table', + 'textHeight': 'note-icon-text-height', + 'trash': 'note-icon-trash', + 'underline': 'note-icon-underline', + 'undo': 'note-icon-undo', + 'unorderedlist': 'note-icon-unorderedlist', + 'video': 'note-icon-video' + } + } + }); + +})); diff --git a/plugins/summernote/summernote.min.js b/plugins/summernote/summernote.min.js new file mode 100644 index 0000000..b68c5f3 --- /dev/null +++ b/plugins/summernote/summernote.min.js @@ -0,0 +1,4 @@ +/*! Summernote v0.8.2 | (c) 2013-2015 Alan Hong and other contributors | MIT license */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(window.jQuery)}(function($){"use strict";var func=function(){var a=function(a){return function(b){return a===b}},b=function(a,b){return a===b},c=function(a){return function(b,c){return b[a]===c[a]}},d=function(){return!0},e=function(){return!1},f=function(a){return function(){return!a.apply(a,arguments)}},g=function(a,b){return function(c){return a(c)&&b(c)}},h=function(a){return a},i=function(a,b){return function(){return a[b].apply(a,arguments)}},j=0,k=function(a){var b=++j+"";return a?a+b:b},l=function(a){var b=$(document);return{top:a.top+b.scrollTop(),left:a.left+b.scrollLeft(),width:a.right-a.left,height:a.bottom-a.top}},m=function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b},n=function(a,b){return b=b||"",b+a.split(".").map(function(a){return a.substring(0,1).toUpperCase()+a.substring(1)}).join("")};return{eq:a,eq2:b,peq2:c,ok:d,fail:e,self:h,not:f,and:g,invoke:i,uniqueId:k,rect2bnd:l,invertObject:m,namespaceToCamel:n}}(),list=function(){var a=function(a){return a[0]},b=function(a){return a[a.length-1]},c=function(a){return a.slice(0,a.length-1)},d=function(a){return a.slice(1)},e=function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(b(e))return e}},f=function(a,b){for(var c=0,d=a.length;d>c;c++)if(!b(a[c]))return!1;return!0},g=function(a,b){return $.inArray(b,a)},h=function(a,b){return-1!==g(a,b)},i=function(a,b){return b=b||func.self,a.reduce(function(a,c){return a+b(c)},0)},j=function(a){for(var b=[],c=-1,d=a.length;++c<d;)b[c]=a[c];return b},k=function(a){return!a||!a.length},l=function(c,e){if(!c.length)return[];var f=d(c);return f.reduce(function(a,c){var d=b(a);return e(b(d),c)?d[d.length]=c:a[a.length]=[c],a},[[a(c)]])},m=function(a){for(var b=[],c=0,d=a.length;d>c;c++)a[c]&&b.push(a[c]);return b},n=function(a){for(var b=[],c=0,d=a.length;d>c;c++)h(b,a[c])||b.push(a[c]);return b},o=function(a,b){var c=g(a,b);return-1===c?null:a[c+1]},p=function(a,b){var c=g(a,b);return-1===c?null:a[c-1]};return{head:a,last:b,initial:c,tail:d,prev:p,next:o,find:e,contains:h,all:f,sum:i,from:j,isEmpty:k,clusterBy:l,compact:m,unique:n}}(),isSupportAmd="function"==typeof define&&define.amd,isFontInstalled=function(a){var b="Comic Sans MS"===a?"Courier New":"Comic Sans MS",c=$("<div>").css({position:"absolute",left:"-9999px",top:"-9999px",fontSize:"200px"}).text("mmmmmmmmmwwwwwww").appendTo(document.body),d=c.css("fontFamily",b).width(),e=c.css("fontFamily",a+","+b).width();return c.remove(),d!==e},userAgent=navigator.userAgent,isMSIE=/MSIE|Trident/i.test(userAgent),browserVersion;if(isMSIE){var matches=/MSIE (\d+[.]\d+)/.exec(userAgent);matches&&(browserVersion=parseFloat(matches[1])),matches=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(userAgent),matches&&(browserVersion=parseFloat(matches[1]))}var isEdge=/Edge\/\d+/.test(userAgent),hasCodeMirror=!!window.CodeMirror;if(!hasCodeMirror&&isSupportAmd&&"undefined"!=typeof require)if("undefined"!=typeof require.resolve)try{require.resolve("codemirror"),hasCodeMirror=!0}catch(e){}else"undefined"!=typeof eval("require").specified&&(hasCodeMirror=eval("require").specified("codemirror"));var agent={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:isMSIE,isEdge:isEdge,isFF:!isEdge&&/firefox/i.test(userAgent),isPhantom:/PhantomJS/i.test(userAgent),isWebkit:!isEdge&&/webkit/i.test(userAgent),isChrome:!isEdge&&/chrome/i.test(userAgent),isSafari:!isEdge&&/safari/i.test(userAgent),browserVersion:browserVersion,jqueryVersion:parseFloat($.fn.jquery),isSupportAmd:isSupportAmd,hasCodeMirror:hasCodeMirror,isFontInstalled:isFontInstalled,isW3CRangeSupport:!!document.createRange},NBSP_CHAR=String.fromCharCode(160),ZERO_WIDTH_NBSP_CHAR="\ufeff",dom=function(){var a=function(a){return a&&$(a).hasClass("note-editable")},b=function(a){return a&&$(a).hasClass("note-control-sizing")},c=function(a){return a=a.toUpperCase(),function(b){return b&&b.nodeName.toUpperCase()===a}},d=function(a){return a&&3===a.nodeType},e=function(a){return a&&1===a.nodeType},f=function(a){return a&&/^BR|^IMG|^HR|^IFRAME|^BUTTON/.test(a.nodeName.toUpperCase())},g=function(b){return a(b)?!1:b&&/^DIV|^P|^LI|^H[1-7]/.test(b.nodeName.toUpperCase())},h=function(a){return a&&/^H[1-7]/.test(a.nodeName.toUpperCase())},i=c("PRE"),j=c("LI"),k=function(a){return g(a)&&!j(a)},l=c("TABLE"),m=c("DATA"),n=function(a){return!(s(a)||o(a)||p(a)||g(a)||l(a)||r(a)||m(a))},o=function(a){return a&&/^UL|^OL/.test(a.nodeName.toUpperCase())},p=c("HR"),q=function(a){return a&&/^TD|^TH/.test(a.nodeName.toUpperCase())},r=c("BLOCKQUOTE"),s=function(b){return q(b)||r(b)||a(b)},t=c("A"),u=function(a){return n(a)&&!!D(a,g)},v=function(a){return n(a)&&!D(a,g)},w=c("BODY"),x=function(a,b){return a.nextSibling===b||a.previousSibling===b},y=function(a,b){b=b||func.ok;var c=[];return a.previousSibling&&b(a.previousSibling)&&c.push(a.previousSibling),c.push(a),a.nextSibling&&b(a.nextSibling)&&c.push(a.nextSibling),c},z=agent.isMSIE&&agent.browserVersion<11?"&nbsp;":"<br>",A=function(a){return d(a)?a.nodeValue.length:a?a.childNodes.length:0},B=function(a){var b=A(a);return 0===b?!0:d(a)||1!==b||a.innerHTML!==z?list.all(a.childNodes,d)&&""===a.innerHTML?!0:!1:!0},C=function(a){f(a)||A(a)||(a.innerHTML=z)},D=function(b,c){for(;b;){if(c(b))return b;if(a(b))break;b=b.parentNode}return null},E=function(b,c){for(b=b.parentNode;b&&1===A(b);){if(c(b))return b;if(a(b))break;b=b.parentNode}return null},F=function(b,c){c=c||func.fail;var d=[];return D(b,function(b){return a(b)||d.push(b),c(b)}),d},G=function(a,b){var c=F(a);return list.last(c.filter(b))},H=function(a,b){for(var c=F(a),d=b;d;d=d.parentNode)if($.inArray(d,c)>-1)return d;return null},I=function(a,b){b=b||func.fail;for(var c=[];a&&!b(a);)c.push(a),a=a.previousSibling;return c},J=function(a,b){b=b||func.fail;for(var c=[];a&&!b(a);)c.push(a),a=a.nextSibling;return c},K=function(a,b){var c=[];return b=b||func.ok,function d(e){a!==e&&b(e)&&c.push(e);for(var f=0,g=e.childNodes.length;g>f;f++)d(e.childNodes[f])}(a),c},L=function(a,b){var c=a.parentNode,d=$("<"+b+">")[0];return c.insertBefore(d,a),d.appendChild(a),d},M=function(a,b){var c=b.nextSibling,d=b.parentNode;return c?d.insertBefore(a,c):d.appendChild(a),a},N=function(a,b){return $.each(b,function(b,c){a.appendChild(c)}),a},O=function(a){return 0===a.offset},P=function(a){return a.offset===A(a.node)},Q=function(a){return O(a)||P(a)},R=function(a,b){for(;a&&a!==b;){if(0!==V(a))return!1;a=a.parentNode}return!0},S=function(a,b){if(!b)return!1;for(;a&&a!==b;){if(V(a)!==A(a.parentNode)-1)return!1;a=a.parentNode}return!0},T=function(a,b){return O(a)&&R(a.node,b)},U=function(a,b){return P(a)&&S(a.node,b)},V=function(a){for(var b=0;a=a.previousSibling;)b+=1;return b},W=function(a){return!!(a&&a.childNodes&&a.childNodes.length)},X=function(b,c){var d,e;if(0===b.offset){if(a(b.node))return null;d=b.node.parentNode,e=V(b.node)}else W(b.node)?(d=b.node.childNodes[b.offset-1],e=A(d)):(d=b.node,e=c?0:b.offset-1);return{node:d,offset:e}},Y=function(b,c){var d,e;if(A(b.node)===b.offset){if(a(b.node))return null;d=b.node.parentNode,e=V(b.node)+1}else W(b.node)?(d=b.node.childNodes[b.offset],e=0):(d=b.node,e=c?A(b.node):b.offset+1);return{node:d,offset:e}},Z=function(a,b){return a.node===b.node&&a.offset===b.offset},_=function(a){if(d(a.node)||!W(a.node)||B(a.node))return!0;var b=a.node.childNodes[a.offset-1],c=a.node.childNodes[a.offset];return b&&!f(b)||c&&!f(c)?!1:!0},aa=function(a,b){for(;a;){if(b(a))return a;a=X(a)}return null},ba=function(a,b){for(;a;){if(b(a))return a;a=Y(a)}return null},ca=function(a){if(!d(a.node))return!1;var b=a.node.nodeValue.charAt(a.offset-1);return b&&" "!==b&&b!==NBSP_CHAR},da=function(a,b,c,d){for(var e=a;e&&(c(e),!Z(e,b));){var f=d&&a.node!==e.node&&b.node!==e.node;e=Y(e,f)}},ea=function(a,b){var c=F(b,func.eq(a));return c.map(V).reverse()},fa=function(a,b){for(var c=a,d=0,e=b.length;e>d;d++)c=c.childNodes.length<=b[d]?c.childNodes[c.childNodes.length-1]:c.childNodes[b[d]];return c},ga=function(a,b){var c=b&&b.isSkipPaddingBlankHTML,e=b&&b.isNotSplitEdgePoint;if(Q(a)&&(d(a.node)||e)){if(O(a))return a.node;if(P(a))return a.node.nextSibling}if(d(a.node))return a.node.splitText(a.offset);var f=a.node.childNodes[a.offset],g=M(a.node.cloneNode(!1),a.node);return N(g,J(f)),c||(C(a.node),C(g)),g},ha=function(a,b,c){var d=F(b.node,func.eq(a));return d.length?1===d.length?ga(b,c):d.reduce(function(a,d){return a===b.node&&(a=ga(b,c)),ga({node:d,offset:a?dom.position(a):A(d)},c)}):null},ia=function(a,b){var c,d,e=b?g:s,f=F(a.node,e),h=list.last(f)||a.node;e(h)?(c=f[f.length-2],d=h):(c=h,d=c.parentNode);var i=c&&ha(c,a,{isSkipPaddingBlankHTML:b,isNotSplitEdgePoint:b});return i||d!==a.node||(i=a.node.childNodes[a.offset]),{rightNode:i,container:d}},ja=function(a){return document.createElement(a)},ka=function(a){return document.createTextNode(a)},la=function(a,b){if(a&&a.parentNode){if(a.removeNode)return a.removeNode(b);var c=a.parentNode;if(!b){var d,e,f=[];for(d=0,e=a.childNodes.length;e>d;d++)f.push(a.childNodes[d]);for(d=0,e=f.length;e>d;d++)c.insertBefore(f[d],a)}c.removeChild(a)}},ma=function(b,c){for(;b&&!a(b)&&c(b);){var d=b.parentNode;la(b),b=d}},na=function(a,b){if(a.nodeName.toUpperCase()===b.toUpperCase())return a;var c=ja(b);return a.style.cssText&&(c.style.cssText=a.style.cssText),N(c,list.from(a.childNodes)),M(c,a),la(a),c},oa=c("TEXTAREA"),pa=function(a,b){var c=oa(a[0])?a.val():a.html();return b?c.replace(/[\n\r]/g,""):c},qa=function(a,b){var c=pa(a);if(b){var d=/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g;c=c.replace(d,function(a,b,c){c=c.toUpperCase();var d=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(c)&&!!b,e=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(c);return a+(d||e?"\n":"")}),c=$.trim(c)}return c},ra=function(a){var b=$(a),c=b.offset(),d=b.outerHeight(!0);return{left:c.left,top:c.top+d}},sa=function(a,b){Object.keys(b).forEach(function(c){a.on(c,b[c])})},ta=function(a,b){Object.keys(b).forEach(function(c){a.off(c,b[c])})};return{NBSP_CHAR:NBSP_CHAR,ZERO_WIDTH_NBSP_CHAR:ZERO_WIDTH_NBSP_CHAR,blank:z,emptyPara:"<p>"+z+"</p>",makePredByNodeName:c,isEditable:a,isControlSizing:b,isText:d,isElement:e,isVoid:f,isPara:g,isPurePara:k,isHeading:h,isInline:n,isBlock:func.not(n),isBodyInline:v,isBody:w,isParaInline:u,isPre:i,isList:o,isTable:l,isData:m,isCell:q,isBlockquote:r,isBodyContainer:s,isAnchor:t,isDiv:c("DIV"),isLi:j,isBR:c("BR"),isSpan:c("SPAN"),isB:c("B"),isU:c("U"),isS:c("S"),isI:c("I"),isImg:c("IMG"),isTextarea:oa,isEmpty:B,isEmptyAnchor:func.and(t,B),isClosestSibling:x,withClosestSiblings:y,nodeLength:A,isLeftEdgePoint:O,isRightEdgePoint:P,isEdgePoint:Q,isLeftEdgeOf:R,isRightEdgeOf:S,isLeftEdgePointOf:T,isRightEdgePointOf:U,prevPoint:X,nextPoint:Y,isSamePoint:Z,isVisiblePoint:_,prevPointUntil:aa,nextPointUntil:ba,isCharPoint:ca,walkPoint:da,ancestor:D,singleChildAncestor:E,listAncestor:F,lastAncestor:G,listNext:J,listPrev:I,listDescendant:K,commonAncestor:H,wrap:L,insertAfter:M,appendChildNodes:N,position:V,hasChildren:W,makeOffsetPath:ea,fromOffsetPath:fa,splitTree:ha,splitPoint:ia,create:ja,createText:ka,remove:la,removeWhile:ma,replace:na,html:qa,value:pa,posFromPlaceholder:ra,attachEvents:sa,detachEvents:ta}}(),Context=function(a,b){var c=this,d=$.summernote.ui;return this.memos={},this.modules={},this.layoutInfo={},this.options=b,this.initialize=function(){return this.layoutInfo=d.createLayout(a,b),this._initialize(),a.hide(),this},this.destroy=function(){this._destroy(),a.removeData("summernote"),d.removeLayout(a,this.layoutInfo)},this.reset=function(){var a=c.isDisabled();this.code(dom.emptyPara),this._destroy(),this._initialize(),a&&c.disable()},this._initialize=function(){var a=$.extend({},this.options.buttons);Object.keys(a).forEach(function(b){c.memo("button."+b,a[b])});var b=$.extend({},this.options.modules,$.summernote.plugins||{});Object.keys(b).forEach(function(a){c.module(a,b[a],!0)}),Object.keys(this.modules).forEach(function(a){c.initializeModule(a)})},this._destroy=function(){Object.keys(this.modules).reverse().forEach(function(a){c.removeModule(a)}),Object.keys(this.memos).forEach(function(a){c.removeMemo(a)})},this.code=function(b){var c=this.invoke("codeview.isActivated");return void 0===b?(this.invoke("codeview.sync"),c?this.layoutInfo.codable.val():this.layoutInfo.editable.html()):(c?this.layoutInfo.codable.val(b):this.layoutInfo.editable.html(b),a.val(b),this.triggerEvent("change",b),void 0)},this.isDisabled=function(){return"false"===this.layoutInfo.editable.attr("contenteditable")},this.enable=function(){this.layoutInfo.editable.attr("contenteditable",!0),this.invoke("toolbar.activate",!0)},this.disable=function(){this.invoke("codeview.isActivated")&&this.invoke("codeview.deactivate"),this.layoutInfo.editable.attr("contenteditable",!1),this.invoke("toolbar.deactivate",!0)},this.triggerEvent=function(){var b=list.head(arguments),c=list.tail(list.from(arguments)),d=this.options.callbacks[func.namespaceToCamel(b,"on")];d&&d.apply(a[0],c),a.trigger("summernote."+b,c)},this.initializeModule=function(b){var c=this.modules[b];c.shouldInitialize=c.shouldInitialize||func.ok,c.shouldInitialize()&&(c.initialize&&c.initialize(),c.events&&dom.attachEvents(a,c.events))},this.module=function(a,b,c){return 1===arguments.length?this.modules[a]:(this.modules[a]=new b(this),void(c||this.initializeModule(a)))},this.removeModule=function(b){var c=this.modules[b];c.shouldInitialize()&&(c.events&&dom.detachEvents(a,c.events),c.destroy&&c.destroy()),delete this.modules[b]},this.memo=function(a,b){return 1===arguments.length?this.memos[a]:void(this.memos[a]=b)},this.removeMemo=function(a){this.memos[a]&&this.memos[a].destroy&&this.memos[a].destroy(),delete this.memos[a]},this.createInvokeHandler=function(a,b){return function(d){d.preventDefault(),c.invoke(a,b||$(d.target).closest("[data-value]").data("value"))}},this.invoke=function(){var a=list.head(arguments),b=list.tail(list.from(arguments)),c=a.split("."),d=c.length>1,e=d&&list.head(c),f=d?list.last(c):list.head(c),g=this.modules[e||"editor"];return!e&&this[f]?this[f].apply(this,b):g&&g[f]&&g.shouldInitialize()?g[f].apply(g,b):void 0},this.initialize()};$.fn.extend({summernote:function(){var a=$.type(list.head(arguments)),b="string"===a,c="object"===a,d=c?list.head(arguments):{};d=$.extend({},$.summernote.options,d),d.langInfo=$.extend(!0,{},$.summernote.lang["en-US"],$.summernote.lang[d.lang]),d.icons=$.extend(!0,{},$.summernote.options.icons,d.icons),this.each(function(a,b){var c=$(b);if(!c.data("summernote")){var e=new Context(c,d);c.data("summernote",e),c.data("summernote").triggerEvent("init",e.layoutInfo)}});var e=this.first();if(e.length){var f=e.data("summernote");if(b)return f.invoke.apply(f,list.from(arguments));d.focus&&f.invoke("editor.focus")}return this}});var Renderer=function(a,b,c,d){this.render=function(e){var f=$(a);if(c&&c.contents&&f.html(c.contents),c&&c.className&&f.addClass(c.className),c&&c.data&&$.each(c.data,function(a,b){f.attr("data-"+a,b)}),c&&c.click&&f.on("click",c.click),b){var g=f.find(".note-children-container");b.forEach(function(a){a.render(g.length?g:f)})}return d&&d(f,c),c&&c.callback&&c.callback(f),e&&e.append(f),f}},renderer={create:function(a,b){return function(){var c=$.isArray(arguments[0])?arguments[0]:[],d="object"==typeof arguments[1]?arguments[1]:arguments[0];return d&&d.children&&(c=d.children),new Renderer(a,c,d,b)}}},editor=renderer.create('<div class="note-editor note-frame panel panel-default"/>'),toolbar=renderer.create('<div class="note-toolbar panel-heading"/>'),editingArea=renderer.create('<div class="note-editing-area"/>'),codable=renderer.create('<textarea class="note-codable"/>'),editable=renderer.create('<div class="note-editable panel-body" contentEditable="true"/>'),statusbar=renderer.create(['<div class="note-statusbar">',' <div class="note-resizebar">',' <div class="note-icon-bar"/>',' <div class="note-icon-bar"/>',' <div class="note-icon-bar"/>'," </div>","</div>"].join("")),airEditor=renderer.create('<div class="note-editor"/>'),airEditable=renderer.create('<div class="note-editable" contentEditable="true"/>'),buttonGroup=renderer.create('<div class="note-btn-group btn-group">'),button=renderer.create('<button type="button" class="note-btn btn btn-default btn-sm" tabindex="-1">',function(a,b){b&&b.tooltip&&a.attr({title:b.tooltip}).tooltip({container:"body",trigger:"hover",placement:"bottom"})}),dropdown=renderer.create('<div class="dropdown-menu">',function(a,b){var c=$.isArray(b.items)?b.items.map(function(a){var c="string"==typeof a?a:a.value||"",d=b.template?b.template(a):a;return'<li><a href="#" data-value="'+c+'">'+d+"</a></li>"}).join(""):b.items;a.html(c)}),dropdownCheck=renderer.create('<div class="dropdown-menu note-check">',function(a,b){var c=$.isArray(b.items)?b.items.map(function(a){var c="string"==typeof a?a:a.value||"",d=b.template?b.template(a):a;return'<li><a href="#" data-value="'+c+'">'+icon(b.checkClassName)+" "+d+"</a></li>"}).join(""):b.items;a.html(c)}),palette=renderer.create('<div class="note-color-palette"/>',function(a,b){for(var c=[],d=0,e=b.colors.length;e>d;d++){for(var f=b.eventName,g=b.colors[d],h=[],i=0,j=g.length;j>i;i++){var k=g[i];h.push(['<button type="button" class="note-color-btn"','style="background-color:',k,'" ','data-event="',f,'" ','data-value="',k,'" ','title="',k,'" ','data-toggle="button" tabindex="-1"></button>'].join(""))}c.push('<div class="note-color-row">'+h.join("")+"</div>")}a.html(c.join("")),a.find(".note-color-btn").tooltip({container:"body",trigger:"hover",placement:"bottom"})}),dialog=renderer.create('<div class="modal" aria-hidden="false" tabindex="-1"/>',function(a,b){b.fade&&a.addClass("fade"),a.html(['<div class="modal-dialog">',' <div class="modal-content">',b.title?' <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title">'+b.title+"</h4> </div>":"",' <div class="modal-body">'+b.body+"</div>",b.footer?' <div class="modal-footer">'+b.footer+"</div>":""," </div>","</div>"].join(""))}),popover=renderer.create(['<div class="note-popover popover in">',' <div class="arrow"/>',' <div class="popover-content note-children-container"/>',"</div>"].join(""),function(a,b){var c="undefined"!=typeof b.direction?b.direction:"bottom";a.addClass(c),b.hideArrow&&a.find(".arrow").hide()}),icon=function(a,b){return b=b||"i","<"+b+' class="'+a+'"/>'},ui={editor:editor,toolbar:toolbar,editingArea:editingArea,codable:codable,editable:editable,statusbar:statusbar,airEditor:airEditor,airEditable:airEditable,buttonGroup:buttonGroup,button:button,dropdown:dropdown,dropdownCheck:dropdownCheck,palette:palette,dialog:dialog,popover:popover,icon:icon,toggleBtn:function(a,b){a.toggleClass("disabled",!b),a.attr("disabled",!b)},toggleBtnActive:function(a,b){a.toggleClass("active",b)},onDialogShown:function(a,b){a.one("shown.bs.modal",b)},onDialogHidden:function(a,b){a.one("hidden.bs.modal",b)},showDialog:function(a){a.modal("show")},hideDialog:function(a){a.modal("hide")},createLayout:function(a,b){var c=(b.airMode?ui.airEditor([ui.editingArea([ui.airEditable()])]):ui.editor([ui.toolbar(),ui.editingArea([ui.codable(),ui.editable()]),ui.statusbar()])).render();return c.insertAfter(a),{note:a,editor:c,toolbar:c.find(".note-toolbar"),editingArea:c.find(".note-editing-area"),editable:c.find(".note-editable"),codable:c.find(".note-codable"),statusbar:c.find(".note-statusbar")}},removeLayout:function(a,b){a.html(b.editable.html()),b.editor.remove(),a.show()}};$.summernote=$.summernote||{lang:{}},$.extend($.summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize Full",resizeHalf:"Resize Half",resizeQuarter:"Resize Quarter",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Float None",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window"},table:{table:"Table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",normal:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Foreground Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}});var key=function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221};return{isEdit:function(b){return list.contains([a.BACKSPACE,a.TAB,a.ENTER,a.SPACE],b)},isMove:function(b){return list.contains([a.LEFT,a.UP,a.RIGHT,a.DOWN],b)},nameFromCode:func.invertObject(a),code:a}}(),range=function(){var a=function(a,b){var c,d,e=a.parentElement(),f=document.body.createTextRange(),g=list.from(e.childNodes);for(c=0;c<g.length;c++)if(!dom.isText(g[c])){if(f.moveToElementText(g[c]),f.compareEndPoints("StartToStart",a)>=0)break;d=g[c]}if(0!==c&&dom.isText(g[c-1])){var h=document.body.createTextRange(),i=null;h.moveToElementText(d||e),h.collapse(!d),i=d?d.nextSibling:e.firstChild;var j=a.duplicate();j.setEndPoint("StartToStart",h);for(var k=j.text.replace(/[\r\n]/g,"").length;k>i.nodeValue.length&&i.nextSibling;)k-=i.nodeValue.length,i=i.nextSibling;i.nodeValue;b&&i.nextSibling&&dom.isText(i.nextSibling)&&k===i.nodeValue.length&&(k-=i.nodeValue.length,i=i.nextSibling),e=i,c=k}return{cont:e,offset:c}},b=function(a){var b=function(a,c){var d,e;if(dom.isText(a)){var f=dom.listPrev(a,func.not(dom.isText)),g=list.last(f).previousSibling;d=g||a.parentNode,c+=list.sum(list.tail(f),dom.nodeLength),e=!g}else{if(d=a.childNodes[c]||a,dom.isText(d))return b(d,0);c=0,e=!1}return{node:d,collapseToStart:e,offset:c}},c=document.body.createTextRange(),d=b(a.node,a.offset);return c.moveToElementText(d.node),c.collapse(d.collapseToStart),c.moveStart("character",d.offset),c},c=function(a,d,e,f){this.sc=a,this.so=d,this.ec=e,this.eo=f;var g=function(){if(agent.isW3CRangeSupport){var c=document.createRange();return c.setStart(a,d),c.setEnd(e,f),c}var g=b({node:a,offset:d});return g.setEndPoint("EndToEnd",b({node:e,offset:f})),g};this.getPoints=function(){return{sc:a,so:d,ec:e,eo:f}},this.getStartPoint=function(){return{node:a,offset:d}},this.getEndPoint=function(){return{node:e,offset:f}},this.select=function(){var a=g();if(agent.isW3CRangeSupport){var b=document.getSelection();b.rangeCount>0&&b.removeAllRanges(),b.addRange(a)}else a.select();return this},this.scrollIntoView=function(a){var b=$(a).height();return a.scrollTop+b<this.sc.offsetTop&&(a.scrollTop+=Math.abs(a.scrollTop+b-this.sc.offsetTop)),this},this.normalize=function(){var a=function(a,b){if(dom.isVisiblePoint(a)&&!dom.isEdgePoint(a)||dom.isVisiblePoint(a)&&dom.isRightEdgePoint(a)&&!b||dom.isVisiblePoint(a)&&dom.isLeftEdgePoint(a)&&b||dom.isVisiblePoint(a)&&dom.isBlock(a.node)&&dom.isEmpty(a.node))return a;var c=dom.ancestor(a.node,dom.isBlock);if((dom.isLeftEdgePointOf(a,c)||dom.isVoid(dom.prevPoint(a).node))&&!b||(dom.isRightEdgePointOf(a,c)||dom.isVoid(dom.nextPoint(a).node))&&b){if(dom.isVisiblePoint(a))return a;b=!b}var d=b?dom.nextPointUntil(dom.nextPoint(a),dom.isVisiblePoint):dom.prevPointUntil(dom.prevPoint(a),dom.isVisiblePoint);return d||a},b=a(this.getEndPoint(),!1),d=this.isCollapsed()?b:a(this.getStartPoint(),!0);return new c(d.node,d.offset,b.node,b.offset)},this.nodes=function(a,b){a=a||func.ok;var c=b&&b.includeAncestor,d=b&&b.fullyContains,e=this.getStartPoint(),f=this.getEndPoint(),g=[],h=[];return dom.walkPoint(e,f,function(b){if(!dom.isEditable(b.node)){var e;d?(dom.isLeftEdgePoint(b)&&h.push(b.node),dom.isRightEdgePoint(b)&&list.contains(h,b.node)&&(e=b.node)):e=c?dom.ancestor(b.node,a):b.node,e&&a(e)&&g.push(e)}},!0),list.unique(g)},this.commonAncestor=function(){return dom.commonAncestor(a,e)},this.expand=function(b){var g=dom.ancestor(a,b),h=dom.ancestor(e,b);if(!g&&!h)return new c(a,d,e,f);var i=this.getPoints();return g&&(i.sc=g,i.so=0),h&&(i.ec=h,i.eo=dom.nodeLength(h)),new c(i.sc,i.so,i.ec,i.eo)},this.collapse=function(b){return b?new c(a,d,a,d):new c(e,f,e,f)},this.splitText=function(){var b=a===e,g=this.getPoints();return dom.isText(e)&&!dom.isEdgePoint(this.getEndPoint())&&e.splitText(f),dom.isText(a)&&!dom.isEdgePoint(this.getStartPoint())&&(g.sc=a.splitText(d),g.so=0,b&&(g.ec=g.sc,g.eo=f-d)),new c(g.sc,g.so,g.ec,g.eo)},this.deleteContents=function(){if(this.isCollapsed())return this;var a=this.splitText(),b=a.nodes(null,{fullyContains:!0}),d=dom.prevPointUntil(a.getStartPoint(),function(a){return!list.contains(b,a.node)}),e=[];return $.each(b,function(a,b){var c=b.parentNode;d.node!==c&&1===dom.nodeLength(c)&&e.push(c),dom.remove(b,!1)}),$.each(e,function(a,b){dom.remove(b,!1)}),new c(d.node,d.offset,d.node,d.offset).normalize()};var h=function(b){return function(){var c=dom.ancestor(a,b);return!!c&&c===dom.ancestor(e,b)}};this.isOnEditable=h(dom.isEditable),this.isOnList=h(dom.isList),this.isOnAnchor=h(dom.isAnchor),this.isOnCell=h(dom.isCell),this.isOnData=h(dom.isData),this.isLeftEdgeOf=function(a){if(!dom.isLeftEdgePoint(this.getStartPoint()))return!1;var b=dom.ancestor(this.sc,a);return b&&dom.isLeftEdgeOf(this.sc,b)},this.isCollapsed=function(){return a===e&&d===f},this.wrapBodyInlineWithPara=function(){if(dom.isBodyContainer(a)&&dom.isEmpty(a))return a.innerHTML=dom.emptyPara,new c(a.firstChild,0,a.firstChild,0);var b=this.normalize();if(dom.isParaInline(a)||dom.isPara(a))return b;var d;if(dom.isInline(b.sc)){var e=dom.listAncestor(b.sc,func.not(dom.isInline));d=list.last(e),dom.isInline(d)||(d=e[e.length-2]||b.sc.childNodes[b.so])}else d=b.sc.childNodes[b.so>0?b.so-1:0];var f=dom.listPrev(d,dom.isParaInline).reverse();if(f=f.concat(dom.listNext(d.nextSibling,dom.isParaInline)),f.length){var g=dom.wrap(list.head(f),"p");dom.appendChildNodes(g,list.tail(f))}return this.normalize()},this.insertNode=function(a){var b=this.wrapBodyInlineWithPara().deleteContents(),c=dom.splitPoint(b.getStartPoint(),dom.isInline(a));return c.rightNode?c.rightNode.parentNode.insertBefore(a,c.rightNode):c.container.appendChild(a),a},this.pasteHTML=function(a){var b=$("<div></div>").html(a)[0],c=list.from(b.childNodes),d=this.wrapBodyInlineWithPara().deleteContents();return c.reverse().map(function(a){return d.insertNode(a)}).reverse()},this.toString=function(){var a=g();return agent.isW3CRangeSupport?a.toString():a.text},this.getWordRange=function(a){var b=this.getEndPoint();if(!dom.isCharPoint(b))return this;var d=dom.prevPointUntil(b,function(a){return!dom.isCharPoint(a)});return a&&(b=dom.nextPointUntil(b,function(a){return!dom.isCharPoint(a)})),new c(d.node,d.offset,b.node,b.offset)},this.bookmark=function(b){return{s:{path:dom.makeOffsetPath(b,a),offset:d},e:{path:dom.makeOffsetPath(b,e),offset:f}}},this.paraBookmark=function(b){return{s:{path:list.tail(dom.makeOffsetPath(list.head(b),a)),offset:d},e:{path:list.tail(dom.makeOffsetPath(list.last(b),e)),offset:f}}},this.getClientRects=function(){var a=g();return a.getClientRects()}};return{create:function(a,b,d,e){if(4===arguments.length)return new c(a,b,d,e);if(2===arguments.length)return d=a,e=b,new c(a,b,d,e);var f=this.createFromSelection();return f||1!==arguments.length?f:(f=this.createFromNode(arguments[0]),f.collapse(dom.emptyPara===arguments[0].innerHTML))},createFromSelection:function(){var b,d,e,f;if(agent.isW3CRangeSupport){var g=document.getSelection();if(!g||0===g.rangeCount)return null;if(dom.isBody(g.anchorNode))return null;var h=g.getRangeAt(0);b=h.startContainer,d=h.startOffset,e=h.endContainer,f=h.endOffset}else{var i=document.selection.createRange(),j=i.duplicate();j.collapse(!1);var k=i;k.collapse(!0);var l=a(k,!0),m=a(j,!1);dom.isText(l.node)&&dom.isLeftEdgePoint(l)&&dom.isTextNode(m.node)&&dom.isRightEdgePoint(m)&&m.node.nextSibling===l.node&&(l=m),b=l.cont,d=l.offset,e=m.cont,f=m.offset}return new c(b,d,e,f)},createFromNode:function(a){var b=a,c=0,d=a,e=dom.nodeLength(d);return dom.isVoid(b)&&(c=dom.listPrev(b).length-1,b=b.parentNode),dom.isBR(d)?(e=dom.listPrev(d).length-1,d=d.parentNode):dom.isVoid(d)&&(e=dom.listPrev(d).length,d=d.parentNode),this.create(b,c,d,e)},createFromNodeBefore:function(a){return this.createFromNode(a).collapse(!0)},createFromNodeAfter:function(a){return this.createFromNode(a).collapse()},createFromBookmark:function(a,b){var d=dom.fromOffsetPath(a,b.s.path),e=b.s.offset,f=dom.fromOffsetPath(a,b.e.path),g=b.e.offset;return new c(d,e,f,g)},createFromParaBookmark:function(a,b){var d=a.s.offset,e=a.e.offset,f=dom.fromOffsetPath(list.head(b),a.s.path),g=dom.fromOffsetPath(list.last(b),a.e.path);return new c(f,d,g,e)}}}(),async=function(){var a=function(a){return $.Deferred(function(b){$.extend(new FileReader,{onload:function(a){var c=a.target.result;b.resolve(c)},onerror:function(){b.reject(this)}}).readAsDataURL(a)}).promise()},b=function(a){return $.Deferred(function(b){var c=$("<img>");c.one("load",function(){c.off("error abort"),b.resolve(c)}).one("error abort",function(){c.off("load").detach(),b.reject(c)}).css({display:"none"}).appendTo(document.body).attr("src",a)}).promise()};return{readFileAsDataURL:a,createImage:b}}(),History=function(a){var b=[],c=-1,d=a[0],e=function(){var b=range.create(d),c={s:{path:[],offset:0},e:{path:[],offset:0}};return{contents:a.html(),bookmark:b?b.bookmark(d):c +}},f=function(b){null!==b.contents&&a.html(b.contents),null!==b.bookmark&&range.createFromBookmark(d,b.bookmark).select()};this.rewind=function(){a.html()!==b[c].contents&&this.recordUndo(),c=0,f(b[c])},this.reset=function(){b=[],c=-1,a.html(""),this.recordUndo()},this.undo=function(){a.html()!==b[c].contents&&this.recordUndo(),c>0&&(c--,f(b[c]))},this.redo=function(){b.length-1>c&&(c++,f(b[c]))},this.recordUndo=function(){c++,b.length>c&&(b=b.slice(0,c)),b.push(e())}},Style=function(){var a=function(a,b){if(agent.jqueryVersion<1.9){var c={};return $.each(b,function(b,d){c[d]=a.css(d)}),c}return a.css.call(a,b)};this.fromNode=function(b){var c=["font-family","font-size","text-align","list-style-type","line-height"],d=a(b,c)||{};return d["font-size"]=parseInt(d["font-size"],10),d},this.stylePara=function(a,b){$.each(a.nodes(dom.isPara,{includeAncestor:!0}),function(a,c){$(c).css(b)})},this.styleNodes=function(a,b){a=a.splitText();var c=b&&b.nodeName||"SPAN",d=!(!b||!b.expandClosestSibling),e=!(!b||!b.onlyPartialContains);if(a.isCollapsed())return[a.insertNode(dom.create(c))];var f=dom.makePredByNodeName(c),g=a.nodes(dom.isText,{fullyContains:!0}).map(function(a){return dom.singleChildAncestor(a,f)||dom.wrap(a,c)});if(d){if(e){var h=a.nodes();f=func.and(f,function(a){return list.contains(h,a)})}return g.map(function(a){var b=dom.withClosestSiblings(a,f),c=list.head(b),d=list.tail(b);return $.each(d,function(a,b){dom.appendChildNodes(c,b.childNodes),dom.remove(b)}),list.head(b)})}return g},this.current=function(a){var b=$(dom.isElement(a.sc)?a.sc:a.sc.parentNode),c=this.fromNode(b);try{c=$.extend(c,{"font-bold":document.queryCommandState("bold")?"bold":"normal","font-italic":document.queryCommandState("italic")?"italic":"normal","font-underline":document.queryCommandState("underline")?"underline":"normal","font-subscript":document.queryCommandState("subscript")?"subscript":"normal","font-superscript":document.queryCommandState("superscript")?"superscript":"normal","font-strikethrough":document.queryCommandState("strikethrough")?"strikethrough":"normal"})}catch(d){}if(a.isOnList()){var e=["circle","disc","disc-leading-zero","square"],f=$.inArray(c["list-style-type"],e)>-1;c["list-style"]=f?"unordered":"ordered"}else c["list-style"]="none";var g=dom.ancestor(a.sc,dom.isPara);if(g&&g.style["line-height"])c["line-height"]=g.style.lineHeight;else{var h=parseInt(c["line-height"],10)/parseInt(c["font-size"],10);c["line-height"]=h.toFixed(1)}return c.anchor=a.isOnAnchor()&&dom.ancestor(a.sc,dom.isAnchor),c.ancestors=dom.listAncestor(a.sc,dom.isEditable),c.range=a,c}},Bullet=function(){var a=this;this.insertOrderedList=function(a){this.toggleList("OL",a)},this.insertUnorderedList=function(a){this.toggleList("UL",a)},this.indent=function(a){var b=this,c=range.create(a).wrapBodyInlineWithPara(),d=c.nodes(dom.isPara,{includeAncestor:!0}),e=list.clusterBy(d,func.peq2("parentNode"));$.each(e,function(a,c){var d=list.head(c);dom.isLi(d)?b.wrapList(c,d.parentNode.nodeName):$.each(c,function(a,b){$(b).css("marginLeft",function(a,b){return(parseInt(b,10)||0)+25})})}),c.select()},this.outdent=function(a){var b=this,c=range.create(a).wrapBodyInlineWithPara(),d=c.nodes(dom.isPara,{includeAncestor:!0}),e=list.clusterBy(d,func.peq2("parentNode"));$.each(e,function(a,c){var d=list.head(c);dom.isLi(d)?b.releaseList([c]):$.each(c,function(a,b){$(b).css("marginLeft",function(a,b){return b=parseInt(b,10)||0,b>25?b-25:""})})}),c.select()},this.toggleList=function(b,c){var d=range.create(c).wrapBodyInlineWithPara(),e=d.nodes(dom.isPara,{includeAncestor:!0}),f=d.paraBookmark(e),g=list.clusterBy(e,func.peq2("parentNode"));if(list.find(e,dom.isPurePara)){var h=[];$.each(g,function(c,d){h=h.concat(a.wrapList(d,b))}),e=h}else{var i=d.nodes(dom.isList,{includeAncestor:!0}).filter(function(a){return!$.nodeName(a,b)});i.length?$.each(i,function(a,c){dom.replace(c,b)}):e=this.releaseList(g,!0)}range.createFromParaBookmark(f,e).select()},this.wrapList=function(a,b){var c=list.head(a),d=list.last(a),e=dom.isList(c.previousSibling)&&c.previousSibling,f=dom.isList(d.nextSibling)&&d.nextSibling,g=e||dom.insertAfter(dom.create(b||"UL"),d);return a=a.map(function(a){return dom.isPurePara(a)?dom.replace(a,"LI"):a}),dom.appendChildNodes(g,a),f&&(dom.appendChildNodes(g,list.from(f.childNodes)),dom.remove(f)),a},this.releaseList=function(a,b){var c=[];return $.each(a,function(a,d){var e=list.head(d),f=list.last(d),g=b?dom.lastAncestor(e,dom.isList):e.parentNode,h=g.childNodes.length>1?dom.splitTree(g,{node:f.parentNode,offset:dom.position(f)+1},{isSkipPaddingBlankHTML:!0}):null,i=dom.splitTree(g,{node:e.parentNode,offset:dom.position(e)},{isSkipPaddingBlankHTML:!0});d=b?dom.listDescendant(i,dom.isLi):list.from(i.childNodes).filter(dom.isLi),(b||!dom.isList(g.parentNode))&&(d=d.map(function(a){return dom.replace(a,"P")})),$.each(list.from(d).reverse(),function(a,b){dom.insertAfter(b,g)});var j=list.compact([g,i,h]);$.each(j,function(a,b){var c=[b].concat(dom.listDescendant(b,dom.isList));$.each(c.reverse(),function(a,b){dom.nodeLength(b)||dom.remove(b,!0)})}),c=c.concat(d)}),c}},Typing=function(){var a=new Bullet;this.insertTab=function(a,b){var c=dom.createText(new Array(b+1).join(dom.NBSP_CHAR));a=a.deleteContents(),a.insertNode(c,!0),a=range.create(c,b),a.select()},this.insertParagraph=function(b){var c=range.create(b);c=c.deleteContents(),c=c.wrapBodyInlineWithPara();var d,e=dom.ancestor(c.sc,dom.isPara);if(e){if(dom.isEmpty(e)&&dom.isLi(e))return void a.toggleList(e.parentNode.nodeName);if(dom.isEmpty(e)&&dom.isPara(e)&&dom.isBlockquote(e.parentNode))dom.insertAfter(e,e.parentNode),d=e;else{d=dom.splitTree(e,c.getStartPoint());var f=dom.listDescendant(e,dom.isEmptyAnchor);f=f.concat(dom.listDescendant(d,dom.isEmptyAnchor)),$.each(f,function(a,b){dom.remove(b)}),(dom.isHeading(d)||dom.isPre(d))&&dom.isEmpty(d)&&(d=dom.replace(d,"p"))}}else{var g=c.sc.childNodes[c.so];d=$(dom.emptyPara)[0],g?c.sc.insertBefore(d,g):c.sc.appendChild(d)}range.create(d,0).normalize().select().scrollIntoView(b)}},Table=function(){this.tab=function(a,b){var c=dom.ancestor(a.commonAncestor(),dom.isCell),d=dom.ancestor(c,dom.isTable),e=dom.listDescendant(d,dom.isCell),f=list[b?"prev":"next"](e,c);f&&range.create(f,0).select()},this.createTable=function(a,b,c){for(var d,e=[],f=0;a>f;f++)e.push("<td>"+dom.blank+"</td>");d=e.join("");for(var g,h=[],i=0;b>i;i++)h.push("<tr>"+d+"</tr>");g=h.join("");var j=$("<table>"+g+"</table>");return c&&c.tableClassName&&j.addClass(c.tableClassName),j[0]}},KEY_BOGUS="bogus",Editor=function(a){var b=this,c=a.layoutInfo.note,d=a.layoutInfo.editor,e=a.layoutInfo.editable,f=a.options,g=f.langInfo,h=e[0],i=null,j=new Style,k=new Table,l=new Typing,m=new Bullet,n=new History(e);this.initialize=function(){e.on("keydown",function(c){c.keyCode===key.code.ENTER&&a.triggerEvent("enter",c),a.triggerEvent("keydown",c),c.isDefaultPrevented()||(f.shortcuts?b.handleKeyMap(c):b.preventDefaultEditableShortCuts(c))}).on("keyup",function(b){a.triggerEvent("keyup",b)}).on("focus",function(b){a.triggerEvent("focus",b)}).on("blur",function(b){a.triggerEvent("blur",b)}).on("mousedown",function(b){a.triggerEvent("mousedown",b)}).on("mouseup",function(b){a.triggerEvent("mouseup",b)}).on("scroll",function(b){a.triggerEvent("scroll",b)}).on("paste",function(b){a.triggerEvent("paste",b)}),e.html(dom.html(c)||dom.emptyPara);var g=agent.isMSIE?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input";e.on(g,function(){a.triggerEvent("change",e.html())}),d.on("focusin",function(b){a.triggerEvent("focusin",b)}).on("focusout",function(b){a.triggerEvent("focusout",b)}),f.airMode||(f.width&&d.outerWidth(f.width),f.height&&e.outerHeight(f.height),f.maxHeight&&e.css("max-height",f.maxHeight),f.minHeight&&e.css("min-height",f.minHeight)),n.recordUndo()},this.destroy=function(){e.off()},this.handleKeyMap=function(b){var c=f.keyMap[agent.isMac?"mac":"pc"],d=[];b.metaKey&&d.push("CMD"),b.ctrlKey&&!b.altKey&&d.push("CTRL"),b.shiftKey&&d.push("SHIFT");var e=key.nameFromCode[b.keyCode];e&&d.push(e);var g=c[d.join("+")];g?(b.preventDefault(),a.invoke(g)):key.isEdit(b.keyCode)&&this.afterCommand()},this.preventDefaultEditableShortCuts=function(a){(a.ctrlKey||a.metaKey)&&list.contains([66,73,85],a.keyCode)&&a.preventDefault()},this.createRange=function(){return this.focus(),range.create(h)},this.saveRange=function(a){i=this.createRange(),a&&i.collapse().select()},this.restoreRange=function(){i&&(i.select(),this.focus())},this.saveTarget=function(a){e.data("target",a)},this.clearTarget=function(){e.removeData("target")},this.restoreTarget=function(){return e.data("target")},this.currentStyle=function(){var a=range.create();return a&&(a=a.normalize()),a?j.current(a):j.fromNode(e)},this.styleFromNode=function(a){return j.fromNode(a)},this.undo=function(){a.triggerEvent("before.command",e.html()),n.undo(),a.triggerEvent("change",e.html())},a.memo("help.undo",g.help.undo),this.redo=function(){a.triggerEvent("before.command",e.html()),n.redo(),a.triggerEvent("change",e.html())},a.memo("help.redo",g.help.redo);for(var o=this.beforeCommand=function(){a.triggerEvent("before.command",e.html()),b.focus()},p=this.afterCommand=function(b){n.recordUndo(),b||a.triggerEvent("change",e.html())},q=["bold","italic","underline","strikethrough","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","formatBlock","removeFormat","backColor","foreColor","fontName"],r=0,s=q.length;s>r;r++)this[q[r]]=function(a){return function(b){o(),document.execCommand(a,!1,b),p(!0)}}(q[r]),a.memo("help."+q[r],g.help[q[r]]);this.tab=function(){var a=this.createRange();a.isCollapsed()&&a.isOnCell()?k.tab(a):(o(),l.insertTab(a,f.tabSize),p())},a.memo("help.tab",g.help.tab),this.untab=function(){var a=this.createRange();a.isCollapsed()&&a.isOnCell()&&k.tab(a,!0)},a.memo("help.untab",g.help.untab),this.wrapCommand=function(a){return function(){o(),a.apply(b,arguments),p()}},this.insertParagraph=this.wrapCommand(function(){l.insertParagraph(h)}),a.memo("help.insertParagraph",g.help.insertParagraph),this.insertOrderedList=this.wrapCommand(function(){m.insertOrderedList(h)}),a.memo("help.insertOrderedList",g.help.insertOrderedList),this.insertUnorderedList=this.wrapCommand(function(){m.insertUnorderedList(h)}),a.memo("help.insertUnorderedList",g.help.insertUnorderedList),this.indent=this.wrapCommand(function(){m.indent(h)}),a.memo("help.indent",g.help.indent),this.outdent=this.wrapCommand(function(){m.outdent(h)}),a.memo("help.outdent",g.help.outdent),this.insertImage=function(b,c){return async.createImage(b,c).then(function(a){o(),"function"==typeof c?c(a):("string"==typeof c&&a.attr("data-filename",c),a.css("width",Math.min(e.width(),a.width()))),a.show(),range.create(h).insertNode(a[0]),range.createFromNodeAfter(a[0]).select(),p()}).fail(function(b){a.triggerEvent("image.upload.error",b)})},this.insertImages=function(c){$.each(c,function(c,d){var e=d.name;f.maximumImageFileSize&&f.maximumImageFileSize<d.size?a.triggerEvent("image.upload.error",g.image.maximumFileSizeError):async.readFileAsDataURL(d).then(function(a){return b.insertImage(a,e)}).fail(function(){a.triggerEvent("image.upload.error")})})},this.insertImagesOrCallback=function(b){var c=f.callbacks;c.onImageUpload?a.triggerEvent("image.upload",b):this.insertImages(b)},this.insertNode=this.wrapCommand(function(a){var b=this.createRange();b.insertNode(a),range.createFromNodeAfter(a).select()}),this.insertText=this.wrapCommand(function(a){var b=this.createRange(),c=b.insertNode(dom.createText(a));range.create(c,dom.nodeLength(c)).select()}),this.getSelectedText=function(){var a=this.createRange();return a.isOnAnchor()&&(a=range.createFromNode(dom.ancestor(a.sc,dom.isAnchor))),a.toString()},this.pasteHTML=this.wrapCommand(function(a){var b=this.createRange().pasteHTML(a);range.createFromNodeAfter(list.last(b)).select()}),this.formatBlock=this.wrapCommand(function(a){a=agent.isMSIE?"<"+a+">":a,document.execCommand("FormatBlock",!1,a)}),this.formatPara=function(){this.formatBlock("P")},a.memo("help.formatPara",g.help.formatPara);for(var r=1;6>=r;r++)this["formatH"+r]=function(a){return function(){this.formatBlock("H"+a)}}(r),a.memo("help.formatH"+r,g.help["formatH"+r]);this.fontSize=function(a){var b=this.createRange();if(b&&b.isCollapsed()){var c=j.styleNodes(b),d=list.head(c);$(c).css({"font-size":a+"px"}),d&&!dom.nodeLength(d)&&(d.innerHTML=dom.ZERO_WIDTH_NBSP_CHAR,range.createFromNodeAfter(d.firstChild).select(),e.data(KEY_BOGUS,d))}else o(),$(j.styleNodes(b)).css({"font-size":a+"px"}),p()},this.insertHorizontalRule=this.wrapCommand(function(){var a=this.createRange().insertNode(dom.create("HR"));a.nextSibling&&range.create(a.nextSibling,0).normalize().select()}),a.memo("help.insertHorizontalRule",g.help.insertHorizontalRule),this.removeBogus=function(){var a=e.data(KEY_BOGUS);if(a){var b=list.find(list.from(a.childNodes),dom.isText),c=b.nodeValue.indexOf(dom.ZERO_WIDTH_NBSP_CHAR);-1!==c&&b.deleteData(c,1),dom.isEmpty(a)&&dom.remove(a),e.removeData(KEY_BOGUS)}},this.lineHeight=this.wrapCommand(function(a){j.stylePara(this.createRange(),{lineHeight:a})}),this.unlink=function(){var a=this.createRange();if(a.isOnAnchor()){var b=dom.ancestor(a.sc,dom.isAnchor);a=range.createFromNode(b),a.select(),o(),document.execCommand("unlink"),p()}},this.createLink=this.wrapCommand(function(a){var b=a.url,c=a.text,d=a.isNewWindow,e=a.range||this.createRange(),g=e.toString()!==c;"string"==typeof b&&(b=b.trim()),f.onCreateLink&&(b=f.onCreateLink(b));var h=[];if(g){e=e.deleteContents();var i=e.insertNode($("<A>"+c+"</A>")[0]);h.push(i)}else h=j.styleNodes(e,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});$.each(h,function(a,c){b=/^[A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?/.test(b)?b:"http://"+b,$(c).attr("href",b),d?$(c).attr("target","_blank"):$(c).removeAttr("target")});var k=range.createFromNodeBefore(list.head(h)),l=k.getStartPoint(),m=range.createFromNodeAfter(list.last(h)),n=m.getEndPoint();range.create(l.node,l.offset,n.node,n.offset).select()}),this.getLinkInfo=function(){var a=this.createRange().expand(dom.isAnchor),b=$(list.head(a.nodes(dom.isAnchor)));return{range:a,text:a.toString(),isNewWindow:b.length?"_blank"===b.attr("target"):!1,url:b.length?b.attr("href"):""}},this.color=this.wrapCommand(function(a){var b=a.foreColor,c=a.backColor;b&&document.execCommand("foreColor",!1,b),c&&document.execCommand("backColor",!1,c)}),this.insertTable=this.wrapCommand(function(a){var b=a.split("x"),c=this.createRange().deleteContents();c.insertNode(k.createTable(b[0],b[1],f))}),this.floatMe=this.wrapCommand(function(a){var b=$(this.restoreTarget());b.css("float",a)}),this.resize=this.wrapCommand(function(a){var b=$(this.restoreTarget());b.css({width:100*a+"%",height:""})}),this.resizeTo=function(a,b,c){var d;if(c){var e=a.y/a.x,f=b.data("ratio");d={width:f>e?a.x:a.y/f,height:f>e?a.x*f:a.y}}else d={width:a.x,height:a.y};b.css(d)},this.removeMedia=this.wrapCommand(function(){var b=$(this.restoreTarget()).detach();a.triggerEvent("media.delete",b,e)}),this.hasFocus=function(){return e.is(":focus")},this.focus=function(){this.hasFocus()||e.focus()},this.isEmpty=function(){return dom.isEmpty(e[0])||dom.emptyPara===e.html()},this.empty=function(){a.invoke("code",dom.emptyPara)}},Clipboard=function(a){var b=this,c=a.layoutInfo.editable;this.events={"summernote.keydown":function(c,d){b.needKeydownHook()&&(d.ctrlKey||d.metaKey)&&d.keyCode===key.code.V&&(a.invoke("editor.saveRange"),b.$paste.focus(),setTimeout(function(){b.pasteByHook()},0))}},this.needKeydownHook=function(){return agent.isMSIE&&agent.browserVersion>10||agent.isFF},this.initialize=function(){this.needKeydownHook()?(this.$paste=$('<div tabindex="-1" />').attr("contenteditable",!0).css({position:"absolute",left:-1e5,opacity:0}),c.before(this.$paste),this.$paste.on("paste",function(b){a.triggerEvent("paste",b)})):c.on("paste",this.pasteByEvent)},this.destroy=function(){this.needKeydownHook()&&(this.$paste.remove(),this.$paste=null)},this.pasteByHook=function(){var b=this.$paste[0].firstChild;if(dom.isImg(b)){for(var c=b.src,d=atob(c.split(",")[1]),e=new Uint8Array(d.length),f=0;f<d.length;f++)e[f]=d.charCodeAt(f);var g=new Blob([e],{type:"image/png"});g.name="clipboard.png",a.invoke("editor.restoreRange"),a.invoke("editor.focus"),a.invoke("editor.insertImagesOrCallback",[g])}else{var h=$("<div />").html(this.$paste.html()).html();a.invoke("editor.restoreRange"),a.invoke("editor.focus"),h&&a.invoke("editor.pasteHTML",h)}this.$paste.empty()},this.pasteByEvent=function(b){var c=b.originalEvent.clipboardData;if(c&&c.items&&c.items.length){var d=list.head(c.items);"file"===d.kind&&-1!==d.type.indexOf("image/")&&a.invoke("editor.insertImagesOrCallback",[d.getAsFile()]),a.invoke("editor.afterCommand")}}},Dropzone=function(a){var b=$(document),c=a.layoutInfo.editor,d=a.layoutInfo.editable,e=a.options,f=e.langInfo,g={},h=$(['<div class="note-dropzone">',' <div class="note-dropzone-message"/>',"</div>"].join("")).prependTo(c),i=function(){Object.keys(g).forEach(function(a){b.off(a.substr(2).toLowerCase(),g[a])}),g={}};this.initialize=function(){e.disableDragAndDrop?(g.onDrop=function(a){a.preventDefault()},b.on("drop",g.onDrop)):this.attachDragAndDropEvent()},this.attachDragAndDropEvent=function(){var e=$(),i=h.find(".note-dropzone-message");g.onDragenter=function(b){var d=a.invoke("codeview.isActivated"),g=c.width()>0&&c.height()>0;d||e.length||!g||(c.addClass("dragover"),h.width(c.width()),h.height(c.height()),i.text(f.image.dragImageHere)),e=e.add(b.target)},g.onDragleave=function(a){e=e.not(a.target),e.length||c.removeClass("dragover")},g.onDrop=function(){e=$(),c.removeClass("dragover")},b.on("dragenter",g.onDragenter).on("dragleave",g.onDragleave).on("drop",g.onDrop),h.on("dragenter",function(){h.addClass("hover"),i.text(f.image.dropImage)}).on("dragleave",function(){h.removeClass("hover"),i.text(f.image.dragImageHere)}),h.on("drop",function(b){var c=b.originalEvent.dataTransfer;c&&c.files&&c.files.length?(b.preventDefault(),d.focus(),a.invoke("editor.insertImagesOrCallback",c.files)):$.each(c.types,function(b,d){var e=c.getData(d);d.toLowerCase().indexOf("text")>-1?a.invoke("editor.pasteHTML",e):$(e).each(function(){a.invoke("editor.insertNode",this)})})}).on("dragover",!1)},this.destroy=function(){i()}},CodeMirror;agent.hasCodeMirror&&(agent.isSupportAmd?require(["codemirror"],function(a){CodeMirror=a}):CodeMirror=window.CodeMirror);var Codeview=function(a){var b=a.layoutInfo.editor,c=a.layoutInfo.editable,d=a.layoutInfo.codable,e=a.options;this.sync=function(){var a=this.isActivated();a&&agent.hasCodeMirror&&d.data("cmEditor").save()},this.isActivated=function(){return b.hasClass("codeview")},this.toggle=function(){this.isActivated()?this.deactivate():this.activate(),a.triggerEvent("codeview.toggled")},this.activate=function(){if(d.val(dom.html(c,e.prettifyHtml)),d.height(c.height()),a.invoke("toolbar.updateCodeview",!0),b.addClass("codeview"),d.focus(),agent.hasCodeMirror){var f=CodeMirror.fromTextArea(d[0],e.codemirror);if(e.codemirror.tern){var g=new CodeMirror.TernServer(e.codemirror.tern);f.ternServer=g,f.on("cursorActivity",function(a){g.updateArgHints(a)})}f.setSize(null,c.outerHeight()),d.data("cmEditor",f)}},this.deactivate=function(){if(agent.hasCodeMirror){var f=d.data("cmEditor");d.val(f.getValue()),f.toTextArea()}var g=dom.value(d,e.prettifyHtml)||dom.emptyPara,h=c.html()!==g;c.html(g),c.height(e.height?d.height():"auto"),b.removeClass("codeview"),h&&a.triggerEvent("change",c.html(),c),c.focus(),a.invoke("toolbar.updateCodeview",!1)},this.destroy=function(){this.isActivated()&&this.deactivate()}},EDITABLE_PADDING=24,Statusbar=function(a){var b=$(document),c=a.layoutInfo.statusbar,d=a.layoutInfo.editable,e=a.options;this.initialize=function(){e.airMode||e.disableResizeEditor||c.on("mousedown",function(a){a.preventDefault(),a.stopPropagation();var c=d.offset().top-b.scrollTop();b.on("mousemove",function(a){var b=a.clientY-(c+EDITABLE_PADDING);b=e.minheight>0?Math.max(b,e.minheight):b,b=e.maxHeight>0?Math.min(b,e.maxHeight):b,d.height(b)}).one("mouseup",function(){b.off("mousemove")})})},this.destroy=function(){c.off(),c.remove()}},Fullscreen=function(a){var b=a.layoutInfo.editor,c=a.layoutInfo.toolbar,d=a.layoutInfo.editable,e=a.layoutInfo.codable,f=$(window),g=$("html, body");this.toggle=function(){var h=function(a){d.css("height",a.h),e.css("height",a.h),e.data("cmeditor")&&e.data("cmeditor").setsize(null,a.h)};b.toggleClass("fullscreen"),this.isFullscreen()?(d.data("orgHeight",d.css("height")),f.on("resize",function(){h({h:f.height()-c.outerHeight()})}).trigger("resize"),g.css("overflow","hidden")):(f.off("resize"),h({h:d.data("orgHeight")}),g.css("overflow","visible")),a.invoke("toolbar.updateFullscreen",this.isFullscreen())},this.isFullscreen=function(){return b.hasClass("fullscreen")}},Handle=function(a){var b=this,c=$(document),d=a.layoutInfo.editingArea,e=a.options;this.events={"summernote.mousedown":function(a,c){b.update(c.target)&&c.preventDefault()},"summernote.keyup summernote.scroll summernote.change summernote.dialog.shown":function(){b.update()}},this.initialize=function(){this.$handle=$(['<div class="note-handle">','<div class="note-control-selection">','<div class="note-control-selection-bg"></div>','<div class="note-control-holder note-control-nw"></div>','<div class="note-control-holder note-control-ne"></div>','<div class="note-control-holder note-control-sw"></div>','<div class="',e.disableResizeImage?"note-control-holder":"note-control-sizing",' note-control-se"></div>',e.disableResizeImage?"":'<div class="note-control-selection-info"></div>',"</div>","</div>"].join("")).prependTo(d),this.$handle.on("mousedown",function(d){if(dom.isControlSizing(d.target)){d.preventDefault(),d.stopPropagation();var e=b.$handle.find(".note-control-selection").data("target"),f=e.offset(),g=c.scrollTop();c.on("mousemove",function(c){a.invoke("editor.resizeTo",{x:c.clientX-f.left,y:c.clientY-(f.top-g)},e,!c.shiftKey),b.update(e[0])}).one("mouseup",function(b){b.preventDefault(),c.off("mousemove"),a.invoke("editor.afterCommand")}),e.data("ratio")||e.data("ratio",e.height()/e.width())}})},this.destroy=function(){this.$handle.remove()},this.update=function(b){var c=dom.isImg(b),d=this.$handle.find(".note-control-selection");if(a.invoke("imagePopover.update",b),c){var e=$(b),f=e.position(),g={w:e.outerWidth(!0),h:e.outerHeight(!0)};d.css({display:"block",left:f.left,top:f.top,width:g.w,height:g.h}).data("target",e);var h=g.w+"x"+g.h;d.find(".note-control-selection-info").text(h),a.invoke("editor.saveTarget",b)}else this.hide();return c},this.hide=function(){a.invoke("editor.clearTarget"),this.$handle.children().hide()}},AutoLink=function(a){var b=this,c="http://",d=/^([A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i;this.events={"summernote.keyup":function(a,c){c.isDefaultPrevented()||b.handleKeyup(c)},"summernote.keydown":function(a,c){b.handleKeydown(c)}},this.initialize=function(){this.lastWordRange=null},this.destroy=function(){this.lastWordRange=null},this.replace=function(){if(this.lastWordRange){var b=this.lastWordRange.toString(),e=b.match(d);if(e&&(e[1]||e[2])){var f=e[1]?b:c+b,g=$("<a />").html(b).attr("href",f)[0];this.lastWordRange.insertNode(g),this.lastWordRange=null,a.invoke("editor.focus")}}},this.handleKeydown=function(b){if(list.contains([key.code.ENTER,key.code.SPACE],b.keyCode)){var c=a.invoke("editor.createRange").getWordRange();this.lastWordRange=c}},this.handleKeyup=function(a){list.contains([key.code.ENTER,key.code.SPACE],a.keyCode)&&this.replace()}},AutoSync=function(a){var b=a.layoutInfo.note;this.events={"summernote.change":function(){b.val(a.invoke("code"))}},this.shouldInitialize=function(){return dom.isTextarea(b[0])}},Placeholder=function(a){var b=this,c=a.layoutInfo.editingArea,d=a.options;this.events={"summernote.init summernote.change":function(){b.update()},"summernote.codeview.toggled":function(){b.update()}},this.shouldInitialize=function(){return!!d.placeholder},this.initialize=function(){this.$placeholder=$('<div class="note-placeholder">'),this.$placeholder.on("click",function(){a.invoke("focus")}).text(d.placeholder).prependTo(c)},this.destroy=function(){this.$placeholder.remove()},this.update=function(){var b=!a.invoke("codeview.isActivated")&&a.invoke("editor.isEmpty");this.$placeholder.toggle(b)}},Buttons=function(a){var b=this,c=$.summernote.ui,d=a.layoutInfo.toolbar,e=a.options,f=e.langInfo,g=func.invertObject(e.keyMap[agent.isMac?"mac":"pc"]),h=this.representShortcut=function(a){var b=g[a];return e.shortcuts&&b?(agent.isMac&&(b=b.replace("CMD","⌘").replace("SHIFT","⇧")),b=b.replace("BACKSLASH","\\").replace("SLASH","/").replace("LEFTBRACKET","[").replace("RIGHTBRACKET","]")," ("+b+")"):""};this.initialize=function(){this.addToolbarButtons(),this.addImagePopoverButtons(),this.addLinkPopoverButtons(),this.fontInstalledMap={}},this.destroy=function(){delete this.fontInstalledMap},this.isFontInstalled=function(a){return b.fontInstalledMap.hasOwnProperty(a)||(b.fontInstalledMap[a]=agent.isFontInstalled(a)||list.contains(e.fontNamesIgnoreCheck,a)),b.fontInstalledMap[a]},this.addToolbarButtons=function(){a.memo("button.style",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:c.icon(e.icons.magic)+" "+c.icon(e.icons.caret,"span"),tooltip:f.style.style,data:{toggle:"dropdown"}}),c.dropdown({className:"dropdown-style",items:a.options.styleTags,template:function(a){"string"==typeof a&&(a={tag:a,title:f.style.hasOwnProperty(a)?f.style[a]:a});var b=a.tag,c=a.title,d=a.style?' style="'+a.style+'" ':"",e=a.className?' class="'+a.className+'"':"";return"<"+b+d+e+">"+c+"</"+b+">"},click:a.createInvokeHandler("editor.formatBlock")})]).render()}),a.memo("button.bold",function(){return c.button({className:"note-btn-bold",contents:c.icon(e.icons.bold),tooltip:f.font.bold+h("bold"),click:a.createInvokeHandler("editor.bold")}).render()}),a.memo("button.italic",function(){return c.button({className:"note-btn-italic",contents:c.icon(e.icons.italic),tooltip:f.font.italic+h("italic"),click:a.createInvokeHandler("editor.italic")}).render()}),a.memo("button.underline",function(){return c.button({className:"note-btn-underline",contents:c.icon(e.icons.underline),tooltip:f.font.underline+h("underline"),click:a.createInvokeHandler("editor.underline")}).render()}),a.memo("button.clear",function(){return c.button({contents:c.icon(e.icons.eraser),tooltip:f.font.clear+h("removeFormat"),click:a.createInvokeHandler("editor.removeFormat")}).render()}),a.memo("button.strikethrough",function(){return c.button({className:"note-btn-strikethrough",contents:c.icon(e.icons.strikethrough),tooltip:f.font.strikethrough+h("strikethrough"),click:a.createInvokeHandler("editor.strikethrough")}).render()}),a.memo("button.superscript",function(){return c.button({className:"note-btn-superscript",contents:c.icon(e.icons.superscript),tooltip:f.font.superscript,click:a.createInvokeHandler("editor.superscript")}).render()}),a.memo("button.subscript",function(){return c.button({className:"note-btn-subscript",contents:c.icon(e.icons.subscript),tooltip:f.font.subscript,click:a.createInvokeHandler("editor.subscript")}).render()}),a.memo("button.fontname",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:'<span class="note-current-fontname"/> '+c.icon(e.icons.caret,"span"),tooltip:f.font.name,data:{toggle:"dropdown"}}),c.dropdownCheck({className:"dropdown-fontname",checkClassName:e.icons.menuCheck,items:e.fontNames.filter(b.isFontInstalled),template:function(a){return'<span style="font-family:'+a+'">'+a+"</span>"},click:a.createInvokeHandler("editor.fontName")})]).render()}),a.memo("button.fontsize",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:'<span class="note-current-fontsize"/>'+c.icon(e.icons.caret,"span"),tooltip:f.font.size,data:{toggle:"dropdown"}}),c.dropdownCheck({className:"dropdown-fontsize",checkClassName:e.icons.menuCheck,items:e.fontSizes,click:a.createInvokeHandler("editor.fontSize")})]).render()}),a.memo("button.color",function(){return c.buttonGroup({className:"note-color",children:[c.button({className:"note-current-color-button",contents:c.icon(e.icons.font+" note-recent-color"),tooltip:f.color.recent,click:function(b){var c=$(b.currentTarget);a.invoke("editor.color",{backColor:c.attr("data-backColor"),foreColor:c.attr("data-foreColor")})},callback:function(a){var b=a.find(".note-recent-color");b.css("background-color","#FFFF00"),a.attr("data-backColor","#FFFF00")}}),c.button({className:"dropdown-toggle",contents:c.icon(e.icons.caret,"span"),tooltip:f.color.more,data:{toggle:"dropdown"}}),c.dropdown({items:["<li>",'<div class="btn-group">',' <div class="note-palette-title">'+f.color.background+"</div>"," <div>",' <button type="button" class="note-color-reset btn btn-default" data-event="backColor" data-value="inherit">',f.color.transparent," </button>"," </div>",' <div class="note-holder" data-event="backColor"/>',"</div>",'<div class="btn-group">',' <div class="note-palette-title">'+f.color.foreground+"</div>"," <div>",' <button type="button" class="note-color-reset btn btn-default" data-event="removeFormat" data-value="foreColor">',f.color.resetToDefault," </button>"," </div>",' <div class="note-holder" data-event="foreColor"/>',"</div>","</li>"].join(""),callback:function(a){a.find(".note-holder").each(function(){var a=$(this);a.append(c.palette({colors:e.colors,eventName:a.data("event")}).render())})},click:function(b){var c=$(b.target),d=c.data("event"),e=c.data("value");if(d&&e){var f="backColor"===d?"background-color":"color",g=c.closest(".note-color").find(".note-recent-color"),h=c.closest(".note-color").find(".note-current-color-button");g.css(f,e),h.attr("data-"+d,e),a.invoke("editor."+d,e)}}})]}).render()}),a.memo("button.ul",function(){return c.button({contents:c.icon(e.icons.unorderedlist),tooltip:f.lists.unordered+h("insertUnorderedList"),click:a.createInvokeHandler("editor.insertUnorderedList")}).render()}),a.memo("button.ol",function(){return c.button({contents:c.icon(e.icons.orderedlist),tooltip:f.lists.ordered+h("insertOrderedList"),click:a.createInvokeHandler("editor.insertOrderedList")}).render()});var d=c.button({contents:c.icon(e.icons.alignLeft),tooltip:f.paragraph.left+h("justifyLeft"),click:a.createInvokeHandler("editor.justifyLeft")}),g=c.button({contents:c.icon(e.icons.alignCenter),tooltip:f.paragraph.center+h("justifyCenter"),click:a.createInvokeHandler("editor.justifyCenter")}),i=c.button({contents:c.icon(e.icons.alignRight),tooltip:f.paragraph.right+h("justifyRight"),click:a.createInvokeHandler("editor.justifyRight")}),j=c.button({contents:c.icon(e.icons.alignJustify),tooltip:f.paragraph.justify+h("justifyFull"),click:a.createInvokeHandler("editor.justifyFull")}),k=c.button({contents:c.icon(e.icons.outdent),tooltip:f.paragraph.outdent+h("outdent"),click:a.createInvokeHandler("editor.outdent")}),l=c.button({contents:c.icon(e.icons.indent),tooltip:f.paragraph.indent+h("indent"),click:a.createInvokeHandler("editor.indent")});a.memo("button.justifyLeft",func.invoke(d,"render")),a.memo("button.justifyCenter",func.invoke(g,"render")),a.memo("button.justifyRight",func.invoke(i,"render")),a.memo("button.justifyFull",func.invoke(j,"render")),a.memo("button.outdent",func.invoke(k,"render")),a.memo("button.indent",func.invoke(l,"render")),a.memo("button.paragraph",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:c.icon(e.icons.alignLeft)+" "+c.icon(e.icons.caret,"span"),tooltip:f.paragraph.paragraph,data:{toggle:"dropdown"}}),c.dropdown([c.buttonGroup({className:"note-align",children:[d,g,i,j]}),c.buttonGroup({className:"note-list",children:[k,l]})])]).render()}),a.memo("button.height",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:c.icon(e.icons.textHeight)+" "+c.icon(e.icons.caret,"span"), +tooltip:f.font.height,data:{toggle:"dropdown"}}),c.dropdownCheck({items:e.lineHeights,checkClassName:e.icons.menuCheck,className:"dropdown-line-height",click:a.createInvokeHandler("editor.lineHeight")})]).render()}),a.memo("button.table",function(){return c.buttonGroup([c.button({className:"dropdown-toggle",contents:c.icon(e.icons.table)+" "+c.icon(e.icons.caret,"span"),tooltip:f.table.table,data:{toggle:"dropdown"}}),c.dropdown({className:"note-table",items:['<div class="note-dimension-picker">',' <div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"/>',' <div class="note-dimension-picker-highlighted"/>',' <div class="note-dimension-picker-unhighlighted"/>',"</div>",'<div class="note-dimension-display">1 x 1</div>'].join("")})],{callback:function(c){var d=c.find(".note-dimension-picker-mousecatcher");d.css({width:e.insertTableMaxSize.col+"em",height:e.insertTableMaxSize.row+"em"}).mousedown(a.createInvokeHandler("editor.insertTable")).on("mousemove",b.tableMoveHandler)}}).render()}),a.memo("button.link",function(){return c.button({contents:c.icon(e.icons.link),tooltip:f.link.link+h("linkDialog.show"),click:a.createInvokeHandler("linkDialog.show")}).render()}),a.memo("button.picture",function(){return c.button({contents:c.icon(e.icons.picture),tooltip:f.image.image,click:a.createInvokeHandler("imageDialog.show")}).render()}),a.memo("button.video",function(){return c.button({contents:c.icon(e.icons.video),tooltip:f.video.video,click:a.createInvokeHandler("videoDialog.show")}).render()}),a.memo("button.hr",function(){return c.button({contents:c.icon(e.icons.minus),tooltip:f.hr.insert+h("insertHorizontalRule"),click:a.createInvokeHandler("editor.insertHorizontalRule")}).render()}),a.memo("button.fullscreen",function(){return c.button({className:"btn-fullscreen",contents:c.icon(e.icons.arrowsAlt),tooltip:f.options.fullscreen,click:a.createInvokeHandler("fullscreen.toggle")}).render()}),a.memo("button.codeview",function(){return c.button({className:"btn-codeview",contents:c.icon(e.icons.code),tooltip:f.options.codeview,click:a.createInvokeHandler("codeview.toggle")}).render()}),a.memo("button.redo",function(){return c.button({contents:c.icon(e.icons.redo),tooltip:f.history.redo+h("redo"),click:a.createInvokeHandler("editor.redo")}).render()}),a.memo("button.undo",function(){return c.button({contents:c.icon(e.icons.undo),tooltip:f.history.undo+h("undo"),click:a.createInvokeHandler("editor.undo")}).render()}),a.memo("button.help",function(){return c.button({contents:c.icon(e.icons.question),tooltip:f.options.help,click:a.createInvokeHandler("helpDialog.show")}).render()})},this.addImagePopoverButtons=function(){a.memo("button.imageSize100",function(){return c.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:f.image.resizeFull,click:a.createInvokeHandler("editor.resize","1")}).render()}),a.memo("button.imageSize50",function(){return c.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:f.image.resizeHalf,click:a.createInvokeHandler("editor.resize","0.5")}).render()}),a.memo("button.imageSize25",function(){return c.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:f.image.resizeQuarter,click:a.createInvokeHandler("editor.resize","0.25")}).render()}),a.memo("button.floatLeft",function(){return c.button({contents:c.icon(e.icons.alignLeft),tooltip:f.image.floatLeft,click:a.createInvokeHandler("editor.floatMe","left")}).render()}),a.memo("button.floatRight",function(){return c.button({contents:c.icon(e.icons.alignRight),tooltip:f.image.floatRight,click:a.createInvokeHandler("editor.floatMe","right")}).render()}),a.memo("button.floatNone",function(){return c.button({contents:c.icon(e.icons.alignJustify),tooltip:f.image.floatNone,click:a.createInvokeHandler("editor.floatMe","none")}).render()}),a.memo("button.removeMedia",function(){return c.button({contents:c.icon(e.icons.trash),tooltip:f.image.remove,click:a.createInvokeHandler("editor.removeMedia")}).render()})},this.addLinkPopoverButtons=function(){a.memo("button.linkDialogShow",function(){return c.button({contents:c.icon(e.icons.link),tooltip:f.link.edit,click:a.createInvokeHandler("linkDialog.show")}).render()}),a.memo("button.unlink",function(){return c.button({contents:c.icon(e.icons.unlink),tooltip:f.link.unlink,click:a.createInvokeHandler("editor.unlink")}).render()})},this.build=function(b,d){for(var e=0,f=d.length;f>e;e++){for(var g=d[e],h=g[0],i=g[1],j=c.buttonGroup({className:"note-"+h}).render(),k=0,l=i.length;l>k;k++){var m=a.memo("button."+i[k]);m&&j.append("function"==typeof m?m(a):m)}j.appendTo(b)}},this.updateCurrentStyle=function(){var c=a.invoke("editor.currentStyle");if(this.updateBtnStates({".note-btn-bold":function(){return"bold"===c["font-bold"]},".note-btn-italic":function(){return"italic"===c["font-italic"]},".note-btn-underline":function(){return"underline"===c["font-underline"]},".note-btn-subscript":function(){return"subscript"===c["font-subscript"]},".note-btn-superscript":function(){return"superscript"===c["font-superscript"]},".note-btn-strikethrough":function(){return"strikethrough"===c["font-strikethrough"]}}),c["font-family"]){var e=c["font-family"].split(",").map(function(a){return a.replace(/[\'\"]/g,"").replace(/\s+$/,"").replace(/^\s+/,"")}),f=list.find(e,b.isFontInstalled);d.find(".dropdown-fontname li a").each(function(){var a=$(this).data("value")+""==f+"";this.className=a?"checked":""}),d.find(".note-current-fontname").text(f)}if(c["font-size"]){var g=c["font-size"];d.find(".dropdown-fontsize li a").each(function(){var a=$(this).data("value")+""==g+"";this.className=a?"checked":""}),d.find(".note-current-fontsize").text(g)}if(c["line-height"]){var h=c["line-height"];d.find(".dropdown-line-height li a").each(function(){var a=$(this).data("value")+""==h+"";this.className=a?"checked":""})}},this.updateBtnStates=function(a){$.each(a,function(a,b){c.toggleBtnActive(d.find(a),b())})},this.tableMoveHandler=function(a){var b,c=18,d=$(a.target.parentNode),f=d.next(),g=d.find(".note-dimension-picker-mousecatcher"),h=d.find(".note-dimension-picker-highlighted"),i=d.find(".note-dimension-picker-unhighlighted");if(void 0===a.offsetX){var j=$(a.target).offset();b={x:a.pageX-j.left,y:a.pageY-j.top}}else b={x:a.offsetX,y:a.offsetY};var k={c:Math.ceil(b.x/c)||1,r:Math.ceil(b.y/c)||1};h.css({width:k.c+"em",height:k.r+"em"}),g.data("value",k.c+"x"+k.r),3<k.c&&k.c<e.insertTableMaxSize.col&&i.css({width:k.c+1+"em"}),3<k.r&&k.r<e.insertTableMaxSize.row&&i.css({height:k.r+1+"em"}),f.html(k.c+" x "+k.r)}},Toolbar=function(a){var b=$.summernote.ui,c=a.layoutInfo.note,d=a.layoutInfo.toolbar,e=a.options;this.shouldInitialize=function(){return!e.airMode},this.initialize=function(){e.toolbar=e.toolbar||[],e.toolbar.length?a.invoke("buttons.build",d,e.toolbar):d.hide(),e.toolbarContainer&&d.appendTo(e.toolbarContainer),c.on("summernote.keyup summernote.mouseup summernote.change",function(){a.invoke("buttons.updateCurrentStyle")}),a.invoke("buttons.updateCurrentStyle")},this.destroy=function(){d.children().remove()},this.updateFullscreen=function(a){b.toggleBtnActive(d.find(".btn-fullscreen"),a)},this.updateCodeview=function(a){b.toggleBtnActive(d.find(".btn-codeview"),a),a?this.deactivate():this.activate()},this.activate=function(a){var c=d.find("button");a||(c=c.not(".btn-codeview")),b.toggleBtn(c,!0)},this.deactivate=function(a){var c=d.find("button");a||(c=c.not(".btn-codeview")),b.toggleBtn(c,!1)}},LinkDialog=function(a){var b=this,c=$.summernote.ui,d=a.layoutInfo.editor,e=a.options,f=e.langInfo;this.initialize=function(){var a=e.dialogsInBody?$(document.body):d,b='<div class="form-group"><label>'+f.link.textToDisplay+'</label><input class="note-link-text form-control" type="text" /></div><div class="form-group"><label>'+f.link.url+'</label><input class="note-link-url form-control" type="text" value="http://" /></div>'+(e.disableLinkTarget?"":'<div class="checkbox"><label><input type="checkbox" checked> '+f.link.openInNewWindow+"</label></div>"),g='<button href="#" class="btn btn-primary note-link-btn disabled" disabled>'+f.link.insert+"</button>";this.$dialog=c.dialog({className:"link-dialog",title:f.link.insert,fade:e.dialogsFade,body:b,footer:g}).render().appendTo(a)},this.destroy=function(){c.hideDialog(this.$dialog),this.$dialog.remove()},this.bindEnterKey=function(a,b){a.on("keypress",function(a){a.keyCode===key.code.ENTER&&b.trigger("click")})},this.toggleLinkBtn=function(a,b,d){c.toggleBtn(a,b.val()&&d.val())},this.showLinkDialog=function(d){return $.Deferred(function(e){var f=b.$dialog.find(".note-link-text"),g=b.$dialog.find(".note-link-url"),h=b.$dialog.find(".note-link-btn"),i=b.$dialog.find("input[type=checkbox]");c.onDialogShown(b.$dialog,function(){a.triggerEvent("dialog.shown"),d.url||(d.url=d.text),f.val(d.text);var c=function(){b.toggleLinkBtn(h,f,g),d.text=f.val()};f.on("input",c).on("paste",function(){setTimeout(c,0)});var j=function(){b.toggleLinkBtn(h,f,g),d.text||f.val(g.val())};g.on("input",j).on("paste",function(){setTimeout(j,0)}).val(d.url).trigger("focus"),b.toggleLinkBtn(h,f,g),b.bindEnterKey(g,h),b.bindEnterKey(f,h),i.prop("checked",d.isNewWindow),h.one("click",function(a){a.preventDefault(),e.resolve({range:d.range,url:g.val(),text:f.val(),isNewWindow:i.is(":checked")}),b.$dialog.modal("hide")})}),c.onDialogHidden(b.$dialog,function(){f.off("input paste keypress"),g.off("input paste keypress"),h.off("click"),"pending"===e.state()&&e.reject()}),c.showDialog(b.$dialog)}).promise()},this.show=function(){var b=a.invoke("editor.getLinkInfo");a.invoke("editor.saveRange"),this.showLinkDialog(b).then(function(b){a.invoke("editor.restoreRange"),a.invoke("editor.createLink",b)}).fail(function(){a.invoke("editor.restoreRange")})},a.memo("help.linkDialog.show",e.langInfo.help["linkDialog.show"])},LinkPopover=function(a){var b=this,c=$.summernote.ui,d=a.options;this.events={"summernote.keyup summernote.mouseup summernote.change summernote.scroll":function(){b.update()},"summernote.dialog.shown":function(){b.hide()}},this.shouldInitialize=function(){return!list.isEmpty(d.popover.link)},this.initialize=function(){this.$popover=c.popover({className:"note-link-popover",callback:function(a){var b=a.find(".popover-content");b.prepend('<span><a target="_blank"></a>&nbsp;</span>')}}).render().appendTo("body");var b=this.$popover.find(".popover-content");a.invoke("buttons.build",b,d.popover.link)},this.destroy=function(){this.$popover.remove()},this.update=function(){if(!a.invoke("editor.hasFocus"))return void this.hide();var b=a.invoke("editor.createRange");if(b.isCollapsed()&&b.isOnAnchor()){var c=dom.ancestor(b.sc,dom.isAnchor),d=$(c).attr("href");this.$popover.find("a").attr("href",d).html(d);var e=dom.posFromPlaceholder(c);this.$popover.css({display:"block",left:e.left,top:e.top})}else this.hide()},this.hide=function(){this.$popover.hide()}},ImageDialog=function(a){var b=this,c=$.summernote.ui,d=a.layoutInfo.editor,e=a.options,f=e.langInfo;this.initialize=function(){var a=e.dialogsInBody?$(document.body):d,b="";if(e.maximumImageFileSize){var g=Math.floor(Math.log(e.maximumImageFileSize)/Math.log(1024)),h=1*(e.maximumImageFileSize/Math.pow(1024,g)).toFixed(2)+" "+" KMGTP"[g]+"B";b="<small>"+f.image.maximumFileSize+" : "+h+"</small>"}var i='<div class="form-group note-group-select-from-files"><label>'+f.image.selectFromFiles+'</label><input class="note-image-input form-control" type="file" name="files" accept="image/*" multiple="multiple" />'+b+'</div><div class="form-group note-group-image-url" style="overflow:auto;"><label>'+f.image.url+'</label><input class="note-image-url form-control col-md-12" type="text" /></div>',j='<button href="#" class="btn btn-primary note-image-btn disabled" disabled>'+f.image.insert+"</button>";this.$dialog=c.dialog({title:f.image.insert,fade:e.dialogsFade,body:i,footer:j}).render().appendTo(a)},this.destroy=function(){c.hideDialog(this.$dialog),this.$dialog.remove()},this.bindEnterKey=function(a,b){a.on("keypress",function(a){a.keyCode===key.code.ENTER&&b.trigger("click")})},this.show=function(){a.invoke("editor.saveRange"),this.showImageDialog().then(function(d){c.hideDialog(b.$dialog),a.invoke("editor.restoreRange"),"string"==typeof d?a.invoke("editor.insertImage",d):a.invoke("editor.insertImagesOrCallback",d)}).fail(function(){a.invoke("editor.restoreRange")})},this.showImageDialog=function(){return $.Deferred(function(d){var e=b.$dialog.find(".note-image-input"),f=b.$dialog.find(".note-image-url"),g=b.$dialog.find(".note-image-btn");c.onDialogShown(b.$dialog,function(){a.triggerEvent("dialog.shown"),e.replaceWith(e.clone().on("change",function(){d.resolve(this.files||this.value)}).val("")),g.click(function(a){a.preventDefault(),d.resolve(f.val())}),f.on("keyup paste",function(){var a=f.val();c.toggleBtn(g,a)}).val("").trigger("focus"),b.bindEnterKey(f,g)}),c.onDialogHidden(b.$dialog,function(){e.off("change"),f.off("keyup paste keypress"),g.off("click"),"pending"===d.state()&&d.reject()}),c.showDialog(b.$dialog)})}},ImagePopover=function(a){var b=$.summernote.ui,c=a.options;this.shouldInitialize=function(){return!list.isEmpty(c.popover.image)},this.initialize=function(){this.$popover=b.popover({className:"note-image-popover"}).render().appendTo("body");var d=this.$popover.find(".popover-content");a.invoke("buttons.build",d,c.popover.image)},this.destroy=function(){this.$popover.remove()},this.update=function(a){if(dom.isImg(a)){var b=dom.posFromPlaceholder(a);this.$popover.css({display:"block",left:b.left,top:b.top})}else this.hide()},this.hide=function(){this.$popover.hide()}},VideoDialog=function(a){var b=this,c=$.summernote.ui,d=a.layoutInfo.editor,e=a.options,f=e.langInfo;this.initialize=function(){var a=e.dialogsInBody?$(document.body):d,b='<div class="form-group row-fluid"><label>'+f.video.url+' <small class="text-muted">'+f.video.providers+'</small></label><input class="note-video-url form-control span12" type="text" /></div>',g='<button href="#" class="btn btn-primary note-video-btn disabled" disabled>'+f.video.insert+"</button>";this.$dialog=c.dialog({title:f.video.insert,fade:e.dialogsFade,body:b,footer:g}).render().appendTo(a)},this.destroy=function(){c.hideDialog(this.$dialog),this.$dialog.remove()},this.bindEnterKey=function(a,b){a.on("keypress",function(a){a.keyCode===key.code.ENTER&&b.trigger("click")})},this.createVideoNode=function(a){var b,c=/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/,d=a.match(c),e=/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/,f=a.match(e),g=/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/,h=a.match(g),i=/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/,j=a.match(i),k=/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/,l=a.match(k),m=/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/,n=a.match(m),o=/^.+.(mp4|m4v)$/,p=a.match(o),q=/^.+.(ogg|ogv)$/,r=a.match(q),s=/^.+.(webm)$/,t=a.match(s);if(d&&11===d[1].length){var u=d[1];b=$("<iframe>").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+u).attr("width","640").attr("height","360")}else if(f&&f[0].length)b=$("<iframe>").attr("frameborder",0).attr("src","https://instagram.com/p/"+f[1]+"/embed/").attr("width","612").attr("height","710").attr("scrolling","no").attr("allowtransparency","true");else if(h&&h[0].length)b=$("<iframe>").attr("frameborder",0).attr("src",h[0]+"/embed/simple").attr("width","600").attr("height","600").attr("class","vine-embed");else if(j&&j[3].length)b=$("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("src","//player.vimeo.com/video/"+j[3]).attr("width","640").attr("height","360");else if(l&&l[2].length)b=$("<iframe>").attr("frameborder",0).attr("src","//www.dailymotion.com/embed/video/"+l[2]).attr("width","640").attr("height","360");else if(n&&n[1].length)b=$("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","498").attr("width","510").attr("src","//player.youku.com/embed/"+n[1]);else{if(!(p||r||t))return!1;b=$("<video controls>").attr("src",a).attr("width","640").attr("height","360")}return b.addClass("note-video-clip"),b[0]},this.show=function(){var d=a.invoke("editor.getSelectedText");a.invoke("editor.saveRange"),this.showVideoDialog(d).then(function(d){c.hideDialog(b.$dialog),a.invoke("editor.restoreRange");var e=b.createVideoNode(d);e&&a.invoke("editor.insertNode",e)}).fail(function(){a.invoke("editor.restoreRange")})},this.showVideoDialog=function(d){return $.Deferred(function(e){var f=b.$dialog.find(".note-video-url"),g=b.$dialog.find(".note-video-btn");c.onDialogShown(b.$dialog,function(){a.triggerEvent("dialog.shown"),f.val(d).on("input",function(){c.toggleBtn(g,f.val())}).trigger("focus"),g.click(function(a){a.preventDefault(),e.resolve(f.val())}),b.bindEnterKey(f,g)}),c.onDialogHidden(b.$dialog,function(){f.off("input"),g.off("click"),"pending"===e.state()&&e.reject()}),c.showDialog(b.$dialog)})}},HelpDialog=function(a){var b=this,c=$.summernote.ui,d=a.layoutInfo.editor,e=a.options,f=e.langInfo;this.createShortCutList=function(){var b=e.keyMap[agent.isMac?"mac":"pc"];return Object.keys(b).map(function(c){var d=b[c],e=$('<div><div class="help-list-item"/></div>');return e.append($("<label><kbd>"+c+"</kdb></label>").css({width:180,"margin-right":10})).append($("<span/>").html(a.memo("help."+d)||d)),e.html()}).join("")},this.initialize=function(){var a=e.dialogsInBody?$(document.body):d,b=['<p class="text-center">','<a href="http://summernote.org/" target="_blank">Summernote 0.8.2</a> · ','<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ','<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>',"</p>"].join("");this.$dialog=c.dialog({title:f.options.help,fade:e.dialogsFade,body:this.createShortCutList(),footer:b,callback:function(a){a.find(".modal-body").css({"max-height":300,overflow:"scroll"})}}).render().appendTo(a)},this.destroy=function(){c.hideDialog(this.$dialog),this.$dialog.remove()},this.showHelpDialog=function(){return $.Deferred(function(d){c.onDialogShown(b.$dialog,function(){a.triggerEvent("dialog.shown"),d.resolve()}),c.showDialog(b.$dialog)}).promise()},this.show=function(){a.invoke("editor.saveRange"),this.showHelpDialog().then(function(){a.invoke("editor.restoreRange")})}},AirPopover=function(a){var b=this,c=$.summernote.ui,d=a.options,e=20;this.events={"summernote.keyup summernote.mouseup summernote.scroll":function(){b.update()},"summernote.change summernote.dialog.shown":function(){b.hide()},"summernote.focusout":function(a,c){agent.isFF||c.relatedTarget&&dom.ancestor(c.relatedTarget,func.eq(b.$popover[0]))||b.hide()}},this.shouldInitialize=function(){return d.airMode&&!list.isEmpty(d.popover.air)},this.initialize=function(){this.$popover=c.popover({className:"note-air-popover"}).render().appendTo("body");var b=this.$popover.find(".popover-content");a.invoke("buttons.build",b,d.popover.air)},this.destroy=function(){this.$popover.remove()},this.update=function(){var b=a.invoke("editor.currentStyle");if(b.range&&!b.range.isCollapsed()){var c=list.last(b.range.getClientRects());if(c){var d=func.rect2bnd(c);this.$popover.css({display:"block",left:Math.max(d.left+d.width/2,0)-e,top:d.top+d.height})}}else this.hide()},this.hide=function(){this.$popover.hide()}},HintPopover=function(a){var b=this,c=$.summernote.ui,d=5,e=a.options.hint||[],f=a.options.hintDirection||"bottom",g=$.isArray(e)?e:[e];this.events={"summernote.keyup":function(a,c){c.isDefaultPrevented()||b.handleKeyup(c)},"summernote.keydown":function(a,c){b.handleKeydown(c)},"summernote.dialog.shown":function(){b.hide()}},this.shouldInitialize=function(){return g.length>0},this.initialize=function(){this.lastWordRange=null,this.$popover=c.popover({className:"note-hint-popover",hideArrow:!0,direction:""}).render().appendTo("body"),this.$popover.hide(),this.$content=this.$popover.find(".popover-content"),this.$content.on("click",".note-hint-item",function(){b.$content.find(".active").removeClass("active"),$(this).addClass("active"),b.replace()})},this.destroy=function(){this.$popover.remove()},this.selectItem=function(a){this.$content.find(".active").removeClass("active"),a.addClass("active"),this.$content[0].scrollTop=a[0].offsetTop-this.$content.innerHeight()/2},this.moveDown=function(){var a=this.$content.find(".note-hint-item.active"),b=a.next();if(b.length)this.selectItem(b);else{var c=a.parent().next();c.length||(c=this.$content.find(".note-hint-group").first()),this.selectItem(c.find(".note-hint-item").first())}},this.moveUp=function(){var a=this.$content.find(".note-hint-item.active"),b=a.prev();if(b.length)this.selectItem(b);else{var c=a.parent().prev();c.length||(c=this.$content.find(".note-hint-group").last()),this.selectItem(c.find(".note-hint-item").last())}},this.replace=function(){var b=this.$content.find(".note-hint-item.active");if(b.length){var c=this.nodeFromItem(b);this.lastWordRange.insertNode(c),range.createFromNode(c).collapse().select(),this.lastWordRange=null,this.hide(),a.invoke("editor.focus")}},this.nodeFromItem=function(a){var b=g[a.data("index")],c=a.data("item"),d=b.content?b.content(c):c;return"string"==typeof d&&(d=dom.createText(d)),d},this.createItemTemplates=function(a,b){var c=g[a];return b.map(function(b,d){var e=$('<div class="note-hint-item"/>');return e.append(c.template?c.template(b):b+""),e.data({index:a,item:b}),0===a&&0===d&&e.addClass("active"),e})},this.handleKeydown=function(a){this.$popover.is(":visible")&&(a.keyCode===key.code.ENTER?(a.preventDefault(),this.replace()):a.keyCode===key.code.UP?(a.preventDefault(),this.moveUp()):a.keyCode===key.code.DOWN&&(a.preventDefault(),this.moveDown()))},this.searchKeyword=function(a,b,c){var d=g[a];if(d&&d.match.test(b)&&d.search){var e=d.match.exec(b);d.search(e[1],c)}else c()},this.createGroup=function(a,c){var d=$('<div class="note-hint-group note-hint-group-'+a+'"/>');return this.searchKeyword(a,c,function(c){c=c||[],c.length&&(d.html(b.createItemTemplates(a,c)),b.show())}),d},this.handleKeyup=function(c){if(list.contains([key.code.ENTER,key.code.UP,key.code.DOWN],c.keyCode)){if(c.keyCode===key.code.ENTER&&this.$popover.is(":visible"))return}else{var e=a.invoke("editor.createRange").getWordRange(),h=e.toString();if(g.length&&h){this.$content.empty();var i=func.rect2bnd(list.last(e.getClientRects()));i&&(this.$popover.hide(),this.lastWordRange=e,g.forEach(function(a,c){a.match.test(h)&&b.createGroup(c,h).appendTo(b.$content)}),"top"===f?this.$popover.css({left:i.left,top:i.top-this.$popover.outerHeight()-d}):this.$popover.css({left:i.left,top:i.top+i.height+d}))}else this.hide()}},this.show=function(){this.$popover.show()},this.hide=function(){this.$popover.hide()}};$.summernote=$.extend($.summernote,{version:"0.8.2",ui:ui,dom:dom,plugins:{},options:{modules:{editor:Editor,clipboard:Clipboard,dropzone:Dropzone,codeview:Codeview,statusbar:Statusbar,fullscreen:Fullscreen,handle:Handle,hintPopover:HintPopover,autoLink:AutoLink,autoSync:AutoSync,placeholder:Placeholder,buttons:Buttons,toolbar:Toolbar,linkDialog:LinkDialog,linkPopover:LinkPopover,imageDialog:ImageDialog,imagePopover:ImagePopover,videoDialog:VideoDialog,helpDialog:HelpDialog,airPopover:AirPopover},buttons:{},lang:"en-US",toolbar:[["style",["style"]],["font",["bold","underline","clear"]],["fontname",["fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["table",["table"]],["insert",["link","picture","video"]],["view",["fullscreen","codeview","help"]]],popover:{image:[["imagesize",["imageSize100","imageSize50","imageSize25"]],["float",["floatLeft","floatRight","floatNone"]],["remove",["removeMedia"]]],link:[["link",["linkDialogShow","unlink"]]],air:[["color",["color"]],["font",["bold","underline","clear"]],["para",["ul","paragraph"]],["table",["table"]],["insert",["link","picture"]]]},airMode:!1,width:null,height:null,focus:!1,tabSize:4,styleWithSpan:!0,shortcuts:!0,textareaAutoSync:!0,direction:null,styleTags:["p","blockquote","pre","h1","h2","h3","h4","h5","h6"],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Tahoma","Times New Roman","Verdana"],fontSizes:["8","9","10","11","12","14","18","24","36"],colors:[["#000000","#424242","#636363","#9C9C94","#CEC6CE","#EFEFEF","#F7F7F7","#FFFFFF"],["#FF0000","#FF9C00","#FFFF00","#00FF00","#00FFFF","#0000FF","#9C00FF","#FF00FF"],["#F7C6CE","#FFE7CE","#FFEFC6","#D6EFD6","#CEDEE7","#CEE7F7","#D6D6E7","#E7D6DE"],["#E79C9C","#FFC69C","#FFE79C","#B5D6A5","#A5C6CE","#9CC6EF","#B5A5D6","#D6A5BD"],["#E76363","#F7AD6B","#FFD663","#94BD7B","#73A5AD","#6BADDE","#8C7BC6","#C67BA5"],["#CE0000","#E79439","#EFC631","#6BA54A","#4A7B8C","#3984C6","#634AA5","#A54A7B"],["#9C0000","#B56308","#BD9400","#397B21","#104A5A","#085294","#311873","#731842"],["#630000","#7B3900","#846300","#295218","#083139","#003163","#21104A","#4A1031"]],lineHeights:["1.0","1.2","1.4","1.5","1.6","1.8","2.0","3.0"],tableClassName:"table table-bordered",insertTableMaxSize:{col:10,row:10},dialogsInBody:!1,dialogsFade:!1,maximumImageFileSize:null,callbacks:{onInit:null,onFocus:null,onBlur:null,onEnter:null,onKeyup:null,onKeydown:null,onImageUpload:null,onImageUploadError:null},codemirror:{mode:"text/html",htmlMode:!0,lineNumbers:!0},keyMap:{pc:{ENTER:"insertParagraph","CTRL+Z":"undo","CTRL+Y":"redo",TAB:"tab","SHIFT+TAB":"untab","CTRL+B":"bold","CTRL+I":"italic","CTRL+U":"underline","CTRL+SHIFT+S":"strikethrough","CTRL+BACKSLASH":"removeFormat","CTRL+SHIFT+L":"justifyLeft","CTRL+SHIFT+E":"justifyCenter","CTRL+SHIFT+R":"justifyRight","CTRL+SHIFT+J":"justifyFull","CTRL+SHIFT+NUM7":"insertUnorderedList","CTRL+SHIFT+NUM8":"insertOrderedList","CTRL+LEFTBRACKET":"outdent","CTRL+RIGHTBRACKET":"indent","CTRL+NUM0":"formatPara","CTRL+NUM1":"formatH1","CTRL+NUM2":"formatH2","CTRL+NUM3":"formatH3","CTRL+NUM4":"formatH4","CTRL+NUM5":"formatH5","CTRL+NUM6":"formatH6","CTRL+ENTER":"insertHorizontalRule","CTRL+K":"linkDialog.show"},mac:{ENTER:"insertParagraph","CMD+Z":"undo","CMD+SHIFT+Z":"redo",TAB:"tab","SHIFT+TAB":"untab","CMD+B":"bold","CMD+I":"italic","CMD+U":"underline","CMD+SHIFT+S":"strikethrough","CMD+BACKSLASH":"removeFormat","CMD+SHIFT+L":"justifyLeft","CMD+SHIFT+E":"justifyCenter","CMD+SHIFT+R":"justifyRight","CMD+SHIFT+J":"justifyFull","CMD+SHIFT+NUM7":"insertUnorderedList","CMD+SHIFT+NUM8":"insertOrderedList","CMD+LEFTBRACKET":"outdent","CMD+RIGHTBRACKET":"indent","CMD+NUM0":"formatPara","CMD+NUM1":"formatH1","CMD+NUM2":"formatH2","CMD+NUM3":"formatH3","CMD+NUM4":"formatH4","CMD+NUM5":"formatH5","CMD+NUM6":"formatH6","CMD+ENTER":"insertHorizontalRule","CMD+K":"linkDialog.show"}},icons:{align:"note-icon-align",alignCenter:"note-icon-align-center",alignJustify:"note-icon-align-justify",alignLeft:"note-icon-align-left",alignRight:"note-icon-align-right",indent:"note-icon-align-indent",outdent:"note-icon-align-outdent",arrowsAlt:"note-icon-arrows-alt",bold:"note-icon-bold",caret:"note-icon-caret",circle:"note-icon-circle",close:"note-icon-close",code:"note-icon-code",eraser:"note-icon-eraser",font:"note-icon-font",frame:"note-icon-frame",italic:"note-icon-italic",link:"note-icon-link",unlink:"note-icon-chain-broken",magic:"note-icon-magic",menuCheck:"note-icon-check",minus:"note-icon-minus",orderedlist:"note-icon-orderedlist",pencil:"note-icon-pencil",picture:"note-icon-picture",question:"note-icon-question",redo:"note-icon-redo",square:"note-icon-square",strikethrough:"note-icon-strikethrough",subscript:"note-icon-subscript",superscript:"note-icon-superscript",table:"note-icon-table",textHeight:"note-icon-text-height",trash:"note-icon-trash",underline:"note-icon-underline",undo:"note-icon-undo",unorderedlist:"note-icon-unorderedlist",video:"note-icon-video"}}})}); \ No newline at end of file diff --git a/plugins/switchery/switchery.min.css b/plugins/switchery/switchery.min.css new file mode 100644 index 0000000..128f726 --- /dev/null +++ b/plugins/switchery/switchery.min.css @@ -0,0 +1 @@ +.switchery{background-color:#fff;border:1px solid #dfdfdf;border-radius:20px;cursor:pointer;display:inline-block;height:30px;position:relative;vertical-align:middle;width:50px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box;background-clip:content-box}.switchery>small{background:#fff;border-radius:100%;box-shadow:0 1px 3px rgba(0,0,0,0.4);height:30px;position:absolute;top:0;width:30px}.switchery-small{border-radius:20px;height:20px;width:33px}.switchery-small>small{height:20px;width:20px}.switchery-large{border-radius:40px;height:40px;width:66px}.switchery-large>small{height:40px;width:40px} \ No newline at end of file diff --git a/plugins/switchery/switchery.min.js b/plugins/switchery/switchery.min.js new file mode 100644 index 0000000..5187a38 --- /dev/null +++ b/plugins/switchery/switchery.min.js @@ -0,0 +1 @@ +(function(){function require(name){var module=require.modules[name];if(!module)throw new Error('failed to require "'+name+'"');if(!("exports"in module)&&typeof module.definition==="function"){module.client=module.component=true;module.definition.call(this,module.exports={},module);delete module.definition}return module.exports}require.loader="component";require.helper={};require.helper.semVerSort=function(a,b){var aArray=a.version.split(".");var bArray=b.version.split(".");for(var i=0;i<aArray.length;++i){var aInt=parseInt(aArray[i],10);var bInt=parseInt(bArray[i],10);if(aInt===bInt){var aLex=aArray[i].substr((""+aInt).length);var bLex=bArray[i].substr((""+bInt).length);if(aLex===""&&bLex!=="")return 1;if(aLex!==""&&bLex==="")return-1;if(aLex!==""&&bLex!=="")return aLex>bLex?1:-1;continue}else if(aInt>bInt){return 1}else{return-1}}return 0};require.latest=function(name,returnPath){function showError(name){throw new Error('failed to find latest module of "'+name+'"')}var versionRegexp=/(.*)~(.*)@v?(\d+\.\d+\.\d+[^\/]*)$/;var remoteRegexp=/(.*)~(.*)/;if(!remoteRegexp.test(name))showError(name);var moduleNames=Object.keys(require.modules);var semVerCandidates=[];var otherCandidates=[];for(var i=0;i<moduleNames.length;i++){var moduleName=moduleNames[i];if(new RegExp(name+"@").test(moduleName)){var version=moduleName.substr(name.length+1);var semVerMatch=versionRegexp.exec(moduleName);if(semVerMatch!=null){semVerCandidates.push({version:version,name:moduleName})}else{otherCandidates.push({version:version,name:moduleName})}}}if(semVerCandidates.concat(otherCandidates).length===0){showError(name)}if(semVerCandidates.length>0){var module=semVerCandidates.sort(require.helper.semVerSort).pop().name;if(returnPath===true){return module}return require(module)}var module=otherCandidates.sort(function(a,b){return a.name>b.name})[0].name;if(returnPath===true){return module}return require(module)};require.modules={};require.register=function(name,definition){require.modules[name]={definition:definition}};require.define=function(name,exports){require.modules[name]={exports:exports}};require.register("abpetkov~transitionize@0.0.3",function(exports,module){module.exports=Transitionize;function Transitionize(element,props){if(!(this instanceof Transitionize))return new Transitionize(element,props);this.element=element;this.props=props||{};this.init()}Transitionize.prototype.isSafari=function(){return/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor)};Transitionize.prototype.init=function(){var transitions=[];for(var key in this.props){transitions.push(key+" "+this.props[key])}this.element.style.transition=transitions.join(", ");if(this.isSafari())this.element.style.webkitTransition=transitions.join(", ")}});require.register("ftlabs~fastclick@v0.6.11",function(exports,module){function FastClick(layer){"use strict";var oldOnClick,self=this;this.trackingClick=false;this.trackingClickStart=0;this.targetElement=null;this.touchStartX=0;this.touchStartY=0;this.lastTouchIdentifier=0;this.touchBoundary=10;this.layer=layer;if(!layer||!layer.nodeType){throw new TypeError("Layer must be a document node")}this.onClick=function(){return FastClick.prototype.onClick.apply(self,arguments)};this.onMouse=function(){return FastClick.prototype.onMouse.apply(self,arguments)};this.onTouchStart=function(){return FastClick.prototype.onTouchStart.apply(self,arguments)};this.onTouchMove=function(){return FastClick.prototype.onTouchMove.apply(self,arguments)};this.onTouchEnd=function(){return FastClick.prototype.onTouchEnd.apply(self,arguments)};this.onTouchCancel=function(){return FastClick.prototype.onTouchCancel.apply(self,arguments)};if(FastClick.notNeeded(layer)){return}if(this.deviceIsAndroid){layer.addEventListener("mouseover",this.onMouse,true);layer.addEventListener("mousedown",this.onMouse,true);layer.addEventListener("mouseup",this.onMouse,true)}layer.addEventListener("click",this.onClick,true);layer.addEventListener("touchstart",this.onTouchStart,false);layer.addEventListener("touchmove",this.onTouchMove,false);layer.addEventListener("touchend",this.onTouchEnd,false);layer.addEventListener("touchcancel",this.onTouchCancel,false);if(!Event.prototype.stopImmediatePropagation){layer.removeEventListener=function(type,callback,capture){var rmv=Node.prototype.removeEventListener;if(type==="click"){rmv.call(layer,type,callback.hijacked||callback,capture)}else{rmv.call(layer,type,callback,capture)}};layer.addEventListener=function(type,callback,capture){var adv=Node.prototype.addEventListener;if(type==="click"){adv.call(layer,type,callback.hijacked||(callback.hijacked=function(event){if(!event.propagationStopped){callback(event)}}),capture)}else{adv.call(layer,type,callback,capture)}}}if(typeof layer.onclick==="function"){oldOnClick=layer.onclick;layer.addEventListener("click",function(event){oldOnClick(event)},false);layer.onclick=null}}FastClick.prototype.deviceIsAndroid=navigator.userAgent.indexOf("Android")>0;FastClick.prototype.deviceIsIOS=/iP(ad|hone|od)/.test(navigator.userAgent);FastClick.prototype.deviceIsIOS4=FastClick.prototype.deviceIsIOS&&/OS 4_\d(_\d)?/.test(navigator.userAgent);FastClick.prototype.deviceIsIOSWithBadTarget=FastClick.prototype.deviceIsIOS&&/OS ([6-9]|\d{2})_\d/.test(navigator.userAgent);FastClick.prototype.needsClick=function(target){"use strict";switch(target.nodeName.toLowerCase()){case"button":case"select":case"textarea":if(target.disabled){return true}break;case"input":if(this.deviceIsIOS&&target.type==="file"||target.disabled){return true}break;case"label":case"video":return true}return/\bneedsclick\b/.test(target.className)};FastClick.prototype.needsFocus=function(target){"use strict";switch(target.nodeName.toLowerCase()){case"textarea":return true;case"select":return!this.deviceIsAndroid;case"input":switch(target.type){case"button":case"checkbox":case"file":case"image":case"radio":case"submit":return false}return!target.disabled&&!target.readOnly;default:return/\bneedsfocus\b/.test(target.className)}};FastClick.prototype.sendClick=function(targetElement,event){"use strict";var clickEvent,touch;if(document.activeElement&&document.activeElement!==targetElement){document.activeElement.blur()}touch=event.changedTouches[0];clickEvent=document.createEvent("MouseEvents");clickEvent.initMouseEvent(this.determineEventType(targetElement),true,true,window,1,touch.screenX,touch.screenY,touch.clientX,touch.clientY,false,false,false,false,0,null);clickEvent.forwardedTouchEvent=true;targetElement.dispatchEvent(clickEvent)};FastClick.prototype.determineEventType=function(targetElement){"use strict";if(this.deviceIsAndroid&&targetElement.tagName.toLowerCase()==="select"){return"mousedown"}return"click"};FastClick.prototype.focus=function(targetElement){"use strict";var length;if(this.deviceIsIOS&&targetElement.setSelectionRange&&targetElement.type.indexOf("date")!==0&&targetElement.type!=="time"){length=targetElement.value.length;targetElement.setSelectionRange(length,length)}else{targetElement.focus()}};FastClick.prototype.updateScrollParent=function(targetElement){"use strict";var scrollParent,parentElement;scrollParent=targetElement.fastClickScrollParent;if(!scrollParent||!scrollParent.contains(targetElement)){parentElement=targetElement;do{if(parentElement.scrollHeight>parentElement.offsetHeight){scrollParent=parentElement;targetElement.fastClickScrollParent=parentElement;break}parentElement=parentElement.parentElement}while(parentElement)}if(scrollParent){scrollParent.fastClickLastScrollTop=scrollParent.scrollTop}};FastClick.prototype.getTargetElementFromEventTarget=function(eventTarget){"use strict";if(eventTarget.nodeType===Node.TEXT_NODE){return eventTarget.parentNode}return eventTarget};FastClick.prototype.onTouchStart=function(event){"use strict";var targetElement,touch,selection;if(event.targetTouches.length>1){return true}targetElement=this.getTargetElementFromEventTarget(event.target);touch=event.targetTouches[0];if(this.deviceIsIOS){selection=window.getSelection();if(selection.rangeCount&&!selection.isCollapsed){return true}if(!this.deviceIsIOS4){if(touch.identifier===this.lastTouchIdentifier){event.preventDefault();return false}this.lastTouchIdentifier=touch.identifier;this.updateScrollParent(targetElement)}}this.trackingClick=true;this.trackingClickStart=event.timeStamp;this.targetElement=targetElement;this.touchStartX=touch.pageX;this.touchStartY=touch.pageY;if(event.timeStamp-this.lastClickTime<200){event.preventDefault()}return true};FastClick.prototype.touchHasMoved=function(event){"use strict";var touch=event.changedTouches[0],boundary=this.touchBoundary;if(Math.abs(touch.pageX-this.touchStartX)>boundary||Math.abs(touch.pageY-this.touchStartY)>boundary){return true}return false};FastClick.prototype.onTouchMove=function(event){"use strict";if(!this.trackingClick){return true}if(this.targetElement!==this.getTargetElementFromEventTarget(event.target)||this.touchHasMoved(event)){this.trackingClick=false;this.targetElement=null}return true};FastClick.prototype.findControl=function(labelElement){"use strict";if(labelElement.control!==undefined){return labelElement.control}if(labelElement.htmlFor){return document.getElementById(labelElement.htmlFor)}return labelElement.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")};FastClick.prototype.onTouchEnd=function(event){"use strict";var forElement,trackingClickStart,targetTagName,scrollParent,touch,targetElement=this.targetElement;if(!this.trackingClick){return true}if(event.timeStamp-this.lastClickTime<200){this.cancelNextClick=true;return true}this.cancelNextClick=false;this.lastClickTime=event.timeStamp;trackingClickStart=this.trackingClickStart;this.trackingClick=false;this.trackingClickStart=0;if(this.deviceIsIOSWithBadTarget){touch=event.changedTouches[0];targetElement=document.elementFromPoint(touch.pageX-window.pageXOffset,touch.pageY-window.pageYOffset)||targetElement;targetElement.fastClickScrollParent=this.targetElement.fastClickScrollParent}targetTagName=targetElement.tagName.toLowerCase();if(targetTagName==="label"){forElement=this.findControl(targetElement);if(forElement){this.focus(targetElement);if(this.deviceIsAndroid){return false}targetElement=forElement}}else if(this.needsFocus(targetElement)){if(event.timeStamp-trackingClickStart>100||this.deviceIsIOS&&window.top!==window&&targetTagName==="input"){this.targetElement=null;return false}this.focus(targetElement);if(!this.deviceIsIOS4||targetTagName!=="select"){this.targetElement=null;event.preventDefault()}return false}if(this.deviceIsIOS&&!this.deviceIsIOS4){scrollParent=targetElement.fastClickScrollParent;if(scrollParent&&scrollParent.fastClickLastScrollTop!==scrollParent.scrollTop){return true}}if(!this.needsClick(targetElement)){event.preventDefault();this.sendClick(targetElement,event)}return false};FastClick.prototype.onTouchCancel=function(){"use strict";this.trackingClick=false;this.targetElement=null};FastClick.prototype.onMouse=function(event){"use strict";if(!this.targetElement){return true}if(event.forwardedTouchEvent){return true}if(!event.cancelable){return true}if(!this.needsClick(this.targetElement)||this.cancelNextClick){if(event.stopImmediatePropagation){event.stopImmediatePropagation()}else{event.propagationStopped=true}event.stopPropagation();event.preventDefault();return false}return true};FastClick.prototype.onClick=function(event){"use strict";var permitted;if(this.trackingClick){this.targetElement=null;this.trackingClick=false;return true}if(event.target.type==="submit"&&event.detail===0){return true}permitted=this.onMouse(event);if(!permitted){this.targetElement=null}return permitted};FastClick.prototype.destroy=function(){"use strict";var layer=this.layer;if(this.deviceIsAndroid){layer.removeEventListener("mouseover",this.onMouse,true);layer.removeEventListener("mousedown",this.onMouse,true);layer.removeEventListener("mouseup",this.onMouse,true)}layer.removeEventListener("click",this.onClick,true);layer.removeEventListener("touchstart",this.onTouchStart,false);layer.removeEventListener("touchmove",this.onTouchMove,false);layer.removeEventListener("touchend",this.onTouchEnd,false);layer.removeEventListener("touchcancel",this.onTouchCancel,false)};FastClick.notNeeded=function(layer){"use strict";var metaViewport;var chromeVersion;if(typeof window.ontouchstart==="undefined"){return true}chromeVersion=+(/Chrome\/([0-9]+)/.exec(navigator.userAgent)||[,0])[1];if(chromeVersion){if(FastClick.prototype.deviceIsAndroid){metaViewport=document.querySelector("meta[name=viewport]");if(metaViewport){if(metaViewport.content.indexOf("user-scalable=no")!==-1){return true}if(chromeVersion>31&&window.innerWidth<=window.screen.width){return true}}}else{return true}}if(layer.style.msTouchAction==="none"){return true}return false};FastClick.attach=function(layer){"use strict";return new FastClick(layer)};if(typeof define!=="undefined"&&define.amd){define(function(){"use strict";return FastClick})}else if(typeof module!=="undefined"&&module.exports){module.exports=FastClick.attach;module.exports.FastClick=FastClick}else{window.FastClick=FastClick}});require.register("component~indexof@0.0.3",function(exports,module){module.exports=function(arr,obj){if(arr.indexOf)return arr.indexOf(obj);for(var i=0;i<arr.length;++i){if(arr[i]===obj)return i}return-1}});require.register("component~classes@1.2.1",function(exports,module){var index=require("component~indexof@0.0.3");var re=/\s+/;var toString=Object.prototype.toString;module.exports=function(el){return new ClassList(el)};function ClassList(el){if(!el)throw new Error("A DOM element reference is required");this.el=el;this.list=el.classList}ClassList.prototype.add=function(name){if(this.list){this.list.add(name);return this}var arr=this.array();var i=index(arr,name);if(!~i)arr.push(name);this.el.className=arr.join(" ");return this};ClassList.prototype.remove=function(name){if("[object RegExp]"==toString.call(name)){return this.removeMatching(name)}if(this.list){this.list.remove(name);return this}var arr=this.array();var i=index(arr,name);if(~i)arr.splice(i,1);this.el.className=arr.join(" ");return this};ClassList.prototype.removeMatching=function(re){var arr=this.array();for(var i=0;i<arr.length;i++){if(re.test(arr[i])){this.remove(arr[i])}}return this};ClassList.prototype.toggle=function(name,force){if(this.list){if("undefined"!==typeof force){if(force!==this.list.toggle(name,force)){this.list.toggle(name)}}else{this.list.toggle(name)}return this}if("undefined"!==typeof force){if(!force){this.remove(name)}else{this.add(name)}}else{if(this.has(name)){this.remove(name)}else{this.add(name)}}return this};ClassList.prototype.array=function(){var str=this.el.className.replace(/^\s+|\s+$/g,"");var arr=str.split(re);if(""===arr[0])arr.shift();return arr};ClassList.prototype.has=ClassList.prototype.contains=function(name){return this.list?this.list.contains(name):!!~index(this.array(),name)}});require.register("component~event@0.1.4",function(exports,module){var bind=window.addEventListener?"addEventListener":"attachEvent",unbind=window.removeEventListener?"removeEventListener":"detachEvent",prefix=bind!=="addEventListener"?"on":"";exports.bind=function(el,type,fn,capture){el[bind](prefix+type,fn,capture||false);return fn};exports.unbind=function(el,type,fn,capture){el[unbind](prefix+type,fn,capture||false);return fn}});require.register("component~query@0.0.3",function(exports,module){function one(selector,el){return el.querySelector(selector)}exports=module.exports=function(selector,el){el=el||document;return one(selector,el)};exports.all=function(selector,el){el=el||document;return el.querySelectorAll(selector)};exports.engine=function(obj){if(!obj.one)throw new Error(".one callback required");if(!obj.all)throw new Error(".all callback required");one=obj.one;exports.all=obj.all;return exports}});require.register("component~matches-selector@0.1.5",function(exports,module){var query=require("component~query@0.0.3");var proto=Element.prototype;var vendor=proto.matches||proto.webkitMatchesSelector||proto.mozMatchesSelector||proto.msMatchesSelector||proto.oMatchesSelector;module.exports=match;function match(el,selector){if(!el||el.nodeType!==1)return false;if(vendor)return vendor.call(el,selector);var nodes=query.all(selector,el.parentNode);for(var i=0;i<nodes.length;++i){if(nodes[i]==el)return true}return false}});require.register("component~closest@0.1.4",function(exports,module){var matches=require("component~matches-selector@0.1.5");module.exports=function(element,selector,checkYoSelf,root){element=checkYoSelf?{parentNode:element}:element;root=root||document;while((element=element.parentNode)&&element!==document){if(matches(element,selector))return element;if(element===root)return}}});require.register("component~delegate@0.2.3",function(exports,module){var closest=require("component~closest@0.1.4"),event=require("component~event@0.1.4");exports.bind=function(el,selector,type,fn,capture){return event.bind(el,type,function(e){var target=e.target||e.srcElement;e.delegateTarget=closest(target,selector,true,el);if(e.delegateTarget)fn.call(el,e)},capture)};exports.unbind=function(el,type,fn,capture){event.unbind(el,type,fn,capture)}});require.register("component~events@1.0.9",function(exports,module){var events=require("component~event@0.1.4");var delegate=require("component~delegate@0.2.3");module.exports=Events;function Events(el,obj){if(!(this instanceof Events))return new Events(el,obj);if(!el)throw new Error("element required");if(!obj)throw new Error("object required");this.el=el;this.obj=obj;this._events={}}Events.prototype.sub=function(event,method,cb){this._events[event]=this._events[event]||{};this._events[event][method]=cb};Events.prototype.bind=function(event,method){var e=parse(event);var el=this.el;var obj=this.obj;var name=e.name;var method=method||"on"+name;var args=[].slice.call(arguments,2);function cb(){var a=[].slice.call(arguments).concat(args);obj[method].apply(obj,a)}if(e.selector){cb=delegate.bind(el,e.selector,name,cb)}else{events.bind(el,name,cb)}this.sub(name,method,cb);return cb};Events.prototype.unbind=function(event,method){if(0==arguments.length)return this.unbindAll();if(1==arguments.length)return this.unbindAllOf(event);var bindings=this._events[event];if(!bindings)return;var cb=bindings[method];if(!cb)return;events.unbind(this.el,event,cb)};Events.prototype.unbindAll=function(){for(var event in this._events){this.unbindAllOf(event)}};Events.prototype.unbindAllOf=function(event){var bindings=this._events[event];if(!bindings)return;for(var method in bindings){this.unbind(event,method)}};function parse(event){var parts=event.split(/ +/);return{name:parts.shift(),selector:parts.join(" ")}}});require.register("switchery",function(exports,module){var transitionize=require("abpetkov~transitionize@0.0.3"),fastclick=require("ftlabs~fastclick@v0.6.11"),classes=require("component~classes@1.2.1"),events=require("component~events@1.0.9");module.exports=Switchery;var defaults={color:"#64bd63",secondaryColor:"#dfdfdf",jackColor:"#fff",jackSecondaryColor:null,className:"switchery",disabled:false,disabledOpacity:.5,speed:"0.4s",size:"default"};function Switchery(element,options){if(!(this instanceof Switchery))return new Switchery(element,options);this.element=element;this.options=options||{};for(var i in defaults){if(this.options[i]==null){this.options[i]=defaults[i]}}if(this.element!=null&&this.element.type=="checkbox")this.init();if(this.isDisabled()===true)this.disable()}Switchery.prototype.hide=function(){this.element.style.display="none"};Switchery.prototype.show=function(){var switcher=this.create();this.insertAfter(this.element,switcher)};Switchery.prototype.create=function(){this.switcher=document.createElement("span");this.jack=document.createElement("small");this.switcher.appendChild(this.jack);this.switcher.className=this.options.className;this.events=events(this.switcher,this);return this.switcher};Switchery.prototype.insertAfter=function(reference,target){reference.parentNode.insertBefore(target,reference.nextSibling)};Switchery.prototype.setPosition=function(clicked){var checked=this.isChecked(),switcher=this.switcher,jack=this.jack;if(clicked&&checked)checked=false;else if(clicked&&!checked)checked=true;if(checked===true){this.element.checked=true;if(window.getComputedStyle)jack.style.left=parseInt(window.getComputedStyle(switcher).width)-parseInt(window.getComputedStyle(jack).width)+"px";else jack.style.left=parseInt(switcher.currentStyle["width"])-parseInt(jack.currentStyle["width"])+"px";if(this.options.color)this.colorize();this.setSpeed()}else{jack.style.left=0;this.element.checked=false;this.switcher.style.boxShadow="inset 0 0 0 0 "+this.options.secondaryColor;this.switcher.style.borderColor=this.options.secondaryColor;this.switcher.style.backgroundColor=this.options.secondaryColor!==defaults.secondaryColor?this.options.secondaryColor:"#fff";this.jack.style.backgroundColor=this.options.jackSecondaryColor!==this.options.jackColor?this.options.jackSecondaryColor:this.options.jackColor;this.setSpeed()}};Switchery.prototype.setSpeed=function(){var switcherProp={},jackProp={"background-color":this.options.speed,left:this.options.speed.replace(/[a-z]/,"")/2+"s"};if(this.isChecked()){switcherProp={border:this.options.speed,"box-shadow":this.options.speed,"background-color":this.options.speed.replace(/[a-z]/,"")*3+"s"}}else{switcherProp={border:this.options.speed,"box-shadow":this.options.speed}}transitionize(this.switcher,switcherProp);transitionize(this.jack,jackProp)};Switchery.prototype.setSize=function(){var small="switchery-small",normal="switchery-default",large="switchery-large";switch(this.options.size){case"small":classes(this.switcher).add(small);break;case"large":classes(this.switcher).add(large);break;default:classes(this.switcher).add(normal);break}};Switchery.prototype.colorize=function(){var switcherHeight=this.switcher.offsetHeight/2;this.switcher.style.backgroundColor=this.options.color;this.switcher.style.borderColor=this.options.color;this.switcher.style.boxShadow="inset 0 0 0 "+switcherHeight+"px "+this.options.color;this.jack.style.backgroundColor=this.options.jackColor};Switchery.prototype.handleOnchange=function(state){if(document.dispatchEvent){var event=document.createEvent("HTMLEvents");event.initEvent("change",true,true);this.element.dispatchEvent(event)}else{this.element.fireEvent("onchange")}};Switchery.prototype.handleChange=function(){var self=this,el=this.element;if(el.addEventListener){el.addEventListener("change",function(){self.setPosition()})}else{el.attachEvent("onchange",function(){self.setPosition()})}};Switchery.prototype.handleClick=function(){var switcher=this.switcher;fastclick(switcher);this.events.bind("click","bindClick")};Switchery.prototype.bindClick=function(){var parent=this.element.parentNode.tagName.toLowerCase(),labelParent=parent==="label"?false:true;this.setPosition(labelParent);this.handleOnchange(this.element.checked)};Switchery.prototype.markAsSwitched=function(){this.element.setAttribute("data-switchery",true)};Switchery.prototype.markedAsSwitched=function(){return this.element.getAttribute("data-switchery")};Switchery.prototype.init=function(){this.hide();this.show();this.setSize();this.setPosition();this.markAsSwitched();this.handleChange();this.handleClick()};Switchery.prototype.isChecked=function(){return this.element.checked};Switchery.prototype.isDisabled=function(){return this.options.disabled||this.element.disabled||this.element.readOnly};Switchery.prototype.destroy=function(){this.events.unbind()};Switchery.prototype.enable=function(){if(this.options.disabled)this.options.disabled=false;if(this.element.disabled)this.element.disabled=false;if(this.element.readOnly)this.element.readOnly=false;this.switcher.style.opacity=1;this.events.bind("click","bindClick")};Switchery.prototype.disable=function(){if(!this.options.disabled)this.options.disabled=true;if(!this.element.disabled)this.element.disabled=true;if(!this.element.readOnly)this.element.readOnly=true;this.switcher.style.opacity=this.options.disabledOpacity;this.destroy()}});if(typeof exports=="object"){module.exports=require("switchery")}else if(typeof define=="function"&&define.amd){define("Switchery",[],function(){return require("switchery")})}else{(this||window)["Switchery"]=require("switchery")}})(); \ No newline at end of file diff --git a/plugins/tablesaw/css/tablesaw.css b/plugins/tablesaw/css/tablesaw.css new file mode 100644 index 0000000..d2fa72f --- /dev/null +++ b/plugins/tablesaw/css/tablesaw.css @@ -0,0 +1,833 @@ +/*! Tablesaw - v2.0.2 - 2015-10-28 +* https://github.com/filamentgroup/tablesaw +* Copyright (c) 2015 Filament Group; Licensed */ + +table.tablesaw { + empty-cells: show; + max-width: 100%; + width: 100%; +} + +.tablesaw { + border-collapse: collapse; + width: 100%; +} + +/* Structure */ + +.tablesaw { + border: 0; + padding: 0; +} + +.tablesaw th, +.tablesaw td { + box-sizing: border-box; + padding: .5em .7em; +} + +.tablesaw thead tr:first-child th { + padding-top: .9em; + padding-bottom: .7em; +} + +.tablesaw-enhanced .tablesaw-bar .btn { + border: 1px solid #ccc; + background: none; + background-color: #fafafa; + box-shadow: 0 1px 0 rgba(255,255,255,1); + color: #4a4a4a; + clear: both; + cursor: pointer; + display: block; + font: bold 20px/1 sans-serif; + margin: 0; + padding: .5em .85em .4em .85em; + position: relative; + text-align: center; + text-decoration: none; + text-transform: capitalize; + text-shadow: 0 1px 0 #fff; + width: 100%; + /* Theming */ + background-image: -webkit-linear-gradient(top, rgba( 255,255,255,.1 ) 0%, rgba( 255,255,255,.1 ) 50%, rgba( 170,170,170,.1 ) 55%, rgba( 120,120,120,.15 ) 100%); + background-image: linear-gradient( top, rgba( 255,255,255,.1 ) 0%, rgba( 255,255,255,.1 ) 50%, rgba( 170,170,170,.1 ) 55%, rgba( 120,120,120,.15 ) 100% ); + -webkit-appearance: none !important; + -moz-appearance: none !important; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + border-radius: .25em; +} + +.tablesaw-enhanced .tablesaw-bar a.btn { + color: #1c95d4; +} + +.tablesaw-enhanced .tablesaw-bar .btn:hover { + text-decoration: none; +} + +/* Default radio/checkbox styling horizonal controlgroups. */ + +.tablesaw-enhanced .tablesaw-bar .btn:active { + background-color: #ddd; + background-image: -webkit-linear-gradient(top, rgba( 100,100,100,.35 ) 0%, rgba( 255,255,255,0 ) 70%); + background-image: linear-gradient( top, rgba( 100,100,100,.35 ) 0%, rgba( 255,255,255,0 ) 70% ); +} + +.tablesaw-enhanced .tablesaw-bar .btn:hover, +.tablesaw-enhanced .tablesaw-bar .btn:focus { + color: #208de3; + background-color: #fff; + outline: none; +} + +.tablesaw-bar .btn:focus { + box-shadow: 0 0 .35em #4faeef !important; +} + +.tablesaw-bar .btn-select select { + background: none; + border: none; + display: block; + position: absolute; + font-weight: inherit; + left: 0; + top: 0; + margin: 0; + width: 100%; + height: 100%; + z-index: 2; + min-height: 1em; +} + +.tablesaw-bar .btn-select select { + opacity: 0; + filter: alpha(opacity=0); + display: inline-block; + color: transparent; +} + +.tablesaw-bar .btn select option { + background: #fff; + color: #000; + font-family: sans-serif; +} + +.tablesaw-enhanced .tablesaw-bar .btn.btn-select { + color: #4d4d4d; + padding-right: 2.5em; + min-width: 7.25em; + text-align: left; + text-indent: 0; +} + +.tablesaw-bar .btn.btn-small, +.tablesaw-bar .btn.btn-micro { + display: inline-block; + width: auto; + height: auto; + position: relative; + top: 0; +} + +.tablesaw-bar .btn.btn-small { + font-size: 1.0625em; + line-height: 19px; + padding: .3em 1em .3em 1em; +} + +.tablesaw-bar .btn.btn-micro { + font-size: .8125em; + padding: .4em .7em .25em .7em; +} + +.tablesaw-enhanced .tablesaw-bar .btn-select { + text-align: left; +} + +.tablesaw-bar .btn-select:after { + background: #e5e5e5; + background: rgba(0,0,0,.1); + box-shadow: 0 2px 2px rgba(255,255,255,.25); + content: " "; + display: block; + position: absolute; +} + +.tablesaw-bar .btn-select.btn-small, +.tablesaw-bar .btn-select.btn-micro { + padding-right: 1.5em; +} + +.tablesaw-bar .btn-select:after { + background: none; + background-repeat: no-repeat; + background-position: .25em .45em; + content: "\25bc"; + font-size: .55em; + padding-top: 1.2em; + padding-left: 1em; + left: auto; + right: 0; + margin: 0; + top: 0; + bottom: 0; + width: 1.8em; +} + +.tablesaw-bar .btn-select.btn-small:after, +.tablesaw-bar .btn-select.btn-micro:after { + width: 1.2em; + font-size: .5em; + padding-top: 1em; + padding-right: .5em; + line-height: 1.65; + background: none; + box-shadow: none; + border-left-width: 0; +} + +/* Column navigation buttons for swipe and columntoggle tables */ + +.tablesaw-advance .btn { + -webkit-appearance: none; + -moz-appearance: none; + box-sizing: border-box; + text-shadow: 0 1px 0 #fff; + border-radius: .25em; +} + +.tablesaw-advance .btn.btn-micro { + font-size: .8125em; + padding: .3em .7em .25em .7em; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn { + display: inline-block; + overflow: hidden; + width: 1.8em; + height: 1.8em; + background-position: 50% 50%; + margin-left: .5em; + position: relative; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.left:before, +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.right:before, +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.down:before, +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.up:before { + content: "\0020"; + overflow: hidden; + width: 0; + height: 0; + position: absolute; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.down:before { + left: .5em; + top: .65em; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #808080; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.up:before { + left: .5em; + top: .65em; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #808080; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.left:before, +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.right:before { + top: .45em; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.left:before { + left: .6em; + border-right: 5px solid #808080; +} + +.tablesaw-bar .tablesaw-advance a.tablesaw-nav-btn.right:before { + left: .7em; + border-left: 5px solid #808080; +} + +.tablesaw-advance a.tablesaw-nav-btn.disabled { + opacity: .25; + filter: alpha(opacity=25); + cursor: default; + pointer-events: none; +} + +/* Table Toolbar */ + +.tablesaw-bar { + clear: both; + font-family: sans-serif; +} + +.tablesaw-toolbar { + font-size: .875em; + float: left; +} + +.tablesaw-toolbar label { + padding: .5em 0; + clear: both; + display: block; + color: #888; + margin-right: .5em; + text-transform: uppercase; +} + +.tablesaw-bar .btn, +.tablesaw-enhanced .tablesaw-bar .btn { + margin-top: .5em; + margin-bottom: .5em; +} + +.tablesaw-bar .btn-select, +.tablesaw-enhanced .tablesaw-bar .btn-select { + margin-bottom: 0; +} + +.tablesaw-bar .tablesaw-toolbar .btn { + margin-left: .4em; + margin-top: 0; + text-transform: uppercase; + border: none; + box-shadow: none; + background: transparent; + font-family: sans-serif; + font-size: 1em; + padding-left: .3em; +} + +.tablesaw-bar .tablesaw-toolbar .btn-select { + min-width: 0; +} + +.tablesaw-bar .tablesaw-toolbar .btn-select:after { + padding-top: .9em; +} + +.tablesaw-bar .tablesaw-toolbar select { + color: #888; + text-transform: none; + background: transparent; +} + +.tablesaw-toolbar ~ table { + clear: both; +} + +.tablesaw-toolbar .a11y-sm { + clip: rect(0 0 0 0); + height: 1px; + overflow: hidden; + position: absolute; + width: 1px; +} + +@media (min-width: 24em) { + .tablesaw-toolbar .a11y-sm { + clip: none; + height: auto; + width: auto; + position: static; + overflow: visible; + } +} + +table.tablesaw tbody th { + font-weight: bold; +} + +table.tablesaw thead th, +table.tablesaw thead td { + color: #444; + font-size: .9em; +} + +.tablesaw th, +.tablesaw td { + line-height: 1em; + text-align: left; + vertical-align: middle; +} + +.tablesaw td, +.tablesaw tbody th { + vertical-align: middle; + font-size: 1.17em; + /* 19px */ +} + +.tablesaw td .btn, +.tablesaw tbody th .btn { + margin: 0; +} + +.tablesaw thead { + border: 1px solid #e5e5e4; + background: #e2dfdc; + background-image: -webkit-linear-gradient(top, #fff, #e2dfdc); + background-image: linear-gradient(to bottom, #fff, #e2dfdc); +} + +.tablesaw thead th { + font-weight: 100; + color: #777; + text-transform: uppercase; + text-shadow: 0 1px 0 #fff; + text-align: left; +} + +.tablesaw thead tr:first-child th { + font-weight: normal; + font-family: sans-serif; + border-right: 1px solid #e4e1de; +} + +/* Table rows have a gray bottom stroke by default */ + +.tablesaw tbody tr { + border-bottom: 1px solid #dfdfdf; +} + +.tablesaw caption { + text-align: left; + margin-bottom: 0; + opacity: .5; + filter: alpha(opacity=50); + line-height: 2.4; +} + +@media (min-width: 25em) { + .tablesaw caption { + margin-bottom: .6em; + line-height: 1.2; + } +} + +/* Stack */ + +.tablesaw-cell-label-top { + text-transform: uppercase; + font-size: .9em; + font-weight: normal; +} + +.tablesaw-cell-label { + font-size: .65em; + text-transform: uppercase; + color: #888; + font-family: sans-serif; +} + +@media (min-width: 40em) { + .tablesaw td { + line-height: 2em; + } +} + +@media only all { + .tablesaw-swipe .tablesaw-cell-persist { + border-right: 1px solid #e4e1de; + } + + .tablesaw-swipe .tablesaw-cell-persist { + box-shadow: 3px 0 4px -1px #e4e1de; + } +} + +/* Table rows have a gray bottom stroke by default */ + +.tablesaw-stack tbody tr { + border-bottom: 1px solid #dfdfdf; +} + +.tablesaw-stack td .tablesaw-cell-label, +.tablesaw-stack th .tablesaw-cell-label { + display: none; +} + +/* Mobile first styles: Begin with the stacked presentation at narrow widths */ + +@media only all { + /* Show the table cells as a block level element */ + + .tablesaw-stack td, + .tablesaw-stack th { + text-align: left; + display: block; + } + + .tablesaw-stack tr { + clear: both; + display: table-row; + } + + /* Make the label elements a percentage width */ + + .tablesaw-stack td .tablesaw-cell-label, + .tablesaw-stack th .tablesaw-cell-label { + display: block; + padding: 0 .6em 0 0; + width: 30%; + display: inline-block; + } + + /* For grouped headers, have a different style to visually separate the levels by classing the first label in each col group */ + + .tablesaw-stack th .tablesaw-cell-label-top, + .tablesaw-stack td .tablesaw-cell-label-top { + display: block; + padding: .4em 0; + margin: .4em 0; + } + + .tablesaw-cell-label { + display: block; + } + + /* Avoid double strokes when stacked */ + + .tablesaw-stack tbody th.group { + margin-top: -1px; + } + + /* Avoid double strokes when stacked */ + + .tablesaw-stack th.group b.tablesaw-cell-label { + display: none !important; + } +} + +@media (max-width: 39.9375em) { + .tablesaw-stack thead td, + .tablesaw-stack thead th { + display: none; + } + + .tablesaw-stack tbody td, + .tablesaw-stack tbody th { + clear: left; + float: left; + width: 100%; + } + + .tablesaw-cell-label { + vertical-align: top; + } + + .tablesaw-cell-content { + max-width: 67%; + display: inline-block; + } + + .tablesaw-stack td:empty, + .tablesaw-stack th:empty { + display: none; + } +} + +/* Media query to show as a standard table at 560px (35em x 16px) or wider */ + +@media (min-width: 40em) { + .tablesaw-stack tr { + display: table-row; + } + + /* Show the table header rows */ + + .tablesaw-stack td, + .tablesaw-stack th, + .tablesaw-stack thead td, + .tablesaw-stack thead th { + display: table-cell; + margin: 0; + } + + /* Hide the labels in each cell */ + + .tablesaw-stack td .tablesaw-cell-label, + .tablesaw-stack th .tablesaw-cell-label { + display: none !important; + } +} + +.tablesaw-fix-persist { + table-layout: fixed; +} + +@media only all { + /* Unchecked manually: Always hide */ + + .tablesaw-swipe th.tablesaw-cell-hidden, + .tablesaw-swipe td.tablesaw-cell-hidden { + display: none; + } +} + +.btn.tablesaw-columntoggle-btn span { + text-indent: -9999px; + display: inline-block; +} + +.tablesaw-columntoggle-btnwrap { + position: relative; + /* for dialog positioning */ +} + +.tablesaw-columntoggle-btnwrap .dialog-content { + padding: .5em; +} + +.tablesaw-columntoggle tbody td { + line-height: 1.5; +} + +/* Remove top/bottom margins around the fieldcontain on check list */ + +.tablesaw-columntoggle-popup { + display: none; +} + +.tablesaw-columntoggle-btnwrap.visible .tablesaw-columntoggle-popup { + display: block; + position: absolute; + top: 2em; + right: 0; + background-color: #fff; + padding: .5em .8em; + border: 1px solid #ccc; + box-shadow: 0 1px 2px #ccc; + border-radius: .2em; + z-index: 1; +} + +.tablesaw-columntoggle-popup fieldset { + margin: 0; +} + +/* Hide all prioritized columns by default */ + +@media only all { + .tablesaw-columntoggle th.tablesaw-priority-6, + .tablesaw-columntoggle td.tablesaw-priority-6, + .tablesaw-columntoggle th.tablesaw-priority-5, + .tablesaw-columntoggle td.tablesaw-priority-5, + .tablesaw-columntoggle th.tablesaw-priority-4, + .tablesaw-columntoggle td.tablesaw-priority-4, + .tablesaw-columntoggle th.tablesaw-priority-3, + .tablesaw-columntoggle td.tablesaw-priority-3, + .tablesaw-columntoggle th.tablesaw-priority-2, + .tablesaw-columntoggle td.tablesaw-priority-2, + .tablesaw-columntoggle th.tablesaw-priority-1, + .tablesaw-columntoggle td.tablesaw-priority-1 { + display: none; + } +} + +.tablesaw-columntoggle-btnwrap .dialog-content { + top: 0 !important; + right: 1em; + left: auto !important; + width: 12em; + max-width: 18em; + margin: -.5em auto 0; +} + +.tablesaw-columntoggle-btnwrap .dialog-content:focus { + outline-style: none; +} + +/* Preset breakpoints if "" class added to table */ + +/* Show priority 1 at 320px (20em x 16px) */ + +@media (min-width: 20em) { + .tablesaw-columntoggle th.tablesaw-priority-1, + .tablesaw-columntoggle td.tablesaw-priority-1 { + display: table-cell; + } +} + +/* Show priority 2 at 480px (30em x 16px) */ + +@media (min-width: 30em) { + .tablesaw-columntoggle th.tablesaw-priority-2, + .tablesaw-columntoggle td.tablesaw-priority-2 { + display: table-cell; + } +} + +/* Show priority 3 at 640px (40em x 16px) */ + +@media (min-width: 40em) { + .tablesaw-columntoggle th.tablesaw-priority-3, + .tablesaw-columntoggle td.tablesaw-priority-3 { + display: table-cell; + } + + .tablesaw-columntoggle tbody td { + line-height: 2; + } +} + +/* Show priority 4 at 800px (50em x 16px) */ + +@media (min-width: 50em) { + .tablesaw-columntoggle th.tablesaw-priority-4, + .tablesaw-columntoggle td.tablesaw-priority-4 { + display: table-cell; + } +} + +/* Show priority 5 at 960px (60em x 16px) */ + +@media (min-width: 60em) { + .tablesaw-columntoggle th.tablesaw-priority-5, + .tablesaw-columntoggle td.tablesaw-priority-5 { + display: table-cell; + } +} + +/* Show priority 6 at 1,120px (70em x 16px) */ + +@media (min-width: 70em) { + .tablesaw-columntoggle th.tablesaw-priority-6, + .tablesaw-columntoggle td.tablesaw-priority-6 { + display: table-cell; + } +} + +@media only all { + /* Unchecked manually: Always hide */ + + .tablesaw-columntoggle th.tablesaw-cell-hidden, + .tablesaw-columntoggle td.tablesaw-cell-hidden { + display: none; + } + + /* Checked manually: Always show */ + + .tablesaw-columntoggle th.tablesaw-cell-visible, + .tablesaw-columntoggle td.tablesaw-cell-visible { + display: table-cell; + } +} + +.tablesaw-columntoggle-popup .btn-group > label { + display: block; + padding: .2em 0; + white-space: nowrap; +} + +.tablesaw-columntoggle-popup .btn-group > label input { + margin-right: .8em; +} + +.tablesaw-sortable, +.tablesaw-sortable thead, +.tablesaw-sortable thead tr, +.tablesaw-sortable thead tr th { + position: relative; +} + +.tablesaw-sortable thead tr th { + padding-right: 1.6em; + vertical-align: top; +} + +.tablesaw-sortable th.tablesaw-sortable-head, +.tablesaw-sortable tr:first-child th.tablesaw-sortable-head { + padding: 0; +} + +.tablesaw-sortable th.tablesaw-sortable-head button { + padding-top: .9em; + padding-bottom: .7em; + padding-left: .6em; + padding-right: 1.6em; +} + +.tablesaw-sortable .tablesaw-sortable-head button { + min-width: 100%; + color: inherit; + background: transparent; + border: 0; + padding: 0; + text-align: left; + font: inherit; + text-transform: inherit; + position: relative; +} + +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after, +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + width: 7px; + height: 10px; + content: "\0020"; + position: absolute; + right: .5em; +} + +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-ascending button:after { + content: "\2191"; +} + +.tablesaw-sortable .tablesaw-sortable-head.tablesaw-sortable-descending button:after { + content: "\2193"; +} + +.tablesaw-sortable .not-applicable:after { + content: "--"; + display: block; +} + +.tablesaw-sortable .not-applicable span { + display: none; +} + +.tablesaw-advance { + float: right; +} + +.tablesaw-advance.minimap { + margin-right: .4em; +} + +.tablesaw-advance-dots { + float: left; + margin: 0; + padding: 0; + list-style: none; +} + +.tablesaw-advance-dots li { + display: table-cell; + margin: 0; + padding: .4em .2em; +} + +.tablesaw-advance-dots li i { + width: .25em; + height: .25em; + background: #555; + border-radius: 100%; + display: inline-block; +} + +.tablesaw-advance-dots-hide { + opacity: .25; + filter: alpha(opacity=25); + cursor: default; + pointer-events: none; +} \ No newline at end of file diff --git a/plugins/tablesaw/js/tablesaw-init.js b/plugins/tablesaw/js/tablesaw-init.js new file mode 100644 index 0000000..6a1bda3 --- /dev/null +++ b/plugins/tablesaw/js/tablesaw-init.js @@ -0,0 +1,12 @@ +/*! Tablesaw - v2.0.2 - 2015-10-28 +* https://github.com/filamentgroup/tablesaw +* Copyright (c) 2015 Filament Group; Licensed */ +;(function( $ ) { + + // DOM-ready auto-init of plugins. + // Many plugins bind to an "enhance" event to init themselves on dom ready, or when new markup is inserted into the DOM + $( function(){ + $( document ).trigger( "enhance.tablesaw" ); + }); + +})( jQuery ); \ No newline at end of file diff --git a/plugins/tablesaw/js/tablesaw.js b/plugins/tablesaw/js/tablesaw.js new file mode 100644 index 0000000..de59a40 --- /dev/null +++ b/plugins/tablesaw/js/tablesaw.js @@ -0,0 +1,1266 @@ +/*! Tablesaw - v2.0.2 - 2015-10-28 +* https://github.com/filamentgroup/tablesaw +* Copyright (c) 2015 Filament Group; Licensed */ +/* +* tablesaw: A set of plugins for responsive tables +* Stack and Column Toggle tables +* Copyright (c) 2013 Filament Group, Inc. +* MIT License +*/ + +if( typeof Tablesaw === "undefined" ) { + Tablesaw = { + i18n: { + modes: [ 'Stack', 'Swipe', 'Toggle' ], + columns: 'Col<span class=\"a11y-sm\">umn</span>s', + columnBtnText: 'Columns', + columnsDialogError: 'No eligible columns.', + sort: 'Sort' + }, + // cut the mustard + mustard: 'querySelector' in document && + ( !window.blackberry || window.WebKitPoint ) && + !window.operamini + }; +} +if( !Tablesaw.config ) { + Tablesaw.config = {}; +} +if( Tablesaw.mustard ) { + jQuery( document.documentElement ).addClass( 'tablesaw-enhanced' ); +} + +;(function( $ ) { + var pluginName = "table", + classes = { + toolbar: "tablesaw-bar" + }, + events = { + create: "tablesawcreate", + destroy: "tablesawdestroy", + refresh: "tablesawrefresh" + }, + defaultMode = "stack", + initSelector = "table[data-tablesaw-mode],table[data-tablesaw-sortable]"; + + var Table = function( element ) { + if( !element ) { + throw new Error( "Tablesaw requires an element." ); + } + + this.table = element; + this.$table = $( element ); + + this.mode = this.$table.attr( "data-tablesaw-mode" ) || defaultMode; + + this.init(); + }; + + Table.prototype.init = function() { + // assign an id if there is none + if ( !this.$table.attr( "id" ) ) { + this.$table.attr( "id", pluginName + "-" + Math.round( Math.random() * 10000 ) ); + } + + this.createToolbar(); + + var colstart = this._initCells(); + + this.$table.trigger( events.create, [ this, colstart ] ); + }; + + Table.prototype._initCells = function() { + var colstart, + thrs = this.table.querySelectorAll( "thead tr" ), + self = this; + + $( thrs ).each( function(){ + var coltally = 0; + + $( this ).children().each( function(){ + var span = parseInt( this.getAttribute( "colspan" ), 10 ), + sel = ":nth-child(" + ( coltally + 1 ) + ")"; + + colstart = coltally + 1; + + if( span ){ + for( var k = 0; k < span - 1; k++ ){ + coltally++; + sel += ", :nth-child(" + ( coltally + 1 ) + ")"; + } + } + + // Store "cells" data on header as a reference to all cells in the same column as this TH + this.cells = self.$table.find("tr").not( thrs[0] ).not( this ).children().filter( sel ); + coltally++; + }); + }); + + return colstart; + }; + + Table.prototype.refresh = function() { + this._initCells(); + + this.$table.trigger( events.refresh ); + }; + + Table.prototype.createToolbar = function() { + // Insert the toolbar + // TODO move this into a separate component + var $toolbar = this.$table.prev().filter( '.' + classes.toolbar ); + if( !$toolbar.length ) { + $toolbar = $( '<div>' ) + .addClass( classes.toolbar ) + .insertBefore( this.$table ); + } + this.$toolbar = $toolbar; + + if( this.mode ) { + this.$toolbar.addClass( 'mode-' + this.mode ); + } + }; + + Table.prototype.destroy = function() { + // Don’t remove the toolbar. Some of the table features are not yet destroy-friendly. + this.$table.prev().filter( '.' + classes.toolbar ).each(function() { + this.className = this.className.replace( /\bmode\-\w*\b/gi, '' ); + }); + + var tableId = this.$table.attr( 'id' ); + $( document ).unbind( "." + tableId ); + $( window ).unbind( "." + tableId ); + + // other plugins + this.$table.trigger( events.destroy, [ this ] ); + + this.$table.removeAttr( 'data-tablesaw-mode' ); + + this.$table.removeData( pluginName ); + }; + + // Collection method. + $.fn[ pluginName ] = function() { + return this.each( function() { + var $t = $( this ); + + if( $t.data( pluginName ) ){ + return; + } + + var table = new Table( this ); + $t.data( pluginName, table ); + }); + }; + + $( document ).on( "enhance.tablesaw", function( e ) { + // Cut the mustard + if( Tablesaw.mustard ) { + $( e.target ).find( initSelector )[ pluginName ](); + } + }); + +}( jQuery )); + +;(function( win, $, undefined ){ + + var classes = { + stackTable: 'tablesaw-stack', + cellLabels: 'tablesaw-cell-label', + cellContentLabels: 'tablesaw-cell-content' + }; + + var data = { + obj: 'tablesaw-stack' + }; + + var attrs = { + labelless: 'data-tablesaw-no-labels', + hideempty: 'data-tablesaw-hide-empty' + }; + + var Stack = function( element ) { + + this.$table = $( element ); + + this.labelless = this.$table.is( '[' + attrs.labelless + ']' ); + this.hideempty = this.$table.is( '[' + attrs.hideempty + ']' ); + + if( !this.labelless ) { + // allHeaders references headers, plus all THs in the thead, which may include several rows, or not + this.allHeaders = this.$table.find( "th" ); + } + + this.$table.data( data.obj, this ); + }; + + Stack.prototype.init = function( colstart ) { + this.$table.addClass( classes.stackTable ); + + if( this.labelless ) { + return; + } + + // get headers in reverse order so that top-level headers are appended last + var reverseHeaders = $( this.allHeaders ); + var hideempty = this.hideempty; + + // create the hide/show toggles + reverseHeaders.each(function(){ + var $t = $( this ), + $cells = $( this.cells ).filter(function() { + return !$( this ).parent().is( "[" + attrs.labelless + "]" ) && ( !hideempty || !$( this ).is( ":empty" ) ); + }), + hierarchyClass = $cells.not( this ).filter( "thead th" ).length && " tablesaw-cell-label-top", + // TODO reduce coupling with sortable + $sortableButton = $t.find( ".tablesaw-sortable-btn" ), + html = $sortableButton.length ? $sortableButton.html() : $t.html(); + + if( html !== "" ){ + if( hierarchyClass ){ + var iteration = parseInt( $( this ).attr( "colspan" ), 10 ), + filter = ""; + + if( iteration ){ + filter = "td:nth-child("+ iteration +"n + " + ( colstart ) +")"; + } + $cells.filter( filter ).prepend( "<b class='" + classes.cellLabels + hierarchyClass + "'>" + html + "</b>" ); + } else { + $cells.wrapInner( "<span class='" + classes.cellContentLabels + "'></span>" ); + $cells.prepend( "<b class='" + classes.cellLabels + "'>" + html + "</b>" ); + } + } + }); + }; + + Stack.prototype.destroy = function() { + this.$table.removeClass( classes.stackTable ); + this.$table.find( '.' + classes.cellLabels ).remove(); + this.$table.find( '.' + classes.cellContentLabels ).each(function() { + $( this ).replaceWith( this.childNodes ); + }); + }; + + // on tablecreate, init + $( document ).on( "tablesawcreate", function( e, Tablesaw, colstart ){ + if( Tablesaw.mode === 'stack' ){ + var table = new Stack( Tablesaw.table ); + table.init( colstart ); + } + + } ); + + $( document ).on( "tablesawdestroy", function( e, Tablesaw ){ + + if( Tablesaw.mode === 'stack' ){ + $( Tablesaw.table ).data( data.obj ).destroy(); + } + + } ); + +}( this, jQuery )); +;(function( $ ) { + var pluginName = "tablesawbtn", + methods = { + _create: function(){ + return $( this ).each(function() { + $( this ) + .trigger( "beforecreate." + pluginName ) + [ pluginName ]( "_init" ) + .trigger( "create." + pluginName ); + }); + }, + _init: function(){ + var oEl = $( this ), + sel = this.getElementsByTagName( "select" )[ 0 ]; + + if( sel ) { + $( this ) + .addClass( "btn-select" ) + [ pluginName ]( "_select", sel ); + } + return oEl; + }, + _select: function( sel ) { + var update = function( oEl, sel ) { + var opts = $( sel ).find( "option" ), + label, el, children; + + opts.each(function() { + var opt = this; + if( opt.selected ) { + label = document.createTextNode( opt.text ); + } + }); + + children = oEl.childNodes; + if( opts.length > 0 ){ + for( var i = 0, l = children.length; i < l; i++ ) { + el = children[ i ]; + + if( el && el.nodeType === 3 ) { + oEl.replaceChild( label, el ); + } + } + } + }; + + update( this, sel ); + $( this ).bind( "change refresh", function() { + update( this, sel ); + }); + } + }; + + // Collection method. + $.fn[ pluginName ] = function( arrg, a, b, c ) { + return this.each(function() { + + // if it's a method + if( arrg && typeof( arrg ) === "string" ){ + return $.fn[ pluginName ].prototype[ arrg ].call( this, a, b, c ); + } + + // don't re-init + if( $( this ).data( pluginName + "active" ) ){ + return $( this ); + } + + // otherwise, init + + $( this ).data( pluginName + "active", true ); + $.fn[ pluginName ].prototype._create.call( this ); + }); + }; + + // add methods + $.extend( $.fn[ pluginName ].prototype, methods ); + +}( jQuery )); +;(function( win, $, undefined ){ + + var ColumnToggle = function( element ) { + + this.$table = $( element ); + + this.classes = { + columnToggleTable: 'tablesaw-columntoggle', + columnBtnContain: 'tablesaw-columntoggle-btnwrap tablesaw-advance', + columnBtn: 'tablesaw-columntoggle-btn tablesaw-nav-btn down', + popup: 'tablesaw-columntoggle-popup', + priorityPrefix: 'tablesaw-priority-', + // TODO duplicate class, also in tables.js + toolbar: 'tablesaw-bar' + }; + + // Expose headers and allHeaders properties on the widget + // headers references the THs within the first TR in the table + this.headers = this.$table.find( 'tr:first > th' ); + + this.$table.data( 'tablesaw-coltoggle', this ); + }; + + ColumnToggle.prototype.init = function() { + + var tableId, + id, + $menuButton, + $popup, + $menu, + $btnContain, + self = this; + + this.$table.addClass( this.classes.columnToggleTable ); + + tableId = this.$table.attr( "id" ); + id = tableId + "-popup"; + $btnContain = $( "<div class='" + this.classes.columnBtnContain + "'></div>" ); + $menuButton = $( "<a href='#" + id + "' class='btn btn-micro " + this.classes.columnBtn +"' data-popup-link>" + + "<span>" + Tablesaw.i18n.columnBtnText + "</span></a>" ); + $popup = $( "<div class='dialog-table-coltoggle " + this.classes.popup + "' id='" + id + "'></div>" ); + $menu = $( "<div class='btn-group'></div>" ); + + var hasNonPersistentHeaders = false; + $( this.headers ).not( "td" ).each( function() { + var $this = $( this ), + priority = $this.attr("data-tablesaw-priority"), + $cells = self.$getCells( this ); + + if( priority && priority !== "persist" ) { + $cells.addClass( self.classes.priorityPrefix + priority ); + + $("<label><input type='checkbox' checked>" + $this.text() + "</label>" ) + .appendTo( $menu ) + .children( 0 ) + .data( "tablesaw-header", this ); + + hasNonPersistentHeaders = true; + } + }); + + if( !hasNonPersistentHeaders ) { + $menu.append( '<label>' + Tablesaw.i18n.columnsDialogError + '</label>' ); + } + + $menu.appendTo( $popup ); + + // bind change event listeners to inputs - TODO: move to a private method? + $menu.find( 'input[type="checkbox"]' ).on( "change", function(e) { + var checked = e.target.checked; + + self.$getCellsFromCheckbox( e.target ) + .toggleClass( "tablesaw-cell-hidden", !checked ) + .toggleClass( "tablesaw-cell-visible", checked ); + + self.$table.trigger( 'tablesawcolumns' ); + }); + + $menuButton.appendTo( $btnContain ); + $btnContain.appendTo( this.$table.prev().filter( '.' + this.classes.toolbar ) ); + + var closeTimeout; + function openPopup() { + $btnContain.addClass( 'visible' ); + $menuButton.removeClass( 'down' ).addClass( 'up' ); + + $( document ).unbind( 'click.' + tableId, closePopup ); + + window.clearTimeout( closeTimeout ); + closeTimeout = window.setTimeout(function() { + $( document ).one( 'click.' + tableId, closePopup ); + }, 15 ); + } + + function closePopup( event ) { + // Click came from inside the popup, ignore. + if( event && $( event.target ).closest( "." + self.classes.popup ).length ) { + return; + } + + $( document ).unbind( 'click.' + tableId ); + $menuButton.removeClass( 'up' ).addClass( 'down' ); + $btnContain.removeClass( 'visible' ); + } + + $menuButton.on( "click.tablesaw", function( event ) { + event.preventDefault(); + + if( !$btnContain.is( ".visible" ) ) { + openPopup(); + } else { + closePopup(); + } + }); + + $popup.appendTo( $btnContain ); + + this.$menu = $menu; + + $(window).on( "resize." + tableId, function(){ + self.refreshToggle(); + }); + + this.refreshToggle(); + }; + + ColumnToggle.prototype.$getCells = function( th ) { + return $( th ).add( th.cells ); + }; + + ColumnToggle.prototype.$getCellsFromCheckbox = function( checkbox ) { + var th = $( checkbox ).data( "tablesaw-header" ); + return this.$getCells( th ); + }; + + ColumnToggle.prototype.refreshToggle = function() { + var self = this; + this.$menu.find( "input" ).each( function() { + this.checked = self.$getCellsFromCheckbox( this ).eq( 0 ).css( "display" ) === "table-cell"; + }); + }; + + ColumnToggle.prototype.refreshPriority = function(){ + var self = this; + $(this.headers).not( "td" ).each( function() { + var $this = $( this ), + priority = $this.attr("data-tablesaw-priority"), + $cells = $this.add( this.cells ); + + if( priority && priority !== "persist" ) { + $cells.addClass( self.classes.priorityPrefix + priority ); + } + }); + }; + + ColumnToggle.prototype.destroy = function() { + // table toolbars, document and window .tableId events + // removed in parent tables.js destroy method + + this.$table.removeClass( this.classes.columnToggleTable ); + this.$table.find( 'th, td' ).each(function() { + var $cell = $( this ); + $cell.removeClass( 'tablesaw-cell-hidden' ) + .removeClass( 'tablesaw-cell-visible' ); + + this.className = this.className.replace( /\bui\-table\-priority\-\d\b/g, '' ); + }); + }; + + // on tablecreate, init + $( document ).on( "tablesawcreate", function( e, Tablesaw ){ + + if( Tablesaw.mode === 'columntoggle' ){ + var table = new ColumnToggle( Tablesaw.table ); + table.init(); + } + + } ); + + $( document ).on( "tablesawdestroy", function( e, Tablesaw ){ + if( Tablesaw.mode === 'columntoggle' ){ + $( Tablesaw.table ).data( 'tablesaw-coltoggle' ).destroy(); + } + } ); + +}( this, jQuery )); +;(function( win, $, undefined ){ + + $.extend( Tablesaw.config, { + swipe: { + horizontalThreshold: 15, + verticalThreshold: 30 + } + }); + + function isIE8() { + var div = document.createElement('div'), + all = div.getElementsByTagName('i'); + + div.innerHTML = '<!--[if lte IE 8]><i></i><![endif]-->'; + + return !!all.length; + } + + function createSwipeTable( $table ){ + + var $btns = $( "<div class='tablesaw-advance'></div>" ), + $prevBtn = $( "<a href='#' class='tablesaw-nav-btn btn btn-micro left' title='Previous Column'></a>" ).appendTo( $btns ), + $nextBtn = $( "<a href='#' class='tablesaw-nav-btn btn btn-micro right' title='Next Column'></a>" ).appendTo( $btns ), + hideBtn = 'disabled', + persistWidths = 'tablesaw-fix-persist', + $headerCells = $table.find( "thead th" ), + $headerCellsNoPersist = $headerCells.not( '[data-tablesaw-priority="persist"]' ), + headerWidths = [], + $head = $( document.head || 'head' ), + tableId = $table.attr( 'id' ), + // TODO switch this to an nth-child feature test + supportsNthChild = !isIE8(); + + if( !$headerCells.length ) { + throw new Error( "tablesaw swipe: no header cells found. Are you using <th> inside of <thead>?" ); + } + + // Calculate initial widths + $table.css('width', 'auto'); + $headerCells.each(function() { + headerWidths.push( $( this ).outerWidth() ); + }); + $table.css( 'width', '' ); + + $btns.appendTo( $table.prev().filter( '.tablesaw-bar' ) ); + + $table.addClass( "tablesaw-swipe" ); + + if( !tableId ) { + tableId = 'tableswipe-' + Math.round( Math.random() * 10000 ); + $table.attr( 'id', tableId ); + } + + function $getCells( headerCell ) { + return $( headerCell.cells ).add( headerCell ); + } + + function showColumn( headerCell ) { + $getCells( headerCell ).removeClass( 'tablesaw-cell-hidden' ); + } + + function hideColumn( headerCell ) { + $getCells( headerCell ).addClass( 'tablesaw-cell-hidden' ); + } + + function persistColumn( headerCell ) { + $getCells( headerCell ).addClass( 'tablesaw-cell-persist' ); + } + + function isPersistent( headerCell ) { + return $( headerCell ).is( '[data-tablesaw-priority="persist"]' ); + } + + function unmaintainWidths() { + $table.removeClass( persistWidths ); + $( '#' + tableId + '-persist' ).remove(); + } + + function maintainWidths() { + var prefix = '#' + tableId + '.tablesaw-swipe ', + styles = [], + tableWidth = $table.width(), + hash = [], + newHash; + + $headerCells.each(function( index ) { + var width; + if( isPersistent( this ) ) { + width = $( this ).outerWidth(); + + // Only save width on non-greedy columns (take up less than 75% of table width) + if( width < tableWidth * 0.75 ) { + hash.push( index + '-' + width ); + styles.push( prefix + ' .tablesaw-cell-persist:nth-child(' + ( index + 1 ) + ') { width: ' + width + 'px; }' ); + } + } + }); + newHash = hash.join( '_' ); + + $table.addClass( persistWidths ); + + var $style = $( '#' + tableId + '-persist' ); + // If style element not yet added OR if the widths have changed + if( !$style.length || $style.data( 'hash' ) !== newHash ) { + // Remove existing + $style.remove(); + + if( styles.length ) { + $( '<style>' + styles.join( "\n" ) + '</style>' ) + .attr( 'id', tableId + '-persist' ) + .data( 'hash', newHash ) + .appendTo( $head ); + } + } + } + + function getNext(){ + var next = [], + checkFound; + + $headerCellsNoPersist.each(function( i ) { + var $t = $( this ), + isHidden = $t.css( "display" ) === "none" || $t.is( ".tablesaw-cell-hidden" ); + + if( !isHidden && !checkFound ) { + checkFound = true; + next[ 0 ] = i; + } else if( isHidden && checkFound ) { + next[ 1 ] = i; + + return false; + } + }); + + return next; + } + + function getPrev(){ + var next = getNext(); + return [ next[ 1 ] - 1 , next[ 0 ] - 1 ]; + } + + function nextpair( fwd ){ + return fwd ? getNext() : getPrev(); + } + + function canAdvance( pair ){ + return pair[ 1 ] > -1 && pair[ 1 ] < $headerCellsNoPersist.length; + } + + function matchesMedia() { + var matchMedia = $table.attr( "data-tablesaw-swipe-media" ); + return !matchMedia || ( "matchMedia" in win ) && win.matchMedia( matchMedia ).matches; + } + + function fakeBreakpoints() { + if( !matchesMedia() ) { + return; + } + + var extraPaddingPixels = 20, + containerWidth = $table.parent().width(), + persist = [], + sum = 0, + sums = [], + visibleNonPersistantCount = $headerCells.length; + + $headerCells.each(function( index ) { + var $t = $( this ), + isPersist = $t.is( '[data-tablesaw-priority="persist"]' ); + + persist.push( isPersist ); + + sum += headerWidths[ index ] + ( isPersist ? 0 : extraPaddingPixels ); + sums.push( sum ); + + // is persistent or is hidden + if( isPersist || sum > containerWidth ) { + visibleNonPersistantCount--; + } + }); + + var needsNonPersistentColumn = visibleNonPersistantCount === 0; + + $headerCells.each(function( index ) { + if( persist[ index ] ) { + + // for visual box-shadow + persistColumn( this ); + return; + } + + if( sums[ index ] <= containerWidth || needsNonPersistentColumn ) { + needsNonPersistentColumn = false; + showColumn( this ); + } else { + hideColumn( this ); + } + }); + + if( supportsNthChild ) { + unmaintainWidths(); + } + $table.trigger( 'tablesawcolumns' ); + } + + function advance( fwd ){ + var pair = nextpair( fwd ); + if( canAdvance( pair ) ){ + if( isNaN( pair[ 0 ] ) ){ + if( fwd ){ + pair[0] = 0; + } + else { + pair[0] = $headerCellsNoPersist.length - 1; + } + } + + if( supportsNthChild ) { + maintainWidths(); + } + + hideColumn( $headerCellsNoPersist.get( pair[ 0 ] ) ); + showColumn( $headerCellsNoPersist.get( pair[ 1 ] ) ); + + $table.trigger( 'tablesawcolumns' ); + } + } + + $prevBtn.add( $nextBtn ).click(function( e ){ + advance( !!$( e.target ).closest( $nextBtn ).length ); + e.preventDefault(); + }); + + function getCoord( event, key ) { + return ( event.touches || event.originalEvent.touches )[ 0 ][ key ]; + } + + $table + .bind( "touchstart.swipetoggle", function( e ){ + var originX = getCoord( e, 'pageX' ), + originY = getCoord( e, 'pageY' ), + x, + y; + + $( win ).off( "resize", fakeBreakpoints ); + + $( this ) + .bind( "touchmove", function( e ){ + x = getCoord( e, 'pageX' ); + y = getCoord( e, 'pageY' ); + var cfg = Tablesaw.config.swipe; + if( Math.abs( x - originX ) > cfg.horizontalThreshold && Math.abs( y - originY ) < cfg.verticalThreshold ) { + e.preventDefault(); + } + }) + .bind( "touchend.swipetoggle", function(){ + var cfg = Tablesaw.config.swipe; + if( Math.abs( y - originY ) < cfg.verticalThreshold ) { + if( x - originX < -1 * cfg.horizontalThreshold ){ + advance( true ); + } + if( x - originX > cfg.horizontalThreshold ){ + advance( false ); + } + } + + window.setTimeout(function() { + $( win ).on( "resize", fakeBreakpoints ); + }, 300); + $( this ).unbind( "touchmove touchend" ); + }); + + }) + .bind( "tablesawcolumns.swipetoggle", function(){ + $prevBtn[ canAdvance( getPrev() ) ? "removeClass" : "addClass" ]( hideBtn ); + $nextBtn[ canAdvance( getNext() ) ? "removeClass" : "addClass" ]( hideBtn ); + }) + .bind( "tablesawnext.swipetoggle", function(){ + advance( true ); + } ) + .bind( "tablesawprev.swipetoggle", function(){ + advance( false ); + } ) + .bind( "tablesawdestroy.swipetoggle", function(){ + var $t = $( this ); + + $t.removeClass( 'tablesaw-swipe' ); + $t.prev().filter( '.tablesaw-bar' ).find( '.tablesaw-advance' ).remove(); + $( win ).off( "resize", fakeBreakpoints ); + + $t.unbind( ".swipetoggle" ); + }); + + fakeBreakpoints(); + $( win ).on( "resize", fakeBreakpoints ); + } + + + + // on tablecreate, init + $( document ).on( "tablesawcreate", function( e, Tablesaw ){ + + if( Tablesaw.mode === 'swipe' ){ + createSwipeTable( Tablesaw.$table ); + } + + } ); + +}( this, jQuery )); + +;(function( $ ) { + function getSortValue( cell ) { + return $.map( cell.childNodes, function( el ) { + var $el = $( el ); + if( $el.is( 'input, select' ) ) { + return $el.val(); + } else if( $el.hasClass( 'tablesaw-cell-label' ) ) { + return; + } + return $.trim( $el.text() ); + }).join( '' ); + } + + var pluginName = "tablesaw-sortable", + initSelector = "table[data-" + pluginName + "]", + sortableSwitchSelector = "[data-" + pluginName + "-switch]", + attrs = { + defaultCol: "data-tablesaw-sortable-default-col", + numericCol: "data-tablesaw-sortable-numeric" + }, + classes = { + head: pluginName + "-head", + ascend: pluginName + "-ascending", + descend: pluginName + "-descending", + switcher: pluginName + "-switch", + tableToolbar: 'tablesaw-toolbar', + sortButton: pluginName + "-btn" + }, + methods = { + _create: function( o ){ + return $( this ).each(function() { + var init = $( this ).data( "init" + pluginName ); + if( init ) { + return false; + } + $( this ) + .data( "init"+ pluginName, true ) + .trigger( "beforecreate." + pluginName ) + [ pluginName ]( "_init" , o ) + .trigger( "create." + pluginName ); + }); + }, + _init: function(){ + var el = $( this ), + heads, + $switcher; + + var addClassToTable = function(){ + el.addClass( pluginName ); + }, + addClassToHeads = function( h ){ + $.each( h , function( i , v ){ + $( v ).addClass( classes.head ); + }); + }, + makeHeadsActionable = function( h , fn ){ + $.each( h , function( i , v ){ + var b = $( "<button class='" + classes.sortButton + "'/>" ); + b.bind( "click" , { col: v } , fn ); + $( v ).wrapInner( b ); + }); + }, + clearOthers = function( sibs ){ + $.each( sibs , function( i , v ){ + var col = $( v ); + col.removeAttr( attrs.defaultCol ); + col.removeClass( classes.ascend ); + col.removeClass( classes.descend ); + }); + }, + headsOnAction = function( e ){ + if( $( e.target ).is( 'a[href]' ) ) { + return; + } + + e.stopPropagation(); + var head = $( this ).parent(), + v = e.data.col, + newSortValue = heads.index( head ); + + clearOthers( head.siblings() ); + if( head.hasClass( classes.descend ) ){ + el[ pluginName ]( "sortBy" , v , true); + newSortValue += '_asc'; + } else { + el[ pluginName ]( "sortBy" , v ); + newSortValue += '_desc'; + } + if( $switcher ) { + $switcher.find( 'select' ).val( newSortValue ).trigger( 'refresh' ); + } + + e.preventDefault(); + }, + handleDefault = function( heads ){ + $.each( heads , function( idx , el ){ + var $el = $( el ); + if( $el.is( "[" + attrs.defaultCol + "]" ) ){ + if( !$el.hasClass( classes.descend ) ) { + $el.addClass( classes.ascend ); + } + } + }); + }, + addSwitcher = function( heads ){ + $switcher = $( '<div>' ).addClass( classes.switcher ).addClass( classes.tableToolbar ).html(function() { + var html = [ '<label>' + Tablesaw.i18n.sort + ':' ]; + + html.push( '<span class="btn btn-small">&#160;<select>' ); + heads.each(function( j ) { + var $t = $( this ); + var isDefaultCol = $t.is( "[" + attrs.defaultCol + "]" ); + var isDescending = $t.hasClass( classes.descend ); + + var hasNumericAttribute = $t.is( '[data-sortable-numeric]' ); + var numericCount = 0; + // Check only the first four rows to see if the column is numbers. + var numericCountMax = 5; + + $( this.cells ).slice( 0, numericCountMax ).each(function() { + if( !isNaN( parseInt( getSortValue( this ), 10 ) ) ) { + numericCount++; + } + }); + var isNumeric = numericCount === numericCountMax; + if( !hasNumericAttribute ) { + $t.attr( "data-sortable-numeric", isNumeric ? "" : "false" ); + } + + html.push( '<option' + ( isDefaultCol && !isDescending ? ' selected' : '' ) + ' value="' + j + '_asc">' + $t.text() + ' ' + ( isNumeric ? '&#x2191;' : '(A-Z)' ) + '</option>' ); + html.push( '<option' + ( isDefaultCol && isDescending ? ' selected' : '' ) + ' value="' + j + '_desc">' + $t.text() + ' ' + ( isNumeric ? '&#x2193;' : '(Z-A)' ) + '</option>' ); + }); + html.push( '</select></span></label>' ); + + return html.join(''); + }); + + var $toolbar = el.prev().filter( '.tablesaw-bar' ), + $firstChild = $toolbar.children().eq( 0 ); + + if( $firstChild.length ) { + $switcher.insertBefore( $firstChild ); + } else { + $switcher.appendTo( $toolbar ); + } + $switcher.find( '.btn' ).tablesawbtn(); + $switcher.find( 'select' ).on( 'change', function() { + var val = $( this ).val().split( '_' ), + head = heads.eq( val[ 0 ] ); + + clearOthers( head.siblings() ); + el[ pluginName ]( 'sortBy', head.get( 0 ), val[ 1 ] === 'asc' ); + }); + }; + + addClassToTable(); + heads = el.find( "thead th[data-" + pluginName + "-col]" ); + addClassToHeads( heads ); + makeHeadsActionable( heads , headsOnAction ); + handleDefault( heads ); + + if( el.is( sortableSwitchSelector ) ) { + addSwitcher( heads, el.find('tbody tr:nth-child(-n+3)') ); + } + }, + getColumnNumber: function( col ){ + return $( col ).prevAll().length; + }, + getTableRows: function(){ + return $( this ).find( "tbody tr" ); + }, + sortRows: function( rows , colNum , ascending, col ){ + var cells, fn, sorted; + var getCells = function( rows ){ + var cells = []; + $.each( rows , function( i , r ){ + var element = $( r ).children().get( colNum ); + cells.push({ + element: element, + cell: getSortValue( element ), + rowNum: i + }); + }); + return cells; + }, + getSortFxn = function( ascending, forceNumeric ){ + var fn, + regex = /[^\-\+\d\.]/g; + if( ascending ){ + fn = function( a , b ){ + if( forceNumeric ) { + return parseFloat( a.cell.replace( regex, '' ) ) - parseFloat( b.cell.replace( regex, '' ) ); + } else { + return a.cell.toLowerCase() > b.cell.toLowerCase() ? 1 : -1; + } + }; + } else { + fn = function( a , b ){ + if( forceNumeric ) { + return parseFloat( b.cell.replace( regex, '' ) ) - parseFloat( a.cell.replace( regex, '' ) ); + } else { + return a.cell.toLowerCase() < b.cell.toLowerCase() ? 1 : -1; + } + }; + } + return fn; + }, + applyToRows = function( sorted , rows ){ + var newRows = [], i, l, cur; + for( i = 0, l = sorted.length ; i < l ; i++ ){ + cur = sorted[ i ].rowNum; + newRows.push( rows[cur] ); + } + return newRows; + }; + + cells = getCells( rows ); + var customFn = $( col ).data( 'tablesaw-sort' ); + fn = ( customFn && typeof customFn === "function" ? customFn( ascending ) : false ) || + getSortFxn( ascending, $( col ).is( '[data-sortable-numeric]' ) && !$( col ).is( '[data-sortable-numeric="false"]' ) ); + sorted = cells.sort( fn ); + rows = applyToRows( sorted , rows ); + return rows; + }, + replaceTableRows: function( rows ){ + var el = $( this ), + body = el.find( "tbody" ); + body.html( rows ); + }, + makeColDefault: function( col , a ){ + var c = $( col ); + c.attr( attrs.defaultCol , "true" ); + if( a ){ + c.removeClass( classes.descend ); + c.addClass( classes.ascend ); + } else { + c.removeClass( classes.ascend ); + c.addClass( classes.descend ); + } + }, + sortBy: function( col , ascending ){ + var el = $( this ), colNum, rows; + + colNum = el[ pluginName ]( "getColumnNumber" , col ); + rows = el[ pluginName ]( "getTableRows" ); + rows = el[ pluginName ]( "sortRows" , rows , colNum , ascending, col ); + el[ pluginName ]( "replaceTableRows" , rows ); + el[ pluginName ]( "makeColDefault" , col , ascending ); + } + }; + + // Collection method. + $.fn[ pluginName ] = function( arrg ) { + var args = Array.prototype.slice.call( arguments , 1), + returnVal; + + // if it's a method + if( arrg && typeof( arrg ) === "string" ){ + returnVal = $.fn[ pluginName ].prototype[ arrg ].apply( this[0], args ); + return (typeof returnVal !== "undefined")? returnVal:$(this); + } + // check init + if( !$( this ).data( pluginName + "data" ) ){ + $( this ).data( pluginName + "active", true ); + $.fn[ pluginName ].prototype._create.call( this , arrg ); + } + return $(this); + }; + // add methods + $.extend( $.fn[ pluginName ].prototype, methods ); + + $( document ).on( "tablesawcreate", function( e, Tablesaw ) { + if( Tablesaw.$table.is( initSelector ) ) { + Tablesaw.$table[ pluginName ](); + } + }); + +}( jQuery )); + +;(function( win, $, undefined ){ + + var MM = { + attr: { + init: 'data-tablesaw-minimap' + } + }; + + function createMiniMap( $table ){ + + var $btns = $( '<div class="tablesaw-advance minimap">' ), + $dotNav = $( '<ul class="tablesaw-advance-dots">' ).appendTo( $btns ), + hideDot = 'tablesaw-advance-dots-hide', + $headerCells = $table.find( 'thead th' ); + + // populate dots + $headerCells.each(function(){ + $dotNav.append( '<li><i></i></li>' ); + }); + + $btns.appendTo( $table.prev().filter( '.tablesaw-bar' ) ); + + function showMinimap( $table ) { + var mq = $table.attr( MM.attr.init ); + return !mq || win.matchMedia && win.matchMedia( mq ).matches; + } + + function showHideNav(){ + if( !showMinimap( $table ) ) { + $btns.hide(); + return; + } + $btns.show(); + + // show/hide dots + var dots = $dotNav.find( "li" ).removeClass( hideDot ); + $table.find( "thead th" ).each(function(i){ + if( $( this ).css( "display" ) === "none" ){ + dots.eq( i ).addClass( hideDot ); + } + }); + } + + // run on init and resize + showHideNav(); + $( win ).on( "resize", showHideNav ); + + + $table + .bind( "tablesawcolumns.minimap", function(){ + showHideNav(); + }) + .bind( "tablesawdestroy.minimap", function(){ + var $t = $( this ); + + $t.prev().filter( '.tablesaw-bar' ).find( '.tablesaw-advance' ).remove(); + $( win ).off( "resize", showHideNav ); + + $t.unbind( ".minimap" ); + }); + } + + + + // on tablecreate, init + $( document ).on( "tablesawcreate", function( e, Tablesaw ){ + + if( ( Tablesaw.mode === 'swipe' || Tablesaw.mode === 'columntoggle' ) && Tablesaw.$table.is( '[ ' + MM.attr.init + ']' ) ){ + createMiniMap( Tablesaw.$table ); + } + + } ); + +}( this, jQuery )); + +;(function( win, $ ) { + + var S = { + selectors: { + init: 'table[data-tablesaw-mode-switch]' + }, + attributes: { + excludeMode: 'data-tablesaw-mode-exclude' + }, + classes: { + main: 'tablesaw-modeswitch', + toolbar: 'tablesaw-toolbar' + }, + modes: [ 'stack', 'swipe', 'columntoggle' ], + init: function( table ) { + var $table = $( table ), + ignoreMode = $table.attr( S.attributes.excludeMode ), + $toolbar = $table.prev().filter( '.tablesaw-bar' ), + modeVal = '', + $switcher = $( '<div>' ).addClass( S.classes.main + ' ' + S.classes.toolbar ).html(function() { + var html = [ '<label>' + Tablesaw.i18n.columns + ':' ], + dataMode = $table.attr( 'data-tablesaw-mode' ), + isSelected; + + html.push( '<span class="btn btn-small">&#160;<select>' ); + for( var j=0, k = S.modes.length; j<k; j++ ) { + if( ignoreMode && ignoreMode.toLowerCase() === S.modes[ j ] ) { + continue; + } + + isSelected = dataMode === S.modes[ j ]; + + if( isSelected ) { + modeVal = S.modes[ j ]; + } + + html.push( '<option' + + ( isSelected ? ' selected' : '' ) + + ' value="' + S.modes[ j ] + '">' + Tablesaw.i18n.modes[ j ] + '</option>' ); + } + html.push( '</select></span></label>' ); + + return html.join(''); + }); + + var $otherToolbarItems = $toolbar.find( '.tablesaw-advance' ).eq( 0 ); + if( $otherToolbarItems.length ) { + $switcher.insertBefore( $otherToolbarItems ); + } else { + $switcher.appendTo( $toolbar ); + } + + $switcher.find( '.btn' ).tablesawbtn(); + $switcher.find( 'select' ).bind( 'change', S.onModeChange ); + }, + onModeChange: function() { + var $t = $( this ), + $switcher = $t.closest( '.' + S.classes.main ), + $table = $t.closest( '.tablesaw-bar' ).nextUntil( $table ).eq( 0 ), + val = $t.val(); + + $switcher.remove(); + $table.data( 'table' ).destroy(); + + $table.attr( 'data-tablesaw-mode', val ); + $table.table(); + } + }; + + $( win.document ).on( "tablesawcreate", function( e, Tablesaw ) { + if( Tablesaw.$table.is( S.selectors.init ) ) { + S.init( Tablesaw.table ); + } + }); + +})( this, jQuery ); \ No newline at end of file diff --git a/plugins/timepicker/bootstrap-timepicker.js b/plugins/timepicker/bootstrap-timepicker.js new file mode 100644 index 0000000..bbb923c --- /dev/null +++ b/plugins/timepicker/bootstrap-timepicker.js @@ -0,0 +1,1177 @@ +/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit and bootstrap-timepicker contributors + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +(function($, window, document) { + 'use strict'; + + // TIMEPICKER PUBLIC CLASS DEFINITION + var Timepicker = function(element, options) { + this.widget = ''; + this.$element = $(element); + this.defaultTime = options.defaultTime; + this.disableFocus = options.disableFocus; + this.disableMousewheel = options.disableMousewheel; + this.isOpen = options.isOpen; + this.minuteStep = options.minuteStep; + this.modalBackdrop = options.modalBackdrop; + this.orientation = options.orientation; + this.secondStep = options.secondStep; + this.snapToStep = options.snapToStep; + this.showInputs = options.showInputs; + this.showMeridian = options.showMeridian; + this.showSeconds = options.showSeconds; + this.template = options.template; + this.appendWidgetTo = options.appendWidgetTo; + this.showWidgetOnAddonClick = options.showWidgetOnAddonClick; + this.icons = options.icons; + this.maxHours = options.maxHours; + this.explicitMode = options.explicitMode; // If true 123 = 1:23, 12345 = 1:23:45, else invalid. + + this.handleDocumentClick = function (e) { + var self = e.data.scope; + // This condition was inspired by bootstrap-datepicker. + // The element the timepicker is invoked on is the input but it has a sibling for addon/button. + if (!(self.$element.parent().find(e.target).length || + self.$widget.is(e.target) || + self.$widget.find(e.target).length)) { + self.hideWidget(); + } + }; + + this._init(); + }; + + Timepicker.prototype = { + + constructor: Timepicker, + _init: function() { + var self = this; + + if (this.showWidgetOnAddonClick && (this.$element.parent().hasClass('input-group') && this.$element.parent().hasClass('bootstrap-timepicker'))) { + this.$element.parent('.input-group.bootstrap-timepicker').find('.input-group-addon').on({ + 'click.timepicker': $.proxy(this.showWidget, this) + }); + this.$element.on({ + 'focus.timepicker': $.proxy(this.highlightUnit, this), + 'click.timepicker': $.proxy(this.highlightUnit, this), + 'keydown.timepicker': $.proxy(this.elementKeydown, this), + 'blur.timepicker': $.proxy(this.blurElement, this), + 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) + }); + } else { + if (this.template) { + this.$element.on({ + 'focus.timepicker': $.proxy(this.showWidget, this), + 'click.timepicker': $.proxy(this.showWidget, this), + 'blur.timepicker': $.proxy(this.blurElement, this), + 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) + }); + } else { + this.$element.on({ + 'focus.timepicker': $.proxy(this.highlightUnit, this), + 'click.timepicker': $.proxy(this.highlightUnit, this), + 'keydown.timepicker': $.proxy(this.elementKeydown, this), + 'blur.timepicker': $.proxy(this.blurElement, this), + 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) + }); + } + } + + if (this.template !== false) { + this.$widget = $(this.getTemplate()).on('click', $.proxy(this.widgetClick, this)); + } else { + this.$widget = false; + } + + if (this.showInputs && this.$widget !== false) { + this.$widget.find('input').each(function() { + $(this).on({ + 'click.timepicker': function() { $(this).select(); }, + 'keydown.timepicker': $.proxy(self.widgetKeydown, self), + 'keyup.timepicker': $.proxy(self.widgetKeyup, self) + }); + }); + } + + this.setDefaultTime(this.defaultTime); + }, + + blurElement: function() { + this.highlightedUnit = null; + this.updateFromElementVal(); + }, + + clear: function() { + this.hour = ''; + this.minute = ''; + this.second = ''; + this.meridian = ''; + + this.$element.val(''); + }, + + decrementHour: function() { + if (this.showMeridian) { + if (this.hour === 1) { + this.hour = 12; + } else if (this.hour === 12) { + this.hour--; + + return this.toggleMeridian(); + } else if (this.hour === 0) { + this.hour = 11; + + return this.toggleMeridian(); + } else { + this.hour--; + } + } else { + if (this.hour <= 0) { + this.hour = this.maxHours - 1; + } else { + this.hour--; + } + } + }, + + decrementMinute: function(step) { + var newVal; + + if (step) { + newVal = this.minute - step; + } else { + newVal = this.minute - this.minuteStep; + } + + if (newVal < 0) { + this.decrementHour(); + this.minute = newVal + 60; + } else { + this.minute = newVal; + } + }, + + decrementSecond: function() { + var newVal = this.second - this.secondStep; + + if (newVal < 0) { + this.decrementMinute(true); + this.second = newVal + 60; + } else { + this.second = newVal; + } + }, + + elementKeydown: function(e) { + switch (e.which) { + case 9: //tab + if (e.shiftKey) { + if (this.highlightedUnit === 'hour') { + this.hideWidget(); + break; + } + this.highlightPrevUnit(); + } else if ((this.showMeridian && this.highlightedUnit === 'meridian') || (this.showSeconds && this.highlightedUnit === 'second') || (!this.showMeridian && !this.showSeconds && this.highlightedUnit ==='minute')) { + this.hideWidget(); + break; + } else { + this.highlightNextUnit(); + } + e.preventDefault(); + this.updateFromElementVal(); + break; + case 27: // escape + this.updateFromElementVal(); + break; + case 37: // left arrow + e.preventDefault(); + this.highlightPrevUnit(); + this.updateFromElementVal(); + break; + case 38: // up arrow + e.preventDefault(); + switch (this.highlightedUnit) { + case 'hour': + this.incrementHour(); + this.highlightHour(); + break; + case 'minute': + this.incrementMinute(); + this.highlightMinute(); + break; + case 'second': + this.incrementSecond(); + this.highlightSecond(); + break; + case 'meridian': + this.toggleMeridian(); + this.highlightMeridian(); + break; + } + this.update(); + break; + case 39: // right arrow + e.preventDefault(); + this.highlightNextUnit(); + this.updateFromElementVal(); + break; + case 40: // down arrow + e.preventDefault(); + switch (this.highlightedUnit) { + case 'hour': + this.decrementHour(); + this.highlightHour(); + break; + case 'minute': + this.decrementMinute(); + this.highlightMinute(); + break; + case 'second': + this.decrementSecond(); + this.highlightSecond(); + break; + case 'meridian': + this.toggleMeridian(); + this.highlightMeridian(); + break; + } + + this.update(); + break; + } + }, + + getCursorPosition: function() { + var input = this.$element.get(0); + + if ('selectionStart' in input) {// Standard-compliant browsers + + return input.selectionStart; + } else if (document.selection) {// IE fix + input.focus(); + var sel = document.selection.createRange(), + selLen = document.selection.createRange().text.length; + + sel.moveStart('character', - input.value.length); + + return sel.text.length - selLen; + } + }, + + getTemplate: function() { + var template, + hourTemplate, + minuteTemplate, + secondTemplate, + meridianTemplate, + templateContent; + + if (this.showInputs) { + hourTemplate = '<input type="text" class="bootstrap-timepicker-hour" maxlength="2"/>'; + minuteTemplate = '<input type="text" class="bootstrap-timepicker-minute" maxlength="2"/>'; + secondTemplate = '<input type="text" class="bootstrap-timepicker-second" maxlength="2"/>'; + meridianTemplate = '<input type="text" class="bootstrap-timepicker-meridian" maxlength="2"/>'; + } else { + hourTemplate = '<span class="bootstrap-timepicker-hour"></span>'; + minuteTemplate = '<span class="bootstrap-timepicker-minute"></span>'; + secondTemplate = '<span class="bootstrap-timepicker-second"></span>'; + meridianTemplate = '<span class="bootstrap-timepicker-meridian"></span>'; + } + + templateContent = '<table>'+ + '<tr>'+ + '<td><a href="#" data-action="incrementHour"><span class="'+ this.icons.up +'"></span></a></td>'+ + '<td class="separator">&nbsp;</td>'+ + '<td><a href="#" data-action="incrementMinute"><span class="'+ this.icons.up +'"></span></a></td>'+ + (this.showSeconds ? + '<td class="separator">&nbsp;</td>'+ + '<td><a href="#" data-action="incrementSecond"><span class="'+ this.icons.up +'"></span></a></td>' + : '') + + (this.showMeridian ? + '<td class="separator">&nbsp;</td>'+ + '<td class="meridian-column"><a href="#" data-action="toggleMeridian"><span class="'+ this.icons.up +'"></span></a></td>' + : '') + + '</tr>'+ + '<tr>'+ + '<td>'+ hourTemplate +'</td> '+ + '<td class="separator">:</td>'+ + '<td>'+ minuteTemplate +'</td> '+ + (this.showSeconds ? + '<td class="separator">:</td>'+ + '<td>'+ secondTemplate +'</td>' + : '') + + (this.showMeridian ? + '<td class="separator">&nbsp;</td>'+ + '<td>'+ meridianTemplate +'</td>' + : '') + + '</tr>'+ + '<tr>'+ + '<td><a href="#" data-action="decrementHour"><span class="'+ this.icons.down +'"></span></a></td>'+ + '<td class="separator"></td>'+ + '<td><a href="#" data-action="decrementMinute"><span class="'+ this.icons.down +'"></span></a></td>'+ + (this.showSeconds ? + '<td class="separator">&nbsp;</td>'+ + '<td><a href="#" data-action="decrementSecond"><span class="'+ this.icons.down +'"></span></a></td>' + : '') + + (this.showMeridian ? + '<td class="separator">&nbsp;</td>'+ + '<td><a href="#" data-action="toggleMeridian"><span class="'+ this.icons.down +'"></span></a></td>' + : '') + + '</tr>'+ + '</table>'; + + switch(this.template) { + case 'modal': + template = '<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="'+ (this.modalBackdrop ? 'true' : 'false') +'">'+ + '<div class="modal-header">'+ + '<a href="#" class="close" data-dismiss="modal">&times;</a>'+ + '<h3>Pick a Time</h3>'+ + '</div>'+ + '<div class="modal-content">'+ + templateContent + + '</div>'+ + '<div class="modal-footer">'+ + '<a href="#" class="btn btn-primary" data-dismiss="modal">OK</a>'+ + '</div>'+ + '</div>'; + break; + case 'dropdown': + template = '<div class="bootstrap-timepicker-widget dropdown-menu">'+ templateContent +'</div>'; + break; + } + + return template; + }, + + getTime: function() { + if (this.hour === '') { + return ''; + } + + return this.hour + ':' + (this.minute.toString().length === 1 ? '0' + this.minute : this.minute) + (this.showSeconds ? ':' + (this.second.toString().length === 1 ? '0' + this.second : this.second) : '') + (this.showMeridian ? ' ' + this.meridian : ''); + }, + + hideWidget: function() { + if (this.isOpen === false) { + return; + } + + this.$element.trigger({ + 'type': 'hide.timepicker', + 'time': { + 'value': this.getTime(), + 'hours': this.hour, + 'minutes': this.minute, + 'seconds': this.second, + 'meridian': this.meridian + } + }); + + if (this.template === 'modal' && this.$widget.modal) { + this.$widget.modal('hide'); + } else { + this.$widget.removeClass('open'); + } + + $(document).off('mousedown.timepicker, touchend.timepicker', this.handleDocumentClick); + + this.isOpen = false; + // show/hide approach taken by datepicker + this.$widget.detach(); + }, + + highlightUnit: function() { + this.position = this.getCursorPosition(); + if (this.position >= 0 && this.position <= 2) { + this.highlightHour(); + } else if (this.position >= 3 && this.position <= 5) { + this.highlightMinute(); + } else if (this.position >= 6 && this.position <= 8) { + if (this.showSeconds) { + this.highlightSecond(); + } else { + this.highlightMeridian(); + } + } else if (this.position >= 9 && this.position <= 11) { + this.highlightMeridian(); + } + }, + + highlightNextUnit: function() { + switch (this.highlightedUnit) { + case 'hour': + this.highlightMinute(); + break; + case 'minute': + if (this.showSeconds) { + this.highlightSecond(); + } else if (this.showMeridian){ + this.highlightMeridian(); + } else { + this.highlightHour(); + } + break; + case 'second': + if (this.showMeridian) { + this.highlightMeridian(); + } else { + this.highlightHour(); + } + break; + case 'meridian': + this.highlightHour(); + break; + } + }, + + highlightPrevUnit: function() { + switch (this.highlightedUnit) { + case 'hour': + if(this.showMeridian){ + this.highlightMeridian(); + } else if (this.showSeconds) { + this.highlightSecond(); + } else { + this.highlightMinute(); + } + break; + case 'minute': + this.highlightHour(); + break; + case 'second': + this.highlightMinute(); + break; + case 'meridian': + if (this.showSeconds) { + this.highlightSecond(); + } else { + this.highlightMinute(); + } + break; + } + }, + + highlightHour: function() { + var $element = this.$element.get(0), + self = this; + + this.highlightedUnit = 'hour'; + + if ($element.setSelectionRange) { + setTimeout(function() { + if (self.hour < 10) { + $element.setSelectionRange(0,1); + } else { + $element.setSelectionRange(0,2); + } + }, 0); + } + }, + + highlightMinute: function() { + var $element = this.$element.get(0), + self = this; + + this.highlightedUnit = 'minute'; + + if ($element.setSelectionRange) { + setTimeout(function() { + if (self.hour < 10) { + $element.setSelectionRange(2,4); + } else { + $element.setSelectionRange(3,5); + } + }, 0); + } + }, + + highlightSecond: function() { + var $element = this.$element.get(0), + self = this; + + this.highlightedUnit = 'second'; + + if ($element.setSelectionRange) { + setTimeout(function() { + if (self.hour < 10) { + $element.setSelectionRange(5,7); + } else { + $element.setSelectionRange(6,8); + } + }, 0); + } + }, + + highlightMeridian: function() { + var $element = this.$element.get(0), + self = this; + + this.highlightedUnit = 'meridian'; + + if ($element.setSelectionRange) { + if (this.showSeconds) { + setTimeout(function() { + if (self.hour < 10) { + $element.setSelectionRange(8,10); + } else { + $element.setSelectionRange(9,11); + } + }, 0); + } else { + setTimeout(function() { + if (self.hour < 10) { + $element.setSelectionRange(5,7); + } else { + $element.setSelectionRange(6,8); + } + }, 0); + } + } + }, + + incrementHour: function() { + if (this.showMeridian) { + if (this.hour === 11) { + this.hour++; + return this.toggleMeridian(); + } else if (this.hour === 12) { + this.hour = 0; + } + } + if (this.hour === this.maxHours - 1) { + this.hour = 0; + + return; + } + this.hour++; + }, + + incrementMinute: function(step) { + var newVal; + + if (step) { + newVal = this.minute + step; + } else { + newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep); + } + + if (newVal > 59) { + this.incrementHour(); + this.minute = newVal - 60; + } else { + this.minute = newVal; + } + }, + + incrementSecond: function() { + var newVal = this.second + this.secondStep - (this.second % this.secondStep); + + if (newVal > 59) { + this.incrementMinute(true); + this.second = newVal - 60; + } else { + this.second = newVal; + } + }, + + mousewheel: function(e) { + if (this.disableMousewheel) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail, + scrollTo = null; + + if (e.type === 'mousewheel') { + scrollTo = (e.originalEvent.wheelDelta * -1); + } + else if (e.type === 'DOMMouseScroll') { + scrollTo = 40 * e.originalEvent.detail; + } + + if (scrollTo) { + e.preventDefault(); + $(this).scrollTop(scrollTo + $(this).scrollTop()); + } + + switch (this.highlightedUnit) { + case 'minute': + if (delta > 0) { + this.incrementMinute(); + } else { + this.decrementMinute(); + } + this.highlightMinute(); + break; + case 'second': + if (delta > 0) { + this.incrementSecond(); + } else { + this.decrementSecond(); + } + this.highlightSecond(); + break; + case 'meridian': + this.toggleMeridian(); + this.highlightMeridian(); + break; + default: + if (delta > 0) { + this.incrementHour(); + } else { + this.decrementHour(); + } + this.highlightHour(); + break; + } + + return false; + }, + + /** + * Given a segment value like 43, will round and snap the segment + * to the nearest "step", like 45 if step is 15. Segment will + * "overflow" to 0 if it's larger than 59 or would otherwise + * round up to 60. + */ + changeToNearestStep: function (segment, step) { + if (segment % step === 0) { + return segment; + } + if (Math.round((segment % step) / step)) { + return (segment + (step - segment % step)) % 60; + } else { + return segment - segment % step; + } + }, + + // This method was adapted from bootstrap-datepicker. + place : function() { + if (this.isInline) { + return; + } + var widgetWidth = this.$widget.outerWidth(), widgetHeight = this.$widget.outerHeight(), visualPadding = 10, windowWidth = + $(window).width(), windowHeight = $(window).height(), scrollTop = $(window).scrollTop(); + + var zIndex = parseInt(this.$element.parents().filter(function() { return $(this).css('z-index') !== 'auto'; }).first().css('z-index'), 10) + 10; + var offset = this.component ? this.component.parent().offset() : this.$element.offset(); + var height = this.component ? this.component.outerHeight(true) : this.$element.outerHeight(false); + var width = this.component ? this.component.outerWidth(true) : this.$element.outerWidth(false); + var left = offset.left, top = offset.top; + + this.$widget.removeClass('timepicker-orient-top timepicker-orient-bottom timepicker-orient-right timepicker-orient-left'); + + if (this.orientation.x !== 'auto') { + this.$widget.addClass('timepicker-orient-' + this.orientation.x); + if (this.orientation.x === 'right') { + left -= widgetWidth - width; + } + } else{ + // auto x orientation is best-placement: if it crosses a window edge, fudge it sideways + // Default to left + this.$widget.addClass('timepicker-orient-left'); + if (offset.left < 0) { + left -= offset.left - visualPadding; + } else if (offset.left + widgetWidth > windowWidth) { + left = windowWidth - widgetWidth - visualPadding; + } + } + // auto y orientation is best-situation: top or bottom, no fudging, decision based on which shows more of the widget + var yorient = this.orientation.y, topOverflow, bottomOverflow; + if (yorient === 'auto') { + topOverflow = -scrollTop + offset.top - widgetHeight; + bottomOverflow = scrollTop + windowHeight - (offset.top + height + widgetHeight); + if (Math.max(topOverflow, bottomOverflow) === bottomOverflow) { + yorient = 'top'; + } else { + yorient = 'bottom'; + } + } + this.$widget.addClass('timepicker-orient-' + yorient); + if (yorient === 'top'){ + top += height; + } else{ + top -= widgetHeight + parseInt(this.$widget.css('padding-top'), 10); + } + + this.$widget.css({ + top : top, + left : left, + zIndex : zIndex + }); + }, + + remove: function() { + $('document').off('.timepicker'); + if (this.$widget) { + this.$widget.remove(); + } + delete this.$element.data().timepicker; + }, + + setDefaultTime: function(defaultTime) { + if (!this.$element.val()) { + if (defaultTime === 'current') { + var dTime = new Date(), + hours = dTime.getHours(), + minutes = dTime.getMinutes(), + seconds = dTime.getSeconds(), + meridian = 'AM'; + + if (seconds !== 0) { + seconds = Math.ceil(dTime.getSeconds() / this.secondStep) * this.secondStep; + if (seconds === 60) { + minutes += 1; + seconds = 0; + } + } + + if (minutes !== 0) { + minutes = Math.ceil(dTime.getMinutes() / this.minuteStep) * this.minuteStep; + if (minutes === 60) { + hours += 1; + minutes = 0; + } + } + + if (this.showMeridian) { + if (hours === 0) { + hours = 12; + } else if (hours >= 12) { + if (hours > 12) { + hours = hours - 12; + } + meridian = 'PM'; + } else { + meridian = 'AM'; + } + } + + this.hour = hours; + this.minute = minutes; + this.second = seconds; + this.meridian = meridian; + + this.update(); + + } else if (defaultTime === false) { + this.hour = 0; + this.minute = 0; + this.second = 0; + this.meridian = 'AM'; + } else { + this.setTime(defaultTime); + } + } else { + this.updateFromElementVal(); + } + }, + + setTime: function(time, ignoreWidget) { + if (!time) { + this.clear(); + return; + } + + var timeMode, + timeArray, + hour, + minute, + second, + meridian; + + if (typeof time === 'object' && time.getMonth){ + // this is a date object + hour = time.getHours(); + minute = time.getMinutes(); + second = time.getSeconds(); + + if (this.showMeridian){ + meridian = 'AM'; + if (hour > 12){ + meridian = 'PM'; + hour = hour % 12; + } + + if (hour === 12){ + meridian = 'PM'; + } + } + } else { + timeMode = ((/a/i).test(time) ? 1 : 0) + ((/p/i).test(time) ? 2 : 0); // 0 = none, 1 = AM, 2 = PM, 3 = BOTH. + if (timeMode > 2) { // If both are present, fail. + this.clear(); + return; + } + + timeArray = time.replace(/[^0-9\:]/g, '').split(':'); + + hour = timeArray[0] ? timeArray[0].toString() : timeArray.toString(); + + if(this.explicitMode && hour.length > 2 && (hour.length % 2) !== 0 ) { + this.clear(); + return; + } + + minute = timeArray[1] ? timeArray[1].toString() : ''; + second = timeArray[2] ? timeArray[2].toString() : ''; + + // adaptive time parsing + if (hour.length > 4) { + second = hour.slice(-2); + hour = hour.slice(0, -2); + } + + if (hour.length > 2) { + minute = hour.slice(-2); + hour = hour.slice(0, -2); + } + + if (minute.length > 2) { + second = minute.slice(-2); + minute = minute.slice(0, -2); + } + + hour = parseInt(hour, 10); + minute = parseInt(minute, 10); + second = parseInt(second, 10); + + if (isNaN(hour)) { + hour = 0; + } + if (isNaN(minute)) { + minute = 0; + } + if (isNaN(second)) { + second = 0; + } + + // Adjust the time based upon unit boundary. + // NOTE: Negatives will never occur due to time.replace() above. + if (second > 59) { + second = 59; + } + + if (minute > 59) { + minute = 59; + } + + if (hour >= this.maxHours) { + // No day/date handling. + hour = this.maxHours - 1; + } + + if (this.showMeridian) { + if (hour > 12) { + // Force PM. + timeMode = 2; + hour -= 12; + } + if (!timeMode) { + timeMode = 1; + } + if (hour === 0) { + hour = 12; // AM or PM, reset to 12. 0 AM = 12 AM. 0 PM = 12 PM, etc. + } + meridian = timeMode === 1 ? 'AM' : 'PM'; + } else if (hour < 12 && timeMode === 2) { + hour += 12; + } else { + if (hour >= this.maxHours) { + hour = this.maxHours - 1; + } else if ((hour < 0) || (hour === 12 && timeMode === 1)){ + hour = 0; + } + } + } + + this.hour = hour; + if (this.snapToStep) { + this.minute = this.changeToNearestStep(minute, this.minuteStep); + this.second = this.changeToNearestStep(second, this.secondStep); + } else { + this.minute = minute; + this.second = second; + } + this.meridian = meridian; + + this.update(ignoreWidget); + }, + + showWidget: function() { + if (this.isOpen) { + return; + } + + if (this.$element.is(':disabled')) { + return; + } + + // show/hide approach taken by datepicker + this.$widget.appendTo(this.appendWidgetTo); + $(document).on('mousedown.timepicker, touchend.timepicker', {scope: this}, this.handleDocumentClick); + + this.$element.trigger({ + 'type': 'show.timepicker', + 'time': { + 'value': this.getTime(), + 'hours': this.hour, + 'minutes': this.minute, + 'seconds': this.second, + 'meridian': this.meridian + } + }); + + this.place(); + if (this.disableFocus) { + this.$element.blur(); + } + + // widget shouldn't be empty on open + if (this.hour === '') { + if (this.defaultTime) { + this.setDefaultTime(this.defaultTime); + } else { + this.setTime('0:0:0'); + } + } + + if (this.template === 'modal' && this.$widget.modal) { + this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this)); + } else { + if (this.isOpen === false) { + this.$widget.addClass('open'); + } + } + + this.isOpen = true; + }, + + toggleMeridian: function() { + this.meridian = this.meridian === 'AM' ? 'PM' : 'AM'; + }, + + update: function(ignoreWidget) { + this.updateElement(); + if (!ignoreWidget) { + this.updateWidget(); + } + + this.$element.trigger({ + 'type': 'changeTime.timepicker', + 'time': { + 'value': this.getTime(), + 'hours': this.hour, + 'minutes': this.minute, + 'seconds': this.second, + 'meridian': this.meridian + } + }); + }, + + updateElement: function() { + this.$element.val(this.getTime()).change(); + }, + + updateFromElementVal: function() { + this.setTime(this.$element.val()); + }, + + updateWidget: function() { + if (this.$widget === false) { + return; + } + + var hour = this.hour, + minute = this.minute.toString().length === 1 ? '0' + this.minute : this.minute, + second = this.second.toString().length === 1 ? '0' + this.second : this.second; + + if (this.showInputs) { + this.$widget.find('input.bootstrap-timepicker-hour').val(hour); + this.$widget.find('input.bootstrap-timepicker-minute').val(minute); + + if (this.showSeconds) { + this.$widget.find('input.bootstrap-timepicker-second').val(second); + } + if (this.showMeridian) { + this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian); + } + } else { + this.$widget.find('span.bootstrap-timepicker-hour').text(hour); + this.$widget.find('span.bootstrap-timepicker-minute').text(minute); + + if (this.showSeconds) { + this.$widget.find('span.bootstrap-timepicker-second').text(second); + } + if (this.showMeridian) { + this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian); + } + } + }, + + updateFromWidgetInputs: function() { + if (this.$widget === false) { + return; + } + + var t = this.$widget.find('input.bootstrap-timepicker-hour').val() + ':' + + this.$widget.find('input.bootstrap-timepicker-minute').val() + + (this.showSeconds ? ':' + this.$widget.find('input.bootstrap-timepicker-second').val() : '') + + (this.showMeridian ? this.$widget.find('input.bootstrap-timepicker-meridian').val() : '') + ; + + this.setTime(t, true); + }, + + widgetClick: function(e) { + e.stopPropagation(); + e.preventDefault(); + + var $input = $(e.target), + action = $input.closest('a').data('action'); + + if (action) { + this[action](); + } + this.update(); + + if ($input.is('input')) { + $input.get(0).setSelectionRange(0,2); + } + }, + + widgetKeydown: function(e) { + var $input = $(e.target), + name = $input.attr('class').replace('bootstrap-timepicker-', ''); + + switch (e.which) { + case 9: //tab + if (e.shiftKey) { + if (name === 'hour') { + return this.hideWidget(); + } + } else if ((this.showMeridian && name === 'meridian') || (this.showSeconds && name === 'second') || (!this.showMeridian && !this.showSeconds && name === 'minute')) { + return this.hideWidget(); + } + break; + case 27: // escape + this.hideWidget(); + break; + case 38: // up arrow + e.preventDefault(); + switch (name) { + case 'hour': + this.incrementHour(); + break; + case 'minute': + this.incrementMinute(); + break; + case 'second': + this.incrementSecond(); + break; + case 'meridian': + this.toggleMeridian(); + break; + } + this.setTime(this.getTime()); + $input.get(0).setSelectionRange(0,2); + break; + case 40: // down arrow + e.preventDefault(); + switch (name) { + case 'hour': + this.decrementHour(); + break; + case 'minute': + this.decrementMinute(); + break; + case 'second': + this.decrementSecond(); + break; + case 'meridian': + this.toggleMeridian(); + break; + } + this.setTime(this.getTime()); + $input.get(0).setSelectionRange(0,2); + break; + } + }, + + widgetKeyup: function(e) { + if ((e.which === 65) || (e.which === 77) || (e.which === 80) || (e.which === 46) || (e.which === 8) || (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105)) { + this.updateFromWidgetInputs(); + } + } + }; + + //TIMEPICKER PLUGIN DEFINITION + $.fn.timepicker = function(option) { + var args = Array.apply(null, arguments); + args.shift(); + return this.each(function() { + var $this = $(this), + data = $this.data('timepicker'), + options = typeof option === 'object' && option; + + if (!data) { + $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data())))); + } + + if (typeof option === 'string') { + data[option].apply(data, args); + } + }); + }; + + $.fn.timepicker.defaults = { + defaultTime: 'current', + disableFocus: false, + disableMousewheel: false, + isOpen: false, + minuteStep: 15, + modalBackdrop: false, + orientation: { x: 'auto', y: 'auto'}, + secondStep: 15, + snapToStep: false, + showSeconds: false, + showInputs: true, + showMeridian: true, + template: 'dropdown', + appendWidgetTo: 'body', + showWidgetOnAddonClick: true, + icons: { + up: 'glyphicon glyphicon-chevron-up', + down: 'glyphicon glyphicon-chevron-down' + }, + maxHours: 24, + explicitMode: false + }; + + $.fn.timepicker.Constructor = Timepicker; + + $(document).on( + 'focus.timepicker.data-api click.timepicker.data-api', + '[data-provide="timepicker"]', + function(e){ + var $this = $(this); + if ($this.data('timepicker')) { + return; + } + e.preventDefault(); + // component click requires us to explicitly show it + $this.timepicker(); + } + ); + +})(jQuery, window, document); diff --git a/plugins/timepicker/bootstrap-timepicker.min.css b/plugins/timepicker/bootstrap-timepicker.min.css new file mode 100644 index 0000000..bacd38d --- /dev/null +++ b/plugins/timepicker/bootstrap-timepicker.min.css @@ -0,0 +1,148 @@ +/*! + * Timepicker Component for Twitter Bootstrap + * + * Copyright 2013 Joris de Wit + * + * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + .bootstrap-timepicker { + position: relative; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { + left: auto; + right: 0; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { + left: auto; + right: 12px; +} +.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { + left: auto; + right: 13px; +} +.bootstrap-timepicker .input-group-addon { + cursor: pointer; +} +.bootstrap-timepicker .input-group-addon i { + display: inline-block; + width: 16px; + height: 16px; +} +.bootstrap-timepicker-widget.dropdown-menu { + padding: 4px; +} +.bootstrap-timepicker-widget.dropdown-menu.open { + display: inline-block; +} +.bootstrap-timepicker-widget.dropdown-menu:before { + border-bottom: 7px solid rgba(0, 0, 0, 0.2); + border-left: 7px solid transparent; + border-right: 7px solid transparent; + content: ""; + display: inline-block; + position: absolute; +} +.bootstrap-timepicker-widget.dropdown-menu:after { + border-bottom: 6px solid #FFFFFF; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + content: ""; + display: inline-block; + position: absolute; +} +.bootstrap-timepicker-widget.timepicker-orient-left:before { + left: 6px; +} +.bootstrap-timepicker-widget.timepicker-orient-left:after { + left: 7px; +} +.bootstrap-timepicker-widget.timepicker-orient-right:before { + right: 6px; +} +.bootstrap-timepicker-widget.timepicker-orient-right:after { + right: 7px; +} +.bootstrap-timepicker-widget.timepicker-orient-top:before { + top: -7px; +} +.bootstrap-timepicker-widget.timepicker-orient-top:after { + top: -6px; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; +} +.bootstrap-timepicker-widget.timepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #ffffff; +} +.bootstrap-timepicker-widget a.btn, +.bootstrap-timepicker-widget input { + border-radius: 4px; +} +.bootstrap-timepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-timepicker-widget table td { + text-align: center; + height: 30px; + margin: 0; + padding: 2px; +} +.bootstrap-timepicker-widget table td:not(.separator) { + min-width: 30px; +} +.bootstrap-timepicker-widget table td span { + width: 100%; +} +.bootstrap-timepicker-widget table td a { + border: 1px transparent solid; + width: 100%; + display: inline-block; + margin: 0; + padding: 8px 0; + outline: 0; + color: #333; +} +.bootstrap-timepicker-widget table td a:hover { + text-decoration: none; + background-color: #eee; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border-color: #ddd; +} +.bootstrap-timepicker-widget table td a i { + margin-top: 2px; + font-size: 18px; +} +.bootstrap-timepicker-widget table td input { + width: 25px; + margin: 0; + text-align: center; + border: 0; +} +.bootstrap-timepicker-widget .modal-content { + padding: 4px; +} +@media (min-width: 767px) { + .bootstrap-timepicker-widget.modal { + width: 200px; + margin-left: -100px; + } +} +@media (max-width: 767px) { + .bootstrap-timepicker { + width: 100%; + } + .bootstrap-timepicker .dropdown-menu { + width: 100%; + } +} \ No newline at end of file diff --git a/plugins/tiny-editable/mindmup-editabletable.js b/plugins/tiny-editable/mindmup-editabletable.js new file mode 100644 index 0000000..36be540 --- /dev/null +++ b/plugins/tiny-editable/mindmup-editabletable.js @@ -0,0 +1,131 @@ +/*global $, window*/ +$.fn.editableTableWidget = function (options) { + 'use strict'; + return $(this).each(function () { + var buildDefaultOptions = function () { + var opts = $.extend({}, $.fn.editableTableWidget.defaultOptions); + opts.editor = opts.editor.clone(); + return opts; + }, + activeOptions = $.extend(buildDefaultOptions(), options), + ARROW_LEFT = 37, ARROW_UP = 38, ARROW_RIGHT = 39, ARROW_DOWN = 40, ENTER = 13, ESC = 27, TAB = 9, + element = $(this), + editor = activeOptions.editor.css('position', 'absolute').hide().appendTo(element.parent()), + active, + showEditor = function (select) { + active = element.find('td:focus'); + if (active.length) { + editor.val(active.text()) + .removeClass('error') + .show() + .offset(active.offset()) + .css(active.css(activeOptions.cloneProperties)) + .width(active.width()) + .height(active.height()) + .focus(); + if (select) { + editor.select(); + } + } + }, + setActiveText = function () { + var text = editor.val(), + evt = $.Event('change'), + originalContent; + if (active.text() === text || editor.hasClass('error')) { + return true; + } + originalContent = active.html(); + active.text(text).trigger(evt, text); + if (evt.result === false) { + active.html(originalContent); + } + }, + movement = function (element, keycode) { + if (keycode === ARROW_RIGHT) { + return element.next('td'); + } else if (keycode === ARROW_LEFT) { + return element.prev('td'); + } else if (keycode === ARROW_UP) { + return element.parent().prev().children().eq(element.index()); + } else if (keycode === ARROW_DOWN) { + return element.parent().next().children().eq(element.index()); + } + return []; + }; + editor.blur(function () { + setActiveText(); + editor.hide(); + }).keydown(function (e) { + if (e.which === ENTER) { + setActiveText(); + editor.hide(); + active.focus(); + e.preventDefault(); + e.stopPropagation(); + } else if (e.which === ESC) { + editor.val(active.text()); + e.preventDefault(); + e.stopPropagation(); + editor.hide(); + active.focus(); + } else if (e.which === TAB) { + active.focus(); + } else if (this.selectionEnd - this.selectionStart === this.value.length) { + var possibleMove = movement(active, e.which); + if (possibleMove.length > 0) { + possibleMove.focus(); + e.preventDefault(); + e.stopPropagation(); + } + } + }) + .on('input paste', function () { + var evt = $.Event('validate'); + active.trigger(evt, editor.val()); + if (evt.result === false) { + editor.addClass('error'); + } else { + editor.removeClass('error'); + } + }); + element.on('click keypress dblclick', showEditor) + .css('cursor', 'pointer') + .keydown(function (e) { + var prevent = true, + possibleMove = movement($(e.target), e.which); + if (possibleMove.length > 0) { + possibleMove.focus(); + } else if (e.which === ENTER) { + showEditor(false); + } else if (e.which === 17 || e.which === 91 || e.which === 93) { + showEditor(true); + prevent = false; + } else { + prevent = false; + } + if (prevent) { + e.stopPropagation(); + e.preventDefault(); + } + }); + + element.find('td').prop('tabindex', 1); + + $(window).on('resize', function () { + if (editor.is(':visible')) { + editor.offset(active.offset()) + .width(active.width()) + .height(active.height()); + } + }); + }); + +}; +$.fn.editableTableWidget.defaultOptions = { + cloneProperties: ['padding', 'padding-top', 'padding-bottom', 'padding-left', 'padding-right', + 'text-align', 'font', 'font-size', 'font-family', 'font-weight', + 'border', 'border-top', 'border-bottom', 'border-left', 'border-right'], + editor: $('<input>') +}; + diff --git a/plugins/tiny-editable/numeric-input-example.js b/plugins/tiny-editable/numeric-input-example.js new file mode 100644 index 0000000..27a7c95 --- /dev/null +++ b/plugins/tiny-editable/numeric-input-example.js @@ -0,0 +1,48 @@ +/* global $ */ +/* this is an example for validation and change events */ +$.fn.numericInputExample = function () { + 'use strict'; + var element = $(this), + footer = element.find('tfoot tr'), + dataRows = element.find('tbody tr'), + initialTotal = function () { + var column, total; + for (column = 1; column < footer.children().size(); column++) { + total = 0; + dataRows.each(function () { + var row = $(this); + total += parseFloat(row.children().eq(column).text()); + }); + footer.children().eq(column).text(total); + }; + }; + element.find('td').on('change', function (evt) { + var cell = $(this), + column = cell.index(), + total = 0; + if (column === 0) { + return; + } + element.find('tbody tr').each(function () { + var row = $(this); + total += parseFloat(row.children().eq(column).text()); + }); + if (column === 1 && total > 5000) { + $('.alert').show(); + return false; // changes can be rejected + } else { + $('.alert').hide(); + footer.children().eq(column).text(total); + } + }).on('validate', function (evt, value) { + var cell = $(this), + column = cell.index(); + if (column === 0) { + return !!value && value.trim().length > 0; + } else { + return !isNaN(parseFloat(value)) && isFinite(value); + } + }); + initialTotal(); + return this; +}; diff --git a/plugins/tinymce/jquery.tinymce.min.js b/plugins/tinymce/jquery.tinymce.min.js new file mode 100644 index 0000000..7e7ba26 --- /dev/null +++ b/plugins/tinymce/jquery.tinymce.min.js @@ -0,0 +1 @@ +!function(a){function b(){function b(a){"remove"===a&&this.each(function(a,b){var c=e(b);c&&c.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(a,b){var c=tinymce.get(b.id.replace(/_parent$/,""));c&&c.remove()})}function d(a){var c,d=this;if(null!=a)b.call(d),d.each(function(b,c){var d;(d=tinymce.get(c.id))&&d.setContent(a)});else if(d.length>0&&(c=tinymce.get(d[0].id)))return c.getContent()}function e(a){var b=null;return a&&a.id&&g.tinymce&&(b=tinymce.get(a.id)),b}function f(a){return!!(a&&a.length&&g.tinymce&&a.is(":tinymce"))}var h={};a.each(["text","html","val"],function(b,g){var i=h[g]=a.fn[g],j="text"===g;a.fn[g]=function(b){var g=this;if(!f(g))return i.apply(g,arguments);if(b!==c)return d.call(g.filter(":tinymce"),b),i.apply(g.not(":tinymce"),arguments),g;var h="",k=arguments;return(j?g:g.eq(0)).each(function(b,c){var d=e(c);h+=d?j?d.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):d.getContent({save:!0}):i.apply(a(c),k)}),h}}),a.each(["append","prepend"],function(b,d){var g=h[d]=a.fn[d],i="prepend"===d;a.fn[d]=function(a){var b=this;return f(b)?a!==c?("string"==typeof a&&b.filter(":tinymce").each(function(b,c){var d=e(c);d&&d.setContent(i?a+d.getContent():d.getContent()+a)}),g.apply(b.not(":tinymce"),arguments),b):void 0:g.apply(b,arguments)}}),a.each(["remove","replaceWith","replaceAll","empty"],function(c,d){var e=h[d]=a.fn[d];a.fn[d]=function(){return b.call(this,d),e.apply(this,arguments)}}),h.attr=a.fn.attr,a.fn.attr=function(b,g){var i=this,j=arguments;if(!b||"value"!==b||!f(i))return g!==c?h.attr.apply(i,j):h.attr.apply(i,j);if(g!==c)return d.call(i.filter(":tinymce"),g),h.attr.apply(i.not(":tinymce"),j),i;var k=i[0],l=e(k);return l?l.getContent({save:!0}):h.attr.apply(a(k),j)}}var c,d,e,f=[],g=window;a.fn.tinymce=function(c){function h(){var d=[],f=0;e||(b(),e=!0),l.each(function(a,b){var e,g=b.id,h=c.oninit;g||(b.id=g=tinymce.DOM.uniqueId()),tinymce.get(g)||(e=new tinymce.Editor(g,c,tinymce.EditorManager),d.push(e),e.on("init",function(){var a,b=h;l.css("visibility",""),h&&++f==d.length&&("string"==typeof b&&(a=-1===b.indexOf(".")?null:tinymce.resolve(b.replace(/\.\w+$/,"")),b=tinymce.resolve(b)),b.apply(a||tinymce,d))}))}),a.each(d,function(a,b){b.render()})}var i,j,k,l=this,m="";if(!l.length)return l;if(!c)return window.tinymce?tinymce.get(l[0].id):null;if(l.css("visibility","hidden"),g.tinymce||d||!(i=c.script_url))1===d?f.push(h):h();else{d=1,j=i.substring(0,i.lastIndexOf("/")),-1!=i.indexOf(".min")&&(m=".min"),g.tinymce=g.tinyMCEPreInit||{base:j,suffix:m},-1!=i.indexOf("gzip")&&(k=c.language||"en",i=i+(/\?/.test(i)?"&":"?")+"js=true&core=true&suffix="+escape(m)+"&themes="+escape(c.theme||"modern")+"&plugins="+escape(c.plugins||"")+"&languages="+(k||""),g.tinyMCE_GZ||(g.tinyMCE_GZ={start:function(){function b(a){tinymce.ScriptLoader.markDone(tinymce.baseURI.toAbsolute(a))}b("langs/"+k+".js"),b("themes/"+c.theme+"/theme"+m+".js"),b("themes/"+c.theme+"/langs/"+k+".js"),a.each(c.plugins.split(","),function(a,c){c&&(b("plugins/"+c+"/plugin"+m+".js"),b("plugins/"+c+"/langs/"+k+".js"))})},end:function(){}}));var n=document.createElement("script");n.type="text/javascript",n.onload=n.onreadystatechange=function(b){b=b||window.event,2===d||"load"!=b.type&&!/complete|loaded/.test(n.readyState)||(tinymce.dom.Event.domLoaded=1,d=2,c.script_loaded&&c.script_loaded(),h(),a.each(f,function(a,b){b()}))},n.src=i,document.body.appendChild(n)}return l},a.extend(a.expr[":"],{tinymce:function(a){var b;return!!(a.id&&"tinymce"in window&&(b=tinymce.get(a.id),b&&b.editorManager===tinymce))}})}(jQuery); \ No newline at end of file diff --git a/plugins/tinymce/langs/readme.md b/plugins/tinymce/langs/readme.md new file mode 100644 index 0000000..a52bf03 --- /dev/null +++ b/plugins/tinymce/langs/readme.md @@ -0,0 +1,3 @@ +This is where language files should be placed. + +Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ diff --git a/plugins/tinymce/license.txt b/plugins/tinymce/license.txt new file mode 100644 index 0000000..1837b0a --- /dev/null +++ b/plugins/tinymce/license.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/plugins/tinymce/plugins/advlist/plugin.min.js b/plugins/tinymce/plugins/advlist/plugin.min.js new file mode 100644 index 0000000..ee90c67 --- /dev/null +++ b/plugins/tinymce/plugins/advlist/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("advlist",function(a){function b(a,b){var c=[];return tinymce.each(b.split(/[ ,]/),function(a){c.push({text:a.replace(/\-/g," ").replace(/\b\w/g,function(a){return a.toUpperCase()}),data:"default"==a?"":a})}),c}function c(b,c){a.undoManager.transact(function(){var d,e=a.dom,f=a.selection;if(d=e.getParent(f.getNode(),"ol,ul"),!d||d.nodeName!=b||c===!1){var h={"list-style-type":c?c:""};a.execCommand("UL"==b?"InsertUnorderedList":"InsertOrderedList",!1,h)}c=c===!1?g[b]:c,g[b]=c,d=e.getParent(f.getNode(),"ol,ul"),d&&(e.setStyle(d,"listStyleType",c?c:null),d.removeAttribute("data-mce-style")),a.focus()})}function d(b){var c=a.dom.getStyle(a.dom.getParent(a.selection.getNode(),"ol,ul"),"listStyleType")||"";b.control.items().each(function(a){a.active(a.settings.data===c)})}var e,f,g={};e=b("OL",a.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),f=b("UL",a.getParam("advlist_bullet_styles","default,circle,disc,square")),a.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:e,onshow:d,onselect:function(a){c("OL",a.control.settings.data)},onclick:function(){c("OL",!1)}}),a.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:f,onshow:d,onselect:function(a){c("UL",a.control.settings.data)},onclick:function(){c("UL",!1)}})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/anchor/plugin.min.js b/plugins/tinymce/plugins/anchor/plugin.min.js new file mode 100644 index 0000000..0dd4774 --- /dev/null +++ b/plugins/tinymce/plugins/anchor/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("anchor",function(a){function b(){var b=a.selection.getNode(),c="",d="A"==b.tagName&&""===a.dom.getAttrib(b,"href");d&&(c=b.name||b.id||""),a.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(c){var e=c.data.name;d?b.id=e:(a.selection.collapse(!0),a.execCommand("mceInsertContent",!1,a.dom.createHTML("a",{id:e})))}})}a.addCommand("mceAnchor",b),a.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:b,stateSelector:"a:not([href])"}),a.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:b})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/autolink/plugin.min.js b/plugins/tinymce/plugins/autolink/plugin.min.js new file mode 100644 index 0000000..4972b93 --- /dev/null +++ b/plugins/tinymce/plugins/autolink/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("autolink",function(a){function b(a){e(a,-1,"(",!0)}function c(a){e(a,0,"",!0)}function d(a){e(a,-1,"",!1)}function e(a,b,c){function d(a,b){if(0>b&&(b=0),3==a.nodeType){var c=a.data.length;b>c&&(b=c)}return b}function e(a,b){1!=a.nodeType||a.hasChildNodes()?h.setStart(a,d(a,b)):h.setStartBefore(a)}function f(a,b){1!=a.nodeType||a.hasChildNodes()?h.setEnd(a,d(a,b)):h.setEndAfter(a)}var h,i,j,k,l,m,n,o,p,q;if("A"!=a.selection.getNode().tagName){if(h=a.selection.getRng(!0).cloneRange(),h.startOffset<5){if(o=h.endContainer.previousSibling,!o){if(!h.endContainer.firstChild||!h.endContainer.firstChild.nextSibling)return;o=h.endContainer.firstChild.nextSibling}if(p=o.length,e(o,p),f(o,p),h.endOffset<5)return;i=h.endOffset,k=o}else{if(k=h.endContainer,3!=k.nodeType&&k.firstChild){for(;3!=k.nodeType&&k.firstChild;)k=k.firstChild;3==k.nodeType&&(e(k,0),f(k,k.nodeValue.length))}i=1==h.endOffset?2:h.endOffset-1-b}j=i;do e(k,i>=2?i-2:0),f(k,i>=1?i-1:0),i-=1,q=h.toString();while(" "!=q&&""!==q&&160!=q.charCodeAt(0)&&i-2>=0&&q!=c);h.toString()==c||160==h.toString().charCodeAt(0)?(e(k,i),f(k,j),i+=1):0===h.startOffset?(e(k,0),f(k,j)):(e(k,i),f(k,j)),m=h.toString(),"."==m.charAt(m.length-1)&&f(k,j-1),m=h.toString(),n=m.match(g),n&&("www."==n[1]?n[1]="http://www.":/@$/.test(n[1])&&!/^mailto:/.test(n[1])&&(n[1]="mailto:"+n[1]),l=a.selection.getBookmark(),a.selection.setRng(h),a.execCommand("createlink",!1,n[1]+n[2]),a.selection.moveToBookmark(l),a.nodeChanged())}}var f,g=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return a.settings.autolink_pattern&&(g=a.settings.autolink_pattern),a.on("keydown",function(b){return 13==b.keyCode?d(a):void 0}),tinymce.Env.ie?void a.on("focus",function(){if(!f){f=!0;try{a.execCommand("AutoUrlDetect",!1,!0)}catch(b){}}}):(a.on("keypress",function(c){return 41==c.keyCode?b(a):void 0}),void a.on("keyup",function(b){return 32==b.keyCode?c(a):void 0}))}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/autoresize/plugin.min.js b/plugins/tinymce/plugins/autoresize/plugin.min.js new file mode 100644 index 0000000..a56d0d5 --- /dev/null +++ b/plugins/tinymce/plugins/autoresize/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("autoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var g,h,i,j,k,l,m,n,o,p,q,r,s=tinymce.DOM;if(h=a.getDoc()){if(i=h.body,j=h.documentElement,k=e.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),o=a.dom.getStyle(i,"padding-top",!0),p=a.dom.getStyle(i,"padding-bottom",!0),q=a.dom.getStyle(i,"border-top-width",!0),r=a.dom.getStyle(i,"border-bottom-width",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10)+parseInt(o,10)+parseInt(p,10)+parseInt(q,10)+parseInt(r,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>e.autoresize_min_height&&(k=l),e.autoresize_max_height&&l>e.autoresize_max_height?(k=e.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==f&&(g=k-f,s.setStyle(a.iframeElement,"height",k+"px"),f=k,tinymce.isWebKit&&0>g&&c(d))}}function d(b,e,f){tinymce.util.Delay.setEditorTimeout(a,function(){c({}),b--?d(b,e,f):f&&f()},e)}var e=a.settings,f=0;a.settings.inline||(e.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),e.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),a.on("init",function(){var b,c;b=a.getParam("autoresize_overflow_padding",1),c=a.getParam("autoresize_bottom_margin",50),b!==!1&&a.dom.setStyles(a.getBody(),{paddingLeft:b,paddingRight:b}),c!==!1&&a.dom.setStyles(a.getBody(),{paddingBottom:c})}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(20,100,function(){d(5,1e3)})}),a.addCommand("mceAutoResize",c))}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/autosave/plugin.min.js b/plugins/tinymce/plugins/autosave/plugin.min.js new file mode 100644 index 0000000..11de44d --- /dev/null +++ b/plugins/tinymce/plugins/autosave/plugin.min.js @@ -0,0 +1 @@ +tinymce._beforeUnloadHandler=function(){var a;return tinymce.each(tinymce.editors,function(b){b.plugins.autosave&&b.plugins.autosave.storeDraft(),!a&&b.isDirty()&&b.getParam("autosave_ask_before_unload",!0)&&(a=b.translate("You have unsaved changes are you sure you want to navigate away?"))}),a},tinymce.PluginManager.add("autosave",function(a){function b(a,b){var c={s:1e3,m:6e4};return a=/^(\d+)([ms]?)$/.exec(""+(a||b)),(a[2]?c[a[2]]:1)*parseInt(a,10)}function c(){var a=parseInt(n.getItem(k+"time"),10)||0;return(new Date).getTime()-a>m.autosave_retention?(d(!1),!1):!0}function d(b){n.removeItem(k+"draft"),n.removeItem(k+"time"),b!==!1&&a.fire("RemoveDraft")}function e(){!j()&&a.isDirty()&&(n.setItem(k+"draft",a.getContent({format:"raw",no_events:!0})),n.setItem(k+"time",(new Date).getTime()),a.fire("StoreDraft"))}function f(){c()&&(a.setContent(n.getItem(k+"draft"),{format:"raw"}),a.fire("RestoreDraft"))}function g(){l||(setInterval(function(){a.removed||e()},m.autosave_interval),l=!0)}function h(){var b=this;b.disabled(!c()),a.on("StoreDraft RestoreDraft RemoveDraft",function(){b.disabled(!c())}),g()}function i(){a.undoManager.beforeChange(),f(),d(),a.undoManager.add()}function j(b){var c=a.settings.forced_root_block;return b=tinymce.trim("undefined"==typeof b?a.getBody().innerHTML:b),""===b||new RegExp("^<"+c+"[^>]*>((\xa0|&nbsp;|[ ]|<br[^>]*>)+?|)</"+c+">|<br>$","i").test(b)}var k,l,m=a.settings,n=tinymce.util.LocalStorage;k=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",k=k.replace(/\{path\}/g,document.location.pathname),k=k.replace(/\{query\}/g,document.location.search),k=k.replace(/\{id\}/g,a.id),m.autosave_interval=b(m.autosave_interval,"30s"),m.autosave_retention=b(m.autosave_retention,"20m"),a.addButton("restoredraft",{title:"Restore last draft",onclick:i,onPostRender:h}),a.addMenuItem("restoredraft",{text:"Restore last draft",onclick:i,onPostRender:h,context:"file"}),a.settings.autosave_restore_when_empty!==!1&&(a.on("init",function(){c()&&j()&&f()}),a.on("saveContent",function(){d()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=c,this.storeDraft=e,this.restoreDraft=f,this.removeDraft=d,this.isEmpty=j}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/bbcode/plugin.min.js b/plugins/tinymce/plugins/bbcode/plugin.min.js new file mode 100644 index 0000000..4548e5e --- /dev/null +++ b/plugins/tinymce/plugins/bbcode/plugin.min.js @@ -0,0 +1 @@ +!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a){var b=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.on("beforeSetContent",function(a){a.content=b["_"+c+"_bbcode2html"](a.content)}),a.on("postProcess",function(a){a.set&&(a.content=b["_"+c+"_bbcode2html"](a.content)),a.get&&(a.content=b["_"+c+"_html2bbcode"](a.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Ephox Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),b(/<font>(.*?)<\/font>/gi,"$1"),b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),b(/<\/(strong|b)>/gi,"[/b]"),b(/<(strong|b)>/gi,"[b]"),b(/<\/(em|i)>/gi,"[/i]"),b(/<(em|i)>/gi,"[i]"),b(/<\/u>/gi,"[/u]"),b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),b(/<u>/gi,"[u]"),b(/<blockquote[^>]*>/gi,"[quote]"),b(/<\/blockquote>/gi,"[/quote]"),b(/<br \/>/gi,"\n"),b(/<br\/>/gi,"\n"),b(/<br>/gi,"\n"),b(/<p>/gi,""),b(/<\/p>/gi,"\n"),b(/&nbsp;|\u00a0/gi," "),b(/&quot;/gi,'"'),b(/&lt;/gi,"<"),b(/&gt;/gi,">"),b(/&amp;/gi,"&"),a},_punbb_bbcode2html:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/\n/gi,"<br />"),b(/\[b\]/gi,"<strong>"),b(/\[\/b\]/gi,"</strong>"),b(/\[i\]/gi,"<em>"),b(/\[\/i\]/gi,"</em>"),b(/\[u\]/gi,"<u>"),b(/\[\/u\]/gi,"</u>"),b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),a}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); \ No newline at end of file diff --git a/plugins/tinymce/plugins/charmap/plugin.min.js b/plugins/tinymce/plugins/charmap/plugin.min.js new file mode 100644 index 0000000..9bf1e9f --- /dev/null +++ b/plugins/tinymce/plugins/charmap/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("charmap",function(a){function b(){return[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]]}function c(a){return tinymce.util.Tools.grep(a,function(a){return i(a)&&2==a.length})}function d(a){return i(a)?[].concat(c(a)):"function"==typeof a?a():[]}function e(b){var c=a.settings;return c.charmap&&(b=d(c.charmap)),c.charmap_append?[].concat(b).concat(d(c.charmap_append)):b}function f(){return e(b())}function g(b){a.fire("insertCustomChar",{chr:b}).chr,a.execCommand("mceInsertContent",!1,b)}function h(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var c,d,e,h;c='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var i=f(),j=Math.min(i.length,25),k=Math.ceil(i.length/j);for(e=0;k>e;e++){for(c+="<tr>",d=0;j>d;d++){var l=e*j+d;if(l<i.length){var m=i[l];c+='<td title="'+m[1]+'"><div tabindex="-1" title="'+m[1]+'" role="button">'+(m?String.fromCharCode(parseInt(m[0],10)):"&nbsp;")+"</div></td>"}else c+="<td />"}c+="</tr>"}c+="</tbody></table>";var n={type:"container",html:c,onclick:function(a){var c=a.target;/^(TD|DIV)$/.test(c.nodeName)&&b(c).firstChild&&(g(tinymce.trim(c.innerText||c.textContent)),a.ctrlKey||h.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(h.find("#preview").text(c.firstChild.firstChild.data),h.find("#previewTitle").text(c.title)):(h.find("#preview").text(" "),h.find("#previewTitle").text(" "))}};h=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[n,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){h.close()}}]})}var i=tinymce.util.Tools.isArray;return a.addCommand("mceShowCharmap",h),a.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"}),{getCharMap:f,insertChar:g}}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/code/plugin.min.js b/plugins/tinymce/plugins/code/plugin.min.js new file mode 100644 index 0000000..d6331f8 --- /dev/null +++ b/plugins/tinymce/plugins/code/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/codesample/css/prism.css b/plugins/tinymce/plugins/codesample/css/prism.css new file mode 100644 index 0000000..28622b5 --- /dev/null +++ b/plugins/tinymce/plugins/codesample/css/prism.css @@ -0,0 +1,138 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/plugins/tinymce/plugins/codesample/plugin.min.js b/plugins/tinymce/plugins/codesample/plugin.min.js new file mode 100644 index 0000000..fc2fa2a --- /dev/null +++ b/plugins/tinymce/plugins/codesample/plugin.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){var d,e,f,h,i;for(d=0;d<c.length;d++){e=a,f=c[d],h=f.split(/[.\/]/);for(var j=0;j<h.length-1;++j)e[h[j]]===b&&(e[h[j]]={}),e=e[h[j]];e[h[h.length-1]]=g[f]}if(a.AMDLC_TESTS){i=a.privateModules||{};for(f in g)i[f]=g[f];for(d=0;d<c.length;d++)delete i[c[d]];a.privateModules=i}}var g={};d("tinymce/codesampleplugin/Prism",[],function(){var a={},b="undefined"!=typeof a?a:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},c=function(){var a=/\blang(?:uage)?-(?!\*)(\w+)\b/i,c=b.Prism={util:{encode:function(a){return a instanceof d?new d(a.type,c.util.encode(a.content),a.alias):"Array"===c.util.type(a)?a.map(c.util.encode):a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(a){return Object.prototype.toString.call(a).match(/\[object (\w+)\]/)[1]},clone:function(a){var b=c.util.type(a);switch(b){case"Object":var d={};for(var e in a)a.hasOwnProperty(e)&&(d[e]=c.util.clone(a[e]));return d;case"Array":return a.map&&a.map(function(a){return c.util.clone(a)})}return a}},languages:{extend:function(a,b){var d=c.util.clone(c.languages[a]);for(var e in b)d[e]=b[e];return d},insertBefore:function(a,b,d,e){e=e||c.languages;var f=e[a];if(2==arguments.length){d=arguments[1];for(var g in d)d.hasOwnProperty(g)&&(f[g]=d[g]);return f}var h={};for(var i in f)if(f.hasOwnProperty(i)){if(i==b)for(var g in d)d.hasOwnProperty(g)&&(h[g]=d[g]);h[i]=f[i]}return c.languages.DFS(c.languages,function(b,c){c===e[a]&&b!=a&&(this[b]=h)}),e[a]=h},DFS:function(a,b,d){for(var e in a)a.hasOwnProperty(e)&&(b.call(a,e,a[e],d||e),"Object"===c.util.type(a[e])?c.languages.DFS(a[e],b):"Array"===c.util.type(a[e])&&c.languages.DFS(a[e],b,e))}},plugins:{},highlightAll:function(a,b){for(var d,e=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),f=0;d=e[f++];)c.highlightElement(d,a===!0,b)},highlightElement:function(d,e,f){for(var g,h,i=d;i&&!a.test(i.className);)i=i.parentNode;i&&(g=(i.className.match(a)||[,""])[1],h=c.languages[g]),d.className=d.className.replace(a,"").replace(/\s+/g," ")+" language-"+g,i=d.parentNode,/pre/i.test(i.nodeName)&&(i.className=i.className.replace(a,"").replace(/\s+/g," ")+" language-"+g);var j=d.textContent,k={element:d,language:g,grammar:h,code:j};if(!j||!h)return void c.hooks.run("complete",k);if(c.hooks.run("before-highlight",k),e&&b.Worker){var l=new Worker(c.filename);l.onmessage=function(a){k.highlightedCode=a.data,c.hooks.run("before-insert",k),k.element.innerHTML=k.highlightedCode,f&&f.call(k.element),c.hooks.run("after-highlight",k),c.hooks.run("complete",k)},l.postMessage(JSON.stringify({language:k.language,code:k.code,immediateClose:!0}))}else k.highlightedCode=c.highlight(k.code,k.grammar,k.language),c.hooks.run("before-insert",k),k.element.innerHTML=k.highlightedCode,f&&f.call(d),c.hooks.run("after-highlight",k),c.hooks.run("complete",k)},highlight:function(a,b,e){var f=c.tokenize(a,b);return d.stringify(c.util.encode(f),e)},tokenize:function(a,b,d){var e=c.Token,f=[a],g=b.rest;if(g){for(var h in g)b[h]=g[h];delete b.rest}a:for(var h in b)if(b.hasOwnProperty(h)&&b[h]){var i=b[h];i="Array"===c.util.type(i)?i:[i];for(var j=0;j<i.length;++j){var k=i[j],l=k.inside,m=!!k.lookbehind,n=0,o=k.alias;k=k.pattern||k;for(var p=0;p<f.length;p++){var q=f[p];if(f.length>a.length)break a;if(!(q instanceof e)){k.lastIndex=0;var r=k.exec(q);if(r){m&&(n=r[1].length);var s=r.index-1+n,r=r[0].slice(n),t=r.length,u=s+t,v=q.slice(0,s+1),w=q.slice(u+1),x=[p,1];v&&x.push(v);var y=new e(h,l?c.tokenize(r,l):r,o);x.push(y),w&&x.push(w),Array.prototype.splice.apply(f,x)}}}}}return f},hooks:{all:{},add:function(a,b){var d=c.hooks.all;d[a]=d[a]||[],d[a].push(b)},run:function(a,b){var d=c.hooks.all[a];if(d&&d.length)for(var e,f=0;e=d[f++];)e(b)}}},d=c.Token=function(a,b,c){this.type=a,this.content=b,this.alias=c};return d.stringify=function(a,b,e){if("string"==typeof a)return a;if("Array"===c.util.type(a))return a.map(function(c){return d.stringify(c,b,a)}).join("");var f={type:a.type,content:d.stringify(a.content,b,e),tag:"span",classes:["token",a.type],attributes:{},language:b,parent:e};if("comment"==f.type&&(f.attributes.spellcheck="true"),a.alias){var g="Array"===c.util.type(a.alias)?a.alias:[a.alias];Array.prototype.push.apply(f.classes,g)}c.hooks.run("wrap",f);var h="";for(var i in f.attributes)h+=(h?" ":"")+i+'="'+(f.attributes[i]||"")+'"';return"<"+f.tag+' class="'+f.classes.join(" ")+'" '+h+">"+f.content+"</"+f.tag+">"},b.document?void 0:b.addEventListener?(b.addEventListener("message",function(a){var d=JSON.parse(a.data),e=d.language,f=d.code,g=d.immediateClose;b.postMessage(c.highlight(f,c.languages[e],e)),g&&b.close()},!1),b.Prism):b.Prism}();return"undefined"!=typeof module&&module.exports&&(module.exports=c),"undefined"!=typeof global&&(global.Prism=c),c.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:c.languages.markup.tag.inside},rest:c.languages.css},alias:"language-css"}}),c.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:c.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:c.languages.css}},alias:"language-css"}},c.languages.markup.tag)),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),c.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),c.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:c.languages.markup.tag.inside},rest:c.languages.javascript},alias:"language-javascript"}}),c.languages.js=c.languages.javascript,c.languages.c=c.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),c.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete c.languages.c["class-name"],delete c.languages.c["boolean"],c.languages.csharp=c.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),c.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),c.languages.cpp=c.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),c.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),c.languages.java=c.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),c.languages.php=c.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),c.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),c.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),c.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),c.languages.markup&&(c.hooks.add("before-highlight",function(a){"php"===a.language&&(a.tokenStack=[],a.backupCode=a.code,a.code=a.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(b){return a.tokenStack.push(b),"{{{PHP"+a.tokenStack.length+"}}}"}))}),c.hooks.add("before-insert",function(a){"php"===a.language&&(a.code=a.backupCode,delete a.backupCode)}),c.hooks.add("after-highlight",function(a){if("php"===a.language){for(var b,d=0;b=a.tokenStack[d];d++)a.highlightedCode=a.highlightedCode.replace("{{{PHP"+(d+1)+"}}}",c.highlight(b,a.grammar,"php").replace(/\$/g,"$$$$"));a.element.innerHTML=a.highlightedCode}}),c.hooks.add("wrap",function(a){"php"===a.language&&"markup"===a.type&&(a.content=a.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span class="token php">$1</span>'))}),c.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:c.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),c.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(a){a.languages.ruby=a.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var b={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:a.util.clone(a.languages.ruby)}};a.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:b}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:b}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:b}}]}(c),c}),d("tinymce/codesampleplugin/Utils",[],function(){function a(a){return a&&"PRE"==a.nodeName&&-1!==a.className.indexOf("language-")}function b(a){return function(b,c){return a(c)}}return{isCodeSample:a,trimArg:b}}),d("tinymce/codesampleplugin/Dialog",["tinymce/dom/DOMUtils","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Prism"],function(a,b,c){function d(a,b,d){a.undoManager.transact(function(){var f=e(a);d=h.encode(d),f?(a.dom.setAttrib(f,"class","language-"+b),f.innerHTML=d,c.highlightElement(f),a.selection.select(f)):(a.insertContent('<pre id="__new" class="language-'+b+'">'+d+"</pre>"),a.selection.select(a.$("#__new").removeAttr("id")[0]))})}function e(a){var c=a.selection.getNode();return b.isCodeSample(c)?c:null}function f(a){var b=e(a);return b?b.textContent:""}function g(a){var b,c=e(a);return c?(b=c.className.match(/language-(\w+)/),b?b[1]:""):""}var h=a.DOM,i=[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}];return{open:function(a){a.windowManager.open({title:"Insert/Edit code sample",minWidth:Math.min(h.getViewPort().w,800),minHeight:Math.min(h.getViewPort().h,650),layout:"fit",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:g(a),values:i},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code view",flex:1,style:"direction: ltr; text-align: left",classes:"monospace",value:f(a),autofocus:!0}],onSubmit:function(b){d(a,b.data.language,b.data.code)}})}}}),d("tinymce/codesampleplugin/Plugin",["tinymce/Env","tinymce/PluginManager","tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Utils"],function(a,b,c,d,e){var f,g=e.trimArg;b.add("codesample",function(b,h){function i(){var a;b.inline&&f||!b.inline&&j||(b.inline?f=!0:j=!0,a=b.dom.create("link",{rel:"stylesheet",href:h+"/css/prism.css"}),b.getDoc().getElementsByTagName("head")[0].appendChild(a))}var j,k=b.$;a.ceFalse&&(b.on("PreProcess",function(a){k("pre[contenteditable=false]",a.node).filter(g(e.isCodeSample)).each(function(a,b){var c=k(b),d=b.textContent;c.attr("class",k.trim(c.attr("class"))),c.removeAttr("contentEditable"),c.empty().append(k("<code></code>").each(function(){this.textContent=d}))})}),b.on("SetContent",function(){var a=k("pre").filter(g(e.isCodeSample)).filter(function(a,b){return"false"!==b.contentEditable});a.length&&b.undoManager.transact(function(){a.each(function(a,d){k(d).find("br").each(function(a,c){c.parentNode.replaceChild(b.getDoc().createTextNode("\n"),c)}),d.contentEditable=!1,d.innerHTML=b.dom.encode(d.textContent),c.highlightElement(d),d.className=k.trim(d.className)})})}),b.addCommand("codesample",function(){d.open(b)}),b.addButton("codesample",{cmd:"codesample",title:"Insert/Edit code sample"}),b.on("init",i))})}),f(["tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Plugin"])}(this); \ No newline at end of file diff --git a/plugins/tinymce/plugins/colorpicker/plugin.min.js b/plugins/tinymce/plugins/colorpicker/plugin.min.js new file mode 100644 index 0000000..66ea69c --- /dev/null +++ b/plugins/tinymce/plugins/colorpicker/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("colorpicker",function(a){function b(b,c){function d(a){var b=new tinymce.util.Color(a),c=b.toRgb();f.fromJSON({r:c.r,g:c.g,b:c.b,hex:b.toHex().substr(1)}),e(b.toHex())}function e(a){f.find("#preview")[0].getEl().style.background=a}var f=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:c,onchange:function(){var a=this.rgb();f&&(f.find("#r").value(a.r),f.find("#g").value(a.g),f.find("#b").value(a.b),f.find("#hex").value(this.value().substr(1)),e(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=f.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,d(b),void c.value(b)):(b={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()},c.value(b),void d(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){b("#"+this.toJSON().hex)}});d(c)}a.settings.color_picker_callback||(a.settings.color_picker_callback=b)}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/contextmenu/plugin.min.js b/plugins/tinymce/plugins/contextmenu/plugin.min.js new file mode 100644 index 0000000..c25e98b --- /dev/null +++ b/plugins/tinymce/plugins/contextmenu/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native;a.on("contextmenu",function(d){var e,f=a.getDoc();if(!d.ctrlKey||c){if(d.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==d.button&&f.caretRangeFromPoint&&a.selection.setRng(f.caretRangeFromPoint(d.x,d.y)),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var g=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",g.push(c))});for(var h=0;h<g.length;h++)"|"==g[h].text&&(0!==h&&h!=g.length-1||g.splice(h,1));b=new tinymce.ui.Menu({items:g,context:"contextmenu",classes:"contextmenu"}).renderTo(),a.on("remove",function(){b.remove(),b=null})}var i={x:d.pageX,y:d.pageY};a.inline||(i=tinymce.DOM.getPos(a.getContentAreaContainer()),i.x+=d.clientX,i.y+=d.clientY),b.moveTo(i.x,i.y)}})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/directionality/plugin.min.js b/plugins/tinymce/plugins/directionality/plugin.min.js new file mode 100644 index 0000000..43caba6 --- /dev/null +++ b/plugins/tinymce/plugins/directionality/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("directionality",function(a){function b(b){var c,d=a.dom,e=a.selection.getSelectedBlocks();e.length&&(c=d.getAttrib(e[0],"dir"),tinymce.each(e,function(a){d.getParent(a.parentNode,"*[dir='"+b+"']",d.getRoot())||(c!=b?d.setAttrib(a,"dir",b):d.setAttrib(a,"dir",null))}),a.nodeChanged())}function c(a){var b=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(c){b.push(c+"[dir="+a+"]")}),b.join(",")}a.addCommand("mceDirectionLTR",function(){b("ltr")}),a.addCommand("mceDirectionRTL",function(){b("rtl")}),a.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:c("ltr")}),a.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:c("rtl")})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-cool.gif b/plugins/tinymce/plugins/emoticons/img/smiley-cool.gif new file mode 100644 index 0000000..ba90cc3 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-cool.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-cry.gif b/plugins/tinymce/plugins/emoticons/img/smiley-cry.gif new file mode 100644 index 0000000..74d897a Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-cry.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-embarassed.gif b/plugins/tinymce/plugins/emoticons/img/smiley-embarassed.gif new file mode 100644 index 0000000..963a96b Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-embarassed.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif b/plugins/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif new file mode 100644 index 0000000..c7cf101 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-frown.gif b/plugins/tinymce/plugins/emoticons/img/smiley-frown.gif new file mode 100644 index 0000000..716f55e Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-frown.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-innocent.gif b/plugins/tinymce/plugins/emoticons/img/smiley-innocent.gif new file mode 100644 index 0000000..334d49e Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-innocent.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-kiss.gif b/plugins/tinymce/plugins/emoticons/img/smiley-kiss.gif new file mode 100644 index 0000000..4efd549 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-kiss.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-laughing.gif b/plugins/tinymce/plugins/emoticons/img/smiley-laughing.gif new file mode 100644 index 0000000..82c5b18 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-laughing.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-money-mouth.gif b/plugins/tinymce/plugins/emoticons/img/smiley-money-mouth.gif new file mode 100644 index 0000000..ca2451e Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-money-mouth.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-sealed.gif b/plugins/tinymce/plugins/emoticons/img/smiley-sealed.gif new file mode 100644 index 0000000..fe66220 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-sealed.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-smile.gif b/plugins/tinymce/plugins/emoticons/img/smiley-smile.gif new file mode 100644 index 0000000..fd27edf Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-smile.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-surprised.gif b/plugins/tinymce/plugins/emoticons/img/smiley-surprised.gif new file mode 100644 index 0000000..0cc9bb7 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-surprised.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-tongue-out.gif b/plugins/tinymce/plugins/emoticons/img/smiley-tongue-out.gif new file mode 100644 index 0000000..2075dc1 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-tongue-out.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-undecided.gif b/plugins/tinymce/plugins/emoticons/img/smiley-undecided.gif new file mode 100644 index 0000000..bef7e25 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-undecided.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-wink.gif b/plugins/tinymce/plugins/emoticons/img/smiley-wink.gif new file mode 100644 index 0000000..0631c76 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-wink.gif differ diff --git a/plugins/tinymce/plugins/emoticons/img/smiley-yell.gif b/plugins/tinymce/plugins/emoticons/img/smiley-yell.gif new file mode 100644 index 0000000..648e6e8 Binary files /dev/null and b/plugins/tinymce/plugins/emoticons/img/smiley-yell.gif differ diff --git a/plugins/tinymce/plugins/emoticons/plugin.min.js b/plugins/tinymce/plugins/emoticons/plugin.min.js new file mode 100644 index 0000000..b28e172 --- /dev/null +++ b/plugins/tinymce/plugins/emoticons/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("emoticons",function(a,b){function c(){var a;return a='<table role="list" class="mce-grid">',tinymce.each(d,function(c){a+="<tr>",tinymce.each(c,function(c){var d=b+"/img/smiley-"+c+".gif";a+='<td><a href="#" data-mce-url="'+d+'" data-mce-alt="'+c+'" tabindex="-1" role="option" aria-label="'+c+'"><img src="'+d+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),a+="</tr>"}),a+="</table>"}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent('<img src="'+c.getAttribute("data-mce-url")+'" alt="'+c.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/example/dialog.html b/plugins/tinymce/plugins/example/dialog.html new file mode 100644 index 0000000..565f06f --- /dev/null +++ b/plugins/tinymce/plugins/example/dialog.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<html> +<body> + <h3>Custom dialog</h3> + Input some text: <input id="content"> + <button onclick="top.tinymce.activeEditor.windowManager.getWindows()[0].close();">Close window</button> +</body> +</html> \ No newline at end of file diff --git a/plugins/tinymce/plugins/example/plugin.min.js b/plugins/tinymce/plugins/example/plugin.min.js new file mode 100644 index 0000000..88687c7 --- /dev/null +++ b/plugins/tinymce/plugins/example/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example",function(a,b){a.addButton("example",{text:"My button",icon:!1,onclick:function(){a.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(b){a.insertContent("Title: "+b.data.title)}})}}),a.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){a.windowManager.open({title:"TinyMCE site",url:b+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var b=a.windowManager.getWindows()[0];a.insertContent(b.getContentWindow().document.getElementById("content").value),b.close()}},{text:"Close",onclick:"close"}]})}})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/example_dependency/plugin.min.js b/plugins/tinymce/plugins/example_dependency/plugin.min.js new file mode 100644 index 0000000..e61bf47 --- /dev/null +++ b/plugins/tinymce/plugins/example_dependency/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example_dependency",function(){},["example"]); \ No newline at end of file diff --git a/plugins/tinymce/plugins/fullpage/plugin.min.js b/plugins/tinymce/plugins/fullpage/plugin.min.js new file mode 100644 index 0000000..1ea5c36 --- /dev/null +++ b/plugins/tinymce/plugins/fullpage/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullpage",function(a){function b(){var b=c();a.windowManager.open({title:"Document properties",data:b,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(a){d(tinymce.extend(b,a.data))}})}function c(){function b(a,b){var c=a.attr(b);return c||""}var c,d,f=e(),g={};return g.fontface=a.getParam("fullpage_default_fontface",""),g.fontsize=a.getParam("fullpage_default_fontsize",""),c=f.firstChild,7==c.type&&(g.xml_pi=!0,d=/encoding="([^"]+)"/.exec(c.value),d&&(g.docencoding=d[1])),c=f.getAll("#doctype")[0],c&&(g.doctype="<!DOCTYPE"+c.value+">"),c=f.getAll("title")[0],c&&c.firstChild&&(g.title=c.firstChild.value),k(f.getAll("meta"),function(a){var b,c=a.attr("name"),d=a.attr("http-equiv");c?g[c.toLowerCase()]=a.attr("content"):"Content-Type"==d&&(b=/charset\s*=\s*(.*)\s*/gi.exec(a.attr("content")),b&&(g.docencoding=b[1]))}),c=f.getAll("html")[0],c&&(g.langcode=b(c,"lang")||b(c,"xml:lang")),g.stylesheets=[],tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&g.stylesheets.push(a.attr("href"))}),c=f.getAll("body")[0],c&&(g.langdir=b(c,"dir"),g.style=b(c,"style"),g.visited_color=b(c,"vlink"),g.link_color=b(c,"link"),g.active_color=b(c,"alink")),g}function d(b){function c(a,b,c){a.attr(b,c?c:void 0)}function d(a){g.firstChild?g.insert(a,g.firstChild):g.append(a)}var f,g,h,j,m,n=a.dom;f=e(),g=f.getAll("head")[0],g||(j=f.getAll("html")[0],g=new l("head",1),j.firstChild?j.insert(g,j.firstChild,!0):j.append(g)),j=f.firstChild,b.xml_pi?(m='version="1.0"',b.docencoding&&(m+=' encoding="'+b.docencoding+'"'),7!=j.type&&(j=new l("xml",7),f.insert(j,f.firstChild,!0)),j.value=m):j&&7==j.type&&j.remove(),j=f.getAll("#doctype")[0],b.doctype?(j||(j=new l("#doctype",10),b.xml_pi?f.insert(j,f.firstChild):d(j)),j.value=b.doctype.substring(9,b.doctype.length-1)):j&&j.remove(),j=null,k(f.getAll("meta"),function(a){"Content-Type"==a.attr("http-equiv")&&(j=a)}),b.docencoding?(j||(j=new l("meta",1),j.attr("http-equiv","Content-Type"),j.shortEnded=!0,d(j)),j.attr("content","text/html; charset="+b.docencoding)):j&&j.remove(),j=f.getAll("title")[0],b.title?(j?j.empty():(j=new l("title",1),d(j)),j.append(new l("#text",3)).value=b.title):j&&j.remove(),k("keywords,description,author,copyright,robots".split(","),function(a){var c,e,g=f.getAll("meta"),h=b[a];for(c=0;c<g.length;c++)if(e=g[c],e.attr("name")==a)return void(h?e.attr("content",h):e.remove());h&&(j=new l("meta",1),j.attr("name",a),j.attr("content",h),j.shortEnded=!0,d(j))});var o={};tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&(o[a.attr("href")]=a)}),tinymce.each(b.stylesheets,function(a){o[a]||(j=new l("link",1),j.attr({rel:"stylesheet",text:"text/css",href:a}),j.shortEnded=!0,d(j)),delete o[a]}),tinymce.each(o,function(a){a.remove()}),j=f.getAll("body")[0],j&&(c(j,"dir",b.langdir),c(j,"style",b.style),c(j,"vlink",b.visited_color),c(j,"link",b.link_color),c(j,"alink",b.active_color),n.setAttribs(a.getBody(),{style:b.style,dir:b.dir,vLink:b.visited_color,link:b.link_color,aLink:b.active_color})),j=f.getAll("html")[0],j&&(c(j,"lang",b.langcode),c(j,"xml:lang",b.langcode)),g.firstChild||g.remove(),h=new tinymce.html.Serializer({validate:!1,indent:!0,apply_source_formatting:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(f),i=h.substring(0,h.indexOf("</body>"))}function e(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(i)}function f(b){function c(a){return a.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase()})}var d,f,h,l,m=b.content,n="",o=a.dom;if(!b.selection&&!("raw"==b.format&&i||b.source_view&&a.getParam("fullpage_hide_in_source_view"))){0!==m.length||b.source_view||(m=tinymce.trim(i)+"\n"+tinymce.trim(m)+"\n"+tinymce.trim(j)),m=m.replace(/<(\/?)BODY/gi,"<$1body"),d=m.indexOf("<body"),-1!=d?(d=m.indexOf(">",d),i=c(m.substring(0,d+1)),f=m.indexOf("</body",d),-1==f&&(f=m.length),b.content=m.substring(d+1,f),j=c(m.substring(f))):(i=g(),j="\n</body>\n</html>"),h=e(),k(h.getAll("style"),function(a){a.firstChild&&(n+=a.firstChild.value)}),l=h.getAll("body")[0],l&&o.setAttribs(a.getBody(),{style:l.attr("style")||"",dir:l.attr("dir")||"",vLink:l.attr("vlink")||"",link:l.attr("link")||"",aLink:l.attr("alink")||""}),o.remove("fullpage_styles");var p=a.getDoc().getElementsByTagName("head")[0];n&&(o.add(p,"style",{id:"fullpage_styles"},n),l=o.get("fullpage_styles"),l.styleSheet&&(l.styleSheet.cssText=n));var q={};tinymce.each(p.getElementsByTagName("link"),function(a){"stylesheet"==a.rel&&a.getAttribute("data-mce-fullpage")&&(q[a.href]=a)}),tinymce.each(h.getAll("link"),function(a){var b=a.attr("href");q[b]||"stylesheet"!=a.attr("rel")||o.add(p,"link",{rel:"stylesheet",text:"text/css",href:b,"data-mce-fullpage":"1"}),delete q[b]}),tinymce.each(q,function(a){a.parentNode.removeChild(a)})}}function g(){var b,c="",d="";return a.getParam("fullpage_default_xml_pi")&&(c+='<?xml version="1.0" encoding="'+a.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'),c+=a.getParam("fullpage_default_doctype","<!DOCTYPE html>"),c+="\n<html>\n<head>\n",(b=a.getParam("fullpage_default_title"))&&(c+="<title>"+b+"</title>\n"),(b=a.getParam("fullpage_default_encoding"))&&(c+='<meta http-equiv="Content-Type" content="text/html; charset='+b+'" />\n'),(b=a.getParam("fullpage_default_font_family"))&&(d+="font-family: "+b+";"),(b=a.getParam("fullpage_default_font_size"))&&(d+="font-size: "+b+";"),(b=a.getParam("fullpage_default_text_color"))&&(d+="color: "+b+";"),c+="</head>\n<body"+(d?' style="'+d+'"':"")+">\n"}function h(b){b.selection||b.source_view&&a.getParam("fullpage_hide_in_source_view")||(b.content=tinymce.trim(i)+"\n"+tinymce.trim(b.content)+"\n"+tinymce.trim(j))}var i,j,k=tinymce.each,l=tinymce.html.Node;a.addCommand("mceFullPageProperties",b),a.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),a.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),a.on("BeforeSetContent",f),a.on("GetContent",h)}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/fullscreen/plugin.min.js b/plugins/tinymce/plugins/fullscreen/plugin.min.js new file mode 100644 index 0000000..675d6fd --- /dev/null +++ b/plugins/tinymce/plugins/fullscreen/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){var a=tinymce.DOM.getViewPort();return{x:a.x,y:a.y}}function d(a){scrollTo(a.x,a.y)}function e(){function e(){m.setStyle(p,"height",b().h-(o.clientHeight-p.clientHeight))}var n,o,p,q,r=document.body,s=document.documentElement;l=!l,o=a.getContainer(),n=o.style,p=a.getContentAreaContainer().firstChild,q=p.style,l?(k=c(),f=q.width,g=q.height,q.width=q.height="100%",i=n.width,j=n.height,n.width=n.height="",m.addClass(r,"mce-fullscreen"),m.addClass(s,"mce-fullscreen"),m.addClass(o,"mce-fullscreen"),m.bind(window,"resize",e),e(),h=e):(q.width=f,q.height=g,i&&(n.width=i),j&&(n.height=j),m.removeClass(r,"mce-fullscreen"),m.removeClass(s,"mce-fullscreen"),m.removeClass(o,"mce-fullscreen"),m.unbind(window,"resize",h),d(k)),a.fire("FullscreenStateChanged",{state:l})}var f,g,h,i,j,k,l=!1,m=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Ctrl+Shift+F","",e)}),a.on("remove",function(){h&&m.unbind(window,"resize",h)}),a.addCommand("mceFullScreen",e),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){e(),a.focus()},onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:e,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return l}})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/hr/plugin.min.js b/plugins/tinymce/plugins/hr/plugin.min.js new file mode 100644 index 0000000..25abb0c --- /dev/null +++ b/plugins/tinymce/plugins/hr/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"<hr />")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/image/plugin.min.js b/plugins/tinymce/plugins/image/plugin.min.js new file mode 100644 index 0000000..90de1a4 --- /dev/null +++ b/plugins/tinymce/plugins/image/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&o&&p&&c&&d&&(o!=c?(d=Math.round(c/o*d),isNaN(d)||b.value(d)):(c=Math.round(d/p*c),isNaN(c)||a.value(c))),o=c,p=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){s.width||s.height||!u||t.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}var c,d;j(),e(),s=tinymce.extend(s,l.toJSON()),s.alt||(s.alt=""),s.title||(s.title=""),""===s.width&&(s.width=null),""===s.height&&(s.height=null),s.style||(s.style=null),s={src:s.src,alt:s.alt,title:s.title,width:s.width,height:s.height,style:s.style,caption:s.caption,"class":s["class"]},a.undoManager.transact(function(){function e(b){return a.schema.getTextBlockElements()[b.nodeName]}if(!s.src)return void(m&&(t.remove(m),a.focus(),a.nodeChanged()));if(""===s.title&&(s.title=null),m?t.setAttribs(m,s):(s.id="__mcenew",a.focus(),a.selection.setContent(t.createHTML("img",s)),m=t.get("__mcenew"),t.setAttrib(m,"id",null)),a.editorUpload.uploadImagesAuto(),s.caption===!1&&t.is(m.parentNode,"figure.image")&&(c=m.parentNode,t.insertAfter(m,c),t.remove(c)),s.caption!==!0)b(m);else if(!t.is(m.parentNode,"figure.image")){d=m,m=m.cloneNode(!0),c=t.create("figure",{"class":"image"}),c.appendChild(m),c.appendChild(t.create("figcaption",{contentEditable:!0},"Caption")),c.contentEditable=!1;var f=t.getParent(d,e);f?t.split(f,d,c):t.replace(c,d),a.selection.select(c)}})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};q&&q.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&u&&(o=a.width,p=a.height,l.find("#width").value(o),l.find("#height").value(p))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=t.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=t.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(c["margin-top"]===c["margin-bottom"]?l.find("#vspace").value(g(c["margin-top"])):l.find("#vspace").value(""),c["margin-right"]===c["margin-left"]?l.find("#hspace").value(g(c["margin-right"])):l.find("#hspace").value("")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(c))))}}var l,m,n,o,p,q,r,s={},t=a.dom,u=a.settings.image_dimensions!==!1;m=a.selection.getNode(),n=t.getParent(m,"figure.image"),n&&(m=t.select("img",n)[0]),m&&("IMG"!=m.nodeName||m.getAttribute("data-mce-object")||m.getAttribute("data-mce-placeholder"))&&(m=null),m&&(o=t.getAttrib(m,"width"),p=t.getAttrib(m,"height"),s={src:t.getAttrib(m,"src"),alt:t.getAttrib(m,"alt"),title:t.getAttrib(m,"title"),"class":t.getAttrib(m,"class"),width:o,height:p,caption:!!n}),d&&(q={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:s.src&&a.convertURL(s.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){q=this}}),a.settings.image_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var v=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},q];a.settings.image_description!==!1&&v.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&v.push({name:"title",type:"textbox",label:"Image Title"}),u&&v.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),v.push(r),a.settings.image_caption&&tinymce.Env.ceFalse&&v.push({name:"caption",type:"checkbox",label:"Caption"}),a.settings.image_advtab?(m&&(m.style.marginLeft&&m.style.marginRight&&m.style.marginLeft===m.style.marginRight&&(s.hspace=g(m.style.marginLeft)),m.style.marginTop&&m.style.marginBottom&&m.style.marginTop===m.style.marginBottom&&(s.vspace=g(m.style.marginTop)),m.style.borderWidth&&(s.border=g(m.style.borderWidth)),s.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(m,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:v},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:s,body:v,onSubmit:f})}a.on("preInit",function(){function b(a){var b=a.attr("class");return b&&/\bimage\b/.test(b)}function c(a){return function(c){function d(b){b.attr("contenteditable",a?"true":null)}for(var e,f=c.length;f--;)e=c[f],b(e)&&(e.attr("contenteditable",a?"false":null),tinymce.each(e.getAll("figcaption"),d))}}a.parser.addNodeFilter("figure",c(!0)),a.serializer.addNodeFilter("figure",c(!1))}),a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/imagetools/plugin.min.js b/plugins/tinymce/plugins/imagetools/plugin.min.js new file mode 100644 index 0000000..4d2ee3d --- /dev/null +++ b/plugins/tinymce/plugins/imagetools/plugin.min.js @@ -0,0 +1 @@ +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.PluginManager),h("2",tinymce.Env),h("3",tinymce.util.Promise),h("4",tinymce.util.URI),h("5",tinymce.util.Tools),h("6",tinymce.util.Delay),g("m",[],function(){function a(a,b){return d(document.createElement("canvas"),a,b)}function b(a){return a.getContext("2d")}function c(a){var b=null;try{b=a.getContext("webgl")||a.getContext("experimental-webgl")}catch(c){}return b||(b=null),b}function d(a,b,c){return a.width=b,a.height=c,a}return{create:a,resize:d,get2dContext:b,get3dContext:c}}),g("n",[],function(){function a(a){return a.naturalWidth||a.width}function b(a){return a.naturalHeight||a.height}return{getWidth:a,getHeight:b}}),g("o",[],function(){function a(a,b){return function(){a.apply(b,arguments)}}function b(b){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof b)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],h(b,a(d,this),a(e,this))}function c(a){var b=this;return null===this._state?void this._deferreds.push(a):void i(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function d(b){try{if(b===this)throw new TypeError("A promise cannot be resolved with itself.");if(b&&("object"==typeof b||"function"==typeof b)){var c=b.then;if("function"==typeof c)return void h(a(c,b),a(d,this),a(e,this))}this._state=!0,this._value=b,f.call(this)}catch(g){e.call(this,g)}}function e(a){this._state=!1,this._value=a,f.call(this)}function f(){for(var a=0,b=this._deferreds.length;b>a;a++)c.call(this,this._deferreds[a]);this._deferreds=null}function g(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function h(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}if(window.Promise)return window.Promise;var i=b.immediateFn||"function"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},j=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};return b.prototype["catch"]=function(a){return this.then(null,a)},b.prototype.then=function(a,d){var e=this;return new b(function(b,f){c.call(e,new g(a,d,b,f))})},b.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&j(arguments[0])?arguments[0]:arguments);return new b(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;f<a.length;f++)d(f,a[f])})},b.resolve=function(a){return a&&"object"==typeof a&&a.constructor===b?a:new b(function(b){b(a)})},b.reject=function(a){return new b(function(b,c){c(a)})},b.race=function(a){return new b(function(b,c){for(var d=0,e=a.length;e>d;d++)a[d].then(b,c)})},b}),g("p",[],function(){function a(a){var b=document.createElement("a");return b.href=a,b.pathname}function b(b){var c=a(b).split("."),d=c[c.length-1],e={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return d&&(d=d.toLowerCase()),e[d]}return{guessMimeType:b}}),g("e",["o","m","p","n"],function(a,b,c,d){function e(b){return new a(function(a){function c(){b.removeEventListener("load",c),a(b)}b.complete?a(b):b.addEventListener("load",c)})}function f(a){return e(a).then(function(a){var c,e;return e=b.create(d.getWidth(a),d.getHeight(a)),c=b.get2dContext(e),c.drawImage(a,0,0),e})}function g(a){return e(a).then(function(a){var b=a.src;return 0===b.indexOf("blob:")?i(b):0===b.indexOf("data:")?j(b):f(a).then(function(a){return j(a.toDataURL(c.guessMimeType(b)))})})}function h(b){return new a(function(a){function c(){d.removeEventListener("load",c),a(d)}var d=new Image;d.addEventListener("load",c),d.src=URL.createObjectURL(b),d.complete&&c()})}function i(b){return new a(function(a){var c=new XMLHttpRequest;c.open("GET",b,!0),c.responseType="blob",c.onload=function(){200==this.status&&a(this.response)},c.send()})}function j(b){return new a(function(a){var c,d,e,f,g,h;if(b=b.split(","),f=/data:([^;]+)/.exec(b[0]),f&&(g=f[1]),c=atob(b[1]),window.WebKitBlobBuilder){for(h=new WebKitBlobBuilder,d=new ArrayBuffer(c.length),e=0;e<d.length;e++)d[e]=c.charCodeAt(e);return h.append(d),void a(h.getBlob(g))}for(d=new Uint8Array(c.length),e=0;e<d.length;e++)d[e]=c.charCodeAt(e);a(new Blob([d],{type:g}))})}function k(a){return 0===a.indexOf("blob:")?i(a):0===a.indexOf("data:")?j(a):null}function l(a,b){return j(a.toDataURL(b))}function m(b){return new a(function(a){var c=new FileReader;c.onloadend=function(){a(c.result)},c.readAsDataURL(b)})}function n(a){return m(a).then(function(a){return a.split(",")[1]})}function o(a){URL.revokeObjectURL(a.src)}return{blobToImage:h,imageToBlob:g,blobToDataUri:m,blobToBase64:n,imageToCanvas:f,canvasToBlob:l,revokeImageUrl:o,uriToBlob:k}}),g("q",[],function(){function a(a,b,c){return a=parseFloat(a),a>c?a=c:b>a&&(a=b),a}function b(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function c(a,b){var c,d,e,f,g=[],h=new Array(10);for(c=0;5>c;c++){for(d=0;5>d;d++)g[d]=b[d+5*c];for(d=0;5>d;d++){for(f=0,e=0;5>e;e++)f+=a[d+5*e]*g[e];h[d+5*c]=f}}return h}function d(b,c){return c=a(c,0,1),b.map(function(b,d){return d%6===0?b=1-(1-b)*c:b*=c,a(b,0,1)})}function e(b,d){var e;return d=a(d,-1,1),d*=100,0>d?e=127+d/100*127:(e=d%1,e=0===e?l[d]:l[Math.floor(d)]*(1-e)+l[Math.floor(d)+1]*e,e=127*e+127),c(b,[e/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}function f(b,d){var e,f,g,h;return d=a(d,-1,1),e=1+(d>0?3*d:d),f=.3086,g=.6094,h=.082,c(b,[f*(1-e)+e,g*(1-e),h*(1-e),0,0,f*(1-e),g*(1-e)+e,h*(1-e),0,0,f*(1-e),g*(1-e),h*(1-e)+e,0,0,0,0,0,1,0,0,0,0,0,1])}function g(b,d){var e,f,g,h,i;return d=a(d,-180,180)/180*Math.PI,e=Math.cos(d),f=Math.sin(d),g=.213,h=.715,i=.072,c(b,[g+e*(1-g)+f*-g,h+e*-h+f*-h,i+e*-i+f*(1-i),0,0,g+e*-g+.143*f,h+e*(1-h)+.14*f,i+e*-i+f*-.283,0,0,g+e*-g+f*-(1-g),h+e*-h+f*h,i+e*(1-i)+f*i,0,0,0,0,0,1,0,0,0,0,0,1])}function h(b,d){return d=a(255*d,-255,255),c(b,[1,0,0,0,d,0,1,0,0,d,0,0,1,0,d,0,0,0,1,0,0,0,0,0,1])}function i(b,d,e,f){return d=a(d,0,2),e=a(e,0,2),f=a(f,0,2),c(b,[d,0,0,0,0,0,e,0,0,0,0,0,f,0,0,0,0,0,1,0,0,0,0,0,1])}function j(b,e){return e=a(e,0,1),c(b,d([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e))}function k(b,e){return e=a(e,0,1),c(b,d([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e))}var l=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:b,adjust:d,multiply:c,adjustContrast:e,adjustBrightness:h,adjustSaturation:f,adjustHue:g,adjustColors:i,adjustSepia:j,adjustGrayscale:k}}),g("c",["m","n","e","q"],function(a,b,c,d){function e(d,e){return c.blobToImage(d).then(function(d){function f(a,b){var c,d,e,f,g,h=a.data,i=b[0],j=b[1],k=b[2],l=b[3],m=b[4],n=b[5],o=b[6],p=b[7],q=b[8],r=b[9],s=b[10],t=b[11],u=b[12],v=b[13],w=b[14],x=b[15],y=b[16],z=b[17],A=b[18],B=b[19];for(g=0;g<h.length;g+=4)c=h[g],d=h[g+1],e=h[g+2],f=h[g+3],h[g]=c*i+d*j+e*k+f*l+m,h[g+1]=c*n+d*o+e*p+f*q+r,h[g+2]=c*s+d*t+e*u+f*v+w,h[g+3]=c*x+d*y+e*z+f*A+B;return a}var g,h=a.create(b.getWidth(d),b.getHeight(d)),i=a.get2dContext(h);return i.drawImage(d,0,0),k(d),g=f(i.getImageData(0,0,h.width,h.height),e),i.putImageData(g,0,0),c.canvasToBlob(h)})}function f(d,e){return c.blobToImage(d).then(function(d){function f(a,b,c){function d(a,b,c){return a>c?a=c:b>a&&(a=b),a}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(g=Math.round(Math.sqrt(c.length)),h=Math.floor(g/2),e=a.data,f=b.data,t=a.width,u=a.height,j=0;u>j;j++)for(i=0;t>i;i++){for(k=l=m=0,o=0;g>o;o++)for(n=0;g>n;n++)p=d(i+n-h,0,t-1),q=d(j+o-h,0,u-1),r=4*(q*t+p),s=c[o*g+n],k+=e[r]*s,l+=e[r+1]*s,m+=e[r+2]*s;r=4*(j*t+i),f[r]=d(k,0,255),f[r+1]=d(l,0,255),f[r+2]=d(m,0,255)}return b}var g,h,i=a.create(b.getWidth(d),b.getHeight(d)),j=a.get2dContext(i);return j.drawImage(d,0,0),k(d),g=j.getImageData(0,0,i.width,i.height),h=j.getImageData(0,0,i.width,i.height),h=f(g,h,e),j.putImageData(h,0,0),c.canvasToBlob(i)})}function g(d){return function(e,f){return c.blobToImage(e).then(function(e){function g(a,b){var c,d=a.data;for(c=0;c<d.length;c+=4)d[c]=b[d[c]],d[c+1]=b[d[c+1]],d[c+2]=b[d[c+2]];return a}var h,i,j=a.create(b.getWidth(e),b.getHeight(e)),l=a.get2dContext(j),m=new Array(256);for(i=0;i<m.length;i++)m[i]=d(i,f);return l.drawImage(e,0,0),k(e),h=g(l.getImageData(0,0,j.width,j.height),m),l.putImageData(h,0,0),c.canvasToBlob(j)})}}function h(a){return function(b,c){return e(b,a(d.identity(),c))}}function i(a){return function(b){return e(b,a)}}function j(a){return function(b){return f(b,a)}}var k=c.revokeImageUrl;return{invert:i([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0]),brightness:h(d.adjustBrightness),hue:h(d.adjustHue),saturate:h(d.adjustSaturation),contrast:h(d.adjustContrast),grayscale:h(d.adjustGrayscale),sepia:h(d.adjustSepia),colorize:function(a,b,c,f){return e(a,d.adjustColors(d.identity(),b,c,f))},sharpen:j([0,-1,0,-1,5,-1,0,-1,0]),emboss:j([-2,-1,0,-1,1,1,0,1,2]),gamma:g(function(a,b){return 255*Math.pow(a/255,1-b)}),exposure:g(function(a,b){return 255*(1-Math.exp(-(a/255)*b))}),colorFilter:e,convoluteFilter:f}}),g("r",["o","e","m","n"],function(a,b,c,d){function e(a,b,c){var g=d.getWidth(a),h=d.getHeight(a),i=b/g,j=c/h,k=!1;(.5>i||i>2)&&(i=.5>i?.5:2,k=!0),(.5>j||j>2)&&(j=.5>j?.5:2,k=!0);var l=f(a,i,j);return k?l.then(function(a){return e(a,b,c)}):l}function f(b,e,f){return new a(function(a){var g=d.getWidth(b),h=d.getHeight(b),i=Math.floor(g*e),j=Math.floor(h*f),k=c.create(i,j),l=c.get2dContext(k);l.drawImage(b,0,0,g,h,0,0,i,j),a(k)})}return{scale:e}}),g("d",["e","m","n","r"],function(a,b,c,d){function e(d,e){return a.blobToImage(d).then(function(f){var g=b.create(c.getWidth(f),c.getHeight(f)),h=b.get2dContext(g),j=0,k=0;return e=0>e?360+e:e,90!=e&&270!=e||b.resize(g,g.height,g.width),90!=e&&180!=e||(j=g.width),270!=e&&180!=e||(k=g.height),h.translate(j,k),h.rotate(e*Math.PI/180),h.drawImage(f,0,0),i(f),a.canvasToBlob(g,d.type)})}function f(d,e){return a.blobToImage(d).then(function(d){var f=b.create(c.getWidth(d),c.getHeight(d)),g=b.get2dContext(f);return"v"==e?(g.scale(1,-1),g.drawImage(d,0,-f.height)):(g.scale(-1,1),g.drawImage(d,-f.width,0)),i(d),a.canvasToBlob(f)})}function g(c,d,e,f,g){return a.blobToImage(c).then(function(c){var h=b.create(f,g),j=b.get2dContext(h);return j.drawImage(c,-d,-e),i(c),a.canvasToBlob(h)})}function h(b,c,e){return a.blobToImage(b).then(function(f){var g;return g=d.scale(f,c,e).then(function(c){return a.canvasToBlob(c,b.type)}).then(j(f))["catch"](j(f))})}var i=a.revokeImageUrl,j=function(a){return function(b){return i(a),b}};return{rotate:e,flip:f,crop:g,resize:h}}),g("7",["c","d"],function(a,b){var c=function(b){return a.invert(b)},d=function(b){return a.sharpen(b)},e=function(b){return a.emboss(b)},f=function(b,c){return a.gamma(b,c)},g=function(b,c){return a.exposure(b,c)},h=function(b,c,d,e){return a.colorize(b,c,d,e)},i=function(b,c){return a.brightness(b,c)},j=function(b,c){return a.hue(b,c)},k=function(b,c){return a.saturate(b,c)},l=function(b,c){return a.contrast(b,c)},m=function(b,c){return a.grayscale(b,c)},n=function(b,c){return a.sepia(b,c)},o=function(a,c){return b.flip(a,c)},p=function(a,c,d,e,f){return b.crop(a,c,d,e,f)},q=function(a,c,d){return b.resize(a,c,d)},r=function(a,c){return b.rotate(a,c)};return{invert:c,sharpen:d,emboss:e,brightness:i,hue:j,saturate:k,contrast:l,grayscale:m,sepia:n,colorize:h,gamma:f,exposure:g,flip:o,crop:p,resize:q,rotate:r}}),g("8",["e"],function(a){var b=function(b){return a.blobToImage(b)},c=function(b){return a.imageToBlob(b)},d=function(b){return a.blobToDataUri(b)},e=function(b){return a.blobToBase64(b)};return{blobToImage:b,imageToBlob:c,blobToDataUri:d,blobToBase64:e}}),h("f",tinymce.dom.DOMUtils),h("g",tinymce.ui.Factory),h("h",tinymce.ui.Form),h("i",tinymce.ui.Container),h("s",tinymce.ui.Control),h("t",tinymce.ui.DragHelper),h("u",tinymce.geom.Rect),h("w",tinymce.dom.DomQuery),h("x",tinymce.util.Observable),h("y",tinymce.util.VK),g("v",["w","t","u","5","x","y"],function(a,b,c,d,e,f){var g=0;return function(h,i,j,k,l){function m(a,b){return{x:b.x+a.x,y:b.y+a.y,w:b.w,h:b.h}}function n(a,b){return{x:b.x-a.x,y:b.y-a.y,w:b.w,h:b.h}}function o(){return n(j,h)}function p(a,b,d,e){var f,g,i,k,l;f=b.x,g=b.y,i=b.w,k=b.h,f+=d*a.deltaX,g+=e*a.deltaY,i+=d*a.deltaW,k+=e*a.deltaH,20>i&&(i=20),20>k&&(k=20),l=h=c.clamp({x:f,y:g,w:i,h:k},j,"move"==a.name),l=n(j,l),y.fire("updateRect",{rect:l}),v(l)}function q(){function c(a){var c;return new b(D,{document:k.ownerDocument,handle:D+"-"+a.name,start:function(){c=h},drag:function(b){p(a,c,b.deltaX,b.deltaY)}})}a('<div id="'+D+'" class="'+C+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(k),d.each(B,function(b){a("#"+D,k).append('<div id="'+D+"-"+b+'"class="'+C+'croprect-block" style="display: none" data-mce-bogus="all">')}),d.each(z,function(b){a("#"+D,k).append('<div id="'+D+"-"+b.name+'" class="'+C+"croprect-handle "+C+"croprect-handle-"+b.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+b.label+'" aria-grabbed="false">')}),A=d.map(z,c),s(h),a(k).on("focusin focusout",function(b){a(b.target).attr("aria-grabbed","focus"===b.type)}),a(k).on("keydown",function(a){function b(a,b,d,e,f){a.stopPropagation(),a.preventDefault(),p(c,d,e,f)}var c;switch(d.each(z,function(b){return a.target.id==D+"-"+b.name?(c=b,!1):void 0}),a.keyCode){case f.LEFT:b(a,c,h,-10,0);break;case f.RIGHT:b(a,c,h,10,0);break;case f.UP:b(a,c,h,0,-10);break;case f.DOWN:b(a,c,h,0,10);break;case f.ENTER:case f.SPACEBAR:a.preventDefault(),l()}})}function r(b){var c;c=d.map(z,function(a){return"#"+D+"-"+a.name}).concat(d.map(B,function(a){return"#"+D+"-"+a})).join(","),b?a(c,k).show():a(c,k).hide()}function s(b){function c(b,c){c.h<0&&(c.h=0),c.w<0&&(c.w=0),a("#"+D+"-"+b,k).css({left:c.x,top:c.y,width:c.w,height:c.h})}d.each(z,function(c){a("#"+D+"-"+c.name,k).css({left:b.w*c.xMul+b.x,top:b.h*c.yMul+b.y})}),c("top",{x:i.x,y:i.y,w:i.w,h:b.y-i.y}),c("right",{x:b.x+b.w,y:b.y,w:i.w-b.x-b.w+i.x,h:b.h}),c("bottom",{x:i.x,y:b.y+b.h,w:i.w,h:i.h-b.y-b.h+i.y}),c("left",{x:i.x,y:b.y,w:b.x-i.x,h:b.h}),c("move",b)}function t(a){h=a,s(h)}function u(a){i=a,s(h)}function v(a){t(m(j,a))}function w(a){j=a,s(h)}function x(){d.each(A,function(a){a.destroy()}),A=[]}var y,z,A,B,C="mce-",D=C+"crid-"+g++;return z=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],B=["top","right","bottom","left"],q(k),y=d.extend({toggleVisibility:r,setClampRect:w,setRect:t,getInnerRect:o,setInnerRect:v,setViewPortRect:u,destroy:x},e)}}),g("j",["s","t","u","5","3","v"],function(a,b,c,d,e,f){function g(a){return new e(function(b){function c(){a.removeEventListener("load",c),b(a)}a.complete?b(a):a.addEventListener("load",c)})}return a.extend({Defaults:{classes:"imagepanel"},selection:function(a){return arguments.length?(this.state.set("rect",a),this):this.state.get("rect")},imageSize:function(){var a=this.state.get("viewRect");return{w:a.w,h:a.h}},toggleCropRect:function(a){this.state.set("cropEnabled",a)},imageSrc:function(a){var b=this,d=new Image;d.src=a,g(d).then(function(){var a,e,f=b.state.get("viewRect");e=b.$el.find("img"),e[0]?e.replaceWith(d):b.getEl().appendChild(d),a={x:0,y:0,w:d.naturalWidth,h:d.naturalHeight},b.state.set("viewRect",a),b.state.set("rect",c.inflate(a,-20,-20)),f&&f.w==a.w&&f.h==a.h||b.zoomFit(),b.repaintImage(),b.fire("load")})},zoom:function(a){return arguments.length?(this.state.set("zoom",a),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var a,b,c,d,e,f,g,h=this;g=10,a=h.$el.find("img"),b=h.getEl().clientWidth,c=h.getEl().clientHeight,d=a[0].naturalWidth,e=a[0].naturalHeight,f=Math.min((b-g)/d,(c-g)/e),f>=1&&(f=1),h.zoom(f)},repaintImage:function(){var a,b,c,d,e,f,g,h,i,j;j=this.getEl(),h=this.zoom(),i=this.state.get("rect"),g=this.$el.find("img"),e=j.offsetWidth,f=j.offsetHeight,c=g[0].naturalWidth*h,d=g[0].naturalHeight*h,a=Math.max(0,e/2-c/2),b=Math.max(0,f/2-d/2),g.css({left:a,top:b,width:c,height:d}),this.cropRect&&(this.cropRect.setRect({x:i.x*h+a,y:i.y*h+b,w:i.w*h,h:i.h*h}),this.cropRect.setClampRect({x:a,y:b,w:c,h:d}),this.cropRect.setViewPortRect({x:0,y:0,w:e,h:f}))},bindStates:function(){function a(a){b.cropRect=new f(a,b.state.get("viewRect"),b.state.get("viewRect"),b.getEl(),function(){b.fire("crop")}),b.cropRect.on("updateRect",function(a){var c=a.rect,d=b.zoom();c={x:Math.round(c.x/d),y:Math.round(c.y/d),w:Math.round(c.w/d),h:Math.round(c.h/d)},b.state.set("rect",c)}),b.on("remove",b.cropRect.destroy)}var b=this;b.state.on("change:cropEnabled",function(a){b.cropRect.toggleVisibility(a.value),b.repaintImage()}),b.state.on("change:zoom",function(){b.repaintImage()}),b.state.on("change:rect",function(c){var d=c.value;b.cropRect||a(d),b.cropRect.setRect(d)})}})}),g("k",[],function(){return function(){function a(a){var b;return b=f.splice(++g),f.push(a),{state:a,removed:b}}function b(){return d()?f[--g]:void 0}function c(){return e()?f[++g]:void 0}function d(){return g>0}function e(){return-1!=g&&g<f.length-1}var f=[],g=-1;return{data:f,add:a,undo:b,redo:c,canUndo:d,canRedo:e}}}),g("9",["f","5","3","g","h","i","j","7","8","k"],function(a,b,c,d,e,f,g,h,i,j){function k(a){return{blob:a,url:URL.createObjectURL(a)}}function l(a){a&&URL.revokeObjectURL(a.url)}function m(a){b.each(a,l)}function n(c,i,n){function o(a){var b,c,d,e;b=L.find("#w")[0],c=L.find("#h")[0],d=parseInt(b.value(),10),e=parseInt(c.value(),10),L.find("#constrain")[0].checked()&&ga&&ha&&d&&e&&("w"==a.control.settings.name?(e=Math.round(d*ia),c.value(e)):(d=Math.round(e*ja),b.value(d))),ga=d,ha=e}function p(a){return Math.round(100*a)+"%"}function q(){L.find("#undo").disabled(!ka.canUndo()),L.find("#redo").disabled(!ka.canRedo()),L.statusbar.find("#save").disabled(!ka.canUndo())}function r(){L.find("#undo").disabled(!0),L.find("#redo").disabled(!0)}function s(a){a&&S.imageSrc(a.url)}function t(a){return function(){var c=b.grep(fa,function(b){return b.settings.name!=a});b.each(c,function(a){a.hide()}),a.show(),a.focus()}}function u(a){O=k(a),s(O)}function v(a){c=k(a),s(c),m(ka.add(c).removed),q()}function w(){var a=S.selection();h.crop(c.blob,a.x,a.y,a.w,a.h).then(function(a){v(a),z()})}function x(a){var b=[].slice.call(arguments,1);return function(){var d=O||c;a.apply(this,[d.blob].concat(b)).then(u)}}function y(a){var b=[].slice.call(arguments,1);return function(){a.apply(this,[c.blob].concat(b)).then(v)}}function z(){s(c),l(O),t(M)(),q()}function A(){O&&(v(O.blob),z())}function B(){var a=S.zoom();2>a&&(a+=.1),S.zoom(a)}function C(){var a=S.zoom();a>.1&&(a-=.1),S.zoom(a)}function D(){c=ka.undo(),s(c),q()}function E(){c=ka.redo(),s(c),q()}function F(){i(c.blob),L.close()}function G(a){return new e({layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:a})}function H(a,b){return G([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:A}]).hide().on("show",function(){r(),b(c.blob).then(function(a){var b=k(a);s(b),l(O),O=b})})}function I(a,b,d,e,f){function g(a){b(c.blob,a).then(function(a){var b=k(a);s(b),l(O),O=b})}return G([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(a){g(a.value)},minValue:e,maxValue:f,value:d,previewFilter:p},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:A}]).hide().on("show",function(){this.find("slider").value(d),r()})}function J(a,b){function d(){var a,d,e;a=L.find("#r")[0].value(),d=L.find("#g")[0].value(),e=L.find("#b")[0].value(),b(c.blob,a,d,e).then(function(a){var b=k(a);s(b),l(O),O=b})}return G([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:0,value:1,maxValue:2,ondragend:d,previewFilter:p},{type:"slider",label:"G",name:"g",minValue:0,value:1,maxValue:2,ondragend:d,previewFilter:p},{type:"slider",label:"B",name:"b",minValue:0,value:1,maxValue:2,ondragend:d,previewFilter:p},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:A}]).hide().on("show",function(){L.find("#r,#g,#b").value(1),r()})}function K(a){a.control.value()===!0&&(ia=ha/ga,ja=ga/ha)}var L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka=new j;P=G([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:w}]).hide().on("show hide",function(a){S.toggleCropRect("show"==a.type)}).on("show",r),Q=G([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:o},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:o},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:K},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}]).hide().on("submit",function(a){var b=parseInt(L.find("#w").value(),10),c=parseInt(L.find("#h").value(),10);a.preventDefault(),y(h.resize,b,c)(),z()}).on("show",r),R=G([{text:"Back",onclick:z},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:x(h.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:x(h.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:x(h.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:x(h.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:A}]).hide().on("show",r),V=H("Invert",h.invert),ba=H("Sharpen",h.sharpen),ca=H("Emboss",h.emboss),W=I("Brightness",h.brightness,0,-1,1),X=I("Hue",h.hue,180,0,360),Y=I("Saturate",h.saturate,0,-1,1),Z=I("Contrast",h.contrast,0,-1,1),$=I("Grayscale",h.grayscale,0,0,1),_=I("Sepia",h.sepia,0,0,1),aa=J("Colorize",h.colorize),da=I("Gamma",h.gamma,0,-1,1),ea=I("Exposure",h.exposure,1,0,2),N=G([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:t(X)},{text:"saturate",icon:"saturate",onclick:t(Y)},{text:"sepia",icon:"sepia",onclick:t(_)},{text:"emboss",icon:"emboss",onclick:t(ca)},{text:"exposure",icon:"exposure",onclick:t(ea)},{type:"spacer",flex:1}]).hide(),M=G([{tooltip:"Crop",icon:"crop",onclick:t(P)},{tooltip:"Resize",icon:"resize2",onclick:t(Q)},{tooltip:"Orientation",icon:"orientation",onclick:t(R)},{tooltip:"Brightness",icon:"sun",onclick:t(W)},{tooltip:"Sharpen",icon:"sharpen",onclick:t(ba)},{tooltip:"Contrast",icon:"contrast",onclick:t(Z)},{tooltip:"Color levels",icon:"drop",onclick:t(aa)},{tooltip:"Gamma",icon:"gamma",onclick:t(da)},{tooltip:"Invert",icon:"invert",onclick:t(V)}]),S=new g({flex:1,imageSrc:c.url}),T=new f({layout:"flex",direction:"column",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:D},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:E},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:B},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:C}]}),U=new f({type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:[T,S]}),fa=[M,P,Q,R,N,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea],L=d.create("window",{layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(a.DOM.getViewPort().w,800),minHeight:Math.min(a.DOM.getViewPort().h,650),title:"Edit image",items:fa.concat([U]),buttons:[{text:"Save",name:"save",subtype:"primary",onclick:F},{text:"Cancel",onclick:"close"}]}),L.renderTo(document.body).reflow(),L.on("close",function(){n(),m(ka.data),ka=null,O=null}),ka.add(c),q(),S.on("load",function(){ga=S.imageSize().w,ha=S.imageSize().h,ia=ha/ga,ja=ga/ha,L.find("#w").value(ga),L.find("#h").value(ha)}),S.on("crop",w)}function o(a){return new c(function(b,c){n(k(a),b,c)})}return{edit:o}}),g("a",[],function(){function a(a){function b(a){return/^[0-9\.]+px$/.test(a)}var c,d;return c=a.style.width,d=a.style.height,c||d?b(c)&&b(d)?{w:parseInt(c,10),h:parseInt(d,10)}:null:(c=a.width,d=a.height,c&&d?{w:parseInt(c,10),h:parseInt(d,10)}:null)}function b(a,b){var c,d;b&&(c=a.style.width,d=a.style.height,(c||d)&&(a.style.width=b.w+"px",a.style.height=b.h+"px",a.removeAttribute("data-mce-style")),c=a.width,d=a.height,(c||d)&&(a.setAttribute("width",b.w),a.setAttribute("height",b.h)))}function c(a){return{w:a.naturalWidth,h:a.naturalHeight}}return{getImageSize:a,setImageSize:b,getNaturalImageSize:c}}),g("l",["3","5"],function(a,b){var c=function(a){return null!==a&&void 0!==a},d=function(a,b){var d;return d=b.reduce(function(a,b){return c(a)?a[b]:void 0},a),c(d)?d:null},e=function(c,d){return new a(function(a){var e;e=new XMLHttpRequest,e.onreadystatechange=function(){4===e.readyState&&a({status:e.status,blob:this.response})},e.open("GET",c,!0),b.each(d,function(a,b){e.setRequestHeader(b,a)}),e.responseType="blob",e.send()})},f=function(b){return new a(function(a){var c=new FileReader;c.onload=function(b){var c=b.target;a(c.result)},c.readAsText(b)})},g=function(a){var b;try{b=JSON.parse(a)}catch(c){}return b};return{traverse:d,readBlob:f,requestUrlAsBlob:e,parseJson:g}}),g("b",["3","5","l"],function(a,b,c){function d(b){return c.requestUrlAsBlob(b,{}).then(function(b){return b.status>=400?f(b.status):a.resolve(b.blob)})}var e=function(a){return 400===a||403===a||500===a},f=function(b){return a.reject("ImageProxy HTTP error: "+b)},g=function(b){a.reject("ImageProxy Service error: "+b)},h=function(a,b){return c.readBlob(b).then(function(a){var b=c.parseJson(a),d=c.traverse(b,["error","type"]);return g(d?d:"Invalid JSON")})},i=function(a,b){return e(a)?h(a,b):f(a)},j=function(b,d){return c.requestUrlAsBlob(b,{"Content-Type":"application/json;charset=UTF-8","tiny-api-key":d}).then(function(b){return b.status>=400?i(b.status,b.blob):a.resolve(b.blob)})},k=function(a,b){return b?j(a,b):d(a)};return{getUrl:k}}),g("0",["1","2","3","4","5","6","7","8","9","a","b"],function(a,b,c,d,e,f,g,h,i,j,k){var l=function(a){function l(b){a.notificationManager.open({text:b,type:"error"})}function m(){return a.selection.getNode()}function n(){return"imagetools"+G++}function o(b){var c=b.src;return 0===c.indexOf("data:")||0===c.indexOf("blob:")||new d(c).host===a.documentBaseURI.host}function p(b){return-1!==e.inArray(a.settings.imagetools_cors_hosts,new d(b.src).host)}function q(){return a.settings.api_key||a.settings.imagetools_api_key}function r(b){var c,d=b.src;return p(b)?k.getUrl(b.src,null):o(b)?h.imageToBlob(b):(d=a.settings.imagetools_proxy,d+=(-1===d.indexOf("?")?"?":"&")+"url="+encodeURIComponent(b.src),c=q(),k.getUrl(d,c))}function s(){var b;return b=a.editorUpload.blobCache.getByUri(m().src),b?b.blob():r(m())}function t(){E=f.setEditorTimeout(a,function(){a.editorUpload.uploadImagesAuto()},3e4)}function u(){clearTimeout(E)}function v(b,c){return h.blobToDataUri(b).then(function(e){var f,g,h,i,j;return j=m(),f=n(),h=a.editorUpload.blobCache,g=d.parseDataUri(e).data,i=h.create(f,b,g),h.add(i),a.undoManager.transact(function(){function b(){a.$(j).off("load",b),a.nodeChanged(),c?a.editorUpload.uploadImagesAuto():(u(),t())}a.$(j).on("load",b),a.$(j).attr({src:i.blobUri()}).removeAttr("data-mce-src")}),i})}function w(b){return function(){return a._scanForImages().then(s).then(b).then(v,l)}}function x(a){return function(){return w(function(b){var c=j.getImageSize(m());return c&&j.setImageSize(m(),{w:c.h,h:c.w}),g.rotate(b,a)})()}}function y(a){return function(){return w(function(b){return g.flip(b,a)})()}}function z(){var a=m(),b=j.getNaturalImageSize(a),d=function(d){return new c(function(c){h.blobToImage(d).then(function(e){var f=j.getNaturalImageSize(e);b.w==f.w&&b.h==f.h||j.getImageSize(a)&&j.setImageSize(a,f),URL.revokeObjectURL(e.src),c(d)})})},e=function(a){return i.edit(a).then(d).then(function(a){v(a,!0)},function(){})};a&&r(a).then(e,l)}function A(){a.addButton("rotateleft",{title:"Rotate counterclockwise",onclick:x(-90)}),a.addButton("rotateright",{title:"Rotate clockwise",onclick:x(90)}),a.addButton("flipv",{title:"Flip vertically",onclick:y("v")}),a.addButton("fliph",{title:"Flip horizontally",onclick:y("h")}),a.addButton("editimage",{title:"Edit image",onclick:z}),a.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})}function B(){a.on("NodeChange",function(b){F&&F.src!=b.element.src&&(u(),a.editorUpload.uploadImagesAuto(),F=void 0),C(b.element)&&(F=b.element)})}function C(b){var c=a.dom.is(b,"img:not([data-mce-object],[data-mce-placeholder])");return c&&(o(b)||p(b)||a.settings.imagetools_proxy)}function D(){var b=a.settings.imagetools_toolbar;b||(b="rotateleft rotateright | flipv fliph | crop editimage imageoptions"),a.addContextToolbar(C,b)}var E,F,G=0;b.fileApi&&(A(),D(),B(),a.addCommand("mceEditImage",z))};return a.add("imagetools",l),function(){}}),d("0")()}(); \ No newline at end of file diff --git a/plugins/tinymce/plugins/importcss/plugin.min.js b/plugins/tinymce/plugins/importcss/plugin.min.js new file mode 100644 index 0000000..df6facf --- /dev/null +++ b/plugins/tinymce/plugins/importcss/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("importcss",function(a){function b(a){var b=tinymce.Env.cacheSuffix;return"string"==typeof a&&(a=a.replace("?"+b,"").replace("&"+b,"")),a}function c(b){var c=a.settings,d=c.skin!==!1?c.skin||"lightgray":!1;if(d){var e=c.skin_url;return e=e?a.documentBaseURI.toAbsolute(e):tinymce.baseURL+"/skins/"+d,b===e+"/content"+(a.inline?".inline":"")+".min.css"}return!1}function d(a){return"string"==typeof a?function(b){return-1!==b.indexOf(a)}:a instanceof RegExp?function(b){return a.test(b)}:a}function e(d,e){function f(a,d){var i,j=a.href;if(j=b(j),j&&e(j,d)&&!c(j)){h(a.imports,function(a){f(a,!0)});try{i=a.cssRules||a.rules}catch(k){}h(i,function(a){a.styleSheet?f(a.styleSheet,!0):a.selectorText&&h(a.selectorText.split(","),function(a){g.push(tinymce.trim(a))})})}}var g=[],i={};h(a.contentCSS,function(a){i[a]=!0}),e||(e=function(a,b){return b||i[a]});try{h(d.styleSheets,function(a){f(a)})}catch(j){}return g}function f(b){var c,d=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(b);if(d){var e=d[1],f=d[2].substr(1).split(".").join(" "),g=tinymce.makeMap("a,img");return d[1]?(c={title:b},a.schema.getTextBlockElements()[e]?c.block=e:a.schema.getBlockElements()[e]||g[e.toLowerCase()]?c.selector=e:c.inline=e):d[2]&&(c={inline:"span",title:b.substr(1),classes:f}),a.settings.importcss_merge_classes!==!1?c.classes=f:c.attributes={"class":f},c}}var g=this,h=tinymce.each;a.on("renderFormatsMenu",function(b){var c=a.settings,i={},j=c.importcss_selector_converter||f,k=d(c.importcss_selector_filter),l=b.control;a.settings.importcss_append||l.items().remove();var m=[];tinymce.each(c.importcss_groups,function(a){a=tinymce.extend({},a),a.filter=d(a.filter),m.push(a)}),h(e(b.doc||a.getDoc(),d(c.importcss_file_filter)),function(b){if(-1===b.indexOf(".mce-")&&!i[b]&&(!k||k(b))){var c,d=j.call(g,b);if(d){var e=d.name||tinymce.DOM.uniqueId();if(m)for(var f=0;f<m.length;f++)if(!m[f].filter||m[f].filter(b)){m[f].item||(m[f].item={text:m[f].title,menu:[]}),c=m[f].item.menu;break}a.formatter.register(e,d);var h=tinymce.extend({},l.settings.itemDefaults,{text:d.title,format:e});c?c.push(h):l.add(h)}i[b]=!0}}),h(m,function(a){l.add(a.item)}),b.control.renderNew()}),g.convertSelectorToFormat=f}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/insertdatetime/plugin.min.js b/plugins/tinymce/plugins/insertdatetime/plugin.min.js new file mode 100644 index 0000000..d34406b --- /dev/null +++ b/plugins/tinymce/plugins/insertdatetime/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("insertdatetime",function(a){function b(b,c){function d(a,b){if(a=""+a,a.length<b)for(var c=0;c<b-a.length;c++)a="0"+a;return a}return c=c||new Date,b=b.replace("%D","%m/%d/%Y"),b=b.replace("%r","%I:%M:%S %p"),b=b.replace("%Y",""+c.getFullYear()),b=b.replace("%y",""+c.getYear()),b=b.replace("%m",d(c.getMonth()+1,2)),b=b.replace("%d",d(c.getDate(),2)),b=b.replace("%H",""+d(c.getHours(),2)),b=b.replace("%M",""+d(c.getMinutes(),2)),b=b.replace("%S",""+d(c.getSeconds(),2)),b=b.replace("%I",""+((c.getHours()+11)%12+1)),b=b.replace("%p",""+(c.getHours()<12?"AM":"PM")),b=b.replace("%B",""+a.translate(i[c.getMonth()])),b=b.replace("%b",""+a.translate(h[c.getMonth()])),b=b.replace("%A",""+a.translate(g[c.getDay()])),b=b.replace("%a",""+a.translate(f[c.getDay()])),b=b.replace("%%","%")}function c(c){var d=b(c);if(a.settings.insertdatetime_element){var e;e=b(/%[HMSIp]/.test(c)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),d='<time datetime="'+e+'">'+d+"</time>";var f=a.dom.getParent(a.selection.getStart(),"time");if(f)return void a.dom.setOuterHTML(f,d)}a.insertContent(d)}var d,e,f="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),g="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),h="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),i="January February March April May June July August September October November December".split(" "),j=[];a.addCommand("mceInsertDate",function(){c(a.getParam("insertdatetime_dateformat",a.translate("%Y-%m-%d")))}),a.addCommand("mceInsertTime",function(){c(a.getParam("insertdatetime_timeformat",a.translate("%H:%M:%S")))}),a.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){c(d||e)},menu:j}),tinymce.each(a.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(a){e||(e=a),j.push({text:b(a),onclick:function(){d=a,c(a)}})}),a.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:j,context:"insert"})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/layer/plugin.min.js b/plugins/tinymce/plugins/layer/plugin.min.js new file mode 100644 index 0000000..0565eb4 --- /dev/null +++ b/plugins/tinymce/plugins/layer/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("layer",function(a){function b(a){do if(a.className&&-1!=a.className.indexOf("mceItemLayer"))return a;while(a=a.parentNode)}function c(b){var c=a.dom;tinymce.each(c.select("div,p",b),function(a){/^(absolute|relative|fixed)$/i.test(a.style.position)&&(a.hasVisual?c.addClass(a,"mceItemVisualAid"):c.removeClass(a,"mceItemVisualAid"),c.addClass(a,"mceItemLayer"))})}function d(c){var d,e,f=[],g=b(a.selection.getNode()),h=-1,i=-1;for(e=[],tinymce.walk(a.getBody(),function(a){1==a.nodeType&&/^(absolute|relative|static)$/i.test(a.style.position)&&e.push(a)},"childNodes"),d=0;d<e.length;d++)f[d]=e[d].style.zIndex?parseInt(e[d].style.zIndex,10):0,0>h&&e[d]==g&&(h=d);if(0>c){for(d=0;d<f.length;d++)if(f[d]<f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):f[h]>0&&(e[h].style.zIndex=f[h]-1)}else{for(d=0;d<f.length;d++)if(f[d]>f[h]){i=d;break}i>-1?(e[h].style.zIndex=f[i],e[i].style.zIndex=f[h]):e[h].style.zIndex=f[h]+1}a.execCommand("mceRepaint")}function e(){var b=a.dom,c=b.getPos(b.getParent(a.selection.getNode(),"*")),d=a.getBody();a.dom.add(d,"div",{style:{position:"absolute",left:c.x,top:c.y>20?c.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},a.selection.getContent()||a.getLang("layer.content")),tinymce.Env.ie&&b.setHTML(d,d.innerHTML)}function f(){var c=b(a.selection.getNode());c||(c=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")),c&&("absolute"==c.style.position.toLowerCase()?(a.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""}),a.dom.removeClass(c,"mceItemVisualAid"),a.dom.removeClass(c,"mceItemLayer")):(c.style.left||(c.style.left="20px"),c.style.top||(c.style.top="20px"),c.style.width||(c.style.width=c.width?c.width+"px":"100px"),c.style.height||(c.style.height=c.height?c.height+"px":"100px"),c.style.position="absolute",a.dom.setAttrib(c,"data-mce-style",""),a.addVisual(a.getBody())),a.execCommand("mceRepaint"),a.nodeChanged())}a.addCommand("mceInsertLayer",e),a.addCommand("mceMoveForward",function(){d(1)}),a.addCommand("mceMoveBackward",function(){d(-1)}),a.addCommand("mceMakeAbsolute",function(){f()}),a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),a.on("init",function(){tinymce.Env.ie&&a.getDoc().execCommand("2D-Position",!1,!0)}),a.on("mouseup",function(c){var d=b(c.target);d&&a.dom.setAttrib(d,"data-mce-style","")}),a.on("mousedown",function(c){var d,e=c.target,f=a.getDoc();tinymce.Env.gecko&&(b(e)?"on"!==f.designMode&&(f.designMode="on",e=f.body,d=e.parentNode,d.removeChild(e),d.appendChild(e)):"on"==f.designMode&&(f.designMode="off"))}),a.on("NodeChange",c)}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/legacyoutput/plugin.min.js b/plugins/tinymce/plugins/legacyoutput/plugin.min.js new file mode 100644 index 0000000..6b6b81d --- /dev/null +++ b/plugins/tinymce/plugins/legacyoutput/plugin.min.js @@ -0,0 +1 @@ +!function(a){a.PluginManager.add("legacyoutput",function(b,c,d){b.settings.inline_styles=!1,b.on("init",function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",d=a.explode(b.settings.font_size_style_values),e=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignjustify:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(b){return a.inArray(d,b.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),a.each("b,i,u,strike".split(","),function(a){e.addValidElements(a+"[*]")}),e.getElementRule("font")||e.addValidElements("font[face|size|color|style]"),a.each(c.split(","),function(a){var b=e.getElementRule(a);b&&(b.attributes.align||(b.attributes.align={},b.attributesOrder.push("align")))})}),b.addButton("fontsizeselect",function(){var a=[],c="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",d=b.settings.fontsize_formats||c;return b.$.each(d.split(" "),function(b,c){var d=c,e=c,f=c.split("=");f.length>1&&(d=f[0],e=f[1]),a.push({text:d,value:e})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:a,fixedWidth:!0,onPostRender:function(){var a=this;b.on("NodeChange",function(){var c;c=b.dom.getParent(b.selection.getNode(),"font"),c?a.value(c.size):a.value("")})},onclick:function(a){a.control.settings.value&&b.execCommand("FontSize",!1,a.control.settings.value)}}}),b.addButton("fontselect",function(){function a(a){a=a.replace(/;$/,"").split(";");for(var b=a.length;b--;)a[b]=a[b].split("=");return a}var c="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",e=[],f=a(b.settings.font_formats||c);return d.each(f,function(a,b){e.push({text:{raw:b[0]},value:b[1],textStyle:-1==b[1].indexOf("dings")?"font-family:"+b[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:e,fixedWidth:!0,onPostRender:function(){var a=this;b.on("NodeChange",function(){var c;c=b.dom.getParent(b.selection.getNode(),"font"),c?a.value(c.face):a.value("")})},onselect:function(a){a.control.settings.value&&b.execCommand("FontName",!1,a.control.settings.value)}}})})}(tinymce); \ No newline at end of file diff --git a/plugins/tinymce/plugins/link/plugin.min.js b/plugins/tinymce/plugins/link/plugin.min.js new file mode 100644 index 0000000..61f4324 --- /dev/null +++ b/plugins/tinymce/plugins/link/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("link",function(a){function b(b){return function(){var c=a.settings.link_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b&&b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){function d(a){var b=l.find("#text");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#href").value(a.control.value())}function e(b){var c=[];return tinymce.each(a.dom.select("a:not([href])"),function(a){var d=a.name||a.id;d&&c.push({text:d,value:"#"+d,selected:-1!=b.indexOf("#"+d)})}),c.length?(c.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:c,onselect:d}):void 0}function f(){!k&&0===u.text.length&&m&&this.parent().parent().find("#text")[0].value(this.value())}function g(b){var c=b.meta||{};o&&o.value(a.convertURL(this.value(),"href")),tinymce.each(b.meta,function(a,b){l.find("#"+b).value(a)}),c.text||f.call(this)}function h(a){var b=v.getContent();if(/</.test(b)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(b)||-1==b.indexOf("href=")))return!1;if(a){var c,d=a.childNodes;if(0===d.length)return!1;for(c=d.length-1;c>=0;c--)if(3!=d[c].nodeType)return!1}return!0}var i,j,k,l,m,n,o,p,q,r,s,t,u={},v=a.selection,w=a.dom;i=v.getNode(),j=w.getParent(i,"a[href]"),m=h(),u.text=k=j?j.innerText||j.textContent:v.getContent({format:"text"}),u.href=j?w.getAttrib(j,"href"):"",j?u.target=w.getAttrib(j,"target"):a.settings.default_link_target&&(u.target=a.settings.default_link_target),(t=w.getAttrib(j,"rel"))&&(u.rel=t),(t=w.getAttrib(j,"class"))&&(u["class"]=t),(t=w.getAttrib(j,"title"))&&(u.title=t),m&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){u.text=this.value()}}),b&&(o={type:"listbox",label:"Link list",values:c(b,function(b){b.value=a.convertURL(b.value||b.url,"href")},[{text:"None",value:""}]),onselect:d,value:a.convertURL(u.href,"href"),onPostRender:function(){o=this}}),a.settings.target_list!==!1&&(a.settings.target_list||(a.settings.target_list=[{text:"None",value:""},{text:"New window",value:"_blank"}]),q={name:"target",type:"listbox",label:"Target",values:c(a.settings.target_list)}),a.settings.rel_list&&(p={name:"rel",type:"listbox",label:"Rel",values:c(a.settings.rel_list)}),a.settings.link_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.link_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[b.value]})})})}),a.settings.link_title!==!1&&(s={name:"title",type:"textbox",label:"Title",value:u.title}),l=a.windowManager.open({title:"Insert link",data:u,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:g,onkeyup:f},n,s,e(u.href),o,p,q,r],onSubmit:function(b){function c(b,c){var d=a.selection.getRng();tinymce.util.Delay.setEditorTimeout(a,function(){a.windowManager.confirm(b,function(b){a.selection.setRng(d),c(b)})})}function d(){var b={href:e,target:u.target?u.target:null,rel:u.rel?u.rel:null,"class":u["class"]?u["class"]:null,title:u.title?u.title:null};j?(a.focus(),m&&u.text!=k&&("innerText"in j?j.innerText=u.text:j.textContent=u.text),w.setAttribs(j,b),v.select(j),a.undoManager.add()):m?a.insertContent(w.createHTML("a",b,w.encode(u.text))):a.execCommand("mceInsertLink",!1,b)}var e;return u=tinymce.extend(u,b.data),(e=u.href)?e.indexOf("@")>0&&-1==e.indexOf("//")&&-1==e.indexOf("mailto:")?void c("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(a){a&&(e="mailto:"+e),d()}):a.settings.link_assume_external_targets&&!/^\w+:/i.test(e)||!a.settings.link_assume_external_targets&&/^\s*www[\.|\d\.]/i.test(e)?void c("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(a){a&&(e="http://"+e),d()}):void d():void a.execCommand("unlink")}})}a.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Meta+K",onclick:b(d),stateSelector:"a[href]"}),a.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),a.addShortcut("Meta+K","",b(d)),a.addCommand("mceLink",b(d)),this.showDialog=d,a.addMenuItem("link",{icon:"link",text:"Insert/edit link",shortcut:"Meta+K",onclick:b(d),stateSelector:"a[href]",context:"insert",prependToContext:!0})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/lists/plugin.min.js b/plugins/tinymce/plugins/lists/plugin.min.js new file mode 100644 index 0000000..cf72080 --- /dev/null +++ b/plugins/tinymce/plugins/lists/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("lists",function(a){function b(b){return a.$.contains(a.getBody(),b)}function c(a){return a&&"BR"==a.nodeName}function d(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)&&b(a)}function e(a){return a.parentNode.firstChild==a}function f(a){return a.parentNode.lastChild==a}function g(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}function h(b){return b===a.getBody()}var i=this;a.on("init",function(){function j(a,b){var c=A.isEmpty(a);return b&&A.select("span[data-mce-type=bookmark]").length>0?!1:c}function k(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=A.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):A.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function l(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;1==b.nodeType&&"bookmark"==b.getAttribute("data-mce-type")||c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,A.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=A.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),B.setRng(c)}function m(b,c){var d,e,f,g=A.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=A.create(c),e.tagName===a.settings.forced_root_block&&A.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=A.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(A.create("br",{"data-mce-bogus":"1"})):g.appendChild(A.create("br")),g}function n(){return tinymce.grep(B.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function o(a,b,c){function d(a){tinymce.each(g,function(c){a.parentNode.insertBefore(c,b.parentNode)}),A.remove(a)}var e,f,g,h;for(g=A.select('span[data-mce-type="bookmark"]',a),c=c||m(b),e=A.createRng(),e.setStartAfter(b),e.setEndAfter(a),f=e.extractContents(),h=f.firstChild;h;h=h.firstChild)if("LI"==h.nodeName&&A.isEmpty(h)){A.remove(h);break}A.isEmpty(f)||A.insertAfter(f,a),A.insertAfter(c,a),j(b.parentNode)&&d(b.parentNode),A.remove(b),j(a)&&A.remove(a)}function p(a){var b,c;if(b=a.nextSibling,b&&d(b)&&b.nodeName==a.nodeName&&C(a,b)){for(;c=b.firstChild;)a.appendChild(c);A.remove(b)}if(b=a.previousSibling,b&&d(b)&&b.nodeName==a.nodeName&&C(a,b)){for(;c=b.firstChild;)a.insertBefore(c,a.firstChild);A.remove(b)}}function q(a){tinymce.each(tinymce.grep(A.select("ol,ul",a)),function(a){var b,c=a.parentNode;"LI"==c.nodeName&&c.firstChild==a&&(b=c.previousSibling,b&&"LI"==b.nodeName&&(b.appendChild(a),j(c)&&A.remove(c))),d(c)&&(b=c.previousSibling,b&&"LI"==b.nodeName&&b.appendChild(a))})}function r(a){function b(a){j(a)&&A.remove(a)}var c,g=a.parentNode,i=g.parentNode;return h(g)?!0:"DD"==a.nodeName?(A.rename(a,"DT"),!0):e(a)&&f(a)?("LI"==i.nodeName?(A.insertAfter(a,i),b(i),A.remove(g)):d(i)?A.remove(g,!0):(i.insertBefore(m(a),g),A.remove(g)),!0):e(a)?("LI"==i.nodeName?(A.insertAfter(a,i),a.appendChild(g),b(i)):d(i)?i.insertBefore(a,g):(i.insertBefore(m(a),g),A.remove(a)),!0):f(a)?("LI"==i.nodeName?A.insertAfter(a,i):d(i)?A.insertAfter(a,g):(A.insertAfter(m(a),g),A.remove(a)),!0):("LI"==i.nodeName?(g=i,c=m(a,"LI")):c=d(i)?m(a,"LI"):m(a),o(g,a,c),q(g.parentNode),!0)}function s(a){function b(b,c){var e;if(d(b)){for(;e=a.lastChild.firstChild;)c.appendChild(e);A.remove(b)}}var c,e,f;return"DT"==a.nodeName?(A.rename(a,"DD"),!0):(c=a.previousSibling,c&&d(c)?(c.appendChild(a),!0):c&&"LI"==c.nodeName&&d(c.lastChild)?(c.lastChild.appendChild(a),b(a.lastChild,c.lastChild),!0):(c=a.nextSibling,c&&d(c)?(c.insertBefore(a,c.firstChild),!0):(c=a.previousSibling,c&&"LI"==c.nodeName?(e=A.create(a.parentNode.nodeName),f=A.getStyle(a.parentNode,"listStyleType"),f&&A.setStyle(e,"listStyleType",f),c.appendChild(e),e.appendChild(a),b(a.lastChild,e),!0):!1)))}function t(){var b=n();if(b.length){for(var c=k(B.getRng(!0)),d=0;d<b.length&&(s(b[d])||0!==d);d++);return l(c),a.nodeChanged(),!0}}function u(){var b=n();if(b.length){var c,d,e=k(B.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var g=b[c].parentNode;g&&g!=f;){for(d=b.length;d--;)if(b[d]===g){b.splice(c,1);break}g=g.parentNode}for(c=0;c<b.length&&(r(b[c])||0!==c);c++);return l(e),a.nodeChanged(),!0}}function v(b,e){function f(){function b(a){var b,c;for(b=i[a?"startContainer":"endContainer"],c=i[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=f;){if(g(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var d,e=[],f=a.getBody(),h=b(!0),j=b(),k=[],l=h;l&&(k.push(l),l!=j);l=l.nextSibling);return tinymce.each(k,function(a){if(g(a))return e.push(a),void(d=null);if(A.isBlock(a)||c(a))return c(a)&&A.remove(a),void(d=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(g(b)||!b&&a.parentNode==f)?void(d=null):(d||(d=A.create("p"),a.parentNode.insertBefore(d,a),e.push(d)),void d.appendChild(a))}),e}var h,i=B.getRng(!0),j="LI";"false"!==A.getContentEditable(B.getNode())&&(b=b.toUpperCase(),"DL"==b&&(j="DT"),h=k(i),tinymce.each(f(),function(a){var c,f,g=function(a){var b=A.getStyle(a,"list-style-type"),c=e?e["list-style-type"]:"";return c=null===c?"":c,b===c};f=a.previousSibling,f&&d(f)&&f.nodeName==b&&g(f)?(c=f,a=A.rename(a,j),f.appendChild(a)):(c=A.create(b),a.parentNode.insertBefore(c,a),c.appendChild(a),a=A.rename(a,j)),D(c,e),p(c)}),l(h))}function w(){var b=k(B.getRng(!0)),c=a.getBody();tinymce.each(n(),function(a){var b,e;if(!h(a.parentNode)){if(j(a))return void r(a);for(b=a;b&&b!=c;b=b.parentNode)d(b)&&(e=b);o(e,a)}}),l(b)}function x(a,b){var c=A.getParent(B.getStart(),"OL,UL,DL");if(!h(c))if(c)if(c.nodeName==a)w(a);else{var d=k(B.getRng(!0));D(c,b),p(A.rename(c,a)),l(d)}else v(a,b)}function y(b){return function(){var c=A.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}function z(a){return c(a)?!(!A.isBlock(a.nextSibling)||c(a.previousSibling)):!1}var A=a.dom,B=a.selection,C=function(b,c){var d=a.dom.getStyle(b,"list-style-type",!0),e=a.dom.getStyle(c,"list-style-type",!0);return d===e},D=function(a,b){A.setStyle(a,"list-style-type",b?b["list-style-type"]:null)};i.backspaceDelete=function(e){function f(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),1==f.nodeType&&(f=tinymce.dom.RangeUtils.getNode(f,g)),e=new tinymce.dom.TreeWalker(f,a.getBody()),c&&z(f)&&e.next();f=e[c?"next":"prev2"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function g(a,e){var f,g,i=a.parentNode;if(b(a)&&b(e)){if(d(e.lastChild)&&(g=e.lastChild),i==e.lastChild&&c(i.previousSibling)&&A.remove(i.previousSibling),f=e.lastChild,f&&c(f)&&a.hasChildNodes()&&A.remove(f),j(e,!0)&&A.$(e).empty(),!j(a,!0))for(;f=a.firstChild;)e.appendChild(f);g&&e.appendChild(g),A.remove(a),j(i)&&!h(i)&&A.remove(i)}}if(B.isCollapsed()){var i,m,n,o=A.getParent(B.getStart(),"LI");if(o){if(i=o.parentNode,h(i)&&A.isEmpty(i))return!0;if(m=B.getRng(!0),n=A.getParent(f(m,e),"LI"),n&&n!=o){var p=k(m);return e?g(n,o):g(o,n),l(p),!0}if(!n&&!e&&w(i.nodeName))return!0}}},a.on("BeforeExecCommand",function(b){var c,d=b.command.toLowerCase();return"indent"==d?t()&&(c=!0):"outdent"==d&&u()&&(c=!0),c?(a.fire("ExecCommand",{command:b.command}),b.preventDefault(),!0):void 0}),a.addCommand("InsertUnorderedList",function(a,b){x("UL",b)}),a.addCommand("InsertOrderedList",function(a,b){x("OL",b)}),a.addCommand("InsertDefinitionList",function(a,b){x("DL",b)}),a.addQueryStateHandler("InsertUnorderedList",y("UL")),a.addQueryStateHandler("InsertOrderedList",y("OL")),a.addQueryStateHandler("InsertDefinitionList",y("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?u():t())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var c=a.selection.getSelectedBlocks(),d=!1,f=0,g=c.length;!d&&g>f;f++){var h=c[f].nodeName;d="LI"==h&&e(c[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(d)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?i.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&i.backspaceDelete(!0)&&a.preventDefault()})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/media/moxieplayer.swf b/plugins/tinymce/plugins/media/moxieplayer.swf new file mode 100644 index 0000000..19c771b Binary files /dev/null and b/plugins/tinymce/plugins/media/moxieplayer.swf differ diff --git a/plugins/tinymce/plugins/media/plugin.min.js b/plugins/tinymce/plugins/media/plugin.min.js new file mode 100644 index 0000000..f7eff6c --- /dev/null +++ b/plugins/tinymce/plugins/media/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("media",function(a,b){function c(a){return a=a.toLowerCase(),-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),isNaN(g)||c.value(g)):(f=Math.round(g/j*f),isNaN(f)||b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var m={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};m[p]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},m]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(o,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.allowFullscreen=a.allowFullscreen,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);if(g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type){var i=e.allowFullscreen?' allowFullscreen="1"':"";f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+i+"></iframe>"}else"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),"iframe"!=a&&"object"!=a&&"embed"!=a&&"video"!=a&&"audio"!=a||(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c,d=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){d.comment(a)},cdata:function(a){d.cdata(a)},text:function(a,b){d.text(a,b)},start:function(b,e,f){if(c=!0,"script"!=b&&"noscript"!=b){for(var g=0;g<e.length;g++){if(0===e[g].name.indexOf("on"))return;"style"==e[g].name&&(e[g].value=a.dom.serializeStyle(a.dom.parseStyle(e[g].value),b))}d.start(b,e,f),c=!1}},end:function(a){c||d.end(a)}},new tinymce.html.Schema({})).parse(b),d.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}function l(b,c){var d,e,f,g,h;for(f=b.attributes,g=f.length;g--;)d=f[g].name,e=f[g].value,"width"!==d&&"height"!==d&&"style"!==d&&("data"!=d&&"src"!=d||(e=a.convertURL(e,d)),c.attr("data-mce-p-"+d,e));h=b.firstChild&&b.firstChild.value,h&&(c.attr("data-mce-html",escape(h)),c.firstChild=null)}function m(a){var b,c=a.name;return b=new tinymce.html.Node("img",1),b.shortEnded=!0,l(a,b),b.attr({width:a.attr("width")||"300",height:a.attr("height")||("audio"==c?"30":"150"),style:a.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),b}function n(a){var b,c,d,e=a.name;return b=new tinymce.html.Node("span",1),b.attr({contentEditable:"false",style:a.attr("style"),"data-mce-object":e,"class":"mce-preview-object mce-object-"+e}),l(a,b),c=new tinymce.html.Node(e,1),c.attr({src:a.attr("src"),allowfullscreen:a.attr("allowfullscreen"),width:a.attr("width")||"300",height:a.attr("height")||("audio"==e?"30":"150"),frameborder:"0"}),d=new tinymce.html.Node("span",1),d.attr("class","mce-shim"),b.append(c),b.append(d),b}var o=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\-_]+(?:\?.+)?)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],p=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b){for(var c,e,f,g=b.length;g--;)c=b[g],c.parent&&(c.parent.attr("data-mce-object")||("script"!=c.name||(f=d(c.attr("src"))))&&(f&&(f.width&&c.attr("width",f.width.toString()),f.height&&c.attr("height",f.height.toString())),e="iframe"==c.name&&a.settings.media_live_embeds!==!1&&tinymce.Env.ceFalse?n(c):m(c),c.replace(e)))}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k,l=a.length;l--;)if(c=a[l],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&(k=c.attr("class"),k&&-1!==k.indexOf("mce-preview-object")?d.attr({width:c.firstChild.attr("width"),height:c.firstChild.attr("height")}):d.attr({width:c.attr("width"),height:c.attr("height")})),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var m=f[e].name;0===m.indexOf("data-mce-p-")&&d.attr(m.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("click keyup",function(){var b=a.selection.getNode();b&&a.dom.hasClass(b,"mce-preview-object")&&a.dom.getAttrib(b,"data-mce-selected")&&b.setAttribute("data-mce-selected","2")}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");"audio"!=b&&"script"!=b||a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object]","span[data-mce-object]"]}),a.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:e,context:"insert",prependToContext:!0}),a.on("setContent",function(){a.$("span.mce-preview-object").each(function(b,c){var d=a.$(c);0===d.find("span.mce-shim",c).length&&d.append('<span class="mce-shim"></span>')})}),a.addCommand("mceMedia",e),this.showDialog=e}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/nonbreaking/plugin.min.js b/plugins/tinymce/plugins/nonbreaking/plugin.min.js new file mode 100644 index 0000000..190dc33 --- /dev/null +++ b/plugins/tinymce/plugins/nonbreaking/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("nonbreaking",function(a){var b=a.getParam("nonbreaking_force_tab");if(a.addCommand("mceNonBreaking",function(){a.insertContent(a.plugins.visualchars&&a.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),a.dom.setAttrib(a.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),a.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),a.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),b){var c=+b>1?+b:3;a.on("keydown",function(b){if(9==b.keyCode){if(b.shiftKey)return;b.preventDefault();for(var d=0;c>d;d++)a.execCommand("mceNonBreaking")}})}}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/noneditable/plugin.min.js b/plugins/tinymce/plugins/noneditable/plugin.min.js new file mode 100644 index 0000000..49e9d5a --- /dev/null +++ b/plugins/tinymce/plugins/noneditable/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("noneditable",function(a){function b(a){return function(b){return-1!==(" "+b.attr("class")+" ").indexOf(a)}}function c(b){function c(b){var c=arguments,d=c[c.length-2];return d>0&&'"'==g.charAt(d-1)?b:'<span class="'+h+'" data-mce-content="'+a.dom.encode(c[0])+'">'+a.dom.encode("string"==typeof c[1]?c[1]:c[0])+"</span>"}var d=f.length,g=b.content,h=tinymce.trim(e);if("raw"!=b.format){for(;d--;)g=g.replace(f[d],c);b.content=g}}var d,e,f,g="contenteditable";d=" "+tinymce.trim(a.getParam("noneditable_editable_class","mceEditable"))+" ",e=" "+tinymce.trim(a.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";var h=b(d),i=b(e);f=a.getParam("noneditable_regexp"),f&&!f.length&&(f=[f]),a.on("PreInit",function(){f&&a.on("BeforeSetContent",c),a.parser.addAttributeFilter("class",function(a){for(var b,c=a.length;c--;)b=a[c],h(b)?b.attr(g,"true"):i(b)&&b.attr(g,"false")}),a.serializer.addAttributeFilter(g,function(a){for(var b,c=a.length;c--;)b=a[c],(h(b)||i(b))&&(f&&b.attr("data-mce-content")?(b.name="#text",b.type=3,b.raw=!0,b.value=b.attr("data-mce-content")):b.attr(g,null))})})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/pagebreak/plugin.min.js b/plugins/tinymce/plugins/pagebreak/plugin.min.js new file mode 100644 index 0000000..2a69eba --- /dev/null +++ b/plugins/tinymce/plugins/pagebreak/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("pagebreak",function(a){var b="mce-pagebreak",c=a.getParam("pagebreak_separator","<!-- pagebreak -->"),d=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return"\\"+a}),"gi"),e='<img src="'+tinymce.Env.transparentSrc+'" class="'+b+'" data-mce-resize="false" data-mce-placeholder />';a.addCommand("mcePageBreak",function(){a.settings.pagebreak_split_block?a.insertContent("<p>"+e+"</p>"):a.insertContent(e)}),a.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),a.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),a.on("ResolveName",function(c){"IMG"==c.target.nodeName&&a.dom.hasClass(c.target,b)&&(c.name="pagebreak")}),a.on("click",function(c){c=c.target,"IMG"===c.nodeName&&a.dom.hasClass(c,b)&&a.selection.select(c)}),a.on("BeforeSetContent",function(a){a.content=a.content.replace(d,e)}),a.on("PreInit",function(){a.serializer.addNodeFilter("img",function(b){for(var d,e,f=b.length;f--;)if(d=b[f],e=d.attr("class"),e&&-1!==e.indexOf("mce-pagebreak")){var g=d.parent;if(a.schema.getBlockElements()[g.name]&&a.settings.pagebreak_split_block){g.type=3,g.value=c,g.raw=!0,d.remove();continue}d.type=3,d.value=c,d.raw=!0}})})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/paste/plugin.min.js b/plugins/tinymce/plugins/paste/plugin.min.js new file mode 100644 index 0000000..207f84d --- /dev/null +++ b/plugins/tinymce/plugins/paste/plugin.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){var d,e,f,h,i;for(d=0;d<c.length;d++){e=a,f=c[d],h=f.split(/[.\/]/);for(var j=0;j<h.length-1;++j)e[h[j]]===b&&(e[h[j]]={}),e=e[h[j]];e[h[h.length-1]]=g[f]}if(a.AMDLC_TESTS){i=a.privateModules||{};for(f in g)i[f]=g[f];for(d=0;d<c.length;d++)delete i[c[d]];a.privateModules=i}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br class="Apple-interchange-newline">/g,/<br>$/i])}function g(a){var b=0;return function(){return a+b++}}return{filter:d,innerText:e,trimHtml:f,createIdGenerator:g}}),d("tinymce/pasteplugin/SmartPaste",["tinymce/util/Tools"],function(a){var b=function(a){return/^https?:\/\/[\w\?\-\/+=.&%]+$/i.test(a)},c=function(a){return b(a)&&/.(gif|jpe?g|png)$/.test(a)},d=function(a,b,c){return a.undoManager.extra(function(){c(a,b)},function(){a.insertContent('<img src="'+b+'">')}),!0},e=function(a,b,c){return a.undoManager.extra(function(){c(a,b)},function(){a.execCommand("mceInsertLink",!1,b)}),!0},f=function(a,c,d){return a.selection.isCollapsed()===!1&&b(c)?e(a,c,d):!1},g=function(a,b,e){return c(b)?d(a,b,e):!1},h=function(a,b){return a.insertContent(b,{merge:a.settings.paste_merge_formats!==!1,paste:!0}),!0},i=function(b,c){a.each([f,g,h],function(a){return a(b,c,h)!==!0})},j=function(a,b){a.settings.smart_paste===!1?h(a,b):i(a,b)};return{isImageUrl:c,isAbsoluteUrl:b,insertContent:j}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils","tinymce/pasteplugin/SmartPaste","tinymce/util/Delay"],function(a,b,c,d,e,f){return function(g){function h(a){var b,c=g.dom;if(b=g.fire("BeforePastePreProcess",{content:a}),b=g.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(g.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var d=c.add(g.getBody(),"div",{style:"display:none"},a);b=g.fire("PastePostProcess",{node:d}),c.remove(d),a=b.node.innerHTML}b.isDefaultPrevented()||e.insertContent(g,a)}}function i(a){a=g.dom.encode(a).replace(/\r\n/g,"\n");var b,c=g.dom.getParent(g.selection.getStart(),g.dom.isBlock),e=g.settings.forced_root_block;e&&(b=g.dom.createHTML(e,g.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),c&&/^(PRE|DIV)$/.test(c.nodeName)||!e?a=d.filter(a,[[/\n/g,"<br>"]]):(a=d.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),h(a)}function j(){function b(a){var b,c,e,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(e=f.childNodes[z.startOffset];e&&3==e.nodeType&&!e.data.length;)e=e.nextSibling;if(e)return"BR"==e.tagName&&(c=d.doc.createTextNode("\ufeff"),e.parentNode.insertBefore(c,e),a=d.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),d.remove(c)),b.length?b[0]:void 0}}var c,d=g.dom,e=g.getBody(),f=g.dom.getViewPort(g.getWin()),h=f.y,i=20;if(z=g.selection.getRng(),g.inline&&(c=g.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),z.getClientRects){var j=b(z);if(j)i=h+(j.top-d.getPos(e).y);else{i=h;var k=z.startContainer;k&&(3==k.nodeType&&k.parentNode!=e&&(k=k.parentNode),1==k.nodeType&&(i=d.getPos(k,c||e).y))}}y=d.add(g.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},E),(a.ie||a.gecko)&&d.setStyle(y,"left","rtl"==d.getStyle(e,"direction",!0)?65535:-65535),d.bind(y,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),y.focus(),g.selection.select(y,!0)}function k(){if(y){for(var a;a=g.dom.get("mcepastebin");)g.dom.remove(a),g.dom.unbind(a);z&&g.selection.setRng(z)}y=z=null}function l(){var a,b,c,d,e="";for(a=g.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),d=c.innerHTML,e!=E&&(e+=d);return e}function m(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&-1==c.indexOf(F)&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b}function n(a){return m(a.clipboardData||g.getDoc().dataTransfer)}function o(a){return v(a,"text/html")||v(a,"text/plain")}function p(a){var b;return b=a.indexOf(","),-1!==b?a.substr(b+1):null}function q(a,b){return a.images_dataimg_filter?a.images_dataimg_filter(b):!0}function r(a,b,c){a&&(g.selection.setRng(a),a=null);var d=b.result,e=p(d),f=new Image;if(f.src=d,q(g.settings,f)){var i,j,k=g.editorUpload.blobCache;j=k.findFirst(function(a){return a.base64()===e}),j?i=j:(i=k.create(G(),c,e),k.add(i)),h('<img src="'+i.blobUri()+'">')}else h('<img src="'+d+'">')}function s(a,b){function c(c){var d,e,f,g=!1;if(c)for(d=0;d<c.length;d++)if(e=c[d],/^image\/(jpeg|png|gif|bmp)$/.test(e.type)){var h=e.getAsFile?e.getAsFile():e;f=new FileReader,f.onload=r.bind(null,b,f,h),f.readAsDataURL(h),a.preventDefault(),g=!0}return g}var d=a.clipboardData||a.dataTransfer;return g.settings.paste_data_images&&d?c(d.items)||c(d.files):void 0}function t(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function u(a){return b.getCaretRangeFromPoint(a.clientX,a.clientY,g.getDoc())}function v(a,b){return b in a&&a[b].length>0}function w(a){return c.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function x(){function b(a,b,c){var e;return v(a,"text/html")?e=a["text/html"]:(e=l(),e==E&&(c=!0)),e=d.trimHtml(e),y&&y.firstChild&&"mcepastebin"===y.firstChild.id&&(c=!0),k(),e.length||(c=!0),c&&(e=v(a,"text/plain")&&-1==e.indexOf("</p>")?a["text/plain"]:d.innerText(e)),e==E?void(b||g.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(c?i(e):h(e))}function c(a){return 0===a["text/plain"].indexOf("file://")}g.on("keydown",function(b){function c(a){w(a)&&!a.isDefaultPrevented()&&k()}if(w(b)&&!b.isDefaultPrevented()){if(A=b.shiftKey&&86==b.keyCode,A&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),C=(new Date).getTime(),a.ie&&A)return b.preventDefault(),void g.fire("paste",{ieFake:!0});k(),j(),g.once("keyup",c),g.once("paste",function(){g.off("keyup",c)})}});var e=function(){return z||g.selection.getRng()};g.on("paste",function(c){var d=(new Date).getTime(),h=n(c),i=(new Date).getTime()-d,m=(new Date).getTime()-C-i<1e3,p="text"==B.pasteFormat||A;return A=!1,c.isDefaultPrevented()||t(c)?void k():!o(h)&&s(c,e())?void k():(m||c.preventDefault(),!a.ie||m&&!c.ieFake||(j(),g.dom.bind(y,"paste",function(a){a.stopPropagation()}),g.getDoc().execCommand("Paste",!1,null),h["text/html"]=l()),void(v(h,"text/html")?(c.preventDefault(),b(h,m,p)):f.setEditorTimeout(g,function(){b(h,m,p)},0)))}),g.on("dragstart dragend",function(a){D="dragstart"==a.type}),g.on("drop",function(a){var b,e;if(e=u(a),!a.isDefaultPrevented()&&!D&&(b=m(a.dataTransfer),(o(b)&&!c(b)||!s(a,e))&&e&&g.settings.paste_filter_drop!==!1)){var j=b["mce-internal"]||b["text/html"]||b["text/plain"];j&&(a.preventDefault(),f.setEditorTimeout(g,function(){g.undoManager.transact(function(){b["mce-internal"]&&g.execCommand("Delete"),g.selection.setRng(e),j=d.trimHtml(j),b["text/html"]?h(j):i(j)})}))}}),g.on("dragover dragend",function(a){g.settings.paste_data_images&&a.preventDefault()})}var y,z,A,B=this,C=0,D=!1,E="%MCEPASTEBIN%",F="data:text/mce-internal,",G=d.createIdGenerator("mceclip");B.pasteHtml=h,B.pasteText=i,B.pasteImageData=s,g.on("preInit",function(){x(),g.parser.addNodeFilter("img",function(b,c,d){function e(a){return a.data&&a.data.paste===!0}function f(b){b.attr("data-mce-object")||k===a.transparentSrc||b.remove()}function h(a){return 0===a.indexOf("webkit-fake-url")}function i(a){return 0===a.indexOf("data:")}if(!g.settings.paste_data_images&&e(d))for(var j=b.length;j--;){var k=b[j].attributes.map.src;k&&(h(k)?f(b[j]):!g.settings.allow_html_data_urls&&i(k)&&f(b[j]))}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(q=q.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),q=q.replace(/<br class="?Apple-interchange-newline"?>/gi,""),o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({validate:k.validate},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){return e||a.settings.paste_plaintext_inform===!1}function g(){if("text"==h.pasteFormat)this.active(!1),h.pasteFormat="html",a.fire("PastePlainTextToggle",{state:!1});else if(h.pasteFormat="text",this.active(!0),!f()){var b=a.translate("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.");a.notificationManager.open({text:b,type:"info"}),e=!0,a.fire("PastePlainTextToggle",{state:!0})}a.focus()}var h,i=this,j=a.settings;i.clipboard=h=new b(a),i.quirks=new d(a),i.wordFilter=new c(a),a.settings.paste_as_text&&(i.clipboard.pasteFormat="text"),j.paste_preprocess&&a.on("PastePreProcess",function(a){j.paste_preprocess.call(i,i,a)}),j.paste_postprocess&&a.on("PastePostProcess",function(a){j.paste_postprocess.call(i,i,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&i.clipboard.pasteHtml(b.content),b.text&&i.clipboard.pasteText(b.text)}),a.settings.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:g,active:"text"==i.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:h.pasteFormat,onclick:g})})}),f(["tinymce/pasteplugin/Utils"])}(this); \ No newline at end of file diff --git a/plugins/tinymce/plugins/preview/plugin.min.js b/plugins/tinymce/plugins/preview/plugin.min.js new file mode 100644 index 0000000..02ec266 --- /dev/null +++ b/plugins/tinymce/plugins/preview/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("preview",function(a){var b=a.settings,c=!tinymce.Env.ie;a.addCommand("mcePreview",function(){a.windowManager.open({title:"Preview",width:parseInt(a.getParam("plugin_preview_width","650"),10),height:parseInt(a.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(c?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var d,e="";e+='<base href="'+a.documentBaseURI.getURI()+'">',tinymce.each(a.contentCSS,function(b){e+='<link type="text/css" rel="stylesheet" href="'+a.documentBaseURI.toAbsolute(b)+'">'});var f=b.body_id||"tinymce";-1!=f.indexOf("=")&&(f=a.getParam("body_id","","hash"),f=f[a.id]||f);var g=b.body_class||"";-1!=g.indexOf("=")&&(g=a.getParam("body_class","","hash"),g=g[a.id]||"");var h='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);</script> ',i=a.settings.directionality?' dir="'+a.settings.directionality+'"':"";if(d="<!DOCTYPE html><html><head>"+e+'</head><body id="'+f+'" class="mce-content-body '+g+'"'+i+">"+a.getContent()+h+"</body></html>",c)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(d);else{var j=this.getEl("body").firstChild.contentWindow.document;j.open(),j.write(d),j.close()}}})}),a.addButton("preview",{title:"Preview",cmd:"mcePreview"}),a.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/print/plugin.min.js b/plugins/tinymce/plugins/print/plugin.min.js new file mode 100644 index 0000000..e91ff54 --- /dev/null +++ b/plugins/tinymce/plugins/print/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("print",function(a){a.addCommand("mcePrint",function(){a.getWin().print()}),a.addButton("print",{title:"Print",cmd:"mcePrint"}),a.addShortcut("Meta+P","","mcePrint"),a.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/save/plugin.min.js b/plugins/tinymce/plugins/save/plugin.min.js new file mode 100644 index 0000000..bbe0ec4 --- /dev/null +++ b/plugins/tinymce/plugins/save/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("save",function(a){function b(){var b;return b=tinymce.DOM.getParent(a.id,"form"),!a.getParam("save_enablewhendirty",!0)||a.isDirty()?(tinymce.triggerSave(),a.getParam("save_onsavecallback")?(a.execCallback("save_onsavecallback",a),void a.nodeChanged()):void(b?(a.setDirty(!1),b.onsubmit&&!b.onsubmit()||("function"==typeof b.submit?b.submit():c(a.translate("Error: Form submit field collision."))),a.nodeChanged()):c(a.translate("Error: No form element found.")))):void 0}function c(b){a.notificationManager.open({text:b,type:"error"})}function d(){var b=tinymce.trim(a.startContent);return a.getParam("save_oncancelcallback")?void a.execCallback("save_oncancelcallback",a):(a.setContent(b),a.undoManager.clear(),void a.nodeChanged())}function e(){var b=this;a.on("nodeChange dirty",function(){b.disabled(a.getParam("save_enablewhendirty",!0)&&!a.isDirty())})}a.addCommand("mceSave",b),a.addCommand("mceCancel",d),a.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:e}),a.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:e}),a.addShortcut("Meta+S","","mceSave")}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/searchreplace/plugin.min.js b/plugins/tinymce/plugins/searchreplace/plugin.min.js new file mode 100644 index 0000000..3c40122 --- /dev/null +++ b/plugins/tinymce/plugins/searchreplace/plugin.min.js @@ -0,0 +1 @@ +!function(){function a(a){return a&&1==a.nodeType&&"false"===a.contentEditable}function b(b,c,d,e,f){function g(a,b){if(b=b||0,!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var c=a.index;if(b>0){var d=a[b];if(!d)throw"Invalid capture group";c+=a[0].indexOf(d),a[0]=d}return[c,c+a[0].length,[a[0]]]}function h(b){var c;if(3===b.nodeType)return b.data;if(o[b.nodeName]&&!n[b.nodeName])return"";if(c="",a(b))return"\n";if((n[b.nodeName]||p[b.nodeName])&&(c+="\n"),b=b.firstChild)do c+=h(b);while(b=b.nextSibling);return c}function i(b,c,d){var e,f,g,h,i=[],j=0,k=b,l=c.shift(),m=0;a:for(;;){if((n[k.nodeName]||p[k.nodeName]||a(k))&&j++,3===k.nodeType&&(!f&&k.length+j>=l[1]?(f=k,h=l[1]-j):e&&i.push(k),!e&&k.length+j>l[0]&&(e=k,g=l[0]-j),j+=k.length),e&&f){if(k=d({startNode:e,startNodeIndex:g,endNode:f,endNodeIndex:h,innerNodes:i,match:l[2],matchIndex:m}),j-=f.length-h,e=null,f=null,i=[],l=c.shift(),m++,!l)break}else if(o[k.nodeName]&&!n[k.nodeName]||!k.firstChild){if(k.nextSibling){k=k.nextSibling;continue}}else if(!a(k)){k=k.firstChild;continue}for(;;){if(k.nextSibling){k=k.nextSibling;break}if(k.parentNode===b)break a;k=k.parentNode}}}function j(a){var b;if("function"!=typeof a){var c=a.nodeType?a:m.createElement(a);b=function(a,b){var d=c.cloneNode(!1);return d.setAttribute("data-mce-index",b),a&&d.appendChild(m.createTextNode(a)),d}}else b=a;return function(a){var c,d,e,f=a.startNode,g=a.endNode,h=a.matchIndex;if(f===g){var i=f;e=i.parentNode,a.startNodeIndex>0&&(c=m.createTextNode(i.data.substring(0,a.startNodeIndex)),e.insertBefore(c,i));var j=b(a.match[0],h);return e.insertBefore(j,i),a.endNodeIndex<i.length&&(d=m.createTextNode(i.data.substring(a.endNodeIndex)),e.insertBefore(d,i)),i.parentNode.removeChild(i),j}c=m.createTextNode(f.data.substring(0,a.startNodeIndex)),d=m.createTextNode(g.data.substring(a.endNodeIndex));for(var k=b(f.data.substring(a.startNodeIndex),h),l=[],n=0,o=a.innerNodes.length;o>n;++n){var p=a.innerNodes[n],q=b(p.data,h);p.parentNode.replaceChild(q,p),l.push(q)}var r=b(g.data.substring(0,a.endNodeIndex),h);return e=f.parentNode,e.insertBefore(c,f),e.insertBefore(k,f),e.removeChild(f),e=g.parentNode,e.insertBefore(r,g),e.insertBefore(d,g),e.removeChild(g),r}}var k,l,m,n,o,p,q=[],r=0;if(m=c.ownerDocument,n=f.getBlockElements(),o=f.getWhiteSpaceElements(),p=f.getShortEndedElements(),l=h(c)){if(b.global)for(;k=b.exec(l);)q.push(g(k,e));else k=l.match(b),q.push(g(k,e));return q.length&&(r=q.length,i(c,q,j(d))),r}}function c(a){function c(){function b(){f.statusbar.find("#next").disabled(!g(l+1).length),f.statusbar.find("#prev").disabled(!g(l-1).length)}function c(){a.windowManager.alert("Could not find the specified string.",function(){f.find("#find")[0].focus()})}var d,e={};d=tinymce.trim(a.selection.getContent({format:"text"}));var f=a.windowManager.open({layout:"flex",pack:"center",align:"center",onClose:function(){a.focus(),k.done()},onSubmit:function(a){var d,h,i,j;return a.preventDefault(),h=f.find("#case").checked(),j=f.find("#words").checked(),i=f.find("#find").value(),i.length?e.text==i&&e.caseState==h&&e.wholeWord==j?0===g(l+1).length?void c():(k.next(),void b()):(d=k.find(i,h,j),d||c(),f.statusbar.items().slice(1).disabled(0===d),b(),void(e={text:i,caseState:h,wholeWord:j})):(k.done(!1),void f.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",subtype:"primary",onclick:function(){f.submit()}},{text:"Replace",disabled:!0,onclick:function(){k.replace(f.find("#replace").value())||(f.statusbar.items().slice(1).disabled(!0),l=-1,e={})}},{text:"Replace all",disabled:!0,onclick:function(){k.replace(f.find("#replace").value(),!0,!0),f.statusbar.items().slice(1).disabled(!0),e={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){k.prev(),b()}},{text:"Next",name:"next",disabled:!0,onclick:function(){k.next(),b()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:d},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}})}function d(a){var b=a.getAttribute("data-mce-index");return"number"==typeof b?""+b:b}function e(c){var d,e;return e=a.dom.create("span",{"data-mce-bogus":1}),e.className="mce-match-marker",d=a.getBody(),k.done(!1),b(c,d,e,!1,a.schema)}function f(a){var b=a.parentNode;a.firstChild&&b.insertBefore(a.firstChild,a),a.parentNode.removeChild(a)}function g(b){var c,e=[];if(c=tinymce.toArray(a.getBody().getElementsByTagName("span")),c.length)for(var f=0;f<c.length;f++){var g=d(c[f]);null!==g&&g.length&&g===b.toString()&&e.push(c[f])}return e}function h(b){var c=l,d=a.dom;b=b!==!1,b?c++:c--,d.removeClass(g(l),"mce-match-marker-selected");var e=g(c);return e.length?(d.addClass(g(c),"mce-match-marker-selected"),a.selection.scrollIntoView(e[0]),c):-1}function i(b){var c=a.dom,d=b.parentNode;c.remove(b),c.isEmpty(d)&&c.remove(d)}function j(a){var b=d(a);return null!==b&&b.length>0}var k=this,l=-1;k.init=function(a){a.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Meta+F",onclick:c,separator:"before",context:"edit"}),a.addButton("searchreplace",{tooltip:"Find and replace",shortcut:"Meta+F",onclick:c}),a.addCommand("SearchReplace",c),a.shortcuts.add("Meta+F","",c)},k.find=function(a,b,c){a=a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),a=c?"\\b"+a+"\\b":a;var d=e(new RegExp(a,b?"g":"gi"));return d&&(l=-1,l=h(!0)),d},k.next=function(){var a=h(!0);-1!==a&&(l=a)},k.prev=function(){var a=h(!1);-1!==a&&(l=a)},k.replace=function(b,c,e){var h,m,n,o,p,q,r=l;for(c=c!==!1,n=a.getBody(),m=tinymce.grep(tinymce.toArray(n.getElementsByTagName("span")),j),h=0;h<m.length;h++){var s=d(m[h]);if(o=p=parseInt(s,10),e||o===l){for(b.length?(m[h].firstChild.nodeValue=b,f(m[h])):i(m[h]);m[++h];){if(o=parseInt(d(m[h]),10),o!==p){h--;break}i(m[h])}c&&r--}else p>l&&m[h].setAttribute("data-mce-index",p-1)}return a.undoManager.add(),l=r,c?(q=g(r+1).length>0,k.next()):(q=g(r-1).length>0,k.prev()),!e&&q},k.done=function(b){var c,e,g,h;for(e=tinymce.toArray(a.getBody().getElementsByTagName("span")),c=0;c<e.length;c++){var i=d(e[c]);null!==i&&i.length&&(i===l.toString()&&(g||(g=e[c].firstChild),h=e[c].firstChild),f(e[c]))}if(g&&h){var j=a.dom.createRng();return j.setStart(g,0),j.setEnd(h,h.data.length),b!==!1&&a.selection.setRng(j),j}}}tinymce.PluginManager.add("searchreplace",c)}(); \ No newline at end of file diff --git a/plugins/tinymce/plugins/spellchecker/plugin.min.js b/plugins/tinymce/plugins/spellchecker/plugin.min.js new file mode 100644 index 0000000..95011bb --- /dev/null +++ b/plugins/tinymce/plugins/spellchecker/plugin.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){var d,e,f,h,i;for(d=0;d<c.length;d++){e=a,f=c[d],h=f.split(/[.\/]/);for(var j=0;j<h.length-1;++j)e[h[j]]===b&&(e[h[j]]={}),e=e[h[j]];e[h[h.length-1]]=g[f]}if(a.AMDLC_TESTS){i=a.privateModules||{};for(f in g)i[f]=g[f];for(d=0;d<c.length;d++)delete i[c[d]];a.privateModules=i}}var g={};d("tinymce/spellcheckerplugin/DomTextMatcher",[],function(){function a(a){return a&&1==a.nodeType&&"false"===a.contentEditable}return function(b,c){function d(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";return{start:a.index,end:a.index+a[0].length,text:a[0],data:b}}function e(b){var c;if(3===b.nodeType)return b.data;if(y[b.nodeName]&&!x[b.nodeName])return"";if(a(b))return"\n";if(c="",(x[b.nodeName]||z[b.nodeName])&&(c+="\n"),b=b.firstChild)do c+=e(b);while(b=b.nextSibling);return c}function f(b,c,d){var e,f,g,h,i,j=[],k=0,l=b,m=0;c=c.slice(0),c.sort(function(a,b){return a.start-b.start}),i=c.shift();a:for(;;){if((x[l.nodeName]||z[l.nodeName]||a(l))&&k++,3===l.nodeType&&(!f&&l.length+k>=i.end?(f=l,h=i.end-k):e&&j.push(l),!e&&l.length+k>i.start&&(e=l,g=i.start-k),k+=l.length),e&&f){if(l=d({startNode:e,startNodeIndex:g,endNode:f,endNodeIndex:h,innerNodes:j,match:i.text,matchIndex:m}),k-=f.length-h,e=null,f=null,j=[],i=c.shift(),m++,!i)break}else if(y[l.nodeName]&&!x[l.nodeName]||!l.firstChild){if(l.nextSibling){l=l.nextSibling;continue}}else if(!a(l)){l=l.firstChild;continue}for(;;){if(l.nextSibling){l=l.nextSibling;break}if(l.parentNode===b)break a;l=l.parentNode}}}function g(a){function b(b,c){var d=A[c];d.stencil||(d.stencil=a(d));var e=d.stencil.cloneNode(!1);return e.setAttribute("data-mce-index",c),b&&e.appendChild(B.doc.createTextNode(b)),e}return function(a){var c,d,e,f=a.startNode,g=a.endNode,h=a.matchIndex,i=B.doc;if(f===g){var j=f;e=j.parentNode,a.startNodeIndex>0&&(c=i.createTextNode(j.data.substring(0,a.startNodeIndex)),e.insertBefore(c,j));var k=b(a.match,h);return e.insertBefore(k,j),a.endNodeIndex<j.length&&(d=i.createTextNode(j.data.substring(a.endNodeIndex)),e.insertBefore(d,j)),j.parentNode.removeChild(j),k}c=i.createTextNode(f.data.substring(0,a.startNodeIndex)),d=i.createTextNode(g.data.substring(a.endNodeIndex));for(var l=b(f.data.substring(a.startNodeIndex),h),m=[],n=0,o=a.innerNodes.length;o>n;++n){var p=a.innerNodes[n],q=b(p.data,h);p.parentNode.replaceChild(q,p),m.push(q)}var r=b(g.data.substring(0,a.endNodeIndex),h);return e=f.parentNode,e.insertBefore(c,f),e.insertBefore(l,f),e.removeChild(f),e=g.parentNode,e.insertBefore(r,g),e.insertBefore(d,g),e.removeChild(g),r}}function h(a){var b=a.parentNode;b.insertBefore(a.firstChild,a),a.parentNode.removeChild(a)}function i(a){var c=b.getElementsByTagName("*"),d=[];a="number"==typeof a?""+a:null;for(var e=0;e<c.length;e++){var f=c[e],g=f.getAttribute("data-mce-index");null!==g&&g.length&&(g!==a&&null!==a||d.push(f))}return d}function j(a){for(var b=A.length;b--;)if(A[b]===a)return b;return-1}function k(a){var b=[];return l(function(c,d){a(c,d)&&b.push(c)}),A=b,this}function l(a){for(var b=0,c=A.length;c>b&&a(A[b],b)!==!1;b++);return this}function m(a){return A.length&&f(b,A,g(a)),this}function n(a,b){if(w&&a.global)for(;v=a.exec(w);)A.push(d(v,b));return this}function o(a){var b,c=i(a?j(a):null);for(b=c.length;b--;)h(c[b]);return this}function p(a){return A[a.getAttribute("data-mce-index")]}function q(a){return i(j(a))[0]}function r(a,b,c){return A.push({start:a,end:a+b,text:w.substr(a,b),data:c}),this}function s(a){var b=i(j(a)),d=c.dom.createRng();return d.setStartBefore(b[0]),d.setEndAfter(b[b.length-1]),d}function t(a,b){var d=s(a);return d.deleteContents(),b.length>0&&d.insertNode(c.dom.doc.createTextNode(b)),d}function u(){return A.splice(0,A.length),o(),this}var v,w,x,y,z,A=[],B=c.dom;return x=c.schema.getBlockElements(),y=c.schema.getWhiteSpaceElements(),z=c.schema.getShortEndedElements(),w=e(b),{text:w,matches:A,each:l,filter:k,reset:u,matchFromElement:p,elementFromMatch:q,find:n,add:r,wrap:m,unwrap:o,replace:t,rangeFromMatch:s,indexOf:j}}}),d("tinymce/spellcheckerplugin/Plugin",["tinymce/spellcheckerplugin/DomTextMatcher","tinymce/PluginManager","tinymce/util/Tools","tinymce/ui/Menu","tinymce/dom/DOMUtils","tinymce/util/XHR","tinymce/util/URI","tinymce/util/JSON"],function(a,b,c,d,e,f,g,h){b.add("spellchecker",function(b,i){function j(){return E.textMatcher||(E.textMatcher=new a(b.getBody(),b)),E.textMatcher}function k(a,b){var d=[];return c.each(b,function(a){d.push({selectable:!0,text:a.name,data:a.value})}),d}function l(a){for(var b in a)return!1;return!0}function m(a,f){var g=[],h=A[a];c.each(h,function(a){g.push({text:a,onclick:function(){b.insertContent(b.dom.encode(a)),b.dom.remove(f),r()}})}),g.push({text:"-"}),D&&g.push({text:"Add to Dictionary",onclick:function(){s(a,f)}}),g.push.apply(g,[{text:"Ignore",onclick:function(){t(a,f)}},{text:"Ignore all",onclick:function(){t(a,f,!0)}}]),C=new d({items:g,context:"contextmenu",onautohide:function(a){-1!=a.target.className.indexOf("spellchecker")&&a.preventDefault()},onhide:function(){C.remove(),C=null}}),C.renderTo(document.body);var i=e.DOM.getPos(b.getContentAreaContainer()),j=b.dom.getPos(f[0]),k=b.dom.getRoot();"BODY"==k.nodeName?(j.x-=k.ownerDocument.documentElement.scrollLeft||k.scrollLeft,j.y-=k.ownerDocument.documentElement.scrollTop||k.scrollTop):(j.x-=k.scrollLeft,j.y-=k.scrollTop),i.x+=j.x,i.y+=j.y,C.moveTo(i.x,i.y+f[0].offsetHeight)}function n(){return b.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g")}function o(a,d,e,j){var k={method:a,lang:F.spellchecker_language},l="";k["addToDictionary"==a?"word":"text"]=d,c.each(k,function(a,b){l&&(l+="&"),l+=b+"="+encodeURIComponent(a)}),f.send({url:new g(i).toAbsolute(F.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:l,success:function(a){if(a=h.parse(a))a.error?j(a.error):e(a);else{var c=b.translate("Server response wasn't proper JSON.");j(c)}},error:function(){var a=b.translate("The spelling service was not found: (")+F.spellchecker_rpc_url+b.translate(")");j(a)}})}function p(a,b,c,d){var e=F.spellchecker_callback||o;e.call(E,a,b,c,d)}function q(){function a(a){b.notificationManager.open({text:a,type:"error"}),b.setProgressState(!1),u()}u()||(b.setProgressState(!0),p("spellcheck",j().text,y,a),b.focus())}function r(){b.dom.select("span.mce-spellchecker-word").length||u()}function s(a,c){b.setProgressState(!0),p("addToDictionary",a,function(){b.setProgressState(!1),b.dom.remove(c,!0),r()},function(a){b.notificationManager.open({text:a,type:"error"}),b.setProgressState(!1)})}function t(a,d,e){b.selection.collapse(),e?c.each(b.dom.select("span.mce-spellchecker-word"),function(c){c.getAttribute("data-mce-word")==a&&b.dom.remove(c,!0)}):b.dom.remove(d,!0),r()}function u(){return j().reset(),E.textMatcher=null,B?(B=!1,b.fire("SpellcheckEnd"),!0):void 0}function v(a){var b=a.getAttribute("data-mce-index");return"number"==typeof b?""+b:b}function w(a){var d,e=[];if(d=c.toArray(b.getBody().getElementsByTagName("span")),d.length)for(var f=0;f<d.length;f++){var g=v(d[f]);null!==g&&g.length&&g===a.toString()&&e.push(d[f])}return e}function x(a){var b=F.spellchecker_language;a.control.items().each(function(a){a.active(a.settings.data===b)})}function y(a){var c;if(a.words?(D=!!a.dictionary,c=a.words):c=a,b.setProgressState(!1),l(c)){var d=b.translate("No misspellings found.");return b.notificationManager.open({text:d,type:"info"}),void(B=!1)}A=c,j().find(n()).filter(function(a){return!!c[a.text]}).wrap(function(a){return b.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":a.text})}),B=!0,b.fire("SpellcheckStart")}var z,A,B,C,D,E=this,F=b.settings,G=F.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";z=k("Language",c.map(G.split(","),function(a){return a=a.split("="),{name:a[0],value:a[1]}})),b.on("click",function(a){var c=a.target;if("mce-spellchecker-word"==c.className){a.preventDefault();var d=w(v(c));if(d.length>0){var e=b.dom.createRng();e.setStartBefore(d[0]),e.setEndAfter(d[d.length-1]),b.selection.setRng(e),m(c.getAttribute("data-mce-word"),d)}}}),b.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:q,selectable:!0,onPostRender:function(){var a=this;a.active(B),b.on("SpellcheckStart SpellcheckEnd",function(){a.active(B)})}});var H={tooltip:"Spellcheck",onclick:q,onPostRender:function(){var a=this;b.on("SpellcheckStart SpellcheckEnd",function(){a.active(B)})}};z.length>1&&(H.type="splitbutton",H.menu=z,H.onshow=x,H.onselect=function(a){F.spellchecker_language=a.control.settings.data}),b.addButton("spellchecker",H),b.addCommand("mceSpellCheck",q),b.on("remove",function(){C&&(C.remove(),C=null)}),b.on("change",r),this.getTextMatcher=j,this.getWordCharPattern=n,this.markErrors=y,this.getLanguage=function(){return F.spellchecker_language},F.spellchecker_language=F.spellchecker_language||F.language||"en"})}),f(["tinymce/spellcheckerplugin/DomTextMatcher"])}(this); \ No newline at end of file diff --git a/plugins/tinymce/plugins/tabfocus/plugin.min.js b/plugins/tinymce/plugins/tabfocus/plugin.min.js new file mode 100644 index 0000000..df420ac --- /dev/null +++ b/plugins/tinymce/plugins/tabfocus/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("tabfocus",function(a){function b(a){9!==a.keyCode||a.ctrlKey||a.altKey||a.metaKey||a.preventDefault()}function c(b){function c(c){function f(a){return"BODY"===a.nodeName||"hidden"!=a.type&&"none"!=a.style.display&&"hidden"!=a.style.visibility&&f(a.parentNode)}function i(a){return/INPUT|TEXTAREA|BUTTON/.test(a.tagName)&&tinymce.get(b.id)&&-1!=a.tabIndex&&f(a)}if(h=d.select(":input:enabled,*[tabindex]:not(iframe)"),e(h,function(b,c){return b.id==a.id?(g=c,!1):void 0}),c>0){for(j=g+1;j<h.length;j++)if(i(h[j]))return h[j]}else for(j=g-1;j>=0;j--)if(i(h[j]))return h[j];return null}var g,h,i,j;if(!(9!==b.keyCode||b.ctrlKey||b.altKey||b.metaKey||b.isDefaultPrevented())&&(i=f(a.getParam("tab_focus",a.getParam("tabfocus_elements",":prev,:next"))),1==i.length&&(i[1]=i[0],i[0]=":prev"),h=b.shiftKey?":prev"==i[0]?c(-1):d.get(i[0]):":next"==i[1]?c(1):d.get(i[1]))){var k=tinymce.get(h.id||h.name);h.id&&k?k.focus():tinymce.util.Delay.setTimeout(function(){tinymce.Env.webkit||window.focus(),h.focus()},10),b.preventDefault()}}var d=tinymce.DOM,e=tinymce.each,f=tinymce.explode;a.on("init",function(){a.inline&&tinymce.DOM.setAttrib(a.getBody(),"tabIndex",null),a.on("keyup",b),tinymce.Env.gecko?a.on("keypress keydown",c):a.on("keydown",c)})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/table/plugin.min.js b/plugins/tinymce/plugins/table/plugin.min.js new file mode 100644 index 0000000..019acc5 --- /dev/null +++ b/plugins/tinymce/plugins/table/plugin.min.js @@ -0,0 +1,2 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],g=0;g<a.length;++g){if(c=f[a[g]]||e(a[g]),!c)throw"module definition dependecy not found: "+a[g];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){f[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}var f={};d("tinymce/tableplugin/Utils",["tinymce/Env"],function(a){function b(a,b){return parseInt(a.getAttribute(b)||1,10)}function c(b){(!a.ie||a.ie>9)&&(b.hasChildNodes()||(b.innerHTML='<br data-mce-bogus="1" />'))}return{getSpanVal:b,paddCell:c}}),d("tinymce/tableplugin/TableGrid",["tinymce/util/Tools","tinymce/Env","tinymce/tableplugin/Utils"],function(a,c,d){var e=a.each,f=d.getSpanVal;return function(g,h,i){function j(){g.$("td[data-mce-selected],th[data-mce-selected]").removeAttr("data-mce-selected")}function k(a){return a===g.getBody()}function l(b,c){return b?(c=a.map(c.split(","),function(a){return a.toLowerCase()}),a.grep(b.childNodes,function(b){return-1!==a.inArray(c,b.nodeName.toLowerCase())})):[]}function m(){var a=0;O=[],P=0,e(["thead","tbody","tfoot"],function(b){var c=l(h,b)[0],d=l(c,"tr");e(d,function(c,d){d+=a,e(l(c,"td,th"),function(a,c){var e,g,h,i;if(O[d])for(;O[d][c];)c++;for(h=f(a,"rowspan"),i=f(a,"colspan"),g=d;d+h>g;g++)for(O[g]||(O[g]=[]),e=c;c+i>e;e++)O[g][e]={part:b,real:g==d&&e==c,elm:a,rowspan:h,colspan:i};P=Math.max(P,c+1)})}),a+=d.length})}function n(a){return g.fire("newrow",{node:a}),a}function o(a){return g.fire("newcell",{node:a}),a}function p(a,b){return a=a.cloneNode(b),a.removeAttribute("id"),a}function q(a,b){var c;return c=O[b],c?c[a]:void 0}function r(a,b,c){a&&(c=parseInt(c,10),1===c?a.removeAttribute(b,1):a.setAttribute(b,c,1))}function s(a){return a&&(!!T.getAttrib(a.elm,"data-mce-selected")||a==i)}function t(){var a=[];return e(h.rows,function(b){e(b.cells,function(c){return T.getAttrib(c,"data-mce-selected")||i&&c==i.elm?(a.push(b),!1):void 0})}),a}function u(){var a=T.createRng();k(h)||(a.setStartAfter(h),a.setEndAfter(h),S.setRng(a),T.remove(h))}function v(b){var f,h={};return g.settings.table_clone_elements!==!1&&(h=a.makeMap((g.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)),a.walk(b,function(a){var d;return 3==a.nodeType?(e(T.getParents(a.parentNode,null,b).reverse(),function(a){h[a.nodeName]&&(a=p(a,!1),f?d&&d.appendChild(a):f=d=a,d=a)}),d&&(d.innerHTML=c.ie&&c.ie<10?"&nbsp;":'<br data-mce-bogus="1" />'),!1):void 0},"childNodes"),b=p(b,!1),o(b),r(b,"rowSpan",1),r(b,"colSpan",1),f?b.appendChild(f):d.paddCell(b),b}function w(){var a,b=T.createRng();return e(T.select("tr",h),function(a){0===a.cells.length&&T.remove(a)}),0===T.select("tr",h).length?(b.setStartBefore(h),b.setEndBefore(h),S.setRng(b),void T.remove(h)):(e(T.select("thead,tbody,tfoot",h),function(a){0===a.rows.length&&T.remove(a)}),m(),void(Q&&(a=O[Math.min(O.length-1,Q.y)],a&&(S.select(a[Math.min(a.length-1,Q.x)].elm,!0),S.collapse(!0)))))}function x(a,b,c,d){var e,f,g,h,i;for(e=O[b][a].elm.parentNode,g=1;c>=g;g++)if(e=T.getNext(e,"tr")){for(f=a;f>=0;f--)if(i=O[b+g][f].elm,i.parentNode==e){for(h=1;d>=h;h++)T.insertAfter(v(i),i);break}if(-1==f)for(h=1;d>=h;h++)e.insertBefore(v(e.cells[0]),e.cells[0])}}function y(){e(O,function(a,b){e(a,function(a,c){var d,e,g;if(s(a)&&(a=a.elm,d=f(a,"colspan"),e=f(a,"rowspan"),d>1||e>1)){for(r(a,"rowSpan",1),r(a,"colSpan",1),g=0;d-1>g;g++)T.insertAfter(v(a),a);x(c,b,e-1,d)}})})}function z(b,c,d){var f,g,h,i,j,k,l,n,o,p,t;if(b?(f=J(b),g=f.x,h=f.y,i=g+(c-1),j=h+(d-1)):(Q=R=null,e(O,function(a,b){e(a,function(a,c){s(a)&&(Q||(Q={x:c,y:b}),R={x:c,y:b})})}),Q&&(g=Q.x,h=Q.y,i=R.x,j=R.y)),n=q(g,h),o=q(i,j),n&&o&&n.part==o.part){y(),m(),n=q(g,h).elm;var u=i-g+1,v=j-h+1;for(u===P&&v===O.length&&(u=1,v=1),u===P&&v>1&&(v=1),r(n,"colSpan",u),r(n,"rowSpan",v),l=h;j>=l;l++)for(k=g;i>=k;k++)O[l]&&O[l][k]&&(b=O[l][k].elm,b!=n&&(p=a.grep(b.childNodes),e(p,function(a){n.appendChild(a)}),p.length&&(p=a.grep(n.childNodes),t=0,e(p,function(a){"BR"==a.nodeName&&t++<p.length-1&&n.removeChild(a)})),T.remove(b)));w()}}function A(a){var c,d,g,h,i,j,k,l,m,o;if(e(O,function(b,d){return e(b,function(b){return s(b)&&(b=b.elm,i=b.parentNode,j=n(p(i,!1)),c=d,a)?!1:void 0}),a?!c:void 0}),c!==b){for(h=0,o=0;h<O[0].length;h+=o)if(O[c][h]&&(d=O[c][h].elm,o=f(d,"colspan"),d!=g)){if(a){if(c>0&&O[c-1][h]&&(l=O[c-1][h].elm,m=f(l,"rowSpan"),m>1)){r(l,"rowSpan",m+1);continue}}else if(m=f(d,"rowspan"),m>1){r(d,"rowSpan",m+1);continue}k=v(d),r(k,"colSpan",d.colSpan),j.appendChild(k),g=d}j.hasChildNodes()&&(a?i.parentNode.insertBefore(j,i):T.insertAfter(j,i))}}function B(a){var b,c;e(O,function(c){return e(c,function(c,d){return s(c)&&(b=d,a)?!1:void 0}),a?!b:void 0}),e(O,function(d,e){var g,h,i;d[b]&&(g=d[b].elm,g!=c&&(i=f(g,"colspan"),h=f(g,"rowspan"),1==i?a?(g.parentNode.insertBefore(v(g),g),x(b,e,h-1,i)):(T.insertAfter(v(g),g),x(b,e,h-1,i)):r(g,"colSpan",g.colSpan+1),c=g))})}function C(b){return a.grep(D(b),s)}function D(a){var b=[];return e(a,function(a){e(a,function(a){b.push(a)})}),b}function E(){var b=[];if(k(h)){if(1==O[0].length)return;if(C(O).length==D(O).length)return}e(O,function(c){e(c,function(c,d){s(c)&&-1===a.inArray(b,d)&&(e(O,function(a){var b,c=a[d].elm;b=f(c,"colSpan"),b>1?r(c,"colSpan",b-1):T.remove(c)}),b.push(d))})}),w()}function F(){function a(a){var b,c;e(a.cells,function(a){var c=f(a,"rowSpan");c>1&&(r(a,"rowSpan",c-1),b=J(a),x(b.x,b.y,1,1))}),b=J(a.cells[0]),e(O[b.y],function(a){var b;a=a.elm,a!=c&&(b=f(a,"rowSpan"),1>=b?T.remove(a):r(a,"rowSpan",b-1),c=a)})}var b;b=t(),k(h)&&b.length==h.rows.length||(e(b.reverse(),function(b){a(b)}),w())}function G(){var a=t();if(!k(h)||a.length!=h.rows.length)return T.remove(a),w(),a}function H(){var a=t();return e(a,function(b,c){a[c]=p(b,!0)}),a}function I(b,c){var d,f=t(),g=f[c?0:f.length-1],h=g.cells.length;b&&(d=a.map(b,function(a){return a.cloneNode(!0)}),e(O,function(a){var b;return h=0,e(a,function(a){a.real&&(h+=a.colspan),a.elm.parentNode==g&&(b=1)}),b?!1:void 0}),c||d.reverse(),e(d,function(a){var b,d,e=a.cells.length;for(n(a),b=0;e>b;b++)d=a.cells[b],o(d),r(d,"colSpan",1),r(d,"rowSpan",1);for(b=e;h>b;b++)a.appendChild(o(v(a.cells[e-1])));for(b=h;e>b;b++)T.remove(a.cells[b]);c?g.parentNode.insertBefore(a,g):T.insertAfter(a,g)}),j())}function J(a){var b;return e(O,function(c,d){return e(c,function(c,e){return c.elm==a?(b={x:e,y:d},!1):void 0}),!b}),b}function K(a){Q=J(a)}function L(){var a,b;return a=b=0,e(O,function(c,d){e(c,function(c,e){var f,g;s(c)&&(c=O[d][e],e>a&&(a=e),d>b&&(b=d),c.real&&(f=c.colspan-1,g=c.rowspan-1,f&&e+f>a&&(a=e+f),g&&d+g>b&&(b=d+g)))})}),{x:a,y:b}}function M(a){var b,c,d,e,f,g,h,i,k,l;if(R=J(a),Q&&R){for(b=Math.min(Q.x,R.x),c=Math.min(Q.y,R.y),d=Math.max(Q.x,R.x),e=Math.max(Q.y,R.y),f=d,g=e,l=c;e>=l;l++)for(k=b;d>=k;k++)a=O[l][k],a.real&&(h=a.colspan-1,i=a.rowspan-1,h&&k+h>f&&(f=k+h),i&&l+i>g&&(g=l+i));for(j(),l=c;g>=l;l++)for(k=b;f>=k;k++)O[l][k]&&T.setAttrib(O[l][k].elm,"data-mce-selected","1")}}function N(a,b){var c,d,e;c=J(a),d=c.y*P+c.x;do{if(d+=b,e=q(d%P,Math.floor(d/P)),!e)break;if(e.elm!=a)return S.select(e.elm,!0),T.isEmpty(e.elm)&&S.collapse(!0),!0}while(e.elm==a);return!1}var O,P,Q,R,S=g.selection,T=S.dom;h=h||T.getParent(S.getStart(!0),"table"),m(),i=i||T.getParent(S.getStart(!0),"th,td"),i&&(Q=J(i),R=L(),i=q(Q.x,Q.y)),a.extend(this,{deleteTable:u,split:y,merge:z,insertRow:A,insertCol:B,deleteCols:E,deleteRows:F,cutRows:G,copyRows:H,pasteRows:I,getPos:J,setStartCell:K,setEndCell:M,moveRelIdx:N,refresh:m})}}),d("tinymce/tableplugin/Quirks",["tinymce/util/VK","tinymce/util/Delay","tinymce/Env","tinymce/util/Tools","tinymce/tableplugin/Utils"],function(a,b,c,d,e){var f=d.each,g=e.getSpanVal;return function(h){function i(){function c(c){function d(a,b){var d=a?"previousSibling":"nextSibling",f=h.dom.getParent(b,"tr"),g=f[d];if(g)return r(h,b,g,a),c.preventDefault(),!0;var i=h.dom.getParent(f,"table"),l=f.parentNode,m=l.nodeName.toLowerCase();if("tbody"===m||m===(a?"tfoot":"thead")){var n=e(a,i,l,"tbody");if(null!==n)return j(a,n,b)}return k(a,f,d,i)}function e(a,b,c,d){var e=h.dom.select(">"+d,b),f=e.indexOf(c);if(a&&0===f||!a&&f===e.length-1)return i(a,b);if(-1===f){var g="thead"===c.tagName.toLowerCase()?0:e.length-1;return e[g]}return e[f+(a?-1:1)]}function i(a,b){var c=a?"thead":"tfoot",d=h.dom.select(">"+c,b);return 0!==d.length?d[0]:null}function j(a,b,d){var e=l(b,a);return e&&r(h,d,e,a),c.preventDefault(),!0}function k(a,b,e,f){var g=f[e];if(g)return m(g),!0;var i=h.dom.getParent(f,"td,th");if(i)return d(a,i,c);var j=l(b,!a);return m(j),c.preventDefault(),!1}function l(a,b){var c=a&&a[b?"lastChild":"firstChild"];return c&&"BR"===c.nodeName?h.dom.getParent(c,"td,th"):c}function m(a){h.selection.setCursorLocation(a,0)}function n(){return u==a.UP||u==a.DOWN}function o(a){var b=a.selection.getNode(),c=a.dom.getParent(b,"tr");return null!==c}function p(a){for(var b=0,c=a;c.previousSibling;)c=c.previousSibling,b+=g(c,"colspan");return b}function q(a,b){var c=0,d=0;return f(a.children,function(a,e){return c+=g(a,"colspan"),d=e,c>b?!1:void 0}),d}function r(a,b,c,d){var e=p(h.dom.getParent(b,"td,th")),f=q(c,e),g=c.childNodes[f],i=l(g,d);m(i||g)}function s(a){var b=h.selection.getNode(),c=h.dom.getParent(b,"td,th"),d=h.dom.getParent(a,"td,th");return c&&c!==d&&t(c,d)}function t(a,b){return h.dom.getParent(a,"TABLE")===h.dom.getParent(b,"TABLE")}var u=c.keyCode;if(n()&&o(h)){var v=h.selection.getNode();b.setEditorTimeout(h,function(){s(v)&&d(!c.shiftKey&&u===a.UP,v,c)},0)}}h.on("KeyDown",function(a){c(a)})}function j(){function a(a,b){var c,d=b.ownerDocument,e=d.createRange();return e.setStartBefore(b),e.setEnd(a.endContainer,a.endOffset),c=d.createElement("body"),c.appendChild(e.cloneContents()),0===c.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}h.on("KeyDown",function(b){var c,d,e=h.dom;37!=b.keyCode&&38!=b.keyCode||(c=h.selection.getRng(),d=e.getParent(c.startContainer,"table"),d&&h.getBody().firstChild==d&&a(c,d)&&(c=e.createRng(),c.setStartBefore(d),c.setEndBefore(d),h.selection.setRng(c),b.preventDefault()))})}function k(){h.on("KeyDown SetContent VisualAid",function(){var a;for(a=h.getBody().lastChild;a;a=a.previousSibling)if(3==a.nodeType){if(a.nodeValue.length>0)break}else if(1==a.nodeType&&("BR"==a.tagName||!a.getAttribute("data-mce-bogus")))break;a&&"TABLE"==a.nodeName&&(h.settings.forced_root_block?h.dom.add(h.getBody(),h.settings.forced_root_block,h.settings.forced_root_block_attrs,c.ie&&c.ie<10?"&nbsp;":'<br data-mce-bogus="1" />'):h.dom.add(h.getBody(),"br",{"data-mce-bogus":"1"}))}),h.on("PreProcess",function(a){var b=a.node.lastChild;b&&("BR"==b.nodeName||1==b.childNodes.length&&("BR"==b.firstChild.nodeName||"\xa0"==b.firstChild.nodeValue))&&b.previousSibling&&"TABLE"==b.previousSibling.nodeName&&h.dom.remove(b)})}function l(){function a(a,b,c,d){var e,f,g,h=3,i=a.dom.getParent(b.startContainer,"TABLE");return i&&(e=i.parentNode),f=b.startContainer.nodeType==h&&0===b.startOffset&&0===b.endOffset&&d&&("TR"==c.nodeName||c==e),g=("TD"==c.nodeName||"TH"==c.nodeName)&&!d,f||g}function b(){var b=h.selection.getRng(),c=h.selection.getNode(),d=h.dom.getParent(b.startContainer,"TD,TH");if(a(h,b,c,d)){d||(d=c);for(var e=d.lastChild;e.lastChild;)e=e.lastChild;3==e.nodeType&&(b.setEnd(e,e.data.length),h.selection.setRng(b))}}h.on("KeyDown",function(){b()}),h.on("MouseDown",function(a){2!=a.button&&b()})}function m(){function b(a){h.selection.select(a,!0),h.selection.collapse(!0)}function c(a){h.$(a).empty(),e.paddCell(a)}h.on("keydown",function(e){if((e.keyCode==a.DELETE||e.keyCode==a.BACKSPACE)&&!e.isDefaultPrevented()){var f,g,i,j;if(f=h.dom.getParent(h.selection.getStart(),"table")){if(g=h.dom.select("td,th",f),i=d.grep(g,function(a){return!!h.dom.getAttrib(a,"data-mce-selected")}),0===i.length)return j=h.dom.getParent(h.selection.getStart(),"td,th"),void(h.selection.isCollapsed()&&j&&h.dom.isEmpty(j)&&(e.preventDefault(),c(j),b(j)));e.preventDefault(),h.undoManager.transact(function(){g.length==i.length?h.execCommand("mceTableDelete"):(d.each(i,c),b(i[0]))})}}})}m(),c.webkit&&(i(),l()),c.gecko&&(j(),k()),c.ie>9&&(j(),k())}}),d("tinymce/tableplugin/CellSelection",["tinymce/tableplugin/TableGrid","tinymce/dom/TreeWalker","tinymce/util/Tools"],function(a,b,c){return function(d,e){function f(a){d.getBody().style.webkitUserSelect="",(a||o)&&(d.$("td[data-mce-selected],th[data-mce-selected]").removeAttr("data-mce-selected"),o=!1)}function g(a,b){return a&&b?a===n.getParent(b,"table"):!1}function h(b){var c,f,h=b.target;if(!m&&h!==l&&(l=h,k&&j)){if(f=n.getParent(h,"td,th"),g(k,f)||(f=n.getParent(k,"td,th")),j===f&&!o)return;if(e(!0),g(k,f)){b.preventDefault(),i||(i=new a(d,k,j),d.getBody().style.webkitUserSelect="none"),i.setEndCell(f),o=!0,c=d.selection.getSel();try{c.removeAllRanges?c.removeAllRanges():c.empty()}catch(p){}}}}var i,j,k,l,m,n=d.dom,o=!0,p=function(){j=i=k=l=null,e(!1)};return d.on("SelectionChange",function(a){o&&a.stopImmediatePropagation()},!0),d.on("MouseDown",function(a){2==a.button||m||(f(),j=n.getParent(a.target,"td,th"),k=n.getParent(j,"table"))}),d.on("mouseover",h),d.on("remove",function(){n.unbind(d.getDoc(),"mouseover",h),f()}),d.on("MouseUp",function(){function a(a,d){var f=new b(a,a);do{if(3==a.nodeType&&0!==c.trim(a.nodeValue).length)return void(d?e.setStart(a,0):e.setEnd(a,a.nodeValue.length));if("BR"==a.nodeName)return void(d?e.setStartBefore(a):e.setEndBefore(a))}while(a=d?f.next():f.prev())}var e,f,g,h,k,l=d.selection;if(j){if(i&&(d.getBody().style.webkitUserSelect=""),f=n.select("td[data-mce-selected],th[data-mce-selected]"),f.length>0){e=n.createRng(),h=f[0],e.setStartBefore(h),e.setEndAfter(h),a(h,1),g=new b(h,n.getParent(f[0],"table"));do if("TD"==h.nodeName||"TH"==h.nodeName){if(!n.getAttrib(h,"data-mce-selected"))break;k=h}while(h=g.next());a(k),l.setRng(e)}d.nodeChanged(),p()}}),d.on("KeyUp Drop SetContent",function(a){f("setcontent"==a.type),p(),m=!1}),d.on("ObjectResizeStart ObjectResized",function(a){m="objectresized"!=a.type}),{clear:f}}}),d("tinymce/tableplugin/Dialogs",["tinymce/util/Tools","tinymce/Env"],function(a,b){var c=a.each;return function(d){function e(){var a=d.settings.color_picker_callback;return a?function(){var b=this;a.call(d,function(a){b.value(a).fire("change")},b.value())}:void 0}function f(a){return{title:"Advanced",type:"form",defaults:{onchange:function(){l(a,this.parents().reverse()[0],"style"==this.name())}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border color",type:"colorbox",name:"borderColor",onaction:e()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:e()}]}]}}function g(a){return a?a.replace(/px$/,""):""}function h(a){return/^[0-9]+$/.test(a)&&(a+="px"),a}function i(a){c("left center right".split(" "),function(b){d.formatter.remove("align"+b,{},a)})}function j(a){c("top middle bottom".split(" "),function(b){d.formatter.remove("valign"+b,{},a)})}function k(b,c,d){function e(b,d){return d=d||[],a.each(b,function(a){var b={text:a.text||a.title};a.menu?b.menu=e(a.menu):(b.value=a.value,c&&c(b)),d.push(b)}),d}return e(b,d||[])}function l(a,b,c){var d=b.toJSON(),e=a.parseStyle(d.style);c?(b.find("#borderColor").value(e["border-color"]||"")[0].fire("change"),b.find("#backgroundColor").value(e["background-color"]||"")[0].fire("change")):(e["border-color"]=d.borderColor,e["background-color"]=d.backgroundColor),b.find("#style").value(a.serializeStyle(a.parseStyle(a.serializeStyle(e))))}function m(a,b,c){var d=a.parseStyle(a.getAttrib(c,"style"));d["border-color"]&&(b.borderColor=d["border-color"]),d["background-color"]&&(b.backgroundColor=d["background-color"]),b.style=a.serializeStyle(d)}function n(a,b,d){var e=a.parseStyle(a.getAttrib(b,"style"));c(d,function(a){e[a.name]=a.value}),a.setAttrib(b,"style",a.serializeStyle(a.parseStyle(a.serializeStyle(e))))}var o=this;o.tableProps=function(){o.table(!0)},o.table=function(e){function j(){function c(a,b,d){if("TD"===a.tagName||"TH"===a.tagName)v.setStyle(a,b,d);else if(a.children)for(var e=0;e<a.children.length;e++)c(a.children[e],b,d)}var e;l(v,this),w=a.extend(w,this.toJSON()),w["class"]===!1&&delete w["class"],d.undoManager.transact(function(){if(p||(p=d.plugins.table.insertTable(w.cols||1,w.rows||1)),d.dom.setAttribs(p,{style:w.style,"class":w["class"]}),d.settings.table_style_by_css){if(u=[],u.push({name:"border",value:w.border}),u.push({name:"border-spacing",value:h(w.cellspacing)}),n(v,p,u),v.setAttribs(p,{"data-mce-border-color":w.borderColor,"data-mce-cell-padding":w.cellpadding,"data-mce-border":w.border}),p.children)for(var a=0;a<p.children.length;a++)c(p.children[a],"border",w.border),c(p.children[a],"padding",h(w.cellpadding))}else d.dom.setAttribs(p,{border:w.border,cellpadding:w.cellpadding,cellspacing:w.cellspacing});v.getAttrib(p,"width")&&!d.settings.table_style_by_css?v.setAttrib(p,"width",g(w.width)):v.setStyle(p,"width",h(w.width)),v.setStyle(p,"height",h(w.height)),e=v.select("caption",p)[0],e&&!w.caption&&v.remove(e),!e&&w.caption&&(e=v.create("caption"),e.innerHTML=b.ie?"\xa0":'<br data-mce-bogus="1"/>',p.insertBefore(e,p.firstChild)),i(p),w.align&&d.formatter.apply("align"+w.align,{},p),d.focus(),d.addVisual()})}function o(a,b){function c(a,c){for(var d=0;d<c.length;d++){var e=v.getStyle(c[d],b);if("undefined"==typeof a&&(a=e),a!=e)return""}return a}var e,f=d.dom.select("td,th",a);return e=c(e,f)}var p,q,r,s,t,u,v=d.dom,w={};e===!0?(p=v.getParent(d.selection.getStart(),"table"),p&&(w={width:g(v.getStyle(p,"width")||v.getAttrib(p,"width")),height:g(v.getStyle(p,"height")||v.getAttrib(p,"height")),cellspacing:g(v.getStyle(p,"border-spacing")||v.getAttrib(p,"cellspacing")),cellpadding:v.getAttrib(p,"data-mce-cell-padding")||v.getAttrib(p,"cellpadding")||o(p,"padding"),border:v.getAttrib(p,"data-mce-border")||v.getAttrib(p,"border")||o(p,"border"),borderColor:v.getAttrib(p,"data-mce-border-color"),caption:!!v.select("caption",p)[0],"class":v.getAttrib(p,"class")},c("left center right".split(" "),function(a){d.formatter.matchNode(p,"align"+a)&&(w.align=a)}))):(q={label:"Cols",name:"cols"},r={label:"Rows",name:"rows"}),d.settings.table_class_list&&(w["class"]&&(w["class"]=w["class"].replace(/\s*mce\-item\-table\s*/g,"")),s={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"table",classes:[a.value]})})})}),t={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:d.settings.table_appearance_options!==!1?[q,r,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[q,r,{label:"Width",name:"width"},{label:"Height",name:"height"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},s]},d.settings.table_advtab!==!1?(m(v,w,p),d.windowManager.open({title:"Table properties",data:w,bodyType:"tabpanel",body:[{title:"General",type:"form",items:t},f(v)],onsubmit:j})):d.windowManager.open({title:"Table properties",data:w,body:t,onsubmit:j})},o.merge=function(a,b){d.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var c=this.toJSON();d.undoManager.transact(function(){a.merge(b,c.cols,c.rows)})}})},o.cell=function(){function b(){l(p,this),n=a.extend(n,this.toJSON()),d.undoManager.transact(function(){c(q,function(a){d.dom.setAttribs(a,{scope:n.scope,style:n.style,"class":n["class"]}),d.dom.setStyles(a,{width:h(n.width),height:h(n.height)}),n.type&&a.nodeName.toLowerCase()!=n.type&&(a=p.rename(a,n.type)),i(a),n.align&&d.formatter.apply("align"+n.align,{},a),j(a),n.valign&&d.formatter.apply("valign"+n.valign,{},a)}),d.focus()})}var e,n,o,p=d.dom,q=[];if(q=d.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=d.dom.getParent(d.selection.getStart(),"td,th"),!q.length&&e&&q.push(e),e=e||q[0]){n={width:g(p.getStyle(e,"width")||p.getAttrib(e,"width")),height:g(p.getStyle(e,"height")||p.getAttrib(e,"height")),scope:p.getAttrib(e,"scope"),"class":p.getAttrib(e,"class")},n.type=e.nodeName.toLowerCase(),c("left center right".split(" "),function(a){d.formatter.matchNode(e,"align"+a)&&(n.align=a)}),c("top middle bottom".split(" "),function(a){d.formatter.matchNode(e,"valign"+a)&&(n.valign=a)}),d.settings.table_cell_class_list&&(o={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_cell_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"td",classes:[a.value]})})})});var r={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},o]};d.settings.table_cell_advtab!==!1?(m(p,n,e),d.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:n,body:[{title:"General",type:"form",items:r},f(p)],onsubmit:b})):d.windowManager.open({title:"Cell properties",data:n,body:r,onsubmit:b})}},o.row=function(){function b(){var b,e,f;l(r,this),p=a.extend(p,this.toJSON()),d.undoManager.transact(function(){var a=p.type;c(s,function(c){d.dom.setAttribs(c,{scope:p.scope,style:p.style,"class":p["class"]}),d.dom.setStyles(c,{height:h(p.height)}),a!=c.parentNode.nodeName.toLowerCase()&&(b=r.getParent(c,"table"),e=c.parentNode,f=r.select(a,b)[0],f||(f=r.create(a),b.firstChild?b.insertBefore(f,b.firstChild):b.appendChild(f)),f.appendChild(c),e.hasChildNodes()||r.remove(e)),i(c),p.align&&d.formatter.apply("align"+p.align,{},c)}),d.focus()})}var e,j,n,o,p,q,r=d.dom,s=[];e=d.dom.getParent(d.selection.getStart(),"table"),j=d.dom.getParent(d.selection.getStart(),"td,th"),c(e.rows,function(a){c(a.cells,function(b){return r.getAttrib(b,"data-mce-selected")||b==j?(s.push(a),!1):void 0})}),n=s[0],n&&(p={height:g(r.getStyle(n,"height")||r.getAttrib(n,"height")),scope:r.getAttrib(n,"scope"),"class":r.getAttrib(n,"class")},p.type=n.parentNode.nodeName.toLowerCase(),c("left center right".split(" "),function(a){d.formatter.matchNode(n,"align"+a)&&(p.align=a)}),d.settings.table_row_class_list&&(o={name:"class",type:"listbox",label:"Class",values:k(d.settings.table_row_class_list,function(a){a.value&&(a.textStyle=function(){return d.formatter.getCssText({block:"tr",classes:[a.value]})})})}),q={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},o]},d.settings.table_row_advtab!==!1?(m(r,p,n),d.windowManager.open({title:"Row properties",data:p,bodyType:"tabpanel",body:[{title:"General",type:"form",items:q},f(r)],onsubmit:b})):d.windowManager.open({title:"Row properties",data:p,body:q,onsubmit:b}))}}}),d("tinymce/tableplugin/ResizeBars",["tinymce/util/Tools","tinymce/util/VK"],function(a,c){var d;return function(e){function f(a,b){return{index:a,y:e.dom.getPos(b).y}}function g(a,b){return{index:a,y:e.dom.getPos(b).y+b.offsetHeight}}function h(a,b){return{index:a,x:e.dom.getPos(b).x}}function i(a,b){return{index:a,x:e.dom.getPos(b).x+b.offsetWidth}}function j(){var a=e.getBody().dir;return"rtl"===a}function k(){return e.inline}function l(){return k?e.getBody().ownerDocument.body:e.getBody()}function m(a,b){return j()?i(a,b):h(a,b)}function n(a,b){return j()?h(a,b):i(a,b)}function o(a,b){return p(a,"width")/p(b,"width")*100}function p(a,b){var c=e.dom.getStyle(a,b,!0),d=parseInt(c,10);return d}function q(a){var b=p(a,"width"),c=p(a.parentElement,"width");return b/c*100}function r(a,b){var c=p(a,"width");return b/c*100}function s(a,b){var c=p(a.parentElement,"width");return b/c*100}function t(a,b,c){for(var d=[],e=1;e<c.length;e++){var f=c[e].element;d.push(a(e-1,f))}var g=c[c.length-1];return d.push(b(c.length-1,g.element)),d}function u(){var b=e.dom.select("."+ma,l());a.each(b,function(a){e.dom.remove(a)})}function v(a){u(),F(a)}function w(a,b,c,d,e,f,g,h){var i={"data-mce-bogus":"all","class":ma+" "+a,unselectable:"on","data-mce-resize":!1,style:"cursor: "+b+"; margin: 0; padding: 0; position: absolute; left: "+c+"px; top: "+d+"px; height: "+e+"px; width: "+f+"px; "};return i[g]=h,i}function x(b,c,d){a.each(b,function(a){var b=d.x,f=a.y-va/2,g=va,h=c;e.dom.add(l(),"div",w(na,oa,b,f,g,h,pa,a.index))})}function y(b,c,d){a.each(b,function(a){var b=a.x-va/2,f=d.y,g=c,h=va;e.dom.add(l(),"div",w(ra,sa,b,f,g,h,ta,a.index))})}function z(b){return a.map(b.rows,function(b){var c=a.map(b.cells,function(a){var b=a.hasAttribute("rowspan")?parseInt(a.getAttribute("rowspan"),10):1,c=a.hasAttribute("colspan")?parseInt(a.getAttribute("colspan"),10):1;return{element:a,rowspan:b,colspan:c}});return{element:b,cells:c}})}function A(c){function d(a,b){return a+","+b}function e(a,b){return h[d(a,b)]}function f(){var b=[];return a.each(i,function(a){b=b.concat(a.cells)}),b}function g(){return i}var h={},i=[],j=0,k=0;return a.each(c,function(c,e){var f=[];a.each(c.cells,function(a){for(var c=0;h[d(e,c)]!==b;)c++;for(var g={element:a.element,colspan:a.colspan,rowspan:a.rowspan,rowIndex:e,colIndex:c},i=0;i<a.colspan;i++)for(var l=0;l<a.rowspan;l++){var m=e+l,n=c+i;h[d(m,n)]=g,j=Math.max(j,m+1),k=Math.max(k,n+1)}f.push(g)}),i.push({element:c.element,cells:f})}),{grid:{maxRows:j,maxCols:k},getAt:e,getAllCells:f,getAllRows:g}}function B(a,b){for(var c=[],d=a;b>d;d++)c.push(d);return c}function C(a,b,c){for(var d,e=a(),f=0;f<e.length;f++)b(e[f])&&(d=e[f]);return d?d:c()}function D(b){var c=B(0,b.grid.maxCols),d=B(0,b.grid.maxRows);return a.map(c,function(a){function c(){for(var c=[],e=0;e<d.length;e++){var f=b.getAt(e,a);f&&f.colIndex===a&&c.push(f)}return c}function e(a){return 1===a.colspan}function f(){for(var c,e=0;e<d.length;e++)if(c=b.getAt(e,a))return c;return null}return C(c,e,f)})}function E(b){var c=B(0,b.grid.maxCols),d=B(0,b.grid.maxRows);return a.map(d,function(a){function d(){for(var d=[],e=0;e<c.length;e++){var f=b.getAt(a,e);f&&f.rowIndex===a&&d.push(f)}return d}function e(a){return 1===a.rowspan}function f(){return b.getAt(a,0)}return C(d,e,f)})}function F(a){var b=z(a),c=A(b),d=E(c),h=D(c),i=e.dom.getPos(a),j=d.length>0?t(f,g,d):[],k=h.length>0?t(m,n,h):[];x(j,a.offsetWidth,i),y(k,a.offsetHeight,i)}function G(a,b,c,d){if(0>b||b>=a.length-1)return"";var e=a[b];if(e)e={value:e,delta:0};else for(var f=a.slice(0,b).reverse(),g=0;g<f.length;g++)f[g]&&(e={value:f[g],delta:g+1});var h=a[b+1];if(h)h={value:h,delta:1};else for(var i=a.slice(b+1),j=0;j<i.length;j++)i[j]&&(h={value:i[j],delta:j+1});var k=h.delta-e.delta,l=Math.abs(h.value-e.value)/k;return c?l/p(d,"width")*100:l}function H(a,b){var c=e.dom.getStyle(a,b);return c||(c=e.dom.getAttrib(a,b)),c||(c=e.dom.getStyle(a,b,!0)),c}function I(a,b,c){var d=H(a,"width"),e=parseInt(d,10),f=b?o(a,c):p(a,"width");return(b&&!R(d)||!b&&!S(d))&&(e=0),!isNaN(e)&&e>0?e:f}function J(b,c,d){for(var e=D(b),f=a.map(e,function(a){return m(a.colIndex,a.element).x}),g=[],h=0;h<e.length;h++){var i=e[h].element.hasAttribute("colspan")?parseInt(e[h].element.getAttribute("colspan"),10):1,j=i>1?G(f,h):I(e[h].element,c,d);j=j?j:wa,g.push(j)}return g}function K(a){var b=H(a,"height"),c=parseInt(b,10);return R(b)&&(c=0),!isNaN(c)&&c>0?c:p(a,"height")}function L(b){for(var c=E(b),d=a.map(c,function(a){return f(a.rowIndex,a.element).y}),e=[],g=0;g<c.length;g++){var h=c[g].element.hasAttribute("rowspan")?parseInt(c[g].element.getAttribute("rowspan"),10):1,i=h>1?G(d,g):K(c[g].element);i=i?i:xa,e.push(i)}return e}function M(b,c,d,e,f){function g(b){return a.map(b,function(){return 0})}function h(){var a;if(f)a=[100-l[0]];else{var b=Math.max(e,l[0]+d);a=[b-l[0]]}return a}function i(a,b){var c,f=g(l.slice(0,a)),h=g(l.slice(b+1));if(d>=0){var i=Math.max(e,l[b]-d);c=f.concat([d,i-l[b]]).concat(h)}else{var j=Math.max(e,l[a]+d),k=l[a]-j;c=f.concat([j-l[a],k]).concat(h)}return c}function j(a,b){var c,f=g(l.slice(0,b));if(d>=0)c=f.concat([d]);else{var h=Math.max(e,l[b]+d);c=f.concat([h-l[b]])}return c}var k,l=b.slice(0);return k=0===b.length?[]:1===b.length?h():0===c?i(0,1):c>0&&c<b.length-1?i(c,c+1):c===b.length-1?j(c-1,c):[]}function N(a,b,c){for(var d=0,e=a;b>e;e++)d+=c[e];return d}function O(b,c){var d=b.getAllCells();return a.map(d,function(a){var b=N(a.colIndex,a.colIndex+a.colspan,c);return{element:a.element,width:b,colspan:a.colspan}})}function P(b,c){var d=b.getAllCells();return a.map(d,function(a){var b=N(a.rowIndex,a.rowIndex+a.rowspan,c);return{element:a.element,height:b,rowspan:a.rowspan}})}function Q(b,c){var d=b.getAllRows();return a.map(d,function(a,b){return{element:a.element,height:c[b]}})}function R(a){return za.test(a)}function S(a){return Aa.test(a)}function T(b,c,d){function f(b,c){a.each(b,function(a){e.dom.setStyle(a.element,"width",a.width+c),e.dom.setAttrib(a.element,"width",null)})}function g(){return d<k.grid.maxCols-1?q(b):q(b)+s(b,c)}function h(){return d<k.grid.maxCols-1?p(b,"width"):p(b,"width")+c}function i(a,c,f){d!=k.grid.maxCols-1&&f||(e.dom.setStyle(b,"width",a+c),e.dom.setAttrib(b,"width",null))}for(var j=z(b),k=A(j),l=R(b.width)||R(b.style.width),m=J(k,l,b),n=l?r(b,c):c,o=M(m,d,n,wa,l,b),t=[],u=0;u<o.length;u++)t.push(o[u]+m[u]);var v=O(k,t),w=l?"%":"px",x=l?g():h();e.undoManager.transact(function(){f(v,w),i(x,w,l)})}function U(b,c,d){for(var f=z(b),g=A(f),h=L(g),i=[],j=0,k=0;k<h.length;k++)i.push(k===d?c+h[k]:h[k]),j+=j[k];var l=P(g,i),m=Q(g,i);e.undoManager.transact(function(){a.each(m,function(a){e.dom.setStyle(a.element,"height",a.height+"px"),e.dom.setAttrib(a.element,"height",null)}),a.each(l,function(a){e.dom.setStyle(a.element,"height",a.height+"px"),e.dom.setAttrib(a.element,"height",null)}),e.dom.setStyle(b,"height",j+"px"),e.dom.setAttrib(b,"height",null)})}function V(){ga=setTimeout(function(){Z()},200)}function W(){clearTimeout(ga)}function X(){var a=document.createElement("div");return a.setAttribute("style","margin: 0; padding: 0; position: fixed; left: 0px; top: 0px; height: 100%; width: 100%;"),a.setAttribute("data-mce-bogus","all"),a}function Y(a,b){e.dom.bind(a,"mouseup",function(){Z()}),e.dom.bind(a,"mousemove",function(a){ +W(),ha&&b(a)}),e.dom.bind(a,"mouseout",function(){V()})}function Z(){if(e.dom.remove(ia),ha){e.dom.removeClass(ja,ya),ha=!1;var a,b;if(_(ja)){var c=parseInt(e.dom.getAttrib(ja,ua),10),f=e.dom.getPos(ja).x;a=parseInt(e.dom.getAttrib(ja,ta),10),b=j()?c-f:f-c,T(d,b,a)}else if(aa(ja)){var g=parseInt(e.dom.getAttrib(ja,qa),10),h=e.dom.getPos(ja).y;a=parseInt(e.dom.getAttrib(ja,pa),10),b=h-g,U(d,b,a)}v(d),e.nodeChanged()}}function $(a,b){ia=ia?ia:X(),ha=!0,e.dom.addClass(a,ya),ja=a,Y(ia,b),e.dom.add(l(),ia)}function _(a){return e.dom.hasClass(a,ra)}function aa(a){return e.dom.hasClass(a,na)}function ba(a){ka=ka!==b?ka:a.clientX;var c=a.clientX-ka;ka=a.clientX;var d=e.dom.getPos(ja).x;e.dom.setStyle(ja,"left",d+c+"px")}function ca(a){la=la!==b?la:a.clientY;var c=a.clientY-la;la=a.clientY;var d=e.dom.getPos(ja).y;e.dom.setStyle(ja,"top",d+c+"px")}function da(a){ka=b,$(a,ba)}function ea(a){la=b,$(a,ca)}function fa(a){var b=a.target,c=e.getBody();if(e.$.contains(c,d)||d===c)if(_(b)){a.preventDefault();var f=e.dom.getPos(b).x;e.dom.setAttrib(b,ua,f),da(b)}else if(aa(b)){a.preventDefault();var g=e.dom.getPos(b).y;e.dom.setAttrib(b,qa,g),ea(b)}else u()}var ga,ha,ia,ja,ka,la,ma="mce-resize-bar",na="mce-resize-bar-row",oa="row-resize",pa="data-row",qa="data-initial-top",ra="mce-resize-bar-col",sa="col-resize",ta="data-col",ua="data-initial-left",va=4,wa=10,xa=10,ya="mce-resize-bar-dragging",za=new RegExp(/(\d+(\.\d+)?%)/),Aa=new RegExp(/px|em/);return e.on("init",function(){e.dom.bind(l(),"mousedown",fa)}),e.on("ObjectResized",function(b){var c=b.target;if("TABLE"===c.nodeName){var d=[];a.each(c.rows,function(b){a.each(b.cells,function(a){var b=e.dom.getStyle(a,"width",!0);d.push({cell:a,width:b})})}),a.each(d,function(a){e.dom.setStyle(a.cell,"width",a.width),e.dom.setAttrib(a.cell,"width",null)})}}),e.on("mouseover",function(a){if(!ha){var b=e.dom.getParent(a.target,"table");("TABLE"===a.target.nodeName||b)&&(d=b,v(b))}}),e.on("keydown",function(a){switch(a.keyCode){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:u()}}),e.on("remove",function(){u(),e.dom.unbind(l(),"mousedown",fa)}),{adjustWidth:T,adjustHeight:U,clearBars:u,drawBars:F,determineDeltas:M,getTableGrid:A,getTableDetails:z,getWidths:J,getPixelHeights:L,isPercentageBasedSize:R,isPixelBasedSize:S,recalculateWidths:O,recalculateCellHeights:P,recalculateRowHeights:Q}}}),d("tinymce/tableplugin/Plugin",["tinymce/tableplugin/TableGrid","tinymce/tableplugin/Quirks","tinymce/tableplugin/CellSelection","tinymce/tableplugin/Dialogs","tinymce/tableplugin/ResizeBars","tinymce/util/Tools","tinymce/dom/TreeWalker","tinymce/Env","tinymce/PluginManager"],function(a,b,c,d,e,f,g,h,i){function j(f){function g(a){return function(){f.execCommand(a)}}function i(a,b){var c,d,e,g;for(e='<table id="__mce"><tbody>',c=0;b>c;c++){for(e+="<tr>",d=0;a>d;d++)e+="<td>"+(h.ie&&h.ie<10?"&nbsp;":"<br>")+"</td>";e+="</tr>"}return e+="</tbody></table>",f.undoManager.transact(function(){f.insertContent(e),g=f.dom.get("__mce"),f.dom.setAttrib(g,"id",null),f.$("tr",g).each(function(a,b){f.fire("newrow",{node:b}),f.$("th,td",b).each(function(a,b){f.fire("newcell",{node:b})})}),f.dom.setAttribs(g,f.settings.table_default_attributes||{}),f.dom.setStyles(g,f.settings.table_default_styles||{})}),g}function j(a,b,c){function d(){var d,e,g,h={},i=0;e=f.dom.select("td[data-mce-selected],th[data-mce-selected]"),d=e[0],d||(d=f.selection.getStart()),c&&e.length>0?(k(e,function(a){return h[a.parentNode.parentNode.nodeName]=1}),k(h,function(a){i+=a}),g=1!==i):g=!f.dom.getParent(d,b),a.disabled(g),f.selection.selectorChanged(b,function(b){a.disabled(!b)})}f.initialized?d():f.on("init",d)}function l(){j(this,"table")}function m(){j(this,"td,th")}function n(){j(this,"td,th",!0)}function o(){var a="";a='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var b=0;10>b;b++){a+="<tr>";for(var c=0;10>c;c++)a+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*b+c)+'" href="#" data-mce-x="'+c+'" data-mce-y="'+b+'"></a></td>';a+="</tr>"}return a+="</table>",a+='<div class="mce-text-center" role="presentation">1 x 1</div>'}function p(a,b,c){var d,e,g,h,i,j=c.getEl().getElementsByTagName("table")[0],k=c.isRtl()||"tl-tr"==c.parent().rel;for(j.nextSibling.innerHTML=a+1+" x "+(b+1),k&&(a=9-a),e=0;10>e;e++)for(d=0;10>d;d++)h=j.rows[e].childNodes[d].firstChild,i=(k?d>=a:a>=d)&&b>=e,f.dom.toggleClass(h,"mce-active",i),i&&(g=h);return g.parentNode}function q(){f.addButton("tableprops",{title:"Table properties",onclick:y.tableProps,icon:"table"}),f.addButton("tabledelete",{title:"Delete table",onclick:g("mceTableDelete")}),f.addButton("tablecellprops",{title:"Cell properties",onclick:g("mceTableCellProps")}),f.addButton("tablemergecells",{title:"Merge cells",onclick:g("mceTableMergeCells")}),f.addButton("tablesplitcells",{title:"Split cell",onclick:g("mceTableSplitCells")}),f.addButton("tableinsertrowbefore",{title:"Insert row before",onclick:g("mceTableInsertRowBefore")}),f.addButton("tableinsertrowafter",{title:"Insert row after",onclick:g("mceTableInsertRowAfter")}),f.addButton("tabledeleterow",{title:"Delete row",onclick:g("mceTableDeleteRow")}),f.addButton("tablerowprops",{title:"Row properties",onclick:g("mceTableRowProps")}),f.addButton("tablecutrow",{title:"Cut row",onclick:g("mceTableCutRow")}),f.addButton("tablecopyrow",{title:"Copy row",onclick:g("mceTableCopyRow")}),f.addButton("tablepasterowbefore",{title:"Paste row before",onclick:g("mceTablePasteRowBefore")}),f.addButton("tablepasterowafter",{title:"Paste row after",onclick:g("mceTablePasteRowAfter")}),f.addButton("tableinsertcolbefore",{title:"Insert column before",onclick:g("mceTableInsertColBefore")}),f.addButton("tableinsertcolafter",{title:"Insert column after",onclick:g("mceTableInsertColAfter")}),f.addButton("tabledeletecol",{title:"Delete column",onclick:g("mceTableDeleteCol")})}function r(a){var b=f.dom.is(a,"table")&&f.getBody().contains(a);return b}function s(){var a=f.settings.table_toolbar;""!==a&&a!==!1&&(a||(a="tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol"),f.addContextToolbar(r,a))}function t(){return v}function u(a){v=a}var v,w,x=this,y=new d(f);!f.settings.object_resizing||f.settings.table_resize_bars===!1||f.settings.object_resizing!==!0&&"table"!==f.settings.object_resizing||(w=e(f)),f.settings.table_grid===!1?f.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:y.table}):f.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(a){a.aria&&(this.parent().hideAll(),a.stopImmediatePropagation(),y.table())},onshow:function(){p(0,0,this.menu.items()[0])},onhide:function(){var a=this.menu.items()[0].getEl().getElementsByTagName("a");f.dom.removeClass(a,"mce-active"),f.dom.addClass(a[0],"mce-active")},menu:[{type:"container",html:o(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(a){var b,c,d=a.target;"A"==d.tagName.toUpperCase()&&(b=parseInt(d.getAttribute("data-mce-x"),10),c=parseInt(d.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"==this.parent().rel)&&(b=9-b),b===this.lastX&&c===this.lastY||(p(b,c,a.control),this.lastX=b,this.lastY=c))},onclick:function(a){var b=this;"A"==a.target.tagName.toUpperCase()&&(a.preventDefault(),a.stopPropagation(),b.parent().cancel(),f.undoManager.transact(function(){i(b.lastX+1,b.lastY+1)}),f.addVisual())}}]}),f.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:l,onclick:y.tableProps}),f.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:l,cmd:"mceTableDelete"}),f.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:g("mceTableCellProps"),onPostRender:m},{text:"Merge cells",onclick:g("mceTableMergeCells"),onPostRender:n},{text:"Split cell",onclick:g("mceTableSplitCells"),onPostRender:m}]}),f.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:g("mceTableInsertRowBefore"),onPostRender:m},{text:"Insert row after",onclick:g("mceTableInsertRowAfter"),onPostRender:m},{text:"Delete row",onclick:g("mceTableDeleteRow"),onPostRender:m},{text:"Row properties",onclick:g("mceTableRowProps"),onPostRender:m},{text:"-"},{text:"Cut row",onclick:g("mceTableCutRow"),onPostRender:m},{text:"Copy row",onclick:g("mceTableCopyRow"),onPostRender:m},{text:"Paste row before",onclick:g("mceTablePasteRowBefore"),onPostRender:m},{text:"Paste row after",onclick:g("mceTablePasteRowAfter"),onPostRender:m}]}),f.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:g("mceTableInsertColBefore"),onPostRender:m},{text:"Insert column after",onclick:g("mceTableInsertColAfter"),onPostRender:m},{text:"Delete column",onclick:g("mceTableDeleteCol"),onPostRender:m}]});var z=[];k("inserttable tableprops deletetable | cell row column".split(" "),function(a){"|"==a?z.push({text:"-"}):z.push(f.menuItems[a])}),f.addButton("table",{type:"menubutton",title:"Table",menu:z}),h.isIE||f.on("click",function(a){a=a.target,"TABLE"===a.nodeName&&(f.selection.select(a),f.nodeChanged())}),x.quirks=new b(f),f.on("Init",function(){x.cellSelection=new c(f,function(a){a&&w.clearBars()}),x.resizeBars=w}),f.on("PreInit",function(){f.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(a,b){for(var c=a.length;c--;)a[c].attr(b,null)})}),k({mceTableSplitCells:function(a){a.split()},mceTableMergeCells:function(a){var b;b=f.dom.getParent(f.selection.getStart(),"th,td"),f.dom.select("td[data-mce-selected],th[data-mce-selected]").length?a.merge():y.merge(a,b)},mceTableInsertRowBefore:function(a){a.insertRow(!0)},mceTableInsertRowAfter:function(a){a.insertRow()},mceTableInsertColBefore:function(a){a.insertCol(!0)},mceTableInsertColAfter:function(a){a.insertCol()},mceTableDeleteCol:function(a){a.deleteCols()},mceTableDeleteRow:function(a){a.deleteRows()},mceTableCutRow:function(a){v=a.cutRows()},mceTableCopyRow:function(a){v=a.copyRows()},mceTablePasteRowBefore:function(a){a.pasteRows(v,!0)},mceTablePasteRowAfter:function(a){a.pasteRows(v)},mceTableDelete:function(a){w&&w.clearBars(),a.deleteTable()}},function(b,c){f.addCommand(c,function(){var c=new a(f);c&&(b(c),f.execCommand("mceRepaint"),x.cellSelection.clear())})}),k({mceInsertTable:y.table,mceTableProps:function(){y.table(!0)},mceTableRowProps:y.row,mceTableCellProps:y.cell},function(a,b){f.addCommand(b,function(b,c){a(c)})}),q(),s(),f.settings.table_tab_navigation!==!1&&f.on("keydown",function(b){var c,d,e;9==b.keyCode&&(c=f.dom.getParent(f.selection.getStart(),"th,td"),c&&(b.preventDefault(),d=new a(f),e=b.shiftKey?-1:1,f.undoManager.transact(function(){!d.moveRelIdx(c,e)&&e>0&&(d.insertRow(),d.refresh(),d.moveRelIdx(c,e))})))}),x.insertTable=i,x.setClipboardRows=u,x.getClipboardRows=t}var k=f.each;i.add("table",j)})}(this); \ No newline at end of file diff --git a/plugins/tinymce/plugins/template/plugin.min.js b/plugins/tinymce/plugins/template/plugin.min.js new file mode 100644 index 0000000..892ee75 --- /dev/null +++ b/plugins/tinymce/plugins/template/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("template",function(a){function b(b){return function(){var c=a.settings.templates;return"function"==typeof c?void c(b):void("string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):b(c))}}function c(b){function c(b){function c(b){if(-1==b.indexOf("<html>")){var c="";tinymce.each(a.contentCSS,function(b){c+='<link type="text/css" rel="stylesheet" href="'+a.documentBaseURI.toAbsolute(b)+'">'});var e=a.settings.body_class||"";-1!=e.indexOf("=")&&(e=a.getParam("body_class","","hash"),e=e[a.id]||""),b="<!DOCTYPE html><html><head>"+c+'</head><body class="'+e+'">'+b+"</body></html>"}b=f(b,"template_preview_replace_values");var g=d.find("iframe")[0].getEl().contentWindow.document;g.open(),g.write(b),g.close()}var g=b.control.value();g.url?tinymce.util.XHR.send({url:g.url,success:function(a){e=a,c(e)}}):(e=g.content,c(e)),d.find("#description")[0].text(b.control.value().description)}var d,e,h=[];if(!b||0===b.length){var i=a.translate("No templates defined.");return void a.notificationManager.open({text:i,type:"info"})}tinymce.each(b,function(a){h.push({selected:!h.length,text:a.title,value:{url:a.url,content:a.content,description:a.description}})}),d=a.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:h,onselect:c}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){g(!1,e)},width:a.getParam("template_popup_width",600),height:a.getParam("template_popup_height",500)}),d.find("listbox")[0].fire("select")}function d(b,c){function d(a,b){if(a=""+a,a.length<b)for(var c=0;c<b-a.length;c++)a="0"+a;return a}var e="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),f="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),g="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),h="January February March April May June July August September October November December".split(" ");return c=c||new Date,b=b.replace("%D","%m/%d/%Y"),b=b.replace("%r","%I:%M:%S %p"),b=b.replace("%Y",""+c.getFullYear()),b=b.replace("%y",""+c.getYear()),b=b.replace("%m",d(c.getMonth()+1,2)),b=b.replace("%d",d(c.getDate(),2)),b=b.replace("%H",""+d(c.getHours(),2)),b=b.replace("%M",""+d(c.getMinutes(),2)),b=b.replace("%S",""+d(c.getSeconds(),2)),b=b.replace("%I",""+((c.getHours()+11)%12+1)),b=b.replace("%p",""+(c.getHours()<12?"AM":"PM")),b=b.replace("%B",""+a.translate(h[c.getMonth()])),b=b.replace("%b",""+a.translate(g[c.getMonth()])),b=b.replace("%A",""+a.translate(f[c.getDay()])),b=b.replace("%a",""+a.translate(e[c.getDay()])),b=b.replace("%%","%")}function e(b){var c=a.dom,d=a.getParam("template_replace_values");h(c.select("*",b),function(a){h(d,function(b,e){c.hasClass(a,e)&&"function"==typeof d[e]&&d[e](a)})})}function f(b,c){return h(a.getParam(c),function(a,c){"function"==typeof a&&(a=a(c)),b=b.replace(new RegExp("\\{\\$"+c+"\\}","g"),a)}),b}function g(b,c){function g(a,b){return new RegExp("\\b"+b+"\\b","g").test(a.className)}var i,j,k=a.dom,l=a.selection.getContent();c=f(c,"template_replace_values"),i=k.create("div",null,c),j=k.select(".mceTmpl",i),j&&j.length>0&&(i=k.create("div",null),i.appendChild(j[0].cloneNode(!0))),h(k.select("*",i),function(b){g(b,a.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_cdate_format",a.getLang("template.cdate_format")))),g(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format")))),g(b,a.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(b.innerHTML=l)}),e(i),a.execCommand("mceInsertContent",!1,i.innerHTML),a.addVisual()}var h=tinymce.each;a.addCommand("mceInsertTemplate",g),a.addButton("template",{title:"Insert template",onclick:b(c)}),a.addMenuItem("template",{text:"Insert template",onclick:b(c),context:"insert"}),a.on("PreProcess",function(b){var c=a.dom;h(c.select("div",b.node),function(b){c.hasClass(b,"mceTmpl")&&(h(c.select("*",b),function(b){c.hasClass(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format"))))}),e(b))})})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/textcolor/plugin.min.js b/plugins/tinymce/plugins/textcolor/plugin.min.js new file mode 100644 index 0000000..889c5c4 --- /dev/null +++ b/plugins/tinymce/plugins/textcolor/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("textcolor",function(a){function b(b){var c;return a.dom.getParents(a.selection.getStart(),function(a){var d;(d=a.style["forecolor"==b?"color":"background-color"])&&(c=d)}),c}function c(b){var c,d,e=[];for(d=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],d=a.settings.textcolor_map||d,d=a.settings[b+"_map"]||d,c=0;c<d.length;c+=2)e.push({text:d[c+1],color:"#"+d[c]});return e}function d(){function b(a,b){var c="transparent"==a;return'<td class="mce-grid-cell'+(c?" mce-colorbtn-trans":"")+'"><div id="'+o+"-"+p++ +'" data-mce-color="'+(a?a:"")+'" role="option" tabIndex="-1" style="'+(a?"background-color: "+a:"")+'" title="'+tinymce.translate(b)+'">'+(c?"&#215;":"")+"</div></td>"}var d,e,f,g,h,k,l,m,n=this,o=n._id,p=0;for(m=n.settings.origin,d=c(m),d.push({text:tinymce.translate("No color"),color:"transparent"}),f='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',g=d.length-1,k=0;k<j[m];k++){for(f+="<tr>",h=0;h<i[m];h++)l=k*i[m]+h,l>g?f+="<td></td>":(e=d[l],f+=b(e.color,e.text));f+="</tr>"}if(a.settings.color_picker_callback){for(f+='<tr><td colspan="'+i[m]+'" class="mce-custom-color-btn"><div id="'+o+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+o+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",f+="<tr>",h=0;h<i[m];h++)f+=b("","Custom color");f+="</tr>"}return f+="</tbody></table>"}function e(b,c){a.undoManager.transact(function(){a.focus(),a.formatter.apply(b,{value:c}),a.nodeChanged()})}function f(b){a.undoManager.transact(function(){a.focus(),a.formatter.remove(b,{value:null},null,!0),a.nodeChanged()})}function g(c){function d(a){l.hidePanel(),l.color(a),e(l.settings.format,a)}function g(){l.hidePanel(),l.resetColor(),f(l.settings.format)}function h(a,b){a.style.background=b,a.setAttribute("data-mce-color",b)}var j,k,l=this.parent();k=l.settings.origin,tinymce.DOM.getParent(c.target,".mce-custom-color-btn")&&(l.hidePanel(),a.settings.color_picker_callback.call(a,function(a){var b,c,e,f=l.panel.getEl().getElementsByTagName("table")[0];for(b=tinymce.map(f.rows[f.rows.length-1].childNodes,function(a){return a.firstChild}),e=0;e<b.length&&(c=b[e],c.getAttribute("data-mce-color"));e++);if(e==i[k])for(e=0;e<i[k]-1;e++)h(b[e],b[e+1].getAttribute("data-mce-color"));h(c,a),d(a)},b(l.settings.format))),j=c.target.getAttribute("data-mce-color"),j?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),c.target.setAttribute("aria-selected",!0),this.lastId=c.target.id,"transparent"==j?g():d(j)):null!==j&&l.hidePanel()}function h(){var a=this;a._color?e(a.settings.format,a._color):f(a.settings.format)}var i,j;j={forecolor:a.settings.forecolor_rows||a.settings.textcolor_rows||5,backcolor:a.settings.backcolor_rows||a.settings.textcolor_rows||5},i={forecolor:a.settings.forecolor_cols||a.settings.textcolor_cols||8,backcolor:a.settings.backcolor_cols||a.settings.textcolor_cols||8},a.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{origin:"forecolor",role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h}),a.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{origin:"backcolor",role:"application",ariaRemember:!0,html:d,onclick:g},onclick:h})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/textpattern/plugin.min.js b/plugins/tinymce/plugins/textpattern/plugin.min.js new file mode 100644 index 0000000..8af96cd --- /dev/null +++ b/plugins/tinymce/plugins/textpattern/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("textpattern",function(a){function b(){return j&&(i.sort(function(a,b){return a.start.length>b.start.length?-1:a.start.length<b.start.length?1:0}),j=!1),i}function c(a){for(var c=b(),d=0;d<c.length;d++)if(0===a.indexOf(c[d].start)&&(!c[d].end||a.lastIndexOf(c[d].end)==a.length-c[d].end.length))return c[d]}function d(a,c,d){var e,f,g;for(e=b(),g=0;g<e.length;g++)if(f=e[g],f.end&&a.substr(c-f.end.length-d,f.end.length)==f.end)return f}function e(b){function e(){i=i.splitText(k),i.splitText(j-k-o),i.deleteData(0,n.start.length),i.deleteData(i.data.length-n.end.length,n.end.length)}var f,g,h,i,j,k,l,m,n,o,p;return f=a.selection,g=a.dom,f.isCollapsed()&&(h=f.getRng(!0),i=h.startContainer,j=h.startOffset,l=i.data,o=b?1:0,3==i.nodeType&&(n=d(l,j,o),n&&(k=Math.max(0,j-o),k=l.lastIndexOf(n.start,k-n.end.length-1),-1!==k&&(m=g.createRng(),m.setStart(i,k),m.setEnd(i,j-o),n=c(m.toString()),n&&n.end&&!(i.data.length<=n.start.length+n.end.length)))))?(p=a.formatter.get(n.format),p&&p[0].inline?(e(),a.formatter.apply(n.format,{},i),i):void 0):void 0}function f(){var b,d,e,f,g,h,i,j,k,l,m;if(b=a.selection,d=a.dom,b.isCollapsed()&&(i=d.getParent(b.getStart(),"p"))){for(k=new tinymce.dom.TreeWalker(i,i);g=k.next();)if(3==g.nodeType){f=g;break}if(f){if(j=c(f.data),!j)return;if(l=b.getRng(!0),e=l.startContainer,m=l.startOffset,f==e&&(m=Math.max(0,m-j.start.length)),tinymce.trim(f.data).length==j.start.length)return;j.format&&(h=a.formatter.get(j.format),h&&h[0].block&&(f.deleteData(0,j.start.length),a.formatter.apply(j.format,{},f),l.setStart(e,m),l.collapse(!0),b.setRng(l))),j.cmd&&a.undoManager.transact(function(){f.deleteData(0,j.start.length),a.execCommand(j.cmd)})}}}function g(){var b,c;c=e(),c&&(b=a.dom.createRng(),b.setStart(c,c.data.length),b.setEnd(c,c.data.length),a.selection.setRng(b)),f()}function h(){var b,c,d,f,g;b=e(!0),b&&(g=a.dom,c=b.data.slice(-1),/[\u00a0 ]/.test(c)&&(b.deleteData(b.data.length-1,1),d=g.doc.createTextNode(c),b.nextSibling?g.insertAfter(d,b.nextSibling):b.parentNode.appendChild(d),f=g.createRng(),f.setStart(d,1),f.setEnd(d,1),a.selection.setRng(f)))}var i,j=!0;i=a.settings.textpattern_patterns||[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],a.on("keydown",function(a){13!=a.keyCode||tinymce.util.VK.modifierPressed(a)||g()},!0),a.on("keyup",function(a){32!=a.keyCode||tinymce.util.VK.modifierPressed(a)||h()}),this.getPatterns=b,this.setPatterns=function(a){i=a,j=!0}}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/visualblocks/css/visualblocks.css b/plugins/tinymce/plugins/visualblocks/css/visualblocks.css new file mode 100644 index 0000000..1a27089 --- /dev/null +++ b/plugins/tinymce/plugins/visualblocks/css/visualblocks.css @@ -0,0 +1,135 @@ +.mce-visualblocks p { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} + +.mce-visualblocks h1 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} + +.mce-visualblocks h2 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} + +.mce-visualblocks h3 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} + +.mce-visualblocks h4 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} + +.mce-visualblocks h5 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} + +.mce-visualblocks h6 { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} + +.mce-visualblocks div:not([data-mce-bogus]) { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} + +.mce-visualblocks section { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} + +.mce-visualblocks article { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} + +.mce-visualblocks blockquote { + padding-top: 10px; + border: 1px dashed #BBB; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} + +.mce-visualblocks address { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} + +.mce-visualblocks pre { + padding-top: 10px; + border: 1px dashed #BBB; + margin-left: 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} + +.mce-visualblocks figure { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} + +.mce-visualblocks hgroup { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} + +.mce-visualblocks aside { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} + +.mce-visualblocks figcaption { + border: 1px dashed #BBB; +} + +.mce-visualblocks ul { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==) +} + +.mce-visualblocks ol { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} + +.mce-visualblocks dl { + padding-top: 10px; + border: 1px dashed #BBB; + margin: 0 0 1em 3px; + background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} diff --git a/plugins/tinymce/plugins/visualblocks/plugin.min.js b/plugins/tinymce/plugins/visualblocks/plugin.min.js new file mode 100644 index 0000000..9fe8bfa --- /dev/null +++ b/plugins/tinymce/plugins/visualblocks/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("visualblocks",function(a,b){function c(){var b=this;b.active(f),a.on("VisualBlocks",function(){b.active(a.dom.hasClass(a.getBody(),"mce-visualblocks"))})}var d,e,f;window.NodeList&&(a.addCommand("mceVisualBlocks",function(){var c,g=a.dom;d||(d=g.uniqueId(),c=g.create("link",{id:d,rel:"stylesheet",href:b+"/css/visualblocks.css"}),a.getDoc().getElementsByTagName("head")[0].appendChild(c)),a.on("PreviewFormats AfterPreviewFormats",function(b){f&&g.toggleClass(a.getBody(),"mce-visualblocks","afterpreviewformats"==b.type)}),g.toggleClass(a.getBody(),"mce-visualblocks"),f=a.dom.hasClass(a.getBody(),"mce-visualblocks"),e&&e.active(g.hasClass(a.getBody(),"mce-visualblocks")),a.fire("VisualBlocks")}),a.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c}),a.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("init",function(){a.settings.visualblocks_default_state&&a.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),a.on("remove",function(){a.dom.removeClass(a.getBody(),"mce-visualblocks")}))}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/visualchars/plugin.min.js b/plugins/tinymce/plugins/visualchars/plugin.min.js new file mode 100644 index 0000000..80183aa --- /dev/null +++ b/plugins/tinymce/plugins/visualchars/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("visualchars",function(a){function b(b){function c(a){return'<span data-mce-bogus="1" class="mce-'+n[a]+'">'+a+"</span>"}function f(){var a,b="";for(a in n)b+=a;return new RegExp("["+b+"]","g")}function g(){var a,b="";for(a in n)b&&(b+=","),b+="span.mce-"+n[a];return b}var h,i,j,k,l,m,n,o,p=a.getBody(),q=a.selection;if(n={"\xa0":"nbsp","\xad":"shy"},d=!d,e.state=d,a.fire("VisualChars",{state:d}),o=f(),b&&(m=q.getBookmark()),d)for(i=[],tinymce.walk(p,function(a){3==a.nodeType&&a.nodeValue&&o.test(a.nodeValue)&&i.push(a)},"childNodes"),j=0;j<i.length;j++){for(k=i[j].nodeValue,k=k.replace(o,c),l=a.dom.create("div",null,k);h=l.lastChild;)a.dom.insertAfter(h,i[j]);a.dom.remove(i[j])}else for(i=a.dom.select(g(),p),j=i.length-1;j>=0;j--)a.dom.remove(i[j],1);q.moveToBookmark(m)}function c(){var b=this;a.on("VisualChars",function(a){b.active(a.state)})}var d,e=this;a.addCommand("mceVisualChars",b),a.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c}),a.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("beforegetcontent",function(a){d&&"raw"!=a.format&&!a.draft&&(d=!0,b(!1))})}); \ No newline at end of file diff --git a/plugins/tinymce/plugins/wordcount/plugin.min.js b/plugins/tinymce/plugins/wordcount/plugin.min.js new file mode 100644 index 0000000..f20e765 --- /dev/null +++ b/plugins/tinymce/plugins/wordcount/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("wordcount",function(a){function b(){a.theme.panel.find("#wordcount").text(["Words: {0}",e.getCount()])}var c,d,e=this;c=a.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),d=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),a.on("init",function(){var c=a.theme.panel&&a.theme.panel.find("#statusbar")[0];c&&tinymce.util.Delay.setEditorTimeout(a,function(){c.insert({type:"label",name:"wordcount",text:["Words: {0}",e.getCount()],classes:"wordcount",disabled:a.settings.readonly},0),a.on("setcontent beforeaddundo",b),a.on("keyup",function(a){32==a.keyCode&&b()})},0)}),e.getCount=function(){var b=a.getContent({format:"raw"}),e=0;if(b){b=b.replace(/\.\.\./g," "),b=b.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," "),b=b.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),b=b.replace(d,"");var f=b.match(c);f&&(e=f.length)}return e}}); \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/content.inline.min.css b/plugins/tinymce/skins/lightgray/content.inline.min.css new file mode 100644 index 0000000..1030094 --- /dev/null +++ b/plugins/tinymce/skins/lightgray/content.inline.min.css @@ -0,0 +1 @@ +.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #f00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #bbb}td[data-mce-selected],th[data-mce-selected]{background-color:#39f !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7acaff}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1} \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/content.min.css b/plugins/tinymce/skins/lightgray/content.min.css new file mode 100644 index 0000000..af85f74 --- /dev/null +++ b/plugins/tinymce/skins/lightgray/content.min.css @@ -0,0 +1 @@ +body{background-color:#fff;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #f00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #bbb}td[data-mce-selected],th[data-mce-selected]{background-color:#39f !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7acaff}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1} \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce-small.eot b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.eot new file mode 100644 index 0000000..b144ba0 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.eot differ diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce-small.svg b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.svg new file mode 100644 index 0000000..b4ee6f4 --- /dev/null +++ b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.svg @@ -0,0 +1,63 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="tinymce-small" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode="&#x20;" horiz-adv-x="512" d="" /> +<glyph unicode="&#xe000;" glyph-name="save" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" /> +<glyph unicode="&#xe001;" glyph-name="newdocument" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" /> +<glyph unicode="&#xe002;" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" /> +<glyph unicode="&#xe003;" glyph-name="alignleft" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" /> +<glyph unicode="&#xe004;" glyph-name="aligncenter" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" /> +<glyph unicode="&#xe005;" glyph-name="alignright" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" /> +<glyph unicode="&#xe006;" glyph-name="alignjustify" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" /> +<glyph unicode="&#xe007;" glyph-name="cut" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" /> +<glyph unicode="&#xe008;" glyph-name="paste" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" /> +<glyph unicode="&#xe009;" glyph-name="searchreplace" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> +<glyph unicode="&#xe00a;" glyph-name="bullist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" /> +<glyph unicode="&#xe00b;" glyph-name="numlist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" /> +<glyph unicode="&#xe00c;" glyph-name="indent" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" /> +<glyph unicode="&#xe00d;" glyph-name="outdent" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" /> +<glyph unicode="&#xe00e;" glyph-name="blockquote" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" /> +<glyph unicode="&#xe00f;" glyph-name="undo" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" /> +<glyph unicode="&#xe010;" glyph-name="redo" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" /> +<glyph unicode="&#xe011;" glyph-name="unlink" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" /> +<glyph unicode="&#xe012;" glyph-name="link" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" /> +<glyph unicode="&#xe013;" glyph-name="bookmark" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" /> +<glyph unicode="&#xe014;" glyph-name="image" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" /> +<glyph unicode="&#xe015;" glyph-name="media" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" /> +<glyph unicode="&#xe016;" glyph-name="help" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" /> +<glyph unicode="&#xe017;" glyph-name="code" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" /> +<glyph unicode="&#xe018;" glyph-name="insertdatetime" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" /> +<glyph unicode="&#xe019;" glyph-name="preview" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" /> +<glyph unicode="&#xe01a;" glyph-name="forecolor" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" /> +<glyph unicode="&#xe01b;" glyph-name="table" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" /> +<glyph unicode="&#xe01c;" glyph-name="hr" d="M64 512h896v-128h-896z" /> +<glyph unicode="&#xe01d;" glyph-name="removeformat" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" /> +<glyph unicode="&#xe01e;" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="&#xe01f;" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="&#xe020;" glyph-name="charmap" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" /> +<glyph unicode="&#xe021;" glyph-name="emoticons" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" /> +<glyph unicode="&#xe022;" glyph-name="print" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" /> +<glyph unicode="&#xe023;" glyph-name="fullscreen" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" /> +<glyph unicode="&#xe024;" glyph-name="spellcheck" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" /> +<glyph unicode="&#xe025;" glyph-name="nonbreaking" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" /> +<glyph unicode="&#xe026;" glyph-name="template" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" /> +<glyph unicode="&#xe027;" glyph-name="pagebreak" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" /> +<glyph unicode="&#xe028;" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" /> +<glyph unicode="&#xe02a;" glyph-name="bold" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" /> +<glyph unicode="&#xe02b;" glyph-name="italic" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" /> +<glyph unicode="&#xe02c;" glyph-name="underline" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" /> +<glyph unicode="&#xe02d;" glyph-name="strikethrough" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" /> +<glyph unicode="&#xe02e;" glyph-name="visualchars" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" /> +<glyph unicode="&#xe02f;" glyph-name="ltr" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" /> +<glyph unicode="&#xe030;" glyph-name="rtl" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" /> +<glyph unicode="&#xe031;" glyph-name="copy" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" /> +<glyph unicode="&#xe032;" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" /> +<glyph unicode="&#xe034;" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" /> +<glyph unicode="&#xe035;" glyph-name="pastetext" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" /> +<glyph unicode="&#xe603;" glyph-name="codesample" d="M200.015 577.994v103.994c0 43.077 34.919 77.997 77.997 77.997h26v103.994h-26c-100.51 0-181.991-81.481-181.991-181.991v-103.994c0-43.077-34.919-77.997-77.997-77.997h-26v-103.994h26c43.077 0 77.997-34.919 77.997-77.997v-103.994c0-100.509 81.481-181.991 181.991-181.991h26v103.994h-26c-43.077 0-77.997 34.919-77.997 77.997v103.994c0 50.927-20.928 96.961-54.642 129.994 33.714 33.032 54.642 79.065 54.642 129.994zM823.985 577.994v103.994c0 43.077-34.919 77.997-77.997 77.997h-26v103.994h26c100.509 0 181.991-81.481 181.991-181.991v-103.994c0-43.077 34.919-77.997 77.997-77.997h26v-103.994h-26c-43.077 0-77.997-34.919-77.997-77.997v-103.994c0-100.509-81.482-181.991-181.991-181.991h-26v103.994h26c43.077 0 77.997 34.919 77.997 77.997v103.994c0 50.927 20.928 96.961 54.642 129.994-33.714 33.032-54.642 79.065-54.642 129.994zM615.997 603.277c0-57.435-46.56-103.994-103.994-103.994s-103.994 46.56-103.994 103.994c0 57.435 46.56 103.994 103.994 103.994s103.994-46.56 103.994-103.994zM512 448.717c-57.435 0-103.994-46.56-103.994-103.994 0-55.841 26-100.107 105.747-103.875-23.715-33.413-59.437-46.608-105.747-50.94v-61.747c0 0 207.991-18.144 207.991 216.561-0.202 57.437-46.56 103.996-103.994 103.996z" /> +</font></defs></svg> \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce-small.ttf b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.ttf new file mode 100644 index 0000000..a983e2d Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.ttf differ diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce-small.woff b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.woff new file mode 100644 index 0000000..d8962df Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce-small.woff differ diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce.eot b/plugins/tinymce/skins/lightgray/fonts/tinymce.eot new file mode 100644 index 0000000..09fd441 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce.eot differ diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce.svg b/plugins/tinymce/skins/lightgray/fonts/tinymce.svg new file mode 100644 index 0000000..8688c1c --- /dev/null +++ b/plugins/tinymce/skins/lightgray/fonts/tinymce.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="tinymce" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode="&#x20;" horiz-adv-x="512" d="" /> +<glyph unicode="&#xe000;" glyph-name="save" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" /> +<glyph unicode="&#xe001;" glyph-name="newdocument" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" /> +<glyph unicode="&#xe002;" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" /> +<glyph unicode="&#xe003;" glyph-name="alignleft" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="&#xe004;" glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="&#xe005;" glyph-name="alignright" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="&#xe006;" glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="&#xe007;" glyph-name="cut" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" /> +<glyph unicode="&#xe008;" glyph-name="paste" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" /> +<glyph unicode="&#xe009;" glyph-name="searchreplace" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> +<glyph unicode="&#xe00a;" glyph-name="bullist" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" /> +<glyph unicode="&#xe00b;" glyph-name="numlist" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" /> +<glyph unicode="&#xe00c;" glyph-name="indent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" /> +<glyph unicode="&#xe00d;" glyph-name="outdent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" /> +<glyph unicode="&#xe00e;" glyph-name="blockquote" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" /> +<glyph unicode="&#xe00f;" glyph-name="undo" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" /> +<glyph unicode="&#xe010;" glyph-name="redo" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" /> +<glyph unicode="&#xe011;" glyph-name="link" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" /> +<glyph unicode="&#xe012;" glyph-name="unlink" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" /> +<glyph unicode="&#xe013;" glyph-name="anchor" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" /> +<glyph unicode="&#xe014;" glyph-name="image" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" /> +<glyph unicode="&#xe015;" glyph-name="media" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" /> +<glyph unicode="&#xe016;" glyph-name="help" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> +<glyph unicode="&#xe017;" glyph-name="code" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" /> +<glyph unicode="&#xe018;" glyph-name="inserttime" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" /> +<glyph unicode="&#xe019;" glyph-name="preview" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" /> +<glyph unicode="&#xe01a;" glyph-name="forecolor" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" /> +<glyph unicode="&#xe01b;" glyph-name="table" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="&#xe01c;" glyph-name="hr" d="M0 512h1024v-128h-1024z" /> +<glyph unicode="&#xe01d;" glyph-name="removeformat" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" /> +<glyph unicode="&#xe01e;" glyph-name="sub" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="&#xe01f;" glyph-name="sup" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="&#xe020;" glyph-name="charmap" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" /> +<glyph unicode="&#xe021;" glyph-name="emoticons" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" /> +<glyph unicode="&#xe022;" glyph-name="print" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" /> +<glyph unicode="&#xe023;" glyph-name="fullscreen" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" /> +<glyph unicode="&#xe024;" glyph-name="spellchecker" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" /> +<glyph unicode="&#xe025;" glyph-name="nonbreaking" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" /> +<glyph unicode="&#xe026;" glyph-name="template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" /> +<glyph unicode="&#xe027;" glyph-name="pagebreak" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" /> +<glyph unicode="&#xe028;" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" /> +<glyph unicode="&#xe02a;" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" /> +<glyph unicode="&#xe02b;" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" /> +<glyph unicode="&#xe02c;" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" /> +<glyph unicode="&#xe02d;" glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" /> +<glyph unicode="&#xe02e;" glyph-name="visualchars" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" /> +<glyph unicode="&#xe02f;" glyph-name="ltr" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" /> +<glyph unicode="&#xe030;" glyph-name="rtl" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" /> +<glyph unicode="&#xe031;" glyph-name="copy" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" /> +<glyph unicode="&#xe032;" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" /> +<glyph unicode="&#xe033;" glyph-name="checkbox" d="M128 416l288-288 480 480-128 128-352-352-160 160z" /> +<glyph unicode="&#xe034;" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" /> +<glyph unicode="&#xe035;" glyph-name="pastetext" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" /> +<glyph unicode="&#xe600;" glyph-name="gamma" d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6 12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4 73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2 150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0 960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" /> +<glyph unicode="&#xe601;" glyph-name="orientation" d="M627.2 80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2 732.8c176 176 457.6 176 633.6 0s176-457.6 0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8 150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4 19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" /> +<glyph unicode="&#xe602;" glyph-name="invert" d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8 166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0 0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0 0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384 627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2 83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6 172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0 0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" /> +<glyph unicode="&#xe603;" glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-100.518 0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003 182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646 79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485 182.003-182.003v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646 130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002 603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002 104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562 104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002 0-55.845 26-100.115 105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0 208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002 104.004z" /> +<glyph unicode="&#xe604;" glyph-name="tablerowprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="&#xe605;" glyph-name="tablecellprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="&#xe606;" glyph-name="table2" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-896v192h896v-192z" /> +<glyph unicode="&#xe607;" glyph-name="tablemergecells" d="M0 896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192z" /> +<glyph unicode="&#xe608;" glyph-name="tableinsertcolbefore" d="M320 188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0 896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960 64h-256v192h256v-192zM960 320h-256v192h256v-192zM960 576h-256v192h256v-192z" /> +<glyph unicode="&#xe609;" glyph-name="tableinsertcolafter" d="M704 643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v704h576v-704z" /> +<glyph unicode="&#xe60a;" glyph-name="tableinsertrowbefore" d="M691.2 508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640 64h-256v192h256v-192zM960 64h-256v192h256v-192zM960 316.8h-896v451.2h896v-451.2z" /> +<glyph unicode="&#xe60b;" glyph-name="tableinsertrowafter" d="M332.8 323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64 768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960 576h-256v192h256v-192z" /> +<glyph unicode="&#xe60d;" glyph-name="tablesplitcells" d="M0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v448h576v-448zM960 576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8 60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2 60.8-60.8-131.2-131.2z" /> +<glyph unicode="&#xe60e;" glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8 768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96 204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8 96-96-204.8-204.8z" /> +<glyph unicode="&#xe62a;" glyph-name="tableleftheader" d="M0 896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM640 640h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-256v192h256v-192z" /> +<glyph unicode="&#xe62b;" glyph-name="tabletopheader" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192z" /> +<glyph unicode="&#xe800;" glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8 160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8 76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960 576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64 64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" /> +<glyph unicode="&#xe801;" glyph-name="tabledeletecol" d="M320 499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024 896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8 12.8-51.2-51.2v89.6h-256v-89.6l-51.2 51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8 28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672 662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8 156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" /> +<glyph unicode="&#xe900;" glyph-name="a11y" d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448 192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28 28-68-28-68-68-28-68 28-28 68z" /> +<glyph unicode="&#xe902;" glyph-name="fill" d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368 432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576 51.2-348.8-348.8zM953.6 409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16 6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4 48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8 32v0z" /> +<glyph unicode="&#xe903;" glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0 32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0 928h1024v-256h-1024v256z" /> +<glyph unicode="&#xe904;" glyph-name="line" d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4 185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8 0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6 48h940.8v-112h-940.8v112z" /> +<glyph unicode="&#xe905;" glyph-name="count" d="M0 480h1024v-64h-1024v64zM304 912v-339.2h-67.2v272h-67.2v67.2zM444.8 694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4 64v54.4h-134.4v67.2h201.6v-153.6zM854.4 912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2 166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2 25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4 19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2 80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4 22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4 115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16 12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6 22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32 0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4 51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8 0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32 0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8 41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80 48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" /> +<glyph unicode="&#xe907;" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" /> +<glyph unicode="&#xe908;" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" /> +<glyph unicode="&#xe90b;" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" /> +<glyph unicode="&#xe911;" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" /> +<glyph unicode="&#xe914;" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" /> +<glyph unicode="&#xe915;" glyph-name="editimage" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" /> +<glyph unicode="&#xe91c;" glyph-name="bubble" d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96 96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96 96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z" /> +<glyph unicode="&#xe91d;" glyph-name="user" d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968 64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054 48.96 267.324-190.862 267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296 23.522-124.296 14.158-86.486 79.128-150.802 79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0 128.63-265.952 245.932-337.174 257.264z" /> +<glyph unicode="&#xe926;" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" /> +<glyph unicode="&#xe927;" glyph-name="unlock" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" /> +<glyph unicode="&#xe928;" glyph-name="settings" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" /> +<glyph unicode="&#xe92a;" glyph-name="remove2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" /> +<glyph unicode="&#xe92d;" glyph-name="menu" d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384 256h256v-256h-256z" /> +<glyph unicode="&#xe930;" glyph-name="warning" d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64 0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64 64s64-28.654 64-64l-20-256z" /> +<glyph unicode="&#xe931;" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> +<glyph unicode="&#xe932;" glyph-name="pluscircle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM768 384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" /> +<glyph unicode="&#xe933;" glyph-name="info" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640 128h-256v64h64v256h-64v64h192v-320h64v-64z" /> +<glyph unicode="&#xe934;" glyph-name="notice" d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288 288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" /> +<glyph unicode="&#xe935;" glyph-name="drop" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" /> +<glyph unicode="&#xe939;" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" /> +<glyph unicode="&#xe93a;" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" /> +<glyph unicode="&#xe93b;" glyph-name="arrowup" d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" /> +<glyph unicode="&#xe93c;" glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320 192-192 512 512z" /> +<glyph unicode="&#xe93d;" glyph-name="arrowdown" d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" /> +<glyph unicode="&#xe93f;" glyph-name="arrowup2" d="M768 320l-256 256-256-256z" /> +<glyph unicode="&#xe940;" glyph-name="arrowdown2" d="M256 576l256-256 256 256z" /> +<glyph unicode="&#xe941;" glyph-name="menu2" d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z" /> +<glyph unicode="&#xe961;" glyph-name="newtab" d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960 896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744 354.744-130.744 130.744z" /> +<glyph unicode="&#xeaa8;" glyph-name="rotateleft" d="M607.998 831.986c-212.070 0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848 246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0 274.276-122.798 274.276-274.276 0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916 383.986 383.986s-171.916 383.986-383.986 383.986z" /> +<glyph unicode="&#xeaa9;" glyph-name="rotateright" d="M416.002 831.986c212.070 0 383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848 246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48 0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276 274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916 383.986 383.986 383.986z" /> +<glyph unicode="&#xeaaa;" glyph-name="flipv" d="M0 576h1024v384zM1024 0v384h-1024z" /> +<glyph unicode="&#xeaac;" glyph-name="fliph" d="M576 960v-1024h384zM0-64h384v1024z" /> +<glyph unicode="&#xeb35;" glyph-name="zoomin" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" /> +<glyph unicode="&#xeb36;" glyph-name="zoomout" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" /> +<glyph unicode="&#xeba7;" glyph-name="sharpen" d="M768 832h-512l-256-256 512-576 512 576-256 256zM512 181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222 16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222 16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222 16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222 16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222 16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222 16h329.482v16h-343.706l-7.344 8.262 139.072 139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z" /> +<glyph unicode="&#xec6a;" glyph-name="options" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" /> +<glyph unicode="&#xeccc;" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> +<glyph unicode="&#xeccd;" glyph-name="moon" d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48 122.936-160.082 144.768-384.762 37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958 90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198 141.988 245.924 57.732 560.372-188.186 702.356z" /> +<glyph unicode="&#xecd4;" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" /> +<glyph unicode="&#xed6a;" glyph-name="remove22" d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746 290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746 290.746 290.746-290.746 90.508 90.51-290.744 290.744z" /> +<glyph unicode="&#xedc0;" glyph-name="arrowleft" d="M672-64l192 192-320 320 320 320-192 192-512-512z" /> +<glyph unicode="&#xedf9;" glyph-name="resize2" d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346 28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64 64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64 64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" /> +<glyph unicode="&#xee78;" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" /> +</font></defs></svg> \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce.ttf b/plugins/tinymce/skins/lightgray/fonts/tinymce.ttf new file mode 100644 index 0000000..bf22ca6 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce.ttf differ diff --git a/plugins/tinymce/skins/lightgray/fonts/tinymce.woff b/plugins/tinymce/skins/lightgray/fonts/tinymce.woff new file mode 100644 index 0000000..61cbafb Binary files /dev/null and b/plugins/tinymce/skins/lightgray/fonts/tinymce.woff differ diff --git a/plugins/tinymce/skins/lightgray/img/anchor.gif b/plugins/tinymce/skins/lightgray/img/anchor.gif new file mode 100644 index 0000000..606348c Binary files /dev/null and b/plugins/tinymce/skins/lightgray/img/anchor.gif differ diff --git a/plugins/tinymce/skins/lightgray/img/loader.gif b/plugins/tinymce/skins/lightgray/img/loader.gif new file mode 100644 index 0000000..c69e937 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/img/loader.gif differ diff --git a/plugins/tinymce/skins/lightgray/img/object.gif b/plugins/tinymce/skins/lightgray/img/object.gif new file mode 100644 index 0000000..cccd7f0 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/img/object.gif differ diff --git a/plugins/tinymce/skins/lightgray/img/trans.gif b/plugins/tinymce/skins/lightgray/img/trans.gif new file mode 100644 index 0000000..3884865 Binary files /dev/null and b/plugins/tinymce/skins/lightgray/img/trans.gif differ diff --git a/plugins/tinymce/skins/lightgray/skin.ie7.min.css b/plugins/tinymce/skins/lightgray/skin.ie7.min.css new file mode 100644 index 0000000..2e64b89 --- /dev/null +++ b/plugins/tinymce/skins/lightgray/skin.ie7.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#fff;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px solid #3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#aaa;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #cacaca;border:0 solid rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#fff;border:1px solid rgba(0,0,0,0.2);border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9e9e9e}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #aaa;background:#eee;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #bbb;background:#ddd;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + '&nbsp;')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-alignnone{-ie7-icon:"\e003"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-rotateleft{-ie7-icon:"\eaa8"}.mce-i-rotateright{-ie7-icon:"\eaa9"}.mce-i-crop{-ie7-icon:"\ee78"}.mce-i-editimage{-ie7-icon:"\e914"}.mce-i-options{-ie7-icon:"\ec6a"}.mce-i-flipv{-ie7-icon:"\eaaa"}.mce-i-fliph{-ie7-icon:"\eaac"}.mce-i-zoomin{-ie7-icon:"\eb35"}.mce-i-zoomout{-ie7-icon:"\eb36"}.mce-i-sun{-ie7-icon:"\eccc"}.mce-i-moon{-ie7-icon:"\eccd"}.mce-i-arrowleft{-ie7-icon:"\edc0"}.mce-i-arrowright{-ie7-icon:"\edb8"}.mce-i-drop{-ie7-icon:"\e934"}.mce-i-contrast{-ie7-icon:"\ecd4"}.mce-i-sharpen{-ie7-icon:"\eba7"}.mce-i-palette{-ie7-icon:"\e92a"}.mce-i-resize2{-ie7-icon:"\edf9"}.mce-i-orientation{-ie7-icon:"\e601"}.mce-i-invert{-ie7-icon:"\e602"}.mce-i-gamma{-ie7-icon:"\e600"}.mce-i-remove{-ie7-icon:"\ed6a"}.mce-i-codesample{-ie7-icon:"\e603"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#bbb} \ No newline at end of file diff --git a/plugins/tinymce/skins/lightgray/skin.min.css b/plugins/tinymce/skins/lightgray/skin.min.css new file mode 100644 index 0000000..4abbcee --- /dev/null +++ b/plugins/tinymce/skins/lightgray/skin.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:inherit;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#fff;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px solid #3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#aaa;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #cacaca;border:0 solid rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#fff;border:1px solid rgba(0,0,0,0.2);border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9e9e9e}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #aaa;background:#eee;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #bbb;background:#ddd;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#bbb} \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/config/bolt/atomic.js b/plugins/tinymce/themes/inlite/config/bolt/atomic.js new file mode 100644 index 0000000..ba613f5 --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/atomic.js @@ -0,0 +1,5 @@ +configure({ + configs: [ + './prod.js' + ] +}); diff --git a/plugins/tinymce/themes/inlite/config/bolt/bootstrap-atomic.js b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-atomic.js new file mode 100644 index 0000000..08e925b --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-atomic.js @@ -0,0 +1,1491 @@ +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var kernel = bolt.kernel = bolt.kernel || {}; +kernel.api = kernel.api || {}; +kernel.async = kernel.api || {}; +kernel.fp = kernel.fp || {}; +kernel.modulator = kernel.modulator || {}; +kernel.module = kernel.module || {}; +kernel.fp.array = def( + [ + ], + + function () { + var equals = function (a1, a2) { + if (a1.length !== a2.length) + return false; + for (var i = 0; i < a1.length; ++i) + if (a1[i] !== a2[i]) + return false; + return true; + }; + + var forall = function (a, f) { + var fn = f || function (x) { + return x === true; + }; + for (var i = 0; i < a.length; ++i) + if (fn(a[i]) !== true) + return false; + return true; + }; + + var map = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + r.push(f(a[i], i)); + return r; + }; + + var flatten = function (a) { + var r = []; + for (var i = 0; i < a.length; ++i) + r = r.concat(a[i]); + return r; + }; + + var flatmap = function (a, f) { + return flatten(map(a, f)); + }; + + var filter = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + if (f(a[i])) + r.push(a[i]); + return r; + }; + + var each = map; + + var contains = function (a, x) { + return !forall(a, function (v) { + return v !== x; + }); + }; + + var indexof = function (a, x) { + for (var i = 0; i < a.length; ++i) + if (a[i] === x) + return i; + return -1; + }; + + return { + equals: equals, + forall: forall, + map: map, + flatten: flatten, + flatmap: flatmap, + filter: filter, + each: each, + contains: contains, + indexof: indexof + }; + } +); +kernel.fp.object = def( + [ + ], + + function () { + var map = function (o, f) { + var r = {}; + for (var i in o) + if (o.hasOwnProperty(i)) + r[i] = f(i, o[i]); + return r; + }; + + var each = map; + + var merge = function (d, s) { + each(s, function (k, v) { + d[k] = v; + }); + }; + + var keys = function (o) { + var r = []; + each(o, function (k) { + r.push(k); + }); + return r; + }; + + return { + each: each, + keys: keys, + map: map, + merge: merge + }; + } +); +kernel.fp.functions = def( + [ + ], + + function () { + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (z) { + return function () { + var slice = Array.prototype.slice; + return !z.apply(null, slice.call(arguments, 0)); + }; + }; + + var apply = function (f) { + var slice = Array.prototype.slice; + return f.apply(null, slice.call(arguments, 0)); + }; + + return { + curry: curry, + not: not, + apply: apply + }; + } +);kernel.async.map = def( + [ + kernel.fp.array + ], + + function (ar) { + var amap = function (data, f, oncomplete) { + var total = data.length; + var count = 0; + var results = []; + + ar.each(data, function (datum, i) { + f(datum, function (result) { + ++count; + results[i] = result; + if (count === total) + oncomplete(results); + }); + }); + }; + + return { + amap: amap + }; + } +); +/** + * This module has a dual responsibility: + * 1. Ensures that asynchronous function calls, 'f', that share the same + * 'key' are not executed in parallel. + * 2. In the case where an attempt to call in parallel is prevented, + * the 'action' callbacks are executed when the asynchronous call is + * completed. + * + * Example: + * When we async-map to remotely fetch module definition, it is + * important that only a single define is evaluated, but the + * notification that the definition has completed is propagated + * to all interested parties. + * + * 1. we require dependencies 'x' and 'y' + * + * 2. both x and y are defined in the same file (i.e. compiled together), 'a.js'. + * + * 3. we resolve x and y, to their load spec using a modulator + * x_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * y_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * + * 4. we make the piggyback call for x: + * piggybacker.piggyback(x_spec.url, x_spec.load, xdone); + * + * this will register the 'xdone' action, and actually + * trigger the load call, with a synthetic callback + * responsible for triggering all registered actions. + * + * 5. we make the piggyback call for y: + * piggybacker.piggyback(y_spec.url, y_spec.load, ydone); + * + * this will register the 'ydone' action, but NOT trigger + * the load call. + * + * 6. the load call completes, and calls the synthetic callback, + * which is responsible for triggering both 'xdone' and 'ydone'. + * + * 7. something else happens that means we have to load 'a.js' again, + * the piggybacker DOES NOT prevent this call, and will follow + * the above process. + */ +kernel.async.piggybacker = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function () { + var queue = {}; // key -> [actions] + + var process = function (key) { + var actions = queue[key]; + delete queue[key]; + ar.each(actions, fn.apply); + }; + + var piggyback = function (key, f, action) { + if (queue[key] === undefined) { + queue[key] = [ action ]; + f(fn.curry(process, key)); + } else { + queue[key].push(action); + } + }; + + return { + piggyback: piggyback + }; + }; + + return { + create: create + }; + } +); +kernel.modulator.globalator = def( + [ + ], + + function () { + var create = function () { + // FIX pull out + var resolve = function (name, scope) { + var parts = name.split('.'); + var r = scope; + for (var i = 0; i < parts.length && r !== undefined; ++i) + r = r[parts[i]]; + return r; + }; + + var global = Function('return this')(); + + var can = function (id) { + return id.indexOf('global!') === 0; + }; + + var get = function (id, define, require) { + var name = id.substring('global!'.length); + + var load = function (onsuccess, onfailure) { + var instance = resolve(name, global); + if (instance !== undefined) { + define(id, [], function () { return instance; }); + onsuccess(); + } else { + onfailure('Modulator error: could not resolve global [' + name + ']'); + } + }; + + return { + url: id, // this just needs to be unique, no download required. + load: load, + serial: true + }; + }; + + return { + can: can, + get: get + } + }; + return { + create: create + }; + } +); +kernel.modulator.bolt = def( + [ + kernel.fp.functions + ], + + function (fn) { + var create = function (loader, pather, namespace, path, idTransformer, options) { + var can = function (id) { + return id === namespace || id.indexOf(namespace + '.') === 0 || id.indexOf(namespace + '/') === 0; + }; + + var get = function (id) { + var before = options !== undefined && options.absolute === true ? path : pather(path); + var after = options !== undefined && options.fresh === true ? '?cachebuster=' + new Date().getTime() : ''; + var url = before + "/" + idTransformer(id) + '.js' + after; + var load = fn.curry(loader.load, url); + + return { + url: url, + load: load, + serial: false + }; + }; + + return { + can: can, + get: get + }; + }; + + return { + create: create + }; + } +);kernel.module.stratifier = def( + [ + kernel.fp.array + ], + + function (ar) { + var stratify = function (specs) { + var parallels = ar.filter(specs, function (spec) { + return !spec.serial; + }); + return parallels.length > 0 ? parallels : specs.slice(0, 1); + }; + + return { + stratify: stratify + }; + } +); +/** + * This module performs dependency analysis of strings that depend on sets of + * strings. + * + * The input is an array of root strings to start analysis from, and an object + * that contains a mapping of each string to the strings it depends on. + * + * Performing an analysis results in either: + * 1. an empty array, indicating that all dependencies are satisfied, + * 2. an array of strings that are, at the minimum, still needed in order to + * satisfy the given dependency trees, or + * 3. an array of strings that form a dependency cycle. + */ +kernel.module.analyser = def( + [ + kernel.fp.array + ], + + function (array) { + var collect = function (path, name) { + var i = array.indexof(path, name); + var p = path.slice(i); + return p.concat([name]); + }; + + /** + * @param {array} roots Contains a list of root ids + * @param {object} modules Contains dependency information in format: { id: [ 'id1', 'id2' ] } + */ + var analyse = function (roots, modules) { + var done = {}; + var path = []; + var missing = []; + var cycle; + + var children = function (name) { + array.each(modules[name], attempt); + }; + + var examine = function (name) { + if (modules[name]) + children(name); + else + missing.push(name); + }; + + var descend = function (name) { + path.push(name); + examine(name); + path.pop(); + }; + + var decycle = function (name) { + if (array.contains(path, name)) + cycle = collect(path, name); + else + descend(name); + }; + + var attempt = function (name) { + if (!done[name]) { + decycle(name); + done[name] = true; + } + }; + + array.each(roots, attempt); + + return cycle ? { cycle: cycle } : { load: missing }; + }; + + return { + analyse: analyse + }; + } +); +kernel.module.fetcher = def( + [ + kernel.fp.array, + kernel.fp.functions, + kernel.async.map, + kernel.async.piggybacker, + kernel.module.stratifier + ], + + function (ar, fn, map, piggybacker, stratifier) { + var create = function (regulator, validator, onerror, define, require, demand) { + var piggyback = piggybacker.create(); + + var validate = function (onsuccess, results) { + var failed = ar.filter(results, fn.not(validator)); + if (failed.length > 0) + onerror('Fetcher error: modules were not defined: ' + failed.join(', ')); + else + onsuccess(); + }; + + var mapper = function (spec, onresult) { + var action = fn.curry(onresult, spec.id); + var load = function (callback) { + spec.load(callback, onerror); + }; + piggyback.piggyback(spec.url, load, action); + }; + + var asyncfetch = function (specs, onsuccess) { + var oncomplete = fn.curry(validate, onsuccess); + var strata = stratifier.stratify(specs); + map.amap(strata, mapper, oncomplete); + }; + + var fetch = function (ids, onsuccess) { + regulator.regulate(ids, define, require, demand, function (specs) { + asyncfetch(specs, onsuccess); + }, onerror); + }; + + return { + fetch: fetch + }; + }; + + return { + create: create + }; + } +); +kernel.module.loader = def( + [ + kernel.module.analyser + ], + + function (analyser) { + var load = function (roots, deps, fetcher, oncontinue, onsuccess, onerror) { + var result = analyser.analyse(roots, deps); + + if (result.cycle) + onerror('Dependency error: a circular module dependency exists from ' + result.cycle.join(' ~> ')); + else if (result.load.length === 0) + onsuccess(); + else + fetcher.fetch(result.load, oncontinue); + }; + + return { + load: load + }; + } +); +kernel.module.manager = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.module.loader, + kernel.module.fetcher + ], + + function (ar, obj, loader, fetcher) { + var create = function (regulator, onerror) { + var blueprints = {}; // id -> { id: string, dependencies: [ string ], definition: function } + var modules = {}; // id -> module + + // Adds a module to the system. + var define = function (id, dependencies, definition) { + if (id === undefined) + onerror("Define error: module id can not be undefined"); + else if (blueprints[id] !== undefined) + onerror("Define error: module '" + id + "' is already defined"); + else + blueprints[id] = { id: id, dependencies: dependencies, definition: definition }; + }; + + // Loads a set of modules asynchronously. + var require = function (ids, callback) { + var onsuccess = function () { + var instances = ar.map(ids, demand); + callback.apply(null, instances); + }; + + var oncontinue = function () { + var deps = obj.map(blueprints, function (k, v) { + return v.dependencies; + }); + loader.load(ids, deps, fetch, oncontinue, onsuccess, onerror); + }; + + oncontinue(); + }; + + // Instantiates a module and all of its dependencies. + var demand = function (id) { + if (modules[id] !== undefined) + return modules[id]; + if (blueprints[id] === undefined) + throw "module '" + id + "' is not defined"; + var result = instantiate(id); + if (result === undefined) + throw "module '" + id + "' returned undefined from definition function"; + modules[id] = result; + return result; + }; + + var instantiate = function (id) { + var blueprint = blueprints[id]; + var args = ar.map(blueprint.dependencies, demand); // Instantiate dependencies + return blueprint.definition.apply(null, args); // Instantiate self + }; + + var validator = function (id) { return blueprints[id] !== undefined; }; + var fetch = fetcher.create(regulator, validator, onerror, define, require, demand); + + return { + define: define, + require: require, + demand: demand + }; + }; + + return { + create: create + }; + } +); +kernel.api.sources = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.modulator.globalator + ], + + function (ar, obj, globalator) { + var create = function (builtins, configuration) { + var data = { + 'global': { instance: globalator } + }; + obj.each(builtins, function (key, value) { + data[key] = { instance: value }; + }); + ar.each(configuration.types, function (spec) { + data[spec.type] = { id: spec.modulator }; + }); + var sourcespecs = configuration.sources.slice(0); + var sources = [ globalator.create() ]; + + var guard = function (type) { + if (data[type] === undefined) + throw 'Unknown modulator type [' + type + '].'; + }; + + var isResolved = function (type) { + guard(type); + return data[type].instance !== undefined; + }; + + var idOf = function (type) { + guard(type); + return data[type].id; + }; + + var instanceOf = function (type) { + guard(type); + return data[type].instance; + }; + + var register = function (type, instance) { + guard(type); + data[type].instance = instance; + }; + + var find = function (id) { + for (var i = 0; i < sources.length; ++i) + if (sources[i].can(id)) + return { found: sources[i] }; + return { notfound: true }; + }; + + var crank = function () { + var left = []; + ar.each(sourcespecs, function (spec) { + if (isResolved(spec.type)) { + var instance = instanceOf(spec.type); + var source = instance.create.apply(null, spec.args); + sources.push(source); + } else + left.push(spec); + }); + sourcespecs = left; + }; + + return { + isResolved: isResolved, + idOf: idOf, + instanceOf: instanceOf, + register: register, + find: find, + crank: crank + }; + }; + + return { + create: create + }; + } +); +kernel.api.regulator = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function (sources) { + /* + * 1. Resolve configuration as much as possible + * 2. Check for unresolved modulator types that are required to continue. + * a) Go ahead and resolve, if we have everything we need. + * b) Delay, requiring the modulators, then retry. + */ + var regulate = function (ids, define, require, demand, onsuccess, onerror) { + sources.crank(); + var required = ar.map(ids, determinetype); + var unresolved = ar.filter(required, fn.not(sources.isResolved)); + if (unresolved.length === 0) + resolve(ids, define, require, demand, onsuccess, onerror); + else + delay(unresolved, ids, define, require, demand, onsuccess, onerror); + }; + + var resolve = function (ids, define, require, demand, onsuccess, onerror) { + var r = []; + for (var i = 0; i < ids.length; ++i) { + var id = ids[i]; + var source = sources.find(id); + if (source.notfound) { + onerror('Could not find source for module [' + id + ']'); + return; + } + var spec = source.found.get(id, define, require, demand); + r[i] = build(id, spec); + } + onsuccess(r); + }; + + var build = function (id, spec) { + return { + id: id, + url: spec.url, + load: spec.load, + serial: spec.serial + }; + }; + + var delay = function (types, ids, define, require, demand, onsuccess, onerror) { + var modulatorids = ar.map(types, sources.idOf); + require(modulatorids, function (/* modulators */) { + var modulators = arguments; + ar.each(types, function (type, i) { + sources.register(type, modulators[i]); + }); + regulate(ids, define, require, demand, onsuccess, onerror); + }); + }; + + var determinetype = function (id) { + var index = id.indexOf('!'); + return index === -1 ? 'bolt' : id.substring(0, index); + }; + + return { + regulate: regulate + }; + }; + + return { + create: create + }; + } +); +kernel.api.config = def( + [ + kernel.module.manager, + kernel.api.regulator, + kernel.api.sources + ], + + function (manager, regulator, sources) { + var configure = function (configuration, builtins, onerror) { + var s = sources.create(builtins, configuration); + var r = regulator.create(s); + var engine = manager.create(r, onerror); + + return { + define: engine.define, + require: engine.require, + demand: engine.demand + }; + }; + + return { + configure: configure + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var loader = bolt.loader = bolt.loader || {}; +loader.executor = loader.executor || {}; +loader.api = loader.api || {}; +loader.transporter = loader.transporter || {}; +loader.tag = loader.tag || {}; +loader.tag.script = def( + [ + ], + + function () { + var guard = function (callback) { + return function (evt) { + if (evt.srcElement.readyState === "loaded" || evt.srcElement.readyState === "complete") + callback(); + }; + }; + + var ie = function (el) { + return el.attachEvent && !window.opera; + }; + + var onload = function (el, callback) { + if (ie(el)) + el.attachEvent("onreadystatechange", guard(callback)); + else + el.addEventListener("load", callback, false); + }; + + var createtag = function (callback) { + var el = document.createElement("script"); + el.type = "text/javascript"; + onload(el, callback); + return el; + }; + + var insert = function (decorator, callback) { + var el = createtag(callback); + decorator(el); + var head = document.getElementsByTagName("head")[0]; + head.appendChild(el); + }; + + return { + insert: insert + }; + } +); +loader.transporter.commonjs = def( + [ + ], + + function () { + var read = function (url, success, error) { + var fs = require('fs'); + fs.exists(url, function (exists) { + if (exists) + fs.readFile(url, 'UTF-8', function (err, data) { + if (err) + error('Error reading file [' + url + '], error [' + err + ']'); + else + success(data); + }); + else + error('File does not exist [' + url + ']'); + }); + }; + + return { + read: read + }; + } +); +loader.transporter.xhr = def( + [ + ], + + function () { + var requestObject = function () { + // Correct way to use XMLHttpRequest in IE: + // http://blogs.msdn.com/b/ie/archive/2006/01/23/516393.aspx + var factories = [ + function () { return new XMLHttpRequest() }, + function () { return new ActiveXObject("Microsoft.XMLHTTP") } + ]; + + return fallback(factories); + }; + + var fallback = function (items) { + for (var i = 0; i < items.length; ++i) { + try { + return items[i](); + } catch (e) { + } + } + }; + + var handler = function (req, url, success, error) { + return function () { + if (req.readyState === 4) + done(req, url, success, error); + }; + }; + + var done = function (req, url, success, error) { + if (req.status === 200 || req.status === 304) + success(req.responseText); + else + error('Transport error: ' + req.status + ' ' + req.statusText + ' for resource: "' + url + '"'); + }; + + var getUrl = function (req, url, success, error) { + req.open('GET', url, true); + req.onreadystatechange = handler(req, url, success, error); + req.send(); + }; + + var request = function (url, success, error) { + var req = requestObject(); + if (req) + getUrl(req, url, success, error); + else + error('Transport error: browser does not support XMLHttpRequest.'); + }; + + return { + request: request + }; + } +); +loader.executor.evaller = def( + [ + ], + + function () { + var execute = function (data, onsuccess, onfailure) { + try { + eval(data); + } catch(e) { + onfailure(e); + return; + } + + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.executor.injector = def( + [ + loader.tag.script + ], + + function (script) { + var execute = function (data, onsuccess, onfailure) { + var inject = function (tag) { + tag.text = data; + }; + + var noop = function () {}; + + // Injection does not fire events, but execution happens synchronously, + // so we just make an explicit callback + script.insert(inject, noop); + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.api.commonjsevaller = def( + [ + loader.transporter.commonjs, + loader.executor.evaller + ], + + function (commonjs, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + commonjs.read(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.scripttag = def( + [ + loader.tag.script + ], + + function (script) { + var load = function (url, onsuccess, onfailure) { + var sourcer = function (tag) { + tag.src = url; + }; + + script.insert(sourcer, onsuccess); + }; + + return { + load: load + }; + } +); +loader.api.xhrevaller = def( + [ + loader.transporter.xhr, + loader.executor.evaller + ], + + function (xhr, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.xhrinjector = def( + [ + loader.transporter.xhr, + loader.executor.injector + ], + + function (xhr, injector) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + injector.execute(data, onsuccess); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var module = bolt.module = bolt.module || {}; +module.bootstrap = module.bootstrap || {}; +module.config = module.config || {}; +module.error = module.error || {}; +module.modulator = module.modulator || {}; +module.reader = module.reader || {}; +module.runtime = module.runtime || {}; +module.util = module.util || {}; +module.error.error = def( + [ + ], + + function () { + var die = function (msg) { + throw msg || new Error('unknown error'); + }; + + return { + die: die + }; + } +); +module.config.mapper = def( + [ + ], + + function () { + var flat = function (id) { + return id; + }; + + var hierarchical = function (id) { + return id.replace(/\./g, '/'); + }; + + var constant = function (name) { + return function () { + return name; + }; + }; + + return { + flat: flat, + hierarchical: hierarchical, + constant: constant + }; + } +); +module.api = def( + [ + module.runtime + ], + + function (runtime) { + var delegate = function (method) { + return function () { + return runtime[method].apply(null, arguments); + }; + }; + + return { + define: delegate('define'), + require: delegate('require'), + demand: delegate('demand'), + main: delegate('main'), + load: delegate('load'), + loadscript: delegate('loadscript') + }; + } +); +module.util.path = def( + [ + ], + + function () { + var dirname = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(0, end); + }; + + var basename = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(end + 1); + }; + + return { + basename: basename, + dirname: dirname + }; + } +); +module.util.locator = def( + [ + ], + + function () { + var browser = function () { + var scripts = document.getElementsByTagName("script"); + return scripts[scripts.length - 1].src; + }; + + var runtime = module.runtime.locate; + + var locate = function () { + var f = runtime || browser; + return f(); + }; + + return { + locate: locate + }; + } +); +module.util.pather = def( + [ + module.util.path + ], + + function (path) { + var create = function (relativeto) { + var base = path.dirname(relativeto); + return function (path) { + return base + '/' + path; + }; + }; + + return { + create: create + }; + } +);module.modulator.modulators = def( + [ + ephox.bolt.kernel.fp.functions, + ephox.bolt.kernel.modulator.bolt, + ephox.bolt.loader.api.commonjsevaller, + ephox.bolt.loader.api.scripttag, + ephox.bolt.loader.api.xhrevaller, + ephox.bolt.loader.api.xhrinjector + ], + + function (fn, bolt, commonjsevaller, scripttag, xhrevaller, xhrinjector) { + var wrap = function (modulator, loader) { + var create = fn.curry(modulator.create, loader); + + return { + create: create + } + }; + + return { + boltcommonjs: wrap(bolt, commonjsevaller), + boltscripttag: wrap(bolt, scripttag), + boltxhreval: wrap(bolt, xhrevaller), + boltxhrinjector: wrap(bolt, xhrinjector) + }; + } +); +module.config.builtins = def( + [ + ephox.bolt.module.modulator.modulators.boltscripttag, + ephox.bolt.module.modulator.modulators.boltcommonjs + ], + + function (boltscripttag, boltcommonjs) { + return { + // TODO: 'amd' is maintained for backwards compatibility, will be removed + // at some point. + browser: { bolt: boltscripttag, amd: boltscripttag }, + commonjs: { bolt: boltcommonjs, amd: boltcommonjs } + }; + } +); +module.config.specs = def( + [ + module.util.pather + ], + + function (pather) { + var type = function (type, implementation) { + return { + type: type, + implementation: implementation, + modulator: implementation + '.Modulator', + compiler: implementation + '.Compiler' + }; + }; + + var source = function (relativeto) { + return function (type /*, args */) { + return { + type: type, + relativeto: relativeto, + args: [ pather.create(relativeto) ].concat(Array.prototype.slice.call(arguments, 1)) + }; + } + }; + + return { + type: type, + source: source + }; + } +); +module.reader.bouncing = def( + [ + ephox.bolt.kernel.fp.array, + module.error.error, + module.config.specs + ], + + function (ar, error, specs) { + var bounce = function (done, read, acc) { + var next = acc.configs.shift(); + read(next.relativeto, next.config, done, acc); + }; + + var tick = function (file, cfg, done, read, acc) { + var munged = ar.map(cfg.configs || [], function (config) { + return { relativeto: file, config: config }; + }); + var accumulated = { + sources: acc.sources.concat(cfg.sources || []), + types: acc.types.concat(cfg.types || []), + configs: munged.concat(acc.configs) + }; + if (accumulated.configs.length > 0) + bounce(done, read, accumulated); + else + done({ sources: accumulated.sources, types: accumulated.types }); + }; + + /* + * All precedence is depth-first, pre-order. Example: + * + * A + * /-\ + * B C + * /| |\ + * D E F G + * + * Configs are read in A, B, D, E, C, F, G. + * + * If configs mixed delegation and sources, the + * sources would be ordered the same: A, B, D, E, C, F, G. + */ + + var evaluate = function (file, payload, done, read, acc) { + var result = {}; + /* eval scope */ + var mapper = module.config.mapper; + var type = specs.type; + var source = specs.source(file); + var configure = function (configuration) { + result = configuration; + }; + try { + eval(payload); + } catch (e) { + throw 'Could not load configuration [' + file + '], with: ' + e; + } + tick(file, result, done, read, acc); + }; + + return { + evaluate: evaluate + }; + } +); +module.reader.browser = def( + [ + module.error.error, + module.reader.bouncing, + module.util.path, + ephox.bolt.loader.transporter.xhr + ], + + function (error, bouncing, path, xhr) { + var read = function (relativeto, file, done, acc) { + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = base + '/' + file; + xhr.request(absolute, function (payload) { + bouncing.evaluate(absolute, payload, done, read, accumulated); + }, error.die); + }; + + return { + read: read + }; + } +); +module.reader.node = def( + [ + module.reader.bouncing + ], + + function (bouncing, path, fs) { + var read = function (relativeto, file, done, acc) { + var fs = require('fs'); + var path = require('path'); + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = path.resolve(base, file); + var payload = fs.readFileSync(absolute, 'UTF-8'); + bouncing.evaluate(absolute, payload, done, read, accumulated); + }; + + return { + read: read + }; + } +); +module.reader.direct = def( + [ + ], + + function () { + var create = function (configuration) { + return function (done) { + done({ + sources: configuration.sources || [], + types: configuration.types || [], + configs: configuration.configs || [] + }); + }; + }; + + return { + create: create + }; + } +); +module.bootstrap.configloader = def( + [ + module.util.locator, + module.reader.browser + ], + + function (locator, browser) { + var create = function (file) { + var script = locator.locate(); + return function (done) { + browser.read(script, file, done); + }; + }; + + return { + create: create + }; + } +);module.bootstrap.deferred = def( + [ + ephox.bolt.kernel.fp.array + ], + + function (ar) { + var deferred = []; + + var require = function (ids, fn) { + var r = function (real) { + real(ids, fn); + }; + deferred.push(r); + }; + + var configured = function (require) { + ar.each(deferred, function (action) { + action(require); + }); + deferred = []; + }; + + return { + require: require, + configured: configured + }; + } +); +module.bootstrap.main = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.runtime + ], + + function (config, deferred, runtime) { + var main = function (id, args, configids, callback) { + runtime.require(configids || [], function () { + callback && callback.apply(null, arguments); + runtime.require([ id ], function (module) { + module.apply(null, args || []); + }); + }); + }; + + return { + main: main + }; + } +); +module.bootstrap.install = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.bootstrap.main, + module.runtime, + module.error.error + ], + + function (config, deferred, main, runtime, error) { + var notready = function () { throw 'bolt not initialised, can not call define or demand, did you mean to use require or main?'; }; + + var install = function (reader, builtins, load, loadscript) { + runtime.define = notready; + runtime.demand = notready; + runtime.require = deferred.require; + runtime.main = main.main; + runtime.load = load; + runtime.loadscript = loadscript; + + reader(function (configuration) { + var bolt = config.configure(configuration, builtins, error.die); + runtime.define = bolt.define; + runtime.require = bolt.require; + runtime.demand = bolt.demand; + + deferred.configured(runtime.require); + }); + }; + + return { + install: install + }; + } +); + +})(Function('return this')()); +(function (global) { + var obj = ephox.bolt.kernel.fp.object; + var api = ephox.bolt.module.api; + var builtins = ephox.bolt.module.config.builtins.browser; + var install = ephox.bolt.module.bootstrap.install; + var reader = ephox.bolt.module.bootstrap.configloader.create("atomic.js"); + var transport = ephox.bolt.loader.transporter.xhr.request; + var script = ephox.bolt.loader.api.scripttag.load; + install.install(reader, builtins, transport, script); + obj.merge(global, api); +})(Function("return this;")()); \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/config/bolt/bootstrap-browser.js b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-browser.js new file mode 100644 index 0000000..0f787ca --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-browser.js @@ -0,0 +1,1491 @@ +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var kernel = bolt.kernel = bolt.kernel || {}; +kernel.api = kernel.api || {}; +kernel.async = kernel.api || {}; +kernel.fp = kernel.fp || {}; +kernel.modulator = kernel.modulator || {}; +kernel.module = kernel.module || {}; +kernel.fp.array = def( + [ + ], + + function () { + var equals = function (a1, a2) { + if (a1.length !== a2.length) + return false; + for (var i = 0; i < a1.length; ++i) + if (a1[i] !== a2[i]) + return false; + return true; + }; + + var forall = function (a, f) { + var fn = f || function (x) { + return x === true; + }; + for (var i = 0; i < a.length; ++i) + if (fn(a[i]) !== true) + return false; + return true; + }; + + var map = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + r.push(f(a[i], i)); + return r; + }; + + var flatten = function (a) { + var r = []; + for (var i = 0; i < a.length; ++i) + r = r.concat(a[i]); + return r; + }; + + var flatmap = function (a, f) { + return flatten(map(a, f)); + }; + + var filter = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + if (f(a[i])) + r.push(a[i]); + return r; + }; + + var each = map; + + var contains = function (a, x) { + return !forall(a, function (v) { + return v !== x; + }); + }; + + var indexof = function (a, x) { + for (var i = 0; i < a.length; ++i) + if (a[i] === x) + return i; + return -1; + }; + + return { + equals: equals, + forall: forall, + map: map, + flatten: flatten, + flatmap: flatmap, + filter: filter, + each: each, + contains: contains, + indexof: indexof + }; + } +); +kernel.fp.object = def( + [ + ], + + function () { + var map = function (o, f) { + var r = {}; + for (var i in o) + if (o.hasOwnProperty(i)) + r[i] = f(i, o[i]); + return r; + }; + + var each = map; + + var merge = function (d, s) { + each(s, function (k, v) { + d[k] = v; + }); + }; + + var keys = function (o) { + var r = []; + each(o, function (k) { + r.push(k); + }); + return r; + }; + + return { + each: each, + keys: keys, + map: map, + merge: merge + }; + } +); +kernel.fp.functions = def( + [ + ], + + function () { + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (z) { + return function () { + var slice = Array.prototype.slice; + return !z.apply(null, slice.call(arguments, 0)); + }; + }; + + var apply = function (f) { + var slice = Array.prototype.slice; + return f.apply(null, slice.call(arguments, 0)); + }; + + return { + curry: curry, + not: not, + apply: apply + }; + } +);kernel.async.map = def( + [ + kernel.fp.array + ], + + function (ar) { + var amap = function (data, f, oncomplete) { + var total = data.length; + var count = 0; + var results = []; + + ar.each(data, function (datum, i) { + f(datum, function (result) { + ++count; + results[i] = result; + if (count === total) + oncomplete(results); + }); + }); + }; + + return { + amap: amap + }; + } +); +/** + * This module has a dual responsibility: + * 1. Ensures that asynchronous function calls, 'f', that share the same + * 'key' are not executed in parallel. + * 2. In the case where an attempt to call in parallel is prevented, + * the 'action' callbacks are executed when the asynchronous call is + * completed. + * + * Example: + * When we async-map to remotely fetch module definition, it is + * important that only a single define is evaluated, but the + * notification that the definition has completed is propagated + * to all interested parties. + * + * 1. we require dependencies 'x' and 'y' + * + * 2. both x and y are defined in the same file (i.e. compiled together), 'a.js'. + * + * 3. we resolve x and y, to their load spec using a modulator + * x_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * y_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * + * 4. we make the piggyback call for x: + * piggybacker.piggyback(x_spec.url, x_spec.load, xdone); + * + * this will register the 'xdone' action, and actually + * trigger the load call, with a synthetic callback + * responsible for triggering all registered actions. + * + * 5. we make the piggyback call for y: + * piggybacker.piggyback(y_spec.url, y_spec.load, ydone); + * + * this will register the 'ydone' action, but NOT trigger + * the load call. + * + * 6. the load call completes, and calls the synthetic callback, + * which is responsible for triggering both 'xdone' and 'ydone'. + * + * 7. something else happens that means we have to load 'a.js' again, + * the piggybacker DOES NOT prevent this call, and will follow + * the above process. + */ +kernel.async.piggybacker = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function () { + var queue = {}; // key -> [actions] + + var process = function (key) { + var actions = queue[key]; + delete queue[key]; + ar.each(actions, fn.apply); + }; + + var piggyback = function (key, f, action) { + if (queue[key] === undefined) { + queue[key] = [ action ]; + f(fn.curry(process, key)); + } else { + queue[key].push(action); + } + }; + + return { + piggyback: piggyback + }; + }; + + return { + create: create + }; + } +); +kernel.modulator.globalator = def( + [ + ], + + function () { + var create = function () { + // FIX pull out + var resolve = function (name, scope) { + var parts = name.split('.'); + var r = scope; + for (var i = 0; i < parts.length && r !== undefined; ++i) + r = r[parts[i]]; + return r; + }; + + var global = Function('return this')(); + + var can = function (id) { + return id.indexOf('global!') === 0; + }; + + var get = function (id, define, require) { + var name = id.substring('global!'.length); + + var load = function (onsuccess, onfailure) { + var instance = resolve(name, global); + if (instance !== undefined) { + define(id, [], function () { return instance; }); + onsuccess(); + } else { + onfailure('Modulator error: could not resolve global [' + name + ']'); + } + }; + + return { + url: id, // this just needs to be unique, no download required. + load: load, + serial: true + }; + }; + + return { + can: can, + get: get + } + }; + return { + create: create + }; + } +); +kernel.modulator.bolt = def( + [ + kernel.fp.functions + ], + + function (fn) { + var create = function (loader, pather, namespace, path, idTransformer, options) { + var can = function (id) { + return id === namespace || id.indexOf(namespace + '.') === 0 || id.indexOf(namespace + '/') === 0; + }; + + var get = function (id) { + var before = options !== undefined && options.absolute === true ? path : pather(path); + var after = options !== undefined && options.fresh === true ? '?cachebuster=' + new Date().getTime() : ''; + var url = before + "/" + idTransformer(id) + '.js' + after; + var load = fn.curry(loader.load, url); + + return { + url: url, + load: load, + serial: false + }; + }; + + return { + can: can, + get: get + }; + }; + + return { + create: create + }; + } +);kernel.module.stratifier = def( + [ + kernel.fp.array + ], + + function (ar) { + var stratify = function (specs) { + var parallels = ar.filter(specs, function (spec) { + return !spec.serial; + }); + return parallels.length > 0 ? parallels : specs.slice(0, 1); + }; + + return { + stratify: stratify + }; + } +); +/** + * This module performs dependency analysis of strings that depend on sets of + * strings. + * + * The input is an array of root strings to start analysis from, and an object + * that contains a mapping of each string to the strings it depends on. + * + * Performing an analysis results in either: + * 1. an empty array, indicating that all dependencies are satisfied, + * 2. an array of strings that are, at the minimum, still needed in order to + * satisfy the given dependency trees, or + * 3. an array of strings that form a dependency cycle. + */ +kernel.module.analyser = def( + [ + kernel.fp.array + ], + + function (array) { + var collect = function (path, name) { + var i = array.indexof(path, name); + var p = path.slice(i); + return p.concat([name]); + }; + + /** + * @param {array} roots Contains a list of root ids + * @param {object} modules Contains dependency information in format: { id: [ 'id1', 'id2' ] } + */ + var analyse = function (roots, modules) { + var done = {}; + var path = []; + var missing = []; + var cycle; + + var children = function (name) { + array.each(modules[name], attempt); + }; + + var examine = function (name) { + if (modules[name]) + children(name); + else + missing.push(name); + }; + + var descend = function (name) { + path.push(name); + examine(name); + path.pop(); + }; + + var decycle = function (name) { + if (array.contains(path, name)) + cycle = collect(path, name); + else + descend(name); + }; + + var attempt = function (name) { + if (!done[name]) { + decycle(name); + done[name] = true; + } + }; + + array.each(roots, attempt); + + return cycle ? { cycle: cycle } : { load: missing }; + }; + + return { + analyse: analyse + }; + } +); +kernel.module.fetcher = def( + [ + kernel.fp.array, + kernel.fp.functions, + kernel.async.map, + kernel.async.piggybacker, + kernel.module.stratifier + ], + + function (ar, fn, map, piggybacker, stratifier) { + var create = function (regulator, validator, onerror, define, require, demand) { + var piggyback = piggybacker.create(); + + var validate = function (onsuccess, results) { + var failed = ar.filter(results, fn.not(validator)); + if (failed.length > 0) + onerror('Fetcher error: modules were not defined: ' + failed.join(', ')); + else + onsuccess(); + }; + + var mapper = function (spec, onresult) { + var action = fn.curry(onresult, spec.id); + var load = function (callback) { + spec.load(callback, onerror); + }; + piggyback.piggyback(spec.url, load, action); + }; + + var asyncfetch = function (specs, onsuccess) { + var oncomplete = fn.curry(validate, onsuccess); + var strata = stratifier.stratify(specs); + map.amap(strata, mapper, oncomplete); + }; + + var fetch = function (ids, onsuccess) { + regulator.regulate(ids, define, require, demand, function (specs) { + asyncfetch(specs, onsuccess); + }, onerror); + }; + + return { + fetch: fetch + }; + }; + + return { + create: create + }; + } +); +kernel.module.loader = def( + [ + kernel.module.analyser + ], + + function (analyser) { + var load = function (roots, deps, fetcher, oncontinue, onsuccess, onerror) { + var result = analyser.analyse(roots, deps); + + if (result.cycle) + onerror('Dependency error: a circular module dependency exists from ' + result.cycle.join(' ~> ')); + else if (result.load.length === 0) + onsuccess(); + else + fetcher.fetch(result.load, oncontinue); + }; + + return { + load: load + }; + } +); +kernel.module.manager = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.module.loader, + kernel.module.fetcher + ], + + function (ar, obj, loader, fetcher) { + var create = function (regulator, onerror) { + var blueprints = {}; // id -> { id: string, dependencies: [ string ], definition: function } + var modules = {}; // id -> module + + // Adds a module to the system. + var define = function (id, dependencies, definition) { + if (id === undefined) + onerror("Define error: module id can not be undefined"); + else if (blueprints[id] !== undefined) + onerror("Define error: module '" + id + "' is already defined"); + else + blueprints[id] = { id: id, dependencies: dependencies, definition: definition }; + }; + + // Loads a set of modules asynchronously. + var require = function (ids, callback) { + var onsuccess = function () { + var instances = ar.map(ids, demand); + callback.apply(null, instances); + }; + + var oncontinue = function () { + var deps = obj.map(blueprints, function (k, v) { + return v.dependencies; + }); + loader.load(ids, deps, fetch, oncontinue, onsuccess, onerror); + }; + + oncontinue(); + }; + + // Instantiates a module and all of its dependencies. + var demand = function (id) { + if (modules[id] !== undefined) + return modules[id]; + if (blueprints[id] === undefined) + throw "module '" + id + "' is not defined"; + var result = instantiate(id); + if (result === undefined) + throw "module '" + id + "' returned undefined from definition function"; + modules[id] = result; + return result; + }; + + var instantiate = function (id) { + var blueprint = blueprints[id]; + var args = ar.map(blueprint.dependencies, demand); // Instantiate dependencies + return blueprint.definition.apply(null, args); // Instantiate self + }; + + var validator = function (id) { return blueprints[id] !== undefined; }; + var fetch = fetcher.create(regulator, validator, onerror, define, require, demand); + + return { + define: define, + require: require, + demand: demand + }; + }; + + return { + create: create + }; + } +); +kernel.api.sources = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.modulator.globalator + ], + + function (ar, obj, globalator) { + var create = function (builtins, configuration) { + var data = { + 'global': { instance: globalator } + }; + obj.each(builtins, function (key, value) { + data[key] = { instance: value }; + }); + ar.each(configuration.types, function (spec) { + data[spec.type] = { id: spec.modulator }; + }); + var sourcespecs = configuration.sources.slice(0); + var sources = [ globalator.create() ]; + + var guard = function (type) { + if (data[type] === undefined) + throw 'Unknown modulator type [' + type + '].'; + }; + + var isResolved = function (type) { + guard(type); + return data[type].instance !== undefined; + }; + + var idOf = function (type) { + guard(type); + return data[type].id; + }; + + var instanceOf = function (type) { + guard(type); + return data[type].instance; + }; + + var register = function (type, instance) { + guard(type); + data[type].instance = instance; + }; + + var find = function (id) { + for (var i = 0; i < sources.length; ++i) + if (sources[i].can(id)) + return { found: sources[i] }; + return { notfound: true }; + }; + + var crank = function () { + var left = []; + ar.each(sourcespecs, function (spec) { + if (isResolved(spec.type)) { + var instance = instanceOf(spec.type); + var source = instance.create.apply(null, spec.args); + sources.push(source); + } else + left.push(spec); + }); + sourcespecs = left; + }; + + return { + isResolved: isResolved, + idOf: idOf, + instanceOf: instanceOf, + register: register, + find: find, + crank: crank + }; + }; + + return { + create: create + }; + } +); +kernel.api.regulator = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function (sources) { + /* + * 1. Resolve configuration as much as possible + * 2. Check for unresolved modulator types that are required to continue. + * a) Go ahead and resolve, if we have everything we need. + * b) Delay, requiring the modulators, then retry. + */ + var regulate = function (ids, define, require, demand, onsuccess, onerror) { + sources.crank(); + var required = ar.map(ids, determinetype); + var unresolved = ar.filter(required, fn.not(sources.isResolved)); + if (unresolved.length === 0) + resolve(ids, define, require, demand, onsuccess, onerror); + else + delay(unresolved, ids, define, require, demand, onsuccess, onerror); + }; + + var resolve = function (ids, define, require, demand, onsuccess, onerror) { + var r = []; + for (var i = 0; i < ids.length; ++i) { + var id = ids[i]; + var source = sources.find(id); + if (source.notfound) { + onerror('Could not find source for module [' + id + ']'); + return; + } + var spec = source.found.get(id, define, require, demand); + r[i] = build(id, spec); + } + onsuccess(r); + }; + + var build = function (id, spec) { + return { + id: id, + url: spec.url, + load: spec.load, + serial: spec.serial + }; + }; + + var delay = function (types, ids, define, require, demand, onsuccess, onerror) { + var modulatorids = ar.map(types, sources.idOf); + require(modulatorids, function (/* modulators */) { + var modulators = arguments; + ar.each(types, function (type, i) { + sources.register(type, modulators[i]); + }); + regulate(ids, define, require, demand, onsuccess, onerror); + }); + }; + + var determinetype = function (id) { + var index = id.indexOf('!'); + return index === -1 ? 'bolt' : id.substring(0, index); + }; + + return { + regulate: regulate + }; + }; + + return { + create: create + }; + } +); +kernel.api.config = def( + [ + kernel.module.manager, + kernel.api.regulator, + kernel.api.sources + ], + + function (manager, regulator, sources) { + var configure = function (configuration, builtins, onerror) { + var s = sources.create(builtins, configuration); + var r = regulator.create(s); + var engine = manager.create(r, onerror); + + return { + define: engine.define, + require: engine.require, + demand: engine.demand + }; + }; + + return { + configure: configure + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var loader = bolt.loader = bolt.loader || {}; +loader.executor = loader.executor || {}; +loader.api = loader.api || {}; +loader.transporter = loader.transporter || {}; +loader.tag = loader.tag || {}; +loader.tag.script = def( + [ + ], + + function () { + var guard = function (callback) { + return function (evt) { + if (evt.srcElement.readyState === "loaded" || evt.srcElement.readyState === "complete") + callback(); + }; + }; + + var ie = function (el) { + return el.attachEvent && !window.opera; + }; + + var onload = function (el, callback) { + if (ie(el)) + el.attachEvent("onreadystatechange", guard(callback)); + else + el.addEventListener("load", callback, false); + }; + + var createtag = function (callback) { + var el = document.createElement("script"); + el.type = "text/javascript"; + onload(el, callback); + return el; + }; + + var insert = function (decorator, callback) { + var el = createtag(callback); + decorator(el); + var head = document.getElementsByTagName("head")[0]; + head.appendChild(el); + }; + + return { + insert: insert + }; + } +); +loader.transporter.commonjs = def( + [ + ], + + function () { + var read = function (url, success, error) { + var fs = require('fs'); + fs.exists(url, function (exists) { + if (exists) + fs.readFile(url, 'UTF-8', function (err, data) { + if (err) + error('Error reading file [' + url + '], error [' + err + ']'); + else + success(data); + }); + else + error('File does not exist [' + url + ']'); + }); + }; + + return { + read: read + }; + } +); +loader.transporter.xhr = def( + [ + ], + + function () { + var requestObject = function () { + // Correct way to use XMLHttpRequest in IE: + // http://blogs.msdn.com/b/ie/archive/2006/01/23/516393.aspx + var factories = [ + function () { return new XMLHttpRequest() }, + function () { return new ActiveXObject("Microsoft.XMLHTTP") } + ]; + + return fallback(factories); + }; + + var fallback = function (items) { + for (var i = 0; i < items.length; ++i) { + try { + return items[i](); + } catch (e) { + } + } + }; + + var handler = function (req, url, success, error) { + return function () { + if (req.readyState === 4) + done(req, url, success, error); + }; + }; + + var done = function (req, url, success, error) { + if (req.status === 200 || req.status === 304) + success(req.responseText); + else + error('Transport error: ' + req.status + ' ' + req.statusText + ' for resource: "' + url + '"'); + }; + + var getUrl = function (req, url, success, error) { + req.open('GET', url, true); + req.onreadystatechange = handler(req, url, success, error); + req.send(); + }; + + var request = function (url, success, error) { + var req = requestObject(); + if (req) + getUrl(req, url, success, error); + else + error('Transport error: browser does not support XMLHttpRequest.'); + }; + + return { + request: request + }; + } +); +loader.executor.evaller = def( + [ + ], + + function () { + var execute = function (data, onsuccess, onfailure) { + try { + eval(data); + } catch(e) { + onfailure(e); + return; + } + + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.executor.injector = def( + [ + loader.tag.script + ], + + function (script) { + var execute = function (data, onsuccess, onfailure) { + var inject = function (tag) { + tag.text = data; + }; + + var noop = function () {}; + + // Injection does not fire events, but execution happens synchronously, + // so we just make an explicit callback + script.insert(inject, noop); + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.api.commonjsevaller = def( + [ + loader.transporter.commonjs, + loader.executor.evaller + ], + + function (commonjs, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + commonjs.read(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.scripttag = def( + [ + loader.tag.script + ], + + function (script) { + var load = function (url, onsuccess, onfailure) { + var sourcer = function (tag) { + tag.src = url; + }; + + script.insert(sourcer, onsuccess); + }; + + return { + load: load + }; + } +); +loader.api.xhrevaller = def( + [ + loader.transporter.xhr, + loader.executor.evaller + ], + + function (xhr, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.xhrinjector = def( + [ + loader.transporter.xhr, + loader.executor.injector + ], + + function (xhr, injector) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + injector.execute(data, onsuccess); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var module = bolt.module = bolt.module || {}; +module.bootstrap = module.bootstrap || {}; +module.config = module.config || {}; +module.error = module.error || {}; +module.modulator = module.modulator || {}; +module.reader = module.reader || {}; +module.runtime = module.runtime || {}; +module.util = module.util || {}; +module.error.error = def( + [ + ], + + function () { + var die = function (msg) { + throw msg || new Error('unknown error'); + }; + + return { + die: die + }; + } +); +module.config.mapper = def( + [ + ], + + function () { + var flat = function (id) { + return id; + }; + + var hierarchical = function (id) { + return id.replace(/\./g, '/'); + }; + + var constant = function (name) { + return function () { + return name; + }; + }; + + return { + flat: flat, + hierarchical: hierarchical, + constant: constant + }; + } +); +module.api = def( + [ + module.runtime + ], + + function (runtime) { + var delegate = function (method) { + return function () { + return runtime[method].apply(null, arguments); + }; + }; + + return { + define: delegate('define'), + require: delegate('require'), + demand: delegate('demand'), + main: delegate('main'), + load: delegate('load'), + loadscript: delegate('loadscript') + }; + } +); +module.util.path = def( + [ + ], + + function () { + var dirname = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(0, end); + }; + + var basename = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(end + 1); + }; + + return { + basename: basename, + dirname: dirname + }; + } +); +module.util.locator = def( + [ + ], + + function () { + var browser = function () { + var scripts = document.getElementsByTagName("script"); + return scripts[scripts.length - 1].src; + }; + + var runtime = module.runtime.locate; + + var locate = function () { + var f = runtime || browser; + return f(); + }; + + return { + locate: locate + }; + } +); +module.util.pather = def( + [ + module.util.path + ], + + function (path) { + var create = function (relativeto) { + var base = path.dirname(relativeto); + return function (path) { + return base + '/' + path; + }; + }; + + return { + create: create + }; + } +);module.modulator.modulators = def( + [ + ephox.bolt.kernel.fp.functions, + ephox.bolt.kernel.modulator.bolt, + ephox.bolt.loader.api.commonjsevaller, + ephox.bolt.loader.api.scripttag, + ephox.bolt.loader.api.xhrevaller, + ephox.bolt.loader.api.xhrinjector + ], + + function (fn, bolt, commonjsevaller, scripttag, xhrevaller, xhrinjector) { + var wrap = function (modulator, loader) { + var create = fn.curry(modulator.create, loader); + + return { + create: create + } + }; + + return { + boltcommonjs: wrap(bolt, commonjsevaller), + boltscripttag: wrap(bolt, scripttag), + boltxhreval: wrap(bolt, xhrevaller), + boltxhrinjector: wrap(bolt, xhrinjector) + }; + } +); +module.config.builtins = def( + [ + ephox.bolt.module.modulator.modulators.boltscripttag, + ephox.bolt.module.modulator.modulators.boltcommonjs + ], + + function (boltscripttag, boltcommonjs) { + return { + // TODO: 'amd' is maintained for backwards compatibility, will be removed + // at some point. + browser: { bolt: boltscripttag, amd: boltscripttag }, + commonjs: { bolt: boltcommonjs, amd: boltcommonjs } + }; + } +); +module.config.specs = def( + [ + module.util.pather + ], + + function (pather) { + var type = function (type, implementation) { + return { + type: type, + implementation: implementation, + modulator: implementation + '.Modulator', + compiler: implementation + '.Compiler' + }; + }; + + var source = function (relativeto) { + return function (type /*, args */) { + return { + type: type, + relativeto: relativeto, + args: [ pather.create(relativeto) ].concat(Array.prototype.slice.call(arguments, 1)) + }; + } + }; + + return { + type: type, + source: source + }; + } +); +module.reader.bouncing = def( + [ + ephox.bolt.kernel.fp.array, + module.error.error, + module.config.specs + ], + + function (ar, error, specs) { + var bounce = function (done, read, acc) { + var next = acc.configs.shift(); + read(next.relativeto, next.config, done, acc); + }; + + var tick = function (file, cfg, done, read, acc) { + var munged = ar.map(cfg.configs || [], function (config) { + return { relativeto: file, config: config }; + }); + var accumulated = { + sources: acc.sources.concat(cfg.sources || []), + types: acc.types.concat(cfg.types || []), + configs: munged.concat(acc.configs) + }; + if (accumulated.configs.length > 0) + bounce(done, read, accumulated); + else + done({ sources: accumulated.sources, types: accumulated.types }); + }; + + /* + * All precedence is depth-first, pre-order. Example: + * + * A + * /-\ + * B C + * /| |\ + * D E F G + * + * Configs are read in A, B, D, E, C, F, G. + * + * If configs mixed delegation and sources, the + * sources would be ordered the same: A, B, D, E, C, F, G. + */ + + var evaluate = function (file, payload, done, read, acc) { + var result = {}; + /* eval scope */ + var mapper = module.config.mapper; + var type = specs.type; + var source = specs.source(file); + var configure = function (configuration) { + result = configuration; + }; + try { + eval(payload); + } catch (e) { + throw 'Could not load configuration [' + file + '], with: ' + e; + } + tick(file, result, done, read, acc); + }; + + return { + evaluate: evaluate + }; + } +); +module.reader.browser = def( + [ + module.error.error, + module.reader.bouncing, + module.util.path, + ephox.bolt.loader.transporter.xhr + ], + + function (error, bouncing, path, xhr) { + var read = function (relativeto, file, done, acc) { + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = base + '/' + file; + xhr.request(absolute, function (payload) { + bouncing.evaluate(absolute, payload, done, read, accumulated); + }, error.die); + }; + + return { + read: read + }; + } +); +module.reader.node = def( + [ + module.reader.bouncing + ], + + function (bouncing, path, fs) { + var read = function (relativeto, file, done, acc) { + var fs = require('fs'); + var path = require('path'); + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = path.resolve(base, file); + var payload = fs.readFileSync(absolute, 'UTF-8'); + bouncing.evaluate(absolute, payload, done, read, accumulated); + }; + + return { + read: read + }; + } +); +module.reader.direct = def( + [ + ], + + function () { + var create = function (configuration) { + return function (done) { + done({ + sources: configuration.sources || [], + types: configuration.types || [], + configs: configuration.configs || [] + }); + }; + }; + + return { + create: create + }; + } +); +module.bootstrap.configloader = def( + [ + module.util.locator, + module.reader.browser + ], + + function (locator, browser) { + var create = function (file) { + var script = locator.locate(); + return function (done) { + browser.read(script, file, done); + }; + }; + + return { + create: create + }; + } +);module.bootstrap.deferred = def( + [ + ephox.bolt.kernel.fp.array + ], + + function (ar) { + var deferred = []; + + var require = function (ids, fn) { + var r = function (real) { + real(ids, fn); + }; + deferred.push(r); + }; + + var configured = function (require) { + ar.each(deferred, function (action) { + action(require); + }); + deferred = []; + }; + + return { + require: require, + configured: configured + }; + } +); +module.bootstrap.main = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.runtime + ], + + function (config, deferred, runtime) { + var main = function (id, args, configids, callback) { + runtime.require(configids || [], function () { + callback && callback.apply(null, arguments); + runtime.require([ id ], function (module) { + module.apply(null, args || []); + }); + }); + }; + + return { + main: main + }; + } +); +module.bootstrap.install = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.bootstrap.main, + module.runtime, + module.error.error + ], + + function (config, deferred, main, runtime, error) { + var notready = function () { throw 'bolt not initialised, can not call define or demand, did you mean to use require or main?'; }; + + var install = function (reader, builtins, load, loadscript) { + runtime.define = notready; + runtime.demand = notready; + runtime.require = deferred.require; + runtime.main = main.main; + runtime.load = load; + runtime.loadscript = loadscript; + + reader(function (configuration) { + var bolt = config.configure(configuration, builtins, error.die); + runtime.define = bolt.define; + runtime.require = bolt.require; + runtime.demand = bolt.demand; + + deferred.configured(runtime.require); + }); + }; + + return { + install: install + }; + } +); + +})(Function('return this')()); +(function (global) { + var obj = ephox.bolt.kernel.fp.object; + var api = ephox.bolt.module.api; + var builtins = ephox.bolt.module.config.builtins.browser; + var install = ephox.bolt.module.bootstrap.install; + var reader = ephox.bolt.module.bootstrap.configloader.create("browser.js"); + var transport = ephox.bolt.loader.transporter.xhr.request; + var script = ephox.bolt.loader.api.scripttag.load; + install.install(reader, builtins, transport, script); + obj.merge(global, api); +})(Function("return this;")()); \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/config/bolt/bootstrap-demo.js b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-demo.js new file mode 100644 index 0000000..c07c094 --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-demo.js @@ -0,0 +1,1491 @@ +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var kernel = bolt.kernel = bolt.kernel || {}; +kernel.api = kernel.api || {}; +kernel.async = kernel.api || {}; +kernel.fp = kernel.fp || {}; +kernel.modulator = kernel.modulator || {}; +kernel.module = kernel.module || {}; +kernel.fp.array = def( + [ + ], + + function () { + var equals = function (a1, a2) { + if (a1.length !== a2.length) + return false; + for (var i = 0; i < a1.length; ++i) + if (a1[i] !== a2[i]) + return false; + return true; + }; + + var forall = function (a, f) { + var fn = f || function (x) { + return x === true; + }; + for (var i = 0; i < a.length; ++i) + if (fn(a[i]) !== true) + return false; + return true; + }; + + var map = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + r.push(f(a[i], i)); + return r; + }; + + var flatten = function (a) { + var r = []; + for (var i = 0; i < a.length; ++i) + r = r.concat(a[i]); + return r; + }; + + var flatmap = function (a, f) { + return flatten(map(a, f)); + }; + + var filter = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + if (f(a[i])) + r.push(a[i]); + return r; + }; + + var each = map; + + var contains = function (a, x) { + return !forall(a, function (v) { + return v !== x; + }); + }; + + var indexof = function (a, x) { + for (var i = 0; i < a.length; ++i) + if (a[i] === x) + return i; + return -1; + }; + + return { + equals: equals, + forall: forall, + map: map, + flatten: flatten, + flatmap: flatmap, + filter: filter, + each: each, + contains: contains, + indexof: indexof + }; + } +); +kernel.fp.object = def( + [ + ], + + function () { + var map = function (o, f) { + var r = {}; + for (var i in o) + if (o.hasOwnProperty(i)) + r[i] = f(i, o[i]); + return r; + }; + + var each = map; + + var merge = function (d, s) { + each(s, function (k, v) { + d[k] = v; + }); + }; + + var keys = function (o) { + var r = []; + each(o, function (k) { + r.push(k); + }); + return r; + }; + + return { + each: each, + keys: keys, + map: map, + merge: merge + }; + } +); +kernel.fp.functions = def( + [ + ], + + function () { + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (z) { + return function () { + var slice = Array.prototype.slice; + return !z.apply(null, slice.call(arguments, 0)); + }; + }; + + var apply = function (f) { + var slice = Array.prototype.slice; + return f.apply(null, slice.call(arguments, 0)); + }; + + return { + curry: curry, + not: not, + apply: apply + }; + } +);kernel.async.map = def( + [ + kernel.fp.array + ], + + function (ar) { + var amap = function (data, f, oncomplete) { + var total = data.length; + var count = 0; + var results = []; + + ar.each(data, function (datum, i) { + f(datum, function (result) { + ++count; + results[i] = result; + if (count === total) + oncomplete(results); + }); + }); + }; + + return { + amap: amap + }; + } +); +/** + * This module has a dual responsibility: + * 1. Ensures that asynchronous function calls, 'f', that share the same + * 'key' are not executed in parallel. + * 2. In the case where an attempt to call in parallel is prevented, + * the 'action' callbacks are executed when the asynchronous call is + * completed. + * + * Example: + * When we async-map to remotely fetch module definition, it is + * important that only a single define is evaluated, but the + * notification that the definition has completed is propagated + * to all interested parties. + * + * 1. we require dependencies 'x' and 'y' + * + * 2. both x and y are defined in the same file (i.e. compiled together), 'a.js'. + * + * 3. we resolve x and y, to their load spec using a modulator + * x_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * y_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * + * 4. we make the piggyback call for x: + * piggybacker.piggyback(x_spec.url, x_spec.load, xdone); + * + * this will register the 'xdone' action, and actually + * trigger the load call, with a synthetic callback + * responsible for triggering all registered actions. + * + * 5. we make the piggyback call for y: + * piggybacker.piggyback(y_spec.url, y_spec.load, ydone); + * + * this will register the 'ydone' action, but NOT trigger + * the load call. + * + * 6. the load call completes, and calls the synthetic callback, + * which is responsible for triggering both 'xdone' and 'ydone'. + * + * 7. something else happens that means we have to load 'a.js' again, + * the piggybacker DOES NOT prevent this call, and will follow + * the above process. + */ +kernel.async.piggybacker = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function () { + var queue = {}; // key -> [actions] + + var process = function (key) { + var actions = queue[key]; + delete queue[key]; + ar.each(actions, fn.apply); + }; + + var piggyback = function (key, f, action) { + if (queue[key] === undefined) { + queue[key] = [ action ]; + f(fn.curry(process, key)); + } else { + queue[key].push(action); + } + }; + + return { + piggyback: piggyback + }; + }; + + return { + create: create + }; + } +); +kernel.modulator.globalator = def( + [ + ], + + function () { + var create = function () { + // FIX pull out + var resolve = function (name, scope) { + var parts = name.split('.'); + var r = scope; + for (var i = 0; i < parts.length && r !== undefined; ++i) + r = r[parts[i]]; + return r; + }; + + var global = Function('return this')(); + + var can = function (id) { + return id.indexOf('global!') === 0; + }; + + var get = function (id, define, require) { + var name = id.substring('global!'.length); + + var load = function (onsuccess, onfailure) { + var instance = resolve(name, global); + if (instance !== undefined) { + define(id, [], function () { return instance; }); + onsuccess(); + } else { + onfailure('Modulator error: could not resolve global [' + name + ']'); + } + }; + + return { + url: id, // this just needs to be unique, no download required. + load: load, + serial: true + }; + }; + + return { + can: can, + get: get + } + }; + return { + create: create + }; + } +); +kernel.modulator.bolt = def( + [ + kernel.fp.functions + ], + + function (fn) { + var create = function (loader, pather, namespace, path, idTransformer, options) { + var can = function (id) { + return id === namespace || id.indexOf(namespace + '.') === 0 || id.indexOf(namespace + '/') === 0; + }; + + var get = function (id) { + var before = options !== undefined && options.absolute === true ? path : pather(path); + var after = options !== undefined && options.fresh === true ? '?cachebuster=' + new Date().getTime() : ''; + var url = before + "/" + idTransformer(id) + '.js' + after; + var load = fn.curry(loader.load, url); + + return { + url: url, + load: load, + serial: false + }; + }; + + return { + can: can, + get: get + }; + }; + + return { + create: create + }; + } +);kernel.module.stratifier = def( + [ + kernel.fp.array + ], + + function (ar) { + var stratify = function (specs) { + var parallels = ar.filter(specs, function (spec) { + return !spec.serial; + }); + return parallels.length > 0 ? parallels : specs.slice(0, 1); + }; + + return { + stratify: stratify + }; + } +); +/** + * This module performs dependency analysis of strings that depend on sets of + * strings. + * + * The input is an array of root strings to start analysis from, and an object + * that contains a mapping of each string to the strings it depends on. + * + * Performing an analysis results in either: + * 1. an empty array, indicating that all dependencies are satisfied, + * 2. an array of strings that are, at the minimum, still needed in order to + * satisfy the given dependency trees, or + * 3. an array of strings that form a dependency cycle. + */ +kernel.module.analyser = def( + [ + kernel.fp.array + ], + + function (array) { + var collect = function (path, name) { + var i = array.indexof(path, name); + var p = path.slice(i); + return p.concat([name]); + }; + + /** + * @param {array} roots Contains a list of root ids + * @param {object} modules Contains dependency information in format: { id: [ 'id1', 'id2' ] } + */ + var analyse = function (roots, modules) { + var done = {}; + var path = []; + var missing = []; + var cycle; + + var children = function (name) { + array.each(modules[name], attempt); + }; + + var examine = function (name) { + if (modules[name]) + children(name); + else + missing.push(name); + }; + + var descend = function (name) { + path.push(name); + examine(name); + path.pop(); + }; + + var decycle = function (name) { + if (array.contains(path, name)) + cycle = collect(path, name); + else + descend(name); + }; + + var attempt = function (name) { + if (!done[name]) { + decycle(name); + done[name] = true; + } + }; + + array.each(roots, attempt); + + return cycle ? { cycle: cycle } : { load: missing }; + }; + + return { + analyse: analyse + }; + } +); +kernel.module.fetcher = def( + [ + kernel.fp.array, + kernel.fp.functions, + kernel.async.map, + kernel.async.piggybacker, + kernel.module.stratifier + ], + + function (ar, fn, map, piggybacker, stratifier) { + var create = function (regulator, validator, onerror, define, require, demand) { + var piggyback = piggybacker.create(); + + var validate = function (onsuccess, results) { + var failed = ar.filter(results, fn.not(validator)); + if (failed.length > 0) + onerror('Fetcher error: modules were not defined: ' + failed.join(', ')); + else + onsuccess(); + }; + + var mapper = function (spec, onresult) { + var action = fn.curry(onresult, spec.id); + var load = function (callback) { + spec.load(callback, onerror); + }; + piggyback.piggyback(spec.url, load, action); + }; + + var asyncfetch = function (specs, onsuccess) { + var oncomplete = fn.curry(validate, onsuccess); + var strata = stratifier.stratify(specs); + map.amap(strata, mapper, oncomplete); + }; + + var fetch = function (ids, onsuccess) { + regulator.regulate(ids, define, require, demand, function (specs) { + asyncfetch(specs, onsuccess); + }, onerror); + }; + + return { + fetch: fetch + }; + }; + + return { + create: create + }; + } +); +kernel.module.loader = def( + [ + kernel.module.analyser + ], + + function (analyser) { + var load = function (roots, deps, fetcher, oncontinue, onsuccess, onerror) { + var result = analyser.analyse(roots, deps); + + if (result.cycle) + onerror('Dependency error: a circular module dependency exists from ' + result.cycle.join(' ~> ')); + else if (result.load.length === 0) + onsuccess(); + else + fetcher.fetch(result.load, oncontinue); + }; + + return { + load: load + }; + } +); +kernel.module.manager = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.module.loader, + kernel.module.fetcher + ], + + function (ar, obj, loader, fetcher) { + var create = function (regulator, onerror) { + var blueprints = {}; // id -> { id: string, dependencies: [ string ], definition: function } + var modules = {}; // id -> module + + // Adds a module to the system. + var define = function (id, dependencies, definition) { + if (id === undefined) + onerror("Define error: module id can not be undefined"); + else if (blueprints[id] !== undefined) + onerror("Define error: module '" + id + "' is already defined"); + else + blueprints[id] = { id: id, dependencies: dependencies, definition: definition }; + }; + + // Loads a set of modules asynchronously. + var require = function (ids, callback) { + var onsuccess = function () { + var instances = ar.map(ids, demand); + callback.apply(null, instances); + }; + + var oncontinue = function () { + var deps = obj.map(blueprints, function (k, v) { + return v.dependencies; + }); + loader.load(ids, deps, fetch, oncontinue, onsuccess, onerror); + }; + + oncontinue(); + }; + + // Instantiates a module and all of its dependencies. + var demand = function (id) { + if (modules[id] !== undefined) + return modules[id]; + if (blueprints[id] === undefined) + throw "module '" + id + "' is not defined"; + var result = instantiate(id); + if (result === undefined) + throw "module '" + id + "' returned undefined from definition function"; + modules[id] = result; + return result; + }; + + var instantiate = function (id) { + var blueprint = blueprints[id]; + var args = ar.map(blueprint.dependencies, demand); // Instantiate dependencies + return blueprint.definition.apply(null, args); // Instantiate self + }; + + var validator = function (id) { return blueprints[id] !== undefined; }; + var fetch = fetcher.create(regulator, validator, onerror, define, require, demand); + + return { + define: define, + require: require, + demand: demand + }; + }; + + return { + create: create + }; + } +); +kernel.api.sources = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.modulator.globalator + ], + + function (ar, obj, globalator) { + var create = function (builtins, configuration) { + var data = { + 'global': { instance: globalator } + }; + obj.each(builtins, function (key, value) { + data[key] = { instance: value }; + }); + ar.each(configuration.types, function (spec) { + data[spec.type] = { id: spec.modulator }; + }); + var sourcespecs = configuration.sources.slice(0); + var sources = [ globalator.create() ]; + + var guard = function (type) { + if (data[type] === undefined) + throw 'Unknown modulator type [' + type + '].'; + }; + + var isResolved = function (type) { + guard(type); + return data[type].instance !== undefined; + }; + + var idOf = function (type) { + guard(type); + return data[type].id; + }; + + var instanceOf = function (type) { + guard(type); + return data[type].instance; + }; + + var register = function (type, instance) { + guard(type); + data[type].instance = instance; + }; + + var find = function (id) { + for (var i = 0; i < sources.length; ++i) + if (sources[i].can(id)) + return { found: sources[i] }; + return { notfound: true }; + }; + + var crank = function () { + var left = []; + ar.each(sourcespecs, function (spec) { + if (isResolved(spec.type)) { + var instance = instanceOf(spec.type); + var source = instance.create.apply(null, spec.args); + sources.push(source); + } else + left.push(spec); + }); + sourcespecs = left; + }; + + return { + isResolved: isResolved, + idOf: idOf, + instanceOf: instanceOf, + register: register, + find: find, + crank: crank + }; + }; + + return { + create: create + }; + } +); +kernel.api.regulator = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function (sources) { + /* + * 1. Resolve configuration as much as possible + * 2. Check for unresolved modulator types that are required to continue. + * a) Go ahead and resolve, if we have everything we need. + * b) Delay, requiring the modulators, then retry. + */ + var regulate = function (ids, define, require, demand, onsuccess, onerror) { + sources.crank(); + var required = ar.map(ids, determinetype); + var unresolved = ar.filter(required, fn.not(sources.isResolved)); + if (unresolved.length === 0) + resolve(ids, define, require, demand, onsuccess, onerror); + else + delay(unresolved, ids, define, require, demand, onsuccess, onerror); + }; + + var resolve = function (ids, define, require, demand, onsuccess, onerror) { + var r = []; + for (var i = 0; i < ids.length; ++i) { + var id = ids[i]; + var source = sources.find(id); + if (source.notfound) { + onerror('Could not find source for module [' + id + ']'); + return; + } + var spec = source.found.get(id, define, require, demand); + r[i] = build(id, spec); + } + onsuccess(r); + }; + + var build = function (id, spec) { + return { + id: id, + url: spec.url, + load: spec.load, + serial: spec.serial + }; + }; + + var delay = function (types, ids, define, require, demand, onsuccess, onerror) { + var modulatorids = ar.map(types, sources.idOf); + require(modulatorids, function (/* modulators */) { + var modulators = arguments; + ar.each(types, function (type, i) { + sources.register(type, modulators[i]); + }); + regulate(ids, define, require, demand, onsuccess, onerror); + }); + }; + + var determinetype = function (id) { + var index = id.indexOf('!'); + return index === -1 ? 'bolt' : id.substring(0, index); + }; + + return { + regulate: regulate + }; + }; + + return { + create: create + }; + } +); +kernel.api.config = def( + [ + kernel.module.manager, + kernel.api.regulator, + kernel.api.sources + ], + + function (manager, regulator, sources) { + var configure = function (configuration, builtins, onerror) { + var s = sources.create(builtins, configuration); + var r = regulator.create(s); + var engine = manager.create(r, onerror); + + return { + define: engine.define, + require: engine.require, + demand: engine.demand + }; + }; + + return { + configure: configure + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var loader = bolt.loader = bolt.loader || {}; +loader.executor = loader.executor || {}; +loader.api = loader.api || {}; +loader.transporter = loader.transporter || {}; +loader.tag = loader.tag || {}; +loader.tag.script = def( + [ + ], + + function () { + var guard = function (callback) { + return function (evt) { + if (evt.srcElement.readyState === "loaded" || evt.srcElement.readyState === "complete") + callback(); + }; + }; + + var ie = function (el) { + return el.attachEvent && !window.opera; + }; + + var onload = function (el, callback) { + if (ie(el)) + el.attachEvent("onreadystatechange", guard(callback)); + else + el.addEventListener("load", callback, false); + }; + + var createtag = function (callback) { + var el = document.createElement("script"); + el.type = "text/javascript"; + onload(el, callback); + return el; + }; + + var insert = function (decorator, callback) { + var el = createtag(callback); + decorator(el); + var head = document.getElementsByTagName("head")[0]; + head.appendChild(el); + }; + + return { + insert: insert + }; + } +); +loader.transporter.commonjs = def( + [ + ], + + function () { + var read = function (url, success, error) { + var fs = require('fs'); + fs.exists(url, function (exists) { + if (exists) + fs.readFile(url, 'UTF-8', function (err, data) { + if (err) + error('Error reading file [' + url + '], error [' + err + ']'); + else + success(data); + }); + else + error('File does not exist [' + url + ']'); + }); + }; + + return { + read: read + }; + } +); +loader.transporter.xhr = def( + [ + ], + + function () { + var requestObject = function () { + // Correct way to use XMLHttpRequest in IE: + // http://blogs.msdn.com/b/ie/archive/2006/01/23/516393.aspx + var factories = [ + function () { return new XMLHttpRequest() }, + function () { return new ActiveXObject("Microsoft.XMLHTTP") } + ]; + + return fallback(factories); + }; + + var fallback = function (items) { + for (var i = 0; i < items.length; ++i) { + try { + return items[i](); + } catch (e) { + } + } + }; + + var handler = function (req, url, success, error) { + return function () { + if (req.readyState === 4) + done(req, url, success, error); + }; + }; + + var done = function (req, url, success, error) { + if (req.status === 200 || req.status === 304) + success(req.responseText); + else + error('Transport error: ' + req.status + ' ' + req.statusText + ' for resource: "' + url + '"'); + }; + + var getUrl = function (req, url, success, error) { + req.open('GET', url, true); + req.onreadystatechange = handler(req, url, success, error); + req.send(); + }; + + var request = function (url, success, error) { + var req = requestObject(); + if (req) + getUrl(req, url, success, error); + else + error('Transport error: browser does not support XMLHttpRequest.'); + }; + + return { + request: request + }; + } +); +loader.executor.evaller = def( + [ + ], + + function () { + var execute = function (data, onsuccess, onfailure) { + try { + eval(data); + } catch(e) { + onfailure(e); + return; + } + + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.executor.injector = def( + [ + loader.tag.script + ], + + function (script) { + var execute = function (data, onsuccess, onfailure) { + var inject = function (tag) { + tag.text = data; + }; + + var noop = function () {}; + + // Injection does not fire events, but execution happens synchronously, + // so we just make an explicit callback + script.insert(inject, noop); + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.api.commonjsevaller = def( + [ + loader.transporter.commonjs, + loader.executor.evaller + ], + + function (commonjs, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + commonjs.read(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.scripttag = def( + [ + loader.tag.script + ], + + function (script) { + var load = function (url, onsuccess, onfailure) { + var sourcer = function (tag) { + tag.src = url; + }; + + script.insert(sourcer, onsuccess); + }; + + return { + load: load + }; + } +); +loader.api.xhrevaller = def( + [ + loader.transporter.xhr, + loader.executor.evaller + ], + + function (xhr, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.xhrinjector = def( + [ + loader.transporter.xhr, + loader.executor.injector + ], + + function (xhr, injector) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + injector.execute(data, onsuccess); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var module = bolt.module = bolt.module || {}; +module.bootstrap = module.bootstrap || {}; +module.config = module.config || {}; +module.error = module.error || {}; +module.modulator = module.modulator || {}; +module.reader = module.reader || {}; +module.runtime = module.runtime || {}; +module.util = module.util || {}; +module.error.error = def( + [ + ], + + function () { + var die = function (msg) { + throw msg || new Error('unknown error'); + }; + + return { + die: die + }; + } +); +module.config.mapper = def( + [ + ], + + function () { + var flat = function (id) { + return id; + }; + + var hierarchical = function (id) { + return id.replace(/\./g, '/'); + }; + + var constant = function (name) { + return function () { + return name; + }; + }; + + return { + flat: flat, + hierarchical: hierarchical, + constant: constant + }; + } +); +module.api = def( + [ + module.runtime + ], + + function (runtime) { + var delegate = function (method) { + return function () { + return runtime[method].apply(null, arguments); + }; + }; + + return { + define: delegate('define'), + require: delegate('require'), + demand: delegate('demand'), + main: delegate('main'), + load: delegate('load'), + loadscript: delegate('loadscript') + }; + } +); +module.util.path = def( + [ + ], + + function () { + var dirname = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(0, end); + }; + + var basename = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(end + 1); + }; + + return { + basename: basename, + dirname: dirname + }; + } +); +module.util.locator = def( + [ + ], + + function () { + var browser = function () { + var scripts = document.getElementsByTagName("script"); + return scripts[scripts.length - 1].src; + }; + + var runtime = module.runtime.locate; + + var locate = function () { + var f = runtime || browser; + return f(); + }; + + return { + locate: locate + }; + } +); +module.util.pather = def( + [ + module.util.path + ], + + function (path) { + var create = function (relativeto) { + var base = path.dirname(relativeto); + return function (path) { + return base + '/' + path; + }; + }; + + return { + create: create + }; + } +);module.modulator.modulators = def( + [ + ephox.bolt.kernel.fp.functions, + ephox.bolt.kernel.modulator.bolt, + ephox.bolt.loader.api.commonjsevaller, + ephox.bolt.loader.api.scripttag, + ephox.bolt.loader.api.xhrevaller, + ephox.bolt.loader.api.xhrinjector + ], + + function (fn, bolt, commonjsevaller, scripttag, xhrevaller, xhrinjector) { + var wrap = function (modulator, loader) { + var create = fn.curry(modulator.create, loader); + + return { + create: create + } + }; + + return { + boltcommonjs: wrap(bolt, commonjsevaller), + boltscripttag: wrap(bolt, scripttag), + boltxhreval: wrap(bolt, xhrevaller), + boltxhrinjector: wrap(bolt, xhrinjector) + }; + } +); +module.config.builtins = def( + [ + ephox.bolt.module.modulator.modulators.boltscripttag, + ephox.bolt.module.modulator.modulators.boltcommonjs + ], + + function (boltscripttag, boltcommonjs) { + return { + // TODO: 'amd' is maintained for backwards compatibility, will be removed + // at some point. + browser: { bolt: boltscripttag, amd: boltscripttag }, + commonjs: { bolt: boltcommonjs, amd: boltcommonjs } + }; + } +); +module.config.specs = def( + [ + module.util.pather + ], + + function (pather) { + var type = function (type, implementation) { + return { + type: type, + implementation: implementation, + modulator: implementation + '.Modulator', + compiler: implementation + '.Compiler' + }; + }; + + var source = function (relativeto) { + return function (type /*, args */) { + return { + type: type, + relativeto: relativeto, + args: [ pather.create(relativeto) ].concat(Array.prototype.slice.call(arguments, 1)) + }; + } + }; + + return { + type: type, + source: source + }; + } +); +module.reader.bouncing = def( + [ + ephox.bolt.kernel.fp.array, + module.error.error, + module.config.specs + ], + + function (ar, error, specs) { + var bounce = function (done, read, acc) { + var next = acc.configs.shift(); + read(next.relativeto, next.config, done, acc); + }; + + var tick = function (file, cfg, done, read, acc) { + var munged = ar.map(cfg.configs || [], function (config) { + return { relativeto: file, config: config }; + }); + var accumulated = { + sources: acc.sources.concat(cfg.sources || []), + types: acc.types.concat(cfg.types || []), + configs: munged.concat(acc.configs) + }; + if (accumulated.configs.length > 0) + bounce(done, read, accumulated); + else + done({ sources: accumulated.sources, types: accumulated.types }); + }; + + /* + * All precedence is depth-first, pre-order. Example: + * + * A + * /-\ + * B C + * /| |\ + * D E F G + * + * Configs are read in A, B, D, E, C, F, G. + * + * If configs mixed delegation and sources, the + * sources would be ordered the same: A, B, D, E, C, F, G. + */ + + var evaluate = function (file, payload, done, read, acc) { + var result = {}; + /* eval scope */ + var mapper = module.config.mapper; + var type = specs.type; + var source = specs.source(file); + var configure = function (configuration) { + result = configuration; + }; + try { + eval(payload); + } catch (e) { + throw 'Could not load configuration [' + file + '], with: ' + e; + } + tick(file, result, done, read, acc); + }; + + return { + evaluate: evaluate + }; + } +); +module.reader.browser = def( + [ + module.error.error, + module.reader.bouncing, + module.util.path, + ephox.bolt.loader.transporter.xhr + ], + + function (error, bouncing, path, xhr) { + var read = function (relativeto, file, done, acc) { + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = base + '/' + file; + xhr.request(absolute, function (payload) { + bouncing.evaluate(absolute, payload, done, read, accumulated); + }, error.die); + }; + + return { + read: read + }; + } +); +module.reader.node = def( + [ + module.reader.bouncing + ], + + function (bouncing, path, fs) { + var read = function (relativeto, file, done, acc) { + var fs = require('fs'); + var path = require('path'); + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = path.resolve(base, file); + var payload = fs.readFileSync(absolute, 'UTF-8'); + bouncing.evaluate(absolute, payload, done, read, accumulated); + }; + + return { + read: read + }; + } +); +module.reader.direct = def( + [ + ], + + function () { + var create = function (configuration) { + return function (done) { + done({ + sources: configuration.sources || [], + types: configuration.types || [], + configs: configuration.configs || [] + }); + }; + }; + + return { + create: create + }; + } +); +module.bootstrap.configloader = def( + [ + module.util.locator, + module.reader.browser + ], + + function (locator, browser) { + var create = function (file) { + var script = locator.locate(); + return function (done) { + browser.read(script, file, done); + }; + }; + + return { + create: create + }; + } +);module.bootstrap.deferred = def( + [ + ephox.bolt.kernel.fp.array + ], + + function (ar) { + var deferred = []; + + var require = function (ids, fn) { + var r = function (real) { + real(ids, fn); + }; + deferred.push(r); + }; + + var configured = function (require) { + ar.each(deferred, function (action) { + action(require); + }); + deferred = []; + }; + + return { + require: require, + configured: configured + }; + } +); +module.bootstrap.main = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.runtime + ], + + function (config, deferred, runtime) { + var main = function (id, args, configids, callback) { + runtime.require(configids || [], function () { + callback && callback.apply(null, arguments); + runtime.require([ id ], function (module) { + module.apply(null, args || []); + }); + }); + }; + + return { + main: main + }; + } +); +module.bootstrap.install = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.bootstrap.main, + module.runtime, + module.error.error + ], + + function (config, deferred, main, runtime, error) { + var notready = function () { throw 'bolt not initialised, can not call define or demand, did you mean to use require or main?'; }; + + var install = function (reader, builtins, load, loadscript) { + runtime.define = notready; + runtime.demand = notready; + runtime.require = deferred.require; + runtime.main = main.main; + runtime.load = load; + runtime.loadscript = loadscript; + + reader(function (configuration) { + var bolt = config.configure(configuration, builtins, error.die); + runtime.define = bolt.define; + runtime.require = bolt.require; + runtime.demand = bolt.demand; + + deferred.configured(runtime.require); + }); + }; + + return { + install: install + }; + } +); + +})(Function('return this')()); +(function (global) { + var obj = ephox.bolt.kernel.fp.object; + var api = ephox.bolt.module.api; + var builtins = ephox.bolt.module.config.builtins.browser; + var install = ephox.bolt.module.bootstrap.install; + var reader = ephox.bolt.module.bootstrap.configloader.create("demo.js"); + var transport = ephox.bolt.loader.transporter.xhr.request; + var script = ephox.bolt.loader.api.scripttag.load; + install.install(reader, builtins, transport, script); + obj.merge(global, api); +})(Function("return this;")()); \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/config/bolt/bootstrap-prod.js b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-prod.js new file mode 100644 index 0000000..d999c52 --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/bootstrap-prod.js @@ -0,0 +1,1491 @@ +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var kernel = bolt.kernel = bolt.kernel || {}; +kernel.api = kernel.api || {}; +kernel.async = kernel.api || {}; +kernel.fp = kernel.fp || {}; +kernel.modulator = kernel.modulator || {}; +kernel.module = kernel.module || {}; +kernel.fp.array = def( + [ + ], + + function () { + var equals = function (a1, a2) { + if (a1.length !== a2.length) + return false; + for (var i = 0; i < a1.length; ++i) + if (a1[i] !== a2[i]) + return false; + return true; + }; + + var forall = function (a, f) { + var fn = f || function (x) { + return x === true; + }; + for (var i = 0; i < a.length; ++i) + if (fn(a[i]) !== true) + return false; + return true; + }; + + var map = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + r.push(f(a[i], i)); + return r; + }; + + var flatten = function (a) { + var r = []; + for (var i = 0; i < a.length; ++i) + r = r.concat(a[i]); + return r; + }; + + var flatmap = function (a, f) { + return flatten(map(a, f)); + }; + + var filter = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + if (f(a[i])) + r.push(a[i]); + return r; + }; + + var each = map; + + var contains = function (a, x) { + return !forall(a, function (v) { + return v !== x; + }); + }; + + var indexof = function (a, x) { + for (var i = 0; i < a.length; ++i) + if (a[i] === x) + return i; + return -1; + }; + + return { + equals: equals, + forall: forall, + map: map, + flatten: flatten, + flatmap: flatmap, + filter: filter, + each: each, + contains: contains, + indexof: indexof + }; + } +); +kernel.fp.object = def( + [ + ], + + function () { + var map = function (o, f) { + var r = {}; + for (var i in o) + if (o.hasOwnProperty(i)) + r[i] = f(i, o[i]); + return r; + }; + + var each = map; + + var merge = function (d, s) { + each(s, function (k, v) { + d[k] = v; + }); + }; + + var keys = function (o) { + var r = []; + each(o, function (k) { + r.push(k); + }); + return r; + }; + + return { + each: each, + keys: keys, + map: map, + merge: merge + }; + } +); +kernel.fp.functions = def( + [ + ], + + function () { + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (z) { + return function () { + var slice = Array.prototype.slice; + return !z.apply(null, slice.call(arguments, 0)); + }; + }; + + var apply = function (f) { + var slice = Array.prototype.slice; + return f.apply(null, slice.call(arguments, 0)); + }; + + return { + curry: curry, + not: not, + apply: apply + }; + } +);kernel.async.map = def( + [ + kernel.fp.array + ], + + function (ar) { + var amap = function (data, f, oncomplete) { + var total = data.length; + var count = 0; + var results = []; + + ar.each(data, function (datum, i) { + f(datum, function (result) { + ++count; + results[i] = result; + if (count === total) + oncomplete(results); + }); + }); + }; + + return { + amap: amap + }; + } +); +/** + * This module has a dual responsibility: + * 1. Ensures that asynchronous function calls, 'f', that share the same + * 'key' are not executed in parallel. + * 2. In the case where an attempt to call in parallel is prevented, + * the 'action' callbacks are executed when the asynchronous call is + * completed. + * + * Example: + * When we async-map to remotely fetch module definition, it is + * important that only a single define is evaluated, but the + * notification that the definition has completed is propagated + * to all interested parties. + * + * 1. we require dependencies 'x' and 'y' + * + * 2. both x and y are defined in the same file (i.e. compiled together), 'a.js'. + * + * 3. we resolve x and y, to their load spec using a modulator + * x_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * y_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * + * 4. we make the piggyback call for x: + * piggybacker.piggyback(x_spec.url, x_spec.load, xdone); + * + * this will register the 'xdone' action, and actually + * trigger the load call, with a synthetic callback + * responsible for triggering all registered actions. + * + * 5. we make the piggyback call for y: + * piggybacker.piggyback(y_spec.url, y_spec.load, ydone); + * + * this will register the 'ydone' action, but NOT trigger + * the load call. + * + * 6. the load call completes, and calls the synthetic callback, + * which is responsible for triggering both 'xdone' and 'ydone'. + * + * 7. something else happens that means we have to load 'a.js' again, + * the piggybacker DOES NOT prevent this call, and will follow + * the above process. + */ +kernel.async.piggybacker = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function () { + var queue = {}; // key -> [actions] + + var process = function (key) { + var actions = queue[key]; + delete queue[key]; + ar.each(actions, fn.apply); + }; + + var piggyback = function (key, f, action) { + if (queue[key] === undefined) { + queue[key] = [ action ]; + f(fn.curry(process, key)); + } else { + queue[key].push(action); + } + }; + + return { + piggyback: piggyback + }; + }; + + return { + create: create + }; + } +); +kernel.modulator.globalator = def( + [ + ], + + function () { + var create = function () { + // FIX pull out + var resolve = function (name, scope) { + var parts = name.split('.'); + var r = scope; + for (var i = 0; i < parts.length && r !== undefined; ++i) + r = r[parts[i]]; + return r; + }; + + var global = Function('return this')(); + + var can = function (id) { + return id.indexOf('global!') === 0; + }; + + var get = function (id, define, require) { + var name = id.substring('global!'.length); + + var load = function (onsuccess, onfailure) { + var instance = resolve(name, global); + if (instance !== undefined) { + define(id, [], function () { return instance; }); + onsuccess(); + } else { + onfailure('Modulator error: could not resolve global [' + name + ']'); + } + }; + + return { + url: id, // this just needs to be unique, no download required. + load: load, + serial: true + }; + }; + + return { + can: can, + get: get + } + }; + return { + create: create + }; + } +); +kernel.modulator.bolt = def( + [ + kernel.fp.functions + ], + + function (fn) { + var create = function (loader, pather, namespace, path, idTransformer, options) { + var can = function (id) { + return id === namespace || id.indexOf(namespace + '.') === 0 || id.indexOf(namespace + '/') === 0; + }; + + var get = function (id) { + var before = options !== undefined && options.absolute === true ? path : pather(path); + var after = options !== undefined && options.fresh === true ? '?cachebuster=' + new Date().getTime() : ''; + var url = before + "/" + idTransformer(id) + '.js' + after; + var load = fn.curry(loader.load, url); + + return { + url: url, + load: load, + serial: false + }; + }; + + return { + can: can, + get: get + }; + }; + + return { + create: create + }; + } +);kernel.module.stratifier = def( + [ + kernel.fp.array + ], + + function (ar) { + var stratify = function (specs) { + var parallels = ar.filter(specs, function (spec) { + return !spec.serial; + }); + return parallels.length > 0 ? parallels : specs.slice(0, 1); + }; + + return { + stratify: stratify + }; + } +); +/** + * This module performs dependency analysis of strings that depend on sets of + * strings. + * + * The input is an array of root strings to start analysis from, and an object + * that contains a mapping of each string to the strings it depends on. + * + * Performing an analysis results in either: + * 1. an empty array, indicating that all dependencies are satisfied, + * 2. an array of strings that are, at the minimum, still needed in order to + * satisfy the given dependency trees, or + * 3. an array of strings that form a dependency cycle. + */ +kernel.module.analyser = def( + [ + kernel.fp.array + ], + + function (array) { + var collect = function (path, name) { + var i = array.indexof(path, name); + var p = path.slice(i); + return p.concat([name]); + }; + + /** + * @param {array} roots Contains a list of root ids + * @param {object} modules Contains dependency information in format: { id: [ 'id1', 'id2' ] } + */ + var analyse = function (roots, modules) { + var done = {}; + var path = []; + var missing = []; + var cycle; + + var children = function (name) { + array.each(modules[name], attempt); + }; + + var examine = function (name) { + if (modules[name]) + children(name); + else + missing.push(name); + }; + + var descend = function (name) { + path.push(name); + examine(name); + path.pop(); + }; + + var decycle = function (name) { + if (array.contains(path, name)) + cycle = collect(path, name); + else + descend(name); + }; + + var attempt = function (name) { + if (!done[name]) { + decycle(name); + done[name] = true; + } + }; + + array.each(roots, attempt); + + return cycle ? { cycle: cycle } : { load: missing }; + }; + + return { + analyse: analyse + }; + } +); +kernel.module.fetcher = def( + [ + kernel.fp.array, + kernel.fp.functions, + kernel.async.map, + kernel.async.piggybacker, + kernel.module.stratifier + ], + + function (ar, fn, map, piggybacker, stratifier) { + var create = function (regulator, validator, onerror, define, require, demand) { + var piggyback = piggybacker.create(); + + var validate = function (onsuccess, results) { + var failed = ar.filter(results, fn.not(validator)); + if (failed.length > 0) + onerror('Fetcher error: modules were not defined: ' + failed.join(', ')); + else + onsuccess(); + }; + + var mapper = function (spec, onresult) { + var action = fn.curry(onresult, spec.id); + var load = function (callback) { + spec.load(callback, onerror); + }; + piggyback.piggyback(spec.url, load, action); + }; + + var asyncfetch = function (specs, onsuccess) { + var oncomplete = fn.curry(validate, onsuccess); + var strata = stratifier.stratify(specs); + map.amap(strata, mapper, oncomplete); + }; + + var fetch = function (ids, onsuccess) { + regulator.regulate(ids, define, require, demand, function (specs) { + asyncfetch(specs, onsuccess); + }, onerror); + }; + + return { + fetch: fetch + }; + }; + + return { + create: create + }; + } +); +kernel.module.loader = def( + [ + kernel.module.analyser + ], + + function (analyser) { + var load = function (roots, deps, fetcher, oncontinue, onsuccess, onerror) { + var result = analyser.analyse(roots, deps); + + if (result.cycle) + onerror('Dependency error: a circular module dependency exists from ' + result.cycle.join(' ~> ')); + else if (result.load.length === 0) + onsuccess(); + else + fetcher.fetch(result.load, oncontinue); + }; + + return { + load: load + }; + } +); +kernel.module.manager = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.module.loader, + kernel.module.fetcher + ], + + function (ar, obj, loader, fetcher) { + var create = function (regulator, onerror) { + var blueprints = {}; // id -> { id: string, dependencies: [ string ], definition: function } + var modules = {}; // id -> module + + // Adds a module to the system. + var define = function (id, dependencies, definition) { + if (id === undefined) + onerror("Define error: module id can not be undefined"); + else if (blueprints[id] !== undefined) + onerror("Define error: module '" + id + "' is already defined"); + else + blueprints[id] = { id: id, dependencies: dependencies, definition: definition }; + }; + + // Loads a set of modules asynchronously. + var require = function (ids, callback) { + var onsuccess = function () { + var instances = ar.map(ids, demand); + callback.apply(null, instances); + }; + + var oncontinue = function () { + var deps = obj.map(blueprints, function (k, v) { + return v.dependencies; + }); + loader.load(ids, deps, fetch, oncontinue, onsuccess, onerror); + }; + + oncontinue(); + }; + + // Instantiates a module and all of its dependencies. + var demand = function (id) { + if (modules[id] !== undefined) + return modules[id]; + if (blueprints[id] === undefined) + throw "module '" + id + "' is not defined"; + var result = instantiate(id); + if (result === undefined) + throw "module '" + id + "' returned undefined from definition function"; + modules[id] = result; + return result; + }; + + var instantiate = function (id) { + var blueprint = blueprints[id]; + var args = ar.map(blueprint.dependencies, demand); // Instantiate dependencies + return blueprint.definition.apply(null, args); // Instantiate self + }; + + var validator = function (id) { return blueprints[id] !== undefined; }; + var fetch = fetcher.create(regulator, validator, onerror, define, require, demand); + + return { + define: define, + require: require, + demand: demand + }; + }; + + return { + create: create + }; + } +); +kernel.api.sources = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.modulator.globalator + ], + + function (ar, obj, globalator) { + var create = function (builtins, configuration) { + var data = { + 'global': { instance: globalator } + }; + obj.each(builtins, function (key, value) { + data[key] = { instance: value }; + }); + ar.each(configuration.types, function (spec) { + data[spec.type] = { id: spec.modulator }; + }); + var sourcespecs = configuration.sources.slice(0); + var sources = [ globalator.create() ]; + + var guard = function (type) { + if (data[type] === undefined) + throw 'Unknown modulator type [' + type + '].'; + }; + + var isResolved = function (type) { + guard(type); + return data[type].instance !== undefined; + }; + + var idOf = function (type) { + guard(type); + return data[type].id; + }; + + var instanceOf = function (type) { + guard(type); + return data[type].instance; + }; + + var register = function (type, instance) { + guard(type); + data[type].instance = instance; + }; + + var find = function (id) { + for (var i = 0; i < sources.length; ++i) + if (sources[i].can(id)) + return { found: sources[i] }; + return { notfound: true }; + }; + + var crank = function () { + var left = []; + ar.each(sourcespecs, function (spec) { + if (isResolved(spec.type)) { + var instance = instanceOf(spec.type); + var source = instance.create.apply(null, spec.args); + sources.push(source); + } else + left.push(spec); + }); + sourcespecs = left; + }; + + return { + isResolved: isResolved, + idOf: idOf, + instanceOf: instanceOf, + register: register, + find: find, + crank: crank + }; + }; + + return { + create: create + }; + } +); +kernel.api.regulator = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function (sources) { + /* + * 1. Resolve configuration as much as possible + * 2. Check for unresolved modulator types that are required to continue. + * a) Go ahead and resolve, if we have everything we need. + * b) Delay, requiring the modulators, then retry. + */ + var regulate = function (ids, define, require, demand, onsuccess, onerror) { + sources.crank(); + var required = ar.map(ids, determinetype); + var unresolved = ar.filter(required, fn.not(sources.isResolved)); + if (unresolved.length === 0) + resolve(ids, define, require, demand, onsuccess, onerror); + else + delay(unresolved, ids, define, require, demand, onsuccess, onerror); + }; + + var resolve = function (ids, define, require, demand, onsuccess, onerror) { + var r = []; + for (var i = 0; i < ids.length; ++i) { + var id = ids[i]; + var source = sources.find(id); + if (source.notfound) { + onerror('Could not find source for module [' + id + ']'); + return; + } + var spec = source.found.get(id, define, require, demand); + r[i] = build(id, spec); + } + onsuccess(r); + }; + + var build = function (id, spec) { + return { + id: id, + url: spec.url, + load: spec.load, + serial: spec.serial + }; + }; + + var delay = function (types, ids, define, require, demand, onsuccess, onerror) { + var modulatorids = ar.map(types, sources.idOf); + require(modulatorids, function (/* modulators */) { + var modulators = arguments; + ar.each(types, function (type, i) { + sources.register(type, modulators[i]); + }); + regulate(ids, define, require, demand, onsuccess, onerror); + }); + }; + + var determinetype = function (id) { + var index = id.indexOf('!'); + return index === -1 ? 'bolt' : id.substring(0, index); + }; + + return { + regulate: regulate + }; + }; + + return { + create: create + }; + } +); +kernel.api.config = def( + [ + kernel.module.manager, + kernel.api.regulator, + kernel.api.sources + ], + + function (manager, regulator, sources) { + var configure = function (configuration, builtins, onerror) { + var s = sources.create(builtins, configuration); + var r = regulator.create(s); + var engine = manager.create(r, onerror); + + return { + define: engine.define, + require: engine.require, + demand: engine.demand + }; + }; + + return { + configure: configure + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var loader = bolt.loader = bolt.loader || {}; +loader.executor = loader.executor || {}; +loader.api = loader.api || {}; +loader.transporter = loader.transporter || {}; +loader.tag = loader.tag || {}; +loader.tag.script = def( + [ + ], + + function () { + var guard = function (callback) { + return function (evt) { + if (evt.srcElement.readyState === "loaded" || evt.srcElement.readyState === "complete") + callback(); + }; + }; + + var ie = function (el) { + return el.attachEvent && !window.opera; + }; + + var onload = function (el, callback) { + if (ie(el)) + el.attachEvent("onreadystatechange", guard(callback)); + else + el.addEventListener("load", callback, false); + }; + + var createtag = function (callback) { + var el = document.createElement("script"); + el.type = "text/javascript"; + onload(el, callback); + return el; + }; + + var insert = function (decorator, callback) { + var el = createtag(callback); + decorator(el); + var head = document.getElementsByTagName("head")[0]; + head.appendChild(el); + }; + + return { + insert: insert + }; + } +); +loader.transporter.commonjs = def( + [ + ], + + function () { + var read = function (url, success, error) { + var fs = require('fs'); + fs.exists(url, function (exists) { + if (exists) + fs.readFile(url, 'UTF-8', function (err, data) { + if (err) + error('Error reading file [' + url + '], error [' + err + ']'); + else + success(data); + }); + else + error('File does not exist [' + url + ']'); + }); + }; + + return { + read: read + }; + } +); +loader.transporter.xhr = def( + [ + ], + + function () { + var requestObject = function () { + // Correct way to use XMLHttpRequest in IE: + // http://blogs.msdn.com/b/ie/archive/2006/01/23/516393.aspx + var factories = [ + function () { return new XMLHttpRequest() }, + function () { return new ActiveXObject("Microsoft.XMLHTTP") } + ]; + + return fallback(factories); + }; + + var fallback = function (items) { + for (var i = 0; i < items.length; ++i) { + try { + return items[i](); + } catch (e) { + } + } + }; + + var handler = function (req, url, success, error) { + return function () { + if (req.readyState === 4) + done(req, url, success, error); + }; + }; + + var done = function (req, url, success, error) { + if (req.status === 200 || req.status === 304) + success(req.responseText); + else + error('Transport error: ' + req.status + ' ' + req.statusText + ' for resource: "' + url + '"'); + }; + + var getUrl = function (req, url, success, error) { + req.open('GET', url, true); + req.onreadystatechange = handler(req, url, success, error); + req.send(); + }; + + var request = function (url, success, error) { + var req = requestObject(); + if (req) + getUrl(req, url, success, error); + else + error('Transport error: browser does not support XMLHttpRequest.'); + }; + + return { + request: request + }; + } +); +loader.executor.evaller = def( + [ + ], + + function () { + var execute = function (data, onsuccess, onfailure) { + try { + eval(data); + } catch(e) { + onfailure(e); + return; + } + + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.executor.injector = def( + [ + loader.tag.script + ], + + function (script) { + var execute = function (data, onsuccess, onfailure) { + var inject = function (tag) { + tag.text = data; + }; + + var noop = function () {}; + + // Injection does not fire events, but execution happens synchronously, + // so we just make an explicit callback + script.insert(inject, noop); + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.api.commonjsevaller = def( + [ + loader.transporter.commonjs, + loader.executor.evaller + ], + + function (commonjs, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + commonjs.read(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.scripttag = def( + [ + loader.tag.script + ], + + function (script) { + var load = function (url, onsuccess, onfailure) { + var sourcer = function (tag) { + tag.src = url; + }; + + script.insert(sourcer, onsuccess); + }; + + return { + load: load + }; + } +); +loader.api.xhrevaller = def( + [ + loader.transporter.xhr, + loader.executor.evaller + ], + + function (xhr, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.xhrinjector = def( + [ + loader.transporter.xhr, + loader.executor.injector + ], + + function (xhr, injector) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + injector.execute(data, onsuccess); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var module = bolt.module = bolt.module || {}; +module.bootstrap = module.bootstrap || {}; +module.config = module.config || {}; +module.error = module.error || {}; +module.modulator = module.modulator || {}; +module.reader = module.reader || {}; +module.runtime = module.runtime || {}; +module.util = module.util || {}; +module.error.error = def( + [ + ], + + function () { + var die = function (msg) { + throw msg || new Error('unknown error'); + }; + + return { + die: die + }; + } +); +module.config.mapper = def( + [ + ], + + function () { + var flat = function (id) { + return id; + }; + + var hierarchical = function (id) { + return id.replace(/\./g, '/'); + }; + + var constant = function (name) { + return function () { + return name; + }; + }; + + return { + flat: flat, + hierarchical: hierarchical, + constant: constant + }; + } +); +module.api = def( + [ + module.runtime + ], + + function (runtime) { + var delegate = function (method) { + return function () { + return runtime[method].apply(null, arguments); + }; + }; + + return { + define: delegate('define'), + require: delegate('require'), + demand: delegate('demand'), + main: delegate('main'), + load: delegate('load'), + loadscript: delegate('loadscript') + }; + } +); +module.util.path = def( + [ + ], + + function () { + var dirname = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(0, end); + }; + + var basename = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(end + 1); + }; + + return { + basename: basename, + dirname: dirname + }; + } +); +module.util.locator = def( + [ + ], + + function () { + var browser = function () { + var scripts = document.getElementsByTagName("script"); + return scripts[scripts.length - 1].src; + }; + + var runtime = module.runtime.locate; + + var locate = function () { + var f = runtime || browser; + return f(); + }; + + return { + locate: locate + }; + } +); +module.util.pather = def( + [ + module.util.path + ], + + function (path) { + var create = function (relativeto) { + var base = path.dirname(relativeto); + return function (path) { + return base + '/' + path; + }; + }; + + return { + create: create + }; + } +);module.modulator.modulators = def( + [ + ephox.bolt.kernel.fp.functions, + ephox.bolt.kernel.modulator.bolt, + ephox.bolt.loader.api.commonjsevaller, + ephox.bolt.loader.api.scripttag, + ephox.bolt.loader.api.xhrevaller, + ephox.bolt.loader.api.xhrinjector + ], + + function (fn, bolt, commonjsevaller, scripttag, xhrevaller, xhrinjector) { + var wrap = function (modulator, loader) { + var create = fn.curry(modulator.create, loader); + + return { + create: create + } + }; + + return { + boltcommonjs: wrap(bolt, commonjsevaller), + boltscripttag: wrap(bolt, scripttag), + boltxhreval: wrap(bolt, xhrevaller), + boltxhrinjector: wrap(bolt, xhrinjector) + }; + } +); +module.config.builtins = def( + [ + ephox.bolt.module.modulator.modulators.boltscripttag, + ephox.bolt.module.modulator.modulators.boltcommonjs + ], + + function (boltscripttag, boltcommonjs) { + return { + // TODO: 'amd' is maintained for backwards compatibility, will be removed + // at some point. + browser: { bolt: boltscripttag, amd: boltscripttag }, + commonjs: { bolt: boltcommonjs, amd: boltcommonjs } + }; + } +); +module.config.specs = def( + [ + module.util.pather + ], + + function (pather) { + var type = function (type, implementation) { + return { + type: type, + implementation: implementation, + modulator: implementation + '.Modulator', + compiler: implementation + '.Compiler' + }; + }; + + var source = function (relativeto) { + return function (type /*, args */) { + return { + type: type, + relativeto: relativeto, + args: [ pather.create(relativeto) ].concat(Array.prototype.slice.call(arguments, 1)) + }; + } + }; + + return { + type: type, + source: source + }; + } +); +module.reader.bouncing = def( + [ + ephox.bolt.kernel.fp.array, + module.error.error, + module.config.specs + ], + + function (ar, error, specs) { + var bounce = function (done, read, acc) { + var next = acc.configs.shift(); + read(next.relativeto, next.config, done, acc); + }; + + var tick = function (file, cfg, done, read, acc) { + var munged = ar.map(cfg.configs || [], function (config) { + return { relativeto: file, config: config }; + }); + var accumulated = { + sources: acc.sources.concat(cfg.sources || []), + types: acc.types.concat(cfg.types || []), + configs: munged.concat(acc.configs) + }; + if (accumulated.configs.length > 0) + bounce(done, read, accumulated); + else + done({ sources: accumulated.sources, types: accumulated.types }); + }; + + /* + * All precedence is depth-first, pre-order. Example: + * + * A + * /-\ + * B C + * /| |\ + * D E F G + * + * Configs are read in A, B, D, E, C, F, G. + * + * If configs mixed delegation and sources, the + * sources would be ordered the same: A, B, D, E, C, F, G. + */ + + var evaluate = function (file, payload, done, read, acc) { + var result = {}; + /* eval scope */ + var mapper = module.config.mapper; + var type = specs.type; + var source = specs.source(file); + var configure = function (configuration) { + result = configuration; + }; + try { + eval(payload); + } catch (e) { + throw 'Could not load configuration [' + file + '], with: ' + e; + } + tick(file, result, done, read, acc); + }; + + return { + evaluate: evaluate + }; + } +); +module.reader.browser = def( + [ + module.error.error, + module.reader.bouncing, + module.util.path, + ephox.bolt.loader.transporter.xhr + ], + + function (error, bouncing, path, xhr) { + var read = function (relativeto, file, done, acc) { + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = base + '/' + file; + xhr.request(absolute, function (payload) { + bouncing.evaluate(absolute, payload, done, read, accumulated); + }, error.die); + }; + + return { + read: read + }; + } +); +module.reader.node = def( + [ + module.reader.bouncing + ], + + function (bouncing, path, fs) { + var read = function (relativeto, file, done, acc) { + var fs = require('fs'); + var path = require('path'); + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = path.resolve(base, file); + var payload = fs.readFileSync(absolute, 'UTF-8'); + bouncing.evaluate(absolute, payload, done, read, accumulated); + }; + + return { + read: read + }; + } +); +module.reader.direct = def( + [ + ], + + function () { + var create = function (configuration) { + return function (done) { + done({ + sources: configuration.sources || [], + types: configuration.types || [], + configs: configuration.configs || [] + }); + }; + }; + + return { + create: create + }; + } +); +module.bootstrap.configloader = def( + [ + module.util.locator, + module.reader.browser + ], + + function (locator, browser) { + var create = function (file) { + var script = locator.locate(); + return function (done) { + browser.read(script, file, done); + }; + }; + + return { + create: create + }; + } +);module.bootstrap.deferred = def( + [ + ephox.bolt.kernel.fp.array + ], + + function (ar) { + var deferred = []; + + var require = function (ids, fn) { + var r = function (real) { + real(ids, fn); + }; + deferred.push(r); + }; + + var configured = function (require) { + ar.each(deferred, function (action) { + action(require); + }); + deferred = []; + }; + + return { + require: require, + configured: configured + }; + } +); +module.bootstrap.main = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.runtime + ], + + function (config, deferred, runtime) { + var main = function (id, args, configids, callback) { + runtime.require(configids || [], function () { + callback && callback.apply(null, arguments); + runtime.require([ id ], function (module) { + module.apply(null, args || []); + }); + }); + }; + + return { + main: main + }; + } +); +module.bootstrap.install = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.bootstrap.main, + module.runtime, + module.error.error + ], + + function (config, deferred, main, runtime, error) { + var notready = function () { throw 'bolt not initialised, can not call define or demand, did you mean to use require or main?'; }; + + var install = function (reader, builtins, load, loadscript) { + runtime.define = notready; + runtime.demand = notready; + runtime.require = deferred.require; + runtime.main = main.main; + runtime.load = load; + runtime.loadscript = loadscript; + + reader(function (configuration) { + var bolt = config.configure(configuration, builtins, error.die); + runtime.define = bolt.define; + runtime.require = bolt.require; + runtime.demand = bolt.demand; + + deferred.configured(runtime.require); + }); + }; + + return { + install: install + }; + } +); + +})(Function('return this')()); +(function (global) { + var obj = ephox.bolt.kernel.fp.object; + var api = ephox.bolt.module.api; + var builtins = ephox.bolt.module.config.builtins.browser; + var install = ephox.bolt.module.bootstrap.install; + var reader = ephox.bolt.module.bootstrap.configloader.create("prod.js"); + var transport = ephox.bolt.loader.transporter.xhr.request; + var script = ephox.bolt.loader.api.scripttag.load; + install.install(reader, builtins, transport, script); + obj.merge(global, api); +})(Function("return this;")()); \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/config/bolt/browser.js b/plugins/tinymce/themes/inlite/config/bolt/browser.js new file mode 100644 index 0000000..6f437c5 --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/browser.js @@ -0,0 +1,10 @@ +configure({ + configs: [ + './prod.js' + ], + sources: [ + source('amd', 'ephox/tinymce', '', mapper.constant('../../../../../tinymce')), + source('amd', 'ephox.mcagar', '../../lib/test', mapper.flat), + source('amd', 'ephox', '../../lib/test', mapper.flat) + ] +}); diff --git a/plugins/tinymce/themes/inlite/config/bolt/demo.js b/plugins/tinymce/themes/inlite/config/bolt/demo.js new file mode 100644 index 0000000..385032c --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/demo.js @@ -0,0 +1,8 @@ +configure({ + configs: [ + './prod.js' + ], + sources: [ + source('amd', 'tinymce/inlite/Demo', '../../src/demo/js', mapper.hierarchical) + ] +}); diff --git a/plugins/tinymce/themes/inlite/config/bolt/prod.js b/plugins/tinymce/themes/inlite/config/bolt/prod.js new file mode 100644 index 0000000..a1ef542 --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/bolt/prod.js @@ -0,0 +1,5 @@ +configure({ + sources: [ + source('amd', 'tinymce/inlite', '../../src/main/js', mapper.hierarchical) + ] +}); diff --git a/plugins/tinymce/themes/inlite/config/dent/depend.js b/plugins/tinymce/themes/inlite/config/dent/depend.js new file mode 100644 index 0000000..9283c0a --- /dev/null +++ b/plugins/tinymce/themes/inlite/config/dent/depend.js @@ -0,0 +1,21 @@ +var lib = 'lib'; +var run = lib + '/run'; +var depend = run + '/depend'; +var licenses = run + '/licenses'; +var demo = lib + '/demo'; +var test = lib + '/test'; +var config = lib + '/config'; + +var cleanDirs = [ lib ]; + +var dependencies = [ + { + name: 'mcagar', + repository: 'buildrepo2', + source: 'mcagar.zip', + targets: [ + { name: 'module/*.js', path: test }, + { name: 'depend/*.js', path: test } + ] + } +]; diff --git a/plugins/tinymce/themes/inlite/scratch/compile/bootstrap.js b/plugins/tinymce/themes/inlite/scratch/compile/bootstrap.js new file mode 100644 index 0000000..9e8c646 --- /dev/null +++ b/plugins/tinymce/themes/inlite/scratch/compile/bootstrap.js @@ -0,0 +1,1526 @@ +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var kernel = bolt.kernel = bolt.kernel || {}; +kernel.api = kernel.api || {}; +kernel.async = kernel.api || {}; +kernel.fp = kernel.fp || {}; +kernel.modulator = kernel.modulator || {}; +kernel.module = kernel.module || {}; +kernel.fp.array = def( + [ + ], + + function () { + var equals = function (a1, a2) { + if (a1.length !== a2.length) + return false; + for (var i = 0; i < a1.length; ++i) + if (a1[i] !== a2[i]) + return false; + return true; + }; + + var forall = function (a, f) { + var fn = f || function (x) { + return x === true; + }; + for (var i = 0; i < a.length; ++i) + if (fn(a[i]) !== true) + return false; + return true; + }; + + var map = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + r.push(f(a[i], i)); + return r; + }; + + var flatten = function (a) { + var r = []; + for (var i = 0; i < a.length; ++i) + r = r.concat(a[i]); + return r; + }; + + var flatmap = function (a, f) { + return flatten(map(a, f)); + }; + + var filter = function (a, f) { + var r = []; + for (var i = 0; i < a.length; ++i) + if (f(a[i])) + r.push(a[i]); + return r; + }; + + var each = map; + + var contains = function (a, x) { + return !forall(a, function (v) { + return v !== x; + }); + }; + + var indexof = function (a, x) { + for (var i = 0; i < a.length; ++i) + if (a[i] === x) + return i; + return -1; + }; + + return { + equals: equals, + forall: forall, + map: map, + flatten: flatten, + flatmap: flatmap, + filter: filter, + each: each, + contains: contains, + indexof: indexof + }; + } +); +kernel.fp.object = def( + [ + ], + + function () { + var map = function (o, f) { + var r = {}; + for (var i in o) + if (o.hasOwnProperty(i)) + r[i] = f(i, o[i]); + return r; + }; + + var each = map; + + var merge = function (d, s) { + each(s, function (k, v) { + d[k] = v; + }); + }; + + var keys = function (o) { + var r = []; + each(o, function (k) { + r.push(k); + }); + return r; + }; + + return { + each: each, + keys: keys, + map: map, + merge: merge + }; + } +); +kernel.fp.functions = def( + [ + ], + + function () { + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (z) { + return function () { + var slice = Array.prototype.slice; + return !z.apply(null, slice.call(arguments, 0)); + }; + }; + + var apply = function (f) { + var slice = Array.prototype.slice; + return f.apply(null, slice.call(arguments, 0)); + }; + + return { + curry: curry, + not: not, + apply: apply + }; + } +);kernel.async.map = def( + [ + kernel.fp.array + ], + + function (ar) { + var amap = function (data, f, oncomplete) { + var total = data.length; + var count = 0; + var results = []; + + ar.each(data, function (datum, i) { + f(datum, function (result) { + ++count; + results[i] = result; + if (count === total) + oncomplete(results); + }); + }); + }; + + return { + amap: amap + }; + } +); +/** + * This module has a dual responsibility: + * 1. Ensures that asynchronous function calls, 'f', that share the same + * 'key' are not executed in parallel. + * 2. In the case where an attempt to call in parallel is prevented, + * the 'action' callbacks are executed when the asynchronous call is + * completed. + * + * Example: + * When we async-map to remotely fetch module definition, it is + * important that only a single define is evaluated, but the + * notification that the definition has completed is propagated + * to all interested parties. + * + * 1. we require dependencies 'x' and 'y' + * + * 2. both x and y are defined in the same file (i.e. compiled together), 'a.js'. + * + * 3. we resolve x and y, to their load spec using a modulator + * x_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * y_spec = {load: function () { -- load a.js -- }, url: a.js, serial: false}; + * + * 4. we make the piggyback call for x: + * piggybacker.piggyback(x_spec.url, x_spec.load, xdone); + * + * this will register the 'xdone' action, and actually + * trigger the load call, with a synthetic callback + * responsible for triggering all registered actions. + * + * 5. we make the piggyback call for y: + * piggybacker.piggyback(y_spec.url, y_spec.load, ydone); + * + * this will register the 'ydone' action, but NOT trigger + * the load call. + * + * 6. the load call completes, and calls the synthetic callback, + * which is responsible for triggering both 'xdone' and 'ydone'. + * + * 7. something else happens that means we have to load 'a.js' again, + * the piggybacker DOES NOT prevent this call, and will follow + * the above process. + */ +kernel.async.piggybacker = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function () { + var queue = {}; // key -> [actions] + + var process = function (key) { + var actions = queue[key]; + delete queue[key]; + ar.each(actions, fn.apply); + }; + + var piggyback = function (key, f, action) { + if (queue[key] === undefined) { + queue[key] = [ action ]; + f(fn.curry(process, key)); + } else { + queue[key].push(action); + } + }; + + return { + piggyback: piggyback + }; + }; + + return { + create: create + }; + } +); +kernel.modulator.globalator = def( + [ + ], + + function () { + var create = function () { + // FIX pull out + var resolve = function (name, scope) { + var parts = name.split('.'); + var r = scope; + for (var i = 0; i < parts.length && r !== undefined; ++i) + r = r[parts[i]]; + return r; + }; + + var global = Function('return this')(); + + var can = function (id) { + return id.indexOf('global!') === 0; + }; + + var get = function (id, define, require) { + var name = id.substring('global!'.length); + + var load = function (onsuccess, onfailure) { + var instance = resolve(name, global); + if (instance !== undefined) { + define(id, [], function () { return instance; }); + onsuccess(); + } else { + onfailure('Modulator error: could not resolve global [' + name + ']'); + } + }; + + return { + url: id, // this just needs to be unique, no download required. + load: load, + serial: true + }; + }; + + return { + can: can, + get: get + } + }; + return { + create: create + }; + } +); +kernel.modulator.bolt = def( + [ + kernel.fp.functions + ], + + function (fn) { + var create = function (loader, pather, namespace, path, idTransformer, options) { + var can = function (id) { + return id === namespace || id.indexOf(namespace + '.') === 0 || id.indexOf(namespace + '/') === 0; + }; + + var get = function (id) { + var before = options !== undefined && options.absolute === true ? path : pather(path); + var after = options !== undefined && options.fresh === true ? '?cachebuster=' + new Date().getTime() : ''; + var url = before + "/" + idTransformer(id) + '.js' + after; + var load = fn.curry(loader.load, url); + + return { + url: url, + load: load, + serial: false + }; + }; + + return { + can: can, + get: get + }; + }; + + return { + create: create + }; + } +);kernel.module.stratifier = def( + [ + kernel.fp.array + ], + + function (ar) { + var stratify = function (specs) { + var parallels = ar.filter(specs, function (spec) { + return !spec.serial; + }); + return parallels.length > 0 ? parallels : specs.slice(0, 1); + }; + + return { + stratify: stratify + }; + } +); +/** + * This module performs dependency analysis of strings that depend on sets of + * strings. + * + * The input is an array of root strings to start analysis from, and an object + * that contains a mapping of each string to the strings it depends on. + * + * Performing an analysis results in either: + * 1. an empty array, indicating that all dependencies are satisfied, + * 2. an array of strings that are, at the minimum, still needed in order to + * satisfy the given dependency trees, or + * 3. an array of strings that form a dependency cycle. + */ +kernel.module.analyser = def( + [ + kernel.fp.array + ], + + function (array) { + var collect = function (path, name) { + var i = array.indexof(path, name); + var p = path.slice(i); + return p.concat([name]); + }; + + /** + * @param {array} roots Contains a list of root ids + * @param {object} modules Contains dependency information in format: { id: [ 'id1', 'id2' ] } + */ + var analyse = function (roots, modules) { + var done = {}; + var path = []; + var missing = []; + var cycle; + + var children = function (name) { + array.each(modules[name], attempt); + }; + + var examine = function (name) { + if (modules[name]) + children(name); + else + missing.push(name); + }; + + var descend = function (name) { + path.push(name); + examine(name); + path.pop(); + }; + + var decycle = function (name) { + if (array.contains(path, name)) + cycle = collect(path, name); + else + descend(name); + }; + + var attempt = function (name) { + if (!done[name]) { + decycle(name); + done[name] = true; + } + }; + + array.each(roots, attempt); + + return cycle ? { cycle: cycle } : { load: missing }; + }; + + return { + analyse: analyse + }; + } +); +kernel.module.fetcher = def( + [ + kernel.fp.array, + kernel.fp.functions, + kernel.async.map, + kernel.async.piggybacker, + kernel.module.stratifier + ], + + function (ar, fn, map, piggybacker, stratifier) { + var create = function (regulator, validator, onerror, define, require, demand) { + var piggyback = piggybacker.create(); + + var validate = function (onsuccess, results) { + var failed = ar.filter(results, fn.not(validator)); + if (failed.length > 0) + onerror('Fetcher error: modules were not defined: ' + failed.join(', ')); + else + onsuccess(); + }; + + var mapper = function (spec, onresult) { + var action = fn.curry(onresult, spec.id); + var load = function (callback) { + spec.load(callback, onerror); + }; + piggyback.piggyback(spec.url, load, action); + }; + + var asyncfetch = function (specs, onsuccess) { + var oncomplete = fn.curry(validate, onsuccess); + var strata = stratifier.stratify(specs); + map.amap(strata, mapper, oncomplete); + }; + + var fetch = function (ids, onsuccess) { + regulator.regulate(ids, define, require, demand, function (specs) { + asyncfetch(specs, onsuccess); + }, onerror); + }; + + return { + fetch: fetch + }; + }; + + return { + create: create + }; + } +); +kernel.module.loader = def( + [ + kernel.module.analyser + ], + + function (analyser) { + var load = function (roots, deps, fetcher, oncontinue, onsuccess, onerror) { + var result = analyser.analyse(roots, deps); + + if (result.cycle) + onerror('Dependency error: a circular module dependency exists from ' + result.cycle.join(' ~> ')); + else if (result.load.length === 0) + onsuccess(); + else + fetcher.fetch(result.load, oncontinue); + }; + + return { + load: load + }; + } +); +kernel.module.manager = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.module.loader, + kernel.module.fetcher + ], + + function (ar, obj, loader, fetcher) { + var create = function (regulator, onerror) { + var blueprints = {}; // id -> { id: string, dependencies: [ string ], definition: function } + var modules = {}; // id -> module + + // Adds a module to the system. + var define = function (id, dependencies, definition) { + if (id === undefined) + onerror("Define error: module id can not be undefined"); + else if (blueprints[id] !== undefined) + onerror("Define error: module '" + id + "' is already defined"); + else + blueprints[id] = { id: id, dependencies: dependencies, definition: definition }; + }; + + // Loads a set of modules asynchronously. + var require = function (ids, callback) { + var onsuccess = function () { + var instances = ar.map(ids, demand); + callback.apply(null, instances); + }; + + var oncontinue = function () { + var deps = obj.map(blueprints, function (k, v) { + return v.dependencies; + }); + loader.load(ids, deps, fetch, oncontinue, onsuccess, onerror); + }; + + oncontinue(); + }; + + // Instantiates a module and all of its dependencies. + var demand = function (id) { + if (modules[id] !== undefined) + return modules[id]; + if (blueprints[id] === undefined) + throw "module '" + id + "' is not defined"; + var result = instantiate(id); + if (result === undefined) + throw "module '" + id + "' returned undefined from definition function"; + modules[id] = result; + return result; + }; + + var instantiate = function (id) { + var blueprint = blueprints[id]; + var args = ar.map(blueprint.dependencies, demand); // Instantiate dependencies + return blueprint.definition.apply(null, args); // Instantiate self + }; + + var validator = function (id) { return blueprints[id] !== undefined; }; + var fetch = fetcher.create(regulator, validator, onerror, define, require, demand); + + return { + define: define, + require: require, + demand: demand + }; + }; + + return { + create: create + }; + } +); +kernel.api.sources = def( + [ + kernel.fp.array, + kernel.fp.object, + kernel.modulator.globalator + ], + + function (ar, obj, globalator) { + var create = function (builtins, configuration) { + var data = { + 'global': { instance: globalator } + }; + obj.each(builtins, function (key, value) { + data[key] = { instance: value }; + }); + ar.each(configuration.types, function (spec) { + data[spec.type] = { id: spec.modulator }; + }); + var sourcespecs = configuration.sources.slice(0); + var sources = [ globalator.create() ]; + + var guard = function (type) { + if (data[type] === undefined) + throw 'Unknown modulator type [' + type + '].'; + }; + + var isResolved = function (type) { + guard(type); + return data[type].instance !== undefined; + }; + + var idOf = function (type) { + guard(type); + return data[type].id; + }; + + var instanceOf = function (type) { + guard(type); + return data[type].instance; + }; + + var register = function (type, instance) { + guard(type); + data[type].instance = instance; + }; + + var find = function (id) { + for (var i = 0; i < sources.length; ++i) + if (sources[i].can(id)) + return { found: sources[i] }; + return { notfound: true }; + }; + + var crank = function () { + var left = []; + ar.each(sourcespecs, function (spec) { + if (isResolved(spec.type)) { + var instance = instanceOf(spec.type); + var source = instance.create.apply(null, spec.args); + sources.push(source); + } else + left.push(spec); + }); + sourcespecs = left; + }; + + return { + isResolved: isResolved, + idOf: idOf, + instanceOf: instanceOf, + register: register, + find: find, + crank: crank + }; + }; + + return { + create: create + }; + } +); +kernel.api.regulator = def( + [ + kernel.fp.array, + kernel.fp.functions + ], + + function (ar, fn) { + var create = function (sources) { + /* + * 1. Resolve configuration as much as possible + * 2. Check for unresolved modulator types that are required to continue. + * a) Go ahead and resolve, if we have everything we need. + * b) Delay, requiring the modulators, then retry. + */ + var regulate = function (ids, define, require, demand, onsuccess, onerror) { + sources.crank(); + var required = ar.map(ids, determinetype); + var unresolved = ar.filter(required, fn.not(sources.isResolved)); + if (unresolved.length === 0) + resolve(ids, define, require, demand, onsuccess, onerror); + else + delay(unresolved, ids, define, require, demand, onsuccess, onerror); + }; + + var resolve = function (ids, define, require, demand, onsuccess, onerror) { + var r = []; + for (var i = 0; i < ids.length; ++i) { + var id = ids[i]; + var source = sources.find(id); + if (source.notfound) { + onerror('Could not find source for module [' + id + ']'); + return; + } + var spec = source.found.get(id, define, require, demand); + r[i] = build(id, spec); + } + onsuccess(r); + }; + + var build = function (id, spec) { + return { + id: id, + url: spec.url, + load: spec.load, + serial: spec.serial + }; + }; + + var delay = function (types, ids, define, require, demand, onsuccess, onerror) { + var modulatorids = ar.map(types, sources.idOf); + require(modulatorids, function (/* modulators */) { + var modulators = arguments; + ar.each(types, function (type, i) { + sources.register(type, modulators[i]); + }); + regulate(ids, define, require, demand, onsuccess, onerror); + }); + }; + + var determinetype = function (id) { + var index = id.indexOf('!'); + return index === -1 ? 'bolt' : id.substring(0, index); + }; + + return { + regulate: regulate + }; + }; + + return { + create: create + }; + } +); +kernel.api.config = def( + [ + kernel.module.manager, + kernel.api.regulator, + kernel.api.sources + ], + + function (manager, regulator, sources) { + var configure = function (configuration, builtins, onerror) { + var s = sources.create(builtins, configuration); + var r = regulator.create(s); + var engine = manager.create(r, onerror); + + return { + define: engine.define, + require: engine.require, + demand: engine.demand + }; + }; + + return { + configure: configure + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var loader = bolt.loader = bolt.loader || {}; +loader.executor = loader.executor || {}; +loader.api = loader.api || {}; +loader.transporter = loader.transporter || {}; +loader.tag = loader.tag || {}; +loader.tag.script = def( + [ + ], + + function () { + var guard = function (callback) { + return function (evt) { + if (evt.srcElement.readyState === "loaded" || evt.srcElement.readyState === "complete") + callback(); + }; + }; + + var ie = function (el) { + return el.attachEvent && !window.opera; + }; + + var onload = function (el, callback) { + if (ie(el)) + el.attachEvent("onreadystatechange", guard(callback)); + else + el.addEventListener("load", callback, false); + }; + + var createtag = function (callback) { + var el = document.createElement("script"); + el.type = "text/javascript"; + onload(el, callback); + return el; + }; + + var insert = function (decorator, callback) { + var el = createtag(callback); + decorator(el); + var head = document.getElementsByTagName("head")[0]; + head.appendChild(el); + }; + + return { + insert: insert + }; + } +); +loader.transporter.commonjs = def( + [ + ], + + function () { + var read = function (url, success, error) { + var fs = require('fs'); + fs.exists(url, function (exists) { + if (exists) + fs.readFile(url, 'UTF-8', function (err, data) { + if (err) + error('Error reading file [' + url + '], error [' + err + ']'); + else + success(data); + }); + else + error('File does not exist [' + url + ']'); + }); + }; + + return { + read: read + }; + } +); +loader.transporter.xhr = def( + [ + ], + + function () { + var requestObject = function () { + // Correct way to use XMLHttpRequest in IE: + // http://blogs.msdn.com/b/ie/archive/2006/01/23/516393.aspx + var factories = [ + function () { return new XMLHttpRequest() }, + function () { return new ActiveXObject("Microsoft.XMLHTTP") } + ]; + + return fallback(factories); + }; + + var fallback = function (items) { + for (var i = 0; i < items.length; ++i) { + try { + return items[i](); + } catch (e) { + } + } + }; + + var handler = function (req, url, success, error) { + return function () { + if (req.readyState === 4) + done(req, url, success, error); + }; + }; + + var done = function (req, url, success, error) { + if (req.status === 200 || req.status === 304) + success(req.responseText); + else + error('Transport error: ' + req.status + ' ' + req.statusText + ' for resource: "' + url + '"'); + }; + + var getUrl = function (req, url, success, error) { + req.open('GET', url, true); + req.onreadystatechange = handler(req, url, success, error); + req.send(); + }; + + var request = function (url, success, error) { + var req = requestObject(); + if (req) + getUrl(req, url, success, error); + else + error('Transport error: browser does not support XMLHttpRequest.'); + }; + + return { + request: request + }; + } +); +loader.executor.evaller = def( + [ + ], + + function () { + var execute = function (data, onsuccess, onfailure) { + try { + eval(data); + } catch(e) { + onfailure(e); + return; + } + + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.executor.injector = def( + [ + loader.tag.script + ], + + function (script) { + var execute = function (data, onsuccess, onfailure) { + var inject = function (tag) { + tag.text = data; + }; + + var noop = function () {}; + + // Injection does not fire events, but execution happens synchronously, + // so we just make an explicit callback + script.insert(inject, noop); + onsuccess(); + }; + + return { + execute: execute + }; + } +); +loader.api.commonjsevaller = def( + [ + loader.transporter.commonjs, + loader.executor.evaller + ], + + function (commonjs, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + commonjs.read(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.scripttag = def( + [ + loader.tag.script + ], + + function (script) { + var load = function (url, onsuccess, onfailure) { + var sourcer = function (tag) { + tag.src = url; + }; + + script.insert(sourcer, onsuccess); + }; + + return { + load: load + }; + } +); +loader.api.xhrevaller = def( + [ + loader.transporter.xhr, + loader.executor.evaller + ], + + function (xhr, evaller) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + evaller.execute(data, onsuccess, onfailure); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +loader.api.xhrinjector = def( + [ + loader.transporter.xhr, + loader.executor.injector + ], + + function (xhr, injector) { + var load = function (url, onsuccess, onfailure) { + var inject = function (data) { + injector.execute(data, onsuccess); + }; + + xhr.request(url, inject, onfailure); + }; + + return { + load: load + }; + } +); +})(Function('return this')()); + +(function (scope) { +var ephox = scope.ephox = scope.ephox || {}; +var bolt = ephox.bolt = ephox.bolt || {}; + +var def = function (deps, factory) { + return factory.apply(null, deps); +}; +var module = bolt.module = bolt.module || {}; +module.bootstrap = module.bootstrap || {}; +module.config = module.config || {}; +module.error = module.error || {}; +module.modulator = module.modulator || {}; +module.reader = module.reader || {}; +module.runtime = module.runtime || {}; +module.util = module.util || {}; +module.error.error = def( + [ + ], + + function () { + var die = function (msg) { + throw msg || new Error('unknown error'); + }; + + return { + die: die + }; + } +); +module.config.mapper = def( + [ + ], + + function () { + var flat = function (id) { + return id; + }; + + var hierarchical = function (id) { + return id.replace(/\./g, '/'); + }; + + var constant = function (name) { + return function () { + return name; + }; + }; + + return { + flat: flat, + hierarchical: hierarchical, + constant: constant + }; + } +); +module.api = def( + [ + module.runtime + ], + + function (runtime) { + var delegate = function (method) { + return function () { + return runtime[method].apply(null, arguments); + }; + }; + + return { + define: delegate('define'), + require: delegate('require'), + demand: delegate('demand'), + main: delegate('main'), + load: delegate('load'), + loadscript: delegate('loadscript') + }; + } +); +module.util.path = def( + [ + ], + + function () { + var dirname = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(0, end); + }; + + var basename = function (file) { + var normalized = file.replace(/\\/g, '/'); + var end = normalized.lastIndexOf('/'); + return normalized.substring(end + 1); + }; + + return { + basename: basename, + dirname: dirname + }; + } +); +module.util.locator = def( + [ + ], + + function () { + var browser = function () { + var scripts = document.getElementsByTagName("script"); + return scripts[scripts.length - 1].src; + }; + + var runtime = module.runtime.locate; + + var locate = function () { + var f = runtime || browser; + return f(); + }; + + return { + locate: locate + }; + } +); +module.util.pather = def( + [ + module.util.path + ], + + function (path) { + var create = function (relativeto) { + var base = path.dirname(relativeto); + return function (path) { + return base + '/' + path; + }; + }; + + return { + create: create + }; + } +);module.modulator.modulators = def( + [ + ephox.bolt.kernel.fp.functions, + ephox.bolt.kernel.modulator.bolt, + ephox.bolt.loader.api.commonjsevaller, + ephox.bolt.loader.api.scripttag, + ephox.bolt.loader.api.xhrevaller, + ephox.bolt.loader.api.xhrinjector + ], + + function (fn, bolt, commonjsevaller, scripttag, xhrevaller, xhrinjector) { + var wrap = function (modulator, loader) { + var create = fn.curry(modulator.create, loader); + + return { + create: create + } + }; + + return { + boltcommonjs: wrap(bolt, commonjsevaller), + boltscripttag: wrap(bolt, scripttag), + boltxhreval: wrap(bolt, xhrevaller), + boltxhrinjector: wrap(bolt, xhrinjector) + }; + } +); +module.config.builtins = def( + [ + ephox.bolt.module.modulator.modulators.boltscripttag, + ephox.bolt.module.modulator.modulators.boltcommonjs + ], + + function (boltscripttag, boltcommonjs) { + return { + // TODO: 'amd' is maintained for backwards compatibility, will be removed + // at some point. + browser: { bolt: boltscripttag, amd: boltscripttag }, + commonjs: { bolt: boltcommonjs, amd: boltcommonjs } + }; + } +); +module.config.specs = def( + [ + module.util.pather + ], + + function (pather) { + var type = function (type, implementation) { + return { + type: type, + implementation: implementation, + modulator: implementation + '.Modulator', + compiler: implementation + '.Compiler' + }; + }; + + var source = function (relativeto) { + return function (type /*, args */) { + return { + type: type, + relativeto: relativeto, + args: [ pather.create(relativeto) ].concat(Array.prototype.slice.call(arguments, 1)) + }; + } + }; + + return { + type: type, + source: source + }; + } +); +module.reader.bouncing = def( + [ + ephox.bolt.kernel.fp.array, + module.error.error, + module.config.specs + ], + + function (ar, error, specs) { + var bounce = function (done, read, acc) { + var next = acc.configs.shift(); + read(next.relativeto, next.config, done, acc); + }; + + var tick = function (file, cfg, done, read, acc) { + var munged = ar.map(cfg.configs || [], function (config) { + return { relativeto: file, config: config }; + }); + var accumulated = { + sources: acc.sources.concat(cfg.sources || []), + types: acc.types.concat(cfg.types || []), + configs: munged.concat(acc.configs) + }; + if (accumulated.configs.length > 0) + bounce(done, read, accumulated); + else + done({ sources: accumulated.sources, types: accumulated.types }); + }; + + /* + * All precedence is depth-first, pre-order. Example: + * + * A + * /-\ + * B C + * /| |\ + * D E F G + * + * Configs are read in A, B, D, E, C, F, G. + * + * If configs mixed delegation and sources, the + * sources would be ordered the same: A, B, D, E, C, F, G. + */ + + var evaluate = function (file, payload, done, read, acc) { + var result = {}; + /* eval scope */ + var mapper = module.config.mapper; + var type = specs.type; + var source = specs.source(file); + var configure = function (configuration) { + result = configuration; + }; + try { + eval(payload); + } catch (e) { + throw 'Could not load configuration [' + file + '], with: ' + e; + } + tick(file, result, done, read, acc); + }; + + return { + evaluate: evaluate + }; + } +); +module.reader.browser = def( + [ + module.error.error, + module.reader.bouncing, + module.util.path, + ephox.bolt.loader.transporter.xhr + ], + + function (error, bouncing, path, xhr) { + var read = function (relativeto, file, done, acc) { + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = base + '/' + file; + xhr.request(absolute, function (payload) { + bouncing.evaluate(absolute, payload, done, read, accumulated); + }, error.die); + }; + + return { + read: read + }; + } +); +module.reader.node = def( + [ + module.reader.bouncing + ], + + function (bouncing, path, fs) { + var read = function (relativeto, file, done, acc) { + var fs = require('fs'); + var path = require('path'); + var accumulated = acc || { sources: [], types: [], configs: [] }; + var base = path.dirname(relativeto); + var absolute = path.resolve(base, file); + var payload = fs.readFileSync(absolute, 'UTF-8'); + bouncing.evaluate(absolute, payload, done, read, accumulated); + }; + + return { + read: read + }; + } +); +module.reader.direct = def( + [ + ], + + function () { + var create = function (configuration) { + return function (done) { + done({ + sources: configuration.sources || [], + types: configuration.types || [], + configs: configuration.configs || [] + }); + }; + }; + + return { + create: create + }; + } +); +module.bootstrap.configloader = def( + [ + module.util.locator, + module.reader.browser + ], + + function (locator, browser) { + var create = function (file) { + var script = locator.locate(); + return function (done) { + browser.read(script, file, done); + }; + }; + + return { + create: create + }; + } +);module.bootstrap.deferred = def( + [ + ephox.bolt.kernel.fp.array + ], + + function (ar) { + var deferred = []; + + var require = function (ids, fn) { + var r = function (real) { + real(ids, fn); + }; + deferred.push(r); + }; + + var configured = function (require) { + ar.each(deferred, function (action) { + action(require); + }); + deferred = []; + }; + + return { + require: require, + configured: configured + }; + } +); +module.bootstrap.main = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.runtime + ], + + function (config, deferred, runtime) { + var main = function (id, args, configids, callback) { + runtime.require(configids || [], function () { + callback && callback.apply(null, arguments); + runtime.require([ id ], function (module) { + module.apply(null, args || []); + }); + }); + }; + + return { + main: main + }; + } +); +module.bootstrap.install = def( + [ + ephox.bolt.kernel.api.config, + module.bootstrap.deferred, + module.bootstrap.main, + module.runtime, + module.error.error + ], + + function (config, deferred, main, runtime, error) { + var notready = function () { throw 'bolt not initialised, can not call define or demand, did you mean to use require or main?'; }; + + var install = function (reader, builtins, load, loadscript) { + runtime.define = notready; + runtime.demand = notready; + runtime.require = deferred.require; + runtime.main = main.main; + runtime.load = load; + runtime.loadscript = loadscript; + + reader(function (configuration) { + var bolt = config.configure(configuration, builtins, error.die); + runtime.define = bolt.define; + runtime.require = bolt.require; + runtime.demand = bolt.demand; + + deferred.configured(runtime.require); + }); + }; + + return { + install: install + }; + } +); + +})(Function('return this')()); +(function () { + var install = ephox.bolt.module.bootstrap.install; + var builtins = ephox.bolt.module.config.builtins.browser; + var transport = ephox.bolt.loader.transporter.xhr.request; + var script = ephox.bolt.loader.api.scripttag.load; + var direct = ephox.bolt.module.reader.direct; + var mapper = ephox.bolt.module.config.mapper; + var locator = ephox.bolt.module.util.locator; + var source = ephox.bolt.module.config.specs.source(locator.locate()); + var reader = direct.create({ + sources: [ + source("bolt", "tinymce/inlite/Theme", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.ThemeManager", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.util.Delay", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/ui/Panel", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/ui/Buttons", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/SkinLoader", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/SelectionMatcher", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/ElementMatcher", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/Matcher", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/alien/Arr", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/PredicateId", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.util.Tools", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.ui.Factory", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.DOM", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/ui/Toolbar", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/ui/Forms", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/Measure", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/Layout", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/file/Conversions", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/file/Picker", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/Actions", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.EditorManager", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.util.Promise", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/alien/Uuid", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/alien/Unlink", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/UrlType", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.geom.Rect", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/core/Convert", ".", mapper.constant("theme")), + source("bolt", "tinymce/inlite/alien/Bookmark", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.dom.TreeWalker", ".", mapper.constant("theme")), + source("bolt", "global!tinymce.dom.RangeUtils", ".", mapper.constant("theme")) + ] + }); + install.install(reader, builtins, transport, script); +})(); \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/scratch/compile/theme.js b/plugins/tinymce/themes/inlite/scratch/compile/theme.js new file mode 100644 index 0000000..c05f0e4 --- /dev/null +++ b/plugins/tinymce/themes/inlite/scratch/compile/theme.js @@ -0,0 +1,1594 @@ +/*jsc +["tinymce/inlite/Theme","global!tinymce.ThemeManager","global!tinymce.util.Delay","tinymce/inlite/ui/Panel","tinymce/inlite/ui/Buttons","tinymce/inlite/core/SkinLoader","tinymce/inlite/core/SelectionMatcher","tinymce/inlite/core/ElementMatcher","tinymce/inlite/core/Matcher","tinymce/inlite/alien/Arr","tinymce/inlite/core/PredicateId","global!tinymce.util.Tools","global!tinymce.ui.Factory","global!tinymce.DOM","tinymce/inlite/ui/Toolbar","tinymce/inlite/ui/Forms","tinymce/inlite/core/Measure","tinymce/inlite/core/Layout","tinymce/inlite/file/Conversions","tinymce/inlite/file/Picker","tinymce/inlite/core/Actions","global!tinymce.EditorManager","global!tinymce.util.Promise","tinymce/inlite/alien/Uuid","tinymce/inlite/alien/Unlink","tinymce/inlite/core/UrlType","global!tinymce.geom.Rect","tinymce/inlite/core/Convert","tinymce/inlite/alien/Bookmark","global!tinymce.dom.TreeWalker","global!tinymce.dom.RangeUtils"] +jsc*/ +defineGlobal("global!tinymce.ThemeManager", tinymce.ThemeManager); +defineGlobal("global!tinymce.util.Delay", tinymce.util.Delay); +defineGlobal("global!tinymce.util.Tools", tinymce.util.Tools); +defineGlobal("global!tinymce.ui.Factory", tinymce.ui.Factory); +defineGlobal("global!tinymce.DOM", tinymce.DOM); +/** + * Toolbar.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Toolbar', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory' +], function (Tools, Factory) { + var setActiveItem = function (item, name) { + return function(state, args) { + var nodeName, i = args.parents.length; + + while (i--) { + nodeName = args.parents[i].nodeName; + if (nodeName == 'OL' || nodeName == 'UL') { + break; + } + } + + item.active(state && nodeName == name); + }; + }; + + var getSelectorStateResult = function (itemName, item) { + var result = function (selector, handler) { + return { + selector: selector, + handler: handler + }; + }; + + var activeHandler = function(state) { + item.active(state); + }; + + var disabledHandler = function (state) { + item.disabled(state); + }; + + if (itemName == 'bullist') { + return result('ul > li', setActiveItem(item, 'UL')); + } + + if (itemName == 'numlist') { + return result('ol > li', setActiveItem(item, 'OL')); + } + + if (item.settings.stateSelector) { + return result(item.settings.stateSelector, activeHandler); + } + + if (item.settings.disabledStateSelector) { + return result(item.settings.disabledStateSelector, disabledHandler); + } + + return null; + }; + + var bindSelectorChanged = function (editor, itemName, item) { + return function () { + var result = getSelectorStateResult(itemName, item); + if (result !== null) { + editor.selection.selectorChanged(result.selector, result.handler); + } + }; + }; + + var create = function (editor, name, items) { + var toolbarItems = [], buttonGroup; + + if (!items) { + return; + } + + Tools.each(items.split(/[ ,]/), function(item) { + var itemName; + + if (item == '|') { + buttonGroup = null; + } else { + if (Factory.has(item)) { + item = {type: item}; + toolbarItems.push(item); + buttonGroup = null; + } else { + if (!buttonGroup) { + buttonGroup = {type: 'buttongroup', items: []}; + toolbarItems.push(buttonGroup); + } + + if (editor.buttons[item]) { + itemName = item; + item = editor.buttons[itemName]; + + if (typeof item == 'function') { + item = item(); + } + + item.type = item.type || 'button'; + + item = Factory.create(item); + item.on('postRender', bindSelectorChanged(editor, itemName, item)); + buttonGroup.items.push(item); + } + } + } + }); + + return Factory.create({ + type: 'toolbar', + layout: 'flow', + name: name, + items: toolbarItems + }); + }; + + return { + create: create + }; +}); + +defineGlobal("global!tinymce.util.Promise", tinymce.util.Promise); +/** + * Uuid.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Generates unique ids this is the same as in core but since + * it's not exposed as a global we can't access it. + */ +define("tinymce/inlite/alien/Uuid", [ +], function() { + var count = 0; + + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 0xFFFFFFFF).toString(36); + }; + + return 's' + Date.now().toString(36) + rnd() + rnd() + rnd(); + }; + + var uuid = function (prefix) { + return prefix + (count++) + seed(); + }; + + return { + uuid: uuid + }; +}); + +/** + * Bookmark.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Bookmark', [ +], function () { + /** + * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with + * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans + * added to them since they can be restored after a dom operation. + * + * So this: <p><b>|</b><b>|</b></p> + * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p> + * + * @param {DOMRange} rng DOM Range to get bookmark on. + * @return {Object} Bookmark object. + */ + var create = function (dom, rng) { + var bookmark = {}; + + function setupEndPoint(start) { + var offsetNode, container, offset; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + offsetNode = dom.create('span', {'data-mce-type': 'bookmark'}); + + if (container.hasChildNodes()) { + offset = Math.min(offset, container.childNodes.length - 1); + + if (start) { + container.insertBefore(offsetNode, container.childNodes[offset]); + } else { + dom.insertAfter(offsetNode, container.childNodes[offset]); + } + } else { + container.appendChild(offsetNode); + } + + container = offsetNode; + offset = 0; + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + setupEndPoint(true); + + if (!rng.collapsed) { + setupEndPoint(); + } + + return bookmark; + }; + + /** + * Moves the selection to the current bookmark and removes any selection container wrappers. + * + * @param {Object} bookmark Bookmark object to move selection to. + */ + var resolve = function (dom, bookmark) { + function restoreEndPoint(start) { + var container, offset, node; + + function nodeIndex(container) { + var node = container.parentNode.firstChild, idx = 0; + + while (node) { + if (node == container) { + return idx; + } + + // Skip data-mce-type=bookmark nodes + if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') { + idx++; + } + + node = node.nextSibling; + } + + return -1; + } + + container = node = bookmark[start ? 'startContainer' : 'endContainer']; + offset = bookmark[start ? 'startOffset' : 'endOffset']; + + if (!container) { + return; + } + + if (container.nodeType == 1) { + offset = nodeIndex(container); + container = container.parentNode; + dom.remove(node); + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + restoreEndPoint(true); + restoreEndPoint(); + + var rng = dom.createRng(); + + rng.setStart(bookmark.startContainer, bookmark.startOffset); + + if (bookmark.endContainer) { + rng.setEnd(bookmark.endContainer, bookmark.endOffset); + } + + return rng; + }; + + return { + create: create, + resolve: resolve + }; +}); + + + +defineGlobal("global!tinymce.dom.TreeWalker", tinymce.dom.TreeWalker); +defineGlobal("global!tinymce.dom.RangeUtils", tinymce.dom.RangeUtils); +/** + * Unlink.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Unlink implementation that doesn't leave partial links for example it would produce: + * a[b<a href="x">c]d</a>e -> a[bc]de + * instead of: + * a[b<a href="x">c]d</a>e -> a[bc]<a href="x">d</a>e + */ +define("tinymce/inlite/alien/Unlink", [ + 'tinymce/inlite/alien/Bookmark', + 'global!tinymce.util.Tools', + 'global!tinymce.dom.TreeWalker', + 'global!tinymce.dom.RangeUtils' +], function (Bookmark, Tools, TreeWalker, RangeUtils) { + var getSelectedElements = function (rootElm, startNode, endNode) { + var walker, node, elms = []; + + walker = new TreeWalker(startNode, rootElm); + for (node = startNode; node; node = walker.next()) { + if (node.nodeType === 1) { + elms.push(node); + } + + if (node === endNode) { + break; + } + } + + return elms; + }; + + var unwrapElements = function (editor, elms) { + var bookmark, dom, selection; + + dom = editor.dom; + selection = editor.selection; + bookmark = Bookmark.create(dom, selection.getRng()); + + Tools.each(elms, function (elm) { + editor.dom.remove(elm, true); + }); + + selection.setRng(Bookmark.resolve(dom, bookmark)); + }; + + var isLink = function (elm) { + return elm.nodeName === 'A' && elm.hasAttribute('href'); + }; + + var getParentAnchorOrSelf = function (dom, elm) { + var anchorElm = dom.getParent(elm, isLink); + return anchorElm ? anchorElm : elm; + }; + + var getSelectedAnchors = function (editor) { + var startElm, endElm, rootElm, anchorElms, selection, dom, rng; + + selection = editor.selection; + dom = editor.dom; + rng = selection.getRng(); + startElm = getParentAnchorOrSelf(dom, RangeUtils.getNode(rng.startContainer, rng.startOffset)); + endElm = RangeUtils.getNode(rng.endContainer, rng.endOffset); + rootElm = editor.getBody(); + anchorElms = Tools.grep(getSelectedElements(rootElm, startElm, endElm), isLink); + + return anchorElms; + }; + + var unlinkSelection = function (editor) { + unwrapElements(editor, getSelectedAnchors(editor)); + }; + + return { + unlinkSelection: unlinkSelection + }; +}); + +/** + * Actions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Actions', [ + 'tinymce/inlite/alien/Uuid', + 'tinymce/inlite/alien/Unlink' +], function (Uuid, Unlink) { + var createTableHtml = function (cols, rows) { + var x, y, html; + + html = '<table data-mce-id="mce" style="width: 100%">'; + html += '<tbody>'; + + for (y = 0; y < rows; y++) { + html += '<tr>'; + + for (x = 0; x < cols; x++) { + html += '<td><br></td>'; + } + + html += '</tr>'; + } + + html += '</tbody>'; + html += '</table>'; + + return html; + }; + + var getInsertedElement = function (editor) { + var elms = editor.dom.select('*[data-mce-id]'); + return elms[0]; + }; + + var insertTable = function (editor, cols, rows) { + editor.undoManager.transact(function () { + var tableElm, cellElm; + + editor.insertContent(createTableHtml(cols, rows)); + + tableElm = getInsertedElement(editor); + tableElm.removeAttribute('data-mce-id'); + cellElm = editor.dom.select('td,th', tableElm); + editor.selection.setCursorLocation(cellElm[0], 0); + }); + }; + + var formatBlock = function (editor, formatName) { + editor.execCommand('FormatBlock', false, formatName); + }; + + var insertBlob = function (editor, base64, blob) { + var blobCache, blobInfo; + + blobCache = editor.editorUpload.blobCache; + blobInfo = blobCache.create(Uuid.uuid('mceu'), blob, base64); + blobCache.add(blobInfo); + + editor.insertContent(editor.dom.createHTML('img', {src: blobInfo.blobUri()})); + }; + + var collapseSelectionToEnd = function (editor) { + editor.selection.collapse(false); + }; + + var unlink = function (editor) { + editor.focus(); + Unlink.unlinkSelection(editor); + collapseSelectionToEnd(editor); + }; + + var changeHref = function (editor, elm, url) { + editor.focus(); + editor.dom.setAttrib(elm, 'href', url); + collapseSelectionToEnd(editor); + }; + + var insertLink = function (editor, url) { + editor.execCommand('mceInsertLink', false, {href: url}); + collapseSelectionToEnd(editor); + }; + + var updateOrInsertLink = function (editor, url) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + elm ? changeHref(editor, elm, url) : insertLink(editor, url); + }; + + var createLink = function (editor, url) { + url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url); + }; + + return { + insertTable: insertTable, + formatBlock: formatBlock, + insertBlob: insertBlob, + createLink: createLink, + unlink: unlink + }; +}); + +/** + * UrlType.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/UrlType', [ +], function () { + var isDomainLike = function (href) { + return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim()); + }; + + var isAbsolute = function (href) { + return /^https?:\/\//.test(href.trim()); + }; + + return { + isDomainLike: isDomainLike, + isAbsolute: isAbsolute + }; +}); + + + +/** + * Forms.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Forms', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.util.Promise', + 'tinymce/inlite/core/Actions', + 'tinymce/inlite/core/UrlType' +], function (Tools, Factory, Promise, Actions, UrlType) { + var focusFirstTextBox = function (form) { + form.find('textbox').eq(0).each(function (ctrl) { + ctrl.focus(); + }); + }; + + var createForm = function (name, spec) { + var form = Factory.create( + Tools.extend({ + type: 'form', + layout: 'flex', + direction: 'row', + padding: 5, + name: name, + spacing: 3 + }, spec) + ); + + form.on('show', function () { + focusFirstTextBox(form); + }); + + return form; + }; + + var toggleVisibility = function (ctrl, state) { + return state ? ctrl.show() : ctrl.hide(); + }; + + var askAboutPrefix = function (editor, href) { + return new Promise(function (resolve) { + editor.windowManager.confirm( + 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', + function (result) { + var output = result === true ? 'http://' + href : href; + resolve(output); + } + ); + }); + }; + + var convertLinkToAbsolute = function (editor, href) { + return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : Promise.resolve(href); + }; + + var createQuickLinkForm = function (editor, hide) { + var unlink = function () { + editor.focus(); + Actions.unlink(editor); + hide(); + }; + + return createForm('quicklink', { + items: [ + {type: 'button', name: 'unlink', icon: 'unlink', onclick: unlink, tooltip: 'Remove link'}, + {type: 'textbox', name: 'linkurl', placeholder: 'Paste or type a link'}, + {type: 'button', icon: 'checkmark', subtype: 'primary', tooltip: 'Ok', onclick: 'submit'} + ], + onshow: function () { + var elm, linkurl = ''; + + elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + if (elm) { + linkurl = editor.dom.getAttrib(elm, 'href'); + } + + this.fromJSON({ + linkurl: linkurl + }); + + toggleVisibility(this.find('#unlink'), elm); + }, + onsubmit: function (e) { + convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) { + Actions.createLink(editor, url); + hide(); + }); + } + }); + }; + + return { + createQuickLinkForm: createQuickLinkForm + }; +}); + +defineGlobal("global!tinymce.geom.Rect", tinymce.geom.Rect); +/** + * Convert.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Convert', [ +], function () { + var fromClientRect = function (clientRect) { + return { + x: clientRect.left, + y: clientRect.top, + w: clientRect.width, + h: clientRect.height + }; + }; + + var toClientRect = function (geomRect) { + return { + left: geomRect.x, + top: geomRect.y, + width: geomRect.w, + height: geomRect.h, + right: geomRect.x + geomRect.w, + bottom: geomRect.y + geomRect.h + }; + }; + + return { + fromClientRect: fromClientRect, + toClientRect: toClientRect + }; +}); + +/** + * Measure.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Measure', [ + 'global!tinymce.DOM', + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (DOM, Rect, Convert) { + var toAbsolute = function (rect) { + var vp = DOM.getViewPort(); + + return { + x: rect.x + vp.x, + y: rect.y + vp.y, + w: rect.w, + h: rect.h + }; + }; + + var measureElement = function (elm) { + var clientRect = elm.getBoundingClientRect(); + + return toAbsolute({ + x: clientRect.left, + y: clientRect.top, + w: Math.max(elm.clientWidth, elm.offsetWidth), + h: Math.max(elm.clientHeight, elm.offsetHeight) + }); + }; + + var getElementRect = function (editor, elm) { + return measureElement(elm); + }; + + var getPageAreaRect = function (editor) { + return measureElement(editor.getElement().ownerDocument.body); + }; + + var getContentAreaRect = function (editor) { + return measureElement(editor.getContentAreaContainer() || editor.getBody()); + }; + + var getSelectionRect = function (editor) { + var clientRect = editor.selection.getBoundingClientRect(); + return clientRect ? toAbsolute(Convert.fromClientRect(clientRect)) : null; + }; + + return { + getElementRect: getElementRect, + getPageAreaRect: getPageAreaRect, + getContentAreaRect: getContentAreaRect, + getSelectionRect: getSelectionRect + }; +}); + +/** + * Layout.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Layout', [ + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (Rect, Convert) { + var result = function (rect, position) { + return { + rect: rect, + position: position + }; + }; + + var moveTo = function (rect, toRect) { + return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h}; + }; + + var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) { + var relPos, relRect, outputPanelRect; + + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1); + targetRect = Rect.clamp(targetRect, contentAreaRect); + + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + targetRect = Rect.intersect(contentAreaRect, targetRect); + if (targetRect) { + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2); + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + outputPanelRect = moveTo(panelRect, targetRect); + return result(outputPanelRect, relPos); + } + + return null; + }; + + var calcInsert = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['cr-cl', 'cl-cr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var calc = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) { + var userConstrainedPanelRect; + + if (typeof handler === 'function') { + userConstrainedPanelRect = handler({ + elementRect: Convert.toClientRect(targetRect), + contentAreaRect: Convert.toClientRect(contentAreaRect), + panelRect: Convert.toClientRect(panelRect) + }); + + return Convert.fromClientRect(userConstrainedPanelRect); + } + + return panelRect; + }; + + return { + calcInsert: calcInsert, + calc: calc, + userConstrain: userConstrain + }; +}); + +/** + * Panel.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Panel', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.DOM', + 'tinymce/inlite/ui/Toolbar', + 'tinymce/inlite/ui/Forms', + 'tinymce/inlite/core/Measure', + 'tinymce/inlite/core/Layout' +], function (Tools, Factory, DOM, Toolbar, Forms, Measure, Layout) { + return function () { + var DEFAULT_TEXT_SELECTION_ITEMS = 'bold italic | quicklink h2 h3 blockquote'; + var DEFAULT_INSERT_TOOLBAR_ITEMS = 'quickimage quicktable'; + var panel, currentRect; + + var createToolbars = function (editor, toolbars) { + return Tools.map(toolbars, function (toolbar) { + return Toolbar.create(editor, toolbar.id, toolbar.items); + }); + }; + + var getTextSelectionToolbarItems = function (settings) { + var value = settings.selection_toolbar; + return value ? value : DEFAULT_TEXT_SELECTION_ITEMS; + }; + + var getInsertToolbarItems = function (settings) { + var value = settings.insert_toolbar; + return value ? value : DEFAULT_INSERT_TOOLBAR_ITEMS; + }; + + var create = function (editor, toolbars) { + var items, settings = editor.settings; + + items = createToolbars(editor, toolbars); + items = items.concat([ + Toolbar.create(editor, 'text', getTextSelectionToolbarItems(settings)), + Toolbar.create(editor, 'insert', getInsertToolbarItems(settings)), + Forms.createQuickLinkForm(editor, hide) + ]); + + return Factory.create({ + type: 'floatpanel', + role: 'dialog', + classes: 'tinymce tinymce-inline arrow', + ariaLabel: 'Inline toolbar', + layout: 'flex', + direction: 'column', + align: 'stretch', + autohide: false, + autofix: true, + fixed: true, + border: 1, + items: items, + oncancel: function() { + editor.focus(); + } + }); + }; + + var showPanel = function (panel) { + if (panel) { + panel.show(); + } + }; + + var movePanelTo = function (panel, pos) { + panel.moveTo(pos.x, pos.y); + }; + + var togglePositionClass = function (panel, relPos) { + relPos = relPos ? relPos.substr(0, 2) : ''; + + Tools.each({ + t: 'down', + b: 'up', + c: 'center' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1)); + }); + + if (relPos === 'cr') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', false); + } else if (relPos === 'cl') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', true); + } else { + Tools.each({ + l: 'left', + r: 'right' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1)); + }); + } + }; + + var showToolbar = function (panel, id) { + var toolbars = panel.items().filter('#' + id); + + if (toolbars.length > 0) { + toolbars[0].show(); + panel.reflow(); + } + }; + + var showPanelAt = function (panel, id, editor, targetRect) { + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + if (id === 'insert') { + result = Layout.calcInsert(targetRect, contentAreaRect, panelRect); + } else { + result = Layout.calc(targetRect, contentAreaRect, panelRect); + } + + if (result) { + panelRect = result.rect; + currentRect = targetRect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } else { + hide(panel); + } + }; + + var hasFormVisible = function () { + return panel.items().filter('form:visible').length > 0; + }; + + var showForm = function (editor, id) { + if (panel) { + panel.items().hide(); + showToolbar(panel, id); + + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + result = Layout.calc(currentRect, contentAreaRect, panelRect); + + if (result) { + panelRect = result.rect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } + } + }; + + var show = function (editor, id, targetRect, toolbars) { + if (!panel) { + panel = create(editor, toolbars); + panel.renderTo(document.body).reflow().moveTo(targetRect.x, targetRect.y); + editor.nodeChanged(); + } + + showPanelAt(panel, id, editor, targetRect); + }; + + var hide = function () { + if (panel) { + panel.hide(); + } + }; + + var focus = function () { + if (panel) { + panel.find('toolbar:visible').eq(0).each(function (item) { + item.focus(true); + }); + } + }; + + var remove = function () { + if (panel) { + panel.remove(); + panel = null; + } + }; + + var inForm = function () { + return panel && panel.visible() && hasFormVisible(); + }; + + return { + show: show, + showForm: showForm, + inForm: inForm, + hide: hide, + focus: focus, + remove: remove + }; + }; +}); + +/** + * Conversions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Conversions', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var blobToBase64 = function (blob) { + return new Promise(function(resolve) { + var reader = new FileReader(); + + reader.onloadend = function() { + resolve(reader.result.split(',')[1]); + }; + + reader.readAsDataURL(blob); + }); + }; + + return { + blobToBase64: blobToBase64 + }; +}); + + + +/** + * Picker.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Picker', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var pickFile = function () { + return new Promise(function (resolve) { + var fileInput; + + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.style.position = 'fixed'; + fileInput.style.left = 0; + fileInput.style.top = 0; + fileInput.style.opacity = 0.001; + document.body.appendChild(fileInput); + + fileInput.onchange = function(e) { + resolve(Array.prototype.slice.call(e.target.files)); + }; + + fileInput.click(); + fileInput.parentNode.removeChild(fileInput); + }); + }; + + return { + pickFile: pickFile + }; +}); + + + +/** + * Buttons.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Buttons', [ + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/file/Conversions', + 'tinymce/inlite/file/Picker', + 'tinymce/inlite/core/Actions' +], function (Panel, Conversions, Picker, Actions) { + var addHeaderButtons = function (editor) { + var formatBlock = function (name) { + return function () { + Actions.formatBlock(editor, name); + }; + }; + + for (var i = 1; i < 6; i++) { + var name = 'h' + i; + + editor.addButton(name, { + text: name.toUpperCase(), + tooltip: 'Heading ' + i, + stateSelector: name, + onclick: formatBlock(name), + onPostRender: function () { + // TODO: Remove this hack that produces bold H1-H6 when we have proper icons + var span = this.getEl().firstChild.firstChild; + span.style.fontWeight = 'bold'; + } + }); + } + }; + + var addToEditor = function (editor, panel) { + editor.addButton('quicklink', { + icon: 'link', + tooltip: 'Insert/Edit link', + stateSelector: 'a[href]', + onclick: function () { + panel.showForm(editor, 'quicklink'); + } + }); + + editor.addButton('quickimage', { + icon: 'image', + tooltip: 'Insert image', + onclick: function () { + Picker.pickFile().then(function (files) { + var blob = files[0]; + + Conversions.blobToBase64(blob).then(function (base64) { + Actions.insertBlob(editor, base64, blob); + }); + }); + } + }); + + editor.addButton('quicktable', { + icon: 'table', + tooltip: 'Insert table', + onclick: function () { + panel.hide(); + Actions.insertTable(editor, 2, 2); + } + }); + + addHeaderButtons(editor); + }; + + return { + addToEditor: addToEditor + }; +}); + +defineGlobal("global!tinymce.EditorManager", tinymce.EditorManager); +/** + * SkinLoader.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SkinLoader', [ + 'global!tinymce.EditorManager', + 'global!tinymce.DOM' +], function (EditorManager, DOM) { + var fireSkinLoaded = function (editor, callback) { + var done = function () { + editor.fire('SkinLoaded'); + callback(); + }; + + if (editor.initialized) { + done(); + } else { + editor.on('init', done); + } + }; + + var load = function (editor, skin, callback) { + var baseUrl = EditorManager.baseURL; + var skinUrl = baseUrl + '/skins/' + skin; + + var done = function () { + fireSkinLoaded(editor, callback); + }; + + DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done); + editor.contentCSS.push(skinUrl + '/content.inline.min.css'); + }; + + return { + load: load + }; +}); + + + +/** + * Matcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Matcher', [ +], function () { + // result :: String, Rect -> Matcher.result + var result = function (id, rect) { + return { + id: id, + rect: rect + }; + }; + + // match :: Editor, [(Editor -> Matcher.result | Null)] -> Matcher.result | Null + var match = function (editor, matchers) { + for (var i = 0; i < matchers.length; i++) { + var f = matchers[i]; + var result = f(editor); + + if (result) { + return result; + } + } + + return null; + }; + + return { + match: match, + result: result + }; +}); + +/** + * SelectionMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SelectionMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // textSelection :: String -> (Editor -> Matcher.result | Null) + var textSelection = function (id) { + return function (editor) { + if (!editor.selection.isCollapsed()) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + }; + }; + + // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) + var emptyTextBlock = function (elements, id) { + return function (editor) { + var i, textBlockElementsMap = editor.schema.getTextBlockElements(); + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName === 'TABLE') { + return null; + } + } + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName in textBlockElementsMap) { + if (editor.dom.isEmpty(elements[i])) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + } + } + + return null; + }; + }; + + return { + textSelection: textSelection, + emptyTextBlock: emptyTextBlock + }; +}); + +/** + * ElementMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/ElementMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // element :: Element, [PredicateId] -> (Editor -> Matcher.result | Null) + var element = function (element, predicateIds) { + return function (editor) { + for (var i = 0; i < predicateIds.length; i++) { + if (predicateIds[i].predicate(element)) { + return Matcher.result(predicateIds[i].id, Measure.getElementRect(editor, element)); + } + } + + return null; + }; + }; + + // parent :: [Elements], [PredicateId] -> (Editor -> Matcher.result | Null) + var parent = function (elements, predicateIds) { + return function (editor) { + for (var i = 0; i < elements.length; i++) { + for (var x = 0; x < predicateIds.length; x++) { + if (predicateIds[x].predicate(elements[i])) { + return Matcher.result(predicateIds[x].id, Measure.getElementRect(editor, elements[i])); + } + } + } + + return null; + }; + }; + + return { + element: element, + parent: parent + }; +}); + +/** + * Arr.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Arr', [ +], function () { + var flatten = function (arr) { + return arr.reduce(function (results, item) { + return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item); + }, []); + }; + + return { + flatten: flatten + }; +}); + +/** + * PredicateId.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/PredicateId', [ + 'global!tinymce.util.Tools' +], function (Tools) { + var create = function (id, predicate) { + return { + id: id, + predicate: predicate + }; + }; + + // fromContextToolbars :: [ContextToolbar] -> [PredicateId] + var fromContextToolbars = function (toolbars) { + return Tools.map(toolbars, function (toolbar) { + return create(toolbar.id, toolbar.predicate); + }); + }; + + return { + create: create, + fromContextToolbars: fromContextToolbars + }; +}); + +/** + * Theme.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/Theme', [ + 'global!tinymce.ThemeManager', + 'global!tinymce.util.Delay', + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/ui/Buttons', + 'tinymce/inlite/core/SkinLoader', + 'tinymce/inlite/core/SelectionMatcher', + 'tinymce/inlite/core/ElementMatcher', + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/alien/Arr', + 'tinymce/inlite/core/PredicateId' +], function(ThemeManager, Delay, Panel, Buttons, SkinLoader, SelectionMatcher, ElementMatcher, Matcher, Arr, PredicateId) { + var getSelectionElements = function (editor) { + var node = editor.selection.getNode(); + var elms = editor.dom.getParents(node); + return elms; + }; + + var createToolbar = function (editor, selector, id, items) { + var selectorPredicate = function (elm) { + return editor.dom.is(elm, selector); + }; + + return { + predicate: selectorPredicate, + id: id, + items: items + }; + }; + + var getToolbars = function (editor) { + var contextToolbars = editor.contextToolbars; + + return Arr.flatten([ + contextToolbars ? contextToolbars : [], + createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright') + ]); + }; + + var findMatchResult = function (editor, toolbars) { + var result, elements, contextToolbarsPredicateIds; + + elements = getSelectionElements(editor); + contextToolbarsPredicateIds = PredicateId.fromContextToolbars(toolbars); + + result = Matcher.match(editor, [ + ElementMatcher.element(elements[0], contextToolbarsPredicateIds), + SelectionMatcher.textSelection('text'), + SelectionMatcher.emptyTextBlock(elements, 'insert'), + ElementMatcher.parent(elements, contextToolbarsPredicateIds) + ]); + + return result && result.rect ? result : null; + }; + + var togglePanel = function (editor, panel) { + var toggle = function () { + var toolbars = getToolbars(editor); + var result = findMatchResult(editor, toolbars); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } else { + panel.hide(); + } + }; + + return function () { + if (!editor.removed) { + toggle(); + } + }; + }; + + var ignoreWhenFormIsVisible = function (panel, f) { + return function () { + if (!panel.inForm()) { + f(); + } + }; + }; + + var bindContextualToolbarsEvents = function (editor, panel) { + var throttledTogglePanel = Delay.throttle(togglePanel(editor, panel), 0); + var throttledTogglePanelWhenNotInForm = Delay.throttle(ignoreWhenFormIsVisible(panel, togglePanel(editor, panel)), 0); + + editor.on('blur hide ObjectResizeStart', panel.hide); + editor.on('click', throttledTogglePanel); + editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm); + editor.on('ResizeEditor ResizeWindow keyup', throttledTogglePanel); + editor.on('remove', panel.remove); + + editor.shortcuts.add('Alt+F10', '', panel.focus); + }; + + var overrideLinkShortcut = function (editor, panel) { + editor.shortcuts.remove('meta+k'); + editor.shortcuts.add('meta+k', '', function () { + var toolbars = getToolbars(editor); + var result = result = Matcher.match(editor, [ + SelectionMatcher.textSelection('quicklink') + ]); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } + }); + }; + + var renderInlineUI = function (editor, panel) { + var skinName = editor.settings.skin || 'lightgray'; + + SkinLoader.load(editor, skinName, function () { + bindContextualToolbarsEvents(editor, panel); + overrideLinkShortcut(editor, panel); + }); + + return {}; + }; + + var fail = function (message) { + throw new Error(message); + }; + + ThemeManager.add('inlite', function (editor) { + var panel = new Panel(); + + Buttons.addToEditor(editor, panel); + + var renderUI = function () { + return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.'); + }; + + return { + renderUI: renderUI + }; + }); + + return function() {}; +}); diff --git a/plugins/tinymce/themes/inlite/scratch/inline/theme.js b/plugins/tinymce/themes/inlite/scratch/inline/theme.js new file mode 100644 index 0000000..d052cd2 --- /dev/null +++ b/plugins/tinymce/themes/inlite/scratch/inline/theme.js @@ -0,0 +1,1679 @@ +(function () { + +var defs = {}; // id -> {dependencies, definition, instance (possibly undefined)} + +// Used when there is no 'main' module. +// The name is probably (hopefully) unique so minification removes for releases. +var register_3795 = function (id) { + var module = dem(id); + var fragments = id.split('.'); + var target = Function('return this;')(); + for (var i = 0; i < fragments.length - 1; ++i) { + if (target[fragments[i]] === undefined) + target[fragments[i]] = {}; + target = target[fragments[i]]; + } + target[fragments[fragments.length - 1]] = module; +}; + +var instantiate = function (id) { + var actual = defs[id]; + var dependencies = actual.deps; + var definition = actual.defn; + var len = dependencies.length; + var instances = new Array(len); + for (var i = 0; i < len; ++i) + instances[i] = dem(dependencies[i]); + var defResult = definition.apply(null, instances); + if (defResult === undefined) + throw 'module [' + id + '] returned undefined'; + actual.instance = defResult; +}; + +var def = function (id, dependencies, definition) { + if (typeof id !== 'string') + throw 'module id must be a string'; + else if (dependencies === undefined) + throw 'no dependencies for ' + id; + else if (definition === undefined) + throw 'no definition function for ' + id; + defs[id] = { + deps: dependencies, + defn: definition, + instance: undefined + }; +}; + +var dem = function (id) { + var actual = defs[id]; + if (actual === undefined) + throw 'module [' + id + '] was undefined'; + else if (actual.instance === undefined) + instantiate(id); + return actual.instance; +}; + +var req = function (ids, callback) { + var len = ids.length; + var instances = new Array(len); + for (var i = 0; i < len; ++i) + instances.push(dem(ids[i])); + callback.apply(null, callback); +}; + +var ephox = {}; + +ephox.bolt = { + module: { + api: { + define: def, + require: req, + demand: dem + } + } +}; + +var define = def; +var require = req; +var demand = dem; +// this helps with minificiation when using a lot of global references +var defineGlobal = function (id, ref) { + define(id, [], function () { return ref; }); +}; +/*jsc +["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u"] +jsc*/ +defineGlobal("1", tinymce.ThemeManager); +defineGlobal("2", tinymce.util.Delay); +defineGlobal("b", tinymce.util.Tools); +defineGlobal("c", tinymce.ui.Factory); +defineGlobal("d", tinymce.DOM); +/** + * Toolbar.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("e", [ + "b", + "c" +], function (Tools, Factory) { + var setActiveItem = function (item, name) { + return function(state, args) { + var nodeName, i = args.parents.length; + + while (i--) { + nodeName = args.parents[i].nodeName; + if (nodeName == 'OL' || nodeName == 'UL') { + break; + } + } + + item.active(state && nodeName == name); + }; + }; + + var getSelectorStateResult = function (itemName, item) { + var result = function (selector, handler) { + return { + selector: selector, + handler: handler + }; + }; + + var activeHandler = function(state) { + item.active(state); + }; + + var disabledHandler = function (state) { + item.disabled(state); + }; + + if (itemName == 'bullist') { + return result('ul > li', setActiveItem(item, 'UL')); + } + + if (itemName == 'numlist') { + return result('ol > li', setActiveItem(item, 'OL')); + } + + if (item.settings.stateSelector) { + return result(item.settings.stateSelector, activeHandler); + } + + if (item.settings.disabledStateSelector) { + return result(item.settings.disabledStateSelector, disabledHandler); + } + + return null; + }; + + var bindSelectorChanged = function (editor, itemName, item) { + return function () { + var result = getSelectorStateResult(itemName, item); + if (result !== null) { + editor.selection.selectorChanged(result.selector, result.handler); + } + }; + }; + + var create = function (editor, name, items) { + var toolbarItems = [], buttonGroup; + + if (!items) { + return; + } + + Tools.each(items.split(/[ ,]/), function(item) { + var itemName; + + if (item == '|') { + buttonGroup = null; + } else { + if (Factory.has(item)) { + item = {type: item}; + toolbarItems.push(item); + buttonGroup = null; + } else { + if (!buttonGroup) { + buttonGroup = {type: 'buttongroup', items: []}; + toolbarItems.push(buttonGroup); + } + + if (editor.buttons[item]) { + itemName = item; + item = editor.buttons[itemName]; + + if (typeof item == 'function') { + item = item(); + } + + item.type = item.type || 'button'; + + item = Factory.create(item); + item.on('postRender', bindSelectorChanged(editor, itemName, item)); + buttonGroup.items.push(item); + } + } + } + }); + + return Factory.create({ + type: 'toolbar', + layout: 'flow', + name: name, + items: toolbarItems + }); + }; + + return { + create: create + }; +}); + +defineGlobal("m", tinymce.util.Promise); +/** + * Uuid.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Generates unique ids this is the same as in core but since + * it's not exposed as a global we can't access it. + */ +define("n", [ +], function() { + var count = 0; + + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 0xFFFFFFFF).toString(36); + }; + + return 's' + Date.now().toString(36) + rnd() + rnd() + rnd(); + }; + + var uuid = function (prefix) { + return prefix + (count++) + seed(); + }; + + return { + uuid: uuid + }; +}); + +/** + * Bookmark.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("s", [ +], function () { + /** + * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with + * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans + * added to them since they can be restored after a dom operation. + * + * So this: <p><b>|</b><b>|</b></p> + * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p> + * + * @param {DOMRange} rng DOM Range to get bookmark on. + * @return {Object} Bookmark object. + */ + var create = function (dom, rng) { + var bookmark = {}; + + function setupEndPoint(start) { + var offsetNode, container, offset; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + offsetNode = dom.create('span', {'data-mce-type': 'bookmark'}); + + if (container.hasChildNodes()) { + offset = Math.min(offset, container.childNodes.length - 1); + + if (start) { + container.insertBefore(offsetNode, container.childNodes[offset]); + } else { + dom.insertAfter(offsetNode, container.childNodes[offset]); + } + } else { + container.appendChild(offsetNode); + } + + container = offsetNode; + offset = 0; + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + setupEndPoint(true); + + if (!rng.collapsed) { + setupEndPoint(); + } + + return bookmark; + }; + + /** + * Moves the selection to the current bookmark and removes any selection container wrappers. + * + * @param {Object} bookmark Bookmark object to move selection to. + */ + var resolve = function (dom, bookmark) { + function restoreEndPoint(start) { + var container, offset, node; + + function nodeIndex(container) { + var node = container.parentNode.firstChild, idx = 0; + + while (node) { + if (node == container) { + return idx; + } + + // Skip data-mce-type=bookmark nodes + if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') { + idx++; + } + + node = node.nextSibling; + } + + return -1; + } + + container = node = bookmark[start ? 'startContainer' : 'endContainer']; + offset = bookmark[start ? 'startOffset' : 'endOffset']; + + if (!container) { + return; + } + + if (container.nodeType == 1) { + offset = nodeIndex(container); + container = container.parentNode; + dom.remove(node); + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + restoreEndPoint(true); + restoreEndPoint(); + + var rng = dom.createRng(); + + rng.setStart(bookmark.startContainer, bookmark.startOffset); + + if (bookmark.endContainer) { + rng.setEnd(bookmark.endContainer, bookmark.endOffset); + } + + return rng; + }; + + return { + create: create, + resolve: resolve + }; +}); + + + +defineGlobal("t", tinymce.dom.TreeWalker); +defineGlobal("u", tinymce.dom.RangeUtils); +/** + * Unlink.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Unlink implementation that doesn't leave partial links for example it would produce: + * a[b<a href="x">c]d</a>e -> a[bc]de + * instead of: + * a[b<a href="x">c]d</a>e -> a[bc]<a href="x">d</a>e + */ +define("o", [ + "s", + "b", + "t", + "u" +], function (Bookmark, Tools, TreeWalker, RangeUtils) { + var getSelectedElements = function (rootElm, startNode, endNode) { + var walker, node, elms = []; + + walker = new TreeWalker(startNode, rootElm); + for (node = startNode; node; node = walker.next()) { + if (node.nodeType === 1) { + elms.push(node); + } + + if (node === endNode) { + break; + } + } + + return elms; + }; + + var unwrapElements = function (editor, elms) { + var bookmark, dom, selection; + + dom = editor.dom; + selection = editor.selection; + bookmark = Bookmark.create(dom, selection.getRng()); + + Tools.each(elms, function (elm) { + editor.dom.remove(elm, true); + }); + + selection.setRng(Bookmark.resolve(dom, bookmark)); + }; + + var isLink = function (elm) { + return elm.nodeName === 'A' && elm.hasAttribute('href'); + }; + + var getParentAnchorOrSelf = function (dom, elm) { + var anchorElm = dom.getParent(elm, isLink); + return anchorElm ? anchorElm : elm; + }; + + var getSelectedAnchors = function (editor) { + var startElm, endElm, rootElm, anchorElms, selection, dom, rng; + + selection = editor.selection; + dom = editor.dom; + rng = selection.getRng(); + startElm = getParentAnchorOrSelf(dom, RangeUtils.getNode(rng.startContainer, rng.startOffset)); + endElm = RangeUtils.getNode(rng.endContainer, rng.endOffset); + rootElm = editor.getBody(); + anchorElms = Tools.grep(getSelectedElements(rootElm, startElm, endElm), isLink); + + return anchorElms; + }; + + var unlinkSelection = function (editor) { + unwrapElements(editor, getSelectedAnchors(editor)); + }; + + return { + unlinkSelection: unlinkSelection + }; +}); + +/** + * Actions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("k", [ + "n", + "o" +], function (Uuid, Unlink) { + var createTableHtml = function (cols, rows) { + var x, y, html; + + html = '<table data-mce-id="mce" style="width: 100%">'; + html += '<tbody>'; + + for (y = 0; y < rows; y++) { + html += '<tr>'; + + for (x = 0; x < cols; x++) { + html += '<td><br></td>'; + } + + html += '</tr>'; + } + + html += '</tbody>'; + html += '</table>'; + + return html; + }; + + var getInsertedElement = function (editor) { + var elms = editor.dom.select('*[data-mce-id]'); + return elms[0]; + }; + + var insertTable = function (editor, cols, rows) { + editor.undoManager.transact(function () { + var tableElm, cellElm; + + editor.insertContent(createTableHtml(cols, rows)); + + tableElm = getInsertedElement(editor); + tableElm.removeAttribute('data-mce-id'); + cellElm = editor.dom.select('td,th', tableElm); + editor.selection.setCursorLocation(cellElm[0], 0); + }); + }; + + var formatBlock = function (editor, formatName) { + editor.execCommand('FormatBlock', false, formatName); + }; + + var insertBlob = function (editor, base64, blob) { + var blobCache, blobInfo; + + blobCache = editor.editorUpload.blobCache; + blobInfo = blobCache.create(Uuid.uuid('mceu'), blob, base64); + blobCache.add(blobInfo); + + editor.insertContent(editor.dom.createHTML('img', {src: blobInfo.blobUri()})); + }; + + var collapseSelectionToEnd = function (editor) { + editor.selection.collapse(false); + }; + + var unlink = function (editor) { + editor.focus(); + Unlink.unlinkSelection(editor); + collapseSelectionToEnd(editor); + }; + + var changeHref = function (editor, elm, url) { + editor.focus(); + editor.dom.setAttrib(elm, 'href', url); + collapseSelectionToEnd(editor); + }; + + var insertLink = function (editor, url) { + editor.execCommand('mceInsertLink', false, {href: url}); + collapseSelectionToEnd(editor); + }; + + var updateOrInsertLink = function (editor, url) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + elm ? changeHref(editor, elm, url) : insertLink(editor, url); + }; + + var createLink = function (editor, url) { + url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url); + }; + + return { + insertTable: insertTable, + formatBlock: formatBlock, + insertBlob: insertBlob, + createLink: createLink, + unlink: unlink + }; +}); + +/** + * UrlType.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("p", [ +], function () { + var isDomainLike = function (href) { + return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim()); + }; + + var isAbsolute = function (href) { + return /^https?:\/\//.test(href.trim()); + }; + + return { + isDomainLike: isDomainLike, + isAbsolute: isAbsolute + }; +}); + + + +/** + * Forms.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("f", [ + "b", + "c", + "m", + "k", + "p" +], function (Tools, Factory, Promise, Actions, UrlType) { + var focusFirstTextBox = function (form) { + form.find('textbox').eq(0).each(function (ctrl) { + ctrl.focus(); + }); + }; + + var createForm = function (name, spec) { + var form = Factory.create( + Tools.extend({ + type: 'form', + layout: 'flex', + direction: 'row', + padding: 5, + name: name, + spacing: 3 + }, spec) + ); + + form.on('show', function () { + focusFirstTextBox(form); + }); + + return form; + }; + + var toggleVisibility = function (ctrl, state) { + return state ? ctrl.show() : ctrl.hide(); + }; + + var askAboutPrefix = function (editor, href) { + return new Promise(function (resolve) { + editor.windowManager.confirm( + 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', + function (result) { + var output = result === true ? 'http://' + href : href; + resolve(output); + } + ); + }); + }; + + var convertLinkToAbsolute = function (editor, href) { + return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : Promise.resolve(href); + }; + + var createQuickLinkForm = function (editor, hide) { + var unlink = function () { + editor.focus(); + Actions.unlink(editor); + hide(); + }; + + return createForm('quicklink', { + items: [ + {type: 'button', name: 'unlink', icon: 'unlink', onclick: unlink, tooltip: 'Remove link'}, + {type: 'textbox', name: 'linkurl', placeholder: 'Paste or type a link'}, + {type: 'button', icon: 'checkmark', subtype: 'primary', tooltip: 'Ok', onclick: 'submit'} + ], + onshow: function () { + var elm, linkurl = ''; + + elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + if (elm) { + linkurl = editor.dom.getAttrib(elm, 'href'); + } + + this.fromJSON({ + linkurl: linkurl + }); + + toggleVisibility(this.find('#unlink'), elm); + }, + onsubmit: function (e) { + convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) { + Actions.createLink(editor, url); + hide(); + }); + } + }); + }; + + return { + createQuickLinkForm: createQuickLinkForm + }; +}); + +defineGlobal("q", tinymce.geom.Rect); +/** + * Convert.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("r", [ +], function () { + var fromClientRect = function (clientRect) { + return { + x: clientRect.left, + y: clientRect.top, + w: clientRect.width, + h: clientRect.height + }; + }; + + var toClientRect = function (geomRect) { + return { + left: geomRect.x, + top: geomRect.y, + width: geomRect.w, + height: geomRect.h, + right: geomRect.x + geomRect.w, + bottom: geomRect.y + geomRect.h + }; + }; + + return { + fromClientRect: fromClientRect, + toClientRect: toClientRect + }; +}); + +/** + * Measure.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("g", [ + "d", + "q", + "r" +], function (DOM, Rect, Convert) { + var toAbsolute = function (rect) { + var vp = DOM.getViewPort(); + + return { + x: rect.x + vp.x, + y: rect.y + vp.y, + w: rect.w, + h: rect.h + }; + }; + + var measureElement = function (elm) { + var clientRect = elm.getBoundingClientRect(); + + return toAbsolute({ + x: clientRect.left, + y: clientRect.top, + w: Math.max(elm.clientWidth, elm.offsetWidth), + h: Math.max(elm.clientHeight, elm.offsetHeight) + }); + }; + + var getElementRect = function (editor, elm) { + return measureElement(elm); + }; + + var getPageAreaRect = function (editor) { + return measureElement(editor.getElement().ownerDocument.body); + }; + + var getContentAreaRect = function (editor) { + return measureElement(editor.getContentAreaContainer() || editor.getBody()); + }; + + var getSelectionRect = function (editor) { + var clientRect = editor.selection.getBoundingClientRect(); + return clientRect ? toAbsolute(Convert.fromClientRect(clientRect)) : null; + }; + + return { + getElementRect: getElementRect, + getPageAreaRect: getPageAreaRect, + getContentAreaRect: getContentAreaRect, + getSelectionRect: getSelectionRect + }; +}); + +/** + * Layout.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("h", [ + "q", + "r" +], function (Rect, Convert) { + var result = function (rect, position) { + return { + rect: rect, + position: position + }; + }; + + var moveTo = function (rect, toRect) { + return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h}; + }; + + var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) { + var relPos, relRect, outputPanelRect; + + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1); + targetRect = Rect.clamp(targetRect, contentAreaRect); + + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + targetRect = Rect.intersect(contentAreaRect, targetRect); + if (targetRect) { + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2); + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + outputPanelRect = moveTo(panelRect, targetRect); + return result(outputPanelRect, relPos); + } + + return null; + }; + + var calcInsert = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['cr-cl', 'cl-cr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var calc = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) { + var userConstrainedPanelRect; + + if (typeof handler === 'function') { + userConstrainedPanelRect = handler({ + elementRect: Convert.toClientRect(targetRect), + contentAreaRect: Convert.toClientRect(contentAreaRect), + panelRect: Convert.toClientRect(panelRect) + }); + + return Convert.fromClientRect(userConstrainedPanelRect); + } + + return panelRect; + }; + + return { + calcInsert: calcInsert, + calc: calc, + userConstrain: userConstrain + }; +}); + +/** + * Panel.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("3", [ + "b", + "c", + "d", + "e", + "f", + "g", + "h" +], function (Tools, Factory, DOM, Toolbar, Forms, Measure, Layout) { + return function () { + var DEFAULT_TEXT_SELECTION_ITEMS = 'bold italic | quicklink h2 h3 blockquote'; + var DEFAULT_INSERT_TOOLBAR_ITEMS = 'quickimage quicktable'; + var panel, currentRect; + + var createToolbars = function (editor, toolbars) { + return Tools.map(toolbars, function (toolbar) { + return Toolbar.create(editor, toolbar.id, toolbar.items); + }); + }; + + var getTextSelectionToolbarItems = function (settings) { + var value = settings.selection_toolbar; + return value ? value : DEFAULT_TEXT_SELECTION_ITEMS; + }; + + var getInsertToolbarItems = function (settings) { + var value = settings.insert_toolbar; + return value ? value : DEFAULT_INSERT_TOOLBAR_ITEMS; + }; + + var create = function (editor, toolbars) { + var items, settings = editor.settings; + + items = createToolbars(editor, toolbars); + items = items.concat([ + Toolbar.create(editor, 'text', getTextSelectionToolbarItems(settings)), + Toolbar.create(editor, 'insert', getInsertToolbarItems(settings)), + Forms.createQuickLinkForm(editor, hide) + ]); + + return Factory.create({ + type: 'floatpanel', + role: 'dialog', + classes: 'tinymce tinymce-inline arrow', + ariaLabel: 'Inline toolbar', + layout: 'flex', + direction: 'column', + align: 'stretch', + autohide: false, + autofix: true, + fixed: true, + border: 1, + items: items, + oncancel: function() { + editor.focus(); + } + }); + }; + + var showPanel = function (panel) { + if (panel) { + panel.show(); + } + }; + + var movePanelTo = function (panel, pos) { + panel.moveTo(pos.x, pos.y); + }; + + var togglePositionClass = function (panel, relPos) { + relPos = relPos ? relPos.substr(0, 2) : ''; + + Tools.each({ + t: 'down', + b: 'up', + c: 'center' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1)); + }); + + if (relPos === 'cr') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', false); + } else if (relPos === 'cl') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', true); + } else { + Tools.each({ + l: 'left', + r: 'right' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1)); + }); + } + }; + + var showToolbar = function (panel, id) { + var toolbars = panel.items().filter('#' + id); + + if (toolbars.length > 0) { + toolbars[0].show(); + panel.reflow(); + } + }; + + var showPanelAt = function (panel, id, editor, targetRect) { + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + if (id === 'insert') { + result = Layout.calcInsert(targetRect, contentAreaRect, panelRect); + } else { + result = Layout.calc(targetRect, contentAreaRect, panelRect); + } + + if (result) { + panelRect = result.rect; + currentRect = targetRect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } else { + hide(panel); + } + }; + + var hasFormVisible = function () { + return panel.items().filter('form:visible').length > 0; + }; + + var showForm = function (editor, id) { + if (panel) { + panel.items().hide(); + showToolbar(panel, id); + + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + result = Layout.calc(currentRect, contentAreaRect, panelRect); + + if (result) { + panelRect = result.rect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } + } + }; + + var show = function (editor, id, targetRect, toolbars) { + if (!panel) { + panel = create(editor, toolbars); + panel.renderTo(document.body).reflow().moveTo(targetRect.x, targetRect.y); + editor.nodeChanged(); + } + + showPanelAt(panel, id, editor, targetRect); + }; + + var hide = function () { + if (panel) { + panel.hide(); + } + }; + + var focus = function () { + if (panel) { + panel.find('toolbar:visible').eq(0).each(function (item) { + item.focus(true); + }); + } + }; + + var remove = function () { + if (panel) { + panel.remove(); + panel = null; + } + }; + + var inForm = function () { + return panel && panel.visible() && hasFormVisible(); + }; + + return { + show: show, + showForm: showForm, + inForm: inForm, + hide: hide, + focus: focus, + remove: remove + }; + }; +}); + +/** + * Conversions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("i", [ + "m" +], function (Promise) { + var blobToBase64 = function (blob) { + return new Promise(function(resolve) { + var reader = new FileReader(); + + reader.onloadend = function() { + resolve(reader.result.split(',')[1]); + }; + + reader.readAsDataURL(blob); + }); + }; + + return { + blobToBase64: blobToBase64 + }; +}); + + + +/** + * Picker.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("j", [ + "m" +], function (Promise) { + var pickFile = function () { + return new Promise(function (resolve) { + var fileInput; + + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.style.position = 'fixed'; + fileInput.style.left = 0; + fileInput.style.top = 0; + fileInput.style.opacity = 0.001; + document.body.appendChild(fileInput); + + fileInput.onchange = function(e) { + resolve(Array.prototype.slice.call(e.target.files)); + }; + + fileInput.click(); + fileInput.parentNode.removeChild(fileInput); + }); + }; + + return { + pickFile: pickFile + }; +}); + + + +/** + * Buttons.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("4", [ + "3", + "i", + "j", + "k" +], function (Panel, Conversions, Picker, Actions) { + var addHeaderButtons = function (editor) { + var formatBlock = function (name) { + return function () { + Actions.formatBlock(editor, name); + }; + }; + + for (var i = 1; i < 6; i++) { + var name = 'h' + i; + + editor.addButton(name, { + text: name.toUpperCase(), + tooltip: 'Heading ' + i, + stateSelector: name, + onclick: formatBlock(name), + onPostRender: function () { + // TODO: Remove this hack that produces bold H1-H6 when we have proper icons + var span = this.getEl().firstChild.firstChild; + span.style.fontWeight = 'bold'; + } + }); + } + }; + + var addToEditor = function (editor, panel) { + editor.addButton('quicklink', { + icon: 'link', + tooltip: 'Insert/Edit link', + stateSelector: 'a[href]', + onclick: function () { + panel.showForm(editor, 'quicklink'); + } + }); + + editor.addButton('quickimage', { + icon: 'image', + tooltip: 'Insert image', + onclick: function () { + Picker.pickFile().then(function (files) { + var blob = files[0]; + + Conversions.blobToBase64(blob).then(function (base64) { + Actions.insertBlob(editor, base64, blob); + }); + }); + } + }); + + editor.addButton('quicktable', { + icon: 'table', + tooltip: 'Insert table', + onclick: function () { + panel.hide(); + Actions.insertTable(editor, 2, 2); + } + }); + + addHeaderButtons(editor); + }; + + return { + addToEditor: addToEditor + }; +}); + +defineGlobal("l", tinymce.EditorManager); +/** + * SkinLoader.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("5", [ + "l", + "d" +], function (EditorManager, DOM) { + var fireSkinLoaded = function (editor, callback) { + var done = function () { + editor.fire('SkinLoaded'); + callback(); + }; + + if (editor.initialized) { + done(); + } else { + editor.on('init', done); + } + }; + + var load = function (editor, skin, callback) { + var baseUrl = EditorManager.baseURL; + var skinUrl = baseUrl + '/skins/' + skin; + + var done = function () { + fireSkinLoaded(editor, callback); + }; + + DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done); + editor.contentCSS.push(skinUrl + '/content.inline.min.css'); + }; + + return { + load: load + }; +}); + + + +/** + * Matcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("8", [ +], function () { + // result :: String, Rect -> Matcher.result + var result = function (id, rect) { + return { + id: id, + rect: rect + }; + }; + + // match :: Editor, [(Editor -> Matcher.result | Null)] -> Matcher.result | Null + var match = function (editor, matchers) { + for (var i = 0; i < matchers.length; i++) { + var f = matchers[i]; + var result = f(editor); + + if (result) { + return result; + } + } + + return null; + }; + + return { + match: match, + result: result + }; +}); + +/** + * SelectionMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("6", [ + "8", + "g" +], function (Matcher, Measure) { + // textSelection :: String -> (Editor -> Matcher.result | Null) + var textSelection = function (id) { + return function (editor) { + if (!editor.selection.isCollapsed()) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + }; + }; + + // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) + var emptyTextBlock = function (elements, id) { + return function (editor) { + var i, textBlockElementsMap = editor.schema.getTextBlockElements(); + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName === 'TABLE') { + return null; + } + } + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName in textBlockElementsMap) { + if (editor.dom.isEmpty(elements[i])) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + } + } + + return null; + }; + }; + + return { + textSelection: textSelection, + emptyTextBlock: emptyTextBlock + }; +}); + +/** + * ElementMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("7", [ + "8", + "g" +], function (Matcher, Measure) { + // element :: Element, [PredicateId] -> (Editor -> Matcher.result | Null) + var element = function (element, predicateIds) { + return function (editor) { + for (var i = 0; i < predicateIds.length; i++) { + if (predicateIds[i].predicate(element)) { + return Matcher.result(predicateIds[i].id, Measure.getElementRect(editor, element)); + } + } + + return null; + }; + }; + + // parent :: [Elements], [PredicateId] -> (Editor -> Matcher.result | Null) + var parent = function (elements, predicateIds) { + return function (editor) { + for (var i = 0; i < elements.length; i++) { + for (var x = 0; x < predicateIds.length; x++) { + if (predicateIds[x].predicate(elements[i])) { + return Matcher.result(predicateIds[x].id, Measure.getElementRect(editor, elements[i])); + } + } + } + + return null; + }; + }; + + return { + element: element, + parent: parent + }; +}); + +/** + * Arr.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("9", [ +], function () { + var flatten = function (arr) { + return arr.reduce(function (results, item) { + return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item); + }, []); + }; + + return { + flatten: flatten + }; +}); + +/** + * PredicateId.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("a", [ + "b" +], function (Tools) { + var create = function (id, predicate) { + return { + id: id, + predicate: predicate + }; + }; + + // fromContextToolbars :: [ContextToolbar] -> [PredicateId] + var fromContextToolbars = function (toolbars) { + return Tools.map(toolbars, function (toolbar) { + return create(toolbar.id, toolbar.predicate); + }); + }; + + return { + create: create, + fromContextToolbars: fromContextToolbars + }; +}); + +/** + * Theme.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define("0", [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "a" +], function(ThemeManager, Delay, Panel, Buttons, SkinLoader, SelectionMatcher, ElementMatcher, Matcher, Arr, PredicateId) { + var getSelectionElements = function (editor) { + var node = editor.selection.getNode(); + var elms = editor.dom.getParents(node); + return elms; + }; + + var createToolbar = function (editor, selector, id, items) { + var selectorPredicate = function (elm) { + return editor.dom.is(elm, selector); + }; + + return { + predicate: selectorPredicate, + id: id, + items: items + }; + }; + + var getToolbars = function (editor) { + var contextToolbars = editor.contextToolbars; + + return Arr.flatten([ + contextToolbars ? contextToolbars : [], + createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright') + ]); + }; + + var findMatchResult = function (editor, toolbars) { + var result, elements, contextToolbarsPredicateIds; + + elements = getSelectionElements(editor); + contextToolbarsPredicateIds = PredicateId.fromContextToolbars(toolbars); + + result = Matcher.match(editor, [ + ElementMatcher.element(elements[0], contextToolbarsPredicateIds), + SelectionMatcher.textSelection('text'), + SelectionMatcher.emptyTextBlock(elements, 'insert'), + ElementMatcher.parent(elements, contextToolbarsPredicateIds) + ]); + + return result && result.rect ? result : null; + }; + + var togglePanel = function (editor, panel) { + var toggle = function () { + var toolbars = getToolbars(editor); + var result = findMatchResult(editor, toolbars); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } else { + panel.hide(); + } + }; + + return function () { + if (!editor.removed) { + toggle(); + } + }; + }; + + var ignoreWhenFormIsVisible = function (panel, f) { + return function () { + if (!panel.inForm()) { + f(); + } + }; + }; + + var bindContextualToolbarsEvents = function (editor, panel) { + var throttledTogglePanel = Delay.throttle(togglePanel(editor, panel), 0); + var throttledTogglePanelWhenNotInForm = Delay.throttle(ignoreWhenFormIsVisible(panel, togglePanel(editor, panel)), 0); + + editor.on('blur hide ObjectResizeStart', panel.hide); + editor.on('click', throttledTogglePanel); + editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm); + editor.on('ResizeEditor ResizeWindow keyup', throttledTogglePanel); + editor.on('remove', panel.remove); + + editor.shortcuts.add('Alt+F10', '', panel.focus); + }; + + var overrideLinkShortcut = function (editor, panel) { + editor.shortcuts.remove('meta+k'); + editor.shortcuts.add('meta+k', '', function () { + var toolbars = getToolbars(editor); + var result = result = Matcher.match(editor, [ + SelectionMatcher.textSelection('quicklink') + ]); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } + }); + }; + + var renderInlineUI = function (editor, panel) { + var skinName = editor.settings.skin || 'lightgray'; + + SkinLoader.load(editor, skinName, function () { + bindContextualToolbarsEvents(editor, panel); + overrideLinkShortcut(editor, panel); + }); + + return {}; + }; + + var fail = function (message) { + throw new Error(message); + }; + + ThemeManager.add('inlite', function (editor) { + var panel = new Panel(); + + Buttons.addToEditor(editor, panel); + + var renderUI = function () { + return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.'); + }; + + return { + renderUI: renderUI + }; + }); + + return function() {}; +}); + +dem("0")(); +})(); diff --git a/plugins/tinymce/themes/inlite/scratch/inline/theme.raw.js b/plugins/tinymce/themes/inlite/scratch/inline/theme.raw.js new file mode 100644 index 0000000..13152a5 --- /dev/null +++ b/plugins/tinymce/themes/inlite/scratch/inline/theme.raw.js @@ -0,0 +1,1679 @@ +(function () { + +var defs = {}; // id -> {dependencies, definition, instance (possibly undefined)} + +// Used when there is no 'main' module. +// The name is probably (hopefully) unique so minification removes for releases. +var register_3795 = function (id) { + var module = dem(id); + var fragments = id.split('.'); + var target = Function('return this;')(); + for (var i = 0; i < fragments.length - 1; ++i) { + if (target[fragments[i]] === undefined) + target[fragments[i]] = {}; + target = target[fragments[i]]; + } + target[fragments[fragments.length - 1]] = module; +}; + +var instantiate = function (id) { + var actual = defs[id]; + var dependencies = actual.deps; + var definition = actual.defn; + var len = dependencies.length; + var instances = new Array(len); + for (var i = 0; i < len; ++i) + instances[i] = dem(dependencies[i]); + var defResult = definition.apply(null, instances); + if (defResult === undefined) + throw 'module [' + id + '] returned undefined'; + actual.instance = defResult; +}; + +var def = function (id, dependencies, definition) { + if (typeof id !== 'string') + throw 'module id must be a string'; + else if (dependencies === undefined) + throw 'no dependencies for ' + id; + else if (definition === undefined) + throw 'no definition function for ' + id; + defs[id] = { + deps: dependencies, + defn: definition, + instance: undefined + }; +}; + +var dem = function (id) { + var actual = defs[id]; + if (actual === undefined) + throw 'module [' + id + '] was undefined'; + else if (actual.instance === undefined) + instantiate(id); + return actual.instance; +}; + +var req = function (ids, callback) { + var len = ids.length; + var instances = new Array(len); + for (var i = 0; i < len; ++i) + instances.push(dem(ids[i])); + callback.apply(null, callback); +}; + +var ephox = {}; + +ephox.bolt = { + module: { + api: { + define: def, + require: req, + demand: dem + } + } +}; + +var define = def; +var require = req; +var demand = dem; +// this helps with minificiation when using a lot of global references +var defineGlobal = function (id, ref) { + define(id, [], function () { return ref; }); +}; +/*jsc +["tinymce/inlite/Theme","global!tinymce.ThemeManager","global!tinymce.util.Delay","tinymce/inlite/ui/Panel","tinymce/inlite/ui/Buttons","tinymce/inlite/core/SkinLoader","tinymce/inlite/core/SelectionMatcher","tinymce/inlite/core/ElementMatcher","tinymce/inlite/core/Matcher","tinymce/inlite/alien/Arr","tinymce/inlite/core/PredicateId","global!tinymce.util.Tools","global!tinymce.ui.Factory","global!tinymce.DOM","tinymce/inlite/ui/Toolbar","tinymce/inlite/ui/Forms","tinymce/inlite/core/Measure","tinymce/inlite/core/Layout","tinymce/inlite/file/Conversions","tinymce/inlite/file/Picker","tinymce/inlite/core/Actions","global!tinymce.EditorManager","global!tinymce.util.Promise","tinymce/inlite/alien/Uuid","tinymce/inlite/alien/Unlink","tinymce/inlite/core/UrlType","global!tinymce.geom.Rect","tinymce/inlite/core/Convert","tinymce/inlite/alien/Bookmark","global!tinymce.dom.TreeWalker","global!tinymce.dom.RangeUtils"] +jsc*/ +defineGlobal("global!tinymce.ThemeManager", tinymce.ThemeManager); +defineGlobal("global!tinymce.util.Delay", tinymce.util.Delay); +defineGlobal("global!tinymce.util.Tools", tinymce.util.Tools); +defineGlobal("global!tinymce.ui.Factory", tinymce.ui.Factory); +defineGlobal("global!tinymce.DOM", tinymce.DOM); +/** + * Toolbar.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Toolbar', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory' +], function (Tools, Factory) { + var setActiveItem = function (item, name) { + return function(state, args) { + var nodeName, i = args.parents.length; + + while (i--) { + nodeName = args.parents[i].nodeName; + if (nodeName == 'OL' || nodeName == 'UL') { + break; + } + } + + item.active(state && nodeName == name); + }; + }; + + var getSelectorStateResult = function (itemName, item) { + var result = function (selector, handler) { + return { + selector: selector, + handler: handler + }; + }; + + var activeHandler = function(state) { + item.active(state); + }; + + var disabledHandler = function (state) { + item.disabled(state); + }; + + if (itemName == 'bullist') { + return result('ul > li', setActiveItem(item, 'UL')); + } + + if (itemName == 'numlist') { + return result('ol > li', setActiveItem(item, 'OL')); + } + + if (item.settings.stateSelector) { + return result(item.settings.stateSelector, activeHandler); + } + + if (item.settings.disabledStateSelector) { + return result(item.settings.disabledStateSelector, disabledHandler); + } + + return null; + }; + + var bindSelectorChanged = function (editor, itemName, item) { + return function () { + var result = getSelectorStateResult(itemName, item); + if (result !== null) { + editor.selection.selectorChanged(result.selector, result.handler); + } + }; + }; + + var create = function (editor, name, items) { + var toolbarItems = [], buttonGroup; + + if (!items) { + return; + } + + Tools.each(items.split(/[ ,]/), function(item) { + var itemName; + + if (item == '|') { + buttonGroup = null; + } else { + if (Factory.has(item)) { + item = {type: item}; + toolbarItems.push(item); + buttonGroup = null; + } else { + if (!buttonGroup) { + buttonGroup = {type: 'buttongroup', items: []}; + toolbarItems.push(buttonGroup); + } + + if (editor.buttons[item]) { + itemName = item; + item = editor.buttons[itemName]; + + if (typeof item == 'function') { + item = item(); + } + + item.type = item.type || 'button'; + + item = Factory.create(item); + item.on('postRender', bindSelectorChanged(editor, itemName, item)); + buttonGroup.items.push(item); + } + } + } + }); + + return Factory.create({ + type: 'toolbar', + layout: 'flow', + name: name, + items: toolbarItems + }); + }; + + return { + create: create + }; +}); + +defineGlobal("global!tinymce.util.Promise", tinymce.util.Promise); +/** + * Uuid.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Generates unique ids this is the same as in core but since + * it's not exposed as a global we can't access it. + */ +define("tinymce/inlite/alien/Uuid", [ +], function() { + var count = 0; + + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 0xFFFFFFFF).toString(36); + }; + + return 's' + Date.now().toString(36) + rnd() + rnd() + rnd(); + }; + + var uuid = function (prefix) { + return prefix + (count++) + seed(); + }; + + return { + uuid: uuid + }; +}); + +/** + * Bookmark.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Bookmark', [ +], function () { + /** + * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with + * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans + * added to them since they can be restored after a dom operation. + * + * So this: <p><b>|</b><b>|</b></p> + * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p> + * + * @param {DOMRange} rng DOM Range to get bookmark on. + * @return {Object} Bookmark object. + */ + var create = function (dom, rng) { + var bookmark = {}; + + function setupEndPoint(start) { + var offsetNode, container, offset; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + offsetNode = dom.create('span', {'data-mce-type': 'bookmark'}); + + if (container.hasChildNodes()) { + offset = Math.min(offset, container.childNodes.length - 1); + + if (start) { + container.insertBefore(offsetNode, container.childNodes[offset]); + } else { + dom.insertAfter(offsetNode, container.childNodes[offset]); + } + } else { + container.appendChild(offsetNode); + } + + container = offsetNode; + offset = 0; + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + setupEndPoint(true); + + if (!rng.collapsed) { + setupEndPoint(); + } + + return bookmark; + }; + + /** + * Moves the selection to the current bookmark and removes any selection container wrappers. + * + * @param {Object} bookmark Bookmark object to move selection to. + */ + var resolve = function (dom, bookmark) { + function restoreEndPoint(start) { + var container, offset, node; + + function nodeIndex(container) { + var node = container.parentNode.firstChild, idx = 0; + + while (node) { + if (node == container) { + return idx; + } + + // Skip data-mce-type=bookmark nodes + if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') { + idx++; + } + + node = node.nextSibling; + } + + return -1; + } + + container = node = bookmark[start ? 'startContainer' : 'endContainer']; + offset = bookmark[start ? 'startOffset' : 'endOffset']; + + if (!container) { + return; + } + + if (container.nodeType == 1) { + offset = nodeIndex(container); + container = container.parentNode; + dom.remove(node); + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + restoreEndPoint(true); + restoreEndPoint(); + + var rng = dom.createRng(); + + rng.setStart(bookmark.startContainer, bookmark.startOffset); + + if (bookmark.endContainer) { + rng.setEnd(bookmark.endContainer, bookmark.endOffset); + } + + return rng; + }; + + return { + create: create, + resolve: resolve + }; +}); + + + +defineGlobal("global!tinymce.dom.TreeWalker", tinymce.dom.TreeWalker); +defineGlobal("global!tinymce.dom.RangeUtils", tinymce.dom.RangeUtils); +/** + * Unlink.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Unlink implementation that doesn't leave partial links for example it would produce: + * a[b<a href="x">c]d</a>e -> a[bc]de + * instead of: + * a[b<a href="x">c]d</a>e -> a[bc]<a href="x">d</a>e + */ +define("tinymce/inlite/alien/Unlink", [ + 'tinymce/inlite/alien/Bookmark', + 'global!tinymce.util.Tools', + 'global!tinymce.dom.TreeWalker', + 'global!tinymce.dom.RangeUtils' +], function (Bookmark, Tools, TreeWalker, RangeUtils) { + var getSelectedElements = function (rootElm, startNode, endNode) { + var walker, node, elms = []; + + walker = new TreeWalker(startNode, rootElm); + for (node = startNode; node; node = walker.next()) { + if (node.nodeType === 1) { + elms.push(node); + } + + if (node === endNode) { + break; + } + } + + return elms; + }; + + var unwrapElements = function (editor, elms) { + var bookmark, dom, selection; + + dom = editor.dom; + selection = editor.selection; + bookmark = Bookmark.create(dom, selection.getRng()); + + Tools.each(elms, function (elm) { + editor.dom.remove(elm, true); + }); + + selection.setRng(Bookmark.resolve(dom, bookmark)); + }; + + var isLink = function (elm) { + return elm.nodeName === 'A' && elm.hasAttribute('href'); + }; + + var getParentAnchorOrSelf = function (dom, elm) { + var anchorElm = dom.getParent(elm, isLink); + return anchorElm ? anchorElm : elm; + }; + + var getSelectedAnchors = function (editor) { + var startElm, endElm, rootElm, anchorElms, selection, dom, rng; + + selection = editor.selection; + dom = editor.dom; + rng = selection.getRng(); + startElm = getParentAnchorOrSelf(dom, RangeUtils.getNode(rng.startContainer, rng.startOffset)); + endElm = RangeUtils.getNode(rng.endContainer, rng.endOffset); + rootElm = editor.getBody(); + anchorElms = Tools.grep(getSelectedElements(rootElm, startElm, endElm), isLink); + + return anchorElms; + }; + + var unlinkSelection = function (editor) { + unwrapElements(editor, getSelectedAnchors(editor)); + }; + + return { + unlinkSelection: unlinkSelection + }; +}); + +/** + * Actions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Actions', [ + 'tinymce/inlite/alien/Uuid', + 'tinymce/inlite/alien/Unlink' +], function (Uuid, Unlink) { + var createTableHtml = function (cols, rows) { + var x, y, html; + + html = '<table data-mce-id="mce" style="width: 100%">'; + html += '<tbody>'; + + for (y = 0; y < rows; y++) { + html += '<tr>'; + + for (x = 0; x < cols; x++) { + html += '<td><br></td>'; + } + + html += '</tr>'; + } + + html += '</tbody>'; + html += '</table>'; + + return html; + }; + + var getInsertedElement = function (editor) { + var elms = editor.dom.select('*[data-mce-id]'); + return elms[0]; + }; + + var insertTable = function (editor, cols, rows) { + editor.undoManager.transact(function () { + var tableElm, cellElm; + + editor.insertContent(createTableHtml(cols, rows)); + + tableElm = getInsertedElement(editor); + tableElm.removeAttribute('data-mce-id'); + cellElm = editor.dom.select('td,th', tableElm); + editor.selection.setCursorLocation(cellElm[0], 0); + }); + }; + + var formatBlock = function (editor, formatName) { + editor.execCommand('FormatBlock', false, formatName); + }; + + var insertBlob = function (editor, base64, blob) { + var blobCache, blobInfo; + + blobCache = editor.editorUpload.blobCache; + blobInfo = blobCache.create(Uuid.uuid('mceu'), blob, base64); + blobCache.add(blobInfo); + + editor.insertContent(editor.dom.createHTML('img', {src: blobInfo.blobUri()})); + }; + + var collapseSelectionToEnd = function (editor) { + editor.selection.collapse(false); + }; + + var unlink = function (editor) { + editor.focus(); + Unlink.unlinkSelection(editor); + collapseSelectionToEnd(editor); + }; + + var changeHref = function (editor, elm, url) { + editor.focus(); + editor.dom.setAttrib(elm, 'href', url); + collapseSelectionToEnd(editor); + }; + + var insertLink = function (editor, url) { + editor.execCommand('mceInsertLink', false, {href: url}); + collapseSelectionToEnd(editor); + }; + + var updateOrInsertLink = function (editor, url) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + elm ? changeHref(editor, elm, url) : insertLink(editor, url); + }; + + var createLink = function (editor, url) { + url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url); + }; + + return { + insertTable: insertTable, + formatBlock: formatBlock, + insertBlob: insertBlob, + createLink: createLink, + unlink: unlink + }; +}); + +/** + * UrlType.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/UrlType', [ +], function () { + var isDomainLike = function (href) { + return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim()); + }; + + var isAbsolute = function (href) { + return /^https?:\/\//.test(href.trim()); + }; + + return { + isDomainLike: isDomainLike, + isAbsolute: isAbsolute + }; +}); + + + +/** + * Forms.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Forms', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.util.Promise', + 'tinymce/inlite/core/Actions', + 'tinymce/inlite/core/UrlType' +], function (Tools, Factory, Promise, Actions, UrlType) { + var focusFirstTextBox = function (form) { + form.find('textbox').eq(0).each(function (ctrl) { + ctrl.focus(); + }); + }; + + var createForm = function (name, spec) { + var form = Factory.create( + Tools.extend({ + type: 'form', + layout: 'flex', + direction: 'row', + padding: 5, + name: name, + spacing: 3 + }, spec) + ); + + form.on('show', function () { + focusFirstTextBox(form); + }); + + return form; + }; + + var toggleVisibility = function (ctrl, state) { + return state ? ctrl.show() : ctrl.hide(); + }; + + var askAboutPrefix = function (editor, href) { + return new Promise(function (resolve) { + editor.windowManager.confirm( + 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', + function (result) { + var output = result === true ? 'http://' + href : href; + resolve(output); + } + ); + }); + }; + + var convertLinkToAbsolute = function (editor, href) { + return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : Promise.resolve(href); + }; + + var createQuickLinkForm = function (editor, hide) { + var unlink = function () { + editor.focus(); + Actions.unlink(editor); + hide(); + }; + + return createForm('quicklink', { + items: [ + {type: 'button', name: 'unlink', icon: 'unlink', onclick: unlink, tooltip: 'Remove link'}, + {type: 'textbox', name: 'linkurl', placeholder: 'Paste or type a link'}, + {type: 'button', icon: 'checkmark', subtype: 'primary', tooltip: 'Ok', onclick: 'submit'} + ], + onshow: function () { + var elm, linkurl = ''; + + elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + if (elm) { + linkurl = editor.dom.getAttrib(elm, 'href'); + } + + this.fromJSON({ + linkurl: linkurl + }); + + toggleVisibility(this.find('#unlink'), elm); + }, + onsubmit: function (e) { + convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) { + Actions.createLink(editor, url); + hide(); + }); + } + }); + }; + + return { + createQuickLinkForm: createQuickLinkForm + }; +}); + +defineGlobal("global!tinymce.geom.Rect", tinymce.geom.Rect); +/** + * Convert.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Convert', [ +], function () { + var fromClientRect = function (clientRect) { + return { + x: clientRect.left, + y: clientRect.top, + w: clientRect.width, + h: clientRect.height + }; + }; + + var toClientRect = function (geomRect) { + return { + left: geomRect.x, + top: geomRect.y, + width: geomRect.w, + height: geomRect.h, + right: geomRect.x + geomRect.w, + bottom: geomRect.y + geomRect.h + }; + }; + + return { + fromClientRect: fromClientRect, + toClientRect: toClientRect + }; +}); + +/** + * Measure.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Measure', [ + 'global!tinymce.DOM', + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (DOM, Rect, Convert) { + var toAbsolute = function (rect) { + var vp = DOM.getViewPort(); + + return { + x: rect.x + vp.x, + y: rect.y + vp.y, + w: rect.w, + h: rect.h + }; + }; + + var measureElement = function (elm) { + var clientRect = elm.getBoundingClientRect(); + + return toAbsolute({ + x: clientRect.left, + y: clientRect.top, + w: Math.max(elm.clientWidth, elm.offsetWidth), + h: Math.max(elm.clientHeight, elm.offsetHeight) + }); + }; + + var getElementRect = function (editor, elm) { + return measureElement(elm); + }; + + var getPageAreaRect = function (editor) { + return measureElement(editor.getElement().ownerDocument.body); + }; + + var getContentAreaRect = function (editor) { + return measureElement(editor.getContentAreaContainer() || editor.getBody()); + }; + + var getSelectionRect = function (editor) { + var clientRect = editor.selection.getBoundingClientRect(); + return clientRect ? toAbsolute(Convert.fromClientRect(clientRect)) : null; + }; + + return { + getElementRect: getElementRect, + getPageAreaRect: getPageAreaRect, + getContentAreaRect: getContentAreaRect, + getSelectionRect: getSelectionRect + }; +}); + +/** + * Layout.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Layout', [ + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (Rect, Convert) { + var result = function (rect, position) { + return { + rect: rect, + position: position + }; + }; + + var moveTo = function (rect, toRect) { + return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h}; + }; + + var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) { + var relPos, relRect, outputPanelRect; + + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1); + targetRect = Rect.clamp(targetRect, contentAreaRect); + + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + targetRect = Rect.intersect(contentAreaRect, targetRect); + if (targetRect) { + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2); + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + outputPanelRect = moveTo(panelRect, targetRect); + return result(outputPanelRect, relPos); + } + + return null; + }; + + var calcInsert = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['cr-cl', 'cl-cr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var calc = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) { + var userConstrainedPanelRect; + + if (typeof handler === 'function') { + userConstrainedPanelRect = handler({ + elementRect: Convert.toClientRect(targetRect), + contentAreaRect: Convert.toClientRect(contentAreaRect), + panelRect: Convert.toClientRect(panelRect) + }); + + return Convert.fromClientRect(userConstrainedPanelRect); + } + + return panelRect; + }; + + return { + calcInsert: calcInsert, + calc: calc, + userConstrain: userConstrain + }; +}); + +/** + * Panel.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Panel', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.DOM', + 'tinymce/inlite/ui/Toolbar', + 'tinymce/inlite/ui/Forms', + 'tinymce/inlite/core/Measure', + 'tinymce/inlite/core/Layout' +], function (Tools, Factory, DOM, Toolbar, Forms, Measure, Layout) { + return function () { + var DEFAULT_TEXT_SELECTION_ITEMS = 'bold italic | quicklink h2 h3 blockquote'; + var DEFAULT_INSERT_TOOLBAR_ITEMS = 'quickimage quicktable'; + var panel, currentRect; + + var createToolbars = function (editor, toolbars) { + return Tools.map(toolbars, function (toolbar) { + return Toolbar.create(editor, toolbar.id, toolbar.items); + }); + }; + + var getTextSelectionToolbarItems = function (settings) { + var value = settings.selection_toolbar; + return value ? value : DEFAULT_TEXT_SELECTION_ITEMS; + }; + + var getInsertToolbarItems = function (settings) { + var value = settings.insert_toolbar; + return value ? value : DEFAULT_INSERT_TOOLBAR_ITEMS; + }; + + var create = function (editor, toolbars) { + var items, settings = editor.settings; + + items = createToolbars(editor, toolbars); + items = items.concat([ + Toolbar.create(editor, 'text', getTextSelectionToolbarItems(settings)), + Toolbar.create(editor, 'insert', getInsertToolbarItems(settings)), + Forms.createQuickLinkForm(editor, hide) + ]); + + return Factory.create({ + type: 'floatpanel', + role: 'dialog', + classes: 'tinymce tinymce-inline arrow', + ariaLabel: 'Inline toolbar', + layout: 'flex', + direction: 'column', + align: 'stretch', + autohide: false, + autofix: true, + fixed: true, + border: 1, + items: items, + oncancel: function() { + editor.focus(); + } + }); + }; + + var showPanel = function (panel) { + if (panel) { + panel.show(); + } + }; + + var movePanelTo = function (panel, pos) { + panel.moveTo(pos.x, pos.y); + }; + + var togglePositionClass = function (panel, relPos) { + relPos = relPos ? relPos.substr(0, 2) : ''; + + Tools.each({ + t: 'down', + b: 'up', + c: 'center' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1)); + }); + + if (relPos === 'cr') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', false); + } else if (relPos === 'cl') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', true); + } else { + Tools.each({ + l: 'left', + r: 'right' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1)); + }); + } + }; + + var showToolbar = function (panel, id) { + var toolbars = panel.items().filter('#' + id); + + if (toolbars.length > 0) { + toolbars[0].show(); + panel.reflow(); + } + }; + + var showPanelAt = function (panel, id, editor, targetRect) { + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + if (id === 'insert') { + result = Layout.calcInsert(targetRect, contentAreaRect, panelRect); + } else { + result = Layout.calc(targetRect, contentAreaRect, panelRect); + } + + if (result) { + panelRect = result.rect; + currentRect = targetRect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } else { + hide(panel); + } + }; + + var hasFormVisible = function () { + return panel.items().filter('form:visible').length > 0; + }; + + var showForm = function (editor, id) { + if (panel) { + panel.items().hide(); + showToolbar(panel, id); + + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + result = Layout.calc(currentRect, contentAreaRect, panelRect); + + if (result) { + panelRect = result.rect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } + } + }; + + var show = function (editor, id, targetRect, toolbars) { + if (!panel) { + panel = create(editor, toolbars); + panel.renderTo(document.body).reflow().moveTo(targetRect.x, targetRect.y); + editor.nodeChanged(); + } + + showPanelAt(panel, id, editor, targetRect); + }; + + var hide = function () { + if (panel) { + panel.hide(); + } + }; + + var focus = function () { + if (panel) { + panel.find('toolbar:visible').eq(0).each(function (item) { + item.focus(true); + }); + } + }; + + var remove = function () { + if (panel) { + panel.remove(); + panel = null; + } + }; + + var inForm = function () { + return panel && panel.visible() && hasFormVisible(); + }; + + return { + show: show, + showForm: showForm, + inForm: inForm, + hide: hide, + focus: focus, + remove: remove + }; + }; +}); + +/** + * Conversions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Conversions', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var blobToBase64 = function (blob) { + return new Promise(function(resolve) { + var reader = new FileReader(); + + reader.onloadend = function() { + resolve(reader.result.split(',')[1]); + }; + + reader.readAsDataURL(blob); + }); + }; + + return { + blobToBase64: blobToBase64 + }; +}); + + + +/** + * Picker.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Picker', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var pickFile = function () { + return new Promise(function (resolve) { + var fileInput; + + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.style.position = 'fixed'; + fileInput.style.left = 0; + fileInput.style.top = 0; + fileInput.style.opacity = 0.001; + document.body.appendChild(fileInput); + + fileInput.onchange = function(e) { + resolve(Array.prototype.slice.call(e.target.files)); + }; + + fileInput.click(); + fileInput.parentNode.removeChild(fileInput); + }); + }; + + return { + pickFile: pickFile + }; +}); + + + +/** + * Buttons.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Buttons', [ + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/file/Conversions', + 'tinymce/inlite/file/Picker', + 'tinymce/inlite/core/Actions' +], function (Panel, Conversions, Picker, Actions) { + var addHeaderButtons = function (editor) { + var formatBlock = function (name) { + return function () { + Actions.formatBlock(editor, name); + }; + }; + + for (var i = 1; i < 6; i++) { + var name = 'h' + i; + + editor.addButton(name, { + text: name.toUpperCase(), + tooltip: 'Heading ' + i, + stateSelector: name, + onclick: formatBlock(name), + onPostRender: function () { + // TODO: Remove this hack that produces bold H1-H6 when we have proper icons + var span = this.getEl().firstChild.firstChild; + span.style.fontWeight = 'bold'; + } + }); + } + }; + + var addToEditor = function (editor, panel) { + editor.addButton('quicklink', { + icon: 'link', + tooltip: 'Insert/Edit link', + stateSelector: 'a[href]', + onclick: function () { + panel.showForm(editor, 'quicklink'); + } + }); + + editor.addButton('quickimage', { + icon: 'image', + tooltip: 'Insert image', + onclick: function () { + Picker.pickFile().then(function (files) { + var blob = files[0]; + + Conversions.blobToBase64(blob).then(function (base64) { + Actions.insertBlob(editor, base64, blob); + }); + }); + } + }); + + editor.addButton('quicktable', { + icon: 'table', + tooltip: 'Insert table', + onclick: function () { + panel.hide(); + Actions.insertTable(editor, 2, 2); + } + }); + + addHeaderButtons(editor); + }; + + return { + addToEditor: addToEditor + }; +}); + +defineGlobal("global!tinymce.EditorManager", tinymce.EditorManager); +/** + * SkinLoader.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SkinLoader', [ + 'global!tinymce.EditorManager', + 'global!tinymce.DOM' +], function (EditorManager, DOM) { + var fireSkinLoaded = function (editor, callback) { + var done = function () { + editor.fire('SkinLoaded'); + callback(); + }; + + if (editor.initialized) { + done(); + } else { + editor.on('init', done); + } + }; + + var load = function (editor, skin, callback) { + var baseUrl = EditorManager.baseURL; + var skinUrl = baseUrl + '/skins/' + skin; + + var done = function () { + fireSkinLoaded(editor, callback); + }; + + DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done); + editor.contentCSS.push(skinUrl + '/content.inline.min.css'); + }; + + return { + load: load + }; +}); + + + +/** + * Matcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Matcher', [ +], function () { + // result :: String, Rect -> Matcher.result + var result = function (id, rect) { + return { + id: id, + rect: rect + }; + }; + + // match :: Editor, [(Editor -> Matcher.result | Null)] -> Matcher.result | Null + var match = function (editor, matchers) { + for (var i = 0; i < matchers.length; i++) { + var f = matchers[i]; + var result = f(editor); + + if (result) { + return result; + } + } + + return null; + }; + + return { + match: match, + result: result + }; +}); + +/** + * SelectionMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SelectionMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // textSelection :: String -> (Editor -> Matcher.result | Null) + var textSelection = function (id) { + return function (editor) { + if (!editor.selection.isCollapsed()) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + }; + }; + + // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) + var emptyTextBlock = function (elements, id) { + return function (editor) { + var i, textBlockElementsMap = editor.schema.getTextBlockElements(); + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName === 'TABLE') { + return null; + } + } + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName in textBlockElementsMap) { + if (editor.dom.isEmpty(elements[i])) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + } + } + + return null; + }; + }; + + return { + textSelection: textSelection, + emptyTextBlock: emptyTextBlock + }; +}); + +/** + * ElementMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/ElementMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // element :: Element, [PredicateId] -> (Editor -> Matcher.result | Null) + var element = function (element, predicateIds) { + return function (editor) { + for (var i = 0; i < predicateIds.length; i++) { + if (predicateIds[i].predicate(element)) { + return Matcher.result(predicateIds[i].id, Measure.getElementRect(editor, element)); + } + } + + return null; + }; + }; + + // parent :: [Elements], [PredicateId] -> (Editor -> Matcher.result | Null) + var parent = function (elements, predicateIds) { + return function (editor) { + for (var i = 0; i < elements.length; i++) { + for (var x = 0; x < predicateIds.length; x++) { + if (predicateIds[x].predicate(elements[i])) { + return Matcher.result(predicateIds[x].id, Measure.getElementRect(editor, elements[i])); + } + } + } + + return null; + }; + }; + + return { + element: element, + parent: parent + }; +}); + +/** + * Arr.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Arr', [ +], function () { + var flatten = function (arr) { + return arr.reduce(function (results, item) { + return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item); + }, []); + }; + + return { + flatten: flatten + }; +}); + +/** + * PredicateId.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/PredicateId', [ + 'global!tinymce.util.Tools' +], function (Tools) { + var create = function (id, predicate) { + return { + id: id, + predicate: predicate + }; + }; + + // fromContextToolbars :: [ContextToolbar] -> [PredicateId] + var fromContextToolbars = function (toolbars) { + return Tools.map(toolbars, function (toolbar) { + return create(toolbar.id, toolbar.predicate); + }); + }; + + return { + create: create, + fromContextToolbars: fromContextToolbars + }; +}); + +/** + * Theme.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/Theme', [ + 'global!tinymce.ThemeManager', + 'global!tinymce.util.Delay', + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/ui/Buttons', + 'tinymce/inlite/core/SkinLoader', + 'tinymce/inlite/core/SelectionMatcher', + 'tinymce/inlite/core/ElementMatcher', + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/alien/Arr', + 'tinymce/inlite/core/PredicateId' +], function(ThemeManager, Delay, Panel, Buttons, SkinLoader, SelectionMatcher, ElementMatcher, Matcher, Arr, PredicateId) { + var getSelectionElements = function (editor) { + var node = editor.selection.getNode(); + var elms = editor.dom.getParents(node); + return elms; + }; + + var createToolbar = function (editor, selector, id, items) { + var selectorPredicate = function (elm) { + return editor.dom.is(elm, selector); + }; + + return { + predicate: selectorPredicate, + id: id, + items: items + }; + }; + + var getToolbars = function (editor) { + var contextToolbars = editor.contextToolbars; + + return Arr.flatten([ + contextToolbars ? contextToolbars : [], + createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright') + ]); + }; + + var findMatchResult = function (editor, toolbars) { + var result, elements, contextToolbarsPredicateIds; + + elements = getSelectionElements(editor); + contextToolbarsPredicateIds = PredicateId.fromContextToolbars(toolbars); + + result = Matcher.match(editor, [ + ElementMatcher.element(elements[0], contextToolbarsPredicateIds), + SelectionMatcher.textSelection('text'), + SelectionMatcher.emptyTextBlock(elements, 'insert'), + ElementMatcher.parent(elements, contextToolbarsPredicateIds) + ]); + + return result && result.rect ? result : null; + }; + + var togglePanel = function (editor, panel) { + var toggle = function () { + var toolbars = getToolbars(editor); + var result = findMatchResult(editor, toolbars); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } else { + panel.hide(); + } + }; + + return function () { + if (!editor.removed) { + toggle(); + } + }; + }; + + var ignoreWhenFormIsVisible = function (panel, f) { + return function () { + if (!panel.inForm()) { + f(); + } + }; + }; + + var bindContextualToolbarsEvents = function (editor, panel) { + var throttledTogglePanel = Delay.throttle(togglePanel(editor, panel), 0); + var throttledTogglePanelWhenNotInForm = Delay.throttle(ignoreWhenFormIsVisible(panel, togglePanel(editor, panel)), 0); + + editor.on('blur hide ObjectResizeStart', panel.hide); + editor.on('click', throttledTogglePanel); + editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm); + editor.on('ResizeEditor ResizeWindow keyup', throttledTogglePanel); + editor.on('remove', panel.remove); + + editor.shortcuts.add('Alt+F10', '', panel.focus); + }; + + var overrideLinkShortcut = function (editor, panel) { + editor.shortcuts.remove('meta+k'); + editor.shortcuts.add('meta+k', '', function () { + var toolbars = getToolbars(editor); + var result = result = Matcher.match(editor, [ + SelectionMatcher.textSelection('quicklink') + ]); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } + }); + }; + + var renderInlineUI = function (editor, panel) { + var skinName = editor.settings.skin || 'lightgray'; + + SkinLoader.load(editor, skinName, function () { + bindContextualToolbarsEvents(editor, panel); + overrideLinkShortcut(editor, panel); + }); + + return {}; + }; + + var fail = function (message) { + throw new Error(message); + }; + + ThemeManager.add('inlite', function (editor) { + var panel = new Panel(); + + Buttons.addToEditor(editor, panel); + + var renderUI = function () { + return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.'); + }; + + return { + renderUI: renderUI + }; + }); + + return function() {}; +}); + +dem('tinymce/inlite/Theme')(); +})(); diff --git a/plugins/tinymce/themes/inlite/src/demo/css/demo.css b/plugins/tinymce/themes/inlite/src/demo/css/demo.css new file mode 100644 index 0000000..3e6c242 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/demo/css/demo.css @@ -0,0 +1,25 @@ +blockquote { + border-left: 3px solid rgba(0,0,0,.8); + padding-left: 20px; + margin: 0; +} + +.mce-edit-focus { + outline: 1px solid blue; +} + +.tinymce { + margin: 10px; + padding: 10px; + overflow: auto; + border: 1px solid gray; +} + +table, td { + border: 1px dashed gray; +} + +/*.mce-tinymce-inline { + transition: left 50ms ease-in-out, top 50ms ease-in-out; +} +*/ \ No newline at end of file diff --git a/plugins/tinymce/themes/inlite/src/demo/html/demo.html b/plugins/tinymce/themes/inlite/src/demo/html/demo.html new file mode 100644 index 0000000..84b60db --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/demo/html/demo.html @@ -0,0 +1,69 @@ +<!DOCTYPE html> +<html> +<head> +<title>inlite-theme Demo Page</title> +<link href="../css/demo.css" rel="stylesheet"> +<script src="../../../../../tinymce.dev.js"></script> +<script src="../../../config/bolt/bootstrap-demo.js"></script> +<script> +ephox.bolt.module.api.main('tinymce/inlite/Demo'); +</script> +</head> + +<body> +<h2>inlite-theme Demo Page</h2> +<div id="ephox-ui"> + <div class="tinymce" style="width: 900px; min-height: 100px"> + <p> + <img src="https://www.tinymce.com/images/glyph-tinymce@2x.png" style="width: 100px; float: right"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultricies posuere felis sed interdum. Quisque nec diam + nec purus gravida dapibus + </p> + <p> + eget non <a href="http://www.tinymce.com">nulla</a>. Ut eu vestibulum libero. Vestibulum pretium est vitae metus auctor, quis fermentum mi + luctus. Fusce aliquet tincidunt massa vitae scelerisque. Vivamus in tellus risus. Mauris auctor metus ut gravida feugiat. + Nunc consequat urna eu augue commodo, eget malesuada odio fringilla. Morbi vitae turpis in elit laoreet malesuada a nec massa. + </p> + <table> + <tbody> + <tr> + <td>Lorem ipsum dolor sit amet</td> + <td>Lorem ipsum dolor sit amet</td> + </tr> + <tr> + <td>Vivamus in tellus risus</td> + <td>Vivamus in tellus risus</td> + </tr> + </tbody> + </table> + </div> + + <div style="height: 3000px"></div> + + <div class="tinymce" style="width: 900px; min-height: 100px; margin: 20px; border: 20px solid black; padding: 20px"> + <p> + <img src="https://www.tinymce.com/images/glyph-tinymce@2x.png" style="width: 100px; float: right"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultricies posuere felis sed interdum. Quisque nec diam + nec purus gravida dapibus + </p> + <p> + eget non <a href="http://www.tinymce.com">nulla</a>. Ut eu vestibulum libero. Vestibulum pretium est vitae metus auctor, quis fermentum mi + luctus. Fusce aliquet tincidunt massa vitae scelerisque. Vivamus in tellus risus. Mauris auctor metus ut gravida feugiat. + Nunc consequat urna eu augue commodo, eget malesuada odio fringilla. Morbi vitae turpis in elit laoreet malesuada a nec massa. + </p> + <table> + <tbody> + <tr> + <td>Lorem ipsum dolor sit amet</td> + <td>Lorem ipsum dolor sit amet</td> + </tr> + <tr> + <td>Vivamus in tellus risus</td> + <td>Vivamus in tellus risus</td> + </tr> + </tbody> + </table> + </div> +</div> +</body> +</html> diff --git a/plugins/tinymce/themes/inlite/src/demo/js/tinymce/inlite/Demo.js b/plugins/tinymce/themes/inlite/src/demo/js/tinymce/inlite/Demo.js new file mode 100644 index 0000000..6140a3d --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/demo/js/tinymce/inlite/Demo.js @@ -0,0 +1,28 @@ +/** + * Demo.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/*eslint no-console:0 */ + +define('tinymce/inlite/Demo', [ + 'tinymce/inlite/Theme', + 'global!tinymce' +], function(Theme, tinymce) { + tinymce.init({ + selector: 'div.tinymce', + theme: 'inlite', + plugins: 'image table link paste contextmenu textpattern autolink', + insert_toolbar: 'quickimage quicktable', + selection_toolbar: 'bold italic | quicklink h2 h3 blockquote', + inline: true, + paste_data_images: true + }); + + return function() {}; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/Theme.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/Theme.js new file mode 100644 index 0000000..28ded12 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/Theme.js @@ -0,0 +1,150 @@ +/** + * Theme.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/Theme', [ + 'global!tinymce.ThemeManager', + 'global!tinymce.util.Delay', + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/ui/Buttons', + 'tinymce/inlite/core/SkinLoader', + 'tinymce/inlite/core/SelectionMatcher', + 'tinymce/inlite/core/ElementMatcher', + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/alien/Arr', + 'tinymce/inlite/core/PredicateId' +], function(ThemeManager, Delay, Panel, Buttons, SkinLoader, SelectionMatcher, ElementMatcher, Matcher, Arr, PredicateId) { + var getSelectionElements = function (editor) { + var node = editor.selection.getNode(); + var elms = editor.dom.getParents(node); + return elms; + }; + + var createToolbar = function (editor, selector, id, items) { + var selectorPredicate = function (elm) { + return editor.dom.is(elm, selector); + }; + + return { + predicate: selectorPredicate, + id: id, + items: items + }; + }; + + var getToolbars = function (editor) { + var contextToolbars = editor.contextToolbars; + + return Arr.flatten([ + contextToolbars ? contextToolbars : [], + createToolbar(editor, 'img', 'image', 'alignleft aligncenter alignright') + ]); + }; + + var findMatchResult = function (editor, toolbars) { + var result, elements, contextToolbarsPredicateIds; + + elements = getSelectionElements(editor); + contextToolbarsPredicateIds = PredicateId.fromContextToolbars(toolbars); + + result = Matcher.match(editor, [ + ElementMatcher.element(elements[0], contextToolbarsPredicateIds), + SelectionMatcher.textSelection('text'), + SelectionMatcher.emptyTextBlock(elements, 'insert'), + ElementMatcher.parent(elements, contextToolbarsPredicateIds) + ]); + + return result && result.rect ? result : null; + }; + + var togglePanel = function (editor, panel) { + var toggle = function () { + var toolbars = getToolbars(editor); + var result = findMatchResult(editor, toolbars); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } else { + panel.hide(); + } + }; + + return function () { + if (!editor.removed) { + toggle(); + } + }; + }; + + var ignoreWhenFormIsVisible = function (panel, f) { + return function () { + if (!panel.inForm()) { + f(); + } + }; + }; + + var bindContextualToolbarsEvents = function (editor, panel) { + var throttledTogglePanel = Delay.throttle(togglePanel(editor, panel), 0); + var throttledTogglePanelWhenNotInForm = Delay.throttle(ignoreWhenFormIsVisible(panel, togglePanel(editor, panel)), 0); + + editor.on('blur hide ObjectResizeStart', panel.hide); + editor.on('click', throttledTogglePanel); + editor.on('nodeChange mouseup', throttledTogglePanelWhenNotInForm); + editor.on('ResizeEditor ResizeWindow keyup', throttledTogglePanel); + editor.on('remove', panel.remove); + + editor.shortcuts.add('Alt+F10', '', panel.focus); + }; + + var overrideLinkShortcut = function (editor, panel) { + editor.shortcuts.remove('meta+k'); + editor.shortcuts.add('meta+k', '', function () { + var toolbars = getToolbars(editor); + var result = result = Matcher.match(editor, [ + SelectionMatcher.textSelection('quicklink') + ]); + + if (result) { + panel.show(editor, result.id, result.rect, toolbars); + } + }); + }; + + var renderInlineUI = function (editor, panel) { + var skinName = editor.settings.skin || 'lightgray'; + + SkinLoader.load(editor, skinName, function () { + bindContextualToolbarsEvents(editor, panel); + overrideLinkShortcut(editor, panel); + }); + + return {}; + }; + + var fail = function (message) { + throw new Error(message); + }; + + ThemeManager.add('inlite', function (editor) { + var panel = new Panel(); + + Buttons.addToEditor(editor, panel); + + var renderUI = function () { + return editor.inline ? renderInlineUI(editor, panel) : fail('inlite theme only supports inline mode.'); + }; + + return { + renderUI: renderUI + }; + }); + + return function() {}; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Arr.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Arr.js new file mode 100644 index 0000000..3e88845 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Arr.js @@ -0,0 +1,22 @@ +/** + * Arr.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Arr', [ +], function () { + var flatten = function (arr) { + return arr.reduce(function (results, item) { + return Array.isArray(item) ? results.concat(flatten(item)) : results.concat(item); + }, []); + }; + + return { + flatten: flatten + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Bookmark.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Bookmark.js new file mode 100644 index 0000000..7446f36 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Bookmark.js @@ -0,0 +1,130 @@ +/** + * Bookmark.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/alien/Bookmark', [ +], function () { + /** + * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with + * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans + * added to them since they can be restored after a dom operation. + * + * So this: <p><b>|</b><b>|</b></p> + * becomes: <p><b><span data-mce-type="bookmark">|</span></b><b data-mce-type="bookmark">|</span></b></p> + * + * @param {DOMRange} rng DOM Range to get bookmark on. + * @return {Object} Bookmark object. + */ + var create = function (dom, rng) { + var bookmark = {}; + + function setupEndPoint(start) { + var offsetNode, container, offset; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + offsetNode = dom.create('span', {'data-mce-type': 'bookmark'}); + + if (container.hasChildNodes()) { + offset = Math.min(offset, container.childNodes.length - 1); + + if (start) { + container.insertBefore(offsetNode, container.childNodes[offset]); + } else { + dom.insertAfter(offsetNode, container.childNodes[offset]); + } + } else { + container.appendChild(offsetNode); + } + + container = offsetNode; + offset = 0; + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + setupEndPoint(true); + + if (!rng.collapsed) { + setupEndPoint(); + } + + return bookmark; + }; + + /** + * Moves the selection to the current bookmark and removes any selection container wrappers. + * + * @param {Object} bookmark Bookmark object to move selection to. + */ + var resolve = function (dom, bookmark) { + function restoreEndPoint(start) { + var container, offset, node; + + function nodeIndex(container) { + var node = container.parentNode.firstChild, idx = 0; + + while (node) { + if (node == container) { + return idx; + } + + // Skip data-mce-type=bookmark nodes + if (node.nodeType != 1 || node.getAttribute('data-mce-type') != 'bookmark') { + idx++; + } + + node = node.nextSibling; + } + + return -1; + } + + container = node = bookmark[start ? 'startContainer' : 'endContainer']; + offset = bookmark[start ? 'startOffset' : 'endOffset']; + + if (!container) { + return; + } + + if (container.nodeType == 1) { + offset = nodeIndex(container); + container = container.parentNode; + dom.remove(node); + } + + bookmark[start ? 'startContainer' : 'endContainer'] = container; + bookmark[start ? 'startOffset' : 'endOffset'] = offset; + } + + restoreEndPoint(true); + restoreEndPoint(); + + var rng = dom.createRng(); + + rng.setStart(bookmark.startContainer, bookmark.startOffset); + + if (bookmark.endContainer) { + rng.setEnd(bookmark.endContainer, bookmark.endOffset); + } + + return rng; + }; + + return { + create: create, + resolve: resolve + }; +}); + + diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Unlink.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Unlink.js new file mode 100644 index 0000000..aa595a1 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Unlink.js @@ -0,0 +1,84 @@ +/** + * Unlink.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Unlink implementation that doesn't leave partial links for example it would produce: + * a[b<a href="x">c]d</a>e -> a[bc]de + * instead of: + * a[b<a href="x">c]d</a>e -> a[bc]<a href="x">d</a>e + */ +define("tinymce/inlite/alien/Unlink", [ + 'tinymce/inlite/alien/Bookmark', + 'global!tinymce.util.Tools', + 'global!tinymce.dom.TreeWalker', + 'global!tinymce.dom.RangeUtils' +], function (Bookmark, Tools, TreeWalker, RangeUtils) { + var getSelectedElements = function (rootElm, startNode, endNode) { + var walker, node, elms = []; + + walker = new TreeWalker(startNode, rootElm); + for (node = startNode; node; node = walker.next()) { + if (node.nodeType === 1) { + elms.push(node); + } + + if (node === endNode) { + break; + } + } + + return elms; + }; + + var unwrapElements = function (editor, elms) { + var bookmark, dom, selection; + + dom = editor.dom; + selection = editor.selection; + bookmark = Bookmark.create(dom, selection.getRng()); + + Tools.each(elms, function (elm) { + editor.dom.remove(elm, true); + }); + + selection.setRng(Bookmark.resolve(dom, bookmark)); + }; + + var isLink = function (elm) { + return elm.nodeName === 'A' && elm.hasAttribute('href'); + }; + + var getParentAnchorOrSelf = function (dom, elm) { + var anchorElm = dom.getParent(elm, isLink); + return anchorElm ? anchorElm : elm; + }; + + var getSelectedAnchors = function (editor) { + var startElm, endElm, rootElm, anchorElms, selection, dom, rng; + + selection = editor.selection; + dom = editor.dom; + rng = selection.getRng(); + startElm = getParentAnchorOrSelf(dom, RangeUtils.getNode(rng.startContainer, rng.startOffset)); + endElm = RangeUtils.getNode(rng.endContainer, rng.endOffset); + rootElm = editor.getBody(); + anchorElms = Tools.grep(getSelectedElements(rootElm, startElm, endElm), isLink); + + return anchorElms; + }; + + var unlinkSelection = function (editor) { + unwrapElements(editor, getSelectedAnchors(editor)); + }; + + return { + unlinkSelection: unlinkSelection + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Uuid.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Uuid.js new file mode 100644 index 0000000..a863c2e --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/alien/Uuid.js @@ -0,0 +1,34 @@ +/** + * Uuid.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +/** + * Generates unique ids this is the same as in core but since + * it's not exposed as a global we can't access it. + */ +define("tinymce/inlite/alien/Uuid", [ +], function() { + var count = 0; + + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 0xFFFFFFFF).toString(36); + }; + + return 's' + Date.now().toString(36) + rnd() + rnd() + rnd(); + }; + + var uuid = function (prefix) { + return prefix + (count++) + seed(); + }; + + return { + uuid: uuid + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Actions.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Actions.js new file mode 100644 index 0000000..9a95e2d --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Actions.js @@ -0,0 +1,106 @@ +/** + * Actions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Actions', [ + 'tinymce/inlite/alien/Uuid', + 'tinymce/inlite/alien/Unlink' +], function (Uuid, Unlink) { + var createTableHtml = function (cols, rows) { + var x, y, html; + + html = '<table data-mce-id="mce" style="width: 100%">'; + html += '<tbody>'; + + for (y = 0; y < rows; y++) { + html += '<tr>'; + + for (x = 0; x < cols; x++) { + html += '<td><br></td>'; + } + + html += '</tr>'; + } + + html += '</tbody>'; + html += '</table>'; + + return html; + }; + + var getInsertedElement = function (editor) { + var elms = editor.dom.select('*[data-mce-id]'); + return elms[0]; + }; + + var insertTable = function (editor, cols, rows) { + editor.undoManager.transact(function () { + var tableElm, cellElm; + + editor.insertContent(createTableHtml(cols, rows)); + + tableElm = getInsertedElement(editor); + tableElm.removeAttribute('data-mce-id'); + cellElm = editor.dom.select('td,th', tableElm); + editor.selection.setCursorLocation(cellElm[0], 0); + }); + }; + + var formatBlock = function (editor, formatName) { + editor.execCommand('FormatBlock', false, formatName); + }; + + var insertBlob = function (editor, base64, blob) { + var blobCache, blobInfo; + + blobCache = editor.editorUpload.blobCache; + blobInfo = blobCache.create(Uuid.uuid('mceu'), blob, base64); + blobCache.add(blobInfo); + + editor.insertContent(editor.dom.createHTML('img', {src: blobInfo.blobUri()})); + }; + + var collapseSelectionToEnd = function (editor) { + editor.selection.collapse(false); + }; + + var unlink = function (editor) { + editor.focus(); + Unlink.unlinkSelection(editor); + collapseSelectionToEnd(editor); + }; + + var changeHref = function (editor, elm, url) { + editor.focus(); + editor.dom.setAttrib(elm, 'href', url); + collapseSelectionToEnd(editor); + }; + + var insertLink = function (editor, url) { + editor.execCommand('mceInsertLink', false, {href: url}); + collapseSelectionToEnd(editor); + }; + + var updateOrInsertLink = function (editor, url) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + elm ? changeHref(editor, elm, url) : insertLink(editor, url); + }; + + var createLink = function (editor, url) { + url.trim().length === 0 ? unlink(editor) : updateOrInsertLink(editor, url); + }; + + return { + insertTable: insertTable, + formatBlock: formatBlock, + insertBlob: insertBlob, + createLink: createLink, + unlink: unlink + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Convert.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Convert.js new file mode 100644 index 0000000..01c6c2e --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Convert.js @@ -0,0 +1,37 @@ +/** + * Convert.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Convert', [ +], function () { + var fromClientRect = function (clientRect) { + return { + x: clientRect.left, + y: clientRect.top, + w: clientRect.width, + h: clientRect.height + }; + }; + + var toClientRect = function (geomRect) { + return { + left: geomRect.x, + top: geomRect.y, + width: geomRect.w, + height: geomRect.h, + right: geomRect.x + geomRect.w, + bottom: geomRect.y + geomRect.h + }; + }; + + return { + fromClientRect: fromClientRect, + toClientRect: toClientRect + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/ElementMatcher.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/ElementMatcher.js new file mode 100644 index 0000000..4a39bda --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/ElementMatcher.js @@ -0,0 +1,47 @@ +/** + * ElementMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/ElementMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // element :: Element, [PredicateId] -> (Editor -> Matcher.result | Null) + var element = function (element, predicateIds) { + return function (editor) { + for (var i = 0; i < predicateIds.length; i++) { + if (predicateIds[i].predicate(element)) { + return Matcher.result(predicateIds[i].id, Measure.getElementRect(editor, element)); + } + } + + return null; + }; + }; + + // parent :: [Elements], [PredicateId] -> (Editor -> Matcher.result | Null) + var parent = function (elements, predicateIds) { + return function (editor) { + for (var i = 0; i < elements.length; i++) { + for (var x = 0; x < predicateIds.length; x++) { + if (predicateIds[x].predicate(elements[i])) { + return Matcher.result(predicateIds[x].id, Measure.getElementRect(editor, elements[i])); + } + } + } + + return null; + }; + }; + + return { + element: element, + parent: parent + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Layout.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Layout.js new file mode 100644 index 0000000..7967f16 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Layout.js @@ -0,0 +1,95 @@ +/** + * Layout.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Layout', [ + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (Rect, Convert) { + var result = function (rect, position) { + return { + rect: rect, + position: position + }; + }; + + var moveTo = function (rect, toRect) { + return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h}; + }; + + var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) { + var relPos, relRect, outputPanelRect; + + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1); + targetRect = Rect.clamp(targetRect, contentAreaRect); + + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + targetRect = Rect.intersect(contentAreaRect, targetRect); + if (targetRect) { + relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2); + if (relPos) { + relRect = Rect.relativePosition(panelRect, targetRect, relPos); + outputPanelRect = moveTo(panelRect, relRect); + return result(outputPanelRect, relPos); + } + + outputPanelRect = moveTo(panelRect, targetRect); + return result(outputPanelRect, relPos); + } + + return null; + }; + + var calcInsert = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['cr-cl', 'cl-cr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var calc = function (targetRect, contentAreaRect, panelRect) { + return calcByPositions( + ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'], + ['bc-tc', 'bl-tl', 'br-tr'], + targetRect, + contentAreaRect, + panelRect + ); + }; + + var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) { + var userConstrainedPanelRect; + + if (typeof handler === 'function') { + userConstrainedPanelRect = handler({ + elementRect: Convert.toClientRect(targetRect), + contentAreaRect: Convert.toClientRect(contentAreaRect), + panelRect: Convert.toClientRect(panelRect) + }); + + return Convert.fromClientRect(userConstrainedPanelRect); + } + + return panelRect; + }; + + return { + calcInsert: calcInsert, + calc: calc, + userConstrain: userConstrain + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Matcher.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Matcher.js new file mode 100644 index 0000000..8183323 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Matcher.js @@ -0,0 +1,39 @@ +/** + * Matcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Matcher', [ +], function () { + // result :: String, Rect -> Matcher.result + var result = function (id, rect) { + return { + id: id, + rect: rect + }; + }; + + // match :: Editor, [(Editor -> Matcher.result | Null)] -> Matcher.result | Null + var match = function (editor, matchers) { + for (var i = 0; i < matchers.length; i++) { + var f = matchers[i]; + var result = f(editor); + + if (result) { + return result; + } + } + + return null; + }; + + return { + match: match, + result: result + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Measure.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Measure.js new file mode 100644 index 0000000..76c9d4f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/Measure.js @@ -0,0 +1,61 @@ +/** + * Measure.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/Measure', [ + 'global!tinymce.DOM', + 'global!tinymce.geom.Rect', + 'tinymce/inlite/core/Convert' +], function (DOM, Rect, Convert) { + var toAbsolute = function (rect) { + var vp = DOM.getViewPort(); + + return { + x: rect.x + vp.x, + y: rect.y + vp.y, + w: rect.w, + h: rect.h + }; + }; + + var measureElement = function (elm) { + var clientRect = elm.getBoundingClientRect(); + + return toAbsolute({ + x: clientRect.left, + y: clientRect.top, + w: Math.max(elm.clientWidth, elm.offsetWidth), + h: Math.max(elm.clientHeight, elm.offsetHeight) + }); + }; + + var getElementRect = function (editor, elm) { + return measureElement(elm); + }; + + var getPageAreaRect = function (editor) { + return measureElement(editor.getElement().ownerDocument.body); + }; + + var getContentAreaRect = function (editor) { + return measureElement(editor.getContentAreaContainer() || editor.getBody()); + }; + + var getSelectionRect = function (editor) { + var clientRect = editor.selection.getBoundingClientRect(); + return clientRect ? toAbsolute(Convert.fromClientRect(clientRect)) : null; + }; + + return { + getElementRect: getElementRect, + getPageAreaRect: getPageAreaRect, + getContentAreaRect: getContentAreaRect, + getSelectionRect: getSelectionRect + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/PredicateId.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/PredicateId.js new file mode 100644 index 0000000..6524edd --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/PredicateId.js @@ -0,0 +1,32 @@ +/** + * PredicateId.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/PredicateId', [ + 'global!tinymce.util.Tools' +], function (Tools) { + var create = function (id, predicate) { + return { + id: id, + predicate: predicate + }; + }; + + // fromContextToolbars :: [ContextToolbar] -> [PredicateId] + var fromContextToolbars = function (toolbars) { + return Tools.map(toolbars, function (toolbar) { + return create(toolbar.id, toolbar.predicate); + }); + }; + + return { + create: create, + fromContextToolbars: fromContextToolbars + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SelectionMatcher.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SelectionMatcher.js new file mode 100644 index 0000000..94aeb47 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SelectionMatcher.js @@ -0,0 +1,55 @@ +/** + * SelectionMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SelectionMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // textSelection :: String -> (Editor -> Matcher.result | Null) + var textSelection = function (id) { + return function (editor) { + if (!editor.selection.isCollapsed()) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + }; + }; + + // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) + var emptyTextBlock = function (elements, id) { + return function (editor) { + var i, textBlockElementsMap = editor.schema.getTextBlockElements(); + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName === 'TABLE') { + return null; + } + } + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName in textBlockElementsMap) { + if (editor.dom.isEmpty(elements[i])) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + } + } + + return null; + }; + }; + + return { + textSelection: textSelection, + emptyTextBlock: emptyTextBlock + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SkinLoader.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SkinLoader.js new file mode 100644 index 0000000..fb97920 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/SkinLoader.js @@ -0,0 +1,45 @@ +/** + * SkinLoader.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SkinLoader', [ + 'global!tinymce.EditorManager', + 'global!tinymce.DOM' +], function (EditorManager, DOM) { + var fireSkinLoaded = function (editor, callback) { + var done = function () { + editor.fire('SkinLoaded'); + callback(); + }; + + if (editor.initialized) { + done(); + } else { + editor.on('init', done); + } + }; + + var load = function (editor, skin, callback) { + var baseUrl = EditorManager.baseURL; + var skinUrl = baseUrl + '/skins/' + skin; + + var done = function () { + fireSkinLoaded(editor, callback); + }; + + DOM.styleSheetLoader.load(skinUrl + '/skin.min.css', done); + editor.contentCSS.push(skinUrl + '/content.inline.min.css'); + }; + + return { + load: load + }; +}); + + diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/UrlType.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/UrlType.js new file mode 100644 index 0000000..c37fa2f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/core/UrlType.js @@ -0,0 +1,27 @@ +/** + * UrlType.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/UrlType', [ +], function () { + var isDomainLike = function (href) { + return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(href.trim()); + }; + + var isAbsolute = function (href) { + return /^https?:\/\//.test(href.trim()); + }; + + return { + isDomainLike: isDomainLike, + isAbsolute: isAbsolute + }; +}); + + diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Conversions.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Conversions.js new file mode 100644 index 0000000..8c1aeb0 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Conversions.js @@ -0,0 +1,31 @@ +/** + * Conversions.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Conversions', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var blobToBase64 = function (blob) { + return new Promise(function(resolve) { + var reader = new FileReader(); + + reader.onloadend = function() { + resolve(reader.result.split(',')[1]); + }; + + reader.readAsDataURL(blob); + }); + }; + + return { + blobToBase64: blobToBase64 + }; +}); + + diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Picker.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Picker.js new file mode 100644 index 0000000..0b937ea --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/file/Picker.js @@ -0,0 +1,40 @@ +/** + * Picker.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/file/Picker', [ + 'global!tinymce.util.Promise' +], function (Promise) { + var pickFile = function () { + return new Promise(function (resolve) { + var fileInput; + + fileInput = document.createElement("input"); + fileInput.type = "file"; + fileInput.style.position = 'fixed'; + fileInput.style.left = 0; + fileInput.style.top = 0; + fileInput.style.opacity = 0.001; + document.body.appendChild(fileInput); + + fileInput.onchange = function(e) { + resolve(Array.prototype.slice.call(e.target.files)); + }; + + fileInput.click(); + fileInput.parentNode.removeChild(fileInput); + }); + }; + + return { + pickFile: pickFile + }; +}); + + diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Buttons.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Buttons.js new file mode 100644 index 0000000..8fac642 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Buttons.js @@ -0,0 +1,80 @@ +/** + * Buttons.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Buttons', [ + 'tinymce/inlite/ui/Panel', + 'tinymce/inlite/file/Conversions', + 'tinymce/inlite/file/Picker', + 'tinymce/inlite/core/Actions' +], function (Panel, Conversions, Picker, Actions) { + var addHeaderButtons = function (editor) { + var formatBlock = function (name) { + return function () { + Actions.formatBlock(editor, name); + }; + }; + + for (var i = 1; i < 6; i++) { + var name = 'h' + i; + + editor.addButton(name, { + text: name.toUpperCase(), + tooltip: 'Heading ' + i, + stateSelector: name, + onclick: formatBlock(name), + onPostRender: function () { + // TODO: Remove this hack that produces bold H1-H6 when we have proper icons + var span = this.getEl().firstChild.firstChild; + span.style.fontWeight = 'bold'; + } + }); + } + }; + + var addToEditor = function (editor, panel) { + editor.addButton('quicklink', { + icon: 'link', + tooltip: 'Insert/Edit link', + stateSelector: 'a[href]', + onclick: function () { + panel.showForm(editor, 'quicklink'); + } + }); + + editor.addButton('quickimage', { + icon: 'image', + tooltip: 'Insert image', + onclick: function () { + Picker.pickFile().then(function (files) { + var blob = files[0]; + + Conversions.blobToBase64(blob).then(function (base64) { + Actions.insertBlob(editor, base64, blob); + }); + }); + } + }); + + editor.addButton('quicktable', { + icon: 'table', + tooltip: 'Insert table', + onclick: function () { + panel.hide(); + Actions.insertTable(editor, 2, 2); + } + }); + + addHeaderButtons(editor); + }; + + return { + addToEditor: addToEditor + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Forms.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Forms.js new file mode 100644 index 0000000..b8cb3a4 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Forms.js @@ -0,0 +1,102 @@ +/** + * Forms.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Forms', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.util.Promise', + 'tinymce/inlite/core/Actions', + 'tinymce/inlite/core/UrlType' +], function (Tools, Factory, Promise, Actions, UrlType) { + var focusFirstTextBox = function (form) { + form.find('textbox').eq(0).each(function (ctrl) { + ctrl.focus(); + }); + }; + + var createForm = function (name, spec) { + var form = Factory.create( + Tools.extend({ + type: 'form', + layout: 'flex', + direction: 'row', + padding: 5, + name: name, + spacing: 3 + }, spec) + ); + + form.on('show', function () { + focusFirstTextBox(form); + }); + + return form; + }; + + var toggleVisibility = function (ctrl, state) { + return state ? ctrl.show() : ctrl.hide(); + }; + + var askAboutPrefix = function (editor, href) { + return new Promise(function (resolve) { + editor.windowManager.confirm( + 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', + function (result) { + var output = result === true ? 'http://' + href : href; + resolve(output); + } + ); + }); + }; + + var convertLinkToAbsolute = function (editor, href) { + return !UrlType.isAbsolute(href) && UrlType.isDomainLike(href) ? askAboutPrefix(editor, href) : Promise.resolve(href); + }; + + var createQuickLinkForm = function (editor, hide) { + var unlink = function () { + editor.focus(); + Actions.unlink(editor); + hide(); + }; + + return createForm('quicklink', { + items: [ + {type: 'button', name: 'unlink', icon: 'unlink', onclick: unlink, tooltip: 'Remove link'}, + {type: 'textbox', name: 'linkurl', placeholder: 'Paste or type a link'}, + {type: 'button', icon: 'checkmark', subtype: 'primary', tooltip: 'Ok', onclick: 'submit'} + ], + onshow: function () { + var elm, linkurl = ''; + + elm = editor.dom.getParent(editor.selection.getStart(), 'a[href]'); + if (elm) { + linkurl = editor.dom.getAttrib(elm, 'href'); + } + + this.fromJSON({ + linkurl: linkurl + }); + + toggleVisibility(this.find('#unlink'), elm); + }, + onsubmit: function (e) { + convertLinkToAbsolute(editor, e.data.linkurl).then(function (url) { + Actions.createLink(editor, url); + hide(); + }); + } + }); + }; + + return { + createQuickLinkForm: createQuickLinkForm + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Panel.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Panel.js new file mode 100644 index 0000000..5eb074e --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Panel.js @@ -0,0 +1,218 @@ +/** + * Panel.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Panel', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory', + 'global!tinymce.DOM', + 'tinymce/inlite/ui/Toolbar', + 'tinymce/inlite/ui/Forms', + 'tinymce/inlite/core/Measure', + 'tinymce/inlite/core/Layout' +], function (Tools, Factory, DOM, Toolbar, Forms, Measure, Layout) { + return function () { + var DEFAULT_TEXT_SELECTION_ITEMS = 'bold italic | quicklink h2 h3 blockquote'; + var DEFAULT_INSERT_TOOLBAR_ITEMS = 'quickimage quicktable'; + var panel, currentRect; + + var createToolbars = function (editor, toolbars) { + return Tools.map(toolbars, function (toolbar) { + return Toolbar.create(editor, toolbar.id, toolbar.items); + }); + }; + + var getTextSelectionToolbarItems = function (settings) { + var value = settings.selection_toolbar; + return value ? value : DEFAULT_TEXT_SELECTION_ITEMS; + }; + + var getInsertToolbarItems = function (settings) { + var value = settings.insert_toolbar; + return value ? value : DEFAULT_INSERT_TOOLBAR_ITEMS; + }; + + var create = function (editor, toolbars) { + var items, settings = editor.settings; + + items = createToolbars(editor, toolbars); + items = items.concat([ + Toolbar.create(editor, 'text', getTextSelectionToolbarItems(settings)), + Toolbar.create(editor, 'insert', getInsertToolbarItems(settings)), + Forms.createQuickLinkForm(editor, hide) + ]); + + return Factory.create({ + type: 'floatpanel', + role: 'dialog', + classes: 'tinymce tinymce-inline arrow', + ariaLabel: 'Inline toolbar', + layout: 'flex', + direction: 'column', + align: 'stretch', + autohide: false, + autofix: true, + fixed: true, + border: 1, + items: items, + oncancel: function() { + editor.focus(); + } + }); + }; + + var showPanel = function (panel) { + if (panel) { + panel.show(); + } + }; + + var movePanelTo = function (panel, pos) { + panel.moveTo(pos.x, pos.y); + }; + + var togglePositionClass = function (panel, relPos) { + relPos = relPos ? relPos.substr(0, 2) : ''; + + Tools.each({ + t: 'down', + b: 'up', + c: 'center' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(0, 1)); + }); + + if (relPos === 'cr') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', false); + } else if (relPos === 'cl') { + panel.classes.toggle('arrow-left', true); + panel.classes.toggle('arrow-right', true); + } else { + Tools.each({ + l: 'left', + r: 'right' + }, function(cls, pos) { + panel.classes.toggle('arrow-' + cls, pos === relPos.substr(1, 1)); + }); + } + }; + + var showToolbar = function (panel, id) { + var toolbars = panel.items().filter('#' + id); + + if (toolbars.length > 0) { + toolbars[0].show(); + panel.reflow(); + } + }; + + var showPanelAt = function (panel, id, editor, targetRect) { + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + if (id === 'insert') { + result = Layout.calcInsert(targetRect, contentAreaRect, panelRect); + } else { + result = Layout.calc(targetRect, contentAreaRect, panelRect); + } + + if (result) { + panelRect = result.rect; + currentRect = targetRect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, targetRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } else { + hide(panel); + } + }; + + var hasFormVisible = function () { + return panel.items().filter('form:visible').length > 0; + }; + + var showForm = function (editor, id) { + if (panel) { + panel.items().hide(); + showToolbar(panel, id); + + var contentAreaRect, panelRect, result, userConstainHandler; + + showPanel(panel); + panel.items().hide(); + showToolbar(panel, id); + + userConstainHandler = editor.settings.inline_toolbar_position_handler; + contentAreaRect = Measure.getContentAreaRect(editor); + panelRect = DOM.getRect(panel.getEl()); + + result = Layout.calc(currentRect, contentAreaRect, panelRect); + + if (result) { + panelRect = result.rect; + movePanelTo(panel, Layout.userConstrain(userConstainHandler, currentRect, contentAreaRect, panelRect)); + + togglePositionClass(panel, result.position); + } + } + }; + + var show = function (editor, id, targetRect, toolbars) { + if (!panel) { + panel = create(editor, toolbars); + panel.renderTo(document.body).reflow().moveTo(targetRect.x, targetRect.y); + editor.nodeChanged(); + } + + showPanelAt(panel, id, editor, targetRect); + }; + + var hide = function () { + if (panel) { + panel.hide(); + } + }; + + var focus = function () { + if (panel) { + panel.find('toolbar:visible').eq(0).each(function (item) { + item.focus(true); + }); + } + }; + + var remove = function () { + if (panel) { + panel.remove(); + panel = null; + } + }; + + var inForm = function () { + return panel && panel.visible() && hasFormVisible(); + }; + + return { + show: show, + showForm: showForm, + inForm: inForm, + hide: hide, + focus: focus, + remove: remove + }; + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Toolbar.js b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Toolbar.js new file mode 100644 index 0000000..a6b2c7f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/main/js/tinymce/inlite/ui/Toolbar.js @@ -0,0 +1,126 @@ +/** + * Toolbar.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/ui/Toolbar', [ + 'global!tinymce.util.Tools', + 'global!tinymce.ui.Factory' +], function (Tools, Factory) { + var setActiveItem = function (item, name) { + return function(state, args) { + var nodeName, i = args.parents.length; + + while (i--) { + nodeName = args.parents[i].nodeName; + if (nodeName == 'OL' || nodeName == 'UL') { + break; + } + } + + item.active(state && nodeName == name); + }; + }; + + var getSelectorStateResult = function (itemName, item) { + var result = function (selector, handler) { + return { + selector: selector, + handler: handler + }; + }; + + var activeHandler = function(state) { + item.active(state); + }; + + var disabledHandler = function (state) { + item.disabled(state); + }; + + if (itemName == 'bullist') { + return result('ul > li', setActiveItem(item, 'UL')); + } + + if (itemName == 'numlist') { + return result('ol > li', setActiveItem(item, 'OL')); + } + + if (item.settings.stateSelector) { + return result(item.settings.stateSelector, activeHandler); + } + + if (item.settings.disabledStateSelector) { + return result(item.settings.disabledStateSelector, disabledHandler); + } + + return null; + }; + + var bindSelectorChanged = function (editor, itemName, item) { + return function () { + var result = getSelectorStateResult(itemName, item); + if (result !== null) { + editor.selection.selectorChanged(result.selector, result.handler); + } + }; + }; + + var create = function (editor, name, items) { + var toolbarItems = [], buttonGroup; + + if (!items) { + return; + } + + Tools.each(items.split(/[ ,]/), function(item) { + var itemName; + + if (item == '|') { + buttonGroup = null; + } else { + if (Factory.has(item)) { + item = {type: item}; + toolbarItems.push(item); + buttonGroup = null; + } else { + if (!buttonGroup) { + buttonGroup = {type: 'buttongroup', items: []}; + toolbarItems.push(buttonGroup); + } + + if (editor.buttons[item]) { + itemName = item; + item = editor.buttons[itemName]; + + if (typeof item == 'function') { + item = item(); + } + + item.type = item.type || 'button'; + + item = Factory.create(item); + item.on('postRender', bindSelectorChanged(editor, itemName, item)); + buttonGroup.items.push(item); + } + } + } + }); + + return Factory.create({ + type: 'toolbar', + layout: 'flow', + name: name, + items: toolbarItems + }); + }; + + return { + create: create + }; +}); diff --git a/plugins/tinymce/themes/inlite/src/test/.eslintrc b/plugins/tinymce/themes/inlite/src/test/.eslintrc new file mode 100644 index 0000000..c0ccd9b --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/.eslintrc @@ -0,0 +1,14 @@ +{ + "env": { + "browser": true, + "amd": true + }, + + "globals": { + "assert": true, + "test": true, + "asynctest": true + }, + + "extends": "../../../../../../.eslintrc" +} diff --git a/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/ArrTest.js b/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/ArrTest.js new file mode 100644 index 0000000..eef3d61 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/ArrTest.js @@ -0,0 +1,9 @@ +test('atomic/alien/ArrTest', [ + 'tinymce/inlite/alien/Arr' +], function (Arr) { + var testFlatten = function () { + assert.eq(Arr.flatten([1, 2, [3, 4, [5, 6]], [7, 8], 9]), [1, 2, 3, 4, 5, 6, 7, 8, 9]); + }; + + testFlatten(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/UuidTest.js b/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/UuidTest.js new file mode 100644 index 0000000..93e8d72 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/atomic/alien/UuidTest.js @@ -0,0 +1,10 @@ +test('atomic/alien/UuidTest', [ + 'tinymce/inlite/alien/Uuid' +], function (Uuid) { + var testUuid = function () { + assert.eq(Uuid.uuid('mce').indexOf('mce'), 0); + assert.eq(Uuid.uuid('mce') !== Uuid.uuid('mce'), true); + }; + + testUuid(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/atomic/core/ConvertTest.js b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/ConvertTest.js new file mode 100644 index 0000000..f74e35f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/ConvertTest.js @@ -0,0 +1,12 @@ +test('atomic/core/ConvertTest', [ + 'tinymce/inlite/core/Convert' +], function (Convert) { + var testConvert = function () { + assert.eq({x: 1, y: 2, w: 3, h: 4}, Convert.fromClientRect({left: 1, top: 2, width: 3, height: 4})); + assert.eq({x: 2, y: 3, w: 4, h: 5}, Convert.fromClientRect({left: 2, top: 3, width: 4, height: 5})); + assert.eq({left: 1, top: 2, width: 3, height: 4, bottom: 2 + 4, right: 1 + 3}, Convert.toClientRect({x: 1, y: 2, w: 3, h: 4})); + assert.eq({left: 2, top: 3, width: 4, height: 5, bottom: 3 + 5, right: 2 + 4}, Convert.toClientRect({x: 2, y: 3, w: 4, h: 5})); + }; + + testConvert(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/atomic/core/MatcherTest.js b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/MatcherTest.js new file mode 100644 index 0000000..d606156 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/MatcherTest.js @@ -0,0 +1,51 @@ +test('browser/atomic/MatcherTest', [ + 'tinymce/inlite/core/Matcher' +], function (Matcher) { + var testMatch = function (mockEditor, matches, expectedResult) { + var result; + + result = Matcher.match(mockEditor, matches); + assert.eq(expectedResult, result); + }; + + var match = function (key) { + return function (editor) { + return editor[key]; + }; + }; + + var testMatcher = function () { + var mockEditor = { + success1: 'success1', + success2: 'success2', + failure: null + }; + + testMatch(mockEditor, [ + match('success1') + ], 'success1'); + + testMatch(mockEditor, [ + match(null), + match('success2') + ], 'success2'); + + testMatch(mockEditor, [ + match('success1'), + match('success2') + ], 'success1'); + + testMatch(mockEditor, [ + match(null) + ], null); + + testMatch(mockEditor, [ + match(null), + match(null) + ], null); + + testMatch(mockEditor, [], null); + }; + + testMatcher(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/atomic/core/UrlTypeTest.js b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/UrlTypeTest.js new file mode 100644 index 0000000..2d1ec52 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/atomic/core/UrlTypeTest.js @@ -0,0 +1,33 @@ +test('atomic/core/UrlTypeTest', [ + 'tinymce/inlite/core/UrlType' +], function (UrlType) { + var testIsDomainLike = function () { + var mostUsedTopLevelDomains = [ + 'com', 'org', 'edu', 'gov', 'uk', 'net', 'ca', 'de', 'jp', + 'fr', 'au', 'us', 'ru', 'ch', 'it', 'nl', 'se', 'no', 'es', 'mil' + ]; + + assert.eq(UrlType.isDomainLike('www.site.com'), true); + assert.eq(UrlType.isDomainLike('www.site.xyz'), true); + assert.eq(UrlType.isDomainLike(' www.site.xyz'), true); + assert.eq(UrlType.isDomainLike('site.xyz'), false); + + mostUsedTopLevelDomains.forEach(function (tld) { + assert.eq(UrlType.isDomainLike('site.' + tld), true); + assert.eq(UrlType.isDomainLike(' site.' + tld), true); + assert.eq(UrlType.isDomainLike('site.' + tld + ' '), true); + }); + + assert.eq(UrlType.isDomainLike('/a/b'), false); + }; + + var testIsAbsoluteUrl = function () { + assert.eq(UrlType.isAbsolute('http://www.site.com'), true); + assert.eq(UrlType.isAbsolute('https://www.site.com'), true); + assert.eq(UrlType.isAbsolute('www.site.com'), false); + assert.eq(UrlType.isAbsolute('file.gif'), false); + }; + + testIsDomainLike(); + testIsAbsoluteUrl(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/ThemeTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/ThemeTest.js new file mode 100644 index 0000000..fa53ac2 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/ThemeTest.js @@ -0,0 +1,202 @@ +asynctest('browser/core/ThemeTest', [ + 'ephox.mcagar.api.TinyLoader', + 'ephox.mcagar.api.TinyApis', + 'ephox.mcagar.api.TinyActions', + 'ephox.mcagar.api.TinyDom', + 'tinymce/inlite/Theme', + 'ephox.agar.api.Pipeline', + 'ephox.agar.api.Chain', + 'ephox.agar.api.UiFinder', + 'ephox.agar.api.Mouse', + 'ephox.agar.api.GeneralSteps', + 'ephox.agar.api.UiControls', + 'ephox.agar.api.FocusTools' +], function (TinyLoader, TinyApis, TinyActions, TinyDom, Theme, Pipeline, Chain, UiFinder, Mouse, GeneralSteps, UiControls, FocusTools) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + var dialogRoot = TinyDom.fromDom(document.body); + + var cWaitForContextToolbar = Chain.fromChainsWith(dialogRoot, [ + UiFinder.cWaitForState('label', '.mce-tinymce-inline', function (elm) { + return elm.dom().style.display === ""; + }) + ]); + + var cClickToolbarButton = function (ariaLabel) { + return Chain.fromChains([ + UiFinder.cFindIn('div[aria-label="' + ariaLabel + '"]'), + Mouse.cTrueClick + ]); + }; + + var sClickFocusedButton = Chain.asStep(TinyDom.fromDom(document), [ + FocusTools.cGetFocused, + Mouse.cTrueClick + ]); + + var sClickContextButton = function (ariaLabel) { + return Chain.asStep({}, [ + cWaitForContextToolbar, + cClickToolbarButton(ariaLabel) + ]); + }; + + var sWaitForToolbar = function () { + return Chain.asStep({}, [ + cWaitForContextToolbar + ]); + }; + + var sBoldTests = function (tinyApis) { + return GeneralSteps.sequence([ + tinyApis.sSetContent('<p>a</p>'), + tinyApis.sSetSelection([0, 0], 0, [0, 0], 1), + sClickContextButton('Bold'), + tinyApis.sAssertContent('<p><strong>a</strong></p>') + ]); + }; + + var sH2Tests = function (tinyApis) { + return GeneralSteps.sequence([ + tinyApis.sSetContent('<p>a</p>'), + tinyApis.sSetSelection([0, 0], 0, [0, 0], 1), + sClickContextButton('Heading 2'), + tinyApis.sAssertContent('<h2>a</h2>') + ]); + }; + + var sInsertLink = function (url) { + return Chain.asStep({}, [ + cWaitForContextToolbar, + cClickToolbarButton('Insert/Edit link'), + cWaitForContextToolbar, + UiFinder.cFindIn('input'), + UiControls.cSetValue(url), + cWaitForContextToolbar, + cClickToolbarButton('Ok') + ]); + }; + + var cWaitForConfirmDialog = Chain.fromChainsWith(dialogRoot, [ + UiFinder.cWaitForState('window element', '.mce-window', function () { + return true; + }) + ]); + + var cClickButton = function (btnText) { + return Chain.fromChains([ + UiFinder.cFindIn('button:contains("' + btnText + '")'), + Mouse.cTrueClick + ]); + }; + + var sClickConfirmButton = function (btnText) { + return Chain.asStep({}, [ + cWaitForConfirmDialog, + cClickButton(btnText) + ]); + }; + + var sInsertLinkConfirmPrefix = function (url, btnText) { + return GeneralSteps.sequence([ + sInsertLink(url), + sClickConfirmButton(btnText) + ]); + }; + + var sUnlink = Chain.asStep({}, [ + cWaitForContextToolbar, + cClickToolbarButton('Insert/Edit link'), + cWaitForContextToolbar, + cClickToolbarButton('Remove link') + ]); + + var sLinkTests = function (tinyApis) { + var sContentActionTest = function (inputHtml, spath, soffset, fpath, foffset, expectedHtml, sAction) { + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(spath, soffset, fpath, foffset), + sAction, + tinyApis.sAssertContent(expectedHtml) + ]); + }; + + var sLinkTest = function (inputHtml, spath, soffset, fpath, foffset, url, expectedHtml) { + return sContentActionTest(inputHtml, spath, soffset, fpath, foffset, expectedHtml, sInsertLink(url)); + }; + + var sUnlinkTest = function (inputHtml, spath, soffset, fpath, foffset, expectedHtml) { + return sContentActionTest(inputHtml, spath, soffset, fpath, foffset, expectedHtml, sUnlink); + }; + + var sLinkWithConfirmOkTest = function (inputHtml, spath, soffset, fpath, foffset, url, expectedHtml) { + return sContentActionTest(inputHtml, spath, soffset, fpath, foffset, expectedHtml, sInsertLinkConfirmPrefix(url, 'Ok')); + }; + + var sLinkWithConfirmCancelTest = function (inputHtml, spath, soffset, fpath, foffset, url, expectedHtml) { + return sContentActionTest(inputHtml, spath, soffset, fpath, foffset, expectedHtml, sInsertLinkConfirmPrefix(url, 'Cancel')); + }; + + return GeneralSteps.sequence([ + sLinkWithConfirmOkTest('<p>a</p>', [0, 0], 0, [0, 0], 1, 'www.site.com', '<p><a href="http://www.site.com">a</a></p>'), + sLinkWithConfirmCancelTest('<p>a</p>', [0, 0], 0, [0, 0], 1, 'www.site.com', '<p><a href="www.site.com">a</a></p>'), + sLinkTest('<p>a</p>', [0, 0], 0, [0, 0], 1, '#1', '<p><a href="#1">a</a></p>'), + sLinkTest('<p><a id="x" href="#1">a</a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '#2', '<p><a id="x" href="#2">a</a></p>'), + sLinkTest('<p><a href="#3">a</a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '', '<p>a</p>'), + sUnlinkTest('<p><a id="x" href="#1">a</a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '<p>a</p>') + ]); + }; + + var sInsertTableTests = function (tinyApis) { + return GeneralSteps.sequence([ + tinyApis.sSetContent('<p><br></p><p>b</p>'), + tinyApis.sSetCursor([0], 0), + sClickContextButton('Insert table'), + tinyApis.sAssertContent([ + '<table style="width: 100%;">', + '<tbody>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '</tbody>', + '</table>', + '<p>b</p>' + ].join('\n') + ) + ]); + }; + + var sAriaTests = function (tinyApis, tinyActions) { + return GeneralSteps.sequence([ + tinyApis.sSetContent('<p>a</p>'), + tinyApis.sSetSelection([0, 0], 0, [0, 0], 1), + sWaitForToolbar(), + tinyActions.sContentKeydown(121, {alt: true}), + sClickFocusedButton, + tinyApis.sAssertContent('<p><strong>a</strong></p>') + ]); + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor), tinyActions = TinyActions(editor); + + Pipeline.async({}, [ + sBoldTests(tinyApis), + sH2Tests(tinyApis), + sLinkTests(tinyApis), + sInsertTableTests(tinyApis), + sAriaTests(tinyApis, tinyActions) + ], onSuccess, onFailure); + }, { + theme: 'inlite', + plugins: 'image table link paste contextmenu textpattern', + insert_toolbar: 'quickimage media quicktable', + selection_toolbar: 'bold italic | quicklink h1 h2 blockquote', + inline: true + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/alien/BookmarkTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/alien/BookmarkTest.js new file mode 100644 index 0000000..c07413f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/alien/BookmarkTest.js @@ -0,0 +1,65 @@ +asynctest('browser/alien/BookmarkTest', [ + 'ephox/tinymce', + 'ephox.agar.api.Pipeline', + 'ephox.agar.api.Chain', + 'ephox.agar.api.Cursors', + 'ephox.agar.api.Assertions', + 'ephox.mcagar.api.TinyDom', + 'tinymce/inlite/alien/Bookmark' +], function (tinymce, Pipeline, Chain, Cursors, Assertions, TinyDom, Bookmark) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var toNativeRange = function (range) { + var domRange = document.createRange(); + domRange.setStart(range.start().dom(), range.soffset()); + domRange.setEnd(range.finish().dom(), range.foffset()); + return domRange; + }; + + var rangeToBookmark = function (dom) { + return function (range) { + return Bookmark.create(dom, range); + }; + }; + + var bookmarkToRange = function (dom) { + return function (bookmark) { + return Bookmark.resolve(dom, bookmark); + }; + }; + + var cAssertRangeEq = function (expected) { + return Chain.op(function (actual) { + Assertions.assertEq('Not equal startContainer', expected.start().dom(), actual.startContainer); + Assertions.assertEq('Not equal startOffset', expected.soffset(), actual.startOffset); + Assertions.assertEq('Not equal endContainer', expected.finish().dom(), actual.endContainer); + Assertions.assertEq('Not equal endOffset', expected.foffset(), actual.endOffset); + }); + }; + + var sTestBookmark = function (html, path) { + var dom = tinymce.DOM; + var elm = TinyDom.fromDom(dom.create('div', {}, html)); + + return Chain.asStep(elm, [ + Cursors.cFollowPath(Cursors.pathFrom(path)), + Chain.mapper(toNativeRange), + Chain.mapper(rangeToBookmark(dom)), + Chain.mapper(bookmarkToRange(dom)), + cAssertRangeEq(Cursors.calculate(elm, Cursors.pathFrom(path))) + ]); + }; + + Pipeline.async({}, [ + sTestBookmark('abc', {element: [0], offset: 0}), + sTestBookmark('abc', {element: [0], offset: 1}), + sTestBookmark('abc', {start: {element: [0], offset: 0}, finish: {element: [0], offset: 1}}), + sTestBookmark('<b>a</b>', {element: [0, 0], offset: 0}), + sTestBookmark('<b>a</b>', {element: [0, 0], offset: 0}), + sTestBookmark('<b>a</b>', {start: {element: [0, 0], offset: 0}, finish: {element: [0, 0], offset: 1}}), + sTestBookmark('<b>a</b><b>b</b>', {start: {element: [0, 0], offset: 0}, finish: {element: [1, 0], offset: 1}}) + ], function () { + success(); + }, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/alien/UnlinkTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/alien/UnlinkTest.js new file mode 100644 index 0000000..4f20eb0 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/alien/UnlinkTest.js @@ -0,0 +1,38 @@ +asynctest('browser/alien/UnlinkTest', [ + 'ephox.mcagar.api.TinyLoader', + 'ephox.mcagar.api.TinyApis', + 'tinymce/inlite/alien/Unlink', + 'ephox.agar.api.Pipeline', + 'ephox.agar.api.Step', + 'ephox.agar.api.GeneralSteps' +], function (TinyLoader, TinyApis, Unlink, Pipeline, Step, GeneralSteps) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var sUnlinkSelection = function (editor) { + return Step.sync(function () { + Unlink.unlinkSelection(editor); + }); + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor); + + var sAssertUnlink = function (inputHtml, startPath, startOffset, finishPath, finishOffset, expectedHtml) { + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(startPath, startOffset, finishPath, finishOffset), + sUnlinkSelection(editor), + tinyApis.sAssertContent(expectedHtml, 'Should match expected anchor less html') + ]); + }; + + Pipeline.async({}, [ + sAssertUnlink('<p><a href="#">a</a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '<p>a</p>'), + sAssertUnlink('<p><a href="#">a</a>b</p>', [0, 0, 0], 0, [0, 1], 1, '<p>ab</p>'), + sAssertUnlink('<p><a href="#">a</a><p><a href="#">b</a>', [0, 0, 0], 0, [0, 0, 0], 1, '<p>a</p>\n<p><a href="#">b</a></p>'), + sAssertUnlink('<p><a href="#">a</a><p><a href="#">b</a>', [0, 0, 0], 0, [1, 0, 0], 1, '<p>a</p>\n<p>b</p>') + ], onSuccess, onFailure); + }, { + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/ActionsTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/ActionsTest.js new file mode 100644 index 0000000..51e6e54 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/ActionsTest.js @@ -0,0 +1,177 @@ +asynctest('browser/core/ActionsTest', [ + 'ephox.mcagar.api.TinyLoader', + 'ephox.mcagar.api.TinyApis', + 'tinymce/inlite/core/Actions', + 'ephox.agar.api.Pipeline', + 'ephox.agar.api.Step', + 'ephox.agar.api.GeneralSteps' +], function (TinyLoader, TinyApis, Actions, Pipeline, Step, GeneralSteps) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var wrap = function (f, args) { + return function () { + var currentArgs = Array.prototype.slice.call(arguments); + return Step.sync(function () { + f.apply(null, [].concat(args).concat(currentArgs)); + }); + }; + }; + + var sInsertTableTests = function (editor, tinyApis) { + var sInsertTableTest = function (cols, rows, expectedHtml, message) { + var sInsertTable = wrap(Actions.insertTable, editor); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(''), + sInsertTable(cols, rows), + tinyApis.sAssertContent(expectedHtml, message) + ]); + }; + + return GeneralSteps.sequence([ + sInsertTableTest(2, 3, [ + '<table style="width: 100%;">', + '<tbody>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '</tbody>', + '</table>' + ].join('\n'), + 'Should be a 2x3 table' + ), + + sInsertTableTest(3, 2, [ + '<table style="width: 100%;">', + '<tbody>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '<tr>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '<td>&nbsp;</td>', + '</tr>', + '</tbody>', + '</table>' + ].join('\n'), + 'Should be a 3x2 table' + ) + ]); + }; + + var sFormatBlockTests = function (editor, tinyApis) { + var sFormatBlockTest = function (name) { + var sFormatBlock = wrap(Actions.formatBlock, editor); + + return GeneralSteps.sequence([ + tinyApis.sSetContent('<p>a</p>'), + tinyApis.sSetCursor([0], 0), + sFormatBlock(name), + tinyApis.sAssertContent('<' + name + '>a</' + name + '>', 'Should be a ' + name + ' block') + ]); + }; + + return GeneralSteps.sequence([ + sFormatBlockTest('h1'), + sFormatBlockTest('h2'), + sFormatBlockTest('pre') + ]); + }; + + var sCreateLinkTests = function (editor, tinyApis) { + var sCreateLinkTest = function (inputHtml, url, sPath, sOffset, fPath, fOffset, expectedHtml) { + var sCreateLink = wrap(Actions.createLink, editor); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(sPath, sOffset, fPath, fOffset), + sCreateLink(url), + tinyApis.sAssertContent(expectedHtml, 'Should have a link') + ]); + }; + + return GeneralSteps.sequence([ + sCreateLinkTest('<p>a</p>', '#1', [0, 0], 0, [0, 0], 1, '<p><a href="#1">a</a></p>'), + sCreateLinkTest('<p><a href="#1">a</a></p>', '#2', [0, 0], 0, [0, 0], 1, '<p><a href="#2">a</a></p>'), + sCreateLinkTest('<p><a href="#1"><em>a</em></a></p>', '#2', [0, 0, 0], 0, [0, 0, 0], 1, '<p><a href="#2"><em>a</em></a></p>') + ]); + }; + + var sUnlinkTests = function (editor, tinyApis) { + var sUnlinkTest = function (inputHtml, sPath, sOffset, fPath, fOffset, expectedHtml) { + var sUnlink = wrap(Actions.unlink, editor); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(sPath, sOffset, fPath, fOffset), + sUnlink(), + tinyApis.sAssertContent(expectedHtml, 'Should not have a link') + ]); + }; + + return GeneralSteps.sequence([ + sUnlinkTest('<p>a</p>', [0, 0], 0, [0, 0], 1, '<p>a</p>'), + sUnlinkTest('<p><a href="#">a</a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '<p>a</p>'), + sUnlinkTest('<p><a href="#"><em>a</em></a></p>', [0, 0, 0], 0, [0, 0, 0], 1, '<p><em>a</em></p>'), + sUnlinkTest('<p><a href="#">a</a>b</p>', [0, 0, 0], 0, [0, 1], 1, '<p>ab</p>') + ]); + }; + + var base64ToBlob = function (base64, type) { + var buff = atob(base64); + var bytes = new Uint8Array(buff.length); + + for (var i = 0; i < bytes.length; i++) { + bytes[i] = buff.charCodeAt(i); + } + + return new Blob([bytes], {type: type}); + }; + + var sInsertBlobTests = function (editor, tinyApis) { + var sInsertBlobTest = function (inputHtml, path, offset, blob, base64, expectedHtml) { + var sInsertBlob = wrap(Actions.insertBlob, editor); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetCursor(path, offset), + sInsertBlob(blob, base64), + tinyApis.sAssertContent(expectedHtml, 'Should have a image') + ]); + }; + + var base64 = 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; + var blob = base64ToBlob(base64, 'image/gif'); + + return GeneralSteps.sequence([ + sInsertBlobTest('<p>a</p>', [0, 0], 0, base64, blob, '<p><img src="data:image/gif;base64,' + base64 + '" />a</p>') + ]); + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor); + + Pipeline.async({}, [ + sInsertTableTests(editor, tinyApis), + sFormatBlockTests(editor, tinyApis), + sInsertBlobTests(editor, tinyApis), + sCreateLinkTests(editor, tinyApis), + sUnlinkTests(editor, tinyApis) + ], onSuccess, onFailure); + }, { + inline: true + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/ElementMatcher.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/ElementMatcher.js new file mode 100644 index 0000000..a534804 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/ElementMatcher.js @@ -0,0 +1,69 @@ +asynctest('browser/core/ElementMatcherTest', [ + 'ephox.mcagar.api.TinyLoader', + 'ephox.mcagar.api.TinyApis', + 'ephox.agar.api.Step', + 'ephox.agar.api.Assertions', + 'tinymce/inlite/core/ElementMatcher', + 'tinymce/inlite/core/PredicateId', + 'ephox.agar.api.Pipeline' +], function (TinyLoader, TinyApis, Step, Assertions, ElementMatcher, PredicateId, Pipeline) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var eq = function (target) { + return function (elm) { + return elm === target; + }; + }; + + var constantFalse = function (/*elm*/) { + return false; + }; + + var sElementTest = function (tinyApis, editor, inputHtml, selector) { + return Step.sync(function () { + var target, result; + + editor.setContent(inputHtml); + target = editor.dom.select(selector)[0]; + + result = ElementMatcher.element(target, [ + PredicateId.create('a', constantFalse), + PredicateId.create('b', eq(target)) + ])(editor); + + Assertions.assertEq(result.id, 'b', 'Should be matching B'); + Assertions.assertEq(result.rect.w > 0, true, 'Should be have width'); + }); + }; + + var sParentTest = function (tinyApis, editor, inputHtml, selector) { + return Step.sync(function () { + var target, parents, result; + + editor.setContent(inputHtml); + target = editor.dom.select(selector)[0]; + parents = editor.dom.getParents(target); + + result = ElementMatcher.parent(parents, [ + PredicateId.create('a', constantFalse), + PredicateId.create('b', eq(parents[1])), + PredicateId.create('c', eq(parents[0])) + ])(editor); + + Assertions.assertEq(result.id, 'c', 'Should be matching C the closest one'); + Assertions.assertEq(result.rect.w > 0, true, 'Should be have width'); + }); + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor); + + Pipeline.async({}, [ + sElementTest(tinyApis, editor, '<p>a</p>', 'p'), + sParentTest(tinyApis, editor, '<div><p><em>a</em></p></div>', 'em') + ], onSuccess, onFailure); + }, { + inline: true + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/LayoutTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/LayoutTest.js new file mode 100644 index 0000000..5ee5c7f --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/LayoutTest.js @@ -0,0 +1,118 @@ +test('browser/core/LayoutTest', [ + 'ephox/tinymce', + 'tinymce/inlite/core/Layout' +], function (tinymce, Layout) { + // TODO: Move this to atomic test when we can require parts of tinymce core using bolt + + var rect = function (x, y, w, h) { + return {x: x, y: y, w: w, h: h}; + }; + + var clientRect = function (x, y, w, h) { + return {left: x, top: y, width: w, height: h, bottom: y + h, right: x + w}; + }; + + var assertLayout = function (expected, rects) { + var result; + + result = Layout.calc( + rects.targetRect, + rects.contentAreaRect, + rects.panelRect + ); + + assert.eq(expected, result); + }; + + var testCalcPanelAtBottomLeft = function () { + assertLayout({ + rect: rect(0, 10, 20, 10), + position: 'bl-tl' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(0, 0, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testCalcPanelAtBottomRight = function () { + assertLayout({ + rect: rect(80, 10, 20, 10), + position: 'br-tr' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(90, 0, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testCalcPanelAtTopLeft = function () { + assertLayout({ + rect: rect(0, 10, 20, 10), + position: 'tl-bl' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(0, 20, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testCalcPanelAtTopRight = function () { + assertLayout({ + rect: rect(80, 10, 20, 10), + position: 'tr-br' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(90, 20, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testCalcPanelAtTopCenter = function () { + assertLayout({ + rect: rect(35, 10, 20, 10), + position: 'tc-bc' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(40, 20, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testCalcPanelAtBottomCenter = function () { + assertLayout({ + rect: rect(35, 10, 20, 10), + position: 'bc-tc' + }, { + contentAreaRect: rect(0, 0, 100, 100), + targetRect: rect(40, 0, 10, 10), + panelRect: rect(0, 0, 20, 10) + }); + }; + + var testUserConstrain = function () { + var targetRect, contentAreaRect, panelRect, userConstrainedPanelRect, handler; + + contentAreaRect = rect(0, 0, 100, 100); + targetRect = rect(40, 0, 10, 10); + panelRect = rect(0, 0, 20, 10); + + handler = function (rects) { + assert.eq(rects.elementRect, clientRect(40, 0, 10, 10)); + assert.eq(rects.contentAreaRect, clientRect(0, 0, 100, 100)); + assert.eq(rects.panelRect, clientRect(0, 0, 20, 10)); + return clientRect(1, 2, 3, 4); + }; + + userConstrainedPanelRect = Layout.userConstrain(handler, targetRect, contentAreaRect, panelRect); + assert.eq(userConstrainedPanelRect, rect(1, 2, 3, 4)); + }; + + testCalcPanelAtBottomLeft(); + testCalcPanelAtBottomRight(); + testCalcPanelAtTopLeft(); + testCalcPanelAtTopRight(); + testCalcPanelAtTopCenter(); + testCalcPanelAtBottomCenter(); + testUserConstrain(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/MeasureTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/MeasureTest.js new file mode 100644 index 0000000..b233870 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/MeasureTest.js @@ -0,0 +1,62 @@ +asynctest('browser/core/MeasureTest', [ + 'ephox.mcagar.api.TinyLoader', + 'tinymce/inlite/core/Measure', + 'ephox.agar.api.Pipeline', + 'ephox.mcagar.api.TinyApis', + 'ephox.agar.api.Step', + 'ephox.agar.api.Chain', + 'ephox.agar.api.UiFinder', + 'ephox.agar.api.Assertions' +], function (TinyLoader, Measure, Pipeline, TinyApis, Step, Chain, UiFinder, Assertions) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var containsXY = function (r, x, y) { + return x >= r.x && x <= r.x + r.w && y >= r.y && y <= r.y + r.h; + }; + + var contains = function (a, b) { + return containsXY(a, b.x, b.y) && containsXY(a, b.x + b.w, b.y + b.h); + }; + + var sAssertRect = function (editor, measure) { + return Step.sync(function () { + var elementRect = measure(); + var pageAreaRect = Measure.getPageAreaRect(editor); + var contentAreaRect = Measure.getContentAreaRect(editor); + + Assertions.assertEq('Rect is not in page area rect', contains(pageAreaRect, elementRect), true); + Assertions.assertEq('Rect is not in content area rect', contains(contentAreaRect, elementRect), true); + Assertions.assertEq('Rect should have width', elementRect.w > 0, true); + Assertions.assertEq('Rect should have height', elementRect.h > 0, true); + }); + }; + + var getElementRectFromSelector = function (editor, selector) { + return function () { + var elm = editor.dom.select(selector)[0]; + var rect = Measure.getElementRect(editor, elm); + return rect; + }; + }; + + var getSelectionRectFromSelector = function (editor) { + return function () { + var rect = Measure.getSelectionRect(editor); + return rect; + }; + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor); + + Pipeline.async({}, [ + tinyApis.sSetContent('<p>a</p><div style="width: 50px; height: 300px">b</div><p>c</p>'), + sAssertRect(editor, getElementRectFromSelector(editor, 'p:nth-child(1)')), + tinyApis.sSetCursor([0, 0], 0), + sAssertRect(editor, getSelectionRectFromSelector(editor)) + ], onSuccess, onFailure); + }, { + inline: true + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/PredicateIdTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/PredicateIdTest.js new file mode 100644 index 0000000..4f76b83 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/PredicateIdTest.js @@ -0,0 +1,26 @@ +test('browser/core/PredicateIdTest', [ + 'ephox/tinymce', + 'tinymce/inlite/core/PredicateId' +], function (tinymce, PredicateId) { + var testFromContextToolbars = function () { + var isTrue = function () { + return true; + }; + + var isFalse = function () { + return false; + }; + + var predIds = PredicateId.fromContextToolbars([ + {toolbar: 'a b c', predicate: isTrue, id: 'a'}, + {toolbar: 'd e', predicate: isFalse, id: 'b'} + ]); + + assert.eq([ + PredicateId.create('a', isTrue), + PredicateId.create('b', isFalse) + ], predIds); + }; + + testFromContextToolbars(); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/core/SelectionMatcherTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/core/SelectionMatcherTest.js new file mode 100644 index 0000000..6be70da --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/core/SelectionMatcherTest.js @@ -0,0 +1,76 @@ +asynctest('browser/core/SelectionMatcherTest', [ + 'ephox.mcagar.api.TinyLoader', + 'ephox.mcagar.api.TinyApis', + 'ephox.agar.api.Step', + 'ephox.agar.api.Assertions', + 'tinymce/inlite/core/SelectionMatcher', + 'tinymce/inlite/core/PredicateId', + 'ephox.agar.api.GeneralSteps', + 'ephox.agar.api.Pipeline' +], function (TinyLoader, TinyApis, Step, Assertions, SelectionMatcher, PredicateId, GeneralSteps, Pipeline) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var assertResult = function (expectedResultState, result) { + Assertions.assertEq('Should not be null', result !== null, expectedResultState); + + if (expectedResultState === true) { + Assertions.assertEq('Should be matching a', result.id, 'a'); + Assertions.assertEq('Should be have width', result.rect.w > 0, true); + } + }; + + var sTextSelectionTest = function (tinyApis, editor, inputHtml, spath, soffset, fpath, foffset, expectedResultState) { + var sAssertTextSelectionResult = Step.sync(function () { + var result = SelectionMatcher.textSelection('a')(editor); + assertResult(expectedResultState, result); + }); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(spath, soffset, fpath, foffset), + sAssertTextSelectionResult + ]); + }; + + var sTextSelectionTests = function (tinyApis, editor) { + return GeneralSteps.sequence([ + sTextSelectionTest(tinyApis, editor, '<p>a</p>', [0], 0, [0], 1, true), + sTextSelectionTest(tinyApis, editor, '<p>a</p>', [0], 0, [0], 0, false) + ]); + }; + + var sEmptyTextBlockTest = function (tinyApis, editor, inputHtml, spath, soffset, fpath, foffset, expectedResultState) { + var sAssertTextSelectionResult = Step.sync(function () { + var elements = editor.dom.getParents(editor.selection.getStart()); + var result = SelectionMatcher.emptyTextBlock(elements, 'a')(editor); + assertResult(expectedResultState, result); + }); + + return GeneralSteps.sequence([ + tinyApis.sSetContent(inputHtml), + tinyApis.sSetSelection(spath, soffset, fpath, foffset), + sAssertTextSelectionResult + ]); + }; + + var sEmptyTextBlockTests = function (tinyApis, editor) { + return GeneralSteps.sequence([ + sEmptyTextBlockTest(tinyApis, editor, '<p>a</p>', [0], 0, [0], 0, false), + sEmptyTextBlockTest(tinyApis, editor, '<p>a</p>', [0], 0, [0], 1, false), + sEmptyTextBlockTest(tinyApis, editor, '<p><br></p>', [0], 0, [0], 0, true), + sEmptyTextBlockTest(tinyApis, editor, '<p><em><br></em></p>', [0, 0], 0, [0, 0], 0, true) + ]); + }; + + TinyLoader.setup(function (editor, onSuccess, onFailure) { + var tinyApis = TinyApis(editor); + + Pipeline.async({}, [ + sTextSelectionTests(tinyApis, editor), + sEmptyTextBlockTests(tinyApis, editor) + ], onSuccess, onFailure); + }, { + inline: true + }, success, failure); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/file/ConversionsTest.js b/plugins/tinymce/themes/inlite/src/test/js/browser/file/ConversionsTest.js new file mode 100644 index 0000000..99ad1cc --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/file/ConversionsTest.js @@ -0,0 +1,41 @@ +asynctest('atomic/core/ConvertTest', [ + 'ephox/tinymce', + 'tinymce/inlite/file/Conversions', + 'ephox.agar.api.Step', + 'ephox.agar.api.Pipeline', + 'ephox.agar.api.Assertions' +], function (tinymce, Conversions, Step, Pipeline, Assertions) { + var success = arguments[arguments.length - 2]; + var failure = arguments[arguments.length - 1]; + + var base64ToBlob = function (base64, type) { + var buff = atob(base64); + var bytes = new Uint8Array(buff.length); + + for (var i = 0; i < bytes.length; i++) { + bytes[i] = buff.charCodeAt(i); + } + + return new Blob([bytes], {type: type}); + }; + + var sBlobToBase64 = function () { + return Step.async(function (next) { + var base64 = 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'; + var blob = base64ToBlob(base64, 'image/gif'); + + Conversions.blobToBase64(blob).then(function (convertedBase64) { + Assertions.assertEq('Not the correct base64', base64, convertedBase64); + next(); + }); + }); + }; + + Pipeline.async({}, [ + sBlobToBase64() + ], function () { + success(); + }, function () { + failure(); + }); +}); diff --git a/plugins/tinymce/themes/inlite/src/test/js/browser/file/SelectionMatcher.js b/plugins/tinymce/themes/inlite/src/test/js/browser/file/SelectionMatcher.js new file mode 100644 index 0000000..94aeb47 --- /dev/null +++ b/plugins/tinymce/themes/inlite/src/test/js/browser/file/SelectionMatcher.js @@ -0,0 +1,55 @@ +/** + * SelectionMatcher.js + * + * Released under LGPL License. + * Copyright (c) 1999-2016 Ephox Corp. All rights reserved + * + * License: http://www.tinymce.com/license + * Contributing: http://www.tinymce.com/contributing + */ + +define('tinymce/inlite/core/SelectionMatcher', [ + 'tinymce/inlite/core/Matcher', + 'tinymce/inlite/core/Measure' +], function (Matcher, Measure) { + // textSelection :: String -> (Editor -> Matcher.result | Null) + var textSelection = function (id) { + return function (editor) { + if (!editor.selection.isCollapsed()) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + }; + }; + + // emptyTextBlock :: [Elements], String -> (Editor -> Matcher.result | Null) + var emptyTextBlock = function (elements, id) { + return function (editor) { + var i, textBlockElementsMap = editor.schema.getTextBlockElements(); + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName === 'TABLE') { + return null; + } + } + + for (i = 0; i < elements.length; i++) { + if (elements[i].nodeName in textBlockElementsMap) { + if (editor.dom.isEmpty(elements[i])) { + return Matcher.result(id, Measure.getSelectionRect(editor)); + } + + return null; + } + } + + return null; + }; + }; + + return { + textSelection: textSelection, + emptyTextBlock: emptyTextBlock + }; +}); diff --git a/plugins/tinymce/themes/inlite/theme.min.js b/plugins/tinymce/themes/inlite/theme.min.js new file mode 100644 index 0000000..4d3f267 --- /dev/null +++ b/plugins/tinymce/themes/inlite/theme.min.js @@ -0,0 +1 @@ +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.ThemeManager),h("2",tinymce.util.Delay),h("b",tinymce.util.Tools),h("c",tinymce.ui.Factory),h("d",tinymce.DOM),g("e",["b","c"],function(a,b){var c=function(a,b){return function(c,d){for(var e,f=d.parents.length;f--&&(e=d.parents[f].nodeName,"OL"!=e&&"UL"!=e););a.active(c&&e==b)}},d=function(a,b){var d=function(a,b){return{selector:a,handler:b}},e=function(a){b.active(a)},f=function(a){b.disabled(a)};return"bullist"==a?d("ul > li",c(b,"UL")):"numlist"==a?d("ol > li",c(b,"OL")):b.settings.stateSelector?d(b.settings.stateSelector,e):b.settings.disabledStateSelector?d(b.settings.disabledStateSelector,f):null},e=function(a,b,c){return function(){var e=d(b,c);null!==e&&a.selection.selectorChanged(e.selector,e.handler)}},f=function(c,d,f){var g,h=[];if(f)return a.each(f.split(/[ ,]/),function(a){var d;"|"==a?g=null:b.has(a)?(a={type:a},h.push(a),g=null):(g||(g={type:"buttongroup",items:[]},h.push(g)),c.buttons[a]&&(d=a,a=c.buttons[d],"function"==typeof a&&(a=a()),a.type=a.type||"button",a=b.create(a),a.on("postRender",e(c,d,a)),g.items.push(a)))}),b.create({type:"toolbar",layout:"flow",name:d,items:h})};return{create:f}}),h("m",tinymce.util.Promise),g("n",[],function(){var a=0,b=function(){var a=function(){return Math.round(4294967295*Math.random()).toString(36)};return"s"+Date.now().toString(36)+a()+a()+a()},c=function(c){return c+a++ +b()};return{uuid:c}}),g("s",[],function(){var a=function(a,b){function c(c){var e,f,g;f=b[c?"startContainer":"endContainer"],g=b[c?"startOffset":"endOffset"],1==f.nodeType&&(e=a.create("span",{"data-mce-type":"bookmark"}),f.hasChildNodes()?(g=Math.min(g,f.childNodes.length-1),c?f.insertBefore(e,f.childNodes[g]):a.insertAfter(e,f.childNodes[g])):f.appendChild(e),f=e,g=0),d[c?"startContainer":"endContainer"]=f,d[c?"startOffset":"endOffset"]=g}var d={};return c(!0),b.collapsed||c(),d},b=function(a,b){function c(c){function d(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;1==b.nodeType&&"bookmark"==b.getAttribute("data-mce-type")||c++,b=b.nextSibling}return-1}var e,f,g;e=g=b[c?"startContainer":"endContainer"],f=b[c?"startOffset":"endOffset"],e&&(1==e.nodeType&&(f=d(e),e=e.parentNode,a.remove(g)),b[c?"startContainer":"endContainer"]=e,b[c?"startOffset":"endOffset"]=f)}c(!0),c();var d=a.createRng();return d.setStart(b.startContainer,b.startOffset),b.endContainer&&d.setEnd(b.endContainer,b.endOffset),d};return{create:a,resolve:b}}),h("t",tinymce.dom.TreeWalker),h("u",tinymce.dom.RangeUtils),g("o",["s","b","t","u"],function(a,b,c,d){var e=function(a,b,d){var e,f,g=[];for(e=new c(b,a),f=b;f&&(1===f.nodeType&&g.push(f),f!==d);f=e.next());return g},f=function(c,d){var e,f,g;f=c.dom,g=c.selection,e=a.create(f,g.getRng()),b.each(d,function(a){c.dom.remove(a,!0)}),g.setRng(a.resolve(f,e))},g=function(a){return"A"===a.nodeName&&a.hasAttribute("href")},h=function(a,b){var c=a.getParent(b,g);return c?c:b},i=function(a){var c,f,i,j,k,l,m;return k=a.selection,l=a.dom,m=k.getRng(),c=h(l,d.getNode(m.startContainer,m.startOffset)),f=d.getNode(m.endContainer,m.endOffset),i=a.getBody(),j=b.grep(e(i,c,f),g)},j=function(a){f(a,i(a))};return{unlinkSelection:j}}),g("k",["n","o"],function(a,b){var c=function(a,b){var c,d,e;for(e='<table data-mce-id="mce" style="width: 100%">',e+="<tbody>",d=0;b>d;d++){for(e+="<tr>",c=0;a>c;c++)e+="<td><br></td>";e+="</tr>"}return e+="</tbody>",e+="</table>"},d=function(a){var b=a.dom.select("*[data-mce-id]");return b[0]},e=function(a,b,e){a.undoManager.transact(function(){var f,g;a.insertContent(c(b,e)),f=d(a),f.removeAttribute("data-mce-id"),g=a.dom.select("td,th",f),a.selection.setCursorLocation(g[0],0)})},f=function(a,b){a.execCommand("FormatBlock",!1,b)},g=function(b,c,d){var e,f;e=b.editorUpload.blobCache,f=e.create(a.uuid("mceu"),d,c),e.add(f),b.insertContent(b.dom.createHTML("img",{src:f.blobUri()}))},h=function(a){a.selection.collapse(!1)},i=function(a){a.focus(),b.unlinkSelection(a),h(a)},j=function(a,b,c){a.focus(),a.dom.setAttrib(b,"href",c),h(a)},k=function(a,b){a.execCommand("mceInsertLink",!1,{href:b}),h(a)},l=function(a,b){var c=a.dom.getParent(a.selection.getStart(),"a[href]");c?j(a,c,b):k(a,b)},m=function(a,b){0===b.trim().length?i(a):l(a,b)};return{insertTable:e,formatBlock:f,insertBlob:g,createLink:m,unlink:i}}),g("p",[],function(){var a=function(a){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(a.trim())},b=function(a){return/^https?:\/\//.test(a.trim())};return{isDomainLike:a,isAbsolute:b}}),g("f",["b","c","m","k","p"],function(a,b,c,d,e){var f=function(a){a.find("textbox").eq(0).each(function(a){a.focus()})},g=function(c,d){var e=b.create(a.extend({type:"form",layout:"flex",direction:"row",padding:5,name:c,spacing:3},d));return e.on("show",function(){f(e)}),e},h=function(a,b){return b?a.show():a.hide()},i=function(a,b){return new c(function(c){a.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(a){var d=a===!0?"http://"+b:b;c(d)})})},j=function(a,b){return!e.isAbsolute(b)&&e.isDomainLike(b)?i(a,b):c.resolve(b)},k=function(a,b){var c=function(){a.focus(),d.unlink(a),b()};return g("quicklink",{items:[{type:"button",name:"unlink",icon:"unlink",onclick:c,tooltip:"Remove link"},{type:"textbox",name:"linkurl",placeholder:"Paste or type a link"},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(){var b,c="";b=a.dom.getParent(a.selection.getStart(),"a[href]"),b&&(c=a.dom.getAttrib(b,"href")),this.fromJSON({linkurl:c}),h(this.find("#unlink"),b)},onsubmit:function(c){j(a,c.data.linkurl).then(function(c){d.createLink(a,c),b()})}})};return{createQuickLinkForm:k}}),h("q",tinymce.geom.Rect),g("r",[],function(){var a=function(a){return{x:a.left,y:a.top,w:a.width,h:a.height}},b=function(a){return{left:a.x,top:a.y,width:a.w,height:a.h,right:a.x+a.w,bottom:a.y+a.h}};return{fromClientRect:a,toClientRect:b}}),g("g",["d","q","r"],function(a,b,c){var d=function(b){var c=a.getViewPort();return{x:b.x+c.x,y:b.y+c.y,w:b.w,h:b.h}},e=function(a){var b=a.getBoundingClientRect();return d({x:b.left,y:b.top,w:Math.max(a.clientWidth,a.offsetWidth),h:Math.max(a.clientHeight,a.offsetHeight)})},f=function(a,b){return e(b)},g=function(a){return e(a.getElement().ownerDocument.body)},h=function(a){return e(a.getContentAreaContainer()||a.getBody())},i=function(a){var b=a.selection.getBoundingClientRect();return b?d(c.fromClientRect(b)):null};return{getElementRect:f,getPageAreaRect:g,getContentAreaRect:h,getSelectionRect:i}}),g("h",["q","r"],function(a,b){var c=function(a,b){return{rect:a,position:b}},d=function(a,b){return{x:b.x,y:b.y,w:a.w,h:a.h}},e=function(b,e,f,g,h){var i,j,k;return i=a.findBestRelativePosition(h,f,g,b),f=a.clamp(f,g),i?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(f=a.intersect(g,f),f?(i=a.findBestRelativePosition(h,f,g,e))?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(k=d(h,f),c(k,i)):null)},f=function(a,b,c){return e(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],a,b,c)},g=function(a,b,c){return e(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],["bc-tc","bl-tl","br-tr"],a,b,c)},h=function(a,c,d,e){var f;return"function"==typeof a?(f=a({elementRect:b.toClientRect(c),contentAreaRect:b.toClientRect(d),panelRect:b.toClientRect(e)}),b.fromClientRect(f)):e};return{calcInsert:f,calc:g,userConstrain:h}}),g("3",["b","c","d","e","f","g","h"],function(a,b,c,d,e,f,g){return function(){var h,i,j="bold italic | quicklink h2 h3 blockquote",k="quickimage quicktable",l=function(b,c){return a.map(c,function(a){return d.create(b,a.id,a.items)})},m=function(a){var b=a.selection_toolbar;return b?b:j},n=function(a){var b=a.insert_toolbar;return b?b:k},o=function(a,c){var f,g=a.settings;return f=l(a,c),f=f.concat([d.create(a,"text",m(g)),d.create(a,"insert",n(g)),e.createQuickLinkForm(a,x)]),b.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:f,oncancel:function(){a.focus()}})},p=function(a){a&&a.show()},q=function(a,b){a.moveTo(b.x,b.y)},r=function(b,c){c=c?c.substr(0,2):"",a.each({t:"down",b:"up",c:"center"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(0,1))}),"cr"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!1)):"cl"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!0)):a.each({l:"left",r:"right"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(1,1))})},s=function(a,b){var c=a.items().filter("#"+b);c.length>0&&(c[0].show(),a.reflow())},t=function(a,b,d,e){var h,j,k,l;p(a),a.items().hide(),s(a,b),l=d.settings.inline_toolbar_position_handler,h=f.getContentAreaRect(d),j=c.getRect(a.getEl()),k="insert"===b?g.calcInsert(e,h,j):g.calc(e,h,j),k?(j=k.rect,i=e,q(a,g.userConstrain(l,e,h,j)),r(a,k.position)):x(a)},u=function(){return h.items().filter("form:visible").length>0},v=function(a,b){if(h){h.items().hide(),s(h,b);var d,e,j,k;p(h),h.items().hide(),s(h,b),k=a.settings.inline_toolbar_position_handler,d=f.getContentAreaRect(a),e=c.getRect(h.getEl()),j=g.calc(i,d,e),j&&(e=j.rect,q(h,g.userConstrain(k,i,d,e)),r(h,j.position))}},w=function(a,b,c,d){h||(h=o(a,d),h.renderTo(document.body).reflow().moveTo(c.x,c.y),a.nodeChanged()),t(h,b,a,c)},x=function(){h&&h.hide()},y=function(){h&&h.find("toolbar:visible").eq(0).each(function(a){a.focus(!0)})},z=function(){h&&(h.remove(),h=null)},A=function(){return h&&h.visible()&&u()};return{show:w,showForm:v,inForm:A,hide:x,focus:y,remove:z}}}),g("i",["m"],function(a){var b=function(b){return new a(function(a){var c=new FileReader;c.onloadend=function(){a(c.result.split(",")[1])},c.readAsDataURL(b)})};return{blobToBase64:b}}),g("j",["m"],function(a){var b=function(){return new a(function(a){var b;b=document.createElement("input"),b.type="file",b.style.position="fixed",b.style.left=0,b.style.top=0,b.style.opacity=.001,document.body.appendChild(b),b.onchange=function(b){a(Array.prototype.slice.call(b.target.files))},b.click(),b.parentNode.removeChild(b)})};return{pickFile:b}}),g("4",["3","i","j","k"],function(a,b,c,d){var e=function(a){for(var b=function(b){return function(){d.formatBlock(a,b)}},c=1;6>c;c++){var e="h"+c;a.addButton(e,{text:e.toUpperCase(),tooltip:"Heading "+c,stateSelector:e,onclick:b(e),onPostRender:function(){var a=this.getEl().firstChild.firstChild;a.style.fontWeight="bold"}})}},f=function(a,f){a.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){f.showForm(a,"quicklink")}}),a.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){c.pickFile().then(function(c){var e=c[0];b.blobToBase64(e).then(function(b){d.insertBlob(a,b,e)})})}}),a.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){f.hide(),d.insertTable(a,2,2)}}),e(a)};return{addToEditor:f}}),h("l",tinymce.EditorManager),g("5",["l","d"],function(a,b){var c=function(a,b){var c=function(){a.fire("SkinLoaded"),b()};a.initialized?c():a.on("init",c)},d=function(d,e,f){var g=a.baseURL,h=g+"/skins/"+e,i=function(){c(d,f)};b.styleSheetLoader.load(h+"/skin.min.css",i),d.contentCSS.push(h+"/content.inline.min.css")};return{load:d}}),g("8",[],function(){var a=function(a,b){return{id:a,rect:b}},b=function(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=d(a);if(e)return e}return null};return{match:b,result:a}}),g("6",["8","g"],function(a,b){var c=function(c){return function(d){return d.selection.isCollapsed()?null:a.result(c,b.getSelectionRect(d))}},d=function(c,d){return function(e){var f,g=e.schema.getTextBlockElements();for(f=0;f<c.length;f++)if("TABLE"===c[f].nodeName)return null;for(f=0;f<c.length;f++)if(c[f].nodeName in g)return e.dom.isEmpty(c[f])?a.result(d,b.getSelectionRect(e)):null;return null}};return{textSelection:c,emptyTextBlock:d}}),g("7",["8","g"],function(a,b){var c=function(c,d){return function(e){for(var f=0;f<d.length;f++)if(d[f].predicate(c))return a.result(d[f].id,b.getElementRect(e,c));return null}},d=function(c,d){return function(e){for(var f=0;f<c.length;f++)for(var g=0;g<d.length;g++)if(d[g].predicate(c[f]))return a.result(d[g].id,b.getElementRect(e,c[f]));return null}};return{element:c,parent:d}}),g("9",[],function(){var a=function(b){return b.reduce(function(b,c){return Array.isArray(c)?b.concat(a(c)):b.concat(c)},[])};return{flatten:a}}),g("a",["b"],function(a){var b=function(a,b){return{id:a,predicate:b}},c=function(c){return a.map(c,function(a){return b(a.id,a.predicate)})};return{create:b,fromContextToolbars:c}}),g("0",["1","2","3","4","5","6","7","8","9","a"],function(a,b,c,d,e,f,g,h,i,j){var k=function(a){var b=a.selection.getNode(),c=a.dom.getParents(b);return c},l=function(a,b,c,d){var e=function(c){return a.dom.is(c,b)};return{predicate:e,id:c,items:d}},m=function(a){var b=a.contextToolbars;return i.flatten([b?b:[],l(a,"img","image","alignleft aligncenter alignright")])},n=function(a,b){var c,d,e;return d=k(a),e=j.fromContextToolbars(b),c=h.match(a,[g.element(d[0],e),f.textSelection("text"),f.emptyTextBlock(d,"insert"),g.parent(d,e)]),c&&c.rect?c:null},o=function(a,b){var c=function(){var c=m(a),d=n(a,c);d?b.show(a,d.id,d.rect,c):b.hide()};return function(){a.removed||c()}},p=function(a,b){return function(){a.inForm()||b()}},q=function(a,c){var d=b.throttle(o(a,c),0),e=b.throttle(p(c,o(a,c)),0);a.on("blur hide ObjectResizeStart",c.hide),a.on("click",d),a.on("nodeChange mouseup",e),a.on("ResizeEditor ResizeWindow keyup",d),a.on("remove",c.remove),a.shortcuts.add("Alt+F10","",c.focus)},r=function(a,b){a.shortcuts.remove("meta+k"),a.shortcuts.add("meta+k","",function(){var c=m(a),d=d=h.match(a,[f.textSelection("quicklink")]);d&&b.show(a,d.id,d.rect,c)})},s=function(a,b){var c=a.settings.skin||"lightgray";return e.load(a,c,function(){q(a,b),r(a,b)}),{}},t=function(a){throw new Error(a)};return a.add("inlite",function(a){var b=new c;d.addToEditor(a,b);var e=function(){return a.inline?s(a,b):t("inlite theme only supports inline mode.")};return{renderUI:e}}),function(){}}),d("0")()}(); \ No newline at end of file diff --git a/plugins/tinymce/themes/modern/theme.min.js b/plugins/tinymce/themes/modern/theme.min.js new file mode 100644 index 0000000..3b8ac48 --- /dev/null +++ b/plugins/tinymce/themes/modern/theme.min.js @@ -0,0 +1 @@ +tinymce.ThemeManager.add("modern",function(a){function b(b,c){var d,e=[];if(b)return o(b.split(/[ ,]/),function(b){function f(){function c(a){return function(c,d){for(var e,f=d.parents.length;f--&&(e=d.parents[f].nodeName,"OL"!=e&&"UL"!=e););b.active(c&&e==a)}}var d=a.selection;"bullist"==g&&d.selectorChanged("ul > li",c("UL")),"numlist"==g&&d.selectorChanged("ol > li",c("OL")),b.settings.stateSelector&&d.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&d.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var g;"|"==b?d=null:n.has(b)?(b={type:b,size:c},e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(g=b,b=a.buttons[g],"function"==typeof b&&(b=b()),b.type=b.type||"button",b.size=c,b=n.create(b),d.items.push(b),a.initialized?f():a.on("init",f)))}),{type:"toolbar",layout:"flow",items:e}}function c(a){function c(c){return c?(d.push(b(c,a)),!0):void 0}var d=[];if(tinymce.isArray(m.toolbar)){if(0===m.toolbar.length)return;tinymce.each(m.toolbar,function(a,b){m["toolbar"+(b+1)]=a}),delete m.toolbar}for(var e=1;10>e&&c(m["toolbar"+e]);e++);return d.length||m.toolbar===!1||c(m.toolbar||t),d.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:d}:void 0}function d(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((m.removed_menuitems||"").split(/[ ,]/)),m.menu?(e=m.menu[c],g=!0):e=s[c],e){d={text:e.title},f=[],o((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||o(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i<f.length;i++)"|"==f[i].text&&(0!==i&&i!=f.length-1||f.splice(i,1));if(d.menu=f,!d.menu.length)return null}return d}var d,e=[],f=[];if(m.menu)for(d in m.menu)f.push(d);else for(d in s)f.push(d);for(var g="string"==typeof m.menubar?m.menubar.split(/[ ,]/):f,h=0;h<g.length;h++){var i=g[h];i=c(i),i&&e.push(i)}return e}function e(b){function c(a){var c=b.find(a)[0];c&&c.focus(!0)}a.shortcuts.add("Alt+F9","",function(){c("menubar")}),a.shortcuts.add("Alt+F10","",function(){c("toolbar")}),a.shortcuts.add("Alt+F11","",function(){c("elementpath")}),b.on("cancel",function(){a.focus()})}function f(b,c){function d(a){return{width:a.clientWidth,height:a.clientHeight}}var e,f,g,h;e=a.getContainer(),f=a.getContentAreaContainer().firstChild,g=d(e),h=d(f),null!==b&&(b=Math.max(m.min_width||100,b),b=Math.min(m.max_width||65535,b),p.setStyle(e,"width",b+(g.width-h.width)),p.setStyle(f,"width",b)),c=Math.max(m.min_height||100,c),c=Math.min(m.max_height||65535,c),p.setStyle(f,"height",c),a.fire("ResizeEditor")}function g(b,c){var d=a.getContentAreaContainer();l.resizeTo(d.clientWidth+b,d.clientHeight+c)}function h(){function c(){return a.contextToolbars||[]}function d(b){var c,d,e;return c=tinymce.DOM.getPos(a.getContentAreaContainer()),d=a.dom.getRect(b),e=a.dom.getRoot(),"BODY"==e.nodeName&&(d.x-=e.ownerDocument.documentElement.scrollLeft||e.scrollLeft,d.y-=e.ownerDocument.documentElement.scrollTop||e.scrollTop),d.x+=c.x,d.y+=c.y,d}function e(){o(a.contextToolbars,function(a){a.panel&&a.panel.hide()})}function f(a,b,c){b=b?b.substr(0,2):"",o({t:"down",b:"up"},function(d,e){a.classes.toggle("arrow-"+d,c(e,b.substr(0,1)))}),o({l:"left",r:"right"},function(d,e){a.classes.toggle("arrow-"+d,c(e,b.substr(1,1)))})}function g(a){return{left:a.x,top:a.y,width:a.w,height:a.h,right:a.x+a.w,bottom:a.y+a.h}}function h(a,b,c,d,e){return e=g({x:a,y:b,w:e.w,h:e.h}),m.inline_toolbar_position_handler&&(e=m.inline_toolbar_position_handler({elementRect:g(c),contentAreaRect:g(d),panelRect:e})),e}function i(a,b){a.moveTo(b.left,b.top)}function j(b){var c,g,j,k,l,m,n,o;if(!a.removed){if(!b||!b.toolbar.panel)return void e();n=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],l=b.toolbar.panel,l.show(),j=d(b.element),g=tinymce.DOM.getRect(l.getEl()),k=tinymce.DOM.getRect(a.getContentAreaContainer()||a.getBody()),o=25,j.w=b.element.clientWidth,j.h=b.element.clientHeight,a.inline||(k.w=a.getDoc().documentElement.offsetWidth),a.selection.controlSelection.isResizable(b.element)&&j.w<o&&(j=q.inflate(j,0,8)),c=q.findBestRelativePosition(g,j,k,n),j=q.clamp(j,k),c?(m=q.relativePosition(g,j,c),i(l,h(m.x,m.y,j,k,g))):(k.h+=g.h,j=q.intersect(k,j),j?(c=q.findBestRelativePosition(g,j,k,["bc-tc","bl-tl","br-tr"]),c?(m=q.relativePosition(g,j,c),i(l,h(m.x,m.y,j,k,g))):i(l,h(j.x,j.y,j,k,g))):l.hide()),f(l,c,function(a,b){return a===b})}}function k(){function b(){a.selection&&j(s(a.selection.getNode()))}tinymce.util.Delay.requestAnimationFrame(b)}function l(){t||(t=a.selection.getScrollContainer()||a.getWin(),tinymce.$(t).on("scroll",k),a.on("remove",function(){tinymce.$(t).off("scroll")}))}function p(c){var d;return c.toolbar.panel?(c.toolbar.panel.show(),void j(c)):(l(),d=n.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:b(c.toolbar.items),oncancel:function(){a.focus()}}),c.toolbar.panel=d,d.renderTo(document.body).reflow(),void j(c))}function r(){tinymce.each(c(),function(a){a.panel&&a.panel.hide()})}function s(b){var d,e,f,g=c();for(f=a.$(b).parents().add(b),d=f.length-1;d>=0;d--)for(e=g.length-1;e>=0;e--)if(g[e].predicate(f[d]))return{toolbar:g[e],element:f[d]};return null}var t;a.on("click keyup setContent",function(b){("setcontent"!=b.type||b.selection)&&tinymce.util.Delay.setEditorTimeout(a,function(){var b;b=s(a.selection.getNode()),b?(r(),p(b)):r()})}),a.on("blur hide",r),a.on("ObjectResizeStart",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.hide()}),a.on("nodeChange ResizeEditor ResizeWindow",k),a.on("remove",function(){tinymce.each(c(),function(a){a.panel&&a.panel.remove()}),a.contextToolbars={}}),a.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.items()[0].focus()})}function i(a){return function(){a.initialized?a.fire("SkinLoaded"):a.on("init",function(){a.fire("SkinLoaded")})}}function j(b){function f(){if(o&&o.moveRel&&o.visible()&&!o._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=p.getPos(c),g=p.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}o.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){o&&(o.show(),f(),p.addClass(a.getBody(),"mce-edit-focus"))}function j(){o&&(o.hide(),r.hideAll(),p.removeClass(a.getBody(),"mce-edit-focus"))}function k(){return o?void(o.visible()||g()):(o=l.panel=n.create({type:q?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!q,border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size)]}),a.fire("BeforeRenderUI"),o.renderTo(q||document.body).reflow(),e(o),g(),h(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",j),void a.nodeChanged())}var o,q;return m.fixed_toolbar_container&&(q=p.select(m.fixed_toolbar_container)[0]),m.content_editable=!0,a.on("focus",function(){b.skinUiCss?tinymce.DOM.styleSheetLoader.load(b.skinUiCss,k,k):k()}),a.on("blur hide",j),a.on("remove",function(){o&&(o.remove(),o=null)}),b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),{}}function k(b){function g(){return function(a){"readonly"==a.mode?j.find("*").disabled(!0):j.find("*").disabled(!1)}}var j,k,o;return b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),j=l.panel=n.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),m.resize!==!1&&(k={type:"resizehandle",direction:m.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;o={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==m.resize?f(o.width+a.deltaX,o.height+a.deltaY):f(null,o.height+a.deltaY)}}),m.statusbar!==!1&&j.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:a},k]}),a.fire("BeforeRenderUI"),a.on("SwitchMode",g()),j.renderBefore(b.targetNode).reflow(),m.readonly&&a.setMode("readonly"),m.width&&tinymce.DOM.setStyle(j.getEl(),"width",m.width),a.on("remove",function(){j.remove(),j=null}),e(j),h(),{iframeContainer:j.find("#iframe")[0].getEl(),editorContainer:j.getEl()}}var l=this,m=a.settings,n=tinymce.ui.Factory,o=tinymce.each,p=tinymce.DOM,q=tinymce.geom.Rect,r=tinymce.ui.FloatPanel,s={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},t="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";l.renderUI=function(b){var c=m.skin!==!1?m.skin||"lightgray":!1;if(c){var d=m.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){l.throbber=l.throbber||new tinymce.ui.Throbber(l.panel.getEl("body")),a.state?l.throbber.show(a.time):l.throbber.hide()}),m.inline?j(b):k(b)},l.resizeTo=f,l.resizeBy=g}); \ No newline at end of file diff --git a/plugins/tinymce/tinymce.min.js b/plugins/tinymce/tinymce.min.js new file mode 100644 index 0000000..ddd85f7 --- /dev/null +++ b/plugins/tinymce/tinymce.min.js @@ -0,0 +1,13 @@ +// 4.4.1 (2016-07-26) +!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){var r,i,o,a,l;for(r=0;r<n.length;r++){i=e,o=n[r],a=o.split(/[.\/]/);for(var c=0;c<a.length-1;++c)i[a[c]]===t&&(i[a[c]]={}),i=i[a[c]];i[a[a.length-1]]=s[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o in s)l[o]=s[o];for(r=0;r<n.length;r++)delete l[n[r]];e.privateModules=l}}var s={},l="tinymce/geom/Rect",c="tinymce/util/Promise",u="tinymce/util/Delay",d="tinymce/Env",f="tinymce/dom/EventUtils",h="tinymce/dom/Sizzle",p="tinymce/util/Arr",m="tinymce/util/Tools",g="tinymce/dom/DomQuery",v="tinymce/html/Styles",y="tinymce/dom/TreeWalker",b="tinymce/dom/Range",C="tinymce/html/Entities",x="tinymce/dom/StyleSheetLoader",w="tinymce/dom/DOMUtils",N="tinymce/dom/ScriptLoader",E="tinymce/AddOnManager",_="tinymce/dom/NodeType",S="tinymce/text/Zwsp",k="tinymce/caret/CaretContainer",T="tinymce/dom/RangeUtils",R="tinymce/NodeChange",A="tinymce/html/Node",B="tinymce/html/Schema",D="tinymce/html/SaxParser",L="tinymce/html/DomParser",M="tinymce/html/Writer",P="tinymce/html/Serializer",H="tinymce/dom/Serializer",O="tinymce/dom/TridentSelection",I="tinymce/util/VK",F="tinymce/dom/ControlSelection",z="tinymce/util/Fun",U="tinymce/caret/CaretCandidate",W="tinymce/geom/ClientRect",V="tinymce/text/ExtendingChar",$="tinymce/caret/CaretPosition",q="tinymce/caret/CaretBookmark",j="tinymce/dom/BookmarkManager",Y="tinymce/dom/Selection",X="tinymce/dom/ElementUtils",K="tinymce/fmt/Preview",G="tinymce/fmt/Hooks",J="tinymce/Formatter",Q="tinymce/UndoManager",Z="tinymce/EnterKey",ee="tinymce/ForceBlocks",te="tinymce/caret/CaretUtils",ne="tinymce/caret/CaretWalker",re="tinymce/InsertList",ie="tinymce/InsertContent",oe="tinymce/EditorCommands",ae="tinymce/util/URI",se="tinymce/util/Class",le="tinymce/util/EventDispatcher",ce="tinymce/data/Binding",ue="tinymce/util/Observable",de="tinymce/data/ObservableObject",fe="tinymce/ui/Selector",he="tinymce/ui/Collection",pe="tinymce/ui/DomUtils",me="tinymce/ui/BoxUtils",ge="tinymce/ui/ClassList",ve="tinymce/ui/ReflowQueue",ye="tinymce/ui/Control",be="tinymce/ui/Factory",Ce="tinymce/ui/KeyboardNavigation",xe="tinymce/ui/Container",we="tinymce/ui/DragHelper",Ne="tinymce/ui/Scrollable",Ee="tinymce/ui/Panel",_e="tinymce/ui/Movable",Se="tinymce/ui/Resizable",ke="tinymce/ui/FloatPanel",Te="tinymce/ui/Window",Re="tinymce/ui/MessageBox",Ae="tinymce/WindowManager",Be="tinymce/ui/Tooltip",De="tinymce/ui/Widget",Le="tinymce/ui/Progress",Me="tinymce/ui/Notification",Pe="tinymce/NotificationManager",He="tinymce/dom/NodePath",Oe="tinymce/util/Quirks",Ie="tinymce/EditorObservable",Fe="tinymce/Mode",ze="tinymce/Shortcuts",Ue="tinymce/file/Uploader",We="tinymce/file/Conversions",Ve="tinymce/file/ImageScanner",$e="tinymce/file/BlobCache",qe="tinymce/file/UploadStatus",je="tinymce/EditorUpload",Ye="tinymce/caret/FakeCaret",Xe="tinymce/dom/Dimensions",Ke="tinymce/caret/LineWalker",Ge="tinymce/caret/LineUtils",Je="tinymce/DragDropOverrides",Qe="tinymce/SelectionOverrides",Ze="tinymce/util/Uuid",et="tinymce/Editor",tt="tinymce/util/I18n",nt="tinymce/FocusManager",rt="tinymce/EditorManager",it="tinymce/LegacyInput",ot="tinymce/util/XHR",at="tinymce/util/JSON",st="tinymce/util/JSONRequest",lt="tinymce/util/JSONP",ct="tinymce/util/LocalStorage",ut="tinymce/Compat",dt="tinymce/ui/Layout",ft="tinymce/ui/AbsoluteLayout",ht="tinymce/ui/Button",pt="tinymce/ui/ButtonGroup",mt="tinymce/ui/Checkbox",gt="tinymce/ui/ComboBox",vt="tinymce/ui/ColorBox",yt="tinymce/ui/PanelButton",bt="tinymce/ui/ColorButton",Ct="tinymce/util/Color",xt="tinymce/ui/ColorPicker",wt="tinymce/ui/Path",Nt="tinymce/ui/ElementPath",Et="tinymce/ui/FormItem",_t="tinymce/ui/Form",St="tinymce/ui/FieldSet",kt="tinymce/ui/FilePicker",Tt="tinymce/ui/FitLayout",Rt="tinymce/ui/FlexLayout",At="tinymce/ui/FlowLayout",Bt="tinymce/ui/FormatControls",Dt="tinymce/ui/GridLayout",Lt="tinymce/ui/Iframe",Mt="tinymce/ui/InfoBox",Pt="tinymce/ui/Label",Ht="tinymce/ui/Toolbar",Ot="tinymce/ui/MenuBar",It="tinymce/ui/MenuButton",Ft="tinymce/ui/MenuItem",zt="tinymce/ui/Throbber",Ut="tinymce/ui/Menu",Wt="tinymce/ui/ListBox",Vt="tinymce/ui/Radio",$t="tinymce/ui/ResizeHandle",qt="tinymce/ui/SelectBox",jt="tinymce/ui/Slider",Yt="tinymce/ui/Spacer",Xt="tinymce/ui/SplitButton",Kt="tinymce/ui/StackLayout",Gt="tinymce/ui/TabPanel",Jt="tinymce/ui/TextBox",Qt="tinymce/Register";r(l,[],function(){function e(e,t,n){var r,i,a,s,l,u;return r=t.x,i=t.y,a=e.w,s=e.h,l=t.w,u=t.h,n=(n||"").split(""),"b"===n[0]&&(i+=u),"r"===n[1]&&(r+=l),"c"===n[0]&&(i+=c(u/2)),"c"===n[1]&&(r+=c(l/2)),"b"===n[3]&&(i-=s),"r"===n[4]&&(r-=a),"c"===n[3]&&(i-=c(s/2)),"c"===n[4]&&(r-=c(a/2)),o(r,i,a,s)}function t(t,n,r,i){var o,a;for(a=0;a<i.length;a++)if(o=e(t,n,i[a]),o.x>=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a];return null}function n(e,t,n){return o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),0>i-n||0>a-r?null:o(n,r,i-n,a-r)}function i(e,t,n){var r,i,a,s,c,u,d,f,h,p;return c=e.x,u=e.y,d=e.x+e.w,f=e.y+e.h,h=t.x+t.w,p=t.y+t.h,r=l(0,t.x-c),i=l(0,t.y-u),a=l(0,d-h),s=l(0,f-p),c+=r,u+=i,n&&(d+=r,f+=i,c-=a,u-=s),d-=a,f-=s,o(c,u,d-c,f-u)}function o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return o(e.left,e.top,e.width,e.height)}var s=Math.min,l=Math.max,c=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(c,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;t>e;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var r=0,i=e.length;i>r;r++)e[r].then(t,n)})},t}),r(u,[c],function(e){function t(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r<o.length&&!i;r++)i=window[o[r]+"RequestAnimationFrame"];i||(i=n),i(e,t)}function n(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)}function r(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)}function i(e){return clearTimeout(e)}function o(e){return clearInterval(e)}var a;return{requestAnimationFrame:function(n,r){return a?void a.then(n):void(a=new e(function(e){r||(r=document.body),t(e,r)}).then(n))},setTimeout:n,setInterval:r,setEditorTimeout:function(e,t,r){return n(function(){e.removed||t()},r)},setEditorInterval:function(e,t,n){var i;return i=r(function(){e.removed?clearInterval(i):t()},n)},throttle:function(e,t){var r,i;return i=function(){var i=arguments;clearTimeout(r),r=n(function(){e.apply(this,i)},t)},i.stop=function(){clearTimeout(r)},i},clearInterval:o,clearTimeout:i}}),r(d,[],function(){function e(e){return"matchMedia"in window?matchMedia(e).matches:!1}var t=navigator,n=t.userAgent,r,i,o,a,s,l,c,u,d,f,h,p,m;r=window.opera&&window.opera.buildNumber,d=/Android/.test(n),i=/WebKit/.test(n),o=!i&&!r&&/MSIE/gi.test(n)&&/Explorer/gi.test(t.appName),o=o&&/MSIE (\w+)\./.exec(n)[1],a=-1==n.indexOf("Trident/")||-1==n.indexOf("rv:")&&-1==t.appName.indexOf("Netscape")?!1:11,s=-1==n.indexOf("Edge/")||o||a?!1:12,o=o||a||s,l=!i&&!a&&/Gecko/.test(n),c=-1!=n.indexOf("Mac"),u=/(iPad|iPhone)/.test(n),f="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,h=e("only screen and (max-device-width: 480px)")&&(d||u),p=e("only screen and (min-width: 800px)")&&(d||u),m=-1!=n.indexOf("Windows Phone"),s&&(i=!1);var g=!u||f||n.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:c,iOS:u,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,desktop:!h&&!p,windowsPhone:m}}),r(f,[u,d],function(e,t){function n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function i(e,t){var n,r=t;return n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in e)u[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&c.test(e.type)&&e.pageX===l&&e.clientX!==l){var d=s.target.ownerDocument||document,f=d.documentElement,h=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||h&&h.scrollLeft||0)-(f&&f.clientLeft||h&&h.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||h&&h.scrollTop||0)-(f&&f.clientTop||h&&h.clientTop||0)}return s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function a(){o.domLoaded||(o.domLoaded=!0,i(u))}function s(){("complete"===c.readyState||"interactive"===c.readyState&&c.body)&&(r(c,"readystatechange",s),a())}function l(){try{c.documentElement.doScroll("left")}catch(t){return void e.setTimeout(l)}a()}var c=t.document,u={type:"ready"};return o.domLoaded?void i(u):(c.addEventListener?"complete"===c.readyState?a():n(t,"DOMContentLoaded",a):(n(c,"readystatechange",s),c.documentElement.doScroll&&t.self===t.top&&l()),void n(t,"load",a))}function s(){function e(e,t){var n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;o>r;r++)if(a=n[r],a&&a.func.call(a.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var t=this,i={},s,c,u,d,f;c=l+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},s=1,t.domLoaded=!1,t.events=i,t.bind=function(r,l,h,p){function m(t){e(o(t||N.event),g)}var g,v,y,b,C,x,w,N=window;if(r&&3!==r.nodeType&&8!==r.nodeType){for(r[c]?g=r[c]:(g=s++,r[c]=g,i[g]={}),p=p||r,l=l.split(" "),y=l.length;y--;)b=l[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),t.domLoaded&&"ready"===b&&"complete"==r.readyState?h.call(p,o({type:b})):(d||(C=f[b],C&&(x=function(t){var n,r;if(n=t.currentTarget,r=t.relatedTarget,r&&n.contains)r=n.contains(r);else for(;r&&r!==n;)r=r.parentNode;r||(t=o(t||N.event),t.type="mouseout"===t.type?"mouseleave":"mouseenter",t.target=n,e(t,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(t){t=o(t||N.event),t.type="focus"===t.type?"focusin":"focusout",e(t,g)}),v=i[g][b],v?"ready"===b&&t.domLoaded?h({type:b}):v.push({func:h,scope:p}):(i[g][b]=v=[{func:h,scope:p}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?a(r,x,t):n(r,C||b,x,w)));return r=v=0,h}},t.unbind=function(e,n,o){var a,s,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return t;if(a=e[c]){if(f=i[a],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],s=f[d]){if(o)for(u=s.length;u--;)if(s[u].func===o){var h=s.nativeHandler,p=s.fakeName,m=s.capture;s=s.slice(0,u).concat(s.slice(u+1)),s.nativeHandler=h,s.fakeName=p,s.capture=m,f[d]=s}o&&0!==s.length||(delete f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture))}}else{for(d in f)s=f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture);f={}}for(d in f)return t;delete i[a];try{delete e[c]}catch(g){e[c]=null}}return t},t.fire=function(n,r,i){var a;if(!n||3===n.nodeType||8===n.nodeType)return t;i=o(null,i),i.type=r,i.target=n;do a=n[c],a&&e(i,a),n=n.parentNode||n.ownerDocument||n.defaultView||n.parentWindow;while(n&&!i.isPropagationStopped());return t},t.clean=function(e){var n,r,i=t.unbind;if(!e||3===e.nodeType||8===e.nodeType)return t;if(e[c]&&i(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(i(e),r=e.getElementsByTagName("*"),n=r.length;n--;)e=r[n],e[c]&&i(e);return t},t.destroy=function(){i={}},t.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var l="mce-data-",c=/^(?:mouse|contextmenu)|click/,u={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1};return s.Event=new s,s.Event.bind(window,"ready",function(){}),s}),r(h,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,h,p,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!P||!P.test(e))){if(h=d=F,p=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=_(e),(d=t.getAttribute("id"))?h=d.replace(be,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+f(c[l]);p=ye.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,p.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[U,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===U&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function p(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],h=[],p=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:p||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,h),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[h[u]]=!(y[h[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?te.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(p,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),c=h(function(e){return te.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[h(p(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&p(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return p(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,h=0,p="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),C=U+=null==y?1:Math.random()||.1,x=b.length;for(c&&(T=a!==D&&a);p!==x&&null!=(u=b[p]);p++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(U=C)}i&&((u=!f&&u)&&h--,r&&m.push(u))}if(h+=p,i&&p!==h){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(h>0)for(;p--;)m[p]||v[p]||(v[p]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&h+n.length>1&&e.uniqueSort(l)}return c&&(U=C,T=y),m};return i?r(a):a}var C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,H,O,I,F="sizzle"+-new Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ue=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),he={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){function t(e){try{return e.top}catch(t){}return null}var n,r=e?e.ownerDocument||e:z,o=r.defaultView;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!E(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){return M?t.getElementsByClassName(e):void 0},H=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(O=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),H.push("!=",ae)}),P=P.length&&new RegExp(P.join("|")),H=H.length&&new RegExp(H.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)c.unshift(n);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},r):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ue,"='$1']"),x.matchesSelector&&M&&(!H||!H.test(n))&&(!P||!P.test(n)))try{var r=O.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},N=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=N(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=N(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,h,p,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],h=c[0]===U&&c[1],f=c[0]===U&&c[2],d=h&&g.childNodes[h];d=++h&&d&&d[m]||(f=h=0)||p.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[U,h,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===U)f=c[1];else for(;(d=++h&&d&&d[m]||(f=h=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||N(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(C in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[C]=s(C);for(C in{submit:!0,reset:!0})w.pseudos[C]=l(C);return d.prototype=w.filters=w.pseudos,w.setFilters=new d,_=e.tokenize=function(t,n){var r,i,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=w.preFilter;s;){r&&!(i=le.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ce.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=he[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},S=e.compile=function(e,t){var n,r=[],i=[],o=q[e+" "];if(!o){for(t||(t=_(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return o},k=e.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,d=!r&&_(e=c.selector||e);if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0],!t)return n;c&&(t=t.parentNode), +e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!M,n,ye.test(e)&&u(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(p,[],function(){function e(e){var t=e,n,r;if(!u(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(n,i){t&&!t(n,i,e)||r.push(n)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0]);i<e.length;i++)n=t.call(r,n,e[i],i);return n}function s(e,t,n){var r,i;for(r=0,i=e.length;i>r;r++)if(t.call(n,e[r],r,e))return r;return-1}function l(e,n,r){var i=s(e,n,r);return-1!==i?e[i]:t}function c(e){return e[e.length-1]}var u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:u,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a,findIndex:s,find:l,last:c}}),r(m,[d,p],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?"array"==r&&n.isArray(e)?!0:typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function s(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function l(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)===!1?!1:void l(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function u(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function d(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function f(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,extend:s,create:a,walk:l,createNS:c,resolve:u,explode:d,_addCacheSuffix:f}}),r(g,[f,h,m,d],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;i<t.length;i++)c(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function u(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function d(e,t,n){var r,i;return t=f(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function f(e,t){return new f.fn.init(e,t)}function h(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function p(e){return null===e||e===k?"":(""+e).replace(P,"")}function m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,N=Array.prototype.push,E=Array.prototype.slice,_=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)N.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else N.apply(n,f.makeArray(e));return n},attr:function(e,t){var n=this,r;if("object"==typeof e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=L[e],r&&r.get)return r.get(n[0],e);if(A[e])return n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=L[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=B[e]||e,"object"==typeof e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)m(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||R[e]||(t+="px"),i.each(function(){var n=this.style;if(s=M[e],s&&s.set)return void s.set(this,t);try{this.style[D[e]||e]=t}catch(i){}null!==t&&""!==t||(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return k}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],S.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return c(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return c(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return f(e).append(this),this},prependTo:function(e){return f(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return d(this,e)},wrapAll:function(e){return d(this,e,!0)},wrapInner:function(e){return this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(-1!==e.indexOf(" ")?m(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=u(r,e),o!==t&&(i=r.className,o?r.className=p((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return u(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return this.each(function(){S.bind(this,e,t)})},off:function(e,t){return this.each(function(){S.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?S.fire(this,e.type,e):S.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new f(E.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:N,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:h,isArray:r.isArray,each:m,trim:p,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return C(e,"nextSibling",1)},prev:function(e){return C(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,h="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+h).split(" "),l=0;l<u.length;l++)c[u[l]]=h+l,c[h+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t,n){var r,i,o,a;if(r=m[e+"-top"+t],r&&(i=m[e+"-right"+t],i&&(o=m[e+"-bottom"+t],o&&(a=m[e+"-left"+t])))){var s=[r,i,o,a];for(l=s.length-1;l--&&s[l]===s[l+1];);l>-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function h(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return C&&(n=C.call(x,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,C=e.url_converter,x=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":"color"!==v&&"background-color"!==v||(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,p),m[v]=b?h(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],!n||!n[e])}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(f&&!r(o,t)||(i+=(i.length>0?" ":"")+o+": "+a+";"));return i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}function r(e,n,r,i){var o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return s;return o}if(a=e.parentNode,a&&a!==t)return a}}var i=e;this.current=function(){return i},this.next=function(e){return i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function t(n){function r(){return P.createDocumentFragment()}function i(e,t){N(F,e,t)}function o(e,t){N(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function h(e,t){var n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function p(){E(I)}function m(){return E(H)}function g(){return E(O)}function v(e){var t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function N(e,t,r){var i,o;for(e?(M[W]=t,M[U]=r):(M[V]=t,M[$]=r),i=M[V];i.parentNode;)i=i.parentNode;for(o=M[W];o.parentNode;)o=o.parentNode;o==i?w(M[W],M[U],M[V],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(M[W]==M[V])return _(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function _(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),M[U]==M[$])return t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=O&&(o=M[W],c=M[U],u=M[$]-M[U],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],0>=a)return t!=O&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=O&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,P=n.doc,H=0,O=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:h,deleteContents:p,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(x,[m,u],function(e,t){return function(n,r){function i(e){n.getElementsByTagName("head")[0].appendChild(e)}function o(r,o,c){function u(){for(var e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function d(){for(var e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function f(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function h(e,n){e()||((new Date).getTime()-y<l?t.setTimeout(n):d())}function p(){h(function(){for(var e=n.styleSheets,t,r=e.length,i;r--;)if(t=e[r],i=t.ownerNode?t.ownerNode:t.owningElement,i&&i.id===g.id)return u(),!0},p)}function m(){h(function(){try{var e=v.sheet.cssRules;return u(),!!e}catch(t){}},m)}var g,v,y,b;if(r=e._addCacheSuffix(r),s[r]?b=s[r]:(b={passed:[],failed:[]},s[r]=b),o&&b.passed.push(o),c&&b.failed.push(c),1!=b.status){if(2==b.status)return void u();if(3==b.status)return void d();if(b.status=1,g=n.createElement("link"),g.rel="stylesheet",g.type="text/css",g.id="u"+a++,g.async=!1,g.defer=!1,y=(new Date).getTime(),"onload"in g&&!f())g.onload=p,g.onerror=d;else{if(navigator.userAgent.indexOf("Firefox")>0)return v=n.createElement("style"),v.textContent='@import "'+r+'"',m(),void i(v);p()}i(g),g.href=r}}var a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[h,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function h(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function p(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=c.each,g=c.is,v=c.grep,y=c.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[ \t\r\n]*$/;return p.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n,n="*"===n?function(e){ +return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==p.DOM&&n===document){var o=p.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,p.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==p.DOM&&n===document?void p.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("<div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:h,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},p.DOM=new p(document),p.nodeIndex=h,p}),r(N,[w,m],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,h;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==h&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.remove=function(e){delete l[e],delete u[e]},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=h}var p;d.push({func:n,scope:r||this}),(p=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),p()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(E,[N,m],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete this.urls[e],delete this.lookup[e]},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return function(t){return!!t&&t.nodeType==e}}function t(e){return e=e.toLowerCase().split(" "),function(t){var n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;n<e.length;n++)if(r===e[n])return!0;return!1}}function n(e,t){return t=t.toLowerCase().split(" "),function(n){var r,i;if(s(n))for(r=0;r<t.length;r++)if(i=getComputedStyle(n,null).getPropertyValue(e),i===t[r])return!0;return!1}}function r(e,t){return function(n){return s(n)&&n[e]===t}}function i(e,t){return function(n){return s(n)&&n.getAttribute(e)===t}}function o(e){return s(e)&&e.hasAttribute("data-mce-bogus")}function a(e){return function(t){if(s(t)){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}}var s=e(1);return{isText:e(3),isElement:s,isComment:e(8),isBr:t("br"),isContentEditableTrue:a("true"),isContentEditableFalse:a("false"),matchNodeNames:t,hasPropValue:r,hasAttributeValue:i,matchStyleValues:n,isBogus:o}}),r(S,[],function(){function e(e){return e==n}function t(e){return e.replace(new RegExp(n,"g"),"")}var n="\u200b";return{isZwsp:e,ZWSP:n,trim:t}}),r(k,[_,S],function(e,t){function n(e){return d(e)&&(e=e.parentNode),u(e)&&e.hasAttribute("data-mce-caret")}function r(e){return d(e)&&t.isZwsp(e.data)}function i(e){return n(e)||r(e)}function o(e,n){var r,o,a,s;if(r=e.ownerDocument,a=r.createTextNode(t.ZWSP),s=e.parentNode,n){if(o=e.previousSibling,d(o)){if(i(o))return o;if(c(o))return o.splitText(o.data.length-1)}s.insertBefore(a,e)}else{if(o=e.nextSibling,d(o)){if(i(o))return o;if(l(o))return o.splitText(1),o}e.nextSibling?s.insertBefore(a,e.nextSibling):s.appendChild(a)}return a}function a(e,t,n){var r,i,o;return r=t.ownerDocument,i=r.createElement(e),i.setAttribute("data-mce-caret",n?"before":"after"),i.setAttribute("data-mce-bogus","all"),i.appendChild(r.createTextNode("\xa0")),o=t.parentNode,n?o.insertBefore(i,t):t.nextSibling?o.insertBefore(i,t.nextSibling):o.appendChild(i),i}function s(e){var n;u(e)&&i(e)&&("&nbsp;"!=e.innerHTML?e.removeAttribute("data-mce-caret"):e.parentNode&&e.parentNode.removeChild(e)),d(e)&&(n=t.trim(e.data),0===n.length&&e.parentNode&&e.parentNode.removeChild(e),e.nodeValue=n)}function l(e){return d(e)&&e.data[0]==t.ZWSP}function c(e){return d(e)&&e.data[e.data.length-1]==t.ZWSP}var u=e.isElement,d=e.isText;return{isCaretContainer:i,isCaretContainerBlock:n,isCaretContainerInline:r,insertInline:o,insertBlock:a,remove:s,startsWithCaretContainer:l,endsWithCaretContainer:c}}),r(T,[m,y,_,b,k],function(e,t,n,r,i){function o(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function a(e){this.walk=function(t,n){function r(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function a(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,o){var a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,h,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return void l(b,function(e){n([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=o(d,f)),c==d)return n(r([c]));for(h=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return s(c,h,!0);if(g===h)break}for(g=d;g;g=g.parentNode){if(g===c)return s(d,h);if(g===h)break}p=a(c,h)||c,m=a(d,h)||d,s(c,p,!0),y=i(p==c?p:p.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&n(r(y)),s(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function s(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||g);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function l(e){for(;e&&e!=g;){if(c(e))return!0;e=e.parentNode}return!1}function d(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function f(n,r){var a,s,l;if(r=r||h,l=e.getParent(r.parentNode,e.isBlock)||g,n&&"BR"==r.nodeName&&C&&e.isEmpty(l))return h=r.parentNode,p=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);v=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(v)||u(v))return;if(3===v.nodeType&&v.nodeValue.length>0)return h=v,p=n?v.nodeValue.length:0,void(i=!0);if(e.isBlock(v)||y[v.nodeName.toLowerCase()])return;s=v}o&&s&&(h=s,i=!0,p=0)}var h,p,m,g=e.getRoot(),v,y,b,C;if(h=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],C=1==h.nodeType&&p===h.childNodes.length,y=e.schema.getNonEmptyElements(),b=r,!u(h)){if(1==h.nodeType&&p>h.childNodes.length-1&&(b=!1),9===h.nodeType&&(h=e.getRoot(),p=0),h===g){if(b&&(v=h.childNodes[p>0?p-1:0])){if(u(v))return;if(y[v.nodeName]||"TABLE"==v.nodeName)return}if(h.hasChildNodes()){if(p=Math.min(!b&&p>0?p-1:p,h.childNodes.length-1),h=h.childNodes[p],p=0,!o&&h===g.lastChild&&"TABLE"===h.nodeName)return;if(l(h)||u(h))return;if(h.hasChildNodes()&&!/TABLE/.test(h.nodeName)){v=h,m=new t(h,g);do{if(c(v)||u(v)){i=!1;break}if(3===v.nodeType&&v.nodeValue.length>0){p=b?0:v.nodeValue.length,h=v,i=!0;break}if(y[v.nodeName.toLowerCase()]&&!a(v)){p=e.nodeIndex(v),h=v.parentNode,"IMG"!=v.nodeName||b||p++,i=!0;break}}while(v=b?m.next():m.prev())}}}o&&(3===h.nodeType&&0===p&&f(!0),1===h.nodeType&&(v=h.childNodes[p],v||(v=h.childNodes[p-1]),!v||"BR"!==v.nodeName||d(v,"A")||s(v)||s(v,!0)||f(!0,v))),b&&!o&&3===h.nodeType&&p===h.nodeValue.length&&f(!1),i&&n["set"+(r?"Start":"End")](h,p)}}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function s(t,n,r){var i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}var l=e.each,c=n.isContentEditableFalse,u=i.isCaretContainer;return a.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},a.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=s(e,t,n)}}return r},a.getSelectedNode=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},a.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},a}),r(R,[T,d,u],function(e,t,n){return function(r){function i(e){var t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(-1===t)return a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in r.getDoc()||r.on("NodeChange Click MouseUp KeyUp Focus",function(t){var n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(B,[m],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;c<d.length;c++)"string"==typeof d[c]&&(d[c]=t(d[c])),r.push.apply(r,d[c]);for(e=t(e),s=e.length;s--;)u=[].concat(l,t(n)),a[e[s]]={attributes:i(u),attributesOrder:u,children:i(r,o)}}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,h;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),h=t("acronym applet basefont big font strike tt"),u.push.apply(u,h),s(h,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,h,p,m,g,v,b,x,w,N,E,_,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,N=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=S.exec(e[n])){if(b=s[1],h=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,N)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=k.exec(f[i])){if(c={},m=s[1],p=s[2].replace(/::/g,":"),b=s[3],_=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(p),c.required=!0),"-"===m){delete g[p],v.splice(u(v,p),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:p,value:_}),c.defaultValue=_),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:p,value:_}),c.forcedValue=_),"<"===b&&(c.validValues=a(_,"?"))),T.test(p)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(p), +l.attributePatterns.push(c)):(g[p]||v.push(p),g[p]=c)}w||"@"!=h||(w=g,N=v),x&&(l.outputName=h,y[x]=l),T.test(h)?(l.pattern=d(h),C.push(l)):y[h]=l}}function h(e){y={},C=[],f(e),s(N,function(e,t){b[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,N,E,_,S,k,T,R,A,B,D,L,M={},P={};e=e||{},N=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),_=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption",D),L=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){P[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?h(e.valid_elements):(s(N,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),p(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return L},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return _},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return P},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return M},v.addValidElements=f,v.setValidElements=h,v.addCustomElements=p,v.addValidChildren=m,v.elements=y}}),r(D,[B,C,m],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&l.end(e.name);h.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),N&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(W[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(V.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}p.map[t]=n,p.push({name:t,value:n})}var l=this,c,u=0,d,f,h=[],p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,H,O,I,F=0,z=t.decode,U,W=n.makeMap("src,href,data,background,formaction,poster"),V=/((java|vb)script|mhtml):/i,$=/^data:/i;for(P=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),H=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),M=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),N=i.validate,b=i.remove_internals,U=i.fix_self_closing,O=a.getSpecialElements();c=P.exec(e);){if(u<c.index&&l.text(z(e.substr(u,c.index-u))),d=c[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=c[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in C,U&&M[d]&&h.length>0&&h[h.length-1].name===d&&o(d),!N||(E=a.getElementRule(d))){if(_=!0,N&&(T=E.attributes,R=E.attributePatterns),(k=c[8])?(y=-1!==k.indexOf("data-mce-type"),y&&b&&(_=!1),p=[],p.map={},k.replace(H,s)):(p=[],p.map={}),N&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,L=E.removeEmptyAttrs,L&&!p.length&&(_=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in p.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in p.map););-1===m&&(_=!1)}if(S=p.map["data-mce-bogus"]){if("all"===S){u=r(a,e,P.lastIndex),P.lastIndex=u;continue}_=!1}}_&&l.start(d,p,w)}else _=!1;if(f=O[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(_&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),_&&(g.length>0&&l.text(g,!0),l.end(d)),P.lastIndex=u;continue}w||(k&&k.indexOf("/")==k.length-1?_&&l.end(d):h.push({name:d,valid:_}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u<e.length&&l.text(z(e.substr(u))),m=h.length-1;m>=0;m--)d=h[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(L,[A,B,D,m],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,h,p,m,g,v,y,b;for(m=i("tr,td,th,tbody,thead,tfoot,table"),p=l.getNonEmptyElements(),g=l.getTextBlockElements(),v=l.getSpecialElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(y=r.next;y&&g[y.name];)y.name="li",y.fixed=!0,r.parent.insert(y,r.parent),y=y.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),h=0;h<a.length-1;h++){for(l.isValidChild(c.name,a[h].name)?(d=u.filterNode(a[h].clone()),c.append(d)):d=c,f=a[h].firstChild;f&&f!=a[h+1];)b=f.next,d.append(f),f=b;c=d}s.isEmpty(p)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(p)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(y=r.prev,y&&("ul"===y.name||"ul"===y.name)){y.append(r);continue}if(y=r.next,y&&("ul"===y.name||"ul"===y.name)){y.insert(r,y.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):v[r.name]?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],h={},p={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=h[n],r?r.push(e):h[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=p[n],r?r.push(e):p[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return void f[n].callbacks.push(t);f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,i;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?i?i.append(t):(i=u(I,1),i.attr(r.forced_root_block_attrs),y.insert(i,t),i.append(t)):(e(i),i=null),t=n;e(i)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=h[t],i?i.push(r):h[t]=[r]),r}function m(e){var t,n,r,i,o=l.getBlockElements();for(t=e.prev;t&&3===t.type;){if(r=t.value.replace(D,""),r.length>0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,N,E,_,S,k,T,R,A=[],B,D,L,M,P,H,O,I;if(o=o||{},h={},p={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),H=l.children,k=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,P=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,M=/^[ \t\r\n]+$/,v=new n({validate:k,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=k?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=H[b.name],s&&H[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(_=p[a],_?_.push(r):p[a]=[r]);T[e]&&m(r),n||(b=r),!B&&P[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=k?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o}if(B&&P[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),k&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(S in h){for(_=d[S],C=h[S],N=C.length;N--;)C[N].parent||C.splice(N,1);for(x=0,w=_.length;w>x;x++)_[x](C,S,o)}for(x=0,w=f.length;w>x;x++)if(_=f[x],_.name in p){for(C=p[_.name],N=C.length;N--;)C[N].parent||C.splice(N,1);for(N=0,E=_.callbacks.length;E>N;N++)_.callbacks[N](C,_.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,h,p;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(h=l.getElementRule(c.name),h&&(h.removeEmpty?c.remove():h.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(p=new e("#text",3),p.value="\xa0",i.replace(p))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,c=s["*"],c&&c[o]&&(u=!0),c=s[n.name],!u&&c&&c[o]&&(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(M,[C,m],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(P,[M,B],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,h,p,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(h=0,p=m.attributesOrder.length;p>h;h++)u=m.attributesOrder[h],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(h=0,p=c.length;p>h;h++)u=c[h].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(H,[w,L,D,C,P,A,B,d,m,S],function(e,t,n,r,i,o,a,s,l,c){function u(e){function t(e){return e&&"br"===e.name}var n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var d=l.each,f=l.trim,h=e.DOM,p=["data-mce-selected"];return function(e,o){function m(e){var t=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","\\s?("+p.join("|")+')="[^"]+"'].join("|"),"gi");return e=c.trim(e.replace(t,""))}function g(){var e=o.getBody().innerHTML,t=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,r,i,a,s,l,c=o.schema;for(e=m(e),l=c.getShortEndedElements();s=t.exec(e);)i=t.lastIndex,a=s[0].length,r=l[s[1]]?i:n.findEndTag(c,e,i),e=e.substring(0,i-a)+e.substring(r),t.lastIndex=i-a;return f(e)}function v(e){-1===l.inArray(p,e)&&(C.addAttributeFilter(e,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),p.push(e))}var y,b,C;return o&&(y=o.dom,b=o.schema),y=y||h,b=b||new a(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,C=new t(e,b),C.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),C.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,s=e.url_converter,l=e.url_converter_scope,c;r--;)i=t[r],o=i.attributes.map[a],o!==c?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=y.serializeStyle(y.parseStyle(o),i.name):s&&(o=s.call(l,o,n,i.name)),i.attr(n,o.length>0?o:null))}),C.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),C.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),C.addNodeFilter("noscript",function(e){for(var t=e.length,n;t--;)n=e[t].firstChild,n&&(n.value=r.decode(n.value))}),C.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),C.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),C.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&C.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,"ul"!==r.name&&"ol"!==r.name||n.prev&&"li"===n.prev.name&&n.prev.append(n)}),C.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:b,addNodeFilter:C.addNodeFilter,addAttributeFilter:C.addAttributeFilter,serialize:function(t,n){var r=this,o,a,l,h,p,m;return s.ie&&y.select("script,style,select,map").length>0?(p=t.innerHTML,t=t.cloneNode(!1),y.setHTML(t,p)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(a=o.createHTMLDocument(""),d("BODY"==t.nodeName?t.childNodes:[t],function(e){a.body.appendChild(a.importNode(e,!0))}),t="BODY"!=t.nodeName?a.body.firstChild:a.body,l=y.doc,y.doc=a),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,r.onPreProcess(n)),m=C.parse(f(n.getInner?t.innerHTML:y.getOuterHTML(t)),n),u(m),h=new i(e,b),n.content=h.serialize(m),n.cleanup||(n.content=c.trim(n.content),n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||r.onPostProcess(n),l&&(y.doc=l),n.node=null,n.content},addRules:function(e){b.addValidElements(e)},setRules:function(e){b.setValidElements(e)},onPreProcess:function(e){o&&o.fire("PreProcess",e)},onPostProcess:function(e){o&&o.fire("PostProcess",e)},addTempAttr:v,trimHtml:m,getTrimmedContent:g}}}),r(O,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,p;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),t!=f&&t!=f.documentElement||(t=h,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(p=t.childNodes,p.length?(n>=p.length?i.insertAfter(a,p[p.length-1]):t.insertBefore(a,p[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,h=f.body,p,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=h.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=h.createControlRange(),a.addElement(m),a.select(),p=e.getRng(),p.item&&m===p.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(I,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(F,[I,m,u,d,_],function(e,t,n,r,i){function o(e,t){for(;t&&t!=e;){if(s(t)||a(t))return t;t=t.parentNode}return null}var a=i.isContentEditableFalse,s=i.isContentEditableTrue;return function(i,s){function l(e){var t=s.settings.object_resizing;return t===!1||r.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:e==s.getBody()?!1:s.dom.is(e,t))}function c(t){var n,r,i,o,a;n=t.screenX-L,r=t.screenY-M,U=n*B[2]+O,W=r*B[3]+I,U=5>U?5:U,W=5>W?5:W,i="IMG"==k.nodeName&&s.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==k.nodeName&&B[2]*B[3]!==0,i&&(j(n)>j(r)?(W=Y(U*F),U=Y(W/F)):(U=Y(W/F),W=Y(U*F))),_.setStyles(T,{width:U,height:W}),o=B.startPos.x+n,a=B.startPos.y+r,o=o>0?o:0,a=a>0?a:0,_.setStyles(R,{left:o,top:a,display:"block"}),R.innerHTML=U+" &times; "+W,B[2]<0&&T.clientWidth<=U&&_.setStyle(T,"left",P+(O-U)),B[3]<0&&T.clientHeight<=W&&_.setStyle(T,"top",H+(I-W)),n=X.scrollWidth-K,r=X.scrollHeight-G,n+r!==0&&_.setStyles(R,{left:o-n,top:a-r}),z||(s.fire("ObjectResizeStart",{target:k,width:O,height:I}),z=!0)}function u(){function e(e,t){t&&(k.style[e]||!s.schema.isValid(k.nodeName.toLowerCase(),e)?_.setStyle(k,e,t):_.setAttrib(k,e,t))}z=!1,e("width",U),e("height",W),_.unbind(V,"mousemove",c),_.unbind(V,"mouseup",u),$!=V&&(_.unbind($,"mousemove",c),_.unbind($,"mouseup",u)),_.remove(T),_.remove(R),q&&"TABLE"!=k.nodeName||d(k),s.fire("ObjectResized",{target:k,width:U,height:W}),_.setAttrib(k,"style",_.getAttrib(k,"style")),s.nodeChanged()}function d(e,t,n){var i,o,a,d,h;f(),x(),i=_.getPos(e,X),P=i.x,H=i.y,h=e.getBoundingClientRect(),o=h.width||h.right-h.left,a=h.height||h.bottom-h.top,k!=e&&(C(),k=e,U=W=0),d=s.fire("ObjectSelected",{target:e}),l(e)&&!d.isDefaultPrevented()?S(A,function(e,i){function s(t){L=t.screenX,M=t.screenY,O=k.clientWidth,I=k.clientHeight,F=I/O,B=e,e.startPos={x:o*e[0]+P,y:a*e[1]+H},K=X.scrollWidth,G=X.scrollHeight,T=k.cloneNode(!0),_.addClass(T,"mce-clonedresizable"),_.setAttrib(T,"data-mce-bogus","all"),T.contentEditable=!1,T.unSelectabe=!0,_.setStyles(T,{left:P,top:H,margin:0}),T.removeAttribute("data-mce-selected"),X.appendChild(T),_.bind(V,"mousemove",c),_.bind(V,"mouseup",u),$!=V&&(_.bind($,"mousemove",c),_.bind($,"mouseup",u)),R=_.add(X,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},O+" &times; "+I)}var l;return t?void(i==t&&s(n)):(l=_.get("mceResizeHandle"+i),l&&_.remove(l),l=_.add(X,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),r.ie&&(l.contentEditable=!1),_.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),s(e)}),e.elm=l,void _.setStyles(l,{left:o*e[0]+P-l.offsetWidth/2,top:a*e[1]+H-l.offsetHeight/2}))}):f(),k.setAttribute("data-mce-selected","1")}function f(){var e,t;x(),k&&k.removeAttribute("data-mce-selected");for(e in A)t=_.get("mceResizeHandle"+e),t&&(_.unbind(t),_.remove(t))}function h(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,r;if(!z&&!s.removed)return S(_.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),r="mousedown"==e.type?e.target:i.getNode(),r=_.$(r).closest(q?"table":"table,img,hr")[0],t(r,X)&&(w(),n=i.getStart(!0),t(n,r)&&t(i.getEnd(!0),r)&&(!q||r!=n&&"IMG"!==n.nodeName))?void d(r):void f()}function p(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function m(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function g(e){var t=e.srcElement,n,r,i,o,a,l,c;n=t.getBoundingClientRect(),l=D.clientX-n.left,c=D.clientY-n.top;for(r in A)if(i=A[r],o=t.offsetWidth*i[0],a=t.offsetHeight*i[1],j(o-l)<8&&j(a-c)<8){B=i;break}z=!0,s.fire("ObjectResizeStart",{target:k,width:k.clientWidth,height:k.clientHeight}),s.getDoc().selection.empty(),d(t,r,D)}function v(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function y(e){return a(o(s.getBody(),e))}function b(e){var t=e.srcElement;if(y(t))return void v(e);if(t!=k){if(s.fire("ObjectSelected",{target:t}),C(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);"IMG"!=t.nodeName&&"TABLE"!=t.nodeName||(f(),k=t,p(t,"resizestart",g))}}function C(){m(k,"resizestart",g)}function x(){for(var e in A){var t=A[e];t.elm&&(_.unbind(t.elm),delete t.elm)}}function w(){try{s.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function N(e){var t;if(q){t=V.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function E(){k=T=null,q&&(C(),m(X,"controlselect",b))}var _=s.dom,S=t.each,k,T,R,A,B,D,L,M,P,H,O,I,F,z,U,W,V=s.getDoc(),$=document,q=r.ie&&r.ie<11,j=Math.abs,Y=Math.round,X=s.getBody(),K,G;A={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var J=".mce-content-body";return s.contentStyles.push(J+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: box-sizing;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+J+" .mce-resizehandle:hover {background: #000}"+J+" img[data-mce-selected],"+J+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+J+" .mce-clonedresizable {position: absolute;"+(r.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+J+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),s.on("init",function(){q?(s.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(f(),N(e.target))}),p(X,"controlselect",b),s.on("mousedown",function(e){D=e})):(w(),r.ie>=11&&(s.on("mousedown click",function(e){var t=e.target,n=t.nodeName;z||!/^(TABLE|IMG|HR)$/.test(n)||y(t)||(s.selection.select(t,"TABLE"==n),"mousedown"==e.type&&s.nodeChanged())}),s.dom.bind(X,"mscontrolselect",function(e){function t(e){n.setEditorTimeout(s,function(){s.selection.select(e)})}return y(e.target)?(e.preventDefault(),void t(e.target)):void(/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&t(e.target)))})));var e=n.throttle(function(e){s.composing||h(e)});s.on("nodechange ResizeEditor ResizeWindow drop",e),s.on("keyup compositionend",function(t){k&&"TABLE"==k.nodeName&&e(t)}),s.on("hide blur",f)}),s.on("remove",x),{isResizable:l,showResizeRect:d,hideResizeRect:f,updateResizeRect:h,controlSelect:N,destroy:E}}}),r(z,[],function(){function e(e){return function(){return e}}function t(e){return function(t){return!e(t)}}function n(e,t){return function(n){return e(t(n))}}function r(){var e=a.call(arguments);return function(t){for(var n=0;n<e.length;n++)if(e[n](t))return!0;return!1}}function i(){var e=a.call(arguments);return function(t){for(var n=0;n<e.length;n++)if(!e[n](t))return!1; +return!0}}function o(e){var t=a.call(arguments);return t.length-1>=e.length?e.apply(this,t.slice(1)):function(){var e=t.concat([].slice.call(arguments));return o.apply(this,e)}}var a=[].slice;return{constant:e,negate:t,and:i,or:r,curry:o,compose:n}}),r(U,[_,p,k],function(e,t,n){function r(e){return m(e)?!1:d(e)?!f(e.parentNode):h(e)||u(e)||p(e)||c(e)}function i(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode){if(c(e))return!1;if(l(e))return!0}return!0}function o(e){return c(e)?t.reduce(e.getElementsByTagName("*"),function(e,t){return e||l(t)},!1)!==!0:!1}function a(e){return h(e)||o(e)}function s(e,t){return r(e)&&i(e,t)}var l=e.isContentEditableTrue,c=e.isContentEditableFalse,u=e.isBr,d=e.isText,f=e.matchNodeNames("script style textarea"),h=e.matchNodeNames("img input textarea hr iframe video audio object"),p=e.matchNodeNames("table"),m=n.isCaretContainer;return{isCaretCandidate:r,isInEditable:i,isAtomic:a,isEditableCaretCandidate:s}}),r(W,[],function(){function e(e){return e?{left:u(e.left),top:u(e.top),bottom:u(e.bottom),right:u(e.right),width:u(e.width),height:u(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function t(t,n){return t=e(t),n?t.right=t.left:(t.left=t.left+t.width,t.right=t.left),t.width=0,t}function n(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}function r(e,t,n){return e>=0&&e<=Math.min(t.height,n.height)/2}function i(e,t){return e.bottom<t.top?!0:e.top>t.bottom?!1:r(t.top-e.bottom,e,t)}function o(e,t){return e.top>t.bottom?!0:e.bottom<t.top?!1:r(t.bottom-e.top,e,t)}function a(e,t){return e.left<t.left}function s(e,t){return e.right>t.right}function l(e,t){return i(e,t)?-1:o(e,t)?1:a(e,t)?-1:s(e,t)?1:0}function c(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}var u=Math.round;return{clone:e,collapse:t,isEqual:n,isAbove:i,isBelow:o,isLeft:a,isRight:s,compare:l,containsXY:c}}),r(V,[],function(){function e(e){return"string"==typeof e&&e.charCodeAt(0)>=768&&t.test(e)}var t=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]");return{isExtendingChar:e}}),r($,[z,_,w,T,U,W,V],function(e,t,n,r,i,o,a){function s(e){return"createRange"in e?e.createRange():n.DOM.createRng()}function l(e){return e&&/[\r\n\t ]/.test(e)}function c(e){var t=e.startContainer,n=e.startOffset,r;return!!(l(e.toString())&&v(t.parentNode)&&(r=t.data,l(r[n-1])||l(r[n+1])))}function u(e){function t(e){var t=e.ownerDocument,n=s(t),r=t.createTextNode("\xa0"),i=e.parentNode,a;return i.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1),a=o.clone(n.getBoundingClientRect()),i.removeChild(r),a}function n(e){var n,r;return r=e.getClientRects(),n=r.length>0?o.clone(r[0]):o.clone(e.getBoundingClientRect()),b(e)&&0===n.left?t(e):n}function r(e,t){return e=o.collapse(e,t),e.width=1,e.right=e.left+1,e}function i(e){0!==e.height&&(u.length>0&&o.isEqual(e,u[u.length-1])||u.push(e))}function l(e,t){var o=s(e.ownerDocument);if(t<e.data.length){if(a.isExtendingChar(e.data[t]))return u;if(a.isExtendingChar(e.data[t-1])&&(o.setStart(e,t),o.setEnd(e,t+1),!c(o)))return i(r(n(o),!1)),u}t>0&&(o.setStart(e,t-1),o.setEnd(e,t),c(o)||i(r(n(o),!1))),t<e.data.length&&(o.setStart(e,t),o.setEnd(e,t+1),c(o)||i(r(n(o),!0)))}var u=[],d,h;if(y(e.container()))return l(e.container(),e.offset()),u;if(f(e.container()))if(e.isAtEnd())h=x(e.container(),e.offset()),y(h)&&l(h,h.data.length),g(h)&&!b(h)&&i(r(n(h),!1));else{if(h=x(e.container(),e.offset()),y(h)&&l(h,0),g(h)&&e.isAtEnd())return i(r(n(h),!1)),u;d=x(e.container(),e.offset()-1),g(d)&&!b(d)&&(p(d)||p(h)||!g(h))&&i(r(n(d),!1)),g(h)&&i(r(n(h),!0))}return u}function d(t,n,r){function i(){return y(t)?0===n:0===n}function o(){return y(t)?n>=t.data.length:n>=t.childNodes.length}function a(){var e;return e=s(t.ownerDocument),e.setStart(t,n),e.setEnd(t,n),e}function l(){return r||(r=u(new d(t,n))),r}function c(){return l().length>0}function f(e){return e&&t===e.container()&&n===e.offset()}function h(e){return x(t,e?n-1:n)}return{container:e.constant(t),offset:e.constant(n),toRange:a,getClientRects:l,isVisible:c,isAtStart:i,isAtEnd:o,isEqual:f,getNode:h}}var f=t.isElement,h=i.isCaretCandidate,p=t.matchStyleValues("display","block table"),m=t.matchStyleValues("float","left right"),g=e.and(f,h,e.negate(m)),v=e.negate(t.matchStyleValues("white-space","pre pre-line pre-wrap")),y=t.isText,b=t.isBr,C=n.nodeIndex,x=r.getNode;return d.fromRangeStart=function(e){return new d(e.startContainer,e.startOffset)},d.fromRangeEnd=function(e){return new d(e.endContainer,e.endOffset)},d.after=function(e){return new d(e.parentNode,C(e)+1)},d.before=function(e){return new d(e.parentNode,C(e))},d}),r(q,[_,w,z,p,$],function(e,t,n,r,i){function o(e){var t=e.parentNode;return v(t)?o(t):t}function a(e){return e?r.reduce(e.childNodes,function(e,t){return v(t)&&"BR"!=t.nodeName?e=e.concat(a(t)):e.push(t),e},[]):[]}function s(e,t){for(;(e=e.previousSibling)&&g(e);)t+=e.data.length;return t}function l(e){return function(t){return e===t}}function c(t){var n,i,s;return n=a(o(t)),i=r.findIndex(n,l(t),t),n=n.slice(0,i+1),s=r.reduce(n,function(e,t,r){return g(t)&&g(n[r-1])&&e++,e},0),n=r.filter(n,e.matchNodeNames(t.nodeName)),i=r.findIndex(n,l(t),t),i-s}function u(e){var t;return t=g(e)?"text()":e.nodeName.toLowerCase(),t+"["+c(e)+"]"}function d(e,t,n){var r=[];for(t=t.parentNode;t!=e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}function f(t,i){var o,a,l=[],c,f,h;return o=i.container(),a=i.offset(),g(o)?c=s(o,a):(f=o.childNodes,a>=f.length?(c="after",a=f.length-1):c="before",o=f[a]),l.push(u(o)),h=d(t,o),h=r.filter(h,n.negate(e.isBogus)),l=l.concat(r.map(h,function(e){return u(e)})),l.reverse().join("/")+","+c}function h(t,n,i){var o=a(t);return o=r.filter(o,function(e,t){return!g(e)||!g(o[t-1])}),o=r.filter(o,e.matchNodeNames(n)),o[i]}function p(e,t){for(var n=e,r=0,o;g(n);){if(o=n.data.length,t>=r&&r+o>=t){e=n,t-=r;break}if(!g(n.nextSibling)){e=n,t=o;break}r+=o,n=n.nextSibling}return t>e.data.length&&(t=e.data.length),new i(e,t)}function m(e,t){var n,o,a;return t?(n=t.split(","),t=n[0].split("/"),a=n.length>1?n[1]:"before",o=r.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),h(e,t[1],parseInt(t[2],10))):null},e),o?g(o)?p(o,parseInt(a,10)):(a="after"===a?y(o)+1:y(o),new i(o.parentNode,a)):null):null}var g=e.isText,v=e.isBogus,y=t.nodeIndex;return{create:f,resolve:m}}),r(j,[d,m,k,q,$,_],function(e,t,n,r,i,o){function a(a){var l=a.dom;this.getBookmark=function(e,c){function u(e,n){var r=0;return t.each(l.select(e),function(e){return"all"!==e.getAttribute("data-mce-bogus")?e==n?!1:void r++:void 0}),r}function d(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function f(e){function t(e,t){var r=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],o=[],a,s,u=0;if(3==r.nodeType){if(c)for(a=r.previousSibling;a&&3==a.nodeType;a=a.previousSibling)i+=a.nodeValue.length;o.push(i)}else s=r.childNodes,i>=s.length&&s.length&&(u=1,i=Math.max(0,s.length-1)),o.push(l.nodeIndex(s[i],c)+u);for(;r&&r!=n;r=r.parentNode)o.push(l.nodeIndex(r,c));return o}var n=l.getRoot(),r={};return r.start=t(e,!0),a.isCollapsed()||(r.end=t(e)),r}function h(e){function t(e){var t;if(n.isCaretContainer(e)){if(o.isText(e)&&n.isCaretContainerBlock(e)&&(e=e.parentNode),t=e.previousSibling,s(t))return t;if(t=e.nextSibling,s(t))return t}}return t(e.startContainer)||t(e.endContainer)}var p,m,g,v,y,b,C="&#xFEFF;",x;if(2==e)return b=a.getNode(),y=b?b.nodeName:null,p=a.getRng(),s(b)||"IMG"==y?{name:y,index:u(y,b)}:a.tridentSel?a.tridentSel.getBookmark(e):(b=h(p),b?(y=b.tagName,{name:y,index:u(y,b)}):f(p));if(3==e)return p=a.getRng(),{start:r.create(l.getRoot(),i.fromRangeStart(p)),end:r.create(l.getRoot(),i.fromRangeEnd(p))};if(e)return{rng:a.getRng()};if(p=a.getRng(),g=l.uniqueId(),v=a.isCollapsed(),x="overflow:hidden;line-height:0px",p.duplicate||p.item){if(p.item)return b=p.item(0),y=b.nodeName,{name:y,index:u(y,b)};m=p.duplicate();try{p.collapse(),p.pasteHTML('<span data-mce-type="bookmark" id="'+g+'_start" style="'+x+'">'+C+"</span>"),v||(m.collapse(!1),p.moveToElementText(m.parentElement()),0===p.compareEndPoints("StartToEnd",m)&&m.move("character",-1),m.pasteHTML('<span data-mce-type="bookmark" id="'+g+'_end" style="'+x+'">'+C+"</span>"))}catch(w){return null}}else{if(b=a.getNode(),y=b.nodeName,"IMG"==y)return{name:y,index:u(y,b)};m=d(p.cloneRange()),v||(m.collapse(!1),m.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_end",style:x},C))),p=d(p),p.collapse(!0),p.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_start",style:x},C))}return a.moveToBookmark({id:g,keep:1}),{id:g}},this.moveToBookmark=function(n){function i(e){var t=n[e?"start":"end"],r,i,o,a;if(t){for(o=t[0],i=d,r=t.length-1;r>=1;r--){if(a=i.childNodes,t[r]>a.length-1)return;i=a[t[r]]}3===i.nodeType&&(o=Math.min(t[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(t[0],i.childNodes.length)),e?u.setStart(i,o):u.setEnd(i,o)}return!0}function o(r){var i=l.get(n.id+"_"+r),o,a,s,c,u=n.keep;if(i&&(o=i.parentNode,"start"==r?(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),f=h=o,p=m=a):(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),h=o,m=a),!u)){for(c=i.previousSibling,s=i.nextSibling,t.each(t.grep(i.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});i=l.get(n.id+"_"+r);)l.remove(i,1);c&&s&&c.nodeType==s.nodeType&&3==c.nodeType&&!e.opera&&(a=c.nodeValue.length,c.appendData(s.nodeValue),l.remove(s),"start"==r?(f=h=c,p=m=a):(h=c,m=a))}}function s(t){return!l.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}function c(){var e,t;return e=l.createRng(),t=r.resolve(l.getRoot(),n.start),e.setStart(t.container(),t.offset()),t=r.resolve(l.getRoot(),n.end),e.setEnd(t.container(),t.offset()),e}var u,d,f,h,p,m;if(n)if(t.isArray(n.start)){if(u=l.createRng(),d=l.getRoot(),a.tridentSel)return a.tridentSel.moveToBookmark(n);i(!0)&&i()&&a.setRng(u)}else"string"==typeof n.start?a.setRng(c(n)):n.id?(o("start"),o("end"),f&&(u=l.createRng(),u.setStart(s(f),p),u.setEnd(s(h),m),a.setRng(u))):n.name?a.select(l.select(n.name)[n.index]):n.rng&&a.setRng(n.rng)}}var s=o.isContentEditableFalse;return a.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},a}),r(Y,[y,O,F,T,j,_,d,m,$],function(e,n,r,i,o,a,s,l,c){function u(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var d=l.each,f=l.trim,h=s.ie;return u.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a,s,l;if(!n.win)return null;if(a=n.win.document,!e&&n.lastFocusBookmark){var c=n.lastFocusBookmark;return c.startContainer?(i=a.createRange(),i.setStart(c.startContainer,c.startOffset),i.setEnd(c.endContainer,c.endOffset)):i=c,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(u){}if(l=n.editor.fire("GetSelectionRange",{range:i}),l.range!==i)return l.range;if(h&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(u){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i,o;if(e)if(e.select){n.explicitRange=null;try{e.select()}catch(a){}}else if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(a){}}else{if(r=n.getSel(),o=n.editor.fire("SetSelectionRange",{range:e}),e=o.range,r){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(a){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||s.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&n.getSel().setBaseAndExtent(i,0,i,1))}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i,o,a,s,l=t.dom.getRoot();return n?(i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r)):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return s.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};d(n.selectorChangedData,function(e,t){d(o,function(n){return i.is(n,t)?(r[t]||(d(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),d(r,function(e,n){a[n]||(delete r[n],d(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){function n(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var r,i,o=this,s=o.dom,l=s.getRoot(),c,u,d=0;if(a.isElement(e)){if(t===!1&&(d=e.offsetHeight),"BODY"!=l.nodeName){var f=o.getScrollContainer();if(f)return r=n(e).y-n(f).y+d,u=f.clientHeight,c=f.scrollTop,void((c>r||r+25>c+u)&&(f.scrollTop=c>r?r:r-u+25))}i=s.getViewPort(o.editor.getWin()),r=s.getPos(e).y+d,c=i.y,u=i.h,(r<i.y||r+25>c+u)&&o.editor.getWin().scrollTo(0,c>r?r:r-u+25)}},placeCaretAt:function(e,t){this.setRng(i.getCaretRangeFromPoint(e,t,this.editor.getDoc()))},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),a=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==f(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(s.ie&&s.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},getBoundingClientRect:function(){var e=this.getRng();return e.collapsed?c.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){this.win=null,this.controlSelection.destroy()}},u}),r(X,[j,m],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&"data-mce-style"!==i&&"data-mce-fragment"!=i&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(K,[m],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(G,[p,_,g],function(e,t,n){function r(e,t){var n=o[e];n||(o[e]=n=[]),o[e].push(t)}function i(e,t){s(o[e],function(e){e(t)})}var o=[],a=e.filter,s=e.each;return r("pre",function(r){function i(t){return c(t.previousSibling)&&-1!=e.indexOf(u,t.previousSibling)}function o(e,t){n(t).remove(),n(e).append("<br><br>").append(t.childNodes)}var l=r.selection.getRng(),c,u;c=t.matchNodeNames("pre"),l.collapsed||(u=r.selection.getSelectedBlocks(),s(a(a(u,c),i),function(e){o(e.previousSibling,e)}))}),{postProcess:i}}),r(J,[y,T,j,X,m,K,G],function(e,t,n,r,i,o,a){return function(s){function l(e){return e.nodeType&&(e=e.nodeName),!!s.schema.getTextBlockElements()[e.toLowerCase()]}function c(e){return/^(TH|TD)$/.test(e.nodeName)}function u(e){return e&&/^(IMG)$/.test(e.nodeName)}function d(e,t){return Y.getParents(e,t,Y.getRoot())}function f(e){return 1===e.nodeType&&"_mce_caret"===e.id}function h(){g({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){ue(n,function(t,n){Y.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),ue("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){g(e,{block:e,remove:"all"})}),g(s.settings.formats)}function p(){s.addShortcut("meta+b","bold_desc","Bold"),s.addShortcut("meta+i","italic_desc","Italic"),s.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)s.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);s.addShortcut("access+7","",["FormatBlock",!1,"p"]),s.addShortcut("access+8","",["FormatBlock",!1,"div"]),s.addShortcut("access+9","",["FormatBlock",!1,"address"])}function m(e){return e?j[e]:j}function g(e,t){e&&("string"!=typeof e?ue(e,function(e,t){g(t,e)}):(t=t.length?t:[t],ue(t,function(e){e.deep===oe&&(e.deep=!e.selector),e.split===oe&&(e.split=!e.selector||e.inline),e.remove===oe&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),j[e]=t))}function v(e){return e&&j[e]&&delete j[e],j}function y(e,t){var n=m(t);if(n)for(var r=0;r<n.length;r++)if(n[r].inherit===!1&&Y.is(e,n[r].selector))return!0;return!1}function b(e){var t;return s.dom.getParent(e,function(e){return t=s.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function C(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=b(e.parentNode),s.dom.getStyle(e,"color")&&t?s.dom.setStyle(e,"text-decoration",t):s.dom.getStyle(e,"text-decoration")===t&&s.dom.setStyle(e,"text-decoration",null))}function x(t,n,r){function i(e,t){if(t=t||d,e){if(t.onformat&&t.onformat(e,t,n,r),ue(t.styles,function(t,r){Y.setStyle(e,r,M(t,n))}),t.styles){var i=Y.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}ue(t.attributes,function(t,r){Y.setAttrib(e,r,M(t,n))}),ue(t.classes,function(t){t=M(t,n),Y.hasClass(e,t)||Y.addClass(e,t)})}}function o(){function t(t,n){var i=new e(n);for(r=i.prev2();r;r=i.prev2()){if(3==r.nodeType&&r.data.length>0)return r;if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}}var n=s.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var a=t(i,o),l=3==a.nodeType?a.data.length:a.childNodes.length;n.setEnd(a,l)}return n}function c(e,r,o){var a=[],s,c,h=!0;s=d.inline||d.block,c=Y.create(s),i(c),K.walk(e,function(e){function r(e){var m,v,y,b,C;return C=h,m=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&ae(e)&&(C=h,h="true"===ae(e),b=!0),B(m,"br")?(p=0,void(d.block&&Y.remove(e))):d.wrapper&&E(e,t,n)?void(p=0):h&&!b&&d.block&&!d.wrapper&&l(m)&&G(v,s)?(e=Y.rename(e,s),i(e),a.push(e),void(p=0)):d.selector&&(ue(u,function(t){return"collapsed"in t&&t.collapsed!==g?void 0:Y.is(e,t.selector)&&!f(e)?(i(e,t),y=!0,!1):void 0}),!d.inline||y)?void(p=0):void(!h||b||!G(s,m)||!G(v,s)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||f(e)||d.inline&&J(e)?(p=0,ue(de(e.childNodes),r),b&&(h=C),p=0):(p||(p=Y.clone(c,ne),e.parentNode.insertBefore(p,e),a.push(p)),p.appendChild(e)))}var p;ue(e,r)}),d.links===!0&&ue(a,function(e){function t(e){"A"===e.nodeName&&i(e,d),ue(de(e.childNodes),t)}t(e)}),ue(a,function(e){function r(e){var t=0;return ue(e.childNodes,function(e){P(e)||ce(e)||t++}),t}function o(e){var t,n;return ue(e.childNodes,function(e){return 1!=e.nodeType||ce(e)||f(e)?void 0:(t=e,ne)}),t&&!ce(t)&&A(t,d)&&(n=Y.clone(t,ne),i(n),Y.replace(n,e,re),Y.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!J(e))&&0===s)return void Y.remove(e,1);if(d.inline||d.wrapper){if(d.exact||1!==s||(e=o(e)),ue(u,function(t){ue(Y.select(t.inline,e),function(e){ce(e)||F(t,n,e,t.exact?e:null)})}),E(e.parentNode,t,n))return Y.remove(e,1),e=0,re;d.merge_with_parents&&Y.getParent(e.parentNode,function(r){return E(r,t,n)?(Y.remove(e,1),e=0,re):void 0}),e&&d.merge_siblings!==!1&&(e=W(U(e),e),e=W(e,U(e,re)))}})}var u=m(t),d=u[0],h,p,g=!r&&X.isCollapsed();if("false"!==ae(X.getNode())){if(d){if(r)r.nodeType?(p=Y.createRng(),p.setStartBefore(r),p.setEndAfter(r),c(O(p,u),null,!0)):c(r,null,!0);else if(g&&d.inline&&!Y.select("td[data-mce-selected],th[data-mce-selected]").length)$("apply",t,n);else{var v=s.selection.getNode();Q||!u[0].defaultBlock||Y.getParent(v,Y.isBlock)||x(u[0].defaultBlock),s.selection.setRng(o()),h=X.getBookmark(),c(O(X.getRng(re),u),h),d.styles&&(d.styles.color||d.styles.textDecoration)&&(fe(v,C,"childNodes"),C(v)),X.moveToBookmark(h),q(X.getRng(re)),s.nodeChanged()}a.postProcess(t,s)}}else{r=X.getNode();for(var y=0,b=u.length;b>y;y++)if(u[y].ceFalseOverride&&Y.is(r,u[y].selector))return void i(r,u[y])}}function w(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&ae(e)&&(a=y,y="true"===ae(e),s=!0),n=de(e.childNodes),y&&!s)for(r=0,o=h.length;o>r&&!F(h[r],t,e,e);r++);if(p.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(y=a)}}function o(n){var i;return ue(d(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=E(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function a(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){ +for(a=Y.clone(o,ne),c=0;c<h.length;c++)if(F(h[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||p.mixed&&J(e)||(n=Y.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function l(e){return a(o(e),e,e,!0)}function u(e){var t=Y.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return ce(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),Y.remove(t,!0),n}function f(e){var t,n,r=e.commonAncestorContainer;if(e=O(e,h,re),p.split){if(t=V(e,re),n=V(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&c(n)&&n.firstChild&&(n=n.firstChild||n),Y.isChildOf(t,n)&&!J(n)&&!c(t)&&!c(n))return t=H(t,"span",{id:"_start","data-mce-type":"bookmark"}),l(t),void(t=u(re));t=H(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=H(n,"span",{id:"_end","data-mce-type":"bookmark"}),l(t),l(n),t=u(re),n=u()}else t=n=l(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=Z(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=Z(n)+1}K.walk(e,function(e){ue(e,function(e){i(e),1===e.nodeType&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===b(e.parentNode)&&F({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var h=m(e),p=h[0],g,v,y=!0;if(n)return void(n.nodeType?(v=Y.createRng(),v.setStartBefore(n),v.setEndAfter(n),f(v)):f(n));if("false"!==ae(X.getNode()))X.isCollapsed()&&p.inline&&!Y.select("td[data-mce-selected],th[data-mce-selected]").length?$("remove",e,t,r):(g=X.getBookmark(),f(X.getRng(re)),X.moveToBookmark(g),p.inline&&_(e,t,X.getStart())&&q(X.getRng(!0)),s.nodeChanged());else{n=X.getNode();for(var C=0,x=h.length;x>C&&(!h[C].ceFalseOverride||!F(h[C],t,n,n));C++);}}function N(e,t,n){var r=m(e);!_(e,t,n)||"toggle"in r[0]&&!r[0].toggle?x(e,t,n):w(e,t,n)}function E(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===oe){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?Y.getAttrib(e,o):D(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!B(a,L(M(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?Y.getAttrib(e,s[l]):D(e,s[l]))return t;return t}var o=m(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],A(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!Y.hasClass(e,l[s]))return;return a}}function _(e,t,n){function r(n){var r=Y.getRoot();return n===r?!1:(n=Y.getParent(n,function(n){return y(n,e)?!0:n.parentNode===r||!!E(n,e,t,!0)}),E(n,e,t))}var i;return n?r(n):(n=X.getNode(),r(n)?re:(i=X.getStart(),i!=n&&r(i)?re:ne))}function S(e,t){var n,r=[],i={};return n=X.getStart(),Y.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&E(n,a,t)&&(i[a]=!0,r.push(a))},Y.getRoot()),r}function k(e){var t=m(e),n,r,i,o,a;if(t)for(n=X.getStart(),r=d(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return re;for(i=r.length-1;i>=0;i--)if(Y.is(r[i],a))return re}return ne}function T(e,t,n){var r;return ie||(ie={},r={},s.on("NodeChange",function(e){var t=d(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),ue(ie,function(e,i){ue(t,function(o){return E(o,i,{},e.similar)?(r[i]||(ue(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):y(o,i)?!1:void 0})}),ue(r,function(i,o){n[o]||(delete r[o],ue(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),ue(e.split(","),function(e){ie[e]||(ie[e]=[],ie[e].similar=n),ie[e].push(t)}),this}function R(e){return o.getCssText(s,e)}function A(e,t){return B(e,t.inline)?re:B(e,t.block)?re:t.selector?1==e.nodeType&&Y.is(e,t.selector):void 0}function B(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function D(e,t){return L(Y.getStyle(e,t),t)}function L(e,t){return"color"!=t&&"backgroundColor"!=t||(e=Y.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function M(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function P(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function H(e,t,n){var r=Y.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function O(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=Y.getRoot(),3==r.nodeType&&!P(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&J(i))return i;for(o=i[a];o;o=o[a])if(!ce(o)&&!P(o)&&!t(o))return i;if(i==s||i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===oe&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function a(e){for(var t=e;t;){if(1===t.nodeType&&ae(t))return"false"===ae(t)?t:e;t=t.parentNode}return e}function c(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var a,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(a=new e(t,Y.getParent(t,J)||s.getBody());l=a[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(J(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function u(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=d(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&Y.is(i[o],s.selector))return i[o];return e}function f(e,t){var r,i=Y.getRoot();if(n[0].wrapper||(r=Y.getParent(e,n[0].block,i)),r||(r=Y.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&l(e)})),r&&n[0].wrapper&&(r=d(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!J(r[t])&&(r=r[t],!B(r,"br")););return r||e}var h,p,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(h=g.childNodes.length-1,g=g.childNodes[v>h?h:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(h=y.childNodes.length-1,y=y.childNodes[b>h?h:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=a(g),y=a(y),(ce(g.parentNode)||ce(g))&&(g=ce(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(ce(y.parentNode)||ce(y))&&(y=ce(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=c(g,v,!0),m&&(g=m.container,v=m.offset),m=c(y,b),m&&(y=m.container,b=m.offset)),p=o(y,b),p.node)){for(;p.node&&0===p.offset&&p.node.previousSibling;)p=o(p.node.previousSibling);p.node&&p.offset>0&&3===p.node.nodeType&&" "===p.node.nodeValue.charAt(p.offset-1)&&p.offset>1&&(y=p.node,y.splitText(p.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==ne&&!n[0].inline&&(g=u(g,"previousSibling"),y=u(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(J(g)||(g=i(!0)),J(y)||(y=i()))),1==g.nodeType&&(v=Z(g),g=g.parentNode),1==y.nodeType&&(b=Z(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function I(e,t){return t.links&&"A"==e.tagName}function F(e,t,n,r){var i,o,a;if(!A(n,e)&&!I(n,e))return ne;if("all"!=e.remove)for(ue(e.styles,function(i,o){i=L(M(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||B(D(r,o),i))&&Y.setStyle(n,o,""),a=1}),a&&""===Y.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),ue(e.attributes,function(e,i){var o;if(e=M(e,t),"number"==typeof i&&(i=e,r=0),!r||B(Y.getAttrib(r,i),e)){if("class"==i&&(e=Y.getAttrib(n,i),e&&(o="",ue(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void Y.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),te.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),ue(e.classes,function(e){e=M(e,t),r&&!Y.hasClass(r,e)||Y.removeClass(n,e)}),o=Y.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return ne;return"none"!=e.remove?(z(n,e),re):void 0}function z(e,t){function n(e,t,n){return e=U(e,t,n),!e||"BR"==e.nodeName||J(e)}var r=e.parentNode,i;t.block&&(Q?r==Y.getRoot()&&(t.list_block&&B(e,t.list_block)||ue(de(e.childNodes),function(e){G(Q,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=H(e,Q),Y.setAttribs(i,s.settings.forced_root_block_attrs)):i=0})):J(e)&&!J(r)&&(n(e,ne)||n(e.firstChild,re,1)||e.insertBefore(Y.create("br"),e.firstChild),n(e,re)||n(e.lastChild,ne,1)||e.appendChild(Y.create("br")))),t.selector&&t.inline&&!B(t.inline,e)||Y.remove(e,1)}function U(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!P(e))return e}function W(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!ce(i))return i}return e}var i,o,a=new r(Y);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return Y.remove(t),ue(de(t.childNodes),function(t){e.appendChild(t)}),e}return t}function V(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,s.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,s.getBody()).prev()||r),r}function $(t,n,r,i){function o(e){var t=Y.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(s.getDoc().createTextNode(ee)),t}function a(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==ee||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=X.getRng(!0),a(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),Y.remove(e)):(n=u(e),n.nodeValue.charAt(0)===ee&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),Y.remove(e,1)),X.setRng(r);else if(e=c(X.getStart()),!e)for(;e=Y.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=X.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(X.getStart()),t&&(i=u(t)),d&&a>0&&a<d.length&&/\w/.test(d.charAt(a))&&/\w/.test(d.charAt(a-1))?(s=X.getBookmark(),e.collapse(!0),e=O(e,m(n)),e=K.split(e),x(n,r,e),X.moveToBookmark(s)):(t&&i.nodeValue===ee?x(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,x(n,r,t)),X.setCursorLocation(i,a))}function h(){var e=X.getRng(!0),t,a,s,c,u,d,f=[],h,p;for(t=e.startContainer,a=e.startOffset,u=t,3==t.nodeType&&(a!=t.nodeValue.length&&(c=!0),u=u.parentNode);u;){if(E(u,n,r,i)){d=u;break}u.nextSibling&&(c=!0),f.push(u),u=u.parentNode}if(d)if(c)s=X.getBookmark(),e.collapse(!0),e=O(e,m(n),!0),e=K.split(e),w(n,r,e),X.moveToBookmark(s);else{for(p=o(),u=p,h=f.length-1;h>=0;h--)u.appendChild(Y.clone(f[h],!1)),u=u.firstChild;u.appendChild(Y.doc.createTextNode(ee)),u=u.firstChild;var g=Y.getParent(d,l);g&&Y.isEmpty(g)?d.parentNode.replaceChild(p,d):Y.insertAfter(p,d),X.setCursorLocation(u,1),Y.isEmpty(d)&&Y.remove(d)}}function p(){var e;e=c(X.getStart()),e&&!Y.isEmpty(e)&&fe(e,function(e){1!=e.nodeType||e.id===g||Y.isEmpty(e)||Y.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=s.settings.caret_debug;s._hasCaretEvents||(le=function(){var e=[],t;if(a(c(X.getStart()),e))for(t=e.length;t--;)Y.setAttrib(e[t],"data-mce-bogus","1")},se=function(e){var t=e.keyCode;d(),8==t&&X.isCollapsed()&&X.getStart().innerHTML==ee&&d(c(X.getStart())),37!=t&&39!=t||d(c(X.getStart())),p()},s.on("SetContent",function(e){e.selection&&p()}),s._hasCaretEvents=!0),"apply"==t?f():h()}function q(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!u(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=Z(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,Y.getParent(n,Y.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!P(a))return l=Y.create("a",{"data-mce-bogus":"all"},ee),a.parentNode.insertBefore(l,a),t.setStart(a,0),X.setRng(t),void Y.remove(l)}var j={},Y=s.dom,X=s.selection,K=new t(Y),G=s.schema.isValidChild,J=Y.isBlock,Q=s.settings.forced_root_block,Z=Y.nodeIndex,ee="\ufeff",te=/^(src|href|style)$/,ne=!1,re=!0,ie,oe,ae=Y.getContentEditable,se,le,ce=n.isBookmarkNode,ue=i.each,de=i.grep,fe=i.walk,he=i.extend;he(this,{get:m,register:g,unregister:v,apply:x,remove:w,toggle:N,match:_,matchAll:S,matchNode:E,canApply:k,formatChanged:T,getCssText:R}),h(),p(),s.on("BeforeGetContent",function(e){le&&"raw"!=e.format&&le()}),s.on("mouseup keydown",function(e){se&&se(e)})}}),r(Q,[I,d],function(e,t){return function(e){function n(){return e.serializer.getTrimmedContent()}function r(t){e.setDirty(t)}function i(e){o.typing=!1,o.add({},e)}var o=this,a=0,s=[],l,c,u=0;return e.on("init",function(){o.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&o.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&i(e)}),e.on("ObjectResizeStart Cut",function(){o.beforeChange()}),e.on("SaveContent ObjectResized blur",i),e.on("DragEnd",i),e.on("KeyUp",function(a){var l=a.keyCode;a.isDefaultPrevented()||((l>=33&&36>=l||l>=37&&40>=l||45==l||13==l||a.ctrlKey)&&(i(),e.nodeChanged()),(46==l||8==l||t.mac&&(91==l||93==l))&&e.nodeChanged(),c&&o.typing&&(e.isDirty()||(r(s[0]&&n()!=s[0].content),e.isDirty()&&e.fire("change",{level:s[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(o.typing&&i(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||o.typing||n||(o.beforeChange(),o.typing=!0,o.add({},e),c=!0)}}),e.on("MouseDown",function(e){o.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),o={data:s,typing:!1,beforeChange:function(){u||(l=e.selection.getBookmark(2,!0))},add:function(t,i){var o,c=e.settings,d;if(t=t||{},t.content=n(),u||e.removed)return null;if(d=s[a],e.fire("BeforeAddUndo",{level:t,lastLevel:d,originalEvent:i}).isDefaultPrevented())return null;if(d&&d.content==t.content)return null;if(s[a]&&(s[a].beforeBookmark=l),c.custom_undo_redo_levels&&s.length>c.custom_undo_redo_levels){for(o=0;o<s.length-1;o++)s[o]=s[o+1];s.length--,a=s.length}t.bookmark=e.selection.getBookmark(2,!0),a<s.length-1&&(s.length=a+1),s.push(t),a=s.length-1;var f={level:t,lastLevel:d,originalEvent:i};return e.fire("AddUndo",f),a>0&&(r(!0),e.fire("change",f)),t},undo:function(){var t;return o.typing&&(o.add(),o.typing=!1),a>0&&(t=s[--a],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),r(!0),e.fire("undo",{level:t})),t},redo:function(){var t;return a<s.length-1&&(t=s[++a],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.bookmark),r(!0),e.fire("redo",{level:t})),t},clear:function(){s=[],a=0,o.typing=!1,o.data=s,e.fire("ClearUndos")},hasUndo:function(){return a>0||o.typing&&s[0]&&n()!=s[0].content},hasRedo:function(){return a<s.length-1&&!this.typing},transact:function(e){o.beforeChange();try{u++,e()}finally{u--}return o.add()},extra:function(t,n){var r,i;o.transact(t)&&(i=s[a].bookmark,r=s[a-1],e.setContent(r.content,{format:"raw"}),e.selection.moveToBookmark(r.beforeBookmark),o.transact(n)&&(s[a-1].beforeBookmark=i))}}}}),r(Z,[y,T,d],function(e,t,n){var r=n.ie&&n.ie<11;return function(i){function o(o){function h(e){return e&&a.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==a.getContentEditable(e)}function p(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function m(e){var t;a.isBlock(e)&&(t=s.getRng(),e.appendChild(a.create("span",null,"\xa0")),s.select(e),e.lastChild.outerHTML="",s.setRng(t))}function g(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(a.isBlock(t))return;1!=t.nodeType||d[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?a.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&a.remove(t)}}function v(t){function r(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,l,c=t,u;if(t){if(n.ie&&n.ie<9&&M&&M.firstChild&&M.firstChild==M.lastChild&&"BR"==M.firstChild.tagName&&a.remove(M.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var d=r(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(l=a.createRng(),n.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){l.setStart(o,0),l.setEnd(o,0);break}if(f[o.nodeName.toLowerCase()]){l.setStartBefore(o),l.setEndBefore(o);break}c=o,o=i.next()}o||(l.setStart(c,0),l.setEnd(c,0))}else"BR"==t.nodeName?t.nextSibling&&a.isBlock(t.nextSibling)?((!P||9>P)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function y(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function b(e){e.innerHTML=r?"":'<br data-mce-bogus="1">'}function C(e){var t=D,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==z?(n=a.create(e||W),y(n)):n=M.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while((t=t.parentNode)&&t!=B);return r||(o.innerHTML='<br data-mce-bogus="1">'),n}function x(t){var n,r,i;if(3==D.nodeType&&(t?L>0:L<D.nodeValue.length))return!1;if(D.parentNode==M&&V&&!t)return!0;if(t&&1==D.nodeType&&D==M.firstChild)return!0;if("TABLE"===D.nodeName||D.previousSibling&&"TABLE"==D.previousSibling.nodeName)return V&&!t||!V&&t;for(n=new e(D,M),3==D.nodeType&&(t&&0===L?n.prev():t||L!=D.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),d[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function w(e,t){var n,r,o,s,l,c,d=W||"P";if(r=a.getParent(e,a.isBlock),!r||!h(r)){if(r=r||B,c=r==i.getBody()||p(r)?r.nodeName.toLowerCase():r.parentNode.nodeName.toLowerCase(),!r.hasChildNodes())return n=a.create(d),y(n),r.appendChild(n),R.setStart(n,0),R.setEnd(n,0),n;for(s=e;s.parentNode!=r;)s=s.parentNode;for(;s&&!a.isBlock(s);)o=s,s=s.previousSibling;if(o&&u.isValidChild(c,d.toLowerCase())){for(n=a.create(d),y(n),o.parentNode.insertBefore(n,o),s=o;s&&!a.isBlock(s);)l=s.nextSibling,n.appendChild(s),s=l;R.setStart(e,t),R.setEnd(e,t)}}return e}function N(){function e(e){for(var t=F[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===M}function t(){var e=F.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:F}if(F!=i.getBody()){var n=F.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(W="LI"),O=W?C(W):a.create("BR"),e(!0)&&e()?"LI"==n?a.insertAfter(O,t()):a.replace(O,F):e(!0)?"LI"==n?(a.insertAfter(O,t()),O.appendChild(a.doc.createTextNode(" ")),O.appendChild(F)):F.parentNode.insertBefore(O,F):e()?(a.insertAfter(O,t()),m(O)):(F=t(),A=R.cloneRange(),A.setStartAfter(M),A.setEndAfter(F),I=A.extractContents(),"LI"==W&&"LI"==I.firstChild.nodeName?(O=I.firstChild,a.insertAfter(I,F)):(a.insertAfter(I,F),a.insertAfter(O,F))),a.remove(M),v(O),c.add()}}function E(){i.execCommand("InsertLineBreak",!1,o)}function _(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function S(e){var t=a.getRoot(),n,r;for(n=e;n!==t&&"false"!==a.getContentEditable(n);)"true"===a.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function k(e){var t;r||(e.normalize(),t=e.lastChild,t&&!/^(left|right)$/gi.test(a.getStyle(t,"float",!0))||a.add(e,"br"))}function T(){O=/^(H[1-6]|PRE|FIGURE)$/.test(z)&&"HGROUP"!=U?C(W):C(),l.end_container_on_empty_block&&h(F)&&a.isEmpty(M)?O=a.split(F,M):a.insertAfter(O,M),v(O)}var R,A,B,D,L,M,P,H,O,I,F,z,U,W,V;if(R=s.getRng(!0),!o.isDefaultPrevented()){if(!R.collapsed)return void i.execCommand("Delete");if(new t(a).normalize(R),D=R.startContainer,L=R.startOffset,W=(l.force_p_newlines?"p":"")||l.forced_root_block,W=W?W.toUpperCase():"",P=a.doc.documentMode,H=o.shiftKey,1==D.nodeType&&D.hasChildNodes()&&(V=L>D.childNodes.length-1,D=D.childNodes[Math.min(L,D.childNodes.length-1)]||D,L=V&&3==D.nodeType?D.nodeValue.length:0),B=S(D)){if(c.beforeChange(),!a.isBlock(B)&&B!=a.getRoot())return void(W&&!H||E());if((W&&!H||!W&&H)&&(D=w(D,L)),M=a.getParent(D,a.isBlock),F=M?a.getParent(M.parentNode,a.isBlock):null,z=M?M.nodeName.toUpperCase():"",U=F?F.nodeName.toUpperCase():"","LI"!=U||o.ctrlKey||(M=F,z=U),/^(LI|DT|DD)$/.test(z)){if(!W&&H)return void E();if(a.isEmpty(M))return void N()}if("PRE"==z&&l.br_in_pre!==!1){if(!H)return void E()}else if(!W&&!H&&"LI"!=z||W&&H)return void E();W&&M===i.getBody()||(W=W||"P",x()?T():x(!0)?(O=M.parentNode.insertBefore(C(),M),m(O),v(M)):(A=R.cloneRange(),A.setEndAfter(M),I=A.extractContents(),_(I),O=I.firstChild,a.insertAfter(I,M),g(O),k(M),a.isEmpty(M)&&b(M),O.normalize(),a.isEmpty(O)?(a.remove(O),T()):v(O)),a.setAttrib(O,"id",""),i.fire("NewBlock",{newBlock:O}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(ee,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,h,p,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){p=t,t=t.nextSibling,r.remove(p);continue}h||(h=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(h,t),g=!0),p=t,t=t.nextSibling,h.appendChild(p)}else h=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(te,[z,y,_,$,k,U],function(e,t,n,r,i,o){function a(e){return e>0}function s(e){return 0>e}function l(e,n,r,i,o){var l=new t(e,i);if(s(n)){if(C(e)&&(e=l.prev(!0),r(e)))return e;for(;e=l.prev(o);)if(r(e))return e}if(a(n)){if(C(e)&&(e=l.next(!0),r(e)))return e;for(;e=l.next(o);)if(r(e))return e}return null}function c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(b(e))return e;return t}function u(e,t){for(;e&&e!=t;){if(x(e))return e;e=e.parentNode}return null}function d(e,t,n){return u(e.container(),n)==u(t.container(),n)}function f(e,t,n){return c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return t?(n=t.container(),r=t.offset(),E(n)?n.childNodes[r+e]:null):null}function p(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function m(e,t,n){return u(t,e)==u(n,e)}function g(e,t,n){var r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],w(r)&&(r=r[i]),C(r)){if(m(t,r,n))return r;break}if(_(r))break;n=n.parentNode}return null}function v(e,t,r){var o,a,s,l,c=N(g,!0,t),u=N(g,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(E(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,C(o)))return S(o);if("after"==l&&(o=a.previousSibling,C(o)))return k(o)}if(!r.collapsed)return r;if(n.isText(a)){if(w(a)){if(1===e){if(o=u(a))return S(o);if(o=c(a))return k(o)}if(-1===e){if(o=c(a))return k(o);if(o=u(a))return S(o)}return r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return 1===e&&(o=u(a))?S(o):r;if(i.startsWithCaretContainer(a)&&1>=s)return-1===e&&(o=c(a))?k(o):r;if(s===a.data.length)return o=u(a),o?S(o):r;if(0===s)return o=c(a),o?k(o):r}return r}function y(e,t){return C(h(e,t))}var b=n.isContentEditableTrue,C=n.isContentEditableFalse,x=n.matchStyleValues("display","block table table-cell table-caption"),w=i.isCaretContainer,N=e.curry,E=n.isElement,_=o.isCaretCandidate,S=N(p,!0),k=N(p,!1);return{isForwards:a,isBackwards:s,findNode:l,getEditingHost:c,getParentBlock:u,isInSameBlock:d,isInSameEditingHost:f,isBeforeContentEditableFalse:N(y,0),isAfterContentEditableFalse:N(y,-1),normalizeRange:v}}),r(ne,[_,U,$,te,p,z],function(e,t,n,r,i,o){function a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return n}function s(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function l(e,t){if(m(e)){if(v(t.previousSibling)&&!f(t.previousSibling))return n.before(t);if(f(t))return n(t,0)}if(g(e)){if(v(t.nextSibling)&&!f(t.nextSibling))return n.after(t);if(f(t))return n(t,t.data.length)}return g(e)?p(t)?n.before(t):n.after(t):n.before(t)}function c(t,i){var o;return e.isBr(t)?(o=u(1,n.after(t),i),o?!r.isInSameBlock(n.before(t),n.before(o),i):!1):!1}function u(e,t,p){var C,x,w,N,E,_,S;if(!h(p)||!t)return null;if(S=t,C=S.container(),x=S.offset(),f(C)){if(g(e)&&x>0)return n(C,--x);if(m(e)&&x<C.length)return n(C,++x);w=C}else{if(g(e)&&x>0&&(N=s(C,x-1),v(N)))return!y(N)&&(E=r.findNode(N,e,b,N))?f(E)?n(E,E.data.length):n.after(E):f(N)?n(N,N.data.length):n.before(N);if(m(e)&&x<C.childNodes.length&&(N=s(C,x),v(N)))return c(N,p)?u(e,n.after(N),p):!y(N)&&(E=r.findNode(N,e,b,N))?f(E)?n(E,0):n.before(E):f(N)?n(N,0):n.after(N);w=S.getNode()}return(m(e)&&S.isAtEnd()||g(e)&&S.isAtStart())&&(w=r.findNode(w,e,o.constant(!0),p,!0),b(w))?l(e,w):(N=r.findNode(w,e,b,p),_=i.last(i.filter(a(C,p),d)),!_||N&&_.contains(N)?N?l(e,N):null:S=m(e)?n.after(_):n.before(_))}var d=e.isContentEditableFalse,f=e.isText,h=e.isElement,p=e.isBr,m=r.isForwards,g=r.isBackwards,v=t.isCaretCandidate,y=t.isAtomic,b=t.isEditableCaretCandidate;return function(e){return{next:function(t){return u(1,t,e)},prev:function(t){return u(-1,t,e)}}}}),r(re,[m,ne,$],function(e,t,n){var r=function(e){var t=e.firstChild,n=e.lastChild;return t&&"meta"===t.name&&(t=t.next),n&&"mce_marker"===n.attr("id")&&(n=n.prev),t&&t===n?"ul"===t.name||"ol"===t.name:!1},i=function(e){var t=e.firstChild,n=e.lastChild;return t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e},o=function(e,t,n){var r=t.serialize(n),o=e.createFragment(r);return i(o)},a=function(t){return e.grep(t.childNodes,function(e){return"LI"===e.nodeName})},s=function(e){return!e.firstChild},l=function(e){return e.length>0&&s(e[e.length-1])?e.slice(0,-1):e},c=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},u=function(e,t){return!!c(e,t)},d=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var i=n.before(e),o=new t(r),a=o.next(i);return a?a.toRange():null},h=function(e,r){var i=n.after(e),o=new t(r),a=o.prev(i);return a?a.toRange():null},p=function(t,n,r,i){var o=d(t,i),a=t.parentNode;return a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),h(n[n.length-1],r)},m=function(t,n,r){var i=t.parentNode;return e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return r.insertAfter(t.reverse(),e),h(t[0],n)},v=function(e,r,i,s){var u=o(r,e,s),d=c(r,i.startContainer),f=l(a(u.firstChild)),h=1,v=2,y=r.getRoot(),b=function(e){var o=n.fromRangeStart(i),a=new t(r.getRoot()),s=e===h?a.prev(o):a.next(o);return s?c(r,s.getNode())!==d:!0};return b(h)?m(d,f,y):b(v)?g(d,f,y,r):p(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:u,trimListItems:l,listItems:a}}),r(ie,[d,m,P,ne,$,X,_,re],function(e,t,n,r,i,o,a,s){var l=a.matchNodeNames("td th"),c=function(a,c,u){function d(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}function f(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(c)||(c+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(c)||(c=" "+c)))}function h(){if(A){var e=a.getBody(),n=new o(L);t.each(L.select("*[data-mce-fragment]"),function(t){for(var r=t.parentNode;r&&r!=e;r=r.parentNode)B[t.nodeName.toLowerCase()]&&n.compare(r,t)&&L.remove(t,!0)})}}function p(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function m(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function g(e){return!!e.getAttribute("data-mce-fragment")}function v(e){return e&&!a.schema.getShortEndedElements()[e.nodeName]}function y(t){function n(e){for(var t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return e;return null}function o(e){var t=i.fromRangeStart(e),n=new r(a.getBody());return t=n.next(t),t?t.toRange():void 0}var s,c,u;if(t){if(D.scrollIntoView(t),s=n(t))return L.remove(t),void D.select(s);S=L.createRng(),k=t.previousSibling,k&&3==k.nodeType?(S.setStart(k,k.nodeValue.length),e.ie||(T=t.nextSibling,T&&3==T.nodeType&&(k.appendData(T.data),T.parentNode.removeChild(T)))):(S.setStartBefore(t),S.setEndBefore(t)),c=L.getParent(t,L.isBlock),L.remove(t),c&&L.isEmpty(c)&&(a.$(c).empty(),S.setStart(c,0),S.setEnd(c,0),l(c)||g(c)||!(u=o(S))?L.add(c,L.create("br",{"data-mce-bogus":"1"})):(S=u,L.remove(c))),D.setRng(S)}}var b,C,x,w,N,E,_,S,k,T,R,A,B=a.schema.getTextInlineElements(),D=a.selection,L=a.dom;/^ | $/.test(c)&&(c=d(c)),b=a.parser,A=u.merge,C=new n({validate:a.settings.validate},a.schema),R='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',E={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",E),c=E.content,-1==c.indexOf("{$caret}")&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,R),S=D.getRng();var M=S.startContainer||(S.parentElement?S.parentElement():null),P=a.getBody();M===P&&D.isCollapsed()&&L.isBlock(P.firstChild)&&v(P.firstChild)&&L.isEmpty(P.firstChild)&&(S=L.createRng(),S.setStart(P.firstChild,0),S.setEnd(P.firstChild,0),D.setRng(S)),D.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null),f()),x=D.getNode();var H={context:x.nodeName.toLowerCase(), +data:u.data};if(N=b.parse(c,H),u.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(L,x))return S=s.insertAtCaret(C,L,a.selection.getRng(!0),N),a.selection.setRng(S),void a.fire("SetContent",E);if(p(N),k=N.lastChild,"mce_marker"==k.attr("id"))for(_=k,k=k.prev;k;k=k.walk(!0))if(3==k.type||!L.isBlock(k.name)){a.schema.isValidChild(k.parent.name,"span")&&k.parent.insert(_,k,"br"===k.name);break}if(a._selectionOverrides.showBlockCaretContainer(x),H.invalid){for(D.setContent(R),x=D.getNode(),w=a.getBody(),9==x.nodeType?x=k=w:k=x;k!==w;)x=k,k=k.parentNode;c=x==w?w.innerHTML:L.getOuterHTML(x),c=C.serialize(b.parse(c.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return C.serialize(N)}))),x==w?L.setHTML(w,c):L.setOuterHTML(x,c)}else c=C.serialize(N),k=x.firstChild,T=x.lastChild,!k||k===T&&"BR"===k.nodeName?L.setHTML(x,c):D.setContent(c);h(),y(L.get("mce_marker")),m(a.getBody()),a.fire("SetContent",E),a.addVisual()},u=function(e){var n;return"string"!=typeof e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},d=function(e,t){var n=u(t);c(e,n.content,n.details)};return{insertAtCaret:d}}),r(oe,[d,m,T,y,ie],function(e,n,r,i,o){var a=n.each,s=n.extend,l=n.map,c=n.inArray,u=n.explode,d=e.ie&&e.ie<11,f=!0,h=!1;return function(n){function p(e,t,r,i){var o,s,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(s=e.toLowerCase(),o=B.exec[s])return o(s,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(a(n.plugins,function(i){return i.execCommand&&i.execCommand(e,t,r)?(n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1):void 0}),l)return l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(c){}return l?(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0):!1}function m(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.state[e])return t(e);try{return n.getDoc().queryCommandState(e)}catch(r){}return!1}}function g(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.value[e])return t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function v(e,t){t=t||"exec",a(e,function(e,n){a(n.toLowerCase().split(","),function(n){B[t][n]=e})})}function y(e,t,r){e=e.toLowerCase(),B.exec[e]=function(e,i,o,a){return t.call(r||n,i,o,a)}}function b(e){if(e=e.toLowerCase(),B.exec[e])return!0;try{return n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function C(e,t,r){e=e.toLowerCase(),B.state[e]=function(){return t.call(r||n)}}function x(e,t,r){e=e.toLowerCase(),B.value[e]=function(){return t.call(r||n)}}function w(e){return e=e.toLowerCase(),!!B.exec[e]}function N(e,r,i){return r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function E(e){return A.match(e)}function _(e,r){A.toggle(e,r?{value:r}:t),n.nodeChanged()}function S(e){L=R.getBookmark(e)}function k(){R.moveToBookmark(L)}var T,R,A,B={state:{},exec:{},value:{}},D=n.settings,L;n.on("PreInit",function(){T=n.dom,R=n.selection,D=n.settings,A=n.formatter}),s(this,{execCommand:p,queryCommandState:m,queryCommandValue:g,queryCommandSupported:b,addCommands:v,addCommand:y,addQueryStateHandler:C,addQueryValueHandler:x,hasCustomCommand:w}),v({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var r=n.getDoc(),i;try{N(t)}catch(o){i=f}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var a=n.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(R.isCollapsed()){var e=R.getNode();return void("A"==e.tagName&&n.dom.remove(e,!0))}A.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),a("left,center,right,justify".split(","),function(e){t!=e&&A.remove("align"+e)}),"none"!=t&&_("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;N(e),t=T.getParent(R.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(S(),T.split(n,t),k()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){_(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){_(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=u(D.font_size_style_values),r=u(D.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),_(e,n)},RemoveFormat:function(e){A.remove(e)},mceBlockQuote:function(){_("blockquote")},FormatBlock:function(e,t,n){return _(n||"p")},mceCleanup:function(){var e=R.getBookmark();n.setContent(n.getContent({cleanup:f}),{cleanup:f}),R.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||R.getNode();i!=n.getBody()&&(S(),n.dom.remove(i,f),k())},mceSelectNodeDepth:function(e,t,r){var i=0;T.getParent(R.getNode(),function(e){return 1==e.nodeType&&i++==r?(R.select(e),h):void 0},n.getBody())},mceSelectNode:function(e,t,n){R.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){R.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){_(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,r,i;t=D.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),m("InsertUnorderedList")||m("InsertOrderedList")?N(e):(D.forced_root_block||T.getParent(R.getNode(),T.isBlock)||A.apply("div"),a(R.getSelectedBlocks(),function(o){if("false"!==T.getContentEditable(o)&&"LI"!=o.nodeName){var a=n.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==T.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),T.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,T.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,R.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=T.getParent(R.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||A.remove("link"),n.href&&A.apply("link",n,r)},selectAll:function(){var e=T.getRoot(),t;R.getRng().setStart?(t=T.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),R.setRng(t)):(t=R.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){N("Delete");var e=n.getBody();T.isEmpty(e)&&(n.setContent(""),e.firstChild&&T.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function a(){for(var e=new i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=o,l,c,u,h=R.getRng(!0);new r(T).normalize(h);var p=h.startOffset,m=h.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var g=p>m.childNodes.length-1;m=m.childNodes[Math.min(p,m.childNodes.length-1)]||m,p=g&&3==m.nodeType?m.nodeValue.length:0}var v=T.getParent(m,T.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?T.getParent(v.parentNode,T.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&p>=m.nodeValue.length&&(d||a()||(l=T.create("br"),h.insertNode(l),h.setStartAfter(l),h.setEndAfter(l),c=!0)),l=T.create("br"),h.insertNode(l);var w=T.doc.documentMode;return d&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(T.doc.createTextNode("\r"),l),u=T.create("span",{},"&nbsp;"),l.parentNode.insertBefore(u,l),R.scrollIntoView(u),T.remove(u),c?(h.setStartBefore(l),h.setEndBefore(l)):(h.setStartAfter(l),h.setEndAfter(l)),R.setRng(h),n.undoManager.add(),f}}),v({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=R.isCollapsed()?[T.getParent(R.getNode(),T.isBlock)]:R.getSelectedBlocks(),r=l(n,function(e){return!!A.matchNode(e,t)});return-1!==c(r,f)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return E(e)},mceBlockQuote:function(){return E("blockquote")},Outdent:function(){var e;if(D.inline_styles){if((e=T.getParent(R.getStart(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f;if((e=T.getParent(R.getEnd(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f}return m("InsertUnorderedList")||m("InsertOrderedList")||!D.inline_styles&&!!T.getParent(R.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=T.getParent(R.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),v({"FontSize,FontName":function(e){var t=0,n;return(n=T.getParent(R.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),v({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ae,[m],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(se,[m],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(le,[m],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(ce,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(ue,[le],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(de,[ce,ue,se,m],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(fe,[se],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.pseudo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,h,p;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,p=e,h=0,i=o-1;i>=0;i--)for(c=a[i];p;){if(c.pseudo)for(f=p.parent().items(),u=d=f.length;u--&&f[u]!==p;);for(s=0,l=c.length;l>s;s++)if(!c[s](p,u,d)){s=l+1;break}if(s===l){h++;break}if(i===o-1)break;p=p.parent()}if(h===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(he,[m,fe,se],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].classes.contains(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(pe,[m,w],function(e,t){var n=0;return{id:function(){return"mceu_"+n++},create:function(n,r,i){var o=document.createElement(n);return t.DOM.setAttribs(o,r),"string"==typeof i?o.innerHTML=i:e.each(i,function(e){e.nodeType&&o.appendChild(e)}),o},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},getRuntimeStyle:function(e,n){return t.DOM.getStyle(e,n,!0)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(me,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(ge,[m],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),n.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)t>0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(ve,[u],function(e){var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(ye,[se,m,le,de,he,pe,g,me,ge,ve],function(e,t,n,r,i,o,a,s,l,c){function u(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=c._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),c._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=c._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(c._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i<s.length&&a[i]===s[i];i++);for(o=s.length-1;o>=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;o<a.length;o++)n=a[o],n.fire("mouseenter",{target:n.getEl()})}}function i(t){t.preventDefault(),"mousewheel"==t.type?(t.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-1/40*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}var o,s,l,c,u,d;if(u=e._nativeEvents){for(l=e.parents().toArray(),l.unshift(e),o=0,s=l.length;!c&&s>o;o++)c=l[o]._eventsRoot;for(c||(c=l[l.length-1]||e),e._eventsRoot=c,s=o,o=0;s>o;o++)l[o]._eventsRoot=c;var p=c._delegates;p||(p=c._delegates={});for(d in u){if(!u)return!1;"wheel"!==d||h?("mouseenter"===d||"mouseleave"===d?c._hasMouseEnter||(a(c.getEl()).on("mouseleave",n).on("mouseover",r),c._hasMouseEnter=1):p[d]||(a(c.getEl()).on(d,t),p[d]=!0),u[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,h=!1,p="mce-",m,g=0,v={Statics:{classPrefix:p},isRtl:function(){return m.rtl},classPrefix:p,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}var i=this,o,c;i.settings=e=t.extend({},i.Defaults,e),i._id=e.id||"mceu_"+g++,i._aria={role:e.role},i._elmCache={},i.$=a,i.state=new r({visible:!0,active:!1,disabled:!1,value:""}),i.data=new r(e.data),i.classes=new l(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,o=e.classes,o&&(i.Defaults&&(c=i.Defaults.classes,c&&o!=c&&n(c)),n(o)),t.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on("click",function(){return i.disabled()?!1:void 0}),i.settings=e,i.borderBox=s.parseBox(e.border),i.paddingBox=s.parseBox(e.padding),i.marginBox=s.parseBox(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e=this,t=e.settings,n,r,i=e.getEl(),a,l,c,u,d,f,h,p;n=e.borderBox=e.borderBox||s.measureBox(i,"border"),e.paddingBox=e.paddingBox||s.measureBox(i,"padding"),e.marginBox=e.marginBox||s.measureBox(i,"margin"),p=o.getSize(i),f=t.minWidth,h=t.minHeight,c=f||p.width,u=h||p.height,a=t.width,l=t.height,d=t.autoResize,d="undefined"!=typeof d?d:!a&&!l,a=a||c,l=l||u;var m=n.left+n.right,g=n.top+n.bottom,v=t.maxWidth||65535,y=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:l,deltaW:m,deltaH:g,contentW:a-m,contentH:l-g,innerW:a-m,innerH:l-g,startMinWidth:f||0,startMinHeight:h||0,minW:Math.min(c,v),minH:Math.min(u,y),maxW:v,maxH:y,autoResize:d,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,c,u;c=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=c(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=c(i.y)+"px",l.y=i.y),i.w!==l.w&&(u=c(i.w-a),t.width=(u>=0?u:0)+"px",l.w=i.w),i.h!==l.h&&(u=c(i.h-s),t.height=(u>=0?u:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(u=c(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(u>=0?u:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(u=c(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(u>=0?u:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return u(r).on(e,n(t)),r},off:function(e,t){return u(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=u(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return u(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t); +}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var u in e._aria)e.aria(u,e._aria[u]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),c.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){c.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(be,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(Ce,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=C;return t(n)?n.getAttribute("aria-"+e):void 0}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function a(e){return o(e)&&!e.hidden?!0:!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){a(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||b.getEl()),n}function l(e){var t,n;e=e||x,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function c(e){var t=l(e),n=s(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?u(t.lastAriaIndex,n):u(0,n)}function u(e,t){return 0>e?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i<t.length;i++)t[i]===C&&(n=i);n+=e,r.lastAriaIndex=u(n,t)}function f(){var e=r();"tablist"==e?d(-1,s(C.parentNode)):x.parent().submenu?v():d(-1)}function h(){var e=n(),t=r();"tablist"==t?d(1,s(C.parentNode)):"menuitem"==e&&"menu"==t&&i("haspopup")?y():d(1)}function p(){d(-1)}function m(){var e=n(),t=r();"menuitem"==e&&"menubar"==t?y():"button"==e&&i("haspopup")?y({key:"down"}):d(1)}function g(e){var t=r();if("tablist"==t){var n=s(x.getEl("body"))[0];n&&n.focus()}else d(e.shiftKey?-1:1)}function v(){x.fire("cancel")}function y(e){e=e||{},x.fire("click",{target:C,aria:e})}var b=e.root,C,x;try{C=document.activeElement}catch(w){C=document.body}return x=b.getParentCtrl(C),b.on("keydown",function(e){function t(e,t){o(C)||"slider"!==n(C)&&t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,f);break;case 39:t(e,h);break;case 38:t(e,p);break;case 40:t(e,m);break;case 27:v();break;case 14:case 13:case 32:t(e,y);break;case 9:g(e)!==!1&&e.preventDefault()}}),b.on("focusin",function(e){C=e.target,x=e.control}),{focusFirst:c}}}),r(xe,[ye,he,fe,be,Ce,m,g,ge,ve],function(e,t,n,r,i,o,a,s,l){var c={};return e.extend({init:function(e){var n=this;n._super(e),e=n.settings,e.fixed&&n.state.set("fixed",!0),n._items=new t,n.isRtl()&&n.classes.add("rtl"),n.bodyClasses=new s(function(){n.state.get("rendered")&&(n.getEl("body").className=this.toString())}),n.bodyClasses.prefix=n.classPrefix,n.classes.add("container"),n.bodyClasses.add("container-body"),e.containerCls&&n.classes.add(e.containerCls),n._layout=r.create((e.layout||"")+"layout"),n.settings.items?n.add(n.settings.items):n.add(n.render()),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=c[e]=c[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(we,[g],function(e){function t(e){var t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}return function(r,i){function o(){return s.getElementById(i.handle||r)}var a,s=i.document||document,l,c,u,d,f,h;i=i||{},c=function(r){var c=t(s),p,m;n(r),r.preventDefault(),l=r.button,p=o(),f=r.screenX,h=r.screenY,m=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,a=e("<div>").css({position:"absolute",top:0,left:0,width:c.width,height:c.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",u),i.start(r)},d=function(e){return n(e),e.button!==l?u(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-h,e.preventDefault(),void i.drag(e))},u=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",u),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",c)}}),r(Ne,[g,we],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,h,p,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!c)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),h=i.getEl("scroll"+t+"t"),p=d["client"+s]-2*o,p-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=p/m,v={},v[y]=d["offset"+a]+o,v[b]=p,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=p*g,e(h).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+u+'t" class="'+d+'scrollbar-thumb"></div></div>'),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e("#"+u).addClass(d+"active")},drag:function(e){var t,u,d,f,h=i.layoutRect();u=h.contentW>h.innerW,d=h.contentH>h.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e("#"+u).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(Ee,[xe,Ne],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(_e,[pe],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,h;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),h=e.getSize(i),l=h.width,c=h.height,h=e.getSize(n),u=h.width,d=h.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this.state.get("fixed")){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Se,[pe],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(ke,[Ee,_e,Se,pe,g,u],function(e,t,n,r,i,o){function a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var t=v.length;t--;){var n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function l(){p||(p=function(e){2!=e.button&&s(e)},i(document).on("click touchstart",p))}function c(){m||(m=function(){var e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function u(){if(!g){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function d(e){function t(t,n){for(var r,i=0;i<v.length;i++)if(v[i]!=e)for(r=v[i].parent();r&&(r=r.parent());)r==e&&v[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function f(e,t){var n,r=C.zIndex||65535,o;if(e)y.push(t);else for(n=y.length;n--;)y[n]===t&&y.splice(n,1);if(y.length)for(n=0;n<y.length;n++)y[n].modal&&(r++,o=y[n]),y[n].getEl().style.zIndex=r,y[n].zIndex=r,r++;var a=i("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];o?i(a).css("z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),b=!1),C.currentZIndex=r}function h(e){var t;for(t=v.length;t--;)v[t]===e&&v.splice(t,1);for(t=y.length;t--;)y[t]===e&&y.splice(t,1)}var p,m,g,v=[],y=[],b,C=e.extend({Mixins:[t,n],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(l(),u(),v.push(t)),e.autofix&&(c(),t.on("move",function(){d(this)})),t.on("postrender show",function(e){if(e.control==t){var n,r=t.classPrefix;t.modal&&!b&&(n=i("#"+r+"modal-block",t.getContainerElm()),n[0]||(n=i('<div id="'+r+'modal-block" class="'+r+"reset "+r+'fade"></div>').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e.state.get("fixed")?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return-1===t&&v.push(e),n},hide:function(){return h(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){h(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return C.hideAll=function(){for(var e=v.length;e--;){var t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Te,[ke,Ee,pe,g,we,me,d,u],function(e,t,n,r,i,o,a,s){function l(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof f&&(f=i),n.setAttribute("content",e?t:f))}function c(e){for(var t=0;t<d.length;t++)if(d[t]._fullscreen)return;r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function u(){function e(){var e,t=n.getWindowSize(),r;for(e=0;e<d.length;e++)r=d[e].layoutRect(),d[e].moveTo(d[e].settings.x||Math.max(0,t.w/2-r.w/2),d[e].settings.y||Math.max(0,t.h/2-r.h/2))}if(!a.desktop){var t={w:window.innerWidth,h:window.innerHeight};s.setInterval(function(){var e=window.innerWidth,n=window.innerHeight;t.w==e&&t.h==n||(t={w:e,h:n},r(window).trigger("resize"))},100)}r(window).on("resize",e)}var d=[],f="",h=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var r=this;r._super(e),r.isRtl()&&r.classes.add("rtl"),r.classes.add("window"),r.bodyClasses.add("window-body"),r.state.set("fixed",!0),e.buttons&&(r.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:r.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),r.statusbar.classes.add("foot"),r.statusbar.parent(r)),r.on("click",function(e){var t=r.classPrefix+"close";(n.hasClass(e.target,t)||n.hasClass(e.target.parentNode,t))&&r.close()}),r.on("cancel",function(){r.close()}),r.aria("describedby",r.describedBy||r._id+"-none"),r.aria("label",e.title),r._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><div id="'+n+'-dragh" class="'+r+'dragh"></div><button type="button" class="'+r+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,i=document.documentElement,a,l=t.classPrefix,c;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),c=t.layoutRect(),t._fullscreen=e,e){t._initial={x:c.x,y:c.y,w:c.w,h:c.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",c.deltaH-=c.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var u=n.getWindowSize();t.moveTo(0,0).resizeTo(u.w,u.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",c.deltaH+=c.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),d.push(e),l(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),t=d.length;t--;)d[t]===e&&d.splice(t,1);l(d.length>0),c(e.classPrefix)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return u(),h}),r(Re,[Te],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(Ae,[Te,Re],function(e,t){return function(n){function r(){return s.length?s[s.length-1]:void 0}function i(e){n.fire("OpenWindow",{win:e})}function o(e){n.fire("CloseWindow",{win:e})}var a=this,s=[];a.windows=s,n.on("remove",function(){for(var e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new e(t),s.push(a),a.on("close",function(){for(var e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return s}}}),r(Be,[ye,_e],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(De,[ye,Be],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Le,[De],function(e){return e.extend({Defaults:{value:0},init:function(e){var t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this,t=e._id,n=this.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div class="'+n+'bar-container"><div class="'+n+'bar"></div></div><div class="'+n+'text">0%</div></div>'},postRender:function(){var e=this;return e._super(),e.value(e.settings.value),e},bindStates:function(){function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var t=this;return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(Me,[ye,_e,Le,u],function(e,t,n,r){return e.extend({Mixins:[t],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new n),t.on("click",function(e){-1!=e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e=this,t=e.classPrefix,n="",r="",i="",o="";return e.icon&&(n='<i class="'+t+"ico "+t+"i-"+e.icon+'"></i>'),e.color&&(o=' style="background-color: '+e.color+'"'),e.closeButton&&(r='<button type="button" class="'+t+'close" aria-hidden="true">\xd7</button>'),e.progressBar&&(i=e.progressBar.renderHtml()),'<div id="'+e._id+'" class="'+e.classes+'"'+o+' role="presentation">'+n+'<div class="'+t+'notification-inner">'+e.state.get("text")+"</div>"+i+r+"</div>"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[Me,u],function(e,t){return function(n){function r(){return l.length?l[l.length-1]:void 0}function i(){t.requestAnimationFrame(function(){o(),a()})}function o(){for(var e=0;e<l.length;e++)l[e].moveTo(0,0)}function a(){if(l.length>0){var e=l.slice(0,1)[0],t=n.inline?n.getElement():n.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),l.length>1)for(var r=1;r<l.length;r++)l[r].moveRel(l[r-1].getEl(),"bc-tc")}}var s=this,l=[];s.notifications=l,n.on("remove",function(){for(var e=l.length;e--;)l[e].close()}),n.on("ResizeEditor",a),n.on("ResizeWindow",i),s.open=function(t){var r;return n.editorManager.setActive(n),r=new e(t),l.push(r),t.timeout>0&&(r.timer=setTimeout(function(){r.close()},t.timeout)),r.on("close",function(){var e=l.length;for(r.timer&&n.getWin().clearTimeout(r.timer);e--;)l[e]===r&&l.splice(e,1);a()}),r.renderTo(),a(),r},s.close=function(){r()&&r().close()},s.getNotifications=function(){return l},n.on("SkinLoaded",function(){var e=n.settings.service_message;e&&n.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(He,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(Oe,[I,T,y,He,A,C,d,m,u,k,$,ne],function(e,t,n,r,i,o,a,s,l,c,u,d){return function(f){function h(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function p(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ue+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ue)>=0)?(t=t.substr(ue.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=C.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;for(s=C.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function c(e){var n,r,i,o,s;if(!e.collapsed&&(n=C.getParent(t.getNode(e.startContainer,e.startOffset),C.isBlock),r=C.getParent(t.getNode(e.endContainer,e.endOffset),C.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==C.getContentEditable(n)&&"false"!==C.getContentEditable(r)))return e.deleteContents(), +i=a(n,!1),o=a(r,!0),C.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),x.setRng(e),!0}function u(e,n){var r,i,s,l,c,u;if(!e.collapsed)return e;if(c=e.startContainer,u=e.startOffset,3==c.nodeType)if(n){if(u<c.data.length)return e}else if(u>0)return e;if(r=t.getNode(e.startContainer,e.startOffset),s=C.getParent(r,C.isBlock),i=a(f.getBody(),n,r),l=C.getParent(i,C.isBlock),!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function d(e){var t=x.getRng();return t=u(t,e),c(t)?!0:void 0}function h(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(p=C.create("br"),m[0].appendChild(p),C.replace(l,e),t.setStartBefore(p),t.setEndBefore(p),f.selection.setRng(t),p):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,c,u,d,h,p,m;if(t.collapsed&&(d=t.startContainer,h=t.startOffset,a=C.getParent(d,C.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[h],d&&"BR"!=d.tagName)return;if(u=e?a.nextSibling:a.previousSibling,C.isEmpty(a)&&i(u)&&C.isEmpty(u)&&n(a,d))return C.remove(u),!0}else if(3==d.nodeType){if(o=r.create(a,d),c=a.cloneNode(!0),d=r.resolve(c,o),e){if(h>=d.data.length)return;d.deleteData(h,1)}else{if(0>=h)return;d.deleteData(h-1,1)}if(C.isEmpty(c))return n(a,d)}}function p(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new w(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(C.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),C.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var b=f.getDoc(),C=f.dom,x=f.selection,w=window.MutationObserver,N,E;w||(N=!0,w=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(h(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),p(t)}}),f.on("keypress",function(t){if(!m(t)&&!x.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),p(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=C.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=C.getParent(n.startContainer,C.isBlock),C.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){p()}),f.addCommand("ForwardDelete",function(){p(!0)}),N||(f.on("dragstart",function(e){E=x.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,b);E&&(x.setRng(E),E=null),p(),x.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){p(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(c.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function N(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function E(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.getSel().setBaseAndExtent(t,0,t,1),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;return m(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){p()>7||(h("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),ie.object_resizing||h("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){h("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function H(){var e;p()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function O(){p()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){h("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){var e,t;G()&&(e=f.getBody(),t=e.parentNode,t.removeChild(e),t.appendChild(e),e.focus())}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=u.fromRangeStart(n),i=u.fromRangeEnd(n);return!e.selection.isCollapsed()&&!t.prev(r)&&!t.next(i)}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ce=a.webkit,ue="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ce&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(N(),k(),R(),A(),P(),H(),O(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),N(),E(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ie,[ue,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(Fe,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(ze,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function c(e){return e.altKey||e.ctrlKey||e.metaKey}function u(e){return e.keyCode>=112&&e.keyCode<=123}function d(e,t){return t?t.ctrl!=e.ctrlKey||t.meta!=e.metaKey?!1:t.alt!=e.altKey||t.shift!=e.shiftKey?!1:e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode?(e.preventDefault(),!0):!1:!1}function f(e){return e.func?e.func.call(e.scope):null}var h=this,p={},m=[];a.on("keyup keypress keydown",function(e){!c(e)&&!u(e)||e.isDefaultPrevented()||(n(p,function(t){return d(e,t)?(m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0):void 0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),h.add=function(t,i,o,s){var c;return c=o,"string"==typeof o?o=function(){a.execCommand(c,!1,null)}:e.isArray(c)&&(o=function(){a.execCommand(c[0],c[1],c[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);p[t.id]=t}),!0},h.remove=function(e){var t=l(e);return p[t.id]?(delete p[t.id],!0):!1}}}),r(Ue,[c,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var s,l;s=new XMLHttpRequest,s.open("POST",i.url),s.withCredentials=i.credentials,s.upload.onprogress=function(e){r(e.loaded/e.total*100)},s.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+s.status)},s.onload=function(){var e;return 200!=s.status?void n("HTTP Error: "+s.status):(e=JSON.parse(s.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+s.responseText))},l=new FormData,l.append("file",e.blob(),o(e)),s.send(l)}function c(){return new e(function(e){e([])})}function u(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function h(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var c=function(){o&&(o.close(),a=l)},h=function(n){c(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),u(t,n)),e(u(t,n))},p=function(){c(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,p)),e(d(t,p))};a=function(e){0>e||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),h,p,a)}catch(m){e(d(t,m.message))}})}function p(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):h(e,i.handler,o)}))}function v(e,t){return!i.url&&p(i.handler)?c():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(We,[c],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o<i.length;o++)i[o]=r.charCodeAt(o);e(new Blob([i],{type:t.type}))})}function i(e){return 0===e.indexOf("blob:")?t(e):0===e.indexOf("data:")?r(e):null}function o(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}return{uriToBlob:i,blobToDataUri:o,parseDataUri:n}}),r(Ve,[c,p,z,We,d],function(e,t,n,r,i){var o=0;return function(a,s){function l(l,u){function d(e,t){var n,i;return 0===e.src.indexOf("blob:")?(i=s.getByUri(e.src),void(i&&t({image:e,blobInfo:i}))):(n=r.parseDataUri(e.src).data,i=s.findFirst(function(e){return e.base64()===n}),void(i?t({image:e,blobInfo:i}):r.uriToBlob(e.src).then(function(r){var i="blobid"+o++,a=s.create(i,r,n);s.add(a),t({image:e,blobInfo:a})})))}var f,h;return u||(u=n.constant(!0)),f=t.filter(l.getElementsByTagName("img"),function(e){var t=e.src;return i.fileApi?e.hasAttribute("data-mce-bogus")?!1:e.hasAttribute("data-mce-placeholder")?!1:t&&t!=i.transparentSrc?0===t.indexOf("blob:")?!a.isUploaded(t):0===t.indexOf("data:")?u(e):!1:!1:!1}),h=t.map(f,function(t){var n;return c[t.src]?new e(function(e){c[t.src].then(function(n){e({image:t,blobInfo:n.blobInfo})})}):(n=new e(function(e){d(t,e)}).then(function(e){return delete c[e.image.src],e})["catch"](function(e){return delete c[t.src],e}),c[t.src]=n,n)}),e.all(h)}var c={};return{findAll:l}}}),r($e,[p,z],function(e,t){return function(){function n(e,t,n){return{id:u(e),blob:u(t),base64:u(n),blobUri:u(URL.createObjectURL(t))}}function r(e){i(e.id())||c.push(e)}function i(e){return o(function(t){return t.id()===e})}function o(t){return e.filter(c,t)[0]}function a(e){return o(function(t){return t.blobUri()==e})}function s(t){c=e.filter(c,function(e){return e.blobUri()===t?(URL.revokeObjectURL(e.blobUri()),!1):!0})}function l(){e.each(c,function(e){URL.revokeObjectURL(e.blobUri())}),c=[]}var c=[],u=t.constant;return{create:n,add:r,get:i,getByUri:a,findFirst:o,removeByUri:s,destroy:l}}}),r(qe,[],function(){return function(){function e(e,t){return{status:e,resultUri:t}}function t(e){return e in d}function n(e){var t=d[e];return t?t.resultUri:null}function r(e){return t(e)?d[e].status===c:!1}function i(e){return t(e)?d[e].status===u:!1}function o(t){d[t]=e(c,null)}function a(t,n){d[t]=e(u,n)}function s(e){delete d[e]}function l(){d={}}var c=1,u=2,d={};return{hasBlobUri:t,getResultUri:n,isPending:r,isUploaded:i,markPending:o,markUploaded:a,removeFailed:s,destroy:l}}}),r(je,[p,Ue,Ve,$e,qe],function(e,t,n,r,i){return function(o){function a(e){return function(t){return o.selection?e(t):[]}}function s(e,t,n){var r=0;do r=e.indexOf(t,r),-1!==r&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1);while(-1!==r);return e}function l(e,t,n){return e=s(e,'src="'+t+'"','src="'+n+'"'),e=s(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function c(t,n){e.each(o.undoManager.data,function(e){e.content=l(e.content,t,n)})}function u(){return o.notificationManager.open({text:o.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}function d(e,t){y.removeByUri(e.src),c(e.src,t),o.$(e).attr({src:t,"data-mce-src":o.convertURL(t,"src")})}function f(n){return b||(b=new t(w,{url:x.images_upload_url,basePath:x.images_upload_base_path,credentials:x.images_upload_credentials,handler:x.images_upload_handler})),m().then(a(function(t){var r;return r=e.map(t,function(e){return e.blobInfo}),b.upload(r,u).then(a(function(r){return r=e.map(r,function(e,n){var r=t[n].image;return e.status&&o.settings.images_replace_blob_uris!==!1&&d(r,e.url),{element:r,status:e.status}}),n&&n(r),r}))}))}function h(e){return x.automatic_uploads!==!1?f(e):void 0}function p(e){return x.images_dataimg_filter?x.images_dataimg_filter(e):!0}function m(){return C||(C=new n(w,y)),C.findAll(o.getBody(),p).then(a(function(t){return e.each(t,function(e){c(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),t}))}function g(){y.destroy(),w.destroy(),C=b=null}function v(t){return t.replace(/src="(blob:[^"]+)"/g,function(t,n){var r=w.getResultUri(n);if(r)return'src="'+r+'"';var i=y.getByUri(n);return i||(i=e.reduce(o.editorManager.editors,function(e,t){return e||t.editorUpload.blobCache.getByUri(n)},null)),i?'src="data:'+i.blob().type+";base64,"+i.base64()+'"':t})}var y=new r,b,C,x=o.settings,w=new i;return o.on("setContent",function(){o.settings.automatic_uploads!==!1?h():m()}),o.on("RawSaveContent",function(e){e.content=v(e.content)}),o.on("getContent",function(e){e.source_view||"raw"==e.format||(e.content=v(e.content))}),o.on("PostRender",function(){o.parser.addNodeFilter("img",function(t){e.each(t,function(e){var t=e.attr("src");if(!y.getByUri(t)){var n=w.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:y,uploadImages:f,uploadImagesAuto:h,scanForImages:m,destroy:g}}}),r(Ye,[k,$,_,T,g,W,u],function(e,t,n,r,i,o,a){var s=n.isContentEditableFalse;return function(t,n){function r(e,n){var r=o.collapse(e.getBoundingClientRect(),n),i,a,s,l,c;return"BODY"==t.tagName?(i=t.ownerDocument.documentElement,a=t.scrollLeft||i.scrollLeft,s=t.scrollTop||i.scrollTop):(c=t.getBoundingClientRect(),a=t.scrollLeft-c.left,s=t.scrollTop-c.top),r.left+=a,r.right+=a,r.top+=s,r.bottom+=s,r.width=1,l=e.offsetWidth-e.clientWidth,l>0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a<n.length;a++)r=n[a],o=r.previousSibling,e.endsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(s.length-1,1)),o=r.nextSibling,e.startsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(0,1));return null}function c(o,a){var l,c,f;return u(),n(a)?(g=e.insertBlock("p",a,o),l=r(a,o),i(g).css("top",l.top),m=i('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),c=a.ownerDocument.createRange(),f=g.firstChild,c.setStart(f,0),c.setEnd(f,1),c):(g=e.insertInline(a,o),c=a.ownerDocument.createRange(),s(g.nextSibling)?(c.setStart(g,0),c.setEnd(g,0)):(c.setStart(g,1),c.setEnd(g,1)),c)}function u(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(p)}function d(){p=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(p)}function h(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var p,m,g;return{show:c,hide:u,getCss:h,destroy:f}}}),r(Xe,[p,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ke,[z,p,Xe,U,te,ne,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function c(e,r,i,o,a,s){function c(o){var s,l,c;for(c=n.getClientRects(o),-1==e&&(c=c.reverse()),s=0;s<c.length;s++)if(l=c[s],!i(l,h)){if(f.length>0&&r(l,t.last(f))&&u++,l.line=u,a(l))return!0;f.push(l)}}var u=0,d,f=[],h;return(h=t.last(s.getClientRects()))?(d=s.getNode(),c(d),l(e,o,c,d),f):f}function u(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var c=new o(n),u,d,f,h,p=[],m=0,g,v;1==e?(u=c.next,d=s.isBelow,f=s.isAbove,h=a.after(i)):(u=c.prev,d=s.isAbove,f=s.isBelow,h=a.before(i)),v=l(h);do if(h.isVisible()&&(g=l(h),!f(g,v))){if(p.length>0&&d(g,t.last(p))&&m++,g=s.clone(g),g.position=h,g.line=m,r(g))return p;p.push(g)}while(h=u(h));return p}var h=e.curry,p=h(c,-1,s.isAbove,s.isBelow),m=h(c,1,s.isBelow,s.isAbove);return{upUntil:p,downUntil:m,positionsUntil:f,isAboveLine:h(u),isLine:h(d)}}),r(Ge,[z,p,_,Xe,W,te,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function c(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:i>o?t:e})}function u(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function d(e,n){function o(e,i){var o;return o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var a=[];return a.push(n),u(-1,e,v(o,i.isAbove),n.node),u(1,e,v(o,i.isBelow),n.node),a}function f(e){return t.filter(t.toArray(e.getElementsByTagName("*")),m)}function h(e,t){return{node:e.node,before:s(e,t)<l(e,t)}}function p(e,n,i){var o,a;return o=r.getClientRects(f(e)),o=t.filter(o,function(e){return i>=e.top&&i<=e.bottom}),a=c(o,n),a&&(a=c(d(e,a),n),a&&m(a.node))?h(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:c,findLineNodeRects:d,closestCaret:p}}),r(Je,[_,p,z],function(e,t,n){function r(e){function r(e){return i(e)}function a(t){f(e.getBody()).css("cursor",t)}function s(t){return t==g.element||e.dom.isChildOf(t,g.element)?!1:!i(t)}function l(t){var n,r,i,o,s=0,l=0,c,u,d,h;0===t.button&&(n=t.screenX-g.screenX,r=t.screenY-g.screenY,c=Math.max(Math.abs(n),Math.abs(r)),!g.dragging&&c>10&&(g.dragging=!0,a("default"),g.clone=g.element.cloneNode(!0),i=m.getPos(g.element),g.relX=g.clientX-i.x,g.relY=g.clientY-i.y,g.width=g.element.offsetWidth,g.height=g.element.offsetHeight,f(g.clone).css({width:g.width,height:g.height}).removeAttr("data-mce-selected"),g.ghost=f("<div>").css({position:"absolute",opacity:.5,overflow:"hidden",width:g.width,height:g.height}).attr({"data-mce-bogus":"all",unselectable:"on",contenteditable:"false"}).addClass("mce-drag-container mce-reset").append(g.clone).appendTo(e.getBody())[0],o=e.dom.getViewPort(e.getWin()),g.maxX=o.w,g.maxY=o.h),g.dragging&&(e._selectionOverrides.hideFakeCaret(),e.selection.placeCaretAt(t.clientX,t.clientY),u=g.clientX+n-g.relX,d=g.clientY+r+5,u+g.width>g.maxX&&(s=u+g.width-g.maxX),d+g.height>g.maxY&&(l=d+g.height-g.maxY),h="BODY"!=e.getBody().nodeName?e.getBody().getBoundingClientRect():{left:0,top:0},f(g.ghost).css({left:u-h.left,top:d-h.top,width:g.width-s,height:g.height-l})))}function c(t){var n;if(g.dragging&&(e.selection.setRng(e.selection.getSel().getRangeAt(0)),s(e.selection.getNode()))){var r=g.element;if(n=e.fire("drop",{targetClone:r,clientX:t.clientX,clientY:t.clientY}),n.isDefaultPrevented())return;r=n.targetClone,e.undoManager.transact(function(){e.insertContent(m.getOuterHTML(r)),f(g.element).remove()})}d()}function u(a){var s,u;if(d(),0===a.button&&(s=t.find(e.dom.getParents(a.target),n.or(i,o)),r(s))){if(u=e.fire("dragstart",{target:s}),u.isDefaultPrevented())return;e.on("mousemove",l),e.on("mouseup",c),h!=p&&(m.bind(h,"mousemove",l),m.bind(h,"mouseup",c)),g={screenX:a.screenX,screenY:a.screenY,clientX:a.clientX,clientY:a.clientY,element:s +}}}function d(){f(g.ghost).remove(),a(null),e.off("mousemove",l),e.off("mouseup",d),h!=p&&(m.unbind(h,"mousemove",l),m.unbind(h,"mouseup",d)),g={}}var f=e.$,h=document,p=e.getDoc(),m=e.dom,g={};e.on("mousedown",u),e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(i(n)||i(e.dom.getContentEditableParent(n)))&&t.preventDefault()})}var i=e.isContentEditableFalse,o=e.isContentEditableTrue;return{init:r}}),r(Qe,[d,ne,$,k,te,Ye,Ke,Ge,_,T,W,I,z,p,u,Je,S],function(e,t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g){function v(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function y(c){function y(e){return c.dom.isBlock(e)}function S(e){e&&c.selection.setRng(e)}function k(){return c.selection.getRng()}function T(e,t){c.selection.scrollIntoView(e,t)}function R(e,t,n){var r;return r=c.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(T(t,-1===e),ie.show(n,t))}function A(e){var t;return ie.hide(),t=c.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:B(e)}function B(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function D(e,t){var n=i.isInSameBlock(e,t);return!n&&l.isBr(e.getNode())?!0:n}function L(e,t){return t=i.normalizeRange(e,ee,t),-1==e?n.fromRangeStart(t):n.fromRangeEnd(t)}function M(e){return r.isCaretContainerBlock(e.startContainer)}function P(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=_(r),x(i))?R(e,i,-1==e):(s=M(r),o=L(e,r),n(o)?A(o.getNode(-1==e)):(o=t(o))?n(o)?R(e,o.getNode(-1==e),1==e):(a=t(o),n(a)&&D(o,a)?R(e,a.getNode(-1==e),1==e):s?V(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,c,u,d,f,p;if(p=_(n),r=L(e,n),i=t(ee,a.isAboveLine(1),r),o=h.filter(i,a.isLine(1)),c=h.last(r.getClientRects()),E(r)&&(p=r.getNode()),N(r)&&(p=r.getNode(!0)),!c)return null;if(u=c.left,l=s.findClosestClientRect(o,u),l&&x(l.node))return d=Math.abs(u-l.left),f=Math.abs(u-l.right),R(e,l.node,f>d);if(p){var m=a.positionsUntil(e,ee,a.isAboveLine(1),p);if(l=s.findClosestClientRect(h.filter(m,a.isLine(1)),u))return V(l.position.toRange());if(l=h.last(h.filter(m,a.isLine(0))))return V(l.position.toRange())}}function O(t,r){function i(){var t=c.dom.create(c.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='<br data-mce-bogus="1">'),t}var o,a,s;if(r.collapsed&&c.settings.forced_root_block){if(o=c.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?ne(n.fromRangeStart(r)):re(n.fromRangeStart(r)),a||(s=i(),1==t?c.$(o).after(s):c.$(o).before(s),c.selection.select(s,!0),c.selection.collapse())}}function I(e,t,n,r){var i;return(i=P(e,t,n,r))?i:(i=O(e,r),i?i:null)}function F(e,t,n){var r;return(r=H(e,t,n))?r:(r=O(e,n),r?r:null)}function z(){return se("*[data-mce-caret]")[0]}function U(e){e=se(e),e.attr("data-mce-caret")&&(ie.hide(),e.removeAttr("data-mce-caret"),e.removeAttr("data-mce-bogus"),e.removeAttr("style"),S(k()),T(e[0]))}function W(e){var t,r;return e=i.normalizeRange(1,ee,e),t=n.fromRangeStart(e),x(t.getNode())?R(1,t.getNode(),!t.isAtEnd()):x(t.getNode(!0))?R(1,t.getNode(!0),!1):(r=c.dom.getParent(t.getNode(),f.or(x,C)),x(r)?R(1,r,!1):(ie.hide(),null))}function V(e){var t;return e&&e.collapsed?(t=W(e),t?t:e):e}function $(e){var t,i,o,a;return x(e)?(x(e.previousSibling)&&(o=e.previousSibling),i=re(n.before(e)),i||(t=ne(n.after(e))),t&&w(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),c.dom.remove(e),J(),c.dom.isEmpty(c.getBody())?(c.setContent(""),void c.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function q(e,t,n){var r=c.dom,i,o,a,s;if(-1===e){if(N(n)&&y(n.getNode(!0)))return $(n.getNode(!0))}else if(E(t)&&y(t.getNode()))return $(t.getNode());if(s=c.schema.getTextBlockElements(),i=r.getParent(t.getNode(),r.isBlock),o=r.getParent(n.getNode(),r.isBlock),i===o||!s[i.nodeName]||!s[o.nodeName])return null;for(;a=i.firstChild;)o.appendChild(a);return c.dom.remove(i),n.toRange()}function j(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=_(i),x(o))?V($(o)):(a=L(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=-1==e?te.prev(a):te.next(a),l?V(l.toRange()):i):t(a)?V($(a.getNode(-1==e))):(s=-1==e?te.prev(a):te.next(a),t(s)?-1===e?q(e,a,s):q(e,s,a):void 0))}function Y(){function e(e,t){var n=t(k());n&&!e.isDefaultPrevented()&&(e.preventDefault(),S(n))}function r(e){for(var t=c.getBody();e&&e!=t;){if(C(e)||x(e))return e;e=e.parentNode}return null}function i(e,t,n){return n.collapsed?!1:h.reduce(n.getClientRects(),function(n,r){return n||u.containsXY(r,e,t)},!1)}function o(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=r(e.target);x(n)?t||(e.preventDefault(),G(A(n))):J()})}function l(){var e,t=r(c.selection.getNode());C(t)&&y(t)&&c.dom.isEmpty(t)&&(e=c.dom.create("br",{"data-mce-bogus":"1"}),c.$(t).empty().append(e),c.selection.setRng(n.before(e).toRange()))}function f(e){var t=z();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void U(t)):void("&nbsp;"!=t.innerHTML&&U(t))}function g(e){var t;switch(e.keyCode){case d.DELETE:t=l();break;case d.BACKSPACE:t=l()}t&&e.preventDefault()}var v=b(I,1,ne,E),w=b(I,-1,re,N),_=b(j,1,E,N),T=b(j,-1,N,E),B=b(F,-1,a.upUntil),D=b(F,1,a.downUntil);c.on("mouseup",function(){var e=k();e.collapsed&&S(W(e))}),c.on("click",function(e){var t;t=r(e.target),t&&x(t)&&e.preventDefault()});var L=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!N(o)},M=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n===r},P=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n&&!M(n,r)&&L(n)};o(c),c.on("mousedown",function(e){var t;if(t=r(e.target))x(t)?(e.preventDefault(),G(A(t))):(J(),i(e.clientX,e.clientY,c.selection.getRng())||c.selection.placeCaretAt(e.clientX,e.clientY));else{J(),ie.hide();var n=s.closestCaret(ee,e.clientX,e.clientY);n&&(P(e.target,n.node)||(e.preventDefault(),c.getBody().focus(),S(R(1,n.node,n.before))))}}),c.on("keydown",function(t){if(!d.modifierPressed(t))switch(t.keyCode){case d.RIGHT:e(t,v);break;case d.DOWN:e(t,D);break;case d.LEFT:e(t,w);break;case d.UP:e(t,B);break;case d.DELETE:e(t,_);break;case d.BACKSPACE:e(t,T);break;default:x(c.selection.getNode())&&t.preventDefault()}}),c.on("keyup compositionstart",function(e){f(e),g(e)},!0),c.on("cut",function(){var e=c.selection.getNode();x(e)&&p.setEditorTimeout(c,function(){S(V($(e)))})}),c.on("getSelectionRange",function(e){var t=e.range;if(ae){if(!ae.parentNode)return void(ae=null);t=t.cloneRange(),t.selectNode(ae),e.range=t}}),c.on("setSelectionRange",function(e){var t;t=G(e.range),t&&(e.range=t)}),c.on("focus",function(){p.setEditorTimeout(c,function(){c.selection.setRng(V(c.selection.getRng()))},0)}),m.init(c)}function X(){var e=c.contentStyles,t=".mce-content-body";e.push(ie.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;width: 100px;height: 100px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function K(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function G(t){var n,r=c.$,i=c.dom,o,a,s,l,u,d,f,h,p;if(!t)return J(),null;if(t.collapsed){if(J(),!K(t)){if(f=L(1,t),x(f.getNode()))return R(1,f.getNode(),!f.isAtEnd());if(x(f.getNode(!0)))return R(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,u=t.endOffset,3==s.nodeType&&0==l&&x(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?(J(),null):(u==l+1&&(n=s.childNodes[l]),x(n)?(h=p=n.cloneNode(!0),d=c.fire("ObjectSelected",{target:n,targetClone:h}),d.isDefaultPrevented()?(J(),null):(h=d.targetClone,o=r("#"+oe),0===o.length&&(o=r('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",oe),o.appendTo(c.getBody())),t=c.dom.createRng(),h===p&&e.ie?(o.empty().append(g.ZWSP).append(h).append(g.ZWSP),t.setStart(o[0].firstChild,0),t.setEnd(o[0].lastChild,1)):(o.empty().append("\xa0").append(h).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,c.getBody()).y}),o[0].focus(),a=c.selection.getSel(),a.removeAllRanges(),a.addRange(t),c.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ae=n,t)):(J(),null))}function J(){ae&&(ae.removeAttribute("data-mce-selected"),c.$("#"+oe).remove(),ae=null)}function Q(){ie.destroy(),ae=null}function Z(){ie.hide()}var ee=c.getBody(),te=new t(ee),ne=b(v,te.next),re=b(v,te.prev),ie=new o(c.getBody(),y),oe="sel-"+c.dom.uniqueId(),ae,se=c.$;return e.ceFalse&&(Y(),X()),{showBlockCaretContainer:U,hideFakeCaret:Z,destroy:Q}}var b=f.curry,C=l.isContentEditableTrue,x=l.isContentEditableFalse,w=l.isElement,N=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,_=c.getSelectedNode;return y}),r(Ze,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(et,[w,g,E,R,A,H,P,Y,J,Q,Z,ee,oe,ae,N,f,Ae,Pe,B,L,Oe,d,m,u,Ie,Fe,ze,je,Qe,Ze],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A){function B(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=P({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=P({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var D=e.DOM,L=r.ThemeManager,M=r.PluginManager,P=N.extend,H=N.each,O=N.explode,I=N.inArray,F=N.trim,z=N.resolve,U=g.Event,W=w.gecko,V=w.ie;return B.prototype={render:function(){function e(){D.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!L.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",L.load(r.theme,t)}N.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),H(r.external_plugins,function(e,t){M.load(t,e),r.plugins+=" "+t}),H(r.plugins.split(/[ ,]/),function(e){if(e=F(e),e&&!M.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=M.dependencies(e);H(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=M.createUrl(t,e),M.load(e.resource,e)})}else M.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!U.domLoaded)return void D.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||D.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(D.insertAfter(D.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},D.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=D.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=M.get(n),i,o;if(i=M.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=F(n),r&&-1===I(m,n)){if(H(M.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(this.editorManager.i18n.setCode(n.language),t.rtl=n.rtl_ui||this.editorManager.i18n.rtl,n.aria_label=n.aria_label||D.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=L.get(n.theme),t.theme=new c(t,L.urls[n.theme]),t.theme.init&&t.theme.init(t,L.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),H(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&H(O(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',!/#$/.test(document.location.href))for(p=0;p<t.contentCSS.length;p++){var g=t.contentCSS[p];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+N._addCacheSuffix(g)+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+n.content_security_policy+'" />'),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(u=v);var y=D.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},D.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=D.add(l.iframeContainer,y),V)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(D.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=D.isHidden(l.editorContainer)),t.getElement().style.display="none",D.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();D.removeClass(e,"mce-content-body"),D.removeClass(e,"mce-edit-focus"),D.setAttrib(e,"contentEditable",null)}),D.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==D.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,D.setAttrib(p,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){H(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",H(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),H(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&E.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),c;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),c=t(r.getNode()),n.$.contains(l,c))return c.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),W||i){if(l.setActive)try{l.setActive()}catch(u){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?z(r):0,n=z(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?H(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[F(e[0])]=F(e[1]):i[F(e[0])]=F(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(D.show(e.getContainer()),D.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(V&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(D.hide(e.getContainer()),D.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=D.getParent(t.id,"form"))&&H(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=V&&11>V?"":'<br data-mce-bogus="1">',"TABLE"==r.nodeName?e="<tr><td>"+o+"</td></tr>":/^(UL|OL)$/.test(r.nodeName)&&(e="<li>"+o+"</li>"),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):V||e||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=F(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?t.serializer.getTrimmedContent():"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=F(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=P({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=D.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=D.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),H(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&D.remove(e.getElement().nextSibling),e.inline||(V&&10>V&&e.getDoc().execCommand("SelectAll",!1,null),D.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),D.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),D.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},P(B.prototype,_),B}),r(tt,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(nt,[w,u,d],function(e,t,n){function r(e){function l(){try{return document.activeElement}catch(e){return document.body}}function c(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function u(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(e){return!!s.getParent(e,r.isEditorUIElement)}function f(r){var f=r.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=l();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=u(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;d(l())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=c(n.dom,n.lastRng)),r==document.body||d(r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function h(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i), +s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",f),e.on("RemoveEditor",h)}var i,o,a,s=e.DOM;return r.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},r}),r(rt,[et,g,w,ae,d,m,c,ue,tt,nt],function(e,t,n,r,i,o,a,s,l,c){function u(e){g(C.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function d(e,n){n!==x&&(n?t(window).on("resize scroll",u):t(window).off("resize scroll",u),x=n)}function f(e){var t=C.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return C.activeEditor==e&&(C.activeEditor=t[0]),C.focusedEditor==e&&(C.focusedEditor=null),n}function h(e){return e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(f(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null),e}var p=n.DOM,m=o.explode,g=o.each,v=o.extend,y=0,b,C,x=!1;return C={$:t,majorVersion:"4",minorVersion:"4.1",releaseDate:"2016-07-26",editors:[],i18n:l,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=r.getDocumentBaseUrl(document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){a=s[l].src;var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!=u.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}}!t&&document.currentScript&&(a=document.currentScript.src,-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new c(e)},overrideDefaults:function(e){var t,n;t=e.base_url,t&&(this.baseURL=new r(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new r(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n),this.defaultSettings=e},init:function(n){function r(e,t){return e.inline&&t.tagName.toLowerCase()in C}function i(e,t){window.console&&!window.test&&window.console.log(e,t)}function s(e){var t=e.id;return t||(t=e.name,t=t&&!p.get(t)?e.name:p.uniqueId(),e.setAttribute("id",t)),t}function l(e){var t=n[e];if(t)return t.apply(f,Array.prototype.slice.call(arguments,2))}function c(e,t){return t.constructor===RegExp?t.test(e.className):p.hasClass(e,t)}function u(e){var t,n=[];if(e.types)return g(e.types,function(e){n=n.concat(p.select(e.selector))}),n;if(e.selector)return p.select(e.selector);if(e.target)return[e.target];switch(e.mode){case"exact":t=e.elements||"",t.length>0&&g(m(t),function(e){var t;(t=p.get(e))?n.push(t):g(document.forms,function(t){g(t.elements,function(t){t.name===e&&(e="mce_editor_"+y++,p.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":g(p.select("textarea"),function(t){e.editor_deselector&&c(t,e.editor_deselector)||e.editor_selector&&!c(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);m.push(i),i.on("init",function(){++c===y.length&&x(m)}),i.targetElm=i.targetElm||r,i.render()}var c=0,m=[],y;return p.unbind(window,"ready",d),l("onpageload"),y=t.unique(u(n)),n.types?void g(n.types,function(e){o.each(y,function(t){return p.is(t,e.selector)?(a(s(t),v({},n,e),t),!1):!0})}):(o.each(y,function(e){h(f.get(e.id))}),y=o.grep(y,function(e){return!f.get(e.id)}),void g(y,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,b,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){b=e};return f.settings=n,p.bind(window,"ready",d),new a(function(e){b?e(b):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),d(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),b||(b=function(){t.fire("BeforeUnload")},p.bind(window,"beforeunload",b)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void g(p.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(f(i)&&t.fire("RemoveEditor",{editor:i}),r.length||p.unbind(window,"beforeunload",b),i.remove(),d(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){g(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},v(C,s),C.setup(),window.tinymce=window.tinyMCE=C,C}),r(it,[rt,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(ot,[ue,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&1e4>o&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(at,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(st,[at,ot,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(lt,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(ct,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(ut,[w,f,N,E,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(dt,[se,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(ft,[dt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(ht,[De],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(o)+"</span>"),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+a+"</button></div>"},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append('<span class="'+r+'"></span>'),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(pt,[xe],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(mt,[De],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(gt,[De,be,pe,g],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.classes.add("has-open")),'<div id="'+t+'" class="'+e.classes+'"><input id="'+t+'-inp" class="'+r+'textbox" value="'+e.encode(i,!1)+'" hidefocus="1"'+l+' placeholder="'+e.encode(n.placeholder)+'" />'+s+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r(vt,[gt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(yt,[ht,ke],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(bt,[yt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(r)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+a+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Ct,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(xt,[De,we,pe,Ct],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(wt,[De],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes+'">'+e._getDataPathHtml(e.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'<div class="'+a+'divider" aria-hidden="true"> '+t.settings.delimiter+" </div>":"")+'<div role="button" class="'+a+"path-item"+(r==i-1?" "+a+"last":"")+'" data-index="'+r+'" tabindex="-1" id="'+t._id+"-"+r+'" aria-level="'+r+'">'+n[r].name+"</div>";return o||(o='<div class="'+a+'path-item">\xa0</div>'),o}})}),r(Nt,[wt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(Et,[xe],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(_t,[xe,Et,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(St,[_t],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(kt,[gt,m],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[e.filetype]||(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(Tt,[ft],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Rt,[ft],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,H,O,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",H="left",M="w",D="x",L="innerW",P="minW",O="right",I="deltaW",F="contentW"):(S="x",E="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",H="top",M="h",D="y",L="innerH",P="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],N=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[_],y=o[H]+p[P]+o[O],y>N&&(N=y);if(x={},0>d?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=N+i[I],x[B]=i[R]-d,x[F]=N,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[_]+p.flex*C,y>b?(d-=p[k]-p[_],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[H],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[_],"center"===s?x[D]=Math.round(i[L]/2-p[M]/2):"stretch"===s?(x[M]=z(p[P]||0,i[L]-o[H]-o[O]),x[D]=o[H]):"end"===s&&(x[D]=i[L]-p[M]-o.top),p.flex>0&&(y+=p.flex*C),x[E]=y,x[S]=w,h.layoutRect(x),h.recalc&&h.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(At,[dt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(Bt,[ye,De,ke,m,rt,d],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{ +var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&c(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function a(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function l(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function c(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var u;u=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:o(n),onclick:function(){c(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:o(n)})}),e.addButton("undo",{tooltip:"Undo",onPostRender:a("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:a("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:l,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),s({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:u}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:c,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:u})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(Dt,[ft],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)_.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,N=0,f=0;n>f;f++)N+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,N+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=N+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;d<M.length;d++)L+=M[d];else L=r;var P=T/L;for(d=0;r>d;d++)E[d]+=M?M[d]*P:P;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=_[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var H=e.parent();H&&(H._lastRect=null,H.recalc())}}})}),r(Lt,[De,u],function(e,t){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Mt,[De],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Pt,[De,pe],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'<label id="'+e._id+'" class="'+e.classes+'"'+(r?' for="'+r+'"':"")+">"+e.encode(e.state.get("text"))+"</label>":'<span id="'+e._id+'" class="'+e.classes+'">'+e.encode(e.state.get("text"))+"</span>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ht,[xe],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(Ot,[Ht],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(It,[ht,be,Ot],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s='<span class="'+r+'txt">'+e.encode(a)+"</span>"),i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+s+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(Ft,[De,be,d,u],function(e,t,n,r){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return e.join("+")}var t=this,r=t._id,i=t.settings,o=t.classPrefix,a=t.encode(t.state.get("text")),s=t.settings.icon,l="",c=i.shortcut;return s&&t.parent().classes.add("menu-has-icons"),i.image&&(l=" style=\"background-image: url('"+i.image+"')\""),c&&(c=e(c)),s=o+"ico "+o+"i-"+(t.settings.icon||"none"),'<div id="'+r+'" class="'+t.classes+'" tabindex="-1">'+("-"!==a?'<i class="'+s+'"'+l+"></i>\xa0":"")+("-"!==a?'<span id="'+r+'-text" class="'+o+'text">'+a+"</span>":"")+(c?'<div id="'+r+'-shortcut" class="'+o+'menu-shortcut">'+c+"</div>":"")+(i.menu?'<div class="'+o+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&i.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var e=this;return e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(zt,[g,ye,u],function(e,t,n){return function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,c){function u(){a&&(e(r).append('<div class="'+s+"throbber"+(i?" "+s+"throbber-inline":"")+'"></div>'),c&&c())}return o.hide(),a=!0,t?l=n.setTimeout(u,t):u(),o},o.hide=function(){var e=r.lastChild;return n.clearTimeout(l),e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),a=!1,o}}}),r(Ut,[ke,Ft,zt,m],function(e,t,n,r){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},load:function(){function e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",e)),t.requestTime=r=(new Date).getTime(),t.settings.itemsFactory(function(n){return 0===n.length?void t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Wt,[It,Ut],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value)return o=o||r[a].text,n.state.set("value",r[a].value),!0;if(r[a].menu&&t(r[a].menu))return!0}}var n=this,r,i,o,a;n._super(e),e=n.settings,n._values=r=e.values,r&&("undefined"!=typeof e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i<e.length;i++){if(e[i].value===t)return e[i];if(e[i].menu&&(r=n(e[i].menu,t)))return r}}var r=this;return r.on("show",function(t){e(t.control,r.value())}),r.state.on("change:value",function(e){var t=n(r.state.get("menu"),e.value);t?r.text(t.text):r.text(r.settings.text)}),r._super()}})}),r(Vt,[mt],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r($t,[De,we],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"==e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(qt,[De],function(e){function t(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}return e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e=this,n,r="";return n=t(e._options),e.size&&(r=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+r+">"+n+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(jt,[De,we,pe],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var r,o,a,s,l,c;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),c=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(c)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",c.style[s]=l,c.style.height=e.layoutRect().h+"px",i(c,"valuenow",t),i(c,"valuetext",""+e.settings.previewFilter(t)),i(c,"valuemin",e._minValue),i(c,"valuemax",e._maxValue)}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div id="'+t+'-handle" class="'+n+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function o(t,n){function o(o){var a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case 37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var a,l,c,p,m;s._dragHelper=new t(s._id,{handle:s._id+"-handle",start:function(e){a=e[u],l=parseInt(s.getEl("handle").style[d],10),c=(s.layoutRect()[h]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var n=t[u]-a;p=r(l+n,0,c),o.style[d]=p+"px",m=e+p/c*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var s=this,l,c,u,d,f,h;l=s._minValue,c=s._maxValue,"v"==s.settings.orientation?(u="screenY",d="top",f="height",h="h"):(u="screenX",d="left",f="width",h="w"),s._super(),o(l,c,s.getEl("handle")),a(l,c,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(Yt,[De],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"></div>'}})}),r(Xt,[It,pe,g],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(o)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(i?'<i class="'+i+'"'+r+"></i>":"")+a+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(Kt,[At],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(Gt,[Ee,g,pe],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(Jt,[De,m,pe],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,r=e.settings,i,o;return i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(Qt,[],function(){var e=this||window,t=function(){return e.tinymce};return"function"==typeof e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),{}}),a([l,c,u,d,f,h,m,g,v,y,C,w,N,E,T,A,B,D,L,M,P,H,I,F,j,Y,J,Q,oe,ae,se,le,ue,fe,he,ve,ye,be,Ce,xe,we,Ne,Ee,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Ie,ze,et,tt,nt,rt,ot,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,Ct,xt,wt,Nt,Et,_t,St,kt,Tt,Rt,At,Bt,Dt,Lt,Mt,Pt,Ht,Ot,It,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt])}(this); \ No newline at end of file diff --git a/plugins/toastr/toastr.min.css b/plugins/toastr/toastr.min.css new file mode 100644 index 0000000..d109d13 --- /dev/null +++ b/plugins/toastr/toastr.min.css @@ -0,0 +1 @@ +.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}} \ No newline at end of file diff --git a/plugins/toastr/toastr.min.js b/plugins/toastr/toastr.min.js new file mode 100644 index 0000000..227d9e1 --- /dev/null +++ b/plugins/toastr/toastr.min.js @@ -0,0 +1,2 @@ +!function(e){e(["jquery"],function(e){return function(){function t(e,t,n){return g({type:O.error,iconClass:m().iconClasses.error,message:e,optionsOverride:n,title:t})}function n(t,n){return t||(t=m()),v=e("#"+t.containerId),v.length?v:(n&&(v=u(t)),v)}function i(e,t,n){return g({type:O.info,iconClass:m().iconClasses.info,message:e,optionsOverride:n,title:t})}function o(e){w=e}function s(e,t,n){return g({type:O.success,iconClass:m().iconClasses.success,message:e,optionsOverride:n,title:t})}function a(e,t,n){return g({type:O.warning,iconClass:m().iconClasses.warning,message:e,optionsOverride:n,title:t})}function r(e,t){var i=m();v||n(i),l(e,i,t)||d(i)}function c(t){var i=m();return v||n(i),t&&0===e(":focus",t).length?void h(t):void(v.children().length&&v.remove())}function d(t){for(var n=v.children(),i=n.length-1;i>=0;i--)l(e(n[i]),t)}function l(t,n,i){var o=i&&i.force?i.force:!1;return t&&(o||0===e(":focus",t).length)?(t[n.hideMethod]({duration:n.hideDuration,easing:n.hideEasing,complete:function(){h(t)}}),!0):!1}function u(t){return v=e("<div/>").attr("id",t.containerId).addClass(t.positionClass).attr("aria-live","polite").attr("role","alert"),v.appendTo(e(t.target)),v}function p(){return{tapToDismiss:!0,toastClass:"toast",containerId:"toast-container",debug:!1,showMethod:"fadeIn",showDuration:300,showEasing:"swing",onShown:void 0,hideMethod:"fadeOut",hideDuration:1e3,hideEasing:"swing",onHidden:void 0,closeMethod:!1,closeDuration:!1,closeEasing:!1,extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},iconClass:"toast-info",positionClass:"toast-top-right",timeOut:5e3,titleClass:"toast-title",messageClass:"toast-message",escapeHtml:!1,target:"body",closeHtml:'<button type="button">&times;</button>',newestOnTop:!0,preventDuplicates:!1,progressBar:!1}}function f(e){w&&w(e)}function g(t){function i(e){return null==e&&(e=""),new String(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function o(){r(),d(),l(),u(),p(),c()}function s(){y.hover(b,O),!x.onclick&&x.tapToDismiss&&y.click(w),x.closeButton&&k&&k.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),w(!0)}),x.onclick&&y.click(function(e){x.onclick(e),w()})}function a(){y.hide(),y[x.showMethod]({duration:x.showDuration,easing:x.showEasing,complete:x.onShown}),x.timeOut>0&&(H=setTimeout(w,x.timeOut),q.maxHideTime=parseFloat(x.timeOut),q.hideEta=(new Date).getTime()+q.maxHideTime,x.progressBar&&(q.intervalId=setInterval(D,10)))}function r(){t.iconClass&&y.addClass(x.toastClass).addClass(E)}function c(){x.newestOnTop?v.prepend(y):v.append(y)}function d(){t.title&&(I.append(x.escapeHtml?i(t.title):t.title).addClass(x.titleClass),y.append(I))}function l(){t.message&&(M.append(x.escapeHtml?i(t.message):t.message).addClass(x.messageClass),y.append(M))}function u(){x.closeButton&&(k.addClass("toast-close-button").attr("role","button"),y.prepend(k))}function p(){x.progressBar&&(B.addClass("toast-progress"),y.prepend(B))}function g(e,t){if(e.preventDuplicates){if(t.message===C)return!0;C=t.message}return!1}function w(t){var n=t&&x.closeMethod!==!1?x.closeMethod:x.hideMethod,i=t&&x.closeDuration!==!1?x.closeDuration:x.hideDuration,o=t&&x.closeEasing!==!1?x.closeEasing:x.hideEasing;return!e(":focus",y).length||t?(clearTimeout(q.intervalId),y[n]({duration:i,easing:o,complete:function(){h(y),x.onHidden&&"hidden"!==j.state&&x.onHidden(),j.state="hidden",j.endTime=new Date,f(j)}})):void 0}function O(){(x.timeOut>0||x.extendedTimeOut>0)&&(H=setTimeout(w,x.extendedTimeOut),q.maxHideTime=parseFloat(x.extendedTimeOut),q.hideEta=(new Date).getTime()+q.maxHideTime)}function b(){clearTimeout(H),q.hideEta=0,y.stop(!0,!0)[x.showMethod]({duration:x.showDuration,easing:x.showEasing})}function D(){var e=(q.hideEta-(new Date).getTime())/q.maxHideTime*100;B.width(e+"%")}var x=m(),E=t.iconClass||x.iconClass;if("undefined"!=typeof t.optionsOverride&&(x=e.extend(x,t.optionsOverride),E=t.optionsOverride.iconClass||E),!g(x,t)){T++,v=n(x,!0);var H=null,y=e("<div/>"),I=e("<div/>"),M=e("<div/>"),B=e("<div/>"),k=e(x.closeHtml),q={intervalId:null,hideEta:null,maxHideTime:null},j={toastId:T,state:"visible",startTime:new Date,options:x,map:t};return o(),a(),s(),f(j),x.debug&&console&&console.log(j),y}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),C=void 0))}var v,w,C,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:i,options:{},subscribe:o,success:s,version:"2.1.2",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map \ No newline at end of file diff --git a/plugins/tooltipster/tooltipster.bundle.min.css b/plugins/tooltipster/tooltipster.bundle.min.css new file mode 100644 index 0000000..d8f30fe --- /dev/null +++ b/plugins/tooltipster/tooltipster.bundle.min.css @@ -0,0 +1 @@ +.tooltipster-fall,.tooltipster-grow.tooltipster-show{-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-base{display:flex;pointer-events:none;position:absolute}.tooltipster-box{flex:1 1 auto}.tooltipster-content{box-sizing:border-box;max-height:100%;max-width:100%;overflow:auto}.tooltipster-ruler{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden}.tooltipster-fade{opacity:0;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;-ms-transition-property:opacity;transition-property:opacity}.tooltipster-fade.tooltipster-show{opacity:1}.tooltipster-grow{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-o-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-backface-visibility:hidden}.tooltipster-grow.tooltipster-show{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-o-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-swing{opacity:0;-webkit-transform:rotateZ(4deg);-moz-transform:rotateZ(4deg);-o-transform:rotateZ(4deg);-ms-transform:rotateZ(4deg);transform:rotateZ(4deg);-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform}.tooltipster-swing.tooltipster-show{opacity:1;-webkit-transform:rotateZ(0);-moz-transform:rotateZ(0);-o-transform:rotateZ(0);-ms-transform:rotateZ(0);transform:rotateZ(0);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,1);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-moz-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-ms-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-o-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);transition-timing-function:cubic-bezier(.23,.635,.495,2.4)}.tooltipster-fall{-webkit-transition-property:top;-moz-transition-property:top;-o-transition-property:top;-ms-transition-property:top;transition-property:top;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-fall.tooltipster-initial{top:0!important}.tooltipster-fall.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;top:0!important;opacity:0}.tooltipster-slide{-webkit-transition-property:left;-moz-transition-property:left;-o-transition-property:left;-ms-transition-property:left;transition-property:left;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-slide.tooltipster-initial{left:-40px!important}.tooltipster-slide.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;left:0!important;opacity:0}@keyframes tooltipster-fading{0%{opacity:0}100%{opacity:1}}.tooltipster-update-fade{animation:tooltipster-fading .4s}@keyframes tooltipster-rotating{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}100%{transform:rotate(0)}}.tooltipster-update-rotate{animation:tooltipster-rotating .6s}@keyframes tooltipster-scaling{50%{transform:scale(1.1)}100%{transform:scale(1)}}.tooltipster-update-scale{animation:tooltipster-scaling .6s}.tooltipster-sidetip .tooltipster-box{background:#565656;border:2px solid #000;border-radius:4px}.tooltipster-sidetip.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip .tooltipster-content{color:#fff;line-height:18px;padding:6px 14px}.tooltipster-sidetip .tooltipster-arrow{overflow:hidden;position:absolute}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow{height:10px;margin-left:-10px;top:0;width:20px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow{height:20px;margin-top:-10px;right:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow{height:20px;margin-top:-10px;left:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow{bottom:0;height:10px;margin-left:-10px;width:20px}.tooltipster-sidetip .tooltipster-arrow-background,.tooltipster-sidetip .tooltipster-arrow-border{height:0;position:absolute;width:0}.tooltipster-sidetip .tooltipster-arrow-background{border:10px solid transparent}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#565656;left:0;top:3px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#565656;left:-3px;top:0}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{border-right-color:#565656;left:3px;top:0}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#565656;left:0;top:-3px}.tooltipster-sidetip .tooltipster-arrow-border{border:10px solid transparent;left:0;top:0}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#000}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border{border-left-color:#000}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border{border-right-color:#000}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{border-top-color:#000}.tooltipster-sidetip .tooltipster-arrow-uncropped{position:relative}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped{top:-10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped{left:-10px} \ No newline at end of file diff --git a/plugins/tooltipster/tooltipster.bundle.min.js b/plugins/tooltipster/tooltipster.bundle.min.js new file mode 100644 index 0000000..4275ee0 --- /dev/null +++ b/plugins/tooltipster/tooltipster.bundle.min.js @@ -0,0 +1,2 @@ +/*! tooltipster v4.1.2 */!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){function b(a){this.$container,this.constraints=null,this.__$tooltip,this.__init(a)}function c(b,c){var d=!0;return a.each(b,function(a,e){return void 0===c[a]||b[a]!==c[a]?(d=!1,!1):void 0}),d}function d(b){var c=b.attr("id"),d=c?h.window.document.getElementById(c):null;return d?d===b[0]:a.contains(h.window.document.body,b[0])}function e(){if(!g)return!1;var a=g.document.body||g.document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if("string"==typeof b[d[e]+c])return!0;return!1}var f={animation:"fade",animationDuration:350,content:null,contentAsHTML:!1,contentCloning:!1,debug:!0,delay:300,delayTouch:[300,500],functionInit:null,functionBefore:null,functionReady:null,functionAfter:null,functionFormat:null,IEmin:6,interactive:!1,multiple:!1,parent:"body",plugins:["sideTip"],repositionOnScroll:!1,restoration:"none",selfDestruction:!0,theme:[],timer:0,trackerInterval:500,trackOrigin:!1,trackTooltip:!1,trigger:"hover",triggerClose:{click:!1,mouseleave:!1,originClick:!1,scroll:!1,tap:!1,touchleave:!1},triggerOpen:{click:!1,mouseenter:!1,tap:!1,touchstart:!1},updateAnimation:"rotate",zIndex:9999999},g="undefined"!=typeof window?window:null,h={hasTouchCapability:!(!g||!("ontouchstart"in g||g.DocumentTouch&&g.document instanceof g.DocumentTouch||g.navigator.maxTouchPoints)),hasTransitions:e(),IE:!1,semVer:"4.1.2",window:g},i=function(){this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__instancesLatestArr=[],this.__plugins={},this._env=h};i.prototype={__bridge:function(b,c,d){if(!c[d]){var e=function(){};e.prototype=b;var g=new e;g.__init&&g.__init(c),a.each(b,function(a,b){0!=a.indexOf("__")&&(c[a]?f.debug&&console.log("The "+a+" method of the "+d+" plugin conflicts with another plugin or native methods"):(c[a]=function(){return g[a].apply(g,Array.prototype.slice.apply(arguments))},c[a].bridged=g))}),c[d]=g}return this},__setWindow:function(a){return h.window=a,this},_getRuler:function(a){return new b(a)},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_plugin:function(b){var c=this;if("string"==typeof b){var d=b,e=null;return d.indexOf(".")>0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)=="."+d?(e=b,!1):void 0}),e}if(b.name.indexOf(".")<0)throw new Error("Plugins must be namespaced");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return"string"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||".tooltipstered";return a(d).each(function(){var b=a(this),d=b.data("tooltipster-ns");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+" ":"";return a(c+".tooltipstered").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__destroying=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace="tooltipster-"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state="closed",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data("tooltipster-initialTitle")&&(e=d._$origin.attr("title"),void 0===e&&(e=null),d._$origin.data("tooltipster-initialTitle",e)),null!==d.__options.content)d.__contentSet(d.__options.content);else{var g,i=d._$origin.attr("data-tooltip-content");i&&(g=a(i)),g&&g[0]?d.__contentSet(g.first()):d.__contentSet(e)}d._$origin.removeAttr("title").addClass("tooltipstered"),d.__prepareOrigin(),d.__prepareGC(),a.each(d.__options.plugins,function(a,b){d._plug(b)}),h.hasTouchCapability&&a("body").on("touchmove."+d.__namespace+"-triggerOpen",function(a){d._touchRecordEvent(a)}),d._on("created",function(){d.__prepareTooltip()})._on("repositioned",function(a){d.__lastPosition=a.position})}else d.__options.disabled=!0},__contentInsert:function(){var a=this,b=a._$tooltip.find(".tooltipster-content"),c=a.__Content,d=function(a){c=a};return a._trigger({type:"format",content:a.__Content,format:d}),a.__options.functionFormat&&(c=a.__options.functionFormat.call(a,a,{origin:a._$origin[0]},a.__Content)),"string"!=typeof c||a.__options.contentAsHTML?b.empty().append(c):b.text(c),a},__contentSet:function(b){return b instanceof a&&this.__options.contentCloning&&(b=b.clone(!0)),this.__Content=b,this._trigger({type:"updated",content:b}),this},__destroyError:function(){throw new Error("This tooltip has been destroyed and cannot execute your method call.")},__geometry:function(){var b=this,c=b._$origin,d=b._$origin.is("area");if(d){var e=b._$origin.parent().attr("name");c=a('img[usemap="#'+e+'"]')}var f=c[0].getBoundingClientRect(),g=a(h.window.document),i=a(h.window),j=c,k={available:{document:null,window:null},document:{size:{height:g.height(),width:g.width()}},window:{scroll:{left:h.window.scrollX||h.window.document.documentElement.scrollLeft,top:h.window.scrollY||h.window.document.documentElement.scrollTop},size:{height:i.height(),width:i.width()}},origin:{fixedLineage:!1,offset:{},size:{height:f.bottom-f.top,width:f.right-f.left},usemapImage:d?c[0]:null,windowOffset:{bottom:f.bottom,left:f.left,right:f.right,top:f.top}}};if(d){var l=b._$origin.attr("shape"),m=b._$origin.attr("coords");if(m&&(m=m.split(","),a.map(m,function(a,b){m[b]=parseInt(a)})),"default"!=l)switch(l){case"circle":var n=m[0],o=m[1],p=m[2],q=o-p,r=n-p;k.origin.size.height=2*p,k.origin.size.width=k.origin.size.height,k.origin.windowOffset.left+=r,k.origin.windowOffset.top+=q;break;case"rect":var s=m[0],t=m[1],u=m[2],v=m[3];k.origin.size.height=v-t,k.origin.size.width=u-s,k.origin.windowOffset.left+=s,k.origin.windowOffset.top+=t;break;case"poly":for(var w=0,x=0,y=0,z=0,A="even",B=0;B<m.length;B++){var C=m[B];"even"==A?(C>y&&(y=C,0===B&&(w=y)),w>C&&(w=C),A="odd"):(C>z&&(z=C,1==B&&(x=z)),x>C&&(x=C),A="even")}k.origin.size.height=z-x,k.origin.size.width=y-w,k.origin.windowOffset.left+=w,k.origin.windowOffset.top+=x}}var D=function(a){k.origin.size.height=a.height,k.origin.windowOffset.left=a.left,k.origin.windowOffset.top=a.top,k.origin.size.width=a.width};for(b._trigger({type:"geometry",edit:D,geometry:{height:k.origin.size.height,left:k.origin.windowOffset.left,top:k.origin.windowOffset.top,width:k.origin.size.width}}),k.origin.windowOffset.right=k.origin.windowOffset.left+k.origin.size.width,k.origin.windowOffset.bottom=k.origin.windowOffset.top+k.origin.size.height,k.origin.offset.left=k.origin.windowOffset.left+h.window.scrollX,k.origin.offset.top=k.origin.windowOffset.top+h.window.scrollY,k.origin.offset.bottom=k.origin.offset.top+k.origin.size.height,k.origin.offset.right=k.origin.offset.left+k.origin.size.width,k.available.document={bottom:{height:k.document.size.height-k.origin.offset.bottom,width:k.document.size.width},left:{height:k.document.size.height,width:k.origin.offset.left},right:{height:k.document.size.height,width:k.document.size.width-k.origin.offset.right},top:{height:k.origin.offset.top,width:k.document.size.width}},k.available.window={bottom:{height:Math.max(k.window.size.height-Math.max(k.origin.windowOffset.bottom,0),0),width:k.window.size.width},left:{height:k.window.size.height,width:Math.max(k.origin.windowOffset.left,0)},right:{height:k.window.size.height,width:Math.max(k.window.size.width-Math.max(k.origin.windowOffset.right,0),0)},top:{height:Math.max(k.origin.windowOffset.top,0),width:k.window.size.width}};"html"!=j[0].tagName.toLowerCase();){if("fixed"==j.css("position")){k.origin.fixedLineage=!0;break}j=j.parent()}return k},__optionsFormat:function(){return"number"==typeof this.__options.animationDuration&&(this.__options.animationDuration=[this.__options.animationDuration,this.__options.animationDuration]),"number"==typeof this.__options.delay&&(this.__options.delay=[this.__options.delay,this.__options.delay]),"number"==typeof this.__options.delayTouch&&(this.__options.delayTouch=[this.__options.delayTouch,this.__options.delayTouch]),"string"==typeof this.__options.theme&&(this.__options.theme=[this.__options.theme]),"string"==typeof this.__options.parent&&(this.__options.parent=a(this.__options.parent)),"hover"==this.__options.trigger?(this.__options.triggerOpen={mouseenter:!0,touchstart:!0},this.__options.triggerClose={mouseleave:!0,originClick:!0,touchleave:!0}):"click"==this.__options.trigger&&(this.__options.triggerOpen={click:!0,tap:!0},this.__options.triggerClose={click:!0,tap:!0}),this._trigger("options"),this},__prepareGC:function(){var b=this;return b.__options.selfDestruction?b.__garbageCollector=setInterval(function(){var c=(new Date).getTime();b.__touchEvents=a.grep(b.__touchEvents,function(a,b){return c-a.time>6e4}),d(b._$origin)||b.destroy()},2e4):clearInterval(b.__garbageCollector),b},__prepareOrigin:function(){var a=this;if(a._$origin.off("."+a.__namespace+"-triggerOpen"),h.hasTouchCapability&&a._$origin.on("touchstart."+a.__namespace+"-triggerOpen touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen",function(b){a._touchRecordEvent(b)}),a.__options.triggerOpen.click||a.__options.triggerOpen.tap&&h.hasTouchCapability){var b="";a.__options.triggerOpen.click&&(b+="click."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.tap&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&a._open(b)})}if(a.__options.triggerOpen.mouseenter||a.__options.triggerOpen.touchstart&&h.hasTouchCapability){var b="";a.__options.triggerOpen.mouseenter&&(b+="mouseenter."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.touchstart&&h.hasTouchCapability&&(b+="touchstart."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){!a._touchIsTouchEvent(b)&&a._touchIsEmulatedEvent(b)||(a.__pointerIsOverOrigin=!0,a._openShortly(b))})}if(a.__options.triggerClose.mouseleave||a.__options.triggerClose.touchleave&&h.hasTouchCapability){var b="";a.__options.triggerClose.mouseleave&&(b+="mouseleave."+a.__namespace+"-triggerOpen "),a.__options.triggerClose.touchleave&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&(a.__pointerIsOverOrigin=!1)})}return a},__prepareTooltip:function(){var b=this,c=b.__options.interactive?"auto":"";return b._$tooltip.attr("id",b.__namespace).css({"pointer-events":c,zIndex:b.__options.zIndex}),a.each(b.__previousThemes,function(a,c){b._$tooltip.removeClass(c)}),a.each(b.__options.theme,function(a,c){b._$tooltip.addClass(c)}),b.__previousThemes=a.merge([],b.__options.theme),b},__scrollHandler:function(b){var c=this;if(c.__options.triggerClose.scroll)c._close(b);else{if(b.target===h.window.document)c.__Geometry.origin.fixedLineage||c.__options.repositionOnScroll&&c.reposition(b);else{var d=c.__geometry(),e=!1;if("fixed"!=c._$origin.css("position")&&c.__$originParents.each(function(b,c){var f=a(c),g=f.css("overflow-x"),h=f.css("overflow-y");if("visible"!=g||"visible"!=h){var i=c.getBoundingClientRect();if("visible"!=g&&(d.origin.windowOffset.left<i.left||d.origin.windowOffset.right>i.right))return e=!0,!1;if("visible"!=h&&(d.origin.windowOffset.top<i.top||d.origin.windowOffset.bottom>i.bottom))return e=!0,!1}return"fixed"==f.css("position")?!1:void 0}),e)c._$tooltip.css("visibility","hidden");else if(c._$tooltip.css("visibility","visible"),c.__options.repositionOnScroll)c.reposition(b);else{var f=d.origin.offset.left-c.__Geometry.origin.offset.left,g=d.origin.offset.top-c.__Geometry.origin.offset.top;c._$tooltip.css({left:c.__lastPosition.coord.left+f,top:c.__lastPosition.coord.top+g})}}c._trigger({type:"scroll",event:b})}return c},__stateSet:function(a){return this.__state=a,this._trigger({type:"state",state:a}),this},__timeoutsClear:function(){return clearTimeout(this.__timeouts.open),this.__timeouts.open=null,a.each(this.__timeouts.close,function(a,b){clearTimeout(b)}),this.__timeouts.close=[],this},__trackerStart:function(){var a=this,b=a._$tooltip.find(".tooltipster-content");return a.__options.trackTooltip&&(a.__contentBcr=b[0].getBoundingClientRect()),a.__tracker=setInterval(function(){if(d(a._$origin)&&d(a._$tooltip)){if(a.__options.trackOrigin){var e=a.__geometry(),f=!1;c(e.origin.size,a.__Geometry.origin.size)&&(a.__Geometry.origin.fixedLineage?c(e.origin.windowOffset,a.__Geometry.origin.windowOffset)&&(f=!0):c(e.origin.offset,a.__Geometry.origin.offset)&&(f=!0)),f||(a.__options.triggerClose.mouseleave?a._close():a.reposition())}if(a.__options.trackTooltip){var g=b[0].getBoundingClientRect();g.height===a.__contentBcr.height&&g.width===a.__contentBcr.width||(a.reposition(),a.__contentBcr=g)}}else a._close()},a.__options.trackerInterval),a},_close:function(b,c){var d=this,e=!0;if(d._trigger({type:"close",event:b,stop:function(){e=!1}}),e||d.__destroying){c&&d.__callbacks.close.push(c),d.__callbacks.open=[],d.__timeoutsClear();var f=function(){a.each(d.__callbacks.close,function(a,c){c.call(d,d,{event:b,origin:d._$origin[0]})}),d.__callbacks.close=[]};if("closed"!=d.__state){var g=!0,i=new Date,j=i.getTime(),k=j+d.__options.animationDuration[1];if("disappearing"==d.__state&&k>d.__closingTime&&(g=!1),g){d.__closingTime=k,"disappearing"!=d.__state&&d.__stateSet("disappearing");var l=function(){clearInterval(d.__tracker),d._trigger({type:"closing",event:b}),d._$tooltip.off("."+d.__namespace+"-triggerClose").removeClass("tooltipster-dying"),a(h.window).off("."+d.__namespace+"-triggerClose"),d.__$originParents.each(function(b,c){a(c).off("scroll."+d.__namespace+"-triggerClose")}),d.__$originParents=null,a("body").off("."+d.__namespace+"-triggerClose"),d._$origin.off("."+d.__namespace+"-triggerClose"),d._off("dismissable"),d.__stateSet("closed"),d._trigger({type:"after",event:b}),d.__options.functionAfter&&d.__options.functionAfter.call(d,d,{event:b}),f()};h.hasTransitions?(d._$tooltip.css({"-moz-animation-duration":d.__options.animationDuration[1]+"ms","-ms-animation-duration":d.__options.animationDuration[1]+"ms","-o-animation-duration":d.__options.animationDuration[1]+"ms","-webkit-animation-duration":d.__options.animationDuration[1]+"ms","animation-duration":d.__options.animationDuration[1]+"ms","transition-duration":d.__options.animationDuration[1]+"ms"}),d._$tooltip.clearQueue().removeClass("tooltipster-show").addClass("tooltipster-dying"),d.__options.animationDuration[1]>0&&d._$tooltip.delay(d.__options.animationDuration[1]),d._$tooltip.queue(l)):d._$tooltip.stop().fadeOut(d.__options.animationDuration[1],l)}}else f()}return d},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_open:function(b,c){var e=this;if(!e.__destroying&&d(e._$origin)&&e.__enabled){var f=!0;if("closed"==e.__state&&(e._trigger({type:"before",event:b,stop:function(){f=!1}}),f&&e.__options.functionBefore&&(f=e.__options.functionBefore.call(e,e,{event:b,origin:e._$origin[0]}))),f!==!1&&null!==e.__Content){c&&e.__callbacks.open.push(c),e.__callbacks.close=[],e.__timeoutsClear();var g,i=function(){"stable"!=e.__state&&e.__stateSet("stable"),a.each(e.__callbacks.open,function(a,b){b.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}),e.__callbacks.open=[]};if("closed"!==e.__state)g=0,"disappearing"===e.__state?(e.__stateSet("appearing"),h.hasTransitions?(e._$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-show"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i)):e._$tooltip.stop().fadeIn(i)):"stable"==e.__state&&i();else{if(e.__stateSet("appearing"),g=e.__options.animationDuration[0],e.__contentInsert(),e.reposition(b,!0),h.hasTransitions?(e._$tooltip.addClass("tooltipster-"+e.__options.animation).addClass("tooltipster-initial").css({"-moz-animation-duration":e.__options.animationDuration[0]+"ms","-ms-animation-duration":e.__options.animationDuration[0]+"ms","-o-animation-duration":e.__options.animationDuration[0]+"ms","-webkit-animation-duration":e.__options.animationDuration[0]+"ms","animation-duration":e.__options.animationDuration[0]+"ms","transition-duration":e.__options.animationDuration[0]+"ms"}),setTimeout(function(){"closed"!=e.__state&&(e._$tooltip.addClass("tooltipster-show").removeClass("tooltipster-initial"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i))},0)):e._$tooltip.css("display","none").fadeIn(e.__options.animationDuration[0],i),e.__trackerStart(),a(h.window).on("resize."+e.__namespace+"-triggerClose",function(a){e.reposition(a)}).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)}),e.__$originParents=e._$origin.parents(),e.__$originParents.each(function(b,c){a(c).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)})}),e.__options.triggerClose.mouseleave||e.__options.triggerClose.touchleave&&h.hasTouchCapability){e._on("dismissable",function(a){a.dismissable?a.delay?(m=setTimeout(function(){e._close(a.event)},a.delay),e.__timeouts.close.push(m)):e._close(a):clearTimeout(m)});var j=e._$origin,k="",l="",m=null;e.__options.interactive&&(j=j.add(e._$tooltip)),e.__options.triggerClose.mouseleave&&(k+="mouseenter."+e.__namespace+"-triggerClose ",l+="mouseleave."+e.__namespace+"-triggerClose "),e.__options.triggerClose.touchleave&&h.hasTouchCapability&&(k+="touchstart."+e.__namespace+"-triggerClose",l+="touchend."+e.__namespace+"-triggerClose touchcancel."+e.__namespace+"-triggerClose"),j.on(l,function(a){if(e._touchIsTouchEvent(a)||!e._touchIsEmulatedEvent(a)){var b="mouseleave"==a.type?e.__options.delay:e.__options.delayTouch;e._trigger({delay:b[1],dismissable:!0,event:a,type:"dismissable"})}}).on(k,function(a){!e._touchIsTouchEvent(a)&&e._touchIsEmulatedEvent(a)||e._trigger({dismissable:!1,event:a,type:"dismissable"})})}e.__options.triggerClose.originClick&&e._$origin.on("click."+e.__namespace+"-triggerClose",function(a){e._touchIsTouchEvent(a)||e._touchIsEmulatedEvent(a)||e._close(a)}),(e.__options.triggerClose.click||e.__options.triggerClose.tap&&h.hasTouchCapability)&&setTimeout(function(){if("closed"!=e.__state){var b="";e.__options.triggerClose.click&&(b+="click."+e.__namespace+"-triggerClose "),e.__options.triggerClose.tap&&h.hasTouchCapability&&(b+="touchend."+e.__namespace+"-triggerClose"),a("body").on(b,function(b){e._touchIsMeaningfulEvent(b)&&(e._touchRecordEvent(b),e.__options.interactive&&a.contains(e._$tooltip[0],b.target)||e._close(b))}),e.__options.triggerClose.tap&&h.hasTouchCapability&&a("body").on("touchstart."+e.__namespace+"-triggerClose",function(a){e._touchRecordEvent(a)})}},0),e._trigger("ready"),e.__options.functionReady&&e.__options.functionReady.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}if(e.__options.timer>0){var m=setTimeout(function(){e._close()},e.__options.timer+g);e.__timeouts.close.push(m)}}}return e},_openShortly:function(a){var b=this,c=!0;if("stable"!=b.__state&&"appearing"!=b.__state&&!b.__timeouts.open&&(b._trigger({type:"start",event:a,stop:function(){c=!1}}),c)){var d=0==a.type.indexOf("touch")?b.__options.delayTouch:b.__options.delay;d[0]?b.__timeouts.open=setTimeout(function(){b.__timeouts.open=null,b.__pointerIsOverOrigin&&b._touchIsMeaningfulEvent(a)?(b._trigger("startend"),b._open(a)):b._trigger("startcancel")},d[0]):(b._trigger("startend"),b._open(a))}return b},_optionsExtract:function(b,c){var d=this,e=a.extend(!0,{},c),f=d.__options[b];return f||(f={},a.each(c,function(a,b){var c=d.__options[a];void 0!==c&&(f[a]=c)})),a.each(e,function(b,c){void 0!==f[b]&&("object"!=typeof c||c instanceof Array||null==c||"object"!=typeof f[b]||f[b]instanceof Array||null==f[b]?e[b]=f[b]:a.extend(e[b],f[b]))}),e},_plug:function(b){var c=a.tooltipster._plugin(b);if(!c)throw new Error('The "'+b+'" plugin is not defined');return c.instance&&a.tooltipster.__bridge(c.instance,this,c.name),this},_touchIsEmulatedEvent:function(a){for(var b=!1,c=(new Date).getTime(),d=this.__touchEvents.length-1;d>=0;d--){var e=this.__touchEvents[d];if(!(c-e.time<500))break;e.target===a.target&&(b=!0)}return b},_touchIsMeaningfulEvent:function(a){return this._touchIsTouchEvent(a)&&!this._touchSwiped(a.target)||!this._touchIsTouchEvent(a)&&!this._touchIsEmulatedEvent(a)},_touchIsTouchEvent:function(a){return 0==a.type.indexOf("touch")},_touchRecordEvent:function(a){return this._touchIsTouchEvent(a)&&(a.time=(new Date).getTime(),this.__touchEvents.push(a)),this},_touchSwiped:function(a){for(var b=!1,c=this.__touchEvents.length-1;c>=0;c--){var d=this.__touchEvents[c];if("touchmove"==d.type){b=!0;break}if("touchstart"==d.type&&a===d.target)break}return b},_trigger:function(){var b=Array.prototype.slice.apply(arguments);return"string"==typeof b[0]&&(b[0]={type:b[0]}),b[0].instance=this,b[0].origin=this._$origin?this._$origin[0]:null,b[0].tooltip=this._$tooltip?this._$tooltip[0]:null,this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,b),a.tooltipster._trigger.apply(a.tooltipster,b),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,b),this},_unplug:function(b){var c=this;if(c[b]){var d=a.tooltipster._plugin(b);d.instance&&a.each(d.instance,function(a,d){c[a]&&c[a].bridged===c[b]&&delete c[a]}),c[b].__destroy&&c[b].__destroy(),delete c[b]}return c},close:function(a){return this.__destroyed?this.__destroyError():this._close(null,a),this},content:function(a){var b=this;if(void 0===a)return b.__Content;if(b.__destroyed)b.__destroyError();else if(b.__contentSet(a),null!==b.__Content){if("closed"!==b.__state&&(b.__contentInsert(),b.reposition(),b.__options.updateAnimation))if(h.hasTransitions){var c=b.__options.updateAnimation;b._$tooltip.addClass("tooltipster-update-"+c),setTimeout(function(){"closed"!=b.__state&&b._$tooltip.removeClass("tooltipster-update-"+c)},1e3)}else b._$tooltip.fadeTo(200,.5,function(){"closed"!=b.__state&&b._$tooltip.fadeTo(200,1)})}else b._close();return b},destroy:function(){var b=this;return b.__destroyed?b.__destroyError():b.__destroying||(b.__destroying=!0,b._close(null,function(){b._trigger("destroy"),b.__destroying=!1,b.__destroyed=!0,b._$origin.removeData(b.__namespace).off("."+b.__namespace+"-triggerOpen"),a("body").off("."+b.__namespace+"-triggerOpen");var c=b._$origin.data("tooltipster-ns");if(c)if(1===c.length){var d=null;"previous"==b.__options.restoration?d=b._$origin.data("tooltipster-initialTitle"):"current"==b.__options.restoration&&(d="string"==typeof b.__Content?b.__Content:a("<div></div>").append(b.__Content).html()),d&&b._$origin.attr("title",d),b._$origin.removeClass("tooltipstered"),b._$origin.removeData("tooltipster-ns").removeData("tooltipster-initialTitle")}else c=a.grep(c,function(a,c){return a!==b.__namespace}),b._$origin.data("tooltipster-ns",c);b._trigger("destroyed"),b._off(),b.off(),b.__Content=null,b.__$emitterPrivate=null,b.__$emitterPublic=null,b.__options.parent=null,b._$origin=null,b._$tooltip=null,a.tooltipster.__instancesLatestArr=a.grep(a.tooltipster.__instancesLatestArr,function(a,c){return b!==a}),clearInterval(b.__garbageCollector)})),b},disable:function(){return this.__destroyed?(this.__destroyError(),this):(this._close(),this.__enabled=!1,this)},elementOrigin:function(){return this.__destroyed?void this.__destroyError():this._$origin[0]},elementTooltip:function(){return this._$tooltip?this._$tooltip[0]:null},enable:function(){return this.__enabled=!0,this},hide:function(a){return this.close(a)},instance:function(){return this},off:function(){return this.__destroyed||this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},open:function(a){return this.__destroyed||this.__destroying?this.__destroyError():this._open(null,a),this},option:function(b,c){return void 0===c?this.__options[b]:(this.__destroyed?this.__destroyError():(this.__options[b]=c,this.__optionsFormat(),a.inArray(b,["trigger","triggerClose","triggerOpen"])>=0&&this.__prepareOrigin(),"selfDestruction"===b&&this.__prepareGC()),this)},reposition:function(a,b){var c=this;return c.__destroyed?c.__destroyError():(d(c._$tooltip)||b)&&(b||c._$tooltip.detach(),c.__Geometry=c.__geometry(),c._trigger({type:"reposition",event:a,helper:{geo:c.__Geometry}})),c},show:function(a){return this.open(a)},status:function(){return{destroyed:this.__destroyed,destroying:this.__destroying,enabled:this.__enabled,open:"closed"!==this.__state,state:this.__state}},triggerHandler:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.fn.tooltipster=function(){var b=Array.prototype.slice.apply(arguments),c="You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.";if(0===this.length)return this;if("string"==typeof b[0]){var d="#*$~&";return this.each(function(){var e=a(this).data("tooltipster-ns"),f=e?a(this).data(e[0]):null;if(!f)throw new Error("You called Tooltipster's \""+b[0]+'" method on an uninitialized element');if("function"!=typeof f[b[0]])throw new Error('Unknown method "'+b[0]+'"');this.length>1&&"content"==b[0]&&(b[1]instanceof a||"object"==typeof b[1]&&null!=b[1]&&b[1].tagName)&&!f.__options.contentCloning&&f.__options.debug&&console.log(c);var g=f[b[0]](b[1],b[2]);return g!==f||"instance"===b[0]?(d=g,!1):void 0}),"#*$~&"!==d?d:this}a.tooltipster.__instancesLatestArr=[];var e=b[0]&&void 0!==b[0].multiple,g=e&&b[0].multiple||!e&&f.multiple,h=b[0]&&void 0!==b[0].content,i=h&&b[0].content||!h&&f.content,j=b[0]&&void 0!==b[0].contentCloning,k=j&&b[0].contentCloning||!j&&f.contentCloning,l=b[0]&&void 0!==b[0].debug,m=l&&b[0].debug||!l&&f.debug;return this.length>1&&(i instanceof a||"object"==typeof i&&null!=i&&i.tagName)&&!k&&m&&console.log(c),this.each(function(){var c=!1,d=a(this),e=d.data("tooltipster-ns"),f=null;e?g?c=!0:m&&(console.log("Tooltipster: one or more tooltips are already attached to the element below. Ignoring."),console.log(this)):c=!0,c&&(f=new a.Tooltipster(this,b[0]),e||(e=[]),e.push(f.__namespace),d.data("tooltipster-ns",e),d.data(f.__namespace,f),f.__options.functionInit&&f.__options.functionInit.call(f,f,{origin:this}),f._trigger("init")),a.tooltipster.__instancesLatestArr.push(f)}),this},b.prototype={__init:function(b){this.__$tooltip=b,this.__$tooltip.css({left:0,overflow:"hidden",position:"absolute",top:0}).find(".tooltipster-content").css("overflow","auto"),this.$container=a('<div class="tooltipster-ruler"></div>').append(this.__$tooltip).appendTo("body")},__forceRedraw:function(){var a=this.__$tooltip.parent();this.__$tooltip.detach(),this.__$tooltip.appendTo(a)},constrain:function(a,b){return this.constraints={width:a,height:b},this.__$tooltip.css({display:"block",height:"",overflow:"auto",width:a}),this},destroy:function(){this.__$tooltip.detach().find(".tooltipster-content").css({display:"",overflow:""}),this.$container.remove()},free:function(){return this.constraints=null,this.__$tooltip.css({display:"",height:"",overflow:"visible",width:""}),this},measure:function(){this.__forceRedraw();var a=this.__$tooltip[0].getBoundingClientRect(),b={size:{height:a.height||a.bottom,width:a.width||a.right}};if(this.constraints){var c=this.__$tooltip.find(".tooltipster-content"),d=this.__$tooltip.outerHeight(),e=c[0].getBoundingClientRect(),f={height:d<=this.constraints.height,width:a.width<=this.constraints.width&&e.width>=c[0].scrollWidth-1};b.fits=f.height&&f.width}return h.IE&&h.IE<=11&&(b.size.width=Math.ceil(b.size.width)+1),b}};var j=navigator.userAgent.toLowerCase();-1!=j.indexOf("msie")?h.IE=parseInt(j.split("msie")[1]):-1!==j.toLowerCase().indexOf("trident")&&-1!==j.indexOf(" rv:11")?h.IE=11:-1!=j.toLowerCase().indexOf("edge/")&&(h.IE=parseInt(j.toLowerCase().split("edge/")[1]));var k="tooltipster.sideTip";return a.tooltipster._plugin({name:k,instance:{__defaults:function(){return{arrow:!0,distance:6,functionPosition:null,maxWidth:null,minIntersection:16,minWidth:0,position:null,side:"top",viewportAware:!0}},__init:function(a){var b=this;b.__instance=a,b.__namespace="tooltipster-sideTip-"+Math.round(1e6*Math.random()),b.__previousState="closed",b.__options,b.__optionsFormat(),b.__instance._on("state."+b.__namespace,function(a){"closed"==a.state?b.__close():"appearing"==a.state&&"closed"==b.__previousState&&b.__create(),b.__previousState=a.state}),b.__instance._on("options."+b.__namespace,function(){b.__optionsFormat()}),b.__instance._on("reposition."+b.__namespace,function(a){b.__reposition(a.event,a.helper)})},__close:function(){this.__instance.content()instanceof a&&this.__instance.content().detach(),this.__instance._$tooltip.remove(),this.__instance._$tooltip=null},__create:function(){var b=a('<div class="tooltipster-base tooltipster-sidetip"><div class="tooltipster-box"><div class="tooltipster-content"></div></div><div class="tooltipster-arrow"><div class="tooltipster-arrow-uncropped"><div class="tooltipster-arrow-border"></div><div class="tooltipster-arrow-background"></div></div></div></div>');this.__options.arrow||b.find(".tooltipster-box").css("margin",0).end().find(".tooltipster-arrow").hide(),this.__options.minWidth&&b.css("min-width",this.__options.minWidth+"px"),this.__options.maxWidth&&b.css("max-width",this.__options.maxWidth+"px"),this.__instance._$tooltip=b,this.__instance._trigger("created")},__destroy:function(){this.__instance._off("."+self.__namespace)},__optionsFormat:function(){var b=this;if(b.__options=b.__instance._optionsExtract(k,b.__defaults()),b.__options.position&&(b.__options.side=b.__options.position),"object"!=typeof b.__options.distance&&(b.__options.distance=[b.__options.distance]),b.__options.distance.length<4&&(void 0===b.__options.distance[1]&&(b.__options.distance[1]=b.__options.distance[0]), +void 0===b.__options.distance[2]&&(b.__options.distance[2]=b.__options.distance[0]),void 0===b.__options.distance[3]&&(b.__options.distance[3]=b.__options.distance[1]),b.__options.distance={top:b.__options.distance[0],right:b.__options.distance[1],bottom:b.__options.distance[2],left:b.__options.distance[3]}),"string"==typeof b.__options.side){var c={top:"bottom",right:"left",bottom:"top",left:"right"};b.__options.side=[b.__options.side,c[b.__options.side]],"left"==b.__options.side[0]||"right"==b.__options.side[0]?b.__options.side.push("top","bottom"):b.__options.side.push("right","left")}6===a.tooltipster._env.IE&&b.__options.arrow!==!0&&(b.__options.arrow=!1)},__reposition:function(b,c){var d,e=this,f=e.__targetFind(c),g=[];e.__instance._$tooltip.detach();var h=e.__instance._$tooltip.clone(),i=a.tooltipster._getRuler(h),j=!1;switch(a.each(["window","document"],function(d,k){var l=null;if(e.__instance._trigger({container:k,helper:c,satisfied:j,takeTest:function(a){l=a},results:g,type:"positionTest"}),1==l||0!=l&&0==j&&("window"!=k||e.__options.viewportAware))for(var d=0;d<e.__options.side.length;d++){var m={horizontal:0,vertical:0},n=e.__options.side[d];"top"==n||"bottom"==n?m.vertical=e.__options.distance[n]:m.horizontal=e.__options.distance[n],e.__sideChange(h,n),a.each(["natural","constrained"],function(a,d){if(l=null,e.__instance._trigger({container:k,event:b,helper:c,mode:d,results:g,satisfied:j,side:n,takeTest:function(a){l=a},type:"positionTest"}),1==l||0!=l&&0==j){var h={container:k,distance:m,fits:null,mode:d,outerSize:null,side:n,size:null,target:f[n],whole:null},o="natural"==d?i.free():i.constrain(c.geo.available[k][n].width-m.horizontal,c.geo.available[k][n].height-m.vertical),p=o.measure();if(h.size=p.size,h.outerSize={height:p.size.height+m.vertical,width:p.size.width+m.horizontal},"natural"==d?c.geo.available[k][n].width>=h.outerSize.width&&c.geo.available[k][n].height>=h.outerSize.height?h.fits=!0:h.fits=!1:h.fits=p.fits,"window"==k&&(h.fits?"top"==n||"bottom"==n?h.whole=c.geo.origin.windowOffset.right>=e.__options.minIntersection&&c.geo.window.size.width-c.geo.origin.windowOffset.left>=e.__options.minIntersection:h.whole=c.geo.origin.windowOffset.bottom>=e.__options.minIntersection&&c.geo.window.size.height-c.geo.origin.windowOffset.top>=e.__options.minIntersection:h.whole=!1),g.push(h),h.whole)j=!0;else if("natural"==h.mode&&(h.fits||h.size.width<=c.geo.available[k][n].width))return!1}})}}),e.__instance._trigger({edit:function(a){g=a},event:b,helper:c,results:g,type:"positionTested"}),g.sort(function(a,b){if(a.whole&&!b.whole)return-1;if(!a.whole&&b.whole)return 1;if(a.whole&&b.whole){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}if(a.fits&&!b.fits)return-1;if(!a.fits&&b.fits)return 1;if(a.fits&&b.fits){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}return"document"==a.container&&"bottom"==a.side&&"natural"==a.mode?-1:1}),d=g[0],d.coord={},d.side){case"left":case"right":d.coord.top=Math.floor(d.target-d.size.height/2);break;case"bottom":case"top":d.coord.left=Math.floor(d.target-d.size.width/2)}switch(d.side){case"left":d.coord.left=c.geo.origin.windowOffset.left-d.outerSize.width;break;case"right":d.coord.left=c.geo.origin.windowOffset.right+d.distance.horizontal;break;case"top":d.coord.top=c.geo.origin.windowOffset.top-d.outerSize.height;break;case"bottom":d.coord.top=c.geo.origin.windowOffset.bottom+d.distance.vertical}"window"==d.container?"top"==d.side||"bottom"==d.side?d.coord.left<0?c.geo.origin.windowOffset.right-this.__options.minIntersection>=0?d.coord.left=0:d.coord.left=c.geo.origin.windowOffset.right-this.__options.minIntersection-1:d.coord.left>c.geo.window.size.width-d.size.width&&(c.geo.origin.windowOffset.left+this.__options.minIntersection<=c.geo.window.size.width?d.coord.left=c.geo.window.size.width-d.size.width:d.coord.left=c.geo.origin.windowOffset.left+this.__options.minIntersection+1-d.size.width):d.coord.top<0?c.geo.origin.windowOffset.bottom-this.__options.minIntersection>=0?d.coord.top=0:d.coord.top=c.geo.origin.windowOffset.bottom-this.__options.minIntersection-1:d.coord.top>c.geo.window.size.height-d.size.height&&(c.geo.origin.windowOffset.top+this.__options.minIntersection<=c.geo.window.size.height?d.coord.top=c.geo.window.size.height-d.size.height:d.coord.top=c.geo.origin.windowOffset.top+this.__options.minIntersection+1-d.size.height):(d.coord.left>c.geo.window.size.width-d.size.width&&(d.coord.left=c.geo.window.size.width-d.size.width),d.coord.left<0&&(d.coord.left=0)),e.__sideChange(h,d.side),c.tooltipClone=h[0],c.tooltipParent=e.__instance.option("parent").parent[0],c.mode=d.mode,c.whole=d.whole,c.origin=e.__instance._$origin[0],c.tooltip=e.__instance._$tooltip[0],delete d.container,delete d.fits,delete d.mode,delete d.outerSize,delete d.whole,d.distance=d.distance.horizontal||d.distance.vertical;var k=a.extend(!0,{},d);if(e.__instance._trigger({edit:function(a){d=a},event:b,helper:c,position:k,type:"position"}),e.__options.functionPosition){var l=e.__options.functionPosition.call(e,e.__instance,c,k);l&&(d=l)}i.destroy();var m,n;"top"==d.side||"bottom"==d.side?(m={prop:"left",val:d.target-d.coord.left},n=d.size.width-this.__options.minIntersection):(m={prop:"top",val:d.target-d.coord.top},n=d.size.height-this.__options.minIntersection),m.val<this.__options.minIntersection?m.val=this.__options.minIntersection:m.val>n&&(m.val=n);var o;o=c.geo.origin.fixedLineage?c.geo.origin.windowOffset:{left:c.geo.origin.windowOffset.left+c.geo.window.scroll.left,top:c.geo.origin.windowOffset.top+c.geo.window.scroll.top},d.coord={left:o.left+(d.coord.left-c.geo.origin.windowOffset.left),top:o.top+(d.coord.top-c.geo.origin.windowOffset.top)},e.__sideChange(e.__instance._$tooltip,d.side),c.geo.origin.fixedLineage?e.__instance._$tooltip.css("position","fixed"):e.__instance._$tooltip.css("position",""),e.__instance._$tooltip.css({left:d.coord.left,top:d.coord.top,height:d.size.height,width:d.size.width}).find(".tooltipster-arrow").css({left:"",top:""}).css(m.prop,m.val),e.__instance._$tooltip.appendTo(e.__instance.option("parent")),e.__instance._trigger({type:"repositioned",event:b,position:d})},__sideChange:function(a,b){a.removeClass("tooltipster-bottom").removeClass("tooltipster-left").removeClass("tooltipster-right").removeClass("tooltipster-top").addClass("tooltipster-"+b)},__targetFind:function(a){var b={},c=this.__instance._$origin[0].getClientRects();if(c.length>1){var d=this.__instance._$origin.css("opacity");1==d&&(this.__instance._$origin.css("opacity",.99),c=this.__instance._$origin[0].getClientRects(),this.__instance._$origin.css("opacity",1))}if(c.length<2)b.top=Math.floor(a.geo.origin.windowOffset.left+a.geo.origin.size.width/2),b.bottom=b.top,b.left=Math.floor(a.geo.origin.windowOffset.top+a.geo.origin.size.height/2),b.right=b.left;else{var e=c[0];b.top=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil(c.length/2)-1]:c[0],b.right=Math.floor(e.top+(e.bottom-e.top)/2),e=c[c.length-1],b.bottom=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil((c.length+1)/2)-1]:c[c.length-1],b.left=Math.floor(e.top+(e.bottom-e.top)/2)}return b}}}),a}); \ No newline at end of file diff --git a/plugins/tooltipster/tooltipster.core.min.js b/plugins/tooltipster/tooltipster.core.min.js new file mode 100644 index 0000000..467017c --- /dev/null +++ b/plugins/tooltipster/tooltipster.core.min.js @@ -0,0 +1 @@ +/*! tooltipster v4.1.2 */!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){function b(a){this.$container,this.constraints=null,this.__$tooltip,this.__init(a)}function c(b,c){var d=!0;return a.each(b,function(a,e){return void 0===c[a]||b[a]!==c[a]?(d=!1,!1):void 0}),d}function d(b){var c=b.attr("id"),d=c?h.window.document.getElementById(c):null;return d?d===b[0]:a.contains(h.window.document.body,b[0])}function e(){if(!g)return!1;var a=g.document.body||g.document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e<d.length;e++)if("string"==typeof b[d[e]+c])return!0;return!1}var f={animation:"fade",animationDuration:350,content:null,contentAsHTML:!1,contentCloning:!1,debug:!0,delay:300,delayTouch:[300,500],functionInit:null,functionBefore:null,functionReady:null,functionAfter:null,functionFormat:null,IEmin:6,interactive:!1,multiple:!1,parent:"body",plugins:["sideTip"],repositionOnScroll:!1,restoration:"none",selfDestruction:!0,theme:[],timer:0,trackerInterval:500,trackOrigin:!1,trackTooltip:!1,trigger:"hover",triggerClose:{click:!1,mouseleave:!1,originClick:!1,scroll:!1,tap:!1,touchleave:!1},triggerOpen:{click:!1,mouseenter:!1,tap:!1,touchstart:!1},updateAnimation:"rotate",zIndex:9999999},g="undefined"!=typeof window?window:null,h={hasTouchCapability:!(!g||!("ontouchstart"in g||g.DocumentTouch&&g.document instanceof g.DocumentTouch||g.navigator.maxTouchPoints)),hasTransitions:e(),IE:!1,semVer:"4.1.2",window:g},i=function(){this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__instancesLatestArr=[],this.__plugins={},this._env=h};i.prototype={__bridge:function(b,c,d){if(!c[d]){var e=function(){};e.prototype=b;var g=new e;g.__init&&g.__init(c),a.each(b,function(a,b){0!=a.indexOf("__")&&(c[a]?f.debug&&console.log("The "+a+" method of the "+d+" plugin conflicts with another plugin or native methods"):(c[a]=function(){return g[a].apply(g,Array.prototype.slice.apply(arguments))},c[a].bridged=g))}),c[d]=g}return this},__setWindow:function(a){return h.window=a,this},_getRuler:function(a){return new b(a)},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_plugin:function(b){var c=this;if("string"==typeof b){var d=b,e=null;return d.indexOf(".")>0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)=="."+d?(e=b,!1):void 0}),e}if(b.name.indexOf(".")<0)throw new Error("Plugins must be namespaced");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return"string"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||".tooltipstered";return a(d).each(function(){var b=a(this),d=b.data("tooltipster-ns");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+" ":"";return a(c+".tooltipstered").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__destroying=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace="tooltipster-"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state="closed",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data("tooltipster-initialTitle")&&(e=d._$origin.attr("title"),void 0===e&&(e=null),d._$origin.data("tooltipster-initialTitle",e)),null!==d.__options.content)d.__contentSet(d.__options.content);else{var g,i=d._$origin.attr("data-tooltip-content");i&&(g=a(i)),g&&g[0]?d.__contentSet(g.first()):d.__contentSet(e)}d._$origin.removeAttr("title").addClass("tooltipstered"),d.__prepareOrigin(),d.__prepareGC(),a.each(d.__options.plugins,function(a,b){d._plug(b)}),h.hasTouchCapability&&a("body").on("touchmove."+d.__namespace+"-triggerOpen",function(a){d._touchRecordEvent(a)}),d._on("created",function(){d.__prepareTooltip()})._on("repositioned",function(a){d.__lastPosition=a.position})}else d.__options.disabled=!0},__contentInsert:function(){var a=this,b=a._$tooltip.find(".tooltipster-content"),c=a.__Content,d=function(a){c=a};return a._trigger({type:"format",content:a.__Content,format:d}),a.__options.functionFormat&&(c=a.__options.functionFormat.call(a,a,{origin:a._$origin[0]},a.__Content)),"string"!=typeof c||a.__options.contentAsHTML?b.empty().append(c):b.text(c),a},__contentSet:function(b){return b instanceof a&&this.__options.contentCloning&&(b=b.clone(!0)),this.__Content=b,this._trigger({type:"updated",content:b}),this},__destroyError:function(){throw new Error("This tooltip has been destroyed and cannot execute your method call.")},__geometry:function(){var b=this,c=b._$origin,d=b._$origin.is("area");if(d){var e=b._$origin.parent().attr("name");c=a('img[usemap="#'+e+'"]')}var f=c[0].getBoundingClientRect(),g=a(h.window.document),i=a(h.window),j=c,k={available:{document:null,window:null},document:{size:{height:g.height(),width:g.width()}},window:{scroll:{left:h.window.scrollX||h.window.document.documentElement.scrollLeft,top:h.window.scrollY||h.window.document.documentElement.scrollTop},size:{height:i.height(),width:i.width()}},origin:{fixedLineage:!1,offset:{},size:{height:f.bottom-f.top,width:f.right-f.left},usemapImage:d?c[0]:null,windowOffset:{bottom:f.bottom,left:f.left,right:f.right,top:f.top}}};if(d){var l=b._$origin.attr("shape"),m=b._$origin.attr("coords");if(m&&(m=m.split(","),a.map(m,function(a,b){m[b]=parseInt(a)})),"default"!=l)switch(l){case"circle":var n=m[0],o=m[1],p=m[2],q=o-p,r=n-p;k.origin.size.height=2*p,k.origin.size.width=k.origin.size.height,k.origin.windowOffset.left+=r,k.origin.windowOffset.top+=q;break;case"rect":var s=m[0],t=m[1],u=m[2],v=m[3];k.origin.size.height=v-t,k.origin.size.width=u-s,k.origin.windowOffset.left+=s,k.origin.windowOffset.top+=t;break;case"poly":for(var w=0,x=0,y=0,z=0,A="even",B=0;B<m.length;B++){var C=m[B];"even"==A?(C>y&&(y=C,0===B&&(w=y)),w>C&&(w=C),A="odd"):(C>z&&(z=C,1==B&&(x=z)),x>C&&(x=C),A="even")}k.origin.size.height=z-x,k.origin.size.width=y-w,k.origin.windowOffset.left+=w,k.origin.windowOffset.top+=x}}var D=function(a){k.origin.size.height=a.height,k.origin.windowOffset.left=a.left,k.origin.windowOffset.top=a.top,k.origin.size.width=a.width};for(b._trigger({type:"geometry",edit:D,geometry:{height:k.origin.size.height,left:k.origin.windowOffset.left,top:k.origin.windowOffset.top,width:k.origin.size.width}}),k.origin.windowOffset.right=k.origin.windowOffset.left+k.origin.size.width,k.origin.windowOffset.bottom=k.origin.windowOffset.top+k.origin.size.height,k.origin.offset.left=k.origin.windowOffset.left+h.window.scrollX,k.origin.offset.top=k.origin.windowOffset.top+h.window.scrollY,k.origin.offset.bottom=k.origin.offset.top+k.origin.size.height,k.origin.offset.right=k.origin.offset.left+k.origin.size.width,k.available.document={bottom:{height:k.document.size.height-k.origin.offset.bottom,width:k.document.size.width},left:{height:k.document.size.height,width:k.origin.offset.left},right:{height:k.document.size.height,width:k.document.size.width-k.origin.offset.right},top:{height:k.origin.offset.top,width:k.document.size.width}},k.available.window={bottom:{height:Math.max(k.window.size.height-Math.max(k.origin.windowOffset.bottom,0),0),width:k.window.size.width},left:{height:k.window.size.height,width:Math.max(k.origin.windowOffset.left,0)},right:{height:k.window.size.height,width:Math.max(k.window.size.width-Math.max(k.origin.windowOffset.right,0),0)},top:{height:Math.max(k.origin.windowOffset.top,0),width:k.window.size.width}};"html"!=j[0].tagName.toLowerCase();){if("fixed"==j.css("position")){k.origin.fixedLineage=!0;break}j=j.parent()}return k},__optionsFormat:function(){return"number"==typeof this.__options.animationDuration&&(this.__options.animationDuration=[this.__options.animationDuration,this.__options.animationDuration]),"number"==typeof this.__options.delay&&(this.__options.delay=[this.__options.delay,this.__options.delay]),"number"==typeof this.__options.delayTouch&&(this.__options.delayTouch=[this.__options.delayTouch,this.__options.delayTouch]),"string"==typeof this.__options.theme&&(this.__options.theme=[this.__options.theme]),"string"==typeof this.__options.parent&&(this.__options.parent=a(this.__options.parent)),"hover"==this.__options.trigger?(this.__options.triggerOpen={mouseenter:!0,touchstart:!0},this.__options.triggerClose={mouseleave:!0,originClick:!0,touchleave:!0}):"click"==this.__options.trigger&&(this.__options.triggerOpen={click:!0,tap:!0},this.__options.triggerClose={click:!0,tap:!0}),this._trigger("options"),this},__prepareGC:function(){var b=this;return b.__options.selfDestruction?b.__garbageCollector=setInterval(function(){var c=(new Date).getTime();b.__touchEvents=a.grep(b.__touchEvents,function(a,b){return c-a.time>6e4}),d(b._$origin)||b.destroy()},2e4):clearInterval(b.__garbageCollector),b},__prepareOrigin:function(){var a=this;if(a._$origin.off("."+a.__namespace+"-triggerOpen"),h.hasTouchCapability&&a._$origin.on("touchstart."+a.__namespace+"-triggerOpen touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen",function(b){a._touchRecordEvent(b)}),a.__options.triggerOpen.click||a.__options.triggerOpen.tap&&h.hasTouchCapability){var b="";a.__options.triggerOpen.click&&(b+="click."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.tap&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&a._open(b)})}if(a.__options.triggerOpen.mouseenter||a.__options.triggerOpen.touchstart&&h.hasTouchCapability){var b="";a.__options.triggerOpen.mouseenter&&(b+="mouseenter."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.touchstart&&h.hasTouchCapability&&(b+="touchstart."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){!a._touchIsTouchEvent(b)&&a._touchIsEmulatedEvent(b)||(a.__pointerIsOverOrigin=!0,a._openShortly(b))})}if(a.__options.triggerClose.mouseleave||a.__options.triggerClose.touchleave&&h.hasTouchCapability){var b="";a.__options.triggerClose.mouseleave&&(b+="mouseleave."+a.__namespace+"-triggerOpen "),a.__options.triggerClose.touchleave&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&(a.__pointerIsOverOrigin=!1)})}return a},__prepareTooltip:function(){var b=this,c=b.__options.interactive?"auto":"";return b._$tooltip.attr("id",b.__namespace).css({"pointer-events":c,zIndex:b.__options.zIndex}),a.each(b.__previousThemes,function(a,c){b._$tooltip.removeClass(c)}),a.each(b.__options.theme,function(a,c){b._$tooltip.addClass(c)}),b.__previousThemes=a.merge([],b.__options.theme),b},__scrollHandler:function(b){var c=this;if(c.__options.triggerClose.scroll)c._close(b);else{if(b.target===h.window.document)c.__Geometry.origin.fixedLineage||c.__options.repositionOnScroll&&c.reposition(b);else{var d=c.__geometry(),e=!1;if("fixed"!=c._$origin.css("position")&&c.__$originParents.each(function(b,c){var f=a(c),g=f.css("overflow-x"),h=f.css("overflow-y");if("visible"!=g||"visible"!=h){var i=c.getBoundingClientRect();if("visible"!=g&&(d.origin.windowOffset.left<i.left||d.origin.windowOffset.right>i.right))return e=!0,!1;if("visible"!=h&&(d.origin.windowOffset.top<i.top||d.origin.windowOffset.bottom>i.bottom))return e=!0,!1}return"fixed"==f.css("position")?!1:void 0}),e)c._$tooltip.css("visibility","hidden");else if(c._$tooltip.css("visibility","visible"),c.__options.repositionOnScroll)c.reposition(b);else{var f=d.origin.offset.left-c.__Geometry.origin.offset.left,g=d.origin.offset.top-c.__Geometry.origin.offset.top;c._$tooltip.css({left:c.__lastPosition.coord.left+f,top:c.__lastPosition.coord.top+g})}}c._trigger({type:"scroll",event:b})}return c},__stateSet:function(a){return this.__state=a,this._trigger({type:"state",state:a}),this},__timeoutsClear:function(){return clearTimeout(this.__timeouts.open),this.__timeouts.open=null,a.each(this.__timeouts.close,function(a,b){clearTimeout(b)}),this.__timeouts.close=[],this},__trackerStart:function(){var a=this,b=a._$tooltip.find(".tooltipster-content");return a.__options.trackTooltip&&(a.__contentBcr=b[0].getBoundingClientRect()),a.__tracker=setInterval(function(){if(d(a._$origin)&&d(a._$tooltip)){if(a.__options.trackOrigin){var e=a.__geometry(),f=!1;c(e.origin.size,a.__Geometry.origin.size)&&(a.__Geometry.origin.fixedLineage?c(e.origin.windowOffset,a.__Geometry.origin.windowOffset)&&(f=!0):c(e.origin.offset,a.__Geometry.origin.offset)&&(f=!0)),f||(a.__options.triggerClose.mouseleave?a._close():a.reposition())}if(a.__options.trackTooltip){var g=b[0].getBoundingClientRect();g.height===a.__contentBcr.height&&g.width===a.__contentBcr.width||(a.reposition(),a.__contentBcr=g)}}else a._close()},a.__options.trackerInterval),a},_close:function(b,c){var d=this,e=!0;if(d._trigger({type:"close",event:b,stop:function(){e=!1}}),e||d.__destroying){c&&d.__callbacks.close.push(c),d.__callbacks.open=[],d.__timeoutsClear();var f=function(){a.each(d.__callbacks.close,function(a,c){c.call(d,d,{event:b,origin:d._$origin[0]})}),d.__callbacks.close=[]};if("closed"!=d.__state){var g=!0,i=new Date,j=i.getTime(),k=j+d.__options.animationDuration[1];if("disappearing"==d.__state&&k>d.__closingTime&&(g=!1),g){d.__closingTime=k,"disappearing"!=d.__state&&d.__stateSet("disappearing");var l=function(){clearInterval(d.__tracker),d._trigger({type:"closing",event:b}),d._$tooltip.off("."+d.__namespace+"-triggerClose").removeClass("tooltipster-dying"),a(h.window).off("."+d.__namespace+"-triggerClose"),d.__$originParents.each(function(b,c){a(c).off("scroll."+d.__namespace+"-triggerClose")}),d.__$originParents=null,a("body").off("."+d.__namespace+"-triggerClose"),d._$origin.off("."+d.__namespace+"-triggerClose"),d._off("dismissable"),d.__stateSet("closed"),d._trigger({type:"after",event:b}),d.__options.functionAfter&&d.__options.functionAfter.call(d,d,{event:b}),f()};h.hasTransitions?(d._$tooltip.css({"-moz-animation-duration":d.__options.animationDuration[1]+"ms","-ms-animation-duration":d.__options.animationDuration[1]+"ms","-o-animation-duration":d.__options.animationDuration[1]+"ms","-webkit-animation-duration":d.__options.animationDuration[1]+"ms","animation-duration":d.__options.animationDuration[1]+"ms","transition-duration":d.__options.animationDuration[1]+"ms"}),d._$tooltip.clearQueue().removeClass("tooltipster-show").addClass("tooltipster-dying"),d.__options.animationDuration[1]>0&&d._$tooltip.delay(d.__options.animationDuration[1]),d._$tooltip.queue(l)):d._$tooltip.stop().fadeOut(d.__options.animationDuration[1],l)}}else f()}return d},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_open:function(b,c){var e=this;if(!e.__destroying&&d(e._$origin)&&e.__enabled){var f=!0;if("closed"==e.__state&&(e._trigger({type:"before",event:b,stop:function(){f=!1}}),f&&e.__options.functionBefore&&(f=e.__options.functionBefore.call(e,e,{event:b,origin:e._$origin[0]}))),f!==!1&&null!==e.__Content){c&&e.__callbacks.open.push(c),e.__callbacks.close=[],e.__timeoutsClear();var g,i=function(){"stable"!=e.__state&&e.__stateSet("stable"),a.each(e.__callbacks.open,function(a,b){b.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}),e.__callbacks.open=[]};if("closed"!==e.__state)g=0,"disappearing"===e.__state?(e.__stateSet("appearing"),h.hasTransitions?(e._$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-show"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i)):e._$tooltip.stop().fadeIn(i)):"stable"==e.__state&&i();else{if(e.__stateSet("appearing"),g=e.__options.animationDuration[0],e.__contentInsert(),e.reposition(b,!0),h.hasTransitions?(e._$tooltip.addClass("tooltipster-"+e.__options.animation).addClass("tooltipster-initial").css({"-moz-animation-duration":e.__options.animationDuration[0]+"ms","-ms-animation-duration":e.__options.animationDuration[0]+"ms","-o-animation-duration":e.__options.animationDuration[0]+"ms","-webkit-animation-duration":e.__options.animationDuration[0]+"ms","animation-duration":e.__options.animationDuration[0]+"ms","transition-duration":e.__options.animationDuration[0]+"ms"}),setTimeout(function(){"closed"!=e.__state&&(e._$tooltip.addClass("tooltipster-show").removeClass("tooltipster-initial"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i))},0)):e._$tooltip.css("display","none").fadeIn(e.__options.animationDuration[0],i),e.__trackerStart(),a(h.window).on("resize."+e.__namespace+"-triggerClose",function(a){e.reposition(a)}).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)}),e.__$originParents=e._$origin.parents(),e.__$originParents.each(function(b,c){a(c).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)})}),e.__options.triggerClose.mouseleave||e.__options.triggerClose.touchleave&&h.hasTouchCapability){e._on("dismissable",function(a){a.dismissable?a.delay?(m=setTimeout(function(){e._close(a.event)},a.delay),e.__timeouts.close.push(m)):e._close(a):clearTimeout(m)});var j=e._$origin,k="",l="",m=null;e.__options.interactive&&(j=j.add(e._$tooltip)),e.__options.triggerClose.mouseleave&&(k+="mouseenter."+e.__namespace+"-triggerClose ",l+="mouseleave."+e.__namespace+"-triggerClose "),e.__options.triggerClose.touchleave&&h.hasTouchCapability&&(k+="touchstart."+e.__namespace+"-triggerClose",l+="touchend."+e.__namespace+"-triggerClose touchcancel."+e.__namespace+"-triggerClose"),j.on(l,function(a){if(e._touchIsTouchEvent(a)||!e._touchIsEmulatedEvent(a)){var b="mouseleave"==a.type?e.__options.delay:e.__options.delayTouch;e._trigger({delay:b[1],dismissable:!0,event:a,type:"dismissable"})}}).on(k,function(a){!e._touchIsTouchEvent(a)&&e._touchIsEmulatedEvent(a)||e._trigger({dismissable:!1,event:a,type:"dismissable"})})}e.__options.triggerClose.originClick&&e._$origin.on("click."+e.__namespace+"-triggerClose",function(a){e._touchIsTouchEvent(a)||e._touchIsEmulatedEvent(a)||e._close(a)}),(e.__options.triggerClose.click||e.__options.triggerClose.tap&&h.hasTouchCapability)&&setTimeout(function(){if("closed"!=e.__state){var b="";e.__options.triggerClose.click&&(b+="click."+e.__namespace+"-triggerClose "),e.__options.triggerClose.tap&&h.hasTouchCapability&&(b+="touchend."+e.__namespace+"-triggerClose"),a("body").on(b,function(b){e._touchIsMeaningfulEvent(b)&&(e._touchRecordEvent(b),e.__options.interactive&&a.contains(e._$tooltip[0],b.target)||e._close(b))}),e.__options.triggerClose.tap&&h.hasTouchCapability&&a("body").on("touchstart."+e.__namespace+"-triggerClose",function(a){e._touchRecordEvent(a)})}},0),e._trigger("ready"),e.__options.functionReady&&e.__options.functionReady.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}if(e.__options.timer>0){var m=setTimeout(function(){e._close()},e.__options.timer+g);e.__timeouts.close.push(m)}}}return e},_openShortly:function(a){var b=this,c=!0;if("stable"!=b.__state&&"appearing"!=b.__state&&!b.__timeouts.open&&(b._trigger({type:"start",event:a,stop:function(){c=!1}}),c)){var d=0==a.type.indexOf("touch")?b.__options.delayTouch:b.__options.delay;d[0]?b.__timeouts.open=setTimeout(function(){b.__timeouts.open=null,b.__pointerIsOverOrigin&&b._touchIsMeaningfulEvent(a)?(b._trigger("startend"),b._open(a)):b._trigger("startcancel")},d[0]):(b._trigger("startend"),b._open(a))}return b},_optionsExtract:function(b,c){var d=this,e=a.extend(!0,{},c),f=d.__options[b];return f||(f={},a.each(c,function(a,b){var c=d.__options[a];void 0!==c&&(f[a]=c)})),a.each(e,function(b,c){void 0!==f[b]&&("object"!=typeof c||c instanceof Array||null==c||"object"!=typeof f[b]||f[b]instanceof Array||null==f[b]?e[b]=f[b]:a.extend(e[b],f[b]))}),e},_plug:function(b){var c=a.tooltipster._plugin(b);if(!c)throw new Error('The "'+b+'" plugin is not defined');return c.instance&&a.tooltipster.__bridge(c.instance,this,c.name),this},_touchIsEmulatedEvent:function(a){for(var b=!1,c=(new Date).getTime(),d=this.__touchEvents.length-1;d>=0;d--){var e=this.__touchEvents[d];if(!(c-e.time<500))break;e.target===a.target&&(b=!0)}return b},_touchIsMeaningfulEvent:function(a){return this._touchIsTouchEvent(a)&&!this._touchSwiped(a.target)||!this._touchIsTouchEvent(a)&&!this._touchIsEmulatedEvent(a)},_touchIsTouchEvent:function(a){return 0==a.type.indexOf("touch")},_touchRecordEvent:function(a){return this._touchIsTouchEvent(a)&&(a.time=(new Date).getTime(),this.__touchEvents.push(a)),this},_touchSwiped:function(a){for(var b=!1,c=this.__touchEvents.length-1;c>=0;c--){var d=this.__touchEvents[c];if("touchmove"==d.type){b=!0;break}if("touchstart"==d.type&&a===d.target)break}return b},_trigger:function(){var b=Array.prototype.slice.apply(arguments);return"string"==typeof b[0]&&(b[0]={type:b[0]}),b[0].instance=this,b[0].origin=this._$origin?this._$origin[0]:null,b[0].tooltip=this._$tooltip?this._$tooltip[0]:null,this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,b),a.tooltipster._trigger.apply(a.tooltipster,b),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,b),this},_unplug:function(b){var c=this;if(c[b]){var d=a.tooltipster._plugin(b);d.instance&&a.each(d.instance,function(a,d){c[a]&&c[a].bridged===c[b]&&delete c[a]}),c[b].__destroy&&c[b].__destroy(),delete c[b]}return c},close:function(a){return this.__destroyed?this.__destroyError():this._close(null,a),this},content:function(a){var b=this;if(void 0===a)return b.__Content;if(b.__destroyed)b.__destroyError();else if(b.__contentSet(a),null!==b.__Content){if("closed"!==b.__state&&(b.__contentInsert(),b.reposition(),b.__options.updateAnimation))if(h.hasTransitions){var c=b.__options.updateAnimation;b._$tooltip.addClass("tooltipster-update-"+c),setTimeout(function(){"closed"!=b.__state&&b._$tooltip.removeClass("tooltipster-update-"+c)},1e3)}else b._$tooltip.fadeTo(200,.5,function(){"closed"!=b.__state&&b._$tooltip.fadeTo(200,1)})}else b._close();return b},destroy:function(){var b=this;return b.__destroyed?b.__destroyError():b.__destroying||(b.__destroying=!0,b._close(null,function(){b._trigger("destroy"),b.__destroying=!1,b.__destroyed=!0,b._$origin.removeData(b.__namespace).off("."+b.__namespace+"-triggerOpen"),a("body").off("."+b.__namespace+"-triggerOpen");var c=b._$origin.data("tooltipster-ns");if(c)if(1===c.length){var d=null;"previous"==b.__options.restoration?d=b._$origin.data("tooltipster-initialTitle"):"current"==b.__options.restoration&&(d="string"==typeof b.__Content?b.__Content:a("<div></div>").append(b.__Content).html()),d&&b._$origin.attr("title",d),b._$origin.removeClass("tooltipstered"),b._$origin.removeData("tooltipster-ns").removeData("tooltipster-initialTitle")}else c=a.grep(c,function(a,c){return a!==b.__namespace}),b._$origin.data("tooltipster-ns",c);b._trigger("destroyed"),b._off(),b.off(),b.__Content=null,b.__$emitterPrivate=null,b.__$emitterPublic=null,b.__options.parent=null,b._$origin=null,b._$tooltip=null,a.tooltipster.__instancesLatestArr=a.grep(a.tooltipster.__instancesLatestArr,function(a,c){return b!==a}),clearInterval(b.__garbageCollector)})),b},disable:function(){return this.__destroyed?(this.__destroyError(),this):(this._close(),this.__enabled=!1,this)},elementOrigin:function(){return this.__destroyed?void this.__destroyError():this._$origin[0]},elementTooltip:function(){return this._$tooltip?this._$tooltip[0]:null},enable:function(){return this.__enabled=!0,this},hide:function(a){return this.close(a)},instance:function(){return this},off:function(){return this.__destroyed||this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},open:function(a){return this.__destroyed||this.__destroying?this.__destroyError():this._open(null,a),this},option:function(b,c){return void 0===c?this.__options[b]:(this.__destroyed?this.__destroyError():(this.__options[b]=c,this.__optionsFormat(),a.inArray(b,["trigger","triggerClose","triggerOpen"])>=0&&this.__prepareOrigin(),"selfDestruction"===b&&this.__prepareGC()),this)},reposition:function(a,b){var c=this;return c.__destroyed?c.__destroyError():(d(c._$tooltip)||b)&&(b||c._$tooltip.detach(),c.__Geometry=c.__geometry(),c._trigger({type:"reposition",event:a,helper:{geo:c.__Geometry}})),c},show:function(a){return this.open(a)},status:function(){return{destroyed:this.__destroyed,destroying:this.__destroying,enabled:this.__enabled,open:"closed"!==this.__state,state:this.__state}},triggerHandler:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.fn.tooltipster=function(){var b=Array.prototype.slice.apply(arguments),c="You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.";if(0===this.length)return this;if("string"==typeof b[0]){var d="#*$~&";return this.each(function(){var e=a(this).data("tooltipster-ns"),f=e?a(this).data(e[0]):null;if(!f)throw new Error("You called Tooltipster's \""+b[0]+'" method on an uninitialized element');if("function"!=typeof f[b[0]])throw new Error('Unknown method "'+b[0]+'"');this.length>1&&"content"==b[0]&&(b[1]instanceof a||"object"==typeof b[1]&&null!=b[1]&&b[1].tagName)&&!f.__options.contentCloning&&f.__options.debug&&console.log(c);var g=f[b[0]](b[1],b[2]);return g!==f||"instance"===b[0]?(d=g,!1):void 0}),"#*$~&"!==d?d:this}a.tooltipster.__instancesLatestArr=[];var e=b[0]&&void 0!==b[0].multiple,g=e&&b[0].multiple||!e&&f.multiple,h=b[0]&&void 0!==b[0].content,i=h&&b[0].content||!h&&f.content,j=b[0]&&void 0!==b[0].contentCloning,k=j&&b[0].contentCloning||!j&&f.contentCloning,l=b[0]&&void 0!==b[0].debug,m=l&&b[0].debug||!l&&f.debug;return this.length>1&&(i instanceof a||"object"==typeof i&&null!=i&&i.tagName)&&!k&&m&&console.log(c),this.each(function(){var c=!1,d=a(this),e=d.data("tooltipster-ns"),f=null;e?g?c=!0:m&&(console.log("Tooltipster: one or more tooltips are already attached to the element below. Ignoring."),console.log(this)):c=!0,c&&(f=new a.Tooltipster(this,b[0]),e||(e=[]),e.push(f.__namespace),d.data("tooltipster-ns",e),d.data(f.__namespace,f),f.__options.functionInit&&f.__options.functionInit.call(f,f,{origin:this}),f._trigger("init")),a.tooltipster.__instancesLatestArr.push(f)}),this},b.prototype={__init:function(b){this.__$tooltip=b,this.__$tooltip.css({left:0,overflow:"hidden",position:"absolute",top:0}).find(".tooltipster-content").css("overflow","auto"),this.$container=a('<div class="tooltipster-ruler"></div>').append(this.__$tooltip).appendTo("body")},__forceRedraw:function(){var a=this.__$tooltip.parent();this.__$tooltip.detach(),this.__$tooltip.appendTo(a)},constrain:function(a,b){return this.constraints={width:a,height:b},this.__$tooltip.css({display:"block",height:"",overflow:"auto",width:a}),this},destroy:function(){this.__$tooltip.detach().find(".tooltipster-content").css({display:"",overflow:""}),this.$container.remove()},free:function(){return this.constraints=null,this.__$tooltip.css({display:"",height:"",overflow:"visible",width:""}),this},measure:function(){this.__forceRedraw();var a=this.__$tooltip[0].getBoundingClientRect(),b={size:{height:a.height||a.bottom,width:a.width||a.right}};if(this.constraints){var c=this.__$tooltip.find(".tooltipster-content"),d=this.__$tooltip.outerHeight(),e=c[0].getBoundingClientRect(),f={height:d<=this.constraints.height,width:a.width<=this.constraints.width&&e.width>=c[0].scrollWidth-1};b.fits=f.height&&f.width}return h.IE&&h.IE<=11&&(b.size.width=Math.ceil(b.size.width)+1),b}};var j=navigator.userAgent.toLowerCase();-1!=j.indexOf("msie")?h.IE=parseInt(j.split("msie")[1]):-1!==j.toLowerCase().indexOf("trident")&&-1!==j.indexOf(" rv:11")?h.IE=11:-1!=j.toLowerCase().indexOf("edge/")&&(h.IE=parseInt(j.toLowerCase().split("edge/")[1]))}); \ No newline at end of file diff --git a/plugins/waypoints/jquery.waypoints.min.js b/plugins/waypoints/jquery.waypoints.min.js new file mode 100644 index 0000000..44a1d32 --- /dev/null +++ b/plugins/waypoints/jquery.waypoints.min.js @@ -0,0 +1,7 @@ +/*! +Waypoints - 3.1.1 +Copyright © 2011-2015 Caleb Troughton +Licensed under the MIT license. +https://github.com/imakewebthings/waypoints/blog/master/licenses.txt +*/ +!function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.invokeAll("enable")},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical);t&&e&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s],l=o.oldScroll<a.triggerPoint,h=o.newScroll>=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var n in t){var r=t[n];for(var s in this.waypoints[n]){var a,l,h,p,u,c=this.waypoints[n][s],d=c.options.offset,f=c.triggerPoint,w=0,y=null==f;c.element!==c.element.window&&(w=c.adapter.offset()[r.offsetProp]),"function"==typeof d?d=d.apply(c):"string"==typeof d&&(d=parseFloat(d),c.options.offset.indexOf("%")>-1&&(d=Math.ceil(r.contextDimension*d/100))),a=r.contextScroll-r.contextOffset,c.triggerPoint=w+a-d,l=f<r.oldScroll,h=c.triggerPoint>=r.oldScroll,p=l&&h,u=!l&&!h,!y&&p?(c.queueTrigger(r.backward),o[c.group.id]=c.group):!y&&u?(c.queueTrigger(r.forward),o[c.group.id]=c.group):y&&r.oldScroll>=c.triggerPoint&&(c.queueTrigger(r.forward),o[c.group.id]=c.group)}}for(var g in o)o[g].flushTriggers();return this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}(); \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e69de29